マルチプロセッサ

個人でマルチCPU構成を行った場合にどんなメリットがあるのか?

98/03/27 長橋 かずなり


シングルプロセッサ構成の不満点

半年以上にわたってソフトウェアの開発マシンとして利用してきたマシンは非常に安定して動作し、また、静音性能も十分で満足していた。構成はASUS TX97-XE, SD-RAM 96MB, AMD K6 233MHz, Windows NT 4.0である。この半年間のほぼ毎日の激しい開発作業にもかかわらず、ダンプをはいてクラッシュするブルースクリーンに遭遇したのはたったの1回、不意のハングも4〜5回程度である。安定性はハードウェアの組み合わせの相性がよかったこともさる事ながら、Windows NTの安定性に依存している部分が多い。NTの4.0が登場するまでの間は95とインタフェースの完全互換が取れないという理由で95上で開発しなければならないケースが多かった。95上での開発は忍耐のいる作業である。ハングは当たり前で、1日数回のリブートを余儀なくされる。また、出来上がったソフトの動作がおかしい時にはOSの状態がおかしくなっていることも多いので、わざわざリブートしてから再度確認しなければならない場合も多かった。このようなストレスを避けるためにテスト作業以外のほとんどの作業はNTと上記マシンの組み合わせで利用してきた。

しかし、不満な点がまったくなかったわけではない。開発がヘビーになるにつれ、同時に起動する開発環境は増え、ビルド(テキストのプログラムをCPUが理解できる言語に変換構築する)を行いながら同時にほかのプログラムをタイピングする機会が増えたのである。問題に感じていたのは搭載メモリーの容量と、各プロセス(プログラム)の負荷バランスである。

メモリー不足に関しては2つあるSD-RAMソケットにそれぞれ64MBと32MBを搭載していたものを、32MBを抜いて新規に64MBを購入して128MBにするという方法があり、比較的話しは単純である。もう一つの負荷バランスの不満点とは、プログラムの数分間のビルド(これを2〜3個同時に実行する場合もある)を行っている間に、プログラムのタイピングを行おうとするとすべての動作が非常に遅くなり思考が中断されがちになる。ちょうどメモリ不足でスワッピング中に他の処理を行っているような感じである。バックグラウンドでCPUを酷使する作業を行えば当たり前ではあるが、OSが各プロセスのスケジューリングの方法をレスポンスの要求されるインタラクティブなフォアグラウンドのプロセスに対してうまく制御を行えば比較的ストレスのない動作になるものである。DEC社のVMSオペレーティングシステムなどの洗練されたOSではこのような点に関してもよく設計されていて、インタラクティブプロセスのレスポンス低下は自然なものとなっている。この点に関してはOSの設計に関わる部分なので対策は難しい。しかし、CPUを複数個搭載することによってフォアグラウンドのプロセスを快適なレスポンスに保つことが可能である。

マルチプロセッサ構成とは

CPUを複数個搭載した構成をマルチプロセッサ構成と呼び、非対象型多重プロセッシング(ASMP)と対象型多重プロセッシング(SMP)という種類がある。ASMPはオペレーティングシステムは必ずどれか特定のCPUで動作し、それ以外のプロセス(プログラムが動作する空間)またはスレッド(プログラムが動作する単位でプロセスよりも細分化された単位。OSによってはプロセスが動作単位の最小のものもある)は他のCPUで動作する。

ASMP SMP

SMPはより柔軟な構成で、動作するプロセスやスレッドがOSに関わるものであってもユーザーのものであっても、任意のCPUで動作することができる。ASMPはOSの設計が単純になるが、負荷バランスを均等に配分することは難しい。通常ユーザープロセスが増えれば増えるほどプロセッサーを増やして対応することが可能であるが、OSが動作できるCPUは決まっているのでパフォーマンスの限界はそのCPUの能力次第である。一方、SMPは負荷をより均等に配分できる。

マルチプロセッサの利点

マルチプロセッサが効果を発揮する最大の用途としては、大規模なデータベースサーバーやアプリケーションサーバー(アプリケーションの動作を補助し、利用者の処理要求を制御するサーバー)など多くの人数が利用するケースである。通常アプリケーションの設計者がまったくマルチプロセッサを意識しないでプログラムを作成し、それが動作単位である1つのプロセスやスレッド内のみで動作するようにアプリケーションを設計した場合、動作する単位が1つしかないので、そのアプリケーションが複数のCPUで分割されて動作することはない。ただし、これは利用者が一人の場合のケースである。しかし、複数の利用者がいればこのようなアプリケーションでも、プロセスはユーザーごとに生成されるようになり、プロセスの実行は複数のCPUに分散されるためにシステム全体としての処理能力は高まる。また、大規模なアプリケーションほど機能単位ごとにプロセスを分けクライアントサーバー型のアプリケーション設計となるために、マルチプロセッサを意識しない設計であったとしても自然にSMPの恩恵を受けられる設計となるものである。

個人でマルチプロセッサの恩恵を受ける場合とはどういう場合か。現実的にはほとんどメリットがないかもしれない。まず、ほとんどの個人向けのアプリケーションは動作単位となるプロセスやスレッドは1つである。また、マルチプロセス、マルチスレッドとして設計されていたとしても、それは処理の遅い画像のダウンロード中などの処理をバックグラウンドで行い、その間にユーザーからの処理を行えるように(砂時計にならないで)するような目的のものがほとんどである。まずオフィス製品と呼ばれるワードプロセッサー、表計算ソフトなどはまったく期待しないほうがよい。遅い処理があることに不満を感じてマルチプロセッサ構成にしても処理は分散されないのでまったく御利益はないのである。ただし、その処理中に他の処理を快適に行いたいという私の不満点のようなケースであれば効果は発揮できる。また、画像や動画処理などの様に時間のかかる処理が多いソフトではマルチプロセッサ構成にすると処理時間が短縮できるようにマルチスレッド設計になったソフトもあるので、このようなソフトを利用する場合にはマルチプロセッサの恩恵を受けられる。身近なところではAdobeのPhotoShopなどである。

マルチプロセッサ構成とするための条件

マルチプロセッサとしてマシンを構成するためにはハードウェアとOSの両方がマルチプロセッサ構成をサポートしなければならない。ハードウェアとはチップセット、CPU、マザーボードなどがそれに該当する。OSはWindows NTやOS/2のSMP版はSMPをサポートしてる。Windows 95は残念ながらマルチプロセッサ構成をサポートしていない。これはやはり個人利用をターゲットにしているために上記のような利点がほとんどないからであろう。しかしながら、マルチプロセッサを搭載しているマザーボード上でも95を(シングルプロセッサとして)動作させることは可能である。

ゲームソフトなどは個人利用としてはもっともマシンパワーが要求されるソフトなので、今後マルチスレッド化を行ったソフトが増えてもよさそうであるが、もっともシェアの大きいOSがマルチプロセッサをサポートしていないのが残念である。

SMP化の手順

私がゲーム、画像、音楽用として利用していたマシンは、特にGrand Prix IIを快適に動作させるためにCPUにはPentium IIを選択し、 233MHz版をオーバークロックで300MHzとして利用していた。マザーボードには将来的に上記のような不満も出ようかと思っていたので、TYANのTAHOE 2という440FXチップセットの、マルチプロセッサーをサポートしたマザーボードをシングルCPUで利用していた。実は以前にもTYANのTOMCAT 2というマザーボードでPentium 200MHzのSMP構成を行っていてよい感触を得ていたので、あらかじめマルチプロセッサ対応のマザーボードを購入しておいたのである。Pentium IIの233MHzが安価になってきたのを機会に今回はこのマザーボードを利用してWindows NT 4.0 Workstation版でマルチプロセッサー化を行った。ゲーム用途ではなく、ソフトウェアの開発用途に切り替えることにした。

CPUが複数あるからといって特別な設定はまったく必要ない。マザーボードによってはマルチプロセッサ構成にした場合にジャンパの設定を変えなければならないものもあるがTHAOEは必要なかった。また、NTのインストールに関しても、最初からCPUを複数挿しておけばマルチプロセッサ対応のカーネル(OSの核となる部分)がインストールされるので特に何も意識する必要はない。既にインストールされたシングルCPU構成のNTにCPUだけを追加するとどうなるかというのは実験していない(認識されないような気もするのだけれども、知っている人がいたら教えてください)。

写真を見るとわかるが、このマザーボードは8個ものSIMMスロットがあるのも魅力である。今となってはあまり用途のない8MB EDOが4枚あまっていたのと、32MBが4枚あったので合計で160MBになった。DIMMソケットを搭載したものもあるがSD-RAMの効能の実験のように2次キャッシュが動作する今回の環境ではEDOとSD-RAMの差はほとんどないと思われるのでメモリはEDO SIMMで十分であろう。

結果

今回はベンチマークなどを積極的に行う気にはならない。一般的なベンチマークを行う限りはシングルプロセッサとたいして結果が変わることはないからである。ちなみにWinBech96のCPUmark32は610であった。それよりもMS VC++のフルビルド中に快適に他の作業ができることを体感できればよいのである。結果は非常に満足である。シングルプロセッサ時にはビルド中のほかの作業は激しいスワッピングが発生しているかのごとく、タイピングなどまともにできず新しいウィンドウが開くのにもストレスを感じたが、マルチプロセッサ構成にした後にはバックグラウンドのビルド処理が行われていることをまったく意識することなく作業が可能である。仮想スクリーンソフトで画面を切り替えて別作業を行い、ビルド中の画面に戻ってみると「あれ、ビルド中だったんだ」という感じである。いや、快適快適。新しく購入したPentium IIの233MHzはオーバークロック動作しなかったので残念だが、300MHzが安くなった頃にはリプレースしてみたい。

その他

今回使ったTHAOE IIのパワーマネージメントがどうもおかしい。Videoをサスペンドするとマウスやキーボード操作を行っても2度と復活しないのである。また、ハードディスクのスピンダウンを7分くらいに設定しても1分くらいでスピンダウンしてしまう。TYANのホームページからスピンダウンの問題を解決するBIOSをダウンロードしてアップデートは行っているのだが。両現象とも、95でシングルCPUで利用していたときにも発生していた。どなたか情報を持っている方いらっしゃいますか?


ホーム