命令のスレッドを並行して実行することを可能にするプロセッサであって、一つ又はそれ以上の命令を含んでなる複数の命令バンドルを含んでなる、一つ又はそれ以上の命令メモリ;データを記憶でき、そして以下を含んでなる複数の1対1通信手段以下データ通信リンクという、書き込み操作を行なうことによってデータを書き込むことができ、そして書き込み操作の可用性に関する情報を得ることができる書き込みポート、書き込み操作を行なうことによって該書き込みポート上で以前に行なわれた書き込み操作のシーケンスに関して事前に定義された順序に従ってデータを読み取ることができ、そして読み取り操作の可用性に関する情報を得ることができる読み取りポート;複数の処理手段以下処理要素という、ここで、上記命令は、一つ又はそれ以上の上記データ通信リンク読み取りポートから得られた入力データを処理することによって実行され、そしてその実行によって生み出されたデータを一つ又はそれ以上の該データ通信書き込みポートに書き込むことによって実行され、ここで、データ通信リンク中に記憶されたデータは、命令データに基づいて、該データ通信リンクによって提供された該読み取り操作及び書き込み操作を行なうことによって明示的に管理され得る;を含んでなり、ここで、該処理要素上で実行された命令の間のデータ通信は、該データ通信手段を使用してのみ行なわれ、ここで、該処理要素上の該命令の実行は、該データ通信リンクによって提供される読み取り操作及び書き込み操作の情報可用性に基づいて同期化され、ここで、各命令メモリに対して、実行するための次の上記命令バンドルのアドレスを提供する分岐ユニットである該処理要素の一つが存在する、上記プロセッサ。前記処理要素が、タイルに更にグループ化され、一組の前記データ通信リンク読み取りポートが該タイル入力部に接続され、そして該タイル処理要素の間でシェアされ、そして一組の該データ通信リンク書き込みポートが該タイル出力部に接続され、そして該タイル処理要素の間でシェアされ、そして該通信リンクの一つ又はそれ以上が、一つのタイル出力部に接続されたそれらの書き込みポート、及び異なるタイル入力部に接続されたそれらの読み取りポートを有し、同一の該タイル中において実行された上記命令が、上記実行された命令データにおいて特定された優先度に基づいて事前に定義された順序に従う、請求項1に記載のプロセッサ。前記タイルがクラスタに更にグループ化され、ここでクラスタが各々、単一命令メモリ、単一分岐ユニット処理要素、を含んでなり、ここで、該クラスタ命令メモリが、該クラスタ分岐ユニットによって提供された前記アドレスに基づいて、各該クラスタタイルに命令バンドルを提供する、請求項2に記載のプロセッサ。幾つかの処理要素が、プログラム長寿命変数の記憶を可能にする記憶手段である、請求項3に記載のプロセッサ。データ通信リンクが、以下を含む更なる操作;該通信リンク中に記憶されたデータを消費しないデータ読み取り操作、書き込み操作が利用できないときでさえ、該データ通信リンク中への書き込み操作を強制するデータを書き込み操作、該データ通信リンク中に記憶された全てのデータを消すフラッシュ操作、を実行できる、請求項4に記載のプロセッサ。各処理要素が、命令データ、処理要素入力データ通信リンク可用性情報、及び処理要素出力データ通信リンク可用性情報に基づいて制御信号を提供する一つの制御手段を更に含み、各タイルが、処理要素における命令実行調整を取り扱うための制御信号を提供し、そして処理要素において実行される命令のための最後の実行サイクルを知らせる制御信号を提供する一つの制御手段を更に含み、各クラスタが、上記タイル制御手段によって提供された制御信号に基づいて、クラスタが次の命令を実行できることを知らせる制御信号を提供する制御手段を更に含む、請求項5に記載のプロセッサ。全ての制御手段が単一の制御手段中に集中させられる、請求項6に記載のプロセッサ。各々のタイルが、上記データ通信リンク読み取りポートに接続された、一つ又は幾つかの入力ポートを含んでなり、処理要素入力部に接続された、一つ又は幾つかの出力ポートを含んでなる、一つの選択手段であって、ここで、前記処理要素制御手段の各々に、一つ又はそれ以上の該データ通信リンク読み取りポート読み取り操作可用性についての情報が、該処理手段の制御手段からの制御信号に基づいて提供され、ここで、各々の該処理要素入力部に、一つ又はそれ以上の該データ通信リンク読み取りポートからのデータが、該処理要素制御手段からの制御信号に基づいて提供され、ここで、該データ通信リンク読み取りポート上で、該処理要素制御手段からの制御信号に基づいて操作が行なわれる、該選択手段;及び処理要素出力部及び該処理手段の制御手段に接続された、一つ又は幾つかの入力ポートを含んでなり、該データ通信リンク書き込みポートに接続された、一つ又は幾つかの出力ポートを含んでなる、一つの分配手段であって、ここで、該データ通信リンク書き込みポート書き込み操作可用性についての情報が各々の該処理手段の制御手段に提供され、ここで、該処理要素制御手段からの制御信号に基づいて、該処理要素出力部から、一つ又は幾つかの該データ通信リンク書き込みポートに、データが提供され、ここで、該処理要素制御手段からの制御信号に基づいて、該データ通信リンク書き込みポート上で操作が行なわれる、該分配手段;を更に含む、請求項6に記載のプロセッサ。各タイルが複数の選択手段を更に含み、ここで、各タイル処理要素入力部が、一つ又は幾つかのグループに分割され、そして分離された該選択手段が各グループに割り当てられ、そして全てのタイルデータ通信リンク読み取りポートのサブセットのみが該選択手段入力部に接続され、各タイルが複数の分配手段を更に含み、ここで、データ通信リンク書き込みポートが幾つかのグループに分割され、そして一つの分離された該分配手段が各グループに割り当てられ、そしてここで、処理要素出力部のサブセットのみが該分配手段入力部に接続される、請求項8に記載のプロセッサ。前記命令メモリが、クラスタ制御手段に、フェッチされた命令バンドルの可用性を通知する信号を提供する、請求項6に記載のプロセッサ。a各クラスタ命令メモリから命令バンドルを読み取るステップ、b前記処理要素にデータを提供する命令によって特定されたデータ通信リンクが読み取り操作に全て利用できるとき、そして該処理要素によって計算されたデータを受け取る命令によって特定されたデータ通信リンクが書き込み操作に全て利用できるとき、処理要素中の命令を実行するステップ、c命令によって特定された通りに、データが分配されるデータ通信リンク上で書き込み操作を行なうステップ、d命令によって特定された通りに、データを、機能ユニットに提供するデータ通信リンク上で読み取り操作を行なうステップ、e分岐ユニット中にフェッチするために次の命令バンドルのアドレスを計算すること、f現在のバンドルからの全ての命令が実行されたとき、次の命令バンドルのフェッチを要求するステップ、を含んでなる、請求項3に記載のプロセッサ上でプログラムを実行させる方法。命令実行ステップは、前記タイル中で実行される命令が、該タイル中でより高い優先度を有する全ての他の命令が最初に実行されている場合にのみ実行できることをベリファイして、各タイル内部での命令実行を更に制約する、請求項11に記載の方法。本発明は、命令を平行して実行し、そしてとデータ通信リンクDCL呼ばれる1対1通信リンクと共に接続される処理要素を含むプロセッサに関する。本発明はまた二-レベルコード組織にも関する。命令は、それらの間でデータを通信するために複数のDCLを使用する。それらの通信を実現するために、それらは、そこからそれらがそれらのオペランドを取る複数のDCL、及びそこにそれらがそれらの結果を書き込む複数のDCLを特定する。複数のDCLによって命令がそれらの実行を同期化し、そしてそれらが操作するデータを明確に管理することが可能になる。通信は明確であり、そして長寿命変数の記憶から連結解除される一次的変数の記憶を実現するために使用される。特に、本発明はその実行モデルを有するプロセッサに関する。プロセッサは命令を実行する処理エレメント、データ通信リンク及び命令メモリを含む。複数のDCLはデータ記憶能力も供し得る1対1通信リンクである。DCLは一つの書き込みポート及び一つの読み取りポートを有し、そしてそれらのポートの可用性についての情報を提供する。読み取りポートからのデータ読み取りは、書き込みポートにおけるデータ書き込みの連続順序に関連して事前に定義された順序においてなされる。データの読み取り及び書き込みに加えて、複数のDCLは記憶されたデータの明確な管理を可能とする追加の操作を供する。それらの操作は:データの消費なしでの読み取り;データ交換を伴う強制的な書き込み;及び記憶された全てのデータを消去するリンク記憶のフラッシュである。可用性情報によって複数のDCLを用いた同期化の実現が可能になり、そしてデータ管理操作によって複数のDCL中に記憶されたデータの明確な管理を実行することが可能になる。複数のDCLは処理要素の間の唯一の通信手段である。それらはまた処理エレメントの計算結果のための一次的な記憶も供する。処理要素はタイルにグループ化される。タイルの処理エレメントはタイル入力部に接続されたDCL読み取りポートのセット、及びタイル出力部に接続されたDCL書き込みポートの別のセットをシェアする。従ってタイルは複数のDCLによってそれらの間に接続され、そして幾つかのDCLは同じタイルの出力部及び入力部の間のリンクを供し得る。本発明の特徴は、処理エレメント上で実行される命令がそれらのオペランドを、タイル入力部に接続されたDCL読み取りポートからのみ取ることである。更に、命令はそれらの結果を、タイル出力部に接続された一つ又はそれ以上のDCL書き込みポートにのみ書き込む。命令は1対1通信リンクを特定するのみであるので、処理エレメントの間のデータ通信は明確でありそして完全に定められる。通信は、マイクロアーキテクチャーによって解釈されそして分解される必要はない。複数のDCLが同期化手段も供するので、命令は、異なるタイル上でそれが実行されているとしても、明確な通信を使用することによってのみ、それらの間でそれらの実行を同期化できる。また、複数のDCLがそれらのデータを明確に管理することを可能にするので、命令は、タイルのDCL中に記憶されたデータについての完全な制御を有する。タイル処理要素上での命令の実行は、命令において定義された事前に定義された順序に追随することによって行われる。タイル処理要素がDCLの同じセットをシェアするので、この優先順序によって、同じ群に属する命令によって使用されるDCLへのアクセスシーケンスを特定することが可能になる。同じ命令バンドルによって制御されたタイルのセットはクラスタと呼ばれ、そして命令メモリに関係付けられる。クラスタにおいて、一つの処理要素は、アドレスレジスタを有して、そしてクラスタ命令メモリから読み取るために次の命令バンドルのアドレスを供する分岐ユニットである。クラスタのセットはプロセッサを構成する。各クラスタは命令メモリ中に記憶された命令のスレッドを実行する。異なるクラスタに属している処理要素上で実行された命令は同期化され得て、そしてマイクロアーキテクチャーの介入を要求することなく、又は複雑なルーティングリソースを要求することなく直接複数のDCLを用いてデータをシェアする。通信は変数キャッシュから連結解除される。複数のDCLは、一次的な結果に限定される記憶を供し、一方、長寿命変数は処理エレメントにおいて実行されるローカルメモリを用いて記憶される。通信が明確に特定され、同期化手段を供し、そしてデータ管理を可能にするので、上述のプロセッサは、他の平行プロセッサと比べて強力に単純化されたマイクロアーキテクチャーを有する。事実、データ更新を実行するための複雑なバイパス回路、マルチポート付きレジスタファイル、パイプライン、又は他の平行プロセッサにおけるような複雑なルーチィングリソースさえも有する必要はない。従って、このプロセッサによって、命令レベルの平行性を開発して実施を同期化しながら、実行の複雑さを減じること、より高い実現可能性及び電量効率を有することが可能になる。本発明のこれらのそして他の特長、態様及び有利な点は、以下の記述及び請求項を参照してよりよく理解されるであろう。高効率順次RISCプロセッサコアは、命令の間でデータを通信するためにレジスタファイルを使用する。順次平行RISCコアは中央レジスタファイルを、実行ユニットの間の中央データプールとして使用する。レジスタファイルは実施するのが複雑であり、そして平行プラットフォームの実現可能性を制限する。更に、レジスタに基づくデータ通信は、パイプラインによる実行において正しい実行状態を維持するために追加のマイクロアーキテクチャー支援を必要とする。これは平行VLIWプロセッサが、電力オーバーヘッド及び周波数制限を導入する複雑なバイパスネットワークによって更に制限される原因になる。それらの欠点によって、命令レベルの平行性を開発できる順次VLIMコアの電力効率が低下し、従ってそれらによって均一マルチコアプラットフォームにおけるそれらの使用が制限される。本明細書に提示されたLiteFlowプロセッサモデルは本発明の実施態様である。それによって、高度に効率的な平行プロセッサコアが細粒LIPを開発することが可能になる。それは最悪の場合のその複雑なバイパスネットワークを有する中央レジスタファイルを使用しない。それはその代わりに、命令によって完全に特定された明確なデータ通信と一緒に、直接、実行ユニットの間で1対1通信リンクを使用する。それは迅速でかつ効率的なコア間通信手段も供し、それを高効率均一マルチコアプラットフォーム用の適切な解決手段にする。LiteFlow実施態様はタイルベースのアーキテクチャーモデルである。LiteFlowプロセッサは、独立したタイルの組をグループ化するクラスタからなる。各タイルは、データフロー状に命令を実行することによって、実行ユニットを制御する。通信タイル及びクラスタの内部及びその間の全てのデータ通信は明確であり、そして以下で、データ通信リンクのためのDCLとして言及される直接1対1データフロー状リンクを使用する。DCLの非常に簡単な実施態様は、複数の小さな同期FIFOであり得る。DCLは、レジスタインデックス又はタグを使用せずに、命令の間でデータを通信するため使用される。DCLに関連する制御は、異なるタイル又はクラスタの間のスレッドにおける命令の間の実行同期化のために使用される。プロセッサタイルにおけるこのローカル実行制御によって、同期化及び制御信号のために使用される長いワイヤが避けられる。計算には複数のDCLのみが使用され、そしてVLIWプロセッサにおける中央レジスタファイルのような、マイクロアーキテクチャーによって維持された中央のシェアされたデータプールは使用されない。複数のDCLは、業務通信プリミティブ基本命令を実行することによって、データを極めて小さく操作するので、それらは実行可能でありそして遅延耐性に鈍感であり、それらを大きな平行プラットフォーム用の適切な通信手段にする。LiteFlowプロセッサが図2において示される。それは各々が私用の命令及びデータキャッシュ又はスクラッチパッドを使用する一つのタイルをグループ化する四つのクラスタからなる。隣接しているクラスタは1対1DCLによって緊密に連結される。それらの緊密な接続は非常に迅速でありそして、幾つかのクラスタに亘る単一スレッドを効率的に実行することを可能にする制御情報を伝搬する。図2において、命令キャッシュメモリが、図においては示されていない専用のメモリネットワークを使用するL2キャッシュとして見られ得る。この実施態様において、各クラスタは、1対1DCLからなるローカルネットワークによって接続された単一タイルからなる。それはデータ及び命令キャッシュ又はスクラッチパッドに接続される。データキャッシュは、実行に依存してメモリ操作を実行することによって幾つかのタイルによってアクセスされ得る。この実施態様におけるタイルは、一つ又はそれ以上の実行ユニットEU、長寿命データを保持するためのローカルメモリ、LMEM、を有する。この実施態様において、各クラスタは、クラスタ上で実行されるコードのブロックを保持する、本明細書においてSEB-BUFFと呼ばれるローカル命令モモリを有する。この実施態様の各クラスタが一つのタイルを有する故に、本明細書において各タイルは、分岐を有するコードの連続的なスレッドを実行する。接続されたタイルのセットとそれらのクラスタをグループ化することによって、本明細書では実施態様のプロセッサは、タイル当たり一つの命令スロットのみを有する軽いデータフロー状の実施エンジンとして見ることができる。データフロー状とは、幾つかのデータ又はリソースの可用性によってトリガーされる実施を意味する。エンジンはタイルにおける連続スレッドからの命令を実行する。命令は、静的にスケジュールされた連続したフローから、次の候補であるとして選択される。命令は、全てのそれらのオペランドがエンジン中で利用可能であるとき、最終的に実行される。データフロー状エンジン自身は、命令スロットの間で名前が付けられていないデータトークンを通信している固定された1対1DCLリンクからなる。実行エンジンの命令窓は非常に小さく、そしてクラスタ中のタイルの数に対応する。この小さな窓サイズによって、データフロー状エンジンを非常に電力効率的にすること、そして複雑性を低下させることが可能になる。それによって、内容にアクセスされる命令キュー又はテーブルに負荷をかけないデータフロー状実行が可能になる。この実施態様グループにおける命令バンドルは、平行して実行され得る幾つかの命令をグループにする。命令の間の通信はDCLを用いてなされ、そしてそれらの実施は、データ及び行き先DCLの可用性によってトリガーされる。実施は、本明細書においてCTRL-REGと呼ばれるクラスタレジスタ中に装填された命令バンドルによって指令される。タイルは四つのタイプの命令を平行して実行でき、それらは以下のものである:計算、主メモリ移動操作によるデータ移動ローカルメモリアクセス命令バッファにおける分岐操作分岐を除いて、同じ命令の幾つかの例が、実施態様の実行に依存してタイル中に提示され得る。LiteFlowモデル実施態様は、コンパイラに対して明確でかつ見ることができるプロセッサ内部でデータ通信を最大限利用し、一方、それがやはり命令中心であるという特徴を有する。これはそれがやはり計算を駆動する計算又はメモリ操作のようなデータ変形操作であることを意味する。通信はオペランド選択によって自動的に達成され、そして命令実施の副次的効果として見られ得る。正しい状態を維持するために、変数をレジスタインデックスによって又は複雑なマイクロアーキテクチャーと一緒にタグを使用することによって命名する代わりに、データは、静的に定義された生産者/消費者ペアからそしてそれに向かって明確に取られる。この方法によって、例えば、生産者/消費者ペアを隣接するタイル、又は隣接するクラスタにおけるカーネルに置くことによって、コンパイラレベルでデータ通信を最適化することが可能になる。それによって、データ同報通信を本当にそれを使用する操作又はタイルのみに最小化することが可能になる。操作の間のこの明確で最適化されたデータ通信は、中央データプールを使用するよりもより複雑でなく、そして電力消費がより少ない。事実、専用のマイクロアーキテクチャーによって維持される中央レジスタファイルは、不必要な電力を消費する全てのパイプライン段階を通して動くデータを必要とする。クラスタの間の通信は、それらがクラスタ内部で取り扱われるのと同じように、複数のDCLによって取り扱われる。図2において、左及び右のクラスタからの二つのDCLがタイル3及びタイル4において各々終わる。それらは複数のローカルDCLとしての命令によって使用される。複数の通信DCLがコンパイラによって完全に見える故に、隣接しているクラスタの間のそれらの制限された接続は、幾つかのクラスタに亘るスレッドに広がるのに十分であり、そして、インデックスされたレジスタに関して、最悪の場合、完全に接続されたクロスバーは必要でない。更に、実行の同期化はそれらの複数のクラスタ間DCLによって完全に取り扱われる。これらすべてによって、DCLベースのクラスタ間通信がスケーラブル方法になる。LiteFlowプロセッサ実施態様内の通信はDCLと呼ばれる1対1リンクによって取り扱われる。それらは命令の間のデータ通信のために使用される。それらの通信はタイル内部、異なるタイルの間、又はクラスタの間でさえローカルであり得る。機能性が低下した簡単な基本的DCL実施態様はワイヤ及びFIFOによって実行され得る。DCLのこの実施態様を用いて、多くのデータ管理機能などが支援されず、又はFIFOの回りで又はタイル中で実行されることを必要とする。この簡単な実施態様を用いると、一つ及び三つのレジスタ、典型的には二つのレジスタの間のFIFOサイズが非常に短くなる。より大きなFIFOが遠いタイルの間のパイプライン用に使用される。図3aは、FIFOによって追随されるワイヤからなるこの単純なDCL実施態様を示す。2-レジスタFIFOの典型的な実施が図3bにおいて示される。それは、主として二つのレジスタ、多重通信用装置及びレジスタの内容状態を管理しているコントローラからなる。簡単な通信レジスタに比べて、この制限されたDCL実施態様のクリティカルパスは、FIFO多重通信用装置によってのみ論じられる。簡単なDCL実施態様はFIFOの制御信号を用いてなされる。書き込み信号によって、FIFOにおける新しいデータの導入が可能になり、そして読み取り信号は先入れ先出し順序でデータを除く。二つの追加の信号、満杯及び空は、FIFO状態についての情報を供する。満杯状態とはFIFOが空のレジスタを全く有しないこと、そして未決定の挙動を引き起こさずには書き込まれ得ないことを意味し、そして空の状態は、明らかに読み取られ得ない無意味なデータをその出力部で有する。図3cは、以下においてこの単純なDCL実施態様を表すために使用される記号を示す。FIFOベースのDCLを使用することによって、データの可用性によってトリガーされる実行である、タイル中のデータフローの実行が可能になる。事実、FIFOは一方向にデータ輸送できるが、制御情報は二方向に輸送できる。FIFOの末端で消費者は、FIFOが空でなければ、つまり空の信号が再設定されるとき、自身が計算を進めることができるかどうかを知る。従って、その出力部でデータをただ書き込むことによって消費者をトリガーできる、FIFO入力部で生産者からの制御情報の転送がある。逆に、FIFO入力部で生産者は、満杯の信号がリセットされるときに起こる、満杯でないFIFO中に自らがその結果を書き込むことができる場合にのみ、計算を進めることができる。もしFIFOが満杯であるならば、生産者は進むことができず待たなければならない。本明細書で、制御情報転送は、満杯のFIFOからデータを除くことによって生産者の実行をトリガーできるFIFO出力部で、消費者からなされ、それによって計算すること及びその結果を書き込むことが可能になる。FIFOが一つより多くのレジスタを有するとき、その制御のためのクリティカルパスはその入力側と出力側の間で連結解除され得る。事実、満杯でないFIFOは、その出力側が読み取られるであろうか否かに拘わらず、常に書き込まれ得て、そして空でないFIFOは、その入力側が書き込まれるであろうか否かに拘わらず、常に有効なデータをその出力部に有する。通常のパイプライン段階はこの連結解除機構を供さず、そして段階の間の制御信号は、段階を横切る長い制御経路に繋がる段階の境界を跨ぐ必要がある。この欠点はRISCパイプラインプロセッサにおいて問題のクリティカルパスを引き起こすパイプラインインターロックと呼ばれる。命令実行は明らかに複数のDCLを制御し、そして制御は常にタイルに対してローカルである。これは、データがDCL中に命令によって常に明確に書き込まれること、そして別の命令によって常に読み取られることを意味する。本特徴は、複数のDCLがデータを極めて小さく扱うことである。場所が残されているとき、データはDCL中に明確に書き込まれるが、それはまたその最後に明確に破壊される。レジスタは常に書き込むことができ、そしてその値が無意味である場合でさえ、読み取ることができる。中央コントローラはその状態を知りそして管理しなければならない。LiteFlowプロセッサ実施態様において、全体的な制御は、タイル及びDCLにおけるローカル命令制御の間に分配される。複数のDCLはデータ操作を、大きな平行プラットフォームにとって有利である、遅延耐性に対して鈍感である取り扱いにする。本明細書で、DCL実施態様は、限られた一時的記憶能力を有する通信リソースである。それらは、データ順序、つまりデータがDCLに書き込まれる順序が、それらがその最後に読み取られるのと同じ順序であることを記憶する。その結果、データがDCL出力部で読み取られないときに、一方で、生産者が引き続きその入力部に書き込むとき、それはFIFOが満杯になった後、ブロックする。データは、専用リンクを明確に選択することによって、それらを通して特別なタイルに送られる。従って、データ又は行き先ポートを区別するために、それらは如何なるレジスタインデックス又はタグ又はアドレスをも使用しない。命令バンドルはタイルにおける操作の実行を指令する。全ての命令は複数のDCLを用いてデータを明確に通信する。データ通信は、タイルにおいて、又はタイルの間でローカルなものであり得る。それらの明確な通信は命令によって特定される。全ての命令は複数のDCLからそれらのオペランドを取り、そしてそれらの結果を複数のDCL内に明確に書き込む。図4は、その四つの命令タイプ、分岐、計算、移動及びローカルメモリを有する実施態様のタイルを示す。それらは全て入力DCLから入力データを取り込み、そしてそれらの結果を一つ又はそれ以上の出力DCLに送る。この実施態様において、少なくとも一つのDCLは、生み出された結果をローカルに再使用しそして記憶するために、同じタイルの出力部から入力部に戻る輪をつくる。DCL入力部からオペランドを取る際、及びDCL出力部に結果を送る際に、LiteFlowプロセッサ実施態様におけるオペランド及び結果の操作は更に二つの特異性を有する:プログラム化されたオペランド消費、及び選択的結果の同報通信。操作が入力DCLからのデータを使用するとき、それは必ずしもそれを消費しない。これはデータが、使用された後、自動的にDCLFIFO実施態様から読み取られないことを意味する。その代わりに、使用された各DCLソースに対して、命令は、データが読み取られるべきか否かを特定する。これによって、複写操作を発することを必要とせずに、データを多数回の使用のためにDCL端部に保持することが可能になる。結果の同報通信に関して、命令は結果が送られるべき全てのDCLを明確に特定する。次いで、結果のデータはそれらのDCLを通してのみ伝搬されるが、特定されないものを通しては伝搬されない。従って、使用された複数のDCLにおいてのみ切り替え作用があるが、全ての接続された行き先DCLにおいてあるのではない。ゲート回路によってDCLにおける長いエントリワイヤとの切り替えが防がれる。命令によって指令されたこの選択的な行き先同報通信によって、有用な通信のためにのみ電力を消費することが可能になる。それはレジスタファイルに基づくアーキテクチャーにおける最悪の場合のバイパスネットワーク同報通信と完全に異なる。オプションのソースの消費及び個別の行き先選択を実行する命令実施態様の例が図5において示される。それは、二つのオペランドを取り、そして結果を生み出す典型的な計算操作である。実行すべき演算をコード化する演算コードフィールドに、使用すべき入力DCLをオペランドとして選択する二つのソースフィールドsrc及びsrc2が続く。それらの二つのソースに関連して、データオペランドがそれらのDCLから読み取られる必要があるかどうか、又は将来の再使用のために残され得るかどうかを示している二つの読み取りビットr1及びr2がある。最後に、N出力に対してサイズNのビットフィールドd1‐‐‐dNとしてコード化された行き先フィールドが、各出力DCLに対して、それが結果を送るべきか否かを特定する。8つの入力DCL、8つの出力DCL及び8ビット演算コードを有するタイルに対して、ソースフィールドは3ビット及び行き先8ビットでコード化されるため、それが24ビット幅の計算操作に繋がる。LiteFlowプロセッサ実施態様において、通信が明確であるとしても、データ変形を指令する命令はやはり計算を駆動する。通信は、オペランドを取ること、及び結果を複数のDCLから複数のDCLに同報通信することの副次的効果であるが、主たる仕事ではない。従って、通信及びデータの移動の大部分は計算と共に達成され、そして専用の通信プロセス又は不均一リソースを必要としない。実施態様のプロセッサタイルは、二つのバス、オペランド及び結果バスの回りに組織化される。オペランドバスは複数の入力DCL末端を複数の操作入力ポートに接続する。結果バスは複数の操作出力ポートを複数の出力DCLに接続する。本明細書においてそれがバスと呼ばれるとしても、それは操作ユニットとDCLの間の制御転送のために、もっと複雑である。各々の操作はそのオペランドを取り、そしてその結果をそれらのバスを通して各DCLに送る。提示された実施態様において、それらは単純な多重通信用装置を用いて実施される。本明細書において制御は、命令、入力データ可用性及び出力リソースの動作可能性に基づいてタイルレベルで管理される。オペランド選択及び結果の同報通信は計算と同じサイクルで実行される。整数計算操作、移動及びローカルメモリ操作の大部分は一つのサイクルにおいて実行される。もっと複雑な操作に対しては、実行単位はパイプラインとされ得る。主メモリ空間アクセスは、通常の計算操作のような機能ユニットによって実行される装填記憶命令を用いてなされる。従って、専用の機能ユニットはキャッシュ又はDCLによって接続されていないスクラッチパッドメモリ配列にアクセスするために使用される。本実施態様において、実行ユニットにおける内部パイプラインの使用は、それらがそれらの結果を同時に同じ行き先DCLに送らない限り、後続の命令の実行を妨げない。事実、実行ユニットパイプライン又は別のリソース上で実行される複数の命令があるとき、タイルコントローラは、命令において使用された行き先によって定義された各DCLにおける行き先同報通信順序及び命令連続順序を記憶する。LiteFlowプロセッサのタイル実施態様が図6において示される。それはT1と命名され、そして同じクラスタのT2、T3及びT4部分とインデックスされた3つの他のタイルと接続される。本タイルは5つの入力DCL及び5つの出力DCLを有する。三つの入力及び出力がクラスタの他のタイルと通信するために使用され、そしてそれの中の二つはローカルルーピングlocalloopingDCLである。それらの複数のローカルDCLは、同じタイルにおいてデータを再使用するために、又はローカルメモリからデータにアクセスするために必要である。示されたタイルは実施ユニットEU、二つのバスとローカルメモリ、LMEM、の間で垂直の矢印によって記号化された移動ユニットを有する。図において表されていないが以下の章において詳細に述べられるローカル分岐ユニット及びローカル命令もある。実施例においては各操作タイプの一つの例があるものの、各操作の幾つかの例がタイル中に存在し得る。例えば、二つの実行ユニット及び二つの移動操作を有することが可能であり、又は実行ユニットなしで、移動及びローカルメモリのみを有することさえ可能である。条件分岐はそれらの成果を定めるためのフラッグを必要とする。このために、この実施態様において、複数の専用の1ビットフラッグDCLは、それらが複数のデータDCLによって接続されるのと同じように互いの間でタイルを接続する。それらの複数のフラッグDCLは簡略を期すために図において表されていない。複数のフラッグDCLによって、クラスタの全てのタイルが同じスレッドを平行して実行することが可能になる。次いで、スレッドは、一つのタイルに対して結果が計算された、しかし制御が全てのクラスタに亘って転送された分岐又は条件分岐によって容易に制御され得る。計算によって使用されそして生み出されるデータのためのパイプラインレジスタが複数のDCLによって実行される。処理エレメントに対してローカルな機能ユニット中に埋め込まれ得るものを除いて、データ操作のために使用される他のパイプラインレジスタは全くない。タイルがそれ自身又は他のタイルによって使用される結果を生み出すとき、それは、計算サイクルの最後で、パイプラインレジスタに置き換わって複数のDCL中に記憶される。図7は、T1とT2の間のDCLのみが示される二つのタイル、T1及びT2、を示す。これらのタイルは図6におけるものと同じである。T1の実行ユニットは、それ自身及びT2によって使用されるであろう結果を生み出す。従って、結果データは、計算サイクルの最後でT1中の一つのループDCL、及びT1とT2の間のDCLを通して送られる。図においてそれは太線で描かれている。サイクルの最後で、データはDCL中にラッチされ、そして正に次のサイクルで二つのタイルにおいて利用できる。尚、複数の行き先の可能性によって、殆どのデータフローアーキテクチャーにおける場合がそうであるような、専用の複写操作を使用することなしでデータ複写が可能になる。もし、データ通信経路が、長いワイヤの遅延耐性故に、やはり更なるパイプライン接続を必要とするならば、余分のパイプライン段階を実行するのはDCL実施態様におけるFIFOである。それは隣接しているクラスタの間を通信する複数のDCLの場合である。事実、内部クラスタ通信は、計算と同じサイクルで実行されるように最適化され、一方、クラスタの境界を交叉する複数のDCLは、実施態様に依存した書き込み長さ故に、データを輸送させるために一つの完全なサイクルを取り得る。非常に短い内部クラスタ通信遅延耐性は、図8において示されるように、それらのDCLが互いに非常に近くで終わっているフロアプランクラスタタイルによって達成される。サブミクロン技術において利用可能な複数のルーチングレベルのおかげで、図において示されたDCL長さは、通信遅延耐性を減少させるために、クリティカルパスの相対的に小さな比率まで短縮され得る。図8において示された四つのクラスタ間DCLは、ワイヤ遅延耐性故により長くそしてより遅い。この実施態様において、各クラスタは、全体的なコントローラを使用せずに、独立してそれ自身のコードを実行する。それにも拘わらず、それらは通常のRISC機械におけるように各サイクルでは命令を実行しない。実行はデータフロー状になされ、それは入力データの可用性及び出力DCLの動作可能性によって同期化され、それは命令の待機をもたらし得る。このデータフロー状の実行は、単純なDCL実施態様中に埋め込み型FIFOによって可能とされたデータフロー状の挙動故に可能である。生産者は、FIFOを通してデータを送ることによって、消費者の実行をトリガーでき、そして消費者は満杯のFIFOからデータを取り除くことによって生産者の実行をトリガーできる。タイル上で実行される命令バンドルの部分である命令は、それらのDCL状態に依存して独立して実行され得る。操作は、もしその全てのオペランドが利用可能であれば、そしてその全ての行き先が使用され得れば、実行され得る。その全てのオペランドは、オペランドがそこから取られる全ての入力DCLが空でないとき、利用できる。その行き先の全ては、もし結果が書き込まれなければならない全ての出力DCLが満杯でなければ、使用できる。マルチサイクル又はパイプライン操作のために、第一の実行サイクルはオペランドが利用できることが必要であるが、行き先は必要でなく、そして最後の実行サイクルは行き先が動作可能であることのみを必要とする。幾つかの操作が実行中であるとき、タイルコントローラは行き先DCLにおける書き込み順序を維持する。或るDCLにおける書き込み順序は、命令の連続順序によって定義される。命令がタイル中に取り出されるとき、その操作は非同期的に実行され、それは一旦、操作の全てのDCLが動作可能であると、それが実行され得ることを意味する。唯一の例外は、操作群において最後の操作として常に実行される分岐操作に対してである。事実、分岐操作の後のサイクルは実行され、新しい命令がタイル制御レジスタ中に上書きされ、そして全ての前の操作が実行されなければならないか又は少なくともそれらの実行が始められなければならない。命令の実行は、データの可用性に依存して数サイクルを取り得て、もし、全てのデータ及び出力DCLが動作可能であるならば、それは1サイクルで実行される。タイル上の命令バンドルの命令部分は非同期的に実行され得るが、同じ入力及び出力DCLをシェアもし得る。二つの操作は同じ入力DCL、ひいては同じデータを使用し得る。それらはそれらの結果を同報通信するために同じ行き先DCLも使用し得る。まだ実行されていないそしてシェアされた行き先のための別の操作によって使用されるデータを操作が消費することを避けるために、対立しているリソース使用の場合、操作の実施において事前に定義された順序がある。通常、この順序は命令においてコード化される。それにも拘わらず、この実施態様において、この順序はハードウエアにおいてハード的にコード化されるが、それは構成レジスタを用いて構成されることもあり得る。この実施態様における順序は第一に、ローカルメモリアクセスであり、次いで移動し、次いで計算及び主メモリ操作、そして最後に分岐である。この種の実行において、操作は異なるサイクル中で実行され、そして全体の命令バンドルは完成されるために数サイクルをかかる。データフロー状の同期化を使用した独立したタイルの実行は、データ依存性に従って動的にスケジュール化され、そして動的実行遅延耐性に耐える。コードは、RISCアーキテクチャーにおけるようにスケジュール化される代わりに、タイル上に置かれそして送られる必要があるそのデータフローグラフに近い。動的スケジューリングの有利な点は、コードがノップnopでパッドされるpaddedことも、ソフトウエアパイプライン化ループを用いる場合のように、始めの言葉及び結びの言葉を使用することも必要としないことである。従って、この動的スケジューリングは、均一マルチコアプラットフォーム上に分配されたもののような大きな平行アプリケーションに対して有用である。データフロー状の実行はデッドロックdeadlockに遭遇することがある。デッドロックは、両者共に、クラスタを予想されない長い待機状態に置かせることになる、コード中のエラーによって又は非常に高い遅延耐性I/Oによって引き起こされ得る。コードにおけるエラーは、全ての変数が定義され、そして使用前に初期化されることが必要であるプログラムの正しい連続定義からコードをコンパイルすることよって緩和され得る。それにもかかわらず、もしコード中にデッドロックエラーがやはりあるならば、キャッシュがミスするような長い遅延耐性操作を全く有しないでクラスタ中の全てのタイルが待機していることを検出することは容易である。従って、このデッドロックはそれが起きた後の次のサイクルで検出され得て、そして中断を発するために使用される。コード中のエラーが大概、デッドロックを生み出すということは述べる価値がある。プロセッサが長期間運転でき、そしてセグメントの誤りによってその実行が中断されるまでメモリ内容を破損させる、連続レジスタ機械におけるような、更なる機械的状態の破損を避けることは有利な点を有する。予想されない長い遅延耐性データフローI/Oによって、不確定な量の時間中、プロセッサが待機させられ得て、その計算を阻止されることになる。この問題はLiteFlow実施態様において、特別なDCLが、動作可能であるデータを有するかどうかをテストするtest-df1命令によって緩和される。これによって、ループは、データが処理され得るかどうかを調べるために、予想されないI/Oを周期的に調べることができる。Test-dfl命令は、I/O処理サブルーチンに条件的に分岐するために使用され得るフラッグを発生する。平行実施中のクラスタ上での空間計算は、全プロセッサ中のクラスタの位置に依存する二進性を必要とる特徴を有する。アドレス再配置能力に加えて、クラスタ間で計算を動かし得るために、空間物体コードは空間再配置能力も要求する。コードの携帯性は、一般的な復号段階によって及び動的な空間再配置能力によって可能になり得る。LiteFlowプロセッサにおけるコードの実行は高度に平行的である。この平行性は命令バンドルにおける命令の間で、クラスタタイル上の命令の間で、そしてクラスタの間で起こる。1対1データフローリンクは、インデックスを用いるランダムレジスタアクセスを使用する代わりに、明確な通信と一緒に使用される。長寿命変数は小さなローカルメモリ中に保持される。DCLは、それらがデータを極めて小さく取り扱い、そして全てのそれらの端部が操作によってランダムにアクセスされ得ない故に、レジスタとは基本的に異なる。それらはローカルであり、そしてそれらの殆どは二つの異なるタイルに接続される。DCLのFIFOレジスタは計算用のパイプラインレジスタとして使用される。これによって、DCLは、サイクル中に一つの操作によって計算されたデータが、別の正に次のサイクルによって使用され得るように、殆どのパイプラインを一緒に接続する。DCLを用いた操作の間の通信は、この実施態様において、スカラーRISCパイプライン及びVLIW用のバイパスネットワークと同じ場所にあるものとして見ることができる。相違点は以下の通りである:iデータが極めて小さく取り扱われること、ii実行同期化のためにそれらが使用されること、iii動的レジスタタグ比較が全くないこと、iv選択された1対1リンクにのみデータが動くこと、そして最後にvそれらが後でレジスタファイル中に再び書き込まれないこと。完全なバイパスネットワーク同報通信、中央レジスタファイル及びそれらの専用パイプライン段階は非常に電力を消費するものであり、そして中央レジスタファイルを使用する埋め込み型プラットフォームにおいて電力効率を制限ることは公知である。DCL1対1ネットワークによって、データが独立して実行されるタイルの間で交換されるとしても、タグ又はレジスタインデックスを使用せずにデータを区別することが可能になる。タイルは、その到着DCL及びDCLデータシーケンスにおけるその順序を選択することによって、或るデータと別のデータを区別する。従って、コンパイラは、全ての使用されたタイルを包含する全体的な実行脈絡を正確に知る必要がある。一例が図9において示される。三つのタイル上で実行される小さなプログラムフラグメントが図9aにおいて示される。タイル1はデータA及びBを生み出してタイル2に送り、そしてタイル3はデータDを生み出してタイル2に送る。従って、図9bは、NoCの場合でもあるであろうように、各タイルにおいて単一エントリポートを有する規格バス又はネットワークによって実行されたタイルの間の通信ネットワークを示す。図9cはネットワークの1対1DCL実施である。タイル1及び3はそれらの実行を、二つの別々のメモリからA及びDを装填することによって開始する。キャッシュのミス問題のせいで、また二つのタイルが独立してコードを実行するせいでもあって、AはDの前に、又はDはAの前に送られ得て、正確な時間スロットはデータに依存し、従って、動的に定められる。図9bにおけるように、独立して制御されるタイルを有する規格のバス又はNoC解法を使用するとき、A又はDのどちらに最初に到達するであろうかをタイル2から知ることは不可能である。従って、A、B及びDを動的に区別し得るように、例えば、ローカルレジスタ場所に対するものであり得る、インデックスをデータに付けることが必要である。図9cにおける1対1DCLネットワーク実行を用いて、A及びBはタイル1からDCLに、そしてDはタイル3からDCLに到達することが必要であろう。Aがタイル1においてBより前に生み出される故に、DCLにおけるタイル1からの到達順序はA続いてBであり、そして全てのデータはタグを使用せずに区別され得る。提示された実施態様において、三つのタイプのメモリ記憶がある。大きな配列は、スクラッチパッド又はキャッシュによって実行される通常の装填/記憶操作によってアクセスされ、そしてタイル中の小さなローカルメモリは専用のオペレータ及びDCLレジスタによってアクセスされる。二つの最後のものは、一次的変数を記憶するために使用されるRISCアーキテクチャーにおけるレジスタファイルを置き換えるために使用される。それらの変数はそれらの寿命に依存して分類され得る。非常に生存期間が短い変数は複数のDCL中に単純に記憶される。それらは生み出された後、即座に続く操作によって使用され得る。それらは、データがDCLから自動的に破壊されない故に、数回でも使用され得て、そして幾つかの操作によってローカルに再使用され得る。複数の出力DCLにおける命令の同報通信能力のせいで、単一データは幾つかの場所で容易に複製され得る。長寿命変数は、その生きている期間中、特別なデータのために取っておかれるであろうDCL中に留まることができる。それらは、一つ又は幾つかのタイルのローカルメモリ中にも記憶され得る。一旦、変数がローカルメモリ中に入ると、それは操作の実行において使用される前のサイクルに読み取られる必要がある。従って、専用のローカルメモリ操作は、その前の命令において発行される必要がある。クラスタの全体のデータ記憶にはローカルメモリ記憶及び複数のDCLが挙げられるが、全てがランダムにアクセスされ得ないものではない。8つのデータ用語のローカルメモリを想定している図6におけるような4つのタイルのクラスタに対して、32のローカルメモリエントリ及び全部で52のデータ記憶場所を有する20のDLCがある。LiteFlowプロセッサ実施態様におけるレジスタの使用に関して述べることの重要な利点は、データフローの実行が本質的にパイプライン経由であることである。これによって、マルチサイクル負荷のように、パイプラインでの長い遅延耐性の操作が全てのサイクルで実行され、一方、同じDCLにおいて結果が送られることが可能になる。RISCレジスタアーキテクチャーにおいて、ループ捲き戻しが使用されなければならず、より高いレジスタ消費を引き起こす。図10は本発明の別の実施態様を画く。本実施態様は一つのタイルのクラスタからなる。タイルは、タイルコントローラ名TIC図10.11によって制御される。処理エレエント図10.8は、ローカル制御ユニットCU図10.5によって制御される。クラスタは、クラスタコントローラCLC図10.12によって制御される。処理エレエントはそれらのオペランドを処理エレメントのCUの要求に応じて選択ユニットを通して取る。処理エレエントはそれらの結果を、CUの制御下で複数のDCLにアクセスしている分配ユニットに送る。選択ユニット及び分配ユニットは不規則であり得て、これは全てのDCLが全ての処理エレメントポートに対して利用可能とはいえないことを意味する。この特長によって、それらのユニットの複雑さを減じることが可能になる。分岐ユニットはプログラムカウンタを保持し、そして命令バンドルレジスタ図10.18中に記憶すべき次の命令バンドルのアドレス図10.15を供する。この実施態様において、分岐は遅れ得て、そして静的に予測される分岐であり得る。本発明は、新しいそして発明的なコード組織にも関する。本明細書に提示されたコード組織は、本発明によるタイルのクラスタ上で動くプログラム、又はより一般的には、処理エレメントの組のためのものである。極めて小さな命令のシーケンスである代わりに、本明細書において、プログラムはブロックに組織化され、そして二つの実行レベルを有する。第一のレベルはクラスタ上にコードのブロックを装填する。それらのブロックは小さなそして私用のコードセグメントからなる。第二のレベルは各セグメントを各タイル上で平行に連続的に実行する。第一のレベルは主命令メモリ空間から実行され、一方、第二のレベルは、ローカルでかつ私用のアドレス空間を用いて小さなローカルバッファからローカルに実行される。このローカルアドレス空間により、即座の目標アドレスを用いることによって迅速なローカル分岐が可能になる。一旦、ブロックがクラスタ上に装填されたならば、命令は、キャッシュから再装填されることを必要とせずに、直接、それらのローカルメモリから再度実施され得る。この二-レベルコード実施は、この章の残りの部分において詳述されるであろう三つの主な利点を有する。第一は、ローカル命令メモリがループを捕捉するとき、フェッチする電力消費はローカルメモリアクセス電力によって支配され、それはキャッシュアクセスよりはるかに少ない。第二は、ローカルコードにおけるローカル分岐によって、再使用されたループ数を増加させる複雑な制御経路を具現化しているループを捕捉することが可能になる。第三は、即座のアドレスを使用したローカルバッファにおける条件分岐の実行によって、分岐に、非常に限られたペナルティを持たせることになる非常に短いパイプラインが可能になる。これによって、重要な性能損を引き起こすことなく、又は電力消費の緩和技術を使用することなく、分岐集約的コードを実行することが可能になる。図11において示される通り、二つの実行レベルがある。第一のレベルにおいて、実行ブロックEBと呼ばれるコードのブロックは、主命令メモリから取り出される。それらはサブ実行ブロックSEBと呼ばれるコードセグメントからなる。SEBは、タイル上で実行されることを目標とする小さな命令セグメントである。EBは主命令メモリ空間から取り出され、そしてそれらのコードセグメントは、クラスタ中のタイルのローカルバッファに分配される。第二の実行レベルにおいて、SEBはクラスタの全てのタイル上で独立して平行に実行される。それらの命令はローカルバッファから取り出され、そしてタイル実行パイプライン中で処理される。命令が極めて小さくアドレスされそして実行されるプログラムに対して独特のアドレス空間はない。EBがアドレスされ、そして各SEBに対して一つの、複数のローカルアドレスが空間を取る、主アドレス空間がある。分岐の二つのレベルは二つの実行レベルと関係付けられる。第一のレベルで、分岐はEBの間の実行フローを修正し、そして目標とされるアドレスは主アドレス空間において表される。第二のレベルで、分岐によって、タイル上で実行されるSEB内部の実行フローを修正すること、及び短い目標アドレスがローカルバッファのローカルアドレス空間において表されることが可能になる。二つの実行レベルを実行する全体的な実行パイプラインが図12において示される。それは、EBキャッシュから始まりそしてタイル実行段階で終わる四つの段階を有する。第一のステージの最初の二つはEB実行レベルに関連し、一方、最後の二つはSEB実行レベルに関連する。第一の実行レベルにおいて、ブロックはEBキャッシュから取り出され、そしてそれらのSEBはタイルローカルバッファに書き込まれる。第二の実行レベルにおいて、SEBはクラスタの各タイルにおいて独立して実行される。一つのタイル中の一つのSEB実施のみが図12において表されており、他のタイルへのSEB分配は、最後のEB実行段階を去る点線によって描かれている。EBキャッシュはEBポインタレジスタEBPを用いてアクセスされ、一方、SEBにおける命令はSEBポインタレジスタ、SEBP、を用いてアクセスされる。EBは、パイプラインにおけるラインレジスタ、LINE-REG、を用いて、キャッシュから一行一行取り出される。命令は二つの程において復号される:第一でかつ主たる復号工程は、EBが主命令メモリから装填され、そしてSEBを保持しているローカルメモリ中に書き込まれるときになされる。第二の工程は、命令がSEBバッファからタイル制御レジスタに読み取られるときに実行される。それらの二つの工程は、図12において復号1及び復号2と記される。SEBバッファ中に書き込む前の第一の復号工程は大部分の復号を行い、一方、第二の工程はSEBバッファ中に記憶された命令を広げるのみである。この第二の工程が非常に低い複雑性を有する故に、それによって、専用のパイプライン段階を必要とせずに、ローカルバッファからフェッチされた命令を即座に実行することが可能になる。バッファにおける圧縮された命令様式よって、そのサイズを合理的なものに維持することが可能になる。この二段階の復号によって、復号遅延耐性とバッファサイズの間のトレードオフがなされる。SEBはEB内にパックされ、そしてEBの実行中に、クラスタの各タイルのローカルバッファ中に書き込まれる。それらは、プログラムによって実行するための実際の計算をコード化する命令シーケンスからなる。SEBの実行中に、命令はSEBバッファから取り出され、そしてタイル上で実行される。二つの工程の復号のせいで、専用の復号パイプライン段階の必要は全くない。更に、タイルがオペランド用のレジスタファイルを使用しない故に、レジスタが後方の段階を読み取り及び再び書き込む必要が全くない。SEB実行には命令を実行するための二つのパイプライン段階のみが必要であり、それはローカル命令メモリの取り出し及び実行、ローカル取り出し及び復号2及び図12における実行である。SEBは、キャッシュ機構支援を全く有しないスクラッチパッドとして直接アクセスされる小さなローカルメモリ中に書き込まれる。このローカルメモリは私用のアドレス空間を実装する。従って、SEBサイズは、全体のSEBを保持するために十分に大きくなければならないローカルメモリのサイズによって制限される。SEBの実行は常にその第一の命令によって始まる。その後で、内部分岐がSEB中の如何なる命令をも自由に目標とする。SEB内部の実行順序は連続的である。それは、もし制御フローが分岐によって中断されないならば、明確に実行される引き続く命令が次のアドレスに置かれるものであることを意味する。分岐が如何なる命令をも自由に目標とするので、ループ又は入れ子になったループでさえ、命令キャッシュからEBを繰り返して再装填することを必要とせずに、ローカルSEBバッファから繰り返して実行され得る。一旦、EBが装填されそしてその実行が始まると、全てのSEBはクラスタの全てのタイル上で平行して実行される。SEB内部の実行順序は連続的であるが、異なるSEBに属する命令の実施順序は定義されない。事実、命令の実行がそのオペランドの可用性に依存する故に、SEB内部のその実施順序は、コードセグメント中のその位置によって保証されるが、その実際の実行時間スロットは保証されない。命令の実際の実行スロットは動的に定められ、そしてデータキャッシュミス又は別のタイルから由来するオペランド依存性のような外部遅延耐性によって影響され得る。図13は4タイルクラスタ上での独立したSEB実行の例を示す。この例はFIRフィルタカーネルから取られる。それは、足し算によって最初にインデックス変数を増加し、次いで、データ及び係数を装填し、最後にそれらを乗じて結果を蓄積する。各SEBはそれらの第一のアドレスに置かれた単一命令を保持する。それらは最初のサイクル中に全て発行されるが、データの依存性故に、それらはこのサイクル中に全て実行されるものではない。それらの実際の実行は、オペランドの可用性によってトリガーされ、そしてその実行は各タイルにおいて独立して制御される。図の底部でのテーブルは各命令の実行スロットを示す。装填及びMAC操作は二つのサイクルを取る。依存性の原因となるデータの動きは、図において影付き矢印によって表される。各タイル及びデータフローの実行における独立した実行制御のせいで、正しい実行を静的にスケジュールするためにコードセグメントをノップでパッドする必要がないことを述べることは重要である。これによってソフトウエアパイプラインのカーネルにおける始めの言葉及び結びの言葉の部分の必要性も除かれ、プログラム命令カウントを減少させることになる。SEBの実行は常にその第一の命令によって始まる。その後、内部分岐が自由になり、そして如何なる命令をも目標とできる。分岐命令はコード中で単独で実行され得るか、又はやはり単一タイルに対するものであるがVLIWコードにおけるように操作群の部分であり得る。後者の場合、その実行は命令の他の操作部分と同期化され得るかまたはされ得ない。それが同期化されないとき、命令の全ての操作は直ぐに引き受けられないが、分岐操作は、もしあれば、常に最後に引き受けられる。これは、新しいものをフェッチすることによって、完全には終了していない操作群の再書き込みを避けるために必要とされる。ローカル命令メモリはローカルで私用のアドレス空間を実装する。このアドレス空間は限られたサイズを有し、そして典型的には256の命令よりも小さいか又ははるかに小さい。1バイトより小さいアドレスの使用故に、分岐目標アドレスはコードにおいて即座の値として直接提供される。事実、そのような小さいアドレスは相対的である必要はなく、広い32ビットアドレス空間の場合であるように、現在の次のアドレスへの移動を加えることによって計算される。図14はローカルパイプラインにおけるSEB分岐支援実施を示す。専用の分岐フィールドに各命令が提供される。それは分岐演算コードと一緒に条件分岐のための即座の目標アドレスを保持する。ローカル取り出し段階の開始時点で、ローカルコントローラは、次のポインタ、SEBP、と現在の命令の即座のアドレスフィールドの間で、分岐演算コードフィールドに依存する多重通信用装置を用いて、opcを選択する。即座の値を使用するこのローカル分岐は二つの利点を有する。第一は電力消費においてである。各実行された命令に対する32ビットの追加、及び各取られた分岐に対する別の余分な追加を要求する32ビットの完全なプログラムカウンタを維持する必要はない。小さなローカルなアドレス空間を用いて、1バイト未満のローカルカウンタを維持することのみが必要であり、そして分岐に対する追加は全く要求されない。第二の利点は遅延耐性である。分岐目標アドレス計算に対する専用のパイプライン段階を使用することは必要でない。これによって、条件分岐の場合でさえ、遅延耐性なしで、分岐に続く次の命令が即座に利用できるようになる。事実、図14において示されるように、次の連続アドレス又は分岐目標アドレスは、ローカルメモリの取り出し段階中に選択される。従って、もし分岐条件フラッグが、何時分岐命令が実行されるかを知らされるならば、分岐を実行するためのペナルティは全くない。もし条件フラッグが分岐の実行中に計算されなければならないならば、低コストの静的予測に基づいて予想がなされ得る。この予想が取り出し段階中にのみ起こる故に、実行段階において間違った値は全く計算されず、そして間違った予想に対処するために複雑な状態回復機構を有することは必要でない。分岐フィールドは比較的短く、そして、即座の目標アドレス、分岐演算コード及び使用すべきフラッグ条件ソース上の情報をコード化するために、16ビット未満を取る。この限られたサイズは、分岐操作が、一つの長い命令としてコード化された操作群における計算又はメモリ操作と一緒にパックされる故に面白い。パックされた分岐操作は、緊密なループカーネルを実行するとき、非常に有用である。事実、分岐操作はカーネル操作と一緒に実行され、それらは専用の時間スロットを必要としない。従って、分岐はゼロ実行遅延耐性オーバーヘッドを有する。静的な予測と一緒に、それはループ捲き戻しの必要性を排除し、EBキャッシュの占有及びバンド幅を減少させる。タイトなループを効率的に実行するには、数クラスタに亘ってさえ広がり得るタイルの組上のカーネルを平行化することが必要である。カーネルが平行化されるとき、タイル当たりの命令カウントは減少し、そして空間計算の場合1つに達することさえできる。この状況において、各タイルは単一の命令を繰り返して実行する。前に説明した通り、ゼロ遅延耐性オーバーヘッドでの分岐実行のおかげで、タイル中の単一の命令ループに達することが可能である。命令がSEBバッファから取り出される前に、それはタイルの制御レジスタ、CTTL-REG、中に既に存在しているかどうかチェックされる。もし存在する場合であれば、バッファはアクセスされず、そしてタイル制御レジスタはクロックゲートされるclockgated。従って、単一命令が繰り返して実行されるときの空間計算において、命令パイプラインからの動的電力消費はゼロであり、そして命令は、制御レジスタから直接、単純に再使用される。結論として、SEBにおけるローカル分岐は強い遅延耐性及び電力効率の改善を提供する。事実、ローカル分岐実施ペナルティは、その方向が実行前に知られているとき、ゼロサイクルであり、そしてそれが計算されなければならないとき、1サイクルである。後者の場合、ひらめきによってこの遅延耐性が隠され得て、そしてそれは引き込み段階においてのみ生じる。更に、命令と平行したローカル分岐実施によって、分岐命令自身に対してゼロサイクルが使用されることになる。従って、それによって非常に小さなカーネルにおける分岐発行スロットの問題は完全に緩和され、そして捲き戻し又はループILP変形を使用することは必要でない。EBは分岐を用いる実行フローに従って連続的に実行される。EBの実行は連続的でなく、これは実行すべき次のEBが絶対的に、次のアドレスに置かれたものでないことを意味する。現在のものが終了したとき、実行すべき次に続くEBは、ブロック分岐の実行によって明確に定められなければならない。EBはタイルのクラスタ上で実行され、そしてEBの実行はプログラム実行スレッドに対応する。実行モデルによって、マルチコアプロセッサが制御の複数スレッドを実行できるのと同じように、複数スレッドを使用する複数クラスタ上の単一EB/SEBに基づくプログラムを実行することが可能になる。本明細書において、各スレッドはEBのシーケンスを実行する。EBはヘッダー及び幾つかのSEBコードセグメントからなる。ヘッダーは、そのサイズ、使用されたタイル及び命令様式である復号情報を供する。それは以下に説明する通り、次に続くブロックの静的予想に関する情報も埋め込み得る。EBはクラスタに対するSEBセグメントを保持し、それを二次元コードにする。一次元はタイルインデックスに関連し、そして二次元はSEBにおける連続命令順序に関連する。この二次元のコードは二つの実施欠陥を有する。その第一は、キャッシュライン組織が、幾つかのタイルが使用され得ないというように、更に変わり得るクラスタサイズにフィットし得ないことである。キャッシュは異なるクラスタによってもシェアされ得る。キャッシュとタイルの間のコード整列も、実行頻度が低い部分におけるコード圧縮のためにコンパクトな命令様式を使用することによって変わり得る。第二の欠点は、SEBが同じEBにおいて非常に異なるサイズを有し得ることである。それらの問題故に、EBコードレイアウトは固定されたキャッシュの実行に完全には依存しない。それは、空の命令の使用が制限された可変サイズのSEBを表すことに対しても柔軟である。EBコードレイアウトは、主命令メモリ空間中のSEB命令の一次元シーケンスからなる。命令はEBにおけるそれらの相対的なアドレスによって順序付けられる。各命令は、EBがクラスタ上に装填されるときに、それらの相対的なアドレスと一緒に独立したSEBセグメントの構築を可能にするそのSEBインデックスによって前付けされる。この工程中に、図12において示された第一のEB復号段階は、ヘッダー、それらの順序及びそれらの接頭インデックス情報に基づいて、それらの各タイルにSEB命令をディスパッチする。EBコードレイアウトの例が図15において示される。EB内容が図15aにおいて示され、それは4つのタイルのクラスタに対するSEBを保持している。そのSEBの全てが同じ命令カウントを有するわけではない。その論理的内容は、図15bにおいて示されたSEB命令のシーケンスからなる。最も重要でないアドレスは内部ラインであり、一方、最も重要なアドレスはラインインデックスを伴って増加し、これは、極めて小さい命令がキャッシュインデックス空間においてアドレスされるのと同じように、各SEB命令に相対的な位置を与える。同じタイルを目標としている二つの命令が同じラインに属するとき、ライン中の第一の命令は最初に装填され、一方、第二の命令は次のサイクルを待つ。その例において、図15bの第三のラインにおける、タイル1を接頭辞として持つ二つの命令は、第一のinsn1.2が第二のinsn1.3、ひいてはタイル1のSEBにおけるそれらの相対的な位置2及び3、に先行するように順序付けられる。物理的キャッシュ組織の独立性が図15b及びcに示されており、ここで、同じEBは二つのキャッシュ装備中に記憶される。bにおいて、キャッシュのラインは4命令幅であり、そしてcにおいて、それらは2命令のみからなる。タイル接頭を用いた第一の復号段階における命令発信によって、コードをパッドするためにタイル整列、ひいては空の命令の使用を維持する必要なしに、EBにおけるパックSEB命令が可能になる。図15b及びcは、図15aにおいて、SEBは非常に異なるサイズを有するものの、一つの空の命令のみが挿入される必要があることを示す。些細な整列された実行は、14の有用なものに対して10の空の命令を必要としたであろうし、それは42パーセントの使用されないエントリに繋がる。EBの実行中に、図12において示されたLINE-REGレジスタを用いてEBキャッシュからSEBバッファにブロックが一行一行装填される。ラインによって組織化されたこのブロックレイアウトによって、第一の命令ラインがEB実施の初期のスタート時に装填されたとき、SEB実施を既に始めることが可能になる。各命令のタイルインデックス接頭辞に基づいて、復号部は命令を、もしそれらがタイルに対応したラインに組織化されていないとしても、それらの各タイルにディスパッチする。タイルインデックス接頭辞は柔軟であり、そしてキャッシュのサイズ及びそれらのあり得る実行スロットに基づいて、コンパイラがEB中に命令を置くことを可能にする。二つの実行レベルと一緒に、二つの分岐レベルがある。SEBレベルによって、SEB内部でのみ命令の間で分岐することが可能になり、一方、EBレベルで、分岐がEBの間で実行される。EB分岐命令は正常な命令のように実行され、そしてSEBの部分である。EBがクラスタ全体に対するコードを供する故に、EB分岐が起きるとき、クラスタ中の全てのタイルはそれらの新しいSEBに分岐しなければならない。各タイルにおけるローカルな制御のせいで、専用の制御命令は、クラスタの各タイルにおいて実行されなければならない。それにも拘わらず、タイル中の全ての分岐命令は同じではない。一つのEB分岐命令のみがクラスタの一つのタイルにおいてのみ実行され、他とタイルは、EBの実行中に装填される次のSEBを待つ。このSEB待機は、取っておかれたアドレスを目標とするローカル分岐によって実行され、それはタイルが、実行のために装填される最初の次のSEB命令を待つことを意味する。EB分岐の例が図16において示される。三つのEBがそれらのSEBと共に表される。この図において、命令接頭辞はブロック分岐に関係する分岐フィールド内容を表す。条件分岐はCBと記され、そして別のタイルにおいて発行されるブロック分岐に対する待機はWと記される。EB分岐実施は、この例においては、insn1.1と一緒にローカル条件分岐CBを実行することによって始まる。もし、それが取られるならば、EB分岐命令、EB-BR2、が実行され、さもなければ続く命令、EB-BR1、が実行される。EB-BR1はEB3を目標とし、一方、EB-BR2はEB2を目標とする。この分岐の結果とは独立して、タイル2、3及び4は、新しいSEBの待機、W分岐命令、を実行することによって新しいSEBを待つ。新しいSEBの待機は、現在のSEBが終了するときに実行される。EB2及びEB3の両者は非条件ブロック分岐、EB-BR、の実行と共に終わる。尚、新しいSEBの待機、W、は二つの機能を有する:iローカルSEBバッファメモリが、予期せぬ命令の破壊なしに、新しいSEBによって安全に上書きされることを可能にすること、そしてii少なくともその最初の命令が動作可能であるとき、新しいSEBを用いた実行を始めること。EBがキャッシュ中にあり、そして全てのタイルにおいて実行が終了しているとき、EB分岐に対するペナルティは四つのサイクルである:一つ目のサイクルは新しいアドレスをEBコントローラに供する分岐命令を実行すること、第二のサイクルは第一のブロックラインをEBキャッシュからフェッチすること、第三のサイクルはローカルSEBバッファにそれを書き込むこと、最後の第四のサイクルはこの命令をタイルのタイル制御レジスタにローカルに引き込みそして書き込むことである。新しいEBからの第一の命令は、次いで、次の続くサイクルが実行されるべく動作可能になる。タイルが動作可能であるときに、ローカルSEBバッファをバイパスすることによって、この分岐のペナルティを3つのサイクルに減ずること、そして直接的に復号すること及びタイル制御レジスタに命令をディスパッチすることが可能である。これを行っているとき、ローカル分岐のせいで追加できる、あり得る将来の実行のために、命令の複写が、ローカルSEBバッファ中にやはり書き込まれる。EBの間の分岐には、EB分岐命令実行と新しいSEB実行の間で少なくとも3つの時間サイクルがかかる。この遅延耐性を緩和するために、ローカルSEBバッファは二つのSEBを保持させられる。図17において示された通り、ローカルSEBバッファは二つのSEB、SEB0及びSEB1を保持する。SEBが実行されている最中に2、新しいものがバッファの第二の部分中に装填され得る1。従って、新しいEBは、前のEBの直後に装填され始められ得る。有利な点は、現在のSEBがその実行を終了し、そして新しいものが動作可能になるとき、それがペナルティなしで直ちに実行され得ることである。図においてSと称される状態ビットは、バッファの二つの部分に対してローカルアドレスの最高のオーダのビットを供する。それはバッファの二つの部分の間を切り替えるEB分岐でトグル留めされるtoggled。現在のものが終了しないまま新しいEBを前もってフェッチするためには、EBの実行は連続的でなく、そしてEB分岐命令がまだ実行されていない故に、新しいアドレスを供することが必要である。このアドレスは、実行されるべき最もふさわしい続くブロックとして、現在のEBのヘッダー中に提供される。これは続くブロック分岐に関する静的予測に対応する。次の続くEBアドレスが、既にバッファ中にある二つのEBの一つに合致するとき、それはEBキャッシュから再び装填されず、その代わりにバッファから直接再使用される。このブロックの再使用によって、バッファの二つの部分に広がるループカーネルを、常にブロックを装填する、又はSEB実行のためのバッファの半分だけを使用するというペナルティを引き起こさずに、繰り返して実行することが可能になる。従って、二つの部分SEBバッファは完全に使用される。実行されることになりそうなブロックの次のEBアドレスは、現在のブロックのヘッダー中のコンパイル-時間に記録される。従って、このブロックを目標にしているEB分岐命令は、それがヘッダー中に既に存在することをコンパイラが知っている故に、このアドレスを再び供することを必要としない。従って、それらのEB分岐命令は、取っておかれたローカル目標アドレスを目標とするローカル分岐命令として単純に実行される。そのようなローカル分岐命令が実行されるとき、それは既にバッファ中にある次の予想されるブロックアドレアスを目標とするブロック分岐として解釈される。更に、それはバッファの他の部分の第一の命令に対するローカル分岐命令として実行され得る。従って、静的な次のブロック予想が正しいとき、そして少なくとも最初の次のSEB命令が前もって取り出されており、又はバッファ中で有効であるとき、ブロック分岐ペナルティは、ゼロサイクルであるローカル分岐ペナルティと同じである。或る好ましいそのバージョンを参照して、本発明が可成り詳細に述べられてきたものも、他のバージョンも可能である。従って、添付された請求項の精神及び範囲は、ここに含まれる好ましいバージョンの記述に制限されるべきではない。読む人の注目は、この明細書と同時に提出され、そしてこの明細書と共に公に調べられる全ての論文及び文献に向けられ、そして全てのそのような論文及び文献の内容が本明細書に参照することにより取り込まれているものとする如何なる添付請求項、要旨及び図面をも含む。この明細書において開示された全ての特長は、別に明確に記載がない限り、同じ、同等又は類似の目的を果たす代替の特長によって置き換えられ得る。別に明確に述べられない限り、開示された各特長は、同等又は類似の特長の一般的なシリーズの一例に過ぎない。参照文献21AJerrayaandWWolfMultiprocessorSystemsonChipsElsevier200431BBougardBDeSutterDVerkestLVanderPerre及びRLauwereinsACoarseGrainedArrayAcceleratorforSoftwareDeffnedRadioBasebandProcessingMicroIEEEvol28pp4150JulyAug200832HSinghMHLeeGLuFKurdahiNBagherzadeh及びEChavesFilhoMorphoSysanintegratedreconfigurablesystemfordataparallelandcomputationintensiveapplicationsComputersIEEETransactionsonvol49pp465481May200033VBaumgarteGEhlersFMayANMVorbach及びMWeinhardtPACTXPPselfreconfigurabledataprocessingarchitectureTheJournalofSupercomputingvol26pp167184September200334PHeystersGSmitEMolenkamp及びGRauwerdaFlexibilityoftheMontiumCoarseGrainedReconfigurableProcessingTilein4thPROGRESSSymposiumonEmbeddedSystemsNieuwegeinTheNetherlandspp102108200335MButtsSynchronizationthroughCommunicationinaMassivelyParallelProcessorArrayMicroIEEEvol27pp3240SeptOct200737MTaylorJKimJMillerDWentzlaffFGhodratBGreenaldHHoffmanPJohnsonJWLeeWLeeAMaASarafMSeneskiNShnidmanVStrumpenMFrankSAmarasinghe及びAAgarwalTheRawmicroprocessoracomputationalfabricforsoftwarecircuitsandgeneralpurposeprogramsMicroIEEEvol22pp2535MarApr200260SPasricha及びNDuttOnchipcommunicationarchitecturessystemonchipinterconnectMorganKaufmann200861LBenini及びGDMicheliNetworksonChipstechnologyandtoolsMorganKaufmann200664MTaylorJPsotaASarafNShnidmanVStrumpenMFrankSAmarasingheAAgarwalWLeeJMillerDWentzlaffIBrattBGreenwaldHHoffmannPJohnson及びJKimEvaluationoftheRawmicroprocessoranexposedwiredelayarchitectureforILPandstreamsinComputerArchitecture2004Proceedings31stAnnualInternationalSymposiumonpp213June200466MButtsAMJones及びPWassonAstructuralobjectprogrammingmodelarchitecturechipandtoolsforreconfigurablecomputingFieldProgrammableCustomComputingMachinesAnnualIEEESymposiumonvol0pp5564200767DKisslerFHannigAKupriyanov及びJTeichAdynamicallyreconfigurableweaklyprogrammableprocessorarrayarchitecturetemplateinInternationalWorkshoponReconfigurableCommunicationCentricSystemonChipspp3137200671RBajwaMHirakiHKojimaDGornyKNittaAShridharKSeki及びKSasakiInstructionbufferingtoreducepowerinprocessorsforsignalprocessingVeryLargeScaleIntegrationSystemsIEEETransactionsonvol5pp417424Dec199772MJayapalaFBaratTVanderAaFCatthoorHCorporaal及びGDeconinckClusteredloopbufferorganizationforlowenergyVLIWembeddedprocessorsComputersIEEETransactionsonvol54pp672683Jun200573TVAaMJayapalaHCorporaalFCatthoor及びGDeconinckImpactofILPimprovingCodeTransformationsonInstructionMemoryEnergyinProcof11thWorkshoponInteractionbetweenCompilersandArchitecturespp443448200778JDennis及びDMisunasApreliminaryarchitectureforabasicdataowprocessorACMSIGARCHComputerArchitectureNewsvol3no4pp126132197479GPapadopoulos及びDCullerMonsoonanexplicittokenstorearchitectureinProceedingsofthe17thannualinternationalsymposiumonComputerArchitecturepp8291ACMNewYorkNYUSA199080ADavisThearchitectureandsystemmethodofDDM1ArecursivelystructuredDataDrivenMachineinProceedingsofthe5thannualsymposiumonComputerarchitecturepp210215ACMNewYorkNYUSA197881MKishiHYasuhara及びYKawamuraDddpadistributeddatadrivenprocessorinProceedingsofthe10thannualinternationalsymposiumonComputerarchitecturepp236242ACMNewYorkNYUSA198382MAmamiyaMTakesueRHasegawa及びHMikamiDFMthedataowmachinehighlyparallelsymbolmanipulationinProceedingsofthe1987FallJointComputerConferenceonExploringtechnologytodayandtomorrowpp602611IEEEComputerSocietyPressLosAlamitosCAUSA198783YPattWHwu及びMShebanowHPSanewmicroarchitecturerationaleandintroductioninProceedingsofthe18thannualworkshoponMicroprogrammingpp103108ACMNewYorkNYUSA198584YPattSMelvinWHwu及びMShebanowCriticalissuesregardingHPSahighperformancemicroarchitectureinProceedingsofthe18thannualworkshoponMicroprogrammingpp109116ACMNewYorkNYUSA198585SWeiss及びJSmithInstructionissuelogicforpipelinedsupercomputersACMSIGARCHComputerArchitectureNewsvol12no3pp110118198486JSmithandGSohiThemicroarchitectureofsuperscalarprocessorsProceedingsoftheIEEEvol83no12pp16091624199587RTomasuloAnefficientalgorithmforexploitingmultiplearithmeticunitsIBMJournalofresearchandDevelopmentvol11no1pp2533196788RKesslerらThealpha21264microprocessorIEEEmicrovol19no2pp2436199989SMcFarlingCombiningbranchpredictorstechrepTechnicalReportTN36DigitalWesternResearchLaboratory199390JSmith及びAPleszkunImplementingpreciseinterruptsinpipelinedprocessorsIEEETransactionsonComputersvol37no5pp562573198891SSwansonKMichelsonASchwerin及びMOskinWaveScalarinProceedingsofthe36thInternationalSymposiumonMicroarchitectureCiteseer200392SSwansonASchwerinMMercaldiAPetersenAPutnamKMichelsonMOskin及びSEggersThewavescalararchitectureACMTransactionsonComputerSystemsvol25No2p4200793KKaviRGiorgi及びJArulScheduleddataowexecutionparadigmarchitectureandperformanceevaluationIEEETransactionsonComputerspp834846200194KSankaralingamRNagarajanHLiuCKimJHuhDBurgerSKeckler及びCMooreExploitingILPTLPandDLPwiththepolymorphousTRIPSarchitectureinProceedingsofthe30thannualinternationalsymposiumonComputerarchitecturep433ACM200395MHomewoodDMayDShepherd及びRShepherdTheIMST800transputerIEEEMicrovol7no5pp1026198796ADullerGPanesar及びDTownerParallelProcessingthepicoChipwayCommunicatingProcessingArchitecturespp125138200397ZYuMMeeuwsenRApperson0SattariMLaiJWebbEWorkDTruongTMohsenin及びBBaasAsAPAnasynchronousarrayofsimpleprocessorsIEEEJournalofSolidStateCircuitsvol43no3p695200898MButtsBBudlongPWasson及びEWhiteReconfigurableWorkFarmsonaMassivelyParallelProcessorArrayinFieldProgrammableCustomComputingMachines2008FCCM0816thInternationalSymposiumonpp206215April200899Tilerahttpwwwtileracom100CMoritzDYeung及びAAgarwalExploringoptimalcostperformancedesignsforRawmicroprocessorsinFPGAsforCustomComputingMachines1998ProceedingsIEEESymposiumonpp1227Apr1998101HCorporaal及びHMulderMOVEAframeworkforhighperformanceprocessordesigninProceedingsofthe1991ACMIEEEconferenceonSupercomputingpp692701ACMNewYorkNYUSA1991102HCorporaal及びMArnoldUsingtransporttriggeredarchitecturesforembeddedprocessor103JLeijtenJvanMeerbergenATimmer及びJJessPROPHIDadatadrivenmultiprocessorarchitectureforhighperformanceDSPinProceedingsofthe1997EuropeanconferenceonDesignandTestIEEEComputerSocietyWashingtonDCUSA1997104KGoossensJDielissen及びARadulescuAetherealnetworkonchipconceptsarchitecturesandimplementationsIEEEDesignandTestofComputersvol22no5pp4144212005105WHwuSMahlkeWChenPChangNWarterRBringmannROuelletteRHankTKiyoharaGHaabらThesuperblockaneffectivetechniqueforVLIWandsuperscalarcompilationTheJournalofSupercomputingvol7no1pp2292481993