欢迎光临
我们一直在努力

DRAM内存访问协议核心解析:DRAM命令交互与时序约束全解(JEDEC通用标准)

在上一篇内容中,我们系统拆解了DRAM内存访问协议的五大基础命令、核心时序参数与完整读写周期。本文将深入解析DRAM命令交互的核心规则与时序约束,这是内存控制器实现高效命令调度、最大化内存带宽利用率、最小化访问延迟的核心底层逻辑。

本文介绍的通用命令交互规则,基于DRAM的资源占用模型,可广泛适用于SDRAM、DDR/DDR2/DDR3 SDRAM等主流内存系统,同时覆盖开页/闭页管理策略、Bank冲突、读写切换、跨Rank访问等全场景的最小调度间隔计算,是深入理解DDR内存协议的核心内容。

一、DRAM命令交互的核心基础

1.1 资源占用模型

整个DRAM命令交互体系,都建立在资源占用模型之上。该模型的核心逻辑是:只要两个DRAM命令不会在同一时间抢占共享硬件资源,就可以在设备内实现完全流水线化的连续调度。

DRAM的共享资源分为两类:

-片上共享资源:Bank内的灵敏放大器、全Bank共享的I/O门控多路复用器、读写驱动电路等

-片外共享资源:内存控制器与DRAM之间的命令总线、地址总线、数据总线

即便共享资源处于可用状态,DRAM设备的峰值电流与功耗限制,也会通过tRRD、tFAW等时序参数,进一步约束命令的下发速率,避免设备功耗与温度超标。

1.2 行缓冲区管理策略

DRAM命令的交互逻辑与调度复杂度,直接由内存系统的行缓冲区管理策略决定,主流分为两类:

1.开页内存系统:某一行被激活后,灵敏放大器会持续保持该行数据有效,直到同一Bank的跨行访问触发预充电操作。该策略依赖内存访问的空间局部性,同一行的多次访问无需重复执行行激活-预充电流程,能大幅降低访问延迟与功耗,但命令调度需要跟踪每个Bank的行状态,复杂度更高。

2.闭页内存系统:每次读写访问完成后,立即执行预充电操作复位Bank,快速准备好下一次跨行访问。该策略适合空间局部性差、随机跨行的内存访问场景,控制器设计更简单,但随机访问会产生完整的行周期开销。

二、同Rank连续读写命令的流水线调度

对于同一Rank内已激活的开页,连续的列读/列写命令可实现无冲突流水线调度,是内存带宽最大化的理想场景。

2.1 同Rank连续读命令

同一Rank内,无论目标是同一Bank的同一开页,还是不同Bank的已开页,连续列读命令都可实现流水线调度。

图片

Figure 11.12 – Consecutive column-read commands to the same bank, rank, and channel(同一Bank、Rank、通道的连续列读命令)

该场景的核心时序规则:

  • 连续列读命令的最佳调度间隔为 MAX(tBURST, tCCD),由数据突发时长和设备内部预取长度共同决定

  • 对于SDRAM、DDR、DDR2 SDRAM,tBURST天然大于tCCD,因此调度间隔由tBURST决定

  • 对于DDR3 SDRAM,预取长度提升至8个数据节拍,tCCD为4个周期,此时调度间隔需取两者的最大值

2.2 同Rank连续写命令

与连续读命令一致,同一Rank内不同开页的连续列写命令,最佳调度间隔同样为 MAX(tBURST, tCCD),可实现无冲突流水线执行。

三、读写命令与预充电命令的交互时序

预充电命令负责关闭当前激活的行,是闭页系统的核心操作,其与读写命令的时序约束,直接决定了跨行访问的最小间隔。

3.1 读到预充电时序

列读命令后紧跟预充电命令,需满足核心时序约束,保障读操作完成前,灵敏放大器不会被预充电复位。

图片

Figure 11.13 – Read to precharge command timing(读至预充电命令时序)

核心时序公式:

  • 基础最小间隔:tBURST + tRTP – tCCD

  • 当设备内部突发长度tCCD与总线突发时长tBURST相等时,最小间隔简化为tRTP(读至预充电延迟)

  • 通用计算公式:tRTP + (N-1)×tCCD,其中N为构建单次总线突发所需的内部突发数量

  • 若使用带Posted CAS的列读命令,需额外叠加附加延迟tAL,公式变为:tAL + tBURST + tRTP – tCCD

3.2 写到预充电时序

列写命令后紧跟预充电命令,需保障写数据完整写入DRAM存储单元后,再执行预充电操作,核心约束为写恢复时间tWR。

图片

Figure 11.24 – Write to precharge command timing(写至预充电命令时序)

核心时序规则:

  • 列写命令到预充电命令的最小间隔,必须满足tCWD + tBURST + tWR

  • 与写到读切换的tWTR不同,tWR要求数据完全写入存储单元,而tWTR仅要求I/O门控资源释放,因此tWR的时长通常显著大于tWTR

  • 若使用带Posted CAS的列写命令,需额外叠加附加延迟tAL,公式变为:tAL + tCWD + tBURST + tWR

四、同Bank跨行访问的命令交互与Bank冲突

同一Bank内,对不同行的访问会触发Bank冲突,必须先执行预充电关闭当前行,再重新激活新行,产生完整的行周期开销,是DRAM随机访问延迟的核心来源。

4.1 同Bank跨行连续读命令

该场景分为最佳与最差两种极端情况,时序差异极大。

最佳场景

前提条件:前序行访问命令已满足tRAS最小要求,数据已完成回写到存储单元,可立即执行预充电。

图片

Figure 11.14 – Consecutive column-read commands to different rows of the same bank: best-case scenario(同一Bank不同行的连续列读命令:最佳场景)

最小调度间隔公式:tBURST + tRTP – tCCD + tRP + tRCD

最差场景

前提条件:列读命令在tRCD满足后立即发出,此时tRAS尚未达标,预充电命令必须等待tRAS满足后才能下发。

图片

Figure 11.15 – Consecutive column-read commands to different rows of same bank: worst-case scenario(同一Bank不同行的连续列读命令:最差场景)

最小调度间隔公式:tRAS + tRP + tRCD = tRC + tRCD,直接产生完整的行周期开销。

4.2 同Bank跨行连续写命令

同Bank跨行的连续写命令,除了行周期约束外,还需额外满足写恢复时间tWR的要求。

图片

Figure 11.20 – Consecutive write commands, bank conflict, best cases(连续写命令,Bank冲突,最佳场景)

最佳场景最小调度间隔公式:tCWD + tBURST + tWR + tRP + tRCD

4.3 同Bank写后读跨行访问

写命令后对同一Bank的不同行发起读访问,需同时满足写恢复时间与行周期的双重约束。

图片

Figure 11.26 – Read following write to different rows of the same bank(同一Bank不同行的写后读访问)

最佳场景最小调度间隔公式:tCWD + tBURST + tWR + tRP + tRCD

五、跨Bank访问的命令交互与冲突优化

不同Bank之间的硬件资源相互独立,理想情况下可并行执行操作,但如果目标Bank存在行冲突,仍会产生预充电-行激活的开销,可通过控制器的命令重排序大幅优化性能。

5.1 跨Bank读冲突:无命令重排序

前提条件:第二个读请求的目标Bank存在行冲突,且控制器不支持命令重排序,必须按顺序执行完第一个请求的所有命令,再执行第二个请求的命令。

图片

Figure 11.16 – Consecutive DRAM read commands to different banks; bank conflict; no command reordering(不同Bank的连续DRAM读命令;Bank冲突;无命令重排序)

最小调度间隔:tRP + tRCD

5.2 跨Bank读冲突:支持命令重排序

若控制器支持命令重排序,可提前下发冲突Bank的预充电命令,与第一个读请求的列读操作并行执行,进一步压缩调度间隔。

图片

Figure 11.17 – Consecutive DRAM read commands to different banks, bank conflict, with command reordering(不同Bank的连续DRAM读命令,Bank冲突,支持命令重排序)

最小调度间隔:tRP + tRCD – tCMD

5.3 跨Bank读后写冲突

读命令后,对不同Bank的冲突行发起写访问,无命令重排序的最佳场景下,最小调度间隔为tCMD + tRP + tRCD。

图片

Figure 11.22 – Write command following read command to different banks: bank conflict, best case(不同Bank的读后写命令:Bank冲突,最佳场景)

5.4 跨Bank写后读冲突

写命令后,对不同Bank的冲突行发起读访问,无命令重排序的最佳场景下,最小调度间隔取两个值的最大值:MAX(tCMD + tRP + tRCD, tCWD + tBURST + tWR)。

图片

Figure 11.27 – Read following write to different banks, bank conflict, best case(不同Bank的写后读访问,Bank冲突,最佳场景)

  • 若行冲突的预充电-激活流程耗时更久,调度间隔由tRP + tRCD决定

  • 若写操作的写恢复流程耗时更久,调度间隔由写操作的完整时长决定,避免共享I/O资源冲突

六、跨Rank访问的命令交互与时序开销

不同Rank共享数据总线,但拥有独立的Bank硬件资源,核心约束来自共享总线的切换开销,而非Bank内的资源冲突。

6.1 跨Rank连续读命令

跨Rank的连续读命令,核心开销来自数据总线的DQS数据选通信号重同步时间tRTRS,避免不同Rank的数据在总线上冲突。

图片

Figure 11.18 – Consecutive column-read commands to different ranks(不同Rank的连续列读命令)

核心时序规则:

  • 跨Rank连续读命令的最小调度间隔为tBURST + tRTRS

  • 低频SDRAM、Direct RDRAM系统中,无需DQS重同步,tRTRS=0,可无缝流水线调度

  • DDR/DDR2 SDRAM系统中,tRTRS通常为1个完整时钟周期,会产生总线气泡

6.2 跨Rank连续写命令

与跨Rank读不同,写命令由内存控制器主导总线控制权,无需释放总线,理想情况下可无缝调度。但DDR2及后续设备的片上终端(ODT)切换,会引入额外的时序开销。

图片

Figure 11.19 – Consecutive column-write commands to different ranks(不同Rank的连续列写命令)

核心时序规则:

  • SDRAM、DDR SDRAM系统中,无ODT切换开销,跨Rank连续写命令可按tBURST间隔调度

  • DDR2/DDR3 SDRAM系统中,ODT开关切换时间tOST会引入额外开销,最小调度间隔为tBURST + tOST

  • 由于tRTRS通常大于等于tOST,工程中常统一用MAX(tRTRS, tOST)简化计算

6.3 跨Rank写后读命令

跨Rank的写后读访问,不存在同Rank的I/O门控资源冲突,仅需考虑总线同步与读写时序的相对偏移。

图片

Figure 11.25 – Read following write to different ranks of DRAM devices(不同Rank DRAM设备的写后读访问)

最小调度间隔公式:tCWD + tBURST + tRTRS – tCAS

  • DDR2 SDRAM系统中,tCWD = tCAS – 1,若tRTRS=1,公式可简化为tBURST,实现无额外开销的无缝调度

  • DDR SDRAM系统中,tCWD=1、tRTRS=1,最小间隔为MAX(tCMD, tBURST – tCAS – 2)

七、读写切换的核心时序约束

读写命令的方向切换,是DRAM总线调度的核心难点,同Rank内的读写切换会引入显著的时序开销,是内存带宽利用率的关键瓶颈之一。

7.1 同Rank开页读后写切换

同Rank内,列读命令后紧跟列写命令,核心约束是避免读数据与写数据在总线上冲突,无需考虑内部I/O资源冲突。

图片

Figure 11.21 – Write command following read command to open banks(开页下读后续写命令)

最小调度间隔公式:tCAS + tBURST + tRTRS – tCWD

  • SDRAM系统中,tCWD=0、tRTRS=0,最小间隔简化为tCAS + tBURST

  • DDR SDRAM系统中,tCWD=1、tRTRS=1,最小间隔同样简化为tCAS + tBURST,两种协议通过不同的参数抵消,最终结果一致

7.2 同Rank开页写后读切换

同Rank内,列写命令后紧跟列读命令,是开销更大的切换场景,核心约束是共享I/O门控资源的释放,必须等待写操作完成内部数据传输后,读命令才能使用I/O资源。

图片

Figure 11.23 – Read following write to the same rank of DRAM devices(同Rank DRAM设备的写后读访问)

最小调度间隔公式:tCWD + tBURST + tWTR

  • 该约束与目标Bank无关,只要是同Rank内的写后读切换,都必须满足tWTR(写至读延迟)要求

  • 高端DRAM设备(如Direct RDRAM)通过内置写缓冲区,可大幅降低该开销,写数据进入缓冲区后即可释放I/O资源,无需等待写入存储单元

八、复合命令的交互时序规则

在11.1章节中我们介绍了列读写+自动预充电的复合命令,其核心交互时序与独立命令一致,但需满足设备内置的时序保护机制。

8.1 列读-预充电复合命令时序

复合命令将列读与预充电合并为单条命令,其内部的预充电动作,需同时满足读到预充电时序与tRAS最小要求。

图片

Figure 11.28 – Row access to column-read-and-precharge command timing(行访问到列读-预充电复合命令的时序)

核心时序规则:

  • 行访问命令到复合读命令的最小下发间隔为tRCD – tAL,Posted CAS模式下可提前下发

  • 复合命令的内部预充电动作,默认在tAL + tBURST + tRTP – tCCD后执行

  • 若此时tRAS尚未满足,DRAM设备会自动延迟预充电动作,直到tRAS达标,无需控制器干预,即tRAS锁定机制

8.2 列写-预充电复合命令时序

列写-预充电复合命令的时序约束更简单,由于tRAS的最小定义已覆盖单条列写命令的完整流程,无需额外的时序锁定。

图片

Figure 11.29 – Row access to column-write-and-precharge command timing(行访问到列写-预充电复合命令的时序)

核心时序规则:

  • 行访问命令满足tRCD要求后,即可下发列写-预充电复合命令

  • 设备会自动在写操作完成、满足tWR要求后,执行内部预充电动作

  • DRAM设备通常为写周期受限设计,tRAS默认预留了单条写命令的时序余量,不会出现时序违规

九、DRAM命令最小时序约束汇总表

下表汇总了所有基础DRAM命令组合的最小调度间隔公式,覆盖行访问、列读、列写、预充电、刷新五大核心命令的全场景交互,是内存控制器设计、时序仿真的核心参考。

表11.4 DRAM命令最小时序约束方程汇总

前序命令(Prev)

后续命令(Next)

Rank

Bank

最小时序约束

对应图示

备注

A(行访问)

A(行访问)

S(同)

S(同)

tRC

Figure   11.8

A(行访问)

A(行访问)

S(同)

d(不同)

tRRD

Figure   11.32

同Rank第5次行激活需额外满足tFAW约束

P(预充电)

A(行访问)

S(同)

d(不同)

tRP

Figure   11.6

F(刷新)

A(行访问)

S(同)

S(同)

tRFC

Figure   11.7

A(行访问)

R(列读)

S(同)

S(同)

tRCD –   tAL

Figure   11.11

无Posted CAS命令时tAL=0

R(列读)

R(列读)

S(同)

a(任意)

MAX(tBURST,   tCCD)

Figure   11.12

tBURST为同Rank前序CAS命令的突发时长

R(列读)

R(列读)

d(不同)

a(任意)

tBURST +   tRTRS

Figure   11.18

tBURST为不同Rank前序CAS命令的突发时长

W(列写)

R(列读)

S(同)

a(任意)

tCWD +   tBURST + tWTR

Figure   11.23

tBURST为同Rank前序CASW命令的突发时长

W(列写)

R(列读)

d(不同)

a(任意)

tCWD +   tBURST + tRTRS – tCAS

Figure   11.25

tBURST为不同Rank前序CASW命令的突发时长

A(行访问)

W(列写)

S(同)

S(同)

tRCD –   tAL

Figure   11.11

无Posted CAS命令时tAL=0

R(列读)

W(列写)

a(任意)

a(任意)

tCAS +   tBURST + tRTRS – tCWD

Figure   11.21

tBURST为任意Rank前序CAS命令的突发时长

W(列写)

W(列写)

S(同)

a(任意)

MAX(tBURST,   tCCD)

Figure   11.19

tBURST为同Rank前序CASW命令的突发时长

W(列写)

W(列写)

d(不同)

a(任意)

tBURST +   tOST

Figure   11.21

tBURST为不同Rank前序CASW命令的突发时长

A(行访问)

P(预充电)

S(同)

S(同)

tRAS

Figure   11.8

R(列读)

P(预充电)

S(同)

S(同)

tAL +   tBURST + tRTP – tCCD

Figure   11.13

tBURST为同Rank前序CAS命令的突发时长

W(列写)

P(预充电)

S(同)

S(同)

tAL +   tCWD + tBURST + tWR

Figure   11.24

tBURST为同Rank前序CASW命令的突发时长

F(刷新)

F(刷新)

S(同)

a(任意)

tRFC

Figure   11.7

P(预充电)

F(刷新)

S(同)

a(任意)

tRP

Figure   11.6

注:A=行访问;R=列读;W=列写;P=预充电;F=刷新;S=同;d=不同;a=任意

赞(0)
未经允许不得转载:171主机测评 » DRAM内存访问协议核心解析:DRAM命令交互与时序约束全解(JEDEC通用标准)
分享到: 更多 (0)

评论 抢沙发

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