JPH0816419A - メッセージ・データ・エラー検出システム - Google Patents

メッセージ・データ・エラー検出システム

Info

Publication number
JPH0816419A
JPH0816419A JP7065413A JP6541395A JPH0816419A JP H0816419 A JPH0816419 A JP H0816419A JP 7065413 A JP7065413 A JP 7065413A JP 6541395 A JP6541395 A JP 6541395A JP H0816419 A JPH0816419 A JP H0816419A
Authority
JP
Japan
Prior art keywords
data
main processor
adapter
dma
fifo
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP7065413A
Other languages
English (en)
Inventor
Carl Alfred Bender
カール・アルフレッド・ベンダー
Gerard Michael Salem
ジェラード・ミシェル・サレム
Richard Anthony Swetz
リチャード・アンソニー・スウェッツ
Singpui Zee
シングプイ・ズィー
Ben Jesse Nathanson
ベン・ジェシー・ナツァンソン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH0816419A publication Critical patent/JPH0816419A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Detection And Correction Of Errors (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【目的】 メインプロセッサから受信装置へ転送される
メッセージ・データ中のエラーを検出すること。 【構成】 本発明のエラー検出システムは、パリティ・
データを含むメッセージ・データを送信するメインプロ
セッサ(2)と、メッセージ・データを受信する受信装
置と、メインプロセッサと受信装置の間に接続され、メ
インプロセッサからのメッセージ・データを受信装置へ
送るアダプタ(20)と、このアダプタに設けられ、メ
ッセージ・データとともに受信装置へ送るCRCコード
を生成するCRC生成器(51)と、このCRC生成器
に接続され、メインプロセッサから送られてきたメッセ
ージ・データ中のパリティ・データを調べて、もしパリ
ティ・エラーを検出すると、CRCコード中にエラーを
生じるようCRC生成器に強制するパリティ検出器(5
0)とを具備する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、高性能パケット交換機
構とメインプロセッサとの間の通信リンクを提供する装
置に関し、特にそのエラー検出システムに関する。
【0002】
【従来の技術】並列処理システムにおいては、そのシス
テム性能は、プロセッサ性能と通信性能とに依存する。
通信性能は非常に重要なものであるが、それは2つの要
素に分けられる。すなわち、待ち時間とバンド幅であ
る。効率的な通信サブシステムをつくるためには、両方
の要素が最適化されなければならない。
【0003】従来のシステムにおいては、メインプロセ
ッサ(たとえば、IBM RISC System/6000または同様のシ
ステム)と高性能交換機構との間に、たとえばアダプタ
のような装置が使われてきた。しかし、これらのアダプ
タは、比較的遅いバスを介するすべてのデータ転送に、
メインプロセッサの関与を必要とした。したがって、デ
ータ転送が行われているときには、メインプロセッサは
他のタスクを実行することができなかった。これは、メ
インプロセッサの性能を最適化できないという問題があ
る。
【0004】前記の問題を解決するために、アダプタに
コプロセッサ機構を用いている従来のシステムがある
が、ここでの問題は、メインプロセッサとコプロセッサ
機構との間の比較的遅いバスに、余計なトラフィックが
生じることであった。そのため、そのバスで使用可能な
サイクルの一部しかアプリケーション・データの転送に
使えなかった。これは、システムの通信効率を下げる。
【0005】さらに、従来のシステムは比較的遅いバス
を使って、メインプロセッサからコプロセッサへ、およ
びその逆の方向に、通信タスクのためのポーリングを行
っており、このため、メインプロセッサの性能を落と
し、貴重なバンド幅を使い、これにより、バス上でアプ
リケーション・データとコンテンションを起こし、メッ
セージの待ち時間が増え、メッセージのバンド幅が減
り、システム全体の効率を下げることにつながってい
た。これは、通信効率を下げる。
【0006】さらに、従来のアダプタはスレーブモード
でだけ使用でき、アダプタがデータ転送を始めることは
できなかった。すなわち、メインプロセッサがマスター
でなければならず、上述したように、データ転送のすべ
てのプロセスに常に関わらなければならないという問題
があった。
【0007】もう一つの問題は、データの経路指定およ
び完全性のチェックである。メッセージ通過プロトコル
を使用している並列処理システムでは、情報パケットは
並列処理システムの中のプロセッサの間を通過する。こ
れらのデータ・パケットは、通常、経路指定情報を含む
ヘッダを持ち、このヘッダにより、パケットは、ネット
ワークを通って、送信プロセッサから宛先プロセッサに
送られる。システムによっては、経路情報がネットワー
ク中で消耗し(たとえば、パケットがデータ経路を進む
うちにデータ・ビットが落とされ)、メッセージ・パケ
ットがあて先に着いたときには、もはや経路情報がない
ということがある。経路データが壊されれば、ネットワ
ークはエラーを検出することはできず、パケットは間違
ったあて先に向けられ、その結果、データの完全性が失
われる。
【0008】さらに、従来のアダプタは固定された手段
を使って通信タスクを実行するので、アダプタが効率よ
く動作していないとわかっても変更することが困難であ
った。
【0009】
【発明が解決しようとする課題】本発明の目的は、メイ
ンプロセッサが高性能交換機構との通信を待たなくても
よいようにするアダプタを提供し、このアダプタがもっ
ぱらデータ転送のタスクを実行している間、メインプロ
セッサが他のタスクを行えるようにすることである。
【0010】本発明のもう一つの目的は、転送されるデ
ータの完全性を確かなものにするシステムを提供するこ
とである。
【0011】
【課題を解決するための手段】本発明は、改良されたエ
ラー検出システムを提供する。このエラー検出システム
は、パリティー・データを含むメッセージ・データを送
るメインプロセッサと、メッセージ・データを受け取る
メッセージ受け取りデバイスと、メインプロセッサから
メッセージ・データを受け取りメッセージ・データをア
ダプタに送るための、メインプロセッサとメッセージ受
け取りデバイスとの間に結合されたアダプタと、アダプ
タからメッセージ受け取りデバイスに送られたメッセー
ジ・データの終わりにつけて送られ、メッセージ受け取
りデバイスによって受け取られたメッセージ・データの
エラーを検出するためのCRC(周期冗長検査)コード
を発生させるアダプタの中のCRC発生装置と、メイン
プロセッサによってアダプタに送られたパリティー・デ
ータを検出するためにCRC発生装置に結合されたパリ
ティー検出装置とを含む。パリティー検出装置は、パリ
ティー・エラーが検出されたときに、CRC発生装置に
よりCRCコードの中にエラーを発生させる手段を含
み、これにより、パリティー検出装置がパリティー・エ
ラーを検出したときに、アダプタによってメッセージ受
け取りデバイスに送られたメッセージ・データの終わり
のCRCコードがエラーを含むようにする。
【0012】
【実施例】図1および図2に、本発明によるアダプタ1
を示す。アダプタ1は、メインプロセッサ・ノード2
(たとえば、IBM RISC System/6000)と、高性能交換
機構3との間の通信を実行する通信デバイスである。ア
ダプタは、マイクロチャネル・バスのノードにインター
フェースすることができる。(マイクロチャネル・バス
の記述については、IBM "Personal System/2 Hardware
Technical Reference- Architectures", Part No. 84F8
933, Part No. 68X2330、および、"IBM MicroChannel A
rchitecture"を参照されたい。) 図2は、アダプタ20およびその構成要素を詳細に示
す。アダプタ・カードにより、メインプロセッサは高性
能交換機構を通して通信できる。アダプタを介しての通
信の開始はアダプタあるいはプロセッサ・ノードのどち
らからでもできる。アダプタ・カードはマイクロチャネ
ル・インターフェース21を持ち、これにより、メイン
プロセッサのマイクロチャネルがアダプタにインターフ
ェースする。メインプロセッサはメインメモリ記憶装置
2aを持ち、メインメモリ記憶装置はその中にFIFO
記憶装置2bを持つ。
【0013】アダプタは、ストリーミング・マスター、
あるいは、ノンストリーミング・スレーブとして機能す
る。具体的には、アダプタは、80MB/sのピークバ
ンド幅を持つマイクロチャネル・ストリーミング・マス
ターである。アダプタは10MHz転送クロックを使っ
て8または4バイトのストリーミングをサポートする。
アダプタは、ノンストリーミング・マイクロチャネル・
スレーブとしても機能することができる。クロック速度
は高性能交換機構と同期する40MHzが望ましい。
【0014】カードは、マイクロチャネル・インターフ
ェース21の他に、マイクロプロセッサ22(たとえ
ば、64ビットデータ・バスあるいは同様のものを持つ
ものが望ましい)を含む。マイクロプロセッサは通信コ
プロセッサとして使われる。
【0015】エラー修正を施した十分量(たとえば8メ
ガバイト)のDRAM23も、マイクロプロセッサ22
に結合されている。DRAM23はマイクロプロセッサ
のプログラム記憶装置であり、プロトコル・データ構造
を保持する。DRAM23はアダプタとメインプロセッ
サとの間のメッセージ通過エリアとしても使われる。以
下に述べるように、DRAMはコプロセッサおよびマイ
クロチャネルからアドレス可能である。
【0016】少くとも2つのDMAエンジンあるいは同
様のもの(たとえば、左側のDMAエンジン24と右側
のDMAエンジン25)があり、メインプロセッサと多
重チャネルとの間にダイレクト・メモリ・アクセスを提
供する。
【0017】さらに、双方向FIFOバッファ26(た
とえば、少なくとも4kBの容量が望ましい)が、マイ
クロチャネル・インターフェース21に結合されてい
る。双方向FIFOはDMAエンジン24および25に
よって制御され(図2の点線で示すように)、第1およ
び第2のポート26aおよび26b(AポートおよびB
ポート)を含む。さらに、以下に述べるように、FIF
O26は内部レジスタ26c(たとえば、「メールボッ
クス」)を持っており、これにより、FIFOバッファ
をバイパスすることができる。
【0018】メモリと交換機構管理装置(Memory and S
witch Management Unit)(以下MSMUと略す)27と
して知られるスタンダード・セルのASICが、複数の
レジスタを備え、マイクロプロセッサ22、双方向FI
FO、高性能交換機構、および、DRAM23に結合さ
れ、DRAM23のDRAMコントローラとしてはたら
く。MSMU27はマイクロプロセッサのためのDRA
Mコントローラであり、マイクロプロセッサ・バスを高
性能交換機構にインターフェースさせる。MSMUにつ
いては、米国特許出願第08/025,019号「メッセージパケ
ット・トラスミッタ」に記載がある。
【0019】MSMUは、マイクロプロセッサによっ
て、あるいは、メールボックスを介してメインプロセッ
サによってアクセスされる。DMAエンジン24および
25が、2つのアダプタ・バス28および29のそれぞ
れの上にストリーミング・データ転送を提供する。左側
では、左側のDMAエンジン24がマイクロチャネルと
双方向FIFOバッファ26の間の転送を行い、右側で
は、右側のDMAエンジン25が双方向FIFOバッフ
ァとマイクロプロセッサ・バスの間の転送を行う。
【0020】双方向FIFOバッファ26が、比較的速
い160M byte/sのマイクロプロセッサ・バス28とよ
り遅いマイクロチャネル・バス29の結合を解き、両方
のバスが同時に併行して使用できるようにしている。こ
れによって、マイクロプロセッサが計算を実行している
間に、マイクロチャネル上にデータを転送することがで
きる。マイクロチャネルに比べてマイクロプロセッサ・
バスが相対的に高速度であるので、マイクロプロセッサ
の計算は、高性能交換機構への/からのデータ転送とタ
イムマルチプレックスして、行うことができる。メイン
プロセッサはデータの転送を待っている間に、他の処理
を行うことができるので、従来の装置に比べて重要な利
点を提供する。
【0021】上述したように、また以下に述べるよう
に、アダプタはマイクロチャネル・スレーブとしてメイ
ンプロセッサによってアクセスされ、また、マイクロチ
ャネル・マスターとしてメインプロセッサのメモリをア
クセスすることができる。カードがマイクロチャネルの
アドレスを復号するとき、マイクロチャネル・マスター
がサイクル(たとえば、マイクロチャネル・サイクル)
を求めてバスを使えるようにするために、マイクロプロ
セッサはバスからはずされる。その後、コントロールは
マイクロプロセッサに戻される。ハードウェアがアクセ
スのチェックを行い、メインプロセッサ上のユーザ領域
のアプリケーションから、アダプタ上のシステムデータ
を保護する。
【0022】マイクロチャネルを介してメインプロセッ
サにさらにアクセス可能なものには、カード上で構成可
能なレジスタ(たとえば、スタート/ストップ・マイク
ロプロセッサ、リセット・カードは、カードが復号する
マイクロチャネル・アドレスを確立する)がある。
【0023】電源を立ち上げたときに、メインプロセッ
サはメールボックスを介してマイクロプロセッサ・コー
ドをアダプタDRAMにロードし、構成可能なレジスタ
を介してマイクロプロセッサの動作を開始させる。右側
のDMAエンジンまたはメインプロセッサがマイクロプ
ロセッサ・バスの使用を必要とするとき、プロセッサは
自動的にバスからはずされ、アクセスが完了したときに
バスに戻る。このオペレーションは、メインプロセッサ
とマイクロプロセッサに関係なく行われる。
【0024】マイクロプロセッサはマイクロチャネルへ
の割り込みをかけ、また、マイクロチャネルからの割り
込みを受け取ることができる。典型的には、割り込みは
例外報告のために使われる。上述したように、また以下
に述べるように、メインプロセッサとコプロセッサとの
間の通常のメッセージ通過はメモリの中で行われる。
【0025】アダプタは、マイクロチャネル・マスター
として、高性能交換機構からマイクロチャネルに、およ
び、マイクロチャネルから高性能交換機構に、データを
ストリームさせることができる。アダプタは、また、デ
ータをマイクロチャネルからDRAMに、またその逆に
ストリームすることができ、マイクロプロセッサはマイ
クロチャネル・データをロードしストアすることができ
る。コプロセッサは、DMAポートとして知られるアダ
プタ上の或る範囲のアドレスに書き込みをすることによ
ってすべてのDMA転送を開始し、後でポートを読み込
んで結果を見ることができる。
【0026】左側のDMAエンジンはユニークな「ヘッ
ダ」アーキテクチャを介してマイクロプロセッサによっ
て制御される。このヘッダはFIFOキューを通り(し
たがって双方向FIFO26には、いちどきに複数のキ
ューができることがある)、左側のDMAエンジンが前
のヘッダの処理を終えるとバッファから次のヘッダを引
っ張り出してマイクロチャネル・マスター・オペレーシ
ョンを開始する。ヘッダは左側のDMAエンジンのフェ
ッチまたはストア・オペレーションのためである。スト
ア・オペレーションのデータは、FIFOの中のヘッダ
のすぐ後に続く。したがって、制御とデータ情報は同じ
経路を通る。以下に述べるように、左側と右側にかかる
ブリッジが、両方のバスの上でのマスターおよびスレー
ブとしてはたらく。たとえば、上述した左側のDMAエ
ンジンは、マイクロチャネル上のマスターになり、デー
タをマイクロチャネルからフェッチしたり、マイクロチ
ャネルにデータをストアするはたらきをする。
【0027】左側のDMAエンジンは、また、スレーブ
サイクルをとるためにマイクロチャネルを監視する(左
側のDMAエンジンはマイクロチャネルに対してスレー
ブである)。スレーブサイクル(または、プロセッサ入
出力)は、左側のDMAエンジンと右側のDMAエンジ
ンのマスター・オペレーションに割り込むことができ、
それによって、プロセッサ入出力が迅速に且つ原子的
(単位オペレーション)で行える。メインプロセッサ
は、アダプタとの通信をするために進行中のDMAオペ
レーションの完了を待つ必要がなく、プロセッサ入出力
が行われたことが確認できる。スレーブサイクルの復号
においては、左側のDMAエンジンが右側のDMAエン
ジンに割り込み、両方がマイクロプロセッサ・アドレス
空間への原子的プロセッサ入出力が行えるようにする。
左側のDMAエンジンは、プロセッサ入出力が完了する
前に右側のDMAエンジンの肯定応答を待つ。
【0028】さらに、右側のDMAは、いくつかのマイ
クロプロセッサ・スレーブ制御ポートによって制御され
る。たとえば、図2に示すように、「FIFO」ポート
26bが提供されている。マイクロプロセッサがFIF
Oポート26bに対して読み込み/書き込みを行うと
き、ブリッジがマイクロプロセッサ・バス・スレーブの
役目を果たす。マイクロプロセッサ22はいくつかの機
能を実行するためにFIFOポートを使う。これらの機
能には以下が含まれる。すなわち、ストアをするために
ヘッダを左側のDMAエンジンに送り、右側DMAを開
始してストアするべきデータをFIFOに入れる(ブリ
ッジはバス・マスターになり、マイクロプロセッサ・ア
ドレス空間の中のどこにでもまたどこからでもパイプラ
イン・サイクルを実行する)、左側のDMAエンジンに
ヘッダを送ってフェッチを行わせる、右側DMAを開始
して、左側のDMAエンジンがフェッチしたデータをマ
イクロプロセッサ・アドレス空間の中のどこかに移動さ
せる、右側DMAを開始せずにストアをするのために左
側のDMAエンジンにヘッダを送る、さらに、FIFO
にあるいはFIFOから直接データを読み込み/書き込
みする。
【0029】マイクロプロセッサは、DMAポートとよ
ばれるアダプタ・アドレスの範囲の1つに書き込みを行
うことによってDMA転送を開始する。DMAポートの
アドレスの選択と、ポートに書き込まれた最初のワード
(DMAヘッダとして知られる)の内容により、DMA
アクティビティを制御する手段がマイクロプロセッサに
提供される。基本的に、DMAポートのアドレスの選択
により右側のDMAエンジン25が制御され、双方向F
IFO26の中を通るヘッダのデータにより左側のDM
Aエンジン24が制御される。
【0030】ポートアドレスは、次に述べるように構成
される。アドレスの1つのフィールドは、すべてのポー
トアドレスに対して同じである。これらのビットによ
り、右側のDMAエンジン25にDMAポートがアドレ
スされていることが示される。もう1つのフィールドが
マイクロプロセッサ・バス上の転送が始まるアドレスを
指定する。さらに1つのアドレス・ビットが制御ビット
の役をし、そのビットがゼロのとき、右側のDMAエン
ジン25がディスエーブルされる。このビットの目的に
ついては以下に述べる。
【0031】DMAヘッダは、左側と右側のDMAエン
ジン24と25両方に有用な情報(たとえば、転送され
るワード数)と、左側のDMAエンジン24のみに使わ
れる情報を持つ。この情報は、転送が始まるマイクロチ
ャネル・アドレスを含む。
【0032】以下に記すように、マイクロプロセッサは
DMAに書き込みを開始する(たとえば、アダプタ・メ
モリまたは交換機構からメインプロセッサ・メモリ2a
へのデータの転送)を開始する。DMAポートへのマイ
クロプロセッサの書き込みは、明示的ではないが、デー
タのソースがメモリか交換機構かを示す。ヘッダが、双
方向FIFO26に書かれる。その後、右側のDMAエ
ンジン25は、プロセッサをバスからはずし、アダプタ
・メモリまたは高性能交換機構から、データを双方向F
IFO26に転送する。転送が終わった後、バスのコン
トロールはマイクロプロセッサに戻される。その後、D
MAヘッダが双方向FIFO26の頭に届いたときに、
ヘッダは左側のDMAエンジン24によってフェッチさ
れる。左側のDMAエンジン24は双方向FIFO26
からマイクロチャネルへのデータ転送を要求された回数
実行し、ヘッダを捨てる。
【0033】アダプタは、DMA書き込みの別のモード
もサポートする。このモードでは、右側のDMAが開始
される前に、DMAヘッダは双方向FIFOに書かれな
いで捨てられる。このモードは、マイクロプロセッサ
が、マイクロプロセッサ・レジスタからのデータと交換
機構からのデータを含むブロックを、メインメモリ2a
の連続した場所に書くときに使われる。ヘッダのないモ
ードを使い、2つか3つの前記のブロックが、単一の左
側のDMAを使ってマイクロチャネルを通して転送され
る。
【0034】マイクロプロセッサは、DMA読み込み、
すなわち、メインプロセッサ・メモリ2aからアダプタ
・メモリ(たとえば、DRAM23または交換機構)へ
の読み込みを、2段階のプロセスとして行う。
【0035】最初のステップで、マイクロプロセッサ
は、読み込みを指定するDMAヘッダを書く。マイクロ
プロセッサは、右側のDMAをエネーブルするアドレス
のビットが明らかに示されていない、いくつかのDMA
ポートアドレスのどこにでも書くことができる。これら
のアドレスのどこにでも書き込むことの結果は、DMA
ヘッダを、右側のDMAオペレーションを実行しない
で、双方向FIFO26の中に入れることである。その
後で、ヘッダが双方向FIFOの頭に届いたときに、ヘ
ッダは左側のDMAエンジンによってフェッチされる。
左側のDMAエンジン24は、プロセッサ・メモリから
双方向FIFO26へのデータ転送を要求された回数実
行する。
【0036】DMA読み込みオペレーションの2番目の
ステップでは、マイクロプロセッサは再び読み込みを指
定しているDMAヘッダを書く。しかし、今回は、ヘッ
ダは、右側DMAがエネーブルされているポート・アド
レスに書かれる。これにより、右側DMAエンジン25
はプロセッサをバスからはずし、要求されたバイト数を
双方向FIFO26からアダプタ・メモリ(MSMU)
27または交換機構の中に転送する。転送が終わった
後、バスのコントロールはマイクロプロセッサ22に戻
る。ヘッダは捨てられ、双方向FIFOに入れられな
い。
【0037】右側のDMAが必要である場合、マイクロ
プロセッサが右側DMAを開始したならば、開始された
DMA転送が終了するまで、マイクロプロセッサがバス
上で別のアクションが実行できないように右側エンジン
のタイミングを設計する必要がある。
【0038】上述したように、DMAヘッダはマイクロ
プロセッサ22からの命令を左側DMAエンジン24に
運ぶ。この手法は、マイクロプロセッサが、左側のDM
Aエンジン24を直接的にではなくFIFO26を介し
て制御するものであるが、左側のポートが直接制御され
る従来のアプローチに比べていくつかの利点がある。た
とえば、FIFOにデータとともにコマンドを入れるこ
とにより、DMAの制御と転送されるデータとを自動的
に同期させることができる。さらに、双方向FIFOに
より、マイクロプロセッサ22が左側のエンジン24か
らの一連のDMAコマンドをFIFOの容量だけキュー
に入れることができ、左側が完了するのを待つ必要がな
くなる。これにより、プロセッサ・メモリへの/からの
データ転送と併行して通信処理を行うことができる。
【0039】プロセッサ・ノードの中のハードウェア
は、左側のDMAエンジン24によって実行されるマイ
クロチャネルの読み込みおよび書き込みを、プロセッサ
のメインメモリの読み込みおよび書き込みにマッピング
する。
【0040】アダプタ・カードがパワーオン、または、
リセットの後に最初に初期化され、左側のDMAエンジ
ン24がそのFIFOポートを調べてそこに表れる最初
のデータがマイクロチャネル上でデータ転送を実行する
べきDMAヘッダであるかを解読しているときには、左
側のエンジンは最初マイクロチャネルがマスターである
と仮定しなくてはならないが、これは比較的長い仲裁プ
ロセスを必要とする。アダプタは、この仲裁の遅れの影
響を最小にするよういくつかのアクションをとる。まず
第1に、双方向FIFOにヘッダがあることにより、左
側のエンジンは、それがいまマスターでないとき、仲裁
プロセスを開始する。この仲裁プロセスは、ヘッダがF
IFOから読み込まれる前に開始される。したがって、
仲裁プロセスは、FIFOアクセス時間とオーバーラッ
プされる。仲裁による遅れを最小にするための第2の手
法として、左側のエンジンは、データあるいはヘッダが
双方向FIFOに残っている限り、マイクロチャネルの
マスターであることを続ける。双方向FIFOが空であ
るか、そのバスのルールによりマスターであることを辞
めなければならないときに限り、左側のエンジンはマス
ターであることを放棄する。
【0041】双方向FIFOの中のアイテムのどれがヘ
ッダでありどれがデータであるかの曖昧さは決してな
い。書き込みDMAの場合、ヘッダの後にメインプロセ
ッサに書かれるデータが続き、さらに転送の長さを指定
することにより、ヘッダは、ヘッダに続いて双方向FI
FO26に何ワードのデータがあるかを示す。左側のエ
ンジン24は、双方向FIFO26から指定されたデー
タ量を転送した後、双方向FIFOの中の次のアイテム
を新たなヘッダとして解釈する。同様に、読み込みDM
Aをリクエストしているヘッダは、単独でありデータを
伴わない。読み込みDMAのリクエストを処理した後、
左側エンジン24は、FIFOの中の次のアイテムを新
たなヘッダとして解釈する。
【0042】マイクロプロセッサ22は、そのアクティ
ビティをメインプロセッサのアクティビティとコーディ
ネートさせるために、そのDMAのプロセスを監視でき
なければならない。このオペレーションのための手段
は、アダプタにある2つのカウンタ、DMAペンディン
グとDMAリプライによって提供される。
【0043】DMAペンディングは、双方向FIFOの
中にいくつの書き込みリクエストが完了を待ってキュー
されているかを示す。この数は、完全なDMA書き込み
要求(たとえば、ヘッダに続いてデータの量がヘッダに
指定されていること)が双方向FIFOに入ったときに
増分される。この数は、左側のDMAエンジンが書き込
みを完了(たとえば、左側のDMAエンジンがヘッダで
指定されたデータの最後の転送を実行した後)する度に
減分される。
【0044】DMAリプライは、完了した読み込みリク
エストがいくつFIFOにキューされてメモリまたは交
換機構に転送されるのを待っているかを示す。この数
は、マイクロチャネル読み込みデータのリクエストが完
了(たとえば、DMAヘッダでリクエストされたデータ
がすべてFIFOに入れられた後)する度に増分され
る。DMAリプライは決して減分されない。マイクロプ
ロセッサは、最後にこの数をチェックしたときから、ど
れだけDMAリプライ数が増えたかを判断する。マイク
ロプロセッサは、DMAペンディングが減るのを観察す
ることによって、書き込みがマイクロチャネルに転送さ
れていることがわかる。DMAリプライが増えるのを観
察することによって、マイクロプロセッサは、マイクロ
チャネルから読み込みリクエストが戻ってくるのがわか
る。
【0045】このブリッジによって、マイクロプロセッ
サは、右側DMAエンジンおよび左側DMAエンジンで
どのようにDMAが実行されるかを制御できるようにな
るだけでなく、マイクロチャネル・アドレス空間への、
または、同アドレス空間からの、プロセッサ入出力がで
きるようになる。本発明の大きな利点の1つは、アダプ
タ・カード上およびメインプロセッサの中で動作中のソ
フトウェアが、通信タスクを分割し効率よいプロトコル
を作成することができる融通性が持てるようになること
である。
【0046】メインプロセッサは、アダプタおよび交換
機構インターフェースを含むアダプタの構成要素との通
信を、アダプタ上のバス・トランジション機構を介して
開始することができる。バス・トランジションは、或る
範囲のマイクロチャネルのアドレスを、アダプタのマイ
クロプロセッサ・バス上のアドレスのサブセットの中に
マッピングする。このマッピングにより、メインプロセ
ッサは、マイクロプロセッサがアクセスできるアダプタ
・カードのDMAを除くすべての資源にアクセスできる
ようになる。
【0047】図2で簡単に述べたように、マイクロチャ
ネルからマイクロプロセッサ・バスへのデータ経路は、
FIFOチップの中にあるバイパス・レジスタ、すなわ
ち、「メールボックス」を使ってFIFOをバイパスす
る。したがって、これらのアクセスは、待つことなく、
同期して起こる。双方向FIFOにおける制御信号が、
FIFO経路またはメールボックス経路のどちらが使わ
れるかを判断する。メインプロセッサがマイクロプロセ
ッサ・バスにアクセスする必要があるとき、バスがマイ
クロプロセッサ、または、右側のDMAによって使用さ
れている場合がある。このとき、アダプタ・ロジックに
より、読み込みによりデータがメールボックスの中に転
送されるか、書き込みによりデータがメールボックスか
ら転送されるまで、バスからマイクロプロセッサをはず
すか、DMAを中断させる。
【0048】マイクロチャネルのデータバスの幅が4バ
イトであるのにたいし、マイクロプロセッサのデータバ
スの幅が8バイトであるので、書き込みのときマイクロ
チャネルのデータはマイクロプロセッサ・バス上に多重
分割され、読み込みのときマイクロプロセッサ・バスの
データはマイクロチャネルに多重化される。マイクロチ
ャネルがマイクロプロセッサ・バスの上部4バイトか下
部4バイトかを持っているかは、マイクロチャネルのア
ドレスビットの3番目の最下位のビットA<2>によっ
て決められる。A< 2 >が高い場合は、マイクロチャネ
ルは上部4バイトと通信し、A<2>が低い場合は、下
部4バイトと通信する。
【0049】アダプタは、データの多重化または多重分
離を実行するために2つの代替手段を提供する。これら
の代替手段はモード32とモード64と呼ばれ、マイク
ロプロセッサ・バス上で実行されるアクセスの数が違
う。モード32では、1回のマイクロチャネル・アクセ
ス毎に、マイクロプロセッサ・バスで1回アクセスが起
こる。モード64では、マイクロチャネル・アクセスが
2回起こる毎に、マイクロプロセッサ・アクセスが1回
起こる。
【0050】モード64は、データが、1つのバスから
別のバスに送り出される前にメールボックス・レジスタ
の中に累積されていることを示す。モード32は、アダ
プタ・メモリへのアクセス、および、カードの上のほと
んどのレジスタへのアクセスに便利である。モード32
は、交換機構のインターフェース・ロジックの内部の8
バイト幅のFIFOへの読み込みと書き込みには動作し
ないので、これらのアクセスには、モード64が使われ
なければならない。モード64では、アダプタへのメイ
ンプロセッサのアクセスは、最初にアクセスする8バイ
トのマイクロチャネルのアドレスに2番めのアドレスを
つなげたペアとして実行することが必要である。モード
32とモード64の間の選択は、メインプロセッサがカ
ードのために使うマイクロチャネル・アドレスに基づい
て、メインプロセッサによって動的に行われる。
【0051】メインプロセッサ2は、カード上の、マイ
クロプロセッサ22がアクセスできないコンフィギュレ
ーション・レジスタにもアクセスできる。これらのレジ
スタは、アダプタを初期化し、アダプタにマイクロチャ
ネルのアドレス可能性を与え、マイクロチャネルに関連
した他の機構要素(たとえば、パリティー、マイクロチ
ャネル・ストリーミング)を選択的にエネーブルあるい
はディスエーブルするために使われる。
【0052】メインプロセッサのメインメモリの中のF
IFOの管理について述べる。図2および図4ないし図
7に示すように、メインシステム(たとえば、RISC Sys
tem/6000プロセッサ)の記憶装置にストアされているパ
ケットFIFOの組(セット)2b1と2b2に対する
DMAオペレーションを使って、交換パケットがアダプ
タに、および、アダプタから移動する。FIFOの1組
はカーネルのためにあり、もう1組はユーザのためにあ
る。
【0053】各パケットFIFOセット中の1つのFI
FOは出ていくパケットのためにあり、各パケットFI
FOセットの中の2番めのFIFOは入ってくるパケッ
トのためである。これらの2つのFIFOの管理は、メ
インプロセッサ2とマイクロプロセッサ22(以下では
コプロセッサとよぶ場合がある)との間に新たな方法で
分散されており、これにより、多大な利点が得られる。
【0054】概略説明すると、出ていく側のメインプロ
セッサは出ていく側のFIFOにパケットを移動し、コ
プロセッサにはそのメモリにメッセージを入れることに
よって伝え、コプロセッサはそのハードウェアを使って
パケットをMSMUに移動する。
【0055】メインプロセッサ2に入ってくるパケット
を見て、コプロセッサ22はパケットが入ってきたこと
を認識し、パケットのヘッダを調べ、パケットをどこに
移動するかを決め、そのハードウェアを使ってパケット
を移動する。コプロセッサのメモリ23には、送出しF
IFOと同じ制御情報(たとえば、パケットの長さ)が
入っている。
【0056】上述したように、通信コプロセッサとメイ
ンプロセッサとは、相対的に遅いバスで切り離されてい
る。各プロセッサはそれ自身の速いローカルバスの上に
それ自身のローカルメモリーを持っているが、前記の遅
いバスを通して、他のプロセッサのメモリにアクセスす
ることもできる。遅いバスの上の使用可能なサイクルの
ほとんどすべてをアプリケーション・データの移動に使
用できるように、その遅いバスに不必要なトラフィック
が通ることを避けるために、本発明は、遅いバスを通る
ポーリング(これはメインプロセッサの性能を下げ、貴
重なバンド幅を使用する)を避けるFIFO管理方式を
使い、それによって、システム全体の効率を上げる。
【0057】本発明では、メインプロセッサのFIFO
のそれぞれが、各FIFOに関連するヘッドとテイルの
ポインタを持っている。データがFIFOに入るときテ
イル・ポインタが増分され、データがFIFOから取り
出されるときヘッド・ポインタが増分される。本発明の
設計では、両方のFIFOとも、アプリケーションがも
っとも容易に使用できるメインプロセッサのメモリの中
にストアされている。しかし、本発明では、ヘッドおよ
びテイルのポインタの両方を、従来の方式のようにメイ
ンプロセッサのメモリの中にストアするのではなく、ヘ
ッド・ポインタとテイル・ポインタをメインプロセッサ
のメモリとコプロセッサのメモリに分散し、この制御情
報を遅いバスを通してポーリングするのを避ける。
【0058】一般には、出て行くFIFOの場合、テイ
ル・ポインタはコプロセッサのローカルメモリにストア
され、ヘッド・ポインタはメインメモリのローカルメモ
リにストアされる。また、メインプロセッサはテイル・
ポインタの保存コピーを持ち(テイル・ポインタをアッ
プデートするのはメインプロセッサだけであるので)、
コプロセッサはヘッド・ポインタの保存コピーを持つ
(ヘッド・ポインタをアップデートするのはコプロセッ
サだけである)。
【0059】FIFOキューは、入る場所が何カ所かあ
る円形のキューにたとえることができ、キューの中のデ
ータの量によって、FIFOのヘッドが1つの場所を指
し、テイルが別の場所を指す。情報がキュー(すなわち
FIFO)に入ればテイルが増分され、情報がキューか
ら取り出されるときヘッドが増分される。ヘッドおよび
テイルに関するすべての演算はFIFOのサイズのモジ
ュラスである。
【0060】メインプロセッサがパケットを送る用意が
できているとき(たとえば、パケットがパケットのフレ
ームのかたちを整えてFIFOに入ること)、メインプ
ロセッサ2によるデータ送り出しオペレーションのため
に、メインプロセッサは、先ず、そのローカルメモリの
中のヘッド・ポインタをポーリングし、それを保存され
ているテイル・ポインタの値と比較し、出て行くFIF
Oにスペースがあるかどうかを判断する(たとえば、テ
イル・ポインタ(+2)がヘッド・ポインタに等しくな
いかどうかをチェックする)。出て行くFIFOにスペ
ースがある場合、メインプロセッサ2はパケットをFI
FOに書き込み、アップデートされたテイル・ポインタ
をコプロセッサのローカルメモリに書く。コプロセッサ
は、ヘッド・ポインタの保存された値を持っている。コ
プロセッサは、保存しているヘッド・ポインタの値と、
そのローカルメモリにストアされているテイル・ポイン
タの値とを比較することにより、出て行くパケットをポ
ーリングする。入ってくるパケットに対しては、テイル
・ポインタがメインプロセッサのローカルメモリにスト
アされ、ヘッド・ポインタがコプロセッサのローカルメ
モリにストアされ、入ってくるパケットを受け取るオペ
レーションは、送り出すオペレーションと対称的であ
る。
【0061】従来の標準的な具体化では、ヘッド・ポイ
ンタとテイル・ポインタの両方ともメインプロセッサの
ローカルメモリにストアされるので、コプロセッサによ
るポーリングは遅いバスを通って行われ、それにより、
バスの上でアプリケーション・データとコンテンション
を起こし、ポーリング遅延の増加によるメッセージ待ち
時間が増える。そのような問題は本発明の構造と方法に
よって避けることができる。
【0062】FIFO送り出しオペレーションについて
述べる。コプロセッサは、「送出しヘッド」の保存され
たコピーを持ち、メインプロセッサのメモリの中で「送
出しヘッド」をアップデートするときに、保存されたコ
ピーを定期的にアップデートする。さらに、各パケット
には、長さとともに、データの前に、ロジカル・ノード
番号およびルート番号を含むダブルワードがあり、それ
により、双方向FIFO26の中でコプロセッサDMA
がパケットを転送するとき、最初の項目が、コプロセッ
サが読み出してレジスタに入れるノード番号とルート番
号であるようにしている。このデータを使って、コプロ
セッサDMAがテーブルをルックアップしてキー、ウィ
ンドウ(これはカーネルとユーザに関連し、これによ
り、アダプタはどのFIFOにデータを入れるかがわか
る)、および、このパケットのあて先の実の(物理的
な)ノード番号を見つける。
【0063】キーはあて先に送られ、データが正しいソ
ースから来たことが確かめられる。ロジカル・ノード番
号は実ノード番号に翻訳され、次に、ルートを決定する
第2の翻訳が行われる。
【0064】したがって、ユーザがどんなタスク・ナン
バーを指定しても、ノードとルート情報により、データ
が正しいあて先(ノード)に届くことが確かめられ、間
違ったタスク番号が指定された場合には、無効というマ
ークが付けられる。したがって、ユーザは公認されたア
ドレスをアクセスすることができるだけであり、ノード
は偽のデータ受け取ることからプロテクトされる。
【0065】メインプロセッサによる「送り出しデー
タ」オペレーションのためには、メインプロセッサ2
は、先ず保存コピーの「送り出しテイル」(+2)がそ
れ自身のメモリにストアされ、コプロセッサによってア
ップデートされている「送り出しヘッド」に等しくない
(たとえば、FIFOがいっぱいでない)ことをチェッ
クして判断する。もし等しければ、ポーリングが内部的
(ローカル)に起こり(たとえば、メインプロセッサが
「送り出しヘッド」を読んで、それを保存されている
「送り出しテイル」と比較する。メインプロセッサは外
に出て遅いマイクロチャネルを通す必要がないので、こ
のポーリングはローカルに行われる)、「送り出しテイ
ル」が「送り出しヘッド」に等しくなくなる、したがっ
てFIFOがいっぱいでなくなるまで続けられる。コプ
ロセッサがFIFOからデータを取り出すと、メインプ
ロセッサは直ちに(たとえば、1つのトランズアクショ
ン以内に)FIFOには空きがあるとわかり、したがっ
て、ポーリングは非常に速く行われ、DMAとの干渉が
ない。
【0066】その後、メインプロセッサは、メインプロ
セッサのメインメモリのFIFOの中に(FIFOの
「送り出しテイル」の位置に)データを移動する。さら
に、ロジカル・ノードとルートがFIFOスロットの中
に移動される。その後、メインプロセッサは、コプロセ
ッサーのメモリ23の中で長さをアップデートし、「送
り出しテイル」(メインプロセッサの保存コピーとコプ
ロセッサのメモリの中のものと両方)をアップデートす
る。
【0067】コプロセッサが「送り出し」オペレーショ
ンを行うためには、コプロセッサ22はそれ自身のメモ
リの中の「送り出しテイル」をチェックするためのポー
リングを始め、それにより、受け入れるFIFOが空で
ないかを判断する。したがって、コプロセッサは、保存
された「送り出しテイル」(+1)が「送り出しヘッ
ド」に等しいかを判断する。等しい場合には、ポーリン
グは「送り出しテイル」(+1)が「送り出しヘッド」
に等しくなくなるまで続けられる。コプロセッサはそれ
自身の「送り出しヘッド」(および、DMAオペレーシ
ョンによってメインプロセッサ2の「送り出しヘッド」
も)アップデートする。これにより、メインプロセッサ
が「送り出しヘッド」をアップデートする必要がないの
で、このプロセスははるかに効率の良いものになる。
【0068】その後(送り出すべきデータがあると判断
されたとき)、コプロセッサ22はDMAの中のデータ
の長さ(データの長さはメインプロセッサによってDR
AMに入れられている)を読み、DMA読み込みリクエ
スト(DMAヘッダ)をアダプタ上のDMAポート26
bに書き、左側のDMAエンジン24にメインプロセッ
サにある出ていくFIFOからパケットをフェッチし、
そのパケットを双方向FIFOに移動するように指示す
るDMA読み取りリクエストを開始する。次に、コプロ
セッサは、データが双方向FIFOに着くのを待つ。デ
ータが着き次第、コプロセッサは双方向FIFOからロ
ジカル・ノードを読み、翻訳(たとえば、ノード、キ
ー、ウィンドウ)を実行し、MSMUヘッダ(ノード、
キー、ウィンドウ、および、長さ)を書く。コプロセッ
サは右側のDMAを開始させ、データを双方向FIFO
26からMSMU27に移動させる。その後、コプロセ
ッサは「送り出しヘッド」の自身の保存コピーを増分
し、メインプロセッサのメモリの中の「送り出しヘッ
ド」を移動しアップデート(DMA経由)する。
【0069】本発明の利点の1つは、実施例のアダプタ
を用いることにより、システムがポーリングを行ってい
る間、すべてのポーリングが、たとえばメインプロセッ
サあるいはコプロセッサによってローカルに行われるの
で、バスが影響を受けず、且つ、データの転送に主に使
用されるバスを通さなくてもよいということである。し
たがって、本発明により、データ転送が最適化される。
さらに、「送り出しヘッド」と「送り出しテイル」はメ
インメモリの中の位置を指すものであるが、コプロセッ
サはメインメモリに戻ってデータがどこにあるかを探す
必要がない。
【0070】受け取りを行うFIFOオペレーションに
ついて述べる。受け取るFIFOオペレーションには、
「受け取りテイル」と「受け取りヘッド」が使われる。
【0071】コプロセッサが受け取るオペレーションを
実行するには、先ず、パケットがMSMUに着き、コプ
ロセッサの上で受け取るオペレーションが始まる。コプ
ロセッサの保存された「受け取りテイル」がコプロセッ
サのメモリ23の中の「受け取りヘッド」と比較される
(たとえば、受け取りFIFOのチェックが行われ
る)。保存された「受け取りテイル」(+2)が「受け
取りヘッド」に等しいときにポーリングがローカルに行
われ、双方が一致しなくなるまでポーリングが続けられ
る。その後、コプロセッサ22はパケット・ヘッダを読
み、パケット・ヘッダはウィンドウ番号とキー(および
キーの区画の識別)についてチェックされ、タスクのソ
ースが正しく、コプロセッサがノードと交信できるかが
判断される。キー(およびキーの区画の識別)、入って
きたパケットのウィンドウ番号、および、あて先のウィ
ンドウ番号との間に一致がない場合には、パケットは捨
てられ、正しくないパケットが受領されたことが記録さ
れる。ウィンドウは、メインプロセッサのメインメモリ
の中の2組のパケットFIFOの間を区別するために使
われる。
【0072】一致がある場合には、コプロセッサは、長
さ(コプロセッサの中)とデータに対するDMA書き込
みリクエストを始めることによって、パケットをメイン
プロセッサまで移動し、右側DMAエンジンによるMS
MU27から双方向FIFO26へのデータ転送を始め
る(このオペレーションは、先に簡単に述べた別の方
法、すなわち、長さとデータの移動をコプロセッサが部
分的に行い、残りをDMAエンジンが行う方法によって
も効率よく行うことができる)。これによって、マイク
ロチャネルを通るバスの使用が最適化できる。
【0073】また、たとえば、パケットが双方向FIF
O26に着くのと同時に併行して、受け取りFIFO
(メインプロセッサのメモリの中の)をチェックして、
それがいっぱいでないことが確かめられる。したがっ
て、保存された「受け取りテイル」(+2)が「受け取
りヘッド」と比較されて双方が等しくないことが確かめ
られる。受け取りFIFOがいっぱいである場合には、
コプロセッサでローカルにポーリングが始まる。ポーリ
ングが行われている間、メインプロセッサはアダプタを
通して新たな「受け取りヘッド」を送り、コプロセッサ
22の中の「受け取りヘッド」をアップデートすること
ができる。
【0074】データが受け取りFIFOに送られた後
で、コプロセッサのキャッシュの中の「受け取りテイ
ル」がアップデート/増分され、DMAを介して「受け
取りテイル」がメインプロセッサ2まで転送される。
「ヘッド」と「テイル」はメインプロセッサのメモリ2
aの中のFIFOを指し、コプロセッサは、どのパケッ
トがメインプロセッサ・メモリに入っているかを制御し
ている。メインプロセッサは、どのパケットがメインプ
ロセッサ・メモリ(FIFO)から取り出されたかを制
御する。メインプロセッサは、FIFOがパケット全体
を受け取り、パケットを読んでもよい状態にあると伝え
られるまで、読もうとはしない。したがって、パケット
があるかどうかを知るために、マイクロチャネルを通し
てポーリングをする必要はなく、ローカル・ポーリング
を行いローカルメモリ(たとえば、コプロセッサのメモ
リ、または、メインメモリ)を見るだけでよい。
【0075】前記の送り出しおよび受け取りのオペレー
ションは、理解を簡単にするために、連続する順次的な
オペレーションとして記述したが、双方向FIFOを使
用する送り出しと受け取りオペレーションは同時併行し
て行うことができ、前記のオペレーションには、自由裁
量的なインターリーブがある。すなわち、本発明の構造
により、送り出しオペレーションの中途で別のパケット
を受け取ることが可能になり、その逆もまた可能であ
る。
【0076】メインプロセッサによる受け取りオペレー
ションについて述べる。メインプロセッサが受け取りオ
ペレーションを実行するには、メインプロセッサはその
「受け取りテイル」を保存された(たとえば、メインプ
ロセッサのキャッシュにストアされている)「受け取り
ヘッド」と比較する。「受け取りテイル」(+1)が保
存された「受け取りヘッド」に等しくない場合には、プ
ロセスは以下に記すように続く。そうでない場合には、
「受け取りテイル」(+1)が保存された「受け取りヘ
ッド」に等しくなくなるまでローカル・ポーリングが実
行される。その後、メインプロセッサはデータの長さ
(長さデータはコプロセッサのメモリにストアされてい
る)を読み、データはFIFOから除去される。メイン
プロセッサは、そのキャッシュの中およびコプロセッサ
のメモリの中にある「受け取りヘッド」を増分/アップ
デートする。
【0077】本発明によって可能になる上述のオペレー
ションの主な利点は、メインプロセッサもコプロセッサ
22も、遅いバスを通してポーリングを行う必要がない
ことである。そのかわりに、それぞれのメモリの中での
ローカル・ポーリングが行われる。これにより、より効
率の良いシステムが得られるという利点がある。
【0078】エラー検出について述べる。データ・パリ
ティーとCRCコード生成とをユニークな方法で組み合
わせることにより、高性能交換機構を通してマイクロチ
ャネルからの信頼性の高いデータ経路が提供される。
【0079】図8に示すように、アダプタによりマイク
ロチャネル・アドレスとデータにパリティー生成とチェ
ックを行う機構50を含む、パリティー生成/チェック
構造を提供する。パリティーは以下に記すように生成さ
れチェックされる。単一のビットにより、スレーブとマ
スターの、アドレスとデータのすべてのパリティー・チ
ェックのエネーブル/ディスエーブルを行う。パリティ
ーはマイクロプロセッサ22、あるいは、MSMU27
によってサポートされていない。これらのチップがデー
タの源になるとき、パリティーは、それらのチップのデ
ータ・バス上で生成され、データのあて先でマイクロチ
ャネル・パリティー・チェック回路51によってチェッ
クされる。マイクロチャネルがパリティーを生成すると
きは、パリティーはマイクロプロセッサのデータ・バス
の直前でチェックされる。双方向FIFO26はパリテ
ィー・チェックされたデータ経路の部分をなす。メイン
プロセッサのマイクロチャネル・アーキテクチャで指定
されているように、アドレス・パリティーはスレーブ・
アクセスのための復号時にチェックされ、パリティーが
正しくない場合にはカードはマイクロチャネルにリスポ
ンスを返さない(CD SFDBKはインアクティブの
ままである)。また、マイクロプロセッサ・バスの上で
サイクルは始まらない。
【0080】マイクロチャネルの仕様書で規定されてい
るように、マイクロチャネルのスレーブの書き込みで
は、エネーブルがアクティブになっているバイトだけが
チェックされる。マスター・アクセスに関しては、マイ
クロチャネルのアドレス・パリティーは、データ・パリ
ティーと同様に、マイクロプロセッサのバス上で生成さ
れ、あて先で、マイクロチャネル上のメインプロセッサ
のパリティー回路よってチェックされる。マイクロチャ
ネル・バス上のアドレス(たとえば、右側のDMAエン
ジン25によって生成されたアドレス)は、マイクロプ
ロセッサ22あるいはMSMU27によってチェックさ
れない。
【0081】アダプタはMSMUメッセージ・パケット
のそれぞれにCRCコードを生成しチェックを行う。こ
れは、パケット・ヘッダ、ルートワード(ノード標識)
およびメッセージ本体をカバーすることが望ましい。
【0082】アダプタのCRC(たとえば、エラー検出
アルゴリズム)は、FIFO Bのデータ・バス上のデ
ータを監視し、CRCコード(16ビットが望ましい)
を生成する。アダプタ・カードは、マイクロチャネルか
らFIFO Bバスを含むまでのデータに対してパリテ
ィー・チェックを行い、FIFO Bバスから出て高性
能交換機構を通るデータに対してCRCチェックを行
う。これにより、マイクロチャネルから高性能交換機
構、および、その逆の方向の両方向のデータに対して完
全なエラー検出が行われる。
【0083】CRCロジック51は2つのアクセス可能
なレジスタを持つ。これはたとえば、アダプタの初期化
のときにコードによってセットされるノード標識レジス
タと、パケット・ヘッダが送られるか受け取られるかす
る前の時点でプリセットされるCRCチェック・レジス
タである。1つの具体例として、エラー検出は以下のよ
うに行われるのが望ましい。
【0084】MSMUのパケット送り出しでは、マイク
ロプロセッサ22は4バイトのパケット・ヘッダをMS
MUヘッダ・レジスタに書き、さらに、あて先ノード標
識をダブルワードの上位部に入れる。このノード標識は
MSMU27によって無視されるがCRCチェック生成
で使われる。
【0085】次に、マイクロプロセッサ22はルートを
MSMUデータ・レジスタに書く。このダブルワードは
CRCロジック51によって無視される。マイクロプロ
セッサはメッセージ・パケット本体のMSMUデータ・
レジスタへの書き込みを開始する。メッセージ本体はマ
イクロプロセッサあるいはDMAによって直接書くか、
あるいは、マイクロプロセッサとDMAの双方を組み合
わせて書くことができる。CRCは、CRCチェック・
レジスタに転送されたすべてのメッセージ・データをコ
ード化する。次に、マイクロプロセッサはCRCチェッ
ク・レジスタを読み、チェックビットをMSMUのトレ
イラー・レジスタのバイト0とバイト1に書く。この2
つのバイトはパケットの最後のバイトでなければならな
い。
【0086】MSMUのパケットの受け取りでは、マイ
クロプロセッサは4バイトのパケット・ヘッダをMSM
Uヘッダ・レジスタから読む。CRCロジックは、その
ノード標識レジスタをCRCチェックのためのダブルワ
ードの上位部分に挿入する。受け取るカードのノード標
識レジスタが、パケットを送るとき使用したあて先ノー
ド標識と一致しない場合、CRCエラーが起こる。これ
は、たとえば、ルートのビットが落ち、パケットが間違
ったノードに着いたときに起こる。
【0087】次に、マイクロプロセッサ22は、メッセ
ージ・パケット本体をMSMUデータ・レジスタから読
み込むことを開始する。メッセージ本体はマイクロプロ
セッサ、あるいは、DMAによって直接読まれるか、あ
るいは、マイクロプロセッサとDMAの双方を組み合わ
せて読むことができる。CRC51は転送されたすべて
のメッセージ・データをチェックする。
【0088】次に、マイクロプロセッサは、MSMUト
レイラー・レジスタからトレイラーを読む。マイクロプ
ロセッサはCRCチェック・レジスタを読んで、受け取
られたものにエラーがあるかチェックする。エラーが検
出された場合は、パケットは捨てるべきである。
【0089】アダプタ・カードのパリティー・エラーに
関しては、アダプタがパリティー・エラーを検出する
と、次のCRCチェック・レジスタを読むまでCRCレ
ジスタは或る固定値を持たされる。これにより、送り出
しが進行しトレイラーの読み込みの間に送り出し側のノ
ードがパリティー・エラーを検出したときに、受け取る
側のノードにCRCエラーが起こることが保証される。
受け取るノードがCRCエラーを検出し、トレイラーC
RCが送り出しの際にパリティー・エラーが検出された
ときに送られた固定値であった場合には、送り出す側の
ノードがパリティー・エラーを持っていたと考えられ
る。この場合を除いては、通常、CRCコードがトレイ
ラーCRCを見なくてはならない理由がない。
【0090】勿論、本発明の原理の範囲で他の方法を使
っても同じ結果を得ることができるので、前記の実施例
は1つの例にすぎない。
【0091】さらに、図9に、クロックが失われたこと
を検出し、それにより、プロセッサ・ノードのハングア
ップを防ぐ機構を提供する装置を示す。
【0092】一般的に、アダプタ(および、本システム
および高性能交換機構で使用されている複数のアダプタ
のすべて)のクロックは、交換機構を通ってメインプロ
セッサに行くデータの同期をとるために単一のソース・
クロックによって提供されている。ソース・クロックが
失われた場合、カードがマイクロチャネルをハングアッ
プさせ、その結果、ノードの全体がハングアップする。
図9に示すように、本発明によるクロック検出回路は、
1対のカウンタ61と62を動かす発振器をつくるロジ
ックを用いる。これらのカウンタは、ソース・クロック
が生成するあらかじめ定められた波形(たとえば、矩
形)を持ち、波形の高い状態と低い状態によって交互に
リセットされる。クロックが失われると、少なくとも1
つのカウンタが最終カウントに達し、それにより、カー
ドの残余の部分がリセット状態になる。これにより、マ
イクロチャネルのバスのエラーが起こり、これをソフト
ウェアが検出し、次に、プログラマブル・オプション・
セレクト(Programmable Option Select(以下POSと
略す))を使ってカードを調べに行き、クロックが失わ
れていることがわかる。
【0093】本発明のクロック検出回路では、クロック
は外部ソースからデータとともに入ってくる。クロック
が割り込まれることもあり、その場合は、メインプロセ
ッサのハングアップが制限なく続く可能性がある。いく
つかの解決シナリオが考えられるが、従来のシステムで
はすべて難問であった。このような状況は防がねばなら
ず、本発明のクロック回路により、その種の状況を未然
に防ぐことができるようになる。
【0094】アダプタがスレーブとしてはたらくマイク
ロチャネル転送については上で述べた。スレーブ・モー
ドのとき、すなわち、アダプタがメインプロセッサに対
してスレーブとしてはたらくときは、メインプロセッサ
が、アドレスをマイクロチャネル・バスに入れることに
よって読み込みあるいは書き込みのオペレーションを開
始する。前記のマイクロチャネルの仕様書で規定された
一連のハンドシェイク信号の交換が行われてデータ転送
が実行される。クロックがない場合、転送は始まっても
決して終了せず、それにより、マイクロチャネルがハン
グアップし、したがって、メインプロセッサは(適切な
ハンドシェイクが起こらず)いつまでも終了しない。
【0095】本発明では、アダプタにクロックがない場
合、アダプタはリセットされ(したがって、サイクルが
スタートすることがない)、メインプロセッサはハング
アップしない。
【0096】同様に、オペレーションがトランズアクシ
ョン・サイクルのまんなかにあり、そのときクロックが
故障した場合、カードはリセットし、トランズアクショ
ンは直ちに終了させられる。メインプロセッサはこのよ
うな状態をエラーであると認識し、エラーをログに記録
し回復処理に進む(たとえば、POSレジスタを見て、
クロックが失われていることがわかる)。
【0097】メインプロセッサは、スレーブとマスター
との間で行われるすべてのマイクロチャネルとのオペレ
ーションを指示するハンドシェイク信号を通して、トラ
ンズアクション・サイクルが終了するのがわかる。これ
らの信号は転送のためのクロックに依存せず、カードが
リセットするときには、それぞれのデフォールト状態に
駆動される。
【0098】上述したように、本発明の特徴の1つは、
アダプタがメインプロセッサに対してマスターとしても
スレーブとしても動作できることである。アダプタがマ
スターとして動作するとき、クロックが故障すると、ア
ダプタがリセットするときにハンドシェイク信号をそれ
ぞれのデフォールト状態(たとえば、バスがハングアッ
プしない状態)に駆動することによってサイクルが直ち
に終了する。メインプロセッサは、サイクルが異常状態
で終了したことを認識し、エラーを記録し、回復処理に
進む。
【0099】図9に、それぞれが、外部クロックに依存
せずローカル・クロックによってクロックされ、外部ク
ロックによってリセットされる第1のカウンタと第2の
カウンタを含むクロック回路を示す。第1および第2の
カウンタのそれぞれの終末カウント信号がORゲート6
3に結合されている。第1および第2のカウンタ61と
62の終末カウント値は、それぞれ、外部クロック・ソ
ースよりも大きい周波数にセットされる。第1カウンタ
61は低いリセットを持ち、第2カウンタ62は高いリ
セットを持つ。外部クロックはカードのリセットに結合
されている。外部クロックが「高く」機能不全を起こし
た場合は第1カウンタが終末カウントに達し、外部クロ
ックが「低く」機能不全を起こした場合は第2カウンタ
が終末カウントに達する。この機構を備えているのは、
外部クロックがどのように機能不全を起こすかがわから
ず、2つのカウンタ61と62があることによって、両
方の状態に対応できるようにしている。同じ理由で、外
部クロックが正常に動作している場合は、カウンタが終
末カウント値にカウントを上げるよりも速く外部クロッ
クが両カウンタをリセットする。両カウンタが終末カウ
ント値に達する場合は、外部クロックが非常に遅く動作
しているか、あるいは、完全に止まっている場合であ
る。
【0100】ORゲート63の出力側はリセット・コン
ディションをアダプタに送るためのリセット伝達手段6
4に結合され、これにより、クロックが故障してもマイ
クロチャネルがハングアップ状態に放置されないように
し、さらにORゲート63の出力は、カード状態をログ
するための手段にも結合されている。このようにして、
カードをリセットするためと、POSレジスタに入力す
るためのドライバが提供されている。より具体的には、
POSレジスタの中の「リセット」ビットおよびその中
の「クロック」ビットがセットされる。
【0101】このようにして、第1または第2のカウン
タが終末カウントに達した場合、カードはリセットさ
れ、POSレジスタには「ノークロック」が記録され
る。アダプタがリセットされる場合、スレーブ・アクセ
スは、POSに「ノークロック」を記録することを除い
て、行うことができない。さらに、アダプタがリセット
されているので、マスター・アクセスも開始されない。
進行中のスレーブ・アクセスもマスター・アクセスも直
ちに止められる。メインプロセッサ2がPOSへアクセ
スするにはクロックを必要としないので、メインプロセ
ッサは、クロックが故障し、クロックに何が起こったか
を判断するために、POSレジスタをアクセスすること
ができる。
【0102】本発明によって提供される構造により、メ
インプロセッサはハングアップすることがない。さら
に、本発明は、本構造がバス上のコンディションを変え
ることができるという新規な構造を有するものである。
【0103】まとめとして、本発明の構成に関して以下
の事項を開示する。 (1)パリティ・データを含むメッセージ・データを送
信するメインプロセッサと、メッセージ・データを受信
する受信装置と、前記メインプロセッサと前記受信装置
の間に接続され、前記メインプロセッサからのメッセー
ジ・データを前記受信装置へ送るアダプタと、前記アダ
プタに設けられ、前記メッセージ・データとともに前記
受信装置へ送るCRCコードを生成するCRC生成器
と、前記CRC生成器に接続され、前記メインプロセッ
サから送られてきたメッセージ・データ中のパリティ・
データを調べて、もしパリティ・エラーを検出すると、
前記CRCコード中にエラーを生じるよう前記CRC生
成器に強制するパリティ検出器と、を具備するメッセー
ジ・データ・エラー検出システム。
【0104】
【発明の効果】本発明により、メインプロセッサが高性
能交換機構との通信を待つことから解放できるアダプタ
が提供され、これにより、アダプタが主にデータ転送タ
スクを実行している間、メインプロセッサは他のタスク
を実行することができる。さらに、アダプタは、データ
転送オペレーションにおいて、スレーブとしてもマスタ
ーとしてもはたらくことができる。さらに本発明は、ア
ダプタによって高性能交換機構の多重チャネルに結合さ
れているメインプロセッサのFIFOを管理する方法を
提供し、これにより、相対的に遅いバスを通るポーリン
グを不用にし、相対的に速いバスはデータ転送オペレー
ションに使用できるようにしている。さらに、転送され
たデータの完全性を確実にするためにCRCとパリティ
ー・チェックをオーバラップさせた方法と構造を提供し
ている。また、本発明により、クロック・エラー検出の
改良された回路が提供され、これにより、データ転送オ
ペレーション中にクロックが故障しても、メインプロセ
ッサのハングアップが防げる。
【図面の簡単な説明】
【図1】プロセッサと高性能交換機構との間のアダプタ
の全体的な位置づけを図式的に示す図である。
【図2】アダプタとその構造を示す図である。
【図3】メインメモリにパケットFIFOを含む、本発
明によるシステムを示す図である。
【図4】本発明による、コプロセッサとメインプロセッ
サによる送り出しと受け取りオペレーション、および、
メインプロセッサのパケットFIFOの管理のフローチ
ャートを示す(図5、6、7に続く)。
【図5】図4に示したフローチャートの続きを示す。
【図6】図4と5に示したフローチャートの続きを示
す。
【図7】図4、5、6に示したフローチャートの続きを
示す。
【図8】本発明のアダプタにより転送されたデータの完
全性を確実にするための構造、具体的には、パリティー
・エラーとCRCエラーを検出するための構造を示す図
である。
【図9】本発明で使用するクロック回路を示す図であ
る。
【符号の説明】
1、20 アダプタ 2 メインプロセッサ・ノード 3 高性能交換機構 21 マイクロチャネル・インターフェース 22 マイクロプロセッサ 2a メインメモリ記憶装置 2b FIFO記憶装置 2b1、2b2 パケットFIFO 23 DRAM 24 左側のDMAエンジン 25 右側のDMAエンジン 26 双方向FIFOバッファ 26a 第1ポート 26b 第2ポート 26c 内部レジスタ(または「メールボック
ス」) 27 MSMU(メモリおよび交換機構管理
装置) 28 マイクロプロセッサ・バス 29 マイクロチャネル・バス 50 パリティー生成/チェック機構 51 マイクロチャネル・パリティー・チェ
ック回路 61、62 一対のカウンタ 63 ORゲート 64 リセット伝達手段
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジェラード・ミシェル・サレム アメリカ合衆国12528ニューヨーク州ハイ ランド、レザーボア・ロード 42 (72)発明者 リチャード・アンソニー・スウェッツ アメリカ合衆国10549ニューヨーク州マウ ント・キスコ、バーカー・ストリート、ア プト・ジー1 (72)発明者 シングプイ・ズィー アメリカ合衆国12401ニューヨーク州キン グストン、メイン・ストリート 320 (72)発明者 ベン・ジェシー・ナツァンソン アメリカ合衆国07666ニュージャージー州 テアネック、リンデン・アベニュー 701

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 パリティ・データを含むメッセージ・デ
    ータを送信するメインプロセッサと、 メッセージ・データを受信する受信装置と、 前記メインプロセッサと前記受信装置の間に接続され、
    前記メインプロセッサからのメッセージ・データを前記
    受信装置へ送るアダプタと、 前記アダプタに設けられ、前記メッセージ・データとと
    もに前記受信装置へ送るCRCコードを生成するCRC
    生成器と、 前記CRC生成器に接続され、前記メインプロセッサか
    ら送られてきたメッセージ・データ中のパリティ・デー
    タを調べて、もしパリティ・エラーを検出すると、前記
    CRCコード中にエラーを生じるよう前記CRC生成器
    に強制するパリティ検出器と、 を具備するメッセージ・データ・エラー検出システム。
JP7065413A 1994-04-05 1995-03-24 メッセージ・データ・エラー検出システム Pending JPH0816419A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US22314594A 1994-04-05 1994-04-05
US223145 1994-04-05

Publications (1)

Publication Number Publication Date
JPH0816419A true JPH0816419A (ja) 1996-01-19

Family

ID=22835235

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7065413A Pending JPH0816419A (ja) 1994-04-05 1995-03-24 メッセージ・データ・エラー検出システム

Country Status (2)

Country Link
EP (1) EP0676697A1 (ja)
JP (1) JPH0816419A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047391A (en) * 1997-09-29 2000-04-04 Honeywell International Inc. Method for strong partitioning of a multi-processor VME backplane bus

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4567595A (en) * 1983-03-31 1986-01-28 At&T Bell Laboratories Multiline error detection circuit
US5182752A (en) * 1990-06-29 1993-01-26 Digital Equipment Corporation Method and apparatus for transferring data between a data bus and a data storage device
EP0473102B1 (en) * 1990-08-29 1995-11-22 Honeywell Inc. Data communication system with checksum calculating means

Also Published As

Publication number Publication date
EP0676697A1 (en) 1995-10-11

Similar Documents

Publication Publication Date Title
EP0676695B1 (en) Clock fault detection circuit
US5664223A (en) System for independently transferring data using two independently controlled DMA engines coupled between a FIFO buffer and two separate buses respectively
US5448558A (en) Method and apparatus for managing packet FIFOS
JP4499420B2 (ja) スーパーチャージメッセージ交換装置
KR970000274B1 (ko) 컴퓨터 시스템 및 그의 데이타 전송을 제어하는 방법
US5276684A (en) High performance I/O processor
US6145016A (en) System for transferring frame data by transferring the descriptor index data to identify a specified amount of data to be transferred stored in the host computer
EP0185609B1 (en) Coherent interface with wraparound receive and transmit memories
KR0161101B1 (ko) 호스트 인터럽트 및 지시운용을 가지는 네트워크 어댑터
EP1032880B1 (en) Method and apparatus for switching between source-synchronous and common clock data transfer modes in a multiple agent processing system
US5584033A (en) Apparatus and method for burst data transfer employing a pause at fixed data intervals
JPH01205366A (ja) データを転送するための方法およびそのためのデータ転送制御器
JPH0775016B2 (ja) データ処理システム及びデータ通信バス・システム
US5581741A (en) Programmable unit for controlling and interfacing of I/O busses of dissimilar data processing systems
US20090175290A1 (en) Flexray communications module, flexray communications controller, and method for transmitting messages between a flexray communications link and a flexray participant
US7043612B2 (en) Compute node to mesh interface for highly scalable parallel processing system and method of exchanging data
US7508836B2 (en) Data processing apparatus and method for handling transactions
JPH0816419A (ja) メッセージ・データ・エラー検出システム
JP3141948B2 (ja) 計算機システム
JP2000029823A (ja) バスアクセス制御回路
JPH0675796A (ja) パリティエラー記録装置
JPH06131246A (ja) 共有メモリの非同期アクセス方式
JPH07129504A (ja) インタフェース装置
JPS61177560A (ja) 高速の並列バス構造およびデ−タ転送方法
JPH06131245A (ja) 共有メモリの非同期アクセス方式