存储器与 CPU 的连接
这一节把前三节合成一道题:给定 CPU 的地址线和数据线、给定可用的芯片规格,画出连接图并写出地址分配表。
它没有新知识点,只有一套固定步骤。 题目所有的难点都在前三节已经处理过:容量算法在 3.3.2,片选和地址范围在 3.3.3。这里要做的是把步骤走完并检查一遍。
机制
六步连接法
第一步:确定编址单位与总容量。 从数据总线宽度定存储字长,从地址线根数定单元数。RAM 区和 ROM 区分别算,题目通常会给各自的地址范围。
第二步:选芯片、定片数。 按 3.3.2 的公式算出位扩展系数与字扩展系数,并用两条路互相自检。
第三步:分配地址空间,列出地址分配表。 按 3.3.3 的模板写出每片(或每组)的片选码与起止地址。这张表是全题的骨架,先写表再画图。
第四步:连地址线。
- 低
位( 单片单元数)直接接每片的地址引脚 - 高位进译码器,译码输出作片选
- 同一组内各片的地址引脚完全并联
第五步:连数据线。
- 位扩展的各片分段接不同的数据线(第 0 片接
,第 1 片接 ,依此类推) - 不同组的对应片并联在同一段数据线上,靠片选错开
第六步:连控制线。
- RAM:读线和写线都接(
、 或统一的 ) - ROM 只接读线,不接写线
- 片选
接译码器输出
四条检查
画完必须回头查这四项,它们对应四类典型错误:
| 检查项 | 通不过说明什么 |
|---|---|
| 数据线是否接满 | 位扩展系数算错,字长没凑够 |
| 地址是否冲突 | 两片的片选可能同时有效,会造成总线竞争 |
| 地址范围是否覆盖题目要求 | 字扩展系数算错,或片选码写错 |
| ROM 是否误接了写线 | 概念性错误 |
“地址冲突”和”地址重叠”的区别见 3.3.3:重叠可以接受,冲突不行。
速度匹配
CPU 的读写时序有固定的节拍,而存储芯片的存取时间未必跟得上。两种处理方式:
插入等待周期:CPU 在总线周期中插入若干个等待状态(Wait State),由存储器通过 READY / WAIT 信号通知”数据还没好”。这是同步总线上的标准做法,见 第 6 章。
换更快的芯片或加 Cache:前者提高单次速度,后者提高平均速度。只有后者是本章意义上的”降低延迟”(见 3.1.2)。
驱动能力也是一个现实约束:一根地址线要驱动几十片芯片时需加驱动器/缓冲器。408 只要求知道有这回事,不做计算。
边界
RAM 与 ROM 在同一个地址空间里共存是常态,不是特例。 典型布局是低地址段放 ROM(上电后 CPU 从固定地址取第一条指令,那里必须是非易失的),高地址段放 RAM。这与 OS 1.5 操作系统引导中”CPU 复位后从 ROM 中的 BIOS 开始执行”是同一件事的硬件侧描述。
位扩展的各片”共用片选”,所以它们在地址分配表里占同一行。 地址分配表的行数 = 组数,不是片数。这是列表时最常见的错误。
译码器的使能端也要接地址线。 一个 2-4 译码器只有 2 根输入,但若高位地址还有多余的根数,它们必须接到译码器的使能端,否则就变成了部分译码、产生地址重叠。题目若要求”全译码”,检查使能端是否用满是必查项。
存储器与 CPU 的连接题不涉及刷新。 刷新由存储器控制器自动完成,不出现在 CPU 与芯片的连接图上(见 3.2.1)。
对照速查
| 线 | 接法 |
|---|---|
| 低位地址线 | 直接并联到各片地址引脚,根数 |
| 高位地址线 | 进译码器(含使能端),输出作片选 |
| 数据线 | 位扩展分段,组间并联 |
| 读线 | RAM、ROM 都接 |
| 写线 | 只接 RAM |
| 片选 | 译码器输出 |
| 步骤 | 结论 |
|---|---|
| 1 | 编址单位 + 总容量 |
| 2 | 片数 = 位扩展系数 × 字扩展系数 |
| 3 | 先写地址分配表 |
| 4~6 | 地址线 / 数据线 / 控制线 |
| 查 | 数据线接满、无地址冲突、覆盖完整、ROM 不接写线 |
考点
- 六步固定流程,其中第三步的地址分配表要先于连接图写出
- 低位地址接芯片、高位进译码器,译码器使能端也要用满才算全译码
- 位扩展分段接数据线并共用片选,地址分配表按组列行
- ROM 不接写线
- 地址冲突是错误,地址重叠不是
- 速度不匹配靠插入等待周期(READY 信号)解决
- 刷新不出现在连接图上
链接
- 🏠 返回总览:计算机组成原理第 3 章:存储系统总览
- ⬅️ 上一节:3.3.3 存储芯片的地址分配和片选
- ➡️ 下一节:3.4.1 磁盘存储器
- 🔗 3.3.2 主存容量的扩展(第二步的公式)
- 🔗 第 6 章 总线(等待周期与总线定时)
- 🌐 跨科:OS 1.5 操作系统引导
- 📖 名词库:第 3 章名词库