(57)【特許請求の範囲】
【請求項１】
キャッシュライン・ポーリング・オペレーションを実行する方法であって、
第１のキャッシュ可能メモリ・ロケーション内にバッファ・フラグ・ビジー標識データ値をストアし、ストア及び予約命令を介して前記第１のキャッシュ可能メモリ・ロケーション上にロード／ストア・オペレーション予約を設定するステップと、
前記第１のキャッシュ可能メモリ・ロケーション上の前記ロード／ストア・オペレーション予約がリセットされたとの判断に応答して、条件付きロード命令を介して、前記第１のキャッシュ可能メモリ・ロケーション内にストアされているデータ値にアクセスするステップと、
前記第１のキャッシュ可能メモリ・ロケーション上の前記ロード／ストア・オペレーション予約がリセットされていないとの判断に応答して、前記条件付きロード命令の実行を停止するステップと、
を含む方法。
【請求項２】
前記第１のキャッシュ可能メモリ・ロケーション内に格納されている前記データのアクセスに応答して、該第１のキャッシュ可能メモリ・ロケーション内に格納されている前記データ値を前記バッファ・フラグ・ビジー標識データ値と比較するステップをさらに含む、請求項１に記載の方法。
【請求項３】
プロセス・コンテキスト切替えを検出するステップと、
前記プロセス・コンテキスト切替えの検出に応答して、前記第１のキャッシュ可能メモリ・ロケーション上の前記ロード／ストア・オペレーション予約をリセットするステップ
をさらに含む、請求項１に記載の方法。
【請求項４】
前記ストア及び予約命令を介して前記第１のキャッシュ可能メモリ・ロケーション上に前記ロード／ストア・オペレーション予約を設定するステップは、
第２のキャッシュ可能メモリ・ロケーション上の以前のロード／ストア・オペレーション予約をリセットするステップと、
前記以前のロード／ストア・オペレーション予約がリセットされたとの判断に応答して、前記第１のキャッシュ可能メモリ・ロケーション上に前記ロード／ストア・オペレーション予約を設定するステップと、
を含む、請求項１に記載の方法。
【請求項５】
前記条件付きロード命令は、予約喪失時のロード命令を含む、請求項１に記載の方法。
【請求項６】
情報処理システム内でキャッシュライン・ポーリング・オペレーションを実行するための装置であって、
第１のキャッシュ可能メモリ・ロケーション内にバッファ・フラグ・ビジー標識データ値をストアし、ストア及び予約命令を介して前記第１のキャッシュ可能メモリ・ロケーション上にロード／ストア・オペレーション予約を設定するための手段と、
前記第１のキャッシュ可能メモリ・ロケーション上の前記ロード／ストア・オペレーション予約がリセットされたとの判断に応答して、条件付きロード命令を介して、前記第１のキャッシュ可能メモリ・ロケーション内にストアされているデータ値にアクセスするための手段と、
前記第１のキャッシュ可能メモリ・ロケーション上の前記ロード／ストア・オペレーション予約がリセットされていないとの判断に応答して、前記条件付きロード命令の実行を停止するための手段と、
を備える装置。
【請求項７】
情報処理システム内のキャッシュライン・ポーリングを実行するためのプログラムであって、
第１のキャッシュ可能メモリ・ロケーション内にバッファ・フラグ・ビジー標識データ値をストアし、かつ、ストア及び予約命令を介して前記第１のキャッシュ可能メモリ・ロケーション上にロード／ストア・オペレーション予約を設定するステップと、
前記第１のキャッシュ可能メモリ・ロケーション上の前記ロード／ストア・オペレーション予約がリセットされたとの判断に応答して、条件付きロード命令を介して、前記第１のキャッシュ可能メモリ・ロケーション内にストアされているデータ値にアクセスするステップと、
前記第１のキャッシュ可能メモリ・ロケーション上の前記ロード／ストア・オペレーション予約がリセットされていないとの判断に応答して、前記条件付きロード命令の実行を停止するステップと、
を実行させる、プログラム。
【請求項８】
第１のキャッシュ可能メモリ・ロケーションを含むメモリと、
前記メモリに結合された処理エレメントを備え、
前記処理エレメントは、ロード／ストア・オペレーション予約を指定するデータをストアするレジスタと、
ロード／ストア・ユニットを含み、
前記ロード／ストア・ユニットは、
前記第１のキャッシュ可能メモリ・ロケーション内にバッファ・フラグ・ビジー標識データ値をストアし、かつ、ストア及び予約命令を介して、前記第１のキャッシュ可能メモリ・ロケーション上にロード／ストア・オペレーション予約を前記レジスタに格納するための第１のロード／ストアロジックと、
前記第１のキャッシュ可能メモリ・ロケーション上の前記ロード／ストア・オペレーション予約がリセットされたとの判断に応答して、条件付きロード命令を介して、前記第１のキャッシュ可能メモリ・ロケーション内にストアされているデータ値にアクセスための第２のロード／ストアロジックと、
前記第１のキャッシュ可能メモリ・ロケーション上の前記ロード／ストア・オペレーション予約がリセットされていないとの判断に応答して、前記条件付きロード命令の実行を停止するための第３のロード／ストアロジックを含む、
情報処理システム。
【請求項９】
前記処理エレメントは、
前記第１のキャッシュ可能メモリ・ロケーションのデータをストアするためのキャッシュ・メモリと、
前記第１のキャッシュ可能メモリ・ロケーション内の前記バッファ・フラグ・ビジー標識データ値の変更を検出するための第１のキャッシュ管理ロジックと、
前記変更に応答して、前記第１のキャッシュ可能メモリ・ロケーション上の前記ロード／ストア・オペレーション予約がリセットされたことを示すデータを前記レジスタ内にストアするための第２のキャッシュ管理ロジック
を含むキャッシュ管理ユニットと、
を含む、請求項８に記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にデータ処理システムの動作に関し、より具体的には、「ストア及び予約命令」と「予約喪失時のロード命令」を用いてキャッシュライン・ポーリングを実行する方法、システム、装置、及びプログラムに関する。
【背景技術】
【０００２】
コンピュータが出現時したとき、情報処理システム（例えば、コンピュータ）は、単一のプロセッサ、システム・メモリ、並びに、ディスプレイ装置、キーボード、グラフィカル・ユーザ・インタフェース、入出力（Ｉ／Ｏ）デバイス（マウス、トラックボールなど）などの限られた数のコンポーネントを備えているだけだった。しかし、情報処理システム技術が発達するにつれて、共有システム・リソースに関する通信及び競合を介して相互にインタフェースするシステム・コンポーネントの数が劇的に増加している。従って、現代の通常の情報処理システムは、種々様々なシステム・コンポーネント（例えば、ＳＭＰ、ＡＳＭＰ、ＮＵＭＡ、又は類似の構成を用いるマルチプロセッサ、コプロセッサ、直接メモリ・アクセス・コントローラ、及び各々が付加的なプロセッサ、レジスタ、及びメモリを有するＩ／Ｏデバイス）を含む可能性がある。
【０００３】
現代の情報処理システムにおけるシステム・コンポーネントの機能を調整するために、多くの方法が実施されている。割り込みサービス・ルーチン又はハンドラと結合された割り込みは、イベントの発生を伝達し示すために、情報処理システム・コンポーネントによって利用することができる。同様に、メモリ・マップＩ／Ｏ、及びポート又は「ポート・マップ」Ｉ／Ｏは、システム・コンポーネント（例えば、プロセッサと入出力デバイス）の間の通信手段を提供するために用いることができる。
【０００４】
情報処理システムのエレメント間の機能の調整は、入出力（Ｉ／Ｏ）動作を実行するためのエレメント間のデータ転送において特に重要である。例えば、情報処理システムのプロセッサが、入出力デバイス、又はマルチプロセッサ・システム内の別のプロセッサによる処理のために、バッファ内にデータをデポジットした後、データ提供プロセッサは、典型的には入出力デバイス又はデータ受取りプロセッサに対してバッファへのデータ転送が完了したことを通知する。通常の情報処理システムにおいては、そのような通知は典型的には、入出力デバイス又はデータ受取りプロセッサ内のメモリ・マップ入力／出力（ＭＭＩＯ）レジスタに、特定のデータ値を書き込むことによって実行される。関連するＭＭＩＯレジスタへの書込み動作が検出された後に、入出力デバイス又はデータ受取りプロセッサは直接メモリ・アクセス（ＤＭＡ）を介してバッファからデータを取得することができる。
【０００５】
幾つかの通常の情報処理システムにおいては、データのＤＭＡ取得の完了はＭＭＩＯレジスタのポーリングを介して、又は割り込みを介して検出される。しかし、ＭＭＩＯレジスタ・ポーリングも割り込みも、ＤＭＡの完了を検出するための効率的な機構ではなく、その理由は、割り込みのオーバーヘッドが比較的小さなバッファに対して普通は大き過ぎ、そしてＭＭＩＯレジスタ・ポーリングは、他の場合には全体のシステム・スループットを増加させるようにＤＭＡ転送のために用いることができるバス・バンド幅を、非効率的に利用するからである。
【０００６】
「キャッシュライン・ポーリング」として既知の、ＤＭＡの完了を検出するための別の通常の方法においては、入出力デバイスにバッファが利用可能であることを通知する（例えば、ＭＭＩＯを介して）前に、普通バッファ・フラグ又はセマフォーとして既知のキャッシュ可能メモリ・ロケーションに、所定の「ビジー」標識データ値が書き込まれる。次にプロセッサは、対応するＤＭＡの完了を検出するために、所定の「非ビジー」標示データ値に関してバッファ・フラグをポーリングする。データは既にプロセッサのキャッシュ内で変更されているので、キャッシュライン・ポーリングは如何なる追加のバス・アクティビティも発生させない。バッファからの（ＤＭＡ）データ取得が完了した後、入出力デバイス又は受取りプロセッサはバッファ・フラグに「非ビジー」完了データ値を書き込む。新しいバッファ・フラグ値は、次に、それによってキャッシュ・メモリ内の「ビジー」標識バッファ・フラグ・データが無効化されるか又は新しい完了値で置き換えられる標準的なキャッシュ・コヒーレンシ・プロトコルを介して、データ提供プロセッサがアクセスすることが可能になる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
システムの見地からは、キャッシュライン・ポーリングは効率的なポーリング機構である。しかし、キャッシュライン・ポーリングを実行するために、データ提供プロセッサは、ＤＭＡ転送が完了してバッファ・フラグ値が更新されるまで、一組の「ポーリング」命令を繰返して実行するので、貴重なシステム・リソース（例えば、プロセッサ・サイクル、バス・サイクル、電力、命令又はスレッド・ディスパッチ・スロットなど）を徒に消費してしまう。
【課題を解決するための手段】
【０００８】
ストア及び予約命令と予約喪失時のロード命令を用いてキャッシュライン・ポーリングを実行する方法、システム、装置、プログラム及び情報システムが開示される。ある実施形態においては、第１のキャッシュ可能メモリ・ロケーション内にバッファ・フラグ・ビジー標識データ値をストアするステップと、ストア及び予約命令を介して第１のキャッシュ可能メモリ・ロケーション上にロード／ストア・オペレーション予約を設定するステップとを含む方法が提供される。実施形態においては、第１のキャッシュ可能メモリ・ロケーション上のロード／ストア・オペレーション予約がリセットされているとの判断に応答して、予約喪失時のロード命令を介して、第１のキャッシュ可能メモリ・ロケーション内にストアされたデータ値がアクセスされる。逆に、第１のキャッシュ可能メモリ・ロケーション上のロード／ストア・オペレーション予約がリセットされていないとの判断に応答して、予約喪失時のロード命令の実行が停止される。
【０００９】
前述の開示は例証のためだけのものであって、如何なる限定をも意図したものではないことを当業者は認識するであろう。当業者にはやはり自明であるように、ここで開示される動作は、ハードウェア、ソフトウェア、又はそれらの組合せにおける実施を含む、多くの方法で実施することができ、それらの変更及び改変は、本発明及びそのより広い態様から逸脱することなく実施することができる。本発明の他の態様、発明の特徴、及び利点は、特許請求の範囲のみによって規定され、以下の詳細な説明において明白となるであろう。
【００１０】
本発明は、添付の図面を参照することによってより良く理解され、その多くの特徴と利点が当業者には明らかとなる。
添付の図面中の同じ又は類似の参照記号の使用は、類似の又は同一の項目を示すことを意図している。
【発明を実施するための最良の形態】
【００１１】
以下に、ここで説明される１以上のシステム、デバイス及び／又はプロセスを実施するための少なくとも最も良く企図された様式の詳しい説明を記述する。説明は例証のためであって、限定するものと考えるべきではない。
【００１２】
以下の詳細な説明においては、特定の方法の順序、構造体、エレメント、及び接続などの多くの特定の詳細が記述される。しかし、これらの特定の詳細な説明は、本発明の実施形態を実行するのに必ずしも必要とは限らないことを理解されたい。また、説明を不必要に不明瞭にすることを避けるために、周知の構造体、要素、又は接続は省略されたり、又は詳細には説明されない場合がある。
【００１３】
本明細書中での「実施形態」に関する言及は、その実施形態に関連して説明される特定の特徴、構造体、又は特性が、本発明の少なくとも１つの実施形態に含まれることを示すためである。本明細書の種々の箇所におけるそれらの語句の出現は、必ずしも全てが同じ実施形態に言及するものではなく、また別々の又は代替の実施形態が他の実施形態と互いに両立しないことを意味するものでもない。さらに、幾つかの実施形態によって示され、他の実施形態によっては示されない種々の特徴が説明される。同様に、幾つかの実施形態には必要であるが、他の実施形態には必要でないこともある種々の事項が説明される。
【００１４】
本発明の実施形態は、ここで説明される方法、装置、情報処理システム、及びプログラムの中に具体化されて、キャッシュライン・ポーリングを実行するのに用いることができる、ストア及び予約命令と予約喪失時のロード命令を提供する。図１は、本発明の一実施形態による情報処理システムを含んだ通信ネットワークを示す。本発明の１以上の実施形態においては、説明されるようにストア及び予約（Ｓｔｏｒｅ  ａｎｄ  Ｒｅｓｅｒｖａｔｉｏｎ、ＳＴＡＲ）命令の後に実行される通常のロード（Ｌｏａｄ、ＬＤ）命令は、以前に設定されたロード予約が「喪失された」又はリセットされた後に、実行を完了してロード予約を設定するデータを返すことになるか、又はさもなければ普通は停止することになる。同様に、予約喪失時のロード（Ｌｏａｄ  ｗｈｅｎ  Ｒｅｓｅｒｖａｔｉｏｎ  ｌｏｓｔ、ＬＤＲＬ）命令は実行を完了して、対応するロード／ストア・オペレーション予約の喪失又はリセットの後でデータを返すことができる。１つの実施形態において、ＳＴＡＲ及びＬＤＲＬ命令は、プロセス・コンテキストが切り替わる間に予約の設定及びリセットを正しく管理するように、単一のキャッシュライン・ポーリングのルーチン・ループ内で組み合わせることができる。通常のロード命令ではなくＬＤＲＬ命令の追加は、プログラム又はプロセッサが、不必要なプロセッサ・スレッドの停止をせずに、バッファ・フラグ・データ値の状態を検査することを可能にする。
【００１５】
図１に示されるように、システム１０１は、複数の情報処理システム（例えば、コンピュータ及びコンピュータ・デバイス）が接続しているネットワーク１０４を含む。本発明の種々の実施形態において、ネットワーク１０４は、ＬＡＮ、インターネットなどのグローバル・ネットワーク、又は任意の他の通信ネットワークを含むことができる。図１の実施形態においては、ネットワーク１０４に接続する情報処理システムは、クライアント・コンピュータ１０６、サーバ・コンピュータ１０８、携帯情報端末（ＰＤＡ）１１０、ディジタル・テレビ（ＤＴＶ）１１２を備え、さらに図示されていない他の有線又は無線のコンピュータ及びコンピュータ・デバイスを備えることができる。示される実施形態においては、ネットワーク１０４のメンバーの情報処理システムによって用いられる処理エレメントは、普通のコンピュータ・モジュールから構築される。これらの処理エレメントはまた、全てが同じ命令セット・アーキテクチャ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ、ＩＳＡ）を有して共通のプロセッサ命令セットに従って処理を実行することが好ましい。
【００１６】
図１の実施形態において、任意の特定の処理エレメント内に含まれるコンピュータ・モジュールの数は、その処理エレメントが実行する情報処理に要求される処理能力に依存する。例えば、システム１０１のサーバ１０８は、クライアント１０６よりも多くのデータ及びアプリケーションの処理を実行するので、サーバ１０８はクライアント１０６よりも多くのコンピュータ・モジュールを含む。他方、ＰＤＡ１１０は、比較的より少量の処理を実行する。示される実施形態においては、各々のコンピュータ・モジュールは１つの処理コントローラと、ネットワーク１０４上で伝送されるデータ及びアプリケーションの並列処理を実行するための複数の同一の処理ユニットを含む。
【００１７】
システム１０１のこの均質な構成は、適応性、処理速度、及び処理効率を促進する。システム１０１の各々のメンバーは１以上の（又はある部分）の同じコンピュータ・モジュールを用いて処理を実行するので、データ及びアプリケーションの実際の処理を実行する特定のコンピュータ又はコンピュータ・デバイスは、通常のシステムにおけるよりも関連性が少ない。特定のアプリケーション及びデータの処理は、さらに、ネットワークのメンバーの間で分担することができる。システム１０１によってシステム全体で処理されるデータ及びアプリケーションを含んだセルを一義的に識別することにより、処理結果は、その処理がどこで実施されたかに関らず、処理を要求しているコンピュータ又はコンピュータ・デバイスに伝送することができる。この処理を実行するモジュールは共通の構造体を有し、共通のＩＳＡを用いるので、処理エレメント間の互換性を達成するためのソフトウェアの追加層の計算負担は避けられる。このアーキテクチャ及びプログラミング・モデルは、実時間マルチメディア・アプリケーションなどを実行するのに必要な処理速度を促進する。
【００１８】
システム１０１によって促進される処理速度及び効率の更なる利点を利用するために、このシステムによって処理されるデータ及びアプリケーションは一義的に識別される均一にフォーマットされたソフトウェア・セル１０２の中にパッケージされる。各々のソフトウェア・セル１０２は、アプリケーションとデータの両方を含み、又は含むことができる。各々のソフトウェア・セル１０２はまた、ネットワーク１０４及びシステム１０１全体にわたってセルをグローバルに識別するためのＩＤを含む。このソフトウェア・セルの構造の均一性、及びソフトウェア・セルのネットワーク全体にわたる一義的な識別性は、ネットワーク１０４の任意のコンピュータ又はコンピュータ・デバイス上のアプリケーション及びデータの処理を促進する。例えば、クライアント１０６はソフトウェア・セル１０２を策定することはできるが、クライアント１０６の限られた処理能力のゆえに、このソフトウェア・セルを処理のためにサーバ１０８に伝送することができる。従って、ソフトウェア・セルは、ネットワーク上の処理リソースの利用可能性に基づく処理のために、ネットワーク１０４のいたるところに移動することができる。
【００１９】
システム１０１の処理エレメントとソフトウェア・セルの均一な構造はまた、今日の異機種ネットワークの多くの問題を回避する。例えば、任意の命令セット、例えばＪＡＶＡ（登録商標）仮想マシンなどの仮想マシンを用いる任意のＩＳＡ上でのアプリケーション処理の許可を探し求める非効率なプログラミング・モデルが避けられる。従って、システム１０１は、通常のネットワークよりも遥かに効果的且つ効率的にブロードバンド処理を実行することができる。
【００２０】
図２は、本発明の一実施形態による情報処理システムの高次レベルのブロック図を示す。図２の情報処理システムに関して、エレメントの特定の数と配置が示されているが、本発明の実施形態は、コンポーネントの如何なる特定の数、型、又は配置を有するデータ処理システムには限定されず、それ故その多くは種々様々なデータ処理システムの型、アーキテクチャ、及びフォーム・ファクタ（例えば、ネットワーク・エレメント又はノード、パーソナル・コンピュータ、ワークステーション、サーバ、など）を包含する。
【００２１】
図２の図解された情報処理システムは、本発明の例示的な態様を実施できるＣｅｌｌ  Ｂｒｏａｄｂａｎｄ  Ｅｎｇｉｎｅ（ＣＢＥ）アーキテクチャの一例である。図２に示されるように、ＣＢＥ２００は、高帯域幅の内部エレメント接続バス（ＥＩＢ）２８６を介する通信で互いに接続される、Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ（ＰＰＥ）２１０と、多数のＳｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ（ＳＰＥ）２２０−２３４と、ここで更に説明される付加的なシステム・エレメントとを含む。説明される実施形態のＣＢＥ２００はさらに、示されているように、バス・インタフェース・コントローラ（ＢＩＣ）２８７を介してＥＩＢに接続する１以上の外部バス又はデバイス２９０と、メモリ・インタフェース・コントローラ（ＭＩＣ）２８８を介してＥＩＢ２８６に接続する共有メモリ２８９を含む。
【００２２】
ＣＢＥ２００は、図２に図解されたエレメントの各々を単一のマイクロプロセッサ・チップ上に備え付けることのできるシステム・オン・ア・チップとすることができる。さらに、１つの実施形態においてＣＢＥ２００は、ＳＰＥ２２０−２３４の各々がシステム内の他のＳＰＥの各々から異なる命令を受信することのできる異機種処理環境として提供される。さらに、ＳＰＥの各々の命令セットはＰＰＥ２１０の命令セットとは異なり、例えば、ＰＰＥ２１０はＲｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ（ＲＩＳＣ）ベースの命令を実行することができ、一方ＳＰＥ２２０−２３４はベクトル化された命令を実行することができる。
【００２３】
図２の説明される実施形態においては、ＳＰＥ２２０−２３４は、ＥＩＢ２８６を介して、相互に及びＰＰＥ２１０に接続される。さらに、ＳＰＥ２２０−２３４は、それぞれＥＩＢ２８６を介して、ＭＩＣ２８８とＢＩＣ２８７とに接続される。ＭＩＣ２８８は共有メモリ２８９への通信インタフェースを提供する。共有メモリ２８９は、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュ・メモリなどの多くのシステム・メモリ型ストレージ・エレメントの何れをも含むことができる。ＢＩＣ２８７は、ＣＢＥ２００と他の外部バス及びデバイス２９０との間の通信インタフェースを提供する。例示的な外部デバイスには、キーボード、ディスプレイ、プリンタ、カーソル制御デバイス（例えば、トラックボール、マウス、タブレットなど）、スピーカー、及びマイクロフォンなどの伝統的なＩ／Ｏデバイスと、固定又は「ハード」磁気媒体ストレージ・デバイス、光学ストレージ・デバイス（例えば、ＣＤ又はＤＶＤ  ＲＯＭ）、固体ストレージ・デバイス（例えば、ＵＳＢ，Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ＳＤ（登録商標）、ＣｏｍｐａｃｔＦｌａｓｈ（登録商標）、ＭＭＣなど）、フロッピー（登録商標）・ディスク及びテープなどの取外し可能磁気媒体ストレージ・デバイス、又は他のストレージ・デバイス又は媒体などのストレージ・デバイスと、有線又は無線通信デバイス又は媒体（例えば、モデム又はダイレクト・ネットワーク・インタフェースを介してアクセスされる通信ネットワーク）とが挙げられる。
【００２４】
本発明の１つの実施形態においては、ＰＰＥ２１０はデュアル・スレッド処理エレメントである。このデュアル・スレッドＰＰＥ２１０と８個のＳＰＥ２２０−２３４との組合せが、１０個の同時のスレッドと２２８を越える未解決のメモリ要求を処理することができるＣＢＥ２００を構成する。通常の動作環境においては、ＰＰＥ２１０は、計算作業負荷の殆どを処理する８個のＳＰＥ２２０−２３４のコントローラとして機能する。例えば、ＳＰＥ２２０−２３４がベクトル化された浮動小数点コード実行を実行する間に、ＰＰＥ２１０は１以上の通常のオペレーティング・システムを実行するために用いることができる。
【００２５】
１つの実施形態においては、ＰＰＥ２１０はＰｏｗｅｒ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ（ＰＰＵ）又はコア、並びに、関連するレベル１（Ｌ１）及びレベル２（Ｌ２）のキャッシュ（図示せず）を備え、ＳＰＥ２２０−２３４の各々は、協働プロセッサ・ユニット（ＳＰＵ）と、メモリ・フロー制御ユニットと、ローカル・メモリ又はストアと、直接メモリ・アクセス（ＤＭＡ）コントローラ、メモリ管理ユニット（ＭＭＵ）、及びバス・インタフェース・ユニット（図示せず）の組合せを含むバス・インタフェース・ユニットを備える。１つの例示的な実施形態においては、ローカル・メモリ又はストアは、ＰＰＥ２１０には認識可能でありソフトウェアによって直接アドレス指定することのできる、２５６ＫＢの命令及びデータ・メモリを備える。
【００２６】
ＰＰＥ２１０は、複雑な動作における各々のステップを協働で処理するようにＳＰＥを連結して、小さなプログラム又はスレッドをＳＰＥ２２０−１３４に読み込むことができる。例えば、ＣＢＥ２００を組み込んだセット・トップ・ボックスは、ＤＶＤの読み取り、ビデオ及び音声のデコード、及びディスプレイのためのプログラムを読み込むことができて、そのデータは最終的に出力ディスプレイ上で終るまでＳＰＥからＳＰＥへと運ばれることになる。４ＧＨｚにおいて、各々のＳＰＥ２２０−２３４は、理論的に、ＰＰＥ２１０が有するのと同じレベルの性能である３２ＧＦＬＯＰＳの性能を与える。動作に際しては、ＰＰＥ２１０は命令を実行して、ＭＩＣ２８８を介して共有メモリからそれ自体のローカル・レジスタ又はキャッシュ内に取得したデータを取り扱う又は処理することができる。同様に、外部デバイス２９０は、例えばＢＩＣ２８７と、ＳＰＥ２２０−２３４内の１以上のＤＭＡコントローラとを介して、共有メモリ２８９にアクセスすることができる。
【００２７】
図３は、本発明の一実施形態による、ストア及び予約命令と予約喪失時のロード命令を用いてキャッシュライン・ポーリングを実行する機能をもつ情報処理システムの選択された部分のブロック図表示を示す。本説明において、図２及び図３の情報処理システムの間で、対応するシステム・エレメントを示すために類似の参照数字が用いられている。例えば、図３の説明される実施形態のＰＰＥ３１０は、図２のＰＰＥ２１０に対応する。図３の情報処理システム３００はＰＰＥ３１０を含み、ＰＰＥ３１０はＥＩＢ３８６を介して、共有メモリ３８９と外部デバイス３９０とに、それぞれＭＩＣ３８８とＢＩＣ３８７を用いて、接続されている。
【００２８】
図３の説明される実施形態においては、共有メモリ３８９は、示されるようにバッファ・フラグ・データ値を指定するデータを含んだキャッシュ可能メモリ・ロケーション３３６を含む。ＰＰＥ３１０は、示されるようにＬ１キャッシュ３１２とＬ２キャッシュ３１４に階層的に接続されたＰｏｗｅｒ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ（ＰＰＵ）３１６を含む。図３の実施形態においては、ＰＰＵ３１６は多くの機能性ユニットとデータ・ストレージ・エレメントを含む。より具体的には、ＰＰＵ３１６は、メモリ・アクセス命令（例えば、メモリからのロード及びメモリへのストア）を実行するのに用いられるロード／ストア・ユニット３１８と、ビット形式のデータ又はＰＰＵ３１６の現在の状態を示すフラグを格納して、特定のデータ処理又は情報処理動作の結果（例えば、データ・オーバーフロー又はアンダーフロー、正又は負の結果など）を反映する状態レジスタ３２０とを備える。
【００２９】
Ｌ１キャッシュ３１２及びＬ２キャッシュ３１４の各々は、キャッシュ管理ユニット（ＣＭＵ）（例えば、Ｌ１キャッシュ３１２のＣＭＵ３２２、及びＬ２キャッシュ３１４のＣＭＵ３２８）と、ストレージ・エレメント（例えば、Ｌ１キャッシュ３１２のストレージ・エレメント３２４、及びＬ２キャッシュ３１４のストレージ・エレメント３３２）を含む。ＣＭＵ３２２及び３２８は、それぞれ、ストレージ・エレメント３２４及び３３２のうちの対応する１つの中でのデータ及び／又は命令のストレージを制御するために用いられて、例えば、キャッシュライン置換アルゴリズム、キャッシュライン状態又は状態メタデータの更新などを実行する。次に、ストレージ・エレメント３２４及び３３２は、アプリケーション・データ及び／又は命令と、附随するメタデータ（例えば、キャッシュ・タグ、状態ビットなど）とを含むデータのライン又はブロックをストアするのに用いられる。ＣＭＵ３２２及び３２８は、それらそれぞれのキャッシュの統合ユニット又はモジュールとして描かれているが、本発明の代替の実施形態においては、ＣＭＵ３２２及び／又は３２８、又はそれらの機能性は、他の構成（例えば、ＰＰＵ３１６内の、一体化したＬ１キャッシュ３１２及びＬ２キャッシュ３２８の中に、別々のユニット又はモジュールとして、或いはそれらの組合せとして）で提供することもできる。
【００３０】
本発明の１つの実施形態によれば、ここで説明されるように、ＰＰＵ３１６は、「ストア及び予約（ＳＴＡＲ）命令」と「予約喪失時のロード（ＬＤＲＬ）命令」の実行を介してキャッシュライン・ポーリングを実行するのに用いることができる。動作においては、ＰＰＵ３１６のロード／ストア・ユニット３１８は、初めに、「ビジー」バッファ・フラグ標識データ値（例えば、０ｘＢＢ）を指定するデータを、破線３３８で示されるように、共有メモリ３８９のキャッシュ可能メモリ・ロケーション３３６内に格納させるＳＴＡＲ命令を実行するのに用いることができる。説明される実施形態においては、ＳＴＡＲ命令は、関連する外部デバイス３９０（例えば、グラフィックス・デバイス）に、そのデバイスが取得するべきデータが関連するバッファ内（例えば、共有メモリ３８９の専用部分、又は情報処理システム３００の中若しくは外部の他のメモリ）に格納されたという信号を送る。本発明の他の実施形態においては、データがキャッシュ可能メモリ・ロケーション３３６内に格納されているバッファ・フラグに書き込まれたこと、及び、バッファからのデータ取得が開始可能であることを、外部デバイス３９０に通知するために追加の動作（例えば、例外又は割り込みの生成、シグナリング、ＭＭＩＯ書込み動作など）を用いることができる。
【００３１】
ひとたびＰＰＵ３１６がＳＴＡＲを実行すると、共有メモリ３８９のキャッシュ可能メモリ・ロケーション３３６内に格納されているデータを、ＰＰＵ３１６内のレジスタ（例えば、汎用レジスタ）（図示せず）内に格納するＬＤＲＬ命令を実行することのできるＰＰＥ３１０を用いて、キャッシュライン・ポーリングは継続して実行することができる。ここでさらに説明されるように、ＳＴＡＲ及び／又はＬＤＲＬ命令は、Ｌ２キャッシュ３１４内の予約レジスタ３３０内に指定のデータ値を格納することによって、予約を設定させることができる。１つの実施形態においては、予約レジスタ３３０の予約ビット内と、予約に関連するメモリ領域（例えば、共有メモリ３８９のキャッシュ可能メモリ・ロケーション３３６に関連する指定メモリ・ロケーション又は領域）内とに論理「ｌ」を格納することによって、予約が設定される。実施形態においては、予約レジスタ３３０内の予約の設定及びリセットは、状態レジスタ３２０内の対応する予約状態ビットの設定又はリセットをもたらす。予約レジスタ３３０は、Ｌ２キャッシュ３１４のＣＭＵ３２８内にあるように示されているが、本発明の代替の実施形態においては、それらの予約レジスタ又はデータは、情報処理システム３００内の他所（例えば、Ｌ１キャッシュ３１２、ＰＵ３１６、異なるバス／ＥＩＢインタフェース・ユニットなどの内部）に格納することができる。
【００３２】
予約が設定された後、ＬＤＲＬ命令は、状態レジスタ３２０内の対応する予約状態ビットによって示されるように、多くの情報処理システム・イベントのうちの１以上の出現に続いて予約がクリア又は「リセット」されるまで停止させられる（例えば、実行又は発行／完了動作から一時的に中断される）。１つの実施形態においては、破線３４０によって示されるキャッシュ可能メモリ・ロケーション３３６への書込み（例えば、外部デバイス３９０による）の試行、要求、又は実行の検出に続いて、キャッシュ・スヌープ動作を用いてＬ２キャッシュ３１４のＣＭＵ３２８により、予約をリセットすることができる。ひとたび外部デバイス３９０がキャッシュ可能メモリ・ロケーション３３６内に格納されているバッファ・フラグ・データを変更して、予約をリセットさせて喪失させると、以前に停止されたＬＤＲＬ命令は再開することができ、Ｌ１キャッシュ３１２とＬ２キャッシュ３１４のそれぞれのストレージ・エレメント３２４と３３２の内への、そして最終的にはＰＰＵ３１６内の指定されたレジスタ内への、バッファ・フラグ・データ値の階層的ストレージを生じる。
【００３３】
ここで更に詳しく説明されるように、ひとたびＬＤＲＬ動作が成功裡に完了すると、取得されたバッファ・フラグ・データ値は、既知の「ビジー」及び／又は「非ビジー」バッファ・フラグ標識データ値と比較することができる。比較は、外部デバイス３９０による、関連するバッファ内に以前に格納されたデータの取得（例えば、ＤＭＡ転送を介して）が、例えば、関連するバッファが外部デバイス３９０への追加のデータ転送のために再利用できるように、完了したかどうかを判断するのに利用することができる。
【００３４】
図４は、本発明の一実施形態による、ストア及び予約命令と予約喪失時のロード命令に関する予約を管理する状態マシンの状態図を示す。説明される「状態マシン」は、従って、情報処理システム（例えば、図３の情報処理システム３００）の１以上のエレメントによって実行される動作、又はその中に組み込まれる機能性を表す。１つの実施形態においては、そのような機能性は図３のＰＰＵ３１６のようなプロセッサ・エレメント又はユニットに組み込まれ、他の実施形態においては、そのような機能性は、関連する情報処理システムの動作を監視及び制御することのできる独立の又は追加のシステム・エレメント内に具体化することができる。本発明の１つの実施形態においては、図４の状態図によって表される機能性は、開始又はサポートされる各々のハードウェア・スレッドに関してインスタンス化される。
【００３５】
図４に示されるように、状態マシン４００は５つの別々の状態、即ち、状態Ｓ０、状態Ｓ１、状態Ｓ２、状態Ｓ３、及び状態Ｓ４を有する。１つの実施形態においては、バッファ・フラグ「ビジー」標識データ値を設定するため、及びアクセスされるバッファ・データの状態を初期化するために、ストア命令を用いることができる。別の実施形態においては、ストア命令はさらにロード予約を設定するために用いることができる。
【００３６】
初期状態Ｓ０において状態マシン４００は、条件付きロード命令（例えば、予約喪失時のロード命令）を受け取った後、バッファ・フラグのキャッシュラインのアドレスを記録し、状態Ｓ１に移行する。条件付きロードは、バッファ・フラグをストアしているキャッシュラインに対応するアドレスをターゲットとする。複数のロード予約が同時に存在することが可能である。
【００３７】
キャッシュ状態検査の状態Ｓ１においては、キャッシュ・メモリの状態が検査される。バッファ・フラグを格納しているキャッシュラインが無効である場合には、状態マシン４００は状態Ｓ４に移行する。バッファ・フラグを格納しているキャッシュラインが変更又は共有される場合には、状態マシン４００は状態Ｓ２に移行する。
【００３８】
予約喪失を待つ状態Ｓ２においては、状態マシン４００は、ロード・オペレーションに関するロード予約が存在する間はアイドル状態にとどまる。ロード予約が喪失された後に、状態マシン４００は状態Ｓ４に移行する。
【００３９】
キャッシュ・メモリは、そのキャッシュラインの１つに他のプロセッサがアクセスしているかどうかを検出する機構を有する。通常、この機構はスヌープ・マシンと呼ばれる。同様のプロセスは、キャッシュラインが他のプロセッサ又はデバイスによって変更されているかどうかを判断するために、状態マシン４００によって用いることができる。さらに、状態マシン４００は、同じプロセッサの又はキャッシュ・メモリを共有する他のプロセッサの別のスレッドによる、バッファ・フラグへのストア命令を監視する。
【００４０】
状態Ｓ２からの唯一の終了が、バッファ・フラグを格納するキャッシュラインが変更されることによる場合には、プロセッサは潜在的にデッドロック状態（プロセスの進行が完全に停止した状態）となる可能性がある。本発明の１以上の実施形態においては、潜在的なデッドロック状態を避けるために、ロード予約が失われていない場合でも状態マシン４００が状態Ｓ４に移行するように、他の終了条件が加えられる。例えば、状態Ｓ２から状態Ｓ４への移行を開始する又は引き起こすのに、割り込みを用いることができる。割り込みが、実施形態における停止されたプロセッサ又はプロセッサ・スレッドに向けられる場合には、状態マシン４００は、割り込みを処理できるように状態Ｓ４に移行することになる。割り込みが処理されない場合には、プロセッサ又は他のデバイスは決してバッファ・フラグを更新することはできない。
【００４１】
別の例示的な実施形態においては、状態Ｓ２から状態Ｓ４への移行を引き起こすのにタイムアウト処理を用いることができる。状態Ｓ２と状態Ｓ４の間で起こる移行に関して容認できないほどの長時間の待ちを避けるために、キャッシュライン・ポーリングの時間に関するタイムアウト処理を起動するのにソフトウェアを用いることができる。タイムアウト処理のオプションにより、状態マシン４００は、指定された時間の後、状態Ｓ４００に出ることになる。本発明の代替の実施形態においては、タイムアウト値は予め設定するか、又は予約喪失時のロード命令のパラメータとして設定することができる。
【００４２】
図４の説明される状態図においては、予約喪失（プロセッサのキャッシュ内にはないバッファ・フラグ）待ち状態Ｓ３は、バッファ・フラグをストアするキャッシュラインが、同じキャッシュラインを要求する他のロード命令又はストア命令によってキャストアウトされる場合に移行することができる。状態Ｓ３は、バッファ・フラグがプロセッサのキャッシュ・メモリに格納されないことを除いて、実質的に前述の状態Ｓ２と同じである。状態Ｓ２に関するのと同じ終了条件が状態Ｓ３に関して存在するが、バッファ・フラグを格納するキャッシュラインは、状態Ｓ３におけるプロセッサのキャッシュ内では、もはや有効（即ち、変更又は共有さている）ではないとマーク付けされる。１つの実施形態において、キャッシュラインのキャストアウト・オペレーションが予約のリセットを引き起こし得るときには、状態Ｓ３は削除することができる。別の実施形態においては、キャッシュ・メモリがシステム・バスからデータをプリロード（例えば、キャッシュ注入）する場合には、状態Ｓ３から状態Ｓ２へ戻る移行が起り得る。
【００４３】
データ転送状態Ｓ４においては、バッファ・フラグを格納するキャッシュラインの状態が検査されて、バッファ・フラグを格納するキャッシュラインが有効データ（即ち、変更された又は共有された）を含むかどうかが判断される。もしそうであれば、データはプロセッサに転送され、状態マシン４００は状態Ｓ０に再入する。これは、ロード予約の喪失が別のイベント（例えば、割り込み又はタイムアウト）によって引き起こされるために、バッファ・フラグ・データがプロセッサ又はデバイスによっては変更されない場合である。この場合、バッファ・フラグは「ビジー」標識データ値を指定するデータを含み、比較命令が実行されることになる。割り込みが処理待ちの場合には、割り込みは次に処理されることになる。割り込みが戻るとき、返されたデータが「ビジー」標識データ値であった場合には、分岐が行われることになる。分岐が行われる場合、キャッシュライン・ポーリング・ルーチンを開始するロード予約が、再びロード予約プロセスを開始する。
【００４４】
バッファ・フラグを格納するキャッシュラインが無効データを含む場合には、「ロード失敗」が生成され、バスを介してバッファ・フラグ・データが共有メモリから要求される。バッファ・フラグ・データが返されたとき、そのデータはプロセッサに転送され、キャッシュ・メモリの状態が更新される。状態マシン４００は次に状態Ｓ０に移行する。このプロセスは、キャッシュ・メモリ内で失敗した正規のロード・オペレーションと同じである。この場合、データは、「非ビジー」標識データ値（例えば、０ｘＢＣ又は０ｘＢＢとは異なる任意の値）を含むようにデバイスによって変更されている。
【００４５】
その後、比較命令が実行される。返されたデータが「ビジー」標識データ値を指定しない場合には、分岐は行われず、キャッシュライン・ポーリング・ルーチンが終了して、外部デバイスが関連するバッファからのデータの検索を完了したことを示す。
【００４６】
予約喪失をもたらし得る幾つかの条件には、予約喪失時のロード命令のアドレスによって参照されるキャッシュライン含有データの無効化、同じプロセッサ又は同じキャッシュ・メモリを共有する別のプロセッサによる予約喪失時のロード命令のアドレスに関連するデータの変更、予約喪失時のロード命令を以前に実行していた停止されたスレッドに対する割り込みの表示、同じプロセッサ又はＳ３状態が前述されたキャッシュを共有する別のプロセッサのメモリ動作によって生じる通常のキャッシュライン置換／排出／キャストアウト、或いは、１以上の他の終了条件（例えば、条件付きロード命令に対するタイムアウト）の発生が含まれる。
【００４７】
実施形態において、キャッシュラインの無効化は、そこに格納されているデータを変更する目的でキャッシュラインを読み取るデバイス又は別のプロセッサによって、又は、キャッシュラインに書き込む（フラッシュによる書込み）デバイス又は他のプロセッサによって、もたらされる可能性がある。
【００４８】
バッファ・フラグ又はセマフォーは、ここではキャッシュ可能メモリ・ロケーション内に格納されるように説明されているが、代替の実施形態においては、メモリ・ロケーションはキャッシュ可能である必要はない。より具体的には、本発明の方法又はプロセスは、プロセッサが、バッファ・フラグ含有メモリ・アドレスを更新するデバイスをスヌープする手段を有する限りは、非キャッシュ可能メモリ・ロケーション内に配置されるバッファ・フラグに対して適用することも可能である。非キャッシュ可能メモリ・ロケーション内のバッファ・フラグの位置見出は、状態Ｓ３の存在によって明白にされる。状態３においては、バッファ・フラグはプロセッサ・キャッシュ内で有効ではないが、これは非キャッシュ可能フラグに対して存在することになるのと同じ状態である。
【００４９】
図５は、本発明の一実施形態による、ストア及び予約命令と予約喪失時のロード命令を用いてキャッシュライン・ポーリングを実行するプロセスのフロー図を示す。例として記述されたプロセスの実施形態は、図３の情報処理システム３００のシステム・エレメントに関連して説明されることになる。初めに、図５の説明されるプロセスの実施形態において、ＰＰＵ３１６のロード／ストア・ユニット３１８は、共有メモリ３８９内のバッファをデータ（例えば、外部デバイス３９０によって取り扱われる又は処理されるデータ）で充填する（プロセス・ブロック５０２）。本発明の代替の実施形態においては、データのバッファへの転送は、１以上のＳＰＥ２２０−２３４内に準備されるＤＭＡコントローラ又はエンジンを利用して実行することができる。その後、ロード／ストア・ユニット３１８がストア及び予約命令を実行する（プロセス・ブロック５０３）。説明されるプロセスの実施形態において、ＳＴＡＲ命令の実行は、「ビジー」標識データ値を指示又は指定するデータを、共有メモリ３８９のキャッシュ可能メモリ・ロケーション３３６内にストアし（プロセス・ブロック５０４）、予約レジスタ３３０を用いて予約を「設定する」（プロセス・ブロック５０６）。
【００５０】
その後、外部（例えば、Ｉ／Ｏ）デバイス３９０は、関連するデータ・バッファがアクセスされる準備ができた（図示せず）ことを通知される（例えば、ＭＭＩＯレジスタへの書込み、例外、割り込み、トラップなどの発生によって）ことができる。或いは、そのような通知は、前述のように、単にキャッシュ可能メモリ・ロケーション３３６内へのバッファ「ビジー」標識データ値のストアによって行うこともできる。ロード／ストア・ユニット３１８は次に予約喪失時のロード（ＬＤＲＬ）命令を実行することができる（プロセス・ブロック５０７）。図５に示されるように、ＬＤＲＬ命令の実行は、予約がリセットされたかどうかを判断し（プロセス・ブロック５０８）（例えば、状態レジスタ３２０内のフラグの１以上のビットを検査することによって）、予約がリセットされる（例えば、外部デバイス３９０によるキャッシュ可能メモリ・ロケーション３３６のバッファ・フラグ内への「非ビジー」標識データ値の格納を介して）までＬＤＲＬ命令の更なる実行を停止するか、或いは、ひとたび予約がリセットされると、キャッシュ可能メモリ・ロケーション３３６内に格納されているバッファ・フラグ・データをＰＰＵ３１６のレジスタ内に読み込む（プロセス・ブロック５１０）。予約がリセットされるときの決定を描くために連続的なループが用いられているが、プロセッサ（単一スレッドのユニ又はマルチプロセッサ・システム）又は関連するスレッド（マルチ・スレッドのプロセッサ・システム）のどちらによっても何ら実際の命令は実行されておらず、従って、通常のキャッシュライン・ポーリング法を用いた場合には浪費される貴重な処理能力及び電力が節約されることを認識されたい。
【００５１】
その後、ＰＰＵ３１６の固定小数点実行ユニット（図示せず）が、キャッシュ可能メモリ・ロケーション３３６のバッファ・フラグ・データが読み込まれたＰＰＵ３１６のレジスタのコンテンツを、指定された「ビジー」標識データ値と比較する（プロセス・ブロック５１２）。次に、ＰＰＵ３１６の分岐ユニット（図示せず）は比較結果を利用して、レジスタのコンテンツが「ビジー」標識データ値と一致するかどうかを判断する（プロセス・ブロック５１４）。その後、描かれたプロセス実施形態は、レジスタのコンテンツが既知の「ビジー」標識データ値と一致しないとの判断に応答して完全にリスタートされるか、又は、ＬＤＲＬ命令実行の点に再入される（プロセス・ブロック５０７）。
【００５２】
図５に図解された動作は、特定のシステム・エレメントに関して説明されているが、そのような動作を実行するのに用いられる実際のエレメントは、本発明のプロセス実施形態には重要ではない。さらに、代替の実施形態においては、それらの動作は任意の情報処理システムによって実行することができる。同様に、図５に描かれたフロー図は、特定の動作順序、及びプロセス動作の特定の細分度を示すが、代替の実施形態においては説明される順序は変えることができ（例えば、プロセス動作は別の順序で実行するか、又は実質的に並列に実行することができる）、そして１以上のプロセス動作は合体させるか、又は細分化することができる。同様に、本発明の代替の実施形態において必要な場合には、追加のプロセス動作を加えることができる。
【００５３】
本発明の実施形態は、ソフトウェア、情報処理ハードウェア、及び、ここで更に説明される種々のプロセス動作を含むことができる。本発明の種々の実施形態の特徴とプロセス動作は、共有メモリ２８９、ストレージ・デバイス、通信デバイス又は媒体などの機械可読媒体内に具体化された実行可能命令の中に具体化することができる。機械可読媒体は、データをマシン（例えば、ＣＢＥ２００）による可読な形式でデータを提供する（即ち、ストアする及び／又は伝送する）任意の機構を含むことができる。
【００５４】
例えば、機械可読媒体は、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、磁気ストレージ媒体、光学ストレージ媒体、フラッシュ・メモリ・デバイス、電気的、光学的、及び／又は音響的伝播信号（例えば、搬送波、赤外信号、ディジタル信号など）などを含むが、それらに限定はされない。実行可能命令は、その命令をもつプログラムを与えられた汎用又はＰＰＵ３１６のような専用プロセッサに、本発明の動作、方法又はプロセスを実行させるために用いることができる。或いは、本発明の特徴又は動作は、それらの動作を実行するハード・ワイヤード（ｈａｒｄ−ｗｉｒｅｄ）論理回路を含む特定のハードウェア・コンポーネントによって、又はプログラムされたデータ処理コンポーネントと特注のハードウェア・コンポーネントの任意の組合せによって、実行することができる。
【００５５】
図６は、本発明の一実施形態による、ストア及び予約命令と予約喪失時のロード命令を介するプロセス間通信を用いてキャッシュライン・ポーリングを実行するプロセスの実行フロー図を示す。図６の実行フロー図に描かれるように、少なくとも２つのプロセス（プロセスＡとプロセスＢ）の実行が、時間周期にわたってインターリーブされる。プロセスＡのコンテキスト内のＳＴＡＲＴ命令の実行の後、プロセスＢのコンテキストの実行へのコンテキスト切替えが起る。プロセスＢのコンテキスト内の対応するＳＴＡＲＴ命令の実行は、プロセスＡによって以前に保持された既存の予約をリセットし、そしてプロセスＢの予約を設定する。次にプロセスＢのコンテキストによるＬＤＲＬ命令の実行は、ＬＤＲＬ命令（プロセスＢの予約）の標的アドレスに対する予約が存在する場合に停止し、ＬＤＲＬによって何のデータも返されない。
【００５６】
次に、別のプロセス・コンテキスト切替えが起こり、バッファ・フラグ・データ値が依然としてバッファ・ビジー状態を示しているとの判断に基づいて、プロセスＢのＬＤＲＬ命令に対してデータを返し、ループ入りをもたらす。プロセスＡへ戻るコンテキスト切替えに続いて、そこで再入力されたＬＤＲＬ命令によって、データが返される。図６の例示的な実施形態においては、返されたデータはバッファ・ビジー状態を示し、ＬＤＲＬ命令の再実行を含むループ実行をもたらし、プロセスＡのために別の予約を設定させるようにする。プロセスＡは次にＬＤＲＬ命令において、データ（バッファ非ビジー状態を示す）が返されてプロセスＡに関するキャッシュライン・ポーリング・ループが、示されるように終了される時点で予約がリセットされるまで、停止させられる。
【００５７】
プロセスＢへ戻るコンテキスト切替えにより、データは再びそこで再入力されたＬＤＲＬ命令によって返され、対応する予約が再び設定される。示されるように、バッファ・ビジー状態を示すデータがこの時点で返されて、ループが再入されるようにする。再入により、ＬＤＲＬ命令は、予約状態に基づいてバッファ・フラグ・データ値が変更される（例えば、外部デバイスによって）まで停止するが、その際、バッファ非ビジー状態を示すデータが、プロセスＢのキャッシュライン・ポーリング・ルーチンが終了する時点に返される。用語「プロセス」及びプロセス・コンテキスト切替えがここで用いられているが、他の実行コンテキスト（例えば、軽量プロセス、スレッド、ファイバなど）を用いることもできることを認識されたい。
【００５８】
本発明の実施形態は、十分に機能的なデータ処理システムの文脈において説明されている。しかし、当業者は、本発明は種々の形態のコンピュータ・プログラムとして配布することが可能であり、配布を実施するのに用いられる信号保持媒体の特定の型にはよらずに等しく適用され得ることを認識するであろう。そのような信号保持媒体の例は、フロッピー（登録商標）・ディスク及びＣＤ−ＲＯＭなどの記録可能媒体、ディジタル及びアナログ通信リンクなどの伝送型媒体、および将来開発される媒体ストレージ及び配布システムを含む。本発明の実施形態は、特定の動作又はタスクを実行するのに用いられるソフトウェア・モジュールを利用して、同様に実施することができる。ソフトウェア・モジュールは、スクリプト型、バッチ型、又は他の実行可能なファイルを含むことができ、機械可読又はコンピュータ可読媒体上に格納することができる。従って、モジュールは、ソフトウェア・モジュールの１以上の機能を実行するためにデータ処理又はコンピュータ・システムを構成するようにコンピュータ・システム・メモリ内に格納することができる。他の新しい種々の型の機械又はコンピュータ可読ストレージ媒体も、ここで論じられたモジュールを格納するのに用いることができる。
【００５９】
本発明の特定の実施形態が示され、説明されているが、ここでの教示に基づいて、本発明及びそのより広い態様から逸脱することなしに、変更及び改変を施すことができることは、当業者には明白であろう。従って、特許請求の範囲は、その範囲内に全ての変更及び改変を本発明の真の精神と範囲内にあるものとして包含するものである。本発明の実施形態は、全ての点における均等物に対する完全な認識を与えるものであり、本発明が特許請求の範囲のみによって限定され他の記載によっては限定されないことが意図されている。
【図面の簡単な説明】
【００６０】
【図１】本発明の一実施形態による情報処理システムを含む通信ネットワークを示す。
【図２】本発明の一実施形態による情報処理システムの高次レベルのブロック図を示す。
【図３】本発明の一実施形態による、ストア及び予約命令と予約喪失時のロード命令を用いてキャッシュライン・ポーリングを実行する機能をもつ情報処理システムの選択された部分のブロック図による表示を示す。
【図４】本発明の一実施形態による、ストア及び予約命令と予約喪失時のロード命令に関する予約を管理する状態マシンの状態図を示す。
【図５】本発明の一実施形態による、ストア及び予約命令と予約喪失時のロード命令を用いてキャッシュライン・ポーリングを実行するプロセスのフロー図を示す。
【図６】本発明の一実施形態による、ストア及び予約命令と予約喪失時のロード命令を介するプロセス間通信を用いて、キャッシュライン・ポーリングを実行するプロセスの実行フロー図を示す。
【符号の説明】
【００６１】
１０１：システム
１０２Ａ、１０２Ｂ、１０２Ｃ、１０２Ｄ：ソフトウェア・セル
１０４：ネットワーク
１０６Ａ、１０６Ｂ：クライアント・コンピュータ
１０８Ａ、１０８Ｂ：サーバ・コンピュータ
１１０Ａ、１１０Ｂ：携帯情報端末
１１２：ディジタル・テレビ
２００：Ｃｅｌｌ  Ｂｒｏａｄｂａｎｄ  Ｅｎｇｉｎｅ
２１０、３１０：Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ
２２０−２３４：Ｓｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ
２８６、３８６：エレメント接続バス
２８７、３８７：バス・インタフェース・コントローラ
２８８、３８８：メモリ・インタフェース・コントローラ
２８９、３８９：共有メモリ
２９０、３９０：外部バス／デバイス
３００：情報処理システム
３１２、３１４：キャッシュ
３１６：パワー・プロセッサ・ユニット
３１８：ロード／ストア・ユニット
３２０：状態レジスタ
３２２、３２８：キャッシュ管理ユニット
３２４、３３２：ストレージ・エレメント
３３０：レジスタ
３３６：キャッシュ可能メモリ・ロケーション
３３８、３４０：破線
４００：状態マシン
Ｓ０−Ｓ４：状態
【図１】
0004568292.tif 000002
【図２】
0004568292.tif 000003
【図３】
0004568292.tif 000004
【図４】
0004568292.tif 000005
【図５】
0004568292.tif 000006
【図６】
0004568292.tif 000007