繁体   English   中英

用于处理两个分支结果的流水线处理器设计

[英]Pipeline Processor Design to handle both branch outcomes

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

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

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

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

谢谢。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM