(57)【要約】【課題】処理の順序が定められたリクエストを効率よく中継する。【解決手段】マスターデバイス（Ｍ１）とスレーブデバイス（Ｓ１，２）とをツリー型に接続してなるプロセッサーシステムにおいて、通信経路の分岐点に配置される中継器（ＴＢ３）は、処理の順序が定められたインオーダーリクエスト１，２，３が順に入力される際には、リクエスト１を下位側に転送して転送済みリクエスト１と分岐先が同じリクエスト２を下位側に転送し（Ｔ５〜Ｔ７）、転送済みリクエスト１，２と分岐先が異なるリクエスト３を待機させて転送待ちとし（Ｔ７〜Ｔ１３）、転送済みリクエスト１，２に対するレスポンス１，２が返ってきてから待機させたリクエスト３を下位側に転送するから（Ｔ１４）、処理の順序が定められたリクエストを効率よく中継することができる。【選択図】図８
2011248564.tif 000002
【特許請求の範囲】
【請求項１】
上位層のマスターデバイスと下位層のスレーブデバイスとがツリー型に接続されてなるプロセッサーシステムの通信経路の分岐点に配置され、上位側から入力されるリクエストの分岐先を選択して下位側に転送すると共に下位側から入力されるレスポンスを上位側に転送する中継器を複数備える中継装置であって、
前記中継器は、入力されるリクエストがレスポンス待ちの転送済みリクエストに対して処理の順序が定められたものである際には、前記入力されるリクエストと前記転送済みリクエストとの分岐先が同じ場合に前記入力されるリクエストを転送し、前記分岐先が異なる場合に前記入力されるリクエストを待機させて前記転送済みリクエストに対するレスポンスが返ってきてから該待機させたリクエストを転送する
ことを特徴とする中継装置。
【請求項２】
前記中継器は、リクエストを転送したときにカウントアップし該転送したリクエストに対するレスポンスが返ってきたときにカウントダウンするカウンターを有し、該カウンターが初期値の際には、前記入力されるリクエストを転送し、前記カウンターが初期値とは異なる値の際には、前記分岐先が同じ場合に前記入力されるリクエストを転送し前記分岐先が異なる場合に前記カウンターが初期値となるまで前記入力されるリクエストを待機させて初期値となってから該待機させたリクエストを転送する請求項１記載の中継装置。
【請求項３】
前記中継器は、前記マスターデバイスと前記スレーブデバイスとを繋ぐ経路のうち少なくとも一部の経路に直列的に２つ以上配置されてなる請求項１または２記載の中継装置。
【請求項４】
前記中継器は、前記入力されたリクエストと前記転送済みリクエストとのトランザクションの識別情報が同一の場合に前記処理の順序が定められたものとする請求項１ないし３いずれか１項に記載の中継装置。
【請求項５】
複数のマスターデバイスを備えるプロセッサーシステムに組み込まれる請求項４記載の中継装置であって、
前記中継器は、前記入力されたリクエストと前記転送済みリクエストとのリクエスト元のマスターデバイスが同一の場合に前記処理の順序が定められたものとする中継装置。
【請求項６】
前記スレーブデバイスとしてメモリーに対するデータのリードまたはライトを行なうメモリーコントローラーを含むプロセッサーシステムに組み込まれる請求項４または５記載の中継装置であって、
前記中継器は、前記入力されたリクエストと前記転送済みリクエストとが共にリードリクエストの場合または共にライトリクエストの場合に前記処理の順序が定められたものとする中継装置。
【請求項７】
上位層のマスターデバイスと下位層のスレーブデバイスとがツリー型に接続され、請求項１ないし６いずれか１項に記載の中継装置が組み込まれてなるプロセッサーシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、上位層のマスターデバイスと下位層のスレーブデバイスとがツリー型に接続されてなるプロセッサーシステムの通信経路の分岐点に配置され、上位側から入力されるリクエストの分岐先を選択して下位側に転送すると共に下位側から入力されるレスポンスを上位側に転送する中継器を複数備える中継装置およびこの中継装置が組み込まれてなるプロセッサーシステムに関する。
【背景技術】
【０００２】
従来より、プロセッサーやメモリーコントローラー，Ｉ／Ｏインターフェースなどの複数のデバイスをツリー型の通信経路で接続するプロセッサーシステムが提案されている（例えば、特許文献１参照）。このプロセッサーシステムでは、プロセッサーの出力側の直後にバッファーを設けておき、処理の順序が定められたインオーダーリクエストを処理する場合には、先のリクエストに対するレスポンスが戻ってくるまで後のリクエストをバッファーに蓄積しておく。そして、レスポンスが戻ってきたときにリクエストの転送を開始することで、レスポンスの順序が入れ替わるのを防止して順序通りに処理するものとしている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−３１６８５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、近年、この種のプロセッサーシステムにおいては、搭載される機器の多機能化などに伴って、デバイスの積載数が増加して通信経路が複雑化する傾向にある。このため、先のリクエストに対するレスポンスを待って後のリクエストの転送を開始すると処理のスループットが低下することがある。特に、先後のリクエストが転送されるデバイスが同一でレスポンスの順序に入れ替わりが生じないような場合には、そのようなスループットの低下が問題となる。
【０００５】
本発明の中継装置およびプロセッサーシステムは、処理の順序が定められたリクエストを効率よく中継することを主目的とする。
【課題を解決するための手段】
【０００６】
本発明の中継装置およびプロセッサーシステムは、上述の主目的を達成するために以下の手段を採った。
【０００７】
本発明の中継装置は、
上位層のマスターデバイスと下位層のスレーブデバイスとがツリー型に接続されてなるプロセッサーシステムの通信経路の分岐点に配置され、上位側から入力されるリクエストの分岐先を選択して下位側に転送すると共に下位側から入力されるレスポンスを上位側に転送する中継器を複数備える中継装置であって、
前記中継器は、入力されるリクエストがレスポンス待ちの転送済みリクエストに対して処理の順序が定められたものである際には、前記入力されるリクエストと前記転送済みリクエストとの分岐先が同じ場合に前記入力されるリクエストを転送し、前記分岐先が異なる場合に前記入力されるリクエストを待機させて前記転送済みリクエストに対するレスポンスが返ってきてから該待機させたリクエストを転送する
ことを特徴とする。
【０００８】
この本発明の中継装置では、通信経路の分岐点に配置される中継器を複数備え、中継器は、入力されるリクエストがレスポンス待ちの転送済みリクエストに対して処理の順序が定められたものである際には、入力されるリクエストと転送済みリクエストとの分岐先が同じ場合に入力されるリクエストを転送し、分岐先が異なる場合に入力されるリクエストを待機させて転送済みリクエストに対するレスポンスが返ってきてから待機させたリクエストを転送する。これにより、処理の順序が定められたリクエストを転送済みリクエストと分岐先が異なる中継器まで転送して待機させることができるから、速やかにスレーブデバイスに到着させることができる。この結果、処理の順序が定められたリクエストを効率よく中継することができる。
【０００９】
こうした本発明の中継装置において、前記中継器は、リクエストを転送したときにカウントアップし該転送したリクエストに対するレスポンスが返ってきたときにカウントダウンするカウンターを有し、該カウンターが初期値の際には、前記入力されるリクエストを転送し、前記カウンターが初期値とは異なる値の際には、前記分岐先が同じ場合に前記入力されるリクエストを転送し前記分岐先が異なる場合に前記カウンターが初期値となるまで前記入力されるリクエストを待機させて初期値となってから該待機させたリクエストを転送するものとすることもできる。こうすれば、カウンターを用いた簡易な構成で、処理の順序が定められたリクエストを効率よく中継することができる。
【００１０】
また、本発明の中継装置において、前記中継器は、前記マスターデバイスと前記スレーブデバイスとを繋ぐ経路のうち少なくとも一部の経路に直列的に２つ以上配置されてなるものとすることもできる。この場合、処理の順序が定められたリクエストを下位側の中継器で待機させるほどより速やかにスレーブデバイスに到着させることができるものとなるから、本発明による効果がより大きなものとなる。
【００１１】
また、本発明の中継装置において、前記中継器は、前記入力されたリクエストと前記転送済みリクエストとのトランザクションの識別情報が同一の場合に前記処理の順序が定められたものとすることもできる。複数のマスターデバイスを備えるプロセッサーシステムに組み込まれるこの態様の本発明の中継装置において、前記中継器は、前記入力されたリクエストと前記転送済みリクエストとのリクエスト元のマスターデバイスが同一の場合に前記処理の順序が定められたものとすることもできる。こうすれば、複数のマスターデバイスが共通のトランザクションを用いる場合にも対応することができる。また、前記スレーブデバイスとしてメモリーに対するデータのリードまたはライトを行なうメモリーコントローラーを含むプロセッサーシステムに組み込まれるこれらの態様の本発明の中継装置において、前記中継器は、前記入力されたリクエストと前記転送済みリクエストとが共にリードリクエストの場合または共にライトリクエストの場合に前記処理の順序が定められたものとすることもできる。こうすれば、リードリクエストとライトリクエストとにおいて共通のトランザクションを用いる場合にも対応することができる。
【００１２】
本発明のプロセッサーシステムは、上位層のマスターデバイスと下位層のスレーブデバイスとがツリー型に接続され、上述した態様のいずれかの中継装置が組み込まれてなることを要旨とする。
【００１３】
この本発明のプロセッサーシステムでは、上述のいずれかの態様の本発明の中継装置が組み込まれてなるから、本発明の中継装置が有する効果、例えば、処理の順序が定められたリクエストを効率よく中継することができる効果などと同等の効果を奏することができる。
【図面の簡単な説明】
【００１４】
【図１】マルチプロセッサーシステム２０の構成の概略を示す構成図。
【図２】パケットの一例を示す説明図。
【図３】Ｔ−ブリッジ４２とＩ−ブリッジ４４の構成の概略を示す構成図。
【図４】バスコントロール回路５０の構成の概略を示す構成図。
【図５】ライト用カウント部５６の構成の概略を示す構成図。
【図６】出力許否判定処理ルーチンの一例を示すフローチャート。
【図７】リクエスト処理におけるタイミングチャートの一例を示す説明図。
【図８】本実施形態のインオーダーリクエストの処理時間を示す説明図。
【図９】比較例のインオーダーリクエストの処理時間を示す説明図。
【発明を実施するための形態】
【００１５】
次に、本発明の実施の形態を図面を用いて説明する。図１は、本発明の一実施形態である中継装置を備えたマルチプロセッサーシステム２０の構成の概略を示す構成図である。このマルチプロセッサーシステム２０は、マスターデバイス３０（Ｍａｓｔｅｒ０，１，２）やスレーブデバイス８０（Ｓｌａｖｅ０，１，２）などの複数のデバイス（プロセッサー）をいわゆるツリー型のネットワーク構造で図示しない基板上に集積化したものである。なお、マスターデバイス３０としては、メインプロセッサーやダイレクトメモリーアクセスコントローラーなどが該当し、スレーブデバイス８０としては、各種Ｉ／Ｏデバイスやメモリーコントローラーなどが該当する。
【００１６】
このマルチプロセッサーシステム２０においては、マスターデバイス３０側とスレーブデバイス８０側とが、プロトコルブリッジ３５（Ｐ−Ｂｍ０，Ｐ−Ｂｍ１，Ｐ−Ｂｍ２）とクロスバースイッチ４０とバスブリッジ群７０とプロトコルブリッジ７５（Ｐ−Ｂｓ０，Ｐ−Ｂｓ１，Ｐ−Ｂｓ２）とを介して接続されている。プロトコルブリッジ３５やプロトコルブリッジ７５の各プロトコルブリッジは、デバイス毎に異なるプロトコルを共通のパケットに変換してクロスバースイッチ４０やバスブリッジ群７０に転送したり、共通のパケットをデバイス毎のプロトコルに変換して各デバイスに転送したりする。なお、本発明の中継装置としては、クロスバースイッチ４０とバスブリッジ群７０とが該当する。
【００１７】
ここで、各プロトコルブリッジにより変換され、クロスバースイッチ４０やバスブリッジ群７０で用いられるパケットについて説明する。図２は、パケットの一例を示す説明図である。なお、パケットとしては、データ転送用のワイドタイプのパケット（７３ビットや８０ビットなど）とレジスター設定用のナロータイプのパケット（３２ビットや４８ビットなど）とを用いることができるが、一例としてワイドタイプのパケットを説明する。図示するように、リクエスト用のリクエストパケットコマンド（図２（ａ））やリクエストパケットデータ（図２（ｂ））、レスポンス用のレスポンスデータ（図２（ｃ））などがある。リクエストパケットコマンドには、リードまたはライトなどのコマンド種別を示すコマンドコード（C）やデータアクセスサイズ（Dsize）、トランザクションの識別情報を示すトランザクションＩＤ（ＴＩＤ）、リクエストの出力元のマスターデバイス３０の識別情報を示すＳＩＤ（SourceID）、アドレスフィールド（Address）、バースト長（Bsize）などの情報が含まれている。また、リクエストパケットデータには、ライトデータフィールド（Write data)などの情報が含まれており、レスポンスデータには、リードデータフィールド（Read data）やレスポンスのエラーの有無（Res）、ＴＩＤ、ＳＩＤなどの情報が含まれている。なお、以下の説明では、リクエストパケットコマンドやリクエストパケットデータを単にリクエストと称し、レスポンスデータを単にレスポンスと称する。
【００１８】
クロスバースイッチ４０は、マスターデバイス３０側からのリクエストの分配およびスレーブデバイス８０側からのレスポンスの収集を行なうターゲットブリッジ（Target-Bridge，以下Ｔブリッジとする）４２（Ｔ−Ｂ０，Ｔ−Ｂ１，Ｔ−Ｂ２）と、リクエストの調停やレスポンスの分配を行なうイニシエーターブリッジ（Initiator-Bridge、以下Ｉブリッジとする）４４（Ｉ−Ｂ０，Ｉ−Ｂ１）とを備える。Ｔブリッジ４２のうち、Ｔ−Ｂ０はＰ−Ｂｍ０を介してＭａｓｔｅｒ０に接続され、Ｔ−Ｂ１はＰ−Ｂｍ１を介してＭａｓｔｅｒ１に接続され、Ｔ−Ｂ２はＰ−Ｂｍ２を介してＭａｓｔｅｒ２に接続されている。また、Ｉブリッジ４４のうち、Ｉ−Ｂ０はバスブリッジ群７０やプロトコルブリッジ７５（Ｐ−Ｂｓ０）を介してＳｌａｖｅ０に接続され、Ｉ−Ｂ１はバスブリッジ群７０やプロトコルブリッジ７５（Ｐ−Ｂｓ１，２）を介してＳｌａｖｅ１，２に接続されている。また、Ｔ−Ｂ０，Ｔ−Ｂ１とＩ−Ｂ０、Ｔ−Ｂ１，Ｔ−Ｂ２とＩ−Ｂ１がそれぞれ接続されている。このＴブリッジ４２とＩブリッジ４４の構成の概略を図３に示す。図３（ａ）はＴブリッジ４２のうちＴ−Ｂ１を例示し、図３（ｂ）はＩブリッジ４４のうちＩ−Ｂ１を例示する。
【００１９】
Ｔブリッジ４２（Ｔ−Ｂ１）には、プロトコルブリッジ３５を介してマスターデバイス３０に接続される１つの第１入力ポート４２ａおよび１つの第１出力ポート４２ｂと、クロスバースイッチ４０内のＩブリッジ４４に接続される複数の第２入力ポート４２ｃおよび複数の第２出力ポート４２ｄとが形成されている。また、処理の順序が定められたリクエストであるインオーダーリクエストの転送制御を行なうバスコントロール回路５０と、第２出力ポート４２ｄや第１出力ポート４２ｂに設けられたバッファーとしてのＦＩＦＯ４２ｅとを備える。なお、Ｔ−Ｂ０やＴ−Ｂ２は、第２の入力ポート４２ｃや第２出力ポート４２ｄの数が異なることおよびバスコントロール回路５０を備えないことを除き、Ｔ−Ｂ１と同様に構成されている。このＴブリッジ４２は、第１入力ポート４２ａにマスターデバイス３０側からのリクエストが入力されると、アドレスデコードによりパケット内のアドレスを読み出してリクエスト先のデバイス（スレーブデバイス８０）を判定すると共に判定したリクエスト先のデバイスに繋がる分岐先としてのＩブリッジ４４（Ｉ−Ｂ０〜１のいずれか）を図示しないアドレスマップを参照して選択し、選択したＩブリッジ４４に接続された第２出力ポート４２ｄからリクエストを送信する。なお、バスコントロール回路５０の転送制御の詳細については後述する。また、第２入力ポート４２ｃにＩブリッジ４４（スレーブデバイス８０側）からのレスポンスが入力されると、いわゆるラウンドロビンにより受け取った順に第１出力ポート４２ｂからマスターデバイス３０側にレスポンスを送信する。
【００２０】
Ｉブリッジ４４（Ｉ−Ｂ１）には、バスブリッジ群７０やプロトコルブリッジ７５を介してスレーブデバイス８０に接続される１つの第１入力ポート４４ａおよび１つの第１出力ポート４４ｂと、Ｔブリッジ４２の各Ｔ−Ｂの第２出力ポート４２ｄに接続される複数の第２入力ポート４４ｃと、各Ｔ−Ｂの第２入力ポート４２ｃに接続される複数の第２出力ポート４４ｄとが形成されている。また、第１出力ポート４４ｂや第２出力ポート４４ｄに設けられたバッファーとしてのＦＩＦＯ４４ｅを備える。なお、Ｉ−Ｂ０も同様に構成されている。このＩブリッジ４４は、第２入力ポート４４ｃにＴブリッジ４２（マスターデバイス３０側）からのリクエストが入力されると、第１出力ポート４４ｂからスレーブデバイス８０側にリクエストを送信する。また、このＩブリッジ４４は、複数のリクエストを受け付け可能に構成されており、リクエストが重複した場合には、優先順位付けに従って調停を行ない、その調停結果に従って順にＦＩＦＯ４４ｅに格納する。調停の方法としては、例えば、第２入力ポート４４ｃ毎に図示しないカウンターをそれぞれ設けておき、各カウンター値に応じた優先順位付けに従って調停を行なうものとすることができる。その場合、予めＭａｓｔｅｒ１，２の優先度に応じて各カウンター値の初期値を設定しておき、カウンター値が高い第２入力ポート４４ｃに入力されたリクエストを優先して調停を行ない、調停を行なう度にリクエストを優先した第２入力ポート４４ｃのカウンター値を値１ずつ減じていき値０になったカウンター値をリセットするものなどとしてもよい。また、Ｉブリッジ４４は、第１入力ポート４４ａにスレーブデバイス８０側からのレスポンスが入力されると、パケット内のＳＩＤを読み出して応答先のマスターデバイス３０に繋がるＴブリッジ４２（Ｔ−Ｂ）を選択し、選択したＴブリッジ４２に接続されている第２出力ポート４４ｄからレスポンスを送信する。
【００２１】
バスブリッジ群７０は、クロスバースイッチ４０のＩ−Ｂ１に接続されるＴブリッジとしてのＴ−Ｂ３と、クロスバースイッチ４０のＩ−Ｂ０に接続されると共にプロトコルブリッジ７５のＰ−Ｂｓ０を介してスレーブデバイス８０のＳｌａｖｅ０に接続されるＴブリッジとしてのＴ−Ｂ４と、Ｔ−Ｂ３に接続されると共にＰ−Ｂｓ１を介してＳｌａｖｅ１に接続されるＴブリッジとしてのＴ−Ｂ５と、Ｔ−Ｂ３に接続されると共にＰ−Ｂｓ２を介してＳｌａｖｅ２に接続されるＴブリッジとしてのＴ−Ｂ６とを備える。これらのＴブリッジのうち、Ｔ−Ｂ３は、クロスバースイッチ４０のＴ−Ｂ１と同様な入出力ポートを備えると共にバスコントロール回路５０を備えるものとして構成され、Ｔ−Ｂ４，５，６は同様な入出力ポートを備えるもののバスコントロール回路５０を備えないものとして構成されている。なお、バスブリッジ群７０の各Ｔ−Ｂにおけるパケットの転送は、上述したクロスバースイッチ４０の各Ｔ−Ｂにおけるパケットの転送と同様に行なわれるため、その説明は省略する。
【００２２】
ここで、クロスバースイッチ４０のＴブリッジ４２のＴ−Ｂ１やバスブリッジ群７０のＴ−Ｂ３が備えるバスコントロール回路５０について説明する。図４は、バスコントロール回路５０の構成の概略を示す構成図である。なお、ここでは、Ｔ−Ｂ３が備えるバスコントロール回路５０を例として説明する。バスコントロール回路５０は、リクエストの出力元のマスターデバイス３０の数に応じた数の回路を備えており、Ｔ−Ｂ３の場合には出力元としてＭａｓｔｅｒ１，２が該当するため、図示するように、２つの回路５０ａ，５０ｂを備える。なお、回路５０ａがＭａｓｔｅｒ１からのインオーダーリクエストの転送制御に用いられ、回路５０ｂがＭａｓｔｅｒ２からのインオーダーリクエストの転送制御に用いられる。これらの回路５０ａ，５０ｂは、同一の構成であるため特に区別する必要がある場合を除き単にバスコントロール回路５０と称し、以下の説明では回路５０ａを例として説明する。
【００２３】
このバスコントロール回路５０（回路５０ａ）は、入力されるリクエストのアドレスフィールドから転送先のポートＮｏを解析するアドレスデコーダー５１と、リクエストのＳＩＤと予め記憶しているマスターデバイス３０（回路５０ａの場合はＭａｓｔｅｒ１）のＳＩＤ（SELF#ID）とを比較するリクエスト側コンパレーター（Ｃｍｐ）５２と、入力されるレスポンスのＳＩＤと予め記憶しているマスターデバイス３０のＳＩＤ（SELF#ID）とを比較するレスポンス側コンパレーター（Ｃｍｐ）５３と、リクエストからＴＩＤなどの情報を解析するリクエスト側ＴＩＤデコーダー５４と、レスポンスからＴＩＤなどの情報を解析するレスポンス側ＴＩＤデコーダー５５と、入力されて既に転送した転送済みリクエストのうちレスポンス待ちのライトリクエストの数をカウントするライト用カウント部５６と、転送済みリクエストのうちレスポンス待ちのリードリクエストの数をカウントするリード用カウント部５７と、各種信号を入力し選択的に出力する選択出力部５８，５９，６１，６３と、リクエストの転送可否を判定して出力許可信号としてのＯＥＮ（Out Enable）信号を出力する出力判定部６２と、出力判定部６２からのＯＥＮ信号に基づいてリクエストを転送させるか停止させるリクエスト制御部（ＲＥＱ制御部）６４とを備える。なお、ライト用カウント部５６やリード用カウント部５７は、マスターデバイス３０が設定可能なＴＩＤの数に対応する数の各カウント部をそれぞれ有している。なお、各カウント部として、カウント部５６（１），（２）およびカウント部５７（１），（２）の２個ずつを図示したが、これに限られず、設定可能なＴＩＤの数を１０個や３０個，６０個などとしておき、それに対応する同数のカウント部を有するものとしてもよい。
【００２４】
リクエスト側コンパレーター５２は、リクエストのＳＩＤと予め記憶しているＳＩＤ（SELF#ID）とを比較して、一致する場合にリクエスト側ＴＩＤデコーダー５４に信号を出力する。即ち、リクエスト側コンパレーター５２は、自身の回路が対応するＭａｓｔｅｒ（回路５０ａの場合はＭａｓｔｅｒ１）からのリクエストである場合にのみ信号を出力することになる。また、レスポンス側コンパレーター５３も同様に、レスポンスのＳＩＤと予め記憶しているＳＩＤ（SELF#ID）とを比較して、一致する場合にレスポンス側ＴＩＤデコーダー５５に信号を出力する。
【００２５】
リクエスト側ＴＩＤデコーダー５４には、リクエスト側コンパレーター５２からの信号と出力判定部６２からのＯＥＮ信号が入力される。リクエスト側ＴＩＤデコーダー５４は、リクエスト側コンパレーター５２からの信号が入力されると、リクエスト内のＴＩＤを解析すると共にコマンドコード（C）に示されるリードまたはライトの種別(R/W)を解析する。そして、出力判定部６２からＯＥＮ信号が入力されると、解析した種別(R/W)に従って、種別がライトであればライト用カウント部５６に信号を出力し、種別がリードであればリード用カウント部５７に信号を出力する。このとき、上述したようにＴＩＤの数に対応する数の各カウント部があるため、解析したＴＩＤに対応するカウント部に信号を出力する。一方、レスポンス側ＴＩＤデコーダー５５には、レスポンス側コンパレーター５３からの信号が入力される。レスポンス側ＴＩＤデコーダー５５は、信号が入力されると、レスポンス内のＴＩＤと種別(R/W)とを解析し、リクエスト側ＴＩＤデコーダー５４と同様に、解析した種別(R/W)およびＴＩＤに従って、ライト用カウント部５６またはリード用カウント部５７のうちの対応するカウント部に信号を出力する。
【００２６】
ライト用カウント部５６やリード用カウント部５７には、アドレスデコーダー５１からのポートＮｏ（portN信号）が入力されると共にリクエスト側ＴＩＤデコーダー５４からの信号やレスポンス側ＴＩＤデコーダー５５からの信号が種別(R/W)やＴＩＤに従って入力される。ここで、図５は、ライト用カウント部５６の構成の概略を示す構成図である。ライト用カウント部５６の各カウント部は、図示するように、カウンター５６ａとレジスター５６ｂとからなる。カウンター５６ａには、リクエスト側ＴＩＤデコーダー５４からの信号がＵＰポートに入力され、レスポンス側ＴＩＤデコーダー５５からの信号がＤＷポートに入力される。このカウンター５６ａは、初期値は値０であり、リクエスト側ＴＩＤデコーダー５４からの信号がＵＰポートに入力されると値１ずつカウントアップし、レスポンス側ＴＩＤデコーダー５５からの信号がＤＷポートに入力されると値１ずつカウントダウンする。また、カウンター５６ａは、カウント値が初期値（値０）のときにはempty信号を出力し、ｍａｘ（例えば、値１５など）のときにはfull信号を出力する。以下、これらのempty信号やfull信号をまとめてカウント値信号とする。なお、カウンター５６ａは、カウント値が値０でもｍａｘでもないときにはカウント値信号を出力しない。一方、レジスター５６ｂには、アドレスデコーダー５１からのportN信号がＤポートに入力されると共にカウンター５６ａに入力されるリクエスト側ＴＩＤデコーダー５４からの信号が分岐してＬＤポートに入力される。このレジスター５６ｂは、portN信号がＤポートに入力されている状態でリクエスト側ＴＩＤデコーダー５４からの信号がＬＤポートに入力されると、portN信号が示すポートＮｏをポートＮｏレジスターに設定してportN#reg信号として出力する。なお、リード用カウント部５７の各カウント部は、図示は省略するが、ライト用カウント部５６と同様にカウンターとレジスターとから構成され、カウント値に応じてカウント値信号（empty信号やfull信号）を出力し、ポートＮｏレジスター（portN#reg信号）を出力する。このように、ライト用カウント部５６とリード用カウント部５７とをそれぞれ別個に備えるから、リードリクエストとライトリクエストとにおいて共通のＴＩＤを用いる場合にもレスポンス待ちのライトリクエストやリードリクエストをそれぞれカウントすることができる。また、上述したように、バスコントロール回路５０ａは、Ｍａｓｔｅｒ毎に同一の回路を有するから、各Ｍａｓｔｅｒが共通のＴＩＤを用いる場合にも対応することができる。
【００２７】
選択出力部５８には、図４に示すように、ライト用カウント部５６の各カウント部からのカウント値信号（empty信号やfull信号）やポートＮｏレジスター（portN#reg信号）がカウント部の数に応じて複数入力されると共にリクエスト内のＴＩＤが入力される。この選択出力部５８は、ＴＩＤが入力されると、入力されたＴＩＤに該当するカウント部からのカウント値信号やポートＮｏレジスターを選択出力部６１に出力する。また、選択出力部５９には、選択出力部５８と同様に、リード用カウント部５７の各カウント部からのカウント値信号やポートＮｏレジスターが複数入力されると共にリクエスト内のＴＩＤが入力されており、入力されたＴＩＤに該当するカウント部からのカウント値信号やポートＮｏレジスターを選択出力部６１に出力する。
【００２８】
選択出力部６１には、選択出力部５８および選択出力部５９からのカウント値信号やポートＮｏレジスターがそれぞれ入力されると共にリクエスト内の種別(R/W)が入力される。この選択出力部６１は、種別(R/W)が入力されると、選択出力部５８，５９からの入力信号のうち入力された種別(R/W)に該当する信号を出力判定部６２に出力する。即ち、種別がライトであれば選択出力部５８からの信号を出力し、種別がリードであれば選択出力部５９からの信号を出力する。
【００２９】
出力判定部６２には、選択出力部６１からのカウント値信号やポートＮｏレジスターが入力されると共にアドレスデコーダー５１からのポートＮｏが入力される。この出力判定部は、これらの入力信号に基づいて、入力されたリクエストの転送の許否を判定し、転送可能な場合にはＯＥＮ信号を出力し、転送不能の場合にはＯＥＮ信号の出力を停止する。このＯＥＮ信号は、リクエスト側ＴＩＤデコーダー５４と選択出力部６３とに出力される。なお、出力判定部６２の判定の詳細については、後述する。
【００３０】
選択出力部６３には、各回路５０ａ，５０ｂの出力判定部６２からＯＥＮ信号がそれぞれ入力されると共にＳＩＤが入力される。この選択出力部６３は、ＳＩＤが入力されると、入力されたＳＩＤに対応する回路の出力判定部６２から入力されるＯＥＮ信号をＲＥＱ制御部６４に出力する。ＲＥＱ制御部６４は、選択出力部６３からＯＥＮ信号が入力される場合にはリクエストを転送可能とし、ＯＥＮ信号が入力されない場合にはリクエストを停止させる。なお、リクエストは、ＯＥＮ信号が入力されると共にリクエストを受け入れ可能であることを示すリクエストレディ（Request ready）信号が下位側から入力されることを条件として転送されるが、詳細については省略する。
【００３１】
次に、こうして構成された本実施形態のマルチプロセッサーシステム２０の動作、特に、インオーダーリクエストがマスターデバイス３０から出力された場合におけるバスコントロール回路５０の動作について説明する。図６は、バスコントロール回路５０により実行される出力許否判定処理ルーチンの一例を示すフローチャートである。この処理は、各バスコントロール回路５０の出力判定部６２においてそれぞれ実行される。なお、バスブリッジ群７０のＴ−Ｂ３のバスコントロール回路５０のように複数の回路５０ａ，５０ｂを有するものにおいては、各回路５０ａ，５０ｂの出力判定部６２において実行される。
【００３２】
出力許否判定処理ルーチンが実行されると、出力判定部６２は、まず、カウント値信号としてempty信号が入力されているか否かを判定する（ステップＳ１００）。ここで、出力判定部６２には、選択出力部５８，５９，６１を介してインオーダーリクエストのＴＩＤや種別（R/W）に応じたカウント値信号が入力されるため、empty信号が入力される場合にはインオーダーリクエストと同じＴＩＤ，同じ種別（R/W）のレスポンス待ちの転送済みリクエストはないと判断することができる。この場合、入力されるインオーダーリクエストを転送しても転送済みリクエストとの間でレスポンスの順序が入れ替わることによる問題が生じることはない。このため、ステップＳ１００でempty信号が入力されていると判定した場合には、ＯＥＮ信号を出力して（ステップＳ１３０）、本ルーチンを終了する。このＯＥＮ信号は、選択出力部６３とリクエスト側ＴＩＤデコーダー５４とに入力される。Ｔ−Ｂ３内のバスコントロール回路５０のように複数の回路５０ａ，５０ｂを有するものにおいては、選択出力部６３はリクエスト内のＳＩＤに対応する回路の出力判定部６２からのＯＥＮ信号を選択してＲＥＱ制御部６４に出力する。このため、リクエスト内のＳＩＤに対応する回路の出力判定部６２からＯＥＮ信号が出力されていれば、ＲＥＱ制御部６４にＯＥＮ信号が入力されてリクエストの転送が可能となる。また、リクエスト側ＴＩＤデコーダー５４にＯＥＮ信号が入力されるから、リクエスト側ＴＩＤデコーダー５４からライト用カウント部５６またはリード用カウント部５７のうち解析した種別(R/W)およびＴＩＤに対応するカウント部に信号が出力される。そして、この信号を受けたカウント部により、カウント値が値１だけカウントアップされると共にアドレスデコーダー５１からのポートＮｏがポートＮｏレジスターに設定されることになる。
【００３３】
一方、ステップＳ１００でempty信号が入力されていないと判定した場合には、full信号が入力されているか否かを判定する（ステップＳ１１０）。full信号が入力されていないと判定した場合には、アドレスデコーダー５１からのポートＮｏ（portN信号）が選択出力部６１からのポートＮｏレジスター（portN#reg信号）と一致するか否かを判定する（ステップＳ１２０）。この処理は、今回のインオーダーリクエストの分岐先とレスポンス待ちの転送済みリクエストの分岐先とが一致するか否かを判定する処理となる。ステップＳ１２０でポートＮｏとポートＮｏレジスターとが一致すると判定した場合には、ステップＳ１３０でＯＥＮ信号を出力して本ルーチンを終了する。これにより、ＲＥＱ制御部６４からのリクエストの転送が可能となる。また、リクエスト側ＴＩＤデコーダー５４にＯＥＮ信号が入力されるから、ライト用カウント部５６またはリード用カウント部５７のうち対応するカウント部によりカウント値が値１だけカウントアップされることになる。
【００３４】
一方、レスポンス待ちの転送済みリクエストの分岐先と今回のインオーダーリクエストの分岐先とが一致しないと判定した場合には、今回のインオーダーリクエストを転送すると、分岐先の通信経路の状態や転送先のスレーブデバイス８０の処理能力，処理状態などによってはレスポンスの順序が入れ替わるおそれがある。このため、ステップＳ１２０でポートＮｏとポートＮｏレジスターとが一致しないと判定した場合には、ＯＥＮ信号の出力を停止して（ステップＳ１４０）、本ルーチンを終了する。これにより、ＲＥＱ制御部６４にＯＥＮ信号が入力されないから、リクエストは転送されずに転送待ちとされる。なお、この場合、リクエスト側ＴＩＤデコーダー５４にもＯＥＮ信号は入力されないから、ライト用カウント部５６またはリード用カウント部５７においてカウントアップされることはない。
【００３５】
また、ステップＳ１１０でfull信号が入力されていると判定した場合には、インオーダーリクエストを転送してもレスポンス待ちの転送済みリクエストのカウントを正常に行なうことができないため、ステップＳ１４０でＯＥＮ信号の出力を停止して、本ルーチンを終了する。このような処理がクロスバースイッチ４０のＴ−Ｂ１のバスコントロール回路５０やバスブリッジ群７０のＴ−Ｂ３のバスコントロール回路５０においてそれぞれ実行されることになる。なお、転送待ちリクエストがある場合には、バスコントロール回路５０は、レスポンスが返ってくる度に出力許否判定処理ルーチンを行なうものとする。レスポンスが返ってくると、レスポンス側ＴＩＤデコーダー５５からの信号によりカウント値がカウントダウンされるから、ステップＳ１００またはステップＳ１２０で肯定的な判定がされたときに、転送待ちリクエストの転送が許可されることになる。ここで、ステップＳ１２０において転送済みリクエストの分岐先と今回のインオーダーリクエストの分岐先とが一致すると判定した場合にステップＳ１３０でＯＥＮ信号を出力する理由について説明する。まず、クロスバースイッチ４０のＴ−Ｂ１のバスコントロール回路５０において判定処理が行なわれる場合を考えると、分岐先はＩ−Ｂ０、Ｉ−Ｂ１のいずれかに一致していることになる。分岐先がＩ−Ｂ０で一致しているときには、転送先のスレーブデバイス８０はＳｌａｖｅ０の１つだけであるため、転送を許可してもレスポンスの順序が入れ替わるおそれはない。一方、分岐先がＩ−Ｂ１で一致しているときには、転送先のスレーブデバイス８０としてはＳｌａｖｅ１，２の２つあり、異なるＳｌａｖｅに転送されるとレスポンスの順序が入れ替わるおそれがある。しかし、分岐先のＩ−Ｂ１の先にあるＴ−Ｂ３のバスコントロール回路５０においても同様な判定処理が行なわれており、転送先が異なる場合には、Ｔ−Ｂ３において分岐先が一致しないと判定されてリクエストが停止されて転送待ちになる。このため、レスポンスの順序が入れ替わることはない。そして、よりスレーブデバイス８０に近い下位側のＴ−Ｂ３で転送待ちとなるため、転送が可能となったときには、より速やかにスレーブデバイス８０に到着させることができる。この結果、インオーダーリクエストを効率よく中継することができ、インオーダーリクエストのスループットを向上させることができるのである。転送済みリクエストの分岐先とインオーダーリクエストの分岐先とが一致する場合にＯＥＮ信号を出力するのは、こうした理由による。
【００３６】
上述した出力許否判定処理ルーチンが行なわれる場合のリクエスト処理におけるタイミングチャートの一例を図７に示す。図７では、バスクロック（Clock）に同期したリクエスト制御信号（Request valid／Request header／Request ready）やリクエストデータ（Request bus），ＯＥＮ信号，カウントアップおよびレジスターのロード（UP/LD），カウントダウン（DW），カウント値（COUNT），empty信号，full信号，ポートＮｏレジスター（portN#reg），レスポンス制御信号（Response valid／Response ready），レスポンスデータ（Response bus）を図示している。なお、Request bus中の数字はポートＮｏ（一例として、ポートＮｏ４とポートＮｏ７）を示し、カウント値のｍａｘは値３とする。また、図示の便宜上、カウント値は１種類とした。図示するように、時刻Ｔ１でＯＥＮ信号とRequest ready信号とが出力されると、カウント値が初期値０から値１に更新されポートＮｏレジスターにはポートＮｏ４が設定される。同様に、時刻Ｔ４，Ｔ９でカウント値が値１ずつ増加している。一方、時刻Ｔ１２でポートＮｏ４のリクエストが入力されるが、カウンタ値が値３とfull信号が出力される状態にあるためＯＥＮ信号は出力されない。そして、時刻Ｔ１４でレスポンスが入力されてカウント値が値１減少し値２になった時刻Ｔ１５でＯＥＮ信号が出力される。これにより、カウント値が値１増加して値３になるが、時刻Ｔ１６でレスポンスが入力されるため、カウント値は再び値１減少して時刻Ｔ１７で値２になる。そして、時刻Ｔ１９でポートＮｏ７のリクエストが入力されているが、カウント値が値２でempty信号が出力されておらず、また、ポートＮｏ７はポートＮｏレジスター（Ｎｏ４）と一致しないため、このリクエストは転送待ちとなる。そして、時刻Ｔ２２，Ｔ２４でレスポンスが入力されてカウント値が減少して値０になると、時刻Ｔ２５で転送待ちリクエストが転送されて、ポートＮｏレジスターがポートＮｏ７に設定されると共にカウント値が値１になる。そして、入力されるリクエストがポートＮｏ７であれば（時刻Ｔ２８）、ＯＥＮ信号が出力されてリクエストが転送されてカウント値が値１ずつ増加する。
【００３７】
ここで、本実施形態のようにバスコントロール回路５０を備えるＴ−Ｂが配置された場合と、比較例としてバスコントロール回路５０を備えるＴ−Ｂが配置されない場合とにおけるインオーダーリクエストの処理時間の相違について説明する。図８は、本実施形態のインオーダーリクエストの処理時間を示す説明図であり、図９は、比較例のインオーダーリクエストの処理時間を示す説明図である。なお、図８，９では、図１におけるＭａｓｔｅｒ１（Ｍ１）からＳｌａｖｅ１，２（Ｓ１，２）までの通信経路の一部を簡略化して図示するものとし、インオーダーリクエスト１〜３のうちリクエスト１，２がＳ１へのリクエスト、リクエスト３がＳ２へのリクエストとする。また、図中数字を四角で囲んだものがリクエストを示し、数字を丸で囲んだものがレスポンスを示す。ここで、比較例においては、後のリクエストは先のリクエストに対するレスポンスが返ってくるまでプロトコルブリッジＰＢｍ１で待機するものとする。図８，図９共に時刻Ｔ１で発生したリクエスト１は、ＰＢｍ１，ＴＢ１，ＩＢ１，ＴＢ３，ＴＢ５，ＰＢｓ１を順に転送されて、時刻Ｔ８にＳ１に到着し、Ｓ１の処理で発生したレスポンス１は、ＰＢｓ１，ＴＢ５，ＴＢ３，ＩＢ１，ＴＢ１，ＰＢｍ１を順に転送されて時刻Ｔ１６にＭ１に到着する。また、リクエスト２は、比較例ではレスポンス１がＰＢｍ１を通過する時刻Ｔ１５までＰＢｍ１で待機し、時刻Ｔ２１にＳ１に到着し、レスポンス２が時刻Ｔ２９にＭ１に到着する。一方、本実施形態では、リクエスト２は、ＴＢ１およびＴＢ３でリクエスト１と分岐先が同一と判定されるために下位側に転送される。このため、リクエスト１がＳ１に到着して処理された直後の時刻Ｔ９にＳ１に到着し、レスポンス２が時刻Ｔ１７にＭ１に到着する。次に、リクエスト３は、比較例ではレスポンス２がＰＢｍ１を通過する時刻Ｔ２８までＰＢｍ１で待機し、時刻Ｔ３２にＳ２に到着し、レスポンス３が時刻Ｔ４０にＭ１に到着する。一方、本実施形態では、リクエスト３は、ＴＢ１でリクエスト１，２と分岐先が同一と判定されて下位側に転送され、ＴＢ３でリクエスト１，２と分岐先が異なると判定されてレスポンス２がＴＢ３を通過する時刻Ｔ１３まで転送待ちとなる。そして、時刻Ｔ１６にＳ２に到着し、レスポンス３が時刻Ｔ２４にＭ１に到着する。このように、本実施形態においては、インオーダーリクエストの処理時間を大幅に短縮することができ、スループットを向上させることができる。
【００３８】
ここで、本実施形態の構成要素と本発明の構成要素との対応関係を明らかにする。本実施形態のマスターデバイス３０（Ｍａｓｔｅｒ０，１，２）が本発明の「マスターデバイス」に相当し、スレーブデバイス８０（Ｓｌａｖｅ０，１，２）が「スレーブデバイス」に相当し、クロスバースイッチ４０のＴブリッジ４２のＴ−Ｂ１とブリッジ群７０のＴ−Ｂ３とが「中継器」に相当する。また、ライト用カウント部５６とリード用カウント部５７とが「カウンター」に相当する。
【００３９】
以上詳述した本実施形態のマルチプロセッサーシステム２０によれば、マスターデバイス３０とスレーブデバイス８０とをツリー型に接続し、通信経路の分岐点に配置されるＴ−Ｂのバスコントロール回路５０がインオーダーリクエストが入力される際には入力されるリクエストと転送済みリクエストとの分岐先が同じ場合にリクエストを転送し、分岐先が異なる場合にリクエストを待機させて転送済みリクエストに対するレスポンスが返ってきてから待機させたリクエストを転送するから、インオーダーリクエストを転送済みリクエストと分岐先が異なるＴ−Ｂまで転送して待機させることができ、速やかに転送先のスレーブデバイス８０に到着させることができる。この結果、インオーダーリクエストを効率よく中継することができる。また、バスコントロール回路５０は、カウンターの値によりレスポンス待ちの転送済みリクエストの有無を判断してインオーダーリクエストの転送許否を判定するから、カウンターを用いた簡易な構成でリクエストを効率よく中継することができる。さらに、バスコントロール回路５０は、対応するＭａｓｔｅｒ毎に回路を複数有し、各回路にはＴＩＤ毎およびリードまたはライトの種別(R/W)により異なるカウンタ部を複数備えるから、複数のマスターデバイスが共通のＴＩＤを用いる場合やリードリクエストとライトリクエストとにおいて共通のＴＩＤを用いる場合にも対応することができる。
【００４０】
なお、本発明は上述した実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の態様で実施し得ることはいうまでもない。
【００４１】
上述した実施形態では、マスターデバイス３０として３つのＭａｓｔｅｒ０，１，２を備えるものとしたが、これに限られるものではなく、１つのＭａｓｔｅｒを備えるものとしてもよいし４以上の複数のＭａｓｔｅｒを備えるものとしてもよい。同様に、スレーブデバイス８０として３つのＳｌａｖｅ０，１，２を備えるものとしたが２以上の複数であればいくつのＳｌａｖｅを備えるものとしてもよい。
【００４２】
上述した実施形態では、バスコントロール回路５０が対応するマスターデバイス３０の数に応じた数の回路（回路５０ａ，５０ｂなど）を備えるものとしたが、これに限られず、１つの回路としてもよい。この場合、マスターデバイス３０（Ｍａｓｔｅｒ０，１，２）毎にＴＩＤを重複しないよう定めておくものなどとすればよい。
【００４３】
上述した実施形態では、バスコントロール回路５０がリードまたはライトの種別（R/W）に対応するカウント部（ライト用カウント部５６，リード用カウント部５７）を備えるものとしたが、これに限られず、１つのカウント部としてもよい。この場合、種別（R/W）が異なる場合にはＴＩＤを重複しないよう定めておくものなどとすればよい。
【００４４】
上述した実施形態では、バスコントロール回路５０を有するＴ−Ｂ１とＴ−Ｂ３との２つのＴ−Ｂが直列的に配置されるプロセッサーシステム２０を例として説明したが、これに限られず、３つ以上のＴ−Ｂが直列的に配置されるものとしてもよいし、あるいは、複数のＴ−Ｂが直列的に配置されておらず各Ｔ−Ｂが並列的にのみ配置されるものとしてもよい。
【符号の説明】
【００４５】
２０  マルチプロセッサーシステム、３０  マスターデバイス（Ｍａｓｔｅｒ０，１，２）、３５  プロトコルブリッジ（Ｐ−Ｂｍ０，１，２）、４０  クロスバースイッチ、４２  ターゲットブリッジ（Ｔブリッジ，Ｔ−Ｂ０，１，２）、４２ａ  第１入力ポート、４２ｂ  第１出力ポート、４２ｃ  第２入力ポート、４２ｄ  第２出力ポート、４２ｅ  ＦＩＦＯ、４４  イニシエーターブリッジ（Ｉブリッジ，Ｉ−Ｂ０，１）、４４ａ  第１入力ポート、４４ｂ  第１出力ポート、４４ｃ  第２入力ポート、４４ｄ  第２出力ポート、４４ｅ  ＦＩＦＯ、５０  バスコントロール回路、５０ａ，５０ｂ  回路、５１  アドレスデコーダー、５２  リクエスト側コンパレーター、５３  レスポンス側コンパレーター、５４  リクエスト側ＴＩＤデコーダー、５５  レスポンス側ＴＩＤデコーダー、５６（５６（１），（２））  ライト用カウント部、５６ａ  カウンター、５６ｂ  レジスター、５７（５７（１），（２））  リード用カウント部、５８，５９，６１，６３  選択出力部、６２  出力判定部、６４  リクエスト（ＲＥＱ）制御部、７０  バスブリッジ群（Ｔ−Ｂ３，４，５，６）、７５  プロトコルブリッジ（Ｐ−Ｂｓ０，１，２）、８０  スレーブデバイス（Ｓｌａｖｅ０，１，２）。
【図１】
2011248564.tif 000003
【図２】
2011248564.tif 000004
【図３】
2011248564.tif 000005
【図４】
2011248564.tif 000006
【図５】
2011248564.tif 000007
【図６】
2011248564.tif 000008
【図７】
2011248564.tif 000009
【図８】
2011248564.tif 000010
【図９】
2011248564.tif 000011