版权归原作者所有,如有侵权,请联系我们

[科普中国]-内存控制器

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

分类

随着计算机技术发展,内存控制器分为传统型和整合型两种。

传统型传统计算机系统其内存控制器位于主板芯片组北桥芯片内部,CPU要与内存进行数据交换,需要经过“CPU--北桥--内存--北桥--CPU”5个步骤,在该模式下数据经由多级传输,数据延迟显然比较大从而影响计算机系统整体性能;

整合型集成内存控制器,就是在CPU的基板上内置一个内存控制器,先说说没有内存控制器时系统是如何工作的。26个数据A~Z,要传送到CPU,这时候CPU就向北桥发出指令(因为内存控制器是集成在北桥上,所以说要经过北桥),内存通过内存控制器接受到了指令,这个指令就是把内存上b单元的A~Z数据传送到CPU,内存这个时候开始取数据,也就是平常所说的寻址。当内存找到了这个数据,而这26个数据每个数据为500MB,所有数据总和就约为12GB,假设内存为双通道R2 800,数据传输率就为800MHZ乘以128BIT除以8比特每字节=12GB每秒,通过分析,认为只需一秒就能传送到CPU,此时的数据在一秒的时间内只传送到了北桥,内存控制器在北桥,在北桥的数据如何传送到CPU呢,这就要通过FSB前端总线了,假设FSB的频率为800MHZ,那么数据传输率就为800MHZ乘以64BIT除以8比特每秒=6.4GB每秒,从北桥到CPU要2秒,所以数据传送到CPU的总时间为3秒,接下来再来看看CPU集成内存控制器的时候系统是如何工作的;数据从内存传输到控制器后,同样为1秒,所不同的是这个时候不用再通过慢吞吞的前端总线了,CPU直接从内存控制器读取数据就行了,因为内存控制器在CPU的门口,打个比方,一件东西在你门口的时候,大家就可以直接拿了,就是这个原理,算了一下,集成内存控制器的CPU读取12GB的数据是才用了1秒的时间,所以大大节省了运算时间,也充分发挥了CPU的性能。

最后总结一下:CPU没有内存控制器时,数据以内存控制器---北桥----CPU的方式传输;有内存控制器时,数据以内存控制器------CPU的方式传输,一步到位。1

工作原理CPU内部整合内存控制器的优点,就是可以有效控制内存控制器工作在与CPU核心同样的频率上,而且由于内存与CPU之间的数据交换无需经过北桥,可以有效降低传输延迟。打个比方,这就如同将货物仓库直接搬到了加工车间旁边,大大减少原材料和制成品在货物仓库与加工车间之间往返运输所需要的时间,极大地提高了生产效率。这样一来系统的整体性能也得到了提升。2

内存频率和CPU一样,内存也有自己的工作频率,频率以MHz为单位内存主频越高在一定程度上代表着内存所能达到的速度越快。内存主频决定着该内存最高能在什么样的频率正常工作。最为主流的内存类型为DDR3和DDR4,作为DDR2的替代者,DDR3内存频率已经达到了1600MHz,而DDR4的内存频率则为2133MHz。1

内存容量内存的容量不但是影响内存价格的因素,同时也是影响到整机系统性能的因素。过去Windows XP平台,512M的内存还是主流,1GB已经是大容量;64位系统开始普及,Windows Vista、Windows 7、Windows10越来越多人使用,没有2GB左右的内存都不一定能保证操作的流畅度。单根内存的容量主要有1GB、2GB、4GB,最高已经达到单根8GB和单根16GB。1

工作电压内存正常工作所需要的电压值,不同类型的内存电压也不同,但各自均有自己的规格,超出其规格,容易造成内存损坏。DDR2内存的工作电压一般在1.8V左右,而DDR3内存则在1.5V或1.35V左右。为了超频,内存需要工作在高于标准的电压值下,具体到每种品牌、每种型号的内存,则要看厂家了。只要在允许的范围内浮动,略微提高内存电压,有利于内存超频,但是同时发热量大大增加,因此有损坏硬件的风险。1

时序参数tCL : CAS Latency Control(tCL)

一般我们在查阅内存的时序参数时,如“8-8-8-24”这一类的数字序列,上述数字序列分别对应的参数是“CL-tRCD-tRP-tRAS”。这个第一个“8”就是第1个参数,即CL参数。

CAS Latency Control(也被描述为tCL、CL、CAS Latency Time、CAS Timing Delay),CAS latency是“内存读写操作前列地址控制器的潜伏时间”。CAS控制从接受一个指令到执行指令之间的时间。因为CAS主要控制十六进制的地址,或者说是内存矩阵中的列地址,所以它是最为重要的参数,在稳定的前提下应该尽可能设低。

内存是根据行和列寻址的,当请求触发后,最初是tRAS(Activeto Precharge Delay),预充电后,内存才真正开始初始化RAS。一旦tRAS激活后,RAS(Row Address Strobe )开始进行需要数据的寻址。首先是行地址,然后初始化tRCD,周期结束,接着通过CAS访问所需数据的精确十六进制地址。期间从CAS开始到CAS结束就是CAS延迟。所以CAS是找到数据的最后一个步骤,也是内存参数中最重要的。

这个参数控制内存接收到一条数据读取指令后要等待多少个时钟周期才实际执行该指令。同时该参数也决定了在一次内存突发传送过程中完成第一部分传送所需要的时钟周期数。这个参数越小,则内存的速度越快。必须注意部分内存不能运行在较低的延迟,可能会丢失数据。而且提高延迟能使内存运行在更高的频率,所以需要对内存超频时,应该试着提高CAS延迟。

该参数对内存性能的影响最大,在保证系统稳定性的前提下,CAS值越低,则会导致更快的内存读写操作。

tRCD : RAS to CAS Delay

该值就是“8-8-8-24”内存时序参数中的第2个参数,即第2个“8”。RAS to CAS Delay(也被描述为:tRCD、RAS to CAS Delay、Active to CMD),表示"行寻址到列寻址延迟时间",数值越小,性能越好。对内存进行读、写或刷新操作时,需要在这两种脉冲信号之间插入延迟时钟周期。在JEDEC规范中,它是排在第二的参数,降低此延时,可以提高系统性能。如果你的内存的超频性能不佳,则可将此值设为内存的默认值或尝试提高tRCD值。

tRP : Row Precharge Timing(tRP)

该值就是“8-8-8-24”内存时序参数中的第3个参数,即第3个“8”。Row Precharge Timing (也被描述为:tRP、RAS Precharge、Precharge to active),表示"内存行地址控制器预充电时间",预充电参数越小则内存读写速度就越快。tRP用来设定在另一行能被激活之前,RAS需要的充电时间。

tRAS : Min RAS Active Timing

该值就是该值就是“8-8-8-24”内存时序参数中的最后一个参数,即“24”。Min RAS Active Time (也被描述为:tRAS、Active to Precharge Delay、Row Active Time、Precharge Wait State、Row Active Delay、Row Precharge Delay、RAS Active Time),表示“内存行有效至预充电的最短周期”,调整这个参数需要结合具体情况而定,一般我们最好设在24~30之间。这个参数要根据实际情况而定,并不是说越大或越小就越好。

如果tRAS的周期太长,系统会因为无谓的等待而降低性能。降低tRAS周期,则会导致已被激活的行地址会更早的进入非激活状态。如果tRAS的周期太短,则可能因缺乏足够的时间而无法完成数据的突发传输,这样会引发丢失数据或损坏数据。该值一般设定为CAS latency + tRCD + 2个时钟周期。

对于大多数人来说,内存这个小硬件选好容量和频率,然后插上主板用上就行了,对它的很多小参数完全不在意。所以,行业厂商也会提供比较傻瓜式的读取内存SPD芯片的参数信息,自动设置各项小参,简单好用;更有简单的超频设置——XMP技术,让普通用户也能简单地享受超频增值的乐趣。3

发展过程发展方向把内存控制器整合到CPU内部显然是今后的发展方向,而且其技术也一定越来越完善。

AMD的在K8系列CPU及其之后的产品(包括Socket 754/939/940等接口的各种处理器),CPU的内部则整合了内存控制器,CPU和内存之间的数据交换过程简化为“CPU--内存--CPU”三个步骤,省略两个步骤,和传统的内存控制器方案相比显然具有更低的数据延迟,有助于提高计算机系统的整体性能。

Intel在最新的酷睿i5、酷睿i7系列CPU中,也引入了整合内存控制器的方案。1

发展历程Intel在45纳米Penryn系列之后推出全新微架构,代号Nehalem,届时将看到多项全新技术,其中整合的内存控制器无疑非常吸引人。AMD一直在自身的处理器内集成内存控制器,因而取得了很好的内存性能,但也导致每次内存规格升级都必须更新处理器接口;相反,Intel坚持把内存控制器放在北桥芯片里,同时对处理器本身的调整更多地依赖于缓存容量的增减。虽然Intel曾经列举了多项理由,表示不集成内存控制器好处多多,但随着形势的发展变化,Intel自然也不会一条路走到黑,到了下一代新架构。内存控制器就将与图形核心一起走入Intel处理器的内部。显然,Intel所做的不仅仅是简单集成。Nehalem架构下的原生四核心处理器Bloomfield将具备三通道DDR3内存控制器,支持DDR3-1600规格,可提供38.4GB/s的巨大带宽,相比双通道20GB/s左右几乎翻了一番,同时内建的图形核心也能因此获得更好的性能表现,尤其是在3D游戏里。不过,Nehalem下的双核心处理器还会只配备双通道内存控制器,以拉开市场差距。1

运算以AMD CPU为例:Socket 939时代CPU主频与倍频直接相除就是CPU内存控制器所支持的内存频率.

到了DDR2时代的AM2处理器,虽然核心方面同样内置了DDR2的内存控制器, 但与过去的Socket 939接口不同的是,它所支持的内存频率被更新至DDR2-800的水平。CPU主频再也不能与CPU的倍频直接相除,而是除以倍频数二分之一后的整数(不能被整除取整数部分再加1).以4600+和4800+ CPU为例:

即内存运行频率=(CPU主频÷倍频/2)×2

X2 4800+ ,主频为2.5GHz,倍频为12.5。所以内存的除频数为7,此时内存运行的频率 =(2500M÷7)×2=714M

X2 4600+主频为2.4GHz,倍频为12 . 所以内存的除频数为6,此时内存运行的频率 = (2400M÷6)×2=800M

4600+完美的支持DDR2-800

简单的来说就是,如果CPU的主频倘若不能被400整除的话,就说明该AM2处理器在默认的频率下无法运行在DDR2-800的模式下。1

控制器CPU内存集成内存控制器优点 CPU内存集成内存控制器有很多优点 比较突出的是三点:

第一CPU内部整合内存控制器

传统的计算机系统的内存控制器位于主板芯片组的北桥芯片内部,CPU是要和内存进行数据交换,是需要经过“CPU--北桥--内存--北桥--CPU”五个步骤,在此模式中数据经由多级传输,数据延迟显然较大从而影响计算机系统的整体性能;而AMD的K8系列CPU(包括Socket754/939/940等接口各种处理器)内部则整合内存控制器,CPU与内存之间的数据交换过程就简化成“CPU--内存--CPU”3个步骤,省略了2个步骤,与传统内存控制器方案相比显然具有更低数据延迟,这有助提高计算机系统的整体性能。2

第二内存控制器同频于CPU频工作

CPU内部集成内存控制器可以使内存控制器同频于CPU频工作(CPU工作频率一般都在2G以上) ,而北桥的内存控制器一般就要大大低于CPU工作频率,系统延时就更加少。

第三CPU内部集成内存控制器

CPU内部集成内存控制器,由于内存数据不经过北桥有效的降低了北桥的工作压力,为北桥减低可负担。

CPU内部集成内存控制器是K8 ,CPU的一大设计亮点,虽然在总体性能上酷睿远远超过K8,但是在内存性能上酷睿相对于K8来说还是望尘莫及。

整合内存控制器的特征

CPU内部整合内存控制器的优点,是可以有效控制内存控制器工作在和CPU核心同样的频率上,而且因为内存与CPU之间的数据交换无需经过北桥,能有效降低传输延迟。打个比方,这就如同将货物仓库直接搬到加工车间旁边,大大减少原材料和制成品在货物仓库和加工车间之间往返运输所需要的时间,极大地提高生产效率。这样一来系统的整体性能也得到提升。

CPU内部整合内存控制器最大缺点,就是对内存适应性比较差,灵活性比较差,只能使用特定类型内存,而且对内存的容量与速度也有限制,要支持新类型的内存、一定更新CPU内部整合的内存控制器,也就是说一定更换新的CPU;比如AMD的K8系列CPU、就只能支持DDR,而不能支持更高速DDR2。而传统方案的内存控制器因为位于主板芯片组的北桥芯片内部,就没有这方面问题,只需要更换主板,甚至不更换主板也可以使用不同类型的内存,比如IntelPentium 4系列CPU,假如原来配的是不支持DDR2的主板,那么只要更换一块支持DDR2的主板就可以使用DDR2,如果配的是同时支持DDR和DDR2主板,则不必更换主板就可以直接使用DDR2。4

通常,对于整个PC系统来说,我们往往只关注于CPU的主频、系统前端总线的频率、内存的工作频率和它们之间的总线带宽等,但是内存延迟对系统性能的影响也相当大。

那么,什么是内存延迟呢?通俗来讲,系统要对某些数据进行操作时,会由CPU发出指令,存储在硬盘里的数据将传送到内存里,由内存转送给CPU。但是通常内存控制器是集成在主板芯片组的北桥芯片内,数据经由多级传输,往往会产生一定延迟。因而CPU发出指令后并不能及时获得数据,对其并进行处理。内存延迟对系统性能有着重要的影响,内存系统的总体延迟大约为120~150ns,在这段时间内CPU所能做的只有等待。因而,尽可能的降低内存延迟无疑对系统性能的提升有着莫大的帮助。传统的处理器要和内存进行数据交换,需要经过“CPU-北桥-DIMM-北桥-CPU”。而处理器内核整合内存控制器,进程就会简化为“CPU-DIMM-CPU”,省略了两个步骤。

这恐怕是AMD64位处理器在32位应用环境下也能表现出强劲性能的主要原因之一。处理器内部集成内存控制器的好处,就是可以有效控制内存控制器工作在与处理器核心同样的频率上,而且由于内存与处理器之间的数据传输无需经过北桥,能有效降低传输延迟。打个比方,这就如同将货物仓库直接搬至加工车间旁边,大大减少了原材料/制成品在货物仓库和加工车间之间往返运输所需时间,极大地提高了生产效率。这样一来系统的整体性能也得到了提升。在实际测试中,Athlon 64等待内存数据的时钟周期比Athlon XP减少了30~40%,带来系统整体性能的提升高达25~30%。

整合内存控制器虽然可以达到高宽带和低延迟,但是其升级换代不就成了一个大问题吗?通常,如果一种新的内存标准推出,芯片组厂商可以直接开发支持新内存的芯片组来支持。而内存控制器整合到处理器核心中,就造成升级的困难,因为改一下支持内存的规格就需要改内核。但就情况来看,这个疑虑似乎可以打消了。

发展方向:

将内存控制器整合到CPU内部显然是今后的发展方向,而且其技术也会越来越完善。以后Intel也推出整合内存控制器的CPU的产品。5

优缺点优点1.CPU内部整合内存控制器的优点,就是可以有效控制内存控制器工作在与CPU核心同样的频率上,而且由于内存与CPU之间的数据交换无需经过北桥,可以有效降低传输延迟。这就如同将货物仓库直接搬到了加工车间旁边,大大减少了原材料和制成品在货物仓库和加工车间之间往返运输所需要的时间,极大地提高了生产效率。这样一来系统的整体性能也得到了提升。

2.减轻北桥芯片的负担,由于CPU与内存的数据交换量在整个电脑数据交换中所占的比例较大,所以整合之后北桥芯片的工作量极大第减少,进而可以为SATA、PCI-E等其它数据交换通道提供更高效的支持。1

缺点CPU内部整合内存控制器的最大缺点,就是对内存的适应性比较差,灵活性比较差,只能使用特定类型的内存,而且对内存的容量和速度也有限制,要支持新类型的内存就必须更新CPU内部整合的内存控制器,也就是说必须更换新的CPU;例如AMD的K8系列CPU就只能支持DDR,而不能支持更高速的DDR2。而传统方案的内存控制器由于位于主板芯片组的北桥芯片内部,就没有这方面的问题,只需要更换主板,甚至不更换主板也能使用不同类型的内存,例如Intel Pentium4系列CPU,如果原来配的是不支持DDR2的主板,那么只要更换一块支持DDR2的主板就能使用DDR2,如果配的是同时支持DDR和DDR2的主板,则不必更换主板就能直接使用DDR2。6

总结许多应用程序拥有更为复杂的读取模式(几乎是随机地,特别是当cache hit不可预测的时候),并且没有有效地利用带宽。典型的这类应用程序就是业务处理软件,即使拥有如乱序执行(out of order execution)这样的CPU特性,也会受内存延迟的限制。这样CPU必须得等到运算所需数据被除数装载完成才能执行指令(无论这些数据来自CPU cache还是主内存系统)。当前低段系统的内存延迟大约是120-150ns,而CPU速度则达到了3GHz以上,一次单独的内存请求可能会浪费200-300次CPU循环。即使在缓存命中率(cache hit rate)达到99%的情况下,CPU也可能会花50%的时间来等待内存请求的结束- 比如因为内存延迟的缘故。

可以看到Opteron整合的内存控制器,它的延迟,与芯片组支持双通道DDR内存控制器的延迟相比来说,是要低很多的。英特尔也按照计划的那样在处理器内部整合内存控制器,这样导致北桥芯片将变得不那么重要。但改变了处理器访问主存的方式,有助于提高带宽、降低内存延时和提升处理器性能。

传统的计算机系统其内存控制器位于主板芯片组的北桥芯片内部,CPU要和内存进行数据交换,需要经过“CPU--北桥--内存--北桥--CPU”五个步骤,在此模式下数据经由多级传输,数据延迟显然比较大从而影响计算机系统的整体性能;而AMD的K8系列CPU(包括Socket 754/939/940等接口的各种处理器)内部则整合了内存控制器,CPU与内存之间的数据交换过程就简化为“CPU--内存--CPU”三个步骤,省略了两个步骤,与传统的内存控制器方案相比显然具有更低的数据延迟,这有助于提高计算机系统的整体性能。1