説明

ノードコントローラ、リクエストの出力順序決定方法及びノード間通信システム

【課題】ノード間通信により他のノードへのアクセスする際の複数のリクエスト全体の処理性能を向上すること。
【解決手段】本発明にかかるノードコントローラは、複数のノードと接続され、自己のノード内の複数のプロセッサから複数のノードのいずれかに属するプロセッサへの複数のリクエストを受け付け、当該複数のリクエストのそれぞれについて、リクエストの要求先のノードに応じた優先度を算出する優先度算出回路と、算出された優先度に基づいて、受け付けた複数のリクエストのうち出力すべきリクエストを決定する決定回路と、決定されたリクエストを選択して要求先のノードへ出力する選択回路と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ノードコントローラ、リクエストの出力順序決定方法及びノード間通信システムに関し、特に、ノード間通信により他のノードへのアクセスする際のリクエストの送信順序を調停するためのノードコントローラ、リクエストの出力順序決定方法及びノード間通信システムに関する。
【背景技術】
【0002】
大規模なコンピュータシステムは、複数の処理を並列して実行するために複数のプロセッサを有する。そして、複数のプロセッサを一つのノードとして管理する。さらに、このようなノードを複数有し、ノード間を接続し、各ノードの処理及びノード間通信により所定の処理を実現する。このような大規模なコンピュータシステムでは、ノード間でのデータ通信が頻繁に発生する。例えば、あるプロセッサにおける処理を完了するために、他のプロセッサへ処理を行わせてその結果を必要とする場合がある。その際、要求元のプロセッサは、要求先のプロセッサへのリクエストを送信し、レスポンスを受信する。そして、要求元と要求先が異なるノードに属する場合、ノード間通信が発生する。
【0003】
特許文献1には、1つのメモリに対する複数のアクセスマスタの競合に対して柔軟、かつ、確実にレイテンシを保証するためのメモリアクセス制御回路に関する技術が開示されている。特許文献1に開示されるメモリアクセス制御回路は、複数のアクセスマスタとメモリとの間に設けられる。優先度比較回路は。優先度レジスタに保持される優先度を比較する。セレクタは、最も優先度の高いアクセスマスタにアクセスを許可する。優先度レジスタに保持される優先度は、アクセスが待たされるごとに減算値レジスタの値が減算されることによって上昇する。これにより、アクセスされやすくなる。連続アクセス回数レジスタは、連続アクセス回数を保持する。そして、連続アクセス回数がアクセス上限回数レジスタの値に達すると、次のアクセス要求があったときに優先度レジスタに保持される初期値の優先度が低く抑えられる。
【0004】
また、一般に、ノード間通信におけるリクエストの処理性能を向上させるためには、特定のリクエストに優先度をつけ、優先度の高いリクエストを先に送信し、当該リクエストを優先して処理させることにより性能を向上してきた。例えば、複数のリクエストに依存関係がある場合には、先に処理すべきリクエストの優先度を予め高く設定しておくことで、後続のリクエストを効率的に処理することができる。このような複数のリクエストに依存関係は、論理的に定まるものであるため、事前に優先度を設定することが可能である。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2005−173859号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、近年の複数のノードを用いた大規模なコンピュータシステムでは、ノード数が多数であり、ノード間の接続関係が複雑である。そして、ノード間の接続関係は、基本的に、複数のリクエストにおいて論理的に定まる依存関係とは無関係である。例えば、ノード間の接続関係は、全体の処理パフォーマンスやハードウェアに費やすことができるコスト等により変動するものである。そのため、同じリクエストであっても、ノードの配置や数によっては、経由するノード数つまり当該リクエストが要求先に到達するために要する時間に大きな差が出る場合がある。その場合、同じリクエストについての全体の処理時間に差が出る。よって、上述した依存関係に基づいて予めリクエストの優先度を設定することには限界があるという問題点がある。
【0007】
例えば、後続のリクエストのHOP数がより大きい場合、優先度に従ってHOP数の小さいリクエストを先に送信してしまう場合がありえる。その場合、例え、優先度の高いリクエストの処理が完了したとしても、後続のリクエストが完了しないために、さらに後のリクエストが実行できないこととなる。そのため、リクエストの送信順序の調停に参加するタイミングによっては、処理を開始するまでに時間がかかってしまい、性能が低下してしまうことがあった。
【0008】
尚、特許文献1は、ノード間通信における上述した課題を解決するためのものではない。
【0009】
本発明は、このような問題点を解決するためになされたものであり、ノード間通信により他のノードへのアクセスする際の複数のリクエスト全体の処理性能を向上するためのノードコントローラ、リクエストの出力順序決定方法及びノード間通信システムを提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明の第1の態様にかかるノードコントローラは、複数のノードと接続され、自己のノード内の複数のプロセッサから前記複数のノードのいずれかに属するプロセッサへの複数のリクエストを受け付け、当該複数のリクエストのそれぞれについて、リクエストの要求先のノードに応じた優先度を算出する優先度算出回路と、前記算出された優先度に基づいて、前記受け付けた複数のリクエストのうち出力すべきリクエストを決定する決定回路と、前記決定されたリクエストを選択して前記要求先のノードへ出力する選択回路と、を備える。
【0011】
本発明の第2の態様にかかるリクエストの出力順序決定方法は、第1のノード内の第1のプロセッサから第2のノード内のプロセッサへの第1のリクエストと、当該第1のノード内の第2のプロセッサから第3のノード内のプロセッサへの第2のリクエストとを同時に受け付け、前記第1のリクエスト及び前記第2のリクエストの要求元に応じた第1の優先度と第2の優先度を算出し、前記第1の優先度と前記第2の優先度に基づいて、前記第1のリクエスト及び前記第2のリクエストのいずれを出力すべきかを決定し、前記決定されたリクエストを選択して前記要求先のノードへ出力する。
【0012】
本発明の第3の態様にかかるノード間通信システムは、複数のノードと接続され、複数のプロセッサと、当該複数のプロセッサから前記複数のノードのいずれかに属するプロセッサへの複数のリクエストを受け付け、当該複数のリクエストのそれぞれについて、リクエストの要求先のノードに応じた優先度を算出する優先度算出手段と、前記算出された優先度に基づいて、前記受け付けた複数のリクエストのうち出力すべきリクエストを決定する決定手段と、前記決定されたリクエストを選択して前記要求先のノードへ出力する選択手段と、を備えるノードコントローラとを有するノードを含む。
【発明の効果】
【0013】
本発明により、ノード間通信により他のノードへのアクセスする際の複数のリクエスト全体の処理性能を向上するためのノードコントローラ、リクエストの出力順序決定方法及びノード間通信システムを提供することができる。
【図面の簡単な説明】
【0014】
【図1】本発明の実施の形態1にかかるノード間通信システムの構成を示すブロック図である。
【図2】本発明の実施の形態1にかかるアクセス調停方法の処理の流れを示すフローチャートである。
【図3】本発明の実施の形態2にかかるコンピュータシステムの構成を示すブロック図である。
【図4】本発明の実施の形態2にかかるノードコントローラの構成を示すブロック図である。
【図5】本発明の実施の形態2にかかるテーブルの例を示す図である。
【図6】本発明の実施の形態2にかかるアクセス調停方法の流れを説明するためのフローチャートである。
【図7】本発明の実施の形態2にかかるセレクト係数の再設定処理の流れを説明するためのフローチャートである。
【図8】ラウンドロビンを適用した場合のリクエストの処理速度を説明するための図である。
【図9】本発明の実施の形態2にかかるリクエストの処理速度を説明するための図である。
【発明を実施するための形態】
【0015】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【0016】
<発明の実施の形態1>
図1は、本発明の実施の形態1にかかるノード間通信システム100の構成を示すブロック図である。ノード間通信システム100は、少なくともノード1と、ノード2と、ノード3とを備える。ノード1乃至3は、それぞれ、複数のプロセッサを搭載した汎用的なコンピュータ装置である。そして、ノード1乃至3は、それぞれ信号線等により接続されている。これにより、各ノードに含まれるプロセッサが他のノードに含まれるプロセッサに対する処理要求を送受信することができる。
【0017】
ノード1は、プロセッサ11a、11b、・・・及び11nと、ノードコントローラ12とを備える。プロセッサ11a、11b、・・・及び11nは、例えば、CPU(Central Processing Unit)である。また、各プロセッサは、相互に接続されている。そして、各プロセッサは、それぞれ独立して所定の処理を行う。その際、各プロセッサは、必要に応じてプロセッサ間通信を行う。例えば、プロセッサ11aは、プロセッサ11bに対して処理要求すなわちリクエスト)を送信する。そして、プロセッサ11bは、当該リクエストに応じた処理を実行し、リクエスト結果をプロセッサ11aへ返信する。その後、プロセッサ11aは、プロセッサ11bから受信したリクエスト結果に応じて後続の処理を実行する。
【0018】
また、プロセッサ11a、11b、・・・及び11nは、ノードコントローラ12とそれぞれ接続されている。そして、各プロセッサは、リクエストを他のノードつまりノード2または3のいずれかに属するプロセッサへ送信する場合がある。その場合、各プロセッサは、ノードコントローラ12を介して他のノードに属するプロセッサとの通信を行う。
【0019】
ノードコントローラ12は、各プロセッサからノード2又は3を要求先とした複数のリクエストを受け付け、受け付けた複数のリクエストの出力を制御する。また、ノードコントローラ12は、ノード2又は3からリクエストを受け付け、プロセッサ11a、11b、・・・及び11nのいずれかへ当該リクエストを出力する。
【0020】
ノードコントローラ12は、優先度算出回路13と、決定回路14と、選択回路15とを備える。優先度算出回路13は、自己のノード内の複数のプロセッサから複数のノードのいずれかに属するプロセッサへの複数のリクエストを受け付け、当該複数のリクエストのそれぞれについて、リクエストの要求先のノードに応じた優先度を算出する。決定回路14は、算出された優先度に基づいて、受け付けた複数のリクエストのうち出力すべきリクエストを決定する。選択回路15は、決定されたリクエストを選択して前記要求先のノードへ出力する。尚、実際には、ノードコントローラ12は、選択回路15により出力されたリクエストについて、所定の処理を行った上でノード1の外部へ出力するが、当該所定の処理は、一般的なものであるため、詳細な説明を省略する。
【0021】
ノード2は、複数のプロセッサ21と、ノードコントローラ22とを備える。また、ノード3は、複数のプロセッサ31と、ノードコントローラ32とを備える。尚、ノード2及び3は、ノード1と同等の機能を有するため、詳細な説明を省略する。つまり、プロセッサ21及び31は、プロセッサ11a等と同等である。また、ノードコントローラ22及び32は、ノードコントローラ12と同等である。
【0022】
尚、ノード1乃至3が搭載するプロセッサの数は、図示したものに限定されない。例えば、ノード1には、プロセッサを1以上搭載していればよい。
【0023】
図2は、本発明の実施の形態1にかかるアクセス調停方法の処理の流れを示すフローチャートである。まず、ノードコントローラ12は、プロセッサ11a〜11nから複数のリクエストを受け付ける(S11)。次に、優先度算出回路13は、各リクエストの優先度を算出する(S12)。そして、決定回路14は、優先度に基づいて出力すべきリクエストを決定する(S13)。その後、選択回路15は、決定されたリクエストを選択して出力する(S14)。
【0024】
また、本発明の実施の形態1にかかるアクセス調停方法は、ノード間通信システム100が3つのノードを有する場合に、少なくとも以下のように言い換えることができる。まず、第1のノード内の第1のプロセッサから第2のノード内のプロセッサへの第1のリクエストと、当該第1のノード内の第2のプロセッサから第3のノード内のプロセッサへの第2のリクエストとを同時に受け付ける。次に、第1のリクエスト及び第2のリクエストの要求元に応じた第1の優先度と第2の優先度を算出する。そして、第1の優先度と第2の優先度に基づいて、第1のリクエスト及び第2のリクエストのいずれを出力すべきかを決定する。その後、決定されたリクエストを選択して前記要求先のノードへ出力することを特徴とするリクエストの出力順序決定方法。
【0025】
例えば、複数のリクエストの要求先のノードが異なる場合に、優先度を単にリクエストの種別により定めるのではなく、要求先のノードに応じて算出する。これにより、ノードの配置や接続状態によって、リクエストの送信時間に差が出る場合等を考慮して優先度を求めることができる。そのため、本発明の実施の形態1により、ノードの位置関係が無視された場合に比べて、ノード間通信により他のノードへのアクセスする際の複数のリクエスト全体の処理性能を向上することができる。
【0026】
<発明の実施の形態2>
図3は、本発明の実施の形態2にかかるコンピュータシステム100aの構成を示すブロック図である。コンピュータシステム100aは、上述した実施の形態1にかかるノード間通信システム100の一実施例である。コンピュータシステム100aは、ノード101乃至108を備える。尚、コンピュータシステム100aが備えるノード数はこれに限定されない。
【0027】
ノード101は、ノードコントローラ111と、プロセッサ112乃至115とを備える。すなわち、ノードコントローラ111と、プロセッサ112乃至115とを一つの単位とし、それらを纏めたものをノード101と呼ぶ。ノードコントローラ111と、プロセッサ112乃至115とは、それぞれ一対一で信号線により接続されている。同様に、ノード102は、ノードコントローラ121と、プロセッサ122乃至125とを備える。そして、ノードコントローラ121と、プロセッサ122乃至125とは、それぞれ一対一で信号線により接続されている。
【0028】
その他、ノード103、104、105、106、107及び108は、それぞれノードコントローラ131、141、151、161、171及び181を備え、プロセッサも複数備えているが、図示を省略する。
【0029】
ここで、図3にかかるノード間の接続関係ついて以下に説明する。図3では、各ノードは、隣接するノード間のノードコントローラ同士が信号線で一対一に接続されている。これにより、ノード間のアクセスを実現する。
【0030】
具体的には、ノードコントローラ111は、隣接するノードコントローラ121、131、141、171及び181と、信号線305、306、307、301及び302を介して一対一に接続されている。同様に、ノードコントローラ121は、隣接するノードコントローラ111、131、141、171及び181と、信号線305、308、309、303及び304を介して一対一に接続されている。ノードコントローラ131は、隣接するノードコントローラ111、121、141、151及び161と、信号線306、308、310、311及び312を介して一対一に接続されている。ノードコントローラ141は、隣接するノードコントローラ111、121、131、151及び161と、信号線307、308、310、313及び314を介して一対一に接続されている。ノードコントローラ151は、隣接するノードコントローラ131、141及び161と、信号線311、313及び315を介して一対一に接続されている。ノードコントローラ161は、隣接するノードコントローラ131、141及び151と、信号線312、314及び315を介して一対一に接続されている。ノードコントローラ171は、隣接するノードコントローラ111、121及び181と、信号線301、303及び316を介して一対一に接続されている。ノードコントローラ181は、隣接するノードコントローラ111、121及び171と、信号線302、304及び316を介して一対一に接続されている。その他、ノード105、106、107及び108の接続関係は、図示及び説明を省略する。
【0031】
ノードコントローラ同士が接続されていないものとの間のアクセスは、間に別のノードコントローラを挟んでアクセスする。つまり、図3では、ノード101及び102とノード105及び106とは直接接続されておらず、ノード103又は104を介してノード間通信を行う必要があることを示す。例えば、ノードコントローラ111からノードコントローラ161へアクセスする場合には、ノードコントローラ131を経由し、信号線306及び312を介してアクセスするか、ノードコントローラ141を経由し、信号線307及び314を介してアクセスする。この際のアクセスする経路の決定は、公知の技術を用いることができるため、詳細な説明を省略する。
【0032】
図4は、本発明の実施の形態2にかかるノードコントローラ111の構成を示すブロック図である。特に、図4では、ノードコントローラ111の構成のうち、プロセッサ112乃至115から受け付けたリクエストを出力する際の出力順序を決定するための構成について示している。そのため、ノードコントローラ111における他の構成については、図示及び説明を省略する。
【0033】
ノードコントローラ111は、テーブル201と、リクエスト格納バッファ202乃至205と、セレクト係数格納レジスタ206乃至209と、セレクト係数生成回路210乃至213と、リクエスト保持レジスタ214乃至217と、セレクト係数保持レジスタ218乃至221と、セレクト係数調停回路222乃至225と、リクエスト調停回路226と、セレクタ227とを備える。
【0034】
テーブル201は、プロセッサから発行されるリクエストに含まれる要求先のノードと、ホップ数とを対応付けて格納する記憶部である。ここで、ホップ数とは、リクエストが自己のノードから要求先のノードへ到達するために経由するノード数である。または、ホップ数は、現在のリクエストの位置からリクエストの送信先までにかかる時間の単位を示すものということもできる。
【0035】
図5は、本発明の実施の形態2にかかるテーブルの例を示す図である。ここでは、例として、テーブル201に#401〜#405の5つのレコードが予め登録されているものとする。"DIND"は、リクエストに含まれる要求先を2進数で表現した値である。"HOP数"は、上述したホップ数を示す。尚、図5に示した値は、図3に示した各ノードやその接続関係とは対応しないものとする。また、テーブル201に登録された値は、コンピュータシステム100aにおけるノードの接続関係を変更した場合に、適宜、設定変更されるものとする。
【0036】
ここで、リクエスト格納バッファ202、リクエスト保持レジスタ214、セレクト係数生成回路210、セレクト係数格納レジスタ206、セレクト係数調停回路222及びセレクト係数保持レジスタ218は、プロセッサ112から出力されるリクエストに対する処理を行う。同様に、リクエスト格納バッファ203、リクエスト保持レジスタ215、セレクト係数生成回路211、セレクト係数格納レジスタ207、セレクト係数調停回路223及びセレクト係数保持レジスタ219は、プロセッサ113から出力されるリクエストに対する処理を行う。リクエスト格納バッファ204、リクエスト保持レジスタ216、セレクト係数生成回路212、セレクト係数格納レジスタ208、セレクト係数調停回路224及びセレクト係数保持レジスタ220は、プロセッサ114から出力されるリクエストに対する処理を行う。リクエスト格納バッファ205、リクエスト保持レジスタ217、セレクト係数生成回路213、セレクト係数格納レジスタ209、セレクト係数調停回路225及びセレクト係数保持レジスタ221は、プロセッサ115から出力されるリクエストに対する処理を行う。そのため、以下では、プロセッサ112に対応する構成を中心に説明し、プロセッサ113乃至115に対応する構成については、適宜、説明を省略する。
【0037】
リクエスト格納バッファ202は、プロセッサ112から出力されたリクエストを格納するバッファである。リクエスト格納バッファ202は、複数のリクエストを格納することが可能であり、FIFO(First In First Out)方式により後段のリクエスト保持レジスタ214へリクエストを出力する。
【0038】
セレクト係数格納レジスタ206は、後述するリクエスト調停回路226において複数のリクエストを調停する際の優先度を示した値であるセレクト係数を格納するレジスタである。セレクト係数格納レジスタ206に格納できる値の数は、リクエスト格納バッファ202に格納できるリクエスト数と同数である。
【0039】
セレクト係数生成回路210は、プロセッサから出力されたリクエストから要求先を抽出する。そして、セレクト係数生成回路210は、抽出した要求先に対応するホップ数をテーブル201から取得する。その後、セレクト係数生成回路210乃至213は、取得したホップ数をデコードする。つまり、セレクト係数生成回路210は、プロセッサ112から受け付けたリクエストについて、リクエストの要求先のノードに対応付けられたホップ数をテーブル201から取得して、セレクト係数を算出する。
【0040】
そのため、セレクト係数生成回路210乃至213は、プロセッサ112乃至115から外部のノードに属するプロセッサを要求先とした複数のリクエストを受け付け、当該複数のリクエストのそれぞれについて、リクエストの要求先のノードに応じたセレクト係数を算出するといえる。また、セレクト係数生成回路210乃至213は、ホップ数が大きいほどセレクト係数をより高く算出するといえる。
【0041】
また、セレクト係数生成回路210は、リクエスト保持レジスタ214に保持しているリクエストがリクエスト調停回路226における調停により出力すべきリクエストとして決定されなかった場合に、セレクト係数格納レジスタ206に格納されている各セレクト係数に1を加算する。すなわち、セレクト係数生成回路210は、リクエスト格納バッファ202にリクエストが格納されており、かつ、当該リクエストがリクエスト保持レジスタ214へ出力されなかったときに、調停の対象外となったリクエストにおけるセレクト係数についてより優先度が高くなるように更新する。よって、
【0042】
そのため、セレクト係数格納レジスタ206には、セレクト係数生成回路210により算出された値をセレクト係数として格納する。
【0043】
リクエスト保持レジスタ214乃至217は、リクエスト調停回路226における調停の対象となるリクエストを保持するレジスタである。例えば、リクエスト保持レジスタ214には、リクエスト格納バッファ202にリクエストが格納されている順番に格納される。また、リクエスト格納バッファ202にリクエストが格納されていない場合、リクエスト保持レジスタ214には、プロセッサ112から出力されたリクエストがリクエスト格納バッファ202を経由せずに、直接、格納される。
【0044】
セレクト係数保持レジスタ218は、リクエスト調停回路226における調停対象のリクエストに対応するセレクト係数を格納するレジスタである。具体的には、セレクト係数保持レジスタ218には、後述するセレクト係数調停回路222において出力されたセレクト係数が格納される。つまり、セレクト係数保持レジスタ218乃至221は、それぞれリクエスト保持レジスタ214乃至217に対応する。
【0045】
セレクト係数調停回路222は、セレクト係数生成回路210、セレクト係数格納レジスタ206及びリクエスト調停回路226から出力される3つのセレクト係数とを調停する。つまり、セレクト係数調停回路222は、上述した3つのセレクト係数のいずれかを選択してセレクト係数保持レジスタ218へ出力する。例えば、リクエスト調停回路226によりリクエスト保持レジスタ214に格納されたリクエストが出力すべきリクエストとして決定された場合、セレクト係数調停回路222は、セレクト係数生成回路210又はセレクト係数格納レジスタ206から出力されるセレクト係数を出力する。このとき、リクエスト格納バッファ202にリクエストが格納済みである場合には、セレクト係数格納レジスタ206から出力されるセレクト係数を選択し、リクエスト格納バッファ202にリクエストが格納されていない場合には、セレクト係数生成回路210から出力されるセレクト係数を選択する。また、リクエスト調停回路226によりリクエスト保持レジスタ214に格納されたリクエストが出力すべきリクエストとして決定されなかった場合、リクエスト調停回路226から出力されるセレクト係数を選択する。
【0046】
リクエスト調停回路226は、セレクト係数保持レジスタ218乃至221に格納されたセレクト係数に基づき調停して、出力すべきリクエストを決定し、セレクタ227へ通知する。すなわち、リクエスト調停回路226は、リクエスト保持レジスタ214乃至217に格納された複数のリクエスト、つまり調停対象のリクエストのうち出力すべきリクエストを決定し、リクエスト保持レジスタ214乃至217のいずれを選択すべきかをセレクタ227に通知する。
【0047】
また、リクエスト調停回路226は、調停により出力対象から漏れたリクエストに対し、決められたルールを基にセレクト係数を再設定し、セレクト係数調停回路222乃至225へ出力する。つまり、リクエスト調停回路226は、調停対象のリクエストのうち出力すべきリクエストとして決定されなかった未決定リクエストについて、所定の基準に基づいてセレクト係数をより高く更新する。このとき、セレクト係数生成回路210乃至213は、調停対象のリクエストの後に受け付けた後続リクエストについてセレクト係数を算出する。その後、リクエスト調停回路226は、未決定リクエストについて更新されたセレクト係数と、後続リクエストについて算出されたセレクト係数とに基づいて、出力すべきリクエストを決定する。
【0048】
さらに、リクエスト調停回路226は、後続リクエストの要求元と未決定リクエストの要求元とが同一のプロセッサである場合、当該後続リクエストを調停の対象外とする。そしてセレクト係数生成回路210乃至213は、対象外とされた後続リクエストのセレクト係数をより高く更新する。
【0049】
セレクタ227は、リクエスト調停回路226から通知を受けたリクエストを選択して出力する。つまり、セレクタ227は、リクエスト調停回路226により出力すべきと決定されたリクエストを選択して要求先のノードへ出力する。
【0050】
ここで、第1のリクエストと第2のリクエストを受け付け、第1のリクエストについて算出されるセレクト係数を第1の優先度、第2のリクエストについて算出されるセレクト係数を第2の優先度とした場合について、本発明の実施の形態2に係る動作を説明する。セレクト係数生成回路は、第1のリクエストにおけるホップ数が、第2のリクエストにおけるホップ数より大きい場合に、第1の優先度を第2の優先度より高く算出する。そして、リクエスト調停回路226は、第1のリクエストを出力すべきリクエストとして決定する。
【0051】
図6は、本発明の実施の形態2にかかるアクセス調停方法の流れを説明するためのフローチャートである。まず、前提として、テーブル201には、予め自己のノードから各リクエストの要求先に応じたホップ数を格納済みであるものとする。
【0052】
そして、ノードコントローラ111は、プロセッサ112乃至115からリクエストを受け付け、それぞれをリクエスト格納バッファ202乃至205に格納する(S21)。そして、調停対象となるリクエストは、リクエスト保持レジスタ214乃至217に保持される。次に、セレクト係数生成回路210乃至213は、受け付けたリクエストについて、テーブル201を参照してセレクト係数を算出し、セレクト係数格納レジスタ206乃至209に格納する(S22)。図5の例では、リクエストの要求先のDNIDが"000"の場合、ホップ数は"10"となる(#401)。
【0053】
その後、リクエスト調停回路226は、調停する(S23)。つまり、リクエスト調停回路226は、リセレクト係数保持レジスタ218乃至221に格納済みのセレクト係数を比較して、対応するリクエスト保持レジスタ214乃至217に格納済みのリクエストのいずれを出力すべきかを決定する。そして、リクエスト調停回路226は、決定したリクエストをセレクタ227に通知する。
【0054】
このとき、リクエスト調停回路226の決定の基準としては、第一にセレクト係数が大きいほうから調停が優先され、第二にセレクト係数が同じ値であった場合にはセレクタの番号が小さい番号から調停していくものとする。但し、リクエスト調停回路226による決定の基準はこれに限定されない。
【0055】
その後、セレクタ227は、リクエスト調停回路226により決定されたリクエストを選択して出力する(S24)。また、リクエスト調停回路226は、未決定リクエストのセレクト係数を更新する(S25)。また、この間、ステップS21において、後続のリクエストを受け付けた場合、ステップS22において、セレクト係数生成回路210乃至213は、後続リクエストにおけるセレクト係数を算出する。また、ステップS25と併せて、セレクト係数生成回路210乃至213は、未決定リクエストの後続リクエストのセレクト係数について上述したように更新する。
【0056】
そして、ステップS23に戻り、リクエスト調停回路226は、出力されたリクエストの後続リクエストと、未決定リクエストのいずれを出力すべきかを決定する。以後、リクエストの受け付けがなくなるまで繰り返し実行される。
【0057】
ここで、リクエスト調停回路226におけるセレクト係数の再設定方法の一例を説明する。尚、本発明の実施の形態2にかかるセレクト係数の再設定方法はこれに限定されない。リクエスト調停回路226は、未決定リクエストについてセレクト係数を更新する際の所定の基準として、出力すべきリクエストとして決定されたリクエストのセレクト係数と、未決定のリクエストのセレクト係数と、複数のノードのうち自己のノードから要求先のノードへリクエストが到達するために経由するノード数の最大値とを用いる。
【0058】
図7は、本発明の実施の形態2にかかるセレクト係数の再設定処理の流れを説明するためのフローチャートである。まず、リクエスト調停回路226は、決定リクエストと未決定リクエストとのセレクト係数の差分を算出する(S31)。決定リクエストとは、調停により出力すべきと決定されたリクエストである。また、未決定リクエストとは、調停により次点だったリクエストである。
【0059】
次に、リクエスト調停回路226は、ステップS31により算出された差分がテーブル201に格納されたホップ数のうち最大値である最大ホップ数の1/2以上であるか否かを判定する(S32)。すなわち、以下の(1)式を満たすか否かを判定する。
差分 ≧ 最大ホップ数×1/2・・・(1)
【0060】
ステップS32において、1/2以上であると判定した場合、リクエスト調停回路226は、差分の1/2の値に、調停待ち分の1を足した値を、セレクト係数に足す(S33)。すなわち、以下の(2)式によりセレクト係数を更新する。
セレクト係数= セレクト係数 + 差分×1/2 + 1 ・・・(2)
【0061】
ステップS32において、1/2未満であると判定した場合、リクエスト調停回路226は、差分に調停待ち分の1を足した値をセレクト係数に足す(S34)。つまり、以下の(3)式によりセレクト係数を更新する。
セレクト係数= セレクト係数 + 差分 + 1 ・・・(3)
【0062】
尚、セレクト係数の小数点が発生した場合には切り上げて計算する。そして、リクエスト調停回路226は、図7の処理を未決定リクエストの全てについて実行する。
【0063】
以下に、具体例を示して説明する。まず、図5の例では、最大ホップ数が"25"である。そのため、ステップS32の比較に用いる比較値は、最大ホップ数の1/2である"12.5"となる。また、以下では、リクエストA、B、C及びDを対象とする。そして、リクエストA、B、C及びDのDINDは、"010"、"100"、"011"及び"001"であるものとする。そして、リクエストDは、システム内でアクセスネックとなりうるリクエストであるものとする。以下、図6及び図7に沿って説明する。
【0064】
まず、ノードコントローラ111は、プロセッサ112乃至114からリクエストA、B及びCを同時に受け付け、それぞれをリクエスト格納バッファ202乃至204に格納する(S21)。そして、リクエストA、B及びCは、リクエスト保持レジスタ214乃至216に格納されたものとする。つまり、3つのリクエストA、B及びCが同時に調停対象となったものとする。
【0065】
次に、セレクト係数生成回路210乃至212は、リクエストA、B及びCのDINDに基づきテーブル201からホップ数"5"、"5"及び"20"を取得し、セレクタ係数としてセレクト係数格納レジスタ206乃至208に格納する(S22)。併せて、当該セレクト係数がセレクト係数保持レジスタ218乃至220にも格納される。
【0066】
そして、リクエスト調停回路226は、3つのセレクタ係数を比較し、最大値である"20"に対応するリクエストCを出力すべきリクエストとして決定する(S23)。そして、リクエスト調停回路226は、リクエストCが決定した旨をセレクタ227に通知する(S24)。
【0067】
併せて、リクエスト調停回路226は、調停の勝者であるリクエストCのセレクト数"20"と調停の次点であるリクエストA及びBのセレクト係数"5"との差分"15"を算出する(S31)。そして、リクエスト調停回路226は、差分"15"と上述した比較値"12.5"とを比較する(S32)。ここでは、差分"15"が比較値"12.5"以上であるため、リクエスト調停回路226は、リクエストA及びBのセレクト係数"5"に、差分"15"の1/2である"8"と"1"とを加算してセレクト係数"14"を算出(S33)し、セレクト係数調停回路222及び223へ出力する。そのため、セレクト係数保持レジスタ218及び219には、それぞれ"14"が格納される。
【0068】
ここで、上述のステップS21以後に、ノードコントローラ111は、プロセッサ115から後続リクエストとしてリクエストDを受け付けたものとする(S21)。そのため、ノードコントローラ111は、リクエストDをリクエスト格納バッファ205、続いて、リクエスト保持レジスタ217に格納する。また、セレクト係数生成回路213は、リクエストDのDINDに基づきテーブル201からホップ数"25"を取得し、セレクタ係数としてセレクト係数格納レジスタ209に格納する(S22)。併せて、当該セレクト係数がセレクト係数保持レジスタ221にも格納される。
【0069】
続いて、ステップS23により次の調停が行われる。このとき、調停対象のリクエストは、リクエスト保持レジスタ214、215及び217に格納されたリクエストA、B及びDとなる。そのため、リクエスト調停回路226は、セレクト係数保持レジスタ218、219及び221に格納されたセレクト係数に基づいて決定を行う。
【0070】
ここでは、リクエストA、B及びDのセレクト係数が"14"、"14"、"25"であるため、リクエスト調停回路226は、最大値である"25"に対応するリクエストDを出力すべきリクエストとして決定する(S23)。そして、リクエスト調停回路226は、リクエストDが決定した旨をセレクタ227に通知する(S24)。
【0071】
また、併せて、リクエスト調停回路226は、調停の勝者であるリクエストDのセレクト数"25"と調停の次点であるリクエストA及びBのセレクト係数"14"との差分"11"を算出する(S31)。そして、リクエスト調停回路226は、差分"11"と上述した比較値"12.5"とを比較する(S32)。ここでは、差分"11"が比較値"12.5"未満であるため、リクエスト調停回路226は、リクエストA及びBのセレクト係数"14"に、差分"11"と"1"とを加算してセレクト係数"26"を算出(S34)し、セレクト係数調停回路222及び223へ出力する。そのため、セレクト係数保持レジスタ218及び219には、それぞれ"26"が格納される。
【0072】
その後、ステップS23により3回目の調停が行われる。このとき、調停対象のリクエストは、リクエスト保持レジスタ214及び215に格納されたリクエストA及びBとなる。そのため、リクエスト調停回路226は、セレクト係数保持レジスタ218及び219に格納されたセレクト係数に基づいて決定を行う。
【0073】
ここでは、リクエストA及びBのセレクト係数が"26"、"26"であるため、リクエスト調停回路226は、セレクタの番号が小さい番号であるリクエストAを出力すべきリクエストとして決定する(S23)。そして、リクエスト調停回路226は、リクエストAが決定した旨をセレクタ227に通知する(S24)。
【0074】
また、併せて、リクエスト調停回路226は、調停の勝者であるリクエストAのセレクト数"26"と調停の次点であるリクエストBのセレクト係数"26"との差分"0"を算出する(S31)。そして、リクエスト調停回路226は、差分"0"と上述した比較値"12.5"とを比較する(S32)。ここでは、差分"0"が比較値"12.5"未満であるため、リクエスト調停回路226は、リクエストBのセレクト係数"26"に、差分"0"と"1"とを加算してセレクト係数"27"を算出(S34)し、セレクト係数調停回路223へ出力する。そのため、セレクト係数保持レジスタ219には、"27"が格納される。
【0075】
その後、ステップS23により4回目の調停が行われる。このとき、調停対象のリクエストは、リクエスト保持レジスタ215に格納されたリクエストBのみとなる。そのため、リクエスト調停回路226は、単独での調停であるため、リクエストBを出力すべきリクエストとして決定する(S23)。そして、リクエスト調停回路226は、リクエストBが決定した旨をセレクタ227に通知する(S24)。
【0076】
続いて、本発明の実施の形態2により解決される課題及び効果について説明する。外部のノードへリクエストを送信する場合の調停方法としては、課題で上述した優先度を付ける方法の他、ラウンドロビンを用いることもできる。しかし、これらの方法を使用した場合、リクエストが処理される送信先までのホップ数に関係なく、調停が行われる。そのため、セレクタの調停タイミングによってはホップ数の大きいリクエストが後回しにされてしまう。よって、リクエストの処理を開始するまでの時間がかかってしまうことがあった。その際、あるメモリへのアクセスに対し、最初に処理されるべきホップ数が大きいリクエストがネックとなってしまう。それに伴い、処理速度が落ち、性能が低下してしまうことがあった。
【0077】
ここで、ラウンドロビンによる調停方式を適用した場合について説明する。上述した例と同様に、3つのリクエストA、B及びCが同時に調停に参加し、次の調停時にはリクエストDが調停に参加するような場合を想定するものとする。また、リクエストA、B、C及びDのDNIDも同様に、"010"、"100"、"011"及び"001"であるものとし、その際のホップ数が図5に示した値であるものとする。また、システム内でアクセスネックとなりうるリクエストをリクエストDとする。
【0078】
図8は、ラウンドロビンを適用した場合のリクエストの処理速度を説明するための図である。まず、現在の優先権が最も小さい番号にある場合、ラウンドロビンを適用して調停による勝者を決める際は、当該小さい番号から調停権を与えられる。そのため、図8に示すように、調停順は、リクエストA、リクエストB、リクエストC、リクエストDの順になる。そして、調停順に従って、各リクエストが要求先のノードへ出力される。その際、経過する時間がリクエストごとの網掛け部分となる。つまり、リクエストAが時刻1から時刻5まで経過した後、目的の要求先に到達し、要求先にてリクエストAの処理が開始される。同様に、リクエストB及びCが出力され、最後に時刻4にて、リクエストDが出力される。そのため、システム内でのアクセスネックとなりうるリクエストDは、セレクタ227がリクエストを受け取ってから、最速でも28ホップ後に要求先に到達することになる。
【0079】
また、単位時間当たりのリクエストの送信処理数の最大値は"4"であるが、最大値で送信処理されている時間は、2ホップ間のみである。つまり、2ホップ間において、ノード間通信が最も効率的に利用されていることとなる。そのため、処理が横長になっており、全てのリクエストについて、要求先で処理が開始されるまでに28ホップかかっている。
【0080】
ここで、近年の複数のノードを用いた大規模なコンピュータシステムでは、さらなるリクエストの処理性能の向上が求められている。そこで、本発明の実施の形態2により、さらなるリクエストの処理性能の向上を実現することを説明する。
【0081】
図9は、本発明の実施の形態2にかかるリクエストの処理速度を説明するための図である。本発明の実施の形態2において、調停により勝者を決定すると、その調停順は、リクエストC、リクエストD、リクエストA、リクエストBとなる。ここで、システム内でのアクセスネックとなりうるリクエストDは、セレクタ227がリクエストを受け取ってから最速で25ホップ後に要求先が受信することになる。
【0082】
また、単位時間当たりのリクエストの送信処理数の最大値は"4"であるが、最大値で送信処理されている時間は、4ホップ間である。そのため、ラウンドロビンで処理しているときよりも送信処理期間が短くなっており、全てのリクエストについて、要求先で処理が開始されるまでに26ホップとなる。
【0083】
以上のことから、本発明の実施の形態2における効果を説明する。まず、同一メモリなどへのアクセスが多発したときに、全体的な性能が一番遅いリクエストに引っ張られることがある。そこで、本発明の実施の形態2では、ホップ数の大きいリクエストを先に処理することで、全体的なリクエストの処理速度が向上できる。
【0084】
また、セレクタからリクエストの要求先までの到達にかかる時間が長いリクエストを優先させることで、システム全体における単位時間あたりのリクエストの送信処理数が増大し、全リクエストの処理時間が平均、短縮化できる。
【0085】
<その他の発明の実施の形態>
本発明の実施の形態2は、大規模なシステムにおいて、あるセレクタにおけるホップ数の大きなリクエストの調停を優先させることで、全体的な処理速度の向上を図ることができる。
また、本発明の実施の形態2により、ノードコントローラ111に、セレクタ227からリクエストの要求先までのホップ数を基に、優先度を決定する機構であるリクエスト調停回路226を設けた。そして、ホップ数が大きいリクエストほど調停を優先的に調停させることで、アクセスネックとなる可能性のあるホップ数の大きいリクエストを先に処理することで局所的な性能低下を抑えることができる。
【0086】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【0087】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
【0088】
(付記1) 複数のノードと接続され、
自己のノード内の複数のプロセッサから前記複数のノードのいずれかに属するプロセッサへの複数のリクエストを受け付け、当該複数のリクエストのそれぞれについて、リクエストの要求先のノードに応じた優先度を算出する優先度算出回路と、
前記算出された優先度に基づいて、前記受け付けた複数のリクエストのうち出力すべきリクエストを決定する決定回路と、
前記決定されたリクエストを選択して前記要求先のノードへ出力する選択回路と、
を備えるノードコントローラ。
【0089】
(付記2) 前記優先度算出回路は、各リクエストが自己のノードから要求先のノードへ到達するために経由するノード数であるホップ数が大きいほど、前記優先度をより高く算出することを特徴とする付記1に記載のノードコントローラ。
【0090】
(付記3) 前記リクエストの要求先のノードと、前記ホップ数とを対応付けて格納する記憶部をさらに備え、
前記優先度算出回路は、前記受け付けた複数のリクエストのそれぞれについて、リクエストの要求先のノードに対応付けられた前記ホップ数を前記記憶部から取得して、前記優先度を算出する
ことを特徴とする付記2に記載のノードコントローラ。
【0091】
(付記4) 前記決定回路は、前記受け付けた複数のリクエストのうち、前記出力すべきリクエストとして決定されなかった未決定リクエストについて、所定の基準に基づいて前記優先度をより高く更新し、
前記優先度算出回路は、前記複数のリクエストを受け付けた後に受け付けた後続リクエストについて前記優先度を算出し、
前記決定回路は、前記未決定リクエストの前記更新された優先度と、前記後続リクエストの前記算出された優先度とに基づいて、前記出力すべきリクエストを決定する
ことを特徴とする付記1乃至3のいずれか1項に記載のノードコントローラ。
【0092】
(付記5) 前記決定回路は、前記未決定リクエストについて前記優先度を更新する際の前記所定の基準として、前記出力すべきリクエストとして決定されたリクエストの優先度と、前記未決定のリクエストの優先度と、前記複数のノードのうち自己のノードから要求先のノードへリクエストが到達するために経由するノード数の最大値とを用いることを特徴とする付記4に記載のノードコントローラ。
【0093】
(付記6) 前記決定回路は、前記後続リクエストの要求元と前記未決定リクエストの要求元とが同一のプロセッサである場合、当該後続リクエストを前記決定の対象外とし、
前記優先度算出回路は、前記対象外とされた後続リクエストの前記優先度をより高く更新する
ことを特徴とする付記4又は5に記載のノードコントローラ。
【0094】
(付記7) 第1のノード内の第1のプロセッサから第2のノード内のプロセッサへの第1のリクエストと、当該第1のノード内の第2のプロセッサから第3のノード内のプロセッサへの第2のリクエストとを同時に受け付け、
前記第1のリクエスト及び前記第2のリクエストの要求元に応じた第1の優先度と第2の優先度を算出し、
前記第1の優先度と前記第2の優先度に基づいて、前記第1のリクエスト及び前記第2のリクエストのいずれを出力すべきかを決定し、
前記決定されたリクエストを選択して前記要求先のノードへ出力する
ことを特徴とするリクエストの出力順序決定方法。
【0095】
(付記8) 前記第1のリクエストが前記第2のノードへ到達するために経由するノード数であるホップ数が、前記第2のリクエストが前記第3のノードへ到達するために経由するノード数より大きい場合、前記第1の優先度を前記第2の優先度より高く算出し、
前記出力すべきリクエストとして前記第1のリクエストを決定する
ことを特徴とする付記7に記載の出力順序決定方法。
【0096】
(付記9) 前記出力すべきリクエストとして決定されなかった前記第2のリクエストについて、所定の基準に基づいて前記第2の優先度をより高く更新し、
前記第1のリクエスト及び前記第2のリクエストを受け付けた後に受け付けた第3のリクエストについて第3の優先度を算出し、
前記更新された第2の優先度と、前記算出された第3の優先度とに基づいて、前記出力すべきリクエストを決定する
ことを特徴とする付記8に記載の出力順序決定方法。
【0097】
(付記10) 前記第2の優先度を更新する際の前記所定の基準として、前記第1の優先度と、前記第2の優先度と、前記第1のノードから要求先のノードへリクエストが到達するために経由するノード数の最大値とを用いることを特徴とする付記9に記載の出力順序決定方法。
【0098】
(付記11) 前記第3のリクエストの要求元と前記第2のリクエストの要求元とが同一のプロセッサである場合、当該第3のリクエストを前記決定の対象外とし、
前記第3の優先度をより高く更新する
ことを特徴とする付記9又は10に記載の出力順序決定方法。
【0099】
(付記12) 複数のノードと接続され、
複数のプロセッサと、
当該複数のプロセッサから前記複数のノードのいずれかに属するプロセッサへの複数のリクエストを受け付け、当該複数のリクエストのそれぞれについて、リクエストの要求先のノードに応じた優先度を算出する優先度算出手段と、
前記算出された優先度に基づいて、前記受け付けた複数のリクエストのうち出力すべきリクエストを決定する決定手段と、
前記決定されたリクエストを選択して前記要求先のノードへ出力する選択手段と、
を備えるノードコントローラとを有するノード
を含むノード間通信システム。
【0100】
(付記13) 前記優先度算出手段は、各リクエストが自己のノードから要求先のノードへ到達するために経由するノード数であるホップ数が大きいほど、前記優先度をより高く算出することを特徴とする付記12に記載のノード間通信システム。
【0101】
(付記14) 前記ノードコントローラは、前記リクエストの要求先のノードと、前記ホップ数とを対応付けて格納する記憶手段をさらに備え、
前記優先度算出手段は、前記受け付けた複数のリクエストのそれぞれについて、リクエストの要求先のノードに対応付けられた前記ホップ数を前記記憶手段から取得して、前記優先度を算出する
ことを特徴とする付記13に記載のノード間通信システム。
【0102】
(付記15) 前記決定手段は、前記受け付けた複数のリクエストのうち、前記出力すべきリクエストとして決定されなかった未決定リクエストについて、所定の基準に基づいて前記優先度をより高く更新し、
前記優先度算出手段は、前記複数のリクエストを受け付けた後に受け付けた後続リクエストについて前記優先度を算出し、
前記決定手段は、前記未決定リクエストの前記更新された優先度と、前記後続リクエストの前記算出された優先度とに基づいて、前記出力すべきリクエストを決定する
ことを特徴とする付記12乃至14のいずれか1項に記載のノード間通信システム。
【0103】
(付記16) 前記決定手段は、前記未決定リクエストについて前記優先度を更新する際の前記所定の基準として、前記出力すべきリクエストとして決定されたリクエストの優先度と、前記未決定のリクエストの優先度と、前記複数のノードのうち自己のノードから要求先のノードへリクエストが到達するために経由するノード数の最大値とを用いることを特徴とする付記15に記載のノード間通信システム。
【0104】
(付記17) 前記決定手段は、前記後続リクエストの要求元と前記未決定リクエストの要求元とが同一のプロセッサである場合、当該後続リクエストを前記決定の対象外とし、
前記優先度算出手段は、前記対象外とされた後続リクエストの前記優先度をより高く更新する
ことを特徴とする付記15又は16に記載のノード間通信システム。
【符号の説明】
【0105】
100 ノード間通信システム
1 ノード
11a プロセッサ
11b プロセッサ
11n プロセッサ
12 ノードコントローラ
13 優先度算出回路
14 決定回路
15 選択回路
2 ノード
21 プロセッサ
22 ノードコントローラ
3 ノード
31 プロセッサ
32 ノードコントローラ
100a コンピュータシステム
101 ノード
102 ノード
103 ノード
104 ノード
105 ノード
106 ノード
107 ノード
108 ノード
111 ノードコントローラ
112 プロセッサ
113 プロセッサ
114 プロセッサ
115 プロセッサ
121 ノードコントローラ
122 プロセッサ
123 プロセッサ
124 プロセッサ
125 プロセッサ
131 ノードコントローラ
141 ノードコントローラ
151 ノードコントローラ
161 ノードコントローラ
171 ノードコントローラ
181 ノードコントローラ
301 信号線
302 信号線
303 信号線
304 信号線
305 信号線
306 信号線
307 信号線
308 信号線
309 信号線
310 信号線
311 信号線
312 信号線
313 信号線
314 信号線
315 信号線
316 信号線
201 テーブル
202 リクエスト格納バッファ
203 リクエスト格納バッファ
204 リクエスト格納バッファ
205 リクエスト格納バッファ
206 セレクト係数格納レジスタ
207 セレクト係数格納レジスタ
208 セレクト係数格納レジスタ
209 セレクト係数格納レジスタ
210 セレクト係数生成回路
211 セレクト係数生成回路
212 セレクト係数生成回路
213 セレクト係数生成回路
214 リクエスト保持レジスタ
215 リクエスト保持レジスタ
216 リクエスト保持レジスタ
217 リクエスト保持レジスタ
218 セレクト係数保持レジスタ
219 セレクト係数保持レジスタ
220 セレクト係数保持レジスタ
221 セレクト係数保持レジスタ
222 セレクト係数調停回路
223 セレクト係数調停回路
224 セレクト係数調停回路
225 セレクト係数調停回路
226 リクエスト調停回路
227 セレクタ

【特許請求の範囲】
【請求項1】
複数のノードと接続され、
自己のノード内の複数のプロセッサから前記複数のノードのいずれかに属するプロセッサへの複数のリクエストを受け付け、当該複数のリクエストのそれぞれについて、リクエストの要求先のノードに応じた優先度を算出する優先度算出回路と、
前記算出された優先度に基づいて、前記受け付けた複数のリクエストのうち出力すべきリクエストを決定する決定回路と、
前記決定されたリクエストを選択して前記要求先のノードへ出力する選択回路と、
を備えるノードコントローラ。
【請求項2】
前記優先度算出回路は、各リクエストが自己のノードから要求先のノードへ到達するために経由するノード数であるホップ数が大きいほど、前記優先度をより高く算出することを特徴とする請求項1に記載のノードコントローラ。
【請求項3】
前記リクエストの要求先のノードと、前記ホップ数とを対応付けて格納する記憶部をさらに備え、
前記優先度算出回路は、前記受け付けた複数のリクエストのそれぞれについて、リクエストの要求先のノードに対応付けられた前記ホップ数を前記記憶部から取得して、前記優先度を算出する
ことを特徴とする請求項2に記載のノードコントローラ。
【請求項4】
前記決定回路は、前記受け付けた複数のリクエストのうち、前記出力すべきリクエストとして決定されなかった未決定リクエストについて、所定の基準に基づいて前記優先度をより高く更新し、
前記優先度算出回路は、前記複数のリクエストを受け付けた後に受け付けた後続リクエストについて前記優先度を算出し、
前記決定回路は、前記未決定リクエストの前記更新された優先度と、前記後続リクエストの前記算出された優先度とに基づいて、前記出力すべきリクエストを決定する
ことを特徴とする請求項1乃至3のいずれか1項に記載のノードコントローラ。
【請求項5】
前記決定回路は、前記未決定リクエストについて前記優先度を更新する際の前記所定の基準として、前記出力すべきリクエストとして決定されたリクエストの優先度と、前記未決定のリクエストの優先度と、前記複数のノードのうち自己のノードから要求先のノードへリクエストが到達するために経由するノード数の最大値とを用いることを特徴とする請求項4に記載のノードコントローラ。
【請求項6】
前記決定回路は、前記後続リクエストの要求元と前記未決定リクエストの要求元とが同一のプロセッサである場合、当該後続リクエストを前記決定の対象外とし、
前記優先度算出回路は、前記対象外とされた後続リクエストの前記優先度をより高く更新する
ことを特徴とする請求項4又は5に記載のノードコントローラ。
【請求項7】
第1のノード内の第1のプロセッサから第2のノード内のプロセッサへの第1のリクエストと、当該第1のノード内の第2のプロセッサから第3のノード内のプロセッサへの第2のリクエストとを同時に受け付け、
前記第1のリクエスト及び前記第2のリクエストの要求元に応じた第1の優先度と第2の優先度を算出し、
前記第1の優先度と前記第2の優先度に基づいて、前記第1のリクエスト及び前記第2のリクエストのいずれを出力すべきかを決定し、
前記決定されたリクエストを選択して前記要求先のノードへ出力する
ことを特徴とするリクエストの出力順序決定方法。
【請求項8】
前記第1のリクエストが前記第2のノードへ到達するために経由するノード数であるホップ数が、前記第2のリクエストが前記第3のノードへ到達するために経由するノード数より大きい場合、前記第1の優先度を前記第2の優先度より高く算出し、
前記出力すべきリクエストとして前記第1のリクエストを決定する
ことを特徴とする請求項7に記載の出力順序決定方法。
【請求項9】
複数のノードと接続され、
複数のプロセッサと、
当該複数のプロセッサから前記複数のノードのいずれかに属するプロセッサへの複数のリクエストを受け付け、当該複数のリクエストのそれぞれについて、リクエストの要求先のノードに応じた優先度を算出する優先度算出手段と、
前記算出された優先度に基づいて、前記受け付けた複数のリクエストのうち出力すべきリクエストを決定する決定手段と、
前記決定されたリクエストを選択して前記要求先のノードへ出力する選択手段と、
を備えるノードコントローラとを有するノード
を含むノード間通信システム。
【請求項10】
前記優先度算出手段は、各リクエストが自己のノードから要求先のノードへ到達するために経由するノード数であるホップ数が大きいほど、前記優先度をより高く算出することを特徴とする請求項9に記載のノード間通信システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate