JP6822670B2 - コンピュータ装置、データ転送制御装置、及び方法 - Google Patents

コンピュータ装置、データ転送制御装置、及び方法 Download PDF

Info

Publication number
JP6822670B2
JP6822670B2 JP2018002684A JP2018002684A JP6822670B2 JP 6822670 B2 JP6822670 B2 JP 6822670B2 JP 2018002684 A JP2018002684 A JP 2018002684A JP 2018002684 A JP2018002684 A JP 2018002684A JP 6822670 B2 JP6822670 B2 JP 6822670B2
Authority
JP
Japan
Prior art keywords
transaction
pci
memory
data
merge
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018002684A
Other languages
English (en)
Other versions
JP2019121316A (ja
Inventor
堅太 柿崎
堅太 柿崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Platforms Ltd
Original Assignee
NEC Platforms Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Platforms Ltd filed Critical NEC Platforms Ltd
Priority to JP2018002684A priority Critical patent/JP6822670B2/ja
Publication of JP2019121316A publication Critical patent/JP2019121316A/ja
Application granted granted Critical
Publication of JP6822670B2 publication Critical patent/JP6822670B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)

Description

本開示は、データ転送制御装置及び方法に関し、更に詳しくは、周辺装置から出力されたデータをメモリに転送するデータ転送制御装置及び方法に関する。
また、本開示は、上記データ転送制御装置を含むコンピュータ装置に関する。
コンピュータ装置(システム)において、周辺装置とメモリとの間のデータ転送を制御するデータ転送制御装置が知られている。データ転送制御装置は、例えばPCI(Peripheral Component Interconnect)カードを介して接続されるディスク装置などの周辺装置と、メモリとの間のデータ転送を制御する。
ここで、データ転送では、データに対し、一定量のヘッダが附属する。データ転送の回数が増えるほどヘッダの量も多くなるため、データ転送の回数が多いと、転送速度が低下する場合がある。この問題に対し、効率よく転送を行うために、連続したトランザクションをマージし、トランザクションの切れ目のオーバヘッドを最小限に抑える方法が知られている。
特許文献1は、トランザクションをマージしてデータ転送を行うデータ転送制御装置を開示する。特許文献1に記載のデータ転送制御装置は、PCIカードからPCIトランザクションを受信し、受信したPCIトランザクションをトランザクションバッファに格納する。データ転送制御装置は、PCIトランザクションをトランザクションバッファに格納するとき、PCIトランザクションが連続する回数を計測する。
データ転送制御装置は、PCIトランザクションの連続回数が所定数に達するまで、PCIトランザクションに対応するメモリトランザクションをマージし、1つのメモリトランザクションとして保留する。データ転送制御装置は、連続的に受信されるPCIトランザクションの計測数が所定数に到達すると、その時点で保留されているメモリトランザクションをメモリに出力する。
特許文献1では、トランザクションをマージする回数を決めるために、連続したPCIトランザクション数を制御プロセッサなどから予測(推定)している。PCIトランザクションは、この推定値の回数分だけ連続すると推定され、推定値分のPCIトランザクションが到達したときに、トランザクションのマージが開始される。
例えば、PCIカードは、周辺装置との間で1kByteのデータ長のデータを送受信する。PCIカードは、周辺装置から受信した1kByteのデータを、データ長256ByteのPCIトランザクションに分割するものとする。この場合、PCIトランザクションは4回連続すると推定される。データ転送制御装置は、4回分のPCIトランザクションをマージし、メモリに転送する。このようにすることで、データ転送回数を削減し、オーバヘッドを低減できる。
特許第5387993号公報
しかしながら、特許文献1において、予測されたPCIトランザクションの連続回数と、実際に転送されたPCIトランザクションの連続回数とが異なる場合があり得る。特許文献1において、予測されたPCIトランザクションの連続回数と実際に転送されたPCIトランザクションの連続回数が異なる場合、期待値と違う動作となり、効率的なデータ転送を行うことができない。
例えば、PCIトランザクションの連続回数が「4回」と予測されている場合に、実際にはPCIトランザクションが連続して3回しか受信されていない場合もある。その場合、特許文献1に記載のデータ転送制御装置は、PCIトランザクション4回分の時間を待つこととなり、メモリトランザクションの発行が、PCIトランザクション1回分だけ遅れる。また、PCIトランザクションの連続回数が「4回」と予測されている場合に、実際にはPCIトランザクションが連続して6回受信される場合も考えられる。その場合、連続するPCIトランザクションの途中でマージが行われることとなり、トランザクション間のオーバヘッドが生じて効率的な転送ができない。
本開示は、上記に鑑み、周辺装置から送信されたデータをメモリに転送して書き込む場合に、効率のよいデータ転送を実現できるコンピュータ装置、データ転送制御装置、及び方法を提供することを目的とする。
上記目的を達成するために、本開示は、PCIカードから、メモリへの書込みデータを含むPCIトランザクションを受信し、格納するトランザクションバッファと、前記PCIトランザクションをマージする場合に何回分のPCIトランザクションをマージするかを示すマージ回数を決定するマージ回数決定手段と、前記マージ回数決定手段が決定した前記マージ回数分のPCIトランザクションをマージするトランザクションマージ手段と、前記トランザクションマージ手段でマージされたPCIトランザクションに基づいて、前記書込みデータを前記メモリに書き込むためのメモリトランザクションを発行するメモリトランザクション発行手段とを備え、前記メモリは、所定境界アドレス、及び所定データ幅でアクセス可能であり、前記マージ回数決定手段は、前記書込みデータの書込みアドレスと前記境界アドレスとの差を示すオフセットアドレス値、前記データ幅、及び前記書込みデータのデータ量に基づいて前記書込みデータの前記メモリへの転送時間を推定し、該転送時間と前記PCIトランザクションの受信間隔とに基づいて前記マージ回数を決定するデータ転送制御装置を提供する。
本開示は、また、CPU(Central Processing Unit)と、所定境界アドレス、及び所定データ幅でアクセス可能なメモリと、PCIカードと、前記PCIカードを介して周辺装置から前記メモリへの書込みデータを含むPCIトランザクションを受信し、前記書込みデータを前記メモリに転送するデータ転送制御装置とを備え、前記データ転送制御装置は、前記PCIカードから、前記PCIトランザクションを受信し、格納するトランザクションバッファと、前記PCIトランザクションをマージする場合に何回分のPCIトランザクションをマージするかを示すマージ回数を決定するマージ回数決定手段と、前記マージ回数決定手段が決定した前記マージ回数分のPCIトランザクションをマージするトランザクションマージ手段と、前記トランザクションマージ手段でマージされたPCIトランザクションに基づいて、前記書込みデータを前記メモリに書き込むためのメモリトランザクションを発行するメモリトランザクション発行手段とを有し、前記マージ回数決定手段は、前記書込みデータの書込みアドレスと前記境界アドレスとの差を示すオフセットアドレス値、前記データ幅、及び前記書込みデータのデータ量に基づいて前記書込みデータの前記メモリへの転送時間を推定し、該転送時間と前記PCIトランザクションの受信間隔とに基づいて前記マージ回数を決定するコンピュータ装置を提供する。
本開示は、PCIカードから、所定境界アドレス、及び所定データ幅でアクセス可能なメモリへの書込みデータを含むPCIトランザクションを受信し、前記書込みデータの書込みアドレスと前記境界アドレスとの差を示すオフセットアドレス値、前記データ幅、及び前記書込みデータのデータ量に基づいて前記書込みデータの前記メモリへの転送時間を推定し、前記推定した転送時間と前記PCIトランザクションの受信間隔とに基づいて、前記PCIトランザクションをマージする場合に何回分のPCIトランザクションをマージするかを示すマージ回数を決定し、前記決定した前記マージ回数分のPCIトランザクションをマージし、前記マージされたPCIトランザクションに基づいて、前記書込みデータを前記メモリに書き込むためのメモリトランザクションを発行するデータ転送制御方法を提供する。
本開示のコンピュータ装置、データ転送制御装置、及び方法は、周辺装置から送信されたデータをメモリに転送して書き込む場合に、効率のよいデータ転送を実現できる。
本開示のデータ転送制御装置の概略的な構成を示すブロック図。 本開示の一実施形態に係るデータ転送制御装置を含むコンピュータ装置を示すブロック図。 トランザクション連続受信回数制御手段の構成例を示すブロック図。 データ転送制御装置における動作手順を示すフローチャート。 2つのPCIトランザクションと書込みアドレスとを示す図。 PCIトランザクションをマージしない場合に発行されるメモリトランザクションの一例を示す図。 PCIトランザクションをマージする場合に発行されるメモリトランザクションの一例を示す図。
本開示の実施形態の説明に先立って、本開示の概要を説明する。図1は、本開示のデータ転送制御装置の概略的な構成を示す。データ転送制御装置10は、トランザクションバッファ11、マージ回数決定手段12、トランザクションマージ手段13、及びメモリトランザクション発行手段14を有する。データ転送制御装置10は、PCIカード22を介して周辺装置21からメモリ23への書込みデータを含むPCIトランザクションを受信し、書込みデータをメモリ23へ転送する。メモリ23は、所定境界アドレス、及び所定データ幅でアクセス可能なメモリである。
トランザクションバッファ11は、PCIカード22からPCIトランザクションを受信し、格納する。マージ回数決定手段12は、PCIトランザクションをマージする場合に何回分のPCIトランザクションをマージするかを示すマージ回数を決定する。マージ回数決定手段12は、書込みデータの書込みアドレスとメモリ23の境界アドレスとの差を示すオフセットアドレス値、メモリアクセスのデータ幅、及び書込みデータのデータ量に基づいて書込みデータのメモリへの転送時間を推定する。マージ回数決定手段12は、推定した転送時間とPCIトランザクションの受信間隔とに基づいてマージ回数を決定する。
トランザクションマージ手段13は、マージ回数決定手段12が決定したマージ回数分の連続するPCIトランザクションをマージする。メモリトランザクション発行手段14は、トランザクションマージ手段13でマージされたPCIトランザクションに基づいて、書込みデータをメモリ23に書き込むためのメモリトランザクションを発行する。
本開示では、マージ回数決定手段12は、メモリ23への転送時間を推定し、推定した転送時間とPCIトランザクションの受信間隔とに基づいて、マージ回数を決定する。本開示では、PCIカード22から転送されたPCIトランザクションに基づいてマージ回数が動的に決定されるため、効率のよいPCIトランザクションのマージが可能となり、データ転送制御装置10のデータ転送性能を向上させることができる。例えば、受信間隔が転送時間以下の場合、データ転送制御装置10は、次のPCIトランザクションの受信を待ち、次のPCIトランザクションを含めてマージしてメモリトランザクションを発行することが可能である。逆に、受信間隔が転送時間より長い場合、データ転送制御装置10は、次のPCIトランザクションの受信を待たずにメモリトランザクションを発行することができる。この場合、次のPCIトランザクションの受信まで待機せずに、メモリ23にデータを書き込むことができる。
以下、図面を参照しつつ、本開示の実施の形態について詳細に説明する。図2は、本開示の一実施形態に係るデータ転送制御装置を含むコンピュータシステム(装置)を示す。コンピュータシステムは、データ転送制御装置100、周辺装置201、PCIカード202、メモリ203、及びCPU(Central Processing Unit)204を有する。データ転送制御装置100は、トランザクションバッファ101、PCIトランザクションマージ手段102、メモリトランザクション発行手段103、連続トランザクション数格納手段104、及びトランザクション連続受信回数制御手段105を有する。
メモリ203は、コンピュータシステムにおける主記憶装置である。メモリ203には、例えば任意のタイプのRAM(Random Access Memory)が用いられる。CPU204は、コンピュータシステムにおいて各種処理を実施する。周辺装置201は、メモリ203にデータを転送する装置として構成される。周辺装置201は、例えばハードディスク装置やSSD(solid state drive)などの記憶装置として構成される。PCIカード202は、ホストバスアダプタ(HBA:host bus adapter)であり、周辺装置201との間でデータの送受信などを行う。データ転送制御装置100は、PCIカード202とメモリ203との間でデータの転送を行う。データ転送制御装置100は、周辺装置201からPCIカード202を介してメモリ203への書込みデータを受信し、受信した書込みデータをメモリ203に転送する。
周辺装置201は、メモリ203にデータを転送するとき、書込みデータを含むアクセス要求をPCIカード202に送信する。PCIカード202は、書込みデータを含むPCIトランザクションをデータ転送制御装置100に送信する。トランザクションバッファ101は、PCIカード202からPCIトランザクション(書込みデータ)を受信し、それを一時的に格納する。トランザクションバッファ101は、図1のトランザクションバッファ11に対応する。
トランザクション連続受信回数制御手段105は、PCIトランザクションをマージする場合に何回分のPCIトランザクションをマージするかを示すマージ回数を決定する。連続トランザクション数格納手段104は、マージされるPCIトランザクションの数(マージ回数)を格納する。トランザクション連続受信回数制御手段105は、マージ回数を決定すると、連続トランザクション数格納手段104に決定したマージ回数を格納する。トランザクション連続受信回数制御手段105は、図1のマージ回数決定手段12に対応する。
PCIトランザクションマージ手段102は、トランザクションバッファ101に格納されたPCIトランザクションをマージする。PCIトランザクションマージ手段102は、連続トランザクション数格納手段104を参照し、トランザクション連続受信回数制御手段105が決定したマージ回数分の連続するPCIトランザクションをマージする。PCIトランザクションマージ手段102は、図1のトランザクションマージ手段13に対応する。なお、マージ回数が「1」の場合、厳密にはPCIトランザクションはマージされないが、本開示において、マージ回数が「1」の場合、便宜上、1つのPCIトランザクションがマージされるものとみなす。
メモリトランザクション発行手段103は、PCIトランザクションに応じてメモリトランザクションを発行し、メモリトランザクションをメモリ203に出力する。メモリトランザクション発行手段103は、PCIトランザクションマージ手段102でマージされたPCIトランザクションに基づいて、PCIトランザクションに含まれる書込みデータをメモリ203に書き込むためのメモリトランザクションを発行する。メモリトランザクション発行手段103は、図1のメモリトランザクション発行手段14に対応する。
ここで、メモリ203に対するデータ書込みでは、書込み可能なデータ幅とアドレス境界が決められている。PCIトランザクションで指定される先頭アドレスが、アドレス境界に一致しない場合、メモリ203に対して所定データ幅及びアドレス境界でメモリ書込みを行うために、1つのPCIトランザクションが複数のメモリトランザクションに分割される。1つのPCIトランザクションがいくつのメモリトランザクションに分割されるかは、PCIトランザクションにおけるデータ転送量と、書込み可能データ幅(データ転送幅)、及び書込み先頭アドレスとメモリアクセスのアドレス境界との差に依存して変化する。なお、以下の説明において、先頭アドレスとアドレス境界との差をオフセットアドレス値とも呼ぶ。
例えば、メモリ203には、8Byte、16Byte、32Byte、64Byte、又は128Byteのデータ幅でデータの書込みが可能であるとする。また、1つのPCIトランザクションあたり、128Byteのデータが転送されるものとする。この場合、PCIトランザクションで指定される書込みアドレス(先頭アドレス)がメモリアクセスのアドレス境界に一致する場合(オフセットアドレス値が0の場合)、メモリ203には、1つのメモリトランザクション(128Byte)が転送される。
上記の場合において、先頭アドレスがアドレス境界から「8」ずれている場合、PCIトランザクションは、5個(8Byte、16Byte、32Byte、64Byte、8Byte)のメモリトランザクションに分割される。また、先頭アドレスがアドレス境界から「16」ずれている場合、PCIトランザクションは、4個(16Byte、32Byte、64Byte、16Byte)のメモリトランザクションに分割される。先頭アドレスがアドレス境界から「32」ずれている場合は、PCIトランザクションは、3個(32Byte、64Byte、32Byte)のメモリトランザクションに分割される。
先頭アドレスがアドレス境界から「48」ずれている場合は、PCIトランザクションは、4個(16Byte、64Byte、32Byte、16Byte)のメモリトランザクションに分割される。先頭アドレスがアドレス境界から「56」ずれている場合、PCIトランザクションは、5個(8Byte、64Byte、32Byte、16Byte、8Byte)のメモリトランザクションに分割される。先頭アドレスがアドレス境界から「64」ずれている場合、PCIトランザクションは、2個(64Byte、64Byte)のメモリトランザクションに分割される。
オフセットアドレス値が上記以外の場合、PCIトランザクションは、下記のパターンの何れかのパターンで複数のメモリトランザクションに分割される。オフセットアドレス値が1〜7の場合、PCIトランザクションは、6個(1〜7Byte、8Byte、16Byte、32Byte、64Byte、1〜7Byte)のメモリトランザクションに分割される。オフセットアドレス値が9〜15の場合、PCIトランザクションは、6個(1〜7Byte、16Byte、32Byte、64Byte、8Byte、1〜7Byte)のメモリトランザクションに分割される。オフセットアドレス値が17〜23の場合、PCIトランザクションは、6個(8Byte、1〜7Byte、32Byte、64Byte、8Byte、1〜7Byte)のメモリトランザクションに分割される。
オフセットアドレス値が24〜31の場合、PCIトランザクションは、5個(1〜8Byte、32Byte、64Byte、16Byte、1〜8Byte)のメモリトランザクションに分割される。オフセットアドレス値が33〜39の場合、PCIトランザクションは、6個(16Byte、8Byte、1〜7Byte、64Byte、32Byte、1〜7Byte)のメモリトランザクションに分割される。オフセットアドレス値が40〜47の場合、PCIトランザクションは、5個(16Byte、1〜8Byte、64Byte、32Byte、1〜8Byte)のメモリトランザクションに分割される。オフセットアドレス値が49〜55の場合、PCIトランザクションは、6個(8Byte、1〜7Byte、64Byte、32Byte、16Byte、1〜7Byte)のメモリトランザクションに分割される。オフセットアドレス値が57〜63の場合、PCIトランザクションは、6個(1〜7Byte、64Byte、32Byte、16Byte、8Byte、1〜7Byte)のメモリトランザクションに分割される。
上記の例のように、1つのPCIトランザクションに含まれる書込みデータのデータ量が同じ場合であっても、PCIトランザクション(メモリトランザクション)の分割数は、データ転送幅、及び書込みアドレスに依存して変化する。また、書込みデータのメモリ203への転送時間は、分割されたメモリトランザクションの数に応じて変化する。例えば、オフセットアドレス値が0の場合は、1つのメモリトランザクションで128Byteのデータをメモリ203に転送できるため、転送時間は最小となる。一方、1つのPCIトランザクション(128Byte)が6個のメモリトランザクションに分割される場合、転送時間は最大となる。
本実施形態では、トランザクション連続受信回数制御手段105は、オフセットアドレス値、データ転送幅、及び書込みデータのデータ量に基づいてメモリトランザクション(書込みデータ)のメモリ203への転送時間を推定する。トランザクション連続受信回数制御手段105は、推定した転送時間と、PCIトランザクションの受信間隔とに基づいて、マージ回数を決定する。トランザクション連続受信回数制御手段105は、例えば連続して受信される次のPCIトランザクションをマージしてメモリトランザクションを発行した方が転送時間が短くなる場合は、マージ回数(カウント値)を1つずつ増していく。トランザクション連続受信回数制御手段105は、例えば次のPCIトランザクションをマージせずにメモリトランザクションを発行した方が転送時間が短くなる場合は、マージ回数をその時点でのカウント値に確定する。
図3は、トランザクション連続受信回数制御手段105の構成例を示す。トランザクション連続受信回数制御手段105は、転送時間推定手段151、受信間隔計測手段152、判定手段153、及びマージ回数カウンタ154を有する。マージ回数カウンタ154は、マージ回数をカウントアップする際に使用されるカウンタである。マージ回数カウンタ154の初期値は「1」であるとする。マージ回数カウンタ154のカウント値は、現時点におけるPCIトランザクションのマージ回数を示す。
転送時間推定手段151は、オフセットアドレス値、データ転送幅、及び書込みデータのデータ量に基づいて、PCIトランザクションに含まれる書込みデータのメモリ203への転送に要する時間(t1)を推定する。転送時間推定手段151は、例えばメモリ203へのデータ書込みおけるデータ転送幅をあらかじめ定数として保持している。転送時間推定手段151は、トランザクションバッファ101(図2を参照)に格納されたPCIトランザクションから書込みアドレスと書込みデータのデータ量(転送データ量)を取得する。転送時間推定手段151は、書込みアドレスなどに基づいて、現状のマージ回数でPCIトランザクションをマージした場合のメモリトランザクションの分割数を計算する。転送時間推定手段151は、メモリトランザクションの分割数と転送データ量とに基づいて、現状のマージ回数でPCIトランザクションをマージした場合の書込みデータのメモリ203への転送時間を推定する。
受信間隔計測手段152は、最初のPCIトランザクションが受信されてから、次のPCIトランザクションが受信されるまでの時間(t2)を受信間隔として計測する。より詳細には、受信間隔計測手段152は、現時点でのマージ対象のPCIトランザクションのうち1つ目のPCIトランザクションが受信されてから最後のPCIトランザクションの次のPCIトランザクションが受信されるまでの時間を受信間隔として計測する。判定手段153は、計測された受信間隔が、推定された転送時間以下であるかを判定する。判定手段153は、受信間隔が転送時間以下(t2≦t1)の場合、マージ回数カウンタ154をカウントアップする。判定手段153は、受信間隔が転送時間よりも長い(t2>t1)場合、マージ回数カウンタ154のカウント値をマージ回数として決定する。
続いて、動作手順を説明する。図4は、データ転送制御装置100における動作手順を示す。トランザクションバッファ101は、PCIカード202からPCIトランザクションを受信する(ステップS1)。トランザクションバッファ101は、ステップS1では、メモリ203へのデータ転送を要求する旨のPCIトランザクションを受信する。
トランザクション連続受信回数制御手段105は、PCIトランザクションを解析する(ステップS2)。ステップS2において、トランザクション連続受信回数制御手段105の転送時間推定手段151(図3を参照)は、PCIトランザクションから書込みアドレスとデータ量とを取得する。転送時間推定手段151は、書込みアドレスとデータ量とに基づいて、現時点でのマージ回数カウンタ154のカウント値だけ連続するPCIトランザクションがマージされた場合の転送時間を推定する。また、ステップS2では、受信間隔計測手段152は、1つ目のPCIトランザクションが受信されてから、次のトランザクションが受信されるまでの時間(受信間隔)を計測する。
トランザクション連続受信回数制御手段105は、推定した転送時間と計測した受信間隔とを比較する(ステップS3)。ステップS3において、トランザクション連続受信回数制御手段105の判定手段153は、受信間隔が転送時間以下であるか否かを判定する。受信間隔が転送時間以下の場合、現時点でのマージ回数分だけPCIトランザクションをマージして転送するよりも、次のPCIトランザクションの受信を待つ方が早い。この場合、判定手段153は、マージ回数カウンタ154を1つカウントアップする(ステップS4)。その後、処理はステップS1に戻り、次のPCIトランザクションが受信される。
ステップS3で、受信間隔が転送時間よりも長いと判断された場合、判定手段153は、次のPCIトランザクションの受信時間が遅いため、現時点でのマージ回数カウンタ154のカウント値をマージ回数として決定する(ステップS5)。トランザクション連続受信回数制御手段105は、決定したマージ回数を連続トランザクション数格納手段104に格納する。マージ回数カウンタ154のカウント値は、マージ回数が連続トランザクション数格納手段104に格納されるとリセットされる。また、受信間隔計測手段152が計測する受信間隔の起点となるPCIトランザクションの受信時刻がリセットされる。
PCIトランザクションマージ手段102は、現時点でトランザクションバッファ101が受信しているPCIトランザクションを連続トランザクションの最後として、マージ回数分のPCIトランザクションをマージする(ステップS6)。メモリトランザクション発行手段103は、PCIトランザクションマージ手段102でマージされたPCIトランザクションに基づいてメモリトランザクションを生成し、メモリ203に出力する。
図5は、2つのPCIトランザクションと書込みアドレスとを示す。トランザクションバッファ101は、PCIトランザクションA及びPCIトランザクションBを連続して受信するものとする。PCIトランザクションA及びPCIトランザクションのデータ量は128Byteであるとする。また、メモリ203は、128Byteごとにメモリアクセスが可能であるとする。つまり、隣接する境界アドレスは128Byteずつ離れているものとする。
仮に、メモリ203にデータを最大128Byteずつ転送可能であるとすると、最も効率がよいデータ転送は、オフセットアドレス値が0の場合に、128Byteのデータを2回転送するときである。その場合、PCIトランザクションAに対して128Byteのデータを書込みメモリトランザクションが発行され、PCIトランザクションBに対して128Byteのメモリトランザクションが発行される。このとき、データに付随するヘッダが最小となり、転送回数が少ないため効率よくデータを転送できる。しかしながら、図5の例のように、書込みアドレスが境界アドレスに一致しない場合で、PCIトランザクションをマージしない場合、前述の例のように、PCIトランザクションA及びBは複数のメモリトランザクションに分割される。
図6は、2つのPCIトランザクションをマージせずにメモリトランザクションを発行した場合の一例を示す。この例では、オフセットアドレス値を「1」としている。この場合、PCIトランザクションAは、7Byte、8Byte、16Byte、32Byte、64Byte、及び余った1Byteのデータを書き込む6つのメモリトランザクションに分割される。PCIトランザクションBも、同様に、6つのメモリトランザクションに分割される。この場合、メモリ203へのデータ転送は、計12回発生する。
図7は、2つのPCIトランザクションをマージしてメモリトランザクションを発行した場合の一例を示す。メモリトランザクション発行手段103は、2つのPCIトランザクションA及びBがマージされた256Byteのデータに対してメモリトランザクションを発行する。この場合、マージされたPCIトランザクションは、7Byte、8Byte、16Byte、32Byte、64Byte、128Byte、及び余った1Byteを書き込む7つのメモリトランザクションに分割される。2つのトランザクションをマージすることで、データ転送の回数を12回から7回に減らすことができ、効率のよいデータ転送が実現できる。
しかしながら、2つのPCIトランザクションをマージする場合、1つ目のPCIトランザクションAが受信されてから、2つ目のPCIトランザクションBが受信されるまで待機する必要がある。仮に待機時間がデータ転送時間よりも長いと、最初のPCIトランザクションAが受信されてから全256Byte分のデータ転送が完了するまでに要する時間が、個々にメモリトランザクションを発行した場合に比べて長くなる可能性がある。つまり、転送回数は削減できるものの、転送に要する時間は削減できない可能性がある。
本実施形態では、トランザクション連続受信回数制御手段105は、PCIトランザクションを解析し、オフセットアドレス値とデータ転送幅とデータ転送量とに基づいてメモリ203への転送時間を推定する。トランザクション連続受信回数制御手段105は、転送時間とPCIトランザクションの受信間隔とを比較し、その比較結果に基づいて、PCIトランザクションのマージ回数を決定する。トランザクション連続受信回数制御手段105は、例えばトランザクションバッファ101から転送されるPCIトランザクションの回数をカウントし、ある一定時間内で最も効率がよい連続回数(マージ回数)を計算することができる。PCIトランザクションマージ手段102は、連続して受信される、トランザクション連続受信回数制御手段105が決定したマージ回数分のPCIトランザクションをマージする。メモリトランザクション発行手段103が、マージされたPCIトランザクションに対してメモリトランザクションを発行することで、効率のよいメモリ203へのデータ転送を実現できる。
関連技術との比較では、特許文献1では、PCIトランザクションが連続する回数が予測され、予測したPCIトランザクションの連続回数分のトランザクションがマージされる。この場合、予測されたPCIトランザクションの連続回数と実際に転送されたPCIトランザクションの連続回数が異なる場合、期待値と違う動作となり、効率的なデータ転送を行うことができない。これに対し、本実施形態では、実際の転送状況に応じてマージ回数を決定できるため、効率のよいデータ転送が実現できる。
また、特許文献1には、PCIトランザクションの受信を一定時間だけ待ち、一定時間内に次のPCIトランザクションが受信できた場合に、トランザクションをマージすることも記載されている。しかしながら、前述の例のように、メモリ203への転送時間は、オフセットアドレス値やメモリ203へのデータ転送幅などに依存して変化する。従って、一定の固定時間だけ待機してマージするか否かを決定する場合、必ずしも効率のよいデータ転送を実現できない。これに対し、本実施形態では、メモリ203への転送時間を推定し、推定した転送時間と受信間隔とを比較することで次のPCIトランザクションをマージするか否か決定される。このようにすることで、一定時間だけ待機する場合に比べて、より効率がよいデータ転送を実現できる。
なお、上記実施形態において、データ転送制御装置100は、ハードウェア、ソフトウェア又はこれらの組合せにより実現することができる。この場合のハードウェア、ソフトウェア又はこれらの組合せによる構成は特に限定されるものではなく、上述した機能を実現可能なものであれば、何れの形態でも適用可能である。
以上、本開示の実施形態を詳細に説明したが、本開示は、上記した実施形態に限定されるものではなく、本開示の趣旨を逸脱しない範囲で上記実施形態に対して変更や修正を加えたものも、本開示に含まれる。
10:データ転送制御装置
11:トランザクションバッファ
12:マージ回数決定手段
13:トランザクションマージ手段
14:メモリトランザクション発行手段
21:周辺装置
22:PCIカード
23:メモリ
100:データ転送制御装置
101:トランザクションバッファ
102:PCIトランザクションマージ手段
103:メモリトランザクション発行手段
104:連続トランザクション数格納手段
105:トランザクション連続受信回数制御手段
151:転送時間推定手段
152:受信間隔計測手段
153:判定手段
154:マージ回数カウンタ
201:周辺装置
202:PCIカード
203:メモリ
204:CPU

Claims (9)

  1. PCI(Peripheral Component Interconnect)カードから、メモリへの書込みデータを含むPCIトランザクションを受信し、格納するトランザクションバッファと、
    前記PCIトランザクションをマージする場合に何回分のPCIトランザクションをマージするかを示すマージ回数を決定するマージ回数決定手段と、
    前記マージ回数決定手段が決定した前記マージ回数分のPCIトランザクションをマージするトランザクションマージ手段と、
    前記トランザクションマージ手段でマージされたPCIトランザクションに基づいて、前記書込みデータを前記メモリに書き込むためのメモリトランザクションを発行するメモリトランザクション発行手段とを備え、
    前記メモリは、所定境界アドレス、及び所定データ幅でアクセス可能であり、
    前記マージ回数決定手段は、前記書込みデータの書込みアドレスと前記境界アドレスとの差を示すオフセットアドレス値、前記データ幅、及び前記書込みデータのデータ量に基づいて前記書込みデータの前記メモリへの転送時間を推定し、該転送時間と前記PCIトランザクションの受信間隔とに基づいて前記マージ回数を決定するデータ転送制御装置。
  2. 前記マージ回数決定手段は、マージ回数カウンタを含み、前記受信間隔が前記転送時間以下の場合は前記マージ回数カウンタをカウントアップし、前記受信間隔が前記転送時間より長い場合は、前記マージ回数カウンタのカウント値を前記マージ回数として決定する請求項1に記載のデータ転送制御装置。
  3. 前記マージ回数決定手段は、
    前記オフセットアドレス値、前記データ幅、及び前記データ量に基づいて前記転送時間を推定する転送時間推定手段と、
    前記トランザクションマージ手段でマージされるPCIトランザクションのうち最初のPCIトランザクションが受信されてから最後のPCIトランザクションの次のPCIトランザクションが受信されるまでの時間を前記受信間隔として計測する受信間隔計測手段と、
    前記受信間隔が前記転送時間以下であるか否かを判定手段とを有する請求項1又は2に記載のデータ転送制御装置。
  4. 前記マージ回数を格納するマージ回数格納手段を更に有し、
    前記マージ回数決定手段は、前記決定したマージ回数を前記マージ回数格納手段に格納し、
    前記トランザクションマージ手段は、前記マージ回数格納手段に格納されたマージ回数分のPCIトランザクションをマージする請求項1から3何れか1項に記載のデータ転送制御装置。
  5. 前記PCIトランザクションは、前記書込みアドレスと前記境界アドレスとが一致しない場合、複数のメモリトランザクションに分割される請求項1から4何れか1項に記載のデータ転送制御装置。
  6. CPU(Central Processing Unit)と、
    所定境界アドレス、及び所定データ幅でアクセス可能なメモリと、
    PCI(Peripheral Component Interconnect)カードと、
    前記PCIカードを介して周辺装置から前記メモリへの書込みデータを含むPCIトランザクションを受信し、前記書込みデータを前記メモリに転送するデータ転送制御装置とを備え、
    前記データ転送制御装置は、前記PCIカードから、前記PCIトランザクションを受信し、格納するトランザクションバッファと、
    前記PCIトランザクションをマージする場合に何回分のPCIトランザクションをマージするかを示すマージ回数を決定するマージ回数決定手段と、
    前記マージ回数決定手段が決定した前記マージ回数分のPCIトランザクションをマージするトランザクションマージ手段と、
    前記トランザクションマージ手段でマージされたPCIトランザクションに基づいて、前記書込みデータを前記メモリに書き込むためのメモリトランザクションを発行するメモリトランザクション発行手段とを有し、
    前記マージ回数決定手段は、前記書込みデータの書込みアドレスと前記境界アドレスとの差を示すオフセットアドレス値、前記データ幅、及び前記書込みデータのデータ量に基づいて前記書込みデータの前記メモリへの転送時間を推定し、該転送時間と前記PCIトランザクションの受信間隔とに基づいて前記マージ回数を決定するコンピュータ装置。
  7. 前記マージ回数決定手段は、マージ回数カウンタを含み、前記受信間隔が前記転送時間以下の場合は前記マージ回数カウンタをカウントアップし、前記受信間隔が前記転送時間より長い場合は、前記マージ回数カウンタのカウント値を前記マージ回数として決定する請求項6に記載のコンピュータ装置。
  8. データ転送制御装置において、
    PCI(Peripheral Component Interconnect)カードから、所定境界アドレス、及び所定データ幅でアクセス可能なメモリへの書込みデータを含むPCIトランザクションを受信し、
    前記書込みデータの書込みアドレスと前記境界アドレスとの差を示すオフセットアドレス値、前記データ幅、及び前記書込みデータのデータ量に基づいて前記書込みデータの前記メモリへの転送時間を推定し、
    前記推定した転送時間と前記PCIトランザクションの受信間隔とに基づいて、前記PCIトランザクションをマージする場合に何回分のPCIトランザクションをマージするかを示すマージ回数を決定し、
    前記決定した前記マージ回数分のPCIトランザクションをマージし、
    前記マージされたPCIトランザクションに基づいて、前記書込みデータを前記メモリに書き込むためのメモリトランザクションを発行するデータ転送制御方法。
  9. 前記マージ回数の決定において、前記受信間隔が前記転送時間以下の場合はマージ回数カウンタをカウントアップし、前記受信間隔が前記転送時間より長い場合は、前記マージ回数カウンタのカウント値を前記マージ回数として決定する請求項8に記載のデータ転送制御方法。
JP2018002684A 2018-01-11 2018-01-11 コンピュータ装置、データ転送制御装置、及び方法 Active JP6822670B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018002684A JP6822670B2 (ja) 2018-01-11 2018-01-11 コンピュータ装置、データ転送制御装置、及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018002684A JP6822670B2 (ja) 2018-01-11 2018-01-11 コンピュータ装置、データ転送制御装置、及び方法

Publications (2)

Publication Number Publication Date
JP2019121316A JP2019121316A (ja) 2019-07-22
JP6822670B2 true JP6822670B2 (ja) 2021-01-27

Family

ID=67306407

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018002684A Active JP6822670B2 (ja) 2018-01-11 2018-01-11 コンピュータ装置、データ転送制御装置、及び方法

Country Status (1)

Country Link
JP (1) JP6822670B2 (ja)

Also Published As

Publication number Publication date
JP2019121316A (ja) 2019-07-22

Similar Documents

Publication Publication Date Title
US5072420A (en) FIFO control architecture and method for buffer memory access arbitration
US8555006B2 (en) Memory arbitration system and method having an arbitration packet protocol
EP1738267B1 (en) System and method for organizing data transfers with memory hub memory modules
US7624221B1 (en) Control device for data stream optimizations in a link interface
EP1750202A1 (en) Combining packets for a packetized bus
US20120042105A1 (en) Bus arbitration apparatus
US20160062930A1 (en) Bus master, bus system, and bus control method
US11467767B2 (en) Storage device throttling amount of communicated data depending on suspension frequency of operation
US6654837B1 (en) Dynamic priority external transaction system
US20110119557A1 (en) Data Transmission Methods and Universal Serial Bus Host Controllers Utilizing the Same
US20140344492A1 (en) Methods and systems for reducing spurious interrupts in a data storage system
CN113590512A (zh) 可直连外设设备的自启动dma装置及应用
US6901467B2 (en) Enhancing a PCI-X split completion transaction by aligning cachelines with an allowable disconnect boundary's ending address
US20080225858A1 (en) Data transferring apparatus and information processing system
US9620215B2 (en) Efficiently accessing shared memory by scheduling multiple access requests transferable in bank interleave mode and continuous mode
EP1814040B1 (en) Storage system, and storage control method
JP3992952B2 (ja) 記憶制御装置およびその運用方法
JP6822670B2 (ja) コンピュータ装置、データ転送制御装置、及び方法
JP3317873B2 (ja) データ転送制御装置
US9767054B2 (en) Data transfer control device and memory-containing device
WO1998028679A1 (en) Data transfer with mirroring
JP2014167818A (ja) データ転送装置およびデータ転送方法
CN107085557A (zh) 直接存储器访问系统以及相关方法
JP4151362B2 (ja) バス調停方式、データ転送装置、及びバス調停方法
JP5715458B2 (ja) 情報処理システム、調停方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190513

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200616

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200811

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201225

R150 Certificate of patent or registration of utility model

Ref document number: 6822670

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150