精華區beta hardware 關於我們 聯絡資訊
※ 引述《GreatShot (我要拿Ph.D.!!!)》之銘言: : ※ 引述《renic (林伯武長)》之銘言: : : 前文吃光光 : : 其實everest沒翻錯 : : 那個的確是追蹤快取Trace Cache而不是指令快取Instruction Cache : 也許真正搞錯的是我(汗顏) : 我記得某個版本的英文版寫的是Instruction Cache不是Trace Cache : 我對這部份的結構其實完全沒概念 : 只有印象是Trace Cache似乎是Instruction Cache的特化而來 : 跟降低Branch Prediction造成的Penalty有關係 Instruction Cache 的定址方式和 Data Cache 一樣,都是用 mapping 的。 把後段的位址取出來作 hash ,前段當作 tag 。 Trace Cache 是將一段時間之內執行過的程式碼整份存起來, 包括有重覆執行的 loop 或 branch 也會存好幾份起來。 前者主要是靠著一次帶進一個 block 的 instructions , 來減少存取其它 instruction 時的 miss (讀前一個,後一個也一起讀進來)。 因此遇到 branch 時破壞 spatial locality 會導致 hit rate 下降。 後者則是可以適應程式本身的行為,只要同一段程式的 control path 改變不大, Trace cache 的 hit rate 會非常高,通常會把一段常執行的程式整個存進去。 減少 penalty 的部份是因為,就算 prediction taken ,拿不到下一個 instruction , 也是白搭。因為沒有 locality 因此 instruction 可能不在 I-cache 裡, 因此 trace cache 可以有效處理這樣的問題。 : 所以我直覺就是翻譯者搞混了 : so....也許搞混的是我也說不定(^^;) : 不過現在用E6600加上新版的CPU-Z and Everest : 都寫Code Cache了 : 不知是否是因為Instruction Cache and Trace Cache這種技術又被改進 : 還請熟悉的人介紹一下 現在的 processor 的 cache 架構都非常複雜,因為 miss penality 太高, 一般而言會有 L1 I/D-cache, L2 U-cache, Trace cache, Victim Cache, Write buffer 反正只要能提高 hit rate 的手段幾乎都會用上去。 不過我也不知道 code cache 是什麼。 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.31.132
GreatShot:所以說CPU會先去TraceCache找後才去Inst. Cache找囉? 04/30 17:31
GreatShot:還是說他們作用的地方不同呢? 04/30 17:33
GreatShot:感謝解釋~~ 04/30 17:33
leav:TraceCache是預測branch用的,跟InstructionCache用途不同 04/30 23:51
dolphinus:"執行過的程式碼整份存起來"... 我的天啊... 05/01 00:59
dolphinus:沒看過有人這樣解釋 trace cache 的... 05/01 01:00