Windows 64-bit x64,32-bit x86 和 64-bit ARM64 有什么区别?

5,905 阅读11分钟

最近装了新电脑,准备下一个解压软件。于是到大名鼎鼎的 7zip 官网 www.7-zip.org/ ,准备下载一个 7zip。

但打开官网后,它却对我发出灵魂拷问:你要的是这把金钥匙,还是这把银钥匙,还是这把铁钥匙呢?

7zip

可以看到,有三个版本的 7zip 供我们选择,分别是 Windows 64-bit x64,32-bit x86 和 64-bit ARM64。

通常我都是下载 Windows 64-bit x64,貌似这个是最常用的。但我一直不确定自己下得对不对,也不知道它是什么意思,于是就去查询了一些资料,了解了一下。发现这里的历史还挺悠久的,故写下本文记录此故事。

三把钥匙的区别

直译过来,64-bit x64 指的是 64 位 Windows 操作系统,32-bit x86 指的是 32 位 Widows 操作系统。64-bit ARM64 指的也是 64 位 Windows 操作系统,并且它是基于 ARM 架构的。总的来说,Windows 64-bit x64、32-bit x86 和 64-bit ARM64 是指不同架构的 Windows 操作系统版本。

这里的 64 位和 32 位指的是什么呢?ARM 架构又是什么意思呢?带着这个问题,我们继续追溯。

先来了解一下 64-bit 和 32-bit 的区别。我们知道,一个字节占 8 位,64 位操作系统指的是 CPU 的寄存器是 64 位宽,它们一次可以处理 64 位(也就是 8 字节)的数据。那么同理可得,32 位操作系统指的是 CPU 的寄存器是 32 位宽,它们一次可以处理 32 位(也就是 4 字节)的数据。

位宽:衡量寄存器容量的指标,CPU 的寄存器位宽指的就是寄存器一次能够处理的数据量。

那么很容易知道,64 位的 Windows 系统的性能肯定是高于 32 位的 Windows 系统的。64 位的 Windows 操作系统要更先进一些。

32 位操作系统诞生于 1985 年,型号是 Intel 80386。在当时是最先进的操作系统了。

  • 最早的处理器是 4 位的,于 1971 年诞生,型号是 Intel 4004,用在计算器上。
  • 1972 年 Intel 推出了 8 位的处理器,型号是 Intel 8008。1974 年推出了 8080,仍然是 8 位的。
  • 1978 年 Intel 推出了 16 位的处理器,型号是 Intel 8086。
  • 1985 年 Intel 推出了 32 位的处理器,型号是 Intel 80386。

随着技术的发展,64 位操作系统开始出现:

  • 2001 年 Intel 推出了 64 位的处理器,型号是 Itanium 2。
  • 2003 年 AMD 推出了 64 位的处理器,型号是 AMD Athlon 64 2800+(754)

Intel:著名的处理器制造公司,翻译为英特尔。1968 年成立至今。

AMD: 著名的处理器制造公司,全称是 Advanced Micro Devices, Inc. 直译为“先进的微型设备公司”,通常翻译成超微半导体公司,更常见的说法是直接称为 AMD。1969 年成立至今。

32 位操作系统到如今已经垂垂老矣,将会逐渐退出历史舞台了。

那么,64-bit ARM64 又是什么呢?它比普通的 64 位 Windows 更先进吗?

实际上它并不比普通的 64 位 Windows 更先进,ARM64 是 ARM 公司开发的 64 位处理器架构,主要用于移动设备和嵌入式系统上。特点是高能效比,低成本。又称为 AArch64,全称是“ARM Architecture 64-bit”。

ARM:著名的半导体和软件设计公司。全称是“Advanced RISC Machine”,直译为“高级精简指令集计算机”。1990 年创立。

RISC: Reduced Instruction Set Computing,直译为“精简指令集计算”,与 CISC (Complex Instruction Set Computing,复杂指令集计算)相对应。

64-bit ARM64 也有自己的发展史:

  • 1997 年,推出 ARMv5,32 位宽。
  • 2005 年,推出 ARMv7,32 位宽。
  • 2011 年,推出 ARMv8,即 AArch64,64 位宽。现在的安卓和苹果设备普遍使用此架构。并且微软也提供了适用于 ARM64 架构的 Windows 版本,包括一些笔记本电脑和平板电脑。

到这里,我们就知道这三把钥匙的区别了。32-bit x86 适用于早期的一些 Windows 电脑,64-bit x64 适用于最新的绝大多数 Windows 电脑,64-bit ARM64 适用于采用此架构的笔记本电脑或平板电脑。

如何查看当前设备是哪种处理器和架构?

在 Windows 的命令行工具中,通过 systeminfo 命令查看,如果输出包含:

系统类型:         x64-based PC

表示这是 Windows 64-bit x64。

笔者目前没有采用另外两种处理器和架构的设备,故无法演示。

对于 Android 设备,通过 ADB 工具查看,命令是 adb shell getprop ro.product.cpu.abi

如果输出为:

x86_64

通常表示你用的是模拟器,模拟器通常为 x86_64 架构,以便更好地模拟桌面环境。

如果输出为:

arm64-v8a

就表示当前操作系统采用的 ARM64v8 架构。v8a 表示这是 ARM 架构的第 8 代的 A 系列(A 代表 Applications,即应用程序处理器)。arm64-v8a 和 ARM64v8 是一样的。

如果输出为:

armeabi-v7a

表示当前操作系统采用的是 ARMv7 架构(32 位) ,也就是俗称的 “32 位 ARM 架构” 。这是早期 Android 设备普遍采用的架构,运行的是 32 位系统,只能安装支持 armeabi-v7a 的 APK,无法安装 arm64-v8a(64 位)专用的应用。

这种架构在低端或老旧设备、部分电视盒子、智能电视中仍然常见。

同样地,笔者目前没有采用其他架构的设备,故无法演示。

如果你需要判断设备是否支持 64 位应用,还可以查看:

adb shell getprop ro.product.cpu.abilist

它会输出支持的所有 ABI,比如:

arm64-v8a,armeabi-v7a

说明系统支持 arm64-v8a(64 位)和 armeabi-v7a(32 位) ,可以运行两种架构的 APK。

如果只输出:

armeabi-v7a

说明 系统是 32 位 Android,即便 CPU 硬件是 64 位,也不能运行 64 位应用。

如果 adb shell getprop ro.product.cpu.abilist 输出为:

armeabi-v7a,armeabi

则表示这台设备仅支持 32 位 ARM 架构

架构说明
armeabi-v7a主流的 32 位 ARM 架构,用于绝大多数 Android 设备
armeabi更旧的兼容架构,面向 ARMv5/ARMv6,现代应用几乎已不再支持

由于设备运行的是 32 位 Android 系统,所以无法安装 arm64-v8a(64 位)专用的应用

安装 APK 时应选择:armeabi-v7a 版本(推荐)或“universal” 版本(同时包含多个 ABI)

比如我家的 ES75 小米电视。CPU 是 64 位的,但系统是 32 位的。所以只能安装 32 位的 apk。

x64 和 x86 是什么意思?有什么区别?

x86 是指 Intel 自 1978 年起,推出的一系列处理器,包括 8086,80286,80386,80486,由于它们都以 86 结尾,所以统称为 x86。

  • 1978 年推出 8086,16 位宽
  • 1982 年推出 80286,16 位宽
  • 1985 年推出 80386,32 位宽
  • 1989 年推出 80486,32 位宽
  • 1993 年推出 Pentium(奔腾)系列处理器,32 位宽
  • 2006 年推出 Core 2 Duo,到现在的 i3/i5/i7/i9,64 位宽

x64 全称是 x86-64 或者 AMD 64。x86-64 表示它是 x86 架构的 64 位扩展。而 AMD64 是 AMD 公司给这个架构起的名字,用于区分它与 Intel 的 x86 架构。实际上 x86-64 和 AMD64 指的是同一个架构,所以两者被统称为 x64。

那么新的问题来了,为什么 Intel 自 1978 年推出的这一系列处理器要以 86 结尾呢?

要回答这个问题,先要看 8086 的前辈。8086 的前辈叫做 8085,这个名字包含了几个信息:

  • 这个处理器是在接近 1980 年代的时候被发明的,故以 80 开头。
  • 8085 是一个 8 位的处理器,因此第三位选择了 8
  • 在 8085 之前,Intel 的 8080 处理器需要 +5V、-5V 和 12V 三种电压才能正常运行。随着技术进步,8085 只需要单一的 +5V 电压即可工作,因此最后一个数字选择了 5

8086 作为 8085 的继承者,版本号在其基础上加了 1。

前文提到过,8086 是划时代的产品,它是第一个 16 位处理器。笔者推测 80286 想要继承这一荣誉,或许是想表示 8086 第 2 代的含义,所以取名为 80286。后续的 80386,80486 或许也是如此。需要注意的是,这是笔者的推测,由于年代过于久远,不太好考证了。 8086 和 80286 都是 16 位宽,80386,80486 是 32 位宽。虽然后来位宽增加了,但却没有另起一个版本,或许是为了产品统一性吧。这种命名方式一直持续到80586,但由于商标注册的问题,Intel 放弃了这种数字命名方式,转而使用 “Pentium” 作为品牌名称。

Pentium,译为奔腾,它就是朴树在《New Boy》中唱的那句:“快来吧,奔腾电脑”里面的奔腾。这首歌里还提到了“轻松一下,Windows 98”,Windows 98 指的是微软于 1998 年发布的个人电脑操作系统,Windows 98 诞生于个人电脑在全球范围内迅速普及的关键时期。在计算机发展史上占据了极其重要的地位,是许多人的计算机启蒙系统。拥有一台“奔腾处理器 + Windows 98系统”的电脑是那个年代许多家庭和年轻人的梦想。

在 8085 之前,Intel 还有一些产品,包括前文提到的 4004,8008,8080。

其中,4004 是 Intel 公司 MCS-4(Micro Computer Set - 4)系列中的一款产品。这个系列包括了用于存储临时数据的 4001 ROM 芯片(Read-Only Memory)、用于存储应用程序的 4002 RAM 芯片(Random Access Memory)、用于输入输出的 4003 I/O 芯片(Input/Output)和中央处理器 4004 CPU 芯片(Central Processing Unit)。第一个 4 表示它属于 MCS-4 系列,最后一个 4 表示它是这个系列中的第 4 个组件,故命名为 4004。虽然这个处理器刚好是 4 位的,但这是一个巧合,并不是其命名规则。

8008 是第一款 8 位处理器,它之所以命名为 8008,或许是为了和 4004 区分开来,表示它在技术上是一个显著的进步。

8080 的命名或许是基于 Intel 内部的产品编号系统。具体原因笔者没有找到。

总结

这篇文章是笔者为了解答自己的困惑,在网上搜集资料整合而来,不能保证完全的准确性。如有疏漏或错误之处,望读者不吝赐教,在此感谢。

总的来说,笔者感到这些处理器的命名规则只能称为乱中有序,由于没有严格遵循顺序,所以不是那么清晰。现在我们提到处理器,主要关注处理器的位宽,参数等等。x86 现在更像是处理器的一个别称,类似于我们用活雷锋代表好人一样,是一个代号,让我们可以记得他曾经的光辉。