(57)【特許請求の範囲】
【請求項１】
ＰＣＩカードからのＰＣＩトランザクションが連続する回数として予め設定される連続トランザクション数を格納する連続トランザクション数格納部と、
前記ＰＣＩカードからのＰＣＩトランザクションが受信されるときに、当該ＰＣＩトランザクションを格納するトランザクションバッファと、
前記トランザクションバッファにＰＣＩトランザクションが格納されるときに、当該ＰＣＩトランザクションが連続する回数を計数し、その計数値を記憶するトランザクション連続受信回数カウンタと、
前記計数値が前記連続トランザクション数に達するまで、前記ＰＣＩトランザクションに対応するメモリトランザクションをマージして１つのメモリトランザクションとして保留するＰＣＩトランザクションマージ部と、
前記計数値が前記連続トランザクション数に達したときに、その時点で保留されているメモリトランザクションをメモリに送り出すメモリトランザクション発行部とを有し、
前記連続トランザクション数をＰＣＩカード毎に算出し、その算出値を前記連続トランザクション数に格納する初期化処理を行う制御プロセッサをさらに有することを特徴とするデータ転送制御装置。
【請求項２】
前記制御プロセッサは、前記ＰＣＩカードとそれに接続される周辺装置との間でやり取りされるデータのデータ長と、前記ＰＣＩカードから分割して送り出されるＰＣＩトランザクションのデータ長とに基づいて、前記連続トランザクション数を算出することを特徴とする請求項１に記載のデータ転送制御装置。
【請求項３】
前記ＰＣＩトランザクションマージ部は、前記計数値が前記連続トランザクション数に達する前に、送り出すメモリトランザクションのデータ長が予め設定した制限値を超えた場合、前記マージを中止し、
前記メモリトランザクション発行部は、前記マージが中止されたときに、その時点で保留されているメモリトランザクションをメモリに送り出すことを特徴とする請求項１又は２に記載のデータ転送制御装置。
【請求項４】
連続トランザクション数格納部が、ＰＣＩカードからのＰＣＩトランザクションが連続する回数として予め設定される連続トランザクション数を格納し、
トランザクションバッファが、前記ＰＣＩカードからのＰＣＩトランザクションが受信されるときに、当該ＰＣＩトランザクションを格納し、
トランザクション連続受信回数カウンタが、前記トランザクションバッファにＰＣＩトランザクションが格納されるときに、当該ＰＣＩトランザクションが連続する回数を計数し、その計数値を記憶し、
ＰＣＩトランザクションマージ部が、前記計数値が前記連続トランザクション数に達するまで、前記ＰＣＩトランザクションに対応するメモリトランザクションをマージして１つのメモリトランザクションとして保留し、
メモリトランザクション発行部が、前記計数値が前記連続トランザクション数に達したときに、その時点で保留されているメモリトランザクションをメモリに送り出し、
制御プロセッサが、前記連続トランザクション数をＰＣＩカード毎に算出し、その算出値を前記連続トランザクション数に格納する初期化処理を行うことを特徴とするデータ転送制御方法。
【請求項５】
前記制御プロセッサが、前記ＰＣＩカードとそれに接続される周辺装置との間でやり取りされるデータのデータ長と、前記ＰＣＩカードから分割して送り出されるＰＣＩトランザクションのデータ長とに基づいて、前記連続トランザクション数を算出することを特徴とする請求項４に記載のデータ転送制御方法。
【請求項６】
前記ＰＣＩトランザクションマージ部が、前記計数値が前記連続トランザクション数に達する前に、送り出すメモリトランザクションのデータ長が予め設定した制限値を超えた場合、前記マージを中止し、前記メモリトランザクション発行部が、前記マージが中止されたときに、その時点で保留されているメモリトランザクションをメモリに送り出すことを特徴とする請求項４又は５に記載のデータ転送制御方法。
【請求項７】
請求項１から３のいずれかに記載のデータ転送制御装置と、
前記データ転送制御装置に接続されるメモリと、
前記データ転送制御装置に接続される複数のＰＣＩカードとを有することを特徴とするコンピュータシステム。
【請求項８】
前記データ転送制御装置は、複数のデータ転送制御装置で構成され、
前記ＰＣＩカードからのＰＣＩトランザクションが連続する回数としての連続トランザクション数は、前記複数のデータ転送制御装置毎に予め設定されることを特徴とする請求項７に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送制御装置、データ転送制御方法、およびコンピュータシステムに関し、特にＰＣＩ（Peripheral Component Interconnect）カードとメモリとの間でデータ転送を行うデータ転送制御装置、データ転送制御方法、およびコンピュータシステムに関する。
【背景技術】
【０００２】
複数のＰＣＩカードを搭載し、周辺装置とメモリ間でデータ転送を行うコンピュータシステムにおいて、ＰＣＩカードからの小さいデータ長に分断されたＰＣＩトランザクションを逐次的に処理し、メモリに送り出す方式が知られている。この方式では、近年のデータ転送速度の向上に伴い、トランザクション間でのオーバヘッド時間が無視できない値となり、メモリバスの使用効率の低下により期待されるシステム転送性能を確保することができなくなっている。
【０００３】
上記に関連して、特許文献１には、メモリトランザクション発行部が発行したメモリトランザクションに含まれる主記憶のアドレスを抽出し、抽出されたアドレスに応じて、複数のインタフェースの１つにメモリトランザクションを送信するデータ転送装置が提案されている。これによれば、データ転送装置が接続される計算機内のハードウェアリソース競合を抑制してスループットを向上できるとされている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−０６１１９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前述したように、ＰＣＩトランザクションを逐次的に処理し、メモリに送り出す方式では、データ転送速度の向上に伴い、小さいデータ長に分断されたＰＣＩトランザクションを逐次的に処理していくと、トランザクション切れ目のオーバヘッドが大きくなるため、メモリバスの使用効率が落ち、期待されるシステム転送性能を確保することができない。
【０００６】
そのため、トランザクション間でのオーバヘッドを減少させる必要がある。その対策として、小さいデータ長に分断された複数のＰＣＩトランザクションをマージしてメモリへ送り出すことが考えられる。しかし、この場合、通常、ＰＣＩトランザクションの到着の連続性が予測できないため、一定時間内に続くＰＣＩトランザクションが到着しマージ可能と判断できるケースのみマージするような機能しか実現ができない。
【０００７】
すなわち、複数のトランザクションをマージしてメモリバスへ流す場合、通常、トランザクションの連続性が予測できないため、既に続くトランザクションが到着しているケースや続くトランザクションが一定時間内に到着した場合にしかマージできず、効率の良いマージができないという課題がある。このため、効率の良いマージ方式が求められている。
【０００８】
一方、特許文献１のデータ転送装置は、複数のトランザクションをマージする場合を特に考慮したものではない。
【０００９】
本発明の目的は、上記課題を解決し、トランザクションの連続性を考慮してＰＣＩトランザクションを効率的にマージし、システム性能を向上させることができるデータ転送制御装置、データ転送制御方法、およびコンピュータシステムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明の第１の観点によれば、ＰＣＩカードからのＰＣＩトランザクションが連続する回数として予め設定される連続トランザクション数を格納する連続トランザクション数格納部と、前記ＰＣＩカードからのＰＣＩトランザクションが受信されるときに、当該ＰＣＩトランザクションを格納するトランザクションバッファと、前記トランザクションバッファにＰＣＩトランザクションが格納されるときに、当該ＰＣＩトランザクションが連続する回数を計数し、その計数値を記憶するトランザクション連続受信回数カウンタと、前記計数値が前記連続トランザクション数に達するまで、前記ＰＣＩトランザクションに対応するメモリトランザクションをマージして１つのメモリトランザクションとして保留するＰＣＩトランザクションマージ部と、前記計数値が前記連続トランザクション数に達したときに、その時点で保留されているメモリトランザクションをメモリに送り出すメモリトランザクション発行部とを有し、前記連続トランザクション数をＰＣＩカード毎に算出し、その算出値を前記連続トランザクション数に格納する初期化処理を行う制御プロセッサをさらに有することを特徴とするデータ転送制御装置が提供される。
【００１１】
本発明の第２の観点によれば、連続トランザクション数格納部が、ＰＣＩカードからのＰＣＩトランザクションが連続する回数として予め設定される連続トランザクション数を格納し、トランザクションバッファが、前記ＰＣＩカードからのＰＣＩトランザクションが受信されるときに、当該ＰＣＩトランザクションを格納し、トランザクション連続受信回数カウンタが、前記トランザクションバッファにＰＣＩトランザクションが格納されるときに、当該ＰＣＩトランザクションが連続する回数を計数し、その計数値を記憶し、ＰＣＩトランザクションマージ部が、前記計数値が前記連続トランザクション数に達するまで、前記ＰＣＩトランザクションに対応するメモリトランザクションをマージして１つのメモリトランザクションとして保留し、メモリトランザクション発行部が、前記計数値が前記連続トランザクション数に達したときに、その時点で保留されているメモリトランザクションをメモリに送り出し、制御プロセッサが、前記連続トランザクション数をＰＣＩカード毎に算出し、その算出値を前記連続トランザクション数に格納する初期化処理を行うことを特徴とするデータ転送制御方法が提供される。
【００１２】
本発明の第３の観点によれば、上記に記載のデータ転送制御装置と、前記データ転送制御装置に接続されるメモリと、前記データ転送制御装置に接続される複数のＰＣＩカードとを有することを特徴とするコンピュータシステムが提供される。
【発明の効果】
【００１３】
本発明によれば、トランザクションの連続性を考慮してＰＣＩトランザクションを効率的にマージし、システム性能を向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態に係るデータ転送制御装置を含むコンピュータシステムの構成を示すブロック図である。
【図２】図１に示すデータ転送制御装置による初期化処理を説明するフローチャートである。
【図３】図１に示すデータ転送制御装置によるトランザクション処理を説明するフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明に係るデータ転送制御装置、データ転送制御方法、およびコンピュータシステムの実施の形態について、図面を参照して詳細に説明する。
【００１６】
図１は、本実施の形態に係るデータ転送制御装置を含むコンピュータシステムの構成を示す。
【００１７】
図１に示す本実施の形態のコンピュータシステム１００は、複数（図中の例では４つ）のホストバスアダプタ（ＨＢＡ）等のＰＣＩカード（図中の例では、ＨＢＡ１〜ＨＢＡ４）１０を搭載し、各ＰＣＩカード１０を介して個別に接続された複数のディスク装置等の周辺装置（図中の例では、ディスク装置）２０と、メモリ３０との間のデータ転送を行うものを前提としている。具体的に、このコンピュータシステムは、複数のＰＣＩカード１０を一括管理し、各ＰＣＩカード１０とメモリ３０との間のデータ転送を行うデータ転送制御装置（以下、転送制御装置）４０を複数含み、各転送制御装置４０が同一のメモリ３０とデータ転送を行う構成である。
【００１８】
この構成において、本実施の形態では、ＰＣＩカード１０毎にＰＣＩトランザクションが連続する回数の推定値を予め設定しておき、その回数までは連続してトランザクションが受信されるものとしてマージ動作を行う。このマージ動作は、トランザクションが連続する回数の設定値が実際のものと等しいほど効率が上がるため、本実施の形態では、以下のように転送制御装置４０を構成している。
【００１９】
すなわち、この転送制御装置４０は、連続トランザクション数格納機構（連続トランザクション数格納部）４１、トランザクション連続受信回数カウンタ４２、複数のＰＣＩカード１０用（図中の例では、ＨＢＡ１用〜ＨＢＡ４用）のトランザクションバッファ４３、ＰＣＩトランザクションマージ機構（ＰＣＩトランザクションマージ部）４４、メモリトランザクション発行機構（メモリトランザクション発行部）４５、および制御プロセッサ４６を含む。
【００２０】
連続トランザクション数格納機構４１は、制御プロセッサ４６によるＰＣＩカード１０の初期化処理（後述参照）により算出及び設定される、ＰＣＩカード１０毎に連続するトランザクション数を予め格納する。
【００２１】
トランザクション連続受信回数カウンタ４２は、転送制御装置４０によるトランザクション処理（後述参照）時に、ＰＣＩカード１０毎にＰＣＩトランザクションが何回連続して受信したかをカウントし、その値を記憶する。
【００２２】
トランザクションバッファ４３は、ＰＣＩカード１０毎に個別に設けられ、転送制御装置４０によるトランザクション処理（後述参照）時に、ＰＣＩカード１０毎にＰＣＩトランザクションを格納する。
【００２３】
ＰＣＩトランザクションマージ機構４４は、転送制御装置４０によるトランザクション処理（後述参照）時に、連続トランザクション数格納機構４１に予め格納されている連続トランザクション数の値とトランザクション連続受信回数カウンタ４２の値とにより、受信したトランザクションをマージする。
【００２４】
メモリトランザクション発行機構４５は、転送制御装置４０によるトランザクション処理（後述参照）時に、ＰＣＩトランザクションマージ機構４４によりマージされたトランザクションをメモリ３０に送り出す。
【００２５】
制御プロセッサ４６は、転送制御装置４０によるＰＣＩカード１０の初期化処理（後述参照）時に、ＰＣＩカード１０毎に適切な連続トランザクション数を算出し、その値を連続トランザクション数格納機構４１に設定する。
【００２６】
次に、本実施の形態の動作について説明する。
【００２７】
本実施の形態の特徴的な動作は、大きく分けて２つある。１つ目は、転送制御装置４０による初期化処理である。２つ目は、転送制御装置４０によるトランザクション処理である。
【００２８】
まず、１つ目の転送制御装置４０による初期化処理について、図２に示すフローチャートに基づき説明する。
【００２９】
ここで、転送制御装置４０では、実際にＰＣＩカード１０とメモリ３０間のデータ転送を行う前に、制御プロセッサ４６によりＰＣＩカード１０の初期化処理が行われる。これは、一般的な処理であり、制御プロセッサ４６は、ＰＣＩカード１０の種別を認識し、その種別に応じたＰＣＩカード１０の初期化処理を行う。即ち、制御プロセッサ４６は、どのようなＰＣＩカード１０が搭載されているかを認識しているのが一般的である。この初期化処理の一環として、以下の転送制御装置４０による初期化処理が制御プロセッサ４６により実施される。
【００３０】
図２において、転送制御装置４０は、配下に接続されているＰＣＩカード１０を検索する（ステップＳ１１）。これにより、制御プロセッサ４６は配下に搭載されているＰＣＩカード１０の種別を認識できる。ここでは、実際に搭載されているＰＣＩカード１０を認識しその種別を判断しているが、予め構成情報などにより搭載されるべきＰＣＩカード２０が限定できる場合は、実際に搭載されているＰＣＩカード１０を認識する必要はない。重要なのは、配下に搭載されているＰＣＩカード１０の種別を制御プロセッサ４６が把握できていることである。
【００３１】
続いて、転送制御装置４０は、ＰＣＩカード１０が全て検索済みか否かを判断する（ステップＳ１２）。その結果、ＰＣＩカード１０が全て検索済みであり、他に搭載されているＰＣＩカード１０が無ければ（ステップＳ１２：ＹＥＳ）、処理を終了する。
【００３２】
一方、ＰＣＩカード１０が全て検索済みでなく、他に搭載されているＰＣＩカード１０が有れば（ステップＳ１２：ＮＯ）、転送制御装置４０は、ＰＣＩカード１０の初期化処理を行う（ステップＳ１３）。本処理は、本発明とは直接関わりが無いので詳細は省略するが、一般的にはＰＣＩカード１０にアクセスするためのアドレスの設定やＰＣＩカード１０からの割込み機能の設定等が行われる。
【００３３】
次いで、転送制御装置４０は、制御プロセッサ４６により、ＰＣＩカード１０からのＰＣＩトランザクションが連続する回数として、連続トランザクション数を算出する（ステップＳ１４）。ここで、通常、周辺装置２０とデータ転送をする際には、予め決められたお互いの能力に応じた転送量に分割され転送されるのが一般的である。この転送量とＰＣＩトランザクションのデータ長には関連性が無く、複数のＰＣＩトランザクションに分割されることがある。この際、ＰＣＩカード１０内に存在するデータを、複数の小さいデータ長のＰＣＩトランザクションに分割して送り出すため、その数だけはＰＣＩトランザクションが連続して発行されることとなる。
【００３４】
例えば、ＰＣＩカード１０が周辺装置（ディスク装置）２０との間で１Ｋバイトのデータ長でやり取りすると決められており、ＰＣＩカード１０はデータ長２５６バイトのＰＣＩトランザクションに分割して送り出すとすれば、データ長２５６バイトのトランザクションが４回連続して送り出されることになる。このような種別のＰＣＩカード１０の場合、制御プロセッサ４６は、連続トランザクション数を４と算出する。
【００３５】
この場合、制御プロセッサ４６は、ＰＣＩカード１０からのＰＣＩトランザクションが連続する回数として、ＰＣＩカード１０と周辺装置２０との間でやり取りされるデータのデータ長と、ＰＣＩカード１０から分割して送り出されるＰＣＩトランザクションのデータ長とに基づいて、連続トランザクション数を算出する。
【００３６】
続いて、転送制御装置４０は、制御プロセッサ４６により算出された連続トランザクション数の算出値を連続トランザクション数格納機構４１に格納する（ステップＳ１５）。本処理では、制御プロセッサ４６は、前述のように算出された連続トランザクション数をＰＣＩカード１０毎に記憶することが可能な連続トランザクション数格納機構４１に格納する。ここでは、全てのＰＣＩカード１０が同一の種別のものであるので、連続トランザクション数は全て４が格納される。
【００３７】
このステップＳ１５の処理後、ステップＳ１１に戻り、以下同様の処理を繰り返す。これにより、上記の処理を配下の全ＰＣＩカード１０に対して実施した後に、ステップＳ１２により全て検索済み（ＹＥＳ）と判断され、転送制御装置４０による初期化処理が完了する。
【００３８】
次に、２つ目の転送制御装置によるトランザクション処理について、図３に示すフローチャートに基づき説明する。
【００３９】
図２に示す初期化処理が完了後、転送制御装置４０は、ＰＣＩカード１０からトランザクションを受信すると、そのデータ転送要求を解釈して、指定されたメモリ３０へデータ転送を行う。ＰＣＩカード１０は、ディスク装置２０より一定のデータ長（ここでは、１Ｋバイトとする）を受信すると、転送制御装置４０に対し、データ転送を行うため、データ転送のトランザクションを送り出す。ここでは、前述のように４つのデータ長２５６バイトのＰＣＩトランザクションに分割されるとする。
【００４０】
（１つ目のＰＣＩトランザクション受信時の動作）
まず、ＰＣＩカード１０から１つ目のＰＣＩトランザクションを受信すると、転送制御装置４０は、以下のように動作する。
【００４１】
図３において、転送制御装置４０は、１つ目のＰＣＩトランザクションの受信を待つ（ステップＳ２１）。これにより、１つ目のＰＣＩトランザクションが受信されると（ステップＳ２１：ＹＥＳ）、このトランザクションは、一旦ＰＣＩカード１０毎に有するトランザクションバッファ４３内に格納される。このとき、ＰＣＩトランザクションマージ機構４４にトランザクション受信が通知される。
【００４２】
次に、転送制御装置４０は、受信されたＰＣＩトランザクションを解析する（ステップＳ２２）。ここでは、ＰＣＩトランザクションの受信を認識したＰＣＩトランザクションマージ機構４４は、そのトランザクションの内容を解析し、メモリ３０へのデータ転送要求であることを認識する。
【００４３】
次に、転送制御装置４０は、メモリトランザクションを作成する（ステップＳ２３）。ここで、ＰＣＩカード１０から受信するＰＣＩトランザクションと、メモリ３０にデータ転送を要求するメモリトランザクションとは、その形式が異なるのが一般的である。このため、本処理では、１つ目のＰＣＩトランザクションを、メモリ３０にデータ転送を要求する形式に変換したメモリトランザクションを作成する。
【００４４】
次に、転送制御装置４０は、トランザクションが保留中か否かを判定する（ステップＳ２４）。ここでは、トランザクションの保留は無いので、保留中でないと判定され（ステップＳ２４：ＮＯ）、ステップＳ２６の処理に移行する。
【００４５】
次に、転送制御装置４０は、トランザクション連続受信回数カウンタ４２を更新する（ステップＳ２６）。すなわち、ＰＣＩカード１０毎に存在するトランザクション連続受信回数カウンタ４２をカウントアップする。ここでは、初期値である０から１に更新される。
【００４６】
次に、転送制御装置４０は、該当する連続トランザクション数を読み出す（ステップＳ２７）。本処理では、連続トランザクション数格納機構４１から、受信したＰＣＩトランザクションに対応する連続トランザクション数を読み出す。ここでは、連続トランザクション数として４が読み出される。
【００４７】
次に、転送制御装置４０は、連続トランザクション数に到達したか否かを判定する（ステップＳ２８）。すなわち、前述のステップＳ２６により更新されたトランザクション連続受信回数カウンタ４２と、ステップＳ２７で読み出した連続トランザクション数が一致しているかを判定する。ここでは、トランザクション連続受信回数は１であり、連続トランザクション数４とは一致しない。
【００４８】
その結果、転送制御装置４０は、連続トランザクション数に到達していないと判定し（ステップＳ２８：ＮＯ）、メモリトランザクションを保留する（ステップＳ２９）。すなわち、前述のステップＳ２８において一致しないと判定された場合は、続くトランザクションが短期間の間に発行されると判断できるため、現時点ではメモリ３０に対してメモリトランザクションを発行せず一旦保留する。
【００４９】
（２つ目のＰＣＩトランザクション受信時の動作）
続いて、ＰＣＩカード１０から２つ目のＰＣＩトランザクションを受信すると、転送制御装置４０は、以下のように動作する。
【００５０】
図３において、転送制御装置４０は、２つ目のＰＣＩトランザクションの受信を待つ（ステップＳ２１）。これにより、２つ目のＰＣＩトランザクションが受信されると（ステップＳ２１：ＹＥＳ）、このトランザクションは、一旦ＰＣＩカード１０毎に有するトランザクションバッファ４３内に格納される。このとき、ＰＣＩトランザクションマージ機構４４にトランザクション受信が通知される。
【００５１】
次に、転送制御装置４０は、受信されたＰＣＩトランザクションを解析する（ステップＳ２２）。ここでは、ＰＣＩトランザクションの受信を認識したＰＣＩトランザクションマージ機構４４は、そのトランザクションの内容を解析し、メモリ３０へのデータ転送要求であることを認識する。
【００５２】
次に、転送制御装置４０は、メモリトランザクションを作成する（ステップＳ２３）。ここで、ＰＣＩカード１０から受信するＰＣＩトランザクションと、メモリ３０にデータ転送を要求するメモリトランザクションとは、その形式が異なるのが一般的である。このため、本処理では、２つ目のＰＣＩトランザクションを、メモリ３０にデータ転送を要求する形式に変換したメモリトランザクションを作成する。
【００５３】
次に、転送制御装置４０は、トランザクションが保留中か否かを判定する（ステップＳ２４）。ここでは、１つ目のメモリトランザクションが保留されているため、保留中であると判定され（ステップＳ２４：ＹＥＳ）、ステップＳ２５の処理に移行する。
【００５４】
次に、転送制御装置４０は、２つ目のメモリトランザクションをマージする（ステップＳ２５）。ここでは、保留されているメモリトランザクションと、２つ目のメモリトランザクションをマージし、１つのメモリトランザクションとする。
【００５５】
次に、転送制御装置４０は、トランザクション連続受信回数カウンタ４２を更新する（ステップＳ２６）。本処理では、ＰＣＩカード１０毎に存在するトランザクション連続受信回数カウンタをカウントアップする。ここでは、１から２に更新される。
【００５６】
次に、転送制御装置４０は、該当する連続トランザクション数を読み出す（ステップＳ２７）。本処理では、連続トランザクション数格納機構４１から、受信したＰＣＩトランザクションに対応する連続トランザクション数を読み出す。ここでは、連続トランザクション数として４が読み出される。
【００５７】
次に、転送制御装置４０は、連続トランザクション数に到達したか否かを判定する（ステップＳ２８）。本処理では、前述のステップＳ２６により更新されたトランザクション連続受信回数カウンタ４２と、ステップＳ２７で読み出した連続トランザクション数が一致しているかを判定する。ここでは、トランザクション連続受信回数は２であり、連続トランザクション数４とは一致しない。
【００５８】
その結果、転送制御装置４０は、連続トランザクション数に到達していないと判定し（ステップＳ２８：ＮＯ）、メモリトランザクションを保留する（ステップＳ２９）。すなわち、前述のステップＳ２８において一致しないと判定された場合は、続くトランザクションが短期間の間に発行されると判断できるため、現時点ではメモリ３０に対してメモリトランザクションを発行せず一旦保留する。
【００５９】
（３つ目のＰＣＩトランザクション受信時の動作）
続いて、ＰＣＩカード１０から３つ目のＰＣＩトランザクションを受信すると、転送制御装置４０は、以下のように動作する。
【００６０】
図３において、転送制御装置４０は、３つ目のＰＣＩトランザクションの受信を待つ（ステップＳ２１）。これにより、３つ目のＰＣＩトランザクションが受信されると（ステップＳ２１：ＹＥＳ）、このトランザクションは、一旦ＰＣＩカード１０毎に有するトランザクションバッファ４３内に格納される。このとき、ＰＣＩトランザクションマージ機構４４にトランザクション受信が通知される。
【００６１】
次に、転送制御装置４０は、受信された３つ目のＰＣＩトランザクションを解析する（ステップＳ２２）。ここでは、ＰＣＩトランザクションの受信を認識したＰＣＩトランザクションマージ機構４４は、そのトランザクションの内容を解析し、メモリ３０へのデータ転送要求であることを認識する。
【００６２】
次に、転送制御装置４０は、メモリトランザクションを作成する（ステップＳ２３）。ここで、ＰＣＩカード１０から受信するＰＣＩトランザクションと、メモリ１０にデータ転送を要求するメモリトランザクションとは、その形式が異なるのが一般的である。このため、本処理では、３つ目のＰＣＩトランザクションを、メモリ３０にデータ転送を要求する形式に変換したメモリトランザクションを作成する。
【００６３】
次に、転送制御装置４０は、トランザクションが保留中か否かを判定する（ステップＳ２４）。ここでは、１つ目と２つ目の各メモリトランザクションがマージされたメモリトランザクションが保留されているため、保留中であると判定され（ステップＳ２４：ＹＥＳ）、ステップＳ２５の処理に移行する。
【００６４】
次に、転送制御装置４０は、３つ目のメモリトランザクションをマージする（ステップＳ２５）。ここでは、保留されているメモリトランザクションと、３つ目のメモリトランザクションをマージし、１つのトランザクションとする。
【００６５】
次に、転送制御装置４０は、トランザクション連続受信回数カウンタ４２を更新する（ステップＳ２６）。ここでは、ＰＣＩカード１０毎に存在するトランザクション連続受信回数カウンタ４２をカウントアップする。ここでは、２から３に更新される。
【００６６】
次に、転送制御装置４０は、該当する連続トランザクション数を読み出す（ステップＳ２７）。本処理では、連続トランザクション数格納機構４１から、受信したＰＣＩトランザクションに対応する連続トランザクション数を読み出す。ここでは、連続トランザクション数として４が読み出される。
【００６７】
次に、転送制御装置４０は、連続トランザクション数に到達したか否かを判定する（ステップＳ２８）。本処理では、前述のステップＳ２６により更新されたトランザクション連続受信回数カウンタ４２と、ステップＳ２７で読み出した連続トランザクション数が一致しているかを判定する。ここでは、トランザクション連続受信回数は３であり、連続トランザクション数４とは一致しない。
【００６８】
その結果、転送制御装置４０は、連続トランザクション数に到達していないと判定し（ステップＳ２８：ＮＯ）、メモリトランザクションを保留する（ステップＳ２９）。すなわち、前述のステップＳ２８において一致しないと判定された場合は、続くトランザクションが短期間の間に発行されると判断できるため、現時点ではメモリ３０に対してメモリトランザクションを発行せず一旦保留する。
【００６９】
（４つ目のＰＣＩトランザクション受信時の動作）
最後に、ＰＣＩカード１０から４つ目のＰＣＩトランザクションを受信すると、転送制御装置４０は、以下のように動作する。
【００７０】
図３において、転送制御装置４０は、４つ目のＰＣＩトランザクションの受信を待つ（ステップＳ２１）。これにより、４つ目のＰＣＩトランザクションが受信されると（ステップＳ２１：ＹＥＳ）、このトランザクションは、一旦ＰＣＩカード１０毎に有するトランザクションバッファ４３内に格納される。このとき、ＰＣＩトランザクションマージ機構４４にトランザクション受信が通知される。
【００７１】
次に、転送制御装置４０は、受信されたＰＣＩトランザクションを解析する（ステップＳ２２）。ここでは、ＰＣＩトランザクションの受信を認識したＰＣＩトランザクションマージ機構４４は、そのトランザクションの内容を解析し、メモリ３０へのデータ転送要求であることを認識する。
【００７２】
次に、転送制御装置４０は、メモリトランザクションを作成する（ステップＳ２３）。ここで、ＰＣＩカード１０から受信するＰＣＩトランザクションと、メモリ３０にデータ転送を要求するメモリトランザクションとは、その形式が異なるのが一般的である。このため、本処理では、メモリ３０にデータ転送を要求する形式に変換したメモリトランザクションを作成する。
【００７３】
次に、転送制御装置４０は、トランザクションが保留中か否かを判定する（ステップＳ２４）。ここでは、１つ目、２つ目、及び３つ目の各トランザクションがマージされたメモリトランザクションが保留されているため、保留中であると判定され（ステップＳ２４：ＹＥＳ）、ステップＳ２５の処理に移行する。
【００７４】
次に、転送制御装置４０は、４つ目のメモリトランザクションをマージする（ステップＳ２５）。ここでは、保留されているメモリトランザクションと、４つ目のメモリトランザクションをマージし、１つのトランザクションとする。
【００７５】
次に、転送制御装置４０は、トランザクション連続受信回数カウンタ４２を更新する（ステップＳ２６）。本処理では、ＰＣＩカード１０毎に存在するトランザクション連続受信回数カウンタ４２をカウントアップする。ここでは、３から４に更新される。
【００７６】
次に、転送制御装置４０は、該当する連続トランザクション数を読み出す（ステップＳ２７）。本処理では、連続トランザクション数格納機構４１から、受信したＰＣＩトランザクションに対応する連続トランザクション数を読み出す。ここでは、連続トランザクション数として４が読み出される。
【００７７】
次に、転送制御装置４０は、連続トランザクション数に到達したか否かを判定する（ステップＳ２８）。本処理では、前述のステップＳ２６により更新されたトランザクション連続受信回数カウンタ４２と、ステップＳ２７で読み出した連続トランザクション数が一致しているか否かを判定する。ここでは、トランザクション連続受信回数は４であり、連続トランザクション数４と一致する。
【００７８】
その結果、転送制御装置４０は、連続トランザクション数に到達したと判定し（ステップＳ２８：ＹＥＳ）、メモリトランザクションを送信する（ステップＳ３０）。すなわち、前述のステップＳ２８において一致した場合は、続くトランザクションが短期間の間に発行されないと判断できるため、メモリトランザクション発行機構４５を通じて、メモリ３０に対してマージしたメモリトランザクションを送信する。
【００７９】
その後、転送制御装置４０は、トランザクション連続受信回数カウンタ４２を初期化する（ステップＳ３１）。本処理では、トランザクション連続受信回数カウンタ４２に０を設定する。
【００８０】
このように動作することで、４つに分割されたＰＣＩトランザクションをマージして１つのメモリトランザクションとして送り出すことが可能である。
【００８１】
従って、本実施の形態によれば、複数のＰＣＩカードを搭載し、周辺装置とメモリ間でデータ転送を行う際、トランザクションの連続性を判定して、小さいデータ長に分割されたＰＣＩトランザクションを効率よくマージして１つのメモリトランザクションとして送り出すことが可能であるため、メモリバスの使用効率を上げることができ、システム転送性能を向上することができる。
【００８２】
また、関連技術でマージする際には、既に続くトランザクションが受信されている場合にマージする方式や、一定期間だけ待って続くトランザクションが受信された場合にのみマージする方式が考えられる。これに対し、本実施の形態では連続してトランザクションが受信されるかを判定することができるため、関連技術に比べ効果的にマージ処理を行うことが出来る。それにより、メモリバスの使用効率を上げることができ、システム転送性能が向上する。
【００８３】
なお、本実施の形態では、連続トランザクション数格納機構は、ＰＣＩカード毎に設定できることとしたが、どのような単位で持つかは限定されない。例えば、連続トランザクション数格納機構を、ＰＣＩカード内のファンクション単位、又は転送制御装置単位等の単位で持つように構成してもよく、連続トランザクション数を、システムに適した単位で格納してもよい。
【００８４】
また、本実施の形態では、予め設定された連続トランザクション数になるまでマージを続けているが、通常、送信するメモリトランザクションのデータ長にも制限があるため、予め設定された連続トランザクション数に満たない場合でも、送り出すメモリトランザクションのデータ長に応じて（例えば、送り出すメモリトランザクションのデータ長が予め設定された制限値を超える場合等）、マージを止め、メモリトランザクションを送信する機能を含めてもよい。
【００８５】
さらに、本実施の形態では、予め設定された連続トランザクション数になるまでマージを続けているが、故障などの特殊な事情に配慮し、一定時間内に連続するトランザクションが受信されない場合は、保留していたメモリトランザクションを送信する機能を含めてもよい。
【００８６】
上記のデータ転送制御装置は、ハードウェア、ソフトウェア又はこれらの組合せにより実現することができる。この場合のハードウェア、ソフトウェア又はこれらの組合せによる構成は特に限定されるものではなく、上述した機能を実現可能なものであれば、いずれの形態でも適用可能である。
【００８７】
上記の実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限定されない。
【００８８】
（付記１）ＰＣＩカードからのＰＣＩトランザクションが連続する回数として予め設定される連続トランザクション数を格納する連続トランザクション数格納部と、前記ＰＣＩカードからのＰＣＩトランザクションが受信されるときに、当該ＰＣＩトランザクションを格納するトランザクションバッファと、前記トランザクションバッファにＰＣＩトランザクションが格納されるときに、当該ＰＣＩトランザクションが連続する回数を計数し、その計数値を記憶するトランザクション連続受信回数カウンタと、前記計数値が前記連続トランザクション数に達するまで、前記ＰＣＩトランザクションに対応するメモリトランザクションをマージして１つのメモリトランザクションとして保留するＰＣＩトランザクションマージ部と、前記計数値が前記連続トランザクション数に達したときに、その時点で保留されているメモリトランザクションをメモリに送り出すメモリトランザクション発行部とを有することを特徴とするデータ転送制御装置。
【００８９】
（付記２）前記連続トランザクション数をＰＣＩカード毎に算出し、その算出値を前記連続トランザクション数に格納する初期化処理を行う制御プロセッサをさらに有することを特徴とする付記１に記載のデータ転送制御装置。
【００９０】
（付記３）前記制御プロセッサは、前記ＰＣＩカードとそれに接続される周辺装置との間でやり取りされるデータのデータ長と、前記ＰＣＩカードから分割して送り出されるＰＣＩトランザクションのデータ長とに基づいて、前記連続トランザクション数を算出することを特徴とする付記２に記載のデータ転送制御装置。
【００９１】
（付記４）前記ＰＣＩトランザクションマージ部は、前記計数値が前記連続トランザクション数に達する前に、送り出すメモリトランザクションのデータ長に応じてマージを中止し、前記メモリトランザクション発行部は、前記マージが中止されたときに、その時点で保留されているメモリトランザクションをメモリに送り出すことを特徴とする付記１から３のいずれかに記載のデータ転送制御装置。
【００９２】
（付記５）前記ＰＣＩトランザクションマージ部は、前記計数値が前記連続トランザクション数に達する前に、一定時間内に連続するＰＣＩトランザクションが受信されないときにマージを中止し、前記メモリトランザクション発行部は、前記マージが中止されたときに、その時点で保留されているメモリトランザクションをメモリに送り出すことを特徴とする付記１から４のいずれかに記載のデータ転送制御装置。
【００９３】
（付記６）連続トランザクション数格納部が、ＰＣＩカードからのＰＣＩトランザクションが連続する回数として予め設定される連続トランザクション数を予め格納し、トランザクションバッファが、前記ＰＣＩカードからのＰＣＩトランザクションが受信されるときに、当該ＰＣＩトランザクションを格納し、トランザクション連続受信回数カウンタが、前記トランザクションバッファにＰＣＩトランザクションが格納されるときに、当該ＰＣＩトランザクションが連続する回数を計数し、その計数値を記憶し、ＰＣＩトランザクションマージ部が、前記計数値が前記連続トランザクション数に達するまで、前記ＰＣＩトランザクションに対応するメモリトランザクションをマージして１つのメモリトランザクションとして保留し、メモリトランザクション発行部が、前記計数値が前記連続トランザクション数に達したときに、その時点で保留されているメモリトランザクションをメモリに送り出すことを特徴とするデータ転送制御方法。
【００９４】
（付記７）制御プロセッサが、前記連続トランザクション数をＰＣＩカード毎に算出し、その算出値を前記連続トランザクション数に格納する初期化処理を行うことを特徴とする付記６に記載のデータ転送制御方法。
【００９５】
（付記８）前記制御プロセッサが、前記ＰＣＩカードとそれに接続される周辺装置との間でやり取りされるデータのデータ長と、前記ＰＣＩカードから分割して送り出されるＰＣＩトランザクションのデータ長とに基づいて、前記連続トランザクション数を算出することを特徴とする付記７に記載のデータ転送制御方法。
【００９６】
（付記９）前記ＰＣＩトランザクションマージ部が、前記計数値が前記連続トランザクション数に達する前に、送り出すメモリトランザクションのデータ長に応じてマージを中止し、前記メモリトランザクション発行部が、前記マージが中止されたときに、その時点で保留されているメモリトランザクションをメモリに送り出すことを特徴とする付記６から８のいずれかに記載のデータ転送制御方法。
【００９７】
（付記１０）前記ＰＣＩトランザクションマージ部が、前記計数値が前記連続トランザクション数に達する前に、一定時間内に連続するＰＣＩトランザクションが受信されないときにマージを中止し、前記メモリトランザクション発行部が、前記マージが中止されたときに、その時点で保留されているメモリトランザクションをメモリに送り出すことを特徴とする付記６から９のいずれかに記載のデータ転送制御方法。
【００９８】
（付記１１）付記１から５のいずれかに記載のデータ転送制御装置と、前記データ転送制御装置に接続されるメモリと、前記データ転送制御装置に接続されるＰＣＩカードとを有することを特徴とするコンピュータシステム。
【００９９】
（付記１２）前記ＰＣＩカードは、複数のＰＣＩカードで構成され、前記連続トランザクション数は、ＰＣＩカード毎に予め設定されることを特徴とする付記１１に記載のコンピュータシステム。
【０１００】
（付記１３）前記データ転送制御装置は、複数のデータ転送制御装置で構成され、前記連続トランザクション数は、データ転送制御装置毎に予め設定されることを特徴とする付記１１に記載のコンピュータシステム。
【０１０１】
以上、各実施の形態を参照して本願発明を説明したが、本願発明は上記各実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【０１０２】
以上説明したように、本発明は、ＰＣＩカードとメモリとの間でデータ転送を行うデータ転送制御装置、データ転送制御方法、およびコンピュータシステムの用途に利用可能である。
【符号の説明】
【０１０３】
１０  ＰＣＩカード（ＨＢＡ）
２０  周辺装置（ディスク装置）
３０  メモリ
４０  データ転送制御装置
４１  連続トランザクション数格納機構
４２  トランザクション連続受信回数カウンタ
４３  トランザクションバッファ
４４  ＰＣＩトランザクションマージ機構
４５  メモリトランザクション発行機構
４６  制御プロセッサ
１００  コンピュータシステム
【図１】
0005387993.tif 000002
【図２】
0005387993.tif 000003
【図３】
0005387993.tif 000004