DeepMountain’s diary

駆け出しのITインフラエンジニアのブログです。

x86 (32bit) と x64 (64bit)

ソフトウェアのダウンロードの際に x64, x86 のどちらのバージョンが聞かれたことがある。
 
x64 = 64bit, x86 = 32bit ですが、「x86」が32bitである理由はインテル初の32bit CPUである 80386 の略称が「x86」だから。
この名称も文脈によって 64bit, 16bit CPUのことを指すこともあるらしく、歴史的な経緯があるので現代から見ると分かりにくい・・・・(笑)
 
ここで 32bit, 64bit CPU とは何か自分なりの理解を書く。
 
まず 32bit, 64bitとは CPUのアドレス空間を表すビット数のこと。初めて聞いたときは 32bit CPUは「32個」のアドレスしか記憶できないと勘違いしました。
しかし正しくは0と1の数字列を32個記憶できる。つまり 2^32 個のアドレス (おおよそ 4GB) を使用できます。
 
32bit CPU では ~10^9 の事象にアドレスを割り振ることができる。
しかし64bit CPUでは更に32bit CPUに比べて~10^9倍の事象にアドレスを割り振ることができ、現在のところ単一のマシンでは到底使い切れない量に設定されている。
プログラムのアドレスの使い方も32bit と 64bit の場合では、かなり異なること。現在では一般的なスマホ、PCでは 64bitのプログラムが主流であり、32bitのサポート無くなっていく傾向にあります。
 
しかし一概に64bitが良いということではなく、メモリに制限があるエッジのデバイスでは今後も使用されるかもしれません。またキャッシュの効率は32bitのほうが高い。(実行しているプロセスのアドレスは集中している方がキャッシュのヒット率が高いから)
 
 
参考: