超能课堂(127):晦涩的数字密码?内存时序的背后是什么?

我们这次要介绍的是内存的时序,这应该是内存除容量、标准、频率外最重要的参数,然而说清楚它是什么,还是需要一定的参考资料才能理清,而且其中还有些容易混淆的概念、单位,甚至需要进行简单的换算。大家上中学的时候应该都有听老师说过最容易忽视的知识点最需要复习,所以我们今天来看看,作为或许是最重要部件之一的内存,所谓的时序到底是什么意思。

这款内存的时序则是CL16-18-18-38

时序是什么样子的?

我们说简单点,所谓的内存时序,英文是”Memory Timing“,一般来说都标注在内存条散热片,通常以数字的形式写作”TT-XX-YY-ZZ“,当然有些是只标注前三节的,不过也有标注五节的,但反映的都是都是内存在不同工作环节当中的延迟时间,但需要注意的这里的时序只是性能指标,单位是时钟周期(Clock Cycles),数值越低意味着性能越强大,而真正决定平台性能水平的延迟时间单位是纳秒(ns,nanosecond)。

这是一条比较早的DDR2内存,时序是CL:4-4-4-12,不过电压按照现在的标准就真的很高

时序完整的意义包括什么?

完整的时序参数包括四节数字,分别是CL(CAS Latency)、tRCD(Row Address to Column Address Delay)、tRP(Row Precharge Time)、tRAS(Row Active Time)。看上去是不是有点迷糊?其中翻译成中文其实就是列地址访问潜伏时间(CL)、行地址到列地址等待时间(tRCD)、行地址预充电时间(tRP)、行地址活动时间(tRAS)。其实时序就是内存在工作中需要的,或是必要的周期数(Cycles),所以周期越少才意味着越强的性能,而不是我们经常在CPU、GPU当中积累的逻辑:越高的数字代表着越快的处理速度。所不同的是,CL值,也就是时序当中首个数字是确切的周期数,而后面的三个数字都是最小周期数。

从原理来看,各种延迟周期都是什么

但这些参数到底代表着什么呢?我们都应该知道,就传统的SDRAM内存而言,每颗内存颗粒当中的存储单元其实是采用类似于棋盘的二维架构,这种架构我们称之为“Bank”,其中纵向我们称之为行(Row),或者说Word Line(Word=2 Byte),而横向我们称之为列(Columns),或者说Bit Lines。而当历史发展到DDR,“Bank”随之发展到“Rank”,当处理器需要处理内存当中缓存的信息,首先需要寻址,这里首先要先确定行(Row),再确定列(Columns),或者说要让行数据和列数据有效激活,所以这时候首先就需要接触到的是时序参数中的“tRCD”,或者说“RAS to CAS Delay”,顾名思义就是发送列有效数据和行有效数据之间的间隔,所以如果tRCD=9,就说明需要9个周期(Clock),结合频率接可以推算到具体多少纳秒(ns)。

图片来自AnandTech

在确认行数据和列数据后,其实就已经确定具体的存储单元,这时候我们需要接触时序中的第一个参数:“CAS Latency”,这里的“Latency”一般理解为”潜伏“而不是“延迟”。这里衡量的是在将列数据(Column Address Strobe)数据和读取命令发送后,到输出最初的数据之间的潜伏期,单位同样是周期(Clock)。

CAS Latency时序周期,图片来源于HardSecret

在进行一次行-列操作后,我们接下来需要的是对另一行继续这种操作,而这时候需要将之前的工作关闭,然后重新确认行地址、列地址,这中间是需要关闭工作,然后进行预充电的(Precharge),这里我们就需要接触时序参数当中的第三项:“tRP”。预充电具体的意义和操作比较复杂,准确来说是发出预充电命令后,需要等待才能允许行数据(Row Address Strobe)工作的等待时间,也可以简单理解为完成一次行-列工作,需要准备进行下一次循环工作的准备时间,单位同样是周期(Clock)。

此外还有“tRAS“,它衡量的其实接近一个时间窗口,或者说周期窗口,准确来说是当激活行命令发起时,到进行下一次预充电时间命令之间的周期窗口,也就是对进行下一次预充电的时间进行限制。

既然这样,周期更低的时序一定更强吗?

然而时序并不是这么简单单纯的内容,比如说你不能忽视内存的标准和频率,仅仅看到时序所代表的周期数就判定背后的性能孰优孰劣。以我们常见的DDR3、DDR4内存来说,我们来看看时序和背后的真正的延迟时间。首先我们知道DDR内存存在Dual Data Rate的特性,所以在时钟周期的上升沿和下降沿各传输一次信号,所以我们插入一块DDR3-1600MHz的内存,在CPU-Z当中看到的频率就是800MHz,我们就以800MHz为例,换算过来的周期时间就是1.25ns/周期,那么以我们常见的DDR3 CL=10为例,实际的延迟时间就是10.25ns,但是我们找一条频率更高的DDR3-2133MHz内存,那么背后实际的频率就是1066MHz,那么换算过来的周期时间就是0.938ns/周期,这样就算不用算,我们也知道相同的时序,频率更高的内存会有更短的实际延迟时间,所以说,虽然更低的时序会确实代表着所需要的周期更少,但是更快的频率同样很重要。

不过更加有经验的读者应该知道,即使这些说的都对,也只能说在给定的时序,或者说CAS延迟周期环境中,越高的频率意味着越短的延迟时间,而现实情况是,如果你浏览一遍我们内存的发展,不用考虑电压、预存取位数,只看频率和CL周期的话,会发现越高的频率,往往会有越高的CL周期,我们以前使用很主流的DDR3-1600MHz内存的时候,常见的CL周期大致是在8-10左右,而如果是现在很常见的X.M.P频率:3200MHz的话,CL周期会达到14-16左右,如果再达到3600MHz的话,CL=17、CL=18都能看的到。所以既不可以光看时序,也不能只看频率,高频率、低时序周期才能带来最优的延迟时间。

这款影驰名人堂DDR4-4000MHz内存频率很高,但时序(CL19-25-25-45)同样很高

虽然我们在大部分看到时序的时候,标注的都是CL=X,看上去CL似乎是曝光度最高的时序项目之一,但其实其他项目也需要知道,在完整的CL-tRCD-tRP-tRAS-T时序项目当中,除我们已经介绍过的CL,还有其他需要注意的地方,比如说从数字角度来说,前三项虽然没有必然的大小关系(但绝大多数时候是CL>tRCD>tRP>tRAS)大家经常会注意到第四项tRAS经常是数字最大的项目,在以前DDR的时候,tRCD的数值会比较大,大致等于tRCD+2xtRAS,比如说CL4-4-4-12(虽然现在一般很少有这么极端,一般来说都是tRAD略大于2xtRP,比如说CL17-18-18-18-38)。而如果完整标出第五项的话,大家会见到1T/2T,也有些做1N/2N,这部分叫做首命令延迟(Command Rate),衡量的是在选择单个内存P-Bank芯片集后多少时间可以发出具体的寻址的L-Bank命令,也就是上面的CL、tRCD之间,衡量的单位也是时钟周期,因此也是越短越好,1T的性能会稍稍优于2T,但是反过来说对于稳定性这是一种考验。

所以这条内存的完整时序是14-14-14-34-2T

所以总的来说,其实内存还是比较少内容是可以给大家来推敲的,也就只有频率、时序这些概念,而对于时序,其实大家只要知道这是内存在和处理器工作交换数据时需要发生的周期就好(注意是周期而不是性能,单位是cycle/clock,而不是ns),越低的周期意味着越好的性能,结合高的内存频率可以带来最低的延迟时间,但总的来说越高的内存频率还会带来越高的时序,总之大家结合低时序和高频率就好。

(0)

相关推荐