内存¶
硬件知识¶
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

