我正在阅读关于一种类似于Spectre的理论CPU漏洞的文章,它指出:
“攻击者需要训练分支预测器,使其可靠地错误预测分支。”
我大致了解什么是分支预测以及它的工作原理,但是“训练”分支预测器是什么意思?这是否意味着偏向某个分支,使其比另一个分支更加计算密集,或者(在循环中)不断要求CPU正确预测特定分支,然后才能继续进行下一个错误预测的分支?
分支预测器是否使用权重来偏向于根据先前的预测/错误预测而进行单向或另一种方式的预测?
“攻击者需要训练分支预测器,使其可靠地错误预测分支。”
我大致了解什么是分支预测以及它的工作原理,但是“训练”分支预测器是什么意思?这是否意味着偏向某个分支,使其比另一个分支更加计算密集,或者(在循环中)不断要求CPU正确预测特定分支,然后才能继续进行下一个错误预测的分支?
E.g.,
// Train branch predictor
for (int i = 0; i < 512; i++)
{
if (true){
// Do some instructions
} else {
// Do some other instruction
}
}
// The branch predictor is now "trained"/biased to predict the first branch?
// Proceed to attack
分支预测器是否使用权重来偏向于根据先前的预测/错误预测而进行单向或另一种方式的预测?