(57)【特許請求の範囲】
【請求項１】
複数のデータ処理モジュール（34）相互間で情報を転送する複数のデータラインから成る並列データバス（28）と、前記データ処理モジュール（34）のすべてを同期させるための共通の高速度クロック信号（42）と、前記複数のデータ処理モジュール（34）のうちの要求データ処理モジュールと、前記データ処理モジュール（34）の各々に含まれる送信FIFO（24）および受信FIFO（26）に接続したバスコントローラ（22）とを含み、前記複数のデータ処理モジュール（34）相互間でデジタルデータを転送する高速パケット化データバスシステムにおいて、
前記データ処理モジュール（34）のすべてに接続され前記要求データ処理モジュールが前記並列データバス（28）へのアクセスを獲得するようにする単一の順次式調停ライン（50）であって、前記要求データ処理モジュールがそのデータ処理モジュール自体のアドレスを前記順次式調停ライン（50）にランダムに送出し、そのデータ処理モジュール自体のアドレス以外のアドレスを前記順次式調停ライン（50）上で検出した場合に調停衝突を検出する単一の順次式調停ライン（50）と、
前記並列データバス（28）および前記順次式調停ライン（50）に接続され、前記並列データバス（28）へのアクセスの獲得の前に前記順次式調停ライン（50）への排他的なアクセスを必ず獲得し、それによって前記データ処理モジュール（34）相互間の高速度データ通信を可能にするバスコントローラ（22）であって、消去可能でプログラム可能な論理装置から成るバスコントローラ（22）と
を含むことを特徴とする高速パケット化データバスシステム。
【請求項２】
複数のデータ処理モジュール（34）相互間で情報を転送する複数のデータラインから成る並列データバス（28）と、前記データ処理モジュール（34）のすべてを同期させるための共通の高速度クロック信号（42）と、前記複数のデータ処理モジュール（34）のうちの要求データ処理モジュールと、前記データ処理モジュール（34）の各々に含まれる送信FIFO（24）および受信FIFO（26）に接続したバスコントローラ（22）とを含み、前記複数のデータ処理モジュール（34）相互間でデジタルデータを転送する高速パケット化データバスシステムであって、
前記データ処理モジュール（34）のすべてに接続され前記要求データ処理モジュールが前記並列データバス（28）へのアクセスを獲得するようにする単一の順次式調停ライン（50）であって、前記要求データ処理モジュールがそのデータ処理モジュール自体のアドレスを前記順次式調停ライン（50）にランダムに送出し、そのデータ処理モジュール自体のアドレス以外のアドレスを前記順次式調停ライン（50）上で検出した場合に調停衝突を検出する単一の順次式調停ライン（50）と、
前記並列データバス（28）および前記順次式調停ライン（50）に接続され、前記並列データバス（28）へのアクセスの獲得の前に前記順次式調停ライン（50）への排他的なアクセスを必ず獲得し、それによって前記データ処理モジュール（34）相互間の高速度データ通信を可能にするバスコントローラ（22）と
を含む高速パケット化データバスシステムにおいて、
前記並列データバス（28）が双方向性であって同期していることと、
前記バスコントローラ（22）がバス送信受信状態マシンコードを実行することと、
前記要求データ処理モジュールがそのデータ処理モジュール対応の特有の調停アドレスを前記順次式調停ライン（50）上にランダムにアサートし、前記順次式調停ライン（50）上に存在する他の情報との衝突の有無の検出のための前記順次式調停ライン（50）のビットごとの監視を、前記順次式調停ライン（50）上の前記特有の調停アドレスを前記要求データ処理モジュールのバスコントローラ（22）から完全にシフトアウトできるまで行うことと、
調停の衝突が生じていないことおよび前記並列データバス（28）が前記要求データ処理モジュールに割り当てられていることの確認を前記要求データ処理モジュールが前記順次式調停ライン（50）から受けると直ちにデータを前記並列データバス（28）上にアサートすることと、
前記要求データ処理モジュールの主プロセッサ（32）がメッセージを発生し、そのメッセージを前記要求データ処理モジュールのバスコントローラ（22）に転送し、前記並列データバス（28）上で前記メッセージを転送することと、
前記メッセージを受信データ処理モジュールのバスコントローラ（22）で受信し、そのメッセージをその受信データ処理モジュール自体の前記特有の調停アドレスで検証するとともに内部バス（30）経由で前記受信データ処理モジュールの前記主プロセッサ（32）およびDMA（直接メモリアクセス）コントローラ（33）に転送し、前記受信データ処理モジュールの前記DMAコントローラ（33）が前記内部バス（30）に結合した内部メモリ（40）の制御およびデータの導入を行うことと、
前記受信データ処理モジュールの受信FIFO（26）がその受信FIFO（26）から前記メモリ（40）へのすべてのデータの転送の完了時に前記内部バス（30）経由で前記DMAコントローラ（33）にメッセージ終了信号を送り、それによって制御を前記主プロセッサ（32）に戻すことと
を特徴とする高速パケット化データバスシステム。
【請求項３】
送信または要求データ処理モジュールおよび受信データ処理モジュールを含む複数のデータ処理モジュール（34）相互間で高速パケット化データバスシステム経由で高速データ転送を行う方法であって、前記高速パケット化データバスシステムが単一の順次式調停ライン（50）と、少なくとも二つのデータラインから成る並列データバス（28）と、前記データ処理モジュール（34）のすべてを同期させる共通高速クロック信号（42）と、前記データ処理モジュール（34）のすべてに含まれる送信FIFO（24）および受信FIFO（26）に結合したバスコントローラ（22）とを備える高速パケット化データバスシステムである高速データ転送方法において、
前記並列データバス（28）へのアクセスを要求する要求データ処理モジュールによる前記順次式調停ライン（50）へのバスアクティビティの有無を問合せする過程と、
前記データ処理モジュール（34）のすべてに結合された前記順次式調停ライン（50）経由で前記要求データ処理モジュールのアドレスをデータの伝達の前に前記並列データバス（28）の調停を行うようにランダムに送出する過程と、
前記要求データ処理モジュールにより前記順次式調停ライン（50）上の衝突を検出する過程と、
前記要求データ処理モジュールのアドレスが首尾良く送出された場合に前記要求データ処理モジュールにより前記順次式調停ライン（50）を割り当てる過程と、
調停の成功に応答して前記要求データ処理モジュールに前記並列データバス（28）を割り当てて捕捉する過程と、
前記受信データ処理モジュールのバスコントローラ（22）により前記並列データバス（28）を監視する過程と、
前記受信データ処理モジュールによりその受信データ処理モジュール自体のアドレスを認識する過程と、
前記要求データ処理モジュールの送信FIFO（24）経由で前記並列データバス（28）にデータをアサートする過程と、
前記受信データ処理モジュールの受信FIFO（26）からの前記データを累算する過程と、
データ転送の完了時に前記要求データ処理モジュールにより前記順次式調停ライン（50）をアサート解除する過程と
を含み、データを前記データ処理モジュール（34）相互間で高速データ転送することを特徴とする高速データ転送方法。
【請求項４】
前記並列データバス（28）について調停が首尾良く行われ新たなデータのアサートが行われた場合に前記要求データ処理モジュールと前記受信データ処理モジュールとの間で前記新たなデータが転送されることをさらに特徴とする請求項３記載の方法。
【請求項５】
前記要求データ処理モジュールが前記順次式調停ライン（50）にハイレベル信号、すなわち前記要求データ処理モジュールと受信データ処理モジュールとの間のデータ転送がそれ以上行われないことを示すハイレベルの信号を供給することによって前記順次式調停ライン（50）をアサート解除することを特徴とする請求項４記載の方法。
【請求項６】
前記問合せする過程が、前記順次式調停ライン（50）上に起こり得る衝突の監視のために最少七つのアドレスビットについて前記順次式調停ライン（50）を監視する過程をさらに含むことを特徴とする請求項５記載の方法。
【請求項７】
前記要求データ処理モジュールのアドレスを前記順次式調停ライン（50）に送出する過程が前記並列データバス（28）へのアクセスの相対的優先順位を示すことをさらに特徴とする請求項６記載の方法。
【請求項８】
前記衝突を検出する過程が、前記順次式調停ライン（50）の捕捉前の衝突について前記要求データ処理モジュールのアドレスの七つのアドレスビットにわたって前記順次式調停ライン（50）を監視する過程をさらに含むことを特徴とする請求項７記載の方法。
【請求項９】
前記順次式調停ライン（50）を割り当てる過程が、調停の完了後であってデータの伝達の前に前記要求データ処理モジュールが前記順次式調停ライン（50）に前記ハイレベルの信号を加える過程をさらに含むことを特徴とする請求項８記載の方法。
【請求項１０】
前記受信データ処理モジュールにより前記順次式調停ライン（50）を監視する過程が、最少七つのクロックサイクルにわたって前記順次式調停ライン（50）を監視する過程をさらに含み、その順次式調停ライン（50）が捕捉なしの場合に受信警報信号をアドレス認識のために生ずることをさらに特徴とする請求項９記載の方法。
【請求項１１】
前記認識する過程が、前記受信データ処理モジュール自体のアドレスと比較するように前記順次式調停ライン（50）を監視する過程をさらに含み、前記アドレスのうちの一つのビットが対応しない場合に前記受信データ処理モジュールが前記並列データバス（28）を監視する状態に戻ることをさらに特徴とする請求項10記載の方法。
【発明の詳細な説明】
発明の背景
［発明の分野］
本発明は、概括的には、一つのデータ処理モジュールと複数のデータ処理モジュールとの間のデータ転送システムに関する。より詳細にいうと、本発明は共用並列バス経由で互いに異なるデジタル処理モジュールの相互間の情報の転送を行う高速データ通信システムに関する。
［従来技術の説明］
CPU（中央処理装置）、メモリ、周辺装置、I/O（入出力）装置、またはそれら以外のデータ処理装置などのデジタル装置内の通信に通信バスを使用することが多い。通信バスは、図１に示すとおり、デジタルワードのやり取りのためのひと組の共用導体である。これによって装置間の通信を単純化し、互いに別個の相互接続部を設けることを不要にしている。
通信バスは、通常、データラインおよびどの装置に送信または受信させるかを決めるアドレスラインと、実行中のコマンドの種類を明確にする制御ラインおよびストローブラインとの組から成る。アドレスラインおよびストローブラインは、中央処理装置から一方向にデータを伝達する。データラインは通常すべて双方向性である。
データラインは書込み命令の期間中にCPUがアサートし、また読取り期間中に周辺装置がアサートする。CPUも周辺装置もデータラインには三状態ドライバを用いる。
いくつかのデータ処理装置が共用データバス経由でデータをやり取りするコンピュータシステムでは、ハイおよびロウの二つの正常電圧状態（二進数１および０をそれぞれ表す）を活性電圧プルアップによって生ずる。しかし、いくつかのデータ処理モジュールがデータバス経由でデータをやり取りしている場合は、そのバス上に配置された別の装置が同じラインを駆動できるように、第３の出力状態すなわち開回路状態を形成できなければならない。
三状態ドライバ、または開放コレクタドライバはバスに接続ずみの装置が自分のバスドライバを機能抑止できるようにするために用いる。すなわち、各時点でバス上にデータをアサートする装置を一つに限るためである。各バスシステムは、どの装置がデータをアサートしているかを判定するための確定プロトコルを有する。一つのバスシステムは、ドライバをイネーブルできる装置を各時点で一つに限りそれ以外のすべての装置をその時点で機能抑止する（第３の状態）ように設計してある。装置は制御ライン上で自分のアドレスを認識すると、バス上にデータをアサートできると判断する。その装置は制御ラインを監視しており、アドレスライン上で自分のアドレスおよび読出しパルスを検出するとデータをアサートする。しかし、同じラインを共用している三状態装置が同時に信号のやり取りをすることがないようにする外部論理回路が必要である。そうしないと、バス競合が発生することとなる。
バス制御論理回路、すなわち“バスアービタ”はバスの制御の調停に用いるプロトコル用のコードを実行する。バスマスタはCPUの一部で構成でき、独立に機能させることもできる。バス制御を他の装置に担当させても差し支えないことがさらに重要である。より複雑なバスシステムを用いると、バス上に配置された別の装置にそのバスを制御させることが可能になる。
データ処理システムは複数のメモリ位置に蓄積ずみのプログラムされた命令を実行するプロセッサを有する。図１に示すとおり、別のデジタル装置を相互接続しているバスに、I/O装置を用いてシステムへのデータの入出力転送を行う。バスプロトコル、すなわちハンドシェーク規則は装置相互間のデータのやり取りを可能にするための予め定められた一連の過程を定めている。
共用バス経由でデータを伝達するには、対象のデータ、そのデータの宛先および送信時点を特定しなければならない。すなわち、データ、アドレスおよびストローブラインを特定しなければならない。ワード全体の同時転送を可能にするように、ワード中のビット数と同数のデータラインが設けてある。データ転送は付加的なストローブバスライン上のパルスで同期させる。アドレスラインの数でアドレス可能な装置の数が決まる。
通信バスには、同期式のものと非同期式のものとがある。同期式のバスでは、CPUまたはシステム内のどこかで生成したストローブ信号と同期してデータをバス上にアサートし、またはそのバスから取り込む。しかし、データを送出中の装置には、そのデータが受信されたかどうかは分からない。非同期式のバスでは、通信装置間のハンドシェークによりデータの受信が送信側に保証されるが、ハードウェアおよびシグナリングがそれだけ複雑になる。
高速で高度の計算を伴う多チャンネルデータ処理応用分野においては、多くの場合データ処理装置相互間のデータ転送を非常に高速化しなければならない。データの転送は、プログラムの介在なしにバス経由でメモリと周辺装置との間で行われる。このデータ転送は直接メモリアクセス（DMA）としても知られている。このDMA転送においては、装置はバスへのアクセスを特別のバス要求ライン経由で要求し、バスマスタがCPUへのバス開放前にそのデータの転送のしかた（バイト、ブロックまたはパケットのどの形で）を調停する。
データ転送には多数の互いに異なる種類のバス通信システムおよびプロトコルが現在使われている。図２の表に示すとおり、処理装置相互間でデータを操作するために多様な手法が開発されてきた。小型コンピュータシステムインタフェース（SCSI）や、キャリア感知多元接続／衝突検出（CSMA/CD）（イーサネット）ネットワークなど標準化された並列伝送方式がある一方、強力なSDLC/HDLC（同期式／高レベルのデータリンク制御）プロトコルを備えたデータ通信バスがある。その種の特定用途データバスアーキテキチャの一例が欧州特許出願第0525,860A2号に記載されている。しかし、特定用途の高速動作用には、単純なデータ通信バスが望ましい。
したがって、データバスに接続された種々のプロセッサモジュール相互間におけるデータ転送およびメッセージ転送を最適化する単純なデータ処理システムアーキテクチャが必要になっている。
［発明の概要］
モジュール相互間調停ずみの並列パケット化高速制御データバスシステムを提供し、それによって複雑なデジタル処理環境におけるマイクロプロセッサモジュール相互間の高速データ授受を可能にする。このシステムは、12.5MHzで動作する高速FIFO（先入れ先出し）待ち行列、TTL CMOS（相補酸化金属シリコン）と互換性のあるレベルクロック信号、単一バスマスタ調停、同期式クロック動作、DMA、および多プロセッサシステム用の特有のモジュールアドレス指定を特徴とする単純化したハードウェアアーキテクチャを備える。本発明は、各処理モジュールに共用バスマスタを設けて通信およびデータ転送プロトコルを実行する並列データバスを含む。
高速モジュール間通信バス（HSB）は種々のマイクロプロセッサモジュール相互間の通信に用いられる。このデータバスは同期式であり、完全に双方向式である。バス経由でデータの授受を行う各処理モジュールは、上述のバス制御アーキテクチャを備える。HSBは、デジタルデータ授受用の八つの共用並列バスラインと、調停およびクロック信号用の二つの追加のラインとを含む。明示的なバス要求信号も許与信号も不要である。また、HSBは単一構成要素レベルを維持しながらデータラインを二重化した冗長システム構成にすることもできる。このバスは、信号反射を最小にするように抵抗プルアップを終端装置として機能させた三状態ゲートで駆動する。
HSB経由でデータを伝達するには、各処理モジュールはデータとそのデータの宛先とそのデータが有効になる時点とを特定しなければならない。バスマスタとして知られる一つのメッセージ源だけが各時点でバスを駆動できる。データの流れは双方向であるので、所定の処理モジュールマイクロプロセッサが命令を実行中にデータライン上で衝突が生ずることがないように所定のプロトコルを設定する。この調停の方法は調停バス上だけに存在する衝突の検出に依存し、バス状態判定用の状態マシンを各データ処理モジュール上に用いる。さらに、この調停の方法は菊花型連鎖を形成しておらず、システム柔軟性を確保している。
各処理モジュール上に配置してある状態マシンは、所定の処理モジュール内で使用するマイクロプロセッサとHSBとの間の制御インタフェースである。このインタフェースに必要な回路は、送信FIFO、受信FIFO、多様な方向性／双方向性信号バッファ、およびEPLD（消去可能でプログラム可能な論理装置）で実行される状態マシン用のソフトウェアコードから構成される。
したがって、本発明の目的はデータ処理装置相互間の高速デジタルデータ伝達のためのシステムを提供することである。
本発明のもう一つの目的は処理ずみのデータを複数の処理モジュールからデータ処理ハードウェア全部に接続ずみのバス経由でデジタルシステムに出し入れする簡単なデータ転送の方法を提供することである。
本発明のさらにもう一つの目的は改良型の単純なデータ転送の方法を提供することである。
本発明によるこのシステムおよび方法の上記以外の目的および利点は好ましい実施例の詳細な説明から当業者に明らかになろう。
【図面の簡単な説明】
図１は通常の従来技術のデータ通信バスのブロック図である。
図２は従来技術のデータバスアーキテクチャの表である。
図３は好ましい実施例の単純化したブロック図である。
図４は好ましい実施例の電気回路の概略図である。
図５はメッセージ送信DMAのブロック図である。
図６はメッセージ受信DMAのブロック図である。
図７はデジタルプロセッサシステムのブロック図である。
図８は送信命令の概括的流れ図である。
図９は問合せ段階の状態図である。
図10は調停段階の状態図である。
図11は送信段階の状態図である。
図12は受信命令の概括的流れ図である。
図13は遅延段階の状態図である。
図14は受信段階の状態図である。
好ましい実施例の詳細な説明
以下、図面を参照して好ましい実施例を説明する。なお、図面全体を通じて同じ構成要素には同じ参照符号を付けて示してある。
本発明の高速モジュール間バス（HSB）20を単純化した形で図３に示す。この好ましい例は、バスコントローラ22と、送信FIFO24と、受信FIFO26と、８ビット並列データバス28と、順次式調停バス50とを備える。バス28の両端は、信号反対を最小にするように複数の抵抗性分圧器で終端してある。８ビットの内部アドレスおよびデータバス30は、送信FIFO24および受信FIFO26並びにバスコントローラ22を、所定のプロセッサモジュール34上に配置したCPU32およびDMA制御装置33に結合する。内部アドレスおよびデータバス30は、CPU32とバスコントローラ22およびデータ処理モジュール34の用途のサポートに必要なPROM36、SRAM38およびDRAM40などの多様なメモリ素子との間のデータ授受を可能にする。
HSB20は、パケット化メッセージ転送バスシステムである。本発明によって種々のプロセッサモジュール34でデータ、制御メッセージおよび状態メッセージのやり取りができる。
HSB20は、最小の遅延で複数のプロセッサモジュール34に高速サービスを提供する。モジュール相互間のメッセージ転送時間は、データバス28へのアクセスのための時間および各メッセージの待ち行列処理のためのオーバーヘッドとともに短く維持してある。これらの要求は、適度の高いクロック速度および並列データバス28のアーキテクチャを用いることによって達成される。送信FIFO24および受信FIFO26は、プロセッサモジュール34のCPU32とデータバス28との間のインタフェースを単純化して高速化するために用いる。
図４を参照すると、周波数が公称12.5MHzでデューティサイクルがほぼ50％のTTL互換性あるCMOSレベル信号を含む共通のクロック信号（HSB_CLK）42が、すべてのHSB20の構成要素を同期させて実行する。クロック信号42のパルスは完全なデジタルシステムの任意の部分を発生源としてもよく、その発生源はこの発明の技術的範囲外のものである。
並列データバス22（HSB_DAT）ライン０乃至７は、８個の双方向TTL互換性あるCMOSレベル信号を供給する。ある時点でバス28を駆動できるのは、メッセージ源、バスコントローラまたはバスマスタ22のうちの一つだけである。バス調停方式は、複数の処理モジュールのどの一つがどの時点でバスマスタになれるか定める。
クロック42の端縁に対するデータ28および制御信号の遷移の関係は、受信モジュールでデータを高信頼性を保って再生するのに重要である。データを送信モジュール34からデータバス28上にクロック信号42の立下り後縁に同期して出力する。次に、そのデータをアドレス指定先の受信モジュールでクロック信号42の立上り前縁に同期して出力する。この特徴により、８進レジスタ60に対する最小の設定時間を損なうことなく十分な設定保持のための約40n秒の時間を確保する。
データをデータバス28上に送出する前に、バスコントローラ22は起こり得るデータ衝突の防止のために調停バス50から許可を得なければならない。メッセージ源は、多数あり得るプロセッサモジュール34へのアクセス要求との間の調停で選択されなければならない。調停における勝者は、単一のメッセージを送出する一時的なバスマスタ権限を許与される。データ転送の終了のあと、バスマスタ権限は消滅し、別のプロセッサモジュール34によるバス28へのアクセスが可能になる。
本発明の順次式調停方法には、明示的なバス要求信号もバス許与信号も不要である。この発明の好ましい方法は、所要の集中化した優先符号化装置および通常の許与構成も複雑なシグナリングラインおよび信号ラインも不要である。この調停方法は菊花型連鎖でなく、バス28上の任意のプロセッサモジュール位置はアドレス配線に対する変更を要することなく空塞いずれかの状態をとる。
本発明において、開放コレクタ調停バス50は多数の処理モジュール34がデータバス28の制御で競合することを可能にする。別の処理モジュールが調停バス50にアクセスしたかどうかをデジタルシステム内の処理モジュール34が推測的に把握することはできないので、HSBシステム内のモジュールはHSB上のハイおよびロウレベルの論理信号を同時に出力して、調停衝突を発生させ得る。この衝突は駆動回路素子に損傷を与えることなく発生する。しかし、この衝突はバスの動作の判定の方法を提供する。
調停バス50は、論理１レベルを生ずる調整電圧源に接続したプルアップ抵抗を含む。調停バスドライバ52は、論理０レベルを駆動するように調停バス50を接地点に接続する。その結果、他の処理モジュール34が論理０レベルを駆動しない場合にのみ論理１が生ずる。処理モジュール34の調停バス50のドライバ52のいずれかが論理０をアサートした場合は、調停バス50はロウレベルになる。
当業者に周知のとおり、この接続は布線ずみのORと呼ばれる。すなわち、いずれかの装置がハイレベルに駆動すると、ラインがロウレベル状態になる（デモーガンの定理）大きいNORゲートとして動作するからである。活性化したロウの受信機は論理０レベルを反転させ、等価的ORゲートを生ずる。正の真論理規約を用いると布線ずみのANDが形成され、負の真論理規約を用いると布線ずみのORが形成される。少なくとも一つの装置が調停バス50を駆動しているかどうかを示すのにこれを用い、付加的な論理を必要としない。したがって、処理モジュール34が調停バス50上に論理１をアサートしてモニタライン55（BUS_ACT_N）上のバッファ53経由で論理０を監視する場合は、処理モジュール34のバスコントローラ22は衝突が発生しアクセスのための調停に負けたと判断する。
この調停方法は衝突の検出に依存し、各処理モジュール34上のバスコントローラ22内の状態マシン46および48を用いて調停の進行に伴う調停バス50の状態を判定する。調停バス50上の遷移はすべてバスクロック42に同期している。各プロセッサモジュール34は、調停バス50に供給される特有のプログラムした２進アドレスを有する。この実施例における装置のアドレスは６ビットであり、したがって63個の処理モジュール34識別子が得られる。
HSB20上に配置された各プロセッサモジュール34のバスコントローラ22は調停バス（HSB I_ARB1_N）50を監視し（バッファ53経由で）、質問する（バッファ52経由で）。クロックされた６個以上のハイレベル信号はバスが使用中でないことを示す。処理モジュール34がメッセージ送出を希望する場合は、自分に特有の６ビットアドレスを調停バス50に上位ビットから順次シフトアウトすることによって調停を開始する。６ビットアドレスの各ビットがシフトアウトされて検査されるにしたがって、衝突が調停バス50上でビットごとに発生する。最初に検出された衝突でアクセス達成希望の処理モジュール34を調停から外す。送信中のモジュール34の送信状態マシン46が衝突を検出した場合は、調停バス50の駆動を止め、検出しなかった場合は動作を続行して６ビットアドレス全体をシフトアウトする。データバス28の制御はアドレス全体のシフトアウトを誤りなく達成した場合に行う。
論理０で調停バス50がロウになるので、結果的に優先順位づけが行われる。したがって、自分のアドレスを構成している論理０の系列を順次シフトするプロセッサモジュール34は、論理１をシフトするまで衝突を認識しない。先行０を有するアドレスは、バス50について調停を行う際に実効的に優先順位を有する。バス28のトラフィックが頻繁でない限り、この影響は大きくならない。
別の実施例においては、必要に応じてプロセッサモジュール34相互間の等価を付加する対策をとることができる。この対策は、モジュール調停IDまたはメッセージ間の待機時間を変更することによって行うことができる。
調停が首尾よく行われると、プロセッサモジュール34はデータバス28上にデータを自由に送出できる。バスコントローラ22は、その８進バストランシーバ（ドライバ）60をイネーブルし、宛先モジュールのアドレスとデータとをデータバス28にクロック42の速度で送信する。調停バス50はこの期間のあいだ使用中を表示するために送信側のプロセッサモジュール34でロウ状態に保持される。最大許容メッセージ長は512バイトである。通常は、メッセージの長さは256バイト以下とする。
データ転送が終了すると、バスコントローラ22は、ライン54（HSB_A_EN_N）経由でその８進バストランシーバ（ドライバ）60を機能抑止し、調停バス50をハイレベルにして開放する。そうすると、このシステム中のどこかで別の調停が行われ得る。
もう一つの実施例はバス28の調停をデータ転送と同時に行われるようにして、デジタルシステム全体のデータスループットを改善する。好ましい実施例では、遅延はほとんど無視でき、複雑化は避けられる。
バスコントローラ22は、処理モジュール34のマイクロプロセッサ32とHSB20との間のインタフェースおよびHSBとバス（データバス28および調停バス50）の信号との間のインタフェースを制御する必要がある。好ましい実施例では、バスコントローラ22はAltera 700シリーズのEPLD（消去可能でプログラム可能な論理装置）で構成する。８ビットの内部データバス30はバスコントローラ22とプロセッサモジュール34のCPU32との間のインタフェースを構成する。プロセッサモジュール34のCPU32は内部データバス30経由でバスコントローラ22の内部レジスタに対する読出しおよび書込みを直接に行う。バスコントローラ22は、調停バス50のバス状態を監視する。この監視は、送出メッセージに対する制御を確保し、入来メッセージ受信のためのアドレスのチェックおよび認識のために必要である。バスコントローラ22はデータFIFO24および25、DMAコントローラ33およびバスバッファイネーブル回路54を監視するとともに制御する。
この好ましい実施例に用いた構成要素を表１に示す。
0003604398.tif 000002
アドレスの復号およびDMAのゲート制御が要求され、これらの動作がバスコントローラ22で行われる。また、このバスコントローラ22は読出しおよび書込みの可能な多数の内部レジスタを含む。CPU32は８ビットの内部データバス30経由でバスコントローラ22と信号を授受し命令を送出する。
送信FIFO24へのデータ入力動作はバスコントローラ22とこのバスコントローラ22内のDMAおよびアドレス復号回路で処理する。バス28へのアクセスの達成およびFIFO24からのデータ取出しは、送信状態マシンで処理する。
電源オンになると、バスコントローラ22は、ハードウェアリセットパルス56を受ける。プロセッサモジュール34のCPU32で実行中のアプリケーションソフトウェアは、そのアプリケーションがモジュールリセットを要する場合は書込みストローブでバスコントローラ22をリセットするオプションを有している。リセットのあと、バスコントローラ22はバスアクティビティを判定しデータバス28と同期を取るようにライン55上で調停バス50を監視する。
アクティビティなしの期間が過ぎるとバスコントローラ22にはバス28がメッセージ相互間の期間にあり塞状態にはないことが分かる。その場合、プロセッサモジュール34は調停によるバス制御を要求できる。送出メッセージがない場合はバスコントローラ22は調停バス50の監視を続ける。
プロセッサモジュールCPU32は、ほぼ20Mbpsで送信FIFO24にメッセージを書き込む。Motorola 68360で構成した25MHz動作のDMAコントローラ33は、ほぼ12.5Mbpsで送信FIFO24にDMA（直接メモリアクセス）を行うことができる。送信FIFO24には各時点でメッセージ一つだけしか入力できないので、CPU32は追加の送信メッセージを自分のRAM40にバッファしなければならない。最大許容メッセージ長は512バイトであり予測メッセージ平均値は256バイトであるので、1KBのFIFO長がオーバーフローしないことが保証される。メッセージの送出が首尾よく行われると、送信FIFO24は空き状態のフラグを立て、次のメッセージを入力できるようにする。
プロセッサモジュール34のCPU32が12.5Mbpsで送出した通常の256バイトのメッセージのRAM40から送信FIFO24への伝達の所要時間は21マイクロ秒以下である。バスが塞状態でない場合、バス調停の所要時間は１マイクロ秒以下でなければならない。一つの送信メッセージのロード動作から次のメッセージのロード動作までの合計経過時間はほぼ43乃至64マイクロ秒である。この時間内に待ち行列に入るメッセージは多くないので、循環RAMバッファは不要である。
図５および図７に示すとおり、DMA転送期間中はDMAコントローラ33はプロセッサモジュール34のCPU32を機能抑止し、内部データバス30の制御を引き受ける。DMA転送はプロセッサモジュール34によって、または別のプロセッサモジュール134からの要求によって実行する。この別のプロセッサモジュール134はデータバス28の制御を首尾よく調停し、プロセッサモジュールCPU32に信号で通知する。このCPU32は、データ転送を開始するようにDMAコントローラ33に信号で通知する。DMAコントローラ33は必要なアドレスを生成し、送出バイト数および送出方向を追跡する。バイトカウンタおよびアドレスカウンタはDMAコントローラ33の一部である。両者は所望のDMA転送をセットアップするようにプロセッサモジュールCPU32からロードする。CPU32から命令があると、DMA要求がなされデータがRAMメモリ40から送信FIFO24に伝達される。
バス28上を転送されたデータをバス28上に配置された各処理モジュール34によって監視する。プロセッサシステム全体におけるバスコントローラ22の各々は、バス28上のすべての装置の宛先アドレスを含む。整合が見出されると、その受け側プロセッサモジュール34のFIFO26に対する入力をイネーブルする。このFIFO26は多数のメッセージを受け得るので、送信FIFO24より大きい記憶容量を備える必要がある。受信FIFO26は、最小で4KB×９の記憶容量を有する。この記憶容量は、256バイトのメッセージ長に基づき少なくとも16個のメッセージが受信FIFO26内で待ち行列に入ることを可能にする。多数の信号源からのメッセージバーストのために、多数のメッセージで受信FIFO26が一時的に満杯になり得る。受信モジュールCPU32は、受信FIFO26からの適切なメッセージスループットを備えていなければならない。さもなければ、データのオーバーフローのために情報がなくなる。DMAは、受信FIFO26からRAM40にメッセージを自動的に転送するのに用いる。受信FIFO26からRAM40への転送時間は通常は21マイクロ秒である。
バスコントローラ22がメッセージを受けると、DMAサービスが要求される。図６を参照すると、DMAコントローラ33はメッセージ受信ハードウェア割込み（DMA DONE）を生成し、それが内部バス30の制御を行っていることをプロセッサモジュールCPU32に信号で通知する。割込みルーチンはメッセージ待ち行列ポインタを更新し、受信FIFO26の内容をRAMメモリ40に転送する。次に、DMAコントローラ33は次にメッセージの受信を準備し、次に利用できるメッセージバッファを指示する。この動作を、受信FIFO26のすべての内容の転送が終わるまで続ける。メッセージ信号の終わりを受信FIFO26によりバスコントローラ22経由でDMAコントローラ33に送る。次に、プロセッサモジュール34のCPU32は内部通信バス30の制御を取り戻す。
送出元から宛先へのメッセージ転送の所要時間の合計は約64乃至85マイクロ秒である。図７に示すとおり、この所要時間は、プロセッサモジュール34がメッセージ送出を開始した時点から、その送信FIFO24にロードし、データバス28を調停して捕捉し、宛先受信FIFO126にそのデータを転送し、そのメッセージをCPU132にバスで送出し、受け側モジュール134のRAM140にそのメッセージを転送するまでの時間として計算する。実際のスループットは、PCMハイウェイ上の8Kbps時間スロットのそれの約200倍である。
HSB20の制御には二つの状態マシン、すなわち一方が情報70を送信し他方が情報72を受信する二つの状態マシンが必要である。これらの状態マシンは、AlteraのMAX＋PLUS II,Version 6.0の状態マシン構文の形でプログラム可能な論理としてバスコントローラ22に実働化している。
状態マシンはいずれもひと組の状態と、各クロックパルス縁部でそれら状態の間を動くひと組の遷移規則とを備える。遷移規則は、現在の状態と、次のクロックの前縁における入力の特定の組合せとの両方に依存する。好ましい実施例に用いたAltera EPLD22は可能性あるすべての状態の表示に十分な登録ビットと、遷移規則の実働化に十分な入力および論理ゲートを含む。
送信状態マシンについての概括的送信プログラム流れ図70を図８に示す。この概括的流れ図70には三つの状態マシン図、すなわち照会段階状態マシン74、調停段階状態マシン76および送信段階状態マシン78が示してある。
プロセッサモジュールのCPU32は照会段階74を開始する。図９にはバス制御装置22がバスアクティビティを検出するのに必要な遷移規則とともに八つの状態を示す。起動のあと送信要求をバスコントローラ22に転送してバスアクティビティの有無を調べる。バスコントローラ22は最小７クロックサイクルの期間にわたり調停バス50を監視する。六個の内部バスコントローラのアドレスを衝突の有無について調べる。衝突が検出されない場合は、調停の要求を非活性化バスに行う。
図10に示すとおり、調停要求はフリップフロップ80をセットして、特有の識別子とそれに続く六つのアドレスビットとを調停ライン（HSB I_ARB1_N）50上に送信し始める。送出されたこれらビットのいずれかが監視されているものと同じでない場合は衝突が検出される。上記の六つのビットがバス28に首尾よくシフトした場合はその特定のバスコントローラ22がバスマスタの権限を有しそのバスを捕捉する。次に、送信FIFO24の読出しイネーブルパルスがセットされる。これらビットのうちの一つでも衝突した場合は、調停バス50は使用中でありプロセッサモジュール34は調停を止める。
図11を参照すると、送信FIFO24の読出しイネーブルパルスがフリップフロップ82をセットして送信イネーブルパルスを送出する。送信FIFO24の内容は、バスコントローラ22、８進バストランシーバ60経由でデータバス28に送出される。このデータはメッセージフラグの終わりに遭遇するまで送信される。送信FIFO24が空き状態になると送信要求クリア信号が出力され、バスコントローラ22をバス28の監視に戻す。
受信FIFO26の制御のための状態マシンも同様に二つの状態マシンに還元される。受信FIFO26の制御の概括的フロー図を図12に示す。
図12を参照すると、バスコントローラ22は７クロックサイクルの期間にわたって調停バス50を監視する。バスのアクティビティは別のプロセッサモジュール34のバスコントローラ22からの先導開始ビットの受信で決まる。この７クロックサイクルの期間の経過のあともバスが捕捉されなかった場合は、受信警報信号を受信FIFO89に入力する。
図13に示すとおり、バスコントローラ22は送信されてきたデータの最初のビットを調べそれを自分のアドレスと比較する。その最初のデータビットがそのバスコントローラ22に特有の識別子でない場合は、そのバスコントローラ22は監視動作状態に戻る。
メッセージの送信のためのソフトウェアには二つの実施例がある。第１の実施例はメッセージ送出に平均50マイクロ秒の待機を許容する。この場合はシステムの割込みが行われないからである。これは待ち行列および待ち行列解除を単純化する。第２の実施例は、メッセージが高速で送られており、オペレーティングシステムが高速で先制的であり、システム割込みが迅速に処理され、プロセッサの遊休状態がメッセージ送出中には許容されないものと仮定している。
送信DMAの完了後、データバス28の調停を行わなければならない。データバス28の調停を首尾よく行ったあと、そのバスコントローラ22は送信FIFO24を解放し、それによりその内容をデータバス28に送出する。空きのフラグはバスコントローラ22およびプロセッサモジュール34CPU32への転送の完了を通知する。
本発明の特定の実施例を図示し説明してきたが、当業者には多くの変形および変更が本発明の技術的範囲を逸脱することなく可能である。上述の説明は特定の形態の例示を意図するものであり、限定を意図するものではない。
【図１２】
0003604398.tif 000003
【図１】
0003604398.tif 000004
【図２】
0003604398.tif 000005
【図３】
0003604398.tif 000006
【図４Ａ】
0003604398.tif 000007
【図４Ｂ】
0003604398.tif 000008
【図４Ｃ】
0003604398.tif 000009
【図４Ｄ】
0003604398.tif 000010
【図４Ｅ】
0003604398.tif 000011
【図５】
0003604398.tif 000012
【図６】
0003604398.tif 000013
【図７】
0003604398.tif 000014
【図８】
0003604398.tif 000015
【図９】
0003604398.tif 000016
【図１０】
0003604398.tif 000017
【図１１】
0003604398.tif 000018
【図１３】
0003604398.tif 000019
【図１４】
0003604398.tif 000020