向后兼容性

了解 X86 的发展历史非常有必要,因为 X86 指令集的最大特点就是极其优异的向后兼容性,所以在 x86 中可以看到从远古时代到现在的所有特性。当然在我接触 X86 之前,我能想到的向后兼容性,其实是类似于 A64 和 A32 的关系,寄存器宽度发生一些变化,有了一些新的寄存器,然而在 X86 中并不是这样:

  • 有很多特性并不是直线发展的:比如说段式内存管理,就直接被踢出历史长河了
  • 又很多特性被“黑科技”地复用了:比如系统调用使用的是中断门
  • 过于古老以至于不符合直觉了:直觉来源于现有的软硬件架构,而在古代可能很多相关技术环境和现代不一致,导致直觉无法发挥作用。

4004, 8008, 8080

在 1971 年,Intel 开发出第一款微处理器,这是一款 4 位处理器,称之为 4004 ,但是没有掀起什么浪花。

在 1972 年, Intel 开发出来了 8008 ,这是一款 8 位处理器,也是首款在 PC 上使用的处理器。

在 1974 年,Intel 开发出了 8080 ,它是工艺更新的 8 位处理器,运算速度比 8008 提升了 10 倍。这使得它成为了首款真正的在市场上销售的处理器。

在 1975 年,AMD 推出了 Am9080 ,这是 8080 的逆向(也就是抄袭)。但是 AMD 并没有被 Intel 起诉,反而是与 Intel 在 1976 年签署了 80 年的交叉许可协议,即允许 AMD 生产这期间 Intel 设计的芯片。这是因为许多市场为了预防垄断,并不接受“单一供货商”的模式,所以 AMD 可以作为 8080 的第二供货商;同时 AMD 还可以帮助扩大 Intel 的产能,抢占市场。

8086

在 1978 年,Intel 推出了 8086 ,这是一款 16 位处理器,它具有 20 位地址总线,所以采用了段式管理的方式,这种模式被称为实模式(real mode),对于多任务管理并不友善。这款处理器使用的 ISA 就是 X86 ,一个传奇诞生了。

在 1979 年,Intel 在 8086 的基础上开发出了 8088 ,这是一款 8 位处理器,这是因为 16 位处理器的成本过高,反而 8 位处理器更受到市场青睐,8088 被 IBM PC 采用,在商业上大获成功。

在 1982 年,Intel 开发出了 80286 ,它初步引入了保护模式(特权等级),为多任务管理提供了硬件支持。

而 AMD 在这几年专注于“Intel 吃肉,我喝汤”,但是当它仿照 80286 开发出 Am286 后,Intel 意识到 AMD 有了一定的威胁(此时 Am286 的性能比 80286 要明显好),所以就在 1985 年撕毁了授权协议,禁止 AMD 生产自己设计的芯片(也就是从 80386 开始)。

80386

在 1985 年,Intel 推出了 80386 ,这是一个 32 位的处理器,它搭载的 ISA 也被称为 IA-32(应该算 X86 的一个分支),它引入了分页机制。80386 成为了新的经典设计。

在 1989 年,Intel 推出了 80486 ,他有两个特点,一个是搭载了浮点指令集 X87 ,另一个是在微体系结构中引入了流水线架构。

因为协议撕毁,所以 AMD 只好自己研发 CPU ,少了 Intel 的设计,AMD 研发之路艰辛至极。在 1991 年才推出了 Am386 ,但是性能却比 80386 要更好(Am386 的频率是 40MHz ,而 80386 只有 33MHz)。

在 1992 年,AMD 推出了 Am486 ,此时性能依然要好过 80486 大约 20% 。

P5 vs K5

在 1993 年,Intel 推出了 Pentium 奔腾 CPU ,它在微体系结构中首次引入了超标量架构(P5 架构)。除了超标量外,Pentium 还引入了分支预测单元。

在 1996 年,Intel 推出了基于 P5 架构的微处理器 Pentium MMX,添加了 MMX 指令集。MMX(Multi-Media Extension)指令集,目的是增强提升 CPU 在 2D 音像、图形和通信等多媒体应用对诸如编码与解码等工作的效率。MMX 的本质是一种 SIMD 指令集,后来的 SSE (Streaming SIMD Extensions) 和 AVX (Advanced Vector Extensions) 都是在其上发展出来的。

Pentium 也被叫做 80586 ,据传之所以 Intel 要起一个新名字,是为了和友商 AMD 拉开差距。 Pent- 在英文前缀中,就是“5”的意思。

在 1996 年,AMD 也推出自己的新产品 K5 ,但是上市时间有些过晚了,加上项目一直受到设计和制造问题的困扰,所以市场表现并不好。

P6 vs K6 K7

在 1996 年,Intel 发布了 Pentium Pro ,它在微体系结构上引入了乱序发射设计,并且集成了 L2Cache ,这种架构被称为 P6 架构。但是因为 Cache 的成本过高,所以 Pentium Pro 属于是“叫好不叫座”,是 Intel 第一个失败的产品。

在 1997 年,Intel 发布了 Pentium II ,解决了一些 cache 的成本问题;在 1999 年发布了 Pentium III ,引入了新的 SIMD 指令集 SEE 指令集。它们都是 P6 架构。

除此之外,Intel 开始对市场进行细分,它在 1998 年引入了 Celeron(赛扬)来抢占低端市场,同年在服务器领域引入 Xeon(至强)。

而在 ARM 这边,它买断了 NexGen 公司,这家公司的 Nx686 架构成了 ARM 的 K6 架构,在 1997 年时投入市场并大获成功。

在 1998 年,ARM 推出了 K6-2 架构,这个架构上搭载了 3DNow! SIMD 指令集。,用于对标 Pentium II 和 III 。

在 1999 年,ARM 推出了 K7 架构,也被称为 Athlon(锐龙)架构,新名字传达出 ARM 不再是 Intel 山寨机的决心。事实也确实这样,锐龙吊打 Pentium III 和它的后继产品。

此外,ARM 还发布了 Duron(毒龙)来抢占低端市场。

Itanium vs K8

在 2001 年,Intel 推出了 Itanium(安腾)CPU ,它尝试不再兼容 X86 指令集,而是提出新的 64 位指令集,然后就被市场狠狠教育了,安腾的销量非常差。

在 2003 年,ARM 推出了 Athlon-64 架构,这是一种兼容之前 X86 指令集的 64 位指令集,被称作 AMD64 或者 X64 ,因为反响很好,导致 Intel 最后也不得不遵循这套指令集开发 64 位处理器。

在 2002 年,Duron 停产,接替它的是 Sempron(闪龙)。此外在 2003 年,ARM 也推出了自己的服务器处理器 Opteron (皓龙)。

SkyLake vs Zen

在后面的时间里,随着工艺的进步放缓,摩尔定律逐渐失效,架构设计也没有太多的花活儿,所以后面的趋势就变成了:

  • 挤牙膏:Intel 采用了 Tik-Tok 策略,在 Tik 年优化制程工艺,在 Tok 年优化架构设计。但是这种进步都比较缓慢。
  • 和 GPU 集成:ARM 因为有 GPU 生产线,所以提出了 APU 的概念,即 APU = CPU + GPU 。
  • 多核:既然单核性能无法提升,那么就采用多个处理器核心。

在这段历史中,应用场景被细化成“个人 PC”和“服务器”两个领域,Intel 和 AMD 在这些分赛道上展开了激烈的角逐。在 PC 领域,是 Core(酷睿) vs Ryzen ,在服务器领域是 Xeon (/ˈziːɒn/,至强) vs Epyc(霄龙)。

Server CPU 支持多路互联,简单的说就是 1 台机器可装多个 CPU,PC CPU 不支持这种工作方式。由于服务器 CPU 针对高稳定性设计,在用料上一般都是选用优质材质,并且支持多路互联和长时间工作,和相同性能的普通 CPU 比,价格自然也是更高。此外,高端服务器 CPU 更上运用大量的最新先进技术,价格更贵。

需要注意的是,上边的名字只是产品系列名,并不是微架构名。Intel 在这个时期的微架构是可拓展 CPU (Scalable Processor),名字先是 SkyLake ,然后是 Cove ;而 AMD 的微架构是 Zen 。

SkyLake 相比于其前任,在多核互联,片内总线方面,从 Ring 架构(一维)演变成了 Mesh 架构(二维)。在片间总线方面,从 QPI 演变成了 UPI

PC

在这段时期,Intel 的处理器系列为 Core(酷睿),基本上吊打 AMD ,这是因为 AMD 经历了一个非常失败的收购案,同时本身的制程工业也不如 Intel 。此外 AMD 还过分依赖 GPU 集成和多核处理器,比较忽视单核性能的提高,导致市场对 AMD 并不买账。

这种吊打情况直到 2017 年,ARM 推出了基于 Zen 架构的 Ryzen(锐龙)系列,在服务器市场推出了 Epyc(霄龙),皓龙时代结束。同时速龙堕入低端市场。这种策略和技术的调整使得 AMD 的市场占有率又重新增加。

Server

Intel 在服务器 CPU 的型号格式如下:

其中产品级别包括 Platinum(铂金), Golden, Silver, Bronze ,原本是 E3, E5, E7 ,这些都类似与 PC Core 的 i3, i5, i7 。分化高中低端市场。

Intel Scalable CPU 代际表格整理:

时间代数CPU 代际制程工艺微架构
20171Skylake(server)14nmSkylake
20192Cascade Lake14nmSkylake
20203Cooper Lake14nmSkylake
20213Ice Lake(server)10nmSunny Cove
20234Sapphire Rapids7nmGolden Cove

在 Lake 之前的架构是 Bridge 和 Well 架构。

总结

Intel 和 ARM 相爱相杀了半个世纪,回顾它们的角力,我们关注了处理器在位宽、安全、频率、架构、拓展指令集、工艺和市场等多个方面的较量。

附录