内存: 储存临时数据的物理设备
内存类型
内存的内部是由各种IC电路组成的,其主要分为三种存储器
随机存储器
(RAM, Random access memory):可读数据,也可写数据。断电时,内存中的信息会全部丢失- DRAM (Dynamic Random Access Memory): 结构简单, 单位面积内容量较大, 存取速度比SRAM慢; 适合做主存
- SRAM (Static Random Access Memory): 结构复杂, 单位面积容量较少, 存取速度快; 适合做Cache和CPU缓存
只读存储器
(ROM, Read-only memory):一般只能用于数据的读取,不能写入。断点时,数据不会丢失CPU缓存
(Cache): CPU缓存的定义为CPU与内存之间的临时数据交换器,它的出现是为了解决CPU运行处理速度与内存读写速度不匹配的矛盾——缓存的速度比内存的速度快多了。CPU缓存一般直接跟CPU芯片集成或位于主板总线互连的独立芯片上。- L1, L2(SRAM), L3(DRAM): L1最靠近CPU核心;L2其次; CPU会先在最快的L1中寻找需要的数据,找不到再去找次快的L2,还找不到再去找L3,L3都没有就会去内存找
- L4 (eDRAM): 主要做核显显存用, 如果不使用集显, 就做L4用
物理结构
层级结构
Channel -> DIMM -> Rank -> Chip -> Row/Column -> Cell
内存结构示例: 2GB DDR3
Rank
: 内存一面/排, 上面内存是两排Chip
: 芯片/IC/颗粒, 一面8个chip, 每个128M, 提供1GBBank
: 层, 储存数据块的矩阵, 一个chip有8个Bank; 由行(Row)
,列(Column)
定位随机存取的数据块Cell
: 单元, 用于存储一个数据单位, DDR3为8bit- 一个Chip的位宽一般是8bit, CPU寻址宽度64bit, 8个Chip组成一个Rank, 所以64/8=8bit;
- 每个Cell储存的数据宽度等于位宽, 每个Cell由一个晶体管和一个电容组成; Cell大小8bit=1byte
- 一个Chip大小:
16384(Rows)*1024(Columns)*8(Bank)*1byte=128MB
内存寻址
对于DDR3,我们通常说它是8n-prefetch(这儿n是指每个rank的bank数目),因为DDR3,每个IC有8个bank,每个bank读取数据的最小单位是8bit=1byte。每次数据读取,都会读取8*8bit=64bit=8byte,而不管这些数据是否都是我们所需要的
引脚和信号类型
DDR3的DIMMs(dual-inline memory modules)有240-pins(引脚/金手指)和204-pins, 分别为PC和laptop使用
DDR4 有288-pins, 260pins两种
部分引脚定义:
Sx#: Chip select: (S0#-S1#) 片选, 用于选择使用哪个Rank
BAx: Bank address inputs: (BA0-BA2, 2^3=8) 用于选择8个Bank
RAS#(Row Address Select), CAS#(Column Address Select): Command inputs: 各只有一个pin, 定义是否进行相关模式操作
Ax: Address inputs: 行和列的地址选择
DQx: Data input/output: (DQ0-DQ63), 64bit的数据读写信号
DQSx, DQSx#: Data strobe: 读写选通信号控制
!! 没有单独选定某个内存颗粒(Chip)的选择信号,只有Rank的选择信号(Sx#)。在Rank选择好后,8个内存颗粒一起被选中,共提供64bit的数据
时序
内存时钟信号是方波,DDR内存在时钟信号上升和下降时各进行一次数据传输,所以会有等效两倍传输率的关系。
例如DDR3-1333的实际工作频率是666.7MHz,每秒传输数据666.72=1333百万次,即1333MT/s,也就是我们说的等效频率1333MHz,再由每条内存位宽是64bit,那么它的带宽就是:1333MT/s64bit/8(8bit是一字节)=10667MB/s。
所谓时序,就是内存的时钟周期数值,脉冲信号经过上升再下降,到下一次上升之前叫做一个时钟周期,随着内存频率提升,这个周期会变短。例如CL9的意思就是CL这个操作的时间是9个时钟周期。
内存的读写性能受各个基于时序的延迟参数设置影响
物理地址寻址过程 Addressing
随机存储过程:
- Chip select: S0#/S1#, 选择一组Chips
行有效: RAS#低电平, CAS#高电平, A0-A13传送地址信号, 共可以选择2^14个Row
列有效: RAS#高电平, CAS#低电平, A0-A9传送地址信号, 共可以选择2^10个Column, 需要行列两个操作才能确定唯一地址
读写控制信号 (DQS控制)
- 定位好数据块, 确定好读写类型, 数据通过DQx进行双向输入输出, 每次读写64bit数据
- 多Chips结构能有效提升存取效率: 一般存取延迟为: 命令下达+Cell存取延时+输出数据, 如果命令下发2ns, Cell存取延时10ns, 输出数据为2ns, 那个2次操作演示就是 (2+10+2)x2=24ns; 如果能够将两次操作拆分到两个Chip上, 那么 2次存取的延迟就能减少 16ns, 如下图示例:
物理地址映射
内存地址映射有多种方式, 有
- B-R-C (Bank, Row, Column): 用的最多。其优点是,功耗低;
- R-B-C (Row, Bank, Column): 适合数据流方式去访问数据,性能好;
- B-RL-CL-RH-CH (Bank, Row Low, Column Low, Row High, Column High): 适合存储视频,图像等数据,高性能。
下面拿BRC举例:
- Bank: 3bit
- Row: 14bit (128MB, 如果Chip大小256MB, 则Row为15bit)
- Column: 10bit