http://www.whhswh.com 2008-01-08 14:43 來源:服務(wù)器在線
計(jì)算機(jī)領(lǐng)域正在發(fā)生著悄無聲息的革命。英特爾,AMD及其他芯片制造商不斷推出在單晶片上集成多重處理單元的新型芯片。取代過去的單一中央處理器,計(jì)算機(jī)目前正在步入多核時(shí)代。盡管這項(xiàng)技術(shù)對(duì)我們而言并不是新鮮事物,但這是這種類型的體系架構(gòu)首次大規(guī)模運(yùn)用于商用個(gè)人電腦和服務(wù)器市場(chǎng)。
這場(chǎng)變革將影響到每位計(jì)算機(jī)用戶。多核技術(shù)的觸角已經(jīng)深入到服務(wù)器,筆記本電腦甚至游戲機(jī)控制臺(tái)領(lǐng)域。從最終用戶的角度來看,這種變革的影響是潛移默化的。然而根據(jù)過去二十年的經(jīng)驗(yàn)要獲取相應(yīng)的性能所付出的價(jià)格預(yù)期還是個(gè)未知數(shù)。程序設(shè)計(jì)者們會(huì)發(fā)現(xiàn)要實(shí)現(xiàn)多核設(shè)計(jì)的性能也是一項(xiàng)充滿挑戰(zhàn)的艱巨任務(wù),特別是現(xiàn)在還沒有一勞永逸的辦法和自動(dòng)化技術(shù)能適應(yīng)多核系統(tǒng)上運(yùn)行的現(xiàn)行軟件。
指路多核
計(jì)算機(jī)市場(chǎng)長(zhǎng)期以來一直在處理器速度上穩(wěn)步前進(jìn)。處理器的速度很大程度上取決于時(shí)鐘頻率傳遞給處理器執(zhí)行指令的速度有多快。時(shí)鐘頻率越快,處理器在指定時(shí)幀內(nèi)執(zhí)行的指令數(shù)目就越多。半導(dǎo)體的物理特性對(duì)處理器時(shí)鐘頻率速度的提升會(huì)有限制。這種趨勢(shì)可以從圖示一中清楚的顯示,從中可以看到英特爾和AMD處理器隨著時(shí)間推移平均時(shí)鐘頻率和熱量消耗的情況。
從這張能量消耗曲線圖上看,能量消耗的持續(xù)攀升要求更多的冷卻和電力服務(wù)來維持處理器的運(yùn)行。解決方案就是要增加處理器內(nèi)核的比例來取代單純提升時(shí)鐘頻率。這張圖中時(shí)鐘頻率的下降是指AMD公司和英特爾公司的首款雙核處理器的面世。這些處理器的設(shè)計(jì)考慮到熱量的問題,相對(duì)單核處理器設(shè)計(jì)的時(shí)鐘頻率要低。雙核芯片從過往經(jīng)驗(yàn)來看,能達(dá)到單核芯片兩倍的性能,從而能幫助處理器的性能不斷進(jìn)步。
多核發(fā)展之路
目前英特爾公司和AMD公司都推出了自己的多核處理器。雙核和四核處理器目前已經(jīng)投入市場(chǎng)。從公司的市場(chǎng)導(dǎo)向來看,他們還計(jì)劃在2009年到2010年陸續(xù)推出八核處理器。大致時(shí)間表如下:
2005年雙核處理器
2007年四核處理器
2009年+八核處理器
服務(wù)器和工作站傳統(tǒng)上都是使用雙路處理器。這就意味著到2010年底每個(gè)母板上核心的總數(shù)量能輕易的達(dá)到16個(gè)。另外,AMD和英特爾處理器都提供四路甚至八路插槽設(shè)計(jì)。從八路核心由此類推就意味著在不久的將來六十個(gè)四核服務(wù)器也并非不能實(shí)現(xiàn)的預(yù)期。[page_break]
多核面臨的挑戰(zhàn)
多核處理器的革命給整個(gè)計(jì)算機(jī)領(lǐng)域帶來了前所未有的挑戰(zhàn)和機(jī)遇。一方面,多核意味著在同樣的空間內(nèi)實(shí)現(xiàn)更多的計(jì)算功效。另一方面,處理器體系架構(gòu)的根本性變化要想充分利用這些處理器,比起之前的設(shè)計(jì)就更具挑戰(zhàn)性。
面臨的挑戰(zhàn)之一就是軟件,概述如下:
現(xiàn)有的軟件如果不做改變,就無法利用目前不斷進(jìn)步的處理器所提供的多核性能。
為了充分利用多核,程序需要同時(shí)做很多事情。這種行為通常被稱為并行計(jì)算。并行程序如果編譯正確,執(zhí)行指令的速度將比傳統(tǒng)的串行程序要快很多,因?yàn)樗軐⒐ぷ髫?fù)載按照不同需求分配給處理器的不同核心。而傳統(tǒng)的串行程序只能利用一個(gè)核心。確實(shí)這種程序編譯方式也只能識(shí)別一個(gè)核心!
多核帶來的影響
從最終用戶的角度來看多核對(duì)工作負(fù)載的影響更為直接。舉例來說,你的工作負(fù)載要同時(shí)執(zhí)行不同的任務(wù),此時(shí)多核系統(tǒng)就能馬上發(fā)揮它的優(yōu)勢(shì)所在。比如,你在網(wǎng)絡(luò)上觀看視頻的同時(shí),你的計(jì)算機(jī)正在準(zhǔn)備打印一份大型文檔作業(yè)。多核系統(tǒng)就能協(xié)助你同時(shí)完成這些作業(yè)。如果他們不是采用并行設(shè)計(jì)的話,獨(dú)立的應(yīng)用程序?qū)⒉豢赡艹絾魏说乃俣取?/P>
應(yīng)用程序的設(shè)計(jì)者們?yōu)榱藵M足多核的需求需要花費(fèi)時(shí)間對(duì)代碼進(jìn)行升級(jí)和測(cè)試。在并行程序設(shè)計(jì)上沒有簡(jiǎn)單或者自動(dòng)化的捷徑可循,因此多核菜單(MCCB)的設(shè)計(jì)就需要付出更多的努力。除了研發(fā)多核應(yīng)用軟件需要花費(fèi)額外的心血外,還要適應(yīng)不斷涌現(xiàn)的全新概念。
內(nèi)存之爭(zhēng)
從定義上說,所有的多核系統(tǒng)都必須共享內(nèi)存。設(shè)計(jì)內(nèi)存子系統(tǒng)能讓核心之間的爭(zhēng)奪最小化,但是仍然會(huì)出現(xiàn)內(nèi)存空間為兩個(gè)或者更多內(nèi)核所用的時(shí)候。這種情況在很多時(shí)候就會(huì)導(dǎo)致性能問題或者性能衰減。
資源之爭(zhēng)
與傳統(tǒng)的單核處理器不同,多核系統(tǒng)的每個(gè)核心都必須共享本地資源。除了內(nèi)存之外,這些資源還包括硬盤,網(wǎng)絡(luò)連接,PCI總線和個(gè)人電腦,工作站或者服務(wù)器的其他組件。
ProgramLocality
在多核系統(tǒng)中,應(yīng)用程序在那個(gè)核心上運(yùn)行取決于操作系統(tǒng)。操作系統(tǒng)會(huì)盡可能的讓所有的核心的工作負(fù)載均等。通過在核心間對(duì)程序進(jìn)行遷移來實(shí)現(xiàn)分配。如果萬一程序遷移所在的核心無法使用同樣的高速緩存或者本地內(nèi)存資源,那么程序就會(huì)喪失高速緩存數(shù)據(jù)的優(yōu)勢(shì)所在,性能也會(huì)因此衰減。[page_break]
新的錯(cuò)誤類型
多核也會(huì)引發(fā)程序設(shè)計(jì)中新的錯(cuò)誤類型。這種情況的出現(xiàn)是因?yàn)樵诤诵拈g新的時(shí)間動(dòng)態(tài)分配出現(xiàn)了問題。當(dāng)核心都在互相等待和凍結(jié)或者他們不能保持同步時(shí),這種情況就會(huì)發(fā)生從而報(bào)錯(cuò)。程序設(shè)計(jì)者們必須在編譯應(yīng)用程序時(shí)對(duì)這一點(diǎn)有清醒的認(rèn)識(shí)。
程序模式
最后一個(gè)問題就是程序模式。在多核系統(tǒng)中,核心是通過內(nèi)存共享數(shù)據(jù)和通訊。程序設(shè)計(jì)者們實(shí)現(xiàn)的途徑是取決于他們慣常編寫代碼的程序模式。對(duì)于所有的多核程序設(shè)計(jì)來說,沒有單一的標(biāo)準(zhǔn)方式(程序語言或者API)是可以通行無阻的。處于多核菜單的設(shè)計(jì)目的,我們將程序設(shè)計(jì)方法分成兩類:
主流方法:這種設(shè)計(jì)方法就是公開/標(biāo)準(zhǔn)API(應(yīng)用編程接口),從過往經(jīng)驗(yàn)看API已經(jīng)在并行程序設(shè)計(jì)上取得了成功,具有豐富的編程經(jīng)驗(yàn)基礎(chǔ)來向程序設(shè)計(jì)者提供支持。采用API的編程方法在靈活性和將來的升級(jí)支持方面都是風(fēng)險(xiǎn)較低的選擇。但對(duì)于特別問題處理方面卻并非最佳的編程方式。
新生力量:這些編程方法是新生力量,在將來也頗具潛力。但是并非所有的方法都具備這樣的實(shí)力,成為大型項(xiàng)目程序的選擇(比如說有些尚處于試驗(yàn)階段)。雖然他們?cè)趯?shí)現(xiàn)并行程序方面更為出色,但作為一項(xiàng)新興的技術(shù)要進(jìn)行推廣還有一定風(fēng)險(xiǎn)。
當(dāng)然,我們?cè)噲D向軟件研發(fā)人員提供指南的意圖頗有些班門弄斧。畢竟只有程序設(shè)計(jì)者們最清楚項(xiàng)目的規(guī)模和需求,這些分析是要協(xié)助設(shè)計(jì)者們把握選擇的方向。我們的愿望是編程方法的新生力量能逐漸成為設(shè)計(jì)的主流,隨著多核系統(tǒng)的逐步普及這些編程方法也能得到更廣泛的使用。
這些新興的編程模式數(shù)量太多而無法一一羅列,甄選出的主要方法由三種組成:Threads(線程技術(shù)),OpenMP和MPI并行算法。Threads(線程技術(shù))使用的是均衡共用存儲(chǔ)器或者共享內(nèi)存,在傳統(tǒng)多核系統(tǒng)中已經(jīng)有多年的使用歷史。
另外一種正在發(fā)展之中并能相對(duì)容易的利用線程的方法就是OpenMP。OpenMP使用一組指令設(shè)計(jì)來允許程序設(shè)計(jì)者更為簡(jiǎn)便的實(shí)現(xiàn)對(duì)稱多處理機(jī)的并行要求。MPI(消息傳遞接口)是實(shí)現(xiàn)高性能計(jì)算代碼并行設(shè)計(jì)的標(biāo)準(zhǔn)方式。MPI的并行設(shè)計(jì)能在獨(dú)立的計(jì)算機(jī)上對(duì)進(jìn)程間的信息進(jìn)行傳遞,對(duì)于對(duì)稱多處理計(jì)算機(jī)也同樣適用。
未來之路
多核程序設(shè)計(jì)在計(jì)算機(jī)世界中是個(gè)廣泛而動(dòng)態(tài)的領(lǐng)域。MCCB對(duì)于多數(shù)程序設(shè)計(jì)者而言都是一個(gè)好的開端,還將繼續(xù)提供多核革命的資源,案例,基準(zhǔn)和背景資料。