幽灵:SIMD是什么原因?

时间:2018-01-04 12:13:13

标签: x86 arm simd neon

简短问题: 我读了一篇关于弱势幽灵的article

它说只有高端ARM处理器受到影响,而不是低端ARM处理器。由于低端ARM CPU不支持SIMD指令(在ARM上称为NEON扩展),因此我觉得SIMD就是问题所在。我在那个话题上并不那么深刻,但我找到了paper for speculative instructions on SIMD.

我只是想知道我是对还是走错路。

1 个答案:

答案 0 :(得分:4)

不,"高端"在那些ARM CPU上重要的功能是无序执行,具有分支预测+推测执行。

带有NEON的有序CPU(如Cortex A-53)不在受影响的CPU列表中,因为Spectre依赖于推测执行。

幽灵推测分支预测变量,因此特权代码中的间接分支被错误预测到某个地方,在检测到错误预测之前导致微架构状态的数据相关变化。

在Meltdown中,您可以使用无特权代码自行运行指令;英特尔CPU在应该出现故障的负载之后继续推测执行,使用TLB条目进行仅内核页面。在负载试图退出之前不会出现故障(您甚至可以通过在故障加载+使用该数据之前运行单独的慢速依赖性指令链来延迟,因为指令按顺序退出)。

有关Meltdown如何工作的更多微体系结构详细信息,请参阅Why are AMD processors not/less vulnerable to Meltdown? (and Spectre)?