DRAM Timing

在本中,我们将详细的介绍各个操作的时序。

1. Overview


如上图所示,SDRAM 的相关操作在内部大概可以分为以下的几个阶段:

  1. Command transport and decode

    在这个阶段,Host 端会通过 Command Bus 和 Address Bus 将具体的 Command 以及相应参数传递给 SDRAM。SDRAM 接收并解析 Command,接着驱动内部模块进行相应的操作。

  2. In bank data movement

    在这个阶段,SDRAM 主要是将 Memory Array 中的数据从 DRAM Cells 中读出到 Sense Amplifiers,或者将数据从 Sense Amplifiers 写入到 DRAM Cells。

  3. In device data movement

    这个阶段中,数据将通过 IO 电路缓存到 Read Latchs 或者通过 IO 电路和 Write Drivers 更新到 Sense Amplifiers。

  4. System data transport

    在这个阶段,进行读数据操作时,SDRAM 会将数据输出到数据总线上,进行写数据操作时,则是 Host 端的 Controller 将数据输出到总线上。

在上述的四个阶段中,每个阶段都会有一定的耗时,例如数据从 DRAM Cells 搬运到 Read Latchs 的操作需要一定的时间,因此在一个具体的操作需要按照一定时序进行。

同时,由于内部的一些部件可能会被多个操作使用,例如读数据和写数据都需要用到部分 IO 电路,因此多个不同的操作通常不能同时进行,也需要遵守一定的时序。

此外,某些操作会消耗很大的电流,为了满足 SDRAM 设计上的功耗指标,可能会限制某一些操作的执行频率。

基于上面的几点限制,SDRAM Controller 在发出 Command 时,需要遵守一定的时序和规则,这些时序和规则由相应的 SDRAM 标准定义。在后续的小节中,我们将对各个 Command 的时序进行详细的介绍。

2. 时序图例

后续的小节中,我们将通过下图类似的时序图,来描述各个 Command 的详细时序。

上图中,Clock 信号是由 SDRAM Controller 发出的,用于和 DRAM 之间的同步。在 DDRx 中,Clock 信号是一组差分信号,在本文中为了简化描述,将只画出其中的 Positive Clock。

Controller 与 DRAM 之间的交互,都是以 Controller 发起一个 Command 开始的。从 Controller 发出一个 Command 到 DRAM 接收并解析该 Command 所需要的时间定义为 tCMD,不同类型的 Command 的 tCMD 都是相同的。

DRAM 在成功解析 Command 后,就会根据 Command 在内部进行相应的操作。从 Controller 发出 Command 到 DRAM 执行完 Command 所对应的操作所需要的时间定义为 tParam。不同类型的 Command 的 tParam 可能不一样,相同 Command 的 tParam 由于 Command 参数的不同也可能会不一样。

3. Row Active Command

在进行数据的读写前,Controller 需要先发送 Row Active Command,打开 DRAM Memory Array 中的指定的 Row。Row Active Command 的时序如下图所示:

Row Active Command 可以分为两个阶段:

3.1 Row Sense

Row Active Command 通过地址总线指明需要打开某一个 Bank 的某一个 Row。

DRAM 在接收到该 Command 后,会打开该 Row 的 Wordline,将其存储的数据读取到 Sense Amplifiers 中,这一时间定义为 tRCD(RCD for Row Address to Column Address Delay)。

DRAM 在完成 Row Sense 阶段后,Controller 就可以发送 Read 或 Write Command 进行数据的读写了。这也意味着,Controller 在发送 Row Active Command 后,需要等待 tRCD 时间才能接着发送 Read 或者 Write Command 进行数据的读写。

3.2 Row Restore

由于 DRAM 的特性,Row 中的数据在被读取到 Sense Amplifiers 后,需要进行 Restore 的操作(细节请参考 DRAM Storage Cell 文中的描述)。Restore 操作可以和数据的读取同时进行,即在这个阶段,Controller 可能发送了 Read Command 进行数据读取。

DRAM 接收到 Row Active Command 到完成 Row Restore 操作所需要的时间定义为 tRAS(RAS for Row Address Strobe)。
Controller 在发出一个 Row Active Command 后,必须要等待 tRAS 时间后,才可以发起另一次的 Precharge 和 Row Access。

4. Column Read Command

Controller 发送 Row Active Command 并等待 tRCD 时间后,再发送 Column Read Command 进行数据读取。
数据 Burst Length 为 8 时的 Column Read Command 时序如下图所示:

Column Read Command 通过地址总线 A[0:9] 指明需要读取的 Column 的起始地址。DRAM 在接收到该 Command 后,会将数据从 Sense Amplifiers 中通过 IO 电路搬运到数据总线上。

DRAM 从接收到 Command 到第一组数据从数据总线上输出的时间称为 tCAS(CAS for Column Address Strobe),也称为 tCL(CL for CAS Latency),这一时间可以通过 mode register 进行配置,通常为 3~5 个时钟周期。

DRAM 在接收到 Column Read Command 的 tCAS 时间后,会通过数据总线,将 n 个 Column 的数据逐个发送给 Controller,其中 n 由 mode register 中的 burst length 决定,通常可以将 burst length 设定为 2、4 或者 8。

开始发送第一个 Column 数据,到最后一个 Column 数据的时间定义为 tBurst。

5. Column Write Command

Controller 发送 Row Active Command 并等待 tRCD 时间后,再发送 Column Write Command 进行数据写入。数据 Burst Length 为 8 时的 Column Write Command 时序如下图所示:

Column Write Command 通过地址总线 A[0:9] 指明需要写入数据的 Column 的起始地址。Controller 在发送完 Write Command 后,需要等待 tCWD (CWD for Column Write Delay) 时间后,才可以发送待写入的数据。tCWD 在一些描述中也称为 tCWL(CWL for Column Write Latency)

tCWD 在不同类型的 SDRAM 标准有所不同:

DRAM 接收完数据后,需要一定的时间将数据写入到 DRAM Cells 中,这个时间定义为 tWR(WR for Write Recovery)。

6. Precharge Command

在 DRAM Storage Cell 章节中,我们了解到,要访问 DRAM Cell 中的数据,需要先进行 Precharge 操作。相应地,在 Controller 发送 Row Active Command 访问一个具体的 Row 前, Controller 需要发送 Precharge Command 对该 Row 所在的 Bank 进行 Precharge 操作。

下面的时序图描述了 Controller 访问一个 Row 后,执行 Precharge,然后再访问另一个 Row 的流程。

DRAM 执行 Precharge Command 所需要的时间定义为 tRP(RP for Row Precharge)。Controller 在发送一个 Row Active Command 后,需要等待 tRC(RC for Row Cycle)时间后,才能发送第二个 Row Active Command 进行另一个 Row 的访问。

从时序图上我们可以看到,tRC = tRAS + tRP,tRC 时间决定了访问 DRAM 不同 Row 的性能。在实际的产品中,通常会通过降低 tRC 耗时或者在一个 Row Cycle 执行尽可能多数据读写等方式来优化性能。

NOTE:
在一个 Row Cycle 中,发送 Row Active Command 打开一个 Row 后,Controller 可以发起多个 Read 或者 Write Command 进行一个 Row 内的数据访问。这种情况下,由于不用进行 Row 切换,数据访问的性能会比需要切换 Row 的情况好。
在一些产品上,DRAM Controller 会利用这一特性,对 CPU 发起的内存访问进行调度,在不影响数据有效性的情况下,将同一个 Row 上的数据访问汇聚到一直起执行,以提供整体访问性能。

7. Row Refresh Command

一般情况下,为了保证 DRAM 数据的有效性,Controller 每隔 tREFI(REFI for Refresh Interval) 时间就需要发送一个 Row Refresh Command 给 DRAM,进行 Row 刷新操作。DRAM 在接收到 Row Refresh Command 后,会根据内部 Refresh Counter 的值,对所有 Bank 的一个或者多个 Row 进行刷新操作。

DRAM 刷新的操作与 Active + Precharge Command 组合类似,差别在于 Refresh Command 是对 DRAM 所有 Bank 同时进行操作的。下图为 DRAM Row Refresh Command 的时序图:

DRAM 完成刷新操作所需的时间定义为 tRFC(RFC for Refresh Cycle)。

tRFC 包含两个部分的时间,一是完成刷新操作所需要的时间,由于 DRAM Refresh 是同时对所有 Bank 进行的,刷新操作会比单个 Row 的 Active + Precharge 操作需要更长的时间;tRFC 的另一部分时间则是为了降低平均功耗而引入的延时,DRAM Refresh 操作所消耗的电流会比单个 Row 的 Active + Precharge 操作要大的多,tRFC 中引入额外的时延可以限制 Refresh 操作的频率。

8. Read Cycle

一个完整的 Burst Length 为 4 的 Read Cycle 如下图所示:

9. Read Command With Auto Precharge
DRAM 还可以支持 Auto Precharge 机制。在 Read Command 中的地址线 A10 设为 1 时,就可以触发 Auto Precharge。此时 DRAM 会在完成 Read Command 后的合适的时机,在内部自动执行 Precharge 操作。

Read Command With Auto Precharge 的时序如下图所示:

Auto Precharge 机制的引入,可以降低 Controller 实现的复杂度,进而在功耗和性能上带来改善。

10. Additive Latency

在 DDR2 中,又引入了 Additive Latency 机制,即 AL。通过 AL 机制,Controller 可以在发送完 Active Command 后紧接着就发送 Read 或者 Write Command,而后 DRAM 会在合适的时机(延时 tAL 时间)执行 Read 或者 Write Command。时序如下图所示:


Additive Latency 机制同样是降低了 Controller 实现的复杂度,在功耗和性能上带来改善。

11. DRAM Timing 设定

上述的 DRAM Timing 中的一部分参数可以编程设定,例如 tCAS、tAL、Burst Length 等。这些参数通常是在 Host 初始化时,通过 Controller 发起 Load Mode Register Command 写入到 DRAM 的 Mode Register 中。DRAM 完成初始化后,就会按照设定的参数运行。

DRAM Timing相关推荐

  1. DRAM BRANK

    DDR内部组成 DDR内部是由多个存储阵列组成的,我们称这些存储阵列为bank,早期的SDRAM内部分割成两个bank,后来是4个,这是SDRAM规范中规定的最大bank数,在DDR2标准中,BANK ...

  2. 内存中的rank跟bank有什么区别

    Rank是JEDEC创造的名词,系指在内存模组上的内存区块.倘若系统资料位元宽度是64bit,则每一个Rank就必须是64bit,当内存模组上有第二组64bit内存区块时,就称此模组为Double R ...

  3. PC-如何提高计算机的启动和关机的速度?

    如何提高计算机的启动和关机的速度? 一.bios的优化设置 在bios设置的首页我们进入"advanced bios features"选项,将光标移到"frist bo ...

  4. 十五步骤手把手学会制作网吧XP母盘制作

    中国网吧在线 ->  网吧大学 -  技术学院 - 网管技术 - 正文 十五步骤手把手学会制作网吧XP母盘制作 2008-4-9 12:35:05 来源: 中国网吧在线 编辑:陈峰 [网友评论] ...

  5. BIOS详情设置续一

    高级芯片组特征 Configure DRAM Timing(设置内存时钟) 此设置决定DRAM 的时钟设置是否由读取内存模组上的SPD(Serial PresenceDetect)EPROM 内容决定 ...

  6. 让计算机启动更快的十五招

    嫌计算机启动太慢是每个计算机迷的共同心病,让计算机启动更快是大家的共同心愿,本人在使用计算机过程中总结了加快计算机启动速度的"十五式",与您分享. 一.bios的优化设置 在bio ...

  7. BIOS基础知识(上)

    BIOS全名为(basic input output system)即基本输入/输出系统,是电脑中最基础的而又最重要的程序.我们把这一段程序存放在一个不需要电源的记忆体(芯片)中,这就是平时所说的bi ...

  8. 戴尔电脑如何设置快速开机

    戴尔台式电脑如何设置快速开机,每次开机过程都要等很久,以前不是这样子的,以前大概10秒钟就可以了,自从给电脑公司的人修过以后就变成这样子了.现在每次开机出现 optiplex 170L series ...

  9. 华为服务器开启xmp后系统信息会变吗,XMP是什么?教你开启XMP瞬间提升内存性能...

    XMP是什么?XMP技术,就是Intel用在内存上的一种优化技术,可以自动超频,Intel推出了Extreme Memory技术,并制定了Intel Extreme Memory Profiles ( ...

  10. 电脑速度变慢的原因及处理方法

    对于关机慢的解释: 1.开始 运行msconfig回车,启动,勾选杀毒 软件,防火墙,输入法ctfmon三个其他的勾都去掉,确定,关闭,重起 电脑看看 2. 下载关机加速补丁,然后直接导入注册表在XP ...

最新文章

  1. Swaks - SMTP界的瑞士军刀
  2. POE交换机应用技术知识大全
  3. 2018年最后一个月最值得关注的13个优质公号
  4. 公用计算机管理,如何管理公用计算机和私人计算机的文件访问
  5. 解决Fast api打印两次日志的问题
  6. [JavaScript语法学习]重新认识JavaScript
  7. Android获取安装应用Apk包大小 缓存大小 getPackageSizeInfo StorageManager
  8. 人脸数据库收集——深度学习
  9. 在Realview MDK中添加自己的FLASH编程算法
  10. 大白菜u盘装linux视频教程,大白菜超级U盘教你怎么装系统
  11. linux下编写脚本从ftp服务器定时下载文件
  12. 看计划排产软件在纺织业的应用
  13. 复合梯形公式C语言程序,求运用c++来实现复合梯形公式的代码
  14. vue项目打包App
  15. 净现值与投资准则 - 财务管理(八)
  16. 【SPSS】百分位数计算方法探讨:SPSS计算差异
  17. [BZOJ1616][Usaco2008 Mar]Cow Travelling游荡的奶牛(dfs||dp)
  18. 怎么用计算机打出一个开关,键盘开关是哪一个键 关机的方法介绍
  19. 夏洛克和他的女朋友(AcWing 1293)
  20. 机器学习(十二):CS229ML课程笔记(8)——K-means,EM算法

热门文章

  1. 宏基笔记本linux系统安装图解,宏基Aspire 4738ZG在linpus linux下安装XP系统教程
  2. 复数,实数,幂函数,指数函数
  3. 局域网访问虚拟机里的应用,以可道云 kod为例
  4. 网站在线工具查询链接收录与优化文章收录情况
  5. 上海二工大 - 健康日报AutoCheck
  6. 计算机电源故障维修方法,atx电源维修方法 atx电源常见故障【详细介绍】
  7. cv::HOGDescriptor compute()错误的参数设置导致free(): corrupted unsorted chunks错误
  8. 前馈神经网络求解XOR问题
  9. python编程快速上手 ----让繁琐的工作自动化 (2.自动化任务)
  10. 进击的巨人和枪王黑泽两部漫画的观后感