最近、CPUキャッシュに関する資料を読んでいました。CPU はどのように L1 および L2 キャッシュを検索し、CPU キャッシュ内のデータはどのような形式で保存されるのでしょうか?
キャッシュの線形スキャンは非効率的だと思いますが、より良い解決策はありますか?
ありがとう。
検索しているアドレスから抽出されたインデックスビットとタグを使用します。
32ビットアドレスのADDRにアクセスしているとします
ADDRにはビットがあります:31 ------------------------- 0、[------ tag | index | offset]
次に、キャッシュのサイズに応じて、ブロックあたり32バイトの32Kのダイレクトマップキャッシュがあるとします。
オフセットビットは、各行内のデータを見つけるために使用されます。これは、8バイトがキャッシュに取り込まれる最小データサイズであるためです(常に32バイト全体を取得しますが、32バイト内にデータがあります)。
これは、1024行またはセットのキャッシュを占め、各行は32バイトです。1024セットのインデックスを作成するには、10ビットが必要です。したがって、アドレスからの10ビットは、キャッシュへのインデックスとして使用されます。オフセットビットは、その行のどこにデータがあるかを確認するために使用され、タグビットは、2つ以上のアドレスがキャッシュの同じ行にマップされるため、検索しているアドレスと一致させるために使用されます。意味がありますか?
私はあなたの答えを知りませんが、あなたをその答えに導くかもしれない良い本をお勧めします - The Essentials Of Computer Organization and Architecture