EN JA
AHCI(4)
AHCI(4) FreeBSD Kernel Interfaces Manual AHCI(4)

名称

ahciSerial ATA Advanced Host Controller インタフェースドライバ

書式

このドライバをカーネルにコンパイルするためには、次の行を利用者のカーネル設定ファイルに置きます:

device pci
device scbus
device ahci

もう一つの方法として、ブート時にモジュールとしてドライバをロードするためには、次の行を loader.conf(5) に置きます:

ahci_load="YES"

次の調整変数は、 loader(8) で設定可能です:

hint.ahci. X .msi
指定されたコントローラによって使用される Message Signaled Interrupts (MSI) を制御します。

0
無効にされた MSI。
1
サポートされるなら、使用される単一の MSI ベクトル (デフォルト)。
2
サポートされるなら、使用される複数の MSI ベクトル。
hint.ahci. X .ccc
指定されたコントローラによって Command Completion Coalescing (CCC) 使用法を制御します。 0 以外の値は、CCC を有効にし、最大の時間を定義して (ms 単位で)、コントローラキューにいくつかの要求が存在するなら、要求は、割り込みを待つことができます。 CCC は、多くの並列な要求でシステムのコンテキストスイッチの数を減少させますが、追加コマンドの待ち時間のために、いくつかの作業負荷 (workload) でディスク性能を減少させるかもしれません。
hint.ahcich. X .pm_level
追加コマンドの待ち時間の費用で節約されるいくらかの電力を可能とする、指定されたチャネルのための SATA インタフェース電源管理を制御します。指定できる値は、次の通りです:

0
インタフェース電源管理は、無効にされます (デフォルト)。
1
デバイスは、PM 状態変更を始めることができ、ホストは、パッシブ (passive) です。
2
ホストは、ポートが活動しなくなるときはいつも、PARTIAL PM 状態遷移を開始します。
3
ホストは、ポートが活動しなくなるときはいつも、SLUMBER PM 状態遷移を開始します。
4
ドライバは、ポートがアイドルになった 1ms 後に、 PARTIAL PM 状態遷移を開始します。
5
ドライバは、ポートがアイドルになった 125ms 後に、 SLUMBER PM 状態遷移を開始します。

ICH8 のような、いくつかのコントローラは、NCQ が使用されている状態でモード 2 と 3 を実行しません。人工的に入る待ち時間のために、モード 4 と 5 の性能劣化は、モード 2 と 3 よりずっと小さいです。

インタフェース電源管理は、デバイスの存在の検出を複雑にすることに注意してください。手動のバスのリセット/再スキャンは、ハードウェアが Cold Presence Detection を実装していなければ、デバイスのホットプラグ (hot-plug) の後に必要とされます。

hint.ahcich. X .sata_rev
0 以外の値に設定すると、最大の SATA リビジョン (速度) を制限します。値 1、2 と 3 は、それぞれ 1.5、3 と 6Gbps です。
hw.ahci.force
0 以外に設定することは、古い IDE エミュレーションのために設定されても、ドライバは、いくつかの既知の AHCI 互換チップに強制的にアタッチします。デフォルトは、1 です。

解説

このドライバは、AHCI コンパチブルコントローラの SATA ポートへの本来のアクセスを CAM(4) サブシステムに提供します。見つけられた各 SATA ポートは、1 つのターゲット、または HBA が Port Multipliers をサポートするなら、16 個のターゲットがある別々のバスとして CAM に示されます。バス管理の詳細の大部分は、CAM の SATA 特有の輸送によって扱われます。接続された ATA ディスクは、 ATA プロトコルディスク周辺機器ドライバ ada(4) によって扱われます。 ATAPI デバイスは、SCSI プロトコル周辺機器ドライバ cd(4), da(4), sa(4) などによって扱われます。

ドライバの機能は、シリアル ATA と ATAPI デバイス、 Port Multiplier (サポートされるとき、FIS ベースのスィッチングを含む)、ハードウェアコマンドキュー (1 ポート毎に最大 32 のコマンド)、 Native Command Queuing、SATA インタフェース電源管理、デバイスホットプラグと、Message Signaled Interrupt のサポートを含んでいます。

ドライバは、AHCI によって定義された、"LED"エンクロージャ管理メッセージをサポートします。ハードウェアによってサポートされるとき、ローカライズと状態報告の目的ために led(4) API またはエミュレートされた ses(4) デバイスを通して、LED のポート毎のアクティビティ、位置づけとフォルトを制御することができます。 AHCI コントローラをサポートすることは、SGPIO インタフェースを通してバックプレーンコントローラへの情報を転送できます。バックプレーンコントローラは、現在のインディケータを使用してそれらを報告する何らかの方法 (IBPI 規格) で受信された状態を解釈します。

また、AHCI ハードウェアは、 ata(4) サブシステムの ataahci ドライバによってサポートされています。同時に両方のドライバがロードされるなら、これは、 2 つのより機能的であるとして優先権が与えられます。

ハードウェア

ahci ドライバは、PCI クラス 1 (大容量記憶)、サブクラス 6 (SATA)、とプログラミングインタフェース 1 (AHCI) がある AHCI コンパチブルコントローラをサポートします。

また、ata(4) の atamarvell と atajmicron ドライバと協力して、 JMicron JMB36x と Marvell 88SE61xx のような、古い PATA+AHCI + AHCI-SATA 結合コントローラの AHCI 部分をサポートします。

関連ファイル

/dev/led/ahci*.*.act
アクティビティ (activity) LED デバイスノード
/dev/led/ahci*.*.fault
フォルト (fault) LED デバイスノード
/dev/led/ahci*.*.locate
位置付け (locate) LED デバイスノード

関連項目

ada(4), ata(4), cam(4), cd(4), da(4), sa(4), ses(4)

歴史

ahci ドライバは、 FreeBSD 8.0 ではじめて登場しました。

作者

Alexander Motin <mav@FreeBSD.org>.
July 25, 2012 FreeBSD