




已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
SSE編程,華南理工大學 陳虎 博士 ,什么是SIMD,SIMD(Single Instruction Multiple Data): 單指令流多數(shù)據(jù)流) 用一個控制器對一組數(shù)據(jù)(又稱“數(shù)據(jù)向量”)中的每一個分別執(zhí)行相同的操作來實現(xiàn)空間上的并行性 典型實例: Intel的MMX或SSE AMD的3D Now!,Intel的SSE技術(shù),SSE指令集出現(xiàn)在Pentium III處理器中 包括了70條指令,其中50條SIMD浮點運算指令、12條MMX 整數(shù)運算增強指令、8條內(nèi)存連續(xù)數(shù)據(jù)塊傳輸指令。 SSE2指令集: 使用了144個新增指令 從64位擴展到了128 位 提供雙精度操作支持,Intel的SSE技術(shù),SSE3指令集 增加13條指令 超線程性能增強指令可以提升處理器的超線程處理能力 SSE4指令集 共包括16條指令 AVX (Advanced Vector Extensions),預計2010年發(fā)布 數(shù)據(jù)寬度從128位擴展為256位 操作數(shù)從兩個增加到三個,SSE2的寄存器結(jié)構(gòu),IA32 Basic Architecture:圖10-1,SSE1、2的數(shù)據(jù)類型,數(shù)據(jù)總寬度為128位,可以表示成: 四個單精度浮點數(shù) 兩個雙精度浮點數(shù) 16個字節(jié)整數(shù) 8個16位整數(shù) 4個32位整數(shù) 2個64位整數(shù),SSE指令,SSE指令按功能可以分成四組: 封裝和標量單精度浮點指令 64位的SIMD整數(shù)指令 狀態(tài)管理指令 緩存控制,預取和內(nèi)存命令指令,浮點指令,數(shù)據(jù)移動指令(標量、成組) 寄存器到存儲器 存儲器到寄存器 寄存器之間 算術(shù)運算指令(標量、成組) 加、減、乘、除、平方根、最大、最小 比較指令(標量、成組) 混洗指令 轉(zhuǎn)換指令 邏輯操作指令,整數(shù)指令,算術(shù)指令 最大、最小、平均值 數(shù)據(jù)移動指令 混洗指令 MXCSR管理指令 Cache和存儲器控制指令,使用SSE指令的四種方法,編譯器的自動矢量化 使用C+類庫 使用編譯器的內(nèi)嵌原語(Intrinsics) 嵌入?yún)R編語言,四種方式的比較,VC8.0的內(nèi)嵌原語(intrinsics),什么內(nèi)嵌原語: 一條或一組匯編指令 內(nèi)嵌原語格式 _mm_ :指令類別(add、sub) :指令操作數(shù)的類型,內(nèi)嵌原語的數(shù)據(jù)類型,p: 緊密,指令對寄存器中的每個元素進行運算 ep: 擴充緊密 s: 標量,只將寄存器中的第一個元素參與運算,其他說明數(shù)據(jù)類型的關(guān)鍵字有: s 單精度浮點數(shù) d 雙精度浮點數(shù) i128 帶符號128位整型 i64 帶符號64位整型 u64 無符號64位整型 i32 帶符號32位整型 u32 無符號32位整型 i8 帶符號8位整型 u8 無符號8位整型,內(nèi)嵌原語的類別,矩陣變換 讀寫控制寄存器 混洗 Cache控制 數(shù)據(jù)整型操作 存儲操作,置位運算 讀取運算 轉(zhuǎn)換運算 比較操作 邏輯運算 算術(shù)運算,矩陣變換 例:_MM_TRANSPOSE4_PS(row0, row1, row2, row3) 作用:轉(zhuǎn)置一個44的單精度或雙精度元素矩陣,混洗操作 例:_MM_SHUFFLE(z, y, x, w) (z6) | (y4) | (x2) | w 說明: 從第一個操作數(shù)中選取兩個數(shù),從第二個操作數(shù)中選取兩個數(shù),形成一個結(jié)果字,支持Cache控制 _mm_prefetch:預取稍后運行需要的數(shù)據(jù) _mm_stream_pi:把指定位置的數(shù)據(jù)存儲到指定的地址,而不替換cache 整型原語 _mm_extract_pi16: 從4個字中提取一個字 _mm_insert_pi16: 插入一個字 _mm_max_pi16: 計算出最大值 _mm_min_pi16: 計算最小值 讀寫控制寄存器 _MM_SET_EXCEPTION_STATE:設置異常狀態(tài)寄存器 _MM_GET_EXCEPTION_STATE:讀取異常狀態(tài)寄存器 可以操作寄存器還包括:EXCEPTION_MASK(異常屏蔽寄存器)、ROUNDING_MODE(舍入模式寄存器)、FLUSH_ZERO_MODE(清0模式寄存器),存儲操作 _mm_store_ss: 存儲低位值 _mm_store_ps: 存儲4個值,位址對齊 _mm_storer_ps: 存儲4個值,順序相反 讀取運算 _mm_load_ss: 讀取低值,同時清空其他3個高值 _mm_loadr_ps: 以相反的順序讀入4個值 設置運算 _mm_set_ss: 設置低位為1,同時清空其余三個高位值 _mm_set1_ps: 設置所有4個值為同一值 _mm_setzero_ps: 把所有4個值清零,轉(zhuǎn)換運算 _mm_cvtss_si32:轉(zhuǎn)換單精度浮點數(shù)為32位整數(shù) _mm_cvttss_si32:轉(zhuǎn)換單精度浮點數(shù)為32位整數(shù)(帶截斷操作) _mm_cvtpi16_ps :轉(zhuǎn)換16位有符號整數(shù)為單精度浮點數(shù) 比較原語 _mm_cmpeq_ss:是否相等 _mm_cmplt_ps:是否小于 _mm_cmpgt_ps:是否大于 邏輯運算 _mm_and_ps:與運算 _mm_or_ps:或運算 算術(shù)運算 _mm_add_ss:加法 _mm_sub_ps:減法 _mm_mul_ps:乘法,SSE程序?qū)嵗?雙精度三維變換原理,SSE程序?qū)嵗?兩種不同的數(shù)據(jù)結(jié)構(gòu) 數(shù)組-結(jié)構(gòu)(the array-of-structures format(AoS) ) 結(jié)構(gòu)-數(shù)組(the structures-of-arrays data format(SoA) ),數(shù)組-結(jié)構(gòu)(AoS ),結(jié)構(gòu)-數(shù)組(SoA),SSE程序?qū)嵗?for (int i = 0; i dm00); / 取出y(i)和y(i+1) ty = _mm_load_pd(vertex.y + i); mx1 = _mm_mul_pd(ty, WM-dm01); / 取出z(i)和z(i+1) tz = _mm_load_pd(vertex.z + i); mx2 = _mm_mul_pd(tz, WM-dm02); /x(i)=x(i)*m00+y(i)*m01+z(i)*m02+m03 /x(i+1)=x(i+1)*m00+y(i+1)*m01+z(i+1)*m02+m03 mx0 = _mm_add_pd(mx0, _mm_add_pd(mx1, _mm_add_pd(mx2, WM-dm03); /寫入結(jié)果x(i),x(i+1) _mm_store_pd(vertex.x + i, mx0);,/ 計算y(i)和y(i+1) mx0 = _mm_mul_pd(tx, WM-dm10); /tx, ty, tz已經(jīng)事先讀入 mx1 = _mm_mul_pd(ty, WM-dm11); mx2 = _mm_mul_pd(tz, WM-dm12); mx0 = _mm_add_pd(mx0, _mm_add_pd(mx1, _mm_add_pd(mx2, WM-dm13); _mm_store_pd(vertex.y + i, mx0); / 計算z(i)和z(i+1) mx0 = _mm_mul_pd(tx, WM-dm20); mx1 = _mm_mul_pd(ty, WM-dm21); mx2 = _mm_mul_pd(tz, WM-dm22); mx0 = _mm_add_pd(mx0, _mm_add_pd(mx1, _mm_add_pd(mx2, WM-dm23); _mm_store_pd(vertex.z + i, mx0); /計算z(i)和z(i+1) mx0 = _mm_mul_pd(tx, WM-dm30); mx1 = _mm_mul_pd(ty, WM-dm31); mx2 = _mm_mul_pd(tz, WM-dm32); mx0 = _mm_add_pd(mx0, _mm_add_pd(mx1, _mm_add_pd(mx2, WM-dm33); _mm_store
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江漢大學《劇目排練》2023-2024學年第二學期期末試卷
- 海南軟件職業(yè)技術(shù)學院《應用文體翻譯》2023-2024學年第二學期期末試卷
- 遼寧鐵道職業(yè)技術(shù)學院《中學語教學策略與方法》2023-2024學年第二學期期末試卷
- 衡陽師范學院南岳學院《物聯(lián)網(wǎng)系統(tǒng)設計》2023-2024學年第二學期期末試卷
- 湖北職業(yè)技術(shù)學院《固液分離科學與工程》2023-2024學年第二學期期末試卷
- 現(xiàn)代機械系統(tǒng)設計
- 永州師范高等??茖W?!毒W(wǎng)絡音視頻編輯實驗》2023-2024學年第二學期期末試卷
- 榆林學院《中小學歌曲彈唱》2023-2024學年第二學期期末試卷
- 鄭州軌道工程職業(yè)學院《綜合商務英語》2023-2024學年第二學期期末試卷
- 西藏警官高等專科學?!豆こ虩崃W》2023-2024學年第二學期期末試卷
- 4.2依法履行義務 教案 2024-2025學年統(tǒng)編版道德與法治八年級下冊
- 二元一次方程組講義
- 2025江蘇蘇州獅山商務創(chuàng)新發(fā)展集團有限公司及下屬板塊公司招聘10人筆試參考題庫附帶答案詳解
- “輸出軸”零件的機械加工工藝及其鉆端面φ20孔工藝裝備說明書
- 《小型智能滅火機器人的設計》11000字(論文)
- 寶潔波士頓矩陣案例分析課件
- 《13潔凈的水域》教學設計-2023-2024學年科學六年級下冊蘇教版
- 【物理】跨學科實踐制作微型密度計 課件+2024-2025學年物理人教版八年級下冊
- 【MOOC】電子技術(shù)應用實驗2(數(shù)字電路綜合實驗)電子科技大學章節(jié)作業(yè)中國大學慕課答案
- 《雙碳背景下的綠色債券發(fā)展研究國內(nèi)外文獻綜述》3000字
- 2025北京市朝陽區(qū)區(qū)管企業(yè)年輕人才“培優(yōu)”招聘100人高頻重點提升(共500題)附帶答案詳解
評論
0/150
提交評論