AR# 52033

Zynq-7000 SoC、APU — 禁用 MMU 的投机性指令可能不符合架构要求

描述

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 设计咨询
器件