キャッシュラインとメモリページの関係

  1. 正しければ、メインメモリのページはデータ転送の最小単位単位ですメインメモリとハードディスクなどの外部ストレージデバイスの間。メインメモリのキャッシュラインは、メインメモリとcpuキャッシュ間でデータを転送するための最小単位です。

  2. ページサイズは常に、または最適であるかどうか疑問に思います。キャッシュラインサイズの自然な数?キャッシュラインサイズが64バイトで、メモリページサイズが4KBの場合、各ページには4KB / 64バイト== 64キャッシュラインが含まれます。

  3. ページとキャッシュラインは両方ともメモリ内の固定オブジェクトですか?それとも、特定のサイズのメモリの連続したブロックであり、メモリ内のどこからでも開始およびフロートできますか?

  4. キャッシュラインは、それを超えることはできません。 1つのページ、つまりキャッシュラインの一部がページにあり、キャッシュラインの別の部分が別のページにありますか?

ありがとうございます。

コメント

  • 質問への回答はCPUアーキテクチャに大きく依存します。

回答

  1. キャッシュラインは、物理メモリに触れることができる最小の単位です。つまり、1バイトの読み取り/書き込みを行うと、それを含む完全なキャッシュ行がCPUキャッシュに読み込まれ、書き戻されます。キャッシュをバイパスして書き込む命令(エフェメラルストリーミング命令)でさえ、キャッシュラインサイズで書き込むことに注意してください。 CPUにもよりますが、キャッシュラインサイズは通常32/64/128バイトです。メモリページがディスクに書き込まれるとき、それらは全体として書き込まれます。これは、メモリの負荷が高すぎる場合、または休止状態のプロセスで(場合によっては他の用途で)発生します。また、必要に応じて全体が読み取られます。これは主に、カーネルがページが部分的または完全に使用されているかどうかを知る方法がないためです。他の外部ストレージの読み取り/書き込み操作には、任意の粒度を設定できます(例:fwrite(..))。

  2. ページサイズはCPU / GPUに依存します。ほとんどのCPUの場合、ページサイズは少なくとも4KBであり、通常は4KB / 64KB / 2MB / 4MB / 16MB / 1GBの組み合わせをサポートします(必ずしもすべてが同時にサポートされるとは限りません)。サイズは常に2の累乗になります。

  3. ページとキャッシュラインはどちらも連続しており、それぞれのサイズに合わせる必要があります。 64バイトのキャッシュラインは常に64バイトで整列され、2MBのページは常に2MBで整列されます。

  4. #3のため、ページサイズが2ページにまたがることはありません。常にキャッシュラインよりも大きく、常にキャッシュラインのサイズの倍数になります。

メモリに関する豊富な情報については、次の優れたソースを参照してください: http://lwn.net/Articles/250967/

コメント

  • この回答は2020年でもまだ関連していますか?これらのサイズは変更されましたか?
  • 私が知る限り、これらの値は今日でも関連性があります。最新のx86およびx64CPUはすべて、キャッシュラインあたり64バイトを使用し、WindowsおよびLinuxでは4KBが最も一般的なページサイズのままです。組み込みデバイスの場合、サポートされているものの詳細については、プロセッサの内部マニュアルを確認してください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です