0

質問 :

Given a computer ,where were made the following memory accesses 

(from left to right) : 

5 ,10 ,2 ,34 ,18 ,4 ,22 ,21 ,11 ,2

* Decide if we have a HIT or MISS when dealing with a 4-way associative mapping ,
  when the total size of the cache is 32 blocks of 2 bytes !

* When you're done , write the final map of the cache 

私の答え :

セットのサイズは 4 であるため、次のようになります。

(ブロック数)/(ウェイ数)=32/4=8

次に、0 から 7 までの 8 つのセルを持つキャッシュがあります (間違っている場合は訂正してください !!? )

現在 : 5:(4,5)→5/2=2→2 % 8=2→セル 2→ミス

10:(10,11)→10/2=5→5% 8=5→セル5→ミス

2:(2,3)→2/2=1→1 %8=1→セル1→ミス

34:(34,35)→34/2=17→17% 8=1→セル1→ミス

18:(18,19)→18/2=9→9% 8=1→セル1→ミス

4:セル2でHIT

22:(22,23)→22/2=11→11% 8=3→セル3→ミス

21:(20,21)→21/2=10→10% 8=2→セル2→ミス

11: セル 5 で HIT

2:セル1でHIT

キャッシュの最終的なマップは次のとおりです。

0: empty
1: (2,3) (34,35) (18,19)
2: (4,5) (20,21)
3: (22,23)
4: empty
5: (10,11)
6: empty
7: empty
  1. 私の答えは正しいですか?

  2. キャッシュのマップが間違っていますか?

私はあなたの助けに感謝します....私の試験はもうすぐです:)

ありがとう 、

ロン

4

1 に答える 1

0

単純な Python プログラム (置換がないため無視) は、あなたが正しいと言います

from collections import defaultdict

d = defaultdict(list)

for item in (5 ,10 ,2 ,34 ,18 ,4 ,22 ,21 ,11 ,2):
    value = item // 2 * 2, item // 2 * 2 + 1
    cell = item // 2 % 8
    if value in d[cell]:
        print "HIT", cell
    else:
        d[cell].append(value)
        print "MISS", cell

for i in range(8):
    print i, d[i]

--

MISS 2
MISS 5
MISS 1
MISS 1
MISS 1
HIT 2
MISS 3
MISS 2
HIT 5
HIT 1

0 []
1 [(2, 3), (34, 35), (18, 19)]
2 [(4, 5), (20, 21)]
3 [(22, 23)]
4 []
5 [(10, 11)]
6 []
7 []
于 2012-04-10T20:44:15.493 に答える