# Multilevel Caches Multilevel Caches 系統常見於現代電腦架構中,其目的是彌合 CPU 與主記憶體之間的速度差異。以下是典型的 Multilevel Caches 配置: * 一級 Cache (L1 Cache ): * 這是最靠近 CPU 的 Cache ,通常直接整合在 CPU 晶片中。 * 它的尺寸很小,通常從幾 KB 到幾 MB 不等,但速度非常快。 * 它保存著頻繁訪問的指令和資料。 * 與 CPU 的接近確保了快速訪問,提供低延遲。 * 二級 Cache (L2 Cache ): * 這個 Cache 比一級 Cache 大,服務於一級 Cache 未命中的情況。 * 它位於 CPU 附近,通常與 CPU 晶片相同或非常接近。 * 儘管比 L1 Cache 大,但它仍比主記憶體小且速度更快。 * 它有助於通過保存額外的頻繁訪問的資料和指令來減少平均記憶體訪問時間。 * 它比 L1 Cache 慢,但仍比從主記憶體訪問資料快得多。 * 主記憶體: * 這是電腦系統中的主要存儲,用於存放資料和指令。 * 當 L1 和 L2 Cache 都無法檢索所需的資料時,系統必須訪問主記憶體。 * 主記憶體比 Cache 慢得多,但容量更大。 * 可選的三級 Cache (L3 Cache ): * 一些高端系統在 L2 Cache 和主記憶體之間添加了一級 Cache 。 * L3 Cache 比 L2 Cache 大,作為較小、更快的 Cache (L1 和 L2)與較大、更慢的主記憶體之間的中間層。 * 其存在有助於進一步減少平均記憶體訪問時間,提高整體系統性能,特別是在多核系統中,多個 CPU 核心可能同時訪問 Cache 的情況下。 總之, Multilevel Caches 系統利用 Cache 的層次結構來利用局部性原則,減少平均記憶體訪問時間,從而提高系統的整體性能。每個 Cache 層級都針對速度、大小和與 CPU 的接近程度之間的不同取捨進行了優化。 ## 使用提供的資料分析 Multilevel Caches 的情況: 給定: * CPU 基本 CPI = 1 * 時鐘速率 = 4 GHz(4 x 10^9 Hz) * 每指令失敗率 = 2% * 主記憶體存取時間 = 100 ns 讓我們計算僅使用一級 Cache 的有效 CPI: 失敗懲罰計算: 主記憶體存取時間 = 100 ns 時鐘週期時間 = 1 / 時鐘速率 = 1 / (4 x 10^9) 秒 = 0.25 ns/週期 每週期的失敗懲罰 = 主記憶體存取時間 / 時鐘週期時間 = 100 ns / 0.25 ns = 400 週期 有效 CPI: * 有效 CPI = 基本 CPI + (每指令失敗率 × 失敗懲罰) * 有效 CPI = 1 + (0.02 × 400) = 1 + 8 = 9 因此,僅使用一級 Cache 時,有效 CPI 為 9。 但是,由於問題提到了「 Multilevel Caches 」,我們需要考慮還有第二級 Cache (L2 Cache )的情況。 要計算具有 Multilevel Caches 系統的有效 CPI,還需要包括以下額外資訊: 第二級 Cache 的失敗率 第二級 Cache 的失敗懲罰 根據提供的新資訊來計算包含 L2 Cache 的情況: 給定: * L2 Cache 存取時間 = 5ns(到 M: 100ns) * 全局失敗率到主記憶體 = 0.5%(到 M: 2%) 在 L2 Cache 命中的情況下,一級 Cache 未命中: * 失敗懲罰 = 5ns / 0.25ns = 20 個週期 在 L2 Cache 未命中的情況下(0.5%): 額外懲罰 = 400 個週期 因此,有效 CPI 為: CPI = 1 + 0.02 × 20 + 0.005 × 400 = 3.4 性能比率為: 性能比率 = 9 / 3.4 = 2.6 因此,包含 L2 Cache 的系統,其有效 CPI 為 3.4,性能比率為 2.6。 Multilevel Caches 系統中有幾個重要考量: 一級 Cache : * 主要關注最小的命中時間。 * 一級 Cache 的主要目的是提供快速的存取時間,以減少對較慢的記憶體的需求。 二級 Cache : * 關注低失敗率,以避免訪問主記憶體。 * L2 Cache 的主要目的是減少一級 Cache 未命中時對主記憶體的訪問,因此對失敗率的控制至關重要。 * 命中時間相對於失敗率來說影響較小。 結果: * 一級 Cache 通常比單級 Cache 更小,因為它需要更快的存取時間。 * 一級 Cache 中的區塊大小通常比二級 Cache 中的區塊大小更小。這是因為一級 Cache 的目標是提供更快的存取時間,因此它需要更細粒度的區塊,以確保更多的指令和數據可以被快速地檢索和存取。 總的來說, Multilevel Caches 系統的設計需要在 Cache 大小、存取時間和失敗率之間找到一個平衡,以確保整體系統性能的最大化。 ## Interactions with Advanced CPUs 先進的 CPU 和 Multilevel Caches 之間存在著複雜的互動。下面是關於先進 CPU 與 Multilevel Caches 的互動的一些重要事項: 指令重排的 CPU: * 當發生 Cache 未命中時,指令重排的 CPU 可以繼續執行其他指令,而不必等待未命中的指令完成。 * 等待未命中指令完成的存儲器存取將保持在載入/存儲單元中。 * 依賴於未命中指令的指令將在保留站中等待。 * 獨立指令將繼續執行。 Cache 未命中的效果取決於程序數據流: * 在具有指令重排的 CPU 中, Cache 未命中的效果取決於程序的數據流,這使得分析變得更加困難。 * 因為在程序的執行過程中,相依的指令可能需要等待未命中的存儲器存取完成,這可能會導致性能下降。 * 需要使用系統模擬來更好地理解和評估 Cache 未命中對系統性能的影響。 總的來說,先進的 CPU 和 Multilevel Caches 之間的互動是一個複雜的問題,需要考慮多方面的因素,包括指令重排、程序數據流以及系統性能。因此,為了更好地理解這些互動,通常需要使用系統模擬來進行評估和分析。