【问题标题】:Spectre: Is SIMD the reason?Spectre:是 SIMD 的原因吗?
【发布时间】:2018-06-14 04:09:12
【问题描述】:

简短的问题: 我读过一篇关于幽灵易受攻击的article

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

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

【问题讨论】:

    标签: x86 arm simd neon


    【解决方案1】:

    不,在那些 ARM CPU 上重要的“高端”功能是乱序执行,分支预测 + 推测执行。

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


    Spectre 启动分支预测器,因此特权代码中的间接分支被错误地预测到某个地方,从而在检测到错误预测之前导致微架构状态发生与数据相关的变化。

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

    有关 Meltdown 工作原理的更多微架构细节,请参阅Why are AMD processors not/less vulnerable to Meltdown? (and Spectre)?

    【讨论】:

    • 推测执行和带有推测动态指令的 SIMD 的区别在哪里?推测执行包含在哪个扩展中?
    • @PhilippBlum:没有现有架构实现该论文中提出的推测向量化。我只是略读,但我认为它使用现有的推测执行硬件功能来自动矢量化 CPU 内的跨步负载(如果加载地址不遵循模式,则检查错误推测),否则它可以让编译器有效地做到这一点.阅读 Meltdown 论文,其中简要总结了分支预测 (meltdownattack.com/meltdown.pdf)。或者阅读 Haswell 中乱序执行的工作原理,例如:realworldtech.com/haswell-cpu/3
    • @PhilippBlum 推测执行导致预取(/etc)导致缓存活动/更改是关键。不是整个 ISA 的特定子集,而是任何可能导致缓存更改的地方,从而导致您可以使用/不应该拥有的信息。如果我理解正确,这两个问题是一个从另一个进程看到的东西(用户态看到内核的东西),更糟糕的是,伪沙箱在同一个进程中看到彼此,理论上一个程序应该能够看到它的所有东西,但是呢?两个运行 java(script) 的独立网页(相同的浏览器/程序),我们希望它们分开。
    • @old_timer:是的,我用摘要更新了我的答案:Spectre 是关于启动/“训练”间接分支的分支预测器。 (然后使用缓存定时侧通道读取微架构状态的结果变化。)
    猜你喜欢
    • 2023-03-22
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多