(57)【特許請求の範囲】
【請求項１】
共有機能メモリ装置であって、
メッセージバス入出力と、データバスに結合されるグローバルデータ入出力バッファとを有する機能メモリ処理デバイスであって、ＳＦＭデータメモリとＳＦＭ命令メモリとプログラムキューと前記メッセージバス入出力と前記グローバルデータ入出力バッファとに結合されるＳＦＭプロセッサを含む、前記機能メモリ処理デバイスと、
ノードアクセスポートと、
前記ノードアクセスポートに結合され、ルックアップテーブル（ＬＵＴ）とヒストグラムとを実施する機能メモリと、
前記ノードアクセスポートに結合され、ベクトル演算のためのデータを収容するベクトルメモリと、
ポートと機能ユニットとを含む単一入力複数データ（ＳＩＭＤ）データパスであって、前記機能ユニットが、前記機能メモリと前記ベクトルメモリとに収容されるデータ上で演算を実行するために、前記機能メモリと前記ベクトルメモリと前記ＳＦＭプロセッサとに結合される、前記ＳＩＭＤデータパスと、
により特徴付けられる、装置。
【請求項２】
請求項１に記載の装置であって、
前記共有機能メモリが、前記プロセッサに結合され、且つ、中断されたスレッドに対するレジスタ状態をストアするように構成される、保存／復元メモリによって更に特徴付けられる、装置。
【請求項３】
請求項１又は２に記載の装置であって、
前記ベクトルメモリがメモリバンクの複数の組に配される、装置。
【請求項４】
請求項１、２又は３に記載の装置であって、
前記ＳＩＭＤデータパスが複数のレジスタによって更に特徴付けられ、各レジスタが前記機能ユニットの組の少なくとも１つに関連する、装置。
【請求項５】
請求項１、２、３又は４に記載の装置であって、
前記ＳＦＭプロセッサが、動き推定、リサンプリング及び離散コサイン変換、並びに画像処理用の歪み補正を実施するように構成される、装置。
【請求項６】
システムメモリと、前記システムメモリに結合される処理クラスタとによって特徴づけられる、システムであって、
前記処理クラスタが、
メッセージバスと、
データバスと、
パーティションに配される複数の処理ノードであって、各パーティションが前記データバスに結合されるバスインタフェースユニットを有し、各処理ノードが前記メッセージバスに結合される、前記複数の処理ノードと、
前記メッセージバスに結合される制御ノードと、
前記メッセージバスと前記データバスとに結合されるロード／ストアユニットと、
共有機能メモリ装置と、
を含み、
前記共有機能メモリ装置が、
前記メッセージバスと前記データバスとに結合される機能メモリ処理デバイスであって、ＳＦＭデータメモリと、ＳＦＭ命令メモリと、プログラムキューと、前記メッセージバスと、前記データバスに結合されるグルーバルデータ入出力バッファとに結合されるＳＦＭプロセッサを含む、前記機能メモリ処理デバイスと、
前記処理ノードに結合されるノードアクセスポートと、
前記ノードアクセスポートに結合され、ルックアップテーブル（ＬＵＴ）とヒストグラムとを実施する機能メモリと、
前記ノードアクセスポートに結合され、ベクトル演算のためのデータを収容するベクトルメモリと、
ポートと、機能ユニットとを含む単一入力複数データ（ＳＩＭＤ）データパスであって、前記機能ユニットが、前記機能メモリと前記ベクトルメモリと内に収容されるデータ上で演算を実行するために、前記機能メモリと前記ベクトルメモリと前記ＳＦＭプロセッサとに結合される、前記ＳＩＭＤデータパスと、
により特徴付けられる、システム。
【請求項７】
請求項６に記載のシステムであって、
前記共有機能メモリが、前記プロセッサに結合され、且つ、中断されたスレッドに対するレジスタ状態をストアするように構成される、保存／復元メモリによって更に特徴付けられる、システム。
【請求項８】
請求項６又は７に記載のシステムであって、
前記ベクトルメモリがメモリバンクの複数の組に配される、システム。
【請求項９】
請求項６、７又は８に記載のシステムであって、
前記ＳＩＭＤデータパスが複数のレジスタによって更に特徴付けられ、各レジスタが前記機能ユニットの組の少なくとも１つに関連する、システム。
【請求項１０】
請求項６、７、８又は９に記載のシステムであって、
前記ＳＦＭプロセッサが、動き推定、リサンプリング及び離散コサイン変換、並びに画像処理用の歪み補正を実施するように構成される、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、全般的にプロセッサに関し、より具体的には処理クラスタに関する。
【背景技術】
【０００２】
図１はマルチコアシステム（２〜１６コアの範囲）についての実行速度のスピードアップ対並列オーバーヘッドを示すグラフである。スピードアップとは、単一プロセッサの実行時間を並列プロセッサの実行時間で除したものである。図からわかるように、多数のコアから有意な利益を得るために、並列オーバーヘッドはゼロに近くなければならない。しかし並列プログラム間に何らかの相互作用が存在する場合、オーバーヘッドは極めて高くなる傾向があるため、完全に分離されたプログラムでなければ２又は３以上のプロセッサを効率的に使用するのは通常極めて難しい。従って、改善された処理クラスタが必要とされている。
【発明の概要】
【０００３】
従って、本開示の実施形態は並列処理を実行するための装置を提供する。この装置は、メッセージバス（１４２０）、データバス（１４２２）、及び共有機能メモリ（１４１０）によって特徴付けられる。共有機能メモリは、前記データバスに結合されるデータインタフェース（７６２０、７６０６、７６２４−１〜７６２４−Ｒ）、前記メッセージバスに結合されるメッセージインタフェース（７６２６）、前記データインタフェースに結合され、ルックアップテーブル（ＬＵＴ）及びヒストグラムを実施する機能メモリ（７６０２）、前記データインタフェースに結合され、ベクトル命令を用いる演算をサポートするベクトルメモリ（７６０３）、前記ベクトルメモリに結合される単一入力複数データ（ＳＩＭＤ）データパス（７６０５−１〜７６０５−Ｑ及び７６０７−１〜７６０７−Ｐ）、命令メモリ（７６１６）、データメモリ（７６１８）、及び前記データメモリと前記命令メモリと前記機能メモリと前記ベクトルメモリとに結合されるプロセッサ（７６１４）を有する。
【図面の簡単な説明】
【０００４】
【図１】マルチコアのスピードアップパラメータのグラフである。
【０００５】
【図２】本開示の実施形態に従ったシステムの図である。
【０００６】
【図３】本開示の実施形態に従ったＳＯＣの図である。
【０００７】
【図４Ａ】本開示の実施形態に従った並列処理クラスタの図である。
【図４Ｂ】本開示の実施形態に従った並列処理クラスタの図である。
【０００８】
【図５】共有機能メモリのブロック図である。
【０００９】
【図６】共有機能メモリのためのＳＩＭＤデータパスの図である。
【００１０】
【図７】１つのＳＩＭＤデータパスの一部分の図である。
【００１１】
【図８】アドレス形成の一例である。
【００１２】
【図９】明示的にソースプログラム内にあるベクトル及びアレイに対し実行されるアドレス指定の例である。
【図１０】明示的にソースプログラム内にあるベクトル及びアレイに対し実行されるアドレス指定の例である。
【００１３】
【図１１】プログラムパラメータの例である。
【００１４】
【図１２】水平グループがどのように機能メモリコンテキストにストアされ得るかの例である。
【００１５】
【図１３】ＳＦＭデータメモリについての編成の例である。
【発明を実施するための形態】
【００１６】
図２では、並列処理を実行するＳＯＣ用アプリケーションの例が見られる。この例では、撮像デバイス１２５０が示される。この（例えば携帯電話又はカメラであり得る）撮像デバイス１２５０は、概して、画像センサ１２５２、ＳＯＣ１３００、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）１３１５、フラッシュメモリ１３１４、ディスプレイ１２５４、及び電力管理集積回路（ＰＭＩＣ）１２５６を含む。動作では、画像センサ１２５２は、（静止画像又はビデオであり得る）画像情報を捕捉することができ、この画像情報はＳＯＣ１３００及びＤＲＡＭ１３１５によって処理され得、不揮発性メモリ（即ち、フラッシュメモリ１３１４）に保存され得る。また、フラッシュメモリ１３１４に保存される画像情報は、ＳＯＣ１３００及びＤＲＡＭ１３１５の使用によって、ディスプレイ１２５４上で使用するために表示され得る。また、撮像デバイス１２５０は、可搬型であることが多く、電源としてバッテリを含む。（ＳＯＣ１３００によって制御され得る）ＰＭＩＣ１２５６は、バッテリ寿命を長持ちさせるために電力使用量の調整を補助し得る。
【００１７】
図３では、本開示の実施形態に従ったシステムオンチップ又はＳＯＣ１３００の例が図示されている。この（典型的には、ＯＭＡＰ（登録商標）等の集積回路又はＩＣである）ＳＯＣ１３００は、（概して上述の並列処理を実行する）処理クラスタ１４００、及び、（上で説明及び参照された）ホスト環境を提供するホストプロセッサ１３１６を概して含む。ホストプロセッサ１３１６は、ワイド（即ち、３２ビット、６４ビット等）ＲＩＳＣプロセッサ（例えばＡＲＭ  Ｃｏｒｔｅｘ−Ａ９等）であり得、バスアービトレータ１３１０、バッファ１３０６、（ホストプロセッサ１３１６がインタフェースバス又はＩバス１３３０上で周辺インタフェース１３２４にアクセスすることを許可する）バスブリッジ１３２０、ハードウェアアプリケーションプログラミングインタフェース（ＡＰＩ）１３０８、及び割り込みコントローラ１３２２と、ホストプロセッサバス又はＨＰバス１３２８上で通信する。処理クラスタ１４００は、典型的に、（例えば、荷電結合デバイス、又はＣＣＤインタフェースであり得、オフチップデバイスと通信し得る）機能回路要素１３０２、バッファ１３０６、バスアービトレータ１３１０、及び周辺インタフェース１３２４と、処理クラスタバス又はＰＣバス１３２６上で、通信する。この構成を用いて、ホストプロセッサ１３１６は、ＡＰＩ１３０８を介して情報を提供する（即ち、所望の並列実装に適合するように処理クラスタ１４００を構成する）ことができ、一方、処理クラスタ１４００及びホストプロセッサ１３１６はいずれも、（フラッシュインタフェース１３１２を介して）フラッシュメモリ１３１４に、（メモリコントローラ１３０４を介して）ＤＲＡＭ１３１５に、直接アクセスできる。また、Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ（ＪＴＡＧ）インタフェース１３１８を介して、テスト及びバウンダリスキャンが実行され得る。
【００１８】
図４を参照すると、本開示の実施形態に従った並列処理クラスタ１４００の例が示されている。典型的には、処理クラスタ１４００はハードウェア７２２に対応する。処理クラスタ１４００は、概して、パーティション１４０２−１〜１４０２−Ｒを含む。これらは、ノード８０８−１〜８０８−Ｎ、ノードラッパー８１０−１〜８１０−Ｎ、命令メモリ１４０４−１〜１４０４−Ｒ、及び（以下で詳しく説明する）バスインタフェースユニット又は（ＢＩＵ）４７１０−１〜４７１０−Ｒを含む。ノード８０８−１〜８０８−Ｎは、各々データインターコネクト８１４に（各々のＢＩＵ４７１０−１〜４７１０−Ｒ及びデータバス１４２２を介して）結合され、パーティション１４０２−１〜１４０２−Ｒのための制御及びメッセージが制御ノード１４０６からメッセージ１４２０を介して提供される。また、グローバルロード／ストア（ＧＬＳ）ユニット１４０８及び共有機能メモリ１４１０は、（後述のように）データ移動のための付加的な機能を提供する。それに加えて、レベル３又はＬ３キャッシュ１４１２、（概して、ＩＣ内には含まれない）周辺装置１４１４、（典型的にはフラッシュメモリ１３１４及び／又はＤＲＡＭ１３１５、並びにＳＯＣ１３００内に含まれないその他のメモリである）メモリ１４１６、及びハードウェアアクセラレータ（ＨＷＡ）ユニット１４１８が処理クラスタ１４００と共に用いられる。また、データ及びアドレスを制御ノード１４０６に通信するように、インタフェース１４０５が提供される。
【００１９】
処理クラスタ１４００は、概して、データ転送のために「プッシュ」モデルを使用する。データ転送は要求応答型のアクセスではなく、概してポステッドライトとして現れる。これは、データ転送が一方向であるため要求応答アクセスに比べてグローバルインターコネクト（即ち、データインターコネクト８１４）の占有を２分の１に減らすという利点を有する。概して、インターコネクト８１４を介して要求をルーティングし、その後、応答が要求元へルーティングされ、その結果インターコネクト８１４上で２つの遷移が生成されることは望まれない。プッシュモデルは単一転送を生成する。これは、ネットワークサイズが増大するとネットワークレイテンシが増大するため、またこのことが要求応答型トランザクションのパフォーマンスを低下させることは避けられないことであるため、スケーラビリティに関して重要である。
【００２０】
プッシュモデルは、データフロープロトコル（即ち、８１２−１〜８１２−Ｎ）と同様に、グローバルデータトラフィックを、正確さのために用いられるものまで概して最小化する一方、ローカルノードの利用率に対するグローバルデータフローの影響も概して最小化する。大量のグローバルトラフィックであってもノード（即ち、８０８−ｉ）のパフォーマンスに対する影響は、通常、皆無に近い。ソースはデータを（後述する）グローバル出力バッファに書き込み、転送成功の確認を要求することなく継続する。データフロープロトコル（即ち、８１２−１〜８１２−Ｎ）は、概して、インターコネクト８１４で単一転送を用い、データをあて先へ移動する最初の試みでの転送が成功することを確実にする。（後述する）グローバル出力バッファは（例えば）最大１６出力まで保持することができるため、出力のための瞬時グローバル帯域幅が不充分になることに起因するノード（即ち、８０８−ｉ）のストールの可能性が非常に低くなる。更に、瞬時帯域幅は、要求応答トランザクション又は転送失敗の繰り返しによる影響を受けない。
【００２１】
最後に、プッシュモデルはプログラミングモデルに一層密接に適合する。言い換えるとプログラムは自己データを「フェッチ」せずに、その代わりに、プログラムの入力変数及び／又はパラメータは呼び出される前に書き込まれる。プログラミング環境では、入力変数の初期化は、ソースプログラムによるメモリへの書き込みとして行われる。処理クラスタ１４００内では、これらの書き込みがポステッドライトに変換され、変数の値をノードコンテキストにポピュレートさせる。
【００２２】
（後述する）グローバル入力バッファは、ソースノードからデータを受け取るために用いられる。各ノード８０８−１〜８０８−Ｎのためのデータメモリが単一ポートであるため、入力データの書き込みが、ローカルの単一入力多重データ（ＳＩＭＤ）による読み出しとコンフリクトすることがあり得る。入力データをグローバル入力バッファへ受け入れ、そこで入力データが空きのデータメモリサイクルを待つことができることによって、この競合は回避される（即ち、ＳＩＭＤアクセスとのバンクコンフリクトはない）。データメモリは、（例えば）３２バンクを有し得るため、直ちにバッファがフリーになる可能性が非常に高い。しかしながら、転送を確認するためのハンドシェイキングがないので、ノード（即ち、８０８−ｉ）はフリーのバッファエントリを持つはずである。所望とされる場合は、グローバル入力バッファは、バッファ位置をフリーにするために、ローカルノード（即ち、８０８−ｉ）をストールさせてデータメモリに強制的に書き込みを行うことができるが、このイベントは極めて希であるべきである。典型的には、グローバル入力バッファは２つの別々のランダムアクセスメモリ（ＲＡＭ）として実装されて、一方がデータメモリへ読み出されるべき状態にある間、他方がグローバルデータを書き込むための状態になり得るようにする。メッセージングインターコネクトは、グローバルデータインターコネクトとは分かれているが、同様にプッシュモデルを使用する。
【００２３】
システムレベルでは、所望のスループットにスケーリングされた多数のノードを備えるＳＭＰ又は対称型多重処理のように、ノード８０８−１〜８０８−Ｎが処理クラスタ１４００内で複製される。処理クラスタ１４００は極めて多数のノードにまでスケーリングし得る。ノード８０８−１〜８０８−Ｎはパーティション１４０２−１〜１４０２−Ｒにグループ分けされ、各パーティションは１つ又は複数のノードを有する。パーティション１４０２−１〜１４０２−Ｒは、ノード間のローカル通信を増大させることによって及びより大きなプログラムで一層大量の出力データを計算させることによってスケーラビィリティを促進し、その結果、所望のスループット要件を達成する可能性を更に高める。パーティション（即ち、１４０２−ｉ）内では、ノードはローカルインターコネクトを用いて通信し、グローバルリソースを必要としない。また、パーティション（即ち、１４０４−ｉ）内のノードは、排他的命令メモリを用いる各ノードから共通命令メモリを用いる全てのノードまで、任意の粒度で、命令メモリ（即ち、１４０４−ｉ）を共有することができる。例えば、３つのノードが命令メモリの３つのバンクを共有し、第４のノードが命令メモリの排他的バンクを有することができる。ノードが命令メモリ（即ち、１４０４−ｉ）を共有するとき、それらのノードは、概して、同時に同じプログラムを実行する。
【００２４】
また、処理クラスタ１４００は非常に多数のノード（即ち、８０８−ｉ）及びパーティション（即ち、１４０２−ｉ）をサポートし得る。しかしながら、１つのパーティションについて４以上のノードを持つと概してノンユニフォームメモリアクセス（ＮＵＭＡ）アーキテクチャに類似するため、パーティション毎のノードの数は通常は４つに限定されている。この例では、パーティションは、（後でインターコネクト８１４に関連して説明する）１つ（又は複数）のクロスバーを介して接続される。クロスバーは概して横断帯域幅が一定している。処理クラスタ１４００は、現在、サイクル毎に１ノード幅のデータ（例えば、６４、１６ビットピクセル）を転送するように設計されており、４サイクルに亘り、１サイクルにつき１６ピクセルの４転送に区分される。処理クラスタ１４００は、概して、レイテンシトレラントであり、インターコネクト８１４がほぼ飽和（この状態を達成するのは合成プログラム以外では極めて難しいことに留意されたい）であっても、ノードバッファリングが、概して、ノードストールを防止する。
【００２５】
典型的には、処理クラスタ１４００はパーティション間で共有する下記のグローバルリソースを含む。
（１）  制御ノード１４０６。これは（メッセージバス１４２０で）システムワイドのメッセージングインターコネクト、イベント処理及びスケジューリング、及びホストプロセッサ及びデバッガ（これらは全て後で詳しく説明する）へのインタフェースを提供する。
（２）  ＧＬＳユニット１４０８。これはプログラマブル縮小命令セット（ＲＩＳＣ）プロセッサを含み、システムデータ移動を可能にする。システムデータ移動は、ＧＬＳデータ移動スレッドとして直接コンパイルされ得るＣ＋＋プログラムによって記述され得る。これによって、ソースコードを修正することなく、クロスホスト環境でのシステムコードの実行が可能になり、また、システム又は（後述する）ＳＩＭＤデータメモリ内の任意のアドレス（変数）のセットから別の任意のアドレス（変数）のセットに移動できるため、ダイレクトメモリアクセスよりもより一般的である。ＧＬＳユニット１４０８は、（例えば）０−サイクルのコンテキストスイッチを備え、マルチスレッド化され、例えば、最大１６スレッドまでサポートする。
（３）  共有機能メモリ１４１０。これは、一般のルックアップテーブル（ＬＵＴ）及び統計収集機能（ヒストグラム）を提供する大型共有メモリである。また、これは大型共有メモリを使用して、リサンプリング及び歪補正等のノードＳＩＭＤにより（コストの理由で）充分サポートされていないピクセル処理をサポートし得る。この処理はネイティブタイプとして、スカラ、ベクトル、及び２Ｄアレイを実装する（例えば）６発行命令ＲＩＳＣプロセッサ（即ち、後で詳しく説明するＳＦＭプロセッサ７６１４）を用いる。
（４）  ハードウェアアクセラレータ１４１８。これは、プログラマビリティを必要としない機能のため、或いは電力及び／又は面積を最適化するために組み込まれ得る。アクセラレータは、サブシステムにはシステム内の他のノードとして現れ、制御及びデータフローに参加し、イベントを作成可能であり、スケジューリング可能である。またデバッガにとっては可視的である。（ハードウェアアクセラレータは、適用可能であるときは、専用のＬＵＴ及び統計収集を有し得る。）
（５）  データインターコネクト８１４及びシステムオープンコアプロトコル（ＯＣＰ）Ｌ３接続１４１２。これらは、ノードパーティション、ハードウェアアクセラレータ、及びシステムメモリ、及び、データバス１４２２上の周辺装置の間のデータ移動を管理する。（ハードウェアアクセラレータは、Ｌ３へのプライベート接続も有し得る）。
（６）  デバッグインタフェース。これらは、図には示されていないが、本明細書中に記載される。
【００２６】
図５を参照すると、共有機能メモリ１４１０が見られる。共有機能メモリ１４１０は、概して、ノードにより（コストの理由で）充分サポートされない操作をサポートする、大型の集中メモリである。共有機能メモリ１４１０の主な構成要素は、（各々が、例えば４８〜１０２４Ｋバイトの間で構成可能なサイズ及び構成を有する）２つの大型メモリ、機能メモリ７６０２及びベクトルメモリ７６０３である。この機能メモリ７６０２は、高帯域、ベクトルベースのルックアップテーブル（ＬＵＴ）、及びヒストグラムの、同期、命令駆動型の実装を提供する。ベクトルメモリ７６０３は、（上記のセクション８で説明したように）ベクトル命令を暗示する、（例えば）６発行命令プロセッサ（即ち、ＳＦＭプロセッサ７６１４）による操作をサポートし得る。ベクトル命令は、例えば、ブロックベースのピクセル処理のために用いられ得る。典型的には、このＳＦＭプロセッサ７６１４は、メッセージングインタフェース１４２０及びデータバス１４２２を用いてアクセスされ得る。ＳＦＭプロセッサ７６１４は、例えば、ノード内のＳＩＭＤデータメモリに比べて、より一般的な構成、及びより大きな総メモリサイズを有し、より一般的な処理がデータに適用され得る、ワイドピクセルコンテキスト（６４ピクセル）上で動作し得る。それは、標準Ｃ＋＋整数データタイプ上で、スカラー、ベクトル、及びアレイ操作、並びに、各種のデータタイプと適合性のある、パックされたピクセル上の操作をサポートする。例えば、図示されるように、ベクトルメモリ７６０３及び機能メモリ７６０２に関連するＳＩＭＤデータパスは、概して、ポート７６０５−１〜７６０５−Ｑ及び機能ユニット７６０７−１〜７６０７−Ｐを含む。
【００２７】
全ての処理ノード（即ち、８０８−ｉ）が機能メモリ７６０２及びベクトルメモリ７６０３にアクセスし得るという意味で、機能メモリ７６０２及びベクトルメモリ７６０３は、全般的に「共有」されている。機能メモリ７６０２に提供されるデータは、ＳＦＭラッパーを介して（典型的にはライトオンリーの方式で）アクセスされ得る。また、この共有は、全般的に、ノード（即ち、８０８−ｉ）を処理するための上述のコンテキスト管理と一貫性がある。また、処理ノードと共有機能メモリ１４１０との間のデータＩ／Ｏもデータフロープロトコルを使用し、処理ノードは、典型的には、ベクトルメモリ７６０３に直接アクセスできない。また、共有機能メモリ１４１０は、機能メモリ７６０２に書き込むことができるが、処理ノードによってアクセスされている間は、書き込むことができない。処理ノード（即ち、８０８−ｉ）は、機能メモリ７６０２内の共通位置を読み出し及び書き込みできるが、（通常は）リードオンリーＬＵＴ操作、又はライトオンリーヒストグラム操作のいずれかとしてである。また、処理ノードが機能メモリ７６０２領域への読み出し−書き込みアクセスを有することも可能であるが、これは所定のプログラムによるアクセスに限定されるべきである。
【００２８】
共有機能メモリ１４１０の例である図５には、ノードアクセス用のポート７６２４−１〜７６２４−Ｒがある。（実際の数はコンフィギャラブルであるが、典型的には、パーティション当たり１つのポートがある。）ポート７６２４−１〜７６２４−Ｒは、概して、並列アクセスをサポートするように編成され、そのため、ノードＳＩＭＤにおけるデータパスはすべて、任意の所与のノードから、同時ＬＵＴ又はヒストグラムアクセスを実施し得る。
【００２９】
この例での機能メモリ７６０２の編成は、それぞれ１６個の１６ビットピクセルを含む１６個のバンクを有する。バンク７６０８−１で始まるように整合される２５６個のエントリのルックアップテーブル即ちＬＵＴがあると仮定され得る。ノードは、ピクセル値（サイクル当たり１６ピクセル、ノード全体で４サイクル）の入力ベクトルを提示し、このテーブルは、ＬＵＴにアクセスするベクトル要素を用いて１サイクルでアクセスされる。このテーブルは各バンク（すなわち、７６０８−１〜７６０８−Ｊ）の単一ライン上に表されているので、すべてのノードは同時アクセスを実施し得る。というのは、任意のベクトルのいずれの要素もバンクコンフリクトをもたらし得ないからである。結果のベクトルが、テーブル値を複製して結果のベクトルの要素にすることによって生成される。結果のベクトルの各要素に対し、入力ベクトルの対応する要素の値によって選択されるＬＵＴエントリによって結果の値が求められる。任意の所与のバンク（すなわち、７６０８−１〜７６０８−Ｊ）で、２つのノードからの入力ベクトルが同じバンクへの異なるＬＵＴインデックスを生成する場合、最も古い入力が優先されるようにバンクアクセスが優先順位づけられる、又は、すべての入力が同時に生じる場合、最も左側のポート入力が優先される。バンクコンフリクトはあまり頻繁には起こらないか、又は、バンクコンフリクトがスループットに何らかの影響を及ぼす場合でもあまり影響がないと予想される。この理由をいくつか下記に示す。
・多くのテーブルは、同じテーブル内で同時にアクセスされ得るエントリの合計数（すなわち、２５６）と比較して小さい。
・入力ベクトルは、通常、（例えば）ピクセルの比較的小さく局所的な水平領域によるものであり、概して値は大きく変動しない（そのため、ＬＵＴインデックスが大きく変動しないはずである）と予想される。例えば、画像フレームが５４００ピクセル幅である場合、サイクル当たり１６ピクセルの入力ベクトルは、合計走査線の０．３％未満を表す。
・最後に、ＬＵＴにアクセスするプロセッサ命令は、ＬＵＴ演算の結果を使用する命令から切り離される。プロセッサコンパイラは、初期アクセスから可能な限りこの使用のスケジューリングを試みる。ＬＵＴアクセスと使用が充分に離れていれば、いくつかの付加的なサイクルがＬＵＴバンクコンフリクトによって消費されたとしてもストールには至らない。
【００３０】
パーティション内で、１つのノード（すなわち、ノード８０８−ｉ）は、通常、任意の所与の時間に機能メモリ７６０２にアクセスするが、これは性能に大きな影響を及ぼさないはずである。同じプログラムを実行するノード（すなわち、８０８−ｉ）は、このプログラム内で異なる位置にあり、時間内に所与のＬＵＴへのアクセスを行う。異なるプログラムを実行するノードの場合でさえ、ＬＵＴアクセス頻度は低く、異なるＬＵＴへの同時アクセスが同時に起こる確率は極めて低い。このようなことが起こっても、その影響は概して最小限に抑えられる。これは、コンパイラがこれらの結果の使用から可能な限り遠くＬＵＴアクセスをスケジューリングするからである。
【００３１】
異なるパーティション内のノードは、バンクコンフリクトがないと仮定すると、同時に機能メモリ７６０２にアクセスし得るが、これはまれにしか起こらないはずである。任意の所与のバンクで、２つのパーティションからの入力ベクトルが同じバンクへの異なるＬＵＴインデックスを生成する場合、このバンクアクセスは、最も古い入力が優先されるように優先順位づけられる、又は、すべての入力が同時に生じる場合、最も左側のポート入力が優先される（例えば、ポート１よりもポート０が優先される）。
【００３２】
ヒストグラムアクセスは、ノードに戻される結果がないことを除いて、ＬＵＴアクセスに類似している。その代わりに、ノードからの入力ベクトルは、ヒストグラムエントリにアクセスするために用いられ、これらのエントリは算術演算によって更新され、その結果がヒストグラムエントリに戻される。入力ベクトルの複数の要素が同じヒストグラムエントリを選択する場合、このエントリはそれに応じて更新される。例えば、３つの入力要素が所与のヒストグラムエントリを選択し、算術演算が単純な増分の場合、このヒストグラムエントリは３だけ増分され得る。ヒストグラムの更新は、典型的には、下記の３つの形態の１つを取り得る。
−エントリは、ヒストグラム命令における定数だけ増分され得る。
−エントリは、プロセッサ内のレジスタにおける変数の値だけ増分され得る。
−エントリは、入力ベクトルとともに送出される別の重みベクトルだけ増分され得る。例えば、これにより、入力ベクトル内のピクセルの相対位置に応じてヒストグラム更新に重み付けされ得る。
【００３３】
各記述子は、（バンク整合された）関連するテーブルのベースアドレス、インデックスを形成するために用いられる入力データのサイズ、及びベースアドレスに対する、このテーブルへのインデックスを形成するために用いられる２つの（例えば）１６ビットマスクを指定し得る。こういったマスクは、概して、インデックスを形成するために（例えば）ピクセルのどのビットを選択し得るかを決める。選択されるビットは任意の連続ビットであり、それによって、テーブルサイズが間接的に示される。ノードがＬＵＴ命令又はヒストグラム命令を実行する際、この命令は、典型的に４ビットフィールドを用いて記述子を選択する。この命令はテーブルに対する演算を決定し、そのため、ＬＵＴ及びヒストグラムを任意に組み合わせ得る。例えば、ノード（すなわち８０８−ｉ）は、ヒストグラムにルックアップテーブル演算を実施することによってヒストグラムエントリにアクセスし得る。テーブル記述子は、ＳＦＭデータメモリ７６１８初期化の一部として初期化され得る。ただし、これらの値はハードウェア記述子にもコピーすることができ、そのため、ＬＵＴ演算及びヒストグラム演算は、ＳＦＭデータメモリ７６１８にアクセスすることを必要とせずに、所望の場合には並列に、これらの記述子にアクセスし得る。
【００３４】
図５に戻って、ＳＦＭプロセッサ７６１６は、概して、機能メモリ７６０２の大きな領域内の比較的広い（例えば）ピクセルコンテキストへの一般的プログラミングアクセスを提供する。これは、（１）一般的なベクトル及びアレイ演算、（２）Ｌｉｎｅデータ型と互換性のある、（例えば）水平ピクセルグループに対する演算、及び（３）フレームのビデオマクロブロックまたは矩形領域などのデータへの２次元アクセスをサポートし得る、（例えば）Ｂｌｏｃｋデータ型のピクセルに対する演算を含み得る。そのため、処理クラスタ１４００は、走査線ベース及びブロックベースのピクセル処理の両方をサポートし得る。機能メモリ７６０２のサイズもコンフィギャラブルである（すなわち、４８〜１０２４キロバイト）。典型的には、このメモリ７６０２のわずかな部分がＬＵＴ及びヒストグラム用とされ、そのため、残りのメモリは、例えば関連ピクセルのベクトルを含めて、バンク７６０８−１〜７６０８−Ｊに対する一般的なベクトル演算に用いられ得る。
【００３５】
図に示すように、ＳＦＭプロセッサ７６１４は、（例えば）３２ビットスカラー処理（すなわち、この場合は二重発行）用のＲＩＳＣプロセッサを用い、命令セットアーキテクチャを拡張して、（例えば）１６個の３２ビットデータパスにおけるベクトル及びアレイ処理をサポートし、１６ビットパックドデータに対しても動作して最大で動作スループットの２倍が得られ、８ビットパックドデータに対しても動作して最大で動作スループットの４倍が得られ得る。ＳＦＭプロセッサ７６１４は、（例えば）ピクセルのデータ型（Ｌｉｎｅ、Ｐａｉｒ、及びｕＰａｉｒ）と互換性のある、広いピクセルコンテキストに対する演算を実施する能力を利用可能にする一方で、任意のＣ＋＋プログラムをコンパイルし得る。ＳＦＭプロセッサ７６１４は、水平及び垂直両方向を含めて、プロセッサによって提供される制限付きサイドコンテキストアクセス及びパッキングではなく、（例えば）ピクセル位置間のより一般的なデータ移動も提供し得る。この一般性は、ノードプロセッサと比較して、ＳＦＭプロセッサ７６１４が、機能メモリ７３０２の２次元アクセス能力を用いるため、また、４つのロード及び２つのストアではなくどのサイクルでもロード及びストアをサポートし得るため、可能である。
【００３６】
ＳＦＭプロセッサ７６１４は、動き推定、リサンプリング、及び離散コサイン変換、並びに歪み補正などのより一般的な演算を実施し得る。命令パケットは１２０ビット幅とすることができ、１サイクルで最大で２つのスカラー演算及び４つのベクトル演算が並行して発行される。命令並列性の度合いが低い符号領域では、スカラー及びベクトル命令は、サイクル当たり１つの命令を直列に発行することを含めて、幅６未満の任意の組合せで実行され得る。並列性は、前の命令との並列発行を示すため命令ビットを用いることによって検出され、複数の命令は順番に発行される。生成される機能メモリアドレスが線形か２次元かに応じて、ＳＩＭＤデータパス用の２つの形態のロード及びストア命令がある。機能メモリ７６０２の第１の種類のアクセスはスカラーデータパスで実施され、第２の種類のアクセスはベクトルデータパスで実施される。後者の場合、これらのアドレスは、（例えば）各データパスの半分における１６ビットレジスタ値に基づいて、完全に独立とし得る（それによって、独立なアドレスから最大で例えば３２ピクセルにアクセスし得る）。
【００３７】
ノードラッパー７６２６と、ＳＦＭプロセッサ７６１４の制御構造とは、ノードプロセッサのものと類似しており、いつくかの例外を除き、多くの共通の構成要素を共有する。ＳＦＭプロセッサ７６１４は、（例えば）水平方向の極めて一般的なピクセルアクセスをサポートし得、ノード（すなわち、８０８−ｉ）に用いるサイドコンテキスト管理技術は概して可能ではない。例えば、用いられるオフセットは、プログラム変数に基づくものとすることができ（ノードプロセッサではピクセルオフセットは典型的には命令イミディエート（immediate）である）、そのため、コンパイラ７０６は、一般に、サイドコンテキスト依存性を満足するためにタスクの境界を検出及び挿入することができない。ノードプロセッサでは、コンパイラ７０６はこれらの境界の場所を把握しているはずであり、レジスタ値がこれらの境界を越えると有効でなくなると予想されることを保証し得る。ＳＦＭプロセッサ７６１４では、ハードウェアがタスク切り替えを実施すべき時点を決定し、スカラー単位及びＳＩＭＤベクトル単位の両方で、すべてのレジスタを保存及び復元するためのハードウェアサポートを提供する。典型的には、保存及び復元に用いられるハードウェアは、コンテキスト保存復元回路要素７６１０及びコンテキスト状態回路７６１２である（これらは例えば１６×２５６ビットとし得る）。この回路要素７６１０は、（例えば）スカラーコンテキスト保存回路（例えば、１６×１６×３２ビットとし得る）及び３２個のベクトルコンテキスト保存回路（例えば、各々、１６×５１２ビットとし得る）を含み、これらは、ＳＩＭＤレジスタを保存及び復元するために用いられ得る。ベクトルメモリ７６０３は、概して、サイドコンテキストＲＡＭをサポートせず、（例えば）ピクセルオフセットを変数とし得るので、概して、ノードプロセッサで用いられる同じ依存性メカニズムを許容しない。その代わりに、（例えば）フレームの或る領域内のピクセルは、いくつかのコンテキストにわたって分散されておらず、同じコンテキスト内にある。これにより、複数の並列ノードにわたってコンテキストが水平方向に共有されるべきではないことを除いて、ノードコンテキストに類似する機能が得られる。共有機能メモリ１４１０は、概して、ＳＦＭデータメモリ７６１８、ＳＦＭ命令メモリ７６１６、及びグローバルＩＯバッファ７６２０も含む。また、共有機能メモリ１４１０は、優先順位付け、バンク選択、インデックス選択、及び結果総合を実施し得るインタフェース７６０６も含み、インタフェース７６０６は、パーティションＢＩＵ（すなわち、４７１０−ｉ）を介してノードポート（すなわち、７６２４−１〜７６２４−４）に結合される。
【００３８】
図６を参照すると、共有機能メモリ１４１０のためのＳＩＭＤデータパス７８００の例が見られる。例えば、８個のＳＩＭＤデータパス（これらは、１６ビットパックデータを操作できるので、２つの１６ビットハーフに区分され得る）が使用され得る。図示されるように、これらのＳＩＭＤデータパスは、全般的に、バンクのセット７８０２−１〜７８０２−Ｌ、関連するレジスタ７８０４−１〜７８０４−Ｌ、及び関連する機能ユニットのセット７８０６−１〜７８０６−Ｌを含む。
【００３９】
図７では、ＳＩＭＤデータパス（即ち及び例えば、レジスタ７８０４−１〜７８０４−Ｌの１つの一部分、及び機能ユニット７８０６−１〜７８０６−Ｌの１つの一部分）の例が見られる。図示されるように、例えば、このＳＩＭＤデータパスは、１６−エントリ、３２ビットレジスタファイル７９０２、２つの１６ビット乗算器７９０４及び７９０６、及び、同様に、１サイクル中に２つの１６ビットパック操作を実行し得る、単一の３２ビット算術／論理ユニット７９０８を含み得る。また、例として、各ＳＩＭＤデータパスは、２つの、独立した１６ビット演算、又は組み合わせた３２ビット演算を実行し得る。例えば、これは、３２ビットの加算器と組み合わせた１６ビット乗算器を用いて３２ビットの乗算を形成し得る。また、算術／論理ユニット７９０８は、加算、減算、論理演算（即ち、ＡＮＤ）、比較、及び条件移動を実行することが可能である。
【００４０】
図６に戻ると、ＳＩＭＤデータパスレジスタ７８０４−１〜７８０４−Ｌは、ベクトルメモリ７６０３へのロード／ストアインタフェースを使用し得る。これらのロード及びストアは、ノード（即ち、８０８−ｉ）による並列ＬＵＴ及びヒストグラムアクセスのために提供されるベクトルメモリ７６０３の特徴を使用し得る。ノードのために各ＳＩＭＤデータパスハーフは機能メモリ７６０２内へのインデックスを提供し得る。同様に、ＳＦＭプロセッサ７６１４内の各ＳＩＭＤデータパスハーフは、独立ベクトルメモリ７６０３アドレスを提供し得る。アドレス指定は、概して、隣接するデータパスが（例えば）スカラ、ベクトル、及び８、１６、又は３２ビットデータのアレイなど、データタイプの多数のインスタンス上で同じ操作を実行できるように構成される。これらは、ベクトル暗示アドレス指定モードと称される（ベクトルが、リニアのベクトルメモリ７６０３アドレス指定を用いて、ＳＩＭＤによって暗示される）。或いは、各データパスはバンク７６０８−１〜７６０８−Ｊ内のフレームの領域からのパックされたピクセル上で操作し得る。これらは、ベクトルパック化アドレス指定モードと称される（パックされたピクセルのベクトルは、二次元ベクトルメモリ７６０３アドレス指定を用いて、ＳＩＭＤによって暗示される）。両方の場合において、ノードプロセッサ４３２２と同じように、プログラミングモデルがＳＩＭＤの幅を隠すことができ、プログラムはあたかもそれらが単一ピクセル又は他のデータタイプのエレメント上で演算したかのように書き込まれる。
【００４１】
ベクトル暗示データタイプは、概して、各ＳＩＭＤデータパスによって個別に演算される８ビットｃｈａｒ、１６ビットハーフワード、又は３２ビットｉｎｔ、のいずれかのＳＩＭＤ実装ベクトルである（即ち、図９）。これらのベクトルは、概して、プログラム内では明示的でなく、ハードウェア演算によって暗示される。また、これらのデータタイプは、明示的プログラムベクトル又はアレイ内のエレメントとして構成され得る。ＳＩＭＤは、隠された２次元、又は３次元を、これらのプログラムベクトル又はアレイに、効果的に加算する。実際には、プログラミングビューは専用の３２ビットデータメモリを備える単一のＳＩＭＤデータパスであり得る。このメモリは従来のアドレス指定モードを用いてアクセスされる。ハードウェアでは、このビューは、３２のＳＩＭＤデータパスの各々がプライベートデータメモリの外観を有するような方式でマッピングされるが、この機能性を共有機能メモリ１４１０に実装するために、ベクトルメモリ７６０３のワイドなバンクされた構成の利点を実装に利用する。
【００４２】
ＳＦＭプロセッサ７６１４ＳＩＭＤは、概して、記述子を用いて、ノードプロセッサ４３２２コンテキストに類似するベクトルメモリ７６０３コンテキスト内で動作する。記述子はバンクのセット７８０２−１に整列され、全体のベクトルメモリ７６０３にアクセスするのに充分に大きい（即ち、１０２４ｋＢのサイズの場合、１３ビット）ベースアドレスを有する。ＳＩＭＤデータパスの各ハーフは、一番左のデータパスのための０から始まる６ビット識別子（ＰＯＳＮ）で番号付けされる。ベクトル暗示アドレス指定の場合、この値のＬＳＢは、概して無視され、残りの５ビットは、データパスによって生成されたベクトルメモリ７６０３アドレスをベクトルメモリ７６０３内のそれぞれのワードに整列させるために用いられる。
【００４３】
図８では、アドレス形成の例を見ることができる。典型的には、ＳＩＭＤの結果によってロード又はストア命令が実行されると、各データパスによって、このデータパスにおけるレジスタ及び／又は命令イミディエート値に基づいて、生成されるアドレスが得られる。これは、プログラミングの観点では、単一のプライベートデータメモリにアクセスするアドレスである。これは、例えば、３２ビットアクセスとし得るので、このアドレスの２つのＬＳＢは、ベクトルメモリ７６０３へのアクセスでは無視することができ、ワード内のバイト又はハーフワードにアドレスするために用いられ得る。このアドレスは、コンテキストベースアドレスに加えられ、その結果、暗示ベクトル用のコンテキストインデックスが得られる。各データパスは、このインデックスをＰＯＳＮ値（これはワードアクセス用であるため）のビット（すなわち、ビット５：１）に連結し、その結果の値は、このデータパスのコンテキスト内でのベクトルメモリ７６０３用のインデックスである。このアドレスは、コンテキストベースアドレスに加えられ、その結果、暗示ベクトル用のベクトルメモリ７６０３のアドレスが得られる。
【００４４】
これらのアドレスは、７８０２−１〜７８０２−Ｌの各組（すなわち、１６個のバンクの４個）からの或るバンクに整合された値にアクセスし、このアクセスは１サイクルで行われ得る。すべてのアドレスが同じスカラーレジスタ及び／又はイミディエート値に基づいており、ＬＳＢのＰＯＳＮ値が異なるので、バンクコンフリクトは生じない。
【００４５】
図９及び図１０は、ソースプログラム内に明示的に存在するベクトル及びアレイに対してアドレス指定がどのように実施され得るかの例を示す。このプログラムは、従来のベース・プラス・オフセット加算を用いて、最初の３２ビットデータパスについての所望の要素のアドレスを（データパスの１６ビットずつの２つの半分に対するＰＯＳＮ値０及び１を用いて）演算する。他のデータパスも同じ演算を実施してこのアドレスの同じ値を計算するが、最終的なアドレスは、各データパスに対しそのデータパスの相対位置だけオフセットされている。これにより、（例えば）３２個の隣接する３２ビット値にアクセスする４つのベクトルメモリバンク（すなわち、７６０８−１、７６０８−５、７６０８−９、及び７６０８−１２）がアクセスされる。これは、アドレス指定モードがベクトルメモリ７６０３の編成を効率よく利用する典型的方法を示している。各データパスはプライベートな１組の機能メモリ７６０２エントリにアドレスするので、このローカルデータパス内でストア−ロード依存性がチェックされ、依存性がある場合にはフォワーディングが適用される。一般に、データパス間の依存性のチェックは、極めて複雑なので、望まれない。これらの依存性は、ストアの後、依存ロードが実施され得る前に（サイクル数は３〜４サイクルとなる可能性が高い）遅延スロットをスケジューリングするコンパイラ７０６によって避けるべきである。
【００４６】
ベクトルパックドアドレス指定モードでは、概して、ＳＦＭプロセッサ７６１６のＳＩＭＤデータパスを、（例えば）ノード（８０８−ｉ）におけるパックドピクセルと互換性のあるデータ型で動作させる。これらのデータ型の編成は、ノードデータメモリにおける編成と比較して、機能メモリ７６０２では大きく異なる。複数のコンテキストにわたる水平グループをストアする代わりに、これらのグループを単一のコンテキストにストアし得る。ＳＦＭプロセッサ７６１４は、ベクトルメモリ７６０３の編成をうまく利用して、（例えば）任意の水平又は垂直位置からデータパスレジスタに、変数オフセットに基づいて、ピクセルをパックすることができ、それによって、歪み補正などの演算が成される。これに対し、ノード（すなわち、８０８−ｉ）は、小さな一定オフセットを用いて水平方向のピクセルにアクセスし、これらのピクセルはすべて同じ走査線上にある。共有機能メモリ１４１０用のアドレス指定モードは、サイクル当たり１つのロード及び１つのストアをサポートすることができ、その性能は、ランダムアクセスによって生じるベクトルメモリバンク（すなわち、７６０８−１）コンフリクトに応じて変化する。
【００４７】
ベクトルパックドアドレス指定モードは、概して、第１の次元がフレーム内の垂直方向に対応し、第２の次元が水平方向に対応する、２次元アレイのアドレス指定に類似のアドレス指定を用いる。（例えば）所与の垂直及び水平インデックスのピクセルにアクセスするは、垂直インデックスに、Ｌｉｎｅの場合は水平グループの幅、又はＢｌｏｃｋの幅を乗算する。これにより、この垂直オフセットのところに位置する最初のピクセルに対するインデックスが得られる。これが、水平インデックスに加算されて、所与のデータ構造内でアクセスされるピクセルのベクトルメモリ７６０３のアドレスが得られる。
【００４８】
垂直インデックス計算は、プログラムされたパラメータに基づいている。この例が図１１に示されている。このパラメータは、Ｌｉｎｅ及びＢｌｏｃｋデータ型の両方の垂直アドレスを制御する。この例でのフィールドは、概して、下記のように定義される（環状バッファは概してＬｉｎｅデータを含む）。
・上部フラグ（Ｔｏｐ  Ｆｌａｇ：ＴＦ）：これは、環状バッファがフレームの上部縁に近いことを示す。
・底部フラグ（Ｂｏｔｔｏｍ  Ｆｌａｇ：ＢＦ）：これは、環状バッファがフレームの底部縁に近いことを示す。
・モード（Ｍｏｄｅ：Ｍｄ）：この２ビットフィールドは、アクセスに関連する情報を符号化する。値００’ｂは、アクセスがＢｌｏｃｋに対するものであることを意味する。値０１〜１１’ｂは、環状バッファに用いられる境界処理の型を符号化し、０１’ｂは境界にわたってミラーリングし、１０’ｂは境界にわたって境界ピクセルを繰り返し、１１’ｂは飽和値７ＦＦＦ’ｈ（ピクセルは１６ビット値である）を戻す。
・ストアディセーブル（Ｓｔｏｒｅ  Ｄｉｓａｂｌｅ：ＳＤ）：これは、このポインタを用いてライトを抑制して、一連の依存バッファにおける開始遅延の原因となる。
・上部／底部オフセット（Ｔｏｐ／Ｂｏｔｔｏｍ  Ｏｆｆｓｅｔ：ＴＢＯｆｆｓｅｔ）：このフィールドは、環状バッファの相対的位置０に対し、フレームの上部からどのくらい下に位置するか、又はフレームの底部からどのくらい上に位置するかを走査線の数で示す。これにより、位置０から負（上部）又は正（底部）オフセットに対するフレームの境界がわかる。
・ポインタ：これは、垂直方向に相対オフセット０の走査線に対するポインタである。これは、バッファのアドレス範囲内の任意の絶対位置とし得る。
・バッファサイズ（Ｂｕｆｆｅｒ＿Ｓｉｚｅ）：これは、環状バッファの総垂直サイズであり、走査線の数で表される。これは、バッファ内でのモジュロアドレス指定を制御する。
・ＨＧサイズ／Ｂｌｏｃｋ幅（ＨＧ＿Ｓｉｚｅ／Ｂｌｏｃｋ＿Ｗｉｄｔｈ）：これは、水平グループの幅（ＨＧ＿Ｓｉｚｅ）又はＢｌｏｃｋの幅（Ｂｌｏｃｋ＿Ｗｉｄｔｈ）であり、３２ピクセルを単位とする。これは、ベクトルパックドアドレスを形成するために用いられる第１の次元の大きさである。
このパラメータは、Ｂｌｏｃｋの場合、Ｂｌｏｃｋ＿Ｗｉｄｔｈを除くすべてのフィールドがゼロになるように符号化され、符号生成は、この値を、Ｂｌｏｃｋ宣言の次元に基づいて、ｃｈａｒとして扱い得る。他のフィールドは、通常、環状バッファに対して用いられ、プログラマ及び符号生成の両方によって設定される。
【００４９】
図１２に移ると、水平グループが機能メモリコンテキスト内にどのようにストアされ得るかを見ることができる。水平グループのこの編成は、複数のノード（すなわち、８０８−ｉ）にわたって割り当てられる水平グループを模倣したものであるが、ただし、（図に示されるように、且つ、例えば）これらのグループは、複数のノードコンテキストではなく単一の機能メモリコンテキスト内にストアされる。この例は、６つのノードコンテキストの幅に等価な水平グループを示している。このグループの最初の６４個のピクセルは、０と番号が振られ、バンク０〜３の連続位置にストアされる。このグループの２番目の６４個のピクセルは、１と番号が振られ、バンク４〜７にストアされる。このパターンが、バンクに対して、第２の組の６４個のピクセルの１ライン下の、５と番号が振られバンク４〜７にストアされる第６の組の６４個のピクセルまで繰り返される。この例では、次の垂直線の最初の６４個のピクセルは、０と番号が振られ、第１の走査線の第３の組の６４個のピクセルの下のバンク８〜Ｂ’ｈにストアされる。これらのピクセルは、ＳＩＭＤデータメモリ内の環状バッファに次の走査線にストアされるノードピクセルに対応する。走査線内のピクセルは、データパスによって生成されるパックドアドレスを用いてアクセスされる。データパスの各半分は、データパスのこの半分にパックされるか、又は、データパスのこの半分から機能メモリ７６０２に書き込まれるピクセルに対するアドレスを生成する。ノードコンテキスト編成を模倣するために、ＳＩＭＤは概念的に水平グループ内の６４個のピクセルの所与の組を中心とし得る。この場合、データパスの各半分は、この組の単一ピクセルを中心とし、データパスのこの半分に対するＰＯＳＮ値を用いてアドレスされる。ベクトルパックドアドレス指定モードは、このピクセル位置からの符号付きオフセットを定義し、これは、命令イミディエートか、このデータパスの半分に関連するレジスタの半分の中にパックされた符号付き値かのいずれかである。これは、ノードプロセッサ命令セットにおけるピクセルオフセットに匹敵するが、より一般的なものである。というのは、これが、より広い範囲の値を有し、プログラム変数に基づき得るからである。
【００５０】
ＳＦＭプロセッサ７６１４はノード（すなわち、８０８−ｉ）に類似の処理演算を実施するので、類似のコンテキスト編成及びプログラムスケジューリングで、ノードと同様にスケジューリング及び配列される。しかし、ノードとは異なり、データは走査線の水平方向にわたるコンテキスト間で必ずしも共有されない。その代わりに、ＳＦＭプロセッサ７６１４は、はるかに大きくスタンドアロンのコンテキストに対して動作し得る。また、サイドコンテキストは動的に共有され得ないので、コンテキスト間のきめ細かいマルチタスキングをサポートする必要はないが、スケジューラは、データフローのストールを中心にスケジューリングを行うためにプログラムプリエンプションを用い得る。
【００５１】
図１３に移ると、ＳＦＭデータメモリ７６１８についての編成の例を見ることができる。このメモリ７６１８は、概して、それぞれ３２ビット幅の、例えば２０４８個のエントリを有し得る、ＳＦＭプロセッサ７６１４用のスカラーデータパスである。このＳＦＭデータメモリ７６１８内の、例えば最初の８個の区域は、概して、ＳＦＭデータメモリ７６１８のコンテキスト用のコンテキスト記述子８５０２を含む。このＳＦＭデータメモリ７６１８の次の、例えば３２個の区域は、概して、機能メモリ７６０２内の最大で（例えば）１６個のＬＵＴ及びヒストグラムテーブルに対するテーブル記述子８５０４を含み、各テーブル記述子８５０４には２つの３２ビットワードが用いられる。これらのテーブル記述子８５０４は、概して、ＳＦＭデータメモリ７６１８内に置かれるが、これらのテーブル記述子８５０４は、ＳＦＭデータメモリ７６１８の初期化の間、ノード（すなわち、８０８−ｉ）からのＬＵＴ及びヒストグラム演算を制御するために用いられるハードウェアレジスタにコピーされ得る。ＳＦＭデータメモリ７６１８の残りは、概して、可変割り当てを有するプログラムデータメモリコンテキスト８５０６を含む。また、ベクトルメモリ７６０３は、ＳＦＭプロセッサ７６１４のＳＩＭＤ用のデータメモリとして機能し得る。
【００５２】
ＳＦＭプロセッサ７６１４は、ＳＩＭＤレジスタを含めて、充分なコンテキストを保存及びリストアを備えた、充分に一般的なタスクスイッチもサポートし得る。コンテキスト保存／復元ＲＡＭは、０サイクルコンテキストスイッチをサポートする。これは、ＳＦＭプロセッサ７６１４のコンテキスト保存／復元ＲＡＭに類似しているが、この場合、ＳＩＭＤレジスタを保存及び復元するための１６個の付加的なメモリがあることが異なっている。これにより、プログラムプリエンプションがペナルティなしに実施され、これは、複数のＳＦＭプロセッサ７６１４のプログラムに入出力されるデータフローをサポートするのに重要である。このアーキテクチャでは、プリエンプションを用いてペナルティ有効ブロックに対する実行を許可し、これによりリソース使用が最適化され得る。というのは、ブロックはその全体の転送に長時間を必要とし得るからである。コンテキスト状態ＲＡＭは、ノード（すなわち、８０８−ｉ）のコンテキスト状態ＲＡＭに類似しており、類似の機能性を提供する。コンテキスト記述子とデータフローの状態にはいくらかの差異があり、これはＳＦＭ機能性の差異を反映している。これらの差異を以下で説明する。宛先記述子及び保留許可テーブルは、通常、ノード（８０８−ｉ）と同じである。ＳＦＭコンテキストは、様々な種類の入力データに対する依存性チェックと、実行によるＬｉｎｅ及びＢｌｏｃｋ入力の重なりをサポートする多くの方法で編成され得る。
【００５３】
ＳＦＭノードラッパー７６２６は、共有機能メモリ１４１０の構成要素であり、ＳＦＭプロセッサ７６１４周りの制御及びデータフローを実施する。ＳＦＭノードラッパー７６２６は、概して、ＳＦＭと処理クラスタ１４００内の他のノードとのインタフェースを実装する。すなわち、ＳＦＭノードラッパー７６２６は、下記の機能を実装し得る。ノード構成（ＩＭＥＭ、ＬＵＴ）の初期化、コンテキスト管理、プログラムのスケジューリング、切り替え及び打ち切り、入力データフロー及び入力依存性チェックのイネーブル、出力データフロー及び出力依存性チェックのイネーブル、コンテキスト間の依存性の取り扱い、並びにノードに対する信号イベント及びノードデバッグ操作のサポートである。
【００５４】
ＳＦＭノードラッパー７６２６は、典型的には、処理クラスタ１４００中の他のブロックとの３つの主なインタフェースを有する。すなわち、メッセージインタフェース、データインタフェース、及びパーティションインタフェースである。メッセージインタフェースは、入力および出力メッセージがメッセージインターコネクトのスレーブ及びマスタポートにそれぞれマッピングされる、ＯＣＰインターコネクトにある。このインタフェースからの入力メッセージは、（例えば）深さが４のメッセージバッファに書き込まれて、ＯＣＰインタフェースからメッセージ処理が切り離される。メッセージバッファが一杯でない限り、ＯＣＰバーストが受け入れられ、オフラインで処理される。メッセージバッファが一杯になると、ＯＣＰインターコネクトはさらなるメッセージが受け入れられ得るまでストールする。データインタフェースは、概して、ベクトルデータ（入力及び出力）を交換するため、及び、命令メモリ７６１６及び機能メモリＬＵＴを初期化するために用いられる。パーティションインタフェースは、概して、各パーティションに対し共有機能メモリ１４１０内の少なくとも１つの専用のポートを含む。
【００５５】
命令メモリ７６１６の初期化は、ノード命令メモリ初期化メッセージを用いて成される。このメッセージは初期化処理を設定し、命令ラインがデータインターコネクトに送出される。初期化データは、ＧＬＳユニット１４０８によって複数バーストで送出される。（例えば）ＭＲｅｑＩｎｆｏ［１５：１４］＝「００」は、データインターコネクト８１４に関するデータを命令メモリ初期化データとして識別し得る。各バーストにおいて、開始命令メモリ位置がＭＲｅｑＩｎｆｏ［２０：１９］（ＭＳＢ）及びＭＲｅｑＩｎｆｏ［８：０］（ＬＳＢ）で送出される。バースト内で、アドレスが内部的に各ビートで増分される。（例えば）Ｍｄａｔａ［１１９：０］は、命令データを担持する。命令メモリ７６１６の一部は、選択されたプログラムを再初期化するために開始アドレスを提供することによって再初期化され得る。
【００５６】
機能メモリ７６０２のルックアップテーブルすなわちＬＵＴの初期化は、概して、ＳＦＭ機能メモリ初期化メッセージを用いて実施される。このメッセージは初期化処理を設定し、データワードラインがデータインターコネクト８１４に送出される。初期化データは、ＧＬＳユニット１４０８によって複数バーストで送出される。ＭＲｅｑＩｎｆｏ［１５：１４］＝「１０」は、データインターコネクト８１４に関するデータを機能メモリ７６０２の初期化データとして識別し得る。各バーストにおいて、開始機能メモリアドレス位置が、ＭＲｅｑＩｎｆｏ［２５：１９］（ＭＳＢ）及びＭＲｅｑＩｎｆｏ［８：０］（ＬＳＢ）で送出される。バースト内で、アドレスが内部的に各ビートで増分される。機能メモリ１４１０の一部は、開始アドレスを提供することによって再初期化され得る。機能メモリ１４１０のメモリへの初期化アクセスは、機能メモリ１４１０へのパーティションアクセスより優先度が低い。
【００５７】
ＳＦＭの様々な制御設定が、ＳＦＭ制御初期化メッセージを用いて初期化される。このメッセージは、コンテキスト記述子、機能メモリテーブル記述子、及び宛先記述子を初期化する。ＳＦＭ制御を初期化するために必要とされるワード数は、メッセージＯＣＰインターコネクトの最大バースト長より多いと予想されるので、このメッセージは、複数のＯＣＰバーストに分割され得る。制御初期化用のメッセージバーストは連続的とし得、他のメッセージタイプを間に含まない。制御初期化用のワードの総数は、（１＋＃Ｃｏｎｔｅｘｔｓ／２＋＃Ｔａｂｌｅｓ＋４＊＃Ｃｏｎｔｅｘｔｓ）となるはずである。ＳＦＭ制御初期化は、共有機能メモリ７６１６への任意の入力又はプログラムのスケジューリングの前に完了するべきである。
【００５８】
ここで、入力データフロー及び依存性チェックに移ると、入力データフローシーケンスは、概して、ソースからのソース通知メッセージで開始する。ＳＦＭ宛先コンテキストは、ソース通知メッセージを処理し、ソース許可（Ｓｏｕｒｃｅ  Ｐｅｒｍｉｓｓｉｏｎ：ＳＰ）メッセージにより応答して、ソースからのデータをイネーブルにする。次いで、ソースは、それぞれのインターコネクトに関するデータと、それに続く（インターコネクトに関するＭＲｅｑＩｎｆｏビットに対して符号化された）Ｓｅｔ＿Ｖａｌｉｄとを送出する。スカラーデータが更新データメモリメッセージを用いて送出されて、データメモリ７６１８に書き込まれる。ベクトルデータがデータインターコネクト８１４に送出されて、ベクトルメモリ７６０３（又はＦｍ＝１で同期コンテキスト用の機能メモリ７６０２）に書き込まれる。ＳＦＭラッパー７６２６も、データフロー状態変数を維持し、これらを用いてデータフローを制御し、ＳＦＭプロセッサ７６１４における依存性チェックもイネーブルにする。
【００５９】
ＯＣＰインターコネクト１４１２からの入力ベクトルデータは、まず、（例えば）２つの８エントリグローバル入力バッファ７６２０に書き込まれ、連続データがピンポン式に、交互バッファに書き込まれ、交互バッファから読み出される。入力データバッファが一杯でない限り、ＯＣＰバーストが受け入れられ、オフラインで処理される。このデータは、ベクトルメモリ７６０３（又は機能メモリ７６０２）に、ＳＦＭプロセッサ７６１４（又はパーティション）がこのメモリにアクセスしていないときに空いているサイクルで書き込まれる。グローバル入力バッファ７６２０が一杯になった場合、ＯＣＰインターコネクト１４１２はより多くのデータを受け入れ可能になるまでストールする。入力バッファが一杯の状態では、ＳＦＭプロセッサ７６１４もデータメモリへのライトがストールされ、インターコネクト１４１２がストールするのを避ける。ＯＣＰメッセージインターコネクトに関するスカラーデータは、（例えば）４エントリメッセージバッファにも入れられて、ＯＣＰインタフェースからのメッセージ処理が切り離される。メッセージバッファが一杯でない限り、ＯＣＰバーストが受け付けられ、データがオフラインで処理される。このデータは、ＳＦＭプロセッサ７６１４がメモリ７６１８にアクセスしていないときに空いているサイクルでデータメモリ７６１８に書き込まれる。メッセージバッファが一杯になると、ＯＣＰインターコネクト１４１２はより多くのデータを受け入れ可能になるまでストールされ、ＳＦＭプロセッサ７６１４はメモリ７６１８へのライトがストールされる。
【００６０】
ＳＦＭプロセッサ７６１４によってベクトルメモリ７６０３からアクセスされるベクトルデータが（入力からすでに受け取られた）有効なデータであることを概略保証するために、入力依存性チェックが用いられる。入力依存性チェックは、ベクトルパックドロード命令に対して成される。ラッパー７６２６は、メモリ７６１８内の最大有効インデックスへのポインタ（ｖａｉｄ＿ｉｎｐ＿ｐｔｒ）を維持する。依存性チェックは、Ｈ＿Ｉｎｄｅｘがｖａｉｄ＿ｉｎｐｕｔ＿ｐｔｒ（ＲＬＤ）より大きいか、又はＢｌｋ＿Ｉｎｄｅｘがｖａｉｄ＿ｉｎｄｅｘ＿ｐｔｒ（ＡＬＤ）より大きい場合、ＳＦＭプロセッサ７６１４のベクトルユニットにおいて不合格になる。ラッパー７６２６は、完全な入力が受け取られ、依存性チェックが望まれないことを示すフラグも提供する。ＳＦＭプロセッサ７６１４での入力依存性チェックが不合格になると、ストール又はコンテキスト切り替えも生じ、依存性チェック不合格がラッパーに伝えられ、ラッパーは、別の準備できているプログラムに切り替えるようにタスク切り替えを行う（或いは、準備できているプログラムがない場合にはプロセッサ７６１４をストールさせる）。依存性チェックが不合格になった後、少なくとも別の入力が受け取られた後で、同じコンテキストプログラムが再び実行され得る（そのため、依存性チェックは合格し得る）。コンテキストプログラムが再び実行するようイネーブルされるとき、同じ命令パケットが再度実行されなければならない。そのために、プロセッサ７６１４において特殊な取り扱いを採用する。これは、パイプラインの実行段階で入力依存性チェックの不合格が検出されるからである。そのため、これは、依存性チェックが不合格になったことに起因してプロセッサ７６１４がストールする前に、命令パケット内の他の命令がすでに実行されたことを意味する。この特殊なケースを扱うために、ラッパー７６２６は、前の依存性チェックの不合格の後でコンテキストプログラムの実行を再度イネーブルにする際に、プロセッサ７６１４に信号（ｗｐ＿ｍａｓｋ＿ｎｏｎ＿ｖｐｌｄ＿ｉｎｓｔｒ）を提供する。ベクトルパックドロードアクセスは、通常、命令パケット内の特定のスロットにあり、そのため、１つのスロット命令が次回に再度実行され、他のスロット内の命令はマスクされて実行されない。
【００６１】
ここでＲｅｌｅａｓｅ＿Ｉｎｐｕｔに移ると、反復用の完全な入力がひとたび受け取られると、ソースからさらなる入力を受け入れることができない。さらなる入力をイネーブルにするソース許可がソースに送出されない。プログラムは、次の反復用の入力を受け取ることができるように、反復の終了前にこれらの入力を放出し得る。これは、Ｒｅｌｅａｓｅ＿Ｉｎｐｕｔ命令を介して成され、フラグｒｉｓｃ＿ｉｓ＿ｒｅｌｅａｓｅを介してプロセッサ７６１４に通知される。
【００６２】
ＨＧ＿ＰＯＳＮは、現在の実行又はＬｉｎｅデータの位置である。Ｌｉｎｅデータコンテキストでは、ＨＧ＿ＰＯＳＮは、ピクセルの相対アドレス指定に用いられる。ＨＧ＿ＰＯＳＮはゼロに初期化され、プロセッサ７６１４内で分岐命令（ＴＢＤ）の実行後に増分される。この命令の実行は、フラグｒｉｓｃ＿ｉｎｃ＿ｈｇ＿ｐｏｓｎによってラッパーに示される。ＨＧ＿ＰＯＳＮは、それが右端のピクセル（ＨＧ＿Ｓｉｚｅ）に到達した後ゼロにラップされ、増分フラグが命令実行から受け取られる。
【００６３】
ラッパー７６２６は、プログラムのスケジューリング及び切り替えも提供する。スケジュールノードプログラムメッセージが、概して、プログラムのスケジューリングに用いられ、プログラムスケジューラは下記の機能を実施する。すなわち、スケジュールされたプログラム（アクティブコンテキスト）及び「スケジュールノードプログラム」メッセージからのデータ構造のリストを維持することと、準備ができているコンテキストのリストを維持することである。スケジューラは、コンテキストが実行する準備ができたとき、すなわち、充分な入力の受信時にアクティブコンテキストが準備できたとき、プログラムに「レディ」として印し、実行のため準備ができたプログラムを（ラウンドロビン優先順位に基づいて）スケジュールし、プロセッサ７６１４にプログラムカウンタ（Ｓｔａｒｔ＿ＰＣ）を提供してスケジュールされているプログラムを初めて実行させ、依存性チェックのためプロセッサ７６１４にデータフロー変数及び実行のためのいくつかの状態変数を提供する。スケジューラは、次のレディコンテキスト（現在実行中のコンテキストの後で優先順位において次のレディコンテキスト）を連続的に探し続けることもできる。
【００６４】
ＳＦＭラッパー７６２６は、即時アクセスのため現在実行中のコンテキストの記述子及び状態ビットのローカルコピーを維持することもできる。これらのビットは、通常、データメモリ７６１８又はコンテキスト記述子メモリ内にある。ＳＦＭラッパー７６２６は、コンテキスト記述子メモリ内の状態変数が更新されるときローカルコピーをコヒーレントに保つ。実行中のコンテキストに対し、下記のビットは、プロセッサ７６１４によって実行用に通常用いられる。すなわち、データメモリコンテキストベースアドレス、ベクトルメモリコンテキストベースアドレス、入力依存性チェック状態変数、出力依存性チェック状態変数、ＨＧ＿ＰＯＳＮ、及びｈｇ＿ｐｏｓｎ！＝ｈｇ＿ｓｉｚｅのためのフラグである。ＳＦＭ＿Ｗｒａｐｐｅｒは、次のレディコンテキストの記述子及び状態ビットのローカルコピーも維持する。異なるコンテキストが「次のレディコンテキスト」になると、ＦＭラッパー７６２６は、再度、必要とされる状態変数及び構成ビットをデータメモリ７６１８及びコンテキスト記述子メモリからロードする。これは、コンテキスト切り替えが効率的になるように成され、メモリアクセスからの設定のリトリーブを待たない。
【００６５】
タスク切り替えは、現在実行中のプログラムを中断させ、プロセッサ７６１４の実行を「次のレディコンテキスト」に移す。共有機能メモリ１４１０は、万一データフローがストールした場合、動的にタスク切り替えを行う（図３０９及び図３１０にこの例を見ることができる）。データフローのストールは、入力依存性チェックが不合格になること又は出力依存性チェックが不合格になることである。万一データフローがストールした場合、プロセッサ７６１４は、ＳＦＭラッパー７６２６に依存性チェック不合格のフラグを伝える。依存性チェック不合格フラグに基づいて、ＳＦＭラッパー７６２６は、異なるレディプログラムへのタスク切り替えを開始する。ラッパーがタスク切り替えを行う間、プロセッサ７６１４は、ＩＤＬＥ状態に入り、すでにフェッチされ復号化段階にある命令についてパイプラインをクリアにする。これらの命令は、プログラムが次に再開するときに再度フェッチされる。他にレディコンテキストがない場合、それぞれ入力受信時又は出力許可受信時に、データフローのストール状態が解決され得るまで実行は中断されたままである。ＳＦＭラッパー７６２６は、通常、データフローのストールが解決されたか否かを推測することにも留意されたい。これは、ＳＦＭラッパー７６２６が実際のインデックス不合格入力依存性チェック又は実際の宛先不合格出力依存性チェックを把握していないからである。任意の新たな入力（ｖａｌｉｄ＿ｉｎｐ＿ｐｔｒの増分）又は出力許可（任意の宛先からのＳＰの受信）の受信時に、プログラムは、レディと印される（更に、他のプログラムが実行中でない場合には再開される）。したがって、再開された後で、プログラムが再度依存性チェックに不合格になりタスク切り替えを経る可能性がある。同じコンテキスト内のタスク中断及び再開シーケンスは、異なるコンテキストに対するタスク切り替えシーケンスと同じである。タスク切り替えは、プログラム内のＥＮＤ命令の実行時に試みされ得る。（図３１１及び図３１２にこの例を見ることができる。）これにより、すべてのレディプログラムに実行の機会が与えられる。他にレディプログラムがない場合、同じプログラムが継続して実行される。また、下記のステップの後で、ＳＦＭラッパー７６２６がタスク切り替えを行う。
（１）ｆｏｒｃｅ＿ｃｔｘｚ＝０をプロセッサ７６１４にアサートする
ｉ．このプログラムに対しプロセッサ７６１４の状態をコンテキスト状態メモリに保存する。
ｉｉ．新たなプログラムに対しＴ２０及びＴ８０の状態をコンテキスト状態メモリから復元する。
（２）ｆｏｒｃｅ  ｐｃｚ＝０をアサートし、ｎｅｗ＿ｐｃをプロセッサ７６１４に提供する
ｉ．中断されたか又は実行が再開されたプログラムに対し、ＰＣが、コンテキスト状態メモリに保存される／コンテキスト状態メモリから復元される。
ｉｉ．初めて実行が開始されたプログラムに対し、「スケジュールノードプログラム」メッセージのＳｔａｒｔ＿ＰＣからＰＣを得る。
（３）「次のレディコンテキスト」の状態変数及びｃｏｎｆｉｇビットのコピーを「現在実行中のコンテキスト」にロードする。
【００６６】
ここで異なるデータ型についての出力データプロトコルに移り、一般に、プログラム実行の開始時において、ＳＦＭラッパー７６２６はすべての宛先にソース通知メッセージを送出する。これらの宛先は宛先記述子にプログラムされており、宛先は出力をイネーブルにするソース許可を用いて応答する。ベクトル出力の場合、ソース許可メッセージ内のＰ＿Ｉｎｃｒフィールドは、それぞれの宛先への送出を許可された転送（ｓｅｔ＿ｖａｌｉｄベクトル）の数を示す。ＯｕｔＳｔ状態機械は、出力データフローの挙動を制御する。ＳＦＭ１４１０によって２種類の出力が生成され得る。すなわち、スカラー出力及びベクトル出力である。スカラー出力は、更新データメモリメッセージを用いてメッセージバス１４２０上に送出され、ベクトル出力は、（データバス１４２２で）データインターコネクト８１４上に送出される。スカラー出力は、プロセッサ７６１４内のＯＵＴＰＵＴ命令の実行の結果であり、プロセッサ７６１４は、出力アドレス（演算値）、制御ワード（Ｕ６命令イミディエート）、及び（ＧＰＲからの３２ビット）出力データワードを提供する。（例えば）６ビット制御ワードのフォーマットは、Ｓｅｔ＿Ｖａｌｉｄ（［５］）、Ｏｕｔｐｕｔ  Ｄａｔａ  Ｔｙｐｅ（Ｉｎｐｕｔ  Ｄｏｎｅ（００）である［４：３］、ノードライン（０１）、Ｂｌｏｃｋ（１０）、又はＳＦＭライン（１１））、及び宛先番号（０〜７であり得る［２：０］）である。ベクトル出力は、プロセッサ７６１４内のＶＯＵＴＰＵＴ命令の実行によって生じ、プロセッサ７６１４は、出力アドレス（演算値）及び制御ワード（Ｕ６命令イミディエート）を提供する。この出力データは、プロセッサ７６１４内のベクトルユニット（すなわち、５１２ビット、［ベクトルユニットＧＰＲ当たり３２ビット］×１６個のベクトルユニット）によって提供される。ＶＯＵＴＰＵＴに対する（例えば）６ビット制御ワードのフォーマットは、ＯＵＴＰＵＴと同じである。プロセッサ７６１４からの出力データ、アドレス、及び制御は、まず、（例えば）８エントリグローバル出力バッファ７６２０に書き込まれ得る。ＳＦＭラッパー７６２６は、グローバル出力バッファ７６２０からこれらの出力を読み取り、バス１４２２上に送り出す。この方式は、出力データがインターコネクト上に送出されている一方で、プロセッサ７６１４が実行を継続し得るように成される。インターコネクト８１４がビジーであり、グローバル出力バッファ７６２０が一杯の場合、プロセッサ７６１４はストールし得る。
【００６７】
出力依存性チェックでは、それぞれの宛先がＳＦＭソースコンテキストにデータ送出許可を与えた場合、プロセッサ７６１４は出力の実行を許可される。プロセッサ７６１４が、宛先への出力がイネーブルになっていないときに、ＯＵＴＰＵＴ又はＶＯＵＴＰＵＴ命令に遭遇した場合、出力依存性チェックは不合格になり、タスク切り替えが生じる。ＳＦＭラッパー７６２６は、それぞれ、スカラー出力及びベクトル出力に対し、イネーブル、宛先当たりの２つのフラグをプロセッサ７６１４に提供する。プロセッサ７６１４は、出力依存性チェック不合格をＳＦＭラッパー７６２６に通知し、タスク切り替えシーケンスを開始させる。出力依存性チェック不合格は、プロセッサ７６１４の復号パイプライン段で検出され、プロセッサ７６１４は、出力依存性チェック不合格に遭遇した場合には、ＩＤＬＥ状態に入り、フェッチ及び復号パイプラインをクリアにする。典型的には、Ｓｅｔ＿Ｖａｌｉｄを含むＯＵＴＰＵＴ又はＶＯＵＴＰＵＴ命令の間で２つの遅延スロットが用いられ、それによって、Ｓｅｔ＿Ｖａｌｉｄに基づいてＯｕｔＳｔ状態機械が更新され、次のＳｅｔ＿Ｖａｌｉｄの前にプロセッサ７６１４へのｏｕｔｐｕｔ＿ｅｎａｂｌｅが更新されるようにする。
【００６８】
ＳＦＭラッパー７６２６は、ＳＦＭコンテキストに対してプログラムの終了も扱う。処理クラスタ１４００におけるプログラムの終了には、典型的には、２つのメカニズムがある。仮にスケジュールノードプログラムメッセージがＴｅ＝１の値をもつとすれば、プログラムはＥＮＤ命令で終了する。他方のメカニズムは、データフローの終了に基づいている。データフローが終了すると、プログラムは、すべての入力データに対する実行が完了したとき終了する。これにより、同じプログラムが、終了する前に複数回反復して実行され得る（複数のＥＮＤ及び入力データの複数回の反復）。ソースが、それが送出すべきさらなるデータを有していないとき、その宛先に出力終了（ＯＴ：Ｏｕｔｐｕｔ  Ｔｅｒｍｉｎａｔｉｏｎ）を通知し、プログラムはもはや反復されない。宛先コンテキストは、このＯＴ信号をストアし、最後の反復の終了時（ＥＮＤ）、すなわち、宛先コンテキストが入力データの最後の反復の実行を完了したとき、終了する。或いは、宛先コンテキストは、最後の反復実行を完了した後でＯＴ信号を受け取り得る。この場合、宛先コンテキストは直ちに終了する。
【００６９】
ソースは、最後の出力データ（スカラー又はベクトル）として同じインターコネクト経路を介してＯＴを通知する。仮にソースからの最後の出力データがスカラーである場合、メッセージバス１４２０（スカラー出力と同じ）上のスカラー出力終了メッセージにより出力終了が通知される。仮にソースからの最後の出力データがベクトルである場合、データインターコネクト８１４又はバス１４２２（データと同じ）上のベクトル終了パケットによりに出力終了が通知される。これは、宛先が最後のデータの前にＯＴ信号を受け取らないことを概して保証するためである。終了時、実行中のコンテキストは、その宛先すべてにＯＴメッセージを送出する。このＯＴメッセージは、このプログラムからの最後の出力として同じインターコネクト上に送出される。ＯＴの送出を完了した後、コンテキストは、制御ノード１４０６にノードプログラム終了メッセージを送出する。
【００７０】
ＩｎＴｍ状態機械も終了に用いられ得る。特に、ＩｎＴｍ状態機械は、出力終了メッセージをストアし、終了を順序付けるために用いられ得る。ＳＦＭ１４１０は、同じＩｎＴｍ状態機械をノードとして用いるが、ノードの場合と同様の任意のｓｅｔ＿ｖａｌｉｄの代わりに、状態遷移に対して「第１のｓｅｔ＿ｖａｌｉｄ」を用いる。宛先コンテキストでの入力（ｓｅｔ＿ｖａｌｉｄ）、ＯＴ、及びＥＮＤの間で下記のシーケンス順序が可能である。すなわち、Ｓｅｔ＿Ｖａｌｉｄ〜ＯＴ〜ＥＮＤを入力し、ＥＮＤで終了する；Ｓｅｔ＿Ｖａｌｉｄ〜ＥＮＤ〜ＯＴを入力し、ＯＴで終了する；Ｓｅｔ＿Ｖａｌｉｄ（反復（ｎ−１）回）〜Ｒｅｌｅａｓｅ＿Ｉｎｐｕｔを入力し、Ｓｅｔ＿Ｖａｌｉｄ（反復ｎ回）〜ＯＴ〜ＥＮＤ〜ＥＮＤを入力し、２度目のＥＮＤで終了し、最後の反復を行う；Ｓｅｔ＿Ｖａｌｉｄ（反復（ｎ−１）回）〜Ｒｅｌｅａｓｅ＿Ｉｎｐｕｔを入力し、Ｓｅｔ＿Ｖａｌｉｄ（反復ｎ回）〜ＥＮＤ〜ＯＴ〜ＥＮＤを入力し、２度目のＥＮＤで終了し、最後の反復を行う；及びＳｅｔ＿Ｖａｌｉｄ（反復（ｎ−１）回）〜Ｒｅｌｅａｓｅ＿Ｉｎｐｕｔを入力し、Ｓｅｔ＿Ｖａｌｉｄ（反復ｎ回）〜ＥＮＤ〜ＥＮＤ〜ＯＴを入力し、ＯＴで終了する、である。
【００７１】
ノード状態ライトメッセージは、令メモリ７６１６（すなわち、２５６ビット幅）、データメモリ７６１８（すなわち、１０２４ビット幅）、及びＳＩＭＤレジスタ（すなわち、１０２４ビット幅）を更新し得る。これらについてのバースト長の例は下記に示すようになり得る。すなわち、命令メモリは９ビート、データメモリは３３ビート、及びＳＩＭＤレジスタは３３ビートである。パーティションＢＩＵ（すなわち、４７１０−ｉ）には、データビートが受け取られるたびに増分するｄｅｂｕｇ＿ｃｎｔｒと呼ばれるカウンタがある。カウンタが（例えば）８個のデータビートを意味する７に到達すると（ｄａｔａ＿ｃｏｕｎｔを有する最初のヘッダビートはカウントしない）、ｄｅｂｕｇ＿ｓｔａｌｌがアサートされ、これは、宛先にライトが成されるまでｃｍｄ＿ａｃｃｅｐｔ及びｄａｔａ＿ａｃｃｅｐｔをディセーブルにする。ｄｅｂｕｇ＿ｓｔａｌｌは、ノードラッパー（すなわち、８１０−１）によってライトが成されたとき、ｐａｒｔｉｔｉｏｎ＿ｂｉｕに設定され、ｎｏｄｅ＿ｗｒａｐｐｅｒによって再設定される状態ビットである。インストールは、パーティションＢＩＵ  ４７１０−ｘ内の（パーティション１４０２−ｘに対する）ｎｏｄｅｘ＿ｕｎｓｔａｌｌ＿ｍｓｇ＿ｉｎの入力後に行われる。バス上でパーティションＢＩＵ  ４７１０−ｘからノードラッパーに送出される３２個のデータビートの例は、
・Ｍ＿ＤＥＢＵＧに設定されるｎｏｄｅｘ＿ｗｐ＿ｍｓｇ＿ｅｎ［２：０］
・ｎｏｄｅｘ＿ｗｐ＿ｍｓｇ＿ｗｄａｔａ［’Ｍ＿ＤＥＢＵＧ＿ＯＰ］＝＝’Ｍ＿ＮＯＤＥ＿ＳＴＡＴＥ＿ＷＲ
ここで、Ｍ＿ＤＥＢＵＧ＿ＯＰは、メッセージアドレス［８：６］が１１０の符号化を有する場合にメッセージトラフィックをノード状態ライトとして識別するビット３１：２９である。
・次いで、これは、ｎｏｄｅ＿ｗｒａｐｐｅｒにおいてｎｏｄｅ＿ｓｔａｔｅ＿ｗｒｉｔｅ信号を発する。ここで、２つのカウンタは（ｐａｒｔｉｔｉｏｎ＿ｂｉｕにおけるものに類似の）ｄｅｂｕｇ＿ｃｎｔｒ及びｓｉｍｄ＿ｗｒ＿ｃｎｔｒと呼ばれる。この符号を探すためにｎｏｄｅ＿ｗｒａｐｐｅｒ．ｖにおけるＮＯＤＥ＿ＳＴＡＴＥ＿ＷＲＩＴＥコメントを探す。
・次いで、３２ビットパケットが、２５６ビットのｎｏｄｅ＿ｓｔａｔｅ＿ｗｒ＿ｄａｔａフロップに蓄積される。
・この２５６ビットが一杯の場合には、命令メモリが書き込まれる。
・ＳＩＭＤデータメモリについても同様に、これが２５６ビットの場合、ＳＩＭＤデータメモリが書き込まれる。ｐａｒｔｉｔｉｏｎ＿ｂｉｕはメッセージインターコネクトをストールさせて、ｎｏｄｅ＿ｗｒａｐｐｅｒがＳＩＭＤデータメモリの更新に成功するまでさらなるデータビートを送出しないようにする。これは、例えばグローバルＩＯバッファにおけるグローバルデータインターコネクトからのデータのように、他のトラフィックがＳＩＭＤデータメモリを更新していることがあるからである。データメモリへの更新が成されると、ｄｅｂｕｇ＿ｉｍｅｍ＿ｗｒ｜ｄｅｂｕｇ＿ｓｉｍｄ＿ｗｒ｜ｄｅｂｕｇ＿ｄｍｅｍ＿ｗｒ構成要素を有するｄｅｂｕｇ＿ｎｏｄｅ＿ｓｔａｔｅ＿ｗｒ＿ｄｏｎｅを介してアンストールがイネーブルにされる。これにより、ｐａｒｔｉｔｉｏｎ＿ｂｉｕがアンストールされて、さらに８個のデータパケットが受け入れられ、１０２４ビット全体が終了するまで次の２５６ビットライトを行う。Ｓｉｍｄ＿ｗｒ＿ｃｎｔｒは、２５６ビットパケットをカウントする。
【００７２】
ノード状態読み取りメッセージが適切なスレーブである命令メモリに入ると、ＳＩＭＤデータメモリ及びＳＩＭＤレジスタが読み取られ、次いで、（例えば）１６×１０２４ビットのグローバル出力バッファ７６２０に置かれる。ここから、データがパーティションＢＩＵ（すなわち、４７１０−１）に送出され、次いで、パーティションＢＩＵは、データをメッセージバス１４２０に送り出す。グローバル出力バッファ７６２０が読み取られると、それに続く信号が（例えば）イネーブルにされてノードラッパーから出ることができる。これらのバスは、典型的には、ベクトル出力についてのトラフィックを搬送するが、ノード状態読み取りデータも搬送するよう過負荷になり、したがって、典型的には、ｎｏｄｅＸ＿ｉｏ＿ｂｕｆｆｅｒ＿ｃｔｒｌのすべてビットが関連するわけではない。
・ｎｏｄｅＸ＿ｉｏ＿ｂｕｆ＿ｈａｓ＿ｄａｔａは、データがｎｏｄｅ＿ｗｒａｐｐｅｒにより送出されていることをｐａｒｔｉｔｉｏｎ＿ｂｉｕに知らせる。
・ｎｏｄｅＸ＿ｉｏ＿ｂｕｆｆｅｒ＿ｄａｔａ［２５５：０］は、命令メモリ読み取りデータ又はデータメモリ（一回に２５６ビット）又はＳＩＭＤレジスタデータ（一回に２５６ビット）を有する。
・ｎｏｄｅＸ＿ｒｅａｄ＿ｉｏ＿ｂｕｆｆｅｒ［３：０］は、バスの利用可能性を示す信号を有し、これを用いて出力バッファが読み取られ、データがｐａｒｔｉｔｉｏｎ＿ｂｉｕに送出される。
・ｎｏｄｅＸ＿ｉｏ＿ｂｕｆｆｅｒ＿ｃｔｒｌは、情報の様々な断片を示す。
関連する情報はビット１６：１４上にある。
／／１６：１４：３ｂｉｔ  ｏｐ
／／０００：ノード状態読み取り−ＩＯＢＵＦ＿ＣＮＴＬ＿ＯＰ＿ＤＥＢ
／／００１：ＬＵＴ
／／０１０：ｈｉｓ＿ｉ
／／０１１：ｈｉｓ＿ｗ
／／１００：ｈｉｓ
／／１０１：出力
／／１１０：スカラー出力
／／１１１：ｎｏｐ
３２：３１
００：ｉｍｅｍ読み取り
１０：ＳＩＭＤレジスタ
１１：ＳＩＭＤ  ＤＭＥＭ
パーティションＢＩＵ  ４７２０−ｘでは、コメントＳＣＡＬＡＲ＿ＯＵＴＰＵＴＳを探し、信号ｎｏｄｅ０＿ｍｓｇ＿ｍｉｓｃ＿ｅｎ及びｎｏｄｅ０＿ｉｍｅｍ＿ｒｄ＿ｏｕｔ＿ｅｎに従う。次いで、これらは、ｏｃｐ＿ｍｓｇ＿ｍａｓｔｅｒインスタンスを設定する。様々なカウンタが再び用いられる。ｄｅｂｕｇ＿ｃｎｔｒ＿ｏｕｔは、（例えば）２５６ビットパケットを分解して、メッセージバス１４２０に送出することが望まれる３２ビットパケットにする。送出されるメッセージはノード状態読み取り応答である。
【００７３】
データメモリの読み取りはノード状態読み取りに類似している。次いで、適切なスレーブが読み取られ、次いで、グローバル出力バッファに入れられ、そこから、スレーブはパーティションＢＩＵ  ４７１０−ｘに移る。例えば、ｎｏｄｅＸ＿ｉｏ＿ｂｕｆｆｅｒ＿ｃｔｒｌのビット３２：３１は０１に設定され、送出されるメッセージは（例えば）３２ビット幅とし得、データメモリ読み取り応答として送出される。ビット１６：１４は、ＩＯＢＵＦ＿ＣＮＴＬ＿ＯＰ＿ＤＥＢも示すはずである。これらのスレーブは（例えば）下記とし得る。
１．データメモリ  ＣＸ＝０（別名ＬＳ−ＤＭＥＭ）のアプリケーションデータ。コンテキスト番号を使用して、記述子ベースが得られ、次いで、メッセージアドレスビットとともに入力されるオフセットを加算する。
２．データメモリ記述子領域  ＣＸ＝１、メッセージデータビート［８：７］＝００がこの領域を識別する。コンテキスト番号を使用してどの記述子が更新中かを割り出す。
３．ＳＩＭＤ記述子  ８：７＝０１がこの領域を識別する。コンテキスト番号によりアドレスが提供される。
４．コンテキスト保存メモリ  ８：７＝１０がこの領域を識別する。コンテキスト番号によりアドレスが提供される。
５．プロセッサ７６１４内部のレジスタ  ブレイクポイント、トレースポイント、及びイベントレジスタと類似している。８：７＝１１がこの領域を識別する。
ａ．次いで、下記の信号がプロセッサ７６１４用のインタフェースに対し設定される。
ｉ．      ．ｄｂｇ＿ｒｅｑ  （ｄｂｇ＿ｒｅｑ）
ｉｉ．    ．ｄｂｇ＿ａｄｄｒ（｛１５’ｂ０００＿００００＿００００＿００００，ｄｂｇ＿ａｄｄｒ｝）
ｉｉｉ．  ．ｄｂｇ＿ｄｉｎ（ｄｂｇ＿ｄｉｎ）
ｉｖ．    ．ｄｂｇ＿ｘｒｗ（ｄｂｇ＿ｘｒｗ）
ｂ．下記のパラメータがｔｐｉｃ＿ｌｉｂｒａｒｙディレクトリ内のｔｘ＿ｓｉｍ＿ｄｅｆｓで定義される。
ｖ．      ’ｄｅｆｉｎｅ  ＮＯＤＥ＿ＥＶＥＮＴ＿ＷＩＤＴＨ  １６
ｖｉ．    ’ｄｅｆｉｎｅ  ＮＯＤＥ＿ＤＢＧ＿ＡＤＤＲ＿ＷＩＤＴＨ  ５
ｃ．ブレイクポイント／トレースポイントについてＤｂｇ＿ａｄｄｒ［４：０］が下記のように設定され、ブレイクポイント／トレースポイントメッセージ設定のビット２５：２６から入力される。
ｖｉｉ．    アドレス０はブレイクポイント／トレースポイントレジスタ０用である。
ｖｉｉｉ．  アドレス１はブレイクポイント／トレースポイントレジスタ１用である。
ｉｘ．      アドレス２はブレイクポイント／トレースポイントレジスタ２用である。
ｘ．        アドレス３はブレイクポイント／トレースポイントレジスタ３用である。
ｄ．イベントレジスタがアドレスされるとき、Ｄｂｇ＿ａｄｄｒ［４：０］が、読み取りデータメモリオフセットの下位５ビットに設定され、これらはメッセージ中で４以上に設定されなければならない。
【００７４】
プロセッサ７６１４に対し状態を保持するコンテキスト保存メモリ７６１０も（例えば）下記のようにアドレスオフセットを有し得る。
１．１６個の汎用レジスタは、アドレスオフセット０、４、８、Ｃ、１０、１４、１８、１Ｃ、２０、２４、２８、２Ｃ、３０、３４、３８、及び３Ｃを有する。
２．これらのレジスタの残りは下記のように更新される。
ａ．４０−ＣＳＲ−１２ビット幅
ｂ．４２−ＩＥＲ−４ビット幅
ｃ．４４−ＩＲＰ−１６ビット
ｄ．４６−ＬＢＲ−１６ビット
ｅ．４８−ＳＢＲ−１６ビット
ｆ．４Ａ−ＳＰ−１６ビット
ｇ．４Ｃ−ＰＣ−１７ビット
【００７５】
Ｈａｌｔメッセージが受け取られると、ｈａｌｔ＿ａｃｃ信号がイネーブルにされ、次いで、ｈａｌｔ＿ａｃｃ信号は、ｈａｌｔ＿ｓｅｅｎ状態を設定する。次いで、ｈａｌｔ＿ｓｅｅｎ状態は下記のようにバス１４２０上に送出される。
・Ｈａｌｔ＿ｔ２０［０］：ｈａｌｔ＿ｓｅｅｎ
・Ｈａｌｔ＿ｔ２０［ｌ］：コンテキストを保存する
・Ｈａｌｔ＿ｔ２０［２］：コンテキストを復元する
・Ｈａｌｔ＿ｔ２０［３］：ステップ
次いで、ｈａｌｔ＿ｓｅｅｎ状態がｌｓ＿ｐｃ．ｖに送出され、ｌｓ＿ｐｃ．ｖを用いてｉｍｅｍ＿ｒｄｙをディセーブルにして、さらなる命令がフェッチ及び実行されなくなるようにする。ただし、継続する前にプロセッサ７６１４及びＳＩＭＤパイプの両方を確実に空にすることが望まれる。ひとたびパイプがクリアにされると、すなわち、ストールがなくなると、ｐｉｐｅ＿ｓｔａｌｌ［０］がノードラッパー（すなわち、８１０−１）への入力としてイネーブルにされる。この信号を用いて、中断確認メッセージが送出され、プロセッサ７６１４のコンテキスト全体がコンテキストメモリに保存される。次いで、デバッガが導入され、ＣＸ＝１の更新データメモリメッセージとコンテキスト保存メモリ７６１０を示すアドレスビット８：７とを用いて、コンテキストメモリ内の状態を改変し得る。
【００７６】
再開メッセージが受け取られると、ｈａｌｔ＿ｒｉｓｃ［２］がイネーブルにされ、これにより、コンテキストが復元され、次いで、ｆｏｒｃｅ＿ｐｃｚがアサートされてＰＣからの実行がコンテキスト状態から継続される。プロセッサ７６１４は、ｆｏｒｃｅ＿ｐｃｚを用いてｃｍｅｍ＿ｗｄａｔａ＿ｖａｌｉｄをイネーブルにし、ｃｍｅｍ＿ｗｄａｔａ＿ｖａｌｉｄは、ｆｏｒｃｅ＿ｐｃｚが再開予定の場合、ノードラッパーによってディセーブルにされる。Ｒｅｓｕｍｅ＿ｓｅｅｎ信号も、例えばｈａｌｔ＿ｓｅｅｎやｈａｌｔ  ａｃｋメッセージが送出された事実のような、様々の状態を再設定する。
【００７７】
ステップＮの命令メッセージが受け取られると、進めるための命令数が、（例えば）メッセージデータペイロードのビット２０：１６の後で入力される。これを用いて、ｉｍｅｍ＿ｒｄｙが抑制される。抑制は下記のように行われる。
１．デバッガが変更された状態を有し得るとき、コンテキスト状態からすべてをリロードする。
２．クロック用にｍｅｍ＿ｒｄｙがディセーブルされる。１つの命令がフェッチ及び実行される。
３．次いで、命令の実行が完了したかを調べるために、ｐｉｐｅ＿ｓｔａｌｌ［０］が検査される。
４．ひとたびｐｉｐｅ＿ｓｔａｌｌ［０］がハイにアサートされると、これはパイプがクリアにされたことを意味し、コンテキストが保存され、ステップカウンタがゼロになるまで処理が繰り返される。ステップカウンタがゼロになると、中断確認メッセージが送出される。
【００７８】
ブレイクポイントの一致／トレースポイントの一致が（例えば）下記のように示され得る。
・ｒｉｓｃ＿ｂｒｋ＿ｔｒｃ＿ｍａｔｃｈ：ブレイクポイント又はトレースポイントの一致が生じた。
・ｒｉｓｃ＿ｔｒｃ＿ｐｔ＿ｍａｔｃｈは、トレースポイントの一致があったことを意味する。
・ｒｉｓｃ＿ｂｒｋ＿ｔｒｃ＿ｍａｔｃｈ＿ｉｄ［ｌ：０］は、４つのレジスタのどれが一致したかを示す。
ブレイクポイントは、ホールトしたときに生じ得る。ブレイクポイントが生じると、ホールト確認メッセージが送出される。トレースポイントの一致は、ホールトされていないときに生じ得る。連続したトレースポイントの一致は、１番目の一致がホールト確認メッセージを送出する機会を得るまで２番目の一致をストールさせることによって扱われる。
【００７９】
共有機能メモリ１４１０のプログラムスケジューリングは、概して、アクティブコンテキストに基づいており、スケジューリングキューを使用しない。プログラムスケジューリングメッセージは、プログラムが実行するコンテキストを識別し得、プログラム識別子はコンテキスト番号と等価である。２つ以上のコンテキストが同じプログラムを実行する場合、これらのコンテキストは別々にスケジュールされる。コンテキスト内でプログラムをスケジューリングすると、そのコンテキストがアクティブになり、このコンテキストは、スケジューリングメッセージにおいてＴｅ＝１でＥＮＤ命令を実行することによって、またはデータフローの終了によって終了するまでアクティブのままである。
【００８０】
アクティブコンテキストは、ＨＧ＿Ｉｎｐｕｔ＞ＨＧ＿ＰＯＳＮである限り実行される準備ができている。レディコンテキストは、ラウンドロビン優先順位でスケジュールされ得、各コンテキストは、それがデータフローのストールに遭遇するまで、又はそれがＥＮＤ命令を実行するまで、実行し得る。データフローのストールは、プログラムが、ＨＧ＿ＰＯＳＮとＨＧ＿Ｉｎｐｕｔに対するアクセスの相対的な水平グループ位置とによって決められるように、無効な入力データを読み込もうとするとき、又はプログラムが出力命令を実行しようとし、且つ、出力がソース許可によってイネーブルにされなかったとき、生じ得る。いずれの場合でも、別のレディプログラムがある場合、ストールされたプログラムは中断され、その状態がコンテキスト保存／復元回路７６１０にストアされる。スケジューラは、次のレディコンテキストをラウンドロビン順にスケジュールし得、それによって、ストール状態を解決するための時間が提供される。すべてのレディコンテキストは、中断されたコンテキストが再開される前にスケジュールされるべきである。
【００８１】
データフローのストールがあり、且つ、他のプログラムの準備ができていない場合、プログラムはこのストール状態でアクティブのままである。このプログラムはストール状態が解決するまでストールしたままであり、この場合、このプログラムはストール時点から再開される。或いは、このプログラムは別のコンテキストの準備ができるまでストールしたままであり、この場合、このプログラムはレディプログラムを実行するために中断される。
【００８２】
上述したように、すべてのシステムレベル制御がメッセージによって実現される。メッセージは、特定のシステム構成に適用されるシステムレベルの命令又は指令と考えることができる。また、プログラム及びデータメモリの初期化を含めて、この構成自体及びこの構成内のイベントに対するシステム応答は、初期化メッセージと呼ばれる特殊な形態のメッセージによって設定され得る。
【００８３】
本発明に関連する分野の当業者であれば、記載された実施形態及び実現された付加的な実施形態に本発明の請求の範囲内から逸脱することなく変更が行われることが理解されるであろう。
【図４】
0005989656.tif 000002
【図５】
0005989656.tif 000003
【図６】
0005989656.tif 000004
【図７】
0005989656.tif 000005
【図８】
0005989656.tif 000006
【図９】
0005989656.tif 000007
【図１０】
0005989656.tif 000008
【図１１】
0005989656.tif 000009
【図１２】
0005989656.tif 000010
【図１３】
0005989656.tif 000011
【図１】
0005989656.tif 000012
【図２】
0005989656.tif 000013
【図３】
0005989656.tif 000014
【図４Ａ】
0005989656.tif 000015
【図４Ｂ】
0005989656.tif 000016