4

キャッシングの仕組みを理解しようとしています。私はこの概念をよりよく理解するために問題に取り組んでいます:

ブロックの長さが 1 ワードで、合計サイズが長さ 32 ビットの 16 ワードである 2 ウェイ セット連想キャッシュの場合、最初は空で、最も使用頻度の低い置換戦略を使用します。次のアドレスがヒットしたかミスしたかを示し、キャッシュの最終的な内容を一覧表示します。

住所:

  1. 00010001
  2. 01101011
  3. 00111111
  4. 01001000
  5. 00011001
  6. 01000010
  7. 10001001
  8. 00000000
  9. 01001000
  10. 00011100
  11. 00110000
  12. 11111100
  13. 00111010

まず、与えられた情報では、次の順序で 2 つのオフセット ビット、3 つのセット ビット、3 つのタグ ビットがあるように私には思えます (T=tag、S=set、O=offset): TTTSSSOO

例 (アドレス 1):

タグ=000 (0)、セット = 100 (4)、オフセット = 01 (1)

これが正しいと仮定すると、上記のアドレスを検索すると、次ようになります。

  1. ミス、セット 4、ブロック 0 に保存
  2. ミス、セット 2、ブロック 0 に保存
  3. ミス、セット 7、ブロック 0 に保存
  4. ミス、セット 2、ブロック 1 に格納
  5. ミス、セット 6、ブロック 0 に保存
  6. ミス、セット 0、ブロック 0 に保存
  7. ミス、セット 2、ブロック 0 に格納 (ブロック 0 は LRU でしたが、ブロック 1 は LRU になります)
  8. ミス、セット 0、ブロック 1 に保存
  9. セット 2、ブロック 1 のヒット数
  10. ミス、セット 7、ブロック 1 に格納
  11. ミス、セット 6、ブロック 1 に格納
  12. ミス、セット 7、ブロック 0 に格納 (ブロック 0 は LRU でしたが、ブロック 1 は LRU になります)
  13. ミス、セット 6、ブロック 0 に格納 (ブロック 0 は LRU でしたが、ブロック 1 は LRU になります)

キャッシュの最終的な内容は次のようになります

セット 0: 01000010、00000000

セット 1: 空、空

セット 2: 10001001、01001000

セット 3: 空、空

セット 4: 00010001、空

セット 5: 空、空

セット 6: 00111010、00110000

セット 7: 11111100、00011100

私はこれに非常に苦労しているので、誰かが私が正しい軌道に乗っているかどうかを教えてくれることを願っています. これらが問題ないように見える場合は、同じ演習を試してみたいと思います。

EDIT1: 新しいアドレス。

  1. 000_100_01
  2. 000_010_01
  3. 000_001_10
  4. 000_001_01
  5. 001_010_11
  6. 000_001_00
  7. 000_010_11
  8. 000_010_01
  9. 001_110_00
  10. 000_100_11
  11. 000_000_01
  12. 000_101_11
  13. 011_010_11

どちらが好きですか:

  1. ミス、セット 4 ブロック 0 に格納
  2. ミス、セット 2 ブロック 0 に格納
  3. ミス、セット 1 ブロック 0 に格納
  4. ミス、セット 1 ブロック 1 に格納、ブロック 0 が LRU になる
  5. ミス、セット 2 に格納 ブロック 1、ブロック 0 が LRU になる
  6. ミス、セット 1 ブロック 0 に格納、ブロック 1 が LRU になる
  7. ミス、セット 2 ブロック 0 に格納、ブロック 1 が LRU になる
  8. ヒット、セット 2 ブロック 0 が LRU になる
  9. ミス、セット 6 ブロック 0 に格納
  10. ミス、セット 4 ブロック 1 に格納
  11. ミス、セット 0 ブロック 0 に格納
  12. ミス、セット 5 ブロック 0 に格納
  13. ミス、セット 2 ブロック 0 に格納、ブロック 1 が LRU になる
4

0 に答える 0