资料来源

1.https://zhuanlan.zhihu.com/p/343262874

(1)主要讲DRAM刷新的内容: 为什么需要刷新(漏电流导致电容电荷的流失)? 刷新的本质(对存储数据的电容进行充电操作,防止表示数据 1 的电荷因为漏电流的原因随时间流失)?刷新的间隔(不能太长,也不能太短;太长不能保证数据正确性,太短影响正常读写操作)? DRAM刷新命令以及DRAM刷新时序参数(tREFI, tREFC)? DRAM超前延后刷新命令;

(2) 该处的刷新由memory controller和 DRAM 颗粒内部电路共同实现.MC 以发送刷新命令的方式通知 DRAM 颗粒进行刷新;DRAM 颗粒内部电路则负责进行刷新操作。

2. https://zhuanlan.zhihu.com/p/346528173

(1) 主要讲DRAM self refresh内容;”自“刷新,即无需控制器发出刷新命令(但是memory controller需要发出SRE命令,让DRAM进入self refresh模式),DRAM 基于内部的定时器进行定时刷新.自刷新与刷新同样是用于保持DRAM内的数据;

(2) 什么场景下,需要使用DRAM self refresh(如系统进入低功耗模式)?

(3) 多种self refresh模式以适应不同工作温度范围,高温会加大漏电流的影响,需要提升刷新频率(通过配置寄存器进行模式的选择)?

(4) 进入self refresh状态前,DRAM的状态? 参考DDR spec状态转换图可知,进入self refresh前,DRAM需处于idle状态; 进入self refresh状态后,可以停掉外部时钟,以减少功耗;但是,停掉的时钟必须在退出self refresh状态前重新启动并稳定;

3.https://zhuanlan.zhihu.com/p/262052220

(1) 主要讲解DDR的基础知识,比如rank, bank group, bank, row, col的概念;

(2) 补充:《数字电路技术基础-阎石》一书中有简单讲过一些DRAM的基础知识,其中,单管动态MOS存储单元的字线对应DDR spec中的row, 位线对应DDR spec中的col;在确定了待读取地址的 Bank group与 Bank 后(可以根据bank group与bank得到row信息),地址中的行部分将激活(activate)存储阵列中的一行(line),这被称为 Word line。在该行被激活后,其数据被从存储阵列中读出,写入 Sense Amplifiers。随后,DRAM 根据列地址从 Sense Amplifiers 中缓存的 Word line 再读取出属于该列的数据,这部分数据的长度与 DRAM 列数据位宽相同,称为 Bit line;

(3) page size的概念:指的是每一行中的 bit 数量。换句话说,是当一行被激活时,载入到 Sense Amps 的比特数量。假设列地址的位宽为 10bit,则每一行有 1k 个列。对于 x4 器件而言,每一行的 bit 数量为 1k x 4 = 4k bit(512B)。同理,x8/16 器件的 page size 分别为 1k/2k Byte.

(4) rank:DRAM 中有 single/Dual/Quad Rank 等术语。Rank 是 DRAM 中的最高层次的逻辑单元,一般用于增加整个系统的存储容量。

4.https://zhuanlan.zhihu.com/p/268347945

(1) 主要讲述DDR4的一些命令与时序参数;

(2) ACTIVE:激活命令用于在访问之前打开某个 bank 中的某个 row(该处的访问指读写操作);与激活命令相关的常用时序参数共有 3 个:tRRD_S,tRRD_L 以及 tFAW;

  • tRRD_S:row-to-row delay--short,当向多个属于不同 bank group 的 bank 发送 ACT 命令时,ACT 命令之间需要满足 tRRD_S 长度的间隔;
  • tRRD_L:row-to-row delay--long,与 tRRD_S 的不同点在于当向多个属于同一个 bank group 的 bank 发送 ACT 命令时,ACT 命令之间需要满足 tRRD_L 长度的间隔;
  • tFAW:Four Activate Window,限制容纳至多四个 ACT 命令的窗口,在这段时间内最多只能发出四个 ACT 命令。当连续发送 ACT 命令时,ACT 命令之间一方面需要满足 tRRD_S/L ;另一方面,在发送四个 ACT 命令后,需要等待 tFAW 窗口结束,才能发送第五个 ACT 命令。

(3) REFRESH:为了确保存储在 SDRAM 中的数据不会丢失,存储控制器需要平均间隔 tREFI ,发送一次 REFRESH 命令。 但是在进行刷新之前,SDRAM 所有的 bank 需要进行 PRECHARGE 预充电,并空闲一段时间,这个时长称为 tRP(min) 。在发出 REFRESH 命令后,必须经过 tRFC(min) 的延迟,才能发出下一个命令(DES 命令除外)。

(4) READ:通用读时序 Read Timing,时钟-数据有效信号(Strobe)间的时序关系 Clock to Data Strobe relationship,数据-数据有效信号间的时序关系 Data Strobe to Data relationship;

  • CL (CAS latency)Column-Address-Strobe,当列地址在地址信号上就绪时,CL 是内部读命令与读数据第一个比特之间的延迟时钟周期。
  • AL (Additive Latency)AL 延迟允许紧跟激活命令后发出读命令,器件内部将读命令延迟 AL 个时钟周期后执行。
  • RL (Read Latency)总的读延迟,RL = AL + CL;
  • tCCD_S/L读取不同 bank 之间的延迟,和 tRRD_S/L 类似,访问不同 bank group 的 bank 相比属于同一 bank group 的延迟要小一点,为 tRRD_S(short);
  • tDQSCK(MIN/MAX):数据有效信号 strobe 上升沿相对于时钟信号 CK_t(上升沿)、CK_c(下降沿)所允许的延迟范围;
  • tDQSCK:数据有效信号 strobe 上升沿相对于时钟信号 CK_t(上升沿)、CK_c(下降沿) 的实际延迟;
  • tQSH:数据有效信号高电平脉冲脉宽;
  • tQSL:数据有效信号低电平脉冲脉宽;

(5) WRITE:与READ时序参数类似;

  • CWL(CAS Write latency):Column-Address-Strobe Write,写命令与第一个送出第一个写数据之间的延迟;
  • AL(Additive Latency): AL 延迟允许紧跟激活命令后发出写命令,器件内部将写命令延迟 AL 个时钟周期后执行。该项特性用于保持器件内部的高带宽与高速率
  • WL(Read Latency):总的写延迟,WL = AL + CWL;
  • tCCD_S/L:写入不同 bank 之间的延迟,和 tRRD_S/L 类似,访问不同 bank group 的 bank 相比属于同一 bank group 的延迟要小一点,为 tRRD_S (short);

5.https://zhuanlan.zhihu.com/p/348360737

(1) 主要讲解write leveling;

(2) write leveling作用:调整CK与DQS信号间相位,使DRAM处二者边沿对齐;

(3) write leveling过程:MC配置DRAM颗粒的mode register使其进入write leveling模式; 源端MC同步发送时钟信号 CK 和数据有效信号 DQS ,接收端DRAM处出现了偏差,一般来说时钟信号会更滞后一些。此时,从 DRAM 端返回的 DQ 值为 0,表示 DQS 上升沿时 CK 信号为低电平。源端 MC 根据 DQ 数值,继续加大 DQS 的延迟,直至 DQ 值为 1,此时 DQS 上升沿时 CK 信号为高电平。再略微将延迟调小,就捕捉到了 CK 的上升沿,记录此时的 DQS 延迟值,就完成了 DQS(数据)与 CK 的同步。

(4) write leveling关键时序:

  • tDQSS,tDSS,tDSH:此三者都是 write leveling 调整的最终目的。tDQSS 是 DQS 上升沿相对 CK 上升沿的偏差,DDR4 要求两者的偏差在 ±0.27 个 tCK 范围内,这也是 write leveling 精度的参照。tDSS,tDSH 分别是 DQS 信号下降沿相对于 CK 上升沿的建立和保持时间。建立或者保持时间的违例会导致 DQS 采样失败。
  • tWLMRD: write leveling 的专属参数。在 MC 配置 DRAM MR,使之进入 write leveling 模式后,经过 tWLMRD 后,MC 开始发出第一个用于 write leveling 的 DQS 脉冲.
  • tWLO/tWLOE:DRAM 在 DQS 采样 CK 值后,通过 DQ 返回采样值,这里需要注意的是,返回采样值是一个异步的操作。DRAM 会在采样后的 tWLO 时刻返回采样值。协议规定,DQ 的所有比特都会返回一个相同的值,但这些比特的跳变时间之间有一个偏差,这个偏差的最大值是 tWLOE。

6.https://zhuanlan.zhihu.com/p/397260462

(1) 关于DDR模型的内容(行为级模型,时序模型,信号完整性模型等),不再局限于DDR spec中的描述;

7.【未阅】https://zhuanlan.zhihu.com/p/401232961

8.【未阅】https://zhuanlan.zhihu.com/p/263080272

9.【未阅】https://zhuanlan.zhihu.com/p/261747940

【未完】【DDR系列文章收集】的更多相关文章

  1. ASP.NET MVC 系列随笔汇总[未完待续……]

    ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...

  2. Grafana 系列文章(十三):如何用 Loki 收集查看 Kubernetes Events

    前情提要 IoT 边缘集群基于 Kubernetes Events 的告警通知实现 IoT 边缘集群基于 Kubernetes Events 的告警通知实现(二):进一步配置 概述 在分析 K8S 集 ...

  3. 【资料收集】OpenCV入门指南 系列文章

    <OpenCV入门指南>系列文章地址:http://blog.csdn.net/morewindows/article/category/1291764 目录: 第一篇  安装OpenCV ...

  4. Go web编程学习笔记——未完待续

    1. 1).GOPATH设置 先设置自己的GOPATH,可以在本机中运行$PATH进行查看: userdeMacBook-Pro:~ user$ $GOPATH -bash: /Users/user/ ...

  5. jQuery插件库代码分享 - 进阶者系列 - 学习者系列文章

    这些天将原来在网上找的jQuery插件进行了下整理,特此将代码分享出来给大家. 见下图结构. 对目录结构进行了分类.这里是插件列表. 这里总共收集了20来个插件.还有下面未进行划分的. 下面是DEMO ...

  6. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第六章:管理产品图片——多对多关系(上篇)

    在这章中,我们将学习如何创建一个管理图片的新实体,如何使用HTML表单上传图片文件,并使用多对多关系将它们和产品关联起来,如何将图片存储在文件系统中.在这章中,我们还会学习更加复杂的异常处理,如何向模 ...

  7. Linux 系统化学习系列文章总目录(持续更新中)

    本页内容都是本人系统化学习Linux 时整理出来的.这些文章中,绝大多数命令类内容都是翻译.整理man或info文档总结出来的,所以相对都比较完整. 本人的写作方式.风格也可能会让朋友一看就恶心到直接 ...

  8. 【合集】TiDB 源码阅读系列文章

    [合集]TiDB 源码阅读系列文章 (一)序 (二)初识 TiDB 源码 (三)SQL 的一生 (四)INSERT 语句概览 (五)TiDB SQL Parser 的实现 (六)Select 语句概览 ...

  9. 系列文章--一步一步学Silverlight2

    概述 由TerryLee编写的<Silverlight 2完美征程>一书,已经上市,在该系列文章的基础上补充了大量的内容,敬请关注.官方网站:http://www.dotneteye.cn ...

  10. netty源码分析系列文章

    netty源码分析系列文章 nettynetty源码阅读netty源码分析  想在年终之际将对netty研究的笔记记录下来,先看netty3,然后有时间了再写netty4的,希望对大家有所帮助,这个是 ...

随机推荐

  1. 在 CentOS7 部署 ELK8.0.1

    在 CentOS7 部署 ELK8.0.1 目录 在 CentOS7 部署 ELK8.0.1 1 下载软件: 2 环境准备: 2.1 关闭防火墙和SELinux 2.2 修改Linux最大打开文件数 ...

  2. 从Linux Bridge引发的网桥、交换机与路由器区别探究

    背景 最近接触docker的网络配置方式,发现其默认会创建一个docker0的Linux Bridge,宿主机上运行的容器可以通过连接该birdge实现与外网的通信,根据bridge这个命名很自然的认 ...

  3. XMLHttpRequest、Ajax、Fetch与Axios

    1. 引言 XMLHttpRequest.Ajax.Fetch与Axios是网页前后端交互中常见到的名词 参考MDN:Ajax - Web 开发者指南 | MDN (mozilla.org) Ajax ...

  4. 【C/C++】main函数中的argc和argv

    1.简述argc和argv 当你用命令行执行文件时,可在后面接指令,以控制程序的运行 argc(argument counter)表示指令的数量 argv(argument vector)表示指令向量 ...

  5. JavaScript表单form

    form表单实例 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"& ...

  6. PO/PI

    典型集成场景 PI总体架构 消息映射 General Concepts(通用概念) 映射编辑器 元素 分配源/目标消息类型 有3种消息类型可分配给消息映射 1.使用已经存在于IR中的对象(比如消息类型 ...

  7. Matplotlib 网格线

    我们可以使用 pyplot 中的 grid() 方法来设置图表中的网格线. grid() 方法语法格式如下: matplotlib.pyplot.grid(b=None, which='major', ...

  8. el-table多选框根据条件隐藏显示

    提供一个方法, 通过添加相应类来控制样式,设置 display: none ,达到隐藏 checkbox 的目的. 利用Table Attributes 属性里面的 cell-class-name 属 ...

  9. Vue 实现点击空白处隐藏某节点

    手动监听判断 <template> <div> <span ref="projectButton"> <el-popover v-mode ...

  10. git常规操作

    git拉代码 使用git clone命令从仓库下载代码,代码下载到了本地:git clone 链接 如果仓库代码又了更新,这时可以使用git pull命令将更新下载到本地 在对本地代码就行修改后,可以 ...