GiB Age

スルーしようと思ってましたが,ちょっとだけ.

マルチコアを生かしたい気持ちはわかる

Vistaの開発に携わった人たちがバックグラウンド・タスクを増やした狙いは理解できる。2001年に米Intelは「ハイパースレッディング」を発表し,物理的には一つのCPUでも,アプリケーション・ソフトからは2CPUに見えるようにして処理性能の向上を図った。2005年には一つのCPUパッケージに二つのCPUコアを搭載する「デュアルコア」CPUがパソコン向けに供給されるようになった。価格はまだ高いが,四つのCPUコアを搭載する「クアッドコア」CPUも登場してきている。「マルチコア」CPU(2個以上のコアを持つCPUの総称)が今後の主流になることは間違いないだろう。

そこで困ったのがソフトウエア(プログラム)の開発者だ。プログラムは基本的に逐次処理(AをやってBをやってCをやる…)で記述する。逐次処理のプログラムでは,コアが増えてもそれを使いこなすことができない。並列処理を行うプログラムを書けばいいのだが,正しい結果が得られなかったり,処理時間が短くならなかったりといった問題が生じやすく,かなり難しい。

そこで,逐次処理のプログラムを複数同時に動かせばマルチコアを無駄にしないで済むのではないかという発想が出てくる。Vistaではバックグラウンドのタスクが多いと書いた。フォアグラウンドのタスクだけでは今どきのマルチコアCPUを有効活用できないので,ユーザーのためになるバックグラウンドで動くプログラムを書こうと知恵を絞った結果が,Vistaなのだろうと思う。

そのシナリオを力説したい気持ちはよく分かるのですが,ディスク律速になりがちなタイプのプロセスを集めるとやっぱりディスク律速になることも,その場合 CPU 性能が (コア数が増えようとも) 関係ないことも,さすがに開発者は知ってます.もっとも,Vista のバックグラウンドディスクアクセスが従来よりも大幅に増えていて,そこはまだまだチューニングが必要なのは確かです.それは確かなのですが,だからといってマルチコアを生かすためにバックグラウンドプロセスを増やしたという主張は,ちょっと無理があります.そりゃ結論ありきすぎますよと.


でもディスクは1台しかない

記者が使っているVista搭載パソコンの1台は,CPUは米AMDSempron 3000+(1.8GHz)と旧式だが,ハード・ディスクは1万5000回転/分,容量146GB,Ultra160 SCSI接続のものを積んでいる(一般的なパソコンが搭載しているハード・ディスクは5400または7200回転/分)。回転待ちの時間が短いことが効果的なのか,きびきび動く。高速なハード・ディスクが安価になったら,Vistaが喜ばれる日が来るかもしれない。

ポイントは,「高速なハード・ディスクが安価になる」よりも先に,低価格化したメモリやシリコンストレージと,統計処理によるインテリジェントな先読みによる性能向上の方が大衆化する可能性が高いということです*1
近年,「1万5000回転/分,容量146GB,Ultra160 SCSIの高速ハードディスク」を買うお金があれば,4 GB オーバーのメモリ,あるいはその数倍のシリコンストレージが十分手に入るようになって来ました.
「そんな巨大なメモリまたはシリコンストレージが手に入ったとき,従来よりも飛躍的に高速化できるアプリケーションは何か? そのときになって実用的になるアルゴリズムは何か?」は結構いろいろな人が考えていて,開発者レベルでの投資としてはもう遅すぎるぐらいです.



さて,現実にはデスクトップアプリケーションの多くがディスクアクセスによる遅延に無頓着という現実があります.一方で Web の世界は,ブラウザの前で待たせると人が逃げるということで,事前処理と効率のよいデータキャッシュにとても真剣に取り組んでいます.Web アプリケーションを毛嫌いする人も多いですが,実際にはしばしば Web アプリケーションの方が軽快という場面に出くわします.
MSDN Library で API の説明を見るのに,ローカルで Document Explorer を立ち上げて API を検索するより,ブラウザを立ち上げて GoogleAPI を検索するほうが早く結果にたどり着けることなどは,そのよい例でしょう.
そしてデスクトップアプリケーションの遅延をもっと減らすためには,バックグラウンド処理による事前処理が重要なのですが,ここで話の先頭に戻る,というわけです.


まあ実際,勝手にディスクアクセスランプが点滅していたり,心当たりのないディスクの動作音が繰り返されるのが腹立たしいのは私も同じです.が,この腹立たしさのいくらかは,ディスクアクセスランプと動作音が五感で感じられるからこそのものかもしれません.今後 SSD の普及とともに「光も音もしなくなれば」,単に気づかないという理由で腹立たしさが解消されてしまうこともありえます.
普段 PC を使っているときでも,CPU の分岐予測の失敗や L1/L2 キャッシュミスが,パイプラインを驚くほど長時間ストールさせているにもかかわらず,そのことで心の平安を乱している人はほとんどいないようです.知らぬが仏というやつでしょうか.

*1:[http://pc.watch.impress.co.jp/docs/2007/0904/kaigai383.htm:title=後藤弘茂のWeekly海外ニュース PCのメモリ階層の変革を展望するMicrosoftとIntel]