(57)【要約】【課題】複数のプロセッサにソフトウェアをロードするシステムおよび方法を提供すること。【解決手段】処理ユニット（ＰＵ）が、システム・メモリからファイルを検索し、その内部メモリにロードする。ＰＵは、ファイルのヘッダからプロセッサ・タイプを抽出し、このプロセッサ・タイプによって、そのファイルをＰＵまたはシナジスティック処理ユニット（ＳＰＵ）のどちらで実行しなければならないかが識別される。ＳＰＵがファイルを実行しなければならない場合には、ＰＵが、実行のためにＳＰＵにファイルをＤＭＡ転送する。一実施形態では、ファイルが、ＰＵコードとＳＰＵコードの両方を含む組み合わされたファイルである。この実施形態では、ＰＵが、ファイルに含まれる１つまたは複数のセクション・ヘッダを識別し、このセクション・ヘッダによって、組み合わされたファイル内に組み込まれたＳＰＵコードが示される。この実施形態では、ＰＵが、組み合わされたファイルからＳＰＵコードを抽出し、抽出されたコードを実行のためにＳＰＵにＤＭＡ転送する。【選択図】図５４
2005100405.tif 000002
【特許請求の範囲】
【請求項１】
異機種プロセッサ環境で複数のプロセッサにソフトウェアをロードする方法であって、
第１プロセッサを使用してファイルを検索するステップと、
前記ファイルに対応するプロセッサ識別子を検出するステップと、
前記プロセッサ識別子に基づいて、第２プロセッサに前記ファイルをロードするかどうかを決定するステップと、
前記決定に応答して、前記第２プロセッサに前記ファイルをロードするステップと
を含む、方法。
【請求項２】
前記第１プロセッサでプログラムを実行するステップと、
前記実行に応答して、前記第１プロセッサにランタイム・ローダをロードするステップと、
前記ランタイム・ローダを使用して、前記検索、前記検出、および前記決定を実行するステップと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記ファイルが、実行可能ファイルである、請求項１に記載の方法。
【請求項４】
前記第１プロセッサを使用して、前記第２プロセッサに、前記ファイルに対応するプラグインを送るステップと、
前記第１プロセッサを使用して、前記第２プロセッサに、前記プラグインに対応するデータを送るステップと、
前記第２プロセッサを使用して、前記プラグインを用いて前記データを処理するステップと
をさらに含む、請求項３に記載の方法。
【請求項５】
前記第２プロセッサを使用して、前記ファイルに対応するプラグインを検索するステップと、
前記第２プロセッサを使用して、前記プラグインに対応するデータを検索するステップと、
前記第２プロセッサを使用して、前記プラグインを用いて前記データを処理するステップと
をさらに含む、請求項３に記載の方法。
【請求項６】
前記実行可能ファイルがあるファイル・フォーマットであり、前記ファイル・フォーマットがＥＬＦフォーマット、ＸＣＯＦＦフォーマット、およびＰＥＣＯＦＦフォーマットからなる群から選択される、請求項３に記載の方法。
【請求項７】
前記プロセッサ識別子がマシン・タイプであり、前記決定が、さらに、
前記ファイルから前記マシン・タイプを抽出するステップと、
前記マシン・タイプを複数のマシン・タイプと比較するステップと
を含む、請求項１に記載の方法。
【請求項８】
前記ファイルが組み合わされたファイルの一部であり、前記プロセッサ・タイプが複数のセクション・ヘッダからの１つまたは複数のセクション・ヘッダに対応する、請求項１に記載の方法。
【請求項９】
前記ファイルが組み合わされたファイルの一部であり、前記組み合わされたファイルが前記第１プロセッサに対応する１つまたは複数のプロセッサ識別子を含む、請求項１に記載の方法。
【請求項１０】
前記第１プロセッサが処理ユニットであり、前記第２プロセッサが、シナジスティック処理ユニットである、請求項１に記載の方法。
【請求項１１】
異機種プロセッサ環境内の複数のプロセッサと、
前記複数のプロセッサによってアクセス可能なメモリと、
前記複数のプロセッサによってアクセス可能な１つまたは複数の不揮発性ストレージ・デバイスと、
複数のプロセッサにソフトウェアをロードするソフトウェア・ローディング・ツールと
を含み、
前記ソフトウェア・ローディング・ツールが、
第１プロセッサを使用して、前記不揮発性ストレージ・デバイスの１つからファイルを検索すること、
前記第１プロセッサを使用して、前記ファイルに対応するプロセッサ識別子を検出すること、
前記プロセッサ識別子に基づいて、第２プロセッサに前記ファイルをロードするかどうかを決定すること、
前記決定に応答して、前記第２プロセッサに前記ファイルをロードすること
に有効であるソフトウェア・コードを含む、
情報処理システム。
【請求項１２】
前記ソフトウェア・コードが、さらに、
前記第１プロセッサでプログラムを実行すること、
前記実行に応答して、前記第１プロセッサにランタイム・ローダをロードすること、
前記第１プロセッサに配置された前記ランタイム・ローダを使用して、前記検索、前記検出、および前記決定を実行すること
に有効である、請求項１１に記載の情報処理システム。
【請求項１３】
前記ファイルが、実行可能ファイルである、請求項１１に記載の情報処理システム。
【請求項１４】
前記ソフトウェア・コードが、さらに、
前記第１プロセッサを使用して、前記第２プロセッサに、前記ファイルに対応するプラグインを送ること、
前記第１プロセッサを使用して、前記第２プロセッサに、前記プラグインに対応するデータを送ること、
前記第２プロセッサを使用して、前記プラグインを用いて前記データを処理すること
に有効である、請求項１３に記載の情報処理システム。
【請求項１５】
前記ソフトウェア・コードが、さらに、
前記第２プロセッサを使用して、前記不揮発性ストレージ・デバイスの１つから前記ファイルに対応するプラグインを検索すること、
前記第２プロセッサを使用して、前記不揮発性ストレージ・デバイスの１つから、前記プラグインに対応するデータを検索すること、
前記第２プロセッサを使用して、前記プラグインを用いて前記データを処理すること
に有効である、請求項１３に記載の情報処理システム。
【請求項１６】
前記実行可能ファイルがあるファイル・フォーマットであり、前記ファイル・フォーマットがＥＬＦフォーマット、ＸＣＯＦＦフォーマット、およびＰＥＣＯＦＦフォーマットからなる群から選択される、請求項１３に記載の情報処理システム。
【請求項１７】
前記プロセッサ識別子がマシン・タイプであり、前記ソフトウェア・コードが、さらに、
前記ファイルから前記マシン・タイプを抽出すること、
前記マシン・タイプを複数のマシン・タイプと比較すること
に有効である、請求項１１に記載の情報処理システム。
【請求項１８】
前記ファイルが組み合わされたファイルの一部であり、前記プロセッサ・タイプが複数のセクション・ヘッダからの１つまたは複数のセクション・ヘッダに対応する、請求項１１に記載の情報処理システム。
【請求項１９】
前記ファイルが組み合わされたファイルの一部であり、前記組み合わされたファイルが前記第１プロセッサに対応する１つまたは複数のプロセッサ識別子を含む、請求項１１に記載の情報処理システム。
【請求項２０】
前記第１プロセッサが処理ユニットであり、前記第２プロセッサがシナジスティック処理ユニットである、請求項１１に記載の情報処理システム。
【請求項２１】
異機種プロセッサ環境で複数のプロセッサにソフトウェアをロードする、コンピュータ動作可能媒体に記憶されたコンピュータ・プログラム製品であって、
第１プロセッサを使用してファイルを検索する手段と、
前記ファイルに対応するプロセッサ識別子を検出する手段と、
前記プロセッサ識別子に基づいて、第２プロセッサに前記ファイルをロードするかどうかを決定する手段と、
前記決定に応答して、前記第２プロセッサに前記ファイルをロードする手段と
を含む、コンピュータ・プログラム製品。
【請求項２２】
前記第１プロセッサでプログラムを実行する手段と、
前記実行に応答して、前記第１プロセッサにランタイム・ローダをロードする手段と、
前記ランタイム・ローダを使用して、前記検索、前記検出、および前記決定を実行する手段と
をさらに含む、請求項２１に記載のコンピュータ・プログラム製品。
【請求項２３】
前記ファイルが、実行可能ファイルである、請求項２１に記載のコンピュータ・プログラム製品。
【請求項２４】
前記第１プロセッサを使用して、前記第２プロセッサに、前記ファイルに対応するプラグインを送る手段と、
前記第１プロセッサを使用して、前記第２プロセッサに、前記プラグインに対応するデータを送る手段と、
前記第２プロセッサを使用して、前記プラグインを用いて前記データを処理する手段と
をさらに含む、請求項２３に記載のコンピュータ・プログラム製品。
【請求項２５】
前記第２プロセッサを使用して、前記ファイルに対応するプラグインを検索する手段と、
前記第２プロセッサを使用して、前記プラグインに対応するデータを検索する手段と、
前記第２プロセッサを使用して、前記プラグインを用いて前記データを処理する手段と
をさらに含む、請求項２３に記載のコンピュータ・プログラム製品。
【請求項２６】
前記実行可能ファイルが、あるファイル・フォーマットであり、前記ファイル・フォーマットが、ＥＬＦフォーマット、ＸＣＯＦＦフォーマット、およびＰＥＣＯＦＦフォーマットからなる群から選択される、請求項２３に記載のコンピュータ・プログラム製品。
【請求項２７】
前記プロセッサ識別子がマシン・タイプであり、前記決定する手段が、さらに、
前記ファイルから前記マシン・タイプを抽出する手段と、
前記マシン・タイプを複数のマシン・タイプと比較する手段と
を含む、請求項２１に記載のコンピュータ・プログラム製品。
【請求項２８】
前記ファイルが組み合わされたファイルの一部であり、前記プロセッサ・タイプが、複数のセクション・ヘッダからの１つまたは複数のセクション・ヘッダに対応する、請求項２１に記載のコンピュータ・プログラム製品。
【請求項２９】
前記ファイルが組み合わされたファイルの一部であり、前記組み合わされたファイルが前記第１プロセッサに対応する１つまたは複数のプロセッサ識別子を含む、請求項２１に記載のコンピュータ・プログラム製品。
【請求項３０】
前記第１プロセッサが処理ユニットであり、前記第２プロセッサが、シナジスティック処理ユニットである、請求項２１に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサにソフトウェアをロードするシステムおよび方法に関する。より詳細には、本発明は、ファイルからプロセッサ・タイプを抽出し、プロセッサ・タイプに対応するプロセッサにファイルをロードするシステムおよび方法に関する。
【背景技術】
【０００２】
コンピュータ・システムは、ますます複雑になりつつある。コンピュータ産業は、一般にパーソナル・コンピュータ、ＰＤＡ、およびゲーム機など、コンピュータ・システムの性能を、１８カ月ごとに２倍にしている。コンピュータ産業がこの課題を達成するために、半導体産業で生産される集積回路は、性能が１８カ月ごとに２倍になる。コンピュータ・システムでは、集積回路のアーキテクチャに基づいて、特定の機能用の集積回路が使用される。２つの基本的なアーキテクチャが、１）マイクロプロセッサ・ベースのアーキテクチャおよび２）デジタル信号プロセッサ・ベースのアーキテクチャである。
【０００３】
マイクロプロセッサ・ベースのアーキテクチャを有する集積回路は、通常は、制御動作を処理するのに使用され、デジタル信号プロセッサ・ベースのアーキテクチャを有する集積回路は、通常は、信号処理機能（すなわち数学演算）を処理するように設計される。技術が進化するにつれて、コンピュータ産業および半導体産業では、コンピュータ・システム設計に両方のアーキテクチャまたはプロセッサ・タイプが使用されている。
【０００４】
ソフトウェアは、集積回路の進化と一緒に進化してきた、コンピュータ・システムのもう１つの要素である。ソフトウェア開発者は、コードを実行するプロセッサ・タイプに対応する形でコードを記述する。たとえば、プロセッサは、特定の個数のレジスタおよび特定の個数の算術論理ユニット（ＡＬＵ）を有し、それによって、ソフトウェア開発者は、レジスタおよびＡＬＵを最も効果的に使用するように自分のコードを設計する。
【０００５】
半導体産業は、複数のプロセッサ・タイプを単一のデバイスに組み込み、ソフトウェア開発者は、複数のプロセッサ・タイプ・アーキテクチャで実行されるコードを記述するので、どのファイルを特定のプロセッサ・タイプにロードするかを識別する課題が判明した。
【０００６】
実行可能ファイルでは、通常は、依存ファイルをメモリにロードするランタイム・ローダが使用される。しかし、ランタイム・ローダでは、ランタイム・ローダを実行しているものと同一のプロセッサが、依存ファイルを実行すると仮定される。しかし、マルチプロセッサ環境では、こうではない場合がある。さらに、異機種プロセッサ環境では、特定のファイルのコードが、特定のプロセッサ・タイプのためにフォーマットされ、異なるプロセッサ・タイプにコードがロードされた場合に、動作しない可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、プロセッサ・タイプをファイルに関連付け、関連するプロセッサ・タイプに対応するプロセッサにファイルをロードするシステムおよび方法が必要である。
【課題を解決するための手段】
【０００８】
ファイルのヘッダに含まれるプロセッサ識別子を抽出し、抽出されたプロセッサ識別子に対応するプロセッサにファイルをロードすることによって、前述の課題が解決されることがわかった。
【０００９】
コンピュータ・システムに、処理ユニット（ＰＵ）およびシナジスティック（synergistic）処理ユニット（ＳＰＵ）が含まれる。ＰＵが、ブートアップし、コンピュータ・システムを初期化するが、その間に、ＰＵが、オペレーティング・システムをロードする。オペレーティング・システムは、キーボードからの入力の認識、ディスプレイ画面への出力の送出、ディスク上のファイルおよびディレクトリの記憶、ディスク・ドライブおよびプリンタなどの周辺装置の制御など、基本的なタスクを実行する。オペレーティング・システムには、カーネルが含まれ、カーネルは、オペレーティング・システムの中央モジュールであり、メモリ管理、プロセス管理、タスク管理、およびディスク管理の責任を負う。
【００１０】
カーネルは、ＰＵプログラムをＰＵの内部メモリにロードする。ロード処理中に、カーネルは、ＰＵプログラムに対応するランタイム・ローダを識別する。ランタイム・ローダは、オブジェクトのロード、シンボルの解決、およびＰＵプログラムに対応する他のファイル（すなわち、データ、プログラム）のロードの責任を負う。カーネルは、ランタイム・ローダをＰＵの内部メモリにロードし、制御をランタイム・ローダに渡す。ランタイム・ローダは、ＳＰＵファイルなど、ＰＵプログラムが依存するファイルを識別する。ランタイム・ローダは、ＳＰＵファイルをＰＵの内部メモリにロードし、ＳＰＵファイルのヘッダからプロセッサ識別子を抽出する。たとえば、ＳＰＵファイルは、ＥＬＦフォーマットのファイルとすることができ、その場合に、このファイルのＥＬＦヘッダに、ＳＰＵにファイルを相関させるプロセッサ識別子である、「マシン・タイプＳＰＵ」が含まれる。
【００１１】
ランタイム・ローダは、ＳＰＵファイルのプロセッサ識別子に基づいて、ＳＰＵファイルをＳＰＵで実行しなければならないことを決定し、ＤＭＡコマンドを使用して、ＳＰＵファイルをＳＰＵに送る。ＳＰＵは、ＳＰＵファイルを受け取り、ＳＰＵのローカル・メモリに記憶する。ＳＰＵは、ＳＰＵファイルの実行を開始し、ＳＰＵランタイム・ローダを、その内部メモリにロードする。
【００１２】
ＳＰＵファイルの実行中に、ＳＰＵランタイム・ローダは、ＳＰＵファイルが依存するファイルを検索し、ロードする。たとえば、ＳＰＵファイルを、データの操作のためにプラグイン・モジュールを必要とするグラフィックス・プログラムとすることができる。ＳＰＵランタイム・ローダは、ＳＰＵファイルがプラグインを必要とすることを認識し、ＰＵに要求を送る。ＰＵは、要求を受け取り、システム・メモリからプラグインを検索する。ＰＵプログラムは、ＤＭＡコマンドを使用してプラグインをＳＰＵランタイム・ローダに送り、これによって、ＳＰＵランタイム・ローダが、プラグインをＳＰＵ内部メモリに記憶する。ＳＰＵファイルは、上述したものと同一の技法を使用してＰＵプログラムからデータを受け取ることもできる。
【００１３】
一実施形態で、ＳＰＵランタイム・ローダは、ＰＵプログラムからの介入なしで、システム・メモリからプラグインまたはデータあるいはその両方を独立に検索する。この実施形態では、ＳＰＵプログラムが、ＳＰＵがその処理タスクを完了したことを示す肯定応答メッセージをＰＵに送ることができる。
【００１４】
前述は、概要であり、したがって、必要によって、単純化、一般化、および詳細の省略が含まれる。その結果、当業者は、この概要が、例示にすぎず、決して制限することが意図されてないことを理解するであろう。請求項のみによって定義される、本発明の他の態様、発明的特徴、および長所は、下記に示された非制限的な詳細な説明で明らかになる。
【００１５】
添付図面を参照することによって、本発明をよりよく理解でき、その多数の目的、特徴、および長所が、当業者に明らかになる。異なる図面での同一の符号の使用は、類似する項目または同一の項目を示す。
【発明を実施するための最良の形態】
【００１６】
以下は、本発明の例の詳細な説明を提供するものであり、本発明自体を制限するものと解釈してはならない。そうではなく、任意の数の変形形態を、請求項で定義される発明の範囲に含めることができる。
【００１７】
本発明によるコンピュータ・システム１０１の全体的なアーキテクチャを、図１に示す。
【００１８】
この図からわかるように、システム１０１には、ネットワーク１０４が含まれ、ネットワーク１０４は、複数のコンピュータおよび計算デバイスに接続される。ネットワーク１０４は、ＬＡＮ、インターネットなどのグローバル・ネットワーク、または他のコンピュータ・ネットワークとすることができる。
【００１９】
ネットワーク１０４に接続されるコンピュータおよび計算デバイス（ネットワークの「メンバ」）には、たとえば、クライアント・コンピュータ１０６、サーバ・コンピュータ１０８、携帯情報端末（ＰＤＡ）１１０、デジタル・テレビジョン（ＤＴＶ）１１２、および他の有線または無線のコンピュータおよび計算デバイスが含まれる。ネットワーク１０４のメンバによって使用されるプロセッサは、同一の共通の計算モジュールから構成される。これらのプロセッサは、すべてが、同一のＩＳＡを有し、同一の命令セットに従って処理を実行することが好ましい。特定のプロセッサに含まれるモジュールの数は、そのプロセッサが必要とする処理能力に依存する。
【００２０】
たとえば、システム１０１のサーバ１０８は、クライアント１０６より多数のデータおよびアプリケーションの処理を実行するので、サーバ１０８には、クライアント１０６より多数の計算モジュールが含まれる。その一方で、ＰＤＡ１１０は、最小の量の処理を実行する。したがって、ＰＤＡ１１０には、最小の数の計算モジュールが含まれる。ＤＴＶ１１２は、クライアント１０６とサーバ１０８の間の、あるレベルの処理を実行する。したがって、ＤＴＶ１１２には、クライアント１０６とサーバ１０８の個数の間の個数の計算モジュールが含まれる。下記で述べるように、各計算モジュールに、ネットワーク１０４を介して伝送されるデータおよびアプリケーションの並列処理を実行する、処理コントローラおよび複数の同一の処理ユニットが含まれる。
【００２１】
このシステム１０１の同種構成によって、適応性、処理速度、および処理効率が容易にされる。システム１０１の各メンバは、１つまたは複数（またはある分数）の同一の計算モジュールを使用して処理を実行するので、データおよびアプリケーションの実際の処理を実行する特定のコンピュータまたは計算デバイスは、重要でない。さらに、特定のアプリケーションおよびデータの処理を、ネットワークのメンバの間で共用することができる。システム全体を通じてシステム１０１によって処理されるデータおよびアプリケーションを含むセルを一意に識別することによって、処理結果を、この処理がどこで行われるかに無関係に、処理を要求したコンピュータまたは計算デバイスに送ることができる。この処理を実行するデバイスは、共通の構造を有し、共通のＩＳＡを使用するので、プロセッサの間で互換性を達成するためのソフトウェアの追加層の計算の重荷が、回避される。このアーキテクチャおよびプログラミング・モデルによって、たとえばリアルタイムの、マルチメディア・アプリケーションを実行するのに必要な処理速度が容易にされる。
【００２２】
システム１０１によって容易にされる処理速度および効率をさらに活用するために、このシステムによって処理されるデータおよびアプリケーションは、一意に識別される、均一にフォーマットされたソフトウェア・セル１０２にパッケージ化される。各ソフトウェア・セル１０２に、アプリケーションおよびデータの両方が含まれ、あるいは含めることができる。各ソフトウェア・セルには、ネットワーク１０４およびシステム１０１全体を通じてセルをグローバルに識別するＩＤも含まれる。このソフトウェア・セルの構造の均一性およびソフトウェア・セルのネットワーク全体を通じての一意の識別によって、ネットワークの任意のコンピュータまたは計算デバイスでのアプリケーションおよびデータの処理が容易になる。たとえば、クライアント１０６は、ソフトウェア・セル１０２を定式化することができるが、クライアント１０６の限られた処理能力のゆえに、このソフトウェア・セルを処理のためにサーバ１０８に送る。したがって、ソフトウェア・セルを、ネットワーク上の処理リソースの可用性に基づく処理のために、ネットワーク１０４全体を通じて移行させることができる。
【００２３】
システム１０１のプロセッサおよびソフトウェア・セルの同種構造によって、現在の異機種ネットワークの問題の多くが回避される。たとえば、すべての命令セットを使用するすべてのＩＳＡでのアプリケーションの処理を可能にすることを試みる非効率的なプログラミング、たとえば、Ｊａｖａ（Ｒ）仮想マシンなどの仮想計算機が、回避される。したがって、システム１０１は、現在のネットワークよりはるかに効率的かつ効果的にブロードバンド処理を実施することができる。
【００２４】
ネットワーク１０４のすべてのメンバの基本処理モジュールが、処理ユニット（ＰＵ）である。図２に、ＰＵの構造を示す。この図からわかるように、ＰＥ２０１に、処理ユニット（ＰＵ）２０３、直接メモリ・アクセス・コントローラ（ＤＭＡＣ）２０５、および複数のシナジスティック処理ユニット（ＳＰＵ）すなわち、ＳＰＵ２０７、ＳＰＵ２０９、ＳＰＵ２１１、ＳＰＵ２１３、ＳＰＵ２１５、ＳＰＵ２１７、ＳＰＵ２１９、およびＳＰＵ２２１が含まれる。ローカルＰＥバス２２３によって、データおよびアプリケーションが、ＳＰＵ、ＤＭＡＣ２０５、およびＰＵ２０３の間で伝送される。ローカルＰＥバス２２３は、たとえば、普通のアーキテクチャを有するか、パケット交換網として実施することができる。パケット交換網としての実施形態は、より多くのハードウェアを必要とするが、使用可能な帯域幅が増える。
【００２５】
ＰＥ２０１は、デジタル論理を実施するさまざまな方法を使用して構成することができる。しかし、ＰＥ２０１は、シリコン基板上の相補型金属酸化膜半導体（ＣＭＯＳ）を使用する単一の集積回路として構成されることが好ましい。基板の代替の材料に、ガリウムヒ素、ガリウムアルミニウムヒ素、およびさまざまなドーパントを使用する他のいわゆるＩＩＩ−Ｂ族化合物が含まれる。ＰＥ２０１は、超伝導材料、たとえばＲＳＦＱ（rapid single-flux-quantum）論理を使用して実施することもできる。
【００２６】
ＰＥ２０１は、高帯域幅メモリ接続２２７を介して、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）２２５に密に関連する。ＤＲＡＭ２２５は、ＰＥ２０１のメイン・メモリとして機能する。ＤＲＡＭ２２５は、ダイナミック・ランダム・アクセス・メモリであることが好ましいが、ＤＲＡＭ２２５は、他の手段、たとえばスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、磁気ランダム・アクセス・メモリ（ＭＲＡＭ）、光メモリ、またはホログラフィック・メモリを使用して実施することができる。ＤＭＡＣ２０５は、ＤＲＡＭ２２５とＰＥ２０１のＳＰＵおよびＰＵの間のデータの転送を容易にする。下記でさらに述べるように、ＤＭＡＣ２０５は、ＳＰＵだけがそこにデータを書き込むことができ、ＳＰＵだけがそこからデータを読み取ることができる、ＤＲＡＭ２２５内の排他的な区域を、ＳＰＵごとに指定する。この排他的区域を、「サンドボックス」と称する。
【００２７】
ＰＵ２０３は、たとえば、データおよびアプリケーションの独立処理が可能な標準的なプロセッサとすることができる。動作中に、ＰＵ２０３は、ＳＰＵによるデータおよびアプリケーションの処理をスケジューリングし、調整する。ＳＰＵは、単一命令複数データ（ＳＩＭＤ）プロセッサであることが好ましい。ＰＵ２０３の制御の下で、ＳＰＵは、これらのデータおよびアプリケーションの処理を、並列に独立の形で実行する。ＤＭＡＣ２０５は、共用ＤＲＡＭ２２５に記憶されたデータおよびアプリケーションへのＰＵ２０３およびＳＰＵによるアクセスを制御する。ＰＥ２０１に、８つのＳＰＵが含まれることが好ましいが、必要な処理能力に応じて、ＰＵでこれより多数または少数のＳＰＵを使用することができる。また、ＰＥ２０１などの複数のＰＵを一緒に結合またはパッケージ化して、強化された処理能力を提供することができる。
【００２８】
たとえば、図３からわかるように、４つのＰＵを、たとえば、１つまたは複数のチップ・パッケージ内で一緒にパッケージ化するか結合して、ネットワーク１０４のメンバの単一のプロセッサを形成することができる。この構成を、ブロードバンド・エンジン（ＢＥ）と称する。図３からわかるように、ＢＥ３０１に、４つのＰＵすなわち、ＰＥ３０３、ＰＥ３０５、ＰＥ３０７、およびＰＥ３０９が含まれる。これらのＰＵの間の通信は、ＢＥバス３１１を介する。高帯域幅メモリ接続３１３によって、共用ＤＲＡＭ３１５とこれらのＰＵの間の通信が提供される。ＢＥバス３１１の代わりに、ＢＥ３０１のＰＵの間の通信を、ＤＲＡＭ３１５およびこのメモリ接続を介して行うことができる。
【００２９】
入出力インターフェース３１７および外部バス３１９によって、ブロードバンド・エンジン３０１とネットワーク１０４の他のメンバの間の通信がもたらされる。ＢＥ３０１の各ＰＵは、ＰＵのＳＰＵによって実行されるアプリケーションおよびデータの並列で独立の処理に似た形で、データおよびアプリケーションの並列で独立の処理を実行する。
【００３０】
図４に、ＳＰＵの構造を示す。ＳＰＵ４０２には、ローカル・メモリ４０６、レジスタ４１０、４つの浮動小数点ユニット４１２、および４つの整数ユニット４１４が含まれる。しかし、やはり、必要な処理能力に応じて、より多数またはより少数の浮動小数点ユニット４１２および整数ユニット４１４を使用することができる。好ましい実施形態では、ローカル・メモリ４０６に、１２８キロバイトのストレージが含まれ、レジスタ４１０の容量は、１２８×１２８ビットである。浮動小数点ユニット４１２は、３２０億浮動小数点演算毎秒（３２ＧＦＬＯＰＳ）の速度で動作することが好ましく、整数ユニット４１４は、３２０億演算毎秒（３２ＧＯＰＳ）の速度で動作することが好ましい。
【００３１】
ローカル・メモリ４０６は、キャッシュ・メモリではない。ローカル・メモリ４０６は、ＳＲＡＭとして構成されることが好ましい。ＳＰＵのキャッシュ・コヒーレンシ・サポートは、不要である。ＰＵは、ＰＵによって開始される直接メモリ・アクセスに関するキャッシュ・コヒーレンシ・サポートを必要とする場合がある。しかし、ＳＰＵによって開始される直接メモリ・アクセスまたは外部デバイスとのアクセスに関して、キャッシュ・コヒーレンシ・サポートは不要である。
【００３２】
ＳＰＵ４０２には、さらに、ＳＰＵとの間でアプリケーションおよびデータを伝送するバス４０４が含まれる。好ましい実施形態では、このバスが、１０２４ビット幅である。ＳＰＵ４０２に、さらに、内部バス４０８、４２０、および４１８が含まれる。好ましい実施形態では、バス４０８が、２５６ビットの幅を有し、ローカル・メモリ４０６とレジスタ４１０の間の通信をもたらす。バス４２０および４１８は、それぞれ、レジスタ４１０と浮動小数点ユニット４１２の間、およびレジスタ４１０と整数ユニット４１４の間の通信をもたらす。好ましい実施形態では、レジスタ４１０から浮動小数点ユニットまたは整数ユニットへのバス４１８および４２０の幅が、３８４ビットであり、浮動小数点ユニットまたは整数ユニットからレジスタ４１０へのバス４１８および４２０の幅が、１２８ビットである。レジスタ４１０から浮動小数点ユニットまたは整数ユニットへのバスの幅を、これらのユニットからレジスタ４１０へのバスの幅より広くすることによって、処理中のレジスタ４１０からのより多いデータ・フローに対処する。３ワードの最大値が、各計算に必要である。しかし、各計算の結果は、通常は１ワードのみである。
【００３３】
図５から１０に、ネットワーク１０４のメンバのプロセッサのモジュラー構造を示す。たとえば、図５からわかるように、プロセッサに、単一のＰＵ５０２を含めることができる。上記で述べたように、このＰＵに、通常は、ＰＵ、ＤＭＡＣ、および８つのＳＰＵが含まれる。各ＳＰＵに、ローカル・ストレージ（ＬＳ）が含まれる。その一方で、プロセッサに、ビジュアライザ（ＶＳ）５０５の構造を含めることができる。図５からわかるように、ＶＳ５０５に、ＰＵ５１２、ＤＭＡＣ５１４、および４つのＳＰＵすなわち、ＳＰＵ５１６、ＳＰＵ５１８、ＳＰＵ５２０、およびＳＰＵ５２２が含まれる。通常はＰＵの他の４つのＳＰＵによって占められるチップ・パッケージ内のスペースは、この場合には、ピクセル・エンジン５０８、イメージ・キャッシュ５１０、および陰極線管コントローラ（ＣＲＴＣ）５０４によって占められる。ＰＵ５０２またはＶＳ５０５について要求される通信の速度に応じて、光インターフェース５０６も、チップ・パッケージに含めることができる。
【００３４】
この標準化されたモジュラー構造を使用すると、プロセッサの多数の他の変形を簡単に効率的に構成することができる。たとえば、図６に示されたプロセッサには、２つのチップ・パッケージすなわち、ＢＥを含むチップ・パッケージ６０２および４つのＶＳを含むチップ・パッケージ６０４が含まれる。入出力６０６によって、チップ・パッケージ６０２のＢＥとネットワーク１０４の間のインターフェースがもたらされる。バス６０８によって、チップ・パッケージ６０２とチップ・パッケージ６０４の間の通信がもたらされる。入出力プロセッサ（ＩＯＰ）６１０によって、入出力６０６から出入りするデータの流れが制御される。入出力６０６は、特定用途向け集積回路（ＡＳＩＣ）として製造することができる。ＶＳからの出力は、ビデオ信号６１２である。
【００３５】
図７に、ネットワーク１０４の他のメンバ（または、ローカルに接続される他のチップ・パッケージ）への超高速通信をもたらすための２つの光インターフェース７０４および７０６を有するＢＥ７０２のチップ・パッケージを示す。ＢＥ７０２は、たとえば、ネットワーク１０４上のサーバとして機能することができる。
【００３６】
図８のチップ・パッケージには、２つのＰＥ８０２および８０４ならびに２つのＶＳ８０６および８０８が含まれる。入出力８１０によって、チップ・パッケージとネットワーク１０４の間のインターフェースがもたらされる。チップ・パッケージからの出力は、ビデオ信号である。この構成は、たとえば、グラフィックス・ワーク・ステーションとして機能することができる。
【００３７】
図９に、もう１つの構成を示す。この構成には、図８に示された構成の処理能力の半分が含まれる。２つのＰＵの代わりに、１つのＰＥ９０２が設けられ、２つのＶＳの代わりに、１つのＶＳ９０４が設けられる。入出力９０６は、図８に示された入出力の帯域幅の半分を有する。しかし、そのようなプロセッサも、グラフィックス・ワーク・ステーションとして機能することができる。
【００３８】
最後の構成を、図１０に示す。このプロセッサは、単一のＶＳ１００２および入出力１００４だけからなる。この構成は、たとえば、ＰＤＡとして機能することができる。
【００３９】
図１１に、ネットワーク１０４のプロセッサのチップ・パッケージへの光インターフェースの統合を示す。これらの光インターフェースは、光信号を電気信号に、電気信号を光信号に変換し、たとえば、ガリウムヒ素、アルミニウムガリウムヒ素、ガリウムおよび他の要素または化合物を含む、さまざまな材料から構成することができる。この図からわかるように、光インターフェース１１０４および１１０６は、ＢＥ１１０２のチップ・パッケージ上に製造される。ＢＥバス１１０８は、ＢＥ１１０２のＰＵ、すなわち、ＰＥ１１１０、ＰＥ１１１２、ＰＥ１１１４、ＰＥ１１１６およびこれらの光インターフェースの間の通信をもたらす。光インターフェース１１０４には、２つのポート、すなわち、ポート１１１８およびポート１１２０が含まれ、光インターフェース１１０６には、２つのポート、すなわち、ポート１１２２およびポート１１２４が含まれる。ポート１１１８、１１２０、１１２２、および１１２４は、それぞれ、光導波管１１２６、１１２８、１１３０、および１１３２に接続される。光信号は、これらの光導波管を介し、光インターフェース１１０４および１１０６のポートを介して、ＢＥ１１０２との間で伝送される。
【００４０】
複数のＢＥを、そのような光導波管および各ＢＥの４つの光ポートを使用して、さまざまな構成で一緒に接続することができる。たとえば、図１２を参照すると、複数のＢＥ、たとえば、ＢＥ１１５２、ＢＥ１１５４、およびＢＥ１１５６を、そのような光ポートを介して直列に接続することができる。この例では、ＢＥ１１５２の光インターフェース１１６６が、その光ポートを介してＢＥ１１５４の光インターフェース１１６０の光ポートに接続される。類似する形で、ＢＥ１１５４の光インターフェース１１６２の光ポートが、ＢＥ１１５６の光インターフェース１１６４の光ポートに接続される。
【００４１】
マトリックス構成を、図１３に示す。この構成では、各ＢＥの光インターフェースが、２つの他のＢＥに接続される。この図からわかるように、ＢＥ１１７２の光インターフェース１１８８の光ポートの１つが、ＢＥ１１７６の光インターフェース１１８２の光ポートに接続される。光インターフェース１１８８の他方の光ポートは、ＢＥ１１７８の光インターフェース１１８４の光ポートに接続される。類似する形で、ＢＥ１１７４の光インターフェース１１９０の１つの光ポートが、ＢＥ１１７８の光インターフェース１１８４の他方の光ポートに接続される。光インターフェース１１９０の他方の光ポートは、ＢＥ１１８０の光インターフェース１１８６の光ポートに接続される。このマトリックス構成は、類似する形で他のＢＥに拡張することができる。
【００４２】
直列構成またはマトリックス構成のいずれかを使用して、ネットワーク１０４のプロセッサを、任意の所望のサイズおよび能力から構成することができる。もちろん、追加ポートを、ＢＥの光インターフェースに追加するか、ＢＥ以外のより多数またはより少数のＰＵを有するプロセッサに追加して、他の構成を形成することができる。
【００４３】
図１４に、ＢＥのＤＲＡＭの制御システムおよび構造を示す。類似する制御システムおよび構造が、他のサイズを有し、より多数またはより少数のＰＵを含むプロセッサで使用される。この図からわかるように、クロスバ・スイッチによって、ＢＥ１２０１を含む４つのＰＵの各ＤＭＡＣ１２１０が、８つのバンク制御１２０６に接続される。各バンク制御１２０６は、ＤＲＡＭ１２０４の８つのバンク１２０８（図には４つだけを示す）を制御する。したがって、ＤＲＡＭ１２０４に、合計６４バンクが含まれる。好ましい実施形態では、ＤＲＡＭ１２０４が、６４メガバイトの容量を有し、各バンクが、１メガバイトの容量を有する。この好ましい実施形態の各バンク内の最小のアドレス可能単位は、１０２４ビットのブロックである。
【００４４】
ＢＥ１２０１には、スイッチ・ユニット１２１２も含まれる。スイッチ・ユニット１２１２によって、ＢＥ上の他のＳＰＵをＢＥ１２０１に密に結合して、ＤＲＡＭ１２０４にアクセスできるようになる。したがって、第２のＢＥを、第１のＢＥに密に結合することができ、各ＢＥの各ＳＰＵが、通常ＳＰＵからアクセス可能なメモリ位置の数の２倍をアドレッシングすることができる。第１ＢＥのＤＲＡＭまたは第２ＢＥのＤＲＡＭとの間でのデータの直接の読取または書込は、スイッチ・ユニット１２１２などのスイッチ・ユニットを介して行うことができる。
【００４５】
たとえば、図１５からわかるように、そのような書込を達成するために、第１ＢＥのＳＰＵ、たとえば、ＢＥ１２２２のＳＰＵ１２２０が、第２ＢＥのＤＲＡＭ、たとえば、ＢＥ１２２６のＤＲＡＭ１２２８（通常の場合のＢＥ１２２２のＤＲＡＭ１２２４ではなく）に書込コマンドを発行する。ＢＥ１２２２のＤＭＡＣ１２３０は、クロスバ・スイッチ１２２１を介してバンク制御１２３４にこの書込コマンドを送り、バンク制御１２３４は、バンク制御１２３４に接続された外部ポート１２３２にこのコマンドを送る。ＢＥ１２２６のＤＭＡＣ１２３８が、書込コマンドを受け取り、このコマンドをＢＥ１２２６のスイッチ・ユニット１２４０に送る。スイッチ・ユニット１２４０は、書込コマンドに含まれるＤＲＡＭアドレスを識別し、そのデータを、このアドレスへの記憶のために、ＢＥ１２２６のバンク制御１２４２を介してＤＲＡＭ１２２８のバンク１２４４に送る。したがって、スイッチ・ユニット１２４０は、ＤＲＡＭ１２２４とＤＲＡＭ１２２８の両方が、ＢＥ１２２６のＳＰＵにとって単一のメモリ空間として機能することを可能にする。
【００４６】
図１６に、ＤＲＡＭの６４バンクの構成を示す。これらのバンクは、８つの行、すなわち行１３０２、１３０４、１３０６、１３０８、１３１０、１３１２、１３１４、および１３１６と、８つの列、すなわち、列１３２０、１３２２、１３２４、１３２６、１３２８、１３３０、１３３２、および１３３４に編成される。各行が、バンク・コントローラによって制御される。したがって、各バンク・コントローラが、８メガバイトのメモリを制御する。
【００４７】
図１７および１８に、ＤＲＡＭの最小アドレス可能メモリ・ユニット、たとえば、１０２４ビットのブロックの記憶およびアクセスの異なる構成を示す。図１７では、ＤＭＡＣ１４０２が、単一のバンク１４０４に８つの１０２４ビット・ブロック１４０６を記憶する。その一方で、図１８では、ＤＭＡＣ１４１２が、１０２４ビットを含むデータのブロックを読み取り、書き込むが、これらのブロックは、２つのバンクすなわちバンク１４１４とバンク１４１６の間でインターリーブされる。したがって、これらのバンクのそれぞれに、１６ブロックのデータが含まれ、データの各ブロックに、５１２ビットが含まれる。このインターリーブによって、ＤＲＡＭのより高速のアクセスが容易にされ、このインターリーブは、ある種のアプリケーションの処理で有用である。
【００４８】
図１９に、ＰＥ内のＤＭＡＣ１５０４のアーキテクチャを示す。この図からわかるように、ＤＭＡＣ１５０６を含む構造的ハードウェアは、ＰＥ全体を通じて分散され、各ＳＰＵ１５０２が、ＤＭＡＣ１５０６の構造ノード１５０４に直接にアクセスできる。各ノードは、そのノードが直接のアクセスを有するＳＰＵによるメモリ・アクセスに適当な論理を実行する。
【００４９】
図２０に、ＤＭＡＣの代替実施形態すなわち、非分散アーキテクチャを示す。この場合に、ＤＭＡＣ１６０６の構造的ハードウェアが、集中化される。ＳＰＵ１６０２およびＰＵ１６０４は、ローカルＰＥバス１６０７を介してＤＭＡＣ１６０６と通信する。ＤＭＡＣ１６０６は、クロスバ・スイッチを介してバス１６０８に接続される。バス１６０８は、ＤＲＡＭ１６１０に接続される。
【００５０】
上記で述べたように、ＰＵの複数のＳＰＵのすべてが、共用ＤＲＡＭ内のデータに独立にアクセスすることができる。その結果、第１ＳＰＵは、そのローカル・ストレージ内の特定のデータを第２ＳＰＵが要求している時間中に、そのデータを操作することができる。データが、その時に共用ＤＲＡＭから第２ＳＰＵに供給される場合に、そのデータは、そのデータの値を変更する可能性がある処理を第１ＳＰＵが進行中であるために、無効化される可能性がある。したがって、第２プロセッサが、その時に共用ＤＲＡＭからデータを受け取る場合に、第２プロセッサは、誤った結果を生成する可能性がある。たとえば、データを、グローバル変数に関する特定の値とすることができる。第１プロセッサが、その処理中にその値を変更する場合に、第２プロセッサは、古い値を受け取る。したがって、共用ＤＲＡＭ内のメモリ位置との間のデータのＳＰＵによる読取および書込を同期化する方式が必要である。この方式は、別のＳＰＵが現在そのローカル・ストレージ内で操作しており、したがって、最新ではないメモリ位置からのデータの読取と、最新のデータが記憶されるメモリ位置へのデータの書込を防止しなければならない。
【００５１】
この問題を克服するために、ＤＲＡＭのアドレス可能なメモリ位置ごとに、メモリの追加セグメントをＤＲＡＭ内で割り振って、メモリ位置に記憶されたデータに関する状況情報を記憶する。この状況情報には、満杯／空（Ｆ／Ｅ）ビット、メモリ位置からのデータを要求するＳＰＵの識別（ＳＰＵ  ＩＤ）、および要求されたデータがそこに読み取らなければならないＳＰＵのローカル・ストレージのアドレス（ＬＳアドレス）が含まれる。ＤＲＡＭのアドレス可能メモリ位置は、任意のサイズとすることができる。好ましい実施形態では、このサイズが１０２４ビットである。
【００５２】
Ｆ／Ｅビットに１をセットすることによって、関連するメモリ位置に記憶されたデータが最新であることが示される。その一方で、Ｆ／Ｅビットに０をセットすることによって、関連するメモリ位置に記憶されたデータが最新でないことが示される。このビットに０がセットされている時にＳＰＵがデータを要求する場合には、ＳＰＵは、データを即座に読み取ることができない。この場合に、データを要求するＳＰＵを識別するＳＰＵ  ＩＤと、データが最新になった時にそのデータが読み取られる先のこのＳＰＵのローカル・ストレージ内のメモリ位置を識別するＬＳアドレスが、追加メモリ・セグメントに入力される。
【００５３】
追加メモリ・セグメントが、ＳＰＵのローカル・ストレージ内のメモリ位置ごとにも割り振られる。この追加メモリ・セグメントには、「ビジー・ビット」と称する１ビットが記憶される。ビジー・ビットは、ＤＲＡＭから検索される特定のデータの記憶のために、関連するＬＳメモリ位置を予約するのに使用される。ローカル・ストレージ内の特定のメモリ位置についてビジー・ビットに１がセットされている場合に、ＳＰＵは、これらの指定されたデータの書込だけにこのメモリ位置を使用することができる。その一方で、ローカル・ストレージ内の特定のメモリ位置についてビジー・ビットに０がセットされている場合に、ＳＰＵは、すべてのデータの書込にこのメモリ位置を使用することができる。
【００５４】
Ｆ／Ｅビット、ＳＰＵ  ＩＤ、ＬＳアドレス、およびビジー・ビットがＰＵの共用ＤＲＡＭとの間のデータの読取および書込を同期化するのに使用される形の例を、図２１から３５に示す。
【００５５】
図２１からわかるように、１つまたは複数のＰＵ、たとえば、ＰＥ１７２０が、ＤＲＡＭ１７０２と相互作用する。ＰＥ１７２０には、ＳＰＵ１７２２およびＳＰＵ１７４０が含まれる。ＳＰＵ１７２２には、制御ロジック１７２４が含まれ、ＳＰＵ１７４０には、制御ロジック１７４２が含まれる。ＳＰＵ１７２２には、ローカル・ストレージ１７２６も含まれる。このローカル・ストレージには、複数のアドレス可能メモリ位置１７２８が含まれる。ＳＰＵ１７４０には、ローカル・ストレージ１７４４が含まれ、このローカル・ストレージにも、複数のアドレス可能メモリ位置１７４６が含まれる。これらのアドレス可能メモリ位置のすべてが、１０２４ビットのサイズであることが好ましい。
【００５６】
メモリの追加セグメントが、各ＬＳアドレス可能メモリ位置に関連する。たとえば、メモリ・セグメント１７２９および１７３４が、それぞれローカル・メモリ位置１７３１および１７３２に関連し、メモリ・セグメント１７５２が、ローカル・メモリ位置１７５０に関連する。上記で述べた「ビジー・ビット」は、これらの追加メモリ・セグメントのそれぞれに記憶される。ローカル・メモリ位置１７３２は、この位置にデータが含まれることを示すために複数のＸと共に示されている。
【００５７】
ＤＲＡＭ１７０２に、メモリ位置１７０６および１７０８を含む、複数のアドレス可能メモリ位置１７０４が含まれる。これらのメモリ位置は、１０２４ビットのサイズであることが好ましい。メモリの追加セグメントも、これらのメモリ位置のそれぞれに関連する。たとえば、追加メモリ・セグメント１７６０が、メモリ位置１７０６に関連し、追加メモリ・セグメント１７６２が、メモリ位置１７０８に関連する。各メモリ位置に記憶されるデータに関する状況情報は、そのメモリ位置に関連するメモリ・セグメントに記憶される。この状況情報に、上記で述べた、Ｆ／Ｅビット、ＳＰＵ  ＩＤ、およびＬＳアドレスが含まれる。たとえば、メモリ位置１７０８に関して、この状況情報に、Ｆ／Ｅビット１７１２、ＳＰＵ  ＩＤ１７１４、およびＬＳアドレス１７１６が含まれる。
【００５８】
状況情報およびビジー・ビットを使用して、ＰＵまたはＰＵのグループのＳＰＵの間での共用ＤＲＡＭとの間のデータの同期化読取および書込を達成することができる。
【００５９】
図２２に、ＳＰＵ１７２２のＬＳメモリ位置１７３２からＤＲＡＭ１７０２のメモリ位置１７０８へのデータの同期化書込の開始を示す。ＳＰＵ１７２２の制御１７２４が、このデータの同期化書込を開始する。メモリ位置１７０８は、空なので、Ｆ／Ｅビット１７１２には０がセットされる。その結果、ＬＳ位置１７３２のデータを、メモリ位置１７０８に書き込むことができる。その一方で、このビットに１がセットされ、メモリ位置１７０８が満杯であり、最新の有効なデータが含まれることが示される場合には、制御１７２４が、エラー・メッセージを受け取り、このメモリ位置へのデータの書込を禁じられる。
【００６０】
メモリ位置１７０８へのデータの成功裡の同期化書込の結果を、図２３に示す。書き込まれたデータが、メモリ位置１７０８に記憶され、Ｆ／Ｅビット１７１２に１がセットされる。このセットによって、メモリ位置１７０８が満杯であること、このメモリ位置のデータが、最新であり有効であることが示される。
【００６１】
図２４に、ＤＲＡＭ１７０２のメモリ位置１７０８からローカル・ストレージ１７４４のＬＳメモリ位置１７５０へのデータの同期化読取の開始を示す。この読取を開始するために、ＬＳメモリ位置１７５０のメモリ・セグメント１７５２内のビジー・ビットに、１がセットされて、このメモリ位置がこのデータのために予約される。このビジー・ビットに１をセットすることによって、ＳＰＵ１７４０が、このメモリ位置に他のデータを記憶しなくなる。
【００６２】
図２５からわかるように、制御ロジック１７４２は、次に、ＤＲＡＭ１７０２のメモリ位置１７０８に関する同期化読取コマンドを発行する。このメモリ位置に関連するＦ／Ｅビット１７１２に、１がセットされているので、メモリ位置１７０８に記憶されたデータは、最新であり有効であるとみなされる。その結果、メモリ位置１７０８からＬＳメモリ位置１７５０へのデータの転送に備えて、Ｆ／Ｅビット１７１２に０がセットされる。このセットを、図２６に示す。このビットに０をセットすることによって、このデータの読取の後に、メモリ位置１７０８のデータが無効になることが示される。
【００６３】
図２７からわかるように、次に、メモリ位置１７０８のデータが、メモリ位置１７０８からＬＳメモリ位置１７５０に読み取られる。図２８に、最終的な状態を示す。メモリ位置１７０８のデータのコピーが、ＬＳメモリ位置１７５０に記憶される。Ｆ／Ｅビット１７１２に０をセットして、メモリ位置１７０８のデータが無効であることを示す。この無効性は、ＳＰＵ１７４０によって行われる、このデータに対する変更の結果である。メモリ・セグメント１７５２のビジー・ビットにも０をセットする。このセットは、ＬＳメモリ位置１７５０が、現在、あらゆる目的についてＳＰＵ１７４０から使用可能である、すなわち、このＬＳメモリ位置は、もはや、特定のデータの受取を待っている予約済み状態ではないことを示す。したがって、ＬＳメモリ位置１７５０は、現在、あらゆる目的についてＳＰＵ１７４０によってアクセス可能である。
【００６４】
図２９から３５に、ＤＲＡＭ１７０２のメモリ位置のＦ／Ｅビットに０がセットされて、このメモリ位置のデータが最新でも有効でもないことが示される時の、ＤＲＡＭ１７０２のメモリ位置、たとえば、メモリ位置１７０８から、ＳＰＵのローカル・ストレージのＬＳメモリ位置、たとえばローカル・ストレージ１７４４のＬＳメモリ位置１７５２へのデータの同期化された読取を示す。図２９からわかるように、この転送を開始するために、ＬＳメモリ位置１７５０のメモリ・セグメント１７５２のビジー・ビットに１をセットして、このデータの転送のためにこのＬＳメモリ位置を予約する。図３０からわかるように、次に、制御ロジック１７４２が、ＤＲＡＭ１７０２のメモリ位置１７０８に関する同期化読取コマンドを発行する。このメモリ位置に関連するＦ／Ｅビット、Ｆ／Ｅビット１７１２に、０がセットされているので、メモリ位置１７０８に記憶されているデータは、無効である。その結果、信号が、制御ロジック１７４２に送られて、このメモリ位置からのデータの直接読取が阻止される。
【００６５】
図３１からわかるように、この読取コマンドのＳＰＵ  ＩＤ１７１４およびＬＳアドレス１７１６が、次に、メモリ・セグメント１７６２に書き込まれる。この場合に、ＳＰＵ１７４０のＳＰＵ  ＩＤおよびＬＳメモリ位置１７５０のＬＳメモリ位置が、メモリ・セグメント１７６２に書き込まれる。したがって、メモリ位置１７０８のデータが最新になり、このＳＰＵ  ＩＤおよびＬＳメモリ位置が、最新のデータが送られる先の位置を決定するのに使用される。
【００６６】
メモリ位置１７０８のデータは、ＳＰＵがデータをこのメモリ位置に書き込む時に、有効で最新になる。たとえば、ＳＰＵ１７２２のメモリ位置１７３２からメモリ位置１７０８へのデータの同期化書込を、図３２に示す。これらのデータのこの同期化書込は、このメモリ位置のＦ／Ｅビット１７１２に０がセットされているので許可される。
【００６７】
図３３からわかるように、この書込に続いて、メモリ位置１７０８のデータが、最新で有効になる。したがって、メモリ・セグメント１７６２からのＳＰＵ  ＩＤ１７１４およびＬＳアドレス１７１６が、即座に、メモリ・セグメント１７６２から読み取られ、この情報が、このセグメントから削除される。メモリ位置１７０８のデータの直接読み取りに備えて、Ｆ／Ｅビット１７１２にも０がセットされる。図３４からわかるように、ＳＰＵ  ＩＤ１７１４およびＬＳアドレス１７１６を読み取る際に、この情報が、即座に、メモリ位置１７０８の有効なデータをＳＰＵ１７４０のＬＳメモリ位置１７５０に読み取るのに使用される。最終的な状態を、図３５に示す。この図には、メモリ位置１７５０にコピーされたメモリ位置１７０８からの有効なデータ、０をセットされたメモリ・セグメント１７５２内のビジー・ビット、および０をセットされたメモリ・セグメント１７６２内のＦ／Ｅビット１７１２が示されている。このビジー・ビットに０をセットすることによって、ＬＳメモリ位置１７５０に、ＳＰＵ１７４０がどの目的でもアクセスできるようになる。このＦ／Ｅビットに０をセットすることによって、メモリ位置１７０８のデータが、もはや最新でなく、有効でないことが示される。
【００６８】
図３６に、メモリ位置に対応するメモリ・セグメントに記憶されたＦ／Ｅビット、ＳＰＵ  ＩＤ、およびＬＳアドレスの状態に基づくＤＲＡＭのメモリ位置の、上述した動作およびさまざまな状態を要約する。メモリ位置は、３つの状態を有することができる。この３つの状態は、Ｆ／Ｅビットに０がセットされ、ＳＰＵ  ＩＤまたはＬＳアドレスの情報が提供されない空状態３２８０、Ｆ／Ｅビットに１がセットされ、ＳＰＵ  ＩＤまたはＬＳアドレスの情報が提供されない満杯状態３２８２、およびＦ／Ｅビットに０がセットされ、ＳＰＵ  ＩＤおよびＬＳアドレスの情報が提供されるブロッキング状態３２８４である。
【００６９】
この図からわかるように、空状態３２８０では、同期化書込動作が、許可され、満杯状態３２８２への推移をもたらす。しかし、同期化読取動作は、メモリ位置が空状態である時に、メモリ位置のデータが最新でないので、ブロッキング状態３２８４への推移をもたらす。
【００７０】
満杯状態３２８２では、同期化読取動作が、許可され、空状態３２８０への推移をもたらす。その一方で、満杯状態３２８２での同期化書込動作は、禁じられて、有効なデータの上書きが防がれる。そのような書込動作がこの状態で試みられる場合に、状態変化は発生せず、エラー・メッセージが、ＳＰＵの対応する制御ロジックに送られる。
【００７１】
ブロッキング状態３２８４では、メモリ位置へのデータの同期化書込が、許可され、空状態３２８０への推移をもたらす。その一方で、ブロッキング状態３２８４での同期化読取動作は、禁じられて、この状態をもたらした、以前の同期化読取動作との衝突が防がれる。ブロッキング状態３２８４で同期化読取動作が試みられる場合に、状態変化は発生せず、エラー・メッセージが、ＳＰＵの対応する制御ロジックに送られる。
【００７２】
共用ＤＲＡＭとの間でのデータの同期化された読取および書込に関して上で示した方式は、外部デバイスからデータを読み取り、これにデータを書き込むために、通常はプロセッサによって割り当てられた計算リソースを除去するのに使用することもできる。この入出力（Ｉ／Ｏ）機能を、ＰＵによって実行することができる。しかし、この同期化方式の修正を使用して、適当なプログラムを実行するＳＰＵが、この機能を実行することができる。たとえば、この方式を使用して、外部デバイスによって開始される入出力インターフェースからのデータの伝送に関する割込み要求を受け取るＰＵが、この要求の処理をこのＳＰＵに委譲することができる。ＳＰＵは、入出力インターフェースに同期化書込コマンドを発行する。このインターフェースは、データをＤＲＡＭに書き込めることを外部デバイスに知らせる。次に、ＳＰＵは、ＤＲＡＭに同期化読取コマンドを発行して、ＤＲＡＭの関連するメモリ空間をブロッキング状態に設定する。ＳＰＵは、データの受け取りを必要とするＳＰＵのローカル・ストレージのメモリ位置のビジー・ビットに１をセットする。ブロッキング状態で、ＤＲＡＭの関連メモリ空間に関連する追加メモリ・セグメントに、ＳＰＵのＩＤおよびＳＰＵのローカル・ストレージの関連メモリ位置のアドレスが含まれる。外部デバイスは、次に、同期化書込コマンドを発行して、データを直接にＤＲＡＭの関連メモリ空間に書き込む。このメモリ空間は、ブロッキング状態なので、データが、この空間から、追加メモリ・セグメント内で識別されるＳＰＵのローカル・ストレージのメモリ位置に即座に読み取られる。このメモリ位置のビジー・ビットに、０をセットする。外部デバイスがデータの書込を完了する時に、ＳＰＵは、伝送が完了したことをＰＵに知らせる。
【００７３】
したがって、この方式を使用して、外部デバイスからのデータ転送を、ＰＵに対する計算負荷を最小にして処理することができる。しかし、この機能を委譲されたＳＰＵは、ＰＵに割込み要求を発行することができなければならず、外部デバイスは、ＤＲＡＭに直接にアクセスできなければならない。
【００７４】
各ＰＵのＤＲＡＭに、複数の「サンドボックス」が含まれる。サンドボックスによって、それを超えて特定のＳＰＵまたはＳＰＵの組がデータを読み書きすることができない、共用ＤＲＡＭの区域が定義される。このサンドボックスは、データが別のＳＰＵによって処理されることによる、あるＳＰＵによって処理されるデータの破壊に対するセキュリティを提供する。サンドボックスによって、ソフトウェア・セルがＤＲＡＭ全体でのデータを破壊する可能性なしで、特定のサンドボックスにネットワーク１０４からソフトウェア・セルをダウンロードできるようにもなる。本発明では、サンドボックスが、ＤＲＡＭおよびＤＭＡＣのハードウェアで実施される。これらのサンドボックスを、ソフトウェアではなくこれらのハードウェアで実施することによって、速度およびセキュリティの利益が得られる。
【００７５】
ＳＰＵのＰＵが、ＳＰＵに割り当てられたサンドボックスを制御する。ＰＵは、通常、オペレーティング・システムなどの信頼されるプログラムだけを実行するので、この方式は、セキュリティを危険にさらさない。この方式によれば、ＰＵは、キー制御テーブルを構築し、維持する。このキー制御テーブルを、図３７に示す。この図からわかるように、キー制御テーブル３３０２の各項目に、ＳＰＵの識別（ＩＤ）３３０４、そのＳＰＵのＳＰＵキー３３０６、およびキー・マスク３３０８が含まれる。このキー・マスクの使用を、下記で説明する。キー制御テーブル３３０２は、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）などの比較的高速のメモリに記憶されることが好ましく、ＤＭＡＣに関連する。キー制御テーブル３３０２の項目は、ＰＵによって制御される。ＳＰＵが、ＤＲＡＭの特定の記憶位置へのデータの書込またはそれからのデータの読取を要求する時に、ＤＭＡＣは、キー制御テーブル３３０２内でそのＳＰＵに割り当てられたＳＰＵキー３３０６を、その記憶位置に関連するメモリ・キーに対して評価する。
【００７６】
図３８からわかるように、専用メモリ・セグメント３４１０が、ＤＲＡＭ３４０２の各アドレス可能記憶位置３４０６に割り当てられる。記憶位置のメモリ・アクセス・キー３４１２は、この専用メモリ・セグメントに記憶される。上記で述べたように、やはり各アドレス可能記憶位置３４０６に関連するもう１つの追加の専用メモリ・セグメント３４０８に、記憶位置へのデータの書込およびそれからのデータの読取に関する同期化情報が記憶される。
【００７７】
動作中に、ＳＰＵは、ＤＭＡＣにＤＭＡコマンドを発行する。このコマンドには、ＤＲＡＭ３４０２の記憶位置３４０６のアドレスが含まれる。このコマンドを実行する前に、ＤＭＡＣは、要求元ＳＰＵのキー３３０６を、ＳＰＵのＩＤ３３０４を使用してキー制御テーブル３３０２で検索する。その後、ＤＭＡＣは、要求元ＳＰＵのＳＰＵキー３３０６を、ＳＰＵがアクセスを求めるＤＲＡＭの記憶位置に関連する専用メモリ・セグメント３４１０に記憶されたメモリ・アクセス・キー３４１２と比較する。この２つのキーが一致しない場合には、ＤＭＡコマンドは実行されない。その一方で、この２つのキーが一致する場合には、ＤＭＡコマンドが進行し、要求されたメモリ・アクセスが実行される。
【００７８】
代替実施形態を、図３９に示す。この実施形態では、ＰＵが、メモリ・アクセス制御テーブル３５０２も維持する。メモリ・アクセス制御テーブル３５０２には、ＤＲＡＭ内のサンドボックスごとに１項目が含まれる。図３９の特定の例では、ＤＲＡＭに、６４個のサンドボックスが含まれる。メモリ・アクセス制御テーブル３５０２の各項目に、サンドボックスの識別（ＩＤ）３５０４、基底メモリ・アドレス３５０６、サンドボックス・サイズ３５０８、メモリ・アクセス・キー３５１０、およびアクセス・キー・マスク３５１２が含まれる。基底メモリ・アドレス３５０６によって、特定のメモリ・サンドボックスが始まる、ＤＲＡＭ内のアドレスが提供される。サンドボックス・サイズ３５０８は、サンドボックスのサイズを提供し、したがって、特定のサンドボックスの終点を提供する。
【００７９】
図４０は、キー制御テーブル３３０２およびメモリ・アクセス制御テーブル３５０２を使用してＤＭＡコマンドを実行するステップの流れ図である。ステップ３６０２で、ＳＰＵが、サンドボックス内の１つまたは複数の特定のメモリ位置へのアクセスに関するＤＭＡコマンドをＤＭＡＣに発行する。このコマンドには、アクセスが要求される特定のサンドボックスを識別するサンドボックスＩＤ３５０４が含まれる。ステップ３６０４で、ＤＭＡＣが、ＳＰＵのＩＤ３３０４を使用して、キー制御テーブル３３０２内の要求元ＳＰＵのキー３３０６を検索する。ステップ３６０６で、ＤＭＡＣが、コマンドでサンドボックスＩＤ３５０４を使用して、そのサンドボックスに関連するメモリ・アクセス・キー３５１０をメモリ・アクセス制御テーブル３５０２内で検索する。ステップ３６０８で、ＤＭＡＣが、要求元ＳＰＵに割り当てられたＳＰＵキー３３０６を、サンドボックスに関連するアクセス・キー３５１０と比較する。ステップ３６１０で、２つのキーが一致するかどうかを判定する。２つのキーが一致しない場合には、処理はステップ３６１２に移り、ＤＭＡコマンドが、処理されず、エラー・メッセージが、要求元のＳＰＵまたはＰＵのいずれかあるいはその両方に送られる。その一方で、ステップ３６１０で２つのキーが一致する場合に、処理はステップ３６１４に進み、ＤＭＡＣがＤＭＡコマンドを実行する。
【００８０】
ＳＰＵキーのキー・マスクおよびメモリ・アクセス・キーによって、このシステムにより高い柔軟性が与えられる。キーのキー・マスクによって、マスクされるビットがワイルドカードに変換される。たとえば、ＳＰＵキー３３０６に関連するキー・マスク３３０８が、たとえば、キー・マスク３３０８内の最後の２ビットに１をセットすることによって、その最後の２ビットに「マスク」をセットされる場合に、ＳＰＵキーは、１または０のいずれかとすることができ、それでもメモリ・アクセス・キーと一致する。たとえば、ＳＰＵキーを、１０１０とすることができる。このＳＰＵキーによって、通常は、１０１０のアクセス・キーを有するサンドボックスだけにアクセスできる。しかし、このＳＰＵキーのＳＰＵキー・マスクに、０００１がセットされる場合に、このＳＰＵキーを使用して、１０１０または１０１１のいずれかのアクセス・キーを有するサンドボックスへのアクセスを得ることができる。同様に、マスクに０００１をセットされたアクセス・キー１０１０に、１０１０または１０１１のいずれかのＳＰＵキーを有するＳＰＵによってアクセスすることができる。ＳＰＵキー・マスクとメモリ・キー・マスクの両方を、同時に使用することができるので、サンドボックスへのＳＰＵによるアクセス可能性の多数の変形形態を確立することができる。
【００８１】
本発明は、システム１０１のプロセッサの新しいプログラミング・モデルも提供する。このプログラミング・モデルでは、ソフトウェア・セル１０２が使用される。これらのセルを、処理のためにネットワーク１０４上のどのプロセッサにも伝送することができる。この新しいプログラミング・モデルでは、システム１０１の独自のモジュラー・アーキテクチャおよびシステム１０１のプロセッサも使用される。
【００８２】
ソフトウェア・セルは、ＳＰＵのローカル・ストレージから、ＳＰＵによって直接に処理される。ＳＰＵは、ＤＲＡＭ内のデータまたはプログラムに直接には作用しない。ＤＲＡＭ内のデータおよびプログラムは、ＳＰＵがこれらのデータおよびプログラムを処理する前に、ＳＰＵのローカル・ストレージに読み込まれる。したがって、ＳＰＵのローカル・ストレージに、これらのプログラムを実行するための、プログラム・カウンタ、スタック、および他のソフトウェア要素が含まれる。ＰＵは、直接メモリ・アクセス（ＤＭＡ）コマンドをＤＭＡＣに発行することによって、ＳＰＵを制御する。
【００８３】
ソフトウェア・セル１０２の構造を、図４１に示す。この図からわかるように、ソフトウェア・セル、たとえば、ソフトウェア・セル３７０２には、ルーティング情報セクション３７０４および本体３７０６が含まれる。ルーティング情報セクション３７０４に含まれる情報は、ネットワーク１０４のプロトコルに依存する。ルーティング情報セクション３７０４には、ヘッダ３７０８、宛先ＩＤ３７１０、ソースＩＤ３７１２、および応答ＩＤ３７１４が含まれる。宛先ＩＤには、ネットワーク・アドレスが含まれる。たとえば、ＴＣＰ／ＩＰプロトコルの下で、ネットワーク・アドレスは、インターネット・プロトコル（ＩＰ）アドレスである。宛先ＩＤ３７１０には、さらに、処理のためにセルが送られなければならないＰＵおよびＳＰＵの識別が含まれる。ソースＩＤ３７１２には、ネットワーク・アドレスが含まれ、宛先ＰＵおよびＳＰＵが、必要な場合にセルに関する追加情報を得られるようにするために、セルが発するＰＵおよびＳＰＵが識別される。応答ＩＤ３７１４には、ネットワーク・アドレスが含まれ、セルに関する照会およびセルの処理の結果を向けなければならないＰＵおよびＳＰＵが識別される。
【００８４】
セル本体３７０６には、ネットワークのプロトコルと独立の情報が含まれる。図４１の展開された部分に、セル本体３７０６の詳細を示す。セル本体３７０６のヘッダ３７２０によって、セル本体の先頭が識別される。セル・インターフェース３７２２に、セルの使用に必要な情報が含まれる。この情報には、グローバル一意ＩＤ３７２４、必要なＳＰＵ数３７２６、サンドボックス・サイズ３７２８、および前セルＩＤ３７３０が含まれる。
【００８５】
グローバル一意ＩＤ３７２４によって、ネットワーク１０４全体を通じてソフトウェア・セル３７０２が一意に識別される。グローバル一意ＩＤ３７２４は、ソースＩＤ３７１２に基づいて、たとえば、ソースＩＤ３７１２内のＰＵまたはＳＰＵの一意の識別と、ソフトウェア・セル３７０２の生成または伝送の日時に基づいて生成される。必要なＳＰＵ数３７２６によって、セルを実行するのに必要なＳＰＵの最小個数が提供される。サンドボックス・サイズ３７２８によって、セルを実行するのに必要である、必要なＳＰＵの関連するＤＲＡＭ内の保護されたメモリの量が提供される。前セルＩＤ３７３０によって、シーケンシャル実行を必要とするセルのグループ、たとえば、ストリーミング・データの、前のセルの識別が提供される。
【００８６】
実装セクション３７３２に、セルのコア情報が含まれる。この情報には、ＤＭＡコマンド・リスト３７３４、プログラム３７３６、およびデータ３７３８が含まれる。プログラム３７３６には、ＳＰＵによって実行されるプログラム（「スプレット（spulet）」と称する）、たとえば、ＳＰＵプログラム３７６０および３７６２が含まれ、データ３７３８には、これらのプログラムによって処理されるデータが含まれる。ＤＭＡコマンド・リスト３７３４には、プログラムを開始するのに必要な、一連のＤＭＡコマンドが含まれる。このＤＭＡコマンドには、ＤＭＡコマンド３７４０、３７５０、３７５５、および３７５８が含まれる。ＰＵは、これらのＤＭＡコマンドをＤＭＡＣに発行する。
【００８７】
ＤＭＡコマンド３７４０に、ＶＩＤ３７４２が含まれる。ＶＩＤ３７４２は、ＤＭＡコマンドが発行される時に物理ＩＤにマッピングされるＳＰＵの仮想ＩＤである。ＤＭＡコマンド３７４０には、ロード・コマンド３７４４およびアドレス３７４６も含まれる。ロード・コマンド３７４４によって、ＳＰＵに、ＤＲＡＭからローカル・ストレージに特定の情報を読み取るように指示する。アドレス３７４６は、この情報を含むＤＲＡＭ内の仮想アドレスを提供する。この情報は、たとえば、プログラム・セクション３７３６からのプログラム、データ・セクション３７３８からのデータ、または他のデータとすることができる。最後に、ＤＭＡコマンド３７４０に、ローカル・ストレージ・アドレス３７４８が含まれる。このアドレスは、情報がロードされなければならない、ローカル・ストレージ内のアドレスを識別する。ＤＭＡコマンド３７５０に、類似する情報が含まれる。他のＤＭＡコマンドも可能である。
【００８８】
ＤＭＡコマンド・リスト３７３４には、一連のキック・コマンド、たとえばキック・コマンド３７５５および３７５８も含まれる。キック・コマンドは、セルの処理を開始するためにＰＵによってＳＰＵに発行されるコマンドである。ＤＭＡキック・コマンド３７５５には、仮想ＳＰＵ  ＩＤ３７５２、キック・コマンド３７５４、およびプログラム・カウンタ３７５６が含まれる。仮想ＳＰＵ  ＩＤ３７５２によって、キックされるＳＰＵが識別され、キック・コマンド３７５４によって、関連するキック・コマンドが提供され、プログラム・カウンタ３７５６によって、プログラムを実行するプログラム・カウンタのアドレスが提供される。ＤＭＡキック・コマンド３７５８は、同一のＳＰＵまたは別のＳＰＵに関する類似する情報を提供する。
【００８９】
前に示したように、ＰＵは、ＳＰＵを、コプロセッサではなく独立のプロセッサとして扱う。したがって、ＳＰＵによる処理を制御するために、ＰＵは、リモート・プロシージャ呼出しに類似するコマンドを使用する。これらのコマンドを、「ＳＰＵリモート・プロシージャ呼出し」（ＳＲＰＣ）と称する。ＰＵは、一連のＤＭＡコマンドをＤＭＡＣに発行することによってＳＲＰＣを実施する。ＤＭＡＣは、ＳＰＵプログラムおよびそれに関連するスタック・フレームを、ＳＰＵのローカル・ストレージにロードする。次に、ＰＵが、ＳＰＵへの初期キックを発行して、ＳＰＵプログラムを実行する。
【００９０】
図４２に、スプレットを実行するＳＲＰＣのステップを示す。指定されたＳＰＵによるスプレットの処理を開始する際にＰＵによって実行されるステップを、図４２の第１部分３８０２に示し、スプレットを処理する際に指定されたＳＰＵによって実行されるステップを、図４２の第２部分３８０４に示す。
【００９１】
ステップ３８１０で、ＰＵが、スプレットを評価し、スプレットの処理についてＳＰＵを指定する。ステップ３８１２で、ＰＵが、必要な１つまたは複数のサンドボックスのメモリ・アクセス・キーをセットするためにＤＭＡコマンドをＤＭＡＣに発行することによって、スプレットを実行するためのＤＲＡＭ内の空間を割り振る。ステップ３８１４で、ＰＵが、指定されたＳＰＵの、スプレットの完了を知らせる割込み要求をイネーブルする。ステップ３８１８で、ＰＵが、ＤＭＡＣにＤＭＡコマンドを発行して、ＤＲＡＭからＳＰＵのローカル・ストレージにスプレットをロードする。ステップ３８２０で、ＤＭＡコマンドが実行され、スプレットが、ＤＲＡＭからＳＰＵのローカル・ストレージに読み込まれる。ステップ３８２２で、ＰＵが、ＤＭＡコマンドをＤＭＡＣに発行して、スプレットに関連するスタック・フレームをＤＲＡＭからＳＰＵのローカル・ストレージにロードする。ステップ３８２３で、ＤＭＡコマンドが実行され、スタック・フレームが、ＤＲＡＭからＳＰＵのローカル・ストレージに読み取られる。ステップ３８２４で、ＰＵが、ＤＭＡＣに関するＤＭＡコマンドを発行して、ステップ３８１２で指定された１つまたは複数のハードウェア・サンドボックスとの間でＳＰＵがデータを読み書きできるようにするために、ＳＰＵにキーを割り当てる。ステップ３８２６で、ＤＭＡＣが、ＳＰＵに割り当てられたキーを用いてキー制御テーブル（ＫＴＡＢ）を更新する。ステップ３８２８で、ＰＵが、ＤＭＡコマンド「キック」をＳＰＵに発行して、プログラムの処理を開始する。特定のスプレットに応じて、特定のＳＰＲＣの実行でＰＵによって他のＤＭＡコマンドを発行することができる。
【００９２】
上記で示したように、図４２の第２部分３８０４には、スプレットを実行する際にＳＰＵによって実行されるステップが示されている。ステップ３８３０で、ＳＰＵが、ステップ３８２８で発行されたキック・コマンドに応答してスプレットの実行を始める。ステップ３８３２で、ＳＰＵが、スプレットの指示で、スプレットに関連するスタック・フレームを評価する。ステップ３８３４で、ＳＰＵが、複数のＤＭＡコマンドをＤＭＡＣに発行して、スタック・フレームが必要とするものとして指定されたデータを、ＤＲＡＭからＳＰＵのローカル・ストレージにロードする。ステップ３８３６で、これらのＤＭＡコマンドが実行され、データが、ＤＲＡＭからＳＰＵのローカル・ストレージに読み取られる。ステップ３８３８で、ＳＰＵが、スプレットを実行し、結果を生成する。ステップ３８４０で、ＳＰＵが、ＤＭＡコマンドをＤＭＡＣに発行して、結果をＤＲＡＭに記憶する。ステップ３８４２で、ＤＭＡコマンドが実行され、スプレットの結果が、ＳＰＵのローカル・ストレージからＤＲＡＭに書き込まれる。ステップ３８４４で、ＳＰＵが、ＰＵに割込み要求を発行して、ＳＲＰＣが完了したことを知らせる。
【００９３】
ＰＵの指示の下で独立にタスクを実行するＳＰＵの能力によって、ＰＵが、ＳＰＵのグループおよびＳＰＵのグループに関連するメモリ・リソースを、拡張されたタスクの実行専用にすることができる。たとえば、ＰＵは、１つまたは複数のＳＰＵとその１つまたは複数のＳＰＵに関連するメモリ・サンドボックスのグループを、長い期間にわたってネットワーク１０４を介して送られるデータを受信し、この期間中に受け取られるデータのさらなる処理のために１つまたは複数の他のＳＰＵおよび関連するメモリ・サンドボックスに向けること専用にすることができる。この能力は、ネットワーク１０４を介して伝送されるストリーミング・データ、たとえば、ストリーミングＭＰＥＧまたはストリーミングＡＴＲＡＣのオーディオ・データまたはビデオ・データの処理に特に有利である。ＰＵは、１つまたは複数のＳＰＵおよびそれに関連するメモリ・サンドボックスを、このデータの受信専用にし、１つまたは複数の他のＳＰＵおよびそれに関連するメモリ・サンドボックスを、圧縮解除およびこのデータのさらなる処理の専用にすることができる。言い換えると、ＰＵは、そのようなデータの処理のために、ＳＰＵのグループおよびそれに関連するメモリ・サンドボックスの間の専用パイプライン関係を確立することができる。
【００９４】
しかし、そのような処理を効率的に実行するために、パイプラインの専用ＳＰＵおよびメモリ・サンドボックスを、データ・ストリームを含むスプレットの処理が発生しない期間中にパイプライン専用のままにしなければならない。言い換えると、専用ＳＰＵおよびそれに関連するサンドボックスは、この期間中に予約済み状態に置かれなければならない。スプレットの処理の完了時の、ＳＰＵおよびそれに関連する１つまたは複数のメモリ・サンドボックスの予約を、「常駐終了（resident termination）」と称する。常駐終了は、ＰＵからの命令に応答して行われる。
【００９５】
図４３、４４、および４５に、ストリーミング・データ、たとえば、ストリーミングＭＰＥＧデータの処理のための、ＳＰＵのグループおよびそれに関連するサンドボックスを含む専用パイプライン構造の確立を示す。図４３からわかるように、このパイプライン構造の構成要素に、ＰＥ３９０２およびＤＲＡＭ３９１８が含まれる。ＰＥ３９０２には、ＰＵ３９０４、ＤＭＡＣ３９０６、および、ＳＰＵ３９０８、ＳＰＵ３９１０およびＳＰＵ３９１２を含む複数のＳＰＵが含まれる。ＰＵ３９０４、ＤＭＡＣ３９０６、およびこれらのＳＰＵの間の通信は、ＰＥバス３９１４を介して行われる。高帯域幅バス３９１６によって、ＤＭＡＣ３９０６がＤＲＡＭ３９１８に接続される。ＤＲＡＭ３９１８には、複数のサンドボックス、たとえば、サンドボックス３９２０、サンドボックス３９２２、サンドボックス３９２４、およびサンドボックス３９２６が含まれる。
【００９６】
図４４に、専用パイプラインを確立するステップを示す。ステップ４０１０で、ＰＵ３９０４が、ネットワーク・スプレットを処理するためにＳＰＵ３９０８を割り当てる。ネットワーク・スプレットには、ネットワーク１０４のネットワーク・プロトコルを処理するプログラムが含まれる。この場合では、このプロトコルが、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）である。このプロトコルに従うＴＣＰ／ＩＰデータ・パケットが、ネットワーク１０４を介して伝送される。受信時に、ＳＰＵ３９０８は、これらのパケットを処理し、パケット内のデータをソフトウェア・セル１０２に組み立てる。ステップ４０１２で、ＰＵ３９０４が、ネットワーク・スプレットの処理の完了時に常駐終了を実行するようにＳＰＵ３９０８に指示する。ステップ４０１４で、ＰＵ３９０４が、ＭＰＥＧスプレットの処理にＳＰＵ３９１０および３９１２を割り当てる。ステップ４０１５で、ＰＵ３９０４が、ＭＰＥＧスプレットの処理の完了時に常駐終了を実行するようにＳＰＵ３９１０および３９１２に指示する。ステップ４０１６で、ＰＵ３９０４が、ＳＰＵ３９０８よび３９１０によってアクセスされるソース・サンドボックスとしてサンドボックス３９２０を指定する。ステップ４０１８で、ＰＵ３９０４が、ＳＰＵ３９１０によってアクセスされる宛先サンドボックスとしてサンドボックス３９２２を指定する。ステップ４０２０で、ＰＵ３９０４が、ＳＰＵ３９０８およびＳＰＵ３９１２によってアクセスされるソース・サンドボックスとしてサンドボックス３９２４を指定する。ステップ４０２２で、ＰＵ３９０４が、ＳＰＵ３９１２によってアクセスされる宛先サンドボックスとして、サンドボックス３９２６を指定する。ステップ４０２４で、ＳＰＵ３９１０およびＳＰＵ３９１２が、それぞれソース・サンドボックス３９２０およびソース・サンドボックス３９２４内のメモリのブロックに同期化読取コマンドを送って、これらのメモリのブロックをブロッキング状態にセットする。処理は、最終的に、ステップ４０２８に移り、専用パイプラインの確立が完了し、パイプライン専用のリソースが予約される。したがって、ＳＰＵ３９０８、３９１０、および３９１２とそれに関連するサンドボックス３９２０、３９２２、３９２４、および３９２６が、予約済み状態に入る。
【００９７】
図４５に、この専用パイプラインによってストリーミングＭＰＥＧデータを処理するステップを示す。ステップ４０３０で、ネットワーク・スプレットを処理するＳＰＵ３９０８が、そのローカル・ストレージにネットワーク１０４からＴＣＰ／ＩＰデータ・パケットを受け取る。ステップ４０３２で、ＳＰＵ３９０８が、このＴＣＰ／ＩＰパケットを処理し、このパケット内のデータを、ソフトウェア・セル１０２に組み立てる。ステップ４０３４で、ＳＰＵ３９０８が、ソフトウェア・セルのヘッダ３７２０（図４１）を調べて、このセルにＭＰＥＧデータが含まれるかどうかを判定する。セルにＭＰＥＧデータが含まれない場合には、ステップ４０３６で、ＳＰＵ３９０８が、専用パイプラインに含まれない他のＳＰＵによる他のデータの処理に関してＤＲＡＭ３９１８内で指定された汎用サンドボックスにセルを送る。また、ＳＰＵ３９０８は、この伝送についてＰＵ３９０４に通知する。
【００９８】
その一方で、ソフトウェア・セルにＭＰＥＧデータが含まれる場合には、ステップ４０３８で、ＳＰＵ３９０８が、セルの前セルＩＤ３７３０（図４１）を調べて、セルが属するＭＰＥＧデータ・ストリームを識別する。ステップ４０４０で、ＳＰＵ３９０８が、セルの処理の専用パイプラインのＳＰＵを選択する。この場合では、ＳＰＵ３９０８が、このデータを処理するのにＳＰＵ３９１０を選択する。この選択は、前セルＩＤ３７３０および負荷平衡化要因に基づく。たとえば、前セルＩＤ３７３０から、このソフトウェア・セルが属するＭＰＥＧデータ・ストリームの前のソフトウェア・セルが処理のためにＳＰＵ３９１０に送られたことが示される場合に、現在のソフトウェア・セルも、通常は、処理のためにＳＰＵ３９１０に送られる。ステップ４０４２で、ＳＰＵ３９０８が、ＭＰＥＧデータをサンドボックス３９２０に書き込む同期化書込コマンドを発行する。このサンドボックスは、前にブロッキング状態にセットされたので、ステップ４０４４で、ＭＰＥＧデータが、自動的にサンドボックス３９２０からＳＰＵ３９１０のローカル・ストレージに読み取られる。ステップ４０４６で、ＳＰＵ３９１０が、そのローカル・ストレージ内のＭＰＥＧデータを処理して、ビデオ・データを生成する。ステップ４０４８で、ＳＰＵ３９１０が、ビデオ・データをサンドボックス３９２２に書き込む。ステップ４０５０で、ＳＰＵ３９１０が、サンドボックス３９２０に同期化読取コマンドを発行して、追加ＭＰＥＧデータを受け取るためにこのサンドボックスを準備する。ステップ４０５２で、ＳＰＵ３９１０が、常駐終了を処理する。この処理によって、このＳＰＵが、予約状態に入り、その間に、このＳＰＵは、ＭＰＥＧデータ・ストリームの追加ＭＰＥＧデータの処理を待つ。
【００９９】
他の専用構造を、他のタイプのデータの処理のために、ＳＰＵのグループおよびそれに関連するサンドボックスの間で確立することができる。たとえば、図４６に示されているように、ＳＰＵの専用グループ、たとえば、ＳＰＵ４１０２、４１０８、および４１１４を、３次元オブジェクトに対する幾何変換を実行するために確立して、２次元ディスプレイ・リストを生成することができる。この２次元ディスプレイ・リストを、さらに、他のＳＰＵによって処理（レンダリング）して、ピクセル・データを生成することができる。この処理を実行するために、サンドボックスが、３次元オブジェクトおよびこれらのオブジェクトの処理から生じるディスプレイ・リストの記憶のために、ＳＰＵ４１０２、４１０８、および４１１４専用にされる。たとえば、ソース・サンドボックス４１０４、４１１０、および４１１６が、それぞれＳＰＵ４１０２、４１０８、および４１１４によって処理される３次元オブジェクトの記憶専用である。類似する形で、宛先サンドボックス４１０６、４１１２、および４１１８が、それぞれＳＰＵ４１０２、４１０８、および４１１４による３次元オブジェクトの処理から生じるディスプレイ・リストの記憶専用である。
【０１００】
調整するＳＰＵ４１２０は、宛先サンドボックス４１０６、４１１２、および４１１８からそのローカル・ストレージにディスプレイ・リストを受け取ること専用である。ＳＰＵ４１２０は、これらのディスプレイ・リストの間で調停し、ピクセル・データのレンダリングのためにこれらを他のＳＰＵに送る。
【０１０１】
システム１０１のプロセッサは、絶対タイマも使用する。絶対タイマは、ＰＵのＳＰＵおよび他の要素に、これらの要素を駆動するクロック信号と独立の、それより高速のクロック信号を供給する。この絶対タイマの使用を、図４７に示す。
【０１０２】
この図からわかるように、絶対タイマによって、ＳＰＵによるタスクの実行に関するタイム・バジェット（time budget）が確立される。このタイム・バジェットによって、タスクのＳＰＵによる処理に必要な時間より長い、タスクを完了するための時間がもたらされる。その結果、タスクごとに、タイム・バジェット内に、ビジー期間とスタンバイ期間がある。すべてのスプレットは、ＳＰＵの実際の処理時間または速度と無関係に、このタイム・バジェットに基づいて、処理のために書き込まれる。
【０１０３】
たとえば、ＰＵの特定のＳＰＵについて、特定のタスクを、タイム・バジェット４２０４のビジー期間４２０２中に実行することができる。ビジー期間４２０２は、タイム・バジェット４２０４より短いので、スタンバイ期間４２０６が、タイム・バジェット中に発生する。このスタンバイ期間中に、ＳＰＵは、スリープ・モードに入り、この間は、ＳＰＵはより少ない電力を消費する。
【０１０４】
タスクの処理の結果は、タイム・バジェット４２０４が満了するまで、他のＳＰＵまたはＰＵの他の要素によって期待されない。したがって、絶対タイマによって確立されるタイム・バジェットを使用すると、ＳＰＵの処理の結果が、ＳＰＵの実際の処理速度と無関係に、常に調整される。
【０１０５】
将来、ＳＰＵによる処理の速度は、より速くなる。しかし、絶対タイマによって確立されるタイム・バジェットは、同一のままである。たとえば、図４７に示されているように、将来のＳＰＵは、タスクをより短い期間に実行し、したがって、より長いスタンバイ期間を有する。したがって、ビジー期間４２０８は、ビジー期間４２０２より短く、スタンバイ期間４２１０は、スタンバイ期間４２０６より長い。しかし、プログラムは、絶対タイマによって確立される同一のタイム・バジェットを基礎とする処理について記述されるので、ＳＰＵの間の処理の結果の調整が、維持される。その結果、より高速のＳＰＵは、処理の結果が期待される時刻の衝突を引き起こさずに、より低速のＳＰＵについて記述されたプログラムを処理することができる。
【０１０６】
ＳＰＵの間の調整を確立する絶対タイマの代わりに、ＰＵ、あるいは１つまたは複数の指定されたＳＰＵが、機能強化された速度または異なる動作速度によって引き起こされるＳＰＵの並列処理の調整での問題について、スプレットの処理でＳＰＵによって実行される特定の命令またはマイクロコードを分析することができる。「ノー・オペレーション」（「ＮＯＯＰ」）命令を、命令に挿入し、いくつかのＳＰＵによって実行して、スプレットによって期待されるＳＰＵによる処理の正しい順次完了を維持することができる。命令にこのＮＯＯＰを挿入することによって、すべての命令のＳＰＵの実行について正しいタイミングを維持することができる。
【０１０７】
図４８に、プログラムを初期化する処理ユニットと、依存ファイルをシナジスティック処理ユニットにロードするプログラムのランタイム・ローダを示す。コンピュータ・システムに、処理ユニット（ＰＵ）４３００およびシナジスティック処理ユニット（ＳＰＵ）４３５０が含まれる。ＰＵ４３００は、コンピュータ・システムをブートアップし、初期化し、その間に、ＰＵ４３００は、オペレーティング・システムをロードする。オペレーティング・システムは、キーボードからの入力の認識、ディスプレイ画面への出力の送出、ディスク上のファイルおよびディレクトリの記憶、ディスク・ドライブおよびプリンタなどの周辺装置の制御など、基本的なタスクを実行する。オペレーティング・システムには、カーネル４３２０などのカーネルが含まれる。カーネル４３２０は、オペレーティング・システムの中央モジュールであり、メモリ４３２５にロードされ、留まる。メモリ４３２５は、ＰＵ４３００のローカル・メモリ区域である。カーネル４３２０は、メモリ管理、プロセスおよびタスクの管理、およびディスク管理の責任を負う。
【０１０８】
カーネル４３２０は、ＰＵ４３００によって実行されるプログラムであるＰＵプログラム４３１２をメモリ４３２５にロードする。ロード処理中に、カーネル４３２０は、ＰＵプログラム４３１２に対応するランタイム・ローダ４３１５を識別する。ランタイム・ローダ４３１５は、オブジェクトをロードし、シンボルを解決し、ＰＵプログラム４３１２に対応する他のファイル（すなわち、データ、プログラム）をロードする責任を負う。カーネル４３２０は、メモリ４３２５にランタイム・ローダ４３１５をロードし、ランタイム・ローダ４３１５に制御を渡す。ランタイム・ローダ４３１５は、ＳＰＵファイル４３４０など、ＰＵプログラム４３１２が依存するファイルの識別を開始する。ランタイム・ローダは、メモリ４３２５にＳＰＵファイル４３４０をロードし、ＳＰＵファイル４３４０のヘッダからプロセッサ識別子を抽出する。たとえば、ＳＰＵファイル４３４０は、ＥＬＦフォーマットのファイルとすることができ、この場合に、そのＥＬＦヘッダに「マシン・タイプ」が含まれ、これは、ロードされるプロセッサを表す（ヘッダ情報に関する詳細については、図５２および５３と、対応するテキストを参照されたい）。
【０１０９】
ランタイム・ローダ４３１５は、ＳＰＵファイル４３４０のプロセッサ識別子に基づいて、ＳＰＵファイル４３４０をＳＰＵ４３５０で実行しなければならないかどうかを判定し、ＤＭＡ４３６０などのＤＭＡコマンドを使用して、ＳＰＵファイル４３４０をＳＰＵ４３５０に送る。ＳＰＵ４３５０は、ＳＰＵファイル４３４０を受け取り、メモリ４３７０に記憶する。メモリ４３７０は、ＳＰＵ４３５０のローカル・メモリ区域である。ＳＰＵ４３５０は、この時に、ＳＰＵファイル４３４０を実行することができる（コード実行の詳細については、図５０および５１と、対応するテキストを参照されたい）。
【０１１０】
図４９は、組み合わされたファイルを受け取り、組み合わされたファイルに含まれるシナジスティック処理ユニット（ＳＰＵ）ファイルを抽出し、ＳＰＵファイルをＳＰＵに送る、ランタイム・ローダを示す図である。図４９は、ＰＵ４３００が、図４８に示されたように別々のファイルではなく、図４９では組み合わされたファイルを処理することを除いて、図４８に類似する。組み合わされたファイル４４００は、３２ビット（または、６４ビット）ＰＵコードおよびＳＰＵコードを含む組み合わされた実行可能ファイル（たとえば、ＳＰＵファイル４３４０）である。組み合わされたファイル４４００は、ＰＵ実行可能プログラムに組み込まれたＳＰＵコードを有するものと考えることもできる。
【０１１１】
ランタイム・ローダ４３１５は、組み合わされたファイル４４００をメモリ４３２５にロードする。ランタイム・ローダ４３１５は、組み合わされたファイル４４００のヘッダを分析して、ＳＰＵ４３５０をターゲットとする組込みコードが組み合わされたファイル４４００に含まれるかどうかを識別する（ファイル・ヘッダの詳細については、図５２および５３と、対応するテキストを参照されたい）。ランタイム・ローダ４３１５は、組み合わされたファイル４４００のヘッダ情報からＳＰＵファイル４３４０を識別し、ＤＭＡ４４３０を使用してメモリ４３７０にＳＰＵファイル４３４０を送る。ＤＭＡ４４３０は、ＰＵ４３００がそのメモリ（たとえばメモリ４３２５）からＳＰＵ４３５０のメモリ（たとえばメモリ４３７０）に直接にデータを送る機構を提供する。ＳＰＵ４３５０は、ＳＰＵファイル４３４０を受け取ったならば、ＳＰＵファイル４３４０を実行する準備ができている（コード実行に関する詳細については、図５０および５１と、対応するテキストを参照されたい）。
【０１１２】
図５０は、処理ユニット（ＰＵ）プログラムからプラグインを受け取るシナジスティック処理ユニット（ＳＰＵ）ファイルを示す図である。ＳＰＵ４３５０は、ＰＵ４３００がＰＵプログラム４５１２を実行する間に、ＰＵ４３００からＳＰＵファイル４３４０を受け取った（ＳＰＵファイル伝送に関する詳細については、図４８および４９と、対応するテキストを参照されたい）。ＰＵプログラム４５１２は、図４８に示されたＰＵプログラム４３１２に類似し、図４９に示された組み合わされたファイル４４００のＰＵ実行部分にも類似する。ＳＰＵファイル４３４０は、実行可能ファイルであり、ランタイム・ローダ４５３０など、それ自体のランタイム・ローダが含まれる。ＳＰＵファイル４３４０の実行中に、ランタイム・ローダ４５３０は、ＳＰＵファイル４３４０が依存するファイルを検索し、ロードする。たとえば、ＳＰＵファイル４３４０を、グラフィックス・プログラムとすることができ、これによって、ＳＰＵファイル４３４０は、データを操作するプラグイン・モジュールを必要とする。ランタイム・ローダ４５３０は、ＳＰＵファイル４３４０がプラグインを必要とすることを認識し、要求４５５０をＰＵプログラム４５１２に送る。ＰＵプログラム４５１２は、要求を受け取り、システム・メモリ４３１０からプラグイン４５１０を検索する。システム・メモリ４３１０は、図４８に示されたものと同一である。ＰＵプログラム４５１２は、ＤＭＡ４５６０を使用して、ランタイム・ローダ４５３０にプラグイン４５１０を送り、ランタイム・ローダ４５３０は、ＳＰＵファイル４３４０によるアクセスのためにメモリ４３７０にプラグイン４５１０を記憶する。
【０１１３】
ＳＰＵファイル４３４０は、上述したものと同一の技法を使用して、ＰＵプログラム４５１２からデータを受け取ることもできる。ＳＰＵファイル４３４０が、プラグイン４５１０を使用するデータの処理を終了した時に、ＳＰＵファイル４３４０は、ＰＵ４３００に肯定応答４５７０を送り、これによって、ＳＰＵ４３５０がデータの処理を終了したことが示される。一実施形態では、肯定応答４５７０に、処理されたデータを含めることができ、あるいは、ＰＵ４３００が結果のデータを検索するメモリ位置参照を含めることができる。
【０１１４】
図５１は、ＳＰＵ実行可能ファイルに対応するプラグインをシステム・メモリから独立に検索するシナジスティック処理ユニット（ＳＰＵ）を示す図である。図５１は、ＳＰＵファイル４３４０が、ＰＵプログラム４５１２の介入なしで、独立にプラグインまたはデータあるいはその両方をシステム・メモリから検索する点が、図５０と異なる。ＳＰＵ４３５０は、ＰＵ４３００がＰＵプログラム４５１２を実行する間にＰＵ４３００からＳＰＵファイル４３４０を受け取った（ＳＰＵファイル伝送に関する詳細については、図４８および４９と、対応するテキストを参照されたい）。ＳＰＵファイル４３４０は、ランタイム・ローダ４５３０など、それ自体のランタイム・ローダを含む実行可能ファイルである。
【０１１５】
ＳＰＵファイル４３４０の実行中に、ランタイム・ローダ４５３０が、ＳＰＵファイル４３４０が依存するファイルを検索し、ロードする。たとえば、ＳＰＵファイル４３４０を、グラフィックス・プログラムとすることができ、これによって、ＳＰＵファイル４３４０が、データの操作にプラグイン・モジュールを必要とする。ランタイム・ローダ４５３０は、ＳＰＵファイル４３４０が、プラグイン４５１０などのプラグインを必要とすることを認識し、プラグイン４５１０が配置されるシステム・メモリ４５００内の位置を、システム・メモリ４５００に対応するメモリ・マップを検査することによって識別する。
【０１１６】
一実施形態では、ＳＰＵ４３５０に、メモリ管理ユニット（ＭＭＵ）が含まれる。ＭＭＵには、ＳＰＵ４３５０がその中でシステム・メモリにアクセスする直接メモリ・アクセス（ＤＭＡ）が含まれる。この実施形態では、ランタイム・ローダ４５３０が、ＤＭＡ４６４０を使用してシステム・メモリ４５００からプラグイン４５１０を検索し、メモリ４３７０にプラグイン４５１０をロードする。ＳＰＵファイル４３４０は、プラグイン４５１０を使用してデータを処理し、完了した時にＰＵプログラム４６１２に肯定応答４６５０を送る。
【０１１７】
図５２は、組み合わされたファイルに含まれるさまざまなコード行を示すユーザ・コードを示す図である。組み合わされたファイルは、３２ビット（または、６４ビット）ＰＵコードとＳＰＵコードの両方を含む実行可能ファイルである（組み合わされたファイルに関する詳細については、図４９および対応するテキストを参照されたい）。組み合わされたファイルは、ＰＵ実行可能プログラム内に組み込まれたＳＰＵコードを有すると解釈することもできる。コード４７００に、ＥＬＦヘッダ４７１０およびセクション・ヘッダ４７３０が含まれる。ＥＬＦヘッダ４７１０には、組み合わされたファイルに特有のコードが含まれ、ＥＬＦヘッダ４７１０によって、組み合わされたファイルが実行されなければならないプロセッサ・タイプが識別される。具体的に言うと、行４７２０に、「ＰＵ」マシン・タイプが含まれ、これによって、組み合わされたファイルを処理のためにＰＵにロードしなければならないことがランタイム・ローダに知らされる。一実施形態では、Extended Common Object File Format（ＸＣＯＦＦ）またはPortable Executable Common Object File Format（ＰＥＣＯＦＦ）など、他のファイル・フォーマットを使用することができる。
【０１１８】
セクション・ヘッダ４７３０には、組み込まれたファイルの内容が含まれる。具体的に言うと、行４７４０に、「.spuelf」プログラムが含まれ、これは、ランタイム・ローダがＳＰＵのローカル・ストアにロードし、ＰＵと独立に実行されるＳＰＵプログラムである。一実施形態では、シンボルを、.spuelfファイルに含めることができ、これによって、ロードされ、システム・メモリにマッピングされた時のファイルへのアクセスが提供される。
【０１１９】
一実施形態で、ＳＰＵコードは、リンク時にＰＵコードによって参照される時に、暗黙のうちにシステム・メモリにロードされる。もう１つの実施形態で、ＳＰＵコードは、ＳＰＵコードをロードすると動的に決定される時に、暗黙のうちにシステム・メモリにロードされる。これらの実施形態では、シンボルが、ＳＰＵプログラムまたはプラグインのシステム・メモリ内のＳＰＵ  ＥＬＦイメージをポイントする。ＰＵコードは、ＳＰＵアクティビティを制御し、開始するので、特定のシンボル（たとえば、システム・メモリ・アドレス）に配置されるＳＰＵコードを、ＳＰＵにロードし、実行しなければならないことを示す特殊なＡＰＩ（アプリケーション・プログラミング・インターフェース）を使用することができる。これらのＡＰＩの１つが呼び出される時に、ＳＰＵ  ＥＬＦイメージが、メモリ内で解析され、ＥＬＦ「マシン・タイプ」を使用してそれがＳＰＵ  ＥＬＦイメージであることが検証され、その後、ＤＭＡ実行を使用して、使用可能なＳＰＵに送られる。これらのＡＰＩは、ＰＵプログラムがＳＰＵアクティビティの開始およびＳＰＵコードのロード／実行を望む時に動的に呼び出される、ランタイム・ローダに対する拡張と考えることができる。
【０１２０】
図５３は、依存ファイルに含まれるさまざまなコード行を示すユーザ・コードである。コード４７５０は、独立ファイル（すなわち、組み込まれない）なので、図５２に示されているようなセクション・ヘッダは不要である。その代わりに、ＥＬＦヘッダ４７６０に、行４７７０に含まれる「ＳＰＵ」などのマシン・タイプが含まれ、これによって、ランタイム・ローダに、独立プログラムをＳＰＵにロードしなければならないことが知らされる。
【０１２１】
図５４は、プログラムを実行し、プログラムのランタイム・ローダに制御を渡す、処理ユニット（ＰＵ）で行われるステップを示す流れ図である。ＰＵ処理は、４８００で開始され、そこで、ＰＵは、メモリ４３２５などのＰＵのメモリにカーネルをロードする。カーネルは、システム・メモリ４３１０から実行可能ファイルを検索し、ステップ４８２０で実行可能ファイルをメモリ４３２５にロードする。システム・メモリ４３１０およびメモリ４３２５は、図４８に示されたものと同一である。
【０１２２】
カーネルは、ステップ４８３０で、実行可能ファイルに対応するランタイム・ローダをシステム・メモリ４３１０から検索し、そのランタイム・ローダをメモリ４３２５にロードする。ランタイム・ローダは、実行可能ファイルが依存するファイルをロードする責任を負う。たとえば、実行可能ファイルを、引退予測プログラムとすることができ、ランタイム・ローダが、利率アプリケーションなどの依存ファイルをロードすることができる。
【０１２３】
カーネルは、ステップ４８４０で、ランタイム・ローダに制御を渡し、ランタイム・ローダは、ステップ４８５０で、最初の依存ファイルをシステム・メモリ４３１０から検索する。上述した例を使用すると、ランタイム・ローダは、システム・メモリ４３１０から利率アプリケーションを検索する。ランタイム・ローダは、ステップ４８６０で、依存ファイルをメモリ４３２５にロードする。依存ファイルには、ＥＬＦヘッダなどのヘッダが含まれ、これによって、ヘッダに、マシン・タイプなど、依存ファイルが動作しなければならないプロセッサのタイプを区別するプロセッサ識別子が含まれる（プロセッサ識別子に関する詳細については、図５２および５３と、関連するテキストを参照されたい）。ランタイム・ローダは、ステップ４８６５で、依存ファイルの対応するプロセッサ識別子を抽出する。
【０１２４】
プロセッサ識別子が、ＰＵプロセッサまたはＳＰＵプロセッサのどちらに対応するかに関する判定を行う（判断４８７０）。上述した例を使用すると、ランタイム・ローダは、利率アプリケーションをＰＵまたはＳＰＵのどちらにロードしなければならないかを判定する。プロセッサ識別子が、ＳＰＵに対応する場合には、判断４８７０は「No」分岐４８７２に分岐し、そこで、ＤＭＡの依存ファイルをＰＵのメモリ（たとえば、メモリ４３２５）からＳＰＵ４３５０に処理する（ステップ４８８０）。ＳＰＵ４３５０は、図４８に示されたものと同一のＳＰＵである。
【０１２５】
その一方で、依存ファイルをＰＵで実行しなければならない場合には、判断４８７０は、「Yes」分岐４８７８に分岐し、そこでは、ＤＭＡステップは不要である。というのは、依存ファイルが、既にＰＵのメモリ（たとえば、メモリ４３２５）にロードされているからである。
【０１２６】
実行可能ファイルが、ロードすべき依存ファイルをまだ有するかどうかに関する判定を行う（判断４８９０）。実行可能ファイルが、ロードすべき依存ファイルをまだ有する場合には、判断４８９０は、「Yes」分岐４８９２に分岐し、ループ・バックして、次の依存ファイルを検索し（ステップ４８９５）、処理する。このループは、処理すべき依存ファイルがなくなるまで継続され、なくなった時点で、判断４８９０が、「No」分岐４８９８に分岐し、ここで、処理が４８９９で終了する。
【０１２７】
図５５は、処理ユニット（ＰＵ）からファイルを受け取り、そのファイルを実行するシナジスティック処理ユニット（ＳＰＵ）で行われるステップを示す流れ図である。処理は、４９００で開始され、ＳＰＵが、ＰＵ４３００から依存ファイルを受け取り、メモリ４３７０に記憶する（ステップ４９１０）。ＰＵ４３００は、図４８に示されたものと同一のＰＵである。メモリ４３７０は、ＳＰＵの内部メモリであり、図４８に示されたものと同一である。
【０１２８】
ＳＰＵが、依存ファイルに対応するデータの処理を開始すべきか、ＰＵ４３００からの要求を待つべきかに関する判定を行う（判断４９２０）。たとえば、ＰＵ４３００は、複数のプロセッサを構成することができ、ＰＵ４３００は、他のプロセッサが構成されるまでＳＰＵがデータの処理を開始することを望まない場合がある。ＳＰＵが、ＰＵ４３００からの要求を待たなければならない場合には、判断４９２０は、「No」分岐４９２２に分岐し、そこで、ＰＵ４３００からの要求を受け取るまで、処理は待機する（ステップ４９３０）。その一方で、ＰＵ４３００からの要求を待たずに依存ファイルを使用してデータを処理しなければならない場合には、判断４９２０は、「Yes」分岐４９２８に分岐し、要求待機ステップをバイパスする。
【０１２９】
ステップ４９３５で、ＳＰＵは、ファイルを実行し、ファイルは、ランタイム・ローダを開始する。ランタイム・ローダは、オブジェクトをロードし、シンボルを解決し、ＳＰＵの依存ファイルに対応する他のファイル（すなわち、データ、プログラム）をロードする責任を負う。ランタイム・ローダは、ステップ４９３８で、依存ファイルが必要とするプラグインまたはデータあるいはその両方を識別する。たとえば、依存ファイルを、グラフィックス・アプリケーションとすることができ、そのグラフィックス・アプリケーションが、エッジ・スムージング・プラグインを必要とする。
【０１３０】
ＳＰＵが、ＰＵ４３００と独立にプラグインまたはデータあるいはその両方を検索しなければならないかどうかに関する決定を行う。この決定は、ＰＵ／ＳＰＵアプリケーション全体について選択されたプログラミング・モデルに基づいて達成することができる。たとえば、一部のアプリケーションでは、ＰＵコードが、ＳＰＵプログラムを開始し、そのＳＰＵプログラムを制御する。もう１つの例では、ＳＰＵプログラムは、ＰＵによって開始された後に、それ自体を制御する。予約を伴うロード命令、条件ストア命令、メールボックス、シグナル、ＤＭＡ、状況のポーリング、割込み／イベントの待機など、多数のハードウェア機能を、ＰＵおよびＳＰＵの両方が使用して、そのアクティビティを同期化し、データの移動を調整することができる。
【０１３１】
ＳＰＵが、依存ファイルを独立に処理してはならない場合に、判断４９４０は、「No」分岐４９４２に分岐し、そこで、特定のプラグインまたはデータを要求する要求をＰＵ４３００に送る（ステップ４９４５）。ステップ４９５０で、ＰＵ４３００からデータまたはプラグインあるいはその両方を受け取り、メモリ４３７０に記憶する。その一方で、ＳＰＵが、プラグインまたはデータを独立に検索しなければならない場合には、判断４９４０は、「Yes」分岐４９４８に分岐し、そこで、ＳＰＵが、データまたはプラグインあるいはその両方をシステム・メモリ４３１０から検索し、メモリ４３７０に記憶する（ステップ４９６０）。ＳＰＵは、ステップ４９７０でデータを処理し、ステップ４９８０でＰＵ４３００に肯定応答を送る。
【０１３２】
処理を継続するかどうかに関する判定を行う（判断４９９０）。たとえば、ＰＵ４３００は、ＳＰＵに、ユーザが特定のユーザ・インターフェースから出るまで、金融計算機をロードさせ、ユーザ入力を待つことを継続するように要求することができる。処理を継続しなければならない場合には、判断４９９０は、「Yes」分岐４９９２に分岐し、ループ・バックして、さらなるデータを処理するか、さらなるプラグインをロードするか、その両方を行う。このループは、ＳＰＵが依存ファイルを使用するデータの処理を継続してはならなくなるまで継続され、その時点で、判断４９９０は、「No」分岐４９９８に分岐し、その結果、４９９９で処理が終了する。
【０１３３】
図５６は、システム・メモリを共用するメイン・プロセッサおよび複数の２次プロセッサを有する処理要素を示すブロック図である。処理要素（ＰＥ）５００５に、処理ユニット（ＰＵ）５０１０が含まれ、処理ユニット５０１０は、一実施形態では、メイン・プロセッサとして働き、オペレーティング・システムを実行する。処理ユニット５０１０は、たとえば、Ｌｉｎｕｘオペレーティング・システムを実行するＰｏｗｅｒ  ＰＣコアとすることができる。ＰＥ５００５には、ＳＰＣ５０４５、５０６５、および５０８５などの複数のシナジスティック処理コンプレックス（ＳＰＣ）も含まれる。ＳＰＣには、ＰＵ５０１０に対する２次処理ユニットとして働くシナジスティック処理ユニット（ＳＰＵ）、メモリ・ストレージ・ユニット、およびローカル・ストレージが含まれる。たとえば、ＳＰＣ５０４５に、ＳＰＵ５０５０、ＭＭＵ５０５５、およびローカル・ストレージ５０５９が含まれ、ＳＰＣ５０６５に、ＳＰＵ５０７０、ＭＭＵ５０７５、およびローカル・ストレージ５０７９が含まれ、ＳＰＣ５０８５に、ＳＰＵ５０９０、ＭＭＵ５０９５、およびローカル・ストレージ５０９９が含まれる。
【０１３４】
各ＳＰＣは、異なるタスクを実行するように構成することができ、したがって、一実施形態で、各ＳＰＣに、異なる命令セットを使用してアクセスすることができる。ＰＥ５００５が、たとえば、無線通信システムで使用されている場合に、各ＳＰＣは、変調、チップ・レート処理、エンコード、ネットワーク・インターフェースなど、別々の処理タスクの責任を負うことができる。もう１つの実施形態で、ＳＰＣが、同一の命令セットを有し、お互いと並列に使用して、並列処理から利益を得る動作を実行することができる。
【０１３５】
ＰＥ５００５には、Ｌ２キャッシュ５０１５など、ＰＵ５０１０による使用のためのレベル２キャッシュも含まれる。さらに、ＰＥ５００５には、システム・メモリ５０２０が含まれ、このシステム・メモリ５０２０は、ＰＵ５０１０とＳＰＵの間で共用される。システム・メモリ５０２０には、たとえば、動作中のオペレーティング・システムのイメージ（カーネルを含めることができる）、デバイス・ドライバ、入出力構成、その他、実行中のアプリケーション、ならびに他のデータを記憶することができる。システム・メモリ５０２０には、１つまたは複数のＳＰＣのローカル・ストレージ・ユニットが含まれ、このローカル・ストレージ・ユニットは、システム・メモリ５０２０の１領域にマッピングされる。たとえば、ローカル・ストレージ５０５９を、マッピング領域５０３５にマッピングすることができ、ローカル・ストレージ５０７９を、マッピング領域５０４０にマッピングすることができ、ローカル・ストレージ５０９９を、マッピング領域５０４２にマッピングすることができる。ＰＵ５０１０およびＳＰＣは、バス５０１７を介してお互いおよびシステム・メモリ５０２０と通信し、バス５０１７は、これらのデバイスの間でデータを渡すように構成される。
【０１３６】
ＭＭＵは、ＳＰＵのローカル・ストアとシステム・メモリの間でデータを転送する責任を負う。一実施形態では、ＭＭＵに、この機能を実行するように構成された直接メモリ・アクセス（ＤＭＡ）コントローラが含まれる。ＰＵ５０１０は、ＭＭＵをプログラムして、どのメモリ領域がＭＭＵのそれぞれから使用可能になるかを制御することができる。ＭＭＵのそれぞれから使用可能なマッピングを変更することによって、ＰＵは、どのＳＰＵがシステム・メモリ５０２０のどの領域へのアクセスを有するかを制御することができる。この形で、ＰＵは、たとえば、システム・メモリの領域を、特定のＳＰＵの排他的使用のためにプライベートとして指定することができる。一実施形態では、ＳＰＵのローカル・ストアに、ＰＵ５０１０によってならびにメモリ・マップを使用して他のＳＰＵによってアクセスすることができる。一実施形態では、ＰＵ５０１０が、すべてのＳＰＵについて、共通のシステム・メモリ５０２０のメモリ・マップを管理する。メモリ・マップ・テーブルに、ＰＵ５０１０のＬ２キャッシュ５０１５、システム・メモリ５０２０、ならびにＳＰＵの共用ローカル・ストアを含めることができる。
【０１３７】
一実施形態で、ＳＰＵは、ＰＵ５０１０の制御の下でデータを処理する。ＳＰＵは、たとえば、デジタル信号処理コア、マイクロプロセッサ・コア、マイクロ・コントローラ・コア、その他、または上記のコアの組合わとすることができる。ローカル・ストアのそれぞれは、特定のＳＰＵに関連するストレージ区域である。一実施形態では、各ＳＰＵが、そのローカル・ストアを、プライベート・ストレージ区域、または共用ストレージ区域として構成することができ、あるいは、ＳＰＵは、そのローカル・ストアを、部分的にプライベート・ストレージ、部分的に共用ストレージとして構成することができる。
【０１３８】
たとえば、ＳＰＵが、かなりの量のローカル・メモリを必要とする場合には、ＳＰＵは、ローカル・ストアの１００％を、そのＳＰＵだけによってアクセス可能なプライベート・メモリに割り振ることができる。その一方で、ＳＰＵが、最小限の量のローカル・メモリを必要とする場合には、ＳＰＵは、ローカル・ストアの１０％をプライベート・メモリ、残りの９０％を共用メモリに割り振ることができる。共用メモリは、ＰＵ５０１０によって、および他のＳＰＵによってアクセス可能である。ＳＰＵは、高速アクセスを必要とするタスクを実行する時に、高速の保証されたメモリ・アクセスを有するために、ローカル・ストアの一部を予約することができる。ＳＰＵは、たとえば、ＳＰＵが暗号化／復号を実行している時など、機密データを処理する時に、ローカル・ストアの一部をプライベートとして予約することもできる。
【０１３９】
一実施形態で、ＳＰＵコードが、リンク時にＰＵコードによって参照される時に、暗黙のうちにシステム・メモリにロードされる。もう１つの実施形態で、ＳＰＵコードは、ＳＰＵコードをロードすると動的に決定される時に、明示的にシステム・メモリにロードされる。これらの実施形態では、シンボルは、ＳＰＵプログラムまたはプラグインのシステム・メモリ内のＳＰＵ  ＥＬＦイメージをポイントする。ＰＵコードは、ＳＰＵアクティビティを制御し、開始するので、特定のシンボル（たとえばシステム・メモリ・アドレス）に配置されるＳＰＵコードを、ＳＰＵにロードし、実行しなければならないことを示す特殊なＡＰＩ（アプリケーション・プログラミング・インターフェース）を使用することができる。これらのＡＰＩの１つが呼び出される時に、ＳＰＵ  ＥＬＦイメージが、メモリ内で解析され、ＥＬＦ「マシン・タイプ」を使用してそれがＳＰＵ  ＥＬＦイメージであることが検証され、使用可能なＳＰＵにＤＭＡ転送される。これらのＡＰＩは、ＰＵプログラムがＳＰＵアクティビティの開始およびＳＰＵコードのロード／実行を望む時に動的に呼び出される、ランタイム・ローダに対する拡張と考えることができる。
【０１４０】
本発明の好ましい実施形態の１つが、アプリケーション、すなわち、たとえば、コンピュータのランダム・アクセス・メモリに常駐することができる、コード・モジュール内の命令の組（プログラム・コード）である。コンピュータによって要求されない限り、命令の組は、たとえば、ハード・ディスク・ドライブ上、あるいは光ディスク（ＣＤ  ＲＯＭでの最終的な使用のための）またはフロッピ（Ｒ）・ディスク（フロッピ・ディスク・ドライブでの採取的な使用のための）などの取外し可能媒体内で、別のコンピュータ・メモリに記憶するか、インターネットまたは他のコンピュータ・ネットワークを介してダウンロードすることができる。したがって、本発明は、コンピュータで使用されるコンピュータ・プログラム製品として実施することができる。さらに、説明したさまざまな方法は、ソフトウェアによって選択的に活動化または再構成される汎用コンピュータで便利に実施されるが、そのような方法を、ハードウェア、ファームウェア、または必要な方法ステップを実行するように構成されたより特殊化された装置で実行できることを、当業者は理解するであろう。
【０１４１】
本発明の特定の実施形態を図示し、説明してきたが、本明細書の教示に基づいて、本発明およびその広義の態様から逸脱せずに変更および修正を行うことができ、したがって、請求項が、本発明の真の趣旨および範囲に含まれるものとして、そのような変更および修正のすべてをその範囲に含むことは、当業者に明らかである。さらに、本発明が、請求項のみによって定義されることを理解されたい。導入される請求項要素の特定の個数が意図される場合に、その意図が請求項で明示的に列挙され、そのような列挙がない場合にそのような制限が存在しないことは、当業者によって理解されるであろう。非制限的な例について、理解の助けとして、請求項には、請求要素を導入するために「少なくとも１つの」および「１つまたは複数の」と言う前置きの句の使用が含まれる。しかし、そのような句の使用は、不定詞「a」または「an」による請求要素の導入が、導入される請求要素を含む特定の請求項を、同一の請求項に前置きの句「１つまたは複数の」または「少なくとも１つの」および「a」または「an」などの不定冠詞が含まれる時であっても、そのような要素を１つだけ含む発明に制限することを暗示すると解釈されてはならず、同一のことが、定冠詞の請求項での使用にもあてはまる。
【図面の簡単な説明】
【０１４２】
【図１】本発明によるコンピュータ・ネットワークの全体的なアーキテクチャを示す図である。
【図２】本発明による処理ユニット（ＰＵ）の構造を示す図である。
【図３】本発明によるブロードバンド・エンジン（ＢＥ）の構造を示す図である。
【図４】本発明によるシナジスティック処理ユニット（ＳＰＵ）の構造を示す図である。
【図５】本発明による処理ユニット、ビジュアライザ（ＶＳ）、および光インターフェースの構造を示す図である。
【図６】本発明による、処理ユニットの１つの組合せを示す図である。
【図７】本発明による、処理ユニットのもう１つの組合せを示す図である。
【図８】本発明による、処理ユニットのもう１つの組合せを示す図である。
【図９】本発明による、処理ユニットのもう１つの組合せを示す図である。
【図１０】本発明による、処理ユニットのもう１つの組合せを示す図である。
【図１１】本発明によるチップ・パッケージ内の光インターフェースの統合を示す図である。
【図１２】図１１の光インターフェースを使用するプロセッサの１つの構成を示す図である。
【図１３】図１１の光インターフェースを使用するプロセッサのもう１つの構成を示す図である。
【図１４】本発明によるメモリ・システムの構造を示す図である。
【図１５】本発明による、第１ブロードバンド・エンジンから第２ブロードバンド・エンジンへのデータの書込を示す図である。
【図１６】本発明による処理ユニットの共用メモリの構造を示す図である。
【図１７】図１６に示されたメモリのバンクの１つの構造を示す図である。
【図１８】図１６に示されたメモリのバンクのもう１つの構造を示す図である。
【図１９】本発明による直接メモリ・アクセス・コントローラの構造を示す図である。
【図２０】本発明による直接メモリ・アクセス・コントローラの代替構造を示す図である。
【図２１】本発明によるデータ同期化の動作を示す図である。
【図２２】本発明によるデータ同期化の動作を示す図である。
【図２３】本発明によるデータ同期化の動作を示す図である。
【図２４】本発明によるデータ同期化の動作を示す図である。
【図２５】本発明によるデータ同期化の動作を示す図である。
【図２６】本発明によるデータ同期化の動作を示す図である。
【図２７】本発明によるデータ同期化の動作を示す図である。
【図２８】本発明によるデータ同期化の動作を示す図である。
【図２９】本発明によるデータ同期化の動作を示す図である。
【図３０】本発明によるデータ同期化の動作を示す図である。
【図３１】本発明によるデータ同期化の動作を示す図である。
【図３２】本発明によるデータ同期化の動作を示す図である。
【図３３】本発明によるデータ同期化の動作を示す図である。
【図３４】本発明によるデータ同期化の動作を示す図である。
【図３５】本発明によるデータ同期化の動作を示す図である。
【図３６】本発明のデータ同期化方式による、メモリ位置のさまざまな状態を示す３状態メモリ図である。
【図３７】本発明によるハードウェア・サンドボックスのキー制御テーブルの構造を示す図である。
【図３８】本発明によるハードウェア・サンドボックスのメモリ・アクセス・キーを記憶する方式を示す図である。
【図３９】本発明によるハードウェア・サンドボックスのメモリ・アクセス制御テーブルの構造を示す図である。
【図４０】図３７のキー制御テーブルおよび図３９のメモリ・アクセス制御テーブルを使用するメモリ・サンドボックスにアクセスするステップを示す流れ図である。
【図４１】本発明によるソフトウェア・セルの構造を示す図である。
【図４２】本発明によるリモート・プロシージャ・コールをＳＰＵに発行するステップを示す流れ図である。
【図４３】本発明によるストリーミング・データを処理する専用パイプラインの構造を示す図である。
【図４４】本発明によるストリーミング・データの処理で図４３の専用パイプラインによって実行されるステップを示す流れ図である。
【図４５】本発明によるストリーミング・データの処理で図４３の専用パイプラインによって実行されるステップを示す流れ図である。
【図４６】本発明によるストリーミング・データの処理の専用パイプラインの代替構造を示す図である。
【図４７】本発明によるＳＰＵによるアプリケーションおよびデータの並列処理を調整する絶対タイマの方式を示す図である。
【図４８】プログラムを初期化する処理ユニットと、依存ファイルをシナジスティック処理ユニットにロードするプログラムのランタイム・ローダを示す図である。
【図４９】組み合わされたファイルを受け取り、組み合わされたファイルに含まれるシナジスティック処理ユニット（ＳＰＵ）ファイルを抽出し、ＳＰＵファイルをＳＰＵに送る、ランタイム・ローダを示す図である。
【図５０】処理ユニット（ＰＵ）プログラムからプラグインを受け取るシナジスティック処理ユニット（ＳＰＵ）ファイルを示す図である。
【図５１】ＳＰＵ実行可能ファイルに対応するプラグインをシステム・メモリから独立に検索するシナジスティック処理ユニット（ＳＰＵ）を示す図である。
【図５２】組み合わされたファイルに含まれるさまざまなコード行を示すユーザ・コードを示す図である。
【図５３】依存ファイルに含まれるさまざまなコード行を示すユーザ・コードを示す図である。
【図５４】プログラムを実行し、プログラムのランタイム・ローダに制御を渡す、処理ユニット（ＰＵ）で行われるステップを示す流れ図である。
【図５５】処理ユニット（ＰＵ）からファイルを受け取り、そのファイルを実行するシナジスティック処理ユニット（ＳＰＵ）で行われるステップを示す流れ図である。
【図５６】システム・メモリを共用するメイン・プロセッサおよび複数の２次プロセッサを有する処理要素を示すブロック図である。
【図１】
2005100405.tif 000003
【図２】
2005100405.tif 000004
【図３】
2005100405.tif 000005
【図４】
2005100405.tif 000006
【図５】
2005100405.tif 000007
【図６】
2005100405.tif 000008
【図７】
2005100405.tif 000009
【図８】
2005100405.tif 000010
【図９】
2005100405.tif 000011
【図１０】
2005100405.tif 000012
【図１１】
2005100405.tif 000013
【図１２】
2005100405.tif 000014
【図１３】
2005100405.tif 000015
【図１４】
2005100405.tif 000016
【図１５】
2005100405.tif 000017
【図１６】
2005100405.tif 000018
【図１７】
2005100405.tif 000019
【図１８】
2005100405.tif 000020
【図１９】
2005100405.tif 000021
【図２０】
2005100405.tif 000022
【図２１】
2005100405.tif 000023
【図２２】
2005100405.tif 000024
【図２３】
2005100405.tif 000025
【図２４】
2005100405.tif 000026
【図２５】
2005100405.tif 000027
【図２６】
2005100405.tif 000028
【図２７】
2005100405.tif 000029
【図２８】
2005100405.tif 000030
【図２９】
2005100405.tif 000031
【図３０】
2005100405.tif 000032
【図３１】
2005100405.tif 000033
【図３２】
2005100405.tif 000034
【図３３】
2005100405.tif 000035
【図３４】
2005100405.tif 000036
【図３５】
2005100405.tif 000037
【図３６】
2005100405.tif 000038
【図３７】
2005100405.tif 000039
【図３８】
2005100405.tif 000040
【図３９】
2005100405.tif 000041
【図４０】
2005100405.tif 000042
【図４１】
2005100405.tif 000043
【図４２】
2005100405.tif 000044
【図４３】
2005100405.tif 000045
【図４４】
2005100405.tif 000046
【図４５】
2005100405.tif 000047
【図４６】
2005100405.tif 000048
【図４７】
2005100405.tif 000049
【図４８】
2005100405.tif 000050
【図４９】
2005100405.tif 000051
【図５０】
2005100405.tif 000052
【図５１】
2005100405.tif 000053
【図５２】
2005100405.tif 000054
【図５３】
2005100405.tif 000055
【図５４】
2005100405.tif 000056
【図５５】
2005100405.tif 000057
【図５６】
2005100405.tif 000058