欢迎光临
我们一直在努力

LPDDR4X时序参数详解:tRCD、tRP、tRAS、tWR到底是什么?

调DDR参数的时候,很多人看到设备树里一堆时序参数就头大:tRCD、tRP、tRAS、tWR、tRFC、tWTR……每个都认识,但不知道具体是什么意思,也不知道怎么调。

 

这篇文章把LPDDR4X的主要时序参数讲清楚,每个参数的物理含义、典型值、调试方法,都梳理一遍。

 

一、先搞懂DDR的一个完整读写周期

 

在讲具体参数之前,先理解DDR的工作流程。DDR不是你想读就能读的,要走一套固定的流程:

 

发送命令 → 行激活 → 等待tRCD → 列读写 → 数据传输 → 预充电 → 等待tRP → 下一行激活

 

具体来说:

 

1. 行激活(Activate):告诉DDR要操作哪一行,这一行的数据从存储阵列读到行缓冲(Row Buffer)

 

2. 等待tRCD:行激活到列读写之间的延迟,等数据稳定

 

3. 列读写(Read/Write):告诉DDR要操作哪一列,开始读或写数据

 

4. 数据传输:Burst长度的数据传输,LPDDR4X默认是16beat(32字节)

 

5. 预充电(Precharge):关闭当前行,把行缓冲的数据写回存储阵列

 

6. 等待tRP:预充电到下一次行激活之间的延迟

 

7. 重复:操作下一行

 

理解了这个流程,时序参数就好懂了——每个参数都是流程中两个步骤之间的最小等待时间。

 

二、核心时序参数详解

 

1. tRCD(RAS to CAS Delay)——行激活到列读写的延迟

 

物理含义: 行激活命令发出后,要等多久才能发列读写命令。这段时间是用来让存储阵列的数据读到行缓冲并稳定下来的。

 

典型值: LPDDR4X-4266下,tRCD约为18ns(对应38个时钟周期)

 

怎么调:

 

tRCD设小了:数据还没稳定就读,会读错

tRCD设大了:浪费时钟周期,降低有效带宽

一般按数据手册的标称值设,不要自己往小调

如果Training时读取出错,可以适当增大tRCD试试

 

2. tRP(Row Precharge Time)——预充电时间

 

物理含义: 预充电命令发出后,要等多久才能发下一次行激活。这段时间是用来把行缓冲的数据写回存储阵列,并复位行缓冲的。

 

典型值: LPDDR4X-4266下,tRP约为18ns(38个时钟周期)

 

怎么调:

 

tRP设小了:预充电没完成就激活下一行,会出错

tRP设大了:跨行操作的延迟变大

和tRCD一样,按标称值设,不要往小调

tRP和tRCD经常设成相同的值,因为物理过程类似

 

3. tRAS(Row Active Time)——行激活最小时间

 

物理含义: 行激活命令发出后,至少要等多久才能发预充电命令。也就是说,一行打开后,至少要保持打开多长时间。

 

典型值: LPDDR4X-4266下,tRAS约为42ns(90个时钟周期)

 

怎么调:

 

tRAS设小了:行打开时间不够,数据还没读完就预充电,会出错

tRAS设大了:行占用时间太长,影响bank间交错效率

tRAS必须大于tRCD + 突发传输时间

一般tRAS = tRCD + tWR + 一些余量

 

4. tWR(Write Recovery Time)——写恢复时间

 

物理含义: 写操作的最后一个数据发出后,要等多久才能发预充电命令。这段时间是用来让写入的数据稳定并锁存到存储阵列的。

 

典型值: LPDDR4X-4266下,tWR约为18ns(38个时钟周期)

 

怎么调:

 

tWR设小了:数据还没写进去就预充电,数据丢失

tWR设大了:写操作后的预充电延迟变大

tWR和tRCD经常设成相同的值

 

5. tRFC(Refresh Cycle Time)——刷新周期时间

 

物理含义: 刷新命令发出后,要等多久才能发下一个命令。刷新是DDR内部的操作,把所有存储单元的数据重新写一遍,防止电容漏电导致数据丢失。

 

典型值: LPDDR4X-4266下,tRFC约为210ns(448个时钟周期)

 

特点:

 

tRFC比其他时序参数大很多,因为刷新是全bank操作,耗时较长

刷新期间,DDR不能响应读写命令,所以刷新会占用总线时间

温度越高,刷新频率越高(tREFI变短),刷新占用的总线时间比例越大

这就是为什么高温下有效带宽会下降——刷新开销变大了

 

6. tWTR(Write to Read Turnaround)——写读切换时间

 

物理含义: 写操作的最后一个数据发出后,要等多久才能发读命令。写读切换时,DDR内部要切换数据方向,需要一定的恢复时间。

 

典型值: LPDDR4X-4266下,tWTR约为10ns(21个时钟周期)

 

怎么调:

 

tWTR设小了:写读切换太快,读数据会出错

交替读写的场景(如视频编解码),tWTR对性能影响较大

 一般按标称值设,不要往小调

 

7. tRTW(Read to Write Turnaround)——读写切换时间

 

物理含义: 读操作的最后一个数据发出后,要等多久才能发写命令。和tWTR相反,是读切换到写的延迟。

 

典型值: LPDDR4X-4266下,tRTW约为8ns(17个时钟周期)

 

三、时序参数速查表

 

注意:以上数值是典型值,具体数值要以你用的颗粒的数据手册为准。不同厂商、不同速率等级的颗粒,时序参数会有差异。

四、调试时序参数的正确姿势

 

很多人调DDR参数,一上来就改tRCD、tRP,结果越调越乱。正确的调试顺序是:

 

第一步:先确认硬件没问题

 

电源电压是否正确(VDDQ 0.6V±5%)

走线等长是否满足(±5mil以内)

阻抗是否正确(单端50Ω,差分100Ω)

去耦电容是否到位

硬件有问题,软件怎么调都没用。

 

第二步:用默认参数跑Training

 

先用数据手册的标称时序参数,跑DDR Training

看Training是否通过,读写是否稳定

如果Training都过不了,先查硬件,不要急着改参数

 

第三步:跑压力测试

 

Training通过后,跑内存压力测试(如memtester、stress-ng)

常温、高温、低温都要跑

跑几个小时不出错,说明参数基本没问题

 

第四步:优化性能(可选)

 

如果稳定性没问题,想优化性能,可以适当减小某些时序参数

每次只改一个参数,改完跑一遍压力测试

不要一次改好几个,出了问题不知道是哪个引起的

性能优化的空间通常不大(5-10%),不要为了这点性能牺牲稳定性

 

五、常见误区

 

误区1:时序参数越小,性能越好

 

错。时序参数是最小等待时间,设小了会出错,设大了只是浪费一点时钟周期。稳定性永远比那点性能重要。工业级产品,稳定运行比什么都重要。

 

误区2:所有颗粒的时序参数都一样

 

错。不同厂商、不同批次、不同速率等级的颗粒,时序参数都可能有差异。换颗粒的时候,要重新确认时序参数,不要直接沿用旧的。

 

误区3:设备树里的时序参数不用管,Bootloader会自动设

 

半对半错。很多SoC的Bootloader会读取DDR颗粒的SPD信息(如果有的话),自动设置时序参数。但LPDDR4X很多颗粒没有SPD,时序参数需要在设备树或Bootloader里手动配置。不要假设它会自动设对,要确认。

 

误区4:tRFC不用管,反正是刷新

 

错。tRFC设小了,刷新不完整,数据会丢失,而且是随机出错,很难排查。tRFC是所有时序参数里最不能往小调的,一定要按标称值设,甚至可以留一点余量。

 

六、总结

 

DDR时序参数看着多,其实核心就那几个:

 

tRCD、tRP、tRAS、tWR、tRFC。理解了DDR的工作流程,每个参数的物理含义就清楚了。

调试的原则是:先硬件后软件,先稳定后性能,每次只改一个参数。

 

我们做汉四ROCFOUR的LPDDR4X方案的时候,会提供经过验证的设备树时序参数和参考配置,客户拿来就能用,不用自己从头调。不同速率等级(3200/3733/4266)、不同容量(2/4/8GB)的配置都有,直接对应就行。

 

有时序参数调试相关的问题,欢迎评论区交流!

赞(0)
未经允许不得转载:171主机测评 » LPDDR4X时序参数详解:tRCD、tRP、tRAS、tWR到底是什么?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址