シンセサイザー研究室

実はもう64bitOS必須になっている

Windows10もmacOSも現役のCPUは64bitOSしかサポートしないので、32bitOSは選択肢としては無いです。
nVIDIAのビデオドライバも32bitOS向けは開発を終了していますし、各DAWソフトも32bitOSでのサポートは終了しています。
macOSに至っては10.14 Mojaveが32bitプログラムの動く最後のOSとなっています。
以下に書かれてる事は、知識としてドヤ顔で自慢する為のコラムだと思ってください(笑)

DAWと64bitOS

64bitのWindows、macOSの概要とDAWなどを64bitOSで動かすメリットを紹介します。

64bit時代の到来

AMDが64bit対応を始めた

AMD社はCPUやビデオカードを作ってる会社です。ここの人達が
「もっとプログラムを高速化したい、 メモリをいっぱい使えるようにしたい、しかも、今まで作ってきた32bitの資産も 完全互換で動かしたい」
と拡張規格を作ったんですね。
IntelはIteniumというCPUで64bitを流行らせたかったのですが、思うように普及せず、 Intelもx86CPUの64bit拡張を考え始めていたのですが、 Microsoftが「どっちか統一してくれないとOS作るの大変」と一本化を要請、 AMDの64bit拡張を採用することになりました。
そして出来たのがWindows x64 Editionです。 ※ AMD64 = x64です。

じゃあ、IntelのCPUでAMD64は動かないかというとそうではなく、AMD64互換のIntel64 っていうのを作って動かせるようにしてます。

一方、Apple社は徐々に64bit化を始め、OSX 10.6 Snow Leopard で IntelCPUに特化して完全64bit対応を果たしました。

CPUの動作モード

cpumode
※ 図はascii.jpさんの記事から持ってきてます。すみません。

64bit対応CPUは大きく分けて「レガシーモード」 「IA-32eモード(AMD社ではLongモード)」という二つのモードで動きます。
32bitのWindowsはこのうち「レガシーモード」を使って動いてます。 Windowsの x64 Edition は「IA-32eモード」を使って動きます。

一方、MacのOSXは「IA-32eモード」だけを使って動きます。

「IA-32eモード」には、さらに2つのモードがあります。 64bitプログラムを実行する為の64bitモードと 32bitアプリを動かす為の互換モードです。
互換モードと64bitモードは高速に切り替えることが出来る ので、ユーザーには64bitで動いてるのか32bitで動いてるのか区別が付きません。

64bitOSだけど32bitも動かせる仕組み(Windows)

WOW64
64bitのアプリケーションは当然64bitのOSでしか動きません。 では32bitのアプリケーションはどうやって動いているのでしょう。
実はWOW64という仕組みを使って必要になったときだけ 32bit命令を64bitに変換して動かしています。
WOW64.dll、WOW64win.dll、WOW64cpu.dllというたった3つのファイルが 賢く変換を行っています。

実際x64対応Windowsをインストールすると、64bitと32bitのOSプログラムが インストールされます。
OSのシステムプログラムは32bit版は「SysWOW64」というフォルダ、 64bitは「system32」というフォルダにインストールされます。
※ なんで64bitなのに「system32」なんだよってツッコミされても困ります。 そういうものですから。
32bitのOSプログラムのうち64bitカーネル・モードでの処理が必要になるものだけ 「WOW64cpu.dll」っていうのを呼ぶように変更が加わってます。
32bitの命令が入ってくると、SysWOW64の中の32bitプログラムが命令を処理します。
このとき64bitの処理(システム・コール)が必要なときだけ、 WOW64でsystem32にある64bitのプログラムに命令が渡って実行されます。
プログラムはどこにインストールされるかというと、64bitアプリは「Program Files」、 32bitアプリは「Program Files(x86)」になります。
レジストリも「Wow6432Node」というキーが勝手に作られ、区別されています。

ここら辺のことは全部WOW64がやってくれるので、 使う上でユーザーやプログラマーは全く意識する必要はありません。

変換掛けているといっても基本的な命令セットは同じなので、 32bitコードを実行しても性能が低下することはないです。

つまり、Windows x64 Edition は上で説明した「IA-32eモード」で動作し、 「IA-32eモード」のうち、32bitアプリケーションは「互換モード」で動作し、 システムコールなど64bit処理が必要になった場合だけWOW64を使用して 64bitに変換して「64bitモード」で処理します。
64bitネイティブアプリケーションは「64bitモード」のみで動作します。

Windowsの場合、ドライバだけは64bitじゃないとだめ

WOW64
32bitも動くx64 Windowsですが、何でもかんでも32bitOKというと、そうではありません。
32bitアプリケーションもデバイス(機械)とアクセスする時は64bitに変換されてから 実行されます。
カーネルと呼ばれるOSの根幹は64bitであり、ドライバ類(ビデオ、ネットワーク、 サウンドなど)は
64bitの部分とやりとりするので64bit専用ドライバである必要が あります
ということはドライバとかが関わってくるアプリケーションは動かない可能性がある と言うことです。

DAWだとASIOドライバとか特殊なドライバを使っているオーディオインターフェイス、 仮想MIDIドライバとかVSTホストアプリケーションはx64に対応していないと動きません。

逆にMIDIのみしか使わないソフト、VSTi、VSTエフェクトなどは32bitでも動く可能性大です。

こんな時代ですから、64bitOS対応出来てないメーカーは、 やる気が無いということで相手にしなくても良いと思います。

64bitOSだけど32bitも64bitも動かせる仕組み(Mac)

mac64
Macの場合、アプリケーションのファイルの中に32bitアプリと 64bitアプリの両方を格納する仕組みがあります。
これをユニバーサル・バイナリーと言います。
Windowsはこれをフォルダで分けていますが、Macでは同じアプリケーションの ファイルの中に両方入れちゃうんですね。

Mac OSX 10.6 Snow Leopard 以降では、上で説明した「IA-32eモード」で動作しています。 よって、「レガシーモード」で動いてる32bitのWindowsが、
どうしても32bitプログラムしか実行できないのに対し、 Macでは32bit、64bitどちらのアプリケーションも動きます。

Macの場合も、ドライバだけは64bitじゃないとだめ

mac64
mac64-2
OSX 10.8 Mountain Lion以降、Macも64bitカーネルだけになりました。(下図)
※ OSX 10.6、10.7では上図の様に32bit、64bit両方カーネルが用意され、通常は32bitカーネルで動いていた
よって64bitカーネルを使用する為には64bit専用のドライバーが必要になります。
「IA-32eモード」で動いているため、アプリケーションは32bit、64bit両方動きます。
32bitアプリケーションを動かす際は1プロセス辺りのメモリ制限は4GBです。

OSX 10.8で完全に64bitに移行してしまった為、10.8は2008年後半以降製造のMacしかサポートされなくなりました。

64bitだと使えるメモリが増える

x64 Memory
Windowsの32bitOSは4GBしか認識しません。このうち、OS本体が2GBを占有し、 ユーザーのアプリケーションは最大2GBしか使えません。
これが64bitになると最大2TB(Windows 10 Proの最大容量。Homeは128GBまで)という、 大容量を扱えるようになります。

ただし、その領域を使えるのは64bitのプログラムだけ。まぁそうなんですが、 32bitアプリケーションにもメリットはあります。
32bitアプリケーションは32bitのWindowsでは2GBしか使えませんでしたが、 64bitOS上では4GBフルに使えるようになります。
3GBオーバーのピアノ波形が丸々メモリに収まっちゃえばHDDガリガリさせなくても 楽々演奏出来たりしますね。

Macの場合、16TB(テラバイト)という途方もないメモリ容量をサポートします。
64bitアプリケーションはOSが使用している領域以外をフル活用出来ます。当然最大16TB!
32bitアプリケーションを動かす際は1プロセス辺りのメモリ制限は4GBです。

最新のWindows、macOSではメモリが足りなくなったら、勝手にメモリ内容を圧縮する機能まであります。
最新OSを選ぶと良いこと沢山あるんですわ。

DAWを64bitで使うメリット

とにかくメモリが沢山使える

現代のコンピュータ処理において一番のボトルネックはHDDなどの低速ドライブ、次にメモリです。
ストレージ(HDDやSSD)、メモリが高速、かつ大容量になれば、相当なスピードアップになります。
とくにサンプラーやレコーディングアプリケーションなどに差が出るでしょう。
PCの標準的なメモリ搭載容量は8GB、16GBも珍しくなくなっています。
4GB以上メモリを搭載する場合、64bitOSは必須となります。

Windows7以降や、Macであれば、ビデオカードも高速な物を使うと、
描画処理をビデオカードに任せられるのでCPU負荷はさらに下がります。

処理が高速化されるかも

64bitOSは64bit対応CPUでしか動かないので、メーカーは過去のCPUを気にしないでプログラミング出来ます。
浮動小数点数演算などソフトウェアシンセサイザで欠かせない演算をCPUに付いている
特殊回路で計算させたり、マルチコアを活かしたプログラミングがされていれば、高速化されます。


Back | Next