記事 ID: 000087175 コンテンツタイプ: トラブルシューティング 最終改訂日: 2017/08/10

Linux OS を実行している SoC デザインでキャッシュ・コヒーレンシーの問題が生じるのはなぜですか?

環境

  • インテル® Quartus® Prime 開発ソフトウェア・スタンダード・エディション
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    詳細

    デフォルトの Linux BSP が、SMP モードでキャッシュと TLB メンテナンス・ブロードキャストを有効にしないため (レジスター ACTLR のビット 0 は「0」のまま)、キャッシュ・コヒーレンシーの問題が見られる場合があります。

    このビットの説明については、ARM A9 MPCore テクニカル・リファレンス・マニュアル[2]: セクション 1.7.3 メンテナンス操作の放送を参照してください。

    同じコヒーレント・ドメイン上で SMP モードで動作するすべてのプロセッサーは、TLB およびキャッシュ・メンテナンス操作を送受信できます。ARM アーキテクチャー・リファレンス・マニュアルでは、ブロードキャスト操作に関する詳細情報を提供しています。A9-MP クラスター内の Cortex-A9 プロセッサーは、SMP モード (ACTLR) で動作する際にブロードキャスト可能なメンテナンス操作をブロードキャストします。SMP=1) および保守運用放送が有効になっている場合 (ACTLR.FW=1)。Cortex-A9 プロセッサーは、SMP モード ACTLR で動作しているときに、ブロードキャスト・メンテナンス操作を受信して実行できます。SMP=1。

    解決方法

    両方の ACTLR を設定することをお勧めします。FW および ACTLR。SMP から 1。proc-v7 で Linux コードを変更することでビットを設定できます。以下のような S ファイル:

    #ifdef CONFIG_SMP
    ALT_SMP (mrc p15、0、r0、c1、c0、1)
    ALT_UP (mov r0, #(1 << 6)) @ UP のために偽のそれ
    tst r0、#(1 << 6) @ SMP/nAMP モードが有効ですか?
    orreq r0, r0, #(1 << 6) @ SMP/nAMP モードを有効にする
    orreq r0, r0, r10 @ CPU 固有の SMP ビットを有効にする
    orr r0, r0, #(1) @ この行を追加すると ACTLR[0]
    mcreq p15、0、r0、c1、c0、1
    #endif

     

    関連製品

    本記事の適用対象: 2 製品

    Cyclone® V FPGA & SoC FPGA
    インテル® Arria® 10 FPGA & SoC FPGA

    このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。この内容は参考情報および一般的な情報を提供するためものであり、情報の正確さと完全性を保証するものではありません。インテルは不正確な翻訳があった場合でもいかなる責任を負いません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。