JP2022137816A - 情報処理装置及び情報処理装置の制御方法 - Google Patents
情報処理装置及び情報処理装置の制御方法 Download PDFInfo
- Publication number
- JP2022137816A JP2022137816A JP2021037494A JP2021037494A JP2022137816A JP 2022137816 A JP2022137816 A JP 2022137816A JP 2021037494 A JP2021037494 A JP 2021037494A JP 2021037494 A JP2021037494 A JP 2021037494A JP 2022137816 A JP2022137816 A JP 2022137816A
- Authority
- JP
- Japan
- Prior art keywords
- buffer
- transmission module
- module
- lending request
- lending
- 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.)
- Granted
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 51
- 238000000034 method Methods 0.000 title claims abstract description 39
- 239000000872 buffer Substances 0.000 claims abstract description 350
- 230000005540 biological transmission Effects 0.000 claims abstract description 136
- 230000004044 response Effects 0.000 claims abstract description 75
- 238000004891 communication Methods 0.000 claims description 45
- 238000012545 processing Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 13
- 230000003247 decreasing effect Effects 0.000 claims description 2
- 238000003672 processing method Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 9
- 230000007423 decrease Effects 0.000 description 7
- 230000004308 accommodation Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 101100257262 Caenorhabditis elegans soc-1 gene Proteins 0.000 description 2
- 230000033228 biological regulation Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/72—Admission control; Resource allocation using reservation actions during connection setup
- H04L47/722—Admission control; Resource allocation using reservation actions during connection setup at the destination endpoint, e.g. reservation of terminal resources or buffer space
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
【課題】スループット性能を確保する情報処理装置及び情報処理装置の制御方法を提供する。【解決手段】一方の送信モジュール10は、自己に割り当てられた受信バッファ22の使用量を基に、他の送信モジュール10に割り当てられた受信バッファ22の貸出依頼を他の送信モジュール10に送信する貸出依頼判定部133と、他の送信モジュール10が貸出依頼に対して受諾応答を送信した場合、自己に対する受信バッファ22の割り当て量を増加させる空きバッファ計算部132とを備える。他の送信モジュール10は、貸出依頼を受信して、自己に割り当てられた受信バッファ22の使用量を基に、受諾応答を一方の送信モジュール10へ送信する貸出依頼応答部131と、受諾応答を送信した場合、自己への受信バッファ22の割り当て量を減少させる他の空きバッファ計算部132とを備える。【選択図】図2
Description
本発明は、情報処理装置及び情報処理装置の制御方法に関する。
2者間で通信を行う場合、データの受信側の装置は受信バッファを用意し、送信側の装置は受信側の装置の受信バッファがオーバーフローしないようにフロー制御を行うことが一般的である。フローは、送信側の装置から受信側の装置への一連のデータパケットの流れを指す。
フロー制御の1つとして、ハードウェアによるクレジット方式がある。ハードウェアによるクレジット方式では、受信バッファ上の受信データが受信バッファから読み出されたときに、受信バッファが読み出された分空いたとして、受信側の装置が送信側の装置に読出し量を通知する。これにより、送信側の装置は、受信側の装置の受信バッファの空き状況を判断できる。送信側の装置は、送信量から通知された読出し量を減算した値が受信バッファサイズ以下であれば、受信側の装置の受信バッファに空きがあると判定できる。
一定の通信スループット性能を確保したい場合、基本的には、受信側の装置の受信バッファには、受信バッファサイズ=受信バッファの読出し通知レイテンシ×目標スループットといった式で決定されるバッファサイズ以上のバッファサイズが予め設定される。これにより、送信側の装置が確保したいスループットで送信を続けても受信バッファが溢れない。ここで、受信バッファの読出し通知レイテンシとは、送信側の装置が送信したパケットが受信側の装置の受信バッファから読み出され、読み出されたことが送信側の装置に通知されるまでの時間である。
ただし、通信に使用可能な資源が限られている場合、必ずしも目的とする最大スループット性能に対して、常に十分な受信バッファサイズが確保できるとは限らない。例えば、送信元が複数存在する場合、受信側の装置は、送信元毎に受信バッファを有する。そのような場合に、送信元が多くなれば多くなるほど、受信側の装置がそれぞれの送信側の装置に対して十分な受信バッファを確保することが困難となる。そこで、通信負荷に応じて受信バッファサイズを動的に変える技術が提案されている。
通信負荷に応じて受信バッファのサイズを動的に変える技術として、例えば以下のようなものがある。通信開始時に予め受信側が決めた初期バッファサイズ、もしくは送信側から要求された受信バッファのサイズを受信側が確保する。この時、初期バッファサイズを受信側の装置が決定した場合は、送信側に確保したバッファサイズを通知する。その後、通信データ量が増加し、バッファが足りなくなった場合、もしくは足りなくなりそうな場合、受信側の装置の判断又は送信側の要求により、受信バッファのサイズが増加可能な場合はバッファサイズを増加させる。また、通信データが減少した場合、バッファサイズを減少させる。受信バッファのサイズを変更した場合、受信側の装置は、受信バッファのサイズの変更を送信側の装置に通知する。これにより、例えば、複数の送信側の装置と通信する受信側の装置は、通信量の多い相手用の受信バッファのサイズを大きくして、その他は受信バッファサイズを小さくするなど、トータルの資源を制限しながらスループット性能を確保することができる。
なお、受信側の装置が複数の送信側の装置と通信を行う技術として、送信側の装置が共有する受信器セルバッファを用いて送信側の装置の全体のフロー制御を行う技術がある。また、受信側ノードが複数の送信側ノードの各々に対する共有の通信バッファの割り当てを同報通信で各送信側ノードに通知して、送信側の装置は割り当てられた通信バッファを使用して通信を行う技術がある。
例えば、コンピュータのメインメモリ上に受信バッファを確保して使用するような通信の場合、メインメモリは、十分に存在するためバッファサイズを要求に応じて増やすことは可能である。しかしながら、PCIe(Peripheral Component Interconnect Express)(登録商標)バスによる通信や同一チップ内のハード実装による通信では、チップ上に実装されたSRAMなどがバッファとして使用される。そのため、CPUやメモリコントローラなどともにPCIeコントローラが実装されるような高機能なSoC(System on a Chip)では、実装面積に限りがあり、十分な量のバッファを実装することが困難である。
そのようなケースで、1つの受信モジュールに対して複数の送信モジュールがデータを送信する場合、限られたサイズの受信バッファにおいてある送信モジュールへの割当量を増やすと、他の送信モジュールへの割当量を減らすことになり、際限無く割当量を増やすことは認められない。
例えば、1つの受信モジュールに対して第1送信モジュールと第2送信モジュールの2つがあり、初期状態では受信モジュールが有するトータルのバッファサイズの半分を、各送信モジュールに割り当てた場合を考える。第1送信モジュールが、受信モジュールにデータを送信しているときに、ある時点で第1送信モジュールに割り当てられた受信バッファが溢れると判定し、スループット性能を確保するために、受信バッファ割り当ての増加を受信モジュールに要求する。受信モジュールは、要求を受けて第2送信モジュールに割り当てた受信バッファの一部を第1送信モジュールに割り当て直す。この時、第2送信モジュールに割り当てていた受信バッファが空いていたとしても、第2送信モジュールがいつデータを送信してくるか分からないため、受信モジュールは、第2送信モジュールに受信バッファ割り当ての減少要求を送る。そして、第2送信モジュールから受信バッファの減少の許可を受けて初めて、受信モジュールは、第1送信モジュールに受信バッファの割り当ての増加を通知することができる。
この場合、受信バッファの割り当てサイズを変更するまでに、数なくとも受信モジュールと送信モジュールとの間の2往復分の通信時間がかかる。この遅延時間の間、第1送信モジュールは受信モジュールに目標スループットでデータを送り続けることが困難となり、スループットが目標性能に達するまでに遅延が生じる。また、スループットの立ち上がり遅延を許容したとしても、例えば第1送信モジュールと第2送信モジュールとが交互にある程度の量のデータを送信するようなケースなどでは、それぞれに対する受信バッファの割り当てが追い付かずに無駄な調整となるおそれがある。
また、送信側の装置が共有する受信器セルバッファを用いる技術や、受信側ノードが複数の送信側ノードの各々に対する共有の通信バッファの割り当てを同報通信で通知する技術を用いても、受信バッファの割り当てサイズの変更手順を短縮することは困難である。そのため、これらの従来技術を用いてもスループット性能を確保することは難しい。
開示の技術は、上記に鑑みてなされたものであって、スループット性能を確保する情報処理装置及び情報処理装置の制御方法を提供することを目的とする。
本願の開示する情報処理装置及び情報処理装置の制御方法の一つの態様において、情報処理装置は、受信モジュール、並びに、前記受信モジュールに対してパケットを送信する第1送信モジュール及び第2送信モジュールを有する。前記受信モジュールは、前記第1送信モジュールと前記第2送信モジュールとにより共有される、前記パケットを格納する受信バッファを有する。前記第1送信モジュールは、前記第1送信モジュールに割り当てられた前記受信バッファの使用量を基に、前記第2送信モジュールに割り当てられた前記受信バッファの貸出依頼を前記第2送信モジュールに送信する貸出依頼判定部と、前記第2送信モジュールが前記貸出依頼に対して受諾応答を送信した場合、前記第1送信モジュールに対する前記受信バッファの割り当て量を増加させる第1空きバッファ計算部とを有する。前記第2送信モジュールは、前記貸出依頼を受信して、前記第2送信モジュールに割り当てられた前記受信バッファの使用量を基に、前記受諾応答を前記第1送信モジュールへ送信する貸出依頼応答部と、前記貸出依頼応答部が前記受諾応答を送信した場合、前記第2送信モジュールに対する前記受信バッファの割り当て量を減少させる第2空きバッファ計算部とを有する。
1つの側面では、本発明は、スループット性能を確保することができる。
以下に、本願の開示する情報処理装置及び情報処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置及び情報処理装置の制御方法が限定されるものではない。
図1は、実施例1に係る情報処理装置の構成図である。本実施例に係る情報処理装置1は、図1に示すように、SoC100及びエンドポイント201~204を有する。
エンドポイント201~204は、PCIeにおけるI/O(Input/Output)デバイスである。エンドポイント201~204は、例えば、GPU(Graphics Processing Unit)や、ネットワークインタフェースや、ハードディスクなどである。
SoC100には、図示しないCPU及びメインメモリとともに、PCIeの複数のルートポート101~104が搭載される。ルートポート101~104は、エンドポイント201~204に接続される。ルートポート101~104は、SoC100の外部のPCIeデバイスと、SoC100とを連携させるためのポートである。
PICeでは、ピアツーピア(Peer-to-Peer)と呼ばれる各ルートポート101~104に接続されたエンドポイント201~204同士が直接通信をする方式が定義されている。エンドポイント201~204のうち通信する2つが異なるルートポート101~104のいずれかに接続される場合の通信手順について、エンドポイント201が送信元でエンドポイント203が送信先である場合を例に説明する。送信元のエンドポイント201は、接続されたルートポート101にパケットを送信する。パケットを受信したルートポート101は、送信先のエンドポイント203に接続されたルートポート103にパケットを送信する。ルートポート103は、送信先のエンドポイント203へパケットを転送する。各エンドポイント201~204とそれぞれに接続されたルートポート101~104とは、PCIeで定められた方式により通信する。各ルートポート101~104間の通信については、PCIeでは明確には定義されていない。
本実施例では、ルートポート101~104は、エンドポイント201~204にPCIeの32Gbpsスピード、16レーンで接続される。また、SoC1の内部では、ルートポート101~104は、それぞれリングバス105によって相互通信が行えるように接続される。リングバス105の上には、リングストップ(RS:Ring Stop)150及び151~154が、SoC1の内部で通信するユニットごとに配置される。ルートポート101~104は、それぞれの図1において最も近い位置に配置されたリングストップ151~154をリングバス105による通信の接続点とする。また、他のリングストップ150は、図示しないが、CPUコアやメモリコントローラなどの他のユニットに対応するように配置され、それぞれが対応するユニットのリングバス105による通信の接続点となる。以下の説明では、リングストップ150及び151~154を区別しない場合、まとめて「リングストップ150」と呼ぶ。
例えば、ルートポート101がルートポート103にパケットを送信する場合、ルートポート101は、リングストップ151からパケットを送信する。リングストップ151から送信されたパケットは、リングバス105上の各リングストップ150を経由して、リングストップ153まで運ばれる。ルートポート103は、リングストップ153に届いたパケットが自己宛てであれば、そのパケットを受信する。
ここで、パケットが通過するリングストップ150が多いほど、そのパケットが目的地に到達するまでの時間がかかる。本実施例では、簡単のためリングストップ150を用いた通信は、各ユニット間のリングストップ150の個数に比例し、あるリングストップ150から隣のリングストップ150までに32nsecかかるものとして説明する。例えば、ルートポート101からルートポート103にパケットが届くまでには、128nsecかかる。
通常は、ルートポート103はエンドポイント203にデータパケットの送信を順次続けるが、例えばルートポート103とエンドポイント203との間のPCIeの伝送経路品質が少し不安定でパケットが一時的に送信できずに再送することがある。その時、一時的にルートポート103はルートポート101から受信し続けているデータパケットを順次送信できなくなる。そのため、ルートポート103は、ルートポート101から受信したデータパケットを受信バッファ130に溜めていく。そのような状況が続くと、受信バッファ130の空き領域がなくなり溢れて、ルートポート103は、データパケットの受信が困難となる。そこで、ルートポート101はルートポート103の受信バッファ130が溢れないように送信を制御する。
ここで、ルートポート101からルートポート103にデータパケットを送信するときの送信時間であるレイテンシは前述した通り128secである。ルートポート103からルートポート101への送信レイテンシも同様に128secである。ルートポート101が64GB/secでパケットを送信し続けた場合、256nsecでルートポート103の受信バッファ130において64GB/sec×256nsec=16kBの容量が消費される。ルートポート103の受信バッファ130を16kBとすると、ルートポート101はここで送信を止める。一方で、ルートポート103はエンドポイント203との通信が滞りない場合は、ルートポート101から受信したパケットをエンドポイント203に順次送信するため、受信バッファ130はその分すぐに空く。そして、ルートポート103は、受信バッファ130が空いたことをルートポート101に通知する。この場合、ルートポート101はデータパケットを送信した後、往復256nsec後に空きを知ることになる。したがって、ルートポート101は、受信バッファ130の空きを知らなければ256nsec後にデータパケットの送信を停止するが、256nsec後のタイミングで受信バッファ130の空きを知るために、追加のパケットが送信可能となる。すなわち、ルートポート101は、継続してパケットを64GB/secのスループットで送信できる。
なお、実際にはルートポート103がパケットを受信してから送信するまでに内部処理時間が消費され、ルートポート101に受信バッファ130が空いたことを通知された後、送信制御回路にそれを反映するまでの内部遅延時間が消費される。ただし、ここでは、簡単のためそれらの消費時間をないものとして説明する。
ここで、本実施例において受信バッファ130のサイズは、例えば、16kBとして設定される。これは、ルートポート101が送信したデータパケットが受信バッファ130から読み出されたことすなわち空いたことを知るまでの時間256nsec(片道通信レイテンシ128nsec×2)と目標スループット性能である64GB/secとを元に256nsec × 64GB/sec = 16kBと計算した値である。
次に、エンドポイント202がエンドポイント203にデータパケットを送信する場合について説明する。この場合は、ルートポート102とルートポート103との間の片道の通信レイテンシが144nsecであるが、それ以外は前述のエンドポイント201からエンドポイント203への送信の場合と同じように考えることができる。そこで、ルートポート103側が(144nsec×2)×64GB/sec=18kBの受信バッファ130を有する場合、ルートポート102は、64GB/secのスループット性能を得ることができる。
ただし、ルートポート103にデータパケットを送信する送信元の数が増えた場合、ルートポート103が、各送信元に対してこのような受信バッファ130を持つことは、実装面積の観点から現実的でない。なぜなら、ルートポート101とルートポート102が同時に64GB/secのスループットでルートポート103に送信できるとしても、その先のルートポート103とエンドポイント203との間も64GB/secのスループットしか出ないため、ルートポート101及びルートポート102からの送信のスループットは合計で64GB/secを出すことができればよいためである。このことから、ルートポート103が、ルートポート101とルートポート103との間及びルートポート102とルートポート103との間で個別に64GB/secを満たすようなサイズの受信バッファ130を別々に有することは効率が悪いといえる。
そこで、本実施例では、ルートポート101とルートポート102とが、ルートポート103にデータパケットを送信する場合に、ルートポート101に使用が限定された受信バッファ130の領域を4kBとする。また、ルートポート102に使用が限定された受信バッファ130の領域を6kBとする。そして、ルートポート101とルートポート102の双方が使える受信バッファ130の共用分の領域を12kBとして、状況に応じて共用分の12kBをルートポート101とルートポート102との間で融通し合うことで、ルートポート103の受信バッファ130のサイズを削減することが可能である。具体的には、初期では、受信バッファ130の共用分の領域を半分ずつ、ルートポート101及び102に割当て、ルートポート101用に合計10kB、ルートポート102用に合計12kBが設定される。そして、ルートポート101とルートポート102とで、受信バッファ130の共用分の領域に使用量に応じて共用分の領域を融通し合うことで、スループットを確保する。以下に、受信バッファ130の共用分の領域に使用量に応じて共用分の領域を融通の処理について詳細に説明する。
図2は、データパケットの送受信を行うルートポートのブロック図である。図2では、ルートポート101~104におけるパケットを送信する側を送信モジュール10とし、パケットを受信する側を受信モジュール20として表した。ルートポート101~104は、パケットの送受信の方向によって送信モジュール10又は受信モジュール20のいずれにもなり得る。次に、図2を参照して、ルートポート101~104のパケット送信時の動作を説明する。
受信モジュール20について説明する。受信モジュール20は、送信モジュール10から送信されたデータパケットを受信する。受信モジュール20は、処理実行部21、受信バッファ22、送信部23及び受信部24を有する。
受信バッファ22は、例えば、図1における受信バッファ130の共用分の領域である。受信バッファ22は、各送信モジュール10から送信されたデータパケットを一時的に格納する。受信バッファ22のサイズは、受信バッファ22の読み出しレイテンシと目標スループットとを基に決定される。
処理実行部21は、データパケットを受信バッファ22から取得する。そして、処理実行部21は、取得したデータパケットに対する処理を実行する。
送信部23は、受信バッファ22からデータパケットが処理実行部21により取り出されたときに、取り出されたデータパケットのサイズの情報を含むデータパケットの処理通知をそのデータパケットの送信元の送信モジュール10へ送信する。
受信部24は、データパケットを各送信モジュール10から取得する。そして、受信部24は、取得したデータパケットを受信バッファ22に格納する。
送信モジュール10は、受信モジュール20に対してデータパケットの送信を行う。図2に示すように、送信モジュール10は、受信部11、送信部12、空きバッファ管理部13及び記憶部14を有する。
記憶部14は、貸出受諾閾値141、初期空きバッファ値142及び貸出依頼閾値143を記憶する。貸出受諾閾値141は、自己が搭載された送信モジュール10に割り当てられた空きバッファを貸し出すことを許可するか否かを判定するための閾値である。初期空きバッファ値142は、起動時に空きバッファとして割り当てられる受信バッファ22における割当量を表す。本実施例では、初期空きバッファ値142は、ルートポート101~104の全てで同一の値を用いる。すなわち、起動時には、受信モジュール20の受信バッファ22の領域は、パケットの送信元となる送信モジュール10の間で等分割される。貸出依頼閾値143は、受信バッファ22を共有する他の送信モジュール10に対して割り当てられた空きバッファの貸し出しを要求するか否かを判定するための閾値である。貸出依頼閾値143は、貸出受諾閾値141よりも小さな値である。
受信部11は、受信モジュール20の受信バッファ22に滞留するデータパケットが読み出されて処理されたために受信バッファ22にその分の空きができたことを表すデータパケットの処理通知を受信モジュール20の送信部23から受信する。そして、受信部11は、受信バッファ22の割り当てられた領域において新たに増えた空きバッファのサイズを空きバッファ計算部132に通知する。
また、受信部11は、受信バッファ22を共有する他の送信モジュール10の送信部12から、受信バッファ22の自己の割り当て分からの貸し出しを依頼する貸出依頼パケットを受信する。そして、受信部11は、貸出可否の判定を貸出依頼応答部131に依頼する。
また、受信部11は、貸出依頼パケットに対する応答である貸出応答を、受信バッファ22を共有する他の送信モジュール10の送信部12から受信する。そして、受信部11は、受信した貸出応答が貸出受諾を通知する内容の場合、貸出受諾の通知を空きバッファ計算部132へ出力する。また、受信した貸出応答が貸出拒否を通知する内容の場合、受信部11は、貸出依頼の再送を送信部12に依頼する。ただし、その時点で貸出依頼の条件が解消されている場合、受信部11は、再送を依頼しなくてもよい。
送信部12は、データパケットを送信する際に、その時点での空きバッファ値の通知要求を空きバッファ計算部132に行う。そして、送信部12は、その時点での受信バッファ22における空きバッファ値が送信するデータパケットのサイズ以上の場合、そのデータパケットを受信モジュール20の受信部24へ送信する。さらに、送信部12は、受信モジュール20へのデータパケットの送信をそのデータパケットのサイズとともに空きバッファ計算部132に通知する。これに対して、その時点での空きバッファ値が、送信するデータパケットのサイズ未満の場合、送信部12は、空きバッファ値の通知要求を空きバッファ計算部132に行いつつ、送信するデータパケット以上の空きバッファが確保できるまで待機する。
また、送信部12は、貸出依頼パケットの送信の指示を貸出依頼判定部133から受ける。そして、送信部12は、取得した貸出依頼パケットを、受信バッファ22を共有する他の送信モジュール10の受信部11へ送信して貸出依頼を行う。
その後、貸出依頼に対して貸出拒否を通知する貸出応答を受信部11が受信した場合、送信部12は、貸出依頼の再送の依頼を受信部11から受ける。そして、送信部12は、貸出依頼パケットを、受信バッファ22を共有する他の送信モジュール10の受信部11へ再度送信する。だだし、送信部12は、直ぐに貸出依頼パケットを再送しなくてもよく、予め決められた時間待機してから貸出依頼パケットを再送信してもよい。また、その時点で貸出依頼の条件が解消されている場合、送信部12は、再送を依頼しなくてもよい。
また、送信部12は、貸出応答の送信の指示を貸出依頼応答部131から受ける。そして、送信部12は、貸出依頼応答部131から取得した貸出応答を、受信バッファ22を共有する貸出依頼の送信元である送信モジュール10の受信部11へ送信する。
空きバッファ管理部13は、自己が搭載された送信モジュール10に対する受信バッファ22の割り当て分における空きバッファを管理する。空きバッファ管理部13は、貸出依頼応答部131、空きバッファ計算部132及び貸出依頼判定部133を有する。
貸出依頼応答部131は、受信バッファ22を共有する他の送信モジュール10からの貸出依頼パケットを受信部11から取得する。そして、貸出依頼応答部131は、空きバッファ値の通知要求を空きバッファ計算部132に対して行い、その時点での空きバッファ値を取得する。次に、貸出依頼応答部131は、記憶部14に格納された貸出受諾閾値141を取得する。
そして、貸出依頼応答部131は、その時点の空きバッファ値と貸出受諾閾値141とを比較する。その時点の空きバッファ値が貸出受諾閾値141以上の場合、貸出依頼応答部131は、貸出受諾を通知する貸出応答を作成する。ここで、貸出受諾閾値114から貸出依頼閾値143を減算した値は、貸出依頼に対して貸し出す予め決められた空きバッファのサイズである貸出単位量より大きい値である。
また、その時点の空きバッファ値が貸出依頼受諾閾値141未満の場合、貸出依頼応答部131は、貸出拒絶を通知する貸出応答を作成する。貸出受諾閾値141は、例えば、初期空きバッファ値142のサイズを100とした場合の20や30といった割合にあたる値である。その後、貸出依頼応答部131は、貸出依頼の送信元の送信モジュール10に対する、貸出依頼応答の送信を送信部12へ指示する。ここで、貸出依頼応答が貸出受諾の内容である場合、貸出依頼応答部131は、空きバッファの貸し出しを空きバッファ計算部132に通知する。
空きバッファ計算部132は、パケットの送信先となる受信モジュール20の受信バッファ22における初期空きバッファ値142を起動時に取得して、初期の空きバッファ値として設定する。
空きバッファ計算部132は、送信部12により受信モジュール20に対してデータパケットが送信されると、データパケットのサイズとともにデータパケットの送信通知を送信部12から受ける。そして、空きバッファ計算部132は、その時点での空きバッファ値から通知されたデータパケットのサイズを減算して新たな空きバッファ値とする。そして、空きバッファ計算部132は、空きバッファ値を減らした場合、その時点での空きバッファ値を貸出依頼判定部133に通知するとともに貸出依頼判定を指示する。
また、空きバッファ計算部132は、空きバッファ値の通知要求を送信部12から受ける。そして、空きバッファ計算部132は、その時点での空きバッファ値を送信部12に通知する。
また、空きバッファ計算部132は、処理実行部21により受信バッファ22からデータパケットが取り出された場合、新たに増えた空きバッファのサイズの通知を受信部11から受ける。そして、空きバッファ計算部132は、その時点での空きバッファ値に新たに増えた空きバッファのサイズを加算して、新たな空きバッファ値とする。
また、空きバッファ計算部132は、空きバッファ値の通知要求を貸出依頼応答部131から受ける。そして、空きバッファ計算部132は、その時点での空きバッファ値を貸出依頼応答部131に通知する。
また、貸出依頼応答部131が貸出受諾を通知する貸出依頼応答を送信した場合、空きバッファ計算部132は、空きバッファの貸し出しの通知を貸出依頼応答部131から受ける。そして、貸出依頼応答部131は、予め決められた貸出単位量をその時点での空きバッファ値から減差して、新たな空きバッファ値とする。
また、他の送信モジュール10に対して行った貸出依頼に対する応答が貸出受託を通知する内容の場合、空きバッファ計算部132は、貸出受諾の通知を受信部11から受ける。そして、空きバッファ計算部132は、予め決められた貸出単位量をその時点での空きバッファ値に加算して、新たな空きバッファ値とする。
貸出依頼判定部133は、その時点での空きバッファ値の通知とともに貸出依頼判定の指示を空きバッファ計算部132から受ける。次に、貸出依頼判定部133は、貸出依頼閾値143を記憶部14から取得する。
そして、貸出依頼判定部133は、その時点での空きバッファ値と貸出依頼閾値143とを比較する。その時点での空きバッファ値が貸出依頼閾値143以上の場合、貸出依頼判定部133は、貸出依頼不要と判定する。
これに対して、その時点での空きバッファ値が貸出依頼閾値143未満の場合、貸出依頼判定部133は、既に貸出依頼を行っている最中か否かを判定する。貸出依頼を行っている最中でなければ、貸出依頼判定部133は、受信バッファ22を共有する他の送信モジュール10に対する空きバッファの貸し出しを依頼する貸出依頼パケットを生成する。そして、貸出依頼判定部133は、生成した貸出依頼パケットの送信を送信部12に指示する。貸出依頼閾値143は、貸出受諾閾値141よりも小さい値であり、例えば、初期空きバッファ値142のサイズを100とした場合の10や20といった割合にあたる値である。
貸出受諾閾値141や貸出依頼閾値143は、頻繁に貸したり、借りたりしないような値に設定するなど、実行される通信の性格によって固有に決められてもよい。また、貸出受諾閾値141や貸出依頼閾値143としていくつかの設定値を記憶するレジスタを用意し、情報処理装置1においてどの程度の貸し借りを行わせたいかによりソフトウェアにより、貸出受諾閾値141や貸出依頼閾値143の値を選択させて設定させてもよい。
ここで、送信モジュール10がN個(N>2)の場合の貸出依頼要求を行う送信モジュール10の決定方法について説明する。例えば、貸出依頼要求をする送信モジュール10は、他の送信モジュール10の中から1つ選択して貸出依頼要求を行い、貸出拒否の貸出応答を受信した場合は、別の他の送信モジュール10に貸出依頼要求を行う。貸出依頼要求をする送信モジュール10は、貸出受諾の貸出応答がくるまで、順次1つずつ未選択の他の送信モジュール10を選択して貸出依頼要求を繰り返す。
他にも、ある送信モジュール10が貸出依頼を拒否する場合は、その送信モジュール10は貸出依頼要求元以外の他の送信モジュール10に貸出依頼要求を転送し、貸出受諾ができる送信モジュール10に至るまで順番に転送する。そして、貸出受諾ができる送信モジュール10に転送されたときに、その送信モジュール10が貸出受諾の貸出応答を、貸出依頼元の送信モジュール10に送信してもよい。
図3は、実施例1に係る情報処理装置による空きバッファ管理処理のフローチャートである。次に、図3を参照して、実施例1に係る情報処理装置1によるデータパケットの送信処理の流れを説明する。以下に説明する空きバッファ管理処理は、送信部12による受信モジュール20へのデータパケットの送信と並行して行われる。
空きバッファ計算部132は、初期空きバッファ値142を記憶部14から取得して、空きバッファ値に初期値として設定する(ステップS1)。
その後、空きバッファ計算部132は、送信部12からのデータパケット送信の通知の有無により、送信部12がデータパケットを受信モジュール2へ送信したか否かを判定する(ステップS2)。送信部12がデータパケットを受信モジュール2へ送信していない場合(ステップS2:否定)、空きバッファ管理処理は、ステップS4へ進む。
これに対して、送信部12がデータパケットを受信モジュール2へ送信した場合(ステップS2:肯定)、空きバッファ計算部132は、送信されたデータパケットのサイズ分、空きバッファ値を減少させる(ステップS3)。
貸出依頼判定部133は、空きバッファ値が貸出依頼閾値143未満であり、且つ、他の送信モジュール10に対して貸出依頼中でないかを判定する(ステップS4)。空きバッファ値が貸出依頼閾値143以上もしくは貸出依頼中の場合(ステップS4:否定)、空きバッファ管理処理は、ステップS6へ進む。
これに対して、空きバッファ値が貸出依頼閾値143未満であり、且つ、貸出依頼中でない場合(ステップS4:肯定)、貸出依頼判定部133は、貸出依頼パケットの送信を送信部12に指示する。送信部12は、貸出依頼判定部133からの指示を受けて、貸出依頼パケットを、受信バッファ22を共有する他の送信モジュール10へ送信する(ステップS5)。
また、空きバッファ計算部132は、受信部11からの新たに増えた空きバッファのサイズの通知の有無により、データパケットの処理通知を受信したか否かを判定する(ステップS6)。データパケットの処理通知を受信していない場合(ステップS6:否定)、空きバッファ管理処理は、ステップS8へ進む。
これに対して、データパケットの処理通知を受信した場合(ステップS6:肯定)、空きバッファ計算部132は、通知された新たに増えた空きバッファのサイズ分、空きバッファ値を増加させる(ステップS7)。
また、空きバッファ計算部132は、貸出受諾の貸出応答を他の送信モジュール10から受信したか否かを判定する(ステップS8)。貸出受諾の貸出応答を受信していない場合(ステップS8:否定)、空きバッファ管理処理は、ステップS10へ進む。
これに対して、貸出受諾の貸出応答を受信した場合(ステップS8:肯定)、空きバッファ計算部132は、空きバッファ値を貸出単位量増加させる(ステップS9)。
また、貸出依頼応答部131は、受信バッファ22を共有する他の送信モジュール10から貸出依頼要求を受信したか否かを判定する(ステップS10)。貸出依頼要求を受信していない場合(ステップS10:否定)、空きバッファ管理処理は、ステップS14へ進む。
これに対して、貸出依頼要求を受信した場合(ステップS10:肯定)、貸出依頼応答部131は、空きバッファ値が貸出受諾閾値141以上か否かを判定する(ステップS11)。
空きバッファ値が貸出受諾閾値141以上の場合(ステップS11:肯定)、貸出依頼応答部131は、貸出受諾を通知する貸出応答を作成して貸出応答の送信を送信部12に指示するとともに、貸出受諾を空きバッファ計算部132に通知する。空きバッファ計算部132は、空きバッファ値を貸出単位量減少させる。また、送信部12は、貸出受諾の貸出応答を貸出依頼の送信元である送信モジュール10へ送信する(ステップS12)。
これに対して、空きバッファ値が貸出受諾閾値141未満の場合(ステップS11:否定)、貸出依頼応答部131は、貸出拒否を通知する貸出応答を作成して貸出応答の送信を送信部12に指示する。送信部12は、貸出拒否の貸出応答を貸出依頼の送信元である送信モジュール10へ送信する(ステップS13)。
その後、空きバッファ管理部13は、情報処理装置1の電源が落とされるといった操作者による動作停止指示の有無などにより、動作を停止させるか否かを判定する(ステップS14)。情報処理装置1の動作が継続する場合(ステップS14:否定)、空きバッファ管理処理は、ステップS2へ進む。これに対して、情報処理装置1の動作が停止される場合(ステップS14:肯定)、空きバッファ管理部13は、空きバッファ管理処理を終了する。
ここで、本実施例では、貸し出しを受けた受信バッファ22の割り当て分の返却については記載していないが、返却方法は以下に示す方法を採用することが可能である。例えば、空きバッファ管理部13は、空きバッファ値が所定の返却閾値を超えた場合に、貸出元の送信モジュール10に対して返却の通知を行い空きバッファ値を減らす。他にも、返却処理をなくして貸出自体を授与として、空きバッファ管理部13は、貸出依頼要求が来た場合に貸し出してもよい。
次に、図1に戻って、本実施例に係る情報処理装置1による受信バッファ130の共用分の融通と、受信側を介して受信バッファ130の共用分の融通を行う場合との比較について説明する。
まず、受信側を介して受信バッファ130の共用分の融通を行う場合について説明する。ルートポート101が最初にエンドポイント201からのデータパケットを受信してルートポート103にそれを送信するときと同時に、ルートポート103に受信バッファ130の共用分の割り当てサイズの増の要求パケットを送信する。この場合、ルートポート103は、データパケットをルートポート103が受信してエンドポイント203に送信した時に、受信バッファ130の空きを通知するパケットをルートポート101に送信する。ここで、受信バッファ130の空きを通知するパケットよりも早く、ルートポート103からルートポート101への受信バッファ130の割り当ての増加を通知するパケットがルートポート101に先に届くことはない。なぜなら、ルートポート103は、ルートポート102に割り当てた共用分の領域を減らしてよいかを問い合わせるパケットをルートポート102に送信してその応答を受け取ることになり、その時間分遅くなるからである。このように、ルートポート103を介して受信バッファ130の共用分の割り当ての増減を調整しようとするとスループット性能がでないことになる。この場合は、ルートポート101とルートポート103との間の割り当て増要求+応答の往復256nsecとルートポート103とルートポート102との間の割り当て減少要求+応答の往復288nsecの合計である544nsecの間、性能が出ない。
これに対して、本実施例では、ルートポート101が直接ルートポート102にルートポート103が有するルートポート102に割り当てられたバッファの融通を要求できる。そのため、ルートポート101とルートポート102との間の通信遅延32nsecの往復64nsecで受信バッファサイズを増加させることができる。ルートポート103ではルートポート101とルートポート102とから受信するデータパケットの量が10kB+12kB=22kBを超えない限り遅延が発生しない。そのため、ルートポート103は、ルートポート101とルートポート102との間のバッファ量の増減に関知しなくてもよい。
このように、この実施例では64nsec後にはルートポート101への受信バッファ130の割り当て量を増加できる。そして、その64nsecの間に64GB/secのスループットでルートポート101がルートポート103に送信する量は64nsec×64GB/sec=4kBである。これは、受信バッファ130のうちの初期にルートポート101に割り当てられたサイズである10kBを十分に下回っている。したがって、受信バッファ130が満杯になって送信を止める前に、受信バッファ130におけるルートポート101に割り当てたサイズを増量できる。すなわち、受信バッファサイズがスループットのネックとなることがない。逆に、ルートポート102からルートポート103へのデータパケットの送信時も、ルートポート102がルートポート101との間で受信バッファ130の割り当てを融通することで、受信バッファ130のサイズの影響を受けずにスループット性能を出せる。ルートポート101とルートポート102との双方がデータパケットを送信する場合は、お互いがお互いに要求するため、ルートポート101とルートポート102は、調整できる共用分の12kBを分けて使う。
以上に説明したように、本実施例に係る情報処理装置において、受信バッファの割り当て領域の使用量に応じて、受信モジュールを経由せずに空きバッファの貸し借りを送信モジュール同士で行う。これにより、送信モジュールが要求するスループットの確保と受信バッファの調整を容易に行うことが可能となる。すなわち、複数の送信元が1つの送信先に対してデータパケットを送信する通信形態において、少ない受信バッファ資源でスループット性能を確保することが可能となる。特に、送信モジュールと受信モジュールとの間の距離が遠いために通信レイテンシが大きい場合に、本実施例に係る情報処理装置による送信モジュール同士での受信バッファの融通はスループット性能の向上に有効である。さらに、受信バッファを融通し合う送信モジュール間の距離が短ければ、よりスループット性能の向上が見込まれる。
次に、実施例2について説明する。本実施例に係る情報処理装置1も図1で表される。また、本実施例に係る情報処理装置1の空きバッファの管理についてのブロック図も図2で表される。以下の説明では、実施例1と同じ各部の動作については説明を省略する。
図1において、ルートポート101とルートポート102は、調整できる共用分の12kBを分けて使う場合、ルートポート101及び102がそれぞれルートポート103宛てとして64GB/secのスループットで送信しようとすると、ルートポート101及び102に設定された一時バッファ(不図示)にパケットが溜まる。例えば、この溜まった量をルートポート101とルートポート102との間でルートポート103の受信バッファ130の共用分の割り当てを要求する際に通知しあうことで、どちらがどれだけのルートポート103の受信バッファ130の共用分を使うかを決めれば、エンドポイント201とルートポート101との間、エンドポイント202とルートポート102との間の通信負荷に応じたルートポート103の受信バッファ130の割当てをすることも可能である。そこで、本実施例に係る情報処理装置1は、エンドポイント202とルートポート102との間の通信負荷に応じて受信バッファ130の共用分の割り当てを行う。以下に、図2を参照して、本実施例に係る情報処理装置1による受信バッファ22の割り当て処理を説明する。
送信部12は、受信モジュール20に送信するデータパケットが供給されるが、何らかの理由で受信モジュール20に対して送信ができない場合は、送信モジュール10が有する一時バッファ(不図示)にデータパケットを蓄積する。
貸出依頼判定部133は、この一時バッファに溜まったデータパケットのパケット量からその時点の空きバッファ値を減算した値が、予め設定された貸出依頼閾値143以上か否か判定する。そして、求めた値が貸出依頼閾値143以上になったときに、貸出依頼判定部133は、受信バッファ22を共有する他の送信モジュール10に送信部12を介して貸出依頼パケットを送信して貸出依頼要求を行う。以下では、一時バッファに溜まったデータパケットのパケット量を「一時バッファ量」と呼び、一時バッファ量からその時点の空きバッファ値を減算した値を「差分量」とよぶ。
貸出依頼応答部131は、貸出依頼要求を受けた場合、自己が搭載された送信モジュール10における差分量が、予め設定された貸出受諾閾値141を下回っている時に貸出受諾の貸出応答を作成する。そして、貸出依頼応答部131は、送信部12を介して貸出依頼パケットの送信元の送信モジュール10に作成した貸出応答を送信する。
(変形例)
他の第1の方法として、以下のような構成を用いることもできる。貸出依頼判定部133は、空きバッファ値が貸出依頼閾値143を下回った場合に貸出要求を出す。この時、貸出依頼判定部133は、一時バッファ量又は差分量の情報を供給パケットに情報を付加して送信する。
他の第1の方法として、以下のような構成を用いることもできる。貸出依頼判定部133は、空きバッファ値が貸出依頼閾値143を下回った場合に貸出要求を出す。この時、貸出依頼判定部133は、一時バッファ量又は差分量の情報を供給パケットに情報を付加して送信する。
貸出依頼応答部131は、貸出依頼要求を受けた場合、自己が搭載された送信モジュール10における一時バッファ量又は差分量と貸出依頼元の送信モジュール10における一時バッファ量又は差分量とを比較する。そして、例えば、その差が予め設定された貸出受諾閾値141を超えた時に、貸出依頼応答部131は、貸出受諾の貸出応答を生成して、送信部12を介して貸出依頼元の送信モジュール10へ送信する。
また、他の第2の方法として、以下のような構成を用いることもできる。例えば、貸出依頼要求に対して貸出受諾の応答を受けて空きバッファ計算部132により空きバッファ値に貸出単位量を加算してもなお貸出依頼を行う条件が満たされた場合について考える。その場合に、貸出依頼判定部133は、受信バッファ22を共有する他の送信モジュール10に貸出要求を1回目と同じ手順で再度行ってもよい。また、予め設定された上限数の貸し出しを受けた場合、貸出依頼判定部133は、以降貸出要求の条件を満たしても貸出要求を行わなくてもよい。貸出依頼応答部131は、2回目の貸出依頼要求に対しても同じように貸出受諾の判定を行う。
また、他の第3の方法として、以下のような構成を用いることもできる。貸出要求が受諾され空きバッファ計算部132により空きバッファ値が増加された後、通信負荷が下がり空きバッファ値が予め設定された返却閾値を上回った場合、空きバッファ計算部132は、空きバッファ値から貸出単位量を減算する。さらに、空きバッファ計算部132は、送信部12を介して貸出元の送信モジュール10に返却を通知する。
返却通知を受けた送信モジュール10の空きバッファ計算部132は、返却通知を受信した場合、空きバッファ値に貸出単位量を加算する。その後、空きバッファ計算部132は、応答を貸出先であった送信モジュール10に送信する。ここで、空きバッファ計算部132は、返却通知中は貸出要求を行わないなどのルールを加えてもよい。
ここで、貸出先の送信モジュール10と貸出元の送信モジュール10とに割り当てられた受信バッファ22のトータルの空きバッファ値が受信バッファ22のサイズの上限を超えないように、返却元での減算が先に行われ、その後に返却先での加算が行われる。
以上に説明したように、実施例1以外の貸出依頼や貸出応答を行う構成であっても、送信モジュール同士の間で直接、受信バッファの共有分の割り当てを融通し合うことができる。その場合も、送信モジュールが要求するスループットの確保と受信バッファの調整を容易に行うことが可能となる。
図4は、実施例3に係る情報処理装置の構成図である。以下の説明では、実施例1と同じ各部の動作については説明を省略する。
本実施例に係る情報処理装置1は、ルートポート101及び102を搭載したSoC111とルートポート103及び104を搭載したSoC112を接続して使うシステムである。片方のSoC111に実装されたルートポート101及び102からもう片方のSoC112のルートポート103へ送信する場合を考える。ここで、SoC111とSoC112との2個が存在する形態であっても、ルートポート101及びルートポート102がルートポート103と間に他の通信接続を挟まずに通信を行う構成であれば、動作は実施例1と同様となる。
ここでは、SoC111とSoC112とを繋ぐ別の通信接続が存在し、その通信はソケットコネクト301とソケットコネクト302との間で行われる。このSoC111とSoC112との間の通信接続は、実施例1で述べたルートポート103とエンドポイント203との間の通信と同様に通信品質の問題で一時的に通信できない状態が存在しうる。そのため、ソケットコネクト301及び302は、ルートポート101又は102ら受け取るデータパケットを貯めておく受信バッファ311及び321をそれぞれが有する。この受信バッファ311及び321をルートポート101とルートポート102とで使用する場合について説明する。
この場合、ソケットコネクト301が有する受信バッファ311の一部をルートポート101とルートポート102とで共有する。そして、ルートポート101とルートポート102同士で、実施例1における受信バッファ22の融通と同様に、受信バッファ311の共有分の割り当てを融通し合う。これは、ソケットコネクト302が有する受信バッファ321についても同様である。
以上に説明したように、本実施例に係る情報処理装置のように送信モジュールと受信モジュールとの間に他の通信接続が存在する場合、その通信接続を行うユニットを受信モジュールとして、そのユニットが有する受信バッファの共有分の割り当てを送信モジュール同士で受信モジュールを介さずに融通し合うことができる。これにより、送信モジュールが要求するスループットの確保と受信バッファの調整を容易に行うことが可能となる。
図5は、実施例4に係る情報処理装置の構成図である。以下の説明では、実施例1と同じ各部の動作については説明を省略する。
本実施例に係る情報処理装置1は、SoC100上の各ユニットの配置や通信の形態は実施例1と同じである。本実施例に係る情報処理装置1は、受信側のルートポート103がパケットの種類により複数の異なる受信バッファを有する。
PCIeでは、パケットの種別としてPostedパケット、Non-Postedパケット、Completionパケットの3つが存在し、それらの通信経路上の順序保証について規定されている。例えば、データの書き換え順序の保証等などを目的に、Postedパケットが送信され、その後に送信されたパケットが最終的な送信先に到着するまでの間に、先に送信されたPostedパケットを追い抜くことが禁止される。また、Postedパケットに対する条件に加えて、通信上のデッドロックを回避するために、PostedパケットはNon-PostedパケットおよびCompletionパケットを追い越せるようにすることが規定されている。これはNon-PostedパケットやCompletionパケットが通信経路上に詰まったとしても、後から送信されたPostedパケットが通信経路上でNon-Postedパケット及びCompletionパケットを追い越して送信先に到着しなければいけないことを規定する。
これらの規定を実現するために、本実施例では、ルートポート101とルートポート103とで通信する際に、ルートポート103は、パケットの種類毎に、Postedバッファ221、Non-Postedバッファ222及びCompletionバッファ223を有する。
これにより、例えばNon-PostedパケットとCompletionパケットとの両方が詰まったとしても、Postedパケット用のPostedバッファ221が確保されているので、ルートポート101はルートポート103にPostedパケットを送信可能である。これにより、ルートポート103は、Non-Postedパケット及びCompletionパケットを追い越させてPostedパケットをエンドポイント203に送信することが可能である。
ここで、PostedパケットとCompletionパケットはデータを伴うことがあり、両方とも高いスループット性能を出せることが期待される。しかし、実施例1での説明と同様に、ルートポート103とエンドポイント203との間は全てのパケットのトータルのスループットとして上限が64GB/secである。そのため、PostedパケットとCompletionパケットが同時に64GB/secとなることはなく、両方の合計のスループットが64GB/secを達成すればよい。しかし、どちらか一方のパケットのみの場合は、それぞれ64GB/secを達成することが期待である。この状況は、実施例1及び2のルートポート101及び102からルートポート103へデータパケットを送信するケースと同じ状況である。
そこで、本実施例に係るルートポート101は、Postedバッファ221の一部とCompletionバッファ223の一部とを共有分とすることで、ルートポート103の受信バッファのトータルサイズを削減することが可能である。本実施例ではPostedパケットとCompletionパケットを送信する際に、ルートポート101が、内部でルートポート101のPostedバッファ221とCompletionバッファ223の使用量の割合を調整する。
すなわち、ルートポート101が、図2における2つの送信モジュール10の機能を内蔵する状態と考えることができる。その場合、一方の送信モジュール10がPostedパケットを、受信モジュール20であるルートポート103のPostedバッファ221へ送信し、他方の送信モジュール10がCompletionパケットを、Completionバッファ223へ送信する。
なお、PostedパケットはCompletionパケットを追い越せることが規定されている。そのため、Postedバッファ221の一部とCompletionバッファ223の一部とを共有分とすることはできるが、Postedバッファ221とCompletionバッファ223との間での融通状態に関わらず、それぞれ最低限のバッファが割り当たっていることが望ましい。
以上に説明したように、本実施例に係る情報処理装置は、1つのルートポートの内部でPostedパケットへの受信バッファの割り当てとCompletionパケットへの受信バッファの割り当てを調整する。すなわち、本実施例に係る情報処理装置では、受信バッファの割り当ての調整のディレイはほぼゼロであり、受信バッファのサイズを小さく抑えることができる。これにより、パケットの種類毎に要求されるスループットの確保と受信バッファの調整を容易に行うことが可能となる。
1 情報処理装置
10 送信モジュール
11 受信部
12 送信部
13 空きバッファ管理部
14 記憶部
20 受信モジュール
21 処理実行部
22 受信バッファ
23 送信部
24 受信部
101~104 ルートポート
105 リングバス
130 受信バッファ
131 貸出依頼応答部
132 空きバッファ計算部
133 貸出依頼判定部
141 貸出受諾閾値
142 初期空きバッファ値
143 貸出依頼閾値
150、151~154 リングストップ
201~204 エンドポイント
221 Postedバッファ
222 Non-Postedバッファ
223 Completionバッファ
10 送信モジュール
11 受信部
12 送信部
13 空きバッファ管理部
14 記憶部
20 受信モジュール
21 処理実行部
22 受信バッファ
23 送信部
24 受信部
101~104 ルートポート
105 リングバス
130 受信バッファ
131 貸出依頼応答部
132 空きバッファ計算部
133 貸出依頼判定部
141 貸出受諾閾値
142 初期空きバッファ値
143 貸出依頼閾値
150、151~154 リングストップ
201~204 エンドポイント
221 Postedバッファ
222 Non-Postedバッファ
223 Completionバッファ
Claims (6)
- 受信モジュール、並びに、前記受信モジュールに対してパケットを送信する第1送信モジュール及び第2送信モジュールを有する情報処理装置あって、
前記受信モジュールは、
前記第1送信モジュールと前記第2送信モジュールとにより共有される、前記パケットを格納する受信バッファを備え、
前記第1送信モジュールは、
前記第1送信モジュールに割り当てられた前記受信バッファの使用量を基に、前記第2送信モジュールに割り当てられた前記受信バッファの貸出依頼を前記第2送信モジュールに送信する貸出依頼判定部と、
前記第2送信モジュールが前記貸出依頼に対して受諾応答を送信した場合、前記第1送信モジュールに対する前記受信バッファの割り当て量を増加させる第1空きバッファ計算部とを備え、
前記第2送信モジュールは、
前記貸出依頼を受信して、前記第2送信モジュールに割り当てられた前記受信バッファの使用量を基に、前記受諾応答を前記第1送信モジュールへ送信する貸出依頼応答部と、
前記貸出依頼応答部が前記受諾応答を送信した場合、前記第2送信モジュールに対する前記受信バッファの割り当て量を減少させる第2空きバッファ計算部とを備えた
ことを特徴とする情報処理装置。 - 前記貸出依頼判定部は、前記第1送信モジュールに割り当てられた前記受信バッファの未使用量が、予め決められた貸出依頼閾値未満の場合に、前記貸出依頼を送信することを特徴とする請求項1に記載の情報処理装置。
- 前記貸出依頼応答部は、前記第2送信モジュールに割り当てられた前記受信バッファの未使用量が、予め決められた貸出受諾閾値以上の場合に、前記受諾応答を送信することを特徴とする請求項1又は2に記載の情報処理装置。
- 前記第1送信モジュール及び前記第2送信モジュールと前記受信モジュールとの間に、前記第1送信モジュールと前記第2送信モジュールとにより共有される、前記パケットを格納する他の受信バッファを有し、前記第1送信モジュール及び前記第2送信モジュールから送信された前記パケットを受信して前記他の受信バッファに格納し、前記受信モジュールへ転送する中継装置を有し、
前記貸出依頼判定部は、前記第1送信モジュールに割り当てられた前記他の受信バッファの使用量を基に、前記第2送信モジュールに対して割り当てられた前記他の受信バッファの他の貸出依頼を前記第2送信モジュールに送信し、
前記第1空きバッファ計算部は、前記第2送信モジュールが前記他の貸出依頼に対して他の受諾応答を送信した場合、前記第1送信モジュールに対する前記他の受信バッファの割り当て量を増加させ、
前記貸出依頼応答部は、前記他の貸出依頼を受信して、前記第2送信モジュールに割り当てられた前記他の受信バッファの使用量を基に、前記他の受諾応答を前記第1送信モジュールへ送信し、
前記第2空きバッファ計算部は、前記貸出依頼応答部が前記他の受諾応答を送信した場合、前記第2送信モジュールに対する前記他の受信バッファの割り当て量を減少させる
ことを特徴とする請求項1~3のいずれか一つに記載の情報処理装置。 - 前記第1送信モジュールは、第1パケットを送信し、
前記第2送信モジュールは、前記第1パケットとは異なる種類であり、且つ、通信経路上での前記第1パケットに対する振る舞いが規定された第2パケットを送信する
ことを特徴とする請求項1~4のいずれか一つに記載の情報処理装置。 - 受信モジュール、並びに、前記受信モジュールに対してパケットを送信する第1送信モジュール及び第2送信モジュールを有する情報処理装置の制御方法であって、
前記受信モジュールが有し、且つ、前記第1送信モジュールと前記第2送信モジュールとにより共有される、前記パケットを格納する受信バッファにおいて、前記第1送信モジュールに割り当てられた前記受信バッファの使用量を基に、前記第2送信モジュールに割り当てられた前記受信バッファの貸出依頼を前記第2送信モジュールに送信させ、前記第2送信モジュールが前記貸出依頼に対して受諾応答を送信した場合、前記第1送信モジュールに対する前記受信バッファの割り当て量を増加させる処理を前記第1送信モジュールに行わせ
前記貸出依頼を受信して、前記第2送信モジュールに割り当てられた前記受信バッファの使用量を基に、前記受諾応答を前記第1送信モジュールへ送信させ、前記受諾応答を送信した場合、前記第2送信モジュールへの前記受信バッファの割り当て量を減少させる処理を前記第2送信モジュールに行わせる
ことを特徴とする情報処理装置の制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021037494A JP7567569B2 (ja) | 2021-03-09 | 2021-03-09 | 情報処理装置及び情報処理装置の制御方法 |
US17/539,242 US11722428B2 (en) | 2021-03-09 | 2021-12-01 | Information processing device and method of controlling information processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021037494A JP7567569B2 (ja) | 2021-03-09 | 2021-03-09 | 情報処理装置及び情報処理装置の制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022137816A true JP2022137816A (ja) | 2022-09-22 |
JP7567569B2 JP7567569B2 (ja) | 2024-10-16 |
Family
ID=83194359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021037494A Active JP7567569B2 (ja) | 2021-03-09 | 2021-03-09 | 情報処理装置及び情報処理装置の制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11722428B2 (ja) |
JP (1) | JP7567569B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2626927A (en) * | 2023-02-01 | 2024-08-14 | Spotless Ai Ltd | Disinfection robot and control system |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU6501996A (en) | 1995-07-19 | 1997-02-18 | Fujitsu Limited | Link buffer sharing method and apparatus |
US5978359A (en) | 1995-07-19 | 1999-11-02 | Fujitsu Network Communications, Inc. | Allocated and dynamic switch flow control |
DE60335373D1 (de) * | 2003-10-06 | 2011-01-27 | Ericsson Telefon Ab L M | Koordinierte Datenflusssteuerung und Datenpufferteilung in UMTS |
JP2006293969A (ja) * | 2005-03-17 | 2006-10-26 | Fujitsu Ltd | データ転送装置 |
JP5331898B2 (ja) | 2009-11-12 | 2013-10-30 | 富士通株式会社 | 並列計算用の通信方法、情報処理装置およびプログラム |
JP6075169B2 (ja) | 2013-04-09 | 2017-02-08 | 富士通株式会社 | スイッチ装置、パケット制御方法及びデータ通信システム |
EP2996395A4 (en) | 2013-05-10 | 2016-10-19 | Kyocera Corp | COMMUNICATION CONTROL METHOD AND USER DEVICE |
US10025684B2 (en) * | 2014-09-24 | 2018-07-17 | Microsoft Technology Licensing, Llc | Lending target device resources to host device computing environment |
JP2017078981A (ja) * | 2015-10-21 | 2017-04-27 | 富士通株式会社 | 排他切り替えプログラム及び排他切り替え方法 |
CN108713338A (zh) * | 2015-12-29 | 2018-10-26 | 诺基亚技术有限公司 | 无线接入资源共享 |
US10268448B2 (en) * | 2016-05-06 | 2019-04-23 | Texas Instruments Incorporated | Data flow control for multi-chip-select |
JP2018129699A (ja) | 2017-02-09 | 2018-08-16 | アズビル株式会社 | 通信処理回路、データ通信装置、および受信データバッファリング方法 |
CN110022337A (zh) * | 2018-01-09 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 资源调度方法、装置、设备和系统 |
JP7131613B2 (ja) | 2018-07-31 | 2022-09-06 | 富士通株式会社 | 制御装置、通信装置及び通信システム |
US20200104912A1 (en) * | 2018-10-02 | 2020-04-02 | The Toronto-Dominion Bank | Systems and methods for real-time allocation of resources |
US11340946B2 (en) * | 2019-02-14 | 2022-05-24 | Pivotal Software, Inc. | Reactive pooling |
JP7279177B2 (ja) * | 2019-02-22 | 2023-05-22 | アップル インコーポレイテッド | ハンドオーバ割り込みを低減するためのシステム及び方法 |
US20220101321A1 (en) * | 2020-09-28 | 2022-03-31 | The Toronto-Dominion Bank | Systems and methods for processing resource transfer requests |
-
2021
- 2021-03-09 JP JP2021037494A patent/JP7567569B2/ja active Active
- 2021-12-01 US US17/539,242 patent/US11722428B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP7567569B2 (ja) | 2024-10-16 |
US11722428B2 (en) | 2023-08-08 |
US20220294744A1 (en) | 2022-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10110499B2 (en) | QoS in a system with end-to-end flow control and QoS aware buffer allocation | |
US7643477B2 (en) | Buffering data packets according to multiple flow control schemes | |
US11570123B2 (en) | Generating, at least in part, and/or receiving, at least in part, at least one request | |
US9225668B2 (en) | Priority driven channel allocation for packet transferring | |
US7272741B2 (en) | Hardware coordination of power management activities | |
US11792132B2 (en) | Technologies for aligning network flows to processing resources | |
US20140328172A1 (en) | Congestion control and qos in noc by regulating the injection traffic | |
US20080028090A1 (en) | System for managing messages transmitted in an on-chip interconnect network | |
US20040120332A1 (en) | System and method for sharing a resource among multiple queues | |
CN108092908B (zh) | 控制流量的方法和发送端设备 | |
US20140036680A1 (en) | Method to Allocate Packet Buffers in a Packet Transferring System | |
US20160196073A1 (en) | Memory Module Access Method and Apparatus | |
US9436642B2 (en) | Bus system for semiconductor circuit | |
US20220166698A1 (en) | Network resource monitoring | |
JP2023540449A (ja) | 分散型システムでの受入時のローカル及びグローバルなサービス品質シェーパ | |
US20090274049A1 (en) | Non-blocked network system and packet arbitration method thereof | |
US20220045969A1 (en) | Mapping nvme-over-fabric packets using virtual output queues | |
JP2022137816A (ja) | 情報処理装置及び情報処理装置の制御方法 | |
JPWO2009034994A1 (ja) | 負荷分散システム、サービス処理サーバ、負荷分散方法及び負荷分散プログラム | |
CN115396372B (zh) | 数据流的速率控制方法、智能网卡、云端设备及存储介质 | |
CN112311694A (zh) | 一种优先级调整方法及装置 | |
US7613821B1 (en) | Arrangement for reducing application execution based on a determined lack of flow control credits for a network channel | |
US7836213B2 (en) | Coupling data buffers with memory interfaces | |
WO2020145956A1 (en) | Data link changes based on requests | |
KR101421232B1 (ko) | 패킷 처리 장치, 방법 및 컴퓨터 판독 가능한 기록 매체 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231109 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20240829 |
|
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: 20240903 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240916 |