You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于AArch64架构Neoverse-N3 CPU的BPU失效方法及相关技术点的问询

关于AArch64架构Neoverse-N3 CPU的BPU失效方法及相关技术点的问询

我正在使用AArch64(ARM 64位)Neoverse-N3 CPU,想要失效整个分支预测单元(BPU)。我看到过介绍多种执行BPIALL方法的文档,但我不完全理解这在技术上是如何实现的。

针对Cortex-A73和Cortex-A75 CPU,似乎可以采用这样的方案:在AArch64模式下切换到AArch32模式,然后执行BPIALL指令。我想知道在Neoverse-N3 CPU上是否也能采用类似的方法——具体来说,我能否切换到32位模式,执行BPIALL,然后再回到64位模式?

我还了解到SMCCC_ARCH_WORKAROUND_1这个术语,据我理解它实现了一种能有效失效BPU的缓解措施,但我不清楚应该如何发起这个调用,也不知道如何验证我的CPU固件中是否实现了该功能。

最后,在同一份文档中还有关于Spectre-BHB的讨论:

为了防范跨异常级别或安全状态的攻击,Arm建议在进入更高异常级别的异常时丢弃分支历史记录。具体方法取决于处理器微架构:

  • Cortex-A65、Cortex-A65AE 及 Neoverse E1: 在最高实现的异常级别禁用并重新启用MMU。
  • Cortex-A73 及 Cortex-A75:
    • 在AArch32模式下:使用BPIALL指令失效分支预测器。
    • 在AArch64模式下:切换到AArch32模式,然后通过Secure EL1代码执行BPIALL。
  • 所有其他易受攻击的核心: 插入一个带有特定实现迭代次数('K')的循环缓解方案,在进入更高异常级别的异常时丢弃分支历史记录。

针对Neoverse-N3,文档中指定了K=38。这是否意味着所有Neoverse-N3 CPU都必须跟踪38条分支历史记录?我的理解是分支历史的实现取决于CPU微架构,所以我不确定该如何解读这个数字。

希望能得到这些问题的澄清。

备注:内容来源于stack exchange,提问作者Gal Kaptsenel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 18:32:58