访问手机版页面
你的位置:老古开发网 > 其他 > 正文  
缓解内存访问的瓶颈
内容导读:

下一代的系统架构将解决CAM和cache不能解决的问题

Aeroflex UTMC公司Tim Melchior著/雷天石 译

---- 工程师希望能出现有更强处理能力的计算机。这些年来,处理器设计师为我们带来了领先的速度,与1971年Intel的108kHz 4004处理器相比,处理器的速度增加了10000倍。与此相反,DRAM的存取时间在这段时期内只降低了相差甚远的10倍。

---- 处理器速度与内存速度之间日趋扩大的鸿沟使得内存成为提高计算机系统性能的一种主要障碍。通常把处理器与内存之间的差距称为内存瓶颈。

 

图1:Aerofilex UTMC公司听e.Card基于CAM技术,把标准的RAM变成联想存储器,很快减轻处理的负担,可以达到每秒钟1千万次数据库查找。

改善存取速度

---- 长期以来,为了减轻或消除内存瓶颈现象,电信工程师求助于内容定址存储器(CAM)。通过在CAM芯片中设计并行查找,工程师们可以使得找到与关键字相联系的数据非常迅速。这种方法取得了很好的效果,而且也依然是很多应用中一种很好的方法。

---- 但是,CAM有两个主要的缺点。它们比较贵,而且容量比较小。进行查找所需要的电路消耗掉芯片上的硅资源,这当然转换成不菲的成本以及降低了存储器的容量。由于CAM的生产量相对较低,这样带来的额外成本更加使得采用CAM的代价进一步提高。

----用于减轻内存瓶颈问题的另一种通常的办法是采用高速缓存(cache)。这种存储器用高速的SRAM来制作,它比CAM的密度要高,但是距DRAM的密度仍相去甚远。尽管SRAM的价格是DRAM的十倍,它通过存储不久前用过的、从较慢的DRAM中取得的数据,可以大大改善系统的性能。

----计算机指令和控制数据是在cache中存储的上乘之选,因为这种类型的数据常常在随后的程序中被访问,而且,cache控制器也能很好地保持cache在所需数据被使用之前得到及时的更新。

---- Cache存储器出现问题是在访问大型数据库的时候。如果数据访问要求无法预测,而且数据库的容量大大超过cache的数量,在cache中找到所需数据的概率就非常低。

----如果在cache中找不到数据,就出现一次cache落空,在缓慢的DRAM中进行访问时系统必需等待。电信工程师对速度的要求非常高,无法容许化费50个或更多CPU时钟周期去等待由于cache落空引起的延误时间。

处理解决方案

---- 工程师们除了要求增加传输速率之外,同时更要求设计出可以满足电信服务需求提高与扩大的系统。为这些系统提供支撑的数据库在容量与复杂性方面都在呈爆炸性增长。

---- 在这些系统中,CAM、cache、FPGA,甚至ASIC都无法解决涉及大型数据集合的查找密集的高性能问题。迫切需要的是一种处理解决方案,它通过挖掘并行分布处理、流水线和联想存储器技术来解决处理器内存瓶颈问题。

---- 这种解决方案的第一步是将基本的数据操作功能卸载到智能内存控制器中去执行。此控制器需要了解数据库的结构,而且必须设计得可以发挥当前内存技术的能力。

----与当今CPU使用的通用内存控制器不同,这种内存控制器必须以减少内存访问次数为首要目标,非常适合于执行数据库管理。通过缩减内存访问的次数,控制器立即对减轻内存瓶颈作出了贡献。

----从硬件的角度看,这个内存控制器让普通的低价、高密度DRAM像传统的CAM一样工作。正是基于这个原因,这种类型的内存控制器被称为CAM引擎。

---- 作为有效CAM引擎的内存控制器的主要特征是,它必须被设计成与自身的另外复制平行地工作。实现这点的最简单方法是在控制器内执行输入与输出FIFO(参考图2)。它允许由CPU或另一个逻辑器件内核对数据操作命令进行流水线处理。

 

图2:FIFO提供执行并处理的简单方法

---- 另外的特点是包括一个第2型的Compactflash插座以及PCI和ISA插槽。

----图3表示采用通用处理器进行典型的hash查找的时间顺序:a. hash关键字,b. 找出hash地址散列单元,c. 用初始散列单元充填cache行,d. 读第一个地址散列单元,e. 比较第一个地址散列单元(不匹配),f. 读第二个地址散列单元,g. 比较第二个地址散列单元(不匹配),h. 读第三个地址散列单元,i. 比较第三个地址散列单元(不匹配),j. 读溢出指针,k. 用溢出地址散列单元充填cache行,l. 读第一个溢出地址散列单元,m. 比较第一个溢出地址散列单元(匹配),n. 获得相关数据的指针,o. 用相关数据充填cache行,p. 读相关数据。

----由于通常有多个关键字对应到一个给定值,每次查找都必须解决hash碰撞问题。为了完成一次查找通常处理器必须多次读主内存,这是造成内存瓶颈的重要原因。

ROM化的实时操作系统保护存储器

---- 从主内存充填cache行通常把4个字从主内存读入处理器的高速cache存储器中。这些操作非常占用时钟周期,因为从SDRAM存储器新的一行中进行第一次读时,首先必须激活该行。充填4个字的cache行化费掉10个时钟周期一点都不算过份。如果处理器正在同一个100MHz的总线进行操作,这就相当于每次cache行充填需要1μs时间。

 

图3:为了完成一次查找,通用处理器必须多次读主内存。

缓解瓶颈现象

---- 缓解瓶颈现象的一个关键是把用于执行非I/O操作的时钟周期与执行I/O操作的时钟周期重叠起来。如果这点能够实现,就可以100%地利用内存总线带宽。实现它的最简单方法是通过在内存控制器中的FIFO队列使生成I/O的命令形成流水线。

---- 图4给出了采用FIFO交错的CAM引擎内存控制器进行4流水线查找的时间表:a. 写关键词1至内存控制器1,b. 写关键词2至内存控制器1,c. 写关键词3至内存控制器2,d. 写关键词4至内存控制器2,e. 从内存控制器1读关联词1,f. 从内存控制器2读关联词3,g. 从内存控制器1读关联词2,h. 从内存控制器2读关联词4。内存控制器与系统中其它的处理器并行工作。因为内存控制器有自己的存储器及存储器总线,它执行的I/O操作并不减少系统中其它处理器的I/O带宽。此外,FIFO的设计必须达到与调用的处理器进行交互可以同在它的存储器总线上执行的I/O操作可以并行地执行。

 

图4:通过FIFO交错的CAM引擎内存控制器与系统中其它处理器并行工作,可以改善处理效率。

----这个内存控制器的输出也必须通过FIFO进行排队。这个输出FIFO可以由调用的处理器阅读,而且必须事行采取措施,允许调用的处理器可能等待内存控制器,以便应付在内存控制器尚未完成操作之前,调用的处理器就试图检索结果的情况。

----如图5所示,把工作分散到多个查询处理器,可以进一步减轻内存瓶颈现象。通过放过这些查询处理器高级查询命令,可以使主处理器的I/O负担达到最小。

----广泛使用的标准查询语言(例如,SQL)可以用紧凑的命令表达相对复杂的查询。处理这些查询可能需要几千次I/O操作。如果主处理器的I/O负担局限在高级命令及它们的应答范围内,在主处理器的I/O带宽内提供的信息将极大地增加。

 

图5:扩大并行处理的系统结构可以进一步缩减主处理器查询调用的需求。

---- 注意到在图5中每个查询处理器的最低级有两条存储器总线。因为这些总线全都是并行地访问存储器。对每一个使用的查询处理器而言,存储器瓶颈被减轻了2倍。作为采用上面描述过的方法的一个实际例子,Aeroflex UTMC的e.Card分布查询处理器使用两个智能内存控制器,它可以支持高达2G字节的数据库。

---- 通过把数据持续性与多任务方面的问题留给主处理器去做,e.Card可以用几秒钟的时间执行在传统的客产/服务器/数据库平台上要化费13小时的专门查找。

标签:
来源:今日电子 作者:Aeroflex UTMC公司Tim Melchior著/雷天石 译 时间:2006/9/25 22:03:00
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐