内存频率和延迟谁重要
服务器内存和普通内存的区别
服务器内存和普通内存,从广义上来看,二者没什么区别,在外观和结构上并没有什么实质性的区别。我们可以认为我服务器内存的级别比普通内存的级别更高。相比普通内存条,服务器内存有以下特点:
服务器内存追求的是稳定与纠错,不像普通内存那样追求更高的频率或者速度。
服务器内存在技术上更先进,大部分先进的技术都用在了服务器内存上,譬如ECC技术,chipkill、热插拔等技术。只有少数普通内存拥有ECC技术,UDIMM ECC就是这种内存,普通电脑也能用,只不过无法开启ECC功能。
服务器内存和普通内存都属于专用内存,意思就是二者不能互换使用,服务器内存只能用于服务器,普通内存只能用于普通电脑,如果互换使用,会无法识别。
小贴士:
ECC技术的主要作用就是数据纠错,因为服务器都是长时间运行,出现356天不间断工作也不奇怪,为了长期运行的稳定性,必须对内存数据进行纠错,才能确保指令的正确传达和执行。而普通电脑的连续运行时间就短的多了,而且个人电脑就算出错,重启一下影响也有限。
热插拔技术也是用于保证服务器长期不断电稳定运行的重要技术,其作用就是,在服务器开机运行的情况下,可以直接对内存条进行插拔操作,而普通的内存条就不具备这样的技术,想要换内存必须关机断电才行。
主要内存参数
内存参数我们主要关注的是内存型号,内存容量,内存频率和内存时序,其中内存型号和容量比较简单,内存频率相对而言也算容易,话说外行看频率,内行看时序,比较困难的是内存时序,内存时序我们会单独详细说明。
1、内存型号:目前市面上DDR4是主流,DDR3也会有一些,二者是不兼容的,如果你的主板只支持DDR4的内存条,你就买DDR4的内存条,如果只支持DDR3的就买DDR3内存,一般来说新一代的DDR4内存比DDR3内存性能要更优秀。
2、内存容量:内存容量就比较简单了,就是一根内存的大小,在内存插槽数量有限的情况下,如果需要更多的内存容量,那就选择更大容量的内存。
3、内存频率:和CPU频率概念差不多,用来表示内存的处理速度,我们平时看到的内存频率,如2133、2400、2666、3000这些都是等效频率,就目前而言,内存性能看这个等效频率就行了。没有必要深究核心频率那些东西了。
通常情况下,等效频率 = 实际工作频率 x 2,所以像CPU-Z,AIDA64 等工具中,显示内存频率只有标签值的一半的情况,譬如下图AIDA64显示的外部频率(内存频率)是1199.0MHz,等效频率是2399MHz,是前者的2倍。
4、内存时序:除了内存频率,内存时序是另外一个关键参数,其一般存储在内存条的SPD中。其表现形式往往是“A-B-C-D”,他们分别对应的参数是“CL-tRCD-tRP-tRAS”,通过调整这4项时序参数,可以提升内存性能,相关设定需要在主板BIOS中进行设定。
CL:内存CAS延迟时间
tRCD:内存行地址传输到列地址的延迟时间
tRP:内存行地址选通脉冲预充电时间
tRAS:内存行地址选通延迟
5、内存电压:内存从DDR1到DDR4,内存的电压越低,越节能,目前DDR4的内存电压一般是1.2V,不过实际上DDR4也有更高电压的,譬如1.35V,1.4V,1.5V之类,提高电压的主要目的就是超频,譬如那些高频内存的电压往往比较高,不过对此我们并不需要过于关注,因为主板往往支持这些电压。
内存时序说明
内存条时序参数对内存条性能的影响,总的来说在同代产品,同频率下,这些时延参数是越低的内存性能越好,不过很多时候时延和频率是鱼和熊掌的关系,要追求高频率,那这些时延参数就不得不降低,所以我们可以看到那些高频率的内存,其时延参数的值往往比较高。
1、CL:列寻址所需的时钟周期(表示延迟的长短)
同一代产品在同频率下,CL值越小内存条性能越好。我们可以发现从DDR1到DDR4,随着内存条的频率的提高,内存标示的CL值也越大,但是不同代的产品,不能简单的通过标示的CL值来对比其真实的CL延迟,从DDR1到DDR4真实的CL延迟时间几乎没有什么变化。
我们通过计算DDR1到DDR4内存的CL延迟时间:
DDR-400 3-3-3-8:3*2/400=15 ns
DDR2-800 6-6-6-18:6*2/800=15 ns
DDR3-1333 9-9-9-24:9*2/1333=13.5 ns
DDR4-2133 15-15-15-35:15*2/2133=14 ns
DDR4-2400 16-16-16-39: 16*2/2400=13.3 ns
根据上面的计算,可以看出历代产品的真实CL延迟差距并不大,根据DDR1到DDR4内存CL值与频率的关系,我们可以得出CL越大,能上去的频率越高的结论,所以我们在对内存进行超频时,可以通过调高CL值,获得更高的频率,或者通过降低CL值来提升延迟性能。
2、tRCD:行寻址和列寻址时钟周期的差值
tRCD值对内存最大频率影响很大,一般来说这个值也是越小性能越好。当对内存进行超频的时候,可以通过加大电压和提高CL值,如果不希望对电压和CL值进行调整,那就只能把tRCD值增大。所以有时候tRCD值大不代表内存条差,反而代表内存条可以超频的空间更大。
3、tRP:在下一周期之前,预充电需要的时钟周期
理论上来说这个值也是越低越好,不过加大tRP有利于提高行址激活、关闭的命中率和正确率,可让内存条的兼容性更好,也就是说如果内存不稳定,可以尝试将这个值加大一些。
4、tRAS:对某行的数据进行存储时,从操作开始到寻址结束需要的总时间周期
理论上tRAS值越小越好,不过该值太小可能导致数据错误或丢失,太大会影响内存性能。同样的考虑到稳定性和兼容性,我们可以在内存不稳定的时候通过稍微放宽tRAS值来提升稳定性。
CL设置较低的内存具备更高的优势,这可以从总的延迟时间来表现。内存总的延迟时间有一个计算公式,总延迟时间=系统时钟周期×CL模式数+存取时间(tAC)。
首先来了解一下存取时间(tAC)的概念,tAC是Access Time from CLK的缩写,是指最大CAS延迟时的最大数输入时钟,是以纳秒为单位的,与内存时钟周期是完全不同的概念,虽然都是以纳秒为单位。存取时间(tAC)代表着读取、写入的时间,而时钟频率则代表内存的速度。
如某内存其存取时间为6ns,而其内存时钟周期为6ns,如BIOS可调节CL设置,并设定为2.5,则总的延迟时间=6ns X2.5+6ns=21ns,而如果CL设置为2,那么总的延迟时间=6ns X2+6ns=18 ns,就减少了3ns的时间。
从总的延迟时间来看,CL值的大小起到了很关键的作用。不过,并不是说CL值越低性能就越好,因为其它的因素会影响这个数据。例如,处理器的三级缓存很大,这表示处理器比较少地直接从内存读取数据。再者,列的数据会比较常被存取,所以RAS-to-CAS的发生几率也大,读取的时间也会增多。最后,有时会发生同时读取大量数据的情形,在这种情形下,相邻的内存数据会一次被读取出来,CAS延迟时间只会发生一次。
选择购买内存时,最好选择同样CL设置的内存,因为不同速度的内存混插在系统内,系统会以较慢的速度来运行,也就是当CL2.5和CL2的内存同时插在主机内,系统会自动让两条内存都工作在CL2.5状态,造成资源浪费。