32-bits vs 64-bits

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。

延伸閱讀