Windows における 32bit アプリと 64bit アプリの違い

いまいちピンと来てなかったので、順を追って調べてまとめてみることに。

そもそも bit とは

bit とは CPU が一度に扱える情報量。32bit だと 2^32=4294967296 おおよそ43億という数字を扱うことができる。この数字はコンピュータの性能にモロに絡んでくる。コンピュータの戦闘力と呼んでもいいだろう。

詳細は省くが、32bit Windows だとメモリは最大4GBまで、HDDは最大2TBまでという制約がある。これらは43億という戦闘力の限界である。

64bit の必要性

32bit、つまりは43億という戦闘力は、現代ではいささか力不足である。4GB 以上のメモリや、2TB 以上のディスク容量を要する場面などいくらでもあるからだ。

しかし 43億の限界は越えられない。どうするか。

そこで 64bit の登場だ。64bit とは、2^64=18446744073709551616 おおよそ 1844京という数字になる。

          4294967296
18446744073709551616
    |   |   |   |
  京   兆   億   万

桁違いの戦闘力だ。ピンと来ない?桁を変えてみよう。

                   4
          1844674407
    |   |   |   |
  京   兆   億   万

32bitを 4 とすると、64bitは18億だ。4億倍以上もの開きがある。もっとも数字だけ言われてもピンと来ないかもしれないが、とにかく桁違いなのだ。メモリやディスクの制限は天文学的に伸びる。実質制限など無いようなものだ。

64bit を使う

さて、その64bitを使うためには、どうしたらよいのだろうか。

64bit Windows を使えばいい?そのとおりだ。だが、まだ足りない。正確に言うなら 64bit Windows が持つ 「64bitの仕組み」に従ったアプリを作ればよい と言える。

ところがそうも簡単にいかない。というのも、

  • 今までのアプリは32bitの仕組みがベースとなっている(32bitアプリ)
  • 32bitアプリは「64bitの仕組み」では動かない、つまり 64bit Windows では動かない

だからだ。

でも 64bit Windows でも 32bit アプリは動くよ?

しかしながら実際は 32bit アプリでも動いている。WinXP, Win7 で使っていたフリーソフトが、64bit の Win7 や Win10 でも動作したりする。これはどういうことか。

答えを言うと、64bit Windows に 「32bit アプリも何とかして動かせるようにする仕組み(WoW64)」 が備わっているからだ。

ただし、何とか動かせるようにするために色々と頑張る分、処理速度が遅い。64bit Windows で動かす 32bit アプリの動作がもっさりしがちなのはそのためだ。

Program Files と Program Files(x86)

64bit Windows ではインストール先として Program Files と Program Files(x86) が存在する。どっちがどっちだか意味不明だが、ここまでの内容を踏まえればわかってくる。つまり、

  • Program Files → 64bit アプリを格納するところ
  • Program Files(x86) → 32bit アプリを格納するところ

このようになっている。

※x86 とは 32bit の意である。ちなみに 64bit は x86_64(あるいは略してx64)と書く。

おわりに

うん、イメージ掴めたと思う。