AR# 55018

Zynq-7000 SoC、APU - STREX をパスしたイベント 0x63 が LDREX 命令で間違ってレポートされることがある

説明

厳しく順序付けられている (Strongly Ordered) メモリ領域への書き込みの後、LDREX 命令が続くと、STREX 命令が実行されていない場合でも STREX をパスしたイベント (0x63) がカウントされる場合があります。

この書き込みのため、0x63 イベントのカウント数が実際の数よりも多くなる可能性があります。この問題はまた、関連付けられている PMUEVENT[27] 信号にも影響し、同じイベントが間違ってレポートされてしまいます。

ソリューション

この問題が発生するには次の条件が満たされている必要があります。

  • プロセッサが厳しく順序付けられている (Strongly Ordered) メモリ領域に書き込み命令を実行する
  • プロセッサが LDREX 命令を実行する
  • DSB 命令は実行されず、また書き込みと STREX 命令の間で例外コールまたは例外リターンがない

これらの条件の下、LDREX が実行されている間に、厳しく順序付けられているメモリ領域への書き込み命令が肯定応答 (AXI での BRESP 応答) を受信すると、上述の問題が発生します。

影響:あまり重要ではありません。この問題が発生すると、イベント 0x63 のカウントが間違ったり、PMUEVENT[27] の信号が間違ったりします。
回避策:厳しく順序付けられているメモリ領域への書き込みと LDREX 命令の間に、DMB または DSB 命令を挿入します。
対象となる構成:CPU を使用するシステム
対象となるデバイス リビジョン:すべて。修正予定はありません。(Xilinx Answer 47916) - 「Zynq-7000 SoC デバイス - シリコン リビジョン間の相違点」を参照してください。

改訂履歴
2013/05/16 - 初版

アンサー レコード リファレンス

マスター アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
47916 Zynq-7000 SoC デバイス - シリコン リビジョン間の相違点 N/A N/A
AR# 55018
日付 06/13/2018
ステータス アクティブ
種類 デザイン アドバイザリ
デバイス