snb平台(snb平台以及apu平台的新一代处理器的核心特征)

张工 2022-05-26 18:09:08 阅读:37
  

  内存是PC配件中结构最简单的,但在BIOS中却是最难调的,很多玩家超频都卡在内存上。希望能通过对DRAM基本原理以及时序的介绍,在内存设置以及XMP的制作上有所帮助。

  什么是内存条的时序:时序及相关概念。

  下面的时间序列分为两部分,只是为了下面的介绍作为分类和非官方的分类方法。

  第一时序:CL-tRCD-tRP-tRAS-CR,就是我们常说的5个主要时序。

玖合小课堂:内存条的时序是什么意思?

  第二时序:(包含所有XMP时序)

  在我说时机之前,我想让你了解一些概念。内存时钟信号是方波,DDR内存中时钟信号上升和下降时发生一次数据传输,所以会有一个等效的双倍传输速率。比如DDR3-1333MT/s实际工作频率666.7MHz,它传输数据666.7 * 2=每秒1,333百万次,也就是1,333MT/s,也就是1333MHz的等效频率,那么每个内存位的宽度就是64位,那么它的带宽就是:1,333 mt/s * 64 bits/8 (8位是一个字节所谓的时序就是内存的时钟周期值。脉冲信号上升然后下降,直到下一个上升为止称为一个时钟周期。随着记忆频率的上升,这个周期会变短。例如,CL9意味着CL的操作时间是9个时钟周期。

玖合小课堂:内存条的时序是什么意思?

  此外,应澄清一些基本术语:

  单元:粒子中的数据存储单位称为单元,由一个电容和一个N沟道MOSFET组成。

  Bank: 8位存储粒子,一个粒子称为Bank,4位粒子,正负粒子合在一起称为bank。根内存是64位。如果是单面,则有8个8位粒子。如果是双面的,双面有16个4bit的颗粒,不算ECC颗粒。

  秩:内存PCB一面的所有粒子称为一个秩。目前,无缓冲桌面内存的一面有8个粒子,所以单面内存是1排8组,双面内存是2排8组。银行等级的定义是SPD信息的一部分,可以在AIDA64的SPD一栏看到。

  DIMM:指可以传输64位数据的内存PCB,即内存粒子的载体。算上ECC芯片,一个DIMM PCB最多可以容纳18个芯片。

  第一时序

  CAS延迟(CL): CAS是列地址选通,一个列地址信号,它定义了从发出读取命令的时间到数据被读出到IO接口的时间的间隔。由于CAS会在几乎所有的内存读取操作中生效(除非读取同一行地址的连续数据,否则4位粒子以3个地址的间隔直接读取,8位粒子以7个地址的间隔直接读取,此时CAS不会生效),所以对内存读取性能的影响最强。如下图所示,蓝色Read表示读取命令,绿色方块表示数据读取IO,间隔时间为CL。

玖合小课堂:内存条的时序是什么意思?

  给定CL的时钟周期值CAS,我们可以使用以下公式计算实际延迟时间tCAS:

  TCAS(纳秒)=(CAS*2000)/内存等效频率

  比如DDR 3-133CL9内存的实际CAS延迟=(9 * 2000)/1333=13.50ns。

  或者反过来,如果你知道你的内存可以在7.5ns的延迟下稳定工作,并且你想

要DDR3-2000的频率,那么你可以把CL值设为8T(实际上8ns,大于7.5ns即可),如果你想要DDR3-1600的频率,那么你的CL值可以设到6T(实际7.5ns)。

  这个公式对于所有用时钟周期表示延迟的内存时序都可以用。

  说到这个公式,我想顺便说说大家对频率和时序的纠结问题。首先来回顾一下DDR一代到三代的一些典型的JEDEC规范,并按照上边那个公式算一下它的CL延迟时间:

  DDR-400 3-3-3-8:(3*2000)/400=15 ns

  DDR2-800 6-6-6-18:(6*2000)/800=15 ns

  DDR3-1333 9-9-9-24:刚才算了是13.5 ns

  再来看看每一代的超频内存的最佳表现(平民级,非世界纪录):

  DDR1 Winbond BH-5 DDR-500 CL1.5:(1.5*2000)/500=6 ns

  DDR2 Micron D9GMH DDR2-1400 CL4:(4*2000)/1400=5.71 ns

  DDR3 PSC A3G-A DDR3-2133 CL6:(6*2000)/2133=5.63 ns

  发现什么?不管是哪一代内存,随着频率提升,CL周期也同步提升,但是最后算出来的CL延迟时间却差不多。那么到了DDR4,JEDEC规范频率去到DDR4-4266,如果按照差不多的延迟,那么按照13ns多一些来算,那么CL值将达到28T!如果按照极限超频延迟来算,DDR4-4266下的延迟也将达到12T。

  DRAM RAS to CAS Delay(tRCD):RAS的含义与CAS类似,就是行(Row)地址信号。它定义的是在内存的一个rank(内存的一面)之中,行地址激活(Active)命令发出之后,内存对行地址的操作所需要的时间。每一个内存cell就是一个可存储数据的地址,每个地址都有对应的行号和列号,每一行包含1024个列地址,当某一行地址被激活后,多个CAS请求会被发送以进行读写操作。简单的说,已知行地址位置,在这一行中找到相应的列地址,就可以完成寻址,进行读写操作,从已知行地址到找到列地址过去的时间就是tRCD。当内存中某一行地址被激活时,我们称它为“open page”。在同一时刻,同一个rank可以打开8个行地址(8个bank,也就是8个颗粒各一个)。下图显示一个行地址激活命令发出,到寻找列地址并发出读取指令,中间间隔的时间就是tRCD。tRCD值由于是最关键的寻址时间,它对内存最大频率影响最大,一般想要上高频,在加电压和放宽CL值不奏效的时候,我们都要放宽这个延迟。

玖合小课堂:内存条的时序是什么意思?

  DRAM RAS Precharge Time(tRP):RAS预充电时间。它定义的是前一个行地址操作完成并在行地址关闭(page close)命令发出之后,准备对同一个bank中下一个行地址进行操作,tRP就是下一个行地址激活信号发出前对其进行的预充电时间。由于在行地址关闭命令发出之前,一个rank中的多个行地址可能正在被读写,tRP对内存性能影响不如CL和tRCD。虽然tRP的影响会随着多个行地址激活与关闭信号频繁操作一个bank而加大,但是它的影响会被bank interleaving(bank交叉操作)和command scheduling(命令调配)所削弱。交叉读写会交替使用不同的bank进行读写,减少对一个bank的操作频率;命令调配则是由CPU多线程访问不同的内存地址,同样是减少对一个bank的频繁操作次数。例如SNB CPU的内存控制器可以对读写操作命令进行有效地重新分配,以使得行地址激活命中率最大化(如果重复激活一个已经处于激活状态的行地址,那就是RAS激活命令未命中),所以tRP在SNB平台对性能的影响不大,并且放宽它有可能可以帮助

  第二时序――XMP

  DRAM CAS Write Latency(tWCL):列地址写入延迟,也就是DRAM的最小写入操作时间,与CL刚好是读写对应关系,一般跟CL值设为同一个值就是可以稳定的。由于内存读取之前必须先写入,所以这个值可以说与CL一样重要。但是在BIOS里一般没得设置,可能是与CL绑定了。

  DRAM Row Cycle Time(tRC):行周期时间。定义了同一bank两次行激活命令所间隔的最小时间,或者说是一个bank中完成一次行操作周期(Row Cycle)的时间,即tRP+tRAS(预充电加上激活的整个过程),tRC设得太紧可能会直接点开不了机,一般只要能进系统再多加一两个周期都是可以稳定的。下图显示的就是tRC的时间。

玖合小课堂:内存条的时序是什么意思?

  DRAM Row Refresh Cycle Time(tRFC):行地址刷新周期,定义了一个bank中行地址刷新所需要的时间。重提一下刷新的含义,由于cell中电容的电荷在MOSFET关闭之后一段时间就会失去,为了维持数据,每隔很短一段时间就需要重新充电。这里多提一句,Intel平台和AMD平台对tRFC的含义不一样,AMD平台的tRFC是DRAM刷新延迟时间,单位是ns,通常有90/110/160/300几个值可以调整,也就是说它的tRFC时钟周期会随着频率的提升而提升;而Intel平台的单位则直接是时钟周期,相反地延迟时间会随着频率的提升而降低。容量大的bank行地址和cell会更多,刷新时间也更长,因此tRFC也要更高。另外,tRFC如果太快会导致数据出错,太慢则影响性能,但可以增加稳定性。

  DRAM Refresh Interval(tREFI):内存刷新时间间隔,也就是内存的刷新命令生效前要经过的时间。刷新的时间间隔一般取决于内存颗粒的容量(density),容量越大,就越需要频繁刷新,tREFI值就要越低。另外tREFI的时间也会受到内存工作温度与内存电压(Vdimm)影响,因为温度越高电容漏电越快。一般在AMD主板的BIOS里,这个值只有3.9us和7.8us可选,而在SNB平台,则是按时钟周期算,例如DDR3-1333下默认值为5199T,换算过来就是2000/1333x5199=7800ns,也就是7.8us。一般DRAM颗粒的spec中都是规定工作温度大于85度时采用3.9us。

  DRAM RAS to RAS Delay(tRRD):行地址间延迟,定义的是同一rank不同bank间两个连续激活命令的最短延迟,在DDR3时代一般最小是4T。它的作用和CR有点像,不过比CR更多的时候对性能有较大的影响,所以这个时序可尽量缩小。

  DRAM Write Recovery Time(tWR):内存写入恢复时间,它定义了内存从写入命令发出(从开始写入算起)到下一次预充电间隔的时间,也就是tRP的前一个操作。如果这个时间设得太短,可能会导致前一次写入未完成就开始下一次预充电,进行寻址,那么前一次写入的数据就会不完整,造成丢数据的情况。这个周期也是第二时序中比较长的,DDR3-2000一般需要10-14个周期,甚至更高。

  DRAM Read to Precharge Time(tRTP):与tWR类似,定义了同一rank上内存从读取命令发出到tRP之前的间隔时间,但是它在读取完成并且行地址关闭之后才会生效。单颗128MB的内存颗粒可以在DDR3-2000下运行在4到6个时钟周期,如果bank容量增大时,这个时序有可能要放宽。

  DRAM Four Active Window(tFAW):它定义了同一rank中允许同时发送大于四个行激活命令的间隔时间,因此最小值应该不小于tRRD的四倍。在DDR3上,tRRD的最小值是4T,因此tFAW的最小值就是16T。这个tFAW由于是在一个rank中大于四个bank同时激活之后才生效,因此在内存不是很繁忙的时候,它对性能的影响并不是很大。但是对一些频繁读写内存的操作(例如SuperPI 32M),tFAW对性能的影响可能会加大。由于现在内存用满的几率非常非常小,两根双面的内存更是有4个rank,配合上interleaving,一个rank中同时激活大于四个bank的几率应该不大,所以通常我们把它设为tRRD的四倍应该就不会出问题。

  DRAM Write to Read Delay(tWTR):内存写-读延迟,它定义的是内存写入命令发出后到下一个读取命令之间的时间间隔,最小为4T,与tRTP类似,提升内存的频率或者容量提升时,这个值需要提高。

  总结以上内容,我们已经对时序有了个大致的了解,知道一些时序设置时要注意什么了。比如tFAW要设为tRRD的四倍,tRAS不能设太低等。内存是辅助CPU超频的,时序设置只是为了放开内存更多的超频空间,时序本身对性能的影响很小,并且随着频率的提升,或者bank数的增加,这种影响可能会进一步减小。具体不同的内存颗粒也会有不同的设置情况

二维码