H03 —— CL-tRCD-tRP-tRAS:内存时序是怎么影响实际延迟的

金句:只看标称频率选内存,就像只看最高时速买汽车——你会错过很多。


什么是内存时序(Timing)

内存时序是描述内存命令之间延迟的几个参数,它们共同决定了内存操作的快慢。

Bash
DDR4 主要时序参数(以 DDR4-3200 CL22 为例):

CL = 22   ← CAS Latency(列访问延迟)
tRCD = 22 ← RAS to CAS Delay(行到列延迟)
tRP = 22  ← Row Precharge Delay(预充电延迟)
tRAS = 36 ← Row Active Time(行激活时间)

这些数字的单位是什么?
  → 是"时钟周期数",不是纳秒!
  → 需要除以实际时钟频率才能换算成 ns

为什么时序参数单位是”周期”不是”ns”

Bash
DDR4-3200 的时钟周期:

DDR4-3200 的传输速率是 3200 MT/s,
但 I/O 时钟是 1600 MHz(DDR,双边沿)。

每个时钟周期 = 1 / 1600 MHz = 0.625 ns

DDR4-3600 的时钟周期:
  传输速率 3600 MT/s → I/O 时钟 1800 MHz
  每个时钟周期 = 1 / 1800 MHz = 0.556 ns

结论:频率越高,时钟周期越短,同样的 CL 数字对应的 ns 延迟越小。

时序参数换算成 ns

Bash
DDR4-3200 CL22 的实际延迟:

CL(ns)= CL / 传输速率 × 2000
        = 22 / 3200 × 2000
        = 13.75 ns

tRCD(ns)= tRCD / 传输速率 × 2000
          = 22 / 3200 × 2000
          = 13.75 ns

DDR4-3600 CL16 的实际延迟:

CL(ns)= 16 / 3600 × 2000 = 8.89 ns
tRCD = 16 / 3600 × 2000 = 8.89 ns

比较:
  DDR4-3200 CL22 → CL = 13.75ns
  DDR4-3600 CL16 → CL = 8.89ns(快 35%!)

这就是为什么 DDR4-3600 CL16 通常比 DDR4-3200 CL22 更快——
即使频率只高了 12.5%,但 CL 延迟从 22 降到 16,
实际延迟减少了 35%。

四个时序参数的含义

Bash
1. CL(CAS Latency):
   从内存控制器发出 READ 命令(列地址)到数据输出有效的时间
   → 最影响随机访问延迟的参数
   → 越低越好

2. tRCD(RAS to CAS Delay):
   从 ACT(激活行)命令到 READ/WRITE(列访问)命令的间隔
   → 打开一个新行所需的最小时间
   → 越低越好,但受到 DRAM 颗粒内部限制

3. tRP(Row Precharge Delay):
   PRE(预充电)命令到 ACT(再激活)命令的间隔
   → 关闭当前行所需的时间
   → 行切换时会遇到

4. tRAS(Row Active Time):
   ACT 命令之后,行必须保持打开的最短时间
   → 如果 tRAS 太短,可能导致数据丢失(还没读完就开始预充电)
   → 通常 ≈ tRCD + tRC(实际取决于颗粒)

为什么时序参数无法随意降低

Bash
时序参数的物理限制:

DRAM 颗粒内部的 Cell 访问需要时间:
  - Row 打开:Sense Amplifier 需要时间稳定(tRCD)
  - 列访问:数据从 Cell 传到 IO 路径(tCCD)
  - 预充电:Bit Line 需要时间放电,为下次访问做准备(tRP)

这些是 DRAM 晶体管的物理特性,无法随意压缩。

但 JEDEC 标准给了一个权衡:
  - 同一颗粒,高频率 = 不得不放宽时序(否则无法稳定)
  - 低频率 = 可以用更紧的时序(更低的 CL)

例如 DDR4-2400 最低可以 CL14
    DDR4-3200 最低是 CL22
    DDR4-3600 最低是 CL18

时序和频率的权衡:哪个更重要

Bash
选择 DDR4-3200 CL14 vs DDR4-3600 CL18:

DDR4-3200 CL14:
  CL(ns) = 14/3200*2000 = 8.75ns
  带宽 = 25.6 GB/s

DDR4-3600 CL18:
  CL(ns) = 18/3600*2000 = 10ns
  带宽 = 28.8 GB/s(+12.5%)

带宽:DDR4-3600 赢(+12.5%)
延迟:DDR4-3200 CL14 赢(8.75ns vs 10ns)

实际场景选择:
  - 延迟敏感(游戏、数据库):DDR4-3200 CL14 更好
  - 带宽敏感(AI 推理、图像处理):DDR4-3600 CL18 更好

DDR5 的情况更复杂:
  DDR5-4800 CL40 → CL(ns) = 40/4800*2000 = 16.67ns
  虽然 CL 数字很大,但实际 ns 延迟并不夸张
  DDR5 的优势在于带宽(DDR5-4800 双通道 76.8 GB/s)
  延迟比 DDR4 差,但带宽是 DDR4 的 2

怎么看内存时序表

Bash
内存时序表(取自某 DDR4-3200 8GB×2 的规格):

Specification         DDR4-2400    DDR4-2666    DDR4-3200
Clock Rate (MHz)        1200         1333         1600
Data Rate (MT/s)        2400         2666         3200
CL                      16           19           22
tRCD                    16           19           22
tRP                     16           19           22
tRAS                    32           38           36

从 DDR4-2400 CL16 到 DDR4-3200 CL22:
  频率提升 33%(24003200)
  CL 周期数增加 37%(1622)
  实际 CL(ns) = 13.33ns(2400) vs 13.75ns(3200)→ 接近!

DDR4 的实际 CL 延迟随频率变化不大(基本在 13~15ns 之间)
DDR5 的 CL 延迟更高(16~20ns),但带宽是绝对优势

总结

  • 时序参数:CL、tRCD、tRP、tRAS 的单位是”时钟周期数”,不是 ns
  • 频率换算延迟(ns) = 参数 / MT/s × 2000
  • DDR4-3200 CL22:延迟 = 22/3200×2000 = 13.75ns
  • DDR4-3600 CL16:延迟 = 16/3600×2000 = 8.89ns(快 35%!)
  • DDR5 CL40:延迟 = 40/4800×2000 = 16.67ns(比 DDR4 差,但带宽是 2 倍)
  • 频率 vs 时序:延迟敏感选更紧时序(DDR4 低频),带宽敏感选更高频率(DDR5)
  • DDR4 的 CL 延迟:不同频率的 CL(ns) 基本都在 13~15ns 之间,变化不大

下篇预告(H04):XMP 和 EXPO 是什么?你的内存标称 3200,但为什么可以在 3600 下运行?内存超频的原理和风险。


关注公众号「AI不着急」,回复”资料”获取内存学习路线图。

最后修改: 2024年4月26日

作者

评论

发表评论

您的邮箱地址不会被公开。