(57)【特許請求の範囲】
【請求項１】
データ処理装置のためのインターコネクト回路機構であって、前記インターコネクト回路機構は、少なくとも１つのイニシエータデバイスが、少なくとも１つの受信デバイスにアクセスする際に経由することができる、データルートを提供するように構成され、前記インターコネクト回路機構（１０）は、
前記少なくとも１つのイニシエータデバイスからトランザクション要求を受信するための、少なくとも１つの入力（２０、２２、２４、２６）と、
前記少なくとも１つの受信デバイスにトランザクション要求を出力するための、少なくとも１つの出力（３０、３２、３４、３６）と、
前記少なくとも１つの入力と前記少なくとも１つの出力との間で前記トランザクション要求を送信するための、少なくとも１つの経路と、
前記受信されたトランザクション要求を、前記少なくとも１つの入力から前記少なくとも１つの出力へルーティングするための制御回路機構（７０、７６）と、を含み、
前記制御回路機構が、バリアトランザクション要求に応答して、前記少なくとも１つの経路のうちの１つに沿って通過するトランザクション要求のストリーム内部の前記バリアトランザクション要求に対しての、少なくとも一部のトランザクション要求の順序付けを、トランザクション要求の前記ストリーム内の前記バリアトランザクション要求の後に発生する少なくとも一部の前記トランザクション要求に対しての、トランザクション要求の前記ストリーム内の前記バリアトランザクション要求の前に発生する少なくとも一部の前記トランザクション要求の順序変更を許可しないことによって、維持するように構成され、
前記制御回路機構が、応答信号生成器（８０、８２）を含み、前記応答信号生成器が、少なくとも一部の前記バリアトランザクション要求の受信に応答して、応答信号を発行し、前記応答信号が、前記バリアトランザクション要求に応答して遅延されたいずれかのトランザクション要求が更に先へ送信され得ることを、上流のブロッキング回路機構に指示する、インターコネクト回路機構。
【請求項２】
前記制御回路機構が、少なくとも一部の前記バリアトランザクション要求に応答して、トランザクション要求の前記ストリーム内の前記バリアトランザクション要求の後に続いて発生する前記少なくとも一部のトランザクション要求の送信を、前記バリアトランザクション要求を解放する前記応答信号の受信まで遅延させることによって、前記順序付けを維持するように構成される、ブロッキング回路機構を更に含む、
請求項１に記載のインターコネクト回路機構。
【請求項３】
前記ブロッキング回路機構が、前記バリアトランザクション要求の受信に応答して、前記バリアトランザクション要求が送信される出口経路を、応答信号の受信まで、前記バリアトランザクション要求の後に続く前記少なくとも一部のトランザクション要求に対してブロックする、請求項１に記載のインターコネクト回路機構。
【請求項４】
前記応答信号生成器が、前記ブロッキング回路機構の直接上流に配置される、請求項２または請求項３のいずれか一項に記載のインターコネクト回路機構。
【請求項５】
前記応答信号生成器が、前記インターコネクト内部の直列化の地点に配置され、前記直列化の地点を通過して同一のアドレスに至るトランザクション要求が、前記地点を越えて、順序変更することができず、前記応答信号生成器が、前記バリアトランザクション要求への前記応答信号を生成し、前記バリアトランザクション要求を更に先へ送信することがないように構成される、請求項１〜４のいずれか一項に記載のインターコネクト回路機構。
【請求項６】
前記インターコネクトが、前記少なくとも１つの入力と前記少なくとも１つの出力との間で前記トランザクション要求を送信するための、複数個の経路を含み、前記複数個の経路のうちの少なくとも一部が、ノードから分岐する分岐経路であり、前記制御回路機構が、前記少なくとも一部のトランザクション要求がルーティングされる前記分岐経路のうちの少なくとも一部に沿って、前記バリアトランザクション要求を複製して送信するように構成される、請求項１〜５のいずれか一項に記載のインターコネクト回路機構。
【請求項７】
前記制御回路機構が、前記分岐の地点に配置構成される、前記応答信号生成器およびブロッキング回路機構を含み、前記応答信号生成器が、前記受信したバリアトランザクション要求への応答を送り、前記ブロッキング回路機構が、前記複製バリアトランザクション要求のうちの少なくとも全てから１つを除いたものに応答する、応答信号の受信の後まで、前記少なくとも一部の前記分岐経路に沿った、前記バリアトランザクション要求の後に続く前記少なくとも一部のトランザクションの送信を遅延させるように構成される、請求項６に記載のインターコネクト回路機構。
【請求項８】
前記制御回路機構が、前記バリアトランザクション要求の後に続く、前記少なくとも一部のトランザクションを、全ての前記複製バリアトランザクション要求に応答する応答信号の受信に応答して、更に先へ送信するように構成される、請求項７に記載のインターコネクト回路機構。
【請求項９】
前記制御回路機構が、前記応答信号のうちの１つを除く全ての受信に応答して、いずれの応答も受信されていない前記１つの分岐経路に沿ってルーティングされる前記少なくとも一部のトランザクションを、更に先へ送信するように構成される、請求項７に記載のインターコネクト回路機構。
【請求項１０】
前記１つの分岐経路に沿ってルーティングされる前記少なくとも一部のトランザクションを更に先へ送る前に、前記バリアトランザクション要求の表示が、前記１つの分岐経路に沿って送られる、請求項９に記載のインターコネクト回路機構。
【請求項１１】
前記制御回路機構が、更なる分岐の地点での、前記バリアトランザクション要求の前記表示の受信に応答して、全ての前記分岐経路に沿ってバリアトランザクション要求を送信し、前記バリアトランザクション要求の前記表示の後に続く前記トランザクションの、前記分岐経路に沿った更に先への送信を、前記バリアトランザクション要求への応答が、前記分岐経路のうちの１つを除く全てから受信されるまで遅延させ、前記１つの分岐経路に沿って前記バリアトランザクション要求の前記表示を送信して、前記１つの分岐経路に沿って後続のトランザクションが送信されることを可能にする、請求項１０に記載のインターコネクト回路機構。
【請求項１２】
前記複数個の経路が、前記インターコネクト回路機構内部の２つのノード間の唯一の通信経路を含む、少なくとも１つの２分割経路を含み、前記２つのノードが、前記２分割経路への、入口ノードおよび出口ノードを含み、
前記応答信号生成器が、前記入口ノードに配置され、前記バリアトランザクション要求の受信に応答して、前記バリアトランザクション要求が受信された前記入口経路に沿って前記応答信号を送信し、
ブロッキング回路機構が、前記出口ノードに配置され、前記バリアトランザクション要求の受信に応答して、前記バリアトランザクション要求が送信される全ての経路に沿った、前記バリアトランザクション要求の後に続く前記少なくとも一部のトランザクション要求の送信を、全ての前記バリアトランザクション要求からの応答信号の受信まで、遅延させる、請求項６〜１１のいずれか一項に記載のインターコネクト回路機構。
【請求項１３】
前記インターコネクトが、前記少なくとも１つの入力と前記少なくとも１つの出力との間で前記トランザクション要求を送信するための、複数個の経路を含み、前記複数個の経路が、前記入口ノードと前記出口ノードとの間で並列式に走る、少なくとも２つの経路を含み、前記少なくとも２つの経路が、関連するトランザクションを搬送するように構成され、前記制御回路機構が、
前記バリアトランザクション要求が受信される前記入口経路に沿って送信するための前記応答信号を生成するための、前記入口ノードでの前記応答信号生成器と、
前記出口ノードに配置されるブロッキング回路機構と、を含み、前記ブロッキング回路機構が、前記少なくとも２つの経路のうちの１つからの前記バリアトランザクション要求の受信に応答して、前記出口経路に沿った、前記少なくとも２つの経路のうちの前記１つから受信された前記バリアトランザクション要求の後に続く前記少なくとも一部のトランザクションの送信を遅延させ、前記少なくとも２つの経路のうちの別の１つからの、前記バリアトランザクション要求に関連する前記トランザクションの受信に応答して、前記出口経路に沿って前記バリアトランザクション要求を送信する、請求項１２のいずれか一項に記載のインターコネクト回路機構。
【請求項１４】
前記複数個の経路が、読み出し信号を送信するための経路、および書き込み信号を送信するための経路を含む、請求項１３に記載のインターコネクト回路機構。
【請求項１５】
前記応答信号生成器が、読み出しまたは書き込みのみに関連するバリアトランザクション要求を受信することに応答して、前記バリアトランザクション要求を更に先へ送信する前に、前記バリアトランザクション要求を、読み出しおよび書き込みの双方に適用されるように修正する、請求項１３に記載のインターコネクト回路機構。
【請求項１６】
前記インターコネクト回路機構が、少なくとも１つのドメインを含み、前記少なくとも１つのドメインが、前記少なくとも１つのイニシエータデバイスからのトランザクション要求を受信するための前記少なくとも１つの入力のうちの、少なくとも１つを含み、ドメイン境界が、前記少なくとも１つの入力から受信されたトランザクション要求のいずれの併合も、前記少なくとも１つのドメインの内部で発生するように配置構成され、
前記バリアトランザクション要求が、前記少なくとも１つのドメインに前記バリアトランザクション要求が適用されるか否かを指示する指示子を含み、
前記制御回路機構が、前記少なくとも１つのドメインに前記バリアトランザクション要求が適用されることを指示する前記指示子を含み、前記少なくとも１つのドメインの外側にある、前記バリアトランザクション要求を検出することに応答して、前記バリアトランザクション要求が前記ドメインの外側にあることを指示する指示を提供する、請求項１〜１５のいずれか一項に記載のインターコネクト回路機構。
【請求項１７】
前記指示が、前記バリアトランザクション要求に適用され、前記バリアトランザクション要求が、現時点で、前記バリアトランザクション要求が適用される前記ドメインの外側にあることを指示する指示子を含む、請求項１６に記載のインターコネクト回路機構。
【請求項１８】
前記指示が、前記バリアトランザクション要求が受信された入口経路に沿って、前記応答信号生成器によって発行される、応答信号を含む、請求項１６に記載のインターコネクト回路機構。
【請求項１９】
前記インターコネクト回路機構が、複数個のドメインを含み、前記複数個のドメインのそれぞれが、前記少なくとも１つのイニシエータデバイスからのトランザクション要求を受信するための前記少なくとも１つの入力のうちの、少なくとも１つを含み、ドメイン境界が、前記ドメインのうちの１つの内部の前記少なくとも１つの入力から受信されたトランザクション要求のいずれの併合も、前記ドメインのうちの前記１つの内部で発生するように配置構成される、請求項１６〜１８のいずれか一項に記載のインターコネクト回路機構。
【請求項２０】
前記複数個のドメインのうちの少なくとも１つは、より大きいドメインのサブセットであり、各入力に関するドメインの階層が存在することにより、１つの入力が、低い階層のドメインのメンバーである場合には、前記入力はまた、高い階層のドメインのメンバーでもあり、トランザクションは、前記高い階層の前記ドメインから出ると同時に、または出る前に、前記低い階層の前記ドメインから出る、請求項１９に記載のインターコネクト回路機構。
【請求項２１】
前記ドメインが、前記入力のうちの１つのみを含む共用不可能ドメインと、前記入力の全てを含むシステムドメインと、少なくとも１つの更なるタイプの共用可能ドメインとを含み、共用不可能ドメイン内部の入力がまた、前記入力に関する前記少なくとも１つのタイプの共用可能ドメインの内部にあり、前記少なくとも１つのタイプの共用可能ドメイン内部の入力もまた、前記入力に関する前記システムドメインの内部にあるように、各入力に関して、ドメインの階層が存在する、請求項２０に記載のインターコネクト回路機構。
【請求項２２】
前記ドメインが、いずれのドメイン境界も、別のドメイン境界に交差することなく、各ドメインからの出口経路が２分割経路を含むように、配置構成され、前記制御回路機構が、前記ドメインのうちの１つから出る前記バリアトランザクション要求を検出すると、ドメイン指示子を修正することにより、前記ドメイン指示子が、より低い階層のドメインを指示するように構成され、前記ドメイン指示子が、最低の階層のドメインを指示して、前記指示されたドメインを前記バリアトランザクション要求が出たことを指示する、請求項２０または請求項２１に記載のインターコネクト回路機構。
【請求項２３】
前記インターコネクトが、ドメイン依存挙動を提供するように構成される、少なくとも１つの構成要素を含み、前記インターコネクト回路機構が、前記少なくとも１つの構成要素が内部に配置される少なくとも１つのドメインを指示するマークで、前記少なくとも１つの構成要素をマーク付けすることにより、前記ドメイン依存挙動が、前記マークによって指示される前記少なくとも１つのドメインに応じて判定されるように、構成される、請求項２０または請求項２１に記載のインターコネクト回路機構。
【請求項２４】
ドメイン依存挙動を提供するように構成される、前記少なくとも１つの構成要素が、少なくとも２つのドメインの内部に配置され、前記インターコネクト回路機構が、少なくとも１つの構成要素にマーク付けをすることにより、前記少なくとも１つの構成要素が内部にある、最も制約的なバリア挙動を提供する前記ドメインに応じて、前記ドメイン依存挙動が判定されるように、構成される、請求項２３に記載のインターコネクト回路機構。
【請求項２５】
前記少なくとも１つの構成要素が、前記応答信号生成器を含み、前記応答信号生成器が、前記バリアトランザクション要求が、ドメイン指示子によって指示されるドメインの内部にあるか否かを、前記マークから判定される前記ドメイン指示子と比較することによって判定し、内部にない場合には、前記応答信号生成器が、前記バリアトランザクション要求への応答信号を発行する、請求項２３または請求項２４に記載のインターコネクト回路機構。
【請求項２６】
前記インターコネクトが、前記少なくとも１つの入力と前記少なくとも１つの出力との間で前記トランザクション要求を送信するための複数個の経路を含み、前記複数個の経路のうちの少なくとも一部が、ノードから分岐する分岐経路であり、前記制御回路機構が、前記複数個の経路のうちの少なくとも一部が再収束する場所を判定して、前記経路が分岐する前のノードでの前記バリアトランザクション要求の後に続く前記少なくとも一部のトランザクション要求を遅延させ、全ての前記再収束経路からの応答信号の受信に応答して、前記遅延された少なくとも一部のトランザクション要求を送信するように構成される、請求項１〜２５のいずれか一項に記載のインターコネクト回路機構。
【請求項２７】
前記応答信号生成器が、バリアトランザクション要求に関する応答信号の受信、更なるバリアトランザクション要求の受信、および前記バリアトランザクション要求と前記更なるバリアトランザクション要求との間に、前記バリアトランザクション要求に従属するいずれの介在トランザクションも受信されていないことに応答して、
前記バリアトランザクション要求および前記更なるバリアトランザクション要求の双方に関する応答信号を送信し、
前記更なるバリアトランザクション要求を取り消して、更に先へは送信しない、請求項１〜２６のいずれか一項に記載のインターコネクト回路機構。
【請求項２８】
前記制御回路機構が、バリアトランザクション要求を投機的に生成することにより、前記生成されたバリアトランザクション要求に関する応答信号の受信、更なるバリアトランザクション要求の受信、および前記バリアトランザクション要求の間に、いずれの介在トランザクションも受信されていないことに応答して、前記更なるバリアトランザクション要求を取り消すことができるように、構成される、請求項２７に記載のインターコネクト回路機構。
【請求項２９】
前記制御回路機構が、ある場所が低電力モードに入るべきであることを指示するスリープ信号に応答して、バリアトランザクション要求を生成し、前記バリアトランザクション要求を送り、少なくとも、前記応答信号が、前記場所に接続する２分割経路への入口ノードで受信されるまで、前記場所を、前記低電力モードに入ることから遅延させる、請求項２７に記載のインターコネクト回路機構。
【請求項３０】
前記場所が、前記少なくとも１つの受信デバイスのうちの１つを含み、前記少なくとも１つの受信デバイスのうちの前記１つが、周辺機器を含む、請求項２９に記載のインターコネクト回路機構。
【請求項３１】
前記制御回路機構が、前記少なくとも１つの周辺機器へと送信されているバリアトランザクション要求の検出に応答して、電力コントローラへの要求信号を生成し、前記少なくとも１つの周辺機器が低電力スリープモードに入るべきであることを要求する、請求項３０に記載のインターコネクト回路機構。
【請求項３２】
前記制御回路機構が、既定の時間の間アイドル状態である、前記少なくとも１つの周辺機器を検出することに応答して、前記バリアトランザクション要求を生成し、前記少なくとも１つの周辺機器に、前記バリアトランザクション要求を送る、請求項３１に記載のインターコネクト回路機構。
【請求項３３】
前記制御回路機構が、前記バリアトランザクション要求に関しては、前記ストリーム内部の全てのトランザクション要求の順序付けを維持するように構成されている、請求項１〜３２のいずれか一項に記載のインターコネクト回路機構。
【請求項３４】
前記バリアトランザクション要求が、前記バリアが、同期バリアまたはメモリバリアのいずれであるかを指示する指示子を含み、前記インターコネクトが、前記同期バリアの前に発生する、全ての前記少なくとも一部のトランザクション要求の完了を検出することのみに応答して、前記同期バリアへの前記応答信号を生成する、請求項１〜３３のいずれか一項に記載のインターコネクト回路機構。
【請求項３５】
前記制御回路機構が、トランザクション要求の前記ストリーム内で、少なくとも１つの前記バリアトランザクション要求の後に発生する、前記少なくとも一部のトランザクション要求が、前記少なくとも１つの前記バリアトランザクション要求を追い越すことを許可せず、また、前記少なくとも１つの前記バリアトランザクション要求が、前記少なくとも１つの前記バリアトランザクション要求の前方に発生する、前記少なくとも一部のトランザクション要求を追い越すことを許可しないように構成され、前記応答信号生成器が、前記少なくとも１つのバリアトランザクション要求の受信に応答して、応答信号を生成しない、請求項１〜３４のいずれか一項に記載のインターコネクト回路機構。
【請求項３６】
前記少なくとも１つのバリアトランザクション要求が、非ブロッキングバリアトランザクション要求であることを指示する指示子を含む、請求項３５に記載のインターコネクト回路機構。
【請求項３７】
前記制御回路機構が、トランザクション要求の前記ストリーム内で、前記バリアトランザクション要求が、前記バリアトランザクション要求の前方で発生する、前記少なくとも一部のトランザクション要求を追い越すことを許可しないように、構成される、請求項１〜３６のいずれか一項に記載のインターコネクト回路機構。
【請求項３８】
少なくとも一部の前記バリアトランザクション要求が、前記バリアトランザクション要求の後に続く前記少なくとも一部のトランザクションが遅延されていることを指示する、ブロッキング指示子を含む、請求項３７に記載のインターコネクト回路機構。
【請求項３９】
前記バリアトランザクション要求が、メモリバリアの指示子を含み、前記制御回路機構が、再収束領域への入口での分岐ノードで、バリアトランザクション要求を複製し、前記複製バリアトランザクション要求に、前記ブロッキング指示子を提供して、少なくとも１つの前記複製バリアトランザクション要求からの応答の受信まで、後続のトランザクション要求をブロックするように構成される、請求項３８に記載のインターコネクト回路機構。
【請求項４０】
前記バリアトランザクション要求が、メモリバリアの指示子を含み、前記制御回路機構が、交差結合領域への入口での分岐ノードで、バリアトランザクション要求を複製し、前記複製バリアトランザクション要求に、前記ブロッキング指示子を提供して、前記交差結合領域を出る際の、少なくとも１つの前記複製バリアトランザクション要求からの応答の受信まで、後続のトランザクション要求をブロックするように構成され、前記制御回路機構が、前記交差結合領域を出る際の前記複製バリアトランザクション要求から、前記ブロッキング指示子を削除するように更に構成される、請求項３８に記載のインターコネクト回路機構。
【請求項４１】
前記制御回路機構が、メモリバリア指示子を含み、かつブロッキング指示子を含まない、前記バリアトランザクション要求に応答して、前記バリアトランザクション要求からのいずれの応答も必要とすることなく、前記後続のトランザクションを更に先へ送信する、請求項３８〜４０のいずれか一項に記載のインターコネクト回路機構。
【請求項４２】
インターコネクトを介して、受信デバイスにトランザクション要求を発行するための、イニシエータデバイス（２０、２２、２４、２６、Ｐ０）であって、
前記インターコネクトを通過するトランザクション要求のストリーム内部の少なくとも一部のトランザクション要求の順序付けを、トランザクション要求の前記ストリーム内のバリアトランザクション要求の前に発生する少なくとも一部の前記トランザクション要求の、前記バリアトランザクション要求の後に発生する少なくとも一部の前記トランザクション要求に対する順序変更を許可しないことによって、維持するべきであることを、前記インターコネクトに指示する前記バリアトランザクション要求を生成するための、バリアトランザクション要求生成器（１３０）を含み、
前記バリアトランザクション要求生成器（１３０）が、前記生成されるバリアトランザクション要求に、ブロッキング指示子または非ブロッキング指示子を提供するように構成され、
前記イニシエータデバイスは、
前記ブロッキング指示子を有する前記バリアトランザクション要求を生成する、前記バリアトランザクション要求生成器に応答して、前記イニシエータデバイスが前記ブロッキングバリアトランザクション要求への応答を受信するまで、前記バリアトランザクション要求の後に発生する前記少なくとも一部のトランザクション要求を、前記インターコネクトに発行せず、
前記非ブロッキング指示子を有する前記バリアトランザクション要求を生成する、前記バリアトランザクション要求生成器に応答して、前記バリアトランザクション要求の後に発生する前記少なくとも一部のトランザクション要求を、前記インターコネクトに発行するように、構成される、イニシエータデバイス。
【請求項４３】
請求項４２によるイニシエータデバイスと、請求項３６および請求項３７に従属する請求項３８によるインターコネクト回路機構と、前記インターコネクトからのトランザクション要求を受信するための受信デバイス（３０）とを含む、データ処理装置であって、
前記受信デバイスは、応答信号生成器を含み、前記応答信号生成器（３４）が、ブロッキング指示子を含むバリアトランザクション要求を受信することに応答して、前記バリアトランザクション要求への応答を送り、非ブロッキング指示子を含むバリアトランザクション要求を受信することに応答して、前記バリアトランザクション要求を破棄し、応答を送らないように構成される、
データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。より詳細には、本発明は、データ処理装置のためのインターコネクト回路機構に関し、このインターコネクト回路機構は、マスターなどの１つ以上のイニシエータデバイスが、スレーブなどの１つ以上の受信デバイスにアクセスする際に経由することができる、データルートを提供する。
【背景技術】
【０００２】
インターコネクトはデータ処理システム内の種々の構成要素間に接続を提供するため使用される。インターコネクトは、１つ以上のイニシエータデバイスが、１つ以上の受信デバイスにアクセスする際に経由することができる、データルートを提供する。イニシエータデバイスは、単にトランザクション要求を生成するデバイスであり、それゆえ、プロセッサなどのマスターであってもよく、または、別のインターコネクトであってもよい。受信デバイスは、単にトランザクションを受信するデバイスであり、周辺機器などのスレーブであってもよく、または、同様に別のインターコネクトであってもよい
【０００３】
システムが、より複雑になり、複数のプロセッサが、互いに、および複数のデバイスと通信するようになるにつれて、マルチプロセッサシステムに関するソフトウェアを書く著作者は、相互作用プロセスの一貫した挙動を長時間にわたって確保するソフトウェアを書くために、アーキテクチャーのトポロジーおよびレイテンシの、詳細な知識を必要とする。この詳細な知識を用いても、この一貫性は、実行するための多大な努力およびコストを伴う場合にのみ実現される。
米国特許公開公報２００８／３０１，３４２号は、フェンス若しくはメモリバリア操作の使用が開示されており、何らかの続くトランザクションがインターコネクトに対して発行される前に、すべての係属しているトランザクションが完全になるように、順序付けされたトランザクションを強制する。順序付けは、バリア（ＡＤＢ）に対する応答を受信するまでは、何らかの更なるトランザクションを発行しないマスターによってなされる。
【０００４】
プログラマーが、任意のアーキテクチャーに関して、一般的な方式で、相互作用プロセスの一貫した挙動を長時間にわたって確保することを可能にする、メカニズムを提供することが望まれる。
【発明の概要】
【０００５】
本発明の第１の態様は、データ処理装置のためのインターコネクト回路機構を提供し、このインターコネクト回路機構は、少なくとも１つのイニシエータデバイスが、少なくとも１つの受信デバイスにアクセスする際に経由することができる、データルートを提供するように構成され、このインターコネクト回路機構は、少なくとも１つのイニシエータデバイスからトランザクション要求を受信するための、少なくとも１つの入力と、少なくとも１つの受信デバイスにトランザクション要求を出力するための、少なくとも１つの出力と、少なくとも１つの入力と少なくとも１つの出力との間でトランザクション要求を送信するための、少なくとも１つの経路と、受信されたトランザクション要求を、少なくとも１つの入力から少なくとも１つの出力へルーティングするための制御回路機構とを含み、この制御回路機構が、バリアトランザクション要求に応答して、少なくとも１つの経路のうちの１つに沿って通過するトランザクション要求のストリーム内部のバリアトランザクション要求に対しての、少なくとも一部のトランザクション要求の順序付けを、トランザクション要求のストリーム内のバリアトランザクション要求の後に発生する少なくとも一部のトランザクション要求に対しての、トランザクション要求のストリーム内のバリアトランザクション要求の前に発生する少なくとも一部のトランザクション要求の順序変更を許可しないことによって、維持するように構成され、この制御回路機構が、応答信号生成器を含み、この応答信号生成器は、バリアトランザクション要求の受信に応答して、応答信号を発行し、この応答信号は、バリアトランザクション要求に応答して遅延されたいずれかのトランザクション要求が更に先へ送信され得ることを、上流のブロッキング回路機構に指示する。
【０００６】
システムが、複数のプロセッサおよび複数の周辺機器を備えて、より複雑になるため、プログラムが実行されるシステムのアーキテクチャーの詳細な知識がなければ、プログラマーにとっては、要求されるトランザクションの相対的順序付けを保持することは困難である。バリアトランザクションに応答するインターコネクト回路機構を提供することにより、ソフトウェア著作者には、彼らがソフトウェアを書いているシステムのアーキテクチャーおよびトポロジーとは無関係な、挙動の一貫性を確保する方法がもたらされる。
【０００７】
具体的には、バリアトランザクション要求に応答して、そのバリアに対しての、少なくとも一部の要求の順序付けを維持するように構成される制御回路機構を、インターコネクトに提供することは、著作者が、データの生成側と消費側との間の論理関係のみを知り、それらが動作しているシステムのトポロジーおよびレイテンシを知らない場合に、システム上で動作し得るソフトウェアを書くことができることを意味する。このようにして、インターコネクト回路機構は、プログラマーが、アーキテクチャーに関わりなく、トランザクションの相対的順序付けを保持することを可能にする。
【０００８】
インターコネクトを通過して送られるトランザクションの順序付けを制御するために、バリアトランザクションの後に発生するべき全てのトランザクションを、それらの後のトランザクションが後方に留まる必要がある先行のトランザクションが完了していることを指示する、応答信号が受信されるまで、遅延させることが可能である。しかしながら、このことにより、著しい遅延がもたらされる場合がある。このようにしてブロックしているバリアへの早期応答を送る能力を提供することによって、このことに対処することができる。このことにより、遅延されたトランザクションは、進行することが可能になる。そのような信号は、特定の状況で安全に送ることができ、このことは以下で詳細に説明する。
【０００９】
多くの実施形態では、応答信号は、バリアトランザクション要求が受信された入口経路に沿って送られるが、一部の実施形態では、応答経路は、異なる経路であってもよい。生成される応答信号が、後続のトランザクションを更に先へ送信することができるという指示を、上流のブロッキング回路機構に提供することができるのであれば、実際に辿られる経路は重要ではない。
【００１０】
バリアトランザクションは、そのバリアトランザクションが制御するトランザクションが、バリアトランザクションに対して順序変更されてはならないという特性を有する、トランザクションである。それゆえ、バリアトランザクションは、トランザクション要求のストリーム内に挿入され、そのバリアトランザクションが制御するトランザクションの順序を維持することにより、一部のトランザクションが他のトランザクションの前に実行されることを防止することができる。バリアを有さない場合には、著作者は、システム内のエージェントのアーキテクチャー上の関係の詳細な知識を有さなければならないが、バリアを有する場合には、著作者は、データの生成側と消費側との間の論理関係を知ることのみが必要である。これらの関係は、ソフトウェアが、異なるアーキテクチャー上で実行される場合に、変化しないため、バリアの使用により、著作者は、全てのプラットフォーム上で一貫して作動するソフトウェアを作り出すことが可能になる。
【００１１】
実際に、バリアによって、ハードウェアの設計とソフトウェアの設計とを切り離すことが可能になるため、サードパーティーのソフトウェアの展開をより容易にさせる。
【００１２】
イニシエータデバイスは、インターコネクトの上流にあり、トランザクション要求を供給する、任意のデバイスであることに留意されたい。それゆえ、イニシエータデバイスは、例えば、別のインターコネクトであってもよく、またはマスターであってもよい。同様に受信デバイスは、トランザクション要求を受信する、インターコネクトの下流のデバイスであるため、例えば、スレーブであってもよく、または別のインターコネクトであってもよい。
【００１３】
一部の実施形態では、制御回路機構は、少なくとも一部のバリアトランザクション要求に応答して、トランザクション要求のストリーム内のバリアトランザクション要求の後に続いて発生する少なくとも一部のトランザクション要求の送信を、そのバリアトランザクションを解放する応答信号の受信まで遅延させることによって、順序付けを維持するように構成される、ブロッキング回路機構を更に含む。
【００１４】
一部の実施形態では、このブロッキング回路機構は、バリアトランザクションの受信に応答して、そのバリアトランザクションが送信される経路を、応答信号の受信まで、バリアトランザクションの後に続く少なくとも一部のトランザクション要求に対してブロックする。
【００１５】
ブロッキング回路機構は、バリアが送出された経路を、その経路が解放されていることを指示する応答信号の受信まで、ブロックすることによって、順序付けを保持することができる。幾つかの経路が存在する場合には、バリアを複製して、それぞれに、または少なくともサブセットに送り出すことができ、全てからの応答、または１つを除く全てからの応答が、ブロッキングを停止させることを可能にするために必要とすることができ、このことは、より詳細に後に説明する。
【００１６】
一部の実施形態では、応答信号生成器は、ブロッキング回路機構の直接上流に配置される。
【００１７】
応答信号生成器およびブロッキング回路機構は、互いに隣接して配置構成することにより、バリアがこれらのユニットに到達すると、経路を解放することができるため、上流でストールしたトランザクションを、更に先へ送ることができ、その出口経路はブロックされる。
【００１８】
一部の実施形態では、応答信号生成器は、インターコネクト内部の直列化の地点に配置され、この直列化の地点を通過して同一の場所にアクセスするトランザクション要求は、この地点を越えて、順序変更することができず、応答信号生成器は、バリアトランザクション要求への応答信号を生成し、バリアトランザクション要求を更に先へ送信することがないように構成される。
【００１９】
インターコネクトが、その場所を越えて同一の場所にアクセスするトランザクション要求を順序変更することができない、１つ以上の直列化の地点を含む場合には、バリアへの応答を送ることができ、早期のブロッキングを解放して、トランザクションをバリアに続けて更に先へ送信することができる。そのような地点でのインターコネクトの特性を認識し、バリアによって引き起こされるいずれのブロック状態も解放する方法を提供することによって、インターコネクトは、必要な場合にトランザクションをブロックし、一旦、順序変更の潜在的リスクがもはや存在しなくなると、それらのトランザクションを継続することを可能にする。
【００２０】
一部の実施形態では、インターコネクトは、少なくとも１つの入力と少なくとも１つの出力との間でトランザクション要求を送信するための、複数個の経路を含み、複数個の経路のうちの少なくとも一部は、ノードから分岐する分岐経路であり、制御回路機構は、トランザクション要求がルーティングされる分岐経路のうちの少なくとも一部に沿って、バリアトランザクション要求を複製して送信するように構成される。
【００２１】
トランザクションが分岐経路に送出される場合、バリアトランザクションが正しく機能するためには、そのバリアトランザクションを、少なくとも一部の出口経路上に複製するべきである。このことにより、各経路上のバリアトランザクションに対しての、関連するトランザクションの順序付けを維持することが可能になる。バリアトランザクションが複製されない場合には、バリアの後方からのトランザクションおよびバリアの前方からのトランザクションの場所が入れ替わることにより、後のトランザクションが最初に出口地点に到達する可能性があり、このことは、プログラムに誤りを生じさせる恐れがある、それゆえ、一部の実施形態では、全ての出口経路が、複製バリアトランザクションを、それらの経路に沿って送らせるが、一方で他の実施形態では、それは経路のサブセットであり、そのサブセットは、バリアによって制御されるトランザクション自体が送出される経路である。
【００２２】
一部の実施形態では、制御回路機構は、この分岐の地点に配置構成される、応答信号生成器およびブロッキング回路機構を含み、応答信号生成器は、受信したバリアトランザクションへの応答を送り、ブロッキング回路機構は、複製バリアトランザクションのうちの少なくとも１つを除く全てに応答する、応答信号の受信の後まで、少なくとも一部の分岐経路に沿った、バリアトランザクションの後に続く少なくとも一部のトランザクションの送信を遅延させるように構成される。
【００２３】
一部の実施形態では、制御回路機構は、バリアトランザクションの後に続く、そのバリアトランザクションによって制御されるトランザクションを、全ての複製バリアトランザクションが受信されていることに応答する応答信号に応答して、更に先へ送信するように構成される。
【００２４】
一旦、全ての複製バリアへの応答が受信されると、全ての経路は、後続のトランザクションを送出するために安全であることにより、それらの後続のトランザクションを更に先へ送ることができる。
【００２５】
他の実施形態では、応答信号のうちの１つを除く全てが、応答が未だ受信されていない分岐経路に沿ってルーティングされる、遅延された後続のトランザクションの一部の送信を始動させる。応答信号のうちの１つを除く全てが一旦受信されると、応答信号が受信されていない出口経路は、先行のトランザクションが恐らくは依然として保留中である、唯一の経路であり、それゆえ、後続のトランザクションがこの経路に沿って送出される場合には、この経路が２分割経路のように機能し、これらの後続のトランザクションは、先行のトランザクションを追い越すことができないため、この経路が、後続のトランザクションを送出するために実際に安全な、１つの経路であることが留意される。それゆえ、後続のトランザクションをこの経路に送出することができる一方で、他の経路は、最終の複製バリアからの応答信号が受信されるまで、ブロックされたままである。このことが極めて有利であるのは、この最終経路は、応答が受信されていない経路であるために、恐らくは最大のトラフィックを有する経路であり、それゆえ、その経路を早期にブロック解除することは、最大のトラフィック、またそれゆえ恐らくは最高のレイテンシを有する経路が、より早期に後続のトランザクションを送るようになることを意味し、それゆえ、システムの全体のレイテンシを低減することができるためである。応答信号が、この最終出口経路に沿って受信されると、全ての出口経路が解放され、後続のトランザクションを更に先へ送ることができる。
【００２６】
分岐の地点は、１つの交差結合領域を供給し得るか、または互いに独立した２つ以上の交差結合領域を供給し得ることに留意されたい。後者の場合には、各交差結合領域を個別に処理し得ることにより、一方の領域内への経路のうちの、１つを除く全てへの応答は、この領域がブロック解除されることを可能にするが、他方の領域に対しては影響を及ぼさない。
【００２７】
上記のスキームが有する潜在的な問題は、初期の分離点（これは、恐らくは交差結合領域への入口点である）での１つの経路のみが、応答を受信し得ず、それゆえ、この経路を２分割経路と見なして、後続のトランザクションを更に先へ送ることができる一方で、下流には、別の分離点が存在し得ることである。この地点では、幾つかの更なる経路が存在し、これらの経路は、もはや２分割ではないことにより、後続のトランザクションを更に先へ安全に送信することができない。それゆえ、この地点で、後続のトランザクションをブロックしなければならない。
【００２８】
この潜在的な問題に対処するために、一部の実施形態では、応答信号が受信されていない分岐経路に沿って、後続のトランザクションを送る前に、バリア表示が、この経路に沿って最初に送られる。
【００２９】
このバリア表示により、後続の回路機構は、このバリア表示の後に続くトランザクションが、バリアへの応答の前に送られていることを認識することが可能になり、それゆえ、ブロックが必要になる場合がある。
【００３０】
一部の実施形態では、制御回路機構は、分岐の地点での、バリアトランザクションの表示の受信に応答して、全ての分岐経路に沿ってバリアトランザクションを送信し、バリアトランザクションの表示の後に続くトランザクションの、分岐経路に沿った更に先への送信を、バリアトランザクションへの応答が、それらの経路のうちの１つを除く全てから受信されるまでブロックし、その１つの経路に沿ってバリアトランザクションの表示を送信して、後続のトランザクションが、その１つの経路に沿って送信されることを可能にする。
【００３１】
交差結合領域の内部に、更なる分岐の地点が存在する場合、制御回路機構は、バリアトランザクションの表示の受信に応答して、この分岐の地点から全ての分岐経路に沿って送信されるバリアトランザクションを生成し、バリアトランザクションの表示をストールさせて、それらの経路のうちの１つを除く全てからの応答の受信の後まで、後続のトランザクションをブロックする。１つを除く全ての応答が受信されると、その最終経路に沿ってバリアトランザクションの表示を送ることができ、以前と同様の方式で、その経路をブロック解除することができる。他の経路は、全ての複製バリアから応答信号が受信されるまで、ブロッキングを継続することになる。
【００３２】
バリア表示は、分岐点で複製されずに、早期にブロック解除された１つの経路に単に送出されることに留意されたい。更には、バリア表示は応答信号を必要とせず、バリア表示は単に、この表示の後に続くトランザクションが、バリアへの応答が受信される前に送られていることを、その後の分岐の地点が知るためにのみ、送られる。
【００３３】
一部の実施形態では、複数個の経路は、インターコネクト回路機構内部の２つのノード間の唯一の通信経路を含む、少なくとも１つの２分割経路を含み、この２つのノードは、２分割経路への、入口ノードおよび出口ノードを含み、応答信号生成器が、この入口ノードに配置され、バリアトランザクション要求の受信に応答して、入口経路に沿って応答信号を送信し、ブロッキング回路機構が、この出口ノードに配置され、バリアトランザクション要求の受信に応答して、そのバリアトランザクション要求が送信される全ての出口経路を、バリアトランザクション要求の後に続く少なくとも一部のトランザクション要求に対してブロックする。
【００３４】
インターコネクト内部には、様々なイニシエータデバイスと受信デバイスとを接続する経路が存在する。これらの経路の一部は、インターコネクト回路機構内部の２つのノード間の唯一のリンクであることにより、その経路を切断することは、インターコネクトをこの経路に沿って２つに分離することになるという点で、２分割経路であると見なすことができるルートを形成する。ノードは、回路機構内の任意の地点である。そのような場合には、バリアトランザクション要求によってブロックされている経路を、そのバリアトランザクション要求が２分割経路への入口ノードに到達するときに、後方の経路を解放するための応答信号を送ることによって、ブロック解除することが有利であり得る。応答信号生成器が２分割経路の開始にある場合には、ブロッキング回路機構を、この経路の終端に配置することができるが、これは、トランザクションが正しい順序で２分割経路に入る場合には、それらのトランザクションは、その２分割経路を、同じ順序で出て行かなければならないためである。
【００３５】
２分割経路に沿って移動するトランザクション要求は、１つのルートのみを移動可能であるため、バリアに対して、それらのトランザクション要求が送出される順序を維持しなければならない。それゆえ、それらのトランザクション要求が、バリアに対して正しい順序で入口ノードに到着するように、システムが設定されている場合には、一旦バリアトランザクション要求が２分割経路に送出されると、先行の経路をブロック解除することができ、ストールしていた後続のトランザクション要求を送信することが可能になる。それゆえ、それらの後続のトランザクション要求が送信される前に、全ての先行の命令が完了することを待機するのではなく、バリアトランザクション要求が２分割経路の入口ノードに到達したことが判定されることに応答して、それらの後続のトランザクション要求を、インターコネクトの一部分に沿って送信することができる。このようにして、これらのバリアトランザクション要求のブロッキングの性質に関連するレイテンシを低減し、インターコネクト回路機構のパフォーマンスを著しく改善することができる。
【００３６】
一部の実施形態では、複数個の経路は、入口ノードと出口ノードとの間で並列式に走る、少なくとも２つの経路を含み、これらの少なくとも２つの経路は、関連するトランザクションを搬送するように構成され、制御回路機構は、バリアトランザクション要求が受信される入口経路に沿って送信するための応答信号の生成のための、入口ノードでの応答信号生成器と、出口ポートに配置されるブロッキング回路機構とを含み、このブロッキング回路機構が、少なくとも２つの経路のうちの１つからのバリアトランザクション要求の受信に応答して、その少なくとも２つの経路のうちの１つから受信されたバリアトランザクションの後に続く少なくとも一部のトランザクションに対して、出口経路をブロックし、少なくとも２つの経路のうちの別の１つからの、バリアトランザクションに関連するトランザクションの受信に応答して、出口経路に沿ってバリアトランザクションを送信する。
【００３７】
一部のインターコネクトでは、２つのノードは複数の経路によってリンクされるが、これらの経路は、それらのノードをリンクする唯一の経路である。経路のうちの１つに送出されるいずれかのバリアトランザクションが、関連するバリアトランザクションを、他の経路に送出させる場合には、それらは、２分割経路と同様の方式で処理することができ、一旦バリアトランザクション要求が複数の経路に沿って送られると、入口ノードの上流の経路は、応答信号を生成することによって、ブロック解除することができる。バリアトランザクション要求が出口で受信されると、少なくとも２つの経路のうちの１つから受信された後続のトランザクションが遅延され、一旦、バリアトランザクション要求およびその関連するトランザクション要求の双方が受信されると、バリアは出口経路に送出される。いずれの経路に送出されるバリアも、読み込み及び書き出しの双方への適用性を指示することが可能であるが、バリアトランザクションが受信された経路を下るトランザクションのみが遅延されることに留意されたい。
【００３８】
一部の実施形態では、複数個の経路は、２つの並列経路を含み、一方は読み出し信号の送信に関し、一方は書き込み信号の送信に関する。
【００３９】
Ｃａｍｂｒｉｄｇｅ  ＵＫのＡＲＭ（商標）による設計のＡＸＩ（商標）インターコネクトなどの、一部のインターコネクトでは、ノード間に複数の経路が存在し得、１つは読み出し信号に関する経路であり、１つは書き込み信号に関する経路である。これら２つの経路に沿った信号はリンクされることにより、バリアトランザクションが一方に送出される場合には、関連するバリアトランザクションを他方に送出することができ、２つの経路は、上述のように２分割経路として処理することができる。しかしながら、バリアトランザクションが、例えば書き込みのみに適用される場合には、このバリアトランザクションは書き込みチャネルに送出することができ、いずれの関連するバリアトランザクションも読み出しチャネルに送出する必要はないが、これは、読み出しチャネルに沿って移動するいずれのトランザクションも、その書き込みバリアトランザクションに従属しないためである。
【００４０】
一部の実施形態では、応答信号生成器は、読み出しまたは書き込みのみに関連するバリアトランザクション要求を受信することに応答して、そのバリアトランザクション要求を更に先へ送る前に、バリアトランザクション要求が読み出しおよび書き込みの双方に適用されるように修正する。
【００４１】
書き込みバリアが受信される場合には、そのバリアは、読み出し／書き込みバリアトランザクションであるように修正することにより、双方の経路に送出することができ、次いで、受信されるバリアトランザクション要求に応答して、早期応答信号を送ることができる。バリアトランザクションの一方が出口ノードに到着すると、出口ノードはブロックされるべきである。併合点では、バリアトランザクション要求は、それらが双方とも出口ノードに到着し、それらの前方に維持されるべき全てのトランザクションが送られるまで、更に先へ送ってはならない。
【００４２】
一部の実施形態では、応答信号生成器は、ブロッキング回路機構の直接上流に配置される。
【００４３】
応答信号生成器およびブロッキング回路機構は、互いに隣接して配置構成することにより、実際に、バリアがこれらのユニットに到達すると、入口経路を解放して、出口経路をブロックすることができる。この配置構成は、応答信号生成器およびブロッキング回路機構を使用して、入口経路を、先行のトランザクションが通過すると解放し、後続のトランザクションに対して、出口経路を、これらの出口経路を解放する応答信号の受信まで、ブロックする。このようにして、後続のトランザクションは、制御された方式でインターコネクトを通過して進行することができ、システムに対する遅延が低減される。
【００４４】
一部の実施形態では、インターコネクト回路機構は、少なくとも１つのドメインを含み、少なくとも１つのドメインは、少なくとも１つのイニシエータデバイスからのトランザクション要求を受信するための少なくとも１つの入力のうちの、少なくとも１つを含み、ドメイン境界が、少なくとも１つの入力から受信されたトランザクション要求のいずれの併合も、その少なくとも１つのドメインの内部で発生するように配置構成され、バリアトランザクション要求は、そのバリアトランザクション要求が、少なくとも１つのドメインに適用されるか否かを指示する、指示子を含み、制御回路機構は、少なくとも１つのドメインに適用されることを指示する指示子を含み、その少なくとも１つのドメインの外側にあるバリアトランザクション要求を検出することに応答して、そのバリアトランザクションがドメインの外側にあることを指示する指示子を提供する。
【００４５】
インターコネクトがドメインへと配置構成され、ドメインが、そのドメイン内部にある入力から受信されたトランザクション要求のいずれの併合も、その内部で発生する、インターコネクトの領域であるとして選択される場合には、バリアトランザクション要求は、それらがドメインの内部にあるか、またはドメインの外側にあるかに応じて、異なる方法で処理され得ることが認識されている。それゆえ、インターコネクトを、ドメインの形態で配置構成されていると見なすことが有利であることが見出されており、特定のドメインに適用されるとしてマーク付けされる、少なくとも一部のバリアトランザクションに関しては、そのようなバリアトランザクション要求が、そのバリアトランザクション要求が適用されるドメインの外側にあると判定される場合、このことは、そのバリアの挙動が、この地点では変更されることになるとして、指示することができる。バリアトランザクション要求がドメインに適用されることを指示する指示子は、一部の実施形態では、その要求に関連する明示的な指示子であってもよいが、他の実施形態では、暗黙的であってもよく、バリアトランザクション要求の場所およびタイプから、そのバリアトランザクション要求がそのドメインに適用されることを、制御回路機構が判定することが可能であることに留意されたい。
【００４６】
一部の実施形態では、その指示は、バリアトランザクション要求に添付され、そのバリアトランザクション要求が、現時点で、そのバリアトランザクション要求が適用されるドメインの外側にあることを指示する、指示子を含む。
【００４７】
一部の実施形態では、バリアトランザクション要求上に指示子が提供され、そのバリアトランザクション要求が、現時点で、そのドメインの外側にあることを指示する。この指示子を使用して、バリアトランザクション要求の異なる挙動を判定することができる。例えば、恐らくは交差結合領域内であっても、バリアトランザクション要求は、一旦そのドメインの外側になると、もはやブロッキングではない場合がある。
【００４８】
他の実施形態では、その指示は、バリアトランザクション要求が受信された入口経路に沿って、応答信号生成器によって発行される、応答信号を含む。
【００４９】
ドメインは、そのドメイン内部の入力からのトランザクションが、そのドメイン内部で併合するように配置構成されるため、一部の実施形態では、そのドメインを出る際に、バリアトランザクション要求への応答を送ることができ、そのバリアトランザクション要求を更に先へ送ることができるが、そのバリアトランザクション要求は、もはや後続のトランザクションをブロックすることはない。それゆえ、バリアトランザクション要求のブロッキングの性質は、このインターコネクトの配置構成およびドメインの使用により、早期に除去される。
【００５０】
一部の実施形態では、インターコネクト回路機構は、複数個のドメインを含み、複数個のドメインのそれぞれは、少なくとも１つのイニシエータデバイスからのトランザクション要求を受信するための少なくとも１つの入力のうちの、少なくとも１つを含み、ドメイン境界が、ドメインのうちの１つの内部の少なくとも１つの入力から受信されたトランザクション要求のいずれの併合も、そのドメインのうちの１つの内部で発生するように配置構成される。
【００５１】
一部の実施形態では、インターコネクト回路機構は、単一のドメインを有し得るが、他の実施形態では、インターコネクト回路機構は、複数個のドメインを有し、それらのドメインが全て、ドメイン内部の入力から受信されたトランザクション要求のいずれの併合も、そのドメインの内部で発生するように、配置構成される場合には、それらは全て、バリアトランザクションの挙動が、そのドメインから出る際に変更されるという特性を有することになり、この特性を利用して、インターコネクト内部の、バリアによって引き起こされるレイテンシを低減することができる。
【００５２】
一部の実施形態では、複数個のドメインのうちの少なくとも一部は、より大きいドメインのサブセットであり、各入力に関するドメインの階層が存在することにより、１つの入力が、低い階層のドメインのメンバーである場合には、その入力はまた、高い階層のドメインのメンバーでもあり、トランザクションは、高い階層のドメインから出ると同時に、または出る前に、低い階層のドメインから出る。
【００５３】
一部の実施形態では、ドメインは、階層式に配置構成され、この階層を使用して、後に示すように、バリアトランザクションの更なる制御を提供することができる。高い階層のドメインは、低い階層のドメインよりも大きいか、または同じサイズであり、それらの低い階層のドメインを取り囲むことにより、トランザクションは、高い階層のドメインから出ると同時に、または出る前に、低い階層のドメインから出る。
【００５４】
一部の実施形態では、ドメインは、入力のうちの１つのみを含む共用不可能ドメインと、入力の全てを含むシステムドメインと、少なくとも１つの更なるタイプの共用可能ドメインとを含み、共用不可能ドメイン内部の入力はまた、その入力に関する少なくとも１つのタイプの共用可能ドメインの内部にあり、少なくとも１つのタイプの共用可能ドメイン内部の入力もまた、その入力に関するシステムドメインの内部にあるように、各入力に関して、ドメインの階層が存在する。
【００５５】
入力のみである共用不可能ドメインを有することが有用である場合があり、それゆえ、共用不可能としてマーク付けされる全てのバリアは、それらがインターコネクトの内部にある場合、それらのドメインの外側にあることにより、バリアが共用不可能ドメインに適用されるという指示子は、バリアがそのドメインの外側にあるという指示子として使用することができる。他の共用可能ドメイン、および全ての入力を含み、それ自体もまた共用可能ドメインであるシステムドメインが存在する。
【００５６】
一部の実施形態では、ドメインは、いずれのドメイン境界も、別のドメイン境界に交差することなく、各ドメインからの出口経路が２分割経路を含むように、配置構成され、制御回路機構は、ドメインのうちの１つから出るバリアトランザクション要求を検出すると、ドメイン指示子を修正することにより、そのドメイン指示子が、より低い階層のドメインを指示するように構成され、このドメイン指示子は、最低の階層のドメインを指示して、指示されたドメインをバリアが出たことを指示する。
【００５７】
ドメインが特定の方式で制約され、その場合にドメインを出るバリアの特性が判定され得るように、システムのトポロジーを制約することが有利であり得る。例えば、低い階層レベルのドメインが、高い階層レベルのドメインのうちの１つに完全に含まれるように、ドメインを階層レベルに配置構成することができる。更には、それらのドメインからの出口経路は、そのような経路の分割が、インターコネクトを２分することになるように、２分割経路であるように制限される。この特性により、トランザクションが、２分割経路の開始でバリアの制約を満たす場合には、それらのトランザクションはまた、その終端でも制約を満たすことを確実にすることができるため、ドメインおよびバリアを特定の方式で制御することが可能になる。それゆえ、ドメインが、その内部で、バリアに対してのトランザクションの順序付けを正しく制御する場合には、ドメインを出る際に、それらのトランザクションは正しい順序となり、次いで、後続のドメインは、その規則に従った順序付けを維持することができる。
【００５８】
事実上ドメインは、バリアの後に続く全てのトランザクションを遅延させるか、またはいずれも遅延させないかであるように、配置構成される。それゆえ、ドメインの階層レベルが最低レベルまで落ちる場合、このことは、そのバリアが、そのドメインの外側にあり、もはや後続のトランザクションに関してはブロッキングとはならないことの指示である。この指示子は事実上、インターコネクト内での場所を知ることを必要としない、バリアトランザクションの制御を可能にする手段である。
【００５９】
インターコネクト内で、後に再収束経路が存在する場合には、トランザクションが正しい順序でドメインから出ることが可能であっても、再収束経路上で互いに対して順序変更される可能性があるため、このスキームはもはや機能しない。特定のアドレスへのトランザクション要求が、常に、同一の経路によって再収束領域に交差する場合には、その領域は、そのアドレスに関する限り再収束性ではなく、このことが全てのアドレスに関して当てはまる場合には、その領域は、いずれのアドレスに関しても再収束性ではなく、交差結合領域として処理され得ることに留意されたい。再収束領域を有さない有利点が存在し、それゆえ一部の実施形態では、インターコネクトは、アドレス指定トランザクションに関する限り、領域が再収束性ではないように設計されることにより、トポロジーからは再収束性であるように見える場合であっても、機能的には、交差結合領域の役割を果たす。
【００６０】
一部の実施形態では、少なくとも一部のドメインは、より大きいドメインのサブセットであることにより、ドメインの階層が存在し、いずれのドメインも、別のドメインの部分的なサブセットではないことにより、いずれのドメイン境界も、別のドメイン境界に交差せず、各ドメインからの出口経路は、２分割経路を含む。
【００６１】
一部の実施形態では、制御回路機構は、プログラム可能であることにより、インターコネクトが、更なる交差結合経路、または機能的に再収束性の経路を導入する方式で、共に接続される場合には、もはや制御回路機構は、ドメインへの出口で、その境界が、より低い階層のドメインに適用されるべきであることを指示するように、ドメイン指示子を修正することはないが、これは、その階層がもはや機能し得ないためである。
【００６２】
プログラム可能であることが、制御回路機構に関して有利であるのは、経路が２分割、交差結合、または再収束性のいずれであるかに、その挙動が依存するあらゆるものを、制御回路機構が制御する場合であることに留意されたい。プログラム可能とすることにより、これらの経路の、後続の接続性による性質の変更を、処理することが可能になる。ドメインから出る場合に、もはや出口経路が２分割ではない場合には、ドメイン交差機能性、すなわちドメイン指示子の修正は、禁止される必要がある。
【００６３】
一部の実施形態では、インターコネクトは、ドメイン依存挙動を提供するように構成される、少なくとも１つの構成要素を含み、インターコネクト回路機構は、この少なくとも１つの構成要素が内部に配置される少なくとも１つのドメインを指示するマークで、この少なくとも１つの構成要素をマーク付けすることにより、そのドメイン依存挙動が、そのマークによって指示される少なくとも１つのドメインに応じて判定されるように、構成される。
【００６４】
代替的実施形態では、トポロジーを制約するのではなく、種々のドメイン依存構成要素に、いずれのドメインからドメイン依存挙動を判定するべきかを指示するマークが提供される。それゆえ、構成要素が幾つかのドメインの内部にある場合には、そのマークは、それらの幾つかのマークを指示する必要があり、バリアトランザクション要求が受信される際には、この要求がいずれのドメインに関連するかを判定し、いかなる挙動がそれゆえ求められるかをマークから判定する必要がある。この配置構成により、レイテンシは低いが、構築することが極めて複雑であり、要求が多くのマークを保存し、その要求がいずれのドメインからきているかを各バリアから判定するシステムが提供される
【００６５】
代替的実施形態では、ドメイン依存挙動を提供するように構成される、少なくとも１つの構成要素が、少なくとも２つのドメインの内部に配置される場合、インターコネクト回路機構は、少なくとも１つの構成要素にマーク付けをすることにより、その少なくとも１つの構成要素が内部にある、最も制約的なバリア挙動を提供するドメインに応じて、そのドメイン依存挙動が判定されるように、構成される。
【００６６】
一部の場合には、２つ以上のドメイン内にある場所を、最も制約的なバリア挙動を提供するドメインで単純にマーク付けすることによって、マーク付けおよび処理を単純化することが有利であり得る。その場合ドメイン依存挙動は、このドメインから判定される。このドメインは、その場所が位置する最低の階層の共用可能ドメインとなる。このようにして、正しい挙動を確保することができるが、レイテンシは、必要とされるよりも高い場合がある。しかしながら、このことは、情報の保存の低減と、処理能力と、レイテンシの低減との間の合理的な妥協策である。
【００６７】
一部の実施形態では、少なくとも１つの構成要素は、応答信号生成器を含み、この応答信号生成器は、バリアトランザクション要求が、ドメイン指示子によって指示されるドメインの内部にあるか否かを、マークから判定されるドメイン指示子と比較することによって判定し、内部にない場合には、応答信号生成器は、そのバリアトランザクション要求への応答信号を発行する。
【００６８】
ドメイン依存構成要素は、応答信号生成器とすることができ、応答信号生成器は、バリアトランザクション要求が、マークによって指示されるドメインの外側にあると判定される場合には、応答信号を送ることができる。
【００６９】
一部の実施形態では、インターコネクトは、少なくとも１つの入力と少なくとも１つの出力との間でトランザクション要求を送信するための複数個の経路を含み、複数個の経路のうちの少なくとも一部は、ノードから分岐する分岐経路であり、制御回路機構は、複数個の経路のうちの少なくとも一部が再収束する場所を判定して、経路が分岐する前のノードでのバリアトランザクション要求の後に続く少なくとも一部のトランザクション要求を遅延させ、全ての再収束経路からの応答信号の受信に応答して、遅延された少なくとも一部のトランザクション要求を送信するように構成される。
【００７０】
インターコネクトに、恐らくは更なるインターコネクトを接続することによって導入されている再収束経路に対処する１つの方法は、バリアトランザクション要求の後に続くトランザクション要求を、各再収束経路からの応答信号が受信されるまで遅延させるように、経路が分岐する前にブロックを導入することである。再収束経路を導入することにより、前述の想定の多くは不安全なものになるため、全てのバリア命令は、各経路からの応答が受信されるまで、それらの後に続くトランザクションを遅延させるか、またはブロックするべきである。
【００７１】
再収束領域に関して上述したように、特定のアドレスへの一部のトランザクションは、特定のルートに沿って再収束領域を通過するように制約される場合があり、そのような場合には、再収束領域は、そのアドレスに関しては再収束性ではない。インターコネクトは、全てのアドレスに関して、トランザクションが特定のルートに沿って特定のアドレスへと通過するように、制約される場合があり、そのような場合には、いずれの再収束領域も、交差結合領域として処理することができ、このことは、システムに対して再収束領域が課す多大な制約のために、有利であり得る。
【００７２】
一部の実施形態では、応答信号生成器は、バリアトランザクション要求に関する応答信号の受信、更なるバリアトランザクション要求の受信、およびそのバリアトランザクション要求と更なるバリアトランザクション要求との間に、そのバリアトランザクション要求に従属するいずれの介在トランザクションも受信されていないことに応答して、バリアトランザクション要求および更なるバリアトランザクション要求の双方に関する応答信号を送信し、更なるバリアトランザクション要求を取り消して、更に先へは送信しない。
【００７３】
バリアトランザクションが先行のバリアトランザクションの後に続き、それらの間に介在トランザクションがない場合には、この更なるバリアトランザクション要求には、先行のバリアトランザクションの応答と共に、応答することができる。次いで更なるバリアトランザクション要求を取り消すことができる。この場合もまた、インターコネクトのオーバーヘッドが改善される。このことは、機能、ドメインなどの、バリアトランザクションの特性が同一である場合に当てはまる。このことは、２分割領域内または交差結合領域内のいずれかで発生し得る。交差結合領域では、このことが、２つの経路を有する分岐の地点である場合には、それらの経路の一方は、前回のバリア以降にバリアが受信されていない、低トラフィックを有する経路である。その場合、このバリアへの応答信号は、トラフックが他方の経路に送出されることを可能にするために十分であるが、これは、その場合その経路が、前述のように、応答を有さない１つの経路であるためである。
【００７４】
いずれの介在バリアトランザクションも受信されない場合には、後のバリアトランザクションを単純に取り消すことができ、先行のバリアトランザクションからの応答を、このバリアトランザクションへの応答として使用することができるという特性が与えられると、特定の状況では、バリアトランザクションを生成することが有利であり得る。その場合、生成されたバリアトランザクションから、一旦応答信号が受信されると、いずれの後のバリアトランザクションも取り消すことができる。例えば、ある場所をスリープさせる前に、バリアトランザクション要求を生成することができ、応答信号が受信されるまで、スリープモードを遅延させることができる。このことは、その場所へ送られるべき後続のバリアトランザクションが受信される場合に、他のトランザクションが受信されていなければ、それらの後続のバリアトランザクションを処理するために、その場所をスリープ解除しなくてもよいことを意味する。これらの後続のバリアトランザクションは、単純に取り消して、応答を送ることができる。このことは、場所が非アクティブモードである場合には、単にバリアトランザクション要求を処理するために、その場所を起動しなければならないことが回避されるため、簡便である。
【００７５】
上記の実施形態では、バリアトランザクションは、スリープ信号に応答して生成されるが、バリアトランザクションは、スリープ信号に先立って投機的に生成されてもよく、このことは、スリープ信号が受信されると、速やかに低電力モードに入ることができることを意味する。
【００７６】
この場所は、インターコネクトのデバイスの一部分などの、多数のものを含み得るが、一部の実施形態では、この場所は、少なくとも１つの受信デバイスのうちの、１つを含み、この受信デバイスは、周辺機器を含む。
【００７７】
後のバリアトランザクション要求を取り消すことが可能であるというこの特性は、周辺機器、具体的には、長時間の間、非アクティブである周辺機器に対処する場合に、有用であり得る。
【００７８】
一部の実施形態では、制御回路機構は、少なくとも１つの周辺機器へと送信されているバリアトランザクション要求の検出に応答して、電力コントローラへの要求信号を生成し、少なくとも１つの周辺機器が低電力スリープモードに入るように要求する。
【００７９】
バリアトランザクション要求の後に続けて、電力コントローラモジュールに低電力要求を送ることは、この時点で、以後のバリアトランザクション要求が受信された場合に、それらを処理するために周辺機器をスリープ解除する必要がないことが認識されるため、好都合であり得、それゆえ周辺機器が低電力モードに入るための好都合な瞬間であり得る。
【００８０】
他の実施形態では、制御回路機構は、既定の時間の間アイドル状態である、少なくとも１つの周辺機器を検出することに応答して、バリアトランザクション要求を生成し、その少なくとも１つの周辺機器に、バリアトランザクション要求を送る。
【００８１】
あるいは、制御回路機構は、必ずしも周辺機器によって生成されるわけではないが、周辺機器が特定の時間の間アイドル状態にあることを示す条件を検出することに応答して、周辺機器が低電力モードに入り、後続のバリアトランザクションによって起動され得ないように、バリアトランザクション要求を積極的に生成する。
【００８２】
一部の実施形態では、少なくとも一部のトランザクション要求は、トランザクション要求のストリーム内部の全てのトランザクション要求を含む。
【００８３】
バリアトランザクション要求は、特定の特性を有するトランザクション要求、または特定のイニシエータからのトランザクション要求などの、トランザクション要求のサブセットに適用することができるが、一部の実施形態では、バリアトランザクション要求は、それらのトランザクション要求の全てに適用されることにより、バリアトランザクションの後に続く全てのトランザクション要求は、バリアトランザクションを解放する応答信号が受信されるまで、遅延される。
【００８４】
一部の実施形態では、バリアトランザクション要求は、そのバリアが、同期バリアまたはメモリバリアのいずれであるかを指示する、指示子を含む。
【００８５】
種々のタイプのバリアが存在し得、同期バリアは、プログラム順序内でバリアの前にある命令が完了していることによるメモリアクセスが、システム内の必要とされる地点まで到達しており、それらのトランザクションの、いずれの必要とされる効果も、プログラム順序内で同期バリアの後にあるいずれかのトランザクションが発生を許可される前に、発生していることを確実にするために、使用される。そのようなバリアが発生する場合には、バリアの発行元は、全ての終端地点からのバリアの応答が受信されるまで、いずれの更なるトランザクションも許容しないことになる。それゆえ、この場合には、少なくとも一部の後続の命令の全ては、同期バリアに先行する全てのトランザクションの完了まで、発行元で遅延されなければならない。そのような場合には、発行元は、応答が受信されるまで、いずれの更なるトランザクション要求も発行しないことになるため、インターコネクト内の他のトランザクションは、この同期バリアを追い越すことが可能であり、これは、それらの他のトランザクションには、この同期バリアが適用されないためであることに留意されたい。しかしながら、一旦それらのトランザクションが同期バリアを追い越すと、それらのトランザクションは、バリアによって制御される他のトランザクション要求と相互作用することができ、そのような時点で、バリアはそれらのトランザクションと関連性を持つようになり、それゆえ、それらのトランザクションはバリアを追い越すことができるが、その場合には、それらのトランザクションは、バリアの前方に留まらなければならない。
【００８６】
同期バリアは、メモリバリアとは異なる特性を有するため、トランザクション要求内で、同期バリアはそのようにマーク付けされることにより、インターコネクトは、それらの同期バリアに適切に、かつ他のメモリバリアトランザクション要求にインターコネクトが応答する方法とは異なる方法で、応答することができる。トランザクションは、一旦その最終的な宛先にトランザクションが到達すると完了し、いずれのアーキテクチャー上の副次的効果もまた完了する。
【００８７】
一部の実施形態では、制御回路機構は、トランザクション要求のストリーム内で、少なくとも１つのバリアトランザクション要求の後に発生する、少なくとも一部のトランザクション要求が、その少なくとも１つのバリアトランザクション要求を追い越すことを許可せず、また、少なくとも１つのバリアトランザクション要求が、その少なくとも１つのバリアトランザクション要求の前方に発生する、少なくとも一部のトランザクション要求を追い越すことを許可しないように構成され、応答信号生成器は、少なくとも１つのバリアトランザクション要求の受信に応答して、応答信号を生成しない。
【００８８】
順序付けは、少なくとも一部のトランザクション要求が、バリアトランザクション要求を追い越すことか、またはバリアトランザクション要求によって追い越されることを許可しないことによって、維持することができ、それゆえ、バリアトランザクション要求は、トランザクション要求のストリーム内に位置して、その周りの順序付けを維持する。この挙動は、非ブロッキング挙動と称される場合があり、応答生成器は、上流にはトランザクションのブロッキングが存在しないため、応答を送ることはない。
【００８９】
そのようなバリアトランザクション要求は、それが非ブロッキングバリアトランザクション要求であることを指示する、指示子を含み得る。
【００９０】
このバリアトランザクション要求には、それが「非ブロッキング」バリアであり、トランザクション要求は、そのバリアの、それらのトランザクションの対応する側に留まらなければならないことを指示する、指示子を与えることができる。このバリアトランザクション要求の挙動が、デフォルトの挙動として見なされる場合があり、このことが当てはまる場合には、バリアトランザクション要求は、非ブロッキングの指示子を有する必要がないことになる。あるいは、全てのバリアがこのように挙動する領域が存在する場合があり、それゆえ、そのような領域内では、インターコネクトは、全てのバリアを非ブロッキングとして処理することになる。
【００９１】
一部の実施形態では、制御回路機構は、バリアトランザクション要求が、トランザクション要求のストリーム内の、そのバリアトランザクション要求の前方で発生する、少なくとも一部のトランザクション要求を追い越すことを許可しないように、構成される。
【００９２】
一般には、制御回路機構は、バリアトランザクション要求が、トランザクションストリーム内の、順序付けが維持されるべきであり、かつそのバリアの前方にある、それらの少なくとも一部のトランザクション要求を追い越すことを許可しない。非ブロッキングバリアでは、バリアは、同様に、そのバリアの後方のトランザクション要求がバリアを追い越すことを許可しないことによって、順序付けを保持するように機能する。バリアの後方に保持されるべき少なくとも一部のトランザクション要求が、恐らくはブロッキング回路機構によって遅延されているシステムの場合には、バリアの後方にあるトランザクション要求は、バリアを追い越すことを許可され得るが、これは、それらのトランザクション要求が、それらの順序をバリアによって維持させるべきトランザクション要求ではないためであり、そのようなトランザクションは、既に上流で遅延されているためである。しかしながら、バリアの前方の全てのトランザクション要求は、そのバリアの前方に維持されなければならないが、これは、さもなければ、応答信号生成器にバリアが到達していることを指示する応答信号に応答して、遅延されたトランザクション要求が進行することを許可される場合、この応答信号生成器はまた、バリアの前方の全てのトランザクション要求もまた、この地点に到達していることも、指示するべきであるためである。
【００９３】
バリアトランザクション要求のこの性質は、システム内のデフォルトの挙動とすることが可能であり、実際に、一部のシステムは、この挙動のみに対応する場合があるが、しかしながら、一部の実施形態では、この挙動は、バリアトランザクション要求の後に続く少なくとも一部のトランザクションが遅延されていることを指示する、ブロッキング指示子を含む、少なくとも一部のバリアトランザクション要求によって、マーク付けされる。
【００９４】
要約すれば、ブロッキングバリアトランザクション要求により、インターコネクトは、ブロッキングを実行している回路機構の先行部分がこの状況で存在し、それゆえ回路機構の後続の部分は、このバリアトランザクション要求に応答して、後続のトランザクションをブロックする必要がないことを知ることが可能になる。バリアトランザクションがブロッキングトランザクションである場合には、そのバリアトランザクションは通過され、トランザクションを遅延させることによる後続のブロッキングは、実行されない。このことは、バリアトランザクション要求がインターコネクト内部で殆ど処理されないことを可能にするという有利点ばかりではなく、他のイニシエータからのトランザクションが、これらのバリアトランザクションによってブロックされることを防止するという有利点も有する。そのことは、しかしながら、後続のトランザクションのブロッキングがシステム内で早期に発生し、早期解放応答によって解放されないため、高いレイテンシを引き起こすという不利点を有する。しかしながら、そのことは、マスターのレイテンシは重要ではないが、インターコネクトおよび他のマスターのパフォーマンスが重要である場合には、有利であり得る。そのような場合には、インターコネクト内で早期にブロックすることにより、バリアトランザクションは、後続の遅延が実行されることなく、通過することが可能になる。ブロッキングバリアトランザクションの通過、および更なる遅延が実行されないことは、再収束経路が存在しない場合にのみ可能であることに留意されたい。インターコネクト内部に再収束経路が存在する場合には、ブロックすることなくトランザクションを通過させることは不可能である。ブロッキング指示子が存在する場合、このブロッキング指示子は、上述のような、ブロッキング指示子が望まれる条件に応答して、インターコネクト回路機構自体によって、設定することができる。インターコネクト回路機構が指示子を設定すると、インターコネクト回路機構はまた、少なくとも一部の後続のトランザクションもブロックし、それゆえ、再収束経路が存在しない限りは、いずれの後のブロッキングも必要とされない。再収束経路が存在する場合には、ブロッキング指示子が設定されているか否かに関わらず、バリアトランザクションに応答して、ブロッキングが実行される。
【００９５】
この状況での再収束経路は、共通の開始点、分離、共通の終端点、併合を有する、トランザクションの経路である。それらの経路は、２つのノード間を走る２つの経路が存在し得、一方が読み出しトランザクションを搬送し、他方が書き込みトランザクションを搬送する、ＡＲＭ（登録商標）ＡＸＩシステム内に存在するような、並列式にリンクされる経路を含まない。これらは、経路に沿って送られるトランザクションの再収束を禁止する方式で実装されるため、再収束経路として処理する必要はない。
【００９６】
一部の実施形態では、バリアトランザクション要求は、メモリバリアの指示子を更に含み、制御回路機構は、再収束領域への入口での分岐ノードで、そのバリアトランザクションを複製し、その複製バリアトランザクションに、ブロッキング指示子を提供して、少なくとも１つの複製バリアトランザクションからの応答の受信まで、後続のトランザクション要求をブロックするように構成される。
【００９７】
メモリバリア指示子は、トランザクションがそれらに対して順序変更されるべきではないことを指示する。それらのメモリバリア指示子は、順序付けのみに関わり、それらが制御するトランザクション要求の絶対的な進行には関わらない。それゆえ、インターコネクトの多くの部分で、それらのトランザクション要求は、インターコネクトを通過して移動すると共に、後続のトランザクションは、それらのトランザクション要求の後を移動することが許可され得るが、それらのトランザクション要求を追い越すことは許可されない。しかしながら、トランザクションが種々の経路を取って、最終的に同一のノードに行き着くことができる再収束領域では、複製バリアの後方で種々の経路を辿るトランザクションは、他のバリアを追い越さないことが重要であり、この理由のため、それらの地点で、これらのメモリバリアは、ブロッキング指示子の使用によって、ブロッキングになる。このようにして、バリアトランザクション内部の指示子を使用して、インターコネクトの種々の部分で、それらのバリアトランザクションの特性を変更することができることにより、バリアトランザクションは、停滞させるトランザクションをより少なくすることが可能になり、そのことによって、レイテンシを不当に増大させない。
【００９８】
一部の実施形態では、バリアトランザクション要求は、メモリバリアの指示子を含み、制御回路機構は、交差結合領域への入口での分岐ノードで、そのバリアトランザクションを複製し、その複製バリアトランザクションに、ブロッキング指示子を提供して、交差結合領域を出る際の、少なくとも１つの複製バリアトランザクションからの応答の受信まで、後続のトランザクション要求をブロックするように構成され、制御回路機構は、交差結合領域を出る際の複製バリアトランザクションから、ブロッキング指示子を削除するように、更に構成される。
【００９９】
交差結合領域では、トランザクションは、この場合も、種々の経路を移動して種々のノードへと下ることができ、他のノードからのトランザクションは、これらのノードへ移動することができる。それゆえ、メモリバリアは、これらの領域内でブロッキングになり、次いで、これらの領域を出る際に、再び非ブロッキングになることが有利であり得る。このようにして、トランザクションのブロッキングの性質は、その性質が必要とされる場所に限定され、トランザクションは不当に停滞されない。
【０１００】
ブロッキングの際、後続のトランザクションは、以前に行ったバリアトランザクションからの応答の受信が存在するまで、その領域に入ることが許可されないことに留意されたい。経路をブロック解除することが可能になる前に、全てのバリアトランザクションからの応答が必要とされる場合がある。他の実施形態では、１つを除く全ての応答が受信されると、応答が受信されていない経路が、実際に早期にブロック解除され、この最終経路からの応答が受信された場合にのみ、他の経路がブロック解除される。
【０１０１】
上述のように、交差結合領域の特性は、２分割領域の特性とは異なり、それゆえ、バリアトランザクションは、異なる方法で処理される。一部の実施形態では、インターコネクトは、交差結合領域の部分が、機能的に２分割領域として挙動するように、論理的に分解される。それゆえ、交差結合領域のこの部分内のバリアを、それらのバリアが２分割領域内にあるかのように処理することができ、例えば、バリアへの早期応答を与えることが適切な場合がある。
【０１０２】
一部の実施形態では、制御回路機構は、メモリバリア指示子を含み、ブロッキング指示子を含まないバリアトランザクションに応答して、このバリアトランザクションからのいずれの応答も必要とすることなく、後続のトランザクションを更に先へ送信する。
【０１０３】
メモリバリアトランザクションがブロッキング指示子を有さない場合には、そのメモリバリアトランザクションは、経路に沿って単純に通過させることができ、いずれのトランザクションも、そのメモリバリアトランザクションを追い越すことを許可されることがない。このことは、正しいトランザクションの順序を確保するために十分であり、応答を待機することなく、トランザクションを更に先へ送ることができる。
【０１０４】
本発明の第２の態様は、インターコネクトを介して、受信デバイスにトランザクション要求を発行するための、イニシエータデバイスを提供し、このイニシエータデバイスは、インターコネクトを通過するトランザクション要求のストリーム内部の少なくとも一部のトランザクション要求の順序付けを、トランザクション要求のストリーム内のバリアトランザクション要求の前に発生する少なくとも一部のトランザクション要求の、バリアトランザクション要求の後に発生する少なくとも一部のトランザクション要求に対する順序変更を許可しないことによって、維持するべきであることを、インターコネクトに指示するバリアトランザクション要求を生成するための、バリアトランザクション要求生成器を含み、このバリアトランザクション要求生成器は、生成されるバリアトランザクション要求に、ブロッキング指示子または非ブロッキング指示子を提供するように構成され、イニシエータデバイスは、ブロッキング指示子を有するバリアトランザクション要求を生成する、バリアトランザクション要求生成器に応答して、イニシエータデバイスがブロッキングバリアトランザクション要求への応答を受信するまで、バリアトランザクション要求の後に発生する少なくとも一部のトランザクション要求をインターコネクトに発行せず、非ブロッキング指示子を有するバリアトランザクション要求を生成する、バリアトランザクション要求生成器に応答して、バリアトランザクション要求の後に発生する少なくとも一部のトランザクション要求を、インターコネクトに発行するように、構成される。
【０１０５】
バリア生成器を有するイニシエータデバイスを使用して、インターコネクトを介して送られているトランザクションの順序付けを維持することに役立てることができる。そのようなイニシエータは、非ブロッキングバリアまたはブロッキングバリアのいずれかを生成することができる、バリア生成器を有し得、ブロッキングバリアの生成は、応答が受信されるまで、イニシエータデバイスに更なるトランザクション要求を発行させない。このようにして、イニシエータデバイスは、それ自体が、インターコネクトのレイテンシへの入力を有し得る。イニシエータデバイスは、そのイニシエータデバイスがレイテンシを被ることを、それ自体で判定し、更なるトランザクションを発行せずに、それ自体はインターコネクト内に著しい遅延を引き起こすことのないバリアトランザクションを発行することができ、または、イニシエータデバイスは、非ブロッキングトランザクションおよび後続のトランザクションを発行することにより、そのイニシエータデバイス自体は、通常の方式でトランザクションの発行を進行することができるが、インターコネクトは、必要とされる順序付けを維持するために、その非ブロッキングバリアトランザクションに対して他のトランザクションを遅延させることになる。
【０１０６】
本発明の第３の態様は、インターコネクトからのトランザクション要求を受信するための、受信デバイスを提供し、この受信デバイスは、ブロッキング指示子を含むバリアトランザクション要求を受信することに応答して、そのバリアトランザクション要求への応答を送り、非ブロッキング指示子を含むバリアトランザクション要求を受信することに応答して、そのバリアトランザクション要求を破棄し、応答を送らないように、構成される。
【０１０７】
受信デバイスはまた、特定のタイプのバリアトランザクションに応答するように構成することもできる。それゆえ、その受信デバイスは、ブロッキングバリアトランザクションに応答する場合があり、また受信デバイスは、上流のトランザクションの遅延が存在しないことを理解して、ブロッキングバリアトランザクションに応答しない場合があり、それゆえこのタイプのバリアは、応答を必要としない。
【０１０８】
本発明の第４の態様は、本発明の第２の態様によるイニシエータデバイスと、本発明の第３の態様による受信デバイスと、本発明の第１の態様によるインターコネクトとを含む、データ処理装置を提供する。
【０１０９】
本発明の第５の態様は、少なくとも１つのイニシエータデバイスから、少なくとも１つの受信デバイスに、インターコネクト回路機構を介してデータをルーティングするための方法を提供し、この方法は、少なくとも１つのイニシエータデバイスからのトランザクション要求を、少なくとも１つの入力で受信することと、このトランザクション要求を、複数個の経路のうちの少なくとも１つに沿って、少なくとも１つの出力に向けて送信することと、応答信号生成器でのバリアトランザクション要求の受信に応答して、応答信号を発行することを含み、この応答信号は、このバリアトランザクション要求に応答して遅延されたいずれかのトランザクション要求を更に先へ送信可能であることを、上流のブロッキング回路機構に指示する。
【０１１０】
本発明を、以下の添付される図面で示すような本発明の実施形態を参照して、単に例示として、更に説明する。
【図面の簡単な説明】
【０１１１】
【図１】本発明の一実施形態による、インターコネクトを示す。
【図２】本発明の一実施形態による、２つの接続されたインターコネクトを示す。
【図３】本発明の一実施形態による、バリアトランザクション要求を、概略的に示す。
【図４】別のトランザクション要求を、概略的に示す。
【図５ａ】インターコネクト内部のドメインが配置構成される方式を、概略的に示す。
【図５ｂ】本発明の一実施形態による、インターコネクト内の、ドメインおよびその出口ノードを、概略的に示す。
【図６】本発明の更なる実施形態による、インターコネクト内のドメインの更なる配置構成を示す。
【図７】本発明の一実施形態による、更なるインターコネクトを示す。
【図８】本発明の一実施形態による、並列式の読み出し経路および書き込み経路を有する、インターコネクトを示す。
【図９】本発明の一実施形態による、バリアトランザクションを併合する能力を有する、インターコネクトを示す。
【図１０】本発明の一実施形態による、バリアトランザクションを削除する能力を有する、インターコネクトを示す。
【図１１】本発明の一実施形態による、インターコネクトを有する、データ処理装置を示す。
【図１２】本発明の一実施形態による、インターコネクトを通過するバリアトランザクションによりブロックを移動させるための方法における工程を説明する、流れ図を示す。
【図１３】本発明の一実施形態による、バリアトランザクション要求を削除するための方法における工程を説明する、流れ図を示す。
【図１４】本発明の一実施形態による、周辺機器が低電力モードに入るように制御するための方法における工程を説明する、流れ図を示す。
【図１５】本発明の一実施形態による、周辺機器の電力消費を低減するための方法における工程を説明する、流れ図を示す。
【図１６】本発明の一実施形態による、バリアトランザクションに関連するオーバーヘッドを、可能な場合にバリアトランザクションを併合することによって低減するための方法における工程を説明する、流れ図を示す。
【図１７】本発明の一実施形態による、インターコネクト内部のブロッキングユニットでバリアトランザクションを処理する方法における工程を説明する、流れ図を示す。
【図１８】本技術による、イニシエータデバイスおよび受信デバイスを示す。
【図１９】トランザクションの送信およびブロッキングを、概略的に示す。
【図２０】種々のバリアトランザクションの概要、および、それらが種々の要件を有するインターコネクトの種々の領域に入る際に、どのように１つのタイプから別のタイプへと変換され得るかを示す。
【発明を実施するための形態】
【０１１２】
図１は、本発明の一実施形態による、インターコネクト１０を示す。インターコネクト１０は、複数個のマスター２０、２２、２４、およびマスター２６を、複数個のスレーブ３０、３２、３４、およびスレーブ３６に、複数個の経路を介して接続する。これらの経路は、例えば、２つの経路がそれぞれ、対応する分離点４１および分離点４２で２つに分離し、合流点４４および合流点４５で合流する場所４０で示すような、交差結合部分を有し得る。また、例えば５０で示すような、２分割経路も存在し得る。これらの２分割経路は、インターコネクト内の２つのノード間の唯一の接続である経路であり、そのため、この経路を切断することは、事実上、インターコネクトを２つに分割することになる。
【０１１３】
トランザクションが、これらの種々の経路に沿って通過する際、経路の性質、すなわち、それらの経路が交差結合、または２分割のいずれであるかということが、トランザクションの順序付けに影響を及ぼすことになる。例えば、交差結合は、トランザクションストリームを複数のトランザクションストリームへと分割する、分離点から開始し、その分離点の前に、トランザクションストリーム内で別のトランザクションの後ろにあったトランザクションは、以前はそのトランザクションが後ろにあったトランザクションが、それ自体の宛先に到着する前に、その宛先に到着することができる。２分割経路に沿って移動するトランザクションは、例えば６０で示すような順序変更バッファなどの、順序変更を可能にする何らかの機能ユニットが存在しない限りは、その順序を保持しなければならない。順序変更バッファは、トランザクションを順序変更して、高い優先度のトランザクションが、低い優先度のトランザクションよりも前に、スレーブに送達されることを可能にするために、使用される。
【０１１４】
再収束と呼ばれる経路もまた存在し、この経路内で、以前は分離していた経路が再び一体となり、このこともまた、トランザクションストリーム内部の順序変更を引き起こし得る。インターコネクト１０は、いずれの再収束経路も有さない。
【０１１５】
トランザクションが、それらが送り込まれた順序とは異なる順序で、それらの宛先に到着し得るという事実は、後続のトランザクションが先行のトランザクションに従属しており、それゆえ、その先行のトランザクションを最初に完了する必要がある場合に、問題を引き起こす恐れがある。例えば、トランザクションストリーム内に、同一のアドレスに対して、保存命令が、読み込み命令の前方に存在する場合には、読み込みの前に保存を実行することが重要であり、さもなければ、読み込みは不正な値を読み出すことになる。要求されるトランザクションが要求される順序で到着することを、プログラマーが確保することを可能にするために、インターコネクト１０は、トランザクションストリーム内部のバリアトランザクションに応答して、そのバリアに対しての、インターコネクト内部のトランザクションの順序付けを維持するように、構成される。それゆえ、バリアトランザクションは、互いに追い越すべきではないトランザクションの間に挿入することができ、このことにより、追い越しが発生しないことが確実になる。
【０１１６】
インターコネクトは、バリアトランザクションへの応答信号が受信されるまで、バリアトランザクションの後に続いてトランザクションストリーム内で発生するトランザクションを、インターコネクトを通って進行させることから遅延させることによって、これらのバリアトランザクションに応答することができる。この応答信号は、後続の命令を送ることが安全であることを指示する。経路を解放する応答信号は、先行のトランザクションが全て完了していることを指示する信号であってもよく、または、例えば経路が２分割経路である場合には、単に、バリアトランザクションが経路に沿って通過したことを指示するか、もしくは先行の解放応答信号が送られてブロッキングが再実行されるノードに、バリアが到達したことを指示する信号であってもよいことに留意されたい。
【０１１７】
インターコネクトはまた、単に、様々な経路に沿って、バリアトランザクションを先行のトランザクションの後に送ることができ、そのことにより、バリアが、特定の地点に到達しているとして検出されると、インターコネクトは、全ての先行のトランザクションが、その地点を既に通過していることを確認することができる。インターコネクトが、ストリーム内部でバリアを単に送信するのみか、またはトランザクションを遅延させるかは、バリアの性質、およびそれがブロッキングバリアであるか否かに応じて決定される。
【０１１８】
ブロッキングバリアは、そのバリアが制御する、トランザクションストリーム内のバリアの後のトランザクションが、上流のいずれかの場所でブロックされている場合のバリアであり、それゆえ、他のトランザクションは、それらが必ずしもバリアの後に留まる必要があるトランザクションではないため、ブロッキングバリアを追い越すことができるが、しかしながら、バリア自体は、そのバリアが制御する、バリアの前のいずれのトランザクション要求も追い越すことはできない。ブロッキングバリアは、早期応答ユニットによってブロック解除することができる。このことは、以下でより詳細に説明する。
【０１１９】
非ブロッキングバリアは、いずれのトランザクション要求もブロックされていない場合のバリアであり、それゆえ、そのバリアが制御するトランザクション要求は、このバリアトランザクション要求の正しい側に留まらなければならない。上流のブロッキングが存在しないため、早期応答ユニットによってブロック解除することができない。後に明らかになるように、この異なるバリアの性質は、ブロッキング指示子または非ブロッキング指示子によって指示することができ、あるいは、システムが、一方のタイプのバリアのみに対応可能である場合には、指示子は必要とされない。あるいは、一方のバリアをデフォルトのバリアタイプとしてもよく、この場合は、他方のタイプのバリアのみに、指示子が提供される。あるいは、全てのバリアがブロッキングバリアとして作用する、インターコネクトの領域、およびバリア全てが非ブロッキングとして作用する領域が存在してもよい。そのような場合には、インターコネクトは、バリアが指示子を全く保有しないように構成することができるが、インターコネクトは、それらのバリアを、インターコネクト内部のそれらのバリアの場所に応じた特定の方式で、処理することになる。
【０１２０】
バリアトランザクションの進行は、制御回路機構７０によって制御される。この制御回路機構７０は、この図では単一のブロックとして概略的に示されるが、しかしながら、実際には、制御回路機構は、インターコネクト全体にわたって、その制御回路機構が制御する回路機構に隣接して分散される。それゆえ、例えば、各分離点には、少なくとも一部の実施形態では、バリアトランザクションが受信されると、そのバリアトランザクションが複製され、複製されたバリアトランザクションが、分離点から各出口経路へ送出されることを確実にする、何らかの制御回路機構が存在することになる。複製されたバリアが、１つの出口経路以外の全ての出口経路へ送出される、他の実施形態が存在する場合があり、このことは後に説明される。制御回路機構は、バリアトランザクションが複製されたことを認識することになり、それゆえ、制御回路機構は、元々のバリアトランザクションの後に続き、そのバリアトランザクションの後続を維持しなければならないトランザクションの送信のための経路を、解放することが可能になる前に、各複製バリアトランザクションからの応答信号を必要とする場合がある。
【０１２１】
最も単純な形態では、バリアトランザクションは、マスター、例えばマスター２０によって発行され、次いでマスター２０は、インターコネクトが後続のトランザクションを送信可能であることを指示する、インターコネクトからの応答信号を有するまで、全ての後続のトランザクションをブロックする。あるいは、バリアは、インターコネクトへの入力の直後に、制御回路機構によって発行することができる。バリアトランザクションの前のトランザクション、およびバリアトランザクションは、インターコネクトへ送信され、制御回路機構７０が、これらのトランザクションのルーティングを制御する。それゆえ、分離点４２で、バリアトランザクションは複製され、合流点４４および合流点４５へ移動する。この地点で、トランザクションは２分割経路５０および２分割経路５２に入り、トランザクションは、これらの経路上では、バリアに対してのそれらのトランザクションの位置を変更することができないため、バリアトランザクションがこれらの経路の一方の開始に到着すると、そのバリアトランザクションに先行する全てのトランザクションが、そのバリアトランザクションの前方にあり、その経路に沿って、そのバリアトランザクションの前方に維持されることが既知となる。それゆえ、早期応答信号を、解放ユニット８０によって送ることができ、これらの信号の双方を受信することに応答して、分離点４２での制御回路機構は、マスター２０に早期応答信号を送り、次いでマスター２０は、バリアトランザクションによって制御される、バリアトランザクションの後続のトランザクションをブロック解除して、それらをインターコネクト内へと送信することができる。
【０１２２】
早期応答ユニット８０を提供することによって、マスター２０は、バリアトランザクションがスレーブに到達したことを指示する、スレーブからの応答を待機していた場合よりも、遙かに短い時間ブロックされ、このようにして、バリアトランザクションによって導入されるレイテンシが低減される。
【０１２３】
経路５０に沿って通過するバリアトランザクションは、２分割経路５０以外のいずれの経路に沿って移動することもなく、インターコネクトを出て、スレーブ３０に到着し、それゆえ、一旦バリアが解放ユニット８０を通過すると、そのバリアの前のトランザクションは、その位置を維持しなければならないため、このバリアトランザクションに応答して、再度ブロックする必要はない。しかしながら、経路５２に沿って送られるバリアトランザクションは、更なる交差結合区域４８に到達し、分離点４９でのバリアトランザクションの受信に応答して、この分離点に関連する制御回路機構７０は、バリアトランザクションを複製して、双方の出口経路へ送出し、そのバリアトランザクションの後の、バリアの後に続いて発生し、そのバリアによって制御されるトランザクション要求への、入口経路をブロックする。それゆえ、これらの後続のトランザクションは、一部の実施形態では、全ての複製バリアトランザクションへの応答信号が受信されるまで、ブロッキング回路機構９０内部のバッファ内に保持されることによって、ストールされる。それゆえ、複製バリアトランザクションは、交差結合回路機構４０を通過し、この交差結合回路機構を出て、更なる２分割リンク５２および２分割リンク５０に結合する。上述のように、２分割経路は、トランザクションを、バリアに対して順序通りに保持することにより、早期応答を、解放ユニット８０によって、２分割経路の開始から送ることができる。ブロッキング回路機構９０は、分離点４９からのバリアトランザクションへの応答を受信することを待機する。分離点４９は、バリアトランザクションを複製し、２つのバリアトランザクションを、各経路へ１つずつ更に送出する。分離点４９は、送信した２つのバリアトランザクションのそれぞれからの応答を受信するまで、ブロッキング回路機構９０に応答を送り返さない。この応答に応答して、ブロッキング回路機構９０は、そのバッファ内に保持された後続のいずれのトランザクションもが送信されることを可能にする。解放回路機構は、インターコネクトへの出口の前の、最後の２分割経路上にあるため、一部のバリアのタイプに関しては、更なるブロッキングの必要性は存在しない。
【０１２４】
前述のように、２分割経路５２上には、順序変更バッファ６０が存在し、このバッファは、バリアに応答するように構成され、バリアによって制御されるトランザクションが、バリアに対して順序変更されることを許可しない、
【０１２５】
前述の説明では、バリアは、後続の全てのトランザクションを、そのバリアの後に維持するために存在することが想定される。しかしながら、一部の実施形態では、より詳細に後に示すように、バリアは、後続のトランザクションのサブセット、恐らくは特定のマスターからのトランザクション、または、書き込みトランザクションなどの特定の機能を備えるトランザクションが、バリアを追い越すことを防ぐことのみを必要とする場合がある。そのような場合には、制御回路機構７０およびブロッキング回路機構９０は、このトランザクションのサブセットのみを遅延させ、他のサブセットの進行を許可することになる。更には、分離点では、バリアによって制御されるトランザクションが、一方の経路を決して下降することがない場合には、その経路へ複製バリアを送出する必要はない。
【０１２６】
この点では、書き込みトランザクションに関連しているとしてマーク付けされるバリアは、当然ながら、更なる書き込みをブロックしており、そのため、応答が受信されるまで更なる書き込みが発行されない。この特性のために、バリアは、書き込みへの応答が受信されるまで、読み出しをブロックする必要がなく、その応答に先行して、更なる書き込みを発行することができないことにより、読み出しを安全に発行することができ、一旦、書き込みバリアへの応答が受信されると、更なる書き込みを発行することができ、この時点で、バリアは、読み出しにもブロックしているはずである。
【０１２７】
図２は、マスター２０、２２、２４、およびマスター２６を、スレーブ３０、３２、およびスレーブ３４に相互接続する、本発明の一実施形態による、２つのインターコネクトを示す。この場合には、インターコネクト１２が、インターコネクト１０に接続されており、このことにより、インターコネクト１０を出てインターコネクト１２に入るトランザクションの一部に、再収束経路が導入される。インターコネクト１０は、スレーブに直接接続される場合には、後続の経路は２分割経路であり、インターコネクトの出口に接続されるため、解放ユニット８０を使用して早期応答を送ることができ、その場合、更なるブロッキングは一般に必要とされない。
【０１２８】
しかしながら、トランザクションが、それらの宛先デバイスに進むのではなく、更なるインターコネクトへ送られる場合には、これらの経路に沿って移動するバリアトランザクションに応答してブロックしないことは、もはや適切ではあり得ず、更なる交差結合経路、またはこの場合には再収束経路が存在する場合には、そのような経路を導入する更なるインターコネクトへ接続する際に、インターコネクトが早期に応答してブロックする方式を変更することが適切である。それゆえ、インターコネクトは、種々の用途に適応可能であるために、インターコネクトが直接スレーブに接続されるか、または交差結合経路もしくは再収束経路を備える別のインターコネクトに接続されるかに応じて、オンまたはオフへ切り替えるようにプログラムすることができる、プログラム可能なブロッキング回路機構９２を含み得る。
【０１２９】
それゆえ、プログラム可能な解放回路機構８２およびプログラム可能なブロック回路機構９２は、制御回路機構７６によって制御され、この制御回路機構７６は、インターコネクト１０に接続されているインターコネクト１２に応答して、通過するいずれのバリアトランザクションをもブロックする。このようにして、後続のトランザクションは、応答信号が受信されるまで、通過することを許可されず、それらの順序付けが確保される。
【０１３０】
前述のように、バリアトランザクションは、それらのバリアトランザクションによって制御される後続のトランザクションをブロックし、これは、全てのトランザクションであってもよく、またはそれらのサブセットであってもよい。特定のバリアトランザクションによって制御されるトランザクションは、そのバリアトランザクション自体か、または後続のトランザクションのいずれかによって判定することができる。
【０１３１】
本発明の実施形態では、バリアトランザクションは、インターコネクトが送信する他のトランザクションと見かけに大差がないように設計されており、このようにして、インターコネクトは、構成要素の大幅な再設計を必要とせずに、これらのバリアトランザクションを処理するように構成することができる。バリアトランザクションの概略的バージョンを図３に示す。
【０１３２】
この実施形態では、バリアトランザクション要求は、一般のトランザクション要求と同様の方式でアドレスフィールドを含むが、それらは、後述のアドレス指定バリアの場合を除いては使用されない。バリアトランザクション要求はまた、アドレス指定バリアトランザクションによって扱われるアドレス範囲のサイズを指示する、サイズフィールド、およびバリアトランザクションがいずれのトランザクションに適用されるかなどの、バリアトランザクションの様々な特性を指示する指示子ビットを含む、指示子フィールドも含む。２つのタイプのバリアトランザクションが存在し、これらの２つの異なるバリアトランザクションを指示する、指示子ビットの１つの２つの値が存在する。これらの２つの値は、そのトランザクションがバリアトランザクションであること、またそれがどのタイプのバリアトランザクションであるかということの双方を、インターコネクトに指示することになる。それゆえ、それらは、システムデータ同期バリア（ＤＳＢ）トランザクションを指示する場合があり、このトランザクションは、プログラム順序内のそのようなデータ同期バリアの後にあるいずれのトランザクションもが発生を許可される前に、先行のトランザクションが完了して、それらの最終的な宛先に到達していなければならない場合に、トランザクションを切り離すために使用される。それゆえ、この種のバリアを指示する指示子ビットに応答して、マスターは、後続のトランザクションをブロックすることになり、そのようなトランザクションへの早期応答の可能性が存在しないため、これらのバリアトランザクションは、著しいレイテンシを引き起こすことになる。
【０１３３】
マスターは、システムＤＳＢへの応答を受信するまで、後続のトランザクションを、インターコネクトに入ることからブロックするため、またその応答は、宛先から来る必要があるため、他のトランザクションは、ＤＳＢを追い越すことができるが、これは、それらの他のトランザクションが、そのマスターによって発行されていないために、ＤＳＢの後に留まらなければならないトランザクションが存在し得ないためであることに留意されたい。しかしながら、一旦それらがＤＳＢを追い越してしまうと、それらは、バリアによって制御される他のトランザクション要求と相互作用することができ、そのような時点で、バリアはそれらと関連性を持つようになり、それゆえ、それらはバリアを追い越すことができるが、そうした場合には、それらは、バリアの前方に留まらなければならない。
【０１３４】
他方のタイプのバリアトランザクションは、データメモリバリアトランザクションＤＭＢであり、これらのバリアによって制御されるトランザクションは、このバリアに対して順序変更することを許可されるべきではない。これらのバリアは、トランザクションの順序付けに関わるのみであって、システムを通過するトランザクションの進行には関わらない。それゆえ、これらのトランザクションは、解放ユニットからの早期応答を使用することができ、これらの技術を使用して、これらのバリアトランザクションによって導入されるレイテンシを低減することができる。
【０１３５】
バリアトランザクション内には、他のフィールドもまた存在し、１つは、トランザクションを生成したマスターを識別するための、識別フィールド、すなわちＩＤフィールドであり、１つは、どの共用可能性ドメインにバリアが関連するかを指示する、共用可能性ドメインフィールドであり、これは、より詳細に後に説明され、また１つは、そのトランザクションがブロッキングとして見なされるべきか否かを指示するように設定可能な、ブロッキング指示子である。この指示子が設定される場合、このことは、このトランザクションに関してブロッキングが既に実行されていることを意味し、それゆえ、図１および図２に示すもののような、解放ユニットおよびブロッキングユニットには、後続のトランザクションが上流でブロックされていることは既知であるため、単にそのバリアトランザクションを通過させるのみであり、応答はしないことになる。このことの有用性は、後に説明される。しかしながら、図２に示すデバイスにおけるような再収束経路が存在する場合には、図２のブロッキングユニット９２などのブロッキングユニットが、ブロッキング指示子を設定されたバリアトランザクションにも、設定されていないバリアトランザクションと同様に反応することになり、それらに応答してブロックすることに留意されたい。
【０１３６】
一部の実施形態では、ブロッキング指示子は、バリアトランザクション上には存在せず、全てのバリアトランザクションは、それらをブロッキングとして処理することが必要であり得ると判定される場合には、ブロッキングとして処理される。
【０１３７】
バリアトランザクションが特定の機能のトランザクションのみを制御するのか否かを指示する、バリアトランザクションに関する制御の他のフィールドが存在し得る。それゆえ、書き込みトランザクションのみに関するバリアトランザクションを有する場合がある。
【０１３８】
アドレスフィールドを使用して、特定のアドレスへのトランザクション、または特定のアドレスの範囲へのトランザクションのみを制御するバリアを、指示することができる。後者の場合には、アドレスフィールドがベースアドレスを保存し、サイズフィールドがアドレス範囲のサイズを保存する。アドレス指定バリアは、極めて特定のトランザクションのサブセットを制御することが可能であり、他のトランザクションの速度を低下させないという有利点を有する。更には、トランザクションが分離点で複製される場合、そのアドレスまたはアドレス範囲に、１つ以上の出口経路を下ってアクセスできないことが既知であれば、そのアドレス指定バリアを複製する必要はなく、このことによって、インターコネクトの、レイテンシおよびバリア操作のオーバーヘッドが低減される。バリアトランザクションは、他のトランザクションと同様であるように作成されているため、アドレスフィールドが存在し、それゆえ、アドレス指定バリアトランザクション内にアドレス情報を提供することは簡単である。
【０１３９】
図４は、インターコネクトによって送られる、バリアトランザクションではないトランザクションであり、図に示し得るように、その形態は、極めてバリアトランザクションに類似している。このトランザクションは、ロッキングビット内部に、そのトランザクションがバリア命令トランザクションを無視するべきか否かを指示する、指示子フィールドを有する。それゆえ、トランザクション内に、このようにフィールドをマーク付けすることは、そのトランザクションが、いずれのブロッキングも自動的に通り越して進行することを可能にする。このことは、旧式システムを、バリアに対応するインターコネクトと共に使用する場合に、有用であり得る。
【０１４０】
図３に関して述べたように、バリアの効果をセグメント化する一方法である、共用可能性ドメインが存在する。これは、システムのレイテンシを改善する更なる方法であり、以下の図に関して、より詳細に説明される。
【０１４１】
マスターおよびインターコネクトの諸部分を、種々のドメイン内にグループ化して、そのドメイン内部で、バリアおよびトランザクションを制御することにより、トランザクションの正しい順序付けを維持しつつ、レイテンシを不正に増大させないことを確実にする、多数の方法が存在する。この点では、ドメインに関して、特定の規則がインターコネクトのトポロジーに課される場合には、バリアは、バリアのレイテンシを低減するために利用することができる特定の特性を有することが認められている。ドメインを特定の方式で配置構成することにより、システムの許容されるトポロジーに制約が生まれる場合があるが、バリアによって作り出されるレイテンシを減少させることも可能であり、それゆえ、以下で説明する、ドメインの種々の可能な実装には、有利点および不利点が存在する。
【０１４２】
ドメインの配置構成の全てにおいて、バリアトランザクションが、特定のドメインに関連するとしてマーク付けされる場合には、バリアトランザクションが、そのドメインの外側にある場合、再収束領域内を除き、常にブロック解除することができる。そのドメインの内側では、ＤＭＢは、交差結合領域を除き、ブロック解除することができる一方で、ＤＳＢは、そのドメインの内側では、常にブロッキングである。システムＤＳＢは、インターコネクト全体に関連するとしてマーク付けされ、それゆえ、そのドメインの外側には決して存在せず、その宛先からの応答が受信されるまで、常にブロッキングである。
【０１４３】
第１の「ヌル」実装では、これらのドメインは考慮されない。全てのバリアは、システムの全ての部分内で、全てのトランザクションに適用されるとして処理される。このことは、バリアからのレイテンシが高くなるという点で、パフォーマンスが低いことは明らかである。しかしながら、それは、無制約で、任意の、ドメインの帰属関係（その帰属関係が無効であっても）およびトポロジーを許容し、そのため、常に構築可能である。このことは、全てのドメインが、それらの全てのドメイン内に全てのマスターを含むことと論理的に等価である。
【０１４４】
代替的な「ほぼヌル」実装では、各マスターに関連する共用不可能ドメインが存在し、これらのドメインに関連するバリアは、このドメインの外側では異なる方法で処理される。共用不可能バリアは、マスターからの入力を越えたあらゆる場所の、その共用可能性ドメインの外側にあるため、インターコネクト全体内で、そのように処理することができ、それゆえ、インターコネクトの、全ての非再収束部分内で、非ブロッキングである。他の共用可能性ドメインのバリアトランザクションは、ヌル実装の場合として処理される。このことは、共用不可能ドメイン境界を、発行元またはマスター入力とすることと論理的に等価であり、全ての他のドメインは、全ての他のマスターを含む。
【０１４５】
代替的な「単純」実装は、ある程度制約されたトポロジー、および改善されたパフォーマンスを有する。この手法は、許容し得る制約のレベルに応じて、２つの異なる解決策をもたらす。
【０１４６】
共用可能性ドメインの帰属関係に対する３つの制約は、これらの手法の双方に共通である。
１．オブザーバの共用不可能ドメインは、それ自体単独である。
２．オブザーバのシステム共用可能性ドメインは、直接的または間接的に通信することができる少なくとも全ての他のオブザーバを含む。
３．オブザーバの内側共用可能ドメインの全てのメンバーはまた、その外側共用可能ドメインのメンバーでもある。
【０１４７】
これらのうちの最初の２つは、〔３〕によって課される制約である。更には、２つの解決策のそれぞれは、特定のトポロジー的制約、および恐らくは、更なる共用可能性ドメインの帰属関係の制約を有する。
【０１４８】
これらの２つの実装のうちの第１の実装は、各場所が単一のドメイン内にあるという制約を必要とし、それゆえインターコネクト内の各場所が、内側、外側、またはシステムの、１種類のドメイン内にのみあることに依存する。このことを可能にするために、更なる共用可能性ドメインの帰属関係の制約が強制されなければならない。
【０１４９】
いずれのオブザーバのいずれの共用可能性ドメインの全てのメンバーも、その共用可能性ドメインの全ての他のメンバーを、その同一レベルの共用可能性ドメインのメンバーとして有さなければならない。すなわち、オブザーバＢがオブザーバＡの内側共用可能ドメインのメンバーである場合には、相反的に、ＡはオブザーバＢの内側共用可能性ドメインのメンバーでなければならない。
【０１５０】
満たされなければならないトポロジー的制約は、以下である。
１．ドメイン境界は、そのドメインの全てのメンバーを含まなければならない。
２．ドメインの外側には、そのドメインに併合することができるものはなく、すなわち、ドメイン境界は、ドメイン境界の内側にないものの下流にあるものを含んではならない。
３．全てのドメイン境界は、ドメイン２分割リンク上に位置しなければならない。
【０１５１】
この場合のドメイン境界を考察する単純な方法は、高度を表示する地形的等高線として考察することである（この場合、垂直面は許容されるが、張り出しは許容されない）。各マスターは、同一の高度にあり、各共用可能性ドメインの等高線は、同一のタイプの全ての他のものと同一の高度にある。垂直の崖は、異なるタイプの共用可能性ドメインが同一であることを可能にするために許容されるが、共用可能性ドメインの交差を可能にするであろう張り出しは、許容されない。
【０１５２】
これらのトポロジー的制約は、ドメインに併合し得るものがないこと、すなわち、ドメインのメンバーも（制約１に違反することになる）、または非メンバーも（制約２に違反することになる）ドメインに併合し得ないことが必要とされる。メンバーの下流への分離が、ドメインを出て、次いでドメインの外側のものと同様に併合することなく、再併合する場合には、出口と再入口との間の部分は、事実上、依然としてそのドメイン内にある。
【０１５３】
トポロジー的制約およびドメインの帰属関係の制約の組み合わせは、その共用可能性ドメイン内部で、バリアが、そのドメインの外側のオブザーバからのトランザクションに遭遇し得ないこと、および、バリアが、ドメインを出る際に、そのバリアがいずれ併合する、ドメインの全てのメンバーからの、全てのトランザクションストリームと併合していることを確実にする。それらの制約はまた、いずれの内側共用可能ドメインの外側にある、いずれの場所も、全ての内側共用可能ドメインの外側にあること、および、いずれの外側共用可能ドメインの外側の場合にも、全ての外側共用可能ドメインの外側にあることを確実にする。
【０１５４】
この結果、バリアが、分離点でブロッキングであるための要件は、バリアの共用可能性ドメインと、分離点が内部に位置するドメインのタイプとを、単純に比較することによって判定することができるが、これは、共用可能性ドメインのメンバーは、その場所の下流で併合することができないという要件が、そのような制約システム内でバリアがそのドメインの外側にあることによって、暗黙的に満たされるためである。
【０１５５】
このメカニズムは、ドメインの出口点での明示的検出構成要素が必要になる、バリアがその共用可能性ドメインの外側にあることの明示的な指示、または、関連する各分離点でのその状態の判定のいずれかによって、実装することができる。
【０１５６】
これらの２つの実装のうちの第２の実装は、複数ドメイン内の場所を可能にする。この実装は、バリアトランザクションが一旦その共用可能性ドメインを出ると、その移行によって非ブロッキングになるように、バリアトランザクションの、指示された共用可能性ドメインが、共用可能性ドメインの境界を通過する際に修正されることに依存する。バリアトランザクションが、内側または外側共用可能ドメインから出て行く際、その指示ドメインは、共用不可能へ移行し、共用不可能としてマーク付けされると、そのドメインの外側にあることが既知となるため、非ブロッキングとすることができる。
【０１５７】
この場合には、共用可能性ドメインの帰属関係に対する更なる制約は、次のように緩和される。
いずれの２つの共用可能性ドメインＡおよび共用可能性ドメインＢに関しても、Ａの全てのメンバーはまた、Ｂのメンバーでなければならないか、またはＢの全てのメンバーもまた、Ａのメンバーでなければならないかのいずれか、あるいは双方である（この場合、ＡとＢは同一である）。換言すれば、ドメイン境界は交差し得ない。
【０１５８】
同一のトポロジー制約が必要とされる。
１．ドメイン境界は、そのドメインの全てのメンバーを含まなければならない。
最大限のトポロジーの柔軟性を許容するためには、トポロジーの構成要素（分離および併合）を分解して、以下のようにドメイン境界を描き得ることが、可能でなければならない。
２．ドメインの外側には、そのドメインに併合することができるものはなく、すなわち、ドメイン境界は、ドメイン境界の内側にないものの下流にあるものを含んではならない。
３．ドメイン境界は、ドメイン２分割リンクを横断して位置しなければならない。
最後に、ドメインの帰属関係に対する緩和された制約によって導入される問題を補正するために、更なるトポロジー的制約が課される。
４．境界の場所は、その場所が既に外側共用可能性ドメインの外側にあるマスターを除く、種々のマスターに関しての異なる数のドメインに関しては、存在し得ない。
【０１５９】
制約４は、バリアがドメイン境界を横断する際に修正されなければならない場合、その中にバリアがある全てのドメインに関する境界を、バリアが横断することを確実にする。このことは、修正動作がバリアの発信元に依存しないことを確実にする。
【０１６０】
バリアが修正され、非ブロッキング状態を獲得する場合には、そのバリアが２分割リンク上にある場合には、当然ながらブロック解除することができるが、一部の状況では、バリアは、交差結合リンク上にあるにも関わらず、ブロック解除することができる。ドメイン境界に交差するリンクが、そのドメインに関する限り２分割である、ドメイン２分割リンクである場合、すなわち、それらのリンクが、それら自体のドメインからの経路と併合せず、他のドメインから来ている経路のみと併合する場合には、そのバリアトランザクションの修正は、その場所で起こり、ブロック解除もまた、その地点から発生し得る。
【０１６１】
制約２は、指示ドメインを、ドメイン出口上で共用不可能へ変更することに加えて、指示ドメインが、ドメイン入口上で共用不可能から変更される場合には、放棄することができる。このことは、飽和しないドメイン指示子、または飽和が発生しないように入力することができるドメインの数に対する制約を必要とする。更には、このことは、ドメインに入ったバリアが、それらのバリアの増大した指示範囲のために、そのドメインの非メンバーからのトランザクションのブロッキングとなることをもたらす。
【０１６２】
図５ａは、インターコネクト内部のドメインの上記の実装を、極めて概略的に示す。この図では、マスターはインターコネクトの内部に示されるが、実際には、マスターは当然ながら、インターコネクトの外部にある。各マスター２０、２２、２４、２６、２８は、そのマスターを直接取り囲み、そのマスター自体によって生成されるトランザクションのみに関連する、ストリーム、すなわち共用不可能ドメイン１２０、１２２、１２４、１２６、１２７を有する。次に、複数個のマスター、または単に同じマスターを再度包囲し得る、幾つかの次の階層レベルのドメインが存在し、それゆえ、マスター２０およびマスター２２は、それらの共用不可能ドメインを有することに続き、それらの共用不可能ドメインの周囲に内側ドメイン１２１を有する一方で、マスター２４は、内側ドメイン１２５を有し、マスター２６は、共用不可能ドメイン１２６および内側ドメイン１２７を有し、マスター２８は、共用不可能ドメイン１２８および内側ドメイン１２９を有する。次に、それらを取り囲む外側ドメインが存在し、この場合、外側ドメインは、ドメイン３１およびドメイン３３である。次に、インターコネクト全体である、システムドメインが存在する。図示し得るように、ドメインは、完全に互いの内部に位置しており、決して遮ることはない。また、ドメインからの全ての出口経路は２分割経路であるという制約も存在する。ドメインをこのように制約することによって、これらのドメインから出て行くトランザクションが、特定の方式で出て行くことを確実にすることができ、トランザクションが２分割経路上に出て行く際に、ドメイン内部でバリアが正しく機能するのであれば、トランザクションは正しい順序で出て行くことになる。このことにより、特定の方式での、これらのドメインに関するバリアトランザクションの制御が可能になる。
【０１６３】
図５ｂは、マスターｐ０およびマスターｐ１を含むドメインへの、出口ノード１３５を概略的に示す。この出口ノード１３５は、制御回路機構７０によって制御され、このノードで、いずれのバリアトランザクションおよびそのバリアトランザクションが制御するトランザクションもが、正しい順序であることが既知となる。ここで、前述のように、バリアトランザクションは、必ずしも全てのトランザクションを制御するわけではないが、特定のマスターによって生成されるトランザクション、または特定の機能のトランザクションを制御することができる。
【０１６４】
共用可能性ドメインの場合には、バリアトランザクションは、特定のドメインからのトランザクションを制御するようにマーク付けされる。それゆえ、トランザクションは、全てのトランザクションを制御するという点で、システムバリアトランザクションとしてマーク付けされる場合があり、トランザクションは、ストリームすなわち共用不可能ドメインからのトランザクション、内側ドメインからのトランザクション、または外側ドメインからのトランザクションを制御するようにマーク付けされる場合がある。いずれの場合でも、バリアトランザクションがドメインを出る際に、この実装では、この階層レベルが低減され得ることにより、外側ドメインのバリアであった場合には、内側ドメインを出た際に、内側ドメインからのトランザクションを制御するバリアトランザクションへと低減されることになり、外側ドメインを出る際には、そのバリアトランザクションの制御の階層レベルは、いずれのトランザクションもそのバリアトランザクションによって遅延させる必要がない、共用不可能ドメインへと低減されることになる。このことが可能であるのは、この時点で全てのトランザクションが、このバリアに対して順序付けられており、再収束経路が存在しないのであれば、インターコネクトは、順序付けが正しくなることを確信するためである。システムバリアは、常に、あらゆる場所で、あらゆるものに適用されるため、ドメインを出る際も変化しないことに留意されたい。
【０１６５】
ドメイン内部に再収束経路が存在する場合には、いずれの非ブロッキングバリアも、その再収束領域全体にわたって、ブロッキング化しなければならないことに留意されたい。再収束経路を導入する更なるインターコネクトが、ドメインを有するインターコネクトに接続される場合には、バリアを制御するドメインシステムは、もはや機能しない。ドメインおよびドメインの階層に影響を及ぼすインターコネクトが追加される場合には、そのシステムは、バリアトランザクションがドメインを出る際に、バリアトランザクション内の共用可能性ドメイン指示子が低減されないように制御される。
【０１６６】
再収束領域に関して、特定のアドレスへの一部のトランザクションは、再収束領域を通る特定のルートに沿って通過するように制約される場合があり、そのような場合には、その再収束領域は、そのアドレスに関しては再収束性ではないことに留意されたい。インターコネクトは、全てのアドレスに関して、トランザクションが特定のルートに沿って特定のアドレスへと通過するように、制約される場合があり、そのような場合には、いずれの再収束領域も、交差結合領域として処理することができ、このことは、そのシステムに対して再収束領域が課す多大な制約のために、有利であり得る。
【０１６７】
このインターコネクトを構成する方法によって、共用不可能バリアとしてマーク付けされる、ドメイン内部のいずれのバリアトランザクションも、別のドメインからのトランザクションに遭遇することがないため、そのバリアトランザクションが遭遇するいずれのドメインのトランザクションをも、効果的に制御することになる。共用不可能バリアとしてマーク付けされるバリアトランザクションは、その後に続くいずれのトランザクションも遅延させることはないが、しかしながら、いずれのトランザクションも、このトランザクションに対しての順序変更が許可されることはない。このようにして、インターコネクトのドメインをこのように配置構成し、ドメインの出口上で指示子の階層レベルを低減することによって、出会う全てのトランザクションをバリアトランザクションが遅延させなければならないか、または遅延させてはならないかを判定する単純な方法が、バリアトランザクションがインターコネクト内部のいずれのドメイン内にあるかを、制御構成要素が正確に知る必要なしで、使用される。
【０１６８】
ドメインに関する、更なる可能な実装は、「複合的」実装である。この実装は、上記のトポロジー的制約またはドメインの帰属関係の制約が、あまりに制限的であると見なされる場合に使用することができる。共用不可能およびシステムドメインの帰属関係に対する要件が維持されると想定すれば、必要とされる情報は、その場所で非ブロッキングと見なすことができる、バリアの発行元と共用可能ドメインとの組み合わせの、明示的に列挙されたリストである。それゆえ、図５ａおよび図５ｂに関して説明される実装の場合のように、バリア自体からバリアのブロッキングの性質を判定することができるのではなく、むしろバリアのブロッキングの性質は、場所から判定され、ドメインの情報は、その場所で保存されている。
【０１６９】
このことは、関連する各場所での２つのリストを使用して実行可能であり、１つは、内側共用可能ドメインに関し、１つは、外側共用可能ドメインに関する。各リストは、その場所がそのドメインの外側にある、バリアの供給源のセットを指示する。あるいは、リストは、その場所が外側である、その供給源の共用可能性ドメインを指示する、２ビットの値を使用して、供給源を記憶することができる。
【０１７０】
しかしながら、情報が示されても、設計の再使用を可能にすることは、システムを再使用する際にドメイン情報を示すための異なる要件により、著しく複雑かつ困難になることが明らかである。
【０１７１】
図６は、そのようなインターコネクトの実施例を示す。このインターコネクトは、４つのマスターＳ０、Ｓ１、Ｓ２、またはマスターＳ３からのトランザクション要求を受信する。Ｓ０およびＳ１は、内側ドメイン２００内にあるが、一方でＳ２またはＳ３は、内側ドメイン２０１内にあり、それらは全て外側ドメイン２０２内にある。他のドメインを有する、図示されない他のマスターが存在する。
【０１７２】
場所２１０では、Ｓ２から来るトランザクションに関しては、内側ドメイン内であり、Ｓ０またはＳ１から来るトランザクションに関しては、外側ドメイン内である。それゆえ、この場所は、そのようにマーク付けされ、バリアが受信されると、それらのバリアがいずれのドメインに関連するかを判定することができるため、そのバリアが、そのバリアのドメインの外側にあるか否かを判定することができる。それゆえ、Ｓ０、Ｓ１の内側ドメインに適用されるバリアは、そのバリアのドメインの外側にあり、実施形態に応じて、そのようにマーク付けすることができるか、または早期応答を送ることができる。このことは、明らかに極めて複合的である。
【０１７３】
この実施例の代替例は、保守的な複合的実装である。この実装は、複合的実装の、トポロジー的自由およびドメインの帰属関係の自由が必要とされるが、実装および再使用の問題を回避しなければならない場合に使用される。この場合には、ドメインの位置に固有な挙動を示さなければならないあらゆる構成要素が、それ自体を、特定のレベルのドメイン内にあり、正しい挙動を達成すると見なすようにさせることが可能である。構成要素が、実際にその構成要素が内部に位置するいずれかのドメインのうちの最小のドメイン内にあると見なす場合には、その構成要素は、実際にそれらのドメインの外側にあるバリアに関して、その挙動が保守的な（だが正しい）ものになり、それらのドメインの内部にあるバリアに関しては、正しいものになる。この点で、バリア、ドメイン、またはトランザクションの特性を変更することが可能であり、その場合、それらの特性がより制約的に変更されるのであれば、その変更により、それらをより効率的に処理することが可能になり得ることに留意されたい。それゆえ、内側としてマーク付けされたバリアを、外側バリアとして処理することができ、外側ドメインに適用されるとしてマーク付けされたトランザクションを、内側ドメインに適用されるとしてマーク付けすることができる。
【０１７４】
この手法を使用して、ドメインを認識することが必要な構成要素は、単一のドメイン（内側ドメインの帰属関係の安全なデフォルトを有しており、これは電源投入時に使用することができる）を有するように、単純にプログラムするか、または構成することができる。
【０１７５】
それゆえ、この実装では、ドメインの内部の場所は、共用不可能ドメインを除く最低の階層レベルのドメインである、その場所が帰属する最も制約的な挙動を備えるドメインの特性を有するとして、マーク付けされる。次いで、その場所でのバリアトランザクションは、そのようなドメインの内部にあるとして処理される。そのような構成配置では、ドメインは、他のドメインの部分的サブセットであることが可能である。この配置構成では、バリアがインターコネクト内のどの場所にあるかを知る必要なく、バリアのブロッキング挙動を調整するために、バリアに対するマーク付けを、バリアがドメインを出る際に変更するのではなく、インターコネクト内の場所を、それらの場所が置かれている、最低の階層の、または最小の共用可能ドメインに応じて、特定のドメイン内にあるとしてマーク付けする。
【０１７６】
例えば、図６の実施例では、場所２１０は、３つの異なるマークを使用してマーク付けする必要はなく、その場所が内部にある最小の共用可能ドメイン、すなわち内側ドメインを使用して、単純にマーク付けされる。それゆえ、この場合には、内側または外側であるとしてマーク付けされたいずれのバリアも、このドメイン内部にあると見なされ、Ｓ０、Ｓ１内側ドメインからのバリアは、そうではないにも関わらず、そのバリアのドメインの内部にあると見なされることになる。それゆえ、早期応答を送ることができず、インターコネクトのレイテンシは増大することになり、このことが、この手法の弱点である。しかしながら、ドメインのマーク付けは、より単純であり、バリアがドメインの内部にあるか否かの判定もまた同様である。
【０１７７】
図７は、複数個のマスター２０、２２、およびマスター２４、ならびに複数個のスレーブ３０、３２を有する、更なるインターコネクト１０を示す。それらの間に、詳細には示されない交差結合回路機構４０が存在する。
【０１７８】
この図は、バリアが既に上流でブロック化されており、インターコネクトは更なるブロッキング動作を起こす必要がないことを、インターコネクトに指示するための、バリアトランザクションに対するブロッキング指示子の使用を示す。それゆえ、この場合には、ＧＰＵ２２によって発行されるトランザクションは、レイテンシに関しては重要ではないトランザクションであることにより、発行されるバリアトランザクションに反応して、バリアの後続のトランザクションをブロックし、そのバリアトランザクションをブロッキングバリアトランザクションであるとしてマーク付けする、ブロッキングユニット９０が存在する。このことは、インターコネクト１０内の早期応答ユニットが、このバリアトランザクションに早期応答することがなく、全ての後続のブロッキングユニットが、それに応答してブロックすることがないことを意味する。それゆえ、バリアトランザクションは、バリアトランザクション自体が、その最終的な宛先に到達するまでブロッキングとして留まり、到達した時点で、応答信号がＧＰＵ２２に送られ、ブロッキング回路機構９０がブロックを除去する。ブロッキング回路機構９０は、インターコネクト１０の内部に示されるが、ＧＰＵ２２自体の内部にあってもよいことに留意されたい。
【０１７９】
このことが実行可能であることの有利点は、前述のように、マスターからのトランザクションのレイテンシが重要ではない場合、供給源に近接してこれらのトランザクションをブロックすることは、バリアトランザクションが、交差結合領域内で、他のマスターによって発行されたトランザクションをブロックすることにより、他のマスターに対してレイテンシの不利益を課さないことを意味するという点である。インターコネクト内に再収束経路が存在する場合には、インターコネクト内部のブロッキングユニットが、バリアトランザクションに応答してブロックし、正しい順序付けを確保する必要がある場合があることに留意されたい。
【０１８０】
このブロッキング指示子を使用しない実施形態では、それらのドメインの内側の全てのバリアは、それらがブロッキングではないとして何らかの方式でマーク付けされない限り、ブロッキングであると見なされる。
【０１８１】
図８は、Ｃａｍｂｒｉｄｇｅ  Ｕｎｉｔｅｄ  ＫｉｎｇｄｏｍのＡＲＭ（商標）のＡＸＩ（商標）バスに典型的な、インターコネクト１０を示す。これらのバスは、並列式の読み出しチャネルおよび書き込みチャネルを有することにより、２分割経路を有さないと見なすことができる。しかしながら、これらの経路に沿って移動するトランザクションは、一般にはリンクされており、一方が、経路の他の一方に沿ったトランザクションを、送られるバリアトランザクションへリンクする場合には、これらの経路は２分割経路として処理することができ、早期応答および後続のブロッキングを使用して、バリアトランザクションのレイテンシを低減することができる。それゆえ、この図では、早期応答ユニット８０がバリアトランザクションへの早期応答を生成する経路が示される。その経路はまた、他方の並列経路に送出されるリンクされたトランザクションを、バリアトランザクションが移動している経路に提供する。後続のブロッキングユニット９０は、リンクされたトランザクションが受信されるまで、バリアトランザクションを更に先へ送ることはない。リンクされたトランザクションを送り、双方がそれらの宛先に到達した場合にのみ応答する、この挙動は、バリアが、例えば、９１などの合流点で、またはスレーブの内部で併合することができる場合に必要とされることに留意されたい。それゆえ、ブロッキングバリアトランザクションを、ブロッキングユニット９０からスレーブＳ０に送る場合、リンクされたトランザクションを送る必要があり、バリアトランザクションおよびそのリンクされたトランザクションの双方が受信された場合にのみ、応答が送られる必要がある。ブロッキングトランザクションが送出される経路は、実際にブロックされる経路のみである。
【０１８２】
読み出しストリームおよび書き込みストリームが併合されるのであれば、それらのストリームを合流点で整列させなければならず、それゆえ、バリアおよびリンクされたトランザクションが合流点に同時に到着することを確実にするための、何らかの制御メカニズムが存在しなければならないことに留意されたい。
【０１８３】
図９は、マスター２０、２２、およびマスター２４からの信号を受信するための複数個の入力、ならびにメモリコントローラ１１２を含む様々なスレーブにトランザクション要求を送るための複数個の出力を含む、本発明の実施形態による、インターコネクト１０を示す。
【０１８４】
トランザクションが送られる経路は、２分割経路および交差結合経路を含む。インターコネクトは、バリアトランザクション要求に応答して、これらのバリアに対してのトランザクションの順序付けを確保するように構成される。適用可能な場合にバリアトランザクションを併合することによってインターコネクトのパフォーマンスを向上させるために使用される、併合回路機構１００が存在する。それゆえ、この併合回路機構１００は、互いに隣接する２つのバリアトランザクションを検出した場合には、それらを単一のバリアトランザクションへと併合することになり、その併合されたバリアトランザクションからの応答により、応答信号が、併合されたバリアトランザクションの双方に送られる。
【０１８５】
バリアトランザクションが異なる特性を有する場合には、それらは併合に好適ではない場合があり、またはそれらのバリアトランザクションは、併合されたバリアトランザクションが、双方のバリアトランザクションが機能することを可能にする特性を有するように、それらの特性を修正する必要がある場合があることに留意されたい。それゆえ、例えば、これらのバリアトランザクションの一方の共用可能性ドメインが、そのバリアトランザクションが内側ドメイン１からのトランザクションを制御すること、ならびに隣接するバリアトランザクションが、内側ドメイン１を含む外側ドメイン１および更にはイニシエータデバイスからのトランザクションを制御することを指示する場合には、併合されたバリアトランザクションの共用可能性ドメインは、外側ドメイン１となる。換言すれば、併合される２つのバリアトランザクションの双方の共用可能性ドメインを包含する共用可能性ドメインが、正しく機能する併合されたバリアトランザクションを提供することになる。３つ以上の隣接するバリアトランザクションが存在する場合には、それらもまた併合可能であることに留意されたい。
【０１８６】
併合回路機構１００はまた、隣接していないバリアトランザクションであるが、それらのバリアに従属しない介在トランザクションのみを有するバリアトランザクションも併合することができる。このことは、併合回路機構１００が順序変更バッファ１１０に近接している場合に実行可能である。順序変更バッファは、一般に、高い優先度のトランザクションを、低い優先度のトランザクションよりも前方に配置することができ、低い優先度のトランザクションよりも前に、それらの特定のスレーブへと出て行くことができるように、トランザクションを順序変更するために、使用される。順序変更バッファはまた、併合回路機構１００と共に使用して、隣接していないバリアトランザクションであるが、それらのバリアが適用されない介在トランザクションのみを有するバリアトランザクションを、順序変更することができる。この場合には、バリアトランザクションを互いに隣接するように移動することができ、次いで、それらを併合することができる。この併合回路機構は、２分割リンク上にある必要があり、さもなければ、バリアを併合することによって、他の経路を移動する複製バリアのために、何らかの不正な順序付けが引き起こされる恐れがあることに留意されたい。
【０１８７】
バリアを併合することへの代替は、バリアを削除することである。図１０は、図９と同様の回路機構であるが、削除回路機構１０２を備える回路機構を示す。一部の実施形態では、併合回路機構１００および削除回路機構１０２は、単一のユニットであり、状況に応じて、バリアの併合または削除のいずれかのために機能することに留意されたい。バリア削除回路機構１０２は、交差結合経路および２分割経路を含めた、いずれの経路上でも使用することができ、この削除回路機構１０２が、バリアが別のバリアの後に続き、この別のバリアが、後に続くバリアが適用される全ての非バリアトランザクションに適用され、かつ後に続くバリアが適用される非バリアトランザクションが介在していないことを検出した場合には、この後続のバリアを、全てのそのような先行のバリアに関して応答が受信されるまで、バリア削除回路機構１０２によってストールさせることができる。一旦これらの応答が受信されると、これらの応答を上流に送ることができ、新たなバリアへの応答もまた、上流に送ることができ、このバリアを削除することができる。このようにして、バリアがインターコネクト回路機構から除去され、そのことによってパフォーマンスが向上する。
【０１８８】
このように実行するための、この能力は、それほど頻繁に使用されない周辺機器を管理する場合に使用することができる、更なる有利点を有する。図１１は、インターコネクト回路機構１０、電力管理ユニット１２０、および長期間の非アクティブモードに入る幾つかの周辺機器３２、３４を有する、データ処理装置２を示す。制御回路機構７０を使用して、インターコネクト回路機構１０の様々な部分を制御する。
【０１８９】
周辺機器３２および周辺機器３４へ、それらの非アクティブ期間中に送られるトランザクション要求は、バリアトランザクションのみである場合がある。これらのバリアトランザクションに応答する必要があるが、周辺機器が低電力モードにあり、単にバリアトランザクションに応答するためにその周辺機器を起動するのであれば、不利である。この問題に対処するために、バリア削除回路機構１０２が使用される。周辺機器への経路上に配置されるバリア削除回路機構１０２により、バリアが、制御回路機構７０と連係するバリア削除回路機構１０２によって生成され、周辺機器に送られることが可能になる。一旦、応答が受信されると、周辺機器は低電力モードに入ることができ、次いで、更なるバリアトランザクションの受信の際には、先行のバリアトランザクションに関して応答が受信されているため、この周辺機器を起動させることなく、更なるバリアトランザクションへ単に応答を送ることができ、このバリアトランザクションを削除することができる。
【０１９０】
制御回路機構７０は、周辺機器の非アクティブ状態の検出に応答して、バリアトランザクションを生成するために、バリア削除ユニットを始動させることができ、次いで、一旦応答が受信されると、周辺機器が低電力モードに入ることを示唆するために、電力管理回路機構に接触することができる。あるいは、一旦バリアトランザクションが周辺機器に送られると、制御回路機構７０は、このことを電力管理回路機構１２０に指示することができ、次いで電力管理回路機構１２０が周辺機器に低電力モード信号を送ることにより、周辺機器は低電力モードに入ることができる。あるいは、周辺機器が低電力モードに入る時間であることを、電力管理回路機構が判定した場合には、電力管理回路機構は、このことを周辺機器および制御回路機構７０へ同時に信号で送ることができる。低電力モードに入ることは、バリアトランザクションが周辺機器に送られて、応答が受信されるまで、遅延させることができる。応答が受信された時点で、周辺機器は低電力モードに入ることができ、周辺機器の起動を必要とすることなく、いずれの後続のバリアトランザクションにも応答することができる。
【０１９１】
図１２は、早期応答解放信号を送ることによって、ブロッキングバリアをインターコネクトに通過させて効果的に移動させ、インターコネクトに沿って更にブロックする方法を説明する、流れ図を示す。バリアトランザクション要求に応答して、早期応答信号が送られ、上流のブロックが受信し、次いで解放することにより、その境界トランザクション要求によって制御される後続のトランザクション要求を更に先へ送ることができる。次いで、回路機構は、バリアトランザクション要求それ自体を更に先へ送るが、バリアトランザクション要求によって制御される後続のトランザクション要求に対しては、回路機構がバリアトランザクション要求を送った出口経路をブロックする。幾つかの経路が存在する場合には、回路機構は、バリアトランザクション要求が、その幾つかの経路のそれぞれに沿って送られるように、バリアトランザクション要求を複製する。次いで回路機構は、更に先へ送られているバリアトランザクション要求のそれぞれからの応答信号を待機する。それらの応答信号を受信すると、回路機構は、ブロックされていた後続のトランザクション要求をブロック解除することができ、それらのトランザクション要求を送り出すことができる。このようにして、ブロッキング信号がインターコネクトを通って移動し、後続のトランザクション要求は、バリアトランザクション要求がスレーブで完了するまでマスターで保持されることがないため、インターコネクトのレイテンシが低減される。データ同期バリア要求に関しては、早期応答信号は許可されず、このことにより、バリアが送られる各周辺機器からの解放応答が存在するまで、バリアによって制御される後続のトランザクション要求に対して、インターコネクトがブロックされることに留意されたい。
【０１９２】
バリアトランザクション要求が、ブロッキング要求である場合にも、このトランザクション要求に応答して、早期応答信号が送られることがないことに留意されたい。ブロッキング要求は、上流でブロックされる要求であり、そのようにマーク付けされて、ブロック状態が上流で維持されるべきであることを指示する。上流にブロックが存在するため、そのブロックがバリアとして作用するトランザクションのいずれもが、バリアトランザクション要求への応答信号が受信されるまで、上流のブロックを通過して送信されないことを確実にすることができ、それゆえ、このバリアトランザクション要求に関しては、ブロックする必要がない。
【０１９３】
ブロッキング要求へ早期応答を送ることができる、インターコネクト回路機構内部の幾つかの地点が存在し得、そのブロック状態が下流に移動すると共に、再発行されるバリア自体が、ブロッキングまたは非ブロッキングのいずれかとしてマーク付けされることに留意されたい。バリアが非ブロッキングである場合には、そのバリアの後に、ブロッキングが必要なトランザクションが存在し得ることを指示しており、このことは、それらのトランザクションは既にブロックされているために事実ではないが、この場合、問題にはならず、ブロッキングが必要なトランザクションが、実際は幾つか存在し得る場合に、存在しないと指示することが問題である。このことは、非ブロッキングバリアが交差結合領域に交差するため、後続のトランザクションを遅延させなければならないが、出口点までの全てをブロックすることは望ましくなく、そのため、早期応答を送ることが許容される最初の場所から、早期応答が送られるように、バリアを非ブロッキングとして指示し続ける場合に、有用であり得る。
【０１９４】
それゆえ、その要求が、データ同期バリアトランザクション要求またはブロッキング要求ではない場合には、早期応答が送られ、複製バリアトランザクション要求が送出されたばかりの出口経路は、そのバリアトランザクション要求に関わる後続のトランザクション要求に対してブロックされる。このようにして、上流の経路は後続の要求に対してブロック解除され、それらの後続の要求を、この新たなブロックの地点まで送ることができ、このことにより、要求される順序付けを依然として維持しつつ、システムのレイテンシを低減することができる。次いで、これらの後続の要求は、このノードがブロック解除されるまで、この地点でストールされることになる。場合によっては、トポロジーは、早期応答を与えることおよびブロックすることが実際には逆効果であり得る場合があり、例えば、上流のあらゆるものが２分割である場合には、ブロック解除から恩恵を受けるものは存在し得ず、この地点でのブロッキングは、最初のブロックであり、不必要なブロックであることに留意されたい。
【０１９５】
ノードをブロック解除するために、以下の工程が実行される。更に先へ送られている複製バリアトランザクション要求のいずれかへの応答信号が受信されているか否かが、判定される。１つが受信されると、次に、更なるバリア要求に関して待機される更なる応答信号が存在するか否かが判定される。複製バリア要求の全てが応答すると、出口経路をブロック解除することができ、後続のトランザクション要求を、更に先へ送信することができる。
【０１９６】
図１３は、バリアトランザクション要求を削除する方法における工程を説明する流れ図である。
【０１９７】
バリアトランザクション要求は、２分割経路の開始で受信され、２分割経路に沿って更に先へ送信される。
【０１９８】
次いで、後続のバリアトランザクション要求が受信され、元のバリア要求によって制御されるトランザクション要求が、元のバリア要求の後に続いて受信されたか否かが判定される。そのようなトランザクションが存在していなければ、後続のバリアトランザクション要求が、先行のバリアトランザクション要求と同じ特性を有するか否かが判定される。有している場合は、後続のバリアトランザクション要求は削除され、更に先へ送られることはなく、先行のバリアトランザクション要求から応答が受信されると、このバリアトランザクション要求への応答が送られる。このことが可能であるのは、後続のバリアトランザクション要求が第１のバリアトランザクション要求と同じ特性を有し、第１のバリアトランザクション要求が、第２のバリアトランザクション要求の後に続くトランザクションに対する境界としての役割を果たすことにより、第２のバリアトランザクション要求を更に先へ送る必要がないためである。このことは、これらのバリアトランザクション要求を制御する制御回路機構によって実行される必要がある処理の量を低減し、図１４に関して明らかになるように、低電力モードの周辺機器の場合に更なる有利点を有し得る。この図には示されないが、第２のバリア要求が更に先へ送られる場合には、インターコネクトは、２つのバリア要求に関して、通常の方式で動作することにも留意されたい。
【０１９９】
後続のバリアトランザクション要求が、先行のバリアトランザクション要求と同じ特性を有さない場合には、後続のバリアトランザクション要求は、更に先へ送られて、通常の方式で応答される必要がある。後続のバリアトランザクション要求が、先行のバリアトランザクション要求へのトランザクションのサブセットに影響を及ぼす場合、例えば、より狭い共用可能性ドメインを有するか、または全ての機能ではなく書き込みのみに影響を及ぼす場合には、後続のバリアトランザクション要求に応答することができる。
【０２００】
このことは、２分割経路上であるため、双方のバリアトランザクション要求への早期応答は、双方のバリアトランザクション要求が受信される際に送ることができ、第２のバリアトランザクション要求を単純に削除することができ、２分割経路の終端で必要とされるブロック状態は、後続のバリアトランザクション要求にのみ適用される必要があることに留意されたい。
【０２０１】
この流れ図は、２分割経路に関して示されるが、バリアが同じ特性を有し、そのバリアに従属する介在トランザクションが存在しない場合の、後続のバリアトランザクション要求の削除は、応答が第１のバリアトランザクション要求に関して受信される際に双方のバリアに送られるのであれば、いずれの経路に対しても実行可能であることにも留意されたい。
【０２０２】
図１４は、図１３に関して説明されるバリア境界削除の特性を利用して、周辺機器が低電力モードに入るように制御するための方法における工程を説明する、流れ図を示す。周辺機器が低電力モードに入るべきであることを指示する電源停止信号が受信される。この信号の受信に応答して、バリアトランザクション要求が、２分割経路に沿って周辺機器に提示され、応答が受信される。次いで、周辺機器が電源停止される。後続のバリアトランザクション要求が受信されると、先行のバリアによって制御されたいずれかのトランザクション要求が、先行のバリアの後に続いて受信されたか否かが判定される。受信されていなければ、この後のバリアトランザクション要求が、先行のバリアトランザクション要求と同じ特性を有する場合には、削除することができ、更に先へ送られることはなく、そのバリアトランザクション要求への応答を送ることができる。このようにして、周辺機器が非アクティブの状態の場合には、周辺機器は、バリアトランザクション要求によって妨害され、起動させられる必要はない。
【０２０３】
先行のバリアによって制御される中間のトランザクションが存在する場合、または第２のバリアが先行のバリアと同じ特性を有さない場合には、第２のバリアを削除することはできず、通常の方式で、更に先へ送信しなければならない。
【０２０４】
図１５は、周辺機器の電力消費を低減するための方法における工程を説明する、流れ図を示す。バリアトランザクション要求が受信されて、周辺機器に送信され、その返答として、応答が受信される。このバリアトランザクション要求の受信に応答して、この時点で後続のバリアトランザクション要求を削除可能であることが認証されるため、この時が、周辺機器が低電力モードに入るために都合がよい瞬間であり得る。それゆえ、周辺機器を電源停止するように、電力コントローラに要求が送られ、周辺機器が電源停止される。この時点で、受信される後続のバリアトランザクションは、先行の境界要求によって制御される中間トランザクション要求が受信されておらず、その後続のバリアトランザクションが同じ特性を有している場合には、削除することができ、それらへの応答は、休止中の周辺機器を妨害する必要なく、送ることができる。
【０２０５】
先行のバリアによって制御される中間トランザクションが受信されている場合、または第２のバリアが先行のバリアと同じ特性を有さない場合には、その第２のバリアを削除することはできず、通常の方式で、更に先へ送信しなければならない。
【０２０６】
図１６は、バリアトランザクション要求に関連するオーバーヘッドを、それらのバリアトランザクション要求を可能な場合に併合することによって低減する方法における工程を示す。
【０２０７】
それゆえ、バリアトランザクション要求が、２分割経路の開始で受信されて、早期応答が送られ、そのバリアトランザクション要求が更に先へ送信される。それは２分割経路の開始であるため、この地点では、後続のトランザクション要求に関する経路をブロックする必要はない。
【０２０８】
次いで、後続のバリアトランザクション要求が受信され、早期応答が送られて、そのバリアが更に先へ送られる。２分割経路上には順序変更バッファが存在し、双方のバリアがこの中に保存される。次いで、先行のバリアによって制御され、後続のバリアの前に受信されたいずれかのトランザクション要求が、先行のバリアの後に続いて受信されたか否かが判定される。そのようなトランザクション要求が存在しない場合には、その２つのバリアトランザクション要求は、後続のバリアトランザクション要求の位置で、互いに隣接するように移動される。後続のバリアが制御する介在トランザクションが存在しない場合には、その後続のバリアを、先行のバリアに隣接移動させることができる。次いで、バリア要求の特性が同じであるか否かが判定される。それらが同じであれば、それらのバリア要求を併合し、単一のバリア要求を、ストリーム内の正しい地点で、更に先へ送ることができる。それらのバリア要求が同じ特性を有さない場合には、それらの特性が、共用可能性ドメインを除いて同じであるか否かが判定され、また一方の共用可能性ドメインが、他方のサブセットであるか否かも判定される。このことが当てはまる場合には、バリア要求を併合することができ、併合された要求は、２つの共用可能性ドメインのうち、より大きいドメインが与えられる。次いで、併合されたバリア要求が更に先へ送られる。バリア要求の特性が、併合することができないようなものである場合には、個別の要求が、更に先へ送られる。
【０２０９】
バリアの併合は、上記では、順序変更バッファに関連して説明されるが、適切な特性を有する、隣接するバリアトランザクションは、順序変更バッファを必要とすることなく、２分割経路上で併合可能であることに留意されたい。
【０２１０】
順序変更バッファ内では、順序変更が可能なトランザクションが存在し、かつそれらの間に、この順序変更を阻止するバリア命令がない場合には、一部の実施形態では、トランザクションを併合して、得られた併合トランザクションの両側に対して２つのバリアを１つずつ生成することが許容される点にも留意されたい。
【０２１１】
図１７は、バリアトランザクションが有し得る種々の特性を示す、図１に示すようなインターコネクト内部のブロッキングユニットでバリアを処理する方法における工程を示す、流れ図である。
【０２１２】
それゆえ、バリアトランザクションの受信に続き、後続のトランザクションが、そのバリアによって制御されるとして指定される場合には、応答が受信されるまで、そのトランザクションはブロックされる。そのように指定されなければ、トランザクションの他の特性が考慮される。バリアによって制御されないとして指定される場合には、そのトランザクションは更に先へ送信されて、ブロックされない。そうでない場合には、そのトランザクションが、バリアによって指定される機能を有するか否かが判定される。バリアが特定の機能を指定しない場合があり、その場合には、トランザクションは、その機能とは関係なくブロックされるが、しかしながら、バリアが機能を明示する場合には、この機能を実行しないトランザクションはブロックされずに、更に先へ送信されることに留意されたい。後続のトランザクションがドメインを指示する場合には、そのトランザクションのドメインの指示子が、ストリームの指示子であるか否かが判定される。そうである場合には、トランザクションはブロックされないが、そのドメインが、いずれかの他のドメインである場合には、トランザクションはブロックされる。また、バリアが同期バリアか否か、またはそのバリアがブロッキング指示子を有するか否かも判定される。いずれの場合にも、後続のトランザクションは、予めブロックされていることになるため、これらのバリアによって後続のトランザクションがブロックされることはなく、それゆえ、受信されるいずれの後続のトランザクションも、これらのバリアによって影響を受けることはない。
【０２１３】
これらの工程は、特定の順序で示されるが、当然ながら、任意の順序で実行可能であることに留意されたい。更には、バリアが、特定の機能、イニシエータ、またはドメインの指示子を有さない場合には、これらのことを考慮する必要はない。
【０２１４】
図１８は、本技術による、イニシエータデバイスおよび受信デバイスを示す。イニシエータデバイスは、インターコネクト１０に接続され、次いで受信デバイス３０に接続される、プロセッサＰ０である。インターコネクト１０には、図示されていない、より多くの受信デバイスおよびイニシエータデバイスが接続される場合がある。
【０２１５】
この実施形態では、イニシエータデバイスであるＰ０が、バリア生成器１３０を使用して、バリアを生成する。このバリア生成器は、少なくとも１つの指示子を有するバリアトランザクション要求を生成する。この指示子は、バリアトランザクション要求の性質、すなわち、そのバリアトランザクション要求が、いずれのトランザクション要求を制御するのかということを指示する指示子であってもよく、または、そのトランザクション要求がブロッキングであるか否かを指示する指示子であってもよく、あるいは、その双方であってもよい。バリアトランザクション要求がブロッキング要求であることを、その指示子が指示する場合には、イニシエータデバイスＰ０は、そのバリアへの応答信号が受信されるまで、いずれの更なるトランザクション要求も、そのバリアトランザクション要求の後に続けてインターコネクトに発行することはない。  
【０２１６】
イニシエータデバイスＰ０はまた、プロセッサ１５０およびハザードユニット１４０も有する。
【０２１７】
メモリハザードは、エージェントによって、特定の順序で発生することを見込んで発行された、同一アドレスへのトランザクションが、互いに対して順序変更され得る場合に発生する。ハザードが検出されると、マスターは、後のトランザクションを、それが、先行のトランザクションに関して、完了（読み出しに関しての）、またはバッファリングされた応答（書き込みに関しての）を認めるまで、発行してはならない。
【０２１８】
ハザードの判定を可能にするためには、マスターは、ハザードが発生し得るトランザクションを記録する、トランザクション追跡メカニズムを有さなければならない。このメカニズムは、ハザードが発生し得る保留中のトランザクションを、それらがもはやハザードではなくなるまで保存する、ハザードユニット１４０の形態で提供される。ハザードユニット１４０は、有利には極めて小さい有限サイズを有し、それゆえ、ハザードユニットが満杯になる恐れがあるというリスクが存在する。このことが生じた場合には、プロセッサ１５０は、ハザードユニット内に保存されたトランザクションのうちの１つが完了して、ハザードユニットから削除することができるまで、トランザクションの発行をストールさせる必要がある。ハザードユニット内に保存されるべき保留中のトランザクションが保存されない場合には、訂正不可能なハザードが発生する恐れがある。このことは許容されない。このようにしてストールすることは、明らかに、レイテンシの増大の点でコストがかかる。
【０２１９】
トランザクションを、ハザードが発生することなく完了した場合、危険性は解消される。しかしながら、バリアを発行することによって、ハザードから保護するのであれば、先行のトランザクションは、いずれの後続の危険性のあるトランザクションに対しても、もはや無防備ではないため、ハザードユニット１４０から除去することができる。それゆえ、本発明の実施形態は、バリア生成器１３０を使用することによって、このレイテンシの問題に対処する。バリア生成器１３０は、ハザードユニット１４０が満杯であるときを検出することができ、この検出に応答して、バリアトランザクションを発行することができる。このバリアトランザクションは、後続のトランザクションが、そのバリアトランザクションに対して順序変更されることを防ぐことになり、それゆえ、ハザードユニット内に保存されたトランザクションの潜在的なハザードを解消することができ、次いで、そのトランザクションをハザードユニットから排除することができる。それゆえ、バリア生成器が、いずれのトランザクションもそれに対して順序変更することができない、大域的バリアを生成する場合には、ハザードユニット１４０をフラッシュすることができる。しかしながら、大域的バリアは、それ自体がインターコネクト内でレイテンシを生み出すことになり、望ましくはない場合がある。
【０２２０】
それゆえ、一部の実施形態では、ハザードユニット内部のトランザクションのアドレスに対応する、アドレス指定バリアを生成することが、より有利であり得る。一般には、ハザードユニット内の直近のトランザクションが選択されるが、これは、そのトランザクションが、通常の動作中で最後に排除されるトランザクションとなる可能性が高いためである。それゆえ、バリア生成器１３０は、ハザードユニット内の直近のトランザクションのアドレスを検出して、このアドレスに関するバリアを発行することにより、そのアドレスへのいずれのトランザクションも、そのバリアに対して順序変更されることが許可されない。このことにより、このアドレス指定トランザクションは、もはやハザードである可能性がないことが確実になり、そのトランザクションをハザードユニットから排除することができる。このことによりスペースが開放され、プロセッサ１５０は、トランザクションの発行を継続することが可能になる。
【０２２１】
バリア生成器１３０はまた、他の状況でバリアを生成するためにも使用することができる。例えば、バリア生成器１３０は、プロセッサによって発行される、特定の順序で完了されなければならない、強く順序付けされたトランザクションを検出することができる。一般には、強く順序付けされたトランザクションが出力される場合、Ｐ０は、その強く順序付けされたトランザクションからの、そのトランザクションが完了したことを指示する応答信号を有するまでは、いずれの更なるトランザクションも出力しない。このことは、当然ながら、プロセッサＰ０のレイテンシに影響を及ぼす。一部の実施形態では、バリア生成器１３０は、プロセッサ１５０が強く順序付けされたトランザクションを発行していることを検出して、それ自体でバリアを発行する。一旦、バリアがインターコネクト１０に出力されると、インターコネクト内部の応答ユニット８０は、プロセッサＰ０へ応答信号を送り、この応答信号によりバリアが解放されて、プロセッサＰ０は、更なるトランザクションを出力することが可能になる。強く順序付けされたトランザクションに対しての順序変更による問題を回避するために、ブロッキングユニット９０が後続のトランザクションをブロックする。インターコネクト１０は、バリアがインターコネクトを通過する際にバリアを処理して、必要に応じてブロックおよび解放し、プロセッサＰ０は、トランザクションの発行を継続することができる。インターコネクトは、可能な場合に、バリアを処理して、レイテンシを低減するように設計されるため、システムのレイテンシは、強く順序付けされたトランザクションが完了するまでプロセッサＰ０で発生しているブロックの場合と比較して、低減することができる。
【０２２２】
受信デバイスは、イニシエータデバイスＰ０から、インターコネクト１０を介して、トランザクション要求を受信するための、ポート３３を有し、ブロッキングバリアトランザクション要求の受信に応答して、応答信号生成器３４が、応答を発行し、その応答を、ポート３３を介して、インターコネクト１０へと送信する。バリアトランザクション要求が非ブロッキングトランザクション要求であることへの応答では、受信デバイス３０は、いずれの応答も発行しなくてもよい。更には、受信デバイスは、バリアトランザクション要求上の一部の指示子に応答して、先行して受信されたトランザクション要求の処理が少なくとも部分的に完了するまで、応答信号の生成および／または送信を遅延させることができる。特定のバリアトランザクション要求は、先行のトランザクション要求が、その最終的な宛先に到達しているだけではなく、それらが処理を完了していることも必要とする場合があり、これは、例えばデータ同期バリアの場合である。それゆえ、受信デバイスが、そのようなバリアを、恐らくはバリアトランザクション要求内部の指示子の値から認識することに応答して、受信デバイスは、要求される処理が完了するまで、応答信号の送信を遅延させることができる。
【０２２３】
図１９は、交差結合の再収束領域内の、ブロッキングおよびトランザクションへの応答を、模式的に示す。内部にバリアを有するトランザクションストリームが、分岐点１６０に到着する。分岐点１６０は、その分岐点１６０に関連する、制御回路機構１７０およびバリア管理回路機構１８０を有する。分岐点１６０はまた、トランザクションを保存するためのバッファ１６２も有する。
【０２２４】
バリア管理回路機構１８０は、バリアを複製して、各出口経路に、その複製バリアを送出する。制御回路機構１７０は、後続のトランザクションを、更に先へ進行することからブロックするように機能し、複製バリアトランザクションへの応答信号を監視する。２つの応答の受信に応答して、本実施形態での制御回路機構は、応答が未だ受信されていない経路をブロック解除して、後続のトランザクションが、この経路に沿って進行することを可能にする。それらの後続のトランザクションは、この１つの経路を下ることのみが許可されるため、それらは、バリアおよび先行のトランザクションを、この経路上で追い越すことができず、他の経路上ではバリアが応答されているため、それらのトランザクションに対しての順序変更の危険は存在しない。この経路を早期にブロック解除することは、この経路が恐らくは最大のトラフィックを有する経路であるため、特に有利であり、その経路は応答が最も遅いため、後続のトランザクションを、この経路に可能な限り早く送出することは、レイテンシの低減に役立つ。
【０２２５】
後続のトランザクションを送る前に、バリア表示もまた、この経路に送出することができる。このことは、この場合のように、更なる経路の分離が存在し得る場合に必要とされる。
【０２２６】
次の分岐の地点１９０で、バリアの受信の結果として、応答信号が送られ、他の経路が解放される一方で、バリア表示の受信の結果として、バリア管理回路機構１８０がバリアを複製して、各出口経路に、その複製バリアを送出し、一方で制御回路機構１７０は、後続のトランザクションをストールさせるように働く。一方の経路上の応答信号の受信に応答して、他方の経路を、応答が受信されていない唯一の経路としてブロック解除することができ、バリア表示と共に、後続のトランザクションが更に先へ送られる。双方の経路上で応答が受信された場合、双方の経路がブロック解除される。
【０２２７】
バリア表示は決して複製されることがなく、応答を必要としないことに留意されたい。バリア表示は、そのバリア表示の後に続くトランザクションが、応答が受信される前に送信されたことを、回路制御機構が理解することを可能にするのみであり、それゆえ、例えば後続の分岐の地点が存在する場合には、ブロッキングを必要とし得る。
【０２２８】
これは、バリアを処理する効率を改善する簡便な方法である。更には、一部の実施形態では、図１９に示す経路２００が、偶然、トラフィックを殆ど有さない経路であり、恐らくは先行のトランザクションが、応答が受信されているバリアであった場合には特に有利であり得、その場合、分岐の地点１９０での、このバリアの複製の際に、バリア管理回路機構は、経路２００を下った先行のトランザクションがバリアであったこと、およびそのバリアに関して応答信号が受信されていることを認識することになり、バリア管理回路機構は、複製バリアを削除して応答することができ、この場合には、他方の経路を直ちに開放して、その経路に後続のトランザクションを送ることによって、システムのレイテンシを更にまた低減することができる。
【０２２９】
図２０は、種々のバリアトランザクションの概要、および、それらが種々の要件を有するインターコネクトの種々の領域に入る際に、どのように１つのタイプから別のタイプへと変換され得るかを示す。このようにして、そのブロッキングの性質を可能な場合に取り除き、その性質を必要に応じて再導入することによって、バリアによって導入されるレイテンシを低減することができる。
【０２３０】
メモリバリアトランザクションは、それらがインターコネクト内のどの場所にあるかに応じて、ブロッキングか否かであり得る。実際には、これらのバリアの３つの異なる挙動が存在し、それらをメモリバリアの３つの異なるタイプとして考察することができる。ブロックせずにトランザクションストリーム内に留まり、先行のトランザクションから後続のトランザクションを隔てる、順序バリアであって、ドメインを有するインターコネクト内では、そのドメインの外側のメモリバリアが、順序バリアの役割を果たす、順序バリアと、意図的にブロックを行い、ＤＳＢに相当する、システムフラッシュバリアと、一般にはブロックを行なわないが、必要なトポロジー的理由（交差結合領域内で）、または任意選択的パフォーマンスの理由により、局所的にブロックを行なうことになる、局所的フラッシュバリアとが存在する。
【０２３１】
３つのタイプの間での変換は、多くの場合で可能である。順序バリアから、システムフラッシュバリアまたは局所的フラッシュバリアへの変換は、その変換地点が後続のトランザクションをブロックすることを必要とする。システムフラッシュバリアまたは局所的フラッシュバリアから、順序バリアへの変換は、早期応答が与えられること（後続のトランザクションが送られるようにするために）は必要ではないが、早期応答を提供することができる―早期応答を送ることがない変換は、バリアの発行元に関するレイテンシが低減されず、より多くのマスターを次の交差結合領域でブロックさせることになるため、無意味である。早期応答が必要とされる（および許容される―すなわち、２分割領域で）ならば、早期応答がシステムフラッシュバリアまたは局所的フラッシュバリアに応答する場合には、早期応答は、バリアの後からのトランザクションが送られるようにすることができるため、応答を提供する場所は、これらの後のトランザクションをブロックしなければならないか、またはそのバリアを、順序バリアであるように変更しなければならないかのいずれかである。
【０２３２】
一般には、任意選択的な変換は稀であると予想されるが、これは、トランザクションの性質が、パフォーマンスの管理およびクオリティオブサービス上の理由を尊重するために有用であるためである―問題となるバリアのブロッキングの性質を使用して、そのバリアのブロッキングの性質が発行元および他のマスターに付加するレイテンシを、トレードオフすることができる。
【０２３３】
図２０は、発生する状況により許容されるブロッキングの変換、およびその変換に必要とされるブロッキングを示す。
【０２３４】
本発明の様々な更なる態様および特徴が、添付の特許請求の範囲において定義される。本発明の範囲から逸脱することなく、本明細書で前述された実施形態に様々な修正を加えることができる。
【図１】
0005865976.tif 000002
【図２】
0005865976.tif 000003
【図３】
0005865976.tif 000004
【図４】
0005865976.tif 000005
【図５ａ】
0005865976.tif 000006
【図５ｂ】
0005865976.tif 000007
【図６】
0005865976.tif 000008
【図７】
0005865976.tif 000009
【図８】
0005865976.tif 000010
【図９】
0005865976.tif 000011
【図１０】
0005865976.tif 000012
【図１１】
0005865976.tif 000013
【図１２】
0005865976.tif 000014
【図１３】
0005865976.tif 000015
【図１４】
0005865976.tif 000016
【図１５】
0005865976.tif 000017
【図１６】
0005865976.tif 000018
【図１７】
0005865976.tif 000019
【図１８】
0005865976.tif 000020
【図１９】
0005865976.tif 000021
【図２０】
0005865976.tif 000022