軟件支持成“軟肋” 發(fā)展多核困惑重重
——
眾“核”難調(diào)
即便是在制造上沒(méi)有大問(wèn)題,就處理器的系統(tǒng)結(jié)構(gòu)而言,多核處理器依然面臨大問(wèn)題。如果僅僅簡(jiǎn)單地考慮多核的物理連接,而沒(méi)有充分考慮到處理器的運(yùn)行和使用模式,將極大限制處理器的利用率,尤其是在處理有資源沖突應(yīng)用的時(shí)候,多個(gè)核心之間的資源調(diào)配就成了效率關(guān)鍵。在目前的算法條件下,還沒(méi)有更好的控制兩個(gè)以上處理器合理調(diào)配資源的方法。這并非因?yàn)闊o(wú)法實(shí)現(xiàn)更好的算法從而充分調(diào)配處理器資源,而是因?yàn)槟壳岸嗪颂幚砥髌毡榈乃惴ㄏ鄬?duì)比較簡(jiǎn)單。
總體來(lái)看,算法無(wú)法知道具體的可用資源,并且硬件的搭配因?yàn)槌杀締?wèn)題沒(méi)有充分考慮一些意外情況,因而,以“同類(lèi)”思想考慮的處理器在面對(duì)“異類(lèi)”運(yùn)算時(shí)就會(huì)變得效率低下。
現(xiàn)在,多核處理器有多種安排形式,AMD的雙核、Intel的Pentium D以及IBM的Cell架構(gòu)乃是其中幾種代表。
Intel很早就通過(guò)超線程技術(shù)實(shí)現(xiàn)了邏輯上的雙處理器系統(tǒng),但這不過(guò)是對(duì)處理器閑置資源的一種充分利用而已,并且這種充分利用只有在特定的條件下才會(huì)比較合適,尤其是針對(duì)流水線比較長(zhǎng),而兩種運(yùn)算并不相互交叉的時(shí)候,才會(huì)有較高的效率。但像編碼解碼、長(zhǎng)期重復(fù)某種矩陣運(yùn)算、一些沒(méi)有經(jīng)過(guò)仔細(xì)編寫(xiě)的軟件,似乎并不能充分利用這個(gè)特性。
即使IBM的Power5架構(gòu),也需要跟最新的操作系統(tǒng)進(jìn)行融合,加上運(yùn)行在其上的軟件,才有可能利用并發(fā)多線程。這是物理上多核系統(tǒng)的資源利用的一個(gè)映射,至少可以說(shuō)明,僅僅通過(guò)操作系統(tǒng)忙乎還遠(yuǎn)遠(yuǎn)不夠。
目前條件下,Intel的多核系統(tǒng)和AMD有根本不同。根據(jù)多核處理器系統(tǒng)強(qiáng)調(diào)可擴(kuò)展性的特點(diǎn)來(lái)看,目前的Pentium D并不是一個(gè)良好的多核解決方案。并且,在流媒體時(shí)代,高清晰的內(nèi)容需要處理器作為一個(gè)數(shù)據(jù)中心,不僅告訴處理器數(shù)據(jù),還需要高速傳輸數(shù)據(jù),僅僅是把兩個(gè)核心安排在一個(gè)處理器內(nèi),無(wú)法實(shí)現(xiàn)根本轉(zhuǎn)變。
I/O成瓶頸
由于兩個(gè)核心只能共用一個(gè)I/O通道,當(dāng)兩個(gè)核心之間的數(shù)據(jù)進(jìn)行交流的時(shí)候,就無(wú)法再?gòu)耐獠孔x入數(shù)據(jù)從而利用兩者的時(shí)間差實(shí)現(xiàn)資源的有效搭配和利用。盡管兩個(gè)核心之間可以并行運(yùn)算,但就整個(gè)系統(tǒng)而言,無(wú)法實(shí)現(xiàn)真正的流水線操作。
加上分離的緩存結(jié)構(gòu)需要取得一致性,兩個(gè)內(nèi)核之間的交流變得經(jīng)常而且頻繁,這實(shí)際上也會(huì)降低處理器的效率,因此Pentium D在技術(shù)上并不被看好。
AMD因?yàn)橥ㄟ^(guò)引入HyperTransport,部分解決了這個(gè)問(wèn)題,并且因?yàn)樘幚砥鲀?nèi)部自己有獨(dú)立的內(nèi)存控制器,可以獨(dú)立訪問(wèn)內(nèi)存,兩個(gè)核心之間的行為具有相對(duì)獨(dú)立性,數(shù)據(jù)相關(guān)變得很小。因而一些測(cè)試表明,其隨機(jī)處理數(shù)據(jù)的能力要高于Pentium D。
AMD64的最大特性是引入了HyperTransport,它的良好擴(kuò)展性使得處理器實(shí)現(xiàn)多核、多處理器系統(tǒng)相對(duì)容易一些,并且,多處理器擴(kuò)展的效果也非常好,這是它能夠在桌面雙核領(lǐng)域暫時(shí)領(lǐng)先的重要原因。考慮到這些,Intel可能也會(huì)在合適的時(shí)候引入類(lèi)似架構(gòu)。
Cell的多核實(shí)現(xiàn)起來(lái)并不完全一樣,因?yàn)橹圃焯珡?fù)雜,估計(jì)到65nm的時(shí)候,這個(gè)處理器才能夠在成本上具有競(jìng)爭(zhēng)力。與其他基于對(duì)稱(chēng)多處理器不同的是,這個(gè)處理器把重心放在了運(yùn)算基元之上,從而能夠把處理器應(yīng)用到面對(duì)不同的應(yīng)用類(lèi)型,它其中包含的核心更多是以運(yùn)算的基礎(chǔ)元件形式存在的。因而,即便在內(nèi)部,也是按照一個(gè)系統(tǒng)的思想來(lái)實(shí)現(xiàn)的,各個(gè)運(yùn)算單元之間有高速的連接通道,除了主控處理器用來(lái)分配任務(wù)從而形成運(yùn)算的流水線思想外,其余幾個(gè)并不是具有很完善的運(yùn)算能力。這幾種系統(tǒng)都面臨同樣的問(wèn)題:I/O將是最嚴(yán)重的瓶頸。
虛擬化在一定程度上能夠處理一些因?yàn)槎嗪藥?lái)的問(wèn)題,可以讓?xiě)?yīng)用軟件和操作系統(tǒng)在透明的環(huán)境下對(duì)處理器資源進(jìn)行分配和管理。
軟件是軟肋
即使桌面操作系統(tǒng)支持雙處理器,也需要很長(zhǎng)一段時(shí)間。目前在對(duì)稱(chēng)多處理器方面,操作系統(tǒng)對(duì)資源的分配和管理并沒(méi)有本質(zhì)的改變,多以對(duì)稱(chēng)的方式進(jìn)行平均分配。
也就是說(shuō),在操作系統(tǒng)層面,當(dāng)一個(gè)任務(wù)到來(lái)時(shí),剝離成為兩個(gè)并行的線程,因?yàn)榫€程之間需要交流以及操作系統(tǒng)監(jiān)管,它導(dǎo)致的效率損失要比硬件層面的大得多。并且,多數(shù)軟件并沒(méi)有充分考慮到雙核乃至多核的運(yùn)行情況,導(dǎo)致線程的平均分配時(shí)間以及線程之間的溝通時(shí)間都會(huì)大大增加,尤其是當(dāng)線程需要反復(fù)訪問(wèn)內(nèi)存的時(shí)候。比如做一個(gè)FFT測(cè)試時(shí),由軟件和硬件構(gòu)成的系統(tǒng)將呈現(xiàn)出巨大差異,這時(shí)Pentium D將被完全擊倒。這不是Pentium D的錯(cuò),多數(shù)操作系統(tǒng)還沒(méi)有完全實(shí)現(xiàn)自由的資源分配。IBM也是通過(guò)AIX 5.3L在支持更自由的虛擬化Power5上,實(shí)現(xiàn)了資源的動(dòng)態(tài)調(diào)配和劃分。
從長(zhǎng)遠(yuǎn)來(lái)看,需要使用虛擬化技術(shù)才可能實(shí)現(xiàn)操作系統(tǒng)對(duì)任務(wù)的具體劃分,這很可能改變一些通用的編程模式。不僅操作系統(tǒng)層面無(wú)法完全解決這個(gè)問(wèn)題,就是軟件在編寫(xiě)的時(shí)候其編譯器都無(wú)法充分解決這個(gè)問(wèn)題。
面對(duì)多核系統(tǒng),需要有并行編程的思想才有可能充分利用資源,而人類(lèi)的思維模型習(xí)慣于線性思維,對(duì)“面”或者更為復(fù)雜的立體編程模式,效率會(huì)下降很多。
軟件的缺失給多核蒙上了一些陰影。盡管用戶在充滿希望地期待著,但思維完全的改變,不是一朝一夕的事情。更重要的是,一些表現(xiàn)多核處理能力的輸出系統(tǒng)無(wú)法承受這樣的運(yùn)算量。
現(xiàn)在能充分享受到多核系統(tǒng)的用戶依然還是企業(yè)級(jí)用戶,那些專(zhuān)門(mén)進(jìn)行密集計(jì)算的用戶可以充分利用多核節(jié)省下來(lái)的空間,大大增加計(jì)算密度,從而降低整體管理費(fèi)用。
對(duì)于一些線性模型,如Google的查找算法,對(duì)處理器系統(tǒng)的要求是多多益善。一些用于網(wǎng)絡(luò)游戲的服務(wù)器,也能夠從多核之中看到可支持用戶數(shù)量的成倍增長(zhǎng)。對(duì)于一些需要科學(xué)運(yùn)算的石化、石油勘探等大量數(shù)據(jù)轉(zhuǎn)換來(lái)說(shuō),不僅需要多核,還需要大量的顯示芯片實(shí)現(xiàn)數(shù)據(jù)的可視化。
本來(lái),多核在可視化領(lǐng)域具有遠(yuǎn)大前途,渲染速度可以加倍,矩陣運(yùn)算容量可以大增,可惜現(xiàn)在的OpenGL還太可惡,很難拆分?jǐn)?shù)據(jù)封裝。
在仿真領(lǐng)域,大量的多核可以充分模擬仿真的網(wǎng)格特性,因而可以充分利用在氣象等高密度計(jì)算中。
有人說(shuō),多核系統(tǒng)可以提高多任務(wù)的性能,可以同時(shí)做很多事情,但須知,人是需要專(zhuān)心的動(dòng)物。我看,多核的真正春天要寄托在家庭服務(wù)器上,只有這時(shí)候,電腦轉(zhuǎn)變成為數(shù)字家庭的數(shù)據(jù)存儲(chǔ)和運(yùn)算中心,它的多核意義才會(huì)凸顯。
無(wú)論如何,需要把眼光放在軟件端才是正途,至于使用幾個(gè)核的處理器,讓開(kāi)發(fā)人員去思考好了。
評(píng)論