特集:Vista買うのはまだ早い!

Vista買うのはまだ早い!(1)グラフィックス編

前のページへ 1 2 3 次のページへ

 

ゲーマーにとってはお馴染みのATI CatalystとForceWare。これ以外に,IntelやVIA Technologies,SiSなどもグラフィックスドライバを提供している

 デバイスドライバは,OSとハードウェアを結ぶ特殊なソフトウェアだ。例えばグラフィックスカード用デバイスドライバ(=グラフィックスドライバ)の代表例は,4Gamerでもアップデート情報をお伝えしている「ATI Catalyst」や「ForceWare」だが,これらはATI RadeonやGeForceといったハードウェアの差異を吸収して,異なるハードウェアでもアプリケーションソフトからは同じように扱える仕組みを提供する。デバイスドライバがあるからATI RadeonでもGeForceでも同じゲームをプレイできるわけだ。

 

 その働きは逆に,ゲームがグラフィックスカードにアクセスして3Dグラフィックスを描画した場合を考えてみると分かりやすい。ATI RadeonとGeForceではハードウェアが異なるので,どちらのハードにも対応した形で開発者はプログラムしなければならず,非常に面倒な作業になる。また,ゲームにバグがあってグラフィックスカードの制御に失敗したら,それは即,PCのハングアップにつながってしまいかねない。だから,ATI CatalystやForceWareなどといったグラフィックスドライバが必要なのである。

 

 さて,デバイスドライバはハードウェアをコントロールしなければならないという性格上,ハードウェアリソースへのアクセスが許されるモード,すなわちカーネルモードで動作せねばならない。
 カーネルモードで動作する以上,デバイスドライバは同じカーネルスペースで動作するOSを停止させられる。だから,デバイスドライバにバグがあると,それはOSのハングアップに直結する。
 また,デバイスドライバが対応するハードウェアへアクセスしている最中に,そのハードウェアで不具合が生じた場合も同様だ。ハードウェアの不具合にドライバが対応しきれず停止すると,OS本体も連鎖的に停止してしまい,復旧ができない状態になる。要するにハングアップするわけである。

 

カーネルスペース部を抜粋してみた。グラフィックスドライバに問題があると,それは同じカーネルスペースで動作しているOSにすぐ影響してしまう

 

 実は,デバイスドライバのなかでも,とくにグラフィックスドライバはWindowsにとって鬼門になっていた。Microsoftによると,Windows XPで生じるブルースクリーン(=ハングアップ)のうち,なんと全体の20%がグラフィックスドライバに起因するのだそうだ。
 というわけで,Windows Vistaでは,これまでカーネルモードでのみ動作していたデバイスドライバが,「カーネルモードドライバ」(Kernel Mode Driver)と「ユーザーモードドライバ」(User Mode Driver)に分けられた。ドライバが持つ多くの機能をユーザーモード側に移し替え,危険なカーネルスペースに組み込む機能を必要最小限に抑えることで,グラフィックスドライバに起因する不具合を減らそうというのだ。

 

Windows VistaのWDDM概念図。ポイントは,デバイスドライバがユーザースペースにも用意されたところ

 

 ユーザーモードドライバにたとえ不具合があっても,OS本体まで壊してしまうことはなく,OSは動作し続けられる。OSは,ユーザーモードドライバに不具合を検出すると,そのドライバをいったんメモリから取り除き,OSそのものを再起動することなく再びユーザーモードドライバを読み出して,グラフィックスカードだけ再起動させることすら可能になっているのだ。
 幸か不幸か,2007年2月時点では不安定なグラフィックスドライバが存在するので,「グラフィックスカードだけの再起動」はよく体験できるが,いずれにせよ,従来のようにドライバの不具合がWindowsのハングアップには直結しないので,OSの安定性はかなりの向上を見せる。

 

先ほどの図から一部を抜粋。ユーザーモードドライバに問題があっても,カーネルモードドライバ,そしてカーネルスペースに影響はない

 

 

2Dアクセラレーションの廃止? デスクトップが3Dを利用

 デバイスドライバが大きく変わった二つめ理由は,グラフィックスカードの進化にある。

 

Windows XP(やそれ以前のWindows)において,一般的なアプリケーションはGDIを使って描画されていた

 Windows XP時代まで,Windowsにおけるグラフィックスは2種類の,相互にあまり関係のないレイヤーに分かれていた。
 一つは,一般のアプリケーションが利用する「GDI」(Graphics Device Interface)というレイヤーだ。オフィスアプリケーションやWebブラウザ,メールソフトなどといった,ごくごく一般的なWindowsアプリケーションは,それ自体が動作するウインドウやその内部を,GDIを呼び出して描画している。そのため,グラフィックスカードはGDIを高速化する,いわゆる「2Dアクセラレーション」機能を持っていたのだ。

 

 GDIのアクセラレーション,そしてGDIそのものが設計されたのは16bitのWindows時代にまで遡る。GDIには,「Windows 3.1」搭載機など,当時のPCに求められたグラフィックス機能が実装されているが,さすがに時代遅れの感は否めない。
 例えば,GDIは3Dの機能をまったく持っていない。また,ある画像に半透明の画像を重ね合わせる「アルファブレンディング」など,現在のグラフィックスカードでは当たり前のようにサポートする機能も,GDIはサポートしていない。GDIが想定するグラフィックス機能に比べると,現在のグラフィックスカードは遙か先に進んでいるわけだ。

 

前のページへ 1 2 3 次のページへ

 

タイトル Windows Vista
開発元 Microsoft 発売元 マイクロソフト
発売日 2007/01/30 価格 エディション,入手方法による
 
動作環境 N/A

(C)2007 Microsoft Corporation.