SSE3: Difference between revisions

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Transmeta TM8800 had SSE3 added by Code Morphing Software 6.1.1; it was not in the original shipping 6.0.4 from 2004. Most vendors did not ship the update
 
imported>Ivan Stefanovski Student 2028
Removed "early"
 
Line 1: Line 1:
{{Short description|CPU instruction set}}
{{Short description|CPU instruction set}}
{{Distinguish|SSSE3}}
{{Distinguish|SSSE3}}
'''SSE3''', '''Streaming SIMD Extensions 3''', also known by its [[Intel]] code name '''Prescott New Instructions''' ('''PNI'''),<ref name=":1">{{Cite web |last1=Shimpi |first1=Anand Lal |last2=Wilson |first2=Derek |title=Intel's Pentium 4 E: Prescott Arrives with Luggage |url=https://www.anandtech.com/show/1230 |access-date=2023-04-10 |website=www.anandtech.com}}</ref> is the third iteration of the [[Streaming SIMD Extensions|SSE]] instruction set for the [[IA-32]] (x86) architecture. Intel introduced SSE3 in early 2004 with the [[Pentium 4#Prescott|Prescott]] revision of their [[Pentium 4]] CPU.<ref name=":1" /> In April 2005, [[AMD]] introduced a subset of SSE3 in revision E (Venice and San Diego) of their [[Athlon 64]] CPUs.<ref>{{Cite web |last=Shimpi |first=Anand Lal |title=Industry Update - Q4-2004: AMD adds SSE3 Support, Intel's 925/915 not selling and more |url=https://www.anandtech.com/show/1532 |access-date=2023-04-10 |website=www.anandtech.com}}</ref> The earlier [[SIMD]] instruction sets on the [[x86]] platform, from oldest to newest, are [[MMX (instruction set)|MMX]], [[3DNow!]] (developed by AMD, no longer supported on newer CPUs), [[Streaming SIMD Extensions|SSE]], and [[SSE2]].
'''SSE3''', '''Streaming SIMD Extensions 3''', also known by its [[Intel]] code name '''Prescott New Instructions''' ('''PNI'''),<ref name=":1">{{Cite web |last1=Shimpi |first1=Anand Lal |last2=Wilson |first2=Derek |title=Intel's Pentium 4 E: Prescott Arrives with Luggage |url=https://www.anandtech.com/show/1230 |archive-url=https://web.archive.org/web/20100424212223/http://anandtech.com/show/1230 |url-status=dead |archive-date=April 24, 2010 |access-date=2023-04-10 |website=www.anandtech.com}}</ref> is the third iteration of the [[Streaming SIMD Extensions|SSE]] instruction set for the [[IA-32]] (x86) architecture. Intel introduced SSE3 in 2004 with the [[Pentium 4#Prescott|Prescott]] revision of their [[Pentium 4]] and [[Celeron#Prescott-256|Celeron D]] CPUs.<ref name=":1" /> In April 2005, [[AMD]] introduced a subset of SSE3 in revision E (Venice and San Diego) of their [[Athlon 64]] CPUs.<ref>{{Cite web |last=Shimpi |first=Anand Lal |title=Industry Update - Q4-2004: AMD adds SSE3 Support, Intel's 925/915 not selling and more |url=https://www.anandtech.com/show/1532 |archive-url=https://web.archive.org/web/20100809221643/http://www.anandtech.com/show/1532 |url-status=dead |archive-date=August 9, 2010 |access-date=2023-04-10 |website=www.anandtech.com}}</ref> The earlier [[SIMD]] instruction sets on the [[x86]] platform, from oldest to newest, are [[MMX (instruction set)|MMX]], [[3DNow!]] (developed by AMD, no longer supported on newer CPUs), [[Streaming SIMD Extensions|SSE]], and [[SSE2]].


SSE3 contains 13 new instructions over [[SSE2]].<ref>{{Cite web |title=Intel Instruction Set Extensions Technology |url=https://www.intel.com/content/www/us/en/support/articles/000005779/processors.html |access-date=2023-04-10 |website=Intel |language=en}}</ref>
SSE3 contains 13 new instructions over [[SSE2]].<ref>{{Cite web |title=Intel Instruction Set Extensions Technology |url=https://www.intel.com/content/www/us/en/support/articles/000005779/processors.html |access-date=2023-04-10 |website=Intel |language=en}}</ref>
Line 10: Line 10:
==CPUs with SSE3==
==CPUs with SSE3==
*[[AMD]]:
*[[AMD]]:
**[[Opteron]] (since Stepping E4<ref>{{Cite web |last=Wilson |first=Derek |title=AMD K8 E4 Stepping: SSE3 Performance |url=https://www.anandtech.com/show/1618 |access-date=2023-04-10 |website=www.anandtech.com}}</ref>)
**[[Opteron]] (since Stepping E4<ref>{{Cite web |last=Wilson |first=Derek |title=AMD K8 E4 Stepping: SSE3 Performance |url=https://www.anandtech.com/show/1618 |archive-url=https://web.archive.org/web/20100706234056/http://www.anandtech.com/show/1618 |url-status=dead |archive-date=July 6, 2010 |access-date=2023-04-10 |website=www.anandtech.com}}</ref>)
**[[Sempron]] (since Palermo. Stepping E3)
**[[Sempron]] (since Palermo. Stepping E3)
**[[Athlon 64]] (since Venice Stepping E3 and San Diego Stepping E4)
**[[Athlon 64]] (since Venice Stepping E3 and San Diego Stepping E4)
Line 16: Line 16:
**[[Athlon 64 X2]]
**[[Athlon 64 X2]]
**[[Phenom 64 X2]]
**[[Phenom 64 X2]]
**[[Athlon II]] & [[Phenom II]]
**[[AMD Turion|Turion]] family
**[[AMD Turion|Turion]] family
**[[AMD 10h|K10]] family
**[[AMD 10h|K10]] family

Latest revision as of 11:40, 3 September 2025

Template:Short description Script error: No such module "Distinguish". SSE3, Streaming SIMD Extensions 3, also known by its Intel code name Prescott New Instructions (PNI),[1] is the third iteration of the SSE instruction set for the IA-32 (x86) architecture. Intel introduced SSE3 in 2004 with the Prescott revision of their Pentium 4 and Celeron D CPUs.[1] In April 2005, AMD introduced a subset of SSE3 in revision E (Venice and San Diego) of their Athlon 64 CPUs.[2] The earlier SIMD instruction sets on the x86 platform, from oldest to newest, are MMX, 3DNow! (developed by AMD, no longer supported on newer CPUs), SSE, and SSE2.

SSE3 contains 13 new instructions over SSE2.[3]

Changes

The most notable change is the capability to work horizontally in a register, as opposed to the more or less strictly vertical operation of all previous SSE instructions. More specifically, instructions to add and subtract the multiple values stored within a single register have been added.[4] These instructions can be used to speed up the implementation of a number of DSP and 3D operations. There is also a new instruction to convert floating point values to integers without having to change the global rounding mode, thus avoiding costly pipeline stalls. Finally, the extension adds LDDQU, an alternative misaligned integer vector load that has better performance on NetBurst based platforms for loads that cross cacheline boundaries.[5]

CPUs with SSE3

New instructions

Common instructions

Arithmetic

ADDSUBPD
Add-Subtract-Packed-Double[8]
  • Input: { A0, A1 }, { B0, B1 }
  • Output: { A0 − B0, A1 + B1 }
ADDSUBPS
Add-Subtract-Packed-Single[8]
  • Input: { A0, A1, A2, A3 }, { B0, B1, B2, B3 }
  • Output: { A0 − B0, A1 + B1, A2 − B2, A3 + B3 }

AOS ( Array Of Structures )

HADDPD
Horizontal-Add-Packed-Double[8]
  • Input: { A0, A1 }, { B0, B1 }
  • Output: { A0 + A1, B0 + B1 }
HADDPS
Horizontal-Add-Packed-Single[8]
  • Input: { A0, A1, A2, A3 }, { B0, B1, B2, B3 }
  • Output: { A0 + A1, A2 + A3, B0 + B1, B2 + B3 }
HSUBPD
Horizontal-Subtract-Packed-Double[8]
  • Input: { A0, A1 }, { B0, B1 }
  • Output: { A0 − A1, B0 − B1 }
HSUBPS
Horizontal-Subtract-Packed-Single[8]
  • Input: { A0, A1, A2, A3 }, { B0, B1, B2, B3 }
  • Output: { A0 − A1, A2 − A3, B0 − B1, B2 − B3 }
LDDQU
As stated above, this is an alternative misaligned integer vector load.[8] It can be helpful for video compression tasks.
MOVDDUP, MOVSHDUP, MOVSLDUP[4]
These are useful for complex numbers and wave calculation like sound.
FISTTP
Like the older x87 FISTP instruction, but ignores the floating point control register's rounding mode settings and uses the "chop" (truncate) mode instead.[4] Allows omission of the expensive loading and re-loading of the control register in languages such as C where float-to-int conversion requires truncate behaviour by standard.

Other instructions

MONITOR, MWAIT
The MONITOR instruction is used to specify a memory address for monitoring, while the MWAIT instruction puts the processor into a low-power state and waits for a write event to the monitored address.[4]

References

<templatestyles src="Reflist/styles.css" />

  1. a b Script error: No such module "citation/CS1".
  2. Script error: No such module "citation/CS1".
  3. Script error: No such module "citation/CS1".
  4. a b c d Script error: No such module "citation/CS1".
  5. Script error: No such module "citation/CS1".
  6. Script error: No such module "citation/CS1".
  7. Script error: No such module "citation/CS1".
  8. a b c d e f g Script error: No such module "citation/CS1".

Script error: No such module "Check for unknown parameters".

External links

Template:Multimedia extensions