8 位补码加减与标志位
第 1 题
假设有两个整数 x=-68,y=-80,采用补码形式(含 1 位符号位)表示,x 和 y 分别存放在寄存器 A 和 B 中。A、B、C、D 都是 8 位寄存器。回答:
(1) A 和 B 中的内容分别是什么?
(2) x+y 的结果存放在 C 中,C 的内容是什么?OF、SF 各是什么?
(3) x-y 的结果存放在 D 中,D 的内容是什么?OF、SF 各是什么?
正确答案
| 项目 | 结果 |
|---|
| A=x=-68 | BCH |
| B=y=-80 | B0H |
| C=x+y | 6CH,OF=1,SF=0 |
| D=x-y | 0CH,OF=0,SF=0 |
解题步骤 / 解析
68=44H,8 位补码取反加 1 得 BCH;80=50H,8 位补码为 B0H。BCH+B0H=16CH,寄存器只保留低 8 位得 6CH。两个负数相加得到正号结果,说明补码溢出,OF=1;6CH 最高位为 0,SF=0。x-y=-68-(-80)=12,BCH+50H=10CH,低 8 位为 0CH,结果未超出 -128~127,OF=0,SF=0。
乘法指令、控制逻辑与溢出
第 2 题
有 C 语言函数 unsigned umul(unsigned x,unsigned y){return x*y;} 和 int imul(int x,int y){return x*y;}。假定计算机 M 的 ALU 只能进行加减运算和逻辑运算。回答无乘法指令时为何仍能实现乘法;乘法指令控制逻辑的作用;三种实现方式下 umul() 的执行时间长短;当 n=32、x=2³¹-1、y=2 时,有符号/无符号 64 位乘积、函数返回是否溢出,以及无符号乘法仅取低 n 位时的溢出判断方法。
正确答案
无乘法指令时可用移位和加减法软件实现乘法。控制逻辑负责检查乘数位、控制加/减、移位、寄存器写入和循环结束。
执行时间:无乘法指令最长;使用 ALU 和位移器的乘法指令居中;阵列乘法器最短。
x = 0x7FFFFFFF, y = 0x00000002
64 位真实乘积 = 0x00000000FFFFFFFE
无符号乘积 = 0x00000000FFFFFFFE
有符号乘积 = 0x00000000FFFFFFFE
umul 返回 0xFFFFFFFE,不发生无符号溢出
imul 对 32 位 int 发生正溢出;若只保留低 32 位,机器码为 0xFFFFFFFE(解释为 -2)
无符号 32 位乘法只取低 32 位时,若 64 位乘积的高 32 位不全为 0,则溢出;高 32 位全 0 则不溢出。
解题步骤 / 解析
二进制乘法可表示为若干个移位后的被乘数相加:x×y=Σ yᵢ·(x<<i)。软件循环需要多条指令,所以最慢;硬件移位加法乘法器由控制逻辑自动迭代,较快;阵列乘法器并行生成和压缩部分积,通常最快。2³¹-1 乘以 2 的数学值为 2³²-2,能用 32 位 unsigned 表示,但超过 32 位有符号整数最大值 2³¹-1。
float 数据的 IEEE 754 表示
第 3 题
已知实数 x=-68,y=-8.25,在 C 语言中定义为 float 型变量,分别存放在 32 位寄存器 A 和 B 中。C 存放 x+y,D 存放 x-y。要求用十六进制表示 A、B、C、D 的内容。
正确答案
| 寄存器 | 内容 | IEEE 754 单精度机器码 |
|---|
| A | x=-68 | C2880000H |
| B | y=-8.25 | C1040000H |
| C | x+y=-76.25 | C2988000H |
| D | x-y=-59.75 | C26F0000H |
解题步骤 / 解析
-68:68=1000100₂=1.000100₂×2⁶,符号位 1,阶码 127+6=133=10000101₂,尾数为 000100...,得 C2880000H。-8.25:8.25=1000.01₂=1.00001₂×2³,得 C1040000H。x+y=-76.25,76.25=1.00110001₂×2⁶,得 C2988000H。x-y=-59.75,59.75=1.1101111₂×2⁵,得 C26F0000H。
IEEE 754 数值类型判断
第 4 题
对下列 IEEE 754 单精度数值,说明它们表示的数字类型(规格化数、非规格化数、无穷大、0),当表示具体数值时给出其值:
(1) 0000 0000 0000 0000 0000 0000 0000 0000
(2) 0100 0010 0100 0000 0000 0000 0000 0000
(3) 1000 0000 0100 0000 0000 0000 0000 0000
(4) 11111111 100000000000000000000000
正确答案
| 小题 | 类型和值 |
|---|
| (1) | +0,属于 0 |
| (2) | 规格化数,值为 48 |
| (3) | 非规格化数,值为 -2⁻¹²⁷ |
| (4) | 负无穷大 -∞ |
解题步骤 / 解析
单精度格式为 1 位符号、8 位阶码、23 位尾数。(1) 阶码和尾数全 0,符号位为 0,故为 +0。(2) 拆为 0 | 10000100 | 1000...,阶码真值 132-127=5,尾数 1.1₂=1.5,值为 1.5×2⁵=48。(3) 拆为 1 | 00000000 | 1000...,阶码全 0 且尾数非 0,是非规格化数,值为 -(0.1₂)×2⁻¹²⁶=-2⁻¹²⁷。(4) 32 位串应拆为 1 | 11111111 | 000...,阶码全 1 且尾数全 0,符号位为 1,所以是 -∞。
移位实现乘除 2
第 5 题
32 位寄存器 R1 中存放变量 x 的机器码 80000004H。unsigned int 型乘除法采用逻辑移位,int 型乘除法采用算术移位。分别求 x、x/2、2x 的机器码和真值。
正确答案
| 解释方式 | x | x/2 | 2x |
|---|
| unsigned int | 2147483652 | 40000002H,1073741826 | 00000008H,8 |
| int | -2147483644 | C0000002H,-1073741822 | 00000008H,机器结果为 8,数学运算溢出 |
解题步骤 / 解析
unsigned 解释时,80000004H=2³¹+4。逻辑右移一位得 40000002H;左移一位丢弃最高位得 00000008H。int 解释时,80000004H 是补码负数,真值为 -2147483644;算术右移补 1 得 C0000002H;左移一位仍低位补 0、高位丢弃,机器码为 00000008H,但数学值 -4294967288 超出 32 位 int 范围。
按 I 字段确定有效地址
第 6 题
指令格式含 OP 6 位、寻址方式特征位 I 2 位、形式地址 D 8 位。I=00 直接寻址,I=01 用 X1 变址,I=10 用 X2 变址,I=11 相对寻址。设 PC=1234H,X1=0037H,X2=1122H,求指令 4420H、2244H、1322H、3521H 的有效地址。
正确答案
| 指令 | I | 寻址方式 | 有效地址 EA |
|---|
| 4420H | 00 | 直接 | 0020H |
| 2244H | 10 | X2 变址 | 1122H+0044H=1166H |
| 1322H | 11 | 相对 | 1234H+0022H=1256H |
| 3521H | 01 | X1 变址 | 0037H+0021H=0058H |
解题步骤 / 解析
按 16 位指令从高到低拆为 OP(15..10)、I(9..8)、D(7..0)。直接寻址 EA=D;变址寻址 EA=(Xi)+D;相对寻址 EA=(PC)+D。本题 D 均为正值,直接进行十六进制加法即可。
扩展操作码容量计算
第 7 题
扩展操作码指令系统中有三地址指令 15 条、双地址指令 12 条、单地址指令 50 条。格式为:三地址 OP(4) A1(4) A2(4) A3(4),二地址 OP(8) A1(4) A2(4),一地址 OP(12) A1(4)。求最多可设计多少条零地址指令。
解题步骤 / 解析
4 位 OP 可给三地址指令 16 种,已用 15 种,剩 1 个前缀扩展为二地址指令,可形成 1×2⁴=16 条,已用 12 条,剩 4 个 8 位前缀。扩展为一地址指令后容量为 4×2⁴=64 条,已用 50 条,剩 14 个 12 位前缀。零地址指令还可用最后 4 位扩展,所以容量为 14×2⁴=224 条。
相对寻址形式地址
第 8 题
某计算机指令字长定长 16 位,内存按字节寻址,指令中的数据占 8 位且采用补码表示,PC 的值在取指阶段完成修改。回答:
(1) 当前地址 2003H,要求数据有效地址为 200AH,形式地址字段为多少?
(2) 当前地址 2008H,要求转移目标地址为 2001H,形式地址字段为多少?
解题步骤 / 解析
16 位指令占 2 字节,按字节寻址,取指后 PC=当前指令地址+2。相对寻址 EA=(取指后 PC)+位移。(1) 取指后 PC=2005H,位移=200AH-2005H=05H。(2) 取指后 PC=200AH,位移=2001H-200AH=-9,8 位补码为 F7H。
寻址方式公式与范围
第 9 题
某机字长 16 位,存储器按字编址,访问内存指令格式为 OP(15..11)、M(10..8)、A(7..0)。设 PC 和 Rx 分别为程序计数器和变址寄存器。问该指令能定义多少种指令?直接、间接、变址、相对寻址的寻址范围和 EA 公式是什么?
正确答案
| 项目 | 答案 |
|---|
| 指令数 | OP 为 5 位,可定义 2⁵=32 种指令 |
| 直接寻址 | EA=A,范围 0~255 字 |
| 间接寻址 | EA=(A),范围 0~65535 字 |
| 变址寻址 | EA=(Rx)+A,范围可覆盖 0~65535 字 |
| 相对寻址 | EA=(PC)+A;若 A 为补码位移,范围为 PC-128~PC+127 |
解题步骤 / 解析
A 字段只有 8 位,直接寻址只能给出 256 个字地址。间接寻址时,存储单元内容为 16 位,可作为完整地址;变址和相对寻址借助 16 位寄存器或 PC 形成有效地址,因此可覆盖 16 位字地址空间。相对寻址的位移在多数教材中按补码理解。
LOAD 指令多种寻址方式
第 10 题
一条双字长 LOAD 指令存储在地址 200 和 201,第二字为地址部分。PC=200,R1=400,XR=100。根据主存内容示意图,分析不同寻址方式装入 ACC 的值。
正确答案
| 寻址方式 | 装入 ACC 的值 |
|---|
| 直接寻址 | 800 |
| 立即寻址 | 500 |
| 间接寻址 | 300 |
| 相对寻址 | 325 |
| 变址寻址 | 900 |
| 寄存器 R1 寻址 | 400 |
| 寄存器 R1 间接寻址 | 700 |
解题步骤 / 解析
第二字地址部分为 500。直接:M[500]=800。立即:操作数就是 500。间接:M[M[500]]=M[800]=300。相对:双字指令取完后 PC=202,EA=202+500=702,M[702]=325。变址:EA=XR+500=600,M[600]=900。寄存器寻址直接取 R1=400。寄存器间接:M[R1]=M[400]=700。
2010 统考指令格式分析
第 11 题
某计算机字长 16 位,主存地址空间 128KB,按字编址,采用单字长指令格式。指令字段和寻址方式见图。回答最多指令数、最多通用寄存器数、MAR/MDR 位数、转移目标地址范围,以及 add(R4),(R5)+ 的机器码和执行后变化。
正确答案
最多指令数 16 条;最多通用寄存器 8 个;MAR 至少 16 位,MDR 至少 16 位;转移目标地址范围为 0000H~FFFFH。
add(R4),(R5)+ 的机器码为 2315H。执行后 R5=5679H,存储单元 5678H 的内容变为 68ACH;R4 和存储单元 1234H 不变。
解题步骤 / 解析
OP 为 4 位,所以最多 16 条指令;寄存器编号 3 位,所以最多 8 个通用寄存器。128KB 按 16 位字编址,共 128KB/2B=64K=2¹⁶ 个字地址,MAR 需 16 位,MDR 存一个字也需 16 位。相对转移最终落在 16 位主存字地址空间内,故目标地址为 0000H~FFFFH。机器码字段为 OP=0010,Ms=001,Rs=100,Md=010,Rd=101,即 0010 001 100 010 101B=2315H。源操作数 M[1234H]=5678H,目的操作数 M[5678H]=1234H,结果 5678H+1234H=68ACH,目的采用 (R5)+,故 R5 自增为 5679H。
32 位单地址指令格式设计
第 12 题
某计算机字长 32 位,主存储器为 64MB,采用单字长单地址指令,共 40 条指令,有直接寻址、寄存器寻址、立即数寻址、寄存器间接 4 种寻址方式,设计其指令格式。
正确答案
| OP 6 位 | M 2 位 | A 24 位 |
OP 表示 40 条指令,M 表示 4 种寻址方式,A 作主存字地址、立即数或寄存器号字段。
解题步骤 / 解析
40 条指令需 ⌈log₂40⌉=6 位操作码;4 种寻址方式需 2 位。若按 32 位字编址,64MB=2²⁶B=2²⁴ 个字,直接地址字段需 24 位,合计 6+2+24=32 位,正好为单字长。若严格按字节编址,则地址字段需 26 位,单字长内放不下,因此本设计默认按字寻址或以字地址访问主存。
36 位指令扩展操作码设计
第 13 题
在一个 36 位长的指令系统中,设计扩展操作码,使之能表示:7 条具有两个 15 位地址和一个 3 位地址的指令;500 条具有一个 15 位地址和一个 3 位地址的指令;50 条无地址指令。
正确答案
一种可行设计:
第一类:| OP 3位 | A1 15位 | A2 15位 | R 3位 |
OP=000~110,共 7 条
第二类:| 111 | E 15位 | A 15位 | R 3位 |
取 E 的 500 个编码表示第二类,并保留至少 1 个 E 继续扩展
第三类:| 111 | 保留 E 15位 | E2 18位 |
用 E2 的 50 个编码表示无地址指令
解题步骤 / 解析
第一类地址字段共 15+15+3=33 位,36 位指令只剩 3 位 OP。3 位 OP 有 8 种,用 7 种表示第一类,剩 1 种作扩展入口。进入扩展后,还可用 15 位扩展码 E;2¹⁵ 远大于 500,足够表示第二类并留下扩展入口。保留一个 E 后,剩余 18 位可继续作为无地址操作码,容量 2¹⁸,足够表示 50 条无地址指令。
主存芯片选择与片选译码
第 14 题
CPU 地址总线 16 根,双向数据总线 16 根,主存地址空间按字编址:0~8191 为系统程序区 EPROM;8192 起 32K 地址空间为用户程序区 SRAM;最后 4K 地址空间为系统程序工作区。可选 EPROM:8K×16、16K×8;SRAM:16K×1、2K×8、4K×16、8K×16。选择芯片并设计主存逻辑框图。
正确答案
选 1 片 8K×16 EPROM、4 片 8K×16 SRAM、1 片 4K×16 SRAM。
| 范围 | 十六进制 | 芯片 | 片选条件 |
|---|
| 系统程序区 | 0000H~1FFFH | 8K×16 EPROM | A15 A14 A13=000 |
| 用户程序区 | 2000H~9FFFH | 4 片 8K×16 SRAM | A15 A14 A13=001~100 |
| 空区 | A000H~EFFFH | 无 | 不选片 |
| 工作区 | F000H~FFFFH | 4K×16 SRAM | A15 A14 A13 A12=1111 |
解题步骤 / 解析
8K 芯片用 A0~A12 作片内地址,4K 芯片用 A0~A11。可用 3-8 译码器译码 A15~A13,并由 MREQ# 使能:Y0# 选 EPROM,Y1#~Y4# 选四片用户 SRAM;Y5#、Y6# 及 Y7# 的 E000H~EFFFH 保持空;工作区需 Y7# 与 A12=1 共同有效。数据端 D15~D0 并接 CPU 数据总线。EPROM 只接读使能;SRAM 的 OE# 可由读命令产生,WE# 可由写命令产生。
用 64K×16 RAM 组成 256K×32 存储器
第 15 题
某机器字长 32 位,存储器总容量 256K 字,按字编址,用 WE 控制芯片读写。现有 64K×16 RAM 芯片,回答数据线和地址线条数、芯片数量、片选/组内地址线,以及 CPU 与存储器连接框图。
正确答案
数据线 32 条,地址线 18 条;共需 8 片 64K×16 RAM。A15~A0 接各芯片片内地址端,A17~A16 经 2-4 译码器产生 4 组选通信号;每组 2 片并联组成 64K×32,其中一片接 D15~D0,另一片接 D31~D16。WE 接各芯片写使能端。
解题步骤 / 解析
256K 字=2¹⁸ 字,按字编址需要 18 根地址线。字长 32 位,所以数据线 32 根。单片 64K×16,位扩展需 2 片并联为 64K×32;字扩展需 256K/64K=4 组,所以共 2×4=8 片。低 16 根地址线作组内地址,高 2 根地址线作片选译码。
微操作控制字段最短编码
第 16 题
某微程序包含 5 条微指令:uI1 发出 a,c,e,g;uI2 发出 a,d,f,h,j;uI3 发出 a,d,e;uI4 发出 a,b,i;uI5 发出 a,d,f,j。对这些微指令进行编码,要求微指令控制字段最短且能保持并行性。
正确答案
若所有信号都需在控制字段中表示,一种最短分组为:
| 字段 | 微操作 | 位数 |
|---|
| F0 | a | 1 |
| F1 | b、c、d | 2 |
| F2 | e、f、i | 2 |
| F3 | g、h | 2 |
| F4 | j | 1 |
总控制字段长度为 8 位。若允许把所有微指令都出现的 a 作为恒有效信号单独硬连,则编码字段可降为 7 位。
解题步骤 / 解析
同一字段内的微操作必须互斥,不能在同一条微指令中同时出现。b/c/d 互不同时出现,可同组;e/f/i 互不同时出现,可同组;g/h 互不同时出现,可同组;j 与 d、f、h 同时出现过,不能并入这些字段,只能单独或与其他重排等价分组。a 与所有相关信号都同时出现过,若编码则需单独字段。
ADD R1,(R2) 微操作序列
第 17 题
根据数据通路图,设计 ADD R1,(R2) 的微操作序列,包括取指令、执行和 PC 自增过程。
正确答案
T0: PC -> MAR,Read
T1: M[MAR] -> MDR
T2: MDR -> IR
T3: PC -> LA
T4: 1 -> LIB,LA + LIB -> PC
T5: R2 -> MAR,Read
T6: M[MAR] -> MDR
T7: R1 -> LA
T8: MDR -> LIB
T9: LA + LIB -> R1
解题步骤 / 解析
ADD R1,(R2) 按常见约定表示 R1←R1+M[R2]。先用 PC 给 MAR 取指并送 IR,再用 ALU 或专用加法完成 PC+1。执行阶段先用 R2 作为主存地址取出操作数到 MDR,再把 R1 和 MDR 分别送入 ALU 两个暂存输入 LA、LIB,相加结果经移位器直通写回 R1。
内部总线 CPU 的算术指令流程
第 18 题
CPU 内部结构如图,B、C、D、E、H、L 寄存器也与内部总线相通。ALU 结果直接送入 Z。从取指开始,写出 ADD B,C 和 SUB ACC,H 的微操作序列及控制信号。
正确答案
公共取指:
T0: PCout, MARin
T1: Read, MDRin, PC+1
T2: MDRout, IRin
ADD B,C ;(B)+(C)->B
T3: Bout, Yin
T4: Cout, ALUadd, Zin
T5: Zout, Bin
SUB ACC,H ;(ACC)-(H)->ACC
T3: ACCout, Yin
T4: Hout, ALUsub, Zin
T5: Zout, ACCin
解题步骤 / 解析
单总线结构中,ALU 的一个操作数通常先送入暂存寄存器 Y,另一个操作数再由总线送入 ALU,结果写入 Z,最后由 Z 输出回目的寄存器。ADD B,C 将 B 暂存到 Y,再将 C 与 Y 相加写回 B。SUB ACC,H 同理,先暂存 ACC,再减 H 并写回 ACC。
ADD(R0),R1 单总线流程
第 19 题
设有图示单总线结构,分析指令 ADD(R0),R1,即实现 M[R0]+R1 -> M[R0] 的指令流程和控制信号。
正确答案
T0: PCout, MARin, MemR
T1: MDRin, PC+1
T2: MDRout, IRin
T3: R0out, MARin
T4: MemR, MDRin
T5: MDRout, Yin
T6: R1out, ALUadd, Zin
T7: Zout, MDRin
T8: R0out, MARin ; 若 MAR 保持原地址,此步可省
T9: MemW
解题步骤 / 解析
先取指并完成 PC 自增。执行阶段用 R0 给出主存地址,读出 M[R0] 到 MDR;单总线 ALU 运算需先把一个操作数 MDR 送入 Y,再让 R1 上总线,与 Y 相加,结果进 Z。写回时把 Z 送 MDR,再执行主存写操作,把结果写入 R0 所指单元。
简化 CPU 与主存数据通路
第 20 题
根据图示简化 CPU 与主存连接结构,回答 a、b、c、d 四个寄存器名称;说明取指令、运算器与主存之间读/写、LDA X、ADD Y、STA Z 的数据通路。
正确答案
a=MDR,b=IR,c=MAR,d=PC。
取指:PC -> MAR,M[MAR] -> MDR,MDR -> IR,PC+1 -> PC
取数:MAR 给出地址,M[MAR] -> MDR -> ALU/ACC
存数:ACC -> MDR -> M[MAR]
LDA X:X -> MAR,M[X] -> MDR -> ACC
ADD Y:Y -> MAR,M[Y] -> MDR,ACC + MDR -> ACC,状态送状态寄存器
STA Z:Z -> MAR,ACC -> MDR,MDR -> M[Z]
解题步骤 / 解析
d 具有 +1 通路并给出下一条指令地址,是 PC;c 与主存地址端相连,是 MAR;a 与主存数据双向交换并可进入 ALU,是 MDR;b 向微操作信号发生器提供指令信息,是 IR。直接寻址指令中 X、Y、Z 是由 IR 给出的主存地址字段。
ADD(R1),(R2)+ 指令周期流程
第 21 题
某机主要功能部件如图,M 为主存,MDR、MAR、IR、PC、R0~R3、C、D 等部件给出。补充主要连接线,并画出 ADD(R1),(R2)+ 指令周期流程图。该指令源操作数地址在 R1 中,目标操作数为自增型寄存器间接寻址。
正确答案
主要连接:PC/R0~R3 -> MAR;M <-> MDR;MDR -> IR;
MDR、寄存器 -> C/D;C、D -> ALU -> 移位器 -> MDR/寄存器。
标准按 ADD (R1),(R2)+ 的常见含义:
1. PC -> MAR,Read,M[MAR] -> MDR -> IR,PC+1 -> PC
2. R1 -> MAR,Read,M[R1] -> MDR -> C
3. R2 -> MAR,Read,M[R2] -> MDR -> D
4. R2 + 1 -> R2
5. C + D -> MDR
6. Write,M[原 R2] <- MDR
解题步骤 / 解析
(R2)+ 是先以 R2 内容为地址取目的操作数,再使 R2 自增。常见指令语义是把源操作数 M[R1] 与目的操作数 M[旧 R2] 相加,结果写回目的操作数所在的主存单元;R2 同时完成自增。若课堂约定“结果写回 R2 寄存器”,则最后两步可改为 C+D -> R2,但按通常汇编记法应写回原目的地址。
ADDX,D 指令周期信息流程
第 22 题
已知单总线计算机结构如图,M 为主存,XR 为变址寄存器,EAR 为有效地址寄存器,LATCH 为暂存器。ADDX,D 中 X 为 XR,D 为形式地址,功能是将变址寻址得到的操作数和 ACC 中的操作数相加,结果送回 ACC。给出指令周期信息流程和控制信号。
正确答案
取指:
T0: (PC) -> MAR 控制:PCo, MARi
T1: Read, M[MAR] -> MDR 控制:R, MDRi
T2: (MDR) -> IR 控制:MDRo, IRi
T3: (PC)+1 -> PC 控制:PC+1 或 PCo, 地址加法器, PCi
形成有效地址并取数:
T4: (XR) + D(IR) -> EAR 控制:XRo, IR(D)o, +, EARi
T5: (EAR) -> MAR 控制:EARo, MARi
T6: Read, M[MAR] -> MDR 控制:R, MDRi
T7: (MDR) -> X 控制:MDRo, Xi
执行:
T8: (ACC) + (X) -> LATCH 控制:ACCo, Xo, ALUadd, LATCHi
T9: (LATCH) -> ACC 控制:LATCHo, ACCi
解题步骤 / 解析
ADDX,D 的有效地址为 (XR)+D。图中 IR、XR 可送地址加法器,结果进 EAR;EAR 再送 MAR 访问主存。读出的操作数经 MDR 进入暂存寄存器 X,与 ACC 送入 ALU 相加,结果先暂存于 LATCH,再写回 ACC。具体节拍可随教材把 PC+1 与取指读存合并或分开。
2009 统考 ADD(R1),R0 执行阶段
第 23 题
某计算机字长 16 位,采用 16 位定长指令字结构,部分数据通路如图。加法指令 ADD(R1),R0 的功能为 R0 + M[R1] -> M[R1]。取指和译码阶段节拍已给出,按同样方式列出执行阶段每个节拍的功能和有效控制信号。
正确答案
| 节拍 | 功能 | 有效控制信号 |
|---|
| C5 | MAR <- (R1) | R1out, MARin |
| C6 | MDR <- M[MAR],A <- (R0) | MemR, MDRinE, R0out, Ain |
| C7 | AC <- (MDR) + (A) | MDRout, ADD, ACin |
| C8 | MDR <- (AC) | ACout, MDRin |
| C9 | M[MAR] <- (MDR) | MDRoutE, MemW |
解题步骤 / 解析
执行阶段先用 R1 给出主存地址。读主存到 MDR 与 R0 送入 A 可在同一节拍并行完成,因为一个走外部数据总线,一个走内部总线。随后 MDR 上内部总线,与 A 中的 R0 经 ALU 相加,结果进 AC。写回时 AC 先送 MDR,MDR 通过外部数据总线写入主存,MAR 在执行阶段一直保存 R1 给出的地址。
2015 统考单总线数据通路完善
第 24 题
某 16 位计算机主存按字节编址,存取单位为 16 位;采用 16 位定长指令字格式;CPU 采用单总线结构,主要部分如图。回答程序员可见寄存器、暂存器 T 的作用、ALUop 和 SRop 位数、SRout 控制部件、端点①~⑨中哪些接控制部件输出端、补充必要连线,以及 MUX 一个输入端为 2 的原因。
正确答案
(1) 程序员可见寄存器:R0~R3、PC。T 用于在单总线结构下暂存 ALU 的一个操作数,避免两个操作数同时占用总线。
(2) ALU 有 7 种操作,ALUop 至少 3 位;SR 有 mov、left、right 3 种操作,SRop 至少 2 位。
(3) SRout 控制三态门,使 SR 输出可接入或断开 CPU 内总线。
(4) 端点 ①、②、③、⑤、⑧ 需连接到控制部件输出端。
(5) 必要连线:⑥ -> ⑨,⑦ -> ④。
(6) 主存按字节编址而指令字长为 16 位,每条指令占 2 个字节,顺序取指时需 PC+2,所以 MUX 一个输入端固定为 2。
解题步骤 / 解析
R0~R3 和 PC 会被指令显式或隐式使用,属于程序员可见;MAR、MDR、IR、T、SR 等通常不可见。ALUop、SRop 的位数由可选操作数取上取整得到。图中 ①、②、③、⑤、⑧ 分别是 SRout、SRop、ALUop、Tin、MUXop 等控制信号端;④ 是 ALU 的 B 输入,⑦ 是 MUX 输出,故连 ⑦->④;⑥ 是 CPU 内总线到 MUX 的输入,⑨ 是 MUX 的 1 端输入,故连 ⑥->⑨。