i386、i486、i586、 i686、 x86、x86_64、x64、amd_64详解

在 Linux 系统环境下经常遇到一些后缀:i386、i486、i586、 i686、 x86、x86_64、amd_64,许多朋友对这些后缀的含义一头雾水,这里就统一为大家详细介绍一下。介绍这些后缀含义之前,需要先来了解一下CPU 的一些关键发展历,可选择性阅读加粗字体部分。

x86 架构首度出现在 1978 年推出的 Intel 8086 CPU(有不少理工科朋友在微机原理和单片机课程上都学习过这款经典的 CPU 吧)。Intel 之后又推出了包括 80186、80286、80386 以及 80486。在设计上,Intel 后续推出这些处理器所使用的指令集都是在 8086 CPU 的基础上添加新指令进行改进的,因此,可以说都是向下兼容的(Backward Compatible),即能在 8086 上运行的程序在后面的 80486 上也一定能运行。由于这些 CPU 多数都是以 86 结尾,所以把这一系列的指令集称之为 x86 指令集( 8088 CPU 除外,但它也是 x86),对应的 CPU 架构称为 x86 架构(字母 x 代表可以是不同的数字)。准确的来讲,x86 这一术语并不是指的某一个(具体 CPU 使用的)具体的指令集,而是在 8086(的指令集)基础上发展而来的所有指令集的泛称

在 80486 以后 Intel 推出的绝大多数 CPU 都是“x86”的,包括 Pentium(奔腾) 、Pentium Pro 、Pentium MMX ,Pentium II ,还有后面的 Pentium III、Pentium 4 、Pentium M、Pentium D 、Celeron(赛扬)全系列、Core(酷睿)全系列,x86 系列的 Xeon(至强)。Intel 以外最成功的制造商为 AMD,其早先产品 Athlon(速龙)系列处理器的市场份额仅次于 Intel Pentium,AMD 还推出过 Duron(毒龙)系列、Sempron(闪龙)系列、Opteron(皓龙)系列、 Turion(炫龙)系列、Phenom(官方中文名称为“羿龙”,而台湾则译为“飞龙”,俗称“肥龙”)系列、FX(推土机)系列、APU(集成了较强的 GPU) 系列、以及跨越性的 Ryzen(锐龙)系列等桌面处理器。AMD 的这些处理器也都是“x86”的。其他公司也有制造 x86 架构的处理器,还有 Cyrix(现为威盛电子所收购)、NEC 集团、IBM、IDT 以及 Transmeta。

Xeon(至强)CPU 是 Intel 专为服务器准备的 CPU,除个别型号外,基本都屏蔽了集成显卡,相比于桌面 CPU频率稍低,特点是单颗 CPU 核数多、运行稳定。至强 CPU 可以分为 E3、E5、E7 等大系列,每个大系列有分为几个小系列。一般服务器主板上面都安装了多颗至强处理器。

x86 架构就是桌面级 CPU 的标准,你能买到的品牌或者组装的 PC,几乎没有不是 x86 CPU 的。不过虽说都是 x86 的,但使用的指令集都是兼容 8086 的,除 8086 指令集之外的其他指令支持情况就不一样了,其内部实现的微体系结构显然也是各自不同,就好比 Linux 和 Unix 虽然都是 POSIX 兼容的 OS,都有 fork POSIX 的调用,但是这个调用的实现确实各不相同

从 1985 年 80386 开始,Intel 通过对 x86 架构进行 32 位的扩展,实现了 32 位 CPU,而之前的都是 16 位。 Intel 把支持32 位的 x86 指令集架构命名为 IA-32(Intel Architecture 32 bit)。实际上由于当时 32 位 x86 处理器的统治性,术语“x86”几乎等于 IA-32,即 32 位的 x86 或 x86-32,通称所说的 x86 一般都是指 IA-32 构架的 CPU。例如 Windows 和 Linux 的 32 位发行版的命名都是使用 x86,而不是 x86-32 或 IA-32。这里还是要强调 x86 是一系列架构的泛称,对 16 位、32 位和 64 位的指令集都有支持

科技是不断发展的。在 64 位需求更加强劲的企业服务器和高性能计算市场上,Intel 于 1994 年开始和惠普合作开发了一款与 x86 架构完全没关系的全新的 IA-64 架构。IA-64 基于显式并行指令运算(EPIC),天生就是 64 位,并不兼容 IA-32。2001 年第一款 IA-64 架构的处理器 Itanium(安腾)发布,后来 Intel 把 IA-64 也干脆改称为 Intel Itanium 架构。安腾也是挺惨淡的,因为是全新设计的 CPU,没有编译器,也不支持 Windows(微软把 Intel 给忽悠了,承诺了会出安腾版 Windows Server 版,但是迟迟拿不出东西。话说,微软后来不是也坑了诺基亚吗)。由于 Intel 64 位处理器 Itanium(安腾)的不给力,1999 年,AMD 宣布了 x86-64 架构,简称“x64”,其实现方式与之前的 80386 对 16 位扩展的思路一致,x86-64 架构继续对 IA-32 扩展,增加 64 位通用寄存器、证书预算单元和逻辑操作,支持 64 位虚地址,关键是向前兼容 IA-32。2003 年第一款 x86-64 处理器 AMD Operon 发布,同时 AMD 也将 x86-64 正式命名为 AMD64,由于兼容 IA-32,很快就得到了用户的认同。以前都是 AMD 小弟追随者 Intel 大哥的脚步,如今 AMD 却率先实现了 64 位民用桌面级 CPU 并抢占了市场。其实 Intel 也有其 64 位 x86 CPU 的计划,但是由于对于这个市场的不重视,认为需求不足,一直不见面世(话说,Intel 对智能手机崛起的移动互联网时代也重视不足,虽然后来奋起直追,但还是让 ARM 架构占据了天下)。在 2004 年的 IDF 上,Intel 承认其 64 位 x86 计划,命名为 IA-32e,即 IA-32 extension,IA-32e 之后又改成 EM64T(Extended Memory 64 Technology) ,最终命名为 Intel64(大概是不愿意承认 AMDx64)。起初,EM64T 并不兼容 AMD64 的指令集,但是由于 AMD 在 64 位技术中的领先地位,Intel 2005 年不得不宣布将完全兼容 AMD64。实际上 EM64T 与 AMD64 几乎相同。也就是说 x86_64,、x64、AMD64、Intel64(几乎看不到这个词)基本上是同一个东西

“i386”和“i486”显然就是 Intel 80386 和 80486 处理器的别名,其他“i某86”也是当时某代 CPU 的别名。由于不能使用数字作为注册商标,而且也需要一个正式的名称命名,于是,后来推出的 CPU 从 586 开始就变为 Pentium 了,这时候 i586 就成为了最原始 Pentium 的微处理架构“P5”的别名,同样的 i686 对 P6(Pentium Pro 使用),i786 对应 P68 或 NetBurst 架构(i786 是一个隐藏的体系,听说只能用在 Pentium 4 以后的 Intel CPU 上面。但是很多软件没有针对这个架构编写,所以除非自己基于 i786 编译,不然网上没有 i786 的软件)。

下面是英特尔和 AMD 发布处理器的一些时间节点:

  • June 8, 1978 – 8086 => 16 位
  • October 17, 1985 –Intel 80386 => 第一款 i386 CPU,第一款 IA-32 架构(32 位) CPU
  • April 10, 1989 – Intel 80486 => 第一款 i486 CPU
  • March 22, 1993 – Intel Pentium => 第一款 i586 CPU
  • May 7, 1997 – Intel Pentium II => 第一款 i686 CPU

现在装的 64 位版本操作系统从没有说是面向 Intel 还是 AMD 的。不过在称谓上,大多数厂商还是使用 x86-64、或 x86_64,或 x64 来称呼此架构,从而保持中立。随着 CPU 的发展,软件包为了能发挥好 CPU 的全部性能,就加入当时 CPU 对应指令集支持。因此就产生了各种不同的软件包。软件包的名称中的使用“i某86”即是说该软件包适用于这一代的 CPU,即该软件包适用于对应 CPU 使用的指令集

  • i386 对应 IA-32,并且由于兼容性肯定也适用于 i486~i686,几乎兼容所有的 x86 平台;
  • i586 对应 Intel Pentium、Intel Pentium MMX、AMD K6 级别的 CPU;
  • i686 不仅适用 Pentium Pro,也适用 AMD K7 架构的 Athlon;
  • amd64 对应 64 位的操作系统和 CPU(谁让 AMD 先推出了 64 位 x86 CPU 呢)。

32 位操作系统最多一次性读取 4 GB 内存,也就是说 32 位操作系统没必要使用超过 4GB 的内存,多了浪费。自 1995 年 Windows 95 开始支持 32 位软件以来,多数软件和操作系统的代码都是兼容 32 位的。但现如今,我们的电脑几乎都是 64 位处理器,现今一些大型软件(尤其是大型单机游戏)需要超过 4GB 的内存才能运行,所以这种情况下安装 64 位操作系统是必须的,除非你想研究一些老旧的 32 位操作系统,或者需要运行一些无后续更新的、无法在 64 位系统上运行的 32 位软件(这种需求可以在 64 位操作系统上使用虚拟机来实现,没必要实际安装一个 32 位操作系统)。

64 位的操作系统需要使用 64 位的指令集,所以,必须安装在 64 位的处理器上,64 位的软件则必须运行在 64 位的操作系统上。由于可以向后兼容,64 位处理器上可以安装 32 位的操作系统,64 位操作系统上也可以安装运行 32 位的应用软件(需要额外安装对应的 32 位支持库,一般 64 位操作系统已经默认提供)。但 32 位处理器上不可以安装 64 位的操作系统,32 位的操作系统上也不可以安装 64 位应用软件。

显然,在某位数的 CPU 上运行相同位数的操作系统,并且在相同位数的操作系统上运行相同位数的应用软件才能使效率达到最高,但这个过程不是一蹴而就的。更多位数的 CPU 刚出现时,运行的操作系统仍是低位数的,应用软件也是低位数的,对应高位数的操作系统的出现需要一个过渡的过程,即使出现了对应位数的操作系统,对应位数的应用软件的出现也需要一定的过渡,所以操作系统也需要兼容低位数的应用软件。运行在 32 位处理器上的 Windows 操作系统从 16 位更新到 32 位经历了 10年(从 1985 到 1995)之久。所以,操作系统开发商在 64 位处理器出现后就会尽快推出了 64 位的操作系统,但是刚开始却没有足够的 64 位软件。所以,在 64 位处理器出现 10 年后,使用 64 位 Windows 的用户才刚刚超过了 使用 32 位 Windows 的用户。所以也就有了文章标题中的那一系列名词。

一般来说,等级愈高的 CPU 可兼容较低等级的软件包文件。你可以通过查看Linux 系统中的 /proc/cpuinfo 文件来获取你的 CPU 等级。所以,i686 的软件包能在 Pentium II 以后的 CPU 上运行,但基本不能在此之前的 CPU(如 Intel 80486)上运行,而 i386 的软件包既可在较早推出的 i386 CPU 的电脑上运行,也可在后面所有的 CPU 上运行。据许多资料介绍,在一般情况下,在 i686 的电脑上运行 i386 与 i686 的软件在性能上基本没有大的区别。通常情况下,如果一个包同时有 i686 和 i386 版本,通常 i686 的效率会更高。只有 i386 版本的话,可能是该程序对于效率并无需求。虽然某个软件包的版本很多(可能有i386、i686、amd64等),不过目前的新机器都是 64 位的 CPU 和 x86_64 版本的操作系统了,由于可以向后兼容,这些不同版本的软件包应该都可以使用。现在发行的许多软件包,一般也就提供 i386 和 x86_64(或者为amd64) 两个版本,即 32 位版本和 64 位版本,有些甚至已经不提供 i386 版本了。除非一些特殊场合,比如为了使用一些老版程序。有些功能没有 x86_64 版本,那也只好用 i某86 的了

除了前面介绍的软件包以外,还有一下几种后缀的软件包:

  • *.athlon.rpm,这种软件包装在 AMD CPU 上的系统上更能发挥好 AMD 的 CPU 的性能;
  • *.noarch.rpm,这种软件包跟硬件体系结构无关,可以在各个不同的 CPU 上均可使用;
  • *.src.rpm,这种软件包是源程序包,不能直接安装运行的,先要通过编译。在编译时会根据 CPU 的类型来产生相应后缀的软件包。编译内核也是如此。

显然,某位数的 CPU 上运行相同位数的操作系统,并且相同位数的操作系统上运行相同位数的应用软件才能使效率达到最高,但这个过程不是一蹴而就的。更多位数的 CPU 刚出现时,运行的操作系统仍是低位数的,应用软件也是低位数的,对应高位数的操作系统的出现需要一个过渡的过程,即使出现了对应位数的操作系统,对应位数的应用软件的出现也需要一定的过渡,所以操作系统也需要兼容低位数的应用软件。运行在 32 位处理器上的 Windows 操作系统从 16 位更新到 32 位经历了 10年(从 1985 到 1995)之久。所以,操作系统开发商在 64 位处理器出现后就会尽快推出了 64 位的操作系统,但是刚开始却没有足够的 64 位软件。所以,在 64 位处理器出现 10 年后,使用 64 位 Windows 的用户才刚刚超过了 使用 32 位 Windows 的用户。

32 位操作系统最多一次性读取 4 GB 内存,也就是说 32 位操作系统没必要使用超过 4GB 的内存,多了浪费。自 1995 年 Windows 95 开始支持 32 位软件以来,多数软件和操作系统的代码都是兼容 32 位的。但现如今,我们的电脑几乎都是 64 位处理器,现今一些大型软件(尤其是大型单机游戏)需要超过 4GB 的内存才能运行,所以安装 64 位操作系统是必须的,除非你想研究一些老旧的 32 位操作系统,或这需要运行一些无后续更新的、无法在 64 位系统上运行的 32 位软件,但这种需求可以在 64 位操作系统上使用虚拟机来实现。

64 位的操作系统需要使用 64 位的指令集,所以,必须安装在 64 位的处理器上,64 位的软件则必须运行在 64 位的操作系统上。出于兼容性考虑,64 位处理器上可以安装 32 位的操作系统,64 位操作系统上也可以安装运行 32 位的应用软件(需要额外安装对应的 32 位支持库,一般 64 位操作系统已经默认提供)。但 32 位处理器上不可以安装 64 位的操作系统,32 位的操作系统上也不可以安装 64 位应用软件。

虽然应用软件的版本很多,不过目前的新机器都是 64 位的 CPU了,都可以使用 x86_64 版本的操作系统和软件包了,而且也应该使用这个版本。现在的发行包,一般也就提供 i386 和 x86_64 两个版本,即 32 位版本和 64 位版本,有些甚至已经不提供 i386 版本了。除非一些特殊场合,比如为了使用一些老版程序。有些功能没有 x86_64 版本,那也只好用 i某86 的了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348