2024—2025 学年第二学期《计算机组成与系统结构》A 卷答案与解析
本答案按照课程 PPT、课程题库及试卷给出的数据通路约定整理。
数学公式使用 LaTeX;涉及微指令编码时,微指令第 1 位位于最左侧。
一、分析计算题(40 分)
Section titled “一、分析计算题(40 分)”1. 变形补码加减法
Section titled “1. 变形补码加减法”已知:
数值位为 5 位,使用双符号位变形补码。
第一步:写出变形补码
Section titled “第一步:写出变形补码”为负数。先写出正数:
求补:
00.01111按位取反:11.10000末位加 1:11.10001所以:
为正数:
第二步:补码相加
Section titled “第二步:补码相加”双符号位为 00,没有溢出。
因此:
也可以写为:
十进制验证:
补码减法转化为:
的变形补码为:
+y:00.11001取反:11.00110加 1:11.00111所以:
计算:
双符号位为 10,表示负溢出,也叫下溢。
真值验证:
定点小数的表示范围为:
超出表示范围。
答案:
2. 带求补器的补码阵列乘法
Section titled “2. 带求补器的补码阵列乘法”已知:
符号位 1 位,数值位 4 位。
第一步:求操作数补码
Section titled “第一步:求操作数补码”为负数:
+0.0111取反:1.1000加 1:1.1001所以:
第二步:确定乘积符号
Section titled “第二步:确定乘积符号”乘积符号位为两个操作数符号位异或:
所以乘积为负数。
第三步:算前求补
Section titled “第三步:算前求补”带求补器的补码阵列乘法器先把数值部分转换成绝对值:
第四步:阵列乘法
Section titled “第四步:阵列乘法” 1011 × 0111 -------- 1011 1011 1011 0000 -------- 01001101所以绝对值乘积为:
第五步:算后求补
Section titled “第五步:算后求补”由于结果为负数,需要对数值结果求补:
01001101按位取反:10110010末位加 1:10110011所以:
其二进制真值为:
十进制验证:
最终答案:
3. ROM 和 RAM 地址范围
Section titled “3. ROM 和 RAM 地址范围”已知:
- CPU 地址总线为 20 位,地址空间为 ;
- 数据总线为 8 位;
- ROM 芯片容量为 位;
- RAM 区域共 ;
- SRAM 芯片规格为 位;
- 采用 74LS138 译码器进行片选。
1. 芯片分组
Section titled “1. 芯片分组”单片 SRAM 的数据宽度只有 4 位,而 CPU 数据总线为 8 位,所以两片 SRAM 必须并联扩展位数:
RAM1:连接 D0~D3RAM2:连接 D4~D7两片共同组成:
这称为一组 RAM。
RAM 区域总容量为 ,所以需要两组:
共需 SRAM 芯片:
2. 译码规律
Section titled “2. 译码规律”每个芯片的片内地址线为:
共 17 位,可寻址:
高位地址:
输入 74LS138。每个译码输出对应一个 地址区间。
各译码区间为:
| 译码输出 | 地址范围 | |
|---|---|---|
000 | 00000H~1FFFFH | |
001 | 20000H~3FFFFH | |
010 | 40000H~5FFFFH | |
011 | 60000H~7FFFFH | |
100 | 80000H~9FFFFH |
根据图中连接:
- ROM 接 ;
- 第一组 RAM 接 ;
- 第二组 RAM 接 。
(1)ROM 地址范围
Section titled “(1)ROM 地址范围”ROM 容量为 ,起始地址为:
末地址为:
答案:
(2)各组 RAM 地址范围
Section titled “(2)各组 RAM 地址范围”第一组 RAM:
第二组 RAM:
完整答案:
| 存储区域 | 地址范围 |
|---|---|
| ROM | 00000H~1FFFFH |
| 第一组 RAM | 60000H~7FFFFH |
| 第二组 RAM | 80000H~9FFFFH |
4. 八路组相联 Cache
Section titled “4. 八路组相联 Cache”已知:
- 主存容量为 字;
- Cache 容量为 字;
- 每块为 256 字;
- 按字编址;
- 采用 8 路组相联。
(1)主存地址划分
Section titled “(1)主存地址划分”主存共有:
个字,所以主存地址为 24 位。
每块有:
个字,所以块内偏移字段为 8 位。
Cache 块数:
采用 8 路组相联,每组 8 块,因此 Cache 组数为:
组索引字段为 6 位。
标记字段:
主存地址划分:
┌──────────┬────────────┬──────────────┐│ Tag 10位 │ 组索引 6位 │ 块内偏移 8位 │└──────────┴────────────┴──────────────┘(2)求两个地址的 Cache 组号和 Tag
Section titled “(2)求两个地址的 Cache 组号和 Tag”计算方法:
地址 11C110H
Section titled “地址 11C110H”写成字段:
11C110H= 0001000111 | 000001 | 00010000 Tag 组号 块内偏移所以:
地址 3A4BF0H
Section titled “地址 3A4BF0H”写成字段:
3A4BF0H= 0011101001 | 001011 | 11110000 Tag 组号 块内偏移所以:
答案:
| 主存地址 | Cache 组号 | Tag |
|---|---|---|
11C110H | 01H | 047H |
3A4BF0H | 0BH | 0E9H |
因为 Cache 初始为空,两次访问均不命中,需要把对应主存块装入相应组中的任一空闲行。
二、分析设计题(30 分)
Section titled “二、分析设计题(30 分)”1. 单地址指令有效地址
Section titled “1. 单地址指令有效地址”指令格式:
┌────────┬────────┬──────────┐│ OP 6位 │ MOD 2位│ D 8位 │└────────┴────────┴──────────┘寻址方式:
| MOD | 寻址方式 | 有效地址 |
|---|---|---|
00 | 相对寻址 | |
01 | 基址寻址 | |
10 | 直接寻址 | |
11 | 变址寻址 |
已知:
(1)指令 F480H
Section titled “(1)指令 F480H”二进制字段:
111101 | 00 | 10000000 OP MOD D采用相对寻址。 是 8 位补码:
所以:
答案:
(2)指令 3A76H
Section titled “(2)指令 3A76H”001110 | 10 | 01110110采用直接寻址:
写成 16 位地址:
(3)指令 6B92H
Section titled “(3)指令 6B92H”011010 | 11 | 10010010采用变址寻址。
作为 8 位补码:
符号扩展后:
所以:
答案:
(4)指令 3560H
Section titled “(4)指令 3560H”001101 | 01 | 01100000采用基址寻址:
答案:
(5)指令 8320H
Section titled “(5)指令 8320H”100000 | 11 | 00100000采用变址寻址:
答案:
2. 单总线 CPU 模型
Section titled “2. 单总线 CPU 模型”(1)各编号部件名称
Section titled “(1)各编号部件名称”根据数据流和控制信号:
| 编号 | 部件 |
|---|---|
| ① | 程序计数器 PC |
| ② | 地址寄存器 AR |
| ③ | 主存储器 MEM |
| ④ | 算术逻辑单元 ALU |
| ⑤ | 通用寄存器组 Regs |
答案:
(2)取指周期数据通路
Section titled “(2)取指周期数据通路”取指周期同时完成两件事:
- 根据 PC 给出的地址取出指令;
- 修改 PC,使其指向下一条指令。
T1:送出 PC
Section titled “T1:送出 PC”控制信号:
PCout,ARin,XinT2:计算下一条指令地址
Section titled “T2:计算下一条指令地址”控制信号:
+4T3:修改 PC 并读取主存
Section titled “T3:修改 PC 并读取主存”控制信号:
Zout,PCin,Read,DREinT4:指令送入 IR
Section titled “T4:指令送入 IR”控制信号:
DRout,IRin完整取指数据通路:
取指令:PC → AR → MEM → DR → IR
修改 PC:PC → X → ALU(+4) → Z → PC3. sub 指令微程序设计
Section titled “3. sub 指令微程序设计”指令:
sub rd, rs, rtRTL 功能:
(1)执行周期的操作与控制信号
Section titled “(1)执行周期的操作与控制信号”| 节拍 | 操作 | 高电平控制信号 |
|---|---|---|
| T1 | Rout,Xin | |
| T2 | Rout,Rs/Rt,SUB | |
| T3 | Zout,RegDst,Rin |
所以题目空格:
(2)微指令编码
Section titled “(2)微指令编码”微指令共 29 位:
操作控制字段:1~22 位判别测试字段:23~24 位下址字段:25~29 位控制信号位序如下:
| 位 | 控制信号 | 位 | 控制信号 |
|---|---|---|---|
| 1 | PCout | 12 | Xin |
| 2 | DRout | 13 | Rin |
| 3 | Rout | 14 | IRin |
| 4 | IR(A)out | 15 | PSWin |
| 5 | Zout | 16 | Rs/Rt |
| 6 | IR(I)out | 17 | RegDst |
| 7 | DREout | 18 | ADD |
| 8 | PCin | 19 | +4 |
| 9 | ARin | 20 | SUB |
| 10 | DREin | 21 | Read |
| 11 | DRin | 22 | Write |
| 23 | 24 |
控存 25 单元:T1
Section titled “控存 25 单元:T1”有效控制信号:
Rout,Xin即第 3 位和第 12 位为 1。
下一条微指令位于 26 单元:
29 位编码:
00100000000100000000000011010左侧补 3 个 0,按 32 位转换为十六进制:
0000 0100 0000 0010 0000 0000 0001 1010所以:
控存 26 单元:T2
Section titled “控存 26 单元:T2”有效控制信号:
Rout,Rs/Rt,SUB即第 3、16、20 位为 1。
下一条微指令位于 27 单元:
29 位编码:
00100000000000010001000011011补零转换:
0000 0100 0000 0000 0010 0010 0001 1011所以:
控存 27 单元:T3
Section titled “控存 27 单元:T3”有效控制信号:
Zout,Rin,RegDst即第 5、13、17 位为 1。
执行结束后需要根据 IR 中的操作码进入下一条机器指令对应的微程序,因此令:
下址字段置 0。
29 位编码:
00001000000010001000001000000补零转换:
0000 0001 0000 0001 0001 0000 0100 0000所以:
微程序答案汇总
Section titled “微程序答案汇总”| 控存地址 | 二进制微指令 | 十六进制 |
|---|---|---|
| 25 | 00100000000100000000000011010 | 0402001AH |
| 26 | 00100000000000010001000011011 | 0400221BH |
| 27 | 00001000000010001000001000000 | 01011040H |
十六进制结果采用“29 位微指令左侧补 3 个 0”的写法。阅卷时最好先写二进制字段,再写十六进制,能够避免位序约定造成误会。
三、综合应用题(30 分)
Section titled “三、综合应用题(30 分)”1. 五级浮点加法流水线
Section titled “1. 五级浮点加法流水线”流水线由 5 个功能段组成:
S1 → S2 → S3 → S4 → S5每段延迟均为 ,需要计算:
共需要:
次加法。
(1)安排运算顺序
Section titled “(1)安排运算顺序”为了缩短总时间,不能简单地从左到右串行相加,而应采用树形分组。
第一层:
第二、三层可安排为:
最后:
各加法任务启动时间:
| 任务 | 运算 | 启动时钟 |
|---|---|---|
| 1 | ||
| 2 | ||
| 3 | ||
| 4 | ||
| 5 | ||
| 7 | ||
| 9 | ||
| 12 | ||
| 17 |
时空图:
时间 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21S1 B1 B2 B3 B4 B5 C1 C2 C3 FS2 B1 B2 B3 B4 B5 C1 C2 C3 FS3 B1 B2 B3 B4 B5 C1 C2 C3 FS4 B1 B2 B3 B4 B5 C1 C2 C3 FS5 B1 B2 B3 B4 B5 C1 C2 C3 F最后一个任务在第 21 拍完成,所以:
(2)实际吞吐率
Section titled “(2)实际吞吐率”流水线共完成 9 个加法任务:
约分:
不使用流水线时,每次加法需要经过 5 个功能段:
所以:
答案:
流水线有 5 个功能段:
答案:
2. 单级互连函数
Section titled “2. 单级互连函数”共有 32 个处理器,处理器编号使用 5 位二进制表示。
第 19 号处理器:
将第 位取反,其余位不变。最低位为第 0 位。
对第 3 位取反:
答案:
所以:
答案:
(3)Shuffle
Section titled “(3)Shuffle”全混洗相当于把 5 位编号循环左移一位:
所以:
答案:
(4)Butterfly
Section titled “(4)Butterfly”Butterfly 交换最高位和最低位:
19 的最高位和最低位均为 1,因此交换后不变:
答案:
先执行:
再执行 ,把最低位取反:
最后执行 Shuffle:
答案:
汇总:
| 互连函数 | 相连处理器 |
|---|---|
| 27 | |
| 23 | |
| Shuffle | 7 |
| Butterfly | 19 |
| 1 |
3. 四种计算机系统计算点积
Section titled “3. 四种计算机系统计算点积”计算:
已知:
- 一次乘法需要 4 拍;
- 一次加法需要 2 拍;
- SIMD 和 MIMD 中相邻处理器传数需要 1 拍;
- SIMD 有 8 个 PE,采用双向线性环;
- MIMD 有 8 个处理机,任意两个处理机之间有直接通路。
(1)通用 PE 的串行 SISD
Section titled “(1)通用 PE 的串行 SISD”8 项点积需要:
- 8 次乘法;
- 7 次加法。
全部串行执行:
答案:
(2)具有一个加法器和乘法器的并行流水 SISD
Section titled “(2)具有一个加法器和乘法器的并行流水 SISD”乘法器和加法器可以并行工作。
乘法器连续完成 8 次乘法:
拍。
前面的加法可以与后续乘法重叠,最后一次加法必须等待最后一个乘积产生后再完成,因此总时间为:
答案:
(3)8 个 PE 的 SIMD 双向环
Section titled “(3)8 个 PE 的 SIMD 双向环”每个 PE 负责一项乘法,8 个 PE 同时执行:
拍。
接下来对 8 个乘积进行树形归约。
因为:
需要 3 级加法:
拍。
在双向环上归约时,关键路径的传送距离可安排为:
所以通信时间:
拍。
总时间:
答案:
(4)8 个处理机的 MIMD 全连接系统
Section titled “(4)8 个处理机的 MIMD 全连接系统”8 个处理机同时完成 8 次乘法:
拍。
树形归约需要 3 级,每级包含一次直接传送和一次加法:
拍。
总时间:
答案:
四种系统结果汇总
Section titled “四种系统结果汇总”| 计算机系统 | 最短时间 |
|---|---|
| 串行 SISD | 46 拍 |
| 加法器、乘法器可并行的 SISD | 34 拍 |
| 8 个 PE 的 SIMD 双向环 | 14 拍 |
| 8 个处理机的 MIMD 全连接 | 13 拍 |
四、答案速查
Section titled “四、答案速查”| 题号 | 答案 |
|---|---|
| 1(1) | ,无溢出 |
| 1(2) | 补码结果 10.11000,下溢(负溢) |
| 2 | ,真值 |
| 3(1) | ROM:00000H~1FFFFH |
| 3(2) | RAM 第一组:60000H~7FFFFH;第二组:80000H~9FFFFH |
| 4(1) | Tag 10 位,组索引 6 位,块内偏移 8 位 |
| 4(2) | 11C110H→组01H,Tag 047H;3A4BF0H→组0BH,Tag 0E9H |
| 题号 | 答案 |
|---|---|
| 1 | 1F80H,0076H,1FB5H,5567H,2043H |
| 2(1) | ①PC,②AR,③MEM,④ALU,⑤Regs |
| 2(2) | ; |
| 3(1) | ① ;② Rout、Rs/Rt、SUB |
| 3(2) | 25:0402001AH;26:0400221BH;27:01011040H |
| 题号 | 答案 |
|---|---|
| 1 | ,, |
| 2 | 27,23,7,19,1 |
| 3 | 串行 SISD 46 拍;并行流水 SISD 34 拍;SIMD 14 拍;MIMD 13 拍 |