バケット - みる会図書館


検索対象: UNIX MAGAZINE 1993年2月号
27件見つかりました。

1. UNIX MAGAZINE 1993年2月号

TURBOchannel T 1 アダブタ = 800Mbps = 100MB/s) である。毎秒 192KB 程度 なので、このアタフ。タでは DMA は使用しない 10 。 TURBOchannel のクロックは、 12.5 ~ 25MHz で あれば自由に設定できる。低速の TURBOchanneI で は IOCTL2 PAL ( E14 ) を変更しなければならな い。高速の PAL は 27 ~ 15.6MHz ( DS5000 / 200 ) の クロックに対応しているが、低速の PAL は 16.6 ~ 7.8MHz ( DS5000 / IXX ) である。これは、次のバージョ ンで改善する予定である。 TURBOchannel の説明はこれですべてである。多く の DEC の I/O バスは非同期かっ対称型なので、遅くて 複雑なものになり、簡単なデバイスの実装も高価になる。 プロクラミンク・インターフェイス TID4PKT は、プログラムで入出力をおこなう I/O デ バイスであり、 DMA は使用しない。デバイスドライバが アタフ。タと通信するときは、アタフ。タの 4MB のアドレス 空間に実効アドレスのあるロード / ストア命令を実行する。 アタブタのアドレス空間は、制御 / 状態レジスタ、デー タレジスタ、オプション ROM の 3 つに分かれている。 ・制御 / 状態レジスタ (CSR: Control/Status Regis- ter): 1 ワードアドレスである。このレジスタのいくっ かのピット (FIFO 状態など ) は言も囚みしかできない。 ただし、割込み許可やルーフ。バックなどのビットは囚 みも書込みも可能である。 ・テータレジスタ . 1 ワードアドレスである。送信データ を書き込み、受信したデータを読み込む。送信と受信 は互いに完全に独立しているが、データレジスタは同し I/O アドレスを共有している。 ・オプション ROM: アタフ。タのアドレス空間の 128KB を占めている。アダブタについての情報 ( 形式、メー カー、リピジョンレベルなど ) と、メモリにロードして ROM Executive のもとで実行できる診断プログラム が入っている。 制御 / 状態レジスタ 図 4 に示す制御 / 状態レジスタはこのアタブタを尺し、 アドレスの 17 ビット目と 4 ビット目が 1 になったとき 10 言心主 : 192KB/s = 192 x 8 Kbps 1.536Mbps UNIX MAGAZINE 1993.2 に参照できる。アドレスのそのほかのビットは無視される ため、ほかの多くの I/O アドレスでも缶剏 / 状態レジスタ を参照できる。 csr. TxIntReq と csr. RxInReq 、 csr. TxUnder— ードウェアが設定してソフトウェアがクリ fl 。 w は、 アするが、これらのピットはいつ設定されるか分からな いので、クリアの実行には注意が必要である。クリアす る場合は、対応するピットに 1 を書き込む。このとき、 csr. IntEnbI や csr. LoopBack 、 csr. TxLc1CIk など を変更しないように注意しなければならない。 csr. IntEnbI をクリアして、 csr. RxIntReq と csr. TxIntReq をポーリングすれは、割込みなしにアタフ。タが 操作できる。割込みがかかるようにするには、アタフ。タの 割込み許可のビットのほかに、 CPU のレジスタのビット も設定しなければならない。 csr. TxIntReq と csr. Rx IntReq の両方を、割込み処理から戻る前か、別の割込み がかかる前にクリアする必喫がある。 csr. TxUnderf10w は送信器の状態を示す唯一のビッ トである。送信器の FIFO のアンダーフローというのは、 ハードウェアとソフトウェアの同期がとれていないことを 表している。送り出されたバケットに CRC が含まれて いないときは、 HDLC による転送は失敗し、終了する。 これにより、受信側でバケットカ噸なわれたことカ忍で きる。 アダフ。タのテストをおこなう場合、 csr ・ LoopBack を 設定すれば、送信したすべてのバケットが受け取れるの で、これらを上交するとよい。ルーフ。バック・テスト中は、 受信器は TI 回線からのデータを無視するため、送られて きたバケットはすべて失われる。受信器とのルーフ。バック と同様に TI 回線 - 日ンヾケットが送信されたとすると、対 向する受信器はループバック・テストのバケットを本当の データであると判断する。そのため、ルーフンヾック中、送 信器はフレーム化されていないデータがすべて 1 のバケッ トを TI 回線に送信する。すべて 1 のデータは回線に とっては正しいが、フレームの形式をとっていないため、 このデータを受け取った受信器は回線か落ちているとみな す (csr. FrameSync は偽である ) 。 csr. TxLc1C1k の適切な値は、 TI 回線に接続されて いるアダブタによって異なる。ある回線では、送信器は 受信器が受け取ったデータから回復したクロックを使う 83

2. UNIX MAGAZINE 1993年2月号

TURBOchanneI T 1 アダブタ 7 ではなくネットワークから起動して使用するには、ファイ ルと起動するサーバーを登録し、 REX のコマンド boot -Dn 6/mop ( マニュアルには書かれていない ) を実行す る。ここでれは、置き換えたい ROM があるアダフ。タの スロット番号である ( 6 / tftp でもよい ) 。プログラムを 起動する REX コマンドは、 REX か再ネ川月化されるまで は、アタフ。タ上の ROM からではなくネットワークから 診断プログラム このイメージを読み込む。 もとづいてランダムな値を生成し、残りのデータと上交 生成するための初期値と仮定される。そして、この値に そうでなけれは、最初の 4 バイトはランダムな数値を ンは一定パターン ( 0 、 1 、 2...255 ) であると仮定する。 イトが ( 0123 ) だったら、バケットのデータのパター ンとを上交して違いを出力する。バケットの最初の 4 バ 論理変比真の場合、受信したバケットと正しいパター ・ DataCheck ン ( 0 、 1 、 2...255 ) て理められる。 は、バケット長は Length となる。中身は一定のパター ムになり、中身もランダムな数て理められる。偽の場合 論理変比真の場合、送信するバケットの長さはランダ ・ Random 長さ Length になる。 までのランダムなバイト長になる。偽であれば、一定な 真の場合は、送信するバケットの長さは 2 から Length 2 ~ 2 , 048 までの整変数 Random ( 頁を参照 ) が ・ Length はかのコマンドの動作を変更できる。 下記の 5 つの変数がある。これらはコマンドで設定し、 プログラム変数 は t 0 と入力すればよい。 は、スロット 0 のアダブタの言斤プログラムを開始するに アタフ。タの TURBOchanneI のスロット番号 ) 。たとえ ト ) が出ているときに t れと入力する ( れはテストする 言斤プログラムを開始するには、 > > (REX のプロンプ 88 する。 ・ LoopBack 論理変この変数の値は、 CSR に書込みがおこなわ れるときはかならす csr ・ LoopBack に設定される。 れが真の場合、送信器からの出力はループして受信器の 入力に入り、すべて 1 のデータが TI 回線に送り出され る。 TI 回線からのバケットは無視される。 ・ C10ck 論理変数。この変数の値は CSR への書込みがおこな われるときには、かならす csr . txLc1C1k に設定さ れる。真の場合は送信器は内蔵の水品囎辰器を使用する が、偽の場合は、受信した信号から再生したクロックを 使用する。 診断コマンド 下記の診断プログラムはキーポードから利用するもの で、 OS を介した場合のように複雑な操作をせすに、アダ プタのテンヾッグと TI 回線のテストかできる。 ? を入力する とコマンドー覧が、 help でコマンドと 1 行の説明が表示 される。コマンドの実行は、コマンド名の先頭からはかの コマンドと区別できるだけの文字を入力し、その後、キャ リッジ・リターンかスペースを入力する。実行中のコマン ドを停止するには、任意の 1 文字を入力すればよい。 ・ Quit および xit アダブタの診断プログラムから抜けて REX に戻る。 ・ Test 連続的 ( ンヾケットを送受信する。任意の 1 文字を入力 すると終了する。正常なバケットを 10 個受信するた びに ! か表示される。送受信に失敗すると、その状態を 表示して回数を数える。テストカ鮗ると、成功した送受 信バケットの数と失敗した送受信バケットの数を表示 する。このコマンドは、 TxTest と RxTest ( 次項を参 照 ) をループのなかで呼び出しているだけである。 ・ TxTest 連続的にバケットを送信する。任意の 1 文字を入力す ると終了する。正常なバケットを 10 回送信するたび に ! が表示される。もし csr. TxUnderF10w が真なら ば、 CSR を表示し、そのバケットは失敗したバケット として数える。テストカ鮗ると、成功したバケットの数 と失敗した数を表小する。バケットの長さと内容は、変 数 Length および R d 。 m で制御される。 UNIX MAGAZINE 1993.2

3. UNIX MAGAZINE 1993年2月号

TURBOchannel T 1 アダブタ 6 図 12 13 14 7 11 10 8 6 5 Full H alf Empt xx Full Half Empt Pkt Sgnl Fram Data ビット 31 ~ 16 接続されていない。 ビット 15 ~ 9 受信と送信の FIFO の状態を表す。匍御 / 状態レジスタの説明 ( 図 4 ) を参昭 バケットの終り。ピット 7 ~ 0 か漱態を表すなら 1 、データなら 0 。 信号を失った。正しい TI 信号を受信しているなら 0 。 ビット 7 フレーミング・パターンの同期を失った。受信器が D4 フレーミング・パターンに期しているときには 0 。 ビット 6 データを失った。正しいデータを受信し続けているあいだは 0 、バケットを失ったら 1 。 ビット 5 0 ビット 3 0 アポート。バケットが HDLC アポートて終了すれば 1 。 FIFO オーバーフロー。受信器がデータを書き込もうとしたときに FIFO カヾ不なら 1 。 CRC か不 CRC か不正な場合に 1 。 態 (FifoOverfIow のエラービットも含む ) を FIFO ことなく CRC を生成して付け加える。しかし、受信器の に書き込めたら、クリアされる。 ハードウェアは、チェックはするカ哨リ除はしないので、ソ フトウェアで削除しなければならない。 ・ BadCRC TxStart は、送信器がフラグを送信するのをやめて、 バケットに含まれる CRC が正しくないときは 1 にな データを FIFO から読み出して送り出し始めたとき 1 に る。バケットの最後の 4 バイトは 32 ビットの CRC なる。 TxStart を設定するには、 TxData. EndOfPkt か で、これは送信器が付け加えている。ビットが反転した csr. TxStart を設定すればよい。送信器のハードウェア り、送信器と受信器のあいだで不正なピットが加わった は、 8 ピットのデータを送り終えるまで、つまり約 5 以 り、抜け落ちたりすると、受信器に届いたときに CRC 内に TxStart をクリアする。 TxStart は 1 だが FIFO は高い確率で不正になる。 が空だった場合は、送信器はたんに TxStart をクリアし 送信データレジスタ てフラグを送り続ける。 バケットを送信するためには、ソフトウェアは送信デー 図 7 に示す送信データレジスタは、 4K x 9 ピット構 タレジスタを介して FIFO に一漣のバイト列を書き込め 成の FIFO の書込み専用のポートである。この FIFO ばよい。バケットの最後のバイトを書き込む ( 9 番目の の TI 回線に接続されている側では、送り出すデータを ピットが 1 になっている ) と、 Txst 矼 t が設定さオ送 FIFO の言ムみポートから読み込んでシフトレジスタに書 信を開始する。送信器がバケットの最後のバイト ( 9 番目 き込む ( 図 10 ) 。送信バケットの最後のバイトを送り出す のビットが 1 ) を FIFO から読み出すと、 4 バイトの CRC ときには、 TxData. EndOfPkt を設疋する。そうすると、 を付け加えて csr. TxIntReq を設定し、 HDLC フラグ FIFO のなかの対応するデータの 9 番目のピットも設定さ を送信する状態になる。 れる。このバイトが FIFO を出てくると、送信器はチェッ クサムを付加して終了を表す HDLC フラグを生成する。 バケットを 1 っ FIFO に書き込んでから送信器からの 割込みを待っという簡単なガ去では、バケットを切れ目な 受信したバケットの最後には状態を表すバイトカ咐き、 く送り出すことはできない。割込み処理をおこなって次の 9 番目のピットか設定されている。送信したバケットの最 後はデータで、このときも 9 番目のビットか設定されて バケットを FIFO へ書き込むあいだ、送信器は待ち状態 いる。送信器のハードウェアはソフトウェアの手を借りる になってしまう。ソフトウェアは、送信器か現在のバケッ 9 15 2 1 0 Abrt 0 Bad Flow CRC 0 86 UNIX MAGAZINE 1993.2

4. UNIX MAGAZINE 1993年2月号

TURBOchanneI T 1 アダブタ 図 5 受信テータレジスタ RX RX xx Fifo Fifo xx Half Empt xx 14 13 12 15 ビット 8 Full Fifo RX 11 TX Fifo Full 10 TX Fifo Half TX Fifo Empt 9 8 End of P kt 7 0 Data or CRC Byte ビット 31 ~ 16 接続されていない。 ビット 7 ~ 0 データか CRCO バケットの最後の 4 バイトは CRCO バケットの終り。ピット 7 ~ 0 カた態を表すなら 1 。データなら 0 。 ビット 15 ~ 9 受信と送信の FIFO の状態を表す。缶衂 / 状態レジスタの説明 ( 図 4 ) を参照のこと。 Pkt d が 0 の場合は、 7 ~ 0 ビットがデータである。そ れ以、外の場合は、これらのビットはその前に受信したデー タの状態を表す。受信伏態を表すバイトの直前の 4 バイト はバケットの CRC で、これらは捨ててしまう。 ソフトウェアは、異常に長いバケットを送り出したり、 受け取らないようにしなけれはならない。バケット長には ードウェアによる制限はない。また、たとえ送信器が 異常に長いバケットを送らないとしても、受信器の初期化 や、デバイスドライバが遅くて処理できなかったり、 TI 回 線上でのエラーなどの原因によって異常に長いバケットが 発生する。 OS か初期化をおこなっているあいだに、デバイスドラ イバはアタブタと同期をとらなければならない。受信器は つねに動いており、ソフトウェアか動いていなくても受信 器はバケットバイトを FIFO に書き込もうとする。デバ イスドライノヾか初めて起動されるときは、受信器の FIFO は溢れていたり、壊れたバケットで不になっていたりす る。これらの壊れたバケットを FIFO から消し、受信器 の状態を正常に復旧しなければならない。 データを受信器から主記慮へ効率的に転送するには、 10 サイクルが必要なアダフ。タへの I/O もムみを少なくしな くてはならない。理想的には、 I / 0 も囚みのデータの移動 に対する割合が 1 よりはんのすこし多く、 2 よりかなり少 ない程度がよい。受信データレジスタのなかの FIFO の 状態ビットは、現在のデータの読込み結果を表している。 RxData. FifoEmpty が真ならば、 7 ~ 0 ピットにはその 則に読み込んだデータが入っている。データレジスタから 再度読み出す前に、 CSR のなかの FIFO 状態ピットを 検査する必要がある。 csr. RxFifoEmpty が真のときは、 受信データレジスタから読み出してはいけない。 受信器の正常な状態は、 7 ~ 0 ピットがすべて 0 のとき UNIX MAGAZINE 1993.2 である。 ・ LossOfSigna1 TI 回線中の信号に、クロックを回復するのに十分なパ ルスカ唸まれていない場合は 1 になる。受け取った 32 個の連続したビットセルのなかにパルスがまったくなけ れば、 LossOfSigna1 が 1 になり、バケットの残りは 破棄される。 ・ LossOfFrame TI 回線中の信号に D4 フレーミング・パターンを含ん でいなかったときは 1 になる。 12 個の連続したフレー ムビットのなかに 2 個までは誤りがあってもかまわな い。受信器が、フレーミング・パターンを受け取り損ね たときに Los sOfFrame は 1 になり、バケットの残り は破棄される。 ・ LossOfData 挿入ビットを削除したあとの 2 つの HDLC フラグの あいだに含まれるビット数が、 8 て割りきれなかったと き 1 になる。余りが 0 でない場合は、データに余分な ビットカ咐いているか、ビットか数け落ちている。 ・ Abort バケットが HDLC のアポートによって終了したと きは 1 になる。通常は、バケットは HDLC フラグ ( 01111110 ) によって始まり、終了する。 TI 回線カ蕗 ちると ( パルスがなくなると ) 受信器は 1 しか受け取 らなくなり、 HDLC アポートとなる。 ・ FifoOverf10w 受信器が FIFO に書き込もうとして FIFO が不のと きは 1 になる。データは失われるが、エラーの発生は 受信状態ビット、で分かる。 Fif00verf10w は、受信状 85

5. UNIX MAGAZINE 1993年2月号

TURBOchannel T 1 アダブタ ・ RxTest 連続的にバケットを受信する。任意の 1 文字を入力す ると終了する。正常なバケットを 10 個受信するたび に ! か表小される。工ラービットか設定されていると受 信器の状態を表示し、失敗したバケットと数える。テス トカ鮗ると、成功したバケットの数と失敗した数を表示 する。変数 DataCheck が真の場合、バケットの内容を 検査する。 ・ Echo 受け取ったバケットを送信する。任意の 1 文字を入力 すると終了する。正常なバケットを 10 個工コーするた びに ! が表示される。送受イに異常が発生するとその 状態か表示される。テストの終りにエコーしたバケット の数か表示される。 ・ Watch 受信したすべてのバケットを表示する。任意の 1 文字 を入力すると終了する。各バケットの内容は、 1 行す つ data=" という文字列の後ろに表示される。バケッ トの内容は、スペースで区切られた 2 文字の 16 進の値 て表示される。バケットの終りには受信器の状態を表示 ・ Reset する。 RxFifoEmpty カイ為になっているかもしれない。この点 ると、リセット後の状態は csr. I Ⅱ tReq が真、 csr. って、 csr. LoopBack カイ為のとき ( ンヾケットか着信す 着信したすべてのバケットを送り出そうとする。したが ラッシュする。受信器はつねに重川しており、 FIFO に 変数に設定する。また、送信器と受信器の FIFO をフ csr. LoopBack と csr. txLc1C1k のイ直を同し名前の csr. TxIntReq と csr. TxUnderFIow をクリアし、 アダブタをアイドル状態にする。 csr. RxlntReq 、 ・ Status には注意が必要だ。 変数 Length に値を設定する。設定できる値は 2 ~ ・ Length 制御 / 状態レジスタの内容を名前と 16 進数で表示する。 UNIX MAGAZINE 1993.2 ・ Random 2 , 048 までである。 Ⅸ 1 旧引 X ウインドウ・システム 日本語マニュアル 全国有名書店または通信販売にて好評発売中 / ・ X11R5 テクニカル・ドキュメント・シリーズ ( 税込 ) 綿密な技術校正を経て編集された X プログラマ向けの決定版。 Xlib ー C 言語 X インタフェース 9 , 800 円 X ツールキット・イントリンシクスー C 言語インタフェース 7 , 600 円 アテナ・ウィジット・セット C 言語インタフェース ライプラリ・リファレンス・マニュアル コマンド・リファレンス・マニュアル 6 , 700 円 7 , 500 円 7 , 500 円 ・技術資料シリーズ XI 1R5 関連資料 ( 税抜 ) 上級 X 工ンジニア必携、資料性の高い技術書のシリーズです。 X11R5 リリース・ノート X11R5 実装と移植 X11R5 プロトコル集 X11R5 規約集 X11R5 工クステンション 2 , 000 円 20 , 000 円 27 , 000 円 20 , 000 円 20 , 000 円 ・両シリーズとも、 X コンソーシアムからリリースされた X11R5 の 英文ドキュメントを、そのままわかりやすい日本語に翻訳した ものて、す。 ・両シリーズとも、 XWindowSystem の基本部分についての 詳細な技術解説書て、す。 Motif や OPEN LOOK を用いた プログラム開発にもお使いいただけます。 ・ X11R5 オンライン・マニュアル ライプラリ・リファレンス・マニュアルと、コマンド・リファレンス・マニ ュアルを UNIX の man コマンドて、参照て、きる形式のファイルに しました。 定価 97 , 000 円 詳しいご案内をお送り致します ( 下記担当までご連絡下さい ) 。 * X および X Window System は、マサチューセッツ工科大学の商標 て、す。 Motif は Open Software Foundation 、 OPEN LOOK は、 Unix lnternation の商標て、す。 UNIX は UNIX システム・ラボ、ラ トリーズが開発しライセンスしているオペレーティングシステムてす。 株式会社創夢 〒 151 東京都渋谷区幡ヶ谷 1 ー 29 ー 9 日星ビル TEL. 03 ( 5453 ) 1251 0 FAX. 03 ( 5453 ) 1252 担当 : 今泉 資料請求 N 。 .00 A 89

6. UNIX MAGAZINE 1993年2月号

TURBOchannel T 1 アダブタ 変数 Random の値をトグル式に切り替える。 真の場合、送信バケットの長さはランダムに決まり、ラ ンダムなデータで埋められる。 ・ DataCheck Random が 変数 LoopBack の値をトグル式に切り替える。 ・ Loop 査される。 Check が真の場合、受信バケットのなかのデータか検 変数 DataCheck の値をトグル式に切り替える。 LOOP Data 90 ピットを設定する代わりに、 csr. TxStart を設定して FIFO に 2 バイト書き込み、最後のデータの 9 番目の て、強制的に HDLC をアポートさせる。具イ勺には、 する。これは、送信器の FIFO をアンダーフローにし テストカ鮗ると、正常な場合と失敗した場合の数を表示 去をテストする。任意の 1 文字を入力すると終了する。 送信器と受信器で HDLC のアポートの発生とその除 ・ AbortTest 合、送信速度か変化するかもしれないからだ。 アで直接実行される。これは、 OS を介して計測した場 テスト時間に上 tf 列して高くなる。テストは、ハードウェ ズトに使用されるクロックは 1 秒単位なので、精度は れる ( 1 バイトのフラグと 4 バイトの CRC)0 このテ とに 5 バイトのオーバーヘッドのバイトが付け加えら か小さい。この速度を計算するときには、バケットご 数は、最大イ云送スピードの 1.536Mbps よりはいくら このコマンドから報告される 1 秒あたりの送信ピット は、 HDLC の挿入ピットを考慮して生成したもので、 定のパターン ( 0 、 1 、 2...255 ) である。このパターン よって制御される。送信バケットのなかのデータは一 了する。送信するバケットの長さは、変数 Length に バケット数を言 t 測する。任意の 1 文字を入力すると終 バケットを次々と送信し、 1 秒間に送信したピット数と ・ Speed の場合、送信器は内蔵の水品発振器を使用する。 変数 C10ck の値をトグル式に切り替える。 C10ck が真 ・ Clock 同期とキャリアの LED が点灯する。 器の入力に入る。 LoopBack が設定されると、フレーム Back が真の場合、送信器からの出力がループして受信 送信器を重川乍させる。 RxStatus . abort が真ならば、 正しく動いている。 ・ ScopeLoop 連続的に制御 / 状態レジスタを読み出す。任意の 1 文 字を入力すると終了する。このコマンドを実行すると、 TURBOchanneI のハードウェアのテンヾッグのための、 安定したオシロスコープの杉カイ乍りだされる。 コマンド吏用方法 TI 回線をさまざまな場所でループさせたり、診断コマ ンドを実行したりすると、回線やアタブタの多くの間題が 鮹夬できる。 ・アダブタの乍テスト アダフ。タの簡潔で完全なテストのためには、 LoopBack を設定して Test コマンドを起重丿ければよい。 これは、モジュラージャックとトランス、およびドライ バとレシーバ回路を除くアダブタ本をテストする。も し、すべての変数かオ川月値のままならば、 Test は、長 さがランダムに変化し、ランダムなデータをもつバケッ トを送信し、戻ってきたバケットのデータを検査する。 テストの開始変は、ソフトウェアがハードウェアと同 期をとろうとするので、いくつか悪い状態カ尋匱告される かもしれない。またテストの終了時に、送信した正常な バケット数と受け取った正常なバケット数が一致しな いこともある。 ・ TI 回線の乍テスト 通常はアダブタ内部でループさせすに、 TI 回線自体を いくつかの方法でループさせる。 TI 回線を外部でルー プさせて、 csr. LoopBack を設定せすに Test を起動 する。 CSU のルーフンヾック・スイッチを入れてテスト すると、アダフ。タ全体とアタフ。タから CSU へのケープ ル、および CSU の大部分についてテストできる。そ のほかに、 CSU には TI 回線を落とす特別なシグナル を送って、遠く離れた CSU とループするためのスイ ッチがある。これを利用すると、アタブタ本と手前の CSU 、 TI 回線および対向する CSU のはとんどについ てテストできる。 ・双方向のテスト 2 つのアタブタと TI 回線全体をテストするには、一方 のアタブタ上で Ech 。コマンドを動かし、もう一方のア UNIX MAGAZINE 1993.2

7. UNIX MAGAZINE 1993年2月号

連載 /NET WORTH—O ないが、 DNS ではラベルにそれを使うことかできる。 ラベルの付け方は・間列的に、 ARPANET のホスト名の 規則と同様である。したがって、ラベルのう頁がアルファ べットて最後がアルファベットか数字ならば、そのあいだ の文字はアルファベット、数字、一 ( ハイフン ) 、一 ( アン ダースコア ) のどれを使ってもよい。 DNS は、ドメイン 名のアルファベットには大文字、小文字のどちらも使える 信になっている。ドメイン名を上交するときに、一部の 文字の大文字と小文字だけか違う場合は、まったく同しも のとして扱われる。 ノードのドメイン名は、そのノードからツリーのルート までのパスのラベルをリストにしたものだ。ドメイン名を 表すラベルは、左から右にもっとも狭いドメイン ( ツリー のルートから一番遠いところ ) から ( ルートにプく ) 順 に広くなるように書かれる。そして、これを . ( ドット ) で区切って並べて書くのが習慣となっている。ドメイン名 を正確に表記するとルートのラベルで終るが、ルートのラ ベルは null なのでドメイン名の表記はドットで終る。 ドメイン名は、次の 2 つのタイプのどちらかである。 ・絶対表記 ( 正確なドメイン名 ) ・相対表記 ( ドメイン名の一緇 ; からラベルを書き始める ) 糸表記をした名前はピリオドで終り、ドメイン名を 1 つに限定する。相対表記をした名前はドットで終ることは なく、相対名のあとにデフォルトのドメイン名が補われ る。たとえば、 cs. UOREGON.EDU/ はドメイン名を完全 に表記したものだが、 cs は UOREGON. EDU. ドメインで 使われる相対的なドメイン名である。ドメイン名の最大長 は 255 バイトになっている。 ところで、ドメインまたはドメイン名という言葉は、ネ ットワークの世界ではいまだにまったく関係のない場面 でもよく使われるので、混乱しないように気をつけてはし い。もっともよく使われるのはドットを用いた表記で、と くにメールアドレスなどで利用されるが、この場合のドメ インまたはドメイン名は DNS とは無関イ系である。 DNS のバケット ローカル・ネットワークでは、名前に関するサーピスは、 すべてローカル・ネットワークのソフトウェアだけで処理 128 図 3 DNS バケット Header Question Answer Authority Additional ネームサーバーに対する問合せ 問合せに対する解答 R R A u t h 0 r i t y を示す R R 付加情報の R R しているかもしれない。たとえは SunOS(Solaris2.0) に は、ローカルに名前サーピスを提供する NIS 十 (Network lnformation Services plus: 旧 (P) がイ寸いてくる。しか し、いったんインターネットに入ればそこでは DNS 以外 に頼れるものはない。インターネットが DNS によって維 持されているので、多くのサイトがローカル・ネットワー クの名前の管理にも DNS を利用しているだろう。 DNS は、アプリケーション・レベルのネットワーク・ サービスである。 DNS プロトコルを利用するすべての通 信は、メッセージ (message) と呼はれる決められたフォ ーマットのバケットを使う。これまでにこのコラムで紹 介したネットワーク・プロトコルにくらべて、 DNS のパ ケットはかなり複雑なものだ。 DNS バケットの酉占では、 TCP(Transmission ControI Protocol) か UDP(User Datagram Protocol) のどちらかが使われる。どちらの トランスポート・プロトコルも、ポート番号 53 は DNS の ために予約されている。 UDP のはうが通イ訓芋のオーバー ヘッドが少ないので、たいていはこちらか利用される。 れを使う場合は、 DNS のバケットの大きさは 512 バイト 以下に制限される。 TCP は、ゾーン全体のデータを送る ために信頼性の高い酉占が必要なときに使われる。 メッセージの基礎となるフォーマットは、 5 つの部分 ( いくつかは空白になっていることもある ) に分かれてい る。図 3 に DNS'NO ケットの構造を示した。 バケットの先頭は、かならす固定長のヘッダセクション ーこには、そのはかのセクションのどれが となっている。 含まれているか、またメッセージカ墹合なのか解答なの かを示すフィールドがある。 DNS バケットのそのほかのセクションは、バケット に含まれる情報に応じてサイズが異なる。これらのセクシ ョンには、標準的な問合せの際の各セクションの彳齬リにち なんだ名前が付けられている。 Question セクションは、 UNIX MAGAZINE 1993.2

8. UNIX MAGAZINE 1993年2月号

TURBOchanneI T 1 アダブタ 図 7 送信データレジスタ 31 unused 9 8 End of Pkt 7 0 Data Byte ビット 31 ~ 9 接続されていない。 バケットの終り。ビット 7 ~ 0 が最後の送信データなら 1 、途中のデータなら 0 。 ビット 7'VO データ。 トを FIFO から読み出しているあいだに、次のバケット を FIFO に書き込まなければならない。 タフフレヾッフアとして FIFO を使用するには、 2 つのパ ケットが 4KB の FIFO にちょうど収まっていなければ ならない。このガ去は、 2KB 以 E のバケットがなければ うまくいく。ソフトウェアは初めのバケットを FIFO に 書き、 csr. TxStart カイ為になるのを待って、次のバケッ トを FIFO に書けばよい。このとき、 FIFO には余分な バケットを 1 個書くだけである。というのは、次のバケッ トが FIFO に収まるとしても、 TxStart は 1 ピットし かなく、カウンタとしては使えないからである。 益己憶から送信器ヘデータを効率的に転送するには、ア ダブタへの I/O 参照を少なくする必要がある。理想的 には、 I/O 書込みのデータの移動に対する割合が 1 よ りはんのすこし多く、 2 よりかなり少ないくらいがよい。 csr . TxFifoFu11 が真のときは、送信データレジスタに 書き込んではならない。ダプノレヾッファ方式を使っている ならは、 FIFO の状態ビットはデータ送信のループのなか て検査する必要はない。 csr. TxUnderf10w は、送信器が FIFO からデータを 読もうとしたが、 FIFO カ啌だったときに設定される。 のとき、送信器は CRC を送らずに、 HDLC のアポート を送信してフラグを送り続ける状態になる。ただし、この ようなことはまずおこらない。全部のバケットが FIFO に揃うまで送信は開始されないからである。しかし、宇宙 線が原因で発生するかもしれない。 FIFO にデータがあるのに送信器が停止してしまった 場合、ソフトウェアで csr. TxStart を設定すれば復旧 できる。したがって、 FIFO にデータを何も書かなくて も、送信器が FIFO からデータを読むようにできる。 れは FIFO が空になるまで繰り返さなけれはならないが、 バケットは送り出されるようになる。 UNIX MAGAZINE 1993.2 オプション ROM 32KB のオプション ROM は、アダフ。タのアドレス空 間の下から 128KB の位置にある。オプション ROM は アタブタお尺し、アドレスのビット 17 を 0 にすれば参 照できる。アドレスのビット 21 ~ 18 は無視されるので、 この ROM を参照する I/O アドレスは多数ある。 ROM のなかでは、アドレスビット 16 ~ 2 カ陏効になる。 I/O の参照は 32 ビットワードによるアクセスなので、 32 ピッ トのうち下位 8 ビットしか読込みができないからである。 そのため、 128KB の空間が 32KB になる。 オプション ROM は、固定フォーマットの構成情報と 可変フォーマットのもの ( スクリプトや夫行形式のコード など ) の 2 つの部分から構成される。システム・モジュー ノレのなかのファームウェアは REX (ROM EXecutive) と呼はスクリプトの解釈実行、バイナリの実行かでき る。 REX で斤オプション ROM を開発しているときは、 いちいち ROM を再プログラミングしなくてもよい。つま り、イメージはオプション・モジュール上の ROM ではな く、 Ethernet 上のサーバーから読み込める。 Modula-2 で書かれた UNIX 用のプログラムで、 PROM 用のコー ドとネットワークから起動するコードが作れる。 REX は、プログラムをメモリのなかの特定のアドレス に読み込み、コールバック・べクタとともにこのプログ ラムに缶卩を渡すことができる。コーノレヾック・べクタに は、さまざまな手続き ( コンソールにメッセージを出すた めの手続きなど ) が入っている。このアダフ。タのオプショ ン ROM には、 Modula-2 で記述したキーポードから操 作できる診断プログラムしか入っていない。このプログラ ムは、キャッシュが有効なカーネル領域に読み込まれる。 これは、キャッシュか有効でない場合にくらべて 4 倍高速 である。 オプション ROM のイメージを、アダフ。タ上の ROM 87

9. UNIX MAGAZINE 1993年2月号

TURBOchannel T 1 アダブタ ム・モジュールがあり、これにいくっかのオプション・ に 5 つの連続した 1 があれば、そのあとに 0 を埋め込む モジュール 7 カ甘妾続されているからである。システム・モ はたは挿入する ) 。受信器は、 5 つの連続した 1 のあとの ジュールは、オプション・モジュールを読み書きできる。 0 を取り出す ( または取り除く ) 。ピット挿入のおかげで、 またオプション・モジュールもシステム・モジュールを データをフラグと間違うことがない。連続した 6 つ以止の 読み書きできるが、オプション・モジュール間 0 凾信する 1 があるときは、バケットの終了を表す。もし、ちょうど ことはできない。 6 つ連続した 1 ならばにれもフラグである ) 、バケット は正常に終了する。 7 つ連続した 1 があれば ( アポート ) 、 システム・モジュールて重力いているプログラムが、オプ バケットが壊れていることを示しているのて捨てなくては ション・モジュールのなかのアドレス空間に実効アドレス のあるロード / ストア命令を実行したとき、 I / O 読込みま ならない。 バケットの終了フラグの直前に置かれたバイトは、 たは I/O 書込みのバス操作が実行される。システム・モ ジュールは、オプション・モジュールを指定する信号をバ CRC (Cyclic Redundancy Checksum) である。送 スに送出する。そして、アドレスを 32 ピットのデータ / 信器は、 CRC を計算してデータの末尾 ( フラグの前 ) に アドレスパス上に載せる。オプション・モジュール側は 付け加える。そして、受信器はそれを本饐する。 CRC が このアドレスをレジスタのなかに保存する。次のサイクル 正しくなければ、バケットは壊れているのて捨てなくては で、システム・モジュールはワード 8 を読み書きする。も ならない。 CRC は、バケットのなかのピットを多項式で し、オプション・モジュール側の準備ができていなけれ 割った余りである。受け取った CRC を含むバケットピッ ば、バス操作を止めておくようにシグナルを出すこともで トについて、受信器か祠じ除算をおこなった場合の余りは 0 でなければならない。 きる。 1 を、、ノヾルス ビット挿入を使い、 0 を、、パルスあり ' DS5000 システムでは、アダブタへの I/O の読 なし " と符号化すれば、 TI 回線のパルス密度の要求を満た 込み / 書出しには、キャッシュもマップもされていない すことかできる。これは逆 HDLC (lnverted HDLC) KSEG19 メモリ領域にあるアドレスを使わなくてはなら と呼ばれる。ー殳に、音声回線ではパルスありを 1 ( 正確 ない (I/O スロット 0 のべースアドレスは 0XBE000000 、 には、 1 はすべてパルスありと呼ばれる ) として符号化す スロット 1 は 0XBE400000 ) 。 DS5000 / 200 では、 1 ″ s る。最悪のケースは、 HDLC のフラグのビットがパルス のあいだに 5 回の I/O 書出しと、 2 回の I/O 。囚みが可 なし、つまり 7 つの連続したパルスなしになってしまうこ 能である。 TI がフル稼動した場合、送信器は I/O 書出し とである。この場合のパルス密度は 12.5 % である。 を、受信器は I / 0 読込みを 5 礬ごとにおこなう。 HDLC について説明し残した部分がかなりあるが、そ オプション・モジュールは、システム・モジュールを介 のほとんどは信頼性のないデータグラムを送る場合には関 した DMA (Direct Memory Access) によって主記憶 係がない。必要なら、 HDLC のアドレスと制御フィール を読み書きできる。オプション・モジュールは、 DMA を ドはソフトウェアによって実現できる。 開始するための言囚みまたは書込みのシグナルを送り、シ ステム・モジュールから ack (acknowledgement) か戻っ TURBOchannel てくるのを待つ。この ack を受け取ると、オプション・モ ジュールはバスにアドレスを載せ、そして書込みを実行す TURBOchanneI は同期式の非対称な入出力用のバス る。または、すこし待ってから、 32 ビットのワードをそ で、 DEC がワークステーション用に開発したものである 5 のあとのサイクルで読み出すことを繰り返す。ピーク時の [ 29 ー 31 ] 。同期というのは、グローバルクロックがあり、 バンド幅は毎秒 100MB (40ns ごとに 32 ピットワード その立ち上がりの工ッジでバスのすべてのシグナルを検出 するからである。また、非文というのは、 1 つのシステ 調主 : おもにプロセッサとメモリ。 6 調主 : TURBOchanneI ポードのこと。 7 調主 : 32 ピットワード。 8 5 訳注 : DECstation 3000 シリーズ、 VAXstation 4000 、 DEC 調主 : MIPS R3000 プロセッサ・アーキテクチャによる。 9 3000 (Alpah AXP) シリーズて株用している。 曇 1 旨 82 UNIX MAGAZINE 1993.2

10. UNIX MAGAZINE 1993年2月号

TURBOchanneI T 1 アダブタ 使いこなすのは、地雷原を歩くようなものである。 ESF ではなく D4 フレーミング ESF はきわめて複雑だが、 D4 は実装がはるかに簡単 であった。ほとんどの TI 回線は D4 フレーミングを使用 している。 ESF ( と一殳には B8ZS も ) を使用している 回線は、どこでも利用できるわけではなく特注品である。 なんらかの理由でどうしても ESF が必要な場合には、 D4 俐用者イと ESF ( 回纒則 ) の変換かて、きる CSU を使 えばよい。 CSU にある EIA232 ターミナルポートを使え は ESF の機能力鉢リ用できる。 シリアル制御用チップは使わず HDLC を実装 多くのメーカーが HDLC を実装した VLSI チップを作 っている。単純なシリアル制御の機能しかないものから、 アドレスと制御フィールドを解釈できる複雑なプロトコル チップまでさまざまなものがある。 TI 回線用のフレー ングをおこなうチップと同様、 HDLC チップは一ヨ殳に構 成がきわめて複雑で、ときには DMA による入出力の機 能を備えているものさえある。ルータのあいたで信頼生の 低いデータグラムを転送するには、 HDLC のもっとも基 本的な機能があればよく、残りの機能はとりたてて必要は DMA ではなくソフトウェアで I / O プリント回路基板を実装する場所がなかったからであ る。 TURBOchannel I/O ノヾスへの DMA インターフェ イスを使えは、カーネル内での CPU とアタフ。タ間のデー タ転送は不要になるが、多くのチッフ。が必喫である。また、 バケットごとに割込みが発生する。 DMA で最大限の効率 を得るためには、 DMA を主記匱中のバッファ管理と協調 して動かさなけれはならない。そのため、バケットごとに 割込みが発生しないようにする必要がある。その実現には さらにチッフ。が必喫だが、単純に場戸励ゞなかった。表面実 装をおこない、ドーターポードを使えば可能だったが、設 計にもっと時間がかかっただろうし、使用ガ去もさらに複 雑になっていただろう。 16 ビット CRC ではなく 32 ビット CRC 16 ビット CRC のエラー検出能力は、バケットの大き さが 4K ピットを超えると低下する。このアタブタの最大 ノヾケット長は 16K ビットである。 Ethernet は、最大ノ 96 ケット長がおよそ 12K ピットで、 HDLC [ 19 ] て推奨さ れている 32 ビット CRC を使用している。このアダブ タは、おそらく Ethernet からバケットを受け取ったり、 Ethernet へ送り出したりする。そのため、同しレベルの 工ラー検出をおこなうように Ethernet と同じ CRC を 使用している。 VLSI の代わりにいくつかの単純な FSM を使って D4 フレーミングと HDLC を実現するのではなく、 TI アダ プタを TI のフレーミングをおこなうチップとそれにつな がった HDLC のチップ、そして DMA を使って、ちょ うど DEC の PMAD-AA Ethernet アタフ。タのように 言することもできた。このように設言 t すれば、 TI また は HDLC の諞田を理解する必要はない。たしかに、プロ グラムは複雑になり、性能か落ちるかもしれないが、確実 に動くはすである。 バク CRC の最後の 5 ピットが 1 の場合、 TxFSM はピ ットの挿入に失敗する。受信器は終了フラグの最初のピッ トを挿入ピットと間違え、状況が悪化する。この間違い は、 HDLC の実装ではよくある。いくっかの標準文書に は、最後の CRC ピットの後ろと終了フラグの前に挿入 ビットが必要であると記されている。このバグを修正する ために、 1 個の状態を TxFSM に加えた。 IP プロトコル は、バケットの約 3 % が受信伏態の悪さゆえに捨てられて いるが、うまく動いている。 受信器のフレーム同期機構は、間違った送信器の HDLC フラグパターンとの同期をとろうとして、それに 全体の 25 % の時間を消費していた。 HDLC フラグ中の 0 のビットがフレームピットの可能性があると判断した場 合、フラグのみカイ云送されているような回線では、その後 ろの 193 ビット目も 0 で、 FrameROM は 40 回、 May- be の判断を下してしまう。その結果、フレームの同期に 失敗する。フレーム同期のアルゴリズムのシミュレーショ ンではランダムなデータを使用したため、この問題は発見 されなかった。 RxFSM の 2 つの線を変更し、このバグ を修正した。 TURBOchannel のクロックはアダブタのなかの FSM のクロックに使用される。 25MHz の TURBO- UNIX MAGAZINE 1993.2