11

私は Cortex A の初心者であり、ARM が弱く順序付けられたメモリ モデルを適用していること、および相互に排他的な 3 つのメモリ タイプがあることを認識しています。

  • 強い秩序
  • デバイス
  • 普通

Normal とは何か、Strongly ordered と Device とは何を意味するのかを大まかに理解しています。ただし、強く順序付けられたデバイスとデバイスの違いは、私にとって混乱を招きます。

Cortex-A Series Programmer's Guideによると、唯一の違いは次のとおりです。

厳密に順序付けされたメモリへの書き込みは、書き込みによってアクセスされるペリフェラルまたはメモリ コンポーネントに到達した場合にのみ完了できます。

デバイス メモリへの書き込みは、書き込みによってアクセスされるペリフェラルまたはメモリ コンポーネントに到達する前に完了できます。

これの本当の意味が何であるかについてはよくわかりません。Strongly-ordered または Device で型指定されたメモリへのアクセスの順序は、プログラマのコードと一貫している必要があります (順不同のアクセスはありません)。ただし、Device と入力すると、CPU はメモリへのアクセス中に次の命令を実行する可能性があり、Strongly-ordered と入力すると、アクセスが完了するまで単に待機します。

私が間違っている場合は訂正してください。これを行う意味を教えてください。

前もって感謝します。

4

1 に答える 1

10

理解しておくべき重要な点の 1 つは、メモリの種類が命令ストリーム全体に与える影響は保証されていないということです。影響を受けるのは、メモリ アクセスの順序だけです。(特定の相互接続と特定の方法で統合された特定のプロセッサに特定の影響を与える可能性がありますが、ソフトウェアによって依存することはできません。)

理解すべきもう 1 つの重要な点は、厳密に順序付けられたメモリでさえ、同じペリフェラルへのアクセスに関してのみ順序付けの暗黙の保証を提供するということです。それよりも厳密な順序付け要件では、明示的なバリア命令を使用する必要があります。

3 番目の重要な点は、メモリの種類によって発生する暗黙的なメモリ アクセスの順序付けは、他のメモリ タイプへのアクセスの順序付けには影響しないということです。繰り返しになりますが、アプリケーションにこのような依存関係がある場合は、明示的なバリア命令が必要です。

さて、その背景に対して、デバイスとストロングオーダーメモリの違いを説明する簡単な方法は、デバイスメモリアクセスがプロセッサ自体またはインターコネクトでバッファリングできることです。違いは、バッファーされたアクセスは、エンドポイントで完了する (または開始する) 前に、完了したことをプロセッサに通知できることです。これにより、エラー状態の同期レポートが失われる代わりに、パフォーマンスが向上します。

于 2013-09-08T14:49:52.090 に答える