PCI カード 1 つ以上につき: controller pci0 controller ahc0
PCI アダプタにメモリマップド I/O を許可するには: options AHC_ALLOW_MEMIO
SCSI バス 1 つ以上につき: controller scbus0 at ahc0
このドライバは twin/wide バスやコントローラのタイプに応じた fast/ultra/ultra2 同期転送、そしてタグキューイングや SCB ページング をサポートしています。
PCI デバイスでは ``AHC_ALLOW_MEMIO '' 設定オプションを記述することでメモリマップド I/O を利用するようになります。 メモリマップド I/O は (オプションを記述しない場合に利用する) プログラムド I/O よりも効率的です。 たいていの PCI BIOS は、 カードと通信するのにどちらの手段でも使えるようにデバイスをマップします。 しかし場合によっては (大抵は PCI デバイスが PCI->PCI ブリッジの向こう側にある場合)、 チップがメモリマップド I/O を利用するための初期化を BIOS が実施できません。 この問題の症状は、通常、 メモリマップド I/O の利用を試みるとシステムがハングアップすることです。 最近のマザーボードはたいていうまく初期化をするので、 このオプションを有効にしてもきちんと動作します。
ターゲット毎の設定は、 EISA 以外のモデルで起動時に利用できる SCSI-Select メニューで行ない、 EISA モデルでは EISA 設定ユーティリティで行ないます。 このドライバは、このターゲット毎の設定を受け取ります。 EISA アダプタでは BIOS が有効になっているという条件が必要です。 受け取る設定項目は、同期/非同期転送、最大同期ネゴシエーション速度、 ディスコネクト、ホストアダプタの SCSI ID、そして EISA ツインチャネルコントローラの場合にはプライマリチャネルの選択です。
I/O アドレスは検出ルーチンによって自動的に決定されますが、 284x (VESA ローカルバスコントローラ ) を EISA システムで使う場合には注意が必要です。 他の EISA カードとの衝突を防ぐために、 284x が使用する I/O 領域を設定するジャンパが、 カードが挿し込まれている EISA スロットと適合していることを確かめて下さい。
性能と機能の組合せは、aic7xxx の製品の種類によってさまざまです。 次の表は ドライバがサポートするさまざまなチップの比較です。 ワイドおよびツインチャネル機能は、 たとえ特定のチップで常にサポートされていても、 特定のマザーボードやカードの設計では無効になっているかもしれないことに 注意して下さい。
Chip MIPS Bus MaxSync MaxWidth SCBs Features aic7770 10 EISA/VL 10MHz 16Bit 4 1 aic7850 10 PCI/32 10MHz 8Bit 3 aic7860 10 PCI/32 20MHz 8Bit 3 aic7870 10 PCI/32 10MHz 16Bit 16 aic7880 10 PCI/32 20MHz 16Bit 16 aic7890 20 PCI/32 40MHz 16Bit 16 3 4 5 6 7 aic7891 20 PCI/64 40MHz 16Bit 16 3 4 5 6 7 aic7895 15 PCI/32 20MHz 16Bit 16 2 3 4 5 aic7896 20 PCI/32 40MHz 16Bit 16 2 3 4 5 6 7 aic7897 20 PCI/64 40MHz 16Bit 16 2 3 4 5 6 7
- 多重ツインチャネルデバイス - 1 つのコントローラが 2 つのバスを提供します。
- 多機能ツインチャネルデバイス - 1 つのチップに 2 つのコントローラが存在します。
- コマンドチャネルのセカンダリ DMA エンジン - スキャッタギャザリストと SCB の先読みを許します。
- 64 バイト SCB サポート - 余計な DMA を排除するために SCSI CDB が SCB に組み込まれています。
- ブロック移動命令サポート - 特定のシーケンサ操作のスピードを倍にします。
- `Bayonet' スタイルのスキャッタギャザエンジン - S/G 先読みの性能を改善します。
- キューイングレジスタ - シーケンサを停止させずに新たなトランザクションをキューイングできます。
外部 SRAM が利用できない場合には SCB は限りある資源であり、 率直 (馬鹿正直) な方法で使うと、 同時に処理中にできるトランザクション数は、SCB 数までです。 これでは SCSI バスやデバイスをフルに活用するのに十分な余裕がありません。 この問題を解決するのは SCB ページング というメモリのページングと同様の考え方です。 SCB ページングは、デバイスが普段は長い時間コントローラと会話せず、 SCSI バスとの接続をディスコネクト (切断) しているという事実を利用しています。 ディスコネクトしているトランザクションの SCB は、 コントローラにとっては転送が再開した時にだけ役に立ちます。 コントローラが実行すべき別のトランザクションをホストがキューイングした時、 コントローラのファームウェアは、未使用の SCB があればそれを使います。 ない場合、ディスコネクトされてから一番時間が経っていない (それゆえ最も長くディスコネクトされたままであろう) SCB の状態を DMA を経由してホストのメモリに保存し、 コントローラの SCB を再利用して新しいトランザクションを始めます。 これによりコントローラは SCB 空間の大きさによらず 最大 255 のトランザクションをキューイング可能です。 コントローラの SCB 空間がディスコネクトされているトランザクションの キャッシュとして機能するため、利用できる SCB 空間が大きければ大きいほど、 SCB のデータを保存したり復元したりするために使われるホストのバスの 流量が少なくなります。