
我最近閱讀了有關處理器(主要是多處理器)的文章,並且遇到了多層快取的概念。在這種情況下,這些設計具有多層快取以提高效能。
但是,我無法弄清楚額外的快取如何提高處理器的效能?為什麼不直接增加現有快取的大小呢?
答案1
使用多個快取等級部分是一種協調多核心處理器的機制,部分是價格和效能之間的折衷。
在多核心處理器中,每個核心都有自己的 L1 快取。這允許核心從快取中讀取和寫入,而不必擔心幹擾其他核心。不過,核心需要共享存儲,以便它們可以輕鬆交換某些資訊。 L2 快取由所有核心共享,因此它被用作一種公共儲存空間,其中的資訊可供所有執行緒使用。
L2和L3快取之間的差異是折衷部分。高速緩存由靜態 RAM 或 SRAM 組成。這與構成主記憶體的動態 RAM (DRAM) 不同。動態RAM需要定期“刷新”,也就是說,隨著時間的推移,DRAM單元會失去它們的價值,除非它們被讀取然後重新寫入。您的記憶體控制器會自動執行此操作,但每次記憶體控制器必須執行此操作(每秒數千次)時,它都無法讀取/寫入處理器的值,直到完成為止。這會減慢 DRAM 的速度。 SRAM則沒有這個限制,只要有運作能力,SRAM就會無限期地保留其價值,使其速度更快。因此,您的快取(L2 和 L3)由 SRAM 組成。問題是 SRAM 是非常昂貴的;雖然 4GB 高速 DRAM 有點貴但價格實惠,但 4GB SRAM 遠遠超出了您的價格範圍。
因此,每當處理器製造商決定在設計中添加更多 SRAM 時,其成本就會顯著增加。 SRAM 有多種速度,正如您所料,更快的 SRAM 比較慢的 SRAM 更昂貴。因此,您的處理器製造商已嘗試針對這兩個方面進行最佳化速度和成本透過使用高速 SRAM 和低速 SRAM。然後,處理器被設計為將最需要的值放入較快的快取(L2)中,將需要較少的資訊放入較慢的快取(L3)中。透過在處理器的微代碼中仔細管理該內存,這會產生一個均勻的妥協:有更多的緩存,並且一些緩存(希望是處理器最需要的緩存)非常快。
所以,綜上所述,處理器具有多層緩存,是為了增加處理器快取的容量,同時又不會大幅增加處理器的價格。這種精心的混合可以讓處理器變得更快、更便宜。
答案2
多層快取主要是容量和存取成本(延遲/時間和能量)之間的折衷。
將其與購買工具進行比較可能會有所幫助。存取本地硬體儲存(與一級快取相比)會更快並且消耗更少的能量,但是本地硬體儲存很小並且很可能沒有人們想要的特定工具。去大型五金店(與二級緩存相比)會花費更多的時間和精力(距離較遠,尋找工具會花費更長的時間),但工具更有可能有庫存。如果連大型五金店都沒有該工具,人們可能會去製造商的倉庫(相當於主記憶體),那裡幾乎肯定有該工具。如果連倉庫都沒有該工具,那麼預計製造商的工廠(與磁碟相比)生產更多工具之前需要等待更長的時間。
如果所尋求的硬體供應的多樣性通常很大(一些針對商業工作負載的PA-RISC 處理器做到了這一點),那麼住在大型硬體商店(具有非常大的L1 快取)旁邊會節省時間,但通常供應的多樣性較小因此,小型本地商店很可能有庫存商品(緩存命中的可能性很高),並且在較小的商店中查找常用商品的速度更快。
正如jcrawfordor所提到的,在多個核心之間共享一級快取有一些優點,因為它可以:避免重複儲存相同的記憶體內容,允許儲存容量的不平衡使用(例如,一個核心可以使用共享L2的所有L2儲存)而對於每核心L2 緩存,核心將僅限於其自己的L2 快取),並簡化和加速核心之間的通訊(在L1 未命中時無論如何都會存取相同的L2,並且無需檢查其他L2 緩存是否存在)有數據)。
(類似的共享優勢可以適用於 L2 和單獨的 L1 指令和資料緩存,但通常會避免這種內容共享(即,緩存行通常只有程式碼或資料),並且排除不太常見的操作,例如自修改程式碼和JIT 編譯,指令快取和資料快取之間很少有通訊。
然而,共享確實有開銷。人們可以將其比作在百貨公司購物。使用商店的購物者越多,任何給定結帳站排隊的可能性就越大(與二級快取中的銀行相比)。此外,共用入口/出口會引入延遲(與快取存取的仲裁延遲相比),提供多個閘門可以支援更高的吞吐量,但會增加選擇閘所需的時間-選擇開銷可能極小(但並非非如此)。如果假設商店會很忙,則可以避免一些決策延遲;但如果存儲不忙,則僅使用最方便的門會更快(類似地,高速緩存可能會花費額外的時間來分配緩衝區來保存內存請求信息,即使這樣的緩衝區在高速緩存的情況下是不必要的)不忙——如果沒有這樣的優化,如果快取繁忙,那麼確定快取是否繁忙和分配緩衝區條目這兩個步驟將依次發生,因此總時間將是兩者的總和,但是如果快取不忙,避免了緩衝區分配步驟)。
考慮到高速緩存的關聯性有限,共享還會增加衝突未命中的頻率,並可能導致不良的高速緩存替換選擇(例如,使用很少重用資料的串流存取模式的一個核心往往會使用另一個頻繁重複使用資料的核心的容量)資料使用起來會有更大的好處)。有一些技術可以減少這些缺點,但它們會增加複雜性並產生其他成本。
答案3
越近的快取大小越小。這裡有一些關於它的內容,我找不到任何有關速度的信息,但它可能受到處理器或主機板速度的限制(這是毫無意義且成本高昂的)。
CPU 快取分為三級(單核心有兩級)、RAM(二級)和硬碟(三級)。
答案4
處理器具有多層緩存,如 l1、l2 和 l3。
L1 是最快的緩存,但也是最昂貴的。 L2 排在第二位,也是討論最多的。 L2 之後是 L3。
快取越快,處理器讀取和寫入資料的速度就越快。
但公司必須在每個處理器的效能和費用之間做出選擇,因此他們根據價格在處理器中引入多層快取。