Skip to content

408

计算机组成原理

CO-03-06 主存与CPU的连接


一、定位信息

项目内容
所属圈层核心层
前置知识回顾需了解CPU通过地址总线、数据总线和控制总线与主存通信。地址总线指定要访问的存储单元,数据总线传输读写的数据,控制总线发送读/写等控制信号。需了解主存扩展设计(CO-03-04)的基本方法
知识网络定位本单元是主存扩展设计(CO-03-04)的综合应用——将扩展好的存储器与CPU正确连接。这是理解CPU如何访问主存的关键环节,也是Cache(CO-03-08~10)和虚拟存储器(CO-03-11~12)的硬件基础
考点热度等级H级 — 主存与CPU连接的综合设计是高频大题考点,近5年出现≥3次,分值5–10分

二、知识点讲解

2.1 CPU与主存的连接信号

CPU与主存之间通过三组总线连接:

1. 地址总线(Address Bus)

  • 由CPU发出,指定要访问的存储单元地址
  • 地址线的根数决定了可寻址的存储空间大小。nn 根地址线可寻址 2n2^n 个存储单元
  • 通常只连接到主存,单向传输(CPU→主存)

2. 数据总线(Data Bus)

  • 双向传输,用于CPU和主存之间交换数据
  • 数据线的根数决定了每次能传输的数据宽度(字长)
  • 读操作:数据从主存→CPU;写操作:数据从CPU→主存

3. 控制总线(Control Bus)

  • 主要控制信号:
    • 读/写信号(R/W):指定本次操作是读还是写
    • 存储器请求信号(MREQ):表明CPU要访问的是主存而非I/O设备
    • 时钟信号:同步操作时序

2.2 连接设计的核心问题

主存与CPU连接时需要解决以下问题:

  1. 地址线的连接:CPU地址线的低位连接到存储芯片的地址引脚(片内寻址),高位经译码后产生片选信号(片间寻址)
  2. 数据线的连接:数据线宽度需匹配。若CPU数据线宽于芯片数据线,需要位扩展
  3. 控制线的连接:CPU的读写信号连接到存储芯片的OE(输出使能)和WE(写使能),MREQ连接到片选逻辑

2.3 连接设计步骤

步骤一:确定系统需求

  • CPU地址总线宽度(决定可寻址空间)
  • CPU数据总线宽度(决定字长要求)
  • 实际需要的主存容量

步骤二:选择存储芯片

  • 根据容量和字长要求选择合适的芯片型号
  • 计算所需芯片数量(参见CO-03-04的扩展公式)

步骤三:设计地址分配

  • 确定各芯片/芯片组的地址范围
  • 将高位地址分配给片选译码器

步骤四:设计译码电路

  • 使用译码器(如74LS138三八译码器)将高位地址转换为片选信号
  • 有时需要加入控制信号(如MREQ)参与译码

步骤五:连接数据线和控制线

  • 数据线按位扩展规则连接
  • 控制线(R/W、OE、WE)正确连接

2.4 译码器的作用与类型

译码器:将 nn 位二进制输入转换为 2n2^n 个输出中唯一有效的一个。

常用译码器:

  • 2-4译码器:2位输入,4个输出
  • 3-8译码器(74LS138):3位输入,8个输出,另有3个使能端

74LS138译码器的使能端:

  • G1G_1:高电平有效
  • G2A\overline{G_{2A}}:低电平有效
  • G2B\overline{G_{2B}}:低电平有效

只有当 G1=1G_1=1G2A=0\overline{G_{2A}}=0G2B=0\overline{G_{2B}}=0 同时满足时,译码器才工作。使能端可用于接入MREQ等控制信号。

2.5 完整连接示例分析

题目:某CPU地址总线20位(A19~A0),数据总线16位(D15~D0),要求主存从地址00000H开始,配置32KB ROM和960KB RAM(共992KB)。ROM用 16K×816\text{K} \times 8 位芯片,RAM用 64K×164\text{K} \times 1 位芯片。

分析过程

ROM部分

  • 32KB ROM用 16K×816\text{K} \times 8 位芯片
  • 位扩展:16÷8=216 \div 8 = 2 片一组(满足16位字长)
  • 字扩展:32K÷16K=232\text{K} \div 16\text{K} = 2
  • 共需 2×2=42 \times 2 = 4
  • 片内寻址14位(A13~A0),A14作为组选择

RAM部分

  • 960KB RAM用 64K×164\text{K} \times 1 位芯片
  • 位扩展:16÷1=1616 \div 1 = 16 片一组
  • 字扩展:960K÷64K=15960\text{K} \div 64\text{K} = 15
  • 共需 16×15=24016 \times 15 = 240
  • 片内寻址16位(A15~A0),高位地址译码选组

2.6 存储器与CPU的速度匹配

CPU速度通常远快于主存。当CPU发出读请求后,可能需要等待主存完成读取。

解决方法

  1. 插入等待周期:CPU检测到主存未就绪时,插入一个或多个等待周期(Tw),直到主存就绪
  2. 使用更快的存储芯片:选择存取时间更短的SRAM
  3. 使用Cache:在CPU和主存之间增加Cache(CO-03-08的解决方案)

三、记忆与理解辅助

3.1 口诀记忆

口诀:"低位片内高位选,数据对齐控制连"

  • 低位地址线接芯片地址引脚(片内寻址)
  • 高位地址线接译码器产生片选信号(片间选择)
  • 数据线按位扩展规则对齐连接
  • 控制线(R/W、OE、WE、MREQ)正确连接

3.2 对比表:CPU与主存的信号连接

信号类型方向位数连接目标说明
地址总线CPU→主存nn低位→芯片地址引脚;高位→译码器决定寻址范围
数据总线双向ww直接连芯片数据引脚(位扩展后)决定字长
R/WCPU→主存1位连芯片WE读/写控制
MREQCPU→主存1位可参与译码使能存储器请求
时钟CPU→主存1位同步时序同步操作

3.3 解题检查清单

设计主存与CPU连接时,按以下清单逐项检查:

  1. ☐ 芯片数量计算正确
  2. ☐ 地址线分配合理(低位片内,高位译码)
  3. ☐ 数据线位扩展正确(各片接不同位段)
  4. ☐ 片选信号设计正确(译码器输入、使能端)
  5. ☐ 读写控制信号连接正确
  6. ☐ 地址范围连续且无重叠
  7. ☐ 芯片型号和数量与题目要求一致

四、例题与精解

例题1(基础)

题目:某CPU有16位地址线和8位数据线,现用 4K×44\text{K} \times 4 位的SRAM芯片构成8KB的主存,地址从0000H开始。问: (1)需要几片芯片? (2)地址线如何分配? (3)片选信号如何设计?

命题意图:考查字位同时扩展的基本设计。

审题分析:目标8KB = 2K×82\text{K} \times 8 位(字数 = 8K/1 = 8K字,每字8位)。单片 4K×44\text{K} \times 4 位。需要字位同时扩展。

等一下,让我重新分析。目标8KB,CPU数据线8位,所以目标存储器是 8K×88\text{K} \times 8 位。单片 4K×44\text{K} \times 4 位。

解题思路

完整步骤

(1)芯片数:

芯片数=8K4K×84=2×2=4\text{芯片数} = \frac{8\text{K}}{4\text{K}} \times \frac{8}{4} = 2 \times 2 = 4 \text{片}

分2组,每组2片做位扩展。

(2)地址线分配:

  • 单片 4K4\text{K} 字,需要 log2(4096)=12\log_2(4096)=12 根地址线用于片内寻址(A11~A0)
  • 2组需要1根地址线选组(A12)
  • A15~A13未使用(或参与片选使能)

(3)片选信号设计:

  • 第0组(2片):A12=0时选中,地址范围 0000H~0FFFH
  • 第1组(2片):A12=1时选中,地址范围 1000H~1FFFH

每组内:2片芯片的12根地址线并联,数据线一片接D3~D0,另一片接D7~D4,CS并联。

方法反思:字位扩展的关键是先确定分组方案(每组几片),再确定组数。地址线分配时注意"低位片内、高位选组"。


例题2(中等)

题目:某CPU地址总线20位(A19~A0),数据总线8位。要求用以下芯片设计主存:

  • ROM:8K×88\text{K} \times 8 位,用于存放监控程序,地址范围 00000H~03FFFH(16KB)
  • RAM1:32K×832\text{K} \times 8 位,用于存放用户程序,地址范围 04000H~0BFFFH(32KB)
  • RAM2:16K×816\text{K} \times 8 位,用于存放数据,地址范围 20000H~23FFFH(16KB)

问: (1)每种芯片各需要几片? (2)画出地址分配表,说明各组芯片的地址线和片选信号连接。

命题意图:考查多种类型芯片混合设计主存的综合能力。

审题分析:三种芯片,三种用途,地址不连续。需要分别处理。

解题思路:分别计算每种芯片的数量和地址分配。

完整步骤

(1)芯片数量:

  • ROM:16K÷8K=216\text{K} \div 8\text{K} = 2 片(字扩展,字长已满足8位)
  • RAM1:32K÷32K=132\text{K} \div 32\text{K} = 1 片(字长和字数都满足)
  • RAM2:16K÷16K=116\text{K} \div 16\text{K} = 1

(2)地址分配与连接:

ROM(2片,字扩展):

片号地址范围二进制高位特征片选条件
ROM000000H~01FFFHA19~A13=0000000, A12=0A19~A13全0且A12=0
ROM102000H~03FFFHA19~A13=0000000, A12=1A19~A13全0且A12=1
  • 片内寻址:A12~A0(13位,213=8K2^{13}=8\text{K}
  • 片选:A19~A13全为0时,由A12选择ROM0或ROM1

RAM1(1片,无需扩展):

片号地址范围片选条件
RAM104000H~0BFFFHA19~A14=000001(A14=1,其余高位为0)
  • 片内寻址:A14~A0(15位,215=32K2^{15}=32\text{K}
  • 片选:需用A19~A15译码,当地址在04000H~0BFFFH范围内时选中

RAM2(1片):

片号地址范围片选条件
RAM220000H~23FFFHA19~A14=100000(A17=1,其余高位为0)
  • 片内寻址:A13~A0(14位,214=16K2^{14}=16\text{K}
  • 片选:A19~A14=100000时选中

方法反思

  1. 地址不连续时,需要根据每段的地址范围反推片选条件。
  2. 关键技巧:将地址范围的首地址和末地址写成二进制,找出高位地址中不变的部分作为片选条件。
  3. 实际工程中,这种混合设计非常常见(ROM放启动程序,RAM放运行数据)。

五、考情分析

项目内容
近5年考查频次≥3次
常见题型综合应用题(完整设计题)
分值占比5–10分
命题趋势主存与CPU连接的综合设计是传统大题。近年趋势是增加复杂度——混合ROM/RAM、不连续地址分配、结合Cache映射等。需要考生具备完整的系统级设计能力

六、易错点提醒

易错点1

  • 错误表现:将ROM和RAM的数据线混在一起连接,没有区分
  • 错误原因:ROM和RAM是不同类型的芯片,需要分别设计译码逻辑,确保同一时刻只有一种芯片被选中
  • 正确做法:ROM和RAM的地址范围不能重叠。通过译码逻辑确保地址空间的唯一性

易错点2

  • 错误表现:计算地址范围时出错,如将 8K8\text{K} 字的地址范围算错
  • 错误原因:十六进制和二进制转换出错
  • 正确做法nK=n×1024n\text{K} = n \times 1024。8K = 8192 = 2000H,所以8K字的地址范围是0000H~1FFFH(注意最大地址 = 首地址 + 8192 - 1)

易错点3

  • 错误表现:忘记控制信号的连接(如R/W信号未连接到芯片的WE引脚)
  • 错误原因:只关注地址和数据线,忽略了控制线
  • 正确做法:完整的连接必须包括地址线、数据线和控制线三部分。读/写信号、输出使能OE、写使能WE都要正确连接

易错点4

  • 错误表现:译码器的使能端未正确连接MREQ信号
  • 错误原因:不理解使能端的作用
  • 正确做法:MREQ应连接译码器的使能端,确保只有CPU访问存储器时译码器才工作。避免I/O操作时误触发存储器片选

七、来源标注

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

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