根据题43的结果,重绘题43图如下...
根据题43的结果,重绘题43图如下:
(1) 根据题44图b的指令格式。
方法一:有寄存器直接和寄存器间接两种寻址方式,寻址方式位分别为0和1,表示寻址方式需要1位,Md、Ms1、Ms2均为1位,通用寄存器R0~R3总共4个寄存器,编号分别为0、1、2和3,二进制编号分别为00、01、10和11,表示一个寄存器需要2位,Rd、Rs1、Rs2均为2位,指令字长16位,OP占16-(1+2)×3=7位,即指令操作码占7位,因此最多可定义 2^7=128 条指令。
方法二:二地址指令末三位均为0,即源操作数2地址占3位,单地址指令末6位均为0,即源操作数1地址和源操作数2地址占6位,一个地址占3位,指令最多有3个地址,OP占16-3×3=7位,即指令操作码占7位,因此最多可定义 2^7=128 条指令。
(2) 因为inc、shl和sub指令的操作码分别为01H、02H和03H,且操作码占7位,所以inc、shl和sub指令的操作码分别为0000001B、0000010B和0000011H。
“inc R1”为单地址指令,末6位均为0,inc指令的操作码分别为0000001B,(R1)+1→R1,目的操作数R1采用直接寻址,Md为0,因为R1的寄存器编号为1=01B,所以Rd为01,所以“inc R1”的机器码为 。
“shl R2, R1”为二地址指令,末3位均为0,shl指令的操作码分别为0000010B,(R1)<<1→R2,目的操作数R2采用直接寻址,Md为0,因为R2的寄存器编号为2=10B,所以Rd为10,源操作数R1采用直接寻址,Ms1为0,因为R1的寄存器编号为1=01B,所以Rs1为01,所以“shl R2,R1”的机器码为 。
“sub R3, (R1), R2”为三地址指令,sub指令的操作码为0000011H。((R1))–(R2)→R3,目的操作数R3采用直接寻址,Md为0,因为R3的寄存器编号为3=11B,所以Rd为11,源操作数1的R1采用间接寻址,Ms1为1,因为R1的寄存器编号为1=01B,所以Rs1为01,源操作数2的R2采用直接接寻址,Ms2为0,为R2的寄存器编号为2=10B,所以Rs2为10,所以“sub R3,(R1),R2”的机器码为 。
(3) 根据题44图a的部分指令控制信号。
方法一:完整推理
I. 取指周期:
- T1: PCout=1, MARin=1, Tin =1, MEMop = read
- 执行功能 (PC)→MAR, (PC)→T, 1→R。
- T2: MUXop = ①, ALUop = add, SRop = ②
- 执行功能 (T)→ALU的A端, (ALU的A端)+2→SR。(PC)+2→PC 不需额外的MUXop输入,所以①为0,SR进行直送(mov),所以②为mov。以及 M(MAR)→MDR。
- T3: SRout=1, PCin = 1
- T4: MDRout = 1, IRin = 1
II. 执行“shl R2, R1”周期:
- T1: R1out = 1, Tin = 1, ALUop = ③
- 执行功能(R1)→T,(T)→ALU的A端,该指令不需要进行加减法,ALU直送A(mova)端内容到SR,(ALU的A端)→SR,所以③为mova。
- T2: SRop = ④
- 指令需要实现shl,执行功能(SR)<<1→SR,SR可以实现左移一位(left),所以④为left。
- T3: SRout = 1, R2in = 1
III. 执行“sub R0, R2, (R1)”周期:
- T1: R1out = 1, MARin = 1, MEMop = ⑤
- 执行功能(R1)→MAR,需要读存储器,存储器控制信号为MEMop,用于控制存储器的读(read)和写(write)操作,所以⑤为read。
- T2: R2out = 1, Tin = 1
- 执行功能(R2)→T,(T)→ALU的A端。以及 M(MAR)→MDR。
- T3: MDRout = 1, MUXop = 1, ALUop = ⑥, SRop = ⑦
- 执行功能(MDR)→MUX,(MUX)→ALU的B端,指令需要实现sub,ALU可以实现A减B(sub),即(ALU的A端)-(ALU的B端)→SR,所以⑥为sub,减法完成后没有额外计算操作,SR为进行直送(mov),所以⑦为mov。
- T4: ⑧ = 1, R0in = 1
- 执行功能(SR)→R0,SRout需要打开,所以⑧为SRout。
综上,各标号处的控制信号或控制信号取值如下:
①0;②mov;③mova;④left;⑤read;⑥sub;⑦mov;⑧SRout。
方法二:关键信息推理
I. 取指周期的一般过程如下
- T1: (PC)→MAR, 1→R,
- T2: M(MAR)→MDR, (PC)+1→PC
- T3: (MDR)→IR
只有一步执行加法,没有额外计算操作,所以①为0,SRop是SR的操作,SR为移位寄存器,可实现直送(mov)、左移一位(left)和右移一位(right)3种操作,因为没有额外计算操作,所以②为mov。
II. 执行“shl R2, R1”周期执行左移运算,没有额外计算操作,执行过程可划分为取数、运算和写回过程。
ALUop是ALU的操作,ALU可实现直送A(mova)、A加B(add)、A减B(sub)、A与B(and)、A或B(or)、非A(not)、A加1(inc)这7种操作,因为没有额外计算操作,所以③为mova。
SRop是SR的操作,SR为移位寄存器,可实现直送(mov)、左移一位(left)和右移一位(right)3种操作,因为要实现左移,所以④为left。
III. 执行“sub R0, R2, (R1)”周期执行减法操作,没有额外计算操作,执行过程可划分为取数、运算和写回过程。
MEMop是MEM的操作,存储器控制信号为MEMop,用于控制存储器的读(read)和写(write)操作,第一步是取数,所以⑤为read。
ALUop是ALU的操作,ALU可实现直送A(mova)、A加B(add)、A减B(sub)、A与B(and)、A或B(or)、非A(not)、A加1(inc)这7种操作,因为需要进行减法操作,所以⑥为sub。
SRop是SR的操作,SR为移位寄存器,可实现直送(mov)、左移一位(left)和右移一位(right)3种操作,因为没有额外计算操作,所以⑦为mov。
运算结束后需要写回,SRout需要打开,所以⑧为SRout。
综上,各标号处的控制信号或控制信号取值如下:
①0;②mov;③mova;④left;⑤read;⑥sub;⑦mov;⑧SRout。
(4) 类比“sub R0, R2, (R1)”,得到指令“sub R1,R3,(R2)”的执行周期如下:
- T1: R2out = 1, MARin = 1, MEMop = 0
- T2: R3out = 1, Tin = 1
- T3: MDRout = 1, MUXop = 1, ALUop = sub, SRop = mov
- T4: SRout = 1, R1in = 1
所以指令“sub R1,R3,(R2)”的执行阶段执行阶段至少包含4个时钟周期。
类比“shl R2, R1”,得到指令“inc R1”的执行周期如下:
- T1: R1out = 1, Tin = 1, ALUop = inc, SRop = mov
- 执行功能(R1)→T,(T)→ALU的A端,(ALU的A端)+1→SR。
- T2: SRout = 1, R1in = 1。
所以指令“inc R1”的执行阶段至少包含2个时钟周期。
登录后提交答案