異なるキャッシュのタグ、インデックス、オフセットビットの数を計算する方法は?


18

具体的には:

1)各ブロックに8個の32ビットワードがある4096ブロック/ラインのダイレクトマップキャッシュ。32ビットアドレスを想定して、タグフィールドとインデックスフィールドには何ビットが必要ですか?

2)1)と同じ質問ですが、完全連想キャッシュについてですか?

私が間違っている場合、私を修正してください:

タグビット=アドレスビット長-インデックスの指数-オフセットの指数?

[オフセットは3 = 2 ^ 3 = 8ですか、それとも2 ^ 5 = 32から5ですか?]


回答:


20

述べられている質問はまったく答えられません。ワードは 32ビットであると定義されています。システムが「バイトアドレス指定可能」(8ビットのデータチャンクにアクセスできる)、「ワードアドレス指定可能」(アクセス可能な最小のチャンクは32ビット)、または「ハーフワードアドレス指定可能」(アクセスできるデータの最小チャンクは16ビットです。)アドレスの最下位ビットが何を伝えているかを知るには、これを知る必要があります。

次に、ボトムアップで作業します。システムがバイトアドレス指定可能であると仮定しましょう。

各キャッシュブロックには8ワード*(4バイト/ワード)= 32 = 2 5バイトが含まれるため、オフセットは5ビットです。

直接マップされたキャッシュのインデックスは、キャッシュ内のブロック数です(2 12 = 4096 であるため、この場合は12ビットです)。

その後、指定したとおり、タグは残っているすべてのビットです。

キャッシュの連想性は高まりますが、同じサイズのままであるため、インデックスビットが少なくなり、タグビットが増えます。


うん、それはバイトアドレス指定可能だが、私は見ての質問は、具体的にそれを述べるなかった
compski

3

タグビットの式は正しいです。

オフセットが3ビットであるか5ビットであるかは、プロセッサがバイト(オクテット)アドレス指定とワードアドレス指定のどちらを使用するかによって異なります。DSP以外では、最近のプロセッサのほとんどがバイトアドレッシングを使用しているため、バイトアドレッシング(および5つのオフセットビット)を想定しても安全です。


私は、このような違いがあった知らなかった、はい、それはバイトアドレッシングです
compskiは

1
1970年代半ば以前は、「ワード」がアドレス可能なデータの最小単位のサイズであると合理的に仮定していました。単語に関するウィキペディアページのこのはおもしろいです(もしあなたがそのようなことを好むなら(私はそうです))
さまよう論理

1

対象のコンピューターシステムの最終試験のために学んでいますが、しばらくグーグルで調べて、この質問を見つけました。そして、質問のこの部分は混乱しています。「各ブロックには8つの32ビットワードがあります」。ワードは4バイト(または32ビット)なので、質問は「...各ブロックに8ワードがある」だけで十分です。

答えは-各ブロックは32バイト(8ワード)ですので、各ブロックのどのバイトを決定するために5オフセットビットが必要です-直接マッピング=>セット数=ブロック数= 4096 => 12インデックスビットが必要ですどのセットを決定する

=>タグビット= 32-12-5 = 15

完全連想の場合、セットの数は1 =>インデックスビットなし=>タグビット= 32-0-5 = 27


1

完全連想キャッシュにはインデックスビットはありません。インデックスビットは、ブロックが属するセットを一意に識別するために使用されます。完全連想キャッシュでは、すべてのブロックは本質的に同じセットの一部です。


-1

あなたが言うようにフルアソシエイトマッピングインデックスは0 b / sですので、set = 1ですのでindex =ベース2の1のログ= 0セットオフセット=バイトベース2のブロックサイズのログなので8 = 2 ^ 3または32 = 2 ^を使用します5直接インデックス= 2 ^ 12 = 12の場合、タグ= 32-0-5 = 27オフセット= 0ビットタグ= 32-12-0 = 20


これを読むのは非常に不可能だと思います。句読点を使用してください。
デビッドリチャービー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.