快取位址分割與平均記憶體存取時間

輸入快取容量、快取行大小與相聯度,即可看出位址如何分割為標籤、索引與偏移,並以位元數和長條圖顯示。本計算器也會由命中時間、失誤率與失誤懲罰計算平均記憶體存取時間(AMAT),讓你了解快取組織方式如何影響效能。

快取組態

計算結果

位址分割(左側為最高有效位元)

快取行數
–
組數
–
標籤
–
索引
–
偏移
–
平均記憶體存取時間(AMAT)
–

將位址分成三個欄位

快取以稱為快取行(區塊)的單位保存主記憶體的資料。快取行數為容量 ÷ 快取行大小,組數為快取行數 ÷ 相聯度。從位址的低位元開始,偏移用來選擇快取行內的位元組,佔 log₂(快取行大小) 位元;索引用來選擇組,佔 log₂(組數) 位元;其餘的高位元則構成標籤。以預設值 32 位元、32 KB、64 B、8 路計算,共有 512 個快取行與 64 組,得到 6 位元偏移、6 位元索引,以及 32 − 6 − 6 = 20 位元的標籤。

改變相聯度會有什麼影響

在容量與快取行大小相同時,相聯度加倍會使組數減半,因此索引少 1 位元、標籤多 1 位元。1 路即為直接映射快取;將路數設為與快取行數相同(預設值下為 512)則成為只有 1 組、索引為 0 位元的全相聯快取。較高的相聯度可減少因位址集中在同一組而造成的衝突失誤,但必須平行比較更多標籤,會增加比較器面積、功耗與命中時間。

平均記憶體存取時間(AMAT)

比較快取時應看平均記憶體存取時間,而非只看失誤率。AMAT = 命中時間 + 失誤率 × 失誤懲罰,以預設值計算為 4 + 0.05 × 100 = 9 週期。由於失誤懲罰很大,即使失誤率只有 5%,平均值也會變成兩倍以上。若以更大或相聯度更高的快取降低失誤率,卻使命中時間增加,就不一定有利,因為每次存取都要付出命中時間。對於多層快取,請將 L1 的失誤懲罰替換為 L2 命中時間 + L2 失誤率 × L2 失誤懲罰。

設計上的運用與注意事項

較大的快取行能利用空間局部性降低失誤率,但每次失誤要搬移更多資料,使失誤懲罰增加,且快取行數減少也會增加衝突;目前多數 CPU 採用 64 B。L1 快取常採用虛擬索引、實體標籤(VIPT)設計,在 TLB 轉換位址的同時讀取組。若要讓索引與偏移落在頁內偏移的範圍內,容量會被限制為頁面大小 × 相聯度,例如 4 KB × 8 路 = 32 KB。標籤寬度也決定了標籤儲存區的大小。

練習記憶體階層題目

位址為32位元、容量32 KB、快取行大小64位元組的直接映射(direct-mapped)快取,其標籤(tag)為幾位元?

  1. A15位元
  2. B19位元
  3. C17位元
查看答案與解析

正確答案:C. 17位元

快取行大小64位元組 = 2⁶,所以偏移量(offset)為6位元。行數為 32 KB ÷ 64 B = 32768 ÷ 64 = 512 = 2⁹,在直接映射中行數就是組數,所以索引(index)為9位元。其餘為標籤,32 − 9 − 6 = 17位元。19位元是改為4路組相聯、索引減少2位元時的值,不適用於直接映射。

位址為32位元、容量32 KB、快取行大小64位元組的4路組相聯(set-associative)快取,其組數為多少?

  1. A128
  2. B512
  3. C32
查看答案與解析

正確答案:A. 128

行數為 32 KB ÷ 64 B = 512。4路時每組可放入4條快取行,所以組數為 512 ÷ 4 = 128 = 2⁷,索引為7位元,標籤為 32 − 7 − 6 = 19位元。512就是行數本身,是直接映射時的組數。提高相聯度會使組數減少,相對地標籤的位元數增加,比較器也隨之增加。32是把快取行大小的64誤用路數去除所得的值。

快取的命中時間為2個週期、未命中率為4%、未命中代價為150個週期時,平均記憶體存取時間為多少個週期?

  1. A8個週期
  2. B6個週期
  3. C152個週期
查看答案與解析

正確答案:A. 8個週期

平均記憶體存取時間 = 命中時間 + 未命中率 × 未命中代價 = 2 + 0.04 × 150 = 2 + 6 = 8個週期。命中時間在所有存取中都要花費,只有未命中時才額外加上未命中代價。6個週期是只計算未命中的部分而漏加命中時間的值。152個週期是一次未命中的存取所花費的時間,並非平均值。可見即使未命中率僅4%,平均也會變成4倍。

在快取行大小64位元組、組數64的快取中,位址0x1234的資料所放入的組編號為下列何者?

  1. A4
  2. B52
  3. C8
查看答案與解析

正確答案:C. 8

偏移量是 64 = 2⁶,為低位的6位元;索引是組數 64 = 2⁶,為其上的6位元。0x1234 = 4660 除以64,4660 ÷ 64 = 72 餘52,所以快取行編號為72。組編號是快取行編號除以組數的餘數,72 mod 64 = 8。52是除以64的餘數,是表示快取行內位置(偏移量)的值。4只是取出位址十六進位的最後一位數,與組無關。

常見問題

快取行 64 B、位址 32 位元、容量 32 KB 的直接映射快取,標籤有幾位元?

偏移為 log₂64 = 6 位元,32 KB ÷ 64 B = 512 個快取行,因此索引為 9 位元,標籤為 32 − 9 − 6 = 17 位元。若改為 8 路,組數減為 64,索引為 6 位元、標籤為 20 位元。

全相聯快取的索引有幾位元?

0 位元。由於只有 1 組,偏移以外的所有位元都是標籤,且標籤要與每一個快取行比較。在本計算器中將相聯度設為與快取行數相同即可確認。

將失誤率減半與將命中時間縮短 1 週期,哪個效果較大?

以預設值(命中時間 4 週期、失誤率 5%、失誤懲罰 100 週期)計算,失誤率降為 2.5% 時 AMAT 由 9 降至 6.5 週期,而命中時間改為 3 週期則為 8 週期,因此這裡失誤率的影響較大。若失誤懲罰較小,結論可能相反,請用 AMAT 公式比較。

相關術語

快取記憶體 快取行 直接映射快取 組相聯快取 全相聯快取 平均記憶體存取時間(AMAT) 失誤懲罰 衝突失誤

半導體計算工具

每片晶圓晶粒數與良率計算器由晶圓直徑、晶粒尺寸與缺陷密度計算晶粒數、良率與每顆良品成本微影解析度與焦深計算器由波長、NA 與 k1 求解析度(半間距)、焦深與間距分割數建立時間與保持時間時序計算器正反器到正反器路徑的建立時間與保持時間餘裕及最高時脈頻率MOSFET I-V 特性(ID–VDS)改變 Vth、W/L 與 λ,查看 ID–VDS 曲線與工作點:操作區、ID、gm 與 ro測驗題組產生器選擇主題與題數,即可取得可分享的測驗連結,適合課堂與教育訓練使用接面溫度與熱阻計算器由功耗與熱阻計算接面溫度、與 Tj(max) 的裕度及最大功率記憶體頻寬計算器由傳輸速率與匯流排寬度計算 DDR、LPDDR、GDDR 與 HBM 的峰值頻寬及有效頻寬ADC SNR 與有效位元數(ENOB)由解析度、時脈抖動與過取樣計算 ADC 的 SNR 與有效位元數阿姆達爾定律與平行加速比依阿姆達爾定律與古斯塔夫森定律,由平行比例與處理器數計算加速比與平行效率CMOS 功耗(動態與靜態)由活動因子、電容、電壓、頻率與漏電流計算動態與靜態功耗,以及 DVFS 後的功耗PN 接面的內建電位與空乏層寬度由摻雜濃度與逆向偏壓計算 PN 接面的內建電位、空乏層寬度、峰值電場與接面電容熱氧化層厚度(Deal-Grove 模型)以 Deal-Grove 模型由溫度、時間、乾式或濕式氣氛與晶面方位計算矽氧化層厚度與矽消耗量