SSE4
SSE4 (Streaming SIMD Extensions 4) is a SIMD CPU instruction set used in the Intel Core microarchitecture and AMD K10 (K8L). It was announced on September 27, 2006, at the Fall 2006 Intel Developer Forum, with vague details in a white paper;[1] more precise details of 47 instructions became available at the Spring 2007 Intel Developer Forum in Beijing, in the presentation.[2] SSE4 extended the SSE3 instruction set which was released in early 2004. All software using previous Intel SIMD instructions (ex. SSE3) are compatible with modern microprocessors supporting SSE4 instructions. All existing software continues to run correctly without modification on microprocessors that incorporate SSE4, as well as in the presence of existing and new applications that incorporate SSE4.[3] Like other previous generation CPU SIMD instruction sets, SSE4 supports up to 16 registers, each 128-bits wide which can load four 32-bit integers, four 32-bit single precision floating point numbers, or two 64-bit double precision floating point numbers.[1] SIMD operations, such as vector element-wise addition/multiplication and vector scalar addition/multiplication, process multiple bytes of data in a single CPU instruction. The parallel operation packs noticeable increases in performance. SSE4.2 introduced new SIMD string operations, including an instruction to compare two string fragments of up to 16 bytes each.[1] SSE4.2 is a subset of SSE4 and it was released a few years after the initial release of SSE4. SSE4 subsetsIntel SSE4 consists of 54 instructions. A subset consisting of 47 instructions, referred to as SSE4.1 in some Intel documentation, is available in Penryn. Additionally, SSE4.2, a second subset consisting of the seven remaining instructions, is first available in Nehalem-based Core i7. Intel credits feedback from developers as playing an important role in the development of the instruction set. Starting with Barcelona-based processors, AMD introduced the SSE4a instruction set, which has four SSE4 instructions and four new SSE instructions. These instructions are not found in Intel's processors supporting SSE4.1 and AMD processors only started supporting Intel's SSE4.1 and SSE4.2 (the full SSE4 instruction set) in the Bulldozer-based FX processors. With SSE4a the misaligned SSE feature was also introduced which meant unaligned load instructions were as fast as aligned versions on aligned addresses. It also allowed disabling the alignment check on non-load SSE operations accessing memory.[4] Intel later introduced similar speed improvements to unaligned SSE in their Nehalem processors, but did not introduce misaligned access by non-load SSE instructions until AVX.[5] Name confusionWhat is now known as SSSE3 (Supplemental Streaming SIMD Extensions 3), introduced in the Intel Core 2 processor line, was referred to as SSE4 by some media until Intel came up with the SSSE3 moniker. Internally dubbed Merom New Instructions, Intel originally did not plan to assign a special name to them, which was criticized by some journalists.[6] Intel eventually cleared up the confusion and reserved the SSE4 name for their next instruction set extension.[7] Intel is using the marketing term HD Boost to refer to SSE4.[8] New instructionsUnlike all previous iterations of SSE, SSE4 contains instructions that execute operations which are not specific to multimedia applications. It features a number of instructions whose action is determined by a constant field and a set of instructions that take XMM0 as an implicit third operand. Several of these instructions are enabled by the single-cycle shuffle engine in Penryn. (Shuffle operations reorder bytes within a register.) SSE4.1These instructions were introduced with Penryn microarchitecture, the 45 nm shrink of Intel's Core microarchitecture. Support is indicated via the CPUID.01H:ECX.SSE41[Bit 19] flag.
SSE4.2SSE4.2 added STTNI (String and Text New Instructions),[10] several new instructions that perform character searches and comparison on two operands of 16 bytes at a time. These were designed (among other things) to speed up the parsing of XML documents.[11] It also added a Windows 11 24H2 requires the CPU to support SSE4.2, otherwise the Windows kernel is unbootable.[12] (Various unofficial Windows 11 variants, such as Tiny11 and Parallels virtualizations installations, bypass this requirement.)
|
Instruction | Description |
---|---|
POPCNT
|
Population count (count number of bits set to 1). Support is indicated via the CPUID.01H:ECX.POPCNT[Bit 23] flag.[16] |
LZCNT
|
Leading zero count. Support is indicated via the CPUID.80000001H:ECX.ABM[Bit 5] flag.[17] |
SSE4a
The SSE4a instruction group was introduced in AMD's Barcelona microarchitecture. These instructions are not available in Intel processors. Support is indicated via the CPUID.80000001H:ECX.SSE4A[Bit 6] flag.[17]
Instruction | Description |
---|---|
EXTRQ /INSERTQ
|
Combined mask-shift instructions.[18] |
MOVNTSD /MOVNTSS
|
Scalar streaming store instructions.[19] |
Supporting CPUs
X86-64 v2 CPUs:
- Intel
- Silvermont processors (SSE4.1, SSE4.2 and
POPCNT
supported) - Goldmont processors (SSE4.1, SSE4.2 and
POPCNT
supported) - Goldmont Plus processors (SSE4.1, SSE4.2 and
POPCNT
supported) - Tremont processors (SSE4.1, SSE4.2 and
POPCNT
supported) - Penryn processors (SSE4.1 supported, except Pentium Dual-Core and Celeron)
- Nehalem processors and Westmere processors (SSE4.1, SSE4.2 and
POPCNT
supported, except Pentium and Celeron) - Sandy Bridge processors and newer (SSE4.1, SSE4.2 and
POPCNT
supported, include Pentium and Celeron) - Haswell processors and newer (SSE4.1, SSE4.2,
POPCNT
andLZCNT
supported)
- Silvermont processors (SSE4.1, SSE4.2 and
- AMD
- K10-based processors (SSE4a,
POPCNT
andLZCNT
supported) - "Cat" low-power processors
- Bobcat-based processors (SSE4a,
POPCNT
andLZCNT
supported) - Jaguar-based processors and newer (SSE4a, SSE4.1, SSE4.2,
POPCNT
andLZCNT
supported) - Puma-based processors and newer (SSE4a, SSE4.1, SSE4.2,
POPCNT
andLZCNT
supported)
- Bobcat-based processors (SSE4a,
- "Heavy Equipment" processors (SSE4a, SSE4.1, SSE4.2,
POPCNT
andLZCNT
supported)- Bulldozer-based processors
- Piledriver-based processors[20]
- Steamroller-based processors
- Excavator-based processors and newer
- Zen-based processors (SSE4a, SSE4.1, SSE4.2,
POPCNT
andLZCNT
supported) - Zen+-based processors (SSE4a, SSE4.1, SSE4.2,
POPCNT
andLZCNT
supported) - Zen2-based processors (SSE4a, SSE4.1, SSE4.2,
POPCNT
andLZCNT
supported) - Zen3-based processors (SSE4a, SSE4.1, SSE4.2,
POPCNT
andLZCNT
supported) - Zen4-based processors (SSE4a, SSE4.1, SSE4.2,
POPCNT
andLZCNT
supported) - Zen5-based processors (SSE4a, SSE4.1, SSE4.2,
POPCNT
andLZCNT
supported)
- K10-based processors (SSE4a,
- VIA
- Zhaoxin
- ZX-C processors and newer (SSE4.1, SSE4.2 supported)
References
- ^ a b c Intel Streaming SIMD Extensions 4 (SSE4) Instruction Set Innovation Archived May 30, 2009, at the Wayback Machine, Intel.
- ^ Tuning for Intel SSE4 for the 45nm Next Generation Intel Core Microarchitecture Archived March 8, 2021, at the Wayback Machine, Intel.
- ^ "Intel SSE4 Programming Reference" (PDF). Archived (PDF) from the original on February 15, 2020. Retrieved December 26, 2014.
- ^ ""Barcelona" Processor Feature: SSE Misaligned Access". AMD. Archived from the original on August 9, 2016. Retrieved March 3, 2015.
- ^ "Inside Intel Nehalem Microarchitecture". Archived from the original on April 2, 2015. Retrieved March 3, 2015.
- ^ My Experience With "Conroe" Archived October 15, 2013, at the Wayback Machine, DailyTech
- ^ Extending the World’s Most Popular Processor Architecture Archived November 24, 2011, at the Wayback Machine, Intel
- ^ "Intel - Data Center Solutions, IOT, and PC Innovation". Intel. Archived from the original on February 7, 2013. Retrieved September 17, 2009.
- ^ Motion Estimation with Intel Streaming SIMD Extensions 4 (Intel SSE4) Archived June 16, 2018, at the Wayback Machine, Intel.
- ^ "Schema Validation with Intel® Streaming SIMD Extensions 4 (Intel® SSE4)". Archived from the original on June 17, 2018. Retrieved February 6, 2012.
- ^ "XML Parsing Accelerator with Intel® Streaming SIMD Extensions 4 (Intel® SSE4)". Archived from the original on June 17, 2018. Retrieved February 6, 2012.
- ^ Klotz, Aaron (April 24, 2024). "Microsoft blocks some PCs from Windows 11 24H2 — CPU must support SSE4.2 or the OS will not boot". Tom's Hardware. Retrieved April 29, 2024.
- ^ Intel SSE4 Programming Reference Archived February 15, 2020, at the Wayback Machine p. 61. See also RFC 3385 Archived June 19, 2008, at the Wayback Machine for discussion of the CRC32C polynomial.
- ^ Fast, Parallelized CRC Computation Using the Nehalem CRC32 Instruction — Dr. Dobbs, April 12, 2011
- ^ Sen, Sayan (March 17, 2024). "Microsoft fixes a misfired PopCnt block but Windows 11 24H2 requirements may be here to stay". Neowin. Retrieved March 17, 2024.
- ^ Intel® 64 and IA-32 Architectures Software Developer's Manual, Volume 2B: Instruction Set Reference, N–Z Archived March 8, 2011, at the Wayback Machine.
- ^ a b "AMD CPUID Specification" (PDF). Archived (PDF) from the original on November 1, 2013. Retrieved October 30, 2013.
- ^ Rahul Chaturvedi (September 17, 2007). ""Barcelona" Processor Feature: SSE4a Instruction Set". Archived from the original on October 25, 2013.
- ^ Rahul Chaturvedi (October 2, 2007). ""Barcelona" Processor Feature: SSE4a, part 2". Archived from the original on October 25, 2013.
- ^ "AMD FX-Series FX-6300 - FD6300WMW6KHK / FD6300WMHKBOX". Archived from the original on August 17, 2017. Retrieved October 9, 2015.
External links
- SSE4 Programming Reference by Intel
- PCMPSTR calculator for the SSE 4.2 string instructions archived at Ghostarchive.org at May 10, 2022