AR# 47584

Zynq-7000 SoC、APU - 無効にしたデータ キャッシュに PLD 命令が割り当てられることがある

説明

PLD 命令は、データ キャッシュ イネーブル ビットなどのプロセッサ コンフィギュレーション設定にかかわらず、ライトバックとマークされたデータ (ライト アロケートまたはノー ライト アロケート、共有または非共有) をプリフェッチし、割り当てます。

これにより、データの一貫性の問題が発生することがあります。この問題は、データ キャッシュが有効の場合は発生しません。

この問題を回避するには、ソフトウェアで非公開の制御レジスタのビットをセットする必要があります。このビットをセットすると、すべての PLD 命令が NOP として処理されます。

ソリューション

影響:

深刻な問題ではありません。想定外のメモリ キャッシュ可能エイリアスが作成され、データの一貫性の問題が発生することがあります。詳細は、「影響の詳細」を参照してください。

回避策:

非公開の制御レジスタのビットをセットする方法は、「回避策の詳細」を参照してください。

対象となる構成:

すべてのシステム

対象となるデバイス リビジョン:
すべて。修正の予定なし(Xilinx Answer 47916) - 「Zynq-7000 SoC デバイス - シリコン リビジョン間の相違点」を参照してください。

 

影響の詳細

この問題が重要な影響を及ぼすことはありません。通常、データ キャッシュはブート プロセスの初期段階で有効になり、その後無効になることはありません。 

そのため、ブートアップ コードが影響を受けますが、ブートアップ コードは通常注意深く制御されているので、データ キャッシュが有効の間に PLD 命令が発行されることは通常ありません。

回避策の詳細

システムがこの問題の影響を受ける場合、ソフトウェアでの回避策があります。CP15 c15 0 c0 1 に配置されている非公開の制御レジスタのビット [20] をセットします。

このビットは、次の読み出し/変更/書き込みコード シーケンスで記述する必要があります。

  • MRC p15,0,r0,c15,c0,1
  • ORR r0,r0,#0x00100000
  • MCR p15,0,r0,c15,c0,1

このビットをセットすると、すべての PLD 命令が NOP として処理されるので、memcpy() ルーチンなどの PLD を使用するコード シーケンスでパフォーマンスが低下することがあります。 

そのため、この回避策を適用する場合は、データ キャッシュが無効のときに制限することを推奨します。

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

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

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