2012-04-10 4 views
0

質問:はヒット&ミス・4ウェイ連想キャッシュを使用して

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ミス

10→セル2→10/2 = 5→5%→8(10,11) 2分の34→(34,35):セル1→ミス

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

2→ = 17→17%8 = 1ミス

18→セル1→:細胞におけるHIT:18/2 = 9→9%8 = 1ミス→セル1→

4→(18,19) 2

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

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

11:細胞におけるHIT 5

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. 私はキャッシュのマップに間違っていますか?

私はあなたの助けをいただければと思います....私の試験はもうすぐです:)

おかげで、

ロン

答えて

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 [] 
関連する問題