频率与带宽
- 工作频率 系统总线的时钟频率
- 存取频率 一个时钟周期内能够传输两次数据,故存取频率是工作频率的两倍,市面上售卖的内存条标注的频率是存取频率。一个2666MHz的内存条工作频率是1333MHz
- 带宽 一个存取周期内能够存取两次数据,一次8B故带宽为,以一根金百达3200MHz的内存条为例子,这根内存条的最大带宽是25600MBps = 25GBps
层次结构
Channel
北桥芯片或者CPU内集成了一个或者多个内存控制器,控制器与通道一一对应
DIMM
在80286时代,内存颗粒(Chip)是直接插在主板上的,叫做DIP(Dual In-line Package)。到了80386时代,换成1片焊有内存颗粒的电路板,叫做SIMM(Single-Inline Memory Module)。由阵脚形态变化成电路板带来了很多好处:模块化,安装便利等等,由此DIY市场才有可能产生。当时SIMM的位宽是32bit,即一个周期读取4个字节,到了奔腾时,位宽变为64bit,即8个字节,于是SIMM就顺势变为DIMM(Double-Inline Memory Module)。内存条=DIMM
如图,一个通道上可以插入多根内存条(DIMM)
RANK、CHIP
一根内存条有一个面,每一个面上都可以有若干个颗粒。每一个面叫作rank,每一个颗粒叫作chip。多数内存颗粒的位宽是8bit,而CPU带宽是64bit,所以经常是8个颗粒可以组成一个rank。所以一根典型的内存条有2个rank,每一个rank有8个chip
BANK、CELL、Row和Column
如上一个chip由若干个(8个)平面构成,这里的平面叫作Bank。每一个Bank核心部分是一个存储矩阵,矩阵每一行叫作row,每一列叫作col,通过行地址信号和列地址信号即可选中其中的某一个存储单元,存储单元叫作cell,每一个存储单元的位宽是8bit,每一个bank被行列地址选中的cell构成一个64bit的存储字,故相邻字节并不是在同一个bank上连续排列的,而是交叉排列在不同chip的相同bank号、row号与col号所对应的cell里,共同构成一个64bit的存储字,大大提高了并行度
寻址
以上面的内存条为例:
- CS(Chip Select),1位,片选信号,选中RANK
- BANK地址线,三位,选中一个BANK平面
- 列选CAS#,用于指示现在要选通列地址
- 行选RAS#,用于指示现在要选通行地址
- 地址线,A0-A13共14位,传输地址数据
- 数据线,传输数据
- 命令,传输命令
读写过程
- 行选通,传输列地址信号
- 列选通,传输行地址信号
- 数据输入输出 根据COMMAND进行读取或者写入

Burst突发传输
…
时序
背对背(back-to-back)读写的时序图 
时延
如何读懂内存条的时序参数
- CL CAS Latency。CL是指CAS发出之后,仍要经过一定的时间才能有数据输出,从CAS与读取命令发出到第一笔数据输出的这段时间。由于CL只在读取时出现,所以CL又被称为读取时延(RL,Read Latency)。也就是我们上面第3步读取时需要的时间。CL是延迟里面最重要的参数,有时会单独在内存标签上标出如CLx。它告诉我们多少个时钟周期(这里是工作周期,不是存取周期) 后我们才能拿到数据,CL7的内存会延迟7个周期才能给我们数据,CL9的则要等9个。所以越小我们越能更快的拿到数据。所以要把内存插在颜色相同的内存插槽里,才能让内存占据不同的通道
- tRCD RAS to CAS Delay,RAS到CAS时延。在发送列读写命令时必须要与行有效命令有一个间隔,这是根据芯片存储阵列电子元件响应时间所制定的延迟。即步骤1和2要间隔的时间。
- tRP Precharge command Period,预充电有效周期。在上一次传输完成后到下一次行激活前有个预充电过程,要经过一段充电时间才能允许发送RAS。也就是步骤1的准备工作要做多久
- tRAS 对某行的数据进行存储时,从操作开始到寻址结束需要的总时间周期 此操作并不会频繁发生,只有在内存空闲或开始新一个任务的时候才使用它。tRAS值太小有可能导致数据错误或丢失,太大的值则会影响内存性能。如果内存条负荷较大,一般可以稍微放宽tRAS值。
- CMD
- 售卖的内存条时序的顺序为:CL-tRCD-tRP-tRAS
- 内存事务时延
- 一个总线周期传送命令(RCD)若干个总线周期准备数据(存储周期/CL)一个总线周期在总线上传输数据
- 突发事务时延
- 一个总线周期传送命令(RCD)若干个总线周期准备数据(存储周期/CL)BL个总线(工作)周期在总线上传输数据(这里假定总线一个周期传输一个数据)
- 多模块突发传送时延
- 一个总线周期传送命令(RCD)若干个总线周期准备数据(单个存储芯片的存储周期)BL个总线(工作)周期在总线上传输数据(这里假定总线一个周期传输一个数据)
SPD
每个DIMM在板子上都有块小的存储芯片(EEPROM),上面详细记录了时序频率等参数,还有生产厂家的代码等等
提高效能的手段
- 多通道
- interleave 并行与并发
- 超频
内存初始化
其他
- 内存的顺序访问与随机性能访问有区别吗 行缓冲 顺序访问时延 CL 随机访问时延 RP+RCD+CL
- 总线的工作频率为dram内部芯片的频率乘以欲取位数,时钟频率为工作频率一半,DDR两位预取,DDR2 4位欲取,DDR3、DDR4 8位欲取,DDR5 16位欲取

参考
https://zhuanlan.zhihu.com/p/26255460 https://zhuanlan.zhihu.com/p/26327347 https://www.crucial.cn/articles/about-memory/what-is-the-memory-timing-sequence
