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