系统内存的选择策略
扫描二维码
随时随地手机看文章
对于开发新一代主板的设计工程师来说,DRAM正在成为主要考虑因素,因为终端用户对内存的需求日益俱增。操作系统变得越来越庞大,应用程序也相对以前需要更多的RAM存储。诸如虚拟服务器、多核处理器和高密度刀片服务器等新兴技术,都提高了对内存的需求。要想CPU发挥更强的处理能力,就需要越多的内存来支持它。系统设计师也一直想方设法在越来越小的主板上安装更多的内存。为了作出正确的决策,有必要根据设计对以下这些问题进行考量。
1)容量:所有应用软件或计算机系统要求的数据操作需要多大容量的内存?
2)空间和外形尺寸考虑:计算机中有多少物理空间(SoC、主板等)可分配给内存使用?
3)带宽:为了支持密集型计算,处理器指令和数据需要以多快的速度执行或处理?
对系统内存容量的考虑
一般来说,了解有多少用户会对计算机系统及其所使用的应用软件有需求将对内存容量起决定性作用。然而,最常见的结论是内存越多越好。除了处理器能力之外,内存对系统性能的影响是最大的了,因此选择一款能够适应大内存容量和最高内存带宽的内存控制器和操作系统无疑能够提高系统性能。另外值得注意的是,32位的操作系统最多只能访问5GB的内存空间(达到2的32次方),但最新的64位操作系统可以访问的内存空间达18ZB(2的64次方)。
计算内存容量的方法之一是,确定有多少内存空间必须分配给操作系统内核、操作系统驱动程序、频繁处于活动状态的应用软件、驻留在内存中的数据文件大小和数量以及需要支持的最大网络需求。工程师应该考虑在处理器上运行的所有软件资源的大小,以及所有峰值网络需求,然后增加10%的裕度用作自由内存空间。由于用于处理器的主内存通常是以1GB、2GB、4GB和8GB这样的偶数倍增加的,因此此时最合适的主内存容量是4GB(如果是双槽道配置就是2个2GB的DIMM内存条)。
诸如数据库、电子邮件和web服务器等计算机应用占用非常大的内存资源,因此这些系统的内存容量要尽可能大。计算内存容量的另外一种方法是运行与系统使用率有关的系统基准测试,通过比较使用的内存(GB)、CPU使用率和系统内存容量,(即使用微软的“控制面板”)浏览管理工具(性能)并通过点击工具条中的“+”符号增加内存对象,如图1所示。
图1:微软XP管理工具(性能)截屏。
图2:处理器/内存利用率。
图2中的性能图表是双处理器系统中数据可能呈现的面貌例子,它对“内存约束”配置(4GB系统)与“CPU约束”配置(8GB系统)的资源局限做了比较。值得注意的是,6GB系统配置是如何在CPU使用率等于内存使用率时最大化CPU到内存的使用率来获得最佳性价比的。目前许多系统设计师流行使用粗略的计算方法,即为每GHz的处理器内核配置2GB内存。一旦内存容量确定后,选择内存控制器以支持所希望的内存容量显得同样重要。内存控制器将通过以下两种方式限制可获得的内存密度:
1)内存可用的片选线数量有限;
2)内存控制器支持的最大DRAM容量。
目前有两种通用的内存子系统设计可用于连接片选线。一种是每个内存插槽两根片选线,一种是每个内存插槽4根片选线。由于内存模组数量受限于插槽数量,因此最大系统内存容量将是内存插槽数量乘以每条内存模组的容量。
内存空间和内存尺寸考虑
内存子系统中使用的内存外形尺寸一般取决于以下一些因素:
1)物理空间,更明确地说就是内存所装配的机械外壳;
2)处理器可以容忍的(由于处理器到内存的物理距离引起的)延时和速度下降;
3)安装底架的约束,如与周边元组件的接近度、热冷却要求(与风扇的接近度、使用热传导器或散热器、液体冷却、内存组件之间的空隙等);
4)内存布局(与处理器的接近度,垂直或水平安装等);
5) 安装、维修和升级内存的简易度。
当使用SoC中的嵌入式DRAM(eDRAM)内存时,用于决定“片上”和片外DRAM内存分布的标准通常基于SoC上用于流水线、缓存和低延时访问的内存的可用空间,以及将DRAM嵌入进SoC的相关成本。
举例来说,90nm嵌入式DRAM工艺基于的是CMOS逻辑技术,可集成插件形式的内存模组。嵌入式工艺在与外部DRAM器件连接时不存在I/O功耗,因此可以提供更宽的总线、更低的材料成本和更高的带宽。而且与SRAM相比正常工作功耗和待机功耗都要低。
然而,嵌入式内存技术还没有达到可以替代主板上高密度DRAM的密度水平,因为用于处理器和SoC的嵌入式内存目前还没超过100MB,而主板上配置的片外内存一般最小要1GB。与处理器一样,内存技术同样也遵循摩尔定律,相当于每两年提高2倍密度。表1说明了目前内存密度的发展趋势:
表1:内存密度趋势。
选择系统内存的六大指标
如果内存容量是一个重要的系统指标,那么相对其它结构外形来说内存模组更合适。目前有几种JEDCE标准DIM可用,如RDIMM,UDIMM,S0-DIMM,Mini-DIMM,MicroDIMM和FBDIMM。下面列出了为何选用DRAM内存模组的六大理由:
理由1:更低的总体拥有成本(TCO),具体理由如下:
A)模组化的内存后可以在最终装配和测试需要时随时购买得到,甚至可赶在系统交付之前。这样做可以减少库存,释放现金流。这样做还能避免内存元件库存面临价格下降而造成财务损失的风险。如果用于系统的内存是板载芯片(COB),那么独立的内存元件可能需要库存较长时间,以便预留时间生产主板。
B)开始时可以使用最小的内存配置以较低的系统成本出售/购买系统(预留一些空槽以便未来升级)。用户可以在增加新的应用软件或提高计算机速度时升级内存,此时只需简单地升级或增加内存模组。[!--empirenews.page--]
C)由于内存也是计算机系统成本中的昂贵部分,当原本的系统不再工作或被中止服务时,内存模组可以移走,然后在其它系统中得到再次利用。
理由2:提供更高的系统密度。模组化内存可以比直接安装在主板上的单片分立DRAM提供更高的内存容量。要求最大内存容量的系统可以使用非常紧凑的内存模组,这些模组使用了各种可提高单位密度的堆叠技术。
理由3:增加处理器板上的实用面积。固态双数据速率(SSDDR)内存模组能够适应“混合内存”技术。这种方法提供了双重功能,可将DDR DRAM和NAND闪存整合进一个小型封装(见图3),这也是将更多内存和数据装进空间受限的单板计算机(SBC)和嵌入式系统应用的一种方式。DIMM插座方向性还能使内存放置在其它主板元件上方以节省主板空间。用于刀片服务器的ULP和VLP DIMM提供类似的空间节省特性。LeanSTOR封装技术是另一种为AMC或ATCA电信刀片服务器节省空间的方法。
图3:SSDDR DRAM和NAND闪存SATA SODIMM。
理由4:更高的RAS(可靠性/可用性/可维修性)。随着时间的推移,内存也可能出现故障,产生SBE和多位差错,这种问题将影响计算机系统的正常工作,或由于ECC处理软件开销而使系统运行速度降低。如果是模组形式的内存,那么就能很快地替换插槽中的故障件,从而缩短由于查错和维修引起的系统宕机时间。如果内存直接安装在主板上,那么排除故障内存也是很困难的。重新焊接主板上的内存还可能降低其质量。如果主板要求内置内存测试程序以诊断故障芯片,那么系统设计师或BIOS编程人员可能无法利用内存测试专业软件,因为这些内存测试程序是专门针对测试内存模组设计的。
理由5:增强可测性和系统兼容性。如果系统中的内存直接安装在主板上,那么当它发生故障时,处理器也许无法运行诊断程序来查找错误的源头。内存是面向总线的,通过总线与内存控制器(或芯片组)协同工作。它们都是作为成组的器件在工作,因此那些没有被筛选为一组(就像在模组中一样)的失配DRAM产生的任何时序偏移都将导致不稳定的、不可预测的或间歇性操作。另外,对只能提供BGA封装的DDR2或DDR3内存进行探针测试也是不可能的。系统主板还经常使用独特的设计拓扑和内存控制器,它们会对DRAM的交流和直流参数作出限制。模组化的内存可以使用系统软件实现系统级的预测试,从而排除掉与系统不兼容的内存。
理由6:提高可制造性。如果主板不是无铅的,芯片组又适用于DDR2内存,那么设计师在不是无铅的主板上装配无铅RoHS DDR2 DRAM可能无法获得较好的焊接可靠性。表2中的表格展示了在SoC上的嵌入式内存、在主板上的分立内存芯片(如板载芯片,COB以及某些多芯片封装(MCP))和插槽中的内存模组之间的一些区别。
表2:COB、内存模组与SoC嵌入式DRAM之间的比较。
系统内存带宽的考虑因素
如果计算机系统处于需要高吞吐量的密集计算或网络环境中,那么除了内存容量外内存带宽也是一个重要的考虑因素。内存带宽主要取决于内存控制器(或芯片组)的速度、DRAM器件技术和系统设计。目前它的计量单位是GB/sec,计算方法是用总线宽度乘以数据速率。例如在一个双通道系统配置中的DDR3-1333(PC3-10600)内存子系统,它的内存带宽是21.3GB/s,即128位总线宽度(2个64位内存总线)×1333Mbps×1B/8bits=21300MB/s。
内存带宽通常受“速度/密度”公式的影响,其中速度和密度呈反比关系。为了增加系统内存容量而向内存总线增加越多的DRAM,数据访问控制(DAC)总线上的容性负载就越高,进而降低更高速度时的信号质量。克服速度/密度限制的一些方法是:
1)使用带多个内存通道(更宽数据库)的内存控制器;
2)使用缓存(寄存器式,或完全缓冲式内存,缩短了延时);
3)在增加更多的内存时降低内存时钟。一般来说,内存越大,带宽越小。
使用无缓冲内存的系统通常有较高的带宽和较低的系统密度,而使用寄存器/缓冲式内存的系统通常具有较高的密度和较低的带宽。
本文小结
一旦利用本文提供的信息确定好系统中的内存容量、空间和带宽后,设计师就能专注于考虑其它事项,如内存成本,以及决定将哪部分系统成本预算留给内存。