一:关于内存超频与设置的基础知识

   在我们进行内存的选购之前,我们要对影响内存性能的一些基本知识进行一个了解,下面这十点,使笔者通过反复论证得到的结果,请大家务必了解。

1、对内存的优化要从系统整体出发,不要局限于内存模组或内存芯片本身的参数,而忽略了内存子系统的其他要素。

2、目前的芯片组都具备多页面管理的能力,所以如果可能,请尽量选择双 P-Bank 的内存模组以增加系统内存的页面数量。但怎么分辨是单 P-Bank 还是双 P-Bank 呢?就目前市场上的产品而言 ,256MB 的模组基本都是单 P-Bank 的,双面但每面只有 4 颗芯片的也基本上是单 P-Bank 的,512MB 的双面模组则基本都是双 P-Bank的。

3、页面数量的计算公式为: P-Bank 数量 X4,如果是 Pentium4 或 AMD 64 的双通道平台,则还要除以 2。比如两条单面 256MB 内存,就是 2X4=8 个页面,用在 875 上组成双通道就成了 4 个页面。

4、CL、tRCD、tRP 为绝对性能参数,在任何平台下任何时候,都应该是越小越好,调节的优化顺序是 CL → tRCD → tRP。

5、当内存页面数为 4 时 ,tRAS 设置短一些可能会更好,但最好不要小于 5。另外,短 tRAS 的内存性能相对于长 tRAS 可能会产生更大的波动性,对时钟频率的提高也相对敏感。

6、当内存页面数大于或等于 8 时,tRAS 设置长一些会更好。

7、对于 875 和 865 平台,双通道时页面数达到 8 或者以上时,内存性能更好。

8、对于非双通道 Pentium4 与 AMD 64 平台,tRAS 长短之间的性能差异要缩小。

9、Pentium4 或 AMD 64 的双通道平台下 ,BL=4 大多数情况下是更好的选择,其他情况下 BL=8 可能是更好的选择,请根据自己的实际应用有针对的调整。

10、适当加大内存刷新率可以提高内存的工作效率,但也可能降低内存的稳定性。

二、BIOS中内存相关参数的设置要领

Automatic Configuration“自动设置”(可能的选项:On/ Off或Enable/Disable)

可能出现的其他描述为:DRAM Auto、Timing Selectable、Timing Configuring By SPD等,如果你要手动调整你的内存时序,你应该关闭它,之后会自动出现详细的时序参数列表。

Bank Interleaving(可能的选项:Off/Auto/2/4)

这里的Bank是指L-Bank,目前的DDR RAM的内存芯片都是由4个L-Bank所组成,为了最大限度减少寻址冲突,提高效率,建议设为4(Auto也可以,它是根据SPD中的L-Bank信息来自动设置的)。

Burst Length“突发长度”(可能的选项:4/8)

一般而言,如果是AMD Athlon XP或Pentium4单通道平台,建议设为8,如果是Pentium4或AMD 64的双通道平台,建议设为4。但具体的情况要视具体的应用而定。

CAS Latency “列地址选通脉冲潜伏期”(可能的选项:1.5/2/2.5/3)

BIOS中可能的其他描述为:tCL、CAS Latency Time、CAS Timing Delay。

Command Rate“首命令延迟”(可能的选项:1/2)

这个选项目前已经非常少见,一般还被描述为DRAM Command Rate、CMD Rate等。由于目前的DDR内存的寻址,先要进行P-Bank的选择(通过DIMM上CS片选信号进行),然后才是L-Bank/行激活与列地址的选择。这个参数的含义就是指在P-Bank选择完之后多少时间可以发出具体的寻址的L-Bank/行激活命令,单位是时钟周期。显然,也是越短越好。但当随着主板上内存模组的增多,控制芯片组的负载也随之增加,过短的命令间隔可能会影响稳定性。因此当你的内存插得很多而出现不太稳定的时间,才需要将此参数调长 。目前的大部分主板都会自动设置这个参数,而从上文的ScienceMark 2.0测试中,大家也能察觉到容量与延迟之间的关系。

RAS Precharge Time “行预充电时间”(可能的选项:2/3/4)

BIOS中的可能其他描述:tRP、RAS Precharge、Precharge to active。

RAS-to-CAS Delay“行寻址至列寻址延迟时间”(可能的选项:2/3/4/5)

BIOS中的可能其他描述: tRCD、RAS to CAS Delay、Active to CMD等。

Active to Precharge Delay“行有效至行预充电时间”(可能的选项:1……5/6/7……15)

BIOS中的可能其他描述:tRAS、Row Active Time、Precharge Wait State、Row Active Delay、Row Precharge Delay等。根据上文的分析,这个参数要根据实际情况而定,具体设置思路见上文,并不是说越大或越小就越好。

三、认清影响内存性能的关键

    在讲完 SDRAM 的基本工作原理和主要操作之后,我们现在要重要分析一下 SDRAM 的时序与性能之间的关系,它不再局限于芯片本身,而是要从整体的内存系统去分析。这也是广大 DIYer 所关心的话题。比如 CL 值对性能的影响有多大几乎是每个内存论坛都会有讨论,今天我们就详细探讨一下。这里需要强调一点,对于内存系统整体而言,一次内存访问就是对一个页 (Page)的访问。由于在 P-Bank 中,每个芯片的寻址都是一样的,所以可以将页访问“浓缩”等效为对每芯片中指定行的访问,这样可能比较好理解。但为了与官方标准统一,在下文中会经常用页来描述相关的内容,请读者注意理解。

    可能很多人还不清楚页的概念,在这里有必要先讲一讲。从狭义上讲,内存芯片芯片中每个 L-Bank 中的行就是页,即一行为一页。但从广义上说,页是从整体角度讲的,这个整体就是内存子系统。

    对于内存模组,与之进行数据交换的单位就是 P-Bank 的位宽。由于目前还没有一种内存芯片是 64bit 位宽的,所以就必须要用多个芯片的位宽来集成一个 P-Bank。如我们现在常见的内存芯片是 8bit 位宽的,那么就需要 8 颗芯片组成一个 P-Bank 才能使系统正常工作。而 CPU 对内存的寻址,一次就是一个 P-Bank,P-Bank 内的所有芯片同时工作,这样对 P-Bank 内所有的芯片的寻址都是相同的。比如寻址指令是 B1、C2、R6,那么该 P-Bnak 内的芯片的工作状态都是打开 B1 的 L-Bank 的第 C2 行。好了,所谓广义上的页就是指 P-Bank 所包括的芯片内相同 L-Bank 内的相同工作行的总集合 。页容量对于内存子系统而言是一个很重要的指标。这个参数取决于芯片的容量与位宽的设计。由于与本文的关系不大,就不具体举例了。

    早期 Intel 845 芯片组 MCH 的资料:它可以支持 2、4、8、16KB 的页容量

    总之,我们要知道,由于寻址对同一 L-Bank 内行地址的单一性,所以一个 L-Bank 在同一时间只能打开一个页面,一个具有 4 个 L-Bank 的内存芯片,可以打开 4 个页面。这样,以这种芯片组成的 P-Bank,也就最后具备了 4 个页面,这是目前 DDR SDRAM 内存模中每个 P-Bank 的页面最大值。

1、影响性能的主要时序参数

    在讲完内存的基本操作流程与相关的 tRP、tRCD、CL、BL 之后,我们就开始深入分析这些参数对内存性能的影响。所谓的影响性能是并不是指 SDRAM 的带宽,频率与位宽固定后,带宽也就不可更改了。但这是理想的情况,在内存的工作周期内,不可能总处于数据传输的状态,因为要有命令、寻址等必要的过程。但这些操作占用的时间越短,内存工作的效率越高,性能也就越好。

    非数据传输时间的主要组成部分就是各种延迟与潜伏期。通过上文的讲述,大家应该很明显看出有三个参数对内存的性能影响至关重要,它们是 tRCD、CL 和 tRP。按照规定,每条正规的内存模组都应该在标识上注明这三个参数值,可见它们对性能的敏感性。

    以内存最主要的操作——读取为例。tRCD 决定了行寻址(有效)至列寻址(读 / 写命令)之间的间隔 ,CL 决定了列寻址到数据进行真正被读取所花费的时间,tRP 则决定了相同 L-Bank 中不同工作行转换的速度。现在可以想象一下对某一页面进行读取时可能遇到的几种情况(分析写入操作时不用考虑 CL 即可):

1、要寻址的行与 L-Bank 是空闲的。也就是说该 L-Bank 的所有行是关闭的,此时可直接发送行有效命令,数据读取前的总耗时为 tRCD+CL,这种情况我们称之为页命中 (PH,Page Hit)。

2、要寻址的行正好是现有的工作行,也就是说要寻址的行已经处于选通有效状态,此时可直接发送列寻址命令,数据读取前的总耗时仅为 CL,这就是所谓的背靠背 (Back to Back)寻址,我们称之为页快速命中(PFH,Page Fast Hit)或页直接命中(PDH,Page Direct Hit)。

3、要寻址的行所在的 L-Bank 中已经有一个行处于活动状态(未关闭),这种现象就被称作寻址冲突,此时就必须要进行预充电来关闭工作行,再对新行发送行有效命令。结果,总耗时就是 tRP+tRCD+CL,这种情况我们称之为页错失 (PM,Page Miss)。

    显然,PFH 是最理想的寻址情况,PM 则是最糟糕的寻址情况。上述三种情况发生的机率各自简称为 PHR —— PH Rate、PFHR —— PFH Rate、PMR —— PM Rate。因此,系统设计人员(包括内存与北桥芯片)都尽量想提高 PHR 与 PFHR,同时减少 PMR,以达到提高内存工作效率的目的。

2、增加 PHR 的方法

    显然,这与预充电管理策略有着直接的关系,目前有两种方法来尽量提高 PHR。自动预充电技术就是其中之一,它自动的在每次行操作之后进行预充电,从而减少了日后对同一 L-Bank 不同行寻址时发生冲突的可能性。但是,如果要在当前行工作完成后马上打开同一 L-Bank 的另一行工作时,仍然存在 tRP 的延迟。怎么办? 此时就需要 L-Bank 交错预充电了。

    早期非常令人关注的VIA 4路交错式内存控制,就是在一个L-Bank工作时,对另一个L-Bank进行预充电或者寻址(如果要寻址的L-Bank是关闭的)。这样,预充电与数据的传输交错执行,当访问下一个L-Bank时,tRP已过,就可以直接进入行有效状态了,如果配合得理想,那么就可以实现无间隔的L-Bank交错读/写(一般的,交错操作都会用到自动预充电),这是比PFH更好的情况,但它只出现在后续的数据不在同一页面的时时候。当时VIA声称可以跨P-Bank进行16路内存交错,并以LRU(Least Recently Used,近期最少使用)算法进行 交错预充电/寻址管理。

    L-Bank 交错自动预充电 / 读取时序图: L-Bank 0 与 L-Bank 3 实现了无间隔交错读取,避免了 tRP与tRCD对性能的影响 ,是最理想的状态

3、增加 PFHR 的方法

无论是自动预充电还是交错工作的方法都无法消除同行(页面)寻址时tRCD 所带来的延迟。要解决这个问题,就要尽量让一个工作行在进行预充电前尽可能多的接收工作命令,以达到背靠背的效果,此时就只剩下 CL 所造成的读取延迟了(写入时没有延迟)。

如何做到这一点呢?这就是北桥芯片的责任了。现在我们就又接触到 tRAS 这个参数,在 BIOS 中所设置的 tRAS 是指行有效至预充电的最短周期,在内存规范中定义为 tRAS(min),过了这个周期后就可以发出预充电指令。对于 SDRAM 和 DDR SDRAM 而言,一般是预充电命令至少要在行有效命令 5 个时钟周期之后发出,最长间隔视芯片而异(目前的 DDR SDRAM 标准一般基本在 70000ns 左右),否则工作行的数据将有丢失的危险。那么这也就意味着一个工作行从有效(选通)开始,可以有 70000ns 的持续工作时间而不用进行预充电。显然,只要北桥芯片不发出预充电(包括允许自动预充电)的命令,行打开的状态就会一直保持。在此期间的对该行的任何读写操作也就不会有 tRCD 的延迟。可见,如果北桥芯片在能同时打开的行(页)越多,那么 PFHR 也就越大。需要强调的是,这里的同时打开不是指对多行同时寻址(那是不可能的),而是指多行同时处于选通状态。我们可以看到一些 SDRAM 芯片组的资料中会指出可以同时打开多少个页的指标,这可以说是决定其内存性能的一个重要因素。

    但是,可同时打开的页数也是有限制的。从 SDRAM 的寻址原理讲,同一L-Bank 中不可能有两个打开的行(读出放大器只能为一行服务),这就限制了可同时打开的页面总数。以 SDRAM 有 4 个 L-Bank,北桥最多支持 8 个 P-Bank(4 条 DIMM)为例,理论上最多只能有 32 个页面能同时处于打开的状态。而如果只有一个 P-Bank,那么就只剩下 4 个页面,因为有几个 L-Bank 才能有同时打开几个行而互不干扰 。Intel 845 的 MHC 虽然可以支持 24 个打开的页面,那也是指 6 个 P-Bank 的情况下(845MCH 只支持 6 个 P-Bank)。可见 845 已经将同时打开页数发挥到了极致。

    不过,同时打开页数多了,也对存取策略提出了一定的要求。理论上,要尽量多地使用已打开的页来保证最短的延迟周期,只有在数据不存在(读取时)或页存满了(写入时)再考虑打开新的指定页,这也就是变向的连续读 / 写。而打开新页时就必须要关闭一个打开的页,如果此时打开的页面已是北桥所支持的最大值但还不到理论极限的话 (如果已经达到极限,就关闭有冲突的L-Bank内的页面即可),就需要一个替换策略,一般都是用 LRU 算法来进行,这与 VIA 的交错控制大同小异。

    回到正题,虽然 tRAS 代表的是最小的行有效至预充电期限,但一般的,北桥芯片一般都会在这个期限后第一时间发出预充电指令(自动预充电时,会在tRAS之后自动执行预充电命令),只有在与其他操作相冲突时预充电操作才被延后(比如,DDR SDRAM 标准中规定,在读取命令发出后不能立即发出预充电指令)。因此,tRAS 的长短一直是内存优化发烧友所争论的话题,在最近一两年,由于这个参数在 BIOS 选项中越来越普及,所以也逐渐被用户所关注。其实,在 SDRAM 时代就没有对这个参数有刻意的设定,在 DDR SDRAM 的官方组织 JEDEC 的相关标准中,也没有把其列为必须标明的性能参数 (CL、tRCD、tRP 才是),tRAS 应该是某些主板厂商炒作出来的,并且在主板说明书上也注明越短越好。

    其实,缩小 tRAS 的本意在于,尽量压缩行打开状态下的时间,以减少同 L-Bank 下对其他行进行寻址时的冲突,从内存的本身来讲,这是完全正确的做法,符合内存性能优化的原则,但如果放到整体的内存系统中,伴随着主板芯片组内存页面控制管理能力的提升,这种做法可能就不见得是完全正确的,在下文中我们会继续分析 tRAS 的不同长短设置对内存性能所带来的影响。

4、BL 长度对性能的影响

    从读 / 写之间的中断操作我们又引出了 BL(突发长度)对性能影响的话题。首先,BL 的长短与其应用的领域有着很大关系,下表就是目前三个主要的内存应用领域所使用的 BL,这是厂商们经过多年的实践总结出来的。

BL与相应的工作领域

    BL 越长,对于连续的大数据量传输很有好处,但是对零散的数据,BL 太长反而会造成总线周期的浪费,虽然能通过一些命令来进行终止,便也占用了控制资源。以 P-Bank 位宽 64bit 为例 ,BL=4 时,一个突发操作能传输 32 字节的数据,为了满足 Cache Line 的容量需求,还得多发一次,如果是 BL=8,一次就可以满足需要,不用再次发出读取指令。而对于 2KB 的数据 ,BL=4 的设置意味着要每隔 4 个周期发送新的列地址,并重复 63 次。而对于 BL=256,一次突发就可完成,并且不需要中途再进行控制,但如果仅传输 64 字节,就需要额外的命令来中止 BL=256 的传输。而额外的命令越多,越占用内存子系统的控制资源,从而降低总体的控制效率。从这可以看出 BL 对性能的影响因素,这也是为什么 PC 上的内存子系统的 BL 一般为 4 或 8 的原因。但是不是 8 比 4 好,或者 4 比 8 好呢?并不能统一而论,这在下文会分析到。

    到此,大家应该有一些优化的眉目了吧。我们可以先做一下界定,任何情况下,只要数值越小或越大(单一方向),内存的性能会越好的参数为 绝对参数 ,而数值越小或越大对性能的影响不固定的参数则为 相对参数。那么,CL、tRCD、tRP 显然就是绝对参数,任何情况下减少它们的周期绝对不会错。而且从上文的分析可以发现 ,从重要性来论,优先优化的顺序也是 CL → tRCD → tRP,因为 CL 的遇到的机会最多,tRCD 其次,tRP 如果页面交错管理的好,大多不受影响。而 BL、tRAS 等则可以算是相对参数。也正是由于这些相对参数的存在,才使得内存优化不再那么简单。

四、其他相关内存的更多BIOS设置

  想提高内存性能的用户可以参考以下内存设置:开机后按Del键进入bios 菜单,选择

   (1)进入"Advanced Chipset Features"下的" System BIOS Cacheable "

   System BIOS Cacheable : 优化时应设为Enabled
   打开这个功能可以允许系统在需要的时候将BIOS存放到L2缓存里,比BIOS存放在内存更能加快BIOS的
   (2) 进入"Advanced Chipset Features"下的"DRAM Clock/Drive Control"(见图一)具体的设置如下:



  System Performance : 优化时应设为Turbo
   系统提供Normal, Fast, Fastest, Turbo四个选项,当用户选择其中一项后,相关的项目如DRAM Active to CMD等会自动调整,方便用户调整系统性能。注意,大部分的DDR内存在Turbo这样的设定下都不能稳定工作,这种设置需要很好的内存条。如果想要得到最佳性能,那用户就要购买像***、Micron这样的名牌内存条。

   DRAM Clock : 优化时应设为 133 Mhz
   系统时钟循环周期有By SPD/100MHz/133MHz三个选项,用来设置内存与CPU外频同步或异步。By SPD是让主板自动识别PC1600和PC2100的DDR内存;100MHz/133MHz就是强制内存运行在设置的频率。当然强制内存运行在133MHz是最好的啦(如果采用kt333芯片的支持,内存运行在166MHz更加没问题)。在实际使用中如果用户想系统工作的更快应该将CPU与内存同步采用133 Mhz。

   DRAM Timing: 优化时应设为Manual
有Manual, SPD两个选项。 By SPD是让内存自动选择反应时间等参数。设为手动(Manual),可以调节读取数据所延迟的时间(SDRAM Cycle Length)和内存交错(Bank Interleave)。

   SDRAM Cycle Length : 优化时应设为2
   DDR SDRAM能够运行(CL)2或3模式,也就是说它们读取数据所延迟的时间既可以是两个时钟周期或是三个时钟周期。当然时钟周期小,系统运行的速度就快。但当CPU超频时,低的时钟周期未必能使用户的系统长时间稳定运行。

   Bank Interleave : 优化时应设为4 Bank
   系统有None、2 Bank和4 Bank三个选项。一般设为4 Bank,这是提升VIA芯片组内存性能的重要参数,但开启之后将影响内存的超频能力。内存交错(memory interleaving)可以让系统对内存的不同bank进行同时存取,而不是持续存取。Bank表示一个SDRAM设备内部的逻辑存储库的数量(现在通常是4个bank)。Interleave是加快内存速度的一种技术,举例来说,将存储体的奇数地址和偶数地址部分分开,这样当前字节被刷新时,可以不影响下一个字节的访问。这样,2或4路交错技术减少了等待时间,让内存更快,虽然不是2或4倍的速度,但还是快了许多。要购买VIA芯片主板的朋友,一定要认准有4 Bank interleaving调节的板子再买,没有它,内存性能上可要大打折扣的!

  DRAM Burst Length : 优化时应设为8
   要使用这选项必须使用在2001年10月17日以后的bios。我尝试设为8和4进行测评,最后选择高分的8。这可能是KT266A芯片与KT266芯片在处理内存爆发字节长度上不同之处,多数KT266芯片的主板BIOS上是没有这个选项。

   DRAM PreChrg to Act CMD : 优化时应设为2T
   DRAM Act to PreChrg CMD: 优化时应设为 6T

   当设为5T时系统性能没有明显的提高。另一方面当长时间把值设为5T会导致数据丢失和硬盘错误。切记小心使用!!!!

   DRAM Active to CMD : 优化时应设为2T
   表示内存对命令的反应时间,当然2T比3 T要快很多。
   DRAM Queue Depth : 优化时应设为4 Level
   DRAM Drive Strength : 优化时应设为Auto
   DRAM Command Rate : 优化时应设为1T

   设为1T会得到更好的内存性能。但是,1T似乎是个极苛刻的设置,要有质量比较好的内存来支持。
   DCLK I/O Timing : 优化时应设为0ns
   Fast R-W Turn Around : 优化时应设为Enabled

   设为Enabled能打开内存快速读写转换功能
   Continuos DRAM Request: 优化时应设为Enabled
   设为Enabled能打开内存连续请求功能

  (3)要使系统稳定工作,还必须在 "Frequency/Voltage Control" 设置以下值:
   Auto Detect DIMM/PCI Clk :设为Enabled
   CPU Clock :设为133
   CPU Ratio :设为最稳定的倍频
   取决于CPU在破解倍频后能提供的最大而且能稳定工作的倍频。雷鸟、毒龙CPU破解倍频的方法是用铅笔把L1上的金点连接起来。
   CPU VCore Voltage :设为1.75
   CPU VCore Voltage表示CPU 的核心电压。在超频可以支持最高核心电压 1.85 伏。当然高核心电压有利于超频后的CPU稳定工作,但也会带来发热量的增加。
   VDIMM Voltage:设为2.60
   8KHA+的内存电压是默认2.60伏,比正常内存电压多0.10伏. CPU超频后为使系统稳定工作用户可以将内存电压升高0.20 至 0.30 伏。但注意有些质量不好的内存在2.80伏下会无法工作。

以上提到的选项在不同主板上的描述上有差异,并且有些主板不提供这么多的选项,请大家注意。IT.SOGO


评论

该日志第一篇评论

发表评论

评论也有版权!