CPU 通常在启用 MMU 及分支预测的情况下运行。如果处理器在这种情况下运行了很长一段时间,分支目标地址高速缓存 (BTAC) 就将包含分支预测。
随后,如果 MMU 被禁用,但分支预测仍然是启用的,这些陈旧的 BTAC 条目会导致处理器将投机性指令提取至读取敏感的位置。
这违反了 ARM 架构参考手册中记录的关于投机性获取的 ARMv7 架构规则。
影响: | 很小。CPU 主要在启用 MMU 的情况下使用。该问题也可通过在下一节中列出的简单解决方法来避免。 |
解决方法: | 使 BTAC 中的所有条目无效,执行 BPIALL(使整个分支预测阵列无效)操作,然后在禁用 MMU 之前执行 DSB。 另一种潜在解决方法是在禁用 MMU 时禁用分支预测,让分支预测一直处于禁用状态,直到 MMU 被重新启用。 |
受影响的配置: | 使用 CPU 的系统。 |
受影响的器件修订版本: | 全部。无计划修复。参考 (Xilinx Answer 47916) - Zynq-7000 SoC 芯片版本差异答复记录。 |
修订历史:
2013 年 3 月新版。
Answer Number | 问答标题 | 问题版本 | 已解决问题的版本 |
---|---|---|---|
47916 | Zynq-7000 SoC 器件:芯片修订差异 | N/A | N/A |
AR# 52033 | |
---|---|
日期 | 06/13/2018 |
状态 | Active |
Type | 设计咨询 |
器件 |