簡介
單指令流多數據流(single instruction stream multi data stream,SIMD)是一種採用一個控制器來控制多個處理器,同時對一組數據(數據向量)中的每一個分別執行相同的操作從而實現空間上的並行性的技術。在微處理器中,單指令流多數據流技術則是一個控制器控制多個平行的處理微元,例如Intel的MMX或SSE,以及AMD的3D Now!指令集。圖形處理器(GPU)擁有強大的並發處理能力和可程式流水線,面對單指令流多數據流時,運算能力遠超傳統CPU。OpenCL和CUDA分別是廣泛使用的開源和專利通用圖形處理器(GPGPU)運算語言。單指令流多數據流計算機是一個由一台控制器、N台處理機、N個存儲模組以及一個網際網路組成的計算機系統。控制器將指令送至所有的處理即,而所有活動的處理機同時執行同一條指令。這樣,就有一股單指令流。每台活動的處理機與其相連的存儲器中的數據執行指令。這樣,就有多數據流。互連網路有時也叫交換網路,是給處理機與存儲器模組提供通信的設備 。
類型
陣列處理機
陣列處理機是由多個同樣處理單元構成的、適於進行數組計算的處理機。陣列處理機內的各個處理單元是在同一個控制器統一控制下同步工作的。這種處理機是典型的單指令流多數據的計算機。第一台大型陣列處理機llliacIV是由lllinois大學和Burroughs公司於1973年合作完成的,它由64個處理單元和一台Burroughs 6700計算機構成。此後,Burroughs公司又設計了性能更高的BSP (Burroughs scientific processor)陣列處理機。為了滿足圖象處理等領域的套用需求,有些公司又推出一些由大量處理器構成的陣列處理機系統,例如美國的MPP、CM-1、MP-1、MP-2、英國的CLIP和DAP等。CM-1使用了65 536個處理單元,MP-2也由65 536個處理單元構成。為了適應圖象或數位訊號處理等的需要,又推出一些特殊套用的陣列處理機。在陣列處理機中,指令由控制器解碼,所有處理單元同時對不同的數據執行同樣的操作。陣列處理機通常不是一台獨立的計算機,它需要一台宿主計算機作為用戶界面,並將程式和數據裝入陣列處理機。然而在新一代的陣列處理機中,已將宿主計算機的功能集成在一個系統中。陣列處理機可分成分布存儲式和共享存儲式兩種類型。分布存儲式陣列處理機中,每個處理單元包含運算部件和局部存儲器兩部分,各處理單元之間是通過數據交換網路相連的。共享存儲式陣列處理機中處理單元與存儲器模組是通過一個對準網路相連的。
向量計算機
從數學的概念上講,標量(Scalar)是指單個量,而向量(Vector)是指一組標量。一條向量指令可以處理N個或N對運算元,我們把這N個互相獨立的數稱為向量,對這樣一組數的運算稱為向量處理。因此,向量指令的處理效率要比標量指令的處理效率高得多。向量計算機是另一類 SIMD 計算機。它採用 1條或多條流水線,在標量處理機上附加很強的向量處理能力,特別適於做大型科學工程計算。一個向量中的各個元素都要進行同樣的運算, 一個運算(如加法或乘法)可以分成若干個步驟,將執行不同運算步驟的功能部件按先後次序連線形成一條流水線,不等前一個向量元素運算完,下一個向量元素就可以進入流水線。流水線允許多個向量元素在同一時間間隔內執行同一種運算的不同步驟, 即以時間上的重疊實現並行處理,從而提高計算速度。向量計算機往往採用很高的時鐘頻率,非常高速的器件和專門的散熱技術,因而成本較高。Cray公司的YMP和C-90是向量巨型計算機的代表。高性能的大型計算機系統也提供向量處理部件,如VAX9000 和IBM 390/ VF。
並行計算機分類
由於計算機技術十分複雜,很難用一種觀點對並行計算機做精確的分類。較普遍採用的是 M .J .Flynn 於1966 年提出的分類方法,即按指令流與數據流為1個或多個將計算機分為4 類:單指令流單數據流(SISD)、單指令流多數據流( SIMD)、多指令流單數據流 (MISD)和多指令流多數據流( MIMD)計算機。所謂指令流是指計算機執行的指令序列,數據流是由指令流所調用的數據序列。根據上述分類,除 SISD 計算機以外,其餘3類都屬於並行計算機。但是,很難構想一台計算機的多個指令流可以加工同一數據流,因此,多數人認為 MISD 計算機實際上不能實現,也有人認為將同一數據流以流水線方式進入由多個處理機構成的脈動陣列是MISD 計算機。由於對數據流與指令流的理解不一樣,一種計算機可能劃歸不同的類型。例如,最初 Flynn 認為流水線計算機屬於 SISD 計算機,後來他又將流水線計算機歸類於SIMD 計算機。