首页 > 试题广场 >

回答下面问题

[问答题]

(某 16 位计算机中,带符号整数用补码表示,数据 Cache 和指令 Cache 分离。下表给出了指令系统中部分指令格式,其中 Rs 和 Rd 表示寄存器, mem 表示存储单元地址,x 表示寄存器 x 或存储单元 x 的内容。
指令系统中部分指令格式

名称

指令的汇编格式

指令功能

加法指令

ADD Rs,Rd

(Rs)+(Rd)→Rd

算法左移

SHL Rd

2*(Rd)→Rd

算术右移

SHR Rd

(Rd)/2→Rd

取数指令

LOAD Rd,mem

(mem)→Rd

存储指令

STORE Rs,mem

(Rs)→mem

该计算机采用5 段流水方式执行指令,各流水段分别是取指 IF、译码/读寄存器 ID、执行/计算有效地址 EX、访问存储器 M、结果写回寄存器 WB,流水线采用“ 按序发射,按序完成”方式,没有采用转发技术处理数据相关,并且同一寄存器的读和写操作不能再同一个时钟周期内进行。请回答下列问题:

(1)若 int 型变量 x 的值为-513,存放在寄存器 R1 中,则执行指令“ SHR R1” 后, R1 的内容是多少?(用十六进制表示)
(2)若某个时间段中,有连续的 4 条指令进入流水线,在其执行过程中没有发生任何指令段阻塞,则执行这 4 条指令所需的时钟周期数为多少?
(3)若高级语言程序中某赋值语句为 x=a+b, x、 a 和 b 均为 int 型变量,它们的存储单元地址分别为[x]、[a]和[b]。该语句对应的指令序列及其在指令流水线中的执行过程如下表所示。

指令序列机器执行过程示意图:

时间单元

1

2

3

4

5

6

7

8

9

10

11

12

13

14

I1

IF

ID

EX

M

WB

I2

IF

ID

EX

M

WB

I3

IF

ID

EX

M

WB

I4

IF

ID

EX

M

WB

I1 LOAD R1, [a]
I2 LOAD R2, [b]
I3 ADD R1, R2
I4 STORE R2, [x]

则这4 条指令执行过程中, I3 的 ID 段和 I4 的 IF 段被阻塞的原因各是什么?

(4)若高级语言程序中某赋值语句为 x=2*x+a, x 和 a 均为 unsigned int 型变量,它们的存储单元地址分别表示为[x]、 [a],则执行这条语句至少需要多少个时钟周期?要求模仿图 1 画出这条语句对应的指令序列及其在流水线中的执行过程示意图。

(1) x 的机器码为[x]补=1111 1101 1111 1111B,即指令执行前( R1) =FDFFH,右移 1 位后为 1111 1110 1111 1111,即指令执行后( R1) =FEFFH。

(2)至少需要 4+( 5-1) =8 个时钟周期。
(3) I3 的 ID 段被阻塞的原因是由于 I3 与 I1 和 I2 都存在数据相关,需等到 I1 和 I2 将结果写回寄存器后, I3 才能读寄存器内容,所以 I3 的 ID 段被阻塞。 I4 的 IF 段被阻塞的原因是由于 I4 的前一条指令 I3 在 ID 段被阻塞,所以 I4 的 IF 段被阻塞。

(4)该条指令对应的指令序列有两种情况,因为 2*x 操作有加法(对应第一种)和左移(对应第二种)两种方法实现。

第一种 第二种
I1 LOAD R1, [x] I1 LOAD R1, [x]
I2 LOAD R2, [a] I2 LOAD R2, [a]
I3 ADD R1, R1 I3 SHL R1
I4 ADD R1, R2 I4 ADD R1, R2
I5 STORE R2, [x] I5 STORE R2, [x]

发表于 2016-11-19 16:45:31 回复(1)