装置であって、メッセージバス1420と、データバス1422と、ロード/ストアユニット1408と、を特徴とし、前記ロード/ストアユニットが、システムメモリ1416と通信するように構成されるシステムインタフェース5416と、前記データバスに結合されるデータインタフェース5420と、前記メッセージバスに結合されるメッセージインタフェース5418と、命令メモリ5405と、データメモリ5403と、前記データインタフェースに結合されるバッファ5406と;前記メッセージインタフェースに結合されるスレッドスケジューリング回路要素5401、5404と、前記データメモリ、前記バッファ、前記命令メモリ、前記スレッドスケジューリング回路要素、及び前記システムインタフェースに結合されるプロセッサ5402と、を有する、装置請求項1に記載の装置であって、前記ロード/ストアユニットが、前記プロセッサに結合され、且つ、中断されたスレッドのためのレジスタ状態をストアするように構成される保存/復元メモリ5414を更に特徴とする装置。請求項1又は2に記載の装置であって、前記ロード/ストアユニットが、処理回路要素変数のためのアドレスが生成され得るように、処理回路要素1402-1~1402-Rのためのアドレッシングモードを複製するように構成される前記プロセッサを更に特徴とする装置。請求項1、2又は3に記載の装置であって、前記ロード/ストアユニットが、前記メッセージインタフェースと前記プロセッサとの間に結合されるスカラ出力バッファ5412を更に特徴とする装置。請求項1、2、3、又は4に記載の装置であって、前記ロード/ストアユニットが、前記ロード/ストアユニットが前記処理回路要素のためのデータ構造をシステムメモリ1416からリトリーブするように、構成読み出しスレッドを実装するように構成され、前記データ構造が、並列化シリアルプログラムのために、前記処理回路要素の計算及びメモリリソースに少なくとも部分的に基づく、装置。システムであって、システムメモリ1416と、前記システムメモリに結合される処理クラスタと、を特徴とし、前記処理クラスタが、メッセージバス1420と、データバス1422と、パーティション1402-1~1402-Rに配される複数の処理ノード808-1~808-Nであって、各パーティションが前記データバス1422に結合されるバスインタフェースユニット4710-1~4710-Rを有し、各処理ノードが前記メッセージバスに結合される、前記複数の処理ノードと、前記メッセージバスに結合される制御ノード1406と、ロード/ストアユニット1408と、を含み、前記ロード/ストアユニットが、システムメモリ1416と通信するように構成されるシステムインタフェース5416と、前記データバスに結合されるデータインタフェース5420と、前記メッセージバスに結合されるメッセージインタフェース5418と、命令メモリ5405と、データメモリ5403と、前記データインタフェースに結合されるバッファ5406と、前記メッセージインタフェースに結合されるスレッドスケジューリング回路要素5401、5404と、前記データメモリ、前記バッファ、前記命令メモリ、前記スレッドスケジューリング回路要素、及び前記システムインタフェースに結合されるプロセッサ5402と、を有する、システム。請求項6に記載のシステムであって、前記ロード/ストアユニットが、前記プロセッサに結合され、且つ、中断されたスレッドのためのレジスタ状態をストアするように構成される保存/復元メモリ5414を更に特徴とする、システム。請求項6又は7に記載のシステムであって、前記ロード/ストアユニットが、処理回路要素変数のためのアドレスが生成され得るように、処理回路要素1402-1~1402-Rのためのアドレッシングモードを複製するように構成される前記プロセッサを更に特徴とするシステム。請求項6、7又は8に記載のシステムであって、前記ロード/ストアユニットが、前記メッセージインタフェースと前記プロセッサとの間に結合されるスカラ出力バッファ5412を更に特徴とするシステム。請求項6、7、8又は9に記載のシステムであって、前記ロード/ストアユニットが、前記ロード/ストアユニットがシステムメモリ1416から前記処理回路要素のためのデータ構造をリトリーブするように、構成読み出しスレッドを実装するように構成され、前記データ構造が、少なくとも部分的に並列化シリアルプログラムのための前記処理回路要素の計算及びメモリリソースに基づく、システム。請求項6、7、8、9又は10に記載のシステムであって、前記システムが、前記データバスと前記データインタフェースとの間に結合されるデータインターコネクト814を更に特徴とするシステム。請求項6、7、8、9、10又は11に記載のシステムであって、前記システムが、前記制御ノード及び前記システムインタフェースに結合されるシステムバス1326、1328と、前記システムメモリ及び前記システムバスに結合されるメモリコントローラ1304と、前記システムバスに結合されるホストプロセッサ1316と、を更に特徴とするシステム。図2では、並列処理を実行するSOC用アプリケーションの例が見られる。この例では、撮像デバイス1250が示される。この例えば携帯電話又はカメラであり得る撮像デバイス1250は、概して、画像センサ1252、SOC1300、ダイナミックランダムアクセスメモリDRAM1315、フラッシュメモリ1314、ディスプレイ1254、及び電力管理集積回路PMIC1256を含む。動作では、画像センサ1252は、静止画像又はビデオであり得る画像情報を捕捉することができ、この画像情報はSOC1300及びDRAM1315によって処理され得、不揮発性メモリ即ち、フラッシュメモリ1314に保存され得る。また、フラッシュメモリ1314に保存される画像情報は、SOC1300及びDRAM1315の使用によって、ディスプレイ1254上で使用するために表示され得る。また、撮像デバイス1250は、可搬型であることが多く、電源としてバッテリを含む。SOC1300によって制御され得るPMIC1256は、バッテリ寿命を長持ちさせるために電力使用量の調整を補助し得る。図3では、本開示の実施形態に従ったシステムオンチップ又はSOC1300の例が図示されている。この典型的には、OMAP登録商標等の集積回路又はICであるSOC1300は、概して上述の並列処理を実行する処理クラスタ1400、及び、上で説明及び参照されたホスト環境を提供するホストプロセッサ1316を概して含む。ホストプロセッサ1316は、ワイド即ち、32ビット、64ビット等RISCプロセッサ例えばARMCortex-A9等であり得、バスアービトレータ1310、バッファ1306、ホストプロセッサ1316がインタフェースバス又はIバス1330上で周辺インタフェース1324にアクセスすることを許可するバスブリッジ1320、ハードウェアアプリケーションプログラミングインタフェースAPI1308、及び割り込みコントローラ1322と、ホストプロセッサバス又はHPバス1328上で通信する。処理クラスタ1400は、典型的に、例えば、荷電結合デバイス、又はCCDインタフェースであり得、オフチップデバイスと通信し得る機能回路要素1302、バッファ1306、バスアービトレータ1310、及び周辺インタフェース1324と、処理クラスタバス又はPCバス1326上で、通信する。この構成を用いて、ホストプロセッサ1316は、API1308を介して情報を提供する即ち、所望の並列実装に適合するように処理クラスタ1400を構成することができ、一方、処理クラスタ1400及びホストプロセッサ1316はいずれも、フラッシュインタフェース1312を介してフラッシュメモリ1314に、メモリコントローラ1304を介してDRAM1315に、直接アクセスできる。また、JointTestActionGroupJTAGインタフェース1318を介して、テスト及びバウンダリスキャンが実行され得る。図4を参照すると、本開示の実施形態に従った並列処理クラスタ1400の例が示されている。典型的には、処理クラスタ1400はハードウェア722に対応する。処理クラスタ1400は、概して、パーティション1402-1~1402-Rを含む。これらは、ノード808-1~808-N、ノードラッパー810-1~810-N、命令メモリ1404-1~1404-R、及び以下で詳しく説明するバスインタフェースユニット又はBIU4710-1~4710-Rを含む。ノード808-1~808-Nは、各々データインターコネクト814に各々のBIU4710-1~4710-R及びデータバス1422を介して結合され、パーティション1402-1~1402-Rのための制御及びメッセージが制御ノード1406からメッセージ1420を介して提供される。また、グローバルロード/ストアGLSユニット1408及び共有機能メモリ1410は、後述のようにデータ移動のための付加的な機能を提供する。それに加えて、レベル3又はL3キャッシュ1412、概して、IC内には含まれない周辺装置1414、典型的にはフラッシュメモリ1314及び/又はDRAM1315、並びにSOC1300内に含まれないその他のメモリであるメモリ1416、及びハードウェアアクセラレータHWAユニット1418が処理クラスタ1400と共に用いられる。また、データ及びアドレスを制御ノード1406に通信するように、インタフェース1405が提供される。処理クラスタ1400は、概して、データ転送のためにプッシュモデルを使用する。データ転送は要求応答型のアクセスではなく、概してポステッドライトとして現れる。これは、データ転送が一方向であるため要求応答アクセスに比べてグローバルインターコネクト即ち、データインターコネクト814の占有を2分の1に減らすという利点を有する。概して、インターコネクト814を介して要求をルーティングし、その後、応答が要求元へルーティングされ、その結果インターコネクト814上で2つの遷移が生成されることは望まれない。プッシュモデルは単一転送を生成する。これは、ネットワークサイズが増大するとネットワークレイテンシが増大するため、またこのことが要求応答型トランザクションのパフォーマンスを低下させることは避けられないことであるため、スケーラビリティに関して重要である。プッシュモデルは、データフロープロトコル即ち、812-1~812-Nと同様に、グローバルデータトラフィックを、正確さのために用いられるものまで概して最小化する一方、ローカルノードの利用率に対するグローバルデータフローの影響も概して最小化する。大量のグローバルトラフィックであってもノード即ち、808-iのパフォーマンスに対する影響は、通常、皆無に近い。ソースはデータを後述するグローバル出力バッファに書き込み、転送成功の確認を要求することなく継続する。データフロープロトコル即ち、812-1~812-Nは、概して、インターコネクト814で単一転送を用い、データをあて先へ移動する最初の試みでの転送が成功することを確実にする。後述するグローバル出力バッファは例えば最大16出力まで保持することができるため、出力のための瞬時グローバル帯域幅が不充分になることに起因するノード即ち、808-iのストールの可能性が非常に低くなる。更に、瞬時帯域幅は、要求応答トランザクション又は転送失敗の繰り返しによる影響を受けない。最後に、プッシュモデルはプログラミングモデルに一層密接に適合する。言い換えるとプログラムは自己データをフェッチせずに、その代わりに、プログラムの入力変数及び/又はパラメータは呼び出される前に書き込まれる。プログラミング環境では、入力変数の初期化は、ソースプログラムによるメモリへの書き込みとして行われる。処理クラスタ1400内では、これらの書き込みがポステッドライトに変換され、変数の値をノードコンテキストにポピュレートさせる。後述するグローバル入力バッファは、ソースノードからデータを受け取るために用いられる。各ノード808-1~808-Nのためのデータメモリが単一ポートであるため、入力データの書き込みが、ローカルの単一入力多重データSIMDによる読み出しとコンフリクトすることがあり得る。入力データをグローバル入力バッファへ受け入れ、そこで入力データが空きのデータメモリサイクルを待つことができることによって、この競合は回避される即ち、SIMDアクセスとのバンクコンフリクトはない。データメモリは、例えば32バンクを有し得るため、直ちにバッファがフリーになる可能性が非常に高い。しかしながら、転送を確認するためのハンドシェイキングがないので、ノード即ち、808-iはフリーのバッファエントリを持つはずである。所望とされる場合は、グローバル入力バッファは、バッファ位置をフリーにするために、ローカルノード即ち、808-iをストールさせてデータメモリに強制的に書き込みを行うことができるが、このイベントは極めて希であるべきである。典型的には、グローバル入力バッファは2つの別々のランダムアクセスメモリRAMとして実装されて、一方がデータメモリへ読み出されるべき状態にある間、他方がグローバルデータを書き込むための状態になり得るようにする。メッセージングインターコネクトは、グローバルデータインターコネクトとは分かれているが、同様にプッシュモデルを使用する。システムレベルでは、所望のスループットにスケーリングされた多数のノードを備えるSMP又は対称型多重処理のように、ノード808-1~808-Nが処理クラスタ1400内で複製される。処理クラスタ1400は極めて多数のノードにまでスケーリングし得る。ノード808-1~808-Nはパーティション1402-1~1402-Rにグループ分けされ、各パーティションは1つ又は複数のノードを有する。パーティション1402-1~1402-Rは、ノード間のローカル通信を増大させることによって及びより大きなプログラムで一層大量の出力データを計算させることによってスケーラビィリティを促進し、その結果、所望のスループット要件を達成する可能性を更に高める。パーティション即ち、1402-i内では、ノードはローカルインターコネクトを用いて通信し、グローバルリソースを必要としない。また、パーティション即ち、1404-i内のノードは、排他的命令メモリを用いる各ノードから共通命令メモリを用いる全てのノードまで、任意の粒度で、命令メモリ即ち、1404-iを共有することができる。例えば、3つのノードが命令メモリの3つのバンクを共有し、第4のノードが命令メモリの排他的バンクを有することができる。ノードが命令メモリ即ち、1404-iを共有するとき、それらのノードは、概して、同じプログラムを同期的に実行する。また、処理クラスタ1400は非常に多数のノード即ち、808-i及びパーティション即ち、1402-iをサポートし得る。しかしながら、1つのパーティションについて4以上のノードを持つと概してノンユニフォームメモリアクセスNUMAアーキテクチャに類似するため、パーティション毎のノードの数は通常は4つに限定されている。この例では、パーティションは、後でインターコネクト814に関連して説明する1つ又は複数のクロスバーを介して接続される。クロスバーは概して横断帯域幅が一定している。処理クラスタ1400は、現在、サイクル毎に1ノード幅のデータ例えば、64、16ビットピクセルを転送するように設計されており、4サイクルに亘り、1サイクルにつき16ピクセルの4転送に区分される。処理クラスタ1400は、概して、レイテンシトレラントであり、インターコネクト814がほぼ飽和この状態を達成するのは合成プログラム以外では極めて難しいことに留意されたいであっても、ノードバッファリングが、概して、ノードストールを防止する。典型的には、処理クラスタ1400はパーティション間で共有する下記のグローバルリソースを含む。1制御ノード1406。これはメッセージバス1420でシステムワイドのメッセージングインターコネクト、イベント処理及びスケジューリング、及びホストプロセッサ及びデバッガこれらは全て後で詳しく説明するへのインタフェースを提供する。2GLSユニット1408。これはプログラマブル縮小命令セットRISCプロセッサを含み、システムデータ移動を可能にする。システムデータ移動は、GLSデータ移動スレッドとして直接コンパイルされ得るCプログラムによって記述され得る。これによって、ソースコードを修正することなく、クロスホスト環境でのシステムコードの実行が可能になり、また、システム又は後述するSIMDデータメモリ内の任意のアドレス変数のセットから別の任意のアドレス変数のセットに移動できるため、ダイレクトメモリアクセスよりもより一般的である。GLSユニット1408は、例えば0-サイクルのコンテキストスイッチを備え、マルチスレッド化され、例えば、最大16スレッドまでサポートする。3共有機能メモリ1410。これは、一般のルックアップテーブルLUT及び統計収集機能ヒストグラムを提供する大型共有メモリである。また、これは大型共有メモリを使用して、リサンプリング及び歪補正等のノードSIMDによりコストの理由で充分サポートされていないピクセル処理をサポートし得る。この処理はネイティブタイプとして、スカラ、ベクトル、及び2Dアレイを実装する例えば6発行命令RISCプロセッサ即ち、後で詳しく説明するSFMプロセッサ7614を用いる。4ハードウェアアクセラレータ1418。これは、プログラマビリティを必要としない機能のため、或いは電力及び/又は面積を最適化するために組み込まれ得る。アクセラレータは、サブシステムにはシステム内の他のノードとして現れ、制御及びデータフローに参加し、イベントを作成可能であり、スケジューリング可能である。またデバッガにとっては可視的である。ハードウェアアクセラレータは、適用可能であるときは、専用のLUT及び統計収集を有し得る。5データインターコネクト814及びシステムオープンコアプロトコルOCPL3接続1412。これらは、ノードパーティション、ハードウェアアクセラレータ、及びシステムメモリ、及び、データバス1422上の周辺装置の間のデータ移動を管理する。ハードウェアアクセラレータは、L3へのプライベート接続も有し得る。6デバッグインタフェース。これらは、図には示されていないが、本明細書中に記載される。GLSユニット1408は、データタイプ、オブジェクト、及び変数の割り振りの一般的Cモデルを、システムメモリ1416、周辺装置1414、及びノード808-i適用する場合ハードウェアアクセラレータを含む等のノード間のデータ移動にマッピングし得る。これにより機能上処理クラスタ1400の動作と同等の一般的Cプログラムが可能になり、シミュレーションモデルやシステムダイレクトメモリアクセスDMAの近似を必要としない。GLSユニットは、システムデータ構造及びノードデータ構造へのランダムアクセスを用い、Cコンパイラの対象である充分に一般的なDMAコントローラを実装し得る。この実装は、使用可能なリソースの利用率に関して、たとえデータ移動がCプログラムによって制御されている場合でも、データ移動の効率が従来のDMAコントローラの効率に近くなる。しかしながら、それは、一般に、システムDMAとプログラム変数との間のマッピングの需要を回避し、DMAペイロードにデータをパック及びアンパックするための多くのサイクルの可能性を回避する。また、それはデータ伝送を自動的にスケジューリングし、それによってDMAレジスタ設定及びDMAスケジューリングのためのオーバーヘッドが回避される。スケジュールミスマッチに起因するオーバーヘッドや非効率性がほとんど無くデータが伝送される。GLSユニット1408は、データタイプ、オブジェクト、及び変数の割り振りの一般的Cモデルを、システムメモリ1416、周辺装置1414、及びノード808-i適用する場合ハードウェアアクセラレータを含む等のノード間のデータ移動にマッピングし得る。これにより機能上処理クラスタ1400の動作と同等の一般的Cプログラムが可能になり、シミュレーションモデルやシステムダイレクトメモリアクセスDMAの近似を必要としない。GLSユニットは、システムデータ構造及びノードデータ構造へのランダムアクセスを用い、Cコンパイラの対象である充分に一般的なDMAコントローラを実装し得る。この実装は、使用可能なリソースの利用率に関して、たとえデータ移動がCプログラムによって制御されている場合でも、データ移動の効率が従来のDMAコントローラの効率に近くなる。しかしながら、それは、一般に、システムDMAとプログラム変数との間のマッピングの需要を回避し、DMAペイロードにデータをパック及びアンパックするための多くのサイクルの可能性を回避する。また、それはデータ伝送を自動的にスケジューリングし、それによってDMAレジスタ設定及びDMAスケジューリングのためのオーバーヘッドが回避される。スケジュールミスマッチに起因するオーバーヘッドや非効率性がほとんど無くデータが伝送される。図5を参照すると、GLSユニット1408がより詳細に示されている。GLSユニット1408の主な処理構成要素はGLSプロセッサ5402である。GLSプロセッサ5402は、上述したノードプロセッサ4322と同様の一般的な32ビットRISCプロセッサであり得るが、GLSユニット1408内での使用にカスタマイズされてもよい。例えば、コンパイルされたプログラムが所望に応じてノード変数のアドレスを生成できるように、GLSプロセッサ5402がノード即ち、808-iのためのSIMDデータメモリのためのアドレッシングモードを複製することができるようカスタマイズされてもよい。また、GLSユニット1408は、概して、コンテキスト保存メモリ5414、スレッドスケジューリング機構即ち、メッセージリスト処理5402及びスレッドラッパー5404、GLS命令メモリ5405、GLSデータメモリ5403、リクエストキュー及び制御回路5408、データフロー状態メモリ5410、スカラ出力バッファ5412、グローバルデータIOバッファ5406、及びシステムインタフェース5416を含み得る。また、GLSユニット5402は、インターリーブされたシステムデータをデインターリーブされた処理クラスタデータに変換及びその逆を行う、インターリービング及びデインターリービング用の回路要素、及び構成読み出しスレッドConfigurationReadthreadを実装するための回路要素を含み得る。構成読み出しスレッドは、処理クラスタ1400のための構成即ち、並列化されたシリアルプログラムのために、処理クラスタ1400の計算及びメモリリソースに少なくとも部分的に基づくデータ構造をプログラム、ハードウェア初期化等を含むメモリ1416からフェッチし、それを処理クラスタ1400にディストリビュートする。GLSユニット1408では3つのメインインタフェース即ち、システムインタフェース5416、ノードインタフェース5420、及びメッセージングインタフェース5418があり得る。システムインタフェース5416では、典型的に、システムメモリ1416及び周辺装置1414へのアクセスのため、システムL3インターコネクトへの接続がある。このインタフェース5416は概して、各々256ビットL3パケットの例えば128ラインを格納するために充分な大きさの2つのバッファピンポン配置を有する。メッセージングインタフェース5418では、GLSユニット1408は、オペレーショナルメッセージ即ち、スレッドスケジューリング、シグナルリング終了イベント、及びグローバルLSユニット構成を送信/受信でき、処理クラスタ1400に対するフェッチされた構成をディストリビュートでき、更に、送信スカラ値を宛先コンテキストに送信することが可能である。ノードインタフェース5420では、グローバルIOバッファ5406は概してグローバルデータインターコネクト814に結合される。概して、このバッファ5406は、ノードSIMDデータの64ライン例えば、各ラインは16ビットの64ピクセルを含み得るを格納するために充分な大きさである。また、バッファ5406は、1サイクル当たり16ピクセルのグローバル伝送幅にマッチングするように、256×16×16ビットとして編成され得る。ここで、メモリ5403、5405、及び5410を参照すると、各々が概してレジデントスレッドに関連する情報を含む。GLS命令メモリ5405は、スレッドがアクティブであるか否かに拘らず、全てのレジデントスレッドのための命令を概して含む。GLSデータメモリ5403は、全てのレジデントスレッドのための変数、テンポラリ、及びレジスタスピル/フィル値を概して含む。また、GLSデータメモリ5403は、スレッドコンテキスト記述子及び宛先リストノード内の宛先記述子に似ているを含む、スレッドコードから隠されたエリアを有し得る。また、宛先コンテキストへの出力を含み得るスカラ出力バッファ5412がある。このデータは水平グループ内の多数の宛先コンテキストへコピーされるべき順番に概して保たれ、処理クラスタ1400の処理パイプラインにマッチングするようにスカラデータの伝送をパイプライン化する。データフロー状態メモリ5410は処理クラスタ1400からスカラ入力を受け取る各スレッドのためのデータフロー状態を概して含み、この入力に依存するスレッドのスケジューリングを制御する。典型的に、GLSユニット1408のためのデータメモリは、いくつかの部分に構成される。データメモリ5403のスレッドコンテキストエリアはGLSプロセッサ5402のためのプログラムには可視であるが、データメモリ5403の残りの部分及びコンテキスト保存メモリ5414はプライベートのままである。コンテキスト保存/復元又はコンテキスト保存メモリは、通常、全ての中断されたスレッド即ち、16×l6×32ビットのレジスタコンテンツのためのGLSプロセッサ5402レジスタのコピーである。データメモリ5403内の他の2つのプライベートエリアは、コンテキスト記述子及び宛先リストを含む。リクエストキュー及び制御5408は、GLSプロセッサ5402のためのロード及びストアアクセスをGLSデータメモリ5403の外で概して監視する。これらのロード及びストアアクセスは、スレッドにより、システムデータを処理クラスタ1400へ移動及びその逆を行うように実行されるが、データは通常、GLSプロセッサ5402の中を物理的に流れることはなく、またそれはデータ上で動作を概して実行しない。代わりに、リクエストキュー5408がスレッドの移動をシステムレベルでの物理的移動に変換し、ロードを移動のためのストアアクセスにマッチングさせ、且つシステムL3及び処理クラスタ1400データフロープロトコルを用いて、アドレス及びデータシーケンシング、バッファ割り付け、フォーマッティング、及び、伝送制御を実行する。コンテキスト保存/復元エリア又はコンテキスト保存メモリ5414は概して、GLSプロセッサ5402のための全てのレジスタを一度に保存及び復元し得るワイドランダムアクセスメモリ又はRAMであり、0-サイクルコンテキスト切り替えをサポートする。スレッドプログラムは、アドレス計算、状態試験、ループ制御等のためのデータアクセス当たり数サイクルを必要とし得る。大量の潜在的スレッドがあるため、且つ、目的が、ピークスループットをサポートするために充分なように全てのスレッドをアクティブに保つことであるため、最小サイクルオーバーヘッドでコンテキスト切り替えが起こることが重要であり得る。また、単一スレッドの移動が全てのノードコンテキストのためのデータ例えば、水平グループ内のコンテキスト当たりの1変数当たり64ピクセルを伝送するという事実によって、スレッド実行時間が部分的にオフセットされ得ることに留意すべきであろう。これは、ピークピクセルスループットをサポートする一方で、相当大きな数のスレッドサイクルを可能にし得る。ここで、スレッドスケジューリング機構を参照すると、この機構はメッセージリスト処理5401及びスレッドラッパー5404を概して含む。スレッドラッパー5404は、典型的に、GLSユニット1408のためのスレッドをスケジューリングするために、入ってくるメッセージをメールボックスに受け取る。概して、スレッド当たり1つのメールボックスエントリがあり、メールボックスエントリは、そのスレッドのための初期プログラムカウントや、スレッドの宛先リストのプロセッサデータメモリ即ち、4328内の位置等の情報を含み得る。また、このメッセージは、オフセット0で始まり、スレッドのプロセッサデータメモリ即ち、4328コンテキストエリアに書き込まれる、パラメータリストを含み得る。また、スレッドが中断されるときスレッドプログラムカウントを保存するため、及びデータフロープロトコルを実装するために宛先情報を置くために、スレッド実行中にもメールボックスエントリが用いられる。GLSユニット1408は、メッセージングに加えて、構成処理も実行する。典型的に、この構成処理は構成読み出しスレッドを実装し得る。構成読み出しスレッドは、処理クラスタ1400のための構成プログラム、ハードウェア初期化等を含むをメモリからフェッチし、それを処理クラスタ1400の残りの部分にディストリビュートする。典型的に、この構成処理は、ノードインタフェース5420で実行される。加えて、GLSデータメモリ5403は、コンテキスト記述子、宛先リスト、及びスレッドコンテキストのためのセクション又はエリアを概して含む。典型的に、スレッドコンテキストエリアはGLSプロセッサ5402に対して可視であり得るが、GLSデータメモリ5403の残りのセクション又はエリアは可視でなくてもよい。GLSプロセッサ5402のためのプログラムが正しく機能するためには、それが、処理クラスタ1400内の他の32ビットプロセッサと概して一貫性があり、またノードプロセッサ即ち、ノードプロセッサ4322及び以下で説明するSFMプロセッサ7614と概して一貫性があるメモリの見え方を有するべきであろう。概してGLSプロセッサ5402は、他のプロセッサ及び周辺装置即ち、1414と同等の、システム変数及びデータ構造のためのアドレッシングモードを備える、汎用の32ビットプロセッサであるため、処理クラスタ1400と共通のアドレッシングモードを有することは自然なことである。GLSプロセッサ5402がデータタイプ及びコンテキスト編成と共に正しく動作し、Cプログラミングモデルを使用してデータ伝送を正しく実行するためには、ソフトウェアが問題となる。概念上、GLSプロセッサ5492はベクトルプロセッサの特殊形式として考えられ得るここで、ベクトルは、例えばフレーム内の走査線上の全てのピクセルの形式、又は、例えばノードコンテキスト内の水平グループの形式である。これらのベクトルは、フレーム幅及びコンテキスト編成に応じて可変数の要素を有し得る。また、ベクトル要素は可変サイズ及びタイプであり得る。また、例えば、ピクセルが同じライン上でピクセルの他のタイプとインターリーブされ得るため、隣接する要素は必ずしも同じタイプではない。GLSプロセッサ5402のためのプログラムは、システムベクトルをノードコンテキストにより用いられるベクトルに変換し得る。これは、オペレーションの一般的なセットではなく、特定の使用例のためのノード-コンテキスト編成から抽象化されたGLSプロセッサ5402のためのプログラムの順序付け及び保持に役立つデータフロープロトコルを用い、通常、これらのベクトルの移動及びフォーマッティングに関与する。システムデータは、異なるピクセルタイプ、データサイズ、インターリービングパターン、パッキング等を反映し得る、多数の異なるフォーマットを有し得る。ノード即ち、808-iでは、SIMDデータメモリピクセルデータは、例えばピクセル当たり16ビットで整合された64ピクセルの、ワイドで、デインターリーブされたフォーマットである。システムデータとノードデータとの間の通信は、システムアクセスが水平グループの全ての入力コンテキストのための入力データを提供することを意図されているという事実によって更に複雑化される。このグループの構成及びその幅は、アプリケーションプログラムの外部のファクタに依存する。このレベルの詳細、即ち特定のノードフォーマットへの及びそれからのフォーマット変換か、又は可変のノードコンテキスト編成のいずれか、をアプリケーションプログラムに晒すことは一般に極めて望まれないことである。これらは、典型的に、アプリケーションレベルで扱うには非常に複雑であり、詳細は実装に依存する。GLSプロセッサ5402のためのソースコードでは、システム変数のローカル変数への値の割り振りは、システム変数が、ローカルデータタイプに変換され得るデータタイプを有していること、及びその逆を一般に必要とし得る。基本システムデータタイプの例は、文字及び短い整数である。これらは、8、10、又は12ビットのピクセルに変換され得る。また、システムデータは、インターリーブされた又はデインターリーブされたかのいずれかのフォーマットの、ピクセルのパックされたアレイ等の合成タイプを有し得る。また、ピクセルは、Bayer、RGB、YUV等のような種々のフォーマットを有し得る。基本ローカルデータタイプの例は、整数32ビット、短い整数16ビット、及び、一対の短い整数32ビットにパックされた2つの16ビット値である。基本システム及びローカルデータタイプの変数は、アレイ、構造、及びこれらの組合せにおける要素として現れ得る。システムデータ構造は、他のCデータタイプとの組合せで、互換性データ要素を含み得る。ローカルデータ構造は、通常、要素としてローカルデータタイプを含み得る。ノード即ち、808-iは、環状バッファをハードウェア内に直接実装して、トップエッジ及びボトムエッジバウンダリ処理を含む垂直コンテキスト共有をサポートする独自のタイプのアレイを提供する。典型的に、GLSプロセッサは、GLSユニット1408に含まれ、以下を行なう。1Cオブジェクトクラスを使用して、ユーザから上述の詳細を抽象化する。2プログラミングモデルにマッピングするシステムへ及びそのシステムからのデータフローを提供する。3処理クラスタ1400のデータ依存性フレームワークに適合する、非常に一般的な高性能ダイレクトメモリアクセスと同等のことを実行する。4効率的な処理クラスタ1400動作のために自動的にデータフローをスケジューリングする。アプリケーションプログラムは、インターリーブされたフォーマットインスタンスのフォーマットは属性によって特定されるでシステムピクセルを表すために、フレームFrameと称されるクラスのオブジェクトを用いる。Frameは、所与の垂直オフセットでの走査線の位置を特定するアレイインデックスを備えて、ラインのアレイとして編成される。Frameオブジェクトの異なるインスタンスは、異なるピクセルタイプの異なるインターリーブされたフォーマットを表し得る。これらのインスタンスの多数が同じプログラムで用いられ得る。Frameオブジェクト内の割り振り演算子は、データが処理クラスタ1400に伝送されるか、又は処理クラスタ1400から伝送されるかに依存して、そのフォーマットに適切なデインターリービング又はインターリービング動作を実行する。ローカルデータタイプ及びコンテキスト編成の詳細は、クラスラインLineの概念を導入することによって抽象化されるGLSユニット1408ではBlockデータは、ブロックに多数のラインを提供する明示的な繰り返しを備える、Lineデータのアレイとして扱われる。Lineオブジェクトは、GLSプロセッサ5402のためのプログラムによって実装されると、互換性のシステムデータタイプからの変数の割り振り、又は互換性のシステムデータタイプへの割り振り以外の動作は概してサポートしない。Lineオブジェクトは、例えば、ピクセルタイプ、ノードの入力及び出力の両方、データがパックされるか否か、データがどのようにパックされアンパックされるか、データがインターリーブされるか否か、インターリービング及びデインターリービングパターン、及びノードのコンテキスト構成などの、システム/ローカルデータ通信の全ての属性を通常、カプセル化する。図6を参照すると、GLSプロセッサ5402の画像処理アプリケーションのための読み出し及び書き込みスレッドの概念的動作の例が示されている。プログラマーから見ると、この例では、フレームはインターリーブされたBayerピクセルのバッファで概して構成される。インターリーブされたピクセル上で動作するのは、共有機能メモリ1410内のノード即ち、808-i又はSIMDにとって概して非効率である。理由は、通常、異なる動作は異なるピクセルタイプ上で実行され、そのため、単一命令は概してインターリーブされたフォーマットの全てのピクセルに適用され得ないからである。この理由により、図6のノードコンテキストに示されるLineデータは、デインターリービングによって取得される。システムデータは必ずしもインターリーブされる必要はない。例えば、アプリケーションはシステムメモリ1416を、処理クラスタ1400によって使用されるデインターリーブされたフォーマットのままの中間結果を得るために使用し得る。しかしながら、殆どの入力及び出力フォーマットはインターリーブされる。GLSユニット1408はこれらのフォーマットとデインターリーブされた処理クラスタ1400表現との間の変換を行なうべきであろう。GLSプロセッサ5402は、システムフォーマット又はノードコンテキストフォーマットのいずれかでピクセルのベクトルを処理する。しかしながら、この例のGLSプロセッサ5402のためのデータパスは、これらのベクトル上ではどの動作も直接実行しない。この例で、プログラミングモデルによってサポートされ得る動作は、FrameからLine、又は共有機能メモリ1410ブロックタイプへの割り振り、及びその逆であり、Line又はBlockオブジェクト上で動作する処理クラスタノードによってFrameオブジェクト上での直接動作と同等のことを達成するために必要とされる任意のフォーマッティングを実行する。フレームのサイズは幾つかのパラメータによって決定される。幾つかのパラメータとは、ピクセルタイプの数、ピクセル幅、バイトバウンダリーへのパディング、及び、走査線当たりのピクセルの数及び走査線の数におけるフレームの幅及び高さを含む。これらのパラメータは解像度に応じて変化し得る。フレームは処理クラスタ1400コンテキストにマッピングされる。処理クラスタ1400コンテキストは実際の像よりもより幅が狭い水平グループ、フレーム分割、として通常編成される。フレーム分割は、Line又はBlockタイプとしての処理のために、処理クラスタ1400の中でスワップされる。この処理は結果を生成し、結果が別のFrameであるとき、その結果は通常、フレーム分割上の処理クラスタ1400動作の部分的中間結果から、再構築される。クロスホストのCプログラミング環境では、フレーム分割を処理するためにハードウェアで必要とされる複雑性を概して除去するために、クラスLineのオブジェクトは、この例の像の全体の幅であるとみなされる。この環境では、Lineオブジェクトのインスタンスが走査線全体に亘る水平方向の繰り返しを含む。Frameオブジェクトの詳細は、オブジェクト実装によって抽象化されず、デインターリービング及びインターリービングのために必要とされるビットレベルのフォーマッティングを隠すために、及び、GLSプロセッサ5402のための命令に変換可能にするために、Frameオブジェクト内のイントリンシックによって抽象化される。これによって、クロスホストのCプログラムが、処理クラスタ1400の環境に依存せずに、処理クラスタ1400の環境での実行と同等の結果を得ることが可能になる。処理クラスタ1400のためのコード生成環境では、Lineはスカラタイプ一般に整数に等しいであり、例外は、コード生成が、SIMDデータメモリからのアクセスのための水平ピクセルオフセットに対応するアドレッシング属性をサポートすることである。この例の走査線上の繰り返しは、SIMDでの並列動作、ノード即ち、808-i上のコンテキスト間の繰り返し、及びノードの並列動作の組合せによって達成される。フレーム分割は、フレーム及びフレーム分割のパラメータを知っているホストソフトウェア、ホストから送られるパラメータを使用するGLSソフトウェア、及びデータフロープロトコルを用いて右端のバウンダリを検出するハードウェアの組合せによって制御され得る。FrameはGLSプログラムによって実装されるオブジェクトクラスである。例外は、クラス実装のほとんどが、後述するように、GLSプロセッサ5402のための命令によって直接達成されることである。Frameオブジェクトのために定義されるアクセス関数は、ハードウェアがアクセス及び動作フォーマッティングを制御し得るように、所与のインスタンスの属性をハードウェアにロードするという副次的な効果を有する。これらの動作は、所望のスループットでソフトウェアに実装するには、概して非効率過ぎるであろうし、多数のスレッドがアクティブである場合は特にそうである。Frameオブジェクトの幾つかのアクティブなインスタンスがあり得るので、任意の所与の時点で、ハードウェア内でアクティブな幾つかの構成があることが予想される。オブジェクトが例示されると、コンストラクタがそのオブジェクトに属性を関連付けする。所与のインスタンスのアクセスは、そのインスタンスの属性をハードウェアにロードする。これは概念上は、インスタンスのデータタイプを定義するハードウェアレジスタと似ている。各インスタンスがそれ自体の属性を有するため、多数のインスタンスがアクティブになり得るし、各々が、フォーマッティングを制御するための、それら自体のハードウェア設定を有する。読み出しスレッド及び書き込みスレッドは、独立プログラムとして書かれる。そのため、それらのそれぞれの制御及びデータフローに基づいて各々が独立してスケジューリングされ得る。下記の2つのセクションは、読み出しスレッド及び書き込みスレッドの例を提供し、スレッドコード、Frameクラス宣言、及び、非常に少数の命令を用い、非常に複雑なピクセルフォーマッティングで、これらがどのように大きなデータ伝送を実装するために用いられるかを示す。読み出しスレッドは、システムデータを表す変数を、処理クラスタ1400プログラムへの入力を表す変数に割り振る。これらの変数は、スカラデータを含む任意のタイプであり得る。概念的には、読み出しスレッドは、例えば、固定幅のフレーム分割内で垂直方向に、繰り返しの幾つかの形式を実行する。ループ内では、Frameオブジェクト内のピクセルは、Frameの詳細、及びフレーム分割の編成Lineの幅がソースコードから隠されて、Lineオブジェクトに割り振られる。また、他のベクトル又はスカラタイプの割り振りもあり得る。各ループ繰り返しの終わりに、宛先処理クラスタ1400プログラムがSet_Validを用いて呼び出される。ループ繰り返しは通常、データのハードウェア伝送に関して非常に速く実行する。ループ実行は、所望の伝送を実行するようにハードウェアバッファ及び制御を構成する。繰り返しの終わりに、タスク切り替え命令によってスレッド実行が中断されるが、ハードウェア伝送は継続する。これは、他のスレッドを実行するためにGLSプロセッサ5402をフリーにする。このことは、単一のGLSプロセッサ5402プロセッサが最大例えば16スレッドの伝送を制御することがあり得るため、重要なことであり得る。ハードウェア伝送が完了すると、中断されたスレッドが再び実行可能にされる。ベクトル出力は通常、繰り返しキューのテールでのエントリによって、制御される。このエントリ及び他のエントリはスカラデータを制御する。この理由は、図7に示すように、スレッドから直接ベクトルデータを受け取らないプログラムへのスカラパラメータの出力をサポートするためである。この例では、読み出しスレッドは、プログラムAにベクトルデータを、プログラムA~Dにスカラデータを提供する。データフローのこのスタイルは、プログラムA~Dの並列実行の潜在性を消すシリアル化を導入する。このケースでは、並列実行は、パイプライン実行によって達成されて、そのため、プログラムAが読み出しスレッドの繰り返しNからデータを受け取り、実行し、プログラムBの同じ繰り返しNにデータを出力する、という様に行なわれるようにする。実行の任意の所与の時点で、プログラムA~Dは、それぞれ読み出しスレッドの繰り返しN~N-3に基づいて実行する。これをサポートするために、読み出しスレッドは、繰り返しN~N-3のためのデータを同時に出力するべきであろう。そうでない場合、読み出しスレッドの繰り返しはその繰り返しの全ての出力とインターロックし、読み出しスレッドの繰り返しNは、繰り返しNのための入力を受け取るためにプログラムDを待たなければならず、このインタバルの間、他のプログラムは中断されることになろう。処理パイプラインの同レベルコンテキスト記述子の出力遅延と同じ値を備えるプログラムに読み出しスレッドを入力させ、それによって、読み出しスレッドがその出力のパイプライン段で動作するようにすることによってこのシリアル化は避けられ得る。これは、入力の各レベルのための追加の読み出しスレッドのコストが発生する。これはベクトル入力の場合、ベクトル入力がシステムからの入力である段の数は概して限られているため、許容可能である。しかしながら、全てのプログラムが、システムから、又は読み出しスレッドによる計算例えば、各処理段の環状バッファを制御する垂直インデックスパラメータのいずれかで、各繰り返しのためにスカラパラメータを更新することを要求し得る可能性が高い。これは、各パイプライン段のために読み出しスレッドを必要とし、読み出しスレッドの数に大きすぎる需要を課すことになろう。スカラデータはベクトルデータよりはるかに小さいメモリを必要とし得るので、GLSユニット1408はスカラ出力バッファ5412内の各繰り返しからのスカラデータをストアし、繰り返しキューを使用して、処理パイプラインをサポートするよう、必要に応じてこのデータを提供し得る。これは、必要とされるバッファリングが全てのノードのSIMDメモリの規模になるであろうため、ベクトルデータの場合は、通常、実現可能ではない。GLSユニット1408からのスカラ出力のパイプライン化が図8に示される。図示されるように、GLSユニット1408アクティビティ、プログラム実行、及びプログラム間の伝送がある。一番上のシーケンスはプログラムAの実行にインターリーブされたGLSスレッドアクティビティを示す。簡潔さのために、ベクトル及びスカラ伝送が同じ時間量を取って示されている。実際にはベクトル伝送ははるかに長い時間を要し、プログラムAの多数の宛先コンテキストに書き込み、スカラデータをベクトルデータと共にこれらのコンテキストにコピーする。これは、図示されていないがプログラムAのインスタンスをパイプライン化する効果を有する。第1の繰り返しでは、読み出しスレッドは、プログラムAのためのベクトルデータ、及びプログラムA~Dのためのスカラデータの出力をトリガする。これは、ベクトルA1及びスカラA1~スカラDlによって示される。これは第1の繰り返しであるので、全ての宛先コンテキストはアイドルであり、これらの伝送の全てが実行され得る。従って、この繰り返しのためには、繰り返しキューエントリはこれらの伝送が完了した後にフリーになり得る。この繰り返しの出力はプログラムAの実行を可能にし、プログラムAはデータベクトルB1を出力する。後続のプログラムは、入力を受け取ると、実行し、実行パイプラインを反映するように時間がスキューskewする。第1の繰り返しの間、各プログラムがRelease_lnputを信号送出するまで、読み出しスレッドはスカラデータを宛先コンテキストに出力することができない。この理由のため、宛先コンテキストがSPで入力をイネーブルするまで、スカラB2~スカラD2は、スカラ出力バッファ5412内に保持される。このデータのスカラ出力バッファ5412内の期間はグレーの破線矢印によって示され、スカラデータがソースプログラムからのベクトル入力に同期していることを示す。また、この時間の間、他の繰り返しのためのデータは、処理パイプラインの深さまで、この例では、およそ4繰り返しまで、スカラ出力バッファ内に蓄積される。これらの繰り返しの各々は、データタイプ、宛先、及びスカラ出力バッファ内のスカラデータの位置を後続の繰り返しのために記録する、繰り返しキューエントリを有する。各宛先へのスカラ出力が完了すると、その事実が繰り返しキュー内に記録されるタイプフラグを00’bに設定することによって、LSBが1になる。全てのタイプのフラグが0になると、これは繰り返しからの全ての出力が完了したことを示し、繰り返しキューエントリはフリーにされ得る。この時点で、スカラ出力バッファ5412のコンテンツはこの繰り返しのために無視され、メモリは後続スレッドの実行による割り当てのためにフリーにされる。GLSスレッドは、スケジュール読み出しスレッド及びスケジュール書き込みスレッドメッセージによってスケジューリングされる。このスレッドがスカラ入力読み出し又は書き込みスレッド又はベクトル入力書き込みスレッドに依存しない場合、それは、スケジューリングメッセージを受け取るときに実行レディになる。そうでない場合、スカラ入力に依存するスレッドについてはそのスレッドはVinが設定されるときレディになり、又はグローバルインターコネクト書き込みスレッドでベクトルデータが受け取られるまでレディになる。レディスレッドはラウンドロビン順に実行するようにイネーブルされる。スレッドが実行を開始すると、所与の繰り返し分の全ての伝送が開始されるまで実行を継続し、全ての伝送が開始された時点で、スレッドは明示的タスク切り替え命令によって中断され、その間ハードウェア伝送が完了する。タスク切り替えは、変数割り振り及びフロー分析に依存して、コード生成によって決定される。読み出しスレッドについては、全ての宛先への、全てのベクトル及びスカラの処理クラスタ1400への割り振りは、スレッド中断時点で完了していなければならない典型的に、これは繰り返し内の任意のコードパスに沿った、最後の割り振りの後である。タスク切り替え命令は、各宛先への最終伝送のための、Set_Validをアサートさせるハードウェアが伝送の数を知っていることに基づく。書き込みスレッドについては、分析は同様であるが、例外は、割り振りがシステムに対して行なわれ、Set_Validは、明示的には設定されないことである。スレッドが中断されると、ハードウェアは、中断されたスレッドの全てのコンテキストを保存し、次のレディスレッドがある場合は、それをスケジューリングする。スレッドが中断されると、ハードウェアがそのスレッドによって開始された全てのデータ伝送を完了するまで、中断のままになり得る。これは、以下の伝送条件に依存して幾つかの異なる方法で指示され得る。-水平グループ多数の処理ノードコンテキスト又は単一のSFMコンテキストに対して走査線を出力する読み出しスレッドの場合、データ伝送の完了は、右端のコンテキスト又は共有機能メモリ入力への最後の伝送によって指示され、伝送をイネーブルするSP内にRt=1を有するコンテキストへ伝送されるSet_Validフラグによって指示される。-SFMコンテキストへブロックを出力する読み出しスレッドの場合、ハードウェアは、ラインに似た水平次元の全てのデータを提供し、最終伝送はBlock_Widthによって決定される。明示的ソフトウェア繰り返しが垂直次元のブロックデータを提供する。-ノード又はSFMコンテキストから入力を受け取る書き込みスレッドの場合、最終データ伝送は、HG_Size又はBlock_Widthにマッチングする伝送のためのSet_Validによって指示される。スレッドが実行のために再度イネーブルされると、伝送の別のセットを開始するか、又は終了し得る。読み出しスレッドはEND命令の実行によって終了し、その結果、初期宛先IDを使用して、OTe=lを有する全ての宛先にOT信号が送られる。書き込みスレッドは1つ又は複数のソースからOTを受け取るため概して終了するが、END命令を実行するまで、完全に終了したとはみなされない。そのホワイルループは終了するが、プログラムは終了に基づいて後続のホワイルループで継続することが可能である。いずれの例でも、ENDを実行し、全てのデータ伝送が完了し、全てのOTが送信された後、スレッドはスレッド終了メッセージを送り得る。読み出しスレッドは繰り返しの2つの形式を有し得る。即ち、明示的FORループ又は他の明示的繰り返し、或いは、書き込みスレッドと同様の処理クラスタ1400からのデータ入力でのループ終了がなければループするである。第1の例では、任意のスカラ入力は全てのループ繰り返しが実行されるまでリリースされているとはみなされない。スカラ入力はスレッドのための実行の全期間に適用される。第2の例では、各繰り返しの後、Release_lnputのシグナルが送られて入力がリリースされ、新しい入力が受け取られるべきであり、スレッドが実行のためにスケジューリングされ得る前に、Vinを設定する。スレッドは、書き込みスレッドと同様、OTの受け取りの後データフロー上で終了する。GLSプロセッサ5402は、読み出し及び書き込みスレッドの動作に基づいてハードウェア制御をサポートするための専用インタフェースを含み得る。このインタフェースは、GLSデータメモリ5403へのGLSプロセッサ5402の通常のアクセスと、特定の又は特殊化されたアクセスとを区別することを可能にし得る。また、GLSプロセッサ5402にこのインタフェースを制御させるための、以下の命令があり得る。-ロードシステムLDSYS命令。この命令は特定されたシステムアドレスからGLSプロセッサ5402のレジスタをロードし得る。これは概して、ハードウェアに対してターゲットレジスタ及びシステムアドレスを識別する目的のダミーロードであり得る。また、この命令は、Line又はBlockとして処理クラスタ1400に伝送されるべきシステムFrameのためのフォーマッティング情報を含む、GLSデータメモリ5403からの属性ワードにアクセスする。属性アクセスは、GLSプロセッサ5402レジスタをターゲットとしないが、代わりに、この情報をハードウェアレジスタにロードし、ハードウェアがこの伝送を制御できるようにする。最後に、この命令はインターリーブされたFrameフォーマットでアクセスされたピクセルの相対位置をハードウェアに示す3ビットフィールドを含む。-スカラ及びベクトル出力命令OUTPUT、VOUTPUT。これらの命令はGLSプロセッサ5402のレジスタをコンテキスト内にストアし得る。スカラ出力では、GLSプロセッサ5402はデータを直接提供する。ベクトル出力では、これは、出力を前のLDSYSアドレスに関連付けるソースレジスタを識別する目的のため、及び宛先コンテキストにオフセットを指定するための、ダミーストアである。Line又はBlock出力はHG_Size又はBlock_Widthを指定するための関連付けられた垂直インデックスパラメータを有し、それによって、ライン又はブロックに伝送するための例えば32ピクセル要素の数をハードウェアが知る。-ベクトル入力命令VINPUT。この命令は、データメモリ5403位置をGLSプロセッサ5402仮想レジスタにロードする。これはデータメモリ5403からの仮想Line又はBlock変数のダミーロードであり、その目的は、ターゲット仮想レジスタ、及び仮想変数のためのデータメモリ5403内のオフセットを識別するためである。Line又はBlock出力はHG_Size又はBlock_Widthを指定するための、関連付けられた垂直インデックスパラメータを有する。それによって、ライン又はブロックに伝送するための例えば32ピクセル要素の数をハードウェアが知る。-ストアシステムSTSYS命令。この命令は仮想GLSプロセッサ5402レジスタを指定されたシステムアドレスにストアする。これは、このストアを前のVINPUTオフセットに関連付ける仮想ソースレジスタを識別し、通常は、受け取った他の入力とのインターリービングの後それがストアされるべき箇所のシステムアドレスを指定するためのダミーストアである。また、この命令は、処理クラスタ1400Line又はBlockから伝送されるべきシステムFrameのためのフォーマッティング情報を含む、データメモリ5403からの属性ワードにアクセスする。属性アクセスはGLSプロセッサ5402をターゲットにしないが、代わりに、この情報をハードウェアレジスタにロードして、それによって、ハードウェアがその伝送を制御できるようにする。最後に、命令は、インターリーブされたFrameフォーマットで、アクセスされたピクセルの相対位置をハードウェアに示す3ビットフィールドを含む。GLSプロセッサ5402のためのデータインタフェースは、以下の情報及び信号を含み得る。-以下を指定するアドレスバス。1LDSYS及びSTSYS命令のためのシステムアドレス。2OUTPUT及びVOUTPUT命令のための処理クラスタ1400オフセット、又は3VINPUT命令のためのデータメモリ5403オフセットこれらは、アドレスを提供する命令により区別される。-伝送の数を指定し、Line又はBlock伝送のためのアドレスシーケンシングを制御するパラメータHG_Size/Block_Width。-ロードタイプ又はストアタイプ命令のためのダミーターゲット又はソースである仮想レジスタ識別子。-OUTPUT及びVOUTPUT命令のための、命令からのDst_Tagのための値。-データメモリ5403からGLSハードウェアレジスタへフォーマッティング属性をロードするためのストローブ。-OUTPUT命令に対しスカラ伝送の幅を指示するための、又はVOUTPUT命令に対しノードLine、SFMLine、及びBlock出力を区別するための、2ビットフィールド。ベクトル出力は、データタイプに依存する異なるアドレスシーケンシング及びデータフロープロトコル動作を必要とし得る。また、このフィールドは、ベクトル出力ではBlock_Endを、スカラ及びベクトル出力ではInput_Doneをエンコードする。-SFMLine入力に対し、環状バッファ内の最後のラインを指定するための信号。これは、Pointer=Buffer_Sizeのときに、環状バッファ垂直インデックスパラメータに基づき、また、LineArray出力に対しFillを信号送信するために用いられる。-スレッドがアクティブにされるとき、Output_Terminate信号を受け取ったスレッドのためにアサートされるGLSプロセッサ5402への入力。これは、GLSプロセッサ5402条件状態レジスタビットとしてテストされ、アサートされるとスレッドを終了させる。この例のGLSユニット1408は以下のいずれかの特徴を有し得る。-同時に最大8の読み出し及び書き込みスレッドをサポート。-OCP接続1412は読み出し及び書き込みデータのために、128ビット接続を有し得る通常の読み出し、書き込みスレッド動作では最大8ビート、構成読み出し動作では16ビートの読み出し。-処理クラスタ1400内でノード/パーティションからデータを送受信するための256ビット、2ビートのバーストインターコネクトマスター及び、256ビット、2ビートのバーストスレーブインタフェース。-GLSユニット1408が処理クラスタ1400の残りにメッセージを送るための32ビット、32ビート最大のメッセージングマスターインタフェース。-GLSユニット1408が処理クラスタ1400の残りからメッセージを受け取るための32ビット、32ビート最大のメッセージングスレーブインタフェース。-インターコネクト814上のデータアクティビティをモニターし、アクティビティがないときに、制御ノードにシグナルを送って、制御ノードが処理クラスタ1400のサブシステムの電源をダウンすることができるようにするための、インターコネクトモニターブロック。-システムインタフェース5416上の多数のタグの割り振り及び管理最大32タグ。-読み出しスレッドデータパス内のデインターリーバ。-書き込みパス内のインターリーバ。-読み出し及び書き込み双方のスレッドでは、ライン当たり最大8カラーをサポート。-読み出しスレッドに対し、最大8ラインピクセルデータをサポート。-読み出しスレッドに対し、最大4ラインピクセルデータをサポート。図9を参照すると、GLSユニット1408のより詳細な例が示されている。図示されるように、GLSユニット1408のコアは、GLSプロセッサ5402であり、これは、様々なスレッドプログラムを走らせ得る。スレッドプログラムは、概して命令メモリRAM6005及び命令メモリアービタ6006を含む命令メモリ5405内の様々な位置に、命令として予めロードされ得、スレッドがアクティブのときはいつでも呼び出され得る。スレッド/コンテキストは、読み出しスレッド又は書き込みスレッドがスケジューリングされるときはいつでも、アクティブにされ得る。スレッドは、マスターメッセージングインタフェース6003及びスレーブメッセージングインタフェース6004を概して含むメッセージングインタフェース5418を介してGLSユニット1408によって受け取られるメッセージを介して実行するようにスケジューリングされる。読み出しスレッドデータフローを先ず参照すると、データがOCP接続1412からインターコネクト814へ伝送されるべきとき、読み出しスレッドがGLSユニット1408によって処理される。読み出しスレッドはスケジュール読み出しスレッドメッセージによってスケジューリングされ、スレッドがスケジューリングされると、GLSユニット1408は、スレッドのためのパラメータ即ち、ピクセルパラメータを得るようにGLSプロセッサ5402をトリガし得、データ即ち、ピクセルデータをフェッチするようにOCP接続1412にアクセスし得る。データがフェッチされると、GLSプロセッサ5402から受け取りストアされた構成情報に従ってデインターリーブ及びアップサンプリングされ得、データインターコネクト814を介して適切な宛先に送られる。データフローは、ソース通知、ソース許可、及び出力終了メッセージを使用して、スレッドが終了するGLSプロセッサ5402によって通知されるまで維持される。スカラデータフローは更新データメモリメッセージを使用して維持される。もう1つのデータフローは構成読み出しスレッドである。構成読み出しスレッドは、構成データがOCP接続1412からGLS命令メモリ5405に、又は処理クラスタ1400内部の他のモジュールのいずれかに伝送されるべきときに、GLSユニット1408によって処理される。構成読み出しスレッドは、スケジュール構成読み出しメッセージによってスケジューリングされる。メッセージがスケジューリングされると、基本構成情報を得るためにOCP接続1412がアクセスされる。この基本構成情報は、実構成データを得るためにデコードされ、適切な宛先宛先が処理クラスタ1400内の外部モジュールではデータインターコネクト814を介してに送られる。更に別のデータフローは、書き込みスレッドである。書き込みスレッドは、データがデータインターコネクト814からOCP接続1412に伝送されるべきときに、GLSユニット1408によって処理される。書き込みスレッドは、スケジュール書き込みスレッドメッセージによってスケジューリングされ、スレッドがスケジューリングされると、GLSユニット1408は、そのスレッドのためのパラメータ即ち、ピクセルパラメータを得るように、GLSプロセッサ5402をトリガする。その後、GLSユニット1408は、データ即ち、ピクセルデータがデータインターコネクト814を介して到着するのを待ち、データインターコネクト814からのデータが受け取られると、それは、GLSプロセッサ5402から受け取りストアされた構成情報に基づいて、インターリーブ及びダウンサンプリングされ、OCP接続1412に送られる。データフローは、ソース通知、ソース許可、及び出力終了メッセージを使用して、スレッドが終了GLSプロセッサ5402によって通知されるようにするまで維持される。スカラデータフローは更新データメモリメッセージを使用して維持される。ここで、データメモリRAM6007及びデータメモリアービタ6008を概して含むGLSデータメモリ5403のための編成を参照すると、このメモリ5403は、全てのレジデントスレッドのための、種々の変数、一時変数、及び、レジスタスピル/フィル値をストアするように構成される。また、それは、スレッドコンテキスト記述子及び宛先リストノードの宛先記述子に似ているを含むスレッドコードから隠されたエリアを有し得る。具体的には、この例の場合、データメモリRAM6007の最初の8個の位置は、16のコンテキスト記述子を保持するように、コンテキスト記述子のために割り当てられる。この例のための、宛先リストは、データメモリRAM6007の次の16個の位置を占有する。更には、各コンテキスト記述子が、他の処理ノード又は他のスレッドからのスカラ値に依存するか否か、及びもしそうであれば、スカラデータのためにデータソースが幾つあるかを指定する。この例では、GLSデータメモリ5403の残りは、変数割り当てを有するスレッドコンテキストを保持する。GLSデータメモリ5403は、多数のソースによってアクセスされ得る。多数のソースは、GLSユニット1408のための内部ロジック即ち、OCP接続1412及びデータインターコネクト814へのインタフェース、動作のデバッグモードの間、データメモリ5403コンテンツを変更し得るGLSプロセッサ5402のためのデバッグロジック、メッセージングインタフェース5418スレーブメッセージングインタフェース6003及びマスターメッセージングインタフェース6004の両方、及びGLSプロセッサ5402である。データメモリアービタ6008は、データメモリRAM6007へのアクセスをアービトレート可能である。ここで、コンテキスト状態RAM6014及びコンテキスト状態アービタ6015を概して含むコンテキスト保存メモリ5414を参照すると、このメモリ5414は、GLSユニット1408内でコンテキスト切り替えが行なわれるとき、コンテキスト情報を保存するために、GLSプロセッサ5402によって用いられ得る。コンテキストメモリは、各スレッドのための位置を有する即ち、合計16がサポートされている。各コンテキスト保存ラインは、例えば、609ビットであり、各ラインの編成の例は、上で詳しく説明されている。アービタ6015は、GLSプロセッサ5402からのアクセスのためのコンテキスト状態RAM6014へのアクセス、及び動作のデバッグモードの間、コンテキスト状態メモリRAM6014のコンテンツを変更し得るGLSプロセッサ5402のためのデバッグロジックをアービトレートする。典型的に、読み出し又は書き込みスレッドがGLSラッパーによってスケジューリングされるときはいつでも、コンテキスト切り替えが起こる。命令メモリRAM6005及び命令メモリアービタ6006を概して含む命令メモリ5405を用いる場合、それはGLSプロセッサ5402のための命令を全てのラインにストアし得る。典型的にアービタ6006は、GLSプロセッサ5402からのアクセスのための命令メモリRAM6005へのアクセス、及び動作のデバッグモードの間に、命令メモリRAM6005のコンテンツを変更し得るGLSプロセッサ5402のためのデバッグロジックをアービトレートする。命令メモリ5405は通常、構成読み出しスレッドメッセージの結果として、初期化され、命令メモリ5405が初期化されると、スケジュール読み出しスレッド又は書き込みスレッド内に存在するDestinationListBaseアドレスを使用して、プログラムがアクセスされ得る。メッセージ内のアドレスは、コンテキスト切り替えが起こると必ずスレッドのためのアドレスを開始する命令メモリ5405として用いられる。ここで、スカラRAM6001及びアービタ6002を概して含むスカラ出力バッファ5412を参照すると、スカラ出力バッファ5412及び特に、スカラRAM6001は、データメモリ更新メッセージを介して、GLSプロセッサ5402及びメッセージングインタフェース5418によって書き込まれるスカラデータをストアし、アービタ6002は、これらのソースをアービトレートし得る。また、スカラ出力バッファ5412の一部として関連ロジックがある。このスカラロジックのためのアーキテクチャが図10に示される。図10では、読み出しスレッドのためのスカラロジックが従うステップの例が示される。この例では、読み出しスレッドがスケジューリングされるときに起こる2つの並列プロセスステップがある。1つのプロセスでは、スカラ情報を抽出するためにGLSプロセッサ5402がトリガされ、抽出されたスカラ情報がスカラRAM6001に書き込まれる。スカラ情報は、データメモリライン、宛先タグ、スカラデータ、及びHI及びLO情報を典型的に含む。これらは、通常、RAM6001にリニアに書き込まれる。また、スレッドのためのスカラ開始アドレス6028及びスカラ終了アドレス6029も、カウント6026を介してメールボックス6013内にラッチされる。GLSプロセッサ5402が、コンテキスト切り替えによって指示されるように書き込みプロセスを完了すると、スカラ出力バッファ5412は、ストアされた宛先タグによって示されるようにスカラRAM6001内の全ての宛先にソース通知メッセージの送信を開始する。更に、スカラロジックは各スレッドに対し維持され、8個の繰り返しに対し維持され得るスカラ繰り返しカウンタ6027を含む。繰り返しカウンタ6027は、スレッドがスケジュールされた状態から実行状態へ最初に移動するときに初期化され、GLSプロセッサ5402がトリガされる毎に増分される。スカラ-オンリー読み出しスレッドの場合に通常、起こるこの例のもう1つの並列プロセスでは、且つ、GLSユニット1408によって事前に送られたSRC通知に応答してスケジュールされた読み出しスレッドに対するSRC許可を受け取るとき、そのメッセージから抽出された情報でメールボックス6013が更新される。なお、ソース通知メッセージは、スカラ-オンリー伝送がイネーブされた読み出しスレッドでは、スカラ出力バッファ5412によって、例えば送られ得ることに留意されたい。スカラ及びベクトルの両方がイネーブルされた読み出しスレッドの場合、ソース通知メッセージは送られなくてもよい。次いでソース許可メッセージで送られたDST_TAGがそのスレッドIDのためにストアされた前のソース通知メッセージがDST_TAGを書き込んでいるであろうものとマッチするかを判定するために、ペンディング許可テーブルが読み出され得る。マッチングが得られると、スカラ有限状態機械FSM6031のためのそのスレッドのためのペンディング許可テーブルのビットが更新される。次いで、スレッドIDと共に新しい宛先ノード及びセグメントIDでGLSデータメモリ5403が更新される。宛先リストエントリからPINCR値を取得し、それを更新するために、GLSデータメモリ5403が読み出される。スカラ伝送の場合、宛先が送るPINCR値は0になると推測される。次いで、スレッドIDと、それが左端のスレッドであるか否かを示す状態表示と共に、スレッドID先入れ先出しメモリFIFO6030内にラッチされる。これで、GLSユニット1408は、スカラデータを宛先に伝送するための許可を有する。ラッチされたスレッドIDを抽出するためにスレッドFIFO6030が読み出される。抽出されたスレッドIDは宛先タグとともに、スカラRAM6001から適切なデータをフェッチするためのインデックスとして用いられる。データが読み出されると、データ内に存在する宛先インデックスが、抽出され、リクエストキュー内にストアされた宛先タグとマッチングされる。マッチングが得られると、メールボックス6013にインデックスをつけ、GLSデータメモリ5403宛先アドレスをフェッチするために、抽出されたスレッドIDが使用される。次いで、マッチングされたDST_TAGは、GLSデータメモリ5403への最終アドレスを決定するために、GLSデータメモリ5403宛先アドレスに追加される。次いで、宛先リストエントリをフェッチするために、GLSデータメモリ5403がアクセスされる。GLSユニット1408は、更新GLSデータメモリ5403メッセージを、GLSデータメモリ5403から抽出されたnodeid、segIDによって識別される宛先ノードへ、スカラRAM6001からのデータを用い、送信する。繰り返しのための全体のデータが送られるまでこれが繰り返される。スレッドのためのデータの終わりに到達すると、GLSユニット1408は、次のスレッドIDに移動しそのスレッドが、アクティブとして、FIFOに入れられた場合、また、グローバルインターコネクトロジックに、スレッドの終了に到達したことを示す。スカラデータは、出力命令を用いて、GLSプロセッサ5402によって書き込まれる。実行に含まれるスカラデータは、プログラム自体から、又はOCP接続1412を介して周辺装置1414から、又はスカラ依存性がイネーブルされている場合、更新データメモリ更新メッセージを介して、処理クラスタ1400内の他のブロックから、のいずれかである。スカラがGLSプロセッサ5402によって、OCP接続1412からフェッチされるときは、それは、そのデータメモリアドレスラインに例えば0->1Mのアドレスを送るであろう。GLSユニット1408は、そのアクセスを、OCP接続1412マスター読み出しアクセス即ち、1ワードのバーストに変換する。GLSユニット1408がそのワードを読み出すと、データをスカラRAM6001に送るGLSプロセッサ5402即ち、32ビットであり、どの32ビットかはGLSプロセッサ5402によって送られるアドレスに依存するにそれを送る。スカラデータが別の処理クラスタ1400モジュールから受け取られるべきケースでは、そのスレッドのためのコンテキスト記述子内にスカラ依存性ビットが設定される。入力依存性ビットが設定されるとき、スカラデータを送るであろうソースの数も、同じ記述子の中に設定される。GLSユニット1408が、全てのソースからの及びGLSデータメモリ5403にストアされたスカラデータを受け取ると、スカラ依存性が満たされる。スカラ依存性が満たされると、GLSプロセッサ5402がトリガされる。この時点で、GLSプロセッサ5402は、ストアされたデータを読み出し、通常は、読み出しスレッドのためのOUTPUT命令を用いて、スカラRAM6001に書き込む。また、GLSプロセッサ5402は、OCP接続1412にデータ又は任意のデータを書き込むことを選択してもよい。データが、GLSプロセッサ1408によってOCP接続1412に書き込まれるべきときは、それは、GLSデータメモリ5403アドレスラインのアドレス例えば0->1Mを送るであろう。GLSユニット1408は、そのアクセスをOCP接続マスター書き込みアクセス即ち、1ワードのバーストに変換し、例えば32ビットをOCP接続1412に書き込む。GLSユニット1408内のメールボックス6013は、メッセージング、スキャナ、及びデータパス間の情報フローを扱うために使用され得る。スケジュール読み出しスレッド、スケジュール構成読み出しスレッド、又はスケジュール書き込みスレッドメッセージがGLSユニット1408によって受け取られるとき、メッセージから抽出された値がメールボックス6013内にストアされる。次いで、対応するスレッドがスケジュールされた状態に置かれスケジュール読み出しスレッド、又はスケジュール書き込みスレッドの場合、それによってスキャナがそれを、GLSプロセッサ5402をトリガするための実行状態へ移動し得る。また、メールボックス6013は、GLSユニット1408によって使用されるべき、ソース通知メッセージ書き込みスレッドの場合、ソース許可メッセージ読み出しスレッドの場合からの値をラッチする。GLSユニット1408内の種々の内部ブロック間の相互作用は、例えば、図10に示すような様々な時点で、メールボックス6007を更新する。イングレスメッセージプロセッサ6010は、制御ノード1406から受け取るメッセージを扱う。表1は、GLSユニット1408によって受け取られるメッセージのリストを示す。GLSは、処理クラスタ1400サブシステム内で、Seg_ID、Node_IDをそれぞれ{3、1}としてアクセスされ得る。本発明が関連する分野の当業者であれば、本発明の特許請求の範囲から逸脱することなく、説明した実施形態への変更、及び追加の実施形態が可能であることが理解されるであろう。