Skip to content

内存

硬件知识

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:

      sram_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_array

      也可以将地址高位用于片选

  • 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 并读写

读写、刷新过程:

  • 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

软件知识