(57)【特許請求の範囲】
【請求項１】
遠隔デバイスに対するバス・トランザクションの同期を制御する方法であって、
デバイスへ向けられたメモリ・バリア・コマンドをバス・マスタから発行することと、
前記バス・マスタから発行された前記デバイスへ向けられたメモリ・バリア・コマンドをバス相互接続回路で受信することと、ここで前記バス相互接続回路は、バス・トラフィックを管理し、前記バス・マスタと選択された宛先デバイスとの間の接続パスを提供し、前記デバイスへ向けられたメモリ・バリア・コマンドは、前記メモリ・バリア・コマンドの前に発行された全ての未処理の明示的なメモリ・アクセスが、以降のあらゆるメモリ・トランザクションが開始する前に完了していることを保証し、宛先デバイスの多重レベルの相互接続階層における階層レベルの相互接続に関連付けられた複数の宛先デバイスおよび前記バス・マスタによるアクセスが可能な識別された前記階層レベルの相互接続を識別する識別情報を有している、
前記複数の宛先デバイスから宛先デバイスを選択するために、前記デバイスへ向けられたメモリ・バリア・コマンドおよび前記識別情報を前記バス相互接続回路で復号することと、
前記復号に応答して前記識別された階層レベルの相互接続にしたがって前記選択された宛先デバイスへ前記メモリ・バリア・コマンドのための接続パスを提供することとを備え、
前記デバイスへ向けられたメモリ・バリア・コマンドは、データ同期バリア（ＤＳＢ）コマンドの後に発行されたどのメモリ・アクセスも前記ＤＳＢコマンドが完了するまで実行されないという追加要件を備え、データ・メモリ・バリアと同じ方式で動作する前記ＤＳＢコマンドとして解釈され、
第一の階層レベルは、少なくとも１つのバス・マスタに接続された第一のバス相互接続回路と同一であるとし、第二の階層レベルは、バス相互接続回路の連続する直列取付けと同一であるとみなされる階層レベルが増加した、前記第一のバス相互接続回路に接続される第二のバス相互接続回路と同一であるとする方法。
【請求項２】
前記デバイスへ向けられたメモリ・バリア・コマンドは、アドレスへ向けられたメモリ・バリア（ＡＤＢ）コマンドとして符号化され、これによって、前記バス相互接続回路は、前記識別情報を、第一のセクションにおいて第一のアドレス範囲を有し、第二のセクションにおいて第二のアドレス範囲を有するものとして解釈することができるようになる請求項１に記載の方法。
【請求項３】
前記第一のアドレス範囲に応答する宛先デバイスは前記宛先デバイスの多重レベルの相互接続階層における第一の階層レベルの相互接続にあり、第二のアドレス範囲に応答する宛先デバイスは前記宛先デバイスの多重レベルの相互接続階層における第二の階層レベルの相互接続にある請求項２に記載の方法。
【請求項４】
前記ＡＤＢコマンドは、前記バス相互接続回路を通って、前記選択された宛先デバイスに渡され、前記ＡＤＢコマンドは、前記選択された宛先デバイスにおいて、前記データ同期バリア（ＤＳＢ）コマンドとして解釈され、ここで、前記ＤＳＢコマンドは、前記ＤＳＢコマンドの後に発行されたどのメモリ・アクセスも前記ＤＳＢコマンドが完了するまで実行されないことを除いて、データ・メモリ・バリアと同じ方式で動作する請求項２に記載の方法。
【請求項５】
前記デバイスへ向けられたメモリ・バリア・コマンドは、セグメントへ向けられたメモリ・バリア（ＳＤＢ）コマンドとして符号化され、これによって、前記バス相互接続回路は、前記識別情報を、第一のセクションおよび第二のセクションを有するものとして解釈することができるようになる請求項１に記載の方法。
【請求項６】
前記第一のセクションが前記宛先デバイスの多重レベルの相互接続階層の内の第一の階層レベルの相互接続における宛先デバイス毎にビットを指定し、前記第二のセクションが前記宛先デバイスの多重レベルの相互接続階層における第二の階層レベルの相互接続における宛先デバイス毎に前記ビットを指定し、前記両セクションの一方のアサートされたビットが前記選択された宛先デバイスを指定する請求項５に記載の方法。
【請求項７】
前記ＳＤＢコマンドは、前記バス相互接続回路を通って、前記選択された宛先デバイスに渡され、前記ＳＤＢコマンドは、前記ＳＤＢコマンドを受信した各々の宛先デバイスにおいて、前記データ同期バリア（ＤＳＢ）コマンドとして解釈され、ここで、前記ＳＤＢコマンドは、前記ＳＤＢコマンドの後に発行されたどのメモリ・アクセスも前記ＳＤＢコマンドが完了するまで実行されないことを除いて、データ・メモリ・バリアと同じ方式で動作する請求項５に記載の方法。
【請求項８】
前記デバイスへ向けられたメモリ・バリア・コマンドは、コマンド符号化ビットの第一のユニークな符号化によって、第一のタイプのデータ同期バリア（ＤＳＢ）コマンドとして識別され、第二のタイプのＤＳＢコマンドは、前記コマンド符号化ビットの第二のユニークな符号化によって、アドレスに向けられたメモリ・バリア（ＡＤＢ）コマンドとして識別され、第三のタイプのＤＳＢコマンドは、前記コマンド符号化ビットの第三のユニークな符号化によって、セグメントに向けられたメモリ・バリア（ＳＤＢ）コマンドとして識別され、ここで、前記ＤＳＢコマンドは、前記ＤＳＢコマンドの後に発行されたどのメモリ・アクセスも前記ＤＳＢコマンドが完了するまで実行されないことを除いて、データ・メモリ・バリアと同じ方式で動作する請求項１に記載の方法。
【請求項９】
前記選択された宛先デバイスは、前記ＡＤＢコマンドを前記ＤＳＢコマンドとして解釈する請求項８に記載の方法。
【請求項１０】
前記選択された宛先デバイスの各々は、前記ＳＤＢコマンドを前記ＤＳＢコマンドとして解釈する請求項８に記載の方法。
【請求項１１】
前記宛先デバイスの多重レベルの相互接続階層の第二の階層レベルの相互接続で宛先デバイスに接続されている第二のバス相互接続回路を含む前記宛先デバイスの多重レベルの相互接続階層の第一の階層レベルの相互接続でバス相互接続回路が宛先デバイスに接続されている請求項１に記載の方法。
【請求項１２】
前記デバイスへ向けられたメモリ・バリア・コマンドが、バリアを生成しコンテキストを同期させるための前記データ同期バリア（ＤＳＢ）コマンドとして解釈され、ここで、前記ＤＳＢコマンドは、前記ＤＳＢコマンドの後に発行されたどのメモリ・アクセスも前記ＤＳＢコマンドが完了するまで実行されないことを除いて、データ・メモリ・バリアと同じ方式で動作する請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、処理システムにおけるメモリ一貫性に関し、さらに詳しくは、メモリ・バリア動作に関連する改良に関する。
【背景技術】
【０００２】
例えば、セル電話、ラップトップ・コンピュータ、情報携帯端末（ＰＤＡ）のような多くのポータブル製品は、例えば通信プログラムおよびマルチメディア・プログラムのようなプログラムを実行するプロセッサを利用する。そのような製品のための処理システムは、命令群およびデータの処理のためのプロセッサ複合体を含んでいる。そのようなポータブル製品や、その他のパーソナル・コンピュータのような機能の複雑さによって、高機能プロセッサおよびメモリを必要とするようになった。同時に、ポータブル製品は、バッテリの形態をとる制限された電源しか有しておらず、バッテリ寿命を延ばすために、高性能な動作を提供する。今日開発されている多くのパーソナル・コンピュータはまた、全体的なエネルギー消費量を低減するために、低電力消費で高い性能を与えるように設計されている。
【０００３】
メモリ利用の正しい動作および一貫性を保証するために、プロセッサ複合体は、一般に、複数のプロセッサ、複数のプログラム・スレッド、複数のダイレクト・メモリ・アクセス（ＤＭＡ）デバイス、あるいは、さらに一般的には複数のバス・マスタによって共有される複数のバス・マスタ間のメモリ利用を制御するために、プロデューサ／コンシューマ関係が、２またはそれ以上のプロセッサまたはマスタ間で定義されうる。そのような関係では、共有メモリにデータまたは「ペイロード」を書き込んでいる１つのプロセッサまたはマスタは、プロデューサと称される。書き込まれたペイロードに関する受信または動作を行うその他のプロセッサまたはマスタは、コンシューマと称される。ペイロードは、単一のデータ・アイテムであるか、あるいは、例えば、より複雑な、データからなる複数の情報パケットまたはフレームでありうる。
【０００４】
複数のバス・マスタ間の秩序（order）を維持するために、コンシューマは、ペイロードが安全にアクセスされうるとプロデューサによって通知されるまで、ペイロードにアクセスすることができない。そのような通知は、ソフトウェア／ハードウェア割込、セマフォ更新、あるいは、単数または複数のアクセス・インジケーション・ビットを設定するレジスタ書込によってなされうる。その後、コンシューマ・バス・マスタは、たった今書き込まれたペイロード情報の読み取りを安全に開始し、ペイロードの処理を実行することができる。コンシューマがその処理を完了すると、変更されたペイロードをメモリに書き戻し、この処理において、変欧されたペイロードのプロデューサとなる。
【０００５】
コンシューマは、メモリから別のペイロードを読む準備ができている時点において、例えば、ソフトウェア／ハードウェア割込、セマフォ更新、またはレジスタ書込によって、新たなペイロードを処理する準備ができていることをプロデューサに通知する。この順序付けられたシーケンスは、無期限的に継続することができる。このプロデューサ／コンシューマ関係では、アクセス可能であるとカスタマに通知する前に、ペイロード全体がメモリに完全に書き込まれていることが重要である。これが生じる前にコンシューマに通知された場合、コンシューマは、実際、前のペイロードから「古くなった」ペイロード・データまたはデータを読み取りうる。相互接続構成における書込バッファリング、および、メモリに対する任意のブリッジによって、プロデューサが、相互接続構成における第１のバッファから受信されたように、書込完了インジケーションをマスタ・インタフェース上に有していても、書込データが、中間ステージに格納され、そこに存在する。バス・トランザクションの同期は、そのような状況では維持されない。
【発明の概要】
【０００６】
本開示は、バス・トランザクションの同期を制御するより効率的な方法および装置を提供することによって、プロセッサ・システムにおける性能を高め、必要な電力量を低減することができることを認識している。また本開示は、複雑な処理システムにおける相互接続構成が、性能を向上しかつ電力使用量を低減するために、プロセッサと共有メモリ・デバイスとの間の効率的なデータ転送を提供するように工夫される必要があることを認識している。そのような目的のために、本発明の実施形態は、遠隔デバイスへのバス・トランザクションの同期を制御する方法を取り扱う。デバイスへ向けられたメモリ・バリア・コマンドが受信される。デバイスへ向けられたメモリ・バリア・コマンドは、１または複数の宛先デバイスを判定するために復号される。メモリ・バリア・コマンドは、この復号に応答して、１または複数の宛先デバイスへと選択的にルーティングされる。
【０００７】
別の実施形態は、バス相互接続を取り扱う。バス相互接続は、デバイスへ向けられたメモリ・バリア・コマンドを受信し、識別するように構成されたコントローラを含む。バス相互接続はまた、デバイスへ向けられたメモリ・バリア・コマンドが識別されることに応答して、デバイスへ向けられたメモリ・バリア・コマンドに関連付けられた情報に基づいて遠隔デバイスを選択し、選択された遠隔デバイスへとメモリ・バリア・コマンドを選択的にルーティングするデコーダおよびパス選択ユニットをも含む。
【０００８】
別の実施形態は、遠隔デバイスへのバス・トランザクションの同期を制御するバス・マスタ方法を取り扱う。選択された遠隔デバイスへのバス・トランザクションの同期を制御するために、デバイスへ向けられたメモリ・バリア・コマンドが、バス相互接続へ発行される。バス相互接続から完了応答を受信する。完了応答は、デバイスへ向けられたメモリ・バリア・コマンドの完了を示す。この完了応答に応答して、選択された遠隔デバイスに関連付けられた別のバス・マスタへ通知が送られる。
【０００９】
本発明のその他の実施形態も、本発明のさまざまな実施形態が示され、例示によって説明されている以下の詳細説明から、当業者によって容易に明らかになるであろうことが理解される。理解されるように、本発明は、その他および別の実施形態も可能であり、そのいくつかの詳細は、本発明の精神および範囲からすべて逸脱することなく、その他さまざまな態様での変形が可能である。したがって、図面および詳細説明は、本質的に例示と見なされるべきであり、限定すると見なされるべきではない。
【図面の簡単な説明】
【００１０】
本発明のさまざまな態様は、添付図面において、限定するのではなく、例として示されている。
【図１】図１は、無線通信システムを例示する。
【図２】図２は、複数のバス・マスタ、デバイスへ向けられたメモリ・バリア・コマンドを適用するバス相互接続、および、複数のスレーブ・デバイスを備えたプロセッサ複合体である。
【図３】図３は、アドレスへ向けられたメモリ・バリア・コマンドを解釈し、それに対して応答する相互接続システムである。
【図４】図４は、アドレスへ向けられたメモリ・バリア・コマンドとともに使用されるアドレス属性の典型的なアドレス・フォーマットを例示する。
【図５】図５は、セグメントへ向けられたメモリ・バリア・コマンドとともに使用されるセグメント属性の典型的なデバイス・セレクタ・フォーマットを示す。
【図６】図６は、例えば図４のアドレス・フォーマット４００によって、あるいは、図５のデバイス・セレクタ・フォーマット５００によって与えられるような、アドレス・チャネルからのデバイス情報の受信を求めるデバイスへ向けられたメモリ・バリア・コマンドの発行時におけるタイミング・イベントのシーケンスを例示するタイミング図を示す。
【図７】図７は、セグメントへ向けられたメモリ・バリア・コマンドを解釈し、それに対して応答する相互接続システムを例示する。
【図８】図８は、バス相互接続が、デバイスへ向けられたメモリ・バリア・コマンドに応答するイベントのシーケンスのフロー図を例示する。
【発明を実施するための形態】
【００１１】
添付図面に関連して以下に記述される詳細説明は、本発明の典型的なさまざまな実施形態の説明として意図されており、本発明が実現される唯一の実施形態を表すことは意図されていない。この詳細説明は、本発明の完全な理解を与えることを目的とした具体的な詳細を含む。しかしながら、本発明は、これら具体的な詳細無しで実現されうることが当業者に明らかになるであろう。いくつかの事例では、周知の構成および構成要素が、本発明の概念を不明瞭にしないように、ブロック図形式で示される。
【００１２】
図１は、本発明の実施形態が有利に適用される典型的な無線通信システム１００を例示する。例示目的のために、図１は、３つの遠隔ユニット１２０、１３０、１５０および２つの基地局１４０を示している。一般的な無線通信システムは、それよりも多くの遠隔ユニットおよび基地局を有しうることが認識されるだろう。構成要素１２５Ａ、１２５Ｃ、１２５Ｂ、１２５Ｄによってそれぞれ示されるハードウェア構成要素、ソフトウェア構成要素、またはその両方を含む遠隔ユニット１２０、１３０、１５０および基地局１４０は、
以下に詳述するように、本発明を組み込むように適合されている。図１は、基地局１４０から遠隔ユニット１２０、１３０、１５０への順方向リンク信号１８０と、遠隔ユニット１２０、１３０、１５０から基地局１４０への逆方向リンク信号１９０とを示す。
【００１３】
図１では、遠隔ユニット１２０がモバイル電話として示され、遠隔ユニット１３０がポータブル・コンピュータとして示され、遠隔ユニット１５０が、無線ローカル・ループ・システムにおける固定位置遠隔ユニットとして示されている。例として、遠隔ユニットは、セル電話、ページャ、ウォーキー・トーキー、ハンドヘルド・パーソナル通信システム（ＰＣＳ）ユニット、例えば情報携帯端末のようなポータブル・データ・ユニット、あるいは、例えばメータ読取機器のような固定位置データ・ユニットでありうる。図１は、本開示の教示にしたがった遠隔ユニットを例示しているが、本開示は、これら例示された典型的なユニットに限定されない。本発明の実施形態は、共有メモリ・サブシステムを有する任意のデバイスにおいて適切に適用されうる。
【００１４】
図２は、複数のバス・マスタ２０４−２０６、デバイスへ向けられたメモリ・バリア・コマンドを適用するバス相互接続２２０、２２２、および、複数のスレーブ・デバイス２１０−２１２、２１６−２１８を備えたプロセッサ複合体２００の典型的な実施形態である。複数のバス・マスタ２０４−２０６および複数のスレーブ・デバイス２１０−２１２、２１６−２１８は、バス相互接続２２０、２２２を介して互いに結合される。もし存在するのであれば、特定のアプリケーションのために必要とされるバス・マスタ、スレーブ・デバイス、およびバス相互接続の実際の数は、処理要件および設計制約に依存して変わりうる。おのおののバス・マスタは、プロセッサ、複数のプロセッサのクラスタ、デジタル信号プロセッサ、複数のプログラム・スレッドをサポートするスレッド・プロセッサ、ダイレクト・メモリ・アクセス（ＤＭＡ）コントローラ等でありうる。
【００１５】
バス相互接続２２０のようなバス相互接続は、バス・トラフィックを管理し、１または複数のバス・マスタと、複数のスレーブ・デバイスとの間の接続パスを提供する。スレーブ・デバイスは、メモリ・コントローラや、例えばブリッジＡスレーブ２１１およびバス相互接続２２２のような他のバス相互接続デバイスへ相互接続するブリッジ・デバイスや、例えばハード・ディスク・コントローラ、ユニバーサル・シリアル・バス（ＵＳＢ）コントローラ、インタラクティブ・ディスプレイ・デバイス・コントローラを送信機および受信機に接続するラジオ・デバイス等のような周辺デバイスでありうる。バス・マスタ、バス相互接続デバイス、およびスレーブ・デバイスは、特定用途向けＩＣ（ＡＳＩＣ）技術、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）技術、または他のプログラマブル・ロジック、ディスクリート・ゲートまたはトランジスタ・ロジック、あるいは意図されたアプリケーションに適せつなその他任意の利用可能な技術を用いて実現されうる。
【００１６】
バス・マスタまたはスレーブ・デバイス内で使用されるプロセッサは、例えば命令キャッシュを介して利用可能であるか、あるいは、スレーブ・デバイスからバス相互接続を介してアクセスすることが可能な、プロセッサとローカルに直接的に関連付けられた記憶媒体に格納されたプログラムの制御下にある命令群を実行するように構成されうる。バス・マスタはまた、例えばデータ・キャッシュによって利用可能であるか、あるいは、スレーブ・デバイスからバス相互接続を介してアクセスすることが可能な、プロセッサとローカルに直接的に関連付けられたメモリ・デバイス内に存在するデータを処理することができる。記憶媒体は、ランダム・アクセス・メモリ（ＲＡＭ）、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、シンクロナス・ダイナミック・ランダム・アクセス・メモリ（ＳＤＲＡＭ）、フラッシュ・メモリ、読取専用メモリ（ＲＯＭ）、プログラマブル読取専用メモリ（ＰＲＯＭ）、消去可能プログラマブル読取専用メモリ（ＥＰＲＯＭ）、電子的消去可能プログラマブル読取専用メモリ（ＥＥＰＲＯＭ）、コンパクト・ディスク（ＣＤ）、デジタル・ビデオ・ティスク（ＤＶＤ）、その他のタイプのリムーバブル・ディスク、あるいはその他任意の適切な記憶媒体を含みうる。
【００１７】
バス相互接続２２０、２２２は、個別の書込データ・バス、アドレス・バス、読取データ・バス、および関連する制御信号を有する一般的な形態で例示される。多くのシステムでは、書込／読取統合データ・バスが利用されうる。一般に、個別のアドレス・チャネル、読取データ・チャネル、および書込データ・チャネルは、特定のシステムの要件に依存して、特定のバス・アーキテクチャまたは規格に準拠する。書込送信パスの議論を明確にするために、読取、書込、バリア等の応答を伝送する書込チャネル（ＷＣＨ）２２４、アドレス・チャネル（ＡＣＨ）２２６、および応答チャネル（ＲＳＰ）２２８が記述され、ソース・デバイスから宛先デバイスへの転送アドレス、転送属性、コマンド、および書込データの通信が可能となる。有利なことに、個別の書込応答チャネルが、改善されたシステム性能のために使用されることが注目される。
【００１８】
転送属性は、転送の性質を記述するか、あるいは、転送によって要求される追加情報を与える。例えば、転送を記述する転送属性は、アドレス・チャネルに関連付けられており、転送を受信することになっている単数または複数の宛先デバイスを識別するために使用されうる。あるいは、転送属性が、通信サブシステムのアーキテクチャに依存して、サイドバンド・シグナリングを用いて送信されるか、あるいは、データ・パケット内にヘッダの一部として含まれる。限定される訳ではないがこの構成によって、スレーブ・デバイスに対するバス・インタフェースが、同じタイプまたは類似のタイプのインタフェースに取り付けられることがさらに仮定される。これら個別のインタフェースは、一般に、複数のデバイス間におけるバス・トラフィックにおけるフロー制御および変化をサポートするためにバッファされる。特に、典型的なプロセッサ複合体２００は、バス・マスタ２０４−２０６から、複数のスレーブ・デバイス２１０−２１２、２１６−２１８のうちの何れかへの書込パスのためのバッファ２３０−２４５を例示する。反対方向であるが、バス・マスタとスレーブ・デバイスとの間の読取データ・パスも、同様の方法で実現されることが認識される。
【００１９】
そのようなプロセッサ複合体２００におけるバス・マスタは、時々、ソース・ポイントと宛先ポイントとの間のさまざまなバスを介してなされる読取動作および書込動作のために、順序付けられたトランザクションを必要とする。例示目的のために、典型的なデータ転送シナリオが説明される。ここでは、バス・マスタ２０４が、データを格納する前にデータを処理するプロセッサであり、Ｂスレーブ２１８が、データを受け取るメモリ・ユニットであり、バス・マスタ２０５が、次にハード・ディスクに格納するために、Ｂスレーブ２１８に格納されたデータを取得するハード・ディスク・コントローラである。このデータ転送シナリオは、バス・マスタ２０４が、Ｂスレーブ２１８に格納されるべきデータのブロックを送信し、バス・マスタ２０５に対して、Ｂスレーブ２１８からデータを取得し、それをハード・ディスクへ保存するように指示する高次レベルで見ることができる。このシナリオは、データのブロックを、バス相互接続２２０におけるバッファ２３０、２３４を介して、ブリッジＡスレーブ２１１内のバッファ２３７へ、バス相互接続２２２内のバッファ２３９、２４２へ、さらにはＢスレーブ２１８内のバッファ２４５へ転送することからなる。その後、Ｂスレーブ２１８は、メモリ内に、データのブロックを格納する。データのブロックが格納されると、バス相互接続２２２を介して、ブリッジＡスレーブ２１１へ、バス相互接続２２０へ、さらにはバス・マスタ２０４へとアクノレッジメントが送り返される。その後、バス・マスタ２０４は、バス・マスタ２０５に対して、ハード・ディスクに格納するために、このデータのブロックを取得することが可能であることを伝える。バス・マスタ２０５は、２つのバス相互接続２２０、２２２を介し、受信パスにしたがってデータを取得し、ディスクへの格納動作を完了する。この種の動作シーケンスは、プロデューサ−コンシューマ・モデルと称される。
【００２０】
複数のバス・マスタがデータを格納し、メモリＢスレーブ２１８からデータを取得する複合システムでは、これらトランザクションは、バス・アクセスのためのアービトレーションのレイテンシや、バスを介した送信時間によって、比較的長時間を要する。高性能プロセッサは、処理を継続し、前の動作が完了する前に、同じデバイスへさらなるデータを送信する準備ができている。アクノレッジメントが受信されるまでプロセッサ・バス・マスタ２０４を遅らせること、または、バス・マスタに対して、動作の順序を保つことを求めることによって、性能は著しく低下する。
【００２１】
上述したように、マルチ・プロセッサ・システムにおけるバス・マスタは、時々、さまざまなシステム相互接続バスを介して共有メモリ機能に至る読取および書込のため、順序付けられたトランザクションを必要とする。メモリに対する読取動作および書込動作の多くは、読取トランザクションおよび書込トランザクションが、開始されたときと同じ順序で完了することを必要とする。この順序関係が維持される一方、関連性のない読取トランザクションおよび書込トランザクションを順序に関係なく動作させることによって、性能上の利点が得られることが注目される。その結果、弱く順序付けられた（weakly-ordered）メモリ・モデルが使用されうる。弱く順序付けられたメモリ・モデルによって、例えば、書込から読取、読取から読取、および読取から書込といったプログラム順序が緩和される。これは、読取から自己への書込を早く行うことを含む。弱く順序付けられたメモリ・モデルは、一般に、他の読取からの書込を早く行うことを許可しない。
【００２２】
順序付けられたトランザクションおよび順序付けられないトランザクションの両方に対するニーズによって、幾つかのアーキテクチャは、必要な場合に、順序付けられたトランザクションを実行させるために、フェンスまたはメモリ・バリア動作を使用するようになる。本明細書で使用されるように、メモリ・バリアは、共有メモリへトランザクションの順序を強いるために使用される一般的な動作である。例えば、２つのタイプのメモリ・バリアを記述する。第１のタイプは、データ・メモリ・バリア（ＤＭＢ）である。これは、バス・マスタによってなされた前のメモリ・アクセスとその後のメモリ・アクセスとの間に単にバリアを生成する。ＤＭＢは、ＤＭＢの前に発行された全ての未処理の明示的なメモリ・アクセスが、以降のあらゆるメモリ・トランザクションが開始する前に完了していることを保証する。第２のタイプは、データ同期バリア（ＤＳＢ）である。これは、バリアを生成するのみならず、コンテキスト同期を強いる。ＤＳＢは、ＤＳＢの後に発行されたどのメモリ・アクセスもＤＳＢが完了するまで実行されないという追加要件を備え、ＤＭＢと類似した方式で動作する。例えば、ＤＳＢが完了する前は、全てのキャッシュ命令、分岐予測命令、および、変換ルック・アサイド・バッファ（ＴＬＢ）維持命令はともに実行されない。
【００２３】
プロデューサ・コンシューマ関係では、プロデューサ・バス・マスタによって開始されたデータ転送動作は、コンシューマである別のバス・マスタに対して、データが転送され現在利用可能であることを通知する前に完了していなければならない。そのような要件が守られない場合、プロデューサがそのマスタ・インタフェースに書込完了インジケーションを持っている場合であっても、書込データが、例えばバッファ２３０−２４５のような相互接続サブシステム内の中間ステージに格納され、そこに存在する。
【００２４】
そのような問題に取り組む１つのアプローチは、ペイロード全体を書き込んだ後、コンシューマに対してシグナルする前に、プロデューサを用いて、データ同期バリア（ＤＳＢ）をバス相互接続へ送信することである。このように、マスタからの先行する全てのトランザクションは、完了することが強いられる。バリア動作が完了すると、プロデューサは、コンシューマに対して、ペイロードの書き込みが保証されていることを通知する。このアプローチの短所は、一般に、バス相互接続は、バス・マスタからのバリア動作を、バス・マスタがアクセスを有する全てのスレーブに対して、バリア・コマンドをブロードキャストせよとのインジケーションとして解釈する必要があることである。このようなバリア・コマンドのブロードキャストを達成するために、スレーブのおのおのに対するバス・インタフェースがアービトレートされ、バリア・コマンドが、スレーブへブロードキャストされ、ブロードキャストされた全てのバリア・コマンドの応答が待たれる。スレーブのおのおのから全ての応答を受信すると、完了応答が、バリア・コマンドを発行したバス・マスタへ返される。プロデューサは、多くのスレーブへのアクセスを有し、スレーブは、更なるスレーブを有する別のバス相互接続へのブリッジでありうるので、おのおののスレーブのためにアービトレートし、スレーブのおのおのからの応答を待つ処理は、とても時間を消費する。このアプローチは、性能のロスおよび電力消費量の増加をもたらすことが理解される。
【００２５】
そのような問題を解決するために、バス相互接続に送信されたペイロード・データに関連付けられたデバイス情報を提供する、デバイスへ向けられた有利なメモリ・バリア・コマンドが使用される。デバイス情報は、例えば、単数または複数のデバイスが応答するアドレス範囲を示す多くの高次アドレス・ビットであるか、あるいは、特定のビット位置によってデバイスを識別する選択ビットのようなアドレスの形態を採ることができる。これらデバイスへ向けられたメモリ・バリア・コマンドは、例えばアドレス・バスまたはサイドバンド・シグナル・パスのようなシグナリング・パスで、デバイス特有の情報を提供する。例えば、アドレスへ向けられたメモリ・バリア・コマンドは、アドレスおよびバス・コマンドの属性を提供するために、例えばアドレス・チャネルＡＣＨ２２６のようなアドレス・チャネルを用いて、バス・マスタから送信されうる。アドレスへ向けられたメモリ・バリア・コマンドのユニークな符号化によって、バス相互接続と、そのようなコマンドを受信する任意の接続されたデバイスの識別が可能となる。
【００２６】
バス相互接続は、アドレスへ向けられたメモリ・バリア・コマンドを復号する。そして、関連付けられたペイロード・データのためにどのスレーブがアドレスされているのかを判定するために、アドレス・バスから選択された高次のアドレス・ビットを利用する。アドレスへ向けられたメモリ・バリア・コマンドは、単一のスレーブがペイロード・データに関連付けられていることを明示することができる。スレーブ・デバイスは一般に、ユニークなアドレス範囲が割り当てられるので、バス相互接続には、通常の読取データ転送および書込データ転送をサポートするために、アドレス復号およびバス操作機能が含まれており、デバイスへ向けられたメモリ・バリア・コマンドをサポートするように拡張される。アドレスへ向けられたメモリ・バリア・コマンドは、アドレスされた単数または複数のスレーブ・デバイスの同期を制御する。デバイスへ向けられたこのようなコマンドを用いて、ターゲット・スレーブまたはスレーブ・デバイスへとＤＳＢが生成されるが、一般に、その他のデバイスへは送られない。デバイスへ向けられたメモリ・バリア・コマンドは、有利なことに、バス・トランザクションの同期を制御するために必要とされるブロードキャスト動作の数を低減する。これは、システム・バス上の電力と帯域幅との両方を節約する。
【００２７】
図３は、アドレスへ向けられたメモリ・バリア・コマンドを解釈し、それに応答する相互接続システム３００の典型的な実施形態である。相互接続デバイス３００は、バス・マスタ・インタフェース３０６、３０８を備えた２つのバス・マスタ３０２、３０４と、バス相互接続３０９と、スレーブ・インタフェース３１４−３１６を備えた複数のスレーブ・デバイス３１０−３１２とを例示する。２つのバス・マスタおよび３つのスレーブ・デバイスが示されているが、特定のアプリケーションのために必要なスレーブ・デバイスとバス・マスタの実際の数は、処理要件および設計制約に依存して変わりうることが理解される。
【００２８】
典型的な動作シナリオでは、バス・マスタ３０２が、アドレスへ向けられたメモリ・バリア・コマンドとともに、データ・パケットをスレーブ・デバイス３１１へ転送する要求をバス相互接続３０９へ発行する。アドレスへ向けられたメモリ・バリア（ＡＤＢ）コマンドが、バス・マスタ・インタフェース３０６から受信され、要求キュー３１８へ送られる。選択されると、ＡＤＢコマンドは、内部要求バス３２０で利用可能とされ、コマンド復号およびコントローラ３２２において受信される。ＡＤＢコマンドは、コマンド復号およびコントローラ３２２で復号される。これによって、アドレス復号およびパス選択ユニット３２４が、アドレス範囲レジスタ３２６から、データ・パケット・バス要求に関連付けられた適切なアドレス範囲を選択できるようになる。アドレス範囲レジスタは、例えばスレーブ・デバイス３１０−３１２のようなおのおののスレーブ・デバイスに関連付けられたメモリ範囲についてプログラムされる。スレーブ・デバイスに対するトランザクションに関連付けられたアドレス範囲値が、以下に詳細に説明するように、ＡＤＢコマンドによって提供されるアドレスと比較される。
【００２９】
単数または複数の宛先デバイスに基づいて、トランザクション要求が、内部パス３３２−３３４を介して、アービタ３２８−３３０のうちの１または複数へ渡される。このシナリオの例では、トランザクション要求が、内部パス３３３によってアービタ３２９へ渡される。アービタ３２８−３３０は、例えばバス・マスタ３０２、３０４のような複数のバス・マスタに関連付けられ、スレーブ・デバイスへのアクセス権を求めてバス・マスタをアービトレートする。アービタ３２８−３３０は、要求キュー３３８−３４０にそれぞれ接続される。要求がアービトレートされると、バリア要求が、要求キュー３３９へ渡され、そこから、スレーブ・インタフェース３１５を介して宛先スレーブ・デバイス３１１へ渡される。
【００３０】
コマンド復号およびコントローラ３２２は、アドレスへ向けられたメモリ・バリア（ＡＤＢ）コマンドを復号し、指定されたスレーブ・デバイスへ転送するためのデータ同期バリア（ＤＳＢ）コマンドを生成する。例えば、ＡＤＢコマンド、以下に詳細に説明されるセグメントへ向けられたメモリ・バリア（ＳＤＢ）コマンド、およびデータ同期バリア（ＤＳＢ）コマンドは、下記表１に示すようなさまざまなコマンドの典型的な符合化を適用することができる。
【表１】
0005917444.tif 000002
【００３１】
表１の符号は、異なるタイプのメモリ・バリア・コマンドを識別するために、バス相互接続３０９において復号および解釈される。符号は、バス相互接続３０９を介してスレーブ・デバイスへ渡される。スレーブ・デバイスは、この符号を復号して、「１ｘｘ」と解釈する。これは、データ同期バリア（ＤＳＢ）コマンドを示す。この技術またはその他のそのような符号化技術は、データ・メモリ・バリア・コマンドを符合化するためにも使用される。
【００３２】
コマンド復号およびコントローラ３２２は、ＤＳＢコマンドを、多くのアービタ３２８−３３０へ提供する。このシナリオ例の選択されたアドレス範囲およびアドレスへ向けられたメモリ・バリア・コマンドに基づいて、アービタ３２９は、バス・マスタ３０２の要求を許可し、ＤＳＢコマンドが要求キュー３３９へ送られる。要求キュー３３９から選択されると、ＤＳＢコマンドが、スレーブ・インタフェース３１５を介してスレーブ・デバイス３１１へ渡される。
【００３３】
スレーブ・デバイス３１１は、例えばリターン信号パス３４４によって示されるように、ＤＳＢの順序要件が満たされていることを保証した後、応答チャネルによるリターン・アクノレッジメントによって、ＤＳＢコマンドの受信をアクノレッジする。バス相互接続３０９は、リターン・アクノレッジメントを、バス・マスタ・インタフェース３０６を介して、バス・マスタ３０２へ渡す。以下に詳述するように、ＤＳＢコマンドに基づいて、メモリ・バリア・コマンドが複数のスレーブ・デバイスへ送られると、要求元のバス・マスタへ返信する前に、先ず、全てのスレーブ・デバイスからのアクノレッジメントが収集される。
【００３４】
図４は、アドレスへ向けられたメモリ・バリア・コマンドと連携して使用されるアドレス属性の典型的なアドレス・フォーマット４００を例示する。例えば図２のＡＣＨ２２６のように、例えば３２ビット幅を有するアドレス・チャネルに提供された情報は、Ｊビット・セグメント・アドレス４０４および予約フィールド４０６へ分割される。Ｊビット・セグメント・アドレス４０４は、スレーブ・デバイスが応答するアドレスの高次ビットを表す。例えば、パラメータ「Ｊ」は、３２ビット・アドレスのうちの高次１６ビットである１６ビットでありうる。スレーブ・デバイスのおのおのは、システム・アドレス空間内の特定のアドレス範囲にマップされる。これによって、システム・アドレス空間がセグメント化される。スレーブ・デバイスの機能に依存して、大きなアドレス範囲が、スレーブ・デバイスに割り当てられるか、あるいは、複数の個別のアドレス範囲が割り当てられる。例えば、スレーブ・デバイスがストレージ・デバイスである場合、大きなアドレス範囲が指定されうる。複数の機能を持つスレーブ・デバイスには、複数の個別のアドレス範囲が割り当てられる。セグメント化されたアドレス・マッピングに基づいて、個別のスレーブ・デバイスまたは複数のスレーブ・デバイスが、特定のＪビット・セグメント・アドレス値によって識別されるように、Ｊの値が選択される。
【００３５】
図５は、セグメントへ向けられたメモリ・バリア・コマンドと連携して使用されるセグメント属性の典型的なデバイス・セレクタ・フォーマット５００を示す。例えば図２のＡＣＨ２２６のように、例えば３２ビット幅を有するアドレス・チャネルは、チャネル上で情報を提供し、予約フィールド５０４および複数のスレーブ・イネーブル・ビット５０６−５０８へ分割されている。あるいは、スレーブ・イネーブル・ビット５０６−５０８が、サイドバンド・シグナリング・パス上に提供されうる。スレーブ・イネーブル・ビット５０６−５０８によって、メモリ・バリア・コマンドを受信するスレーブ・デバイスが識別されるようになる。例えば、１６スレーブ・イネーブル・ビットによって、１６個のスレーブ・デバイスが、別々にイネーブルされうる。例えば、図３のスレーブ・デバイス３１１は、セグメントへ向けられたメモリ・バリア・コマンドの目的で、スレーブ・デバイス３１１がバリア・コマンドを受信すべきか否かを示すために使用されるスレーブ・イネーブル・ビットＳ１  ５０７に対応するように指定される。スレーブ・デバイスのさまざまな組み合わせが、スレーブ・イネーブル・ビット５０６−５０８を用いることによってイネーブルされうる。
【００３６】
図２のプロセッサ複合体２００のようなシステムの場合、スレーブ・デバイスの階層構造が、アドレス・フォーマット４００またはデバイス・セレクタ・フォーマット５００を用いて指定され、スレーブ・デバイス２１０−２１２のような第１のレベルの相互接続におけるスレーブ・デバイスが識別され、スレーブ・デバイス２１６−２１８のような第２のレベルの相互接続におけるスレーブ・デバイスが識別される。例えば、アドレス・フォーマット４００を用いて、Ｊビット・セグメント・アドレス４０４が、１６ビットに等しい「Ｊ」セットを持つ第１のレベルの相互接続のために指定され、同様に１６ビットである予約フィールド４０６が、第２のレベルの相互接続のための第２のセグメント・アドレス・フィールドを指定するために使用されるようになる。同様の方式で、デバイス・セレクタ・フォーマット５００が、２つのレベルの相互接続階層のためのスレーブ・イネーブル・ビットをおのおの個別に指定する２つのセグメントに分割されうる。２レベル階層は、組み合わせアプローチをも使用できることもまた注目される。例えば、第１のレベルの相互接続が、アドレス・フォーマットにおける第１の分割におけるＪビット・セグメント・アドレス・フォーマット４０４を使用し、第２のレベルの相互接続が、予約フィールド４０６におけるスレーブ・イネーブル・ビットを使用する。
【００３７】
特定のシステムにおけるアドレス・チャネルのバス幅と、おのおのの階層レベルにおけるスレーブ・デバイスの数とに依存して、単一フォーマット内の階層仕様は、可能ではない場合もありうる。そのような場合、デバイス・セレクタ・レジスタは、例えば、バス相互接続２２０またはブリッジ・スレーブ・デバイス２１１内で指定されうる。おのおののブリッジ相互接続パスにおいて、３２ビット幅のアドレス・チャネルと、同様に３２ビット幅であるデバイス・セレクタ・レジスタとの両方を用いて、３２個のスレーブ・デバイスが、複数レベルの階層システムのおのおののレベルにおいて識別される。デバイス・セレクタ・レジスタ内のビットは、例えば、直接的なロード命令を用いるような標準的なロード・メカニズムまたはコピー・メカニズムが搭載されうる。
【００３８】
図６は、例えば図４のアドレス・フォーマット４００や、図５のデバイス・セレクタ・フォーマット５００のようなアドレス・チャネルからデバイス情報を受信するデバイスへ向けられたメモリ・バリア・コマンドの発行時におけるタイミング・イベントのシーケンスを例示するタイミング図６００を例示する。図６のタイミング・イベントと、図３の要素との間の典型的な関係は、図６のタイミング・イベントを実行するために適切に適用される相互接続システム３００からの典型的な要素を参照することによって示される。
【００３９】
このタイミング図６００は、バス・マスタ３０２からスレーブ・デバイス３１１へ向けられたメモリ・バリア・コマンドを用いた、バス・トランザクションのための信号およびタイミング・イベントを例示する。これら信号は、システム提供クロック６０２、バス・マスタ３０２信号マスタ・アドレス有効信号（ＭＡＶＬＤ）６０４、マスタ・アドレス・チャネル（ＭＡＤＤＲ）６０５、およびマスタ属性（ＭＡＴＴＲＢ）信号６０６を含む。バス相互接続３０９提供信号は、相互接続アドレス・レディ（ＩＡＲＤＹ）信号６０８、バス相互接続読取応答（ＩＲＲＳＰ）信号６１０、相互接続アドレス有効（ＩＡＶＬＤ）信号６１２、相互接続アドレス・チャネル（ＩＡＤＤＲ）６１３、および相互接続属性（ＩＡＴＴＲＢ）信号６１４を含む。スレーブ・デバイス３１１提供信号は、スレーブ・アドレス・レディ（ＳＡＲＤＹ）信号６１６、およびスレーブ読取応答（ＳＲＲＳＰ）信号６１８を含む。クロック６０２は、その他の信号のためのタイミング基準を提供する。
【００４０】
第１のバス・トランザクションは、デバイスへ向けられたメモリ・バリア・コマンドのスレーブ・デバイス３１１への転送を開始するバス・マスタ３０２で開始される。時間Ｔ１  ６３０において、マスタは、マスタ・アドレス有効（ＭＡＶＬＤ）信号６０４をアサートし、デバイスへ向けられたメモリ・バリア・コマンドの一部として、アドレス・チャネル上で、例えば図４のアドレス・フォーマット４００や、図５のデバイス・セレクタ・フォーマット５００のようなマスタ属性（ＡＤＢ）値を与える。それに応答して、バス相互接続３０９は、ＩＡＲＤＹ信号６０８を発行し、要求、マスタ提供属性（ＭＡＴＴＲＢ）信号６０６、および、アドレス・チャネルＭＡＤＤＲ６０５からのアドレスまたはスレーブ・イネーブル・ビットを受け付ける。ＭＡＴＴＲＢ信号６０６は、デバイスへ向けられたメモリ・バリア・コマンドのタイプを示すインジケーションを含む。
【００４１】
バス相互接続３０９は、宛先パスをアービトレートし、要求キュー３３９にＤＳＢ要求を書き込む。時間Ｔｋ１  ６３４では、バス相互接続３０９がレディ状態になると、バス相互接続３０９は、相互接続アドレス有効（ＩＡＶＬＤ）信号６１２をアサートする。そして、データ同期バリア（ＤＳＢ）を指定するために、相互接続属性（ＩＡＴＴＲＢ）値を提供する。スレーブ・デバイスへのＤＢＳ要求の場合、相互接続アドレス・チャネルＩＡＤＤＲ６１３は、スレーブ・デバイスへのインタフェース上では使用されないことが注目される。これに応答して、スレーブ・デバイス３１１は、ＳＡＲＤＹ信号６１６をアサートする。そして、相互接続アドレス・チャネルから、要求およびバス相互接続３０９提供された属性（ＩＡＴＴＲＢ）信号６１４を受け取る。ＩＡＴＴＲＢ信号６１４は、ＤＳＢコマンド・インジケーションを含む。これは、スレーブ・エンド・ポイントであるために、適切な動作のために、アドレス情報を必要としない。時間Ｔｋ２  ６３８では、バス相互接続３０９が、スレーブ読取応答（ＳＲＲＳＰ）信号６１８によって示されるように、スレーブ・デバイス３１１から読取応答を受信する。ＳＲＲＳＰ信号６１８は簡単にしか例示されていないが、読取応答転送の際には、読取有効信号および読取レディ信号が用いられよう。バス相互接続の内部処理を後に説明するための１または複数のサイクルでありうる時間Ｔｊ３  ６４２では、ＩＲＲＳＰ６１０が、バス・マスタに対してアサートされ、順序付けられた動作が完了したことが示される。
【００４２】
図７は、セグメントへ向けられたメモリ・バリア・コマンドを解釈し、それに応答する相互接続システム７００を例示する。この相互接続デバイス７００は、バス・マスタ・インタフェース７０６、７０８を備える２つのバス・マスタ７０２と、バス相互接続７０９と、スレーブ・インタフェース３１４−３１６を備えた複数のスレーブ・デバイス３１０−３１２とを例示する。２つのバス・マスタおよび３つのスレーブ・デバイスが示されているが、特定のアプリケーションのために必要とされるスレーブ・デバイスとマスタ・デバイスの実際の数は、処理要件および設計制約に依存して変わりうることが認識される。
【００４３】
典型的な動作シナリオでは、バス・マスタ７０２は、バス相互接続７０９に対して、セグメントへ向けられたメモリ・バリア・コマンドを、スレーブ・デバイス３１１へ転送する要求を発行する。セグメントへ向けられたメモリ・バリア（ＳＤＢ）コマンドは、バス・マスタ・インタフェース７０６から取得され、要求キュー７１８へ送られる。選択された場合、ＳＤＢコマンドは、内部要求バス７２０において利用可能とされ、コマンド復号およびコントローラ７４６で受信される。ＳＤＢコマンドは、コマンド復号およびコントローラ７４６で復号される。これによって、セレクタおよびパス選択ユニット７４８が、選択される遠隔デバイスを判定するために、例えば、セグメントへ向けられたメモリ・バリア・コマンドに関連付けられた図５の複数のスレーブ・イネーブル・ビット５０６−５０８のような、セグメント属性内の指定されたビットを使用できるようになる。
【００４４】
選択された単数または複数の遠隔スレーブ・デバイスに基づいて、トランザクション要求が、内部パス３３２−３３４を介して、アービタ３２８−３３０のうちの１または複数へ渡される。このシナリオの例では、トランザクション要求が、内部パス３３３を介してアービタ３２９へ渡される。アービタ３２８−３３０は、例えばバス・マスタ７０２、７０４のような複数のバス・マスタに関連付けられ、スレーブ・デバイスへのアクセス権を求めるバス・マスタをアービトレートする。アービタ３２８−３３０は、要求キュー３３８乃至３４０へそれぞれ接続される。要求がアービトレートされると、バリア要求が要求キュー３３９へ渡され、さらにそこから、スレーブ・インタフェース３１５を介して宛先スレーブ・デバイス３１１へ渡される。コマンド復号およびコントローラ７４６は、セグメントへ向けられたメモリ・バリア・コマンドを復号し、指定されたスレーブ・デバイスへ転送するためのデータ同期バリア（ＤＳＢ）命令を生成する。
【００４５】
コマンド復号およびコントローラ７４６は、多くのアービタ３２８−３３０に対してＤＳＢコマンドを提供する。このシナリオ例で選択された遠隔デバイス、および、セグメントへ向けられたメモリ・バリア・コマンドに基づいて、アービタ３２９は、バス・マスタ７０２の要求を許可し、ＤＳＢコマンドが要求キュー３３９へ送られる。要求キュー３３９から選択されると、ＤＳＢコマンドは、スレーブ・インタフェース３１５を介してスレーブ・デバイス３１１へ渡される。
【００４６】
スレーブ・デバイス３１１は、例えばリターン信号パス３４４によって示されるように、応答チャネルにおけるリターン・アクノレッジメントによってＤＳＢコマンドの受信をアクノレッジする。バス相互接続７０９は、バス・マスタ・インタフェース７０６を介して、バス・マスタ７０２へリターン・アクノレッジメントを渡す。セグメント選択フィールドに基づいて、メモリ・バリア・コマンドが、複数のスレーブ・デバイスへ送られると、要求元のバス・マスタへ返信する前に、選択されたスレーブからのアクノレッジメントがまず収集される。
【００４７】
図２のプロセッサ複合体２００のようなシステムの場合、スレーブ・デバイスの階層構造が、デバイス・セレクタ・フォーマット５００を用いて指定され、例えばスレーブ・デバイス２１０−２１２のような第１のレベルの相互接続におけるスレーブ・デバイスが識別され、例えばスレーブ・デバイス２１６−２１８のような第２のレベルの相互接続におけるスレーブ・デバイスが識別される。特定のシステムにおけるアドレス・チャネルのバス幅と、おのおのの階層レベルにおけるスレーブ・デバイスの数とに依存して、単一フォーマット内の階層分類が可能ではない場合がある。そのような場合、セレクタ・レジスタ７５０のようなデバイス・セレクタ・レジスタが、例えば図２のブリッジ・スレーブ・デバイス２１１またはバス相互接続７０９内で指定される。３２ビット幅のアドレス・チャネルと、同様に３２ビット幅の、おのおののブリッジ相互接続パス内のセレクタ・レジスタ７５０との両方を用いて、３２個のスレーブ・デバイスが、複数レベル階層システムのおのおののレベルにおいて識別されうる。セレクタ・レジスタ７５０内のビットは、例えば直接的なロード命令を用いるような標準的なロード・メカニズムまたはコピー・メカニズムが搭載されうる。
【００４８】
図８は、デバイスへ向けられたメモリ・バリア・コマンドに、バス相互接続が応答するイベントのシーケンスのフロー図８００を例示する。図８のブロックと、図３および図７の要素との間の典型的な関係は、相互接続システム３００、７００それぞれからの典型的な要素を参照することによって示される。これらは、図８のイベントのシーケンスを実行するために適切に適用されうる。
【００４９】
ブロック８０４で始まり、バス・マスタ３０２は、デバイスへ向けられたメモリ・バリア・コマンドをバス相互接続３０９へ送信する。ブロック８０６では、バス相互接続３０９が、この要求を、要求キュー３１８にキューする。判定ブロック８０８では、バス相互接続３０９が、転送要求が通常転送であるかバリア・コマンドであるかを判定する。この要求が、通常転送であれば、通常転送フローが続く。もしもこの要求がバリア・コマンドであれば、判定ブロック８１０に進む。判定ブロック８１０では、バス相互接続が、このバリアが、アドレスへ向けられたメモリ・バリアであるか、あるいは、セグメントへ向けられたメモリ・バリアであるかを判定する。
【００５０】
要求がアドレスへ向けられたメモリ・バリアである場合、ブロック８１２に進む。ブロック８１２では、バス・マスタからアドレス・チャネル上に提供されたアドレスが、アドレス復号およびパス選択ユニット３２４において、アドレス範囲レジスタ３２６から提供された利用可能なスレーブ・アドレス可能領域と比較される。一致するスレーブ・アドレス可能領域を有するスレーブ・デバイスが、宛先スレーブ・デバイスとして選択される。要求が、セグメントへ向けられたメモリ・バリアである場合、ブロック８１４に進む。ブロック８１４では、図５のデバイス・セレクタ・フォーマット５００で示されるスレーブ・デバイスが、セレクタおよびパス選択ユニット７４８において、宛先スレーブ・デバイスとして選択される。ブロック８１６では、メモリ・バリア・コマンドが、選択された単数または複数の宛先スレーブ・デバイスへ転送される。判定ブロック８１８では、バス相互接続３０９が、ペンディングとなっている全てのバリア応答の受信を待つ。全てのバリア応答が受信されると、ブロック８２０に進む。ブロック８２０では、バリア応答が、このシナリオではバス・マスタ３０２である要求元のバス・マスタに転送される。この時点において、アドレス／セグメントへ向けられたメモリ・バリア動作は完了している。
【００５１】
強く順序付けられたメモリ・アクセスは、マスタ・デバイスからスレーブ・デバイスへのデータ転送要求のシーケンスにおいて、プログラム順序を制御および実施するための別のメカニズムを提供する。強く順序付けられたメモリ・アクセスは、恐らくは共有されたアクセス位置および非キャッシュ可能アクセスとして見られる。強く順序付けられたメモリ・アクセスは、あたかもこのアクセスが、例えばデータ・メモリ・バリア・コマンドの使用によって取得されたようなフェンスによって保護されるように動作する。接続されたデバイスに対するアクセスが、強く順序付けられたメモリ・アクセスであるかを示す個別の信号のセット上に、アクセス・タイプが提供される。強く順序付けられたメモリ・アクセスのインジケーションを受信するバス相互接続は、強く順序付けられたメモリ・アクセスを開始したバス・マスタによってアクセスされる、ターゲット・スレーブ・デバイスを除く全てのスレーブ・デバイスへと、メモリ・データ・コマンドをブロードキャストする。ＤＭＢを受信した全てのスレーブ・デバイスが、ＤＭＢの完了をアクノレッジした後、相互接続デバイスが、ターゲット・スレーブ・デバイスへと、強く順序付けられたアクセスを発行する。
【００５２】
例えば、図５のデバイス・セレクタ・フォーマット５００のようなデバイス・セレクタ・フォーマットにおいてユニークに識別されるような、セグメントへ向けられた強く順序付けられたメモリ・アクセスを用いることによって、相互接続デバイスは、ターゲットとなる単数または複数のスレーブ・デバイスが通知され、有利なことに、ＤＭＢをブロードキャストしない。強く順序付けられたアクセスは、ターゲットとなる単数または複数のデバイスへと直接なされうる。アドレス・チャネルは、強く順序付けられたアクセスのために必要とされるので、サイドバンド信号が、ターゲットとなるスレーブ・デバイスを識別するために使用されるスレーブ・イネーブル・レジスタ・ビットのための信号パスを与える。
【００５３】
本明細書での開示に関連して記述された様々な例示的な論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）あるいはその他のプログラマブル論理デバイス、ディスクリート・ゲートあるいはトランジスタ・ロジック、ディスクリート・ハードウェア構成要素、または上述された機能を実現するために設計された上記何れかの組み合わせを用いて実現または実施されうる。汎用プロセッサとしてマイクロプロセッサを用いることが可能であるが、代わりに、従来技術によるプロセッサ、コントローラ、マイクロコントローラ、あるいは状態機器を用いることも可能である。プロセッサは、例えばＤＳＰとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアに接続された１または複数のマイクロプロセッサ、または所望のアプリケーションのために適切なその他任意のこのような構成である計算デバイスの組み合わせとして実現することも可能である。
【００５４】
本明細書で開示された実施形態に関連して記述された方法は、ハードウェアによって直接的に、プロセッサによって実行されるソフトウェア・モジュールによって、または、これらの組み合わせによって具体化される。ソフトウェア・モジュールは、ＲＡＭメモリ、フラッシュ・メモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハード・ディスク、リムーバブル・ディスク、ＣＤ−ＲＯＭ、あるいは当該技術分野で知られているその他の型式の記憶媒体に収納されうる。典型的な記憶媒体は、プロセッサがそこから情報を読み取り、またそこに情報を書き込むことができるようにプロセッサに結合される。または、記憶媒体はプロセッサに統合されることができる。
【００５５】
本発明は、命令キャッシュ、データ・キャッシュ、およびその他のタイプのキャッシュのための例示的な実施形態の文脈で開示されているが、上記説明および特許請求の範囲と一貫性をもつ当該技術分野における通常の熟練者によって、広範な実施が適用されうることが認識されよう。
【００５６】
なお、以下に、親出願の出願当初の特許請求の範囲に記載された発明を付記する。
【００５７】
［発明１］
遠隔デバイスへのバス・トランザクションの同期を制御する方法であって、
デバイスへ向けられたメモリ・バリア・コマンドを受信することと、
１または複数の宛先デバイスを判定するために、前記メモリ・バリア・コマンドを復号することと、
前記復号に応答して、前記１または複数の宛先デバイスへメモリ・バリア・コマンドを選択的にルーティングすることと
を備える方法。
【００５８】
［発明２］
前記デバイスへ向けられたメモリ・バリア・コマンドは、
バス・コマンドが、アドレスへ向けられたメモリ・バリア・コマンドであることを示すインジケーションと、
選択された遠隔デバイスが応答し、かつ、アドレス・チャネル上に与えられたアドレス範囲を識別するためにフォーマットされたアドレス値と
を備える発明１に記載の方法。
【００５９】
［発明３］
前記デバイスへ向けられたメモリ・バリア・コマンドは、
バス・コマンドが、セグメントへ向けられたメモリ・バリア・コマンドであることを示すインジケーションと、
選択された遠隔デバイスを識別するためのデバイス選択ビットを含み、アドレス・チャネル上に与えられた属性と
を備える発明１に記載の方法。
【００６０】
［発明４］
前記デバイスへ向けられたメモリ・バリア・コマンドが、バス相互接続で受信される発明１に記載の方法。
【００６１】
［発明５］
前記デバイスへ向けられたメモリ・バリア・コマンドが、アドレスへ向けられたメモリ・バリア・コマンドであると判定することと、
前記１または複数の宛先デバイスを判定するために、アドレス属性をデバイス・アドレス範囲と比較することと
をさらに備える発明１に記載の方法。
【００６２】
［発明６］
前記デバイスへ向けられたメモリ・バリア・コマンドが、セグメントへ向けられたメモリ・バリア・コマンドであると判定することと、
前記１または複数の宛先デバイスを判定するために、セグメント属性において指定されたビットを用いることと
をさらに備える発明１に記載の方法。
【００６３】
［発明７］
前記１または複数の宛先デバイスに対応する指定されたビットを、前記バス相互接続内のセグメント・レジスタにロードすることをさらに備える発明１に記載の方法。
【００６４】
［発明８］
前記デバイスへ向けられたメモリ・バリア・コマンドは、
階層的に接続された遠隔デバイスのうちの第２のレベルにおける遠隔デバイスへ向けられた、セグメントへ向けられたメモリ・バリア・コマンドであると判定することと、
前記１または複数の宛先デバイスを判定するために、前記セグメント・レジスタ内の指定されたビットを用いることと
をさらに備える発明７に記載の方法。
【００６５】
［発明９］
前記メモリ・バリア・コマンドの完了を示す応答を、前記１または複数の宛先デバイスから収集することと、
前記デバイスへ向けられたメモリ・バリア・コマンドを送信したデバイスに対して、前記メモリ・バリア・コマンドの完了を示す完了応答を送信することと
をさらに備える発明１に記載の方法。
【００６６】
［発明１０］
バス相互接続であって、
デバイスへ向けられたメモリ・バリア・コマンドを受信し、識別するように構成されたコントローラと、
前記デバイスへ向けられたメモリ・バリア・コマンドが識別されたことに応答して、前記デバイスへ向けられたメモリ・バリア・コマンドに関連付けられた情報に基づいて遠隔デバイスを選択し、前記選択された遠隔デバイスへ、前記メモリ・バリア・コマンドを選択的にルーティングするデコーダおよびパス選択ユニットと
を備えるバス相互接続。
【００６７】
［発明１１］
前記デバイスへ向けられたメモリ・バリア・コマンドに関連付けられた情報は、
バス・コマンドが、アドレスへ向けられたメモリ・バリア・コマンドであることを示すインジケーションと、
アドレス・チャネルで受信され、かつ、選択された遠隔デバイスが応答するアドレス範囲を識別するためにフォーマットされたアドレス値と
を備える発明１０に記載のバス相互接続。
【００６８】
［発明１２］
前記デバイスへ向けられたメモリ・バリア・コマンドに関連付けられた情報は、
バス・コマンドが、セグメントへ向けられたメモリ・バリア・コマンドであることを示すインジケーションと、
選択された遠隔デバイスを識別するためのデバイス選択ビットを含み、アドレス・チャネル上で受信されるセグメント属性と
を備える発明１０に記載のバス相互接続。
【００６９】
［発明１３］
複数のアドレス範囲レジスタと、
選択された遠隔デバイスを判定するために複数のアドレス範囲レジスタのうちの１つから選択されるアドレスと、アドレス属性とを比較するコンパレータと
をさらに備える発明１１に記載のバス相互接続。
【００７０】
［発明１４］
選択された遠隔デバイスを識別するために、前記セグメント属性における指定されたビットを用いるセレクタをさらに備える発明１２に記載のバス相互接続。
【００７１】
［発明１５］
相互接続された遠隔デバイスのうちの第２の階層レベルに接続された、選択された遠隔デバイスを識別するために、第２のレベルのセグメント属性における指定されたビットを格納するセレクタ・レジスタをさらに備える発明１２に記載のバス相互接続。
【００７２】
［発明１６］
遠隔デバイスへのバス・トランザクションの同期を制御するバス・マスタ方法であって、
選択された遠隔デバイスへのバス・トランザクションの同期を制御するために、デバイスへ向けられたメモリ・バリア・コマンドをバス相互接続へ発行することと、
前記デバイスへ向けられたメモリ・バリア・コマンドの完了を示す完了応答を、前記バス相互接続から受信することと、
前記完了応答に応答して、前記選択された遠隔デバイスに関連付けられた別のバス・マスタへ通知を送ることと
を備えるバス・マスタ方法。
【００７３】
［発明１７］
前記デバイスへ向けられたメモリ・バリア・コマンドは、
前記デバイスへ向けられたメモリ・バリア・コマンドが、アドレスへ向けられたメモリ・バリア・コマンドであることを示すインジケーションと、
選択された遠隔デバイスが応答し、かつ、アドレス・チャネル上に与えられたアドレス範囲を識別するためにフォーマットされたアドレス値と
を備える発明１６に記載のバス・マスタ方法。
【００７４】
［発明１８］
前記デバイスへ向けられたメモリ・バリア・コマンドは、
前記デバイスへ向けられたメモリ・バリア・コマンドが、セグメントへ向けられたメモリ・バリア・コマンドであることを示すインジケーションと、
選択された遠隔デバイスを識別するためのデバイス選択ビットを含み、アドレス・チャネル上に提供されたセグメント属性と
を備える発明１６に記載のバス・マスタ方法。
【００７５】
［発明１９］
前記デバイスへ向けられたメモリ・バリア・コマンドは、
１または複数の選択された遠隔デバイスに対して、強く順序付けられたメモリ動作が進行中であることを示すインジケーションと、
前記選択された遠隔デバイスを識別するためのデバイス選択ビットを含むセグメント属性のサイドバンド信号におけるインジケーションと
を備える発明１６に記載のバス・マスタ方法。
【００７６】
［発明２０］
前記１または複数の宛先デバイスに対応する指定されたビットを、前記バス相互接続内のセグメント・レジスタにロードすることと、
相互接続された遠隔デバイスのうちの第２の階層レベルに接続された、選択された遠隔デバイスを識別するために、セレクタ・レジスタの第２のレベルのセグメント属性における指定されたビットを格納することと
をさらに備える発明１６に記載のバス・マスタ方法。
【図１】
0005917444.tif 000003
【図２】
0005917444.tif 000004
【図３】
0005917444.tif 000005
【図４】
0005917444.tif 000006
【図５】
0005917444.tif 000007
【図６】
0005917444.tif 000008
【図７】
0005917444.tif 000009
【図８】
0005917444.tif 000010