Appearance
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发出,指定要访问的存储单元地址
- 地址线的根数决定了可寻址的存储空间大小。 根地址线可寻址 个存储单元
- 通常只连接到主存,单向传输(CPU→主存)
2. 数据总线(Data Bus)
- 双向传输,用于CPU和主存之间交换数据
- 数据线的根数决定了每次能传输的数据宽度(字长)
- 读操作:数据从主存→CPU;写操作:数据从CPU→主存
3. 控制总线(Control Bus)
- 主要控制信号:
- 读/写信号(R/W):指定本次操作是读还是写
- 存储器请求信号(MREQ):表明CPU要访问的是主存而非I/O设备
- 时钟信号:同步操作时序
2.2 连接设计的核心问题
主存与CPU连接时需要解决以下问题:
- 地址线的连接:CPU地址线的低位连接到存储芯片的地址引脚(片内寻址),高位经译码后产生片选信号(片间寻址)
- 数据线的连接:数据线宽度需匹配。若CPU数据线宽于芯片数据线,需要位扩展
- 控制线的连接:CPU的读写信号连接到存储芯片的OE(输出使能)和WE(写使能),MREQ连接到片选逻辑
2.3 连接设计步骤
步骤一:确定系统需求
- CPU地址总线宽度(决定可寻址空间)
- CPU数据总线宽度(决定字长要求)
- 实际需要的主存容量
步骤二:选择存储芯片
- 根据容量和字长要求选择合适的芯片型号
- 计算所需芯片数量(参见CO-03-04的扩展公式)
步骤三:设计地址分配
- 确定各芯片/芯片组的地址范围
- 将高位地址分配给片选译码器
步骤四:设计译码电路
- 使用译码器(如74LS138三八译码器)将高位地址转换为片选信号
- 有时需要加入控制信号(如MREQ)参与译码
步骤五:连接数据线和控制线
- 数据线按位扩展规则连接
- 控制线(R/W、OE、WE)正确连接
2.4 译码器的作用与类型
译码器:将 位二进制输入转换为 个输出中唯一有效的一个。
常用译码器:
- 2-4译码器:2位输入,4个输出
- 3-8译码器(74LS138):3位输入,8个输出,另有3个使能端
74LS138译码器的使能端:
- :高电平有效
- :低电平有效
- :低电平有效
只有当 、、 同时满足时,译码器才工作。使能端可用于接入MREQ等控制信号。
2.5 完整连接示例分析
题目:某CPU地址总线20位(A19~A0),数据总线16位(D15~D0),要求主存从地址00000H开始,配置32KB ROM和960KB RAM(共992KB)。ROM用 位芯片,RAM用 位芯片。
分析过程:
ROM部分:
- 32KB ROM用 位芯片
- 位扩展: 片一组(满足16位字长)
- 字扩展: 组
- 共需 片
- 片内寻址14位(A13~A0),A14作为组选择
RAM部分:
- 960KB RAM用 位芯片
- 位扩展: 片一组
- 字扩展: 组
- 共需 片
- 片内寻址16位(A15~A0),高位地址译码选组
2.6 存储器与CPU的速度匹配
CPU速度通常远快于主存。当CPU发出读请求后,可能需要等待主存完成读取。
解决方法:
- 插入等待周期:CPU检测到主存未就绪时,插入一个或多个等待周期(Tw),直到主存就绪
- 使用更快的存储芯片:选择存取时间更短的SRAM
- 使用Cache:在CPU和主存之间增加Cache(CO-03-08的解决方案)
三、记忆与理解辅助
3.1 口诀记忆
口诀:"低位片内高位选,数据对齐控制连"
- 低位地址线接芯片地址引脚(片内寻址)
- 高位地址线接译码器产生片选信号(片间选择)
- 数据线按位扩展规则对齐连接
- 控制线(R/W、OE、WE、MREQ)正确连接
3.2 对比表:CPU与主存的信号连接
| 信号类型 | 方向 | 位数 | 连接目标 | 说明 |
|---|---|---|---|---|
| 地址总线 | CPU→主存 | 位 | 低位→芯片地址引脚;高位→译码器 | 决定寻址范围 |
| 数据总线 | 双向 | 位 | 直接连芯片数据引脚(位扩展后) | 决定字长 |
| R/W | CPU→主存 | 1位 | 连芯片WE | 读/写控制 |
| MREQ | CPU→主存 | 1位 | 可参与译码使能 | 存储器请求 |
| 时钟 | CPU→主存 | 1位 | 同步时序 | 同步操作 |
3.3 解题检查清单
设计主存与CPU连接时,按以下清单逐项检查:
- ☐ 芯片数量计算正确
- ☐ 地址线分配合理(低位片内,高位译码)
- ☐ 数据线位扩展正确(各片接不同位段)
- ☐ 片选信号设计正确(译码器输入、使能端)
- ☐ 读写控制信号连接正确
- ☐ 地址范围连续且无重叠
- ☐ 芯片型号和数量与题目要求一致
四、例题与精解
例题1(基础)
题目:某CPU有16位地址线和8位数据线,现用 位的SRAM芯片构成8KB的主存,地址从0000H开始。问: (1)需要几片芯片? (2)地址线如何分配? (3)片选信号如何设计?
命题意图:考查字位同时扩展的基本设计。
审题分析:目标8KB = 位(字数 = 8K/1 = 8K字,每字8位)。单片 位。需要字位同时扩展。
等一下,让我重新分析。目标8KB,CPU数据线8位,所以目标存储器是 位。单片 位。
解题思路:
完整步骤:
(1)芯片数:
分2组,每组2片做位扩展。
(2)地址线分配:
- 单片 字,需要 根地址线用于片内寻址(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: 位,用于存放监控程序,地址范围 00000H~03FFFH(16KB)
- RAM1: 位,用于存放用户程序,地址范围 04000H~0BFFFH(32KB)
- RAM2: 位,用于存放数据,地址范围 20000H~23FFFH(16KB)
问: (1)每种芯片各需要几片? (2)画出地址分配表,说明各组芯片的地址线和片选信号连接。
命题意图:考查多种类型芯片混合设计主存的综合能力。
审题分析:三种芯片,三种用途,地址不连续。需要分别处理。
解题思路:分别计算每种芯片的数量和地址分配。
完整步骤:
(1)芯片数量:
- ROM: 片(字扩展,字长已满足8位)
- RAM1: 片(字长和字数都满足)
- RAM2: 片
(2)地址分配与连接:
ROM(2片,字扩展):
| 片号 | 地址范围 | 二进制高位特征 | 片选条件 |
|---|---|---|---|
| ROM0 | 00000H~01FFFH | A19~A13=0000000, A12=0 | A19~A13全0且A12=0 |
| ROM1 | 02000H~03FFFH | A19~A13=0000000, A12=1 | A19~A13全0且A12=1 |
- 片内寻址:A12~A0(13位,)
- 片选:A19~A13全为0时,由A12选择ROM0或ROM1
RAM1(1片,无需扩展):
| 片号 | 地址范围 | 片选条件 |
|---|---|---|
| RAM1 | 04000H~0BFFFH | A19~A14=000001(A14=1,其余高位为0) |
- 片内寻址:A14~A0(15位,)
- 片选:需用A19~A15译码,当地址在04000H~0BFFFH范围内时选中
RAM2(1片):
| 片号 | 地址范围 | 片选条件 |
|---|---|---|
| RAM2 | 20000H~23FFFH | A19~A14=100000(A17=1,其余高位为0) |
- 片内寻址:A13~A0(14位,)
- 片选:A19~A14=100000时选中
方法反思:
- 地址不连续时,需要根据每段的地址范围反推片选条件。
- 关键技巧:将地址范围的首地址和末地址写成二进制,找出高位地址中不变的部分作为片选条件。
- 实际工程中,这种混合设计非常常见(ROM放启动程序,RAM放运行数据)。
五、考情分析
| 项目 | 内容 |
|---|---|
| 近5年考查频次 | ≥3次 |
| 常见题型 | 综合应用题(完整设计题) |
| 分值占比 | 5–10分 |
| 命题趋势 | 主存与CPU连接的综合设计是传统大题。近年趋势是增加复杂度——混合ROM/RAM、不连续地址分配、结合Cache映射等。需要考生具备完整的系统级设计能力 |
六、易错点提醒
易错点1
- 错误表现:将ROM和RAM的数据线混在一起连接,没有区分
- 错误原因:ROM和RAM是不同类型的芯片,需要分别设计译码逻辑,确保同一时刻只有一种芯片被选中
- 正确做法:ROM和RAM的地址范围不能重叠。通过译码逻辑确保地址空间的唯一性
易错点2
- 错误表现:计算地址范围时出错,如将 字的地址范围算错
- 错误原因:十六进制和二进制转换出错
- 正确做法:。8K = 8192 = 2000H,所以8K字的地址范围是0000H~1FFFH(注意最大地址 = 首地址 + 8192 - 1)
易错点3
- 错误表现:忘记控制信号的连接(如R/W信号未连接到芯片的WE引脚)
- 错误原因:只关注地址和数据线,忽略了控制线
- 正确做法:完整的连接必须包括地址线、数据线和控制线三部分。读/写信号、输出使能OE、写使能WE都要正确连接
易错点4
- 错误表现:译码器的使能端未正确连接MREQ信号
- 错误原因:不理解使能端的作用
- 正确做法:MREQ应连接译码器的使能端,确保只有CPU访问存储器时译码器才工作。避免I/O操作时误触发存储器片选
七、来源标注
- 依据2026考研统考大纲(408-计算机组成原理-第三章"存储器层次结构")
- 依据大学本科经典教材共识:唐朔飞《计算机组成原理》、白中英《计算机组成原理》