<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=SSE</id>
	<title>SSE - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=SSE"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=SSE&amp;action=history"/>
	<updated>2026-07-17T12:58:11Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=SSE&amp;diff=78484&amp;oldid=prev</id>
		<title>imported&gt;AromaTake：​/* 後續版本 */ 增加或調整內部連結</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=SSE&amp;diff=78484&amp;oldid=prev"/>
		<updated>2025-09-18T07:53:44Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;後續版本：​&lt;/span&gt; 增加或調整內部連結&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{unreferenced|time=2012-10-09T23:59:14+00:00}}&lt;br /&gt;
{{noteTA|G1=IT}}&lt;br /&gt;
{{other uses}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SSE&amp;#039;&amp;#039;&amp;#039;（{{langx|en|Streaming SIMD Extensions}}）是[[英特尔]]在[[AMD]]的[[3DNow!|3D Now!]]发布一年之后，在其计算机芯片[[Pentium III]]中引入的指令集，是繼[[MMX]]的擴充指令集。SSE指令集提供了70條新指令。[[AMD]]后来在[[Athlon|Athlon XP]]中加入了对这个新指令集的支持。&lt;br /&gt;
&lt;br /&gt;
== SSE的暫存器 ==&lt;br /&gt;
[[File:XMM registers.png|right|220px]]&lt;br /&gt;
SSE加入新的8個128位元暫存器（XMM0～XMM7）。而AMD發表的[[x86-64]]延伸架構（又稱AMD64）再加入額外8個暫存器。除此之外還有一個新的32位元的控制／狀態暫存器（MXCSR）。不過只能在64位元的模式下才能使用額外8個暫存器。&lt;br /&gt;
&lt;br /&gt;
每個暫存器可以容納4個32位元單精度浮點數，或是2個64位元雙精度浮點數，或是4個32位元整數，或是8個16位元短整數，或是16個字元。整數運算能夠使用正負號運算。而整數SIMD運算可能仍然要與8個64位元MMX暫存器一起執行。&lt;br /&gt;
&lt;br /&gt;
因為作業系統必須要在進程切換的時候保護這些128位元的暫存器狀態，除非作業系統去啟動這些暫存器，否則預設值是不會去啟用的。&amp;lt;!--原文在此，請幫忙校對...Because these 128-bit registers are additional program states that the [[operating system]] must preserve across task switches, they are disabled by default until the operating system explicitly enables them. --&amp;gt;這表示作業系統必須要知道如何使用FXSAVE與FXRSTOR指令才能儲存[[x87]]與SSE暫存器的狀態。而在當時IA-32的主流作業系統很快的都加入了此功能。&lt;br /&gt;
&lt;br /&gt;
由於SSE加入了浮點支持，SSE就比MMX更加常用。而SSE2加入了整數運算支援之後讓SSE更加的有彈性，當MMX變成是多餘的指令集，SSE指令集甚至可以與MMX並行運作，在某些時候可以提供額外的性能增進。&lt;br /&gt;
&lt;br /&gt;
第一個支援SSE的CPU是[[Pentium III]]，在[[FPU]]與SSE之間共用執行支援。當編譯出來的軟體能夠交叉的同時以FPU與SSE運作，Pentium III並無法在同一個周期中同時執行FPU與SSE。這個限制降低了[[指令管線]]的有效性，不過XMM暫存器能夠讓SIMD與純量浮點運算混合執行，而不會因為切換MMX／浮點模式而產生性能的折損。&lt;br /&gt;
&lt;br /&gt;
== SSE指令表 ==&lt;br /&gt;
SSE提供純量與包裹式（packed）浮點指令。&lt;br /&gt;
&lt;br /&gt;
=== 浮點指令 ===&lt;br /&gt;
&lt;br /&gt;
* 記憶體到暫存器／暫存器到記憶體／暫存器之間的資料搬移&lt;br /&gt;
** 純量– MOVSS&lt;br /&gt;
** 包裹式– MOVAPS, MOVUPS, MOVLPS, MOVHPS, MOVLHPS, MOVHLPS&lt;br /&gt;
* 數學運算&lt;br /&gt;
** 純量– ADDSS, SUBSS, MULSS, DIVSS, RCPSS, SQRTSS, MAXSS, MINSS, RSQRTSS &lt;br /&gt;
** 包裹式– ADDPS, SUBPS, MULPS, DIVPS, RCPPS, SQRTPS, MAXPS, MINPS, RSQRTPS&lt;br /&gt;
* 比較&lt;br /&gt;
** 純量– CMPSS, COMISS, UCOMISS &lt;br /&gt;
** 包裹式– CMPPS&lt;br /&gt;
* 資料拆包（unpack）與隨機搬移（shuffle）&lt;br /&gt;
** 包裹式– SHUFPS, UNPCKHPS, UNPCKLPS&lt;br /&gt;
* 資料型態轉換&lt;br /&gt;
** 純量– CVTSI2SS, CVTSS2SI, CVTTSS2SI&lt;br /&gt;
** 包裹式– CVTPI2PS, CVTPS2PI, CVTTPS2PI  &lt;br /&gt;
* 逐位邏輯運算&lt;br /&gt;
** 包裹式– ANDPS, ORPS, XORPS, ANDNPS&lt;br /&gt;
&lt;br /&gt;
=== 整數指令 ===&lt;br /&gt;
&lt;br /&gt;
* 數學運算&lt;br /&gt;
** PMULHUW, PSADBW, PAVGB, PAVGW, PMAXUB, PMINUB, PMAXSW, PMINSW&lt;br /&gt;
* 資料搬移&lt;br /&gt;
** PEXTRW, PINSRW&lt;br /&gt;
* 其他&lt;br /&gt;
** PMOVMSKB, PSHUFW&lt;br /&gt;
&lt;br /&gt;
=== 其他指令 ===&lt;br /&gt;
&lt;br /&gt;
* MXCSR管理&lt;br /&gt;
** LDMXCSR, STMXCSR&lt;br /&gt;
* 快取與記憶體管理&lt;br /&gt;
** MOVNTQ, MOVNTPS, MASKMOVQ, PREFETCH0, PREFETCH1, PREFETCH2, PREFETCHNTA, SFENCE&lt;br /&gt;
&lt;br /&gt;
== 例子 ==&lt;br /&gt;
下面这个例子演示了使用SSE的优点。向量加法在计算机图形中很常用，如果在x86平台上想将四对单精度浮点数相加，必须使用四对浮点相加指令。&lt;br /&gt;
&lt;br /&gt;
 vec_res.x = v1.x + v2.x;&lt;br /&gt;
 vec_res.y = v1.y + v2.y;&lt;br /&gt;
 vec_res.z = v1.z + v2.z;&lt;br /&gt;
 vec_res.w = v1.w + v2.w;&lt;br /&gt;
&lt;br /&gt;
上面这段代码会被编译成4条x86 FADD指令。下面的伪代码展示用128位包裹式相加（packed-add）指令替代4个纯量相加指令。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
 movaps xmm0, [v1]          ;xmm0 = v1.w | v1.z | v1.y | v1.x &lt;br /&gt;
 addps xmm0, [v2]           ;xmm0 = v1.w+v2.w | v1.z+v2.z | v1.y+v2.y | v1.x+v2.x               &lt;br /&gt;
 movaps [vec_res], xmm0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 後續版本 ==&lt;br /&gt;
=== SSE2 ===&lt;br /&gt;
{{main|SSE2}}&lt;br /&gt;
SSE2是Intel在Pentium 4處理器的最初版本中引入的，但是AMD后来在Opteron和Athlon 64處理器中也加入了SSE2的支持。SSE2指令集添加了对64位双精度浮点数的支持，以及对整型数据的支持，也就是说这个指令集中所有的MMX指令都是多余的了，同时也避免了占用浮点数寄存器。这个指令集还增加了对CPU快取的控制指令。AMD对它的扩展增加了8个XMM寄存器，但是需要切换到64位模式（x86-64/AMD64）才可以使用这些寄存器。Intel后来在其[[Intel 64]]架构中也增加了对[[x86-64]]的支持。&lt;br /&gt;
&lt;br /&gt;
=== SSE3 ===&lt;br /&gt;
{{main|SSE3}}&lt;br /&gt;
SSE3是Intel在Pentium 4處理器的Prescott核心中引入的第三代SIMD指令集，AMD在Athlon 64的第五个版本，Venice核心中也加入了SSE3的支持。这个指令集扩展的指令包含寄存器的局部位之间的运算，例如高位和低位之间的加减运算；浮点数到整数的转换，以及对[[超线程]]技术的支持。&lt;br /&gt;
&lt;br /&gt;
=== SSSE3 ===&lt;br /&gt;
{{main|SSSE3}}&lt;br /&gt;
SSSE3是Intel針對SSE3指令集的一次額外擴充，最早內建於[[Core 2 Duo]]處理器中。&lt;br /&gt;
&lt;br /&gt;
=== SSE4 ===&lt;br /&gt;
{{main|SSE4}}&lt;br /&gt;
SSE4是Intel在Penryn核心的Core 2 Duo與Core 2 Solo處理器時，新增的47條新多媒體指令集，現在SSE4版本更新至SSE4.2。&lt;br /&gt;
====SSE4a====&lt;br /&gt;
AMD也開發了屬於自己的SSE4a多媒體指令集，並內建在[[Athlon II]]與[[Opteron]]等[[AMD 10h|K10]]架構處理器中，不過SSE4a無法與Intel的SSE4系列指令集相容。目前AMD新一代處理器已支援Intel的SSE4.1、SSE4.2指令集。&lt;br /&gt;
&lt;br /&gt;
=== SSE5 ===&lt;br /&gt;
[[SSE5]]是[[AMD]]為了打破Intel壟斷在處理器指令集的獨霸地位所提出的，SSE5初期規劃將加入超過100條新指令，其中最引人注目的就是[[三運算元指令]]（3-Operand Instructions）及[[熔合乘法累積]]（Fused Multiply Accumulate）。其中，三運算元指令讓處理器可將一個數學或邏輯函式庫，套用到運算元或輸入資料。藉由增加運算元的數量，一個x86指令能處理二至三筆資料，SSE5允許將多個簡單指令匯整成一個指令，達到更有效率的指令處理模式。提升為三運算指令的運算能力，是少數[[RISC]]架構的水準。熔合乘法累積讓允許建立新的指令，有效率地執行各種複雜的運算。熔合乘法累積可結合乘法與加法運算，透過單一指令執行多筆重複計算。透過簡化程式碼，讓系統能迅速執行繪圖著色、快速相片著色、音場音效，以及複雜向量演算等效能密集的應用作業。目前AMD已放棄下一代[[AMD Bulldozer|Bulldozer]]核心內建SSE5指令集，改內建Intel授權SSE4系列指令集。&lt;br /&gt;
&lt;br /&gt;
=== AVX ===&lt;br /&gt;
{{main|AVX指令集}}&lt;br /&gt;
AVX（Advanced Vector Extensions）是Intel的SSE延伸架構，如IA16至IA32般的把暫存器XMM 128bit提升至YMM 256bit，以增加一倍的運算效率。&lt;br /&gt;
&lt;br /&gt;
=== FMA ===&lt;br /&gt;
{{main|FMA指令集}}&lt;br /&gt;
FMA是[[Intel]]的AVX擴充指令集，如名稱上乘積累加運算（Fused Multiply Accumulate）的意思一樣。&lt;br /&gt;
&lt;br /&gt;
== 參見 ==&lt;br /&gt;
*[[AltiVec]]&lt;br /&gt;
*[[組合語言]]&lt;br /&gt;
*[[MMX]]&lt;br /&gt;
*[[3DNow!]]&lt;br /&gt;
*[[Pentium III]]&lt;br /&gt;
&lt;br /&gt;
{{多媒體指令集}}&lt;br /&gt;
{{Intel品牌}}&lt;br /&gt;
&lt;br /&gt;
[[Category:并发计算]]&lt;br /&gt;
[[Category:X86架構]]&lt;br /&gt;
[[Category:X86指令]]&lt;/div&gt;</summary>
		<author><name>imported&gt;AromaTake</name></author>
	</entry>
</feed>