问答题
假设指令流水线分为取指令(IF)、指令译码/读寄存器(ID)、执行/有效地址计算(EX)、存储器访问(MEM)、结果写回寄存器(WB)5个过程段。现有下列指令序列进入该流水线。
①ADD R1,R2,R;
②SUB R4,R1,R5;
③AND
R6,R1,R7;
④OR R8,R1,R9;
⑤XOR
R10,R1,R11;
请回答以下问题:
问答题
如果处理器不对指令之间的数据相关进行特殊处理,而允许这些指令进入流水线,试问上述指令中哪些将从未准备好数据的R1寄存器中取到错误的数据?
【正确答案】由题中指令序列可见,ADD指令后的所有指令都用到ADD指令的计算结果。表1列出了未采用特殊处理的流水线示意,表中ADD指令在WB段才将计算结果写入寄存器R
1中,但SUB指令在其ID段就要从寄存器R1中读取该计算结果。同样AND指令、OR指令也将受到这种相关关系的影响。ADD指令只有到第5个时钟周期末尾才能结束对寄存器R1的写操作,使XOR指令可以正常操作,因为它在第6个时钟周期才读寄存器R1的内容。
{{B}}表1 未采用特殊处理的流水线示意{{/B}}
|
| 时钟周期 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
| ADD |
IF |
ID |
EX |
MEM |
WB |
|
|
|
|
| SUB |
|
IF |
ID |
EX |
MEM |
WB |
|
|
|
| AND |
|
|
IF |
ID |
EX |
MEM |
WB |
|
|
| OR |
|
|
|
IF |
ID |
EX |
MEM |
WB |
|
| XOR |
|
|
|
|
IF |
ID |
EX |
MEM |
WB |
【答案解析】
问答题
假如采用将相关指令延迟到所需操作数被写回到寄存器后再执行的方式,以解决数据相关的问题,那么处理器执行该指令序列需占用多少个时钟周期?
【正确答案】表2是对上述指令进行延迟处理的流水线示意。由表可见,从第一条指令进入流水线到最后一条指令流出流水线,共需12个时钟周期。
{{B}}表2 对1)中指令进行延迟处理的流水线示意{{/B}}
|
| 时钟周期 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
| ADD |
TF |
ID |
EX |
MEM |
WB |
|
|
|
|
|
|
|
| SUB |
|
IF |
|
|
|
ID |
EX |
MEM |
WB |
|
|
|
| AND |
|
|
IF |
|
|
|
ID |
EX |
MEM |
WB |
|
|
| OR |
|
|
|
IF |
|
|
|
ID |
EX |
MEM |
WB |
|
| XOR |
|
|
|
|
IF |
|
|
|
ID |
EX |
MEM |
WB |
【答案解析】