(57)【要約】【課題】  本発明では、複数のモジュールをリング状に接続したシステムにおいて、モジュール数が多くなっても、高速でアクセスしたいモジュールには、高速なアクセスを維持することを可能にすることを目的としている。【解決手段】  本発明では、モジュール数が多くなった場合に、各モジュールを高速でアクセスするものと低速でアクセスするものに分類して、リング接続を複数の階層に分け、第一のリングには高速でアクセスするスレーブモジュール、第二のリングには低速でアクセスするスレーブモジュールを接続することで、第一のリングに接続されたスレーブモジュールにアクセスする際には、その他のリングに接続されたモジュールの数にかかわらず高速でアクセスすることが可能になっている。【選択図】  図３
2006107022.tif 000002
【特許請求の範囲】
【請求項１】
ＬＳＩ内において、主となるマスタモジュールがひとつ存在し、そのマスタモジュールからアクセスされる複数のスレーブモジュールが存在し、マスタモジュールを含んで、複数のスレーブモジュールをリング状に接続する第一のリングと、他のスレーブモジュールをリング状に接続する第二のリングと、第一のリングと第二のリングがブリッジによって接続されている階層化されたリングを持つシステムにおいて、リングで接続されるすべてのモジュールは次に接続されるモジュールへトランザクションを発行するマスタインターフェースと前に接続されているモジュールからトランザクションを受け取るスレーブインターフェースを持ち、マスタモジュールはリングに接続された他のモジュールに対してアクセスを行なうためにマスタインターフェースからコマンドトランザクションを発行する手段を持ち、ブリッジは第一のリングにおいて前に接続されているモジュールからコマンドトランザクションを受け取るスレーブインターフェースと、第一のリングにおいて次に接続されるモジュールへトランザクションを発行するマスタインターフェースと、第二のリングにおいて次に接続されるモジュールへトランザクションを発行するマスタインターフェースと、第二のリングにおいて前に接続されているモジュールからコマンドトランザクションを受け取るスレーブインターフェースを持ち、第一のリングから受け取ったコマンドトランザクションを必要に応じて第二のリングに対して発行する手段と、第二のリングから受け取ったトランザクションを必要に応じて第一のリングに発行する手段とを持ち、スレーブとなる他のモジュールは、スレーブインターフェースから受け取ったコマンドトランザクションに従って処理を行なうことを特徴とした通信方法および装置。
【請求項２】
前記第一のリングに、複数のブリッジにより複数のリングが接続されていることを特徴とした請求項１に記載の通信方法および通信装置。
【請求項３】
ＬＳＩ内部に複数のモジュールを持ち、各モジュールがシステムバスで接続されているのに加え、各モジュールを第一のリングと第二のリングによって階層化されたリング状に接続する通信経路が存在し、ＣＰＵがレジスタアクセスなどを行なう際には階層化されたリング状の通信経路を用いて通信を行なうことを特徴とした請求項１または請求項２に記載の通信方法および装置。
【請求項４】
前記スレーブとなるモジュールは、スレーブインターフェースから受け取ったコマンドトランザクションを次に接続されたモジュールへマスタインターフェースからフォワードする手段を持ち、そのコマンドトランザクションが自分に対するアクセスであるかどうかを判断するためにトランザクションに含まれるアドレスを、トランザクションをフォワードするのと平行してデコードを行なう手段と、そのコマンドトランザクションが自分に対するアクセスであると判断したときにはリターントランザクションをマスタインターフェースから発行する手段を持ち、前記ブリッジは、スレーブインターフェースから受け取ったコマンドトランザクションを第一のリングにおいて次に接続されたモジュールへマスタインターフェースからフォワードする手段を持ち、そのコマンドトランザクションが自分に対するアクセスであるかどうかを判断するためにトランザクションに含まれるアドレスを、トランザクションをフォワードするのと平行してデコードを行なう手段と、そのコマンドトランザクションが自分に対するアクセスであると判断したときには第二のリングに対してコマンドトランザクションをマスタインターフェースから発行する手段を持ち、第二のリング内において前に接続されたモジュールからリターントランザクションを受け取ったときには、第一のリングにおいて次に接続されたモジュールへマスタインターフェースからフォワードする手段を持つことを特徴とした請求項1または請求項２または請求項３に記載の通信方法および装置。
【請求項５】
前記スレーブとなるモジュールおよび前記ブリッジは、次に接続されたモジュールがトランザクションを受け取る準備ができていないときには受信したトランザクションをフォワードせずに保持しておくためのバッファを持ち、次に接続されたモジュールがトランザクションを受け取る準備が出来次第送信する手段を持つことを特徴とした請求項４に記載の通信方法および装置。
【請求項６】
前記ブリッジは、ブリッジのマスタインターフェースを始点とし、モジュールを順に接続した第二のリングの終点が最終的に接続されるスレーブインターフェースを持ち、ブリッジから発行したコマンドトランザクションが最終的に戻ってきて、その後に一定時間リターントランザクションが受信できなかった場合にエラーと判断する手段を持つことを特徴とした請求項５に記載の通信方法および装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置のＬＳＩ内部の各モジュール間の通信に関し、より詳細には、各モジュールをリング上に接続しての通信に関するものである。
【背景技術】
【０００２】
従来、複数のモジュール間をリング状に接続して通信を行う技術があった（例えば特許文献１参照）。このような方法では、モジュールに対して送られてきた命令をそのモジュールが解析を行ない、自分に対する命令であると判断した場合はその命令を行ない、その命令を次のモジュールに転送する。また、自分に対する命令でないと判断した場合はその命令を行わずに次のモジュールに転送する。ここで、自分に対する命令である場合には、その命令を次のモジュールに対して転送しないものや、命令を加工して転送するといった技術もある。
【０００３】
しかし、このような方法では命令を受け取ってから命令の判断を行ない、次のモジュールに転送するまでにはある程度の処理時間が必要で、数サイクルから数十サイクル要する場合が多い。
【０００４】
このようにリング状に接続されたシステムでは、モジュールの数が増えるとその分だけ命令の転送時間がかかり、その時間は各モジュールで要する処理時間に大きく影響される。
【特許文献１】特開平６−７７９７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、一般的にシステム内には、高速でアクセスしたいモジュールと低速でアクセスしてもよいモジュールの両方が存在しており、これらをひとつのリングで接続すると、高速でアクセスしたいモジュールも、低速でアクセスしてもよいモジュールも同じ時間でアクセスが行われ、その時間はリングのモジュール数に比例し、モジュール数が増えるほど長くなる。
【０００６】
従って本発明の目的は、モジュール数が多くなっても、高速でアクセスしたいモジュールには、高速なアクセスを維持することを可能にすることである。
【課題を解決するための手段】
【０００７】
本出願に係る発明は、ＬＳＩ内において、主となるマスタモジュールがひとつ存在し、そのマスタモジュールからアクセスされる複数のスレーブモジュールが存在し、マスタモジュールを含んで、複数のスレーブモジュールをリング状に接続する第一のリングと、他のスレーブモジュールをリング状に接続する第二のリングと、第一のリングと第二のリングがブリッジによって接続されている階層化されたリングを持つシステムにおいて、リングで接続されるすべてのモジュールは次に接続されるモジュールへトランザクションを発行するマスタインターフェースと前に接続されているモジュールからトランザクションを受け取るスレーブインターフェースを持ち、マスタモジュールはリングに接続された他のモジュールに対してアクセスを行なうためにマスタインターフェースからコマンドトランザクションを発行する手段を持ち、ブリッジは第一のリングにおいて前に接続されているモジュールからコマンドトランザクションを受け取るスレーブインターフェースと、第一のリングにおいて次に接続されるモジュールへトランザクションを発行するマスタインターフェースと、第二のリングにおいて次に接続されるモジュールへトランザクションを発行するマスタインターフェースと、第二のリングにおいて前に接続されているモジュールからコマンドトランザクションを受け取るスレーブインターフェースを持ち、第一のリングから受け取ったコマンドトランザクションを必要に応じて第二のリングに対して発行する手段と、第二のリングから受け取ったトランザクションを必要に応じて第一のリングに発行する手段とを持ち、スレーブとなる他のモジュールは、スレーブインターフェースから受け取ったコマンドトランザクションに従って処理を行なう手段を持ち、
前記スレーブとなるモジュールは、スレーブインターフェースから受け取ったコマンドトランザクションを次に接続されたモジュールへマスタインターフェースからフォワードする手段を持ち、そのコマンドトランザクションが自分に対するアクセスであるかどうかを判断するためにトランザクションに含まれるアドレスを、トランザクションをフォワードするのと平行してデコードを行なう手段と、そのコマンドトランザクションが自分に対するアクセスであると判断したときにはリターントランザクションをマスタインターフェースから発行する手段を持ち、前記ブリッジは、スレーブインターフェースから受け取ったコマンドトランザクションを第一のリングにおいて次に接続されたモジュールへマスタインターフェースからフォワードする手段を持ち、そのコマンドトランザクションが自分に対するアクセスであるかどうかを判断するためにトランザクションに含まれるアドレスを、トランザクションをフォワードするのと平行してデコードを行なう手段と、そのコマンドトランザクションが自分に対するアクセスであると判断したときには第二のリングに対してコマンドトランザクションをマスタインターフェースから発行する手段を持ち、第二のリング内において前に接続されたモジュールからリターントランザクションを受け取ったときには、第一のリングにおいて次に接続されたモジュールへマスタインターフェースからフォワードする手段を持ち、
前記スレーブとなるモジュールおよび前記ブリッジは、次に接続されたモジュールがトランザクションを受け取る準備ができていないときには受信したトランザクションをフォワードせずに保持しておくためのバッファを持ち、次に接続されたモジュールがトランザクションを受け取る準備が出来次第送信する手段を持ち、
前記ブリッジは、ブリッジのマスタインターフェースを始点とし、モジュールを順に接続した第二のリングの終点が最終的に接続されるスレーブインターフェースを持ち、ブリッジから発行したコマンドトランザクションが最終的に戻ってきて、その後に一定時間リターントランザクションが受信できなかった場合にエラーと判断する手段とを持つことを特徴としている。
【発明の効果】
【０００８】
以上説明したように、本発明によれば、スレーブモジュールの数が増えても、それらを高速でアクセスするものと低速でアクセスするものに分類して、リング接続を複数の階層に分け、第一のリングには高速でアクセスするスレーブモジュール、第二のリングには低速でアクセスするスレーブモジュールを接続することで、第一のリングに接続されたスレーブモジュールにアクセスする際には、高速でアクセスすることが可能になっている。
【発明を実施するための最良の形態】
【０００９】
＜実施形態１＞
上記した本発明の実施の形態について更に詳細に説明すべく、本発明の一実施例について、図面を参照して詳細に説明する。
【００１０】
図２には図１のシステムから第一のレジスタアクセスリング１１１の部分を抽出した図を示す。ここでは第二のレジスタアクセスリング１２１は存在しないものとしている。
【００１１】
まず、以下にこの図を用いて、レジスタアクセスリングに注目して、その通信方法を詳細に説明する。
【００１２】
４００は図１のシステムブリッジ１０１のリングアクセスのインターフェース部分と等価であり、本構成での第一のレジスタアクセスリング１１１のマスタとなるマスタモジュールである。４０１〜４０３は図１のモジュール0、2、メモリコントローラ１０５などのリングアクセスインターフェース部分と等価であり、第一のレジスタアクセスリング１１１のスレーブとなるスレーブモジュールである。
【００１３】
各モジュールはモジュール間で通信するためのマスタインターフェースとスレーブインターフェースを持っている。
【００１４】
マスタモジュール４００のマスタインターフェースとスレーブモジュール０  ４０１のスレーブインターフェースは通信経路０で接続されている。また、スレーブモジュール０  ４０１のマスタインターフェースとスレーブモジュール１  ４０２のスレーブインターフェースは通信経路１で接続されており、スレーブモジュール１  ４０２のマスタインターフェースとスレーブモジュール２  ４０３のスレーブインターフェースは通信経路２、スレーブモジュール２  ４０３のマスタインターフェースとマスタモジュール４００のスレーブインターフェースは通信経路３でそれぞれ接続されている。
【００１５】
このように構成されるリングでは、コマンド/リターントランザクションが転送される方向は決まっており、マスタモジュール４００→スレーブモジュール０  ４０１→スレーブモジュール１  ４０２→スレーブモジュール２  ４０３→マスタモジュール４００という方向にのみ転送が可能である。
【００１６】
各通信経路は以下に示す信号によって構成されている。
Tsp                Transaction Start        Master I/F > Slave I/F
Rsp                Return Start              Master I/F > Slave I/F
Tbsyp              Transaction Busy          Master I/F > Slave I/F
uaddr_midp[5:0]            Upper Address / Master ID        Master I/F > Slave I/F
laddr_datap[15:0]  Lower Address / Data      Master I/F > Slave I/F
rd_not_wr          Read(H)/Write(L)          Master I/F > Slave I/F
errorp            Error                      Master I/F > Slave I/F
srdyp              Slave Ready                Slave I/F > Master I/F
以下に各信号について説明する。
Tsp                トランザクション Start      Master I/F > Slave I/F
マスタインターフェースは通信相手のスレーブインターフェースからのsrdypがアサートされているのを確認して1サイクル間アサートを行ない、コマンドトランザクションをスタートする。
【００１７】
マスタは次のトランザクションをtbsypがHighの状態を検出後、開始することができる。すなわち、トランザクション間は少なくとも必ず1サイクル存在することになる。
Rsp                  Return Start              Master I/F > Slave I/F
スレーブモジュールからのリターントランザクションを開始する信号。スレーブモジュールはライトが終了するか、リードデータの準備ができたら本信号をアサートし、リターントランザクションを開始する。アサートの条件はtspと同じ。
Tbsyp                Transaction Busy          Master I/F > Slave I/F
コマンド/リターントランザクションが行われている間アサートされる。トランザクションは３サイクルを要するので、常に3サイクル間アサートされる。本信号がディアサートされている時は通信経路はアイドル状態にある。
uaddr_midp[5:0]                Upper Address / Master ID   Master I/F > Slave I/F
Upper AddressとMaster ID（MID）のマルチプレックス信号。
【００１８】
1beat目にUpper Address、2beat目にMaster IDが入る。3beat目はDon't Care。
【００１９】
1beat目のUpper Addressの際はAddress[23:18]が入る。
【００２０】
2beat目のMaster IDの際はuaddr_midp[3:0]にMID[3:0]が入る。上位2bitはDon't Care。
【００２１】
MIDはシーケンスにはまったく影響がない。各スレーブモジュールは単にマスタインターフェースから受け取ったMIDを次へフォワードするだけである。
laddr_datap[15:0]      Lower Address / Data      Master I/F > Slave I/F
Lower AddressとDataのマルチプレックス信号。
【００２２】
1beat目にLower Address、2beat目にDataのMSB側の16bit、3beat目にDataのLSB側の16bitが入る。
【００２３】
1beat目のLower Addressの際はAddress[17:2]が入る。
【００２４】
2beat目のDataの際はData[31:16]が入る。
【００２５】
3beat目のDataの際はData[15:0]が入る。
rd_not_wr              Read(H)/Write(L)          Master I/F > Slave I/F
転送のリード / ライトを示す。
【００２６】
tbsypがアサートされている間アサートされる。その期間は変更してはならない。
High：リード
Low：ライト
Errorp                Error                              Master I/F > Slave I/F
エラーをマスタモジュールに通知する。エラーが発生した場合、スレーブモジュールはリターントランザクション時にtbsypがアサートされている間本信号をアサートする。
Srdyp                Slave Ready                  Slave I/F > Master I/F
トランザクションを受け取る側のスレーブインターフェースがトランザクションを送る側のマスタインターフェースからのトランザクションを受け取る準備ができていることを示す。本信号がアサートされていれば、マスタインターフェースはいつでもトランザクションを始めることができ、スレーブインターフェースは必ずそのトランザクションを受け取らなければならない。
【００２７】
srdypはトランザクションを受け取ると、一旦ディアサートされる。スレーブモジュールはコマンド トランザクションをデコードし、自分の範囲のアドレスにヒットした場合には、srdypをそのままディアサートし続け、次のトランザクションの受信を防がなければならない。
【００２８】
ヒットしなかった場合で、受け取ったトランザクションを次のモジュールへフォワードできた場合にはsrdypをアサートし、次のトランザクションを受け取る準備をする。
【００２９】
デコードはコマンドトランザクション中に終えるのが望ましい。
【００３０】
ヒットした場合はリターントランザクションを発行後、srdypを再びアサートする。
【００３１】
以上の信号は通信経路０~３で共通であり、それぞれの通信経路での信号名は、信号名の最後に０〜３の番号が追加され、以下のようになる。
【００３２】
通信経路０の信号
tsp0, rsp0, tbsyp0, uaddr_midp0[5:0], laddr_datap0[15:0], rd_not_wr0, errorp0, srdyp0
通信経路1の信号
tsp1, rsp1, tbsyp1, uaddr_midp1[5:0], laddr_datap1[15:0], rd_not_wr1, errorp1, srdyp1
通信経路2の信号
tsp2, rsp2, tbsyp2, uaddr_midp2[5:0], laddr_datap2[15:0], rd_not_wr2, errorp2, srdyp2
通信経路3の信号
tsp3, rsp3, tbsyp3, uaddr_midp3[5:0], laddr_datap3[15:0], rd_not_wr3, errorp3, srdyp3
ライト及びリードのコマンドトランザクションはマスタモジュールが発行し、各スレーブモジュールはそれを次のスレーブモジュールにフォワードしていく。スレーブモジュールは受け取ったコマンドトランザクションは自分に対するアクセスであるないに関わらず次のスレーブモジュールにフォワードするので、コマンドトランザクションは最終的にマスタモジュールに戻ってくる。
【００３３】
スレーブモジュールはコマンドトランザクションをフォワードするのと同時にアドレスをデコードし、自分のアドレスにヒットしていればそれ以降のコマンドトランザクションの受信を行わず、自分が管理するレジスタに対してライトあるいはリード作業を行う。
【００３４】
それが終了すると、スレーブモジュールはリターントランザクションを発行する。
【００３５】
このリターントランザクションもそれ以降の各スレーブモジュールによりフォワードされ、最終的にマスタモジュールに到達する。
【００３６】
リターントランザクションを発行したスレーブモジュールは一時ストップしていたコマンドトランザクションの受信を再開する。
【００３７】
マスタモジュールはコマンドトランザクションを発行すると、必ずそのコマンドトランザクションと、そのコマンドトランザクションに対するリターントランザクションを受け取ることを期待している。
【００３８】
複数のコマンドトランザクションを発行した時にも、マスタモジュールは必ずコマンドトランザクションとリターントランザクションを交互に受け取るはずである。
【００３９】
コマンドトランザクションのアドレスにエラーがあり、どのスレーブモジュールも反応しなかったときには、マスタモジュールにリターントランザクションが戻ってこない。これにより、マスタモジュールはコマンドトランザクションにエラーがあったことを知ることができる。
【００４０】
コマンドトランザクションは最初マスタモジュールが発行する。スレーブモジュールはそれを受け取り即座に後のスレーブモジュールにフォワードする。コマンドトランザクションの発行はtbsyp = 0、srdyp = 1の時にのみ可能である。
【００４１】
コマンドトランザクションは最終的にマスタモジュールに到達する。
【００４２】
スレーブモジュールはコマンドトランザクションをフォワードするのと同時にアドレスをデコードする。
【００４３】
ライト時にはライトデータがデータ信号に送られる。リード時には送られない。
【００４４】
ライト/リードに関わらず、トランザクションは3beatで行われる。1beat目はアドレスの転送、2beat目はマスタIDとデータの転送、3beat目はデータの転送である。リード時にはデータ部分はDon't Careである。
【００４５】
スレーブモジュールはコマンドトランザクションを受け取り、自分のアドレスにヒットしていればそれ以降のコマンドトランザクションの受信を一時ストップし、自分が管理するレジスタに対してライトあるいはリード作業を行なう。
【００４６】
それが終了すると、スレーブモジュールはリターントランザクションを発行する。これはライト時にもリード時にも必ず発行される。
【００４７】
リターントランザクションはそれ以降の各スレーブモジュールにより無条件にフォワードされ、最終的にマスタモジュールに到達する。リターントランザクションのアドレスでコードは行われない。
【００４８】
マスタモジュールはこのリターントランザクションを受信することによってコマンドが正常に終了したと判断する。
【００４９】
リード時のリターントランザクションにはリードデータが送られる。ライト時にはデータは送られない。
【００５０】
マスタモジュールがエラーを検知しかつ直ちに処理できない場合、 errorpをtbsypと同じタイミングでアサートしたコマンドトランザクションを発行する。errorpがアサートされているコマンドトランザクションに対してはスレーブモジュールは反応してはならない。エラーはコマンドトランザクションが再びマスタモジュールに戻ってきたタイミングで処理される。
【００５１】
スレーブモジュールがエラーを検知した場合、リターントランザクション発行時にerrorpをtbsypと同じタイミングでアサートする。
【００５２】
アドレスエラーが発生した場合は、コマンドトランザクションに対してどのスレーブモジュールも反応しないことになる。よってリターントランザクションは発生しない。
【００５３】
これはマスタモジュールが検知をする必要がある。
【００５４】
マスタモジュールはトランザクションの受信において、コマンドトランザクションを続けて受信した場合にエラーと判断できる。
【００５５】
また、コマンドトランザクションを受信してからタイムアウトカウンタによりカウントを行ない、ある一定時間の間にリターントランザクションを受信しなかった場合にも同様にエラーと判断することができる。
【００５６】
次にトランザクションのシーケンスについて詳しく説明する。
【００５７】
図５にはコマンドトランザクションのシーケンスを示す。サイクル１で通信経路がアイドル状態（tbsyp=Low）でスレーブインターフェースがレディ状態（srdyp=High）なので、マスタインターフェースはサイクル２でtspをHighにアサートしてコマンドトランザクションを開始することができる。このコマンドはライトであるのでrd_not_wrをLowにアサートする。スレーブインターフェースはtspのアサートによりコマンドトランザクションの開始を検出し、サイクル３でsrdypをLowにディアサートする。srdypのディアサートのタイミングは、続けてコマンドトランザクションが発行されるのを防ぐためなので、トランザクションが終了するまでであればいつでもかまわない。
【００５８】
uaddr_midp[5:0]、laddr_datap[15:0]には１ビート目から３ビート目までそれぞれ決められたアドレス、マスタID、ライトデータが乗せられている。サイクル４でコマンドトランザクションは終了し、サイクル５でtbsypがLowにディアサートされ、通信経路はアイドル状態に戻っている。
【００５９】
サイクル９ではsrdypがHighにアサートされ、スレーブインターフェースが再度レディ状態に戻っている。これを検出してマスタインターフェースはサイクル１０でtspをHighにアサートし、リードコマンドトランザクションを開始している。ここではリードなので、rd_not_wrはHighにアサートされている。また、laddr_datap[15:0]の2ビート目と3ビート目にはデータが乗せられていない。
【００６０】
図６はマスタモジュール４００から発行されたライトコマンドトランザクションを、通信経路０から受けたスレーブモジュール０  ４０１が、ライトコマンドトランザクションを通信経路１にフォワードし、リターントランザクションを通信経路１に発行する際のシーケンスを示している。
【００６１】
前述した通信経路０でのライトコマンドトランザクションのシーケンスは前述したとおりである。スレーブモジュール０は通信経路０から送られてくるトランザクションを通信経路１へフォワードする。通信経路１のsrdyp1がHighにアサートされている場合、トランザクションは1サイクルのディレイで通信経路１へフォワードされる。一般的には、コマンドトランザクションのフォワードはアドレスのデコードが終了して、自分に対するアクセスではないことが確定した段階で次の経路にコマンドトランザクションをフォワードするため、アドレスデコードが終了するのを待つ必要があるので、1サイクルのディレイでフォワードすることは困難であった。本発明では、アドレスのデコードの結果によらずに必ずコマンドトランザクションをフォワードするプロトコルにしているため、デコードの終了を待つ必要がなく、フォワードのディレイを１サイクルに抑えることができる。これにより、リング接続の最大の欠点であるレイテンシの悪化を最小限に抑えることができる。
【００６２】
スレーブモジュール０  ４０１は、srdyp0をディアサートして次のトランザクションの受信を防いでいる間に、アドレスのデコードを行い、自分に対するアクセスでなければ、srdyp0をアサートして次のトランザクションを受け付ければよい。
【００６３】
スレーブモジュール１  ４０２がトランザクションを受信することができない場合は通信経路１のsrdyp1がLowにディアサートされている。この場合はスレーブモジュール０  ４０１は受信したトランザクションをフォワードすることができないため、内部のバッファにトランザクションを格納し、srdyp1がアサートされた時点であらためてフォワードすることになる。
【００６４】
図６の場合は1サイクルのディレイでコマンドトランザクションがフォワードされている。また、デコードの結果、自分に対するアクセスであったので、srdyp0をディアサートしたまま、リターントランザクションを通信経路１に発行している。
【００６５】
サイクル９で通信経路１がアイドル状態でスレーブモジュール１  ４０２がレディ状態なので、スレーブモジュール０  ４０１はサイクル１０でrspをHighにアサートし、リターントランザクションを開始する。シーケンスはコマンドトランザクションと同じで、tspをアサートするところをrspをアサートするというところが異なる。また、ライトコマンドに対するリターントランザクションではデータを乗せる部分はDon't Careでよい。
【００６６】
このようにして発行されたリターントランザクションはコマンドトランザクションと同様に通信経路を次々にフォワードされてゆき、最終的にマスタモジュールへ戻る。各スレーブモジュールはリターントランザクションを受信した場合はアドレスのデコードを行なわず、ヒットしなかったコマンドトランザクションと同様に次の通信経路にフォワードされる。
【００６７】
以上のようにマスタモジュール４００から発行されたコマンドトランザクションは、ターゲットとなるスレーブモジュールでリターントランザクションが発行され、マスタモジュール４００に戻ってくる時には必ずコマンドトランザクションの後にリターントランザクションも続けて送られてくる。
【００６８】
マスタモジュール４００はコマンドトランザクションを発行した後、そのコマンドトランザクションとリターントランザクションが戻ってくる前に、次のコマンドトランザクションを発行することが可能である。これにより、リング内にパイプライン的にトランザクションを発行することが可能になる。
【００６９】
図７はマスタモジュール４００から発行されたリードコマンドトランザクションを、通信経路０から受けたスレーブモジュール１が、リードコマンドトランザクションを通信経路１にフォワードし、リターントランザクションを通信経路１に発行する際のシーケンスを示している。
【００７０】
シーケンス的にはライトコマンドトランザクションとほとんど同じである。rd_not_wrが反転することと、リードコマンドトランザクションのデータ部がDon't Careとなり、リターントランザクションのデータ部にはリードデータが乗せられるということが異なるだけである。
【００７１】
以上、レジスタアクセスリングに注目して、その通信方法を詳細に説明した。
【００７２】
図３には図１のシステムから第一のレジスタアクセスリング１１１と第二のレジスタアクセスリング１２１の部分を抽出した図を示す。以下にこの図を用いて、階層化されたレジスタアクセスリングに注目して、その通信方法を詳細に説明する。モジュール間の通信経路の通信プロトコルは以上に説明したものと同じである。
【００７３】
マスタモジュール４００、スレーブモジュール０  ４０１、スレーブモジュール２  ４０３、通信経路０〜３については図２と同等である。また、スレーブモジュール３  ４１１、スレーブモジュール３  ４１２、スレーブモジュール４  ４１３についても、スレーブモジュール０  ４０１と同等である。
【００７４】
４１０はリングブリッジであり、通信経路１によってスレーブモジュール０  ４０１のマスタインターフェースと接続されており、通信経路２によってスレーブモジュール２  ４０３のスレーブインターフェースと接続されている。さらにリングブリッジ４１０は、通信経路１０によってスレーブモジュール３  ４１１のスレーブインターフェースと接続されており、通信経路１３によりスレーブモジュール５  ４１３のマスタインターフェースと接続されている。
【００７５】
通信経路１１はスレーブモジュール３  ４１１のマスタインターフェースとスレーブモジュール４  ４１２のスレーブインターフェース、通信経路１２はスレーブモジュール４  ４１２のマスタインターフェースとスレーブモジュール５  ４１３のスレーブインターフェースを接続している。
【００７６】
通信経路０→通信経路１→通信経路２→通信経路３で構成されるリングは第一のレジスタアクセスリング１１１であり、通信経路１０→通信経路１１→通信経路１２→通信経路１３で構成されるリングは第二のレジスタアクセスリング１２１である。
【００７７】
第二のレジスタアクセスリング１２１内の通信経路の信号は通信経路０〜３と同等であり、それぞれの通信経路での信号名は、以下のようになる。
【００７８】
通信経路１０の信号
tsp10, rsp10, tbsyp10, uaddr_midp10[5:0], laddr_datap10[15:0], rd_not_wr10, errorp10, srdyp10
通信経路１1の信号
tsp11, rsp11, tbsyp11, uaddr_midp11[5:0], laddr_datap11[15:0], rd_not_wr11, errorp11, srdyp11
通信経路１2の信号
tsp12, rsp12, tbsyp12, uaddr_midp12[5:0], laddr_datap12[15:0], rd_not_wr12, errorp12, srdyp12
通信経路１3の信号
tsp13, rsp13, tbsyp13, uaddr_midp13[5:0], laddr_datap13[15:0], rd_not_wr13, errorp13, srdyp13
各スレーブモジュールに割り当てられているアドレスを以下の通りとする。
【００７９】
割り当てられているアドレス
スレーブモジュール０  ４０１    ０ｘ００１０００  〜  ０ｘ００１ＦＦＦ
スレーブモジュール２  ４０３    ０ｘ００２０００  〜  ０ｘ００２ＦＦＦ
スレーブモジュール３  ４１１    ０ｘ０１１０００  〜  ０ｘ０１１ＦＦＦ
スレーブモジュール４  ４１２    ０ｘ０１２０００  〜  ０ｘ０１２ＦＦＦ
スレーブモジュール５  ４１３    ０ｘ０１３０００  〜  ０ｘ０１３ＦＦＦ
ここで、リングブリッジ４１０にはリングブリッジ４１０から分岐している第二のレジスタアクセスリング１２１に接続されているすべてのスレーブモジュールに割り当てられたアドレスを含み、かつ、他のスレーブモジュールに割り当てられたアドレスは含まないアドレスを割り当てておく必要がある。この場合、リングブリッジ４１０に割り当てられるアドレスは、０ｘ０１１０００  〜  ０ｘ０１３ＦＦＦ  を含む必要があり、実際には０ｘ０１００００  〜  ０ｘ０１ＦＦＦＦ  が割り当てられている。
【００８０】
リングブリッジ４１０はブリッジ機能をもっており、通信経路１からリングブリッジ４１０に割り当てられたアドレスに対するコマンドトランザクションを受け取った場合、それを第二のレジスタアクセスリングにフォワードする機能を持っている。
【００８１】
リングブリッジ４１０は、自分のアドレスにヒットしなかった場合、前述したスレーブモジュールと同様の振る舞いをし、通信経路２にコマンドトランザクションをフォワードする。
【００８２】
以下にリングブリッジ４１０のブリッジ機能について詳細に説明を行なう。
【００８３】
リングブリッジ４１０は通信経路１からコマンドトランザクションを受け取ると、直ちにそれをそのまま通信経路２へフォワードする。言うまでもなく、フォワードするためにはスレーブモジュール２  ４０３がトランザクションを受け取る準備ができていて、srdyp2がアサートされていることが必要である。リングブリッジ４１０内にはコマンドを一時保存しておくコマンドバッファ４２０が存在しており、通信経路２へフォワードすると同時にコマンドバッファ４２０にも保存する。
【００８４】
リングブリッジ４１０は、srdyp1をディアサートして次のトランザクションの受信を防いでいる間に、アドレスのデコードを行い、自分に対するアクセスでなければ、srdyp1をアサートして次のトランザクションを受け付ければよい。
【００８５】
このように、第一のレジスタアクセスリング１１１内のスレーブモジュールにアクセスする限りは、第二のレジスタアクセスリング１２１内のスレーブモジュールの数などに関係なく、第一のレジスタアクセスリング１１１内のモジュールの数によって通信速度が決まるので、高速な通信が可能である。
【００８６】
また、デコードの結果、自分に対するアクセスであった場合は、srdyp0をディアサートしたまま、通信経路１０にコマンドバッファに４２０保存していたコマンドトランザクションをフォワードする。こうして通信経路１０にフォワードされたコマンドトランザクションは第一のレジスタアクセスリング１１１を流れる時と同様に第二のレジスタアクセスリング１２１を流れていく。
【００８７】
コマンドトランザクションは第二のレジスタアクセスリング１２１を一周してリングブリッジ４１０に戻ってくる。これをコマンドバッファ４２０に保存し、リターントランザクションを待つ。コマンドトランザクションがスレーブモジュール４  ４１２に対するものだったとすると、スレーブモジュール４  ４１２はコマンドの処理が完了後、通信経路１２に対してリターントランザクションを発行する。これはスレーブモジュール５  ４１３、通信経路１３を経由してリングブリッジ４１０に到達する。リングブリッジ４１０はリターントランザクションを受け取ると、それを第一のレジスタアクセスリング１１１の通信経路２にフォワードし、srdyp0をアサートして、通信経路１からの次のトランザクションを待つ。
【００８８】
リングブリッジ４１０はタイムアウトカウンタ４２１を内蔵しており、コマンドトランザクションを通信経路１３から受け取ってからカウントを行ない、ある一定時間の間にリターントランザクションを受信しなかった場合にはエラーと判断し、コマンドバッファ４２０に保存しておいたコマンドトランザクションを元にリターントランザクションを作成し、通信経路２に対して発行する。このときerrorp2をtbsyp2と同じタイミングでアサートする。これにより、第二のレジスタアクセスリング１２１内で、コマンドトランザクションに反応するスレーブモジュールがなかった場合のエラーを検出することができる。
【００８９】
また、第二のレジスタアクセスリング１２１内で、コマンドトランザクションに反応するスレーブモジュールが２つ存在した場合は、先にリングブリッジ４１０に到達したリターントランザクションにより、リングブリッジ４１０は正常時と同様にリターンパケットを通信経路２に発行してしまう。その後、通信経路１３からさらにリターントランザクションを受け取ると、そのリターントランザクションをerrorp2をアサートしながら通信経路２にフォワードする。
【００９０】
コマンドトランザクションに対するリターントランザクションの順番をインオーダーに保つためには、リングブリッジ４１０は、第二のレジスタアクセスリング１２１にコマンドトランザクションを発行してから、それに対するリターントランザクションが戻ってくるまでは通信経路１からのトランザクションを受け取ってはならず、結果、第二のレジスタアクセスリング１２１には常にひとつのコマンドトランザクションしか存在しないことになる。
【００９１】
本実施例では、第二のレジスタアクセスリング１２１内のスレーブモジュールを第一のレジスタアクセスリング１１１内のスレーブモジュールと同一のものとし、トランザクションのプロトコルも同一としたが、実際は第二のレジスタアクセスリング１２１内のスレーブモジュールは常にトランザクションを受け取れる状態にあるため、srdyp信号は必要ない。
【００９２】
よって第二のレジスタアクセスリング１２１では、srdyp信号を省くことも可能である。
【００９３】
本発明が特定の実施例に関して図示されかつ説明されたが、さらに他の修正および改善が可能であろう。例えば、ここに述べた通信経路の信号は、他の名称を持つが同じ基本的な機能を果すものとすることができる。各信号のビット幅、および他の値は設計に応じて変えることができる。任意の数のスレーブモジュールをリングに接続することができる。
【００９４】
また、エラーの発生がない設計を行なえば、エラー信号を省くことができる。
【００９５】
各モジュールを接続するデータ転送用のシステムバスは1つのバスで各モジュールを接続している必要はなく、間にバスブリッジを介して階層化されていてもよく、また、個別のバスで分離されて接続されていてもよい。さらには、接続の形態として、マルチプレックスバス、スター接続、などどのような形状で接続されていてもかまわない。
【００９６】
また、システム内にマスタが1つしか存在しないような場合、本発明のリング接続をレジスタアクセス用に限らず、システムバスの代わりとしてすべての通信に利用することも可能である。
さらに、本実施例では信号線数の削減のためにアドレス、データがマルチプレックスされているが、マルチプレックスの段数は任意の段数にしてもよい。たとえば、信号線を１本にし、シリアル通信のようにアドレス、データを送ることもできる。逆に、すべての信号線を用意すればマルチプレックスを行なう必要はなくなる。この場合、トランザクションは１サイクルで終了することになり、高速化が実現できる。
【００９７】
また、図４に示すように二つ以上の従属されたレジスタアクセスリングが存在するシステム構成や、リングの階層が多段になる構成も容易に考えられる。
【００９８】
したがって、本発明は示された特定の形式に限定されるものではなく、かつ添付の特許請求の範囲において本発明の精神および範囲から離れることのない全ての修正をカバーすることを考えていることが理解されるべきである。
【図面の簡単な説明】
【００９９】
【図１】本発明の実施の形態の構成を示すブロック図。
【図２】図１のシステムから第一のレジスタアクセスリングの部分を抽出した図。
【図３】図１のシステムから第一のレジスタアクセスリングと第二のレジスタアクセスリングの部分を抽出した図。
【図４】第一のレジスタアクセスリングに第二と第三の二つのレジスタアクセスリングが従属している場合の図。
【図５】コマンドトランザクションのシーケンス。
【図６】マスタモジュールから発行されたライトコマンドトランザクションを、通信経路０から受けたスレーブモジュール１が、ライトコマンドトランザクションを通信経路１にフォワードし、リターントランザクションを通信経路１に発行する際のシーケンス。
【図７】マスタモジュールから発行されたリードコマンドトランザクションを、通信経路０から受けたスレーブモジュール１が、リードコマンドトランザクションを通信経路１にフォワードし、リターントランザクションを通信経路１に発行する際のシーケンス。
【符号の説明】
【０１００】
１００  CPU
１０１  システムバスブリッジ
１０２  レジスタアクセスされる対象であるスレーブモジュール０
１０４  レジスタアクセスされる対象であるスレーブモジュール２
１０５  メモリコントローラ
１０６  システムメモリ
１１０  LSI内の各モジュールを接続するシステムバス
１１１  各モジュールをリング状に接続する第一のレジスタアクセスリング
１２０  リングブリッジ
１２１  各モジュールをリング状に接続する第二のレジスタアクセスリング
１２２  レジスタアクセスされる対象であるスレーブモジュール３
１２３  レジスタアクセスされる対象であるスレーブモジュール４
１２４  レジスタアクセスされる対象であるスレーブモジュール５
４００  第一のレジスタアクセスリングのマスタとなるマスタモジュール
４０１  第一のレジスタアクセスリングのスレーブとなるスレーブモジュール０
４０２  第一のレジスタアクセスリングのスレーブとなるスレーブモジュール１
４０３  第一のレジスタアクセスリングのスレーブとなるスレーブモジュール２
４１０  リングブリッジ
４１１  第二のレジスタアクセスリングのスレーブとなるスレーブモジュール３
４１２  第二のレジスタアクセスリングのスレーブとなるスレーブモジュール４
４１３  第二のレジスタアクセスリングのスレーブとなるスレーブモジュール５
【図１】
2006107022.tif 000003
【図２】
2006107022.tif 000004
【図３】
2006107022.tif 000005
【図４】
2006107022.tif 000006
【図５】
2006107022.tif 000007
【図６】
2006107022.tif 000008
【図７】
2006107022.tif 000009