多核系統(tǒng)效率與任務(wù)屬性關(guān)系的優(yōu)化策略
如上分析,指令級并行度與多核CPU支持的系統(tǒng)效率緊密關(guān)聯(lián)。如何利用軟硬件技術(shù)去最大限度地開發(fā)處理機(jī)中的指令級并行性,關(guān)鍵在于要知道何時及如何改變指令順序。在實際運(yùn)用中,這種改變過程必須由編譯器或硬件正確實現(xiàn)。顯而易見,多核系統(tǒng)如果不能保證多核多線程平行推進(jìn),則更多的核可能更影響多核系統(tǒng)的整體效率,這成為目前對多核CPU結(jié)構(gòu)研究的重點。
3 不同屬性的任務(wù)對多核CPU處理能力與效率的影響分析
應(yīng)用系統(tǒng)對計算力或計算機(jī)的處理能力的需求是可以標(biāo)定的。尤其是對于給定的科學(xué)計算問題,所需要的處理時間幾乎能預(yù)估。而面向非科學(xué)計算問題的處理,處理系統(tǒng)要開銷的時間往往不可預(yù)知。比如,在一個大型網(wǎng)絡(luò)數(shù)據(jù)庫系統(tǒng)內(nèi)完成相應(yīng)的知識發(fā)現(xiàn),需要開銷的時間可能各不相同,因待發(fā)現(xiàn)問題的算法(約束方程)而異。產(chǎn)生“不同”的原因其實與發(fā)現(xiàn)問題(處理任務(wù))的屬性相關(guān),如果任務(wù)(Task)是可細(xì)粒度劃分的,則由多核CPU支持的并行系統(tǒng)處理效率高。由于細(xì)粒度劃分算法的工作開銷(Workload),保證了多核CPU的多線程能平行推進(jìn),實現(xiàn)高的并行效率。
考慮一種理想狀態(tài),被處理任務(wù)可劃分為均勻的四大模塊,且并行系統(tǒng)由四核CPU支持,宏觀上生成四條平行的流水線,由于每條流水線上的指令序列不存在任何相關(guān)性,則四核的指令級線程將平行推進(jìn),處理效率最高。如果Task客觀上只能分成均勻的兩大模塊(分成均勻的四塊將出現(xiàn)相關(guān)),且同樣在四核CPU系統(tǒng)上運(yùn)行,其系統(tǒng)效率將可以如下計算:
設(shè)四核處理均勻四模塊的時間為T4,則兩核處理均勻兩模塊的時間為2T4。
如果由四核處理均勻兩模塊任務(wù)序列,且指令級并行過程中存在的相關(guān)性產(chǎn)生的線程阻塞花費(fèi)的吸收開銷為TP,當(dāng)且僅當(dāng)TP≤2T4時,該并行系統(tǒng)才是功能上與四核處理四模塊等價的,但性價比則大大降低。
因此,明晰應(yīng)用系統(tǒng)的屬性更能指導(dǎo)并行系統(tǒng)的選擇或構(gòu)建,科學(xué)地分析系統(tǒng)整體效率或系統(tǒng)結(jié)構(gòu)選擇,在并行系統(tǒng)不斷發(fā)展進(jìn)程中應(yīng)該具有重要意義。
4 任務(wù)屬性與系統(tǒng)效率實際仿真實例
本文采用VC6.0編程對多核并行處理進(jìn)行仿真,仿真結(jié)果如圖1和圖2所示。
比較圖1、圖2,可以得到以下結(jié)論:
動態(tài)效率(圖中第二條曲線)始終低于靜態(tài)效率(理想效率)。動態(tài)效率是多核改變原指令執(zhí)行順序,同時受核自身的空間、當(dāng)前任務(wù)量影響。
靜態(tài)效率(圖中第一條曲線)是任務(wù)在隨機(jī)生成時,靜態(tài)順序執(zhí)行,運(yùn)用Amdahl定律計算出來的。第二曲線低于第一曲線原因分析如下:
(1)動態(tài)執(zhí)行中多核之間協(xié)同發(fā)生同步等待延時,系統(tǒng)效率下降;
(2)某時刻處理單元空閑,產(chǎn)生等待延時,系統(tǒng)效率下降;
(3)改變指令原有的執(zhí)行順序,引起效率變化。
第二曲線比第一曲線長是因為產(chǎn)生延時等待。當(dāng)系統(tǒng)中核的負(fù)載均衡,即線程可平行推進(jìn)時,動態(tài)效率更接近靜態(tài)的理想效率,這與實際非常吻合,說明了基于Amdahl定律計算系統(tǒng)效率是可行的。當(dāng)系統(tǒng)中有一個或多個核長時間空閑時,則整個系統(tǒng)效率明顯下降。當(dāng)任務(wù)分配不均勻,指令相關(guān)產(chǎn)生的等待或吸收,則動態(tài)效率非常不穩(wěn)定。
以上結(jié)論基于最初的指令級抽象、分配、執(zhí)行策略,但由于是靜態(tài)調(diào)度,Krste Asanovic的工作[5]指出了其4個主要的缺點:
(1)不可預(yù)料的轉(zhuǎn)移;
(2)可變的內(nèi)存延遲(無法預(yù)料的cache不命中);
(3)代碼大小的爆炸;
(4)編譯器的復(fù)雜性。
所以,仿真證明了任務(wù)屬性與多核CPU支持的并行系統(tǒng)效率之間存在的緊密關(guān)系,是指導(dǎo)提高應(yīng)用系統(tǒng)性價比的重要因素。
多核處理器是處理器發(fā)展的必然趨勢。無論是移動或嵌入式應(yīng)用、桌面應(yīng)用還是服務(wù)器應(yīng)用,都將采用多核的架構(gòu)[6]。
多核處理器要想發(fā)揮出威力,關(guān)鍵在于并行化軟件支持,多核設(shè)計帶動并行化計算的推進(jìn),而給軟件帶來的影響更是革命性的[7]。面對多核系統(tǒng),需要有并行編程的思想才有可能充分利用資源,而人類的思維模型習(xí)慣于線性思維,對“面”或者更為復(fù)雜的立體編程模式,效率會下降很多。
仿真結(jié)果證明了多核CPU支持的并行系統(tǒng)效率提升與確定系統(tǒng)所面向的任務(wù)屬性至關(guān)重要,它將有效地指導(dǎo)業(yè)界的應(yīng)用系統(tǒng)優(yōu)化設(shè)計。
評論