(57)【要約】【課題】周辺装置から送信されたデータを効率よくメモリに転送する。【解決手段】トランザクションバッファ１１は、ＰＣＩ２２カードから、所定境界アドレス、及び所定データ幅でアクセス可能なメモリ２３への書込みデータを含むＰＣＩトランザクションを受信する。マージ回数決定手段１２は、メモリ２３への書込みデータの書込みアドレスと境界アドレスとの差を示すオフセットアドレス値、データ幅、及び書込みデータのデータ量に基づいて書込みデータのメモリ２３への転送時間を推定する。マージ回数決定手段１２は、ステイした転送時間とＰＣＩトランザクションの受信間隔とに基づいてマージ回数を決定する。トランザクションマージ手段１３は、マージ回数決定手段１３が決定したマージ回数分のＰＣＩトランザクションをマージする。【選択図】図１
2019121316.tif 000002
【特許請求の範囲】
【請求項１】
ＰＣＩ（Peripheral Component Interconnect）カードから、メモリへの書込みデータを含むＰＣＩトランザクションを受信し、格納するトランザクションバッファと、
前記ＰＣＩトランザクションをマージする場合に何回分のＰＣＩトランザクションをマージするかを示すマージ回数を決定するマージ回数決定手段と、
前記マージ回数決定手段が決定した前記マージ回数分のＰＣＩトランザクションをマージするトランザクションマージ手段と、
前記トランザクションマージ手段でマージされたＰＣＩトランザクションに基づいて、前記書込みデータを前記メモリに書き込むためのメモリトランザクションを発行するメモリトランザクション発行手段とを備え、
前記メモリは、所定境界アドレス、及び所定データ幅でアクセス可能であり、
前記マージ回数決定手段は、前記書込みデータの書込みアドレスと前記境界アドレスとの差を示すオフセットアドレス値、前記データ幅、及び前記書込みデータのデータ量に基づいて前記書込みデータの前記メモリへの転送時間を推定し、該転送時間と前記ＰＣＩトランザクションの受信間隔とに基づいて前記マージ回数を決定するデータ転送制御装置。
【請求項２】
前記マージ回数決定手段は、マージ回数カウンタを含み、前記受信間隔が前記転送時間以下の場合は前記マージ回数カウンタをカウントアップし、前記受信間隔が前記転送時間より長い場合は、前記マージ回数カウンタのカウント値を前記マージ回数として決定する請求項１に記載のデータ転送制御装置。
【請求項３】
前記マージ回数決定手段は、
前記オフセットアドレス値、前記データ幅、及び前記データ量に基づいて前記転送時間を推定する転送時間推定手段と、
前記トランザクションマージ手段でマージされるＰＣＩトランザクションのうち最初のＰＣＩトランザクションが受信されてから最後のＰＣＩトランザクションの次のＰＣＩトランザクションが受信されるまでの時間を前記受信間隔として計測する受信間隔計測手段と、
前記受信間隔が前記転送時間以下であるか否かを判定手段とを有する請求項１又は２に記載のデータ転送制御装置。
【請求項４】
前記マージ回数を格納するマージ回数格納手段を更に有し、
前記マージ回数決定手段は、前記決定したマージ回数を前記マージ回数格納手段に格納し、
前記トランザクションマージ手段は、前記マージ回数格納手段に格納されたマージ回数分のＰＣＩトランザクションをマージする請求項１から３何れか１項に記載のデータ転送制御装置。
【請求項５】
前記ＰＣＩトランザクションは、前記書込みアドレスと前記境界アドレスとが一致しない場合、複数のメモリトランザクションに分割される請求項１から４何れか１項に記載のデータ転送制御装置。
【請求項６】
ＣＰＵ（Central Processing Unit）と、
所定境界アドレス、及び所定データ幅でアクセス可能なメモリと、
ＰＣＩ（Peripheral Component Interconnect）カードと、
前記ＰＣＩカードを介して周辺装置から前記メモリへの書込みデータを含むＰＣＩトランザクションを受信し、前記書込みデータを前記メモリに転送するデータ転送制御装置とを備え、
前記データ転送制御装置は、前記ＰＣＩカードから、前記ＰＣＩトランザクションを受信し、格納するトランザクションバッファと、
前記ＰＣＩトランザクションをマージする場合に何回分のＰＣＩトランザクションをマージするかを示すマージ回数を決定するマージ回数決定手段と、
前記マージ回数決定手段が決定した前記マージ回数分のＰＣＩトランザクションをマージするトランザクションマージ手段と、
前記トランザクションマージ手段でマージされたＰＣＩトランザクションに基づいて、前記書込みデータを前記メモリに書き込むためのメモリトランザクションを発行するメモリトランザクション発行手段とを有し、
前記マージ回数決定手段は、前記書込みデータの書込みアドレスと前記境界アドレスとの差を示すオフセットアドレス値、前記データ幅、及び前記書込みデータのデータ量に基づいて前記書込みデータの前記メモリへの転送時間を推定し、該転送時間と前記ＰＣＩトランザクションの受信間隔とに基づいて前記マージ回数を決定するコンピュータ装置。
【請求項７】
前記マージ回数決定手段は、マージ回数カウンタを含み、前記受信間隔が前記転送時間以下の場合は前記マージ回数カウンタをカウントアップし、前記受信間隔が前記転送時間より長い場合は、前記マージ回数カウンタのカウント値を前記マージ回数として決定する請求項６に記載のコンピュータ装置。
【請求項８】
ＰＣＩ（Peripheral Component Interconnect）カードから、所定境界アドレス、及び所定データ幅でアクセス可能なメモリへの書込みデータを含むＰＣＩトランザクションを受信し、
前記書込みデータの書込みアドレスと前記境界アドレスとの差を示すオフセットアドレス値、前記データ幅、及び前記書込みデータのデータ量に基づいて前記書込みデータの前記メモリへの転送時間を推定し、
前記推定した転送時間と前記ＰＣＩトランザクションの受信間隔とに基づいて、前記ＰＣＩトランザクションをマージする場合に何回分のＰＣＩトランザクションをマージするかを示すマージ回数を決定し、
前記決定した前記マージ回数分のＰＣＩトランザクションをマージし、
前記マージされたＰＣＩトランザクションに基づいて、前記書込みデータを前記メモリに書き込むためのメモリトランザクションを発行するデータ転送制御方法。
【請求項９】
前記マージ回数の決定において、前記受信間隔が前記転送時間以下の場合はマージ回数カウンタをカウントアップし、前記受信間隔が前記転送時間より長い場合は、前記マージ回数カウンタのカウント値を前記マージ回数として決定する請求項８に記載のデータ転送制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ転送制御装置及び方法に関し、更に詳しくは、周辺装置から出力されたデータをメモリに転送するデータ転送制御装置及び方法に関する。
【０００２】
また、本開示は、上記データ転送制御装置を含むコンピュータ装置に関する。
【背景技術】
【０００３】
コンピュータ装置（システム）において、周辺装置とメモリとの間のデータ転送を制御するデータ転送制御装置が知られている。データ転送制御装置は、例えばＰＣＩ（Peripheral Component Interconnect）カードを介して接続されるディスク装置などの周辺装置と、メモリとの間のデータ転送を制御する。
【０００４】
ここで、データ転送では、データに対し、一定量のヘッダが附属する。データ転送の回数が増えるほどヘッダの量も多くなるため、データ転送の回数が多いと、転送速度が低下する場合がある。この問題に対し、効率よく転送を行うために、連続したトランザクションをマージし、トランザクションの切れ目のオーバヘッドを最小限に抑える方法が知られている。
【０００５】
特許文献１は、トランザクションをマージしてデータ転送を行うデータ転送制御装置を開示する。特許文献１に記載のデータ転送制御装置は、ＰＣＩカードからＰＣＩトランザクションを受信し、受信したＰＣＩトランザクションをトランザクションバッファに格納する。データ転送制御装置は、ＰＣＩトランザクションをトランザクションバッファに格納するとき、ＰＣＩトランザクションが連続する回数を計測する。
【０００６】
データ転送制御装置は、ＰＣＩトランザクションの連続回数が所定数に達するまで、ＰＣＩトランザクションに対応するメモリトランザクションをマージし、１つのメモリトランザクションとして保留する。データ転送制御装置は、連続的に受信されるＰＣＩトランザクションの計測数が所定数に到達すると、その時点で保留されているメモリトランザクションをメモリに出力する。
【０００７】
特許文献１では、トランザクションをマージする回数を決めるために、連続したＰＣＩトランザクション数を制御プロセッサなどから予測（推定）している。ＰＣＩトランザクションは、この推定値の回数分だけ連続すると推定され、推定値分のＰＣＩトランザクションが到達したときに、トランザクションのマージが開始される。
【０００８】
例えば、ＰＣＩカードは、周辺装置との間で１ｋＢｙｔｅのデータ長のデータを送受信する。ＰＣＩカードは、周辺装置から受信した１ｋＢｙｔｅのデータを、データ長２５６ＢｙｔｅのＰＣＩトランザクションに分割するものとする。この場合、ＰＣＩトランザクションは４回連続すると推定される。データ転送制御装置は、４回分のＰＣＩトランザクションをマージし、メモリに転送する。このようにすることで、データ転送回数を削減し、オーバヘッドを低減できる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特許第５３８７９９３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１において、予測されたＰＣＩトランザクションの連続回数と、実際に転送されたＰＣＩトランザクションの連続回数とが異なる場合があり得る。特許文献１において、予測されたＰＣＩトランザクションの連続回数と実際に転送されたＰＣＩトランザクションの連続回数が異なる場合、期待値と違う動作となり、効率的なデータ転送を行うことができない。
【００１１】
例えば、ＰＣＩトランザクションの連続回数が「４回」と予測されている場合に、実際にはＰＣＩトランザクションが連続して３回しか受信されていない場合もある。その場合、特許文献１に記載のデータ転送制御装置は、ＰＣＩトランザクション４回分の時間を待つこととなり、メモリトランザクションの発行が、ＰＣＩトランザクション１回分だけ遅れる。また、ＰＣＩトランザクションの連続回数が「４回」と予測されている場合に、実際にはＰＣＩトランザクションが連続して６回受信される場合も考えられる。その場合、連続するＰＣＩトランザクションの途中でマージが行われることとなり、トランザクション間のオーバヘッドが生じて効率的な転送ができない。
【００１２】
本開示は、上記に鑑み、周辺装置から送信されたデータをメモリに転送して書き込む場合に、効率のよいデータ転送を実現できるコンピュータ装置、データ転送制御装置、及び方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するために、本開示は、ＰＣＩカードから、メモリへの書込みデータを含むＰＣＩトランザクションを受信し、格納するトランザクションバッファと、前記ＰＣＩトランザクションをマージする場合に何回分のＰＣＩトランザクションをマージするかを示すマージ回数を決定するマージ回数決定手段と、前記マージ回数決定手段が決定した前記マージ回数分のＰＣＩトランザクションをマージするトランザクションマージ手段と、前記トランザクションマージ手段でマージされたＰＣＩトランザクションに基づいて、前記書込みデータを前記メモリに書き込むためのメモリトランザクションを発行するメモリトランザクション発行手段とを備え、前記メモリは、所定境界アドレス、及び所定データ幅でアクセス可能であり、前記マージ回数決定手段は、前記書込みデータの書込みアドレスと前記境界アドレスとの差を示すオフセットアドレス値、前記データ幅、及び前記書込みデータのデータ量に基づいて前記書込みデータの前記メモリへの転送時間を推定し、該転送時間と前記ＰＣＩトランザクションの受信間隔とに基づいて前記マージ回数を決定するデータ転送制御装置を提供する。
【００１４】
本開示は、また、ＣＰＵ（Central Processing Unit）と、所定境界アドレス、及び所定データ幅でアクセス可能なメモリと、ＰＣＩカードと、前記ＰＣＩカードを介して周辺装置から前記メモリへの書込みデータを含むＰＣＩトランザクションを受信し、前記書込みデータを前記メモリに転送するデータ転送制御装置とを備え、前記データ転送制御装置は、前記ＰＣＩカードから、前記ＰＣＩトランザクションを受信し、格納するトランザクションバッファと、前記ＰＣＩトランザクションをマージする場合に何回分のＰＣＩトランザクションをマージするかを示すマージ回数を決定するマージ回数決定手段と、前記マージ回数決定手段が決定した前記マージ回数分のＰＣＩトランザクションをマージするトランザクションマージ手段と、前記トランザクションマージ手段でマージされたＰＣＩトランザクションに基づいて、前記書込みデータを前記メモリに書き込むためのメモリトランザクションを発行するメモリトランザクション発行手段とを有し、前記マージ回数決定手段は、前記書込みデータの書込みアドレスと前記境界アドレスとの差を示すオフセットアドレス値、前記データ幅、及び前記書込みデータのデータ量に基づいて前記書込みデータの前記メモリへの転送時間を推定し、該転送時間と前記ＰＣＩトランザクションの受信間隔とに基づいて前記マージ回数を決定するコンピュータ装置を提供する。
【００１５】
本開示は、ＰＣＩカードから、所定境界アドレス、及び所定データ幅でアクセス可能なメモリへの書込みデータを含むＰＣＩトランザクションを受信し、前記書込みデータの書込みアドレスと前記境界アドレスとの差を示すオフセットアドレス値、前記データ幅、及び前記書込みデータのデータ量に基づいて前記書込みデータの前記メモリへの転送時間を推定し、前記推定した転送時間と前記ＰＣＩトランザクションの受信間隔とに基づいて、前記ＰＣＩトランザクションをマージする場合に何回分のＰＣＩトランザクションをマージするかを示すマージ回数を決定し、前記決定した前記マージ回数分のＰＣＩトランザクションをマージし、前記マージされたＰＣＩトランザクションに基づいて、前記書込みデータを前記メモリに書き込むためのメモリトランザクションを発行するデータ転送制御方法を提供する。
【発明の効果】
【００１６】
本開示のコンピュータ装置、データ転送制御装置、及び方法は、周辺装置から送信されたデータをメモリに転送して書き込む場合に、効率のよいデータ転送を実現できる。
【図面の簡単な説明】
【００１７】
【図１】本開示のデータ転送制御装置の概略的な構成を示すブロック図。
【図２】本開示の一実施形態に係るデータ転送制御装置を含むコンピュータ装置を示すブロック図。
【図３】トランザクション連続受信回数制御手段の構成例を示すブロック図。
【図４】データ転送制御装置における動作手順を示すフローチャート。
【図５】２つのＰＣＩトランザクションと書込みアドレスとを示す図。
【図６】ＰＣＩトランザクションをマージしない場合に発行されるメモリトランザクションの一例を示す図。
【図７】ＰＣＩトランザクションをマージする場合に発行されるメモリトランザクションの一例を示す図。
【発明を実施するための形態】
【００１８】
本開示の実施形態の説明に先立って、本開示の概要を説明する。図１は、本開示のデータ転送制御装置の概略的な構成を示す。データ転送制御装置１０は、トランザクションバッファ１１、マージ回数決定手段１２、トランザクションマージ手段１３、及びメモリトランザクション発行手段１４を有する。データ転送制御装置１０は、ＰＣＩカード２２を介して周辺装置２１からメモリ２３への書込みデータを含むＰＣＩトランザクションを受信し、書込みデータをメモリ２３へ転送する。メモリ２３は、所定境界アドレス、及び所定データ幅でアクセス可能なメモリである。
【００１９】
トランザクションバッファ１１は、ＰＣＩカード２２からＰＣＩトランザクションを受信し、格納する。マージ回数決定手段１２は、ＰＣＩトランザクションをマージする場合に何回分のＰＣＩトランザクションをマージするかを示すマージ回数を決定する。マージ回数決定手段１２は、書込みデータの書込みアドレスとメモリ２３の境界アドレスとの差を示すオフセットアドレス値、メモリアクセスのデータ幅、及び書込みデータのデータ量に基づいて書込みデータのメモリへの転送時間を推定する。マージ回数決定手段１２は、推定した転送時間とＰＣＩトランザクションの受信間隔とに基づいてマージ回数を決定する。
【００２０】
トランザクションマージ手段１３は、マージ回数決定手段１２が決定したマージ回数分の連続するＰＣＩトランザクションをマージする。メモリトランザクション発行手段１４は、トランザクションマージ手段１３でマージされたＰＣＩトランザクションに基づいて、書込みデータをメモリ２３に書き込むためのメモリトランザクションを発行する。
【００２１】
本開示では、マージ回数決定手段１２は、メモリ２３への転送時間を推定し、推定した転送時間とＰＣＩトランザクションの受信間隔とに基づいて、マージ回数を決定する。本開示では、ＰＣＩカード２２から転送されたＰＣＩトランザクションに基づいてマージ回数が動的に決定されるため、効率のよいＰＣＩトランザクションのマージが可能となり、データ転送制御装置１０のデータ転送性能を向上させることができる。例えば、受信間隔が転送時間以下の場合、データ転送制御装置１０は、次のＰＣＩトランザクションの受信を待ち、次のＰＣＩトランザクションを含めてマージしてメモリトランザクションを発行することが可能である。逆に、受信間隔が転送時間より長い場合、データ転送制御装置１０は、次のＰＣＩトランザクションの受信を待たずにメモリトランザクションを発行することができる。この場合、次のＰＣＩトランザクションの受信まで待機せずに、メモリ２３にデータを書き込むことができる。
【００２２】
以下、図面を参照しつつ、本開示の実施の形態について詳細に説明する。図２は、本開示の一実施形態に係るデータ転送制御装置を含むコンピュータシステム（装置）を示す。コンピュータシステムは、データ転送制御装置１００、周辺装置２０１、ＰＣＩカード２０２、メモリ２０３、及びＣＰＵ（Central Processing Unit）２０４を有する。データ転送制御装置１００は、トランザクションバッファ１０１、ＰＣＩトランザクションマージ手段１０２、メモリトランザクション発行手段１０３、連続トランザクション数格納手段１０４、及びトランザクション連続受信回数制御手段１０５を有する。
【００２３】
メモリ２０３は、コンピュータシステムにおける主記憶装置である。メモリ２０３には、例えば任意のタイプのＲＡＭ（Random Access Memory）が用いられる。ＣＰＵ２０４は、コンピュータシステムにおいて各種処理を実施する。周辺装置２０１は、メモリ２０３にデータを転送する装置として構成される。周辺装置２０１は、例えばハードディスク装置やＳＳＤ（solid state drive）などの記憶装置として構成される。ＰＣＩカード２０２は、ホストバスアダプタ（ＨＢＡ：host bus adapter）であり、周辺装置２０１との間でデータの送受信などを行う。データ転送制御装置１００は、ＰＣＩカード２０２とメモリ２０３との間でデータの転送を行う。データ転送制御装置１００は、周辺装置２０１からＰＣＩカード２０２を介してメモリ２０３への書込みデータを受信し、受信した書込みデータをメモリ２０３に転送する。
【００２４】
周辺装置２０１は、メモリ２０３にデータを転送するとき、書込みデータを含むアクセス要求をＰＣＩカード２０２に送信する。ＰＣＩカード２０２は、書込みデータを含むＰＣＩトランザクションをデータ転送制御装置１００に送信する。トランザクションバッファ１０１は、ＰＣＩカード２０２からＰＣＩトランザクション（書込みデータ）を受信し、それを一時的に格納する。トランザクションバッファ１０１は、図１のトランザクションバッファ１１に対応する。
【００２５】
トランザクション連続受信回数制御手段１０５は、ＰＣＩトランザクションをマージする場合に何回分のＰＣＩトランザクションをマージするかを示すマージ回数を決定する。連続トランザクション数格納手段１０４は、マージされるＰＣＩトランザクションの数（マージ回数）を格納する。トランザクション連続受信回数制御手段１０５は、マージ回数を決定すると、連続トランザクション数格納手段１０４に決定したマージ回数を格納する。トランザクション連続受信回数制御手段１０５は、図１のマージ回数決定手段１２に対応する。
【００２６】
ＰＣＩトランザクションマージ手段１０２は、トランザクションバッファ１０１に格納されたＰＣＩトランザクションをマージする。ＰＣＩトランザクションマージ手段１０２は、連続トランザクション数格納手段１０４を参照し、トランザクション連続受信回数制御手段１０５が決定したマージ回数分の連続するＰＣＩトランザクションをマージする。ＰＣＩトランザクションマージ手段１０２は、図１のトランザクションマージ手段１３に対応する。なお、マージ回数が「１」の場合、厳密にはＰＣＩトランザクションはマージされないが、本開示において、マージ回数が「１」の場合、便宜上、１つのＰＣＩトランザクションがマージされるものとみなす。
【００２７】
メモリトランザクション発行手段１０３は、ＰＣＩトランザクションに応じてメモリトランザクションを発行し、メモリトランザクションをメモリ２０３に出力する。メモリトランザクション発行手段１０３は、ＰＣＩトランザクションマージ手段１０２でマージされたＰＣＩトランザクションに基づいて、ＰＣＩトランザクションに含まれる書込みデータをメモリ２０３に書き込むためのメモリトランザクションを発行する。メモリトランザクション発行手段１０３は、図１のメモリトランザクション発行手段１４に対応する。
【００２８】
ここで、メモリ２０３に対するデータ書込みでは、書込み可能なデータ幅とアドレス境界が決められている。ＰＣＩトランザクションで指定される先頭アドレスが、アドレス境界に一致しない場合、メモリ２０３に対して所定データ幅及びアドレス境界でメモリ書込みを行うために、１つのＰＣＩトランザクションが複数のメモリトランザクションに分割される。１つのＰＣＩトランザクションがいくつのメモリトランザクションに分割されるかは、ＰＣＩトランザクションにおけるデータ転送量と、書込み可能データ幅（データ転送幅）、及び書込み先頭アドレスとメモリアクセスのアドレス境界との差に依存して変化する。なお、以下の説明において、先頭アドレスとアドレス境界との差をオフセットアドレス値とも呼ぶ。
【００２９】
例えば、メモリ２０３には、８Ｂｙｔｅ、１６Ｂｙｔｅ、３２Ｂｙｔｅ、６４Ｂｙｔｅ、又は１２８Ｂｙｔｅのデータ幅でデータの書込みが可能であるとする。また、１つのＰＣＩトランザクションあたり、１２８Ｂｙｔｅのデータが転送されるものとする。この場合、ＰＣＩトランザクションで指定される書込みアドレス（先頭アドレス）がメモリアクセスのアドレス境界に一致する場合（オフセットアドレス値が０の場合）、メモリ２０３には、１つのメモリトランザクション（１２８Ｂｙｔｅ）が転送される。
【００３０】
上記の場合において、先頭アドレスがアドレス境界から「８」ずれている場合、ＰＣＩトランザクションは、５個（８Ｂｙｔｅ、１６Ｂｙｔｅ、３２Ｂｙｔｅ、６４Ｂｙｔｅ、８Ｂｙｔｅ）のメモリトランザクションに分割される。また、先頭アドレスがアドレス境界から「１６」ずれている場合、ＰＣＩトランザクションは、４個（１６Ｂｙｔｅ、３２Ｂｙｔｅ、６４Ｂｙｔｅ、１６Ｂｙｔｅ）のメモリトランザクションに分割される。先頭アドレスがアドレス境界から「３２」ずれている場合は、ＰＣＩトランザクションは、３個（３２Ｂｙｔｅ、６４Ｂｙｔｅ、３２Ｂｙｔｅ）のメモリトランザクションに分割される。
【００３１】
先頭アドレスがアドレス境界から「４８」ずれている場合は、ＰＣＩトランザクションは、４個（１６Ｂｙｔｅ、６４Ｂｙｔｅ、３２Ｂｙｔｅ、１６Ｂｙｔｅ）のメモリトランザクションに分割される。先頭アドレスがアドレス境界から「５６」ずれている場合、ＰＣＩトランザクションは、５個（８Ｂｙｔｅ、６４Ｂｙｔｅ、３２Ｂｙｔｅ、１６Ｂｙｔｅ、８Ｂｙｔｅ）のメモリトランザクションに分割される。先頭アドレスがアドレス境界から「６４」ずれている場合、ＰＣＩトランザクションは、２個（６４Ｂｙｔｅ、６４Ｂｙｔｅ）のメモリトランザクションに分割される。
【００３２】
オフセットアドレス値が上記以外の場合、ＰＣＩトランザクションは、下記のパターンの何れかのパターンで複数のメモリトランザクションに分割される。オフセットアドレス値が１〜７の場合、ＰＣＩトランザクションは、６個（１〜７Ｂｙｔｅ、８Ｂｙｔｅ、１６Ｂｙｔｅ、３２Ｂｙｔｅ、６４Ｂｙｔｅ、１〜７Ｂｙｔｅ）のメモリトランザクションに分割される。オフセットアドレス値が９〜１５の場合、ＰＣＩトランザクションは、６個（１〜７Ｂｙｔｅ、１６Ｂｙｔｅ、３２Ｂｙｔｅ、６４Ｂｙｔｅ、８Ｂｙｔｅ、１〜７Ｂｙｔｅ）のメモリトランザクションに分割される。オフセットアドレス値が１７〜２３の場合、ＰＣＩトランザクションは、６個（８Ｂｙｔｅ、１〜７Ｂｙｔｅ、３２Ｂｙｔｅ、６４Ｂｙｔｅ、８Ｂｙｔｅ、１〜７Ｂｙｔｅ）のメモリトランザクションに分割される。
【００３３】
オフセットアドレス値が２４〜３１の場合、ＰＣＩトランザクションは、５個（１〜８Ｂｙｔｅ、３２Ｂｙｔｅ、６４Ｂｙｔｅ、１６Ｂｙｔｅ、１〜８Ｂｙｔｅ）のメモリトランザクションに分割される。オフセットアドレス値が３３〜３９の場合、ＰＣＩトランザクションは、６個（１６Ｂｙｔｅ、８Ｂｙｔｅ、１〜７Ｂｙｔｅ、６４Ｂｙｔｅ、３２Ｂｙｔｅ、１〜７Ｂｙｔｅ）のメモリトランザクションに分割される。オフセットアドレス値が４０〜４７の場合、ＰＣＩトランザクションは、５個（１６Ｂｙｔｅ、１〜８Ｂｙｔｅ、６４Ｂｙｔｅ、３２Ｂｙｔｅ、１〜８Ｂｙｔｅ）のメモリトランザクションに分割される。オフセットアドレス値が４９〜５５の場合、ＰＣＩトランザクションは、６個（８Ｂｙｔｅ、１〜７Ｂｙｔｅ、６４Ｂｙｔｅ、３２Ｂｙｔｅ、１６Ｂｙｔｅ、１〜７Ｂｙｔｅ）のメモリトランザクションに分割される。オフセットアドレス値が５７〜６３の場合、ＰＣＩトランザクションは、６個（１〜７Ｂｙｔｅ、６４Ｂｙｔｅ、３２Ｂｙｔｅ、１６Ｂｙｔｅ、８Ｂｙｔｅ、１〜７Ｂｙｔｅ）のメモリトランザクションに分割される。
【００３４】
上記の例のように、１つのＰＣＩトランザクションに含まれる書込みデータのデータ量が同じ場合であっても、ＰＣＩトランザクション（メモリトランザクション）の分割数は、データ転送幅、及び書込みアドレスに依存して変化する。また、書込みデータのメモリ２０３への転送時間は、分割されたメモリトランザクションの数に応じて変化する。例えば、オフセットアドレス値が０の場合は、１つのメモリトランザクションで１２８Ｂｙｔｅのデータをメモリ２０３に転送できるため、転送時間は最小となる。一方、１つのＰＣＩトランザクション（１２８Ｂｙｔｅ）が６個のメモリトランザクションに分割される場合、転送時間は最大となる。
【００３５】
本実施形態では、トランザクション連続受信回数制御手段１０５は、オフセットアドレス値、データ転送幅、及び書込みデータのデータ量に基づいてメモリトランザクション（書込みデータ）のメモリ２０３への転送時間を推定する。トランザクション連続受信回数制御手段１０５は、推定した転送時間と、ＰＣＩトランザクションの受信間隔とに基づいて、マージ回数を決定する。トランザクション連続受信回数制御手段１０５は、例えば連続して受信される次のＰＣＩトランザクションをマージしてメモリトランザクションを発行した方が転送時間が短くなる場合は、マージ回数（カウント値）を１つずつ増していく。トランザクション連続受信回数制御手段１０５は、例えば次のＰＣＩトランザクションをマージせずにメモリトランザクションを発行した方が転送時間が短くなる場合は、マージ回数をその時点でのカウント値に確定する。
【００３６】
図３は、トランザクション連続受信回数制御手段１０５の構成例を示す。トランザクション連続受信回数制御手段１０５は、転送時間推定手段１５１、受信間隔計測手段１５２、判定手段１５３、及びマージ回数カウンタ１５４を有する。マージ回数カウンタ１５４は、マージ回数をカウントアップする際に使用されるカウンタである。マージ回数カウンタ１５４の初期値は「１」であるとする。マージ回数カウンタ１５４のカウント値は、現時点におけるＰＣＩトランザクションのマージ回数を示す。
【００３７】
転送時間推定手段１５１は、オフセットアドレス値、データ転送幅、及び書込みデータのデータ量に基づいて、ＰＣＩトランザクションに含まれる書込みデータのメモリ２０３への転送に要する時間（ｔ１）を推定する。転送時間推定手段１５１は、例えばメモリ２０３へのデータ書込みおけるデータ転送幅をあらかじめ定数として保持している。転送時間推定手段１５１は、トランザクションバッファ１０１（図２を参照）に格納されたＰＣＩトランザクションから書込みアドレスと書込みデータのデータ量（転送データ量）を取得する。転送時間推定手段１５１は、書込みアドレスなどに基づいて、現状のマージ回数でＰＣＩトランザクションをマージした場合のメモリトランザクションの分割数を計算する。転送時間推定手段１５１は、メモリトランザクションの分割数と転送データ量とに基づいて、現状のマージ回数でＰＣＩトランザクションをマージした場合の書込みデータのメモリ２０３への転送時間を推定する。
【００３８】
受信間隔計測手段１５２は、最初のＰＣＩトランザクションが受信されてから、次のＰＣＩトランザクションが受信されるまでの時間（ｔ２）を受信間隔として計測する。より詳細には、受信間隔計測手段１５２は、現時点でのマージ対象のＰＣＩトランザクションのうち１つ目のＰＣＩトランザクションが受信されてから最後のＰＣＩトランザクションの次のＰＣＩトランザクションが受信されるまでの時間を受信間隔として計測する。判定手段１５３は、計測された受信間隔が、推定された転送時間以下であるかを判定する。判定手段１５３は、受信間隔が転送時間以下（ｔ２≦ｔ１）の場合、マージ回数カウンタ１５４をカウントアップする。判定手段１５３は、受信間隔が転送時間よりも長い（ｔ２＞ｔ１）場合、マージ回数カウンタ１５４のカウント値をマージ回数として決定する。
【００３９】
続いて、動作手順を説明する。図４は、データ転送制御装置１００における動作手順を示す。トランザクションバッファ１０１は、ＰＣＩカード２０２からＰＣＩトランザクションを受信する（ステップＳ１）。トランザクションバッファ１０１は、ステップＳ１では、メモリ２０３へのデータ転送を要求する旨のＰＣＩトランザクションを受信する。
【００４０】
トランザクション連続受信回数制御手段１０５は、ＰＣＩトランザクションを解析する（ステップＳ２）。ステップＳ２において、トランザクション連続受信回数制御手段１０５の転送時間推定手段１５１（図３を参照）は、ＰＣＩトランザクションから書込みアドレスとデータ量とを取得する。転送時間推定手段１５１は、書込みアドレスとデータ量とに基づいて、現時点でのマージ回数カウンタ１５４のカウント値だけ連続するＰＣＩトランザクションがマージされた場合の転送時間を推定する。また、ステップＳ２では、受信間隔計測手段１５２は、１つ目のＰＣＩトランザクションが受信されてから、次のトランザクションが受信されるまでの時間（受信間隔）を計測する。
【００４１】
トランザクション連続受信回数制御手段１０５は、推定した転送時間と計測した受信間隔とを比較する（ステップＳ３）。ステップＳ３において、トランザクション連続受信回数制御手段１０５の判定手段１５３は、受信間隔が転送時間以下であるか否かを判定する。受信間隔が転送時間以下の場合、現時点でのマージ回数分だけＰＣＩトランザクションをマージして転送するよりも、次のＰＣＩトランザクションの受信を待つ方が早い。この場合、判定手段１５３は、マージ回数カウンタ１５４を１つカウントアップする（ステップＳ４）。その後、処理はステップＳ１に戻り、次のＰＣＩトランザクションが受信される。
【００４２】
ステップＳ３で、受信間隔が転送時間よりも長いと判断された場合、判定手段１５３は、次のＰＣＩトランザクションの受信時間が遅いため、現時点でのマージ回数カウンタ１５４のカウント値をマージ回数として決定する（ステップＳ５）。トランザクション連続受信回数制御手段１０５は、決定したマージ回数を連続トランザクション数格納手段１０４に格納する。マージ回数カウンタ１５４のカウント値は、マージ回数が連続トランザクション数格納手段１０４に格納されるとリセットされる。また、受信間隔計測手段１５２が計測する受信間隔の起点となるＰＣＩトランザクションの受信時刻がリセットされる。
【００４３】
ＰＣＩトランザクションマージ手段１０２は、現時点でトランザクションバッファ１０１が受信しているＰＣＩトランザクションを連続トランザクションの最後として、マージ回数分のＰＣＩトランザクションをマージする（ステップＳ６）。メモリトランザクション発行手段１０３は、ＰＣＩトランザクションマージ手段１０２でマージされたＰＣＩトランザクションに基づいてメモリトランザクションを生成し、メモリ２０３に出力する。
【００４４】
図５は、２つのＰＣＩトランザクションと書込みアドレスとを示す。トランザクションバッファ１０１は、ＰＣＩトランザクションＡ及びＰＣＩトランザクションＢを連続して受信するものとする。ＰＣＩトランザクションＡ及びＰＣＩトランザクションのデータ量は１２８Ｂｙｔｅであるとする。また、メモリ２０３は、１２８Ｂｙｔｅごとにメモリアクセスが可能であるとする。つまり、隣接する境界アドレスは１２８Ｂｙｔｅずつ離れているものとする。
【００４５】
仮に、メモリ２０３にデータを最大１２８Ｂｙｔｅずつ転送可能であるとすると、最も効率がよいデータ転送は、オフセットアドレス値が０の場合に、１２８Ｂｙｔｅのデータを２回転送するときである。その場合、ＰＣＩトランザクションＡに対して１２８Ｂｙｔｅのデータを書込みメモリトランザクションが発行され、ＰＣＩトランザクションＢに対して１２８Ｂｙｔｅのメモリトランザクションが発行される。このとき、データに付随するヘッダが最小となり、転送回数が少ないため効率よくデータを転送できる。しかしながら、図５の例のように、書込みアドレスが境界アドレスに一致しない場合で、ＰＣＩトランザクションをマージしない場合、前述の例のように、ＰＣＩトランザクションＡ及びＢは複数のメモリトランザクションに分割される。
【００４６】
図６は、２つのＰＣＩトランザクションをマージせずにメモリトランザクションを発行した場合の一例を示す。この例では、オフセットアドレス値を「１」としている。この場合、ＰＣＩトランザクションＡは、７Ｂｙｔｅ、８Ｂｙｔｅ、１６Ｂｙｔｅ、３２Ｂｙｔｅ、６４Ｂｙｔｅ、及び余った１Ｂｙｔｅのデータを書き込む６つのメモリトランザクションに分割される。ＰＣＩトランザクションＢも、同様に、６つのメモリトランザクションに分割される。この場合、メモリ２０３へのデータ転送は、計１２回発生する。
【００４７】
図７は、２つのＰＣＩトランザクションをマージしてメモリトランザクションを発行した場合の一例を示す。メモリトランザクション発行手段１０３は、２つのＰＣＩトランザクションＡ及びＢがマージされた２５６Ｂｙｔｅのデータに対してメモリトランザクションを発行する。この場合、マージされたＰＣＩトランザクションは、７Ｂｙｔｅ、８Ｂｙｔｅ、１６Ｂｙｔｅ、３２Ｂｙｔｅ、６４Ｂｙｔｅ、１２８Ｂｙｔｅ、及び余った１Ｂｙｔｅを書き込む７つのメモリトランザクションに分割される。２つのトランザクションをマージすることで、データ転送の回数を１２回から７回に減らすことができ、効率のよいデータ転送が実現できる。
【００４８】
しかしながら、２つのＰＣＩトランザクションをマージする場合、１つ目のＰＣＩトランザクションＡが受信されてから、２つ目のＰＣＩトランザクションＢが受信されるまで待機する必要がある。仮に待機時間がデータ転送時間よりも長いと、最初のＰＣＩトランザクションＡが受信されてから全２５６Ｂｙｔｅ分のデータ転送が完了するまでに要する時間が、個々にメモリトランザクションを発行した場合に比べて長くなる可能性がある。つまり、転送回数は削減できるものの、転送に要する時間は削減できない可能性がある。
【００４９】
本実施形態では、トランザクション連続受信回数制御手段１０５は、ＰＣＩトランザクションを解析し、オフセットアドレス値とデータ転送幅とデータ転送量とに基づいてメモリ２０３への転送時間を推定する。トランザクション連続受信回数制御手段１０５は、転送時間とＰＣＩトランザクションの受信間隔とを比較し、その比較結果に基づいて、ＰＣＩトランザクションのマージ回数を決定する。トランザクション連続受信回数制御手段１０５は、例えばトランザクションバッファ１０１から転送されるＰＣＩトランザクションの回数をカウントし、ある一定時間内で最も効率がよい連続回数（マージ回数）を計算することができる。ＰＣＩトランザクションマージ手段１０２は、連続して受信される、トランザクション連続受信回数制御手段１０５が決定したマージ回数分のＰＣＩトランザクションをマージする。メモリトランザクション発行手段１０３が、マージされたＰＣＩトランザクションに対してメモリトランザクションを発行することで、効率のよいメモリ２０３へのデータ転送を実現できる。
【００５０】
関連技術との比較では、特許文献１では、ＰＣＩトランザクションが連続する回数が予測され、予測したＰＣＩトランザクションの連続回数分のトランザクションがマージされる。この場合、予測されたＰＣＩトランザクションの連続回数と実際に転送されたＰＣＩトランザクションの連続回数が異なる場合、期待値と違う動作となり、効率的なデータ転送を行うことができない。これに対し、本実施形態では、実際の転送状況に応じてマージ回数を決定できるため、効率のよいデータ転送が実現できる。
【００５１】
また、特許文献１には、ＰＣＩトランザクションの受信を一定時間だけ待ち、一定時間内に次のＰＣＩトランザクションが受信できた場合に、トランザクションをマージすることも記載されている。しかしながら、前述の例のように、メモリ２０３への転送時間は、オフセットアドレス値やメモリ２０３へのデータ転送幅などに依存して変化する。従って、一定の固定時間だけ待機してマージするか否かを決定する場合、必ずしも効率のよいデータ転送を実現できない。これに対し、本実施形態では、メモリ２０３への転送時間を推定し、推定した転送時間と受信間隔とを比較することで次のＰＣＩトランザクションをマージするか否か決定される。このようにすることで、一定時間だけ待機する場合に比べて、より効率がよいデータ転送を実現できる。
【００５２】
なお、上記実施形態において、データ転送制御装置１００は、ハードウェア、ソフトウェア又はこれらの組合せにより実現することができる。この場合のハードウェア、ソフトウェア又はこれらの組合せによる構成は特に限定されるものではなく、上述した機能を実現可能なものであれば、何れの形態でも適用可能である。
【００５３】
以上、本開示の実施形態を詳細に説明したが、本開示は、上記した実施形態に限定されるものではなく、本開示の趣旨を逸脱しない範囲で上記実施形態に対して変更や修正を加えたものも、本開示に含まれる。
【符号の説明】
【００５４】
１０：データ転送制御装置
１１：トランザクションバッファ
１２：マージ回数決定手段
１３：トランザクションマージ手段
１４：メモリトランザクション発行手段
２１：周辺装置
２２：ＰＣＩカード
２３：メモリ
１００：データ転送制御装置
１０１：トランザクションバッファ
１０２：ＰＣＩトランザクションマージ手段
１０３：メモリトランザクション発行手段
１０４：連続トランザクション数格納手段
１０５：トランザクション連続受信回数制御手段
１５１：転送時間推定手段
１５２：受信間隔計測手段
１５３：判定手段
１５４：マージ回数カウンタ
２０１：周辺装置
２０２：ＰＣＩカード
２０３：メモリ
２０４：ＣＰＵ
【図１】
2019121316.tif 000003
【図２】
2019121316.tif 000004
【図３】
2019121316.tif 000005
【図４】
2019121316.tif 000006
【図５】
2019121316.tif 000007
【図６】
2019121316.tif 000008
【図７】
2019121316.tif 000009