並行多核體系結構基礎——第五章的偽LRU(PLRU)算法簡要介紹


偽LRU英文全名為Pseudo-LRU (PLRU),本概念略難懂,單獨解決。

For CPU caches with large associativity (generally >4 ways), the implementation cost of LRU becomes prohibitive. In many CPU caches, a scheme that almost always discards one of the least recently used items is sufficient. So many CPU designers choose a PLRU algorithm which only needs one bit per cache item to work.
PLRU typically has a slightly worse miss ratio, has a slightly better latency, and uses slightly less power than LRU.

並行多核體系結構基礎一書給出的概念:

一種可能的近似LRU的方法是記錄最近最常訪問的一部分數據塊,當需要替換時, 那些未被記錄的數據塊通過隨機或者特定的算法被替換出高速緩存。這種方法的一個最簡單的例子就是記錄最近最常使用(Most Recently Used, MRU)的數據塊,當需要替換時,通過偽隨機算法選擇MRU的數據塊替換出高速緩存。

下圖中展示的基於樹的偽LRU替換策略:

image.png

筆者翻閱資料,找到一個非常nice的解釋文章,參考於:Cache replacement policies(緩存替換策略)

該算法的工作方式如下:考慮一個二叉搜索樹(BST)為所討論的項目。樹的每個節點具有一位標志,該標志指示“向左查找偽LRU元素”或“向右查找偽LRU元素”。要查找偽LRU元素,請根據標志的值遍歷樹。要使用對項N的訪問來更新樹,請遍歷樹以找到N,並在遍歷期間將節點標志設置為表示與所取方向相反的方向

image.png

訪問順序為ABCDE。如果只看箭頭,這里的原理很容易理解。當可以訪問值時,說A,我們無法在緩存中找到它,然后從內存中加載它,並將其放置在箭頭所指的塊上,從上到下,並在放置該塊時使箭頭指向遠離該塊的底部和頂部。在上面的示例中,我們看到如何放置A,然后放置BCD.然后,當緩存已滿時,E替換為A,因為那是箭頭所指的時間。下次訪問時,將替換保存B的塊。

該算法可能是次優的,因為它是近似值。例如,在上圖中具有ACBD緩存行的情況下,如果訪問模式為:CBDA則在逐出時我們選擇B而不是C。這是因為AC在同一部分,訪問A會將算法定向到不包含高速緩存行C的另一部分。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM