【发布时间】:2019-01-15 17:23:11
【问题描述】:
我正在阅读 this article 关于类似于 Spectre 的理论上的 CPU 漏洞,它指出:
"攻击者需要训练分支预测器,使其 可靠地错误预测了分支。”
我大致了解什么是分支预测以及它是如何工作的,但是“训练”一个分支预测器意味着什么?这是否意味着偏向一个分支,使其在计算上比另一个更昂贵,还是意味着(在一个循环中)不断地让 CPU 在继续下一个预测错误的分支之前正确预测一个特定的分支?
例如,
// 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
分支预测器是使用权重来偏置预测还是基于先前的预测/错误预测的一种或另一种方式?
【问题讨论】:
标签: security cpu cpu-architecture cpu-cache branch-prediction