SATA の AHCI 機能を有効にする

HARDWARE REPORT


AHCI (Advanced Host Controller Interface)

Serial ATA (SATA) ハードディスクには、AHCI (Advanced Host Controller Interface) に対応したものが存在します。

この機能は Serial ATA II で実装されたものだそうですけれど、これによって NCQ (Native Command Queuing) というディスクアクセス命令のキューイングを行うことで処理待ち時間を軽減する仕組みや、ホットプラグ (任意のタイミングでのハードディスクの取り付け・取り外し) といったことを行うことができるようになるようです。

この AHCI 機能を利用するには、BIOS, OS, デバイスドライバ, ハードディスクのそれぞれで AHCI に対応している必要があるのですが、今回、自分が使っている環境 (ASUS M2N-VM DVI + Windows Vista Ultimate x64) では、AHCI に対応していることが判ったため、この機能を利用してみることにしました。

ただ、Windows Vista Ultimate (x64) をインストールした時点では、BIOS の SATA コントローラが "AHCI Mode" になっていなかったため、IDE ATA/ATAPI コントローラは "標準デュアル チャネル PCI IDE コントローラ" がインストールされてしまっていました。

 そこで、今回は、IDE ATA/ATAPI コントローラを AHCI 対応のものに差し替えてみることにします。

 

Windows Vista の AHCI 対応ドライバの有効化

まず、レジストリエディタ (regedit.exe) を起動して、次のキーを開きます。

HKEY_LOCAL_MACHINE
→ System
→ CurrentControlSet
→ Services
→ Msahci

この中の "Start" の値を 0 に設定します。これで、起動時に ACHI ドライバ "msahci.sys" の読み込みが行われるようになるそうです。

 

引き続き、デバイスマネージャを起動して、"IDE ATA/ATAPI コントローラ" の差し替え作業を行います。

"標準デュアル チャネル PCI IDE コントローラ" を右クリックし、【ドライバソフトウェアの更新】 を選択します。そして、ドライバソフトウェアの検索方法で 【コンピュータを参照してドライバソフトウェアを検索します】 を選択し、次の画面で 【コンピュータ上のデバイス ドライバの一覧から選択します】 を選択します。【互換性のあるハードウェアを表示】 からチェックを外し、製造元を "Standard AHCI 1.0 Serial ATA Controller" に、モデルを "Standard AHCI 1.0 Serial ATA Controller" を選択して、デバイスドライバの差し替えが完了したら、コンピュータを再起動することで、AHCI 対応のドライバが組み込まれる感じになります。

ここで、通常の IDE (UltraATA 等のパラレル IDE) コントローラのデバイスドライバを差し替えてしまっていた場合、"Standard AHCI 1.0 Serial ATA Controller" は正しく動作してくれません。複数の IDE コントローラが存在している場合には、その辺りにも気を配りながら差し替える必要がありそうです。

 

これで AHCI が有効になったと思われますけれど、本当に動作しているのかどうか、いまひとつ実感が持てないところもあります。

というのも、ホットスワップを行うためのアイコンが表示されないんですよね。別の PC で Windows Server 2003 R2 をインストールしたときには、USB ハードディスクと同じように Serial ATA ハードディスクの取り外しも行えるようになっていたような気がするのですけど、今回の Windows Vista では、そういった感じのものは見受けられませんでした。ハードディスクは AHCI に対応しているものだったと思うのですけれど。

他にも、BIOS で AHCI を有効化していれば、nForce のチップセットドライバのインストールによって AHCI 対応のデバイスドライバがインストールされるとの情報もありましたけど、NVIDIA 16.12 ドライバ (Vista 64bit) の再インストールを行ってみても、nForce 630a 用の AHCI ドライバがインストールされるような感じはありませんでした。

とりあえず、確認方法がわからないので、今はこれで有効になったと思って動作させてみている感じです。