正文

基于任務(wù)的程序設(shè)計(5)

C#并行編程高級教程 作者:(美)Gastón C.Hillar


1.1.2  并行程序設(shè)計和多核程序設(shè)計

在傳統(tǒng)的順序式代碼中,指令一條接著一條運(yùn)行,這種方式并不能發(fā)揮多內(nèi)核的優(yōu)勢,因為順序指令只能運(yùn)行在一個可用內(nèi)核上。使用Visual C# 2010編寫的順序代碼并不能發(fā)揮多核的優(yōu)勢,除非利用.NET Framework 4所提供的新功能將任務(wù)分解到多個內(nèi)核上。對于既有的順序代碼來說,并沒有一種自動并行化的方法。

并行程序設(shè)計是程序設(shè)計的一種形式,以這種形式編寫的代碼能夠充分利用底層硬件所提供的并行執(zhí)行能力。并行程序設(shè)計能夠在同一時刻運(yùn)行很多條指令。如前所述,目前存在很多種不同的并行架構(gòu),而對這些架構(gòu)進(jìn)行詳細(xì)分析需要完整的一本專著才行。

多核程序設(shè)計也是程序設(shè)計的一種形式,以這種形式編寫的代碼能夠充分利用多個執(zhí)行內(nèi)核并行運(yùn)行很多條指令。多核和多處理器計算機(jī)在一臺計算機(jī)上提供了多個處理內(nèi)核。因此,其目標(biāo)在于通過將任務(wù)分布在多個可用內(nèi)核上完成,以達(dá)到事半功倍的效果。

現(xiàn)代處理器可以在多個數(shù)據(jù)上執(zhí)行相同的指令,Michael J. Flynn在他1966年提出的 Flynn分類法中將這種方式分類為單指令多數(shù)據(jù)(Single Instruction, Multiple Data,SIMD)。通過這種方式,可以充分利用這些向量處理器來減少某些算法的執(zhí)行時間。

本書深入探討了兩類并行程序設(shè)計:共享內(nèi)存的多核程序設(shè)計和向量處理能力的應(yīng)用??傮w目標(biāo)是要減少算法的執(zhí)行時間。這些增加的處理能力還能讓您在既有的軟件中添加更多功能。

1.2  理解硬件線程和軟件線程

多核微處理器帶有一個以上的物理內(nèi)核(physical core)——物理內(nèi)核是真正獨(dú)立的處理單元,多個物理內(nèi)核使得多條指令能夠同時并行地運(yùn)行。為了充分發(fā)揮多物理內(nèi)核的功效,有必要運(yùn)行多個進(jìn)程,或者在一個進(jìn)程內(nèi)運(yùn)行多個線程,創(chuàng)建多線程的代碼。

然而,每一個物理內(nèi)核可能會提供多個硬件線程,也稱為邏輯內(nèi)核或邏輯處理器。使用了Intel Hyper-Threading Technology(超線程計技術(shù),HT或HTT)的微處理器在每一個物理內(nèi)核上提供了多份架構(gòu)狀態(tài)。例如,很多帶有4個物理內(nèi)核并使用了HT技術(shù)的微處理器在每一個物理內(nèi)核上提供兩份架構(gòu)狀態(tài),從而獲得8個硬件線程。這種技術(shù)稱為對稱多線程(simultaneous multithreading,SMT),它通過額外的架構(gòu)狀態(tài)在微處理器的指令級別對并行執(zhí)行進(jìn)行優(yōu)化和增強(qiáng)。SMT并不局限于每物理內(nèi)核兩個硬件線程;例如,有的微處理器的物理內(nèi)核上有4個硬件線程。需要注意,一個硬件線程并不代表一個物理內(nèi)核。在某些情形下,SMT可以提升多線程代碼的性能。后面的章節(jié)會列舉一些這種性能提升的示例。

Windows中每個運(yùn)行的程序都是一個進(jìn)程(process)。每一個進(jìn)程會創(chuàng)建并運(yùn)行一個或多個線程,這些線程稱為軟件線程(software thread),用于區(qū)分前面提到的硬件線程。一個進(jìn)程至少有一個線程,稱為主線程(main thread)。操作系統(tǒng)的調(diào)度器在所有要運(yùn)行的進(jìn)程和線程之間公平地分享可用的處理資源。Windows調(diào)度器會給每一個軟件線程分配處理時間。當(dāng)Windows調(diào)度器運(yùn)行在多核微處理器上時,調(diào)度器必須從物理內(nèi)核支持的硬件線程中分配時間給每一個需要運(yùn)行指令的軟件線程。打一個比方,可以將每一個硬件線程想象為一條泳道,而將軟件線程想象為游泳者。


上一章目錄下一章

Copyright ? 讀書網(wǎng) www.dappsexplained.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號