问答题
某16位计算机中,带符号整数用补码表示,数据Cache和指令Cache分离。表1给出了指令系统中部分指令格式,其中Rs和Rd表示寄存器,mem表示存储单元地址,(x)表示寄存器x或存储单元x的内容。
该计算机采用5段流水方式执行指令,各流水段分别是取指IF、译码/读寄存器ID、执行/计算有效地址EX、访问存储器M、结果写回寄存器WB,流水线采用“按序发射,按序完成”方式,没有采用转发技术处理数据相关,并且同一寄存器的读和写操作不能在同一个时钟周期内进行。请回答下列问题。
表1
指令系统中部分指令格式
|
名 称 |
指令的汇编格式 |
指令功能 |
加法指令 |
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 |
若高级语言程序中某赋值语句为x=a+b,x、a和b均为int型变量,它们的存储单元地址分别为[x]、[a]和[b]。该语句对应的指令序列如下,其在指令流水线中的执行过程见表2。
I1 LOAD R1,[a] I2 LOAD R2,[b]
I3 ADD R1,R2 I4 STORE R2,[x]
表2
指令序列的执行过程 |
指令 |
时间单元 |
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 |
这4条指令执行过程中,I3的ID段和I4的IF段被阻塞的原因各是什么
【参考答案】
各条指令语句的含义如下: I1 LOAD R1,[a] //将[a]单元中的内容取出,送入寄存器R1中 I2 LOAD ......
(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)