(57)【要約】【課題】プロセッサ・アクセスの監視による処理環境のパワー・マネジメント方式を提供する。【解決手段】処理エレメント（ＰＥ）は処理ユニット（ＰＵ）といくつかの付加処理装置（ＡＰＵ）を備える。各ＡＰＵの命令セットは、事前にいくつかのタイプに分けられており、各タイプが異なる発熱量に関連付けられている。各ＡＰＵは、ある期間に実行された各命令タイプの量（すなわち電力情報）を監視し、この電力情報をＰＵに提供する。次に、ＰＵは、各ＡＰＵから提供された電力情報の関数としてパワー・マネジメントを実行し、例えば、電力消費を低減させるために、特定のＡＰＵに対しアイドル状態に移行するように指示する。【選択図】図２９
2006107513.tif 000002
【特許請求の範囲】
【請求項１】
パワー・マネジメントを実行するための方法であって、
プロセッサによる命令の実行頻度を監視するステップと、
監視した前記命令の実行頻度の関数として、電力消費速度を推定するステップと、を有する方法。
【請求項２】
前記実行頻度は、実行のため命令をフェッチする速度に基づいて監視され、
前記命令は異なるタイプの命令を含む請求項１に記載の方法。
【請求項３】
前記推定するステップは、実行中の前記異なるタイプの命令の各々の命令のカウント値の関数として前記プロセッサの発熱レベルを推定する請求項２に記載の方法。
【請求項４】
前記異なるタイプの命令は浮動小数点命令と整数命令とを含む請求項２又は３に記載の方法。
【請求項５】
前記異なるタイプの命令はベクトル浮動小数点命令、ベクトル整数命令、スカラ浮動小数点命令およびスカラ整数命令を含む請求項２又は３に記載の方法。
【請求項６】
前記推定するステップは前記プロセッサの発熱レベルを推定する請求項１、２、４又は５に記載の方法。
【請求項７】
パワー・マネジメントを実行するための方法であって、
第１のプロセッサによる命令の実行頻度に基づいて電力情報を決定するステップと、
決定した前記電力情報の関数として電力消費速度を推定するステップと、を有する方法。
【請求項８】
前記命令は異なるタイプの命令であり、前記電力情報は、前記第１のプロセッサによって実行されている前記異なるタイプの命令の各々の数をカウントすることによって決定される請求項７に記載の方法。
【請求項９】
前記異なるタイプの命令は浮動小数点命令と整数命令とを含む請求項８に記載の方法。
【請求項１０】
前記異なるタイプの命令はベクトル浮動小数点命令、ベクトル整数命令、スカラ浮動小数点命令およびスカラ整数命令を含む請求項８に記載の方法。
【請求項１１】
前記電力情報を第２のプロセッサに送信するステップをさらに有し、
前記推定は前記第２のプロセッサによって行われる請求項７〜１０のいずれかに記載の方法。
【請求項１２】
前記第２のプロセッサは、推定で得たエネルギー使用量が所定のレベルを越えている場合に、前記エネルギー使用量を低下させるように前記第１のプロセッサを制御する請求項１１に記載の方法。
【請求項１３】
前記第２のプロセッサは前記第１のプロセッサをアイドル状態に移行させる請求項１２に記載の方法。
【請求項１４】
パワー・マネジメントを実行する装置であって、
第１のプロセッサと、
前記第１のプロセッサによる命令の実行頻度に基づいて電力情報を生成するように動作可能な監視回路とを備えた装置。
【請求項１５】
前記実行頻度は、実行のため命令をフェッチする頻度によって表され、前記命令は異なるタイプの命令を含んでおり、前記電力情報は実行のためフェッチされている前記異なるタイプの命令の各々のカウントを含む請求項１４に記載の装置。
【請求項１６】
前記異なるタイプの命令は浮動小数点命令と整数命令とを含む請求項１５に記載の装置。
【請求項１７】
前記異なるタイプの命令はベクトル浮動小数点命令、ベクトル整数命令、スカラ浮動小数点命令およびスカラ整数命令を含む請求項１５に記載の装置。
【請求項１８】
前記監視回路は前記異なるタイプの命令の各々の前記カウントを保持するカウンタを備える請求項１５又は１６又は１７に記載の装置。
【請求項１９】
前記第１のプロセッサは第２のプロセッサに前記電力情報を送信するように動作可能であり、前記第２のプロセッサは前記第１のプロセッサによる電力消費速度を推定するように操作可能である請求項１４〜１８のいずれかに記載の装置。
【請求項２０】
前記第２のプロセッサは、推定した前記電力消費速度に対応する発熱レベルを推定するように動作可能である請求項１９に記載の装置。
【請求項２１】
パワー・マネジメントを実行するための処理エレメントであって、
第１の処理ユニットと、
いくつかの付加処理装置と、を備え、前記付加処理装置の少なくとも１つは当該付加処理装置において命令が実行される頻度に関連する電力情報を蓄積するように動作可能な監視回路を備えており、
前記少なくとも１つの付加処理装置は、蓄積された前記電力情報を前記第１の処理ユニットに送信するように動作可能であり、前記第１の処理ユニットは、蓄積された前記電力情報から電力消費速度を決定するように動作可能である処理エレメント。
【請求項２２】
前記第１の処理ユニットは、決定した前記少なくとも１つの付加処理装置の電力消費速度が所定の値を越えている場合に、当該付加処理装置のエネルギー使用量を低下させるように動作可能である請求項２１に記載の処理エレメント。
【請求項２３】
前記第１の処理ユニットは、当該付加処理装置をアイドル状態に移行させることで当該付加処理装置のエネルギー使用量を低下させるように動作可能である請求項２１に記載の処理エレメント。
【請求項２４】
前記命令は異なるタイプの命令を含み、
蓄積された前記電力情報は、前記異なるタイプの命令が実行された回数のカウントを表すデータを含む請求項２１又は２２又は２３に記載の処理エレメント。
【請求項２５】
前記異なるタイプの命令は浮動小数点命令と整数命令とを含む請求項２４に記載の処理エレメント。
【請求項２６】
前記異なるタイプの命令はベクトル浮動小数点命令、ベクトル整数命令、スカラ浮動小数点命令およびスカラ整数命令を含む請求項２４に記載の処理エレメント。
【請求項２７】
前記第１の処理ユニットは決定された前記電力消費速度に対応する発熱レベルを推定するように動作可能である請求項２１〜２６のいずれかに記載の処理エレメント。
【請求項２８】
処理システムであって、
第１の処理ユニットと、
いくつかの追加処理ユニットと、を備え、前記追加処理ユニットの各々は、当該追加処理ユニットの各々により命令が実行される頻度に関連する電力情報を生成するように動作可能な監視回路を備えており、
前記追加処理ユニットは、電力情報を前記第１の処理ユニットに送信するように動作可能であり、前記第１の処理ユニットは、送信された前記電力情報に基づいて前記追加処理ユニットの電力消費速度を監視するように動作可能である処理システム。
【請求項２９】
前記第１の処理ユニットは、前記付加処理装置の少なくとも１つの前記電力消費速度が所定の値を越えている場合に前記電力消費速度を低下させる請求項２８に記載の処理システム。
【請求項３０】
前記第１の処理ユニットは、前記付加処理装置の前記少なくとも１つをアイドル状態に移行させることによって当該付加処理装置の前記電力消費速度を低下させる請求項２８に記載の処理システム。
【請求項３１】
前記命令は異なるタイプの命令を含み、蓄積された前記電力情報は、実行されている前記異なるタイプの命令の各々のカウントを表すデータを含む請求項２８、２９又は３０に記載の処理システム。
【請求項３２】
前記異なるタイプの命令は浮動小数点命令と整数命令とを含む請求項３１に記載の処理システム。
【請求項３３】
前記異なるタイプの命令はベクトル浮動小数点命令、ベクトル整数命令、スカラ浮動小数点命令およびスカラ整数命令を含む請求項３１に記載の処理システム。
【請求項３４】
前記第１の処理ユニットはさらに、監視された前記電力消費速度に基づいて発熱レベルを推定する請求項２８〜３３のいずれかに記載の処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、同時係属中であり、本発明の譲受人に譲渡された以下の米国特許出願、２００１年３月２２日出願の米国特許出願第０９／８１６，００４号「広帯域ネットワーク用のコンピュータ・アーキテクチャおよびソフトウェア・セル」、２００１年３月２２日出願の米国特許出願第０９／８１５，５５４号「広帯域ネットワーク用のコンピュータ・アーキテクチャのデータ同期システムおよび方法」、２００１年３月２２日出願の米国特許出願第０９／８１６，０２０号「広帯域ネットワーク用のコンピュータ・アーキテクチャのメモリ保護システムおよび方法」、２００１年３月２２日出願の米国特許出願第０９／８１５，５５８号「広帯域ネットワーク用のコンピュータ・アーキテクチャの資源占有システムおよび方法」、および２００１年３月２２日出願の米国特許出願第０９／８１６，７５２号「広帯域ネットワーク用のコンピュータ・アーキテクチャの処理モジュール」の一部継続出願であり、そのすべてをここに援用する。
【０００２】
本発明はパワー・マネジメントに関し、より詳細には、処理環境におけるパワー・マネジメントに関する。
【背景技術】
【０００３】
シングル・プロセッサ・ベースのパーソナル・コンピュータなどの処理環境では、ある種のパワー・マネジメントを実行することが必要とされる。パワー・マネジメントは、ある範囲の方法および手法に及び得る。例えば、プロセッサ自体についていえば、パワー・マネジメントは、熱の放散、すなわち熱管理に関連し得る。したがって、プロセッサの温度を所定の温度範囲に保つため、プロセッサに取り付けたヒートシンクを使用することもパワー・マネジメントの一形態である。同じように、例えばラップトップ・コンピュータのバッテリの電圧レベルを監視すること（バッテリの節約）は、処理環境におけるパワー・マネジメントのさらに別の例である。
【０００４】
熱管理についていえば、より複雑な方法が存在する。例えば、プロセッサなどの重要な回路要素に温度センサを取り付け、関連するシステムの筐体にファンを取り付けることがある。特定の温度に達したことが温度センサによって検知されると、ファンがオンとなり、プロセッサを冷却するため、システムの筐体内の気流を増加させる。別法では、事前に設定した温度レベルに達したこと、すなわちシステムがオーバーヒートしていることが温度センサによって示されると、処理環境のシャットダウンを開始させる警告を発生することもある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
プロセッサがサイズおよび／または速度の面で一層複雑になると、温度センサを使用したパワー・マネジメントは完全な解決案とはいえなくなる可能性がある（実際、場合によっては、温度センサの使用は、エレガントではなく、コストがかかり、稚拙な方式とさえなり得る）。このため、発明者らは、プロセッサが発する発熱量が、プロセッサが実行している命令のタイプ（例えば、命令によっては他の命令よりもプロセッサへの負荷が高いものがある）に正比例していることを確認した。このため、また本発明によれば、処理環境は、プロセッサ・アクセスの回数とタイプを監視して、その関数としてエネルギー使用量を推定することでパワー・マネジメントを実行する。
【課題を解決するための手段】
【０００６】
本発明の一実施形態において、プロセッサは、所定の期間にフェッチされた命令の数とタイプを監視する。プロセッサの命令セットは、少なくとも２つのタイプに分けられており、各タイプが異なる発熱レベルに関連付けられている。次に、前記時間間隔に実行された各命令タイプの回数の関数として発熱レベルが算出される。
【０００７】
別の実施形態では、処理エレメント（ＰＥ）は、処理ユニット（ＰＵ）といくつかの付加処理装置（ＡＰＵ）とを備える。各ＡＰＵの命令セットは、事前にいくつかのタイプに分けられており、各タイプが異なる発熱量に関連付けられている。
【０００８】
各ＡＰＵは、ある期間に実行された各命令タイプの量（すなわち電力情報）を監視し、この電力情報をＰＵに提供する。次に、ＰＵは、各ＡＰＵから提供された電力情報の関数としてパワー・マネジメントを実行する。例えば、ＰＵは、電力消費を低減させるために特定のＡＰＵをアイドル状態に移行させるように指示する。
【発明を実施するための最良の形態】
【０００９】
図１に、本発明によるコンピュータ・システム１０１のアーキテクチャ全体を示す。
【００１０】
この図に示すように、システム１０１にはネットワーク１０４が含まれ、複数のコンピュータとコンピューティング・デバイスがこのネットワークと接続されている。ネットワーク１０４は、ローカル・エリア・ネットワーク（local area network：ＬＡＮ）、インターネットのようなグローバル・ネットワーク、あるいは他のコンピュータ・ネットワークなどであり得る。
【００１１】
ネットワーク１０４と接続されたコンピュータとコンピューティング・デバイス（ネットワークの“メンバー”）の中には、クライアント側コンピュータ１０６、サーバー・コンピュータ１０８、個人用情報機器（personal digital assistant：ＰＤＡ）１１０、デジタル・テレビ（ＤＴＶ）１１２およびその他の有線または無線コンピュータとコンピューティング・デバイスなどが含まれる。ネットワーク１０４のメンバーによって用いられるプロセッサは、同じ共通のコンピューティング・モジュールから構成される。またこれらのプロセッサは、好適には、命令セット・アーキテクチャ（instruction set architecture：ＩＳＡ）がすべて同じで、同じ命令セットに従って処理を実行する。個々のプロセッサ内に含まれるモジュールの数は、そのプロセッサが必要とする処理パワーによって決められる。
【００１２】
例えば、システム１０１のサーバー１０８は、クライアント１０６より実行するデータ処理およびアプリケーション処理が多いので、クライアント１０６より多いコンピューティング・モジュールを含むことになる。一方、ＰＤＡ１１０では最低量の処理しか実行されない。このため、ＰＤＡ１１０は、備えるコンピューティング・モジュールの数が最も少ない。ＤＴＶ１１２の処理量は、クライアント１０６とサーバー１０８の中間である。このため、ＤＴＶ１１２が備えるコンピューティング・モジュールの数は、クライアント１０６とサーバー１０８のコンピューティング・モジュールの数の中間となる。以下に説明するように、各コンピューティング・モジュールの中には、処理用コントローラと、ネットワーク１０４を介して伝送されるデータおよびアプリケーションの並列処理を実行する複数の同じ処理ユニットとが含まれる。
【００１３】
システム１０１がこのように均質な構成を有することから、アダプタビリティ（適合性）、処理速度および処理効率が改善される。システム１０１の各メンバーが、同じコンピューティング・モジュールのうち１つまたはそれ以上（またはコンピューティング・モジュールの一部）を用いて処理を実行するので、データとアプリケーションの実際の処理をどのコンピュータまたはコンピューティング・デバイスで実行するかは重要ではなくなる。さらに、特定のアプリケーションおよびデータの処理を、ネットワークのメンバー間で分散させることができる。システムの全体にわたって、システム１０１が処理したデータとアプリケーションを含むセルを一意的に識別することにより、この処理がどこで行われたかにかかわらず、処理を要求したコンピュータまたはコンピューティング・デバイスへその処理結果を伝送することが可能となる。この処理を実行するモジュールが共通の構造と共通のＩＳＡとを有するので、プロセッサ間の互換性を達成するためのソフトウェアの追加層の計算上の負担が回避される。このアーキテクチャとプログラミング・モデルによって、リアルタイムのマルチメディア・アプリケーションなどの実行に必要な処理速度が改善される。
【００１４】
システム１０１によって改善される処理速度と効率というさらなる利点を利用するために、このシステムによって処理されるデータとアプリケーションとは、一意的に識別され、それぞれ同じフォーマットを有するソフトウェア・セル１０２にパッケージ化される。各ソフトウェア・セル１０２は、アプリケーションとデータの双方を含むか、あるいは含み得る。また各ソフトウェア・セルには、ネットワーク１０４とシステム１０１全体でセルをグローバルに識別するためのＩＤが含まれる。ソフトウェア・セルがこの均一な構造を有しており、ネットワークの中でソフトウェア・セルが一意的に識別されることによって、ネットワークの任意のコンピュータまたはコンピューティング・デバイスでのアプリケーションとデータの処理が改善される。例えば、クライアント１０６は、ソフトウェア・セル１０２の作成を行うこともできるが、クライアント１０６側の処理能力は限られていることから、このソフトウェア・セルをサーバー１０８へ伝送して処理してもらうこともできる。したがって、ソフトウェア・セルは、ネットワーク１０４全体を移動してネットワーク上での処理用リソースの可用性に基づいて処理を受けることが可能となる。
【００１５】
また、システム１０１のプロセッサとソフトウェア・セルが均質な構造を有することで、今日の異質なネットワークの混在という問題の多くを防ぐことができる。例えば任意の命令セットを用いる任意のどのＩＳＡ上でもアプリケーションを処理できるようにする非効率的なプログラミング・モデル（Ｊａｖａのバーチャル・マシンのような仮想マシンなど）を使用せずに済む。このため、システム１０１は、今日のネットワークよりもはるかに効率的、かつはるかに効果的に広帯域処理を実現できる。
【００１６】
ネットワーク１０４のすべてのメンバーのための基本となる処理用モジュールはプロセッサ・エレメント（ＰＥ）である。図２にＰＥの構造が例示されている。この図に示すように、ＰＥ２０１は、処理ユニット（ＰＵ）２０３、ダイレクト・メモリ・アクセス・コントローラ（ＤＭＡＣ）２０５、複数の付加処理ユニット（ＡＰＵ）、すなわち、ＡＰＵ２０７、ＡＰＵ２０９、ＡＰＵ２１１、ＡＰＵ２１３、ＡＰＵ２１５、ＡＰＵ２１７、ＡＰＵ２１９、ＡＰＵ２２１を具備する。ローカルＰＥバス２２３は、ＡＰＵと、ＤＭＡＣ２０５と、ＰＵ２０３との間でデータとアプリケーションとを伝送する。ローカルＰＥバス２２３は、従来型のアーキテクチャなどを備えていてもよいし、あるいはパケット交換式ネットワークとして実現されてもよい。パケット交換式ネットワークとして実現される場合、より多くのハードウェアが必要となり、その一方で利用可能な帯域幅が増加する。
【００１７】
ＰＥ２０１は、デジタル論理回路を実現する様々な方法を用いて構成可能である。しかし、ＰＥ２０１は、シリコン基板上の相補型金属酸化膜半導体（complementary metal oxide semiconductor：ＣＭＯＳ）を利用した単一の集積回路として構成されることが好ましい。基板の代替材料の中には、ガリウム砒素、ガリウム・アルミニウム砒素、多種多様のドーパントを用いるその他のいわゆるIII−Ｂ化合物が含まれる。またＰＥ２０１は、超伝導材料（高速単一磁束量子（rapid single-flux-quantum：ＲＳＦＱ）論理回路など）を用いて実現することもできる。
【００１８】
ＰＥ２０１は、高帯域メモリ接続部２２７を介してダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）２２５と密接に関連する。ＤＲＡＭ２２５はＰＥ２０１用のメイン・メモリとして機能する。ＤＲＡＭ２２５はダイナミック・ランダム・アクセス・メモリであることが好ましいとはいえ、他の手段、例えばスタティック・ランダム・アクセス・メモリ（static random access memory：ＳＲＡＭ）として、磁気ランダム・アクセス・メモリ（magnetic random access memory：ＭＲＡＭ）、光メモリまたはホログラフィック・メモリなどを用いてＤＲＡＭ２２５を実現することもできる。ＤＭＡＣ２０５によって、ＤＲＡＭ２２５と、ＰＥ２０１のＡＰＵとＰＵとの間のデータ転送が改善される。以下にさらに説明するように、ＤＭＡＣ２０５によって、ＤＲＡＭ２２５内の排他的領域が各ＡＰＵに対して指定されるが、この排他的領域へは指定されたＡＰＵだけしかデータの書き込みができず、指定されたＡＰＵだけしかこの排他的領域からのデータ読み出しを行うことができない。この排他的領域は“サンドボックス”と呼ばれる。
【００１９】
ＰＵ２０３は、データとアプリケーションのスタンド・アローン型処理が可能な標準プロセッサなどであってもよい。作動時に、ＰＵ２０３は、ＡＰＵによるデータとアプリケーションの処理のスケジュール管理と全般的管理（orchestrate）とを行う。ＡＰＵは、単一命令複数データ（single instruction, multiple data：ＳＩＭＤ）プロセッサであることが好ましい。ＡＰＵは、ＰＵ２０３の制御によって、並列的かつ独立にこれらのデータとアプリケーションの処理を実行する。ＤＭＡＣ２０５は、共用ＤＲＡＭ２２５に格納されているデータとアプリケーションに対する、ＰＵ２０３とＡＰＵによるアクセスを制御する。ＰＥ２０１は、８個のＡＰＵを含むことが好ましいとはいえ、必要とする処理パワーに応じて、ＰＥ内のＡＰＵの個数はこれより加減してもよい。ＰＵ２０３とＡＰＵの一部またはすべては、同じハードウェア構造および／または機能を有してもよい。個々のプロセッサは、制御プロセッサか、必要に応じてソフトウェアによって制御されるプロセッサとして構成することができる。例えば、図３において、ＰＥ２０１には同じアーキテクチャを有する９個のプロセッサが含まれてもよい。９個のプロセッサの１つ（例えばＰＵ２０３）が制御プロセッサに指定され、残りのプロセッサ（例えばＡＰＵ２０７、２０９、２１１、２１３、２１５、２１７、２１９、２２１）は被制御プロセッサに指定されてもよい。また、ＰＥ２０１のようにいくつかのＰＥを結合（まとめてパッケージ化）して処理パワーの改善を図ることもできる。
【００２０】
例えば、図３に示すように、１以上のチップ・パッケージなどの中に４つのＰＥをパッケージ化（まとめて結合）してネットワーク１０４のメンバー用の単一プロセッサを形成してもよい。この構成は広帯域エンジン（ＢＥ）と呼ばれる。図３に示すように、ＢＥ３０１には４つのＰＥ（ＰＥ３０３、ＰＥ３０５、ＰＥ３０７、ＰＥ３０９）が含まれる。これらのＰＥ間の通信はＢＥバス３１１を介して行われる。共用ＤＲＡＭ３１５とこれらのＰＥ間の通信は広帯域メモリ接続部３１３によって行われる。ＢＥバス３１１の代わりに、ＢＥ３０１のＰＥ間の通信は、ＤＲＡＭ３１５とこのメモリ接続部とを介して行うことができる。
【００２１】
入出力（Ｉ／Ｏ）インターフェース３１７と外部バス３１９とは、広帯域エンジン３０１とネットワーク１０４のその他のメンバー間の通信を実現する。ＢＥ３０１の各ＰＥは、ＰＥのＡＰＵによって行われるアプリケーションとデータの並列的かつ独立した処理と同じような並列的かつ独立した方法で、データとアプリケーションの処理を実行する。
【００２２】
図４はＡＰＵの構造を例示する図である。ＡＰＵ４０２は、ローカル・メモリ４０６、レジスタ４１０、４つの浮動小数点演算ユニット（ＦＰＵ）４１２および４つの整数演算ユニット４１４を備える。この場合も、必要とする処理パワーに応じて、浮動小数点演算ユニット４１２および整数演算ユニット４１４の個数はこれより加減してもよい。好適な一実施形態では、ローカル・メモリ４０６は１２８キロバイトの記憶容量を有し、レジスタ４１０の容量は１２８×１２８ビットである。浮動小数点演算ユニット４１２は、好ましくは毎秒３２０億浮動小数点演算（３２ＧＦＬＯＰＳ）の速度で動作し、整数演算ユニット４１４は、好ましくは毎秒３２０億回の演算速度（３２ＧＯＰ）で動作する。
【００２３】
ローカル・メモリ４０２はキャッシュ・メモリではない。ローカル・メモリ４０２は、ＳＲＡＭとして構成されることが好ましい。ＡＰＵに対するキャッシュ・コヒーレンシー（キャッシュの整合性）のサポートは不要である。ＰＵでは、当該ＰＵで開始されるダイレクト・メモリ・アクセスをサポートするためにキャッシュの整合性が要求される場合もある。しかし、ＡＰＵが開始するダイレクト・メモリ・アクセスや、外部装置からのアクセスおよび外部装置へのアクセスにはキャッシュの整合性のサポートは不要である。
【００２４】
ＡＰＵ４０２にはさらに、ＡＰＵとの間でアプリケーションとデータとを伝送するためのバス４０４が含まれる。好適な一実施形態では、このバスのバス幅は１，０２４ビットである。ＡＰＵ４０２は、内部バス４０８，４２０，４１８をさらに備える。好適な一実施形態では、バス４０８は２５６ビットの幅を有し、ローカル・メモリ４０６とレジスタ４１０間の通信を実現する。バス４２０と４１８とは、それぞれレジスタ４１０と浮動小数点演算ユニット４１２との間、およびレジスタ４１０と整数演算ユニット４１４との間の通信を実現する。好適な一実施形態では、レジスタ４１０から浮動小数点演算ユニット４１２または整数演算ユニット４１４へのバス４１８と４２０の幅は、３８４ビットであり、浮動小数点演算ユニット４１２または整数演算ユニット４１４からレジスタ４１０へのバス４１８と４２０の幅は１２８ビットである。レジスタ４１０から浮動小数点演算ユニットまたは整数演算ユニットへのバス幅のほうが、これらのユニットからレジスタ４１０へのバス幅よりも広いことで、処理中にレジスタ４１０からのデータのフローのほうをより多く収容することができる。各計算に必要なワード数は最大で３ワードである。しかし、各計算の結果に要するワード数は通常１ワードのみである。
【００２５】
図５〜１０は、ネットワーク１０４のメンバーのプロセッサのモジュラー構造をさらに例示する図である。例えば、図５に示すように、１つのプロセッサには単一のＰＥ５０２を含むことができる。上述のように、このＰＥには、一般に、ＰＵ、ＤＭＡＣおよび８個のＡＰＵが含まれる。各ＡＰＵにはローカル・ストレージ（ＬＳ）が含まれる。一方、プロセッサは、ビジュアライザ（ＶＳ）５０５の構造を有する場合もある。図５に示すように、ＶＳ５０５はＰＵ５１２、ＤＭＡＣ５１４および４つのＡＰＵ（ＡＰＵ５１６、ＡＰＵ５１８、ＡＰＵ５２０、ＡＰＵ５２２）を有する。通常はＰＥの残りの４つのＡＰＵによって占有されるチップ・パッケージ内のスペースは、この場合、ピクセル・エンジン５０８、画像用キャッシュ５１０およびブラウン管コントローラ（ＣＲＴＣ）５０４によって占有される。ＰＥ５０２またはＶＳ５０５に求められる通信速度に応じて、チップ・パッケージの中に光インターフェース５０６が含まれる場合もある。
【００２６】
この標準化されたモジュラー構造を用いて、他のプロセッサの変更例の多くを容易にかつ効率的に構成することが可能となる。例えば、図６に示すプロセッサは、２つのチップ・パッケージ（ＢＥを備えるチップ・パッケージ６０２と、４つのＶＳを含むチップ・パッケージ６０４）を有する。入出力部（Ｉ／Ｏ）６０６によって、チップ・パッケージ６０２のＢＥとネットワーク１０４との間をインターフェースする。バス６０８はチップ・パッケージ６０２とチップ・パッケージ６０４との間の通信を実現する。入出用プロセッサ（ＩＯＰ）６１０によってＩ／Ｏ６０６へのデータ・フローまたはＩ／Ｏ６０６からのデータ・フローが制御される。Ｉ／Ｏ６０６はＡＳＩＣ（Application Specific Integrated Circuit）として製造が可能である。ＶＳからの出力はビデオ信号６１２である。
【００２７】
図７は、ネットワーク１０４のその他のメンバーへ超高速通信を行う２つの光インターフェース７０４と７０６とを備えたＢＥ７０２用のチップ・パッケージ（またはローカルに接続された他のチップ・パッケージ）を例示する。ＢＥ７０２は、ネットワーク１０４上でサーバーなどとして機能することができる。
【００２８】
図８のチップ・パッケージは、２つのＰＥ８０２及び８０４および２つのＶＳ８０６及び８０８を有する。Ｉ／Ｏ８１０は、チップ・パッケージとネットワーク１０４の間をインターフェースする。チップ・パッケージからの出力はビデオ信号である。この構成は画像処理用ワークステーションなどとして機能することができる。
【００２９】
図９はさらに別の構成を例示する。この構成の処理パワーは、図８に例示されている構成の処理パワーの半分である。２つのＰＥの代わりに１つのＰＥ９０２が設けられ、２つのＶＳの代わりに１つのＶＳ９０４が設けられる。Ｉ／Ｏ９０６は、図８に例示されているＩ／Ｏの帯域幅の１／２の帯域幅を有する。このようなプロセッサも、画像処理用ワークステーションとして機能することができる。
【００３０】
最後の構成が図１０に図示されている。このプロセッサは、単一のＶＳ１００２とＩ／Ｏ１００４だけから構成される。この構成はＰＤＡなどとして機能することができる。
【００３１】
図１１Ａは、ネットワーク１０４のプロセッサのチップ・パッケージの中へ光インターフェースを統合した例を示す図である。これらの光インターフェースによって、光信号が電気信号に変換され、電気信号が光信号に変換され、この光インターフェースは、ガリウム砒素、アルミニウム・ガリウム砒素、ゲルマニウムその他の元素や化合物などを含む様々な材料から構成することができる。この図に示すように、光インターフェース１１０４と１１０６とはＢＥ１１０２のチップ・パッケージに組み入れられる。ＢＥバス１１０８は、ＢＥ１１０２のＰＥ、すなわちＰＥ１１１０、ＰＥ１１１２、ＰＥ１１１４、ＰＥ１１１６と、これらの光インターフェースとの間での通信を行う。光インターフェース１１０４には２つのポート（ポート１１１８とポート１１２０）が含まれ、光インターフェース１１０６には２つのポート（ポート１１２２とポート１１２４）が含まれる。ポート１１１８、１１２０、１１２２、１１２４は、光導波路１１２６、１１２８、１１３０、１１３２にそれぞれ接続される。光信号は、光インターフェース１１０４と１１０６のポートを介して、これらの光導波路の中を通ってＢＥ１１０２へ伝送されたり、ＢＥ１１０２から伝送される。
【００３２】
このような光導波路と各ＢＥの４つの光ポートとを用いて、複数のＢＥを様々な構成に相互に接続してもよい。例えば、図１１Ｂに示すように、このような光ポートを介して２つ以上のＢＥ（ＢＥ１１５２、ＢＥ１１５４、ＢＥ１１５６など）を直列に接続することができる。この例では、ＢＥ１１５２の光インターフェース１１６６は、その光ポートを介してＢＥ１１５４の光インターフェース１１６０の光ポートと接続される。同様に、ＢＥ１１５４の光インターフェース１１６２の光ポートは、ＢＥ１１５６の光インターフェース１１６４の光ポートと接続される。
【００３３】
図１１Ｃにマトリクス構成が例示される。この構成では、各ＢＥの光インターフェースは２つの別のＢＥと接続される。この図に示すように、ＢＥ１１７２の光インターフェース１１８８の光ポートの一方が、ＢＥ１１７６の光インターフェース１１８２の光ポートと接続される。光インターフェース１１８８のもう一方の光ポートは、ＢＥ１１７８の光インターフェース１１８４の光ポートと接続される。同様に、ＢＥ１１７４の光インターフェース１１９０の一方の光ポートはＢＥ１１７８の光インターフェース１１８４のもう一方の光ポートと接続される。光インターフェース１１９０のもう一方の光ポートは、ＢＥ１１８０の光インターフェース１１８６の光ポートと接続される。このマトリックス構成は別のＢＥにも同様に拡張することができる。
【００３４】
シリアル構成かマトリックス構成のいずれかを用いて、所望のサイズとパワーを有するどのようなネットワーク１０４用プロセッサを構成できるようになる。言うまでもなく、ＢＥの光インターフェース、またはＢＥとはＰＥの個数の異なるプロセッサに追加ポートを加えて、他の構成を形成してもよい。
【００３５】
図１２ＡはＢＥのＤＲＡＭに対する制御システムとその構造を例示する図である。同様の制御システムと構造が、サイズが異なり、含まれるＰＥの個数が異なるプロセッサの中で用いられる。この図に示すように、クロスバ交換機によって、ＢＥ１２０１を構成している（comprising）４つのＰＥである各ＤＭＡＣ１２１０が８つのバンク・コントロール１２０６と接続される。各バンク・コントロール１２０６によって、ＤＲＡＭ１２０４の８つのバンク１２０８（４つのみを図示）が制御される。したがって、ＤＲＡＭ１２０４は、合計６４のバンクを具備することになる。好ましい実施形態では、ＤＲＡＭ１２０４の容量は６４メガバイトであり、各バンクの容量は１メガバイトである。各バンク内の最小のアドレス指定可能単位は、この好ましい実施形態では１０２４ビットのブロックである。
【００３６】
ＢＥ１２０１にはスイッチ・ユニット１２１２も含まれる。スイッチ・ユニット１２１２によって、ＢＥ１２０１と密接に接続されているＢＥの他のＡＰＵにあるＤＲＡＭ１２０４へのアクセスが可能となる。したがって、第２のＢＥを第１のＢＥと密接に接続することが可能となり、さらに、各ＢＥの各ＡＰＵは、ＡＰＵが通常アクセス可能なメモリ・ロケーションの数の２倍のアドレス指定を行うことが可能となる。スイッチ・ユニット１２１２のようなスイッチ・ユニットを介して、第１のＢＥのＤＲＡＭから第２のＢＥのＤＲＡＭへのデータの直接読み出し、または、第２のＢＥのＤＲＡＭから第１のＢＥのＤＲＡＭへのデータの直接書き込みを行うことが可能となる。
【００３７】
例えば、図１２Ｂに示すように、このような書き込みを行うために、第１のＢＥのＡＰＵ（ＢＥ１２２２のＡＰＵ１２２０など）によって、通常の場合のようなＢＥ１２２２のＤＲＡＭ１２２４ではなく、第２のＢＥのＤＲＡＭ（ＢＥ１２２６のＤＲＡＭ１２２８など）のメモリ・ロケーションへの書き込みコマンドが出される。ＢＥ１２２２のＤＭＡＣ１２３０は、クロスバ交換機１２２１を介して、バンク・コントロール１２３４へ書き込みコマンドを送り、バンク・コントロール１２３４は、バンク・コントロール１２３４と接続された外部ポート１２３２へコマンドを伝送する。ＢＥ１２２６のＤＭＡＣ１２３８は書き込みコマンドを受け取り、ＢＥ１２２６のスイッチ・ユニット１２４０へこのコマンドを転送する。スイッチ・ユニット１２４０は書き込みコマンドの中に含まれるＤＲＡＭアドレスを識別し、ＢＥ１２２６のバンク・コントロール１２４２を介して、ＤＲＡＭ１２２８のバンク１２４４へ、このアドレスに格納するデータを送る。したがって、スイッチ・ユニット１２４０によって、ＤＲＡＭ１２２４とＤＲＡＭ１２２８の双方は、ＢＥ１２２２のＡＰＵ用の単一メモリ空間として機能することが可能になる。
【００３８】
図１３はＤＲＡＭの６４個のバンク構成を示す。これらのバンクは、８つの行（１３０２、１３０４、１３０６、１３０８、１３１０、１３１２、１３１４、１３１６）と８つの列（１３２０、１３２２、１３２４、１３２６、１３２８、１３３０、１３３２、１３３４）とに構成されている。各行は１つのバンク・コントローラによって制御される。したがって、各バンク・コントローラは８メガバイトのメモリを制御する。
【００３９】
図１４Ａと１４Ｂは、最小のアドレス指定可能な格納単位（１０２４ビットのブロックなど）でのＤＲＡＭへの格納とアクセスを行うための異なる構成を例示する。図１４Ａで、ＤＭＡＣ１４０２は単一のバンク１４０４の中に８つの１０２４ビット・ブロック１４０６を格納する。図１４Ｂでは、ＤＭＡＣ１４１２によって、１０２４ビットを含むデータ・ブロックの読み出しと書き込みが行われるものの、これらのブロックは、２つのバンク（バンク１４１４とバンク１４１６）の間で分配（インターリーブ）される。したがって、これらのバンクの各々には１６個のデータ・ブロックが含まれ、データの各ブロックには５１２ビットが含まれる。この分配によって、ＤＲＡＭのアクセスをさらに高速なものに改善することが可能となり、ある種のアプリケーションの処理に役立つ。
【００４０】
図１５はＰＥ内のＤＭＡＣ１５０６のアーキテクチャを例示する。この図に例示されているように、各ＡＰＵ１５０２がＤＭＡＣ１５０６の構造上のノード１５０４へ直接アクセスを行うように、ＤＭＡＣ１５０６を構成している（comprising）構造上のハードウェアはすべてのＰＥに分散される。各ノードは、ノードが直接アクセスを行う対象のＡＰＵによるメモリ・アクセスに適した論理処理を実行する。
【００４１】
図１６はＤＭＡＣの別の実施形態、すなわち、非分散型アーキテクチャを図示する。この場合、ＤＭＡＣ１６０６の構造上のハードウェアは集中型である。ＡＰＵ１６０２とＰＵ１６０４は、ローカルＰＥバス１６０７を介してＤＭＡＣ１６０６との通信を行う。ＤＭＡＣ１６０６はクロスバー・スイッチを介してバス１６０８と接続される。バス１６０８はＤＲＡＭ１６１０と接続されている。
【００４２】
上述のように１つのＰＥの複数のＡＰＵのすべては、独立に、共用ＤＲＡＭ内のデータにアクセスすることができる。その結果、第１のＡＰＵがあるデータをそのローカル・ストレージで処理しているときに、第２のＡＰＵがこのデータを要求する場合もある。その時点で共用ＤＲＡＭから第２のＡＰＵへ当該データが出力された場合、データの値を変化させ得る第１のＡＰＵの進行中の処理に起因して、そのデータが無効になる場合がある。したがって、その時点で第２のプロセッサが共用ＤＲＡＭからデータを受け取った場合、第２のプロセッサで誤った結果が生じるおそれがある。例えば、このようなデータとしては、グローバル変数の具体的な値が挙げられる。第１のプロセッサが処理中にこの値を変えた場合、第２のプロセッサはもはや使用されていない値を受け取ることになる。したがって、共用ＤＲＡＭ内のメモリ・ロケーションとの間のＡＰＵによるデータの読み出しと書き込みとを同期させる何らかの方式が必要となる。この方式では、別のＡＰＵがそのＡＰＵのローカル・ストレージで現在操作しており、このため最新のものではないデータのメモリ・ロケーションからの読み出しと、最新のデータを格納しているメモリ・ロケーションへのデータの書き込みとを禁止する必要がある。
【００４３】
これらの問題を解決するために、ＤＲＡＭのアドレス指定が可能な各メモリ・ロケーションに対して、そのメモリ・ロケーションの中に格納されているデータに関連する状態情報を格納するために、ＤＲＡＭの中で追加のメモリ・セグメントの割り振りが行われる。この状態情報には、フル／エンプティ（Ｆ／Ｅ）ビットと、メモリ・ロケーションからデータを要求しているＡＰＵの識別子（ＡＰＵ  ＩＤ）と、要求されたデータを読み出す読み出し先となるＡＰＵのローカル・ストレージのアドレス（ＬＳアドレス）とが含まれる。ＤＲＡＭのアドレス指定が可能なメモリ・ロケーションは任意のサイズとすることができる。好ましい一実施形態ではこのサイズは１０２４ビットである。
【００４４】
Ｆ／Ｅビットが１に設定されている場合、メモリ・ロケーションに格納されているデータが最新のものであることが示される。一方、Ｆ／Ｅビットが０に設定されている場合、関連するメモリ・ロケーションに格納されているデータが最新のものではないことが示される。このビットが０に設定されている場合に、ＡＰＵがそのデータを要求しても、ＡＰＵはそのデータをすぐに読み出すことはできない。この場合、そのデータを要求しているＡＰＵを識別するＡＰＵ  ＩＤと、データが最新のものになったときに、そのデータを読み出す読み出し先となるこのＡＰＵのローカル・ストレージ内のメモリ・ロケーションを識別するＬＳアドレスとが、追加メモリ・セグメントに入力される。
【００４５】
追加メモリ・セグメントは、ＡＰＵのローカル・ストレージ内の各メモリ・ロケーションに対しても割り振られる。この追加メモリ・セグメントは、“ビジー・ビット”と呼ばれる１ビットを格納する。このビジー・ビットは、ＤＲＡＭから取得する特定のデータを格納するために、関連するＬＳメモリ・ロケーションの予約を行うために使用される。ローカル・ストレージ内の特定のメモリ・ロケーションに対するビジー・ビットが１に設定されている場合、ＡＰＵは、この特定のデータの書き込みにのみこのメモリ・ロケーションを使用することができる。一方、ローカル・ストレージ内の特定のメモリ・ロケーションに対するビジー・ビットが０に設定されている場合、ＡＰＵは、どのようなデータの書き込みにもこのメモリ・ロケーションを使用することができる。
【００４６】
ＰＥの共用ＤＲＡＭからのデータの読み出しと、ＰＥの共用ＤＲＡＭへのデータの書き込みとを同期させるために、Ｆ／Ｅビット、ＡＰＵ  ＩＤ、ＬＳアドレスおよびビジー・ビットを使用する方法を示す例が図１７Ａ〜１７Ｏに例示されている。
【００４７】
図１７Ａに示すように、１以上のＰＥ（ＰＥ１７２０など）がＤＲＡＭ１７０２を使用する。ＰＥ１７２０にはＡＰＵ１７２２とＡＰＵ１７４０とが含まれる。ＡＰＵ１７２２には制御論理回路１７２４が含まれ、ＡＰＵ１７４０には制御論理回路１７４２が含まれる。ＡＰＵ１７２２にはローカル・ストレージ１７２６も含まれる。このローカル・ストレージには複数のアドレス指定可能なメモリ・ロケーション１７２８が含まれる。ＡＰＵ１７４０にはローカル・ストレージ１７４４が含まれ、このローカル・ストレージにも複数のアドレス指定可能なメモリ・ロケーション１７４６が含まれる。これらのアドレス指定可能なメモリ・ロケーションのすべては好適にはそのサイズが１０２４ビットであることが望ましい。
【００４８】
追加のメモリ・セグメントは各ＬＳのアドレス指定可能なメモリ・ロケーションと関連付けられる。例えば、メモリ・セグメント１７２９と１７３４とはそれぞれ、ローカルなメモリ・ロケーション１７３１と１７３２とに関連付けられ、メモリ・セグメント１７５２はローカルなメモリ・ロケーション１７５０と関連付けられる。上述のような“ビジー・ビット”はこれらの追加メモリ・セグメントの各々に格納される。ローカルなメモリ・ロケーション１７３２には数個のＸ印が示されており、このメモリ・ロケーションにデータが含まれることを示している。
【００４９】
ＤＲＡＭ１７０２には、メモリ・ロケーション１７０６と１７０８など、複数のアドレス指定可能なメモリ・ロケーション１７０４が含まれる。これらのメモリ・ロケーションも、好適にはそのサイズが１０２４ビットであることが望ましい。これらのメモリ・ロケーションの各々にも追加のメモリ・セグメントが関連付けられる。例えば、追加メモリ・セグメント１７６０はメモリ・ロケーション１７０６と関連付けられ、追加メモリ・セグメント１７６２はメモリ・ロケーション１７０８と関連付けられる。各メモリ・ロケーションに格納されるデータに関連する状態情報は、メモリ・ロケーションと関連付けられたメモリ・セグメントに格納される。この状態情報の中には、上述のように、Ｆ／Ｅビット、ＡＰＵ  ＩＤおよびＬＳアドレスが含まれる。例えば、メモリ・ロケーション１７０８については、この状態情報にはＦ／Ｅビット１７１２、ＡＰＵ  ＩＤ１７１４およびＬＳアドレス１７１６が含まれる。
【００５０】
この状態情報とビジー・ビットとを用いて、ＰＥのＡＰＵ、またはＰＥのグループ間での、共用ＤＲＡＭからのデータの同期読み出しと、共用ＤＲＡＭへのデータの同期書き込みとを行うことができる。
【００５１】
図１７ＢはＡＰＵ１７２２のＬＳメモリ・ロケーション１７３２から、ＤＲＡＭ１７０２のメモリ・ロケーション１７０８へのデータの同期書き込みの開始を例示する図である。ＡＰＵ１７２２の制御論理回路１７２４によってこれらのデータの同期書き込みが開始される。メモリ・ロケーション１７０８がエンプティであるため、Ｆ／Ｅビット１７１２は０に設定されている。その結果、メモリ・ロケーション１７０８にＬＳメモリ・ロケーション１７３２内のデータを書き込むことができる。一方、このビットが１に設定されていて、メモリ・ロケーション１７０８がフル状態であり、最新の有効データを含むことが示されている場合、制御回路１７２２はエラー・メッセージを受け取ることになり、このメモリ・ロケーションへのデータの書き込みは禁止される。
【００５２】
メモリ・ロケーション１７０８へのデータの同期書き込みが成功した結果が図１７Ｃに示されている。この書き込まれたデータはメモリ・ロケーション１７０８に格納され、Ｆ／Ｅビット１７１２は１に設定されている。この設定によって、メモリ・ロケーション１７０８がフル状態であることと、このメモリ・ロケーション内のデータが最新の有効データであることが示される。
【００５３】
図１７Ｄは、ＤＲＡＭ１７０２のメモリ・ロケーション１７０８からローカル・ストレージ１７４４のＬＳメモリ・ロケーション１７５０へのデータの同期読み出しの開始を例示する図である。この読み出しを開始するために、ＬＳメモリ・ロケーション１７５０のメモリ・セグメント１７５２のビジー・ビットが１に設定されて、上記データ用のためにこのメモリ・ロケーションが予約される。このビジー・ビットを１に設定することによって、ＡＰＵ１７４０がこのメモリ・ロケーションに他のデータを格納できなくなる。
【００５４】
図１７Ｅに示すように、次に制御論理回路１７４２がＤＲＡＭ１７０２のメモリ・ロケーション１７０８に対する同期読取りコマンドを出す。このメモリ・ロケーションと関連付けられたＦ／Ｅビット１７１２は１に設定されているので、メモリ・ロケーション１７０８の中に格納されたデータは最新の有効データであると見なされる。その結果、メモリ・ロケーション１７０８からＬＳメモリ・ロケーション１７５０へのデータ転送の準備として、Ｆ／Ｅビット１７１２が０に設定される。この設定が図１７Ｆに示されている。このビットが０に設定されるということは、メモリ・ロケーション１７０８のデータが読み出された後に、このデータが無効になることを示す。
【００５５】
図１７Ｇに示すように、次に、メモリ・ロケーション１７０８内のデータが、メモリ・ロケーション１７０８からＬＳメモリ・ロケーション１７５０へ読み出される。図１７Ｈは最終状態を示す図である。メモリ・ロケーション１７０８のデータのコピーがＬＳメモリ・ロケーション１７５０に格納されている。Ｆ／Ｅビット１７１２は０に設定され、メモリ・ロケーション１７０８のデータが無効であることを示している。このデータは、ＡＰＵ１７４０によって行われた上記データの変更の結果、無効となっている。メモリ・セグメント１７５２内のビジー・ビットも０に設定されている。この設定によって、ＡＰＵ１７４０がＬＳメモリ・ロケーション１７５０を任意の目的に利用できること、すなわち、このＬＳメモリ・ロケーションがもはや特定のデータの受信を待機している予約状態ではないことが示される。したがって、任意の目的のためにＡＰＵ１７４０によってＬＳメモリ・ロケーション１７５０へアクセスすることが可能となる。
【００５６】
図１７Ｉ〜図１７Ｏには、ＤＲＡＭ１７０２のメモリ・ロケーション用のＦ／Ｅビットが０に設定されていて、このメモリ・ロケーションのデータが最新でも有効でもないことが示されている場合の、ＤＲＡＭ１７０２のメモリ・ロケーション（メモリ・ロケーション１７０８など）から、ＡＰＵのローカル・ストレージのＬＳメモリ・ロケーション（ローカル・ストレージ１７４４のＬＳメモリ・ロケーション１７５２など）へのデータの同期読み出しが例示されている。図１７Ｉに示すように、この転送を開始するために、ＬＳメモリ・ロケーション１７５０のメモリ・セグメント１７５２内のビジー・ビットが１に設定され、このデータ転送用としてこのＬＳメモリ・ロケーションが予約される。図１７Ｊに示すように、次に、制御論理回路１７４２は、ＤＲＡＭ１７０２のメモリ・ロケーション１７０８に対する同期読取りコマンドを出す。このメモリ・ロケーションと関連付けられたＦ／Ｅビット（Ｆ／Ｅビット１７１２）は０に設定されているので、メモリ・ロケーション１７０８に格納されているデータは無効である。その結果、このメモリ・ロケーションからのデータの即時読み出しを阻止するために、信号が制御論理回路１７４２へ伝送される。
【００５７】
図１７Ｋに示すように、次に、ＡＰＵ  ＩＤ１７１４とこの読取りコマンド用のＬＳアドレス１７１６とがメモリ・セグメント１７６２へ書き込まれる。この場合、ＡＰＵ１７４０用のＡＰＵ  ＩＤと、ＬＳメモリ・ロケーション１７５０用のＬＳメモリ・ロケーションとがメモリ・セグメント１７６２へ書き込まれる。したがって、このＡＰＵ  ＩＤとＬＳメモリ・ロケーションは、メモリ・ロケーション１７０８内のデータが最新のものになったときに、最新のデータを伝送する伝送先のメモリ・ロケーションを決定するために使用される。
【００５８】
メモリ・ロケーション１７０８内のデータは、ＡＰＵがこのメモリ・ロケーションへデータを書き込むと、有効かつ最新のデータとなる。ＡＰＵ１７２２のメモリ・ロケーション１７３２などからメモリ・ロケーション１７０８へのデータの同期書き込みが図１７Ｌに例示されている。メモリ・ロケーション用のＦ／Ｅビット１７１２が０に設定されているため、このデータのこの同期書き込みは許される。
【００５９】
図１７Ｍに示すように、この書き込み後、メモリ・ロケーション１７０８内のデータは最新の有効データになる。したがって、メモリ・セグメント１７６２にあるＡＰＵ  ＩＤ１７１４とＬＳアドレス１７１６とは、メモリ・セグメント１７６２から即座に読み出され、次いでこの情報はこのセグメントから削除される。また、メモリ・ロケーション１７０８内のデータの即時読み出しを予期して、Ｆ／Ｅビット１７１２も０に設定される。図１７Ｎに示すように、ＡＰＵ  ＩＤ１７１４とＬＳアドレス１７１６とを読み出すと、この情報が直ちに使用されて、ＡＰＵ１７４０のＬＳメモリ・ロケーション１７５０へメモリ・ロケーション１７０８内の有効データが読み出される。最終状態が図１７Ｏに図示されている。この図には、メモリ・ロケーション１７０８からメモリ・ロケーション１７５０へコピーされた有効データと、０に設定されているメモリ・セグメント１７５２内のビジー・ビットと、０に設定されているメモリ・セグメント１７６２内のＦ／Ｅビット１７１２とが示される。このビジー・ビットが０に設定されているため、任意の目的のために、ＡＰＵ１７４０がＬＳメモリ・ロケーション１７５０にアクセスを行うことができるようになる。このＦ／Ｅビットが０になっていることで、メモリ・ロケーション１７０８内のデータがもはや最新でも有効でもないことが示される。
【００６０】
図１８は、上述のオペレーションと、ＤＲＡＭのメモリ・ロケーションの様々な状態とをまとめた図であり、この状態は、メモリ・ロケーションに対応するメモリ・セグメントの中に格納されているＦ／Ｅビットの状態と、ＡＰＵ  ＩＤと、ＬＳアドレスとに基づいて決まる。このメモリ・ロケーションは、３つの状態を取り得る。これらの３つの状態には、Ｆ／Ｅビットが０に設定され、ＡＰＵ  ＩＤまたはＬＳアドレスの情報が提供されないエンプティ状態１８８０と、Ｆ／Ｅビットが１に設定され、ＡＰＵ  ＩＤまたはＬＳアドレスの情報が提供されないフル状態１８８２と、Ｆ／Ｅビットが０に設定され、ＡＰＵ  ＩＤとＬＳアドレスの情報が提供されるブロッキング状態１８８４とがある。
【００６１】
この図に示すように、エンプティ状態１８８０では、同期書き込みオペレーションが許され、このオペレーションの結果フル状態１８８２へ遷移する。しかし、メモリ・ロケーションがエンプティ状態であるときはメモリ・ロケーション内のデータが最新のものではないので、同期読み出しオペレーションが行われると、ブロッキング状態１８８４へ遷移する。
【００６２】
フル状態１８８２では、同期読み出しオペレーションが許され、このオペレーションの結果エンプティ状態１８８０へ遷移する。一方、有効データの上書きを避けるために、フル状態１８８２での同期書き込みオペレーションは禁止される。このような書き込みオペレーションがこの状態で試みられた場合、状態の変化は生じず、ＡＰＵの対応する制御論理回路へエラー・メッセージが伝送される。
【００６３】
ブロッキング状態１８８４では、メモリ・ロケーションの中へのデータの同期書き込みが許され、このオペレーションの結果エンプティ状態１８８０へ遷移する。一方、ブロッキング状態１８８４での同期読み出しオペレーションは、このブロッキング状態を生じさせることとなった前に行われた同期読み出しオペレーションとのコンフリクトを阻止するため禁止される。同期読み出しオペレーションが、ブロッキング状態１８８４で試みられた場合、状態変化は生じず、ＡＰＵの対応する制御論理回路へエラー・メッセージが伝送される。
【００６４】
共用ＤＲＡＭからのデータの同期読み出しと、共用ＤＲＡＭへのデータの同期書き込みを行う上述の方式は、通常、外部装置からのデータ読み出しと外部装置へのデータ書き込み用プロセッサとして専用に用いられる計算用リソースを省くためにも利用することができる。この入出力（Ｉ／Ｏ）機能はＰＵによって行ってもよい。しかし、適切なプログラムを実行するＡＰＵが、この同期方式の変更例を利用してこの機能を実行してもよい。例えば、外部装置によって開始されたＩ／Ｏインターフェースからのデータ伝送を求める割込み要求を受け取ったＰＵは、この方式を利用して、このＡＰＵにこの要求の処理を委任することができる。次いで、ＡＰＵはＩ／Ｏインターフェースに対して同期書き込みコマンドを出す。次に、このインターフェースは、現在ＤＲＡＭへデータを書き込むことができる旨を外部装置に通知する。次にＡＰＵはＤＲＡＭに対して同期読取りコマンドを出し、ＤＲＡＭの関連するメモリ空間をブロッキング状態に設定する。また、ＡＰＵはデータの受け取りに必要なＡＰＵのローカル・ストレージのメモリ・ロケーションのビジー・ビットを１に設定する。ブロッキング状態では、ＤＲＡＭの関連するメモリ空間と関連付けられた追加メモリ・セグメントに、ＡＰＵのＩＤとＡＰＵのローカル・ストレージの関連するメモリ・ロケーションのアドレスが格納されている。次に外部装置は同期書き込みコマンドを出し、ＤＲＡＭの関連するメモリ空間へデータが直接書き込まれる。このメモリ空間はブロッキング状態にあるので、データは、このメモリ空間から、追加メモリ・セグメントで識別されるＡＰＵのローカル・ストレージのメモリ・ロケーションへ直ちに読み出される。次いで、これらのメモリ・ロケーション用のビジー・ビットが０に設定される。外部装置がデータの書き込みを完了すると、ＡＰＵは、伝送が完了したことを知らせる信号をＰＵへ出す。
【００６５】
したがって、この方式を用いて、ＰＵの計算の負荷を最小に抑えつつ、外部装置からのデータ転送を処理することができる。しかし、この機能を委任されたＡＰＵはＰＵに対して割込み要求を出す必要があり、外部装置がＤＲＡＭに対して直接アクセスを行う必要がある。
【００６６】
各ＰＥのＤＲＡＭには複数の“サンドボックス”が含まれる。サンドボックスによって共用ＤＲＡＭ領域が定義され、特定のＡＰＵまたはＡＰＵの組のが、この領域を越えてデータの読み出しや書き込みを行うことはできなくなる。これらのサンドボックスによって、あるＡＰＵがデータを処理中に、別のＡＰＵによってデータが処理されたことで生じるデータの破損に対する保護が得られる。またこれらのサンドボックスによって、ＤＲＡＭ全体でソフトウェア・セルのデータの破損の可能性がない状態で、ネットワーク１０４から特定のサンドボックスへそのソフトウェア・セルのダウンロードを行うことが許される。本発明では、サンドボックスは、ＤＲＡＭとＤＭＡＣとから成るハードウェアの中で実現される。ソフトウェアの代わりに、このハードウェア内でこれらのサンドボックスを実施することにより、速度とセキュリティという利点が得られる。
【００６７】
ＰＥのＰＵはＡＰＵへ割り当てられるサンドボックスの制御を行う。ＰＵは、通常はオペレーティング・システムのような信頼のおけるプログラムしか実行しないので、この方式によってセキュリティが危険にさらされることはない。この方式によると、ＰＵはキー管理テーブルの構築と維持とを行う。図１９にこのキー管理テーブルが例示されている。この図に示すように、キー管理テーブル１９０２内の各エントリには、ＡＰＵの識別子（ＩＤ）１９０４と、そのＡＰＵのＡＰＵキー１９０６と、キー・マスク１９０８とが含まれる。このキー・マスクの用途については後述する。キー管理テーブル１９０２は、スタティック・ランダム・アクセス・メモリ（ＳＲＡ）のような比較的高速のメモリに好適に格納され、ＤＭＡＣと関連付けられている。キー管理テーブル１９０２内のエントリはＰＵによって制御されている。ＡＰＵが、ＤＲＡＭの特定の格納位置（ストレージ・ロケーション）へのデータの書き込みあるいはＤＲＡＭの特定の格納位置からのデータの読み出しを要求すると、ＤＭＡＣは、キー管理テーブル１９０２内のそのＡＰＵへ割り当てられたＡＰＵキー１９０６を、その格納位置と関連付けられているメモリ・アクセス・キーと比較して評価する。
【００６８】
図２０に示すように、ＤＲＡＭ２００２のそれぞれのアドレス指定可能な格納位置２００６に対して、専用のメモリ・セグメント２０１０が割り当てられる。この専用メモリ・セグメントの中に、この格納位置のメモリ・アクセス・キー２０１２が格納される。上述のように、この格納位置に対するデータの書き込みとデータの読み出しを行うための同期情報が、同様にそれぞれのアドレス指定可能な格納位置２００６と関連付けられている別の追加の専用メモリ・セグメント２００８に格納される。
【００６９】
作動時に、ＡＰＵはＤＭＡＣへＤＭＡコマンドを出す。このコマンドには、ＤＲＡＭ２００２の格納位置２００６のアドレスが含まれる。ＤＭＡＣは、このコマンドを実行する前に、要求元のＡＰＵのＩＤ１９０４を用いて、キー管理テーブル１９０２内でこのＡＰＵのキー１９０６を探す。次いで、ＤＭＡＣは、要求元のＡＰＵのＡＰＵキー１９０６と、このＡＰＵがアクセスを求めているＤＲＡＭの格納位置と関連付けられている専用メモリ・セグメント２０１０内に格納されているメモリ・アクセス・キー２０１２とを比較する。２つのキーが一致しない場合、ＤＭＡコマンドは実行されない。一方、２つのキーが一致した場合、ＤＭＡコマンドが処理され、要求されたメモリ・アクセスが実行される。
【００７０】
図２１に別の実施形態を示す。この例では、ＰＵはメモリ・アクセス管理テーブル２１０２の維持も行う。メモリ・アクセス管理テーブル２１０２にはＤＲＡＭ内にある各サンドボックス用のエントリが含まれる。図２１の例では、ＤＲＡＭには６４個のサンドボックスが含まれる。メモリ・アクセス管理テーブル２１０２内の各エントリには、サンドボックスの識別子（ＩＤ）２１０４と、ベース・メモリ・アドレス２１０６と、サンドボックス・サイズ２１０８と、メモリ・アクセス・キー２１１０と、アクセス・キー・マスク２１１０とが含まれる。ベース・メモリ・アドレス２１０６は、特定のメモリ・サンドボックスの先頭を示すＤＲＡＭ内のアドレスを示す。サンドボックス・サイズ２１０８はサンドボックスのサイズを示し、したがって、このサイズから特定のサンドボックスの終端が与えられる。
【００７１】
図２２は、キー管理テーブル１９０２とメモリ・アクセス管理テーブル２１０２とを用いてＤＭＡコマンドを実行するためのステップを示すフロー・チャートである。ステップ２２０２では、ＡＰＵによって、サンドボックス内の特定の１つ以上のメモリ・ロケーションへのアクセスを求めるＤＭＡコマンドがＤＭＡＣへ出される。このコマンドには、アクセスの要求先の特定のサンドボックスの識別を行うサンドボックスＩＤ２１０４が含まれる。ステップ２２０４では、ＤＭＡＣは、ＡＰＵのＩＤ１９０４を利用して、要求元のＡＰＵのキー１９０６をキー管理テーブル１９０２内で探す。ステップ２２０６で、ＤＭＡＣは、コマンド内のサンドボックスＩＤ２１０４を利用して、メモリ・アクセス管理テーブル２１０２内で、サンドボックスと関連付けられたメモリ・アクセス・キー２１１０を探す。ステップ２２０８で、ＤＭＡＣは、要求元のＡＰＵへ割り当てられているＡＰＵキー１９０６を、サンドボックスと関連付けられているアクセス・キー２１１０と比較する。ステップ２２１０で、この２つのキーが一致するかどうかの判定が行われる。この２つのキーが一致しない場合、処理はステップ２２１２へ移行し、ＤＭＡコマンドは処理されず、要求元のＡＰＵ、ＰＵ、またはその双方へエラー・メッセージが送信される。一方、ステップ２２１０で２つのキーの一致が得られた場合、処理はステップ２２１４へ進み、ＤＭＡＣはＤＭＡコマンドを実行する。
【００７２】
ＡＰＵキーおよびメモリ・アクセス・キー用のキー・マスクによって、このシステムの柔軟性が高まる。キー用のキー・マスクによって、マスクされたビットがワイルド・カードに変換される。例えば、ＡＰＵキー１９０６と関連付けられているキー・マスク１９０８内の最後の２ビットを１に設定するなどにより、キー・マスク１９０８が“マスク”に設定されている場合、ＡＰＵキーが１または０のいずれの値を取っていても同様にメモリ・アクセス・キーと一致するようになる。例えば、ＡＰＵキーが１０１０であるとする。通常、このＡＰＵキーによって１０１０のアクセス・キーを持つサンドボックスへのアクセスしか許可されない。しかし、このＡＰＵキー用のＡＰＵキー・マスクが０００１に設定されている場合、このＡＰＵキーを用いて１０１０または１０１１のいずれかのアクセス・キーを持つサンドボックスへのアクセスを行うことが可能となる。同様に、マスクが０００１に設定されているアクセス・キー１０１０は、１０１０または１０１１のいずれかのＡＰＵキーを持つＡＰＵからアクセスすることができる。ＡＰＵキー・マスクとメモリ・キー・マスクの双方を同時に使用することができるので、サンドボックスにアクセスできるＡＰＵを数多くのパターンで設定することができる。
【００７３】
また本発明はシステム１０１のプロセッサ用の新しいプログラミング・モデルも提供する。このプログラミング・モデルではソフトウェア・セル１０２が用いられる。これらのセルは、処理のためネットワーク１０４上の任意のプロセッサへ伝送することができる。またこの新しいプログラミング・モデルでは、システム１０１のユニークなモジュラー形アーキテクチャと、システム１０１のプロセッサとが利用される。
【００７４】
ソフトウェア・セルはＡＰＵのローカル・ストレージからＡＰＵによって直接処理される。ＡＰＵは、ＤＲＡＭ内のいずれのデータまたはプログラムを直接操作することはない。ＤＲＡＭ内のデータとプログラムは、ＡＰＵのローカル・ストレージに読み込まれたのち、ＡＰＵがこれらのデータとプログラムの処理を行う。したがって、ＡＰＵのローカル・ストレージには、プログラム・カウンタと、スタックと、これらのプログラムを実行するための他のソフトウェア・エレメントとが含まれる。ＰＵは、ＤＭＡＣに対してダイレクト・メモリ・アクセス（ＤＭＡ）コマンドを出すことによりＡＰＵの制御を行う。
【００７５】
ソフトウェア・セル１０２の構造が図２３に例示されている。この図に示すように、ソフトウェア・セル２３０２などのソフトウェア・セルには、ルート選定情報セクション２３０４と本体部分２３０６とが含まれる。ルート選定情報セクション２３０４に含まれる情報は、ネットワーク１０４のプロトコルによって決められる。ルート選定情報セクション２３０４には、ヘッダ２３０８、宛先ＩＤ２３１０、ソースＩＤ２３１２および応答ＩＤ２３１４が含まれる。宛先ＩＤにはネットワーク・アドレスが含まれる。ＴＣＰ／ＩＰプロトコルでは、例えば、ネットワーク・アドレスはインターネット・プロトコル（ＩＰ）アドレスである。さらに宛先ＩＤ２３１０には、処理のためにセルを伝送すべき伝送先のＰＥ及びＡＰＵの識別子が含まれる。ソースＩＤ２３１４にはネットワーク・アドレスが含まれ、このソースＩＤによってＰＥとＡＰＵとが識別され、このＰＥとＡＰＵとからセルの発信元を割り出し、必要な場合に宛先ＰＥとＡＰＵとは、セルに関する追加情報を得ることが可能となる。応答ＩＤ２３１４にはネットワーク・アドレスが含まれ、この応答ＩＤ２３１４によって、セルに関する問い合わせとセルの処理の結果とを送る送信先のＰＥとＡＰＵとが識別される。
【００７６】
セルの本体部分２３０６にはネットワークのプロトコルに依存しない情報が含まれる。図２３の分解部分はセルの本体部分２３０６の詳細を示している。セルの本体部分２３０６のヘッダ２３２０によってセル本体の先頭が識別される。セル・インターフェース２３２２にはセルの利用に必要な情報が含まれる。この情報には、グローバルな一意的ＩＤ２３２４と、必要なＡＰＵ２３２６と、サンドボックス・サイズ２３２８と、前のセルのＩＤ２３３０とが含まれる。
【００７７】
グローバルな一意的ＩＤ２３２４によって、ネットワーク１０４全体でソフトウェア・セル２３０２が一意的に識別される。グローバルな一意的ＩＤ２３２４は、ソースＩＤ２３１２（ソースＩＤ２３１２内のＰＥまたはＡＰＵの一意的識別子など）と、ソフトウェア・セル２３０２が作成または伝送された時刻と日付とに基づいて作成される。必要なＡＰＵ２３２６は、セルの実行に最低限必要なＡＰＵの個数を示す。サンドボックス・サイズ２３２８は、セルの実行に必要な、ＡＰＵと関連するＤＲＡＭ内の保護メモリの必要な容量を示す。前のセルＩＤ２３３０は、所定の順序での実行を要求するセルのグループ（ストリーミング・データなど）内での前のセルの識別子を示す。
【００７８】
実行セクション２３３２にはセルのコア情報が含まれる。この情報にはＤＭＡコマンド・リスト２３３４と、プログラム２３３６と、データ２３３８とが含まれる。プログラム２３３６には、ＡＰＵプログラム２３６０と２３６２など、ＡＰＵによって実行されるプログラム（“アプレット”と呼ばれる）が含まれ、データ２３３８にはこれらのプログラムを用いて処理されるデータが含まれる。ＤＭＡコマンド・リスト２３３４には、プログラムの起動に必要な一連のＤＭＡコマンドが含まれる。これらのＤＭＡコマンドにはＤＭＡコマンド２３４０、２３５０、２３５５、２３５８が含まれる。ＰＵはＤＭＡＣへこれらのＤＭＡコマンドを出す。
【００７９】
ＤＭＡコマンド２３４０にはＶＩＤ２３４２が含まれる。ＶＩＤ２３４２は、ＤＭＡコマンドが出されたとき物理ＩＤに対して対応づけられるＡＰＵのバーチャルＩＤである。ＤＭＡコマンド２３４０にはロード・コマンド２３４４とアドレス２３４６も含まれる。ロード・コマンド２３４４は、ＡＰＵに対し、ＤＲＡＭから特定の情報を読み出してローカル・ストレージの中へ入れるように命令する。アドレス２３４６は、この特定の情報を含むＤＲＡＭ内のバーチャル・アドレスを示す。この特定情報は、プログラム・セクション２３３６にあるプログラムや、データ・セクション２３３８にあるデータや、あるいはその他のデータなどであってもよい。最後に、ＤＭＡコマンド２３４０にはローカル・ストレージのアドレス２３４８が含まれる。このアドレスによって、情報のロード先のローカル・ストレージのアドレスが識別される。ＤＭＡコマンド２３５０には類似の情報が含まれる。その他のＤＭＡコマンドも使用可能である。
【００８０】
ＤＭＡコマンド・リスト２３３４には一連のキック・コマンド（キック・コマンド２３５５と２３５８など）も含まれる。キック・コマンドとは、ＰＵによってＡＰＵへ出されるセルの処理を開始するコマンドである。ＤＭＡキック・コマンド２３５５には、バーチャルＡＰＵ  ＩＤ２３５２と、キック・コマンド２３５４と、プログラム・カウンタ２３５６とが含まれる。バーチャルＡＰＵ  ＩＤ２３５２はキックすべき対象のＡＰＵを識別し、キック・コマンド２３５４は関連するキック・コマンドを示し、プログラム・カウンタ２３５６は、プログラムを実行するためのプログラム・カウンタのアドレスを示す。ＤＭＡキック・コマンド２３５８は、同じＡＰＵまたは別のＡＰＵについて同様の情報を与える。
【００８１】
上述したように、ＰＵは、ＡＰＵを、コプロセッサとしてではなく独立したプロセッサとして扱う。したがって、ＰＵは、ＡＰＵによる処理を制御するために、遠隔手順呼出しに類似したコマンドを使用する。これらのコマンドは“ＡＰＵ遠隔手順呼出し”（ＡＲＰＣ）と呼ばれる。ＰＵは、一連のＤＭＡコマンドをＤＭＡＣへ出すことによりＡＲＰＣを実行する。ＤＭＡＣは、ＡＰＵプログラムとそれに関連するスタック・フレームとをＡＰＵのローカル・ストレージの中へロードする。次いで、ＰＵはＡＰＵへ開始のキックを出し、ＡＰＵプログラムを実行する。
【００８２】
図２４は、アプレットを実行するためのＡＲＰＣのステップを例示する。指定されたＡＰＵによるアプレットの処理の開始時にＰＵが実行するステップが図２４の第１の部分２４０２に示され、指定ＡＰＵが実行するステップが図２４の第２の部分２４０４に示されている。
【００８３】
ステップ２４１０で、ＰＵはアプレットを評価し、次いで、アプレットを処理するためのＡＰＵを指定する。ステップ２４１２で、ＰＵは、必要な１つ以上のサンドボックスのメモリ・アクセス・キーの設定を行うＤＭＡコマンドをＤＭＡＣへ出すことにより、アプレットを実行するためのスペースをＤＲＡＭ内に割り振る。ステップ２４１４で、ＰＵは、アプレットの完了を通知できるよう、指定ＡＰＵへの割込み要求を許可する。ステップ２４１８で、ＰＵは、ＤＲＡＭからＡＰＵのローカル・ストレージへアプレットをロードするＤＭＡコマンドをＤＭＡＣへ出す。ステップ２４２０で、ＤＭＡコマンドが実行され、アプレットがＤＲＡＭからローカル・ストレージへ読み出される。ステップ２４２２で、ＰＵは、アプレットと関連付けられたスタック・フレームをＤＲＡＭからＡＰＵのローカル・ストレージへロードするＤＭＡコマンドをＤＭＡＣへ出す。ステップ２４２３で、ＤＭＡコマンドが実行され、スタック・フレームがＤＲＡＭからＡＰＵのローカル・ストレージへ読み出される。ステップ２４２４で、ＰＵは、ＤＭＡＣがＡＰＵへキーを割り当てて、ステップ２４１２で指定された、１つまたは複数のハードウェア・サンドボックスからのデータ読み出しと、その１つまたは複数のハードウェア・サンドボックスへのデータ書き込みをＡＰＵに許可するＤＭＡコマンドを出す。ステップ２４２６で、ＤＭＡＣは、ＡＰＵへ割り当てられたキーを用いてキー管理テーブル（ＫＴＡＢ）の更新を行う。ステップ２４２８で、ＰＵは、プログラムの処理を開始するＤＭＡコマンド“キック”をＡＰＵへ出す。特定のアプレットに応じて、特定のＡＲＰＣの実行時にＰＵによって他のＤＭＡコマンドを出してもよい。
【００８４】
上記のように、図２４の第２の部分２４０４は、アプレットの実行時にＡＰＵによって行われるステップを例示するものである。ステップ２４３０で、ＡＰＵは、ステップ２４２８で出されたキック・コマンドに応えてアプレットの実行を開始する。ステップ２４３２で、ＡＰＵは、アプレットの指示で、アプレットの関連スタック・フレームの評価を行う。ステップ２４３４で、ＡＰＵは、ＤＭＡＣへ複数のＤＭＡコマンドを出し、スタック・フレームによって必要であると指定されているデータをＤＲＡＭからＡＰＵのローカル・ストレージへロードする。ステップ２４３６で、これらのＤＭＡコマンドが実行され、データがＤＲＡＭからＡＰＵのローカル・ストレージへ読み出される。ステップ２４３８でＡＰＵはアプレットを実行し、結果を出力する。ステップ２４４０で、ＡＰＵはＤＭＡＣへＤＭＡコマンドを出し、ＤＲＡＭにその結果を格納する。ステップ２４４２で、ＤＭＡコマンドが実行され、アプレットの結果がＡＰＵのローカル・ストレージからＤＲＡＭへ書き込まれる。ステップ２４４４で、ＡＰＵはＰＵへ割込み要求を出し、ＡＲＰＣが完了したことを通知する。
【００８５】
ＡＰＵがＰＵの指示の下で独立にタスクを実行することができる能力により、ＡＰＵのグループと、ＡＰＵのグループと関連付けられたメモリ・リソースとを拡張タスクの実行専用にすることが可能になる。例えば、１つのＰＵは、１以上のＡＰＵと、これらの１以上のＡＰＵと関連付けられたメモリ・サンドボックスのグループとを、長時間にわたり（extended period）ネットワーク１０４を介して伝送されてくるデータの受信専用とし、この時間中に受信したデータをさらに処理させるために、１以上の他のＡＰＵとそれらと関連付けられたメモリ・サンドボックスへの送信専用とすることができる。この能力は、ネットワーク１０４を介して伝送されるストリーミング・データ（ストリーミングＭＰＥＧまたはストリーミングＡＴＲＡＣオーディオまたはビデオ・データなど）の処理に特に好適である。ＰＵは、１以上のＡＰＵおよびその関連のメモリ・サンドボックスをこのようなデータの受信専用とし、１以上の別のＡＰＵおよびその関連のメモリ・サンドボックスをこのデータの解凍と処理専用とすることができる。言い換えれば、ＰＵは、ＡＰＵのグループとその関連のメモリ・サンドボックスとの間で、このようなデータ処理を行うための専用パイプライン関係の確立を行うことができる。
【００８６】
しかし、このような処理を効率的に実行するためには、パイプラインの専用ＡＰＵとメモリ・サンドボックスとが、データ・ストリームを含むアプレットの処理が行われない時間中もパイプライン専用のままであることが望ましい。言い換えれば、専用ＡＰＵおよびそれらと関連するサンドボックスが、これらの時間中予約状態のままに置かれることが望ましい。アプレットの処理の完了時に、ＡＰＵとその関連の１つまたは複数のメモリ・サンドボックスを予約、即ちリザーブ状態としておくことは“常駐終了”と呼ばれる。常駐終了はＰＵからの命令に応えて行われる。
【００８７】
図２５、２６Ａ、２６Ｂは、ＡＰＵのグループおよびそれらと関連するサンドボックスを含む、ストリーミング・データ（ストリーミングＭＰＥＧデータなど）を処理するための専用パイプライン構造の設定を例示する。図２５に示すように、このパイプライン構造の構成要素にはＰＥ２５０２とＤＲＡＭ２５１８とが含まれる。ＰＥ２５０２の中には、ＰＵ２５０４、ＤＭＡＣ２５０６およびＡＰＵ２５０８、ＡＰＵ２５１０、ＡＰＵ２５１２などの複数のＡＰＵが含まれる。ＰＵ２５０４、ＤＭＡＣ２５０６およびＡＰＵ間の通信はＰＥバス２５１４を介して行われる。広帯域幅のバス２５１６によってＤＭＡＣ２５０６はＤＲＡＭ２５１８と接続される。ＤＲＡＭ２５１８には、複数のサンドボックス（サンドボックス２５２０、サンドボックス２５２２、サンドボックス２５２４、サンドボックス２５２６など）が含まれる。
【００８８】
図２６Ａに、専用パイプラインを設定するためのステップを例示する。ステップ２６１０で、ＰＵ２５０４は、ネットワーク・アプレットの処理のためにＡＰＵ２５０８を割り当てる。ネットワーク・アプレットは、ネットワーク１０４のネットワーク・プロトコルの処理用プログラムを有する。この場合、このプロトコルは伝送制御プロトコル／インターネット用プロトコル（ＴＣＰ／ＩＰ）である。このプロトコルに従うＴＣＰ／ＩＰデータ・パケットがネットワーク１０４を介して伝送される。ＡＰＵ２５０８は、これらのパケットを受信すると、これを処理し、パケット内のデータを組み立て、ソフトウェア・セル１０２の中へ入れる。ステップ２６１２で、ＰＵ２５０４は、ネットワーク・アプレットの処理の完了時に常駐終了を実行するようにＡＰＵ２５０８に指示する。ステップ２６１４で、ＰＵ２５０４は、ＭＰＥＧアプレットの処理のためにＡＰＵ２５１０及び２５１２を割り当てる。ステップ２６１５で、ＰＵ２５０４は、ＭＰＥＧアプレットの処理の完了時に常駐終了を実行するようにＡＰＵ２５１０及び２５１２に指示する。ステップ２６１６で、ＰＵ２５０４は、ＡＰＵ２５０８とＡＰＵ２５１０がアクセスするソース・サンドボックスとしてサンドボックス２５２０を指定する。ステップ２６１８で、ＰＵ２５０４は、ＡＰＵ２５１０がアクセスする宛先サンドボックスとしてサンドボックス２５２２を指定する。ステップ２６２０で、ＰＵ２５０４は、ＡＰＵ２５０８とＡＰＵ２５１２がアクセスするソース・サンドボックスとしてサンドボックス２５２４を指定する。ステップ２６２２で、ＰＵ２５０４は、ＡＰＵ２５１２がアクセスする宛先サンドボックスとしてサンドボックス２５２６を指定する。ステップ２６２４で、ＡＰＵ２５１０はソース・サンドボックス２５２０内、ＡＰＵ２５１２はソース・サンドボックス２５２４内のそれぞれのメモリ・ブロックへ同期読取りコマンドを送り、これらのメモリ・ブロックをブロッキング状態に設定する。最後に、処理はステップ２６２８へ移り、専用パイプラインの設定が完了し、パイプライン専用のリソースが予約される。このようにして、ＡＰＵ２５０８、２５１０、２５１２およびそれらと関連するサンドボックス２５２０、２５２２、２５２４および２５２６は予約状態に入る。
【００８９】
図２６Ｂに、この専用パイプラインによるストリーミングＭＰＥＧデータの処理ステップを例示する。ステップ２６３０で、ネットワーク・アプレットを処理するＡＰＵ２５０８は、ＴＣＰ／ＩＰデータ・パケットをネットワーク１０４から受信し、そのローカル・ストレージに入れる。ステップ２６３２で、ＡＰＵ２５０８は、これらのＴＣＰ／ＩＰデータ・パケットを処理し、これらのパケット内のデータを組み立て、ソフトウェア・セル１０２の中へ入れる。ステップ２６３４で、ＡＰＵ２５０８はソフトウェア・セルのヘッダ２３２０（図２３）を調べ、セルがＭＰＥＧデータを含むかどうかの判定を行う。セルがＭＰＥＧデータを含まない場合、ステップ２６３６で、ＡＰＵ２５０８は、専用パイプライン内に含まれない他のＡＰＵによってそれ以外のデータを処理させるために、ＤＲＡＭ２５１８内に指定される汎用サンドボックスへそのセルを伝送する。またＡＰＵ２５０８はこの伝送についてＰＵ２５０４に通知する。
【００９０】
一方、ソフトウェア・セルがＭＰＥＧデータを含む場合、ステップ２６３８で、ＡＰＵ２５０８はそのセルの前のセルのＩＤ２３３０（図２３）を調べ、そのセルが属するＭＰＥＧデータ・ストリームを識別する。ステップ２６４０で、ＡＰＵ２５０８はセルの処理用の専用パイプラインにあるＡＰＵを選択する。この場合、ＡＰＵ２５０８は、このデータの処理用にＡＰＵ２５１０を選択する。この選択は前のセルＩＤ２３３０とロード・バランシング・ファクタ（負荷平衡係数）とに基づいて行われる。例えば、そのソフトウェア・セルが属するＭＰＥＧデータ・ストリームの前回のソフトウェア・セルが、処理のためにＡＰＵ２５１０へ送られたことが前のセルＩＤ２３３０によって示される場合、通常は、現在のソフトウェア・セルも処理のためＡＰＵ２５１０へ送られる。ステップ２６４２で、ＡＰＵ２５０８は、サンドボックス２５２０へＭＰＥＧデータを書き込む同期書き込みコマンドを出す。このサンドボックスは予めブロッキング状態に設定されているので、ステップ２６４４で、ＭＰＥＧデータが、サンドボックス２５２０からＡＰＵ２５１０のローカル・ストレージへ自動的に読み出される。ステップ２６４６で、ＡＰＵ２５１０はそのローカル・ストレージでＭＰＥＧデータを処理してビデオ・データを生成する。ステップ２６４８で、ＡＰＵ２５１０はサンドボックス２５２２へビデオ・データを書き込む。ステップ２６５０で、ＡＰＵ２５１０はサンドボックス２５２０へ同期読取りコマンドを出し、このサンドボックスに追加ＭＰＥＧデータの受信を準備させる。ステップ２６５２で、ＡＰＵ２５１０は常駐終了処理を行う。この処理によってこのＡＰＵは予約状態に入り、この予約状態の間ＡＰＵは、ＭＰＥＧデータ・ストリームに含まれる追加ＭＰＥＧデータの処理を行うべく待機する。
【００９１】
他のタイプのデータの処理のために、ＡＰＵのグループおよびそれらと関連するサンドボックス間でその他の専用構造を設定してもよい。例えば、図２７に示すように、ＡＰＵの専用グループ（ＡＰＵ２７０２、２７０８、２７１４など）を設定し、３次元オブジェクトに対して幾何学的変換を実行して２次元ディスプレイ・リストを生成させてもよい。これらの２次元ディスプレイ・リストを他のＡＰＵによってさらに処理（レンダー）しピクセル・データを生成させることが可能である。この処理を実行するために、３次元オブジェクトと、これらのオブジェクト処理によって得られるディスプレイ・リストを格納するために、サンドボックスがＡＰＵ２７０２、２７０８、２４１４の専用に設定される。例えば、ソース・サンドボックス２７０４がＡＰＵ２７０２、ソース・サンドボックス２７１０がＡＰＵ２７０８、ソース・サンドボックス２７１６がＡＰＵ２７１４によって処理された３次元オブジェクトの格納専用にそれぞれ設定される。同様に、宛先サンドボックス２７０６がＡＰＵ２７０２、宛先サンドボックス２７１２がＡＰＵ２７０８、宛先サンドボックス２７１８がＡＰＵ２７１４によるこれらの３次元オブジェクトの処理によって得られるディスプレイ・リストの格納専用にそれぞれ設定される。
【００９２】
調整用ＡＰＵ２７２０は、宛先サンドボックス２７０６、２７１２、２７１８からそのローカル・ストレージへのディスプレイ・リストの受信専用に設定される。ＡＰＵ２７２０は、これらのディスプレイ・リスト間での調整を行い、ピクセル・データのレンダリングのためにこれらのディスプレイ・リストを他のＡＰＵへ送る。
【００９３】
システム１０１のプロセッサは絶対タイマーも使用する。この絶対タイマーは、ＡＰＵおよびＰＥの他の構成要素へクロック信号を提供し、このクロック信号はこれらの構成要素を駆動するクロック信号に依存せず、かつ、このクロック信号より高速である。この絶対タイマーの利用が図２８に例示されている。
【００９４】
この図に示すように、この絶対タイマーによって、ＡＰＵがタスクを実行するためのタイム・バジェット（割り当て時間）が決定される。このタイム・バジェットによって、これらのタスクを完了するための時間が与えられるが、この時間はＡＰＵによるタスク処理に必要な時間よりも長い。その結果、各タスクについて、タイム・バジェット内にビジーな時間とスタンバイ時間とが存在することになる。すべてのアプレットは、ＡＰＵの実際の処理時間を問わず、このタイム・バジェットに基づいて処理を行うように書かれる。例えば、ＰＥの特定のＡＰＵについて、タイム・バジェット２８０４のビジー時間２８０２中に特定のタスクを実行することができる。ビジー時間２８０２がタイム・バジェット２８０４未満であるため、タイム・バジェット中にスタンバイ時間２８０６が生じる。このスタンバイ時間中、ＡＰＵは、ＡＰＵが消費するパワーが少なくなるスリープモードに入る。
【００９５】
タイム・バジェット２８０４が満了するまで、他のＡＰＵまたはＰＥの他の構成要素がタスク処理の結果を予期することはない。したがって、ＡＰＵの実際の処理速度にかかわらず、絶対タイマーによって決定されるタイム・バジェットを用いてＡＰＵの処理結果が常に調整される。
【００９６】
将来、ＡＰＵによる処理速度はさらに高速になる。しかし、絶対タイマーによって設定されるタイム・バジェットは同じままである。例えば、図２８に示すように、今後登場するＡＰＵは、さらに短時間でタスクを実行し、このため、スタンバイ時間はさらに長くなると考えられる。したがって、ビジー時間２８０８はビジー時間２８０２より短くなり、スタンバイ時間２８１０はスタンバイ時間２８０６より長くなる。しかし、絶対タイマーによって設定された同じタイム・バジェットに基づいて処理を行うようにプログラムが書かれているので、ＡＰＵ間での処理結果の調整が維持される。その結果、さらに高速のＡＰＵが低速のＡＰＵ用として書かれたプログラムの処理を、その処理の結果が予期される時点でコンフリクトを生じることなく行うことができる。
【００９７】
動作速度の向上や動作速度が異なることに起因するＡＰＵによる並列処理の調整の問題に対しては、ＡＰＵ間での調整を決定する絶対タイマーに代えて、ＰＵまたは１以上の指定されたＡＰＵが、あるＡＰＵがアプレットの処理時に実行している特定の命令（マイクロコード）の分析を行うようにすることもできる。命令内に“オペレーションなし”（“ＮＯＯＰ”）命令を挿入し、一部のＡＰＵによってこの命令を実行して、ＡＰＵによる処理を、アプレットが予想する適切な順序で完了することが可能となる。命令の中へこのようなＮＯＯＰを挿入することにより、すべての命令がＡＰＵによって正しいタイミングで実行されるようになる。
【００９８】
前述のように、各処理エレメント（ＰＥ）には、処理ユニット（ＰＵ）と複数の付加処理装置（ＡＰＵ）が含まれ、ＰＵの調整および制御下で、１つ以上のアプリケーションによるデータの並列処理がＡＰＵによって実行される。このＰＥの変形例のいくつかについては、広帯域エンジン（ＢＥ）およびビジュアライザ（ＶＳ）に関する説明の中で触れた。これとは別に、ＰＥ（さらに言えば任意の種類のプロセッサ）の設計において、パワー・マネジメントに対する手法を考慮する必要がある。一般に、どのプロセッサも、命令を実行する（アプリケーションに従ってデータを処理するなど）際に電力を消費し、熱を発生させる。特に、ＰＥや、トランジスタの集密度が比較的高く、スイッチ・スピード（クロック・サイクルなど）の比較的高速なプロセッサは、過度な発熱によって破壊を起こすおそれがある。この問題は、パワー・マネジメントによって解決することができる。さらに、パワー・マネジメントの利用により、プロセッサの平均使用電力量を低減させることで運用コストを削減することができ、携帯可能な用途で利用されるプロセッサの能力の向上を図ることが可能となる。
【００９９】
パワー・マネジメントの単純な形態では、単にＰＥを、その発熱量を破壊を起こさない程度に抑えつつ、最大またはほぼ最大の電力レベルで作動するように設計する。しかし、この手法では、プロセッサのチップ・レベルの設計が一層複雑になり、製造コストの増大を招く。この問題はプロセッサの機械的フィードバック設計に温度センサ等を使用すると大きくなる。上記の手法の不都合を回避するため、非機械的なフィードバック方式のパワー・マネジメント手法を用いることができる。このような手法では、命令の実行と、１命令当たりの平均発熱量の実測あるいは推定で求めた相関関係を使用して、ある期間中に発生する発熱量を推定する。パワー・マネジメント・アプリケーションは、この情報を用いてオーバーヒートを防ぐためにアプリケーションの実行を動的に変更することができる。
【０１００】
さらに、発明者らは、プロセッサが発する発熱量が、プロセッサが実行している命令のタイプ（例えば、命令によっては他の命令よりもプロセッサへの負荷が大きいものがある）に正比例していることを確認した。このため、また本発明によれば、処理環境は、プロセッサ・アクセスの回数とタイプを監視して、その関数としてエネルギー使用量を推定することでパワー・マネジメントを実行する。
【０１０１】
本発明の概念の模式図が図２９に示される。処理環境２９００は、例えば、パーソナル・コンピュータ、ネットワーク・サーバーなどに用いるための中央処理装置（ＣＰＵ）２９０５といくつかの命令カウンタ（命令カウンタ２９１０、２９２０によって示す）を備える。図２９に示す各構成要素は、集積回路であっても、いくつかの独立した回路要素であってもよい。命令のフローが、実行のためバス２９０６を介してＣＰＵ２９０５に送られる。この例では、ＣＰＵ２９０５の命令セットが事前にいくつかのタイプに分けられており、図２９に示す構成では、そのうちの少なくとも２つが監視される。説明のため、命令カウンタ２９１０はバス２９０６を監視して浮動小数点命令のカウントを保持しており、命令カウンタ２９２０はバス２９０６を監視して固定小数点命令のカウントを保持しているとする。プロセッサの命令セットは事前に決まっているため、命令カウンタの設計は直截的であり、ここには記載しない。それぞれの命令カウンタは、ＣＰＵ２９０５によって、制御信号２９０９を使用してリセット可能である。ＣＰＵ２９０５は、それぞれの命令カウンタに現在記憶されている各命令タイプのカウント値を、バス２９０７を介して得ることができる。バス２９０６、２９０７は、別個のバスとして図示されているが、これらのバスの１つ以上に代わって双方向バスを使用してもよい。
【０１０２】
図２９をさらに参照しながら、パワー・マネジメントを実行するために処理環境２９００によって用いられる例示的な方法を図３０に示す。ステップ３００５で、ＣＰＵ２９０５は、命令カウンタ２９１０、２９２０をリセット（クリア）する。ステップ３０１０で、期間Ｔの間、ＣＰＵ２９０５はプログラムの命令（図示せず）をバス２９０６を介して実行する。期間Ｔの経過後、ステップ３０１５で、ＣＰＵ２９０５は命令カウンタ２９１０、２９２０から値を読み出す。ステップ３０２０で、ＣＰＵ２９０５は、上述の期間Ｔに実行した命令タイプの関数として発熱レベルを推定する。言うまでもないが、この推定を行うためにＣＰＵ以外のデジタル論理回路を使用することができる。このパワー・マネジメント方式では、期間Ｔが、一般にプロセッサ内で熱が大きく変化するのに要する時間よりも相当短い期間であると想定している。発熱レベルを推定する一つの例では、事前に、各浮動小数点命令に平均発熱量Ｆを、各固定小数点命令に平均発熱量Ｉを割り当てる。次に、それぞれの命令カウンタの値に割り当てた平均発熱量を掛けて発熱レベルを推定する。例えば、計算は以下の式のようになる。
【０１０３】
推定発熱レベル＝（Ｆ）（ｆ）＋（Ｉ）（ｉ）
上記式において、ｆ、ｉは、命令カウンタ２９１０、２９２０のそれぞれのカウント値である。
【０１０４】
発熱レベルの推定値を求めたら、ＣＰＵ２９０５は、推定発熱レベルが所定の値を越えている場合、必要に応じて任意のプログラムの実行を続ける前に強制的にアイドル期間を設けるか、警告を発するなどによってこれを解消しようと試み得る。
【０１０５】
別の実施形態では、処理エレメント（ＰＥ）は処理ユニット（ＰＵ）といくつかの付加処理装置（ＡＰＵ）を備え、このＡＰＵの少なくとも１つは、実行中の命令の少なくとも一部を記録するように適合されている。例えば、ＡＰＵの命令セットが、事前にいくつかのタイプに分けられており、各タイプが、発熱の代用として用いられる異なる電力消費量に関連付けられている。ＡＰＵは、ある期間に実行された各命令タイプの量（すなわち電力情報）を記録し、この電力情報をＰＵに提供する。言い換えると、ＡＰＵは、そのＡＰＵが命令を実行する頻度（rate of execution）を監視する。別の実施形態では、ＡＰＵは、同じＰＥ内（または別のＰＥ内）の別のＡＰＵが命令を実行する頻度を監視する。次に、ＰＵは、ＡＰＵから提供された電力情報の関数としてパワー・マネジメントを実行する。例えば、ＰＵは、電力消費を低減させるために特定のＡＰＵをアイドル状態に移行させるように指示する。１つ以上のＡＰＵが自身の電力情報をＰＵまたは別のＡＰＵに提供し、その後このＰＵまたは別のＡＰＵが動的なパワー・マネジメントなどを実行することに留意されたい。すべてのＡＰＵが本発明の概念を実施する必要はない。
【０１０６】
動的にパワー・マネジメントを実行するＰＥの例示的な実施形態が図３１に示される。ＰＥ３１００は前述のＰＥと同様であり、同じ参照符号は同様の要素を表しており、そのような要素についてはここではさらに説明しない。例えば、図２のＰＵ２０３を参照されたい。ＰＥ３１００は、ＰＵ２０３といくつかのＡＰＵ（ＡＰＵ３１１０によって示す）を備える（この場合も、ＰＥが備えるＡＰＵの数は、所望の処理能力に応じて任意に設定できる）。ＡＰＵ３１１０は、４つの命令カウンタ３１１５、３１２０、３１２５、３１３０を備える。説明のため、ＡＰＵによって処理される各命令はベクトル命令かスカラ命令であるとする。ベクトル命令は、浮動小数点ベクトル命令か整数ベクトル命令のいずれかであり得る。同様に、各スカラ命令は、浮動小数点スカラ命令か整数スカラ命令のいずれかであり得る。このため、本例では４種類の命令が可能であり、タイプによって実行による発熱量が異なる。大きい順に挙げると、浮動小数点ベクトル命令（命令カウンタ３１１５にカウントが保持される）は電力を一番多く消費し、このため発熱量が最大であるとする。次に電力消費量が多いのは整数ベクトル命令（命令カウンタ３１２０にカウントが保持される）であり、浮動小数点スカラ命令（命令カウンタ３１２５にカウントが保持される）がこれに続く。最後に、整数スカラ命令（命令カウンタ３１３０にカウントが保持される）が一番発熱量が少ない。このため、ＡＰＵは、期間Ｔの間にこの４種類の命令が実行された回数を、命令カウンタを利用して記録する。期間Ｔの終了時に、ＡＰＵ３１１０の電力情報（すなわち４つの異なる命令のカウント）がＰＵ２０３に（例えばバス２２３に送られる割り込みを介して）提供され、ＡＰＵ３１１０は命令カウンタをリセットする。
【０１０７】
ＡＰＵ３１１０のより詳細な図が図３２に示される。この場合も、ＡＰＵ３１１０は、図４を参照して前述したＡＰＵ４０２と同様であり、このため同じ参照符号は同様の要素を表しており、そのような要素についてはここではさらに説明しない。前述のように、ＡＰＵ３１１０は４つの命令カウンタ３１１５、３１２０、３１２５、３１３０をさらに備える。これらの命令カウンタは、バス４０８を介して実行中の命令を監視し、それぞれの命令カウントを記憶している。命令カウンタは、要求が行われたとき、所定の時間間隔が満了したときなどの適切な条件が発生した場合、あるいは時間間隔の満了前でも割り込みを受け取った場合（特定のしきい値を越えた場合など）に、保持しているカウントをバス４０８に出力する。
【０１０８】
ＰＥ３１００で用いられる例示的なパワー・マネジメント方法が図３３に示される。ステップ３３０５〜３３２０はＡＰＵ３１１０によって実行され、ステップ３３３０および３３４５はＰＵ２０３によって実行される。ステップ３３０５で、ＡＰＵ３１１０は、命令カウンタ３１１５、３１２０、３１２５、３１３０をリセットする。ステップ３３１０で、期間Ｔの間、ＡＰＵ３１１０はプログラム（図示せず）の命令を実行する。ステップ３３１５で、期間Ｔの経過後、ＡＰＵ３１１０は、命令カウンタ３１１５、３１２０、３１２５、３１３０から値を読み出す。ステップ３３２０で、ＡＰＵ３１１０は、例えば割り込みを介して電力情報（すなわち４つの命令のカウント）をＰＵ２０３に（または別のＡＰＵに）提供する。ステップ３３３０で、ＰＵ２０３（または別のＡＰＵ）はこの命令カウントを受け取る。ステップ３３３５で、ＰＵ２０３（またはその他のＡＰＵ）は、期間Ｔの間に各命令タイプが実行された回数の関数として、ＡＰＵ３１１０の発熱レベルを推定する。例えば、発熱レベルの推定は、前述の式と同様の式を使用して行うことができ、この場合、４種類の命令はそれぞれ事前に、実験によって決定され得る特定の平均発熱レベルと関連付けられている。この場合、各命令タイプのカウント値にそれぞれの平均発熱値を掛けて、４種類の命令のそれぞれの結果を足していく。別の実施形態では、どの命令が実行されても平均発熱レベルが発生すると仮定され得るが、命令タイプ毎に異なって重み付けされる。例えば、浮動小数点ベクトル命令は、整数スカラ命令等の発熱量の４倍〜６倍の熱を発生すると仮定され得る。この場合、発熱レベルの推定は下記のようになる。
推定発熱レベル＝ΣＷkＩkＨ
ただし、Σはｋ＝１〜Ｋまでの総和を表す。
上記式において、Ｗｋは命令タイプｋの重み、Ｉｋは命令タイプｋのカウント、Ｈは平均発熱レベル、Ｋは命令タイプの数である。その他の熱源（例えばその他のＡＰＵ）からの固定レベルの推定発熱量を含むように、上記の式を適切に変更できることがわかるであろう。
【０１０９】
このため、ＰＵ２０３（またはその他のＡＰＵ）は、期間Ｔ中に４つの命令のカウントを評価して、ＡＰＵ３１１０がオーバーヒートしている可能性がないか調べる。これはステップ３３４０、３３４５に示されており、これらのステップでは、推定発熱レベルが所定値を越えている場合、ＰＵ２０３（またはその他のＡＰＵ）は、例えばＡＰＵ３１１０を所定期間の間アイドル・モードに移行させることで、ＡＰＵ３１１０の実行を動的に変更する。
【０１１０】
上述の期間Ｔについては、この期間は事前に定義しておいても、動的に決定してもよい。例えば、前述のＰＥ処理環境の場合は、期間Ｔは、対象となるＡＰＵが実行しているアプレットに関連付けられたタイム・バジェットによって決定されてもよい。別の例では、タイム・バジェットは、前述のようにソフトウェア・セルのヘッダ内に指定されていてもよい。
【０１１１】
このパワー・マネジメント方式は幾つかの利点を有する。第１に、異なる命令に分けることで、ＡＰＵが発している発熱量を表しているとされる使用中のエネルギー量をより正確に評価できるようになる。第２に、これは必須ではないが、各ＡＰＵを個々に監視して、必要に応じてＡＰＵを冷却させるために個別にアイドル状態に移行させることができる。
【０１１２】
上記以外のパワー・マネジメントの変形例も可能である点に留意されたい。例えば、図３４は、処理環境またはコンピューティング・モジュール用の動的な電源制御の別の形態を例示しており、この例では、いくつかのプロセッサが含まれており、それぞれが電力情報を提供している。図３４において、処理環境はＰＥ３４００として示され、ＰＵ３４１０と、ＡＰＵ３４１５、３４２０、３４２５、３４３０を備える。説明を簡単にするために、ＰＥの他の要素（例えばＤＭＡＣなど）は図示しない。ＰＵ３４１０は、ＡＰＵ３４１５から電力情報３４１６を、ＡＰＵ３４２０から電力情報３４２１を、ＡＰＵ３４２５から電力情報３４２６を、ＡＰＵ３４３０から電力情報３４３１をそれぞれ受け取る。ＰＵ３４１０は、ＡＰＵからこれらの電力情報を非同期的に受け取ると仮定する。別の実施形態では、電力情報が、ＡＰＵのうちの第１のＡＰＵから、ＡＰＵのうちの第２のＡＰＵに（ＰＵ３４１０を介するか、あるいは破線３４３２で示すより直接の接続を介して）提供され得る。この場合、第２のＡＰＵは、第１のＡＰＵの電力消費量の推定を含め、第１のＡＰＵのパワー・マネジメントを実行することが望ましい。
【０１１３】
図３５を参照すると、動的なパワー・マネジメントを実行するための例示的なフロー・チャートが示される。このフロー・チャートからわかるように、ＰＵ３４１０は、ＡＰＵを、個別かつ定期的に（例えばＴ２秒毎に）選択的に制御する。別法では、ＡＰＵのうちの１つが、残りのＡＰＵを選択的に制御してもよい。この例では、ステップ３５０５で、ＰＵ３４１０は、Ｔ２秒毎に、最後の時間間隔について受け取った熱情報を使用してＡＰＵの発熱レベルを推定する。ステップ３５１０で、ＰＵ３４１０は、所定の発熱レベルを越えているかどうかを判定する。越えていない場合、実行は終了する。しかし、ＡＰＵのうちの少なくとも１つの発熱量が過剰な場合、ステップ３５１５で、ＰＵ３４１０は発熱量の最も多いＡＰＵを選択して、アイドル・モードに移行させる。これは、同じ時間間隔において所定の発熱レベルを越えているＡＰＵが他にも存在するかに関わらず行われる。このため、ＰＵ３４１０は、発熱量がまだ所定のしきい値を越えているＡＰＵが他に存在する場合は、そのようなＡＰＵを選択的かつ段階的にアイドル状態に移行させることができる。
【０１１４】
上記の内容からわかるように、プロセッサ・アクセスの数とタイプを監視することによるパワー・マネジメントについて、命令のフェッチを使用して記載した。しかし、本発明はこれに限定されず、別の種類のプロセッサ・アクセスおよび／またはプロセッサ・アクセスの組合せを使用してもよい。例えば、システム用のパワー・マネジメントでは、所定の期間の間にプロセッサがアクセスするアドレス空間の監視を用いてもよい。例えば、バッテリ駆動のラップトップ・コンピュータにおいて、プロセッサが、所定の期間におけるハード・ディスク・サブシステムへのアクセスを監視して、現在の使用速度でのバッテリの推定残存電力量を示す指標をユーザに提示してもよい。
【０１１５】
このように、上記の内容は、単に本発明の原則を例示するものに過ぎず、当業者は、ここには明示的に記載されていないが、本発明の趣旨および範囲から逸脱することなくその原則を具体化する数多くの代替の構成を考案し得るであろうことを理解されよう。例えば、例示の実施形態では、熱管理を採り上げてパワー・マネジメントを記載したが、本発明の概念は、バッテリなどの携帯型電源の使用の節約など、その他のパワー・マネジメントの形態に直接的に拡張することができる。さらに、上記の実施形態では、本発明の概念を、従来の形態のパワー・マネジメントの使用に代わるものとして記載したが、本発明の概念はこれに限定されず、このような従来の形態（例えば温度センサ）と併用することができる。
【図面の簡単な説明】
【０１１６】
【図１】本発明によるコンピュータ・ネットワークのアーキテクチャ全体を示す図である。
【図２】本発明によるプロセッサ・エレメント（ＰＥ）の構造を示す図である。
【図３】本発明による広帯域エンジン（ＢＥ）の構造を示す図である。
【図４】本発明による付加処理装置（ＡＰＵ）の構造を示す図である。
【図５】本発明によるプロセッサ・エレメントと、ビジュアライザ（ＶＳ）と、光インターフェースとの構造を例示する図である。
【図６】本発明によるプロセッサ・エレメントの１つの組合せを例示する図である。
【図７】本発明によるプロセッサ・エレメントの別の組合せを例示する図である。
【図８】本発明によるプロセッサ・エレメントのさらに別の組合せを例示する図である。
【図９】本発明によるプロセッサ・エレメントのさらに別の組合せを例示する図である。
【図１０】本発明によるプロセッサ・エレメントのさらに別の組合せを例示する図である。
【図１１Ａ】本発明によるチップ・パッケージ内へ光インターフェースを統合した例を示す図である。
【図１１Ｂ】図１１Ａの光インターフェースを用いるプロセッサの１つの構成を示す図である。
【図１１Ｃ】図１１Ａの光インターフェースを用いるプロセッサの別の構成を示す図である。
【図１２Ａ】本発明によるメモリ・システムの構造を例示する図である。
【図１２Ｂ】本発明による第１の広帯域エンジンから第２の広帯域エンジンへのデータの書き込みを例示する図である。
【図１３】本発明によるプロセッサ・エレメント用の共用メモリの構造を示す図である。
【図１４Ａ】図１３に示すメモリ・バンクの一構造を例示する図である。
【図１４Ｂ】図１３に示すメモリ・バンクの別の構造を例示する図である。
【図１５】本発明によるＤＭＡＣの構造を例示する図である。
【図１６】本発明によるＤＭＡＣの代替の構造を例示する図である。
【図１７Ａ】本発明によるデータ同期オペレーションを例示する図である。
【図１７Ｂ】本発明によるデータ同期オペレーションを例示する図である。
【図１７Ｃ】本発明によるデータ同期オペレーションを例示する図である。
【図１７Ｄ】本発明によるデータ同期オペレーションを例示する図である。
【図１７Ｅ】本発明によるデータ同期オペレーションを例示する図である。
【図１７Ｆ】本発明によるデータ同期オペレーションを例示する図である。
【図１７Ｇ】本発明によるデータ同期オペレーションを例示する図である。
【図１７Ｈ】本発明によるデータ同期オペレーションを例示する図である。
【図１７Ｉ】本発明によるデータ同期オペレーションを例示する図である。
【図１７Ｊ】本発明によるデータ同期オペレーションを例示する図である。
【図１７Ｋ】本発明によるデータ同期オペレーションを例示する図である。
【図１７Ｌ】本発明によるデータ同期オペレーションを例示する図である。
【図１７Ｍ】本発明によるデータ同期オペレーションを例示する図である。
【図１７Ｎ】本発明によるデータ同期オペレーションを例示する図である。
【図１７Ｏ】本発明によるデータ同期オペレーションを例示する図である。
【図１８】本発明のデータ同期方式によるメモリ・ロケーションの様々な状態を例示する３つの状態のメモリ図である。
【図１９】本発明によるハードウェア・サンドボックス用のキー管理テーブルの構造を例示する図である。
【図２０】本発明によるハードウェア・サンドボックス用メモリ・アクセス・キーの格納方式を例示する図である。
【図２１】本発明によるハードウェア・サンドボックス用メモリ・アクセス管理テーブルの構造を例示する図である。
【図２２】図１９のキー管理テーブルと図２１のメモリ・アクセス管理テーブルとを用いてメモリ・サンドボックスにアクセスするステップを示すフロー・チャートである。
【図２３】本発明によるソフトウェア・セルの構造を例示する図である。
【図２４】本発明による、ＡＰＵへ遠隔処理命令を出すステップを示すフロー・チャートである。
【図２５】本発明による、ストリーミング・データ処理用専用パイプラインの構造を例示する図である。
【図２６Ａ】本発明によるストリーミング・データの処理時の図２５の専用パイプラインによって実行されるステップを示すフロー・チャートである。
【図２６Ｂ】本発明によるストリーミング・データの処理時の図２５の専用パイプラインによって実行されるステップを示すフロー・チャートである。
【図２７】本発明によるストリーミング・データ処理用の専用パイプラインの他の構造を例示する図である。
【図２８】本発明によるＡＰＵによるアプリケーションとデータの並列処理を調整するための絶対タイマー方式を例示する図である。
【図２９】本発明の原則に従ってパワー・マネジメントを実行するための例示的な実施形態を示す図である。
【図３０】本発明の原則に従う例示的なフロー・チャートである。
【図３１】本発明の原則に従ってパワー・マネジメントを実行するための別の例示的な実施形態を示す図である。
【図３２】本発明の原則に従う付加プロセッサ・ユニットの例示的な実施形態を示す図である。
【図３３】図３１の実施形態に用いられる例示的なフロー・チャートである。
【図３４】本発明の原則に従う処理環境の別の例示的な実施形態を示す図である。
【図３５】図３４の実施形態に用いられる例示的なフロー・チャートである。
【符号の説明】
【０１１７】
１０１  システム
１０１０  キー
１０２  セル
１０４  ネットワーク
１０６  クライアント
１０８  サーバー・コンピュータ
１１０４  光インターフェース
１１０８  バス
１１１８，１１２２  ポート
１１２６  光導波路
１１６０，１１６２，１１６４，１１６６，１１８２，１１８４，１１８６，１１８８，１１９０  光インターフェース
１２０６，１２３４，１２４２  コントロール
１２１２，１２４０  ユニット
１２２１  クロスバ交換機
１２３２  外部ポート
１２４４，１４１４，１４１６  バンク
１４０６  ブロック
１５０４  ノード
１６０７，１６０８  バス
１７２２  制御回路
１７２４，１７４２  制御論理回路
１７２６  ストレージ
１７２８，１７３１，１７３２，１７４６，１７５０  ロケーション
１７２９，１７５２，１７６０，１７６２  セグメント
１８８０  エンプティ状態
１８８２  フル状態
１８８４  ブロッキング状態
１９０２  キー管理テーブル
１９０６  キー
１９０８  マスク
２００６  格納位置
２００８，２０１０  セグメント
２０１２  キー
２１０２  アクセス管理テーブル
２１０６  アドレス
２１１０  キー
２１１０  キー・マスク
２２３  バス
２２７  高帯域メモリ接続部
２３０２，２３２０  セル
２３０８  ヘッダ
２３２２  インターフェース
２３３２  実行セクション
２３３４  リスト
２５２０，２５２２，２５２４，２５２６，２７０４  サンドボックス
２７０６  宛先サンドボックス
２９００  処理環境
２９０５  中央処理装置
２９１０，２９２０  命令カウンタ
２９０６  バス
３０１  広帯域エンジン
３１１  バス
３１３  広帯域メモリ接続部
３１７  インターフェース
３１９  外部バス
３１００，３４００  ＰＥ
２０３，３４１０  ＰＵ
３１１０，３４１５，３４２０，３４２５，３４３０  ＡＰＵ
３１１５，３１２０，３１２５，３１３０  命令カウンタ
３４１６，３４２１，３４３６，３４３１  電力情報
３４３２  接続
４０６  メモリ
４０８  内部バス
４１０  レジスタ
４１２  浮動小数点演算ユニット
４１４  整数演算ユニット
４２０  バス
５０６  パッケージ内の光インターフェース
５０８  エンジン
５１０  画像用キャッシュ
【図１】
2006107513.tif 000003
【図２】
2006107513.tif 000004
【図３】
2006107513.tif 000005
【図４】
2006107513.tif 000006
【図５】
2006107513.tif 000007
【図６】
2006107513.tif 000008
【図７】
2006107513.tif 000009
【図８】
2006107513.tif 000010
【図９】
2006107513.tif 000011
【図１０】
2006107513.tif 000012
【図１１Ａ】
2006107513.tif 000013
【図１１Ｂ】
2006107513.tif 000014
【図１１Ｃ】
2006107513.tif 000015
【図１２Ａ】
2006107513.tif 000016
【図１２Ｂ】
2006107513.tif 000017
【図１３】
2006107513.tif 000018
【図１４Ａ】
2006107513.tif 000019
【図１４Ｂ】
2006107513.tif 000020
【図１５】
2006107513.tif 000021
【図１６】
2006107513.tif 000022
【図１７Ａ】
2006107513.tif 000023
【図１７Ｂ】
2006107513.tif 000024
【図１７Ｃ】
2006107513.tif 000025
【図１７Ｄ】
2006107513.tif 000026
【図１７Ｅ】
2006107513.tif 000027
【図１７Ｆ】
2006107513.tif 000028
【図１７Ｇ】
2006107513.tif 000029
【図１７Ｈ】
2006107513.tif 000030
【図１７Ｉ】
2006107513.tif 000031
【図１７Ｊ】
2006107513.tif 000032
【図１７Ｋ】
2006107513.tif 000033
【図１７Ｌ】
2006107513.tif 000034
【図１７Ｍ】
2006107513.tif 000035
【図１７Ｎ】
2006107513.tif 000036
【図１７Ｏ】
2006107513.tif 000037
【図１８】
2006107513.tif 000038
【図１９】
2006107513.tif 000039
【図２０】
2006107513.tif 000040
【図２１】
2006107513.tif 000041
【図２２】
2006107513.tif 000042
【図２３】
2006107513.tif 000043
【図２４】
2006107513.tif 000044
【図２５】
2006107513.tif 000045
【図２６Ａ】
2006107513.tif 000046
【図２６Ｂ】
2006107513.tif 000047
【図２７】
2006107513.tif 000048
【図２８】
2006107513.tif 000049
【図２９】
2006107513.tif 000050
【図３０】
2006107513.tif 000051
【図３１】
2006107513.tif 000052
【図３２】
2006107513.tif 000053
【図３３】
2006107513.tif 000054
【図３４】
2006107513.tif 000055
【図３５】
2006107513.tif 000056