當前位置:首頁 » 編程軟體 » 編譯器支持sse

編譯器支持sse

發布時間: 2022-09-18 18:39:38

㈠ C語言此處的運算編譯器會自動優化嗎

這個要看你使用什麼編譯器了。查看編譯器的幫助文檔,它會告訴你它支持那些指令集,並且做哪些可能的優化。

不同的編譯器,是不一樣的。

補充:GCC 不太清楚,你連VC++的版本都不說。汗,VC6是不支持SSE的,需要安裝VC6SP5。
VS2005 和 VS2008 都支持 SSE。對 SSE/MMX 指令集優化得最好的,還是 Intel 的 c++ 編譯器。

對並行和高性能計算,Fortran 的優勢比較大。特別是 Fortran2003 的新特徵,為並行計算做了很多專門的設定。Intel 也有 Fortran 的編譯器。

㈡ 為了能讓編譯器優化,C C++的代碼怎麼寫才好更好地用到SSE的優化

如果用gcc可以使用這個參數-mtune=cpu-type(你的運行處理器類型),這樣編譯會針對該處理器支持的指令集進行優化,如果單獨想支持SSE,可以用-msse。這都是泛泛的優化。

㈢ SSE 4.2的SEE4指令集家族介紹

SSE4的英文全稱是:Streaming SIMD Extensions 4,是英特爾自從SSE2之後對ISA擴展指令集最大的一次的升級擴展。新指令集增強了從多媒體應用到高性能計算應用領域的性能,同時還利用一些專用電路實現對於特定應用加速。
從指令數目上看,SSE4指令增加了的指令改進了整數和浮點操作,支持DWORD和QWORD操作,新的單精度FP操作、快速寄存器操作、面向性能優化的內存操作等等,包括了圖形、圖像、數據裝載各方面的革新,因此稱其為SSE2以來最大的指令集變動也是不為過的。利用支持SSE4指令集的編譯器編譯之後,包括圖形/圖像處理、視頻處理、2D/3D創作、多媒體、游戲、內存敏感負載、高性能計算等應用都會受益。
SSE4指令集分為兩個版本:4.1和4.2,SSE4.1版本隨著45nm Penryn發布,而SSE4.2版本會隨著下一代架構Nehalem發布,4.1包括47條指令,4.2包括7條指令。 據Intel指出,在應用SSE4指令集後,Penryn增加了2個不同的32Bit向量整數乘法運算支持,引入了8位無符號 (Unsigned)最小值及最大值運算,以及16Bit 及32Bit 有符號 (Signed) 及無符號運算,並有效地改善編譯器效率及提高向量化整數及單精度代碼的運算能力。同時,SSE4 改良插入、提取、尋找、離散、跨步負載及存儲等動作,令向量運算進一步專門化。
不僅如此,Intel SSE4指令集還進一步增強訊編碼效果,例如可同時處理8個4-byte寬度的SAD(Sums of Absolute Differences)運算,常用於新一代高清影像編碼如VC.1及H.264等規格中,令視頻編碼速度進一步提升。因此在播放高清視頻的時候,即使在軟解的情況下也同樣游刃有餘。
有效地改善編譯器效率及提高向量化整數及單精度代碼的運算能力
SSE4 構建於英特爾64 指令集架構 (Intel 64 Instruction Set Architecture) (ISA),該架構是開發 32 位和 64 位應用最為廣泛應用的電腦架構。Intel SSE4 包含 54 條指令,主要分為兩類:矢量化編譯器和媒體加速器,以及高效加速字元串和文本處理。矢量化編譯器和媒體加速器可提供高性能的編譯器函數庫,如封包(同時使用多個操作數)整數運算和浮點運算,可生成性能優化型代碼。此外,它還包括高度優化的媒體相關運算,如絕對差值求和、浮點點積和內存負載等。矢量化編譯器和媒體加速器指令可改進音頻、視頻和圖像編輯應用、視頻編碼器、3D 應用和游戲的性能。高效加速字元串和文本處理包含多個壓縮字元串比較指令,允許同時運行多項比較和搜索操作。由此受益的應用包括資料庫和數據採掘應用,以及那些利用病毒掃描和編譯器等分析、搜索和模式匹配演算法的應用。
SSE4加入了6條浮點型點積運算指令
SSE4加入了6條浮點型點積運算指令,支持單精度、雙精度浮點運算及浮點產生操作,且IEEE 754指令 (Nearest, -Inf, +Inf, and Truncate) 可立即轉換其路徑模式,大大減少延誤,這些改變會對游戲及 3D 內容製作應用有重要意義。此外,SSE4加入串流式負載指令,可提高以圖形幀緩沖區的讀取數據頻寬,理論上可獲取完整的快取緩存行,即每次讀取64Bit而非8Bit,並可保持在臨時緩沖區內,讓指令最多可帶來8倍的讀取頻寬效能提升,對於視訊處理、成像以及圖形處理器與中央處理器之間的共享數據應用,有著明顯的效能提升。 Nehalem微架構最高支持4顆處理器的Quick Path多路伺服器環境,單一晶元最高可擁有2、4及8顆核心,支持經改良的Hyper-Theading技術,令單顆處理器最高可支持16 Threads,而且Nehalem架構中的Havendale亦會內建繪圖核心。新增SSE4.2指令集及ATA指令集令系統性能全面提升,令人期待。此外,新一代Nehalem會放棄FSB設計,採用全新的Quick Path Interconnect架構,已得知伺服器版本的Nehalem處理器最高可擁有4組Quick Path Interconnect,並至少可組成四顆處理器的數據可直接互換的4Ways伺服器架構。
Nehalem搭配了高速三級緩存
英特爾每次在緩存和指令集上的小小改進都會對處理器的性能產生質的變化。最新的45nm Nehalem產品中會出現第二代SSE4技術,這比45nm處理器更為強大,可以看成是一種流SIMD擴展:SSE 4.2。據了解,Nehalem包含一個全新的ATA中心和文字與字元串處理引擎,這意味著該處理器對於文本的處理性能有很大提升。此外,基於XML文件作為病毒定義的反病毒軟體也可能因此而受益。
對於Nehalem的SSE4.2,Intel的Gelsinger介紹說,這7條指令集的用途各有不同,比如有面向CRC-32和POP Counts等特定應用的,有特別針對XML等的流式指令。Gelsinger稱,新指令集可以把256條指令合並在一起執行,從而讓XML類工作的性能提高3倍。
Nehalem性能相比上一代提升30%
預計在2009年的第二季末,Intel會推出內建繪圖核心的處理器,核心代號為Havendale,這是一顆針對主流級市場的雙核心處理器,採用45nm製程,支持SMT(Simultaneous Multi-Threading),L2 Cache容量最高為4M。雖然同樣內建內存控制器及PCI-Express繪圖介面,但它卻不是原生設計,Havandale把繪圖核心、PCI-Express繪圖介面及內存控制器製作成一顆晶元,與處理器核心採用MCP(Multi-Chip Package)封裝在一起,兩者採用Quick Path Interconnect連接。相信大家更關心的是Intel能否真的把CPU和GPU真正的同一! Intel最新45nm處理器還加入了0.5倍頻調節,增加了SSE4指令集,Wolfdale增加了2個不同的32Bit向量整數乘法運算支持,引入了8 位無符號 (Unsigned)最小值及最大值運算,以及16Bit 及32Bit 有符號 (Signed) 及無符號運算,並有效地改善編譯器效率及提高向量化整數及單精度代碼的運算能力。同時,SSE4 改良插入、提取、尋找、離散、跨步負載及存儲等動作,令向量運算進一步專門化。
此外,SSE4加入串流式負載指令,可提高以圖形幀緩沖區的讀取數據頻寬,理論上可獲取完整的快取緩存行,即每次讀取64Bit而非8Bit,並可保持在臨時緩沖區內,讓指令最多可帶來8倍的讀取頻寬效能提升,對於視訊處理、成像以及圖形處理器與中央處理器之間的共享數據應用,有著明顯的效能提升。
在SSE4指令集中,共引入了47條新的多媒體運算指令。其中一條「streaming load instruction」流載入指令引起了廣泛的注意。該指令為16bit同步載入指令,但載入結果會存儲在高優先順序的臨時流緩沖中,繞過普通的CPU Cache。這一指令有利於GPU從CPU中高速共享數據,加速圖像處理。
從Intel 45nm產品的性能以及規格來看都要比上一代的65nm產品有了長足的進步,同時在超頻潛力上又有了一個質的飛躍。這讓更多的I飯們看到沖擊極限的希望。而且由於45nm製程在成本上會更低,因此在中低端市場的競爭中Intel 45nm製程的新處理器更具有沖擊力。

㈣ 如何在Visual Studio 2008中啟用SSE / SSE2指令集

Intel CPU擴展指令集於CPU說基本功能面差別並太基本指令集都差許廠家提升某面性能發擴展指令集擴展指令集定義新數據指令能夠提高某面數據處理能力必需要軟體支持面我i7處理器看看歷代Intel指令集都哪些:MMX指令集 MMX(Multi Media eXtension媒體擴展指令集)指令集Intel公司於1996推項媒體指令增強技術MMX指令集包括57條媒體指令通些指令處理數據處理結超實際處理能力候能進行處理軟體配合更高性能MMX益處於存操作系統必做任何修改便輕松執行MMX程序問題比較明顯MMX指令集與x87浮點運算指令能夠同執行必須做密集式交錯切換才執行種情況勢必造整系統運行質量降 MMX指令集Intel代表處理器:Pentium MMXSSE指令集SSE(Streaming SIMD Extensions單指令數據流擴展)指令集IntelPentium III處理器率先推其實早PIII式推前Intel公司曾經通各種渠道公布所謂KNI(Katmai New Instruction)指令集指令集SSE指令集前身並度傳媒稱MMX指令集版本即MMX2指令集究其背景原"KNI"指令集Intel公司早其代晶元命名指令集名稱所謂"MMX2"則完全硬體評論家媒體憑覺印象"KNI" 評價Intel公司未式發布關於MMX2消息終推SSE指令集所謂勝"互聯網SSE"指令集SSE指令集包括70條指令其包含提高3D圖形運算效率50條SIMD(單指令數據技術)浮點運算指令、12條MMX 整數運算增強指令、8條優化內存連續數據塊傳輸指令理論些指令目前流行圖像處理、浮點運算、3D運算、視頻處理、音頻處理等諸媒體應用起全面強化作用SSE指令與3DNow!指令彼互兼容SSE包含3DNow!技術絕部功能實現同SSE兼容MMX指令通SIMD單鍾周期並行處理浮點數據效提高浮點運算速度 SSE指令集Intel代表處理器:Pentium IIISSE2指令集

SSE2(Streaming SIMD Extensions 2Intel官稱SIMD流技術擴展2或數據流單指令數據擴展指令集2)指令集Intel公司SSE指令集基礎發展起相比於SSESSE2使用144新增指令擴展MMX技術SSE技術些指令提高廣應用程序運行性能隨MMX技術引進SIMD整數指令64位擴展128 位使SIMD整數類型操作效執行率倍提高雙倍精度浮點SIMD指令允許 SIMD格式同執行兩浮點操作提供雙倍精度操作支持助於加速內容創建、財務、工程科應用除SSE2指令外初SSE指令增強通支持種數據類型(例雙字四字)算術運算支持靈並且態范圍更廣計算功能SSE2指令讓軟體發員極其靈實施算並運行諸MPEG-2、MP3、3D圖形等類軟體增強性能IntelWillamette核Pentium 4始支持SSE2指令集AMD則K8架構SledgeHammer核Opteron始才支持SSE2指令集 SSE2指令集Intel代表處理器:Pentium 4SSE3指令集

SSE3(Streaming SIMD Extensions 3Intel官稱SIMD流技術擴展3或數據流單指令數據擴展指令集3)指令集Intel公司SSE2指令集基礎發展起相比於SSE2SSE3SSE2基礎增加13額外SIMD指令SSE313新指令主要目改進線程同步特定應用程序領域例媒體游戲些新增指令強化處理器浮點轉換至整數、復雜算、視頻編碼、SIMD浮點寄存器操作及線程同步等五面表現終達提升媒體游戲性能目IntelPrescott核Pentium 4始支持SSE3指令集AMD則2005半Troy核Opteron始才支持SSE3需要注意AMD所支持SSE3與IntelSSE3並完全相同主要刪除針Intel超線程技術優化部指令 SSE3指令集Intel代表處理器:基於Prescott核新Pentium 4SSSE3指令集SSSE3(Supplemental Streaming SIMD Extensions 3)內置於Intel公司微處理器媒體關聯擴張指令集擴張SSE3產品於20067月首裝載Core 2 Duo處理器SSE3裝載用命令口氣處理復數數據「SIMD」處理式特別處理語音畫關聯能夠高速發揮力量SSSE3 SSE3命令基礎添加32新命令產品其原名TNISSE4指令集集,包含13條命令目前SSSE3先進指令集增強CPU媒體、圖形圖象Internet等處理能力 SSSE3指令集Intel代表處理器:65nm 酷睿2SSE4指令集兩支:SSE4.1 + SSE4.2SSE4指令集認2001Intel重要指令集擴展包含54條指令 IntelPenryn處理器加入SSE4.1支持共增加47條新指令提升處理器圖形、3D圖像與游戲、視頻編碼與影音處理等面性能表現本Nehalem處理器進步支持SSE4.2指令集SSE4.2完整實現SSE4指令集相於SSE4.1加入7條新指令 SSE4.1指令集45納米加入SSE4.1指令集令處理器媒體處理能力70%提升SSE4加入6條浮點型點積運算指令支持單精度、雙精度浮點運算及浮點產操作且IEEE 754指令 (Nearest, -Inf, +Inf, and Truncate) 立即轉換其路徑模式減少延誤些改變游戲及 3D 內容製作應用重要意義外SSE4加入串流式負載指令提高圖形幀緩沖區讀取數據頻寬理論獲取完整快取緩存行即每讀取64Bit非8Bit並保持臨緩沖區內讓指令帶8倍讀取頻寬效能提升於視訊處理、像及圖形處理器與央處理器間共享數據應用著明顯效能提升SSE4指令集讓45nm Penryn處理器增加2同32Bit向量整數乘運算單元並加入8位符號(Unsigned)值及值運算及16Bit及32Bit符號 (Signed) 運算面支持SSE4指令集軟體效改善編譯器效率及提高向量化整數及單精度代碼運算能力同SSE4改良插入、提取、尋找、離散、跨步負載及存儲等作令向量運算進步專門 SSE4.1指令集Intel代表處理器:45nm 酷睿2SSE4.2指令集 Nehalem架構Core i7處理器SSE4.2指令集引入加入STTNI(字元串文本新指令)ATA(面向應用加速器)兩優化指令SSE4.2新加入幾條新指令兩類第類字元串與文本新指令STTNISTTNI包含四條具體指令STTNI指令兩16位數據進行匹配操作加速XML析面性能據Intel表示新指令XML析面取3.8倍性能提升第二類指令面向應用加速指令ATAATA包括冗餘校驗CRC32指令、計算源操作數非0位數POPCNT指令及於打包64位算術運算SIMD指令CRC32指令取代層數據協議經用循環冗餘校驗據Intel表示其加速比達6.5~18.6倍;POPCNT用於提高DNA基配、聲音識別等包含數據集進行模式識別搜索等操作應用程序性能 Intel公布支持新指令集發工具些工具涵蓋主流編譯發環境目前已明確支持SSE4.2發環境包括:Intel C++ Compiler 10.X、微軟Visual Studio 2008 VC++、GCC 4.3.1、Sun Studio Express等程序員直接使用高級編程語言編程編譯器自優化結程序員用內嵌匯編式達目 SSE4指令集Intel代表處理器:45nm i7

㈤ Intel的編譯器有哪些

1、Intel 編譯支持 IA-32、Intel 64、Itanium 2、Intel Atom 處理器和某些非 Intel 的兼容處理器(例如某些 AMD 處理器)。開發人員應當檢查系統需求。適用於 IA-32 和 Intel 64 的 Intel C++ 編譯器的主要特點是自動向量化器,它能夠生成 SSE、SSE2 和 SSE3 的 SIMD 指令及其適用於 Intel 無線 MMX 和 MMX 2 的嵌入式變種。
2、Intel C++ Compiler 進一步支持 OpenMP 3.0 和適用於對稱多處理的自動並行化。藉助於 Cluster OpenMP 的附加能力,編譯器還可為分布存儲多處理根據 OpenMP 指示自動生成消息傳遞介面調用。
3、Intel C++ Compiler 可通過四種方式獲得,它分別是 Intel Parallel Studio、Intel C++ Compiler 專業版、Intel 編譯器套裝和 Intel Cluster Toolkit 編譯器版的一部分。該編譯器的最新發布是 Intel C++ Compiler 14.0 版本.

㈥ 使用gcc編譯器編譯sse指令的程序時需要引入什麼庫

#include <intrin.h>

㈦ 關於CPU指令集,電腦系統,軟體的關系

Intel CPU的擴展指令集對於CPU來說,在基本功能方面,它們的差別並不太大,基本的指令集也都差不多,但是許多廠家為了提升某一方面性能,又開發了擴展指令集,擴展指令集定義了新的數據和指令,能夠大大提高某方面數據處理能力,但必需要有軟體支持,下面我們來i7處理器看一看歷代Intel指令集都有哪些:MMX指令集 MMX(Multi Media eXtension,多媒體擴展指令集)指令集是Intel公司於1996年推出的一項多媒體指令增強技術。MMX指令集中包括有57條多媒體指令,通過這些指令可以一次處理多個數據,在處理結果超過實際處理能力的時候也能進行正常處理,這樣在軟體的配合下,就可以得到更高的性能。MMX的益處在於,當時存在的操作系統不必為此而做出任何修改便可以輕松地執行MMX程序。但是,問題也比較明顯,那就是MMX指令集與x87浮點運算指令不能夠同時執行,必須做密集式的交錯切換才可以正常執行,這種情況就勢必造成整個系統運行質量的下降。 MMX指令集Intel代表處理器:Pentium MMXSSE指令集SSE(Streaming SIMD Extensions,單指令多數據流擴展)指令集是Intel在Pentium III處理器中率先推出的。其實,早在PIII正式推出之前,Intel公司就曾經通過各種渠道公布過所謂的KNI(Katmai New Instruction)指令集,這個指令集也就是SSE指令集的前身,並一度被很多傳媒稱之為MMX指令集的下一個版本,即MMX2指令集。究其背景,原來"KNI"指令集是Intel公司最早為其下一代晶元命名的指令集名稱,而所謂的"MMX2"則完全是硬體家們和媒體憑感覺和印象對"KNI"的 評價,Intel公司從未正式發布過關於MMX2的消息。而最終推出的SSE指令集也就是所謂勝出的"互聯網SSE"指令集。SSE指令集包括了70條指令,其中包含提高3D圖形運算效率的50條SIMD(單指令多數據技術)浮點運算指令、12條MMX 整數運算增強指令、8條優化內存中連續數據塊傳輸指令。理論上這些指令對目前流行的圖像處理、浮點運算、3D運算、視頻處理、音頻處理等諸多多媒體應用起到全面強化的作用。SSE指令與3DNow!指令彼此互不兼容,但SSE包含了3DNow!技術的絕大部分功能,只是實現的方法不同。SSE兼容MMX指令,它可以通過SIMD和單時鍾周期並行處理多個浮點數據來有效地提高浮點運算速度。 SSE指令集Intel代表處理器:Pentium IIISSE2指令集 SSE2(Streaming SIMD Extensions 2,Intel官方稱為SIMD流技術擴展2或數據流單指令多數據擴展指令集2)指令集是Intel公司在SSE指令集的基礎上發展起來的。相比於SSE,SSE2使用了144個新增指令,擴展了MMX技術和SSE技術,這些指令提高了廣大應用程序的運行性能。隨MMX技術引進的SIMD整數指令從64位擴展到了128 位,使SIMD整數類型操作的有效執行率成倍提高。雙倍精度浮點SIMD指令允許以 SIMD格式同時執行兩個浮點操作,提供雙倍精度操作支持有助於加速內容創建、財務、工程和科學應用。除SSE2指令之外,最初的SSE指令也得到增強,通過支持多種數據類型(例如,雙字和四字)的算術運算,支持靈活並且動態范圍更廣的計算功能。SSE2指令可讓軟體開發員極其靈活的實施演算法,並在運行諸如MPEG-2、MP3、3D圖形等之類的軟體時增強性能。Intel是從Willamette核心的Pentium 4開始支持SSE2指令集的,而AMD則是從K8架構的SledgeHammer核心的Opteron開始才支持SSE2指令集的。 SSE2指令集Intel代表處理器:老Pentium 4SSE3指令集 SSE3(Streaming SIMD Extensions 3,Intel官方稱為SIMD流技術擴展3或數據流單指令多數據擴展指令集3)指令集是Intel公司在SSE2指令集的基礎上發展起來的。相比於SSE2,SSE3在SSE2的基礎上又增加了13個額外的SIMD指令。SSE3中13個新指令的主要目的是改進線程同步和特定應用程序領域,例如媒體和游戲。這些新增指令強化了處理器在浮點轉換至整數、復雜演算法、視頻編碼、SIMD浮點寄存器操作以及線程同步等五個方面的表現,最終達到提升多媒體和游戲性能的目的。Intel是從Prescott核心的Pentium 4開始支持SSE3指令集的,而AMD則是從2005年下半年Troy核心的Opteron開始才支持SSE3的。但是需要注意的是,AMD所支持的SSE3與Intel的SSE3並不完全相同,主要是刪除了針對Intel超線程技術優化的部分指令。 SSE3指令集Intel代表處理器:基於Prescott核心新Pentium 4SSSE3指令集SSSE3(Supplemental Streaming SIMD Extensions 3)內置於Intel公司微處理器中的多媒體關聯的擴張指令集。是擴張了SSE3的產品,於2006年7月首次裝載在Core 2 Duo處理器中SSE3裝載了用一個命令一口氣處理復數個數據的「SIMD」的處理方式,特別在處理語音和動畫關聯上能夠高速地發揮力量。SSSE3是在 SSE3命令的基礎上又添加了32個新命令的產品,其原名為TNI,是SSE4指令集的子集,包含有13條命令。目前SSSE3也是最先進的指令集,增強了CPU的多媒體、圖形圖象和Internet等的處理能力。 SSSE3指令集Intel代表處理器:65nm 酷睿2SSE4指令集的兩個分支:SSE4.1 + SSE4.2SSE4指令集被認為是2001年以來Intel最重要的指令集擴展,包含54條指令。 Intel在Penryn處理器中加入了對SSE4.1的支持,共增加了47條新指令,提升了處理器在圖形、3D圖像與游戲、視頻編碼與影音處理等方面的性能表現。本次在Nehalem處理器中,進一步支持了SSE4.2指令集。SSE4.2完整的實現了SSE4指令集,相對於SSE4.1加入了7條新指令。 SSE4.1指令集45納米加入了SSE4.1指令集,令處理器的多媒體處理能力得到最大70%的提升。SSE4加入了6條浮點型點積運算指令,支持單精度、雙精度浮點運算及浮點產生操作,且IEEE 754指令 (Nearest, -Inf, +Inf, and Truncate) 可立即轉換其路徑模式,大大減少延誤,這些改變將對游戲及 3D 內容製作應用有重要意義。此外,SSE4加入串流式負載指令,可提高以圖形幀緩沖區的讀取數據頻寬,理論上可獲取完整的快取緩存行,即每次讀取64Bit而非8Bit,並可保持在臨時緩沖區內,讓指令最多可帶來8倍的讀取頻寬效能提升,對於視訊處理、成像以及圖形處理器與中央處理器之間的共享數據應用,有著明顯的效能提升。SSE4指令集讓45nm Penryn處理器增加了2個不同的32Bit向量整數乘法運算單元,並加入8位無符號(Unsigned)最小值及最大值運算,以及16Bit及32Bit有符號 (Signed) 運算。在面對支持SSE4指令集的軟體時,可以有效的改善編譯器效率及提高向量化整數及單精度代碼的運算能力。同時,SSE4改良插入、提取、尋找、離散、跨步負載及存儲等動作,令向量運算進一步專門。 SSE4.1指令集Intel代表處理器:45nm 酷睿2SSE4.2指令集 在Nehalem架構的Core i7處理器中,SSE4.2指令集被引入,加入了STTNI(字元串文本新指令)和ATA(面向應用的加速器)兩大優化指令。SSE4.2新加入的幾條新指令有兩類。第一類是字元串與文本新指令STTNI,STTNI包含了四條具體的指令。STTNI指令可以對兩個16位的數據進行匹配操作,以加速在XML分析方面的性能。據Intel表示,新指令可以在XML分析方面取得3.8倍的性能提升。第二類指令是面向應用的加速指令ATA。ATA包括冗餘校驗的CRC32指令、計算源操作數中非0位個數的POPCNT指令,以及對於打包的64位算術運算的SIMD指令。CRC32指令可以取代上層數據協議中經常用到的循環冗餘校驗,據Intel表示其加速比可以達到6.5~18.6倍;POPCNT用於提高在DNA基因配對、聲音識別等包含大數據集中進行模式識別和搜索等操作的應用程序性能。 Intel也公布了支持新指令集的開發工具。這些工具涵蓋了主流的編譯開發環境。目前已明確支持SSE4.2的開發環境包括:Intel C++ Compiler 10.X、微軟的Visual Studio 2008 VC++、GCC 4.3.1、Sun Studio Express等。程序員可以直接使用高級編程語言編程,編譯器會自動生成優化結果。當然程序員也可以用內嵌匯編的方式來達到目的。 SSE4指令集Intel代表處理器:45nm i7

㈧ 如何使用SSE指令集編寫應用程序

1、編譯器的自動矢量化

-mfpmath=sse

僅建議在P4和K8以上級別的處理器上使用該選項。

-mmmx

-msse
-msse2
-msse3
-m3dnow
-mssse3(gcc-4.3新增)
-msse4.1(gcc-4.3新增)
-msse4.2(gcc-4.3新增)
-msse4(含4.1和4.2,gcc-4.3新增)
是否使用相應的擴展指令集以及內置函數,需要按照自己的cpu做選擇。

2、使用C/C++類庫

目前,GNU
GCC等大多數編譯器都提供了對SSE指令集的變成支持,允許用戶在C++代碼中不用編寫匯編代碼,就可以直接通過調用庫函數而直接使用SSE指令。

3、使用編譯器的內嵌原語(Intrinsics)

SSE的intrinsics的規則

_mm_<opcode>_<suffix>

其中,<opcode>是指令的類別,像add、sub等等,<suffix>是指令的種類。在SSE浮點運算指令中,只有兩種:ps和ss。

ps:Packed
Single-precision,指對寄存器中的四個單精度浮點同時進行運算。

ss:Scaler
Single-precision,指對寄存器中的DATA0進行運算。

編程時需要包含下表所示的頭文件:

mmintrin.h

MMX

xmmintrin.h

SSE

emmintrin.h

SSE2

pmmintrin.h

SSE3

tmmintrin.h

SSSE3

intrin.h

SSE4A

smmintrin.h

SSE4.1

nmmintrin.h

SSE4.2

mm3dnow.h

3DNOW

說明:如果導入一個高版本的指令集頭文件,那麼一般就不需要在導入低版本的指令了。

4、使用內嵌匯編

指令語法特徵

如:PADDUSW(無符號飽和模式的字組相加)

前綴:P代表成組數據類型

操作指令:如ADD、SUB等

後綴:US為無符號飽和處理

S為有符號飽和處理

B、W、D、Q分別為位元組組、字組、雙字組、四字。

GCC的asm結構

用匯編編寫的程序運行速度快,但開發速度非常慢,效率也很低。如果只是想對關鍵代碼段進行優化,更好的辦法是將匯編指令嵌入到C語言程序中,充分利用高級語言和匯編語言各自的優點。一般來講,在C代碼中嵌入匯編語句要比「純粹」的匯編語言代碼復雜的多,因為需要解決如何分配寄存器,以及如何與C代碼中的變數相結合等問題。內聯匯編能夠靈活操作,而且可以使其輸出通過C變數顯示出來。因為它具有這種能力,所以asm可以用作匯編指令和C程序之間的介面。使用__asm__關鍵字,如果超過一行的指令,每行要加上雙引號,並且後面加上\n\t。如果希望確保編譯器不會在「asm」內部優化指令,可以在「__asm__」後面使用關鍵字「volatile」。

內聯匯編的基本要素

具體語法結構,請看我的一篇博文:《GCC內嵌匯編》文章連接:

http://blog.chinaunix.net/u3/119372/showart_2417924.html

基本要素說明:

限定符

意義

「m」 「v」 「o」

內存單元

「r」

任意寄存器

「q」

寄存器eax,ebx,ecx,edx之一

「i」 「h」

直接操作數

「E」 「F」

浮點數

「g」

任意

「a」 」b」 」c」 」d」

分別表示寄存器eax,ebx,ecx,edx

「S」 」D」

寄存器esi,edi

「I」

常數(0至31)

5、SSE編程注意事項

數據對齊

CPU內存單元以16Byte為邊界,如果數據在運算之前不進行對齊,會是指令運算產生大量延時。

GCC:

float
__attribute__((aligned(16))) a[4]={1.2f,3.5f,1.7f,2.8f};

VC:

__declspec(align(16)) float a[4]={1.2f,3.5f,1.7f,2.8f};

㈨ 哪些CPu支持SSE4.1

SSE4。1 矢量化編譯器和媒體加速器指令,在4。0的基礎上加入了6條浮點型點積運算指令,支持單精度、雙精度浮點運算及浮點產生操作。說白了就是視頻圖象優化指令。對3D應用作用不大。

它是對視頻壓縮,編碼作用大(視頻圖象製作處理),對看電影作用不大。

㈩ VC 6中如何編譯使用了SSE、SSE2 、MMX、3Dnow指令的程序

我來個全一點的。
(1)MMX指令集
1997年Inter公司推出了多媒體擴展指令集(MMX),它包括57條多媒體指令。MMX指令主要用於增強CPU對多媒體信息的處理能力,提高CPU處理3D圖形、視頻和音頻信息的能力。
(2)SSE指令集
由於MMX指令並沒有帶來3D游戲性能的顯著提升,所以,1999年Inter公司在Pentium III CPU產品中推出了數據流單指令序列擴展指令(SSE)。SSE兼容MMX指令,它可以通過SIMD(單指令多數據技術)和單時鍾周期並行處理多個浮點來有效地提高浮點運算速度。
在MMX指令集中,借用了浮點處理器的8個寄存器,這樣導致了浮點運算速度降低。而在SSE指令集推出時,Inter公司在Pentium III CPU中增加了8個128位的SSE指令專用寄存器。而且SSE指令寄存器可以全速運行,保證了與浮點運算的並行性。
(3)SSE2指令集
在Pentium 4 CPU中,Inter公司開發了新指令集SSE2。這一次新開發的SSE2指令一共144條,包括浮點SIMD指令、整形SIMD指令、SIMD浮點和整形數據之間轉換、數據在MMX寄存器中轉換等幾大部分。其中重要的改進包括引入新的數據格式,如:128位SIMD整數運算和64位雙精度浮點運算等。為了更好地利用高速緩存。另外,在Pentium 4中還新增加了幾條緩存指令,允許程序員控制已經緩存過的數據。
(4)SSE3指令集
相對於SSE2,SSE3又新增加了13條新指令,此前它們被統稱為pni(prescott new instructions)。13條指令中,一條用於視頻解碼,兩條用於線程同步,其餘用於復雜的數學運算、浮點到整數轉換和SIMD浮點運算。
(5)SSE4指令集
SSE4又增加了50條新的增加性能的指令,這些指令有助於編譯、媒體、字元/文本處理和程序指向加速。
SSE4指令集將作為Inter公司未來「顯著視頻增強」平台的一部分。該平台的其他視頻增強功能還有Clear Video技術(CVT)和統一顯示介面(UDI)支持等,其中前者是對ATi AVIVO技術的回應,支持高級解碼、後處理和增強型3D功能。
(6)3D Now!擴展指令集
3D Now!指令集是AMD公司1998年開發的多媒體擴展指令集,共有21條指令。針對MMX指令集沒有加強浮點處理能力的弱點,重點提高了AMD公司K6系列CPU對3D圖形的處理能力。由於指令有限,3D Now!指令集主要用於3D游戲,而對其他商業圖形應用處理支持不足。
(7)X86指令集
要知道什麼是指令集還要從當今的X86架構的CPU說起。X86指令集是Intel為其第一塊16位CPU(i8086)專門開發的,IBM1981年推出的世界第一台PC機中的CPU—i8088(i8086簡化版)使用的也是X86指令,同時電腦中為提高浮點數據處理能力而增加的X87晶元系列數學協處理器則另外使用X87指令,以後就將X86指令集和X87指令集統稱為X86指令集。雖然隨著CPU技術的不斷發展,Intel陸續研製出更新型的i80386、i80486直到今天,但為了保證電腦能繼續運行以往開發的各類應用程序以保護和繼承豐富的軟體資源,所以Intel公司所生產的所有CPU仍然繼續使用X86指令集,所以它的CPU仍屬於X86系列。由於Intel X86系列及其兼容CPU都使用X86指令集,所以就形成了今天龐大的X86系列及兼容CPU陣容。
(8)EM64T指令集
Inter公司的EM64T(Extended Memory 64 Technology)即64位內存擴展技術。該技術為伺服器和工作站平台應用提供擴充的內存定址能力,擁有更多的內存地址空間,可帶來更大的應用靈活性,特別有利於提升音頻視頻編輯、CAD設計等復雜工程軟體及游戲軟體的應用。
我們常說的64位指的是AMD公司出的64位CPU,而EM64T則是Inter公司按照自己的意思理解出來的64位,也就是和AMD公司的64位對應的另一種叫法。
(9)RISC指令集
RISC指令集是以後高性能CPU的發展方向。它與傳統的CISC(復雜指令集)相對。相比而言,RISC的指令格式統一,種類比較少,定址方式也比復雜指令集少。目前使用RISC指令集的體系結構主要有ARM、MIPS。
(10)3DNow!+指令集
在原有的指令集基礎上,增加到52條指令,其中包含了部分SSE指令,該指令集主要用於新型的AMD CPU上。

熱點內容
把音頻文件編譯進程序 發布:2025-04-15 13:05:13 瀏覽:479
獨立開發android 發布:2025-04-15 12:52:45 瀏覽:73
主變保護裝置怎麼配置 發布:2025-04-15 12:47:17 瀏覽:82
數組轉化為字元串php 發布:2025-04-15 12:33:10 瀏覽:446
fms資料庫 發布:2025-04-15 12:33:02 瀏覽:660
安卓手機來源於哪個國家 發布:2025-04-15 12:23:12 瀏覽:872
我的世界伺服器怎麼設置領地語 發布:2025-04-15 12:14:11 瀏覽:613
伺服器電腦和硬碟錄像機 發布:2025-04-15 12:13:36 瀏覽:56
php在線時間 發布:2025-04-15 12:13:22 瀏覽:971
iphonevpn怎麼配置 發布:2025-04-15 12:12:06 瀏覽:180