Spectre:是SIMD的原因吗?
Spectre: Is SIMD the reason?
小问题:
我读了 article 关于易受攻击的幽灵。
它说只有高端 ARM 处理器受到影响,低端处理器不受影响。由于低端 ARM CPU 不支持 SIMD 指令(又名 ARM 上的 NEON 扩展),所以我觉得 SIMD 就是问题所在。我对那个话题不是很深入,但我发现了 paper for speculative instructions on SIMD.
我只想知道我是对还是错了。
不,那些 ARM CPU 上重要的 "high-end" 特性是乱序执行,分支预测 + 推测执行。
带 NEON 的有序 CPU(如 Cortex A-53)不在受影响的 CPU 列表中,因为 Spectre 依赖于推测执行。
Spectre 启动分支预测器,因此特权代码中的间接分支被错误预测到某处,导致在检测到错误预测之前微体系结构状态发生数据相关的变化。
在 Meltdown 中,您 运行 使用非特权代码指导自己; Intel CPU 在本应出现故障的加载后继续推测执行,将 TLB 条目用于仅内核页面。直到负载尝试退出才会出现故障(您甚至可以通过 运行 在故障负载 + 使用该数据之前设置一个单独的慢速依赖指令链来延迟,因为指令按顺序退出) .
有关 Meltdown 如何工作的更多微架构细节,请参阅 Why are AMD processors not/less vulnerable to Meltdown? (and Spectre)?
小问题: 我读了 article 关于易受攻击的幽灵。
它说只有高端 ARM 处理器受到影响,低端处理器不受影响。由于低端 ARM CPU 不支持 SIMD 指令(又名 ARM 上的 NEON 扩展),所以我觉得 SIMD 就是问题所在。我对那个话题不是很深入,但我发现了 paper for speculative instructions on SIMD.
我只想知道我是对还是错了。
不,那些 ARM CPU 上重要的 "high-end" 特性是乱序执行,分支预测 + 推测执行。
带 NEON 的有序 CPU(如 Cortex A-53)不在受影响的 CPU 列表中,因为 Spectre 依赖于推测执行。
Spectre 启动分支预测器,因此特权代码中的间接分支被错误预测到某处,导致在检测到错误预测之前微体系结构状态发生数据相关的变化。
在 Meltdown 中,您 运行 使用非特权代码指导自己; Intel CPU 在本应出现故障的加载后继续推测执行,将 TLB 条目用于仅内核页面。直到负载尝试退出才会出现故障(您甚至可以通过 运行 在故障负载 + 使用该数据之前设置一个单独的慢速依赖指令链来延迟,因为指令按顺序退出) .
有关 Meltdown 如何工作的更多微架构细节,请参阅 Why are AMD processors not/less vulnerable to Meltdown? (and Spectre)?