Skip to content

408

计算机组成原理

CO-03-04 主存储器设计(字扩展/位扩展/字位同时扩展)


一、定位信息

项目内容
所属圈层核心层
前置知识回顾需了解存储芯片的基本参数(容量表示为"字数×位数"),了解地址线和数据线的作用(地址线用于选择存储单元,数据线用于传送数据),了解片选信号CS(Chip Select)的作用
知识网络定位本单元是DRAM(CO-03-02)的直接应用——当单片存储芯片的容量或字长不能满足要求时,需要通过扩展技术将多片芯片组合使用。这是主存与CPU连接(CO-03-06)的基础
考点热度等级H级 — 主存扩展设计是高频综合题考点,近5年出现≥3次,常以综合应用题形式出现,分值5–8分

二、知识点讲解

2.1 存储芯片的基本参数

一个存储芯片的容量通常表示为 K×MK \times M

  • KK:字数(可寻址的存储单元数),需要 log2K\log_2 K 根地址线
  • MM:字长(每个存储单元的位数),需要 MM 根数据线

例如:某芯片规格为 1K×81\text{K} \times 8 位,表示有1024个存储单元,每个单元8位。需要10根地址线(210=10242^{10}=1024),8根数据线。

2.2 位扩展(位并联扩展)

目的:增加存储器的字长(位数),字数不变。

适用场景:单片芯片的字长不够。例如CPU数据总线为32位,但单片芯片只有8位宽。

方法:将多片芯片的地址线、片选信号、读写控制线并联,各芯片的数据线分别连接到数据总线的不同位段

举例:用 1K×81\text{K} \times 8 位的芯片组成 1K×321\text{K} \times 32 位的存储器。

需要芯片数 = 328=4\frac{32}{8} = 4

连接方式:

  • 4片芯片的10根地址线并联,接CPU地址总线的低10位
  • 4片芯片的片选信号CS并联(同时选中)
  • 第1片数据线接D0~D7,第2片接D8~D15,第3片接D16~D23,第4片接D24~D31

2.3 字扩展(字串联扩展/地址扩展)

目的:增加存储器的字数(地址空间),字长不变。

适用场景:单片芯片的地址空间不够。例如需要64KB存储空间,但单片只有16KB。

方法:将多片芯片的数据线并联,各芯片的地址线也并联(接地址总线低位),用高位地址经译码后产生片选信号来选择不同的芯片。

举例:用 16K×816\text{K} \times 8 位的芯片组成 64K×864\text{K} \times 8 位的存储器。

需要芯片数 = 64K16K=4\frac{64\text{K}}{16\text{K}} = 4

连接方式:

  • 4片芯片的14根地址线(214=163842^{14}=16384)并联,接CPU地址总线的低14位(A0~A13)
  • 数据线8根全部并联,接CPU数据总线D0~D7
  • 高2位地址(A14、A15)通过2-4译码器产生4个片选信号,分别接4片芯片的CS
A15 A14选中芯片地址范围
0 0第0片0000H~3FFFH
0 1第1片4000H~7FFFH
1 0第2片8000H~BFFFH
1 1第3片C000H~FFFFH

2.4 字位同时扩展

目的:同时增加字数和字长。

适用场景:单片芯片的字数和字长都不够。

方法:先做位扩展满足字长要求,再做字扩展满足字数要求(或反过来)。

举例:用 16K×416\text{K} \times 4 位的芯片组成 64K×1664\text{K} \times 16 位的存储器。

分析步骤:

  1. 位扩展:字长从4位扩展到16位,每组需要 164=4\frac{16}{4} = 4
  2. 字扩展:字数从16K扩展到64K,需要 64K16K=4\frac{64\text{K}}{16\text{K}} = 4
  3. 总芯片数 = 4×4=164 \times 4 = 16

连接方式:

  • 每组内4片芯片做位扩展:地址线并联,数据线拼接
  • 组间做字扩展:组内芯片的CS并联,组间用高位地址译码选组

2.5 扩展设计的通用公式

所需芯片数=目标容量的字数单片字数×目标容量的位数单片位数\text{所需芯片数} = \frac{\text{目标容量的字数}}{\text{单片字数}} \times \frac{\text{目标容量的位数}}{\text{单片位数}}


三、记忆与理解辅助

3.1 口诀记忆

口诀:"位扩数据分着连,字扩片选译码选,字位两步一起算"

  • 位扩展:数据线分开连接(各片接不同位段),地址线并联
  • 字扩展:片选信号用高位地址译码产生,数据线并联
  • 字位扩展:先位后字(或先字后位),两步分别计算

3.2 对比表:三种扩展方式

对比项位扩展字扩展字位同时扩展
增加的目标字长(位数)字数(地址空间)字长+字数
地址线连接各片并联各片并联(低位),高位译码组内并联,组间译码
数据线连接各片接不同位段各片并联组内拼接,组间并联
片选信号各片并联(同时选中)译码器分别选中组内并联,译码器选组
所需芯片数目标位数÷单片位数目标字数÷单片字数两者之积

3.3 解题步骤模板

存储器扩展设计题的通用解题步骤:

  1. 确定需求:明确目标存储器的容量(字数×位数)
  2. 计算芯片数芯片数=目标字数单片字数×目标位数单片位数\text{芯片数} = \frac{\text{目标字数}}{\text{单片字数}} \times \frac{\text{目标位数}}{\text{单片位数}}
  3. 确定地址线分配
    • 低位地址线用于片内寻址(位数 = log2\log_2 单片字数)
    • 高位地址线用于片选译址(字扩展时需要)
  4. 确定数据线连接:位扩展时各片接不同位段
  5. 设计片选逻辑:字扩展时用高位地址译码产生片选信号

3.4 关键计算技巧

  • 地址范围计算:若芯片起始地址为 AA,容量为 nn 个字,则地址范围为 AAA+n1A+n-1
  • 地址线数 = log2\log_2(字数)
  • 译码器输入位数 = log2\log_2(芯片组数)

四、例题与精解

例题1(基础)

题目:用 4K×84\text{K} \times 8 位的SRAM芯片,设计一个 16K×816\text{K} \times 8 位的存储器。问: (1)需要几片芯片? (2)画出连接框图(文字描述),说明地址线、数据线和片选信号的连接方式。

命题意图:考查字扩展的基本设计方法。

审题分析:目标 16K×816\text{K} \times 8,单片 4K×84\text{K} \times 8。字长相同(8位),字数不够,需要字扩展。

解题思路:字数从4K扩展到16K,字长不变。

完整步骤

(1)芯片数:

芯片数=16K4K×88=4×1=4\text{芯片数} = \frac{16\text{K}}{4\text{K}} \times \frac{8}{8} = 4 \times 1 = 4 \text{片}

(2)连接方式:

  • 地址线:单片 4K4\text{K} 字需要 log2(4096)=12\log_2(4096)=12 根地址线。4片芯片的12根地址线并联,接CPU地址总线的低12位(A0~A11)。
  • 数据线:4片芯片的8根数据线并联,接CPU数据总线D0~D7。
  • 片选信号:高2位地址(A12、A13)通过2-4译码器产生4个片选信号,分别接4片芯片的CS。

地址分配:

A13 A12选中芯片地址范围
0 0第0片0000H~0FFFH
0 1第1片1000H~1FFFH
1 0第2片2000H~2FFFH
1 1第3片3000H~3FFFH

方法反思:字扩展的关键是"低位地址片内寻址,高位地址片间译码"。地址范围的计算可用十六进制快速推算。


例题2(中等)

题目:某CPU的地址总线为20位,数据总线为16位。现用 8K×48\text{K} \times 4 位的SRAM芯片构成该CPU的主存,要求主存地址从00000H开始连续编址,最大容量为 64K×1664\text{K} \times 16 位。问: (1)共需要多少片SRAM芯片? (2)需要多少根地址线用于片内寻址?多少根用于片选译码? (3)片选译码电路如何设计?

命题意图:考查字位同时扩展的综合设计能力。

审题分析:目标 64K×1664\text{K} \times 16,单片 8K×48\text{K} \times 4。字数和字长都需要扩展。

解题思路:先位扩展(4→16),再字扩展(8K→64K)。

完整步骤

(1)芯片数:

芯片数=64K8K×164=8×4=32\text{芯片数} = \frac{64\text{K}}{8\text{K}} \times \frac{16}{4} = 8 \times 4 = 32 \text{片}

(2)地址线分配:

  • 片内寻址:log2(8K)=log2(8192)=13\log_2(8\text{K}) = \log_2(8192) = 13 根地址线(A0~A12)
  • 片选译码:64K÷8K=864\text{K} \div 8\text{K} = 8 组,需要 log2(8)=3\log_2(8) = 3 根地址线(A13~A15)
  • 总共使用16位地址(A0~A15),符合 64K=21664\text{K} = 2^{16}

(3)片选译码设计:

  • 位扩展:每4片为一组,4片芯片的13根地址线并联,数据线分别接D0~D3、D4~D7、D8~D11、D12~D15。组内4片的CS并联(同时选中)。
  • 字扩展:共8组,用A13、A14、A15通过3-8译码器产生8个片选信号,分别接8组的CS。
A15 A14 A13选中组地址范围
0 0 0第0组00000H~01FFFH
0 0 1第1组02000H~03FFFH
0 1 0第2组04000H~05FFFH
0 1 1第3组06000H~07FFFH
1 0 0第4组08000H~09FFFH
1 0 1第5组0A000H~0BFFFH
1 1 0第6组0C000H~0DFFFH
1 1 1第7组0E000H~0FFFFH

方法反思

  1. 字位扩展的关键是先确定"分组"方案:每组几片(由位扩展决定),共几组(由字扩展决定)。
  2. 地址线分配要清晰:低位给片内,高位给译码器。
  3. 地址范围用十六进制表示更直观,注意 213=8192=2000H2^{13}=8192=2000\text{H}

五、考情分析

项目内容
近5年考查频次≥3次
常见题型综合应用题(设计题),偶尔选择题
分值占比5–8分(综合题)
命题趋势主存扩展设计是传统高频考点。近年趋势是与Cache映射、地址转换等知识点结合出大题,考查考生对整个存储系统的综合理解

六、易错点提醒

易错点1

  • 错误表现:计算芯片数时,分子分母颠倒(如把"目标÷单片"写成"单片÷目标")
  • 错误原因:对"用小拼大"的逻辑理解不清
  • 正确做法:芯片数 = 目标÷单片(字数和位数分别计算再相乘)。记住"需要多少个小的来拼一个大的",一定是大的除以小的

易错点2

  • 错误表现:字扩展时忘记用高位地址译码,直接把所有地址线并联
  • 错误原因:混淆了位扩展和字扩展的地址线连接方式
  • 正确做法:位扩展时地址线全部并联(因为各片寻址范围相同);字扩展时低位并联用于片内寻址,高位译码用于选片

易错点3

  • 错误表现:地址范围计算错误,如将 16K16\text{K} 字的地址范围写成0000H~4000H
  • 错误原因:十六进制计算错误,16K=16384=4000H16\text{K}=16384=4000\text{H},但最大地址是 3FFFH3\text{FFFH}(从0开始编号)
  • 正确做法:地址从0开始,nn 个字的地址范围是 00n1n-1。十六进制下,16K=4000H16\text{K}=4000\text{H},最大地址是 3FFFH3\text{FFFH}

易错点4

  • 错误表现:位扩展时,各片数据线接错位段(如两片都接D0~D3)
  • 错误原因:没有理解位扩展是将各片的输出"拼接"成更宽的数据
  • 正确做法:第1片接D0~D(M-1),第2片接D(M)~D(2M-1),依此类推,各片接不同的位段

七、来源标注

  • 依据2026考研统考大纲(408-计算机组成原理-第三章"存储器层次结构")
  • 依据大学本科经典教材共识:唐朔飞《计算机组成原理》、白中英《计算机组成原理》

考研全科复习资料 - 基于2026考研统考大纲