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

SIMD

鎖定
SIMD全稱Single Instruction Multiple Data,單指令多數據流,能夠複製多個操作數,並把它們打包在大型寄存器的一組指令集
中文名
單指令多數據流
外文名
Single Instruction Multiple Data
領    域
計算機
功    能
複製操作數,打包指令集

SIMD概念

以同步方式,在同一時間內執行同一條指令。

SIMD性能上優勢

加法指令為例,單指令單數據(SISD)的CPU對加法指令譯碼後,執行部件先訪問內存,取得第一個操作數;之後再一次訪問內存,取得第二個操作數;隨後才能進行求和運算。而在SIMD型的CPU中,指令譯碼後幾個執行部件同時訪問內存,一次性獲得所有操作數進行運算。這個特點使SIMD特別適合於多媒體應用等數據密集型運算。
如:AMD公司引以為豪的3D NOW! 技術實質就是SIMD,這使K6-2、雷鳥、毒龍處理器在音頻解碼、視頻回放、3D遊戲等應用中顯示出優異的性能。

SIMD指令集

使用Z13矢量擴展工具中的SIMD指令集加速社交媒體和大數據工作負載處理。
IBM的z13處理器通過更大容量的緩存,同時多線程,大頁面幀,指令流水線管理和單指令多數據,增加高性能大型機服務器的計算能力
Z13被設計成為大型機提供移動計算能力。並且處理器通過z13矢量擴展設備,迴歸單指令多數據(SIMD)。
SIMD矢量指令能夠加速如C和Java語言的處理。矢量指令對多個數據元素進行並行操作,從而使主機能夠快速處理大量數據。這對於社交媒體和大數據工作負載來説是個福音,但對面臨普通負載的系統程序員來説似乎沒有太大的幫助。
SIMD指令通過多種方式增加吞吐量。大多數機器指令會的結果會覆蓋輸入操作數其中之一不同,大部分SIMD指令集會使用兩個輸入寄存器,並將結果存儲在第三個寄存器。這意味着程序員可以節省與寄存器糾結的時間。
矢量寄存器為128字節長度。前16個寄存器實際上與64位浮點寄存器(FPRs)共存。改變一個FPR同樣會破壞對應矢量寄存器的所有字節。存在一些關於通過程序調用保護矢量寄存器的特殊規則,IBM的Assembler Services Guide有詳細説明。
SIMD向量指令包括所有數學函數浮點模式。同樣也有字符串操作以及用於獲取和存儲數據的方法。
矢量寄存器內容由1、2、4、8或16字節元素組成。矢量指令掩膜指定需要被操縱原件的尺寸。所有矢量指令助記符從V開始,雖然IBM同樣還為特定的元素大小提供了額外的記憶空間,具體可以查閲z13 Principles of Operation手冊低21章24節。
SIMD指令如何工作
加載矢量寄存器的命令看起來很熟悉:
VL V1, D2(X2,B2)
其中V1是矢量寄存器,D2是位移,X2和B2為索引與基地址寄存器
但是,由於矢量寄存器的內容有元素組成,還有指令可以與他們單獨打交道。例子之一就是Vector Load Element指令,可以更新一個元素:
VLEx V1,D2(X2,B2)M3
其中x指定元素的大小,B為字節,H為半字(16位),F為全字以及G為雙字。V1、D2、 X2 與 B2操作數扮演熟悉的角色,但M3的掩膜指定字段的索引並更新。因此VLEH V1,HALFWORD,3會更新矢量寄存器1的第四個半字,並保持其他元素不變。
在常規負載下,SIMD向量負載指令集有多種方法來產生掩膜,從通用寄存器插入元素並從一種矢量包裝元素到寄存器。這與十進制不大一樣——這種能力能減半元素並將其壓縮到另一個寄存器。
Vector register examples
假設我們已經加載了兩個矢量寄存器,每個寄存器有8個半字整數,我們可以將所有元素合在一起,用一條矢量添加指令:
VA V1,V2,V3,M4
本例中,處理器把V2和V3中的半字元素相加並保存在V1中,這樣體現了SIMD指令的非破壞自然屬性。掩膜值應該與半字相同。處理器會將溢出移動到整數符號位,這樣可以使計算有點棘手。
矢量指令同樣也支持字符串函數。只要掌握幾個複雜選項,SIMD字符串功能就能變得更簡單一些,你可以把他們作為硬件實現C語言字符串處理函數。讓我們以Vector Find Element Equal為例:
VFEE V1,V2,V3,M4[,M5]
在高級別上,該指令會比較V2與V3中的元素,並在V1設置相應的標識。掩膜M4表示元素的大小,M5指定兩件事:設置位2告訴處理器比較V2、V3和0。當位4等於1,處理器將會設置條件碼。在任何速率下,指令會從左往右比較第二個和第三個操作數元素。當它發現相等的元素,就會在第一個操作數的第七字節設置元素字節索引。如果沒有元素相等,第一個操作數的第七字節將包含一個與寄存器元素數量相等的字節索引。如果指令發現所有元素都為零,也會進行同樣的操作。 [1] 
參考資料