Zynq-7000,APU  –  ISB指令在性能监视器事件0x0C和0x0D中计算-Xilinx-AMD社区-FPGA CPLD-ChipDebug

Zynq-7000,APU – ISB指令在性能监视器事件0x0C和0x0D中计算

描述

ISB指令作为Cortex-A9微体系结构中的分支实现。这意味着当ISB发生时,事件0x0C(PC的软件更改)和0x0D(立即分支)被断言,这不符合ARM v7架构。因此,使用性能监视器计数器时,事件计数0x0C和0x0D不准确。

要获得PC(0x0C)和立即分支(0x0D)的软件更改的精确计数,请单独使用事件0x90计算ISB指令,并从事件0x0C和0x0D结果中减去此ISB计数。

影响:

次要。使用性能监视器计数器时,事件计数0x0C和0x0D不是100%精确。有关详细信息,请参阅影响细节

解决方法:

软件可以单独使用事件0x90计算ISB指令,并从事件0x0C和0x0D中获得的结果中减去此ISB计数,以获得PC(0x0C)和立即分支(0x0D)的软件更改的精确计数。

受影响的配置:

使用一个或两个ARM处理器的系统。

受影响的器件版本: 全部,没有计划修复。请参阅(Xilinx答复47916) – Zynq-7000设计咨询主答复记录

影响细节

使用性能监视器计数器时,事件计数0x0C和0x0D不是100%精确,因为除了对PC(对于0x0C)和立即分支(0x0D)的实际软件更改外,还计算ISB。

该问题还导致相应的PMUEVENT位在执行ISB时切换。

PMUEVENT [13]涉及事件0x0C
PMUEVENT [14]涉及事件0x0D

请登录后发表评论

    没有回复内容