(57)【特許請求の範囲】
【請求項１】
コンフィグレーション可能な多次元のセルアレイを再コンフィグレーションする方法において、
再コンフィグレーション可能な複数のセルのうち少なくとも１つのセルに対し再コンフィグレーションユニットにより新たな再コンフィグレーション命令を伝送し、
前記再コンフィグレーションユニットは、再コンフィグレーション不可能な状態にあるセルに対する再コンフィグレーション命令を格納するメモリを有しており、
前記再コンフィグレーションユニットは、前記少なくとも１つのセルに対する再コンフィグレーション命令が前記メモリに格納されていないという条件に基づき、該少なくとも１つのセルへ新たな再コンフィグレーション命令を伝送し、
該新たな再コンフィグレーション命令に応答して、前記少なくとも１つのセルが再コンフィグレーション可能な状態にあるならば、該少なくとも１つのセルを前記新たな再コンフィグレーション命令に従い再コンフィグレーションし、再コンフィグレーション可能な状態にないならば、前記少なくとも１つのセルにより拒否情報が前記再コンフィグレーションユニットへ伝送され、
該拒否情報に応答して、前記再コンフィグレーションユニットは前記新たな再コンフィグレーション命令を前記メモリに格納することを特徴とする、
コンフィグレーション可能な多次元のセルアレイを再コンフィグレーションする方法。
【請求項２】
２次元またはそれ以上の次元のセルアレイを備えたコンポーネント（たとえばＦＰＧＡ，ＤＰＧＡ，ＤＦＰ等）をデッドロックなく自動的にコンフィグレーションおよび再コンフィグレーションする方法において、
コンフィグレーションおよび再コンフィグレーションを制御するユニットは、割り当てられたコンフィグレーション可能なエレメントの集合を管理し、
該集合は、コンフィグレーション可能なすべてのエレメントの部分集合または全体集合を成し、前記の管理を、
１．１  割り当てられたコンフィグレーション可能なエレメントの再コンフィグレーション要求が前記ユニットへ送られ、
１．２  該ユニットは要求を処理し、ここで、
ａ）コンフィグレーション可能なエレメントの目下のステータスを保護し、
ｂ）存在する先行の要求におけるまだロードすべきコンフィグレーションデータをバッファメモ（ＦＩＬＭＯ）からコンフィグレーション可能なエレメントへ可能なかぎりロードし、
ｃ）コンフィグレーションデータが該ユニットのメモリ内に存在しているならば、再コンフィグレーション要求を該ユニットにおけるメモリ内のロードすべきコンフィグレーションデータのアドレスに変換し、
ｄ）コンフィグレーションデータが該ユニットのメモリ内に存在していないならば、上位のユニットにおいて対応するＩＤをもつコンフィグレーションデータを要求してロードし、
１．３  前記ユニットは命令シーケンスのコンフィグレーションデータを処理し、ここで、
ａ）コンフィグレーション可能なエレメントがコンフィグレーションデータを受け入れることができるならば、コンフィグレーション可能なエレメントへ該データをロードし、
ｂ）コンフィグレーションデータを受け入れることのできないコンフィグレーション可能なエレメントのデータは、その時間順序に従いバッファメモリ（ＦＩＬＭＯ）へロードし、
１．４  コンフィグレーションデータが完全に処理されてしまった後、再び新たに発生する要求を受け入れ、新たな要求が発生するまで、存在する先行の要求においてまだロードしなければならないコンフィグレーションデータを、バッファメモリ（ＦＩＬＭＯ）からコンフィグレーション可能なエレメントへロードする、
ことにより行うことを特徴とする、
２次元またはそれ以上の次元のセルアレイを備えたコンポーネント（たとえばＦＰＧＡ，ＤＰＧＡ，ＤＦＰ等）をデッドロックなく自動的にコンフィグレーションおよび再コンフィグレーションする方法。
【請求項３】
コンフィグレーション可能なエレメントに受け入れられなかったコンフィグレーションデータを、バッファメモリ（ＦＩＬＭＯ）の最後に書き込む、請求項２記載の方法。
【請求項４】
コンフィグレーション可能なエレメントに書き込むため、コンフィグレーションデータをバッファメモリの最初から最後まで読み出し、バッファメモリを常に完全にスキャンする、請求項２または３記載の方法。
【請求項５】
バッファメモリの最初においてコンフィグレーション可能なエレメントに書き込まれるコンフィグレーションデータをバッファメモリ内で消去し、つまり読み出しポインタを書き込まれたデータの後ろにセットする、請求項２から４のいずれか１項記載の方法。
【請求項６】
バッファメモリの中間からコンフィグレーション可能なエレメントに書き込まれるコンフィグレーションデータを、
ａ）バッファメモリ内で消去されたとマーキングし、それにより新たな読み出しスキャン時には飛び越されるようにするかまたは、
ｂ）バッファメモリ（ＦＩＬＭＯ）内で消去し、該消去にあたり、まだ存在しているコンフィグレーションデータを消去すべきメモリロケーションからバッファメモリ（ＦＩＬＭＯ）の最初または最後までシフトし、消去されたメモリロケーションが既存のコンフィグレーションデータにより占有され、それに応じてポインタがメモリの最初または最後に合わせて整合されるよう、前記のシフトを行う、
請求項２から５いずれか１項記載の方法。
【請求項７】
ステートマシン（ガーベージコレクタ）が前記ユニットのメモリ（ＣＴＲ）を、メモリの隙間が生じないように管理し、ここでメモリの隙間を存在しているコンフィグレーションデータによって、メモリの隙間の最初から出発してメモリ（ＣＴＲ）の最後までシフトし、消去されたメモリロケーションが既存のコンフィグレーションデータによって占有され、それに応じてポインタがメモリの最後に合わせて整合され、ＩＤの変換がシフトされたメモリロケーションに合わせて整合されるよう、前記のシフトを行う、請求項２から６のいずれか１項記載の方法。
【請求項８】
ユニットに到来する要求をコンフィグレーションルーチンの一義的な識別子（ＩＤ）に変換し、ＩＤはメモリ（ＣＴＲ）内のメモリロケーションを指す、請求項２から７のいずれか１項記載の方法。
【請求項９】
コンフィグレーションデータは別のコンフィグレーションデータのロードに作用する（ＥＸＥＣＵＴＥ）、請求項２から８のいずれか１項記載の方法。
【請求項１０】
前記ユニットは階層構造的に１つのツリー構造内に配置されている、請求項２から９のいずれか１項記載の方法。
【請求項１１】
前記ツリー構造内で最上位におかれたユニットは、１つの共通のメモリを上位のコンピュータと分け合い、上位のコンピュータはコンポーネント内のシーケンスを上位のユニットとの通信を介して制御する、請求項２から１０のいずれか１項記載の方法。
【請求項１２】
中間および最上位の階層平面に属するユニットは、通常の要求（トリガ）のほかにＩＤの要求にも応答し、参照されるコンフィグレーションルーチンにおけるメモリロケーションのアドレスへの前記ＩＤの変換が行われ、トリガからＩＤへの変換が省略される、請求項２から１１のいずれか１項記載の方法。
【請求項１３】
コンフィグレーションデータは別のユニットへの要求により、該別のユニットにおける他のコンフィグレーションデータの実行に作用を及ぼし（ＴＲＩＧＧＥＲ）、ここで前記要求は、
ａ）ブロードキャストとして他のすべてのユニットへ送られる、
ｂ）すぐ上に位置するユニットだけに送られる、
ｃ）すぐ下に位置するユニットだけに送られる、
ｄ）アドレッシングされた特定のユニットへ送られる、
請求項２から１２のいずれか１項記載の方法。
【請求項１４】
コンフィグレーション可能なエレメントにおいて受け入れられなかった該エレメントの所定のコンフィグレーションデータをバッファメモリ（ＦＩＬＭＯ）にロードし、１つの命令シーケンスにおける後続のコンフィグレーションデータ全体もバッファメモリにロードする、請求項２記載の方法。
【請求項１５】
１つの命令シーケンスにおける先行するすべてのコンフィグレーションデータをコンフィグレーション可能なエレメントにロードできたときだけ、コンフィグレーション可能なエレメントへ該エレメントの所定のコンフィグレーションデータをロードする、請求項２記載の方法。
【請求項１６】
請求項１４または１５記載の方法を使用することにより、命令シーケンス内のまえもって定められた一定のコンフィグレーション順序を守る、請求項１４または１５記載の方法。
【請求項１７】
割り当てられたエレメントから到来する再コンフィグレーション要求を、対応する命令シーケンスの一義的な識別番号に変換する、請求項２記載の方法。
【請求項１８】
識別番号への変換にあたり参照された再コンフィグレーション要求を検出せず、参照されていないとマーキングして処理する、請求項１７記載の方法。
【請求項１９】
識別番号の変換をルックアップテーブルを介して行う、請求項１７記載の方法。
【請求項２０】
割り当てられたエレメントから到来する再コンフィグレーション要求には一義的な識別番号がすでに設けられている、請求項２記載の方法。
【請求項２１】
一義的な識別番号をメモリ内の対応する命令シーケンスのアドレスに変換する、請求項１７から２０のいずれか１項記載の方法。
【請求項２２】
有効なアドレスが存在していなければ、対応する命令シーケンスをメモリにロードしてアドレス参照を確立する、請求項２１記載の方法。
【請求項２３】
識別番号からアドレスへの変換をルックアップテーブルによって行う、請求項２１記載の方法。
【請求項２４】
バッファメモリを別個のメモリとしては構成せず、精確に命令シーケンスと一致させ、コンフィグレーション不可能なコンフィグレーションワードをそのようなワードとしてマーキングし、該命令シーケンスが再度呼び出されたときにはマーキングされたコンフィグレーションワードだけを新たに処理する、請求項２から２３のいずれか１項記載の方法。
【請求項２５】
命令シーケンスをポインタによってチェーン結合し、以前はコンフィグレーション不可能だったコンフィグレーションワードをコンフィグレーション可能なエレメントへロードするときに時間順序が守られるよう、前記のチェーン結合を行う、請求項２または２４記載の方法。
【請求項２６】
命令シーケンスを完全にポインタによりチェーン結合し、ガーベージコレクタがチェーンに基づきすべての命令シーケンスにわたって動作し、除去すべき命令シーケンスを後続の命令シーケンスによって上書きし、ポインタチェーンから取り除く、請求項２または２４記載の方法。
【発明の詳細な説明】
【０００１】
発明の背景
従来の技術
この出願が基礎とする従来技術は、特許出願 196 54 846.2-53 （２次元またはそれ以上の次元のプログラミング可能なセルマトリックス（ＦＰＧＡ，ＤＰＧＡ等）を備えたデータフロープロセッサ（ＤＦＰ）およびコンポーネントの自立的ダイナミックリロード方法）、ならびに特許出願 196 54 593.5-53 （ランタイムにプログラミング可能なコンポーネントの再コンフィグレーション方法）に記載されている。そこにはＤＦＰならびにＦＰＧＡ、ＤＰＧＡおよび従来技術による類似のコンポーネントをコンフィグレーションおよび再コンフィグレーションする方法について記述されており、それによれば別個に形成され中央で上位に位置するマイクロコントローラに似たコンポーネントが、下位に位置するかなりパッシブな制御ユニットの配分の役割を担っている。
【０００２】
問題点
１つまたは複数のコンポーネントの各部分（たとえばセル（ＣＥＬ））の再コンフィグレーションを制御する中央のグローバルなユニットを使用すると、数多くの様々な再コンフィグレーション要求を一度に処理しなければならないときに隘路となってしまう。既述のコンポーネントの並列性の長所は、上記のような中央ユニットによって制約されてしまう。なぜならばそれらは典型的な「ボトルネック」を成しており、データ処理がこれにより著しく緩慢になってしまう。さらに、ロードすべきコンフィグレーションへのイベントソースの割り当てが問題となる。それというのも、コンフィグレーションメモリの絶対アドレスで動作が行われるからである。したがって再コンフィグレーションユニットには一種のメモリ管理システムが含まれていなければならず、これはオペレーティングシステムの場合のように、どのメモリ領域がどのコンフィグレーションによって使われるのかをいっしょに記録する。さらに付加的な問題として、リソース（たとえばＣＥＬ）の管理が挙げられる。この場合、各ＣＥＬ（セル）が正確に１度だけしか、リコンフィグレーション要求により始められたアルゴリズムしかも残りの周辺のＣＥＬも使用するアルゴリズムへ与えられないようにしておかなければならない。さもないとデッドロックの生じる可能性がある。
【０００３】
再コンフィグレーションの問題点をもう一度はっきりとさせるため、以下の実例を挙げる。複数のＣＥＬから成る１つのマトリックスはコンフィグレーションされておらず、ＲＥＳＥＴ状態にある。各ＣＥＬは、それらが再コンフィグレーションされた状態にあるか否かを表すことができる。マトリックスにおけるすべてのＣＥＬはコンフィグレーションに対しスタンバイ状態にあり、つまり再コンフィグレーション可能な状態にある。第１のコンフィグレーションルーチン（ＫＲ１）がロードされ、その際、マトリックスは完全には使用されない。コンフィグレーションされたＣＥＬは、それがコンフィグレーション可能な状態にあるという合図を消す。まだコンフィグレーションされていないＣＥＬのグループに、第１のコンフィグレーションルーチンとは独立した第２のコンフィグレーションルーチン（ＫＲ２）がロードされる。この場合、第３のコンフィグレーションルーチンはロードできない。なぜならばこれらのセルは第１および／または第２のコンフィグレーションルーチンに必要とされ、それらは使われるためコンフィグレーション可能な状態にはないからである。必要とされるＣＥＬが開放されるまで、すなわちＫＲ１とＫＲ２が終了してしまうまで、ＫＲ３は停止されなければならない。ＫＲ１およびＫＲ２の実行中、第４のコンフィグレーションルーチン（ＫＲ４）および第５のコンフィグレーションルーチン（ＫＲ５）に対するロード要求がさらに生じるけれども、それらをすべてただちに実行することはできない。なぜならばそれらは、ＫＲ１およびＫＲ２により使われるＣＥＬを利用するからである。ＫＲ３とＫＲ４は部分的に同じＣＥＬを使用するが、ＫＲ５はＫＲ３およびＫＲ４によるＣＥＬのいずれも使用しない。
【０００４】
ＫＲ３からＫＲ５を順序どおりにリドードするための要求は以下の通りである：
１．ＫＲ３からＫＲ５を、ロード要求に従い時間的な順序ができるかぎり保持されるようロードすること。
【０００５】
２．最大限の並列性を維持するため、互いに依存せずつまり共通のＣＥＬをもたないできるかぎり数多くのＫＲをロードすること。
【０００６】
３．各ＫＲが互いにブロックし合ってはならない。つまりＫＲ３は部分的にロードされるが、他のＣＥＬが部分的にロードされたＫＲ４にブロックされているので、それ以上はロードできない。他方、ＫＲ４もそれ以上はロードできない。それというのも、同様に必要とされるＣＥＬがＫＲ３によりブロックされているからである。このことにより典型的なデッドロック状態が引き起こされる。
【０００７】
４．ＫＲを生成したコンパイラにとって、時間的に重なるＫＲの実行を識別し、コンフリクト状態を解消するのは不可能である。
【０００８】
この場合、実現すべき回路にかかるコストと最適な結果との間の関係を、できるかぎり良好なものにしなければならない。つまり本発明の目的は、できるかぎりわずかなコストでフレキシブル、パラレルかつデッドロックのないコンフィグレーションを行うことができるようにし、時間的にも計算上も僅かな手間しかかけずにそれを実行できるようにすることである。この場合、以下の基本的な問題を解決しなければならない：
−Ｋ３だけしかロードしないのであれば、そのやり方によってもデッドロックは発生しないが、ＫＲ５もロード可能であろうことから、それは最適ではない。
【０００９】
−ＫＲ３をロードし、ＫＲ４をロードしなければ、ＫＲ５はＫＲ４を、それが後続のロードプロセスにあたり最高優先度をもつようあらかじめ記録しておかねばならず、このことは管理の手間が著しくかかることを意味する。
【００１０】
デッドロックのない状態は、以下で述べる方法によって得られる：
本発明による改善、課題
本発明の基本的な課題は、階層構造をもち各レベルに何度も現れることのできるユニット（以下ではコンフィグレーションテーブルＣＴと称する）を構成することであり、その際にＣＴの個数を、最上位レベルにおいてちょうど１つのＣＴが存在するよう、最下位の階層段から最上位の階層段に向かって低減させる。各ＣＴは他のパラレルなＣＴとは無関係に、コンフィグレーション可能な複数のエレメント（ＣＥＬ）のコンフィグレーションおよびコントロールを行う。高い方の階層段におけるＣＴは、低い階層におかれたＣＴのためのコンフィグレーションルーチンを一時記憶することができる。低い階層におかれた複数のＣＴが同一のコンフィグレーションルーチンを必要とする場合、そのルーチンが高い階層におかれたＣＴにおいて一時記憶され、個々のＣＴから呼び出される。この場合、高い階層におかれたＣＴは該当するコンフィグレーションルーチンをグローバルな共通のコンフィグレーションメモリから１度呼び出すだけであり、これによってキャッシュ効果が達成される。コンフィグレーション可能なコンポーネントから離れて、マイクロプロセッサ、ＤＦＰあるいは複数の計算機構をもつ同等のものにおいて、命令キャッシュおよびデータキャッシュ用のキャッシュ方法として本発明を使用することができる。この場合、用途に応じて、以下で説明するユニットのうちのいくつか（たとえばＦＩＬＭＯ）を省略できるが、階層構造については基本的に変更されない。したがってこの使用法はサブセットとみなされ、これについてはこれ以上詳しくは立ち入らない。ここで述べる方法が慣用のキャッシュ方法よりも著しく有利な点は、データおよび／またはコードが選択的に、つまり精密にアルゴリズムに合わせてチューニングされた方法に基づきキャッシュされることである。さらに本発明によれば、完全にデッドロックのない大きいセル構造の再コンフィグレーションを行えるようにもなる。
【００１１】
本発明の説明
従来のように中央のグローバルなユニットを、すべてのコンフィグレーション要求を処理する１つのコンポーネントに統合する代わりに、本発明によればその役割を担うことができ階層構造（ツリー構造）で配置された複数のアクティブなユニットが設けられている。その際、最下位レベル（階層構造におけるリーフ）からの要求は、その要求を処理できなかったときだけ、１つ上の階層レベルへ転送される。これらのステップは最上位レベルに到達するまで、存在するすべてのレベルに対して繰り返される。最上位のレベルはさらに上位に位置する内部または外部のコンフィグレーションメモリとつながっており、これにはこのプログラム実行にいつか必要とされるコンフィグレーションデータが含まれている。
【００１２】
コンフィグレーションユニットにおけるツリー構造によって、コンフィグレーションデータに対する一種のキャッシングが達成される。コンフィグレーションに対するアクセスは、主としてローカルで行われる。最も不利な状況として、該当するデータが階層構造で配置されたＣＴのいずれにも存在しない場合、上位に位置するコンフィグレーションメモリからコンフィグレーションをロードする必要がある。その際、ロードすべきコンフィグレーションについて固定的な時間順序を取り入れ、コンフィグレーションを１つのリストにまとめることによって、デッドロックが回避される。ＣＥＬのステータス情報はロード前に保護され、これによりコンフィグレーションのリスト全体が使われている間、変更されずに保持される。
【００１３】
ＣＴの基礎
コンフィグレーションテーブル（ＣＴ）は、同期信号いわゆるトリガに対して応答するアクティブなユニットである。このトリガは、慣用の算術ユニットまたは論理ユニット、アドレス発生器、演算ユニット等のための複数の電子コンポーネント（以下ではコンフィグレーション可能なエレメントＣＥＬと称する）から成る２次元またはそれ以上の次元のマトリックスにより生成される。発生するトリガに基づき、ＣＴ内で所定のアクションが引き起こされる。この場合、ＣＴの役割は、複数のＣＥＬの制御を引き継ぎ、それらの算術演算および／または論理演算を求めることである。殊に、ＣＥＬをコンフィグレーションおよび再コンフィグレーションする必要がある。この役割をＣＴが担うが、これはそれぞれ複数の個々のコンフィグレーションワード（ＫＷ）から成る可能な複数のコンフィグレーションルーチン（ＫＲ）を管理し、複数のＣＥＬをトリガ条件に基づきＫＲのうちの１つまたは複数によってコンフィグレーションすることによって行われる。その際、ＣＥＬには、それぞれコンフィグレーションワードの１つまたは複数が含まれており、これにはコンフィグレーションすべきＣＥＬのアドレスが設けられている。この場合、ＫＲは完全かつ適正に複数のＣＥＬにコピーされなければならず、ここで複数のＣＥＬを、それぞれ異なるが完全に実行されるＫＲによりコンフィグレーションされるグループにまとめておくことができる。その際、すべてのＣＥＬはグループ内で次のように結線されている。すなわち、必要とされる再コンフィグレーションの確認後、グループ分けされたすべてのＣＥＬに対し共通の信号（ＲｅＣｏｎｆｉｇ）により、各ＣＥＬがデータ処理を終了し再コンフィグレーション可能な状態へ移行しなければならないことが通知されるよう、グループ内で結線されている。
【００１４】
デッドロックのない再コンフィグレーションの基礎
ランタイムに再コンフィグレーション可能なシステムにおいて生じる問題点は、そのつど２つの部分が互いに待機し、したがってデッドロック状況の生じた状態にシステムが陥ってしまう可能性のあることである。
【００１５】
このような問題点は、新しいコンフィグレーションをシステムに必ずまるごとロードするかまったくロードしないかだけにし、あるいは一種のタイムアウト手法を適用すれば回避できよう。とはいえこれにより一連の欠点（所要スペース、伝播時間等）や問題点が生じてしまう。たとえば、
−コンフィグレーションをロードできない場合の措置
−コンフィグレーションをロードする順序の管理
−場合によってはＣＥＬにロードすることができるかもしれない他のコンフィグレーションが留意されないため、パフォーマンスの落ち込み
などである。
【００１６】
以下で説明する方法によれば、これらの問題点を除去することができる。これは従来技術によるＤＦＰシステムから出発するものである。
【００１７】
あるＣＥＬからトリガ信号がＣＴへ送られる。このＣＴはトリガのソースを突き止め、ルックアップテーブルによりロードすべきコンフィグレーション（ＫＲ）を選択する。到来するトリガ信号は阻止され、目下のコンフィグレーションが完全に処理されてしまうまで、他のいかなるトリガも受けつけない。１つのコンフィグレーションは複数の命令から成り、これは複数のＣＥＬの集合へ伝送される。しかし伝播時間にコンフィグレーション可能なシステムでは、いかなるコンフィグレーション命令（ＫＷ）も実行できるという保証がない。これはたとえば、アドレッシングされたコンフィグレーション可能なエレメント（ＣＥＬ）がそのタスクを依然として終了せず、したがって新たなコンフィグレーションデータを受け取ることができないようなことになって失敗してしまうおそれがある。パフォーマンスの劣化を避ける目的で、（対応するＣＥＬが再コンフィグレーション可能な状態になくコンフィグレーションを拒否（ＲＥＪＥＣＴ）したため）実行できなかったすべてのコンフィグレーション命令が、ＦＩＦＯに従い（以下で詳しく説明する）専用メモリ（ＦＩＬＭＯ）内に最後に存在するコンフィグレーション命令の後ろに書き込まれる。その後、次のコンフィグレーション命令が同じやり方で処理される。これは１つのコンフィグレーションの最後に到達するまで繰り返される。
【００１８】
ついでＣＴは再び、場合によっては別のコンフィグレーションをロードできるようにするためトリガ信号を受けつける状態へ移行する。この状態でＣＴはＦＩＬＭＯをタイマ制御により規則的なインターバルで処理する。
【００１９】
ロードすべきコンフィグレーションの優先順位づけは、本来ロードすべきコンフィグレーションが処理される前にＣＴがメモリＦＩＬＭＯを通過することにより行われる。ＦＩＦＯに似たＦＩＬＭＯの構造により、先行のトリガ要求中に完全には処理できなかったＫＷが新たに処理すべきＷＫよりも高い優先順位を自動的にもつようにされる。メモリ（ＦＩＬＭＯ）の処理にあたり、コンフィグレーション命令によりアドレッシングされるコンフィグレーション可能な各エレメント（ＣＥＬ）は、ＫＷの送信前または送信中、状態「コンフィグレーション可能」にあるか否かについてテストされる。この状態「コンフィグレーション可能」（ＡＣＣＥＰＴ）にあれば、データが伝送され、メモリＦＩＬＭＯから消去される。状態「コンフィグレーション不可能」（ＲＥＪＥＣＴ）にあれば、データはＦＩＬＭＯ内に残され、次のスキャン時に新たに処理される。ＣＴはＦＩＬＭＯ内の次のエントリを処理する。これはＦＩＬＭＯの最後に到達するまで繰り返される。その後、トリガ信号の発生によりアクティブにされた本来のコンフィグレーションが処理される。この場合、ＦＩＬＭＯの構造はＦＩＦＯ方式に対応し、つまり最も古いエントリが一番最初に処理される。新たなＫＲがロードされなくてもＦＩＬＭＯを処理する目的で、ＦＩＬＭＯはタイマ制御により規則的なインターバルでスキャンされる。
【００２０】
関与していないそれ以外のコンフィグレーション可能なエレメント（ＣＥＬ）はこのフェーズ中、パラレルに処理され続け、それらの機能に作用が及ぼされない。これによりＣＴがＦＩＬＭＯを処理している間、１つまたは複数のコンフィグレーション可能なエレメント（ＣＥＬ）が状態「コンフィグレーション可能」へ移行するような状況が起こり得る。ＣＴはＦＩＬＭＯ内における任意の個所で処理状態になる可能性があるため、以下のような状況の発生する可能性がある：  ＣＴは、アドレッシングされたコンフィグレーションすべきエレメント（ＣＥＬ）が状態「コンフィグレーション可能」におかれていないような最初の命令の処理するよう試みる。これによりＣＴは次の命令（ＫＷ）を続行する。同じ時点で、１つまたは複数のコンフィグレーション可能なエレメントが状態「コンフィグレーション可能」に移行し、それには第１のコンフィグレーション命令により書き込まれたかもしれないコンフィグレーション可能なエレメントも含まれる。ＣＴは第２のコンフィグレーション命令（ＫＷ）を処理し、これは第１のコンフィグレーション命令と同じであるが他のコンフィグレーションからのものであるコンフィグレーション可能なエレメント（ＣＥＬ）を使用する。この時点で、コンフィグレーション可能なエレメント（ＣＥＬ）は状態「コンフィグレーション可能」にあり、命令をうまく処理することができる。
【００２１】
これにより、最初にロードすべきコンフィグレーションが実際にやはり最初に仕上げられる、という保証がもはやなくなる。この場合、部分的に完成した２つのコンフィグレーションの存在する可能性があり、それらは完全にロードできるようにするためにそれぞれ他方のコンフィグレーションのコンフィグレーション可能なエレメントを必要とする。ここでデッドロック状態が発生し、これは図１８に示されている。この場合、コンフィグレーションＡとコンフィグレーションＢをコンフィグレーションしようとしている。ＣＴは、コンフィグレーションＡとコンフィグレーションＢにおけるハッチングされた部分をすでにロードしている。コンフィグレーションＡは完成のために、コンフィグレーションＢのうち明るく二重にハッチングされた領域をさらに必要とし、コンフィグレーションＢは完成のために、コンフィグレーションＡのうち暗く二重にハッチングされた領域を必要とする。これら両方のコンフィグレーションはともにまだ完全には終わっておらず、したがって機能を果たす能力もないので、双方のコンフィグレーションのいずれについてもこれら２つのコンフィグレーションの一方が取り除かれるであろう終了状態には入らない。これらのコンフィグレーションは両方とも、まだ必要としているコンフィグレーション可能なエレメントが開放されるのを待っている。
【００２２】
本発明による方法の場合、デッドロックは次のようにして回避される。すなわち、ＣＴがＦＩＬＭＯの処理前にコンフィグレーション可能なすべてのエレメントの状態を捕捉し、それに従って事象が終了するまでいかなる変化ももはや許可せず、つまり発生する変化を無視するようにしている。換言すれば、コンフィグレーション可能なすべてのエレメントの状態がＦＩＬＭＯの処理前に保護され、あるいはＦＩＬＭＯの処理中、状態の変化が阻止される。１つの実現可能な技術的形態は、コンフィグレーション可能な各エレメントにおいて１つのレジスタを使用し、そのレジスタへＦＩＬＭＯ処理前の状態を入れて保護することである。ＣＴは捕捉された状態だけに基づき動作し、コンフィグレーション可能なエレメントの目下の状態によっては動作しない。これにより、処理すべき命令（ＫＷ）がコンフィグレーション可能なエレメント（ＣＥＬ）の等しい状態を確実に見出せるようになる。このステップは、１つまたは複数のコンフィグレーション可能なエレメントがＦＩＬＭＯの処理中に状態「コンフィグレーション可能」へ移行することを排除していない。この変化はＣＴには処理中にすぐさまは見えず、次の実行開始になってようやく気がつくことになる。
【００２３】
コンフィグレーションの順序
所定のアルゴリズムのコンフィグレーションのためにどうしても必要であるのは、ＫＷをＣＥＬに書き込む順序を正確に守ることである。たとえば有用であるのは、ＣＥＬをバスシステムへつなぐ前、まずはじめにバスシステムのコンフィグレーションを行うことであり、それによってＣＥＬが他のルーチンによって使われているバスと接続されることがなくなる。換言すれば、対応するバスコネクションのコンフィグレーションを事前に行うことができたときにだけ、ＣＥＬのコンフィグレーションが行われる。
【００２４】
本発明による方法の場合、固定的な順序の遵守は以下のようにして達成される：
後続のＫＷのコンフィグレーションにとって重要な構成をもつコンフィグレーションワード（ＫＷ）は、特別に表される（以下ではＫＷＲと称する）。このようなＫＷＲのコンフィグレーションが失敗すると、該当するコンフィグレーションルーチン（ＫＲ）内における後続のすべてのＫＷがＦＩＬＭＯに書き込まれ、この過程では実行されない。ＦＩＬＭＯのスキャン時にも、順序がＫＷＲの後方にありコンフィグレーションの失敗したすべてのＫＷは、目下の過程では実行されない。
【００２５】
キャッシュ方法
ＣＴ構造は階層構造であって、つまり１つのコンポーネント内に複数のＣＴレベルが存在する。この配置構成は、有利には木構造（ＣＴツリー）に対応する。この場合、ルートＣＴ（Ｒｏｏｔ−ＣＴ）は外部のコンフィグレーションメモリ（ＥＣＲ）であり、これにはすべてのＫＲが対応づけられて格納されている一方、リーフにはコンフィグレーション可能なエレメント（ＣＥＬ）が対応づけられており、これによって個々のＫＲが呼び出される。中間レベルのＣＴにはそれぞれコンフィグレーション可能なエレメントが対応づけられており、これらは同じ階層段階におかれている。各ＣＴにはローカルな内部メモリが対応づけられている。このメモリは、新たに格納すべきＫＲのためにもはやスペースがないとき、あるいはそのことが特別なＣＴ命令（ＲＥＭＯＶＥ）によって明示的に要求されたとき、部分的に消去される。この場合、消去は、せいぜいのところもはや要求されないＫＲだけが、あるいはＲＥＭＯＶＥ命令によって明示的に表されたＫＲだけが消去されるよう、消去判定基準に従いＫＲごとに行われる。同様にＫＲは、新たにロードすべきＫＲをメモリに書き込むのにちょうど必要な数だけ、つまりそれにちょうど必要な個数のメモリが空きになるよう、１つ１つ消去される。これにより、キャッシュ効果の最適化のためできるかぎり多くのＫＲをメモリ内に残しておくことができる。
【００２６】
このことの利点は、任意のＣＴｘの下に配置された各ＣＴつまりＣＴツリー内でずっと上に存在するＣＴは、ＣＴｘ内には格納されていないＫＲを、外部のコンフィグレーションメモリＥＣＲから要求するのではなく、ＣＴｘからダイレクトに受け取ることである。これにより、複数のレベルにわたってキャッシュ構造が生じる。ＣＴツリーにおけるデータ伝送の煩雑性殊にＥＣＲにおける所要メモリ帯域幅が著しく低減される。
【００２７】
換言すれば各ＣＴは、下に位置するＣＴのＫＲをバッファリングする。つまり、下の方に位置するＣＴは必要とするＫＲを上に位置するＣＴからダイレクトに受け取るのであって、外部のＥＣＲに対するメモリアクセスは不要である。必要とするＫＲが高い方に位置するＣＴのいずれにも存在していないときにだけ、ＥＣＲへのアクセスを介してＫＲをロードすればよい。これにより、ＫＲのための格別効率的な階層キャッシュ構造が得られる。この構造に基づき実現可能な消去判定基準も得られるが、これは用途に応じて経験的に決められることになる。いくつかの可能性を挙げておく：
−最も古いエントリーの消去
−最も小さいエントリーの消去
−最も大きいエントリーの消去
−最も稀にしか呼び出されないエントリーの消去
ＣＴ階層構造の基礎
キャッシュ効果を達成するため、ＣＴはツリー構造における１つの階層にまとめられる。個々のノード（ＣＴ）の間にバスシステム（Ｉｎｔｅｒ−ＣＴ−Ｂｕｓ）が存在し、これはそれぞれ上方のノード（ＣＴ）を複数の下位のノード（ＣＴ）と接続する。その際、下位のノード（ＣＴ）は上位のノード（ＣＴ）に対しデータを要求し、それに応じて上位のノードは下位のノードへデータを送る。下位のノードはステータス情報を互いに交換し、そのためにいっそう上位のノード間のネットワークが利用され、それらのネットワークはそれに応じてアドレスを分解する必要がある。
【００２８】
ＣＴ階層構造およびアドレッシング
ＣＴ階層構造は、個々のＣＴのアドレッシングのためにバイナリツリーを利用できるように配置されている。つまり、最下位のアドレスビットはツリーの個々のリーフを表し、他の各アドレスビットはそれぞれ１つの階層レベルだけ上を選択するのである。したがって各ＣＴは一義的なアドレスを有している。
【００２９】
下記の表には、個々のアドレスビットが個々のレベルにどのように割り当てられているかが示されている。
【００３０】
【表１】
0004338308.tif 000002
【００３１】
* ＝ 使用されるアドレスビット
- ＝ 使用されないアドレスビット
複数のＣＴから成るグループに上位のＣＴを割り当てる場合、そのグループにおける複数のアドレスビットがそれに応じてまとめられる。
【００３２】
次の表には、個々のアドレスビットが個々のレベルにどのように割り当てられているのかが示されており、その際、レベル０には８個のＣＴをもつグループが存在している（アドレスビット ２．．０）
【００３３】
【表２】
0004338308.tif 000003
【００３４】
* ＝ 使用されるアドレスビット
- ＝ 使用されないアドレスビット
バイナリツリーの構造は１次元または多次元で行うことができ、これは各次元ごとに１つのバイナリツリーを形成することによって行われる。
【００３５】
特定のＣＴ（ＴＡＲＧＥＴ）がアドレッシングされ、これは開始させるＣＴ（ＩＮＩＴＩＡＴＯＴ）が正確なターゲットアドレスを指示するか、あるいはＴＡＧＥＴが相対的にアドレッシングされる。
【００３６】
次に、相対アドレスの評価について詳しく説明する：
２次元のアドレッシングのための相対アドレスフィールドの実例：
【００３７】
【表３】
0004338308.tif 000004
【００３８】
ビット１５は、次に高い階層段のＣＴを選択すべきときにセットされる。また、ビット１４はブロードキャストを表し、したがってすべてのＣＴを選択する。Ｘ／Ｙアドレスは、ＩＮＩＴＩＡＴＯＲのアドレスを出発点としたＴＡＲＧＥＴのアドレスを表している。
【００３９】
アドレスは符号付きの "signed" 整数である。アドレスフィールドのＹ／Ｘアドレスを目下のアドレスポジションに加えることで、ＴＡＲＧＥＴが求められる。各レベルは特定のアドレス幅（Addresswidth）をもっている。加算器はこの幅に対応している。
【００４０】
加算においてオーバーフローやアンダーフローが生じたということは、アドレッシングされたＣＴが目下のノードよりも下には位置しておらず、アドレス要求がその上に位置するＣＴ（次に高いノード）へ転送されることを意味する。オーバーフローやアンダーフローが発生しなければ、ＴＡＲＧＥＴは目下のノードよりも下に位置している。目下のレベルで計算されたアドレスビット（表を参照）により、目下のノードのすぐ下に位置するＣＴが選択される。そこからそれぞれ相応に計算されたアドレスビットに基づき、次に低いＣＴ（ノード）が選択される。
【００４１】
ＣＨ階層構造におけるアクセスの優先順位づけ
内部ＣＴバスへのアクセスはアービタによって管理される。この場合、下位のすべてのノードに対し等しい優先順位が与えられる。上位のノードはそれよりも高い優先順位をもっている。これにより、上位のノードから下位へ向かって伝送されるアクセス、あるいはＩＮＩＴＩＡＴＯＲからすでにかなり進んだアクセスが、他のアクセスよりも優先される。
【００４２】
ＣＴの基本構造
ＣＴについての以下の概要から、個々のコンポーネントに関する概観を得ることにする。以下では、各コンポーネントについて詳細に説明する。
【００４３】
ＣＴのコアはコントロールステートマシン（ＣＴＳ）であって、これはコンフィグレーションルーチン（ＫＲ）のすべての処理を制御する。各ＣＴにはガーベージコレクタ（ＧＣ）が配分されており、これはＣＴのメモリ（ＣＴＲ）からのＫＲの除去を制御する。なお、ＦＩＬＭＯはまだ処理すべきＫＷの管理を担い、ＬＯＡＤステートマシンはＫＲのロードを制御する。
【００４４】
メモリ（ＣＴＲ）は慣用の書き込み読み出しメモリとして構成されていて、その際、技術的に可能なすべてのインプリメンテーションを適用することができ、個々のＣＴおよびその下位におかれたＣＴに対するＫＲのローカルな記憶のために用いられる。特別な事例として、ＡＳＩＣやＰＬＤ（従来技術参照）に似た機能をコンポーネントに設ける目的で、メモリ（ＣＴＲ）をＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュＲＯＭ等として構成することができる。
【００４５】
ＣＴＲアドレスを生成するため、ロード可能なカウンタとして構成された多数のポインタが使用される：
１．フリーポインタ（ＦＰ）。これはＣＴＲ内における最後のＫＲの後ろにある最初の空きメモリロケーションを指す。
【００４６】
２．ガーベージポインタ（ＧＰ）。これはガーベージコレクタ（ＧＣ）によりＣＴＲから除去すべきエントリを指す。
【００４７】
３．ムーブポインタ（ＭＰ）。これが指すＣＴＲ内のメモリロケーションとは、除去すべきでない最終的なコンフィグレーションワード（ＫＷ）つまりＫＲのエントリが、その位置からＧＰによって規定されたエントリーへコピー／移動されるようなロケーションである。
【００４８】
４．プログラムポイン（ＰＰ）。これは目下ＣＴＳにより実行されているＫＷを指す。
【００４９】
ＫＷは、出力インタフェース（ＯＵＴ）を介して属するＣＥＬへ転送される。ＣＥＬは、それがコンフィグレーション可能な状態にあるかぎり、ＫＷの受領確認をする（ＡＣＣＥＰＴ）。ＫＷが拒否された場合（ＲＥＪＥＣＴ）、あとになってプログラムポインタを利用することなく再度、アドレッシングされたＣＥＬへ書き込むため、ＦＩＦＯに類似したメモリ（ＦＩＬＭＯ）内にそれが一時的にバッファリングされる。
【００５０】
ＣＴＳは、ＫＲを処理するための要求をトリガ信号により受け取る。このトリガ信号は、望ましくないトリガをフィルタリング除去（マスキング除去）するフィルタであるマスクを通過する。従来技術に従って、マスクをＡＮＤゲート（ＡＮＤ）におり構成することができ、このゲートによればトリガとイネーブル信号とがＡＮＤ結合される。トリガは、優先順位の付けられたラウンドロビン・アービタ（Round-Robin-Arbiter, SCRR-ARB）を介してバイナリ信号に変換される。優先順位の付けられたラウンドロビン・アービタにより、ラウンドロビン・アービタの平等性の利点と、１つのクロック内における次のイネーブルの検出つまり優先順位アービタの利点とが合わせられる。
【００５１】
マスキングされたトリガは、アドレスとして第１のルックアップテーブル（ＬＵＴ１）へ供給され、このルックアップテーブルは、アドレスとして到来するトリガに対し該当するＫＲのＩＤを割り当てて、データラインへ送出する。第２のルックアップテーブル（ＬＵＴ２）において、ＫＲのＩＤがＣＴＲ内におけるＫＲのメモリロケーションのアドレスに割り当てられる。第２のルックアップテーブルはトリガ信号の割り当てに利用されるだけでなく、ＩＤをパラメータとして用いる使われる命令のアドレス割り当てのためにも利用される。トリガ信号と該当するＩＤとの対応づけは、あとで説明する命令”ＲＥＦＥＲＥＮＣＥ”によりＬＵＴ１にエントリされる。ＬＵＴ２の管理つまりＩＤとＣＴＲにおけるアドレスとの対応づけは、ＣＴＳとＧＣにより自動的に行われる。
【００５２】
ＣＴの理解を深めるため、実現可能な基本命令セットについて以下に示す：
１．ＢＥＧＩＮ＜ＩＤ＞
ＢＥＧＩＮ＜ＩＤ＞により、コンフィグレーションルーチンの開始が表される。＜ＩＤ＞は、コンフィグレーションルーチンにおける一義的な識別番号を表す。
【００５３】
２．ＳＴＯＰ
ＳＴＯＰにより、コンフィグレーションルーチンの最後が表される。この位置において、コンフィグレーションテーブル（ＣＴ）はコンフィグレーションルーチンの処理を終了する。ガーベージコレクタ（ＧＣ）は、そのコンフィグレーションルーチンにおけるエントリの除去を終了する。
【００５４】
３．ＥＸＥＣＵＴＥ＜ＩＤ＞
コンフィグレーションルーチンの最初（ＢＥＧＩＮ＜ＩＤ＞）にジャンプする。このルーチンがＣＴのメモリ内に存在していなければ、その上に位置するＣＴに対しそれが要求され、ないしはメモリからロードされる。
【００５５】
４．ＬＯＡＤ＜ＩＤ＞
ＫＲ＜ＩＤ＞をその上に位置するＣＴに対して要求する。
【００５６】
５．ＲＥＭＯＶＥ＜ＩＤ＞
ＧＣを呼び出す。その目的は、コンフィグレーションルーチン＜ＩＤ＞をＢＥＧＩＮ＜ＩＤ＞からＳＴＯＰまでＣＴのメモリから除去し、除去されたコンフィグレーションルーチンによってもメモリの隙間が生じないようになるまで、後続のコンフィグレーションルーチンを前へ押し出すことである。
【００５７】
６．ＰＵＳＨ＜ＦＯＲＣＥＤ＞＜ＡＤＤＲＥＳＳ＞＜ＤＡＴＡ＞＜ＥＸＩＴ＞
コンフィグレーションデータ＜ＤＡＴＡ＞をレジスタ＜ＡＤＤＲＥＳＳ＞へ書き込む。＜ＦＯＲＣＥＤ＞がセットされていると、該当するターゲットレジスタのＲＥＣＯＮＦＩＧフラグがセットされていなくても、データが書き込まれる。＜ＥＸＩＴ＞は、ＲＥＪＥＣＴのときに後続のＫＷＲが引き続き実行されるのを中止するＫＷＲであるこを表すために用いられる。
【００５８】
７．ＭＡＳＫ＜ＳＲ＞＜ＴＲＩＧＧＥＲ＞
＜ＳＲ＞（Ｓｅｔ／Ｒｅｓｅｔ）に依存して、トリガマスクを＜ＴＲＩＧＧＥＲ＞によりセットするか、あるいはそれを＜ＴＲＩＧＧＥＲ＞によりリセットする。
【００５９】
８．ＷＡＩＴ＜ＵＮＭＡＳＫＥＤ＞＜ＴＲＩＧＧＥＲ＞
コンフィグレーションルーチンの処理を停止し、トリガ＜ＴＲＩＧＧＥＲ＞を待つ。＜ＵＮＭＡＳＫＥＤ＞がセットされていれば、待っているトリガに対しトリガマスクの状態とは無関係に応答する。
【００６０】
９．トリガ＜ＴＲＩＧＧＥＲ＞＜ＣＴ＃＞
トリガのバイナリ値を、ＣＴ＃によりアドレッシングされた上位のＣＴへ送る。
【００６１】
10．ＧＥＴＢＵＳ／ＧＥＴＣＴＳ
内部ＣＴバスへのコネクションを確立する。
【００６２】
11．ＬＯＯＳＥＢＵＳ／ＬＯＯＳＥＣＴＳ
内部ＣＴバスへのコネクションを解除する。
【００６３】
12．ＲＥＦＥＲＥＮＣＥ＜ＴＲＩＧＧＥＲ＞＜ＩＤ＞
アドレス＜ＴＲＩＧＧＥＲ＞においてＬＵＴ１へ値＜ＩＤ＞を書き込み、これによりトリガ信号に対し特定のＫＲが割り当てられる。
【００６４】
命令  ＥＸＥＣＵＴＥ，ＬＯＡＤ，ＲＥＭＯＶＥ，ＰＵＳＨ，ＭＡＳＫ，ＷＡＩＴ，ＴＲＩＧＧＥＲ，ＲＥＦＥＲＥＮＣＥは、ＢＥＧＩＮと．．．ＳＴＯＰで括られた中でのみ有効である。この括りの外では命令は実行されない。
【００６５】
コンフィグレーションルーチン（ＫＲ）の構造は以下のようになる：
ＢＥＧＩＮ＜ＩＤ＞；
．．．
有効な命令
．．．
ＳＴＯＰ；
間接アドレッシング（参照）
ＣＴのキャッシュ原理によりＣＴ内におけるＫＲのバッファリングが可能となり、ここでＫＲは下位に位置する異なる複数のＣＴまたはＣＥＬによって利用される。下位のユニットからコンポーネント（たとえばＲＡＭ、周辺装置）の外部インタフェースへのアクセスが行われる場合、外部インタフェースの種々のアドレスまたは一部分を記憶する必要がある。これにより基本的には、必要とされる個々のＫＲの内容が区別されることになろう。キャッシングはもはや不可能である。この場合、間接参照により対策が講じられる。この目的で専用のＫＲ（以下ではＩＫＲと称する）が用いられ、これは必要な外部パラメータをもっており、それをセットする。必要に応じトリガを介して、異なる階層レベルにおける他の異なるＫＲが呼び出される。ＩＫＲの最後から本来のＫＲが呼び出される。ＩＫＲだけはキャッシングできないが他方、呼び出されたＫＲはまったく一義的であり、そのためキャッシュ可能である。ここで有用であるのは、ＩＫＲのサイズを絶対的な最小値まで低減することであり、つまりもっぱら外部の異なるパラメータと本来のＫＲの呼び出しだけにすることである。
【００６６】
間接的なコンフィグレーションルーチン（ＩＫＲ）は以下のように構成されている：
ＢＥＧＩＮ＜ＩＤ＞；
．．．
ｘｘｘ；  有効な命令、この場合、外部の周辺装置だけを制御する
ＴＲＩＧＧＥＲ＜ＩＤ＞；  周辺プロセスに対するスタート、ストップまたはロード要求
．．．
ＧＯＴＯ＜ＩＤ＞；  本来のＫＲへのジャンプ
ＳＴＯＰ；
特別な事例：
１．ＷＡＩＴ＿ＦＯＲ＿ＢＯＯＴ
この命令は、ＣＴＲの最初のアドレスだけに有効である。ブートプロセス中、まずはじめに完全なブートＫＲがＣＴＲに書き込まれるが、Ｂｏｏｔ−ＫＲ ＢＥＧＩＮ＜０＞の開始シーケンスではない。その個所（アドレス１）にはＷＡＩＴ＿ＦＯＲ＿ＢＯＯＴがあり、これはＲＥＳＥＴ時に自動的にセットされる。Ｂｏｏｔ−ＫＲ全体がＣＴＲに書き込まれてからはじめて、ＷＡＩＴ＿ＦＯＲ＿ＢＯＯＴがＢＥＧＩＮ＜０＞によって上書きされ、ＣＴＳがＢｏｏｔ−ＫＲの処理を始める。ＷＡＩＴ＿ＦＯＲ＿ＢＯＯＴはプログラム内に現れてはならない。
【００６７】
２．ＢＯＯＴ＜ＣＴ−ＩＤ＞
ＢＯＯＴ＜ＣＴ−ＩＤ＞は、どのＣＴに後続のＢｏｏｔ−ＫＲを書き込むべきであるかを表す。ＢＯＯＴ＜ＣＴ−ＩＤ＞後にはＢＥＧＩＮは続かず、Ｂｏｏｔ−ＫＲはＳＴＯＰによってではなく、あとにくるＢＯＯＴ＜ＣＴ−ＩＤ＞によって終了する。そしてＳＴＯＰによってブートプロセスが終了する。ＢＯＯＴ＜ＣＴ−ＩＤ＞はプログラム内に現れてはならない。
【００６８】
ブートプロセス
ＲＥＳＥＴ後、最上位の階層レベル（ＲＯＯＴ−ＣＴ）のＣＴはＢｏｏｔ−ＫＲを下位の階層のＣＴにロードする。この目的で、ＲＯＯＴ−ＣＴに対応づけられた外部のコンフィグレーションメモリ（ＥＣＲ）内の定められたアドレス（ＢＯＯＴ−ＡＤＲ）へのジャンプが存在する。ＲＯＯＴ−ＣＴはこのジャンプを実行し、ブートシーケンスに到達する。これは以下のように構成されている：
ＢＯＯＴ＜ＣＴ−ＩＤ０＞；  ＣＯＭＭＡＮＤ；  ＣＯＭＭＡＮＤ；  ．．．
ＢＯＯＴ＜ＣＴ−ＩＤ１＞；  ＣＯＭＭＡＮＤ；  ＣＯＭＭＡＮＤ；  ．．．
．．．
ＢＯＯＴ＜ＣＴ−ＩＤｎ＞；  ＣＯＭＭＡＮＤ；  ＣＯＭＭＡＮＤ；  ．．．
ＳＴＯＰ；
ブートプロセス中、まずはじめにＢｏｏｔ−ＫＲ全体が、＜ＣＴ−ＩＤ＞により表されたＣＴのアドレス２からＣＴＲ内に書き込まれる。Ｂｏｏｔ−ＫＲ（ＢＥＧＩＮ＜０＞）の開始シーケンスは、アドレス１には書き込まれない。その個所にはＷＡＩＴ＿ＦＯＲ＿ＢＯＯＴがあり、これはＲＥＳＥＴ時に自動的にセットされる。Ｂｏｏｔ−ＫＲ全体がＣＴＲに書き込まれ、ＲＯＯＴ−ＣＴが次のＢＯＯＴ＜ＣＴ−ＩＤ＞に到達してはじめて、ＳＴＯＰがＢｏｏｔ−ＫＲの終わりでＣＴＲに書き込まれ、ＷＡＩＴ＿ＦＯＲ＿ＢＯＯＴがＢＥＧＩＮ＜０＞によって上書きされる。ＣＴＳはＢｏｏｔ−ＫＲの処理を始める。
【００６９】
コンフィグレーションルーチンのロード
Ｂｏｏｔ−ＫＲ外でコンフィグレーションルーチンを要求するために、３つの基本メカニズムが存在する。
【００７０】
１．ＣＴＳによるＬＯＡＤ＜ＩＤ＞の実行
２．ＣＴＳによるＥＸＥＣＵＴＥ＜ＩＤ＞の実行、ここで該当するＩＤをもつＫＲはＣＴＲ内には存在していない。
【００７１】
３．トリガの発生、これはＬＵＴ１を介して＜ＩＤ＞に変換され、それに属するＫＲはＣＴＲ内には存在していない。
【００７２】
すべて３つの事例における進行は同じである：
要求されるＫＲのＩＤはＬＵＴ２へアドレスとして供給される。ＬＵＴ２は、ＣＴＲ内に有効なアドレスが存在するか否かについてチェックする。これが存在しなければ、つまりＬＵＴ２において＜ＩＤ＞が値０を指していれば、ＬＯＡＤ＜ＩＤ＞がＣＴＳへ送られる。
【００７３】
それに応じてＣＴＳが、階層的に上位にあるＣＴにおいて＜ＩＤ＞に該当するＫＲを要求する。この要求はトリガ形式で上位のＣＴに到達し、それによって相応に評価される。上位のＣＴは要求されたＫＲを要求されたＣＴへ送信する。データは、ＦＲＥＥ−ＰＯＩＮＴＥＲ（ＦＰ）の指すアドレスからＣＴＲへ書き込まれ、その際、ＦＰは書き込みアクセスごとに１だけ高められる。ＦＰがＣＴＲの上限に到達すると、ガーベージコレクタ（ＧＣ）が呼び出され、ＣＴＲ内で最下位のＫＲが除去されてＣＴＲが圧縮されるようになる。そのときＦＰが新たにセットされる。この過程は、ロードすべきＫＲが完全にＣＴＲに納まるまで行われる。
【００７４】
コンフィグレーションメモリにおけるジャンプテーブル
ＲＯＯＴ−ＣＴに割り当てられたコンフィグレーションメモリには、アプリケーションのためにロードしなければならないＫＲ全体が含まれている。外部のコンフィグレーションメモリ（ＥＣＲ）には、定められたアドレス（ＡＲＤ−ＢＯＯＴ）のところにブートコンフィグレーションルーチンへのジャンプがおかれている。任意であるがアプリケーション内部で固定的に定められた長さをもつ別の所定のメモリ領域（ＬＵＴ−ＥＣＲ）には、個々のＫＲへのジャンプがおかれている。この場合、個々のＫＲの＜ＩＤ＞はＥＣＲ内のアドレスとして用いられ、そこには個々のＫＲの開始アドレスが存在する。これによりＫＲが間接的にアドレッシングされるのである：
ＩＤ  −＞  ＬＵＴ−ＥＣＴ  −＞  ＫＲ
コンフィグレーションメモリ内におけるＫＲの変更
ＩＤ＜Ａ＞をもつＫＲは変更されることになる。まずはじめにＨＯＳＴはＩＤ＜Ａ＞のための新たなＫＲを、ＥＣＲ内の空きメモリロケーションへ書き込む。ＩＤ＜Ａ＞は、上位のユニット（ＨＯＳＴ）におけるコンフィグレーションメモリ内のＫＲの新たなアドレスといっしょに、そのために設けられたＲＯＯＴ−ＣＴのレジスタに書き込まれる。ＲＯＯＴ−ＣＴは、その下に位置するすべてのＣＴへ命令ＲＥＭＯＶＥ＜Ａ＞を送信する。それに応じてすべてのＣＴは、ＳＴＯＰに到達したときまたはＩＤＬＥサイクルの間すなわちＫＲが実行されなければただちに、そのＩＤに関連するＫＲをＣＴＲから除去し、ＬＵＴ２はアドレス＜Ａ＞に”ＮｏＡｄｒ”をセットする。つまりこのことは、ＬＵＴ２内にＩＤ＜Ａ＞に対する有効なアドレスエントリが存在しないことを意味する。ＩＤ＜Ａ＞が再度要求されれば、欠けているエントリ（”ＮｏＡｄｒ”）は強制的にＬＵＴ２への＜Ａ＞ではなく、各ＣＴはＥＣＲに対しＫＲ＜Ａ＞を新たに要求する。
【００７５】
ＦＩＬＭＯ
ＫＲは主として命令ＰＵＳＨから成り、これは新たなコンフィグレーションワードを所定のアドレスに書き込む。アドレッシングされたコンフィグレーション可能なエレメント（ＣＥＬ）が新たなコンフィグレーションを受け入れる準備が整っていないため（ＲＥＪＥＣＴ）、タイプＫＷのコンフィグレーションワードの書き込みが不可能であれば、コンフィグレーションワードはアドレッシングされたコンフィグレーション可能なエレメント（ＣＥＬ）ではなく、以下ではＦＩＬＭＯと称するメモリへ書き込まれる。後続の命令は、再度コンフィグレーションワードを書き込むことができなくなるまで通常どおり処理され、できなくなればそのワードはＦＩＬＭＯへ書き込まれる。
【００７６】
アドレッシングされたコンフィグレーション可能なエレメント（ＣＥＬ）が新たなコンフィグレーションを受け入れる準備が整っていないため（ＲＥＪＥＣＴ）、タイプＫＷＲのコンフィグレーションワードの書き込みが不可能であれば、コンフィグレーションワードはアドレッシングされたコンフィグレーション可能なエレメント（ＣＥＬ）の代わりに、以下ではＦＩＬＭＯと称するメモリへ書き込まれる。ＫＲが終了するまでの後続のすべての命令は、ＣＥＬではなくＦＩＬＭＯへダイレクトに書き込まれる。
【００７７】
ＦＩＬＭＯは、ＩＤＬＥサイクル中であって新たなＫＲがそのつど実行される前にスキャンされる。この場合、最も古いデータワードのところで始まり、従来技術によるＦＩＦＯに従い、読み出されたＦＩＦＯの各ワードがアドレッシングされたエレメントへ送られる。ここでアドレッシングされたエレメントはすでに、コンフィグレーションワードを受け取る準備ができていなければならない。データワードを最初から書き込むことができるかぎり（つまりアドレッシングされたコンフィグレーション可能なエレメント（ＣＥＬ）がスタンバイ状態にあれば）、ＦＩＦＯの形式でＦＩＬＭＯからエントリが除去される。コンフィグレーションワードを書き込むことができなければ、それはとばされてＦＩＬＭＯからは除去されない。ＦＩＦＯとは異なり、とびこされたコンフィグレーション後のデータがさらに読み出される。とびこされたコンフィグレーションワードの後に書き込むことのできるコンフィグレーションワードは、ＦＩＬＭＯの実装に従って以下のとおりとなる。すなわち、
１．書き込み済とマーキングされ、ＦＩＬＭＯからは消去されない。ここで書き込み済とマーキングされたコンフィグレーションワードは、後続のスキャンにおいてはもはや読み出されず、あるいはとばされたコンフィグレーションワードがもはやその前に存在しなければ、ただちに消去される。
【００７８】
あるいは、
２．ＦＩＬＭＯから消去される。この場合、コンフィグレーションワードは消去されたコンフィグレーションワードの前と後ではそのまま得られ、ここで消去のため後続のワードが前方（上方）へ、あるいは先行のワードが後方（下方）へシフトされ、その際、コンフィグレーションワードの順序は強制的に維持される。
【００７９】
新たなＫＲが実行されると、アドレッシングされたエレメント（ＣＥＬ）へＣＴＳにより書き込むことのできなかったコンフィグレーションワード（ＫＷ）が、新たにＦＩＬＭＯに付加され、つまりＫＷはＦＩＬＭＯの（読み出し方向で）最後に書き込まれる。ＦＩＬＭＯがいっぱいになると、すなわちコンフィグレーション値のための空きエントリが存在しないと、ＫＲの実行が停止される。ＦＩＬＭＯは、十分にコンフィグレーションワードを書き込むことができ、それに応じて多数の空きエントリが発生するまでスキャンされ、その後、ＫＲが引き続き処理される。ＦＩＬＭＯはＦＩＦＯに似たメモリを成しており、これは常に最も古いエントリから直線的にスキャンされる。しかしＦＩＦＯとは異なり、エントリがとばされる（First In Linear Multiple Out）。
【００８０】
コンフィグレーションテーブル−ステートマシン（ＣＴＳ）の機能
コンフィグレーションテーブル・ステートマシン（ＣＴＳ）はＣＴの制御の役割を担う。これはＫＲの命令を実行し、到来するトリガに対し応答する。そしてこれはＦＩＬＭＯの管理の役割を担い、殊にアイドルサイクル中、ＫＲの実行前にそれを読み出す。これはＬＵＴ構造により生成された信号ｉｌｌｅｇａｌ＜ＴＲＧ＞（Ｉｌｌｅｇａｌトリガ、図１の０１０２参照）とｌｏａｄ＜ＩＤ＞に対して応答する。ｌｏａｄ＜ＩＤ＞は、ＬＵＴ２においてキャッシュミスが生じたとき（０１０５）、あるいはＩＤにより参照されるＫＲ／ＩＫＲが消去済とマーキングされていたとき（０１０７）に生成される。これは上位のＣＴの制御信号に対して応答する。図２〜図７には、命令処理のためのインプリメンテーションの実例が描かれている。
【００８１】
上位のＣＴへの制御信号
−ｉｌｌｅｇａｌ＜ＴＲＧ＞（０１０２）
上位のＣＴは、未知のトリガ＜ＴＲＧ＞が発生していることを指示する。
【００８２】
−ｌｏａｄ＜ＩＤ＞（０１０５／０１０７）
上位のＣＴに対し＜ＩＤ＞のロードを要求
−ｔｒｉｇｇｅｒ＜ＴＲＧ＞＜ＣＴ＃＞（０１０８）
トリガ＜ＴＲＧ＞を上位のＣＴまたはアドレッシングされたＣＴ＜ＣＴ＃＞に送信
上位のＣＴの制御信号
−ｒｅｍｏｖｅ＜ＩＤ＞（図１５，１５１３参照）
ＣＴに対し＜ＩＤ＞の消去を要求
−ｗｒｉｔｅ＿ｔｏ＿ＦＰ＜ｄａｔａ＞（図２，０２０５参照）
データをＣＴへ送信。データは占有されているメモリの最後に付加される。
【００８３】
ガーベージコレクタ（ＧＣ）の機能
ＣＴＲには２つの問題点がある：
１．ＬＯＡＤ命令またはＥＸＥＣＵＴＥ命令またはトリガが、ＣＴＲ内に存在していないＫＲのＩＤを指している場合、ＫＲをリロードしなければならない。しかし状況によっては、要求されたＫＲをロードするのに十分なスペースがＣＴＲ内にない。
【００８４】
２．ＲＥＭＯＶＥ＜ＩＤ＞が発生したとき、対応するＫＲをＣＴＲから除去しなければならない。この場合、ＫＲがＣＴＲの最後にはなければ、隙間が生じてしまう。新たなＫＲをロードしても、この隙間は場合によっては完全には埋められず、あるいはこの隙間が新たなＫＲに対し小さすぎるかもしれない。その結果、ＣＴＲのフラグメンテーションが発生する。ガーベージコレクタの役割は、ＫＲをＣＴＲを除去し、新たなエントリのためのスペースを確保することであり、かつエントリ除去後のＣＴＲを、残ったすべてのＫＲが閉じたブロックとして相前後してメモリ内に位置するようにし、しかも空いたメモリブロックが閉じたブロックとしてＣＴＲの最後に位置させることである。このことにより最適に、しかもメモリロケーションの損失なく新たなＫＲをロードすることができる。
【００８５】
トリガパルスの評価
各ＣＴは、それらの個々の階層平面に属する複数のトリガ信号に対するコンタクトを有しており、これらのトリガ信号は１つのバスへ送られてまとめられる。到来するトリガはマスクを介して評価され、つまりイネーブルにされたトリガ信号が転送される。イネーブルにされたトリガ信号は、クロック同期してサンプルレジスタ内にバッファリングされる（サンプリングされる）。アービタは格納されているトリガ信号のうちの１つを選択し、信号をバイナリベクトルへ変換する。選択されたトリガ信号はサンプルレジスタから消去される。そしてバイナリベクトルは第１のルックアップテーブル（ＬＵＴ１）へ転送され、このテーブルによってバイナリベクトルが呼び出すべきコンフィグレーションルーチン（ＫＲ）の識別番号（ＩＤ）へ変換される。ＩＤは、第２のルックアップテーブル（ＬＵＴ２）においてＣＴメモリ（ＣＴＲ）内のＫＲのアドレスに変換される。ＣＴステートマシン（ＣＴＳ）はそのプログラムポインタ（ＰＰ）を上記のアドレスにセットし、ＫＲの実行を開始する。ここで前提とするのは、マスクを介してイネーブルにされた各トリガがＬＵＴ１内に対応するエントリをもっていることである。これが欠けていると、エラー状態がＣＴＳへ伝送され（Ｉｌｌｅｇａｌｔｒｉｇｇｅｒ）、その際、各ＩＤ＝”ＮｏＡｄｒ”は存在しないエントリとして評価される。”ＮｏＡｄｒ”は、インプリメンテーションに依存して選定されるトークンである。ＬＵＴ２内にエントリがなければ、つまりＩＤに該当するＫＲがＣＴＲ内に存在しなければ、ロード要求がＣＴＳへ送られる（ｌｏａｄ＜ＩＤ＞）。
【００８６】
上位のＣＴへのトリガパルスの送信
ＫＲをロードするための上位のＣＴへの既述のインタフェースのほかに、任意に定義できる命令とはいえ殊にトリガベクトルを交換するための別のインタフェースも存在する。その際にＣＴは、
−他のすべてのＣＴへ命令を送るか（ＢＲＯＡＤＣＡＳＴ）
−またはアドレッシングされた任意のＣＴへ命令を送る（ＡＤＤＲＥＳＳＥＤ）
命令”Ｔｒｉｇｇｅｒｖｅｋｔｏｒ”はバイナリ値を表しており、これは受け取ったＣＴにおけるＬＵＴ２内のエントリを参照している。トリガベクトルの送信はたとえば、ＩＫＲ内でＫＲをさらに別のＣＴにおいてスタートさせ、これによりたとえば周辺装置やメモリを制御するために必要される。
【００８７】
上位のＣＴへトリガベクトルを転送するために２つのメカニズムが存在する。
【００８８】
１．ＬＵＴ１に１つのビットを付け加え、このビットによって、メモリの内容がＫＲ  ＩＤとみなされるのか、あるいはトリガパルスのバイナリ値とみなされるのかを表すようにする。トリガパルスが生じているのであれば、ＬＵＴ１のデータ内容がそのままトリガとして上位のＣＴへ送られる。
【００８９】
２．命令ＴＲＩＧＧＥＲによってトリガのバイナリ値を表すことができ、それがそのまま上位のＣＴへ送られる（代案としてトリガ値の代わりにそのままＩＤを伝送してもよい）。
【００９０】
トリガベクトルを介して未知のＣＴにおいてＫＲをスタートさせるためには、デッドロック状況を生じさせないよう同期方式を作る必要がある。この方式によって、複数のＣＴから成る特定のグループ内のＫＲだけしかこのグループ内の他のＣＴにおいて別のＫＲをスタートさせないよう、注意を払わなければならない。複数のＫＲを同時にスタートさせると、ＣＥＬ平面における既述のデッドロックと同じように、各ＣＴ間でデッドロックの生じてしまう可能性がある。
【００９１】
このような方式の基本原理は以下のようにして進行する：
ＫＲは以下のように構成されている：
．．．
ＧＥＴＣＴＳ／ＧＥＴＢＵＳ
ＴＲＩＧＧＥＲ＜ＩＤ＞，＜ＣＴ＃＞
ＴＲＩＧＧＥＲ＜ＩＤ＞，＜ＣＴ＃＞
．．．
ＬＯＯＳＥＣＴＳ／ＬＯＯＳＥＢＵＳ
．．．
ＣＴ（ＩＮＩＴＩＡＴＯＲ）におけるＫＲ内の命令”ＧＥＴＣＴＳ”によって、後続の信号で他のＣＴ（ＴＡＧＥＴ）が送られることを表す。トリガ＜ＩＤ＞，＜ＣＴ＃＞によって、スタートさせるべきＫＲのＩＤが一義的なＩＤ  ＣＴ＃をもつＣＴへ送られる。この場合、トリガの送信はまず最初にすぐ上位のＣＴに対して行われ、これはＣＴ＃に応じてトリガをそのＣＴ空間内の今度は下位のＣＴへ送るか、またはそれにとって上位のＣＴへ送る（ＣＴ階層を参照）。命令が到達すれば、それが受領確認を行う。
【００９２】
ＣＴにより命令が実行されると、命令の優先順位識別子がそのつど１つだけ高められる。命令の転送要求がＣＴ内における別の要求にぶつかれば、最も低い優先順位をもつ命令が取り下げられる。
【００９３】
このことにより以下のことが保証される。
【００９４】
ａ）オーバラップしたシステム内においてある時点で１つの命令だけしか伝播されず、このためただ１つのＫＲだけしかスタートせず、このことで必要とされるデッドロックのない状況が得られるようになる。
【００９５】
ｂ）それまでで最も遠くへは伝播されなかった命令が取り下げられ、このことでパフォーマンスを高めることができる。命令の取り下げ後、ＧＥＴＣＴＳ／ＬＯＯＳＥＣＴＳ内の先行するすべての命令も同様に取り下げられ、つまりＩＮＩＴＩＡＴＯＲがすべてのＴＡＲＧＥＴへ信号ＤＩＳＭＩＳＳを送り、ＧＥＴＣＴＳの待機時間後にＫＲの実行が開始される。命令区間ＧＥＴＣＴＳ．．．ＬＯＯＳＥＣＴＳ内におけるすべてのトリガの受領確認がＩＮＩＴＩＡＴＯＲへ送られる。受領確認が到来するたびに次の命令の処理が続けられる。命令ＬＯＯＳＥＣＴＳに到達すると、ＩＮＩＴＩＡＴＯＲはすべてのＴＡＲＧＥＴへ信号ＧＯを送る。これによりＴＡＲＧＥＴ−ＣＴが、トリガにより伝送されたＩＤをもつＫＲの実行をスタートさせる。ＴＡＲＧＥＴはトリガの発生後に状態を変化させ、その状態においてＴＡＲＧＥＴはＧＯまたはＤＩＳＭＩＳＳの発生を待つ。
【００９６】
インプリメンテーションが改善されたことで、さらに容易に変更される手法が得られる：
１つの階層平面における１つのグループ内の各ＣＴ間にバスシステムが存在する（Ｉｎｔｅｒ−ＣＴ−Ｂｕｓ）。このバスシステムは、グループにおけるすべてのＣＴとそのグループのすぐ上に位置するＣＴとをつないでいる。機能的にＧＥＴＣＴＳに似た命令ＧＥＴＢＵＳにより、バスシステムがＣＴにより調停される。この命令は、バスシステムを介して同じグループのＣＴへ転送される。アドレッシングされたＣＴ＃がグループ内に存在していなければ、上位に位置するＣＴによって自動的にその上位に位置するバスが調停され、命令が転送される。調停されたバスはＩＮＩＴＩＡＴＯＲに対応づけられたままになり、したがって拒否されるまで、または命令ＬＯＯＳＥＢＵＳがバスに発せられるまで、他のすべてのＣＴに対しは阻止される。ＬＯＯＳＥＢＵＳはＬＯＯＳＥＣＴＳと対比できる。命令ＬＯＯＳＥＢＵＳの実行前、ＧＯ信号が関与するすべてのＣＴへ送られる。これは命令ＬＯＯＳＥＢＵＳまたは前につなげられた特別な命令によって行われる。命令殊にトリガは、やはり既述の基本的手法に従って処理される。バスシステムを調停できなかったとき、拒否が生じる。調停の際、１つの平面におけるＣＴがそれぞれ等しく優先順位づけされ、上位のＣＴはそれよりも高い優先順位をもつ。Ｉｎｔｅｒ−ＣＴ−Ｂｕｓを介して命令を送信する場合、アドレッシングされたＣＴが命令を受け入れるまで（ＡＣＣＥＰＴ）または拒否するまで（ＲＥＪＥＣＴ）、命令はアクティブなまま保持される。
【００９７】
優先順位づけられたラウンドロビン・アービタ
優先順位づけられたラウンドロビン・アービタ（Single-Cycle-Round-Robin-Arbiter SCRR-ARB）はクロック同期するよう構成されていて、つまりこれによって（インプリメンテーションに応じて正または負の）クロック側縁（ＴＦ１）ごとに結果が供給される。到来する信号（ＡＲＢ−ＩＮ）はマスク（ＡＲＢ−ＭＡＳＫ）を通り、このマスクは後述の方法に従いアービタ自体によって管理される。マスクの出力信号は、従来技術に従い優先順位アービタ（ＡＲＢ−ＰＲＩＯ）へ送られる。アービタはクロック同期してクロック側縁（ＴＦ１）ごとに結果（ＡＲＢ−ＯＵＴ）を送出し、つまりマスク（ＡＲＢ−ＭＡＳＫ）に従って最高優先順位の付けられた信号のバイナリ値を供給する。この結果には、バイナリ値が有効か無効かを表す信号（ＶＡＬＩＤ）が割り当てられている。優先順位アービタのインプリメンテーションに応じて、信号０が印加されたときおよび信号が印加されないときに同じバイナリ値が生成されるようにすることができる：この場合、ＶＡＬＩＤによって、信号が加わらないかぎり結果が無効であることが表される。この信号は、
１．アービタの結果として送出され、
２．デコーダに供給され、これは（以下のテーブルではたとえば３ｂｉｔ値として表される）バイナリ値をデコーディングする（コーディング方式をこの原理に従って任意のバイナリ値に整合可能である）。
【００９８】
【表４】
0004338308.tif 000005
【００９９】
このデコーダには１つのレジスタ（ＡＲＢ−ＲＥＧ）が割り当てられており、これはデコーダのデコーディング値（ＡＲＢ−ＤＥＣ）を、ＴＦ１に対し逆のクロック側縁（ＴＦ２）のときに受け取る。ＡＲＢ−ＤＥＣはマスク（ＡＲＢ−ＭＡＳＫにフィードバックされ、個々の入力信号（ＡＲＢ−ＩＮ）をイネーブルにする。
【０１００】
アービタの動作シーケンスは以下の通りである：
１．ＲＥＳＥＴ後、すべてのＡＲＢ−ＩＮがＡＲＢ−ＭＡＳＫを介してイネーブルにされる。その理由はＡＲＢ−ＤＥＣがすべての信号を「イネーブル」にするからである。
【０１０１】
２．最高優先順位の付けられたＡＲＢ−ＩＮ（たとえば上記のテーブルでは信号７（バイナリ１１１）が最高優先順位であり信号０（バイナリ０００）が最低優先順位である）がバイナリ値として送出される。
【０１０２】
３．ＡＲＢ−ＤＥＣによって信号が阻止され、すべての他のエントリが場合によってはさらに高く優先順位づけられているかもしれないが、セットされていない。
【０１０３】
４．以下のステップ５および６は、信号０（バイナリ０００）に到達するまで繰り返されるかまたは、信号はＡＲＢ−ＭＡＳＫの後ろには現れない。この場合、ＡＲＢ−ＤＥＣ（デコーディングテーブル）は再びすべての信号をＡＲＢ−ＤＥＣによるＡＲＢ−ＭＡＳＫによってイネーブルにし、このシーケンスはステップ２から始まる。
【０１０４】
５．いまや最高優先順位のセットされたＡＲＢ−ＩＮは、バイナリ値として送出される。
【０１０５】
６．ＡＲＢ−ＤＥＣを介して信号が阻止され、他のすべての入力が場合によってはいっそう高く優先順位付けられているかもしれないが、セットされていない（ステップからさらに）。
【０１０６】
これによりすべての入力信号が平等に処理され、各クロックサイクルごとに入力信号のうちの１つ（ＡＲＢ−ＩＮ）がバイナリでデコーディングされて出力（ＡＲＢ−ＯＵＴ）されるようになる。ＡＲＢ−ＲＥＧにイネーブル入力側（ＥＮ）を設けることができ、これは対応する信号が生じたとき、ＴＦ２の場合だけレジスタ内容の変更を許可する。このためクロックごとにバイナリベクトルが送出されるのではなく、ＥＮとＴＦ２のイネーブルに依存して送出される。なお、入力側の同期が必要であるのは、後置接続された回路が処理を１つのクロックサイクルごとには実行できず、複数のサイクルを必要とし、その後はじめて次のバイナリベクトルを受け入れるときである。
【０１０７】
場合によって有用であるのは、複数の信号に同じ優先順位が付けられている間、一連の信号をアービタによって高い優先順位が付けられているとみなすことである。これはたとえば、各ＣＴ間で信号を転送するための既述の方法において必要である。信号にいっそう高い優先順位を付ける目的で、ＡＲＢ−ＰＲＩＯにおいて最高優先順位の付けられたコンタクトがマスキングされず、つまりマスク（ＡＲＢ−ＭＡＳＫ）の前を通過する。これにより信号が優先的に扱われる。
【０１０８】
マイクロコントローラベースのＣＴの構造
これまでの説明とは異なり、ＣＴをマイクロコントローラアーキテクチャでインプリメントすることもできる。ここで容易に理解できるように、トリガコントロール、ルックアップテーブルＬＵＴ１およびＬＵＴ２、ならびにＩｎｔｅｒ−ＣＴ通信とＣＥＬへのＫＷの書き込みなどの基本機能を、そのままマイクロコントローラによって実現することができる。この場合、効率的なＦＩＬＭＯの構造だけが問題となるが、それはとりわけ実現可能なパフォーマンスいおいて顕著になる。したがってＦＩＬＭＯの構造については特別に言及する。
【０１０９】
ＦＩＬＭＯの構造
ＦＩＬＭＯは別個のメモリとしては構成されていない。そうではなく、慣用のプログラムメモリがＦＩＬＭＯの機能性について拡張されている。この目的で、付加的なビット（ＦＩＬＭＯ−ＢＩＴ）が各ＫＷに対応づけられ、これによって対応するＫＷがＣＥＬに書き込まれた否かが表される。ＦＩＬＭＯーＢＩＴがセットされていれば、対応するＫＷは実行されない。メモリへのＫＷの書き込みにあたりＦＩＬＭＯ−ＢＩＴがリセットされる。ＣＴ内におけるすべてのＫＲは、それらがトリガまたはＬＯＡＤ＜ＩＤ＞によって呼び出されるよう、チェーンリスト（ＦＩＬＭＯ−ＬＩＳＴ）を介して順番に互いに結合されている。ＫＲは、それらが完全に実行されてしまうまでＦＩＬＭＯ−ＬＩＳＴ内に保持され、その後、それらがリストから除去される。ＦＩＬＭＯ−ＬＩＳＴはＦＩＬＭＯ方式に従って実行され、このためＦＩＬＭＯメモリに対する直接的な代替となっている。（完全性を期すために付言しておくと、本来のＦＩＬＭＯ方式とは異なりＫＲが２度リスト内に現れることはない。まだＦＩＬＭＯ−ＬＩＳＴ内に存在しているＫＲが呼び出された場合、その実行はそれがＦＩＬＭＯ−ＬＩＳＴから取り除かれるまで遅らさなくてはならない。）
ＦＩＬＭＯメモリロケーションの構造は以下の通りである：
【０１１０】
【表５】
0004338308.tif 000006
【０１１１】
命令
マイクロコントローラは、ＦＩＬＭＯに対し直接的に作用する以下の命令をサポートする：
ＰＵＳＨ  ＣＥＬへＫＷを書き込む。
【０１１２】
ＰＵＳＨＳＦ  ＣＥＬへＫＷを書き込み、ＫＷが受け入れられたとき（ＡＣＣＥＰＴ）のＦＩＬＭＯ−ＢＩＴをセット。
【０１１３】
ＰＵＳＨＲＥＴ  ＣＥＬへＫＷを書き込み、ＫＷがＣＥＬによって受け入れられなかったとき（ＲＥＪＥＣＴ）、サブルーチンからリターン（ＲＥＴＵＲＮ）。この命令が使用されるのは、ＫＲ内における後続のＫＷがこのＫＷのコンフィグレーション（ＡＣＣＥＰＴ）に依存しているときである；ＫＲからのリターンにより、ＰＵＳＨＲＥＴが成功するまで（ＡＣＣＥＰＴ）、そのコンフィグレーションが阻止される。
【０１１４】
ＰＵＳＨＮＲ  事前にＫＲ内でＲＥＪＥＣＴが生じなかったときのみ、ＣＥＬへＫＷを書き込む。ＰＵＳＨＲＥＴと同様、ＫＷのコンフィグレーション順序における依存性を扱うために用いる。
【０１１５】
ガーベージコレクタ
これまでの説明のように、もはや必要のないＫＲを消去するためにガーベージコレクタ（ＧＣ）が使われる。メモリ内に新たなＫＲをロードするスペースがもはや十分になくＩＤを消去しなければならないとき、あるいはＫＲが命令ＲＥＭＯＶＥにより明示的に（消去すべきＫＲのＩＤの情報を伴って）消去されるとき、ＧＣが起動する。ＧＣの実行をできるかぎり簡単に構成できるようにする目的で、ＫＲ全体がチェーンリストを介して結合される。ＧＣはリストをスキャンし、もはや必要とされないＫＲを消去するが、これはそれらのＫＲが別のＫＲによって上書きされ、リストエントリが相応に整合されるようにして行われる。その際、消去すべきＫＲによって生じるメモリの隙間が埋められ、つながったいっそう大きいなフリースペースがメモリの最後に生じるよう、メモリ内に残されるすべてのＫＲがシフトされる。
【０１１６】
ＫＲの構造
以下のテーブルには、ＫＲの実現可能な基本構造が描かれている。
【０１１７】
【表６】
0004338308.tif 000007
【０１１８】
ＫＲの最初において、命令シーケンスをスタートさせるため後続のヘッダを越えてジャンプが行われる。これにはガーベージコレクタのための二重にチェーン結合されたリストが続き、そこではすべてのＫＲが互いに結合されている。”ｌｅｎｇｔｈ”はＫＲの長さを表す。この情報は、従来技術によるＢｌｏｃｋ−Ｍｏｖｅ命令のために用いることができ、これはメモリ内のＫＲを移動させる必要があるときに用いられる（Ｇａｒｂａｇｅ，Ｌｏａｄ等）。続く二重にチェーン結合されたリスト内にＦＩＬＭＯが形成されており、これによればＣＥＬに書き込まれていないＫＷを含むＫＲだけが互いに結合されている。
【０１１９】
これに続いてキャッシュ動作に関する統計がおかれ、これにはたとえばＫＲの呼び出し回数（呼び出しごとに値が１だけ高められる）、エイジ（ＫＲに関するＧＣ実行回数に基づき測定可能：ＧＣ実行ごとに値が１だけ高められる）などが含まれている。メモリスペース上の理由でＫＲを消去しなければならないとき、ＣＧはこの統計を評価することができる。キャッシュに関して、この種の統計により格別な利点が得られる。たとえば用いられるキャッシュアルゴリズムに依存しアプリケーションの要求に従い、マイクロコントローラを次のようにプログラミングすることができる。すなわち空きメモリが必要なとき、
１．最も古い／最も新しいＫＲ
２．最も小い／最も大きいＫＲ（エントリ”ｌｅｎｇｔｈ”参照）
３．最も稀に／最も頻繁に呼び出されるＫＲ
がキャッシュから消去される。その際、自明の別の有用なステータス情報を格納することができる。このような選択的なキャッシュは、現在知られているキャッシュ構造では不可能である。殊に、キャッシュにおいて自由にプログラミング可能なキャッシュアルゴリズムは従来技術ではサポートされていない。ついでＫＲ統計が設けられており、これにはたとえばまだコンフィグレーションされていない（ＲＥＪＥＣＴ）またはコンフィグレーションされている（ＡＣＣＥＰＴ）ＫＷの個数が含まれている。同時に、これからコンフィグレーションすべき最初のＫＷのアドレスを格納することができる。このことの利点は、ＦＩＬＭＯスキャン時にすぐにＫＷへジャンプでき、ＫＲ全体をスキャンしなくて済むことであって、その結果、めざましいパフォーマンス向上が得られる。
【０１２０】
最後にＫＲについて言及しておくと、チェーンリストは有利には先行ＩＤ／後続ＩＤのエントリにより構成される。それというのも、このことで絶対メモリアドレスを問題なくＧＣによってシフトできるからである。また、ＫＲロード時とＧＣ実行時に問題が発生するのを回避する目的で、ＫＲ内では絶対ジャンプの代わりに相対ジャンプだけしか用いられない。なぜかといえば、絶対アドレスは変化しないからである。
【０１２１】
完全を期すためにここでさらに言及しておくと、既述の方式によればマイクロコントローラを使用したときでも（他のＣＴからのものであってもトリガまたは命令に基づき）新たなＫＲが実行される前にＦＩＬＭＯがスキャンされ、ＦＩＬＭＯのスキャン前にはＣＥＬのステータス（コンフィグレーション可能またはコンフィグレーション不可能）が保護される。
【０１２２】
図面
以下の図面には、１つの実装例に基づき本発明による方法のコンフィグレーションデータ管理について示されている。
【０１２３】
図１は、ルックアップテーブル内におけるアドレッシング方法を示す図である。図２〜図７は、ステートマシンの命令処理と機能を示す図である。図８は、ＳＣＲＲ−ＡＲＢの構造を示す図である。図９は、ＬＵＴ１＆ＬＵＴ２の構造を示す図である。図１０は、ポインタ演算装置とＣＴＲの構造を示す図である。図１１は、ＦＩＬＭＯの構造を示す図である。図１２ａは、ＣＴの階層構造を示す図である。図１２ｂは、各ＣＴ間におけるトリガの送信を示す図である。図１２ｃ，ｄは、送信方法を示す図である。図１３は、複数のＩＫＲによるＫＲの呼び出しを示す図である。図１４は、ＲＯＯＴ−ＣＴにおけるＬＵＴ１の構造を示す図である。図１５は、ＲＯＯＴ−ＣＴにおけるＨＯＳＴコントロールの構造を示す図である。図１６は、ＬＵＴとＥＣＲのコンセプトを示す図である。図１７は、中間階層平面ないしはＲＯＯＴ−ＣＴにおけるＣＴのシーケンスコントロールを示す図である。図１８は、２次元アレイのコンフィグレーションにおけるデッドロックの問題点を示す図である（明細書参照）。図１９は、ＦＩＬＭＯコンセプトを示す図である。図２０は、Ｉｎｔｅｒ−ＣＴコミュニケーションの基本原理を示す図である。図２１は、ＧＥＴＣＴＳ方式によるＩｎｔｅｒ−ＣＴコミュニケーションの実装例を示す図である。図２２は、ＧＥＴＢＵＳ方式によるＩｎｔｅｒ−ＣＴコミュニケーションの実装例を示す図である。図２３は、Ｉｔｅｒ−ＣＴバスのバス構造を示す図である。図２４は、ＣＴ階層内におけるアドレッシングを示す図である。図２５は、ガーベージリストである。図２６は、ＦＩＬＭＯリストである。図２７は、ＫＲ内のＦＩＬＭＯ機能を示す図である。図２８は、ＫＲまたはＦＩＬＭＯを実行する前の状態の格納について示す図である。
【０１２４】
図面の説明
図１には、１つのＣＴ内におけるＣＴＲアドレス生成のシーケンスが示されている。この場合、到来するバイナリのトリガベクトル（０１０１）が、ＬＵＴ１内で有効なＫＲまたはＩＫＲ  ＩＤに変換される。有効なＩＤが存在していなければ信号”Ｉｌｌｅｇａｌ  Ｔｒｉｇｇｅｒ”が生成され（０１０２）、これによってそのトリガがＬＵＴ１内では未知のものであるとが指示される。さらにこの信号をエラーメッセージとして上位のＣＴへ転送してもよいし、あるいは無視してもよい。「トリガ」から「ＩＤ」への変換は、命令”ＲＥＦＥＲＥＮＣＥ”によりＬＵＴ１へエントリされる。有効なＩＤ（０１０３）がＬＵＴ２へ転送される。命令内でつまりオペランドにより与えられるＩＤ（０１０４）は、ＬＵＴ２にダイレクトにあたる。ＬＵＴ２は到来するＩＤを、ＣＴＲ内のＫＲ／ＩＫＲのアドレスへ変換する。ＫＲ／ＩＫＲがＣＴＲ内に格納されていなければ（キャッシュ内に存在しなければ）、信号”Ｍｉｓｓ”が生成される（０１０５）。ＫＲ／ＩＫＲの変換されたアドレスがトークン”ＮｏＡｄｒ”でマーキングされていれば、”ＮｏＥｎｔｒｙ”（０１０７）によって、アドレスの消去されていることが示される。”Ｍｉｓｓ”および”ＮｏＥｎｔｒｙ”は、ＣＴＲ内部アドレスへの変換が不可能であることを表す。これらの信号に基づきＬＯＡＤステートマシンは、その上に位置するＣＴの対応するＩＤをもつＫＲ／ＩＫＲをリロードする。有効なアドレスが存在しているかぎり、これはアドレス発生器のポインタ演算装置へ転送される（０１０６）。ＬＵＴ１において、到来するバイナリのトリガベクトルがＩＤまたは別のトリガベクトルへ変換され、その場合、トリガベクトルが出力される（０１０８）。
【０１２５】
図２には、ＫＲ／ＩＫＲをロードする際のシーケンスが描かれている。まずはじめに、ロードすべきＫＲ／ＩＫＲのＩＤ（０２０１）がその上に位置するＣＴへ送信される。それに応じてＬＵＴ２内で、要求されたＩＤのためのエントリのロケーションにフリーポインタ（ＦｒｅｅＰｏｉｎｔｅｒ）の値がエントリされる。ＦＰは、ＣＴＲ内でＫＲ／ＩＫＲのために利用された最後のエントリの後ろのエントリを指す。これは、ロードすべきＫＲ／ＩＫＲの格納される最初のエントリである。ステートマシンは、上に位置するＣＴのデータワードを待つ。そのワードを利用可能であれば、ＦＰによって参照されているロケーションに書き込まれる。そしてＦＰがインクリメントされる。ＦＰがＣＴＲの終端の後ろのエントリを指しているならば、スペース確保のためＣＴＲ内の最初のエントリが消去される。その際、ＦＰが更新される。上に位置するＣＴから送信されたデータワードが”ＳＴＯＰ”であればロードプロセスが中止され（０２０３）、そうでなえれば新しいデータワードを待ちながらプロセスが続けられる（０２０４）。
【０１２６】
図３ａには、”ＭＡＳＫ”命令が描かれている。この命令のオペランドはＭＡＳＫレジスタへ書き込まれる。ＭＡＳＫレジスタはＬＵＴ１の前のトリガ信号入力側に設けられていて、無効なトリガをマスク除去する。
【０１２７】
図３ｂの場合には命令”トリガ”により、この命令のオペランドがトリガベクトルとして他のＣＴへ送信される。
【０１２８】
図３ｃの場合には命令”ＲＥＦＥＲＥＮＣＥ”により、トリガから対応するＫＲ／ＩＫＲ  ＩＤへの変換がＬＵＴ１へ書き込まれる。
【０１２９】
図４ａには、命令”ＷＡＩＴ”が描かれている。この命令のオペランドは、ＷＡＩＴＭＡＳＫレジスタへ書き込まれる。待っているトリガ以外したがってＷＡＩＴＭＡＳＫにおいてイネーブルにされるトリガ以外、すべてのトリガは無視される。そのトリガが到来してはじめて、プログラムの流れが戻る。
【０１３０】
図４ｂには”ＰＵＳＨ”命令が描かれている。この場合、アドレッシングされたコンフィグレーション可能なエレメント（ＣＥＬ）へフィグレーションワードが送られる。ＣＥＬがたとえば状態「コンフィグレーション不可能」におかれていてコンフィグレーションワードを受け入れなければ、そのコンフィグレーションワードはＦＩＬＭＯへ書き込まれる（０４０１）。
【０１３１】
図５には、”ＲＥＭＯＶＥ”命令のシーケンスが示されている。この場合、２種類の呼び出し方がある：
１．ＣＴＲ内に位置する最初のＫＲ／ＩＫＲがＣＴＲから消去される。ガーベージポインタ（ＧａｒｂａｇｅＰｏｉｎｔｅｒ，ＧＰ）へＣＴＲのアドレス０が割り当てられる（０５０１）。
【０１３２】
２．特別にＩＤにより表されるＫＲ／ＩＫＲがＣＴＲから消去される。ガーベージポインタ（ＧＰ）に、ＣＴＲ内の消去すべきＫＲ／ＩＫＲの最初のアドレスが割り当てられる（０５０２）。
【０１３３】
その際、ムーブポインタ ＭｏｖｅＰｏｉｎｔｅｒ にＧＰの値がロードされる。ＧＰとＭＰは、最初のＫＲ／ＩＫＲをＣＴＲから消去すべきときであっても、ＣＴＲ内の”ＢＥＧＩＮ＜ＩＤ＞”命令を参照する。該当するＩＤがＬＵＴ２内で無効であるとマーキングされる。ＭＰは、メモリ内で次に位置するＫＲ／ＩＫＲの”ＢＥＧＩＮ＜ＩＤ＞に達するまで（０５０３）、あるいはＭＰがフリーポインタ ＦｒｅｅＰｏｉｎｔｅｒ（ＦＰ）と等しくなるまで、つまり消去すべきＫＲ／ＩＫＲがＣＴＲ内の最後のものになるまで（０５０４）、インクリメントされる。
【０１３４】
−この場合、ＦＰにＧＰの値がロードされ、このことで消去すべきＫＲ／ＩＫＲによって占有されているメモリロケーションが空きとマーキングされ、ファンクション”ＲＥＭＯＶＥ”が終了する（０５０５）。
【０１３５】
−そうでない場合（”ＢＥＧＩＮ＜ＩＤ＞”に達した場合（０５０６））、ＭＰにより参照されたデータがＧＰにより参照されるメモリロケーションへコピーされる。その際、ＭＰとＧＰがインクリメントされる。このシーケンスは、ＭＰがＣＴＲの最後に達するまで、あるいはＦＰの位置に達するまで（０５０７）行われる。このシーケンス中、ＭＰにより、”ＢＥＧＩＮ＜ＩＤ＞”の存在するメモリロケーションが参照されると、ＬＵＴ２における対応するＩＤのためのエントリがＭＰによって上書きされ（０５０８）、これによってルックアップにあたり適正なメモリロケーションが送出されるようになる。
【０１３６】
図６には、ＦＩＬＭＯのフローチャートが示されている。ＦＩＬＭＯには３つのポインタが含まれている：
１．ＷｒｉｔｅＰ：ＦＩＬＭＯ−ＲＡＭの書き込みポインタ
２．ＲｅａｄＰ：ＦＩＬＭＯ−ＲＡＭの読み出しポインタ
３．ＦｕｌｌＰ：ＦＩＬＭＯ−ＲＡＭの「充填状態」を表し、アンダーフローまたはオーバーフローを阻止する。
【０１３７】
１ｂｉｔのレジスタ”ＢｅｇｉｎＦ”により、目下の読み出しアクセスがＦＩＬＭＯ−ＲＡＭの最初にある（ＴＲＵＥ）か、つまり読み出しポインタとＦＩＬＭＯ−ＲＡＭの最初との間に消去されていないエントリが存在していないか、あるいは読み出しポインタがＦＩＬＭＯ−ＲＡＭの中程に位置している（ＦＡＬＳＥ）か、つまり使われるエントリが読み出しポインタとＦＩＬＭＯ−ＲＡＭの最初との間に位置しているかが表される。さらに、ＲｅａｄＰとＦｕｌｌＰの状態を格納する２つのレジスタが存在する。これは消去されていない最初のエントリが現れたときに両方のレジスタを保護するために必要である。なぜならば、あとで行われる読み出しアクセスにあたり、そのエントリのロケーションで読み出しを開始しなければならないからである。しかし他方、ＲｅａｄＰとＦｕｌｌＰは目下の読み出しプロセスの間、次の読み出しアドレスを得る目的で、またはＦＩＬＭＯ−ＲＡＭの終わりを確認する目的で、さらに変えられなければならない。ＦＩＬＭＯをＦＩＦＯに似た構造（いわゆるリングメモリ）として構成することにより、メモリの最初と最後をアドレス０や最大アドレスに基づき確認することはできない。
【０１３８】
基本状態から２つのシーケンス経路が生じる。
【０１３９】
１．読み出し経路（０６０１）
ＦｕｌｌＰとＲｅａｄＰがレジスタ中に保護される。処理ループが始まる：
ＢｅｇｉｎＦはＴＲＵＥ。ＦｕｌｌＰがゼロであれば、ＲｅａｄＰとＦｕｌｌＰはそれらのレジスタから読み戻され（０６０２）、ステートマシンは基本状態にジャンプして戻る。そうでなければ（０６０３）、ＲｅａｄＰの指しているＦＩＬＭＯ内のエントリが”ＮＯＰ”と等しいか否かが調べられ、つまり消去されたとマーキングされたＦＩＬＭＯ中程のエントリであるか否かが調べられる。これが該当しなければ（０６０４）、コンフィグレーション可能なエレメント（ＣＥＬ）へのエントリの書き込みが試みられる。ＣＥＬが再コンフィグレーション可能ではないため、これがうまくいかなければ（ＲＥＪＥＣＴ，０６０５）、ＢｅｇｉｎＦがＦＡＬＳＥにセットされ、ＦｕｌｌＰがデクリメントされ、ＲｅａｄＰがインクリメントされる。ステートマシンは処理ループの最初にジャンプする（０６０６）。ＣＥＬへのエントリの書き込みがうまくいくか（０６０７）、またはエントリがＮＯＰであれば、ＢｅｇｉｎＦが調べられる。
【０１４０】
ＢｅｇｉｎＦ＝＝ＴＲＵＥ（０６０８）：その前に消去されていないエントリは存在しない。ＦｕｌｌＰはインクリメントされ、ＦＩＬＭＯの新たな開始を記録しておくため、ＲｅａｄＰは所属のレジスタにおいて保護される。また、目下のデータ量を記録するためＦｕｌｌＰは保護され、ＲｅａｄＰはインクリメントされる。
【０１４１】
Ｂｅｇｉｎ＝＝ＦＡＬＳＥ（０６０９）：ＦｕｌｌＰはインクリメントされ、ＦＩＬＭＯ−ＲＡＭ内の目下のエントリはＮＯＰによって上書きされ、つまりそのエントリは消去される。ＲｅａｄＰはインクリメントされる。
【０１４２】
これら両方の事例とも、ステートマシンは処理ループの最初にジャンプする。
【０１４３】
２．書き込み経路（０６０１）
ＦｕｌｌＰが最大値であるかをチェックすることで、ＦＩＬＭＯ−ＲＡＭがいっぱいであるかが調べられる。いっぱいであれば（０６１１）、スペースを確保するため読み出し経路にジャンプする。そうでなければデータワードがＦＩＬＭＯ−ＲＡＭへ書き込まれ、ＷｒｉｔｅＰとＦｕｌｌＰがインクリメントされる。
【０１４４】
図７には、メインステートマシンのシーケンスが示されている。これは以下のときにただちに基本状態（ＩＤＬＥ）を離れる。すなわち、
１．ＲＥＭＯＶＥ−Ｋｏｍｍａｎｄｏがその上に位置するＣＴから現れたとき（０７０１）：ＲＥＭＯＶＥ命令が実行され、ステートマシンはＩＤＬＥへ戻る。
【０１４５】
２．各ＣＴ間でトリガを生成するトリガ信号が現れたとき（０７０２）：トリガが出力される。ステートマシンは”ＳＴＯＰ”命令へジャンプし、その後、ＩＤＬＥへ戻る。
【０１４６】
３．ＫＲ／ＩＫＲ＜ＩＤ＞を実行するトリガ信号が現れたとき（０７０３）：プログラムポインタ（ＰＰ）には、ＬＵＴ２により生成されたアドレスがロードされる。アドレスが無効であれば、つまりロードすべきＫＲ／ＩＫＲのためにいかなるエントリも存在しなければ、それがロードされ（０７０４）、ＰＰが新たにセットされる。
【０１４７】
実行ループが始まる：
ＰＰがインクリメントされ（最初のループ実行時にはこれによりＢＥＧＩＮ＜ＩＤ＞命令が飛び越される）、別のトリガの発生が阻止され、ＲＥＣＯＮＦＩＧが阻止される。命令が実行され、実行ループの最初にジャンプする（０７０７）。命令”ＳＴＯＰ”が別個に実行される（０７０５）。トリガとＲＥＣＯＮＦＩＧが再びイネーブルにされ、ステートマシンはＩＤＬＥにジャンプする。命令”ＥＸＥＣＵＴＥ”も別個に実行される（０７０６）。ＥＸＥＣＵＴＥ＜ＩＤ＞で表されたＩＤがＩＤ−ＲＥＧに書き込まれる。ＰＰは新たにロードされ、ＩＤにより表されたＫＲ／ＩＫＲが実行される（０７０８）。
【０１４８】
ＣＴのリセット後、基本コンフィグレーションがＣＴＲにロードされ、そのまま基本コンフィグレーションの実行にジャンプする（０７０９）。
【０１４９】
図８にはＳＣＲＲ−ＡＲＢの構造が示されている。調停されるべき信号はデータＩＮを介してマスク（０８０１）に到達し、これは既知のテーブルに従い信号の関連部分を通したり阻止したりする。従来技術による慣用の優先順位アービタ（０８０２）は通された信号の集合から１つの信号を調停し、そのバイナリベクトル（ＢｉｎａｒｙＯｕｔ）を有効／無効識別子（ＶａｌｉｄＯｕｔ）とともに（やはり従来技術に従い）ＳＣＲＲ−ＡＲＢの出力として供給する。この信号は既知のテーブルに従いデコーディングされ（０８０３）、クロック同期のためのレジスタ（０８０４）へ導かれる。このレジスタを介して、データＩＮマスクがスイッチングされる。その際、レジスタはクロックにより制御されるかまたは、次の有効なバイナリベクトルを問い合わせるネクスト信号（イネーブルＥＮ）によって制御される。リセット時または識別子（ＶａｌｉｄＯｕｔ）が無効であると示されたとき、データＩＮマスクがすべての信号を通すようレジスタがスイッチングされる。
【０１５０】
マスクの構造が０８０５に描かれている。０８０６にもマスクが再度描かれており、この場合には信号であるデータＩＮ  ０．．データＩｎ  １に対しＳＣＲＲ方式に従い同じ優先順位が与えられているのに対し、データＩｎ  ｍ．．データＩｎ  ｎには高い優先順位が与えられている。
【０１５１】
図９にはＬＵＴの構造が示されている。調停されたトリガのバイナリベクトル（ＢｉｎａｒｙＩｎ）は、ＬＵＴ１のアドレス入力側（０９０１）へ導かれる。ＬＵＴ１はバイナリベクトルを、別のＣＴへ転送するために有効なトリガに変換するか、あるいは有効なＩＤに変換する。これらはともに０９０１を経て送出される。０９１１において、それがトリガであるかＩＤであるかが指示される。命令”ＲＥＦＥＲＥＮＣＥ”によって、ＬＵＴ１へ到来するバイナリベクトルの変換がエントリされていなければ、（ビットエントリまたは特定のトークンたとえば”ＶＯＩＤ”に対する比較器によって）信号”Ｉｌｌｅｇａｌ  Ｔｒｉｇｇｅｒ”が生成される（０９１４）。
【０１５２】
トリガは０９１２を介して外部のＩＤへ導かれ、ＩＤはマルチプレクサ（０９０２）を介してさらに処理される。０９０２は、有効なＩＤを表すＬＵＴ１のデータ出力またはＣＴのＩＤレジスタ（０９０３）を、ＬＵＴ２のアドレス入力側（０９０４）へスイッチングする。０９０４はキャッシュに似た構造を有しており、つまり０９０２からのデータ出力側における下位の部分（０９０６）は０９０４のアドレス入力側へ供給されるのに対し、上位の部分（０９０７）は０９０４のデータ入力側へ供給される。０９０４に属するデータ出力側は、比較器（０９０５）によって０９０７と比較される。この方式の利点は、０９０４がすべてのＩＤを変換するために深さをもっている必要がなく、かなり小さくすることができる。慣用のキャッシュと同様にＩＤの一部分だけが変換され、その際、ＬＵＴ２内で０９０７に基づき、選択されたＩＤがＬＵＴ１により与えられたものと一致するか否かを判定することができる。これは従来技術によるキャッシュ／ＴＡＧ方式に相応する。
【０１５３】
０９０４における第２のデータ入力側にはマルチプレクサ０９０８が対応づけられて設けられており、これはオペレーションに従いフリーポインタ（ＦＰ、オペレーションＬＯＡＤ）、ガーベージポインタ（ＧＰ、オペレーションＲＥＭＯＶＥ）または無効識別子／トークン（ＮｏＡｄｒ、オペレーションＲＥＭＯＶＥ）をＬＵＴ２へ格納するために供給する。両方のポインタはＣＴＲ内のメモリロケーションを参照しており、”ＮｏＡｄｒ”は、適合するＩＤに対するエントリが存在せずそのエントリは消去されていることを表す。このことはデータ出力側において、比較器０９０９によってデータをトークン”ＮｏＡｄｒ”と比較することによって判定される。この場合、ステートマシンへ以下のことが転送される。すなわち、
−”ＶａｌｉｄＩｎ”によるバイナリベクトルの発生（図８参照）。
【０１５４】
−ＬＵＴ１における変換がトリガであるかＩＤであるかの指示（０９１１，”Ｔｒｉｇｇｅｒ／ＩＤ  Ｏｕｔ）。トリガは０９１２を介して別のＣＴへ転送され、ＩＤは固有のＣＴにおいて処理され、ＬＵＴ２へ転送される。
【０１５５】
−対応するＩＤが０９０４に格納されているか否かを表す０９０５の結果（”Ｈｉｔ／Ｍｉｓｓ  Ｏｕｔ）。
【０１５６】
−対応するＩＤがＣＴＲ内の有効なアドレスを指示しているか否かを表す０９０９の結果（”ＮｏＥＮｔｒｙ  Ｏｕｔ”）。
【０１５７】
０９０４により生成されたアドレスはＣＴＲへ転送される（”ＣＴＲ  Ａｄｄｒｅｓｓ  Ｏｕｔ）。
【０１５８】
ＬＵＴ１へ命令”ＲＥＦＥＲＥＮＣＥ”を介して、到来したバイナリベクトルからトリガまたはＩＤへの変換がロードされる。命令のオペランドはバス０９１３を介してＬＵＴ１へ導かれる。同じバスを介してＩＤレジスタ（０９０９）がロードされる。
【０１５９】
図１０には、ガーベージポインタ（ＧＰ）、プログラムポインタ（ＰＰ）、ムーブポインタ（ＭＰ）およびフリーポインタ（ＦＰ）が示されている。各ポインタは、別個に制御できるロード可能なアップダウンカウンタによって構成されている。各ポインタには（必要であるかぎり）、他のカウンタの値をロードすることができ、さらにＬＵＴ２の出力（０１０７）もロードすることができる。
【０１６０】
比較器によって
１．ＰＰがＭＰと等しいか
２．ＭＰがＦＰと等しいか
３．ＦＰがＣＴＲ内の最大ポジションと等しいか
が判定される。その結果はステートマシンの制御に用いられる。マルチプレクサ（１００１）を介して、ポインタのうちの１つがＣＴＲのアドレス入力側へ案内される。データはマルチプレクサ（１００２）を介して上位のステートマシンから、またはレジスタ（１００３）から、ＣＴＲへ到達する。さらにステートマシンおよびＦＩＬＭＯ（１００６）へ、マルチプレクサ（１００４）を介して上位のＣＴまたはＣＴＲのデータが転送される。この場合、上位のＣＴからＲＥＭＯＶＥ命令が発生したときにはそれがそのまま１００４を介してステートマシンへ導かれるのに対し、そうでなければ命令はＣＴＲからステートマシンへ案内される。レジスタ１００３は、命令を格納しＣＴＲ入力側へフィードバックするために用いられ、それらはガーベージコレクタ実行中にあるアドレスから別のアドレスへシフトされる。
【０１６１】
図１１にはＦＩＬＭＯの構造が描かれている。データはＣＴＲ（１１０１）からＦＩＬＭＯへ到達し、マルチプレクサ（１１０２）を介してＦＩＬＭＯ−ＲＡＭ（１１０３）へ書き込まれるかまたは、マルチプレクサ（１１０４）を介してコンフィグレーション可能なエレメント（１１１６）へ送られる。データが１１０３において消去されると、１１０２を介して”ＮＯＰ”トークンが１１０３へ書き込まれる。比較器（１１０５）によってデータ出力側で”ＮＯＰ”トークンが識別され、コンフィグレーション可能なエレメントへの書き込みが阻止される。マルチプレクサ１１０６を介して、書き込みポインタＷｒｉｔｅＰ（１１０７）または読み出しポインタ（１１０８）が１１０３のアドレス入力側へ導かれる。リセット（図６参照）を行えるようにするため、レジスタ１１０９で読み出しポインタが保護される。１１０３における充填状態カウンタ（１１１０）は、図６に示したようにレジスタ１１１１でリセットに対し保護される。１１０３が空であるか（１１１２）またはいっぱいであるか（１１１３）が、２つの比較器によって調べられる。さらにマルチプレクサ１１１５を介して、１１１６へ（１１０１からの）ステートマシンの制御信号を送るのか、ＦＩＬＭＯの制御信号を送るのかが選択される。
【０１６２】
図１２ａにはＣＴＳの階層構造が示されている。すべてのＣＴＳはそれらのデータを、ＲＯＯＴ−ＣＴ（１２０１）およびそれに割り当てられたＥＣＲ（１２０４）から受け取る。コンポーネント内における各実装平面ごとに、１つまたは複数のＣＴが存在している。各ＣＴは、それらの平面およびその下に位置するＣＴの管理を担当する。なお、ツリーのすべての枝が同じ深さにある必要はない。たとえば、１つのコンポーネントの周辺装置（１２０２）を制御するためには、動作ユニット（１２０３）を制御するよりも僅かな平面しかないかもしれない。この場合、データ伝送はツリー状に行われる。各ＣＴは、その下に位置するすべてのＣＴのためのキャッシュとして動作する。
【０１６３】
図１２ｂには、各ＣＴ間におけるトリガの流れが示されている。データの流れはツリー状に進行するのに対し、トリガの流れは固定されていない。各ＣＴは、他のいかなるＣＴへもトリガを送ることができる。トリガ交換は通常、リーフ（１２０３）からＲＯＯＴ−ＣＴの方向でのみ行われる。しかし場合によっては、逆方向で伝送が進行する可能性もある。
【０１６４】
図１２ｃにはトリガベクトルのブロードキャストが描かれており、ここでは１２０５がトリガベクトルをすべてのＣＴへ送る。
【０１６５】
図１２ｄにはＨＩＧＨＥＲトリガベクトルが示されており、１２０６はこれをその上に位置するＣＴへ送る。また、１２０７はＬＯＷＥＲトリガベクトルを、その下に位置するすべてのＣＴへ送る。さらに１２０８は、ダイレクトにアドレッシングされた（ＡＤＤＲＥＳＳＥＤ）トリガベクトルを、１２０７とダイレクトにはつながっていない特定のＣＴへ伝送する。
【０１６６】
図１３の場合、独立した２つのＩＫＲ  ｎとｍが、その上位のＣＴにキャッシュされている共通のＫＲｘを要求している。そこに示されているように、このＫＲは共通の枝によりキャッシュされ、隣りの枝（１３０１）においても共通のＣＴを利用可能である。
【０１６７】
図１４には、図９に対し変形されたＬＵＴシステムが示されており、これは中間の階層平面におけるＲＯＯＴ−ＣＴとＣＴにおいて用いられる。これまで述べてきたＣＴとの基本的な相違点は、個々のトリガ信号の代わりにＩＤおよび／またはトリガベクトルをＣＴにより管理しなければならないことである。ここでは各ベクトルに、ベクトルの有効性を指示するためのハンドシェーク信号（ＲＤＹ）が割り当てられており、これはアービタ（１４０１）へ伝送される。マルチプレクサ（１４０２，１４０３）を介して、複数のトリガベクトル（１４０４）のうちの１つまたは複数のＩＤベクトルのうちの１つ（１４０５）が選択される。トリガベクトルはＬＵＴ１（１４０６）のアドレス入力側へそのまま到達し、ＬＵＴ１はその他の点では図９に示されているように結線されている。ＩＤレジスタ（１４０７）も、やはり図９に示されているように結線されている。図９とは異なり、マルチプレクサ１４０８は３つの入力側を有している（０９０２を参照）。ここではこのマルチプレクサはステートマシンのほか、付加的にアービタ１４０１によっても制御される。付加的な入力側を介して、１４０３を経たＩＤベクトルはＬＵＴ２へそのまま伝送される。この目的でバス１４０９が用いられる。（基本的に、図９に示したＣＴの場合でもＩＤをマルチプレクサ（１４０８）によってＬＵＴ２へダイレクトに供給することができる。この場合にはＩＤを、変換せずにそのままＣＥＬからＬＵＴ２へ送ることができる。）”Ｔｒｉｇｇｅｒ／ＩＤ  Ｏｕｔ”は、図９に示されているようにして生成される。図９によれば”Ｖａｌｉｄ  Ｏｕｔ”へ転送される”ＶａｌｉｄＩｎ”信号は、ここでは存在しない。その代わりに１４０１によるアービテーションに応じて、トリガベクトルのためには”Ｖａｌｉｄ  Ｔｒｉｇｇｅｒ  Ｏｕｔ”が生成され、ＩＤベクトルのためには”Ｖａｌｉｄ  ＩＤ  Ｏｕｔ”が生成され、これによって処理をどのように行うべきかがステートマシンに指示される。
【０１６８】
バス１４０９は１４１０を介して、ＲＯＯＴ−ＣＴ内だけに存在し図１５には示されていない別のユニットへ案内される。ＲＯＯＴ−ＣＴは通常のＣＴ機能に加えて、外部のコンフィグレーションメモリ（ＥＣＲ）へのインタフェースおよびなければならないアドレス発生器とＥＣＲへのアクセスを管理するユニットを必要とする。
【０１６９】
慣用のＣＴは、ＬＵＴ１へ到来するトリガベクトルをＩＤに変換し、ＬＵＴ２においてそのＩＤをＣＴＲ内のメモリロケーションに変換する（図１６ａ参照）。ＲＯＯＴ−ＣＴはＥＣＲへのアクセス時、ＥＣＲ内部におけるＩＤをＥＣＲ内のアドレスへ変換し、そのアドレスにおいてＩＤにより参照されたＫＲ／ＩＫＲが始まる。この目的でＥＣＲ内に、可能なＩＤの個数に対応する大きさをもつメモリ領域が設定されている（たとえばＩＤが１０ｂｉｔ幅であれば２10＝１０２４個の可能なＩＤが得られ、したがってＥＣＲ内で１０２４個のエントリが予約される）。以下の実例ではこのメモリ領域はＥＣＲの下端にあり、ＬＵＴ２との類似性を区別するため、ＬＵＴ−ＥＣＲと称する。その際、トリガからＩＤへの変換は、既知のＣＴに従いＬＵＴ１（１６０１）において行われる。理解を深めるため、図１６ｂによりＥＣＲへのアクセスについて示す。
【０１７０】
ＩＤは図１５において、図１４中のバス１４１０を介してマルチプレクサ１５０１に到達する。さらに１５０１を介して、ＩＤはロード可能なカウンタ１５０２へ書き込まれる。１５０２の出力側は、マルチプレクサ１５０３を介してＥＣＲのアドレスバス（１５０４）へ導かれる。データバス１５０５を介して、ＩＤからメモリアドレスへの変換はマルチプレクサ／デマルチプレクサ（１５０６）を経て１５０１へ到達し、これは１５０２に対しメモリアドレスをロードする。その後、ステートマシンＬＯＡＤ−ＥＣＲ（図１７参照）によって対応するＫＲ／ＩＫＲのデータワードがＥＣＲから読み出され、ＣＴＲに書き込まれ、その際、１５０２は読み出しプロセス後にそのつど高められ、これは命令”ＳＴＯＰ”が読み出されるまで行われる。
【０１７１】
インタフェース１５０７を介して、上位に位置するＨＯＳＴが１５０３／１５０６を介してＫＲ／ＩＫＲをＥＣＲへ書き込む。その際にステートマシン（ＣＴＳ）によって、ＥＣＲへＨＯＳＴがアクセスするのかＲＯＯＴ−ＣＴがアクセスするのかについてて調停される。
【０１７２】
コンポーネントのリセット後、基本コンフィグレーション（ＢＯＯＴ−ＫＲ）をロードする必要がある。このため固定的なメモリアドレス（ＢＯＯＴ−ＡＤＲ）が取り入られ、これはＢＯＯＴ−ＫＲにおける最初のメモリテーブルを示す。ＢＯＯＴ−ＡＤＲとしては、ＩＤが１で始まるかぎりメモリロケーション０ｈが推奨され、そうでなければ２IDまたは他の何らかのメモリロケーションを使用することができる。この実施例では２IDを使う。
【０１７３】
ＲＯＯＴ−ＣＴはＢＯＯＴ−ＫＲをＢＯＯＴ−ＡＤＲのロケーションにロードするため、ＢＯＯＴ−ＫＲがロードされているかぎりルックアップを実行する。ＲＯＯＴ−ＣＴは１５０２の後でデータを書き換え、そこからは”ＳＴＯＰ”命令が発生するまでＢＯＯＴ−ＫＲをロードできるようにする。
【０１７４】
ＲＯＯＴ−ＣＴ内の監視ユニットは、ＨＯＳＴとコンポーネントとの同期合わせの役割を担っている。これは以下のようにして行われる：
アドレス  小さい２IDは１５０８により監視され、つまりＨＯＳＴによってこのアドレスへのアクセスが行われると、信号（ＡＣＣ−ＩＤ）がステートマシン（ＣＴＳ）へ送られる。同様に、ＢＯＯＴ−ＡＤＲが１５０９を介して監視され、信号ＡＣＣ−ＢＯＯＴがステートマシン（ＣＴＳ）へ送られる。
【０１７５】
ステートマシン（ＣＴＳ）は以下のように応答する：
−ＨＯＳＴがＢＯＯＴ−ＡＤＲへ書き込みを行うと、これはＢＯＯＴ−ＫＲのロードに作用する。
【０１７６】
−ＨＯＳＴがデータワード０（１５２）をＢＯＯＴ−ＡＤＲへ書き込むと、このことは比較器１５１０を介して確認され、コンポーネントの停止に作用する。小さい２IDのアドレスへＨＯＳＴが書き込みを行うと、アドレスがＲＥＭＯＶＥレジスタ（１５１１）へロードされる。そのアドレスはＩＤに対応しているので（ＥＣＲ−ＬＵＴ参照）、変更されたＫＲ／ＩＫＲのＩＤは１５１１内におかれる。すべてのＣＴへ、即座に実行するための命令ＲＥＭＯＶＥ＜ＩＤ＞が送られる（１５１３）。それに応じてＣＴは、対応するＩＤのＫＲ／ＩＫＲをそれらのＣＴＲないしはＬＵＴ２から消去する。ＫＲ／ＩＫＲの後続の呼び出しにあたり、ＣＴは強制的に新たなＫＲ／ＩＫＲをＥＣＲからロードしなければならない。
【０１７７】
図１７には、ＥＣＲをＩＲ／ＩＫＲからロードする際のＲＯＯＴ−ＣＴにおけるシーケンスが示されている。ＩＤが内部のＣＴＲ内に存在しなければ（図１の１７０１参照）、ＩＤはカウンタ１５０２へ書き込まれる（１７０３）。１５０２におけるアドレスを用いたＥＣＲのアクセスによって、ＫＲ／ＩＫＲのベースアドレスが供給される。これは１５０２へ書き込まれる（１７０４）。図２によるＬＯＡＤが行われる（１７０２）。この場合、データは上位のＣＴからではなくＥＣＲから読み出され（１７０５）、本来のＣＴＲへ書き込まれるだけでなく、下位のＣＴへも送られる（１７０６）。中間の階層平面におけるＣＴにおいて、図１の場合と同じようにしてトリガの変換が行われるが、ただし例外としてトリガベクトルとＩＤベクトルは図１４に従って処理しなければならない。また、ＫＲ／ＩＫＲは図２に従ってロードされるが、例外として、データワードは本来のＣＴＲに書き込まれるだけでなく（０２１０）、同時に下位のＣＴへも送られる。
【０１７８】
図１９にはＦＩＬＭＯの基本原理が示されている。ＦＩＬＭＯ（１９０１）は、読み出しアクセスおよび書き込みアクセスにあたり必ず始めから終わりへ向かってスキャンされる（１９０２）。ＦＩＬＭＯの最初のエントリが書き込まれ消去されると（１９０３）、読み出しポインタは消去されていない最初のエントリまでシフトされる（１９０４）。ＦＩＬＭＯの中間からエントリが書き込まれたとき（１９０５）、読み出しポインタは変わらずに保持され（１９０６）、それらのエントリに”ＮＯＰ”がマーキングされる（１９０７）。データがＦＩＬＭＯに書き込まれると（１９０８）、それが終端において最後のエントリの後ろに付けられる（１９０９）。読み出しポインタ（１９１０）は変えられずに保持される。
【０１７９】
当然ながら、ＬＵＴ１、ＬＵＴ２およびＣＴＲを有するメモリだけしか備えていないＣＴを形成することもできる。とはいえ、その制御は比較的煩雑である。その際にＣＴは、すでにＬＵＴ２とＣＴＲがＥＣＲ内に統合されているＲＯＯＴ−ＣＴと同じように構成されている。このやり方を理解するために、このＣＴの説明は不要である。
【０１８０】
ＣＴをデータ用のキャッシュシステムとして適用する場合、データをＣＴＲ内へ書き込むためのトリガが挿入される。この場合、データはＣＥＬからＣＴＲへ書き込まれる。このために必要な変更は一般的なものであり、ＦＩＬＭＯは完全に省略できる。データのキャッシュにあたり、データの一貫性という問題点が生じる。このことは、DE 42 21 278 A1 による方法を適用して、データおよびそれらのデータの有効性を個々の階層平面において識別できるようにすることで回避することができる。リード・モディファイ・ライト・サイクル（Read-Modify-Write-Cycle, ＲＭＷサイクル）を実行するためにデータが要求される場合、すべての階層平面におけるデータが付加的なエントリに基づきＣＴＲ／ＥＣＲ内で無効である（ＩＮＶＡＬＩＤ）と識別される。このためエントリに、データを利用するＫＲ／ＩＫＲの一義的なＩＤをエントリすることができる。データは、それらのデータを利用するＫＲ／ＩＫＲがデータを書き戻し（従来技術によるライト・バック方式を参照）それらのＩＤを消去してしまうまで、他のＩＤをもつＫＲ／ＩＫＲによって利用することができない。
【０１８１】
図２０には１つの実施例が示されている：
この場合、図２０ａにおいてＣＴ２００７がその上に位置するＣＴに対しデータを要求し、上位のＣＴはＲＯＯＴ−ＣＴ２００４にデータを要求する。データ要求とともに、要求を行うＫＲ／ＩＫＲ（２００１）のＩＤが伝送される。データ（２００２）は２００７へ送られる。それ以降の他のすべてのアクセスは拒絶される（２００３）。
【０１８２】
図２０ｂにおいてデータが書き戻され（２００５）、それ以降の他のアクセスが再び受け入れられる（２００６）。
【０１８３】
図２０ｃにおいて中間の階層のＣＴによりデータが要求され、データを所有し、それが２００７へ送られる。データを阻止するためのＩＤは、階層内のすべてのＣＴへ送られる（２００１）。図２０ｄにおけるデータの書き戻し（ライトバック）において、データは階層内のすべてのＣＴへ書き込まれ、ＩＤが消去される。
【０１８４】
図２１には、複数の介在ＣＴ（２１０４，２１０５，２１０６）を経由したＩＮＩＴＩＡＴＯＲ  ＣＴ（２１０１）とＴＡＲＧＥＴ  ＣＴ（２１０２）との通信、ならびにＧＥＴＣＴＳ／ＬＯＯＳＥＣＴＳ方式による介在平面を経由しないＴＡＲＧＥＴ  ＣＴ（２１０３）とのダイレクトな通信について描かれている。
【０１８５】
２１０１は２１０３へのコネクションを確立する。確立成功後、２１０１は２１０３から、確立の確認としてＧＲＡＮＴを受け取る。その後、２１０１は２１０４，２１０５，２１０６を介して、２１０２へのコネクションを確立する。２１０２へのコネクションは、２１０２に達したときにはじめて承認される（ＧＲＡＮＴ）。
【０１８６】
バスの１つが占有されていてコネクションを確立できなければ、ＲＥＪＥＣＴが２１０１へ送られ、２１０１はそのプロセスを中止する。つまり、２１０３へのコネクションも中止され、ＲＥＪＥＣＴが２１０３へ送られる。しかし２１０２がＧＲＡＮＴによってコネクションを承認すると、２１０１は２１０３と２１０２へＧＯ命令を送り、これによって同時に２１０３と２１０２へコネクション確立の成功と同期が確認される。このプロトコルによって、データまたは命令をデッドロックを生じさせずに同期させて伝送することができる。なぜならばＧＯによって、すべてのＴＡＲＧＥＴが命令を正しく受け取るようになるからである。
【０１８７】
図２２には、ＧＥＴＢＵＳ／ＬＯＯＳＥＢＵＳ方式によるＩｎｔｅｒ−ＣＴ通信の経過が示されている。図２１によるやり方ではそのつど上位におかれたＣＴが制御および優先順位づけの役割を担っているのに対し、ここでは制御はＩｎｔｅｒ−ＣＴバス（２２０１）によって引き継がれる。
【０１８８】
２１０３へのコネクションは、ＩＮＩＴＩＡＴＯＲ−ＣＴ（２１０１）がそのローカルなＩｎｔｅｒ−ＣＴバスを要求する（２２０２）ことによって確立される。バスが空いていれば（ＡＣＣＥＰＴ）要求が承認され、バスが占有されていれば（ＲＥＪＥＣＴ）要求が拒否される。その後、これは２１０２のアドレスをバスへ送る。アドレッシング方式に従いバスコントローラは、そのアドレスがローカルなバスアドレス外にあることを識別し、上位のＣＴ２１０４を介してそのＣＴのローカルなバスへのコネクションを確立する（２２０３）。
【０１８９】
２１０２のアドレスはそのアドレス範囲内にあるので、２１０６を介して２１０２のローカルバスへのコネクションが確立される（２２０４）。２１０１はこのとき、データ通信に必要とされるすべてのバスにおけるただ１つのバスマスタとなっているので、デッドロックの生じないスムーズな通信を確実に進行させることができる。それというのも、他のすべてのＣＴに対して通信チャネルが阻止されているからである。２１０２と２１０３もバスを利用することができない。その理由は、それらはＴＡＲＧＥＴ役として命令だけしか受け取ることができず、ＩＮＩＴＩＡＴＯＲ（２１０１）自体による要求に応答してデータを送ることしかできないからである。
【０１９０】
通信が終了するとただちに、２１０１からの信号によってバスの確立状態が解除される。２１０１がバス確立動作中に使用されているバスに当たれば、ＲＥＪＥＣＴが２１０１へ送られ、２１０１はそのバスシステムを再び解除し、あとの時点で新たに確立を試みる。複数のＣＴが同時に同じバスを要求したときには、上に位置するＣＴに対し高い優先順位が付けられる（２２０５）。このことにより、すでに多数の平面を経由して延びた長く進行しているバス確立動作が、まだ非常にローカルなバス確立動作によって打ち切られてしまうことが回避される。拡張されたプロトコルによればＲＥＪＥＣＴが発生したとき、高い優先順位の付けられたバス確立動作により必要とされるバスだけを解除することができる。これによりパフォーマンスを格段に高めることができる。なぜならば、バスすべてをあとの時点で新たに確立しなくてもよいからである。
【０１９１】
図２３には、図２２によるやり方のためのＩｎｔｅｒ−ＣＴバスの確立について描かれている。ＣＴ２３０１〜２３０４は、それらのインタフェース（２３０８〜２３１１）を介して上位のＣＴ２３０５（インタフェース２３０７）といっしょにＩｎｔｅｒ−ＣＴバス２３１２と接続されている。Ｉｔｅｒ−ＣＴバスの接続はラウンドロビン・アービタによって行われ、これは２３０８〜２３１１に対し同じ優先順位を与えるが、２３０７に対してはそれよりも高い優先順位を与え、これは各バスをまとめるためのマルチプレクサを制御する。アービタには、制御信号（たとえば確立／解除、ＡＣＣＥＰＴ，ＲＥＪＥＣＴ．．．）を評価するステートマシンが対応づけられている。
【０１９２】
図２４には、１次元のＣＴツリーをもつアドレス方式の構造が示されている。ここでは正方形によってＣＴがシンボリックに表されており、その際、ＣＴのアドレスが書き込まれている。この場合、−は重要でないアドレスビットを表し、それらは評価されない。重要なアドレスビットには２進数の０か１が与えられており、何らかの任意のアドレスビットについては＊がおかれている。なお、この図式を多次元のツリーに投影して同様に適用できることも容易に理解することができる。その際、与えられたアドレスはそれぞれ軸の１つを表していて、換言すれば、軸ごとに相応の別個のアドレス系が存在するのである。
【０１９３】
図２４ａには、ＣＴ０００１からのアドレッシングについて描かれている。この場合、相対アドレス−１が示されている。計算  −１＋１＝００（「相対移動」＋「目下の平面上でのＩＮＩＴＩＡＴＯＲ−ＣＴのアドレス」）により、同じローカルバスに接続されているＣＴ  ００００を計算することができる。
【０１９４】
図２４ｂによれば、ＣＴ  ００１０は相対アドレス＋１０を有している。計算１０＋０＝１０（「相対移動」＋「目下の平面上でのＩＮＩＴＩＡＴＯＲ−ＣＴのアドレス」）により、桁上げ１が生じる。なぜならば、最下位のローカルバスのアドレス領域はちょうど１ｂｉｔ幅だからである。これにより、次に高いバスが選択される。そのバスのアドレス計算にあたり１０＋１０＝１００（「相対移動」＋「目下の平面でのＩＮＩＴＩＡＴＯＲ−ＣＴのアドレス」）によって新たに桁上げが発生する。なぜならば、そのアドレス領域は最下位バスのアドレス領域よりもちょうど１つだけ大きい２ｂｉｔだからである。次に高い平面では、計算１０＋０１０＝０１００によっても桁上げは発生せず、したがって（左から）３番目のビットにより次に低い平面との経路１＊＊がアドレッシングされ、（左から）２番目のビットによりさらに次の最下位平面の経路１０＊がアドレッシングされ、ついで最後のビットによりＴＡＲＧＥＴ−ＣＴが選択される。
【０１９５】
図２４ｃには、２つの平面を介した正の方向でのやり方が示されており、図２４ｄには、負のオーバーフローをもつ負の方向での３つの平面を介したやり方が示されている。
【０１９６】
図２５には、２次元のＣＴツリーの構造が示されている。最下位平面（２５０２）には、ＣＴ（２５０１）が２次元で配置されて設けられている。次元のアドレスは、個々のＣＴにおいてｘ／ｙで与えられている。２５０２の上位には、次に高い平面（２５０４）がおかれている。それらのＣＴ（２５０３）はそれぞれ、平面２５０２における４つのＣＴのグループを制御する。２５０４におけるＣＴのアドレス空間は１ｂｉｔだけ幅が広く、ここでは＊によって平面２５０２のアドレスビットが表されているが、それらは２５０４におけるＣＴの選択にとって重要なものではない。さらに２５０４の上位には、ＲＯＯＴ−ＣＴ２５０５が設けられている。それらのアドレスもやはり１ｂｉｔだけ幅が広く、＊の意味も同じである。
【０１９７】
図２６には、マイクロコントローラによるインプリメンテーションの場合のガーベージコレクタのチェーンについて描かれている。この場合、すべてのＫＲはヘッダエントリ（ｇａｒｂａｇｅ−ｐｒｅｖｉｏｕｓ／ｇａｒｂａｇｅ−ｎｅｘｔ）を介して互いにチェーン結合されている。リストによりガーベージコレクタを実行する際、エントリが（＋１）だけ上昇することによりＫＲのエージがキャッシュ統計（２６０２）のために記録される。ガーベージコレクタは、ＫＲがＦＩＬＭＯリストにまだ連なっているか否かを表すエントリＫＲ統計（２６０１）を留意する。その場合にはＧＣによってＫＲを消去してはならず、その理由はそれがまだコンフィグレーションされていないＫＷを有しているからである。択一的にこのテストを、ＦＩＬＭＯ−ｎｅｘｔおよびＦＩＬＭＯ−ｐｒｅｖｉｏｕｓについて実行してもよい。
【０１９８】
図２７には、ＦＩＬＭＯリストのチェーンについて描かれている。この場合、チェーンをガーベージリスト（図２６）とは完全に異なるものとすることができる。各ＫＲは、ＦＩＬＭＯ−ｐｒｅｖｉｏｕｓとＦＩＬＭＯ−ｎｅｘｔを介してチェーン結合されている。ＫＲ統計（２７０１）のエントリは、個々のＫＲ内においてまだコンフィグレーションされていないそのつど最初のＫＷを指している。ＦＩＬＭＯの実行は、最初のＩＤにおいてＫＲがスタートするように構成されている。実行後、実行されていないＫＷの位置が２７０１に従って書き込まれる。ＫＲが完全に実行されてしまっているならば、チェーン結合されたＦＩＬＭＯリストからそのＫＲが除去されるが、メモリ内には残される。その後、ＦＩＬＭＯリストを介して次のＫＲへのジャンプが行われ、これも同様に処理される。
【０１９９】
図２８には、マイクロコントローラ制御におけるＫＲの構造が描かれている。まず最初にジャンプ命令がおかれており、これによってＫＲのヘッダ（２８０１）の後ろへのジャンプが行われる。各ＫＷにはＦＩＬＭＯビット（２８０２）が割り当てられている。この場合、値１（２８０３）によって、ＫＷがＣＥＬにより受け入れられ（ＡＣＣＥＰＴ）、次のスキャン時にはもはや実行されないことが表されている。値０（２８０４）はＲＥＪＥＣＴを表し、そのＫＷは次のスキャン時に新たに実行されなければならない。オプションとしてのＫＲ統計（２７０１）は、０の付された最初のＫＷを指している。ＰＵＳＨＲＥＴ（２８０５）がＲＥＪＥＣＴを受け取ると、ＫＲの処理はそこで中止され、次のスキャン時に最初のＫＷにおいてあるいは２７０１の指すロケーションにおいて新たに行われる。そうでなければ、ＫＲはその終端で２８０６において規定どおりに終了する。
【０２００】
図２９には、ＦＩＬＭＯスキャン前またはＫＲスタート前のＣＥＬのステータス情報を保護するための回路が示されている。このステータス情報は、ＣＥＬ（２９０１）からレジスタ（２９０２）へ到達する。ＦＩＬＭＯのスキャン前またはＫＲのスタート前、ＣＴはイネーブル信号（２９０３）を２９０２へ送る。それに応じてステータス情報が引き継がれ、ＣＴへ転送される（２９０４）。２９０４は、２９０３からの次の発信までそのまま一定に維持される。
【０２０１】
用語の定義
ＡＣＣＥＰＴ
アドレッシングされたＣＥＬがコンフィグレーション可能な状態にあり送られたＫＷを受け入れることを表す
ブロック命令（たとえばＢＬＯＣＫ−ＭＯＶＥ）
複数のデータ（ブロック）をメモリ内またはメモリと周辺装置の間でシフトさせる命令。この場合、シフトすべきデータの出所アドレス、そのデータの宛先アドレス、ならびにデータブロックの長さが表される。
【０２０２】
ブロードキャスト
多数の受信側への情報の送信
データ受信側
ＣＥＬの結果を後続処理するユニット
データ送信側
ＣＥＬのためのデータをオペランドとして利用できるユニット
データワード
１つのデータワードは任意の長さのビット列から成る。このビット列は、装置のための１つの処理単位を成している。１つのデータワードにおいて、プロセッサ等のコンポーネントのための命令も純粋なデータもコーディングすることができる。
【０２０３】
デッドロック
対向するブロックに起因していかなるデータ処理も不可能な状態
ＤＦＰ
DE 44 16 881 によるデータフロープロセッサ
ＤＰＧＡ
ダイナミックにコンフィグレーション可能なＦＰＧＡ。従来の技術。
【０２０４】
エレメント
あらゆる種類の完結したユニットに対する総称であって、部品として電子コンポーネント内で使用できるもの。つまりエレメントとは：
−あらゆる種類のコンフィグレーション可能なセル
−クラスタ
−ＲＡＭブロック
−ロジック
−算術ユニット
−レジスタ
−マルチプレクサ
−チップのＩ／Ｏピン
結果
ある結果は、使用に適した何らかのやり方でハードウェアにより評価することができ、その評価に対する反応として条件付けられたアクションをトリガさせることができる。
【０２０５】
したがって結果とはたとえば：
−計算装置のクロックサイクル
−内部または外部の割り込み信号
−コンポーネント内部における他のエレメントからのトリガ信号
−データストリームおよび／または命令ストリームとある値との比較
−インプット／アウトプットの結果
−カウンタのシーケンス、オーバーフロー、新たなセット等
−比較の評価
ＦＩＦＯ
従来技術によるファーストイン・ファーストアウト・メモリ
ＦＩＬＭＯ
リニアにデータの読み出される変形ＦＩＦＯ。メモリ始端への読み出しポインタの制限はない。
【０２０６】
ＦＰＧＡ
プログラミング可能なロジックコンポーネント。従来技術。
【０２０７】
Ｆ−ＰＬＵＲＥＧ
ＣＥＬの機能のセットされるレジスタ。ワン・ショットモード（OneShot-Mode）、スリープ・モード（Sleeo-Mode）もセットされる。
【０２０８】
フラグメンテーション
メモリが細分化され、たいていは小さくしたがって役に立たない多数のメモリ領域になること
ガーベージコレクタ
メモリ管理ユニット。フラグメンテーションを回避する。
【０２０９】
Ｈレベル
利用される技術に応じて論理値１のレベル
ＨＯＳＴ
上位のコンピュータのコンポーネントまたはアセンブリ
ＩＤＬＥサイクル
ステートマシンが処理を実行しないサイクル。ステートマシンの基本状態。
【０２１０】
Ｉｎｔｅｒ−ＣＴバス
１つの平面における複数のＣＴと上位におかれたＣＴ（ＣＴグループ）間のバスシステム
ＩＮＩＴＩＡＴＯＲ
Ｉｎｔｅｒ−ＣＴバスへのアクセスをスタートさせるＣＴ
ポインタ
アドレスまたはデータワードへのポインタ
コンフィグレーション可能なエレメント（ＫＥ）
コンフィグレーション可能なエレメントは、専用の機能のためのコンフィグレーションワードにより形成可能なロジックコンポーネントのユニットを成している。したがってコンフィグレーション可能なエレメントは、あらゆる種類のＲＡＭセル、マルチプレクサ、算術論理ユニット、レジスタ、ならびにあらゆる種類の内部および外部のネットワーク仕様等である。
【０２１１】
コンフィグレーション可能なセル（ＣＥＬ）
ロジックセルを参照
コンフィグレーション
ロジックユニット、（ＦＰＧＡ）セルまたはＣＥＬの機能およびネットワークの形成（再コンフィグレーションを参照）。
【０２１２】
コンフィグレーションデータ
任意の量のコンフィグレーションワード
コンフィグレーションルーチン
複数のコンフィグレーションワードが１つのアルゴリズムにまとめられたもの  コンフィグレーションメモリ
コンフィグレーションメモリには１つまたは複数のコンフィグレーションワードが含まれている。
【０２１３】
コンフィグレーションワード（ＫＷ）は任意の長さのビット列から成る。このビット列は、コンフィグレーションすべきエレメントに対する有効なセッティングを成しており、したがって機能を果たす１つの単位が生じる。
【０２１４】
ロードロジック
ＣＥＬをコンフィグレーションおよび再コンフィグレーションｓるためのユニット。特別にその役割に整合されたマイクロコントローラによって構成されている。
【０２１５】
ロジックセル
ＤＦＰ、ＦＰＧＡ、ＤＰＧＡにおいて用いられるコンフィグレーション可能なセルであって、コンフィグレーションに従い簡単な論理的または算術的役割で満たされる。
【０２１６】
ルックアップテーブル
従来技術。データの変換方法。
【０２１７】
ＬＵＴ１
トリガをＩＤに変換するルックアップテーブルであって、トリガが有効なＩＤに割り当てられているか否かが判定される。
【０２１８】
ＬＵＴ２
ＩＤをローカルメモリ内の対応するＫＲのアドレスに変換するルックアップテーブルであって、ＫＲがローカルメモリ内に存在しているか否かが判定される。
【０２１９】
Ｌレベル
利用される技術に応じて論理値０レベル
マスク
複数の信号のうち有効な信号を与えるビットの組み合わせ
ＲＥＣＯＮＦＩＧトリガ
再コンフィグレーション可能な状態へのＣＥＬのセット
ＲＥＪＥＣＴ
アドレッシングされたＣＥＬがコンフィグレーション可能でない状態にあり、送られたＫＷを受け入れられないことを表す信号
ＲＥＭＯＶＥ＜ＩＤ＞
１．ＩＤにより参照されたＫＲを除去するためのＫＲ内の命令
２．ＩＤにより参照されたＫＲを消去するため、上位のＣＴから別個のインタフェースまたはハンドシェーキングを介して下位のＣＴへ送られる命令
ＲＥＳＥＴ
コンポーネントまたはコンピュータシステム全体を規定された基本状態へリセットすること
ＲＯＯＴ−ＣＴ
外部のコンフィグレーションメモリへのダイレクトなアクセスを行う最高階層平面のＣＴ
ラウンドロビン・アービタ
環状に進行し、最後に調停された信号に常に最下位優先順位を割り当てるアービタ。
【０２２０】
同期信号
コンフィグレーション可能なエレメントまたは算術ユニットにより生成され、データ処理の制御および同期合わせのため別のコンフィグレーション可能なエレメントまたは算術ユニットへ転送されるステータス信号。この同期信号を時間的に遅らせて（記憶して）、同じコンフィグレーション可能なエレメントまたは算術ユニットへ戻すこともできる。
【０２２１】
ＴＡＲＧＥＴ
Ｉｎｔｅｒ−ＣＴバスへのアクセスの目標となるＣＴ。
【０２２２】
トリガ
同期信号と同義語
再コンフィグレーション
任意の残量のＣＥＬが本来の機能を継続している間に任意の量のＣＥＬを新たにコンフィグレーションすること（コンフィグレーション参照）。
【０２２３】
チェーンリスト
ポインタによってつなぎ合わせられた従来技術によるデータ構造
セル
コンフィグレーション可能なエレメントと同義語。
【０２２４】
ステートマシン
様々な状態をとり得るロジック。各状態間の移行は、種々の入力パラメータに依存する。このマシンは複雑な機能を制御するために用いられ、従来技術に相応する。
【図面の簡単な説明】
【図１】  ルックアップテーブル内におけるアドレッシング方法を示す図である。
【図２】  ステートマシンの命令処理と機能を示す図である。
【図３】  ステートマシンの命令処理と機能を示す図である。
【図４】  ステートマシンの命令処理と機能を示す図である。
【図５】  ステートマシンの命令処理と機能を示す図である。
【図６】  ステートマシンの命令処理と機能を示す図である。
【図７】  ステートマシンの命令処理と機能を示す図である。
【図８】  ＳＣＲＲ−ＡＲＢの構造を示す図である。
【図９】  ＬＵＴ１＆ＬＵＴ２の構造を示す図である。
【図１０】  ポインタ演算装置とＣＴＲの構造を示す図である。
【図１１】  ＦＩＬＭＯの構造を示す図である。
【図１２】  図１２のａはＣＴの階層構造を示す図であり、図１２のｂは各ＣＴ間におけるトリガの送信を示す図であり、図１２ｃ，ｄは送信方法を示す図である。
【図１３】  複数のＩＫＲによるＫＲの呼び出しを示す図である。
【図１４】  ＲＯＯＴ−ＣＴにおけるＬＵＴ１の構造を示す図である。
【図１５】  ＲＯＯＴ−ＣＴにおけるＨＯＳＴコントロールの構造を示す図である。
【図１６】  ＬＵＴとＥＣＲのコンセプトを示す図である。
【図１７】  中間階層平面ないしはＲＯＯＴ−ＣＴにおけるＣＴのシーケンスコントロールを示す図である。
【図１８】  ２次元アレイのコンフィグレーションにおけるデッドロックの問題点を示す図である。
【図１９】  ＦＩＬＭＯコンセプトを示す図である。
【図２０】  Ｉｎｔｅｒ−ＣＴコミュニケーションの基本原理を示す図である。
【図２１】  ＧＥＴＣＴＳ方式によるＩｎｔｅｒ−ＣＴコミュニケーションの実装例を示す図である。
【図２２】  ＧＥＴＢＵＳ方式によるＩｎｔｅｒ−ＣＴコミュニケーションの実装例を示す図である。
【図２３】  Ｉｔｅｒ−ＣＴバスのバス構造を示す図である。
【図２４】  ＣＴ階層内におけるアドレッシングを示す図である。
【図２５】  ガーベージリストである。
【図２６】  ＫＲ内のＦＩＬＭＯ機能を示す図である。
【図２７】  ＦＩＬＭＯリストである。
【図２８】  ＫＲまたはＦＩＬＭＯを実行する前の状態の格納について示す図である。
【図２９】  ＦＩＬＭＯスキャン前またはＫＲスタート前のＣＥＬのステータス情報を保護するための回路を示す図である。
【図１】
0004338308.tif 000008
【図２】
0004338308.tif 000009
【図３】
0004338308.tif 000010
【図４】
0004338308.tif 000011
【図５】
0004338308.tif 000012
【図６】
0004338308.tif 000013
【図７】
0004338308.tif 000014
【図８】
0004338308.tif 000015
【図９】
0004338308.tif 000016
【図１０】
0004338308.tif 000017
【図１１】
0004338308.tif 000018
【図１２ａ】
0004338308.tif 000019
【図１２ｂ】
0004338308.tif 000020
【図１２ｃ】
0004338308.tif 000021
【図１２ｄ】
0004338308.tif 000022
【図１３】
0004338308.tif 000023
【図１４】
0004338308.tif 000024
【図１５】
0004338308.tif 000025
【図１６】
0004338308.tif 000026
【図１７】
0004338308.tif 000027
【図１８】
0004338308.tif 000028
【図１９】
0004338308.tif 000029
【図２０ａ】
0004338308.tif 000030
【図２０ｂ】
0004338308.tif 000031
【図２０ｃ】
0004338308.tif 000032
【図２０ｄ】
0004338308.tif 000033
【図２１】
0004338308.tif 000034
【図２２】
0004338308.tif 000035
【図２３】
0004338308.tif 000036
【図２４ａ】
0004338308.tif 000037
【図２４ｂ】
0004338308.tif 000038
【図２４ｃ】
0004338308.tif 000039
【図２４ｄ】
0004338308.tif 000040
【図２５】
0004338308.tif 000041
【図２６】
0004338308.tif 000042
【図２７】
0004338308.tif 000043
【図２８】
0004338308.tif 000044
【図２９】
0004338308.tif 000045