精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是SSE MMX和SSE的區別

西西 ? 來源:csdn ? 作者: yangdashi888 ? 2020-03-22 15:21 ? 次閱讀

什么是SSE

說到SSE,首先要弄清楚的一個概念是SIMD(單指令多數據流,Single Instruction Multiple Data),是一種數據并行技術,能夠在一條指令中同時對多個數據執行運算操作,增加處理器的數據吞吐量。SIMD特別的適用于多媒體應用等數據密集型運算。

Intel公司的單指令多數據流式擴展(SSE,Streaming SIMD Extensions)技術能夠有效增強CPU浮點運算的能力。Visual Studio .NET 2003提供了對SSE指令集的編程支持,從而允許用戶在C++代碼中不用編寫匯編代碼就可直接使用SSE指令的功能。

1.1 歷史

1996年Intel首先推出了支持MMX的Pentium處理器,極大地提高了CPU處理多媒體數據的能力,被廣泛地應用于語音合成、語音識別、音頻視頻編解碼、圖像處理和串流媒體等領域。但是MMX只支持整數運算,浮點數運算仍然要使用傳統的x87協處理器指令。由于MMX與x87的寄存器相互重疊,在MMX代碼中插入x87指令時必須先執行EMMS指令清除MMX狀態,頻繁地切換狀態將嚴重影響性能。這限制了MMX指令在需要大量浮點運算的程序,如三維幾何變換、裁剪和投影中的應用。

另一方面,由于x87古怪的堆棧式緩存器結構,使得硬件上將其流水線化和軟件上合理調度指令都很困難,這成為提高x86架構浮點性能的一個瓶頸。為了解決以上這兩個問題,AMD公司于1998年推出了包含21條指令的3DNow!指令集,并在其K6-2處理器中實現。K6-2是 第一個能執行浮點SIMD指令的x86處理器,也是第一個支持水平浮點寄存器模型的x86處理器。借助3DNow!,K6-2實現了x86處理器上最快的浮點單元,在每個時鐘周期內最多可得到4個單精度浮點數結果,是傳統x87協處理器的4倍。許多游戲廠商為3DNow!優化了程序,微軟的DirectX 7也為3DNow!做了優化,AMD處理器的游戲性能第一次超過Intel,這大大提升了AMD在消費者心目中的地位。K6-2和隨后的K6-III成為市場上的熱門貨。

1999年,隨著Athlon處理器的推出,AMD為3DNow!增加了5條新的指令,用于增強其在DSP方面的性能,它們被稱為“擴展3DNow!”(Extended 3DNow?。?。

為了對抗3DNow!,Intel公司于1999年推出了SSE指令集。SSE幾乎能提供3DNow!的所有功能,而且能在一條指令中處理兩倍多的單精度浮點數;同時,SSE完全支持IEEE 754,在處理單精度浮點數時可以完全代替x87。這迅速瓦解了3DNow!的優勢。

1999年后,隨著主流操作系統和軟件都開始支持SSE并為SSE優化,AMD在其2000年發布的代號為“Thunderbird”的Athlon處理器中添加了對SSE的完全支持(“經典”的Athlon或K7只支持SSE中與MMX有關的部分,AMD稱之為“擴展MMX”即Extended MMX)。隨后,AMD致力于AMD64架構的開發;在SIMD指令集方面,AMD跟隨Intel,為自己的處理器添加SSE2和SSE3支持,而不再改進3DNow!。

2010年八月,AMD宣布將在新一代處理器中取消除了兩條數據預取指令之外3DNow!指令的支持,并鼓勵開發者將3DNow!代碼重新用SSE實現。

1.2 MMX和SSE

MMX 是Intel在Pentium MMX中引入的指令集。其缺點是占用浮點數寄存器進行運算(64位MMX寄存器實際上就是浮點數寄存器的別名)以至于MMX指令和浮點數操作不能同時工作。為了減少在MMX和浮點數模式切換之間所消耗的時間,程序員們盡可能減少模式切換的次數,也就是說,這兩種操作在應用上是互斥的。后來Intel在此基礎上發展出SSE指令集;AMD在此基礎上發展出3D Now指令集。

SSE(Streaming SIMD Extensions)是Intel在3D Now!發布一年之后,在PIII中引入的指令集,是MMX的超集。AMD后來在Athlon XP中加入了對這個指令集的支持。這個指令集增加了對8個128位寄存器XMM0-XMM7的支持,每個寄存器可以存儲4個單精度浮點數。使用這些寄存器的程序必須使用FXSAVE和FXRSTR指令來保持和恢復狀態。但是在PIII對SSE的實現中,浮點數寄存器又一次被新的指令集占用了,但是這一次切換運算模式不是必要的了,只是SSE和浮點數指令不能同時進入CPU的處理線而已。

SSE2是Intel在P4的最初版本中引入的,但是AMD后來在Opteron 和Athlon 64中也加入了對它的支持。這個指令集添加了對64位雙精度浮點數的支持,以及對整型數據的支持,也就是說這個指令集中所有的MMX指令都是多余的了,同時也避免了占用浮點數寄存器。這個指令集還增加了對CPU的緩存的控制指令。AMD對它的擴展增加了8個XMM寄存器,但是需要切換到64位模式(AMD64)才可以使用這些寄存器。Intel后來在其EM64T架構中也增加了對AMD64的支持。

SSE3是Intel在P4的Prescott版中引入的指令集,AMD在Athlon 64的第五個版本中也添加了對它的支持。這個指令集擴展的指令包含寄存器的局部位之間的運算,例如高位和低位之間的加減運算;浮點數到整數的轉換,以及對超線程技術的支持。

下面是一個演示的例子

使用純C++

什么是SSE MMX和SSE的區別

什么是SSE MMX和SSE的區別

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 指令集
    +關注

    關注

    0

    文章

    222

    瀏覽量

    23368
  • SIMD
    +關注

    關注

    0

    文章

    33

    瀏覽量

    10275
  • DCT
    DCT
    +關注

    關注

    1

    文章

    56

    瀏覽量

    19854
收藏 人收藏

    評論

    相關推薦

    Arm CoreLink SSE-100子系統技術參考手冊

    SSE-100提供了一個經過驗證的參考預集成硬件和軟件子系統可以擴展以提供物聯網端點系統
    發表于 08-02 16:46

    Arm Corstone SSE-700子系統技術參考手冊

    Arm Corstone SSE-700是一個靈活的子系統,旨在為基于Arm Cortex?A32、Cortex?M或外部系統中的其他主機的豐富物聯網(IoT)應用程序提供安全解決方案
    發表于 08-02 07:46

    Arm Corstone SSE-123子系統技術參考手冊

    SSE?123示例子系統集成了關鍵Arm組件的子系統,實現針對物聯網(IoT)片上系統(SoC)設計的系統的核心功能。
    發表于 08-09 06:00

    Arm Corstone? SSE?123子系統技術概述

    SSE?123示例子系統集成了一個由關鍵Arm組件組成的子系統,這些組件實現了針對物聯網(IoT)片上系統(SoC)設計的系統的核心功能。
    發表于 08-10 07:40

    Arm Corstone SSE-050子系統技術參考手冊

    SSE-050提供預先集成和驗證的流程和技術不可知參考,以及可擴展以提供物聯網終端系統的硬件和軟件子系統。 下圖顯示了由多個終端和一個共享控制節點組成的物聯網系統。
    發表于 08-17 06:16

    Arm Corstone SSE-710子系統技術參考手冊

    SSE-710子系統(SSE-710)是一個靈活的子系統,旨在基于ARM?支持的Cortex?-A處理器、Cortex?-M或外部系統中的其他管理器,為豐富的物聯網(IoT)應用提供安全的解決方案
    發表于 08-17 08:00

    ARM CoreLink SSE-200子系統技術概述

    SSE-200子系統為物聯網(IoT)和嵌入式細分市場的產品提供了起點。 SSE-200子系統推動系統架構和軟件標準化,旨在提供包含前沿Cortex-M和TrustZone技術的高性能計算子系統。 該解決方案包括硬件、軟件和軟件工具,以支持快速開發物聯網片上系統(SoC)
    發表于 08-24 06:35

    Arm CoreLink? SSE-200嵌入式子系統技術概述

    SSE-200子系統用于嵌入式驅動器系統架構和軟件標準化,旨在提供包含前沿Cortex M和TrustZone技術的高性能計算子系統。 該解決方案由硬件、軟件和軟件工具組成,可實現物聯網系統芯片
    發表于 08-28 06:30

    用于MPS2+的SSE-200子系統示例

    SSE-200子系統的現場可編程門陣列包裝中使用以下SIE-200組件: ·TrustZone AHB5外圍設備保護控制器。 ·TrustZone AHB5主安全控制器。 ·AHB5總線陣
    發表于 08-30 06:34

    sse5指令集下載

    sse5指令集下載 SIMD (single instruction, multiple data) instructions, also called packed instructions
    發表于 12-25 11:14 ?33次下載

    sse指令集

    sse指令集 SSE(Streaming SIMD Extensions,單指令多數據流擴展)指令集是Intel在Pentium III處理器中率先推出的。其實,早在PIII正式推出之前
    發表于 12-25 10:59 ?1549次閱讀

    什么是SSE/SIMD/Speculative execut

    什么是SSE/SIMD/Speculative execution? SSE(Streaming SIMD Extensions,單一指令多數據流擴展) 英特爾開發的第二代SIMD指令集,有70條指令,
    發表于 02-04 11:14 ?553次閱讀

    什么是Superscalar/SSE/SQRT

    什么是Superscalar/SSE/SQRT   Superscalar: (超標量體系結構)在同一時鐘周期可以執行多條指令流的處理器架構。 SSE: (Streami
    發表于 02-04 11:27 ?613次閱讀

    基于SSE的FDTD程序設計李太全

    基于SSE的FDTD程序設計_李太全
    發表于 03-17 08:00 ?1次下載

    N 溝道 100 V、2.3 mOhm MOSFET,采用增強型 SOA,采用 LFPAK88-PSMN2R3-100SSE

    N 溝道 100 V、2.3 mOhm MOSFET,采用增強型 SOA,采用 LFPAK88-PSMN2R3-100SSE
    發表于 02-07 18:56 ?0次下載
    N 溝道 100 V、2.3 mOhm MOSFET,采用增強型 SOA,采用 LFPAK88-PSMN2R3-100<b class='flag-5'>SSE</b>