2

ダイレクト マップ キャッシュは 16 ブロックで構成されます。メイン メモリには、それぞれ 8 バイトの 16K ブロックが含まれます。メイン メモリのアドレス形式 (各フィールドのサイズを意味します) は何ですか。

フィールドが Tag|Block|Offset であることはわかっています。それぞれのサイズを取得する方法がわかりません。

4

1 に答える 1

10

これは宿題ですか?

この問題を解決するには、問題のアーキテクチャのアドレス サイズを知る必要があります。一般的な解決策:

C をキャッシュのビット単位のサイズとします。
アドレスのビット単位のサイズを A とします。
B をキャッシュ ブロックのビット単位のサイズとします。
S をキャッシュの連想性とします (ある意味で、ダイレクト マップは S=1 であり、完全連想は S=C/B です)。

キャッシュ内のライン数 L は、C/B に等しくなります。これは、キャッシュ ビット数を 1 行あたりのビット数で割ったものです。キャッシュ内のセットの数である Q は、L/S に等しくなります。これは、結合性で割った行数です。この行と上記の理由は明らかです。そうでない場合は、以下を読む前に教科書をもう一度叩いてください。

では、ディスプレイスメント ビット、ブロック ビット、タグ ビットの 3 つを考えてみましょう。

置換ビットは、キャッシュ ライン内の特定のアイテムを見つけるためのものです。バイト アドレス指定可能なメモリを仮定すると、変位ビットの数 D は ceil(log2(ceil(B/8))) です。これは、各ステップで切り上げられた、キャッシュ ライン内のバイト数の 2 を底とする対数です。メモリが 2 バイトでアドレス指定できる場合、内側の部分は B/16 などになります。

ブロック ビットは、キャッシュ内で必要なキャッシュ セットを見つけるためのものです。したがって、ブロックのビット数 O は ceil(log2(Q)) です。これは、キャッシュ内のセット数の 2 を底とする対数です。

タグビットは残っているものです。したがって、タグ ビットの数である T は ADO です。英語では、アドレスのビット数から、他の 2 つの部分に使用されるビット数を差し引いたもの。ここで結合性を考慮する必要はありません。これは、L の代わりに Q を使用して上記で既に処理したためです。

要約すれば:

  • 変位ビットは、行内の特定のバイトを指定するために必要な数です
  • ブロック ビットは、キャッシュ内の特定のセットを指定するために必要な数です。
  • タグビットは残ったビットです

最後にタグの長さを計算します。これは間違いなく簡単です。

PS - 実際には、キャッシュにはダーティ ビットとその他のメタデータも各行に格納されることに注意してください。ただし、これらの質問は通常、そのようなことを無視するので、私もそうしました。

于 2010-08-30T23:41:42.737 に答える