(57)【要約】【課題】リード完了直後にマージしたデータを記憶部へ送信できるようにしてデータマージ転送の高速化を図ること。【解決手段】２種類の異なるプロトコルのバスを接続するブリッジ装置２であって、少なくとも他方のバスが固定長のデータしか扱わないシステムにおいて、一方のバス側から前記他方のバス側の記憶部４にデータの書き込みを行うとき、前記一方のバス側のデータ長が前記他方のバス側の固定長に満たない場合には、先ず、前記他方のバス側の前記記憶部４から固定長のデータをリードして前記一方のバス側から送信されたデータとマージした後、該マージしたデータを前記他方のバス側の前記記憶部４に書き込む際、処理部１１は、前記記憶部４から固定長のデータをリードするためのリードリクエストの発行に続けて前記記憶部４に書き込むためのライトバックリクエストを発行する。【選択図】        図１
2005267139.tif 000002
【特許請求の範囲】
【請求項１】
２種類の異なるプロトコルのバスを接続するブリッジ装置であって、
情報の処理を行う処理部を備え、
少なくとも他方のバスが固定長のデータしか扱わないシステムにおいて、一方のバス側から前記他方のバス側の記憶部にデータの書き込みを行うとき、前記一方のバス側のデータ長が前記他方のバス側の固定長に満たない場合には、
先ず、前記他方のバス側の前記記憶部から固定長のデータをリードして前記一方のバス側から送信されたデータとマージした後、該マージしたデータを前記他方のバス側の前記記憶部に書き込む際、
前記処理部は、前記記憶部から固定長のデータをリードするためのリードリクエストの発行に続けて前記記憶部に書き込むためのライトバックリクエストを発行することを特徴としたブリッジ装置。
【請求項２】
前記一方のバスが任意のデータ長を扱うのに対し前記他方のバスが固定長のデータしか扱わないことを特徴とする請求項１記載のブリッジ装置。
【請求項３】
一方のバス側からプロトコルの異なる固定長のデータしか扱わない他方のバス側の記憶部にデータの書き込みを行うとき、前記一方のバス側のデータ長が前記他方のバス側の固定長に満たない場合には、前記記憶部から固定長のデータをリードするためのリードリクエストの発行に続けて前記記憶部に書き込むためのライトバックリクエストを発行する処理と、
前記他方のバス側の前記記憶部から固定長のデータをリードする処理と、
該リードした固定長のデータを前記一方のバス側から送信されたデータとマージする処理と、
該マージしたデータを前記他方のバス側の前記記憶部に書き込む処理とを、
コンピュータを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータのシステム等で利用される、互いに異なる２種類のプロトコルのバス（ＢＵＳ）を接続するブリッジ装置及びプログラムに関する。
【背景技術】
【０００２】
従来、コンピュータのシステムで利用されているブリッジ装置では、構造が互いに異なる２種類のデータをマージ（結合）して送信する処理が行われている。図４は従来のリクエストシーケンスの説明図である。図４において、左側がブリッジ装置側の処理、右側がＣＰＵ（中央処理装置）側の処理であり、ブリッジ装置が次の手順でデータをマージして送信していた（例えば、非特許文献１参照）。
【０００３】
ここで、ブリッジ装置は、異なるプロトコルのバスＡとバスＢを接続するものであり、バスＡがＩ／Ｏ（入出力）側で任意のデータ長、バスＢがＣＰＵ側で固定のデータ長を扱うものとして考える。例えばバスＢが６４バイト（Byte）の固定長に対してバスＡから１０バイトのデータをメモリに書き込む場合の説明をする。
【０００４】
1)  ブリッジ装置からバスＢ（ＣＰＵ側）にread（リード）リクエストを発行し（Ｓ１１）、ＣＰＵからread ack（読み取り許可）を受け固定長のバスＢ（ＣＰＵ側）にあるメモリから、書き込まれる１０バイト分を含むアドレスにある６４バイト分のデータをブリッジ装置に読み込む（Ｓ１２）。
【０００５】
2)  バスＡ（Ｉ／Ｏ側）から書き込む１０バイトをブリッジ装置上で前記1)で読み込んだ６４バイトのデータとマージ（結合）する。
【０００６】
3)  ブリッジ装置からwrite back（ライトバック）リクエストを発行し（Ｓ１３）、ＣＰＵからのwrite ack （書き込み許可）を待って（Ｓ１４）マージした６４バイトのデータをバスＢへ送信する（メモリに書き戻す）。
【非特許文献１】"U2PTM  UPA to PCI Interface User's Manual"  (米国) 1997年 3月、サンマイクロシステムズ社(A Sun Microsystems,Inc.Business) p.58-60(4.2.1.3 Less than 64 Byte DMA Write to Memory)
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記従来のものにおいては次のような課題があった。
【０００８】
従来、データをマージして転送（データマージ転送）をするときには、readリクエストを発行しリード（read）が完了してからwrite backリクエストを発行していた。このためリードが完了してからＣＰＵからのwrite ack を受け取りwrite backが実行されるまでに時間がかかっていた。
【０００９】
本発明は、上記従来の課題を解決し、あらかじめreadリクエストと合わせてwrite backリクエストも発行しておき、リード完了直後にマージしたデータをＣＰＵ側のメモリへ送信できるようにしてデータマージ転送の高速化を図ることを目的とする。
【課題を解決するための手段】
【００１０】
図１は本発明のシステム構成の説明図であり、図１中、１ａ、１ｂはスロット、２はブリッジ装置、３はＣＰＵ（中央処理装置）、４は記憶部（メモリ）、１１は処理部、１２はマージバッファ（merge buffer）、１３はリクエスト受信部、１４はリクエスト・キューである。
【００１１】
本発明は、上記の課題を解決するため次のように構成した。
【００１２】
（１）：２種類の異なるプロトコルのバスを接続するブリッジ装置２であって、情報の処理を行う処理部１１を備え、少なくとも他方のバスが固定長のデータしか扱わないシステムにおいて、一方のバス側から前記他方のバス側の記憶部４にデータの書き込みを行うとき、前記一方のバス側のデータ長が前記他方のバス側の固定長に満たない場合には、先ず、前記他方のバス側の前記記憶部４から固定長のデータをリードして前記一方のバス側から送信されたデータとマージした後、該マージしたデータを前記他方のバス側の前記記憶部４に書き込む際、前記処理部１１は、前記記憶部４から固定長のデータをリードするためのリードリクエストの発行に続けて前記記憶部４に書き込むためのライトバックリクエストを発行する。このため、リード完了直後にマージしたデータをＣＰＵ側（他方のバス側）の記憶部４へ送信でき転送処理の高速化を図ることができる。
【００１３】
（２）：前記（１）のブリッジ装置において、前記一方のバスが任意のデータ長を扱うのに対し前記他方のバスが固定長のデータしか扱わないものとする。このため、一方のバス側の任意のデータ長のデータを他方のバス側（ＣＰＵ側）の記憶部４に高速に書き込むことができる。
【発明の効果】
【００１４】
本発明によれば次のような効果がある。
【００１５】
（１）：記憶部から固定長のデータをリードするためのリードリクエストの発行に続けて記憶部に書き込むためのライトバックリクエストを発行するため、リード完了直後にマージしたデータを他方のバス側の記憶部へ送信でき転送処理の高速化を図ることができる。
【００１６】
（２）：一方のバスが任意のデータ長を扱うのに対し他方のバスが固定長のデータしか扱わないものとするため、一方のバス側の任意のデータ長のデータを他方のバス側の記憶部に高速に書き込むことができる。
【００１７】
（３）：一方のバス側からプロトコルの異なる固定長のデータしか扱わない他方のバス側の記憶部にデータの書き込みを行うとき、前記一方のバス側のデータ長が前記他方のバス側の固定長に満たない場合には、前記記憶部から固定長のデータをリードするためのリードリクエストの発行に続けて前記記憶部に書き込むためのライトバックリクエストを発行する処理と、前記他方のバス側の前記記憶部から固定長のデータをリードする処理と、該リードした固定長のデータを前記一方のバス側から送信されたデータとマージする処理と、該マージしたデータを前記他方のバス側の前記記憶部に書き込む処理とを、コンピュータを実行させるためのプログラムまたはプログラムを記録したコンピュータ読取可能な記録媒体とするため、このプログラムをコンピュータにインストールすることで、転送処理の高速化を図ることができるブリッジ装置を容易に提供することができる。
【発明を実施するための最良の形態】
【００１８】
本発明は、２種の異なるプロトコルのバス（バスＡ、Ｂ）を接続するブリッジ装置（例えば、片方（バスＡ）が任意のデータ長を扱うのに対して他方（バスＢ）が固定長のパケットしか扱わないシステムに於いて）で、バスＡ側からバスＢ側に対して書込を行なうとき任意長のパケットを固定長のパケットに編集して送信する。このときバスＡから送信するデータ長がバスＢの固定長に満たない場合には、まず、バスＢ側の送信先メモリから固定長のデータをリードしてブリッジ装置内部でバスＡから送信するデータとマージした後、マージされて固定長になったデータをバスＢ上のメモリに書き込む(write back)。以上の一連の動作に於いて初めのreadリクエストの発行直後に続けてwrite backリクエストを発行しておくようにするものである。
【００１９】
（１）：システム構成の説明
図１は本発明のシステム構成の説明図であり、スロット１ａ、１ｂは、ネットワーク、ハードディスク等が接続されるバスＡに接続されるスロット（例えば、ＰＣＩスロット）である。ブリッジ装置２は、互いに異なる２種類のプロトコルのバス（バスＡ、Ｂ）を接続するものである。ＣＰＵ３は、バスＢに接続されるコンピュータ等の中央処理装置である。記憶部（メモリ）４は、バスＢに接続されるブリッジ装置２とＣＰＵ３とが共有しているメモリである。ブリッジ装置２の処理部１１は、マージ処理等のブリッジ装置の処理を行うものである。ブリッジ装置２のマージバッファ１２は、マージ処理を行うための記憶部である。ブリッジ装置２のリクエスト受信部１３は、バスＡ側からのリクエストを受信するものである。ブリッジ装置２のリクエスト・キュー１４は、これから実行されるリクエストをまとめて保管しておく（記憶手段）待ち行列である。バスＡは、バスＢとは異なるプロトコルのバス（例えば、任意長）である。バスＢは、バスＡとは異なるプロトコル（固定長）のバスである。
【００２０】
（２）：リクエストシーケンスの説明
図２はリクエストシーケンスの説明図である。図２において、左側がブリッジ装置２側の処理、右側がＣＰＵ（中央処理装置）３側の処理であり、ブリッジ装置２が次1)〜3)の手順でデータをマージして送信する。
【００２１】
ここで、ブリッジ装置２は、バスＡとバスＢを接続するものであり、バスＡがＩ／Ｏ（入出力）側で任意のデータ長、バスＢがＣＰＵ側で固定のデータ長を扱うものとして考える。例えばバスＢが６４バイト（Byte）の固定長に対してバスＡから１０バイトのデータを記憶部４に書き込む場合の説明をする。
【００２２】
1)  ブリッジ装置２の処理部１１は、バスＢ（ＣＰＵ側）にreadリクエストとwrite back（書き戻し）リクエストを連続して発行し（Ｓ１、Ｓ２）、固定長のバスＢ（ＣＰＵ側）にある記憶部（メモリ）４から、書き込まれる１０バイト分を含むアドレスにある６４バイト分のデータをブリッジ装置２のマージバッファ１２に読み込む（Ｓ３）。
【００２３】
2)  処理部１１は、バスＡ（Ｉ／Ｏ側）から書き込む１０バイトをブリッジ装置２上で前記1)で読み込んだ６４バイトのデータとマージバッファ１２を用いてマージ（結合）する。
【００２４】
3)  処理部１１は、ＣＰＵ３からのwrite ack （書き込み許可）を受信したら（Ｓ４）、マージした６４バイトのデータをバスＢへ送信する（メモリに書き戻す）。
【００２５】
なお、ＣＰＵ３側では、readリクエストとwrite backリクエストをブリッジ装置２から連続して受信したら、先ずread ackを発行し、ブリッジ装置２のリードが終わったら直ちにwrite ack を発行するようにする。
【００２６】
このように、複数のリクエストをあらかじめブリッジ装置２から送信するためには、ＣＰＵ３側でも複数のリクエストを受け付けられる必要があるが、最近では一般的に可能なものである。
【００２７】
（３）：ブリッジチップ（bridge chip ）の説明
図３はブリッジチップを用いたシステム構成の説明図である。図３において、ネットワーク、ハードディスク等が接続されるＰＣＩ（Peripheral Component Interconnect ）スロット１ａ、１ｂは、ＰＣＩバス（バスＡ：Ｉ／Ｏ側）に接続され、ＰＣＩバスはブリッジチップ２と接続される。ブリッジチップ２は、互いに異なる２種類のプロトコルのバス（バスＡ、Ｂ）を接続するチップ状のブリッジ回路（ブリッジ装置）であり、バスＢでＣＰＵ３とメモリ（Memory）４に接続される。バスＢは、アドレスラインＡＤＤＲ（メモリのアドレスとＣＰＵへのリクエストのライン）とデータラインＤＡＴＡに別れている。
【００２８】
ブリッジチップ２には、処理部１１とマージバッファ１２が設けてある。処理部１１は、マージ処理等のブリッジ回路の処理を行うものである。マージバッファ１２は、マージ処理を行うための記憶部である。バスＡは任意長バスであり、バスＢは６４バイトの固定長のバスである。
【００２９】
このブリッジチップ２のリクエストシーケンスも図２と同様に行われる。ここで、バスＢが６４バイト（Byte）の固定長に対してバスＡから１０バイトのデータをメモリ４に書き込む場合の説明をする。
【００３０】
1)  ブリッジチップ２の処理部１１がＰＣＩバス（バスＡ）から１０バイトのデータをメモリ４に書き込むリクエストを受信し、１０バイトのデータをマージバッファ１２に格納する。次に、ブリッジチップ２の処理部１１からバスＢにreadリクエストとwrite backリクエストを連続して発行し、ＣＰＵからread ackを受け固定長のバスＢにあるメモリ４から、書き込まれる１０バイト分を含むアドレスにある６４バイト分のデータをブリッジチップ２内のマージバッファ１２に読み込む。
【００３１】
2)  ブリッジチップ２内の処理部１１は、マージバッファ１２の書き込む１０バイトのデータと前記1)で読み込んだ６４バイトのデータとをマージバッファ１２を使用してマージする。
【００３２】
3)  ブリッジチップ２がＣＰＵ３からのwrite ack （書き込み許可）を受信したら、処理部１１は、マージした６４バイトのデータをバスＢへ送信してメモリ４に書き戻す。
【００３３】
なお、ＣＰＵ３側では、readリクエストとwrite backリクエストをブリッジチップ２から連続して受信したら、先ず、read ackを発行し、ブリッジチップ２のリードが終わったら直ちにwrite ack を発行するようにする。
【００３４】
また、Ｉ／Ｏ側（バスＡ）からメモリ４に６４バイト以上のデータを書き込む場合、ブリッジチップ２は、メモリ４からリード（マージ処理）することなく６４バイト分のデータをメモリに書き込む。そして、残りが６４バイト未満となり、６４バイト未満のデータを書き込む場合にマージ処理を行うため、readリクエストとwrite backリクエストをブリッジチップ２から連続して発行するものである。
【００３５】
更に、上記の例では、バスＡが任意長で、バスＢが固定長の説明をしたが、バスＡとバスＢが共に異なる長さの固定長であっても良い。この場合、Ｉ／Ｏ側からメモリ４のデータを読み取る場合にも、本発明のマージ処理を行う必要がある。
【００３６】
このように、従来Ｉ／Ｏ側からＣＰＵ側のメモリへデータマージ転送を行なう場合、一端、readリクエストを発行してリードを完了してから、write backリクエストを発行してマージしたデータをＣＰＵ側のメモリに送っていたが、この場合、リード完了後、書き戻し（write back）まで（リクエストを発行してから許可になるまで）時間がかかっていた。本発明によれば、あらかじめreadリクエストと合わせてwrite backリクエストも発行するため、リード完了直後（リード完了後すぐにＣＰＵからwrite ack がくる）にマージしたデータをＣＰＵ側のメモリへ送信できるため高速化が図れるものである。
【００３７】
（４）：プログラムインストールの説明
処理部１１、マージバッファ１２、リクエスト受信部１３、リクエスト・キュー１４等はプログラムで構成でき、主制御部（ＣＰＵ）が実行するものであり、主記憶に格納されているものである。このプログラムは、コンピュータで処理されるものである。このコンピュータは、主制御部、主記憶、ファイル装置、表示装置等の出力装置、入力装置などのハードウェアで構成されている。
【００３８】
このコンピュータに、本発明のプログラムをインストールする。このインストールは、フロッピィ、光磁気ディスク等の可搬型の記録（記憶）媒体に、これらのプログラムを記憶させておき、コンピュータが備えている記録媒体に対して、アクセスするためのドライブ装置を介して、或いは、ＬＡＮ等のネットワークを介して、コンピュータに設けられたファイル装置にインストールされる。
【図面の簡単な説明】
【００３９】
【図１】本発明のシステム構成の説明図である。
【図２】本発明のリクエストシーケンスの説明図である。
【図３】本発明のブリッジチップを用いたシステム構成の説明図である。
【図４】従来のリクエストシーケンスの説明図である。
【符号の説明】
【００４０】
１ａ、１ｂ  スロット
２  ブリッジ装置
３  ＣＰＵ（中央処理装置）
４  記憶部（メモリ）
１１  処理部
１２  マージバッファ
１３  リクエスト受信部
１４  リクエスト・キュー
【図１】
2005267139.tif 000003
【図２】
2005267139.tif 000004
【図３】
2005267139.tif 000005
【図４】
2005267139.tif 000006