上学期期末回忆资料:复习重点与计算题#
一、核心考点体系#
1. 总线判优控制与总线仲裁#
- 主设备 vs 从设备:
- 主设备:对总线具有控制权,可主动启动总线传输。
- 从设备:只能响应从主设备发过来的总线命令,对总线没有控制权。
- 集中控制优先权仲裁方式:
- 链式查询:硬件连接最简单,只需很少几根控制线。但对电路故障最敏感(一旦中间某处断开,其后的设备均无法使用总线)。
- 计数器定时查询:通过计数器的计数值来查询设备。线数较多,但优先级可通过软件灵活改变。
- 独立请求方式:响应速度最快,每个设备都有独立的请求线 and 允许线,但硬件控制最为复杂。
- 异步通信的特点:
- 没有公共的时钟标准,采用**应答方式(握手信号)**进行通信。具体包括不互锁、半互锁和全互锁三种联络方式。
2. 存储器系统与 Cache-主存层次#
- 存储系统层次结构:
- Cache - 主存:主要解决 CPU 和主存速度不匹配的问题(追求高速度)。
- 主存 - 辅存:主要解决存储系统容量不足的问题(追求大容量)。
- 主存寻址范围计算:
- 设主存容量为 128MB,字长为 8B。则按字编址时,寻址范围为:
寻址范围=8B128MB=16M
- 字节寻址的主存地址分配:
- 大端方式:高位字节存放在低地址,低位字节存放在高地址。
- 小端方式:低位字节存放在低地址,高位字节存放在高地址。
- 双端口存储器与多模块交叉存储器:
- 双端口 RAM:具有两组相互独立的读写控制电路,当左端口和右端口对同一地址同时执行写操作或一读一写时,会发生读/写冲突。
- 低位交叉编址:模块号用低位地址表示,体内地址用高位地址表示。目的是增加存储器带宽,使各模块能并行工作。
- Cache - 主存地址映射方式:
- 直接映射:主存块只能映射到固定的 Cache 块中。结构最简单,但块冲突概率最高。
- 全相联映射:主存块可以映射到任意 Cache 块中。块冲突概率最低,但需要按内容寻址的相联存储器,硬件成本高。
- 组相联映射:将 Cache 分组,主存块映射到固定组的任意块中。是前两者的折中。
3. 中断系统与 DMA 方式#
- 中断响应条件:
- CPU 处于开中断状态(允许中断触发器为 1)。
- 一条指令执行周期结束。
- 存在中断源的请求。
- 中断隐指令功能:
- 保护程序断点(PC 入栈)。
- 寻找中断服务程序的入口地址(硬件向量法或软件查询法)。
- 关中断(保护现场时不被新中断打扰)。
- DMA 与中断的区别:
- 数据通路:DMA 方式下,数据直接在主存与外设之间传输,不需要 CPU 干预;中断方式则需要 CPU 执行中断服务程序传送数据。
- 存储周期挪用:DMA 传送一个字会占用一个存储周期(挪用 CPU 访存周期)。
- DMA 与主存交换数据的方法:
- 停止 CPU 访问主存。
- 周期挪用。
- DMA 与 CPU 交替访问(双单总线交替)。
4. 运算器与指令系统#
- 补码除法:
- 补码加减交替法(不恢复余数法):符号位与数值位一起参与运算。
- 在补码除法中,商符是在求商的过程中自动形成的。
- 寻址方式:
- 指令寻址:顺序寻址((PC)+1→PC 或 (PC)+字长→PC)和跳跃寻址(由转移指令给出)。
- 数据寻址:立即寻址、直接寻址、隐含寻址、间接寻址、寄存器寻址、寄存器间接寻址、基址寻址、变址寻址、相对寻址、堆栈寻址。
二、经典计算大题#
1. 存储器容量扩展与接口连接设计#
题目:设 CPU 有 16 根地址线、8 根数据线,并用 MREQ 作为访存控制信号(低电平有效),用 WR 作为读/写控制信号(高电平为读,低电平为写)。现有下列存储芯片:1K×4 位 RAM、4K×8 位 RAM品、8K×8 位 RAM、2K×8 位 ROM、4K×8 位 ROM、8KX8位ROM及74138译码器和各种门电路。画出 CPU 与存储器的连接图,要求如下:
- 主存地址空间分配:
- 6000H∼67FFH 为系统程序区。
- 6800H∼6BFFH 为用户程序区。
- 合理选用上述存储芯片,说明各选几片。
- 详细画出存储芯片的片选逻辑图。
解析:
- 地址空间计算:
- 系统程序区:6000H∼67FFH。地址长度为 67FFH−6000H+1=800H=2048 字节 = 2KB。
- 选择 2K×8 位的 ROM 芯片 1 片。
- 用户程序区:6800H∼6BFFH。地址长度为 6BFFH−6800H+1=400H=1024 字节 = 1KB。
- 选择 1K×4 位的 RAM 芯片 2 片 进行位扩展(组合为 1K×8 位)。
2. 汉明码纠错与译码#
题目:已知接收到下列汉明码,分别写出它们所对应的欲传送代码(原始数据):
- 1100000(按偶校验配置)
- 1100010(按偶校验配置)
- 1101001(按偶校验配置)
- 0011001(按奇校验配置)
解析:
- 设汉明码共 7 位 H7H6H5H4H3H2H1,其中 H1,H2,H4 为校验位,信息位为 H3,H5,H6,H7。
- 校验方程组(按偶校验):
P1=H1⊕H3⊕H5⊕H7
P2=H2⊕H3⊕H6⊕H7
P3=H4⊕H5⊕H6⊕H7
- 以第 1 小题接收码 1100000 为例:
- H7=1,H6=1,H5=0,H4=0,H3=0,H2=0,H1=0。
- 计算纠错指点:
- P1=0⊕0⊕0⊕1=1
- P2=0⊕0⊕1⊕1=0
- P3=0⊕0⊕1⊕1=0
- 指示出错位置为 P3P2P1=0012=1。说明第 1 位 H1 出错,纠错后 H1=1。
- 欲传送代码为 H7H6H5H3=1100。
3. Cache 地址结构与容量设计#
题目:设主存容量为 256K 字,Cache 容量为 2K 字,块长为 4。
- 在四路组相联映射方式下,设计主存地址格式并指出各字段的位数。
解析:
- 主存容量为 256K=218 字,主存地址总位数为 18 位。
- Cache 容量为 2K=211 字,块长为 4=22 字。
- Cache 总块数 = 211/22=512 块。
- 因为是四路组相联(即每组包含 4 块),所以 Cache 组数 = 512/4=128=27 组。
- 主存地址格式划分为:
- 主存字块内地址:占 log24=2 位。
- 组地址:占 log2128=7 位。
- 主存字块标记(Tag):占 18−7−2=9 位。
- 主存地址字段结构:
| Tag (9位) | 组地址 (7位) | 字块内地址 (2位) |
|---|
4. Cache 命中率与组织设计#
题目:设某机主存容量为 4MB,Cache 容量为 16KB,每字块有 8 个字,每字 32 位。设计一个四路组相联映射的 Cache 组织。
- 画出主存地址字段中各段的位数。
- 设 Cache 的初态为空,CPU 依次从主存第 0,1,2,…,89 号单元读出 90 个字(主存一次读出一个字),并重复按此次序读 8 次,问命中率是多少?
解析:
- 地址划分:
- 按字节编址,主存容量为 4MB=222B,主存地址总位数为 22 位。
- 字长为 32 位 = 4B。每字块 8 个字 = 32B。字块内地址占 log232=5 位。
- Cache 容量为 16KB=214B。Cache 块数 = 16KB/32B=512 块。
- 四路组相联,Cache 组数 = 512/4=128=27 组。组地址占 7 位。
- 主存字块标记(Tag)占 22−7−5=10 位。
| Tag (10位) | 组地址 (7位) | 块内地址 (5位) |
| :---: | :---: | :---: |
- 命中率计算:
- 块长为 8 个字。第 0∼89 号单元共 90 个字,跨越的块数为 ⌈90/8⌉=12 块。
- 重复读 8 次:
- 第一次读:全部未命中,共发生 12 次块调入。
- 后续 7 次读:因为 12 块全部已调入 Cache 且不发生替换,故全部命中。
- 总访存次数 = 90×8=720 次。
- 命中次数 = (90−12)+90×7=708 次。
- 命中率 H=708/720≈98.33%。
5. 中断向量机制#
题目:中断向量通过什么总线送至什么地方?为什么(定义、形式、输入、输出)?(P211)
解析:
- 中断向量通过数据总线送入 **CPU 的程序计数器(PC)**中。
- 原因:中断向量是中断服务程序的入口地址。CPU 响应中断后,硬件产生一个对应中断源的向量地址,由向量地址到主存相应单元中读出中断服务程序的入口地址(即中断向量),并将其送入 PC,使 CPU 自动转去执行对应的服务程序。
6. 浮点数加法运算#
题目:已知两浮点数 x=0.1101×210,y=0.1011×210,求 x+y。
解析:
- 由于阶码相同(均为 10),无需对阶。
- 尾数相加:0.1101+0.1011=1.1000。
- 结果发生溢出,需要右规:尾数右移一位变为 0.1100,阶码加 1 变为 11。
- 结果为 x+y=0.1100×211。
7. 浮点加减运算与补码表示#
题目:假设阶码取 3 位,尾数取 6 位(均不包括符号位),做浮点数加法计算下题(用补码进行):
[25×1611]+[24×(−169)]
解析:
- 将两数转化为浮点表示:
- x=25×0.10112(阶码 5=1012,尾数 0.1011002)
- y=24×(−0.10012)(阶码 4=1002,尾数 −0.1001002)
- 用补码表示阶码与尾数,进行对阶、尾数相加、规格化及舍入处理。
8. 扩展操作码编码设计#
题目:假设指令字长为 16 位,操作数地址码为 4 位,指令有三地址、二地址、一地址三种格式。采用扩展操作码技术,若三地址指令有 X 种,二地址指令有 Y 种,没有零地址指令,则一地址指令最多有几种?
解析:
- 三地址指令的操作码占 16−4×3=4 位。留出 16−X 种编码给二地址指令扩展。
- 二地址指令操作码占 16−4×2=8 位,最多可拥有 (16−X)×24−Y 种编码用于一地址指令扩展。
- 一地址指令操作码占 16−4×1=12 位,最多可拥有:
Nmax=[((16−X)×24−Y)×24] 种
9. 指令格式与寻址分析#
题目:某机主存容量为 4M×16 位,且存储字长等于指令字长。若该机指令系统可完成 108 种操作,操作码固定且具有直接、间接、变址、基址、相对、立即等六种寻址方式,试回答:
- 画出一地址指令格式并指出各字段的作用。
- 该指令直接寻址的最大范围。
- 一次间接寻址和多次间接寻址的寻址范围。
- 立即数的范围 (十进制表示)。
- 相对寻址的位移量 (十进制表示)。
- 上述六种寻址方式的指令中,哪一种最长?为什么?哪一种便于程序浮动?哪一种最适合处理数组问题?
解析:
- 一地址指令格式设计:
- 操作码(OP):占 ⌈log2108⌉=7 位。
- 寻址特征(M):占 ⌈log26⌉=3 位,以区分六种寻址方式。
- 形式地址(AD):占 16−7−3=6 位。
| OP (7位) | M (3位) | AD (6位) |
- 直接寻址的最大范围为 26=64 字。
- 一次间址的寻址范围取决于存储字长为 16 位,故为 216=64K。多次间址时需要拿出 1 位作为间址标志(最高位),寻址范围为 215=32K。
- 立即数的二进制位宽为 6 位,补码表示范围为 −32∼+31。
- 相对寻址以 PC 为基准,位移量为 6 位补码,表示范围为 −32∼+31。
- 立即寻址、直接寻址、相对寻址指令字长均为 16 位一样长。相对寻址便于程序浮动。变址寻址最适合处理数组问题。
10. 多重中断与 CPU 轨迹画法#
题目:设某机有 4 个中断源 1、2、3、4,其响应优先级按 1→2→3→4 降序排列,现要求将中断处理次序(执行优先级)改为 4→1→3→2。根据各中断源的请求时刻,画出 CPU 执行程序的轨迹。设每个中断源的中断服务程序运行时间均为 20 μs。
解析:
- 屏蔽字(Mask)设计:高执行优先级的中断能屏蔽低执行优先级的中断。
- 中断 4 屏蔽:1、2、3、4。
- 中断 1 屏蔽:1、2、3。
- 中断 3 屏蔽:2、3。
- 中断 2 屏蔽:2。
- 根据请求时刻与屏蔽字规则,画出嵌套运行轨迹图。
11. 指令周期微操作流程#
题目:设 CPU 内有这些部件:PC、IR、MAR、MDR、AC、CU。
- 写出取指周期的全部微操作。
- 写出间指周期的全部微操作。
- 写出 ADD 指令的执行流程。
解析:
- 取指周期:
- PC→MAR
- 1→R(发读命令)
- M(MAR)→MDR
- MDR→IR
- (PC)+1→PC
- 间指周期:
- Ad(IR)→MAR
- 1→R
- M(MAR)→MDR
- MDR→Ad(IR)(将有效地址写入 IR 的地址字段)
- ADD 执行阶段(以通用寄存器加法为例,结果送 AC):
- Ad(IR)→MAR
- 1→R
- M(MAR)→MDR
- (AC)+(MDR)→AC