2012-12-19

コンピューターのハードウェアの不具合は、案外多い

Whose bug is this anyway?!? - Code Of Honor

Guild Warsという不自由なソフトウェアのゲームの開発者である Patrick Wyattが、今までに出くわしたバグについて語っている。中でも興味深いのは、ハードウェアの不具合、つまりソフトウェアの責任ではない不具合だ。

ユーザーから上がってくるバグ報告のうちのいくつかは、本来起こり得ないようなバグであった。もちろん、バグであるからには、何だって起こりえるのだが、それにしても、まずありえないバグが報告されていた。共同出資社にして凄腕プログラマーのMike O’Brienは、これがユーザーのハードウェアに起因する問題ではないかと推測した。そこで、彼はテストのためのコードを書いた。

Mike O’BrienはOsStressと名付けたモジュールを書いた。これは、メモリブロックを確保し、そのメモリブロック上で計算を行い、あらかじめ答えを格納したテーブルと比較するというものだ。このストレステストをメインゲームループに入れたので、コンピューターは一秒間に30-50回ほど、検算を実行することになる。

正常に動作するコンピューターでは、このストレステストは絶対に失敗しないはずである。しかし、驚いたことに、Guild Warsで使われている1%ほどのコンピューターは、実際に失敗したのだ。1パーセントというのは、大したことが無いように思えるかもしれないが、百万人のゲーマーが毎日プレイしているようなゲームでは、日々に1万人がクラッシュしていることになる。我々の開発部門は、何週間もそのような頻度で起こる問題を調査していたのだ。

この手のハードウェアの問題というのは、直接に観測したのはメモリーの問題なので、宇宙線やメモリの故障も当然考えられるが、放熱、電源容量の不足、オーバークロックなども考えられる。

ちなみに、Microsoftの不自由なOSであるWindowsも、Windows XPでエラー報告機能をつけてからというもの、頻繁に、起こりうるはずのないクラッシュリポートが報告されていた。たとえば、"xor eax eax"のような、およそクラッシュするはずのない命令で、実際にクラッシュしたというクラッシュレポートだ。CPUベンダーの既知のバグ一覧をみても、そのようなバグは見つかっていない。

There's an awful lot of overclocking out there - The Old New Thing - Site Home - MSDN Blogs

Microsoftがそのようなクラッシュレポートを送信したユーザーの何人かに連絡を取り、電話で色々と調査したところ、そのようなユーザーのコンピューターはみな、オーバークロックされていたことが明らかになった。オーバークロックについて知らないユーザーもいたが、そういう場合は大抵、コンピューターを購入した店側でオーバークロックされていたのであった。

今日では、オーバークロックはもはや酔狂な遊びになってしまった。CPUの性能が倍々に上がっていった昔は、オーバークロックで劇的な性能向上の余地があったのだが、今は単にクロック周波数が性能を決める時代でもなくなってしまったし、ましてや、CPUでもGPUでも、動的にリクロッキングするのが当たり前になってしまった。

No comments: