内存¶
硬件知识¶
SRAM 与 DRAM¶
-
规格:
-
容量:\(2^k \times n\) bit
例:\(64K \times 8\) RAM 的字长为 8 bit,有 \(2^{16}\) 个字,共 64 KB 容量
-
-
信号:
- \(n\) 输入数据
- \(n\) 输出数据
- \(k\) 地址线
- \(m\) 控制信号(读/写 + 片选 Chip Select)
- 时钟:
- 读写周期需要与 CPU 的时钟周期同步
-
SRAM
- SRAM Cell:
- 构造:以 SR Latch 为核心
- 信号:Select 控制输入 \(B\) 和输出 \(C\)
-
Bit Slice:
- 构造:组织为 Word 和 Bit Select 两个维度,包含读写逻辑
- 写逻辑:
- 当 Read 信号为 1 时,取反通入与门,使 Cell 输入均为 0,保持不变
- 当 Read 信号为 0 时,Data in 一正一反进入 SR Latch,类似 D Latch 完成输入
- 读逻辑:输出进入 SR Latch 锁存后输出
-
Chip:
由于 \(k\) 输入 Decoder 需要 \(2^k\) 个与门,开销太大,因此将地址分为 Row 和 Column Select,采用两个小 Decoder 进行选择
-
Array:
字被分划到不同 Chip 上,使 Chip 间并行组成 Array
也可以将地址高位用于片选
- SRAM Cell:
-
DRAM
-
DRAM Cell:
- 构造:一个晶体管和一个电容
- 信号:\(Select\) 选择、\(B\) 输入、\(C\) 输出
- 原理:
- \(Select\) 连接栅极,控制 \(B\) 和电容导通
-
DDR SDRAM¶
内存相关的工业标准由 JEDEC 制定。
内存模块形态:
- 如今最通用的是 DIMM (Dual In-line Memory Module),其中 Dual In-line 指的是两排针脚,即金手指两面是不同的信号,提供更高速率。与之相对的是 SIMM,金手指两面信号相同互为冗余。
早期 DRAM 是异步的,后来被 SDRAM 取代,原因如下:
- 同步时钟信号使内存操作可以流水化以提升性能
- 使用状态机和寄存器进行控制
- SDRAM 将内存划分为多个 Bank 并行读写操作
- 更高的频率和带宽
DDR(Double Data Rate)SDRAM 在 SDRAM 基础上通过在时钟上升沿和下降沿都传输数据来提升带宽
- DDR5:
- 每个内存通道分为 Channel A 和 Channel B
- 每个 Channel 各自使用 32x 数据线 + 21x地址线 + 7x控制线,共享地址和指令
- 每个 Channel 有 4 个 Chip,各自贡献数据中的 8 bit
- Chip:一个 2GB DRAM Die
- 8 个 Bank Group
- 4 个 Bank
- 65536 行
- 8192 列
-
31x 地址线
- RAS
- 3x Bank Group
- 2x Bank
- 16x Row
- CAS
- 10x Column
过程:RAS 选中 Row 并激活,Column Multiplexer 选中 Column 并读写
- RAS
读写、刷新过程:
- Row Closing:关闭所有 Row
- Bitline Precharge:Bitline 恢复到 \(V_{DD}/2\)
- Row Opening:选中 Row
- Sense Amplifier Refreshing:Bitline 的 Sense Amplifier 检测到微小电压差并放大到 \(V_{DD}\) 或 0
- Column Address:
- 读/写 Read/Write:选中 Column,连接到 Read/Write Driver
刷新一行约 50ns,整个 Bank 刷新约 3ms,每个 Bank 需要在 64ms 内刷新一次
DDR 优化技术¶
基本参数:
- 传输速率:4800 Mega Transfers per second (MT/s)
- CAS Latency:40
- RAS to CAS Delay(tRCD):39
- Row Precharge Time(tRP):39
- Active to Precharge Delay(tRAS):79
当访问的行已经被打开时,称为 Row/Page Hit,只需要 CAS 延迟
- 操作系统、编译器都对此有优化,尽可能访问同一个 Row 的数据
- 划分为 Bank,不同 Bank 的操作独立,更有可能命中 Row
Burst Buffer¶
CAS 中 6 位用于 Multiplexer,4 位用于 Burst buffer
Column Multiplexer 中 128x 数据线连接到 burst buffer,连续发送 16 次 8 bit 数据。
Subarrays¶
1024x1024 Cell 组织为 Subarray,拥有 Sense Amplifier
- 更短的 Wordline:打开 Row 的时间变短、需要的电压降低
- 更短的 Bitline:对电容的容量要求降低
Folded Layout¶
每列实际上使用了两条 Bitline,
提升电气性能
内存带宽计算:
理论带宽/每通道 = 传输速率(MT/s) × 数据总线宽度(位) ÷ 8 (字节/位)
内存地址到 Bank 的映射是通过静态哈希进行的,无法保证 Bank 完美均衡 https://dl.acm.org/doi/10.5555/3241094.3241139