(57)【要約】【課題】  システム性能の低下の問題を解決するリクエスト発行ノード、リクエスト受信ノード、システム、及び制御方法を提供する。【解決手段】  本発明のリクエスト発行ノードは、リクエストをリクエスト受信ノードに送信するリクエスト送信手段と、リクエストに対するリプライをリクエスト受信ノードから受信した場合に、リクエストを格納したリクエスト受信ノード内のリクエスト格納場所を開放させるリクエスト開放指示をリクエスト受信ノードに送信するリクエスト開放指示送信手段と、リクエスト受信ノード内の所定の数のリクエスト格納場所の全てが使用中となった場合に、リクエストの送信とリクエスト開放指示の送信とが競合したときには、優先する送信をリクエストの送信からリクエスト開放指示の送信に切り替える調停手段とを含む。【選択図】      図４
2010073122.tif 000002
【特許請求の範囲】
【請求項１】
リクエストをリクエスト受信ノードに送信するリクエスト送信手段と、
前記リクエストに対するリプライを前記リクエスト受信ノードから受信した場合に、前記リクエストを格納した前記リクエスト受信ノード内のリクエスト格納場所を開放させるリクエスト開放指示を前記リクエスト受信ノードに送信するリクエスト開放指示送信手段と、
前記リクエスト受信ノード内の所定の数の前記リクエスト格納場所の全てが使用中となった場合に、前記リクエストの送信と前記リクエスト開放指示の送信とが競合したときには、優先する送信を前記リクエストの送信から前記リクエスト開放指示の送信に切り替える調停手段と
を含むリクエスト発行ノード。
【請求項２】
前記リクエスト受信ノードから前記所定の数のリクエスト格納場所の全てが使用中であることを示すビジー通知を受信した場合に、前記調停手段に前記リクエスト開放指示の送信を優先させる切り替え信号を送信し、
前記ビジー通知を受信した後、所定の時間が経過した場合に、前記切り替え信号の送信を停止する切り替え手段
を含む請求項１に記載のリクエスト発行ノード。
【請求項３】
前記切り替え手段は、
所定の値を格納するレジスタと、
前記リクエスト受信ノードからビジー通知を受信した場合に、初期値からカウントアップを開始するタイマと、
前記リクエスト受信ノードからビジー通知を受信した場合に、前記調停手段に前記リクエスト開放指示の送信を優先させる切り替え信号を生成し、前記タイマが前記所定の値となった場合に、前記切り替え信号の生成を停止する切り替え信号生成回路と
を含む請求項２に記載のリクエスト発行ノード。
【請求項４】
リクエスト発行ノードから受信したリクエストを格納する複数のリクエスト格納場所を有し、前記リクエストに対するリプライを前記リクエスト発行ノードに送信し、前記リクエスト発行ノードから前記リプライに対応するリクエスト開放指示を受信した場合は対応する前記リクエストが格納された前記リクエスト格納場所を開放するリクエスト受信格納手段と、
前記リクエスト受信格納手段内の所定の数の前記リクエスト格納場所が使用中となった場合に、ビジー通知を生成するビジー通知生成手段と
を含むリクエスト受信ノード。
【請求項５】
前記ビジー通知生成手段は、
所定を値を格納するレジスタと、
前記リクエスト発行ノードから前記リクエストを受信するとインクリメントし、前記リクエスト開放指示を受信するとデクリメントする有効リクエスト計測カウンタと、
前記有効リクエスト計測カウンタの値が前記所定の値以上となった場合、ビジー通知を生成、送信するビジー通知生成回路と
を含む請求項４に記載のリクエスト受信ノード。
【請求項６】
前記ビジー通知生成手段は、
前記有効リクエスト計測カウンタの値が前記所定の値より小さい場合は０を出力し、前記有効リクエスト計測カウンタの値が前記所定の値以上の場合は１を出力する比較器と、
前記比較器が出力する値を保持し、所定期間経過後、保持している当該値を出力するレジスタと、
前記比較器が出力する値と、前記レジスタが出力する値を反転した値との積を取り、当該積の値を出力するＡＮＤ回路と、
前記積の値が１の場合にビジー通知を生成する生成回路と
を含む請求項５に記載のリクエスト受信ノード。
【請求項７】
リクエスト発行ノードとリクエスト受信ノードとを備え、
前記リクエスト発行ノードは、
リクエストをリクエスト受信ノードに送信するリクエスト送信手段と、
前記リクエストに対するリプライを前記リクエスト受信ノードから受信した場合に、前記リクエストを格納した前記リクエスト受信ノード内のリクエスト格納場所を開放させるリクエスト開放指示を前記リクエスト受信ノードに送信するリクエスト開放指示送信手段と、
前記リクエスト受信ノード内の所定の数の前記リクエスト格納場所の全てが使用中となった場合に、前記リクエストの送信と前記リクエスト開放指示の送信とが競合したときには、優先する送信を前記リクエストの送信から前記リクエスト開放指示の送信に切り替える調停手段と
を含み、
前記リクエスト受信ノードは、
リクエスト発行ノードから受信したリクエストを格納する複数のリクエスト格納場所を有し、前記リクエストに対するリプライを前記リクエスト発行ノードに送信し、前記リクエスト発行ノードから前記リプライに対応するリクエスト開放指示を受信した場合は対応する前記リクエストが格納された前記リクエスト格納場所を開放するリクエスト受信格納手段と、
前記リクエスト受信格納手段内の所定の数の前記リクエスト格納場所が使用中となった場合に、ビジー通知を生成するビジー通知生成手段と
を含むシステム。
【請求項８】
前記リクエスト発行ノードは、
前記リクエスト受信ノードから前記所定の数のリクエスト格納場所の全てが使用中であることを示すビジー通知を受信した場合に、前記調停手段に前記リクエスト開放指示の送信を優先させる切り替え信号を送信し、
前記ビジー通知を受信した後、所定の時間が経過した場合に、前記切り替え信号の送信を停止する切り替え手段
を含む請求項７に記載のシステム。
【請求項９】
前記切り替え手段は、
所定の値を格納するレジスタと、
前記リクエスト受信ノードから前記ビジー通知を受信した場合に、初期値からカウントアップを開始するタイマと、
前記リクエスト受信ノードからビジー通知を受信した場合に、前記調停手段に前記リクエスト開放指示の送信を優先させる切り替え信号を生成し、前記タイマが前記所定の値となった場合に、前記切り替え信号の生成を停止する切り替え信号生成回路と
を含む請求項８に記載のシステム。
【請求項１０】
前記ビジー通知生成手段は、
所定を値を格納するレジスタと、
前記リクエスト発行ノードから前記リクエストを受信するとインクリメントし、前記リクエスト開放指示を受信するとデクリメントする有効リクエスト計測カウンタと、
前記有効リクエスト計測カウンタの値が前記所定の値以上となった場合、ビジー通知を生成、送信するビジー通知生成回路と
を含む請求項７乃至９のいずれかに記載のシステム。
【請求項１１】
前記ビジー通知生成手段は、
前記有効リクエスト計測カウンタの値が前記所定の値より小さい場合は０を出力し、前記有効リクエスト計測カウンタの値が前記所定の値以上の場合は１を出力する比較器と、
前記比較器が出力する値を保持し、所定期間経過後、保持している当該値を出力するレジスタと、
前記比較器が出力する値と、前記レジスタが出力する値を反転した値との積を取り、当該積の値を出力するＡＮＤ回路と、
前記積の値が１の場合にビジー通知を生成する生成回路と
を含む請求項１０に記載のシステム。
【請求項１２】
リクエストをリクエスト受信ノードに送信し、
前記リクエストに対するリプライを前記リクエスト受信ノードから受信した場合に、前記リクエストを格納した前記リクエスト受信ノード内のリクエスト格納場所を開放させるリクエスト開放指示を前記リクエスト受信ノードに送信し、
前記リクエスト受信ノード内の所定の数の前記リクエスト格納場所の全てが使用中となった場合に、前記リクエストの送信と前記リクエスト開放指示の送信とが競合したときには、優先する送信を前記リクエストの送信から前記リクエスト開放指示の送信に切り替える
リクエスト発行ノード制御方法。
【請求項１３】
前記リクエスト受信ノードから前記所定の数のリクエスト格納場所の全てが使用中であることを示すビジー通知を受信した場合に、前記リクエスト開放指示の送信を優先させ、
前記ビジー通知を受信した後、所定の時間が経過した場合に、前記リクエストの送信を優先させる
請求項１２に記載のリクエスト発行ノード制御方法。
【請求項１４】
前記ビジー通知を受信したか否かを判定し、
前記ビジー通知を受信した場合、タイマ値を１にセットし、
前記ビジー通知を受信しなかった場合でタイマ値が所定の閾値と同じであった場合、タイマ値を０にリセットし、
前記ビジー通知を受信しなかった場合でタイマ値が０より大きく所定の閾値より小さかった場合、タイマ値に１を加え、
前記タイマ値を１にセットした後、前記タイマ値を０にリセットした後、ビジー通知を受信しなかった場合でタイマ値が０であった場合、又は前記タイマ値に１を加えた後、タイマ値が０より大きいか判定し、
タイマ値が０より大きい場合、前記リクエストと前記リクエスト開放指示のどちらを優先するか決める切り替え信号の値をリクエスト開放指示を優先する１とし、
タイマ値が０の場合、切り替え信号の値をリクエストを優先する０とする
請求項１３に記載のリクエスト発行ノード制御方法。
【請求項１５】
リクエスト発行ノードから受信したリクエストをリクエスト格納場所に格納し、
前記リクエストに対するリプライを前記リクエスト発行ノードに送信し、
前記リクエスト発行ノードから前記リプライに対応するリクエスト開放指示を受信した場合は対応する前記リクエストが格納された前記リクエスト格納場所を開放し、
前記リクエスト受信格納手段内の所定の数の前記リクエスト格納場所が使用中となった場合に、ビジー通知を生成する
リクエスト受信ノード制御方法。
【請求項１６】
前記リクエスト発行ノードから前記リクエストを受信するとインクリメントし、前記リクエスト開放指示を受信するとデクリメントすることにより有効リクエスト数をカウントし、
前記有効リクエスト数が所定の閾値以上であるか判定し、
前記有効リクエスト数が前記所定の閾値以上でなかった場合、再び有効リクエスト数をカウントする処理に戻り、
前回カウントしたときの有効リクエスト数が前記所定の閾値より小さく、今回カウントしたときの有効リクエスト数が所定の閾値以上であった場合、ビジー通知を生成、送信し、
前回及び今回の有効リクエスト数が前記所定の閾値以上であった場合、又は前記ビジー通知を生成、送信した場合、再度前記有効リクエスト数をカウントする処理に戻る
請求項１５に記載のリクエスト受信ノード制御方法。
【請求項１７】
リクエスト発行ノードが、
リクエストをリクエスト受信ノードに送信し、
前記リクエストに対するリプライを前記リクエスト受信ノードから受信した場合に、前記リクエストを格納した前記リクエスト受信ノード内のリクエスト格納場所を開放させるリクエスト開放指示を前記リクエスト受信ノードに送信し、
前記リクエスト受信ノード内の所定の数の前記リクエスト格納場所の全てが使用中となった場合に、前記リクエストの送信と前記リクエスト開放指示の送信とが競合したときには、優先する送信を前記リクエストの送信から前記リクエスト開放指示の送信に切り替え、
リクエスト受信ノードが、
リクエスト発行ノードから受信したリクエストをリクエスト格納場所に格納し、
前記リクエストに対するリプライを前記リクエスト発行ノードに送信し、
前記リクエスト発行ノードから前記リプライに対応するリクエスト開放指示を受信した場合は対応する前記リクエストが格納された前記リクエスト格納場所を開放し、
前記リクエスト受信格納手段内の所定の数の前記リクエスト格納場所が使用中となった場合に、ビジー通知を生成する
システム制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はリクエスト発行ノード、リクエスト受信ノード、システム、及び制御方法に関し、特に、リクエストの調停を行うリクエスト発行ノード、リクエスト受信ノード、システム、及び制御方法に関する。
【背景技術】
【０００２】
情報処理システム等では、ノード間で、リクエストの送信およびそのリクエストに応じたリプライの返信が行われている。リクエスト受信ノードは、リクエスト発行ノードからリクエストを受信した場合、受信バッファにリクエストを格納する。そして所定の処理が終わった後、リプライをリクエスト発行ノードに送信するが、その時点ではまだ受信バッファを開放せず、リプライを受信したリクエスト発行ノードで所定の処理が終わり、リクエスト発行ノードからリクエスト開放指示が送られてきた場合に、受信バッファを開放する。
【０００３】
このようなリクエストの送受信に関連するリクエストの調停に関する技術の一例が、特許文献１および２に開示されている。
【０００４】
【特許文献１】特開２００３−１２２７０６号公報
【特許文献２】特開平１−２６９１４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、リクエスト発行ノードからのリクエストの送信とリクエスト開放指示の送信とが競合した場合の調停に関連して以下のような問題が発生する。
【０００６】
すなわち、リクエスト受信ノードの受信バッファがビジーの場合、リクエスト受信ノードはリトライ要求をリクエスト発行ノードに送信する。これに応答して、リクエスト発行ノードはリクエストを再度発行する。このとき、リクエスト発行ノードにおいてリクエスト受信ノードへのリクエストの送信とリクエスト開放指示の送信とが競合した場合、リクエスト発行ノードは常にリクエストの送信を優先的するように調停を行う。このように、リクエストの再送信が優先されリクエスト開放指示の送信が遅れるため、リクエスト受信ノードの受信バッファは開放されず、結果として、リトライ動作が再度発生する。その結果、リトライ回数が増加を招いてしまう。
【０００７】
このように常に「リクエスト送信優先順位＞リクエスト開放指示送信優先順位」の優先度で調停した場合には、リトライ回数が多くなりトラフィックの増加を招いてしまう。逆に常に「リクエスト送信優先順位＜リクエスト開放指示送信優先順位」の優先度とした場合には、リクエスト送信タイミングの遅延が大きくなる。このように、いずれの場合にも、システム性能が低下してしまうという問題があった。
【０００８】
本発明の目的は、上述したようなシステム性能の低下の問題を解決するリクエスト発行ノード、リクエスト受信ノード、システム、及び制御方法を提供することにある。
【課題を解決するための手段】
【０００９】
本発明のリクエスト発行ノードは、リクエストをリクエスト受信ノードに送信するリクエスト送信手段と、リクエストに対するリプライをリクエスト受信ノードから受信した場合に、リクエストを格納したリクエスト受信ノード内のリクエスト格納場所を開放させるリクエスト開放指示をリクエスト受信ノードに送信するリクエスト開放指示送信手段と、リクエスト受信ノード内の所定の数のリクエスト格納場所の全てが使用中となった場合に、リクエストの送信とリクエスト開放指示の送信とが競合したときには、優先する送信をリクエストの送信からリクエスト開放指示の送信に切り替える調停手段とを含む。
【００１０】
本発明のリクエスト受信ノードは、リクエスト発行ノードから受信したリクエストを格納する複数のリクエスト格納場所を有し、リクエストに対するリプライをリクエスト発行ノードに送信し、リクエスト発行ノードからリプライに対応するリクエスト開放指示を受信した場合は対応するリクエストが格納されたリクエスト格納場所を開放するリクエスト受信格納手段と、リクエスト受信格納手段内の所定の数のリクエスト格納場所が使用中となった場合に、ビジー通知を生成するビジー通知生成手段とを含む。
【００１１】
本発明のシステムは、リクエスト発行ノードとリクエスト受信ノードとを備え、リクエスト発行ノードは、リクエストをリクエスト受信ノードに送信するリクエスト送信手段と、リクエストに対するリプライをリクエスト受信ノードから受信した場合に、リクエストを格納したリクエスト受信ノード内のリクエスト格納場所を開放させるリクエスト開放指示をリクエスト受信ノードに送信するリクエスト開放指示送信手段と、リクエスト受信ノード内の所定の数のリクエスト格納場所の全てが使用中となった場合に、リクエストの送信とリクエスト開放指示の送信とが競合したときには、優先する送信をリクエストの送信からリクエスト開放指示の送信に切り替える調停手段とを含み、リクエスト受信ノードは、リクエスト発行ノードから受信したリクエストを格納する複数のリクエスト格納場所を有し、リクエストに対するリプライをリクエスト発行ノードに送信し、リクエスト発行ノードからリプライに対応するリクエスト開放指示を受信した場合は対応するリクエストが格納されたリクエスト格納場所を開放するリクエスト受信格納手段と、リクエスト受信格納手段内の所定の数のリクエスト格納場所が使用中となった場合に、ビジー通知を生成するビジー通知生成手段とを含む。
【００１２】
本発明のリクエスト発行ノード制御方法は、リクエストをリクエスト受信ノードに送信し、リクエストに対するリプライをリクエスト受信ノードから受信した場合に、リクエストを格納したリクエスト受信ノード内のリクエスト格納場所を開放させるリクエスト開放指示をリクエスト受信ノードに送信し、リクエスト受信ノード内の所定の数のリクエスト格納場所の全てが使用中となった場合に、リクエストの送信とリクエスト開放指示の送信とが競合したときには、優先する送信をリクエストの送信からリクエスト開放指示の送信に切り替える。
【００１３】
本発明のリクエスト受信ノード制御方法は、リクエスト発行ノードから受信したリクエストをリクエスト格納場所に格納し、リクエストに対するリプライをリクエスト発行ノードに送信し、リクエスト発行ノードからリプライに対応するリクエスト開放指示を受信した場合は対応するリクエストが格納されたリクエスト格納場所を開放し、リクエスト受信格納手段内の所定の数のリクエスト格納場所が使用中となった場合に、ビジー通知を生成する。
【００１４】
本発明のシステム制御方法は、リクエスト発行ノードが、リクエストをリクエスト受信ノードに送信し、リクエストに対するリプライをリクエスト受信ノードから受信した場合に、リクエストを格納したリクエスト受信ノード内のリクエスト格納場所を開放させるリクエスト開放指示をリクエスト受信ノードに送信し、リクエスト受信ノード内の所定の数のリクエスト格納場所の全てが使用中となった場合に、リクエストの送信とリクエスト開放指示の送信とが競合したときには、優先する送信をリクエストの送信からリクエスト開放指示の送信に切り替え、リクエスト受信ノードが、リクエスト発行ノードから受信したリクエストをリクエスト格納場所に格納し、リクエストに対するリプライをリクエスト発行ノードに送信し、リクエスト発行ノードからリプライに対応するリクエスト開放指示を受信した場合は対応するリクエストが格納されたリクエスト格納場所を開放し、リクエスト受信格納手段内の所定の数のリクエスト格納場所が使用中となった場合に、ビジー通知を生成する。
【発明の効果】
【００１５】
本発明には、システム性能を向上させることができるという効果がある。
【発明を実施するための最良の形態】
【００１６】
まず、本発明が前提とする一般的なリクエスト調停システムの一例を説明する。
【００１７】
図１は、リクエスト調停システム００１の構成を示す図である。リクエスト調停システム００１は、相互に接続されたノード１０１〜１０３を含む。ノード１０１〜１０３は、それぞれプロセッサ１０４〜１０６、メモリコントローラ１０７〜１０９、ノードコントローラ１１０〜１１２を含む。図２は、ノードコントローラ１１０〜１１２の内部構成を示す図である。例えば、ノードコントローラ１１０は、リクエスト発行部２０１と、リクエスト受信部２０２と、インターフェース制御部２０３とを含む。
【００１８】
次に動作の説明を行う。図３は、リクエスト調停システム００１の動作を説明するための図である。ここでは、ノード１０１がリクエスト発行ノードであり、ノード１０２がリクエスト受信ノードである場合について説明する。そのため、ノードコントローラ１１０についてはリクエスト発行部２０１を、ノードコントローラ１１１についてはリクエスト受信部３０９を中心に説明する。
【００１９】
まず、プロセッサ１０４は、リクエスト発行部２０１内のリクエストキュー３０３へリクエストを送信する。リクエストはリクエストキュー３０３から調停回路３０４を通り、インターフェース制御部２０３から他ノードへ送信される。ここではノード１０１からのリクエストが配線３０６を使用してノード１０２へ送信されるものとする。ノード１０２のリクエスト受信部３０９内のリクエスト受信バッファ３０５は、受信したリクエストを格納する。
【００２０】
リクエスト受信バッファ３０５は、リクエストをメモリコントローラ１０８へ送信する。そして、メモリコントローラ１０８は、そのリクエストに対するリプライをリクエスト受信バッファ３０５へ送信する。このとき、メモリコントローラ１０８へ出力したリクエストはリクエスト受信バッファ３０５内に残っており、リプライが返ってきてもリクエストエントリは開放されない。リクエストエントリとはバッファ内のリクエストを格納するための場所である。例えば、リクエストエントリが３２箇所ある場合、リクエスト受信バッファ３０５は最大３２個のリクエストを格納しておくことができる。リクエスト受信バッファ３０５はあるリクエストエントリを開放するとそのリクエストエントリに新しいリクエストを格納する。
【００２１】
リクエスト受信バッファ３０５は、上述したようにメモリコントローラ１０８からリプライを受信すると、そのリプライをインターフェース制御部２０４と配線３０７とを経由してノード１０１へ送信する。ノード１０１で信されたリプライはインターフェイス制御部２０３を介してリプライキュー３０１へ送られ、リプライキュー３０１は受信したリプライをプロセッサ１０４へ送信する。プロセッサ１０４へリプライが送られると同時に、リクエスト開放指示キュー３０２に、プロセッサ１０４に送られたリプライに対応したリクエスト開放指示が送られる。このリクエスト開放指示は、受信したリプライに対応するリクエストが格納されたリクエスト受信バッファ３０５内のリクエストエントリを開放する指示である。
【００２２】
リクエスト開放指示キュー３０２は、リクエスト開放指示を、調停回路３０４と配線３０６とを経由してリクエスト受信バッファ３０５に送信する。リクエスト受信バッファ３０５は該当するリクエストエントリを開放する。以上で、一つのリクエスト処理が終了する。
【００２３】
上述したように、メモリコントローラ１０８からリプライをリクエスト受信バッファ３０５が受信しても、その段階では、リクエスト受信バッファ３０５はまだリクエストエントリを開放しない。その後、プロセッサ１０４にリプライが返りリクエスト受信バッファ３０５がリクエスト開放指示を受信した際に、リクエスト受信バッファ３０５はリクエストエントリを開放する。以上が基本動作となる。
【００２４】
上述したようなシステムにおいて、リクエスト受信バッファ３０５がビジー（全てのリクエストエントリが未開放状態）でリクエストが受信できない状況が発生した場合、リクエスト受信バッファ３０５はリクエスト発行部２０１にリトライ要求を送信し、リクエストキュー３０３がリクエスト受信バッファ３０５で受信できなかったリクエストと同じリクエストを再度発行し、調停回路３０４を経由してノード１０２に送信する。リクエストキュー３０３はリクエスト受信バッファ３０５からリトライ要求を受信する毎にリクエストを発行する。また、リクエスト受信バッファ３０５も空きがない状態でリクエストを受信する毎にリトライ要求を発行する。
【００２５】
このように常に「リクエスト送信優先順位＞リクエスト開放指示送信優先順位」の優先度で調停した場合には、リトライ回数が多くなりトラフィックの増大を招いてしまう。逆に常に「リクエスト送信優先順位＜リクエスト開放指示送信優先順位」の優先度とした場合には、リクエストの遅延が大きくなる。このように、いずれの場合にも、システム性能が低下してしまうという問題がある。
【００２６】
次に、この問題を解決する本発明の概要について説明する。
【００２７】
図４は、リクエスト調停システム００１の構成を示す図である。
【００２８】
リクエスト調停システム００１は、リクエスト発行ノード５００とリクエスト受信ノード６００とを含む。
【００２９】
リクエスト発行ノード５００は、リクエストキュー３０３と、リクエスト開放指示キュー３０２と、調停回路３０４とを含む。
【００３０】
リクエストキュー３０３は、リクエストをリクエスト受信ノード６００に送信するリクエスト送信手段である。
【００３１】
リクエスト開放指示キュー３０２は、リクエストに対するリプライをリクエスト受信ノード６００から受信した場合に、そのリクエストに対応するリクエスト受信ノード６００のリクエスト受信バッファ３０５のリクエストエントリ（リクエスト格納場所）を開放させるリクエスト開放指示をリクエスト受信ノード６００に送信するリクエスト開放指示送信手段である。
【００３２】
調停回路３０４は、リクエストの送信とリクエスト開放指示の送信とを調停する回路である。リクエスト受信バッファ３０５がビジーとなった場合（所定の数のリクエストエントリの全てが使用中となった場合）に、リクエストの送信とリクエスト開放指示の送信とが競合したときに、優先する送信をリクエストの送信からリクエスト開放指示の送信に切り替える調停手段である。
【００３３】
リクエスト受信ノード６００は、リクエスト受信バッファ３０５と、ビジー通知生成部６０２とを含む。
【００３４】
リクエスト受信バッファ３０５は、リクエスト発行ノード５００から受信したリクエストを格納する複数のリクエストエントリ（リクエスト格納場所）を有し、リクエストに対するリプライをリクエスト発行ノード５００に送信し、リクエスト発行ノード５００からリプライに対応するリクエスト開放指示を受信した場合は対応するリクエストが格納されたリクエストエントリを開放するリクエスト受信格納手段である。
【００３５】
ビジー通知生成部６０２は、リクエスト受信バッファ３０５内の所定の数のリクエストエントリが使用中となった場合に、ビジー通知を生成するビジー通知生成手段である。
【００３６】
以上により、本発明は、システム性能を向上させることができるという効果を奏する。
【００３７】
その理由は、リクエスト受信バッファ３０５がビジーとなった場合にリクエスト開放指示の送信を優先するためである。これによりリトライ回数を減少させることができ、トラフィックを減少させることができる。
【００３８】
本発明は、リクエスト開放指示とリクエストが競合した場合でも、リクエストのレイテンシを短くできるという効果を奏する。
【００３９】
その理由は、リクエスト受信バッファ３０５がビジーとなる前等の通常時はリクエストの送信を優先しているためである。
【００４０】
次に、本発明の実施の形態について図面を参照して詳細に説明する。図１，２および３を用いて説明した本発明の前提となるリクエスト調停システム００１に追加した箇所について特に詳細に説明する。
【００４１】
図５は、本発明の実施の形態におけるリクエスト発行部２０１の構成を示す図である。ここでは、ノード１０１内のリクエスト発行部２０１について説明するが、ノード１０２等の他のノード内のリクエスト発行部も同様の構成を有する。
【００４２】
リクエスト発行部２０１は、リプライキュー３０１と、リクエスト開放指示キュー３０２と、リクエストキュー３０３と、調停回路３０４と、切り替えコントローラ４０１とを含む。
【００４３】
リプライキュー３０１は、プロセッサ１０４に送るリプライを他のノード（以下ではノード１０２を例に説明する）から受け取る。
【００４４】
リクエストキュー３０３は、プロセッサ１０４からのリクエストを受け取り、ノード１０２に送信する。
【００４５】
リクエスト開放指示キュー３０２は、リプライに対応したリクエスト開放指示を受信し、ノード１０２のリクエスト受信バッファ３０５のリクエストエントリを開放させるリクエスト開放指示を、ノード１０２に送信する。
【００４６】
調停回路３０４は、リクエスト送信とリクエスト開放指示送信との調停を行う。本実施の形態では、常にリクエストの送信を優先するのではなく、調停回路３０４は、リクエスト受信バッファ３０５がビジーとなった場合には、優先する送信をリクエストの送信からリクエスト開放指示の送信に切り替える。
【００４７】
切り替えコントローラ４０１は、ノード１０２からビジー通知パケットを受信した場合に、調停回路３０４にリクエスト開放指示の送信を優先させる切り替え信号を送信する切り替え手段である。切り替えコントローラ４０１は、ビジー通知パケットを受信した後、所定の時間が経過した場合に、調停回路３０４にリクエスト開放指示の送信を優先させる切り替え信号の送信を停止する。
【００４８】
図６は、切り替えコントローラ４０１の構成を示す図である。
【００４９】
切り替えコントローラ４０１は、タイマ４０６と、設定レジスタ４０７と、切り替え信号生成回路４０８とを含む。
【００５０】
タイマ４０６は、ノード１０２からビジー通知パケットを受信した場合に、初期値からカウントアップを開始する。
【００５１】
設定レジスタ４０７は、所定の値を格納する。
【００５２】
切り替え信号生成回路４０８は、ノード１０２からビジー通知パケットを受信した場合に、調停回路３０４にリクエスト開放指示の送信を優先させる切り替え信号を生成する。これを受けて、調停回路３０４は、調停の優先度を「リクエスト送信優先順位＞リクエスト開放指示送信優先順位」から「リクエスト送信優先順位＜リクエスト開放指示送信優先順位」に切り替える。切り替え信号生成回路４０８は、タイマ４０６が所定の値となった場合（設定レジスタ４０７の値と同じになった場合）に、前記切り替え信号の生成を停止する。これを受けて、調停回路３０４の優先度は「リクエスト送信優先順位＞リクエスト開放指示送信優先順位」に戻る。
【００５３】
図７は、本実施の形態におけるリクエスト受信部３０９の構成を示した図である。ここではノード１０２内のリクエスト受信部３０９について説明するが、ノード１０１等の他のノード内のリクエスト受信部も同様の構成を有する。リクエスト受信部３０９は、リクエスト及びリクエスト開放指示を受信すると共に、リトライ要求、リプライ、及びビジー通知パケットをインターフェース制御部２０４を経由し送信する。インターフェース制御部２０４は、バッファー３０５がビジーの場合、ビジー通知パケットをノード１０１のリクエスト発行部２０１及びノード１０２のリクエスト発行部３０８等、全てのノードのリクエスト発行部へブロードキャストする。リクエスト発行部２０１の切り替えコントローラ４０１及びリクエスト発行部３０８の切り替えコントローラ（図示せず）等、全ての切り替えコントローラは、ビジー通知パケットを受信する。
【００５４】
リクエスト受信部３０９は、リクエスト受信バッファ３０５と、ビジー通知パケット生成部４０２とを含む。
【００５５】
リクエスト受信バッファ３０５は、リクエスト、リプライ、リクエスト開放指示を受信する。リクエスト受信バッファ３０５は、ノード１０１から受信したリクエストをリクエストエントリに格納し、リクエストに対するリプライをノード１０１に送信する。ノード１０１からリクエスト開放指示を受信した場合はリクエストエントリを開放する。
【００５６】
ビジー通知パケット生成部４０２は、リクエスト受信バッファ３０５がビジーとなった場合、ビジー通知パケットを生成し、ノード１０１を含む全てのノードに送信する。具体的には、ビジー通知パケット生成部４０２は、リクエスト受信バッファ３０５内に格納されている有効リクエストのエントリ数をカウントし、設定した閾値を超えるか判定する。
【００５７】
図８は、ビジー通知パケット生成部４０２の構成を示した図である。
【００５８】
ビジー通知パケット生成部４０２は、有効リクエスト計測カウンタ４０３と、閾値レジスタ４０４と、ビジー通知パケット生成回路４０５とを含む。
【００５９】
有効リクエスト計測カウンタ４０３は、ノード１０１等の他のノードからリクエストを受信する毎にその計数値を１だけ増やし（インクリメント）し、リクエスト開放指示を受信する毎にその計数値を１だけ減らす（デクリメントする）。なお、リトライ時には何も行わない。
【００６０】
閾値レジスタ４０４は、所定を値を格納する。
【００６１】
ビジー通知パケット生成回路４０５は、有効リクエスト計測カウンタ４０３の値が閾値レジスタ４０４に格納された所定の値以上となった場合、ビジー通知パケットを生成し、ノード１０１等の他のノードに送信する。ビジー通知パケット生成回路４０５は、比較器４１０と、レジスタ４１１と、ＡＮＤ回路４１２と、パケット生成回路４１３とを含む。
【００６２】
比較器４１０は、有効リクエスト計測カウンタ４０３の値が閾値レジスタ４０４に格納された所定の値より小さい場合は０を出力し、有効リクエスト計測カウンタ４０３の値がこの所定の値以上の場合は１を出力する。
【００６３】
レジスタ４１１は、比較器４１０が出力する値を保持し、所定期間経過後（例えば、１クロック経過後）、保持している当該値を出力する。
【００６４】
ＡＮＤ回路４１２は、比較器４１０が出力する値とレジスタ４１１が出力する値を反転した値との論理積を取り、当該論理積の値を出力する。
【００６５】
パケット生成回路４１３は、論理積の値が１の場合にビジー通知パケットを生成する。
【００６６】
図９は、ビジー通知パケット生成回路４０５の動作を説明するための図である。
【００６７】
閾値レジスタ４０４の値が有効リクエスト計測カウンタ４０３の値より大きい場合、比較器４１０の出力値は０となり、その直後のクロックタイミングでこれがレジスタ４１１に格納される。さらに、次のクロックでレジスタ４１１の値である０が出力され、これがＡＮＤ回路４１２の反転入力端子に与えられる。ＡＮＤ回路４１２の反転入力端子および非反転入力端子の入力値はそれぞれ０および０となり、ＡＮＤ回路４１２の出力値は０となる（ａ）。次に、有効リクエスト計測カウンタ４０３の値が閾値レジスタ４０４の値以上となった場合、比較器４１０の出力値は１となり、その直後のクロックタイミングでレジスタ４１１に格納される。この時点では、レジスタ４１１からはまだ０が出力されているため、ＡＮＤ回路４１２の反転入力端子および非反転入力端子の入力値はそれぞれ０および１となり、ＡＮＤ回路４１２の出力値は１となる（パルスが発生する）（ｂ）。次のクロックタイミングで、１クロック前に格納された１がレジスタ４１１から出力され、ＡＮＤ回路４１２の反転入力端子および非反転入力端子の入力値はそれぞれ１と１となり、ＡＮＤ回路４１２は再び０を出力する（ｃ）。
【００６８】
次に、本発明の実施の形態の動作について図面を参照して説明する。まず、リクエスト調停システム００１全体の動作について説明する。
【００６９】
図１０は、リクエスト調停システム００１の動作の概要を示したシーケンス図である。
【００７０】
ノード１０１（リクエスト発行ノードとする）は、リクエストをノード１０２（リクエスト受信ノードとする）に送信する（Ａ１）。これを受けて、ノード１０２は、受信したリクエストを受信バッファーのリクエストエントリに格納し（Ｂ１）、リプライを送信する（Ｂ２）。このとき、リクエストの受付により受信バッファーがビジーとなった場合（Ｂ３，Ｙ）、ノード１０２は、ビジー通知パケットを生成し、ノード１０１含む他のノードに送信する（Ｂ４）。
【００７１】
ノード１０１は、リプライを受信すると（Ａ２）、リクエスト開放指示を送信することになる。ここで、ノード１０１が新たなリクエストを送信しようとしていなかった場合、リクエスト送信とリクエスト開放指示送信との競合は発生せず（Ａ３，Ｎ）、ノード１０１はリクエスト開放指示を送信する（Ａ４）。ノード１０１が新たなリクエストを送信しようとしてしていた場合、リクエスト送信とリクエスト開放指示送信の競合が発生する（Ａ３，Ｙ）。この場合、ノード１０１はビジー通知パケットを受信しているか判断し（Ａ５）、ビジー通知パケットを受信していなかった場合（Ａ５，Ｎ）、リクエストの送信を優先し（Ａ９）、リクエストを送信する（Ａ１）。
【００７２】
ビジー通知を受信していた場合（Ａ５，Ｙ）、ノード１０１は、リクエスト開放指示の送信を優先し（Ａ６）、リクエスト開放指示をノード１０２に送信する（Ａ７）。これを受けて、ノード１０２は、該当するリクエストエントリを開放する（Ｂ５）。
【００７３】
ノード１０１は、所定の時間経過した場合（Ａ８，Ｙ）、再度リクエストの送信を優先するように切り替える（Ａ９）。
【００７４】
次に、ビジー通知パケット生成部４０２の動作を説明する。図１１は、ビジー通知パケット生成部４０２の動作を示すフローチャートである。図１０のＢ３，Ｂ４の処理に対応する。
【００７５】
リクエスト受信バッファ３０５がノード１０１等の他のノードからリクエストを受信す毎にインクリメントし、他のノードからリクエスト開放指示を受信する毎にデクリメントすることにより、ビジー通知パケット生成部４０２内の有効リクエスト計測カウンタ４０３は、有効リクエストをカウントする（Ｃ１）。そして、比較器４１０は、有効リクエスト数が所定の閾値以上であるか判定する。即ち、有効リクエスト計測カウンタ４０３と閾値レジスタ４０４との値を比較する（Ｃ２）。比較した結果、有効リクエスト計測カウンタ４０３の値が閾値レジスタ４０４の値より小さい場合（Ｃ２，Ｎｏ）、ビジー通知パケット生成部４０２は、ビジー通知パケットを生成せず、処理はＣ１へ戻り、またリクエストとリクエスト開放指示をカウントする。
【００７６】
ビジー通知パケット生成部４０２は、前回カウントしたときの有効リクエスト数が所定の閾値より小さく、今回カウントしたときの有効リクエスト数が所定の閾値以上であった場合（Ｃ３）、ビジー通知を生成、送信する（Ｃ４）。具体的には、ビジー通知パケット生成部４０２は、有効リクエスト計測カウンタ４０３の値が閾値レジスタ４０４の値以上になった場合、ビジー通知パケットを生成する（Ｃ４）。例えば、リクエストエントリ数を３２とし、閾値レジスタ４０４の値を３０とした場合、有効リクエスト計測カウンタ４０３の値が３０以上となった時に、ビジー通知パケット生成部４０２はビジー通知パケットを生成する。
【００７７】
前回及び今回の有効リクエスト数が所定の閾値以上であった場合、又は、Ｃ４の処理でビジー通知を生成、送信した場合、有効リクエスト数のカウントの処理（Ｃ１）に再度戻る。このように、前回有効リクエスト計測カウンタ４０３の値が閾値レジスタ４０４の値以上であって、今回も閾値レジスタ４０４の値以上であった場合には、既にビジー通知パケットは生成されているので、ビジー通知パケットは生成しない。
【００７８】
次に、ビジー通知パケットの生成送信を受けた切り替えコントローラ４０１の動作を説明する。
【００７９】
図１２は、切り替えコントローラ４０１の動作を説明するフローチャートである。図１０のＡ５，Ａ６の処理に対応する。
【００８０】
まず、切り替えコントローラ４０１は、ビジー通知パケットを受信したか否かを判定する（Ｄ１）。切り替えコントローラ４０１は、ビジー通知パケットを受信した場合（Ｄ１，Ｙｅｓ）、タイマ値を１にセットする（Ｄ２）。ビジー通知パケットを受信しなかった場合（Ｄ１，Ｎｏ）、タイマ値が閾値と同じか、タイマ値が０であるか、又はタイマ値が０より大きく閾値より小さいか判定する（Ｄ３）。
【００８１】
タイマ値が所定の閾値と同じであった場合、タイマ値を０にリセットする（Ｄ４）。タイマ値が０より大きく所定の閾値より小さかった場合、タイマ値に１を加える（Ｄ５）。
【００８２】
タイマ値を１にセットした（Ｄ２）とき、タイマ値を０にリセットした（Ｄ４）とき、ビジー通知パケットを受信しなかった場合でタイマ値が０であったとき、又はタイマ値に１を加えた（Ｄ５）とき、タイマ値が０より大きいか判定する（Ｄ６）。
【００８３】
タイマ値が０より大きい場合（Ｄ６，Ｙｅｓ）、リクエスト送信とリクエスト開放指示送信のいずれを優先するか決める切り替え信号の値をリクエスト開放指示を優先する１とする（Ｄ７）。タイマ値が０の場合（タイマ値が０より大きくない場合（Ｄ６，Ｎｏ））、切り替え信号の値をリクエストを優先する０とする（Ｄ８）。
【００８４】
次に図１２をより具体的に説明する。まず、切り替えコントローラ４０１はビジー通知パケットを受信したかどうかを監視する（Ｄ１）。ビジー通知パケットを受信していない場合は（Ｄ１，Ｎｏ）、タイマ値を判定する（Ｄ３）。次に、タイマ値が０より大きいか判定し（Ｄ６）、タイマ値が０なのでタイマ値は０より大きくないため（Ｄ６，Ｎｏ）、切り替え信号生成条件で切り替え信号を生成せず（リクエスト優先）（Ｄ８）、再びビジー通知パケット受信の監視をする（Ｄ１）。
【００８５】
次に、切り替えコントローラ４０１は、ビジー通知パケット受信を監視し（Ｄ１）、初めてビジー通知パケットを受信した場合は（Ｄ１，Ｙｅｓ）、タイマ値を１にセットする（Ｄ２）。切り替え信号生成条件（タイマ値が０より大きいか）を判定し（Ｄ６）、タイマ値は０より大きいので（Ｄ６，Ｙｅｓ）、切り替え信号が生成されるので（Ｄ７）、調停回路３０４はリクエスト開放指示送信優先調停に切り替わる。このように初期状態でビジー通知パケットを受信した場合、リクエスト開放指示の送信が優先されることになる。
【００８６】
リクエスト開放指示優先調停に切り替わった状態でステップＤ１に戻ったとき、新たにビジー通知パケットを受信していなかったら（Ｄ１，Ｎｏ）、タイマ値に応じて処理を変更する（Ｄ３）。
【００８７】
まずタイマ値が設定レジスタ４０７で設定した閾値と等しかった場合、切り替えコントローラ４０１は、タイマ値をリセットし値を０にする（Ｄ４）。次にリセットされた場合、切り替え信号生成条件（タイマ値が０より大きいか）を判定し（Ｄ６）、タイマ値は０より大きくないので（Ｄ６，Ｎｏ）、切り替え信号が生成されないので（Ｄ８）、調停回路３０４はリクエスト優先調停に切り替わる。即ち、ビジー通知パケットを受信してから所定の時間経過すると、リクエストの送信が優先されることになる。
【００８８】
そしてタイマ値が０より大きく、タイマ値が閾値より小さかった場合、切り替えコントローラ４０１は、タイマ値をカウントアップする（Ｄ５）。切り替え信号生成条件（タイマ値が０より大きいか）を判定し（Ｄ６）、タイマ値が０より大きいため（Ｄ６，Ｙｅｓ）、切り替え信号が生成されるので（Ｄ７）、調停回路３０４はリクエスト開放指示優先調停のままになる。即ち、ビジー通知パケットを受信してから所定の時間経過していない場合、リクエスト開放指示の送信を優先する状態が継続する。
【００８９】
ビジー通知パケットを受信し、タイマ値が閾値と等しくなる前に新たなビジー通知パケットを受信した場合（Ｄ１、Ｙｅｓ）、タイマ値は１にセットされる（Ｄ２）。切り替え信号生成条件（タイマ値が０より大きいか）を判定し（Ｄ６）、タイマ値が０より大きいため（Ｄ６，Ｙｅｓ）、切り替え信号が生成され、調停回路３０４はリクエスト開放指示優先調停のままになる。即ち、ビジー通知パケットを受信してから所定の時間経過していない場合でも、再度ビジー通知パケットを受信するとタイマ４０６がリセットされ、この時点から所定の時間経過するまでリクエスト開放指示の送信を優先する状態が継続することになる。
【００９０】
上述した本実施の形態には、システム性能を向上させることができるという効果がある。
【００９１】
その理由は、リクエスト受信バッファ３０５がビジーとなった場合にリクエスト開放指示の送信を優先するためである。これによりリトライ回数を減少させることができトラフィックを減少させることができる。
【００９２】
さらに本実施の形態には、リクエスト開放指示とリクエストが競合した場合でも、リクエストのレイテンシを短くできるという効果がある。
【００９３】
その理由は、リクエスト受信バッファ３０５がビジーとなる前と、リクエスト受信バッファ３０５がビジーになった後、所定の時間が経過した場合に、リクエストの送信を優先させるためである。即ち、通常時はリクエストの送信を優先しているためである。
【図面の簡単な説明】
【００９４】
【図１】リクエスト調停システム００１の構成を示す図である。
【図２】ノードコントローラ１１０〜１１２の内部構成を示す図である。
【図３】リクエスト調停システム００１の動作を説明するための図である。
【図４】リクエスト調停システム００１の構成を示す図である。
【図５】本発明の実施の形態におけるリクエスト発行部２０１の構成を示す図である。
【図６】切り替えコントローラ４０１の構成を示す図である。
【図７】本実施の形態におけるリクエスト受信部３０９の構成を示した図である。
【図８】ビジー通知パケット生成部４０２の構成を示した図である。
【図９】ビジー通知パケット生成回路４０５の動作を説明するための図である。
【図１０】リクエスト調停システム００１の動作の概要を示したシーケンス図である。
【図１１】ビジー通知パケット生成部４０２の動作を示すフローチャートである。
【図１２】切り替えコントローラ４０１の動作を説明するフローチャートである。
【符号の説明】
【００９５】
００１    リクエスト調停システム
１０１，１０２，１０３    ノード
１０４，１０５，１０６    プロセッサ
１０７，１０８，１０９    メモリコントローラ
１１０，１１１，１１２    ノードコントローラ
２０１    リクエスト発行部
２０２    リクエスト受信部
２０３    インターフェース制御部
２０４    インターフェース制御部
３０１    リプライキュー
３０２    リクエスト開放指示キュー
３０３    リクエストキュー
３０４    調停回路
３０５    リクエスト受信バッファ
３０６，３０７    配線
３０８    リクエスト発行部
３０９    リクエスト受信部
４０１    切り替えコントローラ
４０２    ビジー通知パケット生成部
４０３    有効リクエスト計測カウンタ
４０４    閾値レジスタ
４０５    ビジー通知パケット生成回路
４０６    タイマ
４０７    設定レジスタ
４０８    切り替え信号生成回路
４１０    比較器
４１１    レジスタ
４１２    ＡＮＤ回路
４１３    パケット生成回路
５００    リクエスト発行ノード
６００    リクエスト受信ノード
６０２    ビジー通知生成部
【図１】
2010073122.tif 000003
【図２】
2010073122.tif 000004
【図３】
2010073122.tif 000005
【図４】
2010073122.tif 000006
【図５】
2010073122.tif 000007
【図６】
2010073122.tif 000008
【図７】
2010073122.tif 000009
【図８】
2010073122.tif 000010
【図９】
2010073122.tif 000011
【図１０】
2010073122.tif 000012
【図１１】
2010073122.tif 000013
【図１２】
2010073122.tif 000014