(57)【特許請求の範囲】
【請求項１】
装置であって、
それぞれ１つの統一要素インターフェースおよび複数の異なる回路要素タイプのうちの１つの回路要素を含む集積回路の複数のアレイ内の複数の複合回路要素であって、各要素インターフェースは複数のデータ入力キューと複数のデータ出力キューとを含み、前記複数の複合回路要素のうちの第１の複合回路要素は複数の異なる回路要素タイプのうちの第１のタイプおよび割り当てられた第１のアクションを有し、前記複数の複合回路要素のうちの第２の複合回路要素は複数の異なる回路要素タイプのうちの第２のタイプおよび割り当てられた第２のアクションを有し、前記第１の複合回路要素は前記第２の複合回路要素への第１のデータ・リンクを有する、複数の複合回路要素と、
複数の通信要素であって、前記複数の通信要素のうちの第１の通信要素が前記集積回路の前記複数のアレイのうちのそれぞれの中にある前記複数の複合回路要素の前記複数のデータ入力キューのうちの全てのデータ入力キューを前記複数の複合回路要素の前記複数のデータ出力キューのうちの全てのデータ出力キューに結合する完全相互接続バスを備え、前記複数の通信要素のうちの第２の通信要素が前記複数の複合回路要素の前記複数のアレイのうちの隣接するアレイの間にデータ・ワードをバッファリングし転送する前記集積回路の隣接するアレイのそれぞれの完全相互接続バスと結合する複数のクラスタ間キューを備える、複数の通信要素と、
前記複数の通信要素に結合されている、前記第１の複合回路要素が使用不可能になったことに応答して、前記第１のアクションを前記複数の複合回路要素のうちの第３の複合回路要素に割り当て、前記第３の複合回路要素と前記第２の複合回路要素との間に第２のデータ・リンクを形成するように適合された状態機械要素であって、前記第２のデータ・リンクが前記完全相互接続バスまたは前記複数のクラスタ間キューのうちの１つのクラスタ間キューを使用する状態機械要素とを備える装置。
【請求項２】
前記第１の複合回路要素は、検出された障害により利用不可能になっている請求項１に記載の装置。
【請求項３】
前記障害は、前記複数の複合回路要素のうちの少なくとも１つの複合回路要素により実行される定期的診断機能、前記複数の複合回路要素のうちの少なくとも１つの複合回路要素の選択されたコンテキストとして実行されるバックグラウンド診断機能、または同じ回路要素タイプの複数の複合回路要素により実行される比較テストの動作判定のうちの少なくとも１つにより検出される請求項２に記載の装置。
【請求項４】
前記状態機械要素は、さらに、前記第１の複合回路要素のすべての活動を中断し、前記第１の複合回路要素を格納されている利用可能性テーブルまたはマップ内で利用不可能と指定するように適合される請求項２に記載の装置。
【請求項５】
前記第１の複合回路要素は、前記第１のアクションに比べて高い優先度を有する第３のアクションを前記状態機械要素により割り当てられたことで利用不可能になっている請求項１に記載の装置。
【請求項６】
前記複数の回路要素タイプは、複数の構成可能な要素タイプ、１つのメモリ要素タイプ、複数の通信要素タイプ、および複数の構成不可能な要素タイプの回路要素タイプのうちの少なくとも１つを含む請求項１に記載の装置。
【請求項７】
前記第１の複合回路要素および前記第３の複合回路要素はそれぞれ、前記複数の構成可能な要素タイプのうちの第１の構成可能な要素タイプを有し、前記第２の複合回路要素は、前記複数の構成可能な要素タイプのうちの第２の構成可能な要素タイプを有し、前記状態機械要素は、さらに、前記第１のアクションを前記第３の複合回路要素の第１の構成として割り当てるように適合される請求項６に記載の装置。
【請求項８】
前記状態機械要素は、さらに、第１のシンボリック・ネットリスト要素から前記第１の構成および第１の構成可能な要素タイプを取得するように構成される請求項７に記載の装置。
【請求項９】
前記第１のシンボリック・ネットリスト要素は、さらに、前記第２のデータ・リンクを前記第３の複合回路要素と前記第２の複合回路要素との間の仮想データ通信として指定するシンボリック・ポインタを含む請求項８に記載の装置。
【請求項１０】
前記第１の複合回路要素は、前記複数の構成可能な要素タイプのうちの第１の構成可能な要素タイプを有し、前記第２の複合回路要素は、前記複数の構成可能な要素タイプのうちの第２の構成可能な要素タイプを有し、前記第３の複合回路要素は、前記複数の構成可能な要素タイプのうちの第３の構成可能な要素タイプを有し、前記状態機械要素は、さらに、前記第１のアクションを前記第３の複合回路要素の第１の構成として割り当てるように適合される請求項７に記載の装置。
【請求項１１】
前記状態機械要素は、さらに、前記第１のアクションの移動のため前記第３の複合回路要素への参照を有する格納されている変換テーブルを使用するように適合される請求項１０に記載の装置。
【請求項１２】
それぞれの対応する要素インターフェースは、
前記対応する回路要素に結合され、複数の構成を対応するコンテキストとして格納するように適合された第１のメモリと、
前記対応する回路要素に結合されている要素コントローラとを備える請求項１に記載の装置。
【請求項１３】
それぞれの対応するコンテキストは、前記対応する回路要素、および１つまたは複数のデータ入力元または１つまたは複数のデータ出力先のいずれかの構成を定義する請求項１２に記載の装置。
【請求項１４】
前記要素コントローラは、さらに、前記第１のメモリ内に第１のコンテキストの部分実行の現在状態を格納し、第２のコンテキストを実行し、前記現在状態を取り出して、前記第１のコンテキストの実行を再開するように適合される請求項１３に記載の装置。
【請求項１５】
前記複数の通信要素のうちのそれぞれの通信要素は、
対応する要素インターフェースと、
対応する通信回路要素とを備える請求項１２に記載の装置。
【請求項１６】
前記状態機械要素は、さらに、
対応する要素インターフェースと、
対応する状態機械回路要素とを備える請求項１２に記載の装置。
【請求項１７】
前記要素コントローラは、前記複数のコンテキストのうちの選択されたコンテキストについて、前記選択されたコンテキストに対応する選択された入力キューに入力データが入っている場合、前記選択されたコンテキストに対応する選択された出力キューにデータを受け入れる余地がある場合、および前記選択されたコンテキストに対応するステータス・ビットが実行に関してセットされている場合に、前記回路要素による前記選択されたコンテキストの実行を指令するように適合される請求項１２に記載の装置。
【請求項１８】
前記要素コントローラは、さらに、実行可能状態にある複数のコンテキスト間のアービトレーションを行い、前記アービトレーションの結果、実行のため対応するコンテキストを選択するように適合される請求項１７に記載の装置。
【請求項１９】
前記アービトレーションでは、ラウンド・ロビン、優先度、最近実行、最長未実行、またはスケジュール実行のアービトレーション方法のうちの少なくとも１つを実装する請求項１８に記載の装置。
【請求項２０】
前記複数の通信要素は、さらに、
階層相互接続と、
少なくとも１つの第１のデータ・ワードのルーティングと少なくとも１つの第２のデータ・ワードのスイッチングの両方を行うように適合され、前記階層相互接続と結合された複数の第１の通信要素とを備える請求項１に記載の装置。
【請求項２１】
それぞれが前記完全相互接続バスおよび前記複数の入力キューのうちの対応する入力キューと結合される複数のマルチプレクサをさらに備える請求項１に記載の装置。
【請求項２２】
前記完全相互接続バスは、複数の１対１入力および出力データ・リンク、１つの１対多ブロードキャスト・データ・リンク、１つの多対１データ・リンクの物理データ・リンクのうちの少なくとも１つを備えるように適合される請求項２０に記載の装置。
【請求項２３】
前記複数の通信要素は、さらに、
前記複数の複合回路要素の第１のアレイと前記複数の複合回路要素の第２のアレイとの間で少なくとも１つの第３のデータ・ワードのルーティングまたはスイッチングを行うように適合されている複数の第２の通信要素を含む請求項２０に記載の装置。
【請求項２４】
前記状態機械要素は、さらに、前記複数の第１の通信要素のうちの選択された第１の通信要素または前記完全相互接続バスのいずれかを通じた仮想データ・リンクとして前記第２のデータ・リンクを形成するように適合される請求項２０に記載の装置。
【請求項２５】
さらに、
前記状態機械要素に結合されている、外部バスまたは外部メモリとの通信インターフェースを形成するように適合されたメッセージ・マネージャ回路を備える請求項１に記載の装置。
【請求項２６】
さらに、
前記状態機械要素に結合されている、分散されている複数のメモリ複合回路要素用の統一アドレス空間を形成するように適合されたメッセージ・マネージャ回路を備える請求項１に記載の装置。
【請求項２７】
前記複数の回路要素タイプは、構成可能な算術論理演算ユニット、構成可能な乗算器、構成可能なビット並べ替え要素、構成可能な積和演算要素、構成可能なガロア乗算器、構成可能なバレル・シフター、構成可能なルックアップ・テーブル、プログラマブル・コントローラ、構成可能なコントローラ、および構成可能な複数の算術論理演算ユニットの各回路要素タイプのうちの少なくとも２つを含む請求項１に記載の装置。
【請求項２８】
前記状態機械要素は、前記複数のクラスタ間キューのうちの１つのクラスタ間キューを通じて、または前記完全相互接続バスを通じて、前記複数の複合回路要素に結合される請求項１に記載の装置。
【請求項２９】
前記状態機械要素は、前記複数の通信要素のうちの少なくとも１つの通信要素を通じて、前記複数の複合回路要素に結合されている外部コントローラまたは外部プロセッサである請求項１に記載の装置。
【請求項３０】
前記状態機械要素は、さらに、
有限状態機械回路と、
状態情報を格納するように適合されたメモリとを備える請求項１に記載の装置。
【請求項３１】
前記複数の通信要素のうちの選択された通信要素は、前記第２のデータ・リンクから、前記第３の複合回路要素と前記第２の複合回路要素との間の複数の物理的データ・リンクのうちの少なくとも１つの物理的データ・リンクを決定するように適合される請求項１に記載の装置。
【請求項３２】
前記選択された通信要素は、さらに、対応するメモリ内に格納されているルーティング・テーブルを使用して選択された時刻または選択されたクロック・サイクルで前記複数の物理データ・リンクを作成するように適合される請求項３１に記載の装置。
【請求項３３】
前記複数の複合回路要素は、その時点の現在状態を定期的に格納しておき、検出された障害に応じて、前記格納されている状態を取り出し、前記格納されている状態を使用して演算を再開するように適合される請求項１に記載の装置。
【請求項３４】
前記要素インターフェースは、
前記回路要素に結合され、少なくとも１つの構成を対応するコンテキストとして格納するように適合された第１のメモリを備える請求項１に記載の装置。
【請求項３５】
前記状態機械要素は、さらに、前記第３の複合回路要素と前記第２の複合回路要素との間の、前記複数の通信要素のうちの選択された通信要素を通じて前記第２のデータ・リンクを物理的接続として形成するように適合され、前記状態機械要素は、さらに、前記第１のアクションおよび前記第２のアクションの実行を行うように適合される請求項１に記載の装置。
【請求項３６】
装置であって、
それぞれ１つの要素インターフェースおよび複数の異なる構成可能な回路要素タイプのうちの１つの構成可能な回路要素を含む集積回路の複数のアレイ内の複数の構成可能な複合回路要素であって、各要素インターフェースは複数のデータ入力キューと複数のデータ出力キューとを含み、前記複数の構成可能な複合回路要素のうちの第１の構成可能な複合回路要素は第１のアクションを有し、前記複数の構成可能な複合回路要素のうちの第２の構成可能な複合回路要素は第２のアクションを有し、前記第１の構成可能な複合回路要素の前記要素インターフェースの少なくとも１つの出力キューは前記第２の構成可能な複合回路要素の前記要素インターフェースの前記少なくとも１つの入力キューへの第１のデータ・リンクを有する、複数の構成可能な複合回路要素と、
複数の通信要素であって、前記複数の通信要素のうちの第１の通信要素が前記集積回路の前記複数のアレイのうちのそれぞれの中にある前記複数の複合回路要素の前記複数のデータ入力キューのうちの全てのデータ入力キューを前記複数の複合回路要素の前記複数のデータ出力キューのうちの全てのデータ出力キューに結合する完全相互接続バスを備え、前記複数の通信要素のうちの第２の通信要素が前記複数の複合回路要素の前記複数のアレイのうちの隣接するアレイの間にデータ・ワードをバッファリングし転送する前記集積回路の隣接するアレイのそれぞれの完全相互接続バスと結合する複数のクラスタ間キューを備え、前記複数の通信要素のうちの第３の通信要素が階層相互接続を備え、前記第１のデータ・リンクが前記複数のクラスタ間キューのうちの１つのクラスタ間キューを通じて、または前記完全相互接続バスを通じている複数の通信要素と、
前記複数の構成可能な複合回路要素、および前記複数の通信要素に結合されている、前記第１の構成可能な複合回路要素の検出された障害に応答して、前記第１のアクションを前記複数の複合回路要素のうちの第３の構成可能な複合回路要素に割り当て、前記完全相互接続バスを通じてまたは前記複数のクラスタ間キューのうちの１つのクラスタキューを通じて前記第３の複合回路要素の前記要素インターフェースの前記少なくとも１つの出力キューから前記第２の複合回路要素の前記要素インターフェースの前記少なくとも１つの入力キューへの第２のデータ・リンクを形成するように適合された状態機械要素とを備える装置。
【請求項３７】
前記障害は、
前記複数の構成可能な複合回路要素のうちの少なくとも１つの構成可能な複合回路要素により実行される定期的診断機能、前記複数の構成可能な複合回路要素のうちの少なくとも１つの構成可能な複合回路要素の選択されたコンテキストとして実行されるバックグラウンド診断機能、または同じ構成可能な回路要素タイプの複数の構成可能な複合回路要素により実行される比較テストの動作判定のうちの少なくとも１つにより検出される請求項３６に記載の装置。
【請求項３８】
前記状態機械要素は、さらに、前記第１の構成可能な複合回路要素のすべての活動を中断し、前記第１の構成可能な複合回路要素を格納されている利用可能性テーブルまたはマップ内で利用不可能と指定するように適合される請求項３６に記載の装置。
【請求項３９】
前記状態機械要素は、さらに、前記第１の構成可能な複合回路要素の障害を検出し、前記第１のアクションを前記第３の構成可能な複合回路要素にリアルタイムで送るように適合される請求項３６に記載の装置。
【請求項４０】
前記状態機械要素は、さらに、前記複数の通信要素のうちの１つの通信要素の障害の検出に応答して、前記複数の通信要素のうちの少なくとも１つの他の通信要素を通じて前記第２の仮想データ・リンクを形成するように適合される請求項３６に記載の装置。
【請求項４１】
前記第１の構成可能な複合回路要素および前記第３の構成可能な複合回路要素が、同じ構成可能な回路要素タイプを有する場合、前記状態機械要素は、さらに、前記第１の構成可能な複合回路要素の少なくとも１つの構成を前記第３の構成可能な複合回路要素に移動するように適合される請求項３６に記載の装置。
【請求項４２】
前記状態機械要素は、さらに、前記複数の構成可能な複合回路要素のうちで利用可能である構成可能な複合回路要素の個数を保持し、対応する機能の実行のため複数のコンテキストを有する前記第１の構成可能な複合回路要素の障害の検出に応答して、前記複数の構成可能な複合回路要素のうちの１つまたは複数の利用可能である構成可能な複合回路要素に前記複数のコンテキストを与えて前記対応する機能を実行するように適合される請求項３６に記載の装置。
【請求項４３】
前記状態機械要素は、さらに、始動時に、前記第１の機能を前記第１の構成可能な要素に割り当て、前記第１の機能の実行のため前記複数の構成可能な要素のうちの他の構成要素により複数の入力および出力データ経路を確立するように適合される請求項３６に記載の装置。
【請求項４４】
装置であって、
それぞれの回路アレイが
複数の複合回路要素であって、それぞれの複合回路要素は要素インターフェースと複数の回路要素タイプのうちの１つの回路要素とを含み、それぞれの要素インターフェースは要素コントローラと、複数のデータ入力キューと、複数のデータ出力キューとを含み、前記複数の複合回路要素のうちの第１の複合回路要素は複数の異なる回路要素タイプのうちの第１のタイプおよび第１のアクションを有し、前記複数の複合回路要素のうちの第２の複合回路要素は複数の異なる回路要素タイプのうちの第２のタイプおよび第２のアクションを有し、前記第１の複合回路要素は前記第２の構成可能な複合回路要素への第１のデータ・リンクを有する、複数の複合回路要素と、
複数の通信要素であって、前記複数の通信要素のうちの第１の通信要素が前記集積回路の前記複数のアレイのうちのそれぞれの中にある前記複数の複合回路要素の前記複数のデータ入力キューのうちの全てのデータ入力キューを前記複数の複合回路要素の前記複数のデータ出力キューのうちの全てのデータ出力キューに結合する完全相互接続バスを備え、前記複数の通信要素のうちの第２の通信要素が前記複数の複合回路要素の前記複数のアレイのうちの隣接するアレイの間にデータ・ワードをバッファリングし転送する前記集積回路の隣接するアレイのそれぞれの完全相互接続バスと結合する複数のクラスタ間キューを備え、前記第１のデータ・リンクが前記複数のクラスタ間キューのうちの１つのクラスタ間キューまたは前記完全相互接続バスを通じている複数の通信要素と、
前記複数の複合回路要素、および前記複数の通信要素に結合され、前記第１の複合回路要素が利用不可能になったことに応答して前記第１のアクションを前記複数の複合回路要素のうちの第３の複合回路要素に割り当て、前記第３の複合回路要素と前記第２の複合回路要素との間に第２のデータ・リンクを形成するように適合された状態機械要素であって、前記第２のデータ・リンクが前記完全相互接続バスまたは前記複数のクラスタ間キューのうちの１つのクラスタ間キューを使用する状態機械要素とを備える複数の回路アレイを備える装置。
【請求項４５】
前記第１の回路要素は、検出された障害により利用不可能になっている請求項４４に記載の装置。
【請求項４６】
前記障害は、前記複数の複合回路要素のうちの少なくとも１つの複合回路要素により実行される定期的診断、前記複数の複合回路要素のうちの少なくとも１つの複合回路要素の選択されたコンテキストとして実行されるバックグラウンド診断、または同じ回路要素タイプの複数の複合回路要素により実行される比較テストの複数の動作判定のうちの少なくとも１つにより検出される請求項４５に記載の装置。
【請求項４７】
前記状態機械要素は、さらに、前記第１の複合回路要素のすべての活動を中断し、前記第１の複合回路要素を格納されている利用可能性テーブルまたはマップ内で利用不可能と指定するように適合される請求項４５に記載の装置。
【請求項４８】
前記第１の複合回路要素は、前記第１のアクションに比べて高い優先度を有する第３のアクションを前記状態機械要素により割り当てられたことで利用不可能になっている請求項４４に記載の装置。
【請求項４９】
前記第３の複合回路要素は、複数の構成可能な要素タイプのうちの第１の構成可能な要素タイプを有し、前記状態機械要素は、さらに、前記第１のアクションを前記第３の複合回路要素の第１の構成として割り当てるように適合される請求項４４に記載の装置。
【請求項５０】
前記第１のデータ・リンクは、第１の仮想データ・リンクである請求項４４に記載の装置。
【請求項５１】
前記第１の回路アレイの第１の状態機械要素は、さらに、第２の通信要素を通してルーティング要求を前記複数の回路アレイの他の回路アレイの複数の他の状態機械要素に転送することにより、また前記第１のデータ・リンクの第１の通信要素へのルーティングを行うことにより前記第１のデータ・リンクを形成するように適合される請求項４４に記載の装置。
【請求項５２】
それぞれの対応する要素インターフェースは、
前記対応する回路要素に結合され、複数の構成を対応するコンテキストとして格納するように適合された第１のメモリをさらに備える請求項４４に記載の装置。
【請求項５３】
それぞれの対応するコンテキストは、前記対応する回路要素、および１つまたは複数のデータ入力元または１つまたは複数のデータ出力先のいずれかの構成を定義する請求項５２に記載の装置。
【請求項５４】
前記要素コントローラは、前記複数のコンテキストのうちの選択されたコンテキストについて、前記選択されたコンテキストに対応する選択された入力キューに入力データが入っている場合、前記選択されたコンテキストに対応する選択された出力キューにデータを受け入れる余地がある場合、および前記選択されたコンテキストに対応するステータス・ビットが実行に関してセットされている場合に、前記回路要素による前記選択されたコンテキストの実行を指令するように適合される請求項５２に記載の装置。
【請求項５５】
前記第１の複数の通信要素は、さらに、
前記状態機械要素に結合されている、少なくとも１つの第１のデータ・ワードのルーティングと少なくとも１つの第２のデータ・ワードのスイッチングの両方を行うように適合されたメッセージ・マネージャ回路を備える請求項４４に記載の装置。
【請求項５６】
さらに、
前記状態機械要素に結合されている、分散されている複数のメモリ複合回路要素用の統一アドレス空間を形成するように適合されたメッセージ・マネージャ回路を備える請求項４４に記載の装置。
【請求項５７】
装置であって、
それぞれ要素インターフェースと複数の回路要素タイプのうちの１つの回路要素とを備える複数の複合回路要素であってそれぞれの要素インターフェースが要素コントローラと、複数のデータ入力キューと、複数のデータ出力キューと、複数の構成を対応する複数のコンテキストとして格納するメモリとを含む複数の複合回路要素と、
複数の通信要素であって、前記複数の通信要素のうちの第１の通信要素が前記集積回路の複数のアレイのうちのそれぞれの中にある前記複数の複合回路要素の前記複数のデータ入力キューのうちの全てのデータ入力キューを前記複数の複合回路要素の前記複数のデータ出力キューのうちの全てのデータ出力キューに結合する完全相互接続バスを備え、前記複数の通信要素のうちの第２の通信要素が前記複数の複合回路要素の前記複数のアレイのうちの隣接するアレイの間にデータ・ワードをバッファリングし転送する前記集積回路の隣接するアレイのそれぞれの完全相互接続バスと結合する複数のクラスタ間キューを備え、前記複数の通信要素のうちの第３の通信要素が階層相互接続を備える複数の通信要素と、
前記完全相互接続バスを通じて前記複数の複合回路要素に結合されている、第１の機能を第１の複合回路要素に割り当て、第２の機能を第２の複合回路要素に割り当て、前記第１の複合回路要素と前記第２の複合回路要素との間に第１のデータ・リンクを形成するように適合され、さらに、前記第１の複合回路要素の検出された障害に応答して、前記第１の機能を前記複数の複合回路要素のうちの第３の複合回路要素に割り当て、前記第３の複合回路要素と前記第２の複合回路要素との間に第２のデータ・リンクを形成するように適合された状態機械要素と、
構成バスと、
外部バスまたは外部メモリとの通信インターフェースを形成するメッセージ・マネージャ回路とを備える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、集積回路に関するものであり、より具体的には、移動可能機能、フォールト・トレランス（耐障害性）機能、および回復機能のための、分散された構成可能な回路要素、分散された通信回路要素、ならびに分散された制御回路要素に関するものである。
【背景技術】
【０００２】
歴史的に、製造後に構成可能な集積回路（「ＩＣ」）は、同一のロジック・ゲートまたは他の要素の配列からなる、フィールド・プログラマブル・ゲート・アレイ（「ＦＰＧＡ」）が多数であった。いくつかの集積回路実施形態では、ゲート・アレイは、さらに、選択された計算の構成可能なアプリケーション特有の加速化を行うＦＰＧＡコンポーネント向けに、１つまたは複数のマイクロプロセッサ・コアに結合される。ＦＰＧＡ内のロジック要素は、典型的には、別のハード配線された特定用途向けコンポーネントで直接このような高度な機能を実現することなく、加算、減算、または比較などのより高度な機能を実行するデータ入力および出力（「Ｉ／Ｏ」）を通じて接続されうるゲート・アレイとして非常に「きめ細かい」。ＦＰＧＡのゲート・アレイを構成するプロセスは、典型的にはシリアル構成バスを使用し、比較的低速であるため、ＦＰＧＡは、一般に、機能の即座の変更に合わせてリアルタイムで再構成することはできなかった。
【０００３】
他の状況では、構成可能なＩＣは、マルチメディア処理、算術演算処理、および通信機能などの重要な機能を実行できる大規模な（または「きめの粗い」）構成可能なロジック要素を伴っていた。これらの大規模構成可能なロジック要素は、きわめて高い機能性を伴う加速化をもたらすが、構成可能なロジック要素のそれぞれのグループは、典型的には異なり、その機能を実行するためには別々にプログラミングを行う必要がある。それに加えて、このような大規模な構成可能なロジック要素は、他の機能に翻訳可能ではなく、特定用途向けＩＣ（「ＡＳＩＣ」）と似た制約のあることを示している。
【０００４】
構成可能な機能も、マイクロプロセッサ、ＡＳＩＣ、およびメモリＩＣに加えられている。例えば、メモリＩＣでは、余分な、または冗長な行と列が組み立てられており、その後試験を行って、選択された行と列に欠陥のあることが判明するかもしれない場合、影響を受けるそれらのＩＣ領域は、潜在的に使用可能であるメモリＩＣのバランスを保ちつつ、無効化され、また冗長性があるため、記憶容量の仕様を満たすことができる。他の状況では、ある程度の構成可能性を付加して、設計ミスおよびＩＣが製造された後の他の欠陥を是正したり、構成可能なＩ／Ｏおよび構成可能なデータ経路幅などに対する入力および出力の修正を行えるようにできる。
【０００５】
それに加えて、構成した後、および動作中に、このようなＦＰＧＡ、ＡＳＩＣ、プロセッサ、および他の構成可能なロジックは、回復性を示さない。例えば、動作中にＩＣの一部に障害が生じた場合、ＩＣ全体が即座に機能しなくなり、すべての機能性を失う。ＩＣは、オフラインにされるか、または取り除かれ、診断され、そして障害の具合に応じて、場合によっては再構成されうるが、そのようなＩＣは、リアルタイム再構成および機能をそのＩＣの影響のない部分に移動する能力を持たない。
【０００６】
「ｅＦｕｓｅ」と呼ばれる、ＩＢＭにより創り出された他の技術では、エレクトロマイグレーションを利用して、ＩＣの選択された、または欠陥のある部分を無効化する微細電気ヒューズを作成するが、その際に、設計上の欠陥、製造時の欠陥の修正および電力消費の管理などのために、ゲートを開いたり、閉じたりして、チップ・ロジックの配線経路をＩＣの残りの正常な部分に変更するソフトウェアが使用される。例えば、ｅＦｕｓｅ技術では、欠陥のあるメモリの行および列を無効化することができ、ｅＦｕｓｅソフトウェアにより、メモリの無欠陥部分にデータが格納されるようにメモリ・アドレスを変更することができる。
【０００７】
しかし、これらの技術はどれも、１００ｎｍ以下のＩＣ製造において現在生じている、増加する一方の欠陥の対策とはなっていない。より具体的には、ＩＣフィーチャー・サイズが９０ｎｍよりも小さくなる一方なので、欠陥レベルが増大し、ＩＣの歩留まりが減少する。それに加えて、ＩＣは、最初は、意図されている用途で動作するのには十分に欠陥がないといえるが、フィーチャー・サイズが小さくなってくると、トンネル効果およびエレクトロマイグレーション効果などのせいで、動作中のＩＣ故障の確率も増大する。
【０００８】
それに加えて、これらの従来技術のそれぞれが、設計上の欠陥を修正し、微小な製造上の欠陥を回避する能力など、独自の利点を有しているが、これらの従来技術はどれも、ＩＣ動作中に、時間の経過とともに維持可能な回復をもたらすことはない。欠陥が製造時に生じたものであろうと、かなり経ってから、ＩＣ使用時に生じたものであろうと、これらの知られている技術は、どうしても、ある種の欠陥とあるレベルの欠陥に適応することができず、ＩＣ全体が完全に機能しなくなる。このような故障は、多くの場合、破滅的であり、ＩＣ全体が即座に、また警告なしに、機能しなくなる。例えば、マイクロプロセッサのある領域に障害が生じた場合、そのマイクロプロセッサ全体が即座に使えなくなる。
【０００９】
これらのさまざまな技術では、あるレベルの回復性を実現しようとして、単に何らかの冗長性を加えただけであった。例えば、複数のプロセッサを同じＩＣ上に置き、これにより、欠陥のせいで１つのプロセッサが故障した場合、冗長プロセッサが引き継ぐことができる。しかし、このような状況では、冗長プロセッサは、それ以前には完全にアイドル状態で、未使用であったか、または前に動作していた機能が、破棄され、完全に失われてしまっている。いずれの場合も、この回復機能は、ＩＣ面積の約２倍の面積および製造原価の著しい増大と引き替えになる。それに加えて、このような基本的な冗長性に対する取り組みでは、すべての冗長コンポーネントにおいて発生しうる欠陥を考慮しておらず、たとえ小さな欠陥であってもそのようなコンポーネントの故障の原因となりうるのである。
【００１０】
そのため、問題がない場合には使われることのない冗長性というコストを掛けずに、コンポーネントに影響を及ぼす可能性のある製造または使用時の欠陥があるにもかかわらず著しい回復性およびロバスト性を持つ集積回路アーキテクチャが、いぜんとして必要である。このようなＩＣは、欠陥が生じたときに、機能がリアルタイムまたはほぼリアルタイムで、影響を受けない領域に移動できるように、適応化が進められるべきである。このような技術は、そのような移動可能な機能を許容し、しかもプログラム全体を完全冗長プロセッサに移動しなくて済む、ＩＣ向けの構成（プログラミングまたは他のソフトウェア）に対応しなければならない。それに加えて、そのようなＩＣは、突発的に故障するのではなく、欠陥または問題の増加に応じて可能な範囲で機能が維持されるグレースフル・デグラデーション（ｇｒａｃｅｆｕｌ  ｄｅｇｒａｄａｔｉｏｎ）に対応すべきである。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明の例示的な実施形態は、問題がない場合には未使用のままである冗長性を有しない、著しい回復能力を有する集積回路アーキテクチャを実現する。例示的なＩＣ実施形態は、欠陥が発生した場合に必要に応じて、または新しいプログラムもしくは機能を組み込むことが望ましいときに、実行中に適応させることが可能である。例えば、欠陥が生じた場合、機能を、リアルタイムまたはほぼリアルタイムで、影響を受けない領域に移動できる。このＩＣの例示的なアーキテクチャおよびソフトウェアは、さらに、そのような移動可能な機能を許容し、プログラム全体を完全冗長プロセッサに、または問題がなければ未使用のままである計算ブロックに移動しなくて済む。それに加えて、例示的なＩＣ実施形態は、突発的に故障するのではなく、使用中に（製造に加えて）発生する可能性のある、欠陥または問題の増加とともにグレースフル・デグラデーションおよび通知を行う。
【課題を解決するための手段】
【００１２】
例示的な一実施形態では、複数の複合回路要素、複数の複合回路要素に結合されている複数の通信要素、ならびに複数の複合回路要素および複数の通信要素に結合されている状態機械要素を備える装置が実現される。それぞれの複合回路要素は、対応する要素インターフェースおよび複数の回路要素タイプの対応する回路要素を備え、それぞれの複合回路要素は少なくとも１つの入力および少なくとも１つの出力を有し、複数の複合回路要素のうちの第１の複合回路要素は複数の回路要素タイプのうちの第１の回路要素タイプを有し、複数の複合回路要素のうちの第２の複合回路要素は複数の回路要素タイプのうちの第２の回路要素タイプを有する。状態機械要素は、第１のアクションを第１の複合回路要素に割り当て、第２のアクションを第２の複合回路要素に割り当て、複数の通信要素のうちの選択された通信要素を通る、第１の複合回路要素の少なくとも１つの出力から第２の複合回路要素の少なくとも１つの入力への第１の仮想データ・リンクを形成するように適合される。
【００１３】
例示的な一実施形態では、複数の回路要素タイプは、複数の構成可能な要素タイプと、メモリ要素タイプと、複数の通信要素タイプと、複数の構成不可能な要素タイプの回路要素タイプのうちの少なくとも１つを含む。例えば、第１の回路要素タイプは、複数の構成可能な要素タイプのうちの第１の構成可能な要素タイプであり、第２の回路要素タイプは、複数の構成可能な要素タイプのうちの第２の構成可能な要素タイプであり、状態機械要素は、さらに、第１のアクションを第１の複合回路要素の第１の構成として割り当て、第２のアクションを第２の複合回路要素の第２の構成として割り当てるように適合される。状態機械要素は、さらに、第１のアクションおよび第２のアクションの実行時束縛の際に、第１のシンボリック・ネットリスト要素から第１の構成および第１の構成可能な要素タイプを取得し、第２のシンボリック・ネットリスト要素から第２の構成および第２の構成可能な回路要素タイプを取得するように適合されうる。それに加えて、第１のシンボリック・ネットリスト要素は、さらに、第１の仮想データ・リンクを第２の複合回路要素の少なくとも１つの入力へのデータ通信として指定するポインタを備え、第２のシンボリック・ネットリスト要素は、さらに、仮想データ・リンクを第１の複合回路要素の少なくとも１つの出力からのデータ通信として指定するポインタを備えることができる。
【００１４】
状態機械要素は、さらに、第１の複合回路要素と第２の複合回路要素の両方が正常に動作していると判断した後に第１のアクションを第１の複合回路要素に割り当て、第２のアクションを第２の複合回路要素に割り当てるように適合されうる。動作判定は、複数の複合回路要素のうちの少なくとも１つの複合回路要素により実行される定期的診断、複数の複合回路要素のうちの少なくとも１つの複合回路要素の選択されたコンテキストとして実行されるバックグラウンド診断、または同じ回路要素タイプの複数の複合回路要素により実行される比較テストの複数の判定のうちの少なくとも１つである。
【００１５】
状態機械要素は、さらに、第１の複合回路要素の検出された障害に応答して、第１のアクションを複数の複合回路要素のうちの、第１の回路要素タイプの回路要素を有する第３の複合回路要素に割り当てるように適合され、状態機械要素は、さらに、複数の通信要素のうちの１つの通信要素を通じて、第３の複合回路要素の少なくとも１つの出力から第２の複合回路要素の少なくとも１つの入力への第２の仮想データ・リンクを備えるように適合される。それとは別に、状態機械要素は、さらに、第１の複合回路要素の検出された障害に応答して、第１のアクションを複数の複合回路要素のうちの、第３の回路要素タイプの回路要素を有する第３の複合回路要素に割り当てるように適合され、状態機械要素は、さらに、複数の通信要素のうちの１つの通信要素を通じて、第３の複合回路要素の少なくとも１つの出力から第２の複合回路要素の少なくとも１つの入力への第３の仮想データ・リンクを備えるように適合される。例示的な一実施形態では、状態機械要素は、さらに、第１のアクションの移動のため第３の複合回路要素への参照を有する格納されている変換テーブルを使用するように適合される。
【００１６】
複数の複合回路要素は、さらに、その時点の現在状態を定期的に格納しておき、検出された障害に応答して、格納されている状態を取り出し、その格納されている状態を使用して動作を再開するように適合されうる。
【００１７】
さらに、例示的な一実施形態では、それぞれの対応する要素インターフェースは、対応する回路要素に結合されている、複数の構成を対応するコンテキストとして格納するように適合された第１のメモリと、対応する回路要素に結合されている要素コントローラと、対応する回路要素に結合されている、対応する回路要素に入力されるデータ用の複数の入力キューを備えるように適合された第２のメモリとを備える。それぞれの対応するコンテキストは、対応する回路要素、および１つまたは複数のデータ入力元または１つまたは複数のデータ出力先のいずれかの構成を定義する。要素インターフェースは、さらに、回路要素に結合されている、回路要素から出力されるデータ用の複数の出力キューを備えるように適合された第３のメモリを備えることができる。それとは別に、要素インターフェースは、入力キュー用の第２のメモリを備えることなく、出力キュー用の第３のメモリを備えることができる。例示的な一実施形態では、要素コントローラは、複数のコンテキストのうちの選択されたコンテキストについて、選択されたコンテキストに対応する選択された入力キューに入力データが入っている場合、選択されたコンテキストに対応する選択された出力キューに出力データを格納するだけの容量がある場合、および選択されたコンテキストに対応するステータス・ビットが実行に関してセットされている場合に、回路要素による選択されたコンテキストの実行を指令するように適合されている。さらに、要素コントローラは、さらに、第１のメモリ内に第１のコンテキストの部分実行の現在状態を格納し、第２のコンテキストを実行し、現在状態を取り出して、第１のコンテキストの実行を再開するように適合されうる。
【００１８】
要素コントローラは、さらに、実行可能状態にある複数のコンテキスト間のアービトレーション（調停）を行い、アービトレーションの結果、実行のため対応するコンテキストを選択するように適合されうる。例えば、アービトレーションでは、ラウンド・ロビン、優先度、最近実行、最長未実行、またはスケジュール実行の方法のうちの少なくとも１つを実装する。
【００１９】
同様に、例示的な一実施形態では、複数の通信要素のうちのそれぞれの通信要素は、さらに、対応する要素インターフェースと対応する通信回路要素とを備え、状態機械要素は、さらに、対応する要素インターフェースと対応する状態機械回路要素とを備える。
【００２０】
例示的な一実施形態では、複数の通信要素は、さらに、少なくとも１つの第１のデータ・ワードのルーティングを行い、かつ少なくとも１つの第２のデータ・ワードをスイッチングするように適合された複数の第１の通信要素と、複数の複合回路要素および複数の第１の通信要素に結合されている、複数の複合回路要素のうちの１つの複合回路要素の出力を複数の複合回路要素のうちの他の１つの複合回路要素の入力に、または複数の第１の通信要素に結合するように適合された完全相互接続要素とを備える。完全相互接続要素は、複数のスイッチ、パス・トランジスタ、マルチプレクサ、デマルチプレクサ間に分配できる。他の例示的な実施形態では、完全相互接続要素は、クロスバー・スイッチである。さらに、完全相互接続要素は、複数の１対１入力および出力データ・リンク、１つの１対多ブロードキャスト・データ・リンク、１つの多対１データ・リンクの物理データ・リンクのうちの少なくとも１つを備えるように適合されうる。
【００２１】
状態機械要素は、複数の第１の通信要素のうちの選択された第１の通信要素または完全相互接続要素のいずれかを経由する第１の仮想データ・リンクを形成できる。選択された通信要素は、さらに、第１の複合回路要素の少なくとも１つの出力から第２の複合回路要素の少なくとも１つの入力への複数の物理データ・リンクのうちの少なくとも１つの第１の物理データ・リンクを、第１の仮想データ・リンクから決定するように適合されうる。それに加えて、選択された通信要素は、さらに、対応するメモリ内に格納されているルーティング・テーブルを使用して選択された時刻または選択されたクロック・サイクルで複数の物理データ・リンクを作成するように適合される。
【００２２】
例示的な実施形態では、複数の通信要素は、さらに、複数の複合回路要素の第１のアレイと複数の複合回路要素の第２のアレイとの間で少なくとも１つの第３のデータ・ワードのルーティングまたはスイッチングを行うように適合されている複数の第２の通信要素を含む。複数の通信要素は、さらに、複数の複合回路要素の第１のアレイから少なくとも１つの第３のデータ・ワードをバッファリングし、その少なくとも１つの第３のデータ・ワードを複数の複合回路要素の隣接する第２のアレイに転送するように適合されたクラスタ間キューを備えることもできる。
【００２３】
例示的な他の実施形態では、複数の通信要素は、さらに、複数のクラスタ・キューと、複数の複合回路要素に結合されている、複数の複合回路要素のうちの１つの複合回路要素の出力を複数の複合回路要素のうちの他の１つの複合回路要素の入力に、または複数のクラスタ・キューに結合するように適合された完全相互接続要素とを備える。完全相互接続要素は、複数のスイッチ、パス・トランジスタ、マルチプレクサ、またはデマルチプレクサの間に分配されうるか、またはクロスバー・スイッチであってよく、また複数の１対１入力および出力データ・リンク、１つの１対多ブロードキャスト・データ・リンク、１つの多対１データ・リンクの物理データ・リンクのうちの少なくとも１つを備えるように適合されうる。複数の通信要素は、さらに、状態機械要素に結合されている、少なくとも１つの第１のデータ・ワードのルーティングと少なくとも１つの第２のデータ・ワードのスイッチングの両方を行うように適合されたメッセージ・マネージャ回路を備えることもできる。それに加えて、複数の通信要素は、さらに、複数の複合回路要素の第１のアレイから少なくとも１つの第３のデータ・ワードをバッファリングし、その少なくとも１つの第３のデータ・ワードを複数の複合回路要素の隣接する第２のアレイに転送するように適合された１つまたは複数のクラスタ間キューを備えることもできる。状態機械要素は、さらに、複数のクラスタ・キューのうちの選択されたクラスタ・キューまたは完全相互接続要素のいずれかを経由する第１の仮想データ・リンクを形成するように適合されうる。
【００２４】
例示的な実施形態は、さらに、状態機械要素に結合されている、外部バスまたは外部メモリとの通信インターフェースを形成するように適合されたメッセージ・マネージャ回路を備えることもできる。それに加えて、メッセージ・マネージャ回路は、さらに、分散された複数のメモリ複合回路要素用に統一アドレス空間を備えることもできる。
【００２５】
例示的な実施形態では、複数の回路要素タイプは、構成可能な算術論理演算ユニット、構成可能な乗算器、構成可能なビット並べ替え要素、構成可能な積和演算要素、構成可能なガロア乗算器、構成可能なバレル・シフター、構成可能なルックアップ・テーブル、プログラマブル・コントローラ、構成可能なコントローラ、および構成可能な複数の算術論理演算ユニットの各回路要素タイプを含むことができる。
【００２６】
例示的な実施形態では、状態機械要素は、直接的に、または複数の通信要素のうちの少なくとも１つの通信要素を通じて、複数の複合回路要素に結合されうる。他の例示的な実施形態では、状態機械要素は、複数の通信要素のうちの少なくとも１つの通信要素を通じて、複数の複合回路要素に結合されている外部コントローラまたは外部プロセッサである。典型的には、状態機械要素は、さらに、有限状態機械回路と、状態情報を格納するように適合されたメモリとを備える。
【００２７】
例示的な実施形態では、他の動作モードが備えられる。このモードでは、状態機械要素は、第１の複合回路要素の少なくとも１つの出力から第２の複合回路要素の少なくとも１つの入力への、選択された通信要素を通る第１の物理データ・リンクを形成し、状態機械要素は、さらに、第１のアクションおよび第２のアクションの実行に対応できるように適合される。
【００２８】
他の例示的な実施形態では、本発明の装置は、（１）それぞれの回路アレイが（ａ）それぞれの複合回路要素が要素インターフェースおよび複数の構成可能な要素タイプを含む複数の回路要素タイプのうちの１つの回路要素を含み、それぞれの複合回路要素が少なくとも１つの入力および少なくとも１つの出力を有する複数の複合回路要素と、（ｂ）複数の複合回路要素に結合されている、複数の複合回路要素のうちの第１の複合回路要素の出力を複数の複合回路要素のうちの第２の複合回路要素の入力に結合するように適合された完全相互接続要素と、（ｃ）完全相互接続要素に結合された複数の第１の通信要素と、（ｄ）複数の複合回路要素、完全相互接続要素、および複数の第１の通信要素に結合された状態機械要素とを備える複数の回路アレイと、（２）複数の回路アレイに結合されている、複数の第１の通信要素に結合され、複数の回路アレイの第１の回路アレイから複数の回路アレイの第２の回路アレイにデータを転送するように適合された複数の第２の通信要素を備える相互接続部とを備える。
【００２９】
他の例示的な実施形態では、本発明の装置は、複数の回路アレイを備え、複数の回路アレイのうちの少なくとも２つの回路アレイは、（ａ）それぞれ要素インターフェースと複数の構成可能な回路要素タイプのうちの１つの構成可能な回路要素とを備え、それぞれ複数の入力と複数の出力とを有する、複数の構成可能な複合回路要素と、（ｂ）複数の構成可能な複合回路要素に結合されている、複数の構成可能な複合回路要素のうちの第１の構成可能な複合回路要素の出力を複数の構成可能な複合回路要素のうちの第２の構成可能な複合回路要素の入力に結合するように適合された相互接続要素と、（ｃ）相互接続要素に結合された複数の第１の通信要素と、（ｄ）複数の構成可能な複合回路要素、完全相互接続要素、および複数の第１の通信要素に結合されている、第１のアクションを複数の構成可能な回路要素タイプのうちの第１の回路要素タイプの第１の構成可能な複合回路要素に割り当て、第２のアクションを複数の構成可能な回路要素タイプのうちの第２の回路要素タイプの第２の構成可能な複合回路要素に割り当て、第１の複合回路要素の複数の出力のうちの第１の出力から第２の複合回路要素の複数の入力のうちの第１の入力への、相互接続要素を通る、または複数の第１の通信要素の第１の通信要素を通る、第１のデータ・リンクを形成するように適合された状態機械要素とを備える。
【００３０】
他の例示的な実施形態では、本発明の集積回路は、（１）それぞれの回路アレイが（ａ）それぞれの複合回路要素が要素インターフェースおよび複数の構成可能な要素タイプを含む複数の回路要素タイプのうちの１つの回路要素を含み、それぞれの複合回路要素が少なくとも１つの入力および少なくとも１つの出力を有する複数の複合回路要素と、（ｂ）複数の複合回路要素に結合されている、複数の複合回路要素のうちの第１の複合回路要素の出力を複数の複合回路要素のうちの第２の複合回路要素の入力に結合するように適合された完全相互接続要素と、（ｃ）完全相互接続要素に結合された複数の第１の通信要素と、（ｄ）複数の複合回路要素、完全相互接続要素、および複数の第１の通信要素に結合されている、第１のアクションを複数の回路要素タイプのうちの第１の回路要素タイプの第１の複合回路要素に割り当て、第２のアクションを複数の回路要素タイプのうちの第２の回路要素タイプの第２の複合回路要素に割り当て、第１の複合回路要素の少なくとも１つの出力から第２の複合回路要素の少なくとも１つの入力への第１のデータ・リンクを形成し、第１の複合回路要素の検出された障害に応答して、第１のアクションを複数の複合回路要素のうちの第３の複合回路要素に割り当て、第３の複合回路要素の少なくとも１つの出力から第２の複合回路要素の少なくとも１つの入力への第２のデータ・リンクを形成するように適合された状態機械要素とを備える複数の回路アレイと、（２）複数の回路アレイに結合されている、複数の第１の通信要素に結合され、複数の回路アレイの第１の回路アレイから複数の回路アレイの第２の回路アレイにデータを転送するように適合された複数の第２の通信要素を備える相互接続部とを備える。
【００３１】
他の例示的な実施形態では、本発明の装置は、それぞれ要素インターフェースと複数の回路要素タイプのうちの１つの回路要素とを備え、それぞれ１つの入力と１つの出力とを有する、複数の複合回路要素と、複数の複合回路要素に結合されている、第１の機能を複数の要素タイプのうちの第１の要素タイプの第１の複合回路要素に割り当て、第２の機能を複数の要素タイプのうちの第２の要素タイプの第２の複合回路要素に割り当て、第１の複合回路要素の出力から第２の複合回路要素の入力への第１のデータ・リンクを形成するように適合された状態機械要素とを備える。
【００３２】
他の例示的な実施形態では、本発明の装置は、それぞれ対応する１つの要素インターフェースおよび複数の回路要素タイプのうちの対応する１つの回路要素を含む複数の複合回路要素であって、複数の複合回路要素のうちの第１の複合回路要素は複数の回路要素タイプのうちの第１の回路要素タイプを有し、複数の複合回路要素のうちの第２の複合回路要素は複数の回路要素タイプのうちの第２の回路要素タイプを有する複数の複合回路要素と、複数の複合回路要素に結合された複数の通信要素と、複数の通信要素に結合されている、第１のアクションを第１の複合回路要素に割り当て、第２のアクションを第２の複合回路要素に割り当て、第１の複合回路要素と第２の複合回路要素との間に第１のデータ・リンクを形成するように実行時に適合される状態機械要素とを備える。
【００３３】
他の例示的な実施形態では、本発明の装置は、それぞれ要素インターフェースと複数の回路要素タイプのうちの１つの回路要素とを備える複数の複合回路要素と、複数の複合回路要素に結合されている、第１の機能を第１の複合回路要素に割り当て、第２の機能を第２の複合回路要素に割り当て、第１の複合回路要素と第２の複合回路要素との間に第１のデータ・リンクを形成するように適合され、さらに、第１の複合回路要素が利用不可能になったことに応答して、第１の機能を複数の複合回路要素のうちの第３の複合回路要素に割り当て、第３の複合回路要素と第２の複合回路要素との間に第２のデータ・リンクを形成するように適合された状態機械要素とを備える。
【００３４】
他の例示的な実施形態では、本発明の装置は、複数の通信要素と、複数の通信要素に結合されている、それぞれ要素インターフェースおよび複数の回路要素タイプのうちの１つの回路要素を含む複数の複合回路要素であって、複数の複合回路要素のうちの第１の複合回路要素は割り当てられた第１のアクションを有し、複数の複合回路要素のうちの第２の複合回路要素は割り当てられた第２のアクションを有し、第１の複合回路要素は第２の複合回路要素への第１のデータ・リンクを有する、複数の複合回路要素と、複数の通信要素に結合されている、第１の複合回路要素が利用不可能になったことに応答して、第１のアクションを複数の複合回路要素のうちの第３の複合回路要素に割り当て、第３の複合回路要素と第２の複合回路要素との間に第２のデータ・リンクを形成するように適合された状態機械要素とを備える。
【００３５】
例示的な実施形態では、第１の複合回路要素は、検出された障害により利用不可能になっていることがある。障害は、複数の複合回路要素のうちの少なくとも１つの複合回路要素により実行される定期的診断、複数の複合回路要素のうちの少なくとも１つの複合回路要素の選択されたコンテキストとして実行されるバックグラウンド診断、または同じ回路要素タイプの複数の複合回路要素により実行される比較テストの複数の動作判定のうちの少なくとも１つにより検出されうる。例示的な実施形態では、状態機械要素は、さらに、第１の複合回路要素のすべての活動を中断し、第１の複合回路要素を格納されている利用可能性テーブルまたはマップ内で利用不可能と指定するように適合される。それに加えて、第１の複合回路要素は、第１のアクションに比べて高い優先度を有する第３のアクションを状態機械要素により割り当てられたことで利用不可能になる場合がある。
【００３６】
例示的な実施形態では、第１の複合回路要素および第３の複合回路要素はそれぞれ、複数の構成可能な要素タイプのうちの第１の構成可能な要素タイプを有し、第２の複合回路要素は、複数の構成可能な要素タイプのうちの第２の構成可能な要素タイプを有し、状態機械要素は、さらに、第１のアクションを第３の複合回路要素の第１の構成として割り当てるように適合される。状態機械要素は、さらに、第１のシンボリック・ネットリスト要素から第１の構成および第１の構成可能な要素タイプを取得するように構成されうる。第１のシンボリック・ネットリスト要素は、さらに、第２のデータ・リンクを第３の複合回路要素と第２の複合回路要素との間の仮想データ通信として指定するシンボリック・ポインタを含むことができる。
【００３７】
例示的な実施形態では、第１の複合回路要素は、複数の構成可能な要素タイプのうちの第１の構成可能な要素タイプを有し、第２の複合回路要素は、複数の構成可能な要素タイプのうちの第２の構成可能な要素タイプを有し、第３の複合回路要素は、複数の構成可能な要素タイプのうちの第３の構成可能な要素タイプを有し、状態機械要素は、さらに、第１のアクションを第３の複合回路要素の第１の構成として割り当てるように適合される。状態機械要素は、さらに、第１のアクションの移動のため第３の複合回路要素への参照を有する格納されている変換テーブルを使用するように適合されうる。
【００３８】
他の例示的な実施形態では、本発明の装置は、複数の第１の通信要素と、複数の第１の通信要素に結合された相互接続要素と、複数の第１の通信要素および相互接続要素に結合され、それぞれ１つの要素インターフェースおよび複数の構成可能な回路要素タイプのうちの１つの構成可能な回路要素を含む複数の構成可能な複合回路要素であって、それぞれの複合回路要素は少なくとも１つの入力および少なくとも１つの出力を有し、複数の構成可能な複合回路要素のうちの第１の構成可能な複合回路要素は第１のアクションを有し、複数の構成可能な複合回路要素のうちの第２の構成可能な複合回路要素は第２のアクションを有し、第１の構成可能な複合回路要素の少なくとも１つの出力は相互接続要素または複数の通信要素のうちの選択された通信要素を経由する第２の構成可能な複合回路要素の少なくとも１つの入力への第１のデータ・リンクを有する、複数の構成可能な複合回路要素と、複数の構成可能な複合回路要素、相互接続要素、および複数の通信要素に結合されている、第１の構成可能な複合回路要素の検出された障害に応答して、第１のアクションを複数の複合回路要素のうちの第３の構成可能な複合回路要素に割り当て、相互接続要素または複数の通信要素のうちの選択された通信要素を経由する第３の複合回路要素の少なくとも１つの出力から第２の複合回路要素の少なくとも１つの入力への第２のデータ・リンクを形成するように適合された状態機械要素とを備える。
【００３９】
例示的な実施形態では、第１の構成可能な複合回路要素および第３の構成可能な複合回路要素が、同じ構成可能な回路要素タイプを有する場合、状態機械要素は、さらに、第１の構成可能な複合回路要素の少なくとも１つの構成を第３の構成可能な複合回路要素に移動するように適合される。それに加えて、状態機械要素は、さらに、複数の構成可能な複合回路要素のうちで利用可能である構成可能な複合回路要素の個数を保持し、対応する機能の実行のため複数のコンテキストを有する第１の構成可能な複合回路要素の障害の検出に応答して、複数の構成可能な複合回路要素のうちの１つまたは複数の利用可能である構成可能な複合回路要素に複数のコンテキストを与えて対応する機能を実行するように適合されうる。
【００４０】
他の例示的な実施形態では、本発明の装置は、（１）それぞれの回路アレイが相互接続要素と、相互接続要素に結合された複数の第１の通信要素と、相互接続要素に結合された複数の複合回路要素であって、それぞれの複合回路要素は要素インターフェースと複数の回路要素タイプのうちの１つの回路要素とを含み、複数の複合回路要素のうちの第１の複合回路要素は第１のアクションを有し、複数の複合回路要素のうちの第２の複合回路要素は第２のアクションを有し、第１の複合回路要素は相互接続要素または複数の第１の通信要素のうちの選択された第１の通信要素を経由する第２の構成可能な複合回路要素への第１のデータ・リンクを有する、複数の複合回路要素と、複数の複合回路要素、完全相互接続要素、および複数の第１の通信要素に結合され、第１の複合回路要素が利用不可能になったことに応答して第１のアクションを複数の複合回路要素のうちの第３の複合回路要素に割り当て、相互接続要素または複数の第１の通信要素のうちの選択された第１の通信要素を経由して第３の複合回路要素と第２の複合回路要素との間に第２のデータ・リンクを形成するように適合された状態機械要素とを備える複数の回路アレイと、（２）複数の第１の通信要素に結合されている、複数の回路アレイの第１の回路アレイから複数の回路アレイの第２の回路アレイにデータを転送するように適合された複数の第２の通信要素とを備える。
【００４１】
例示的な実施形態では、第１の回路アレイの第１の状態機械要素は、さらに、第２の通信要素を通してルーティング要求を複数の回路アレイの他の回路アレイの複数の他の状態機械要素に転送することにより、また第１のデータ・リンクの第１の通信要素へのルーティングを行うことにより第１のデータ・リンクを形成するように適合される。
【００４２】
他の例示的な実施形態では、発明の自己回復集積回路が実現され、この集積回路は、第１の複数の複合回路要素であって、第１の複数の複合回路要素のうちの第１の複合回路要素が第１の機能を実行するように適合されている第１の複数の複合回路要素と、第１の複数の複合回路要素に結合された複数の通信要素と、第１の機能を実行するために複数の通信要素のうちの少なくとも１つの通信要素を通る第１の複数のデータ・リンクを経由して第１の複合回路要素に結合された第２の複数の複合回路要素と、第１の複数の複合回路要素に結合され、第１の複合回路要素が利用不可能になったことに応答して第１の機能を付与するように第１の複数の複合回路要素のうちの第２の複合回路要素を適合させ、また第１の機能を実行するために第２の複合回路要素と第２の複数の複合回路要素との間に第２の複数のデータ・リンクを形成するように適合された状態機械要素とを備える。
【００４３】
他の例示的な実施形態では、本発明の装置は、それぞれ要素インターフェースと複数の回路要素タイプのうちの１つの回路要素とを備える複数の複合回路要素と、複数の複合回路要素に結合されている、第１の機能を第１の複合回路要素に割り当て、第２の機能を第２の複合回路要素に割り当て、第１の複合回路要素と第２の複合回路要素との間に第１のデータ・リンクを形成するように適合され、さらに、第１の複合回路要素の検出された障害に応答して、第１の機能を複数の複合回路要素のうちの第３の複合回路要素に割り当て、第３の複合回路要素と第２の複合回路要素との間に第２のデータ・リンクを形成するように適合された状態機械要素とを備える。
【００４４】
これらおよび追加の実施形態は、以下でさらに詳しく説明される。本発明の多数の他の利点および特徴は、本発明およびその実施形態の以下の詳細な説明、請求項、ならびに付属の図面からすぐに明らかになるであろう。
【００４５】
本発明の目的、特徴、および利点は、さまざまな図面において同一のコンポーネントを識別するために類似の参照番号が使用され、さまざまな図面において選択されたコンポーネント実施形態の追加のタイプ、インスタンス化、または変更形態を識別するために英字を伴う類似の参照番号が使用される、本明細書の一部をなす付属の図面および実施例と併せて考察する際に以下の開示を参照するとよりわかりやすい。
【図面の簡単な説明】
【００４６】
【図１】本発明の教示による例示的な装置実施形態の回復性を例示する高水準または概念水準図である。
【図２】本発明の教示による例示的な第１の装置実施形態を例示するブロック図である。
【図３】本発明の教示による例示的な第２の装置実施形態を例示するブロック図である。
【図４】本発明の教示による例示的なデータ・パケットおよびデータ・ワード・シーケンスを示す図である。
【図５】本発明の教示による第１の例示的な回路クラスタを示すブロック図である。
【図６】本発明の教示による第２の例示的な回路クラスタを示すブロック図である。
【図７】本発明の教示による第３の例示的な回路クラスタを示すブロック図である。
【図８】本発明の教示による例示的な回路クラスタ内の例示的な複合回路要素をより詳細に示すブロック図である。
【図９】本発明の教示による例示的な乗算器の構成可能な要素のブロック図である。
【図１０】本発明の教示による例示的なトリプルＡＬＵを備える構成可能な要素のブロック図である。
【図１１】本発明の教示による例示的なコンパイル・プロセスを示す高水準流れ図である。
【図１２】本発明の教示による例示的なオペレーティング・システムまたはプロセスを示す高水準流れ図である。
【図１３】本発明の教示による例示的な装置内でコンテキストが利用可能かどうかを判定するための例示的な組み合わせロジック回路を示すブロック図である。
【図１４Ａ】本発明の教示による例示的なアルゴリズムまたはシンボリック・ネットリスト実行時束縛プロセスを示す流れ図である。
【図１４Ｂ】本発明の教示による例示的なアルゴリズムまたはシンボリック・ネットリスト実行時束縛プロセスを示す流れ図である。
【図１４Ｃ】本発明の教示による例示的なアルゴリズムまたはシンボリック・ネットリスト実行時束縛プロセスを示す流れ図である。
【図１４Ｄ】本発明の教示による例示的なアルゴリズムまたはシンボリック・ネットリスト実行時束縛プロセスを示す流れ図である。
【図１５】本発明の教示による第１の例示的な再割り当ておよび再束縛プロセスを示す流れ図である。
【図１６】本発明の教示による例示的な構成および制御ワードを示す図である。
【図１７】本発明の教示による例示的な装置内でコンテキストの準備ができているかどうかを判定するための例示的な組み合わせロジック回路を示すブロック図である。
【図１８】本発明の教示による第４の例示的な回路クラスタを示すブロック図である。
【図１９】本発明の教示による例示的な第３の装置実施形態を例示するブロック図である。
【発明を実施するための形態】
【００４７】
本発明は、多くの異なる形態の実施形態を受け入れる余地があるが、特定の実施例およびその実施形態が図面に示され、また本明細書において詳細に説明されているが、ただし、本開示は、本発明の原理を例示するものとして考えられるべきであり、本発明を例示されている特定の実施例および実施形態に制限することを意図されていないこと、また説明されている実施形態の多数の変更形態もしくは修正形態が可能であり、同等のものであると考えられることが了解されることを条件とする。この点に関して、本発明に合致する少なくとも１つの実施形態を説明するのに先立って、本発明は、その応用例において、上述の、後述の、図面に例示されている、または実施例において説明されているようなコンポーネントの構造の詳細ならびにコンポーネントの配列に限定されないことは理解されるであろう。本発明に合致する方法、システム、および装置は、他の実施形態にも対応することができ、またさまざまな方法で実施および実行されうる。また、本明細書で使用される語法および術語は、以下に記載される要約書とともに、説明を目的としたものであり、制限するものとしてみなされるべきではないことも理解されるであろう。
【００４８】
上述のように、本発明のＩＣアーキテクチャの最も新規性の高い特徴の１つは、回復性であり、製造時の欠陥、ＩＣを使用する際に生じうる不具合への適応、および新しい機能、サービス、アルゴリズム、および他のイベントに対する適応性をもたらすものである。本発明のＩＣアーキテクチャの回復性とロバスト性により、さまざまな欠陥を含んで製造された本発明のＩＣがそのように欠陥があってもきわめて利用可能性が高く、また完全に機能するため、ＩＣ製造の歩留まりを向上させることができる。
【００４９】
それに加えて、動作時のこの回復性は、「ニューラル」つまり生物的自己回復機能として説明することができるが、それというのも、ＩＣの一部が損傷したり、他の何らかの形で使用不能になった場合でも、ＩＣのそれ以外の部分が有効に「リクルート」される、つまり損傷した部分の機能を引き継いで実行するように再割り当てされるからである。それに加えて、以下で詳しく説明するように、機能が再割り当てされると、新しい制御およびデータ経路も作成され、移動された演算は他のＩＣ演算で継ぎ目なく実行を続ける。このような適応回復および自己回復機能は、選択された実施形態に応じて、リアルタイムで、またはほぼリアルタイムで実行されうる。これにより、ＩＣは、十分なコンピューティング資源が動作可能な状態にあれば、途絶することなく動作し続けることができる。このような回復性のおかげで、ＩＣに損傷が発生した場合に、突発的故障になることなく、実行のグレースフル・デグラデーションが可能になり、このような回復性は、健康安全関係のアプリケーションでは特に重要である。
【００５０】
以下でさらに詳しく説明されるように、本発明の例示的な実施形態のいくつかの特徴を用いることで、そのような回復性、継続的動作、および最後のグレースフル・デグラデーションが可能になる。第１に、ＩＣまたは他のデバイスは、複数の「複合」回路要素（さまざまなタイプの計算要素、統一Ｉ／Ｏインターフェース、および統一制御構造を備える）からなり、これらの複合回路要素は、効果的に交換可能または代替え可能であり、ある要素の機能が失われた場合に、その機能は、他の複合回路要素が利用可能であればその複合回路要素（同一または類似の）により引き継がれうる。第２に、複数の計算要素は、実質的にどのような機能であってもその機能を実行できるように選択される、つまり、計算完備である。第３に、制御機能は、本明細書では「状態機械要素」または「有限状態機械要素」と呼ばれる複数の回路「クラスタ」コントローラ間に分散され、これにより、制御機能は、必要に応じて、それらの分散されたコントローラ間に移動されうる。第４に、複合回路要素および／またはその相互接続部は、構成可能であり、機能の移動ならびにデータおよび制御経路のそれに対応するルーティングを補助する。第５に、選択されたすべての演算は、初期実行時にデバイス内で割り当てられ、束縛され、また対応する機能を他の複合回路要素に移動し、演算を続けるために必要に応じて、その後、再割り当ておよび再束縛されうる。
【００５１】
図１は、本発明の教示による例示的な装置１００実施形態のそのような回復性を例示する高水準または概念水準図である。図１に例示されているように、図２〜３を参照しつつ例示され説明されているさまざまなマトリクス１５０など、ＩＣとして具現化されている、装置１００のさまざまな部分は、典型的な自動車、他の車両、またはコンピュータ化されたシステム、もしくは複合システムに関連する可能性のあるものなどの、複数の機能を同時に実行するために使用される。期間「α」において、ＩＣ部分１０２は、アンチロック・ブレーキング（ＡＢＳ）機能を受け持ち、ＩＣ部分１０４は、トラクション・コントロール（ＴＲＡＣ．）機能を受け持ち、ＩＣ部分１０６は、ビデオまたはその他のマルチメディア機能を受け持ち、ＩＣ部分１０８は、衛星もしくは無線リンクなどを介してナビゲーション（ＮＡＶＩＧ．）機能を受け持っている。
【００５２】
期間「β」において、ＩＣ部分１０２の領域１１０（「Ｘ」のマークが付いている）は、物理的磨耗またはＩＣに対する他の損傷などにより使用不可能になった。このような損傷は、セルフテストまたは以下でさらに詳しく説明される他の手段を介して判定されうる。ＡＢＳは、高優先度機能であるため、そこで、領域１１０内で実行される機能は、車両環境における動作に対しては低い優先度を有する、すでにビデオ機能を実行している、領域１１２に再割り当て（または束縛）される。以下でさらに詳しく説明されるように、この再割り当てプロセスの一部として、新しいデータおよび制御経路が作成されるので、新たに割り当てられた領域は、その再割り当てがまったく起こっていなかったかのように、透過的に、ＩＣの他の領域と適切に通信を続ける。この領域に割り当てられた新しい機能の性質と範囲に応じて、ＩＣ部分１０６は、そのビデオ機能の実行を継続するか、または継続しないか、あるいは低い帯域幅または遅い速度でこの機能を実行することができる。いずれの場合も、ＩＣ  １００の損傷にもかかわらず、より高い優先度のＡＢＳ機能が、動作し続け、突発的な故障は発生していない。
【００５３】
その後、期間「γ」において、ＩＣ部分１０８の領域１１４および１１６（「Ｘ」のマークが付いている）は、使用不可能になっており、それらの機能は、それぞれ、領域１１８および１２０に再割り当てされる。この場合、（領域１０４の）トラクション・コントロールは、一般に、ナビゲーション・システムの動作に比べて高い優先度を有していることがありうるため、領域１１８が利用可能であり、トラクション・コントロール機能によって完全には使用されていなかった可能性がある（例えば、後述のように１つまたは複数の複合回路要素および／またはコンテキストが利用可能であった）。しかし、ＩＣのデグレードされた部分が多いと、例えば、ＩＣ交換のため近い将来車両を整備に出すなどの信号または他の指示がユーザーに送られる可能性がある。それに加えて、上述のように、また以下でさらに詳しく説明されるように、再割り当てされる機能についてターゲット先が利用可能かどうかに応じて、また機能がどのように再割り当てされるかに応じて、再割り当てされた機能は、もはや最適な実行ができなくなることがあるが（例えば、速度が遅くなったり、または帯域幅が狭くなることがある）、それでも実行できる。ここでもまた、性能のそのような低下は、徐々に進むのであって、突発的ではなく、十分警告できる余裕がある。
【００５４】
その後、期間「δ」において、ＩＣ部分１０４の領域１２２、１２４、１２６、および１２８（「Ｘ」のマークが付いている）は、使用不可能になっており、それらの機能は、それぞれ、領域１３２、１３８、１３４、および１３６に再割り当てされる。この場合、（領域１０４の）トラクション・コントロールは、一般に、ＩＣ部分１０６のビデオ・システムの動作に比べて優先度が高いため、より優先度の高い機能は、ＩＣの影響されない領域に再割り当てされる。この場合、ＩＣの残りの使用可能な部分が、制動およびトラクション・コントロールなどのより優先度の高い機能を実行しているので、ビデオ機能が完全に停止できることがもっともであると思われる。しかし、ＩＣのデグレードされた部分が多いと、例えば、ＩＣ交換のため即座に車両を整備に出すなどの警告、信号、または他の指示がユーザーに送られる可能性がある。ここでもまた、そのような性能の低下は徐々に進むのであって、突発的ではなく、従来技術のＩＣが完全に、急に、および潜在的に突発的に故障する原因となるＩＣの多くの部分内での著しい障害があるにもかかわらず、高い優先度の機能が動作し続けることができる。
【００５５】
装置１００の動作における生物学的な相当物は、印象的である。神経系統などの自己回復しうる生体系のように、ニューロンおよび対応する神経機能の喪失を伴う脳卒中などの損傷が発生した場合、他の既存のニューロンがリクルートされ、新しい接続（シナプス）が形成され、損傷したニューロンによりそれまでに実行されていた機能を引き継ぎ、復元する。装置１００の場合、ＩＣの１つまたは複数の部分に損傷が発生した場合、ＩＣの他の既存部分（回路クラスタおよび複合回路要素（後述））がリクルートされ、新しい接続が形成され、ＩＣの損傷領域によりそれまで実行されていた機能を引き継ぎ、復元する。その結果、生体系のように、装置１００は、自己回復し、ＩＣの損傷が生じているにもかかわらず進行中の機能を有効にできる。
【００５６】
Ａ．装置のアーキテクチャ
図２〜３は、典型的には１つのＩＣまたは１つのＩＣの一部として具現化される、本発明の教示による、例示的な第１および第２の装置１００、１４０を詳細レベルが上がる順に示すブロック図である。例示されているように、装置１００、１４０は、分散度が高く、計算的に「フラット」であり、すべての計算が複数の複合回路要素２６０により実行される。「アクション」は、乗算またはビット操作などの、複合回路要素２６０により（組み込まれている計算またはその他のタイプの回路要素２７０を通じて）実行されるタイプの機能または活動である。例示されているように、さまざまなタイプの複合回路要素２６０があり、異なるタイプの複合回路要素（「複合要素」（「ＣＥ」）と等しく呼ばれるか、または略称される）ＣＥＡ、ＣＥＢ、ＣＥＣ、ＣＥＤ、ＣＥＥ、およびＣＥＭとして例示されており、これらは異なるアクションを実行し、また構成可能である場合も、構成不可能である場合もある（図５〜８を参照しつつ例示され、説明されている）。複数の複合回路要素２６０は、後述の他の回路構造とともに、第１のグルーピングとして、対応する複数の回路「クラスタ」２００にグループ化される。さまざまなグルーピングが、さらに、対応するレベルで、複数の複合回路要素２６０のアレイとして考えられうる。
【００５７】
そこで、装置１００、１４０は、複数のレベルに論理的に分割されうるか、または複数のレベルからなり、この低位のレベルは「クラスタ」レベル（または第１のアレイ）と呼ばれ、次いで複数の回路クラスタ２００はさまざまな（第２の）通信要素２１０および第２のチャネル（またはバス構造）２２０を通じて、第２のグルーピングとして、クラスタ・グルーピングまたは「スーパークラスタ」（複数のスーパークラスタ１８５）と呼ばれる、中間レベル（または第２のアレイ）にグループ化され、これらはさらに、さまざまな（第３の）通信要素１９０および第３のチャネル（またはバス構造）１９５を通じて、第３のグルーピングとして、「マトリクス」レベル（複数のマトリクス１５０）またはユニット・レベル（または第３のアレイ）と呼ばれる、上位のレベルにグループ化され、これらはさらに、第４のチャネル（またはバス構造）１６０を通じて、第４のグルーピングまたはアレイとして、装置１００、１４０またはデバイス・レベルにグループ化される。
【００５８】
さまざまな通信チャネル（例えば、複数のバスまたはバス構造）１６０、１９５、２２０、および通信要素１９０、２１０、２５０は、本発明の相互接続１５５と総称され、またまとめて定義され、これにより、さまざまなクラスタ２００と他のＩＣコンポーネントとの間のデータおよび制御情報をやり取りすることができる。
【００５９】
装置１００、１４０はそれぞれ、典型的には、集積回路として具現化されるが、回路基板、配線網、ネットワーク・メッシュなどに実装されている他のＩＣに結合されるといった形で接続される、独立のＩＣまたはより大きなＳＯＣ（「Ｓｙｓｔｅｍ−ｏｎ−ａ−Ｃｈｉｐ」）の一部またはＩＣ回路網の一部であってもよい。２つの装置実施形態１００、１４０は、外部メモリ（例えば、ＤＤＲ−２）または外部通信チャネルまたはバス（例えば、ＰＣＩまたはＰＣＩ−ｅｘｐｒｅｓｓ（ＰＣＩ−ｅ））などの、他の、外部の、または集積化されていない、ＩＣまたは他のデバイスへの入力および出力（「Ｉ／Ｏ」）を形成するために使用されるさまざまなクラスタ２００内のコンポーネントの配置（および／またはタイプ）のみが異なる。装置１４０では、そのような外部Ｉ／Ｏは、選択されたマトリクス１５０内に集中して置かれているが、装置１００では、そのような外部Ｉ／Ｏは、複数のマトリクス１５０間に分散されている。他のすべての点については、装置１００、１４０は同じである。したがって、装置１００への参照は、装置１４０として例示されている第２の実施形態を意味し、含むものと理解され、さもなければ、装置１４０は別の実施形態としてさらに説明されることはない。また、図２および３は、２つのマトリクス１５０を例示しているが、装置１００、１４０は、１つまたは複数のマトリクス１５０を含むことができること、および例示的な実施形態は、選択された適用例およびＩＣ面積および電力要件などのさまざまな設計パラメータに応じて、任意の数のマトリクス１５０を含むことができることは理解されるであろう。
【００６０】
図２〜３を参照すると、上に示されているように、装置１００は、複数のマトリクス１５０に論理的に分割されるか、または複数のマトリクス１５０からなる。それぞれのマトリクス１５０は、対応する複数の第３の通信要素１９０および第４の通信チャネル（またはバス構造）１６０を通じて結合され、それぞれ、入力および出力（「Ｉ／Ｏ」）１７０およびＩ／Ｏ  １８０（第４のチャネル（またはバス構造）１６０の）として別々に例示されている、少なくとも２つの入力および２つの出力データおよび制御経路を有する。選択された実施形態に応じて、第４のチャネル（またはバス構造）１６０（Ｉ／Ｏ  １７０および１８０を含む）は、同じバス構造を使用するデータ、構成、および制御情報とともに組み合わせた制御およびデータＩ／Ｏ経路（例示されているような）を有するか、またはそのようなデータ、構成、および制御を、異なるバスまたは相互接続構造上に分離することができる（別々には例示されていない）。例示的な一実施形態では、このマトリクス１５０レベルにおいて、そのような複数の第３の通信要素１９０は、パケット・ルーティングまたはウェイポイント回路などの外部通信回路を介して実装される。第３の通信要素１９０および／またはＩ／Ｏ  １７０、１８０のうちの１つ、またはその一部に障害が生じた場合に、他の第３の通信要素１９０および残りのＩ／Ｏ  １７０、１８０は、同一の機能を実行させるために使用することができるが、ただし、利用可能な通信帯域幅は減少する可能性がある。例示的な一実施形態では、第３の通信要素１９０は、４つの独立したアップリンク・チャネルおよび４つの独立したダウンリンク・チャネル（対応するパス構造を持つ）を有する単一の組み合わせ回路要素として実装され、それとは別に、各種チャネルも、全二重通信を行うように実装されうる。
【００６１】
例示的な実施形態において、複数の（少なくとも２つの）通信要素およびバス構造（組み合わせた制御およびデータ経路を有する）の対応するＩ／Ｏ部分のこのような使用は、さまざまな論理的階層レベルのそれぞれにおいて繰り返され、さまざまな通信要素またはＩ／Ｏ経路に障害が発生した場合に対応する回復機能を実行できる。しかし、回復力が少なくて済むか、または他の制約が課される選択された実施形態については、そのような１つまたは複数の追加の通信要素集合および対応するＩ／Ｏはオプションであり、省くこともできる。
【００６２】
次いで、それぞれのマトリクス１５０は、さまざまな階層レベルもしくはサブグループに論理的に分割され、またパケットベースのルーティング、自己ルーティング、トンネリング、または他のタイプのデータ、構成、および制御通信を実行するように適合された複数の第３の通信要素１９０など、さまざまなレベルの間の通信用の回路も伴う。より具体的には、マトリクス１５０は、複数のスーパークラスタ１８５に論理的に分割され、さらにこれらは、複数の第３の通信要素１９０および第３のチャネル（またはバス構造）１９５を通じて互いに結合され、さらに、第４のチャネル（またはバス構造）１６０および他の対応する第３の通信要素１９０を介して他のマトリクス１５０のスーパークラスタ１８５に結合される。
【００６３】
次いで、スーパークラスタ１８５は、対応する複数の回路クラスタ２００（ここでは単に「クラスタ」と略記されるか、または称される）に論理的に分割され、さらに、これらは、複合回路要素２６０と呼ばれる（またはそれと同等であるが、「複合要素」（「ＣＥ」）２６０と称され、略記される）複数の回路要素および後述の他のコンポーネント（第１の通信要素２５０および状態機械要素２９０を含む）からなる。これらのさまざまなクラスタ２００の間の通信は、複数の第２の通信要素２１０（さらに、パケットベースのルーティング、自己ルーティング、トンネリング、または他のタイプのデータ、構成、および制御通信も実行できる）および第２のチャネル（またはバス構造）２２０を通じて実現される。次いで、スーパークラスタ１８５内のさまざまなクラスタ２００は、さらに、第２のチャネル（またはバス構造）２２０、第２の通信要素２１０、第３のチャネル（またはバス構造）１９５、および第３の通信要素１９０を介して同じ、または他のマトリクス１５０の他のスーパークラスタ１８５の他のクラスタ２００に結合され、次いで、第４のチャネル（またはバス構造）１６０を介して他のマトリクスに結合される。それに加えて、オプションの変更形態として、隣接するクラスタ同士の間に「高速経路」接続を形成することができるが、これは図２の接続２１５に例示され、以下でさらに詳しく説明されている。
【００６４】
さまざまな第２および第３の通信要素２１０、１９０、およびさまざまなレベルの通信チャネル（バス構造）１６０、１９５、２２０は全体として、本発明の相互接続構造１５５を形成する。上に示されているように、第２および第３の通信要素２１０、１９０は、アドレス指定可能なクラスタ２００との間でデータ、構成、および制御の転送、ルーティング、またはスイッチングを行うことを目的として、当業で知られているように、または当業で知られるようになったとおりに実装されうる。第２および第３の通信要素２１０、１９０は、ルーティング要素、自己ルーティング要素、ウェイポイント、回路交換、ハイブリッド型ルーティングおよび回路交換要素、他のスイッチベースの通信要素、または他のタイプの通信要素として実装することができ、同等のものとして考えられる。ＩＣ製造および処理工程で利用できる導電性経路を使用して、さまざまな通信チャネル（バス構造）１６０、１９５、２２０を実装することができる。
【００６５】
例示的な実施形態では、この相互接続１５５（通信チャネル（バス構造）１６０、１９５、２２０）は、一般に、「ｎ」ビット幅であるが、ただし、数「ｎ」は選択された実施形態の目的に応じて選択される。例えば、例示的な一実施形態では、「ｎ」は１７またはそれ以上のビット数であり、この場合、１６ビット・データ・ワードと１つまたはそれ以上の制御またはシグナリング・ビットとなる。図２〜３に例示されているような１つまたは複数のバス、電線、導線、伝送媒体、または接続構造物を含む相互接続部１５５に加えて、相互接続部１５５は、さらに、ｎビット幅を受け入れ、マトリクス１５０、スーパークラスタ１８５、およびクラスタ２００の間で、データ・ワード（またはパケット）、構成ワード（またはパケット）、および／または制御ワード（またはパケット）のルーティングまたはその他の伝送を行う複数の通信要素（１９０、２１０）を備える。例示的な実施形態では、これらの通信要素（１９０、２１０）は、さらに、備えるべき相互接続性の程度に応じて、アービトレーションまたは他のルーティング競合解消を行うこともできる。
【００６６】
クラスタ２００のレベル内で、第１の通信要素２５０は、クラスタＩ／Ｏを備え、これにより、クラスタ間データ、構成、および制御ルーティング、クラスタ２００内のコンポーネントへの、またコンポーネントからの直接通信リンクまたは接続の形成、および他のクラスタ２００のコンポーネントからの、またコンポーネントへのデータ、構成、および制御ルーティングに加えてクラスタ内回路ベース（または回路交換）接続機能を実行する。例示的な実施形態では、クラスタ２００またはスーパークラスタ１８５内のメッセージ・マネージャ２６５は、さらに、構成および制御のクラスタ間通信、および任意のタイプのデータ、構成、および制御の外部入出力通信を行うためにも使用される。
【００６７】
装置１００内のレベルの数の選択は、所定の数の計算要素について、ルーティングの複雑度と比較して使用される物理的相互接続の量と釣り合うように、任意に与えられた実施形態において変えることができることに留意されたい。例示的な実施形態では、同じ数の複合回路要素２６０について、例えば、３つのレベル（レベル当たりの要素数が多い）と比較して４つのレベル（マトリクス、スーパークラスタ、クラスタ、および複合回路要素の４つのレベル）を使用することにより、バスおよび相互接続配線の量を実質的に減らすことができ、その結果、ルーティングの複雑さが増すのと引き換えに、面積および静電容量を削減することができる。
【００６８】
引き続き図２および３を参照すると、オプションまたは代替えとして、選択された実施形態に応じて、さまざまなマトリクス１５０、スーパークラスタ１８５、またはクラスタ２００のどれかのレベルで、１つまたは複数の追加のコントローラ（または同等のものとして、プロセッサ）１７５を使用することができる。例えば、実行時束縛（図１４を参照しつつ以下で説明される）の例示的な実施形態では、そのような追加のコントローラ１７５を使用するか、または代わりに１つまたは複数のコントローラとして１つまたは複数の状態機械要素２９０（後述）を使用するか、またはその両方とすることができる。例示的な一実施形態では、コントローラまたはプロセッサ１７５は、市販のプロセッサまたはマイクロプロセッサ、例えば、ＡＲＭもしくはＭｉｃｒｏ−Ｂｌａｚｅを使用して実装される。プロセッサ１７５は、さらに、別システムに入れられるか、または装置１００、１４０などのダイの一部として集積化され、任意のタイプのプロセッサもしくはコントローラとすることができるか、またはさらに、１つまたは複数のＳＭＥ  ２９０を使用して実装されうる。それに加えて、装置１００（または１４０）は、さらに、無線周波数もしくは移動体通信回路、メモリ回路、プロセッサ、マイクロプロセッサなどの、装置とともに集積化されるか、または装置と結合されうる他の回路もしくは他のデバイスなどの、他のコンポーネントを備えることもでき、このような変更形態はすべて本発明の範囲内にあると考えられる。
【００６９】
装置１００の動作への導入として、データの計算および操作が、複合回路要素２６０を通じて、複数のクラスタ２００内で実行される。これらの回路要素２６０は、例示的な実施形態ではこれらは第１の一定または固定部分、および第２の可変部分からなり、構成可能であるか、または構成不可能でありうる（複合回路要素２６０のタイプに応じて）ため、「複合」回路要素２６０と呼ばれる。より具体的には、それぞれの複合回路要素２６０は、（１）すべての複合回路要素２６０について同じである、統一、または一定の要素インターフェースおよび制御２８０、ならびに（２）図５〜８に例示され、図５〜８を参照しつつさらに詳しく説明されている、複数のタイプの計算要素２７０（構成可能または構成不可能な）からの選択されたタイプの「計算」または他の回路要素２７０からなる。
【００７０】
複合回路要素２６０内の計算回路要素２７０（より単純に、要素２７０または回路要素２７０とも呼ばれる）は、タイプおよび構成可能性により異なり、計算要素２７０は、参照しやすくすることをのみを目的として「計算」という用語で称されているが、さまざまなタイプの回路要素２７０は、メモリ機能、有限状態機械機能、通信機能など、厳密な意味で計算とはいえない機能を有している場合がある。例えば、いくつかの回路要素２７０は、複数のタイプの静的な、または構成可能な計算要素、複数のタイプの静的な、または構成可能なメモリ要素、複数のタイプの静的な、または構成可能な通信要素もしくはインターフェース、静的な、または構成可能な状態機械要素などとすることができ、その結果、構成可能な複合回路要素２６０、構成可能な、または構成不可能なメモリ複合回路要素２６０Ｍ、あるいは構成可能な、または構成不可能な複合Ｉ／Ｏもしくは他の通信回路要素２６０（例えば、外部通信用のＩ／Ｏインターフェースを形成しうる）などの複数のタイプの複合回路要素２６０となる。したがって、本明細書における複合回路要素２６０の参照は、状況から必要である場合または反対のことが指定されている場合を除き、構成可能な複合回路要素２６０、状態機械要素２９０、第１の通信要素２５０、および複合メモリ要素２６０Ｍなどの、さまざまなタイプ、特別なケース、または特別な場合もしくは複合回路要素２６０のインスタンス化を意味し、含むものと理解される
【００７１】
また、例えば、第１の通信要素２５０（クラスタＩ／Ｏ）は、他の複合回路要素２６０に見せる要素インターフェースおよび制御２８０を有し、通信機能用に設計された計算要素２７０を有するあるタイプの複合回路要素２６０として実装することができ、また構成可能である場合も構成可能でない場合もある。それに加えて、後述のように、状態機械として典型的には具現化され、「メッセージ・マネージャ」回路２６５と称される追加の回路は、外部メモリ、バス、および通信システムとの通信インターフェースを提供する、例えば、さまざまな通信および他のデータ転送規格に準拠するインターフェースを提供するなどの、外部通信機能を実行するためのさまざまな、または選択されたクラスタ２００を備え、また、装置１００がＳＯＣの一部として具現化される場合にＩＣの他の部分と通信するためのインターフェースを備えることもできる。例えば、選択された実施形態に応じて、メッセージ・マネージャ２６５（専用ハードウェアとして）または複合回路要素２６０（通信機能用に適合された計算要素２７０を有する）は、イーサネット（登録商標）・インターフェース、ＰＣＩインターフェース、ＰＣＩ  Ｅｘｐｒｅｓｓインターフェース、ＵＳＢまたはＵＳＢ２インターフェース、ＤＤＲ  ＳＤＲＡＭインターフェースまたは他のタイプのメモリ・インターフェース、無線インターフェース、他のＩＣとのインターフェースなどを備えるなど、そのような外部通信用に使用されうる。例示的な実施形態では、メッセージ・マネージャは、さらに、構成および制御メッセージングなどのために、以下でさらに詳しく説明されるように、クラスタ２００間の通信および状態機械要素２９０間の通信などの装置１００内の通信に使用することもできる。
【００７２】
他の例示的な実施形態では、外部通信（ＤＤＲ−２、ＰＣＩ、ＰＣＩ−ｅなどについての）は、相互接続部１５５に結合されている他のコンポーネントにより実行され、メッセージ・マネージャ回路２６５は、スーパークラスタ１８５および／またはクラスタ２００内のストリームベースの通信と相互接続ネットワーク２２０、１９５、１６０、１７０、１８０上のパケットベースの通信との間のインターフェースを形成し、本質的に、スーパークラスタ１８５Ｃおよびクラスタ２００Ｃの実施形態などにおける第１および／または第２の通信要素２５０、２１０を置き換える。この実施形態では、メッセージ・マネージャ回路２６５は、さらに、さまざまな組み合わせロジック・ゲートとともに有限状態機械または状態機械として実装することもでき、メッセージ・マネージャ回路２６５は、受信メッセージ、送信確認、および送信メッセージの３つのタイプのメッセージを、すべて相互接続部１５５を介して処理する。Ｄａｔａ  ＷｒｉｔｅメッセージおよびＤａｔａ  Ｃｏｐｙメッセージの２つのタイプのメッセージが使用される。Ｄａｔａ  Ｗｒｉｔｅメッセージでは、メッセージに含まれるペイロード・データが、メッセージで指定されたアドレスに書き込まれる。Ｄａｔａ  Ｗｒｉｔｅメッセージは、例えば、ユーザー・タスク・ライト、第２のメモリ要素２５５への書き込み、またはＳＭＥ  ２９０に書き込む、およびＳＭＥ  ２９０実行可能コードを修正するなどのための構成／制御バス２８５上への書き込み、あるいはクラスタ２００内の複合回路要素２６０を構成するための書き込みとすることができる。この実施形態では、さらに、例えば、メッセージ・マネージャ回路２６５は、ＳＭＥ  ２９０制御を行うために、ＳＭＥ  ２９０に書き込むことができる。Ｄａｔａ  Ｃｏｐｙメッセージでは、Ｄａｔａ  Ｗｒｉｔｅメッセージが、指定されたコピー元アドレスから指定されたコピー先アドレスに送信される。送信確認は、返信を要求する受信Ｄａｔａ  Ｗｒｉｔｅメッセージへの応答としてメッセージ・マネージャ回路２６５により生成され、それ自体がＤａｔａ  Ｗｒｉｔｅメッセージである。送信メッセージは、ＳＭＥ  ２９０により第２のメモリ要素２５５（例えば、クラスタ２００  ＲＡＭ）において組み立てられ、次いで、メッセージ・マネージャ回路２６５により、ポインタをメッセージの先頭に設定し、メッセージ・サイズを指定するなどして、送信される。このメッセージ組み立ては、確認を必要としない送信メッセージに適用可能であるか、または確認を必要とするものに拡張されうる。
【００７３】
例示的な一実施形態では、クラスタ２００  ＲＡＭを形成する第２のメモリ要素２５５は、８個の１Ｋ×１６ブロックとして実装され、アドレス生成にＳＭＥ  ２９０を使用するのではなく、アドレス生成器がメモリ・タイプの複合回路要素２６０Ｍ内に備えられる。追加のレジスタも使用され、これは、セットされた場合、命令セットを格納するなど、ＳＭＥ  ２９０による使用のためにメモリ・タイプの複合回路要素２６０Ｍが予約され、セットされない場合、他の複合回路要素２６０による使用が有効にされる。アドレス生成は、例えば、ＦＩＦＯ、ブロック・リード／ライト（カウントおよびストライド転送を含む）、および２Ｄもしくは３Ｄアドレス生成を含むことができる。第２のメモリ要素２５５は、さらに、ページまたはキャッシュ・メモリ構造を備える、または備えない階層メモリとすることも可能である。第２のメモリ要素２５５へのデータ入力で優先するのは、典型的には、相互接続部１５５上へのデータ・バックアップを回避するためのメッセージ・マネージャ回路２６５であり、次にメモリ・タイプの複合回路要素２６０Ｍ、そしてＳＭＥ  ２９０である。メモリ・タイプの複合回路要素２６０Ｍは、同期をとるなどの追加の機能を有し、さらに、複数のプロセス／コンテキストを同時実行させることができる（データの衝突がない限り）。
【００７４】
他の例示的な実施形態では、メッセージ・マネージャ回路２６５は、さらに、装置１００全体にわたって分散されているメモリ・タイプの複合回路要素２６０Ｍを管理するように構成または適合される。例えば、メッセージ・マネージャ回路２６５は、分散された複数のメモリ複合回路要素用に統一アドレス空間を備えるように適合される。メッセージ・マネージャ回路２６５をこのように使用することにより、分散された複数のメモリ・タイプの複合回路要素２６０は、他の複合回路要素２６０から見えるようになり、また１つの大きなメモリ・アレイとして管理できる。
【００７５】
構成可能な計算要素２７０はそれぞれ、入力、出力、および変更可能であるように適合されるか、または他の何らかの形で修正することが可能である他の内部接続を有する組み合わせロジック（つまり、加算器、乗算器、算術論理演算ユニット（「ＡＬＵ」）などの機能ユニットを形成するロジック・ゲートのグループ）からなる。より具体的には、それぞれの構成可能な計算要素２７０は、対応する複数の機能を実行するために、複数の方法により、スイッチング回路、要素、またはスイッチ、マルチプレクサ、デマルチプレクサ、パス・トランジスタ、クロスバー・スイッチ、ルーティング要素、または他のトランジスタ構成などの他のスイッチング構造を通じて、そのロジック・ゲートまたは他の機能ユニットが結合もしくは接続（または減結合もしくは切断）されうるように設計される。さまざまなゲート（または機能ユニット）を接続するそれぞれの異なる方法は、「構成」であり、選択された構成は、対応するスイッチ、マルチプレクサ、デマルチプレクサ、パス・トランジスタ、または他のトランジスタもしくはスイッチング装置を制御する複数のビットとして表すことができ、選択された構成の特定の接続を形成する。例えば、加算器、乗算器、およびレジスタは、多くのさまざまな方法で結合することができ、それにより、単純な算術演算から離散コサイン変換に至るまでさまざまな機能を実行することができる。他の状況では、構成は、さらに、符号付きもしくは符号なし、定数もしくは変数、消費可能もしくは消費不可能などの、入力データがどのように解釈または使用されるかを指示することもできる。他のタイプの構成および構成する方法も、エレクトロニクス分野において知られているが、同等のものであり、本発明の範囲内にあると考えられる。
【００７６】
構成可能な計算要素２７０の利用可能なまたは選択された構成はそれぞれ、複合回路要素２６０の要素インターフェースおよび制御２８０のメモリ内にローカルとして格納される。以下でさらに詳しく説明されるように、これらの構成はそれぞれ、選択された入力、出力先、および制御情報などの他の情報とともに、対応する「コンテキスト」として定義されるか、または含む。例えば、複数の要素の同じ構成が、複数のコンテキストを有し、それぞれのコンテキストは異なる入力を使用して出力を異なる場所に送るか、または異なる定数を使用することができる。また、例えば、異なる構成は、さらに、異なる構成が同じ入力を使用し、出力を同じ送り先に供給する場合であっても、異なるコンテキストを備えることになる。複合回路要素２６０の演算および制御は、本発明の例示的な実施形態で使用される内部および外部通信ならびにアドレッシングの説明に続いて、図５〜８および１６を参照しつつ以下でさらに詳しく説明される。
【００７７】
例示的な実施形態では、クラスタ２００内の複合回路要素２６０間のさまざまな接続、および一方のクラスタから他方のクラスタへのルーティングもしくはトンネリング（通信要素２５０、２１０、または１９０を介して）は、選択されたプログラム、アルゴリズム、または機能の実装のため、装置１００のオペレーティング・システムにより実行時に確定される。それに加えて、そのような接続は、時間の経過とともに変化する可能性があり、また選択された実施形態に応じて、一般に、図１を参照しつつ上で簡単に説明されているように必要に応じて、また以下でさらに詳しく説明されるように、新しい機能の作成、コンテキストおよび構成の変更、機能の変更、または弾力的な自己回復のために、時間の経過とともに変化する。回復性の要件を適用されえないアプリケーションなどに対する、本発明の範囲内の代替え実施形態では、実行時に先立ってさまざまな接続が確立され、装置１００のメモリ内に保持されて、必要に応じて、または望ましい場合にその後修正を行うことも可能である。
【００７８】
図２および３を参照すると、マトリクス１５０は、複数のスーパークラスタ１８５および１つまたは複数の第３の通信要素１９０に論理的に分割されるか、または含む。第３の通信要素１９０は、データ、構成、および制御情報の伝達のため、パケット・ルーティング、スイッチング、ハイブリッド型ルーティングおよびスイッチング、またはデータおよび制御をマトリクス１５０から出し入れするトンネリングを行う通信回路（例えば、ルーター、ウェイポイント、ゲートウェイ、スイッチ、またはトンネリング・デバイス）であり、相互接続部１５５の一部を形成するものと考えられうる。第３の通信要素１９０は、さらに、ウェイポイントまたはゲートウェイと考えることもでき、本発明に従って使用される複数の通信構造のうちの１つである。少なくとも２つまたはそれ以上の第３の通信要素１９０を使用する第１の選択された実施形態では、それぞれの第３の通信要素１９０は、選択されたマトリクス１５０のそれぞれのスーパークラスタ１８５および他の第３の通信要素１９０（バス構造１６０を介して）に結合され、これにより、いずれかの第３の通信要素１９０を通じてそれぞれのスーパークラスタ１８５との間の通信が実行されうる。その結果、第３の通信要素１９０のうちのどれか１つが故障した場合に、他の第３の通信要素１９０が選択されたマトリクス１５０のそれぞれのスーパークラスタ１８５から利用できるようになり、まったく同じ通信機能が実行される。別の第３の通信要素１９０として例示されているが、それらの独立の回路は、１つまたは複数のより大きな回路構造に組み合わされて、同じ独立した通信機能を形成することは理解されるであろう。例えば、選択された一実施形態において、単一の第３の通信要素１９０が使用され、同様にそれぞれのスーパークラスタ１８５および他の第３の通信要素１９０に接続され、それぞれの第３の通信要素１９０は複数の、独立した通信経路（例えば、４つのダウンリンクと４つのアップリンク）を形成するので、これにより、１つまたは複数のリンクに障害が発生した場合に追加のリンクが利用できる。ここでもまた、そのような障害が発生した場合、重要な機能が保存され、突発的な故障とならないように、グレースフル・デグラデーションが行われる。
【００７９】
それぞれのスーパークラスタ１８５は、さらに、複数のクラスタ２００および１つまたは複数の第２の通信要素２１０に論理的に分割される。第２の通信要素２１０は、さらに、データ、構成、および制御情報の伝達のため、パケット・ルーティング、トンネリング、スイッチング、またはデータおよび制御をスーパークラスタ１８５から出し入れするその他の転送を行う通信回路でもあり、これもまた相互接続部１５５の一部を形成するものと考えられうる。第２の通信要素２１０は、さらに、ウェイポイントまたはゲートウェイと考えることもでき、本発明に従って使用される複数の通信構造のうちの１つである。少なくとも２つの第２の通信要素２１０を使用する第１の選択された実施形態では、それぞれの第２の通信要素２１０は、選択されたスーパークラスタ１８５のそれぞれのクラスタ２００に結合され、これにより、いずれかの第２の通信要素２１０を通じてそれぞれのクラスタ２００との間の通信が実行されうる。また、その結果、第２の通信要素２１０が故障した場合に、他の第２の通信要素２１０が選択されたスーパークラスタ１８５のそれぞれのクラスタ２００から利用できるようになり、まったく同じ通信機能が実行される。選択された一実施形態では、これらの独立の回路は、１つまたは複数のより大きな回路構造に組み合わされ、同じ独立の通信機能を備えることができる。また、例えば、単一の組み合わせた第２の通信要素２１０が利用され、同様にそれぞれのクラスタ２００および１つまたは複数の第３の通信要素１９０に接続される。この実施形態では、それぞれの第２の通信要素２１０は、複数の、および独立した通信経路（例えば、４つのダウンリンクと４つのアップリンク）を備え、１つまたは複数のリンクに障害が発生した場合に追加のリンクが利用できる。ここでもまた、そのような障害が発生した場合、重要な機能が保存され、突発的な故障とならないように、グレースフル・デグラデーションが行われる。
【００８０】
その結果、マトリクス１５０のレベルからスーパークラスタ１８５のレベルへ、およびクラスタ２００のレベルへ移動すると、相互接続部１５５は、複数の通信要素１９０および２１０ならびに通信チャネル（バス構造）１６０、１９５、２２０を通じてパケット・ルーティング、自己ルーティング、トンネリング、スイッチング、またはデータ、構成、および制御情報の他の転送を行う。それに加えて、後述のように、クラスタ２００内で、相互接続部１５５は、さらに、第１の通信要素２５０を通じて、回路交換（または回路ベース）通信を行う。実際に、本発明のアーキテクチャの新規性のある特徴のうちの１つは、パケット・ベース通信および回路交換通信の両方を行う相互接続構造１５５を使用することである。
【００８１】
引き続き図２および３を参照すると、例示的な相互接続部１５５は、（１）複数のルーティング（トンネリング、ウェイポイント、またはゲートウェイ）要素、つまり、複数の第３の通信要素１９０、複数の第２の通信要素２１０、および複数の第１の通信要素２５０と、（２）複数の回路交換要素、つまり、複数の第１の通信要素２５０と、（３）その対応するバス、電線、または他の形態の物理的接続もしくはデータ伝送媒体（例えば、上述のように、「ｎ」ビット幅である、バスまたは電線１６０、１９５、および２２０として例示されている）とを備える。マトリクス１５０内では、１つまたは複数の第３の通信要素１９０が、パケット・ルーティング、自己ルーティング、トンネリング、スイッチング、またはデータ、構成、および制御情報の他の転送を、他のマトリクス１５０（第１のバス１６０およびＩ／Ｏ  １７０、１８０）との間で、また複数のスーパークラスタ１８５との間で、それぞれのそのようなスーパークラスタ１８５内の１つまたは複数の第２の通信要素２１０を介して実行する。次いで、そのようなスーパークラスタ１８５内の１つまたは複数の第２の通信要素２１０が、パケット・ルーティング、自己ルーティング、トンネリング、スイッチング、またはデータ、構成、および制御情報の他の転送を、第３の通信要素１９０との間で、またスーパークラスタ１８５内の複数のクラスタ２００との間で、それぞれのそのようなクラスタ２００内の１つまたは複数の第１の通信要素２５０を介して実行する。
【００８２】
次いで、クラスタ２００内の１つまたは複数の第１の通信要素２５０が、パケット・ルーティング、自己ルーティング、トンネリング、スイッチング、またはデータ、構成、および制御情報の他の転送を、クラスタ２００との間で、例えば他のクラスタ２００との間で、第２の通信要素２１０を介して実行し、クラスタ２００内のデータおよび制御について回路交換通信を行い、他のクラスタ２００とクラスタ２００内の複合回路要素２６０、状態機械要素２９０、メッセージ・マネージャ２６５、メモリ要素２５５、および／または他のコンポーネントとの間で通信を行えるようにする。例えば、クラスタ２００内の複合回路要素２６０から生成されたデータは、直接または回路交換接続を通じて複数の第１の通信要素２５０のうちの１つに出力され、次いで、他のクラスタ２００、他のスーパークラスタ１８５、または他のマトリクス１５０への伝送のため、そのデータをパケット形態に変換し、第２の通信要素２１０へのデータ・パケットのルーティングを行うことができる。同様に、他のクラスタ２００、他のスーパークラスタ１８５、または他のマトリクス１５０から送られて来る、データ・パケットが、第２の通信要素２１０を介して到着した場合、第１の通信要素２５０は、データを抽出し、１つまたは複数のデータ・ワードをクラスタ２００内の対応する複合回路要素２６０、状態機械要素２９０、メモリ要素２５５、または他のコンポーネントに転送する。
【００８３】
これらのさまざまな通信要素（第３の通信要素１９０、第２の通信要素２１０、第１の通信要素２５０、完全相互接続要素２７５、および後述の分散された完全相互接続要素２９５）は、完全相互接続性から制限のある相互接続性へなど、選択された能力を有するように設計されうる。例えば、例示的な実施形態において複合回路要素２６０の入力に同時に結合される複合回路要素２６０の出力を備える完全相互接続要素２７５または分散された完全相互接続要素２９５の代わりに（同じ入力または出力について衝突または競合がある場合を除く）、部分的な相互接続要素または分散された部分的な相互接続要素（別々には例示されていない）を使用することなどにより、クラスタ２００内の制限のある、または部分的な相互接続が実行されうる。また例えば、例示的な実施形態では、第１の通信要素２５０は、複合回路要素２６０およびクラスタ２００の他のコンポーネントとの間の１つまたは複数の同時接続に加えて、第２の通信要素２１０からの２つのアップリンクと２つのダウンリンクなどの、２つまたはそれ以上の同時接続またはルーティングを行うことができる。ＩＣ面積との衝突が発生する可能性のあることと引き換えに、所定の実施形態においてさらに接続性を増すこともできる。それに加えて、備えられる相互接続性が完全以下である場合、さまざまな通信要素（第３の通信要素１９０、第２の通信要素２１０、および第１の通信要素２５０）も、優先度方式、ラウンド・ロビン方式、逐次方式などに基づく、アービトレーション機能を備え、所定の時刻にデータ転送を行う接続またはルーティングを選択することができる。
【００８４】
クラスタ２００、スーパークラスタ１８５、マトリクス１５０、および装置１００の各レベルを有するものとして例示されているが、当業者であれば、レベルの数は、選択された実施形態において加減できることを理解するであろう。例えば、複数の第４の通信要素（図に示されていない）は、他の相互接続部１５５とともに、装置１００内に他の階層レベルを形成するなどのために使用することができ、これにより、装置１００の階層内に選択された数のレベルを作成できる。
【００８５】
図４は、本発明の教示による例示的なデータ伝送シーケンスを示す図である。例示的な実施形態では、データおよび／または制御パケットは、データ・ワードの「トレイン」またはトンネリングとしてさまざまなルーティング要素（第３の通信要素１９０、第２の通信要素２１０、および第１の通信要素２５０）により相互接続部１５５上でルーティングが行われ、これにより、他の方法だと個別にアドレス指定されたデータ・ワードのルーティングに関わってくるアドレス指定のオーバーヘッドが軽減される。より具体的には、図４を参照すると、データ伝送シーケンス３００は、複数のワード（フィールドまたはデータ構造体）３０５および３１０からなり、「ｎ」ビット幅である。それぞれのそのようなワード３０５または３１０は、順番に、次々に伝送される。第１のワードまたはフィールド３０５は、データ先頭インジケータを持つアドレス・ヘッダを含む。アドレス・ヘッダは、伝送先アドレスを備えるか、または伝送先アドレスと伝送元アドレスの両方（複数のワードを必要とする場合がある）を備えることができる。このようなアドレスは、例示的な実施形態では、［マトリクス番号、スーパークラスタ番号、クラスタ番号］の形式をとり、選択された実施形態において実装されているマトリクス１５０、スーパークラスタ１８５、およびクラスタ２００の個数に応じてアドレスを指定するためにビットの数が使用される。
【００８６】
例えば、８個以下のマトリクス１５０が実装される場合、それぞれのマトリクス１５０が８個以下のスーパークラスタ１８５を含み、それぞれのスーパークラスタ１８５が８個以下のクラスタ２００を含むのであれば、［ＭＭＭ，ＳＳＳ，ＣＣＣ］とアドレス指定するのに９ビットあれば十分である。第１のワードまたはフィールド１０５内のデータ先頭インジケータは、所定の値を有する第１のフラグ（例えば、フラグがセットされているか、または他の第１の所定のもしくはあらかじめ指定されているビットが第２の値である）を備えることができ、現在のワード３０５がアドレス・ヘッダであり、後続のすべてのパケットが、同じアドレス指定された伝送先にルーティングされるべきデータ・ワードであることを示す。その結果、第１のフィールド３０５に続く「ｍ」個のワードまたはフィールド３１０はすべて、データ・ワードとして、つまり、データ・ワード３１００、３１０１、３１０２から３１０（ｍ−１）として指定されて、伝送され、これらは、データ・ワード毎に別のまたは追加のヘッダもしくはアドレスを用意することなく、同じアドレス指定された伝送先に自動的にルーティングされる。追加のフラグまたはビットは、さらに、後続のデータ・ワードがプレースホルダであることを指定したり、同期処理で使用する、特に分岐演算を行うなどの、他の目的のためにも使用できる。ワードまたはフィールド３１０（ｍ−１）として例示されている、最後のデータ・ワードは、データと、データ末尾インジケータの両方を含み、現在のデータ・ワードが転送中の最後のデータ・ワードであることを示し、また所定の値を有する第２のフラグ（または選択された値を有する他の第２のあらかじめ指定されているビット）を含むことができる。
【００８７】
データのこのトンネリングは、例示的な一実施形態では、パケット・ルーティングと回路交換の両方の組み合わせまたはハイブリッドとして実装される。より具体的には、さまざまなルーティング要素（第３の通信要素１９０および第２の通信要素２１０）は、第１のワードまたはフィールド３０５のアドレス・ヘッダを使用してクラスタ２００間に１つまたは複数の接続を確立し、伝送元クラスタ２００から伝送先クラスタ２００への専用経路を予約し、セットアップすることを行う。この専用経路は、例えば、ウェイポイントまたはゲートウェイ内の回路交換または他の接続により形成されうる。通信要素（第３の通信要素１９０、第２の通信要素２１０）に到着した残りのデータ・ワード（データ・ワード３１００、３１０１、３１０２から３１０（ｍ−１）まで）は、バッファリングされ、次いで、アドレス・ヘッダを使用して通信要素内に確立されている交換または他の専用経路上でパケットとして自動的に転送されうる。専用経路は、完全なパケットが伝送されてしまうまで保持され、その後、さまざまな経路要素が、他の通信のために解放される。複数の経路を同時に使用することで、ブロードキャスト・モードに対応することができる。また、例示的な実施形態では、複数のそのようなデータ伝送は、例示的な一実施形態について前のほうで言及されている４つのアップリンクと４つのダウンリンクを使用することなどにより、同じ通信要素間で同時実行することができ、これにより、複数のデータ・ストリームを同時に伝送することができる。その結果、例示的な実施形態では、複数の通信要素（第１の通信要素２５０を含む）は、１対１入力および出力データ・リンク、１対多（ブロードキャスト）データ・リンク、および多対１データ・リンクなど、選択された任意の通信モードに対応することができる。
【００８８】
それとは対照的に、第１の通信要素２５０は、完全相互接続要素２７５を介してクラスタ２００のさまざまなコンポーネントからデータ・ワードを典型的には順次に（１つまたは複数のクロック・サイクル毎に１つのデータ・ワード）受信し、アドレス・ヘッダを備え、他のクラスタ２００に送信するためにそのシーケンスを第２の通信要素２１０に伝送し、一般的には、そのシーケンス全体を１つのパケット・バーストとして伝送する。他のクラスタ２００から来るデータについては、第１の通信要素２５０が、複数のデータ・ワード（３１００、３１０１、３１０２から３１０（ｍ−１）まで）を受信して、バッファリングし、典型的には完全相互接続要素２７５のスイッチングを介して、それらのデータ・ワードを順次にクラスタ２００の指定されたコンポーネントに送る。例示的な実施形態では、伝送元および／または伝送先アドレスは、さまざまなルーティング要素（第３の通信要素１９０、第２の通信要素２１０、および第１の通信要素２５０）などに含まれる複数のコンポーネントのどれかに格納され、クラスタ間通信を使用してコンテキスト毎に束縛プロセス（後述）において確定されうる。
【００８９】
より具体的には、束縛プロセス（「バインダー」）を実行する１つまたは複数の状態機械要素（「ＳＭＥ」）２９０（または他の（複数の）コントローラ１７５もしくは（複数の）オフチップ・コントローラもしくは（複数の）プロセッサ）は、アクション（つまり、機能またはコンテキスト）をさまざまな複合回路要素２６０に割り当て、複合回路要素２６０の間の「仮想」データ・リンクまたはルーティングを確立する、つまり、そのデータ・リンクが物理的にどのように実行されるかを必ずしも指定しないまま、１つまたは複数の複合回路要素２６０の間のデータ・リンクを割り当てる。さまざまな通信要素（第１の通信要素２５０、第２の通信要素２１０、第３の通信要素１９０、完全相互接続要素２７５、および／または分散された完全相互接続要素２９５）は、サイクル毎に、または所定の時刻にクロック動作し、次いで、対応するデータ転送に対する物理的経路を決定し、物理的データ・リンクを形成するように適合される。例えば、スイッチングおよび／またはルーティングを介して、複数の通信要素間の、または複数の通信要素内の第１の物理的データ経路もしくはリンクは、２つのクラスタ２００の間のデータ・パケット（例えば、データ・ワードのトレイン）の転送の１つのインスタンスについて確立され（その後解放される）、異なる物理的データ経路もしくはリンクが２つのクラスタ２００の間のデータ・パケットの転送のその後のインスタンスについても確定されうる。そのような物理的データ・リンクは、例えば、対応する要素インターフェースおよび制御２８０（後述）のメモリ内にルーティング・テーブルとして格納されるといった形で、通信要素内のさまざまなメモリ内に格納されて保持され、選択された物理的データ・リンクは通信複合回路要素２６０の対応する要素コントローラ３２５により決定されうる。同様に、任意の時点またはクロック・サイクルにおいて、クラスタ２００内のデータ通信のために異なる物理的データ・リンクが確立されうる（そして解放される）。他の例示的な実施形態では、仮想データ・リンクを確立するのではなく、束縛プロセスの一部としてバインダーによっても物理的データ・リンクが確立されうる。
【００９０】
図５は、本発明の教示による第１の例示的なクラスタ２００を示すブロック図である。図６は、本発明の教示による第２の例示的なクラスタ２００Ａを示すブロック図である。クラスタ２００では、完全相互接続要素２７５（単一または統一回路コンポーネントとして）は、複合回路要素２６０および例示されているような他のクラスタ・コンポーネントのそれぞれの入力および出力の間に完全な相互接続を形成するために使用される。例えば、完全相互接続要素２７５は、クロスバー・スイッチとして実装されうる。クラスタ２００Ａでは、分散された完全相互接続要素２９５（分散された複数の回路コンポーネントとして）は、複合回路要素２６０および例示されているような他のクラスタ・コンポーネントのそれぞれの入力および出力の間に完全な相互接続を形成するために使用される。例えば、分散されている完全相互接続要素２９５は、選択された複合回路要素２６０について図８に例示されているマルチプレクサ３３５などの複数のマルチプレクサおよび／またはデマルチプレクサとして実装されうる。他のすべての点において、クラスタ２００、２００Ａは同一である。そのため、クラスタ２００への参照があれば、クラスタ２００Ａとして例示されている第２の実施形態（および図７でクラスタ２００Ｂとして例示されている第３の実施形態）を、クラスタ２００の１つまたは複数の変更形態として意味し、含むことは理解されるであろうし、さもなければクラスタ２００Ａ（およびクラスタ２００Ｂ）は別の実施形態としてこれ以上説明されない。
【００９１】
図５および６に例示されているように、例示的なクラスタ２００（２００Ａ）は、複数の複合回路要素２６０（または複合要素２６０）と、複数の通信要素、つまり１つまたは複数の第１の通信要素２５０および完全相互接続要素２７５または分散された完全相互接続要素２９５（完全通信要素または完全相互接続バス（「ＦＩＢｕｓ」）とも称される）と、状態機械要素（ＳＭＥ）２９０と、メッセージ・マネージャ２６５と、複数のバスまたは他のタイプの通信媒体などのさまざまな通信構造とを備える。状態機械要素２９０およびメッセージ・マネージャ２６５は、すべてのクラスタ２００において必要なわけではなく、さまざまな実施形態において、実行すべきアプリケーションに応じて、選択されたクラスタ２００は、主に複合回路要素２６０（例えば、デジタル信号処理（「ＤＳＰ」）機能を有する）を、他のクラスタ２００（第１の通信要素２５０を介する対応する通信を行う）の状態機械要素２９０およびメッセージ・マネージャ２６５により実現される状態機械および／またはメッセージ管理機能とともに備えることができる。他の例示的な実施形態では、クラスタ２００内の１つまたは複数の状態機械要素２９０を備えるのではなく、またはそれに加えて、１つまたは複数の外部コントローラ１７５または他のオフチップ・コントローラ、状態機械、またはプロセッサを使用して、対応する機能を代わりに実装できる。選択された実施形態では、完全相互接続要素２７５は、クロスバー・スイッチまたはパス・トランジスタ（アービトレーション機能を備えるか、または備えない）として実装されうるが、分散された完全相互接続要素２９５は、例えば、複数のスイッチ、パス・トランジスタ、マルチプレクサ、および／またはデマルチプレクサとして実装されうる。
【００９２】
さらに、選択された実施形態では、さまざまなオプションまたは変更形態として、例示的なクラスタ２００は、例えば、ロング・キューなどの、ある種のキューであってよい、第２のメモリ要素２５５などの、追加のメモリを備えることもでき、またさまざまな第１の通信要素２５０および第２の通信要素２１０を使用することなく、隣接するクラスタ２００同士の間でデータ、制御、および／または構成情報の転送を行うために、ＦＩＦＯ、バッファ、または他のメモリ構造などのクラスタ間キュー２４５を備えることもでき（図２に例示されている「高速経路」接続２１５を形成する）、また構成／制御バス２８５として例示されている、クラスタ２００内のＳＭＥ  ２９０と他のコンポーネントとの間の通信のために別の、または追加の通信構造を備えることもできる。
【００９３】
図５および６に別々に示されてはいないが、それぞれの要素インターフェースおよび制御２８０は、さらに、図８を参照しつつさらに詳しく説明されている、メモリ、入力キュー、および要素コントローラ（複数の条件付きロジック構造（ゲート）からなる）も備えることができる。それに加えて、第１の通信要素２５０は、さらに、受信データを選択された複合回路要素２６０に転送し、選択された複合回路要素２６０からの送信データのアドレス指定およびルーティングを行うためのメモリ構造を備えることもできる。図５および６は、６つの複合回路要素２６０、２つの第１の通信要素２５０、１つの状態機械要素（「ＳＭＥ」）２９０、１つのメッセージ・マネージャ２６５、および１つの完全相互接続要素２７５または分散された完全相互接続要素２９５を、第２のメモリ要素２５５などの可能な追加のメモリおよびクラスタ間キュー２４５などの１つまたは複数のさまざまな通信構造とともに備えるクラスタ２００（２００Ａ）を例示しているが、エレクトロニクス分野の当業者であれば、それらのコンポーネントの量および組み合わせはどれも利用することができ、またあらゆるそのような量および組み合わせは、同等であると考えられ、また本発明の範囲内にあるとみなされること理解するであろう。
【００９４】
それぞれの複合回路要素２６０は、計算回路要素２７０および統一（一定または固定）要素インターフェースおよび制御２８０からなる。一般に「計算」回路要素２７０と称されるが、回路要素２７０は、ビット並べ替え、メモリ機能、制御機能、状態機械機能、通信機能、命令処理などの計算以外の機能を実行することができ、そのようなすべての非計算的な、もしくは他の機能は、命名法に関係なく本発明の回路要素２７０の範囲内にあると考えられる。
【００９５】
クラスタ２００内の複合回路要素２６０は、（計算）要素２７０を有し、これは、同じタイプでも異なるタイプでもよく、選択された組み合わせもしくは混合でクラスタ２００内に備えることができ、また静的（構成不可能）であるか、または構成可能であるものとしてよい。図５に例示されているように、これらの要素２７０は、１つの構成可能な要素（タイプ「Ａ」）２７０Ａ、２つの構成可能な要素（タイプ「Ｂ」）２７０Ｂ、構成可能な要素（タイプ「Ｄ」）２７０Ｄ、構成可能な要素（タイプ「Ｅ」）２７０Ｅ、および構成可能な、または構成不可能な第１のメモリ回路要素２７０Ｍである。通信回路要素２７０Ｃは、第１の通信要素２５０内で使用され、典型的には構成不可能であるが、構成可能であるように実装することも可能である。それに加えて、選択された要素２７０は、構成不可能なものとして実装することもでき、またそのようなすべての変更形態は、本発明の範囲内にある。構成可能な計算要素２７０は、一般に、計算および／またはビット操作を実行し、例えば、構成可能な算術論理演算ユニット（ＡＬＵ）、構成可能なトリプルＡＬＵ、構成可能な積和（ＭＡＣ）ユニット、構成可能なビット並べ替え要素（ＢＲＥＯ）、構成可能な乗算器、構成可能なガロア乗算器、構成可能なバレル・シフター、構成可能なルックアップ・テーブル、構成可能およびプログラム可能なコントローラ、スーパーまたはラージＡＬＵ（さまざまな算術演算、機能、比較、および操作を実行できる）などとすることができる。構成可能な計算要素２７０は、一般に、組み合わせロジック・ゲートからなるが、条件またはイベントの存在を評価するなどのために、必要に応じて、または望ましい場合に、条件付きロジック構造も備えることができる。例示的な構成可能な要素２７０が、図９および１０に示されている。
【００９６】
上述のように、要素２７０は、さらに、通信機能を備えるように実装され、構成可能でも、構成不可能でもよく、内部通信、外部通信、およびメモリ・アクセス用のインターフェースを備えることができる。例示的な一実施形態では、そのような外部機能は、典型的にはさまざまなクラスタ間で異なる、複数の通信機能のうちの選択された１つの通信機能を備える、メッセージ・マネージャ２６５を通じて実現される。複数の通信機能は、例えば、イーサネット（登録商標）・インターフェース、ＰＣＩインターフェース、ＰＣＩ  Ｅｘｐｒｅｓｓインターフェース、ＵＳＢまたはＵＳＢ２インターフェース、ＤＤＲ  ＳＤＲＡＭインターフェース、または他のタイプのメモリ・インターフェース、無線インターフェース、他のＩＣへのインターフェースなどを備えることも含むことができる。典型的には、所定のクラスタ２００のメッセージ・マネージャ２６５は、１つのタイプの通信機能を備え、他のクラスタ２００のメッセージ・マネージャ２６５は、それに応じて、他のタイプの通信機能を備える。例えば、第１のクラスタ２００のメッセージ・マネージャ２６５は、ＰＣＩ  Ｅｘｐｒｅｓｓインターフェースを備えることができるが、第２のクラスタ２００のメッセージ・マネージャ２６５は、ＤＤＲ−２インターフェースを備えることができ、また第３のクラスタ２００のメッセージ・マネージャ２６５は、イーサネット（登録商標）・インターフェースを備えることができる。
【００９７】
それに加えて、メッセージ・マネージャ２６５は、さらに、相互接続部１５５への直接接続、またはより具体的には、状態機械要素２９０と他のコンポーネントとの間の構成および／または制御情報の通信など、さまざまな第１の通信要素２５０と無関係に、クラスタ間通信を行うために、第２通信チャネルまたはバス２２０を備えることもできる。例えば、実行時束縛において、さまざまな構成およびデータのルーティングは、メッセージ・マネージャ２６５を介してメッセージとして状態機械要素２９０に伝送されうる。したがって、メッセージ・マネージャ２６５は、状態機械要素２９０に直接結合されているか、またはその一部として例示されている（例えば、介在する、もしくは独立しているバス、または通信構造を持たない）。
【００９８】
第１のメモリ回路要素２７０Ｍ、第２のメモリ要素２５５、および／または要素インターフェースおよび制御２８０内のメモリは、限定はしないが、ＲＡＭ、ＦＬＡＳＨ、ＤＲＡＭ、ＳＤＲＡＭ、ＳＲＡＭ、ＭＲＡＭ、ＦｅＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、またはＥ２ＰＲＯＭを含む、揮発性であるか不揮発性であるかに関係なく、任意の形態のメモリ、機械可読記憶またはメモリ媒体、あるいは他の任意のタイプのメモリ、記憶媒体、または知られている、もしくは知られることになるデータ記憶装置もしくは回路、またはそれらの組み合わせとすることができる。第１の例示的な実施形態では、第１のメモリ要素２７０Ｍおよび要素インターフェースおよび制御２８０内のメモリは、連想メモリ（「ＣＡＭ」）として実装される。第２の例示的な実施形態では、第１のメモリ要素２７０Ｍおよび要素インターフェースおよび制御２８０内のメモリは、ＳＤＲＡＭとして実装される。
【００９９】
第１の通信要素２５０は、要素インターフェースおよび制御２８０、ならびに選択された実施形態に応じて、構成可能であるか、または構成不可能であるとしてよい、この場合通信要素２７０Ｃである、回路要素２７０を含む複合回路要素２６０と類似している。例えば、構成は、通信要素２７０Ｃ内のスイッチングまたはルーティングの経路を決定するように実行できる。通信要素２７０Ｃは、相互接続部１５５との間のパケット交換データ送信および受信、ならびにクラスタ２００内の回路交換通信を行う。
【０１００】
同様に、状態機械要素２９０は、さらに、要素インターフェースおよび制御２８０を備え、その「計算」要素（２７０）は状態機械要素のより具体的な場合であり、これもまた、選択された実施形態に応じて、構成可能であるか、または構成不可能であるとしてよい。それとは別に、状態機械実施形態に対するさまざまなメモリ３３０ならびに入力および出力キュー３２０、３１５は、内部レジスタとして実現することもできる。後述のように、要素インターフェースおよび制御２８０は、さらに、マルチスレッド処理などのために複数のコンテキストを有する状態機械要素２９０を備える。それに加えて、状態機械要素２９０は、構成、制御、および受信割り込みを直接初期値として設定しやすくするために（構成／制御バス２８５を介して）複合回路要素２６０の要素インターフェースおよび制御２８０への直接アクセス機能を有するものとして、また命令／コード処理のための対応するメモリ・アクセスおよび他のデータ・アクセスを行いやすくするために第１のメモリ要素２７０Ｍ（および／または第２のメモリ要素２５５）への（例えば、デュアルポートＲＡＭの１つのポートを通じて）直接接続として例示されている。上述のように、状態機械要素２９０は、利用可能なメモリ（例えば、複合メモリ要素２６０Ｍまたは第２のメモリ要素２５５）とともに、クラスタ・コントローラ、スーパークラスタ・コントローラ、マトリクス・コントローラなどの、本発明の範囲内の「コントローラ」を形成する。このようなコントローラは、さらに、メッセージ・マネージャ２６５または類似の機能を備えることができる。
【０１０１】
同じ（または類似の）要素インターフェースおよび制御２８０を使用することにより、第１の通信要素２５０および状態機械要素２９０は、クラスタ２００内の複合回路要素２６０には、後述の対応する利点を有する、単に他の複合回路要素２６０として見える。すると、例えば、他の複合回路要素２６０は、その出力が第１の通信要素２５０または状態機械要素２９０に送られるか、または入力が第１の通信要素２５０または状態機械要素２９０から受信されていることを知っている必要はなく、また異なるタイプのデータ受信または送信に対応できる必要もない。
【０１０２】
例示的な実施形態では、複合回路要素２６０は、複合回路要素２６０のタイプまたは種類別（例えば、複合回路要素２６０内の回路要素２７０のタイプ）の何らかの形式の識別を含み、これにより状態機械要素（「ＳＭＥ」）２９０（またはコントローラ１７５）による識別を容易にすることができる。このような識別は、製造時に複合回路要素２６０内にＲＯＭとしてハード配線する、起動プロセスにおいてメモリ内にロードするなど、さまざまな形態でクラスタ２００内の利用可能なメモリに保持することができる。このようなタイプ識別は、例えば、メモリ複合要素２６０、第２のメモリ２５５、または後述の要素インターフェースおよび制御２８０のメモリ３３０内に保持されうる。
【０１０３】
要素インターフェースおよび制御２８０は、（１）それぞれの構成可能な回路要素２７０、メモリ要素、通信要素、または状態機械要素との間の入出力用の統一インターフェースと、（２）統一制御構造の両方を備え、これは図８および１６を参照しつつ以下でさらに詳しく説明される。それぞれの要素インターフェースおよび制御２８０は、すべてのクラスタ２００内のすべての複合回路要素２６０、第１の通信要素２５０、および状態機械要素２９０について同じ構造を有しているため、要素（２７０）が構成可能なＡＬＵであるか、構成可能なバレル・シフターであるか、通信要素であるか、または状態機械要素であるかなど、要素のタイプに関係なく、すべてのそのような要素２６０、２５０、２９０は、統一された繰り返し可能な方法で制御されうる。それに加えて、すべてのそのような複合回路要素２６０、第１の通信要素２５０、および状態機械要素２９０は、他の複合回路要素２６０、第１の通信要素２５０、および状態機械要素２９０と、要素のタイプ（例えば、構成可能な回路要素２７０）に関係なく、統一された繰り返し可能な方法で通信することができる。より具体的には、すべての複合回路要素２６０、第１の通信要素２５０、および状態機械要素２９０は、上述のアドレス指定方式により、統一された方法でアドレス指定されうる。
【０１０４】
このような統一性の第１の結果として、どのような複合回路要素２６０、第１の通信要素２５０、および状態機械要素２９０も、入力の送り元である、または出力先である他の複合回路要素２６０、第１の通信要素２５０、および状態機械要素２９０に関して知る必要がない、つまり、それぞれの複合回路要素２６０および第１の通信要素２５０は、一般に、その周辺および機能について無知であるものとしてよい。（実装に応じて、状態機械要素２９０は、他の要素を監視し、試験し、制御するための追加の機能を有する場合があり、その周辺および機能に関して認識しうる）。そのような統一性の第２の結果として、それぞれの複合回路要素２６０、第１の通信要素２５０、および状態機械要素２９０は、これもまた要素のタイプ（例えば、回路要素２７０のタイプ）に関係なく、統一された方法で構成され、アドレス指定され、問い合わせされうる。
【０１０５】
第３の、非常に重要な結果として、選択されたタイプの回路要素２７０を有するそれぞれの複合回路要素２６０は、特定の計算またはアルゴリズムの実行に対する局所性（距離）制約の範囲を除き、同じ選択されたタイプの回路要素２７０を有する他の複合回路要素２６０と実質的に完全に入れ替え可能である。そのため、そのような制約条件に従って、所定のアルゴリズムを実行するために、選択されたタイプの回路要素２７０を有する選択された複合回路要素２６０により実行される演算は、悪影響をもたらすことなく、同じ選択されたタイプの回路要素２７０を有する他の複合回路要素２６０に自由に割り当てられるか、または移動されうる。選択されたタイプの回路要素２７０を有する特定の複合回路要素２６０に障害が生じるか、または欠陥があった場合、その演算は、（１）同じ選択されたタイプの回路要素２７０を有する他の利用可能な複合回路要素２６０、または（２）一緒に同じ演算を実行することができる利用可能な複合回路要素２６０のグループ、または（３）他のまたは低い優先度の演算を実行していた同じ選択されたタイプの回路要素２７０（または複合回路要素２６０のグループ）を有する他の場合には利用不可能な複合回路要素２６０に移動されうる。例えば、トリプルＡＬＵを備える構成可能な要素２７０を有する複合回路要素２６０に障害が発生した場合、その演算は、それぞれ単一のＡＬＵを備える構成可能な要素２７０を有する３つの複合回路要素２６０に移動され、この要素は、次いで、トリプルＡＬＵの演算を実行するように構成されうる。同様に、第１の通信要素２５０または状態機械要素２９０により実行される機能も、他の利用可能な第１の通信要素２５０および状態機械要素２９０に、必要に応じて移動できる。
【０１０６】
それぞれ完全クロスバー・スイッチとして、またはスイッチ、マルチプレクサ、デマルチプレクサ、または他のトランジスタ配列からなる他の配列として実装されうる、完全相互接続要素２７５および／または分散された完全相互接続要素２９５は、（他の）複合回路要素２６０、第１の通信要素２５０、および状態機械要素２９０の任意の入力に結合され、および／またはそのクラスタ２００内の他のコンポーネントに、またはクラスタ間キュー２４５を介して、隣接するクラスタ２００の完全相互接続要素２７５および／または分散された完全相互接続要素２９５に結合される、複合回路要素２６０、第１の通信要素２５０、および状態機械要素２９０の出力を備える（複合回路要素２６０、第１の通信要素２５０、および状態機械要素２９０または隣接するクラスタ２００の他のコンポーネントへの入力のため）。（同じ複合回路要素内の入力への出力のフィードバックは、選択された実施形態において、別々に示されていないマルチプレクサまたは他のスイッチング装置などを通じて複合回路要素２６０内で内部的に実行されうる）。例示的な一実施形態では、複合回路要素２６０、第１の通信要素２５０、および状態機械要素２９０の出力は、それぞれの複合回路要素２６０について、完全相互接続要素２７５および／または分散された完全接続要素２９５を通じて、並行して、かつ同時に、他の複合回路要素２６０、第１の通信要素２５０、および状態機械要素２９０への入力として実現することができ、これにより、すべての複合回路要素２６０、第１の通信要素２５０、および状態機械要素２９０の間の完全な同時実行通信が可能になる（アービトレーションまたは他の解決を必要とする潜在的衝突を除く）。
【０１０７】
選択された実施形態に応じて、複合回路要素２６０からの出力は、複数の方法で切り替えることができ、これはすべて本発明の範囲内にある。例えば、オプションの出力切り替え要素３８０（図８に例示されている）は、すべての複合回路要素２６０について備えることができ、これは、出力を複合回路要素２６０内の内部フィードバック用に切り替えるか、または出力を完全相互接続要素２７５または分散された完全相互接続要素２９５に切り替えるか、または出力を直接、第１の通信要素２５０に切り替えるか、または出力を直接、状態機械要素２９０に切り替えることができる。図８を参照しつつ以下で説明されている選択された実施形態では、計算要素２７０内の任意のステージから内部フィードバックを送ることができ、また計算要素２７０の出力は、他の複合回路要素２６０、状態機械要素２９０、または第１の通信要素２５０に切り替えるために、出力メモリ（または出力キューもしくはレジスタ）３１５に送られ、次いで、直接、完全相互接続要素２７５に送られる。同様に、複合回路要素２６０への入力は、完全相互接続要素２７５または分散された完全相互接続要素２９５から、または直接、完全相互接続要素２７５および第２のメモリ要素２５５、状態機械要素２９０、および／または第１の通信要素２５０などの他の伝送元から、複数の方法で実現することができる。
【０１０８】
この通信機能は、いずれかの、または両方のデータ伝送元および／またはデータ伝送先に基づき実装されうる。伝送先に基づく通信では、それぞれのコンテキストに対する伝送先アドレスは、典型的には、出力キュー３１５のルーティング・テーブル内に格納される（図８）。次いで、出力が対応するアドレス宛てに送られ、完全相互接続要素２７５または分散された完全相互接続要素２９５は対応する伝送先アドレスについて構成される。この実施形態では、複合回路要素２６０の１つの出力が、複数の複合回路要素２６０への入力として適用される場合、それらの追加の入力を順次与えることができる。他の例示的な実施形態では、追加の出力ファンアウトが与えられ、１つの複合回路要素２６０の１つの出力は、これもまた完全相互接続要素２７５、分散された完全相互接続要素２９５、または他の通信構造を介して、複数の他の複合回路要素２６０内に同時に入力されうる。ハンドシェーキング・プロトコルも使用することができ、データの受信後伝送先は確認を送信するか、または送信しない。
【０１０９】
例示的な一実施形態において実装されている、伝送元ベースの通信では、それぞれのコンテキストに対する伝送元アドレスは、典型的には入力キュー３２０内に格納される。すべての伝送元は、その出力を完全相互接続要素２７５または分散された完全相互接続要素２９５の選択されたバスまたは通信回線上に出す。受信データについては、データがコンテキストの１つまたは複数について指定された伝送元からかどうかを対応する入力キュー３２０で判定し、もしそうならば、メモリ空間が利用可能なときに、対応するデータを受信する。この伝送元ベースの通信では、任意の、またすべての伝送先が選択されたデータ回線上で送信された注目するデータを同時に受信するようにできるので、マルチキャスティングまたはブロードキャスティングが容易になる。ハンドシェーキング・プロトコルも使用することができ、伝送先は送信されたデータを受信できない場合に拒否または使用不可能を知らせる他のメッセージを送信するか、または送信しない（これにより、伝送元が別のときにデータを再送するようにできる）。
【０１１０】
他の例示的な実施形態では、ハンドシェーキングも他のタイプの通信確認も使用されない。物理的データ・リンクは、束縛プロセスの一部として、実行時に確立され、対応するすべての計算プロセスは実行することが許され、しかも入力データが利用可能かどうか、出力データに利用できる空き領域があるかどうかを判定する必要がない。このような実装は、さまざまなアルゴリズムの内部カーネルなどに対するパイプライン処理に有用である。それに加えて、このような実装は、１つのデータ・プロセスがデータの到着を待っており、それにより他のプロセスのデータ・スループットに影響が及ぶときに、データ・ストールまたはデータ逆圧を回避するのに有用である。それに加えて、データ・フロー・ベースの演算を使用するさまざまなコンポーネント、およびデータ・フロー・ベースの演算を使用しない他のコンポーネントなど、これらの実装の組み合わせも使用することができる。例えば、データ・フロー・ベースの演算は、クラスタ２００内の演算に使用することができ、通信演算などの他の演算の単純実行が許される（例えば、ルーティングおよびスイッチング）。
【０１１１】
引き続き図５および６を参照すると、完全相互接続要素２７５および分散された完全相互接続要素２９５が、例示しやすいように、またわかりやすいようにその概要が示されており、例えば、他のクラスタ２００との間でデータの転送を行うため、他の複合回路要素２６０、状態機械要素２９０、メッセージ・マネージャ２６５、またはいずれかの（または両方の）第１の通信要素２５０もしくはクラスタ間キュー２４５に結合される複合回路要素２６０の入力および出力、状態機械要素（ＳＭＥ）２９０と複合回路要素２６０（メモリ要素および通信要素を含む）との間の通信、制御情報、問い合わせ、問い合わせ応答などの転送のためのＳＭＥ  ２９０といずれかもしくは両方の第１の通信要素２５０との間の通信、メッセージ・マネージャ２６５と相互接続部１５５との間の通信、第１の通信要素２５０とクラスタ２００内のさまざまなメモリ（例えば、第２のメモリ要素２５５とクラスタ２００のさまざまなコンポーネント内の他のメモリ）との間の通信、クラスタ２００内の複数のコンポーネントの組み合わせの間の他の通信などを行う、クラスタ２００内の通信のタイプを一般的に表す。当業者であれば、さまざまな通信構造および通信媒体が利用可能であり、そのようなすべての変更形態は、同等であり、本発明の範囲内にあると考えられることを理解するであろう。
【０１１２】
状態機械要素（ＳＭＥ）２９０は、命令の実行、条件およびイベントの判定、オペレーティング・システム管理、および複合回路要素２６０の制御を行うために、ＲＩＳＣプロセッサなどの（比較的小さな）マイクロプロセッサ（またはマイクロコントローラ）として機能する。ＳＭＥ  ２９０は、レガシーのＣプログラムを実装し、他の場合には複合回路要素２６０のステートレス・データフロー演算に対する状態を実装するために使用されうる。状態機械要素２９０は、逐次型プロセッサとして機能するように適合され、その演算は、同じクラスタ２００内の複合回路要素２６０により強化される。ＳＭＥ  ２９０は、さらに、内部メモリを搭載し、第２のメモリ要素２５５、メモリ複合回路要素２６０Ｍ、または複合回路要素２６０内のメモリ３３０を使用してデータおよび命令（またはアクション）を格納することができる。例えば、第２のメモリ要素２５５は、状態機械要素２９０により使用されうる命令を格納するのに十分な深さを有する複数の「長い」キューとして実装することができる。ＳＭＥ  ２９０は、複合回路要素２６０のどれかを使用して、例えば、２つの数の加算または比較などのために、プログラムの実行で必要となる計算もしくは他の機能を実行することができる。状態機械要素２９０は、プログラミング言語でＩＦ、ＣＡＳＥ、ＷＨＩＬＥ、ＦＯＲなどのステートメントを使用して表される条件の判定などの計算の制御機能を実行する。ＳＭＥ  ２９０は、さらに、その制御機能を定義し、追跡するなどのために、制御レジスタまたは他のタイプの内部メモリを有することもできる。すでに述べたように、すべてのクラスタ２００が状態機械要素２９０を備える必要はない。
【０１１３】
さらに、状態機械要素２９０は、（構成／制御バス２８５を介した）複合回路要素２６０の要素インターフェースおよび制御２８０への直接アクセス機能に加えて、命令／コード処理のための対応するメモリ・アクセスおよび他のデータ・アクセスを行いやすくするために第１のメモリ要素２７０Ｍ（および／または第２のメモリ要素２５５）への直接接続を有するものとして例示されている。構成／制御バス２８５を使用する代わりに、そのような通信を、例えば、完全相互接続要素２７５または分散された完全相互接続要素２９５を介して行うことができる。
【０１１４】
状態機械要素２９０は、ハードウェア・オペレーティング・システムを実装するために使用され、スーパーバイザー・モードでは、クラスタ２００内のすべての資源にアクセスすることができ、このため、クラスタ２００内の複合回路要素２６０のすべてをプログラムし、制御し、監視することができる。１つまたは複数のクラスタ２００が、クラスタ２００内に含まれる状態機械要素２９０を有しない実装では、他のクラスタ２００の１つまたは複数の他の状態機械要素２９０が、それらの機能および演算を実行する。タスク制御に加えて、状態機械要素２９０は、クラスタ資源のセルフテスト、タスク（アクション（または命令））のロードまたは割り当て、複合回路要素２６０へのアクション（または命令）の束縛（例えば、実行時束縛）で使用され、またさまざまな複合回路要素２６０とクラスタ２００との間の接続を形成する際にも使用される。割り当ておよび束縛プロセスは、図１４を参照しつつ、以下でさらに詳しく説明される。総合すると、クラスタ２００内のＳＭＥ  ２９０は、分散性の高いコントローラとして機能し、他のコントローラ１７５を伴って、または他のコントローラ１７５を伴わずに、（必要な複合回路要素２６０とともに）装置１００のオペレーティング・システムを実行する。例示的な実施形態では、さまざまなＳＭＥ  ２９０は、例えば、システム起動プロセスの実行、マスター・コントローラとしての動作、および機能している、また機能していない複合回路要素２６０および他のコンポーネントの判定およびマッピングなどの追加の機能を備えることができるＳＭＥ  ２９０の動作も、図８〜１４を参照しつつ、以下でさらに詳しく説明される。
【０１１５】
例えば、ＳＭＥ  ２９０は、クラスタ２００内の複合回路要素２６０の束縛されたタスクを起動すること、タスクをサスペンドすること、複合回路要素２６０のアクションまたは機能をサスペンドすること（タスク全体の一部として）、タスクを停止し、その資源を解放すること（より高い優先度のタスクをロードして実行するなどのために）、シングルステップ・モードで実行するようにタスクを設定すること、タスクを他のロケーションに移動すること（現在そのタスクを実行中の複合回路要素２６０のセルフテストを実行するなどのために）を行うことができる。
【０１１６】
第１のクラスタ２００および第２のクラスタ２００Ａ実施形態におけるメッセージ・マネージャ２６５は、イーサネット（登録商標）・インターフェース、メモリ・インターフェース（例えば、ＤＤＲ−２  ＳＤＲＡＭ）、ＰＣＩ  Ｅｘｐｒｅｓｓインターフェースなどについて装置１００の外部で通信を行うために使用される。メッセージ・マネージャ２６５は、ＳＭＥ  ２９０に直接結合され、より一般的には、さらに、完全相互接続要素２７５または分散された完全相互接続要素２９５、第１の通信要素２５０、および／または複合回路要素２６０（別々には例示されていない）にも結合されうる。例えば、完全相互接続要素２７５により供給されるデータ・ワードは、メッセージ・マネージャ２６５により出力され、外部メモリ内に格納されうる。同様に、さらに、例えば、受信データ、構成、または制御は、ＳＭＥ  ２９０に命令を送るなどのためにＳＭＥ  ２９０に転送（または、第２のメモリ要素２５５内に格納）されうるか、または計算で使用し消費するために複合回路要素２６０に転送されうる。それに加えて、例示的な一実施形態では、メッセージ・マネージャ２６５は、第２の通信チャネルまたはバス２２０（相互接続部１５５の）にも結合される。
【０１１７】
例示的な一実施形態では、追加の代替え形態として、メッセージ・マネージャ２６５は、装置１００内の通信にも使用される。この実施形態では、メッセージ・マネージャ２６５は、クラスタ２００同士の間の通信、またＳＭＥ  ２９０同士の間の通信にも使用される。例えば、メッセージ・マネージャ２６５は、第１のクラスタ２００の１つの複合回路要素２６０が第２のクラスタ２００の他の複合回路要素２６０に情報を転送するために使用される。
【０１１８】
また、例示的な一実施形態では、マトリクス１５０内のすべてのメッセージ・マネージャ２６５が、外部通信を行うよう実装されるわけではない。例えば、４つのマトリクス１５０を使用する１つの代替え実施形態では、それぞれのマトリクス１５０は、６つの対応するクラスタ２００のメッセージ・マネージャ２６５を通じて実装される全部で６つのＰＣＩ  Ｅｘｐｒｅｓｓインターフェースを備える（スーパークラスタ１８５がまったく同じく実装される一実施形態では、１つのスーパークラスタ１８５につき１つ）。同様に、この４つのマトリクスの実施例では、それぞれのマトリクス１５０は、１つまたは２つの対応するクラスタ２００のメッセージ・マネージャ２６５を通じて実装される全部で１つまたは２つのＤＤＲ−２インターフェースを備える。その結果、外部通信用のインターフェースおよび制御を行っていない対応するメッセージ・マネージャ２６５を有する残りのクラスタ２００がある。これらの残りのクラスタ２００について、その対応するメッセージ・マネージャ２６５は、第２の通信要素２１０（スーパークラスタ・レベル）または第３の通信要素１９０（マトリクス・レベル）を通じて、それぞれ、メモリに格納するか、またはＰＣＩ−ｅｘｐｒｅｓｓバス上で外部通信するためにＤＤＲ−２またはＰＣＩ−ｅｘｐｒｅｓｓインターフェースを有するそれらの他のクラスタ２００にデータを転送する。
【０１１９】
メッセージ・マネージャ２６５は、選択された実施形態に応じて、さまざまな方法により実装されうる。第１の選択された実施形態では、メッセージ・マネージャ２６５は、有限状態機械として実装され、上述のような通信規格を実装する。状態機械として実装された場合、メッセージ・マネージャ２６５は、別に実装されるか、またはＳＭＥ  ２９０の一部として組み合わせるようにできる。第２の選択された実施形態では、メッセージ・マネージャ２６５は、条件付きロジックまたは他の状態機械機能を実行するために使用されるＳＭＥ  ２９０とともに、通信インターフェースを実現するためにも、専用計算ロジック・ゲートとして実装される。
【０１２０】
例示的な実施形態では、上に示されているように、複合回路要素２６０は、複合回路要素２６０のタイプまたは種類別（すなわち、複合回路要素２６０内の回路要素２７０のタイプ）の何らかの形式の識別を含み、これにより状態機械要素（「ＳＭＥ」）２９０による識別を容易にする。一般に、ＳＭＥ  ２９０は、実行時束縛で使用するために、クラスタ２００内の複合回路要素２６０のタイプの判定とコンテキストが利用可能かどうかの判定（および必要に応じて、他のＳＭＥ  ２９０への報告）を行う。例えば、例示されているクラスタ２００について、ＳＭＥ  ２９０は、クラスタが１つの構成可能なバレル・シフター・タイプ要素（タイプ「Ａ」に対応する）２７０Ａ、２つの構成可能なトリプルＡＬＵタイプ要素（タイプ「Ｂ」に対応する）２７０Ｂ、１つの構成可能なガロア乗算器タイプ要素（タイプ「Ｃ」に対応する）２７０Ｃ、１つの構成可能なビット並べ替え（「ＢＲＥＯ」）タイプ要素（タイプ「Ｄ」に対応する）２７０Ｄ、および１つの連想メモリ要素（タイプ「Ｍ」に対応する）２７０Ｍを有すると判定することができる。ＳＭＥ  ２９０は、さらに、そのクラスタ２００のＢＲＥＯタイプ要素がもはや正常に機能していない、したがってそのＢＲＥＯタイプ要素の演算は、他のクラスタ２００のＢＲＥＯタイプ要素に移動されうると判断し、別のときに報告することができる。
【０１２１】
引き続き図５および６を参照すると、第２のメモリ要素２５５は、複数の伝送元から、直接的に、または完全相互接続要素２７５または分散された完全相互接続要素２９５を介して間接的に、入力を受け取り、出力（書き込みおよび読み出しが行われる）を行うことができ、例えば、（１）第１の通信要素２５０との間で（ＳＭＥ  ２９０により使用されるデータ、命令、または他の制御情報の入力などの他のクラスタ２００からの入力のため、または複合回路要素２６０により使用されるデータをキューに入れるため）、（２）同じクラスタ２００内の１つまたは複数の複合回路要素２６０（メモリ複合回路要素２６０Ｍを含む）との間で、（３）ＳＭＥ  ２９０との間で、（４）メッセージ・マネージャ２６５との間でそのような入出力を行うことができる。
【０１２２】
図７は、クラスタ２００の他の変更形態として、本発明の教示による第３の例示的なクラスタ２００Ｂを示すブロック図である。この実施形態では、クラスタ２００Ｂは、例えば、図３に例示されているように選択されたマトリクス１５０内に集中する通信機能のために、外部通信機能を備えるなど、通信機能を有する複合回路要素２６０を含む。また、この実施形態では、オプションとして、メッセージ・マネージャ２６５は、そのような外部通信には使用されず、その代わりに、構成可能であるか、または構成不可能であってよい、専用通信複合回路要素２６０内に備えられる。この実施形態では、それぞれの通信複合要素２６０は、ＤＤＲ−２またはＰＣＩ−ｅｘｐｒｅｓｓインターフェースなどの装置１００との間の（外部）通信を行うための標準Ｉ／Ｏインターフェースを形成するために使用される。それに加えて、通信複合要素２６０は、そのようなインターフェースを実現するために追加の入力および出力バスもしくは媒体構造を有することができ、第１の通信要素２５０を通じてクラスタ２０１の外部で通信することに限定されない。選択された実施形態に応じて、追加の通信複合要素２６０は、突発的故障に対する回復力と免疫力を高めるために使用されうる。他のすべての点において、クラスタ２００、２００Ｂは、同一であり、さらに、分散された完全相互接続要素２９５ではなく完全相互接続要素２７５を使用する点でクラスタ２００Ａと異なる。そのため、クラスタ２００への参照があれば、クラスタ２００Ｂとして例示されている第３の実施形態を、クラスタ２００の一変更形態またはより特異的な場合であるものとして意味し、含むことは理解されるであろうし、さもなければクラスタ２００Ｂは別の実施形態としてこれ以上説明されない。しかし、第１のクラスタ２００の実施形態は、図３に例示されているように選択されたマトリクス１５０内に集中している通信機能にも使用されうる。
【０１２３】
クラスタ実施形態では、マトリクス、スーパークラスタ、およびクラスタのアドレス指定が同じであるため、また要素インターフェースおよび制御２８０が同じであるため、他のクラスタ２００（または複合回路要素２６０）は、通信複合要素２６０およびそのクラスタ２０１と通信するか、または外部通信インターフェースを備えるメッセージ・マネージャ２６５を有するクラスタ２００と、他の複合回路要素２６０またはクラスタ２００との通信と同じ方法で通信することができる。そのため、クラスタ２００または複合回路要素２６０が装置１００の外部で通信を行う場合、必要なのは、クラスタ２００または複合回路要素２６０が対応する通信複合要素２６０（選択された形態の通信に対応するインターフェースを持つ）および／またはそのクラスタ２０１のアドレス、または選択された形態の通信に対応するインターフェースを持つメッセージ・マネージャ２６５を有するクラスタ２００のアドレスを有することだけである。そのようなアドレス指定は、例えば、メッセージ・マネージャ２６５、ＳＭＥ  ２９０、または第１の通信要素２５０などのクラスタ２００内のさまざまなコンポーネントにより実行されうる。そのような外部通信は、これにより、仮想アドレス指定を通じて、例えば、メッセージ・マネージャ２６５もしくはクラスタ２００を介して、または通信複合要素２６０もしくはクラスタ２０１を介して、実行され、複合要素２６０は、外部インターフェースのロケーションまたはタイプに関するさらなる情報を必要としない。例えば、クラスタ２００または複合回路要素２６０は、その外部通信がＤＤＲ  ＳＤＲＡＭとであるか、またはイーサネット（登録商標）・プロトコルを使用するものであるかどうか、あるいはそれらのインターフェースが装置１００内のどこに置くことができるかに関する情報を必要としない。同様に、内部通信についても、複合回路要素２６０は、その通信が同じクラスタ２００または異なるクラスタ２００内の他の複合回路要素２６０内で行われるのかどうかに関する情報を必要としない。
【０１２４】
図１８は、本発明の教示による第４の例示的な回路クラスタ２００Ｃを示すブロック図である。第４の例示的な回路クラスタ２００Ｃは、そのトポロジーがある程度の内部階層を有するという点で前に説明したクラスタ実施形態と異なり、第４の例示的な回路クラスタ２００Ｃはゾーン２０１Ａ、２０１Ｂ、２０１Ｃ、および２０１Ｄとして例示されている複数のゾーン２０１に分割され、それぞれのゾーン２０１は別の相互接続部２７５、２９５（完全または分散されている）に結合された４つの複合回路要素２６０（例示されているとおり）を有し、それぞれのゾーン２０１の間の通信は複数のクラスタ・キュー２４５Ａ（すでに説明されているクラスタ間キュー２４５と実質的に同一）を通じて実行される。クラスタ・キュー２４５Ａは、クラスタ２００Ｃ内の通信に使用され、クラスタ２００間の「高速トラック」通信にだけ使用されるわけではない。完全または分散相互接続部２７５、２９５は、さらに、以下でさらに詳しく説明されるように、伝送元に基づくものであり、それぞれ伝送先複合回路要素２６０はその対応するデータ伝送元からの（複数の）通信について相互接続部２７５、２９５を監視する。同等の代替え形態として、完全または分散相互接続部２７５、２９５は、本明細書で説明されているように、伝送先に基づくものとすることができる。
【０１２５】
回路クラスタ２００Ｃは、第１の通信要素２５０を含まない。その代わりに、他のクラスタ２００、スーパークラスタ１８５、マトリクス１５０との通信、または外部通信（ＰＣＩ−ｅバスなどとの）（第２のチャネル（またはバス構造）２２０を介して）は、メッセージ・マネージャ２６５を通じて実行され、第１の通信要素２５０の追加のパケット・ベースおよび回路交換通信機能を実現する。ＣＥ０からＣＥ１４として例示されている複合回路要素２６０はそれぞれ、前に説明されているように完全または分散相互接続部２７５、２９５に結合され、４つの入力および２つの出力がそれぞれの複合回路要素２６０との間に備えられる。例示されているようなクラスタ・キュー２４５Ａ１２からクラスタ・キュー２４５Ａ１６までは、回路クラスタ２００Ｃ内の複合回路要素２６０のさまざまなゾーン２０１の間の通信を行う。
【０１２６】
典型的には、クラスタ・キュー２４５Ａは、本明細書で説明されているような任意のタイプのメモリを使用して、複数の一方向ポートとして実装され、またゾーン２０１間（クラスタ２００Ｃ内で伝送先まで１「ホップ」、ただし、他のデータ伝送元からの競合がなければ、サイクル毎に１「ホップ」が生じる）、または回路クラスタ２００Ｃ間（隣接するクラスタ２００Ｃまで１または２サイクルもしくは「ホップ」、および他の伝送先まで１または複数サイクルもしくは「ホップ」）の両方向の複数の通信経路を形成するように実装される。例示的な一実施形態では、それぞれのクラスタ・キュー２４５Ａは、それぞれの方向に２つ合計４つの通信経路を備える。例えば、クラスタ・キュー２４５Ａ１５は、ゾーン２０１Ｂ（データ伝送元として）からゾーン２０１Ｄ（データ伝送先として）への２つの通信経路を備え、またゾーン２０１Ｄ（データ伝送元として）からゾーン２０１Ｂ（データ伝送先として）への２つの通信経路を備える。例示的な一実施形態では、それぞれのクラスタ・キュー２４５Ａは、さらに、８つのコンテキストを有し、それぞれの方向に、それぞれの通信経路について、それぞれのクラスタ・キュー２４５Ａ間に８つの仮想接続を設ける。
【０１２７】
したがって、この実施形態について、クラスタ・キュー２４５Ａおよびメッセージ・マネージャ回路２６５は、さらに、本発明の範囲内で「通信要素」と考えられる。
【０１２８】
図１９は、本発明の教示による、スーパークラスタ１８５Ｃを含む、例示的な第３の装置実施形態を例示するブロック図である。回路クラスタ２００Ｃに対しこのトポロジーを使用することで、回路クラスタ２００Ｃは、効果的に互いにタイル状またはアレイ状に配列され、Ｃ０からＣ１５まで例示されている１６個の回路クラスタ２００Ｃを有する、スーパークラスタ１８５Ｃとして例示されているスーパークラスタ１８５を形成することができる。回路クラスタ２００Ｃはそれぞれ、複数のクラスタ・キュー２４５Ａを通じて隣接する回路クラスタ２００Ｃと通信する。そこで、それぞれのスーパークラスタ１８５Ｃは、１つまたは複数の第２の通信要素２１０を使用せず、代わりに、スーパークラスタ１８５Ｃ内の１つまたは複数のメッセージ・マネージャ２６５を通じて１つまたは複数の第３の通信要素１９０に接続する。
【０１２９】
ここでもまた図１８を参照すると、この実施形態に関して、クラスタ・キュー２４５Ａは、さらに、隣接するクラスタ２００Ｃとのクラスタ間通信を実現し、またより一般化されたタイプのクラスタ間キュー２４５としてみなしうる。例示されているように、周辺クラスタ・キュー２４５Ａは、回路クラスタ２００Ｃとその隣接する回路クラスタ２００Ｃとの間の通信も実現する。クラスタ間通信について、クラスタ・キュー２４５Ａは、選択された実施形態に応じて、それぞれの方向に１つまたは２つの通信経路を設けるように実装されうる。例えば、例示的な一実施形態では、周辺クラスタ・キュー２４５Ａは、それぞれの方向に１の通信経路を備える。典型的な地理的座標を使用することで、例えば、（複数の）クラスタ・キュー２４５Ａ０は、回路クラスタ２００Ｃと隣接する「北西」回路クラスタ２００Ｃとの間の通信を実現し、（複数の）クラスタ・キュー２４５Ａ１および２４５Ａ２は、回路クラスタ２００Ｃと隣接する「北」回路クラスタ２００Ｃとの間の通信を実現し、（複数の）クラスタ・キュー２４５Ａ３および２４５Ａ４は、回路クラスタ２００Ｃと隣接する「西」回路クラスタ２００Ｃとの間の通信を実現し、（複数の）クラスタ・キュー２４５Ａ５および２４５Ａ６は、回路クラスタ２００Ｃと隣接する「南西」回路クラスタ２００Ｃとの間の通信を実現する。同様に、（複数の）クラスタ・キュー２４５Ａ１１（隣接するクラスタ２００Ｃの一部とみなせる）は、回路クラスタ２００Ｃと隣接する「北東」回路クラスタ２００Ｃとの間の通信を実現し、（複数の）クラスタ・キュー２４５Ａ１０と２４５Ａ９（隣接するクラスタ２００Ｃの一部とみなせる）は、回路クラスタ２００Ｃと隣接する「東」回路クラスタ２００Ｃとの間の通信を実現し、（複数の）クラスタ・キュー２４５Ａ８（隣接するクラスタ２００Ｃの一部とみなせる）は、回路クラスタ２００Ｃと隣接する「南東」回路クラスタ２００Ｃとの間の通信を実現し、（複数の）クラスタ・キュー２４５Ａ６と２４５Ａ７（隣接するクラスタ２００Ｃの一部とみなせる）は、回路クラスタ２００Ｃと隣接する「南」回路クラスタ２００Ｃとの間の通信を実現する。
【０１３０】
それに加えて、後述の実行時束縛などにおける、データ・ルーティングの割り当てでは、第２の通信要素２１０を通じてスーパークラスタ１８５へまたはスーパークラスタ１８５からデータもしくは他の情報をルーティングし、および／または第１の通信要素２５０を通じて回路クラスタ２００へまたは回路クラスタ２００からデータまたは他の情報をルーティングする代わりに、ルーティングは、メッセージ・マネージャ２６５を通じてスーパークラスタ１８５もしくは回路クラスタ２００へまたはスーパークラスタ１８５もしくは回路クラスタ２００から行われ、また本明細書で説明されている伝送元に基づく、または伝送先に基づく通信方式を使用して、さまざまなクラスタ・キュー２４５Ａのどれかを通じて、スーパークラスタ１８５または回路クラスタ２００Ｃ内の指定された複合回路要素２６０へのルーティングにより行うことができる。クラスタ間通信にクラスタ・キュー２４５Ａをこのように使用することには、１つのパケット・トレインに組み立てるのに複数のワードが必要なく、その代わりに生成されると同時に伝達されうる限り、第１の通信要素２５０の使用と比べて待ち時間が短縮されるという潜在的利点がある。スーパークラスタ１８５Ｃおよび回路クラスタ２００Ｃは、さもなければ、それぞれ、スーパークラスタ１８５および回路クラスタ２００に対し本明細書で説明されているように機能する。したがって、スーパークラスタ１８５または回路クラスタ２００への参照は、それぞれ、スーパークラスタ１８５Ｃまたは回路クラスタ２００Ｃを、対応する形で意味し含むと理解されるものとする。
【０１３１】
図８は、本発明の教示による例示的なクラスタ２００内の例示的な複合回路要素２６０をより詳細に示すブロック図である。図８に例示されているように、複合回路要素２６０は、要素インターフェースおよび制御２８０ならびに回路要素２７０（計算要素２７０とも呼ばれる）を含み、これは、一般に、構成可能な計算要素であるが、構成不可能な計算要素、構成可能または構成不可能な通信要素、構成可能または構成不可能な有限状態機械要素であってもよく、構成可能または構成不可能なメモリ要素であってもよく、あるいは装置１００の特定のアプリケーション向けに選択された他の形態の回路であってもよい。
【０１３２】
例示的な一実施形態では、要素インターフェースおよび制御２８０は、（１）要素コントローラ３２５と、（２）コンテキストおよび制御情報（例えば、構成ワード）を格納するメモリ３３０（連想メモリ（「ＣＡＭ」）またはＳＤＲＡＭなどのランダム・アクセス・メモリ）と、（３）入力キュー３２０（メモリの一形態として）と、（４）出力キュー（またはレジスタ）３１５（これもまたメモリの一形態として）とを備える。他の例示的な実施形態では、要素インターフェースおよび制御２８０は、要素コントローラ３２５、メモリ３３０、および入力キュー３２０または出力キュー３１５の、両方ではなくいずれか一方を備えることができる。追加の例示的な実施形態では、要素インターフェースおよび制御２８０は、メモリ３３０、および入力キュー３２０または出力キュー３１５のいずれかを備えることができるが、要素コントローラ３２５を含まない。後者の実施形態では、ＳＭＥ  ２９０がアクションを割り当て、データ・ルーティングを確定した後、複合回路要素２６０内では、別の、または追加の制御は使用されず、複合回路要素２６０は割り当てられたコンテキストを自由に、および／または連続的に実行することが許される。
【０１３３】
上述のように、選択された実施形態において、要素インターフェースおよび制御２８０は、さらに、１つまたは複数のスイッチ、トランジスタ、マルチプレクサまたはデマルチプレクサなどのオプションの出力スイッチング要素３８０を備え、複合回路要素２６０内の内部フィードバックを行うか、または出力データを完全相互接続要素２７５または分散された完全相互接続要素２９５に送ることに加えて、出力データをＳＭＥ  ２９０、メッセージ・マネージャ２６５、または第１の通信要素２５０に送るなどのために、出力データ用の直接スイッチング機能を実現することができる。上述のように、メモリ３３０、入力キュー３２０、および出力キュー３１５は、限定はしないがＣＡＭまたはＳＤＲＡＭなどの、前に述べた任意のメモリ・タイプを含む、任意の形態のメモリとして実装されうる。
【０１３４】
入力キュー３２０は、それぞれ１６ビット・データ・ワード１つ分の幅を有する例示的な４つの入力として例示されている、構成可能な回路要素２７０への複数の入力３６５を備える。それとは別に、この幅は、例えば、プレースホルダを指定するビットを含むくらいの広さとしてよい。入力キュー３２０は、組み合わされた３２ビット・データ・ワードに２つの入力を使用するなどして、互いに独立であるか、または互いに依存していてもよい。例示的な実施形態では、入力キュー３２０は、回路要素２７０への入力のそれぞれに対し備えられ、入力キュー３２０のそれぞれは、回路要素２７０により使用されうるそれぞれのコンテキストに対し別々のキューを備える。それに加えて、入力キュー３２０は、深さが１または２データ・ワードである「ショート・キュー」として実装できるが、より深いキューおよびその他の形態のメモリも本発明の範囲内にある。例示的な一実施形態では、８つのコンテキストが、４つの入力のそれぞれについて使用され、深さは少なくとも２データ・ワードである。またコンテキストを組み合わせることで、選択されたコンテキストに対し、より大きなキュー、例えば、１６ワードのものを実装することができる。
【０１３５】
入力キュー３２０は、直接的に、または完全相互接続要素２７５または分散された完全相互接続要素２９５を介して、スイッチング配列に応じて、複数の入力ソースのどれかから、例えば、（１）第１の通信要素２５０（他のクラスタ２００からの入力のため）から、または（２）同じクラスタ２００内の１つまたは複数の他の複合回路要素２６０（メモリ複合要素２６０Ｍを含む）から、または（３）第２のメモリ要素２５５から、または（４）メッセージ・マネージャ２６５から、または（５）ＳＭＥ  ２９０（例えば、条件またはイベントを評価するなど、値の計算または２つの値の比較のためにＳＭＥ  ２９０により使用されたとき）からデータを受け取ることができる。図８に例示されているように、入力キュー３２０は、例示的なマルチプレクサ３３５として例示されている、完全相互接続要素２７５または分散された完全相互接続要素２９５のいずれかからデータを受け取る。例示的な一実施形態では、マルチプレクサ３３５は、１６対１マルチプレクサであり、これにより入力キュー３２０は、入力データについて相互接続部２７５、２９５のバスを選択することにより割り当てられた伝送元からデータを取得することができる。回路要素２７０からの出力は、さらに、入力キュー３２０を通じて、または要素２７０の回路内で直接的に、上述の出力スイッチング要素３８０を介して、または単純に、完全相互接続要素２７５を介して、入力として送られるべくフィードバックされうる。
【０１３６】
例示的な一実施形態では、２つの出力キュー（レジスタまたは他の形態のメモリ）３１５が備えられ、それぞれ対応する８つのコンテキストを有し、それぞれ１６ビット・データ・ワード１つ分の幅を有し、１つ、２つ、またはそれ以上のデータ・ワードの選択された深さを有する。それとは別に、この幅は、例えば、プレースホルダを指定するビットを含むくらいの広さとしてよい。出力キュー３１５は、さらに、組み合わされた３２ビット・データ・ワードに２つの出力キューを使用するなどして、互いに独立であるか、または互いに依存していてもよい。またコンテキストを組み合わせることで、選択されたコンテキストに対し、より大きなキュー、例えば、８〜１６ワードのものを実装することができる。出力データを格納することに加えて、出力キュー３１５（組み込まれた状態機械を使用する）は、追加の伝送先に分配するために同じ出力データを追加のコンテキストに送るなど、出力データを複製することもできる。
【０１３７】
複数の出力３７５は、２つの出力として例示されている、回路要素２７０の出力キュー３１５から供給され、また、それぞれ１６ビット・データ・ワード１つ分の幅を有する（または、上述のように、プレースホルダ・ビット、制御情報、または他のデータを含めるなどのために、さらに広い幅）。出力３７５は、さらに、組み合わされた３２ビット・データ・ワードに２つの出力を使用するなどして、互いに独立であるか、または互いに依存していてもよい。出力３７５は、完全相互接続要素２７５または分散された完全相互接続要素２９５（またはオプションの出力スイッチング要素３８０）に送られ、この要素は、これらの複数の出力３７５のそれぞれを（対応する通信構造またはバス３５０を介して）、独立して、（１）第１の通信要素２５０（他のクラスタ２００への出力のため）に、または（２）同じクラスタ２００内の１つまたは複数の（他の）複合回路要素２６０（メモリ複合要素２６０Ｍを含む）に、または（３）ＳＭＥ  ２９０（値の計算または２つの値の比較のため（例えば、条件またはイベントを評価するため）にＳＭＥ  ２９０により使用される場合など）に、または（４）メッセージ・マネージャ２６５に、または（５）ＳＭＥ  ２９０または他のコンポーネントへの入力のためのロング・キューなどのオプションの第２のメモリ要素２５５に送ることができる。上述のように、オプションの出力スイッチング要素３８０および他の出力スイッチング配列も、利用可能であり、エレクトロニクス分野の当業者にとっては、明らかなことであり、同等のものであると考えられ、本発明の範囲内にある。
【０１３８】
選択された一実施形態では、メモリ３３０は、ＣＡＭとして実装されており、格納されているタスク識別子（タスクＩＤ）および格納されているアクション識別子（アクションＩＤ）の探索および識別が容易になる。他の実施形態では、メモリ３３０は、ＲＡＭとして実装され、探索および識別は二分探索法などの他の探索法を使用して実行される。しかし、他のタイプおよび組み合わせのメモリも、使用することができ、すべて同等であり、本発明の範囲内にあると考えられ、これらは、選択された実施形態に応じて、揮発性であろうと不揮発性であろうと、限定はしないが、ＲＡＭ、ＦＬＡＳＨ、ＤＲＡＭ、ＳＤＲＡＭ、ＳＲＡＭ、ＭＲＡＭ、ＦｅＲＡＭ、ＲＯＭ、ＥＰＲＯＭまたはＥ２ＰＲＯＭ、または他の任意のタイプのメモリ、記憶媒体、または知られている、もしくは知られることになるデータ記憶装置もしくは回路を含む。
【０１３９】
メモリ３３０は、例示的な実施形態では、構成可能な要素２７０を構成し、その動作を指令するために使用される、コンテキストと制御情報の両方を格納するために使用される。このようなコンテキストおよび制御情報は、複数の情報フィールドとして、例示的な実施形態では、構成ワードとして格納され、これについては図１６を参照しつつ以下で説明される。それに加えて、状態機械要素２９０を通じて、このような構成ワードは、変更される、削除される、取って代わられる、追加される、などの操作を受けることができ、構成ワード内のさまざまなビットを修正することにより、回路要素２７０による演算の実行も制御されうる。コンテキストおよび制御情報のこのようなローカルへの格納により、リモート・メモリからの構成または命令のフェッチおよび読み込みが不要になるが、回路要素２７０の即時構成および制御のためのコンテキストとしてすぐに使用できるので、実行能力が大幅に高速化される。したがって、装置１００は、典型的なプロセッサの実行能力を制限する「フォン・ノイマン」ボトルネックの影響を受けない。実際、さまざまなメモリ３３０は、例えば、コンポーネントに障害が発生した場合の命令（またはアクション）の分散処理、分散デジタル信号処理、分散プログラミング、および分散再束縛などのために、有利に使用されうる大規模な非常に高度に分散される命令メモリとして機能する。
【０１４０】
また、コンテキストをこのように使用し、ローカルに格納することにより、複合回路要素２６０、第１の通信要素２５０、および状態機械要素２９０の演算の時分割を大きく進めることができる。例えば、選択された複合回路要素２６０の一方のコンテキストが、他の複合回路要素２６０によりまだ形成されていなかった入力データを必要とする場合があるが、他のコンテキストは、アイドル状態のままになっている複合回路要素２６０ではなく、選択された複合回路要素２６０上で実行されうるようにできる。同様に、状態機械要素２９０により複数のコンテキストを使用することで、マルチスレッド化された演算を実行できる。例えば、ＳＭＥ  ２９０は、第１のコンテキストについて特定の第１のデータセットで第１のコードの実行を開始し、中間結果および第１のコード・ポインタを格納し、第２のコンテキストに対する第２のデータセットで第２のコードの実行を開始し、出力を送り、その後、第１のコード・ポインタおよび格納されている中間結果を使用して第１のコードの継続実行のため第１のコンテキストに戻ることができる。このように時分割されたコンテキストを使用することで、さらに、タスクのインタリービングおよび他の方法ではアイドル状態になると思われる資源の使用が可能になり、これにより、複数のタスク間で資源を共有することができ、またＩＣの総合的な資源利用度も向上する。
【０１４１】
要素コントローラ３２５は、組み合わせロジック・ゲートを通じて、および／または有限状態機械として、実装することができ、またメモリ３３０内に格納されている構成ワード（コンテキストおよび制御情報）を使用して、回路要素２７０をどのように構成するか、回路要素２７０がいつ動作するかを制御するために使用される。より具体的には、例示的な実施形態において、回路要素２７０は、データ・フローに基づいて動作し、その入力のところにデータが出ている場合、生成される出力データを格納または消費するのに利用できる伝送先がある場合、要素コントローラ３２５により許可された場合に、回路要素２７０は演算（または発火）を開始し、入力データに対して計算または操作を実行し、対応する出力データを送る。要素コントローラ３２５は、特定の条件および優先度（およびメモリ３３０内に１つまたは複数の構成ワードとして格納されている他の情報）に基づき、このデータ・フロー演算を制御する。例えば、複数のコンテキストが実行可能な状態にある場合、要素コントローラ３２５は、ラウンド・ロビン方式、または１つまたは複数の優先度の評価、活動のスケジュールされた実行、または活動が最後に実行された時間（例えば、一番最近実行されたアクションは、アービトレーションにおいて低い優先度を有するが、最も長い間実行されていないアクションは、アービトレーションにおいて高い優先度を持つことができる）用いて、どれが最初に実行するかについてアービトレーションを実行することができる。
【０１４２】
要素コントローラ３２５は、精密化をさまざまなレベルで行って実装されうる。上述のように、一実施形態では、要素コントローラ３２５は、実装されず、複合回路要素２６０は他の制約（例えば、さまざまなＳＭＥ  ２９０からの制御）を受けながら本質的に連続モードで動作する。まったく正反対に、要素コントローラ３２５は、第１のコンテキストの部分実行の現在の状態を（第１の）メモリ３３０内に格納し、第２のコンテキストを（回路要素２７０を介して）実行し、現在の状態を取り出して、回路要素２７０による第１のコンテキストの実行を再開することなどにより、回路要素２７０のマルチスレッド化演算を実行できる。
【０１４３】
例示的な構成可能な計算要素２７０が、図９および１０に示されている。図９は、例示的な乗算器タイプの構成可能な要素２７０Ｆのブロック図であり、図１０は、例示的なトリプルＡＬＵタイプの構成可能な要素２７０Ｇのブロック図である。例示されているように、それぞれ、４つの１６ビット入力３６５および２つの１６ビット出力３７５を有し、コンテキストに応じて、それぞれすべての入力３６５および３７５を利用することができる。選択されたコンテキストに対応する構成は、選択された構成を実装するために対応するマルチプレクサ、デマルチプレクサ、および他のスイッチング要素のモード選択について実現される。
【０１４４】
図９に例示されているように、例示的な乗算器タイプの構成可能な要素２７０Ｆは、３２ビット乗算、１６ビット乗算、累算、および１６ビットと３２ビットの算術演算の混合演算など、複数の動作モードについて構成可能である。簡単に高水準の説明を行うと、乗算器タイプの構成可能な要素２７０Ｆは、４つのマルチプレクサ３８３、３８４、３８５、３８６を使用し、３２ビット出力選択３８７を使用し、そして加算器／減算器３８２および乗算器３８１に入力された他の構成ビットを使用して、構成されうるということである。３２ビット出力選択３８７では、加算器／減算器３８２の下位３２ビットが出力されるかどうか、または６４ビット累算レジスタ３８８のどの部分が出力されるかを指定する。マルチプレクサ３８５（Ａ選択）では、加算器／減算器３８２へのＡ入力を、ゼロ、Ｉ１、Ｉ２、または累算レジスタ３８８として指定し、マルチプレクサ３８６（Ｂ選択）では、加算器／減算器３８２へのＢ入力のアライメントを、乗算器３８１からの６４ビット出力の４つの１６ビット部分のうちの１つとして指定し、加算器／減算器３８２への構成ビットは、さらに、Ａ入力が符号付きであるか、符号なしであるか、およびＢ入力が加算されるのか、減算されるのかを指定する。マルチプレクサ３８３（Ｐ選択）では、乗算器３８１へのＰ入力を、Ｉ３、Ｉ２として指定し、また符号付きか、符号なしかも指定する。マルチプレクサ３８４（Ｑ選択）では、乗算器３８１へのＱ入力を、Ｉ１、Ｉ０として指定し、また符号付きか、符号なしかも指定する。それに加えて、乗算器タイプの構成可能な要素２７０Ｆは、さらに、６４ビット累算レジスタ３８８からマルチプレクサ３８５への要素２７０内の出力フィードバックを例示している。
【０１４５】
図１０に例示されているように、例示的なトリプルＡＬＵタイプの構成可能な要素２７０Ｇは、例えば乗算、加算、および減算（符号付き算術演算の）、マスキング、算術平均、および丸めを含むという点でさまざまな機能用に構成可能である。それに加えて、例示的なトリプルＡＬＵタイプの構成可能な要素２７０Ｇは、定数を出力し、１つの値を渡し（ＡまたはＢをその出力にコピーする）、論理演算（ＮＯＴ、ＡＮＤ、ＯＲ、ＸＯＲ）を実行し、条件付きまたは無条件データ・フローを実行することができる。図１０に例示されているように、構成ビットに応じて、シフター３９３、３９４、および３９５のそれぞれは、その対応する入力を指定された量だけ左（正）または右（負）にシフトする。ＡＢＳブロック３８９、３９９は、構成ビットに応じて、入力の絶対値を計算するか、または入力を渡す。ステータス・マルチプレクサ３９６は、ＡＬＵ  ３９０、３９１、および３９２のそれぞれからのフラグ・ビットを使用してステータス・ワードを生成し、ＳＭＥ  ２９０に送ることができるが、その際に、１つのフラグ・ビットでキャリーまたは比較を指定し、第２のフラグ・ビットで、その結果が最上位ビットであることを指示し、第３のフラグ・ビットで、その結果が負の１（−１）であることを指示し、第４のフラグ・ビットで、その結果がゼロであることを指示する。条件スワップ・マルチプレクサ３９７および３９８は、入力Ｉ３、Ｉ２上で条件付き実行を行うために使用され、その結果に基づき、Ｉ０および／またはＩ１を出力３７５に渡し、さらに、出力３７５にコピーされる前に入力のスワップを行う。
【０１４６】
上述のように、これらのタイプの構成可能な要素２７０に加えて、他の予想される構成可能な要素２７０は、ビット並べ替え要素（「ＢＲＥＯ」）、単一ＡＬＵ要素、「スーパー」ＡＬＵ要素（３２ビットＡＬＵ）、バレル・シフター要素、ルックアップ・テーブル要素、メモリ要素、プログラム可能コントローラ要素、通信要素などを含む。
【０１４７】
Ｂ．装置向けのプログラム・コンパイル
図１１は、本発明の教示による例示的なコンパイル・プロセスを示す流れ図である。以下の説明は、本発明を説明することを目的として非常に高い水準のものであることは理解されるべきである。コンパイル・プロセスは、コンピュータ・システムまたはネットワーク、ワークステーション、処理デバイス、１つまたは複数のマイクロプロセッサ、電子設計自動化（「ＥＤＡ」）ツール、電子システム・レベル（「ＥＳＬ」）ツールなどを使用して実行されうる。
【０１４８】
図１１を参照すると、この方法は、開始ステップ４００から始まり、ステップ４０５でコンパイルのためのアルゴリズムの選択を行う。このようなアルゴリズムは、例えば、数学的記述からマイクロプロセッサ用のソース・コードまたはオブジェクト・コードのリスティングに至るまで、さまざまな方法で表すことができる。アルゴリズムは、ステップ４１０で複数の「タスク」に変換または分解されるが、これらは逆高速フーリエ変換（ＩＦＦＴ）の実行など、機能またはプロセスの高水準記述である。次いで、ステップ４１５で、タスクが複数のタスクから選択され、タスク識別子（「タスクＩＤ」）を割り当てられるが、これは、典型的には、タスクを同じアルゴリズムの複数のタスクの他のインスタンスから、またはこれもまた装置１００上で同時実行されている他のアルゴリズムのタスクから十分区別できる一意的な識別子である。
【０１４９】
選択されたタスクは、次いで、ステップ４２０で、タスクを実行するために、複合回路要素２６０（計算、状態機械、および／または通信複合要素２６０、２９０、２５０を含む）により実行される１つまたは複数のアクションに変換または分解される。上述のように、「アクション」は、例えば、乗算、ビット操作、および命令処理などの、複合回路要素２６０により実行される機能または活動のタイプであり、プロセッサにより実行される命令またはそれと同じ結果を得るためにＡＳＩＣもしくはＦＰＧＡにより実行される機能と同等であると考えられる。例えば、ＩＦＦＴタスクは、乗算、加算、および累算ステップなどの複数の「バタフライ」ステップに分解することができ、そのそれぞれまたはすべてが、「ｍｕｌｔｉｐｌｙ‘ａ’ｔｉｍｅｓ‘ｂ’（ａ  ｘ  ｂ）」などの１つのアクション（または命令）を構成し、複合回路要素２６０のうちの１つの要素の演算構成の１つに対応する。したがって、本明細書に使用されているように、「アクション」、「機能」、または「活動」という用語は、同等のものとして、入れ替えて使用され、そのような回路プロセスを意味する。（その結果、そのようなアクション（または命令）は、一度割り当てられ束縛されると、要素２７０のうちの１つまたは複数の要素の構成の形でＩＣ上に残る）。ステップ４２５で、１つまたは複数のアクション（または命令）のうちの１つのアクション（または命令）が選択され、アクション識別子（「アクションＩＤ」）を割り当てられるが、これは、そのアクションを選択されたタスクに対する他のアクション（または命令）から十分区別できる一意的な識別子である。タスクＩＤおよびアクションＩＤは、図１４を参照しつつ以下で説明されている、実行時束縛プロセスにおいて使用される。
【０１５０】
次いで、それぞれのアクション（または命令）は、ステップ４３０で、使用される（複数の）複合回路要素のタイプ別に１つまたは複数の複合回路要素２６０の１つまたは複数のコンテキストとしてマッピングまたは割り当てられ、そのアーキテクチャ内の特定の複合回路要素２６０または特定のアドレスには割り当てられず、特定のハードウェア・コンポーネントに結び付けられていない「シンボリックな」、ジェネリックな、または非特異的なコンパイルが行われる。例えば、乗算および加算アクション（または命令）は、単一コンテキストとして、ＡＬＵタイプの複合要素２６０（ＡＬＵタイプの回路要素２７０を有する複合要素２６０）にマッピングされ、特定のクラスタ２００内の特定のＡＬＵタイプの複合要素２６０にはマッピングされない。より複雑なアクション（または命令）は、複数のタイプの複合回路要素２６０の複数のコンテキストにマッピングされうる。後から、束縛プロセスの一部として、選択されたタイプの１つまたは複数の特定の複合回路要素２６０は、その（またはそれらの）利用可能なコンテキストのうちの１つまたは複数として、アクションを実行する（またはそれと同等であるが、命令を実行する）ように割り当てられる。この区別は、重要であるが、装置１００の動作中に、アクション（または命令）を最初に１つまたは複数の複合回路要素２６０に割り当て、その後、場合によっては、必要に応じて、他の複合回路要素２６０に再割り当てすることができるからである。それに加えて、示されているように、例示的な実施形態では、この独立の束縛プロセスは、アクション（または命令）を、複合回路要素２６０の選択されたタイプについて利用可能な１つまたは複数のコンテキストとして割り当てることができ、他のコンテキストは、他のアクション（または命令）を割り当てるのに利用可能なまま残っている可能性がある。
【０１５１】
このプロセスの一部として、ステップ４３５において、それぞれのアクション（または命令）に対する対応する「リンク」も、このジェネリックな、シンボリックな、または非特異的なレベルで決定される、つまり、ジェネリックまたはシンボリック「ポインタ」として決定され、アクション毎に、入力データの伝送元またはデータ出力の伝送先またはその両方に関する情報が生成され、保持される。例えば、タスク「４１８」のアクション番号「５１２」は、ＡＬＵタイプの複合要素２６０にマッピングされることに加えて、タスク「２２９」のアクション番号「４１４」から入力を受け取る、またはタスク「３１９」のアクション番号「８１１」に出力を送る（またはその両方）という関連情報を有する。そのような一組の入力リンクまたは出力リンクのいずれかのみが必要であるが、ただし、その一組の情報が、すべてのアクション（または命令）について一貫して生成される場合であり、その際に、そのデータ伝送元に入力をリンクすることは、自動的に、データを利用するこの入力（伝送先）にデータ伝送元の出力をリンクすることになり、その逆も言える。選択された実施形態では、Ｉ／Ｏリンク情報の両方の集合を用意すると有益であると思われる。入力と出力との間のこの関係または「リンク」は、ジェネリックまたはシンボリック・ポインタを通じて、後述のタスクおよびアクション（または命令）束縛プロセスの一部として有用でもある。ステップ４３５のこの入力または出力リンクの決定は、さまざまな順序で、さまざまなステップのどれかに従って、コンパイル・プロセスにおいて実行されうる。例えば、この決定は、１つのタスクに対するすべてのアクション（または命令）が決定され、複合回路要素２６０のタイプにマッピングされた場合、またはすべてのアクション（または命令）およびタスクが、決定され、複合回路要素２６０のタイプにマッピングされた場合に、ステップ４４０または４４５のいずれかに従って実行されうる。
【０１５２】
コンパイル・プロセスは、さらに、ステップ４４０で、対応する形でさまざまな複合回路要素２６０によるある程度の実行の近接性または局所性を必要とするプログラムまたはアルゴリズムにおけるタイミング制約を決定し、影響を受けるタスクおよび／またはアクション（または命令）に対する対応するリージョン制約を定める。例えば、さまざまなタイミング要件に関して、他のクラスタ２００または他のスーパークラスタ１８５との間の相互接続１５５におけるデータ・パケットのルーティングから引き起こされうる遅延を回避するために、単一クラスタ２００内で、または同じスーパークラスタ１８５内のクラスタ２００のグループ内でいくつかのプロセスが実行される必要がある場合がある。これらの状況において、リージョン要件が、「ｒｅｇｉｏｎ」コマンドまたは命令指定などにより、コンパイルされた出力（後述の「シンボリック・ネットリスト」）内に入れられ、例えば、後に続くアクション（または命令）が、単一クラスタ２００内、または単一スーパークラスタ１８５内で実行されなければならず、その後、単一クラスタ２００または単一スーパークラスタ１８５に限定されたアクション（または命令）に対する「終了リージョン」指示があるようにする。選択された実施形態に応じて、そのようなリージョン制約は、さらに、回路クラスタ２００Ｃなどの、回路クラスタ２００内のゾーン２０１に拡張されうる。
【０１５３】
ステップ４４０の後、この方法は、ステップ４４５で、識別子を割り当て、複合回路要素２６０のタイプにマッピングされる追加のアクション（または命令）があるかどうかを判定し、もしあれば、この方法は、ステップ４２５に戻り、繰り返して、次のアクション（または命令）を選択し、ステップ４２５、４３０（場合によっては４３５）、および４４０へと進む。ステップ４４０で、そのタスクに対するすべてのアクション（または命令）が識別子を割り当てられ、複合回路要素２６０のタイプ（および場合によっては、リンクされた入力または出力）にマッピングされると、この方法は、ステップ４５０に進み、追加のタスクがコンパイルされるべきかどうかを判定する。ステップ４５０で、追加のタスクがコンパイルされることになった場合、この方法は、ステップ４１５に戻り、繰り返し、次のタスクを選択し、タスクＩＤを割り当て、といったことを行う。
【０１５４】
ステップ４５０で、すべてのタスクが処理され、選択されたアルゴリズムが、複数のタスクおよびアクション（または命令）に変換され、次いで、複合回路要素２６０のタイプにシンボリック（ジェネリックまたは非特異的）マッピングされ、いずれかのデータ入力元またはデータ出力先（またはその両方）により（例えば、シンボリック・ポインタを使用して）シンボリック・リンクされると、この方法は、ステップ４５５で、複合回路要素およびルーティング「シンボリック・ネットリスト」またはシンボリック・コンパイルを生成する。このシンボリック・ネットリスト、リスティング、またはコンパイルは、複数のシンボリック・ネットリスト要素を含み、それぞれのそのようなシンボリック・ネットリスト要素はアルゴリズムまたはプログラムのそれぞれのタスクのそれぞれのアクションの実行のための情報に対応し、またその情報を含む。より具体的には、それぞれのシンボリック・ネットリスト要素は、（１）タスクＩＤ、（２）アクションＩＤ、（３）１つまたは複数のタイプの複合回路要素２６０および対応するタスクＩＤおよびアクションＩＤのアクション（または命令）の実行のためそれぞれのタイプの複合回路要素２６０に必要なコンテキストの数、（４）入力または出力（またはその両方の）リンク情報、および（５）対応するタスクまたはアクション（または命令）に対するリージョン（つまり、近接性）制約に関する情報を含む。それに加えて、コンパイル方法は、スーパークラスタ１８５Ｃおよび回路クラスタ２００Ｃトポロジーを含む、本明細書で説明されているさまざまな回路および相互接続トポロジーのどれかに適用可能である。
【０１５５】
ステップ４３０で１つまたは複数のタイプの複合回路要素２６０にマッピングし、ステップ４３５で命令をリンクする代わりに、アクション（または命令）を「マクロ定義」または「ライブラリ」にマッピングすることも可能である。このような「マクロ定義」または「ライブラリ」は、本質的に、プリコンパイルされたタスクまたはアクションであり、これらはすでに、複数のタイプの複合回路要素２６０にマッピングされており、またそれに対応して（もしあればリージョン制約と）、対応するシンボリック・ネットリストとともにリンクされている。例えば、ＩＦＦＴは、ＩＦＦＴライブラリにマッピングすることができ、これは、装置１００を使用してＩＦＦＴを実行するための複合要素タイプおよび複合要素リンクの情報のすべてを含む。このようなライブラリ作成は、例えば、ストリーミング・メディアのＨ．２６４のさまざまアルゴリズムをマッピングするなど、さまざまなレベルにおいて実行されうる。
【０１５６】
さらに、選択されたアクションまたはタスクに対するそのようなマッピングおよびリンクの複数の集合がありえ、これは、異なる目標に関して最適化することができ、それぞれの結果として異なるシンボリック・ネットリストが得られる。例えば、上述のように、トリプルＡＬＵタイプの複合要素２６０により実行されるタスクは、代わりに、３つの単一のＡＬＵタイプの複合要素２６０にマッピングされうる。これは、潜在的に帯域幅または実行速度を低下させる可能性があるが、他の高優先度のアルゴリズムがすべての利用可能なトリプルＡＬＵタイプの複合要素２６０の利用可能なすべてのコンテキストを使用している場合に装置１００による実行を可能にすることができる。同様に、ＡＬＵタイプの複合要素２６０により実行されるタスクは、代わりに、複数の加算および乗算タイプの複合要素２６０にマッピングすることができ、これにより、さらに他のマッピングおよびリンクの変更形態を形成することができる。
【０１５７】
利用可能なこれらのマッピングおよびリンク変更形態の結果として、選択されたアルゴリズムは、複数のシンボリック・ネットリストを生成させることができ、それぞれ、実行速度、電力最小化、小さな資源での実行能力、安全性、冗長性、衝突解決などのさまざまな目標について最適化されるか、または選択されるものである。例えば、図１を参照すると、ＩＣの重要な部分が破損してしまい、ＡＢＳの最適なアルゴリズムに、実行するのに十分なＩＣ資源が残っていない場合、ＡＢＳ機能の他の（次善の）バージョンをＩＣにロードして束縛し、これにより重要機能は標準的なマイクロプロセッサなどの他のＩＣでは完全に動作しえない状況下で動作を続け、潜在的に有害な結果を回避することができる。
【０１５８】
ステップ４５０でのシンボリック・ネットリスト生成の後、このコンパイル方法で、追加のアルゴリズムがコンパイルされるべきか、または上述のように、４５５で、選択されたアルゴリズムに対する追加のバージョンまたは代替え形態がコンパイルされるべきかどうかを判定し、もしそうであれば、この方法はステップ４０５に戻り、繰り返す。ステップ４５５でコンパイルすべきアルゴリズムまたはアルゴリズムのバージョンがさらにない場合には、この方法は終了し、ステップ４６０に戻ることができる。
【０１５９】
Ｃ．オペレーティング・システム
図１２は、本発明の教示による例示的なオペレーティング・システムまたはプロセスを示す高水準流れ図である。以下の説明は、本発明を説明することを目的として非常に高い水準のものであることは理解されるべきである。さまざまなＳＭＥ  ２９０により実行されることに加えて、このオペレーティング・システム機能は、１つまたは複数の追加のコントローラ１７５により実行することが可能である。
【０１６０】
このプロセスは、ステップ５００から始まり、ＳＯＣの一部として、または車両、コンピュータ、複合システム、携帯電話、パーソナル・デジタル・アシスタント、ＭＰ３プレイヤーなどの他のシステム内で、装置１００の電源がオンにされる。ステップ５０５で、典型的には、状態機械要素２９０のそれぞれにより、セルフテストが実行され、これらの要素は、それら自体をテストし、例示的ないくつかの実施形態で、対応するクラスタ２００または他のクラスタ２００（例えば、対応するＳＭＥ  ２９０なしで実装されたクラスタ２００について）内のさまざまな複合回路要素２６０、第１の通信要素２５０、（複数の）完全相互接続要素２７５または分散された完全相互接続要素２９５、他の状態機械要素、および他のロジック、通信、またはメモリ要素をテストすることができる。これらのさまざまなコンポーネントが正常に動作しているかどうかを判定するさまざまな方法がある。例示的な一実施形態では、動作判定は、複合回路要素（対応するクラスタ２００または他のクラスタ２００内のさまざまな複合回路要素２６０、第１の通信要素２５０、（複数の）完全相互接続要素２７５または分散された完全相互接続要素２９５、他の状態機械要素２９０、および他のロジック、通信、またはメモリ要素のすべてを含む、包含的な意味で使用される複合回路要素とともに）により実行され、少なくとも、複数の複合回路要素のうちの少なくとも１つの複合回路要素により実行される定期的診断機能、複数の複合回路要素のうちの少なくとも１つの複合回路要素の選択されたコンテキストとして実行されるバックグラウンド診断機能、または同じ回路要素タイプの複数の複合回路要素により実行される比較テストの判定タイプのうちの１つである。例えば、要素２７０のタイプを含む、さまざまなタイプの複合回路要素のそれぞれが、診断セルフテストをそれぞれ実行し、それに続いて、対応する結果を比較することができる。同じタイプの他の複合回路要素２６０の結果を比較するなどにより、第１の複合回路要素の結果が、予想される結果と一致しない場合、第１の複合回路要素は、欠陥があるか、または正常に動作していないとみなされ、利用可能な資源のマップまたはリスト内に含まれない（以下のステップ５１５）。
【０１６１】
ＳＭＥ  ２９０（またはコントローラ１７５）の１つまたは複数が、次いで、ステップ５１０で、関連するメモリ（例えば、フラッシュもしくは他のＥＥＰＲＯＭメモリ）内または同じＩＣまたは関連するシステムの一部であってよい、ハードディスク・ドライブ、光ドライブなどの他のデータ記憶デバイス内に装置１００用に設計され、格納されているプログラムなどの、起動プログラムを取得して実行する。
【０１６２】
ステップ５１５および５２０で、２つの重要機能がオペレーティング・システムの起動プロセスの一部として実行される。ＳＭＥ  ２９０の１つまたは複数が、ステップ５１５で、複合回路要素２６０、第１の通信要素２５０、および他のコンポーネントが正常に機能しているクラスタ２００またはスーパークラスタ１８５内のリストなど、利用可能な装置１００の資源のマップまたはリストを作成する（例えば、メモリまたはディスク・ドライブに対する不良または正常セクター・マップを作成することに似ている）。ステップ５１５は、例えば、対応するクラスタ２００についてはそれぞれのＳＭＥ  ２９０により、またはスーパークラスタ１８５またはマトリクス１５０全体については１つまたは複数のＳＭＥ  ２９０（事前に指定されているか、または起動プログラムで決定されたとおりの）により実行されうる。例示的な一実施形態では、ステップ５１５は、複合回路要素２６０、クラスタ２００内に、およびマトリクス階層全体にわたって配置または分散されうる、図１３に例示され、図１３を参照しつつ以下で説明されているような組み合わせロジック要素により実行される。それに加えて、ステップ５２０において、マスター・コントローラが決定されるが、これはマスター・コントローラとして動作している１つの選択されたＳＭＥ  ２９０または複数のＳＭＥ  ２９０であるか、あるいは１つまたは複数の追加のコントローラ１７５または他のオフチップのコントローラ、プロセッサ、または状態機械とすることもできる。例示的な一実施形態では、マスター・コントローラは、最下位アドレス（その時点で）を持つＳＭＥ  ２９０として決定される。
【０１６３】
次いで、オペレーティング・システムは、１つまたは複数の状態機械要素２９０（またはコントローラ１７５）を通じて、潜在的にはユーザー入力で、すでに説明されているＡＢＳ、トラクション・コントロール、ビデオ、およびナビゲーション・プログラムを選択するなど、ステップ５２５で実行されるプログラム、アルゴリズム、または機能を決定するか、または選択する。次に、ステップ５３０において、オペレーティング・システムは、タスクおよび（複数の）アクション（または（複数の）命令）を選択された複合回路要素２６０に（１つまたは複数のコンテキストとして）割り当てることより、選択された複合回路要素２６０の入力をデータ伝送元である他の対応する複合回路要素２６０にリンクし、その入力データを送ることにより（これもまた対応する形でそれらのデータ伝送元出力をデータ伝送先として選択された複合回路要素２６０の入力にリンクする）、および／または（データ伝送元として）選択された複合回路要素２６０の出力をデータ伝送先である他の対応する複合回路要素２６０にリンクし、選択された複合回路要素２６０により生成されるデータを利用することにより（これもまた対応する形でそれらのデータ伝送先の入力を（データ伝送元として）選択された複合回路要素２６０の出力にリンクする）、選択されたプログラムの（複数の）シンボリック・ネットリストを利用可能な資源（ステップ５１５で決定された）に束縛する。
【０１６４】
すべてのタスクおよびアクション（または命令）が、束縛された（割り当てられ、リンクされた）後、装置１００は、ステップ５３５で、ＡＢＳおよびトラクション・コントロール・システムを動作させる、乗客向けにビデオを再生する、リアルタイムのナビゲーション表示を運転者に対し行うなどの、対応するプログラムまたは演算の実行もしくは動作を開始する。束縛（割り当ておよびリンク）プロセスは、図１４を参照しつつ、以下で詳しく説明される。それぞれの複合回路要素２６０内のプログラム（または演算）実行プロセスの制御は、図１６を参照しつつ以下でさらに詳しく説明される。
【０１６５】
オペレーティング・システムは、さらに、ステップ５４０で、ユーザーまたはオペレーターが追加のプログラムを選択するか、またはセンサーが特定の条件を検出することなどを通じて状況が機能の変更を必要とする場合などに、新しいまたは異なる機能が必要であると判定することができる。例えば、車両環境では、センサーは、運転または道路状態の変化を検出し、それに応じてさまざまなプログラムを調節することができる。ステップ５４０で、新しい、もしくは異なる機能が必要になった場合、この方法は、ステップ５４５で、影響を受けるタスクおよびアクション（または命令）を再束縛（再割り当ておよび再リンク）し、装置１００は、それらのさまざまな変更とともに動作し続ける。タスクおよびアクション（または命令）が、新しいロケーションに移動されるか、または既存の、もしくは新しいタスクおよびアクション（または命令）が、ロードされ、割り当てられ、束縛されるようにできる。オペレーティング・システムは、さらに、プログラムまたは機能全体を初めから束縛または再束縛することもできる。再束縛ステップ５４５は、さらに、束縛解除、つまり、対応するコンテキストをメモリから削除することなどにより、割り当てられている機能を完全に取り除くことを含むこともできる。このような束縛解除は、例えば、装置１００がすでに容量めいっぱいであり、新しい、または異なる機能のための余地を設けなければならない場合に、実行できる。このような束縛解除は、図１に例示されており、その場合、ＩＣの損傷により装置１００が次第に能力を失ってゆくときにビデオ機能が削除された。
【０１６６】
装置１００は、オペレーティング・システムを実行する（またはビルトイン・セルフテスト（「ＢＩＳＴ」）の一部としての）１つまたは複数の状態機械要素２９０（またはコントローラ１７５）を通じて、ステップ５５０で、制限された、または完全なセルフテストを定期的に実行し、ステップ５５５で、資源が利用可能である状況に変化が生じたかどうかを検出する。例えば、セルフテストは、ＢＲＥＯタイプの回路要素２７０が、もはや正常に機能しておらず、したがって、装置１００内で使用することがもはやできないであろうということを明らかにすることができる。このような損傷または機能の喪失がステップ５５５で生じた場合、オペレーティング・システムは（ＳＭＥ  ２９０またはコントローラ１７５を通じて）、それに応じて、ステップ５６０で、利用可能な資源のマップまたはリストを修正し、ステップ５６５で、修正されたリストまたはマップを使用して、影響を受けるタスクおよびアクション（または命令）を再束縛し、装置１００は、それらのさまざまな変更とともに動作を続ける。
【０１６７】
ステップ５５５で、またはステップ５６５の後で、このような損傷または機能の喪失が生じなかった場合、この方法はステップ５７０に進む。ステップ５７０で、装置１００は、動作を続け、ステップ５３５に戻ることができる。装置１００を有するデバイスをオフにするようユーザー側で選択するなどにより、ステップ５７０で動作が停止すべきである場合、装置１００は、シャットダウンするか、または電源をオフにし、ステップ５７５に戻ることができる。
【０１６８】
図１２には別々に例示されていないが、他の例示的な実施形態では、複数の複合回路要素２６０は、現在の演算状態の「スナップショット」などの、現在状態を定期的に格納するように実装または適合されうる。その後、検出された障害に応答して、複合回路要素２６０は、格納されている状態を取り出して、格納されている状態を使用して演算を再開するように適合される。
【０１６９】
Ｄ．シンボリック・ネットリスト割り当ておよび実行時束縛
次に、この背景を念頭に置き、実行時束縛プロセスを説明することができる。上に示されているように、本発明のアーキテクチャは、シンボリック・ネットリストの実行時束縛（または他のプログラム・コンパイル）とともに、装置１００の自己回復および回復能力を有効にすることができる。より具体的には、複合回路要素２６０、ＳＭＥ  ２９０、第１の通信要素２５０、（複数の）完全相互接続要素２７５または（複数の）分散された完全相互接続要素２９５、他のクラスタ２００のコンポーネント、またはルーティングもしくは他の通信要素（１９０、２１０）のどれかが、最初から（起動プロセスのテスト実行部分においてステップ５１５で決定されるように）または後からの演算実行時に（セルフテスト実行時に決定されるように、または他のコンポーネント、ステップ５５０、５５５により決定されるように）正常に実行しない場合、これらは、それぞれ、利用可能な資源のマップまたはリストに入れられないか、または削除される。最初から正常に実行していない場合、影響を受けるコンポーネントは、ステップ５３０で、機能を決して割り当てられることはない。影響を受けるコンポーネントが、初めは機能していても、もはや機能しなくなってしまった場合（ステップ５５５）、これは、利用可能な資源のリストまたはマップから取り除かれ、その割り当てられている機能は、他の利用可能なコンポーネントに移動されるか、またはロードされ、別々に、もしくはステップ５６５の対応するタスクまたは命令の再束縛の一部として、再ルーティングされる。データが破損していると判定された場合、制御しているタスクは、適切な処置を講じるように通知される。この束縛プロセスは、以下で詳しく説明される。
【０１７０】
１．資源の利用可能性
図１３は、本発明の教示による例示的な装置１００内でコンテキストが利用可能かどうかを判定するための例示的な組み合わせロジック回路６００を示すブロック図である。このような回路６００は、回路要素２７０、要素コントローラ３２５、ＳＭＥ  ２９０などの、それぞれの複合回路要素２６０内に、または別の組み合わせロジック（図８に別々に例示されていない）として、収められる。上述のように、複合回路要素２６０のそれぞれのタイプに対する利用可能なコンテキストの個数が、装置１００内で実行するプログラムまたはアルゴリズムを束縛（または再束縛）する際に使用するために決定される。このような決定は、１つまたは複数のＳＭＥ  ２９０、コントローラ（または他のプロセッサ）１７５により、または図１３に例示されているように、専用組み合わせロジック回路６００により実行されうる。
【０１７１】
図１３を参照すると、それぞれの複合回路要素２６０内のメモリ３３０に格納されている情報の一部として、コンテキスト毎に、状態ビットおよび第１の条件ビットがある。状態ビットは、コンテキストがアクション（または命令）に割り当てられるか、または配分されているかどうか、したがって自由に割り当てられるか、または割り当てに利用できるか（論理ｈｉｇｈまたは１）、あるいは自由に割り当てられないか、または割り当てに利用できないか（論理ｌｏｗまたは０）を示す。それとは別に、この状態は、メモリ３３０を調べて、アクションＩＤおよびタスクＩＤフィールドが選択されたコンテキストについてゼロであるか、または非ゼロであるかを判定することにより判定することができ、これは、利用可能（割り当てられるか、または配分されたアクションＩＤおよびタスクＩＤがない）、または利用不可能（すでに割り当てられているか、または配分されているアクションＩＤおよびタスクＩＤ）を示し、その後図１３の状態ビットとして使用されるように反転される。第１の条件ビットは、上述のさまざまな例示的なセルフテスト・プロセスから判定されるように、複合回路要素２６０が動作状態（論理ｈｉｇｈまたは１）であるか、または非動作状態（論理ｌｏｗまたは０）であるかを示す。それぞれのコンテキスト（「ｍ」個のコンテキストの）について、第１のＡＮＤ演算は、ＡＮＤゲート６０５（複数のＡＮＤゲート６０５０、６０５１から６０５（ｍ−１）として例示されている）を介して、対応する状態ビットおよび第１の条件ビットに対し実行され、そのＡＮＤ演算の結果は、コンテキストが利用可能であり、また複合回路要素２６０が正常に動作していること（論理ｈｉｇｈまたは１）、あるいはコンテキストが利用可能でないか、または複合回路要素２６０が正常に動作していない（論理ｌｏｗまたは０）ことを示す。
【０１７２】
第２のコントローラ（ＳＭＥ  ２９０）条件ビットは、これもまた上述のさまざまな例示的なセルフテスト・プロセスから判定されるように、ＳＭＥ  ２９０（クラスタ２００内の）が動作状態（論理ｈｉｇｈまたは１）であるか、または非動作状態（論理ｌｏｗまたは０）であるかを示すために使用され、複合回路要素２６０またはクラスタ２００内のさまざまなメモリのどれかに格納されうる。第２のＡＮＤ演算は、この第１のＡＮＤ結果（状態および第１の条件ビット）および第２のコントローラ条件ビット（複数のＡＮＤゲート６１００、６１０１から６１０（ｍ−１）を介して）を使用して実行され、第２のＡＮＤ演算の結果は、コンテキストが利用可能であり、また複合回路要素２６０とＳＭＥ  ２９０の両方が正常に動作していること（論理ｈｉｇｈまたは１）、あるいはコンテキストが利用可能でなく、複合回路要素２６０が正常に動作していないか、またはＳＭＥ  ２９０が正常に動作していない（論理ｌｏｗまたは０）ことを示す。第１および第２のＡＮＤ演算は、さらに、少なくとも３つの入力（状態ビット、第１の条件ビット、および第２の条件ビット）を有する単一の組み合わされたＡＮＤ演算として実行されうる。それぞれのコンテキストに対する第２のＡＮＤ演算の結果は、「ワンホット」加算器６１５（またはＳＭＥ  ２９０もしくは他のコントローラ）を使用するなどして加算され、複合回路要素２６０（作動しているＳＭＥ  ２９０とともに）１個当たりの自由コンテキストの個数を求めることができる。
【０１７３】
例示されているように、このプロセスは、マトリクス階層を上り続け、複合回路要素２６０  １個当たり自由コンテキストの個数がクラスタ２００内の複合回路要素２６０のタイプ毎に足し合わされ、次いで、スーパークラスタ１８５内の複合回路要素２６０のタイプ毎に足し合わされ、次いで、マトリクス１５０内の複合回路要素２６０のタイプ毎に足し合わされ、次いで、装置１００内の複合回路要素２６０のタイプ毎に足し合わされる。これらの追加のＡＤＤ演算は、専用ＡＤＤＥＲＳ（例えば、６２０、６２５、６３０）を使用して、またはＡＤＤ演算について、その対応するＳＭＥ  ２９０の制御の下で構成された複合回路要素２６０を使用することにより実行されうる。その結果、複合回路要素２６０のタイプ毎に利用可能性カウントが決定され、それぞれのレベルで、つまり、クラスタ２００のレベル、スーパークラスタ１８５のレベル、マトリクス１５０のレベル、および装置のレベルに維持されうる。
【０１７４】
これらのさまざまなレベルにおけるこのようなカウントは、クラスタ２００またはスーパークラスタ１８５内の特定のタイプの複合回路要素２６０を使用するタイミング制約により多数の演算が実行されなければならない場合などに、スーパークラスタ１８５またはクラスタ２００がリージョン制約を満たすために利用可能かどうかを判定するのに特に有用である。さらに、このような組み合わせロジック回路を使用することで、複合回路要素２６０の利用可能性は、すべてのクラスタ２００について、素早く、同時に、並行して、いくつかのＡＮＤおよびＡＤＤ演算からの遅延（例えば、マトリクス１５０全体について合計で２つのＡＮＤ遅延と４つのＡＤＤ遅延）のみで、決定され、維持される。
【０１７５】
利用可能性判定の代わりに、ＳＭＥ  ２９０が、クラスタ２００内の対応する複合回路要素２６０のすべてのメモリ３３０のさまざまなレジスタをポーリングまたは調査するために使用され、それぞれのクラスタに対する複合回路要素２６０のタイプ別に結果を合計し、次いで１つまたは複数の選択されたＳＭＥ  ２９０がそれぞれのスーパークラスタ１８５およびマトリクス１５０について結果を合計する。そのような利用可能性判定は、マスター・コントローラ（指定されたＳＭＥ  ２９０またはコントローラ１７５であってよい）により開始されるような、マトリクス階層内でトップダウン方式であるか、または図１３に例示されているような、またはそれぞれのクラスタ２００内のＳＭＥ  ２９０のそれぞれによりもたらされるように、マトリクス階層内でボトムアップ方式とすることができる。エレクトロニクス分野の当業者にとっては、組み合わせ、条件付き、または制御ロジックを使用してこの利用可能性判定を行う方法が無数にあり、それらはすべて、同等であり、本発明の範囲内にあると考えられることは明らかであろう。
【０１７６】
２．シンボリック・ネットリスト割り当て
図１４は、図１４Ａ、１４Ｂ、１４Ｃ、１４Ｄに分割されており、本発明の教示による例示的なアルゴリズムまたはシンボリック・ネットリスト実行時束縛プロセスを示す流れ図であり、さらに、装置１００全体を通して分散された状態機械要素２９０に関連付けられている重要な機能を示す。それとは別に、この機能は、装置１００についてマスター・コントローラとして指定されているコントローラ１７５などの１つまたは複数の追加のコントローラ１７５により実行することも可能である。当業者であれば、例示されている束縛プロセスに加えて、この方法の多数の変更形態が利用可能であり、また同等であり、本発明の範囲内にあると考えられることを理解するであろう。少なくとも１つのこのような変更形態についても以下で説明する。
【０１７７】
上述のように、装置１００は、シンボリック・ネットリストとして用意されたアルゴリズムの実行時束縛演算を実行するが、これはプログラム可能なルーティングを含むプログラム可能な資源の場所および経路演算に類似していると考えられうる。この場合、プログラム可能な資源それ自体は、ＩＣ上に置かれており、次いで、束縛プロセスは、アクション（または命令）を（タスクの一部として）１つまたは複数の利用可能な資源の１つまたは複数のコンテキストに割り当て、入力および出力の対応するルーティングまたはリンクを構成する。実行に数時間または数日を要することもある、従来技術による場所および経路の方法とは対照的に、本発明の方法は、数マイクロ秒または数ミリ秒から数秒と、きわめて高速な動作をする。
【０１７８】
図１４Ａを参照すると、この方法は、開始ステップ７００から始まり、上述のように好ましくはクラスタ、スーパークラスタ、およびマトリクス・レベルで、複合回路要素２６０のそれぞれのタイプに対する利用可能性のカウントの決定および／または維持が行われる。ステップ７０５で、第１（または次）のアクション（つまり、機能または命令）は、シンボリック・ネットリスト要素として、マスター・コントローラに送られるが、これは、例えば、１つまたは複数の指定されたＳＭＥ  ２９０または１つまたは複数のコントローラ１７５であってよい。次いで、指定されたＳＭＥ  ２９０またはコントローラ１７５は、ステップ７１０で、アクション（機能または命令）がリージョンまたは近接性制約を含むかどうか判定し、もしそうであれば、ステップ７１５に進む。アクション（または命令）が、ステップ７１０でリージョン制約を含まない場合、アクション（または命令）は、ステップ７５０で、シンボリック・ネットリスト内に用意されている１つまたは複数のタイプの複合回路要素２６０に対し利用可能な十分な数のコンテキストなどの、その命令に対する資源が十分に利用できる、スーパークラスタまたはクラスタ・レベルに送られる。
【０１７９】
利用可能な（複数の）クラスタ２００の（複数の）ＳＭＥ  ２９０は、ステップ７５５で、対応する情報（構成、タスクＩＤ、アクションＩＤ、および伝送元（または伝送先）タスクＩＤおよびアクションＩＤ）をそれぞれのそのような複合回路要素２６０の対応するメモリ３３０内に格納することにより、またはメモリ複合回路要素２６０、第２のメモリ要素２５５、またはＳＭＥ  ２９０および複合回路要素２６０からアクセス可能な他のメモリに格納することにより、アクション（または命令）を（複数の）クラスタ２００内の１つまたは複数の利用可能な複合回路要素２６０に割り当てる。格納されている情報の量およびロケーションは、選択された実施形態に応じて異なる。例示的な一実施形態では、アクション（または命令）は、ローカルのメモリ３３０（さもなければクラスタ２００内）に構成、タスクＩＤ、アクションＩＤとして、対応するリンク情報（入力に対するデータ伝送元または出力に対するデータ伝送先、さらにタスクＩＤおよびアクションＩＤ別に）とともに、格納される。この割り当ての後に、ステップ７６０で、図１３について上で説明されているように自動的に修正されるなどの形で、または例えば、さまざまなカウントが指定されたＳＭＥ  ２９０またはコントローラ１７５により維持されるときにレジスタ内に保持されているカウントをデクリメントすることにより、利用可能性カウントが修正される。
【０１８０】
次いで、この方法は、ステップ７６５で、すべてのアクション（または命令）が割り当てられたかどうかを判定する。割り当てるべきアクション（または命令）が残っている場合、この方法は、ステップ７７０で、利用可能な資源が残っているかどうかを判定する。ステップ７７０において利用可能な資源が残っている場合、この方法は、ステップ７０５に戻り、繰り返し、次のアクション（または命令）を選択し、割り当てる。割り当てすべきアクション（または命令）がもう残っていない場合、この方法は、ステップ８００に進み、割り当てられたすべてのアクション（または命令）のルーティング（つまり、リンク設定）を開始する。
【０１８１】
ステップ７６５において割り当てるべきアクション（または命令）が残っているが、ステップ７７０において利用可能な資源がなくなっている場合、これは、選択されたアルゴリズムが、現在構成されている（利用可能である）とおりに装置１００上で動作できない可能性のあることを示しており、ステップ７７５でエラーまたは例外メッセージが生成され、選択されたプログラムのシンボリック・ネットリストは現在割り当てることができないので、この方法は、終了し、ステップ７８０に戻る。その場合、アクションの道筋は多数ありうる。例えば、指定されたＳＭＥ  ２９０またはコントローラ１７５は、資源を消費または使用している低い優先度のプログラムまたは演算を削除して、選択されたプログラムまたは演算のためのスペースをあけ、選択されたプログラムが装置１００上で実行されるようにできる。他の場合、指定されたＳＭＥ  ２９０またはコントローラ１７５は、他のそのようなプログラムを削除することなく割り当て可能なプログラムの他のバージョンを選択することができる。他の場合には、これは、選択されたアプリケーションには、より多くの資源を持つより大きな装置１００が必要であることを示すことがある。
【０１８２】
選択されたアクション（または命令）が、ステップ７１０においてリージョン制約を含む場合、この方法は、図１４Ｂに例示されているように、ステップ７１５に進む。このようなリージョン制約は、例えば、以下の形を取りうる。
ｒｅｇｉｏｎ  ３  ｓｕｐｅｒｃｌｕｓｔｅｒ
ｒｅｇｉｏｎ  １  ｃｌｕｓｔｅｒ  ａｃｔｉｏｎｓ  Ｉ１，Ｉ２
Ｉ１
Ｉ２
ｅｎｄ  ｒｅｇｉｏｎ
ｒｅｇｉｏｎ  ２  ｃｌｕｓｔｅｒ  ａｃｔｉｏｎｓ  Ｉ３，Ｉ４
Ｉ３
Ｉ４
ｅｎｄ  ｒｅｇｉｏｎ
ｅｎｄ  ｒｅｇｉｏｎ
この場合、スーパークラスタのリージョン（近接性）制約は、２つのクラスタ・レベルのリージョン制約を組み込み、それぞれが制約に従うアクション（または命令）（「制約されたアクション」）を含んでいる。上述のように、ゾーン２０１制約も使用できる。この実施例に示されているように、アクション（または命令）Ｉ１およびＩ２（シンボリック・ネットリスト要素として）は、同じクラスタ２００内で割り当てられなければならず、アクション（または命令）Ｉ３およびＩ４（シンボリック・ネットリスト要素として）は、同じクラスタ２００（Ｉ１およびＩ２のリージョン１クラスタと同じ、または異なるクラスタであってよい、リージョン２として）内で割り当てられなければならない。しかし、クラスタ２００は、両方とも、スーパークラスタ制約（リージョン３）内に組み込まれているように、同じスーパークラスタ内になければならない。
【０１８３】
ステップ７１５で、指定されたＳＭＥ  ２９０またはコントローラ１７５は、制約が、同じスーパークラスタ１８５内でその一組の制約されたアクションを割り当てることを必要とする、スーパークラスタ制約であるかどうかを判定する。リージョン制約が、ステップ７１５で、スーパークラスタに対するものであれば、指定されたＳＭＥ  ２９０またはコントローラ１７５は、スーパークラスタ制約を制約の利用可能性要件を満たすすべての利用可能なスーパークラスタ１８５に与え、ステップ７２０で、それら１つまたは複数のスーパークラスタを候補として一時的に指定するか、またはマークする。ステップ７２０の後に、またはステップ７１５で、制約がスーパークラスタ制約でない場合、制約されたアクションは、実施例のリージョン１制約を満たすさまざまなクラスタなど、第１のクラスタ制約（前の制約により必要な場合に１つまたは複数のスーパークラスタ内で）を満たすすべての利用可能なクラスタ２００に送られ、それらのクラスタ２００は、ステップ７２５で、候補として一時的に指定される。クラスタ・レベル制約アクションの次の一組は、もしあれば、実施例のリージョン２制約を満たすさまざまなクラスタなど、次のクラスタ制約（前の制約により必要な場合に１つまたは複数のスーパークラスタ内で）満たすすべての利用可能なクラスタ２００に送られ、それらのクラスタ２００は、さらに、ステップ７３０で、候補として一時的に指定される。それに加えて、すでに候補となっていたが、現在はそれらの追加の制約を満たすのに十分な利用可能なクラスタを含んでいない、スーパークラスタまたはクラスタは、ここで、解放され、もはやリージョン制約の候補として指定されなくなるようにできる。別に例示されてはいないが、同じ方法をゾーン２０１制約に使用することもできる。ステップ７３５で、処理すべき追加の制約がある場合、この方法はステップ７３０に戻り、一時的指定プロセスを続ける。
【０１８４】
ステップ７３５で、処理する必要のある制約がもうない場合、この方法は、ステップ７４０で、１つまたは複数のマッチ（スーパークラスタおよび／またはクラスタ・レベル）が見つかっているかどうかを判定する。ステップ７４０で、１つまたは複数のマッチが見つかっている場合、上述のように、指定されたＳＭＥ  ２９０またはコントローラ１７５は、少なくとも１つのそのようなマッチを選択し、制約されたアクション（または命令）を選択された候補集合に割り当て、他のすべての仮割り当てを解放し、ステップ７６０に進み、利用可能性カウントを修正し、割り当てプロセスを続ける。ステップ７４０で、マッチが見つからなかった場合、これは選択されたアルゴリズムが現在構成されている（利用可能である）ような装置１００上で演算できないことを示しており、この方法は、ステップ７７５に戻り、エラーまたは例外メッセージを生成し、制約を持つ選択されたプログラムのシンボリック・ネットリストが現在割り当てることができないため、この方法は終了し、ステップ７８０に戻ることができる。上述のように、その場合、アクションの道筋は多数ありうる。例えば、指定されたＳＭＥ  ２９０またはコントローラ１７５は、優先度の低いプログラムまたは演算を削除するか、または割り当てやすいプログラムの他のバージョンを使用することができる。
【０１８５】
３．実行時束縛
ステップ７６５で、すべてのアクション（または命令）が割り当てられた場合、それらのアクション（または命令）は、接続されるか、またはルーティングされ、選択されたプログラムまたはアルゴリズムを実行するために装置１００の動作中に使用されるデータ通信経路のすべてを確立することができる。上に示されているように、それぞれのアクション（または命令）は、選択された複合回路要素２６０の選択されたコンテキストに対する構成とともにシンボリックに格納される入力または出力情報を有する。より具体的には、入力または出力情報は、実際にはポインタとして効果的に格納され、１つのタスクＩＤおよびアクションＩＤはデータ伝送元（入力データ用）またはデータ伝送先（出力データを送る）として他のタスクＩＤおよびアクションＩＤを指す。このような情報は、シンボリックまたはジェネリックに格納されるが、それというのも、アクション（または命令）が割り当てられるまで、データ伝送元またはデータ伝送先に対する実際のアドレスは知られていないからである。データ伝送元情報が一貫して使用されるか、またはデータ伝送先情報が一貫して使用されるかのいずれかと仮定すると、このような情報の集合が１つだけ必要であるが、両方とも使用して、回復能力を高めることも可能である。例示的な実施形態によれば、そのようなデータ伝送元またはデータ伝送先情報は、それぞれのコンテキストに対する複合回路要素２６０のデータ入力（入力キュー３２０の）を他の複合回路要素２６０（またはフィードバック構成のために、同じ複合回路要素２６０）のコンテキストのデータ出力３７５と（出力キュー３１５を介して）接続するために使用される。これにより、直接データ接続（クラスタ２００内で回路交換）またはパケット・ルーティング（クラスタ間のハイブリッド・パケット・ルーティングおよび回路交換）データ接続がデータ・フローに対し形成され、いずれの場合も、レジスタにデータを格納し、レジスタからデータをフェッチする中間または別のステップを必要とすることなく、データが送られる。スーパークラスタ１８５Ｃおよび回路クラスタ２００Ｃなどの、選択された実施形態に応じて、データ接続は、クラスタ・キュー２４５Ａおよび対応する完全もしくは分散相互接続２７５、２９５を通じて、すべて回路交換されうる。
【０１８６】
ステップ７６５の後、ルーティング・プロセスは、図１４Ｃに例示されているように、ステップ８００から始まる。図１４Ｃに示されている例示的な実施形態では、プロセスは「ボトムアップ」であり、クラスタ２００レベル（またはゾーン２０１およびクラスタ２００Ｃレベル）から始まり、必要に応じてより高いレベル（スーパークラスタおよびマトリクス・レベル）に進む。別に例示されてはいないが、このプロセスは、さらに、指定されたＳＭＥ  ２９０またはコントローラ１７５がクラスタ２００のＳＭＥ  ２９０にステップ８００のルーティング・プロセスを開始する要求を送信することなどにより、「トップダウン」の観点から開始されうる。
【０１８７】
図１４Ｃを参照すると、ステップ８００で、対応するクラスタ２００の１つまたは複数のＳＭＥ  ２９０が、複合回路要素２６０の第１のコンテキストのアクション（または命令）を選択し、選択されたアクション（または命令）の一部として格納されている伝送元（または伝送先）タスクおよびアクション識別子を決定することによりルーティング・プロセスを開始する。例示的な実施形態では、このプロセスは、並行プロセスとしてそれぞれのクラスタ２００のそれぞれのＳＭＥ  ２９０により実行されうるため、非常に効率的な束縛ルーティング・プロセスといえる。他の例示的な実施形態では、すべてのクラスタ２００がＳＭＥ  ２９０を有するわけではない場合、スーパークラスタ１８５内の他のＳＭＥ  ２９０を使用することができる。
【０１８８】
上に示されているように、これらの伝送元（または伝送先）タスクおよびアクションＩＤは、選択された実施形態において、複合回路要素２６０の要素インターフェースおよび制御２８０のメモリ３３０内に格納される。代替実施形態では、伝送元（または伝送先）タスクおよびアクション識別子は、メモリ・タイプの複合回路要素２６０Ｍ、第２のメモリ要素２５５、またはクラスタ２００内に備えることができる他のメモリ要素などの、他のメモリ要素に格納されうる。ルーティングを簡単に行えるようにするために、メモリ３３０（または他のメモリ要素）は、上述のように連想メモリ（「ＣＡＭ」）、または他のタイプのメモリとして実装できる。したがって、ステップ８０５では、第１の階層レベルにおけるルーティングのために、ＳＭＥ  ２９０は、第１のコンテキスト（ルーティングされる複合回路要素２６０のコンテキスト）の伝送元（または伝送先）タスクおよびアクション識別子でクラスタ２００内のメモリ（３３０、２５５、２６０Ｍなど）のすべてを調べて、それらの伝送元（または伝送先）タスクおよびアクション識別子とマッチする他の第２のコンテキストの対応するアクション（または命令）を見つけることができる。他の形態のメモリ、例えばＳＤＲＡＭが、ＣＡＭの代わりに使用される場合、ＳＭＥ  ２９０は、二分探索法などの、メモリ（３３０、２５５、２６０Ｍ、またはタスクＩＤおよびアクションＩＤを格納している他のメモリ）の探索を実行して、それらの伝送元（または伝送先）タスクおよびアクション識別子とマッチする他の第２のコンテキストの対応するアクション（または命令）を見つけることができる。
【０１８９】
ステップ８１０で、複合回路要素２６０の第２のコンテキストのマッチするアクション（または命令）（対応するタスクおよびアクション識別子を有する）が、メモリ（３３０、２５５、２６０Ｍなど）内で見つかった場合、ＳＭＥ  ２９０は、選択された第１のコンテキストを、マッチしている、または対応するアクション（または命令）を有するこの第２のコンテキストにルーティングすることを認識する。その結果、ステップ８１５において、伝送元タスクおよびアクション識別子が格納されている場合、ＳＭＥ  ２９０は、第１のコンテキストの（複数の）入力（データ伝送先として）を第２のコンテキストの対応する出力（データ伝送元として）にルーティングし、伝送先タスクおよびアクション識別子が格納されている場合、ＳＭＥ  ２９０は、第１のコンテキストの（複数の）出力（データ伝送元として）を第２のコンテキストの対応する（複数の）入力（データ伝送先として）にルーティングする。クラスタ２００またはゾーン２０１内で、ＳＭＥ  ２９０は、完全相互接続要素２７５または分散された完全相互接続要素２９５を介してそれらの内部クラスタ接続を確立する。ステップ８１５の後、ステップ８２０でルーティングすべき追加のアクション（または命令）がある場合、この方法は繰り返し実行を続け、ステップ８００に戻り、ＳＭＥ  ２９０または他のコントローラが、ルーティングすべき次のアクション（または命令）を選択する。
【０１９０】
ステップ８１０で、複合回路要素２６０の第２のコンテキストのマッチするアクション（または命令）（対応するタスクおよびアクション識別子を有する）が、クラスタ２００のメモリ（３３０、２５５、２６０Ｍなど）内で見つからなかった場合、ＳＭＥ  ２９０は、対応するデータ伝送元または伝送先がクラスタ２００（第１のクラスタ２００と呼ばれる）内にないことを認識する。その結果、ステップ８２５で、ＳＭＥ  ２９０は、（１）選択された第１のコンテキストを第１のクラスタ２００の周辺部に（相互接続部１５５を介して、完全相互接続要素２７５、分散された完全相互接続要素２９５、またはメッセージ・マネージャ２６５を通じてデータ伝送のため第１の通信要素２５０のうちの１つに、または第１の通信要素２５０に直接）ルーティングすることと、（２）スーパークラスタ・レベルのコントローラ（この割り当てられている責務を有する指定されたＳＭＥ  ２９０またはコントローラ１７５であってよい）へのルーティング要求（問い合わせ）を生成し、マッチする、または対応するアクション（または命令）を有することができるそのスーパークラスタ１８５の他のクラスタ２００内で第２のコンテキストを見つけることの両方を行う。第１のクラスタ２００のＳＭＥ  ２９０の観点から、第１のコンテキストのルーティングは、完全であり、もしあれば他のコンテキスト（アクション（または命令））のルーティングを続けることができ、次いでスーパークラスタ・コントローラ（指定されたＳＭＥ  ２９０またはコントローラ１７５）はステップ８３０に進む。
【０１９１】
ステップ８３０で、ルーティング要求（第２のコンテキストを指定する）を受信すると、スーパークラスタ・コントローラは、スーパークラスタ１８５内のすべての（他の）クラスタ２００に、対応するアクション（または命令）が第２の階層レベルのルーティングについてメモリ（３３０、２５５、２６０Ｍなど）のうちの１つに配置されているかどうかをＳＭＥ  ２９０が判定する要求またはクエリを送信する。ステップ８３５で、第２のクラスタ２００としてのこれらの他のクラスタ２００のうちの１つが、複合回路要素２６０のうちの１つの第２のコンテキストとして、マッチするか、または対応するアクション（または命令）を有している（つまり、第１のコンテキストの伝送元（または伝送先）タスクおよびアクション識別子を有している）場合、この第２のクラスタ２００は、この第２のコンテキストが他の第１のクラスタ２００との間でルーティングされるべきデータの伝送元または伝送先であることを認識する。その結果、ステップ８４０で、第２のクラスタ２００の第２のＳＭＥ  ２９０は、この第２のコンテキストを第２のクラスタ２００の周辺部に（相互接続部１５５を介して、完全相互接続要素２７５、分散された完全相互接続要素２９５、メッセージ・マネージャ２６５を通じてデータ伝送のために第１の通信要素２５０のうちの１つに、あるいはそうでない場合には第１の通信要素２５０に直接）ルーティングし、対応するメッセージをスーパークラスタ・コントローラ（指定されたＳＭＥ  ２９０またはコントローラ１７５）に送信し、それがマッチするか、または対応するアクション（または命令）を有する第２のコンテキストを持つことを示すか、またそのような情報を提供する。次いで、スーパークラスタ・コントローラは、第２の通信要素２１０に対応するルーティング情報を格納することなどにより、ステップ８４５で、対応するコンテキストに対する第１のクラスタ２００と第２のクラスタ２００との間の対応するリンクを形成し、クラスタ間ルーティングは完了する。第２のクラスタ２００のＳＭＥ  ２９０の観点から、そのルーティングも、完全であり、もしあれば他のコンテキスト（アクション（または命令））のルーティングを続けることができ、また、ステップ８２０に戻る。
【０１９２】
スーパークラスタ１８５などの他の変更形態では、別に例示されてはいないが、スーパークラスタ１８５Ｃ内のＳＭＥ  ２９０は、すべてさまざまなクラスタ・キュー２４５Ａを通じて、クラスタ２００の中で、またはスーパークラスタ１８５Ｃ全体の中で、そのようなすべてのルーティングを実行することができる。図１８を参照すると、ＳＭＥ  ２９０は、（１）例えば、完全または分散相互接続２７５、２９５を介して、ＣＥ４からＣＥ５に直接的に向かうものなど、選択されたゾーン２０１Ｂ内の対応するルーティング、（２）完全または分散相互接続２７５、２９５およびクラスタ・キュー２４５Ａ１５を介して、ＣＥ４からＣＥ１２に直接的に向かうものなど、選択された回路クラスタ２００Ｃ内の対応するルーティング、（３）完全または分散相互接続２７５、２９５、介在する（ゾーンからゾーンへの）クラスタ・キュー２４５Ａを介して、次いで２４５Ａ１０などの周辺部クラスタ・キュー２４５Ａを通じて、ＣＥ４からスーパークラスタ１８５Ｃ内の他のクラスタ２００Ｃの他の複合回路要素２６０に直接的に向かうものなど、選択された隣接回路クラスタ２００Ｃへの対応するルーティング、（４）完全または分散相互接続２７５、２９５、介在する（ゾーンからゾーンへの）クラスタ・キュー２４５Ａ、および典型的には複数の周辺部クラスタ・キュー２４５Ａを介して、ＣＥ４から他のクラスタ２００Ｃの他の複合回路要素２６０に直接的に向かうものなど、スーパークラスタ１８５Ｃ内の選択された非隣接回路クラスタ２００Ｃへの対応するルーティング、および（５）メッセージ・マネージャ２６５を介して、スーパークラスタ１８５Ｃ内にない回路クラスタ２００Ｃへの対応するルーティングを形成することができる。
【０１９３】
例えば、クラスタ・キュー２４５Ａのどれかを通じてルーティングされる場合、選択されたクラスタ・キュー２４５Ａ（対応する選択されたコンテキストを有する）は、データ生成複合回路要素２６０の選択されたコンテキストに対するデータ伝送先であり、次いで、データ消費複合回路要素２６０の選択されたコンテキストまたはクラスタ・キュー２４５Ａの他の選択されたコンテキストに対するデータ伝送元である（例えば、本明細書で説明されているように、伝送元または伝送先に基づく通信を使用する、クラスタ２００Ｃ間のデータ・ルーティングなどの、複数のクラスタ・キュー２４５Ａを通じてのデータ・ルーティングなど）。
【０１９４】
ステップ８３５で、選択された第１のスーパークラスタ１８５内のこれらの他のクラスタ２００のどれもが、複合回路要素２６０のうちの１つの第２のコンテキストにおいてマッチする、または対応するアクション（または命令）（第１のコンテキストの伝送元（または伝送先）タスクおよびアクション識別子とともに）を有しない場合、スーパークラスタ・コントローラは、対応するデータ伝送元または伝送先がそのスーパークラスタ１８５（第１のスーパークラスタ１８５と呼ばれる）内にないことを認識する。その結果、ステップ８６０で（図１４Ｄに例示されている）、第１のスーパークラスタ・コントローラは、（１）第１のコンテキストを第１のスーパークラスタ１８５の周辺部に（つまり、第２の通信要素２１０のうちの１つに、またはメッセージ・マネージャ２６５のうちの１つに）ルーティングすることと、（２）マトリクス・レベルのコントローラ（この割り当てられている責務を有する指定されたＳＭＥ  ２９０またはコントローラ１７５でもよい）へのルーティング要求を生成し、第３の階層レベルでのルーティングのため、マッチする、または対応するアクション（または命令）を有することができるそのマトリクス１５０の他のスーパークラスタ１８５内の第２のコンテキストを見つけることの両方を行う。第１のスーパークラスタ１８５の指定されたＳＭＥ  ２９０またはコントローラ１７５の観点から、そのルーティングは完全であり、この方法は、ステップ８２０に戻り、必要に応じて、他のアクションに対するルーティング・プロセスを続け、さらにステップ８６５に進む。
【０１９５】
ステップ８６５で、ルーティング要求（第２のコンテキストを指定する）を受信すると、マトリクス・コントローラは、マトリクス１５０内のすべての（他の）クラスタ２００に、対応するアクション（または命令）がこの第３の階層レベルのルーティングについてメモリ（３３０、２５５、２６０Ｍなど）のうちの１つに配置されているかどうかをＳＭＥ  ２９０が判定する要求またはクエリを送信する。このルーティング要求は、クラスタ２００のＳＭＥ  ２９０に直接送信されるか、またはスーパークラスタ・コントローラを介して送信されうる。ステップ８７０で、第２のクラスタ２００としてのこれらの他のクラスタ２００のうちの１つが、複合回路要素２６０のうちの１つの第２のコンテキストとして、マッチするか、または対応するアクション（または命令）を有している（つまり、第１のコンテキストの伝送元（または伝送先）タスクおよびアクション識別子を有している）場合、この第２のクラスタ２００は、この第２のコンテキストが他の第１のクラスタ２００との間でルーティングされるべきデータの伝送元または伝送先であることを認識する。その結果、ステップ８７５で、第２のクラスタ２００の第２のＳＭＥ  ２９０は、この第２のコンテキストを第２のクラスタ２００の周辺部に（相互接続部１５５を介して、完全相互接続要素２７５、分散された完全相互接続要素２９５、メッセージ・マネージャ２６５を通じてデータ伝送のために第１の通信要素２５０のうちの１つに、あるいはそうでない場合には第１の通信要素２５０に直接）ルーティングし、対応するメッセージをマトリクス・コントローラ（指定されたＳＭＥ  ２９０またはコントローラ１７５）に送信し、それがマッチするか、または対応するアクション（または命令）を有する第２のコンテキストを持つことを示すか、またそのような情報を提供する。次いで、マトリクス・コントローラは、第３の通信要素１９０および第２の通信要素２１０に対応するルーティング情報を格納することなどにより、ステップ８８０で、対応するコンテキストに対する第１のクラスタ２００と第２のクラスタ２００との間の対応するリンクを形成し、スーパークラスタ間ルーティングは完了する。第２のクラスタ２００のＳＭＥ  ２９０の観点から、そのルーティングも、完全であり、もしあれば他のコンテキスト（アクション（または命令））のルーティングを続けることができ、また、ステップ８２０に戻る。
【０１９６】
ステップ８７０で、選択された第１のマトリクス１５０内のこれらの他のクラスタ２００のどれもが、複合回路要素２６０のうちの１つの第２のコンテキストにおいてマッチする、または対応するアクション（または命令）（第１のコンテキストの伝送元（または伝送先）タスクおよびアクション識別子とともに）を有しない場合、マトリクス・コントローラは、対応するデータ伝送元または伝送先が第１のマトリクス１５０内にないことを認識する。その結果、ステップ８８５で、第１のマトリクス１５０は、（１）第１のコンテキストを第１のマトリクス１５０の周辺部に（つまり、第３の通信要素１９０のうちの１つに）ルーティングすることと、（２）他のマトリクス・レベルのコントローラ（この割り当てられている責務を有する指定されたＳＭＥ  ２９０またはコントローラ１７５でもよい）へのルーティング要求を生成し、第４の階層レベルでのルーティングのため、マッチする、または対応するアクション（または命令）を有することができるデバイス１００の他のマトリクス１５０内の第２のコンテキストを見つけることの両方を行う。第１のマトリクス１５０の指定されたＳＭＥ  ２９０またはコントローラ１７５の観点から、そのルーティングは完全であり、この方法は、ステップ８２０に戻り、必要に応じて、他のアクションに対するルーティング・プロセスを続け、この方法は、装置１００のレベルで、必要に応じて、ステップ８６５〜８８０を繰り返し実行する。
【０１９７】
すべてのアクション（または命令）がすでに割り当てられているので、マッチする、または対応するアクション（または命令）は、マトリクス１５０のうちの１つのマトリクスのスーパークラスタ１８５のクラスタ２００内の複合回路要素２６０の第２のコンテキストの中にあり、この方法は、必要に応じて、相互接続部１５５を使用し、対応する低レベルのスーパークラスタ１８５およびクラスタに問い合わせを送信することで対応する周辺部（例えば、第３の通信要素１９０および介在する第２の通信要素２１０）にルーティングするこれらの対応するマトリクスまたは装置レベルのコントローラ（指定されたＳＭＥ  ２９０またはコントローラ１７５）により、マトリクスまたは装置レベルまで上がる形で探索する。
【０１９８】
その結果、すべてのアクション（または命令）がルーティングされ、同じクラスタ２００内で（ステップ８１５）、または同じスーパークラスタ１８５内にあるクラスタ２００間で（ステップ８２５、８４０、および８４５）、または同じマトリクス１５０内で（ステップ８７５および８８０）、または装置１００内だけで、すべてのデータ伝送元またはデータ伝送先をその対応するデータ伝送先またはデータ伝送元にそれぞれ接続する。すべてのアクション（または命令）が、ステップ８２０で、ルーティングされてしまったら、指定されたＳＭＥ  ２９０またはコントローラ１７５は、ステップ８５０で、特定のタスクＩＤに対する実行ステータスをセットまたは有効にする。ステップ８５５で、まだルーティングすべきアクションが残っているプログラムまたはアルゴリズムの追加のタスクがある場合、この方法は続行して、ステップ８００に戻り、ルーティングすべきアクションを有するタスクがもうない場合、この方法は終了し、ステップ７８０に戻ることができる。また、特定のタスクに対する実行ステータスをセットまたは有効にする、ステップ８５０も、すべてのタスクがルーティングされたときに、ステップ８５５に続いて実行することができることに留意されたい。
【０１９９】
実行ステータスは、後述のように、コンテキストに対する構成ワード（メモリ３３２に格納されている）で使用され、回路要素２７０が選択されたコンテキストを実行すべきかどうか（つまり、対応するアクションを実行すべきかどうか）を決定するために要素コントローラ３２５により使用されるフィールドである。この場合、タスクが完全に構成されており、すべてのアクション（または命令）が割り当てられ、ルーティングされ、後述のように、他の条件も満たされていれば、実行する用意ができていることを示す。実行ステータスは、さらに、選択されたタスクの起動または停止、あるいは新しいタスクを適所にロードするなど選択されたタスクをパージするために使用されうる。
【０２００】
それに加えて、エレクトロニクス分野の当業者にとっては、図１４の方法の多くの変更形態の実装が同等であり、本発明の範囲内にあることは明白であろう。例えば、アクション（または命令）がローカルでメモリ３３０、またはメモリ複合要素２６０、または第２のメモリ要素に格納されていないが、別のメモリ内に一括して格納されている場合、トップダウン方式が使用されうる。この実施例を続けると、マトリクス・レベルのコントローラ（指定されたＳＭＥ  ２９０またはコントローラ１７５）などのトップレベル・コントローラは、ルーティング・プロセスを開始し、格納され、リンクされているアクション（または命令）を調査し、さまざまなクラスタ内、またさまざまなクラスタ間のルーティングを決定し、さまざまな構成（コンテキストとして）を影響を受ける複合回路要素２６０に受け渡すことができる。他の変更形態として、マトリクス・レベルのコントローラ（指定されたＳＭＥ  ２９０またはコントローラ１７５）などのトップレベル・コントローラは、単純に、対応するアクション（または命令）をクラスタ２００に送信することができ、次いで、図１４Ｃおよび１４Ｄを参照しつつ上で説明されているようにルーティング・プロセスを開始する。
【０２０１】
さらに、１つまたは複数のコントローラ１７５は、割り当ておよびルーティング・プロセスを実装するために使用できるが、指定されたＳＭＥ  ２９０の使用が、ロバスト性と回復性の高い解決策であることは明らかである。これらの状況において、複数のＳＭＥ  ２９０（対応する複数のクラスタ２００の）は、スーパークラスタ１８５のコントローラ、マトリクス１５０のコントローラ、または装置１００のコントローラのさまざまな役割を果たすことができる。所定のＳＭＥ  ２９０に不都合または損傷が生じた場合、無数の他のＳＭＥ  ２９０が、それらの役割を果たすために利用できる。
【０２０２】
重要なのは、この割り当ておよびルーティング・プロセスにかかる時間が、アクション（または命令）の数「ｋ」に正比例し、それぞれのクラスタ２００内の超並列プロセスで同時実行されるので、極めて短い時間のうちに進行することである。例えば、関わるクラスタ、スーパークラスタ、およびマトリクス・レベルの数「ｎ」に応じて、送信すべきメッセージおよびそれぞれのレベルの対応する周辺部への完了すべきルーティングについて、コンテキスト（または命令）１つ当たりの最悪の場合の時間の長さは、典型的には、３ｎ＋１または４ｎ＋１クロックまたは計算サイクルである。これは、ルーティング時間が、最低でも、ｋ２の関数であり、最適化されても、非決定論的であり、予測不可能なルーティング時間を有する従来技術のルーティング方法とは際だって対照的である。
【０２０３】
本発明のこの割り当ておよび束縛プロセスの他の利点は、タスクおよびアクション（または命令）を複数の異質なクラスタ２００に割り当て、ルーティングすることができる点である。より具体的には、クラスタ２００は、同じである必要はなく、さまざまなタイプの複合回路要素２６０を混ぜて、かなり異なっていてもよく、しかも結果のデバイスをプログラムする能力には影響を与えない。例えば、多数の乗算器タイプの複合回路要素２６０を含むクラスタ２００は、単純に、乗算の割り当てに利用しやすく、それらのタイプのアクション（または命令）は、それらのタイプのクラスタ２００に自動的に引き寄せられることになる。それに加えて、割り当ておよび束縛時間は、同質または異質の両方のクラスタ２００に対し同じである。
【０２０４】
図１を参照しつつ上で説明されているように、複合回路要素２６０またはＳＭＥ  ２９０などのクラスタ２００内の１つまたは複数のコンポーネントに損傷または故障が生じた場合、クラスタ２００または個別のコンポーネントを利用不可能と指定するか、マークすることができる。これらの状況の下で、影響を受ける複合回路要素２６０に割り当てられたタスクおよび／またはアクション（または命令）は、１つまたは複数の他の複合回路要素２６０に配置されるべきであり、これは、さまざまな方法で実行されうる。
【０２０５】
図１５は、本発明の教示による第１の例示的な再割り当ておよび再束縛プロセスを示す流れ図である。この第１の方式では、セルフテストの際の障害表示などにより、ステップ９００から始まり、１つまたは複数のＳＭＥ  ２９０（損傷または故障の影響を受けない場合には同じクラスタ２００内から、または他のクラスタ２００から）が、ステップ９０５で、影響を受ける複合回路要素２６０に利用不可能のマークを付けるか、指定し、典型的には実行ステータス・ビットを使用して、ステップ９１０で、すべてのコンテキストの実行を停止するように、影響を受ける複合回路要素２６０の要素コントローラ３２５に指令する。ＳＭＥ  ２９０は、さらに、ステップ９１５で、データを生成すること、およびそれを影響を受ける複合回路要素２６０に転送することを停止するように、それらの複合回路要素２６０に指令するメッセージを、リンクされているデータ伝送元複合回路要素２６０に送信する。ＳＭＥ  ２９０は、次いで、（もしあれば）他の複合回路要素２６０のどれが影響を受ける機能（つまり、影響を受ける、現在利用不可能な複合回路要素２６０により実行されていた機能）を引き継ぐのに利用できるかを判定し、ステップ９２０で、影響を受ける複合回路要素２６０のメモリ３３０に格納されているコンテキストを利用可能なコンテキストを有している同じタイプの（複数の）利用可能な複合回路要素２６０の１つまたは複数のメモリ３３０にコピーする。例示的な一実施形態では、ＳＭＥ  ２９０は、どの複合回路要素２６０が利用可能であり、機能のそのような移動の前提条件となる回路要素２７０のタイプを有しているかを示す、変換テーブルを格納し、維持することができる。ＳＭＥ  ２９０は、さらに、ステップ９２５で、関連する入力キュー３２０の内容を利用可能な複合回路要素２６０の入力キュー３２０にコピーすることもでき、それとは別に、いくつかのタイプのリアルタイム・データについて、入力データを破棄するか、またはそれと同等のことであるが、関連する入力キュー内に残し、新しく生成されたデータを使用して利用可能な（複数の）複合回路要素２６０から演算が再開するようにできる。
【０２０６】
次いで、ＳＭＥ  ２９０は、ステップ９３０で、上述のように伝送元（または伝送先）タスクおよびアクション識別子探索を実行することと、それに加えて、伝送元と伝送先の両方のタスクおよびアクション識別子情報が格納されていない場合に、他の複合回路要素２６０の他のメモリ３３０内の影響を受けるアクション（または命令）の探索を実行して、対応するデータ伝送先（または伝送元）を決定し、ルーティングを完了することなどにより、利用可能な複合回路要素２６０との間の接続の再ルーティングを行う。上述のような他のルーティング・ステップは、さらに、必要に応じて使用することもできる（例えば、クラスタ２００の間のルーティング）。ステップ９３５で、ＳＭＥ  ２９０は、次いで、転送されるコンテキストの対応する実行ステータス・ビットをリセットして、利用可能な（複数の）複合回路要素２６０により影響を受けるアクション（または命令）の実行を再度有効にし、そしてこの再割り当ておよび再束縛プロセスは終了し、ステップ９４０に戻ることができる。
【０２０７】
第２の方式では、タスクは、再割り当ておよび再束縛され（例えば、図１２〜１４に例示されているように）、影響を受けるコンポーネントがもはや利用可能でなければ、どのようなアクション（または命令）もそれらに割り当てられなくなる。この方式は、さらに、そのような制約がタスク・アクション（または命令）内に含まれるので、局所性制約を保存するという利点も有する。それに加えて、割り当ておよび束縛プロセスの持続時間は、アクション（または命令）の個数に正比例するので、この再割り当ておよび再束縛プロセスは、特に影響を受けるアクション（または命令）の数が比較的小さい場合に、中断を最小に抑えつつ、素早く進行する。このプロセスの一部として、複数のＳＭＥ  ２９０のうちの１つは、さらに、すべてのコンテキストの実行を停止しするよう、影響を受ける複合回路要素２６０の要素コントローラ３２５に指令し、データを生成することおよびそれを影響を受ける複合回路要素２６０に転送することを停止するよう、（複数の）伝送元複合回路要素２６０に指令するメッセージをリンクされた（複数の）データ伝送元複合回路要素２６０に送信し、関連する入力キュー３２０の内容を新規に割り当てられた利用可能な複合回路要素２６０にコピーし、利用可能な複合回路要素２６０の転送されるコンテキストについて実行ステータス・ビットをリセットすることもできる。
【０２０８】
その結果、装置１００に対するシンボリック・ネットリストとしてコンパイルされたプログラムまたはアルゴリズムは、装置１００内で割り当てられ、ルーティングされており、これにより、複合回路要素２６０の構成（コンテキストとして格納されている）とデータ経路接続のすべてを（完全相互接続要素２７５、分散された完全相互接続要素２９５、または相互接続部１５５を介して）作成する。装置１００は、そのような割り当ておよびルーティングをリアルタイムで使用可能なように設計されており、またリアルタイムで実行する必要はなく、あらかじめ実行することができるが、そのようなすべての割り当ておよびルーティングは本発明の範囲内にある。このような背景の下で、装置１００内の実行の動作および制御について、次に説明することができる。
【０２０９】
Ｅ．実行の装置動作および制御
図１６は、本発明の教示による例示的な構成および制御ワード１０００を示す図である。図１６に例示されているように、例示的な構成ワード１０００は、複数のデータ・フィールドからなり、要素構成フィールド１０１０、タスクＩＤフィールド１０１５、アクションＩＤフィールド１０２０、伝送先（および／または伝送元）アドレス・フィールド１０２５（伝送先（または伝送元）複合回路要素２６０、ポート、およびコンテキストを指定する）、オプションの「フォーク」フィールド１０３０、重要入力（「ＳＩ」）フィールド１０３５、重要出力（「ＳＯ」）フィールド１０４０、オプションのサイクル（「ＣＹ」）フィールド１０４５、実行ステータス・フィールド１０５０、オプションの優先度フィールド１０５５、オプションの状態使用可フィールド１０６０、オプションの次のフィールド１０６５、オプションの最終コンテキスト・フィールド１０７０、オプションの割り込みフィールド１０７５、オプションのシングルステップ・フィールド１０８０、およびオプションの定数モード・フィールド１０８５のうちの少なくとも２つまたはそれ以上のデータ・フィールドを任意の順序で含む。対応する構成および制御ワード１０００は、複合回路要素２６０のそれぞれのコンテキストに対し使用される。エレクトロニクス分野の当業者にとっては、選択された装置１００および組み込まれているシステムの用途および目的に応じて、使用するフィールドを増減できることは明らかであり、そのようなすべての変更形態は本発明の範囲内にある。
【０２１０】
コンテキスト毎に１つずつの、複数の構成ワードが、構成可能な要素２７０の構成および実行を制御するために要素コントローラ３２５により使用される。それぞれの構成ワードは、コンテキスト番号をインデックスとする。構成可能な要素２７０をどのように構成するか、またはデータをどのように解釈すべきかを制御する１つまたは複数の構成ビットは、要素構成フィールド１０１０内に格納される。同様に、割り当てられ、ルーティングされた（束縛された）アクション（または命令）は、フィールド１０１５内に対応するタスクＩＤとして、フィールド１０２０にアクションＩＤとして格納される。
【０２１１】
データ出力および／またはデータ入力ロケーションは、束縛された伝送先（および／または伝送元）アドレスとして、フィールド１０２５に格納される。それとは別に、データ入力および／またはデータ出力ポインタ（伝送元／伝送先タスクＩＤおよびアクションＩＤとして）は、潜在的な再ルーティングのために実装される方法に応じて、格納されうる。例えば、タスク全体が新たに再割り当てされ、再束縛される場合、すでに格納されている伝送元および伝送先情報を使用するのではなく、新しいルーティング情報が生成される。残っている制御フィールドは、与えられたコンテキストが（回路要素２７０により実行される対応するアクションに対し）実行されるかどうか、またいつ実行されるか、ＳＭＥ  ２９０により割り込みをどのように処理するか、１つまたは複数の伝送先アドレスに出力データをどのように送るかを制御するために使用される。
【０２１２】
要素コントローラ３２５は、例示的な実施形態において、例示的な構成および制御ワード１０００のさまざまなフィールド（例えば、１０３５、１０４０、１０５０、１０６０）に格納されているビットの値に基づき、結果（与えられたコンテキストが実行するか、または実行しない）を出力する、ＡＮＤ、ＯＲ、およびＩＮＶＥＲＴＥＲゲートなどの組み合わせロジック・ゲートまたは要素を備える。図１７は、本発明の教示による例示的な装置内でコンテキストの準備ができているかどうかを判定するための例示的な組み合わせロジック回路１１００を示すブロック図である。
【０２１３】
上述のように、データ・フロー環境において、コンテキスト（タスク）は、十分な入力データがあり、また結果の出力データに対する十分に空いているか、または利用可能な伝送先がある場合に実行可能である。構成可能な要素２７０への複数の入力および対応する複数の入力キュー３２０があるので、重要入力（ＳＩ）ビット（１０３５）が、それらの入力のうちどれを選択されたコンテキストにおいて使用するかを指定する。それに加えて、入力キュー３２０は、対応する入力キュー３２０内に十分なデータがあることを示す、「十分入力」（「ＥＩ」）と呼ばれる、第１の信号を生成するように適合される。例えば、要素コントローラ３２５では、ＳＩビットのそれぞれが、反転され、反転されたＳＩビットおよびその対応するＥＩ信号のそれぞれに対しＯＲ演算が実行され（ＯＲゲート１１１００から１１１０ｎまで）、その対応するＯＲ結果（４つの入力に対し４つの結果）のすべてに対しＡＮＤ演算が実行され（ＡＮＤゲート１１１５）、これにより「データ入力使用可」信号が得られ、ＡＮＤ結果（データ入力使用可）は選択されたコンテキストにより使用される入力のところに利用可能なデータが十分にあることを示す。より具体的には、データ入力使用可信号は、（１）重要入力のところに十分なに入力データが出ており、（２）他の残りの入力は重要でない場合に生成される。
【０２１４】
同様に、構成可能な要素２７０からの複数の出力キュー３１５および出力３７５があるので、重要出力（ＳＯ）ビット（１０４０）が、それらの出力および対応するキューのうちどれを選択されたコンテキストにおいて使用するかを指定する。それに加えて、「空きがある」（「ＲＦＭ」）信号と呼ばれる第２の信号が生成され、（複数の）対応する伝送先が、出力キュー３１５またはデータ伝送先の入力キュー３２０のいずれかからの、または潜在的に出力データ消費を追跡する出力レジスタからの、出力データに利用可能な十分な空き領域を有することを示す。また、例えば、要素コントローラ３２５において、ＳＯビットが、反転され、反転されたＳＯビットおよびその対応するＲＦＭ信号のそれぞれに対しＯＲ演算が実行され（ＯＲゲート１１２００から１１２０ｎまで）、その対応するＯＲ結果（２つの入力に対し２つの結果）のすべてに対しＡＮＤ演算が実行され（ＡＮＤゲート１１２５）、これにより「データ出力使用可」信号が得られ、ＡＮＤ結果（データ出力使用可）は、選択されたコンテキストによりデータ出力に利用可能な十分なメモリ空間がある、つまり、対応する出力キュー３１５（または伝送先入力キュー３２０（または他のメモリ））内に利用可能な空き領域があることを示す。より具体的には、データ出力使用可信号は、（１）重要出力のところに出力データのための空き領域があり、（２）他の残りの出力は重要でない場合に生成される。
【０２１５】
これら２つの結果、データ入力使用可、およびデータ出力使用可は、次いで、ＡＮＤ演算を実行され（ＡＮＤゲート１１３０）、選択されたコンテキストに対する全体的データ「使用可」ステータスが得られる。例えば、使用可ステータスは、（複数の）データ入力と（複数の）データ出力が使用可である場合に論理１であり、そうでない場合には０である。それとは別に、図１７に例示されているように、データ入力使用可およびデータ出力使用可の結果と他のフィールドとのＡＮＤ演算を実行して（後述の状態使用可および実行ステータス）、コンテキストが実行可能状態であることを示す全体的指標（「コンテキスト使用可」信号）が生成される。
【０２１６】
フィールド１０５０に格納されている実行ステータスは、コンテキストが実行について有効にされているかどうかを示し、束縛プロセスにおけるデータ入出力ルーティングに従ってセットされるか、またはＳＭＥ  ２９０により別のときにセット（またはリセット）されうる。例えば、タスク（選択されたコンテキストがその一部である）は、他の構成可能な要素２７０についてまだ構成されルーティングされている最中である場合があり、そのようなルーティングが完了するまで有効にされるべきではない。他の状況では、ＳＭＥ  ２９０の１つは、別のときに再開が可能なように、タスクを停止しているか、またはタスクを削除中である場合がある。そのため、要素コントローラ３２５は、フィールド１０５０の実行ステータスにより示されているように、有効にされたときのみコンテキストを実行する。
【０２１７】
ＳＭＥ  ２９０は、さらに、１つまたは複数の状態使用可ビット（オプションのフィールド１０６０に格納されてる）を使用して、さまざまな条件または他のイベントに基づきコンテキスト実行を制御することもできる。例えば、初期化など、条件が満たされた場合、選択されたコンテキストは、次に実行される必要があり、状態使用可ビットで指定される。これらのビット（実行ステータス、状態使用可、データ出力使用可信号、データ入力使用可信号）はすべて、ＡＮＤ演算を実行され（ＡＮＤゲート１１３０）、また、その結果は、実行ステータス・フィールド１０５０または要素コントローラ３２５によりアクセス可能な他のフィールド内に格納されうる。その結果、状態使用可ビット、データ入力使用可、データ出力使用可および実行ステータス・インジケータを結合することで、要素コントローラ３２５が選択されたコンテキストの実行を許可することを示す指標が得られる。それとは別に、演算は、状態使用可ビットなしで、実行ステータス（フィールド１０５０の）を使用することで制御することができ、これにより、ＳＭＥ  ２９０は、コンテキストが実行について有効にされているかいないかを単純に指定することができる。
【０２１８】
オプションのサイクル・フィールド１０４５は、対応するアクションを実行するのに必要なクロック・サイクル数を指定するために使用される。このフィールドは、第１のコンテキストの計算がまだ続いているときに、他のコンテキストが実行されるの回避するために使用される。
【０２１９】
オプションのシングルステップ・フィールド１０８０は、ＳＭＥ  ２９０による結果の調査などのために、コンテキストが１回だけ実行されるようにする場合に使用される。さまざまなテスト・コンテキストが、シングルステップ・モードで実行されることが多く、ＳＭＥ  ２９０ではシングルステップ・ビットのセットまたはクリアを行う（例えば、選択された時刻にテストを実行する、実行に必ずしも利用できないようにする）。
【０２２０】
選択された一実施形態では、オプションのコンテキスト・フィールド１０７０は、複数のコンテキストの潜在的な実行の際のアービトレーションの一部として使用されうる。コンテキストが実行されている場合、最後のコンテキスト・ビットはセットされる（そして、他のコンテキストの最後のコンテキスト・ビットは０にリセットされる）。実行可状態にあるコンテキストの競合が生じた場合、最後のコンテキスト・ビットが、それらのコンテキストのうちの１つが実行されたばかりかどうかを判定し、もしそうであれば、他のコンテキストの実行を許可し、これにより１つのコンテキストが構成可能な要素２７０において完全に支配的な実行を行うのを回避する。それに加えて、ちょうど実行したばかりではなかったコンテキストの競合が生じる場合、１つまたは複数のオプションの優先度ビット（フィールド１０５５内に格納されている）が、優先度の高いコンテキストのアービトレーションを行い、最初に実行するのを許可するために使用されうる。
【０２２１】
例示的な一実施形態では、「連鎖」インジケータとも呼ばれる、オプションの次のインジケータ（フィールド１０６５に格納されている）は、次に実行するコンテキストを決定するために使用され、コンテキストが実行されるシーケンスを制御する、つまり、一連の演算を１つの連鎖にする場合に特に役立つ。この実施形態では、要素コントローラ３２５は、上述の他の条件が満たされているときに、「連鎖先頭」コンテキスト（フィールド１０６５内でも指定される、連鎖の第１のコンテキスト）の実行を開始することができる。これ以降、要素コントローラ３２５は、これもまた他の条件（例えば、ＥＩ、ＲＦＭなど）が満たされている場合に、フィールド１０６５で指定されているように、このシーケンス内の次のコンテキストを実行し、満たされていなければ、次のコンテキストが利用可能になるのを待つ。次のコンテキストが、現在のコンテキストと同じであれば、そのシーケンスの実行は完了している。このフィールド１０６５は、さらに、（複数の）データ入力が消費されるかどうかに関する指定も含むことができる。
【０２２２】
他の例示的な実施形態では、伝送先に基づく（伝送元に基づくのではなく）データ伝送が使用される場合、同じ出力が複数の伝送先に送られる（か、または複製される）ときに、オプションの「フォーク」フィールド１０３０が、出力複製に使用される。追加のコンテキストは、これらの追加の伝送先を格納するために使用される。この実施形態では、要素コントローラ３２５は、上述の他の条件が満たされているときに、「フォーク先頭」コンテキスト（フィールド１０３０内でも指定される、フォークの第１のコンテキスト）の実行を開始することができる。これ以降、フォーク・フィールド１０３０の１つまたは複数のビットが、他のコンテキストを示している場合、現在の出力はそのコンテキストに対する出力として供給（順次コピー）されるため、同じ出力を単に別のロケーションに送るだけのために、同じデータに基づきコンテキストを再実行しなくて済む。「フォーク」シーケンスの一部でない他のコンテキストは、この順次出力複製時には実行されない。次のコンテキストが、現在のコンテキストと同じであれば、フォーク（出力複製）の実行は完了している。フィールド１０３０にフォークが示されていない場合、要素コントローラ３２５は、単に、他のどのようなコンテキストが実行可能状態にあるかを決定するだけであり、それに応じて進行する。
【０２２３】
選択されている一実施形態では、オプションの「割り込み」フィールド１０７５も用意されうる。このフィールドは、構成ワード１０００の一部として、コンテキストの実行時期を含む、割り込みの設定、マスク設定、および検出を指定することができる。これらの割り込みは、ＳＭＥ  ２９０により処理される。
【０２２４】
また、選択された一実施形態では、オプションの定数モード・フィールド１０８５は、入力データ・ワードの１つまたは複数が定数であることを指定するために使用されうる。このような定数に関して、これは一般的に保持され（変更されるまで）、したがって、定数はデータ演算の実行中に消費されることはない。この実施形態では、定数モード・フィールド１０８５の選択されたビットは、さらに、２つまたはそれ以上の定数値をトグルまたはスイッチするなどのために、次のデータ読み取り位置（例えば、２ワード入力キュー３２０内のどのデータ・ワードか）を示すために使用される。
【０２２５】
したがって、上述のように、要素コントローラ３２５は、それぞれのコンテキストに対する構成および制御ワード１０００（および他の制御信号）のさまざまなフィールドを評価する、複数の組み合わせロジック・ゲートを使用して実装されうる。コンテキストが使用可であり、実行されるべきであることを、さまざまなフィールドおよび他の信号が示している場合、要素コントローラ３２５は、コンテキストの構成をロードし、対応するタスクまたはアクション（または命令）が実行される。
【０２２６】
要約すると、本発明は、自己回復機能を有する回復適応集積回路を実現するということである。例示的な実施形態の多数の利点は、すぐにわかるものである。本発明のＩＣアーキテクチャは、回復能力を有し、製造時の欠陥、ＩＣを使用する際に生じうる不具合への適応、および新しい機能、サービス、アルゴリズム、および他のイベントに対する適応性をもたらすものである。このＩＣアーキテクチャは、ＩＣの一部が損傷したり、他の何らかの形で使用不能になった場合でも、ＩＣのそれ以外の部分が有効に「リクルート」される、つまり損傷した部分の機能を引き継いで実行するように再割り当てされるため自己回復的である。本発明を使用することで、単一のコンポーネントをスイッチアウトすることができ、しかも従来技術の固定された配線は利用されない。それに加えて、機能が再割り当てされると、新しい制御およびデータ経路も作成され、移動された演算は他のＩＣ演算で継ぎ目なく実行を続ける。このような適応回復および自己回復機能は、選択された実施形態に応じて、リアルタイムで、またはほぼリアルタイムで実行されうる。このような回復性のおかげで、ＩＣに損傷が発生した場合に、突発的故障になることなく、実行のグレースフル・デグラデーションが可能になり、このような回復性は、健康安全関係のアプリケーションでは特に重要である。
【０２２７】
本出願では、自己回復機能を有する回復適応集積回路のためのシステム、装置、ソフトウェア、および方法を開示することは理解されるであろう。本発明は、特定の実施形態に関して説明されているけれども、それらの実施形態は単に例示的であり、本発明を制限するものではない。本明細書の説明では、電子的コンポーネント、電子的および構造接続部、材料、および構造変更形態の実施例など、多数の具体的内容を取りあげ、本発明の実施形態を十分理解できるようにしている。しかし、当業者であれば、本発明の一実施形態は、これらの具体的内容の１つまたは複数がなくても、または他の装置、システム、アセンブリ、コンポーネント、材料、パーツなどを使用しても、実施できることを理解するであろう。他の場合には、よく知られている構造、材料、または動作（または演算）については、特に詳しく示したり説明したりせず、本発明の実施形態の態様がわかりにくくならないように配慮している。それに加えて、各種の図は、縮尺通りではなく、また制限するものとしてみなされるべきではない。
【０２２８】
本明細書で使用されているような「プロセッサ」は、どのようなタイプのコントローラまたはプロセッサであってもよく、また本明細書で説明されている機能を実行するように適合された、１つまたは複数のプロセッサ１７５として具現化されうる。プロセッサは、別システム内にあってもよく、またはシステム１００、１４０などのダイの一部として集積化されてもよく、また市販のプロセッサまたはマイクロプロセッサ、例えばＡＲＭまたはＭｉｃｒｏ−Ｂｌａｚｅなど、どのようなタイプのプロセッサもしくはコントローラであってもよく、あるいは１つまたは複数のＳＭＥ  ２９０を使用して実装されてもよい。本明細書ではプロセッサという用語が使用されており、プロセッサは、単一の集積回路（「ＩＣ」）の使用を含むことができるか、またはコントローラ、マイクロプロセッサ、デジタル・シグナル・プロセッサ（「ＤＳＰ」）、パラレル・プロセッサ、マルチコア・プロセッサ、カスタムＩＣ、特定用途向け集積回路（「ＡＳＩＣ」）、フィールド・プログラマブル・ゲート・アレイ（「ＦＰＧＡ」）、適応コンピューティングＩＣ、関連するメモリ（ＲＡＭ、ＤＲＡＭ、およびＲＯＭなど）、ならびに他のＩＣおよびコンポーネントなどの、複数の集積回路または接続された、配列された、またはグループ化された他のコンポーネントの使用を含むことができる。そのため、本明細書で使用されているように、プロセッサという用語は、単一のＩＣ、またはマイクロプロセッサ・メモリまたは追加のＲＡＭ、ＤＲＡＭ、ＳＤＲＡＭ、ＳＲＡＭ、ＭＲＡＭ、ＲＯＭ、ＦＬＡＳＨ、ＥＰＲＯＭ、またはＥ２ＰＲＯＭなどの関連するメモリを備えるカスタムＩＣ、ＡＳＩＣ、プロセッサ、マイクロプロセッサ、コントローラ、ＦＰＧＡ、適応コンピューティングＩＣ、または後述の機能を実行する集積回路の他の何らかのグループの配列を同等なものとして意味し、含むものと理解されるべきである。プロセッサ（プロセッサ１２１５などの）は、その関連するメモリとともに、本発明の方法を実行するように（プログラミング、ＦＰＧＡ相互接続、またはハード配線を介して）適合または構成されうる。例えば、この方法は、プロセッサが動作している（つまり、電源オンで機能している）ときにその後の実行のため、一組のプログラム命令または他のコード（または同等の構成もしくは他のプログラム）として、関連するメモリ（および／または他のメモリ）および他の同等のコンポーネントを備えるプロセッサ／コントローラ１７５内にプログラムされ、格納されうる。同等のことであるが、プロセッサ１２１５が、ＦＰＧＡ、カスタムＩＣ、および／またはＡＳＩＣとして全部または一部実装されうる場合、それらのＦＰＧＡ、カスタムＩＣ、またはＡＳＩＣは、本発明の方法を実装するように設計され、構成され、および／またはハード配線されうる。例えば、プロセッサは、メモリとともに、本発明の方法を実装するようにそれぞれプログラムされ、設計され、適合され、または構成されている、「コントローラ」または「プロセッサ」と総称される、複数のプロセッサ、コントローラ、マイクロプロセッサ、ＤＳＰ、および／またはＡＳＩＣの配列として実装することができる。
【０２２９】
データ・リポジトリ（またはデータベース）を含んでもよい、本明細書で使用されるような「メモリ」は、選択された実施形態に応じて、限定はしないが、ＲＡＭ、ＦＬＡＳＨ、ＤＲＡＭ、ＳＤＲＡＭ、ＳＲＡＭ、ＭＲＡＭ、ＦｅＲＡＭ、ＲＯＭ、ＥＰＲＯＭまたはＥ２ＰＲＯＭ、または磁気ハードドライブ、光ドライブ、磁気ディスクまたはテープ・ドライブ、ハードディスク・ドライブ、フロッピー（登録商標）・ディスク、ＣＤＲＯＭ、ＣＤ−ＲＷ、デジタル多用途ディスク（ＤＶＤ）または他の光メモリ、または知られている、または知られるようになる他のタイプのメモリ、記憶媒体、またはデータ記憶装置もしくは回路などの他の機械可読記憶装置またはメモリ媒体などの他の形態のメモリ・デバイスを含む、揮発性、不揮発性にかかわらず、取り外し可能、取り外し不可能にかかわらず、限定はしないが、メモリ集積回路（「ＩＣ」）、または集積回路のメモリ部分（プロセッサ内の常駐メモリなど）を含む、現在知られている、または将来知られることになる、コンピュータまたは他の機械可読データ記憶媒体、メモリ・デバイスまたは情報の格納または通信伝達のための他の記憶装置もしくは通信デバイスを含む、多くの形態で具現化されうる。それに加えて、そのようなコンピュータ可読媒体は、電磁信号、光信号、音響信号、ＲＦ信号、または赤外線信号などを含む、有線または無線の信号中にデータまたは他の情報を符号化することができる、情報配送媒体を含む、電磁もしくは光搬送波または他の搬送機構などの、コンピュータ可読命令、データ構造体、プログラム・モジュール、またはデータ信号もしくは変調信号中の他のデータを具現化する任意の形態の通信媒体のを含む。メモリは、さまざまなルックアップ・テーブル、パラメータ、係数、他の情報およびデータ、プログラムまたは命令（本発明のソフトウェアの）、およびデータベース・テーブルなどの他のタイプのテーブルを格納するように適合されうる。
【０２３０】
上に示されているように、プロセッサ／コントローラ１７５は、例えば、本発明のコンパイル方法を実行するために、本発明のソフトウェアおよびデータ構造体を使用して、プログラムされる。その結果、本発明のシステムおよび方法は、コンピュータ可読媒体内に具現化された一組の命令および／またはメタデータなどの、そのようなプログラミングまたは他の命令を備えるソフトウェアとして具現化されうる。それに加えて、メタデータは、さらに、ルックアップ・テーブルまたはデータベースのさまざまなデータ構造体を定義するために使用されうる。そのようなソフトウェアは、実施例として、限定することなく、ソース・コードまたはオブジェクト・コードの形態を取りうる。ソース・コードは、さらに、ある種の形態の命令またはオブジェクト・コード（アセンブリ言語命令または構成情報を含む）にコンパイルされうる。本発明のソフトウェア、ソース・コード、またはメタデータは、Ｃ、Ｃ＋＋、ＳｙｓｔｅｍＣ、ＬＩＳＡ、ＸＭＬ、Ｊａｖａ（登録商標）、Ｂｒｅｗ、ＳＱＬおよびその派生言語（例えば、ＳＱＬ  ９９またはＳＱＬの専用バージョン）、ＤＢ２、Ｏｒａｃｌｅ、またはさまざまなハードウェア定義またはハードウェア・モデリング言語（例えば、Ｖｅｒｉｌｏｇ、ＶＨＤＬ、ＲＴＬ）およびその結果得られるデータベース・ファイル（例えば、ＧＤＳＩＩ）を含む、本明細書で説明されている機能を実行する他のタイプのプログラミング言語などの、任意のタイプのコードとして具現化されうる。そのため、「構成要素」、「プログラム構成要素」、「ソフトウェア構成要素」、または「ソフトウェア」は、本明細書では同等のものとして使用され、指定されている関連する機能または方法を実現するか、または実現するものと解釈できる（例えば、プロセッサ１２１５を含む、インスタンス化されるか、またはプロセッサまたはコンピュータにロードされ、実行される場合）、構文またはシグネチャを持つ、任意の種類のプログラミング言語を意味し、その言語を指す。
【０２３１】
本発明のソフトウェア、メタデータ、または他のソース・コードおよびその結果得られるビット・ファイル（オブジェクト・コード、データベース、またはルックアップ・テーブル）は、上述のように、メモリ１２２０、例えば、フロッピー（登録商標）・ディスク、ＣＤＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ、磁気ハードドライブ、光ドライブ、または他のタイプのデータ記憶装置または媒体に関して上で説明されているような、コンピュータ可読命令、データ構造体、プログラム・モジュールまたは他のデータとして、コンピュータまたは他の機械可読データ記憶媒体などの有形記憶媒体内に具現化できる。
【０２３２】
Ｉ／Ｏインターフェースは、当業で知られているように、または当業で知られる可能性があるように実装され、インピーダンス・マッチング機能、低電圧のプロセッサが高電圧の制御バスとインターフェースするための電圧変換、およびプロセッサからの信号に応じてさまざまな回線またはコネクタをオン／オフするためのさまざまなスイッチング機構（例えば、トランジスタ）を備えることができる。それに加えて、Ｉ／Ｏインターフェースは、さらに、例えば、コンパイルのためのアルゴリズムなどの情報を受け取るために、ハード配線、ＩＲまたはＲＦ信号送受信などを通じて、信号を受信し、および／または信号を外部的にシステムに送信するように適合されうる。Ｉ／Ｏインターフェースは、選択されたアーキテクチャを使用して、任意のタイプのバスまたはネットワーク構造もしくは媒体に接続することができる。例えば、限定はしないが、このようなアーキテクチャとしては、Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ）バス、Ｅｎｈａｎｃｅｄ  ＩＳＡ（ＥＩＳＡ）バス、Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＭＣＡ）バス、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バス、ＳＡＮバス、またはイーサネット（登録商標）、ＩＳＤＮ、Ｔ１、衛星、無線などの他の通信もしくは信号送受信媒体がある。Ｉ／Ｏインターフェースは、当業で知られているように、または当業で知られる可能性があるように、実装され、該当する標準（例えば、限定はしないが、さまざまなＰＣＩ、ＵＳＢ、またはイーサネット（登録商標）標準のうちの１つ）を使用して、プロセッサとネットワークとの間のデータ通信を行うことができる。
【０２３３】
明細書全体を通して「一実施形態」、「実施形態」、または特定の「実施形態」と記述されている場合、これは、その実施形態に関して説明されている特定の機能、構造、または特性が、本発明の少なくとも１つの実施形態に含まれ、必ずしもすべての実施形態に含まれるわけではなく、さらに、必ずしも同じ実施形態を参照するわけでもないことを意味する。さらに、本発明の特定の実施形態の特定の機能、構造、または特性は、好適な方法で、また他の特徴の対応する用途のない選択された特徴の用途を含む、１つまたは複数の他の実施形態の好適な組み合わせで、組み合わせることができる。それに加えて、特定の用途、状況、または材料を本発明の本質的範囲および精神に適合させるように、多くの修正を加えることができる。本明細書で説明され、例示されている本発明の実施形態の他の変更形態および修正形態は、本明細書の教示に照らして可能であり、本発明の精神および範囲の一部として考えられることは理解されるであろう。
【０２３４】
また、図に示されている要素の１つまたは複数は、さらに、より独立した、または一体化された方法で実装されるか、またはさらには、特定の用途に応じて有用であるように、いくつかの場合において取り除かれるか、または動作不可能にすることも可能であることも理解されるであろう。コンポーネントの一体形成された組み合わせも、本発明の範囲内にあり、特に、ディスクリート・コンポーネントの分離または組み合わせが不明確であるか、または識別できない実施形態についてもそうである。さらに、本明細書で、「結合（する）」または「結合可能」などのさまざまな言い回しを含む「結合されている」という用語を使用した場合、これは、直接的または間接的な、電気的、構造的、または磁気的結合、接続、または取り付け、あるいは一体形成されたコンポーネントおよび他のコンポーネントを介してまたは通じて結合されているコンポーネントを含む、そのような直接的または間接的な、電気的、構造的、または磁気的結合、接続または取り付けの適応または能力を意味し、含む。
【０２３５】
さらに、図面／図中の信号矢印は、例にすぎず、特に断りのない限り、制限するものとみなすべきではない。ステップのコンポーネントの組み合わせも、特に分離または組み合わせの能力が不明確または予見可能である場合に、本発明の範囲内にあると考えられる。本明細書で使用され、以下の請求項の全体にわたって使用されているような、離接的な用語「または、あるいは、もしくは」は、断りのない限り、接続と離接の両方の意味を有する「および／または」を意味することを意図されている（「排他的ｏｒ」の意味に限定されない）。本明細書の説明および以下の請求項全体にわたって使用されているように、「１つの（または使わない場合もある）」および「その（使わない場合もある）」（英語原文の冠詞「ａ」、「ａｎ」、および「ｔｈｅ」）は、文脈上明らかにそうでないことを示していない限り、複数の意味を含む。また、本明細書の説明および以下の請求項全体にわたって使用されているように、「における、中の、内の」（英語原文で「ｉｎ」）は、文脈上明らかにそうでないことを示していない限り、「における、中の、内の」と「上の」（英語原文で「ｉｎ」および「ｏｎ」）の意味を含む。
【０２３６】
「発明の概要」または「要約」の項で説明されているものを含む、本発明の例示されている実施形態の前記の説明は、網羅的であること、または発明を本明細書で開示されている正確な形態に制限することを意図していない。前記の説明から、本発明の新規性のある概念の精神および範囲から逸脱することなく、多数の変更形態および修正形態が実施されうることは観察されるであろう。本明細書に例示されている特定の方法および装置に関して一切の制限が意図されないか、また推論されるべきでないことは理解されるであろう。もちろん、付属の請求項により請求項の範囲内に収まる形でそのような修正形態を対象することは意図されている。
【図１】
0005420401.tif 000002
【図２】
0005420401.tif 000003
【図３】
0005420401.tif 000004
【図４】
0005420401.tif 000005
【図５】
0005420401.tif 000006
【図６】
0005420401.tif 000007
【図７】
0005420401.tif 000008
【図８】
0005420401.tif 000009
【図９】
0005420401.tif 000010
【図１０】
0005420401.tif 000011
【図１１】
0005420401.tif 000012
【図１２】
0005420401.tif 000013
【図１３】
0005420401.tif 000014
【図１４Ａ】
0005420401.tif 000015
【図１４Ｂ】
0005420401.tif 000016
【図１４Ｃ】
0005420401.tif 000017
【図１４Ｄ】
0005420401.tif 000018
【図１５】
0005420401.tif 000019
【図１６】
0005420401.tif 000020
【図１７】
0005420401.tif 000021
【図１８】
0005420401.tif 000022
【図１９】
0005420401.tif 000023