什么是多路分支?


多路分支是另一种减少分支惩罚的可能性。使用多路分支,将同时执行未解决条件分支的顺序路径和已取路径,如图所示。多路分支需要多个程序计数器 (PC),在图中称为 IFA1 和 IFA2。

一旦指定条件得到解决,哪条路径是正确的就会变得很明显。如果正确的路径是顺序路径,则将确认其执行并丢弃已取路径的执行,因此,IFA1 包含正确的连续地址。在相反的情况下,反之亦然。

在条件分支的推测执行期间,可能会发生第二个未解决的条件分支指令。因此,更高级的多路分支方案应允许多个未解决的分支。

如图所示,它显示了三路多路分支。在这种情况下,四个指令获取地址同时维护(IFA1-IFA4)。其中只有一个与正确的路径相关。在所有条件分支都得到解决后,确定唯一的正确线程,并取消属于错误路径的所有计算。

尽管多路分支似乎作为提高性能的一种手段很有吸引力,尤其是在更高并行 ILP 处理器(如 VLIW)中,但此技术也存在明显的缺点。首先,多路分支对硬件资源(在一线执行单元中)的需求远高于推测性分支处理。

此外,对于多个多路分支,保持顺序一致性和丢弃冗余执行的计算正变得越来越复杂且耗时。多路分支仅在少数处理器中使用。例如,在 Multiflow TRACE 500 VLIW 架构提案(Wolfe 和 Shen,1991)中,可以执行两条路径,并计划了两组 14 个功能单元。

第二个例子是 URPR-2,它是一台实验机。它有九个功能单元,具有独立的 IFA,允许多个多路分支。最后一个例子是一个称为 XIMD 的新型计算模型及其第一个实验实现 XIMD-1(Wolfe 和 Shen,1991)。

该模型能够并发执行多条路径(线程),并且可以以多种不同的模式运行,其中一种可以解决多路分支。实验实现具有八个相同的 32 位 RISC 处理器,每个处理器都配备了自己的 IFA。

有些人期望这种加速未解决条件分支处理的蛮力方法仍然有未来(Brian,1994)。这种观点是基于技术的快速发展,允许以大致相同的成本实现越来越复杂的微体系结构。

更新于: 2021-07-23

3K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告