質問

マルチコアプロセッサでは、そのキャッシュでコンテキストスイッチが発生したときに、コアのキャッシュ(L1など)の内容はどうなりますか?

行動はアーキテクチャに依存していますか、それともすべてのチップメーカーがそれに続く一般的な動作ですか?

役に立ちましたか?

解決

これは、プロセッサ(プロセッサシリーズだけでなく、モデルごとに異なる場合があります)とオペレーティングシステムの両方に依存しますが、一般原則があります。プロセッサがマルチコアであるかどうかは、この側面に直接影響を与えません。同じプロセスが複数のコアで同時に実行される可能性があり(マルチスレッドの場合)、プロセス間でメモリを共有できるため、コンテキストスイッチで何が起こるかに関係なく、キャッシュの同期は避けられません。

プロセッサがキャッシュ内のメモリの位置を調べたとき、 MMU, 、その場所の物理的または仮想アドレスのいずれかを使用できます(場合によっては両方の組み合わせでさえありますが、ここでは実際には関連していません)。

物理的なアドレスでは、どのプロセスがアドレスにアクセスしているかは関係ありません。内容を共有できます。そのため、コンテキストスイッチ中にキャッシュコンテンツを無効にする必要はありません。 2つのプロセスが異なる属性を持つ同じ物理ページをマッピングする場合、これはMMUによって処理されます( MPU (メモリ保護ユニット))。物理的にアドレス指定されたキャッシュの欠点は、MMUがプロセッサとキャッシュの間に座る必要があるため、キャッシュルックアップが遅いことです。 L1キャッシュは、ほとんど物理的に対処することはありません。高レベルのキャッシュはそうかもしれません。

同じ仮想アドレスは、異なるプロセスで異なるメモリの位置を示すことができます。したがって、実質的に扱われたキャッシュを使用すると、プロセッサとオペレーティングシステムが協力して、プロセスが適切なメモリを見つけることを確認する必要があります。いくつかの一般的なテクニックがあります。オペレーティングシステムによって提供されるコンテキストスイッチングコードは、キャッシュ全体を無効にする可能性があります。これは正しいですが、非常に費用がかかります。一部のCPUアーキテクチャには、MMUが使用するプロセスIDのハードウェアバージョンのASID(アドレススペース識別子)のキャッシュラインにスペースがあります。これにより、キャッシュエントリが異なるプロセスから効果的に分離され、同じページをマッピングする2つのプロセスが同じ物理ページの一貫性のないビューを持つことを意味します(通常、共有ページを示す特別なASID値がありますが、これらはそれらをフラッシュする必要があります。マッピングされているすべてのプロセスで同じアドレスにマッピングされません)。オペレーティングシステムが、異なるプロセスが非重複アドレススペースを使用していること(仮想メモリを使用する目的の一部を無効にするが、時々実行できる)に注意する場合、キャッシュラインは有効なままです。

MMUを持つほとんどのプロセッサにもあります TLB. 。 TLBは、仮想アドレスから物理アドレスまでのマッピングのキャッシュです。 TLBは、物理的にアドレスしたキャッシュの検索前に相談され、可能な場合は物理的なアドレスを迅速に決定します。 TLBルックアップが完了する前に、プロセッサはキャッシュルックアップを開始する場合があります。これは、候補キャッシュラインをアドレスの中央ビットから、キャッシュラインのオフセットを決定するビットとページを決定するビット間で識別できるためです。キャッシュがヒットしている場合は、実質的にアドレスしたキャッシュがTLBをバイパスしますが、プロセッサはミスの場合にキャッシュをクエリしている間にTLBルックアップを開始する場合があります。

TLB自体は、コンテキストスイッチ中に管理する必要があります。 TLBエントリにASIDが含まれている場合、それらは所定の位置にとどまることができます。オペレーティングシステムは、ASIDが意味を変えた場合にのみTLBエントリをフラッシュする必要があります(たとえば、プロセスが終了したため)。 TLBエントリがグローバルである場合、別のコンテキストに切り替えるときに無効にする必要があります。

他のヒント

通常、キャッシュはコンテキストスイッチを忘れています。アクセスされたメモリアドレスのシーケンスのみが、どのキャッシュラインが交換されるかを決定します。

交換ポリシーは通常、メーカーと特定のマイクロアーキテクチャに依存するヒューリスティックです。問題は、ヒューリスティックが未来を予測できないことです。そのアドレス、したがってキャッシュラインに次にアクセスすることです。

ヒューリスティックは、LRUのように単純なものになる可能性があります(最小限には使用されていません)。しかし、現代のCPUでは、ヒューリスティックはより複雑です。

を見てください Intel®64およびIA-32アーキテクチャソフトウェア開発者のマニュアルボリューム3 第11章では、メモリキャッシュとキャッシュ制御メカニズムについて説明します。 AMDはこれを第7章で持っています AMD64アーキテクチャプログラマーズマニュアルボリューム2:システムプログラミング. 。 ARMベースのCPUの場合、PDFは登録された顧客のみが利用できるようです。

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top