From WikiChip
Difference between revisions of "x86/extensions"
(Created page with "{{x86 title|Extensions}} The x86 ISA has gone through numerous iterations that added new instructions to performs specific tasks. Thes...") |
(added a timeline initial outline) |
||
Line 1: | Line 1: | ||
{{x86 title|Extensions}} | {{x86 title|Extensions}} | ||
The [[x86]] [[instruction set architecture|ISA]] has gone through numerous iterations that added new [[instructions]] to performs specific tasks. These collections of new instructions are grouped into '''extensions'''. Different microprocessor models have different levels of support for certain extensions. | The [[x86]] [[instruction set architecture|ISA]] has gone through numerous iterations that added new [[instructions]] to performs specific tasks. These collections of new instructions are grouped into '''extensions'''. Different microprocessor models have different levels of support for certain extensions. | ||
+ | |||
+ | == Timeline == | ||
+ | {| class="wikitable" | ||
+ | ! !! Extension !! First [[µarch]] !! Description | ||
+ | |- | ||
+ | | [[1978]] || {{\|Real}} || {{intel|8086|l=arch}} || Original Real mode | ||
+ | |- | ||
+ | | [[1982]] || {{\|Protected}} || {{intel|80186|l=arch}} || Protected mode | ||
+ | |- | ||
+ | | [[1985]] || {{\|SMM}} || {{intel|80386|l=arch}} || System Management Mode | ||
+ | |- | ||
+ | | [[1989]] || {{\|FPU}} || {{intel|80486|l=arch}} || Incorporates the [[x87]] [[FPU]] into the same [[die]] | ||
+ | |- | ||
+ | | [[1996]] || {{\|MMX}} || {{intel|P5|l=arch}} || First implementation for [[SIMD]] instructions | ||
+ | |- | ||
+ | | [[1998]] || {{\|3DNow!}} || {{amd|K6-2|l=arch}} || SIMD extension for manipulating single-precision floating point | ||
+ | |- | ||
+ | | [[1999]] || {{\|SSE}} || {{intel|P5|l=arch}} || Streaming SIMD Extensions, SIMD for single-precision floating point | ||
+ | |- | ||
+ | | [[1999]] || {{\|E3DNow!}} || {{amd|K7|l=arch}} || Extended 3DNow! (New DSP instructions + some {{\|MMX}} instructions) | ||
+ | |- | ||
+ | | [[1999]] || {{\|Professional 3DNow!}} || || A name given by AMD for {{\|E3DNow!}} + {{\|SSE}} | ||
+ | |- | ||
+ | | [[1999]] || {{\|EMMX}} || {{\|P6}} || Extended MMX; an extension to MMX | ||
+ | |- | ||
+ | | [[2001]] || {{x86|SSE2}} || {{intel|P6|l=arch}} || Attempt to replace the original {{\|MMX}} instructions; use wider {{x86|XMM}} registers have offer better performance | ||
+ | |- | ||
+ | | [[2004]] || {{x86|SSE3}} || {{intel|Core|l=arch}} || Streaming SIMD Extensions 3; new instructions to operate on multiple values in the same register | ||
+ | |- | ||
+ | | [[2006]] || {{x86||SSSE3}} || {{intel|Core|l=arch}} || Supplemental Streaming SIMD Extensions 3; additional instructions for working with packed integers | ||
+ | |- | ||
+ | | [[2007]] || {{x86||SSE4.1}} || {{intel|Penryn|l=arch}} || Streaming SIMD Extensions 4.1; initial set of instructions for manipulating media data | ||
+ | |- | ||
+ | | [[2007]] || {{x86|SSE4a}} || {{amd|K10|l=arch}} || 4 SIMD instructions, not related to 4.1/4.2 | ||
+ | |- | ||
+ | | [[2007]] || {{x86|ABM}} || {{amd|K10|l=arch}} || Advanced Bit Manipulation; bit counting instructions | ||
+ | |- | ||
+ | | [[2008]] || {{x86||SSE4.2}} || {{intel|Nehalem|l=arch}} || Streaming SIMD Extensions 4.2; second set of instructions for manipulating media data | ||
+ | |- | ||
+ | | style="text-decoration: line-through;" | [[2007]] || style="text-decoration: line-through;" | {{x86|SSE5}} || || Proposed by AMD in 2007 but was never implemented | ||
+ | |- | ||
+ | | [[2008]] || {{x86||SSE4}} || || Streaming SIMD Extensions 4; SSE4.1 | ||
+ | |- | ||
+ | | [[2009]] || {{x86|XOP}} || {{amd|Bulldozer|l=arch}} || eXtended Operations; various vector operations | ||
+ | |- | ||
+ | | [[2010]] || {{x86|CLMUL}} || {{intel|Westmere|l=arch}} | ||
+ | |- | ||
+ | | [[2011]] || {{x86|AVX}} || {{intel|Sandy Bridge|l=arch}} || Advanced Vector Extensions; introduces 256-bits integer operations | ||
+ | |- | ||
+ | | [[2012]] || {{x86|F16C}} || {{intel|Ivy Bridge|l=arch}} || Extension for performing half-precision <-> single-precision conversions | ||
+ | |- | ||
+ | | [[2011]] || {{x86|FMA4}} || {{amd|Bulldozer|l=arch}} || 4-operands fused multiply-add | ||
+ | |- | ||
+ | | [[2011]] || {{x86|AES}} || {{intel|Westmere|l=arch}} || Instructions for optimizing AES operations | ||
+ | |- | ||
+ | | [[2012]] || {{x86|TBM}} || {{amd|Piledriver|l=arch}} || Trailing Bit Manipulation; bit manipulation instructions designed to be compiler intrinsics | ||
+ | |- | ||
+ | | [[2013]] || {{x86|BMI1}} || {{amd|Jaguar|l=arch}} || Bit Manipulation Instruction Set 1; introduces a number of bit manipulation instructions | ||
+ | |- | ||
+ | | [[2013]] || {{x86|BMI2}} || {{intel|Haswell|l=arch}} || Bit Manipulation Instruction Set 2; introduces additional bit manipulation instructions | ||
+ | |- | ||
+ | | [[2013]] || {{x86|FMA3}} || {{intel|Haswell|l=arch}} || 3-operands fused multiply-add | ||
+ | |- | ||
+ | | [[2013]] || {{x86|AVX2}} || {{intel|Haswell|l=arch}} || Advanced Vector Extensions; additional instructions | ||
+ | |- | ||
+ | | [[2014]] || {{x86|ADX}} || {{intel|Haswell|l=arch}} || Multi-Precision Add-Carry Instruction extension | ||
+ | |- | ||
+ | | [[2015]] || {{x86|AVX-512}} || {{intel|Airmont|l=arch}} || 512 bit register operations | ||
+ | |} | ||
+ | |||
+ | |||
+ | BMI / BMI1 + BMI2 / Bit Manipulation instructions |
Revision as of 23:47, 24 November 2016
The x86 ISA has gone through numerous iterations that added new instructions to performs specific tasks. These collections of new instructions are grouped into extensions. Different microprocessor models have different levels of support for certain extensions.
Timeline
Extension | First µarch | Description | |
---|---|---|---|
1978 | Real | 8086 | Original Real mode |
1982 | Protected | 80186 | Protected mode |
1985 | SMM | 80386 | System Management Mode |
1989 | FPU | 80486 | Incorporates the x87 FPU into the same die |
1996 | MMX | P5 | First implementation for SIMD instructions |
1998 | 3DNow! | K6-2 | SIMD extension for manipulating single-precision floating point |
1999 | SSE | P5 | Streaming SIMD Extensions, SIMD for single-precision floating point |
1999 | E3DNow! | K7 | Extended 3DNow! (New DSP instructions + some MMX instructions) |
1999 | Professional 3DNow! | A name given by AMD for E3DNow! + SSE | |
1999 | EMMX | P6 | Extended MMX; an extension to MMX |
2001 | SSE2 | P6 | Attempt to replace the original MMX instructions; use wider XMM registers have offer better performance |
2004 | SSE3 | Core | Streaming SIMD Extensions 3; new instructions to operate on multiple values in the same register |
2006 | SSSE3 | Core | Supplemental Streaming SIMD Extensions 3; additional instructions for working with packed integers |
2007 | SSE4.1 | Penryn | Streaming SIMD Extensions 4.1; initial set of instructions for manipulating media data |
2007 | SSE4a | K10 | 4 SIMD instructions, not related to 4.1/4.2 |
2007 | ABM | K10 | Advanced Bit Manipulation; bit counting instructions |
2008 | SSE4.2 | Nehalem | Streaming SIMD Extensions 4.2; second set of instructions for manipulating media data |
2007 | SSE5 | Proposed by AMD in 2007 but was never implemented | |
2008 | SSE4 | Streaming SIMD Extensions 4; SSE4.1 | |
2009 | XOP | Bulldozer | eXtended Operations; various vector operations |
2010 | CLMUL | Westmere | |
2011 | AVX | Sandy Bridge | Advanced Vector Extensions; introduces 256-bits integer operations |
2012 | F16C | Ivy Bridge | Extension for performing half-precision <-> single-precision conversions |
2011 | FMA4 | Bulldozer | 4-operands fused multiply-add |
2011 | AES | Westmere | Instructions for optimizing AES operations |
2012 | TBM | Piledriver | Trailing Bit Manipulation; bit manipulation instructions designed to be compiler intrinsics |
2013 | BMI1 | Jaguar | Bit Manipulation Instruction Set 1; introduces a number of bit manipulation instructions |
2013 | BMI2 | Haswell | Bit Manipulation Instruction Set 2; introduces additional bit manipulation instructions |
2013 | FMA3 | Haswell | 3-operands fused multiply-add |
2013 | AVX2 | Haswell | Advanced Vector Extensions; additional instructions |
2014 | ADX | Haswell | Multi-Precision Add-Carry Instruction extension |
2015 | AVX-512 | Airmont | 512 bit register operations |
BMI / BMI1 + BMI2 / Bit Manipulation instructions