L1、L2、L3 快取的差異:容量、延遲、共用範圍、包含關係比較
L1、L2、L3 快取是依距離 CPU 核心由近到遠排列的多層快取,越近越小越快,越遠越大越慢。在一般 PC 與伺服器的 CPU 中,代表性的範圍是 L1 為數十 KB、數個週期,L2 為數百 KB 至數 MB、十幾個週期,L3 為數 MB 至數十 MB、數十個週期。L1 與 L2 多半由每個核心各自擁有,L3 則由多個核心共用。存取主記憶體 DRAM 需要數百個週期,因此要以此階層盡可能承接大部分的存取。
| 項目 | L1 快取 | L2 快取 | L3 快取 |
|---|---|---|---|
| 與核心的關係 | 各核心專用 | 多半為各核心專用。也有由數個核心共用的設計 | 由多個核心(整顆晶片或一群核心)共用 |
| 容量(PC、伺服器用 CPU 的代表性範圍) | 指令用、資料用各約 32 至 64 KB | 每個核心約 256 KB 至數 MB | 整顆晶片數 MB 至數十 MB |
| 延遲(代表性範圍) | 約 3 至 5 個週期 | 約 10 至 20 個週期 | 約 30 至 70 個週期。離核心越遠的部分越長 |
| 指令與資料 | 分開(I 快取與 D 快取) | 共用(統一快取) | 共用(統一快取) |
| 設計重點 | 命中時間短。在管線中每個週期都會使用 | 承接 L1 的未命中,降低未命中懲罰 | 減少對主記憶體的存取,並在核心之間共用資料 |
| 未命中時的去處 | L2 | L3 | 主記憶體(DRAM) |
| 位址的處理 | 多為虛擬索引、實體標籤(VIPT) | 實體位址 | 實體位址 |
| 包含關係 | 最上層。是否包含於下層由下層的方式決定 | 依設計而定,例如包含式、非包含式 | 採包含式較容易縮小一致性檢查的範圍。也有消除重複的互斥式或非包含式設計 |
| 實體配置 | 在核心內,緊鄰執行單元 | 在核心外側附近,作為核心的一部分配置 | 多半分割為每個核心的切片,以環狀或網狀網路連接 |
| 快取行大小 | 一般為 64 位元組 | 一般為 64 位元組 | 一般為 64 位元組 |
數值為具代表性的大致參考值,會因世代或產品而異。