2014-03-06 43 views
0

我在我的書中直接映射緩存的例子。內存地址是否與緩存塊中的數據分開?

規格爲: 假設32位字,32位地址,1字塊大小(b),8字容量(C)。 這意味着塊數(B)= C/b = 8和集合數(S)= B = 8

我很困惑,因爲我認爲每個集合只包含1個字(b),因此32位。但是在這幅圖中,它顯示數據是32位,標籤是27位。這給我們總共59位比塊大小(b)大的位。

這是否意味着地址保存在其他地方並且只有數據保存在集合中?

enter image description here

回答

1

作爲您的圖片顯示,該數據部分32B(如你所說,每個集合中只有1個字)。

標記是每個集合中的一個必需部分,它允許我們知道請求地址是否位於緩存中(「命中」)。你的照片說這個標籤的大小是27位。 (59位)簡單地追蹤構建該緩存需要多少實際SRAM(1個有效位+27個標籤位+32個數據位)* 8組= SRAM的480位。

但是,不要因爲認爲標籤是數據塊的一部分而讓自己感到困惑。它可以(並且經常)位於芯片的其他地方,即使在概念上它與該組的數據部分耦合。

我還想添加(並希望不會進一步混淆主題),而可以像他們所示的那樣構建一個緩存(SRAM中的標記,有效位和數據,這意味着它將會非常密集),你可能實際上並不想這樣構建它!數據將存儲在SRAM中,但我懷疑有效位和標籤更可能位於觸發器中的其他位置。訪問速度快得多!你應該和你的老師討論緩存通常是如何構建的,以及在SRAM和觸發器中使用標籤和有效位的問題。