← Back to Learning Notes

Lecture 9:知识 - 主存储器

Chinese-language Computer Science 408 note: Lecture 9:知识 - 主存储器. Original source available where applicable.

On this page

This note is currently available in Chinese. The original wording, formulas and diagrams are preserved to avoid an unverified technical translation.

描述:主存题可拆为四条线:编址与总线(MAR/MDR)、DRAM 行列地址、多模块并行、芯片容量扩展。所有连线题都要先分别确定“片内地址、片选地址、数据位、读写控制”。

3.1 主存结构与读写过程

3.1.1 编址单位、MAR 与 MDR

  • 主存的核心是存储矩阵,由能稳定表示 0/1 的记忆单元组成。为了读写,需要给由同一地址控制的一组存储元件编号,该组称编址单位。
  • 现代系统通常按字节编址,一个地址对应 1 B;若数据总线 64 位,则一次传送最多 8 个连续字节,但这不改变单个字节地址的含义。
  • 地址线有 $a$ 位时,按字节编址的地址范围为 $0\sim2^a-1$,最大可寻址字节数为 $2^a$。例如 36 位地址可表示 $2^{36}$ 个字节地址。
寄存器/总线 保存或传输 位数关系
MAR / 地址线 待访问主存地址 MAR 位数通常等于地址线位数
MDR / 数据线 读出数据或待写数据 数据线等于存储字长时,MDR 位数也等于存储字长;否则 MDR 受数据线宽度约束

读写流程:

  1. CPU 把目标地址送 MAR,经地址线送至主存地址寄存器和译码器,选中单元。
  2. CPU 经控制线发送读/写命令。
  3. 写操作:CPU 把数据送 MDR,经数据线写入目标单元;读操作:目标单元内容经数据线送入 MDR。

3.2 DRAM 地址复用

DRAM 容量大、地址位多。为减少封装引脚,采用地址引脚复用:同一组地址引脚先传行地址、后传列地址,地址引脚数约减半。

  • 对 $2^n\times b$ 位 DRAM,若阵列有 $r$ 行、$c$ 列,则 $2^n=r\times c$,所需行列地址位为 $\log_2r$、$\log_2c$。
  • 仅考虑引脚数时应让行列尽可能接近,即 $|r-c|$ 最小;但 DRAM 按行刷新,行数越少刷新开销越小,因此优化通常满足 $r\le c$。

3.3 提高主存吞吐率

3.3.1 单体多字与多体并行

方法 组织 适合的访问 局限
单体多字存储器 一个单元含 $m$ 个字,总线同宽,一次并行读出 $m$ 字 连续取指/连续数据 遇转移或非连续操作数,优势不明显
多体并行存储器 多个相同模块,各自独立地址、数据、读写控制电路 连续访问可并行或流水交叉 会受模块冲突与总线组织限制
  • 单体多字在一个存取周期取出同一地址下连续的 $m$ 个字,随后可逐条交给 CPU,等效每隔 $1/m$ 存取周期取一字;其本质是一次扩大传输宽度。
  • 多体存储利用多个模块的空间并行性提高吞吐,模块可并行工作或交叉工作。

3.3.2 高位与低位交叉编址

编址 模块号 模块内地址 连续地址分布 效果
高位交叉(连续编址) 高位 低位 先填满同一模块再到下一模块 单个连续地址流通常长期落在同一模块,难以利用跨模块并行;跨模块或多数据流访问仍可能并行
低位交叉 低位 高位 依次落在相邻模块 可轮流/交叉并行,适合连续访问

低位交叉下,若有 $m$ 个模块:

$$\text{模块号}=\text{单元地址}\bmod m$$

模块 $M_0$ 保存 $0,m,2m,\ldots$,$M_1$ 保存 $1,m+1,2m+1,\ldots$,依次类推。模块数常取 2 的幂以便直接用低地址位选模块;采用质数个模块也可降低某些固定步长访问的冲突,但需要取模等更复杂的选体逻辑,408 常规连线题仍以 2 的幂为主。

3.3.3 轮流启动与同时启动

  • 轮流启动:每模块一次传送宽度等于总线宽度。若模块存取周期为 $T$、可发起一次总线传送的间隔为 $r$,连续无冲突流水至少需要 $m\ge\lceil T/r\rceil$ 个模块;理想均匀设计常取 $r=T/m$。

$$ \begin{aligned} t_{交叉}&=T+(k-1)r\ t_{顺序}&=kT \end{aligned} $$

这里 $k$ 是连续读取的字数;第一个字等待一个完整模块周期 $T$,后续字在无模块冲突且总线允许时以 $r$ 为间隔到达。原先写成 $m$ 只适用于“恰好读取与模块数相同的 $m$ 个连续字”。

  • 同时启动:各模块一次传送的数据宽度之和恰好等于总线宽度时,可同时启动所有模块。例如 4 个模块各 16 位、总线 64 位,可并行拼成一个 64 位存储字。

3.4 CPU 与主存的总线连接

主存经地址总线、数据总线、控制总线与 CPU 相连。

总线 功能
地址总线 位数决定最大可寻址内存空间
数据总线 位数与工作频率共同决定数据传输率
控制总线 用读/写等信号指出总线周期类型、操作完成时刻
  • 内存模块可由多片 DRAM 组成。例如 8 个 $8M\times8$ DRAM 可并排组成 $8M\times64$ 位模块,即总容量为 $64M$ B(此处存储器容量按 $M=2^{20}$ 计,为 64 MiB):同一超单元地址 $(i,j)$ 广播给每片,各片分别输出 8 位,模块电路合成为一个 64 位字。
  • 内存控制器把主存地址转换为 DRAM 的行/列超单元地址,广播地址并收集各芯片同时返回的数据;位扩展的本质正是多芯片并排拼宽数据字。

3.5 主存容量扩展

3.5.1 三种扩展

方法 何时使用 连接要点 示例
位扩展 CPU 数据线宽于单芯片字长 各芯片地址、片选、读写线并联;数据线分别占不同位 $8\times(8K\times1)$ 组成 $8K\times8$
字扩展 CPU 地址线宽于单芯片地址线,字长已匹配 低位地址并联为片内地址,高位译码产生片选 $4\times(16K\times8)$ 组成 $64K\times8$
字位扩展 字数和字长均不足 先按位拼成一组,再用多组做字扩展 $8\times(16K\times4)$ 组成 $64K\times8$
  • 位扩展中各芯片共享同一片内地址。例如两片 $1K\times4$ 并排,分别接 $D_0\sim D_3$ 与 $D_4\sim D_7$,组成 $1K\times8$。
  • 字扩展中,芯片数据线和读写线并联到系统总线;高位地址经译码选择一片,低位地址 $A_0\sim A_{k-1}$ 在该片中选字。
  • 字位扩展示例:8 片 $16K\times4$,两片构成一个 $16K\times8$ 组,4 组再按高地址片选扩为 $64K\times8$。

**原 PDF 的字扩展地址实例。**4 片 $16K\times8$ 芯片组成 $64K\times8$ 主存时,16 位地址中的 $A_{13}\sim A_0$ 负责片内 $16K$ 个单元的字选,$A_{15}A_{14}$ 负责片选:

$A_{15}A_{14}$ 被选芯片 主存地址范围
00 第 1 片 0x0000–0x3FFF
01 第 2 片 0x4000–0x7FFF
10 第 3 片 0x8000–0xBFFF
11 第 4 片 0xC000–0xFFFF

每片恰占 $2^{14}=16384$ 个连续字节地址;四片总共覆盖 $2^{16}=65536$ 个地址。若芯片片选为低电平有效,应由高位译码器产生相应的低有效片选信号,不能把四片的数据输出同时接通。

3.5.2 片选与地址分配

概念 含义
字选 在已选芯片内选具体单元,通常由 CPU 低 $N$ 位地址完成,$N=\log_2$(片内字数)
片选 先确定目标芯片/芯片组,通常由片外高位地址与访存控制共同产生
片选方法 做法 优缺点
线选法 高位地址线直接连各芯片片选端 线路简单、不需译码;但只能使用特定低电平组合,地址不连续且浪费地址空间
译码片选法 高位地址经译码器产生互斥片选 地址连续、利用率高;需外部译码器,如 74LS138 的 3-8 译码
  • 原页的线选图例用 4 片 $2K\times8$ 芯片,$A_0\sim A_{10}$ 作片内地址,4 根高位片选线 $A_{14}\sim A_{11}$ 采用低有效的“仅一位为 0”模式:第 0~3 片分别对应 1110、1101、1011、0111。其余多位同时为 0 的组合会误选多片,不能当正常单片地址。若 CPU 还有 $A_{15}$ 而它不参与片选,则高低半区可能映射到同一物理芯片,产生地址别名;实际连线须明确处理这根地址线。
  • 例如 16 位地址、8 片 $8K\times8$ 芯片:每片需 13 根片内地址线,剩余 3 根高位地址线经 3-8 译码器产生 8 个片选。
  • 连接步骤:先选芯片类型与数量(ROM 常放系统程序/常量、RAM 给用户程序);CPU 低位地址连片内地址,高位地址连外部片选(例如 16 位 CPU 接 $1K\times4$ 芯片时,$A_0\sim A_9$ 负责片内寻址);数据线不匹配先位扩展;读/写线按芯片有效电平连接控制端;片选还要受 CPU 的访存控制(如低有效 MREQ)约束,避免 I/O 周期误选主存。

相关知识

3.6 本节复盘

  • 主存按字节编址时地址线决定可寻址字节数;MAR 对应地址线、MDR 对应数据线,读写都经地址、数据、控制三总线完成。
  • DRAM 地址复用先后送行列地址;行列接近可减引脚,行数较少能减刷新开销。
  • 低位交叉把连续地址分散到不同模块,支持轮流流水或同时并行;高位交叉对单个连续流通常难以提升吞吐,但跨模块访问和多数据流仍可利用模块独立性。
  • 扩容分位扩展、字扩展、字位扩展;低位做字选、高位经线选或译码做片选,最后检查数据线、读写线和访存控制的连接。