2014-04-11 54 views
2

前言:有許多不同的設計模式對於高速緩存的整體性能很重要。以下列出了不同直接映射緩存設計的參數。計算高速緩存中的位數

緩存數據大小:32 KIB 高速緩存塊大小:2個詞語 緩存存取時間:1個週期

問題:計算上面列出的高速緩存所需的位的數目,假設32位地址。鑑於總大小,請查找具有相同大小或更大的16個字塊的最近直接映射緩存的總大小。解釋爲什麼第二個緩存儘管數據量較大,但可能會提供第一個緩存的較慢性能。

這裏的公式: 在緩存2^N×(塊大小+標籤的尺寸+有效的字段大小)

這裏數位的是我得到的

65536(1 + 14X(32X2)..這是正確的?感謝所有幫助。

回答

2

(2^index bits) * (valid bits + tag bits + (data bits * 2^offset bits))

的第一個我得到:

total bits = 2^15 (1+14+(32*2^1)) = 2588672 bits 

的緩存,16字塊,我得到:

total bits = 2^13(1 +13+(32*2^4)) = 4308992 

16字中的下一個最小緩存塊和32位地址的結果是2158592位,小於第一個緩存。

+0

你是如何在第一部分找到「2^15塊」的?由於緩存數據大小爲'32KiB'且有'2個字/塊',因此'32 * 2^10個字節/ 8個字節'產生'2^12個塊'。 – Chittolina

1

我卡在了同樣的問題太多,但我有答案的第一部分。

要計算所需的位總數

  1. 您需要將KB轉換爲單詞並獲取索引位。
  2. 使用第1部分的答案來獲取標記位。
  3. 將它們插入此公式中。

    (2^(index bits)) * ((tag bits)+(valid bits)+(data size)) 
    

提示:數據的大小在這種情況下,64位和有效位爲1,所以只要找到索引和標記位。

而我不認爲你的答案是正確的。我沒有檢查,但我可以看到你正在乘以1 + 14和(32x2)而不是添加它們。使用