Simplified 2Q
Simplified 2Q
如果訪問的數(shù)據(jù)P在Am中命中掩缓,將他放回到Am的Rear中料仗,如果在A1命中,則將其從A1中移除,放入到Am中馅巷。
如果在A1和Am中都沒有命中膛虫,則優(yōu)先使用兩個隊列的空閑空間,將其放入A1的Rear端钓猬;如果沒有剩余空間稍刀,則檢查A1的Threshold,超過的話從A1的Front移除就數(shù)據(jù)敞曹,若沒有超過账月,則從Am的Front端移除數(shù)據(jù),新數(shù)據(jù)放入A1的Rear
Full Version2Q
2Q
Simplified 2Q的Threshold參數(shù)至關(guān)重要澳迫,這個參數(shù)過大或過小都無法合理平衡A1和Am的負(fù)載捶障,尤其是當(dāng)程序的數(shù)據(jù)模型變化時,這個值需要隨著變化纲刀,這使得Cache的空間很難被合理使用项炼,因此有了Full version 2Q來解決這個問題。
Full vision 2Q將A1分解成A1-in和A1-out兩個隊列示绊,其中Kin為A1-in的閾值锭部,Kout為A1-out的閾值。在A1-in和A1-out中不再保存數(shù)據(jù)面褐,而是存放數(shù)據(jù)指針拌禾,這樣Am可以使用所有的Slot,在一定程度上解決了適配性的問題
LRU算法都是居于Link list來實現(xiàn)的展哭,數(shù)據(jù)從Front取出放回到Rear的過程是一個鏈表的替換過程湃窍,操作不算復(fù)雜,但是替換過程伴隨著多處鏈表遍歷匪傍,這個時間是不可忽略的您市。