32-bit vs 64-bit systems

32-bits 与 64-bits 系统差异

前言

还记得小时候的电脑都是 32-bits 的系统,大约在 win7 的时代已经逐步替换成 64-bits 系统了,但我还是不了解具体来说有什么差异,只记得有段时间有两种软件规格可以选择,或是某些软件需要用「兼容模式」来执行。

32-bits vs 64-bits 系统

程序执行需要内存空间,而这里的 bit 指的就是 CPU 寄存器(register)的大小,像是 a + b 的运算 CPU 就会先把 ab 数值载入到寄存器当中,然后 CPU 必须通过地址才能知道数据放在哪,而寄存器大小直接攸关:

  • CPU 一次能处理多少数据
  • 可表示的整数范围
  • 能存取多少内存地址

存储极限

  • 32-bits 大小下可寻址的内存空间:2^32=4294967296,4,294,967,296 bytes ≈ 4 GB
  • 64-bits 大小下可寻址的内存空间:2^64=18446744073709551616,18,446,744,073,709,551,616 bytes ≈ 16 EB(Exabytes)

所以这就是为什么 32 位系统最多不超过 4GB 的 RAM,现代软件消耗更多内存空间也都改用 64-bits 的规格制作,64-bits 的规格能兼容 32-bits 但反过来则不行,因为使用了不同的指令集与内存布局。

世代更新

在 PC 与服务器上 64-bit 全面胜出,32-bit 已经是过去式,通常架构上也有更好的规格:

  • SSE2(更强的浮点 / SIMD 运算)
  • 更多通用寄存器
  • 更好的函数调用方式

但在嵌入式场景 32-bit 有自己的演进路线,64-bit 反而是多余的成本。

命名

x86 是因为祖先处理器型号叫 80?86,就用代数「x」来代替中间变动的 ? 数字;而 x64 则是代表 x86 架构的 64 位延伸版,也被称为 x86-64。

延伸阅读