在设计带有两个执行单元的超标量处理器的六级流水线时需要帮助。六个阶段是指令获取 ( IF
)、指令解码 ( ID
)、从寄存器读取 ( RR
)、2 周期执行 ( EX
)、回写结果 ( WB
)。说明不能重新排序。在一个执行周期中,最多发出一条指令可能与内存(加载或存储)相关,并且最多一条指令可能与处理寄存器算术运算的非内存指令有关。Latency
Load 操作为 3 个周期,其他操作为 2 个周期。Latency
被认为是相关指令发出周期之间的时间延迟周期。现在,我们有以下指令序列:
(1) LD R21, (R20)
(2) LD R18, (R17)
(3) ADD R16, R21, R18
(4) LD R15, (R14)
(5) ADD R13, R12, R11
(6) SUB R23, R22, R24
(7) ST (R23), R10
(8) ADD R4, R21, R18
(9) ST (R3), R2
(10) ST (R1), R4
考虑到一条指令从 RR 阶段传递到 EX 阶段时,程序需要多长时间才能发出。
我的锻炼如下:
(1)和(3)、(2)和(3)、(2)和(8)、(2)和(8)、(6)和(7)中存在RAW冲突。因此,时序图是:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16
I01: IF ID RR EX EX WB
I02: -- IF ID RR EX EX WB
I03: -- -- -- -- IF ID RR EX EX WB
I04: -- -- -- -- IF ID RR EX EX WB
I05: -- -- -- -- -- IF ID RR EX EX WB
I06: -- -- -- -- -- -- IF ID RR EX EX WB
I07: -- -- -- -- -- -- -- -- IF ID RR EX EX WB
I08: -- -- -- -- -- -- -- -- IF ID RR EX EX WB
I09: -- -- -- -- -- -- -- -- -- IF ID RR EX EX WB
I10: -- -- -- -- -- -- -- -- -- -- IF ID RR EX EX WB
请评论解决方法。