Answers:
我不知道哪种情况盛行,但我想对您的双管道提议提出一些想法。
首先,您需要使用两倍的导线,这样在活动时会消耗两倍的能量并产生两倍的热量。另一方面,虽然不需要,但完全没有用。因此,人们可能会争辩说,这不是对现代处理器中稀有资源的良好利用。
从根本上讲,除非您基于概率选择一个分支,否则如何知道要写入哪个版本?如果没有,您可能不会保存任何东西,因为无论如何其他处理器可能都必须等待您的决定。如果坚持使用其中之一,则回滚概率和成本将与现在基本相同。
从某种意义上说,分支预测的效果在提取指令时更为关键,因为无法执行未提取的指令。
关于执行分支的两个路径,这被称为热切执行,并且已经进行了一些实质性的研究。奥古斯都·U·赫特(Augustus K. Uht)和维杰·辛达吉(Vijay Sindagi)的“不相交的渴望执行:投机执行的最佳形式”(1995年)可能值得一看。
渴望执行有几个问题。为了进行深入推测,必须跟踪的路径数可以成倍增长(每个分支的分支路径可能会遇到一个分支)。分支预测通常也非常准确(正确率> 90%),因此始终执行两条路径都是浪费的。急切的执行还会使无用的内容“污染”缓存。(上述论文提出了智能限制的急切执行方式,以避免其中的某些问题。)急切地获取替代路径的问题更少,并且在减少较短管道中的错误预测恢复延迟方面可能具有一定的吸引力。
已经提出的另一种方法是动态预测“吊床”分支(连接到指令流主要路径的短前分支)。Artur Klauser等人的“非预测性指令集体系结构的动态吊床预测”(1998年)可能值得一读。(Hyesoon Kim等人的“愿望分支:结合条件分支和谓词以进行自适应谓词执行”建议在ISA分支中添加一些便于预测吊床的分支,并将这种谓词方法扩展到难以预测的循环分支。)