# Multilevel Cache ###### tags: `IT鐵人` ## 兩層以上的城牆 上一次我們提到了Set Associate Cache,意思是在entry中加入多個Block,以避免常常存取的Block要求進入同一個entry導致miss rate居高不下。 所以我們可以在外面加上第二層Cache,不論是晶片內外都可以,實作的方式也很多,就不特別說明了。 因為多了第二層,hit time不可能比第一層高,所以第二層以後注重的是減少miss rate,降低hit time就留給第一層注重。 ## Total Miss Rate 在計算Miss Rate之前,需要先介紹兩個詞: * GMR(Global Miss Rate):對於所有access的miss rate。 * LMR(Local Miss Rate):只看自己經歷access的miss rate。 底下提供了一個例子,假設發生了1000次的access,其中L1發生了50次miss,而這50次又在L2發生了20次miss,後面又在L3發生了5次miss,所以總的來說,這樣子的三層Cache miss rate為0.5%。  ||CPU|L1 Cache|L2 Cache|L3 Cache| |-|-|-|-|-| ||1000 access|50 miss|20 miss|5 miss| | GMR || 50/1000 | 20/1000 | 5/1000| |LMR||50/1000|20/50|5/20| L1 GMR = L1 LMR L2 GMR = L1 LMR x L2 LMR L3 GMR = L1 LMR x L2 LMR x L3 LMR ## 計算Multilevel Cache效能 剛剛都是用miss rate說明,這次用實際一點的時間計算來示範: > 假設處理器CPI=1.0,clock rate=4GHz,Memory access time=100ns,並且保證所有access都能在Memory hit。第一層Cache miss rate=2%。 > 如果加上了第二層Cache,其access time=5ns,GMR=0.5%,那麼整個處理器速度會提昇多少? 在這類型的題目要把單位都換成一樣的,換成時間會是cycle數量,以下用cycle換算: clock rate:4GHz -> clock time:0.25ns Memory access time=400 cycles secondary cache access time=20 cycles 因為最快速的第一層access時間很短,可以直接省略。 未加上第二層時,Cycle數 = 1(CPI) + 2% x 400(Memory stall) = 9 加上第二層後,Cycle數 = 1(CPI) + (2%-0.5%) x 20(L2 Cache stall) + 0.5% x (20+400)(Memory stall) = 3.4 所以performance提昇 9/3.4 = 2.6左右 要特別注意的是L2miss後進入Memory,不能只有考慮Memory stall,還要考慮剛剛L2miss的時間,所以才有20+400的數字。 ## 小結 這三回講的是Cache System,分成了Direct Mapped, Set Associate還有Multilevel三種,下一回開始會講Virtual Memory,會比Cache System複雜一些些。 | 上一篇 | 下一篇 | |-|-| |[Set Associative Cache](https://hackmd.io/@dZfCcN4hT8aUuDPv3B8CWQ/ryJNh_igY)|[Miku Memory](https://hackmd.io/@dZfCcN4hT8aUuDPv3B8CWQ/r1ziQtgWF) 
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.