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