(57)【要約】      （修正有）【課題】ＰＰＥとＳＰＥが異なるサイズのレジスタ・ラインを持つＣＥＬＬプロセッサにおいて、アトミックなコンペア・アンド・スワップ命令を実行するための技術が必要である。【解決手段】アトミックなＣＡＳ（compare and swap）処理を、ＰＰＥとＳＰＥを持つプロセッサシステムに実装する。ＰＰＥとＳＰＥはメモリ転送容量が異なる。ＰＰＥは、メインメモリのアドレスについてＣＡＳ処理の実行をＳＰＥに指示する。アドレスサイズは、ＳＰＥの最大メモリ転送サイズ以下であり、ＰＰＥの最大メモリ転送サイズよりも大きい。ＳＰＥは、アトミックにＣＡＳ処理を実行し、ＰＰＥにＣＡＳ処理の成否を通知する。【選択図】図３Ａ
2007157142.tif 000002
【特許請求の範囲】
【請求項１】
メインメモリとメモリ・アクセス・サイズの異なるＰＰＥ（Power Processor Element）とＳＰＥ（Synergistic Processing Element）とを含む２以上のプロセッサを備えるシステムにおいて実行される処理方法であって、
ＳＰＥの最大メモリ転送サイズはＰＰＥの最大メモリ転送サイズよりも大きく設定され、アドレス・サイズはＳＰＥの最大メモリ転送サイズ以下でＰＰＥのメモリ転送サイズよりも大きく設定されている場合において、ＰＰＥからＳＰＥに対して、メインメモリのアドレスについてＣＡＳ（compare and swap）処理の実行を指示するステップと、
ＳＰＥにアトミックなＣＡＳ処理を実行させるステップと、
ＳＰＥにＣＡＳ処理の成否をＰＰＥに通知させるステップと、を備え、
ＣＡＳ処理は、
ＳＰＥに前記アドレスの保持値の予約付き読み出しを実行させるステップと、
ＳＰＥに前記保持値と１以上の参照パラメータに関する比較処理を実行させるステップと、
比較処理が成功したときに、ＳＰＥに前記アドレスへの交換値の条件付き書き込みを実行させるステップと、
を含むことを特徴とするアトミック命令実行方法。
【請求項２】
ＳＰＥに前記保持値と１以上の参照パラメータに関する比較処理を実行させるステップは、前記保持値と前記１以上の参照パラメータについての論理演算をＳＰＥに実行させるステップ、を更に備え、
前記論理演算の結果は、真値または偽値のいずれかであることを特徴とする請求項１に記載のアトミック命令実行方法。
【請求項３】
前記論理演算の結果が真値であって、かつ、前記交換値の条件付き書き込みが成功することが、ＣＡＳ処理の成功を示すことを特徴とする請求項２に記載のアトミック命令実行方法。
【請求項４】
前記論理演算の結果が偽値であって、かつ、前記交換値の条件付き書き込みが成功することが、ＣＡＳ処理の成功を示すことを特徴とする請求項２に記載のアトミック命令実行方法。
【請求項５】
前記１以上の参照パラメータは単一参照値を含み、前記論理演算は、前記保持値と前記単一参照値との比較結果に基づいて、真値または偽値となることを特徴とする請求項２に記載のアトミック命令実行方法。
【請求項６】
前記１以上の参照パラメータは単一参照値を含み、前記論理演算は、前記保持値が前記単一参照値と等しいときに真値となる論理等価演算であることを特徴とする請求項２に記載のアトミック命令実行方法。
【請求項７】
ＰＰＥからＳＰＥに対して、メインメモリのアドレスについてＣＡＳ処理の実行を指示するステップは、ＳＰＥにアドレス、前記１以上の参照パラメータおよび１以上の交換パラメータを転送するステップ、を含むことを特徴とする請求項１に記載のアトミック命令実行方法。
【請求項８】
ＰＰＥからＳＰＥに対して、メインメモリのアドレスについてＣＡＳ処理の実行を指示するステップは、ＳＰＥにアドレス、前記交換値および前記１以上の参照パラメータを転送するステップ、を含むことを特徴とする請求項１に記載のアトミック命令実行方法。
【請求項９】
ＰＰＥからＳＰＥに対して、メインメモリのアドレスについてＣＡＳ処理の実行を指示するステップは、ＳＰＥにアドレスと前記保持値のサイズを転送するステップ、を含むことを特徴とする請求項１に記載のアトミック命令実行方法。
【請求項１０】
ＰＰＥからＳＰＥに対して、メインメモリのアドレスについてＣＡＳ処理の実行を指示するステップは、ＳＰＥにアドレス、前記１以上の参照パラメータ、１以上の交換パラメータを転送するステップを含み、
ＣＡＳ処理は、前記１以上の交換パラメータにより前記交換値を計算するステップ、を含むことを特徴とする請求項１に記載のアトミック命令実行方法。
【請求項１１】
前記保持値と１以上の参照パラメータを比較するステップは、前記保持値が参照値と等しいかを判定するステップ、を含むことを特徴とする請求項１に記載のアトミック命令実行方法。
【請求項１２】
ＣＡＳ処理は、
予約付き読み出しの実行から条件付き書き込みの実行までに前記保持値が上書きされていれば、前記保持値の予約付き読み出しを再実行し、更に、前記保持値と１以上の参照値についての比較処理を実行し、比較失敗時にはＰＰＥに通知することを特徴とする請求項１に記載のアトミック命令実行方法。
【請求項１３】
ＣＡＳ処理を実行するステップは、前記交換値を計算するステップ、を含むことを特徴とする請求項１に記載のアトミック命令実行方法。
【請求項１４】
ＣＡＳ処理を実行するステップは、前記１以上の交換パラメータにより参照値を計算するステップ、を含むことを特徴とする請求項１に記載のアトミック命令実行方法。
【請求項１５】
前記交換値は、前記保持値についての所定関数の実行結果として算出されることを特徴とする請求項１に記載のアトミック命令実行方法。
【請求項１６】
前記交換値は、前記保持値とＰＰＥが提供する１以上のパラメータについての所定関数の実行結果として算出されることを特徴とする請求項１に記載のアトミック命令実行方法。
【請求項１７】
前記交換値は、前記保持値に増分値を加算した値であることを特徴とする請求項１に記載のアトミック命令実行方法。
【請求項１８】
ＰＰＥによりＣＡＳ処理を実行指示されるべきＳＰＥを指定するステップ、を更に含むことを特徴とする請求項１に記載のアトミック命令実行方法。
【請求項１９】
ＰＰＥによりＣＡＳ処理を実行指示されるべきＳＰＥを指定するステップ、を更に含み、前記指定されたＳＰＥはアトミックにＣＡＳ処理を実行することを特徴とする請求項１に記載のアトミック命令実行方法。
【請求項２０】
データバスと、
前記データバスに接続され、１以上のタスク定義情報を保持するメインメモリと、
前記データバスに接続されるＰＰＥ（Power Processor Element）と、
前記データバスに接続される１以上のＳＰＥ（Synergistic Processing Element）と、を備え、
各ＳＰＥは、ＳＰＵ（Synergistic Processing Unit）とローカルストア（Local Store）を含み、
ＳＰＥの最大メモリ転送サイズがＰＰＥの最大メモリ転送サイズよりも大きくなるようにＳＰＥのメモリ転送サイズとＰＰＥのメモリ転送サイズは異なる値に設定され、
メインメモリのアドレスに対するＣＡＳ（compare and swap：比較・交換）処理の実行をＳＰＥに指示する命令を含む命令群であって、プロセッサにて読み取り可能な第１の命令セットがＰＰＥの１以上のレジスタまたはメインメモリに実装され、
アドレス・サイズはＳＰＥの最大メモリ転送サイズ以下でＰＰＥの最大メモリ転送サイズよりも大きく設定され、
前記アドレスについてのＣＡＳ処理を実行する命令と、ＣＡＳ処理の成否をＰＰＥに通知する命令を含む命令群であって、プロセッサにて読み取り可能な第２の命令セットが１以上のＳＰＥ・ローカルストアの１以上のレジスタまたはメインメモリに実装されたことを特徴とするＣＥＬＬプロセッサ。
【請求項２１】
前記アドレスについてのＣＡＳ処理を実行する命令は、
ＳＰＥに前記アドレスの保持値の読み出しを実行させる命令と、
ＳＰＥに前記保持値と１以上の参照パラメータに関する比較処理を実行させる命令と、
比較処理が成功しなかったときに、ＰＰＥに通知する命令と、
を含むことを特徴とする請求項２０に記載のＣＥＬＬプロセッサ。
【請求項２２】
ＣＡＳ処理における比較処理は、前記保持値と１以上の参照パラメータについての論理演算を含み、
前記論理演算の結果は、真値または偽値のいずれかであることを特徴とする請求項２０に記載のＣＥＬＬプロセッサ。
【請求項２３】
前記論理演算の結果が真値であって、かつ、交換値の条件付き書き込みが成功することが、ＣＡＳ処理の成功を示すことを特徴とする請求項２２に記載のＣＥＬＬプロセッサ。
【請求項２４】
前記論理演算の結果が偽値であって、かつ、交換値の条件付き書き込みが成功することが、ＣＡＳ処理の成功を示すことを特徴とする請求項２２に記載のＣＥＬＬプロセッサ。
【請求項２５】
前記論理演算は、前記保持値が単一参照値と等しいときに真値となる論理等価演算であることを特徴とする請求項２２に記載のＣＥＬＬプロセッサ。
【請求項２６】
１以上のＳＰＥは特定ＳＰＥを含み、
プロセッサにて読み取り可能な第１の命令セットは、メインメモリのアドレスに対するＣＡＳ処理の実行を特定ＳＰＥに指示する命令を含むことを特徴とする請求項２０に記載のＣＥＬＬプロセッサ。
【請求項２７】
１以上のＳＰＥは特定ＳＰＥを含み、
プロセッサにより読み取り可能な命令の第１命令セットは、メインメモリのアドレスに対するＣＡＳ処理の実行を特定ＳＰＥに指示する命令を含み、
特定ＳＰＥは、そのローカル・ストアに第２の命令セットを実装されることを特徴とする請求項２０に記載のＣＥＬＬプロセッサ。
【請求項２８】
特定ＳＰＥにＰＰＥ補助関数を実装したことを特徴とする請求項２７に記載のＣＥＬＬプロセッサ。
【請求項２９】
ＰＰＥ補助関数は、memcopy関数を含むことを特徴とする請求項２８に記載のＣＥＬＬプロセッサ。
【請求項３０】
ＣＡＳ処理の実行命令は、
予約付き読み出しの実行から条件付き書き込みの実行までに前記保持値が上書きされていることを条件として実行される条件付き命令のセットを含み、
条件付き命令のセットは、
ＳＰＥに前記保持値の予約付き読み出しを再実行させる命令と、
ＳＰＥに前記保持値と１以上の参照値についての比較処理を実行させる命令と、
を含むことを特徴とする請求項２０に記載のＣＥＬＬプロセッサ。
【請求項３１】
ＣＡＳ処理は、交換値を計算するステップを含むことを特徴とする請求項２０に記載のＣＥＬＬプロセッサ。
【請求項３２】
ＣＡＳ処理は、参照値を計算するステップを含むことを特徴とする請求項２０に記載のＣＥＬＬプロセッサ。
【請求項３３】
前記交換値は、前記保持値についての所定関数の実行結果として算出されることを特徴とする請求項２０に記載のＣＥＬＬプロセッサ。
【請求項３４】
前記交換値は、前記保持値とＰＰＥが提供する１以上のパラメータについての所定関数の実行結果として算出されることを特徴とする請求項２０に記載のＣＥＬＬプロセッサ。
【請求項３５】
前記交換値は、前記保持値に増分値を加算した値であることを特徴とする請求項２０に記載のＣＥＬＬプロセッサ。
【請求項３６】
ＳＰＥの最大メモリ転送サイズは１２８バイトであり、ＰＰＥの最大メモリ転送サイズは８バイトであることを特徴とする請求項２０に記載のＣＥＬＬプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、その優先日と同時に出願され、本出願と譲受人が共通する米国特許出願「発明の名称:メモリ転送処理サイズが異なるプロセッサを含むアトミックな処理（ATOMIC OPERATION INVOLVING PROCESSORS WITH DIFFERENT MEMORY TRANSFER OPERATION SIZED）、James E.Marr,John P.Bates,Tatsuya Iwamoto」に関連し、関連出願の主題は、ここに引用により組み込まれる。
【０００２】
本実施例は、ＣＥＬＬプロセッサに関連し、より詳細には、ＣＥＬＬプロセッサのアトミック処理、に関する。
【背景技術】
【０００３】
ＣＥＬＬプロセッサとは、並行処理可能なマイクロプロセッサの一種である。基本構成のＣＥＬＬプロセッサには、１つのＰＰＥ（Power Processor Element）（「Processing Element」すなわち「PE」ともよばれる）と、複数のＳＰＥ（Synergistic Processing Elements）が含まれる。ＰＰＥとＳＰＥは、ＥＩＢ（Element Interconnect Bus）とよばれる内部高速バスによって接続される。ＣＥＬＬプロセッサは、携帯型デバイスからメインフレームまでのさまざまなアプリケーションについて対応可能に設計されている。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ＣＥＬＬプロセッサは、通常、１つのＰＰＥと最高８つのＳＰＥを持つ。通常、各ＳＰＥは、単一チップであるか、メインプロセッサ（main processor）や補助プロセッサ（co-processor）を含む単一チップの一部である。各ＳＰＥは、通常、ＳＰＵ（Synergistic Processor Unit）とローカルストア（ＬＳ：Local store）を含む。ＰＰＥは、通常、ＰＰＵ（Power Processor Unit）と１以上のキャッシュを含む。全てのＳＰＥとＰＰＥは、バスなどを介してメインメモリにアクセスできる。ＳＰＥは、ＰＰＥにて実行されるプログラムと連携して複数の処理を並列実行できる。ＳＰＥとＰＰＥにおける並列処理の調整のために、アトミックな命令を実装することが多い。アトミック命令とは、ＳＰＵやＰＰＵが単一操作にて（しばしば「アトミック」として参照されるアドレスである）メモリアドレスへの読み書きを実行し、その間は他のプロセッサの「アトミック」へのアクセスを禁じるような命令である。アトミック命令とは、相互排他的な（ミューテックス（mutex:mutual exclusion））「ロック（locked）」命令か「ロックフリー（lock-free）」命令である。ミューテックス処理では、プロセッサがアトミックをロックすると、ロックが解除されるまで他のプロセッサはアトミックへの書き込みができなくなる。「ロックフリー」処理では、１度に１つのプロセッサだけがアトミックアドレスに書き込み可能であり、他のプロセッサはアトミックに書き込まれたところに上書きできる。ロックフリーのアトミック命令は、「予約（resservation）」命令を使用する。予約命令は、予約を行ったプロセッサに対して、予約後にアトミックが上書きされたかどうかを通知する。
【０００５】
一般的によく知られているＣＥＬＬプロセッサの連携のために使われる同期プリミティブとして、「コンペア・アンド・スワップ：compare and swap（比較と交換）」命令（以下、「ＣＡＳ命令」とよぶ）がある。この命令の基本的な考え方は、「他の処理主体により変更済みでないことを条件としてメモリに保持されている値を変更すること」である。ＣＡＳ命令は特定の値と保持値を比較する。一致すれば、メモリの値を更新する。不一致のときには、アプリケーションに「失敗」通知する。たとえば、ＣＡＳ命令は、メモリの「０ｘ７Ａ」番地に保持されている値と「１０」を比較する。一致すれば、「２０」という値がメモリの「０ｘ７Ａ」番地に書き込まれる。
【０００６】
ＣＡＳ命令は、通常、アトミックに実行されることが望ましい。ＣＥＬＬプロセッサでアトミック命令を実行するときに問題となるのは、ＰＰＵとＳＰＵの間でアトミック命令のための予約サイズが違うことである。アトミック命令のサイズの違いは、ＰＰＵとＳＰＵの間におけるメモリアクセス能力のサイズ違いに起因する。ＰＰＵのメモリアクセスは、一般的には、ＰＰＵコアのレジスタサイズにより制約される。ＰＰＵのレジスタの長さは８バイトである。１バイトは８ビットなので６４ビットサイズとなる。メモリ・フロー・コントローラ（ＭＦＣ：memory flow controller）はＳＰＵのアトミック・サイズを設定する。ＭＦＣは、ＳＰＵのアトミック操作と非アトミック操作の両方についてのＤＭＡ処理に対応する。ＳＰＵのローカルストアは、１６バイト、すなわち、１２８ビットレジスタのかたちで形成される。ＳＰＵのローカルストアのレジスタは、メインメモリのアドレスとは結びついていない。ＳＰＵは、ＭＦＣを介してメモリとアクセスする。ＭＦＣは１２８バイトの大きさ（chunk）で動作する。あるＣＥＬＬの実装では、ＳＰＵの全てのアトミック命令は１２８バイトとなる。しかし、ＭＦＣが扱う非アトミック命令のサイズは１バイトから１６キロバイトの範囲にわたる。そこで、ＳＰＵは予約付き読み出し（read with reservation）を実行し、１２８バイト分をローカルストアにコピーする。予約単位のサイズは任意である。アトミック・アクセスのサイズよりも大きなサイズであれば、論理的には正しく動作するであろう。
【０００７】
ＳＰＵが大容量のデータをアトミックに扱えることはとても強力であるが、ＰＰＵが１度に８バイトしかアトミックに扱えないことは不自由となりうる。アトミックな予約のサイズの違いは、ロックフリー・アルゴリズムの特徴を制限してしまう可能性がある。連結リストは、ミューテックスを使わなくても、ロックフリー・アルゴリズムで扱うことができる。しかし、もっと大きなアトミックを扱えれば、整数型よりも大きなサイズの型を一度の操作でアトミックに更新できるので、ロックフリー・アルゴリズムをもっと複雑な操作にも応用できる。ＰＰＵが８バイトよりも大きな値をアトミックに操作するためのなんらかのメカニズムを使えれば有効である。そうすれば、ＳＰＵを利用するためのいっそう高度なプログラミング・モデルを提供できるであろう。
【０００８】
したがって、ＰＰＥとＳＰＥが異なるサイズのレジスタ・ラインを持つＣＥＬＬプロセッサにおいて、アトミックなコンペア・アンド・スワップ命令を実行するための技術、が必要である。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明のある態様は、メインメモリ、ＰＰＥ、ＳＰＥを備えるプロセッサ・システムにおいて実装可能なアトミック・ＣＡＳ命令に関する。ＰＰＥとＳＰＥはメモリ転送容量が異なる。ＳＰＥの最大メモリ転送サイズはＰＰＥのそれよりも大きい。ＰＰＥは、メインメモリ上のあるアドレスについてＣＡＳ命令を実行するようにＳＰＥに通知する。このアドレスは、ＳＰＥの最大メモリ転送サイズ以下であり、ＰＰＥの最大メモリ転送サイズよりも大きい。ＳＰＥは、アトミックにＣＡＳ命令を実行し、ＣＡＳ命令の成否をＰＰＥに通知する。
【００１０】
ＳＰＥは、このアドレスの保持値について「予約付き読み出し」を実行し、保持値と１以上の参照値についての「比較処理」を実行することによって、ＣＡＳ命令をアトミック実行する。比較が「成功」すると、ＳＰＥは、そのアドレスに対する交換値の「条件付き書き込み（conditional write）」を実行する。
【００１１】
このような態様によれば、ＳＰＥはＰＰＥの代わりにＣＡＳ命令を実行できる。それゆえ、ＳＰＥによる処理本来の効率性を発揮できる。
【発明を実施するための最良の形態】
【００１２】
本発明の教示するところは、添付図面とあわせて以下の詳細な説明を考慮することにより容易に理解されるでろう。
以下の記述においては、例示のために多くの特定的な詳細を含むけれども、本発明の範囲内において、以下の詳細について多くの変形や変更が可能であることは、当業者には理解されるところである。したがって、下記に示す本発明の実施例は、請求項に記載の発明の一般性を失わせるものでも制約を設けるものでもない。
【００１３】
本発明の実施例におけるＣＥＬＬプロセッサでは、ＰＰＵのためにＳＰＵ・サイズのＣＡＳ命令を実装する。これには、ＣＥＬＬプロセッサにおけるＳＰＵ・ＰＰＵ間の内部的な処理も含まれる。ＰＰＥからＳＰＥへの通信に際しては無視しがたい遅延オーバーヘッドが発生するので、ＣＡＳ命令実行中のＰＰＥとＳＰＥの通信はなるべく少ない方がよい。
【００１４】
制約的な意味ではない設例として、図１は、ＣＢＥＡ（ＣＥＬＬブロードバンドエンジン・アーキテクチャ：Cell Broadband engine architecture）として知られるアーキテクチャ準拠のＣＥＬＬプロセッサ１００を示している。同図設例に示すようにＣＥＬＬプロセッサは、ＰＰＥの複数個の集合（ＰＰＥグループ）と、ＳＰＥの複数個の集合（ＳＰＥグループ）を備えることができる。あるいは、ＣＥＬＬプロセッサは、単一のＳＰＥと単一のＰＰＥにより、単一のＳＰＥグループと単一のＰＰＥグループだけを備えてもよい。グループ内の各ユニットは、ハードウェア資源を共有できる。ただし、ソフトウェアからは、ＳＰＥとＰＰＥは独立した要素として見えなければならない。
【００１５】
図１に示す例では、ＣＥＬＬプロセッサ１００は、ＳＧ−０、・・・、ＳＧ−ｎといった多数のＳＰＥグループと、ＰＧ−０、・・・、ＰＧ−ｐといった多数のＰＰＥグループを含む。各ＳＰＥグループは、ＳＰＥ０、・・・、ＳＰＥｇといった多数のＳＰＥを含む。また、ＣＥＬＬプロセッサ１００は、メインメモリ（ＭＥＭ）と入出力機能（Ｉ／Ｏ）も含む。
【００１６】
各ＰＰＥグループは、ＰＰＥ−０、・・・、ＰＰＥ−ｇといった多数のＰＰＥを含む。この例では、ＳＰＥグループは、単一のキャッシュＳＬ１を共有する。キャッシュＳＬ１は、ローカルストレージとメインストレージの間におけるＤＭＡ転送のためのファーストレベルキャッシュである。グループ内の各ＰＰＥは、それぞれ専用のファーストレベル（内部）キャッシュＬ１を持つ。加えて、グループ内のＰＰＥは、単一のセカンドレベル（外部）キャッシュＬ２を共有する。図１では、ＳＰＥとＰＰＥのためのキャッシュが示されているが、一般的なＣＥＬＬプロセッサ、特にＣＢＥＡ準拠プロセッサにとってこれは必須の構成ではない。
【００１７】
要素接続バスＥＩＢは、上記に示したさまざまなコンポーネントを接続する。各ＳＰＥグループにおけるＳＰＥと各ＰＰＥグループにおけるＰＰＥは、バス・インタフェース・ユニットＢＩＵを介して、ＥＩＢにアクセスできる。ＣＥＬＬプロセッサ１００は、通常、プロセッサ内に２つのコントローラを含む。１つは、ＥＩＢとメインメモリＭＥＭの間のデータの流れを制御するメモリ・インタフェース・コントローラＭＩＣである。もう一つは、Ｉ／ＯとＥＩＢの間のデータの流れを制御するバス・インタフェース・コントローラＢＩＣである。ＭＩＣ、ＢＩＣ、ＢＩＵ、ＥＩＢについての実装はさまざまであるが、各実装に応じた機能や回路については当業者にとっては既知のものである。
【００１８】
各ＳＰＥは、ＳＰＵ（ＳＰＵ０、・・・、ＳＰＵｇ）を備える。ＳＰＥグループにおける各ＳＰＵは、専用のローカルストレージ領域ＬＳと専用のメモリ・フロー・コントローラＭＦＣを備える。ＭＦＣは、メモリ管理ユニットＭＭＵと対応づけられる。ＭＭＵは、メモリ保護やアクセス許可に関する情報の保持および処理を行う。
【００１９】
ＰＰＥは、キャッシュ付きの６４ビットのパワーＰＣ・プロセッサ・ユニット（ＰＰＵ）である。ＣＢＥＡ準拠システムでは、ＰＰＥは、ベクトル・マルチメディア・拡張ユニット（vector multimedia extension unit）を内蔵する。ＰＰＥは汎用処理用ユニットであり、（メモリ保護テーブルのような）システム管理資源にアクセスできる。ＣＢＥＡ定義のハードウェア資源は、ＰＰＥから見えるように物理アドレスに明示的にマップされる。それゆえ、いずれのＰＰＥも、適切かつ有効なアドレス値により、どんなリソースでも直接アドレスできる。ＰＰＥの主要機能は、システム内におけるＳＰＥタスクの割り当てと管理である。
【００２０】
ＳＰＥは、ＰＰＥに比べれば計算ユニットとしては複雑ではない。ＳＰＥにはシステム管理機能がないからである。ＳＰＥは、ＳＩＭＤ（single instruction,multiple data）による処理機能を備え、割り当てられたタスクを実行するために必要なデータ転送を（ＰＰＥによってセットアップされたアクセス属性にしたがって）開始する。ＳＰＵの目的は、計算ユニットのいっそうの高密度集積を要求し、所与の命令セットを効果的に実行できるようなアプリケーションを実現とすることである。システムにおいて、ＰＰＥに管理されるべきＳＰＵの数は、さまざまなアプリケーションについてコスト的に効率的な処理を実現できるように決められる。ＳＰＵは、新たな命令セットアーキテクチャを実装する。
【００２１】
ＭＦＣコンポーネントは、本質的にはデータ転送エンジンである。ＭＦＣは、ＣＥＬＬプロセッサのメインストレージとＳＰＥのローカルストレージの間におけるデータの転送、保護、同期に関する主要機能を担う。ＭＦＣコマンドは、転送の実行を示す。アーキテクチャ上におけるＭＦＣの最重要目的は、できるかぎり高速・正確にデータ転送を実行し、ＣＥＬＬプロセッサの全体としてのスループットを最大化することである。データ転送用コマンドは、ＭＦＣ・ＤＭＡコマンドとして参照される。これらのコマンドが変換されて、ローカルストレージ領域とメインストレージ領域の間のＤＭＡ転送となる。
【００２２】
通常、各ＭＦＣは、同時に複数のＤＭＡ転送をサポートし、複数のＭＦＣコマンドを保持・処理できる。このような機能を実現するため、ＭＦＣは、ＭＦＣコマンドキューを保持・処理する。ＭＦＣは、複数個の転送要求とキューに投入したり、それらを同時発行することもできる。各ＭＦＣは、対応するＳＰＵのためのキュー（ＭＦＣ・ＳＰＵ・コマンドキュー）と、他のプロセッサやデバイスのためのキュー（ＭＦＣ・プロキシ・コマンドキュー）を備える。論理的には、ＭＦＣキューの集合は、常に、ＣＥＬＬプロセッサ内の各ＳＰＵに対応づけられている。しかし、アーキテクチャ実装によっては、ＳＰＵグループのように複数のＳＰＵ間で単一の物理的なＭＦＣを共有することもできる。このような場合にも、ソフトウェアからは、すべてのＭＦＣに関連する装置がＳＰＵごとに別々にあるように見えなければならない。各ＭＦＣ・ＤＭＡ・データ転送要求コマンドは、ローカルストレージのアドレス（ＬＳＡ：local strage address）と有効アドレス（ＥＡ：effective address）の両方を含む。ローカルストレージアドレスは、該当ＳＰＵのローカルストレージ領域だけを直接アドレスできる。有効アドレスは、もう少し一般的に応用できる。実アドレス空間にエイリアス（別名：aliase）がなされているときには（すなわち、MFC-SR1[D]に'1'がセットされるとき）、全ＳＰＵのローカルストレージ領域も含めて、メインストレージを参照できるからである。
【００２３】
ＭＦＣは２種類のインタフェースを提供する。１つは、ＳＰＵ用であり、もう１つは、プロセスグループ内における他のプロセッサやデバイス全てのためである。ＳＰＵは、ＭＦＣ制御用にチャネルインタフェース（channel interface）を使う。この場合、ＳＰＵで実行されるコードは、当該ＳＰＵ用のＭＦＣ・ＳＰＵ・コマンドキューにだけアクセスできる。他プロセッサやデバイスは、メモリマップされたレジスタにより、ＭＦＣを制御できる。システム内のプロセッサやデバイスは、ＭＦＣを制御し、ＳＰＵに代わってＭＦＣ・プロキシ・要求コマンドを発行できる。ＭＦＣは、また、帯域予約やデータ同期もサポートする。ＳＰＵ間、および／または、ＳＰＵとＰＰＵ間、ＳＰＥとＰＰＥ間の通信用の装置には、シグナルイベントと対応づけられるシグナル通知レジスタが含まれる。通常、ＰＰＥとＳＰＥは、ＰＰＥがＳＰＥへメッセージを転送するルーターの役割を担うスター型トポロジーにて接続される。このようなトポロジーでは、ＳＰＥ同士はダイレクトに通信しない。代わりに、各ＳＰＥや各ＰＰＥは、一方通行のシグナル通知レジスタを持ち、これは、メールボックスとして参照される。メールボックスは、ＳＰＥとホストＯＳの同期をとるために使うことができる。
【００２４】
ＩＩＣコンポーネントは、ＰＰＥに対する割り込みの優先順位を管理する。ＩＩＣの主目的は、プロセッサ内の他のコンポーネントからの割り込みを、メインシステムの割込コントローラを使わずに扱うことである。ＩＩＣは、実際、セカンドレベルのコントローラである。ＣＢＥＡ準拠プロセッサに対する内部割り込み、あるいは、ＣＢＥＡ準拠プロセッサによるマルチプロセッサシステム内における割り込みの全てを扱うように想定されている。通常、システム割込コントローラは、ＣＥＬＬプロセッサに対する外部割り込みの全てに対応する。
【００２５】
ＣＥＬＬプロセッサシステムにおいては、ソフトウェアは、まず、外部のシステム割込コントローラからの割り込みがあったかを判定するために、しばしば、ＩＩＣをチェックしなければならない。ＩＩＣは、全てのＩ／Ｏデバイスからの割り込みの処理に関し、メインのシステム割込コントローラを代替するものではない。
【００２６】
ＣＥＬＬプロセッサには、２種類のストレージドメイン（storage domain：記憶領域）がある。ローカルストレージドメインとメインストレージドメインである。ＳＰＥのローカルストレージは、ローカルストレージドメイン内にある。他の装置やメモリは、全てメインストレージドメイン内にある。ローカルストレージは、記憶領域を１以上の分離領域から成り、各領域は特定のＳＰＵと関連付けられる。各ＳＰＵは、（データのロードやストアといった操作も含めて）自己に関連するローカルストレージドメイン内の命令のみを実行可能である。ローカルストレージのエイリアスが有効化されていないときには、システム内の他のストレージを対象とするデータ転送要求は、常に、（各ＳＰＵの）ローカルストレージドメインとメインストレージドメインの間でデータを転送するためのＭＦＣ・ＤＭＡコマンドを発行することでしか実行できない。
【００２７】
ＳＰＵプログラムは、ローカルアドレスによりローカルストレージドメインを参照する。ただし、特権ソフトウェアは、MFC-SR1の第Ｄビットを「１」にセットすることによって、ＳＰＵのローカルストレージドメインをメインストレージドメインにエイリアスできる。各ローカルストレージ領域には、メインストレージドメイン内の実アドレスが割り当てられることになる（実アドレスは、システムメモリにおけるバイト単位アドレスかＩ／Ｏデバイスにおけるバイト単位アドレスのいずれかである。）。これにより、特権ソフトウェアは、アプリケーションの有効アドレス空間にローカルストレージ領域を割り当てることが可能となり、あるＳＰＵのローカルストレージと別のＳＰＵのローカルストレージの間のＤＭＡ転送が可能となる。
【００２８】
別プロセッサやデバイスは、メインストレージドメインへのアクセスにより、直接的に、ローカルストレージ領域をアクセス可能となる。このローカルストレージ領域は、メインストレージドメインによって示される実アドレス空間に対して、所定の変換方式にてマップされている有効アドレスやＩ／Ｏバスアドレスによって、メインストレージドメインとエイリアスされている。
【００２９】
メインストレージドメインとエイリアスされているローカルストレージ領域を使ったデータ転送では、キャッシュが禁じられる。このようなアクセスは、ローカルストレージドメインにおいて、ＳＰＵのローカルストレージへのアクセス（たとえば、ＳＰＵのロード、ストア、命令フェッチ）と一貫性を保てないからである。ローカルストレージ領域をメインストレージドメインの実アドレス空間とエイリアスさせることにより、メインストレージ領域へアクセスする他のプロセッサやデバイスは、ローカルストレージに直接アクセスすることができる。しかし、エイリアスされたローカルストレージは、キャッシュ禁止にて処理されなければならないので、ＰＰＥのロード命令やストア命令による大量のデータ転送ではパフォーマンスが悪くなる。ローカルストレージドメインとメインストレージドメインの間におけるデータ転送では、ストール（stall）を避けるためにＭＦＣ・ＤＭＡ・コマンドを使用する。
【００３０】
ＣＢＥＡにおけるメインストレージへのアドレッシングは、パワーＰＣ・アーキテクチャにおいて定義されているアドレッシングと互換性がある。ＣＢＥＡは、パワーＰＣアーキテクチャのコンセプトを基礎としつつも、ＭＦＣによるメインストレージへのアドレッシングにまで拡張されている。
【００３１】
ＳＰＵやその他のプロセッサ、デバイス上において実行されるアプリケーションプログラムは、メインメモリにアクセスするために有効アドレスを使う。有効アドレスは、ＰＰＥがロード、ストア、分岐、キャッシュ命令を実行したり、後続命令をフェッチするときに計算される。ＳＰＵのプログラムは、ＭＦＣコマンドのパラメータとして有効アドレスを示さねばならない。「PowerPC Architecture,Book3」の「overview of address translation」に記載されている処理方法により、有効アドレスから実アドレスへの変換がなされる。実アドレスとは、変換された有効アドレスによって参照されるメインストレージ上における位置である。メインストレージは、システム内の全てのＰＰＥ、ＭＦＣ、Ｉ／Ｏデバイスによって共有される。このレベルのストレージに保持される情報の全ては、システム内の全プロセッサ、全デバイスから見ることができる。このストレージ領域は、構造的にはフラットであってもよいし、階層的なキャッシュ構造を備えてもよい。プログラムは、有効アドレスによってこのレベルのストレージを参照する。
【００３２】
システムのメインメモリは、通常、システムコンフィギュレーション（system configuration）、データ転送同期、メモリマップドＩ／Ｏ、Ｉ／Ｏサブシステムといった処理用の特殊ハードウェアレジスタやアレーと、汎用の不揮発性記憶媒体も含む。メインメモリには、さまざまな設定をすることができる。制約的な意味ではない設例として、表１は、ＣＢＥＡとして知られる実装のＣＥＬＬプロセッサについて、メインメモリにおけるアドレス空間のサイズを示す。
【００３３】
【表１】
2007157142.tif 000003
【００３４】
ＣＥＬＬプロセッサ１００は、プロセッサとシステム内においてクリティカル・リソース（critical resource）の管理機能を持ってもよい。ＣＥＬＬプロセッサの管理対象となるリソースは、ＴＬＢ（translation lookaside buffers）とデータ、命令キャッシュである。これらのリソースは実装依存のテーブルによって制御される。
【００３５】
ＴＬＢやキャッシュを管理するためのテーブルはＲＭＴとして参照され、各ＭＭＵと対応づけられる。このようなテーブルはオプショナルなものであるが、システムのボトルネックとなりうるクリティカル・リソースのためのテーブルは有用であることが多い。ＳＰＥグループは、ＤＭＡ転送のためのファーストレベルキャッシュとなるＳＬ１キャッシュをキャッシュ階層に含んでもよい。ＳＬ１キャッシュも、ＲＭＴを持ってもよい。
【００３６】
本実施例におけるメインメモリＭＥＭは、なんらかのアドレス１０２において、１つのＰＰＥにより開始されるＣＡＳ命令によりアトミックに更新されるべき値を保持する。しかし、アドレス１０２のデータサイズは、ＰＰＥがアトミックに読み出すには大きすぎる。たとえば、ＰＰＥのレジスタ・ラインは８バイトであるが、アドレス１０２のデータは８バイトより大きいかもしれない。一方、ＳＰＥのローカルストアは、１２８バイトのレジスタを備えるかもしれない。アドレス１０２の保持値が１２８バイトより小さければ、ＳＰＥは単一のアトミック・読出命令にてアドレス１０２のデータを読み出せる。本実施例においては、１以上のＰＰＥがコード１０４を実行し、１つのＳＰＥにＣＡＳ命令を実行させる。ＣＡＳ命令は、「特定ＳＰＥのローカルストアにあって、プロセッサ読取り可能な命令（instruction）１０６のセット」として実装される。コード１０４は、ＰＰＥのＬ１キャッシュにロードされるか、メインメモリＭＥＭのもっと大きなプログラム１０８を呼び出すサブルーチンやファンクションとして、１以上のＰＰＥにて実行される。コード１０６は、プログラム１０８を呼び出すサブルーチンやファンクションである。
【００３７】
アトミック・ＣＡＳを実装するためには、「ＳＰＥがアドレス１０２の値を読み出したあと、アドレス１０２に値を書き戻す前に別のプロセッサがその値を上書きした」という状況が発生したときに、コード１０４はＳＰＥにそれを通知する。このために「予約付き読み出し」や「条件付き書き込み」のような既知の命令を使う。予約付き読み出しコマンドは、アドレス１０２からデータをロードすると同時にアドレス１０２に「予約」を設定する。この「予約」とは、予約がなされてからＳＰＥが値を書き戻そうとするまでの間において、そのアドレスになんらかのデータをロードしようとした別のプロセッサがあることをＳＰＥに通知することの予約である。条件付き書き込みコマンドの場合、ＳＰＥは、予約が失効していないことを条件として、そのアドレスへの書き込みを行う。予約失効は、予約されたデータアドレスが更新された可能性を示すが、実際に更新されたかどうかは明確にしていない。更新されたか否かを明確にするために、（たとえば、予約付きで）そのアドレスを読み出し、現在の値と予約時にそのアドレスにあった値とを比較する。予約付き読み出しコマンドの実行と条件付き書き込みコマンドの実行の間に他のプロセッサによるアドレス１０２への書き込みがなされていないときだけ、アドレス１０２に対する条件付き書き込みが成功する。これは重要な点である。
【００３８】
本実施例のアトミック・ＣＡＳにおいて、以下に示すように、ＰＰＥは、アドレス１０２についてのＣＡＳ命令を実行するようにＳＰＥに通知する。ＰＰＥは、ＣＡＳ命令を実行するためのアドレスおよび追加情報をＳＰＥに提供する。ＳＰＥは予約付きでアドレス１０２の保持値を読み出し、保持値と追加情報により比較処理を実行する。比較に失敗すると、ＳＰＥはＰＰＥに失敗通知する。比較に成功すると、ＳＰＥはアドレス１０２に対して交換値を条件付きで書き込む。交換値は、追加情報から決定してもよい。もし、条件付き書き込みが失敗すると、ＳＰＥはＰＰＥに条件付き書き込みの失敗を通知する。条件付き書き込みが成功すると、ＳＰＥはＣＡＳ命令の成功をＰＰＥに通知する。
【００３９】
ＣＥＬＬプロセッサの実装技術について更に詳述する。以下の内容は、本発明の実施例に関連したデータ構造と処理方法について説明するものである。以下の実施例は上記したアーキテクチャを持つＣＥＬＬプロセッサについての実装を制約するものではない。とはいえ、以下の実施例は、多かれ少なかれ、ＳＰＥとＰＰＥの両方についてのアトミック命令が直面し利用されうる環境としてのＣＥＬＬアーキテクチャによる実装を示す。
【００４０】
図２は、本実施例に関して、ＰＰＥやＳＰＥにより取り扱い可能なアトミック命令を実装するＣＥＬＬプロセッサ２００の一例を示す。このＣＥＬＬプロセッサは、メインメモリ２０２と、単一のＰＰＥ２０４、８つのＳＰＥ２０６を備えている。ただし、ＣＥＬＬプロセッサには任意の数のＳＰＥを設置できる。図２において、リング型のエレメント相互接続バス２１０により、メモリ、ＰＰＥ、ＳＰＥは、互いに、また、Ｉ／Ｏデバイス２０８とも通信可能である。メモリ２０２のアドレス２０３は、上記したアドレス１０２のデータと特徴において共通するデータを保持するアドレスである。メモリ２０２のプログラム２０９は、上記したプログラム１０８と特徴において共通する。少なくとも１つのＳＰＥ２０６が持つローカルストアコード２０５は、上記したコード１０４と特徴において共通する。ＰＰＥはＬ１キャッシュに、上記したコード１０６と特徴が共通するコード２０７を含む。コード２０５、２０７は、上記したように必要時において、ＳＰＥやＰＰＥからのアクセスのためにメモリ２０２に保持されてもよい。
【００４１】
コード１０４、１０６や２０５、２０７について上記したＣＥＬＬプロセッサの動作は、図３Ａや図３Ｂのフローチャートに関連して説明する。図３Ａは、通常の場合におけるＣＡＳの処理方法３００を示す。図３Ａや図２をあわせて参照すればより理解しやすい。ステップ３０２において、コード２０７を実行するＰＰＥ２０４は、メモリ２０２のアドレス２０３についてのＣＡＳ命令の実行をＳＰＥ２０６に指示する。ＰＰＥ２０４は、ＳＰＥに情報３０３を提供する。ここで提供される情報は、アドレス２０３の位置、アドレス２０３における保持値３０１のサイズ・パラメータ、ＣＡＳ命令を実行するための１以上のパラメータ、ＣＡＳ命令の実行に必要な１以上の関数の呼び出し、などであってもよい。サイズ・パラメータは、比較対象となるデータブロックの大きさをＳＰＥ２０６に伝えるパラメータである。通常、この値は、ＳＰＥ２０６のレジスタ・ラインのサイズ以下であり、ＰＰＥ２２４のレジスタ・ラインのサイズよりも大きい。他のパラメータ値については後述する。
【００４２】
ステップ３０４において、ＳＰＥ２０６は、コード２０５の命令を実行し、アドレス２０３についての予約付き読み出しを行う。上記したように、ＳＰＥ２０６によるこのコマンドの実行により、アドレス２０３からＳＰＥ２０６のローカルストア・レジスタに保持値３０１がロードされると同時に、アドレス２０３について予約設定がなされる。ステップ３０６において、ＳＰＥ２０６は、情報３０３の一部として提供された１以上の参照値と保持値３０１に関する比較処理を実行する。
【００４３】
ここでいう比較処理とは、一般的には、２以上の入力に基づいて、２つの取りうる値のうちの一つを返す処理を意味する。２つの取りうる値は、「true/false（真／偽）」、「yes/no」、「1/0」などのように表現される。２つの取りうる値うちの一方は比較処理の成功を示し、他方は失敗を示す。比較処理は、通常、アドレスの保持値と１以上の参照パラーメータに関するなんらかの論理関数により行われる。参照パラメータは、ＳＰＥが比較処理を実行するときにＰＰＥにより提供されてもよい。
【００４４】
表２は、比較処理を実行させるために、ＰＰＥがＳＰＥに提供する情報の例である。
【００４５】
【表２】
2007157142.tif 000004
【００４６】
表２に示す例の場合、比較関数は、保持値が参照値「１０」と等しいか否かを判定する。等しければ、交換関数は保持値を交換パラメータ「２０」にて上書きする。この例における参照パラメータは唯一の参照パラメータとしての参照値である。変形例として、比較関数は、２以上のパラメータを使ってもよい。これらのパラメータは、参照値を決定したり、保持値についての比較の結果を決定するために使われてもよい。この場合の交換パラメータは、比較成功時に保持値を上書きする単一値である。変形例として、比較成功時に保持値を上書きする値を計算するために、（できるかぎり保持値や参照値に関連して）１以上の交換パラメータを使用してもよい。
【００４７】
比較関数についてなんらかの制約を設ける意味ではない例として、表３に比較関数の例を示す。
【００４８】
【表３】
2007157142.tif 000005
【００４９】
たとえば、数値関数ｆ（Ａ）は、Ａが偶数であれば所定値を返し、Ａが奇数であれば別の値を返す関数である。一般的には、Ａの数値関数は、どんな数値関数とも適切なかたちで比較できる。上記設例では、ＢやＣとして表されている値は、ＰＰＥ２０４により情報３０３の一部として提供される参照パラメータとしての参照値であり、Ａは保持値３０１として参照される値であるとしてもよい。更に、関数としての等価性に関しては、関数ｆ（Ｂ）はＢの値に関するなんらかの適切な数値関数であればよい。このような関数ｆ（Ｂ）は、（Ｂ＋Ｃ）、Ｂ−Ｃ、Ｂ×Ｃ、Ｂ÷Ｃ、Ｃ÷Ｂ、ＢのＣ乗、ＣのＢ乗、Ｂの対数、Ｂの三角関数、あるいは、２以上のこれらの関数の組み合わせであってもよい。先の例の場合、Ｃは情報３０３の一部としてＰＰＥ２０４により提供されるパラメータであってもよい。関数ｆ（Ｂ）の形式は、情報３０３の一部としてＰＰＥにより提供される関数呼び出し（function call）により決定されてもよい。更に、比較処理は論理関数の組み合わせにより実行されてもよい。このような「組み合わせ」は、ＡＮＤ、ＯＲ、ＮＯＴ、ＮＡＮＤ、ＮＯＲ、ＸＯＲなどを含む。たとえば、（Ａ＜Ｂ）ＡＮＤ（Ａ＜Ｃ）の論理的組み合わせが真となるのは、ＡがＢより大きく、かつ、ＡがＣより小さいときだけである。
【００５０】
先の例においては、比較処理が成功すると、比較関数は「真」値を返す。これは、本発明の実施例に関する制約とはならない。比較処理が成功したときに、比較関数が「偽」値を返すという変更も可能であることは当業者には理解されるであろう。
【００５１】
比較処理に失敗すると、ステップ３０８において、ＳＰＥ２０６はＰＰＥ２０４にＣＡＳ命令の失敗を通知する。比較処理に成功すると、ステップ３１０において、ＳＰＥはアドレス２０３へ交換値３０５を条件付き書き込みする。交換値３０５は、情報３０３の一部としてＰＰＥ２０４により提供される。あるいは、ＳＰＥ２０６は、情報３０３の一部としてＰＰＥ２０４により提供されるパラメータや関数呼び出しにより、交換値３０５を計算してもよい。上述したように、ステップ３０４の予約付き読み出しからステップ３０８の条件付き書き込みまでの間にアドレス２０３に書き込みがなされていないことを条件として、交換値３０５の条件付き書き込みが成功する。条件付き書き込みが成功すると、アドレス２０３の保持値３０１は交換値３０５に変更される。ステップ３１２において、ＳＰＥ２０６はＰＰＥ２０４にＣＡＳ命令の成功を通知する。ステップ３１２やステップ３１４におけるＰＰＥへの通知は、たとえば、シグナル通知レジスタやメールボックス、コード２０７の一部としてＰＰＥ２０４によって定期的にポーリングされるメモリ２０２の位置への書き込み、などにより実装されてもよい。
【００５２】
条件付き書き込みが失敗すると、ステップ３１４において、ＳＰＥ２０６はＰＰＥ２０４にＣＡＳ命令の失敗を通知する。ＳＰＥ２０６は、ステップ３０６における比較処理の成否もＰＰＥ２０４に通知してもよい。プログラム２０９のコンテキストにおいて、ＰＰＥ２０４やＳＰＥ２０６が保持値３０１が変更されたか否か、どのよな値に変更されたか、ＳＰＥとＰＰＥのどちらによって変更されたか、を知ることができれば有効である。このような情報があれば、ＳＰＥ２０６は他のＳＰＥやＳＰＥ２０６を手助けできる。条件付き書き込みが失敗したとき、ＳＰＥ２０６は、新しい値を決めるためにアドレス２０３を再読み出しし、ステップ３１４においてＰＰＥ２０４に通知する前に別のステップを実行できれば有効である。
【００５３】
図３Ｂは、比較処理は成功したけれども条件付き書き込み命令が失敗したときのＣＡＳの処理過程３００’のフローチャートを示す。処理過程３００’では、上記した処理過程３００の各ステップのあと、ステップ３０６における保持値３０１の比較処理とステップ３１０における交換値３０５の条件付き書き込みが実行される。ここでは、ステップ３０６Ａにて比較処理が成功したとする。しかし、ステップ３０４の予約付き読み出しからステップ３０８の条件付き書き込みまでの間の３０６Ｂにおいて、ＰＰＥのスレッドか別のＳＰＥがアドレス２０３に新しい値３０７を書き込み、ステップ３０９にて保持値３０１が新しい値３０７に変更されている。このためステップ３０４においてアドレス２０３に設定された予約が失効する。ステップ３１１では、予約失効により条件付き書き込みが失敗する。ＳＰＥ２０６は、一連の条件付き命令３１６を実行する。条件付き命令３１６はコード２０５の一部であってもよい。条件付き命令３１６の実行に際して、ＳＰＥはアドレス２０３を読み出して、新しい値３０７を特定する。それから、ＳＰＥは、ステップ３２０において、比較処理を実行する。この比較処理はステップ３０６において実行される比較処理と同等であってもよいし異なってもよい。いずれにしても、ステップ３２２において、ＳＰＥ２０６はＰＰＥ２０４に条件付き書き込みの失敗を通知する。ＳＰＥ２０６は、新しい値３０７とステップ３２０の比較処理の結果をＰＰＥ２０４に通知してもよい。
【００５４】
好ましくは、特定のＳＰＥ、すなわち、ＣＡＳ命令のために特別に予約されているＳＰＥ、によりＣＡＳ命令を実行してもよい。この特定ＳＰＥは、他のＰＰＥ補助関数（PPE-supplementary functions）のために使われてもよい。補助関数は、ＰＰＥが、たとえば、より高速なＤＭＡ転送、より大きなサイズのレジスタラインといったＳＰＥの特徴を利用するために、ＳＰＵに実行委任される関数であってもよい。制約的な意味ではない設例として、ＰＰＥ補助関数は、メインメモリのある場所から別の場所へのデータコピーをＰＰＥがＳＰＥに指示するmemcopy関数であってもよい。ＳＰＥにおけるmemcopyの実装は、本出願と譲受人が共通し、係属中の米国特許出願１１／２３８，０８５に関連し、米国特許出願に開示されており、関連出願の主題は、ここに引用により組み込まれる。
【００５５】
予約付き読み出しや条件付き書き込みにより、ロックを使わないかたちでアトミック・ＣＡＳ命令を実現できる。このようなＣＡＳ命令は、ＰＰＵのスレッドのスワップ・アウトにも対応しやすい。ＣＡＳ命令は、特に、比較に成功したのにＰＰＥの予約が失効した場合においてもＰＰＥがそれを気にしなくてすむというという点で特に有効である。こういった状況が発生するのは、たとえば、ＳＰＥが実行すべきタスクの情報（discription）を比較・交換する場合である。このような場合、ＳＰＥは、実行コードのあるメモリ位置へのポインタ値とそのコードのパラメータを比較してもよい。あるいは、ＳＰＥは、アプリケーションの状態情報について比較・交換（ＣＡＳ操作）してもよい。ビデオゲームの場合、ゲームの変数（たとえば、プレーヤーの生命力）、仮想環境の情報（たとえば、ある岩オブジェクトの場所）、あるいは、音声処理情報といった情報などでもよい。
【００５６】
以上は、本発明の最適な実施例の完全な記述であるが、さまざまな変更、変形、等価物への置き換えが可能である。それゆえ、本発明の範囲は、上記記述に関してではなく、請求項により定義されるべきであり、完全な等価物の範囲も含まれる。記述された特徴は、それが好ましいものであれ、そうでないものであれ、上記したさまざまな特徴と組み合わされてもよい。請求項においては、通常、特に断らない限りは、各要素は１またはそれ以上の数量を想定している。請求項の記載事項は、「〜手段」のような記載によって、明示される場合のほかは、いわゆるミーンズ・プラス・ファンクション特有の限定的意味で解してはならない。
【図面の簡単な説明】
【００５７】
【図１】本実施例において、ＣＥＬＬのタスクおよびデータの管理を実装するＣＥＬＬブロードバンドエンジンアーキテクチャの模式図である。
【図２】本実施例におけるＣＥＬＬプロセッサの模式図である。
【図３Ａ】本実施例において、ＣＥＬＬプロセッサによるアトミック・ＣＡＳ命令の処理過程を示すフローチャートである。
【図３Ｂ】本実施例において、ＣＥＬＬプロセッサによるアトミック・ＣＡＳ命令の処理過程が中断されるときのフローチャートである。
【図１】
2007157142.tif 000006
【図２】
2007157142.tif 000007
【図３Ａ】
2007157142.tif 000008
【図３Ｂ】
2007157142.tif 000009