博主头像
mxd's Blog

把日子当 commit,把崩溃当 feature,在不断的挫折里给现实偷偷打上 nightly 更新!

架构的演变之路

今天想和大家聊聊处理器架构这个话题,从经典的i386起步,一路讲到如今的x86-64及其各种变体。为什么有些网站还标i486、i586、i686?x86-64-v3又是什么鬼?IA-64和它有啥关系?还有那些v2、v3、v4的区别?顺便说说AMD64、x64这些别名的来龙去脉。咱们一步步来,中间穿插点历史和例子,力求通俗易懂。哦,对了,还会聊聊ARM系列的发展,以及PowerPC、s390x这些不太常见的家伙。最后我来列个表格总结一下常见架构。

i386的起点:x86时代的开端

一切得从上世纪80年代说起。Intel在1978年推出8086处理器,这是x86架构的鼻祖。但真正让x86家喻户晓的是1985年的80386(简称i386)。i386是第一个32位x86处理器,支持虚拟内存、多任务,能运行复杂的操作系统。它奠定了PC世界的基石,Windows 95、Linux早期版本都基于此。i386的指令集简单高效,但受限于32位地址空间,只能寻址4GB内存,这在当时够用,可后来就不行了。

为什么有些网站还标i486、i586、i686?这是因为x86架构在i386基础上不断迭代优化。i486(1989年)加了内置浮点单元和缓存,提升了性能;i586是Pentium(1993年)的代号,引入超标量执行;i686对应Pentium Pro(1995年),优化了分支预测和乱序执行。这些标签常用于软件编译,表示最低兼容级别。比如,Linux包标i686,就意味着它假设你的CPU至少支持Pentium Pro的指令扩展。如果你的古董机是i386级别,跑不了。

传统CPU大多是x86架构,也就是i386及其后代。直到64位时代来临。

64位革命:AMD64、x64和x86-64的别名游戏

进入2000年代,32位内存瓶颈越来越明显。Intel先推IA-64(Itanium架构),这是个全新的64位设计,基于EPIC(显式并行指令计算),不是x86兼容的。IA-64针对服务器和高性能计算,指令集复杂,支持大量并行执行,但兼容性差,软件生态跟不上,最终在市场失宠。简单说,IA-64是Intel的野心之作,但不是x86的延续。

真正颠覆的是AMD在2003年推出的Opteron处理器,引入AMD64架构。它扩展了x86到64位,支持更大的内存(理论上2^64字节)和更多寄存器,同时向下兼容32位x86。这套设计叫x86-64,因为它是x86的64位版。AMD64是AMD的商标,Intel后来跟进,叫EM64T(Extended Memory 64 Technology),但大家统一称x64或x86-64。这些其实是同义词:AMD64 = x64 = x86-64,都指同一套指令集架构(ISA)。

x86-64的改进巨大:64位寄存器从8个增到16个,地址空间爆炸式增长,还加了SSE2指令支持向量运算。结果,AMD抢了先机,Intel只能兼容AMD的设计。现在,所有现代PC CPU(如Intel Core、AMD Ryzen)都是x86-64。

x86-64的微架构级别:v1、v2、v3、v4的区别和改进

x86-64不是一成不变的。为了优化软件,社区定义了微架构级别(microarchitecture levels),从v1到v4,每个级别要求CPU支持特定指令扩展。v1是基础,v2/v3/v4逐步添加高级功能,主要改进在向量处理、位操作和并行计算上。这些级别帮助软件开发者编译更高效的代码,但也意味着兼容性trade-off。

  • v1(baseline):原始x86-64,2003年AMD K8时代。支持64位、SSE2。传统CPU如早期Athlon 64属于此。
  • v2:2009年左右,Nehalem时代。添加SSE4.2、SSSE3、POPCNT等。改进:更快的数据处理、字符串操作、人口计数指令,提升加密和搜索效率。例子:Intel Core i7-920。
  • v3:2013年Haswell时代。添加AVX2、BMI2、FMA3等。改进:256位向量运算、位移位优化,大幅提升多媒体、科学计算性能。例子:Intel Xeon E3-1230 v3、AMD Ryzen 3 3200G。
  • v4:2015年Skylake时代。添加AVX-512。改进:512位向量,AI和大数据处理飞跃。目前(2025年)v4已普及,许多CPU支持,如Intel Xeon Scalable(Ice Lake+)、AMD EPYC 9004系列(Zen4支持AVX-512)。是的,v4真实存在,不再是概念。

区别在于指令集丰富度:v1最兼容但慢,v4最快但要求高。v2的CPU(如老Core 2 Duo)不能运行v3代码,会报非法指令。兼容吗?不向下兼容——v3软件在v2机上崩溃。怎么升级?换CPU主板套装,确保新CPU支持目标级别。软件侧,可以用工具如gcc -march=x86-64-v3重新编译。

拿具体CPU举例:Intel Xeon E5-2680 v4(Broadwell,2016年)支持v3(有AVX2)。AMD EPYC 7762(Rome,Zen2,2019年)也支持v3(AVX2完整)。v4例子:AMD Ryzen 9 7950X(Zen4)。

ARM系列的发展史:从嵌入式到霸主

ARM架构起于1983年Acorn电脑的RISC设计,强调低功耗、高效率。早期ARMv1到v4主打嵌入式,如手机、路由器。1990年代,ARMv4引入Thumb指令压缩,省内存。2000年代,ARMv7-A(如Cortex-A8)进军智能手机,支持多核、虚拟化。

2011年ARMv8-A标志转折:引入AArch64(arm64),64位执行状态,兼容32位AArch32。AArch64=arm64=ARMv8的64位模式。子版本如ARMv8.0-A基础,v8.1-A加虚拟化,v8.2-A加RAS错误处理,一路到v8.8-A(加密增强)。ARMv9-A(2021年)是最新大版本,添加SVE2向量、机密计算,子版到v9.5-A(2025年最新,优化AI和安全)。arm64-v1等不是官方,但常指v8.0,v2指v8.1等递增。arm64和aarch64等价,v8/v9是架构代。

ARM从手机称霸到服务器(如AWS Graviton),生态爆炸。相比x86,低功耗是王牌。

顺带说说其他奇葩架构:

  • PowerPC:IBM和Motorola1991年合作,RISC设计。早期用于Mac(G3/G4/G5),后来服务器和游戏机(如Xbox 360)。现在Power10+,强在AI和高性能计算。
  • s390x:IBM的64位大端序mainframe架构,从System/360演变。用于企业服务器,强调可靠性、虚拟化。Debian支持s390x移植,跑在IBM Z系列。

各种架构一览:

参考我熟悉的 Debian Linux 的架构移植(ports),咱们列个表。主流的先:

移植架构描述
amd6464位PC(amd64)到64位x86处理器的移植,支持32/64位用户空间。兼容AMD Opteron、Athlon、Sempron及Intel Pentium D、Xeon、Core系列。
arm6464位ARM(AArch64)到64位ARM v8指令集移植,支持Applied Micro X-Gene、AMD Seattle、Cavium ThunderX等。
armelEABI ARM32位小端序ARM,支持v5te兼容CPU,无FPU。
armhf硬浮点ABI ARM32位小端序ARM,支持FPU、Thumb-2、VFPv3-D16,至少ARMv7。
i38632位PC(i386)到32位x86移植,支持Intel 386+、AMD K6+、Athlon等IA-32处理器。
ppc64elPOWER7+,POWER864位小端序POWER,使用Open Power ELFv2 ABI。
riscv64RISC-V(64位小端序)到64位小端序RISC-V,自由开放ISA。
s390xSystem z到IBM System z,64位用户空间。

更冷门的单独列,因为这些不太常见,常用于特定硬件或遗留系统:

  • alpha:64位RISC Alpha移植。
  • arm:OABI ARM,使用旧ABI。
  • avr32:Atmel 32位RISC AVR32。
  • hppa:HP PA-RISC。
  • ia64:Intel Itanium IA-64,首个64位架构,别和Intel 64混淆(后者是amd64)。
  • loong64:64位小端序LoongArch。
  • m32:Renesas 32位RISC M32R。
  • m68k:Motorola 68k,用于Sun3、Mac、Atari、Amiga。
  • mips:大端序MIPS,用于SGI。
  • mipsel:小端序MIPS,用于Digital DECstation。
  • mips64el:小端序64位MIPS,N64 ABI,硬件浮点。
  • or1k:OpenRISC 1200开源CPU。
  • powerpc:Motorola/IBM PowerPC,用于老Mac、CHRP/PReP。
  • powerpcspe:PowerPC Signal Processing Engine,低功耗e500 CPU。
  • ppc64:大端序POWER4到POWER9,PowerPC ELF ABI。
  • s390:IBM S/390和zSeries。
  • sparc:Sun SPARC,用于UltraSPARC和sun4继承者。
  • sparc64:64位SPARC。
  • sh4:Hitachi SuperH,支持J-Core。
  • x32:64位PC用32位指针,amd64指令但小内存占用。

这些架构反映了计算多样性,从PC到嵌入式,再到大型机。x86-64主导桌面,但ARM在移动称王,RISC-V在崛起。

希望这篇帮你理清思路。如果你有老机器,查查/proc/cpuinfo看支持哪个级别。欢迎评论交流!

参考文献

架构的演变之路
https://blog.mxdyeah.top/mxdyeah_blog_post/architecture_evolve.html
本文作者 mxdyeah
发布时间 2025-08-12
许可协议 CC BY-NC-SA 4.0
发表新评论

以下是Google广告,请注意辨别其内容: