SSE指令集入門

2021-07-15 08:56:54 字數 803 閱讀 7499

intel公司的單指令多資料流式擴充套件(sse,streaming simd extensions)技術能夠有效增強cpu浮點運算的能力。visual studio .net 2003提供了對sse指令集的程式設計支援,從而允許使用者在c++**中不用編寫彙編**就可直接使用sse指令的功能。msdn中有關sse技術的主題[1]有可能會使不熟悉使用sse彙編指令程式設計的初學者感到困惑,但是在閱讀msdn有關文件的同時,參考一下intel軟體說明書(intel software manuals)[2]會使你更清楚地理解使用sse指令程式設計的要點。

simd(single-instruction, multiple-data)是一種使用單道指令處理多道資料流的cpu執行模式,即在乙個cpu指令執行週期內用一道指令完成處理多個資料的操作。考慮一下下面這個任務:計算乙個很長的浮點型陣列中每乙個元素的平方根。實現這個任務的演算法可以這樣寫:

for each  f in array        //對陣列中的每乙個元素

f = sqrt(f)             //計算它的平方根

為了了解實現的細節,我們把上面的**這樣寫:

for each  f in array

具有intel sse指令集支援的處理器有8個128位的暫存器,每乙個暫存器可以存放4個(32位)單精度的浮點數。sse同時提供了乙個指令集,其中的指令可以允許把浮點數載入到這些128位的暫存器之中,這些數就可以在這些暫存器中進行算術邏輯運算,然後把結果放回記憶體。採用sse技術後,演算法可以寫成下面的樣子:

for each  4 members in array  //對陣列中的每4個元素

SSE指令集系列之二

4.資料重排指令集 unpckhps xmm,xmm m128 源儲存器與目的暫存器高64位按雙字交錯排列,結果送入目的暫存器,記憶體變數必須對齊記憶體16位元組.高64位 低64位 目的暫存器 a0 a1 a2 a3 源儲存器 b0 b1 b2 b3 目的暫存器結果 b0 a0 b1 a1 例 當...

SSE3指令集系列

1.資料載入儲存指令 lddquxmm,m128 從非對齊的記憶體位址中載入128位數到xmm暫存器,此條指令比sse2的非對齊載入指令movdqu要快。movddup xmm,xmm m64 載入64bit資料到xmm暫存器的低64位,同時複製到其高64位。movshdup xmm,xmm m12...

mysql bin指令集 mysql指令集

一 連線mysql。1 連線到本機上的mysql。首先開啟dos視窗,然後進入目錄mysql bin,再鍵入命令mysql u root p,回車後提示你輸密碼.注意使用者名稱前可以有空格也可以沒有空格,但是密碼前必須沒有空格,否則讓你重新輸入密碼.如果剛安裝好mysql,超級使用者root是沒有密...