邪門(mén)豬窩
我們的話題是從下面四款CPU的信息對(duì)比開(kāi)始的:
很顯然,Intel Core 2 Duo E6320與AMD Athlon64 x2 6000+的價(jià)格是差不多的,Intel Core 2 Quad Q6600與AMDphemom×49750的價(jià)格差也很小,但是為什么Intel CPU的二級(jí)緩存總是比AMD的大上不少呢?
有意思的是,雙核的時(shí)候,兩種品牌的二級(jí)緩存的容量相差是1倍,而到了四核,兩品牌的二級(jí)緩存的容量差距就增大到2倍!難道真的是Intel比AMD“更厚道”?下面就讓我們引出今天的主角:CPU的二級(jí)緩存。
什么是緩存
緩存CPU尋找存儲(chǔ)在內(nèi)存中的數(shù)據(jù)的“快捷方式”。簡(jiǎn)單的說(shuō),緩存是數(shù)據(jù)由內(nèi)存通往CPU的橋梁。它的速度比內(nèi)存快得多,但是容量比內(nèi)存小得多。同時(shí),緩存根據(jù)讀取速度和容量進(jìn)步分為一級(jí)緩存和二級(jí)緩存。在cPu需要數(shù)據(jù)的時(shí)候,遵循“一級(jí)緩存一二級(jí)緩存一內(nèi)存”的順序,從而盡量提高讀取速度。這樣“緩存+內(nèi)存”的系統(tǒng)就同時(shí)兼具了速度和容量的優(yōu)點(diǎn)。
我們可以打個(gè)比方,假設(shè)CPU是一名老師,她現(xiàn)在的任務(wù)就是要盡快在一幢教學(xué)樓(內(nèi)存)中找到眾多學(xué)生(數(shù)據(jù))中的一個(gè)。當(dāng)她可能要找的學(xué)生(數(shù)據(jù))都提前被安排進(jìn)間教室(一級(jí)緩存)中的時(shí)候,老師(CPU找起來(lái)自然就快多了。如果很不幸教室(級(jí)緩存)中找不到那名學(xué)生數(shù)據(jù)),她會(huì)再去禮堂(二級(jí)緩存)中找找看,都找不到的話,最后老師(CPU)只能將搜索范圍擴(kuò)大到整個(gè)教學(xué)樓(內(nèi)存)了。
二級(jí)緩存容量差異的“罪魁禍?zhǔn)住?/p>
提到二級(jí)緩存容量的差距,還得從兩大CPU巨頭對(duì)一級(jí)緩存的理解說(shuō)起?,F(xiàn)今的CPU中,Intel對(duì)一級(jí)緩存的理解是“數(shù)據(jù)代碼指令追蹤緩存”即是說(shuō)一級(jí)緩存中存儲(chǔ)的其實(shí)只是二級(jí)緩存中數(shù)據(jù)和指令的地址而不是這些數(shù)據(jù)和指令的復(fù)制。
我們還用上面的比喻形象說(shuō)明一下,Intel老師在教室(一級(jí)緩存)中并不會(huì)看到任何一名學(xué)生,而只有一張寫(xiě)著學(xué)生座次表(數(shù)據(jù)地址)。Intel老師拿了座次表之后去禮堂(二級(jí)緩存)中按照座位號(hào)尋找那名學(xué)生(數(shù)據(jù))。在這樣的架構(gòu)下,Intel老師自然需要更大的禮堂才能按順序坐下更多的學(xué)生。也就是說(shuō),二級(jí)緩存容量相當(dāng)程度上影響
相比之下,AMD對(duì)級(jí)緩存的定位是“實(shí)數(shù)據(jù)讀寫(xiě)緩存”,即二級(jí)緩存中的部分?jǐn)?shù)據(jù)都要在一定的規(guī)則下搬到一級(jí)緩存中。對(duì)于前面的比方,AMD老師在教室中總能看到剛剛從禮堂(二級(jí)緩存)那邊趕來(lái)的學(xué)生(數(shù)據(jù))。這樣子的結(jié)構(gòu)下,AMD老師也就不需要太大的禮堂來(lái)坐下更多的學(xué)生了。二級(jí)緩存的容量自然對(duì)AMD CPU的整體性能影響小些。
正是由于一級(jí)緩存的工作方式上有區(qū)別,AMD總是試圖把一級(jí)緩存這間“教室”擴(kuò)建得更大些。以AMDAthlon64 X2 6000+為例,兩個(gè)內(nèi)核各配備64KB數(shù)據(jù)高速緩存和64KB指令高速緩存,而價(jià)格稍高的Intel Core 2 DuoE6320兩個(gè)內(nèi)核只配備了32KB數(shù)據(jù)高速緩存和32KB指令高速緩存。
當(dāng)然,上面只是Intel與AMD的CPU二級(jí)緩存巨大差異的主要原因。事實(shí)上CPU對(duì)二級(jí)緩存容量的“敏感”程度與否還受到諸如內(nèi)存控制器流水線長(zhǎng)度頻率,總線架構(gòu)和指令集等多方面的影響,而在多核CPU中還關(guān)乎各個(gè)物理內(nèi)核之間的數(shù)據(jù)交換問(wèn)題(簡(jiǎn)單地說(shuō)就是多位“老師”能不能查找同一間“禮堂”)。
小提示:在多核心CPU中,對(duì)二級(jí)緩存的利用效率是有有高低之分的。簡(jiǎn)單地說(shuō),Ietel新一代Core架構(gòu)對(duì)二級(jí)緩存的利用最為優(yōu)秀,AMD的Athton X2系列次之,較老的PentiumD(Pentium EE)系列則相對(duì)較差。
越大越好?夠用就好!
幾年時(shí)間里,二級(jí)緩存從小小的64KB一舉增大到8MB,整整128倍!越來(lái)越大的二級(jí)緩存是不是真的換來(lái)了CPU性能同樣“突飛猛進(jìn)”的發(fā)展?還是只不過(guò)是Intel和AMD聯(lián)手玩的數(shù)字游戲?
其實(shí),二級(jí)緩存容量對(duì)性能的影響是漸漸減弱的,當(dāng)二級(jí)緩存從0增加到128KB時(shí),帶來(lái)的性能提升可能是直線上升的。但是當(dāng)它從2MB增大到4MB的時(shí)候,使用者甚至感覺(jué)不到性能的提升。這是因?yàn)樵诋?dāng)前CPU處理數(shù)據(jù)的過(guò)程中,幾乎無(wú)時(shí)不刻需要用到128KB以下的緩存,但是需要用到1MB以上緩存的時(shí)候很少(可能有2%左右機(jī)會(huì)用到)。因此,雖然二級(jí)緩存越來(lái)越大,但實(shí)際上對(duì)CPU性能的影響卻是越來(lái)越小的。就像文章開(kāi)頭的四款CPU,二級(jí)緩存巨大的差異并不會(huì)等比例地表現(xiàn)在CPU速度上,消費(fèi)者完全不必要盲目地追求二級(jí)緩存的高容量,夠用就好。
寫(xiě)在最后
看到這里,大家應(yīng)該明白AMD和Intel兩種CPU二級(jí)緩存方面巨大差異的原因了吧?對(duì)于不同架構(gòu)的CPU,二級(jí)緩存的容量大小絕對(duì)不是判斷優(yōu)劣的標(biāo)準(zhǔn)!如果下次再有JS想用二級(jí)緩存的大小忽悠你,你就理直氣壯地告訴他真相吧!