本発明は、多くの異なる形態の実施形態を受け入れる余地があるが、特定の実施例およびその実施形態が図面に示され、また本明細書において詳細に説明されているが、ただし、本開示は、本発明の原理を例示するものとして考えられるべきであり、本発明を例示されている特定の実施例および実施形態に制限することを意図されていないこと、また説明されている実施形態の多数の変更形態もしくは修正形態が可能であり、同等のものであると考えられることが了解されることを条件とする。この点に関して、本発明に合致する少なくとも1つの実施形態を説明するのに先立って、本発明は、その応用例において、上述の、後述の、図面に例示されている、または実施例において説明されているようなコンポーネントの構造の詳細ならびにコンポーネントの配列に限定されないことは理解されるであろう。本発明に合致する方法、システム、および装置は、他の実施形態にも対応することができ、またさまざまな方法で実施および実行されうる。また、本明細書で使用される語法および術語は、以下に記載される要約書とともに、説明を目的としたものであり、制限するものとしてみなされるべきではないことも理解されるであろう。
上述のように、本発明のICアーキテクチャの最も新規性の高い特徴の1つは、回復性であり、製造時の欠陥、ICを使用する際に生じうる不具合への適応、および新しい機能、サービス、アルゴリズム、および他のイベントに対する適応性をもたらすものである。本発明のICアーキテクチャの回復性とロバスト性により、さまざまな欠陥を含んで製造された本発明のICがそのように欠陥があってもきわめて利用可能性が高く、また完全に機能するため、IC製造の歩留まりを向上させることができる。
それに加えて、動作時のこの回復性は、「ニューラル」つまり生物的自己回復機能として説明することができるが、それというのも、ICの一部が損傷したり、他の何らかの形で使用不能になった場合でも、ICのそれ以外の部分が有効に「リクルート」される、つまり損傷した部分の機能を引き継いで実行するように再割り当てされるからである。それに加えて、以下で詳しく説明するように、機能が再割り当てされると、新しい制御およびデータ経路も作成され、移動された演算は他のIC演算で継ぎ目なく実行を続ける。このような適応回復および自己回復機能は、選択された実施形態に応じて、リアルタイムで、またはほぼリアルタイムで実行されうる。これにより、ICは、十分なコンピューティング資源が動作可能な状態にあれば、途絶することなく動作し続けることができる。このような回復性のおかげで、ICに損傷が発生した場合に、突発的故障になることなく、実行のグレースフル・デグラデーションが可能になり、このような回復性は、健康安全関係のアプリケーションでは特に重要である。
以下でさらに詳しく説明されるように、本発明の例示的な実施形態のいくつかの特徴を用いることで、そのような回復性、継続的動作、および最後のグレースフル・デグラデーションが可能になる。第1に、ICまたは他のデバイスは、複数の「複合」回路要素(さまざまなタイプの計算要素、統一I/Oインターフェース、および統一制御構造を備える)からなり、これらの複合回路要素は、効果的に交換可能または代替え可能であり、ある要素の機能が失われた場合に、その機能は、他の複合回路要素が利用可能であればその複合回路要素(同一または類似の)により引き継がれうる。第2に、複数の計算要素は、実質的にどのような機能であってもその機能を実行できるように選択される、つまり、計算完備である。第3に、制御機能は、本明細書では「状態機械要素」または「有限状態機械要素」と呼ばれる複数の回路「クラスタ」コントローラ間に分散され、これにより、制御機能は、必要に応じて、それらの分散されたコントローラ間に移動されうる。第4に、複合回路要素および/またはその相互接続部は、構成可能であり、機能の移動ならびにデータおよび制御経路のそれに対応するルーティングを補助する。第5に、選択されたすべての演算は、初期実行時にデバイス内で割り当てられ、束縛され、また対応する機能を他の複合回路要素に移動し、演算を続けるために必要に応じて、その後、再割り当ておよび再束縛されうる。
図1は、本発明の教示による例示的な装置100実施形態のそのような回復性を例示する高水準または概念水準図である。図1に例示されているように、図2〜3を参照しつつ例示され説明されているさまざまなマトリクス150など、ICとして具現化されている、装置100のさまざまな部分は、典型的な自動車、他の車両、またはコンピュータ化されたシステム、もしくは複合システムに関連する可能性のあるものなどの、複数の機能を同時に実行するために使用される。期間「α」において、IC部分102は、アンチロック・ブレーキング(ABS)機能を受け持ち、IC部分104は、トラクション・コントロール(TRAC.)機能を受け持ち、IC部分106は、ビデオまたはその他のマルチメディア機能を受け持ち、IC部分108は、衛星もしくは無線リンクなどを介してナビゲーション(NAVIG.)機能を受け持っている。
期間「β」において、IC部分102の領域110(「X」のマークが付いている)は、物理的磨耗またはICに対する他の損傷などにより使用不可能になった。このような損傷は、セルフテストまたは以下でさらに詳しく説明される他の手段を介して判定されうる。ABSは、高優先度機能であるため、そこで、領域110内で実行される機能は、車両環境における動作に対しては低い優先度を有する、すでにビデオ機能を実行している、領域112に再割り当て(または束縛)される。以下でさらに詳しく説明されるように、この再割り当てプロセスの一部として、新しいデータおよび制御経路が作成されるので、新たに割り当てられた領域は、その再割り当てがまったく起こっていなかったかのように、透過的に、ICの他の領域と適切に通信を続ける。この領域に割り当てられた新しい機能の性質と範囲に応じて、IC部分106は、そのビデオ機能の実行を継続するか、または継続しないか、あるいは低い帯域幅または遅い速度でこの機能を実行することができる。いずれの場合も、IC 100の損傷にもかかわらず、より高い優先度のABS機能が、動作し続け、突発的な故障は発生していない。
その後、期間「γ」において、IC部分108の領域114および116(「X」のマークが付いている)は、使用不可能になっており、それらの機能は、それぞれ、領域118および120に再割り当てされる。この場合、(領域104の)トラクション・コントロールは、一般に、ナビゲーション・システムの動作に比べて高い優先度を有していることがありうるため、領域118が利用可能であり、トラクション・コントロール機能によって完全には使用されていなかった可能性がある(例えば、後述のように1つまたは複数の複合回路要素および/またはコンテキストが利用可能であった)。しかし、ICのデグレードされた部分が多いと、例えば、IC交換のため近い将来車両を整備に出すなどの信号または他の指示がユーザーに送られる可能性がある。それに加えて、上述のように、また以下でさらに詳しく説明されるように、再割り当てされる機能についてターゲット先が利用可能かどうかに応じて、また機能がどのように再割り当てされるかに応じて、再割り当てされた機能は、もはや最適な実行ができなくなることがあるが(例えば、速度が遅くなったり、または帯域幅が狭くなることがある)、それでも実行できる。ここでもまた、性能のそのような低下は、徐々に進むのであって、突発的ではなく、十分警告できる余裕がある。
その後、期間「δ」において、IC部分104の領域122、124、126、および128(「X」のマークが付いている)は、使用不可能になっており、それらの機能は、それぞれ、領域132、138、134、および136に再割り当てされる。この場合、(領域104の)トラクション・コントロールは、一般に、IC部分106のビデオ・システムの動作に比べて優先度が高いため、より優先度の高い機能は、ICの影響されない領域に再割り当てされる。この場合、ICの残りの使用可能な部分が、制動およびトラクション・コントロールなどのより優先度の高い機能を実行しているので、ビデオ機能が完全に停止できることがもっともであると思われる。しかし、ICのデグレードされた部分が多いと、例えば、IC交換のため即座に車両を整備に出すなどの警告、信号、または他の指示がユーザーに送られる可能性がある。ここでもまた、そのような性能の低下は徐々に進むのであって、突発的ではなく、従来技術のICが完全に、急に、および潜在的に突発的に故障する原因となるICの多くの部分内での著しい障害があるにもかかわらず、高い優先度の機能が動作し続けることができる。
装置100の動作における生物学的な相当物は、印象的である。神経系統などの自己回復しうる生体系のように、ニューロンおよび対応する神経機能の喪失を伴う脳卒中などの損傷が発生した場合、他の既存のニューロンがリクルートされ、新しい接続(シナプス)が形成され、損傷したニューロンによりそれまでに実行されていた機能を引き継ぎ、復元する。装置100の場合、ICの1つまたは複数の部分に損傷が発生した場合、ICの他の既存部分(回路クラスタおよび複合回路要素(後述))がリクルートされ、新しい接続が形成され、ICの損傷領域によりそれまで実行されていた機能を引き継ぎ、復元する。その結果、生体系のように、装置100は、自己回復し、ICの損傷が生じているにもかかわらず進行中の機能を有効にできる。
A.装置のアーキテクチャ
図2〜3は、典型的には1つのICまたは1つのICの一部として具現化される、本発明の教示による、例示的な第1および第2の装置100、140を詳細レベルが上がる順に示すブロック図である。例示されているように、装置100、140は、分散度が高く、計算的に「フラット」であり、すべての計算が複数の複合回路要素260により実行される。「アクション」は、乗算またはビット操作などの、複合回路要素260により(組み込まれている計算またはその他のタイプの回路要素270を通じて)実行されるタイプの機能または活動である。例示されているように、さまざまなタイプの複合回路要素260があり、異なるタイプの複合回路要素(「複合要素」(「CE」)と等しく呼ばれるか、または略称される)CEA、CEB、CEC、CED、CEE、およびCEMとして例示されており、これらは異なるアクションを実行し、また構成可能である場合も、構成不可能である場合もある(図5〜8を参照しつつ例示され、説明されている)。複数の複合回路要素260は、後述の他の回路構造とともに、第1のグルーピングとして、対応する複数の回路「クラスタ」200にグループ化される。さまざまなグルーピングが、さらに、対応するレベルで、複数の複合回路要素260のアレイとして考えられうる。
そこで、装置100、140は、複数のレベルに論理的に分割されうるか、または複数のレベルからなり、この低位のレベルは「クラスタ」レベル(または第1のアレイ)と呼ばれ、次いで複数の回路クラスタ200はさまざまな(第2の)通信要素210および第2のチャネル(またはバス構造)220を通じて、第2のグルーピングとして、クラスタ・グルーピングまたは「スーパークラスタ」(複数のスーパークラスタ185)と呼ばれる、中間レベル(または第2のアレイ)にグループ化され、これらはさらに、さまざまな(第3の)通信要素190および第3のチャネル(またはバス構造)195を通じて、第3のグルーピングとして、「マトリクス」レベル(複数のマトリクス150)またはユニット・レベル(または第3のアレイ)と呼ばれる、上位のレベルにグループ化され、これらはさらに、第4のチャネル(またはバス構造)160を通じて、第4のグルーピングまたはアレイとして、装置100、140またはデバイス・レベルにグループ化される。
さまざまな通信チャネル(例えば、複数のバスまたはバス構造)160、195、220、および通信要素190、210、250は、本発明の相互接続155と総称され、またまとめて定義され、これにより、さまざまなクラスタ200と他のICコンポーネントとの間のデータおよび制御情報をやり取りすることができる。
装置100、140はそれぞれ、典型的には、集積回路として具現化されるが、回路基板、配線網、ネットワーク・メッシュなどに実装されている他のICに結合されるといった形で接続される、独立のICまたはより大きなSOC(「System−on−a−Chip」)の一部またはIC回路網の一部であってもよい。2つの装置実施形態100、140は、外部メモリ(例えば、DDR−2)または外部通信チャネルまたはバス(例えば、PCIまたはPCI−express(PCI−e))などの、他の、外部の、または集積化されていない、ICまたは他のデバイスへの入力および出力(「I/O」)を形成するために使用されるさまざまなクラスタ200内のコンポーネントの配置(および/またはタイプ)のみが異なる。装置140では、そのような外部I/Oは、選択されたマトリクス150内に集中して置かれているが、装置100では、そのような外部I/Oは、複数のマトリクス150間に分散されている。他のすべての点については、装置100、140は同じである。したがって、装置100への参照は、装置140として例示されている第2の実施形態を意味し、含むものと理解され、さもなければ、装置140は別の実施形態としてさらに説明されることはない。また、図2および3は、2つのマトリクス150を例示しているが、装置100、140は、1つまたは複数のマトリクス150を含むことができること、および例示的な実施形態は、選択された適用例およびIC面積および電力要件などのさまざまな設計パラメータに応じて、任意の数のマトリクス150を含むことができることは理解されるであろう。
図2〜3を参照すると、上に示されているように、装置100は、複数のマトリクス150に論理的に分割されるか、または複数のマトリクス150からなる。それぞれのマトリクス150は、対応する複数の第3の通信要素190および第4の通信チャネル(またはバス構造)160を通じて結合され、それぞれ、入力および出力(「I/O」)170およびI/O 180(第4のチャネル(またはバス構造)160の)として別々に例示されている、少なくとも2つの入力および2つの出力データおよび制御経路を有する。選択された実施形態に応じて、第4のチャネル(またはバス構造)160(I/O 170および180を含む)は、同じバス構造を使用するデータ、構成、および制御情報とともに組み合わせた制御およびデータI/O経路(例示されているような)を有するか、またはそのようなデータ、構成、および制御を、異なるバスまたは相互接続構造上に分離することができる(別々には例示されていない)。例示的な一実施形態では、このマトリクス150レベルにおいて、そのような複数の第3の通信要素190は、パケット・ルーティングまたはウェイポイント回路などの外部通信回路を介して実装される。第3の通信要素190および/またはI/O 170、180のうちの1つ、またはその一部に障害が生じた場合に、他の第3の通信要素190および残りのI/O 170、180は、同一の機能を実行させるために使用することができるが、ただし、利用可能な通信帯域幅は減少する可能性がある。例示的な一実施形態では、第3の通信要素190は、4つの独立したアップリンク・チャネルおよび4つの独立したダウンリンク・チャネル(対応するパス構造を持つ)を有する単一の組み合わせ回路要素として実装され、それとは別に、各種チャネルも、全二重通信を行うように実装されうる。
例示的な実施形態において、複数の(少なくとも2つの)通信要素およびバス構造(組み合わせた制御およびデータ経路を有する)の対応するI/O部分のこのような使用は、さまざまな論理的階層レベルのそれぞれにおいて繰り返され、さまざまな通信要素またはI/O経路に障害が発生した場合に対応する回復機能を実行できる。しかし、回復力が少なくて済むか、または他の制約が課される選択された実施形態については、そのような1つまたは複数の追加の通信要素集合および対応するI/Oはオプションであり、省くこともできる。
次いで、それぞれのマトリクス150は、さまざまな階層レベルもしくはサブグループに論理的に分割され、またパケットベースのルーティング、自己ルーティング、トンネリング、または他のタイプのデータ、構成、および制御通信を実行するように適合された複数の第3の通信要素190など、さまざまなレベルの間の通信用の回路も伴う。より具体的には、マトリクス150は、複数のスーパークラスタ185に論理的に分割され、さらにこれらは、複数の第3の通信要素190および第3のチャネル(またはバス構造)195を通じて互いに結合され、さらに、第4のチャネル(またはバス構造)160および他の対応する第3の通信要素190を介して他のマトリクス150のスーパークラスタ185に結合される。
次いで、スーパークラスタ185は、対応する複数の回路クラスタ200(ここでは単に「クラスタ」と略記されるか、または称される)に論理的に分割され、さらに、これらは、複合回路要素260と呼ばれる(またはそれと同等であるが、「複合要素」(「CE」)260と称され、略記される)複数の回路要素および後述の他のコンポーネント(第1の通信要素250および状態機械要素290を含む)からなる。これらのさまざまなクラスタ200の間の通信は、複数の第2の通信要素210(さらに、パケットベースのルーティング、自己ルーティング、トンネリング、または他のタイプのデータ、構成、および制御通信も実行できる)および第2のチャネル(またはバス構造)220を通じて実現される。次いで、スーパークラスタ185内のさまざまなクラスタ200は、さらに、第2のチャネル(またはバス構造)220、第2の通信要素210、第3のチャネル(またはバス構造)195、および第3の通信要素190を介して同じ、または他のマトリクス150の他のスーパークラスタ185の他のクラスタ200に結合され、次いで、第4のチャネル(またはバス構造)160を介して他のマトリクスに結合される。それに加えて、オプションの変更形態として、隣接するクラスタ同士の間に「高速経路」接続を形成することができるが、これは図2の接続215に例示され、以下でさらに詳しく説明されている。
さまざまな第2および第3の通信要素210、190、およびさまざまなレベルの通信チャネル(バス構造)160、195、220は全体として、本発明の相互接続構造155を形成する。上に示されているように、第2および第3の通信要素210、190は、アドレス指定可能なクラスタ200との間でデータ、構成、および制御の転送、ルーティング、またはスイッチングを行うことを目的として、当業で知られているように、または当業で知られるようになったとおりに実装されうる。第2および第3の通信要素210、190は、ルーティング要素、自己ルーティング要素、ウェイポイント、回路交換、ハイブリッド型ルーティングおよび回路交換要素、他のスイッチベースの通信要素、または他のタイプの通信要素として実装することができ、同等のものとして考えられる。IC製造および処理工程で利用できる導電性経路を使用して、さまざまな通信チャネル(バス構造)160、195、220を実装することができる。
例示的な実施形態では、この相互接続155(通信チャネル(バス構造)160、195、220)は、一般に、「n」ビット幅であるが、ただし、数「n」は選択された実施形態の目的に応じて選択される。例えば、例示的な一実施形態では、「n」は17またはそれ以上のビット数であり、この場合、16ビット・データ・ワードと1つまたはそれ以上の制御またはシグナリング・ビットとなる。図2〜3に例示されているような1つまたは複数のバス、電線、導線、伝送媒体、または接続構造物を含む相互接続部155に加えて、相互接続部155は、さらに、nビット幅を受け入れ、マトリクス150、スーパークラスタ185、およびクラスタ200の間で、データ・ワード(またはパケット)、構成ワード(またはパケット)、および/または制御ワード(またはパケット)のルーティングまたはその他の伝送を行う複数の通信要素(190、210)を備える。例示的な実施形態では、これらの通信要素(190、210)は、さらに、備えるべき相互接続性の程度に応じて、アービトレーションまたは他のルーティング競合解消を行うこともできる。
クラスタ200のレベル内で、第1の通信要素250は、クラスタI/Oを備え、これにより、クラスタ間データ、構成、および制御ルーティング、クラスタ200内のコンポーネントへの、またコンポーネントからの直接通信リンクまたは接続の形成、および他のクラスタ200のコンポーネントからの、またコンポーネントへのデータ、構成、および制御ルーティングに加えてクラスタ内回路ベース(または回路交換)接続機能を実行する。例示的な実施形態では、クラスタ200またはスーパークラスタ185内のメッセージ・マネージャ265は、さらに、構成および制御のクラスタ間通信、および任意のタイプのデータ、構成、および制御の外部入出力通信を行うためにも使用される。
装置100内のレベルの数の選択は、所定の数の計算要素について、ルーティングの複雑度と比較して使用される物理的相互接続の量と釣り合うように、任意に与えられた実施形態において変えることができることに留意されたい。例示的な実施形態では、同じ数の複合回路要素260について、例えば、3つのレベル(レベル当たりの要素数が多い)と比較して4つのレベル(マトリクス、スーパークラスタ、クラスタ、および複合回路要素の4つのレベル)を使用することにより、バスおよび相互接続配線の量を実質的に減らすことができ、その結果、ルーティングの複雑さが増すのと引き換えに、面積および静電容量を削減することができる。
引き続き図2および3を参照すると、オプションまたは代替えとして、選択された実施形態に応じて、さまざまなマトリクス150、スーパークラスタ185、またはクラスタ200のどれかのレベルで、1つまたは複数の追加のコントローラ(または同等のものとして、プロセッサ)175を使用することができる。例えば、実行時束縛(図14を参照しつつ以下で説明される)の例示的な実施形態では、そのような追加のコントローラ175を使用するか、または代わりに1つまたは複数のコントローラとして1つまたは複数の状態機械要素290(後述)を使用するか、またはその両方とすることができる。例示的な一実施形態では、コントローラまたはプロセッサ175は、市販のプロセッサまたはマイクロプロセッサ、例えば、ARMもしくはMicro−Blazeを使用して実装される。プロセッサ175は、さらに、別システムに入れられるか、または装置100、140などのダイの一部として集積化され、任意のタイプのプロセッサもしくはコントローラとすることができるか、またはさらに、1つまたは複数のSME 290を使用して実装されうる。それに加えて、装置100(または140)は、さらに、無線周波数もしくは移動体通信回路、メモリ回路、プロセッサ、マイクロプロセッサなどの、装置とともに集積化されるか、または装置と結合されうる他の回路もしくは他のデバイスなどの、他のコンポーネントを備えることもでき、このような変更形態はすべて本発明の範囲内にあると考えられる。
装置100の動作への導入として、データの計算および操作が、複合回路要素260を通じて、複数のクラスタ200内で実行される。これらの回路要素260は、例示的な実施形態ではこれらは第1の一定または固定部分、および第2の可変部分からなり、構成可能であるか、または構成不可能でありうる(複合回路要素260のタイプに応じて)ため、「複合」回路要素260と呼ばれる。より具体的には、それぞれの複合回路要素260は、(1)すべての複合回路要素260について同じである、統一、または一定の要素インターフェースおよび制御280、ならびに(2)図5〜8に例示され、図5〜8を参照しつつさらに詳しく説明されている、複数のタイプの計算要素270(構成可能または構成不可能な)からの選択されたタイプの「計算」または他の回路要素270からなる。
複合回路要素260内の計算回路要素270(より単純に、要素270または回路要素270とも呼ばれる)は、タイプおよび構成可能性により異なり、計算要素270は、参照しやすくすることをのみを目的として「計算」という用語で称されているが、さまざまなタイプの回路要素270は、メモリ機能、有限状態機械機能、通信機能など、厳密な意味で計算とはいえない機能を有している場合がある。例えば、いくつかの回路要素270は、複数のタイプの静的な、または構成可能な計算要素、複数のタイプの静的な、または構成可能なメモリ要素、複数のタイプの静的な、または構成可能な通信要素もしくはインターフェース、静的な、または構成可能な状態機械要素などとすることができ、その結果、構成可能な複合回路要素260、構成可能な、または構成不可能なメモリ複合回路要素260M、あるいは構成可能な、または構成不可能な複合I/Oもしくは他の通信回路要素260(例えば、外部通信用のI/Oインターフェースを形成しうる)などの複数のタイプの複合回路要素260となる。したがって、本明細書における複合回路要素260の参照は、状況から必要である場合または反対のことが指定されている場合を除き、構成可能な複合回路要素260、状態機械要素290、第1の通信要素250、および複合メモリ要素260Mなどの、さまざまなタイプ、特別なケース、または特別な場合もしくは複合回路要素260のインスタンス化を意味し、含むものと理解される
また、例えば、第1の通信要素250(クラスタI/O)は、他の複合回路要素260に見せる要素インターフェースおよび制御280を有し、通信機能用に設計された計算要素270を有するあるタイプの複合回路要素260として実装することができ、また構成可能である場合も構成可能でない場合もある。それに加えて、後述のように、状態機械として典型的には具現化され、「メッセージ・マネージャ」回路265と称される追加の回路は、外部メモリ、バス、および通信システムとの通信インターフェースを提供する、例えば、さまざまな通信および他のデータ転送規格に準拠するインターフェースを提供するなどの、外部通信機能を実行するためのさまざまな、または選択されたクラスタ200を備え、また、装置100がSOCの一部として具現化される場合にICの他の部分と通信するためのインターフェースを備えることもできる。例えば、選択された実施形態に応じて、メッセージ・マネージャ265(専用ハードウェアとして)または複合回路要素260(通信機能用に適合された計算要素270を有する)は、イーサネット(登録商標)・インターフェース、PCIインターフェース、PCI Expressインターフェース、USBまたはUSB2インターフェース、DDR SDRAMインターフェースまたは他のタイプのメモリ・インターフェース、無線インターフェース、他のICとのインターフェースなどを備えるなど、そのような外部通信用に使用されうる。例示的な実施形態では、メッセージ・マネージャは、さらに、構成および制御メッセージングなどのために、以下でさらに詳しく説明されるように、クラスタ200間の通信および状態機械要素290間の通信などの装置100内の通信に使用することもできる。
他の例示的な実施形態では、外部通信(DDR−2、PCI、PCI−eなどについての)は、相互接続部155に結合されている他のコンポーネントにより実行され、メッセージ・マネージャ回路265は、スーパークラスタ185および/またはクラスタ200内のストリームベースの通信と相互接続ネットワーク220、195、160、170、180上のパケットベースの通信との間のインターフェースを形成し、本質的に、スーパークラスタ185Cおよびクラスタ200Cの実施形態などにおける第1および/または第2の通信要素250、210を置き換える。この実施形態では、メッセージ・マネージャ回路265は、さらに、さまざまな組み合わせロジック・ゲートとともに有限状態機械または状態機械として実装することもでき、メッセージ・マネージャ回路265は、受信メッセージ、送信確認、および送信メッセージの3つのタイプのメッセージを、すべて相互接続部155を介して処理する。Data WriteメッセージおよびData Copyメッセージの2つのタイプのメッセージが使用される。Data Writeメッセージでは、メッセージに含まれるペイロード・データが、メッセージで指定されたアドレスに書き込まれる。Data Writeメッセージは、例えば、ユーザー・タスク・ライト、第2のメモリ要素255への書き込み、またはSME 290に書き込む、およびSME 290実行可能コードを修正するなどのための構成/制御バス285上への書き込み、あるいはクラスタ200内の複合回路要素260を構成するための書き込みとすることができる。この実施形態では、さらに、例えば、メッセージ・マネージャ回路265は、SME 290制御を行うために、SME 290に書き込むことができる。Data Copyメッセージでは、Data Writeメッセージが、指定されたコピー元アドレスから指定されたコピー先アドレスに送信される。送信確認は、返信を要求する受信Data Writeメッセージへの応答としてメッセージ・マネージャ回路265により生成され、それ自体がData Writeメッセージである。送信メッセージは、SME 290により第2のメモリ要素255(例えば、クラスタ200 RAM)において組み立てられ、次いで、メッセージ・マネージャ回路265により、ポインタをメッセージの先頭に設定し、メッセージ・サイズを指定するなどして、送信される。このメッセージ組み立ては、確認を必要としない送信メッセージに適用可能であるか、または確認を必要とするものに拡張されうる。
例示的な一実施形態では、クラスタ200 RAMを形成する第2のメモリ要素255は、8個の1K×16ブロックとして実装され、アドレス生成にSME 290を使用するのではなく、アドレス生成器がメモリ・タイプの複合回路要素260M内に備えられる。追加のレジスタも使用され、これは、セットされた場合、命令セットを格納するなど、SME 290による使用のためにメモリ・タイプの複合回路要素260Mが予約され、セットされない場合、他の複合回路要素260による使用が有効にされる。アドレス生成は、例えば、FIFO、ブロック・リード/ライト(カウントおよびストライド転送を含む)、および2Dもしくは3Dアドレス生成を含むことができる。第2のメモリ要素255は、さらに、ページまたはキャッシュ・メモリ構造を備える、または備えない階層メモリとすることも可能である。第2のメモリ要素255へのデータ入力で優先するのは、典型的には、相互接続部155上へのデータ・バックアップを回避するためのメッセージ・マネージャ回路265であり、次にメモリ・タイプの複合回路要素260M、そしてSME 290である。メモリ・タイプの複合回路要素260Mは、同期をとるなどの追加の機能を有し、さらに、複数のプロセス/コンテキストを同時実行させることができる(データの衝突がない限り)。
他の例示的な実施形態では、メッセージ・マネージャ回路265は、さらに、装置100全体にわたって分散されているメモリ・タイプの複合回路要素260Mを管理するように構成または適合される。例えば、メッセージ・マネージャ回路265は、分散された複数のメモリ複合回路要素用に統一アドレス空間を備えるように適合される。メッセージ・マネージャ回路265をこのように使用することにより、分散された複数のメモリ・タイプの複合回路要素260は、他の複合回路要素260から見えるようになり、また1つの大きなメモリ・アレイとして管理できる。
構成可能な計算要素270はそれぞれ、入力、出力、および変更可能であるように適合されるか、または他の何らかの形で修正することが可能である他の内部接続を有する組み合わせロジック(つまり、加算器、乗算器、算術論理演算ユニット(「ALU」)などの機能ユニットを形成するロジック・ゲートのグループ)からなる。より具体的には、それぞれの構成可能な計算要素270は、対応する複数の機能を実行するために、複数の方法により、スイッチング回路、要素、またはスイッチ、マルチプレクサ、デマルチプレクサ、パス・トランジスタ、クロスバー・スイッチ、ルーティング要素、または他のトランジスタ構成などの他のスイッチング構造を通じて、そのロジック・ゲートまたは他の機能ユニットが結合もしくは接続(または減結合もしくは切断)されうるように設計される。さまざまなゲート(または機能ユニット)を接続するそれぞれの異なる方法は、「構成」であり、選択された構成は、対応するスイッチ、マルチプレクサ、デマルチプレクサ、パス・トランジスタ、または他のトランジスタもしくはスイッチング装置を制御する複数のビットとして表すことができ、選択された構成の特定の接続を形成する。例えば、加算器、乗算器、およびレジスタは、多くのさまざまな方法で結合することができ、それにより、単純な算術演算から離散コサイン変換に至るまでさまざまな機能を実行することができる。他の状況では、構成は、さらに、符号付きもしくは符号なし、定数もしくは変数、消費可能もしくは消費不可能などの、入力データがどのように解釈または使用されるかを指示することもできる。他のタイプの構成および構成する方法も、エレクトロニクス分野において知られているが、同等のものであり、本発明の範囲内にあると考えられる。
構成可能な計算要素270の利用可能なまたは選択された構成はそれぞれ、複合回路要素260の要素インターフェースおよび制御280のメモリ内にローカルとして格納される。以下でさらに詳しく説明されるように、これらの構成はそれぞれ、選択された入力、出力先、および制御情報などの他の情報とともに、対応する「コンテキスト」として定義されるか、または含む。例えば、複数の要素の同じ構成が、複数のコンテキストを有し、それぞれのコンテキストは異なる入力を使用して出力を異なる場所に送るか、または異なる定数を使用することができる。また、例えば、異なる構成は、さらに、異なる構成が同じ入力を使用し、出力を同じ送り先に供給する場合であっても、異なるコンテキストを備えることになる。複合回路要素260の演算および制御は、本発明の例示的な実施形態で使用される内部および外部通信ならびにアドレッシングの説明に続いて、図5〜8および16を参照しつつ以下でさらに詳しく説明される。
例示的な実施形態では、クラスタ200内の複合回路要素260間のさまざまな接続、および一方のクラスタから他方のクラスタへのルーティングもしくはトンネリング(通信要素250、210、または190を介して)は、選択されたプログラム、アルゴリズム、または機能の実装のため、装置100のオペレーティング・システムにより実行時に確定される。それに加えて、そのような接続は、時間の経過とともに変化する可能性があり、また選択された実施形態に応じて、一般に、図1を参照しつつ上で簡単に説明されているように必要に応じて、また以下でさらに詳しく説明されるように、新しい機能の作成、コンテキストおよび構成の変更、機能の変更、または弾力的な自己回復のために、時間の経過とともに変化する。回復性の要件を適用されえないアプリケーションなどに対する、本発明の範囲内の代替え実施形態では、実行時に先立ってさまざまな接続が確立され、装置100のメモリ内に保持されて、必要に応じて、または望ましい場合にその後修正を行うことも可能である。
図2および3を参照すると、マトリクス150は、複数のスーパークラスタ185および1つまたは複数の第3の通信要素190に論理的に分割されるか、または含む。第3の通信要素190は、データ、構成、および制御情報の伝達のため、パケット・ルーティング、スイッチング、ハイブリッド型ルーティングおよびスイッチング、またはデータおよび制御をマトリクス150から出し入れするトンネリングを行う通信回路(例えば、ルーター、ウェイポイント、ゲートウェイ、スイッチ、またはトンネリング・デバイス)であり、相互接続部155の一部を形成するものと考えられうる。第3の通信要素190は、さらに、ウェイポイントまたはゲートウェイと考えることもでき、本発明に従って使用される複数の通信構造のうちの1つである。少なくとも2つまたはそれ以上の第3の通信要素190を使用する第1の選択された実施形態では、それぞれの第3の通信要素190は、選択されたマトリクス150のそれぞれのスーパークラスタ185および他の第3の通信要素190(バス構造160を介して)に結合され、これにより、いずれかの第3の通信要素190を通じてそれぞれのスーパークラスタ185との間の通信が実行されうる。その結果、第3の通信要素190のうちのどれか1つが故障した場合に、他の第3の通信要素190が選択されたマトリクス150のそれぞれのスーパークラスタ185から利用できるようになり、まったく同じ通信機能が実行される。別の第3の通信要素190として例示されているが、それらの独立の回路は、1つまたは複数のより大きな回路構造に組み合わされて、同じ独立した通信機能を形成することは理解されるであろう。例えば、選択された一実施形態において、単一の第3の通信要素190が使用され、同様にそれぞれのスーパークラスタ185および他の第3の通信要素190に接続され、それぞれの第3の通信要素190は複数の、独立した通信経路(例えば、4つのダウンリンクと4つのアップリンク)を形成するので、これにより、1つまたは複数のリンクに障害が発生した場合に追加のリンクが利用できる。ここでもまた、そのような障害が発生した場合、重要な機能が保存され、突発的な故障とならないように、グレースフル・デグラデーションが行われる。
それぞれのスーパークラスタ185は、さらに、複数のクラスタ200および1つまたは複数の第2の通信要素210に論理的に分割される。第2の通信要素210は、さらに、データ、構成、および制御情報の伝達のため、パケット・ルーティング、トンネリング、スイッチング、またはデータおよび制御をスーパークラスタ185から出し入れするその他の転送を行う通信回路でもあり、これもまた相互接続部155の一部を形成するものと考えられうる。第2の通信要素210は、さらに、ウェイポイントまたはゲートウェイと考えることもでき、本発明に従って使用される複数の通信構造のうちの1つである。少なくとも2つの第2の通信要素210を使用する第1の選択された実施形態では、それぞれの第2の通信要素210は、選択されたスーパークラスタ185のそれぞれのクラスタ200に結合され、これにより、いずれかの第2の通信要素210を通じてそれぞれのクラスタ200との間の通信が実行されうる。また、その結果、第2の通信要素210が故障した場合に、他の第2の通信要素210が選択されたスーパークラスタ185のそれぞれのクラスタ200から利用できるようになり、まったく同じ通信機能が実行される。選択された一実施形態では、これらの独立の回路は、1つまたは複数のより大きな回路構造に組み合わされ、同じ独立の通信機能を備えることができる。また、例えば、単一の組み合わせた第2の通信要素210が利用され、同様にそれぞれのクラスタ200および1つまたは複数の第3の通信要素190に接続される。この実施形態では、それぞれの第2の通信要素210は、複数の、および独立した通信経路(例えば、4つのダウンリンクと4つのアップリンク)を備え、1つまたは複数のリンクに障害が発生した場合に追加のリンクが利用できる。ここでもまた、そのような障害が発生した場合、重要な機能が保存され、突発的な故障とならないように、グレースフル・デグラデーションが行われる。
その結果、マトリクス150のレベルからスーパークラスタ185のレベルへ、およびクラスタ200のレベルへ移動すると、相互接続部155は、複数の通信要素190および210ならびに通信チャネル(バス構造)160、195、220を通じてパケット・ルーティング、自己ルーティング、トンネリング、スイッチング、またはデータ、構成、および制御情報の他の転送を行う。それに加えて、後述のように、クラスタ200内で、相互接続部155は、さらに、第1の通信要素250を通じて、回路交換(または回路ベース)通信を行う。実際に、本発明のアーキテクチャの新規性のある特徴のうちの1つは、パケット・ベース通信および回路交換通信の両方を行う相互接続構造155を使用することである。
引き続き図2および3を参照すると、例示的な相互接続部155は、(1)複数のルーティング(トンネリング、ウェイポイント、またはゲートウェイ)要素、つまり、複数の第3の通信要素190、複数の第2の通信要素210、および複数の第1の通信要素250と、(2)複数の回路交換要素、つまり、複数の第1の通信要素250と、(3)その対応するバス、電線、または他の形態の物理的接続もしくはデータ伝送媒体(例えば、上述のように、「n」ビット幅である、バスまたは電線160、195、および220として例示されている)とを備える。マトリクス150内では、1つまたは複数の第3の通信要素190が、パケット・ルーティング、自己ルーティング、トンネリング、スイッチング、またはデータ、構成、および制御情報の他の転送を、他のマトリクス150(第1のバス160およびI/O 170、180)との間で、また複数のスーパークラスタ185との間で、それぞれのそのようなスーパークラスタ185内の1つまたは複数の第2の通信要素210を介して実行する。次いで、そのようなスーパークラスタ185内の1つまたは複数の第2の通信要素210が、パケット・ルーティング、自己ルーティング、トンネリング、スイッチング、またはデータ、構成、および制御情報の他の転送を、第3の通信要素190との間で、またスーパークラスタ185内の複数のクラスタ200との間で、それぞれのそのようなクラスタ200内の1つまたは複数の第1の通信要素250を介して実行する。
次いで、クラスタ200内の1つまたは複数の第1の通信要素250が、パケット・ルーティング、自己ルーティング、トンネリング、スイッチング、またはデータ、構成、および制御情報の他の転送を、クラスタ200との間で、例えば他のクラスタ200との間で、第2の通信要素210を介して実行し、クラスタ200内のデータおよび制御について回路交換通信を行い、他のクラスタ200とクラスタ200内の複合回路要素260、状態機械要素290、メッセージ・マネージャ265、メモリ要素255、および/または他のコンポーネントとの間で通信を行えるようにする。例えば、クラスタ200内の複合回路要素260から生成されたデータは、直接または回路交換接続を通じて複数の第1の通信要素250のうちの1つに出力され、次いで、他のクラスタ200、他のスーパークラスタ185、または他のマトリクス150への伝送のため、そのデータをパケット形態に変換し、第2の通信要素210へのデータ・パケットのルーティングを行うことができる。同様に、他のクラスタ200、他のスーパークラスタ185、または他のマトリクス150から送られて来る、データ・パケットが、第2の通信要素210を介して到着した場合、第1の通信要素250は、データを抽出し、1つまたは複数のデータ・ワードをクラスタ200内の対応する複合回路要素260、状態機械要素290、メモリ要素255、または他のコンポーネントに転送する。
これらのさまざまな通信要素(第3の通信要素190、第2の通信要素210、第1の通信要素250、完全相互接続要素275、および後述の分散された完全相互接続要素295)は、完全相互接続性から制限のある相互接続性へなど、選択された能力を有するように設計されうる。例えば、例示的な実施形態において複合回路要素260の入力に同時に結合される複合回路要素260の出力を備える完全相互接続要素275または分散された完全相互接続要素295の代わりに(同じ入力または出力について衝突または競合がある場合を除く)、部分的な相互接続要素または分散された部分的な相互接続要素(別々には例示されていない)を使用することなどにより、クラスタ200内の制限のある、または部分的な相互接続が実行されうる。また例えば、例示的な実施形態では、第1の通信要素250は、複合回路要素260およびクラスタ200の他のコンポーネントとの間の1つまたは複数の同時接続に加えて、第2の通信要素210からの2つのアップリンクと2つのダウンリンクなどの、2つまたはそれ以上の同時接続またはルーティングを行うことができる。IC面積との衝突が発生する可能性のあることと引き換えに、所定の実施形態においてさらに接続性を増すこともできる。それに加えて、備えられる相互接続性が完全以下である場合、さまざまな通信要素(第3の通信要素190、第2の通信要素210、および第1の通信要素250)も、優先度方式、ラウンド・ロビン方式、逐次方式などに基づく、アービトレーション機能を備え、所定の時刻にデータ転送を行う接続またはルーティングを選択することができる。
クラスタ200、スーパークラスタ185、マトリクス150、および装置100の各レベルを有するものとして例示されているが、当業者であれば、レベルの数は、選択された実施形態において加減できることを理解するであろう。例えば、複数の第4の通信要素(図に示されていない)は、他の相互接続部155とともに、装置100内に他の階層レベルを形成するなどのために使用することができ、これにより、装置100の階層内に選択された数のレベルを作成できる。
図4は、本発明の教示による例示的なデータ伝送シーケンスを示す図である。例示的な実施形態では、データおよび/または制御パケットは、データ・ワードの「トレイン」またはトンネリングとしてさまざまなルーティング要素(第3の通信要素190、第2の通信要素210、および第1の通信要素250)により相互接続部155上でルーティングが行われ、これにより、他の方法だと個別にアドレス指定されたデータ・ワードのルーティングに関わってくるアドレス指定のオーバーヘッドが軽減される。より具体的には、図4を参照すると、データ伝送シーケンス300は、複数のワード(フィールドまたはデータ構造体)305および310からなり、「n」ビット幅である。それぞれのそのようなワード305または310は、順番に、次々に伝送される。第1のワードまたはフィールド305は、データ先頭インジケータを持つアドレス・ヘッダを含む。アドレス・ヘッダは、伝送先アドレスを備えるか、または伝送先アドレスと伝送元アドレスの両方(複数のワードを必要とする場合がある)を備えることができる。このようなアドレスは、例示的な実施形態では、[マトリクス番号、スーパークラスタ番号、クラスタ番号]の形式をとり、選択された実施形態において実装されているマトリクス150、スーパークラスタ185、およびクラスタ200の個数に応じてアドレスを指定するためにビットの数が使用される。
例えば、8個以下のマトリクス150が実装される場合、それぞれのマトリクス150が8個以下のスーパークラスタ185を含み、それぞれのスーパークラスタ185が8個以下のクラスタ200を含むのであれば、[MMM,SSS,CCC]とアドレス指定するのに9ビットあれば十分である。第1のワードまたはフィールド105内のデータ先頭インジケータは、所定の値を有する第1のフラグ(例えば、フラグがセットされているか、または他の第1の所定のもしくはあらかじめ指定されているビットが第2の値である)を備えることができ、現在のワード305がアドレス・ヘッダであり、後続のすべてのパケットが、同じアドレス指定された伝送先にルーティングされるべきデータ・ワードであることを示す。その結果、第1のフィールド305に続く「m」個のワードまたはフィールド310はすべて、データ・ワードとして、つまり、データ・ワード3100、3101、3102から310(m−1)として指定されて、伝送され、これらは、データ・ワード毎に別のまたは追加のヘッダもしくはアドレスを用意することなく、同じアドレス指定された伝送先に自動的にルーティングされる。追加のフラグまたはビットは、さらに、後続のデータ・ワードがプレースホルダであることを指定したり、同期処理で使用する、特に分岐演算を行うなどの、他の目的のためにも使用できる。ワードまたはフィールド310(m−1)として例示されている、最後のデータ・ワードは、データと、データ末尾インジケータの両方を含み、現在のデータ・ワードが転送中の最後のデータ・ワードであることを示し、また所定の値を有する第2のフラグ(または選択された値を有する他の第2のあらかじめ指定されているビット)を含むことができる。
データのこのトンネリングは、例示的な一実施形態では、パケット・ルーティングと回路交換の両方の組み合わせまたはハイブリッドとして実装される。より具体的には、さまざまなルーティング要素(第3の通信要素190および第2の通信要素210)は、第1のワードまたはフィールド305のアドレス・ヘッダを使用してクラスタ200間に1つまたは複数の接続を確立し、伝送元クラスタ200から伝送先クラスタ200への専用経路を予約し、セットアップすることを行う。この専用経路は、例えば、ウェイポイントまたはゲートウェイ内の回路交換または他の接続により形成されうる。通信要素(第3の通信要素190、第2の通信要素210)に到着した残りのデータ・ワード(データ・ワード3100、3101、3102から310(m−1)まで)は、バッファリングされ、次いで、アドレス・ヘッダを使用して通信要素内に確立されている交換または他の専用経路上でパケットとして自動的に転送されうる。専用経路は、完全なパケットが伝送されてしまうまで保持され、その後、さまざまな経路要素が、他の通信のために解放される。複数の経路を同時に使用することで、ブロードキャスト・モードに対応することができる。また、例示的な実施形態では、複数のそのようなデータ伝送は、例示的な一実施形態について前のほうで言及されている4つのアップリンクと4つのダウンリンクを使用することなどにより、同じ通信要素間で同時実行することができ、これにより、複数のデータ・ストリームを同時に伝送することができる。その結果、例示的な実施形態では、複数の通信要素(第1の通信要素250を含む)は、1対1入力および出力データ・リンク、1対多(ブロードキャスト)データ・リンク、および多対1データ・リンクなど、選択された任意の通信モードに対応することができる。
それとは対照的に、第1の通信要素250は、完全相互接続要素275を介してクラスタ200のさまざまなコンポーネントからデータ・ワードを典型的には順次に(1つまたは複数のクロック・サイクル毎に1つのデータ・ワード)受信し、アドレス・ヘッダを備え、他のクラスタ200に送信するためにそのシーケンスを第2の通信要素210に伝送し、一般的には、そのシーケンス全体を1つのパケット・バーストとして伝送する。他のクラスタ200から来るデータについては、第1の通信要素250が、複数のデータ・ワード(3100、3101、3102から310(m−1)まで)を受信して、バッファリングし、典型的には完全相互接続要素275のスイッチングを介して、それらのデータ・ワードを順次にクラスタ200の指定されたコンポーネントに送る。例示的な実施形態では、伝送元および/または伝送先アドレスは、さまざまなルーティング要素(第3の通信要素190、第2の通信要素210、および第1の通信要素250)などに含まれる複数のコンポーネントのどれかに格納され、クラスタ間通信を使用してコンテキスト毎に束縛プロセス(後述)において確定されうる。
より具体的には、束縛プロセス(「バインダー」)を実行する1つまたは複数の状態機械要素(「SME」)290(または他の(複数の)コントローラ175もしくは(複数の)オフチップ・コントローラもしくは(複数の)プロセッサ)は、アクション(つまり、機能またはコンテキスト)をさまざまな複合回路要素260に割り当て、複合回路要素260の間の「仮想」データ・リンクまたはルーティングを確立する、つまり、そのデータ・リンクが物理的にどのように実行されるかを必ずしも指定しないまま、1つまたは複数の複合回路要素260の間のデータ・リンクを割り当てる。さまざまな通信要素(第1の通信要素250、第2の通信要素210、第3の通信要素190、完全相互接続要素275、および/または分散された完全相互接続要素295)は、サイクル毎に、または所定の時刻にクロック動作し、次いで、対応するデータ転送に対する物理的経路を決定し、物理的データ・リンクを形成するように適合される。例えば、スイッチングおよび/またはルーティングを介して、複数の通信要素間の、または複数の通信要素内の第1の物理的データ経路もしくはリンクは、2つのクラスタ200の間のデータ・パケット(例えば、データ・ワードのトレイン)の転送の1つのインスタンスについて確立され(その後解放される)、異なる物理的データ経路もしくはリンクが2つのクラスタ200の間のデータ・パケットの転送のその後のインスタンスについても確定されうる。そのような物理的データ・リンクは、例えば、対応する要素インターフェースおよび制御280(後述)のメモリ内にルーティング・テーブルとして格納されるといった形で、通信要素内のさまざまなメモリ内に格納されて保持され、選択された物理的データ・リンクは通信複合回路要素260の対応する要素コントローラ325により決定されうる。同様に、任意の時点またはクロック・サイクルにおいて、クラスタ200内のデータ通信のために異なる物理的データ・リンクが確立されうる(そして解放される)。他の例示的な実施形態では、仮想データ・リンクを確立するのではなく、束縛プロセスの一部としてバインダーによっても物理的データ・リンクが確立されうる。
図5は、本発明の教示による第1の例示的なクラスタ200を示すブロック図である。図6は、本発明の教示による第2の例示的なクラスタ200Aを示すブロック図である。クラスタ200では、完全相互接続要素275(単一または統一回路コンポーネントとして)は、複合回路要素260および例示されているような他のクラスタ・コンポーネントのそれぞれの入力および出力の間に完全な相互接続を形成するために使用される。例えば、完全相互接続要素275は、クロスバー・スイッチとして実装されうる。クラスタ200Aでは、分散された完全相互接続要素295(分散された複数の回路コンポーネントとして)は、複合回路要素260および例示されているような他のクラスタ・コンポーネントのそれぞれの入力および出力の間に完全な相互接続を形成するために使用される。例えば、分散されている完全相互接続要素295は、選択された複合回路要素260について図8に例示されているマルチプレクサ335などの複数のマルチプレクサおよび/またはデマルチプレクサとして実装されうる。他のすべての点において、クラスタ200、200Aは同一である。そのため、クラスタ200への参照があれば、クラスタ200Aとして例示されている第2の実施形態(および図7でクラスタ200Bとして例示されている第3の実施形態)を、クラスタ200の1つまたは複数の変更形態として意味し、含むことは理解されるであろうし、さもなければクラスタ200A(およびクラスタ200B)は別の実施形態としてこれ以上説明されない。
図5および6に例示されているように、例示的なクラスタ200(200A)は、複数の複合回路要素260(または複合要素260)と、複数の通信要素、つまり1つまたは複数の第1の通信要素250および完全相互接続要素275または分散された完全相互接続要素295(完全通信要素または完全相互接続バス(「FIBus」)とも称される)と、状態機械要素(SME)290と、メッセージ・マネージャ265と、複数のバスまたは他のタイプの通信媒体などのさまざまな通信構造とを備える。状態機械要素290およびメッセージ・マネージャ265は、すべてのクラスタ200において必要なわけではなく、さまざまな実施形態において、実行すべきアプリケーションに応じて、選択されたクラスタ200は、主に複合回路要素260(例えば、デジタル信号処理(「DSP」)機能を有する)を、他のクラスタ200(第1の通信要素250を介する対応する通信を行う)の状態機械要素290およびメッセージ・マネージャ265により実現される状態機械および/またはメッセージ管理機能とともに備えることができる。他の例示的な実施形態では、クラスタ200内の1つまたは複数の状態機械要素290を備えるのではなく、またはそれに加えて、1つまたは複数の外部コントローラ175または他のオフチップ・コントローラ、状態機械、またはプロセッサを使用して、対応する機能を代わりに実装できる。選択された実施形態では、完全相互接続要素275は、クロスバー・スイッチまたはパス・トランジスタ(アービトレーション機能を備えるか、または備えない)として実装されうるが、分散された完全相互接続要素295は、例えば、複数のスイッチ、パス・トランジスタ、マルチプレクサ、および/またはデマルチプレクサとして実装されうる。
さらに、選択された実施形態では、さまざまなオプションまたは変更形態として、例示的なクラスタ200は、例えば、ロング・キューなどの、ある種のキューであってよい、第2のメモリ要素255などの、追加のメモリを備えることもでき、またさまざまな第1の通信要素250および第2の通信要素210を使用することなく、隣接するクラスタ200同士の間でデータ、制御、および/または構成情報の転送を行うために、FIFO、バッファ、または他のメモリ構造などのクラスタ間キュー245を備えることもでき(図2に例示されている「高速経路」接続215を形成する)、また構成/制御バス285として例示されている、クラスタ200内のSME 290と他のコンポーネントとの間の通信のために別の、または追加の通信構造を備えることもできる。
図5および6に別々に示されてはいないが、それぞれの要素インターフェースおよび制御280は、さらに、図8を参照しつつさらに詳しく説明されている、メモリ、入力キュー、および要素コントローラ(複数の条件付きロジック構造(ゲート)からなる)も備えることができる。それに加えて、第1の通信要素250は、さらに、受信データを選択された複合回路要素260に転送し、選択された複合回路要素260からの送信データのアドレス指定およびルーティングを行うためのメモリ構造を備えることもできる。図5および6は、6つの複合回路要素260、2つの第1の通信要素250、1つの状態機械要素(「SME」)290、1つのメッセージ・マネージャ265、および1つの完全相互接続要素275または分散された完全相互接続要素295を、第2のメモリ要素255などの可能な追加のメモリおよびクラスタ間キュー245などの1つまたは複数のさまざまな通信構造とともに備えるクラスタ200(200A)を例示しているが、エレクトロニクス分野の当業者であれば、それらのコンポーネントの量および組み合わせはどれも利用することができ、またあらゆるそのような量および組み合わせは、同等であると考えられ、また本発明の範囲内にあるとみなされること理解するであろう。
それぞれの複合回路要素260は、計算回路要素270および統一(一定または固定)要素インターフェースおよび制御280からなる。一般に「計算」回路要素270と称されるが、回路要素270は、ビット並べ替え、メモリ機能、制御機能、状態機械機能、通信機能、命令処理などの計算以外の機能を実行することができ、そのようなすべての非計算的な、もしくは他の機能は、命名法に関係なく本発明の回路要素270の範囲内にあると考えられる。
クラスタ200内の複合回路要素260は、(計算)要素270を有し、これは、同じタイプでも異なるタイプでもよく、選択された組み合わせもしくは混合でクラスタ200内に備えることができ、また静的(構成不可能)であるか、または構成可能であるものとしてよい。図5に例示されているように、これらの要素270は、1つの構成可能な要素(タイプ「A」)270A、2つの構成可能な要素(タイプ「B」)270B、構成可能な要素(タイプ「D」)270D、構成可能な要素(タイプ「E」)270E、および構成可能な、または構成不可能な第1のメモリ回路要素270Mである。通信回路要素270Cは、第1の通信要素250内で使用され、典型的には構成不可能であるが、構成可能であるように実装することも可能である。それに加えて、選択された要素270は、構成不可能なものとして実装することもでき、またそのようなすべての変更形態は、本発明の範囲内にある。構成可能な計算要素270は、一般に、計算および/またはビット操作を実行し、例えば、構成可能な算術論理演算ユニット(ALU)、構成可能なトリプルALU、構成可能な積和(MAC)ユニット、構成可能なビット並べ替え要素(BREO)、構成可能な乗算器、構成可能なガロア乗算器、構成可能なバレル・シフター、構成可能なルックアップ・テーブル、構成可能およびプログラム可能なコントローラ、スーパーまたはラージALU(さまざまな算術演算、機能、比較、および操作を実行できる)などとすることができる。構成可能な計算要素270は、一般に、組み合わせロジック・ゲートからなるが、条件またはイベントの存在を評価するなどのために、必要に応じて、または望ましい場合に、条件付きロジック構造も備えることができる。例示的な構成可能な要素270が、図9および10に示されている。
上述のように、要素270は、さらに、通信機能を備えるように実装され、構成可能でも、構成不可能でもよく、内部通信、外部通信、およびメモリ・アクセス用のインターフェースを備えることができる。例示的な一実施形態では、そのような外部機能は、典型的にはさまざまなクラスタ間で異なる、複数の通信機能のうちの選択された1つの通信機能を備える、メッセージ・マネージャ265を通じて実現される。複数の通信機能は、例えば、イーサネット(登録商標)・インターフェース、PCIインターフェース、PCI Expressインターフェース、USBまたはUSB2インターフェース、DDR SDRAMインターフェース、または他のタイプのメモリ・インターフェース、無線インターフェース、他のICへのインターフェースなどを備えることも含むことができる。典型的には、所定のクラスタ200のメッセージ・マネージャ265は、1つのタイプの通信機能を備え、他のクラスタ200のメッセージ・マネージャ265は、それに応じて、他のタイプの通信機能を備える。例えば、第1のクラスタ200のメッセージ・マネージャ265は、PCI Expressインターフェースを備えることができるが、第2のクラスタ200のメッセージ・マネージャ265は、DDR−2インターフェースを備えることができ、また第3のクラスタ200のメッセージ・マネージャ265は、イーサネット(登録商標)・インターフェースを備えることができる。
それに加えて、メッセージ・マネージャ265は、さらに、相互接続部155への直接接続、またはより具体的には、状態機械要素290と他のコンポーネントとの間の構成および/または制御情報の通信など、さまざまな第1の通信要素250と無関係に、クラスタ間通信を行うために、第2通信チャネルまたはバス220を備えることもできる。例えば、実行時束縛において、さまざまな構成およびデータのルーティングは、メッセージ・マネージャ265を介してメッセージとして状態機械要素290に伝送されうる。したがって、メッセージ・マネージャ265は、状態機械要素290に直接結合されているか、またはその一部として例示されている(例えば、介在する、もしくは独立しているバス、または通信構造を持たない)。
第1のメモリ回路要素270M、第2のメモリ要素255、および/または要素インターフェースおよび制御280内のメモリは、限定はしないが、RAM、FLASH、DRAM、SDRAM、SRAM、MRAM、FeRAM、ROM、EPROM、またはE2PROMを含む、揮発性であるか不揮発性であるかに関係なく、任意の形態のメモリ、機械可読記憶またはメモリ媒体、あるいは他の任意のタイプのメモリ、記憶媒体、または知られている、もしくは知られることになるデータ記憶装置もしくは回路、またはそれらの組み合わせとすることができる。第1の例示的な実施形態では、第1のメモリ要素270Mおよび要素インターフェースおよび制御280内のメモリは、連想メモリ(「CAM」)として実装される。第2の例示的な実施形態では、第1のメモリ要素270Mおよび要素インターフェースおよび制御280内のメモリは、SDRAMとして実装される。
第1の通信要素250は、要素インターフェースおよび制御280、ならびに選択された実施形態に応じて、構成可能であるか、または構成不可能であるとしてよい、この場合通信要素270Cである、回路要素270を含む複合回路要素260と類似している。例えば、構成は、通信要素270C内のスイッチングまたはルーティングの経路を決定するように実行できる。通信要素270Cは、相互接続部155との間のパケット交換データ送信および受信、ならびにクラスタ200内の回路交換通信を行う。
同様に、状態機械要素290は、さらに、要素インターフェースおよび制御280を備え、その「計算」要素(270)は状態機械要素のより具体的な場合であり、これもまた、選択された実施形態に応じて、構成可能であるか、または構成不可能であるとしてよい。それとは別に、状態機械実施形態に対するさまざまなメモリ330ならびに入力および出力キュー320、315は、内部レジスタとして実現することもできる。後述のように、要素インターフェースおよび制御280は、さらに、マルチスレッド処理などのために複数のコンテキストを有する状態機械要素290を備える。それに加えて、状態機械要素290は、構成、制御、および受信割り込みを直接初期値として設定しやすくするために(構成/制御バス285を介して)複合回路要素260の要素インターフェースおよび制御280への直接アクセス機能を有するものとして、また命令/コード処理のための対応するメモリ・アクセスおよび他のデータ・アクセスを行いやすくするために第1のメモリ要素270M(および/または第2のメモリ要素255)への(例えば、デュアルポートRAMの1つのポートを通じて)直接接続として例示されている。上述のように、状態機械要素290は、利用可能なメモリ(例えば、複合メモリ要素260Mまたは第2のメモリ要素255)とともに、クラスタ・コントローラ、スーパークラスタ・コントローラ、マトリクス・コントローラなどの、本発明の範囲内の「コントローラ」を形成する。このようなコントローラは、さらに、メッセージ・マネージャ265または類似の機能を備えることができる。
同じ(または類似の)要素インターフェースおよび制御280を使用することにより、第1の通信要素250および状態機械要素290は、クラスタ200内の複合回路要素260には、後述の対応する利点を有する、単に他の複合回路要素260として見える。すると、例えば、他の複合回路要素260は、その出力が第1の通信要素250または状態機械要素290に送られるか、または入力が第1の通信要素250または状態機械要素290から受信されていることを知っている必要はなく、また異なるタイプのデータ受信または送信に対応できる必要もない。
例示的な実施形態では、複合回路要素260は、複合回路要素260のタイプまたは種類別(例えば、複合回路要素260内の回路要素270のタイプ)の何らかの形式の識別を含み、これにより状態機械要素(「SME」)290(またはコントローラ175)による識別を容易にすることができる。このような識別は、製造時に複合回路要素260内にROMとしてハード配線する、起動プロセスにおいてメモリ内にロードするなど、さまざまな形態でクラスタ200内の利用可能なメモリに保持することができる。このようなタイプ識別は、例えば、メモリ複合要素260、第2のメモリ255、または後述の要素インターフェースおよび制御280のメモリ330内に保持されうる。
要素インターフェースおよび制御280は、(1)それぞれの構成可能な回路要素270、メモリ要素、通信要素、または状態機械要素との間の入出力用の統一インターフェースと、(2)統一制御構造の両方を備え、これは図8および16を参照しつつ以下でさらに詳しく説明される。それぞれの要素インターフェースおよび制御280は、すべてのクラスタ200内のすべての複合回路要素260、第1の通信要素250、および状態機械要素290について同じ構造を有しているため、要素(270)が構成可能なALUであるか、構成可能なバレル・シフターであるか、通信要素であるか、または状態機械要素であるかなど、要素のタイプに関係なく、すべてのそのような要素260、250、290は、統一された繰り返し可能な方法で制御されうる。それに加えて、すべてのそのような複合回路要素260、第1の通信要素250、および状態機械要素290は、他の複合回路要素260、第1の通信要素250、および状態機械要素290と、要素のタイプ(例えば、構成可能な回路要素270)に関係なく、統一された繰り返し可能な方法で通信することができる。より具体的には、すべての複合回路要素260、第1の通信要素250、および状態機械要素290は、上述のアドレス指定方式により、統一された方法でアドレス指定されうる。
このような統一性の第1の結果として、どのような複合回路要素260、第1の通信要素250、および状態機械要素290も、入力の送り元である、または出力先である他の複合回路要素260、第1の通信要素250、および状態機械要素290に関して知る必要がない、つまり、それぞれの複合回路要素260および第1の通信要素250は、一般に、その周辺および機能について無知であるものとしてよい。(実装に応じて、状態機械要素290は、他の要素を監視し、試験し、制御するための追加の機能を有する場合があり、その周辺および機能に関して認識しうる)。そのような統一性の第2の結果として、それぞれの複合回路要素260、第1の通信要素250、および状態機械要素290は、これもまた要素のタイプ(例えば、回路要素270のタイプ)に関係なく、統一された方法で構成され、アドレス指定され、問い合わせされうる。
第3の、非常に重要な結果として、選択されたタイプの回路要素270を有するそれぞれの複合回路要素260は、特定の計算またはアルゴリズムの実行に対する局所性(距離)制約の範囲を除き、同じ選択されたタイプの回路要素270を有する他の複合回路要素260と実質的に完全に入れ替え可能である。そのため、そのような制約条件に従って、所定のアルゴリズムを実行するために、選択されたタイプの回路要素270を有する選択された複合回路要素260により実行される演算は、悪影響をもたらすことなく、同じ選択されたタイプの回路要素270を有する他の複合回路要素260に自由に割り当てられるか、または移動されうる。選択されたタイプの回路要素270を有する特定の複合回路要素260に障害が生じるか、または欠陥があった場合、その演算は、(1)同じ選択されたタイプの回路要素270を有する他の利用可能な複合回路要素260、または(2)一緒に同じ演算を実行することができる利用可能な複合回路要素260のグループ、または(3)他のまたは低い優先度の演算を実行していた同じ選択されたタイプの回路要素270(または複合回路要素260のグループ)を有する他の場合には利用不可能な複合回路要素260に移動されうる。例えば、トリプルALUを備える構成可能な要素270を有する複合回路要素260に障害が発生した場合、その演算は、それぞれ単一のALUを備える構成可能な要素270を有する3つの複合回路要素260に移動され、この要素は、次いで、トリプルALUの演算を実行するように構成されうる。同様に、第1の通信要素250または状態機械要素290により実行される機能も、他の利用可能な第1の通信要素250および状態機械要素290に、必要に応じて移動できる。
それぞれ完全クロスバー・スイッチとして、またはスイッチ、マルチプレクサ、デマルチプレクサ、または他のトランジスタ配列からなる他の配列として実装されうる、完全相互接続要素275および/または分散された完全相互接続要素295は、(他の)複合回路要素260、第1の通信要素250、および状態機械要素290の任意の入力に結合され、および/またはそのクラスタ200内の他のコンポーネントに、またはクラスタ間キュー245を介して、隣接するクラスタ200の完全相互接続要素275および/または分散された完全相互接続要素295に結合される、複合回路要素260、第1の通信要素250、および状態機械要素290の出力を備える(複合回路要素260、第1の通信要素250、および状態機械要素290または隣接するクラスタ200の他のコンポーネントへの入力のため)。(同じ複合回路要素内の入力への出力のフィードバックは、選択された実施形態において、別々に示されていないマルチプレクサまたは他のスイッチング装置などを通じて複合回路要素260内で内部的に実行されうる)。例示的な一実施形態では、複合回路要素260、第1の通信要素250、および状態機械要素290の出力は、それぞれの複合回路要素260について、完全相互接続要素275および/または分散された完全接続要素295を通じて、並行して、かつ同時に、他の複合回路要素260、第1の通信要素250、および状態機械要素290への入力として実現することができ、これにより、すべての複合回路要素260、第1の通信要素250、および状態機械要素290の間の完全な同時実行通信が可能になる(アービトレーションまたは他の解決を必要とする潜在的衝突を除く)。
選択された実施形態に応じて、複合回路要素260からの出力は、複数の方法で切り替えることができ、これはすべて本発明の範囲内にある。例えば、オプションの出力切り替え要素380(図8に例示されている)は、すべての複合回路要素260について備えることができ、これは、出力を複合回路要素260内の内部フィードバック用に切り替えるか、または出力を完全相互接続要素275または分散された完全相互接続要素295に切り替えるか、または出力を直接、第1の通信要素250に切り替えるか、または出力を直接、状態機械要素290に切り替えることができる。図8を参照しつつ以下で説明されている選択された実施形態では、計算要素270内の任意のステージから内部フィードバックを送ることができ、また計算要素270の出力は、他の複合回路要素260、状態機械要素290、または第1の通信要素250に切り替えるために、出力メモリ(または出力キューもしくはレジスタ)315に送られ、次いで、直接、完全相互接続要素275に送られる。同様に、複合回路要素260への入力は、完全相互接続要素275または分散された完全相互接続要素295から、または直接、完全相互接続要素275および第2のメモリ要素255、状態機械要素290、および/または第1の通信要素250などの他の伝送元から、複数の方法で実現することができる。
この通信機能は、いずれかの、または両方のデータ伝送元および/またはデータ伝送先に基づき実装されうる。伝送先に基づく通信では、それぞれのコンテキストに対する伝送先アドレスは、典型的には、出力キュー315のルーティング・テーブル内に格納される(図8)。次いで、出力が対応するアドレス宛てに送られ、完全相互接続要素275または分散された完全相互接続要素295は対応する伝送先アドレスについて構成される。この実施形態では、複合回路要素260の1つの出力が、複数の複合回路要素260への入力として適用される場合、それらの追加の入力を順次与えることができる。他の例示的な実施形態では、追加の出力ファンアウトが与えられ、1つの複合回路要素260の1つの出力は、これもまた完全相互接続要素275、分散された完全相互接続要素295、または他の通信構造を介して、複数の他の複合回路要素260内に同時に入力されうる。ハンドシェーキング・プロトコルも使用することができ、データの受信後伝送先は確認を送信するか、または送信しない。
例示的な一実施形態において実装されている、伝送元ベースの通信では、それぞれのコンテキストに対する伝送元アドレスは、典型的には入力キュー320内に格納される。すべての伝送元は、その出力を完全相互接続要素275または分散された完全相互接続要素295の選択されたバスまたは通信回線上に出す。受信データについては、データがコンテキストの1つまたは複数について指定された伝送元からかどうかを対応する入力キュー320で判定し、もしそうならば、メモリ空間が利用可能なときに、対応するデータを受信する。この伝送元ベースの通信では、任意の、またすべての伝送先が選択されたデータ回線上で送信された注目するデータを同時に受信するようにできるので、マルチキャスティングまたはブロードキャスティングが容易になる。ハンドシェーキング・プロトコルも使用することができ、伝送先は送信されたデータを受信できない場合に拒否または使用不可能を知らせる他のメッセージを送信するか、または送信しない(これにより、伝送元が別のときにデータを再送するようにできる)。
他の例示的な実施形態では、ハンドシェーキングも他のタイプの通信確認も使用されない。物理的データ・リンクは、束縛プロセスの一部として、実行時に確立され、対応するすべての計算プロセスは実行することが許され、しかも入力データが利用可能かどうか、出力データに利用できる空き領域があるかどうかを判定する必要がない。このような実装は、さまざまなアルゴリズムの内部カーネルなどに対するパイプライン処理に有用である。それに加えて、このような実装は、1つのデータ・プロセスがデータの到着を待っており、それにより他のプロセスのデータ・スループットに影響が及ぶときに、データ・ストールまたはデータ逆圧を回避するのに有用である。それに加えて、データ・フロー・ベースの演算を使用するさまざまなコンポーネント、およびデータ・フロー・ベースの演算を使用しない他のコンポーネントなど、これらの実装の組み合わせも使用することができる。例えば、データ・フロー・ベースの演算は、クラスタ200内の演算に使用することができ、通信演算などの他の演算の単純実行が許される(例えば、ルーティングおよびスイッチング)。
引き続き図5および6を参照すると、完全相互接続要素275および分散された完全相互接続要素295が、例示しやすいように、またわかりやすいようにその概要が示されており、例えば、他のクラスタ200との間でデータの転送を行うため、他の複合回路要素260、状態機械要素290、メッセージ・マネージャ265、またはいずれかの(または両方の)第1の通信要素250もしくはクラスタ間キュー245に結合される複合回路要素260の入力および出力、状態機械要素(SME)290と複合回路要素260(メモリ要素および通信要素を含む)との間の通信、制御情報、問い合わせ、問い合わせ応答などの転送のためのSME 290といずれかもしくは両方の第1の通信要素250との間の通信、メッセージ・マネージャ265と相互接続部155との間の通信、第1の通信要素250とクラスタ200内のさまざまなメモリ(例えば、第2のメモリ要素255とクラスタ200のさまざまなコンポーネント内の他のメモリ)との間の通信、クラスタ200内の複数のコンポーネントの組み合わせの間の他の通信などを行う、クラスタ200内の通信のタイプを一般的に表す。当業者であれば、さまざまな通信構造および通信媒体が利用可能であり、そのようなすべての変更形態は、同等であり、本発明の範囲内にあると考えられることを理解するであろう。
状態機械要素(SME)290は、命令の実行、条件およびイベントの判定、オペレーティング・システム管理、および複合回路要素260の制御を行うために、RISCプロセッサなどの(比較的小さな)マイクロプロセッサ(またはマイクロコントローラ)として機能する。SME 290は、レガシーのCプログラムを実装し、他の場合には複合回路要素260のステートレス・データフロー演算に対する状態を実装するために使用されうる。状態機械要素290は、逐次型プロセッサとして機能するように適合され、その演算は、同じクラスタ200内の複合回路要素260により強化される。SME 290は、さらに、内部メモリを搭載し、第2のメモリ要素255、メモリ複合回路要素260M、または複合回路要素260内のメモリ330を使用してデータおよび命令(またはアクション)を格納することができる。例えば、第2のメモリ要素255は、状態機械要素290により使用されうる命令を格納するのに十分な深さを有する複数の「長い」キューとして実装することができる。SME 290は、複合回路要素260のどれかを使用して、例えば、2つの数の加算または比較などのために、プログラムの実行で必要となる計算もしくは他の機能を実行することができる。状態機械要素290は、プログラミング言語でIF、CASE、WHILE、FORなどのステートメントを使用して表される条件の判定などの計算の制御機能を実行する。SME 290は、さらに、その制御機能を定義し、追跡するなどのために、制御レジスタまたは他のタイプの内部メモリを有することもできる。すでに述べたように、すべてのクラスタ200が状態機械要素290を備える必要はない。
さらに、状態機械要素290は、(構成/制御バス285を介した)複合回路要素260の要素インターフェースおよび制御280への直接アクセス機能に加えて、命令/コード処理のための対応するメモリ・アクセスおよび他のデータ・アクセスを行いやすくするために第1のメモリ要素270M(および/または第2のメモリ要素255)への直接接続を有するものとして例示されている。構成/制御バス285を使用する代わりに、そのような通信を、例えば、完全相互接続要素275または分散された完全相互接続要素295を介して行うことができる。
状態機械要素290は、ハードウェア・オペレーティング・システムを実装するために使用され、スーパーバイザー・モードでは、クラスタ200内のすべての資源にアクセスすることができ、このため、クラスタ200内の複合回路要素260のすべてをプログラムし、制御し、監視することができる。1つまたは複数のクラスタ200が、クラスタ200内に含まれる状態機械要素290を有しない実装では、他のクラスタ200の1つまたは複数の他の状態機械要素290が、それらの機能および演算を実行する。タスク制御に加えて、状態機械要素290は、クラスタ資源のセルフテスト、タスク(アクション(または命令))のロードまたは割り当て、複合回路要素260へのアクション(または命令)の束縛(例えば、実行時束縛)で使用され、またさまざまな複合回路要素260とクラスタ200との間の接続を形成する際にも使用される。割り当ておよび束縛プロセスは、図14を参照しつつ、以下でさらに詳しく説明される。総合すると、クラスタ200内のSME 290は、分散性の高いコントローラとして機能し、他のコントローラ175を伴って、または他のコントローラ175を伴わずに、(必要な複合回路要素260とともに)装置100のオペレーティング・システムを実行する。例示的な実施形態では、さまざまなSME 290は、例えば、システム起動プロセスの実行、マスター・コントローラとしての動作、および機能している、また機能していない複合回路要素260および他のコンポーネントの判定およびマッピングなどの追加の機能を備えることができるSME 290の動作も、図8〜14を参照しつつ、以下でさらに詳しく説明される。
例えば、SME 290は、クラスタ200内の複合回路要素260の束縛されたタスクを起動すること、タスクをサスペンドすること、複合回路要素260のアクションまたは機能をサスペンドすること(タスク全体の一部として)、タスクを停止し、その資源を解放すること(より高い優先度のタスクをロードして実行するなどのために)、シングルステップ・モードで実行するようにタスクを設定すること、タスクを他のロケーションに移動すること(現在そのタスクを実行中の複合回路要素260のセルフテストを実行するなどのために)を行うことができる。
第1のクラスタ200および第2のクラスタ200A実施形態におけるメッセージ・マネージャ265は、イーサネット(登録商標)・インターフェース、メモリ・インターフェース(例えば、DDR−2 SDRAM)、PCI Expressインターフェースなどについて装置100の外部で通信を行うために使用される。メッセージ・マネージャ265は、SME 290に直接結合され、より一般的には、さらに、完全相互接続要素275または分散された完全相互接続要素295、第1の通信要素250、および/または複合回路要素260(別々には例示されていない)にも結合されうる。例えば、完全相互接続要素275により供給されるデータ・ワードは、メッセージ・マネージャ265により出力され、外部メモリ内に格納されうる。同様に、さらに、例えば、受信データ、構成、または制御は、SME 290に命令を送るなどのためにSME 290に転送(または、第2のメモリ要素255内に格納)されうるか、または計算で使用し消費するために複合回路要素260に転送されうる。それに加えて、例示的な一実施形態では、メッセージ・マネージャ265は、第2の通信チャネルまたはバス220(相互接続部155の)にも結合される。
例示的な一実施形態では、追加の代替え形態として、メッセージ・マネージャ265は、装置100内の通信にも使用される。この実施形態では、メッセージ・マネージャ265は、クラスタ200同士の間の通信、またSME 290同士の間の通信にも使用される。例えば、メッセージ・マネージャ265は、第1のクラスタ200の1つの複合回路要素260が第2のクラスタ200の他の複合回路要素260に情報を転送するために使用される。
また、例示的な一実施形態では、マトリクス150内のすべてのメッセージ・マネージャ265が、外部通信を行うよう実装されるわけではない。例えば、4つのマトリクス150を使用する1つの代替え実施形態では、それぞれのマトリクス150は、6つの対応するクラスタ200のメッセージ・マネージャ265を通じて実装される全部で6つのPCI Expressインターフェースを備える(スーパークラスタ185がまったく同じく実装される一実施形態では、1つのスーパークラスタ185につき1つ)。同様に、この4つのマトリクスの実施例では、それぞれのマトリクス150は、1つまたは2つの対応するクラスタ200のメッセージ・マネージャ265を通じて実装される全部で1つまたは2つのDDR−2インターフェースを備える。その結果、外部通信用のインターフェースおよび制御を行っていない対応するメッセージ・マネージャ265を有する残りのクラスタ200がある。これらの残りのクラスタ200について、その対応するメッセージ・マネージャ265は、第2の通信要素210(スーパークラスタ・レベル)または第3の通信要素190(マトリクス・レベル)を通じて、それぞれ、メモリに格納するか、またはPCI−expressバス上で外部通信するためにDDR−2またはPCI−expressインターフェースを有するそれらの他のクラスタ200にデータを転送する。
メッセージ・マネージャ265は、選択された実施形態に応じて、さまざまな方法により実装されうる。第1の選択された実施形態では、メッセージ・マネージャ265は、有限状態機械として実装され、上述のような通信規格を実装する。状態機械として実装された場合、メッセージ・マネージャ265は、別に実装されるか、またはSME 290の一部として組み合わせるようにできる。第2の選択された実施形態では、メッセージ・マネージャ265は、条件付きロジックまたは他の状態機械機能を実行するために使用されるSME 290とともに、通信インターフェースを実現するためにも、専用計算ロジック・ゲートとして実装される。
例示的な実施形態では、上に示されているように、複合回路要素260は、複合回路要素260のタイプまたは種類別(すなわち、複合回路要素260内の回路要素270のタイプ)の何らかの形式の識別を含み、これにより状態機械要素(「SME」)290による識別を容易にする。一般に、SME 290は、実行時束縛で使用するために、クラスタ200内の複合回路要素260のタイプの判定とコンテキストが利用可能かどうかの判定(および必要に応じて、他のSME 290への報告)を行う。例えば、例示されているクラスタ200について、SME 290は、クラスタが1つの構成可能なバレル・シフター・タイプ要素(タイプ「A」に対応する)270A、2つの構成可能なトリプルALUタイプ要素(タイプ「B」に対応する)270B、1つの構成可能なガロア乗算器タイプ要素(タイプ「C」に対応する)270C、1つの構成可能なビット並べ替え(「BREO」)タイプ要素(タイプ「D」に対応する)270D、および1つの連想メモリ要素(タイプ「M」に対応する)270Mを有すると判定することができる。SME 290は、さらに、そのクラスタ200のBREOタイプ要素がもはや正常に機能していない、したがってそのBREOタイプ要素の演算は、他のクラスタ200のBREOタイプ要素に移動されうると判断し、別のときに報告することができる。
引き続き図5および6を参照すると、第2のメモリ要素255は、複数の伝送元から、直接的に、または完全相互接続要素275または分散された完全相互接続要素295を介して間接的に、入力を受け取り、出力(書き込みおよび読み出しが行われる)を行うことができ、例えば、(1)第1の通信要素250との間で(SME 290により使用されるデータ、命令、または他の制御情報の入力などの他のクラスタ200からの入力のため、または複合回路要素260により使用されるデータをキューに入れるため)、(2)同じクラスタ200内の1つまたは複数の複合回路要素260(メモリ複合回路要素260Mを含む)との間で、(3)SME 290との間で、(4)メッセージ・マネージャ265との間でそのような入出力を行うことができる。
図7は、クラスタ200の他の変更形態として、本発明の教示による第3の例示的なクラスタ200Bを示すブロック図である。この実施形態では、クラスタ200Bは、例えば、図3に例示されているように選択されたマトリクス150内に集中する通信機能のために、外部通信機能を備えるなど、通信機能を有する複合回路要素260を含む。また、この実施形態では、オプションとして、メッセージ・マネージャ265は、そのような外部通信には使用されず、その代わりに、構成可能であるか、または構成不可能であってよい、専用通信複合回路要素260内に備えられる。この実施形態では、それぞれの通信複合要素260は、DDR−2またはPCI−expressインターフェースなどの装置100との間の(外部)通信を行うための標準I/Oインターフェースを形成するために使用される。それに加えて、通信複合要素260は、そのようなインターフェースを実現するために追加の入力および出力バスもしくは媒体構造を有することができ、第1の通信要素250を通じてクラスタ201の外部で通信することに限定されない。選択された実施形態に応じて、追加の通信複合要素260は、突発的故障に対する回復力と免疫力を高めるために使用されうる。他のすべての点において、クラスタ200、200Bは、同一であり、さらに、分散された完全相互接続要素295ではなく完全相互接続要素275を使用する点でクラスタ200Aと異なる。そのため、クラスタ200への参照があれば、クラスタ200Bとして例示されている第3の実施形態を、クラスタ200の一変更形態またはより特異的な場合であるものとして意味し、含むことは理解されるであろうし、さもなければクラスタ200Bは別の実施形態としてこれ以上説明されない。しかし、第1のクラスタ200の実施形態は、図3に例示されているように選択されたマトリクス150内に集中している通信機能にも使用されうる。
クラスタ実施形態では、マトリクス、スーパークラスタ、およびクラスタのアドレス指定が同じであるため、また要素インターフェースおよび制御280が同じであるため、他のクラスタ200(または複合回路要素260)は、通信複合要素260およびそのクラスタ201と通信するか、または外部通信インターフェースを備えるメッセージ・マネージャ265を有するクラスタ200と、他の複合回路要素260またはクラスタ200との通信と同じ方法で通信することができる。そのため、クラスタ200または複合回路要素260が装置100の外部で通信を行う場合、必要なのは、クラスタ200または複合回路要素260が対応する通信複合要素260(選択された形態の通信に対応するインターフェースを持つ)および/またはそのクラスタ201のアドレス、または選択された形態の通信に対応するインターフェースを持つメッセージ・マネージャ265を有するクラスタ200のアドレスを有することだけである。そのようなアドレス指定は、例えば、メッセージ・マネージャ265、SME 290、または第1の通信要素250などのクラスタ200内のさまざまなコンポーネントにより実行されうる。そのような外部通信は、これにより、仮想アドレス指定を通じて、例えば、メッセージ・マネージャ265もしくはクラスタ200を介して、または通信複合要素260もしくはクラスタ201を介して、実行され、複合要素260は、外部インターフェースのロケーションまたはタイプに関するさらなる情報を必要としない。例えば、クラスタ200または複合回路要素260は、その外部通信がDDR SDRAMとであるか、またはイーサネット(登録商標)・プロトコルを使用するものであるかどうか、あるいはそれらのインターフェースが装置100内のどこに置くことができるかに関する情報を必要としない。同様に、内部通信についても、複合回路要素260は、その通信が同じクラスタ200または異なるクラスタ200内の他の複合回路要素260内で行われるのかどうかに関する情報を必要としない。
図18は、本発明の教示による第4の例示的な回路クラスタ200Cを示すブロック図である。第4の例示的な回路クラスタ200Cは、そのトポロジーがある程度の内部階層を有するという点で前に説明したクラスタ実施形態と異なり、第4の例示的な回路クラスタ200Cはゾーン201A、201B、201C、および201Dとして例示されている複数のゾーン201に分割され、それぞれのゾーン201は別の相互接続部275、295(完全または分散されている)に結合された4つの複合回路要素260(例示されているとおり)を有し、それぞれのゾーン201の間の通信は複数のクラスタ・キュー245A(すでに説明されているクラスタ間キュー245と実質的に同一)を通じて実行される。クラスタ・キュー245Aは、クラスタ200C内の通信に使用され、クラスタ200間の「高速トラック」通信にだけ使用されるわけではない。完全または分散相互接続部275、295は、さらに、以下でさらに詳しく説明されるように、伝送元に基づくものであり、それぞれ伝送先複合回路要素260はその対応するデータ伝送元からの(複数の)通信について相互接続部275、295を監視する。同等の代替え形態として、完全または分散相互接続部275、295は、本明細書で説明されているように、伝送先に基づくものとすることができる。
回路クラスタ200Cは、第1の通信要素250を含まない。その代わりに、他のクラスタ200、スーパークラスタ185、マトリクス150との通信、または外部通信(PCI−eバスなどとの)(第2のチャネル(またはバス構造)220を介して)は、メッセージ・マネージャ265を通じて実行され、第1の通信要素250の追加のパケット・ベースおよび回路交換通信機能を実現する。CE0からCE14として例示されている複合回路要素260はそれぞれ、前に説明されているように完全または分散相互接続部275、295に結合され、4つの入力および2つの出力がそれぞれの複合回路要素260との間に備えられる。例示されているようなクラスタ・キュー245A12からクラスタ・キュー245A16までは、回路クラスタ200C内の複合回路要素260のさまざまなゾーン201の間の通信を行う。
典型的には、クラスタ・キュー245Aは、本明細書で説明されているような任意のタイプのメモリを使用して、複数の一方向ポートとして実装され、またゾーン201間(クラスタ200C内で伝送先まで1「ホップ」、ただし、他のデータ伝送元からの競合がなければ、サイクル毎に1「ホップ」が生じる)、または回路クラスタ200C間(隣接するクラスタ200Cまで1または2サイクルもしくは「ホップ」、および他の伝送先まで1または複数サイクルもしくは「ホップ」)の両方向の複数の通信経路を形成するように実装される。例示的な一実施形態では、それぞれのクラスタ・キュー245Aは、それぞれの方向に2つ合計4つの通信経路を備える。例えば、クラスタ・キュー245A15は、ゾーン201B(データ伝送元として)からゾーン201D(データ伝送先として)への2つの通信経路を備え、またゾーン201D(データ伝送元として)からゾーン201B(データ伝送先として)への2つの通信経路を備える。例示的な一実施形態では、それぞれのクラスタ・キュー245Aは、さらに、8つのコンテキストを有し、それぞれの方向に、それぞれの通信経路について、それぞれのクラスタ・キュー245A間に8つの仮想接続を設ける。
したがって、この実施形態について、クラスタ・キュー245Aおよびメッセージ・マネージャ回路265は、さらに、本発明の範囲内で「通信要素」と考えられる。
図19は、本発明の教示による、スーパークラスタ185Cを含む、例示的な第3の装置実施形態を例示するブロック図である。回路クラスタ200Cに対しこのトポロジーを使用することで、回路クラスタ200Cは、効果的に互いにタイル状またはアレイ状に配列され、C0からC15まで例示されている16個の回路クラスタ200Cを有する、スーパークラスタ185Cとして例示されているスーパークラスタ185を形成することができる。回路クラスタ200Cはそれぞれ、複数のクラスタ・キュー245Aを通じて隣接する回路クラスタ200Cと通信する。そこで、それぞれのスーパークラスタ185Cは、1つまたは複数の第2の通信要素210を使用せず、代わりに、スーパークラスタ185C内の1つまたは複数のメッセージ・マネージャ265を通じて1つまたは複数の第3の通信要素190に接続する。
ここでもまた図18を参照すると、この実施形態に関して、クラスタ・キュー245Aは、さらに、隣接するクラスタ200Cとのクラスタ間通信を実現し、またより一般化されたタイプのクラスタ間キュー245としてみなしうる。例示されているように、周辺クラスタ・キュー245Aは、回路クラスタ200Cとその隣接する回路クラスタ200Cとの間の通信も実現する。クラスタ間通信について、クラスタ・キュー245Aは、選択された実施形態に応じて、それぞれの方向に1つまたは2つの通信経路を設けるように実装されうる。例えば、例示的な一実施形態では、周辺クラスタ・キュー245Aは、それぞれの方向に1の通信経路を備える。典型的な地理的座標を使用することで、例えば、(複数の)クラスタ・キュー245A0は、回路クラスタ200Cと隣接する「北西」回路クラスタ200Cとの間の通信を実現し、(複数の)クラスタ・キュー245A1および245A2は、回路クラスタ200Cと隣接する「北」回路クラスタ200Cとの間の通信を実現し、(複数の)クラスタ・キュー245A3および245A4は、回路クラスタ200Cと隣接する「西」回路クラスタ200Cとの間の通信を実現し、(複数の)クラスタ・キュー245A5および245A6は、回路クラスタ200Cと隣接する「南西」回路クラスタ200Cとの間の通信を実現する。同様に、(複数の)クラスタ・キュー245A11(隣接するクラスタ200Cの一部とみなせる)は、回路クラスタ200Cと隣接する「北東」回路クラスタ200Cとの間の通信を実現し、(複数の)クラスタ・キュー245A10と245A9(隣接するクラスタ200Cの一部とみなせる)は、回路クラスタ200Cと隣接する「東」回路クラスタ200Cとの間の通信を実現し、(複数の)クラスタ・キュー245A8(隣接するクラスタ200Cの一部とみなせる)は、回路クラスタ200Cと隣接する「南東」回路クラスタ200Cとの間の通信を実現し、(複数の)クラスタ・キュー245A6と245A7(隣接するクラスタ200Cの一部とみなせる)は、回路クラスタ200Cと隣接する「南」回路クラスタ200Cとの間の通信を実現する。
それに加えて、後述の実行時束縛などにおける、データ・ルーティングの割り当てでは、第2の通信要素210を通じてスーパークラスタ185へまたはスーパークラスタ185からデータもしくは他の情報をルーティングし、および/または第1の通信要素250を通じて回路クラスタ200へまたは回路クラスタ200からデータまたは他の情報をルーティングする代わりに、ルーティングは、メッセージ・マネージャ265を通じてスーパークラスタ185もしくは回路クラスタ200へまたはスーパークラスタ185もしくは回路クラスタ200から行われ、また本明細書で説明されている伝送元に基づく、または伝送先に基づく通信方式を使用して、さまざまなクラスタ・キュー245Aのどれかを通じて、スーパークラスタ185または回路クラスタ200C内の指定された複合回路要素260へのルーティングにより行うことができる。クラスタ間通信にクラスタ・キュー245Aをこのように使用することには、1つのパケット・トレインに組み立てるのに複数のワードが必要なく、その代わりに生成されると同時に伝達されうる限り、第1の通信要素250の使用と比べて待ち時間が短縮されるという潜在的利点がある。スーパークラスタ185Cおよび回路クラスタ200Cは、さもなければ、それぞれ、スーパークラスタ185および回路クラスタ200に対し本明細書で説明されているように機能する。したがって、スーパークラスタ185または回路クラスタ200への参照は、それぞれ、スーパークラスタ185Cまたは回路クラスタ200Cを、対応する形で意味し含むと理解されるものとする。
図8は、本発明の教示による例示的なクラスタ200内の例示的な複合回路要素260をより詳細に示すブロック図である。図8に例示されているように、複合回路要素260は、要素インターフェースおよび制御280ならびに回路要素270(計算要素270とも呼ばれる)を含み、これは、一般に、構成可能な計算要素であるが、構成不可能な計算要素、構成可能または構成不可能な通信要素、構成可能または構成不可能な有限状態機械要素であってもよく、構成可能または構成不可能なメモリ要素であってもよく、あるいは装置100の特定のアプリケーション向けに選択された他の形態の回路であってもよい。
例示的な一実施形態では、要素インターフェースおよび制御280は、(1)要素コントローラ325と、(2)コンテキストおよび制御情報(例えば、構成ワード)を格納するメモリ330(連想メモリ(「CAM」)またはSDRAMなどのランダム・アクセス・メモリ)と、(3)入力キュー320(メモリの一形態として)と、(4)出力キュー(またはレジスタ)315(これもまたメモリの一形態として)とを備える。他の例示的な実施形態では、要素インターフェースおよび制御280は、要素コントローラ325、メモリ330、および入力キュー320または出力キュー315の、両方ではなくいずれか一方を備えることができる。追加の例示的な実施形態では、要素インターフェースおよび制御280は、メモリ330、および入力キュー320または出力キュー315のいずれかを備えることができるが、要素コントローラ325を含まない。後者の実施形態では、SME 290がアクションを割り当て、データ・ルーティングを確定した後、複合回路要素260内では、別の、または追加の制御は使用されず、複合回路要素260は割り当てられたコンテキストを自由に、および/または連続的に実行することが許される。
上述のように、選択された実施形態において、要素インターフェースおよび制御280は、さらに、1つまたは複数のスイッチ、トランジスタ、マルチプレクサまたはデマルチプレクサなどのオプションの出力スイッチング要素380を備え、複合回路要素260内の内部フィードバックを行うか、または出力データを完全相互接続要素275または分散された完全相互接続要素295に送ることに加えて、出力データをSME 290、メッセージ・マネージャ265、または第1の通信要素250に送るなどのために、出力データ用の直接スイッチング機能を実現することができる。上述のように、メモリ330、入力キュー320、および出力キュー315は、限定はしないがCAMまたはSDRAMなどの、前に述べた任意のメモリ・タイプを含む、任意の形態のメモリとして実装されうる。
入力キュー320は、それぞれ16ビット・データ・ワード1つ分の幅を有する例示的な4つの入力として例示されている、構成可能な回路要素270への複数の入力365を備える。それとは別に、この幅は、例えば、プレースホルダを指定するビットを含むくらいの広さとしてよい。入力キュー320は、組み合わされた32ビット・データ・ワードに2つの入力を使用するなどして、互いに独立であるか、または互いに依存していてもよい。例示的な実施形態では、入力キュー320は、回路要素270への入力のそれぞれに対し備えられ、入力キュー320のそれぞれは、回路要素270により使用されうるそれぞれのコンテキストに対し別々のキューを備える。それに加えて、入力キュー320は、深さが1または2データ・ワードである「ショート・キュー」として実装できるが、より深いキューおよびその他の形態のメモリも本発明の範囲内にある。例示的な一実施形態では、8つのコンテキストが、4つの入力のそれぞれについて使用され、深さは少なくとも2データ・ワードである。またコンテキストを組み合わせることで、選択されたコンテキストに対し、より大きなキュー、例えば、16ワードのものを実装することができる。
入力キュー320は、直接的に、または完全相互接続要素275または分散された完全相互接続要素295を介して、スイッチング配列に応じて、複数の入力ソースのどれかから、例えば、(1)第1の通信要素250(他のクラスタ200からの入力のため)から、または(2)同じクラスタ200内の1つまたは複数の他の複合回路要素260(メモリ複合要素260Mを含む)から、または(3)第2のメモリ要素255から、または(4)メッセージ・マネージャ265から、または(5)SME 290(例えば、条件またはイベントを評価するなど、値の計算または2つの値の比較のためにSME 290により使用されたとき)からデータを受け取ることができる。図8に例示されているように、入力キュー320は、例示的なマルチプレクサ335として例示されている、完全相互接続要素275または分散された完全相互接続要素295のいずれかからデータを受け取る。例示的な一実施形態では、マルチプレクサ335は、16対1マルチプレクサであり、これにより入力キュー320は、入力データについて相互接続部275、295のバスを選択することにより割り当てられた伝送元からデータを取得することができる。回路要素270からの出力は、さらに、入力キュー320を通じて、または要素270の回路内で直接的に、上述の出力スイッチング要素380を介して、または単純に、完全相互接続要素275を介して、入力として送られるべくフィードバックされうる。
例示的な一実施形態では、2つの出力キュー(レジスタまたは他の形態のメモリ)315が備えられ、それぞれ対応する8つのコンテキストを有し、それぞれ16ビット・データ・ワード1つ分の幅を有し、1つ、2つ、またはそれ以上のデータ・ワードの選択された深さを有する。それとは別に、この幅は、例えば、プレースホルダを指定するビットを含むくらいの広さとしてよい。出力キュー315は、さらに、組み合わされた32ビット・データ・ワードに2つの出力キューを使用するなどして、互いに独立であるか、または互いに依存していてもよい。またコンテキストを組み合わせることで、選択されたコンテキストに対し、より大きなキュー、例えば、8〜16ワードのものを実装することができる。出力データを格納することに加えて、出力キュー315(組み込まれた状態機械を使用する)は、追加の伝送先に分配するために同じ出力データを追加のコンテキストに送るなど、出力データを複製することもできる。
複数の出力375は、2つの出力として例示されている、回路要素270の出力キュー315から供給され、また、それぞれ16ビット・データ・ワード1つ分の幅を有する(または、上述のように、プレースホルダ・ビット、制御情報、または他のデータを含めるなどのために、さらに広い幅)。出力375は、さらに、組み合わされた32ビット・データ・ワードに2つの出力を使用するなどして、互いに独立であるか、または互いに依存していてもよい。出力375は、完全相互接続要素275または分散された完全相互接続要素295(またはオプションの出力スイッチング要素380)に送られ、この要素は、これらの複数の出力375のそれぞれを(対応する通信構造またはバス350を介して)、独立して、(1)第1の通信要素250(他のクラスタ200への出力のため)に、または(2)同じクラスタ200内の1つまたは複数の(他の)複合回路要素260(メモリ複合要素260Mを含む)に、または(3)SME 290(値の計算または2つの値の比較のため(例えば、条件またはイベントを評価するため)にSME 290により使用される場合など)に、または(4)メッセージ・マネージャ265に、または(5)SME 290または他のコンポーネントへの入力のためのロング・キューなどのオプションの第2のメモリ要素255に送ることができる。上述のように、オプションの出力スイッチング要素380および他の出力スイッチング配列も、利用可能であり、エレクトロニクス分野の当業者にとっては、明らかなことであり、同等のものであると考えられ、本発明の範囲内にある。
選択された一実施形態では、メモリ330は、CAMとして実装されており、格納されているタスク識別子(タスクID)および格納されているアクション識別子(アクションID)の探索および識別が容易になる。他の実施形態では、メモリ330は、RAMとして実装され、探索および識別は二分探索法などの他の探索法を使用して実行される。しかし、他のタイプおよび組み合わせのメモリも、使用することができ、すべて同等であり、本発明の範囲内にあると考えられ、これらは、選択された実施形態に応じて、揮発性であろうと不揮発性であろうと、限定はしないが、RAM、FLASH、DRAM、SDRAM、SRAM、MRAM、FeRAM、ROM、EPROMまたはE2PROM、または他の任意のタイプのメモリ、記憶媒体、または知られている、もしくは知られることになるデータ記憶装置もしくは回路を含む。
メモリ330は、例示的な実施形態では、構成可能な要素270を構成し、その動作を指令するために使用される、コンテキストと制御情報の両方を格納するために使用される。このようなコンテキストおよび制御情報は、複数の情報フィールドとして、例示的な実施形態では、構成ワードとして格納され、これについては図16を参照しつつ以下で説明される。それに加えて、状態機械要素290を通じて、このような構成ワードは、変更される、削除される、取って代わられる、追加される、などの操作を受けることができ、構成ワード内のさまざまなビットを修正することにより、回路要素270による演算の実行も制御されうる。コンテキストおよび制御情報のこのようなローカルへの格納により、リモート・メモリからの構成または命令のフェッチおよび読み込みが不要になるが、回路要素270の即時構成および制御のためのコンテキストとしてすぐに使用できるので、実行能力が大幅に高速化される。したがって、装置100は、典型的なプロセッサの実行能力を制限する「フォン・ノイマン」ボトルネックの影響を受けない。実際、さまざまなメモリ330は、例えば、コンポーネントに障害が発生した場合の命令(またはアクション)の分散処理、分散デジタル信号処理、分散プログラミング、および分散再束縛などのために、有利に使用されうる大規模な非常に高度に分散される命令メモリとして機能する。
また、コンテキストをこのように使用し、ローカルに格納することにより、複合回路要素260、第1の通信要素250、および状態機械要素290の演算の時分割を大きく進めることができる。例えば、選択された複合回路要素260の一方のコンテキストが、他の複合回路要素260によりまだ形成されていなかった入力データを必要とする場合があるが、他のコンテキストは、アイドル状態のままになっている複合回路要素260ではなく、選択された複合回路要素260上で実行されうるようにできる。同様に、状態機械要素290により複数のコンテキストを使用することで、マルチスレッド化された演算を実行できる。例えば、SME 290は、第1のコンテキストについて特定の第1のデータセットで第1のコードの実行を開始し、中間結果および第1のコード・ポインタを格納し、第2のコンテキストに対する第2のデータセットで第2のコードの実行を開始し、出力を送り、その後、第1のコード・ポインタおよび格納されている中間結果を使用して第1のコードの継続実行のため第1のコンテキストに戻ることができる。このように時分割されたコンテキストを使用することで、さらに、タスクのインタリービングおよび他の方法ではアイドル状態になると思われる資源の使用が可能になり、これにより、複数のタスク間で資源を共有することができ、またICの総合的な資源利用度も向上する。
要素コントローラ325は、組み合わせロジック・ゲートを通じて、および/または有限状態機械として、実装することができ、またメモリ330内に格納されている構成ワード(コンテキストおよび制御情報)を使用して、回路要素270をどのように構成するか、回路要素270がいつ動作するかを制御するために使用される。より具体的には、例示的な実施形態において、回路要素270は、データ・フローに基づいて動作し、その入力のところにデータが出ている場合、生成される出力データを格納または消費するのに利用できる伝送先がある場合、要素コントローラ325により許可された場合に、回路要素270は演算(または発火)を開始し、入力データに対して計算または操作を実行し、対応する出力データを送る。要素コントローラ325は、特定の条件および優先度(およびメモリ330内に1つまたは複数の構成ワードとして格納されている他の情報)に基づき、このデータ・フロー演算を制御する。例えば、複数のコンテキストが実行可能な状態にある場合、要素コントローラ325は、ラウンド・ロビン方式、または1つまたは複数の優先度の評価、活動のスケジュールされた実行、または活動が最後に実行された時間(例えば、一番最近実行されたアクションは、アービトレーションにおいて低い優先度を有するが、最も長い間実行されていないアクションは、アービトレーションにおいて高い優先度を持つことができる)用いて、どれが最初に実行するかについてアービトレーションを実行することができる。
要素コントローラ325は、精密化をさまざまなレベルで行って実装されうる。上述のように、一実施形態では、要素コントローラ325は、実装されず、複合回路要素260は他の制約(例えば、さまざまなSME 290からの制御)を受けながら本質的に連続モードで動作する。まったく正反対に、要素コントローラ325は、第1のコンテキストの部分実行の現在の状態を(第1の)メモリ330内に格納し、第2のコンテキストを(回路要素270を介して)実行し、現在の状態を取り出して、回路要素270による第1のコンテキストの実行を再開することなどにより、回路要素270のマルチスレッド化演算を実行できる。
例示的な構成可能な計算要素270が、図9および10に示されている。図9は、例示的な乗算器タイプの構成可能な要素270Fのブロック図であり、図10は、例示的なトリプルALUタイプの構成可能な要素270Gのブロック図である。例示されているように、それぞれ、4つの16ビット入力365および2つの16ビット出力375を有し、コンテキストに応じて、それぞれすべての入力365および375を利用することができる。選択されたコンテキストに対応する構成は、選択された構成を実装するために対応するマルチプレクサ、デマルチプレクサ、および他のスイッチング要素のモード選択について実現される。
図9に例示されているように、例示的な乗算器タイプの構成可能な要素270Fは、32ビット乗算、16ビット乗算、累算、および16ビットと32ビットの算術演算の混合演算など、複数の動作モードについて構成可能である。簡単に高水準の説明を行うと、乗算器タイプの構成可能な要素270Fは、4つのマルチプレクサ383、384、385、386を使用し、32ビット出力選択387を使用し、そして加算器/減算器382および乗算器381に入力された他の構成ビットを使用して、構成されうるということである。32ビット出力選択387では、加算器/減算器382の下位32ビットが出力されるかどうか、または64ビット累算レジスタ388のどの部分が出力されるかを指定する。マルチプレクサ385(A選択)では、加算器/減算器382へのA入力を、ゼロ、I1、I2、または累算レジスタ388として指定し、マルチプレクサ386(B選択)では、加算器/減算器382へのB入力のアライメントを、乗算器381からの64ビット出力の4つの16ビット部分のうちの1つとして指定し、加算器/減算器382への構成ビットは、さらに、A入力が符号付きであるか、符号なしであるか、およびB入力が加算されるのか、減算されるのかを指定する。マルチプレクサ383(P選択)では、乗算器381へのP入力を、I3、I2として指定し、また符号付きか、符号なしかも指定する。マルチプレクサ384(Q選択)では、乗算器381へのQ入力を、I1、I0として指定し、また符号付きか、符号なしかも指定する。それに加えて、乗算器タイプの構成可能な要素270Fは、さらに、64ビット累算レジスタ388からマルチプレクサ385への要素270内の出力フィードバックを例示している。
図10に例示されているように、例示的なトリプルALUタイプの構成可能な要素270Gは、例えば乗算、加算、および減算(符号付き算術演算の)、マスキング、算術平均、および丸めを含むという点でさまざまな機能用に構成可能である。それに加えて、例示的なトリプルALUタイプの構成可能な要素270Gは、定数を出力し、1つの値を渡し(AまたはBをその出力にコピーする)、論理演算(NOT、AND、OR、XOR)を実行し、条件付きまたは無条件データ・フローを実行することができる。図10に例示されているように、構成ビットに応じて、シフター393、394、および395のそれぞれは、その対応する入力を指定された量だけ左(正)または右(負)にシフトする。ABSブロック389、399は、構成ビットに応じて、入力の絶対値を計算するか、または入力を渡す。ステータス・マルチプレクサ396は、ALU 390、391、および392のそれぞれからのフラグ・ビットを使用してステータス・ワードを生成し、SME 290に送ることができるが、その際に、1つのフラグ・ビットでキャリーまたは比較を指定し、第2のフラグ・ビットで、その結果が最上位ビットであることを指示し、第3のフラグ・ビットで、その結果が負の1(−1)であることを指示し、第4のフラグ・ビットで、その結果がゼロであることを指示する。条件スワップ・マルチプレクサ397および398は、入力I3、I2上で条件付き実行を行うために使用され、その結果に基づき、I0および/またはI1を出力375に渡し、さらに、出力375にコピーされる前に入力のスワップを行う。
上述のように、これらのタイプの構成可能な要素270に加えて、他の予想される構成可能な要素270は、ビット並べ替え要素(「BREO」)、単一ALU要素、「スーパー」ALU要素(32ビットALU)、バレル・シフター要素、ルックアップ・テーブル要素、メモリ要素、プログラム可能コントローラ要素、通信要素などを含む。
B.装置向けのプログラム・コンパイル
図11は、本発明の教示による例示的なコンパイル・プロセスを示す流れ図である。以下の説明は、本発明を説明することを目的として非常に高い水準のものであることは理解されるべきである。コンパイル・プロセスは、コンピュータ・システムまたはネットワーク、ワークステーション、処理デバイス、1つまたは複数のマイクロプロセッサ、電子設計自動化(「EDA」)ツール、電子システム・レベル(「ESL」)ツールなどを使用して実行されうる。
図11を参照すると、この方法は、開始ステップ400から始まり、ステップ405でコンパイルのためのアルゴリズムの選択を行う。このようなアルゴリズムは、例えば、数学的記述からマイクロプロセッサ用のソース・コードまたはオブジェクト・コードのリスティングに至るまで、さまざまな方法で表すことができる。アルゴリズムは、ステップ410で複数の「タスク」に変換または分解されるが、これらは逆高速フーリエ変換(IFFT)の実行など、機能またはプロセスの高水準記述である。次いで、ステップ415で、タスクが複数のタスクから選択され、タスク識別子(「タスクID」)を割り当てられるが、これは、典型的には、タスクを同じアルゴリズムの複数のタスクの他のインスタンスから、またはこれもまた装置100上で同時実行されている他のアルゴリズムのタスクから十分区別できる一意的な識別子である。
選択されたタスクは、次いで、ステップ420で、タスクを実行するために、複合回路要素260(計算、状態機械、および/または通信複合要素260、290、250を含む)により実行される1つまたは複数のアクションに変換または分解される。上述のように、「アクション」は、例えば、乗算、ビット操作、および命令処理などの、複合回路要素260により実行される機能または活動のタイプであり、プロセッサにより実行される命令またはそれと同じ結果を得るためにASICもしくはFPGAにより実行される機能と同等であると考えられる。例えば、IFFTタスクは、乗算、加算、および累算ステップなどの複数の「バタフライ」ステップに分解することができ、そのそれぞれまたはすべてが、「multiply‘a’times‘b’(a x b)」などの1つのアクション(または命令)を構成し、複合回路要素260のうちの1つの要素の演算構成の1つに対応する。したがって、本明細書に使用されているように、「アクション」、「機能」、または「活動」という用語は、同等のものとして、入れ替えて使用され、そのような回路プロセスを意味する。(その結果、そのようなアクション(または命令)は、一度割り当てられ束縛されると、要素270のうちの1つまたは複数の要素の構成の形でIC上に残る)。ステップ425で、1つまたは複数のアクション(または命令)のうちの1つのアクション(または命令)が選択され、アクション識別子(「アクションID」)を割り当てられるが、これは、そのアクションを選択されたタスクに対する他のアクション(または命令)から十分区別できる一意的な識別子である。タスクIDおよびアクションIDは、図14を参照しつつ以下で説明されている、実行時束縛プロセスにおいて使用される。
次いで、それぞれのアクション(または命令)は、ステップ430で、使用される(複数の)複合回路要素のタイプ別に1つまたは複数の複合回路要素260の1つまたは複数のコンテキストとしてマッピングまたは割り当てられ、そのアーキテクチャ内の特定の複合回路要素260または特定のアドレスには割り当てられず、特定のハードウェア・コンポーネントに結び付けられていない「シンボリックな」、ジェネリックな、または非特異的なコンパイルが行われる。例えば、乗算および加算アクション(または命令)は、単一コンテキストとして、ALUタイプの複合要素260(ALUタイプの回路要素270を有する複合要素260)にマッピングされ、特定のクラスタ200内の特定のALUタイプの複合要素260にはマッピングされない。より複雑なアクション(または命令)は、複数のタイプの複合回路要素260の複数のコンテキストにマッピングされうる。後から、束縛プロセスの一部として、選択されたタイプの1つまたは複数の特定の複合回路要素260は、その(またはそれらの)利用可能なコンテキストのうちの1つまたは複数として、アクションを実行する(またはそれと同等であるが、命令を実行する)ように割り当てられる。この区別は、重要であるが、装置100の動作中に、アクション(または命令)を最初に1つまたは複数の複合回路要素260に割り当て、その後、場合によっては、必要に応じて、他の複合回路要素260に再割り当てすることができるからである。それに加えて、示されているように、例示的な実施形態では、この独立の束縛プロセスは、アクション(または命令)を、複合回路要素260の選択されたタイプについて利用可能な1つまたは複数のコンテキストとして割り当てることができ、他のコンテキストは、他のアクション(または命令)を割り当てるのに利用可能なまま残っている可能性がある。
このプロセスの一部として、ステップ435において、それぞれのアクション(または命令)に対する対応する「リンク」も、このジェネリックな、シンボリックな、または非特異的なレベルで決定される、つまり、ジェネリックまたはシンボリック「ポインタ」として決定され、アクション毎に、入力データの伝送元またはデータ出力の伝送先またはその両方に関する情報が生成され、保持される。例えば、タスク「418」のアクション番号「512」は、ALUタイプの複合要素260にマッピングされることに加えて、タスク「229」のアクション番号「414」から入力を受け取る、またはタスク「319」のアクション番号「811」に出力を送る(またはその両方)という関連情報を有する。そのような一組の入力リンクまたは出力リンクのいずれかのみが必要であるが、ただし、その一組の情報が、すべてのアクション(または命令)について一貫して生成される場合であり、その際に、そのデータ伝送元に入力をリンクすることは、自動的に、データを利用するこの入力(伝送先)にデータ伝送元の出力をリンクすることになり、その逆も言える。選択された実施形態では、I/Oリンク情報の両方の集合を用意すると有益であると思われる。入力と出力との間のこの関係または「リンク」は、ジェネリックまたはシンボリック・ポインタを通じて、後述のタスクおよびアクション(または命令)束縛プロセスの一部として有用でもある。ステップ435のこの入力または出力リンクの決定は、さまざまな順序で、さまざまなステップのどれかに従って、コンパイル・プロセスにおいて実行されうる。例えば、この決定は、1つのタスクに対するすべてのアクション(または命令)が決定され、複合回路要素260のタイプにマッピングされた場合、またはすべてのアクション(または命令)およびタスクが、決定され、複合回路要素260のタイプにマッピングされた場合に、ステップ440または445のいずれかに従って実行されうる。
コンパイル・プロセスは、さらに、ステップ440で、対応する形でさまざまな複合回路要素260によるある程度の実行の近接性または局所性を必要とするプログラムまたはアルゴリズムにおけるタイミング制約を決定し、影響を受けるタスクおよび/またはアクション(または命令)に対する対応するリージョン制約を定める。例えば、さまざまなタイミング要件に関して、他のクラスタ200または他のスーパークラスタ185との間の相互接続155におけるデータ・パケットのルーティングから引き起こされうる遅延を回避するために、単一クラスタ200内で、または同じスーパークラスタ185内のクラスタ200のグループ内でいくつかのプロセスが実行される必要がある場合がある。これらの状況において、リージョン要件が、「region」コマンドまたは命令指定などにより、コンパイルされた出力(後述の「シンボリック・ネットリスト」)内に入れられ、例えば、後に続くアクション(または命令)が、単一クラスタ200内、または単一スーパークラスタ185内で実行されなければならず、その後、単一クラスタ200または単一スーパークラスタ185に限定されたアクション(または命令)に対する「終了リージョン」指示があるようにする。選択された実施形態に応じて、そのようなリージョン制約は、さらに、回路クラスタ200Cなどの、回路クラスタ200内のゾーン201に拡張されうる。
ステップ440の後、この方法は、ステップ445で、識別子を割り当て、複合回路要素260のタイプにマッピングされる追加のアクション(または命令)があるかどうかを判定し、もしあれば、この方法は、ステップ425に戻り、繰り返して、次のアクション(または命令)を選択し、ステップ425、430(場合によっては435)、および440へと進む。ステップ440で、そのタスクに対するすべてのアクション(または命令)が識別子を割り当てられ、複合回路要素260のタイプ(および場合によっては、リンクされた入力または出力)にマッピングされると、この方法は、ステップ450に進み、追加のタスクがコンパイルされるべきかどうかを判定する。ステップ450で、追加のタスクがコンパイルされることになった場合、この方法は、ステップ415に戻り、繰り返し、次のタスクを選択し、タスクIDを割り当て、といったことを行う。
ステップ450で、すべてのタスクが処理され、選択されたアルゴリズムが、複数のタスクおよびアクション(または命令)に変換され、次いで、複合回路要素260のタイプにシンボリック(ジェネリックまたは非特異的)マッピングされ、いずれかのデータ入力元またはデータ出力先(またはその両方)により(例えば、シンボリック・ポインタを使用して)シンボリック・リンクされると、この方法は、ステップ455で、複合回路要素およびルーティング「シンボリック・ネットリスト」またはシンボリック・コンパイルを生成する。このシンボリック・ネットリスト、リスティング、またはコンパイルは、複数のシンボリック・ネットリスト要素を含み、それぞれのそのようなシンボリック・ネットリスト要素はアルゴリズムまたはプログラムのそれぞれのタスクのそれぞれのアクションの実行のための情報に対応し、またその情報を含む。より具体的には、それぞれのシンボリック・ネットリスト要素は、(1)タスクID、(2)アクションID、(3)1つまたは複数のタイプの複合回路要素260および対応するタスクIDおよびアクションIDのアクション(または命令)の実行のためそれぞれのタイプの複合回路要素260に必要なコンテキストの数、(4)入力または出力(またはその両方の)リンク情報、および(5)対応するタスクまたはアクション(または命令)に対するリージョン(つまり、近接性)制約に関する情報を含む。それに加えて、コンパイル方法は、スーパークラスタ185Cおよび回路クラスタ200Cトポロジーを含む、本明細書で説明されているさまざまな回路および相互接続トポロジーのどれかに適用可能である。
ステップ430で1つまたは複数のタイプの複合回路要素260にマッピングし、ステップ435で命令をリンクする代わりに、アクション(または命令)を「マクロ定義」または「ライブラリ」にマッピングすることも可能である。このような「マクロ定義」または「ライブラリ」は、本質的に、プリコンパイルされたタスクまたはアクションであり、これらはすでに、複数のタイプの複合回路要素260にマッピングされており、またそれに対応して(もしあればリージョン制約と)、対応するシンボリック・ネットリストとともにリンクされている。例えば、IFFTは、IFFTライブラリにマッピングすることができ、これは、装置100を使用してIFFTを実行するための複合要素タイプおよび複合要素リンクの情報のすべてを含む。このようなライブラリ作成は、例えば、ストリーミング・メディアのH.264のさまざまアルゴリズムをマッピングするなど、さまざまなレベルにおいて実行されうる。
さらに、選択されたアクションまたはタスクに対するそのようなマッピングおよびリンクの複数の集合がありえ、これは、異なる目標に関して最適化することができ、それぞれの結果として異なるシンボリック・ネットリストが得られる。例えば、上述のように、トリプルALUタイプの複合要素260により実行されるタスクは、代わりに、3つの単一のALUタイプの複合要素260にマッピングされうる。これは、潜在的に帯域幅または実行速度を低下させる可能性があるが、他の高優先度のアルゴリズムがすべての利用可能なトリプルALUタイプの複合要素260の利用可能なすべてのコンテキストを使用している場合に装置100による実行を可能にすることができる。同様に、ALUタイプの複合要素260により実行されるタスクは、代わりに、複数の加算および乗算タイプの複合要素260にマッピングすることができ、これにより、さらに他のマッピングおよびリンクの変更形態を形成することができる。
利用可能なこれらのマッピングおよびリンク変更形態の結果として、選択されたアルゴリズムは、複数のシンボリック・ネットリストを生成させることができ、それぞれ、実行速度、電力最小化、小さな資源での実行能力、安全性、冗長性、衝突解決などのさまざまな目標について最適化されるか、または選択されるものである。例えば、図1を参照すると、ICの重要な部分が破損してしまい、ABSの最適なアルゴリズムに、実行するのに十分なIC資源が残っていない場合、ABS機能の他の(次善の)バージョンをICにロードして束縛し、これにより重要機能は標準的なマイクロプロセッサなどの他のICでは完全に動作しえない状況下で動作を続け、潜在的に有害な結果を回避することができる。
ステップ450でのシンボリック・ネットリスト生成の後、このコンパイル方法で、追加のアルゴリズムがコンパイルされるべきか、または上述のように、455で、選択されたアルゴリズムに対する追加のバージョンまたは代替え形態がコンパイルされるべきかどうかを判定し、もしそうであれば、この方法はステップ405に戻り、繰り返す。ステップ455でコンパイルすべきアルゴリズムまたはアルゴリズムのバージョンがさらにない場合には、この方法は終了し、ステップ460に戻ることができる。
C.オペレーティング・システム
図12は、本発明の教示による例示的なオペレーティング・システムまたはプロセスを示す高水準流れ図である。以下の説明は、本発明を説明することを目的として非常に高い水準のものであることは理解されるべきである。さまざまなSME 290により実行されることに加えて、このオペレーティング・システム機能は、1つまたは複数の追加のコントローラ175により実行することが可能である。
このプロセスは、ステップ500から始まり、SOCの一部として、または車両、コンピュータ、複合システム、携帯電話、パーソナル・デジタル・アシスタント、MP3プレイヤーなどの他のシステム内で、装置100の電源がオンにされる。ステップ505で、典型的には、状態機械要素290のそれぞれにより、セルフテストが実行され、これらの要素は、それら自体をテストし、例示的ないくつかの実施形態で、対応するクラスタ200または他のクラスタ200(例えば、対応するSME 290なしで実装されたクラスタ200について)内のさまざまな複合回路要素260、第1の通信要素250、(複数の)完全相互接続要素275または分散された完全相互接続要素295、他の状態機械要素、および他のロジック、通信、またはメモリ要素をテストすることができる。これらのさまざまなコンポーネントが正常に動作しているかどうかを判定するさまざまな方法がある。例示的な一実施形態では、動作判定は、複合回路要素(対応するクラスタ200または他のクラスタ200内のさまざまな複合回路要素260、第1の通信要素250、(複数の)完全相互接続要素275または分散された完全相互接続要素295、他の状態機械要素290、および他のロジック、通信、またはメモリ要素のすべてを含む、包含的な意味で使用される複合回路要素とともに)により実行され、少なくとも、複数の複合回路要素のうちの少なくとも1つの複合回路要素により実行される定期的診断機能、複数の複合回路要素のうちの少なくとも1つの複合回路要素の選択されたコンテキストとして実行されるバックグラウンド診断機能、または同じ回路要素タイプの複数の複合回路要素により実行される比較テストの判定タイプのうちの1つである。例えば、要素270のタイプを含む、さまざまなタイプの複合回路要素のそれぞれが、診断セルフテストをそれぞれ実行し、それに続いて、対応する結果を比較することができる。同じタイプの他の複合回路要素260の結果を比較するなどにより、第1の複合回路要素の結果が、予想される結果と一致しない場合、第1の複合回路要素は、欠陥があるか、または正常に動作していないとみなされ、利用可能な資源のマップまたはリスト内に含まれない(以下のステップ515)。
SME 290(またはコントローラ175)の1つまたは複数が、次いで、ステップ510で、関連するメモリ(例えば、フラッシュもしくは他のEEPROMメモリ)内または同じICまたは関連するシステムの一部であってよい、ハードディスク・ドライブ、光ドライブなどの他のデータ記憶デバイス内に装置100用に設計され、格納されているプログラムなどの、起動プログラムを取得して実行する。
ステップ515および520で、2つの重要機能がオペレーティング・システムの起動プロセスの一部として実行される。SME 290の1つまたは複数が、ステップ515で、複合回路要素260、第1の通信要素250、および他のコンポーネントが正常に機能しているクラスタ200またはスーパークラスタ185内のリストなど、利用可能な装置100の資源のマップまたはリストを作成する(例えば、メモリまたはディスク・ドライブに対する不良または正常セクター・マップを作成することに似ている)。ステップ515は、例えば、対応するクラスタ200についてはそれぞれのSME 290により、またはスーパークラスタ185またはマトリクス150全体については1つまたは複数のSME 290(事前に指定されているか、または起動プログラムで決定されたとおりの)により実行されうる。例示的な一実施形態では、ステップ515は、複合回路要素260、クラスタ200内に、およびマトリクス階層全体にわたって配置または分散されうる、図13に例示され、図13を参照しつつ以下で説明されているような組み合わせロジック要素により実行される。それに加えて、ステップ520において、マスター・コントローラが決定されるが、これはマスター・コントローラとして動作している1つの選択されたSME 290または複数のSME 290であるか、あるいは1つまたは複数の追加のコントローラ175または他のオフチップのコントローラ、プロセッサ、または状態機械とすることもできる。例示的な一実施形態では、マスター・コントローラは、最下位アドレス(その時点で)を持つSME 290として決定される。
次いで、オペレーティング・システムは、1つまたは複数の状態機械要素290(またはコントローラ175)を通じて、潜在的にはユーザー入力で、すでに説明されているABS、トラクション・コントロール、ビデオ、およびナビゲーション・プログラムを選択するなど、ステップ525で実行されるプログラム、アルゴリズム、または機能を決定するか、または選択する。次に、ステップ530において、オペレーティング・システムは、タスクおよび(複数の)アクション(または(複数の)命令)を選択された複合回路要素260に(1つまたは複数のコンテキストとして)割り当てることより、選択された複合回路要素260の入力をデータ伝送元である他の対応する複合回路要素260にリンクし、その入力データを送ることにより(これもまた対応する形でそれらのデータ伝送元出力をデータ伝送先として選択された複合回路要素260の入力にリンクする)、および/または(データ伝送元として)選択された複合回路要素260の出力をデータ伝送先である他の対応する複合回路要素260にリンクし、選択された複合回路要素260により生成されるデータを利用することにより(これもまた対応する形でそれらのデータ伝送先の入力を(データ伝送元として)選択された複合回路要素260の出力にリンクする)、選択されたプログラムの(複数の)シンボリック・ネットリストを利用可能な資源(ステップ515で決定された)に束縛する。
すべてのタスクおよびアクション(または命令)が、束縛された(割り当てられ、リンクされた)後、装置100は、ステップ535で、ABSおよびトラクション・コントロール・システムを動作させる、乗客向けにビデオを再生する、リアルタイムのナビゲーション表示を運転者に対し行うなどの、対応するプログラムまたは演算の実行もしくは動作を開始する。束縛(割り当ておよびリンク)プロセスは、図14を参照しつつ、以下で詳しく説明される。それぞれの複合回路要素260内のプログラム(または演算)実行プロセスの制御は、図16を参照しつつ以下でさらに詳しく説明される。
オペレーティング・システムは、さらに、ステップ540で、ユーザーまたはオペレーターが追加のプログラムを選択するか、またはセンサーが特定の条件を検出することなどを通じて状況が機能の変更を必要とする場合などに、新しいまたは異なる機能が必要であると判定することができる。例えば、車両環境では、センサーは、運転または道路状態の変化を検出し、それに応じてさまざまなプログラムを調節することができる。ステップ540で、新しい、もしくは異なる機能が必要になった場合、この方法は、ステップ545で、影響を受けるタスクおよびアクション(または命令)を再束縛(再割り当ておよび再リンク)し、装置100は、それらのさまざまな変更とともに動作し続ける。タスクおよびアクション(または命令)が、新しいロケーションに移動されるか、または既存の、もしくは新しいタスクおよびアクション(または命令)が、ロードされ、割り当てられ、束縛されるようにできる。オペレーティング・システムは、さらに、プログラムまたは機能全体を初めから束縛または再束縛することもできる。再束縛ステップ545は、さらに、束縛解除、つまり、対応するコンテキストをメモリから削除することなどにより、割り当てられている機能を完全に取り除くことを含むこともできる。このような束縛解除は、例えば、装置100がすでに容量めいっぱいであり、新しい、または異なる機能のための余地を設けなければならない場合に、実行できる。このような束縛解除は、図1に例示されており、その場合、ICの損傷により装置100が次第に能力を失ってゆくときにビデオ機能が削除された。
装置100は、オペレーティング・システムを実行する(またはビルトイン・セルフテスト(「BIST」)の一部としての)1つまたは複数の状態機械要素290(またはコントローラ175)を通じて、ステップ550で、制限された、または完全なセルフテストを定期的に実行し、ステップ555で、資源が利用可能である状況に変化が生じたかどうかを検出する。例えば、セルフテストは、BREOタイプの回路要素270が、もはや正常に機能しておらず、したがって、装置100内で使用することがもはやできないであろうということを明らかにすることができる。このような損傷または機能の喪失がステップ555で生じた場合、オペレーティング・システムは(SME 290またはコントローラ175を通じて)、それに応じて、ステップ560で、利用可能な資源のマップまたはリストを修正し、ステップ565で、修正されたリストまたはマップを使用して、影響を受けるタスクおよびアクション(または命令)を再束縛し、装置100は、それらのさまざまな変更とともに動作を続ける。
ステップ555で、またはステップ565の後で、このような損傷または機能の喪失が生じなかった場合、この方法はステップ570に進む。ステップ570で、装置100は、動作を続け、ステップ535に戻ることができる。装置100を有するデバイスをオフにするようユーザー側で選択するなどにより、ステップ570で動作が停止すべきである場合、装置100は、シャットダウンするか、または電源をオフにし、ステップ575に戻ることができる。
図12には別々に例示されていないが、他の例示的な実施形態では、複数の複合回路要素260は、現在の演算状態の「スナップショット」などの、現在状態を定期的に格納するように実装または適合されうる。その後、検出された障害に応答して、複合回路要素260は、格納されている状態を取り出して、格納されている状態を使用して演算を再開するように適合される。
D.シンボリック・ネットリスト割り当ておよび実行時束縛
次に、この背景を念頭に置き、実行時束縛プロセスを説明することができる。上に示されているように、本発明のアーキテクチャは、シンボリック・ネットリストの実行時束縛(または他のプログラム・コンパイル)とともに、装置100の自己回復および回復能力を有効にすることができる。より具体的には、複合回路要素260、SME 290、第1の通信要素250、(複数の)完全相互接続要素275または(複数の)分散された完全相互接続要素295、他のクラスタ200のコンポーネント、またはルーティングもしくは他の通信要素(190、210)のどれかが、最初から(起動プロセスのテスト実行部分においてステップ515で決定されるように)または後からの演算実行時に(セルフテスト実行時に決定されるように、または他のコンポーネント、ステップ550、555により決定されるように)正常に実行しない場合、これらは、それぞれ、利用可能な資源のマップまたはリストに入れられないか、または削除される。最初から正常に実行していない場合、影響を受けるコンポーネントは、ステップ530で、機能を決して割り当てられることはない。影響を受けるコンポーネントが、初めは機能していても、もはや機能しなくなってしまった場合(ステップ555)、これは、利用可能な資源のリストまたはマップから取り除かれ、その割り当てられている機能は、他の利用可能なコンポーネントに移動されるか、またはロードされ、別々に、もしくはステップ565の対応するタスクまたは命令の再束縛の一部として、再ルーティングされる。データが破損していると判定された場合、制御しているタスクは、適切な処置を講じるように通知される。この束縛プロセスは、以下で詳しく説明される。
1.資源の利用可能性
図13は、本発明の教示による例示的な装置100内でコンテキストが利用可能かどうかを判定するための例示的な組み合わせロジック回路600を示すブロック図である。このような回路600は、回路要素270、要素コントローラ325、SME 290などの、それぞれの複合回路要素260内に、または別の組み合わせロジック(図8に別々に例示されていない)として、収められる。上述のように、複合回路要素260のそれぞれのタイプに対する利用可能なコンテキストの個数が、装置100内で実行するプログラムまたはアルゴリズムを束縛(または再束縛)する際に使用するために決定される。このような決定は、1つまたは複数のSME 290、コントローラ(または他のプロセッサ)175により、または図13に例示されているように、専用組み合わせロジック回路600により実行されうる。
図13を参照すると、それぞれの複合回路要素260内のメモリ330に格納されている情報の一部として、コンテキスト毎に、状態ビットおよび第1の条件ビットがある。状態ビットは、コンテキストがアクション(または命令)に割り当てられるか、または配分されているかどうか、したがって自由に割り当てられるか、または割り当てに利用できるか(論理highまたは1)、あるいは自由に割り当てられないか、または割り当てに利用できないか(論理lowまたは0)を示す。それとは別に、この状態は、メモリ330を調べて、アクションIDおよびタスクIDフィールドが選択されたコンテキストについてゼロであるか、または非ゼロであるかを判定することにより判定することができ、これは、利用可能(割り当てられるか、または配分されたアクションIDおよびタスクIDがない)、または利用不可能(すでに割り当てられているか、または配分されているアクションIDおよびタスクID)を示し、その後図13の状態ビットとして使用されるように反転される。第1の条件ビットは、上述のさまざまな例示的なセルフテスト・プロセスから判定されるように、複合回路要素260が動作状態(論理highまたは1)であるか、または非動作状態(論理lowまたは0)であるかを示す。それぞれのコンテキスト(「m」個のコンテキストの)について、第1のAND演算は、ANDゲート605(複数のANDゲート6050、6051から605(m−1)として例示されている)を介して、対応する状態ビットおよび第1の条件ビットに対し実行され、そのAND演算の結果は、コンテキストが利用可能であり、また複合回路要素260が正常に動作していること(論理highまたは1)、あるいはコンテキストが利用可能でないか、または複合回路要素260が正常に動作していない(論理lowまたは0)ことを示す。
第2のコントローラ(SME 290)条件ビットは、これもまた上述のさまざまな例示的なセルフテスト・プロセスから判定されるように、SME 290(クラスタ200内の)が動作状態(論理highまたは1)であるか、または非動作状態(論理lowまたは0)であるかを示すために使用され、複合回路要素260またはクラスタ200内のさまざまなメモリのどれかに格納されうる。第2のAND演算は、この第1のAND結果(状態および第1の条件ビット)および第2のコントローラ条件ビット(複数のANDゲート6100、6101から610(m−1)を介して)を使用して実行され、第2のAND演算の結果は、コンテキストが利用可能であり、また複合回路要素260とSME 290の両方が正常に動作していること(論理highまたは1)、あるいはコンテキストが利用可能でなく、複合回路要素260が正常に動作していないか、またはSME 290が正常に動作していない(論理lowまたは0)ことを示す。第1および第2のAND演算は、さらに、少なくとも3つの入力(状態ビット、第1の条件ビット、および第2の条件ビット)を有する単一の組み合わされたAND演算として実行されうる。それぞれのコンテキストに対する第2のAND演算の結果は、「ワンホット」加算器615(またはSME 290もしくは他のコントローラ)を使用するなどして加算され、複合回路要素260(作動しているSME 290とともに)1個当たりの自由コンテキストの個数を求めることができる。
例示されているように、このプロセスは、マトリクス階層を上り続け、複合回路要素260 1個当たり自由コンテキストの個数がクラスタ200内の複合回路要素260のタイプ毎に足し合わされ、次いで、スーパークラスタ185内の複合回路要素260のタイプ毎に足し合わされ、次いで、マトリクス150内の複合回路要素260のタイプ毎に足し合わされ、次いで、装置100内の複合回路要素260のタイプ毎に足し合わされる。これらの追加のADD演算は、専用ADDERS(例えば、620、625、630)を使用して、またはADD演算について、その対応するSME 290の制御の下で構成された複合回路要素260を使用することにより実行されうる。その結果、複合回路要素260のタイプ毎に利用可能性カウントが決定され、それぞれのレベルで、つまり、クラスタ200のレベル、スーパークラスタ185のレベル、マトリクス150のレベル、および装置のレベルに維持されうる。
これらのさまざまなレベルにおけるこのようなカウントは、クラスタ200またはスーパークラスタ185内の特定のタイプの複合回路要素260を使用するタイミング制約により多数の演算が実行されなければならない場合などに、スーパークラスタ185またはクラスタ200がリージョン制約を満たすために利用可能かどうかを判定するのに特に有用である。さらに、このような組み合わせロジック回路を使用することで、複合回路要素260の利用可能性は、すべてのクラスタ200について、素早く、同時に、並行して、いくつかのANDおよびADD演算からの遅延(例えば、マトリクス150全体について合計で2つのAND遅延と4つのADD遅延)のみで、決定され、維持される。
利用可能性判定の代わりに、SME 290が、クラスタ200内の対応する複合回路要素260のすべてのメモリ330のさまざまなレジスタをポーリングまたは調査するために使用され、それぞれのクラスタに対する複合回路要素260のタイプ別に結果を合計し、次いで1つまたは複数の選択されたSME 290がそれぞれのスーパークラスタ185およびマトリクス150について結果を合計する。そのような利用可能性判定は、マスター・コントローラ(指定されたSME 290またはコントローラ175であってよい)により開始されるような、マトリクス階層内でトップダウン方式であるか、または図13に例示されているような、またはそれぞれのクラスタ200内のSME 290のそれぞれによりもたらされるように、マトリクス階層内でボトムアップ方式とすることができる。エレクトロニクス分野の当業者にとっては、組み合わせ、条件付き、または制御ロジックを使用してこの利用可能性判定を行う方法が無数にあり、それらはすべて、同等であり、本発明の範囲内にあると考えられることは明らかであろう。
2.シンボリック・ネットリスト割り当て
図14は、図14A、14B、14C、14Dに分割されており、本発明の教示による例示的なアルゴリズムまたはシンボリック・ネットリスト実行時束縛プロセスを示す流れ図であり、さらに、装置100全体を通して分散された状態機械要素290に関連付けられている重要な機能を示す。それとは別に、この機能は、装置100についてマスター・コントローラとして指定されているコントローラ175などの1つまたは複数の追加のコントローラ175により実行することも可能である。当業者であれば、例示されている束縛プロセスに加えて、この方法の多数の変更形態が利用可能であり、また同等であり、本発明の範囲内にあると考えられることを理解するであろう。少なくとも1つのこのような変更形態についても以下で説明する。
上述のように、装置100は、シンボリック・ネットリストとして用意されたアルゴリズムの実行時束縛演算を実行するが、これはプログラム可能なルーティングを含むプログラム可能な資源の場所および経路演算に類似していると考えられうる。この場合、プログラム可能な資源それ自体は、IC上に置かれており、次いで、束縛プロセスは、アクション(または命令)を(タスクの一部として)1つまたは複数の利用可能な資源の1つまたは複数のコンテキストに割り当て、入力および出力の対応するルーティングまたはリンクを構成する。実行に数時間または数日を要することもある、従来技術による場所および経路の方法とは対照的に、本発明の方法は、数マイクロ秒または数ミリ秒から数秒と、きわめて高速な動作をする。
図14Aを参照すると、この方法は、開始ステップ700から始まり、上述のように好ましくはクラスタ、スーパークラスタ、およびマトリクス・レベルで、複合回路要素260のそれぞれのタイプに対する利用可能性のカウントの決定および/または維持が行われる。ステップ705で、第1(または次)のアクション(つまり、機能または命令)は、シンボリック・ネットリスト要素として、マスター・コントローラに送られるが、これは、例えば、1つまたは複数の指定されたSME 290または1つまたは複数のコントローラ175であってよい。次いで、指定されたSME 290またはコントローラ175は、ステップ710で、アクション(機能または命令)がリージョンまたは近接性制約を含むかどうか判定し、もしそうであれば、ステップ715に進む。アクション(または命令)が、ステップ710でリージョン制約を含まない場合、アクション(または命令)は、ステップ750で、シンボリック・ネットリスト内に用意されている1つまたは複数のタイプの複合回路要素260に対し利用可能な十分な数のコンテキストなどの、その命令に対する資源が十分に利用できる、スーパークラスタまたはクラスタ・レベルに送られる。
利用可能な(複数の)クラスタ200の(複数の)SME 290は、ステップ755で、対応する情報(構成、タスクID、アクションID、および伝送元(または伝送先)タスクIDおよびアクションID)をそれぞれのそのような複合回路要素260の対応するメモリ330内に格納することにより、またはメモリ複合回路要素260、第2のメモリ要素255、またはSME 290および複合回路要素260からアクセス可能な他のメモリに格納することにより、アクション(または命令)を(複数の)クラスタ200内の1つまたは複数の利用可能な複合回路要素260に割り当てる。格納されている情報の量およびロケーションは、選択された実施形態に応じて異なる。例示的な一実施形態では、アクション(または命令)は、ローカルのメモリ330(さもなければクラスタ200内)に構成、タスクID、アクションIDとして、対応するリンク情報(入力に対するデータ伝送元または出力に対するデータ伝送先、さらにタスクIDおよびアクションID別に)とともに、格納される。この割り当ての後に、ステップ760で、図13について上で説明されているように自動的に修正されるなどの形で、または例えば、さまざまなカウントが指定されたSME 290またはコントローラ175により維持されるときにレジスタ内に保持されているカウントをデクリメントすることにより、利用可能性カウントが修正される。
次いで、この方法は、ステップ765で、すべてのアクション(または命令)が割り当てられたかどうかを判定する。割り当てるべきアクション(または命令)が残っている場合、この方法は、ステップ770で、利用可能な資源が残っているかどうかを判定する。ステップ770において利用可能な資源が残っている場合、この方法は、ステップ705に戻り、繰り返し、次のアクション(または命令)を選択し、割り当てる。割り当てすべきアクション(または命令)がもう残っていない場合、この方法は、ステップ800に進み、割り当てられたすべてのアクション(または命令)のルーティング(つまり、リンク設定)を開始する。
ステップ765において割り当てるべきアクション(または命令)が残っているが、ステップ770において利用可能な資源がなくなっている場合、これは、選択されたアルゴリズムが、現在構成されている(利用可能である)とおりに装置100上で動作できない可能性のあることを示しており、ステップ775でエラーまたは例外メッセージが生成され、選択されたプログラムのシンボリック・ネットリストは現在割り当てることができないので、この方法は、終了し、ステップ780に戻る。その場合、アクションの道筋は多数ありうる。例えば、指定されたSME 290またはコントローラ175は、資源を消費または使用している低い優先度のプログラムまたは演算を削除して、選択されたプログラムまたは演算のためのスペースをあけ、選択されたプログラムが装置100上で実行されるようにできる。他の場合、指定されたSME 290またはコントローラ175は、他のそのようなプログラムを削除することなく割り当て可能なプログラムの他のバージョンを選択することができる。他の場合には、これは、選択されたアプリケーションには、より多くの資源を持つより大きな装置100が必要であることを示すことがある。
選択されたアクション(または命令)が、ステップ710においてリージョン制約を含む場合、この方法は、図14Bに例示されているように、ステップ715に進む。このようなリージョン制約は、例えば、以下の形を取りうる。
region 3 supercluster
region 1 cluster actions I1,I2
I1
I2
end region
region 2 cluster actions I3,I4
I3
I4
end region
end region
この場合、スーパークラスタのリージョン(近接性)制約は、2つのクラスタ・レベルのリージョン制約を組み込み、それぞれが制約に従うアクション(または命令)(「制約されたアクション」)を含んでいる。上述のように、ゾーン201制約も使用できる。この実施例に示されているように、アクション(または命令)I1およびI2(シンボリック・ネットリスト要素として)は、同じクラスタ200内で割り当てられなければならず、アクション(または命令)I3およびI4(シンボリック・ネットリスト要素として)は、同じクラスタ200(I1およびI2のリージョン1クラスタと同じ、または異なるクラスタであってよい、リージョン2として)内で割り当てられなければならない。しかし、クラスタ200は、両方とも、スーパークラスタ制約(リージョン3)内に組み込まれているように、同じスーパークラスタ内になければならない。
ステップ715で、指定されたSME 290またはコントローラ175は、制約が、同じスーパークラスタ185内でその一組の制約されたアクションを割り当てることを必要とする、スーパークラスタ制約であるかどうかを判定する。リージョン制約が、ステップ715で、スーパークラスタに対するものであれば、指定されたSME 290またはコントローラ175は、スーパークラスタ制約を制約の利用可能性要件を満たすすべての利用可能なスーパークラスタ185に与え、ステップ720で、それら1つまたは複数のスーパークラスタを候補として一時的に指定するか、またはマークする。ステップ720の後に、またはステップ715で、制約がスーパークラスタ制約でない場合、制約されたアクションは、実施例のリージョン1制約を満たすさまざまなクラスタなど、第1のクラスタ制約(前の制約により必要な場合に1つまたは複数のスーパークラスタ内で)を満たすすべての利用可能なクラスタ200に送られ、それらのクラスタ200は、ステップ725で、候補として一時的に指定される。クラスタ・レベル制約アクションの次の一組は、もしあれば、実施例のリージョン2制約を満たすさまざまなクラスタなど、次のクラスタ制約(前の制約により必要な場合に1つまたは複数のスーパークラスタ内で)満たすすべての利用可能なクラスタ200に送られ、それらのクラスタ200は、さらに、ステップ730で、候補として一時的に指定される。それに加えて、すでに候補となっていたが、現在はそれらの追加の制約を満たすのに十分な利用可能なクラスタを含んでいない、スーパークラスタまたはクラスタは、ここで、解放され、もはやリージョン制約の候補として指定されなくなるようにできる。別に例示されてはいないが、同じ方法をゾーン201制約に使用することもできる。ステップ735で、処理すべき追加の制約がある場合、この方法はステップ730に戻り、一時的指定プロセスを続ける。
ステップ735で、処理する必要のある制約がもうない場合、この方法は、ステップ740で、1つまたは複数のマッチ(スーパークラスタおよび/またはクラスタ・レベル)が見つかっているかどうかを判定する。ステップ740で、1つまたは複数のマッチが見つかっている場合、上述のように、指定されたSME 290またはコントローラ175は、少なくとも1つのそのようなマッチを選択し、制約されたアクション(または命令)を選択された候補集合に割り当て、他のすべての仮割り当てを解放し、ステップ760に進み、利用可能性カウントを修正し、割り当てプロセスを続ける。ステップ740で、マッチが見つからなかった場合、これは選択されたアルゴリズムが現在構成されている(利用可能である)ような装置100上で演算できないことを示しており、この方法は、ステップ775に戻り、エラーまたは例外メッセージを生成し、制約を持つ選択されたプログラムのシンボリック・ネットリストが現在割り当てることができないため、この方法は終了し、ステップ780に戻ることができる。上述のように、その場合、アクションの道筋は多数ありうる。例えば、指定されたSME 290またはコントローラ175は、優先度の低いプログラムまたは演算を削除するか、または割り当てやすいプログラムの他のバージョンを使用することができる。
3.実行時束縛
ステップ765で、すべてのアクション(または命令)が割り当てられた場合、それらのアクション(または命令)は、接続されるか、またはルーティングされ、選択されたプログラムまたはアルゴリズムを実行するために装置100の動作中に使用されるデータ通信経路のすべてを確立することができる。上に示されているように、それぞれのアクション(または命令)は、選択された複合回路要素260の選択されたコンテキストに対する構成とともにシンボリックに格納される入力または出力情報を有する。より具体的には、入力または出力情報は、実際にはポインタとして効果的に格納され、1つのタスクIDおよびアクションIDはデータ伝送元(入力データ用)またはデータ伝送先(出力データを送る)として他のタスクIDおよびアクションIDを指す。このような情報は、シンボリックまたはジェネリックに格納されるが、それというのも、アクション(または命令)が割り当てられるまで、データ伝送元またはデータ伝送先に対する実際のアドレスは知られていないからである。データ伝送元情報が一貫して使用されるか、またはデータ伝送先情報が一貫して使用されるかのいずれかと仮定すると、このような情報の集合が1つだけ必要であるが、両方とも使用して、回復能力を高めることも可能である。例示的な実施形態によれば、そのようなデータ伝送元またはデータ伝送先情報は、それぞれのコンテキストに対する複合回路要素260のデータ入力(入力キュー320の)を他の複合回路要素260(またはフィードバック構成のために、同じ複合回路要素260)のコンテキストのデータ出力375と(出力キュー315を介して)接続するために使用される。これにより、直接データ接続(クラスタ200内で回路交換)またはパケット・ルーティング(クラスタ間のハイブリッド・パケット・ルーティングおよび回路交換)データ接続がデータ・フローに対し形成され、いずれの場合も、レジスタにデータを格納し、レジスタからデータをフェッチする中間または別のステップを必要とすることなく、データが送られる。スーパークラスタ185Cおよび回路クラスタ200Cなどの、選択された実施形態に応じて、データ接続は、クラスタ・キュー245Aおよび対応する完全もしくは分散相互接続275、295を通じて、すべて回路交換されうる。
ステップ765の後、ルーティング・プロセスは、図14Cに例示されているように、ステップ800から始まる。図14Cに示されている例示的な実施形態では、プロセスは「ボトムアップ」であり、クラスタ200レベル(またはゾーン201およびクラスタ200Cレベル)から始まり、必要に応じてより高いレベル(スーパークラスタおよびマトリクス・レベル)に進む。別に例示されてはいないが、このプロセスは、さらに、指定されたSME 290またはコントローラ175がクラスタ200のSME 290にステップ800のルーティング・プロセスを開始する要求を送信することなどにより、「トップダウン」の観点から開始されうる。
図14Cを参照すると、ステップ800で、対応するクラスタ200の1つまたは複数のSME 290が、複合回路要素260の第1のコンテキストのアクション(または命令)を選択し、選択されたアクション(または命令)の一部として格納されている伝送元(または伝送先)タスクおよびアクション識別子を決定することによりルーティング・プロセスを開始する。例示的な実施形態では、このプロセスは、並行プロセスとしてそれぞれのクラスタ200のそれぞれのSME 290により実行されうるため、非常に効率的な束縛ルーティング・プロセスといえる。他の例示的な実施形態では、すべてのクラスタ200がSME 290を有するわけではない場合、スーパークラスタ185内の他のSME 290を使用することができる。
上に示されているように、これらの伝送元(または伝送先)タスクおよびアクションIDは、選択された実施形態において、複合回路要素260の要素インターフェースおよび制御280のメモリ330内に格納される。代替実施形態では、伝送元(または伝送先)タスクおよびアクション識別子は、メモリ・タイプの複合回路要素260M、第2のメモリ要素255、またはクラスタ200内に備えることができる他のメモリ要素などの、他のメモリ要素に格納されうる。ルーティングを簡単に行えるようにするために、メモリ330(または他のメモリ要素)は、上述のように連想メモリ(「CAM」)、または他のタイプのメモリとして実装できる。したがって、ステップ805では、第1の階層レベルにおけるルーティングのために、SME 290は、第1のコンテキスト(ルーティングされる複合回路要素260のコンテキスト)の伝送元(または伝送先)タスクおよびアクション識別子でクラスタ200内のメモリ(330、255、260Mなど)のすべてを調べて、それらの伝送元(または伝送先)タスクおよびアクション識別子とマッチする他の第2のコンテキストの対応するアクション(または命令)を見つけることができる。他の形態のメモリ、例えばSDRAMが、CAMの代わりに使用される場合、SME 290は、二分探索法などの、メモリ(330、255、260M、またはタスクIDおよびアクションIDを格納している他のメモリ)の探索を実行して、それらの伝送元(または伝送先)タスクおよびアクション識別子とマッチする他の第2のコンテキストの対応するアクション(または命令)を見つけることができる。
ステップ810で、複合回路要素260の第2のコンテキストのマッチするアクション(または命令)(対応するタスクおよびアクション識別子を有する)が、メモリ(330、255、260Mなど)内で見つかった場合、SME 290は、選択された第1のコンテキストを、マッチしている、または対応するアクション(または命令)を有するこの第2のコンテキストにルーティングすることを認識する。その結果、ステップ815において、伝送元タスクおよびアクション識別子が格納されている場合、SME 290は、第1のコンテキストの(複数の)入力(データ伝送先として)を第2のコンテキストの対応する出力(データ伝送元として)にルーティングし、伝送先タスクおよびアクション識別子が格納されている場合、SME 290は、第1のコンテキストの(複数の)出力(データ伝送元として)を第2のコンテキストの対応する(複数の)入力(データ伝送先として)にルーティングする。クラスタ200またはゾーン201内で、SME 290は、完全相互接続要素275または分散された完全相互接続要素295を介してそれらの内部クラスタ接続を確立する。ステップ815の後、ステップ820でルーティングすべき追加のアクション(または命令)がある場合、この方法は繰り返し実行を続け、ステップ800に戻り、SME 290または他のコントローラが、ルーティングすべき次のアクション(または命令)を選択する。
ステップ810で、複合回路要素260の第2のコンテキストのマッチするアクション(または命令)(対応するタスクおよびアクション識別子を有する)が、クラスタ200のメモリ(330、255、260Mなど)内で見つからなかった場合、SME 290は、対応するデータ伝送元または伝送先がクラスタ200(第1のクラスタ200と呼ばれる)内にないことを認識する。その結果、ステップ825で、SME 290は、(1)選択された第1のコンテキストを第1のクラスタ200の周辺部に(相互接続部155を介して、完全相互接続要素275、分散された完全相互接続要素295、またはメッセージ・マネージャ265を通じてデータ伝送のため第1の通信要素250のうちの1つに、または第1の通信要素250に直接)ルーティングすることと、(2)スーパークラスタ・レベルのコントローラ(この割り当てられている責務を有する指定されたSME 290またはコントローラ175であってよい)へのルーティング要求(問い合わせ)を生成し、マッチする、または対応するアクション(または命令)を有することができるそのスーパークラスタ185の他のクラスタ200内で第2のコンテキストを見つけることの両方を行う。第1のクラスタ200のSME 290の観点から、第1のコンテキストのルーティングは、完全であり、もしあれば他のコンテキスト(アクション(または命令))のルーティングを続けることができ、次いでスーパークラスタ・コントローラ(指定されたSME 290またはコントローラ175)はステップ830に進む。
ステップ830で、ルーティング要求(第2のコンテキストを指定する)を受信すると、スーパークラスタ・コントローラは、スーパークラスタ185内のすべての(他の)クラスタ200に、対応するアクション(または命令)が第2の階層レベルのルーティングについてメモリ(330、255、260Mなど)のうちの1つに配置されているかどうかをSME 290が判定する要求またはクエリを送信する。ステップ835で、第2のクラスタ200としてのこれらの他のクラスタ200のうちの1つが、複合回路要素260のうちの1つの第2のコンテキストとして、マッチするか、または対応するアクション(または命令)を有している(つまり、第1のコンテキストの伝送元(または伝送先)タスクおよびアクション識別子を有している)場合、この第2のクラスタ200は、この第2のコンテキストが他の第1のクラスタ200との間でルーティングされるべきデータの伝送元または伝送先であることを認識する。その結果、ステップ840で、第2のクラスタ200の第2のSME 290は、この第2のコンテキストを第2のクラスタ200の周辺部に(相互接続部155を介して、完全相互接続要素275、分散された完全相互接続要素295、メッセージ・マネージャ265を通じてデータ伝送のために第1の通信要素250のうちの1つに、あるいはそうでない場合には第1の通信要素250に直接)ルーティングし、対応するメッセージをスーパークラスタ・コントローラ(指定されたSME 290またはコントローラ175)に送信し、それがマッチするか、または対応するアクション(または命令)を有する第2のコンテキストを持つことを示すか、またそのような情報を提供する。次いで、スーパークラスタ・コントローラは、第2の通信要素210に対応するルーティング情報を格納することなどにより、ステップ845で、対応するコンテキストに対する第1のクラスタ200と第2のクラスタ200との間の対応するリンクを形成し、クラスタ間ルーティングは完了する。第2のクラスタ200のSME 290の観点から、そのルーティングも、完全であり、もしあれば他のコンテキスト(アクション(または命令))のルーティングを続けることができ、また、ステップ820に戻る。
スーパークラスタ185などの他の変更形態では、別に例示されてはいないが、スーパークラスタ185C内のSME 290は、すべてさまざまなクラスタ・キュー245Aを通じて、クラスタ200の中で、またはスーパークラスタ185C全体の中で、そのようなすべてのルーティングを実行することができる。図18を参照すると、SME 290は、(1)例えば、完全または分散相互接続275、295を介して、CE4からCE5に直接的に向かうものなど、選択されたゾーン201B内の対応するルーティング、(2)完全または分散相互接続275、295およびクラスタ・キュー245A15を介して、CE4からCE12に直接的に向かうものなど、選択された回路クラスタ200C内の対応するルーティング、(3)完全または分散相互接続275、295、介在する(ゾーンからゾーンへの)クラスタ・キュー245Aを介して、次いで245A10などの周辺部クラスタ・キュー245Aを通じて、CE4からスーパークラスタ185C内の他のクラスタ200Cの他の複合回路要素260に直接的に向かうものなど、選択された隣接回路クラスタ200Cへの対応するルーティング、(4)完全または分散相互接続275、295、介在する(ゾーンからゾーンへの)クラスタ・キュー245A、および典型的には複数の周辺部クラスタ・キュー245Aを介して、CE4から他のクラスタ200Cの他の複合回路要素260に直接的に向かうものなど、スーパークラスタ185C内の選択された非隣接回路クラスタ200Cへの対応するルーティング、および(5)メッセージ・マネージャ265を介して、スーパークラスタ185C内にない回路クラスタ200Cへの対応するルーティングを形成することができる。
例えば、クラスタ・キュー245Aのどれかを通じてルーティングされる場合、選択されたクラスタ・キュー245A(対応する選択されたコンテキストを有する)は、データ生成複合回路要素260の選択されたコンテキストに対するデータ伝送先であり、次いで、データ消費複合回路要素260の選択されたコンテキストまたはクラスタ・キュー245Aの他の選択されたコンテキストに対するデータ伝送元である(例えば、本明細書で説明されているように、伝送元または伝送先に基づく通信を使用する、クラスタ200C間のデータ・ルーティングなどの、複数のクラスタ・キュー245Aを通じてのデータ・ルーティングなど)。
ステップ835で、選択された第1のスーパークラスタ185内のこれらの他のクラスタ200のどれもが、複合回路要素260のうちの1つの第2のコンテキストにおいてマッチする、または対応するアクション(または命令)(第1のコンテキストの伝送元(または伝送先)タスクおよびアクション識別子とともに)を有しない場合、スーパークラスタ・コントローラは、対応するデータ伝送元または伝送先がそのスーパークラスタ185(第1のスーパークラスタ185と呼ばれる)内にないことを認識する。その結果、ステップ860で(図14Dに例示されている)、第1のスーパークラスタ・コントローラは、(1)第1のコンテキストを第1のスーパークラスタ185の周辺部に(つまり、第2の通信要素210のうちの1つに、またはメッセージ・マネージャ265のうちの1つに)ルーティングすることと、(2)マトリクス・レベルのコントローラ(この割り当てられている責務を有する指定されたSME 290またはコントローラ175でもよい)へのルーティング要求を生成し、第3の階層レベルでのルーティングのため、マッチする、または対応するアクション(または命令)を有することができるそのマトリクス150の他のスーパークラスタ185内の第2のコンテキストを見つけることの両方を行う。第1のスーパークラスタ185の指定されたSME 290またはコントローラ175の観点から、そのルーティングは完全であり、この方法は、ステップ820に戻り、必要に応じて、他のアクションに対するルーティング・プロセスを続け、さらにステップ865に進む。
ステップ865で、ルーティング要求(第2のコンテキストを指定する)を受信すると、マトリクス・コントローラは、マトリクス150内のすべての(他の)クラスタ200に、対応するアクション(または命令)がこの第3の階層レベルのルーティングについてメモリ(330、255、260Mなど)のうちの1つに配置されているかどうかをSME 290が判定する要求またはクエリを送信する。このルーティング要求は、クラスタ200のSME 290に直接送信されるか、またはスーパークラスタ・コントローラを介して送信されうる。ステップ870で、第2のクラスタ200としてのこれらの他のクラスタ200のうちの1つが、複合回路要素260のうちの1つの第2のコンテキストとして、マッチするか、または対応するアクション(または命令)を有している(つまり、第1のコンテキストの伝送元(または伝送先)タスクおよびアクション識別子を有している)場合、この第2のクラスタ200は、この第2のコンテキストが他の第1のクラスタ200との間でルーティングされるべきデータの伝送元または伝送先であることを認識する。その結果、ステップ875で、第2のクラスタ200の第2のSME 290は、この第2のコンテキストを第2のクラスタ200の周辺部に(相互接続部155を介して、完全相互接続要素275、分散された完全相互接続要素295、メッセージ・マネージャ265を通じてデータ伝送のために第1の通信要素250のうちの1つに、あるいはそうでない場合には第1の通信要素250に直接)ルーティングし、対応するメッセージをマトリクス・コントローラ(指定されたSME 290またはコントローラ175)に送信し、それがマッチするか、または対応するアクション(または命令)を有する第2のコンテキストを持つことを示すか、またそのような情報を提供する。次いで、マトリクス・コントローラは、第3の通信要素190および第2の通信要素210に対応するルーティング情報を格納することなどにより、ステップ880で、対応するコンテキストに対する第1のクラスタ200と第2のクラスタ200との間の対応するリンクを形成し、スーパークラスタ間ルーティングは完了する。第2のクラスタ200のSME 290の観点から、そのルーティングも、完全であり、もしあれば他のコンテキスト(アクション(または命令))のルーティングを続けることができ、また、ステップ820に戻る。
ステップ870で、選択された第1のマトリクス150内のこれらの他のクラスタ200のどれもが、複合回路要素260のうちの1つの第2のコンテキストにおいてマッチする、または対応するアクション(または命令)(第1のコンテキストの伝送元(または伝送先)タスクおよびアクション識別子とともに)を有しない場合、マトリクス・コントローラは、対応するデータ伝送元または伝送先が第1のマトリクス150内にないことを認識する。その結果、ステップ885で、第1のマトリクス150は、(1)第1のコンテキストを第1のマトリクス150の周辺部に(つまり、第3の通信要素190のうちの1つに)ルーティングすることと、(2)他のマトリクス・レベルのコントローラ(この割り当てられている責務を有する指定されたSME 290またはコントローラ175でもよい)へのルーティング要求を生成し、第4の階層レベルでのルーティングのため、マッチする、または対応するアクション(または命令)を有することができるデバイス100の他のマトリクス150内の第2のコンテキストを見つけることの両方を行う。第1のマトリクス150の指定されたSME 290またはコントローラ175の観点から、そのルーティングは完全であり、この方法は、ステップ820に戻り、必要に応じて、他のアクションに対するルーティング・プロセスを続け、この方法は、装置100のレベルで、必要に応じて、ステップ865〜880を繰り返し実行する。
すべてのアクション(または命令)がすでに割り当てられているので、マッチする、または対応するアクション(または命令)は、マトリクス150のうちの1つのマトリクスのスーパークラスタ185のクラスタ200内の複合回路要素260の第2のコンテキストの中にあり、この方法は、必要に応じて、相互接続部155を使用し、対応する低レベルのスーパークラスタ185およびクラスタに問い合わせを送信することで対応する周辺部(例えば、第3の通信要素190および介在する第2の通信要素210)にルーティングするこれらの対応するマトリクスまたは装置レベルのコントローラ(指定されたSME 290またはコントローラ175)により、マトリクスまたは装置レベルまで上がる形で探索する。
その結果、すべてのアクション(または命令)がルーティングされ、同じクラスタ200内で(ステップ815)、または同じスーパークラスタ185内にあるクラスタ200間で(ステップ825、840、および845)、または同じマトリクス150内で(ステップ875および880)、または装置100内だけで、すべてのデータ伝送元またはデータ伝送先をその対応するデータ伝送先またはデータ伝送元にそれぞれ接続する。すべてのアクション(または命令)が、ステップ820で、ルーティングされてしまったら、指定されたSME 290またはコントローラ175は、ステップ850で、特定のタスクIDに対する実行ステータスをセットまたは有効にする。ステップ855で、まだルーティングすべきアクションが残っているプログラムまたはアルゴリズムの追加のタスクがある場合、この方法は続行して、ステップ800に戻り、ルーティングすべきアクションを有するタスクがもうない場合、この方法は終了し、ステップ780に戻ることができる。また、特定のタスクに対する実行ステータスをセットまたは有効にする、ステップ850も、すべてのタスクがルーティングされたときに、ステップ855に続いて実行することができることに留意されたい。
実行ステータスは、後述のように、コンテキストに対する構成ワード(メモリ332に格納されている)で使用され、回路要素270が選択されたコンテキストを実行すべきかどうか(つまり、対応するアクションを実行すべきかどうか)を決定するために要素コントローラ325により使用されるフィールドである。この場合、タスクが完全に構成されており、すべてのアクション(または命令)が割り当てられ、ルーティングされ、後述のように、他の条件も満たされていれば、実行する用意ができていることを示す。実行ステータスは、さらに、選択されたタスクの起動または停止、あるいは新しいタスクを適所にロードするなど選択されたタスクをパージするために使用されうる。
それに加えて、エレクトロニクス分野の当業者にとっては、図14の方法の多くの変更形態の実装が同等であり、本発明の範囲内にあることは明白であろう。例えば、アクション(または命令)がローカルでメモリ330、またはメモリ複合要素260、または第2のメモリ要素に格納されていないが、別のメモリ内に一括して格納されている場合、トップダウン方式が使用されうる。この実施例を続けると、マトリクス・レベルのコントローラ(指定されたSME 290またはコントローラ175)などのトップレベル・コントローラは、ルーティング・プロセスを開始し、格納され、リンクされているアクション(または命令)を調査し、さまざまなクラスタ内、またさまざまなクラスタ間のルーティングを決定し、さまざまな構成(コンテキストとして)を影響を受ける複合回路要素260に受け渡すことができる。他の変更形態として、マトリクス・レベルのコントローラ(指定されたSME 290またはコントローラ175)などのトップレベル・コントローラは、単純に、対応するアクション(または命令)をクラスタ200に送信することができ、次いで、図14Cおよび14Dを参照しつつ上で説明されているようにルーティング・プロセスを開始する。
さらに、1つまたは複数のコントローラ175は、割り当ておよびルーティング・プロセスを実装するために使用できるが、指定されたSME 290の使用が、ロバスト性と回復性の高い解決策であることは明らかである。これらの状況において、複数のSME 290(対応する複数のクラスタ200の)は、スーパークラスタ185のコントローラ、マトリクス150のコントローラ、または装置100のコントローラのさまざまな役割を果たすことができる。所定のSME 290に不都合または損傷が生じた場合、無数の他のSME 290が、それらの役割を果たすために利用できる。
重要なのは、この割り当ておよびルーティング・プロセスにかかる時間が、アクション(または命令)の数「k」に正比例し、それぞれのクラスタ200内の超並列プロセスで同時実行されるので、極めて短い時間のうちに進行することである。例えば、関わるクラスタ、スーパークラスタ、およびマトリクス・レベルの数「n」に応じて、送信すべきメッセージおよびそれぞれのレベルの対応する周辺部への完了すべきルーティングについて、コンテキスト(または命令)1つ当たりの最悪の場合の時間の長さは、典型的には、3n+1または4n+1クロックまたは計算サイクルである。これは、ルーティング時間が、最低でも、k2の関数であり、最適化されても、非決定論的であり、予測不可能なルーティング時間を有する従来技術のルーティング方法とは際だって対照的である。
本発明のこの割り当ておよび束縛プロセスの他の利点は、タスクおよびアクション(または命令)を複数の異質なクラスタ200に割り当て、ルーティングすることができる点である。より具体的には、クラスタ200は、同じである必要はなく、さまざまなタイプの複合回路要素260を混ぜて、かなり異なっていてもよく、しかも結果のデバイスをプログラムする能力には影響を与えない。例えば、多数の乗算器タイプの複合回路要素260を含むクラスタ200は、単純に、乗算の割り当てに利用しやすく、それらのタイプのアクション(または命令)は、それらのタイプのクラスタ200に自動的に引き寄せられることになる。それに加えて、割り当ておよび束縛時間は、同質または異質の両方のクラスタ200に対し同じである。
図1を参照しつつ上で説明されているように、複合回路要素260またはSME 290などのクラスタ200内の1つまたは複数のコンポーネントに損傷または故障が生じた場合、クラスタ200または個別のコンポーネントを利用不可能と指定するか、マークすることができる。これらの状況の下で、影響を受ける複合回路要素260に割り当てられたタスクおよび/またはアクション(または命令)は、1つまたは複数の他の複合回路要素260に配置されるべきであり、これは、さまざまな方法で実行されうる。
図15は、本発明の教示による第1の例示的な再割り当ておよび再束縛プロセスを示す流れ図である。この第1の方式では、セルフテストの際の障害表示などにより、ステップ900から始まり、1つまたは複数のSME 290(損傷または故障の影響を受けない場合には同じクラスタ200内から、または他のクラスタ200から)が、ステップ905で、影響を受ける複合回路要素260に利用不可能のマークを付けるか、指定し、典型的には実行ステータス・ビットを使用して、ステップ910で、すべてのコンテキストの実行を停止するように、影響を受ける複合回路要素260の要素コントローラ325に指令する。SME 290は、さらに、ステップ915で、データを生成すること、およびそれを影響を受ける複合回路要素260に転送することを停止するように、それらの複合回路要素260に指令するメッセージを、リンクされているデータ伝送元複合回路要素260に送信する。SME 290は、次いで、(もしあれば)他の複合回路要素260のどれが影響を受ける機能(つまり、影響を受ける、現在利用不可能な複合回路要素260により実行されていた機能)を引き継ぐのに利用できるかを判定し、ステップ920で、影響を受ける複合回路要素260のメモリ330に格納されているコンテキストを利用可能なコンテキストを有している同じタイプの(複数の)利用可能な複合回路要素260の1つまたは複数のメモリ330にコピーする。例示的な一実施形態では、SME 290は、どの複合回路要素260が利用可能であり、機能のそのような移動の前提条件となる回路要素270のタイプを有しているかを示す、変換テーブルを格納し、維持することができる。SME 290は、さらに、ステップ925で、関連する入力キュー320の内容を利用可能な複合回路要素260の入力キュー320にコピーすることもでき、それとは別に、いくつかのタイプのリアルタイム・データについて、入力データを破棄するか、またはそれと同等のことであるが、関連する入力キュー内に残し、新しく生成されたデータを使用して利用可能な(複数の)複合回路要素260から演算が再開するようにできる。
次いで、SME 290は、ステップ930で、上述のように伝送元(または伝送先)タスクおよびアクション識別子探索を実行することと、それに加えて、伝送元と伝送先の両方のタスクおよびアクション識別子情報が格納されていない場合に、他の複合回路要素260の他のメモリ330内の影響を受けるアクション(または命令)の探索を実行して、対応するデータ伝送先(または伝送元)を決定し、ルーティングを完了することなどにより、利用可能な複合回路要素260との間の接続の再ルーティングを行う。上述のような他のルーティング・ステップは、さらに、必要に応じて使用することもできる(例えば、クラスタ200の間のルーティング)。ステップ935で、SME 290は、次いで、転送されるコンテキストの対応する実行ステータス・ビットをリセットして、利用可能な(複数の)複合回路要素260により影響を受けるアクション(または命令)の実行を再度有効にし、そしてこの再割り当ておよび再束縛プロセスは終了し、ステップ940に戻ることができる。
第2の方式では、タスクは、再割り当ておよび再束縛され(例えば、図12〜14に例示されているように)、影響を受けるコンポーネントがもはや利用可能でなければ、どのようなアクション(または命令)もそれらに割り当てられなくなる。この方式は、さらに、そのような制約がタスク・アクション(または命令)内に含まれるので、局所性制約を保存するという利点も有する。それに加えて、割り当ておよび束縛プロセスの持続時間は、アクション(または命令)の個数に正比例するので、この再割り当ておよび再束縛プロセスは、特に影響を受けるアクション(または命令)の数が比較的小さい場合に、中断を最小に抑えつつ、素早く進行する。このプロセスの一部として、複数のSME 290のうちの1つは、さらに、すべてのコンテキストの実行を停止しするよう、影響を受ける複合回路要素260の要素コントローラ325に指令し、データを生成することおよびそれを影響を受ける複合回路要素260に転送することを停止するよう、(複数の)伝送元複合回路要素260に指令するメッセージをリンクされた(複数の)データ伝送元複合回路要素260に送信し、関連する入力キュー320の内容を新規に割り当てられた利用可能な複合回路要素260にコピーし、利用可能な複合回路要素260の転送されるコンテキストについて実行ステータス・ビットをリセットすることもできる。
その結果、装置100に対するシンボリック・ネットリストとしてコンパイルされたプログラムまたはアルゴリズムは、装置100内で割り当てられ、ルーティングされており、これにより、複合回路要素260の構成(コンテキストとして格納されている)とデータ経路接続のすべてを(完全相互接続要素275、分散された完全相互接続要素295、または相互接続部155を介して)作成する。装置100は、そのような割り当ておよびルーティングをリアルタイムで使用可能なように設計されており、またリアルタイムで実行する必要はなく、あらかじめ実行することができるが、そのようなすべての割り当ておよびルーティングは本発明の範囲内にある。このような背景の下で、装置100内の実行の動作および制御について、次に説明することができる。
E.実行の装置動作および制御
図16は、本発明の教示による例示的な構成および制御ワード1000を示す図である。図16に例示されているように、例示的な構成ワード1000は、複数のデータ・フィールドからなり、要素構成フィールド1010、タスクIDフィールド1015、アクションIDフィールド1020、伝送先(および/または伝送元)アドレス・フィールド1025(伝送先(または伝送元)複合回路要素260、ポート、およびコンテキストを指定する)、オプションの「フォーク」フィールド1030、重要入力(「SI」)フィールド1035、重要出力(「SO」)フィールド1040、オプションのサイクル(「CY」)フィールド1045、実行ステータス・フィールド1050、オプションの優先度フィールド1055、オプションの状態使用可フィールド1060、オプションの次のフィールド1065、オプションの最終コンテキスト・フィールド1070、オプションの割り込みフィールド1075、オプションのシングルステップ・フィールド1080、およびオプションの定数モード・フィールド1085のうちの少なくとも2つまたはそれ以上のデータ・フィールドを任意の順序で含む。対応する構成および制御ワード1000は、複合回路要素260のそれぞれのコンテキストに対し使用される。エレクトロニクス分野の当業者にとっては、選択された装置100および組み込まれているシステムの用途および目的に応じて、使用するフィールドを増減できることは明らかであり、そのようなすべての変更形態は本発明の範囲内にある。
コンテキスト毎に1つずつの、複数の構成ワードが、構成可能な要素270の構成および実行を制御するために要素コントローラ325により使用される。それぞれの構成ワードは、コンテキスト番号をインデックスとする。構成可能な要素270をどのように構成するか、またはデータをどのように解釈すべきかを制御する1つまたは複数の構成ビットは、要素構成フィールド1010内に格納される。同様に、割り当てられ、ルーティングされた(束縛された)アクション(または命令)は、フィールド1015内に対応するタスクIDとして、フィールド1020にアクションIDとして格納される。
データ出力および/またはデータ入力ロケーションは、束縛された伝送先(および/または伝送元)アドレスとして、フィールド1025に格納される。それとは別に、データ入力および/またはデータ出力ポインタ(伝送元/伝送先タスクIDおよびアクションIDとして)は、潜在的な再ルーティングのために実装される方法に応じて、格納されうる。例えば、タスク全体が新たに再割り当てされ、再束縛される場合、すでに格納されている伝送元および伝送先情報を使用するのではなく、新しいルーティング情報が生成される。残っている制御フィールドは、与えられたコンテキストが(回路要素270により実行される対応するアクションに対し)実行されるかどうか、またいつ実行されるか、SME 290により割り込みをどのように処理するか、1つまたは複数の伝送先アドレスに出力データをどのように送るかを制御するために使用される。
要素コントローラ325は、例示的な実施形態において、例示的な構成および制御ワード1000のさまざまなフィールド(例えば、1035、1040、1050、1060)に格納されているビットの値に基づき、結果(与えられたコンテキストが実行するか、または実行しない)を出力する、AND、OR、およびINVERTERゲートなどの組み合わせロジック・ゲートまたは要素を備える。図17は、本発明の教示による例示的な装置内でコンテキストの準備ができているかどうかを判定するための例示的な組み合わせロジック回路1100を示すブロック図である。
上述のように、データ・フロー環境において、コンテキスト(タスク)は、十分な入力データがあり、また結果の出力データに対する十分に空いているか、または利用可能な伝送先がある場合に実行可能である。構成可能な要素270への複数の入力および対応する複数の入力キュー320があるので、重要入力(SI)ビット(1035)が、それらの入力のうちどれを選択されたコンテキストにおいて使用するかを指定する。それに加えて、入力キュー320は、対応する入力キュー320内に十分なデータがあることを示す、「十分入力」(「EI」)と呼ばれる、第1の信号を生成するように適合される。例えば、要素コントローラ325では、SIビットのそれぞれが、反転され、反転されたSIビットおよびその対応するEI信号のそれぞれに対しOR演算が実行され(ORゲート11100から1110nまで)、その対応するOR結果(4つの入力に対し4つの結果)のすべてに対しAND演算が実行され(ANDゲート1115)、これにより「データ入力使用可」信号が得られ、AND結果(データ入力使用可)は選択されたコンテキストにより使用される入力のところに利用可能なデータが十分にあることを示す。より具体的には、データ入力使用可信号は、(1)重要入力のところに十分なに入力データが出ており、(2)他の残りの入力は重要でない場合に生成される。
同様に、構成可能な要素270からの複数の出力キュー315および出力375があるので、重要出力(SO)ビット(1040)が、それらの出力および対応するキューのうちどれを選択されたコンテキストにおいて使用するかを指定する。それに加えて、「空きがある」(「RFM」)信号と呼ばれる第2の信号が生成され、(複数の)対応する伝送先が、出力キュー315またはデータ伝送先の入力キュー320のいずれかからの、または潜在的に出力データ消費を追跡する出力レジスタからの、出力データに利用可能な十分な空き領域を有することを示す。また、例えば、要素コントローラ325において、SOビットが、反転され、反転されたSOビットおよびその対応するRFM信号のそれぞれに対しOR演算が実行され(ORゲート11200から1120nまで)、その対応するOR結果(2つの入力に対し2つの結果)のすべてに対しAND演算が実行され(ANDゲート1125)、これにより「データ出力使用可」信号が得られ、AND結果(データ出力使用可)は、選択されたコンテキストによりデータ出力に利用可能な十分なメモリ空間がある、つまり、対応する出力キュー315(または伝送先入力キュー320(または他のメモリ))内に利用可能な空き領域があることを示す。より具体的には、データ出力使用可信号は、(1)重要出力のところに出力データのための空き領域があり、(2)他の残りの出力は重要でない場合に生成される。
これら2つの結果、データ入力使用可、およびデータ出力使用可は、次いで、AND演算を実行され(ANDゲート1130)、選択されたコンテキストに対する全体的データ「使用可」ステータスが得られる。例えば、使用可ステータスは、(複数の)データ入力と(複数の)データ出力が使用可である場合に論理1であり、そうでない場合には0である。それとは別に、図17に例示されているように、データ入力使用可およびデータ出力使用可の結果と他のフィールドとのAND演算を実行して(後述の状態使用可および実行ステータス)、コンテキストが実行可能状態であることを示す全体的指標(「コンテキスト使用可」信号)が生成される。
フィールド1050に格納されている実行ステータスは、コンテキストが実行について有効にされているかどうかを示し、束縛プロセスにおけるデータ入出力ルーティングに従ってセットされるか、またはSME 290により別のときにセット(またはリセット)されうる。例えば、タスク(選択されたコンテキストがその一部である)は、他の構成可能な要素270についてまだ構成されルーティングされている最中である場合があり、そのようなルーティングが完了するまで有効にされるべきではない。他の状況では、SME 290の1つは、別のときに再開が可能なように、タスクを停止しているか、またはタスクを削除中である場合がある。そのため、要素コントローラ325は、フィールド1050の実行ステータスにより示されているように、有効にされたときのみコンテキストを実行する。
SME 290は、さらに、1つまたは複数の状態使用可ビット(オプションのフィールド1060に格納されてる)を使用して、さまざまな条件または他のイベントに基づきコンテキスト実行を制御することもできる。例えば、初期化など、条件が満たされた場合、選択されたコンテキストは、次に実行される必要があり、状態使用可ビットで指定される。これらのビット(実行ステータス、状態使用可、データ出力使用可信号、データ入力使用可信号)はすべて、AND演算を実行され(ANDゲート1130)、また、その結果は、実行ステータス・フィールド1050または要素コントローラ325によりアクセス可能な他のフィールド内に格納されうる。その結果、状態使用可ビット、データ入力使用可、データ出力使用可および実行ステータス・インジケータを結合することで、要素コントローラ325が選択されたコンテキストの実行を許可することを示す指標が得られる。それとは別に、演算は、状態使用可ビットなしで、実行ステータス(フィールド1050の)を使用することで制御することができ、これにより、SME 290は、コンテキストが実行について有効にされているかいないかを単純に指定することができる。
オプションのサイクル・フィールド1045は、対応するアクションを実行するのに必要なクロック・サイクル数を指定するために使用される。このフィールドは、第1のコンテキストの計算がまだ続いているときに、他のコンテキストが実行されるの回避するために使用される。
オプションのシングルステップ・フィールド1080は、SME 290による結果の調査などのために、コンテキストが1回だけ実行されるようにする場合に使用される。さまざまなテスト・コンテキストが、シングルステップ・モードで実行されることが多く、SME 290ではシングルステップ・ビットのセットまたはクリアを行う(例えば、選択された時刻にテストを実行する、実行に必ずしも利用できないようにする)。
選択された一実施形態では、オプションのコンテキスト・フィールド1070は、複数のコンテキストの潜在的な実行の際のアービトレーションの一部として使用されうる。コンテキストが実行されている場合、最後のコンテキスト・ビットはセットされる(そして、他のコンテキストの最後のコンテキスト・ビットは0にリセットされる)。実行可状態にあるコンテキストの競合が生じた場合、最後のコンテキスト・ビットが、それらのコンテキストのうちの1つが実行されたばかりかどうかを判定し、もしそうであれば、他のコンテキストの実行を許可し、これにより1つのコンテキストが構成可能な要素270において完全に支配的な実行を行うのを回避する。それに加えて、ちょうど実行したばかりではなかったコンテキストの競合が生じる場合、1つまたは複数のオプションの優先度ビット(フィールド1055内に格納されている)が、優先度の高いコンテキストのアービトレーションを行い、最初に実行するのを許可するために使用されうる。
例示的な一実施形態では、「連鎖」インジケータとも呼ばれる、オプションの次のインジケータ(フィールド1065に格納されている)は、次に実行するコンテキストを決定するために使用され、コンテキストが実行されるシーケンスを制御する、つまり、一連の演算を1つの連鎖にする場合に特に役立つ。この実施形態では、要素コントローラ325は、上述の他の条件が満たされているときに、「連鎖先頭」コンテキスト(フィールド1065内でも指定される、連鎖の第1のコンテキスト)の実行を開始することができる。これ以降、要素コントローラ325は、これもまた他の条件(例えば、EI、RFMなど)が満たされている場合に、フィールド1065で指定されているように、このシーケンス内の次のコンテキストを実行し、満たされていなければ、次のコンテキストが利用可能になるのを待つ。次のコンテキストが、現在のコンテキストと同じであれば、そのシーケンスの実行は完了している。このフィールド1065は、さらに、(複数の)データ入力が消費されるかどうかに関する指定も含むことができる。
他の例示的な実施形態では、伝送先に基づく(伝送元に基づくのではなく)データ伝送が使用される場合、同じ出力が複数の伝送先に送られる(か、または複製される)ときに、オプションの「フォーク」フィールド1030が、出力複製に使用される。追加のコンテキストは、これらの追加の伝送先を格納するために使用される。この実施形態では、要素コントローラ325は、上述の他の条件が満たされているときに、「フォーク先頭」コンテキスト(フィールド1030内でも指定される、フォークの第1のコンテキスト)の実行を開始することができる。これ以降、フォーク・フィールド1030の1つまたは複数のビットが、他のコンテキストを示している場合、現在の出力はそのコンテキストに対する出力として供給(順次コピー)されるため、同じ出力を単に別のロケーションに送るだけのために、同じデータに基づきコンテキストを再実行しなくて済む。「フォーク」シーケンスの一部でない他のコンテキストは、この順次出力複製時には実行されない。次のコンテキストが、現在のコンテキストと同じであれば、フォーク(出力複製)の実行は完了している。フィールド1030にフォークが示されていない場合、要素コントローラ325は、単に、他のどのようなコンテキストが実行可能状態にあるかを決定するだけであり、それに応じて進行する。
選択されている一実施形態では、オプションの「割り込み」フィールド1075も用意されうる。このフィールドは、構成ワード1000の一部として、コンテキストの実行時期を含む、割り込みの設定、マスク設定、および検出を指定することができる。これらの割り込みは、SME 290により処理される。
また、選択された一実施形態では、オプションの定数モード・フィールド1085は、入力データ・ワードの1つまたは複数が定数であることを指定するために使用されうる。このような定数に関して、これは一般的に保持され(変更されるまで)、したがって、定数はデータ演算の実行中に消費されることはない。この実施形態では、定数モード・フィールド1085の選択されたビットは、さらに、2つまたはそれ以上の定数値をトグルまたはスイッチするなどのために、次のデータ読み取り位置(例えば、2ワード入力キュー320内のどのデータ・ワードか)を示すために使用される。
したがって、上述のように、要素コントローラ325は、それぞれのコンテキストに対する構成および制御ワード1000(および他の制御信号)のさまざまなフィールドを評価する、複数の組み合わせロジック・ゲートを使用して実装されうる。コンテキストが使用可であり、実行されるべきであることを、さまざまなフィールドおよび他の信号が示している場合、要素コントローラ325は、コンテキストの構成をロードし、対応するタスクまたはアクション(または命令)が実行される。
要約すると、本発明は、自己回復機能を有する回復適応集積回路を実現するということである。例示的な実施形態の多数の利点は、すぐにわかるものである。本発明のICアーキテクチャは、回復能力を有し、製造時の欠陥、ICを使用する際に生じうる不具合への適応、および新しい機能、サービス、アルゴリズム、および他のイベントに対する適応性をもたらすものである。このICアーキテクチャは、ICの一部が損傷したり、他の何らかの形で使用不能になった場合でも、ICのそれ以外の部分が有効に「リクルート」される、つまり損傷した部分の機能を引き継いで実行するように再割り当てされるため自己回復的である。本発明を使用することで、単一のコンポーネントをスイッチアウトすることができ、しかも従来技術の固定された配線は利用されない。それに加えて、機能が再割り当てされると、新しい制御およびデータ経路も作成され、移動された演算は他のIC演算で継ぎ目なく実行を続ける。このような適応回復および自己回復機能は、選択された実施形態に応じて、リアルタイムで、またはほぼリアルタイムで実行されうる。このような回復性のおかげで、ICに損傷が発生した場合に、突発的故障になることなく、実行のグレースフル・デグラデーションが可能になり、このような回復性は、健康安全関係のアプリケーションでは特に重要である。
本出願では、自己回復機能を有する回復適応集積回路のためのシステム、装置、ソフトウェア、および方法を開示することは理解されるであろう。本発明は、特定の実施形態に関して説明されているけれども、それらの実施形態は単に例示的であり、本発明を制限するものではない。本明細書の説明では、電子的コンポーネント、電子的および構造接続部、材料、および構造変更形態の実施例など、多数の具体的内容を取りあげ、本発明の実施形態を十分理解できるようにしている。しかし、当業者であれば、本発明の一実施形態は、これらの具体的内容の1つまたは複数がなくても、または他の装置、システム、アセンブリ、コンポーネント、材料、パーツなどを使用しても、実施できることを理解するであろう。他の場合には、よく知られている構造、材料、または動作(または演算)については、特に詳しく示したり説明したりせず、本発明の実施形態の態様がわかりにくくならないように配慮している。それに加えて、各種の図は、縮尺通りではなく、また制限するものとしてみなされるべきではない。
本明細書で使用されているような「プロセッサ」は、どのようなタイプのコントローラまたはプロセッサであってもよく、また本明細書で説明されている機能を実行するように適合された、1つまたは複数のプロセッサ175として具現化されうる。プロセッサは、別システム内にあってもよく、またはシステム100、140などのダイの一部として集積化されてもよく、また市販のプロセッサまたはマイクロプロセッサ、例えばARMまたはMicro−Blazeなど、どのようなタイプのプロセッサもしくはコントローラであってもよく、あるいは1つまたは複数のSME 290を使用して実装されてもよい。本明細書ではプロセッサという用語が使用されており、プロセッサは、単一の集積回路(「IC」)の使用を含むことができるか、またはコントローラ、マイクロプロセッサ、デジタル・シグナル・プロセッサ(「DSP」)、パラレル・プロセッサ、マルチコア・プロセッサ、カスタムIC、特定用途向け集積回路(「ASIC」)、フィールド・プログラマブル・ゲート・アレイ(「FPGA」)、適応コンピューティングIC、関連するメモリ(RAM、DRAM、およびROMなど)、ならびに他のICおよびコンポーネントなどの、複数の集積回路または接続された、配列された、またはグループ化された他のコンポーネントの使用を含むことができる。そのため、本明細書で使用されているように、プロセッサという用語は、単一のIC、またはマイクロプロセッサ・メモリまたは追加のRAM、DRAM、SDRAM、SRAM、MRAM、ROM、FLASH、EPROM、またはE2PROMなどの関連するメモリを備えるカスタムIC、ASIC、プロセッサ、マイクロプロセッサ、コントローラ、FPGA、適応コンピューティングIC、または後述の機能を実行する集積回路の他の何らかのグループの配列を同等なものとして意味し、含むものと理解されるべきである。プロセッサ(プロセッサ1215などの)は、その関連するメモリとともに、本発明の方法を実行するように(プログラミング、FPGA相互接続、またはハード配線を介して)適合または構成されうる。例えば、この方法は、プロセッサが動作している(つまり、電源オンで機能している)ときにその後の実行のため、一組のプログラム命令または他のコード(または同等の構成もしくは他のプログラム)として、関連するメモリ(および/または他のメモリ)および他の同等のコンポーネントを備えるプロセッサ/コントローラ175内にプログラムされ、格納されうる。同等のことであるが、プロセッサ1215が、FPGA、カスタムIC、および/またはASICとして全部または一部実装されうる場合、それらのFPGA、カスタムIC、またはASICは、本発明の方法を実装するように設計され、構成され、および/またはハード配線されうる。例えば、プロセッサは、メモリとともに、本発明の方法を実装するようにそれぞれプログラムされ、設計され、適合され、または構成されている、「コントローラ」または「プロセッサ」と総称される、複数のプロセッサ、コントローラ、マイクロプロセッサ、DSP、および/またはASICの配列として実装することができる。
データ・リポジトリ(またはデータベース)を含んでもよい、本明細書で使用されるような「メモリ」は、選択された実施形態に応じて、限定はしないが、RAM、FLASH、DRAM、SDRAM、SRAM、MRAM、FeRAM、ROM、EPROMまたはE2PROM、または磁気ハードドライブ、光ドライブ、磁気ディスクまたはテープ・ドライブ、ハードディスク・ドライブ、フロッピー(登録商標)・ディスク、CDROM、CD−RW、デジタル多用途ディスク(DVD)または他の光メモリ、または知られている、または知られるようになる他のタイプのメモリ、記憶媒体、またはデータ記憶装置もしくは回路などの他の機械可読記憶装置またはメモリ媒体などの他の形態のメモリ・デバイスを含む、揮発性、不揮発性にかかわらず、取り外し可能、取り外し不可能にかかわらず、限定はしないが、メモリ集積回路(「IC」)、または集積回路のメモリ部分(プロセッサ内の常駐メモリなど)を含む、現在知られている、または将来知られることになる、コンピュータまたは他の機械可読データ記憶媒体、メモリ・デバイスまたは情報の格納または通信伝達のための他の記憶装置もしくは通信デバイスを含む、多くの形態で具現化されうる。それに加えて、そのようなコンピュータ可読媒体は、電磁信号、光信号、音響信号、RF信号、または赤外線信号などを含む、有線または無線の信号中にデータまたは他の情報を符号化することができる、情報配送媒体を含む、電磁もしくは光搬送波または他の搬送機構などの、コンピュータ可読命令、データ構造体、プログラム・モジュール、またはデータ信号もしくは変調信号中の他のデータを具現化する任意の形態の通信媒体のを含む。メモリは、さまざまなルックアップ・テーブル、パラメータ、係数、他の情報およびデータ、プログラムまたは命令(本発明のソフトウェアの)、およびデータベース・テーブルなどの他のタイプのテーブルを格納するように適合されうる。
上に示されているように、プロセッサ/コントローラ175は、例えば、本発明のコンパイル方法を実行するために、本発明のソフトウェアおよびデータ構造体を使用して、プログラムされる。その結果、本発明のシステムおよび方法は、コンピュータ可読媒体内に具現化された一組の命令および/またはメタデータなどの、そのようなプログラミングまたは他の命令を備えるソフトウェアとして具現化されうる。それに加えて、メタデータは、さらに、ルックアップ・テーブルまたはデータベースのさまざまなデータ構造体を定義するために使用されうる。そのようなソフトウェアは、実施例として、限定することなく、ソース・コードまたはオブジェクト・コードの形態を取りうる。ソース・コードは、さらに、ある種の形態の命令またはオブジェクト・コード(アセンブリ言語命令または構成情報を含む)にコンパイルされうる。本発明のソフトウェア、ソース・コード、またはメタデータは、C、C++、SystemC、LISA、XML、Java(登録商標)、Brew、SQLおよびその派生言語(例えば、SQL 99またはSQLの専用バージョン)、DB2、Oracle、またはさまざまなハードウェア定義またはハードウェア・モデリング言語(例えば、Verilog、VHDL、RTL)およびその結果得られるデータベース・ファイル(例えば、GDSII)を含む、本明細書で説明されている機能を実行する他のタイプのプログラミング言語などの、任意のタイプのコードとして具現化されうる。そのため、「構成要素」、「プログラム構成要素」、「ソフトウェア構成要素」、または「ソフトウェア」は、本明細書では同等のものとして使用され、指定されている関連する機能または方法を実現するか、または実現するものと解釈できる(例えば、プロセッサ1215を含む、インスタンス化されるか、またはプロセッサまたはコンピュータにロードされ、実行される場合)、構文またはシグネチャを持つ、任意の種類のプログラミング言語を意味し、その言語を指す。
本発明のソフトウェア、メタデータ、または他のソース・コードおよびその結果得られるビット・ファイル(オブジェクト・コード、データベース、またはルックアップ・テーブル)は、上述のように、メモリ1220、例えば、フロッピー(登録商標)・ディスク、CDROM、CD−RW、DVD、磁気ハードドライブ、光ドライブ、または他のタイプのデータ記憶装置または媒体に関して上で説明されているような、コンピュータ可読命令、データ構造体、プログラム・モジュールまたは他のデータとして、コンピュータまたは他の機械可読データ記憶媒体などの有形記憶媒体内に具現化できる。
I/Oインターフェースは、当業で知られているように、または当業で知られる可能性があるように実装され、インピーダンス・マッチング機能、低電圧のプロセッサが高電圧の制御バスとインターフェースするための電圧変換、およびプロセッサからの信号に応じてさまざまな回線またはコネクタをオン/オフするためのさまざまなスイッチング機構(例えば、トランジスタ)を備えることができる。それに加えて、I/Oインターフェースは、さらに、例えば、コンパイルのためのアルゴリズムなどの情報を受け取るために、ハード配線、IRまたはRF信号送受信などを通じて、信号を受信し、および/または信号を外部的にシステムに送信するように適合されうる。I/Oインターフェースは、選択されたアーキテクチャを使用して、任意のタイプのバスまたはネットワーク構造もしくは媒体に接続することができる。例えば、限定はしないが、このようなアーキテクチャとしては、Industry Standard Architecture(ISA)バス、Enhanced ISA(EISA)バス、Micro Channel Architecture(MCA)バス、Peripheral Component Interconnect(PCI)バス、SANバス、またはイーサネット(登録商標)、ISDN、T1、衛星、無線などの他の通信もしくは信号送受信媒体がある。I/Oインターフェースは、当業で知られているように、または当業で知られる可能性があるように、実装され、該当する標準(例えば、限定はしないが、さまざまなPCI、USB、またはイーサネット(登録商標)標準のうちの1つ)を使用して、プロセッサとネットワークとの間のデータ通信を行うことができる。
明細書全体を通して「一実施形態」、「実施形態」、または特定の「実施形態」と記述されている場合、これは、その実施形態に関して説明されている特定の機能、構造、または特性が、本発明の少なくとも1つの実施形態に含まれ、必ずしもすべての実施形態に含まれるわけではなく、さらに、必ずしも同じ実施形態を参照するわけでもないことを意味する。さらに、本発明の特定の実施形態の特定の機能、構造、または特性は、好適な方法で、また他の特徴の対応する用途のない選択された特徴の用途を含む、1つまたは複数の他の実施形態の好適な組み合わせで、組み合わせることができる。それに加えて、特定の用途、状況、または材料を本発明の本質的範囲および精神に適合させるように、多くの修正を加えることができる。本明細書で説明され、例示されている本発明の実施形態の他の変更形態および修正形態は、本明細書の教示に照らして可能であり、本発明の精神および範囲の一部として考えられることは理解されるであろう。
また、図に示されている要素の1つまたは複数は、さらに、より独立した、または一体化された方法で実装されるか、またはさらには、特定の用途に応じて有用であるように、いくつかの場合において取り除かれるか、または動作不可能にすることも可能であることも理解されるであろう。コンポーネントの一体形成された組み合わせも、本発明の範囲内にあり、特に、ディスクリート・コンポーネントの分離または組み合わせが不明確であるか、または識別できない実施形態についてもそうである。さらに、本明細書で、「結合(する)」または「結合可能」などのさまざまな言い回しを含む「結合されている」という用語を使用した場合、これは、直接的または間接的な、電気的、構造的、または磁気的結合、接続、または取り付け、あるいは一体形成されたコンポーネントおよび他のコンポーネントを介してまたは通じて結合されているコンポーネントを含む、そのような直接的または間接的な、電気的、構造的、または磁気的結合、接続または取り付けの適応または能力を意味し、含む。
さらに、図面/図中の信号矢印は、例にすぎず、特に断りのない限り、制限するものとみなすべきではない。ステップのコンポーネントの組み合わせも、特に分離または組み合わせの能力が不明確または予見可能である場合に、本発明の範囲内にあると考えられる。本明細書で使用され、以下の請求項の全体にわたって使用されているような、離接的な用語「または、あるいは、もしくは」は、断りのない限り、接続と離接の両方の意味を有する「および/または」を意味することを意図されている(「排他的or」の意味に限定されない)。本明細書の説明および以下の請求項全体にわたって使用されているように、「1つの(または使わない場合もある)」および「その(使わない場合もある)」(英語原文の冠詞「a」、「an」、および「the」)は、文脈上明らかにそうでないことを示していない限り、複数の意味を含む。また、本明細書の説明および以下の請求項全体にわたって使用されているように、「における、中の、内の」(英語原文で「in」)は、文脈上明らかにそうでないことを示していない限り、「における、中の、内の」と「上の」(英語原文で「in」および「on」)の意味を含む。
「発明の概要」または「要約」の項で説明されているものを含む、本発明の例示されている実施形態の前記の説明は、網羅的であること、または発明を本明細書で開示されている正確な形態に制限することを意図していない。前記の説明から、本発明の新規性のある概念の精神および範囲から逸脱することなく、多数の変更形態および修正形態が実施されうることは観察されるであろう。本明細書に例示されている特定の方法および装置に関して一切の制限が意図されないか、また推論されるべきでないことは理解されるであろう。もちろん、付属の請求項により請求項の範囲内に収まる形でそのような修正形態を対象することは意図されている。