
假設我有一個 32 位元可尋址記憶體和一個 4 kib 直接映射快取。假設快取的每個條目(行)都由一個唯一的字(32 位元)組成。
我們可以推論索引的大小為 10 位,因為 4*2^10 位元組 / 4 = 2^10 個字 = 2^10 行。
現在,由於每行只有一個單詞,我認為我們不需要偏移字段。因此,快取的位址可以這樣分解:
- 位 0 至 9:索引
- 位 10 至 31:標籤
我的邏輯有問題嗎?
答案1
我們需要 2 位元作為偏移量,因為 32 位元值有 4 個位元組,每個位元組都可以單獨訪問,因此偏移量可能是 0、1、2 或 3。
因此,直接映射緩存以這種方式分解位址:
- 位元 0 到 1:偏移量
- 位 2 至 11:索引
- 位 12 至 31:標籤
答案2
高速緩存行通常為 64 字節,偏移位 0-6 選擇該行上的一個位元組。