(57)【要約】  本発明は、命令を平行して実行し、そしてデータ通信リンク（ＤＣＬ）と呼ばれる１対１通信リンクと一緒に接続される処理要素を含むプロセッサに関する。本命令はそれらの間でデータを通信するためにＤＣＬを使用する。それらの通信を実現するために、それらは、それらがそれらのオペランドをそこから取るＤＣＬ、及びそれらがそれらの結果をそこに書き込むＤＣＬを特定する。ＤＣＬによって、命令がそれらの実行を同期化すること、そしてそれらが操作するデータを明確に管理することが可能になる。通信は明確であり、そして長期間生きている変数の記憶から連結解除される一次的変数の記憶を実現するために使用される。【選択図】図１
2013529322.tif 000002
【特許請求の範囲】
【請求項１】
命令のスレッドを並行して実行することを可能にするプロセッサであって、
一つ又はそれ以上の命令を含んでなる複数の命令バンドルを含んでなる、一つ又はそれ以上の命令メモリ；
データを記憶でき、そして以下を含んでなる複数の１対１通信手段（以下データ通信リンクという）、
書き込み操作を行なうことによってデータを書き込むことができ、そして書き込み操作の可用性に関する情報を得ることができる書き込みポート、
書き込み操作を行なうことによって該書き込みポート上で以前に行なわれた書き込み操作のシーケンスに関して事前に定義された順序に従ってデータを読み取ることができ、そして読み取り操作の可用性に関する情報を得ることができる読み取りポート；
複数の処理手段（以下処理要素という）、
ここで、上記命令は、一つ又はそれ以上の上記データ通信リンク読み取りポートから得られた入力データを処理することによって実行され、そしてその実行によって生み出されたデータを一つ又はそれ以上の該データ通信書き込みポートに書き込むことによって実行され、
ここで、データ通信リンク中に記憶されたデータは、命令データに基づいて、該データ通信リンクによって提供された該読み取り操作及び書き込み操作を行なうことによって明示的に管理され得る；
を含んでなり、
ここで、該処理要素上で実行された命令の間のデータ通信は、該データ通信手段を使用してのみ行なわれ、
ここで、該処理要素上の該命令の実行は、該データ通信リンクによって提供される読み取り操作及び書き込み操作の情報可用性に基づいて同期化され、
ここで、各命令メモリに対して、実行するための次の上記命令バンドルのアドレスを提供する分岐ユニットである該処理要素の一つが存在する、
上記プロセッサ。
【請求項２】
前記処理要素が、タイルに更にグループ化され、
一組の前記データ通信リンク読み取りポートが該タイル入力部に接続され、そして該タイル処理要素の間でシェアされ、そして
一組の該データ通信リンク書き込みポートが該タイル出力部に接続され、そして該タイル処理要素の間でシェアされ、そして
該通信リンクの一つ又はそれ以上が、一つのタイル出力部に接続されたそれらの書き込みポート、及び異なるタイル入力部に接続されたそれらの読み取りポートを有し、
同一の該タイル中において実行された上記命令が、上記実行された命令データにおいて特定された優先度に基づいて事前に定義された順序に従う、
請求項１に記載のプロセッサ。
【請求項３】
前記タイルがクラスタに更にグループ化され、ここでクラスタが各々、
単一命令メモリ、
単一分岐ユニット処理要素、
を含んでなり、
ここで、該クラスタ命令メモリが、該クラスタ分岐ユニットによって提供された前記アドレスに基づいて、各該クラスタタイルに命令バンドルを提供する、
請求項２に記載のプロセッサ。
【請求項４】
幾つかの処理要素が、プログラム長寿命変数の記憶を可能にする記憶手段である、請求項３に記載のプロセッサ。
【請求項５】
データ通信リンクが、以下を含む更なる操作；
該通信リンク中に記憶されたデータを消費しないデータ読み取り操作、
書き込み操作が利用できないときでさえ、該データ通信リンク中への書き込み操作を強制するデータを書き込み操作、
該データ通信リンク中に記憶された全てのデータを消すフラッシュ操作、
を実行できる、請求項４に記載のプロセッサ。
【請求項６】
各処理要素が、
命令データ、処理要素入力データ通信リンク可用性情報、及び処理要素出力データ通信リンク可用性情報に基づいて制御信号を提供する一つの制御手段を更に含み、
各タイルが、
処理要素における命令実行調整を取り扱うための制御信号を提供し、そして処理要素において実行される命令のための最後の実行サイクルを知らせる制御信号を提供する一つの制御手段を更に含み、
各クラスタが、
上記タイル制御手段によって提供された制御信号に基づいて、クラスタが次の命令を実行できることを知らせる制御信号を提供する制御手段を更に含む、
請求項５に記載のプロセッサ。
【請求項７】
全ての制御手段が単一の制御手段中に集中させられる、請求項６に記載のプロセッサ。
【請求項８】
各々のタイルが、
上記データ通信リンク読み取りポートに接続された、一つ又は幾つかの入力ポートを含んでなり、
処理要素入力部に接続された、一つ又は幾つかの出力ポートを含んでなる、
一つの選択手段であって、
ここで、前記処理要素制御手段の各々に、一つ又はそれ以上の該データ通信リンク読み取りポート読み取り操作可用性についての情報が、該処理手段の制御手段からの制御信号に基づいて提供され、
ここで、各々の該処理要素入力部に、一つ又はそれ以上の該データ通信リンク読み取りポートからのデータが、該処理要素制御手段からの制御信号に基づいて提供され、
ここで、該データ通信リンク読み取りポート上で、該処理要素制御手段からの制御信号に基づいて操作が行なわれる、該選択手段；及び
処理要素出力部及び該処理手段の制御手段に接続された、一つ又は幾つかの入力ポートを含んでなり、
該データ通信リンク書き込みポートに接続された、一つ又は幾つかの出力ポートを含んでなる、
一つの分配手段であって、
ここで、該データ通信リンク書き込みポート書き込み操作可用性についての情報が各々の該処理手段の制御手段に提供され、
ここで、該処理要素制御手段からの制御信号に基づいて、該処理要素出力部から、一つ又は幾つかの該データ通信リンク書き込みポートに、データが提供され、
ここで、該処理要素制御手段からの制御信号に基づいて、該データ通信リンク書き込みポート上で操作が行なわれる、該分配手段；
を更に含む、請求項６に記載のプロセッサ。
【請求項９】
各タイルが複数の選択手段を更に含み、ここで、各タイル処理要素入力部が、一つ又は幾つかのグループに分割され、そして分離された該選択手段が各グループに割り当てられ、そして全てのタイルデータ通信リンク読み取りポートのサブセットのみが該選択手段入力部に接続され、
各タイルが複数の分配手段を更に含み、ここで、データ通信リンク書き込みポートが幾つかのグループに分割され、そして一つの分離された該分配手段が各グループに割り当てられ、そしてここで、処理要素出力部のサブセットのみが該分配手段入力部に接続される、請求項８に記載のプロセッサ。
【請求項１０】
前記命令メモリが、クラスタ制御手段に、フェッチされた命令バンドルの可用性を通知する信号を提供する、請求項６に記載のプロセッサ。
【請求項１１】
ａ）各クラスタ命令メモリから命令バンドルを読み取るステップ、
ｂ）前記処理要素にデータを提供する命令によって特定されたデータ通信リンクが読み取り操作に全て利用できるとき、そして該処理要素によって計算されたデータを受け取る命令によって特定されたデータ通信リンクが書き込み操作に全て利用できるとき、処理要素中の命令を実行するステップ、
ｃ）命令によって特定された通りに、データが分配されるデータ通信リンク上で書き込み操作を行なうステップ、
ｄ）命令によって特定された通りに、データを、機能ユニットに提供するデータ通信リンク上で読み取り操作を行なうステップ、
ｅ）分岐ユニット中にフェッチするために次の命令バンドルのアドレスを計算すること、
ｆ）現在のバンドルからの全ての命令が実行されたとき、次の命令バンドルのフェッチを要求するステップ、
を含んでなる、請求項３に記載のプロセッサ上でプログラムを実行させる方法。
【請求項１２】
命令実行ステップは、前記タイル中で実行される命令が、該タイル中でより高い優先度を有する全ての他の命令が最初に実行されている場合にのみ実行できることをベリファイして、各タイル内部での命令実行を更に制約する、請求項１１に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
埋め込み型システムは、一般的に実時間制約下で、幾つかの特定の機能を実行するために専用化された（dedicated）より大きなシステムのコンピュータシステム部分である。それらは制御用に、並びにデータ又は信号の処理用に使用される。それらは多くの利用分野、なかでも：遠距離通信、自動車、工業的制御、電力変換、軍事、航空電子工学、航空宇宙科学、家電製品及び家電、において存在する。埋め込み型システムの例は、携帯電話の端末（handsets）及び基地局、搭載レーダー、ネットワークルータ、モデム、ソフトウエアで定義された無線通信端末、エンジンコントローラ、衛星飛行コンピュータ、ＧＰＳ位置測定端末、セットトップボックス又はデジタルカメラである。埋め込み型システムは、一般にそれらの操作環境又は信頼性要求事項の故に高度に制約される。エンジン制御、油田掘削又は軍事用途は厳しい温度要求事項を有し得て、一方、航空電子工学及び航空宇宙科学では放射線に暴露される。携帯電話の端末は、冷却によって、電池の自律性及びそれらの基地局によって制約される。
【０００２】
埋め込み型アプリケーションはエンドユーザに機能性を提供している製品の部分である。それらの機能性は、各々の新製品世代で、より多くの機能性又は増大された処理量を供給することによって市場の需要を駆り立てる（driving）ロードマップによって一般的に定義される。各新世代でのこの機能性向上は、埋め込み型プラットフォーム上で実行されるより複雑なプログラムに繋がるが、単一のプラットフォーム上で支えられる幅広い種類のプログラムにも繋がる。新しい規格（standard）では、より多くの計算能力を意味するより高いデータ処理能力（data throughput）が要求され、それらは、より高い処理能力の要求事項に達することができる先端的なアルゴリズムも使用する。一例は、最高の処理能力のための適応チャンネル能力を有する、はるかにより複雑な多入力多出力の直交周波数分割多重化に対する、低速データ伝達のための位相偏移変調波形（phase shift keying waveforms）を用いた遠距離通信規格の進化である。先端的応用及びアルゴリズム支援によって計算がより複雑になる。事実、初期の規格において実行された単純な画像及び信号の処理アプリケーションを用いると、数個の命令だが非常に高い繰り返しカウント及び非常に単純な制御経路を有する小さなカーネルにおいて、全ての計算負荷がほとんど実行されない。それらの簡単なカーネル志向アルゴリズムによって、高レベルの平行性を容易に開発することが可能であり、そして専用のハードウエアアクセラレータにおいて容易に実行することが可能である。新しい先端の複雑な規格を用いると、制御経路が重要になり、それは平行化が困難な連続コードの重要な部分に繋がる。更に、複雑な制御経路は、高度計算カーネルの内部にさえ存在し得て、専用のハードウエアを使用してそれらを実行することを困難にする。別の主要な偏移（shift）は、規格がハードウエア実行によって完全には定義されないがソフトウエアを使用して動的に構成されるソフトウエアで定義されるアプリケーションに向けられる。最も先進的なものは、多数の遠距離通信規格に対抗するソフトウエアで定義されたラジオである。それは、カスタム機能を実現するために、サービスを動的に構成することを可能にするアプリケーションによって呼び出される規格ソフトウエアインタフェースを供することを目的とする。
【０００３】
要約すると、将来の埋め込み型アプリケーションを支援するには、より高い計算処理能力を有し、より複雑な機能性を支えることが要求される。完全にソフトウエアエで定義されたアプリケーションまでの先進的機能及び複雑なアルゴリズムを支持するための高いプログラム化可能性能力も要求され、これらすべては実時間の制約下にある。
【０００４】
ホスト埋め込み型システムに専用化された埋め込み型プラットフォームは、それらの環境によって制約されるものである。それらは、１平方センチメータのシリコン表面が既にデスクトップマルチコアプロセッサを含むことができる故に、シリコンチップの計算能力によって制限されるものではない。埋め込み型システムは、それらの合計電力消費によって厳しく制約される。事実、それらのほとんどは限られた電池能力及び各新製品世代で貧弱な改善を有する電池駆動型である。電池駆動型でないシステムに対して、システムの電力消費に起因する加熱は、統合された環境において取り扱いが困難な冷却問題に繋がる。それは、例えば、アンテナの近くに統合されている間、非常に集中的な計算負荷を必要とする、同時に数千の通信を取り扱う必要のある携帯電話基地局の場合である。自動車アプリケーションにおけるエンジン制御に対するような高温環境において、冷却能力は更に制限される。そのような問題故に、電力消費は、将来の埋め込み型計算プラットフォームが対処しなければならない主たる制約である。
【０００５】
埋め込み型プラットフォームの実行に対して使用されるシリコン技術も制限に直面しなければならない。技術的な縮小に伴って、約１８カ月又は２年毎の新しい技術ノード毎にトランジスタの数は倍化する。問題は、トランジスタの縮小と一緒に、それらの電力消費に関して、限られたトランジスタのスケーリングしかないことである。最高級のＥＰＧＡプラットフォームにおいて、それは容易に観察できて、それらが同じ周波数で運転するとしても、トランジスタの電力消費において実質的な削減が全くなく、各新世代でダブルゲートリソースを提供し、部品の電力消費において全体的な増加をもたらし、それらの使用を劇的に制限している。この貧弱なトランジスタの電力低減は、６５ｎｍ未満のディープサブミクロン技術ノードにおいて更に悪化する。このノードの後、プラットフォームの向上故に、電力消費の増大を解決するためにもはや技術スケーリングには頼ることができない。更に、ディープサブミクロン技術ノードは、ここ数十年間の場合そうであったように、容易なゲートカウントプロバイダとしてのそれらの使用に対して更なる制限を引き起こす。それらの制限はプロセス変更及び漏洩である。プロセス変更は製造の危険物の故であり、それは単一部品に亘るトランジスタの重要な電気的な特性の変更に繋がった。プラットフォームレベルでは、これは、非常に低い保守頻度で運転すべき全体のチップに亘って広がる単一の幅広い同期設計をもたらす。漏洩によって、それらが使用されないとしても、トランジスタの電力消費が増える。それらは特に、電力が制約された埋め込み型アプリケーションにおいての高い閾電圧（Ｖｔｈ）の使用を課する。電力供給電圧（Ｖｄｄ）の二乗に比例する動的電力消費を下げるために、Ｖｄｄもできるだけ低減される。運転頻度を強く緩和する高いＶｔｈを維持しながらのＶｄｄのこの低下は、新しい技術ノードと共に増大する。事実、埋め込み型プロセスに対して、９０ｎｍノード以来、周波数の改善は全く支援されていない。
【０００６】
アプリケーション的に、高いレベルのプログラム化可能性を有する、より高い計算処理能力が要求され、一方で本技術は、より高いトランジスタカウントをやはり供することが要求されるが、それらの電力消費は著しくは低下していない。それは、限られた許容電力（power budget）のせいで、全電力消費を低減するという埋め込み型の制約と明らかに合致しない。将来の埋め込み型処理プラットフォームに及ぼすそれらの相容れない制約の影響は以下の要求事項に繋がる：
・複雑な制御経路を有する複雑なアルゴリズム及びソフトウエアエで定義されたアプリケーションを支援するための高いプログラム化可能性
・限られた操作頻度を用いて高い計算の必要性を支援するための高レベルの平行性
・将来の技術ノードを使用しながら、限られた電力量において高い計算負荷を支援するためのワット当たりの操作に関する高電力効率。
【０００７】
既存のアプローチ
埋め込み型プラットフォームの要求事項を実現するために今日使用される主要な方法は不均一マルチコアである。本明細書において、コアはＧＰＰ（汎用プロセッサ）デジタル信号プロセッサ及び専用のアクセラレータであってよい処理リソースである。制限された周波数のせいで、補助プロセッサの支援を受けるとしても、単一のプロセッサコアを使用する完全なアプリケーションを支援することができない故に、マルチコアは全体的な平行性実施を増すために使用される。不均一性は、電力効率を改良するための領域に特定なアクセラレータを使用することに由来する。プラットフォームは、バスによって接続されたアクセラレータに囲まれたＧＰＰの回りに常に構築される。アクセラレータは、定義された機能の殆ど専用化されたハードウエア実装であるか、又は特定のアルゴリズム領域内で限られた構成可能性を有する。
【０００８】
将来の埋め込み型計算プラットフォームに対してその使用を制限している、この方法によって引き起こされる四つの主要な課題がある。第一は、非常に高い専用のアクセラレータカウント「ＲＥＦ」に繋がる多くの領域及び領域内の多くの規格でさえあることである。異なるアクセラレータは、処理能力及び実時間制約に依存して単一領域内でさえ使用できる。不均一マルチコアを用いる第二の課題は、それらが、アプリケーションの正確なセットのために設計される複雑なプラットフォームであることである。従って新しいアプリケーションを、特に、より進んだ規格のために既存のプラットフォームの上に効率的に構築することは困難である。これは、例えば、携帯電話の端末プラットフォームを用いる場合であるように、機能性のセットの修正を伴う頻繁な再設計に繋がる。第三の課題は、アクセラレータのカウントと共に増加するシリコン領域に伴うものである。不均一マルチコアは、それらの殆どが実際に同時に使用されない故に、シリコンの活用に劣る。第四のそして最後の課題は、それらの不均一プラットフォームをプログラミングするときに引き起こされる。それらは不均一部品をグループ化する故に、それらは利用可能なリソースに亘ってアプリケーションを分けるためにコストがかさむ手動の介入を必要とする。更にこの使い分けはプラットフォームに依存し、そして不適切なリソース上で仕事を実行する法外なコストを引き起こすことなく、全てのリソース能力の便益を享受するために非常に正確であることを必要とする。これによって、プラットフォームが変わるときに、低組立レベルへのアプリケーションレベルで出発して、使い分けを再びしなければならないということになる。従って、プラットフォームに依存する使い分けは、再使用可能性の課題及びコストオーバーヘッドを引き起こす。
【０００９】
不均一マルチコアと一緒に、他の低電力技術が使用される。アーキテクチャー的の観点から最も重要なものは島ベースのＶｄｄスケーリングである。この方法を用いると、電力消費を更に最小化するために、チップが、異なるＶｄｄ及び速度で操作できる島に分けられる。Ｖｄｄは各島の実時間制約に依存して動的に調節される。各タイルにおける可変速度によって、島間の通信ネットワークにおける遅延耐性（latency tolerant）の問題が持ち込まれる。遅延耐性に耐えるために、チップの異なるタイルは、メソクロノスクロック同期を支援しているＦＩＦＯ（先入れ先出し）通信リンクを通して接続される。島ベースの方法は、大きなチップにおけるプロセス変更に抗するための主なアーキテクチャー解法として予知される。
【００１０】
現在の不均一マルチコア方法は、規格の要求事項及びサービスの急速な成長に追随することが非常に困難である。非常に大量生産のそれらの端末の便益によって設計コストの償却が可能になっているとしても、不均一マルチコア解決法を用いて今日実行されている携帯電話の端末プラットフォームでさえ、それらの制限に直面しなければならない。専門的な電子アプリケーションにおける場合がそうであるように、非常な大量生産によって駆り立てられない他の市場は、シリコン、設計及びプログラミングの法外なコストのせいで、この方法を取ることができない。それらの理由のために、それらを低電力に保持しながら、それらのプログラム化可能性を改善することによって、アクセラレータに関してそれらをより柔軟にするよう、重要な研究及び改善がなされている。
【００１１】
アクセラレータの柔軟性を改善するための賢明な解決策は、ＳＩＭＤ（単一命令、複数データ）ベクトルプロセッサアーキテクチャーである。それはデスクトップ処理においてマルチメディアアクセラレータとしてしばらくの間、既に使用され、そして今日、ビデオ及びベースバンドの処理用の実際の埋め込み型プラットフォーム製品において使用されている。ＳＩＭＤによって、プログラム化可能性と電力効率の間の良好な妥協が提供される。それによって、単一アクセラレータを用いた幅広い種々の規格の実施が可能になる。しかしながら、アルゴリズムをベクトル化することが必要であり、そしてコンパイラ支援が実験的か又は非常に特定の言語構造に限られる故に、それをプログラムすることは非常に困難である。更に、それは連続コードを全く支援しない。そのため、それは不均一アクセラレータに繋がるＧＰＰ又はＶＬＩＭに関連付けて常に使用される。それは、期待される性能を得るために、手動でかつ非常に正確にプログラム化されることが必要である。アプリケーションがもっと複雑になったとき、ベクトル化の困難性故に、この解決策の性能及び電力効率が制限される。
【００１２】
電力効率の及びプログラム化可能なアクセラレータを作るためのより進んだ研究方法は、粗粒再構成可能処理配列である。それらによって実行時間で構成されるカスタムデータ経路を実施することが可能になる。構成は、構成コントローラ及び構成メモリ能力に依存して、各時計サイクルで書き換えることさえできる。それらは構成コントローラにおいて又は述部的実施（predicated execution）を使用することによって達成される限られた分岐支援を有する。従って、それらのアクセラレータ上で複雑な制御経路を有する連続コード又はカーネルを実行することは不可能である。ＳＩＭＤアーキテクチャーについては、コードの制御及び連続部分が、アクセラレータの隣の不均一ＧＰＰ又はＶＬＩＭ上で実行される。それらは長々しい手動プラグラミングを必要とするコンパイラの支援を全く有しない。それらは単一構成を使用するとき、又はそれらが連続構成メモリ装填において重要な電力消費オーバーヘッドに直面しなければならないとき、限られたカーネルサイズ支援を有する。再構成可能性の能力のオーバーヘッド故に、構成可能な相互接続組織の電力消費は高い。更に再構成可能な相互接続組織は、書き込み長さ及び容易にはパイプライン化され得ないそれらの高いファンアウト故に、遅延耐性を誘導する。従って、それらの操作頻度は非常に高くはない。
【００１３】
不均一マルチコアプラットフォーム問題に対する最後の主要解決策は均一マルチコア法である。それはこの仕事で使用された方法である。均一マルチコアは、最適化されたスカラーＲＩＳＣ、ＤＳＰ又はＶＬＩＷプロセッサのような高度にプログラム化可能なプロセッサコアの配列から構成される。配列中のプロセッサは、専用のプログラム化可能な又は再構成可能な通信ネットワークを通して一緒に接続される。それらは良好なコンパイラ支援の便益を得て、他の方法と比べて、手動介入が非常に少ないアプリケーションを構築することを可能にする。それらの均一なＩＳＡ（命令設定アーキテクチャー）は正確な分割を必要としない。それらは連続コードを実行でき、そして複雑な制御経路を有するカーネルを支援する。それらの実行可能な通信ネットワークのおかげで、それらは、幾つかのプラットフォームに対して数百のコアに達することができる非常に高レベルの平行性を開発できる。それにもかかわらず、それらの非常に良好なプログラム化可能性及び実現可能性に加えて、それらは、それらの完全にプログラム化可能なプロセッサコアの使用故に電力効率において制限される。低い電力にする単純なスカラーＲＩＳＣコアを用いて均一マルチコアが構築されるとき、それらは連続部分においてＩＬＰを開発できない。事実、それらは、アプリケーションの連続部分を実行するとき、それらの性能を制限してＩＬＰに対して非効率性を有する、コア間通信のための通信ネットワークを使用しなければならない。それらの電力効率も、コア間通信ネットワークオーバーヘッドによって低下させられる。
【００１４】
結論として、均一マルチコア法は、不均一マルチコアによって生じる多くの問題を解決する。全てのアプリケーション領域に対して同じ計算構造（computing fabric）が使用される。プラットフォーム設計は単純かつ一般的であり、そして多くのアプリケーションに対して再使用される。全てのコアはアプリケーションを問わず使用され得るため、良好なシリコン表面の利用に繋がる。それらは容易にプログラム化可能でありそして良好なコンパイラ及び非常に少ない手動介入を要求するツール支援の便益を得る。将来の埋め込み型システムによって生じる処理プラットフォーム制約に関して、それらは非常に高いプログラミング能力を有し、それらの実現可能性によって非常に高レベルの平行性の開発が可能になり、そしてそれらの比較的な単純さによって、実時間制約においてサービスの品質を保証するために必要なそれらのＷＣＥＴ（最悪の場合の実行時間）を容易に束縛することが可能になる。それにもかかわらず、完全にプログラム化可能なプロセッサコア及び非効率的な通信ネットワークをそれらが使用することによって、埋め込み型プラットフォームにおけるそれらの使用に対する主たる欠点である低い電力効率がもたらされる。
【００１５】
均一マルチコア法の使用によって、現在の不均一マルチコアプラットフォームの制限が解決されるとき、対処される必要がある課題は、非常に高い電力効率及び効率的なコア間通信支援を有するＩＬＰを開発できる完全にプログラム化可能なプロセッサコアを有することである。
【００１６】
関連文献：データフローアーキテクチャー
データフローアーキテクチャーが数十年に亘って研究されそして使用されてきた（７８、７９、８０、８１、８２）。完全なプロセッサコアとしての最初の公知の実行はＤｅｎｎｉｓによって７０年代初めに達成されている（７８）。データフローアーキテクチャーは細粒命令レベル平行性を開発するために、そして実施中の高レベルの平行性を得るために使用される。幾つかのアーキテクチャーは、コードの連続スレッドから平行性を自動的に得るためにデータフローさえも使用する。
【００１７】
一般的なデータフローモデルにおいて、操作されたデータはトークンを形成するためにタグで修飾される。これによって、データは中央コントローラを使用することなく極めて小さく操作され、そして互いの間で区別される。支持はオペランドとしてのデータトークンを消費し、そして結果としてのトークンを生み出す。それらは、独立した処理エレメント（ＰＥ）上でデータフロー発火規則（firing rule）に従って非同期的に実行される。このルールは、全てのそのオペランドが利用できるとき、命令が実行され得るということである。生み出された後、データトークンは記憶され、そしてそれらが命令によって消費されるまで待つ。
【００１８】
データフロー実施モデルを実行する二つの主要アーキテクチャーモデルがある。第一は、生み出されたデータとそれらの消費者命令を合致させるため、内容アドレス指定されたメモリにおいて動的なタグ比較を行う。第二のモデルはレジスタテーブルにおいて明確なトークン通信を使用する。レジスタは命令に関連付けられ、そしてインデックスによってアクセスされる。他のデータフローアーキテクチャーの殆どは、以下に詳細に述べられるそれらの二つのモデルに由来できる。
【００１９】
第一のデータフローアーキテクチャーモデルは、ＨＰＳ（８３）において並びにＷｅｉｓｓ及びＳｍｉｔｈ（８５）によって述べられたスーパースカラープロセッサ（８３、８４、８５、８６）において使用される。スーパースカラーは、ＩＢＭコンピュータにおいて６０年代に導入されたＴｏｍａｓｕｌｏスケジューリング（８７）を使用する。それは、現在の命令が実行されながら、プログラムの連続実行フローに先立って、選択された命令を平行に実行することによって、フローティングポイント単位の実行遅延耐性を隠すために使用された。スーパースカラーは、それらの専用ユニット上で実施されるのを待っている命令の列を使用する。データがＰＥによって生み出されるとき、そのタグを用いて修飾されたそのデータは、全ての命令キューにおいて共通のデータバスを用いて同報通信される（broadcast）。もし、タグが列中の命令オペランドタグと一致するならば、データはオペランド場所中に複写される。命令が、動作可能である全てのそのオペランドを有するとき、それはそのＰＥ上で実行され得る。列中の最も古い命令はより高い優先度を有する。異なるスキームは別々のデータレジスタファイルを使用し、そしてそれらの複雑さを減じるために、タグのみが支持列中に記憶される。この後者の方法は余分のパイプライン段階を必要とする。それは、例えば、アルファ２１２６４プロセッサにおいて使用される（８８）。
【００２０】
このデータフローモデルは、この論文において提示されたデータフローモデルに関する二つの重要な特徴を有する。第一は、全ての潜在的消費者に合致することを確保するために、生み出されたトークンが全ての列の全てのエントリに提示されなければならないことである。共通データバスは、従って、重要な電力消費に繋がる高いファンアウトを有する長いワイヤで構成される。第二の特徴は一旦、命令が列中にあると、分岐が、間違った経路に属する命令を無効にする述語を使用することによってのみ支援され得ることである。更に、述語を使用することは、条件分岐に従う両方の経路の命令を装填するという不利な点を有する。列中の命令とは、連続した連続フローの部分として実行されることを意味する。分岐は、従って、このデータフロー実行エンジンによって弱く支援される。この問題を緩和するために、誤予測（９０）の場合、このモデルは状態回復機構と一緒に分岐予測器（８９）を使用する。分岐予測器はデータフローエンジンに単一経路命令フローを供する。
【００２１】
Ｗａｖｅｓｃａｌａｒアーキテクチャー（９１、９２）は、命令レベルの平行性を開発するために、タグ及び命令キューを有するこのデータフローモデルを使用する。それらは、計算が、ＷａｖｅＣａｃｈｅと呼ばれるキャッシュ（cache）中に直接分配されそして実行される階層アーキテクチャーを提案する。スーパースカラーにおけるのとは異なり、本アーキテクチャーは連続プログラムを実行しないが、データフローコードを直接実行するために専用のＩＳＡを使用する。それらは、複数のＰＥに関連付けられた列において、Ｗａｖｅと呼ばれるデータフロー命令のブロックを装填する。分岐は述語によって達成されるが、Ｗａｖｅ装填の間でも達成される。Ｗａｖｅｓｃａｌａｒは非常に高レベルの平行性を開発するために有利な点を有する。専用のデータフローＩＳＡは、スーパースカラーと比較してその複雑さを強く低減させる。それにもかかわらず、高度に電力を消費するそしてその電力効率を低下させる全ての列において、トークン同報通信及びタグ比較がやはりなされなければならない。
【００２２】
第二の主データフローアーキテクチャーモデルは、スケジュール化されたデータフロー（９３）及びＴＲＩＰＳ（９４）として公表されている。それは命令キューを使用しないが、インデックスによってアドレスを決められるテーブルにおける命令によってリザーブされたオペランドレジスタを使用する。生産者の命令によって、それらの結果が消費者の命令のオペランドレジスタ中に明確に書き込まれる。このために、生産者の命令中に、テーブル中の消費者アドレスレジスタに対応した二つの行き先のアドレスが記録される。データが二度より多く使用されるとき、複写操作が発行される必要がある。動作可能であるそれらのオペランドを有する命令は、それらのＰＥ上で実行されるよう選択され得る。パイプラインサイクルは命令選択に専用化される。ＴＲＩＰＳはそれらのＰＥ、レジスタファイルのセット及びデータメモリバンクに関連するテーブルのセットを用いてこのモデルを実行する。全てのＰＥの命令テーブルはオペランドＮｏＣを通して見ることができ、そして同じアドレス空間の部分である。この分配されたアドレス空間によって、それらが異なるＰＥに属していても、互いの間で通信するための命令が可能になる。このアーキテクチャーは装填／記憶列を有する幾つかのメモリポートを有し、そして複数スレッドを支援する。それは命令レベル、メモリレベル及びスレッドレベルの平行性が、非常に高いレベルの平行性を有する多形性の実行プラットフォームであるように支援することを目標とする。欠点は、異なるＰＥに属する命令のデータ通信を不利にするＮｏＣ遅延耐性である。別々のオペランドテーブル、ＮｏＣ及び別々のレジスタファイルの使用によってこのアーキテクチャーの電力効率が低下する。
【００２３】
この仕事で提示されたデータフロー実行モデルはタグもインデックスも使用しない。ＰＥに関連する命令キュー又はテーブルを有する代わりに、データフローエンジンはＰＥ当たりに一つの命令スロットのみを有する。プログラムの実行は、最初に連続サブスレッドから命令を選択することによって、そして次にデータフローエンジンにおいて一つずつそれらを実行することによって達成される。命令はそのローカル連続フローから取られ、そしてそのＰＥ上で次に実行されるデータフローエンジンに提示される。動的選択は連続フローのみに続く故に、命令スケジューリングは、データ依存性及びリソース可用性に基づいて、ローカル連続サブスレッドを形成するために静的になされる。もし命令がデータフローにおいて実行されるとしても、タイルにおけるそれらの実行順序は編集中に定められる。これによって、ＰＥ当たり一つの命令スロットのみの使用を可能にすることで大きなテーブル又は列の必要性が除かれる。それにもかかわらず、このモデルの故障実行能力は非常に限られており、そしてコンパイラの支援なしでは実行ユニット遅延耐性を自動的に隠すために使用され得ない。
【００２４】
データフローエンジンそれ自身は、固定された１対１ＤＦＬからなる。命令は、オペランドをそこから取り、そしてそれらの結果を送るためにデータフローリンクを選択する。データフローエンジンは複数のＰＥの間で通信を達成するための最小の複雑さを有する。それは内容アクセスメモリを有する列も、オペランドネットワークを有するインデックステーブルも必要としない。これによって、複数のＰＥの間のワイヤの遅延耐性に対応して、それらの最低まで遅延耐性を低減することが可能になる。更に、これによって、それが切り替え活動及びワイヤ容量を低下させる故に、より高い電力効率を得ることが可能になる。サブスレッドにおける命令の選択は、分岐を支援するローカル連続フローを実行するのと類似している。条件分岐によって使用されるフラッグは直接、データフローエンジンによってローカルサブスレッドコントローラ提供される。これはデータがＰＥの間で通信されるのと同じようになされる。クラスタに属するタイルの連続コントローラは、古典的なＲＩＳＣ機械におけるように、クラスタが如何なる制御行路をも実行することを可能にする同じ制御領域の部分である。従ってこれによって、他のデータフローモデルにおいて遭遇する分岐取り扱い問題が緩和される。
【００２５】
埋め込み型システムのための均一アーキテクチャー
均一アーキテクチャーは、将来の埋め込み型システムにおいて生じる課題に挑戦するための良い候補である。それらが比較的単純なことに加えて、多くのアーキテクチャーが既に提案されてきた。均一平行マシーンにおける初期の貢献はＴｒａｎｓｐｕｔｅｒである（９５）。それは、高度に平行なマルチプロセッサシステムを構築するために使用されるように意図されたコア間ロジックを有する単一プロセッサチップとして８０年代初期に提案されている。それはメッシュ形態を使用する隣接するプロセッサの間の連続的な１対１接続を使用する。コア間通信は専用の移動命令を発することによって達成された。
【００２６】
もっと最近になって、非常に計算が集約された仕事量のための大量の平行な実施を要求する特に埋め込み型システムに対して多くの均一プラットフォームが提案された。それらのプラットフォームは大量の平行なプロセッサ配列に対してＭＰＰＡと呼ばれる。それらの目標は、単一チップ上で数百のコアに達するできるだけ多くの平行性を提示することである。それらは、専用の通信ネットワークによって接続されたそれらのローカルメモリを有する単純なＲＩＳＣコアからなる。それらのアーキテクチャーの殆ど全ては通信の基本として複数のＦＩＦＯを使用する。それらによって、大幅に平行なプラットフォームにおいては実行不可能な中央コントローラを使用せずに、中程度のオーバーヘッドがかかる別々のコア上での通信し、そして実施を同期化することが可能になる。ＭＰＰＡにおける主たる貢献を本明細書において提示する。
【００２７】
ＰｉｃｏＣｈｉｐからのＰｉｃｏＡｒｒａｙプロセッサは、単一チップ上に最大３００コアまでの広いマルチコアを提案する（９６）。各コアは１６−ビット、３課題ＶＬＩＷ（3-issue VLIW）である。それらはプログラム化可能なスイッチによって実行される時間分割多重通信用装置を使用するバスによって接続される。弱くプログラム化可能なプロセッサ配列（ＷＰＰＡ）は研究用プラットフォームである（６７）。それはＦＩＦＯを用いる再構成可能なネットワークを使用する。ＡｓＡＰアーキテクチャー（９７）は同じ再構成可能な通信モデルを使用するが、更に電力消費を減じるために、作業負荷に依存して電圧及び周波数をローカルに修正するという特徴を有する。それらは複数クロック領域によって生じる再タイミング問題に容易に対抗することを可能にする、ＦＩＦＯに基づく通信の便益を享受する。
【００２８】
Ａｍｂｒｉｃは、データフロー再構成可能なネットワークによって接続された数百のコアからなるマルチコアを提案する（９８、３５、６６）。それらはＣＨＡＮＮＥＬＳと呼ばれる小さな二−レジスタＦＩＦＯに類似した通信リンクを使用する。複数のＦＩＦＯとの相違点は、それらが、複数のＦＩＦＯを用いるような別々の制御プロセスを実行する必要がなく、リンク中にデータ生産及び接続されたＣＨＡＮＮＥＬＳの消費を管理できる特別な制御ロジックを埋め込む点である。それらは、同じ命令ソースからの幾つかの遠いコアを制御するために、データＣＨＡＮＮＥＬＳを用いて流出されそして複製される命令を可能にする特徴も有する。
【００２９】
最後に、ＲＡＷアーキテクチャー（３７、６４、１００）を実行するＴｉｌｅｒａプロセッサコア（９９）は６４個の３−課題ＶＬＩＷコアからなる。コア間通信は二つの方法において取り扱われる。第一の方法は、時間分割多重通信用装置を実行できるプログラム化可能なルーターを使用するネットワークである。第二のコア間通信能力は、隣接しているコアを接続している複数のＦＩＦＯによって達成される。複数のＦＩＦＯはレジスタインデックスを通してレジスタファイルにおいてアクセスされる。
【００３０】
それらのＭＰＰＡプラットフォームと提案されたアーキテクチャーの間の相違点は、もしそれらが複数のＦＩＦＯを使用するとしても、それらがコア間に接続され、そしてデータを通信するために平行コアの内部で使用されない点である。コア間での複数のＦＩＦＯの使用は遅延耐性を導く。複数のＦＩＦＯはメッシュ形態で隣接部の間で接続され、又はネットワークを動的に再構成することを必要とする。ネットワークが適切に構成されるとき、コア間の最小遅延耐性は１サイクルである。しかし、この後者の場合、通信は固定され、そしてプログラム化可能性は失われる。それらのアーキテクチャーは、数コアに亘って広がる細粒平行性を開発できないし、一方、提案されたアーキテクチャーはクラスタ内部のタイルの間の細粒平行性を開発できる。更に、それらのマルチコアアーキテクチャーが別々のコアからなる故に、それらは全て異なる制御領域に属する。これは、比較命令によって一つのコアにおいて生みだされるフラッグが他のコアにおいて条件分岐の実行をトリガーできないことを意味する。それらは、分岐のためにそれを使用する前に、他のコアの場所をレジスタするために、再構成可能なネットワークを通して、完全なデータ用語としてフラッグを通信しなければならない。これらのすべてには数サイクルかかる。更にもし幾つかのコアが分岐を必要とするならば、複写命令が発行されなければならない。提案されたアーキテクチャーによって、クラスタの如何なる他のタイル上でも比較命令が実行された正に次のサイクルで、タイル中で分岐させることが可能になる。
【００３１】
それらの制限故に、ＭＰＰＡは複雑な制御要求事項なしでストリーミングアプリケーションを実行するために主として使用される。事実、計算レイアウトにおける重要な変化はコストがかさむ再構成プロセスを必要とする。従って、それらは配列上の空間計算の便益を取り得て、そしてアプリケーション段階が比較的長い期間中に実行されるアプリケーションに良く適している。電力消費については、コアの数が増えると処理能力は上がるもののプラットフォーム全体の電力効率は上がらない。前に引用された大きなＭＰＰＡ部品は平均で１０ワットぐらいを消費し、それは高度に制約された埋め込み型システムに対しては比較的に高い。
【００３２】
ＭＰＰＡとの別の主な相違点は、ＬｉｔｅＦｌｏｗが命令中のインデックスによってアクセスされるローカルレジスタファイルを使用しないことである。その理由は、オペランドをフェッチするためのその読み取りが余分のパイプライン段階を導入することである。これによって条件分岐遅延ペナルティが増大し、速度を上げる上での欠点の要因となる。それは、ループにおける命令の数が一つに達する、幅広く平行な空間計算において重要な問題である。捲き戻すことによって分岐遅延を緩和すれば、ローカル命令バッファの使用を制限する、カーネルサイズの重要な増大を引き起こすことになる。それらの問題を以下の章で詳細に述べる。
【００３３】
それはデータフローを用いる場合ではないが、レジスタ値が常に読み取られ得て、そしてもしデータが数人の消費者によって使用されるならば、それは何らかの方法で複製されなければならない。ローカルレジスタファイルを使用することによって、命令が、インデックスによってデータを操作することになる。従って、ローカルレジスタファイルに基づく計算をデータフローと混合することは適切ではない。事実、レジスタインデックスを使用して、ＬｉｔｅＦｌｏｗにおけるように、値の消費を選択するかしないかを選択することはできない。レジスタに基づくＩＳＡの結果が一つ又は時々二つのレジスタに書き込まれ、データの複製が必要になる。ＬｉｔｅＦｌｏｗにおいて、行き先ＤＦＬを選択するためにビットが使用される。これによって、複製命令を発することなく、全ての可能な消費者にデータを同報通信することが可能になる。
【００３４】
専用アクセラレータアーキテクチャー
埋め込み型システムにおける計算の仕事の平行性及び電力効率を増すために、専用アーキテクチャーが提案されてきた。ＭＯＶＥ枠組みにおいて実行される輸送にトリガーされるアーキテクチャー（ＴＴＡ）は明確なデータ通信のみを計算リソースにする（１０１、１０２）。本明細書において、実行の入力部へのデータ輸送によって特別な操作の実行がトリガーされる。本アーキテクチャーは、ソケットを用いて機能ユニットに接続された通信バスを使用する。長い命令によって、操作の平行実施をトリガーするソケットの間の通信が明確に特定される。
【００３５】
マルチコアプラットフォームにおける通信ための専用アーキテクチャーが提案されてきた。ＣＰＡモデル（共同プロセッサ配列）は複数のＦＩＦＯを用いてプログラム化可能なネットワークに接続された処理エレメントからなる（１０３）。本明細書において、複数のＰＥはプロセッサコア又はカスタム不均一アクセラレータであり得る。埋め込み型ハードの実時間応用においてかぎとなる課題であるサービスの品質を強調するＡｅｔｈｅｒｅａｌを用いたＮｏＣの向上されたバージョンが提案されている（１０４）。
【００３６】
ＡＤＲＥＳプラットフォームはＶＬＩＭと強く連結されたアクセラレータからなる（３１）。アクセラレータは、ＭＯＲＰＨＯＳＹＳアーキテクチャー中に導入された粗粒再構成可能配列（ＣＧＲＡ）である（３２）。ＶＬＩＷはアプリケーションの制御集約的部分に対して使用され、そしてカーネルはＣＧＲＡ中で加速される。それはローカルレジスタファイルを有する相互接続された複数のＰＥからなる。それは完全に同期しており、データフローを使用しない。ＣＧＲＡ全体は、構成メモリから各サイクルで装填された構成ベクトルによって同期で制御される。分岐は述部を用いることによって達成される。
【００３７】
最後に、粗粒再構成可能プラットフォームにおける二つの主要な寄与はＭｏｎｔｉｕｍ（３４）およびＰＡＣＴ−ＸＰＰ（３３）である。それらは集約的埋め込み型計算プラットフォームに対する非常に高い電力効率を目標とする。Ｍｏｎｔｉｕｍは、ＡＬＵでありそしてプログラム化可能なクロスバーによって相互接続されたメモリブロックである単純な複数のＰＥからなる。構成ベクトルは各サイクルで装填され、そしてそのコントローラによって構成メモリにおいて分岐することが可能になる。ＸＰＰアーキテクチャーはＡＬＵ及び再構成可能なデータフローネットワークによって互いの間に接続される小さなメモリからなる。それら二つのアーキテクチャーはストリーミング（ｓｔｒｅａｍｉｎｇ）アプリケーションに対するカーネルの加速を目標とする。
【発明の概要】
【発明が解決しようとする課題】
【００３８】
本発明は、命令を平行して実行し、そしてとデータ通信リンク（ＤＣＬ）呼ばれる１対１通信リンクと共に接続される処理要素を含むプロセッサに関する。
【００３９】
本発明はまた二−レベルコード組織にも関する。
【課題を解決するための手段】
【００４０】
命令は、それらの間でデータを通信するために複数のＤＣＬを使用する。それらの通信を実現するために、それらは、そこからそれらがそれらのオペランドを取る複数のＤＣＬ、及びそこにそれらがそれらの結果を書き込む複数のＤＣＬを特定する。複数のＤＣＬによって命令がそれらの実行を同期化し、そしてそれらが操作するデータを明確に管理することが可能になる。通信は明確であり、そして長寿命変数の記憶から連結解除される一次的変数の記憶を実現するために使用される。
【００４１】
特に、本発明はその実行モデルを有するプロセッサに関する。プロセッサは命令を実行する処理エレメント、データ通信リンク及び命令メモリを含む。
【００４２】
複数のＤＣＬはデータ記憶能力も供し得る１対１通信リンクである。ＤＣＬは一つの書き込みポート及び一つの読み取りポートを有し、そしてそれらのポートの可用性についての情報を提供する。読み取りポートからのデータ読み取りは、書き込みポートにおけるデータ書き込みの連続順序に関連して事前に定義された順序においてなされる。データの読み取り及び書き込みに加えて、複数のＤＣＬは記憶されたデータの明確な管理を可能とする追加の操作を供する。それらの操作は：データの消費なしでの読み取り；データ交換を伴う強制的な書き込み；及び記憶された全てのデータを消去するリンク記憶のフラッシュである。可用性情報によって複数のＤＣＬを用いた同期化の実現が可能になり、そしてデータ管理操作によって複数のＤＣＬ中に記憶されたデータの明確な管理を実行することが可能になる。
【発明の効果】
【００４３】
複数のＤＣＬは処理要素の間の唯一の通信手段である。それらはまた処理エレメントの計算結果のための一次的な記憶も供する。処理要素はタイルにグループ化される。タイルの処理エレメントはタイル入力部に接続されたＤＣＬ読み取りポートのセット、及びタイル出力部に接続されたＤＣＬ書き込みポートの別のセットをシェアする。従ってタイルは複数のＤＣＬによってそれらの間に接続され、そして幾つかのＤＣＬは同じタイルの出力部及び入力部の間のリンクを供し得る。
【００４４】
本発明の特徴は、処理エレメント上で実行される命令がそれらのオペランドを、タイル入力部に接続されたＤＣＬ読み取りポートからのみ取ることである。更に、命令はそれらの結果を、タイル出力部に接続された一つ又はそれ以上のＤＣＬ書き込みポートにのみ書き込む。命令は１対１通信リンクを特定するのみであるので、処理エレメントの間のデータ通信は明確でありそして完全に定められる。通信は、マイクロアーキテクチャーによって解釈されそして分解される必要はない。複数のＤＣＬが同期化手段も供するので、命令は、異なるタイル上でそれが実行されているとしても、明確な通信を使用することによってのみ、それらの間でそれらの実行を同期化できる。また、複数のＤＣＬがそれらのデータを明確に管理することを可能にするので、命令は、タイルのＤＣＬ中に記憶されたデータについての完全な制御を有する。
【００４５】
タイル処理要素上での命令の実行は、命令において定義された事前に定義された順序に追随することによって行われる。タイル処理要素がＤＣＬの同じセットをシェアするので、この優先順序によって、同じ群に属する命令によって使用されるＤＣＬへのアクセスシーケンスを特定することが可能になる。
【００４６】
同じ命令バンドルによって制御されたタイルのセットはクラスタと呼ばれ、そして命令メモリに関係付けられる。クラスタにおいて、一つの処理要素は、アドレスレジスタを有して、そしてクラスタ命令メモリから読み取るために次の命令バンドルのアドレスを供する分岐ユニットである。
【００４７】
クラスタのセットはプロセッサを構成する。各クラスタは命令メモリ中に記憶された命令のスレッドを実行する。異なるクラスタに属している処理要素上で実行された命令は同期化され得て、そしてマイクロアーキテクチャーの介入を要求することなく、又は複雑なルーティングリソースを要求することなく直接複数のＤＣＬを用いてデータをシェアする。
【００４８】
通信は変数キャッシュから連結解除される。複数のＤＣＬは、一次的な結果に限定される記憶を供し、一方、長寿命変数は処理エレメントにおいて実行されるローカルメモリを用いて記憶される。
【００４９】
通信が明確に特定され、同期化手段を供し、そしてデータ管理を可能にするので、上述のプロセッサは、他の平行プロセッサと比べて強力に単純化されたマイクロアーキテクチャーを有する。事実、データ更新を実行するための複雑なバイパス回路、マルチポート付きレジスタファイル、パイプライン、又は他の平行プロセッサにおけるような複雑なルーチィングリソースさえも有する必要はない。従って、このプロセッサによって、命令レベルの平行性を開発して実施を同期化しながら、実行の複雑さを減じること、より高い実現可能性及び電量効率を有することが可能になる。
【００５０】
本発明のこれらのそして他の特長、態様及び有利な点は、以下の記述及び請求項を参照してよりよく理解されるであろう。
【図面の簡単な説明】
【００５１】
【図１】本発明のプロセッサの実施態様。それは、各々が二つのタイルを含む二つのクラスタを有する。
【図２】各々が一つのタイルの四つのクラスタからなるプロセッサの実施態様。タイルは１対１通信リンクからなる複数のＤＣＬによって接続される。
【図３】非常に単純でかつ限られたＤＣＬの実施態様。それは（ａ）ＦＩＦＯ及びワイヤ、（ｂ）その制御信号を有する典型的な２−レジスタＦＩＦＯ実行、（ｃ）単純なＤＣＬ実施態様を表すために使用される記号からなる。
【図４】四つの命令を有するタイルの実施態様。オペランドは入力ＤＣＬから取られ、そして結果は一つ又は幾つかの出力ＤＣＬに送られる。
【図５】計算的命令の実施態様である。
【図６】クラスタの三つの他のタイルＴ２、Ｔ３、及びＴ４部分が接続された二つのローカルＤＣＬを有するプロセッサタイルの実施態様、Ｔ１。
【図７】実施態様におけるデータ操作のためにＤＣＬがパイプラインレジスタを置き換える。
【図８】計算と同じサイクルにおいて通信することを可能にするタイル実施態様の間に非常に短いＤＣＬを有するクラスタ実施態様フロアプラン。出ていく及び入ってくるＤＣＬは他のクラスタと通信し、それらはワイヤの遅延耐性故により遅い。
【図９】ネットワークを用いた（ｂ）、及びＤＣＬを用いた（ｃ）、プログラムフラグメント（ａ）のデータ区別例。
【図１０】タイル実施態様からなるクラスタの実施態様。
【図１１】クラスタのタイルにローカルバッファをフェッチする第一のレベル（１）ＥＢ、そして第二のレベル（２）は各タイルにおいて命令を連続的に実行する。
【図１２】二つの実行レベルを実行する全体的な実施パイプライン。
【図１３】クラスタタイルにおけるＳＥＢコードセグメントの独立した実施の実行スロット。
【図１４】即座のアドレスを用いる各命令の次の専用の分岐フィールドを有するローカル分岐。
【図１５】四つのタイルに対するＳＥＢを保持するＥＢコードレイアウト例。（ａ）はそのＳＥＢ内容を示し、（ｂ）及び（ｃ）は同じブロックの二つのキャッシュであり、（ｂ）ではキャッシュラインが４命令幅であり、（ｃ）においては２命令幅であり、両方の配列を通して同じＥＢを記憶する。
【図１６】ＥＢ分岐例。一つのＥＢ分岐命令のみが一つのタイルにおいて実行され、他のタイルはそれらの新しいＳＥＢを待つ。
【図１７】二重ＳＥＢバッファ。一方で現在のＳＥＢが実行されながら、新しいＥＢは、実行されるべき最もふさわしいＥＢの静的予測に基づいて事前に取り出される（１）。
【００５２】
本発明の詳細な記述
本発明はその実行モデルを有するプロセッサに関する。プロセッサは命令、データ通信リンク及び命令メモリを実行する処理要素を含む。
【００５３】
プロセッサの実施態様の一般図が図１に示される。それはクラスタからなり、そして一つのクラスタは、各タイルに対する命令バンドルを記憶するために、一つ又は数個のタイル（図１．１）、命令メモリ（図１．２）及びレジスタ（図１．３）を含む。長い命令バンドルは命令メモリ（図１．４）から直ちに取り出され、そしてそれら自身のタイル内に書き込まれるよう分割される。
【００５４】
タイルは、幾つかの処理要素（ＰＥ）（図１．５）をグループ化する。各ＰＥはそのタイルの命令バンドルからのそれ自身の命令を実行する。ＰＥ間のそしてタイル間の全てのデータ通信はデータ通信リンク（ＤＣＬ）（図１．６）を用いて達成される。このため、命令はレジスタファイル及びシェアされたレジスタインデックスを用いずに直接、データを読み取りそしてＤＣＬ内にオペランドとして書き込む。
【００５５】
データ通信リンク
複数のＤＣＬはデータ記憶能力も供し得る１対１通信リンクである。ＤＣＬは一つの書き込みポート及び一つの読み取りポートを有する。複数のＤＣＬはこれらのポートの可用性についての情報を供する。より正確には、ＤＣＬは読み取りポートがデータ読み取りのためにアクセスされ得るかどうかを示し、それは実際にデータがその内にあることを意味する。それはまた書き込みポートがその内へのデータ書き込みのためにアクセスされ得るかどうかも示し、それはデータをその内に書き込み得ることを意味する。読み取りポートからのデータ読み取りは、書き込みポートにおけるデータ書き込みの連続順序に依存して事前に定義された順序でなされる。その最も単純なバージョンにおいて、データはそれらが書き込みポート内に書き込まれたのと同じ順序で読み取られる。
【００５６】
データの読み取り及び書き込みに加えて、ＤＣＬは記憶されたデータの明確な管理を可能とする追加の操作を供する。それらの操作は：データの消費なしでの読み取り；データ交換を伴う強制的な書き込み；及び記憶された全てのデータを消去するリンク記憶のフラッシュである。
【００５７】
従って、データがＤＣＬの出力ポートから読み取られるとき、それはＤＣＬから除かれ得るか又は除かれ得ない。後者の場合、データは、ＦＩＦＯ状語義における場合のように複写操作を実行することを要求せずに、直接出力ポートから再使用できる。
【００５８】
強制的な書き込みによって、それが読み取られたか否かを注意することなく、記憶されたデータが上書きされることが可能になる。例えば、それは妨害を取り扱うルーチンのために有用である。同じように、データリンクフラッシュによってソフトウエア排除から回復することが可能になる。事実、それが生じるとき、排除は定義によってランダムであるので、従って、もし、或るＤＣＬがデータとしてその内にあるか否かは正確に知ることができない。フラッシュ操作によって、定義された状態に向かうため、恐らく間違った又は無意味な計算状態を打ち砕くことが可能になる。単純な複数のＦＩＦＯを使用するとき、リセットを発行しないで、定義されていない状態から定義された状態に向かうことはできない。事実、未知の空のＦＩＦＯ上の読み取り操作によって実行が停滞し、計算が阻止される結果になろう。最後に、試験命令によって、データがＤＣＬを通して送られたか否か、そして、例えば、Ｉ／Ｏ処理ル−チンをトリガーするために使用され得るか否かを単に試験することが可能になる。
【００５９】
可用性情報によって、複数のＤＣＬを用いた同期化を実現することが可能になる。事実、命令によってデータをＤＣＬの入力ポート内に書き込まれなければならないとき、それはポートが利用可能になるまで待機しなければならない。従って、その実行は、ＤＣＬの読み取りポートからの別の命令によって、データ消費に関して同期化されるであろう。逆に、読み取りポートからの命令によってデータが使用されるとき、それはＤＣＬにデータを書き込むためのその可用性及び別の命令の可能性を待たなければならないであろう。
【００６０】
データ管理操作よって、それらがデータを明確に消費することが可能になるか又はならないため、複数のＤＣＬ中に記憶されたデータの明確な管理を実行することが可能になる。これによって、複写操作を発する必要なしで、又はデータをローカル又はシェアされたレジスタ内に複写する必要なしで、データを数回使用することが可能になる。費用がかさむ複写操作を防ぐ別の明確なデータ管理は、以下においてそれが説明されるであろうように、そのデータ結果をタイルの複数の出力ＤＣＬ中に書き込むための命令能力である。
【００６１】
タイル
タイルは複数の入力ＤＣＬ（図１．８）の読み取りポートの同じセットをシェアしている処理エレメントからなる。それらは複数の出力ＤＣＬ（図１．９）の同じ書き込みポートの組もシェアする。複数のＤＣＬは処理エレメントの間の唯一の通信手段である。それらは処理エレメントの計算結果のための一次的な記憶も供する。タイルの出力の組からの一つの又は幾つかのＤＣＬはローカルデータキャッシュ（図１．７）を供給している同じタイルに接続される。次の命令において再使用されなければならないという結果を生み出すタイルにおけるＰＥは、その結果をローカルＤＣＬ中に書き込み、そして次の命令中にそれを再使用できる。他のＤＣＬは同じクラスタ（図１．１０）に属するタイル、又は異なるクラスタ（図１．１１）に属するタイルに接続される。全ての場合、複数のＤＣＬによって、もし、それらが異なるクラスタに属するとしても、ＰＥの間、ひいては連続命令の間で直接、通信することが可能になる。
【００６２】
命令オペランド及び実行
本発明の特徴は、処理エレメント上で実行される命令が、タイル入力部に接続されたＤＣＬ読み取りポートからのみオペランドを取ることである。更に、命令はそれらの結果を、タイル出力部に接続された一つ又はそれ以上のＤＣＬ書き込みポート中にのみ書き込む。このために、命令は、そのデータを取るためにローカル入力セットにおけるＤＣＬインデックスを特定する。命令における余分の情報は、データが複数のＤＣＬから除かれるべきかどうか、又は将来の使用のために保持されるべきかどうかを特定する。結果データを書き込むために、命令は出力組み中の一つ又は幾つかのＤＣＬも特定する。
【００６３】
命令が１対１通信リンクのみを特定するので、処理エレメントの間のデータ通信は明確であり、そして完全に定められる。通信はマイクロアーキテクチャーによって解釈されそして分解される必要はない。複数のＤＣＬは同期化手段も供するので、命令は、それらが異なるタイル上で実行されているとしても、明確な通信を用いることによってのみ、それらの間でのそれらの実行を同期化できる。一旦、ＤＣＬが命令によって使用されると、データが読み取られるであろう又は書き込まれたＤＣＬの反対側での命令が何かを知ることが可能である。また、複数のＤＣＬはそれらのデータを明確に管理することを可能にする故に、命令はタイルの複数のＤＣＬ中において記憶されたデータに関する完全な制御を有し、そして複数の使用のためにデータを複写することを必要としない。
【００６４】
命令は、もしそれらのデータが、命令によって特定された入力ＤＣＬにおいて利用できるならば、そしてもし命令によって特定された複数の行き先ＤＣＬが書き込みのために利用できるならば、実行される。次いで、命令は実行され得る。同じ命令バンドルに属する全ての命令は同時に実行される必要はなく、そして複数のＤＣＬはデータ通信のために使用されるので、従属する命令のセットを同じ群内にパックすることさえ可能である。命令はただ次々に実行されるであろうし、そして定められたＤＣＬを通して送られたそして受け取られたそれらのオペランドを待つ。これは、長い命令用語が直ちに実行されるＶＬＩＭにおけるものとは全く異なる方法である。それは、平行性が十分に利用できないときの、ＶＬＩＭコードにおいて共通である空の命令スロットの使用を強く低減させるという利点を有する。これによって、プログラムサイズ及び空のメモリアクセスに起因する電力消費が減少する。
【００６５】
同じ命令バンドルによって制御されたタイルのセットはクラスタ（図１．１２）と呼ばれ、そして命令メモリに関連付けられる。クラスタにおいて、一つの処理エレメントは、アドレスレジスタを有し、そしてクラスタ命令メモリから読み取るための次の命令バンドルのアドレスを供する分岐ユニットである。
【００６６】
一旦、命令バンドル中の全ての命令がそれらの実行をほぼ完了しそうであれば、クラスタ中の各タイルの命令バンドルレジスタ中に次の群が取り出されそしてラッチされる。更に、同じタイル上で実行される同じ群からの命令は、同じＤＣＬをオペランドとしてシェアできる。このために、タイル処理エレメント上の命令の実行は、命令において定義された事前に定義された順序に従うことによって実施される。タイル処理要素が複数のＤＣＬの同じセットをシェアするので、この優先順序によって、同じ群に属する命令によって使用される複数のＤＣＬへのアクセスシーケンスを特定することが可能になる。そしてたとえ二つの命令が同じＤＣＬポートにアクセスしても、優先順序によってどの命令がそれに最初にアクセスするかが定められ、衝突が解決される。
【００６７】
命令は通信、及びｖｏｎ  Ｎｅｕｍａｎｎ  ＶＬＩＷアーキテクチャーにおけるレジスタのようにシェアされていないメモリ場所を特定する。複数のＤＣＬは命令の間で生み出されそして使用される一次的データを記憶するために使用される。一旦、命令がデータを生み出すと、それは、マイクロアーキテクチャーの介入なしに、別の命令によって直ちに使用され得て、それはそれが正に次のサイクルで使用され得ることを意味する。従って、複数のＤＣＬは短期間生きている変数のために殆ど使用される。長寿命変数は二つの方法で取り扱われ得る。第一は、データをＤＣＬの出力ポートに入れることである。それは連続した再使用に対して非常に有用である。別の方法は、幾つかのＰＥが、変数を記憶するために使用される小さなローカル記憶配列であることである。それらは専用の命令によって配列中に明確に記憶されそして復元されなければならない。再び、これは、マイクロアーキテクチャー及びレジスタ機械におけるようにレジスタインデックスによって自動的には取り扱われない。それにもかかわらず、この方法の利点は、通信が変数記憶から連結解除されることである。ＤＣＬの通信のセットがタイルに対してローカルデあるが、他のタイルなどに対してアクセスを供するために、この発明において提示されたアーキテクチャーは高度に実現可能である。もしアプリケーションがもっと長寿命変数を必要とするならば、全体のアーキテクチャー効率及び速度を落とさずに、ローカル記憶のサイズのみを増すことが可能である。これは、特に、それが強く複数移植されるならば、中央レジスタファイルがよくスケールできないシェアされたレジスタ機械における場合ではない。
【００６８】
通信は明確に特定されるので、同期化手段を供し、それによって、データを管理することが可能になり、そして述べられたプロセッサは、他の平行プロセッサと比べて非常に単純化されたマイクロアーキテクチャーを有する。事実、複雑なバイパス回路、複数移植されたレジスタファイル、データ更新を実行するためのパイプライン、又は他の平行プロセッサにおけるような複雑なルーティングリソースでさえ有することは必要でない。従って、このプロセッサによって、命令レベルの平行性及び実行の同期化を開発しながら、より高い実現可能性及び電力効率を有するように実行の複雑さを減少させることが可能になる。
【発明を実施するための形態】
【００６９】
高効率順次ＲＩＳＣプロセッサコアは、命令の間でデータを通信するためにレジスタファイルを使用する。順次平行ＲＩＳＣコアは中央レジスタファイルを、実行ユニットの間の中央データプールとして使用する。レジスタファイルは実施するのが複雑であり、そして平行プラットフォームの実現可能性を制限する。更に、レジスタに基づくデータ通信は、パイプラインによる実行において正しい実行状態を維持するために追加のマイクロアーキテクチャー支援を必要とする。これは平行ＶＬＩＷプロセッサが、電力オーバーヘッド及び周波数制限を導入する複雑なバイパスネットワークによって更に制限される原因になる。それらの欠点によって、命令レベルの平行性を開発できる順次ＶＬＩＭコアの電力効率が低下し、従ってそれらによって均一マルチコアプラットフォームにおけるそれらの使用が制限される。
【００７０】
本明細書に提示されたＬｉｔｅＦｌｏｗプロセッサモデルは本発明の実施態様である。それによって、高度に効率的な平行プロセッサコアが細粒ＬＩＰを開発することが可能になる。それは最悪の場合のその複雑なバイパスネットワークを有する中央レジスタファイルを使用しない。それはその代わりに、命令によって完全に特定された明確なデータ通信と一緒に、直接、実行ユニットの間で１対１通信リンクを使用する。それは迅速でかつ効率的なコア間通信手段も供し、それを高効率均一マルチコアプラットフォーム用の適切な解決手段にする。
【００７１】
ＬｉｔｅＦｌｏｗ実施態様はタイルベースのアーキテクチャーモデルである。ＬｉｔｅＦｌｏｗプロセッサは、独立したタイルの組をグループ化するクラスタからなる。各タイルは、データフロー状に命令を実行することによって、実行ユニットを制御する。通信タイル及びクラスタの内部及びその間の全てのデータ通信は明確であり、そして以下で、データ通信リンクのためのＤＣＬとして言及される直接１対１データフロー状リンクを使用する。ＤＣＬの非常に簡単な実施態様は、複数の小さな同期ＦＩＦＯであり得る。ＤＣＬは、レジスタインデックス又はタグを使用せずに、命令の間でデータを通信するため使用される。ＤＣＬに関連する制御は、異なるタイル又はクラスタの間のスレッドにおける命令の間の実行同期化のために使用される。プロセッサタイルにおけるこのローカル実行制御によって、同期化及び制御信号のために使用される長いワイヤが避けられる。計算には複数のＤＣＬのみが使用され、そしてＶＬＩＷプロセッサにおける中央レジスタファイルのような、マイクロアーキテクチャーによって維持された中央のシェアされたデータプールは使用されない。複数のＤＣＬは、業務通信プリミティブ（基本命令）を実行することによって、データを極めて小さく操作するので、それらは実行可能でありそして遅延耐性に鈍感であり、それらを大きな平行プラットフォーム用の適切な通信手段にする。
【００７２】
ＬｉｔｅＦｌｏｗプロセッサが図２において示される。それは各々が私用の命令及びデータキャッシュ又はスクラッチパッドを使用する一つのタイルをグループ化する四つのクラスタからなる。隣接しているクラスタは１対１ＤＣＬによって緊密に連結される。それらの緊密な接続は非常に迅速でありそして、幾つかのクラスタに亘る単一スレッドを効率的に実行することを可能にする制御情報を伝搬する。図２において、命令キャッシュメモリが、図においては示されていない専用のメモリネットワークを使用するＬ２キャッシュとして見られ得る。
【００７３】
この実施態様において、各クラスタは、１対１ＤＣＬからなるローカルネットワークによって接続された単一タイルからなる。それはデータ及び命令キャッシュ又はスクラッチパッドに接続される。データキャッシュは、実行に依存してメモリ操作を実行することによって幾つかのタイルによってアクセスされ得る。この実施態様におけるタイルは、一つ又はそれ以上の実行ユニットＥＵ、長寿命データを保持するためのローカルメモリ、ＬＭＥＭ、を有する。この実施態様において、各クラスタは、クラスタ上で実行されるコードのブロックを保持する、本明細書においてＳＥＢ−ＢＵＦＦと呼ばれるローカル命令モモリを有する。この実施態様の各クラスタが一つのタイルを有する故に、本明細書において各タイルは、分岐を有するコードの連続的なスレッドを実行する。
【００７４】
接続されたタイルのセットとそれらのクラスタをグループ化することによって、本明細書では実施態様のプロセッサは、タイル当たり一つの命令スロットのみを有する軽いデータフロー状の実施エンジンとして見ることができる。データフロー状とは、幾つかのデータ又はリソースの可用性によってトリガーされる実施を意味する。エンジンはタイルにおける連続スレッドからの命令を実行する。命令は、静的にスケジュールされた連続したフローから、次の候補であるとして選択される。命令は、全てのそれらのオペランドがエンジン中で利用可能であるとき、最終的に実行される。データフロー状エンジン自身は、命令スロットの間で名前が付けられていないデータトークンを通信している固定された１対１ＤＣＬリンクからなる。実行エンジンの命令窓は非常に小さく、そしてクラスタ中のタイルの数に対応する。この小さな窓サイズによって、データフロー状エンジンを非常に電力効率的にすること、そして複雑性を低下させることが可能になる。それによって、内容にアクセスされる命令キュー又はテーブルに負荷をかけないデータフロー状実行が可能になる。
【００７５】
この実施態様グループにおける命令バンドルは、平行して実行され得る幾つかの命令をグループにする。命令の間の通信はＤＣＬを用いてなされ、そしてそれらの実施は、データ及び行き先ＤＣＬの可用性によってトリガーされる。実施は、本明細書においてＣＴＲＬ−ＲＥＧと呼ばれるクラスタレジスタ中に装填された命令バンドルによって指令される。タイルは四つのタイプの命令を平行して実行でき、それらは以下のものである：
・計算、主メモリ
・移動操作によるデータ移動
・ローカルメモリアクセス
・命令バッファにおける分岐操作
【００７６】
分岐を除いて、同じ命令の幾つかの例が、実施態様の実行に依存してタイル中に提示され得る。
【００７７】
ＬｉｔｅＦｌｏｗモデル実施態様は、コンパイラに対して明確でかつ見ることができるプロセッサ内部でデータ通信を最大限利用し、一方、それがやはり命令中心であるという特徴を有する。これはそれがやはり計算を駆動する計算又はメモリ操作のようなデータ変形操作であることを意味する。通信はオペランド選択によって自動的に達成され、そして命令実施の副次的効果として見られ得る。正しい状態を維持するために、変数をレジスタインデックスによって又は複雑なマイクロアーキテクチャーと一緒にタグを使用することによって命名する代わりに、データは、静的に定義された生産者／消費者ペアからそしてそれに向かって明確に取られる。この方法によって、例えば、生産者／消費者ペアを隣接するタイル、又は隣接するクラスタにおけるカーネルに置くことによって、コンパイラレベルでデータ通信を最適化することが可能になる。それによって、データ同報通信を本当にそれを使用する操作又はタイルのみに最小化することが可能になる。操作の間のこの明確で最適化されたデータ通信は、中央データプールを使用するよりもより複雑でなく、そして電力消費がより少ない。事実、専用のマイクロアーキテクチャーによって維持される中央レジスタファイルは、不必要な電力を消費する全てのパイプライン段階を通して動くデータを必要とする。
【００７８】
クラスタの間の通信は、それらがクラスタ内部で取り扱われるのと同じように、複数のＤＣＬによって取り扱われる。図２において、左及び右のクラスタからの二つのＤＣＬがタイル３及びタイル４において各々終わる。それらは複数のローカルＤＣＬとしての命令によって使用される。複数の通信ＤＣＬがコンパイラによって完全に見える故に、隣接しているクラスタの間のそれらの制限された接続は、幾つかのクラスタに亘るスレッドに広がるのに十分であり、そして、インデックスされたレジスタに関して、最悪の場合、完全に接続されたクロスバーは必要でない。更に、実行の同期化はそれらの複数のクラスタ間ＤＣＬによって完全に取り扱われる。これらすべてによって、ＤＣＬベースのクラスタ間通信がスケーラブル方法になる。
【００７９】
ＬｉｔｅＦｌｏｗプロセッサ実施態様内の通信はＤＣＬと呼ばれる１対１リンクによって取り扱われる。それらは命令の間のデータ通信のために使用される。それらの通信はタイル内部、異なるタイルの間、又はクラスタの間でさえローカルであり得る。
【００８０】
機能性が低下した簡単な基本的ＤＣＬ実施態様はワイヤ及びＦＩＦＯによって実行され得る。ＤＣＬのこの実施態様を用いて、多くのデータ管理機能などが支援されず、又はＦＩＦＯの回りで又はタイル中で実行されることを必要とする。この簡単な実施態様を用いると、一つ及び三つのレジスタ、典型的には二つのレジスタの間のＦＩＦＯサイズが非常に短くなる。より大きなＦＩＦＯが遠いタイルの間のパイプライン用に使用される。図３（ａ）は、ＦＩＦＯによって追随されるワイヤからなるこの単純なＤＣＬ実施態様を示す。２−レジスタＦＩＦＯの典型的な実施が図３（ｂ）において示される。それは、主として二つのレジスタ、多重通信用装置及びレジスタの内容状態を管理しているコントローラからなる。簡単な通信レジスタに比べて、この制限されたＤＣＬ実施態様のクリティカルパスは、ＦＩＦＯ多重通信用装置によってのみ論じられる。
【００８１】
簡単なＤＣＬ実施態様はＦＩＦＯの制御信号を用いてなされる。書き込み信号によって、ＦＩＦＯにおける新しいデータの導入が可能になり、そして読み取り信号は先入れ先出し順序でデータを除く。二つの追加の信号、満杯及び空は、ＦＩＦＯ状態についての情報を供する。満杯状態とはＦＩＦＯが空のレジスタを全く有しないこと、そして未決定の挙動を引き起こさずには書き込まれ得ないことを意味し、そして空の状態は、明らかに読み取られ得ない無意味なデータをその出力部で有する。図３（ｃ）は、以下においてこの単純なＤＣＬ実施態様を表すために使用される記号を示す。
【００８２】
ＦＩＦＯベースのＤＣＬを使用することによって、データの可用性によってトリガーされる実行である、タイル中のデータフローの実行が可能になる。事実、ＦＩＦＯは一方向にデータ輸送できるが、制御情報は二方向に輸送できる。ＦＩＦＯの末端で消費者は、ＦＩＦＯが空でなければ、つまり空の信号が再設定されるとき、自身が計算を進めることができるかどうかを知る。従って、その出力部でデータをただ書き込むことによって消費者をトリガーできる、ＦＩＦＯ入力部で生産者からの制御情報の転送がある。逆に、ＦＩＦＯ入力部で生産者は、満杯の信号がリセットされるときに起こる、満杯でないＦＩＦＯ中に自らがその結果を書き込むことができる場合にのみ、計算を進めることができる。もしＦＩＦＯが満杯であるならば、生産者は進むことができず待たなければならない。本明細書で、制御情報転送は、満杯のＦＩＦＯからデータを除くことによって生産者の実行をトリガーできるＦＩＦＯ出力部で、消費者からなされ、それによって計算すること及びその結果を書き込むことが可能になる。
【００８３】
ＦＩＦＯが一つより多くのレジスタを有するとき、その制御のためのクリティカルパスはその入力側と出力側の間で連結解除され得る。事実、満杯でないＦＩＦＯは、その出力側が読み取られるであろうか否かに拘わらず、常に書き込まれ得て、そして空でないＦＩＦＯは、その入力側が書き込まれるであろうか否かに拘わらず、常に有効なデータをその出力部に有する。通常のパイプライン段階はこの連結解除機構を供さず、そして段階の間の制御信号は、段階を横切る長い制御経路に繋がる段階の境界を跨ぐ必要がある。この欠点はＲＩＳＣパイプラインプロセッサにおいて問題のクリティカルパスを引き起こすパイプラインインターロックと呼ばれる。
【００８４】
命令実行は明らかに複数のＤＣＬを制御し、そして制御は常にタイルに対してローカルである。これは、データがＤＣＬ中に命令によって常に明確に書き込まれること、そして別の命令によって常に読み取られることを意味する。本特徴は、複数のＤＣＬがデータを極めて小さく扱うことである。場所が残されているとき、データはＤＣＬ中に明確に書き込まれるが、それはまたその最後に明確に破壊される。レジスタは常に書き込むことができ、そしてその値が無意味である場合でさえ、読み取ることができる。中央コントローラはその状態を知りそして管理しなければならない。ＬｉｔｅＦｌｏｗプロセッサ実施態様において、全体的な制御は、タイル及びＤＣＬにおけるローカル命令制御の間に分配される。複数のＤＣＬはデータ操作を、大きな平行プラットフォームにとって有利である、遅延耐性に対して鈍感である取り扱いにする。
【００８５】
本明細書で、ＤＣＬ実施態様は、限られた一時的記憶能力を有する通信リソースである。それらは、データ順序、つまりデータがＤＣＬに書き込まれる順序が、それらがその最後に読み取られるのと同じ順序であることを記憶する。その結果、データがＤＣＬ出力部で読み取られないときに、一方で、生産者が引き続きその入力部に書き込むとき、それはＦＩＦＯが満杯になった後、ブロックする。データは、専用リンクを明確に選択することによって、それらを通して特別なタイルに送られる。従って、データ又は行き先ポートを区別するために、それらは如何なるレジスタインデックス又はタグ又はアドレスをも使用しない。
【００８６】
命令バンドルはタイルにおける操作の実行を指令する。全ての命令は複数のＤＣＬを用いてデータを明確に通信する。データ通信は、タイルにおいて、又はタイルの間でローカルなものであり得る。それらの明確な通信は命令によって特定される。全ての命令は複数のＤＣＬからそれらのオペランドを取り、そしてそれらの結果を複数のＤＣＬ内に明確に書き込む。図４は、その四つの命令タイプ、分岐、計算、移動及びローカルメモリを有する実施態様のタイルを示す。それらは全て入力ＤＣＬから入力データを取り込み、そしてそれらの結果を一つ又はそれ以上の出力ＤＣＬに送る。この実施態様において、少なくとも一つのＤＣＬは、生み出された結果をローカルに再使用しそして記憶するために、同じタイルの出力部から入力部に戻る輪をつくる。
【００８７】
ＤＣＬ入力部からオペランドを取る際、及びＤＣＬ出力部に結果を送る際に、ＬｉｔｅＦｌｏｗプロセッサ実施態様におけるオペランド及び結果の操作は更に二つの特異性を有する：プログラム化されたオペランド消費、及び選択的結果の同報通信。操作が入力ＤＣＬからのデータを使用するとき、それは必ずしもそれを消費しない。これはデータが、使用された後、自動的にＤＣＬＦＩＦＯ実施態様から読み取られないことを意味する。その代わりに、使用された各ＤＣＬソースに対して、命令は、データが読み取られるべきか否かを特定する。これによって、複写操作を発することを必要とせずに、データを多数回の使用のためにＤＣＬ端部に保持することが可能になる。結果の同報通信に関して、命令は結果が送られるべき全てのＤＣＬを明確に特定する。次いで、結果のデータはそれらのＤＣＬを通してのみ伝搬されるが、特定されないものを通しては伝搬されない。従って、使用された複数のＤＣＬにおいてのみ切り替え作用があるが、全ての接続された行き先ＤＣＬにおいてあるのではない。ゲート回路によってＤＣＬにおける長いエントリワイヤとの切り替えが防がれる。命令によって指令されたこの選択的な行き先同報通信によって、有用な通信のためにのみ電力を消費することが可能になる。それはレジスタファイルに基づくアーキテクチャーにおける最悪の場合のバイパスネットワーク同報通信と完全に異なる。
【００８８】
オプションのソースの消費及び個別の行き先選択を実行する命令実施態様の例が図５において示される。それは、二つのオペランドを取り、そして結果を生み出す典型的な計算操作である。実行すべき演算をコード化する演算コードフィールドに、使用すべき入力ＤＣＬをオペランドとして選択する二つのソースフィールドｓｒｃ及びｓｒｃ２が続く。それらの二つのソースに関連して、データオペランドがそれらのＤＣＬから読み取られる必要があるかどうか、又は将来の再使用のために残され得るかどうかを示している二つの読み取りビットｒ１及びｒ２がある。最後に、Ｎ出力に対してサイズＮのビットフィールドｄ１‐‐‐ｄＮとしてコード化された行き先フィールドが、各出力ＤＣＬに対して、それが結果を送るべきか否かを特定する。８つの入力ＤＣＬ、８つの出力ＤＣＬ及び８ビット演算コードを有するタイルに対して、ソースフィールドは３ビット及び行き先８ビットでコード化されるため、それが２４ビット幅の計算操作に繋がる。
【００８９】
ＬｉｔｅＦｌｏｗプロセッサ実施態様において、通信が明確であるとしても、データ変形を指令する命令はやはり計算を駆動する。通信は、オペランドを取ること、及び結果を複数のＤＣＬから複数のＤＣＬに同報通信することの副次的効果であるが、主たる仕事ではない。従って、通信及びデータの移動の大部分は計算と共に達成され、そして専用の通信プロセス又は不均一リソースを必要としない。
【００９０】
実施態様のプロセッサタイルは、二つのバス、オペランド及び結果バスの回りに組織化される。オペランドバスは複数の入力ＤＣＬ末端を複数の操作入力ポートに接続する。結果バスは複数の操作出力ポートを複数の出力ＤＣＬに接続する。本明細書においてそれがバスと呼ばれるとしても、それは操作ユニットとＤＣＬの間の制御転送のために、もっと複雑である。各々の操作はそのオペランドを取り、そしてその結果をそれらのバスを通して各ＤＣＬに送る。提示された実施態様において、それらは単純な多重通信用装置を用いて実施される。本明細書において制御は、命令、入力データ可用性及び出力リソースの動作可能性に基づいてタイルレベルで管理される。オペランド選択及び結果の同報通信は計算と同じサイクルで実行される。整数計算操作、移動及びローカルメモリ操作の大部分は一つのサイクルにおいて実行される。もっと複雑な操作に対しては、実行単位はパイプラインとされ得る。主メモリ空間アクセスは、通常の計算操作のような機能ユニットによって実行される装填記憶命令を用いてなされる。従って、専用の機能ユニットはキャッシュ又はＤＣＬによって接続されていないスクラッチパッドメモリ配列にアクセスするために使用される。本実施態様において、実行ユニットにおける内部パイプラインの使用は、それらがそれらの結果を同時に同じ行き先ＤＣＬに送らない限り、後続の命令の実行を妨げない。事実、実行ユニットパイプライン又は別のリソース上で実行される複数の命令があるとき、タイルコントローラは、命令において使用された行き先によって定義された各ＤＣＬにおける行き先同報通信順序及び命令連続順序を記憶する。
【００９１】
ＬｉｔｅＦｌｏｗプロセッサのタイル実施態様が図６において示される。それはＴ１と命名され、そして同じクラスタのＴ２、Ｔ３及びＴ４部分とインデックスされた３つの他のタイルと接続される。本タイルは５つの入力ＤＣＬ及び５つの出力ＤＣＬを有する。三つの入力及び出力がクラスタの他のタイルと通信するために使用され、そしてそれの中の二つはローカルルーピング（ｌｏｃａｌ  ｌｏｏｐｉｎｇ）ＤＣＬである。それらの複数のローカルＤＣＬは、同じタイルにおいてデータを再使用するために、又はローカルメモリからデータにアクセスするために必要である。示されたタイルは実施ユニットＥＵ、二つのバスとローカルメモリ、ＬＭＥＭ、の間で垂直の矢印によって記号化された移動ユニットを有する。図において表されていないが以下の章において詳細に述べられるローカル分岐ユニット及びローカル命令もある。実施例においては各操作タイプの一つの例があるものの、各操作の幾つかの例がタイル中に存在し得る。例えば、二つの実行ユニット及び二つの移動操作を有することが可能であり、又は実行ユニットなしで、移動及びローカルメモリのみを有することさえ可能である。
【００９２】
条件分岐はそれらの成果を定めるためのフラッグを必要とする。このために、この実施態様において、複数の専用の１ビットフラッグＤＣＬは、それらが複数のデータＤＣＬによって接続されるのと同じように互いの間でタイルを接続する。それらの複数のフラッグＤＣＬは簡略を期すために図において表されていない。複数のフラッグＤＣＬによって、クラスタの全てのタイルが同じスレッドを平行して実行することが可能になる。次いで、スレッドは、一つのタイルに対して結果が計算された、しかし制御が全てのクラスタに亘って転送された分岐又は条件分岐によって容易に制御され得る。
【００９３】
計算によって使用されそして生み出されるデータのためのパイプラインレジスタが複数のＤＣＬによって実行される。処理エレメントに対してローカルな機能ユニット中に埋め込まれ得るものを除いて、データ操作のために使用される他のパイプラインレジスタは全くない。タイルがそれ自身又は他のタイルによって使用される結果を生み出すとき、それは、計算サイクルの最後で、パイプラインレジスタに置き換わって複数のＤＣＬ中に記憶される。図７は、Ｔ１とＴ２の間のＤＣＬのみが示される二つのタイル、Ｔ１及びＴ２、を示す。これらのタイルは図６におけるものと同じである。
【００９４】
Ｔ１の実行ユニットは、それ自身及びＴ２によって使用されるであろう結果を生み出す。従って、結果データは、計算サイクルの最後でＴ１中の一つのループＤＣＬ、及びＴ１とＴ２の間のＤＣＬを通して送られる。図においてそれは太線で描かれている。サイクルの最後で、データはＤＣＬ中にラッチされ、そして正に次のサイクルで二つのタイルにおいて利用できる。尚、複数の行き先の可能性によって、殆どのデータフローアーキテクチャーにおける場合がそうであるような、専用の複写操作を使用することなしでデータ複写が可能になる。
【００９５】
もし、データ通信経路が、長いワイヤの遅延耐性故に、やはり更なるパイプライン接続を必要とするならば、余分のパイプライン段階を実行するのはＤＣＬ実施態様におけるＦＩＦＯである。それは隣接しているクラスタの間を通信する複数のＤＣＬの場合である。事実、内部クラスタ通信は、計算と同じサイクルで実行されるように最適化され、一方、クラスタの境界を交叉する複数のＤＣＬは、実施態様に依存した書き込み長さ故に、データを輸送させるために一つの完全なサイクルを取り得る。非常に短い内部クラスタ通信遅延耐性は、図８において示されるように、それらのＤＣＬが互いに非常に近くで終わっているフロアプランクラスタタイルによって達成される。サブミクロン技術において利用可能な複数のルーチングレベルのおかげで、図において示されたＤＣＬ長さは、通信遅延耐性を減少させるために、クリティカルパスの相対的に小さな比率まで短縮され得る。図８において示された四つのクラスタ間ＤＣＬは、ワイヤ遅延耐性故により長くそしてより遅い。
【００９６】
この実施態様において、各クラスタは、全体的なコントローラを使用せずに、独立してそれ自身のコードを実行する。それにも拘わらず、それらは通常のＲＩＳＣ機械におけるように各サイクルでは命令を実行しない。実行はデータフロー状になされ、それは入力データの可用性及び出力ＤＣＬの動作可能性によって同期化され、それは命令の待機をもたらし得る。このデータフロー状の実行は、単純なＤＣＬ実施態様中に埋め込み型ＦＩＦＯによって可能とされたデータフロー状の挙動故に可能である。生産者は、ＦＩＦＯを通してデータを送ることによって、消費者の実行をトリガーでき、そして消費者は満杯のＦＩＦＯからデータを取り除くことによって生産者の実行をトリガーできる。
【００９７】
タイル上で実行される命令バンドルの部分である命令は、それらのＤＣＬ状態に依存して独立して実行され得る。操作は、もしその全てのオペランドが利用可能であれば、そしてその全ての行き先が使用され得れば、実行され得る。その全てのオペランドは、オペランドがそこから取られる全ての入力ＤＣＬが空でないとき、利用できる。その行き先の全ては、もし結果が書き込まれなければならない全ての出力ＤＣＬが満杯でなければ、使用できる。マルチサイクル又はパイプライン操作のために、第一の実行サイクルはオペランドが利用できることが必要であるが、行き先は必要でなく、そして最後の実行サイクルは行き先が動作可能であることのみを必要とする。幾つかの操作が実行中であるとき、タイルコントローラは行き先ＤＣＬにおける書き込み順序を維持する。或るＤＣＬにおける書き込み順序は、命令の連続順序によって定義される。
【００９８】
命令がタイル中に取り出されるとき、その操作は非同期的に実行され、それは一旦、操作の全てのＤＣＬが動作可能であると、それが実行され得ることを意味する。唯一の例外は、操作群において最後の操作として常に実行される分岐操作に対してである。事実、分岐操作の後のサイクルは実行され、新しい命令がタイル制御レジスタ中に上書きされ、そして全ての前の操作が実行されなければならないか又は少なくともそれらの実行が始められなければならない。命令の実行は、データの可用性に依存して数サイクルを取り得て、もし、全てのデータ及び出力ＤＣＬが動作可能であるならば、それは１サイクルで実行される。
【００９９】
タイル上の命令バンドルの命令部分は非同期的に実行され得るが、同じ入力及び出力ＤＣＬをシェアもし得る。二つの操作は同じ入力ＤＣＬ、ひいては同じデータを使用し得る。それらはそれらの結果を同報通信するために同じ行き先ＤＣＬも使用し得る。まだ実行されていないそしてシェアされた行き先のための別の操作によって使用されるデータを操作が消費することを避けるために、対立しているリソース使用の場合、操作の実施において事前に定義された順序がある。通常、この順序は命令においてコード化される。それにも拘わらず、この実施態様において、この順序はハードウエアにおいてハード的にコード化されるが、それは構成レジスタを用いて構成されることもあり得る。この実施態様における順序は第一に、ローカルメモリアクセスであり、次いで移動し、次いで計算及び主メモリ操作、そして最後に分岐である。この種の実行において、操作は異なるサイクル中で実行され、そして全体の命令バンドルは完成されるために数サイクルをかかる。
【０１００】
データフロー状の同期化を使用した独立したタイルの実行は、データ依存性に従って動的にスケジュール化され、そして動的実行遅延耐性に耐える。コードは、ＲＩＳＣアーキテクチャーにおけるようにスケジュール化される代わりに、タイル上に置かれそして送られる必要があるそのデータフローグラフに近い。動的スケジューリングの有利な点は、コードがノップ（ｎｏｐ）でパッドされる（ｐａｄｄｅｄ）ことも、ソフトウエアパイプライン化ループを用いる場合のように、始めの言葉及び結びの言葉を使用することも必要としないことである。従って、この動的スケジューリングは、均一マルチコアプラットフォーム上に分配されたもののような大きな平行アプリケーションに対して有用である。
【０１０１】
データフロー状の実行はデッドロック（deadlock）に遭遇することがある。デッドロックは、両者共に、クラスタを予想されない長い待機状態に置かせることになる、コード中のエラーによって又は非常に高い遅延耐性Ｉ／Ｏによって引き起こされ得る。コードにおけるエラーは、全ての変数が定義され、そして使用前に初期化されることが必要であるプログラムの正しい連続定義からコードをコンパイルすることよって緩和され得る。それにもかかわらず、もしコード中にデッドロックエラーがやはりあるならば、キャッシュがミスするような長い遅延耐性操作を全く有しないでクラスタ中の全てのタイルが待機していることを検出することは容易である。従って、このデッドロックはそれが起きた後の次のサイクルで検出され得て、そして中断を発するために使用される。コード中のエラーが大概、デッドロックを生み出すということは述べる価値がある。プロセッサが長期間運転でき、そしてセグメントの誤りによってその実行が中断されるまでメモリ内容を破損させる、連続レジスタ機械におけるような、更なる機械的状態の破損を避けることは有利な点を有する。
【０１０２】
予想されない長い遅延耐性データフローＩ／Ｏによって、不確定な量の時間中、プロセッサが待機させられ得て、その計算を阻止されることになる。この問題はＬｉｔｅＦｌｏｗ実施態様において、特別なＤＣＬが、動作可能であるデータを有するかどうかをテストするｔｅｓｔ−ｄｆ１命令によって緩和される。これによって、ループは、データが処理され得るかどうかを調べるために、予想されないＩ／Ｏを周期的に調べることができる。Ｔｅｓｔ−ｄｆｌ命令は、Ｉ／Ｏ処理サブルーチンに条件的に分岐するために使用され得るフラッグを発生する。
【０１０３】
平行実施中のクラスタ上での空間計算は、全プロセッサ中のクラスタの位置に依存する二進性を必要とる特徴を有する。アドレス再配置能力に加えて、クラスタ間で計算を動かし得るために、空間物体コードは空間再配置能力も要求する。コードの携帯性は、一般的な復号段階によって及び動的な空間再配置能力によって可能になり得る。
【０１０４】
ＬｉｔｅＦｌｏｗプロセッサにおけるコードの実行は高度に平行的である。この平行性は命令バンドルにおける命令の間で、クラスタタイル上の命令の間で、そしてクラスタの間で起こる。１対１データフローリンクは、インデックスを用いるランダムレジスタアクセスを使用する代わりに、明確な通信と一緒に使用される。長寿命変数は小さなローカルメモリ中に保持される。ＤＣＬは、それらがデータを極めて小さく取り扱い、そして全てのそれらの端部が操作によってランダムにアクセスされ得ない故に、レジスタとは基本的に異なる。それらはローカルであり、そしてそれらの殆どは二つの異なるタイルに接続される。ＤＣＬのＦＩＦＯレジスタは計算用のパイプラインレジスタとして使用される。これによって、ＤＣＬは、サイクル中に一つの操作によって計算されたデータが、別の正に次のサイクルによって使用され得るように、殆どのパイプラインを一緒に接続する。ＤＣＬを用いた操作の間の通信は、この実施態様において、スカラーＲＩＳＣパイプライン及びＶＬＩＷ用のバイパスネットワークと同じ場所にあるものとして見ることができる。相違点は以下の通りである：（ｉ）データが極めて小さく取り扱われること、（ｉｉ）実行同期化のためにそれらが使用されること、（ｉｉｉ）動的レジスタタグ比較が全くないこと、（ｉｖ）選択された１対１リンクにのみデータが動くこと、そして最後に（ｖ）それらが後でレジスタファイル中に再び書き込まれないこと。完全なバイパスネットワーク同報通信、中央レジスタファイル及びそれらの専用パイプライン段階は非常に電力を消費するものであり、そして中央レジスタファイルを使用する埋め込み型プラットフォームにおいて電力効率を制限ることは公知である。
【０１０５】
ＤＣＬ１対１ネットワークによって、データが独立して実行されるタイルの間で交換されるとしても、タグ又はレジスタインデックスを使用せずにデータを区別することが可能になる。タイルは、その到着ＤＣＬ及びＤＣＬデータシーケンスにおけるその順序を選択することによって、或るデータと別のデータを区別する。従って、コンパイラは、全ての使用されたタイルを包含する全体的な実行脈絡を正確に知る必要がある。一例が図９において示される。
【０１０６】
三つのタイル上で実行される小さなプログラムフラグメントが図９（ａ）において示される。タイル１はデータＡ及びＢを生み出してタイル２に送り、そしてタイル３はデータＤを生み出してタイル２に送る。従って、図９（ｂ）は、ＮｏＣの場合でもあるであろうように、各タイルにおいて単一エントリポートを有する規格バス又はネットワークによって実行されたタイルの間の通信ネットワークを示す。図９（ｃ）はネットワークの１対１ＤＣＬ実施である。タイル１及び３はそれらの実行を、二つの別々のメモリからＡ及びＤを装填することによって開始する。キャッシュのミス問題のせいで、また二つのタイルが独立してコードを実行するせいでもあって、ＡはＤの前に、又はＤはＡの前に送られ得て、正確な時間スロットはデータに依存し、従って、動的に定められる。図９（ｂ）におけるように、独立して制御されるタイルを有する規格のバス又はＮｏＣ解法を使用するとき、Ａ又はＤのどちらに最初に到達するであろうかをタイル２から知ることは不可能である。従って、Ａ、Ｂ及びＤを動的に区別し得るように、例えば、ローカルレジスタ場所に対するものであり得る、インデックスをデータに付けることが必要である。図９（ｃ）における１対１ＤＣＬネットワーク実行を用いて、Ａ及びＢはタイル１からＤＣＬに、そしてＤはタイル３からＤＣＬに到達することが必要であろう。Ａがタイル１においてＢより前に生み出される故に、ＤＣＬにおけるタイル１からの到達順序はＡ続いてＢであり、そして全てのデータはタグを使用せずに区別され得る。
【０１０７】
提示された実施態様において、三つのタイプのメモリ記憶がある。大きな配列は、スクラッチパッド又はキャッシュによって実行される通常の装填／記憶操作によってアクセスされ、そしてタイル中の小さなローカルメモリは専用のオペレータ及びＤＣＬレジスタによってアクセスされる。二つの最後のものは、一次的変数を記憶するために使用されるＲＩＳＣアーキテクチャーにおけるレジスタファイルを置き換えるために使用される。それらの変数はそれらの寿命に依存して分類され得る。非常に生存期間が短い変数は複数のＤＣＬ中に単純に記憶される。それらは生み出された後、即座に続く操作によって使用され得る。それらは、データがＤＣＬから自動的に破壊されない故に、数回でも使用され得て、そして幾つかの操作によってローカルに再使用され得る。複数の出力ＤＣＬにおける命令の同報通信能力のせいで、単一データは幾つかの場所で容易に複製され得る。長寿命変数は、その生きている期間中、特別なデータのために取っておかれるであろうＤＣＬ中に留まることができる。それらは、一つ又は幾つかのタイルのローカルメモリ中にも記憶され得る。一旦、変数がローカルメモリ中に入ると、それは操作の実行において使用される前のサイクルに読み取られる必要がある。従って、専用のローカルメモリ操作は、その前の命令において発行される必要がある。クラスタの全体のデータ記憶にはローカルメモリ記憶及び複数のＤＣＬが挙げられるが、全てがランダムにアクセスされ得ないものではない。
【０１０８】
８つのデータ用語のローカルメモリを想定している図６におけるような４つのタイルのクラスタに対して、３２のローカルメモリエントリ及び全部で５２のデータ記憶場所を有する２０のＤＬＣがある。ＬｉｔｅＦｌｏｗプロセッサ実施態様におけるレジスタの使用に関して述べることの重要な利点は、データフローの実行が本質的にパイプライン経由であることである。これによって、マルチサイクル負荷のように、パイプラインでの長い遅延耐性の操作が全てのサイクルで実行され、一方、同じＤＣＬにおいて結果が送られることが可能になる。ＲＩＳＣレジスタアーキテクチャーにおいて、ループ捲き戻しが使用されなければならず、より高いレジスタ消費を引き起こす。
【０１０９】
図１０は本発明の別の実施態様を画く。本実施態様は一つのタイルのクラスタからなる。タイルは、タイルコントローラ名ＴＩＣ（図１０．１１）によって制御される。処理エレエント（図１０．８）は、ローカル制御ユニット（ＣＵ）（図１０．５）によって制御される。クラスタは、クラスタコントローラ（ＣＬＣ）（図１０．１２）によって制御される。処理エレエントはそれらのオペランドを処理エレメントのＣＵの要求に応じて選択ユニットを通して取る。処理エレエントはそれらの結果を、ＣＵの制御下で複数のＤＣＬにアクセスしている分配ユニットに送る。選択ユニット及び分配ユニットは不規則であり得て、これは全てのＤＣＬが全ての処理エレメントポートに対して利用可能とはいえないことを意味する。この特長によって、それらのユニットの複雑さを減じることが可能になる。分岐ユニットはプログラムカウンタを保持し、そして命令バンドルレジスタ（図１０．１８）中に記憶すべき次の命令バンドルのアドレス（図１０．１５）を供する。この実施態様において、分岐は遅れ得て、そして静的に予測される分岐であり得る。
【０１１０】
本発明は、新しいそして発明的なコード組織にも関する。本明細書に提示されたコード組織は、本発明によるタイルのクラスタ上で動くプログラム、又はより一般的には、処理エレメントの組のためのものである。極めて小さな命令のシーケンスである代わりに、本明細書において、プログラムはブロックに組織化され、そして二つの実行レベルを有する。第一のレベルはクラスタ上にコードのブロックを装填する。それらのブロックは小さなそして私用のコードセグメントからなる。第二のレベルは各セグメントを各タイル上で平行に連続的に実行する。第一のレベルは主命令メモリ空間から実行され、一方、第二のレベルは、ローカルでかつ私用のアドレス空間を用いて小さなローカルバッファからローカルに実行される。このローカルアドレス空間により、即座の目標アドレスを用いることによって迅速なローカル分岐が可能になる。一旦、ブロックがクラスタ上に装填されたならば、命令は、キャッシュから再装填されることを必要とせずに、直接、それらのローカルメモリから再度実施され得る。
【０１１１】
この二−レベルコード実施は、この章の残りの部分において詳述されるであろう三つの主な利点を有する。第一は、ローカル命令メモリがループを捕捉するとき、フェッチする電力消費はローカルメモリアクセス電力によって支配され、それはキャッシュアクセスよりはるかに少ない。第二は、ローカルコードにおけるローカル分岐によって、再使用されたループ数を増加させる複雑な制御経路を具現化しているループを捕捉することが可能になる。第三は、即座のアドレスを使用したローカルバッファにおける条件分岐の実行によって、分岐に、非常に限られたペナルティを持たせることになる非常に短いパイプラインが可能になる。これによって、重要な性能損を引き起こすことなく、又は電力消費の緩和技術を使用することなく、分岐集約的コードを実行することが可能になる。
【０１１２】
図１１において示される通り、二つの実行レベルがある。第一のレベルにおいて、実行ブロック（ＥＢ）と呼ばれるコードのブロックは、主命令メモリから取り出される。それらはサブ実行ブロック（ＳＥＢ）と呼ばれるコードセグメントからなる。ＳＥＢは、タイル上で実行されることを目標とする小さな命令セグメントである。ＥＢは主命令メモリ空間から取り出され、そしてそれらのコードセグメントは、クラスタ中のタイルのローカルバッファに分配される。第二の実行レベルにおいて、ＳＥＢはクラスタの全てのタイル上で独立して平行に実行される。それらの命令はローカルバッファから取り出され、そしてタイル実行パイプライン中で処理される。
【０１１３】
命令が極めて小さくアドレスされそして実行されるプログラムに対して独特のアドレス空間はない。ＥＢがアドレスされ、そして各ＳＥＢに対して一つの、複数のローカルアドレスが空間を取る、主アドレス空間がある。分岐の二つのレベルは二つの実行レベルと関係付けられる。第一のレベルで、分岐はＥＢの間の実行フローを修正し、そして目標とされるアドレスは主アドレス空間において表される。第二のレベルで、分岐によって、タイル上で実行されるＳＥＢ内部の実行フローを修正すること、及び短い目標アドレスがローカルバッファのローカルアドレス空間において表されることが可能になる。
【０１１４】
二つの実行レベルを実行する全体的な実行パイプラインが図１２において示される。それは、ＥＢキャッシュから始まりそしてタイル実行段階で終わる四つの段階を有する。第一のステージの最初の二つはＥＢ実行レベルに関連し、一方、最後の二つはＳＥＢ実行レベルに関連する。第一の実行レベルにおいて、ブロックはＥＢキャッシュから取り出され、そしてそれらのＳＥＢはタイルローカルバッファに書き込まれる。第二の実行レベルにおいて、ＳＥＢはクラスタの各タイルにおいて独立して実行される。一つのタイル中の一つのＳＥＢ実施のみが図１２において表されており、他のタイルへのＳＥＢ分配は、最後のＥＢ実行段階を去る点線によって描かれている。ＥＢキャッシュはＥＢポインタレジスタＥＢＰを用いてアクセスされ、一方、ＳＥＢにおける命令はＳＥＢポインタレジスタ、ＳＥＢＰ、を用いてアクセスされる。ＥＢは、パイプラインにおけるラインレジスタ、ＬＩＮＥ−ＲＥＧ、を用いて、キャッシュから一行一行取り出される。
【０１１５】
命令は二つの程において復号される：第一でかつ主たる復号工程は、ＥＢが主命令メモリから装填され、そしてＳＥＢを保持しているローカルメモリ中に書き込まれるときになされる。第二の工程は、命令がＳＥＢバッファからタイル制御レジスタに読み取られるときに実行される。それらの二つの工程は、図１２において復号（１）及び復号（２）と記される。ＳＥＢバッファ中に書き込む前の第一の復号工程は大部分の復号を行い、一方、第二の工程はＳＥＢバッファ中に記憶された命令を広げるのみである。この第二の工程が非常に低い複雑性を有する故に、それによって、専用のパイプライン段階を必要とせずに、ローカルバッファからフェッチされた命令を即座に実行することが可能になる。バッファにおける圧縮された命令様式よって、そのサイズを合理的なものに維持することが可能になる。この二段階の復号によって、復号遅延耐性とバッファサイズの間のトレードオフがなされる。
【０１１６】
ＳＥＢはＥＢ内にパックされ、そしてＥＢの実行中に、クラスタの各タイルのローカルバッファ中に書き込まれる。それらは、プログラムによって実行するための実際の計算をコード化する命令シーケンスからなる。ＳＥＢの実行中に、命令はＳＥＢバッファから取り出され、そしてタイル上で実行される。二つの工程の復号のせいで、専用の復号パイプライン段階の必要は全くない。更に、タイルがオペランド用のレジスタファイルを使用しない故に、レジスタが後方の段階を読み取り及び再び書き込む必要が全くない。ＳＥＢ実行には命令を実行するための二つのパイプライン段階のみが必要であり、それはローカル命令メモリの取り出し及び実行、ローカル取り出し及び復号（２）及び図１２における実行である。
【０１１７】
ＳＥＢは、キャッシュ機構支援を全く有しないスクラッチパッドとして直接アクセスされる小さなローカルメモリ中に書き込まれる。このローカルメモリは私用のアドレス空間を実装する。従って、ＳＥＢサイズは、全体のＳＥＢを保持するために十分に大きくなければならないローカルメモリのサイズによって制限される。
【０１１８】
ＳＥＢの実行は常にその第一の命令によって始まる。その後で、内部分岐がＳＥＢ中の如何なる命令をも自由に目標とする。ＳＥＢ内部の実行順序は連続的である。それは、もし制御フローが分岐によって中断されないならば、明確に実行される引き続く命令が次のアドレスに置かれるものであることを意味する。分岐が如何なる命令をも自由に目標とするので、ループ又は入れ子になったループでさえ、命令キャッシュからＥＢを繰り返して再装填することを必要とせずに、ローカルＳＥＢバッファから繰り返して実行され得る。
【０１１９】
一旦、ＥＢが装填されそしてその実行が始まると、全てのＳＥＢはクラスタの全てのタイル上で平行して実行される。ＳＥＢ内部の実行順序は連続的であるが、異なるＳＥＢに属する命令の実施順序は定義されない。事実、命令の実行がそのオペランドの可用性に依存する故に、ＳＥＢ内部のその実施順序は、コードセグメント中のその位置によって保証されるが、その実際の実行時間スロットは保証されない。命令の実際の実行スロットは動的に定められ、そしてデータキャッシュミス又は別のタイルから由来するオペランド依存性のような外部遅延耐性によって影響され得る。図１３は４タイルクラスタ上での独立したＳＥＢ実行の例を示す。
【０１２０】
この例はＦＩＲフィルタカーネルから取られる。それは、足し算によって最初にインデックス変数を増加し、次いで、データ及び係数を装填し、最後にそれらを乗じて結果を蓄積する。各ＳＥＢはそれらの第一のアドレスに置かれた単一命令を保持する。それらは最初のサイクル中に全て発行されるが、データの依存性故に、それらはこのサイクル中に全て実行されるものではない。それらの実際の実行は、オペランドの可用性によってトリガーされ、そしてその実行は各タイルにおいて独立して制御される。図の底部でのテーブルは各命令の実行スロットを示す。装填及びＭＡＣ操作は二つのサイクルを取る。依存性の原因となるデータの動きは、図において影付き矢印によって表される。各タイル及びデータフローの実行における独立した実行制御のせいで、正しい実行を静的にスケジュールするためにコードセグメントをノップでパッドする必要がないことを述べることは重要である。これによってソフトウエアパイプラインのカーネルにおける始めの言葉及び結びの言葉の部分の必要性も除かれ、プログラム命令カウントを減少させることになる。
【０１２１】
ＳＥＢの実行は常にその第一の命令によって始まる。その後、内部分岐が自由になり、そして如何なる命令をも目標とできる。分岐命令はコード中で単独で実行され得るか、又はやはり単一タイルに対するものであるがＶＬＩＷコードにおけるように操作群の部分であり得る。後者の場合、その実行は命令の他の操作部分と同期化され得るかまたはされ得ない。それが同期化されないとき、命令の全ての操作は直ぐに引き受けられないが、分岐操作は、もしあれば、常に最後に引き受けられる。これは、新しいものをフェッチすることによって、完全には終了していない操作群の再書き込みを避けるために必要とされる。
【０１２２】
ローカル命令メモリはローカルで私用のアドレス空間を実装する。このアドレス空間は限られたサイズを有し、そして典型的には２５６の命令よりも小さいか又ははるかに小さい。１バイトより小さいアドレスの使用故に、分岐目標アドレスはコードにおいて即座の値として直接提供される。事実、そのような小さいアドレスは相対的である必要はなく、広い３２ビットアドレス空間の場合であるように、現在の次のアドレスへの移動を加えることによって計算される。
【０１２３】
図１４はローカルパイプラインにおけるＳＥＢ分岐支援実施を示す。専用の分岐フィールドに各命令が提供される。それは分岐演算コードと一緒に条件分岐のための即座の目標アドレスを保持する。ローカル取り出し段階の開始時点で、ローカルコントローラは、次のＳＥＰポインタ、ＳＥＢＰ、と現在の命令＠の即座のアドレスフィールドの間で、分岐演算コードフィールドに依存する多重通信用装置を用いて、ｏｐｃを選択する。
【０１２４】
即座の値を使用するこのローカル分岐は二つの利点を有する。第一は電力消費においてである。各実行された命令に対する３２ビットの追加、及び各取られた分岐に対する別の余分な追加を要求する３２ビットの完全なプログラムカウンタを維持する必要はない。小さなローカルなアドレス空間を用いて、１バイト未満のローカルカウンタを維持することのみが必要であり、そして分岐に対する追加は全く要求されない。第二の利点は遅延耐性である。分岐目標アドレス計算に対する専用のパイプライン段階を使用することは必要でない。これによって、条件分岐の場合でさえ、遅延耐性なしで、分岐に続く次の命令が即座に利用できるようになる。事実、図１４において示されるように、次の連続アドレス又は分岐目標アドレスは、ローカルメモリの取り出し段階中に選択される。従って、もし分岐条件フラッグが、何時分岐命令が実行されるかを知らされるならば、分岐を実行するためのペナルティは全くない。もし条件フラッグが分岐の実行中に計算されなければならないならば、低コストの静的予測に基づいて予想がなされ得る。この予想が取り出し段階中にのみ起こる故に、実行段階において間違った値は全く計算されず、そして間違った予想に対処するために複雑な状態回復機構を有することは必要でない。
【０１２５】
分岐フィールドは比較的短く、そして、即座の目標アドレス、分岐演算コード及び使用すべきフラッグ条件ソース上の情報をコード化するために、１６ビット未満を取る。この限られたサイズは、分岐操作が、一つの長い命令としてコード化された操作群における計算又はメモリ操作と一緒にパックされる故に面白い。パックされた分岐操作は、緊密なループカーネルを実行するとき、非常に有用である。事実、分岐操作はカーネル操作と一緒に実行され、それらは専用の時間スロットを必要としない。従って、分岐はゼロ実行遅延耐性オーバーヘッドを有する。静的な予測と一緒に、それはループ捲き戻しの必要性を排除し、ＥＢキャッシュの占有及びバンド幅を減少させる。
【０１２６】
タイトなループを効率的に実行するには、数クラスタに亘ってさえ広がり得るタイルの組上のカーネルを平行化することが必要である。カーネルが平行化されるとき、タイル当たりの命令カウントは減少し、そして空間計算の場合１つに達することさえできる。この状況において、各タイルは単一の命令を繰り返して実行する。前に説明した通り、ゼロ遅延耐性オーバーヘッドでの分岐実行のおかげで、タイル中の単一の命令ループに達することが可能である。
【０１２７】
命令がＳＥＢバッファから取り出される前に、それはタイルの制御レジスタ、ＣＴＴＬ−ＲＥＧ、中に既に存在しているかどうかチェックされる。もし存在する場合であれば、バッファはアクセスされず、そしてタイル制御レジスタはクロックゲートされる（ｃｌｏｃｋ  ｇａｔｅｄ）。従って、単一命令が繰り返して実行されるときの空間計算において、命令パイプラインからの動的電力消費はゼロであり、そして命令は、制御レジスタから直接、単純に再使用される。
【０１２８】
結論として、ＳＥＢにおけるローカル分岐は強い遅延耐性及び電力効率の改善を提供する。事実、ローカル分岐実施ペナルティは、その方向が実行前に知られているとき、ゼロサイクルであり、そしてそれが計算されなければならないとき、１サイクルである。後者の場合、ひらめきによってこの遅延耐性が隠され得て、そしてそれは引き込み段階においてのみ生じる。更に、命令と平行したローカル分岐実施によって、分岐命令自身に対してゼロサイクルが使用されることになる。従って、それによって非常に小さなカーネルにおける分岐発行スロットの問題は完全に緩和され、そして捲き戻し又はループＩＬＰ変形を使用することは必要でない。
【０１２９】
ＥＢは分岐を用いる実行フローに従って連続的に実行される。ＥＢの実行は連続的でなく、これは実行すべき次のＥＢが絶対的に、次のアドレスに置かれたものでないことを意味する。現在のものが終了したとき、実行すべき次に続くＥＢは、ブロック分岐の実行によって明確に定められなければならない。
【０１３０】
ＥＢはタイルのクラスタ上で実行され、そしてＥＢの実行はプログラム実行スレッドに対応する。実行モデルによって、マルチコアプロセッサが制御の複数スレッドを実行できるのと同じように、複数スレッドを使用する複数クラスタ上の単一ＥＢ／ＳＥＢに基づくプログラムを実行することが可能になる。本明細書において、各スレッドはＥＢのシーケンスを実行する。
【０１３１】
ＥＢはヘッダー及び幾つかのＳＥＢコードセグメントからなる。ヘッダーは、そのサイズ、使用されたタイル及び命令様式である復号情報を供する。それは以下に説明する通り、次に続くブロックの静的予想に関する情報も埋め込み得る。ＥＢはクラスタに対するＳＥＢセグメントを保持し、それを二次元コードにする。一次元はタイルインデックスに関連し、そして二次元はＳＥＢにおける連続命令順序に関連する。この二次元のコードは二つの実施欠陥を有する。その第一は、キャッシュライン組織が、幾つかのタイルが使用され得ないというように、更に変わり得るクラスタサイズにフィットし得ないことである。キャッシュは異なるクラスタによってもシェアされ得る。キャッシュとタイルの間のコード整列も、実行頻度が低い部分におけるコード圧縮のためにコンパクトな命令様式を使用することによって変わり得る。第二の欠点は、ＳＥＢが同じＥＢにおいて非常に異なるサイズを有し得ることである。それらの問題故に、ＥＢコードレイアウトは固定されたキャッシュの実行に完全には依存しない。それは、空の命令の使用が制限された可変サイズのＳＥＢを表すことに対しても柔軟である。
【０１３２】
ＥＢコードレイアウトは、主命令メモリ空間中のＳＥＢ命令の一次元シーケンスからなる。命令はＥＢにおけるそれらの相対的なアドレスによって順序付けられる。各命令は、ＥＢがクラスタ上に装填されるときに、それらの相対的なアドレスと一緒に独立したＳＥＢセグメントの構築を可能にするそのＳＥＢインデックスによって前付けされる。この工程中に、図１２において示された第一のＥＢ復号段階は、ヘッダー、それらの順序及びそれらの接頭インデックス情報に基づいて、それらの各タイルにＳＥＢ命令をディスパッチする。ＥＢコードレイアウトの例が図１５において示される。
【０１３３】
ＥＢ内容が図１５（ａ）において示され、それは４つのタイルのクラスタに対するＳＥＢを保持している。そのＳＥＢの全てが同じ命令カウントを有するわけではない。その論理的内容は、図１５（ｂ）において示されたＳＥＢ命令のシーケンスからなる。最も重要でないアドレスは内部ラインであり、一方、最も重要なアドレスはラインインデックスを伴って増加し、これは、極めて小さい命令がキャッシュインデックス空間においてアドレスされるのと同じように、各ＳＥＢ命令に相対的な位置を与える。同じタイルを目標としている二つの命令が同じラインに属するとき、ライン中の第一の命令は最初に装填され、一方、第二の命令は次のサイクルを待つ。その例において、図１５（ｂ）の第三のラインにおける、タイル１を接頭辞として持つ二つの命令は、第一のｉｎｓｎ１．２が第二のｉｎｓｎ１．３、ひいてはタイル１のＳＥＢにおけるそれらの相対的な位置２及び３、に先行するように順序付けられる。
【０１３４】
物理的キャッシュ組織の独立性が図１５（ｂ）及び（ｃ）に示されており、ここで、同じＥＢは二つのキャッシュ装備中に記憶される。（ｂ）において、キャッシュのラインは４命令幅であり、そして（ｃ）において、それらは２命令のみからなる。タイル接頭を用いた第一の復号段階における命令発信によって、コードをパッドするためにタイル整列、ひいては空の命令の使用を維持する必要なしに、ＥＢにおけるパックＳＥＢ命令が可能になる。図１５（ｂ）及び（ｃ）は、図１５（ａ）において、ＳＥＢは非常に異なるサイズを有するものの、一つの空の命令のみが挿入される必要があることを示す。些細な整列された実行は、１４の有用なものに対して１０の空の命令を必要としたであろうし、それは４２パーセントの使用されないエントリに繋がる。
【０１３５】
ＥＢの実行中に、図１２において示されたＬＩＮＥ−ＲＥＧレジスタを用いてＥＢキャッシュからＳＥＢバッファにブロックが一行一行装填される。ラインによって組織化されたこのブロックレイアウトによって、第一の命令ラインがＥＢ実施の初期のスタート時に装填されたとき、ＳＥＢ実施を既に始めることが可能になる。各命令のタイルインデックス接頭辞に基づいて、復号部は命令を、もしそれらがタイルに対応したラインに組織化されていないとしても、それらの各タイルにディスパッチする。タイルインデックス接頭辞は柔軟であり、そしてキャッシュのサイズ及びそれらのあり得る実行スロットに基づいて、コンパイラがＥＢ中に命令を置くことを可能にする。
【０１３６】
二つの実行レベルと一緒に、二つの分岐レベルがある。ＳＥＢレベルによって、ＳＥＢ内部でのみ命令の間で分岐することが可能になり、一方、ＥＢレベルで、分岐がＥＢの間で実行される。ＥＢ分岐命令は正常な命令のように実行され、そしてＳＥＢの部分である。ＥＢがクラスタ全体に対するコードを供する故に、ＥＢ分岐が起きるとき、クラスタ中の全てのタイルはそれらの新しいＳＥＢに分岐しなければならない。各タイルにおけるローカルな制御のせいで、専用の制御命令は、クラスタの各タイルにおいて実行されなければならない。それにも拘わらず、タイル中の全ての分岐命令は同じではない。一つのＥＢ分岐命令のみがクラスタの一つのタイルにおいてのみ実行され、他とタイルは、ＥＢの実行中に装填される次のＳＥＢを待つ。このＳＥＢ待機は、取っておかれたアドレスを目標とするローカル分岐によって実行され、それはタイルが、実行のために装填される最初の次のＳＥＢ命令を待つことを意味する。ＥＢ分岐の例が図１６において示される。
【０１３７】
三つのＥＢがそれらのＳＥＢと共に表される。この図において、命令接頭辞はブロック分岐に関係する分岐フィールド内容を表す。条件分岐はＣＢと記され、そして別のタイルにおいて発行されるブロック分岐に対する待機はＷと記される。ＥＢ分岐実施は、この例においては、ｉｎｓｎ  １．１と一緒にローカル条件分岐ＣＢを実行することによって始まる。もし、それが取られるならば、ＥＢ分岐命令、ＥＢ−ＢＲ２、が実行され、さもなければ続く命令、ＥＢ−ＢＲ１、が実行される。ＥＢ−ＢＲ１はＥＢ３を目標とし、一方、ＥＢ−ＢＲ２はＥＢ２を目標とする。この分岐の結果とは独立して、タイル２、３及び４は、新しいＳＥＢの待機、Ｗ分岐命令、を実行することによって新しいＳＥＢを待つ。新しいＳＥＢの待機は、現在のＳＥＢが終了するときに実行される。ＥＢ２及びＥＢ３の両者は非条件ブロック分岐、ＥＢ−ＢＲ、の実行と共に終わる。尚、新しいＳＥＢの待機、Ｗ、は二つの機能を有する：（ｉ）ローカルＳＥＢバッファメモリが、予期せぬ命令の破壊なしに、新しいＳＥＢによって安全に上書きされることを可能にすること、そして（ｉｉ）少なくともその最初の命令が動作可能であるとき、新しいＳＥＢを用いた実行を始めること。
【０１３８】
ＥＢがキャッシュ中にあり、そして全てのタイルにおいて実行が終了しているとき、ＥＢ分岐に対するペナルティは四つのサイクルである：一つ目のサイクルは新しいアドレスをＥＢコントローラに供する分岐命令を実行すること、第二のサイクルは第一のブロックラインをＥＢキャッシュからフェッチすること、第三のサイクルはローカルＳＥＢバッファにそれを書き込むこと、最後の第四のサイクルはこの命令をタイルのタイル制御レジスタにローカルに引き込みそして書き込むことである。新しいＥＢからの第一の命令は、次いで、次の続くサイクルが実行されるべく動作可能になる。タイルが動作可能であるときに、ローカルＳＥＢバッファをバイパスすることによって、この分岐のペナルティを３つのサイクルに減ずること、そして直接的に復号すること及びタイル制御レジスタに命令をディスパッチすることが可能である。これを行っているとき、ローカル分岐のせいで追加できる、あり得る将来の実行のために、命令の複写が、ローカルＳＥＢバッファ中にやはり書き込まれる。
【０１３９】
ＥＢの間の分岐には、ＥＢ分岐命令実行と新しいＳＥＢ実行の間で少なくとも３つの時間サイクルがかかる。この遅延耐性を緩和するために、ローカルＳＥＢバッファは二つのＳＥＢを保持させられる。図１７において示された通り、ローカルＳＥＢバッファは二つのＳＥＢ、ＳＥＢ０及びＳＥＢ１を保持する。ＳＥＢが実行されている最中に（２）、新しいものがバッファの第二の部分中に装填され得る（１）。従って、新しいＥＢは、前のＥＢの直後に装填され始められ得る。有利な点は、現在のＳＥＢがその実行を終了し、そして新しいものが動作可能になるとき、それがペナルティなしで直ちに実行され得ることである。図においてＳと称される状態ビットは、バッファの二つの部分に対してローカルアドレスの最高のオーダのビットを供する。それはバッファの二つの部分の間を切り替えるＥＢ分岐でトグル留めされる（toggled）。
【０１４０】
現在のものが終了しないまま新しいＥＢを前もってフェッチするためには、ＥＢの実行は連続的でなく、そしてＥＢ分岐命令がまだ実行されていない故に、新しいアドレスを供することが必要である。このアドレスは、実行されるべき最もふさわしい続くブロックとして、現在のＥＢのヘッダー中に提供される。これは続くブロック分岐に関する静的予測に対応する。次の続くＥＢアドレスが、既にバッファ中にある二つのＥＢの一つに合致するとき、それはＥＢキャッシュから再び装填されず、その代わりにバッファから直接再使用される。このブロックの再使用によって、バッファの二つの部分に広がるループカーネルを、常にブロックを装填する、又はＳＥＢ実行のためのバッファの半分だけを使用するというペナルティを引き起こさずに、繰り返して実行することが可能になる。従って、二つの部分ＳＥＢバッファは完全に使用される。
【０１４１】
実行されることになりそうなブロックの次のＥＢアドレスは、現在のブロックのヘッダー中のコンパイル−時間に記録される。従って、このブロックを目標にしているＥＢ分岐命令は、それがヘッダー中に既に存在することをコンパイラが知っている故に、このアドレスを再び供することを必要としない。従って、それらのＥＢ分岐命令は、取っておかれたローカル目標アドレスを目標とするローカル分岐命令として単純に実行される。そのようなローカル分岐命令が実行されるとき、それは既にバッファ中にある次の予想されるブロックアドレアスを目標とするブロック分岐として解釈される。更に、それはバッファの他の部分の第一の命令に対するローカル分岐命令として実行され得る。従って、静的な次のブロック予想が正しいとき、そして少なくとも最初の次のＳＥＢ命令が前もって取り出されており、又はバッファ中で有効であるとき、ブロック分岐ペナルティは、ゼロサイクルであるローカル分岐ペナルティと同じである。
【０１４２】
或る好ましいそのバージョンを参照して、本発明が可成り詳細に述べられてきたものも、他のバージョンも可能である。従って、添付された請求項の精神及び範囲は、ここに含まれる好ましいバージョンの記述に制限されるべきではない。
【０１４３】
読む人の注目は、この明細書と同時に提出され、そしてこの明細書と共に公に調べられる全ての論文及び文献に向けられ、そして全てのそのような論文及び文献の内容が本明細書に参照することにより取り込まれているものとする（如何なる添付請求項、要旨及び図面をも含む）。この明細書において開示された全ての特長は、別に明確に記載がない限り、同じ、同等又は類似の目的を果たす代替の特長によって置き換えられ得る。別に明確に述べられない限り、開示された各特長は、同等又は類似の特長の一般的なシリーズの一例に過ぎない。
【０１４４】
参照文献
21. A. Jerraya and W. Wolf, “Multiprocessor Systems-on- Chips”. Elsevier, 2004. 
31. B. Bougard, B. De Sutter, D. Verkest, L. Van der Perre, 及び R. Lauwereins, “A Coarse-Grained Array Accelerator for Software-Deffned Radio Baseband Processing”, Micro, IEEE, vol. 28, pp. 41-50, July-Aug. 2008. 
32. H. Singh, M.-H. Lee, G. Lu, F. Kurdahi, N. Bagherzadeh, 及び E. Chaves Filho, “MorphoSys: an integrated reconfigurable system for data-parallel and computation-intensive applications”, Computers, IEEE Transactions on, vol. 49, pp. 465-481, May 2000. 
33. V. Baumgarte, G. Ehlers, F. May, A. N. M. Vorbach, 及び M. Weinhardt, “PACT
XPP - self-reconfigurable data processing architecture”, The Journal of Supercomputing, vol. 26, pp. 167-184, September 2003.
34. P. Heysters, G. Smit, E. Molenkamp, 及び G. Rauwerda, “Flexibility of the Montium Coarse-Grained Reconfigurable Processing Tile”, in 4th PROGRESS Symposium on Embedded Systems, Nieuwegein, The Netherlands., pp. 102-108, 2003.
35. M. Butts, “Synchronization through Communication in a Massively Parallel Processor Array”, Micro, IEEE, vol. 27, pp. 32-40, Sept. -Oct. 2007. 
37. M. Taylor, J. Kim, J. Miller, D. Wentzlaff, F. Ghodrat, B. Green ald, H. Hoff- man, P. Johnson, J.-W. Lee, W. Lee, A. Ma, A. Saraf, M. Seneski, N. Shnidman, V. Strumpen, M. Frank, S. Amarasinghe, 及び A. Agarwal, “The Raw microprocessor: a computational fabric for software circuits and general-purpose programs”, Micro, IEEE, vol. 22, pp. 25-35, Mar/Apr 2002.
60. S. Pasricha及び N. Dutt, “On-chip communication architectures: system on chip interconnect”. Morgan Kaufmann, 2008.
61. L. Benini及び G. D. Micheli, “Networks on Chips: technology and tools”. Morgan Kaufmann, 2006. 
64. M. Taylor, J. Psota, A. Saraf, N. Shnidman, V. Strumpen, M. Frank, S. Amarasinghe, A. Agarwal, W. Lee, J. Miller, D. Wentzlaff, I. Bratt, B. Greenwald, H. Hoffmann, P. Johnson, 及び J. Kim, “Evaluation of the Raw microprocessor: an exposed-wire-delay architecture for ILP and streams”, in Computer Architecture, 2004. Proceedings. 31st Annual International Symposium on, pp. 2-13, June 2004.
66. M. Butts, A. M. Jones, 及び P. Wasson, “A structural object programming model, architecture, chip and tools for reconfigurable computing”, Field-Programmable Custom Computing Machines, Annual IEEE Symposium on, vol. 0, pp. 55-64, 2007.
67. D. Kissler, F. Hannig, A. Kupriyanov, 及び J. Teich, “A dynamically reconfigurable weakly programmable processor array architecture template”, in International Workshop on Reconfigurable Communication Centric System-on-Chips (ReCoSoC) , pp. 31-37, 2006. 
71. R. Bajwa, M. Hiraki, H. Kojima, D. Gorny, K. Nitta, A. Shridhar, K. Seki, 及び K. Sasaki, “Instruction buffering to reduce power in processors for signal processing”, Very Large Scale Integration (VLSI) Systems, IEEE Transactions on, vol. 5, pp. 417-424, Dec 1997.
72. M. Jayapala, F. Barat, T. Vander Aa, F. Catthoor, H. Corporaal, 及び G. Deconinck, “Clustered loop buffer organization for low energy VLIW embedded processors”, Computers, IEEE Transactions on, vol. 54, pp. 672-683, Jun 2005. 
73. T. V. Aa, M. Jayapala, H. Corporaal, F. Catthoor, 及び G. Deconinck, “Impact of ILP-improving Code Transformations on Instruction Memory Energy”, in Proc. of 11th Workshop on Interaction between Compilers and Architectures (INTERACT-11) , pp. 443-448, 2007. 
78. J. Dennis及び D. Misunas, “A preliminary architecture for a basic data-ow processor”, ACM SIGARCH Computer Architecture News, vol. 3, no. 4, pp. 126-132, 1974.
79. G. Papadopoulos及び D. Culler, “Monsoon: an explicit token-store architecture”, in Proceedings of the 17th annual international symposium on Computer Architecture, pp. 82-91, ACM New York, NY, USA, 1990.
80. A. Davis, “The architecture and system method of DDM1: A recursively structured Data Driven Machine”, in Proceedings of the 5th annual symposium on Computer architecture, pp. 210-215, ACM New York, NY, USA, 1978.
81. M. Kishi, H. Yasuhara, 及び Y. Kawamura, “Dddp-a distributed data driven processor”, in Proceedings of the 10th annual international symposium on Computer architecture, pp. 236-242, ACM New York, NY, USA, 1983. 
82. M. Amamiya, M. Takesue, R. Hasegawa, 及び H. Mikami, “DFM: the data ow machine highly parallel symbol manipulation”, in Proceedings of the 1987 Fall Joint Computer Conference on Exploring technology: today and tomorrow, pp. 602-611, IEEE Computer Society Press Los Alamitos, CA, USA, 1987.
83. Y. Patt, W. Hwu, 及び M. Shebanow, “HPS, a new microarchitecture: rationale
and introduction”, in Proceedings of the 18th annual workshop on Microprogramming, pp. 103-108, ACM New York, NY, USA, 1985.
84. Y. Patt, S. Melvin, W. Hwu, 及び M. Shebanow, “Critical issues regarding HPS, a high performance microarchitecture”, in Proceedings of the 18th annual workshop on Microprogramming, pp. 109-116, ACM New York, NY, USA, 1985.
85. S. Weiss及び J. Smith, “Instruction issue logic for pipelined supercomputers”, ACM SIGARCH Computer Architecture News, vol. 12, no. 3, pp. 110-118, 1984. 86. J. Smith and G. Sohi, “The microarchitecture of superscalar processors”, Proceedings of the IEEE, vol. 83, no. 12, pp. 1609-1624, 1995. 
87. R. Tomasulo, “An efficient algorithm for exploiting multiple arithmetic units”, IBM Journal of research and Development, vol. 11, no. 1, pp. 25-33, 1967. 88. R. Kessler ら., “The alpha 21264 microprocessor”, IEEE micro, vol. 19, no. 2, pp. 24-36, 1999. 
89. S. McFarling, “Combining branch predictors”, tech. rep., Technical Report TN-36, Digital Western Research Laboratory, 1993. 
90. J. Smith及び A. Pleszkun, “Implementing precise interrupts in pipelined processors”, IEEE Transactions on Computers, vol. 37, no. 5, pp. 562-573, 1988. 
91. S. Swanson, K. Michelson, A. Schwerin, 及び M. Oskin, “WaveScalar”, in Proceedings of the 36th International Symposium on Microarchitecture (MICRO), Citeseer, 2003. 
92. S. Swanson, A. Schwerin, M. Mercaldi, A. Petersen, A. Putnam, K. Michelson, M. Oskin, 及び S. Eggers, “The wavescalar architecture”, ACM Transactions on Computer Systems (TOCS), vol. 25, No. 2, p. 4, 2007. 
93. K. Kavi, R. Giorgi, 及び J. Arul, “Scheduled data ow: “execution paradigm,
architecture, and performance evaluation”, IEEE Transactions on Computers, pp.
834-846, 2001.
94. K. Sankaralingam, R. Nagarajan, H. Liu, C. Kim, J. Huh, D. Burger, S. Keckler, 及び C. Moore, “Exploiting ILP, TLP, and DLP with the polymorphous TRIPS architecture”, in Proceedings of the 30th annual international symposium on Computer architecture, p. 433, ACM, 2003.
95. M. Homewood, D. May, D. Shepherd, 及び R. Shepherd, “The IMS T 800 transputer.”, IEEE Micro, vol. 7, no. 5, pp. 10-26, 1987.
96. A. Duller, G. Panesar, 及び D. Towner, “Parallel Processing-the picoChip way”, Communicating Processing Architectures, pp. 125-138, 2003.
97. Z. Yu, M. Meeuwsen, R. Apperson, 0. Sattari, M. Lai, J. Webb, E. Work, D. Truong, T. Mohsenin, 及び B. Baas, “AsAP: An asynchronous array of simple processors”, IEEE Journal of Solid State Circuits, vol. 43, no. 3, p. 695, 2008. 
98. M. Butts, B. Budlong, P. Wasson, 及び E. White, “Reconfigurable Work Farms on a Massively Parallel Processor Array”, in Field-Programmable Custom Computing Machines, 2008. FCCM '08. 16th International Symposium on, pp. 206-215, April 2008.
99. “Tilera.” http://www.tilera.com.
100. C. Moritz, D. Yeung, 及び A. Agarwal, “Exploring optimal cost-performance designs for Raw microprocessors”, in FPGAs for Custom Computing Machines, 1998.
Proceedings. IEEE Symposium on, pp. 12-27, Apr 1998. 
101. H. Corporaal及び H. Mulder, “MOVE: A framework for high-performance processor design”, in Proceedings of the 1991 ACM/IEEE conference on Supercomputing, pp. 692-701, ACM New York, NY, USA, 1991. 
102. H. Corporaal及び M. Arnold, "Using transport triggered architectures for embedded processor 
103. J. Leijten, J. van Meerbergen, A. Timmer, 及び J. Jess, “PROPHID: a datadriven multi-processor architecture for high-performance DSP”, in Proceedings of the 1997 European conference on Design and Test, IEEE Computer Society Washington, DC, USA, 1997.
104. K. Goossens, J. Dielissen, 及び A. Radulescu, “Aethereal network on chip: concepts, architectures, and implementations”, IEEE Design and Test of Computers, vol. 22, no. 5, pp. 414-421, 2005. 
105. W. Hwu, S. Mahlke, W. Chen, P. Chang, N. Warter, R. Bringmann, R. Ouellette, R. Hank, T. Kiyohara, G. Haab, ら, “The superblock: an effective technique for VLIW and superscalar compilation”, The Journal of Supercomputing, vol. 7, no. 1, pp. 229-248, 1993. 
【図１】
2013529322.tif 000003
【図２】
2013529322.tif 000004
【図３】
2013529322.tif 000005
【図４】
2013529322.tif 000006
【図５】
2013529322.tif 000007
【図６】
2013529322.tif 000008
【図７】
2013529322.tif 000009
【図８】
2013529322.tif 000010
【図９】
2013529322.tif 000011
【図１０】
2013529322.tif 000012
【図１１】
2013529322.tif 000013
【図１２】
2013529322.tif 000014
【図１３】
2013529322.tif 000015
【図１４】
2013529322.tif 000016
【図１５】
2013529322.tif 000017
【図１６】
2013529322.tif 000018
【図１７】
2013529322.tif 000019
【国際調査報告】
2013529322.tif 000020
2013529322.tif 000021
2013529322.tif 000022