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