问答题
某16位计算机中,带符号整数用补码表示,数据Cache和指令Cache分离。表1给出了指令系统中部分指令格式,其中Rs和Rd表示寄存器,mem表示存储单元地址,(x)表示寄存器x或存储单元x的内容。
该计算机采用5段流水方式执行指令,各流水段分别是取指IF、译码/读寄存器ID、执行/计算有效地址EX、访问存储器M、结果写回寄存器WB,流水线采用“按序发射,按序完成”方式,没有采用转发技术处理数据相关,并且同一寄存器的读和写操作不能在同一个时钟周期内进行。请回答下列问题。
{{B}}表1
指令系统中部分指令格式{{/B}}
|
| 名 称 |
指令的汇编格式 |
指令功能 |
| 加法指令 |
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 |
问答题
若int型变量x的值为-513,存放在寄存器R1中,则执行指令“SHR R1”后,R1的内容是多少?要求用十六进制表示。
【正确答案】x的值为-513,可求得[x]原=1000 0010 0000 0001B,除符号位外,各位取反加1,可以求得[x]补=1111 1101 1111 1111B,转换成十六进制表示为:FDFFH。可以得到,指令执行前R1中存放的内容为:FDFFH。执行指令“SHR R1”,表示将寄存器R1的内容算术右移1位,右移1位之后的结果为:1111 1110 1111 1111B,将其转换成十六进制表示为:FEFFH。所以,执行指令“SHR R1”后,R1的内容是FEFFH。
【答案解析】
问答题
若某个时间段中,有连续的4条指令进入流水线,在其执行过程中没有发生任何指令段阻塞,则执行这4条指令所需的时钟周期数为多少?
【正确答案】除了第1条指令需要5个时钟周期输出结果外,后面的3条指令都只需要一个时钟周期就可以输出结果,所以至少需要5+(4-1)×1=8个时钟周期。
【答案解析】
问答题
若高级语言程序中某赋值语句为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]
{{B}}表2
指令序列的执行过程{{/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 |
这4条指令执行过程中,I3的ID段和I4的IF段被阻塞的原因各是什么?
【正确答案】各条指令语句的含义如下:
I1 LOAD R1,[a] //将[a]单元中的内容取出,送入寄存器R1中
I2 LOAD R2,[b] //将[b]单元中的内容取出,送入寄存器R2中
I3 ADD R1,R2 //将R1与R2中的内容相加并送入寄存器R2中
I4 STORE R2,[x] //将寄存器R2中的内容取出并送入[x]单元
很明显,指令I3需要指令I1与指令I2的数据,所以存在数据相关,指令I3必须等到指令I1、I2的结果分别写回寄存器R1和R2,才能执行读寄存器操作,所以I3的ID段被阻塞。另外,由于指令I3在ID段被阻塞,导致指令I4不能完成取指令操作,因此指令I4的IF段被阻塞。
【答案解析】
问答题
若高级语言程序中某赋值语句为x=2*x+a,x和a均为unsigned int型变量,它们的存储单元地址分别表示为[x]、[a]。执行这条语句至少需要多少个时钟周期?要求模仿表2画出这条语句对应的指令序列及其在流水线中的执行过程示意图。
【正确答案】该条语句对应的指令序列有两种情况,因为2x操作有加法(对应第一种)和左移(对应第二种)两种方法实现。
第一种
I1 LOAD R1,[x]
I2 LOAD R2,[a]
I3 ADDR1,R1
I4 ADDR1,R2
I5 STORE R2,[x]
第二种
I1 LOADR1,[X]
I2 LOAD R2,[a]
I3 SHL R1
I4 ADDR1,R2
I5 STORE R2,[x]
对应的执行过程示意图见下表。
表 对应的执行过程
|
| 指令 |
时间单元 |
| 1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
| I1 |
IF |
ID |
EX |
M |
WB |
|
|
|
|
|
|
|
|
|
|
|
|
| I2 |
|
IF |
ID |
EX |
M |
WB |
|
|
|
|
|
|
|
|
|
|
|
| I3 |
|
|
IF |
|
|
ID |
EX |
M |
WB |
|
|
|
|
|
|
|
|
| I4 |
|
|
|
|
|
IF |
|
|
|
ID |
EX |
M |
WB |
|
|
|
|
| I5 |
|
|
|
|
|
|
|
|
|
IF |
|
|
|
ID |
EX |
M |
WB |
综上所述,执行这条语句至少需要17个时钟周期。
【答案解析】