您當前的位置:首頁 > 詩詞

為什麼從Intel Core i系列開始加入L3快取,而不是使用更大的L2快取?

作者:由 Excelle Su 發表于 詩詞時間:2016-11-24

為什麼從Intel Core i系列開始加入L3快取,而不是使用更大的L2快取?幾十萬只熊貓2016-11-27 19:39:32

這個主要還是多核的使用,不管事CMT還是SMT。32K L1 + 256K L2,可以達到L1命中80%,L2命中80%。不命中的資料基本很少了,L3的意義太小了對於單核。但是注意這只是針對單核,現在的處理器核越來越多,這下意義就大了,現在Intel處理器L3都是all cores的,就算一個核還有5%的資料L1,L2未中,4核8執行緒或者8核16執行緒也不少了。所以現在的L3越來越大了,而且sandybridge以後的處理器GPU也會使用L3 cache。現在Intel的處理器L3 cache已經不是傳統意義上的了,是一個LLC Ring。

上面提到cache的速度和成本,可以看下這個連結一目瞭然

Intel Skylake

。其實就算不考慮這些,狂堆L2的效果並不好。記得量化裡面有講,出來打工太久了,東西都還給老師了,記得不是很清楚了。

為什麼從Intel Core i系列開始加入L3快取,而不是使用更大的L2快取?尹若文2016-11-27 21:33:49

核心之間的通訊需要,早期的p4,核心間通訊繞fsb執行。現在只需要L3存一份資料即可核心共享該資料。

為什麼從Intel Core i系列開始加入L3快取,而不是使用更大的L2快取?李晨曦2016-11-27 22:14:09

L2 Cache可以看做是更大但是慢一些的L1 Cache,但是L3 Cache和L1,L2 Cache有著本質的區別。如圖所示(有些資料參考了

@panda gaint

給的連結),L1和L2 Cache都是每個CPU core獨立擁有一個,而L3 Cache是幾個Cores共享的,可以認為是一個更小但是更快的記憶體。這樣的話,如果幾個Cores頻繁的寫同一個cache line(

CPU cache - Wikipedia

)裡的資料,有L3 Cache之後,資料就不用每次回到記憶體了,每次寫就節省了57ns,讀的時候又節省了57ns。當然,並行程式設計的時候要儘量避免出現這種情況,不讓多個Cores寫同一個cache line。

為什麼從Intel Core i系列開始加入L3快取,而不是使用更大的L2快取?

為什麼從Intel Core i系列開始加入L3快取,而不是使用更大的L2快取?

為什麼從Intel Core i系列開始加入L3快取,而不是使用更大的L2快取?kknd13942016-11-28 19:01:15

很大原因是頻率/時序~面積

core2那種L2很難往更大容量擴充套件,這個是集中式L2固有問題:每個核到L2都是對稱的,要做就要做到一樣的訪問路徑,對面積和時序都不友好,做個4核還湊合,做個8核要死人。

從nehalem開始,LLC是分塊的,每個核對每塊LLC並不是同樣的訪問路徑了,所以每塊LLC的訪問時序變好了,也可以做一些更高密度的LLC,容量變大也變成了區域性容量變大,更容易擴充套件。但是總體訪問變慢了。

為了補償一下L3變長,加入L2,要不那些片上幾十M LLC訪問起來對效能的損失略大。

順便一說,2核的話其實沒必要分塊。

為什麼從Intel Core i系列開始加入L3快取,而不是使用更大的L2快取?半夜數綿羊2021-11-08 21:51:00

標簽: L2  L3  cache  L1