其中,T 為解決某計(jì)算問題所需的總時(shí)間,Ts 是完成串行(非重疊性,non-overlapped)工作所需的時(shí)間,Tp 是完成所有并行工作所需的時(shí)間,N 是并行工作中所使用的處理器數(shù)量,To 是每顆處理器的通信與同步開銷。To正是傳統(tǒng) Amdahl 定律公式中所沒有的??隨著處理器的增多,總開銷也會(huì)增加。
在沒有引入通信/同步開銷的傳統(tǒng)標(biāo)準(zhǔn)模型中,總時(shí)間T就是處理器數(shù)N的一個(gè)單調(diào)遞減函數(shù)(monotonically decreasing function),會(huì)逐漸接近于Ts。而在修改后的公式中,我們很清楚地看到,由于存在通信開銷,隨著處理器數(shù)N 的增加,在達(dá)到某一臨界點(diǎn)后,總時(shí)間T就會(huì)開始增加。因此,對(duì)于一個(gè)完全并行的應(yīng)用 (即Ts=0) 來說,其所需處理器的最優(yōu)數(shù)量是:
比如,假設(shè)通信同步開銷 To 是并行化時(shí)間 Tp 的 1%,那么,我們可以算出:使用 10 個(gè)處理器就能獲得最大的性能表現(xiàn)。當(dāng)然,在實(shí)際系統(tǒng)設(shè)計(jì)時(shí),我們還需要權(quán)衡其他一些影響性能和性價(jià)比的因素。
3)多核芯片與RISC SMP的相似性
我們注意到,在多核芯片與上世紀(jì)90年代中繁榮了RISC服務(wù)器市場的RISC SMP系統(tǒng)之間,存在著非常有趣的相似現(xiàn)象。在過去的10年中,RISC服務(wù)器市場的硬件收入可是達(dá)到了2400億美元。
首先,傳統(tǒng)的RISC SMP提供了易于使用、緩存一致(cache-coherent)、共享內(nèi)存(shared-memory)的應(yīng)用特性,未來的多核處理器也同樣會(huì)提供這些價(jià)值,不同的是,SMP是在一個(gè)單一的芯片上來實(shí)現(xiàn)。
其次,二者擁有相似的主內(nèi)存延遲比率。1995年,SGI POWER Challenge是當(dāng)時(shí)中端市場上最暢銷的HPC服務(wù)器??筆者之一(McCalpin)就曾買過一臺(tái)8 CPU的系統(tǒng),花了40萬美元。在1996-1997年間,其CPU主頻是90 MHz (11 ns),主內(nèi)存延遲接近 1000 ns(即90 個(gè)時(shí)鐘周期)。而到了2007年,一顆AMD四核處理器的主頻將超過 2 GHz (0.5 ns),主內(nèi)存延遲約為 55 ns(即110 個(gè)時(shí)鐘周期)。比較一下,我們不難發(fā)現(xiàn),主內(nèi)存延遲的比率是多么驚人的相似,均在100個(gè)時(shí)鐘周期左右。
再次,二者在字節(jié)/FLOP上也相似。對(duì)于RISC SMP系統(tǒng)來說,能否提供足夠的內(nèi)存帶寬是一大挑戰(zhàn)。一套配備8顆CPU的SGI POWER Challenge的峰值浮點(diǎn)運(yùn)算性能是2.88 GFLOPS,最高內(nèi)存帶寬為1.2 GB/s,即平均每FLOP約 0.42 字節(jié)。而一顆AMD四核處理器的峰值浮點(diǎn)性能將達(dá)到32 GFLOPS,最高內(nèi)存帶寬約12.8 GB/s,平均每FLOP也大約是0.4 字節(jié)。
4)X86多核處理器對(duì)RISC的沖擊
1996年,UNIX 服務(wù)器市場的硬件收入超過 220 億美元,到 2000 年,增加到了近330 億美元。之后,這塊市場一直在下滑,到2006 年,已下滑到了180 億美元左右。我們認(rèn)為,主要有以下三大因素導(dǎo)致了UNIX市場的萎縮:
越來越難以維持最初使UNIX服務(wù)器獲得成功的系統(tǒng)平衡;
跟中低端的小型RISC SMP不同,大型多路RISC SMP無法降低每處理器的系統(tǒng)價(jià)格;
更低廉的IA32架構(gòu)服務(wù)器的普及,以及2003年AMD 64架構(gòu)產(chǎn)品的出現(xiàn),大大沖擊了RISC市場。
那么,具體來說,這三大因素是如何發(fā)生作用的呢?
①系統(tǒng)平衡被打破
如前文所述,起初,RISC SMP的主內(nèi)存延遲大約在100個(gè)時(shí)鐘周期,內(nèi)存帶寬為0.4字節(jié)/FLOP。內(nèi)存延遲在很大程度上跟CPU數(shù)量是不相關(guān)的,但每顆處理器的帶寬會(huì)因?yàn)榕渲貌煌瑪?shù)目的處理器而有所變化。
另外,在應(yīng)用領(lǐng)域和處理器帶寬之間也存在明顯的系統(tǒng)相關(guān)性:緩存友好型的應(yīng)用大多采用滿配的SMP系統(tǒng),而高帶寬型的應(yīng)用則配置較少的處理器,甚至是運(yùn)行在單路系統(tǒng)上。
到了2000年,RISC SMP的主內(nèi)存延遲大約減少了3倍,而CPU主頻卻增加了3-6倍。同樣,隨著系統(tǒng)總線轉(zhuǎn)向多種多樣的NUMA架構(gòu),每處理器帶寬的變化也難以保持一致,情況變得更加復(fù)雜。這樣一來,過去的系統(tǒng)平衡就逐漸被打破了。
②小型SMP和大型SMP的性價(jià)比差距越來越大
為了維持合理的系統(tǒng)平衡,服務(wù)器廠商在上世紀(jì)90年代中后期,也進(jìn)行了大量的努力。雖然取得了不錯(cuò)的效果,但代價(jià)卻是提高了系統(tǒng)的成本。導(dǎo)致成本增加的兩大主要因素是為保持緩存一致性所需的片外SRAM緩存(off-chip SRAM cache)和監(jiān)聽系統(tǒng)總線(snooping system bus)。
對(duì)于RISC SMP系統(tǒng)來說,為了平衡相對(duì)較高的內(nèi)存延遲,以及降低共享地址(shared address)和數(shù)據(jù)總線所需的帶寬要求,大容量的片外SRAM緩存是至關(guān)重要的。但是,當(dāng)英特爾不再使用標(biāo)準(zhǔn)的片外SRAM緩存之后,這一市場停滯不前了,跟其他電子元器件的發(fā)展趨勢不同,SRAM的性價(jià)比變得越來越糟糕。到2000年,一個(gè)大容量的片外SRAM緩存所花費(fèi)的成本甚至是處理器的好幾倍。
不過,對(duì)于小型SMP系統(tǒng)來說,由于降低了對(duì)內(nèi)存和地址總線的共享,因此,能夠獲得相對(duì)較低的延遲和較高的每處理器帶寬。反過來,小型SMP使用小容量的片外SRAM緩存就可以了。這樣一來,小型RISC SMP和大型RISC SMP在每處理器售價(jià)(price/processor)方面的差距越拉越大,越來越多的用戶開始轉(zhuǎn)向小型SMP集群,以取代大型SMP系統(tǒng)。
③多核X86處理器的性價(jià)比
到2000年初,基于X86架構(gòu)的服務(wù)器在性能上開始接近基于專有RISC架構(gòu)的服務(wù)器,而且前者在性價(jià)比方面更勝一籌。上述大型SMP向小型SMP集群遷移的趨勢,也使得進(jìn)一步向X86集群轉(zhuǎn)移變得更加容易。隨著2003年AMD64架構(gòu)處理器的推出,向X86遷移也就更加盛行,因?yàn)锳MD64提供了更好的性能、真64位尋址及整數(shù)算法能力。隨后,英特爾也推出了EM64T架構(gòu),從而使得僅僅在幾年的時(shí)間里,大多數(shù)X86服務(wù)器完成了從32位向64位的轉(zhuǎn)變。
當(dāng)然,這些趨勢并不能說明用戶對(duì)SMP系統(tǒng)不再有興趣,而是說明,用戶對(duì)大型SMP系統(tǒng)的性價(jià)比變得越來越敏感了。想想看,大型SMP和小型SMP之間的價(jià)格差距實(shí)在太大了,市場必然會(huì)歡迎更便宜的硬件產(chǎn)品。
過去,RISC SMP的發(fā)展促使大量ISV對(duì)其軟件代碼進(jìn)行了并行化(在企業(yè)計(jì)算和科學(xué)計(jì)算兩個(gè)領(lǐng)域都是如此),現(xiàn)在,多核處理器趨勢則會(huì)進(jìn)一步刺激更多的軟件轉(zhuǎn)向并行化,這些軟件通常運(yùn)行在價(jià)格更低廉的小型服務(wù)器上。
與上世紀(jì)九十年代RISC SMP市場不同的是,今天的多核處理器不再依賴于片外SRAM緩存,而且通過配置,可以避免芯片到芯片(chip-to-chip)之間昂貴的一致性流量(coherence traffic)??既可以通過監(jiān)聽過濾器(snoop filter),也可以簡單地使用單路服務(wù)器,如SUN的T1/Niagara。