搜题
问题   更新时间2023/4/3 12:59:00

五、下面一段MIPS汇编程序是计算高斯消去法中的关键一步,用于完成下面公式的计算:
Y = a X + Y

其浮点指令延迟如下表所示:


整数指令均为1个时钟周期完成,浮点和整数部件均采用流水。整数操作之间以及与其它所有浮点操作之间的延迟为0,转移指令的延迟为0。
X中的最后一个元素存放在存储器中的地址为DONE。

FOO: L.D F2, 0(R1)
MUT.D F4, F2, F0
L.D F6, 0(R2)
ADD.D F6, F4, F6
S.D F6, 0[R2]
DADDIU R1, R1, #8
DADDIU R2, R2, #8
DSUBIU R3, R1, #DONE
BNEZ R3, FOO

(1)对于标准的MIPS单流水线,上述循环计算一个Y值需要多少时间?其中有多少空转周期?
(2)对于标准的MIPS单流水线,将上述循环顺序展开4次,不进行任何指令调度,计算一个Y值平均需要多少时间?加速比是多少?其加速是如何获得的?
(3)对于标准的MIPS单流水线,将上述循环顺序展开4次,优化和调度指令,使循环处理时间达到最优,计算一个Y值平均需要多少时间?加速比是多少?

答: (1) L.D F2, 0(R1) 1 Stall MUT.D F4, F2, F0 2 L.D F6, 0(R2) 3 Stall Stall ADD.D F6, F4, F6 4 Stall Stall S.D F6, 0[R2] 5 DADDIU R1, R1, #8 6 DADDIU R2, R2, #8 7 DSUBIU R3, R1, #DONE 8 BNEZ R3, FOO 9 所以,共有14 个时钟周期,其中有5 个空转周期。 (2)循环顺序展开4 次,不进行任何指令调度,则指令1~5 及其间的stall 都是必要的,只是指令6~9 只需执行一次,因此,共有 10 × 4 + 4 = 44 个时钟周期,计算出4 个Y 值,所以计算一个Y 值需要11 个时钟周期,加速比为:14/11 = 1.27 。加速主要是来自减少控制开销,即减少对R1、R2 的整数操作以及比较、分支指令而来的。 (3)循环顺序展开4 次,优化和调度指令,如下: L.D F2, 0(R1) L.D F8, 8(R1) L.D F14, 16(R1) L.D F20, 24(R1) MUT.D F4, F2, F0 MUT.D F10, F8, F0 MUT.D F16, F14, F0 MUT.D F22, F20, F0 L.D F6, 0(R2) L.D F12, 8(R2) L.D F18, 16(R2) L.D F24, 24(R2) ADD.D F6, F4, F6 ADD.D F12, F10, F12 ADD.D F18, F16, F18 ADD.D F24, F22, F24 S.D F6, 0[R2] S.D F12, 8[R2] S.D F18, 16[R2] S.D F24, 24[R2] DADDIU R1, R1, #32 DADDIU R2, R2, #32 DSUBIU R3, R1, #DONE BNEZ R3, FOO 共用了24 个时钟周期,则计算一个Y 值平均需要 24/4 = 6 个时钟周期, 加速比:14/6 = 2.33
王老师:19139051760(拨打)