64bitアプリを積極的に使おう

The following two tabs change content below.
夜桜 なのです。 バーチャル女の子をしてるなの。 陸上自衛隊卒のレトルトカレー評論家 高校生の時にフルアセンブラでウィルスを作って、他人に渡したものの、児童相談所に通報されなかったという経歴があるの。 返せなくなった211億円のバーチャル借金があるの。ぐすぐす;; 取締役ブログ事業部部長、音楽事業部部長、IT業務部部長 etc...

Windows 11には64bit版しかございません。

Windows 10で完全にサポートが終了した32bit OS

これ以降は 64bit OSしかサポートされなくなります。

Windows の 64bit化は何がメリットなの?

64bit化によって最も恩恵を受けるのは使用可能なメモリです。

今時32bitアプリしか使わない方はもういらっしゃらないかとは思いますが、
32bitアプリだけしか使用していなくても、より多くのデータを取り扱うことができ、より多くのアプリが立ち上げられるようになります。

しかし、おまけ的な機能となりますが、アプリを64bit化すればアプリも高速化します。

CPUが計算に使用するための、レジスタが、整数だけでは 32bitのx86で8個、64bitのx64では16個と倍増します。

※もともと8個では不足だったのもありました。

このレジスタが増えることで、最も高速なレジスタだけで計算できるチャンスがとても増えて、とても遅いメモリとのアクセス数を削減することができます。

最も近くて高速なL1キャッシュを介しても遅くなると考えざる得ないですので、レジスタの倍増化により処理速度の恩恵はとても大きいです。

32bit OSで 32bit アプリを 64bit OS で 64bit アプリを動かすと、おおむね1.2倍速になると言われます。

64bit OS で 32bitアプリを動かすと?

64bit OS上で基本的に 32bit アプリは等速で動作するはず、と考えられますが、実際には非常に多くのプロセスが動作していることから、頻繁に 64bitモードと32bitモードの切り替えが発生します。

しかし、それでも 32bit OSから64bit OSに移行しても、おおむね5%程度の追加オーバーヘッドがかかる程度に抑えられています。

現在多コアCPUが主流になりつつあるのでそうは問題になりませんが、
64bitモードと32bitは1つのコアで共存できません。

常に64bitモードと32bitモードを目に見えない速さで切り替えて動作していることになります。

キャッシュメモリを多くするとどうなるの?

CPUのキャッシュメモリを多くすればするほど、ある一定の範囲までは高速化すると言われています。

しかし、以下のような処理を行う場合、速度のペナルティーを受ける場合があります。

12341234123412341234123412341234

という処理を行うと、それなりのメモリを使用します。

しかし、

(ループ元)1234(ループ元にジャンプ)

を行えば、CPU的には処理速度が単純に遅くなりますが、
CPUのキャッシュメモリ的に言えば、どちらが高速になるか、という正解はありません。

なぜなら

12341234123412341234123412341234

は、直接実行でき、余計な命令が省かれていますが、
キャッシュメモリに入りきらずにペナルティーを受けることがあります。

しかし

(ループ元)1234(ループ元にジャンプ)

は、ジャンプの処理が余計ですが、より多くキャッシュメモリ上で実行できるというメリットがあります。

どちらもどちらなのですが、コンパイルオプションを指定できる場合、

キャッシュメモリも考慮する必要があると考えられます。

比較環境のコンパイルオプション

  • clang -O3
  • clang -Os
    (いずれも、OSやアプリを全て再ビルド行った場合の結果より)

メモリが少なすぎる64bit OSはかなり重いかもしれない

32bit OS よりも 64bit OSのほうのがメモリ使用量が多くなります。

同様に 32bit アプリ よりも 64bit アプリのほうのがメモリ使用量が多くなります。

それゆえ、ぎりぎり64bitに対応できるメモリ容量 4GBにおいてはすぐにスワップアウトしてしまう可能性がありますので、アプリの動作速度もより遅くなってしまう可能性があるとも考えないといけない部分もあります。

※冗談抜きでいえば、Windows 11 で多数の64bitアプリのChromeを立ち上げる行為は、8Gbytes のメモリ容量であってもかなり不利な行為で、16Gbytesのメモリは快適に使用する上で必要な容量となります。

64bitアプリを使えば電力使用量はどうなるの?

具体的にワット計を使って計測しているわけではないが
64bitアプリを使えば、32bitアプリと比較して
一般的にはごくわずかに節電できます。

実際には負荷をかければかけるほど、32bitよりも64bitのが高速なため、高速化した分高負荷の時間を1/1.2に削減できるために、高負荷時の電力を1/1.2に削減できると考えてよいでしょう。

しかしほとんどアイドルのPCをずっとつけっぱなしにするっていう考えで動かすのであれば消費電力は全く変わりありません。

ちなみに同じ時間ゲームを行ったからと言って、64bitにしても節電になるわけではありません。

おまけ 32bit OS で 16bit アプリを立ち上げると?

Windows の場合、NTVDM (仮想DOSマシン)によるオーバーヘッドがかなり多く、起動するだけでもかなりオーバーヘッドが感じられます。

遅くなるといえば遅くなるものの、昨今のCPUの高速化によって16bitアプリも高速化はしています。

おまけ 64bit OSで16bitアプリを立ち上げる方法

x64 64bitモードのLongモードではネイティブで16bitを動かそうとすると、仮想86モニタが動作しないので、動かすことができません。

しかし、完全互換性があるわけではありませんが、MS-DOSのアプリに限って、MS-DOSエミュレータで動作させることが可能かもしれません。

詳しくは検索してみてください。

スポンサーリンク