(57)【要約】【課題】データを高効率で中継することができるデータ中継装置及び方法を提供する。【解決手段】データ読出し要求が示す先頭アドレスから所定の先読みサイズ分のデータを記憶装置から取得してこれを一時記憶データとして一時的に記憶し、後続のデータ読出し要求がある毎に当該一時記憶データの先頭位置から順に、当該後続のデータ読出し要求の種別に対応する伝送データサイズ分のデータを読出してこれをデータ処理装置へ中継する。【選択図】図１
2011182314.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータバスを介して到来したデータ処理装置からのデータ読出し要求に応じて記憶装置に記憶されているデータを第２のデータバスを介して取得しこれを前記第１のデータバスを介して前記データ処理装置へ中継する中継部を含むデータ中継装置であって、
前記データ読出し要求が示す先頭アドレスから所定の先読みサイズ分のデータを前記記憶装置から取得してこれを一時記憶データとして一時的に記憶する一時記憶部を含み、
前記中継部は、後続のデータ読出し要求がある毎に前記一時記憶データの先頭位置から順に、前記後続のデータ読出し要求の種別に対応する伝送データサイズ分のデータを読出してこれを前記データ処理装置へ中継することを特徴とするデータ中継装置。
【請求項２】
前記データ読出し要求の種別に基づいて前記先読みサイズを設定する先読みサイズ設定部を更に含むことを特徴とする請求項１に記載のデータ中継装置。
【請求項３】
前記記憶装置に記憶されているデータに対応する通信プロトコルの種別に基づいて前記先読みサイズを設定する先読みサイズ設定部を更に含むことを特徴とする請求項１に記載のデータ中継装置。
【請求項４】
前記先読みサイズ設定部は、前記先読みサイズを前記伝送データサイズよりも大きいサイズに設定することを特徴とする請求項２又は３に記載のデータ中継装置。
【請求項５】
第１のデータバスを介して到来したデータ処理装置からのデータ読出し要求に応じて記憶装置に記憶されているデータを第２のデータバスを介して取得しこれを前記第１のデータバスを介して前記データ処理装置へ中継する中継ステップを含むデータ中継方法であって、
前記データ読出し要求が示す先頭アドレスから所定の先読みサイズ分のデータを前記記憶装置から取得してこれを一時記憶データとして一時的に記憶する一時記憶ステップを含み、
前記中継ステップにおいては、前記データ要求がある毎に前記一時記憶データのうちの、前記データ要求の種別に対応する伝送データサイズ分のデータを、前記一時記憶データの先頭位置から順に前記データ処理装置へ中継することを特徴とするデータ中継方法。
【請求項６】
前記データ読出し要求の種別に基づいて前記先読みサイズを設定する先読みサイズ設定ステップを更に含むことを特徴とする請求項５に記載のデータ中継方法。
【請求項７】
前記記憶装置に記憶されているデータに対応する通信プロトコルの種別に基づいて前記先読みサイズを設定する先読みサイズ設定ステップを更に含むことを特徴とする請求項５に記載のデータ中継方法。
【請求項８】
前記先読みサイズ設定ステップにおいては、前記先読みサイズを前記伝送データサイズよりも大きいサイズに設定することを特徴とする請求項６又は７に記載のデータ中継方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データバス間でデータを中継するデータ中継装置及び方法に関する。
【背景技術】
【０００２】
例えばサーバやパーソナルコンピュータにおけるデータ処理においては、互いに仕様の異なる２つのバス間でデータを送受信する場合がある。図１３は、ローカルバス２３０とＰＣＩ−Ｅｘｐｒｅｓｓバス２５０との間でデータを中継する例えばハブなどの従来のデータ中継装置２１０をＣＰＵ２２０及びメモリ２４０と共に表すブロック図である。データ中継装置２１０は、ＣＰＵ２２０からの書込み要求及び書込みデータをメモリ２４０へ中継する書込み中継処理や、ＣＰＵ２２０からの読出し要求をメモリ２４０へ中継しメモリ２４０からの読出しデータをＣＰＵ２２０へ中継する読出し中継処理を行う。ＰＣＩ−Ｅｘｐｒｅｓｓバスを介してデータを送受信する装置については、例えば特許文献１に開示されている。
【０００３】
図１４は、データ中継装置２１０による書込み中継処理におけるデータの送受信を表すシーケンス図である。データ中継装置２１０は、ＣＰＵ２２０からの書込み要求（同図中の「リクエスト」）及び当該要求に対応するデータが到来する毎にこれらをメモリ２４０へ中継する（ステップＳ９０１〜Ｓ９０６）。メモリからはデータを受信したことを通知するＡＣＫ信号がデータ中継装置２１０へ送信される（Ｓ９０７及びＳ９０８）。
【０００４】
図１５は、データ中継装置２１０による読出し中継処理におけるデータの送受信を表すシーケンス図である。データ中継装置２１０は、ＣＰＵ２２０からの読出し要求（同図中の「リクエスト」）をメモリ２４０へ中継した後（Ｓ９１１及びＳ９１２）、当該要求に対応する読出しデータがメモリ２４０から到来するのを待つ。その後、データ中継装置２１０は、メモリ２４０からの読出しデータをＣＰＵ２２０へ中継すると共にメモリ２４０へＡＣＫを返信する（Ｓ９１３及びＳ９１４）。ＣＰＵ２２０は、読出し要求（ステップＳ９１１）に対応するデータを受信した後に（ステップＳ９１４）、後続のデータについての読出し要求（ステップＳ９２１）をデータ中継装置２１０に発する。データ中継装置２１０は、後続の読出し要求に応じて同様の処理を行う（Ｓ９２１〜Ｓ９４４）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２６７７７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
図１４に示したように、書込み処理を行う場合には、データ中継装置２１０は、ＣＰＵ２２０からの書込み要求及び当該要求に対応するデータを順次メモリ２４０へ中継するので、書込みについての余分な時間（いわゆるオーバーヘッド）が生じない。
【０００７】
これに対して、図１５に示したように、読出し処理を行う場合には、データ中継装置２１０は、ＣＰＵ２２０から読出し要求が発せられる毎にメモリ２４０からの読出しデータが到来するのを待つので、例えば４つの連続する読出し処理１〜４を行う場合には（Ｓ９１１〜Ｓ９４４）、相当の時間を要するという問題があった。例えば１０２４ｂｙｔｅのデータを１ｂｙｔｅ毎に読出す場合、ＣＰＵ２２０からの読出し要求がローカルバス２３０上に１０２４回送信されることになるので、メモリ２４０からデータが送信されるまでの期間（例えばＳ９１２〜Ｓ９１３までの期間）×１０２４の時間が読出しについての余分な時間（すなわちオーバーヘッド）となる。なお、読出しデータの到来前に後続の読出し要求を発した場合には、データ中継装置２１０側で読出し済みデータの処理前に次々と読出しデータが到来することになり、データ処理が複雑化することから、データ中継装置２１０は、読出しデータが到来するのを待って後続の読出し要求を発する。
【０００８】
本発明は上記した如き問題点に鑑みてなされたものであって、読出し要求側の装置が読出し要求に対応するデータを受信してから後続のデータについての読出し要求を発する通信形態においても、データを高効率で中継することができるデータ中継装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明によるデータ中継装置は、第１のデータバスを介して到来したデータ処理装置からのデータ読出し要求に応じて記憶装置に記憶されているデータを第２のデータバスを介して取得しこれを前記第１のデータバスを介して前記データ処理装置へ中継する中継部を含むデータ中継装置であって、前記データ読出し要求が示す先頭アドレスから所定の先読みサイズ分のデータを前記記憶装置から取得してこれを一時記憶データとして一時的に記憶する一時記憶部を含み、前記中継部は、後続のデータ読出し要求がある毎に前記一時記憶データの先頭位置から順に、前記後続のデータ読出し要求の種別に対応する伝送データサイズ分のデータを読出してこれを前記データ処理装置へ中継することを特徴とする。
【００１０】
本発明によるデータ中継方法は、第１のデータバスを介して到来したデータ処理装置からのデータ読出し要求に応じて記憶装置に記憶されているデータを第２のデータバスを介して取得しこれを前記第１のデータバスを介して前記データ処理装置へ中継する中継ステップを含むデータ中継方法であって、前記データ読出し要求が示す先頭アドレスから所定の先読みサイズ分のデータを前記記憶装置から取得してこれを一時記憶データとして一時的に記憶する一時記憶ステップを含み、前記中継ステップにおいては、前記データ要求がある毎に前記一時記憶データのうちの、前記データ要求の種別に対応する伝送データサイズ分のデータを、前記一時記憶データの先頭位置から順に前記データ処理装置へ中継することを特徴とする。
【発明の効果】
【００１１】
本発明によるデータ中継装置及び方法によれば、読出し要求側の装置が読出し要求に対応するデータを受信してから後続のデータについての読出し要求を発する通信形態においても、データを高効率で中継することができる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施例のデータ中継装置をＣＰＵ等のブロックと共に表すブロック図である。
【図２】読出し中継処理ルーチンを表すフローチャートである。
【図３】図２の読出し中継処理におけるデータの送受信を表すシーケンス図である。
【図４】第２の実施例のデータ中継装置をＣＰＵ等のブロックと共に表すブロック図である。
【図５】先読みサイズ設定処理ルーチンを表すフローチャートである。
【図６】（ａ）は、図５のルーチンにより、先読みサイズを先読み最大サイズに設定した場合の読出し中継処理におけるデータの送受信を表すシーケンス図である。（ｂ）は、同ルーチンにより、先読みサイズを要求対応サイズに応じて設定した場合の読出し中継処理におけるデータの送受信を表すシーケンス図である。
【図７】先読み最大サイズが２５６ｂｙｔｅに設定されている場合に５１２ｂｙｔｅのデータを読出す場合における読出し中継処理のデータの送受信を表すシーケンス図である。
【図８】先読み最大サイズが５１２ｂｙｔｅに設定されている場合に５１２ｂｙｔｅのデータを読出す場合における読出し中継処理のデータの送受信を表すシーケンス図である。
【図９】第３の実施例のデータ中継装置をＣＰＵ等のブロックと共に表すブロック図である。
【図１０】プロトコル種別と先読みデータサイズとの対応を示すサイズ対応テーブルを表す図である。
【図１１】先読み最大サイズ設定処理ルーチンを表すフローチャートである。
【図１２】（ａ）は、図１１のルーチンにより、現在設定サイズよりも大きい取得サイズを先読み最大サイズとして設定する場合の読出し中継処理におけるデータの送受信を表すシーケンス図である。（ｂ）は、同ルーチンにより、現在設定サイズよりも小さい取得サイズを先読み最大サイズとして設定する場合の読出し中継処理におけるデータの送受信を表すシーケンス図である。
【図１３】従来のデータ中継装置を表すブロック図である。
【図１４】図１３のデータ中継装置による書込み中継処理におけるデータの送受信を表すシーケンス図である。
【図１５】図１３のデータ中継装置による読出し中継処理におけるデータの送受信を表すシーケンス図である。
【発明を実施するための形態】
【００１３】
以下、本発明に係る実施例について添付の図面を参照しつつ詳細に説明する。
【００１４】
＜第１の実施例＞
図１は本実施例のデータ中継装置１０をＣＰＵ（データ処理装置）２０等のブロックと共に表すブロック図である。
【００１５】
データ中継装置１０は、ＣＰＵ２０とメモリ（記憶装置）４０との間で送受信されるデータを、ローカルバス（第１のデータバス）３０及びＰＣＩ−Ｅｘｐｒｅｓｓバス（第２のデータバス）５０を介して中継する例えばハブ（Ｈｕｂ）などの中継装置である。データ中継装置１０は、ローカルバス３０を介してＣＰＵ２０との間でデータを中継し、ＰＣＩ−Ｅｘｐｒｅｓｓバス５０を介してメモリ４０との間でデータを中継する。データ中継装置１０は、ローカルバス３０からＰＣＩ−Ｅｘｐｒｅｓｓバス５０へデータを伝送する場合には、ローカルバス３０からのデータをパケットに変換してこれをＰＣＩ−Ｅｘｐｒｅｓｓバス５０へ伝送する。データ中継装置１０は、中継部１１と、一時記憶部１２と、を含む。
【００１６】
中継部１１は、ＣＰＵ２０とメモリ（記憶装置）４０との間で送受信されるデータを中継するものであり、例えばマイクロプロセッサにより構成される。一時記憶部１２は、中継部１１がＰＣＩ−Ｅｘｐｒｅｓｓバス５０を介してメモリ４０から取得した読出しデータを一時的に記憶する例えばＲＡＭ等のメモリである。
【００１７】
詳細には、中継部１１は、ＣＰＵ２０からローカルバス３０を介してデータの書込み要求（以下、単に書込み要求と称する）、データの読出し要求（以下、単に読出し要求と称する）、又は書込みデータを受信した場合には、これらをパケットに変換してＰＣＩ−Ｅｘｐｒｅｓｓバス５０を介してメモリ４０へ送信する。また、中継部１１は、メモリ４０からＰＣＩ−Ｅｘｐｒｅｓｓバス５０を介して読出しデータを受信した場合には、これを一時記憶部１２に一時的に記憶させ、その後、これを取り出してローカルバス３０を介してＣＰＵ２０へ送信する。
【００１８】
ＣＰＵ２０は、メモリ４０からデータを取得して演算処理等を施し、また、演算処理等を施して得られたデータをメモリ４０へ記憶させる等のデータ処理を実行するデータ処理装置である。ＣＰＵ２０は、ローカルバス３０に接続されている。ＣＰＵ２０は、そのデータ処理の進行に合わせて書込み要求や読出し要求を発する。ローカルバス３０が例えばＡＨＢ（Advanced High-performance Bus）の場合には、ＣＰＵ２０は、ＳＩＮＧＬＥ（４ｂｙｔｅ）、ＩＮＣ４（１６ｂｙｔｅ）、ＩＮＣ８（３２ｂｙｔｅ）及びＩＮＣ１６（６４ｂｙｔｅ）のいずれかの種別の書込み又は読出し要求コマンドを発する。
【００１９】
メモリ４０は、ＣＰＵ２０からのデータその他の各種データを記憶する例えばハードディスク等の記憶媒体である。メモリ４０は、ＰＣＩ−Ｅｘｐｒｅｓｓバス５０に接続されている。
【００２０】
図２は、データ中継装置１０による読出し中継処理ルーチンを表すフローチャートである。以下、図２を参照しつつ、データ中継装置１０による読出し中継処理について説明する。
【００２１】
中継部１１は、ＣＰＵ２０からの読出し要求を受信した場合に、当該読出し要求に対応する読出しデータが一時記憶部１２に記憶されているか否かを判別する（ステップＳ１０１）。
【００２２】
中継部１１は、一時記憶部１２を参照し、当該対応する読出しデータが一時記憶部１２に記憶されていないと判別した場合には、メモリ４０へ読出し要求を送信する（ステップＳ１０２）。詳細には、中継部１１は、ＣＰＵ２０からの読出し要求が示す先頭アドレスから所定の先読みデータサイズ分のデータを読出すべき旨の読出し要求をメモリ４０へ送信する。先読みデータサイズは、例えば２５６ｂｙｔｅなどのデータサイズであり、中継部１１に予め設定されている。読出し要求が示す先頭アドレスが例えば００００である場合、中継部１１は、アドレス００００から２５６ｂｙｔｅのデータサイズ分のデータの読出し要求をメモリ４０へ送信する。読出し要求は、パケット信号により送信される。このように、中継部１１は、ＣＰＵ２０からの読出し要求をパケットに変換してこれをメモリ４０へ送信する。
【００２３】
中継部１１は、読出し要求を送信した後、メモリ４０から当該読出し要求に対応する読出しデータが到来するのを待つ（Ｓ１０３）。中継部１１は、メモリ４０からの読出しデータを受信した場合には、当該読出しデータを一時記憶部１２に記憶する（Ｓ１０４）。中継部１１は、読出しデータをパケット信号で受信する。以下、一時記憶部１２に記憶されている、当該読出し要求に対応するデータを一時記憶データと称する。
【００２４】
次に、中継部１１は、一時記憶部１２に記憶されている一時記憶データの先頭位置から、読出し要求の種別に対応する伝送データサイズ分のデータを読出す（Ｓ１０５）。ローカルバス３０が例えばＡＨＢであり、読出し要求の種別がＩＮＣ１６（６４ｂｙｔｅ）である場合には、中継部１１は、一時記憶データの先頭位置から６４ｂｙｔｅ分のデータを読出す。
【００２５】
ステップＳ１０１において、中継部１１が、対応する読出しデータが一時記憶部１２に記憶されていると判別した場合にはステップＳ１０５の処理に直接移行し、上記と同様の処理を行う。
【００２６】
中継部１１は、一時記憶部１２から読出したデータをローカルバス３０を介してＣＰＵ２０へ送信する（Ｓ１０６）。中継部１１は、読出し要求がある毎に上記の読出し中継処理ルーチンを実行する。
【００２７】
図３は、読出し中継処理におけるデータの送受信を表すシーケンス図である。以下、図３を参照しつつ、データ中継装置１０による読出し中継処理について説明する。以下、中継部１１には、先読みデータサイズとして２５６ｂｙｔｅが予め設定されているものとする。また、ローカルバス３０はＡＨＢであり、ＣＰＵ２０からの各読出し要求の種別はＩＮＣ１６（６４ｂｙｔｅ）であるものとする。
【００２８】
先ず、ＣＰＵ２０から読出し要求（図３中の「リクエスト」）が送信され（ステップＳ２１１）、データ中継装置１０は、ローカルバス３０を介して当該読出し要求を受信する。
【００２９】
次に、データ中継装置１０は、一時記憶部１２を参照し、当該読出し要求に対応する読出しデータが一時記憶部１２に記憶されているか否かを判別する（図２のステップＳ１０１）。当該読出し要求は最初の要求であるので、データ中継装置１０は、対応する読出しデータが一時記憶部１２に記憶されていないと判別し、メモリ４０へ読出し要求を送信する（ステップＳ２１２、図２のステップＳ１０２）。詳細には、データ中継装置１０は、ＣＰＵ２０からの読出し要求が示す先頭アドレスから所定の先読みデータサイズ２５６ｂｙｔｅ分のデータを読出すべき旨の読出し要求をメモリ４０へ送信する。その後、データ中継装置１０は、メモリ４０からの読出しデータが到来するまで待機する（図２のステップＳ１０３）。
【００３０】
データ中継装置１０は、メモリ４０からの当該読出し要求に対応するデータサイズ２５６ｂｙｔｅの読出しデータを受信した場合に、当該読出しデータを一時記憶部１２に一時記憶データとして記憶する（図２のステップＳ１０４）。
【００３１】
次に、データ中継装置１０は、一時記憶部１２に記憶されている一時記憶データの先頭位置から、読出し要求の種別ＩＮＣ１６に対応する伝送データサイズ６４ｂｙｔｅ分のデータを読出し（図２のＳ１０５）、これをＣＰＵ２０へ送信する（Ｓ２１３、図２のＳ１０６）。ＣＰＵ２０は、データサイズ６４ｂｙｔｅの読出しデータを受信する（Ｓ２１４）。
【００３２】
続いて、ＣＰＵ２０は、後続の読出し要求ＩＮＣ１６（６４ｂｙｔｅ）をデータ中継装置１０へ送信する（Ｓ２２１）。データ中継装置１０は、ローカルバス３０を介して当該読出し要求を受信する（Ｓ２２２）。データ中継装置１０がステップ２１３において２５６ｂｙｔｅの読出しデータを取得し、このうちの６４ｂｙｔｅの読出しデータを送信したので、この時点においては、一時記憶部１２にはデータサイズ１９２ｂｙｔｅの一時記憶データが記憶されている。
【００３３】
データ中継装置１０は、一時記憶部１２を参照し、当該読出し要求に対応する読出しデータが一時記憶部１２に記憶されていると判別した場合に、一時記憶部１２に記憶されている一時記憶データの先頭位置から、読出し要求の種別ＩＮＣ１６に対応する伝送データサイズ６４ｂｙｔｅ分のデータを読出し、これをＣＰＵ２０へ送信する（Ｓ２２３）。ＣＰＵ２０は、データサイズ６４ｂｙｔｅの読出しデータを受信する（Ｓ２２４）。このように、読出し処理２（Ｓ２２１〜Ｓ２２４）においては、読出し処理１（Ｓ２１１〜Ｓ２１４）とは異なり、データ中継装置１０がメモリ４０へ読出し要求を送信することなく、読出しデータをＣＰＵ２０に送信する。
【００３４】
その後、ＣＰＵ２０が、後続の読出し要求ＩＮＣ１６（６４ｂｙｔｅ）をデータ中継装置１０へ送信した場合にも、データ中継装置１０は、上記したのと同様の処理を行う（読出し処理３（Ｓ２３１〜Ｓ２３４）、読出し処理４（Ｓ２４１〜Ｓ２４４））。このように、先読みデータサイズ２５６ｂｙｔｅ分の連続データについて、データ中継装置１０がメモリ４０にアクセスすることなく、読出しデータをＣＰＵ２０に送信できる。
【００３５】
上記したように、本実施例のデータ中継装置１０は、ＣＰＵ２０からの読出し要求を受信した場合に、当該読出し要求が示す先頭アドレスから所定の先読みサイズ分のデータをメモリ４０から取得する。データ中継装置１０は、当該データを一時記憶データとして一時期億部１２に記憶し、ＣＰＵ２０からの読出し要求がある毎に一時記憶データの先頭位置から、当該読出し要求に対応するデータサイズ分のデータを読出してこれをＣＰＵ２０へ中継する。
【００３６】
かかる構成により、連続する読出しデータについてのＣＰＵ２０からの２回目以降の読出し要求があった場合には、データ中継装置１０は、メモリ４０に読出し要求を送信することなく、当該読出し要求に対応する読出しデータをＣＰＵ２０に送信できる。例えば図１５に示される従来例における１回の読出し処理の読出しデータサイズが６４ｂｙｔｅでありその読出しに要する時間を１ｄｔとすると、２５６ｂｙｔｅ分のデータを読み出すには４回分の読出し時間４ｄｔを要する。これに対して本実施例のデータ中継装置１０によれば、図３に示されるように２５６ｂｙｔｅ分のデータをＣＰＵ２０に送信する場合であっても読出し時間は１ｄｔ程度で済むので、従来の装置に比較して３ｄｔ時間も短縮することができる。なお、ＲＡＭ等のキャッシュメモリである一時記憶部１２からのデータ読出し時間は１ｄｔ時間に比較して大幅に小さいので、読出し処理２以降におけるデータ中継装置１０からＣＰＵ２０への読出しデータの送信時間は無視できる程度の時間である。
【００３７】
このように、本実施例のデータ中継装置１０によれば、読出し要求側の装置（データ中継装置１０）が読出し要求に対応するデータを受信してから後続のデータについての読出し要求を発する通信形態においても、データ読み出しの処理速度を従来に比較して大幅に向上させ、データを高効率で中継することができる。
【００３８】
＜第２の実施例＞
図４は本実施例のデータ中継装置１０をＣＰＵ２０等のブロックと共に表すブロック図である。以下、第１の実施例とは異なる点について主に説明する。
【００３９】
本実施例のデータ中継装置１０は、先読みサイズ設定部１３を更に含む。先読みサイズ設定部１３は、ＣＰＵ２０からの読出し要求の種別に基づいて先読みサイズを設定するものであり、例えばマイクロプロセッサなどで構成される。
【００４０】
図５は、先読みサイズ設定部１３による先読みサイズ設定処理ルーチンを表すフローチャートである。先読みサイズ設定処理ルーチンは、図２に示される読出し中継処理ルーチンのステップＳ１０１とＳ１０２の間で実行されるルーチンである。以下、ローカルバス３０がＡＨＢであり、ＣＰＵ２０からの読出し要求が、ＳＩＮＧＬＥ（４ｂｙｔｅ）、ＩＮＣ４（１６ｂｙｔｅ）、ＩＮＣ８（３２ｂｙｔｅ）及びＩＮＣ１６（６４ｂｙｔｅ）のいずれかである前提で、図５を参照しつつ先読みサイズ設定処理について説明する。
【００４１】
先読みサイズ設定部１３は、中継部１１によって受信された読出し要求の種別がＩＮＣ１６（６４ｂｙｔｅ）であるか否かを判別する（ステップＳ３０１）。ＩＮＣ１６は、ＡＨＢにおいて書込み／読出し要求し得るデータサイズのうちの最大のデータサイズを要求するためのコマンドであり、６４ｂｙｔｅ以上のデータを読み出す場合にＣＰＵ２０から発せられる要求である。
【００４２】
先読みサイズ設定部１３は、読出し要求の種別がＩＮＣ１６（６４ｂｙｔｅ）であると判別した場合には、先読みサイズを先読み最大サイズに設定する（ステップＳ３０２）。ここで、先読み最大サイズは、先読みサイズについて設定する最大のデータサイズであり、例えば２５６ｂｙｔｅのデータを中継する頻度が多いことがわかっている場合には、先読みサイズ設定部１３に例えば２５６ｂｙｔｅとして予め設定されている。
【００４３】
また、先読みサイズ設定部１３は、読出し要求の種別がＩＮＣ１６（６４ｂｙｔｅ）でない、すなわちＳＩＮＧＬＥ（４ｂｙｔｅ）、ＩＮＣ４（１６ｂｙｔｅ）及びＩＮＣ８（３２ｂｙｔｅ）のいずれかであると判別した場合には、先読みサイズを要求対応サイズに基づいて設定する（ステップＳ３０３）。ここで、要求対応サイズは、先読み要求に対応するサイズすなわちＳＩＮＧＬＥの場合には４ｂｙｔｅ、ＩＮＣ４の場合には１６ｂｙｔｅ、ＩＮＣ８の場合には３２ｂｙｔｅのデータサイズである。先読みサイズ設定部１３は、要求対応サイズを例えば２倍して得られたデータサイズすなわちＳＩＮＧＬＥの場合には８ｂｙｔｅ、ＩＮＣ４の場合には３２ｂｙｔｅ、ＩＮＣ８の場合には６４ｂｙｔｅを先読みサイズとして設定する。例えばＩＮＣ８は３２〜６４ｂｙｔｅのサイズのデータを読出す場合に発せられる要求であるので、３２ｂｙｔｅの２倍である６４ｂｙｔｅのサイズのデータを先読みすれば十分であることから、要求対応サイズの２倍のサイズを先読みサイズとして設定するものである。
【００４４】
図６（ａ）は、先読みサイズ設定処理ルーチンにより、先読みサイズを先読み最大サイズに設定した場合の読出し中継処理におけるデータの送受信を表すシーケンス図である。以下、ＣＰＵ２０が２５６ｂｙｔｅのデータを読出す場合の処理を例として説明する。
【００４５】
ＣＰＵ２０が、ＩＮＣ１６（６４ｂｙｔｅ）の読出し要求を送信し（ステップＳ４１１）、データ中継装置１０の中継部１１が当該読出し要求を受信する。先読みサイズ設定部１３は、当該読出し要求がＩＮＣ１６であると判別して、先読みサイズを先読み最大サイズである２５６ｂｙｔｅに設定して読出し要求をメモリ４０に送信する（Ｓ４１２）。
【００４６】
メモリ４０は、当該読出し要求が示す先頭アドレスから２５６ｂｙｔｅ分のデータを読出してこれをデータ中継装置１０に送信する。中継部１１が２５６ｂｙｔｅ分の読出しデータを受信し、一時記憶部１２がこれを一時記憶データとして一時的に記憶する（Ｓ４１３）。中継部１１は、一時記憶部１２に記憶されている一時記憶データの先頭から６４ｂｙｔｅ分のデータをＣＰＵ２０に送信し、ＣＰＵ２０はこれを受信する（Ｓ４１４）。
【００４７】
中継部１１は、ＣＰＵ２０から送信された後続の読出し要求ＩＮＣ１６に応じて、一時記憶部１２に記憶されている一時記憶データの先頭から６４ｂｙｔｅ分のデータをＣＰＵ２０へ順次送信する（Ｓ４１４〜Ｓ４１６）。
【００４８】
このように、ＣＰＵ２０からＩＮＣ１６（６４ｂｙｔｅ）の読出し要求を受信した場合には、先読み最大サイズである２５６ｂｙｔｅ分のデータをメモリ４０から取得し、これを一時記憶部１２に記憶するので、ＣＰＵ２０からの後続の読出し要求毎にメモリ４０に読出し要求する必要がなく、データの読出し時間を短縮できる。
【００４９】
図６（ｂ）は、同ルーチンにより、先読みサイズを要求対応サイズに応じて設定した場合の読出し中継処理におけるデータの送受信を表すシーケンス図である。以下、ＣＰＵ２０が６０ｂｙｔｅのデータを読出す場合の処理を例として説明する。
【００５０】
ＣＰＵ２０が、ＩＮＣ８（３２ｂｙｔｅ）の読出し要求を送信し（ステップＳ４２１）、データ中継装置１０の中継部１１が当該読出し要求を受信する。先読みサイズ設定部１３は、当該読出し要求がＩＮＣ８であると判別して、先読みサイズを要求対応サイズである３２ｂｙｔｅの２倍の６４ｂｙｔｅに設定して読出し要求をメモリ４０に送信する（Ｓ４２２）。
【００５１】
メモリ４０は、当該読出し要求が示す先頭アドレスから６４ｂｙｔｅ分のデータを読出してこれをデータ中継装置１０に送信する。中継部１１が６４ｂｙｔｅ分の読出しデータを受信し、一時記憶部１２がこれを一時記憶データとして一時的に記憶する（Ｓ４２３）。中継部１１は、一時記憶部１２に記憶されている一時記憶データの先頭から３２ｂｙｔｅ分のデータをＣＰＵ２０に送信し、ＣＰＵ２０はこれを受信する（Ｓ４２４）。
【００５２】
中継部１１は、ＣＰＵ２０から送信された後続のＩＮＣ１６等の読出し要求に応じて、一時記憶部１２に記憶されている一時記憶データの先頭から１６ｂｙｔｅ、８ｂｙｔｅ、４ｂｙｔｅ分のデータをＣＰＵ２０へ順次送信する（Ｓ４２４〜Ｓ４２６）。
【００５３】
このように、ＣＰＵ２０からＩＮＣ８（３２ｂｙｔｅ）の読出し要求を受信した場合には、要求対応サイズである３２ｂｙｔｅの２倍の６４ｂｙｔｅ分のデータをメモリ４０から取得し、これを一時記憶部１２に記憶するので、ＣＰＵ２０からの後続の読出し要求毎にメモリ４０に読出し要求する必要がなくなるのに加えて、メモリ４０からのデータ取得時間（点線で示す）をも短縮でき、データの読出し時間を短縮できる。
【００５４】
このように、本実施例のデータ中継装置１０は、ＣＰＵ２０からの読出し要求の種別に基づいて先読みサイズを設定する先読みサイズ設定部１３を更に含む。上記した先読みサイズ設定部１３の処理により、適切なサイズのデータをメモリ４０から取得することができるので、データの読出し時間を短縮できる。
【００５５】
図７は、先読み最大サイズが２５６ｂｙｔｅに設定されているときに、ＣＰＵ２０が５１２ｂｙｔｅのデータを読出す場合における読出し中継処理のデータの送受信を表すシーケンス図である。
【００５６】
この場合、ＣＰＵ２０は、ＡＨＢにおいて読出し要求し得るデータサイズのうちの最大のデータサイズ６４ｂｙｔｅを要求するためのコマンドであるＩＮＣ１６を合計８回、データ中継装置１０に送信する（ステップＳ５１１、Ｓ５２１、・・・、Ｓ５８１）。これに対して、データ中継装置１０は、先ず、１回目の読出し要求（Ｓ５１１）に応じて、読出し最大サイズである２５６ｂｙｔｅのデータの読出し要求をメモリ４０に送信する（ステップＳ５１２）。そして、メモリ４０からの２５６ｂｙｔｅの読出しデータを一時記憶データとして一時的に一時記憶部１２に記憶し、当該一時記憶データの先頭から６４ｂｙｔｅ分のデータをＣＰＵ２０に送信する（Ｓ５１３）。続いて、データ中継装置１０は、２〜４回目の読出し要求（Ｓ５２１、Ｓ５３１、Ｓ５４１）に応じて、一時記憶データの先頭から６４ｂｙｔｅ分のデータをＣＰＵ２０に順次送信する（Ｓ５２２、Ｓ５３２、Ｓ５４２）。これらの送信によって、一時記憶部１２に記憶されていた一時記憶データは全て送信される。
【００５７】
データ中継装置１０は、５回目の読出し要求（Ｓ５５１）に応じて、読出し最大サイズである２５６ｂｙｔｅのデータの読出し要求をメモリ４０に送信する（ステップＳ５５２）。そして、メモリ４０からの２５６ｂｙｔｅのデータを一時記憶データとして一時的に一時記憶部１２に記憶し、当該一時記憶データの先頭から６４ｂｙｔｅ分のデータをＣＰＵ２０に送信する（Ｓ５５３）。続いて、データ中継装置１０は、６〜８回目の読出し要求（Ｓ５６１、Ｓ５７１、Ｓ５８１）に応じて、一時記憶データの先頭から６４ｂｙｔｅ分の読出しデータをＣＰＵ２０に順次送信する（Ｓ５６２、Ｓ５７２、Ｓ５８２）。
【００５８】
かかるデータ中継処理によって、５１２ｂｙｔｅのデータを中継する場合にも読出し時間を大幅に短縮できる。ＣＰＵ２０が１回目の読出し要求を送信してから当該要求に対応する読出しデータを受信するまでの時間を１ｄｔとすると、ＣＰＵ２０が５１２ｂｙｔｅのデータを取得するまでに要する時間は２ｄｔ程度となる。
【００５９】
図８は、先読み最大サイズが５１２ｂｙｔｅに設定されているときに、ＣＰＵ２０が５１２ｂｙｔｅのデータを読出す場合における読出し中継処理のデータの送受信を表すシーケンス図である。
【００６０】
この場合にも、ＣＰＵ２０は、ＡＨＢにおいて読出し要求し得るデータサイズのうちの最大のデータサイズ６４ｂｙｔｅを要求するためのコマンドであるＩＮＣ１６を合計８回、データ中継装置１０に送信する（ステップＳ６１１、Ｓ６２１、・・・、Ｓ６８１）。これに対して、データ中継装置１０は、先ず、１回目の読出し要求（Ｓ６１１）に応じて、読出し最大サイズである５１２ｂｙｔｅのデータの読出し要求をメモリ４０に送信する（ステップＳ６１２）。そして、メモリ４０からの５１２ｂｙｔｅの読出しデータを一時記憶データとして一時的に一時記憶部１２に記憶し、当該一時記憶データの先頭から６４ｂｙｔｅ分のデータをＣＰＵ２０に送信する（Ｓ６１３）。続いて、データ中継装置１０は、２〜８回目の読出し要求（Ｓ６２１、Ｓ６３１、・・・、Ｓ６８１）に応じて、一時記憶データの先頭から６４ｂｙｔｅ分のデータをＣＰＵ２０に順次送信する（Ｓ６２２、Ｓ６３２、・・・、Ｓ６８２）。
【００６１】
このように、先読み最大サイズが５１２ｂｙｔｅに設定されているときには、ＣＰＵ２０が５１２ｂｙｔｅのデータを取得するまでに要する時間は１ｄｔ程度となる。すなわち、先読み最大サイズが５１２ｂｙｔｅに設定されているときに比較して、読出し時間を１ｄｔ程度更に短縮できる。
【００６２】
＜第３の実施例＞
図９は本実施例のデータ中継装置１０をＣＰＵ２０等のブロックと共に表すブロック図である。以下、第２の実施例とは異なる点について主に説明する。
【００６３】
本実施例の先読みサイズ設定部１３は、通信プロトコルの種別に基づいて先読み最大サイズを設定する。ＰＣＩ−Ｅｘｐｒｅｓｓバス５０には、メモリ４０内のデータを送信するイーサネットドライバ（送信部）６０が接続されている。イーサネットは登録商標である。プロトコル解析部６１は、イーサネットドライバ６０が送信するデータをイーサネットプロトコル解析し、その通信プロトコルの種別を判別する。プロトコル解析部６１は、イーサネットドライバ６０がデータを送信する毎にプロトコル解析を行うようにしても良いし、データ送信の数回おきにプロトコル解析を行うようにしても良い。通信プロトコルの種別としては、例えばＦＴＰ（File Transfer Protocol：ファイル・トランスファー・プロトコル）やＲＴＰ（Real-time Transport Protocol：リアルタイム・トランスポート・プロトコル）が挙げられる。プロトコル解析部６１の解析によって得られた通信プロトコルの種別情報は、イーサネットドライバ６０により、ＰＣＩ−Ｅｘｐｒｅｓｓバス５０を介してデータ中継装置１０へ送信される。
【００６４】
先読みサイズ設定部１３は、イーサネットドライバ６０からの通信プロトコルの種別情報をＰＣＩ−Ｅｘｐｒｅｓｓバス５０を介して受信し、当該種別に応じて先読み最大サイズを設定する。図１０は、プロトコル種別と先読みデータサイズとの対応を示すサイズ対応テーブルを表す図である。先読みサイズ設定部１３は、サイズ対応テーブルを予め保持している。ここでは、プロトコル種別ＦＴＰにはプロトコル対応サイズ５１２ｂｙｔｅが対応付けられ、プロトコル種別ＲＴＰにはプロトコル対応サイズ１２８ｂｙｔｅが対応付けられている。
【００６５】
通信プロトコルＦＴＰは、サーバ等の装置（図示せず）へのデータのアップロード／ダウンロードの用途に主として用いられる。それゆえ、通信対象のデータサイズが比較的大きいので、ＦＴＰの場合には例えば先読み最大サイズを５１２ｂｙｔｅ等の比較的大きなサイズに設定する。また、通信プロトコルＲＴＰは、ＶｏＩＰ（Voice over Internet Protocol）の音声データの送受信に主として用いられる。それゆえ、通信対象のデータサイズが比較的小さいので、ＲＴＰの場合には例えば先読み最大サイズを１２８ｂｙｔｅ等の比較的小さなサイズに設定する。
【００６６】
図１１は、先読みサイズ設定部１３による先読み最大サイズ設定処理ルーチンを表すフローチャートである。以下、図１１を参照しつつ、先読み最大サイズ設定処理について説明する。
【００６７】
先読みサイズ設定部１３は、イーサネットドライバ６０からの通信プロトコルの種別情報をＰＣＩ−Ｅｘｐｒｅｓｓバス５０を介して受信した場合に（ステップＳ７０１）、当該種別情報が示すプロトコル種別に対応するデータサイズ（プロトコル対応サイズ）をサイズ対応テーブルから取得する（Ｓ７０２）。例えばプロトコル種別がＦＴＰの場合、プロトコル対応サイズ５１２ｂｙｔｅをサイズ対応テーブル（図１０）から取得する。続いて、先読みサイズ設定部１３は、当該取得したプロトコル対応サイズ５１２ｂｙｔｅを先読み最大サイズとして設定する（Ｓ７０３）。
【００６８】
図１２（ａ）は、先読み最大サイズ設定処理ルーチンにより、現在設定サイズよりも大きい取得サイズを先読み最大サイズとして設定する場合の読出し中継処理におけるデータの送受信を表すシーケンス図である。ここで、先読みサイズ設定部１３が、先読み最大サイズの現在設定サイズが１２８ｂｙｔｅである前提で説明する。
【００６９】
データ中継装置１０の中継部１１がイーサネットドライバ６０からのプロトコル種別情報を受信した場合に（ステップＳ８１１）、先読みサイズ設定部１３は読出し最大サイズを設定する（Ｓ８１２）。先読みサイズ設定部１３は、プロトコル種別情報が例えばＦＴＰを示す場合には、サイズ対応テーブル（図１０）を参照し、読出し最大サイズを５１２ｂｙｔｅに設定する。すなわち、読出し最大サイズが１２８ｂｙｔｅから５１２ｂｙｔｅに変更される。
【００７０】
その後、ＣＰＵ２０が読出しデータサイズ５１２ｂｙｔｅの読出し要求をデータ中継装置１０へ送信する（Ｓ８１３）。中継部１１は、当該読出し要求を受信した場合には、読出し最大サイズである５１２ｂｙｔｅの読出し要求をメモリ４０へ送信する（Ｓ８１４）。中継部１１は、メモリ４０からの５１２ｂｙｔｅの読出しデータを受信しこれを一時記憶データとして一時的に一時記憶部１２に記憶し、当該一時記憶データの先頭から５１２ｂｙｔｅ分のデータ（すなわちその全て）をＣＰＵ２０に送信する（Ｓ８１５）。
【００７１】
このように、プロトコル種別に基づいて読出し要求のデータサイズを予測し、そのサイズを先読み最大サイズとして設定することにより、データ中継装置１０は読出し要求を一度だけメモリ４０へ送信するだけで読出し要求データの全てを取得できる。従来であれば１２８ｂｙｔｅの読出し要求をメモリ４０へ４回送信して５１２ｂｙｔｅ分のデータを取得していたが、本実施例のデータ中継装置１０によれば読出し要求をメモリ４０へ１回送信するだけで良いので、メモリ４０からのデータの読出し時間を大幅に短縮できる。
【００７２】
図１２（ｂ）は、同ルーチンにより、現在設定サイズよりも小さい取得サイズを先読み最大サイズとして設定する場合の読出し中継処理におけるデータの送受信を表すシーケンス図である。ここで、先読みサイズ設定部１３が、先読み最大サイズの現在設定サイズが５１２ｂｙｔｅである前提で説明する。
【００７３】
データ中継装置１０の中継部１１がイーサネットドライバ６０からのプロトコル種別情報を受信した場合に（ステップＳ８２１）、先読みサイズ設定部１３は読出し最大サイズを設定する（Ｓ８２２）。先読みサイズ設定部１３は、プロトコル種別情報が例えばＲＴＰを示す場合には、サイズ対応テーブル（図１０）を参照し、読出し最大サイズを１２８ｂｙｔｅに設定する。すなわち、読出し最大サイズが５１２ｂｙｔｅから１２８ｂｙｔｅに変更される。
【００７４】
その後、ＣＰＵ２０が読出しデータサイズ１２８ｂｙｔｅの読出し要求をデータ中継装置１０へ送信する（Ｓ８２３）。中継部１１は、当該読出し要求を受信した場合には、読出し最大サイズである１２８ｂｙｔｅの読出し要求をメモリ４０へ送信する（Ｓ８２４）。中継部１１は、メモリ４０からの１２８ｂｙｔｅの読出しデータを受信しこれを一時記憶データとして一時的に一時記憶部１２に記憶し、当該一時記憶データの先頭から１２８ｂｙｔｅ分のデータ（すなわちその全て）をＣＰＵ２０に送信する（Ｓ８２５）。
【００７５】
このように、データ中継装置１０は、適切なサイズの読出しデータをメモリ４０へ要求する。従来であれば５１２ｂｙｔｅの読出し要求をメモリ４０へ送信していたが、本実施例のデータ中継装置１０によれば１２８ｂｙｔｅの読出し要求をメモリ４０へ送信するので、読出しデータ量が減少し、メモリ４０からのデータ読出し時間を大幅に短縮することができる。
【００７６】
なお、本実施例は、プロトコル解析部がデータ中継装置１０の外部に設けられた場合の例であるが、プロトコル解析部がデータ中継装置１０内に設けられていても良い。また、プロトコル解析部６１がサイズ対応テーブル（図１０）を有し、その解析結果に応じてサイズ対応テーブルからプロトコル対応サイズを決定してこれをイーサネットドライバ６０がデータ中継装置１０に送信するようにしても良い。この場合、先読みサイズ設定部１３は、受信したプロトコル対応サイズを先読みサイズとして設定する。かかる構成の場合でも、第３の実施例と同様の効果を奏する。
【００７７】
なお、第１〜第３の実施例は、第２のデータバスがＰＣＩ−Ｅｘｐｒｅｓｓバスの場合の例であるが、本発明によるデータ中継装置は、読出し要求側の装置が読出し要求に対応するデータを受信してから後続のデータについての読出し要求を発するような通信形態について適用可能である。
【符号の説明】
【００７８】
１０  データ中継装置
１１  中継部
１２  一時記憶部
１３  先読みサイズ設定部
２０  ＣＰＵ（データ処理装置）
３０  ローカルバス（第１のデータバス）
４０  メモリ（記憶装置）
５０  ＰＣＩ−Ｅｘｐｒｅｓｓバス（第２のデータバス）
６０  イーサネットドライバ（送信部）
６１  プロトコル解析部
【図１】
2011182314.tif 000003
【図２】
2011182314.tif 000004
【図３】
2011182314.tif 000005
【図４】
2011182314.tif 000006
【図５】
2011182314.tif 000007
【図６】
2011182314.tif 000008
【図７】
2011182314.tif 000009
【図８】
2011182314.tif 000010
【図９】
2011182314.tif 000011
【図１０】
2011182314.tif 000012
【図１１】
2011182314.tif 000013
【図１２】
2011182314.tif 000014
【図１３】
2011182314.tif 000015
【図１４】
2011182314.tif 000016
【図１５】
2011182314.tif 000017