AR# 47551

Zynq-7000、APU - Performance Monitor イベントの 0x0C および 0x0D で ISB 命令がカウントされる

説明


Cortex-A9 マイクロアーキテクチャで ISB 命令が分岐としてインプリメントされています。つまり、ISB が発生すると 0x0C (PC のソフトウェア変更) および 0x0D (直下の分岐) イベントがアサートされることを意味しており、この動作は ARM v7 アーキテクチャと互換性がありません。このため、Performance Monitor のカウンターが使用される場合、0x0C および 0x0D のカウントが正確ではありません。

0x0C (PC のソフトウェア変更) および 0x0D (直下の分岐) イベントの正確な数を得るには、イベント 0x90 の ISB 命令のみをカウントし、0x0C および 0x0D の結果からこの ISB カウントを差し引きます。

ソリューション

影響 :
深刻な問題ではありません。Performance Monitor カウンターを使用する場合、イベント 0x0C および 0x0D のカウントが正確ではありません。詳細は、「影響の詳細」を参照してください。

回避策 :

0x0C (PC のソフトウェア変更) および 0x0D (直下の分岐) イベントの正確な数を得るには、ソフトウェアでイベント 0x90 の ISB 命令をカウントし、イベント 0x0C および 0x0D で得られる結果からこの ISB カウントを差し引くことができます。

対象となるコンフィギュレーション :

ARM プロセッサの 1 つまたは両方を使用するシステム
影響のあるデバイス リビジョン : すべて。修正の予定なし。詳細は、(ザイリンクス アンサー 47916) - 「Zynq-7000 デザイン アドバイザリ マスター アンサー」を参照してください。



影響の詳細

0x0C (PC のソフトウェア変更) および 0x0D (直下の分岐) イベントの実際の値に ISB がカウントされているため、Performance Monitor カウンターを使用する場合、イベント 0x0C および 0x0D のカウントが正確ではありません。

この問題が原因で、ISB が実行されると、対応する PMUEVENT ビットもトグルしてしまいます。

PMUEVENT[13] はイベント 0x0C に関連しています。

PMUEVENT[14] はイベント 0x0D に関連しています。
AR# 47551
日付 08/06/2012
ステータス アクティブ
種類 デザイン アドバイザリ
デバイス