【www.guakaob.com--马来西亚移民】
内存主要参数
TRAS、TRCD、TRP、BL等参数(一)
内存种类
目前,桌面平台所采用的内存主要为DDR 1、DDR 2和DDR 3三种,其中DDR1内存已经基本上被淘汰,而DDR2和DDR3是目前的主流。
DDR1内存
第一代DDR内存
DDR SDRAM 是 Double Data Rate SDRAM的缩写,是双倍速率同步动态随机存储器的意思。DDR内存是在SDRAM内存基础上发展而来的,仍然沿用SDRAM生产体系,因此对于内存厂商而言,只需对制造普通SDRAM的设备稍加改进,即可实现DDR内存的生产,可有效的降低成本。
DDR2内存
第二代DDR内存
DDR2 是 DDR SDRAM 内存的第二代产品。它在 DDR 内存技术的基础上加以改进,从而其传输速度更快(可达800MHZ ),耗电量更低,散热性能更优良。
DDR3内存
第三代DDR内存
DDR3相比起DDR2有更低的工作电压, 从DDR2的1.8V降落到1.5V,性能更好更为省电;DDR2的4bit预读升级为8bit预读。DDR3目前最高能够1600Mhz的速度,由于目前最为快速的DDR2内存速度已经提升到800Mhz/1066Mhz的速度,因而首批DDR3内存模组将会从1333Mhz的起跳。
三种类型DDR内存之间,从内存控制器到内存插槽都互不兼容。即使是一些在同时支持两种类型内存的Combo主板上,两种规格的内存也不能同时工作,只能使用其中一种内存。
内存SPD芯片
内存SPD芯片
SPD(Serial Presence Detect): SPD是一颗8针的EEPROM(Electrically Erasable Programmable ROM 电可擦写可编程只读存储器), 容量为256字节,里面主要保存了该内存的相关资料,如容量、芯片厂商、内存模组厂商、工作速度等。SPD的内容一般由内存模组制造商写入。支持SPD的主板在启动时自动检测SPD中的资料,并以此设定内存的工作参数。
启动计算机后,主板BIOS就会读取SPD中的信息,主板北桥芯片组就会根据这些参数信息来自动配置相应的内存工作时序与控制寄存器,从而可以充分发挥内存条的性能。上述情况实现的前提条件是在BIOS设置界面中,将内存设置选项设为“By SPD”。当主板从内存条中不能检测到SPD信息时,它就只能提供一个较为保守的配置。
从某种意义上来说,SPD芯片是识别内存品牌的一个重要标志。如果SPD内的参数值设置得不合理,不但不能起到优化内存的作用,反而还会引起系统工作不稳定,甚至死机。因此,很多普通内存或兼容内存厂商为了避免兼容性问题,一般都将SPD中的内存工作参数设置得较为保守,从而限制了内存性能的充分发挥。更有甚者,一些不法厂商通过专门的读写设备去更改SPD信息,以骗过计算机的检测,得出与实际不一致的数据,从而欺骗消费者。
XMP技术
支持XMP技术的内存产品
BIOS里的XMP设置
Intel Extreme Memory Profiles 简称XMP,它是一种提高内存性能的技术,与NVIDIA的SLI Memory技术类似。Intel制定了Intel Extreme Memory Profiles (Intel XMP Specification),会对DDR3内存作出认证,芯片组会自动识别通过认证的指定品牌和指定型号的内存模组产品,通过提高数据吞吐量,增加带宽等手段使其性能增加。
英特尔公司表示,由于主要面向未来的高端平台,因此这项技术并不会出现在DDR2内存模组上,要想使用“Extreme Memory”技术的首要条件就是要使用DDR3内存。
内存控制器(Memory Controller)
内存控制器是计算机系统内部控制内存并且通过内存控制器使内存与CPU之间交换数据的重要组成部分。内存控制器决定了计算机系统所能使用的最大内存容量、内存BANK数、内存类型和速度、内存颗粒数据深度和数据宽度等等重要参数,也就是说决定了计算机系统的内存性能,从而也对计算机系统的整体性能产生较大影响。
早期内存控制器集成在主板北桥芯片
传统的计算机系统其内存控制器位于主板芯片组的北桥芯片内部,CPU要和内存进行数据交换,需要经过“CPU--北桥--内存--北桥--CPU”五个步骤,在此模式下数据经由多级传输,数据延迟显然比较大从而影响计算机系统的整体性能;而AMD的K8系列CPU(包括Socket 754/939/940等接口的各种处理器)内部则整合了内存控制器,CPU与内存之间的数据交换过程就简化为“CPU--内存--CPU”三个步骤,省略了两个步骤,与传统的内存控制器方案相比显然具有更低的数据延迟,这有助于提高计算机系统的整体性能。
AMD率先在桌面平台将内存控制器集成在CPU
SDRAM之参数解释-ok
TRAS、TRCD、TRP、BL等参数(二)
有关内存优化的文章其实已经有很多了,可能大家都没觉得没什么了不起的,不就是那几个参数吗?这还用讲?但是,我相信 90% 以上的人并没有完全真正理解那些时序参数的含义。我敢说,目前很多的优化原则都是有问题的,甚至有误导的倾向!
本人在此之前曾有一篇专门探讨内存原理与相关参数的大型专题(文章发表于《电脑高手》),其中所讲到的一些原理其实对优化就有很大的启发意义。的确,虽然在 BIOS 中就是那么几个可以调节的内存时序参数,但如果不正确了解它们的意思,并不是每个人都知道如何正确的调节。有人可能会说,这有什么难的,与时序相关的时序参数,肯定都是越小越好呀,错!这就是我今天要着重讲到的问题。
1、认识内存相关工作流程与参数
首先,我们还是先了解一下内存的大体结构工作流程,这样会比较容量理解这些参数在其中所起到的作用。这部分的讲述以SDRAM为例,因为时序图看起来会简单一些,但相关概念与DDR SDRAM的基本相同。
SDRAM的内部是一个存储阵列,将数据“填”进去,你可以它想象成一张表格。和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。对于内存,这个单元格可称为存储单元,那么这个表格(存储阵列)叫什么呢?它就是逻辑Bank(Logical Bank,下文简称L-Bank)。
SDRAM内部L-Bank示意图,这是一个8X8的阵列,B代表L-Bank地址编号,C代表列地址编号,R代表行地址编号。如果寻址命令是B1、R2、C6,就能确定地址是图中红格的位置
目前的内存芯片基本上都是4个L-Bank设计,也就是说一共有4个这样的“表格”。寻址的流程也就是——先指定L-Bank地址,再指定行地址,然后指列地址最终的确寻址单元。
在实际工作中,L-Bank地址与相应的行地址是同时发出的,此时这个命令称之为“行有效”或“行激活”(Row Active)。在此之后,将发送列地址寻址命令与具体的操作命令(是读还是写),这两个命令也是同时发出的,所以一般都会以“读/写命令”来表示列寻址。根据相关的标准,从行有效到读/写命令发出之间的间隔被定义为tRCD,即RAS to CAS Delay(RAS至CAS延迟,RAS就是行地址选通脉冲,CAS就是列地址选通脉冲),大家也可以理解为行选通周期。tRCD是SDRAM的一个重要时序参数,可以通过主板BIOS经过北桥芯片进行调整。广义的tRCD以时钟周期(tCK,Clock Time)数为单位,比如tRCD=2,就代表延迟周期为两个时钟周期,具体到确切的时间,则要根据时钟频率而定,对于PC100 SDRAM(时钟频率等同于DDR-200),tRCD=2,代表20ns的延迟,对于PC133(时钟频率等于DDR-266)则为15ns。
图中显示的是tRCD=3
接下来,相关的列地址被选中之后,将会触发数据传输,但从存储单元中输出到真正出现在内存芯片的 I/O 接口之间还需要一定的时间(数据触发本身就有延迟,而且还需要进行信号放大),这段时间就是非常著名的 CL(CAS Latency,列地址脉冲选通潜伏期)。CL 的数值与 tRCD 一样,以时钟周期数表示。如 DDR-400,时钟频率为 200MHz,时钟周期为 5ns,那么 CL=2 就意味着 10ns 的潜伏期。不过 ,CL 只是针对读取操作,对于 SDRAM,写入是没有潜伏期的,对于 DDR SDRAM,写入潜伏期在 0.75 至 1.25 个时针周期之间。
图中标准CL=2,tAC是有关内部信号处理的周期,可以不用关心
目前内存的读写基本都是连续的,因为与CPU交换的数据量以一个Cache Line(即CPU内Cache的存储单位)的容量为准,一般为64字节。而现有的P-Bank位宽为8字节,那么就要一次连续传输8次,这就涉及到我们也经常能遇到的突发传输的概念。突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输的周期数就是突发长度(Burst Lengths,简称BL)。
在进行突发传输时,只要指定起始列地址与突发长度,内存就会依次地自动对后面相应数量的存储单元进行读/写操作而不再需要控制器连续地提供列地址(SDRAM与DDR SDRAM的突发传输对列寻址的操作数量有所不同,在此不再细说)。这样,除了第一笔数据的传输需要若干个周期(主要是之前的延迟,一般的是tRCD+CL)外,其后每个数据只需一个周期的即可获得。
突发连续读取模式:只要指定起始列地址与突发长度,后续的寻址与数据的读取自动进行,而只要控制好两段突发读取命令的间隔周期(与BL相同)即可做到连续的突发传输。
在数据读取完之后,为了腾出读出放大器以供同一L-Bank内其他行的寻址并传输数据,内存芯片将进行预充电的操作来关闭当前工作行。还是以上面那个L-Bank示意图为例。当前寻址的存储单元是B1、R2、C6。如果接下来的寻址命令是B1、R2、C4,则不用预充电,因为读出放大器正在为这一行服务。但如果地址命令是B1、R4、C4,由于是同一L-Bank的不同行,那么就必须要先把R2关闭,才能对R4寻址。从开始关闭现有的工作行,
到可以打开新的工作行之间的间隔就是tRP(Row Precharge command Period,行预充电有效周期),单位也是时钟周期数。
本图为一个完整的从行寻址到行关闭的时序图,图中所表示的tRCD=2、CL=2、tRP=2
从上图中我们还发现了一个在 DDR SDRAM 时代经常被人提起,也经常会在 BIOS 中出现的参数—— tRAS。tRAS 在内存规范中的解释是 ACTIVE to PRECHARGE command,即从行有效命令发出至预充电命令发出之间的间隔。这也是本专题第一部分中所要重要谈到的话题。在深入分析它之前,我们先了解一下哪些因素会影响到内存的性能。【TRAS、TRCD、TRP、BL等参数】
在讲完 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 即可):
内存参数详解
TRAS、TRCD、TRP、BL等参数(三)
内存参数详解:
tCL : CAS Latency Control
tRAS : Min RAS Active Timing
tRP : Row Precharge Timing
tRCD : RAS to CAS Delay
tWR : Write Recovery Time
tRFC : Row Refresh Cycle Time
tWTR:Write to Read Delay
tRRD : Row to Row Delay(RAS to RAS delay)
tRTP:Read to Precharge
tFAW:Four Activate Window Delay【TRAS、TRCD、TRP、BL等参数】
tCL : CAS Latency Control(tCL)
一般我们在查阅内存的时序参数时,如“7-7-7-8”这一类的数字序列,上述数字序列分别对应的参数是“CL-tRCD-tRP-tRAS”。这个3就是第1个参数,即CL参数。
CAS Latency Control(也被描述为tCL、CL、CAS Latency Time、CAS Timing Delay),CAS latency是“内存读写操作前列地址控制器的潜伏时间”。CAS控制从接受一个指令到执行指令之间的时间。因为CAS主要控制十六进制的地址,或者说 是内存矩阵中的列地址,所以它是最为重要的参数,在稳定的前提下应该尽可能设低。【TRAS、TRCD、TRP、BL等参数】
内存是根据行和列寻址的,当请求触发后,最初是tRAS(Activeto Precharge Delay),预充电后,内存才真正开始初始化RAS。一旦tRAS激活后,RAS(Row Address Strobe )开始进行需要数据的寻址。首先是行地址,然后初始化tRCD,周期结束,接着通过CAS访问所需数据的精确十六进制地址。期间从CAS开始到CAS结束 就是CAS延迟。所以CAS是找到数据的最后一个步骤,也是内存参数中最重要的。
这个参数控制内存接收到一条数据读取指令后要等待多少个时钟周期才实际执行该指
令。同时该参数也决定了在一次内存突发传送过程中完成第一部分传送所需 要的时钟周期数。这个参数越小,则内存的速度越快。必须注意部分内存不能运行在较低的延迟,可能会丢失数据,因此在提醒大家把CAS延迟设为2或2.5的 同时,如果不稳定就只有进一步提高它了。而且提高延迟能使内存运行在更高的频率,所以需要对内存超频时,应该试着提高CAS延迟。
该参数对内存性能的影响最大,在保证系统稳定性的前提下,CAS值越低,则会导致更快的内存读写操作。
tRAS : Min RAS Active Timing 该值就是该值就是“7-7-7-8”内存时序参数中的最后一个参数,即8。Min RAS Active Time (也被描述为:tRAS、Active to Precharge Delay、Row Active Time、Precharge Wait State、Row Active Delay、Row Precharge Delay、RAS Active Time),表示“内存行有效至预充电的最短周期”,调整这个参数需要结合具体情况而定,并不是说越大或越小就越好。
如果tRAS的周期太长,系统会因为无谓的等待而降低性能。降低tRAS周期,则会导致已被激活的行地址会更早的进入非激活状态。如果tRAS的周期 太短,则可能因缺乏足够的时间而无法完成数据的突发传输,这样会引发丢失数据或损坏数据。该值一般设定为CAS latency + tRCD + 2个时钟周期。如果你的CAS latency的值为2,tRCD的值为3,则最佳的tRAS值应该设置为7个时钟周期。为提高系统性能,应尽可能降低tRAS的值,但如果发生内存错误 或系统死机,则应该增大tRAS的值。
tRP : Row Precharge Timing(tRP) 该值就是“7-7-7-8”内存时序参数中的第3个参数,Row Precharge Timing (也被描述为:tRP、RAS Precharge、Precharge to active),表示"内存行地址控制器预充电时间",预充电参数越小则内存读写速度就越快。
tRP用来设定在另一行能被激活之前,RAS需要的充电时间。tRP参数设置太长会导致所有的行激活延迟过长,设为更小可以减少预充电时间,从而更快 地激活下一行。然而,这样做可能会造成行激活之前的数据丢失,内存控制器不能顺利地完成读写操作。对于桌面计算机来说,推荐预充电参数的值设定为2个时钟 周期,这是最佳的设置。如果此值低,则会因为每次激活相邻紧接着的bank将需要1个时钟周期,这将影响内存的读写性能,从而降低性能。
tRCD : RAS to CAS Delay 该值就是“7-7-7-8”内存时序参数中的第2个参数。RAS to CAS Delay(也被描述为:tRCD、RAS to CAS Delay、Active to CMD),表示"行寻址到列寻址延迟时间",数值越小,性能越好。对内存进行读、写或刷新操作时,需要在这两种脉冲信号之间插入延迟时钟周期。在 JEDEC规范中,它是排在第二的参数,降低此延时,可以提高系统性能。如果该值设置太低,同样会导致系统不稳定。如果你的内存的超频性能不佳,则可将此 值设为内存的默认值或尝试提高tRCD值。
tWR : Write Recovery Time Write Recovery Time (tWD),表示“写恢复延时”。该值说明在一个激活的bank中完成有效的写操作及预充电前,必须等待多少个时钟周期。这段必须的时钟周期用来确保在预 充电发生前,写缓冲中的数据可以被写进内存单元中。同样的,过低的tWD虽然提高了系统性能,但可能导致数据还未被正确写入到内存单元中,就发生了预充电 操作,会导致数据的丢失及损坏。
tRFC : Row Refresh Cycle Time Row Refresh Cycle Time(tRFC、RFC),表示“SDRAM行刷新周期时间”,它是行单元刷新所需要的时钟周期数。该值也表示向相同的bank中的另一个行单元两次 发送刷新指令(即:REF指令)之间的时间间隔。tRFC值越小越好,它比tRC的值要稍高一些。大多数稳定值为tRC加上2-4个时钟周期。
tWTR : Write to Read Delay Write to Read Delay (tWTR),表示“读到写延时”。即最后的数据进入读指令。它设定向DDR内存模块中的同一个单元中,在最后一次有效的写操作和下一次读操作之间必须等 待的时钟周期。增加tWTR值,可以让内容模块运行于比其默认速度更快的速度下。
tRRD : Row to Row Delay(RAS to RAS delay) Row to Row Delay,也被称为RAS to RAS delay (tRRD),表示"行单元到行单元的延时"。该值也表示向相同的bank中的同一个行单元两次发送激活指令(即:REF指令)之间的时间间隔。tRRD 值越小越好。延迟越低,表示下一个bank能更快地被激活,进行读写操作。然而,由于需要一定量的数据,太短的延迟会引起连续数据膨胀。如果比此值低,则 会因为每次激活相邻紧接着的bank将需要1个时钟周期,这将影响DDR内存的读写性能,从而降低性能。
网页打不开怎么办?
TRAS、TRCD、TRP、BL等参数(四)