0

我正在检查 ARM-Cortex A8 流预测能力,为了做到这一点,我实现了以下代码:

char SecretDispatcher[256 * 512];
int counter = 0;

//evicting SecretDispatcher from cache
...

while(counter < (512 * 9 + 1))
{
    //evict counter from cache
    ...

    if(counter < (512 * 9))
    {
        asm volatile ("LDR %0, [%1]\n\t"
        : "=r" (value)
        : "r" (SecretDispatcher + index)
      );
    }
}

//measuring access time to SecretDispatcher[9*512], i expect that this memory cell exist in cache but it dosen't

在上面的代码中,我将执行 8 次条件为真的 if 语句来训练 CPU 的分支预测器,在第 9 次我希望 cpu 可以推测性地访问 SecretDispatcher[9 * 512],但条件不正确。这只是简单的 Spectre-v1 PoC 攻击,我在 Intel X86 处理器上以相同的逻辑成功实施了这种攻击,我希望这项工作也可以在 Cortex-A8 中工作,因为 arm 澄清该处理器容易受到这种攻击。

有什么我想念的吗?我应该做些什么来启用 ARM-Cortex A8 上的程序流预测?

4

0 回答 0