主存储器、SRAM 与 DRAM 的工作原理及相关技术

主存储器、SRAM 与 DRAM 的工作原理及相关技术

本文介绍了三种内容:

  1. SRAM 与 DRAM 的工作方式
  2. DRAM 的刷新机制与地址引脚复用技术
  3. DRAM 行列(Row/Column)优化原则及行缓冲器容量的计算

1. 主存储器中 SRAM 与 DRAM 的工作方式

1.1 SRAM 的工作方式

  • 基本原理
    SRAM(静态随机存储器)利用由晶体管构成的锁存电路(通常为 6T 结构)来存储每一比特。只要电源保持,SRAM 单元可以无限期地保存数据,无需刷新。

  • 优点与缺点

    • 优点:访问速度快,延迟低。
    • 缺点:占用硅面积大,成本高,存储密度低。
    • 使用场景:主要用于高速缓存(Cache)等对速度要求极高但容量要求不大的场合。

1.2 DRAM 的工作方式

  • 基本原理
    DRAM(动态随机存储器)采用一个存储电容和一个访问晶体管组成单元。电容中存储的电荷表示 1 或 0。由于电容中的电荷会随时间漏失,所以存储单元必须定期刷新才能维持数据。

  • 优点与缺点

    • 优点:结构简单、密度高、成本低,适于构成大容量主存。
    • 缺点:访问速度较 SRAM 慢,需要周期性刷新。
    • 使用场景:现代主存储器基本均采用 DRAM。

2. DRAM 的刷新机制与地址引脚复用技术

2.1 DRAM 的刷新机制

  • 刷新原因
    DRAM 单元依靠电容存储数据,而电容会随着时间漏电,为防止数据丢失,必须定期重充(刷新)。

  • 刷新方式

    • 自动刷新(Auto Refresh):内存控制器周期性发出刷新命令,对每一行依次激活、读取、重写。
    • 自刷新(Self Refresh):在低功耗模式下,DRAM 芯片内部完成刷新,无需外部控制信号。
  • 刷新周期
    一般要求整个 DRAM 芯片内所有行在 64ms 内至少刷新一次,即每行刷新间隔为
    T row = 64   ms 行数 T_{\text{row}} = \frac{64\,\text{ms}}{\text{行数}} Trow=行数64ms

2.2 DRAM 的地址引脚复用技术

  • 目的
    为了降低芯片的引脚数量和封装成本,DRAM 采用地址复用技术,将行地址和列地址通过同一组引脚逐次输入。

  • 工作流程

    1. 行地址传送
      • 将行地址先通过地址总线传送,然后利用 RAS(Row Address Strobe)信号锁存行地址。
    2. 列地址传送
      • 接着同一地址总线传送列地址,再通过 CAS(Column Address Strobe)信号锁存列地址。
  • 效果
    对于一个有 2 n 2^n 2n 行和 2 m 2^m 2m 列的 DRAM 芯片,若不采用地址复用则需要 n + m n + m n+m 个地址引脚;复用后只需 max ⁡ ( n ,   m ) \max(n,\,m) max(n,m) 个引脚。


3. 行列优化原则

  • 背景
    DRAM 内部数据以行和列的形式布置,任一次存取操作(例如读或写)前,都需要先激活所对应的“行”,并将该行数据加载到行缓冲器中。

  • 优化目标与原则

    • 行激活代价高:激活一行需要一定延迟(RAS 激活、预充电时间等),因此在同一行内连续访问的数据能实现高速访问。
    • 提高行缓冲命中率:将具有空间局部性(访问相邻地址)的数据尽可能存放在同一行,当一次激活后连续访问同一行数据即称“行命中”,能大幅降低延迟。
    • 调度策略:内存控制器可以采用开放页(Open Row)策略,保持行缓冲打开,或者采用闭合页(Close Row)策略,根据访问模式动态调节。

4. DRAM 芯片行缓冲器容量的计算

DRAM 芯片内部数据以行和列的方式组织。当某一行被激活后,整行数据会被读取到行缓冲器(Row Buffer)中。行缓冲器的容量直接等于一个整行的数据量,其大小取决于芯片的总容量、行数以及数据位宽。

4.1 计算思路

设:

  • DRAM 芯片总容量为 C t o t a l C_{total} Ctotal(以 bits 计)

  • 芯片包含 R R R

  • 每行存储的数据位数为
    每行位数 = C t o t a l R ( bits ) \text{每行位数} = \frac{C_{total}}{R} \quad (\text{bits}) 每行位数=RCtotal(bits)

若芯片采用 x8 组织(即每个存储单元输出 8 bits,一次读/写为 1 byte),则每行数据转换为字节后的容量为
Row Buffer Capacity (in bytes) = C t o t a l R × 8 \text{Row Buffer Capacity (in bytes)} = \frac{C_{total}}{R \times 8} Row Buffer Capacity (in bytes)=R×8Ctotal

4.2 举例说明

例如,某 DRAM 芯片总容量为 1 Gb(即 2 30 2^{30} 230 bits),组织为 2 13 2^{13} 213 行(即 8192 行),则:

  1. 每行位数
    每行位数 = 2 30 2 13 = 2 17 = 131072  bits \text{每行位数} = \frac{2^{30}}{2^{13}} = 2^{17} = 131072 \text{ bits} 每行位数=213230=217=131072 bits

  2. 转换为字节(以 x8 方式,每 8 bits = 1 byte):
    Row Buffer Capacity = 131072 8 = 16384  bytes = 16   KB \text{Row Buffer Capacity} = \frac{131072}{8} = 16384 \text{ bytes} = 16\,\text{KB} Row Buffer Capacity=8131072=16384 bytes=16KB

因此,该芯片每个行缓冲器的容量为 16 KB。


5. SDRAM 的原理和工作方式

SDRAM(Synchronous DRAM)是现代主存中常用的一种 DRAM,其工作与传统异步 DRAM 存在较大区别,下面详细介绍 SDRAM 的工作原理、地址复用方式、刷新与命令调度机制以及与行缓冲器相关的特点。

5.1 SDRAM 的基本原理

  • 同步操作
    SDRAM 与系统总线时钟同步工作,这意味着所有命令(如激活、读写、预充电、刷新)都在时钟的控制下按固定时序执行,支持流水线操作,可在每个时钟周期内启动新的操作,从而提高整体带宽。

  • 内部状态机
    SDRAM 内部具有一个状态机,用于管理各个操作命令。操作包括:行激活(ACTIVATE/RAS)、读/写(READ/WRITE, 搭配 CAS 命令)、预充电(PRECHARGE)及刷新(REFRESH)。所有命令按照预定时序组合起来,实现对存储区域的访问。

5.2 地址复用与行/列访问

  • 地址引脚复用技术
    与传统 DRAM 相似,SDRAM 也采用地址复用技术,将行地址与列地址通过同一组引脚分时复用:

    • 首先,通过地址总线传送行地址,同时激活 RAS(Row Address Strobe)信号,将行地址锁存于内部寄存器中;
    • 接着,再通过同一地址总线传送列地址,并激活 CAS(Column Address Strobe)信号,将列地址锁存,从而完成地址确定。
  • 行与列的组织
    SDRAM 存储单元同样按照行和列组织。一次激活整行数据后,数据会被加载入行缓冲器。在同一行内连续访问数据可以直接从行缓冲器中读取,从而快速响应。

5.3 刷新与命令调度

  • 刷新机制
    与所有 DRAM 一样,SDRAM 电容会随时间漏电,必须在一定时间间隔内刷新。刷新命令(REFRESH)在一个固定周期内(例如 64ms 内对所有行刷新)被周期性调度。为了降低刷新对整体性能的影响,SDRAM 内部通常以流水线和内部调度的方式隐藏刷新延迟。

  • 命令调度与 Burst 模式
    SDRAM 支持 Burst 模式,即在一次激活后可以连续传输多个数据单元(通常为 2、4、8 个数据)的数据,利用流水线技术提高效率。同时,内存控制器可通过请求重排序策略,优先调度同一行内的访问请求,进一步提高行缓冲命中率。

5.4 与行缓冲器相关的特点

  • 行缓冲器(Page Buffer)
    在 SDRAM 中,当某一行被激活时,整行数据被预先加载到一个行缓冲器中。后续对该行内数据的访问仅需从行缓冲器中读取,避免了重复的激活和预充电操作,从而大幅降低访问延迟。

  • 计算行缓冲器容量
    与前述 DRAM 计算类似,SDRAM 的行缓冲器容量也等于一个整行的数据量。计算方法同样为:
    Row Buffer Capacity (in bytes) = C t o t a l R × (data bus width in bits per cell) \text{Row Buffer Capacity (in bytes)} = \frac{C_{total}}{R \times \text{(data bus width in bits per cell)}} Row Buffer Capacity (in bytes)=R×(data bus width in bits per cell)Ctotal
    SDRAM 的高带宽及流水线设计使得在实际应用中,行缓冲器的命中率对性能起到决定性作用。

5.5 优化策略及性能考量

  • 利用 Burst 模式与流水线
    SDRAM 的命令和数据传输同步于时钟信号,支持 burst 模式能高效利用已经激活的行缓冲器,减少频繁行切换带来的延时。

  • 请求重排序
    内存控制器通过重排序请求将同一行或同一银行的访问请求合并,以提高行缓冲器利用率。

  • 预充电与开放页策略
    根据应用访问模式,内存控制器可以选择保持一定时间不关闭行缓冲器(开放页),以期后续访问命中同一行;也可在每次访问后立即预充电(闭合页),适用于随机访问较多的情形。


6. 总结

  • SRAM:采用晶体管构成的稳定锁存器,无需刷新,速度快但成本高且密度低,常用于缓存。

  • DRAM:利用电容存储数据,但因漏电需要定期刷新;通过地址复用(RAS/CAS)减少引脚数量;为了提高性能,应尽可能使连续访问落在同一行(利用行缓冲命中)。

  • DRAM 芯片行缓冲容量
    通过总容量与行数的关系,可计算出每行(即行缓冲器)的数据量。以 x8 组织为例,每行容量(bytes)为
    Row Buffer Capacity = C t o t a l R × 8 \text{Row Buffer Capacity} = \frac{C_{total}}{R \times 8} Row Buffer Capacity=R×8Ctotal

  • SDRAM 的优势
    SDRAM 采用与系统时钟同步的操作、流水线和 burst 模式等技术,显著提高数据传输效率,同时利用地址复用技术及命令调度机制优化行缓冲器的命中率,大幅降低内存访问延迟。

通过综合以上内容,我们可以看出,无论是传统 DRAM 还是 SDRAM,其设计都充分考虑了行缓冲器利用率与地址复用来提升整体性能,而 SDRAM 更进一步通过同步化设计和流水线技术,实现了与高速处理器配合的高效存储访问。


你可能感兴趣的:(计算机组成原理,学习方法)