回答:
それはプロセッサ(プロセッサシリーズだけでなく、モデルごとに異なる可能性があります)とオペレーティングシステムの両方に依存しますが、一般的な原則があります。プロセッサがマルチコアであるかどうかは、この側面に直接影響しません。同じプロセスが複数のコアで同時に実行され(マルチスレッドの場合)、プロセス間でメモリを共有できるため、コンテキストスイッチで何が起こってもキャッシュの同期は避けられません。
プロセッサがキャッシュ内のメモリ位置を検索するときに、MMUがある場合、その位置の物理アドレスまたは仮想アドレスのいずれかを使用できます(両方を組み合わせることもありますが、ここでは実際には関係ありません)。
物理アドレスを使用すると、どのプロセスがアドレスにアクセスするかは関係なく、コンテンツを共有できます。そのため、コンテキストの切り替え中にキャッシュコンテンツを無効にする必要はありません。2つのプロセスが同じ物理ページを異なる属性でマップする場合、これはMMUによって処理されます(MPU(メモリ保護ユニット)として機能します)。物理的にアドレス指定されたキャッシュの欠点は、MMUがプロセッサとキャッシュの間に座っている必要があるため、キャッシュの検索が遅いことです。L1キャッシュはほとんど物理的なアドレスではありません。高レベルのキャッシュがあります。
同じ仮想アドレスは、異なるプロセスの異なるメモリ位置を示すことができます。したがって、仮想的にアドレス指定されたキャッシュでは、プロセッサとオペレーティングシステムが連携して、プロセスが適切なメモリを見つけるようにする必要があります。一般的な手法がいくつかあります。オペレーティングシステムによって提供されるコンテキスト切り替えコードは、キャッシュ全体を無効にする可能性があります。これは正しいですが、非常にコストがかかります。一部のCPUアーキテクチャでは、キャッシュラインにASID(アドレススペース識別子)、MMUによっても使用されるプロセスIDのハードウェアバージョン用のスペースがあります。これにより、キャッシュエントリが異なるプロセスから効果的に分離され、同じページをマップする2つのプロセスが同じ物理ページの一貫性のないビューを持つことになります(通常、共有ページを示す特別なASID値があり、ただし、これらがマップされているすべてのプロセスで同じアドレスにマップされていない場合は、フラッシュする必要があります。オペレーティングシステムが、異なるプロセスが重複しないアドレススペースを使用するように注意する場合(仮想メモリを使用する目的の一部は無効になりますが、場合によっては実行できます)、キャッシュラインは有効なままです。
MMUを搭載したほとんどのプロセッサには、TLBも搭載されています。TLBは、仮想アドレスから物理アドレスへのマッピングのキャッシュです。TLBは、物理アドレスが指定されたキャッシュを検索する前に参照され、可能な場合は物理アドレスが迅速に決定されます。多くの場合、キャッシュラインのオフセットを決定するビットとページを決定するビットの間のアドレスの中間ビットから候補キャッシュラインを特定できるため、プロセッサはTLBルックアップが完了する前にキャッシュルックアップを開始する場合があります。キャッシュヒットがある場合、仮想アドレスキャッシュはTLBをバイパスしますが、ミスの場合、プロセッサはキャッシュのクエリ中にTLBルックアップを開始できます。
TLB自体は、コンテキスト切り替え中に管理する必要があります。TLBエントリにASIDが含まれている場合は、そのままにしておくことができます。オペレーティングシステムは、ASIDの意味が変わった場合(プロセスが終了したなど)にのみTLBエントリをフラッシュする必要があります。TLBエントリがグローバルである場合、別のコンテキストに切り替えるときに無効にする必要があります。
キャッシュは通常、コンテキストスイッチを無視します。アクセスされるメモリアドレスのシーケンスのみが、どのキャッシュラインが置き換えられるかを決定します。
置換ポリシーは通常、製造元と特定のマイクロアーキテクチャに依存するヒューリスティックです。問題は、ヒューリスティックが将来を予測できないことです。どのアドレス、したがってキャッシュラインが次にアクセスされます。
ヒューリスティックは、LRU(最近使用されたものではない)のような単純なものです。しかし、最新のCPUでは、ヒューリスティックはより複雑です。
見てみましょうインテル®64およびIA-32アーキテクチャー・ソフトウェア・デベロッパーズ・マニュアル第3巻第11章では、メモリー・キャッシュとキャッシュ制御機構を説明します。AMDは、AMD64 Architecture Programmer's Manual Volume 2:System programmingの第7章にこれを記載しています。ARMベースのCPUの場合、PDFは登録済みのお客様のみが利用できるようです。