5

次の問題が発生しましたが、正確にどのようにアプローチすればよいかわかりません。

次のプロパティを持つ仮想メモリ システムを考えてみましょう。

・35ビットの仮想アドレス

・16KBページ

・32ビットの物理アドレス

この仮想メモリ システムが 8 ウェイ セット アソシアティブ TLB で実装されているとします。TLB には合計 256 の TLB エントリがあり、各 TLB エントリは 1 つの仮想ページから物理ページへの変換を表します。

64 KB のデータ キャッシュは、双方向セット アソシアティブ キャッシュです。データ キャッシュのブロック サイズは 128 バイトです。

以下の図と同様の方法で描画された図を使用して、仮想から物理へのマッピングを示します (ただし、この質問で指定された TLB とデータキャッシュに必要なすべての変更を加えてください)。

各メモリ アドレスの TLB とデータ キャッシュに出入りするすべてのフィールドと信号の幅 (および実行される比較の数) を指定します。

いくつかのパラメーターを計算する方法についてはある程度のアイデアがありますが、そうでなければ道に迷ってしまいます。

たとえば、仮想アドレスは 35 ビット幅なので、2^35 の可能な仮想アドレスがあることがわかります。

16KB のページ (16*1KB = 2^4 * 2^10 = 2^14KB) があるので、(3^35)/(2^14) = 2^21 ページ テーブル エントリが必要であることがわかります。

最後に、私のキャッシュ サイズは 64 * 1KB = 2^16 バイトのキャッシュであることがわかりました。

しかし、これらの手順の後、私は迷子になります。どんな助けでも大歓迎です。

形

4

1 に答える 1

5

ページ オフセットは、ページ内でアドレス指定され、TLB によって変換されないビットで構成されます。16 KiB ページの場合、ページ オフセットは 14 ビットになります。

35 ビットの仮想アドレスでは、TLB 内のセットとそのセット内のタグ エントリにインデックスを付けるために 21 ビットが残ります。TLB には 256 のエントリがあり、各セットには 8 つのエントリ (8 ウェイ アソシアティブ) があるため、32 個のセットがあり、セットのインデックスに 5 ビットが必要です。これにより、タグ用に 16 ビットが残ります。

物理ページ番号のサイズは、物理アドレスのサイズからページ オフセットのサイズを引いたもの (32 - 14 = 18 ビット) に等しくなります。

直接マッピングされておらず、完全に関連付けられていない TLB を示すことは、完全に関連付けられた TLB の例よりも複雑であり、セット インデックス付けの次元が追加されます。これは、1 つのウェイ (インデックス付きの次元) が完全に見えるようにウェイをオーバーレイすることで処理できます。以下は、1 方向に 8 つのエントリを持つ 4 方向構造の ASCII アート バージョンです。

               +----------+----------+
             +----------+----------+ |  
           +----------+----------+ |-+
         +----------+----------+ |-+ |
         |          |          |-+ |-+
         +----------+----------+ |-+ |
         |          |          |-+ |-+
         +----------+----------+ |-+ |
         |          |          |-+ |-+
         +----------+----------+ |-+ |
         |          |          |-+ |-+
         +----------+----------+ |-+ |
         |          |          |-+ |-+
         +----------+----------+ |-+ |
         |          |          |-+ |-+
         +----------+----------+ |-+ |
         |          |          |-+ |-+
         +----------+----------+ |-+
         |          |          |-+
         +----------+----------+

32 セットの場合、省略記号 (...) を使用してそれらのほとんどを暗示することができます。同様に、省略記号を使用して、ウェイ内のエントリを暗示することができます (何百ものエントリを描画する必要はありません)。

キャッシュの場合、4 バイト アクセスを想定すると、バイト オフセットは 2 ビットになります。ブロック オフセットは、キャッシュ ブロック内の 4 バイトのチャンクにインデックスを付けるために使用されます。128 バイトのキャッシュ ブロックでは、特定のバイトのインデックス作成に 7 ビットが必要になるため、4 バイトのチャンクのインデックス作成には 5 ビットしか必要ありません。

双方向連想の 64 KiB は、各方向に 32 KiB を持ちます。128 バイトのキャッシュ ブロックの場合、これは各ウェイに 256 ブロックが含まれることを意味するため、特定のセット (各ウェイ内のキャッシュ ブロック) にインデックスを付けるには、物理​​アドレスの 8 ビット (ブロックおよびバイト オフセットを超える) が必要です。これはキャッシュ インデックスです。

32 ビットの物理アドレス、8 ビットのキャッシュ インデックス、5 ビットのブロック オフセット、および 2 ビットのバイト オフセットを指定すると、タグは 17 ビット (32 - 8 - 5 - 2) になります。

于 2013-11-19T19:04:24.183 に答える