Appearance
存储器扩展
考情分析
存储器扩展设计题以大题形式考查。需要掌握:给定主存容量和芯片规格,计算需要多少芯片、如何连接地址线和数据线、片选信号如何产生。
大纲定位
考纲第三章(四)「主存储器」第 3 条:主存和 CPU 之间的连接。
要求到什么程度:会做位扩展/字扩展/字位同时扩展,能画出芯片与地址线、数据线、控制线的连接,能写出每片的地址范围。
基本概念
单个存储芯片的容量有限,实际主存系统通过多芯片组合扩展。
芯片规格表示:
例:
位扩展
目标:字长不够,扩展每个存储单元的位数(数据位宽)。
方法:多芯片数据线并联,地址线和控制线共享。
例:用
- 2 片芯片地址线完全相同(接同一组地址总线)
- 片 1 的 4 位数据线接数据总线低 4 位(
) - 片 2 的 4 位数据线接数据总线高 4 位(
) - 片选
两片相同(同时选中)
位扩展不需要地址译码,所有芯片同时被选中——同一个地址会同时落到所有片上,各片各出一部分位,拼成一个完整的字。

图 7.10 DRAM 芯片的扩展
教材这张图是 8 片 DRAM 位扩展成 64 位双字:同一组行列地址
编者注(易混):「位扩展不需译码、所有片同时选中」说的是在字长这一层。但如果上层按字节编址、而每片一次只出 1 字节,那么"某个字节地址落在哪一片"仍然是有答案的——字节地址的低
位就是片号。这时它等价于按字节交叉的多体结构。两种说法描述的是同一个物理连接,别因为"位扩展不需片选译码"就认为不存在体号/片号。
控制信号怎么接
卷面上画主存–CPU 连接图时,只画地址线和数据线是不够的,下面这几根必须画出来:
| 信号 | 方向 | 接到哪 | 作用 |
|---|---|---|---|
| CPU → 存储器 | 译码器的使能端 | 只有 CPU 真正访存时译码器才输出片选,否则全部芯片不选中 | |
| CPU → 各芯片 | 所有芯片的读写控制端 | 决定这次是读还是写 | |
| CPU → 各芯片 | 芯片输出三态门 | 读操作时打开数据输出,避免总线冲突 | |
| CPU → 各芯片 | 芯片写控制端 | 写操作时有效 |
译码器使能端为什么要接访存信号:地址总线上随时都有电平,若译码器一直使能,就会在 CPU 并未访存时误选中某片。把
如果还要把某段地址空间留给 I/O 或其他芯片,使能端上再串一个由高位地址构成的门电路即可(如
为什么高位接译码器、低位接片内
这条规则大家都会背,但反过来会怎样才是真正的考点。
- 高位接译码器(正确做法):同一片内的地址是连续的。片 0 占
0000H~0FFFH,片 1 占1000H~1FFFH……地址范围表能写成整齐的区间。 - 低位接译码器(若这么接):相邻地址会被分配到不同芯片上——地址 0 在片 0、地址 1 在片 1、地址 2 在片 2……每片内部的地址不再连续。
后者其实就退化成了低位交叉编址(见《多体交叉存储器》)。它不是"错",而是另一种设计目标:交叉编址为的是并行访问带宽,顺序编址为的是地址连续、便于分区。题目问"为什么高位接译码器",答的就是"保证每片地址连续"。
字扩展
目标:容量不够,扩展存储单元个数(地址空间)。
方法:多芯片的数据线并联,高位地址线经译码器产生各芯片的片选信号,低位地址线直接连芯片。
例:用
- 芯片内部地址需
位,接地址总线低 12 位 - 高 2 位
通过 2-4 译码器产生 4 个片选信号,分别连 4 片芯片的 - 每片数据线各自连数据总线(位宽相同不需扩展)
| 地址范围 | 选中芯片 | |
|---|---|---|
| 0000H~0FFFH | 00 | 芯片 0 |
| 1000H~1FFFH | 01 | 芯片 1 |
| 2000H~2FFFH | 10 | 芯片 2 |
| 3000H~3FFFH | 11 | 芯片 3 |
字位同时扩展
目标:字长和容量都需要扩展。
方法:先做位扩展(组内并联),再做字扩展(组间译码)。
例:用
- 同组 2 片:地址线相同,数据线分高低 4 位,片选相同
- 4 组:高 2 位地址经 2-4 译码器产生 4 个片选
地址线分配规律
设芯片有
- 低
位:直接连各芯片地址线(片内寻址) - 高
位:用于片选译码(选择哪一组/哪一片)
译码方式
全译码
高位地址全部参与译码,每个地址唯一对应一个存储单元。无地址重叠,但译码逻辑较复杂。
部分译码
只用部分高位地址译码,剩余高位悬空。简单但存在地址重叠(多个地址对应同一物理位置)。
线选法
用单根高位地址直接连芯片片选(低电平有效)。最简单,但浪费地址空间,且只允许一次选中一片。
综合计算模板
先把符号钉死,这里错一个量纲后面全错:
| 符号 | 含义 | 单位 |
|---|---|---|
| 主存总单元数(按字节编址时即字节数) | 个 | |
| 主存位宽 | 位 | |
| 芯片的单元数(如 | 个 | |
| 芯片的位宽(如 | 位 |
编者注(易错):
是单元数不是字节数。 的芯片容量是 2 KB,但 ,片内地址 位。若把 当成 2 KB 去取对数会得到 11 位,差一位,片选和地址范围全盘错。
- 确定主存总单元数
和位宽 位 - 确定芯片规格:
单元 × 位 - 计算芯片数:
- 计算地址线分配:低
位接芯片内部地址,高 位接译码器 - 写出每组芯片的地址范围
反向题:由地址范围倒推(真题最爱的变体)
正向题给芯片求范围,真题更爱反着考:给地址范围,求容量、芯片连接和片选逻辑。
例:某 8 位机主存地址 16 位(8000H ~ 9FFFH。 (1) 该区域容量多大?(2) 写出片选逻辑;(3) 若用 2K×8 位芯片实现,如何连接?
解:
(1) 容量 = 9FFFH − 8000H + 1 = 2000H =
(2) 把范围两端写成二进制找不变的高位:
8000H = 100 0 0000 0000 0000
9FFFH = 100 1 1111 1111 1111
↑↑↑
A15 A14 A13 = 100 固定,A12~A0 跑遍全 0 到全 1区域内恒有
(3) 8 KB ÷ 2 KB = 4 片字扩展。每片片内地址 0800H):
| 芯片 | 地址范围 | |
|---|---|---|
| 0 | 00 | 8000H ~ 87FFH |
| 1 | 01 | 8800H ~ 8FFFH |
| 2 | 10 | 9000H ~ 97FFH |
| 3 | 11 | 9800H ~ 9FFFH |
解题口诀:范围相减加一得容量;两端写二进制,高位不变段就是片选条件,变化段从高到低依次给译码器和片内地址。
考点清单
- 位扩展:数据线扩宽,不需要译码,芯片同时选中
- 字扩展:地址空间扩大,高位地址需要译码产生片选
- 字位同时扩展:先分组(位扩展),组内共享片选,组间译码
- 总芯片数 = 位扩展倍数 × 字扩展倍数
- 片内寻址用低位地址,片选用高位地址
- 全译码无地址重叠,部分译码有地址重叠