説明

データ転送制御装置、データ転送制御方法、およびコンピュータシステム

【課題】トランザクションの連続性を考慮してPCIトランザクションを効率的にマージし、システム性能を向上させる。
【解決手段】データ転送制御装置は、予め設定される連続トランザクション数を格納する連続トランザクション数格納部と、PCIトランザクションを格納するトランザクションバッファと、PCIトランザクションが連続する回数を計数し、その計数値を記憶するトランザクション連続受信回数カウンタと、計数値が連続トランザクション数に達するまで、PCIトランザクションに対応するメモリトランザクションをマージして1つのメモリトランザクションとして保留するPCIトランザクションマージ部と、計数値が連続トランザクション数に達したときに、その時点で保留されているメモリトランザクションをメモリに送り出すメモリトランザクション発行部とを有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ転送制御装置、データ転送制御方法、およびコンピュータシステムに関し、特にPCI(Peripheral Component Interconnect)カードとメモリとの間でデータ転送を行うデータ転送制御装置、データ転送制御方法、およびコンピュータシステムに関する。
【背景技術】
【0002】
複数のPCIカードを搭載し、周辺装置とメモリ間でデータ転送を行うコンピュータシステムにおいて、PCIカードからの小さいデータ長に分断されたPCIトランザクションを逐次的に処理し、メモリに送り出す方式が知られている。この方式では、近年のデータ転送速度の向上に伴い、トランザクション間でのオーバヘッド時間が無視できない値となり、メモリバスの使用効率の低下により期待されるシステム転送性能を確保することができなくなっている。
【0003】
上記に関連して、特許文献1には、メモリトランザクション発行部が発行したメモリトランザクションに含まれる主記憶のアドレスを抽出し、抽出されたアドレスに応じて、複数のインタフェースの1つにメモリトランザクションを送信するデータ転送装置が提案されている。これによれば、データ転送装置が接続される計算機内のハードウェアリソース競合を抑制してスループットを向上できるとされている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2010−061194号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
前述したように、PCIトランザクションを逐次的に処理し、メモリに送り出す方式では、データ転送速度の向上に伴い、小さいデータ長に分断されたPCIトランザクションを逐次的に処理していくと、トランザクション切れ目のオーバヘッドが大きくなるため、メモリバスの使用効率が落ち、期待されるシステム転送性能を確保することができない。
【0006】
そのため、トランザクション間でのオーバヘッドを減少させる必要がある。その対策として、小さいデータ長に分断された複数のPCIトランザクションをマージしてメモリへ送り出すことが考えられる。しかし、この場合、通常、PCIトランザクションの到着の連続性が予測できないため、一定時間内に続くPCIトランザクションが到着しマージ可能と判断できるケースのみマージするような機能しか実現ができない。
【0007】
すなわち、複数のトランザクションをマージしてメモリバスへ流す場合、通常、トランザクションの連続性が予測できないため、既に続くトランザクションが到着しているケースや続くトランザクションが一定時間内に到着した場合にしかマージできず、効率の良いマージができないという課題がある。このため、効率の良いマージ方式が求められている。
【0008】
一方、特許文献1のデータ転送装置は、複数のトランザクションをマージする場合を特に考慮したものではない。
【0009】
本発明の目的は、上記課題を解決し、トランザクションの連続性を考慮してPCIトランザクションを効率的にマージし、システム性能を向上させることができるデータ転送制御装置、データ転送制御方法、およびコンピュータシステムを提供することにある。
【課題を解決するための手段】
【0010】
本発明の第1の観点によれば、PCIカードからのPCIトランザクションが連続する回数として予め設定される連続トランザクション数を格納する連続トランザクション数格納部と、前記PCIカードからのPCIトランザクションが受信されるときに、当該PCIトランザクションを格納するトランザクションバッファと、前記トランザクションバッファにPCIトランザクションが格納されるときに、当該PCIトランザクションが連続する回数を計数し、その計数値を記憶するトランザクション連続受信回数カウンタと、前記計数値が前記連続トランザクション数に達するまで、前記PCIトランザクションに対応するメモリトランザクションをマージして1つのメモリトランザクションとして保留するPCIトランザクションマージ部と、前記計数値が前記連続トランザクション数に達したときに、その時点で保留されているメモリトランザクションをメモリに送り出すメモリトランザクション発行部とを有することを特徴とするデータ転送制御装置が提供される。
【0011】
本発明の第2の観点によれば、連続トランザクション数格納部が、PCIカードからのPCIトランザクションが連続する回数として予め設定される連続トランザクション数を格納し、トランザクションバッファが、前記PCIカードからのPCIトランザクションが受信されるときに、当該PCIトランザクションを格納し、トランザクション連続受信回数カウンタが、前記トランザクションバッファにPCIトランザクションが格納されるときに、当該PCIトランザクションが連続する回数を計数し、その計数値を記憶し、PCIトランザクションマージ部が、前記計数値が前記連続トランザクション数に達するまで、前記PCIトランザクションに対応するメモリトランザクションをマージして1つのメモリトランザクションとして保留し、メモリトランザクション発行部が、前記計数値が前記連続トランザクション数に達したときに、その時点で保留されているメモリトランザクションをメモリに送り出すことを特徴とするデータ転送制御方法が提供される。
【0012】
本発明の第3の観点によれば、上記に記載のデータ転送制御装置と、前記データ転送制御装置に接続されるメモリと、前記データ転送制御装置に接続されるPCIカードとを有することを特徴とするコンピュータシステムが提供される。
【発明の効果】
【0013】
本発明によれば、トランザクションの連続性を考慮してPCIトランザクションを効率的にマージし、システム性能を向上させることができる。
【図面の簡単な説明】
【0014】
【図1】本発明の実施の形態に係るデータ転送制御装置を含むコンピュータシステムの構成を示すブロック図である。
【図2】図1に示すデータ転送制御装置による初期化処理を説明するフローチャートである。
【図3】図1に示すデータ転送制御装置によるトランザクション処理を説明するフローチャートである。
【発明を実施するための形態】
【0015】
以下、本発明に係るデータ転送制御装置、データ転送制御方法、およびコンピュータシステムの実施の形態について、図面を参照して詳細に説明する。
【0016】
図1は、本実施の形態に係るデータ転送制御装置を含むコンピュータシステムの構成を示す。
【0017】
図1に示す本実施の形態のコンピュータシステム100は、複数(図中の例では4つ)のホストバスアダプタ(HBA)等のPCIカード(図中の例では、HBA1〜HBA4)10を搭載し、各PCIカード10を介して個別に接続された複数のディスク装置等の周辺装置(図中の例では、ディスク装置)20と、メモリ30との間のデータ転送を行うものを前提としている。具体的に、このコンピュータシステムは、複数のPCIカード10を一括管理し、各PCIカード10とメモリ30との間のデータ転送を行うデータ転送制御装置(以下、転送制御装置)40を複数含み、各転送制御装置40が同一のメモリ30とデータ転送を行う構成である。
【0018】
この構成において、本実施の形態では、PCIカード10毎にPCIトランザクションが連続する回数の推定値を予め設定しておき、その回数までは連続してトランザクションが受信されるものとしてマージ動作を行う。このマージ動作は、トランザクションが連続する回数の設定値が実際のものと等しいほど効率が上がるため、本実施の形態では、以下のように転送制御装置40を構成している。
【0019】
すなわち、この転送制御装置40は、連続トランザクション数格納機構(連続トランザクション数格納部)41、トランザクション連続受信回数カウンタ42、複数のPCIカード10用(図中の例では、HBA1用〜HBA4用)のトランザクションバッファ43、PCIトランザクションマージ機構(PCIトランザクションマージ部)44、メモリトランザクション発行機構(メモリトランザクション発行部)45、および制御プロセッサ46を含む。
【0020】
連続トランザクション数格納機構41は、制御プロセッサ46によるPCIカード10の初期化処理(後述参照)により算出及び設定される、PCIカード10毎に連続するトランザクション数を予め格納する。
【0021】
トランザクション連続受信回数カウンタ42は、転送制御装置40によるトランザクション処理(後述参照)時に、PCIカード10毎にPCIトランザクションが何回連続して受信したかをカウントし、その値を記憶する。
【0022】
トランザクションバッファ43は、PCIカード10毎に個別に設けられ、転送制御装置40によるトランザクション処理(後述参照)時に、PCIカード10毎にPCIトランザクションを格納する。
【0023】
PCIトランザクションマージ機構44は、転送制御装置40によるトランザクション処理(後述参照)時に、連続トランザクション数格納機構41に予め格納されている連続トランザクション数の値とトランザクション連続受信回数カウンタ42の値とにより、受信したトランザクションをマージする。
【0024】
メモリトランザクション発行機構45は、転送制御装置40によるトランザクション処理(後述参照)時に、PCIトランザクションマージ機構44によりマージされたトランザクションをメモリ30に送り出す。
【0025】
制御プロセッサ46は、転送制御装置40によるPCIカード10の初期化処理(後述参照)時に、PCIカード10毎に適切な連続トランザクション数を算出し、その値を連続トランザクション数格納機構41に設定する。
【0026】
次に、本実施の形態の動作について説明する。
【0027】
本実施の形態の特徴的な動作は、大きく分けて2つある。1つ目は、転送制御装置40による初期化処理である。2つ目は、転送制御装置40によるトランザクション処理である。
【0028】
まず、1つ目の転送制御装置40による初期化処理について、図2に示すフローチャートに基づき説明する。
【0029】
ここで、転送制御装置40では、実際にPCIカード10とメモリ30間のデータ転送を行う前に、制御プロセッサ46によりPCIカード10の初期化処理が行われる。これは、一般的な処理であり、制御プロセッサ46は、PCIカード10の種別を認識し、その種別に応じたPCIカード10の初期化処理を行う。即ち、制御プロセッサ46は、どのようなPCIカード10が搭載されているかを認識しているのが一般的である。この初期化処理の一環として、以下の転送制御装置40による初期化処理が制御プロセッサ46により実施される。
【0030】
図2において、転送制御装置40は、配下に接続されているPCIカード10を検索する(ステップS11)。これにより、制御プロセッサ46は配下に搭載されているPCIカード10の種別を認識できる。ここでは、実際に搭載されているPCIカード10を認識しその種別を判断しているが、予め構成情報などにより搭載されるべきPCIカード20が限定できる場合は、実際に搭載されているPCIカード10を認識する必要はない。重要なのは、配下に搭載されているPCIカード10の種別を制御プロセッサ46が把握できていることである。
【0031】
続いて、転送制御装置40は、PCIカード10が全て検索済みか否かを判断する(ステップS12)。その結果、PCIカード10が全て検索済みであり、他に搭載されているPCIカード10が無ければ(ステップS12:YES)、処理を終了する。
【0032】
一方、PCIカード10が全て検索済みでなく、他に搭載されているPCIカード10が有れば(ステップS12:NO)、転送制御装置40は、PCIカード10の初期化処理を行う(ステップS13)。本処理は、本発明とは直接関わりが無いので詳細は省略するが、一般的にはPCIカード10にアクセスするためのアドレスの設定やPCIカード10からの割込み機能の設定等が行われる。
【0033】
次いで、転送制御装置40は、制御プロセッサ46により、PCIカード10からのPCIトランザクションが連続する回数として、連続トランザクション数を算出する(ステップS14)。ここで、通常、周辺装置20とデータ転送をする際には、予め決められたお互いの能力に応じた転送量に分割され転送されるのが一般的である。この転送量とPCIトランザクションのデータ長には関連性が無く、複数のPCIトランザクションに分割されることがある。この際、PCIカード10内に存在するデータを、複数の小さいデータ長のPCIトランザクションに分割して送り出すため、その数だけはPCIトランザクションが連続して発行されることとなる。
【0034】
例えば、PCIカード10が周辺装置(ディスク装置)20との間で1Kバイトのデータ長でやり取りすると決められており、PCIカード10はデータ長256バイトのPCIトランザクションに分割して送り出すとすれば、データ長256バイトのトランザクションが4回連続して送り出されることになる。このような種別のPCIカード10の場合、制御プロセッサ46は、連続トランザクション数を4と算出する。
【0035】
この場合、制御プロセッサ46は、PCIカード10からのPCIトランザクションが連続する回数として、PCIカード10と周辺装置20との間でやり取りされるデータのデータ長と、PCIカード10から分割して送り出されるPCIトランザクションのデータ長とに基づいて、連続トランザクション数を算出する。
【0036】
続いて、転送制御装置40は、制御プロセッサ46により算出された連続トランザクション数の算出値を連続トランザクション数格納機構41に格納する(ステップS15)。本処理では、制御プロセッサ46は、前述のように算出された連続トランザクション数をPCIカード10毎に記憶することが可能な連続トランザクション数格納機構41に格納する。ここでは、全てのPCIカード10が同一の種別のものであるので、連続トランザクション数は全て4が格納される。
【0037】
このステップS15の処理後、ステップS11に戻り、以下同様の処理を繰り返す。これにより、上記の処理を配下の全PCIカード10に対して実施した後に、ステップS12により全て検索済み(YES)と判断され、転送制御装置40による初期化処理が完了する。
【0038】
次に、2つ目の転送制御装置によるトランザクション処理について、図3に示すフローチャートに基づき説明する。
【0039】
図2に示す初期化処理が完了後、転送制御装置40は、PCIカード10からトランザクションを受信すると、そのデータ転送要求を解釈して、指定されたメモリ30へデータ転送を行う。PCIカード10は、ディスク装置20より一定のデータ長(ここでは、1Kバイトとする)を受信すると、転送制御装置40に対し、データ転送を行うため、データ転送のトランザクションを送り出す。ここでは、前述のように4つのデータ長256バイトのPCIトランザクションに分割されるとする。
【0040】
(1つ目のPCIトランザクション受信時の動作)
まず、PCIカード10から1つ目のPCIトランザクションを受信すると、転送制御装置40は、以下のように動作する。
【0041】
図3において、転送制御装置40は、1つ目のPCIトランザクションの受信を待つ(ステップS21)。これにより、1つ目のPCIトランザクションが受信されると(ステップS21:YES)、このトランザクションは、一旦PCIカード10毎に有するトランザクションバッファ43内に格納される。このとき、PCIトランザクションマージ機構44にトランザクション受信が通知される。
【0042】
次に、転送制御装置40は、受信されたPCIトランザクションを解析する(ステップS22)。ここでは、PCIトランザクションの受信を認識したPCIトランザクションマージ機構44は、そのトランザクションの内容を解析し、メモリ30へのデータ転送要求であることを認識する。
【0043】
次に、転送制御装置40は、メモリトランザクションを作成する(ステップS23)。ここで、PCIカード10から受信するPCIトランザクションと、メモリ30にデータ転送を要求するメモリトランザクションとは、その形式が異なるのが一般的である。このため、本処理では、1つ目のPCIトランザクションを、メモリ30にデータ転送を要求する形式に変換したメモリトランザクションを作成する。
【0044】
次に、転送制御装置40は、トランザクションが保留中か否かを判定する(ステップS24)。ここでは、トランザクションの保留は無いので、保留中でないと判定され(ステップS24:NO)、ステップS26の処理に移行する。
【0045】
次に、転送制御装置40は、トランザクション連続受信回数カウンタ42を更新する(ステップS26)。すなわち、PCIカード10毎に存在するトランザクション連続受信回数カウンタ42をカウントアップする。ここでは、初期値である0から1に更新される。
【0046】
次に、転送制御装置40は、該当する連続トランザクション数を読み出す(ステップS27)。本処理では、連続トランザクション数格納機構41から、受信したPCIトランザクションに対応する連続トランザクション数を読み出す。ここでは、連続トランザクション数として4が読み出される。
【0047】
次に、転送制御装置40は、連続トランザクション数に到達したか否かを判定する(ステップS28)。すなわち、前述のステップS26により更新されたトランザクション連続受信回数カウンタ42と、ステップS27で読み出した連続トランザクション数が一致しているかを判定する。ここでは、トランザクション連続受信回数は1であり、連続トランザクション数4とは一致しない。
【0048】
その結果、転送制御装置40は、連続トランザクション数に到達していないと判定し(ステップS28:NO)、メモリトランザクションを保留する(ステップS29)。すなわち、前述のステップS28において一致しないと判定された場合は、続くトランザクションが短期間の間に発行されると判断できるため、現時点ではメモリ30に対してメモリトランザクションを発行せず一旦保留する。
【0049】
(2つ目のPCIトランザクション受信時の動作)
続いて、PCIカード10から2つ目のPCIトランザクションを受信すると、転送制御装置40は、以下のように動作する。
【0050】
図3において、転送制御装置40は、2つ目のPCIトランザクションの受信を待つ(ステップS21)。これにより、2つ目のPCIトランザクションが受信されると(ステップS21:YES)、このトランザクションは、一旦PCIカード10毎に有するトランザクションバッファ43内に格納される。このとき、PCIトランザクションマージ機構44にトランザクション受信が通知される。
【0051】
次に、転送制御装置40は、受信されたPCIトランザクションを解析する(ステップS22)。ここでは、PCIトランザクションの受信を認識したPCIトランザクションマージ機構44は、そのトランザクションの内容を解析し、メモリ30へのデータ転送要求であることを認識する。
【0052】
次に、転送制御装置40は、メモリトランザクションを作成する(ステップS23)。ここで、PCIカード10から受信するPCIトランザクションと、メモリ30にデータ転送を要求するメモリトランザクションとは、その形式が異なるのが一般的である。このため、本処理では、2つ目のPCIトランザクションを、メモリ30にデータ転送を要求する形式に変換したメモリトランザクションを作成する。
【0053】
次に、転送制御装置40は、トランザクションが保留中か否かを判定する(ステップS24)。ここでは、1つ目のメモリトランザクションが保留されているため、保留中であると判定され(ステップS24:YES)、ステップS25の処理に移行する。
【0054】
次に、転送制御装置40は、2つ目のメモリトランザクションをマージする(ステップS25)。ここでは、保留されているメモリトランザクションと、2つ目のメモリトランザクションをマージし、1つのメモリトランザクションとする。
【0055】
次に、転送制御装置40は、トランザクション連続受信回数カウンタ42を更新する(ステップS26)。本処理では、PCIカード10毎に存在するトランザクション連続受信回数カウンタをカウントアップする。ここでは、1から2に更新される。
【0056】
次に、転送制御装置40は、該当する連続トランザクション数を読み出す(ステップS27)。本処理では、連続トランザクション数格納機構41から、受信したPCIトランザクションに対応する連続トランザクション数を読み出す。ここでは、連続トランザクション数として4が読み出される。
【0057】
次に、転送制御装置40は、連続トランザクション数に到達したか否かを判定する(ステップS28)。本処理では、前述のステップS26により更新されたトランザクション連続受信回数カウンタ42と、ステップS27で読み出した連続トランザクション数が一致しているかを判定する。ここでは、トランザクション連続受信回数は2であり、連続トランザクション数4とは一致しない。
【0058】
その結果、転送制御装置40は、連続トランザクション数に到達していないと判定し(ステップS28:NO)、メモリトランザクションを保留する(ステップS29)。すなわち、前述のステップS28において一致しないと判定された場合は、続くトランザクションが短期間の間に発行されると判断できるため、現時点ではメモリ30に対してメモリトランザクションを発行せず一旦保留する。
【0059】
(3つ目のPCIトランザクション受信時の動作)
続いて、PCIカード10から3つ目のPCIトランザクションを受信すると、転送制御装置40は、以下のように動作する。
【0060】
図3において、転送制御装置40は、3つ目のPCIトランザクションの受信を待つ(ステップS21)。これにより、3つ目のPCIトランザクションが受信されると(ステップS21:YES)、このトランザクションは、一旦PCIカード10毎に有するトランザクションバッファ43内に格納される。このとき、PCIトランザクションマージ機構44にトランザクション受信が通知される。
【0061】
次に、転送制御装置40は、受信された3つ目のPCIトランザクションを解析する(ステップS22)。ここでは、PCIトランザクションの受信を認識したPCIトランザクションマージ機構44は、そのトランザクションの内容を解析し、メモリ30へのデータ転送要求であることを認識する。
【0062】
次に、転送制御装置40は、メモリトランザクションを作成する(ステップS23)。ここで、PCIカード10から受信するPCIトランザクションと、メモリ10にデータ転送を要求するメモリトランザクションとは、その形式が異なるのが一般的である。このため、本処理では、3つ目のPCIトランザクションを、メモリ30にデータ転送を要求する形式に変換したメモリトランザクションを作成する。
【0063】
次に、転送制御装置40は、トランザクションが保留中か否かを判定する(ステップS24)。ここでは、1つ目と2つ目の各メモリトランザクションがマージされたメモリトランザクションが保留されているため、保留中であると判定され(ステップS24:YES)、ステップS25の処理に移行する。
【0064】
次に、転送制御装置40は、3つ目のメモリトランザクションをマージする(ステップS25)。ここでは、保留されているメモリトランザクションと、3つ目のメモリトランザクションをマージし、1つのトランザクションとする。
【0065】
次に、転送制御装置40は、トランザクション連続受信回数カウンタ42を更新する(ステップS26)。ここでは、PCIカード10毎に存在するトランザクション連続受信回数カウンタ42をカウントアップする。ここでは、2から3に更新される。
【0066】
次に、転送制御装置40は、該当する連続トランザクション数を読み出す(ステップS27)。本処理では、連続トランザクション数格納機構41から、受信したPCIトランザクションに対応する連続トランザクション数を読み出す。ここでは、連続トランザクション数として4が読み出される。
【0067】
次に、転送制御装置40は、連続トランザクション数に到達したか否かを判定する(ステップS28)。本処理では、前述のステップS26により更新されたトランザクション連続受信回数カウンタ42と、ステップS27で読み出した連続トランザクション数が一致しているかを判定する。ここでは、トランザクション連続受信回数は3であり、連続トランザクション数4とは一致しない。
【0068】
その結果、転送制御装置40は、連続トランザクション数に到達していないと判定し(ステップS28:NO)、メモリトランザクションを保留する(ステップS29)。すなわち、前述のステップS28において一致しないと判定された場合は、続くトランザクションが短期間の間に発行されると判断できるため、現時点ではメモリ30に対してメモリトランザクションを発行せず一旦保留する。
【0069】
(4つ目のPCIトランザクション受信時の動作)
最後に、PCIカード10から4つ目のPCIトランザクションを受信すると、転送制御装置40は、以下のように動作する。
【0070】
図3において、転送制御装置40は、4つ目のPCIトランザクションの受信を待つ(ステップS21)。これにより、4つ目のPCIトランザクションが受信されると(ステップS21:YES)、このトランザクションは、一旦PCIカード10毎に有するトランザクションバッファ43内に格納される。このとき、PCIトランザクションマージ機構44にトランザクション受信が通知される。
【0071】
次に、転送制御装置40は、受信されたPCIトランザクションを解析する(ステップS22)。ここでは、PCIトランザクションの受信を認識したPCIトランザクションマージ機構44は、そのトランザクションの内容を解析し、メモリ30へのデータ転送要求であることを認識する。
【0072】
次に、転送制御装置40は、メモリトランザクションを作成する(ステップS23)。ここで、PCIカード10から受信するPCIトランザクションと、メモリ30にデータ転送を要求するメモリトランザクションとは、その形式が異なるのが一般的である。このため、本処理では、メモリ30にデータ転送を要求する形式に変換したメモリトランザクションを作成する。
【0073】
次に、転送制御装置40は、トランザクションが保留中か否かを判定する(ステップS24)。ここでは、1つ目、2つ目、及び3つ目の各トランザクションがマージされたメモリトランザクションが保留されているため、保留中であると判定され(ステップS24:YES)、ステップS25の処理に移行する。
【0074】
次に、転送制御装置40は、4つ目のメモリトランザクションをマージする(ステップS25)。ここでは、保留されているメモリトランザクションと、4つ目のメモリトランザクションをマージし、1つのトランザクションとする。
【0075】
次に、転送制御装置40は、トランザクション連続受信回数カウンタ42を更新する(ステップS26)。本処理では、PCIカード10毎に存在するトランザクション連続受信回数カウンタ42をカウントアップする。ここでは、3から4に更新される。
【0076】
次に、転送制御装置40は、該当する連続トランザクション数を読み出す(ステップS27)。本処理では、連続トランザクション数格納機構41から、受信したPCIトランザクションに対応する連続トランザクション数を読み出す。ここでは、連続トランザクション数として4が読み出される。
【0077】
次に、転送制御装置40は、連続トランザクション数に到達したか否かを判定する(ステップS28)。本処理では、前述のステップS26により更新されたトランザクション連続受信回数カウンタ42と、ステップS27で読み出した連続トランザクション数が一致しているか否かを判定する。ここでは、トランザクション連続受信回数は4であり、連続トランザクション数4と一致する。
【0078】
その結果、転送制御装置40は、連続トランザクション数に到達したと判定し(ステップS28:YES)、メモリトランザクションを送信する(ステップS30)。すなわち、前述のステップS28において一致した場合は、続くトランザクションが短期間の間に発行されないと判断できるため、メモリトランザクション発行機構45を通じて、メモリ30に対してマージしたメモリトランザクションを送信する。
【0079】
その後、転送制御装置40は、トランザクション連続受信回数カウンタ42を初期化する(ステップS31)。本処理では、トランザクション連続受信回数カウンタ42に0を設定する。
【0080】
このように動作することで、4つに分割されたPCIトランザクションをマージして1つのメモリトランザクションとして送り出すことが可能である。
【0081】
従って、本実施の形態によれば、複数のPCIカードを搭載し、周辺装置とメモリ間でデータ転送を行う際、トランザクションの連続性を判定して、小さいデータ長に分割されたPCIトランザクションを効率よくマージして1つのメモリトランザクションとして送り出すことが可能であるため、メモリバスの使用効率を上げることができ、システム転送性能を向上することができる。
【0082】
また、関連技術でマージする際には、既に続くトランザクションが受信されている場合にマージする方式や、一定期間だけ待って続くトランザクションが受信された場合にのみマージする方式が考えられる。これに対し、本実施の形態では連続してトランザクションが受信されるかを判定することができるため、関連技術に比べ効果的にマージ処理を行うことが出来る。それにより、メモリバスの使用効率を上げることができ、システム転送性能が向上する。
【0083】
なお、本実施の形態では、連続トランザクション数格納機構は、PCIカード毎に設定できることとしたが、どのような単位で持つかは限定されない。例えば、連続トランザクション数格納機構を、PCIカード内のファンクション単位、又は転送制御装置単位等の単位で持つように構成してもよく、連続トランザクション数を、システムに適した単位で格納してもよい。
【0084】
また、本実施の形態では、予め設定された連続トランザクション数になるまでマージを続けているが、通常、送信するメモリトランザクションのデータ長にも制限があるため、予め設定された連続トランザクション数に満たない場合でも、送り出すメモリトランザクションのデータ長に応じて(例えば、送り出すメモリトランザクションのデータ長が予め設定された制限値を超える場合等)、マージを止め、メモリトランザクションを送信する機能を含めてもよい。
【0085】
さらに、本実施の形態では、予め設定された連続トランザクション数になるまでマージを続けているが、故障などの特殊な事情に配慮し、一定時間内に連続するトランザクションが受信されない場合は、保留していたメモリトランザクションを送信する機能を含めてもよい。
【0086】
上記のデータ転送制御装置は、ハードウェア、ソフトウェア又はこれらの組合せにより実現することができる。この場合のハードウェア、ソフトウェア又はこれらの組合せによる構成は特に限定されるものではなく、上述した機能を実現可能なものであれば、いずれの形態でも適用可能である。
【0087】
上記の実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限定されない。
【0088】
(付記1)PCIカードからのPCIトランザクションが連続する回数として予め設定される連続トランザクション数を格納する連続トランザクション数格納部と、前記PCIカードからのPCIトランザクションが受信されるときに、当該PCIトランザクションを格納するトランザクションバッファと、前記トランザクションバッファにPCIトランザクションが格納されるときに、当該PCIトランザクションが連続する回数を計数し、その計数値を記憶するトランザクション連続受信回数カウンタと、前記計数値が前記連続トランザクション数に達するまで、前記PCIトランザクションに対応するメモリトランザクションをマージして1つのメモリトランザクションとして保留するPCIトランザクションマージ部と、前記計数値が前記連続トランザクション数に達したときに、その時点で保留されているメモリトランザクションをメモリに送り出すメモリトランザクション発行部とを有することを特徴とするデータ転送制御装置。
【0089】
(付記2)前記連続トランザクション数をPCIカード毎に算出し、その算出値を前記連続トランザクション数に格納する初期化処理を行う制御プロセッサをさらに有することを特徴とする付記1に記載のデータ転送制御装置。
【0090】
(付記3)前記制御プロセッサは、前記PCIカードとそれに接続される周辺装置との間でやり取りされるデータのデータ長と、前記PCIカードから分割して送り出されるPCIトランザクションのデータ長とに基づいて、前記連続トランザクション数を算出することを特徴とする付記2に記載のデータ転送制御装置。
【0091】
(付記4)前記PCIトランザクションマージ部は、前記計数値が前記連続トランザクション数に達する前に、送り出すメモリトランザクションのデータ長に応じてマージを中止し、前記メモリトランザクション発行部は、前記マージが中止されたときに、その時点で保留されているメモリトランザクションをメモリに送り出すことを特徴とする付記1から3のいずれかに記載のデータ転送制御装置。
【0092】
(付記5)前記PCIトランザクションマージ部は、前記計数値が前記連続トランザクション数に達する前に、一定時間内に連続するPCIトランザクションが受信されないときにマージを中止し、前記メモリトランザクション発行部は、前記マージが中止されたときに、その時点で保留されているメモリトランザクションをメモリに送り出すことを特徴とする付記1から4のいずれかに記載のデータ転送制御装置。
【0093】
(付記6)連続トランザクション数格納部が、PCIカードからのPCIトランザクションが連続する回数として予め設定される連続トランザクション数を予め格納し、トランザクションバッファが、前記PCIカードからのPCIトランザクションが受信されるときに、当該PCIトランザクションを格納し、トランザクション連続受信回数カウンタが、前記トランザクションバッファにPCIトランザクションが格納されるときに、当該PCIトランザクションが連続する回数を計数し、その計数値を記憶し、PCIトランザクションマージ部が、前記計数値が前記連続トランザクション数に達するまで、前記PCIトランザクションに対応するメモリトランザクションをマージして1つのメモリトランザクションとして保留し、メモリトランザクション発行部が、前記計数値が前記連続トランザクション数に達したときに、その時点で保留されているメモリトランザクションをメモリに送り出すことを特徴とするデータ転送制御方法。
【0094】
(付記7)制御プロセッサが、前記連続トランザクション数をPCIカード毎に算出し、その算出値を前記連続トランザクション数に格納する初期化処理を行うことを特徴とする付記6に記載のデータ転送制御方法。
【0095】
(付記8)前記制御プロセッサが、前記PCIカードとそれに接続される周辺装置との間でやり取りされるデータのデータ長と、前記PCIカードから分割して送り出されるPCIトランザクションのデータ長とに基づいて、前記連続トランザクション数を算出することを特徴とする付記7に記載のデータ転送制御方法。
【0096】
(付記9)前記PCIトランザクションマージ部が、前記計数値が前記連続トランザクション数に達する前に、送り出すメモリトランザクションのデータ長に応じてマージを中止し、前記メモリトランザクション発行部が、前記マージが中止されたときに、その時点で保留されているメモリトランザクションをメモリに送り出すことを特徴とする付記6から8のいずれかに記載のデータ転送制御方法。
【0097】
(付記10)前記PCIトランザクションマージ部が、前記計数値が前記連続トランザクション数に達する前に、一定時間内に連続するPCIトランザクションが受信されないときにマージを中止し、前記メモリトランザクション発行部が、前記マージが中止されたときに、その時点で保留されているメモリトランザクションをメモリに送り出すことを特徴とする付記6から9のいずれかに記載のデータ転送制御方法。
【0098】
(付記11)付記1から5のいずれかに記載のデータ転送制御装置と、前記データ転送制御装置に接続されるメモリと、前記データ転送制御装置に接続されるPCIカードとを有することを特徴とするコンピュータシステム。
【0099】
(付記12)前記PCIカードは、複数のPCIカードで構成され、前記連続トランザクション数は、PCIカード毎に予め設定されることを特徴とする付記11に記載のコンピュータシステム。
【0100】
(付記13)前記データ転送制御装置は、複数のデータ転送制御装置で構成され、前記連続トランザクション数は、データ転送制御装置毎に予め設定されることを特徴とする付記11に記載のコンピュータシステム。
【0101】
以上、各実施の形態を参照して本願発明を説明したが、本願発明は上記各実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【0102】
以上説明したように、本発明は、PCIカードとメモリとの間でデータ転送を行うデータ転送制御装置、データ転送制御方法、およびコンピュータシステムの用途に利用可能である。
【符号の説明】
【0103】
10 PCIカード(HBA)
20 周辺装置(ディスク装置)
30 メモリ
40 データ転送制御装置
41 連続トランザクション数格納機構
42 トランザクション連続受信回数カウンタ
43 トランザクションバッファ
44 PCIトランザクションマージ機構
45 メモリトランザクション発行機構
46 制御プロセッサ
100 コンピュータシステム

【特許請求の範囲】
【請求項1】
PCIカードからのPCIトランザクションが連続する回数として予め設定される連続トランザクション数を格納する連続トランザクション数格納部と、
前記PCIカードからのPCIトランザクションが受信されるときに、当該PCIトランザクションを格納するトランザクションバッファと、
前記トランザクションバッファにPCIトランザクションが格納されるときに、当該PCIトランザクションが連続する回数を計数し、その計数値を記憶するトランザクション連続受信回数カウンタと、
前記計数値が前記連続トランザクション数に達するまで、前記PCIトランザクションに対応するメモリトランザクションをマージして1つのメモリトランザクションとして保留するPCIトランザクションマージ部と、
前記計数値が前記連続トランザクション数に達したときに、その時点で保留されているメモリトランザクションをメモリに送り出すメモリトランザクション発行部とを有することを特徴とするデータ転送制御装置。
【請求項2】
前記連続トランザクション数をPCIカード毎に算出し、その算出値を前記連続トランザクション数に格納する初期化処理を行う制御プロセッサをさらに有することを特徴とする請求項1に記載のデータ転送制御装置。
【請求項3】
前記制御プロセッサは、前記PCIカードとそれに接続される周辺装置との間でやり取りされるデータのデータ長と、前記PCIカードから分割して送り出されるPCIトランザクションのデータ長とに基づいて、前記連続トランザクション数を算出することを特徴とする請求項2に記載のデータ転送制御装置。
【請求項4】
前記PCIトランザクションマージ部は、前記計数値が前記連続トランザクション数に達する前に、送り出すメモリトランザクションのデータ長に応じてマージを中止し、
前記メモリトランザクション発行部は、前記マージが中止されたときに、その時点で保留されているメモリトランザクションをメモリに送り出すことを特徴とする請求項1から3のいずれか1項に記載のデータ転送制御装置。
【請求項5】
前記PCIトランザクションマージ部は、前記計数値が前記連続トランザクション数に達する前に、一定時間内に連続するPCIトランザクションが受信されないときにマージを中止し、
前記メモリトランザクション発行部は、前記マージが中止されたときに、その時点で保留されているメモリトランザクションをメモリに送り出すことを特徴とする請求項1から4のいずれかに記載のデータ転送制御装置。
【請求項6】
連続トランザクション数格納部が、PCIカードからのPCIトランザクションが連続する回数として予め設定される連続トランザクション数を格納し、
トランザクションバッファが、前記PCIカードからのPCIトランザクションが受信されるときに、当該PCIトランザクションを格納し、
トランザクション連続受信回数カウンタが、前記トランザクションバッファにPCIトランザクションが格納されるときに、当該PCIトランザクションが連続する回数を計数し、その計数値を記憶し、
PCIトランザクションマージ部が、前記計数値が前記連続トランザクション数に達するまで、前記PCIトランザクションに対応するメモリトランザクションをマージして1つのメモリトランザクションとして保留し、
メモリトランザクション発行部が、前記計数値が前記連続トランザクション数に達したときに、その時点で保留されているメモリトランザクションをメモリに送り出すことを特徴とするデータ転送制御方法。
【請求項7】
制御プロセッサが、前記連続トランザクション数をPCIカード毎に算出し、その算出値を前記連続トランザクション数に格納する初期化処理を行うことを特徴とする請求項6に記載のデータ転送制御方法。
【請求項8】
請求項1から5のいずれかに記載のデータ転送制御装置と、
前記データ転送制御装置に接続されるメモリと、
前記データ転送制御装置に接続されるPCIカードとを有することを特徴とするコンピュータシステム。
【請求項9】
前記PCIカードは、複数のPCIカードで構成され、
前記連続トランザクション数は、PCIカード毎に予め設定されることを特徴とする請求項8に記載のコンピュータシステム。
【請求項10】
前記データ転送制御装置は、複数のデータ転送制御装置で構成され、
前記連続トランザクション数は、データ転送制御装置毎に予め設定されることを特徴とする請求項8に記載のコンピュータシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2012−226521(P2012−226521A)
【公開日】平成24年11月15日(2012.11.15)
【国際特許分類】
【出願番号】特願2011−92925(P2011−92925)
【出願日】平成23年4月19日(2011.4.19)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】