PCEVA,PC绝对领域,探寻真正的电脑知识
开启左侧

彻底讲透内存超频-理论篇 DDR4命令与时序定义

[复制链接]
绝对有料 发表于 2021-6-21 21:04 | 显示全部楼层 |阅读模式
点击数:514|回复数:0


本文请结合视频一起阅读。第一时序在视频里有介绍,第二、第三时序以文字形式介绍。调节第二、第三时序可以用手动的方式改善内存超频的性能与稳定性,对于兼容性不确定的内存与主板有意义。更多教程请关注后续视频更新。

DDR4命令表

image1.jpg

JEDEC组织发布的DDR4内存白皮书里的Command Table,详细记载了DDR4内存会用到的命令以及各引脚的电平信号、地址信息。其中有几个命令是内存时序会用到的基础命令。

Refresh=REF,刷新命令,内存为易失性储存器,每隔一段时间就需要对内存里的电容器进行充电,以维持电平信号的电势,这个步骤就叫刷新。
Precharge=PRE,预充电命令,当内存即将要对内存的某行进行读写时,就会对该行的cell单元进行激活和预充电,这个步骤就叫预充电。
Activate=ACT,激活命令,内存cell在未进行读写时多数处于休眠状态,当要进行读写时,就会先激活再预充电,这个步骤就叫激活。
Write=WR,写入命令,对内存的某行、某列地址进行数据写入,BLx、BCx是写入队列的长度,具体取决于处理器PHY接口对内存控制器的命令要求。
Read=RD,读取命令,对内存的某行、某列地址进行数据读取,BLx、BCx是写入队列的长度,具体取决于处理器PHY接口对内存控制器的命令要求。

image2.jpg

以tWTR_S这个时序为例,第一行CK_c和CK_t代表了时钟信号,其中CK_t是真实时钟信号,CK_c则是一个相位差分时钟信号,用于辅助信号稳定性;第二行命令信号,记载了时钟信号传输的命令,tWTR_S意为在不同Bank中从写入切换到读取,所以命令行中有WR和RD命令,中间都是等待周期的校验信号;第三行地址信号,BG代表Bank Group,Bank代表Bank,Address代表行列信息,可以理解为这是一个从大到小的包含关系地址;第四行,DQS和DQ,DQ是数据传输信号,包含了真正的数据信息,DQS则是一个校准时钟信号,与DQ同步传输,并沿上下沿进行双倍采样。

tWTR_S是一个在不同Bank中从写入命令切换至读取命令的时序,可以看到tWTR_S经过9个时钟周期进行验证和寻址,第10个时钟周期时在不同Bank中开始进行写入切换读取命令的验证,这个过程叫tWTR-L,这个过程需要4个时钟周期,然后开始进行读取。

内存时序的含义
CAS Latency(CL)
CL更官方的名称叫CAS Latency,可以理解为列地址延迟时间。CAS=Column Address Strobe Latency,它定义了读取命令发出后到从列地址读出数据到IO接口的间隔时间。列地址代表了内存cell的比特线,是内存cell中实际发生读写操作的接口,换句话说就是列地址连接着储存数据信息的电容,写入时电荷从列地址流向电容,读取时电荷从电容流向列地址,并输出到DQ引脚,所以CL的延迟对于内存读写性能影响最大,被JEDEC当做内存第一时序中的首位。

DRAM RAS to CAS Delay(tRCD)

image3.jpeg

tRCD更官方的名字是RAS to CAS Delay行地址到列地址延迟,也可以叫做RAS Latency,它定义了内存控制器发出“ACT”指令激活某个Bank中的某一行地址所需要的时间,在完成tRCD后,内存才会接着发送列地址以及读写指令,进行读写操作。我们刚刚说了R(Row)AS代表了行地址信息,行地址代表了字线,字线连接着栅极,是内存Cell的大门或者开关,tRCD这个操作就可以理解为找门和开门的环节,然后才能对内存Cell进行读写操作。

DRAM RAS Precharge Time(tRP)

image4.jpg

tRP是RAS预充电时间,也就是行地址预充电时间,定义的是在同一个Bank中,前一个行地址读写操作已经完成,准备对下一个行地址操作时,对下一个行地址进行的预充电。这个时序会用到 “PRE”和“ACT”的基础命令,也就是预充电和激活地址。因为现代内存具有bank interleaving(bank交叉操作)和command scheduling(命令调配)特性,内存并不会频繁在同一个Bank中对不同行地址进行操作,也就不会频繁使用TRP,所以TRP对内存性能影响并不大,但在Memtest等内存稳定性测试中,会频繁使用到TRP,因此它有助于提高内存稳定性,但对内存性能影响不大。

在内存时序设定的第一时序中,tRP位于第三位,但在内存的实际操作中,tRP通常是第一个发生,也就是tRP-tRCD-CL,顺序与时序的排列刚好相反。tRP代表了激活和预充电,tRCD代表了激活(行地址)和行地址的发送,CL则是列地址的发送以及读写命令的发出到实际数据送出的延迟。

DRAM RAS Active Time(tRAS)
tRAS可以理解为内存完成一个行、列地址激活操作的贤者时间,内存控制器从发出“ACT”指令激活行/列地址后进行下一个指令必须等待一个完整的tRAS时钟周期,也就是tRAS包含了tRCD和CL的操作,所以tRAS通常大于等于tRCD+CL,尤其是在大容量内存上可以适当放宽tRAS时序,在tRCD+CL的基础上加多几个时钟周期有助于稳定性的提高。

DRAM Command Rate(CR)
首命令速率,平时我们看到内存的CR 1T或2T模式就是指的首命令速率。首命令速率指的是从选定bank地址之后到可以发出首个行地址激活命令所经过的时钟周期,1T需要一个时钟周期,2T需要两个时钟周期。CR模式对性能和稳定性的影响有较大变数,如果CPU需要的数据都在同一个Bank中,不需要重复寻找Bank地址,CR模式对性能和稳定性影响则不大,如果CPU需要的数据在不同Bank,需要重复寻找Bank地址、对其发出激活指令,CR的影响就会比较小。同时双面内存、内存条越多,例如四根插满甚至八根插满,CR模式的影响则越大。

第二时序

image5.jpeg

前面我们说过,内存常用的基础命令无非激活、预充电、刷新、读取、写入这五种,在第二时序中,我们会围绕这五种指令来帮助大家梳理和记忆第二时序的作用和定义。

Write-WR-写入命令

image6.jpeg

DRAM CAS Write Latency(tWCL)
tWCL是列地址写入延迟时间,它的定义与CL基本相同,都需要tRCD在前先激活行地址,然后在列地址输入或输出数据。CL与tWCL的区别是前者是在Read读取命令下运行,后者是在Write写入命令下运行。

tWCL在英特尔平台通常不可设定,与CL值直接同步,在锐龙平台,可以设定,但也建议与CL相同或顶多低一个时钟周期,在AUTO设定下,同样会与CL值直接同步。

DRAM Write Recovery Time(tWR)
tWR是写入恢复延迟,定义的是内存Bank中进行写入命令后需要等待多少个时钟周期,才能进行预充电命令和下一个操作。这个时序用于确保Bank中已激活的地址能将数据完整保存进内存cell的电容中。如果该参数收的过紧,Bank进行了提前预充电,会导致内存数据损坏,进而造成内存不稳定,所以在超频时可以适当放宽tWR,有助于稳定性的提高。

DRAM Write to Read Delay(tWTR-S/tWTR-L)
tWTR是内存写入命令与读取命令延迟,定义了控制器发出写入命令后到读取命令的间隔时间。tWTR在DDR4中还细分为tWTR-S和tWTR-L,而DDR3因为没有Bank Group这个特性,所以并不区分-S或-L。
两者的区别是tWTR-S的Bank Group地址不同,写入地址位于BGb,读取地址位于BGb。tWTR-L则是同一个Bank Group中发生的写入与读取命令延迟,写入与读取命令均位于BGa,通常发生在不同Bank Group的操作,需要的延迟时间更短,所以在DDR4的内存时序中,-S的内存延迟通常要比-L更短一些。

Read-RD-读取命令
DRAM Read to Precharge Time(tRTP)
tRTP是内存读取与预充电延迟,定义了控制器发出读取命令后到下一个预充电命令的延迟时间。tRTP与tWR类似,定义的是在读取命令后,对行地址关闭,并新激活一个行地址和预充电的延迟时间。同理,这个参数如果收得过于紧,也容易导致电容输出到列地址的电荷被提前关闭,导致数据丢失,所以tRTP收得过紧,也容易造成内存不稳定,在超频时建议适当放宽,有助于稳定性的提高。

Activate-ACT-激活命令

image7.jpg

DRAM RAS to RAS Delay(tRRD-S/tRRD-L)
tRRD是行地址延迟时间,定义的是连续激活两行地址的最低等待时钟周期,当内存进行频繁读写时,会连续激活行地址进行读写操作,tRRD就是连续激活两行地址所需的等待时钟周期。tRRD-S和tRRD-L的区别同样是前者位于不同BG地址,后者是在同一个BG地址中,-S的内存延迟通常要比-L更短一些。

DRAM Row Cycle Time(tRC)
tRC是行地址周期时间,定义的是内存完成行地址操作所需的时钟周期。tRC包括了tRAS和tRP两个操作,tRAS激活行地址,tRP完成预充电,tRC指的是完整整个行地址操作所需时间。tRC在英特尔平台无法设置,AMD平台上tRC通常要大于tRAS+tRP。
image8.jpg


DRAM Four Active Window(tFAW)
tFAW定义的是在一个Bank中连续激活四个行地址所需等待时钟周期,当内存处于频繁读写状态,需要连续开启大于或等于4个行地址,则需要进入tFAW等待周期。某种程度上可以理解为,在同一个Bank中连续激活4个行地址时,需要给Bank更多的等待周期(休息时间)。tFAW时序设定通常需要大于tRRD-L x 4。

Refresh-REF-刷新命令

image9.jpg

DRAM Row Refresh Cycle Time(tRFC)
tRFC是行地址刷新周期,定义了刷新所有Bank行地址所需的周期时间。内存属于易失性储存器,内存cell里电容的电荷会逐渐丢失,所以为了维持数据的完整性,内存每隔一段时间就要对一个Bank或多个Bank的行地址进行刷新。内存有多种刷新模式,最基础的是All Bank的Refresh命令,这时ACT引脚处于高电平对所有Bank进行加压,激活Bank中的所有行地址,同时还有Self Refresh状态,对单一Bank中的行地址进行激活,如Bank中的某个行地址本身处于激活状态(正在工作),则列地址激活进行读出和回写,完成刷新任务。

image10.jpeg

更高的tRFC值能增强内存的稳定性,但更高的tRFC值会小幅度影响内存读写性能,较为明显的影响内存延迟时间,更长的刷新周期会导致读写任务向后推移,因此导致内存延迟提高。

DRAM Refresh Interval(tREFI)
tREFI是内存刷新间隔时间,即完成tRFC后到下一个刷新周期中间的间隔时间。相较tRFC,tREFI会更明显的影响读写性能,但同时tREFI会更明显的影响内存稳定性,过高或过低都容易导致内存数据的丢失,所以除非你清楚的知道自己内存tREFI的安全阈值,否则这一项建议设为自动。

第三时序


我们常规的超频包括XMP或是网上的超频攻略,大部分止步于第二时序,极少会去调校第三时序,而第三时序的重要性其实和第二时序差不多,但是第三时序如果调错更容易导致稳定性崩盘,所以在设定第三时序参数时,我们需要更加的谨慎。

第三时序从命名上看,要比第二时序复杂得多,大家可能比较容易混淆,但实际上定义更简单一些。我们先给大家解释一下第三时序的命名规则。
tRDRD:两个读取命令之间的间隔时钟周期
tRDWR:读取到写入命令之间的间隔时钟周期
tWRRD:写入到读取命令之间的间隔时钟周期
tWRWR:两个写入命令之间的间隔时钟周期

-sg:Same Bank Group,发生在一个BG地址中的时钟操作。
-dg:Different Bank Group,发生在不同BG地址中的时序操作。
-dr:Different Rank,发生在两个Rank也就是双面内存,才会有的时序操作。
-dd:Different Dimm,发生在不同插槽上的时序操作。

例如tRDRD -dg,控制器在两个不同BG地址中连续发送两个读取命令,中间需要间隔tRDRD-dg设定值的时钟周期。tWRRD-sg,控制在同一个BG地址发送写入命令后,跟着发送读取命令需要tWRRD-sg设定的时钟周期。

这四种命令和四种地址的搭配,可以变形出16个时序设定,其中tRDRD-sg、tWRWR-sg对内存效能影响最大,基本上每多往上调一个时钟周期,内存在AIDA64读写性能测试的成绩就会往下掉5%-10%左右。这是因为AIDA64读写测试基本上就是一堆读取、一堆写入命令往里砸,才能测出实际的读写带宽,所以这两个时序最影响性能。

tRDRD-sg和tWRWR-sg我们建议超频时都设置为7做起点进行尝试,不稳定时可以以1个时钟周期为间隔往上尝试。如果是三星B Die可以以6为起点做尝试。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部