邪門豬窩
我們的話題是從下面四款CPU的信息對比開始的:
很顯然,Intel Core 2 Duo E6320與AMD Athlon64 x2 6000+的價格是差不多的,Intel Core 2 Quad Q6600與AMDphemom×49750的價格差也很小,但是為什么Intel CPU的二級緩存總是比AMD的大上不少呢?
有意思的是,雙核的時候,兩種品牌的二級緩存的容量相差是1倍,而到了四核,兩品牌的二級緩存的容量差距就增大到2倍!難道真的是Intel比AMD“更厚道”?下面就讓我們引出今天的主角:CPU的二級緩存。
什么是緩存
緩存CPU尋找存儲在內存中的數據的“快捷方式”。簡單的說,緩存是數據由內存通往CPU的橋梁。它的速度比內存快得多,但是容量比內存小得多。同時,緩存根據讀取速度和容量進步分為一級緩存和二級緩存。在cPu需要數據的時候,遵循“一級緩存一二級緩存一內存”的順序,從而盡量提高讀取速度。這樣“緩存+內存”的系統就同時兼具了速度和容量的優點。
我們可以打個比方,假設CPU是一名老師,她現在的任務就是要盡快在一幢教學樓(內存)中找到眾多學生(數據)中的一個。當她可能要找的學生(數據)都提前被安排進間教室(一級緩存)中的時候,老師(CPU找起來自然就快多了。如果很不幸教室(級緩存)中找不到那名學生數據),她會再去禮堂(二級緩存)中找找看,都找不到的話,最后老師(CPU)只能將搜索范圍擴大到整個教學樓(內存)了。
二級緩存容量差異的“罪魁禍首”
提到二級緩存容量的差距,還得從兩大CPU巨頭對一級緩存的理解說起。現今的CPU中,Intel對一級緩存的理解是“數據代碼指令追蹤緩存”即是說一級緩存中存儲的其實只是二級緩存中數據和指令的地址而不是這些數據和指令的復制。

我們還用上面的比喻形象說明一下,Intel老師在教室(一級緩存)中并不會看到任何一名學生,而只有一張寫著學生座次表(數據地址)。Intel老師拿了座次表之后去禮堂(二級緩存)中按照座位號尋找那名學生(數據)。在這樣的架構下,Intel老師自然需要更大的禮堂才能按順序坐下更多的學生。也就是說,二級緩存容量相當程度上影響
相比之下,AMD對級緩存的定位是“實數據讀寫緩存”,即二級緩存中的部分數據都要在一定的規則下搬到一級緩存中。對于前面的比方,AMD老師在教室中總能看到剛剛從禮堂(二級緩存)那邊趕來的學生(數據)。這樣子的結構下,AMD老師也就不需要太大的禮堂來坐下更多的學生了。二級緩存的容量自然對AMD CPU的整體性能影響小些。
正是由于一級緩存的工作方式上有區別,AMD總是試圖把一級緩存這間“教室”擴建得更大些。以AMDAthlon64 X2 6000+為例,兩個內核各配備64KB數據高速緩存和64KB指令高速緩存,而價格稍高的Intel Core 2 DuoE6320兩個內核只配備了32KB數據高速緩存和32KB指令高速緩存。
當然,上面只是Intel與AMD的CPU二級緩存巨大差異的主要原因。事實上CPU對二級緩存容量的“敏感”程度與否還受到諸如內存控制器流水線長度頻率,總線架構和指令集等多方面的影響,而在多核CPU中還關乎各個物理內核之間的數據交換問題(簡單地說就是多位“老師”能不能查找同一間“禮堂”)。
小提示:在多核心CPU中,對二級緩存的利用效率是有有高低之分的。簡單地說,Ietel新一代Core架構對二級緩存的利用最為優秀,AMD的Athton X2系列次之,較老的PentiumD(Pentium EE)系列則相對較差。

越大越好?夠用就好!
幾年時間里,二級緩存從小小的64KB一舉增大到8MB,整整128倍!越來越大的二級緩存是不是真的換來了CPU性能同樣“突飛猛進”的發展?還是只不過是Intel和AMD聯手玩的數字游戲?
其實,二級緩存容量對性能的影響是漸漸減弱的,當二級緩存從0增加到128KB時,帶來的性能提升可能是直線上升的。但是當它從2MB增大到4MB的時候,使用者甚至感覺不到性能的提升。這是因為在當前CPU處理數據的過程中,幾乎無時不刻需要用到128KB以下的緩存,但是需要用到1MB以上緩存的時候很少(可能有2%左右機會用到)。因此,雖然二級緩存越來越大,但實際上對CPU性能的影響卻是越來越小的。就像文章開頭的四款CPU,二級緩存巨大的差異并不會等比例地表現在CPU速度上,消費者完全不必要盲目地追求二級緩存的高容量,夠用就好。
寫在最后
看到這里,大家應該明白AMD和Intel兩種CPU二級緩存方面巨大差異的原因了吧?對于不同架構的CPU,二級緩存的容量大小絕對不是判斷優劣的標準!如果下次再有JS想用二級緩存的大小忽悠你,你就理直氣壯地告訴他真相吧!