16bit、32bit、64bit Windowsの変遷
このような違いがあるのならば、最初から全て64bitにすればよいではないかという声が聞こえてきそうだ。しかし、ハードウェアの進化に歩調を合わせてOSも改良されてきた。
現在の視覚的な Winodws の流れを決定づけた Windows 95。このOSは、16bitから32bitへの移行期だった。そのため、完全に32bit化することができず、16bitのコードと、32bitのコードが混在していた(
Win32サブルーチンズ)。
家庭用パソコンの32bitから64bitへの流れは、Windows XP の頃から始まる。環境が整い、本格的に移行が始まったのは、おそらく Windows 7 の頃だろう。64bit対応CPUの普及やメモリーの低価格化により、64bit版製品が増えていった(
ASCII.jp)。
現在では、購入できる Windows 10 パソコンでは、特別な理由がない限り、64bit版となる。ハードウェアは一時期に全てを交換することはできない。そのため、移行は緩やかに進んでいく。
さて、少し開発者側の話をする。32bit版のアプリケーションと、64bit版のアプリケーションは、実行ファイルのバイナリ(中身のデータ)が異なる。
プログラミング言語の多くは、出力ターゲットを指定してコンパイル(実行用ファイルを出力)することができる。その際には、同じ Windows であっても、32bit版を出力するか、64bit版を出力するか指定する必要がある。
32bit版のアプリケーションと、64bit版のアプリケーションでは、実行ファイルの互換性はない。32bitのCPU、64bitのCPUに合わせた、実行ファイルを作成する必要があるからだ。そのため、本来は、64bit版の Windows で、32bit版のアプリケーションを動かすことはできない。
しかし、現実には、64bit版の Windows で、32bit版のアプリケーションは動いている。これはOS側で、32bit版のアプリケーションをエミュレートして動作する仕掛けを用意しているからだ。
この仕組みのことを WOW64 と言う。WOW64 は、Microsoft Windows-32-on-Windows-64 の略だ(
Microsoft Docs)。
32bit用の命令をエミュレートして、さらに32bit用のOSと同じような仮想のメモリー空間を用意する。そうすることで、64bitの Windows 上で、32bitアプリケーションを動作させる。
そうした処理が入るために、64bit版の Windows で、32bit版のアプリケーションを使うと、少しだけもっさりとした動きになる。そのため、64bit版の Windows を利用しているのならば、素直に64bit版のアプリケーションを使った方がよい。