1999 年 2 月發布。遵循摩爾定律,但主頻僅 450-550 MHz(Pentium II 333-400 MHz),頻率提升有限。本質上是高頻 Pentium II + 全新指令集:Streaming SIMD Extensions (SSE)。採用完全兼容 IA-32 架構,不影響舊程序運行。
| 特性 | MMX | SSE |
|---|---|---|
| 數據類型 | 整數 SIMD | 單精度浮點數 SIMD |
| 並行寬度 | 2 個 32 位整數 | 4 個 32 位浮點數 |
| 寄存器 | 復用 x87 浮點寄存器 (低 64 位),與浮點運算互斥,切換開銷大 | 8 個全新 128 位寄存器 (xmm0-xmm7),獨立於 x87,可同時進行整數 MMX、浮點 x87、SIMD 浮點 SSE |
圖一:SSE 128 位寄存器存放 4 個 float 排列
圖二:(a) MMX 共享浮點寄存器 (b) SSE 獨立寄存器
SSE 專為 3D 設計。3D 模型由大量頂點浮點數構成,操作頂點改變外觀。SSE 单指令處理 4 頂點分量,大幅加速:
使開發者能用更多頂點、更複雜算法創造逼真 3D 效果,遊戲、矢量圖形、2.5D 顯示均受益。
新增 70 條指令 + 狀態/控制字。需 OS 支援保存/恢復狀態字(Win98/Win2000 支援)。70 條中:50 條浮點 SIMD、12 條整數 SIMD、8 條緩存控制。本系列聚焦 50 條浮點 SIMD。
ps 後綴,操作 4 元素) vs 標量指令 (ss 後綴,僅操作最低元素,其餘保持)。
圖三:SSE 新數據類型 (4 float)
圖四:包裹操作 — 同步對 4 元素運算
圖五:標量操作 — 僅最低元素參與運算
400 次浮點乘法:無 SIMD 需 400 條指令循環;SSE 每條處理 4 個,僅需 100 條指令。指令數減少 4 倍,吞吐率大增。