现有4级流水线,分别完成取指、指令译码并取数、运算、回写四步操作。假设完成各部操作的时间依次为100ns、100ns、80ns、50ns。请问:
问答题 流水线的操作周期应设计为多少?
【正确答案】正确答案:流水线操作的时钟周期f应按四步操作中的最长时间来考虑,所以t=100ns。
【答案解析】
问答题 若相邻两条指令如下,发生数据相关,而且在硬件上不采取措施,那么第2条指令要推迟多少时间进行?ADD R1,R2,R3 #R2+R3—>R1SUB R4,R1,R5 #R1—R5—>R4
【正确答案】正确答案:两条指令在流水线中执行情况如下表所示:ADD指令在时钟4时将结果写入寄存器堆(R1),但SUB指令在时钟3时读寄存器堆(R1)。本来ADD指令应先写入R1,SUB指令后读R1,结果变成SUB指令先读R1,ADD指令后写R1,因而发生两条指令间数据相关。如果硬件上不采取措施,第2条指令SUB至少应推迟2个操作时钟周期(2×100ns),即将SUB指令中的指令译码并取数阶段推迟到ADD指令的写回阶段之后才能保证不会出错。如下表所示:
【答案解析】
问答题 如果在硬件设计上加以改进,至少需要推迟多少时间?
【正确答案】正确答案:如果硬件上加以改进,可只延迟1个操作时钟周期(100ns)。因为在ADD指令中,运算阶段就已经得到结果了,因此可以通过数据旁路技术在运算结果一得到的时候将结果快速送入寄存器R1,而不需要等到写回阶段完成。流水线中执行情况如下图所示:
【答案解析】