(Currently, update to RELENG_4 is not scheduled) Obtained from: jpman Project <manjp@jp.FreeBSD.org>
262 lines
8.6 KiB
Groff
262 lines
8.6 KiB
Groff
.\"
|
|
.\" Copyright (c) 1995, 1996, 1997, 1998
|
|
.\" Justin T. Gibbs. All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. The name of the author may not be used to endorse or promote products
|
|
.\" derived from this software withough specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
.\"
|
|
.\" %Id: ahc.4,v 1.13 1998/10/16 15:06:26 gibbs Exp %
|
|
.\" jpman %Id: ahc.4,v 1.3 1999/11/19 15:20:44 horikawa Stab %
|
|
.\"
|
|
.\" WORD: tagged queueing タグキューイング
|
|
.\" WORD: programmed I/O プログラムド I/O
|
|
.\" WORD: maximum synchronous negotiation rate 最大同期ネゴシエーション速度
|
|
.\" WORD: disconnection ディスコネクト
|
|
.\" WORD: scatter gather
|
|
.\" WORD: transaction トランザクション
|
|
.\" WORD: bus traffic バスの流量
|
|
.\" WORD: clock crystal 水晶発振子
|
|
.\"
|
|
.Dd October 15, 1998
|
|
.Dt AHC 4 i386
|
|
.Os FreeBSD
|
|
.Sh 名称
|
|
.Nm ahc
|
|
.Nd Adaptec VL/EISA/PCI SCSI ホストアダプタドライバ
|
|
.Sh 書式
|
|
VL/EISA カード 1 つ以上につき:
|
|
.Cd controller eisa0
|
|
.Cd controller ahc0
|
|
.Pp
|
|
PCI カード 1 つ以上につき:
|
|
.Cd controller pci0
|
|
.Cd controller ahc0
|
|
.Pp
|
|
PCI アダプタにメモリマップド I/O を許可するには:
|
|
.Cd options AHC_ALLOW_MEMIO
|
|
.Pp
|
|
SCSI バス 1 つ以上につき:
|
|
.Cd controller scbus0 at ahc0
|
|
.Sh 解説
|
|
このドライバは
|
|
Adaptec
|
|
.Tn AIC7770,
|
|
.Tn AIC7850,
|
|
.Tn AIC7860,
|
|
.Tn AIC7870,
|
|
.Tn AIC7880,
|
|
.Tn AIC7890,
|
|
.Tn AIC7891,
|
|
.Tn AIC7895,
|
|
.Tn AIC7896,
|
|
.Tn AIC7897
|
|
ホストアダプタチップに接続された
|
|
.Tn SCSI
|
|
バスを利用できるようにします。
|
|
これらのチップは
|
|
次に挙げる Adaptec SCSI コントローラカードや、
|
|
多くのマザーボードに載っています。
|
|
.Tn 274X(W),
|
|
.Tn 274X(T),
|
|
.Tn 284X,
|
|
.Tn 2920C,
|
|
.Tn 2940,
|
|
.Tn 2940U,
|
|
.Tn 2940AU,
|
|
.Tn 2940UW,
|
|
.Tn 2940UW Dual,
|
|
.Tn 2940U2W,
|
|
.Tn 2940U2B,
|
|
.Tn 2950U2W,
|
|
.Tn 2950U2B,
|
|
.Tn 3940,
|
|
.Tn 3940U,
|
|
.Tn 3940AU,
|
|
.Tn 3940UW,
|
|
.Tn 3940AUW,
|
|
.Tn 3940U2W,
|
|
.Tn 3985
|
|
.Pp
|
|
このドライバは twin/wide バスやコントローラのタイプに応じた
|
|
fast/ultra/ultra2 同期転送、そしてタグキューイングや SCB ページング
|
|
をサポートしています。
|
|
.Pp
|
|
PCI デバイスでは
|
|
.Dq Dv AHC_ALLOW_MEMIO
|
|
設定オプションを記述することでメモリマップド I/O を利用するようになります。
|
|
メモリマップド I/O は
|
|
(オプションを記述しない場合に利用する) プログラムド I/O よりも効率的です。
|
|
たいていの PCI BIOS は、
|
|
カードと通信するのにどちらの手段でも使えるようにデバイスをマップします。
|
|
しかし場合によっては
|
|
(大抵は PCI デバイスが PCI->PCI ブリッジの向こう側にある場合)、
|
|
チップがメモリマップド I/O を利用するための初期化を BIOS が実施できません。
|
|
この問題の症状は、通常、
|
|
メモリマップド I/O の利用を試みるとシステムがハングアップすることです。
|
|
最近のマザーボードはたいていうまく初期化をするので、
|
|
このオプションを有効にしてもきちんと動作します。
|
|
.Pp
|
|
ターゲット毎の設定は、
|
|
.Tn EISA
|
|
以外のモデルで起動時に利用できる
|
|
.Tn SCSI-Select
|
|
メニューで行ない、
|
|
.Tn EISA
|
|
モデルでは
|
|
.Tn EISA
|
|
設定ユーティリティで行ないます。
|
|
このドライバは、このターゲット毎の設定を受け取ります。
|
|
.Tn EISA
|
|
アダプタでは
|
|
.Tn BIOS
|
|
が有効になっているという条件が必要です。
|
|
受け取る設定項目は、同期/非同期転送、最大同期ネゴシエーション速度、
|
|
ディスコネクト、ホストアダプタの SCSI ID、そして
|
|
.Tn EISA
|
|
ツインチャネルコントローラの場合にはプライマリチャネルの選択です。
|
|
.Pp
|
|
I/O アドレスは検出ルーチンによって自動的に決定されますが、
|
|
284x
|
|
.Pq Tn VESA No ローカルバスコントローラ
|
|
を
|
|
.Tn EISA
|
|
システムで使う場合には注意が必要です。
|
|
他の
|
|
.Tn EISA
|
|
カードとの衝突を防ぐために、
|
|
284x が使用する I/O 領域を設定するジャンパが、
|
|
カードが挿し込まれている
|
|
.Tn EISA
|
|
スロットと適合していることを確かめて下さい。
|
|
.Pp
|
|
性能と機能の組合せは、aic7xxx の製品の種類によってさまざまです。
|
|
次の表は
|
|
.Nm
|
|
ドライバがサポートするさまざまなチップの比較です。
|
|
ワイドおよびツインチャネル機能は、
|
|
たとえ特定のチップで常にサポートされていても、
|
|
特定のマザーボードやカードの設計では無効になっているかもしれないことに
|
|
注意して下さい。
|
|
.Pp
|
|
.Bd -filled -offset indent
|
|
.Bl -column "aic7770 " "10 " "EISA/VL " "10MHz " "16bit " "SCBs " Features
|
|
.Em "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
|
|
.El
|
|
.Pp
|
|
.Bl -enum -compact
|
|
.It
|
|
多重ツインチャネルデバイス - 1 つのコントローラが 2 つのバスを提供します。
|
|
.It
|
|
多機能ツインチャネルデバイス - 1 つのチップに 2 つのコントローラが存在します。
|
|
.It
|
|
コマンドチャネルのセカンダリ DMA エンジン -
|
|
スキャッタギャザリストと SCB の先読みを許します。
|
|
.It
|
|
64 バイト SCB サポート -
|
|
余計な DMA を排除するために SCSI CDB が SCB に組み込まれています。
|
|
.It
|
|
ブロック移動命令サポート - 特定のシーケンサ操作のスピードを倍にします。
|
|
.It
|
|
.Sq Bayonet
|
|
スタイルのスキャッタギャザエンジン - S/G 先読みの性能を改善します。
|
|
.It
|
|
キューイングレジスタ -
|
|
シーケンサを停止させずに新たなトランザクションをキューイングできます。
|
|
.El
|
|
.Ed
|
|
.Pp
|
|
|
|
.Sh SCSI コントロールブロック (SCB)
|
|
SCSI バス上のデバイスに送られるトランザクションは、それぞれ 1 つの
|
|
.Sq SCSI コントロールブロック
|
|
(SCB) に割り当てられます。
|
|
SCB はコントローラがトランザクションを処理するのに必要な全ての
|
|
情報を持っています。
|
|
(上の) チップの機能の表には、チップ上のメモリに格納できる
|
|
SCB 数が挙げられています。
|
|
モデルナンバが 7870 以上の全てのチップは、
|
|
外部 SRAM によってチップ上の SCB 空間を、最大で 255 SCB まで増加可能です。
|
|
Adaptec のコントローラで外部 SRAM を持っているものはほとんどありません。
|
|
|
|
外部 SRAM が利用できない場合には SCB は限りある資源であり、
|
|
率直 (馬鹿正直) な方法で使うと、
|
|
同時に処理中にできるトランザクション数は、SCB 数までです。
|
|
これでは SCSI バスやデバイスをフルに活用するのに十分な余裕がありません。
|
|
この問題を解決するのは
|
|
.Em SCB ページング
|
|
というメモリのページングと同様の考え方です。
|
|
SCB ページングは、デバイスが普段は長い時間コントローラと会話せず、
|
|
SCSI バスとの接続をディスコネクト (切断) しているという事実を利用しています。
|
|
ディスコネクトしているトランザクションの SCB は、
|
|
コントローラにとっては転送が再開した時にだけ役に立ちます。
|
|
コントローラが実行すべき別のトランザクションをホストがキューイングした時、
|
|
コントローラのファームウェアは、未使用の SCB があればそれを使います。
|
|
ない場合、ディスコネクトされてから一番時間が経っていない
|
|
(それゆえ最も長くディスコネクトされたままであろう) SCB の状態を
|
|
DMA を経由してホストのメモリに保存し、
|
|
コントローラの SCB を再利用して新しいトランザクションを始めます。
|
|
これによりコントローラは SCB 空間の大きさによらず
|
|
最大 255 のトランザクションをキューイング可能です。
|
|
コントローラの SCB 空間がディスコネクトされているトランザクションの
|
|
キャッシュとして機能するため、利用できる SCB 空間が大きければ大きいほど、
|
|
SCB のデータを保存したり復元したりするために使われるホストのバスの
|
|
流量が少なくなります。
|
|
.Sh バグ
|
|
ある Quantum のドライブ (少なくとも Empire 2100 と 1080s) は、
|
|
.Tn AIC7870
|
|
Rev B の 10MHz の同期モードでは使えません。
|
|
この問題があるコントローラは 42MHz の水晶発振子を持っていて、
|
|
10MHz よりちょっと高い周波数で動作します。
|
|
このためドライブに支障をきたしバスがハングアップします。
|
|
.Tn SCSI-Select
|
|
ユーティリティで最大同期ネゴシエーション速度を 8MHz に設定すれば
|
|
普通に使えるようになります。
|
|
.Sh 関連項目
|
|
.Xr aha 4 ,
|
|
.Xr ahb 4 ,
|
|
.Xr cd 4 ,
|
|
.Xr scsi 4 ,
|
|
.Xr da 4 ,
|
|
.Xr sa 4
|
|
.Sh 作者
|
|
.Nm
|
|
ドライバ、
|
|
.Tn AIC7xxx
|
|
シーケンサコードアセンブラ、
|
|
そして aic7xxx チップで動作するファームウェアは
|
|
.An Justin T. Gibbs
|
|
が書きました。
|
|
.Sh 歴史
|
|
.Nm
|
|
ドライバは
|
|
.Fx 2.0
|
|
から登場しました。
|