MIPS R4000 延迟和启动间隔

MIPS R4000 Latency and Initiation Intervals

为什么 MIPS R4000 的平方根功能单元有 112 个周期的延迟和 111 个周期的启动间隔?

MIPS R4000 Microprocessor User’s Manual 提供了对 R4000 浮点流水线的详细描述(请参阅第 6.7 节)。对于浮点运算,R4000 FPU 提供八个运算阶段(尾数加法、除法流水线、异常测试、第一乘法器、第二乘法器、舍入、操作数移位、解包 FP 数)。双精度平方根第一个循环使用解包 FP 数,第二个循环使用异常测试,接下来的 108 个循环使用尾数加法和舍入法,下一个循环使用尾数加法,最后一个循环使用舍入法。

由于解包 FP 数和异常测试(前两个周期)未在以后的周期中使用,因此与平方根完全未流水线化相比,随后的平方根运算可以提前两个周期开始。这可以用图表表示如下:

         1    2    3   4  ... 110  111  112  114  115
SQRT.D   U    E   A+R A+R     A+R   A    R
SQRT.D        110 stall cycles for second SQRT.D
                                    U    E   A+R  A+R

(可以看到启动间隔是第一个SQRT.D发出时的周期,即启动间隔为0表示并行发出,启动间隔为1表示支持回-过期。)