[Vista/SV2008] ビデオカード複数の環境で、スリープ(S3)復帰時にフリーズすることがある

Windows Vista、Windows Server 2008において、グラフィックカード(ビデオカード)を複数取り付けていると、スリープ(S3 スタンバイ)から復帰するときにフリーズすることがあるようです。

原因

Microsoftによると、問題に関係するのはDirectX カーネルドライバ。PCI設定空間(configuration space)を再設定する前に、グラフィックカードのPCI I/O範囲(空間)へのアクセスを可能にしてしまうために、競合が発生するとのこと。

キーワード1: “S3″って?

“S3″というのは、電源管理を行う”ACPI(Advanced Configuration and Power Interface)”という規格の中で定められている、状態(ステート)の1つです。

  • S0: 稼働中 - コンピュータが動作している
  • S1: 低消費電力 - ごく一部の動作を止める
  • S2: 低消費電力 - CPUの電源OFF
  • S3: スリープ・スタンバイ - メモリ関連のもの以外は電源OFF
  • S4: 休止状態 - ほとんどOFF(電源抜いてもよい)
  • S5: シャットダウンによる電源OFF - ほとんどOFF(電源抜いてもよい)
  • (G3: 電源がない状態)

このうち、S0~S4については、いわば「OSがOSとして存在している区間」で、ソフトウェアを立ち上げたまま休止状態が出来るように、OSの状態が何らかの形で維持されています。

キーワード2: DirectX カーネルドライバって?

ソフトウェアとハードウェア(グラフィックカード)を結ぶ橋渡しのような存在です。まるでCPUのスケジューリングのように、複数のソフトウェアからの描画命令を受け付け、適宜ハードウェアに命令を振り分けていく、という役割を持ちます。

これまでは、ソフトウェアからDirectX(3DならDirect3D)へ、DirectXから各ドライバへ、ドライバからハードウェアへ、という流れだったところに、もう1段 “DirectX カーネルドライバ”が入る形です。

TOP