3.8 使用动态调度、多发射和前瞻利用ILP
3.8 使用动态调度、多发射和前瞻利用ILP
我们希望将动态调度、多发射和前瞻结合起来,以Tomasulo算法为基础,构建前瞻执行动态调度的多发射处理器。
在动态调度的处理器中,无论是否前瞻,都需要更新控制表,否则会丢失相关性。要实现动态调度的处理器,关键就在于保留站的分配与流水线控制表的更新,有两种方法实现:
-
一个时钟周期内分先后运行多发射的指令;
-
构建必要的逻辑,处理多条指令之间的相关性;
发射步骤是最基本的瓶颈;
具体实现细节:
-
为发射包中每条指令指定保留站和ROB,如果保留站不够(指令包中全是一种指令类型),将指令包分解,按照程序的原始顺序执指令包的部分指令,剩下的放在下一个指令包执行;
-
分析即将发射的指令之间所有相关性;
-
如果一条指令依赖于指令包之前的指令,且该指令还未commit,则使用指定的ROB编号更新保留表,否则使用已有的信息更新保留表项。