1

所以最近一直在研究Pipeline处理器架构,主要是在Y86-64的背景下。在那里,我刚刚阅读了关于分支预测以及如何在错误预测分支的情况下,必须刷新获取、解码和执行流水线寄存器以及必须处理新的正确分支指令。

我想知道是否有可能实际设计一个硬件,可能有 2 组流水线寄存器,这样当它获取条件指令时,它开始并行处理两个结果,更新一组寄存器,就好像不会发生分支一样和另一组好像会发生分支。

值得注意的是,如果一个或两个分支又导致指令本身也是一个分支指令,那么就会出现问题,那么 2 组是不够的。但是由于当第一个分支条件到达执行阶段时,我们将知道实际采取哪个分支,因此我们可以消除错误分支及其所有子分支。而且由于第一条分支指令从 Fetch 到 Execute 阶段需要 3 个时钟周期,所以我认为在最坏的情况下,我们只需要 2^3,即 8 组流水线寄存器。

除了这在硬件方面有点难以实现之外,我认为这种方法可行的假设有什么问题吗?或者这可能已经在像 X86-64 这样更复杂的架构中完成了?

谢谢。

4

1 回答 1

2

至于 RISC 与 CISC 架构,我记得后者尝试的技术大致类似于您在 1980 年代末/1990 年代初建议的技术。检查 Wikipedia 中的分支预测分析没有文章,但在 RSA(加密)文章中确实重定向到了文章,该文章描述了一种利用分支预测器的技术,该技术有助于找到私有加密密钥。它还提到同时多线程作为加速分支预测的一种方式。

要更直接地解决您的问题,请参阅同时多线程中的详细信息部分。一般来说,这似乎是一个正在进行的研究和分歧的领域。

于 2020-04-23T19:02:50.237 回答