資源描述:
《23多核并行編程 - windows程序設計》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第23章多核并行編程本章先介紹超線程和多核處理器技術(shù),再給出并行編程的基本概念和內(nèi)容,重點討論基于多核CPU的并行計算的若干具體編程方法,包括通用的OpenMP和微軟公司的PPL、TPL和PLINQ。23.1超線程與多核處理器Intel公司的超線程(Hyper-Threading,HT)技術(shù)將一個物理處理器核模擬成兩個邏輯核,可并行執(zhí)行兩個線程,從而能有效提高處理器的運行效率。一直以來,處理器芯片廠商都是通過不斷提高主頻來提高處理器的性能(例如Intel于2004年12月12日推出的Pentium4HT570J處理器的主頻就達
2、到了3.8GHz)。但是隨著單個芯片上集成的晶體管數(shù)越來越多(如Intel于2007年11月11日推出的Core2ExtremeQX9650處理器包含8.2億個晶體管),傳統(tǒng)處理器體系結(jié)構(gòu)技術(shù)面臨瓶頸,很難單純通過提高主頻來提升性能。而且在主頻的提高同時,帶來的功耗猛增和散熱困難等問題非常嚴重,這些也是直接促使單核轉(zhuǎn)向多核的深層次原因。從應用需求來看,日益復雜的多媒體、科學計算、虛擬化等多個應用領(lǐng)域都呼喚更為強大的計算能力。在這樣的背景下,各主流處理器廠商將產(chǎn)品戰(zhàn)略從提高芯片的時鐘頻率轉(zhuǎn)向多線程和多內(nèi)核方面??傊?,不能永遠靠加
3、快頻率的方法來提高處理器的性能,頻率高到一定程度以后,必然要轉(zhuǎn)向多核(multi-core)技術(shù),這是由芯片的先天性質(zhì)所決定的。23.1.1SMT與超線程SMT(SimultaneousMultiThreading,同時多線程)使用硬件多線程來改善超標量CPU的整體性能,它允許執(zhí)行多個(如2~16個或更多)獨立的線程來更好地利用現(xiàn)代處理器架構(gòu)所提供的資源。超線程是Intel公司研發(fā)的一種在一個實體處理器核中提供兩個邏輯線程的技術(shù),是SMT技術(shù)的特例。1.超標量與流水線超標量(superscalar)CPU架構(gòu),使用單顆核心來實
4、現(xiàn)一種被稱為指令集并行120(instruction-levelparallelism)的并行運算形式,它能夠在相同的時鐘頻率下增加CPU的吞吐量。超標量處理器,通過同時分派多條指令給處理器上的冗余功能單元,可以在一個時鐘周期內(nèi)執(zhí)行一條以上的指令。每個功能單元(functionalunit)不是單獨的CPU核,而是在單個CPU內(nèi)的一個執(zhí)行資源,例如一個ALU(ArithmeticLogicUnit,算術(shù)邏輯單元)、一個位移器(bitshifter)或一個乘法器(multiplier)。在典型情況下,超標量CPU同時也是流水線的
5、,它們是兩種不同的性能增強技術(shù)。非流水線的超標量CPU或流水線的非超標量CPU在理論上也是可能的。流水線(pipeline,管道/管線),是一個串連在一起的數(shù)據(jù)處理元素的集合,其中的一個元素的輸出是下一個元素的輸入。流水線中的元素常常以并行或時間片方式執(zhí)行,在這種情況下,在元素之間常常插入一些數(shù)量的緩沖存儲器。指令流水線(instructionpipelines)是與計算機相關(guān)的流水線(其他流水線有圖形流水線和軟件流水線等)中的一種,它被用于處理器中,允許在同一時鐘周期(circuitry)內(nèi)重疊執(zhí)行多個指令。時鐘周期通常分割
6、成階段,包括指令解碼、算術(shù)和寄存器讀取階段,其中每個階段每次處理一條指令,參見圖23-1。圖23-1簡單的超標量流水線圖23-2超線程通過每次讀取和分派兩個指令,在每個指令周期可以完成最多兩個指令2.超線程Intel的超線程(HT,Hyper-Threading,早期曾叫Super-Threading)技術(shù)利用特殊的硬件指令,把兩個邏輯內(nèi)核模擬成兩個物理芯片,讓單個處理器核都能使用線程級并行計算,進而兼容多線程操作系統(tǒng)和軟件,減少了CPU的閑置時間,提高的CPU的運行效率。參見圖23-2。120采用超線程及時可在同一時間里,應
7、用程序可以使用芯片的不同部分。雖然單線程芯片每秒鐘能夠處理成千上萬條指令,但是在任一時刻只能夠?qū)σ粭l指令進行操作。而超線程技術(shù)可以使芯片同時進行多線程處理,使芯片性能得到提升。Intel表示,超線程技術(shù)讓(P4)處理器在只增加5%的芯片面積的情況下,就可以換來15%~30%的效能提升。但實際上,在某些程序或未對多線程編譯的程序而言,超線程反而會降低效能。除此之外,超線程CPU技術(shù)也需要主板芯片組和操作系統(tǒng)的配合,才能充分發(fā)揮超線程的效能。Intel公司的i865PE和i875P及更新的芯片組。微軟公司的WindowsXP、Wi
8、ndowsVista和Windows7等操作系統(tǒng)都能較好地支持Intel的超線程CPU。2002年2月Intel公司在其推出的代號為Prestonia的130nm新款至強(Xeon)處理器中首次采用超線程技術(shù)。Intel在其2003年5月21日推出的代號為Northwood的