2024年6月3日发(作者:司寇莺莺)
x86 指令集发展历程
从 1976 年第 1 代 x86 processor 算起,x86 指令发展经过了 35 年,这里回顾
一下 x86 指令集的历程以及 AMD 与 Intel 的指令斗争史:
•
8086 指令:伴随着第 1 代的 x86 processor 推出第 1 代的 x86 指令集,之后
发展的处理器都兼容于第 1 代的指令。
•
MMX 指令:Intel 在 1996 年推出的第 1 代 SIMD(Single Instruction Multiple
Data)指令集,使用在 p5 microarchitecture(微架构)上的 Pentium 处理器。随后 AMD
在 1997 年的 K6 处理器上加入了 MMX 指令的支持。
•
3DNow!指令:1998 年 AMD 首发推出了 21 条自己的 SIMD 指令集,3DNow!
的性能要优于 MMX 指令,使用在 AMD K6-2 处理器上。随后 AMD 在 1999 年 6 月
发布的 Athlon 处理器上使用了增强版的 3DNow! 指令(3DNow!+)。
•
SSE 指令:1999 年 Intel 推出了第 1 代的 SSE(Streaming SIMD Extensions)
指令以回击 AMD 的 3DNow! 指令,使用在 Pentium III 处理器上。随后 AMD 在
2001 年 10 月 发布 的 Athlon XP 处理器上首次加入了 SSE 指令集。
•
SSE2 指令:Intel 在 2001 年推出第 2 个版本的 SSE 指令,使用在 Pentium 4
处理器上,AMD 在 2003 年推出的 Athlon 64 和 Opteron 处理器上加入对 SSE2 指
令的支持。
•
x86-64 指令:2003 年 AMD 推出了第 8 代名为 K8 的 microarchitecture,实
现了 x86-64 架构,支持 64位 的扩展技术。从Athlon 64 处理器开始使用 x86-64 扩
展技术,AMD 将自己的 x86-64 架构实现称为 AMD64 架构。Intel 最终在 2004 年
发布的 Prescott 微架构的 Pentium 4 处理器上实现 x86-64 扩展技术,最初被称为
IA-32e 或者 EM64T 技术,最终被统一为 Intel64 架构,Intel64 是 x86-64 体系的
Intel 实现,完全兼容于 AMD64 架构。这是 Intel 唯一的一次追随 AMD
•
SSE3 指令:Intel 在 2004 年推出了第 3 版 SSE 指令,使用在 Prescott 微架
构的 Pentium 4 处理器上,在 2005 年 AMD 在对 Athlon 64 处理器上加入了 SSE3
的支持。
•
SSSE3 指令:SSSE3 指令是对 SSE3 指令的补充,新增了 16 条指令,在最后的
一版 Prescott 微架构代号为 Tejas 的 Pentium 4 处理器上首次加入 SSSE3 指令,以
及 2006 年的 Core 微架构的处理器上开始加入 SSSE3 指令。在 AMD 阵营中,目前
已经发布的 Bobcat 微架构的 APU 处理器上加入了对 SSSE3 的支持,以及在即将发布
的 Bulldozer 微架构的处理器上支持。
•
SSE4.1 指令:Intel 在 2007 年 11 月发布的 Penryn 微架构的处理器上加入了
SSE4.1 指令,SSE4.1 指令共 47 条。在AMD阵营中,目前发布的处理器不支持 SSE4.1
指令,即将发布的 Bulldozer 微架构的处理器将支持 SSE4.1 指令。
•
SSE4a 指令:AMD 在 2007 年在 K10 微架构的处理器加入了 SSE4A 指令集,
SSE4A 只有 4 条。在 K10 微架构处理器上还加入 POPCNT 与 LZCNT 指令
•
SSE4.2 指令:Intel 在 2008 年 11 月发布的 Nehalem 微架构的 Core i7 处理
器上加入 SSE4.2 指令共 7 条。在 AMD 阵营中,目前发布的处理器不支持 SSE4.2 指
令,即将发布的 Bulldozer 微架构的处理器将支持 SSE4.2 指令
•
SSE5 指令:SSE5 是一个纸面上的指令集,并没有最终实现,AMD 在 2007 年 8
月公布 SSE5 指令集规范,在 2009 年 5 月 AMD 推出了 XOP,FMA4 以及 CVT16
来取代 SSE5 指令。
•
AVX 指令:2008 年 3 月 Intel 发布了 AVX(Advanced Vector Extensions)
指令集,首次在 Sandy Bridge 微架构的 Core i7/i5/i3 处理器上使用。AMD 将在
Bulldozer 微架构的处理器上加入 AVX 指令的支持。
•
AES 指令:2008 年 3 月 Intel 发布了 AES(Advanced Encryption Standard)
指令,使用在 Westmere 微架构的 Core i7/i5 处理器上。AMD 将在 Bulldozer 微架
构的处理器上使用。
•
FMA 指令:FMA 指令是 AVX 指令集中的一部分,Intel 将在 2013 年的
Haswell 微架构处理器上使用。
•
XOP,FMA4 以及 CVT16 指令:AMD 在 2009 年 5 月发布了 XOP,FMA4 以
及 CVT16 指令,这些指令集取代了 SSE5 指令,在原有的 SSE5 指令基础上,使用了
兼容 AVX 指令的设计方案重新进行了设计,因此,XOP,FMA4 以及 CVT16 在指令的
编码方面是兼容于 AVX 的方案。这使得 AVX/FAM4/CVT16 指令与 AVX 指令同时存在,
而不会产生冲突,这些指令将在 Bulldozer 微架构的处理器上使用,Intel 暂时没宣告支
持。
目前资料显示,Bulldozer 微架构将集大成,支持上面的所有指令集(FMA 指令中
的 FMA4 指令)。
2024年6月3日发(作者:司寇莺莺)
x86 指令集发展历程
从 1976 年第 1 代 x86 processor 算起,x86 指令发展经过了 35 年,这里回顾
一下 x86 指令集的历程以及 AMD 与 Intel 的指令斗争史:
•
8086 指令:伴随着第 1 代的 x86 processor 推出第 1 代的 x86 指令集,之后
发展的处理器都兼容于第 1 代的指令。
•
MMX 指令:Intel 在 1996 年推出的第 1 代 SIMD(Single Instruction Multiple
Data)指令集,使用在 p5 microarchitecture(微架构)上的 Pentium 处理器。随后 AMD
在 1997 年的 K6 处理器上加入了 MMX 指令的支持。
•
3DNow!指令:1998 年 AMD 首发推出了 21 条自己的 SIMD 指令集,3DNow!
的性能要优于 MMX 指令,使用在 AMD K6-2 处理器上。随后 AMD 在 1999 年 6 月
发布的 Athlon 处理器上使用了增强版的 3DNow! 指令(3DNow!+)。
•
SSE 指令:1999 年 Intel 推出了第 1 代的 SSE(Streaming SIMD Extensions)
指令以回击 AMD 的 3DNow! 指令,使用在 Pentium III 处理器上。随后 AMD 在
2001 年 10 月 发布 的 Athlon XP 处理器上首次加入了 SSE 指令集。
•
SSE2 指令:Intel 在 2001 年推出第 2 个版本的 SSE 指令,使用在 Pentium 4
处理器上,AMD 在 2003 年推出的 Athlon 64 和 Opteron 处理器上加入对 SSE2 指
令的支持。
•
x86-64 指令:2003 年 AMD 推出了第 8 代名为 K8 的 microarchitecture,实
现了 x86-64 架构,支持 64位 的扩展技术。从Athlon 64 处理器开始使用 x86-64 扩
展技术,AMD 将自己的 x86-64 架构实现称为 AMD64 架构。Intel 最终在 2004 年
发布的 Prescott 微架构的 Pentium 4 处理器上实现 x86-64 扩展技术,最初被称为
IA-32e 或者 EM64T 技术,最终被统一为 Intel64 架构,Intel64 是 x86-64 体系的
Intel 实现,完全兼容于 AMD64 架构。这是 Intel 唯一的一次追随 AMD
•
SSE3 指令:Intel 在 2004 年推出了第 3 版 SSE 指令,使用在 Prescott 微架
构的 Pentium 4 处理器上,在 2005 年 AMD 在对 Athlon 64 处理器上加入了 SSE3
的支持。
•
SSSE3 指令:SSSE3 指令是对 SSE3 指令的补充,新增了 16 条指令,在最后的
一版 Prescott 微架构代号为 Tejas 的 Pentium 4 处理器上首次加入 SSSE3 指令,以
及 2006 年的 Core 微架构的处理器上开始加入 SSSE3 指令。在 AMD 阵营中,目前
已经发布的 Bobcat 微架构的 APU 处理器上加入了对 SSSE3 的支持,以及在即将发布
的 Bulldozer 微架构的处理器上支持。
•
SSE4.1 指令:Intel 在 2007 年 11 月发布的 Penryn 微架构的处理器上加入了
SSE4.1 指令,SSE4.1 指令共 47 条。在AMD阵营中,目前发布的处理器不支持 SSE4.1
指令,即将发布的 Bulldozer 微架构的处理器将支持 SSE4.1 指令。
•
SSE4a 指令:AMD 在 2007 年在 K10 微架构的处理器加入了 SSE4A 指令集,
SSE4A 只有 4 条。在 K10 微架构处理器上还加入 POPCNT 与 LZCNT 指令
•
SSE4.2 指令:Intel 在 2008 年 11 月发布的 Nehalem 微架构的 Core i7 处理
器上加入 SSE4.2 指令共 7 条。在 AMD 阵营中,目前发布的处理器不支持 SSE4.2 指
令,即将发布的 Bulldozer 微架构的处理器将支持 SSE4.2 指令
•
SSE5 指令:SSE5 是一个纸面上的指令集,并没有最终实现,AMD 在 2007 年 8
月公布 SSE5 指令集规范,在 2009 年 5 月 AMD 推出了 XOP,FMA4 以及 CVT16
来取代 SSE5 指令。
•
AVX 指令:2008 年 3 月 Intel 发布了 AVX(Advanced Vector Extensions)
指令集,首次在 Sandy Bridge 微架构的 Core i7/i5/i3 处理器上使用。AMD 将在
Bulldozer 微架构的处理器上加入 AVX 指令的支持。
•
AES 指令:2008 年 3 月 Intel 发布了 AES(Advanced Encryption Standard)
指令,使用在 Westmere 微架构的 Core i7/i5 处理器上。AMD 将在 Bulldozer 微架
构的处理器上使用。
•
FMA 指令:FMA 指令是 AVX 指令集中的一部分,Intel 将在 2013 年的
Haswell 微架构处理器上使用。
•
XOP,FMA4 以及 CVT16 指令:AMD 在 2009 年 5 月发布了 XOP,FMA4 以
及 CVT16 指令,这些指令集取代了 SSE5 指令,在原有的 SSE5 指令基础上,使用了
兼容 AVX 指令的设计方案重新进行了设计,因此,XOP,FMA4 以及 CVT16 在指令的
编码方面是兼容于 AVX 的方案。这使得 AVX/FAM4/CVT16 指令与 AVX 指令同时存在,
而不会产生冲突,这些指令将在 Bulldozer 微架构的处理器上使用,Intel 暂时没宣告支
持。
目前资料显示,Bulldozer 微架构将集大成,支持上面的所有指令集(FMA 指令中
的 FMA4 指令)。