天天看點

《現代體系結構上的UNIX系統:核心程式員的對稱多處理和緩存技術(修訂版)》——2.7 n路組相聯高速緩存的總結

本節書摘來自異步社群《現代體系結構上的unix系統:核心程式員的對稱多處理和緩存技術(修訂版)》一書中的第2章,第2.7節,作者:【美】curt schimmel著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

正如現在所看到的那樣,從直接映射到全相聯的所有高速緩存組織結構都遵循着相同的組成原則:每一種組織結構都有一種用于選擇搜尋行的算法,每一種組織結構都有一種替換算法,每一種組織結構都可以使用寫直通或者寫回政策,而主要的差別則在于每一組内行數的不同。在各種組成結構的一端是直接映射高速緩存,它每組隻有一行。對于這種類型的高速緩存來說,以雜湊演算法得到相同索引的所有位址必須在高速緩存中競争一個可以儲存它們的位置。直接映射高速緩存的替換政策相當簡單,因為唯一的候選替換行就是雜湊演算法索引的那一行。在各種組成結構的另一端是全相聯高速緩存,它隻有包括高速緩存内所有行的一個組。這種類型的高速緩存不需要散列計算,因為在每次查找操作期間都必須檢查所有的行。在組比較大的高速緩存中使用lru替換并不實用,這讓随機替換成為常見的方法。

随着組的大小從單路組相聯或直接映射高速緩存到全相聯高速緩存逐漸增大,目标是減少多個位址散列到相同組時出現的高速緩存颠簸現象。增加組的大小可以使那些其位址産生相同索引的更多資料同時儲存到高速緩存中。于是,增加組的大小有可能提高命中率和系統性能。組變大的缺點是增加了硬體成本和複雜性,因為必須并行比較被索引組内所有行的标記。實際情況是,除了最小的高速緩存之外,對所有的高速緩存來說,都要避免使用組太大的高速緩存。

繼續閱讀