(57)【特許請求の範囲】
【請求項１】
送信者と受信者の間でバスを介してデータメッセージの授受を行うための、送信制御部と受信制御部とを少なくとも有するバスコントローラであって、
送信制御部に設けられる複数の送信チャネルと受信制御部に設けられる複数の受信チャネルからなり、送信チャネルに設定されたデータをバスを介して受信チャネルに受信するための複数のＤＭＡチャネルを有し、
前記送信制御部は、
前記データメッセージの送信要求を受信者に伝える要求メッセージを記憶するための複数の要求メッセージ送信バッファを持つ要求メッセージ送信制御部と、
前記受信者から前記データメッセージの受信が可能であることを示す許可メッセージを受信する許可メッセージ受信制御部と、
前記受信者に送信すべき前記データメッセージを送信するデータメッセージ送信制御部と、
前記要求メッセージを送信するために予約している要求メッセージ送信バッファを示す予約要求メッセージ送信バッファ番号と、前記要求メッセージを送信するために予約している前記ＤＭＡチャネルを示す予約送信ＤＭＡチャネル番号と、前記要求メッセージを送信するための前記ＤＭＡチャネルが動作中か否かを示す予約完了レジスタを持つ送信チャネル制御部を備え、
送信者のＣＰＵは、該要求メッセージ送信バッファと送信のためのＤＭＡチャネルを確保するために該送信チャネル制御部の該予約完了レジスタを読み出し、動作中で無い要求メッセージ送信バッファがあり、且つ、動作中で無いＤＭＡチャネルがある場合に送信者のＣＰＵがメッセージの送信が可能で、
前記送信チャネル制御部は、前記予約要求メッセージ送信バッファ番号が示す前記要求メッセージ送信バッファに、前記要求メッセージを送信するときに使用可能な前記ＤＭＡチャネルを示す予約送信ＤＭＡチャネル番号を転送することを特徴とするバスコントローラ。
【請求項２】
前記許可メッセージ受信制御部は、前記複数のＤＭＡチャネルのレジスタを、前記予約送信ＤＭＡチャネル番号で選択することを特徴とする請求項１に記載のバスコントローラ。
【請求項３】
前記要求メッセージ送信制御部は、予約した要求メッセージ送信バッファの送信データ長を予約したＤＭＡチャネルに転送する請求項１または２に記載のバスコントローラ。
【請求項４】
前記送信チャネル制御部は、予約したＤＭＡチャネルのデータ長レジスタに設定された送信データ長を、予約した要求メッセージ送信バッファに転送することを特徴とする請求項１または２に記載のバスコントローラ。
【請求項５】
送信者と受信者の間でバスを介してデータメッセージの授受を行うための、送信制御部と受信制御部とを少なくとも有するバスコントローラであって、
送信制御部に設けられる複数の送信チャネルと受信制御部に設けられる複数の受信チャネルからなり、送信チャネルに設定されたデータをバスを介して受信チャネルに受信するための複数のＤＭＡチャネルを有し、
前記送信制御部は、
前記データメッセージの送信要求を受信者に伝える要求メッセージを記憶するための複数の要求メッセージ送信バッファを持つ要求メッセージ送信制御部と、
前記受信者から前記データメッセージの受信が可能であることを示す許可メッセージを受信する許可メッセージ受信制御部と、
前記受信者に送信すべき前記データメッセージを送信するデータメッセージ送信制御部と、
前記要求メッセージを送信するために予約している要求メッセージ送信バッファを示す予約要求メッセージ送信バッファ番号と、前記要求メッセージを送信するために予約している前記ＤＭＡチャネルを示す予約送信ＤＭＡチャネル番号と、前記要求メッセージを送信するための前記ＤＭＡチャネルが動作中か否かを示す予約完了レジスタを持つ送信チャネル制御部を備え、
送信者のＣＰＵは、該要求メッセージ送信バッファと送信のためのＤＭＡチャネルを確保するために該送信チャネル制御部の該予約完了レジスタを読み出し、動作中で無い要求メッセージ送信バッファがあり、且つ、動作中で無いＤＭＡチャネルがある場合に送信者のＣＰＵがメッセージの送信が可能で、
前記送信チャネル制御部は、前記予約要求メッセージ送信バッファ番号と前記予約送信ＤＭＡチャネル番号を持つ送信チャネルを複数有し、
前記複数の送信チャネルの前記予約要求メッセージ送信バッファ番号が示す前記要求メッセージ送信バッファに前記予約送信ＤＭＡチャネル番号を転送することを特徴とするバスコントローラ。
【請求項６】
前記送信チャネル制御部は、前記予約要求メッセージ送信バッファ番号と前記予約送信ＤＭＡチャネル番号を持つ送信チャネルを複数備え、該複数の送信チャネルの前記予約送信ＤＭＡチャネル番号で前記複数のＤＭＡチャネルのレジスタを選択することを特徴とする請求項５に記載のバスコントローラ。
【請求項７】
前記送信チャネル制御部は、前記予約要求メッセージ送信バッファ番号と前記予約送信ＤＭＡチャネル番号を持つ送信チャネルを複数備え、前記要求メッセージ送信制御部は、該複数の送信チャネルの前記予約要求メッセージ送信バッファ番号が示す前記要求メッセージ送信バッファの送信データ長を、複数の送信チャネルの前記予約ＤＭＡチャネル番号が示す前記ＤＭＡチャネルに転送することを特徴とする請求項５または６に記載のバスコントローラ。
【請求項８】
前記送信チャネル制御部は、前記予約要求メッセージ送信バッファ番号と前記予約送信ＤＭＡチャネル番号を持つ送信チャネルを複数備え、前記送信チャネル制御部は、該複数の送信チャネルの前記予約ＤＭＡチャネル番号が示すＤＭＡチャネルの送信データ長を、複数の送信チャネルの前記予約要求メッセージ送信バッファ番号が示す前記要求メッセージ送信バッファに転送することを特徴とする請求項５または６に記載のバスコントローラ。
【請求項９】
送信者と受信者の間でバスを介してデータメッセージの授受を行うための、送信制御部と受信制御部とを少なくとも有するバスコントローラであって、
送信制御部に設けられる複数の送信チャネルと受信制御部に設けられる複数の受信チャネルからなり、送信チャネルに設定されたデータをバスを介して受信チャネルに受信するための複数のＤＭＡチャネルを有し、
前記受信制御部は、
前記送信者からの前記受信者に対する前記データメッセージの送信要求を前記受信者に通知する要求メッセージを受信する要求メッセージ受信制御部と、
前記送信者に前記データメッセージを受信可能であることを通知する許可メッセージを記憶するための複数の許可メッセージ送信バッファを持つ許可メッセージ送信制御部と、
前記送信者から送信されてきた前記データメッセージを受信するデータメッセージ受信制御部と、
前記許可メッセージを送信するために予約している前記許可メッセージ送信バッファを示す予約許可メッセージ送信バッファ番号と、前記許可メッセージの送信に使用するために予約している前記ＤＭＡチャネルを示す予約受信ＤＭＡチャネル番号と、前記許可メッセージを送信するための前記ＤＭＡチャネルが動作中か否かを示す予約完了レジスタを有し、
受信者のＣＰＵは、該許可メッセージ送信バッファと受信のためのＤＭＡチャネルを確保するために該予約完了レジスタを読み出し、動作中で無い許可メッセージ送信バッファがあり、且つ、動作中で無いＤＭＡチャネルがある場合に受信者のＣＰＵがメッセージの受信が可能で、
前記受信チャネル制御部は、前記予約許可メッセージ送信バッファ番号が示す前記許可メッセージ送信バッファに、前記許可メッセージを送信するときに使用可能な前記ＤＭＡチャネルを示す予約受信ＤＭＡチャネル番号を転送することを特徴とするバスコントローラ。
【請求項１０】
前記データメッセージ受信制御部は、前記複数のＤＭＡチャネルのレジスタを、前記予約受信ＤＭＡチャネル番号で選択することを特徴とする請求項９に記載のバスコントローラ。
【請求項１１】
送信者と受信者の間でバスを介してデータメッセージの授受を行うための、送信制御部と受信制御部とを少なくとも有するバスコントローラであって、
送信制御部に設けられる複数の送信チャネルと受信制御部に設けられる複数の受信チャネルからなり、送信チャネルに設定されたデータをバスを介して受信チャネルに受信するための複数のＤＭＡチャネルを有し、
前記受信制御部は、
前記送信者からの前記受信者に対する前記データメッセージの送信要求を前記受信者に通知する要求メッセージを受信する要求メッセージ受信制御部と、
前記送信者に前記データメッセージを受信可能であることを通知する許可メッセージを記憶するための複数の許可メッセージ送信バッファを持つ許可メッセージ送信制御部と、
前記送信者から送信されてきた前記データメッセージを受信するデータメッセージ受信制御部と、
前記許可メッセージを送信するために予約している前記許可メッセージ送信バッファを示す予約許可メッセージ送信バッファ番号と、前記許可メッセージの送信に使用するために予約している前記ＤＭＡチャネルを示す予約受信ＤＭＡチャネル番号と、前記許可メッセージを送信するための前記ＤＭＡチャネルが動作中か否かを示す予約完了レジスタを有し、
受信者のＣＰＵは、該許可メッセージ送信バッファと受信のためのＤＭＡチャネルを確保するために該予約完了レジスタを読み出し、動作中で無い許可メッセージ送信バッファがあり、且つ、動作中で無いＤＭＡチャネルがある場合に受信者のＣＰＵがメッセージの受信が可能で、
前記受信チャネル制御部は、前記予約許可メッセージ送信バッファ番号と前記予約受信ＤＭＡチャネル番号を持つ受信チャネルを複数有し、
前記複数の受信チャネルの前記予約許可メッセージ送信バッファ番号が示す前記許可メッセージ送信バッファに前記予約受信ＤＭＡチャネル番号を転送することを特徴とするバスコントローラ。
【請求項１２】
前記受信チャネル制御部は、前記予約許可メッセージ送信バッファ番号と前記予約受信ＤＭＡチャネル番号を持つ受信チャネルを複数備え、
該複数の受信チャネルの前記予約受信ＤＭＡチャネル番号で前記複数のＤＭＡチャネルのレジスタを選択することを特徴とする請求項１１に記載のバスコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
システムバスを介して複数のボードが接続される情報処理装置において、システムバスを介する各ボード間のデータ転送を制御するバスコントローラに関する。
【０００２】
【従来の技術】
図１１は情報処理装置のシステム構成を示すブロック図である。情報処理装置はシステムバス１１０４を介して接続される１つまたは複数のプロセッサボード１１００、１１０１、Ｉ／Ｏボード１１０２、及びネットワークボード１１０３等で構成される。プロセッサボード１１００、１１０１は送信されてきたデータの処理等を行うＣＰＵ等から成っており、システムバス１１０４を介して通信を行うことにより、処理すべきデータあるいは処理済みのデータの送受信を行う。例えば、プロセッサボード１１００で処理されたデータをプロセッサボード１１０１に送信し、更に処理を加えてＩ／Ｏボード１１２あるいはネットワークボード１１０３に送信する。Ｉ／Ｏボード１１０２にはキーボード、プリンタ、及びディスプレイ等の入出力装置が接続されており、Ｉ／Ｏボード１１０２は、入力装置からデータを入力したり、出力装置に上記処理されたデータを出力する。ネットワークボード１１０３は、ＬＡＮ等の通信網に処理済のデータを送信したり、該通信網から処理すべきデータを受信したりするものである。
【０００３】
図１２は上記各ボード１１００〜１１０３の内部構成を示すブロック図である。
ボード１２００は、ＣＰＵ１２０１、プログラムメモリ１２０４、データメモリ１２０２、バスコントローラ１２０５、さらには必要に応じて外部インタフェース１２０３から構成される。
【０００４】
これらボード１２００の各構成要素１２０１〜１２０５は、ボード内でデータ等のやり取りを行うためにボード内バス１２０６によって互いに接続されている。ＣＰＵ１２０１は、プログラムメモリ１２０４からプログラムを読み込んで、そのプログラムを実行し、データメモリ１２０２内のデータを処理する。同図のボードがプロセッサボードである場合には、外部インタフェース１２０３は設けられず、ＣＰＵ１２０１で処理されたデータはデータメモリ１２０２に記憶された後、バスコントローラ１２０５を介してシステムバス１１０４に送出される。
【０００５】
同図のボード１２００がＩ／Ｏボード１１０２あるいはネットワークボード１１０３である場合には、外部インタフェース１２０３が設けられ、ＣＰＵ１２０１で処理されたデータ等は所定のフォーマットに従って外部インタフェース１２０３に送信され、ここから、プリンタ、ディスプレイや、ＬＡＮ等のネットワークへと送出される。また、キーボード等の入力装置から入力されたデータが、外部インタフェース１２０３を介してＣＰＵ１２０１に入力される。
【０００６】
ところで、システムバス１１０４を通してボードからボードへ高速に大量のデータを転送する手法としてメッセージパッシングが一般的に知られている。
図１３にメッセージパッシングによるデータ転送プロトコルを示す。メッセージパッシングは、送信者ボード（以下、送信者という）１２００Ｓがデータメモリ１２０２Ｓ中に予め送信したいデータをセットしておき、受信者ボード（以下、受信者という）１２００Ｒへ要求メッセージを送信し、受信者はデータメモリ１２０２Ｒ中にデータを受信するためのバッファを確保して許可メッセージを送信者へ送信し、バッファを確保できないときは拒否メッセージを送信し、送信者は許可メッセージを受信したら送信データをデータメモリ１２０２Ｓから読み出し、データメッセージに組み込んで受信者へ送信し、受信者は受信したデータメッセージからデータを抜き出しデータメモリ１２０２Ｒのバッファへ格納していくものである。尚、送信者が受信者から拒否メッセージを受け取った場合には、データ送信を待機状態にしておき、受信者から許可メッセージが送信されてくるまで待つ。
【０００７】
図１４（ａ）〜（ｄ）はメッセージパッシングによるデータ転送のために用いられる各メッセージ１３０１〜１３０４のフォーマットである。ボードＩＤは、ボードを識別する固有のＩＤである。相手ボードＩＤは、各メッセージの宛先のボードを指定するもので、メッセージを受信することの出来るすべてのボードは、メッセージがシステムバスに送信されると、自己のボードＩＤと比較し、一致していたらそのメッセージを受信する。自己ボードＩＤは、各メッセージの発信者自身のボードＩＤである。従って、図１４（ａ）の要求メッセージ１３０１及び図１４（ｄ）のデータメッセージ１３０４では、相手ボードＩＤは受信者ボードＩＤで、自己ボードＩＤは送信者ボードＩＤであり、図１４（ｂ）の許可メッセージ１３０２及び図１４（ｃ）の拒否メッセージ１３０４では、相手ボードＩＤは送信者ボードＩＤで、自己ボードＩＤは受信者ボードＩＤである。
【０００８】
データＩＤはデータを識別するためのＩＤである。送信者データＩＤは送信者から見たデータＩＤであり、送信者は要求メッセージ１３０１に載せて受信者に通知し、受信者は応答する許可メッセージ１３０２または拒否メッセージ１３０３に載せて送信者に返送し、送信者は受信するメッセージ内の送信者データＩＤを基に転送しようとしたデータＩＤに対する許可メッセージ１３０２または拒否メッセージ１３０３であることを確認する。受信者データＩＤは受信者から見たデータＩＤであり、受信者は許可メッセージ１３０２に載せて送信者に通知し、送信者はデータメッセージ１３０４に載せて受信者に返送し、受信者は受信するメッセージ内の受信者データＩＤを基に転送を待っているデータＩＤに対するデータメッセージ１３０４であることを確認する。
【０００９】
要求メッセージコード、許可メッセージコード、拒否メッセージコード、データメッセージコードは、それぞれ要求メッセージ、許可メッセージ、拒否メッセージ、データメッセージを示すコードである。送信データ長は送信者が送信を要求しているデータの長さである。
【００１０】
図１５はメッセージパッシングを実行するボードのブロック図である。このボードにおけるデータ転送のための一連の動作は以下の通りである。
（１）送信者ＣＰＵは送信データをデータメモリ中に格納する。
（２）送信者ＣＰＵは送信ＤＭＡチャネルのステータスレジスタを読み出して送信ＤＭＡチャネルが動作中でないことを確認する。動作中でないときは送信データのアドレスをアドレスレジスタへ、送信データのデータ長をデータ長レジスタへ格納し、スタートコマンドをスタートレジスタへ書き込む。送信ＤＭＡチャネルが動作中なら動作完了まで待つ。
（３）送信者ＣＰＵは要求メッセージ送信制御部に受信者（相手）ボードＩＤ、送信者（自己）ボードＩＤ、要求メッセージコード、送信者（自己）データＩＤ、送信データ長を格納する。
（４）送信者ＣＰＵは要求メッセージ送信制御部にスタートコマンドを与え、要求メッセージ送信制御部は要求メッセージをシステムバスへ送信する。
（５）受信者バスコントローラはシステムバス上の要求メッセージの受信者ボードＩＤが自己のボードＩＤと一致していたらその要求メッセージをシステムバスから受信し、要求メッセージ受信制御部に格納し、受信者ＣＰＵに通知する。
（６）受信者ＣＰＵは要求メッセージ受信制御部の要求メッセージコードから要求メッセージを受信したことを認識し、送信データ長からその長さの受信バッファをデータメモリに確保する。
（７）受信者ＣＰＵは受信ＤＭＡチャネルのステータスレジスタを読み出して受信ＤＭＡチャネルが動作中でないことを確認する。動作中でないときは受信バッファのアドレスをアドレスレジスタへ、送信データ長をデータ長レジスタへ格納し、スタートコマンドをスタートレジスタへ書き込む。受信ＤＭＡチャネルが動作中なら動作完了まで待つ。
（８）受信者ＣＰＵは許可メッセージ送信制御部に送信者（相手）ボードＩＤ、受信者（自己）ボードＩＤ、許可メッセージコード、受信者（自己）データＩＤ、送信者（相手）データＩＤを格納する。ここで送信者ボードＩＤおよび送信者データＩＤは、上記（５）における要求メッセージで受信したものである。
（９）受信者ＣＰＵは許可メッセージ送信制御部にスタートコマンドを与え、許可メッセージ送信制御部は許可メッセージをシステムバスへ送信する。
（１０）送信者バスコントローラはシステムバス上の許可メッセージの送信者ボードＩＤが自己のボードＩＤと一致していたらその許可メッセージをシステムバスから受信し、許可メッセージ受信制御部は許可メッセージの送信者データＩＤが要求メッセージ送信制御部の送信者データＩＤと一致していたら許可メッセージを受信し、送信者ボードＩＤ、受信者ボードＩＤ、受信者データＩＤをデータメッセージ送信制御部に転送する。
（１１）データメッセージ送信制御部は予め設定しておいた送信ＤＭＡチャネルにＤＭＡ要求を与える。送信ＤＭＡチャネルは送信データをデータメモリから読み出し、その送信データをデータメッセージ送信制御部内の送信データバッファに格納する。データメッセージ送信制御部はデータメッセージをシステムバスへ送信する。
（１２）送信ＤＭＡチャネルは１回のデータ転送毎にアドレスレジスタをインクリメント（＋１）し、データ長レジスタをデクリメント（−１）し、データ長レジスタが０になると動作を停止し、ステータスレジスタに動作完了を示すコードを設定しＣＰＵへ通知する。
（１３）受信者バスコントローラはシステムバス上のデータメッセージの受信者ボードＩＤが自己のボードＩＤと一致していたらデータメッセージを受信し、データメッセージ受信制御部はデータメッセージの受信者データＩＤが許可メッセージ送信制御部の受信者データＩＤと一致していたらデータメッセージを受信する。
（１４）データメッセージ受信制御部は予め設定しておいた受信ＤＭＡチャネルにＤＭＡ要求を与える。受信ＤＭＡチャネルはデータメッセージ受信制御部内の受信データバッファから受信データを読み出し、その受信データをデータメモリ内の受信バッファに格納する。
（１５）受信ＤＭＡチャネルは１回のデータ転送毎にアドレスレジスタをインクリメントし、データ長レジスタをデクリメントし、データ長レジスタが０になると動作を停止し、ステータスレジスタに動作完了を示すコードを設定し、ＣＰＵへ通知する。
（１６）送信者ＣＰＵ及び受信者ＣＰＵは、各々ステータスレジスタの動作完了表示によりメッセージ転送の終了を認識し、データ転送の完了とＤＭＡチャネルの動作完了を知る。
【００１１】
一般にデータの転送要求は複数のボードで多重に発生するが、以上の従来構成では、あるボードが同一時点で１つの送信と１つの受信を実行できるだけなので、ボードで複数のデータ転送要求が発生した場合、ソフトウェアでデータ転送を蓄積し、データ転送の完了を待って逐次的に次のデータ転送を実行する必要があり、ソフトウェアが煩雑になる。
【００１２】
同様に、複数のデータ転送要求が１つのボードに集中した場合２つめ以降のデータ転送要求は拒否されるので、送信者側でデータ転送要求を蓄積しなければならない。
【００１３】
また、１データずつ逐次的にデータ転送を実行するので、転送性能が低い。
このような欠点を解決する方法として特願平９−７０３２号の方法が知られている。
【００１４】
図１６、１７は、特願平９−７０３２号のバスコントローラを搭載したボードのブロック図である。図１５との違いは４つのチャネルを有するＤＭＡをバスコントローラに内蔵し、更に、バスコントローラの送信制御部、受信制御部に、それぞれ送信ＤＭＡチャネル制御部および受信ＤＭＡチャネル制御部を追加している点である。
【００１５】
図１８（ａ）〜（ｄ）は、特願平９−７０３２号のメッセージパッシングで用いる各メッセージのフォーマットを示す図である。図１４（ａ）〜（ｄ）に示されているメッセージとの違いは各メッセージのデータＩＤ内にＤＭＡチャネル番号が追加されている点である。データＩＤ内部にＤＭＡチャネル番号が含まれるので、メッセージを受け渡す相互のボードはＤＭＡチャネル番号を認識しても良いし、ＤＭＡチャネル番号を認識せずにデータＩＤのみとして認識しても良い。
【００１６】
図１６、１７で、送信ＤＭＡチャネル制御部は上記（１）〜（１６）で説明した動作のうち、
（２）において、送信ＤＭＡチャネルの確保を制御し、（７）において受信ＤＭＡチャネル制御部は受信ＤＭＡチャネルの確保を制御する動作が新たに追加される。
【００１７】
送信者のＤＭＡチャネル確保動作は以下のようになる。
（１）送信者ＣＰＵはＤＭＡチャネルを確保するために送信ＤＭＡチャネル制御部の予約送信ＤＭＡチャネル番号レジスタを読み出す。
（２）送信ＤＭＡチャネル制御部はＤＭＡチャネルに動作中でないものがあるかどうかを調べ、動作中でないＤＭＡチャネル番号を返す。
（３）送信者ＣＰＵは読み出したＤＭＡチャネル番号を要求メッセージ送信制御部の送信者（自己）ＤＭＡチャネル番号に格納する。
【００１８】
送信者のデータ送信動作は以下のようになる。
（１）許可メッセージを受信する許可メッセージ受信制御部は、システムバス上の許可メッセージの送信者データＩＤおよび送信者ＤＭＡチャネル番号が要求メッセージ送信制御部の送信者データＩＤおよび送信者ＤＭＡチャネル番号と一致していたらその許可メッセージをシステムバスから受信し、その許可メッセージ内の送信者ボードＩＤ、受信者ボードＩＤ、受信者データＩＤ、受信者ＤＭＡチャネル番号、送信者ＤＭＡチャネル番号をデータメッセージ送信制御部に転送する。
（２）データメッセージ送信制御部は、許可メッセージ受信制御部から受信した送信者ＤＭＡチャネル番号によりＤＭＡチャネルを選択し、該ＤＭＡチャネルへＤＭＡ要求を与える。
【００１９】
受信者のＤＭＡ確保動作は以下のようになる。
（１）受信者ＣＰＵはＤＭＡチャネルを確保するために受信ＤＭＡチャネル制御部の予約受信ＤＭＡチャネル番号レジスタを読み出す。
（２）受信ＤＭＡチャネル制御部はＤＭＡチャネルに動作中でないものがあるかどうかを調べ、動作中でないＤＭＡチャネル番号を返す。
（３）受信者ＣＰＵは読み出したＤＭＡチャネル番号を許可メッセージ送信制御部の受信者（自己）ＤＭＡチャネル番号に格納する。
【００２０】
受信者のデータ受信動作は以下のようになる。
（１）データメッセージを受信するデータメッセージ受信制御部は、システムバス上のデータメッセージの受信者データＩＤ及び受信者ＤＭＡチャネルが許可メッセージ送信制御部の受信者データＩＤおよび受信者ＤＭＡチャネル番号と一致していたら、そのデータメッセージをシステムバスから受信する。
（２）データメッセージ受信制御部は上記受信したデータメッセージ内の受信者ＤＭＡチャネル番号によりＤＭＡチャネルを選択し、該ＤＭＡチャネルへＤＭＡ要求を与える。
【００２１】
以上のように特願平９−７０３２号の発明では、バスコントローラがＤＭＡチャネル確保を自動的に行って、そのＤＭＡチャネルの番号をＣＰＵに通知するため、ＣＰＵの負担が軽減され転送性能が向上する。またＤＭＡチャネル番号を相手に通知してＤＭＡチャネルの選択を自動的に行うので、複数の送信データまたは受信バッファとＤＭＡを準備しておくことができ転送性能が向上する。
【００２２】
【発明が解決しようとする課題】
これらの方法では、送信者ＣＰＵは確保した送信ＤＭＡチャネルのアドレスレジスタにデータのアドレスを、データ長レジスタに送信データのデータ長を格納し、また確保した送信ＤＭＡチャネル番号を要求メッセージ送信制御部の送信者（自己）ＤＭＡチャネル番号に格納するので、これらの処理を行うために、送信者ＣＰＵは送信ＤＭＡチャネル番号を意識する必要があり、そのため、送信者ＣＰＵの処理が煩雑になると同時に、上記一連の処理を送信者ＣＰＵが実行するので転送性能が低いという欠点がある。
【００２３】
また、同様に、受信者ＣＰＵは確保した受信ＤＭＡチャネルのアドレスレジスタに受信バッファのアドレスを、データ長レジスタに送信データのデータ長を格納し、また確保した受信ＤＭＡチャネル番号を許可メッセージ送信制御部の受信者（自己）ＤＭＡチャネル番号に格納するので、これらの処理を行うために、受信ＣＰＵは受信ＤＭＡチャネル番号を意識する必要があり、そのため、受信者ＣＰＵの処理が煩雑になると同時に、上記一連の処理を受信者ＣＰＵが処理するので転送性能が低いという欠点がある。
【００２４】
本発明の課題は、ＤＭＡチャネル番号に従って処理する煩雑さをなくし、システムバスを介するボード間のデータ転送の性能を向上させ、またＤＭＡチャネル数の増加に対するハードウェアの増加を減らすことのできるバスコントローラを提供することである。
【００２５】
本発明の送信者側でのバスコントローラは、送信者と受信者の間でバスを介してデータメッセージの授受を行うための、送信制御部と受信制御部とを少なくとも有するバスコントローラであって、複数のＤＭＡチャネルを有し、前記送信制御部は、前記データメッセージの送信要求を受信者に伝える要求メッセージを記憶するための複数の要求メッセージ送信バッファを持つ要求メッセージ送信制御部と、前記受信者から前記データメッセージの受信が可能であることを示す許可メッセージを受信する許可メッセージ受信制御部と、前記受信者に送信すべき前記データメッセージを送信するデータメッセージ送信制御部と、前記要求メッセージを送信するために使用する予約をした要求メッセージ送信バッファを示す予約要求メッセージ送信バッファ番号と、前記要求メッセージを送信する場合に使用の予約をした前記ＤＭＡチャネルを示す予約送信ＤＭＡチャネル番号と、前記要求メッセージを送信するために使用可能な前記ＤＭＡチャネルが予約されたか否かを示す予約完了レジスタを持つ送信チャネル制御部を備えることを基本構成とする。
【００２６】
本発明の受信者側でのバスコントローラは、送信者と受信者の間でバスを介してデータメッセージの授受を行うための、送信制御部と受信制御部とを少なくとも有するバスコントローラであって、複数のＤＭＡチャネルを有し、前記受信制御部は、前記送信者からの前記受信者に対する前記データメッセージの送信要求を前記受信者に通知する要求メッセージを受信する要求メッセージ受信制御部と、前記送信者に前記データメッセージを受信可能であることを通知する許可メッセージを記憶するための複数の許可メッセージ送信バッファを持つ許可メッセージ送信制御部と、前記送信者から送信されてきた前記データメッセージを受信するデータメッセージ受信制御部と、前記許可メッセージを送信するために使用する予約をした前記許可メッセージ送信バッファを示す予約許可メッセージ送信バッファ番号と、前記許可メッセージの送信に使用する予約をした前記ＤＭＡチャネルを示す予約受信ＤＭＡチャネル番号と、前記許可メッセージの送信に使用可能な前記ＤＭＡチャネルが予約されたか否かを示す予約完了レジスタ有することを基本構成とする。
【００２７】
本発明は上記の基本構成において、予約したメッセージ送信バッファ及びＤＭＡチャネルの番号をバスコントローラに保持し、バスコントローラが該予約したＤＭＡチャネル番号を該予約したメッセージバッファに格納し、またＣＰＵが該予約されたＤＭＡチャネルにアドレス及びデータ長等を設定するとき、バスコントローラが該予約したＤＭＡチャネル番号で上記設定を行うＤＭＡチャネルを選択することを特徴とする。
【００２８】
また本発明は、複数のＤＭＡチャネルの一部のハードウェアをまとめて一本化し、それを、該複数のＤＭＡチャネルで共有させる。
本発明によれば、ＣＰＵがＤＭＡチャネル番号を認識する必要がなく、ＣＰＵの処理が単純となりデータの転送性能が向上する。
【００２９】
また本発明によれば、ＤＭＡチャネル数の増加に対するハードウェアの増加を削減する。
【００３０】
【発明の実施の形態】
図１は、本発明の第１の実施形態である送信チャネル制御部を持つバスコントローラを搭載したボードのブロック図である。
【００３１】
図１６の構成と比較すると、送信ＤＭＡチャネル制御部の代わりに送信チャネル制御部が設けられている。送信チャネル制御部は、送信チャネル予約完了レジスタと、予約要求メッセージ送信バッファ番号と、予約送信ＤＭＡチャネル番号を備えている。また、要求メッセージ送信制御部、許可メッセージ受信制御部、及びデータメッセージ送信制御部それぞれが、要求メッセージ送信バッファ、許可メッセージ受信バッファ、データメッセージ送信バッファを複数備えている。このように、複数バッファを備えることにより、１つのメッセージ送信の完了を待つことなく次のメッセージも送信処理を続けて行うことが出来るようになるのでデータの転送効率が向上するものである。
【００３２】
第１の実施形態に基づいた送信者のＤＭＡチャネル確保動作は以下のようになる。
（１）送信者ＣＰＵは要求メッセージ送信バッファと送信ＤＭＡチャネルの確保をするために送信チャネル制御部の送信チャネル予約完了レジスタを読み出す。
（２）送信チャネル制御部は要求メッセージ送信バッファに動作中でないものがあるかどうか調べ、動作中でない要求メッセージ送信バッファ番号を予約要求メッセージ送信バッファ番号に格納する。
（３）送信チャネル制御部はＤＭＡチャネルに動作中でないものがあるかどうかを調べ、動作中でないＤＭＡチャネル番号を予約送信ＤＭＡチャネル番号に格納する。
（４）送信チャネル制御部は（２）、（３）が共に予約できたときだけ送信ＣＰＵの送信チャネル予約完了レジスタの読み出し要求に対して“１”を返し、（２）、（３）のいづれかが予約できないときは“０”を返す。
（５）送信者ＣＰＵは読み出した送信チャネル予約完了レジスタの値が“１”のときメッセージ送信可能であることを認識する。
（６）送信チャネル制御部は予約要求メッセージ送信バッファ番号が示す要求メッセージバッファの送信者（自己）ＤＭＡチャネル番号に、予約送信ＤＭＡチャネル番号を格納する。
【００３３】
以上のように、第１の実施形態によれば、送信者ＣＰＵは予約したＤＭＡチャネル番号を認識する必要がなく、送信チャネル制御部が要求メッセージバッファにＤＭＡチャネル番号を格納するので、送信者ＣＰＵの処理が単純になりデータの転送性能が向上する。
【００３４】
この後の送信処理は従来と同じであり、以下に示すようになる。
（７）送信者ＣＰＵは要求メッセージ送信制御部の上記（２）の処理で確保された要求メッセージ送信バッファに受信者（相手）ボードＩＤ、送信者（自己）ボードＩＤ、要求メッセージコード、送信者（自己）データＩＤ、送信データ長を格納する。
（８）送信者ＣＰＵは要求メッセージ送信制御部にスタートコマンドを与え、要求メッセージ送信制御部は上記処理で確保された要求メッセージ送信バッファの内容に基づいて要求メッセージをシステムバスへ送信する。
（９）送信者バスコントローラはシステムバス上の許可メッセージの送信者ボードＩＤが自己のボードＩＤと一致していたら、その許可メッセージをシステムバスから受信し、許可メッセージ受信制御部は許可メッセージの送信者データＩＤが要求メッセージ送信制御部の上記（２）の処理で確保された要求メッセージ送信バッファ内の送信者データＩＤと一致していたら許可メッセージを受信し、該許可メッセージ内の送信者ボードＩＤ、受信者ボードＩＤ、受信者データＩＤ及び受信者ＤＭＡチャネル番号をデータメッセージ送信制御部に転送する。更に、許可メッセージ受信制御部は、該許可メッセージ内の送信者（自己）ＤＭＡチャネル番号に基づいて、該ＤＭＡチャネル番号を有するＤＭＡチャネルへＤＭＡ要求を出す。
（１０）該ＤＭＡ要求を受けたＤＭＡチャネルはデータメモリから送信データを読み出し、その送信データを（９）で送信者ボードＩＤ、受信者ボードＩＤ、受信者データＩＤが格納されたデータメッセージ送信バッファの送信データバッファに格納する。そして、データメッセージ送信制御部は、データメッセージをシステムバスへ送信する。
【００３５】
図２は、本発明の第２の実施形態である受信チャネル制御部を持つバスコントローラを搭載したボードのブロック図である。
図１７との違いは、受信ＤＭＡチャネル制御部の代わりに受信チャネル制御部が設けられている。受信チャネル制御部は、受信チャネル予約完了レジスタと、予約許可メッセージ送信バッファ番号と、予約受信ＤＭＡチャネル番号を備えている。
【００３６】
第２の実施形態による受信者のＤＭＡチャネル確保動作は以下のようになる。（１）受信者ＣＰＵは許可メッセージ送信バッファと受信ＤＭＡチャネルを確保するために受信チャネル制御部の受信チャネル予約完了レジスタを読み出す。
（２）受信チャネル制御部は許可メッセージ送信バッファに動作中でないものがあるかどうか調べ、動作中でない許可メッセージ送信バッファ番号を予約許可メッセージ送信バッファ番号に格納する。
（３）受信チャネル制御部はＤＭＡチャネルに動作中でないものがあるかどうかを調べ、動作中でないＤＭＡチャネル番号を予約受信ＤＭＡチャネル番号に格納する。
（４）受信チャネル制御部は（２）、（３）が共に予約できたときだけ受信ＣＰＵの受信チャネル予約完了レジスタの読み出し要求に対して“１”を返し、（２）、（３）のいづれかが予約できないときは“０”を返す。
（５）受信者ＣＰＵは読み出した受信チャネル予約完了レジスタの値が“１”のときメッセージ受信可能であることを認識する。
（６）受信チャネル制御部は予約許可メッセージ送信バッファ番号が示す許可メッセージバッファの受信者（自己）ＤＭＡチャネル番号に、予約受信ＤＭＡチャネル番号を格納する。
【００３７】
以上のように、第２の実施形態によれば、受信者ＣＰＵは予約したＤＭＡチャネル番号を認識する必要がなく、受信チャネル制御部が許可メッセージバッファにＤＭＡチャネル番号を格納するので、受信者ＣＰＵの処理が単純になりデータの転送性能が向上する。
【００３８】
受信者側でのその他の処理は従来と同じであり、以下のようになる。
（−１）受信者バスコントローラは要求メッセージの受信者ボードＩＤが自己のボードＩＤと一致していたら要求メッセージを受信し、その要求メッセージを要求メッセージ受信制御部の空いている要求メッセージ受信バッファに格納し、受信者ＣＰＵに通知する。
（０）受信者ＣＰＵは要求メッセージ受信制御部の要求メッセージコードから要求メッセージを受信したことを認識し、送信データ長からその長さの受信バッファをデータメモリに確保する。
（（−１）、（０）は、（１）より前の段階の処理であることを示している。）
上記（１）〜（６）の処理を行う。
（７）受信者ＣＰＵは許可メモリ送信制御部の上記（２）で確保された許可メッセージ送信バッファに送信者（相手）ボードＩＤ、受信者（自己）ボードＩＤ、許可メッセージコード、受信者（自己）データＩＤ、送信者（相手）データＩＤ、及び送信者ＤＭＡチャネル番号を格納する。
（８）受信者ＣＰＵは許可メッセージ送信制御部にスタートコマンドを与え、許可メッセージ送信制御部は、上記（６）、（７）で使用された許可メッセージ送信バッファに設定された許可メッセージをシステムバスへ送信する。
（９）受信者バスコントローラは送信者から送られてきたデータメッセージの受信者ボードＩＤが自己のボードＩＤと一致していたらデータメッセージを受信し、データメッセージ受信制御部はデータメッセージの受信データＩＤが許可メッセージ送信制御部の受信者データＩＤと一致していたらデータメッセージを受信する。
（１０）データメッセージ受信制御部は、上記受信したデータメッセージ内の受信者（自己）ＤＭＡチャネル番号に対応するＤＭＡチャネルにＤＭＡ要求を出す。該ＤＭＡチャネルは、対応するデータメッセージ受信バッファの受信データバッファからデータを読み出し、そのデータをデータメモリの受信バッファに格納する。
【００３９】
図３は、本発明の第３の実施形態である送信チャネルを複数持つバスコントローラを搭載したボードのブロック図である。
図１との違いは、送信チャネル制御部が予約要求メッセージ送信バッファ番号と、予約送信ＤＭＡチャネル番号を持つ送信チャネルを複数備えている点である。従って、複数のメッセージ送信要求が生じたときに、１つのＤＭＡチャネル確保動作が終わるのを待つことなく処理を続けることが出来る。
【００４０】
送信チャネル制御部の動作は、送信チャネルが複数あることを除いては図１で説明したものと同じであるので説明を省略する。
図４は、本発明の第４の実施形態である受信チャネルを複数持つバスコントローラを搭載したボードのブロック図である。図２との違いは、受信チャネル制御部が予約許可メッセージ送信バッファ番号と、予約受信ＤＭＡチャネル番号を持つ受信チャネルを複数備えている点である。この構成も同様に複数の受信チャネルを有していることにより、１度に複数のメッセージが送信されてきた場合にもＤＭＡチャネル確保のために初めのメッセージだけを受け付けて、他を待たせるような処理を行わなくても、１度に複数のメッセージを受け付けることが出来る。
【００４１】
受信チャネル制御部の動作は、受信チャネルば複数あることを除いては図２で説明したものと同じであるので説明を省略する。
図５は、本発明の第５の実施形態である予約送信ＤＭＡチャネル番号で送信データをデータメモリから送信データバッファに転送するＤＭＡチャネルを選択するバスコントローラを搭載したボードのブロック図である。図３との違いは、送信チャネルの予約送信ＤＭＡチャネル番号で上記送信データの転送を行うＤＭＡチャネルを選択する点である。
【００４２】
従って、送信者ＣＰＵがＤＭＡチャネルのアドレスレジスタに送信データのアドレスを、データ長レジスタに送信データのデータ長を書き込むとき、それらが書込まれるＤＭＡチャネルが予約送信ＤＭＡチャネル番号によって、自動的に選択されるので、送信者ＣＰＵは予約したＤＭＡチャネル番号を認識する必要がなく、送信者ＣＰＵの処理が単純になりデータの転送性能が向上する。
【００４３】
その他の処理は図１あるいは図３で説明したものと同様であるので省略する。図６は、本発明の第６の実施形態である予約受信ＤＭＡチャネル番号で受信データをデータメッセージ受信バッファからデータメモリ内の受信バッファに転送するＤＭＡチャネルを選択するバスコントローラを搭載したボードのブロック図である。図４との違いは、受信チャネルの予約受信ＤＭＡチャネル番号で上記受信データの転送を行うＤＭＡチャネルを選択する点である。
【００４４】
従って、受信者ＣＰＵがＤＭＡチャネルのアドレスレジスタに受信バッファのアドレスを、データ長レジスタに受信バッファのデータ長を書き込むとき、それらが書込まれるＤＭＡチャネルが予約受信ＤＭＡチャネル番号によって自動的に選択されるので、受信者ＣＰＵは予約したＤＭＡチャネル番号を認識する必要がなく、受信者ＣＰＵの処理が単純になりデータの転送性能が向上する。
【００４５】
その他の処理は図２あるいは図４で説明したものと同様であるので説明を省略する。
図７は、本発明の第７の実施形態である要求メッセージ送信バッファの送信データ長をＤＭＡチャネルのデータ長レジスタに転送するバスコントローラを搭載したボードのブロック図である。図５との違いは、送信者ＣＰＵが予約した要求メッセージ送信バッファに書き込んだ送信データ長を、要求メッセージ送信制御部が予約したＤＭＡチャネルのデータ長レジスタに転送する点である。これにより、送信者ＣＰＵはＤＭＡチャネルにデータ長を書き込む必要がなく、送信者ＣＰＵの処理が単純になりデータの転送性能が向上する。
【００４６】
その他は、図５と同様であるので説明を省略する。
図８は、本発明の第８の実施形態であるＤＭＡチャネルのデータ長レジスタから、送信データ長を要求送信メッセージバッファへ転送するバスコントローラを搭載したボードのブロック図である。図５との違いは、送信者ＣＰＵが予約したＤＭＡチャネルに書き込んだ送信データ長を、該ＤＭＡチャネルが予約した要求メッセージ送信バッファの送信データ長に転送する点である。これにより送信者ＣＰＵは要求メッセージ送信バッファにデータ長を書き込む必要がなく、送信者ＣＰＵの処理が単純になりデータの転送性能が向上する。
【００４７】
その他は、図５と同様であるので説明を省略する。
図９は、本発明の第９の実施形態であるＤＭＡチャネルの構成を示している。上述した第１〜第８の実施形態では、ＤＭＡチャネルのアドレスレジスタはＤＭＡ転送を行うたびに＋１する加算カウンタで構成され、データ長レジスタはＤＭＡ転送を行う度に−１する減算カウンタで構成される。これに対し、第９の実施形態では、ＤＭＡチャネルのアドレスレジスタおよびデータ長レジスタを単純なレジスタとし、加算カウンタおよび減算カウンタを集約している。この構成では、各ＤＭＡチャネルがデータの転送を行う前に、各ＤＭＡチャネルのアドレスレジスタの内容をアドレスカウンタへ、データ長レジスタの内容をデータ長カウンタへ転送し、ＤＭＡ転送を終了した後アドレスカウンタの内容を各ＤＭＡチャネルのアドレスレジスタへ、データ長カウンタの内容をデータ長レジスタへ転送する。これにより加算カウンタ（アドレスカウンタが該当）および減算カウンタ（データ長カウンタが該当）を１組設ければよく、ハードウェアを減らすことが出来る。
【００４８】
図１０は、本発明の第１０の実施形態であるリトライ信号で書き戻しをしないＤＭＡチャネルの構成を示している。図９との違いは、リトライ信号が送信制御部からＤＭＡチャネルに入力されていることである。この構成では、データ転送の異常でＤＭＡ転送のやり直しを行う必要があることを示すリトライ信号で、アドレスカウンタおよびデータ長カウンタの内容のＤＭＡチャネルへの転送を無効にし、ＤＭＡ転送をやり直すようにする。
【００４９】
【発明の効果】
本発明によれば、ＣＰＵがＤＭＡチャネル番号を認識する必要がなくあるため、ＣＰＵの処理が単純となりデータの転送性能が向上する。
【００５０】
また複数のＤＭＡチャネルのハードウェアをまとめたので、ハードウェアを削減できる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態である送信チャネル制御部を持つバスコントローラを搭載したボードのブロック図である。
【図２】本発明の第２の実施形態である受信チャネル制御部を持つバスコントローラを搭載したボードのブロック図である。
【図３】本発明の第３の実施形態である送信チャネルを複数持つバスコントローラを搭載したボードのブロック図である。
【図４】本発明の第４の実施形態である受信チャネルを複数持つバスコントローラを搭載したボードのブロック図である。
【図５】本発明の第５の実施形態である予約送信ＤＭＡチャネル番号でＤＭＡチャネルを選択するバスコントローラを搭載したボードのブロック図である。
【図６】本発明の第６の実施形態である予約受信ＤＭＡチャネル番号でＤＭＡチャネルを選択するバスコントローラを搭載したボードのブロック図である。
【図７】本発明の第７の実施形態である要求メッセージ送信バッファの送信データ長を転送するバスコントローラを搭載したボードのブロック図である。
【図８】本発明の第８の実施形態であるＤＭＡチャネルの送信データ長を転送するバスコントローラを搭載したボードのブロック図である。
【図９】本発明の第９の実施形態であるＤＭＡチャネルの構成を示す図である。
【図１０】本発明の第１０の実施形態であるリトライ信号で書き戻しをしないＤＭＡチャネルの構成を示す図である。
【図１１】情報処理装置のブロック図である。
【図１２】ボードのブロック図である。
【図１３】メッセージパッシングによるデータ転送プロトコルを示す。
【図１４】メッセージパッシングのための各メッセージのフォーマットである。
【図１５】メッセージパッシングを実行するボードのブロック図である。
【図１６】従来のバスコントローラを搭載したボードのブロック図（その１）である。
【図１７】従来のバスコントローラを搭載したボードのブロック図（その２）である。
【図１８】従来のメッセージフォーマットである。
【符号の説明】
１１００、１１０１      プロセッサボード
１１０２      Ｉ／Ｏボード
１１０３      ネットワークボード
１１０４      システムバス
１２００      ボード
１２０１      ＣＰＵ
１２０２      データメモリ
１２０３      外部インタフェース
１２０４      プログラムメモリ
１２０５      バスコントローラ
１２０６      ボード内バス
【図１】
0003799741.tif 000002
【図２】
0003799741.tif 000003
【図３】
0003799741.tif 000004
【図４】
0003799741.tif 000005
【図５】
0003799741.tif 000006
【図６】
0003799741.tif 000007
【図７】
0003799741.tif 000008
【図８】
0003799741.tif 000009
【図９】
0003799741.tif 000010
【図１０】
0003799741.tif 000011
【図１１】
0003799741.tif 000012
【図１２】
0003799741.tif 000013
【図１３】
0003799741.tif 000014
【図１４】
0003799741.tif 000015
【図１５】
0003799741.tif 000016
【図１６】
0003799741.tif 000017
【図１７】
0003799741.tif 000018
【図１８】
0003799741.tif 000019