在针对 Cortex-A9 微架构的某些条件下,更新可高速缓存的转换列表条目的写入操作可能会导致新旧转换条目对转换表步行不可见,从而错误地导致转换故障。
这里是对该问题出现时的要求:
在实践中,当操作系统改变物理页面的映射时,该问题就会出现。操作系统可能有一个现有的物理页面(旧映射)映射,但希望将该映射移至一个新的页面(新映射)。要做到这一点,操作系统可能会:
但由于该问题,新旧两个映射在新条目写入后都不可见,造成转换故障。
影响: | 很小。该问题会引起一个转换故障。针对此问题有一个解决方法。 |
解决方法:: | 执行一个干净无效的操作,请参阅解决方法详细信息。 |
受影响的配置: | 使用 CPU 的系统。 |
受影响的器件修订版本: | 全部. 无计划修复. 参考 (Xilinx Answer 47916) - ZynqZynq-7000 SoC 器件修订版本差异答复记录。 |
解决方法详情:
推荐的解决方法是在更新条目之前,在包含该转换条目的高速缓存线上执行一个干净且无效的操作,以确保写入操作在数据高速缓存中丢失。
该解决方法可防止出现问题需要的微架构条件。中断必须暂时禁用,以确保在维护操作和转换条目更新之间不发生中断。
这可避免中断服务例程将高速缓存行返回至高速缓存中的可能性。
另一种可能的解决方法是将转换表条目放在不可缓存的内存区域中,但是这种解决方法很可能会有明显的性能损失。
请注意,在写入新的转换表条目之后立即插入 DSB 指令,可显著降低激发错误的概率,但解决方法可能不完整。
修订历史:
2013 年 3 月新版。
Answer Number | 问答标题 | 问题版本 | 已解决问题的版本 |
---|---|---|---|
47916 | Zynq-7000 AP SoC 器件:芯片修订差异 | N/A | N/A |
AR# 52035 | |
---|---|
日期 | 05/25/2018 |
状态 | Active |
Type | 设计咨询 |
器件 |