複製鏈接
請複製以下鏈接發送給好友

單指令流多數據流

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

目錄

單指令流多數據流基本信息

單指令流多數據流(英語:Single Instruction Multiple Data,縮寫:SIMD)是一種採用一個控制器來控制多個處理器,同時對一組數據(又稱“數據向量”)中的每一個分別執行相同的操作從而實現空間上的並行性的技術。
微處理器中,單指令流多數據流技術則是一個控制器控制多個平行的處理微元,例如Intel的MMXSSE,以及AMD的3D Now!指令集。
圖形處理器(GPU)擁有強大的併發處理能力和可編程流水線,面對單指令流多數據流時,運算能力遠超傳統CPU。OpenCLCUDA分別是最廣泛使用的開源和專利通用圖形處理器(GPGPU)運算語言。

單指令流多數據流優勢

單指令流多數據流(SIMD)是一種實現數據級並行的技術,其典型代表是向量處理器(Vector Processor)和陣列處理器(Array Processor)。
SIMD技術最初主要應用在大規模的超級計算機中,但是近些年來,小規模SIMD技術也開始在個人計算機上得到廣泛應用。
SIMD技術的關鍵是在1條單獨的指令中同時執行多個運算操作,以增加處理器的吞吐量。為此,SIMD結構的CPU有多個執行部件,但都在同一個指令部件的控制之下,中央控制器向各個處理單元發送指令,整個系統只要求有一箇中央控制器,只要求存儲一份程序,所有的計算都是同步的。
為了瞭解SIMD在性能上的優勢,我們以加法指令為例進行説明:
單指令流單數據流(SISD)型CPU對加法指令譯碼後,執行部件先訪問主存,取得第一個操作數,之後再一次訪問主存,取得第二個操作數,隨後才能進行求和運算;而在SIMD型CPU中,指令譯碼後,幾個執行部件同時訪問主存,一次性獲得所有操作數進行運算。
這一特點使得SIMD技術特別適合於多媒體應用等數據密集型運算 [1] 

單指令流多數據流技術

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)技術的效能,最終達到提升多媒體和遊戲性能的目的 [2] 
參考資料
  • 1.    張效祥.計算機科學技術百科全書:清華大學出版社,2005
  • 2.    尹朝慶.計算機系統結構教程 :清華大學出版社,2005