不可否認,多核(四核及以上)是未來發展方向。然而當前,廠商們熱衷于桌面多核的態度卻總讓人們心生疑惑:真的有必要么?
Intel Core2 Quad系列產品被很多人認為是目前最強大的四核桌面處理器。
在英特爾、AMD等廠商的推波助瀾下,我們成功地跨入了多核時代。
一些激進的桌面用戶,迫不及待地升級到最新的多核系統。然而,他們卻很快發現,多核系統對于桌面應用的改善非常有限。付出昂貴的代價,換來不盡如人意的結果,用戶不禁要問:對于桌面系統而言,多核真的有必要嗎?
操作系統是關鍵
其實,問題首先出在操作系統上。如果操作系統對于多核的支持不夠好,那么即便有更多的處理器核心也無濟于事。
以微軟最新的操作系統Windows Vista為例,從目前來看,Vista并沒有對雙核以及多核處理器進行專門的優化。這也不能怪微軟,畢竟在多年前開始Vista的開發時,英特爾和AMD的多核處理器還沒影呢!不過,沒有進行專門的優化,并不代表Vista就不支持多核,其實甚至連Windows系列的早期產品Windows XP、Windows 98等操作系統也支持多核,只有目前僅存于人們記憶中的DOS不支持多核。換而言之,只要操作系統支持多任務操作,那么多核就能發揮作用,盡管這種作用可能會因為沒有經過優化而在當前顯得微不足道。
很多人會感到奇怪,他們認為,從結構上來說,多核的芯片和以前的SMP(Symmetrical Multi-Processing,對稱多處理器,通常用于工作站和服務器)差不多,只不過多核是將多個CPU集成到一塊芯片上而已。那么,既然以前的操作系統都能夠對SMP做出完美的支持,為什么還要有經過優化的多核操作系統呢?
實際上,多核與SMP還是有很大不同的。雖然二者都具備易于使用、內置緩存、共享內存的特性,但是在SMP下,開發人員面對的是單一的抽象化硬件平臺,由SMP操作系統來決定具體由哪一個內核來運行相應的任務。而多核環境顯著增加了系統的復雜度,盡管很多人都認為多核就是指在同一個芯片中放入多個內核,但是在實際開發工作中所遇到的多處理問題并不僅僅局限于在單一芯片中的多個內核。另外,在操作系統層面,當一個任務到來時,會剝離成為多個并行的線程(線程數量視CPU核心數量而定),又因為線程之間需要交流以及操作系統的監管,其效率損失要比硬件層面大得多。
這里再說句題外話,對于操作系統來說,大家耳熟能詳的各種補丁包不僅能改善系統的安全性能等,也可能在短期間內為多核提供強有力的支持。譬如,微軟在7月23日就發布了一個支持多核心顯卡的補丁,原因是在Windows Vista下,一些諸如GeForce 7950 GX2這樣的雙核心顯卡的第2個GPU(圖形處理器單元)可能無法獲得正確的指令,導致其僅能發揮一半的火力。多核處理器雖然與多核顯卡有極大的不同,但是二者的實現原理是基本相同的,因此我們也不能排除微軟在某個時刻為多核桌面系統提供相應的Windows補丁包的可能性。
軟件支持成軟肋
有了完美支持多核的桌面操作系統,并不意味著桌面多核就已經水到渠成,軟件的支持也必須跟上。
目前,多數桌面軟件并沒有充分考慮到多核的運行情況,導致線程的平均分配時間以及線程之間的溝通時間都會大大增加,尤其是當線程需要反復訪問內存的時候,就會造成軟件運行效率的低下。另外,一些桌面軟件的測試也明白無誤地告訴我們,如果沒有針對多核進行軟件開發,不僅多核提供的強大計算能力得不到利用,甚至還有可能出現“多核不如單核CPU好用”的現象。
在目前的可視化開發環境下,開發軟件似乎很簡單:只需在IDE(集成開發環境)中新建一個工具,再建幾個Form,然后拖上去一些控件,就可完成一個看似非常強大的程序。這些程序可能具有非常復雜的功能,而且可以在單核CPU上運行得非常好。然而一旦將之在多核系統上運行,其表現往往令人失望。
原因何在呢?傳統的程序都是由一個Main函數開始執行程序,然后按順序執行相應的代碼,即所謂的串行,因此同一程序在同一時間只能運行在一個CPU核心上,哪怕該系統上有很多CPU核心,也只能有一個核心發揮作用。
目前幾乎所有的桌面軟件都是串行的,采用Visual Basic等語言編寫,如何為這類開發商提供更好的并發編程模型和開發環境,以幫助他們開發有效的桌面并行應用程序,將是多核在未來幾年里面臨的一大挑戰。當然,這些問題也存在于企業級軟件開發過程中,不過由于本文談及的是桌面系統,因此不再贅言。
為了改善這種局面,據悉英特爾已經與一些軟件開發商、操作系統廠商和高校制訂了合作伙伴計劃,并加快了在相關工具方面的研發力度,推出了一系列的產品,包括編譯器、VTun性能分析器、多線程工具等。另外,Intel在全球還有1萬多名軟件工程師幫助用戶完成相關軟件的并行化工作。
應用缺乏是短板
目前看來,桌面系統的應用一般不外乎是文檔處理、表格制作、網頁瀏覽、即時通信、游戲娛樂等領域,往復雜里說,還可能包括一些非專業的視頻、音頻等多媒體處理應用。
對于當前的主流桌面系統來說,應對以上的應用完全不成問題,譬如微軟最新的Office 2007辦公系統、IE 7.0瀏覽器、MSN 8.1等軟件,甚至可以在早幾年的桌面系統上流暢運行,完全無需昂貴的多核處理器。只有在音、視頻處理方面,多核才能發揮出一些優勢,不過如果相應的音、視頻處理軟件沒有針對多核進行優化的話,多核系統的效果也會大打折扣。
業內曾經認為,多核在可視化領域具有遠大前途,渲染速度可以加倍,矩陣運算容量可以大大增加,然而現在的OpenGL(這是一種3D程序接口,在圖形工作站和游戲中應用頗多)很難拆分數據封裝,這也讓多核難有用武之地。更糟糕的是,目前的絕大多數游戲都采用了微軟的DirectX,而不是曾經輝煌一時的OpenGL。要讓DirectX在多核下表現優異,仍要微軟在操作系統或補丁包中加以支持。
游戲是桌面系統(尤其是家庭和個人用戶)的一大應用,然而目前能夠支持多核(哪怕是雙核)的游戲可謂鳳毛麟角、少之又少。由于多核下的游戲開發將在很大程度上顛覆原有的思路、理念乃至流程,因此現在仍少有大型游戲公司宣稱向多核開發轉移,這也意味著短期間內我們不會看到重量級的游戲產品支持多核。
另外,一些業內人士認為,多核桌面的春天要寄希望于家庭服務器(這是微軟最近一段時間力捧的一種產品,微軟已經表示將在年內推出Windows家庭服務器正式版)。他們認為,只有電腦轉變成為數字家庭的數據存儲和運算中心,多核的意義才會凸顯。不過,這也只是一種美好的期望,畢竟類似家庭服務器這樣的應用距離我們仍非常遙遠,更況且家庭服務器恐怕也不應再歸類于“桌面”了吧?
觀點:多核優點不容回避
雖然說了一大堆多核的“壞話”,但是我必須承認,多核的優點很多,而且我也很看好多核
在服務器和工作站上的前景。
與單核相比,多核的優點在于單芯片多處理器結構的控制邏輯復雜性要明顯低很多;其次,由于單芯片多處理器結構的控制邏輯相對簡單,包含極少的全局信號,因此線延遲對其影響比較小,在同等工藝條件下,單芯片多處理器可以獲得更高的工作頻率;再次,由于多個處理器集成在一塊芯片上,并且采用共享Cache或者內存的方式,因此多線程的通信延遲會明顯降低;另外,在IT業界廣泛崇尚綠色環保的今天,多核通過動態調節電壓/頻率、負載優化分布等,加之生產工藝的極大改進,能更有效地降低處理器的功耗。
至于多核桌面,我個人認為在2010年前不會成為市場主流。(劉波)