CPU尋找數據的“快捷方式”.簡單的說,緩存是數據由內存通往CPU的橋梁。它的速度比內存快得多,但是容量也比內存小的多。同時緩存依據讀取速 度和容量進一步分為一級和二級。在CPU需要數據的時候,遵循一級緩存→二級緩存→內存的順序,從而盡量提高讀取速度。這樣“緩存+內存”的系統就同時兼 具了速度和容量的優點。
我們可以打個比方,假設CPU是一名“老師”,她現在的任務就是要盡快在一幢“教學樓”(內存)中找到眾多“學生”(數據)中的一個。當她可能要找 的“學生”(數據)都提前被安排進一間“教室”(一級緩存)中的時候,CPU“老師”找起來自然就快多了。如果很不幸“教室”(一級緩存)中找不到那名 “學生”(數據),她會再去“小禮堂”(二級緩存)中找找看,都找不到的話,最後再去碩大的“教學樓”(內存)中慢慢搜索。
AMD和Intel:巨大差異皆因設計不同
提到二級緩存容量的差距,還得從兩大CPU巨頭對一級緩存的理解說起。對,沒看錯,就是平常曝光率遠遜於二級緩存的“一級緩存”!它才是造成上面提到巨大差異的“罪魁禍首”。
現今的CPU中,Intel對一級緩存的理解是“數據代碼指令追蹤緩存”,即是說一級緩存中存儲的其實只是二級緩存中數據和指令的地址,而不是這些 數據和指令的復制。我們還用上面的比喻形象說明一下,Intel老師在“教室”(一級緩存)中並不會看到任何一名學生,而只有一張寫著“學生名字”和“所 在座位號”的座次表(數據地址)。Intel老師會在拿了座次表之後,去那間“小禮堂”(二級緩存)中按照“座位號”尋找那名“學生”(數據)。在這樣的 架構下,Intel老師自然需要更大的“禮堂”來按順序坐下更多地學生。也就是說,二級緩存的容量相當程度上影響了Intel CPU的性能。
相比之下,AMD對一級緩存的定位是“實數據讀寫緩存”,即二級緩存中的一部分數據都要在一定的規則下搬到一級緩存中。對於前面的比方,AMD老師 在“教室”中總能看到剛剛從“禮堂”(二級緩存)那邊趕來的“學生”(數據)。這樣子的結構下,AMD老師也就不需要太大的“禮堂”來坐下更多地“學生” 了。二級緩存的容量自然對AMD CPU的整體性能影響小些。相對的,AMD則總是試圖把一級緩存這間“教室”擴建的更大些。
不僅在一級緩存的工作方式上有區別,而且AMD的CPU在一級緩存的大小上還占有優勢,以AMD Athlon64 X2 6000+ AM2(盒)為例,兩個內核各配備64KB數據高速緩存、64KB指令高速緩存。而價格稍高的Intel Core 2 Duo E6320 (三年盒),兩個內核各配備32KB數據高速緩存、32KB指令高速緩存。
當然,上面只是Intel的AMD的CPU二級緩存巨大差異的主要原因。事實上CPU對二級緩存容量的“敏感”與否還受到諸如內存控制器,流水線長 度、頻率、總線架構和指令集等等多方面的影響。在多核CPU中還關乎各個物理內核之間的數據交換問題(簡單的說就是兩位“老師”能不能查找同一間“禮 堂”)。
在多核心CPU中,對二級緩存的利用效率有高有低。簡單的說,Intel新一代Core架構二級緩存的利用最為優秀,AMD的Athlon X2系列次之,較老的Pentium D(Pentium EE)系列最差。
越大越好?夠用就好!
幾年時間裡,二級緩存從小小的64KB一舉增長到了8MB,整整128倍!越來越大的二級緩存是不是真的換來了CPU性能同樣“突飛猛進”發展?還是只不過是Intel和AMD聯手玩的數字游戲?
其實,二級緩存容量對性能的影響是漸漸減弱的,當二級緩存從沒有增長到128KB時,帶來的性能提升可能是直線上升的。但是當它從2MB增長到 4MB的時候,可能使用者甚至感覺不到性能的提升。這是因為在當前CPU所處理數據的過程中,幾乎無時不刻需要用到128KB以下的緩存,但是需要用到 1MB以上緩存的時候很少(2%左右)。因此雖然二級緩存越漲越大,實際上對CPU性能的影響卻是越來越小的。像文章開頭的兩款CPU,二級緩存巨大的差 異並不會最終表現在CPU速度上。因此,完全不必要盲目追求二級緩存的高容量,夠用就好。