亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

.NET4.0并行計算技術基礎(1)

系統 1687 0
開篇語:
這是一個系列文章,系統介紹.NET 4.0中引入的并行擴展(包括任務并行庫TPL和PLINQ)開發技術。
本系列文章中所有示例代碼在VS2010 BETA1+Windows 7 RC下調試通過。所有示例源碼將在本系列文章貼完以后,統一壓縮上傳到CSDN下載頻道。
本系列文章的主要內容來自是本人將在電子工業出版社出版的新作中的一章,出于技術共享與交流目的發布,期望業界對并行計算有豐富經驗的工程師指出疏漏,也希望網友對提出寶貴建議。
作者金旭亮擁有本系列文章所有版權,未經本人許可,不允許將此序列文章及相關示例用于商業目的,除此之外,在網絡上出于知識共享目的的復制轉貼不受限制。
反饋方式:
在我的本技術博客上直接回貼 或發郵件至:
2009.9.9
===================================================
隨著多核 CPU 的普及和互聯網的迅速發展,計算已經進入并行的時代,這種并行計算有兩種主要的形式,一種著眼于充分挖掘單臺計算機的硬件潛力,通常以多線程協作的方式完成指定的工作任務;另一種著眼于利用互聯的計算機所共同擁有的計算能力,將一個工作任務分發到多臺計算機上同時處理,通過多臺計算機的相互協作完成單臺計算機所無法完成的工作任務。
第一種計算形式在過去一直都是使用線程來實現的,而在 .NET 4.0 中,又在線程的基礎上向軟件工程師提供了一個“并行擴展( Parallel Extensions )”,從一個更高的抽象層次簡化多線程應用程序的開發,這也是本章要介紹的主要內容。
第二種計算形式依賴于多臺計算機的相互協作,本質上是一種分布式的軟件系統,在 .NET 平臺上, WCF 是開發這類型軟件系統的強大工具。本書第 9 篇的相關章節將介紹 WCF 技術。
19.1 并行計算概述
人們在談論到計算機技術的飛速進步時,經常引用美國著名科幻小說作家 Bruce Sterling [1] 的一段名言:
I used to think that cyberspace was fifty years away. What I thought was fifty years away, was only ten years away. And what I thought was ten years away... it was already here. I just wasn't aware of it yet.
譯為中文 這段話的大致含義是
我曾經認為網際空間 cyberspace 指互聯網這個虛擬的空間 至少要有 50 年才會影響到我們。那些我認為要50年之后才會影響我們的東西,往往只需要10年就成為現實……。而那些我認為10年之后才會影響我們的東西,現在已經在那兒擺著了,而我甚至還沒有意識到它已成為現實!
并行計算就是這樣的一個例子,它靜悄悄地走來,卻于靜寞中引發了一場軟件技術的變革,當人們開始意識到并行計算對日常生活的影響時,才突然發現,原來并行計算已無所不在。


[1] http://en.wikipedia.org/wiki/Bruce_Sterling 有對 Bruce Sterling 本人及其作品的介紹。

19.1.1 并行計算是計算的未來

從集成電路滲透到計算機領域開始, CPU 的計算能力一直在持續地增長。其中有一個著名的“摩爾定律”描述了這一發展趨勢。
趣聞軼事:
“摩爾定律”的提出者是 Intel 公司的創始人之一 Gordon E. Moore 1965 年他發表了一篇論文,在論文中他針對集成電路技術說過這么一段話:
“使用最低成本設計出來的元件其復雜性每年大約增加一倍。可以確信,即便不是有所加快,在短期內這一增長率也會繼續保持。從長遠的觀點來看,這一增長率應該會略有變動。盡管沒有充分的理由來證明,(但我認為)這一增長率至少在未來十年內幾乎維持為一個常數。這意味著到 1975 年時,以最小的成本制作出來的單個集成電路將擁有 65000 個元件,而我相信這么龐大的電路將可以被集成到一塊小小的芯片中”。
這就是“摩爾定律”的原型。 1975 年, Gordon E. Moore 將修改了“定律”,將其中的“每年”改為“每兩年”。而他的另外一名同事,在“摩爾定律”的基礎上又提出了一個“修訂版”的“摩爾定律”,新版定律指出,每 18 個月,集成電路的性能將提升一倍。盡管摩爾本人堅持:“我從沒說過集成電路中的元件數量每 18 個月增加一倍”,但他的聲音很快被淹沒了,“ 18 個月”作為集成電路的“發展周期”,開始以“摩爾定律”廣為人知。
1965 年至今,雖然期間有許多人都曾說:摩爾定律已不再有效,但事實卻證明這一定律與集成電路技術發展的實際情況相當吻合。到底摩爾定律能用多少年,現在誰也無法下這個結論,還是只能交給時間。但不管怎樣,從“摩爾定律”上面人們還是能看到計算機科學家那種深邃的洞察力和讓人佩服的預見能力。
對于傳統的(非并行)應用程序,往往會隨著硬件運行速度的提升而運行得更快。舉個例子,許多早期的跑在 286/386/486 上的一些動作類和射擊類游戲,如果不作修改地運行于現在的高性能 CPU 上,其運行速度可能會快到沒有人再能玩這些游戲了。這就是計算機硬件技術的發展給軟件所帶來的直接好處:代碼不用或僅略加修改,程序就擁有更快的運行速度。
然而,這種免費的午餐是無法永遠提供的,其原因在于 CPU 速度無法無限提升。因為現有的 CPU 技術需要受到物理法則的限制:
當晶體管“瘦身”到很小時,由于控制電流的晶體管門 (transistor gate) 以及氧化柵極 (gate oxide) 距離將非常貼近,因此,將發生電子漂移現象 (electrons drift) 。如果發生這種情況,晶體管會失去可靠性,原因是晶體管在這種條件下無法有效控制電子的運動,從而難于讓其能維持穩定的“ 1 ”或“ 0 ”狀態。
為了能突破這一物理限制而繼續提升 CPU 的計算能力, CPU 走向了另一個條路——多核,將多個 CPU 處理核心集成為單一的整體,稱其為“多核 CPU ”。這樣一下,雖然每個 CPU 處理核心的主頻都沒有提高,但通過將計算任務合理地分配在多個 CPU 處理核心上運行,我們同樣能達到加快 CPU 處理性能的目的。
雙核 CPU 是第一個得到廣泛應用的產品,當前幾乎所有的新購置的個人電腦都配置了雙核 CPU ,而 Intel 宣布 2009 年將為臺式機和筆記本電腦生產四核 CPU (新四核 CPU 基于一個代號為“ Nehalem ”的微架構)。
簡言之:
如果不對 CPU 技術作顛覆性的變革,那么,基于現有技術架構的 CPU 已基本走完了 通過提升主頻而獲取更高性能 之路,必須走向多核之路,其特點是:
1 )每個 的主頻都不算高
2 )在設計 CPU 架構時,針對并行的工作負載進行了專門優化。
CPU 的“多核”發展趨勢對軟件技術有重大影響。
因為 CPU 的多核化要想真正地發揮效益 , 必須依賴于精心設計的軟件,這種軟件本身必須具備將工作任務劃分為多個可并行執行的子任務的能力,在操作系統(或特定的軟件運行平臺)的支持下,將這些任務分配給計算機所配備的多個 CPU 處理核心并發執行 , 并且能夠在這些子任務運行結束后,將這些結果組合起來,得到最終的處理結果。這就是擁有“并行計算”能力的軟件系統。
開發“并行計算”軟件系統,對軟件工程師提出了新的挑戰,因為開發并行程序要比串行程序難得多。軟件工程師必須轉換思路,在開發新的軟件系統時,從一開始就考慮到并行計算的特點,并對此進行特定的設計,才能充分利用現有硬件基礎設施的強大處理能力,開發出高性能與高可靠性的軟件系統,這是一個軟件技術發展的必然趨勢,也是任何一名軟件工程師們都必須認真面對的挑戰!
19.1.2 并行計算的基本原理
并行計算的基本思想并不復雜,那就是將一個復雜的工作任務進行分解,然后,在多核CPU上同時執行這些分解后的子任務。
首先,我們先談談多核CPU中的“核”。

1 CPU 與“核”

現在人們常說:最近我買了一臺 雙核筆記本 電腦 。這里面的“核( core )”指代什么,它與 CPU 是什么關系?還有,人們還常說到“處理器( processor )”,貌似這三個都是指同樣的東西。
下面我們就來討論一下這些概念的含義,弄清楚它們到底指代什么。
學過物理的人都知道,現代計算機是構造于集成電路技術基礎之上,任何一個集成電路,最底層的也是最小的工作單元是一個個的 晶體管 ,多個晶體管構成 邏輯模塊 logic block ),一組邏輯模塊進而構成 功能單元 functional unit ),例如可完成基本算術運算功能的 ALU Arithmetic Logic Unit ,算術邏輯單元)就是功能單元的一個例子。
多個功能單元組合起來,就構成了 微處理器(micro-processor) ,微處理器最廣為人知的名字就是 CPU( Central Processing Unit,中央處理單元)
最終生產出來的微處理器實際上是一塊物理基片( die ),經過封裝之后就叫作 處理器( processor )。
那么什么是“核( core )”呢?
核是微處理器中所有可用的功能單元的集合。
那些直接參與指令執行的功能單元的集合稱為“ 執行核(execution core) ”。
很明顯,每個微處理器必定要有一個執行核,否則,它無法執行任何指令,也就不能稱其為微處理器了。
現在就可很清楚“多核”的含義了。所謂多核,其實就是在同一塊物理基片上集成兩個以上的“執行核”,從而使處理器具備并行執行指令的能力。多核 CPU ,就是指擁有多個執行核的微處理器,基片封裝好之后,就稱為“ 多核處理器 ”。
再區分一下另兩個概念:多處理器與多核處理器系統。
如前所述,多核處理器系統是指計算機中的處理器中包容了多個執行核,通常這種計算機只包容有一個多核處理器,否則,此系統應歸入“多處理器”系統。
多處理器系統是指由多個處理器構成的計算機系統,每個處理器自身可以是單核或多核的。
簡單地說: 多處理器系統可以看作是一個主板上具有多個處理器插槽的計算機系統。
從應用軟件開發者角度來看,多處理器與多核處理器系統其實是一樣的,可以統一地將其看成是計算機中擁有多個可供使用的 CPU
下面,我們再來區分一下另外兩個很容易弄混的概念——“并發”與“并行”。

2 并發與并行

并行(Parallelism) ”是指多個工作任務在擁有多核 CPU (或多個單核 CPU )的多處理器計算機上同時執行。在這些工作任務運行的過程中,除非有任務提前結束或者延遲啟動,否則,在任一時間點總有兩個以上的工作任務同時運行。
簡單地說: 只要是“同時”運行的,就可以稱之為是“并行”的。
19 ? 1 展示了并行執行的三個工作任務在三個處理器上同時運行的情形,圖中 黑色的長條表示任務的執行過程。
并發( Concurrent ”,指“宏觀”上計算機可以同時執行多個不相關的工作任務(是“并行”的),但在“微觀”角度來看,這些工作任務并不是始終都在運行,每個工作任務都呈現出“走走停停”這種相互交替的狀態。
這里的“宏觀”,是指從應用程序開發者層次上看的,時間尺度較大,而“微觀”則是指從操作系統的線程管理角度和計算機硬件工程師層次上看的,時間尺度很小。
19 ? 2 展示了 3 個工作任務在單個處理器上交替執行的情形。
19 ? 2 中,可以看到通過輪流使用單個處理器,盡管在任何時刻都只有一個工作任務在運行,但在一個比較長的時間間隔內,所有的工作任務都在“并行”運行中。由此可見, “并發”的好處之一就是使有限的處理器資源可以“并行”運行超過處理器個數的多個工作任務。 正是由于“并發”有這樣的好處,所以在操作系統級別,不管計算機本身是單核系統還是多核系統,都是采用微觀上的“并發”來實現宏觀上的“并行”,絕不允許一個工作任務長時間地獨占某個處理器直到其運行結束。
再詳細解釋一下如何利用“并發”實現“并行”。
在單核計算機系統中,操作系統通過“微觀”上讓每個線程分時使用處理器實現“宏觀”上工作任務的“并發”執行(因為工作任務具體是由線程負責完成的),而在多核計算機系統中,盡管在物理架構上直接支持“并行”,允許同時運行多個線程,但由于大多數情況下負責執行工作任務的線程數往往大于可獲取的處理器個數,所以,操作系統仍是使用同樣的分時調度策略為線程分配處理器。這時,同一個線程有可能在不同的時間段內在不同的處理器上運行。 19 ? 3 展示了屬于同一工作任務的多個線程在 4 個處理器上“跳越”執行的情形。
理解“并行”與“并發”的區別,是我們開發 “并行程序”的第一步。

.NET4.0并行計算技術基礎(1)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 成人午夜视频网站 | 一个色中文字幕 | 国产一级大片免费看 | 欧美激情日本一道免费视频 | 欧美精品国产第一区二区 | 亚洲国产一区二区三区在线观看 | 国产精品久久久亚洲第一牛牛 | 99re这里只有精品66 | 福利色姬网站视频入口 | 琪琪色播| 综合久久久久久中文字幕 | 亚洲高清二区 | 国产一级高清 | 色综合久久久久综合99 | 91在线免费看 | 老司机观看精品一区二区 | 久久久久国产午夜 | 99免费观看视频 | 欧美经典人人爽人人爽人人片 | 久久国产精品免费专区 | 亚洲女人天堂a在线播放 | 久久99欧美 | 欧美aⅴ在线 | 亚洲国产成人综合 | 一区二区三区免费视频观看 | 久久国产精品久久精 | 成人不卡| 免费观看黄色录像 | 欧美午夜毛片a级在线 | 日干夜操 | 五月久久婷婷综合片丁香花 | 中文字幕视频在线 | 毛片在线观看网站 | 一级毛片在线观看视频 | 国语高清精品一区二区三区 | dxj久久成国产精品 dxj伊人 | 全免费一级毛片在线播放 | 在线视频www | 最新国产精品好看的国产精品 | 性做久久久久久久久25的美女 | 亚洲国产日韩综合久久精品 |