多方位多角度 帶您重新詮釋多核技術
在多路服務器領域,芯片能否具有良好的擴展彈性至關重要,而這主要取決于以下兩大要素:第一,處理器擁有一條專門的芯片間直連總線,這樣當系統中擁有多枚處理器的時候,各個處理器可借助該總線進行通訊,從而實現高效的任務協作;第二,處理器是否將內存控制器直接整合、擁有一套獨立的內存系統。這方面反面的例子就是英特爾的Xeon平臺,如果要構建多路Xeon系統,那么就必須依賴于芯片組,多枚處理器共同分享一套內存系統。
處理器之間如果需要進行數據通訊,就必須經由“前端總線-北橋-內存”的鏈路,這個過程不僅耗費了可觀的時鐘周期,也消耗了總線和內存資源。更嚴重的是,這類系統存在內存搶占和緩存同步兩個難題:內存搶占是指當多個處理器同時發起對內存中的某段數據進行存取指令時,各個處理器必須以搶占的方式獲得內存存取權限—如果有一個處理器對某段數據進行修改,該處理器就會鎖定這段數據,其他的處理器必須等待,導致性能提升幅度大打折扣。
系統中的處理器數量越多,此種內存搶占現象就會越頻繁,最糟糕的時候將導致系統的性能不升反降。緩存同步主要出現在多處理器/多內核協作處理同一任務時,各個處理器或內核必須進行緩存同步。由于Xeon缺乏直接溝通渠道,緩存同步操作也必須依賴“前端總線-北橋-內存”的鏈路進行,效率較為低下。
相比之下,AMD的Opteron平臺就沒有這兩個問題:借助HyperTransort總線,Opteron處理器可實現直接通訊,加之 Opteron擁有獨立的內存控制器,不存在內存搶占的問題,因此該平臺非常易于擴展。Opteron在服務器領域對Xeon造成強大的壓力,很大程度上就是得益于此。至于RISC領域,芯片直連總線和整合內存控制器也早已成為處理器的標準設計,而英特爾在自己的技術藍圖上也表明將在2008年開始采用類似的設計。
對應用于PC的X86處理器而言,處理器的擴展彈性無關緊要,但整合內存控制器還是非常有意義,原因在于該項設計能夠有效降低內存系統的延遲時間。事實上,這只是整合運動的開始,不少處理器廠商都在考慮讓處理器整合越來越多的功能,例如SUN和AMD都在考慮在下一代架構中直接整合PCI Express控制器、I/O控制器甚至是圖形功能,借此提升系統的I/O性能以及降低平臺成本;P.A.Semi的PWRficient處理器則整合了 10GbE和GbE網絡控制器以及PCI Express控制器,目的是提高相應服務器的網絡性能和I/O傳輸效能。盡管其他的處理器廠商似乎不為所動,但高度的整合無疑是未來處理器的發展方向之一。
多核處理器同軟件配合的討論
在多核心處理器如火如荼發展的時候,軟件業卻遠遠沒有來得及為此作準備。最早發現問題的是PS3、Xbox 360等平臺的游戲開發商,由于兩套系統完全不同于前一代產品,游戲開發者對此怨聲載道,程序員普遍認為對多核心處理器編程近乎是一種災難,因為程序員必須深入了解相應的硬件平臺,然后據此編寫代碼,而讓代碼在兩個核心之間平衡更是一大難題。
相對來說,PS3的Cell平臺難度更大,程序員首次接觸到主-從方式的多核平臺,對如何發揮出協處理器的性能優勢缺乏經驗,由于編碼的不到位,讓Cell平臺無法表現出與實際相稱的高性能。同樣的事情現在也出現在X86領域,雙核平臺的出現讓軟件開發商考慮對雙核優化的重要性—但比較幸運的是,諸如辦公軟件、網頁瀏覽器、內容創建工具等常規的商務軟件對CPU性能要求不高,對雙核優化也不見得會帶來什么實質性的益處,因此主要的X86軟件都不需要作出變動,真正需要考慮雙核平臺的仍然是X86平臺下的游戲。
對此游戲開發商也是相當頭疼,因為X86多核與PS3、Xbox 360游戲機的多核平臺不同,未來的Many Core或HyperTransport協處理器平臺也許又要作出改動。為了充分發揮硬件性能,設備廠商希望開發商深入了解對應多核處理器的細節—問題是現存多種多核架構,一一研究代價巨大。開發者都希望能夠利用一個硬件無關的自動化通用開發平臺進行設計開發,這樣編碼工作將變得相當容易,同時也能夠保證代碼擁有出色的適應性,遺憾的是,至少在目前這還是軟件工業一廂情愿的想法。
當然,我們沒必要因此對多核平臺喪失信心,對X86 PC來說,使用多核心處理器能夠極大提升系統的多任務效能,你可以在相同的時間里執行多項任務,借此提高辦公效率—在軟件業來不及跟上的時候,辦公用戶或許能夠更多體驗到雙核平臺的優勢所在。
評論