單指令流多數據流

單指令流多數據流

單指令流多數據流是一種採用一個控制器來控制多個處理器,同時對一組數據(又稱“數據矢量”)中的每一個分別執行相同的操作從而實現空間上的並行性的技術。

概述

單指令流多數據流(英語:Single Instruction Multiple Data,縮寫:SIMD)是一種採用一個控制器來控制多個處理器,同時對一組數據(又稱“數據向量”)中的每一個分別執行相同的操作從而實現空間上的並行性的技術。

在微處理器中,單指令流多數據流技術則是一個控制器控制多個平行的處理微元,例如Intel的MMX或SSE,以及AMD的3D Now!指令集。

圖形處理器(GPU)擁有強大的並發處理能力和可程式流水線,面對單指令流多數據流時,運算能力遠超傳統CPU。OpenCL和CUDA分別是目前最廣泛使用的開源和專利通用圖形處理器(GPGPU)運算語言。

優勢

單指令流多數據流(SIMD)是一種實現數據級並行的技術,其典型代表是向量處理器(Vector Processor)和陣列處理器(Array Processor)。

SIMD技術最初主要套用在大規模的超級計算機中,但是近些年來,小規模SIMD技術也開始在個人計算機上得到廣泛套用。

SIMD技術的關鍵是在1條單獨的指令中同時執行多個運算操作,以增加處理器的吞吐量。為此,SIMD結構的CPU有多個執行部件,但都在同一個指令部件的控制之下,中央控制器向各個處理單元傳送指令,整個系統只要求有一個中央控制器,只要求存儲一份程式,所有的計算都是同步的。

為了了解SIMD在性能上的優勢,我們以加法指令為例進行說明:

單指令流單數據流(SISD)型CPU對加法指令解碼後,執行部件先訪問主存,取得第一個運算元,之後再一次訪問主存,取得第二個運算元,隨後才能進行求和運算;而在SIMD型CPU中,指令解碼後,幾個執行部件同時訪問主存,一次性獲得所有運算元進行運算。

這一特點使得SIMD技術特別適合於多媒體套用等數據密集型運算 。

技術

1 .MMX技術

MMX(Multi-Media Extension,多媒體擴展)是Intel設計的一種SIMD多媒體指令集。作為一種多媒體擴展技術,MMX大大提高了計算機在多媒體和通信套用方面的能力,帶有MMX技術的CPU適合於數據量很大的圖形、圖像數據處理,從而使三維圖形、動畫、視頻、音樂合成、語音識別、虛擬現實等數據處理的速度有了很大提高。

MMX技術的優點是增加了多媒體處理能力,可以一次處理多個數據,缺點則是僅僅只能處理整型數,並且由於占用浮點數暫存器進行運算,以至於MMX指令集與x87浮點運算指令不能夠同時執行,必須做密集的切換才可以正常執行,這種情況勢必造成整個系統運行質量的下降。

2 .SSE技術

1999年,Intel在其Pentium III微處理器中集成了SSE(Streaming SIMD Extensions)技術,有效增強了CPU浮點運算的能力。

SSE兼容MMX指令,可以通過SIMD和單時鐘周期並行處理多個浮點數據來有效提高浮點運算速度,對圖像處理、浮點運算、3D運算、視頻處理、音頻處理等諸多多媒體套用起到全面強化作用。

具有SSE指令集支持的處理器有8個128位的暫存器,每一個暫存器可以存放4個單精度(32位)浮點數。SSE同時提供了一個指令集,其中的指令允許把浮點數載入到這些128位暫存器中,這些數就可以在這些暫存器中進行算術邏輯運算,然後把結果送回主存。也就是說,SSE中的所有計算都可以針對4個浮點數一次性完成,這種批處理帶來了效率的提升。

例如,考慮下面這個任務:計算一個很長的浮點型數組中每一個元素的平方根。

實現這個任務的算法一般可以寫為:

for each f in array

{

把f從主存載入到浮點暫存器

計算平方根

再把計算結果從暫存器中取出寫入主存

}

而在採用SSE技術後,算法可以改寫為:

for each 4 members in array //對數組中的每4個元素

{

把數組中的這4個數載入到一個128位的SSE暫存器中

在一個CPU指令執行周期中完成計算這4個數的平方根的操作

把所得的4個結果取出寫入主存

}

3 .SSE2技術

2001年,Intel配合其Pentium 4微處理器,推出了SSE2(Streaming SIMD Extensions 2)指令集,擴展了SSE指令集,並可完全取代MMX。

SSE2指令集是Intel公司在SSE指令集的基礎上發展起來的。相比於SSE,SSE2使用了144個新增指令,擴展了MMX技術和SSE技術,提高了諸如MPEG-2、MP3、3D圖形等應用程式的運行性能。

在整數處理方面,隨MMX技術引進的SIMD整數指令從64位擴展到了128 位,使SIMD整數類型操作的執行效率成倍提高;在浮點數處理方面,雙精度浮點SIMD指令允許以 SIMD格式同時執行兩個浮點操作,提供雙精度操作支持有助於加速內容創建、財務、工程和科學套用。除SSE2指令之外,最初的SSE指令也得到增強,通過支持多種數據類型(例如雙字、四字)的算術運算,支持靈活、動態範圍更廣的計算功能。

4 .SSE3技術

2004年,Intel在其基於Prescott核心的新款Pentium 4處理器中,開始使用SSE3(Streaming SIMD Extensions 3)技術。

SSE3指令集是Intel公司在SSE2指令集的基礎上發展起來的。相比於SSE2,SSE3在SSE2的基礎上又增加了13條SIMD指令,以提升Intel超執行緒(Hyper-Threading)技術的效能,最終達到提升多媒體和遊戲性能的目的 。

相關詞條

相關搜尋

熱門詞條

聯絡我們