(57)【要約】【課題】共有メモリを用いた広帯域処理環境での効率的なマルチタスク処理方法および装置を提供する。【解決手段】システムは、共有メモリと、共有メモリに接続され共有メモリの要求されたアドレスからデータを取り出し、かつ共有メモリの要求されたアドレスにデータを書き込むように動作するメモリインタフェイスユニットと、メモリインタフェイスと通信し、（ｉ）メモリインタフェイスユニットに共有メモリの特定のアドレスのデータに対してデータ上で任意の操作を実行するよう予約付きロードを命令し、（ｉｉ）メモリインタフェイスユニットにデータを共有メモリの特定のアドレスにストアするよう命令する複数の処理ユニットとを含む。処理ユニットの少なくとも１つは、予約消失の有無および共有メモリの特定アドレスのデータの更新の有無を示すステータスレジスタを含む。【選択図】図２  
2005166056.tif 000002
【特許請求の範囲】
【請求項１】
ａ）共有メモリにおいて、データが格納されうる、要求されたアドレスを含む予約付ロード命令を発行するステップと、
ｂ）前記データをそのデータに対して任意の操作が実行できるよう前記共有メモリから受けるステップと、
ｃ）（ｉ）低電力消費モードに入る、（ｉｉ）他の処理タスクを開始する、の少なくとも一方を行うステップと、
ｄ）前記共有メモリ中の前記アドレスのデータが更新されると予約消失の通知を受信するステップと、
を含む方法。
【請求項２】
請求項１に記載の方法において、前記予約消失の通知は、（ｉ）低電力消費モードに対する割込、（ｉｉ）他の処理タスクに対する割込、の少なくとも一方の割込として機能する方法。
【請求項３】
請求項１に記載の方法において、前記低電力消費モードに入るステップ、または他の処理タスクを開始するステップは、前記データが所定値でない場合に限り実行される方法。
【請求項４】
請求項３に記載の方法であって、前記通知が予約消失を示す場合、ステップａ）〜ｄ）を繰り返す方法。
【請求項５】
請求項１に記載の方法であって、前記共有メモリにおいて前記データがアクセスされると、前記予約付ロード命令を発行するプロセッサに関連付けられた識別番号を前記共有メモリの前記アドレスで指定された位置に関連付けられたステータス位置に書き込むステップをさらに含む方法。
【請求項６】
請求項１に記載の方法であって、前記共有メモリ中の前記アドレスのデータが更新されると、前記プロセッサのステータスレジスタ中の予約消失ビットに予約消失を表示せしめるステップをさらに含む方法。
【請求項７】
請求項６に記載の方法において、予約消失を判定するステップは、前記ステータスレジスタを定期的に監視し、前記予約消失ビットが予約消失を示していれば予約消失と判定するステップを含む方法。
【請求項８】
共有メモリと、
前記共有メモリに動作時に接続されるメモリインタフェイスユニットと、
前記メモリインタフェイスユニットと通信する複数の処理ユニットとを含み、前記処理ユニットの少なくとも１つは以下の動作を実行するシステム。
ａ）共有メモリにおいて、データが格納されうる、要求されたアドレスを含む予約付ロード命令を発行する動作と、
ｂ）前記データをそのデータに対して任意の操作が実行できるよう前記共有メモリから受ける動作と、
ｃ）（ｉ）低電力消費モードに入る、（ｉｉ）他の処理タスクを開始する、の少なくとも一方の動作と、
ｄ）前記共有メモリ中の前記アドレスのデータが更新されると消失する予約消失の通知を受信する動作。
【請求項９】
請求項８に記載のシステムにおいて、前記予約消失の通知は、（ｉ）低電量消費モードに対する割込、（ｉｉ）他の処理タスクに対する割込、の少なくとも一方の割込として機能するシステム。
【請求項１０】
請求項８に記載のシステムにおいて、前記処理ユニットの少なくとも１つは、データが所定値でない場合に限り、低電力消費モードに入るか、他の処理タスクを開始するように動作するシステム。
【請求項１１】
請求項１０に記載のシステムにおいて、前記処理ユニットの少なくとも１つは、前記通知が予約消失を示す場合、前記ステップａ）〜ｄ）を繰り返すシステム。
【請求項１２】
共有メモリと、
前記共有メモリに接続され、前記共有メモリについて要求されたアドレスからデータを読み出し、かつデータを前記共有メモリについて要求されたアドレスに書き込むメモリインタフェイスユニットと、
前記メモリインタフェイスユニットと通信し、前記メモリインタフェイスユニットに、前記共有メモリの特定アドレスのデータに対し、そのデータについて任意の操作が実行できるよう予約付ロードを命令する複数の処理ユニットと、
を含み、前記処理ユニットの少なくとも１つは、前記共有メモリ中の前記特定アドレスのデータが他の１つ以上の処理ユニットによって更新されると消失する予約消失の有無を示すビットを有するステータスレジスタを含むシステム。
【請求項１３】
請求項１２に記載のシステムにおいて、前記少なくとも１つの処理ユニットは、前記データが所定値でなければ低電力消費モードに入るシステム。
【請求項１４】
請求項１３に記載のシステムにおいて、前記少なくとも１つの処理ユニットはさらに、低電力消費モードに対する割込が許可されたイベントに応答し、低電力消費モードを抜けるシステム。
【請求項１５】
請求項１４に記載のシステムにおいて、前記少なくとも１つの処理ユニットはさらに、前記ステータスレジスタのビットを定期的に監視して、予約が消失したかどうかを判定するシステム。
【請求項１６】
請求項１５に記載のシステムにおいて、前記少なくとも１つの処理ユニットはさらに、（ｉ）前記メモリインタフェイスユニットに、前記共有メモリの前記特定アドレスのデータに対し、そのデータについて任意の操作が実行できるよう予約付ロードを再度命令するシステム。
【請求項１７】
請求項１４に記載のシステムにおいて、低電力消費モードに対する割込が許可されるイベントは予約の消失であるシステム。
【請求項１８】
請求項１２に記載のシステムにおいて、前記メモリインタフェイスユニットは、前記共有メモリから前記データがアクセスされると、予約付ロード命令を発行する前記少なくとも１つの処理ユニットに関連付けられた識別番号を、前記共有メモリの前記特定アドレスに関連付けられたステータス位置に書き込むシステム。
【請求項１９】
請求項１２に記載のシステムにおいて、前記メモリインタフェイスユニットは、前記共有メモリ中の前記特定アドレスのデータが他の処理ユニットによって更新されたかどうかをモニタすることにより、前記予約の消失の有無をモニタするシステム。
【請求項２０】
請求項１９に記載のシステムにおいて、前記メモリインタフェイスユニットは、前記少なくとも１つの処理ユニットのステータスレジスタの前記ビットに予約消失を表示させるシステム。
【請求項２１】
共有メモリと、
前記共有メモリに接続され、前記共有メモリについて要求されたアドレスからデータを読み出し、かつデータを前記共有メモリについて要求されたアドレスに書き込むメモリインタフェイスユニットと、
前記メモリインタフェイスユニットと通信し、前記メモリインタフェイスユニットに、前記共有メモリの特定アドレスのデータに対し、そのデータについて任意の操作が実行できるよう予約付ロードを命令する複数の処理ユニットとを含み、
前記処理ユニットの少なくとも１つは、（ｉ）前記データを前記共有メモリの前記特定アドレスにストアする命令を発行した後、低電力消費モードに入る、（ｉｉ）他の処理タスクを開始する、の少なくとも一方を行うシステム。
【請求項２２】
請求項２１に記載のシステムにおいて、前記少なくとも１つの処理ユニットは、前記データが所定値でない場合にのみ、低電力消費モードに入るか、または他の処理タスクを開始するシステム。
【請求項２３】
請求項２１に記載のシステムにおいて、前記少なくとも１つの処理ユニットはさらに、予約消失に応答し、（ｉ）低電力消費モードから抜ける、（ｉｉ）他の処理タスクを中止する、の少なくとも一方を行うシステム。
【請求項２４】
請求項２１に記載のシステムにおいて、前記少なくとも１つの処理ユニットは、前記共有メモリ中の前記特定アドレスのデータが更新された場合に消失する予約消失の有無を示すビットを有するステータスレジスタを含むシステム。
【請求項２５】
請求項２４に記載のシステムにおいて、前記メモリインタフェイスユニットは、前記少なくとも１つの処理ユニットの前記ステータスレジスタの前記ビットに予約消失を表示させるシステム。
【請求項２６】
請求項２４に記載のシステムにおいて、前記少なくとも１つの処理ユニットはさらに、前記ステータスレジスタの前記ビットを定期的に監視して、予約が消失したかどうかを判定するシステム。
【請求項２７】
請求項２５に記載のシステムにおいて、前記少なくとも１つの処理ユニットはさらに、（ｉ）前記メモリインタフェイスユニットに、前記共有メモリの前記特定アドレスのデータに対し、そのデータについて任意の操作が実行できるよう予約付ロードを再度命令するシステム。
【請求項２８】
請求項２１に記載のシステムにおいて、前記メモリインタフェイスユニットは、前記データが前記共有メモリからアクセスされると、前記予約付きロード命令を発行する前記少なくとも１つの処理ユニットに関連付けられた識別番号を、前記共有メモリの前記特定アドレスに関連付けられたステータス位置に書き込むシステム。
【請求項２９】
共有メモリと、
前記共有メモリに動作時に接続されるメモリインタフェイスユニットと、
前記メモリインタフェイスユニットと通信し、バリヤ同期を用いて複数のタスクを並列に実行するよう動作するＮ個の処理ユニットとを含むシステムであって、前記Ｎ個の処理ユニットは、
ａ）前記複数のタスクの１つを実行するステップと、
ｂ）局所変数ｗを初期化するステップと、
ｃ）前記メモリインタフェイスユニットに予約付ロード命令を発行し、前記共有メモリからの共有変数ｓを前記局所変数ｗにロードするステップと、
ｄ）前記局所変数ｗを値Ｎへ向かってインクリメントまたはデクリメントさせるステップと、
ｅ）前記メモリインタフェイスユニットに条件付ストア命令を発行して、前記局所変数ｗの値を前記共有メモリ中の前記共有変数ｓとしてストアさせるステップと、
ｆ）前記共有メモリ中の前記アドレスの変数が更新されて予約が消失すると、前記ステップａ）〜ｅ）を繰り返すステップと、
ｇ）前記局所変数がＮに達すると、前記メモリインタフェイスユニットにストア命令を発行して、目標値を前記共有メモリ中に前記共有変数ｓとしてストアさせるステップと、
ｈ）前記メモリインタフェイスユニットに予約付ロード命令を発行して、前記共有メモリからの前記共有変数ｓを前記局所変数ｗにロードするステップと、
ｉ）前記局所変数が前記目標値でなければ、低電力消費モードに入るか、または他の処理タスクを開始し、それ以外の場合はステップｋ）へ進むステップと、
ｊ）他のプロセッサが前記共有メモリ中の前記共有変数に対する要求を行うと消失する予約消失通知を受信すると、低電力消費モードから抜けるか、または前記他の処理タスクを中止して、前記ステップｈ）およびｉ）を繰り返すステップと、
ｋ）前記複数のタスクのうちの次のタスクを実行するステップとによって、複数のタスクを並列に実行する、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータのプロセッサにマルチプロセッサ構成を用いた効率的なデータ処理方法および装置に関し、より特定的には、１つ以上の共有メモリを用いた広帯域処理環境での効率的なマルチタスク処理方法および装置に関する。
【背景技術】
【０００２】
リアルタイムマルチメディアアプリケーションの重要性は、より一層高まってきている。こうしたアプリケーションは、１秒間に数千メガビットといった極めて高速の処理速度を必要とする。高速処理は単独の処理装置でも可能だが、一般にはマルチプロセッサ構成の処理速度には追いつかない。実際、マルチプロセッサシステムでは、複数のプロセッサが並列に（または少なくとも協調して）動作して、所望の処理結果を達成できる。
【０００３】
マルチ処理技術を用いることのできるコンピュータおよびコンピューティングデバイスの種類は多岐にわたる。こうしたコンピューティングデバイスには、パーソナルコンピュータ（ＰＣ）およびサーバ以外に、携帯電話、モバイルコンピュータ、個人情報端末（ＰＤＡ）、セットトップボックス、ディジタルＴＶ、およびその他多数の装置が含まれる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
マルチプロセッサシステムの設計上の留意点は、複数の処理ユニット間でどのように共有メモリを使用するかということである。もちろん望ましい処理結果を得るにはプロセッサの同期が必要と考えられ、これにはマルチエクスクルージョン（複数主体に対する排他制御）処理が必要である。例えば、いわゆるアトミックな（すなわち、マルチプロセッサ環境において、他のプロセッサが行う操作との相互作用なしに実行されることが保証される一連の操作状態）リードシーケンス、アトミックな更新シーケンス、および／またはアトミックなライトシーケンスを利用して、適正な同期を達成できる。
【０００５】
こうしたマルチプロセッサシステムにおける他の留意点は、特にハンドヘルド装置等の小型パッケージ中で複数のプロセッサを使用する場合に、プロセッサ群によって生じる熱の管理方法である。機械的な手法を用いる熱管理技術を利用してもよいが、この技術は一般に、最終製品における部品コストおよび製造コストを押し上げるため、完全に満足いくものとはいえない。また機械的な熱管理技術は冷却が不十分な場合がある。
【０００６】
マルチプロセッサシステムの他の留意点は、特にラップトップコンピュータおよびハンドヘルドの装置等のポータブルデバイス中で複数のプロセッサを使用する場合に、利用可能なバッテリー電力の効率的な利用方法である。当然ながら、あるシステム中で使用するプロセッサの数が増大すると、より多くの電力が消費される。一般に、所与のプロセッサによって消費される電力量は、そのプロセッサによって実行されている命令の数およびそのプロセッサの動作クロック周波数の関数である。
【０００７】
従って当該技術分野では、プロセッサが生じる熱とプロセッサが消費するエネルギを削減する効率的なマルチ処理を達成する新規な方法および装置が必要とされている。
【課題を解決するための手段】
【０００８】
上記の問題の少なくとも一部を解決するために、新たなコンピュータ構成が開発された。この新規のコンピュータ構成では、マルチプロセッサコンピュータシステムの全てのプロセッサは、共通のコンピューティングモジュール（またはセル）から構成される。この共通コンピューティングモジュールは、コンシステントな、すなわち一貫性のある構造をしており、好適には同一の命令セットのアーキテクチャを用いる。マルチプロセッサコンピュータシステムは、１つ以上のクライアント、サーバ、ＰＣ、モバイルコンピュータ、ゲーム機、ＰＤＡ、セットトップボックス、電化機器、ディジタルＴＶ、その他、コンピュータプロセッサを用いる装置から構成できる。
【０００９】
必要に応じて、複数のコンピュータシステムをそれぞれネットワークのメンバとしてもよい。一貫性のあるモジュール構造により、マルチプロセッサコンピュータシステムによってアプリケーションおよびデータの効率的な高速処理が可能となり、かつネットワークを利用すれば、ネットワークを介してアプリケーションおよびデータの迅速な伝送ができる。またこの構造により、様々なサイズおよび処理能力をもつネットワークメンバの形成、ならびにこれらメンバによって処理されるアプリケーションの準備が簡略化できる。
【００１０】
基本的な処理モジュールはプロセッサ要素（ＰＥ）である。ＰＥは、好適には処理ユニット（ＰＵ）と、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）と、共通の内部アドレスおよびデータバスで接続された、複数の、例えば４つの付属処理ユニット（ＡＰＵ）とを含む。ＰＵおよびＡＰＵは、クロスバー構成をもちうる共有ダイナミックランダムアクセスメモリ（ＤＲＡＭ）にアクセスする。ＰＵは、ＡＰＵによるデータおよびアプリケーションの処理のスケジューリングと調整を行う。ＡＰＵはこの処理を並列かつ独立して行う。ＤＭＡＣは、共有ＤＲＡＭに保存されたデータおよびアプリケーションに対するＡＰＵのアクセスを制御する。
【００１１】
このモジュール構造では、あるコンピュータシステムで使用されるＰＥの数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは４つのＰＥ、ワークステーションは２つのＰＥ、ＰＤＡは１つのＰＥを使用しうる。あるソフトウェアセルの処理に割り当てられるＰＥのＡＰＵの数は、セル内のプログラムおよびデータの複雑さおよび規模によって異なる。
【００１２】
複数のＰＥを共有ＤＲＡＭに関連付けることができ、そのＤＲＡＭは複数のセクションに分別され、各セクションは複数のメモリバンクに分別されうる。ＤＲＡＭの各セクションはバンクコントローラによって制御され、ＰＥの各ＤＭＡＣが各バンクコントローラにアクセスできる。本構成では、各ＰＥのＤＭＡＣは共有ＤＲＡＭの任意の個所にアクセスできる。
【００１３】
この新規のコンピュータ構成はまた、データおよびアプリケーションをネットワークを介して伝送し、かつデータおよびアプリケーションをネットワークメンバ間で処理する新たなプログラミングモデルを用いる。このプログラミングモデルは、ネットワークを介して伝送され任意のネットワークメンバによって処理されるソフトウェアセルを用いる。各ソフトウェアセルは同一構造をもち、データとアプリケーション両方を収容できる。モジュール式コンピュータ構成による高速処理および伝送の結果、これらセルの高速処理が可能である。アプリケーション用のコードは、好適には同一の共通命令セットおよび命令セットアーキテクチャに基づく。各ソフトウェアセルは、好適にはグローバル（大域的）識別名（ＩＤ）と、セルの処理に必要な計算リソース量を記述した情報とを含む。すべての計算リソースは同一の基本構造をもち、かつ同じ命令セットアーキテクチャを用いるので、処理を実行する特定のリソースをネットワーク上の任意の場所に配置してダイナミックに割り当てを行うことができる。
【００１４】
本発明の１つ以上の態様では、本方法は、ａ）共有メモリにおいて、データが格納されうる、要求されたアドレスを含む予約付ロード命令を発行するステップと、ｂ）前記データをそのデータに対して任意の操作が実行できるよう前記共有メモリから受けるステップと、ｃ）（ｉ）低電力消費モードに入る、（ｉｉ）他の処理タスクを開始する、の少なくとも一方を行うステップと、ｄ）前記共有メモリ中の前記アドレスのデータが更新されると予約消失の通知を受信するステップとを含む。
【００１５】
好適には、予約消失の通知は、（ｉ）低電量消費モードに対する割込、（ｉｉ）他の処理タスクに対する割込、の少なくとも一方の割込として機能する。該通知が予約消失を示す場合は、好適には本方法の上記のステップａ）〜ｄ）を繰り返す。
【００１６】
この方法はまた、共有メモリからデータがアクセスされると、予約付ロード命令を発行するプロセッサに関連付けられた識別番号を、共有メモリ中のアドレス指定された位置に関連付けられたステータス位置に書き込むステップを含みうる。
【００１７】
この方法はまた、共有メモリ中の上記アドレスのデータが更新されたかどうかをモニタすることによって、予約消失の有無をモニタするステップを含みうる。好適には、この方法はさらに、共有メモリ中の該アドレスのデータがストア命令に応答して保存される前に更新された場合、プロセッサのステータスレジスタ中の予約消失ビットに予約消失を表示させるステップを含む。予約消失の有無を判定するステップは、ステータスレジスタを定期的に監視（すなわちポーリング）して、予約消失ビットが予約消失を示していれば予約消失があったと判定するステップを含みうる。
【００１８】
本発明の他の態様では、システムは、共有メモリと、動作時に共有メモリに接続されるメモリインタフェイスユニットと、メモリインタフェイスユニットと通信する複数の処理ユニットとを含む。好適には、処理ユニットの少なくとも１つは、本発明の方法に関して上述したステップのうちの１つ以上のステップを実行する。
【００１９】
本発明のさらに他の態様では、システムは、共有メモリと、共有メモリに接続され、共有メモリの要求されたアドレスからデータを読み出し、かつデータを要求されたアドレスに書き込むよう動作するメモリインタフェイスユニットと、メモリインタフェイスユニットと通信する複数の処理ユニットとを含む。
【００２０】
処理ユニットは、好適には、（ｉ）メモリインタフェイスユニットに、前記共有メモリの特定アドレスのデータに対し、そのデータについて任意の操作が実行できるよう予約付ロードを命令し、かつ（ｉｉ）メモリインタフェイスユニットに、前記データを前記共有メモリの前記特定アドレスにストアするよう命令する。処理ユニットの少なくとも１つは、好適には、共有メモリ中の特定アドレスのデータが他の処理ユニットによって更新されると消失する予約消失の有無を示すビットを有するステータスレジスタを含む。
【００２１】
少なくとも１つの処理ユニットは、好適には、データが所定値でない場合は低電力消費モードに入るように動作できる。処理ユニットの少なくとも１つはさらに、低電力消費モードに対する割込の発生を許可するイベントに応答し、低電力消費モードから抜けるように動作できる。処理ユニットの少なくとも１つはさらに、好適には、ステータスレジスタのビットを定期的に監視して該イベントが発生したかどうかを判定するように動作できる。
【００２２】
少なくとも１つの処理ユニットはさらに、好適には、ステータスレジスタのビットが予約消失を示す場合に、メモリインタフェイスユニットに、共有メモリの特定のアドレスのデータに対し、そのデータについて任意の操作が実行できるよう予約付ロードを再度命令するように動作できる。
【００２３】
低電力消費モードに対する割込の発生が許可されるイベントは、予約の消失であってもよい。これに代わり、または、これに加えて、低電力消費モードに対する割込の発生が許可されるイベントは、データが共有メモリの特定のアドレスにストアされたことの確認でもよい。
【００２４】
好適には、メモリインタフェイスユニットは、データが共有メモリからアクセスされると、予約付ロード命令を発行する少なくとも１つの処理ユニットに関連付けられた識別番号を、共有メモリの特定アドレスに関連付けられたステータス位置に書き込むように動作できる。メモリインタフェイスユニットはさらに、好適には、共有メモリ中の特定アドレスのデータが更新されたかどうかをモニタすることによって、予約消失の有無をモニタするように動作できる。
【００２５】
好適には、メモリインタフェイスユニットはさらに、共有メモリ中の特定アドレスのデータが更新されると、少なくとも１つの処理ユニットのステータスレジスタのビットに予約消失を表示させるように動作できる。
【００２６】
本発明の１つ以上のさらに他の態様では、システムは、共有メモリと、共有メモリに接続され、共有メモリの要求されたアドレスからデータを読み出し、かつ共有メモリの要求されたアドレスにデータを書き込むように動作できるメモリインタフェイスユニットと、メモリインタフェイスユニットと通信する複数の処理ユニットとを含む。処理ユニットは、好適には、（ｉ）メモリインタフェイスユニットに、共有メモリにおいて、データが格納されうる、要求されたアドレスを含む予約付ロード命令し、かつ（ｉｉ）低電力消費モードに入るように動作できる。
【００２７】
少なくとも１つの処理ユニットはさらに、好適には、低電力消費モードに対する割込が許可されるイベントに応答し、低電力消費モードから抜けるように動作できる。低電力消費モードに対する割込が許可されるイベントは、予約の消失でありうる。これに代えて、またはこれに加えて、低電力消費モードに対する割込が許可されるイベントは、データが共有メモリの特定アドレスにストアされたことの確認でもよい。
【００２８】
好適には、少なくとも１つの処理ユニットは、共有メモリ中の特定アドレスのデータが更新されたかどうか等の予約消失の有無を示すビットを有するステータスレジスタを含む。
【００２９】
メモリインタフェイスユニットは、好適には、共有メモリ中の特定アドレスのデータが更新されると、少なくとも１つの処理ユニットのステータスレジスタのビットに予約消失を示させるように動作できる。
【００３０】
好適には、少なくとも１つの処理ユニットはさらに、ステータスレジスタのビットを定期的に監視して予約消失を判定するように動作できる。少なくとも１つの処理ユニットはさらに、好適には、ステータスレジスタのビットが予約消失を示す場合に、共有メモリの特定のアドレスのデータに対し、そのデータについて任意の操作が実行できるよう予約付ロードを再度命令するように動作できる。
【００３１】
好適には、メモリインタフェイスユニットは、データが共有メモリからアクセスされると、予約付ロード命令を発行する少なくとも１つの処理ユニットに関連付けられた識別番号を、共有メモリの特定アドレスに関連付けられたステータス位置に書き込むように動作できる。メモリインタフェイスユニットはさらに、好適には、共有メモリの特定アドレスにおけるデータが更新されたかどうかをモニタするように動作できる。
【００３２】
本発明の上記以外の態様、特徴、および利点は、添付図面とともに以下の詳細な説明により当業者には明確に理解される。
【発明を実施するための最良の形態】
【００３３】
現在のところ好適である図面を例示として添付するが、本発明は図面と同一の構成および手段に限定するものではない。
【００３４】
以下、図面を参照するが、図中、同一符号は同一要素を示す。図１は、本発明の１つ以上の態様に従う基本的な処理モジュールまたはプロセッサ要素（ＰＥ）のブロック図である。図示するように、ＰＥ２０１は、Ｉ／Ｏインタフェイス２０２と、処理ユニット（ＰＵ）２０３と、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）２０５と、複数の付属処理ユニット（ＡＰＵ）、すなわちＡＰＵ２０７，ＡＰＵ２０９，ＡＰＵ２１１およびＡＰＵ２１３とを含む。ローカル（すなわち内部）ＰＥバス２２３は、ＰＵ２０３、ＡＰＵ群、ＤＭＡＣ２０５およびメモリインタフェイス２１５間のデータおよびアプリケーションの伝送を行う。ローカルＰＥバス２２３は、例えば従来構成でもよいし、またはパケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装するとより多くのハードウェアが必要になるが、利用可能な帯域が広がる。
【００３５】
ＰＥ２０１はディジタル論理回路を実装する各種方法を利用して構成できる。ただし好適には、ＰＥ２０１はシリコン基板上の相補的金属酸化膜半導体（ＣＭＯＳ）を用いる１つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるＩＩＩ−Ｂ族化合物が含まれる。ＰＥ２０１はまた、超伝導材料を用いて高速単一磁束量子（ＲＳＦＱ）論理回路等として実装することもできる。
【００３６】
ＰＥ２０１は、広帯域メモリ接続２２７を介してダイナミックランダムアクセスメモリ（ＤＲＡＭ）２２５に密接に関連付けられる。ＤＲＡＭ２２５は、ＰＥ２０１用の主メモリとして機能する。ＤＲＡＭ２２５は好適にはダイナミックランダムアクセスメモリだが、スタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。ＤＭＡＣ２０５およびメモリインタフェイス２１５により、ＤＲＡＭ２２５とＰＥ２０１のＡＰＵ群およびＰＵ２０３間のデータ転送が容易になる。
【００３７】
ＤＭＡＣ２０５および／またはメモリは、１つ以上のＡＰＵおよびＰＵ２０３中に一体化して設けてもよい。ＰＵ２０３は、ＡＰＵ群によるデータおよびアプリケーションの処理のスケジューリングおよび／または調整を行う主処理ユニットの役割を果たす１つのＡＰＵによって実装しうる。
【００３８】
ＰＵ２０３は、例えばスタンドアロン式のデータおよびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、ＰＵ２０３はＡＰＵ群によるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。ＡＰＵ群は、好適には一命令複数データ（ＳＩＭＤ）プロセッサである。ＰＵ２０３の制御下で、ＡＰＵ群はデータおよびアプリケーションの処理を並列に、かつ独立して行う。ＤＭＡＣ２０５は、共有ＤＲＡＭ２２５に保存されたデータおよびアプリケーションに対するＰＵ２０３およびＡＰＵ群のアクセスを制御する。
【００３９】
ＰＥ２０１等の多数のＰＥを接続し、または一緒にパッケージングして、処理能力を向上させることができる。例えば図２に示すように、２つ以上のＰＥを例えば１つ以上のチップパッケージ中でパッケージングまたは接続して、１つのプロセッサシステムを形成できる。この構成を広帯域エンジン（ＢＥ）と称する。図２に示すように、ＢＥ３０１は、２つのＰＥすなわちＰＥ２０１ＡとＰＥ２０１Ｂとを含む。これらＰＥ間の通信はＢＥバス３１１によって行う。広帯域メモリ接続２２７は、共有ＤＲＡＭ２２５とこれらＰＥ群間の通信を行う。ＤＲＡＭ２２５とこのメモリ接続とによって、ＢＥバス３１１の代わりにＢＥ３０１中のＰＥ間の通信を行うことができる。
【００４０】
１つ以上の入出力（Ｉ／Ｏ）インタフェイス２０２Ａおよび２０２Ｂと外部バス（図示せず）とによって、広帯域エンジン３０１と他の外部装置との間の通信を行う。ＢＥ３０１のＰＥ２０１Ａおよび２０１Ｂはそれぞれ、１つのＰＥのＡＰＵ群によるアプリケーションおよびデータの並列かつ独立の処理と同様、アプリケーションを並列かつ独立して処理する。
【００４１】
図３は、ＡＰＵ４００の構造および機能を示す。ＡＰＵ４００は、ローカルメモリ４０６と、レジスタ４１０と、１つ以上の浮動小数点ユニット４１２と、１つ以上の整数ユニット４１４とを含む。ただしここでも、必要な処理能力に応じて、使用する浮動小数点ユニット４１２および整数ユニット４１４の数を増減させてもよい。好適な実施形態では、ローカルメモリ４０６は２５６キロバイトの容量をもち、レジスタ４１０の容量は１２８×１２８ビットである。浮動小数点ユニット４１２は、好適には１秒間に３２０億回（３２ＧＦＬＯＰＳ）の浮動小数点演算を実行する。整数ユニット４１４は、好適には１秒間に３２０億回（３２ＧＯＰＳ）の整数演算を実行する。
【００４２】
ローカルメモリ４０６は、好適にはキャッシュメモリではない。ＡＰＵにはキャッシュコヒーレンシ、すなわちキャッシュデータの一貫性のサポートを不要とする代わりに、ローカルメモリ４０６は好適にはスタティックランダムアクセスメモリ（ＳＲＡＭ）として構成される。ＰＵ２０３は、ＰＵ２０３が開始するダイレクトメモリアクセスのためにキャッシュコヒーレンシを必要とする場合がある。しかしＡＰＵ４００が開始するダイレクトメモリアクセスまたは外部装置との間のアクセスにはキャッシュコヒーレンシサポートは不要である。
【００４３】
ＡＰＵ４００はさらに、ＡＰＵ４００とアプリケーションおよびデータの送受信を行うバス４０４を含む。好適な実施形態では、バス４０４の幅は１０２４ビットである。ＡＰＵ４００はさらに、内部バス４０８，４２０および４１８を含む。好適な実施形態では、バス４０８は幅２５６ビットで、ローカルメモリ４０６とレジスタ４１０間の通信を行う。バス４２０および４１８は、それぞれレジスタ４１０−浮動小数点ユニット４１２間、およびレジスタ４１０−整数ユニット４１４間の通信を行う。好適な実施形態では、レジスタ４１０−浮動小数点ユニット間のバス４２０またはレジスタ４１０−整数ユニット間のバス４１８の幅は３８４ビットで、一方、浮動小数点ユニット４１２または整数ユニット４１４からレジスタ４１０へのバス４２０および４１８の幅は１２８ビットである。レジスタ４１０から浮動小数点ユニット４１２または整数ユニット４１４へのバスの幅のほうが、これら装置からレジスタ４１０へのバス幅より広いことで、処理中にレジスタ４１０からのより大量のデータフローに対処できる。各計算には最大３ワードが必要である。ただし各計算の結果は通常は１ワードだけである。
【００４４】
ＡＰＵ４００のレジスタ４１０は、好適には、イベントステータスレジスタ４１０Ａと、イベントステータスマスクレジスタ４１０Ｂと、イベント終了ステータス確認レジスタ４１０Ｃとを含む。以下で説明するが、これらレジスタ４１０Ａ〜４１０Ｃは、処理効率向上のために用いることができる。イベントステータスレジスタ４１０Ａは複数のビット、例えば３２ビットを含む。各ビット（または各ビットグループ）は、外部イベント等のイベントのステータスを示す。イベントステータスレジスタ４１０Ａは、好適にはロックライン予約消失イベントのステータスを含むビットを含む。ロックライン予約消失イベントは、ＡＰＵ４００がある特定の命令（例えばロックラインの入手および予約命令等）を発行し、かつＤＲＡＭ２２５の同じロックライン中で、ある動作主体がデータを更新して予約が消失したことを契機として発生する。このイベントの重要性については後述する。
【００４５】
ロックライン予約消失イベント以外に、信号通知イベント、デクリメンタイベント、ＰＵイベントによって書き込まれるＳＰＵメールボックス、ＤＭＡキュー空きイベント、ＤＭＡタグコマンド停止および通知イベント、ＤＭＡタグステータス更新イベント等のイベントが含まれうる。
【００４６】
ＡＰＵ４００の信号通知レジスタ（図示せず）を目標にした命令を受けたことを契機として信号通知イベントが発生する。信号通知は、他のプロセッサ（または外部装置）がＡＰＵ４００に信号を伝送すると発生する。信号は、ＡＰＵ４００の信号通知アドレスへのライトによって伝送される。この通知を用いて、他のプロセッサは、ＡＰＵ４００が何らかのアクションを取る必要があることをＡＰＵ４００に通知できる。信号ビットをソフトウェアによって特定の装置に割り当てれば、これにより複数の信号を一緒に受信し、かつＡＰＵ４００のソフトウェアによって正しく識別できる。
【００４７】
ＡＰＵ４００のデクリメンタカウンタが論理値０から論理値１へ変わったことを契機として、デクリメンタイベントが発生する。ＰＵ２０３がＡＰＵ４００のメールボックス（図示せず）に、ＡＰＵ４００のメールボックスチャネルからメールボックスデータが利用できるというメッセージを書き込むと、ＡＰＵメールボックスイベントの契機となる（すなわち、ＡＰＵメールボックスイベントがトリガされる）。
【００４８】
ＤＭＡ命令キューがフル状態からノンフル状態へ移ると、ＤＭＡキュー空きイベントの契機となる。ＤＭＡキュー空きイベントを使用して、ＡＰＵ４００は、ＤＭＡキューに命令を受ける空きスペースがあることを判定する。必ずしもＤＭＡキュー空きイベントを使用する必要はなく、それ以前のＤＭＡＣ２０５への命令伝送の試みが失敗した場合に用いる。
【００４９】
メモリインタフェイス２１５および／またはＤＭＡＣ２０５が１つ以上のＤＭＡ命令（停止および通知フラグがセットされた状態のリストのエレメント付き）を受けると、ＤＭＡタグ命令停止および通知イベントが発生する。これが発生すると、リストエレメントが完了され、ＡＰＵ４００上で稼動しているプログラムによって停止が確認されるまでリストの残り部分の処理が中止される。ＤＭＡタグ命令停止および通知イベントは、ＡＰＵ４００がＤＭＡリスト中のある特定の命令エレメントが完了したかどうかを判定するのに使用される。これは、データの移動に対するプログラムの同期に使用してもよいし、またはＡＰＵ４００がＤＭＡリストの残りのエレメントを更新できるようにＤＭＡリストの処理延期に使用してもよい。
【００５０】
ＡＰＵ４００中のある特定の（タグステータス更新を要求する）チャネルにタグステータス更新リクエストが書き込まれると、ＤＭＡタグステータス更新イベントが発生する。ＤＭＡタグステータス更新イベントは、ＤＭＡＣ２０５によって特定のＤＭＡ命令の組が完了した場合に、割込（通知）を受けるべきＡＰＵ４００により、必要に応じて使用できる。これを利用して、プログラムの実行と同時にＤＭＡ転送を実行することをサポートし、リソースの効率的使用を行う。
【００５１】
データ処理中に必要な場合、ＡＰＵ４００はイベントステータスレジスタ４１０Ａをポーリングして、１つ以上のこれらまたは他のイベントの状態を判定できる。好適には、１つ以上のイベントはＡＰＵ４００外部および／または特定のＰＥ２０１の外部のものである。イベントステータスマスク４１０Ｂは、好適には、特定の１つまたは複数のビットだけが稼動状態となるように、イベントステータスレジスタ４１０Ａの一部のビットをマスクするように用いられる。好適には、イベントステータスマスクレジスタ４１０Ｂによって与えられるデータは、その後のライト動作によって変更されるまで保持される。従って、（外部）イベントステータス問い合わせまたは待機イベントごとにデータを再度特定する必要はない。このため、マスクされている間に発生するイベントは、イベントステータスには示されない。ただしマスクイベントは、マスクがはずされるまで、またはイベント終了ステータス確認レジスタ４１０Ｃに書き込むことによって確認されるまで、未決のまま中断にされる。中断中でマスクされたイベントをイベント終了ステータス確認レジスタ４１０Ｃに書き込むと、イベントがクリアーされる。もちろん、マスクされたイベントは好適にはマスクがはずされるまで中断されるので、イベントステータスレジスタ４１０Ａに報告されていないマスクイベントが確認されるとそのイベントはクリアーされる。
【００５２】
本実施形態は、好適には図２のＢＥ３０１を用いて実行されるが、他のマルチプロセッサシステムを用いてもよい。例えば、図４のマルチプロセッサシステム４５０を用いて、本実施形態の１つ以上の態様を実行できる。マルチプロセッサシステム４５０は、バス４５８によってメモリインタフェイス４５４に接続された複数のプロセッサ４５２Ａ〜４５２Ｃ（使用数は任意）を含む。メモリインタフェイス４５４は、別のバス４６０を介してＤＲＡＭ等の共有メモリ４５６と通信する。メモリインタフェイス４５４は、（図２のメモリインタフェイス２１５Ａと同様に）プロセッサ群４５２Ａ〜４５２Ｃ間で分散されてもよく、かつ必要に応じてＤＡＭＣと共に動作してもよい。プロセッサ群４５２Ａ〜４５２Ｃは、好適には図３と同一または同様の構造を用いて実装される。
【００５３】
イベントステータスレジスタ４１０Ａ〜４１０Ｃ（図３）の重要性、特にロックライン予約消失イベントに関連するレジスタの重要性は、同期および／または相互排他制御のためのアトミック更新プリミティブを説明すればより明確になる。本実施形態の重要かつ有利な態様をより完全に理解するため、従来のマルチプロセッサ同期および／または相互排他制御動作についてまず説明する。同期および相互排他制御はＰＥ２０１によって行われ、ＡＰＵ４００上で稼動しているソフトウェアが、共有メモリであるＤＲＡＭ２２５中のデータへのアクセスを同期させ、かつ複数のＡＰＵ群４００による動作実行を同期させる能力をもつようにする。このために、リードシーケンス、更新シーケンス、およびライトシーケンスを含むアトミックシーケンスが与えられる。一般に、これらシーケンスは、比較かつスワップ命令、フェッチかつＮＯ−ＯＰ（動作なし）命令、フェッチかつストア命令、フェッチかつＡＮＤ命令、フェッチかつインクリメント／ＡＤＤ命令、およびテストかつセット命令という形をとる。ＰＵ２０３上では、これらシーケンスは実際の命令ではないが、予約付ロードおよび条件付きストアのように、アトミック更新プリミティブに関連したソフトウェアを使用して実装される。一例として、既存のテストかつセットプリミティブ、および比較かつスワッププリミティブのソフトウェア実装は、以下の擬似コードを用いる。
ｌｏｏｐ：  予約付きロード
期待値と比較
同じでなければｌｏｏｐへ
条件付きで新たな値をストア
予約消失の場合はｌｏｏｐに戻る
ｅｘｉｔ：  ｃｏｎｔｉｎｕｅ
【００５４】
上記の擬似コードシーケンス、およびその他の同様の同期シーケンスは、データが期待値と等しくなるまで、ロックライン上で「スピン」を要求する。このスピンは長時間にわたって発生しうるので、ＣＰＵサイクルおよびメモリサイクルの浪費となる。従ってＡＰＵ４００は、過度の電力量を消費し、かつ過度の熱を発する。
【００５５】
本実施形態の１つ以上の態様では、イベントステータスレジスタ４１０Ａの１つ以上のイベント、例えばロックライン予約消失イベント等を用いて、アトミック更新予約の消失をＡＰＵ４００に通知する。アトミック更新予約は、特定のデータロード命令（ロックラインを入手かつ予約等）を用いて実現する。一般に、共有メモリＤＲＡＭ２２５中の予約したアドレス（ロックライン）においてデータの更新、特に外部からの更新が発生すると、予約は消失する。この技術を用いて、テストアンドセットプリミティブ、およびコンペアアンドスワッププリミティブのソフトウェア実装を、以下の擬似コード等によって書き直すことができる。
ｌｏｏｐ：  予約付きロード
期待値と比較
同じならｃｏｎｔｉｎｕｅ
外部イベントチャネルから読取り
停止して外部イベントを待機
イベントが「予約消失」ならば、ｌｏｏｐへ
そうでなければ他のタスクへ進む
continue：  条件付きで新たな値をストア
予約が取消されればｌｏｏｐへ戻る
【００５６】
上記擬似コードをイベントステータスレジスタ４１０Ａと組み合わせることにより、ＡＰＵ群４００が消費する電力、ひいては発熱量を大幅に削減する。具体的には、ＡＰＵ群４００は、ある外部イベントが割り込むまで「休止モード」すなわち低電力消費モードに入ることができる。例えば、ＡＰＵ４００のシステムクロックを停止すれば低電力消費モードに入るようにしてもよい。従って、あるＡＰＵ４００が共有メモリＤＲＡＭ２２５中のある１つのデータの取得を待機中であるか、または同期バリア値が所定値になることを待機中である場合、ＡＰＵ４００は低電力消費モードに入り、外部イベントによる低電力消費モードに対する割込、すなわち当該モード中に発生する割込を待機できる。予約消失イベント（イベントステータスレジスタ４１０Ａ中で表示）をＡＰＵ４００の低電力消費モードに対して許可された割込を発生する外部イベントとすることは、アトミック更新予約システムに対するユニークかつ強力な改良であり、より効率的なマルチ処理を可能するという利点をもつ。
【００５７】
次に図３および図５を参照して、予約消失イベントを使用したＡＰＵ群４００のアトミック更新への参加許可についてより詳細に説明する。図５は、好適には１つ以上のＰＥ２０１（図２）によって実行されるある動作を示すフロー図である。プロセスの開始として、あるＡＰＵ４００がロード命令をＤＭＡＣおよび／またはメモリインタフェイス２１５に発行する（動作５００）。ＤＭＡＣ２０５とメモリインタフェイス２１５とは一緒に機能して、ＤＲＡＭ２２５との間でデータのリード／ライトを行う。これら各要素は個別要素として示すが、１つの装置として実装してもよい。またＤＭＡＣ２０５の機能および／またはメモリインタフェイス２１５の機能は、「メモリインタフェイス」または「メモリマネジメント」ユニットによって実行されると表現できる。
【００５８】
ロード命令は、好適にはデータを予約付きロードすることであり、上記ではロックライン入手および予約命令と呼んでいる。本質的には、これは共有メモリＤＲＡＭ２２５のある実効アドレスのデータに対する要求である。動作５０２では、メモリインタフェイス（ＤＭＡＣ２０５および／またはメモリインタフェイス２１５）は、好適にはロード命令が標準的なロード命令か、またはロックライン入手および予約命令かを判定する。もしロード命令が標準的な命令ならば、プロセスフローは好適には動作５０４へ分岐し、標準的な処理技術を使用してロード命令を履行する。
【００５９】
一方、もしロード命令がロックライン入手および予約命令ならば、プロセスフローは好適には動作５０６へ分岐する。そこでメモリインタフェイスは、好適には、ＡＰＵ４００が発行した実効アドレスを共有メモリＤＲＡＭ２２５の物理アドレスに変換する。動作５０８では、メモリインタフェイスはＤＲＡＭ２２５の当該物理アドレスにストアされたデータにアクセスして、ＡＰＵ４００に転送する。好適には、ＤＲＡＭ２２５の物理アドレスの１つまたは複数のラインからデータがアクセスされる場合、メモリインタフェイスはＡＰＵ４００の識別番号を当該物理アドレスに関連付けられたステータス位置に書き込む。動作５１２では、メモリインタフェイス２１５は、好適には、ＡＰＵ４００のイベントステータスレジスタ４１０Ａの予約消失ステータスビット（単数または複数）をリセットする。これによりその物理アドレスの１つまたは複数のラインをロックする。メモリインタフェイスは、好適にはＤＲＡＭ２２５のこの予約された１つまたは複数のラインをモニタする。もしＰＥ２０１の外部にあるプロセッサ等の他のプロセッサがＤＲＡＭ２２５の予約された１つまたは複数のラインのデータを更新すれば（動作５１６）、メモリインタフェイスは、好適には当該ラインを予約したＡＰＵ４００のイベントステータスレジスタ４１０Ａの予約消失ステータスビットをセットする（動作５１８）。
【００６０】
図６も参照すると、メモリインタフェイスがＤＲＡＭ２２５の予約された１つまたは複数のラインをモニタしている間（動作５１４）、ＡＰＵ４００は好適には要求されたデータ（予約付き）を共有メモリＤＲＡＭ２２５から受ける（動作５２０）。データを処理する必要がある場合（動作５２２）、ＡＰＵ４００はＡＰＵ４００上で稼動しているソフトウェアプログラムによって必要とされる任意の処理を実行する（動作５２４）。動作５２６では、ＡＰＵ４００は低電力消費モード（スリープモード）に入る。例えば、ＡＰＵ４００はデータが所定値でない場合にのみ低電力消費モードに入るようにしてもよい。これは特に、バリヤ同期が望ましい場合（これについては以下で詳述する）に有用である。ＡＰＵ４００は、割込の発生が許可された適格な外部イベントが発生するまで低電力消費モードにとどまる（動作５２８）。
【００６１】
例えば、外部イベントは、予約の消失（外部プロセッサがＤＲＡＭ２２５の１つまたは複数の予約ラインからのデータを更新した等）でありうる。動作５３０では、ＡＰＵ４００は好適にはイベントステータスレジスタ４１０Ａをポーリングして、１つまたは複数の予約ステータスビットがセットされているかどうかを判定する（動作５３２）。もし予約が消失していなければ（すなわち予約ステータスビットがセットされていなければ）、ＡＰＵ４００は他のタスクを自由に実行できる（動作５３４）。しかしＡＰＵ４００が予約消失を判定すれば（すなわち予約ステータスビットがセットされていれば）、プロセッサは、好適にはループをたどって最初に戻り（図５）、ＡＰＵ４００が予約消失なくデータ操作タスクを実行するまで、プロセスが繰り返される。
【００６２】
上述したように、本実施形態は、バリヤ同期技術に従うマルチ処理の実行に関連して使用してもよい。例えば、マルチ処理システム（図４のシステム４５０等）の複数のプロセッサの１つがいわゆる同期バリア値が所定値になるまで待機している場合、そのプロセッサは、予約消失イベント等の外部イベントが発生するまで、低電力消費モードに入るか、または他の処理タスクの実行を開始する。バリヤ同期技術は、マルチ処理システム中の全プロセッサが現在の処理タスクを完了するまでそれら複数のプロセッサ群が次の処理タスク開始しないようにしたい場合に用いられる。
【００６３】
以下、図４および図７〜図８を参照して、バリヤ同期技術に関連した本実施形態の使用に関してより詳細に説明する。バリヤ同期技術では、共有変数「ｓ」が共有メモリ４５６中にストアされ、これを用いてプロセッサ群４５２Ａ〜４５２Ｃのすべてが現在の処理タスクを完了するまで次の処理タスクの実行を阻止または許可する。より特定的には、図７を参照して、所与のプロセッサ４５２が他のプロセッサ群の処理タスクと同期すべき複数の処理タスクの１つ（すなわち現在の処理タスク）を実行する（動作６００）。現在のタスクが完了すると、プロセッサ４５２はメモリインタフェイス４５４に予約付ロード命令を発行して共有変数「ｓ」の値を入手し、これを局所変数「ｗ」としてストアする（動作６０２）。説明のため共有変数ｓの値は「０」に初期化されると仮定するが、初期値は適当な任意の値にできる。動作６０４では、プロセッサ４５２は、局所変数ｗの値を、バリヤ同期プロセスに参加しているプロセッサ群４５２の数を表す値Ｎに対してインクリメントまたはデクリメントする。バリヤ同期プロセスに参加しているプロセッサが３つとすると、適当なＮ値は３である。本例では、動作６０４でプロセッサ４５２は局所変数ｗをインクリメントする。
【００６４】
動作６０６では、プロセッサ４５２は条件付ストア命令を発行して、局所変数ｗの値を共有ＤＲＡＭ４５６の共有変数ｓに関連付けられたメモリ位置にストアできるようにする。ステップ６０２でロードされた共有変数ｓの値が初期値０だったと仮定すると、動作６０６で条件付でストアされる値は１となる。動作６０８では、予約消失の有無の判定が行われる。もし予約が消えていれば、プロセスフローは動作６０２へ戻り、動作６０２，６０４および６０６が繰り返される。もし予約が消えていなければ、プロセスフローは動作６１０（図８）へ進む。共有変数ｓに値１をうまくストアできれば、３つのプロセッサのうちの１つが現在のタスクを完了したことを示す。
【００６５】
動作６１０では、局所変数ｗの値がＮに等しいかどうかが判定される。もし等しければ、プロセスフローは動作６１２へ進み、目標値が共有変数ｓとして共有ＤＲＡＭ４５６中にストアされる。その後、プロセスフローは動作６１４へ進むが、動作６１０の判定が「Ｎｏ」だった場合にもプロセスフローは動作６１４へ進む。動作６１４では、プロセッサ４５２は予約付ロード命令をメモリインタフェイス４５４に発行して、共有ＤＲＡＭ４５６から共有変数ｓの値を入手し、この値を局所変数ｗにストアする。
【００６６】
動作６１６では、局所変数ｗが目標値と等しいかどうかが判定される。例えば、目標は０またはそれ以外の数でもよい。もし判定が「Ｙｅｓ」ならば、プロセスフローは好適には動作６１８へ進み、複数の処理タスクのうちの次のタスクが実行される。つまり、共有変数の値ｓが目標値に設定されていれば、プロセッサ群４５２は次の処理タスクを開始することが許可される。動作６１６の判定が「Ｎｏ」ならば、プロセッサ４５２は低電力消費状態に入るか、またはバリヤ同期プロセスとは関連のない別の処理タスクを開始する。
【００６７】
動作６２２では、予約（すなわち動作６１４の予約付ロード）が消失したかどうかが判定される。消失していなければ、プロセッサ４５２は動作６２０の状態にとどまる。予約が消えていれば、動作６２４で低電力消費モードが中断され（または他の処理タスクが中止または終了され）、プロセスループは動作６１４へ戻る。動作６１４，６１６，６２０，６２２および６２４は、動作６１６の判定が肯定になり、これによりプロセスフローが動作６１８へ進んで複数の処理タスクの次のタスクが開始されるまで繰り返される。プロセッサ４５２が次の処理タスクを完了すると、プロセスフローは動作６０２へ戻り、全プロセスが繰り返される。
【００６８】
バリヤ同期技術にアトミック更新の原理を用いる利点は、バリヤ同期プロセスに参加しているプロセッサ４５２が低電力消費モードに入るか、または別の処理タスクに入ることができ（動作６２０）、これにより電力消費を低減し、マルチ処理機能全体の効率を改善できることである。
【００６９】
本実施形態の他の態様では、ＰＥ２０１および／またはＢＥ３０１を用いて、図９に示すようなコンピュータシステム１０１の分散型アーキテクチャを実装できる。システム１０１は、複数のコンピュータおよびコンピューティングデバイスが接続されたネットワーク１０４を含む。ネットワーク１０４は、ＬＡＮ、インターネット等のグローバルネットワーク、またはその他のコンピュータネットワークで構成できる。
【００７０】
ネットワーク１０４に接続されたコンピュータおよびコンピューティングデバイス（ネットワークの「メンバ」）は、クライアントコンピュータ１０６、サーバコンピュータ１０８、個人携帯端末（ＰＤＡ）１１０、ディジタルテレビ（ＤＴＶ）１１２、ならびにその他の有線または無線コンピュータおよびコンピューティングデバイス等を含む。ネットワーク１０４のメンバによって用いられるプロセッサは、ＰＥ２０１および／またはＢＥ３０１で構成される。
【００７１】
システム１０１のサーバ１０８は、クライアント１０６よりも多くのデータおよびアプリケーションを実行し、クライアント１０６よりも多くの計算モジュールを含む。一方、ＰＤＡ１１０は本例では処理量が最も少ない。従ってＰＤＡ１１０に含まれる計算モジュール数は一番少ない。ＤＴＶ１１２はクライアント１０６とサーバ１０８との間のあるレベルの処理を実行する。従って、ＤＴＶ１１２はクライアント１０６とサーバ１０８の間の数の計算モジュールを含む。
【００７２】
システム１０１のこのホモジーニャスな（均一な）構成により、適応性、処理速度、および処理効率が向上する。システム１０１の各メンバは同一計算モジュール（ＰＥ２０１）を１つ以上用いて（またはそのある部分を用いて）処理を行うので、データおよびアプリケーションの処理を実際に行っているのはどのコンピュータまたはコンピューティングデバイスであるかは重要ではない。さらに、特定のアプリケーションおよびデータの処理は、ネットワークメンバ間で共有できる。システム１０１によって処理されるデータおよびアプリケーションを含むセルをシステム中で一意に識別することにより、処理がどこで発生したかに関係なく、処理を要求しているコンピュータまたはコンピューティングデバイスに処理結果を伝送できる。処理を実行しているモジュールは共通の構造をもち、かつ共通の命令セットアーキテクチャを使用しているので、プロセッサ間で互換性を得るためにソフトウェアに追加すべきレイヤによる計算負荷を回避できる。この構成およびプログラミングモジュールによって、例えばマルチメディア・アプリケーションのリアルタイムの実行に必要な処理速度を達成できる。
【００７３】
システム１０１によって改善される処理速度および処理効率の利点をさらに高めるため、本システムによって処理されるデータおよびアプリケーションは、一意に識別され、均一にフォーマットされたソフトウェアセル１０２にパッケージされる。各ソフトウェアセル１０２は、アプリケーションおよびデータ両方を含む、または含みうる。各ソフトウェアセルはまた、ネットワーク１０４およびシステム１０１中でセルをグローバルに識別するＩＤを含む。このソフトウェアセルの均一な構造、およびソフトウェアセルのネットワーク中での一意的な識別により、ネットワークの任意のコンピュータまたはコンピューティングデバイス上でのアプリケーションおよびデータの処理が容易になる。例えば、クライアント１０６はソフトウェアセル１０２をフォーミュレート（すなわち所与の形式で生成）するが、クライアント１０６の処理能力の限度のため、そのソフトウェアセルをサーバ１０８に伝送して処理してもよい。従ってソフトウェアセル１０２は、ネットワーク１０４上で利用できる処理リソースに応じてネットワーク１０４中を移動できる。
【００７４】
システム１０１のプロセッサおよびソフトウェアセル１０２の均一構造はまた、既存の異種ネットワークの多くの問題を回避する。例えば、任意の命令セットを用いて任意の命令セットアーキテクチャ上でアプリケーションの処理の許可を求める、効率的とはいえないプログラミングモデル、例えばＪａｖａ（登録商標）仮想マシーン等の仮想マシーンが回避される。従って、システム１０１は従来のネットワークに比べて、はるかに効果的かつ効率的な広帯域処理を実現できる。
【００７５】
好適には、計算ネットワークの１つ以上のメンバは、予約消失イベントを、あるＡＰＵ４００の低電力消費モードに対する割込許可の契機（すなわちトリガ）として利用する。さらに、予約が取消された場合、ＡＰＵ４００は、好適には共有メモリＤＲＡＭ中で予約が取り消されることなく操作タスクが完了するまで、その操作タスクを繰り返す。これはアトミック更新予約システムの独自かつ強力な改良であり、より効率的なマルチ処理を可能にする。
【００７６】
実施形態において説明した「予約」ということばは、「当該アドレスのデータが更新されたかどうかを監視する対象とする」という意味をもち、その本義は、「当該アドレスのデータが更新されないよう保存の対象とする」という意味である。したがって、「予約消失」とは、保存の対象としたにもかかわらず更新が発生したら生じる。また、「予約付きロード」は、そのアドレスからデータをロードするとともに、以降、そのアドレスに対する更新が発生するかどうかを検査の対象とする命令と考えることができる。すなわち、実施形態でいう「予約」は、更新を禁止しないが、保存の対象とする、という意味と考えることができる。「更新」は、一般には書換や修正を意味するが、いわゆるリードモディファイライトのように、そのデータを読み出して更新し、書き込む狭い意味のモディファイを含む。「確認」は、その通常の意味のほかに、ソフトウェアまたはハードウェアによってアクノリッジされるプロセス自体を指すこともある。
【００７７】
以上、本発明を実施形態を参照して説明したが、この実施形態は本発明の原理および適用法を例示するにすぎない。従って、これら例示としての実施形態には多数の変形が可能であり、前掲の特許請求の範囲で規定される本発明の精神および範囲から逸脱することなく他の構成を考案することができる。
【図面の簡単な説明】
【００７８】
【図１】実施の形態に係る処理要素（ＰＥ）の構成の一例を示す図である。
【図２】実施の形態に係る広帯域エンジン（ＢＥ）の構成の一例を示す図である。
【図３】実施の形態に係る付属処理ユニット（ＡＰＵ）の構成の一例を示す図である。
【図４】実施の形態の１つ以上の態様に係るマルチプロセッサシステムの実装に適した他の構成を示す図である。
【図５】実施の形態に係る処理ルーチンの１つ以上の他の態様を示すフロー図である。
【図６】実施の形態に係る処理ルーチンの１つ以上の他の態様を示すフロー図である。
【図７】実施の形態に係る処理ルーチンの１つ以上の他の態様を示すフロー図である。
【図８】実施の形態に係る処理ルーチンの１つ以上の他の態様を示すフロー図である。
【図９】実施の形態に係るコンピュータネットワークの全体構成の一例を示す図である。
【符号の説明】
【００７９】
２０１  処理要素（ＰＥ）、２０３  処理ユニット（ＰＵ）、２０７、２０９、２１１、２１３  付属処理ユニット（ＡＰＵ）、２１５  メモリインタフェイス、２２５  ＤＲＡＭ。
【図１】
2005166056.tif 000003
【図２】
2005166056.tif 000004
【図３】
2005166056.tif 000005
【図４】
2005166056.tif 000006
【図５】
2005166056.tif 000007
【図６】
2005166056.tif 000008
【図７】
2005166056.tif 000009
【図８】
2005166056.tif 000010
【図９】
2005166056.tif 000011