CPUキャッシュがどのように動作しているかを理解しようとしています。この構成があるとしましょう (例として)。
- キャッシュサイズ 1024 バイト
- キャッシュライン 32 バイト
- 1024/32 = 32 キャッシュ ラインがすべて一緒になります。
- Singel キャッシュ ラインは 32/4 = 8 int を格納できます。
1) これらの構成によれば、タグの長さは 32-5=27 ビット、インデックスのサイズは 5 ビット (キャッシュ ラインの各バイトに対して 2^5 = 32 アドレス) である必要があります。
合計キャッシュ サイズが 1024 で、キャッシュ ラインが 32 ある場合、タグとインデックスはどこに保存されますか? (他に 4*32 = 128 バイトあります。) キャッシュの実際のサイズは 1024+128 = 1152 ということですか?
2) この例でキャッシュ ラインが 32 バイトの場合、これは、CPU が RAM から新しいバイトを取得する必要があるたびに、32 バイトがキャッシュにコピーされることを意味します。要求されたバイトのキャッシュ ラインの位置がそのアドレスによって決定されると仮定するのは正しいですか?
つまり、CPU が でバイトを要求した場合、利用可能なキャッシュ ラインは からまで[FF FF 00 08]
のバイトで満たされます。そして、要求された 1 バイトは position になります。[FF FF 00 00]
[FF FF 00 1F]
[08]
3) 前のステートメントが正しい場合、32 バイトすべてがとにかくキャッシュ ラインにあるため、インデックスに使用される 5 ビットは技術的に必要ないということですか?
何か問題がありましたらお知らせください。ありがとう