白圓
【摘要】 隨著社會的進步,人們的生活節(jié)奏也越來越快 ,對電子產(chǎn)品的快速反應(yīng)的需求也越來越大。并行計算技術(shù)是目前提高數(shù)據(jù)處理速率的主要手段,而不管采取什么樣的技術(shù)都離不開硬件的支持,本文簡要介紹了CPU、 FPGA、 GPU、 集群的并行實現(xiàn)結(jié)構(gòu)。
【關(guān)鍵詞】 并行計算 速率 硬件
進程是計算機中的程序關(guān)于某數(shù)據(jù)集合上的一次運行活動,是操作系統(tǒng)進行資源分配和調(diào)度的基本單位,當(dāng)運行一個程序時,也就啟動了一個進程。線程是操作系統(tǒng)能夠進行運算調(diào)度的最小單位。一個進程可以有很多線程,每條線程并行執(zhí)行不同的任務(wù)。在多核或多CPU上,使用多線程程序設(shè)計的好處是顯而易見,即提高了程序的執(zhí)行吞吐率。進程是資源分配的最小單位,線程是CPU調(diào)度的最小單位。線程和進程的區(qū)別在于,子進程和父進程有不同的代碼和數(shù)據(jù)空間,而多個線程則共享數(shù)據(jù)空間,每個線程有自己的執(zhí)行堆棧和程序計數(shù)器為其執(zhí)行上下文。多線程主要是為了節(jié)約CPU時間。
一、CPU的并行
1、多處理器。多處理器系統(tǒng)由分布在不同芯片上的多個處理器組成。多處理器系統(tǒng)可以構(gòu)建在同一塊電路板上,處理器之間通過一個高速通信接口連接。因此,多處理器系統(tǒng)一般有如下特征:包含兩臺及以上功能相近的處理器,并且可以相互交換數(shù)據(jù);所有的處理器共享內(nèi)存、共享I/O通道、控制器和外部設(shè)備;在統(tǒng)一的操作系統(tǒng)的控制下,各處理器實現(xiàn)程序和數(shù)據(jù)的全面并行計算。
2、多核處理器。多核處理器是指在一枚處理器中集成兩個及以上的完整的計算內(nèi)核。通俗的講,就是單個芯片上包含任意多個(如2、4或8)CPU的處理器,各個處理器并行執(zhí)行不同的線程,根據(jù)內(nèi)部核的結(jié)構(gòu)的相同與不同,將其分成同構(gòu)和異構(gòu)兩類。處理器之間通過片外Cache或者是片外的共享存儲器來進行通信。
二、FPGA的并行
FPGA(現(xiàn)場可編程門陣列)是一種由邏輯門組成的硅片,被視為具有極佳并行處理能力的硬件設(shè)備,非常適合高性能計算與海量數(shù)據(jù)處理,如數(shù)字信號處理(DSP)應(yīng)用。FPGA的運行時鐘低于微處理器,但功耗較高。CPU在同一時刻只能執(zhí)行一個任務(wù),CPU里基本的單元是邏輯控制單元來執(zhí)行程序。許多的邏輯單元構(gòu)成的FPGA與CPU內(nèi)部構(gòu)造不一樣,可以把FPGA看成是一推與門,非門,查找表,觸發(fā)器的組合,各元件之間的連線已經(jīng)完全固定,對FPGA編的程序用來選擇哪些相連、哪些斷開,這樣就決定了與門、非門、觸發(fā)器的連接方式。與門、非門、觸發(fā)器根據(jù)外部引腳決定輸出,許許多多的引腳同時變化,F(xiàn)PGA就有不同的輸出,這樣就構(gòu)成了FPGA的并行。FPGA是由三個基本組件構(gòu)成的可編程芯片。首先,在邏輯模塊中,數(shù)據(jù)被計算并處理以得到分析結(jié)果。其次,通過將信號從一個邏輯單元路由至下一個單元的可編程互聯(lián),實現(xiàn)邏輯組塊的互相聯(lián)通。第三,I/ O組塊與芯片的管腳相連,以提供與外圍電路的雙向通信。由于FPGA以并行的方式運行,所以它支持用戶創(chuàng)建任意多的任務(wù)專用核,所有這些任務(wù)專用核以類似于并行電路的方式運行于FPGA芯片中。FPGA邏輯門的并行特質(zhì)支持非常高的數(shù)據(jù)吞吐量,更是遠勝于與其相對應(yīng)的微處理器。
三、GPU的并行
GPU(圖像處理器),是整個顯卡的核心,顯卡是由GPU、顯存等等組成的。由于限制CPU發(fā)展的瓶頸(如:CPU的緩存和控制邏輯對計算速度的影響,處理器到存儲器帶寬的制約)日益突出,研究者們試著從其他領(lǐng)域找到突破口,轉(zhuǎn)而開始重視GPU的發(fā)展,其在處理數(shù)據(jù)、計算能力方面已經(jīng)遠遠超過CPU,而且GPU制作的工作流程并不復(fù)雜,成本低,使得它的應(yīng)用越來越普遍了。GPU設(shè)計者將更多的晶體管用作執(zhí)行單元,而不是像CPU那樣用作復(fù)雜的控制單元和緩存。從實際來看,CPU芯片空間的5%是ALU,而GPU空間的40%是ALU。如果我們把CPU多核的概念放到現(xiàn)在的GPU身上,核心的一個流處理相當(dāng)于一個“核”,GPU的“核”數(shù)量已經(jīng)不再停留在單位數(shù),而是幾十甚至是上百個,因此GPU的擁有很強的并行計算能力。
四、集群上的并行
集群(Cluster)就是將多臺計算機互相連接在一起,構(gòu)成一個并行或分布式系統(tǒng)。根據(jù)處理器的不同,可以分為CPU集群和GPU集群。這些計算機一起工作,并行執(zhí)行一系列共同的應(yīng)用程序。通常由開發(fā)人員指定一臺計算機為主機(Master),監(jiān)控多個從機(Slaves)協(xié)調(diào)完成任務(wù)。從外部來看,它們僅僅是一個系統(tǒng),對外提供統(tǒng)一的服務(wù)。集群內(nèi)的計算機物理上通過電纜連接,程序上則通過集群軟件(如:Hadoop)連接。這些連接允許計算機使用故障應(yīng)急與負載平衡功能。集群主要使用MapReduce這種編程模型,將用戶提交的程序由Master分解成多個線程,分配到多個Slaves上同時執(zhí)行。
五、總結(jié)
數(shù)據(jù)的處理可以分為數(shù)據(jù)的存儲、傳輸、計算。本文所介紹的硬件主要針對的是數(shù)據(jù)的計算,可以分為兩類:多處理器型和FPGA。無論是多核、多處理器、GPU,還是集群,都屬于多處理器型,因為它們的并行是基于線程級的。而FPGA的并行是選擇連線的方式,所以,它的并行是基于硬件的。并行計算方面的硬件需要和數(shù)據(jù)存儲、傳輸方面的硬件相匹配才能達到理想的效果,這將在以后的學(xué)習(xí)中介紹。