计算机体系结构动态调度(计分板及Tomasulo)学习记录

发布时间:2024年01月09日

1.动态调度核心思想:允许就绪指令越过前方停顿指令,提前进入运行(乱序执行)

就绪指令指不存在资源冲突、操作数已就绪的指令,例如,计分板算法使用计分板来实现,Tomasulo使用保留站来实现;

动态调度流水线引入乱序执行,因此会带来WAR冲突,因此在动态调度流水线中,所有类型的冲突都是存在的。

2.计分板算法的核心是一个计分板,记录表信息用来控制指令何时读取操作数并运行(对应RAW冲突检测)及指令何时写入结果(对应WAR冲突检测);

FU代表指令使用的功能单元,D是目标寄存器名S1和S2是源寄存器名,op是要执行的操作;

为了访问功能单元Fu的分数板条目Fj,使用Fj[FU],结果[D] 是将写入寄存器D的功能单元的名称;

如果另一条指令将该指令的目的地 (Fi[FU] ) 作为源 (Ff] 或Fk[f]),并如果其他一些指令已经写了寄存器,则存在WAR危险。 (Ri=是或Rk=是) 用于任何功能单元的可变is。

需要注意的是,计分板没有处理控制冲突,乱序执行仅局限于一个基本块内,没有消除WAR/WAW冲突,这些冲突仍然会导致停顿。

3.Tomasulo算法的核心是寄存器重命名register renaming);通过寄存器重命名,可彻底消除WAR/WAW冲突。(与计分板不同,计分板通过停顿解决WAR/WAW冲突)

Tomasulo算法在读取数据时会留下临时存储位置,并建立与原指令之间的标签关系,并在后续继续填入数据,这样能有效解决WAR/WAW的冲突。

Tomasulo算法完善的处理了数据冲突,与分支预测和猜测执行配合起来后能达到很高的性能,但没有处理控制冲突,乱序执行仍局限在一个基本块内

文章来源:https://blog.csdn.net/yyfloveqcw/article/details/135471230
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。