(57)【要約】  異種アレイは、処理素子のクラスタを含む。クラスタは、直接接続と各種汎用ルーティングネットワークによってリンクされるＡＬＵとマルチプレクサの組み合わせを含む。マルチプレクサは、同じクラスタのＡＬＵまたは他のクラスタのＡＬＵによって制御され、専用ルーティングネットワークを介して制御される。アレイ上に構成されるアプリケーションの構成要素は、あるタイプまたは他のタイプの処理素子に構成要素を実装する相対的な効率性、および、処理素子タイプの相対的利用可能性によって決定されるように、マルチプレクサまたはＡＬＵのいずれかに選択的に実装される。マルチプレクサ制御信号は、ＡＬＵステータス信号の組み合わせから生成され、任意で、異なるクラスタ内のマルチプレクサを制御するように転送される。
2008541636.tif 000002
【特許請求の範囲】
【請求項１】
複数のルーティングネットワーク入力と複数のルーティングネットワーク出力とを有する第１のネットワークと、
複数のセレクタと複数のセレクタリンクを有し、各セレクタリンクが前記複数のセレクタのうちの２つを結合する第２のネットワークと、
それぞれが前記第１のネットワークと前記第２のネットワークに接続される複数のクラスタと、
を備える再構成可能装置において、
前記第２のネットワークが、前記複数のクラスタのうちの１つから信号を受信し、前記複数のセレクタのうちの１つまたは複数を用いて前記信号を前記複数のクラスタのうちの１つに転送するように構成される再構成可能装置。
【請求項２】
前記第２のネットワークがさらに複数の第１のルーティング入力と複数のルーティング出力を備え、前記複数のセレクタがそれぞれ第１のセレクタ入力、第２のセレクタ入力、およびセレクタ出力を備え、前記複数のセレクタのうちの１つの第１のセレクタ入力が前記複数の第１のルーティング入力のうちの１つに接続され、前記複数のセレクタのうちの１つのセレクタ出力が前記複数のルーティング出力のうちの１つに接続され、前記複数のセレクタリンクがそれぞれ前記複数のセレクタのうちの１つのセレクタ出力を前記複数のセレクタのうちの別のセレクタのセレクタ入力に接続する、請求項１の再構成可能装置。
【請求項３】
前記複数のクラスタのそれぞれが、前記第２のネットワークの複数のルーティング出力のうちの１つに接続されるクラスタ入力と、前記第２のネットワークの複数の第１のルーティング入力に接続されるクラスタ出力とをさらに備える、請求項２の再構成可能装置。
【請求項４】
各クラスタは演算論理装置（ＡＬＵ）と１次マルチプレクサとを備え、
前記ＡＬＵは、
それぞれが前記複数のルーティングネットワーク出力のうちの１つに接続される第１および第２のデータ入力と、前記複数のルーティングネットワーク入力のうちの１つに接続されるデータ出力と、
前記クラスタ出力に接続されるＡＬＵ選択出力と、を有し、
前記ＡＬＵは前記ＡＬＵ選択出力にセレクタ選択信号を提供するように構成され、
前記１次マルチプレクサは、
前記複数のルーティングネットワーク出力のうちの１つに接続される第３および第４のデータ入力と、前記複数のルーティングネットワーク入力のうちの１つに接続される第２のデータ出力と、
前記クラスタ入力に接続されるマルチプレクサ選択入力と、を有し、
前記１次マルチプレクサは、前記マルチプレクサ選択入力に提供される選択信号に応じて、前記第３および第４のデータ入力のうちの１つを前記第２のデータ出力に接続するように構成される、請求項３の再構成可能装置。
【請求項５】
前記ＡＬＵ選択出力は、前記クラスタ出力、前記複数のセレクタの第１のセレクタ、前記クラスタに対応する前記第１のセレクタ、および前記クラスタ入力を介して前記１次マルチプレクサの前記マルチプレクサ選択入力に接続される、請求項４の再構成可能装置。
【請求項６】
前記ＡＬＵ選択出力は、前記クラスタ出力、前記複数のセレクタの第１のセレクタ、前記第１のセレクタがクラスタに対応する、セレクタリンク、複数のセレクタの第２のセレクタ、前記第２のセレクタが第２のクラスタに対応する、および前記第２のクラスタに属するクラスタ入力を介して、前記第２のクラスタに属する第２の１次マルチプレクサの前記マルチプレクサ選択入力に接続される、請求項４の再構成可能装置。
【請求項７】
前記複数のクラスタのそれぞれは、前記複数のルーティングネットワーク出力のうちの１つに接続される第２のクラスタ入力と、前記複数のルーティングネットワーク入力のうちの１つに接続される第２のクラスタ出力とをさらに備える、請求項２の再構成可能装置。
【請求項８】
前記第２のネットワークは、それぞれが前記第１のネットワークのルーティングネットワーク出力のうちの１つに接続される複数の第２のルーティング入力をさらに備え、前記複数のセレクタはそれぞれ第３のセレクタ入力をさらに備え、前記複数の第２のルーティング入力のそれぞれが前記複数のセレクタのうちの１つの前記第３のセレクタ入力に接続される、請求項２の再構成可能装置。
【請求項９】
前記複数のセレクタは前記複数のクラスタに対応する複数のマルチプレクサをさらに備え、各マルチプレクサは選択信号源に接続される選択信号入力をさらに備え、前記マルチプレクサは、前記選択信号入力で提供される選択信号に応じて、前記第１または第２のセレクタ入力のうちの１つをセレクタ出力に接続するように構成される、請求項２の再構成可能装置。
【請求項１０】
前記複数のルーティング出力がそれぞれ対応する処理素子に接続される、請求項２の再構成可能装置。
【請求項１１】
前記複数のルーティング出力がそれぞれ、対応する処理素子の対応する入力に接続される、請求項１０の再構成可能装置。
【請求項１２】
前記複数のルーティング出力がそれぞれ、１次マルチプレクサの前記マルチプレクサ選択入力に接続される、請求項１１の再構成可能装置。
【請求項１３】
前記ルーティング出力に接続される選択可能なインバータをさらに備え、前記選択可能なインバータがインバータイネーブル信号の状態に応じて、ルーティング出力上の信号を反転させる、あるいは反転させない、請求項２の再構成可能装置。
【請求項１４】
前記セレクタリンクに接続される選択可能なインバータをさらに備え、前記選択可能なインバータがインバータイネーブル信号の状態に応じて、前記セレクタリンク上の信号を反転させる、あるいは反転させない、請求項２の再構成可能装置。
【請求項１５】
前記第１のネットワークは第１のビット幅を備え、前記第２のネットワークは第１のビット幅と異なる第２のビット幅を備える、請求項１の再構成可能装置。
【請求項１６】
複数のキャリールーティングネットワークをさらに備え、各クラスタが前記複数のキャリールーティングネットワークのうちの１つにそれぞれ接続されるキャリー入力およびキャリー出力をさらに備える、請求項１の再構成可能装置。
【請求項１７】
前記第２のネットワークは選択信号を転送する、請求項１の再構成可能装置。
【請求項１８】
前記複数のセレクタリンクはチェーン情報で複数のセレクタに接続する、請求項１の再構成可能装置。
【請求項１９】
前記複数のセレクタリンクはツリー情報で前記複数のクラスタを接続するように構成される、請求項１の再構成可能装置。
【請求項２０】
前記第１のネットワークは汎用ルーティングネットワークを備える、請求項１の再構成可能装置。
【請求項２１】
前記第２のネットワークは専用ルーティングネットワークを備える、請求項１の再構成可能装置。
【請求項２２】
第１の処理素子タイプの複数の第１の処理素子と
第２の処理素子タイプの複数の第２の処理素子と、
前記複数の第１および第２の処理素子のそれぞれに接続され、前記複数の第１または第２の処理素子のいずれかの素子からの信号を、前記複数の第１または第２の処理素子のうちの別の素子に転送するように構成される汎用ルーティングネットワークと、
前記複数の第１の処理素子に接続され、前記複数の第１の処理素子が前記第１の処理素子タイプの単独の処理素子と同じ論理関数を有し、前記複数の第１の処理素子の幅に対応する総データ経路幅を有するように、データ経路を横断する幅で、前記複数の第１の処理素子をカスケード接続するように構成される第１の専用ルーティングネットワークと、
前記複数の第２の処理素子に接続され、前記複数の第２の処理素子が前記第２の処理素子タイプの単独の処理素子と同じ論理関数を有し、複数の第２の処理素子の幅に対応する総データ経路幅を有するように、データ経路を横断する幅で、前記複数の第２の処理素子をカスケード接続するように構成される第２の専用ルーティングネットワークと、
を備える再構成可能装置。
【請求項２３】
前記第１の処理素子タイプはＡＬＵを備え、前記第２の処理素子タイプはマルチプレクサを備え、前記第１の専用ルーティングネットワークはキャリーネットワークを備え、前記第２の専用ルーティングネットワークは選択信号ネットワークを備える、請求項２２の再構成可能装置。
【請求項２４】
複数の処理素子と、
第１のビット幅と、前記複数の処理素子のうちの第１の処理素子に接続される第１の処理素子接続とを有する第１のルーティングネットワークと、
前記第１のビット幅より狭い第２のビット幅と、前記複数の処理素子のうちの第２の処理素子に接続される第２の処理素子接続とを有する第２のルーティングネットワークと
前記第１のルーティングネットワークに接続される第１のビット幅の入力と、前記第２のルーティングネットワークに接続される第２のビット幅の出力とを有するプログラム可能セレクタと、
を備える再構成可能装置であって、
前記プログラム可能セレクタは、入力において第１のビット幅の入力を前記第１のルーティングネットワークから受信し、出力において第２のビット幅の出力信号を前記第２のルーティングネットワークに提供するように構成され、前記出力信号は１または２ビット以上の前記入力信号を有する再構成可能装置。
【請求項２５】
前記プログラム可能セレクタは、入力の複数ビットのうちの任意の１つが出力のビットに提供されるようにプログラム可能である、請求項２４の再構成可能装置。
【請求項２６】
前記プログラム可能セレクタは狭化セレクタを備える、請求項２４の再構成可能装置。
【請求項２７】
前記狭化セレクタは、入力のビットのサブセットを選択し、ビットのサブセットを出力に提供する、請求項２６の再構成可能装置。
【請求項２８】
前記狭化セレクタは、出力の各ビットが入力からの任意のビットを受け取れるようにプログラム可能である、請求項２６の再構成可能装置。
【請求項２９】
前記プログラム可能セレクタはデマージセレクタを備える、請求項２４の再構成可能装置。
【請求項３０】
前記デマージセレクタは第２の出力をさらに備え、前記デマージセレクタは入力のビットの第１のサブセットを選択し、ビットの第１のサブセットを出力に提供し、入力のビットの第２のサブセットを選択し、ビットの第２のサブセットを第２の出力に提供する、請求項２９の再構成可能装置。
【請求項３１】
前記第１のサブセットと前記第２のサブセットは独立している、請求項３０の再構成可能装置。
【請求項３２】
前記デマージセレクタは出力および第２の出力の各ビットが入力からの任意のビットを受け取れるようにプログラム可能である、請求項３０の再構成可能装置。
【請求項３３】
前記プログラム可能セレクタはセレクタ入力をさらに備え、前記プログラム可能セレクタは選択信号を用いてプログラムされる、請求項２４の再構成可能装置。
【請求項３４】
前記第１のルーティングネットワークは汎用ルーティングネットワークを備え、前記第２のルーティングネットワークは専用ルーティングネットワークを備える、請求項２４の再構成可能装置。
【請求項３５】
複数の処理素子と、
第１のビット幅と、前記複数の処理素子のうちの第１の処理素子に接続される第１の処理素子接続とを有する第１のルーティングネットワークと、
前記第１のビット幅より狭い第２のビット幅と、前記複数の処理素子のうちの第２の処理素子に接続される第２の処理素子接続とを有する第２のルーティングネットワークと、
前記第１のルーティングネットワークに接続される前記第１のビット幅の入力と、前記第２のルーティングネットワークに接続される前記第２のビット幅の出力とを有するプログラム可能セレクタと、
を備える再構成可能装置であって、
前記プログラム可能セレクタは、入力において第１のビット幅の入力を第１のルーティングネットワークから受信し、出力において第２のビット幅の出力信号を第２のルーティングネットワークに提供するように構成され、出力信号は１または２ビット以上の入力信号を有する再構成可能装置。
【請求項３６】
前記プログラム可能セレクタは入力のビットが出力の複数のビットのうちの１つに提供されるようにプログラム可能である、請求項３５の再構成可能装置。
【請求項３７】
前記プログラム可能セレクタは拡張セレクタを備える、請求項３５の再構成可能装置。
【請求項３８】
前記拡張セレクタは、入力の１つまたは複数のビットに出力のビットのサブセットを提供する、請求項３７の再構成可能装置。
【請求項３９】
前記拡張セレクタは、入力の各ビットが出力の任意のビットに提供できるようにプログラム可能である、請求項３７の再構成可能装置。
【請求項４０】
前記プログラム可能セレクタはマージセレクタを備える、請求項３５の再構成可能装置。
【請求項４１】
前記マージセレクタは第２の入力をさらに備え、前記マージセレクタは１または２ビット以上の入力を選択し、１または２ビット以上の入力を出力のビットの第１のサブセットに提供し、１または２ビット以上の第２の入力を選択し、１または２ビット以上の第２の入力を出力のビットの第２のサブセットに提供する、請求項４０の再構成可能装置。
【請求項４２】
前記第１のサブセットと前記第２のサブセットは独立している、請求項４１の再構成可能装置。
【請求項４３】
前記マージセレクタが、入力および第２の入力の各ビットが出力の任意のビットに提供されるようにプログラム可能である、請求項４１の再構成可能装置。
【請求項４４】
前記プログラム可能セレクタがさらにセレクタ入力を備え、前記プログラム可能セレクタが選択信号を用いてプログラムされる、請求項３５の再構成可能装置。
【請求項４５】
前記プログラム可能セレクタが、入力のビットを受信しない出力のビットに関してデフォルト値を選択するようにプログラム可能である、請求項３５の再構成可能装置。
【請求項４６】
前記第１のルーティングネットワークが専用ルーティングネットワークを備え、前記第２のルーティングネットワークが汎用ルーティングネットワークを備える、請求項３５の再構成可能装置。
【請求項４７】
再構成可能装置内の第１の位置において、マージセレクタで、第１のビット幅を総計する合計ビット幅を有する複数の信号を受信すること、
前記複数の信号を、前記マージセレクタを用いて少なくとも第１のビット幅のビット幅を有する複合信号にマージすること、
少なくとも第１のビット幅のビット幅を有するルーティングネットワーク上で、前記再構成可能装置内の第２の位置に前記複合信号を転送すること、
再構成可能装置の第２の位置において、デマージセレクタで、前記複合信号を受信すること、および
前記複合信号を前記複数の信号にデマージすること、
を備える再構成可能装置を介して複数の信号を転送する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、再構成可能計算装置に関する。特に、本発明は、アプリケーションの複数の側面を実行することのできる複数の配列要素タイプを有する異種アレイに関する。
【０００２】
フィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）、プロセッサアレイ、および再構成可能演算アレイ（「ＲＡＡ」）などの再構成可能装置は通常、多数の処理素子と、それらを一緒に接続する相互接続構成とを含む。この相互接続は一般的に汎用ルーティングネットワークの形状を取るが、他のより限定的な形状の相互接続が採用される場合がある。相互接続は典型的には、１つまたは複数のタイプのルーティング素子を含む。
【０００３】
ルーティング素子は、ある処理素子から別の処理素子へと相互接続を横断する信号を転送するのに使用される装置である。ルーティング素子は、構成プロセスから直接的または間接的に得られ、実行時データに依存しない信号である構成信号によってのみ制御可能である。ルーティング素子の例は、通過トランジスタ、トライステートバッファ、および統計的に構成されるマルチプレクサ（すなわち、アレイの構成によって制御される選択入力を有するマルチプレクサ）などだが、ネットワークの構造にかかわらず、ネットワーク入力からネットワーク出力へデータを伝播するという機能は変わらない。
【０００４】
処理素子は１つまたは複数のデータ入力を有し、１つまたは複数のデータ出力を計算する。各データ出力は、１つまたは複数の入力値に依存することがある関数である。処理素子は、他の処理素子から受信したデータ信号、または構成信号、あるいはその両方によって制御可能である。処理素子の例は、加算器、乗算器、ＦＰＧＡのようなルックアップテーブル（ＬＵＴ）、およびデータ入力に接続可能な選択信号を有するマルチプレクサなどである。処理素子はレジスタを含むことができるので、出力はそれより先の時点の入力の一部または全部の値の関数である。
【０００５】
汎用ルーティングネットワークは、複数の入力端子と複数の出力端子（および、おそらくは入力端子または出力端子のいずれかとして構成可能な若干の双方向端子も可能）有し、任意の入力端子と任意の出力端子間の接続を形成するように構成することができる。汎用ルーティングネットワークは、同一のビット幅の値を保持する。構成される際、汎用ルーティングネットワークは複数の個々の接続を形成し、各接続はネットワーク入力を１つまたは複数のネットワーク出力に接続し、各ネットワーク出力は最大限で１つのネットワーク入力に接続される。汎用ルーティングネットワークは、任意の２つのネットワーク入力Ａ、Ｃと任意の２つのネットワーク出力Ｂ、Ｄ間に任意の２つの接続（Ａ→Ｂ）、（Ｃ→Ｄ）を同時に形成することができ、Ｂ≠Ｄである。これらの接続はレジスタ（そのため、ネットワーク入力とネットワーク出力間にいくらかの時間オフセットが生じる場合がある）と、データを送るのに使用されるスイッチとを通過することができる。汎用ルーティングネットワークのビット幅は、１ビットデータ線の数によって決定され、該データ線は汎用ルーティングネットワークのスイッチ内の構成メモリの各ビットによって制御される。よって、４ビット汎用ルーティングネットワークでは、構成メモリの各ビットは、４つの１ビットデータ線を制御する。したがって、データは、４ビット幅のワードとしてネットワークを横断して送信される。
【０００６】
再構成可能装置の設計は、処理素子と相互接続の特性を特定するプロセスである。いずれの素子にとっても、設計には、以下に述べるような一連の妥協が必要である。
【０００７】
処理素子の選択は、機能と、物理的サイズ、動作速度、電力損などの各種パラメータとの妥協である。例えば、機能を増やすと各素子のサイズは増大するが、アプリケーションを実行するのに必要な素子の総数を減らすことがある。素子の数の減少が各素子のサイズの増大よりも重要である場合にのみ機能を増やす価値があるため、アプリケーション領域が正味増大することはない。機能を増やすと他のパラメータに同様に影響を及ぼす。
【０００８】
上述したように、様々なタイプ（種類）の再構成可能装置がある。再構成可能装置にとっては様々なタイプのアプリケーションもある。様々なタイプの再構成可能装置は通常それぞれ、いくつかのタイプ（種類）のアプリケーションを他の装置よりも上手く実行する。したがって、再構成可能装置で使用される特定の処理素子の適合性評価は、装置が使用を目的とするアプリケーションのタイプに左右される。
【０００９】
一つにはアプリケーションスペースの分割のため（例えば、プロセッサアレイは通常、ＦＰＧＡとは異なるタイプのアプリケーション用に使用される）、また一つには特徴すべての組み合わせはそのうちの１つのみの特徴よりも有効であるため、（例えば、乗算器または除算器をプロセッサに追加することは価値がないかもしれないが、ハードウェアを共有して両方を追加することは最終的に利益である）、サイズ／機能のスペースにはいくつかの「スイートスポット」がある。
【００１０】
相互接続も、機能と、物理的サイズ、動作速度、電力損などの各種パラメータとの妥協である。理想的な相互接続は、伝播の遅延がゼロであり、ルート間の干渉リスクがなく、物理領域がごくわずかである。このような理想は実際には存在しない。適当な妥協に達する際、以下のような各種素子の特性を検討することができる。
処理素子：
高速処理素子は、高速相互接続とともに完全に活用することができる。
処理素子によって処理されるデータと同じビット幅のデータを送ることが有益である。
アレイ：
可能な接続の数は、処理素子の数の自乗として増加する。したがって、接続間の干渉がないことを保証する相互接続の「１素子辺りのコスト」は、処理素子の数とともに増大する。このコストは小型のアレイにとっては手頃だが、大型のアレイではそうではない。
伝播遅延は、アレイのサイズを増大させる傾向がある。
アプリケーション：
再構成可能装置での使用のために書かれたアプリケーションが、最近接接続性のみを有する装置で実行可能に書かれている場合、相互接続は大幅に簡略化することができる。このような簡略化が可能でない場合、（上述したような）汎用ルーティングネットワークが相互接続の基本として通常使用され、ネットワークの端子が処理素子の端子である。
【００１１】
性能向上のため、再構成可能装置は、異種処理素子、階層ルーティングネットワーク、および／または異種相互接続などの追加素子も含むことができる。異種処理素子は、１つの装置上で２つ以上の異なるタイプの処理素子の組み合わせであって、その装置とは、例えば、
ルックアップテーブルベースの素子と専用乗算器ブロックの両方を有するＦＰＧＡ、
ルックアップテーブルベースの素子および積項ベースの論理回路を有するＦＰＧＡ、または
整数プロセッサと浮動小数点プロセッサの両方を含むプロセッサアレイ、
である。
【００１２】
処理素子を組み合わせることは、様々な理由で、例えば、「機能性対コスト」という二律背反する問題を軽減するために行われる場合がある。ある特徴が素子上に別のタイプのブロックとして追加される場合、すべての処理素子ではなく、追加された特徴を含む処理素子のコストのみが増える。一見魅力的だが、このアプローチには、異なるタイプの処理素子の比率をどのようにすべきか、およびそれらを互いに対してどのように配置すべきかを判断するという大きな問題が１つある。例えば、素子タイプの細粒混合ＡＢＡＢＡＢ．．．、あるいはアレイの行や列などの粗粒混合ＡＡＡＢＢＢＡＡＡＢＢＢのいずれかにすべきである。より多くの異なるタイプの処理素子が再構成可能装置に組み込まれるほど、混合の分析が一層重要になる。
【００１３】
階層ルーティングネットワークスキームは通常、処理素子をグループに割り振り、グループ内で強固な接続を持たせ、グループ（およびグループのグループ間など）間にも追加の接続を持たせる。このモデルグループの拡張部は重なり合う場合がある。境界は、グループ間の接続以外に接続のない曖昧な壁である。例えば、グループの境界にある処理素子は、両グループのメンバーであってもよい。
【００１４】
異種相互接続構成では、利用可能な２つ以上のタイプの接続、例えば、低速だがより有能な汎用ルーティングネットワークを補完するために追加される高速だが限定的な追加の相互接続がある。
一般的な接続パターン、例えば、多くのＦＰＧＡにおける「キャリーワイヤ」をサポートするために、専用配線を追加することができる。
汎用ルーティングネットワークに加えて、専用の最近接接続があってもよい。
【００１５】
「異種」相互接続と「階層」相互接続間には重大な違いがある。階層ルーティングネットワークは、階層のあらゆるレベルに同タイプの接続を使用するが、接続の到達範囲はレベル毎に異なり、異種相互接続は異なるネットワークには異なるタイプの接続を使用する。なお、アレイが、異種および階層相互接続の両方を含むことができることに留意。
【００１６】
プロセッサは通常、条件付きおよび無条件の分岐および飛び越し、および／または命令の断定された実行を混合し、アプリケーション内の制御フローを管理する。再構成可能装置での計算を実行するためのアプリケーション固有のデータ経路を構成することによる演算としてここに定義される「再構成可能演算」は通常、制御フローを管理することを得意としない。
【００１７】
プロセッサアレイでは、個々のプロセッサは自身の命令フローを管理するのは得意だが、アレイ内の他のプロセッサにはほとんどか全く影響を及ぼさない。
【００１８】
ＦＰＧＡベース再構成可能演算では、プログラムを通過するすべての経路は、頻繁に使用されなくてもハードウェアに実装する必要がある。プロセッサのランタイム演算の最大９０％がコードの丁度１０％に特定することができるとすれば、結果的にＦＰＧＡシリコン領域の大半があまり頻繁に使用されない演算専用になってしまう可能性があり、この例では領域の９０％が時間の１０％しか使用されず、残りの１０％が時間の９０％で使用される。
【００１９】
再構成可能演算（ＲＡＡなど）用に設計された他の装置では、ＦＰＧＡ状況で改善するための試みがなされている。ＲＡＡは命令入力を有する演算論理装置（「ＡＬＵ」）を備えるため、ＡＬＵに提供される命令を変更することによってデータ経路の機能を動的に変更することができる。しかしながら、これは完璧な解決策ではない。
【００２０】
ＲＡＡ  ＡＬＵはビットではなくマルチビットワード（例えば、４ビットニブル）を処理し、入力ワードで実行する演算を選択するためのコンパクトな命令符号（再び４ビット）を有する。しかし、制御条件は、単独ビットで表す真／偽的な性質の判断になりがちである。例えば、
ＡとＢの入力は等しいか？
入力Ａは入力Ｂより大きいか？
入力のビット３は１に設定されるか？
【００２１】
このような単独ビット条件（「条件１または条件２ならば、・・・」のようなステートメント）をｎビットＡＬＵで処理すると、ＡＬＵデータ経路の使用は非効率になる。ビットの（ｎ−１）は使用されない。
【００２２】
この結果、ＦＰＧＡの１ビットの性質が処理条件にとっては適するが、条件の結果に基づく分岐には適さないという状況を生み出す。一方で、マルチビットＲＡＡのような装置は分岐に適するが、処理条件では非効率である。
【００２３】
再構成可能演算アプリケーションにとって有効な実行方法は、１ビット（あるいはニブル、またはワードまたはその他の全幅データ項目のいくらかの別の断片）シリアル形式でデータを処理することである。単独の処理素子が、ワードの連続部分を処理するために連続的なクロックサイクルで使用される。この方法によって、領域や処理能力を互いに使用することができ、シリアル化処理は時間がかかるが、処理素子の数は少なくてすむ。
【００２４】
シリアルおよびパラレルフォーマット間でデータを変換できることは、シリアル化処理において有益である。この変換を実行する１つの方法が、マルチプレクサとレジスタから構成される回路を用いることである。
【００２５】
マルチプレクサは、多数の一般的な１−および２−入力論理関数を実行する再構成可能装置においても有益である。これらの例は、「ｉｆ（ｂ）ｔｈｅｎ｛ａ＝ｃ；｝ ｅｌｓｅ ｛ａ＝ｄ；｝」の省略であるＣ／ｊａｖａ「条件付き選択」演算子「ａ＝（ｂ？ｃ：ｄ）」で表現される。
Ａ＆Ｂ＝Ａ？Ｂ：０
Ａ｜Ｂ＝Ａ？１：Ｂ
ＮＯＴ  Ａ  ＝Ａ？０：１
Ａ＾Ｂ＝Ａ？（ＮＯＴ  Ｂ）：Ｂ
【００２６】
上述したように、異種アレイは、異なるワード長を扱うように最適化された処理素子の混合を提供する。しかしながら、従来の異種アレイは、上述したような比率の判断の問題を有する。これらの問題の有効な解決策は、マルチビット処理の方に偏るが１ビット処理も可能なように第１のタイプの処理素子を設計し、１ビット処理の方に偏るがマルチビット処理も可能なように第２のタイプの処理素子を設計することである。
【００２７】
添付図面は、本発明の実施形態の理解を深め、詳細な説明とともに、開示される実施形態の原理を説明するのに供することを目的とする。
【００２８】
本発明の各種実施形態を以下に開示する。これらの実施形態に記載されるアレイは、第１および第２のタイプの処理素子としてＡＬＵおよびマルチプレクサを用いて構成される。しかしながら、当業者は、ＡＬＵ、マルチプレクサ、あるいはその両方の代わりに他の処理素子を使用可能であることを認識するであろう。例えば、アレイは、ルックアップテーブルベースの素子、積項ベースの素子、専用乗算ブロック、浮動小数点プロセッサ、整数プロセッサなどのハードワイヤード素子、組み合わせ論理機能を実行可能な他の素子を用いて構成することができる。
【００２９】
以下の実施形態のいくつかは、専用ルーティングネットワークを含む。専用ルーティングネットワークは、複数の入力および複数の出力を有するネットワークで、すべての入力を少なくとも１つの出力に接続することができ、すべての出力を少なくとも１つの入力に接続することができる。しかしながら、専用ルーティングネットワークは、１）任意の入力を任意の出力に接続する性能（すなわち、すべての出力に接続できない少なくとも１つの入力がある、あるいは、すべての入力に接続できない少なくとも１つの出力がある）、または２）任意の入力Ａ、Ｃおよび任意の出力Ｂ、Ｄ、Ｂ≠Ｄに関して任意の対接続Ａ→ＢおよびＣ→Ｄを形成する性能、のうち一方または両方を欠く。
【００３０】
これらの実施形態のアレイは、処理素子の複数の「クラスタ」の観点で説明する。クラスタは、少なくとも１つの第１のタイプの処理素子と１つの第２のタイプの処理素子とを含む、処理素子のコレクションを有する。クラスタ内の第１のタイプおよび第２のタイプの処理素子は、直接クラスタ内接続で互いに接続されており、その接続は配線、バス、またはその他の形式の電気接続であってもよい。クラスタ内接続は、追加でまたは代替で、 入力セレクタなどの専用ルーティングネットワークの１部、または専用ルーティングネットワークの１部であるマルチプレクサを介して、直接接続等価接続を含んでいてもよい。直接接続等価接続は、専用ルーティングネットワークの１部を使用し、第１のタイプの処理素子の任意の出力と第２のタイプの処理素子の任意の入力間では汎用ルーティングネットワークを使用しない経路である。該経路は、他の第１のタイプの処理素子の他の等価出力と他の第２のタイプの処理素子の他の等価入力間で、専用ルーティングネットワークの他の等価部分を用いる他の物理的および論理的に等価な経路を妨害しない。クラスタ内接続は、アレイに存在する汎用ルーティングネットワークの１部ではない。しかしながら、クラスタ境界に、汎用ルーティングネットワークとの接続部があってもよい。
【００３１】
クラスタは、非同一素子を直接つなぐ完全なセットの接続によって直接的または間接的に接続される１セットの処理素子として定義される。２つのタイプの処理素子を有する実施形態の場合、クラスタ内のいずれの処理素子も、信号がクラスタ内接続を介して実際に移動する方向に関係なく、第１のタイプの処理素子と第２のタイプの処理素子、またはその逆のクラスタ内接続によってクラスタ内の他の処理素子から到達することができる。３つのタイプ以上の処理素子を有する実施形態の場合、非同一タイプの処理素子を接続するクラスタ内接続の経路がクラスタを定義する。
【００３２】
例えば、第１のタイプの処理素子がＡＬＵで、第２のタイプの処理素子がマルチプレクサである場合、経路上の同じタイプの２つの処理素子間には接続がないので、経路ＡＬＵ−ＭＵＸ−ＡＬＵ−ＭＵＸはクラスタを定義するが、経路ＡＬＵ−ＭＵＸ−ＭＵＸはクラスタを定義しない。同様に、３つの処理素子タイプＡ、Ｂ、Ｃの場合、経路Ａ−Ｂ−Ｃ−Ａはクラスタを定義するが、Ａ−Ｂ−Ｂ−Ｃ−ＡはＢ−Ｂ接続のためクラスタを定義しない。
【００３３】
上述したように、処理素子の対のいずれかである同じタイプの処理素子を通過せずに、非同一素子を接続する接続のみを用いて、クラスタ内の処理素子の各対の間に経路が存在する限り、クラスタは、同じタイプの処理素子間の接続を含むことができる。
【００３４】
図１９は、クラスタの例を示す。処理素子は「ＡＬＵ」および「ＭＵＸ」 素子によって指定され、接続は素子を接続する線によって指定される。第１のクラスタ１９１０は、点線の左側で、処理素子１９１０（ａ）〜（ｆ）のすべてを含む。第２のクラスタ１９２０は、点線の右側で、処理素子１９２０（ａ）〜（ｇ）のすべてを含む。各処理素子１９１０（ａ）〜（ｆ）は、一連のＡＬＵ−ＭＵＸまたはＭＵＸ−ＡＬＵ接続に続くことで、他の各処理素子１９１０（ａ）〜（ｆ）から到達することができる。同様に、各処理素子１９２０（ａ）〜（ｇ）は、一連のＡＬＵ−ＭＵＸまたはＭＵＸ−ＡＬＵ接続に続くことで、他の各処理素子１９２０（ａ）〜（ｇ）から到達することができる。処理素子１９１０（ａ）〜（ｇ）は、ＡＬＵ−ＭＵＸまたはＭＵＸ−ＡＬＵ接続に続くことで、処理素子１９２０（ａ）〜（ｇ）から到達することはできない。少なくとも１つのＡＬＵ−ＡＬＵまたはＭＵＸ−ＭＵＸ接続に続かなくてはならない。したがって、処理素子１９１０（ａ）〜（ｆ）は第２のクラスタ１９２０のメンバーではなく、処理素子１９２０（ａ）〜（ｇ）は第１のクラスタ１９１０のメンバーではない。
【００３５】
「ＡＬＵ」は、命令値に応じて、様々な数学および論理関数を実行するように構成可能な処理素子である。ＡＬＵは１つまたは複数のデータ入力を受信し、命令値によって選択された関数をデータ入力に適用して、データ出力を生成する。ＡＬＵは、別の処理素子からキャリーイン値も受信し、受け取ったデータと命令値に応じて、キャリーアウト出力値を別の処理素子に供給することもできる。
【００３６】
「マルチプレクサ」は、２つ以上のデータ入力値を受信し、セレクタ入力値に応じてデータ入力値のうちの１つをデータ出力に供給する処理素子である。
【００３７】
図１を参照すると、再構成可能アレイに使用されるＡＬＵ１００は、第１のデータ入力１１０、第２のデータ入力１２０、および命令入力１３０を含む。データおよび命令入力は、アレイ内の他の素子またはアレイに接続される素子から入力値を受け取ることができる。データ入力値は、プログラムメモリなどのソース、他の処理素子の出力、または、データ信号の他のソースから得ることができる。命令入力値は、構成メモリなどのソースまたは構成データのその他のソースから得ることができ、また、他の処理素子からデータ信号によって提供される。データおよび命令入力は、第１のビット幅の入力値を受け取ることができる。もしくは、命令入力は、命令入力のソースに応じて、異なるビット幅であってもよい。例えば、第１のビット幅の汎用ルーティングネットワークに接続されない構成メモリによって供給される場合、命令入力は第１のビット幅である必要はない。
【００３８】
ＡＬＵ１００は、第２のビット幅であるキャリーイン入力１４０（「Ｃｉｎ」）も含む。この入力は、アレイ内の別のＡＬＵ１００からキャリー入力を受信するのに使用される。
【００３９】
ＡＬＵ１００は、第２のビット幅であるキャリーアウト出力１５０（「Ｃｏｕｔ」）も含む。キャリーアウト出力１５０は、キャリー出力をアレイ内の他の素子またはアレイに接続される他の素子に提供する。ＡＬＵ１００の構成に応じて、キャリーイン入力１４０とキャリーアウト出力１５０は、設計者の要求に応じて、キャリー値以外の値を提供することができる。
【００４０】
ＡＬＵ１００は、第１のビット幅のデータ出力１６０も含む。データ出力１６０は、ＡＬＵによって実行される数学または論理関数の結果を、アレイ内の他の素子またはアレイに接続される素子に提供する。
【００４１】
ＡＬＵ１００は、第２のビット幅の選択信号出力１７０も含む。選択信号出力１７０は、選択信号をアレイ内の他の素子またはアレイに接続される素子に提供する。選択信号は、アレイ内の他の素子またはアレイに接続される素子の機能を制御するのに有効な様々な信号のいずれであってもよい。例えば、選択信号は、１つまたは複数の以下のデータ依存信号であってもよい。
Ｃｏｕｔ：ＡＬＵ演算からのキャリーアウト、
符号：ＡＬＵ演算の正しい符号（演算オーバーフローが発生した場合でも）、
オーバーフロー：演算オーバーフローがあったことを示す信号。
【００４２】
もしくは、１つまたは複数ビットの命令入力１３０であってもよい。これによって、データ依存信号と支持依存信号の両方を提供することができる。いくつかの実施形態では、ＡＬＵ１００は、命令入力１３０と無関係に、内部命令を記憶するように構成される。このため、命令入力１３０は、ＡＬＵ１００を制御するために記憶された命令値を使用しつつ、選択信号出力１７０に直接命令入力１３０の１部または全部を提供することによって、専用選択信号入力として使用することができる。選択信号出力１７０は、以下より詳細に説明するように、ＡＬＵ１００から転送される様々な信号を選択する追加の回路を含むことができる。
【００４３】
図２を参照すると、再構成可能アレイで使用されるマルチプレクサ２００は、第１の入力２１０と第２の入力２２０を含み、どちらも第１のビット幅を有する。入力２１０、２２０は、アレイ内の他の素子またはアレイに接続される素子から入力値を受け取る。
【００４４】
マルチプレクサ２００は、第１のビット幅の出力２３０も含む。出力２３０は、マルチプレクサ２００によって実行される入力選択の結果を、アレイ内の他の素子またはアレイに接続される素子に提供する。
【００４５】
マルチプレクサ２００はセレクタ入力２４０も含む。セレクタ入力２４０は、入力２１０、２２０のうちどれが出力２３０に向けられるかを示す選択値を受け取る。セレクタ入力２４０は、第２のビット幅である。本実施形態では、選択値「１」では結果的に第１の入力２１０が出力２３０に向けられ、選択値「０」では結果的に第２の入力２２０が出力２３０に向けられる。
【００４６】
本実施形態では、第１のビット幅は４ビット幅であるワード幅で、第２のビット幅は１ビット幅である。別の実施形態では、設計者によって企図される特定の実装が所望するとおり、第１のビット幅と第２のビット幅は任意のサイズであってもよい。第１のビット幅の入力および出力は好ましくは、アレイの様々な素子を通って信号を転送するのに有効な第１の汎用ルーティングネットワークに接続される。第２のビット幅の入力および出力は好ましくは、他の処理素子に直接接続されるか、あるいは、第２のビット幅のキャリー信号に適合された第２の汎用ルーティングネットワークまたは専用ルーティングネットワークに接続される。これらの場合、第２のビット幅信号は、第１の汎用ルーティングネットワークをバイパスする。もしくは、第２のビット幅信号は、第１のビット幅信号とともに、第１の汎用ルーティングネットワークを通って転送される。様々な入力および出力を、様々な配線、バス、またはその他の導電性装置または電流路を用いて接続することができる。
【００４７】
図３を参照すると、クラスタ３００は、ＡＬＵ１００とマルチプレクサ２００を含む。ＡＬＵ１００の選択出力１７０は、マルチプレクサ２００のセレクタ入力２４０に選択信号を供給する。上述したように、マルチプレクサ２００は、データ依存または命令依存信号によって制御することができる。アプリケーションでの有効性に関して言えば、これらの２つのケースはプロセッサ内の条件付きおよび無条件の分岐に広く対応する。
【００４８】
設計者の要求に応じて、追加のマルチプレクサをクラスタ３００に追加することができる。これらの追加のマルチプレクサは、マルチプレクサ２００を制御するのと同じ選択信号によって制御することができ、また、異なる選択信号によって制御することができる。クラスタ３００は、追加のＡＬＵ、レジスタ、ゲートなど、クラスタ３００内の様々な入力および出力に装着される他の素子の追加によって拡張することもできる。クラスタ３００は、より複雑な回路を実装するために他のクラスタに接続することもできる。このような拡張の例を、以下に、より詳細に説明する。
【００４９】
クラスタ３００は、様々な回路を実現するために単独で、または他のクラスタ３００と組み合わせて使用することができ、その例を図４〜６に示す。図４Ａを参照すると、クラスタ３００は、データ選択回路を実現するために使用される。データ選択回路は、選択信号出力１７０で提供された条件の結果に応じて、「ｉｎ１」または「ｉｎ２」を選択する。例えば、選択信号出力１７０がオーバーフロー信号を提供するように構成される場合、データ選択回路はオーバーフロー（Ｓ＝Ｉ）があれば「ｉｎ１」を、オーバーフロー（Ｓ＝０）がなければ「ｉｎ２」を選択する。
【００５０】
この回路は、例えば、ワード長が変化したときに符号拡張を実行することによって、データをフォーマットする際に有益である。第１の入力１１０は、８ビット値に変換される符号付き４ビット値Ａを保持する。マルチプレクサ入力２１０、２２０は、値「１１１１」と「００００」をそれぞれ保持する。ＡＬＵ１００は関数Ａ＜０を評価して、選択出力１７０に適切な符号信号を生成し、入力値ＡをＡＬＵ出力１６０に伝播させる。符号出力信号は、「１１１１」または「００００」のいずれかを選択するようにマルチプレクサ２００を切り換えるために使用される。８ビットの結果は、ＡＬＵ出力１６０上の値と、マルチプレクサ出力２３０上の値から成る。
【００５１】
図４Ｂを参照すると、クラスタ３００は、第１のビット幅汎用ルーティングネットワークに、ＡＬＵ１００によって生成される第２のビット幅信号を伝播するように構成することもできる。ＡＬＵ１００の選択出力１７０に生成された第２のビット幅の選択信号は、マルチプレクサ２００のセレクタ入力２４０に転送される。第１の入力２１０には値「０００１」が与えられ、その値は、第２のビット幅の値「１」の第１のビット幅の表示である。第２の入力２２０には値「００００」が与えられ、その値は、第２のビット幅の値「０」の第１のビット幅の表示である。選択信号が「１」のとき、マルチプレクサ２００によって、「０００１」の第１の入力値２１０は、出力２３０へ、そこから進んで汎用ルーティングネットワークに転送させられる。同様に、選択信号が「０」のとき、マルチプレクサ２００によって、「００００」の第２の入力値２２０は、出力２３０へ、そこから進んで第１の汎用ルーティングネットワークに転送させられる。したがって、符号、オーバーフロー、キャリーアウトなどの選択信号は、第２のビット幅から第１のビット幅に有効に変換され、第１の汎用ルーティングネットワークに配置されて、そこで、他の処理素子に送られることができる。これにより、専用の接続と上述の第２の汎用ルーティングネットワークに加えて、これらの信号のための別の経路が提供される。
【００５２】
図５を参照すると、第１のクラスタ５１０と第２のクラスタ５５０は、条件処理回路を実装するために使用される。条件処理回路は、ＡＬＵの選択出力値として提供される１つまたは複数の条件に基づき論理演算を実行する。第１のクラスタ５１０は、第１の条件（例えば、出力値Ｆ１の「符号」）を生成する第１のＡＬＵ５２０を含み、第１の条件を第１のマルチプレクサ５３０に渡す。第１のマルチプレクサ５３０は、第１の入力５３３上の「０００１」の定数値と、第２の入力５３５上の「００００」の定数値とを受信する。第１の条件が「１」である場合、第１のマルチプレクサ５３０は第１の入力５３３を選択して出力５３７に提供し、そうでない場合、第１のマルチプレクサ５３０は第２の入力５３５を選択して出力５３７に提供する。
【００５３】
第２のクラスタ５５０は、第２の条件（例えば、出力値Ｆ２の「符号」）を生成する第２のＡＬＵ５６０を含み、第２の条件を第２のマルチプレクサ５７０に渡す。第２のマルチプレクサは第１の入力５７３上の出力５３７からの値と、第２の入力５７５上の「００００」の定数値とを受信する。第２の条件が「１」である場合、第２のマルチプレクサ５７０は第１の入力５７３を選択して出力５７７に提供し、そうでない場合、第２のマルチプレクサ５７０は第２の入力５７５を選択して出力５７７に提供する。
【００５４】
第１の条件と第２の条件の関数として表現されるこの回路の出力を以下の表１に示す。
【００５５】
【表１】
2008541636.tif 000003
【００５６】
表１から分かるように、図５の条件処理回路は、２つの条件Ｓ１およびＳ２の出力論理積として生成する。他の論理関数も同様に生成することができる。
【００５７】
図６を参照すると、第１のクラスタ５１０と第２のクラスタ５５０は、データ経路制御回路を実現するように構成される。第１のＡＬＵ５２０は上述したように、選択信号を生成し、選択信号を第１のマルチプレクサ５３０に送る。第１のマルチプレクサ５３０は、第１の入力５３３の加算（「ＡＤＤ」）命令値に対応するデータ入力信号と、第２の入力５３５の減算（「ＳＵＢ」）命令値に対応するデータ入力信号とを受信する。これらのデータ入力は上述したように、通常はマルチビット信号である。選択信号の値に基づき、第１のマルチプレクサ５３０は、ＡＤＤまたはＳＵＢ命令値のいずれかを第２のＡＬＵ５６０の命令入力５６２に転送する。したがって、第２のＡＬＵ５６０の出力は、第１のＡＬＵ５２０によって生成される条件に応じて、Ａ２＋Ｂ２またはＡ２−Ｂ２のいずれかとなる。したがって、第１および第２のクラスタ５１０、５５０を含むアレイ内のデータ経路は、第２のＡＬＵ５６０によって実行される関数を変更することにより制御される。所望のデータ経路制御機能は、第１のＡＬＵ５２０および第１のマルチプレクサ５３０へのデータおよび命令入力を変更することによって実現される。
【００５８】
図７〜８を参照すると、出力レジスタは、追加の有効な回路を形成するようにクラスタ３００に追加することができる。これらの回路は、シリアル−パラレルおよびパラレル−シリアルデータ変換のためのデータフォーマットを実行するのに有効である。図７の回路は上述したように、ＡＬＵ１００とマルチプレクサ２００を含む。さらに、マルチプレクサ２００の出力２３０に装着されるレジスタ７００がある。レジスタ７００は、マルチプレクサ２００の出力２３０からロードされる値を記憶する。スイッチ７１０は、マルチプレクサ出力２３０またはレジスタ出力７２０のいずれかを他の素子に転送するように構成される。スイッチ７１０は、アレイ上のアプリケーションの構成の１部として設定される。別の実施形態では、対応するスイッチの有無にかかわらず、ＡＬＵ１００の出力１６０に接続される第２のレジスタがある。
【００５９】
図８Ａおよび８Ｂは、クラスタ３００を用いて実装することのできる有効なレジスタ回路の具体例を示す。図８Ａは「イネーブルレジスタ」回路の具体化であり、図８Ｂは「リセットレジスタ」回路の具体化である。図８Ａの「イネーブルレジスタ」回路はレジスタを提供し、「イネーブル」がクロックエッジでアクティブであるとき、レジスタ内容は（「入力」値で）更新するだけであり、アクティブでないとき、記憶された値がリサイクルされ、出力は変わらない。図８Ｂの「リセットレジスタ」回路は、リセット信号が非アクティブである限り、「入力」値をレジスタに提供する。リセット信号がアクティブになる場合、次のクロックエッジでゼロ値がレジスタにロードされる。これらのレジスタオプションの両方ともアプリケーションで一般的に使用されるため、これらの回路は再構成可能アレイ上にアプリケーションを実装する際に役立ち、図７の「マルチプレクサとレジスタ」機構で容易に構成可能である。
【００６０】
マルチプレクサの可能な使用の多くは、マルチプレクサへの入力の一方または両方に定数値を有すること、例えば、
ＡＮＤ、ＯＲ、またはＮＯＴゲートを実装すること、
キャリーアウト値を第１の汎用ルーティングネットワークへ伝播すること、または
リセット可能なレジスタを実装すること、を含む。
【００６１】
これらの使用は、マルチプレクサ２００の入力に入力選択論理を追加することによって簡易化される。入力選択論理は、マルチプレクサのサイズを増大させるが、ルーティングネットワークを介して伝播される信号の数を低減するという二律背反の問題を抱える。マルチプレクサ２００は、図９に示されるように、第１の入力２１０と第２の入力２２０にそれぞれ装着される第１の入力マルチプレクサ９１０と第２の入力マルチプレクサ９２０を有する。第１の入力マルチプレクサ９１０は、第１の入力値９１３または第１の定数値９１７（ここでは、値「０００１」）のいずれかを第１の入力２１０に供給するように構成される。第２の入力マルチプレクサ９２０は、第２の入力値９２３または第２の定数値 ９２７（ここでは、値「００００」）のいずれかを第２の入力２２０に供給するように構成される。入力マルチプレクサ９１０、９２０は、アプリケーションによって動的に制御されることを目的としていない。入力マルチプレクサ９１０、９２０への制御信号は、アプリケーションがアレイにロードされる際に設定され、それ以降変動しない。別の実施形態では、アレイへのより高い制御レベルが所望され、入力マルチプレクサ９１０、９２０は動的に制御可能である。
【００６２】
入力マルチプレクサ９１０、９２０は、一定か可変のいずれかの他の信号を含むように拡張することができる。例えば、図１０を参照すると、第２の入力マルチプレクサ９２０は、入力としてフィードバック信号を第２の入力マルチプレクサ９２０に追加することによって拡張される。したがって、第２の入力マルチプレクサ９２０は、図８Ａの「イネーブルレジスタ」回路を実現するために、第２の入力２２０に対するフィードバック路１０１０を形成するように構成することができる。同様に、図１１を参照すると、第１の入力マルチプレクサ９１０は、ＡＬＵ１００のキャリーアウト出力１５０から第１の入力マルチプレクサ９１０にキャリーアウト信号を提供することによって拡張される。第１の入力マルチプレクサ９１０への入力がキャリーアウト出力１５０より広い場合、キャリーアウト信号は先行ゼロで埋められる。したがって、例えば、第１の入力マルチプレクサ９１０に提供されるとき、「１」のキャリーアウト信号は「０００１」に埋められる。したがって、適切に構成されれば、第１の入力マルチプレクサ９１０は、第１の入力２１０を介してキャリーアウト出力１５０をマルチプレクサ２００に提供する。これによって、キャリーアウト信号を第１の汎用ルーティングネットワークに提供する別のルートが提供される。キャリーアウト信号はセレクタ入力１７０を介して既にマルチプレクサ２００に利用可能であり、そのように第１の汎用ルーティングネットワークに伝播させることができるが、この変更は、（存在する可能性のある入力マルチプレクサを考慮せずに）１つのマルチプレクサ２００および１つのレジスタ７００内にイネーブル（または、図８Ｂの回路を変更することによってリセット）キャリーレジスタを形成することを可能にする。リセット可能なキャリー出力レジスタは、直列演算アプリケーションにおいて有益である。
【００６３】
図１２を参照すると、図１１の回路のさらなる改良として、レジスタ７００またはマルチプレクサ２００出力のビットのうちの１つが、ＡＬＵへの専用キャリー入力として使用可能とされる。マルチプレクサ２００の４ビット出力２３０のうち１ビットが、ＡＬＵ１００のキャリーイン入力１４０に接続される入力マルチプレクサ１２１０に転送される。これにより、キャリーアウト出力１５０からキャリーイン入力１４０への登録された経路が形成される。このような経路は、シリアル化演算回路を形成するとき、特に上述したようにレジスタ７００をリセットする性能と結び付けられたとき、有益である。
【００６４】
図１０〜１２は、スイッチ７１０の出力に接続される第２の入力マルチプレクサ９２０へのフィードバック路を示す。もしくは、フィードバック径路は、スイッチ７１０の前で、レジスタ７００の出力に接続させることができる。しかしながら、スイッチ７１０の後に接続すると、非登録経路を選択することによって、非同期ラッチを構成することができる。
【００６５】
図１３を参照すると、クラスタ３００の基本回路のさらに別な拡張が示されている。マルチプレクサ２００の出力２３０にインバータ１３１０を追加することによって、マルチプレクサ２００によって生成される機能の範囲が広がる。マルチプレクサ２００はＮＡＮＤおよびＮＯＲゲートを提供することができる。
ＮＡＮＤ（Ａ、Ｂ）＝ＮＯＴ（Ａ？Ｂ：０）
ＮＯＲ（Ａ、Ｂ）＝ＮＯＴ（Ａ？１：Ｂ）
さらに、これにより、出力反転を実現する別の方法も提供される。
ＮＯＴ  Ａ＝Ａ？０：１−この形式はインバータを使用しない
ＮＯＴ  Ａ＝ＮＯＴ（１？Ａ：０）−この形式はインバータを使用する。
【００６６】
後者のオプションは、Ａ信号を、セレクタ入力２４０ではなくマルチプレクサ２００のデータ入力２１０、２２０へ接続する。データ入力２１０、２２０およびセレクタ入力２４０への異なるルーティング遅延がある場合、これが好ましいかもしれない。
【００６７】
さらに、１つの反転入力を有する関数を実行する別の方法が提供される。
Ａ＆（ＮＯＴ  Ｂ）＝Ｂ？０：Ａ−この形式はインバータを使用しない。
Ａ＆（ＮＯＴ  Ｂ）＝ＮＯＴ（（ＮＯＴ  Ａ）ＯＲ  Ｂ）
＝ＮＯＴ（Ａ？Ｂ：１）
【００６８】
再度、これは、関数を実行するためにどのマルチプレクサ入力を使用するかについての高い柔軟性を提供する。
【００６９】
上述の回路は、本発明の一実施形態のクラスタ３００を用いて実装することのできる幅広い様々な回路の例に過ぎない。
【００７０】
上述のクラスタ３００を含む異種アレイは、多くの回路を純粋にＡＬＵの異種アレイよりも小型で高速に実現することができる。マルチプレクサはＡＬＵよりも大幅に小型化および高速化されるため、マルチプレクサを利用可能な回路も、純粋にＡＬＵから成る等価回路よりも小型化および高速化される。条件処理、データフォーマット、命令選択などの演算はすべて、ＡＬＵのみで構成されるものよりも、マルチプレクサとＡＬＵの混合でより効率的に実行される。
【００７１】
異種相互接続を有するアレイの使用によって、速度はさらに向上する。第１の汎用ルーティングネットワークは、アレイの素子間でデータと命令を転送するために設けられ、追加の相互接続が、ＡＬＵとマルチプレクサ間の選択信号の転送のためのマルチプレクサ制御ネットワークを提供する。このマルチプレクサ制御ネットワークは、ＡＬＵとクラスタ内の１つまたは複数の対応付けられるマルチプレクサ間の単純な直接接続であってもよいし、あるいは、ＡＬＵ選択出力を同じクラスタ内、他のクラスタ内、またはその両方におけるマルチプレクサに接続するように構成された複雑な制御ネットワークであってもよい。この制御ネットワークは、データおよび命令ではなくマルチプレクサ制御信号を保持するために最適化された第１のネットワークとは別に、第２の汎用ルーティングネットワークの形を取ることができる。もしくは、以下詳述するように、この制御ネットワークは、専用ルーティングネットワークの形を取ることができる。
【００７２】
再構成可能装置で使用される様々なネットワークは、様々な方法で互いに識別することができる。例えば、２つの異なるネットワークＡおよびＢは、
−処理素子を通過しないと、ＡからＢへおよびＢからＡへの通信が可能ではない場合、
−ＡとＢのビット幅が異なる場合、あるいは、
−ＡおよびＢの一方が汎用ネットワークであり、他方が専用ネットワークである場合、には別個であるとみなされる。
【００７３】
一実施形態の異種アレイは、素子のタイプの適切な組み合わせを決定する際の課題を大幅に低減する。マルチプレクサは、ビットレベル論理、データフォーマット、および動的命令選択などの幅広い様々なアプリケーション論理構成要素を実現することが有益である。したがって、設計者が異種アレイ上に実装したいと考えるであろうアプリケーションの大半は、ある程度までマルチプレクサを使用することができる。
【００７４】
しかしながら、マルチプレクサは、有益な機能を実行する唯一の方法ではない。ＡＬＵは、マルチプレクサが実行可能な機能を実行するのに使用することができる。マルチプレクサは、普通は単により効率的な実装である。したがって、アプリケーションは、３つのタイプの論理構成要素に分割することができる。
１．好ましくはＡＬＵに実装される論理、
２．好ましくはマルチプレクサに実装される論理、
３．実装の選択肢がある論理
【００７５】
これらのカテゴリの１部はまたは全部は、カテゴリ内の相対的な優先レベルを示すサブカテゴリを有していてもよい。これらのサブカテゴリは、アレイに設けられる処理素子と各カテゴリ内の様々な量の論理構成要素との具体的な混合に応じて、論理構成要素の処理素子への割当を微調整するために使用される。
【００７６】
第３のカテゴリの存在は、すべてのアプリケーションに対して十分なマルチプレクサ（またはＡＬＵ）が常に存在するように保証する「完璧な」ＡＬＵとマルチプレクサの比率を見つける必要がないことを意味する。その代わりに、処理素子間で論理構成要素を割り当てる方法を決定する際、図１４の方法が使用される。ステップ１４１０では、好ましくは第１の処理素子タイプに実装される論理構成要素が特定され、第１のタイプの処理素子に割り当てられる。カテゴリ内の相対的な優先を示すサブカテゴリがある場合、最も優先される構成要素が最初に割り当てられる。
【００７７】
ステップ１４２０では、好ましくは第２の処理素子タイプに実装される構成要素が特定され、第２のタイプの処理素子に割り当てられる。カテゴリ内の相対的な優先を示すサブカテゴリがある場合、最も優先される構成要素が最初に割り当てられる。
【００７８】
ステップ１４３０では、残りの論理構成要素が、ヒューリスティックに従い、第１および第２のタイプの残りの処理素子間で割り当てられる。例えば、残りの第２のタイプの素子がなくなるまで、残りの論理構成要素が第２のタイプの素子に割り当てられ、次に、第１のタイプの素子に割り当てられる。もしくは、残りの素子はサブカテゴリ毎に分割され、第２のタイプに相対的に優先される論理構成要素は第２のタイプに行き、第１のタイプに相対的に優先される論理構成要素は第１のタイプに行く。
【００７９】
選択信号出力
上述したように、ＡＬＵ１００の選択信号出力１７０（図１に示す）は、様々に異なる信号を備えることができる。図１５を参照すると、マルチプレクサ２００を制御する制御信号を生成し選択する選択回路１５００の例を、以下より詳細に説明する。選択回路１５００は、ＡＬＵ１００から、まとめてＡＬＵステータスワード（ＡＳＷ）と称される、ステータスビットを受信するように構成された複数のステータス入力１５１０を含む。各ステータス入力１５１０は、符号、オーバーフロー、キャリーアウトなどの特定のステータス信号を示すビット、命令入力１３０からのビット、または、マルチプレクサ２００を制御するのに有効な他のデータを保持する。
【００８０】
選択回路１５００は、まとめてマスクワードと称される複数のマスク入力１５２０も含む。マスク入力１５２０は、ＡＬＵステータスワードの１つまたは複数ステータスビットをマスクするために使用されるマスク値を受信するように構成される。マスク入力１５２０は、幅広いソースからマスク値を受け取ることができる。例えば、マスク入力１５２０は、第１の汎用ルーティングネットワークに接続されることによって、アレイ内の他の処理素子から動的にマスク値を受信することができる。もしくは、マスク入力１５２０は、特定のアプリケーション用に構成された場合にアレイにロードされるマスク値を含め、マスク値を記憶するローカルメモリに接続することができる。
【００８１】
ステータス入力１５１０およびマスク入力１５２０は、入力１５１０、１５２０でビット単位の論理積を実行するように構成される複数のＡＮＤゲート１５３０に接続される。ＡＮＤゲート１５３０はすべて、論理積を取られた値を全部結合するＯＲゲート１５４０に接続されて、マルチプレクサ２００のセレクタ入力２４０に提供される単独ビット出力を形成し、マルチプレクサ２００を制御する。
【００８２】
マスクワードをすべて０に設定することは、セレクタ入力２４０に送信されるマルチプレクサ制御信号がゼロになる、すなわち、マルチプレクサ２００が第２の入力２２０の値を常に出力２３０に供給するように固定されることを意味する。ＡＳＷのビットの１つが定数１である場合、マスクワードを有するこのビットを選択することは、制御信号が１になる、すなわち、マルチプレクサ２００が第１の入力２１０の値を常に出力２３０に供給するように固定されることを意味する。すべてが０の場合と組み合わせると、これによって、マルチプレクサ制御信号を定数０または定数１に設定する性能が提供される。
【００８３】
定数０と定数１の両方を可能にする別の方法は、図１６に示されるように、選択回路１５００を拡張することである。選択回路１５００は、ＯＲゲートの出力が反転されるように、ＯＲゲート１５４０にＸＯＲゲート１６１０を置くことによって拡張される。ＸＯＲゲート１６１０への他の入力は、アレイの構成中に値をロードされるデータソース１６２０に結合される。値が「１」の場合、ＸＯＲゲート１６１０はインバータとして動作し、ＯＲゲート１５４０からの出力値を反転させる。値が「０」の場合、ＸＯＲゲート１６１０はＯＲゲート１５４０の出力を伝播させる。したがって、ＸＯＲゲート１６１０は、「イネーブルインバータ」として機能する。この動きを表２に示す。
【００８４】
【表２】
2008541636.tif 000004
【００８５】
したがって、定数０をセレクタ入力２４０に送信することが所望される場合、マスクワードはすべて０に設定され、データソース値は０に設定される。定数１をセレクタ入力２４０に送信することが所望される場合、マスクワードはすべて０に設定され、データソース値は１に設定される。この代替策によって、マスクワードのすべての値に対して、ＯＲゲート１５４０の出力を反転させることができる。
【００８６】
これは、マルチプレクサ２００への制御の極性を変動できることを意味する。インバータが起動すると、ＯＲゲート１５４０の「１」出力によって第１の入力２１０の代わりに第２の入力２２０が選択され、ＯＲゲート１５４０からの「０」出力によって第２の入力２２０の代わりに第１の入力２１０が選択される。これは、マルチプレクサ２００がマルチプレクサ２００の入力２１０、２２０への非対称接続を有するときに有効である。この例が、レジスタ出力からのフィードバック径路が入力２１０、２２０のうちの１つにのみつながる、あるいは、専用の一定入力が入力２１０、２２０のうちの１つでのみ利用可能である場合である。
【００８７】
ＡＬＵステータスワードの可能な内容
ＡＳＷは、例えば、以下の値の１部または全部を示すビットを含むことができる。
ＡＬＵキャリーイン、
ＡＬＵキャリーアウト、
ＡＬＵ「オーバーフロー」（オーバーフローの２の補数定義を用いる）、
ＡＬＵ「正しい符号」（再び、２の補数定義に従う）、
ＡＬＵデータ入力１１０、１２０から直接得られる１つまたは複数のビット、あるいは
ＡＬＵ命令入力１３０から直接得られる１つまたは複数のビット
【００８８】
ＲＡＡ設計の１例では、ＡＬＵ命令値をＡＬＵ内のレジスタに記憶することができ、その場合、命令入力１３０は、専用マルチプレクサ制御入力としての使用のために利用可能である。これは、命令入力１３０が上記リストの「命令入力からのビット」と「データ入力からのビット」の両方をカバーするように使用できることを意味する。したがって、このリストの有効なサブセットは、キャリーアウト、正しい符号、およびＡＬＵ命令入力１３０からの２ビットを含む。
【００８９】
このサブセットは、マルチプレクサ制御信号が、例えば、以下のうちの１つであってもいいことを意味する。
キャリーアウトを介した符号なし比較（より小さい、より大きい）の結果、
符号信号を介した符号付き比較（より小さい、より大きい）の結果、
（再び符号信号を介した）符号拡張のために使用される符号付き演算処理の符号、
（再びキャリーアウトを介した）符号なし演算処理からのオーバーフロー、
（キャリーアウトを介した均一性テストの結果を報告するＡＬＵ設計のための）均一性テストの結果、あるいは
２命令ビットの選択で、命令入力１３０から得られるビット。（「データ入力からのビット」オプションもカバーする）。
【００９０】
したがって、このサブセットは、アプリケーション内で一般的にテストされる条件のいくつかをカバーする。ＲＡＡアプリケーションでは一般的でない符号付き演算オーバーフロー（ＲＡＡは一般的に、以下詳述するようなワード長管理に対する異なるアプローチを採用するため）は、正しい符号と演算結果のＭＳＢから合成される。
【００９１】
命令ビットの可能な選択肢
命令入力１３０のどのビットがＡＳＷで利用可能であるべきかの選択肢の中から以下の例を示す。
【００９２】
１．命令ＬＳＢとＭＳＢ。
ＬＳＢはルーティングネットワークでキャリーを伝播するために使用されるビットであり、キャリー値が正しい数値を有することを意味する（キャリーがある場合に１、キャリーがない場合に０）。命令入力１３０を介してキャリーを接続できることは、マルチプレクサ２００がローカルＡＬＵ１００からのキャリー、およびアレイ内の他のＡＬＵ１００からのキャリー（間接的に）よって制御可能であることを意味する。
【００９３】
ＭＳＢは同様の理由で選択される。ワード内に符号ビットがあるので、それを選択できることによって、符号データの選択に汎用性が提供される。
【００９４】
２．命令ＬＳＢと命令ビットｎ／２（すなわち、４ビットワード中でビット２、６ビットワードで３．．．）
ＬＳＢは上記＃１の選択肢と同じ理由で選択される。
【００９５】
ワードの途中でビットを選択すると、一連のシフトまたは回転とともに、複数のＡＬＵ１００の命令入力１３０を個々に用いるワードからのすべてのビットの抽出が簡易化される。反復シーケンス：
ビット０およびｎ／２を抽出する、
１位置を左に回転させる、
ビット０およびｎ／２を抽出する（ビットｎ−１およびｎ／２−１と等しい）、
１位置を左に回転させる、
ビット０およびｎ／２を抽出する（ビットｎ−２およびｎ／２−２と等しい）、
１位置を左に回転させる、
等は、ｎ／２回転ですべてのｎビットを抽出する効率的で規則的な方法を提供する。このために、使用されたビットを働かせることは、命令ワード内に均等な間隔に配置されなければならない。ビット０は他の理由で有効なので、他のビットがビット０から半ワードである。
【００９６】
ＡＳＷにとって有効な別のサブセットは、命令入力１３０の４ビットを含む５ビットワードとＡＬＵキャリー出力１５０である。このサブセットは以下の利点を有する。
【００９７】
１．キャリーアウトは上述したように、符号なし比較とオーバーフローを提供する。
２．命令入力１３０の全ビットを利用可能にすることで、ワードから得られる任意のビットでマルチプレクサ２００を制御することができる。これによって、ワード内のビットの任意の機能を構成することが比較的簡単になる（特に上述したように、論理ゲートを構成するためにマルチプレクサ２００の使用と組み合わされる場合）。
【００９８】
ワードから任意のビットを抽出する能力によって、符号拡張を実行し、ひいては、符号付きオーバーフローが発生しないように保証することが容易になる。
【００９９】
状態符号化
ＡＬＵステータスワードのどのビットをセレクタ入力２４０に接続すべきかを選択するためにｎビットマスクを使用することは、使用できる組み合わせが２ｎあることを示唆する。実質上、他の組み合わせほど一般的でない組み合わせもいくつかあり、全く使用されない組み合わせもある。
【０１００】
先に概説した４ビットＡＳＷを例に取ると、以下表３に概説されるように、１６の可能な組み合わせがある。最初の４列はマスク値を示し、第５列はセレクタ入力２４０に送られる結果の出力関数を示す。
【０１０１】
【表３】
2008541636.tif 000005
【０１０２】
使用される命令ビットを伴うラインは非常に稀で、使用されるキャリーおよび符号を伴うラインは実際には全く発生しない。キャリー  ＯＲ  符号は、通常のアプリケーションで発生する制御関数でない（符号は既にキャリーを有するＸＯＲを含んでいるため）。さらに、２つの命令ビットの使用は似ていない。ＬＳＢは、特に命令とキャリーまたは符号との組み合わせにおいてＭＳＢよりも一般的に使用される。
【０１０３】
したがって、より少ないビットで、マスクとＡＳＷを組み合わせるより複雑な論理回路を用いて符号化することのできる、この表の「一般的に使用される」サブセットを特定することが可能である。例えば、表内の８またはそれ以上の状態は、３ビットで符号化可能である。しかしながら、要求される解読は著しくさらに複雑化するであろう。代替策は、一般的な状態の解読の容易化のために４ビット符号化を維持し、非一般的な状態を利用して別の有効な関数を符号化することである。その例を以下に示す。
【０１０４】
高ファンアウト制御信号
多くのアプリケーションは、アプリケーション全体で広く使用される小数の制御信号を含む。例えば：
「グローバル  リセット」、
「グローバル  イネーブル」または
パイプライン  スタール／イネーブル
である。
【０１０５】
これらの信号は、レジスタ、そのリセットまたはイネーブル入力に接続するため、ＲＡＡでマルチプレクサ２００のマルチプレクサ選択入力２４０に接続すると予想される種類の信号である。
【０１０６】
これらの信号は、従来の再構成可能装置における汎用ルーティングネットワークによって不十分にしかサポートされていない。これらのネットワークは通常、アプリケーションのデータフローに典型的なルーティングパターンを扱うように最適化され、一般的には、これらのグローバル制御信号よりもずっと低いファンアウトを有する。「ファンアウト」とは、所与の出力が駆動する他の処理素子の入力の数である。ｎ−入力処理素子から構成される再構成可能装置内の平均ファンアウトはｎ以上であり、それは、すべての入力が出力か定数かのいずれかによって駆動されるためである。ＦＰＧＡとＲＡＡに関しては、ｎは通常４以上だが、高ファンアウト信号は何倍も大きなファンアウトを容易に有することができる。素子の中には、少数の高ファンアウト信号をアレイ全体を長距離通信するために、ルーティングネットワークを専用高ファンアウト接続に追加するものもある。しかしながら、これらの専用接続は、有効な方法でクラスタ３００に接続される必要がある。これらの高ファンアウト信号をサポートする代替策は、第２の汎用ルーティングネットワークまたは専用ルーティングネットワークを追加して、マルチプレクサ選択入力２４０に有効に接続することである。これらの代替策を以下説明する。
【０１０７】
上述の回路１５００は、様々なネットワーク（上述の第２の汎用ルーティングネットワークなど）への効率的な接続を含むように拡張でき、上述のＡＳＷ符号化スキームの非一般的な部分を活用することにより拡張を実行することができる。
【０１０８】
「全マスクビットセット」状態は、図１７に示されるように、マルチプレクサ制御径路への別の入力を選択するのに使用することができる。拡張される回路１５００は、入力をマスク入力１５２０から引き出す４入力ＡＮＤゲート１７１０を含む。４入力ＡＮＤゲート１７１０の出力は、マルチプレクサ１７２０のセレクタ入力に接続される。マルチプレクサ１７２０は、高ファンアウトネットワークから第１の入力１７３０を、回路１５００から第２の入力１７４０を受け取る。マルチプレクサ１７２０はＸＯＲゲート１６１０に出力を提供して、上述したように、マルチプレクサ２００のセレクタ入力２４０に選択信号を伝達する。
【０１０９】
マスク入力１５２０がすべて１に構成されるとき（表３の最終行）、これによって４−入力ＡＮＤゲート１７１０の出力はＨｉｇｈにされ（１）、マルチプレクサ１７２０は高ファンアウトネットワークから第１の入力１７３０を選択させられて、ＸＯＲゲート１６１０を介してマルチプレクサ２００に選択信号を提供する。したがって、マルチプレクサ２００は、高ファンアウトネットワーク上で転送される信号によって制御される。
【０１１０】
マスク入力１５２０が他の値で構成されるとき、４入力ＡＮＤゲート１７１０の出力はロー（０）のままで、マルチプレクサ１７２０に回路１５００から第２の入力１７４０を選択させて、ＸＯＲゲート１６１０を介して、マルチプレクサ２００に選択信号を提供する。したがって、マルチプレクサ２００は上述したように、ＡＬＵ１００によって制御される。
【０１１１】
回路１５００などのＡＳＷ処理論理回路は、上述したように任意に拡張され、高ファンアウト制御ネットワークに提供される高ファンアウト制御信号の有効なソースでもある。「グローバル」制御信号は通常、「ローカル」制御信号と同じように得られ、アレイの大部分に提供される。したがって、回路１５００の出力は、高ファンアウト制御ネットワークにも転送される。出力は、図１７に示されるように高ファンアウト制御ネットワークに直接転送することができ、また、出力はまずマルチプレクサ１７２０を介して転送され、高ファンアウトネットワークへの接続は、マルチプレクサ１７２０の出力に対して行われる。この代替的な接続によって、高ファンアウト出力を代わりに高ファンアウト入力から得ることができる。
【０１１２】
ＡＳＷ選択表（表３）から複数の「非一般的」状態を符号化し、高ファンアウトネットワークから複数の入力間を選択するこの回路の変形が可能である。もしくは、これらの複数の非一般的状態は、高ファンアウト出力を駆動する状態を選択するのに使用することができる。
【０１１３】
高ファンアウト出力を高ファンアウトネットワークに接続することのできる方法がいくつかある。有効な方法は、トライステートバッファを介して接続することで、トライステートイネーブルは、素子の構成状態の１部（例えば、専用構成ビット）によって駆動される。この形式の接続は、複数のソースが高ファンアウト配線を駆動できるが、タイミングはどのソースが実際に使用されるかに依存しないという利点がある。これによって、分析するルーティングソフトウェアにとって高ファンアウトネットワークのタイミングが容易になる。
【０１１４】
高ファンアウト制御ネットワーク
上記セクションでは、高ファンアウト制御信号の有益性と、それらがいかにしてマルチプレクサ制御回路１５００とインタフェースをとるかについて説明している。本セクションでは、汎用ルーティングネットワークを形成するために、高ファンアウト接続配線が使用する有効な接続パターンを説明する。
【０１１５】
再構成可能アレイ内の処理素子は、完全に作製されたグリッドまたは部分的に作製されたグリッド（例えば、チェッカーボードまたはクロスボード配列）のいずれかであるＸ−Ｙグリッド上に行および列で配列されると推定される。このようなアレイでは、共有のマルチプレクサ制御信号を共有するこれらの素子を、
行、
列、または
略矩形のパッチ、に配列することができる（高ファンアウト制御信号は、ビットスライス（またはサブ−ワード−スライス）スタイルレイアウトを有するデータ経路を制御するために使用されているという推定に基づく）。
【０１１６】
これらのパターンはすべて、基本的に矩形構造の変形である。したがって、これらのパターンを有効に構成することができる高ファンアウト配線にとって有益である。以下は上記パターンを構成する高ファンアウトネットワークの例である。
【０１１７】
１．アレイは、垂直および水平両方向に高ファンアウト配線を含む。
２．各高ファンアウト配線は、水平または垂直に（すなわち、行または列に沿って）走り、交差するすべてのＡＬＵ１００につながる。配線は行（列）全体に沿って、あるいはその１部に沿って延びることができる。
３．高ファンアウト配線は、以下の追加の制限で、上述されるようにマルチプレクサ制御回路１５００に接続する。
【０１１８】
ＡＬＵ１００につき２つ以上のマルチプレクサ２００がある場合、各回路１５００は、垂直配線に接続される高ファンアウト配線からの入力とそこへの出力（すなわち、垂直からの入力と水平への出力、またはその逆）を有する。
【０１１９】
ＡＬＵ１００につき１つのみのマルチプレクサ２００がある場合、回路１５００は、高ファンアウトネットワークから／への入力および出力を水平および垂直高ファンアウト配線の両方に接続することができるべきである。
【０１２０】
配線は自然に水平および垂直方向に延びるため、上述したように、行および列接続を形成するのは容易である。さらに、水平配線から入力し、垂直配線へ出力する性能（あるいはその逆）によって、２次元パッチを作製することができる。水平配線は、水平配線が交差するいくつかの垂直配線に接続することができる。
【０１２１】
配線がアレイ全体を延びない状況では、その端部が千鳥状に配列されるべきである。すなわち、隣接列（および行）の平行配線の端部は一致せず、互いに相殺されるべきである。４つのＡＬＵ１００にまたがる制御配線（通常のＲＡＡ用語では「長さ４」配線）の場合を検討する。列０では、これらの配線は、例えばＡＬＵ０からＡＬＵ３に、ＡＬＵ４からＡＬＵ７等に延びることができるが、列１では、例えばＡＬＵ２からＡＬＵ５、ＡＬＵ６からＡＬＵ９等に延びることができる。これらの配線の範囲は重複するため、２配線の垂直の総到達範囲が単独の配線の到達範囲よりも大きくなるように、水平制御配線と接続することができる。
【０１２２】
図２０に示されるようなチェッカーボード配列は、偶数の行だが奇数の列（またはその逆）にＡＬＵがないという特性を有する。それらのサイトはＡＬＵ間の空間、あるいはより一般的には、ルーティングネットワークをサポートするハードウェアによって占められている。上述の接続パターンは結果的に、独立する制御ネットワーク２０１０ａおよび２０１０ｂを生成し、一方は奇数の行および列にあるＡＬＵ２０００を連結し、他方は偶数の行および列にあるＡＬＵ２０００を連結する。図２０では、ＡＬＵ２０００間の線は、制御ネットワーク接続を示す。ＡＬＵ２０００内を交差する線は制御ネットワーク２０１０ａ、２０１０ｂを形成するように、互いに接続可能である。ＡＬＵ２０００の外部を交差する線は制御ネットワーク２０１０ａ、２０１０ｂを形成するように、互いに接続可能ではない。これは許容可能な状況で、２つのネットワークは２つの別個の制御信号を配分するのに使用され、もしくは、これらの２つのネットワーク２０１０ａ、２０１０ｂ間の接続を提供することも有効であると考えられる。それらが交差する点は、チェッカーボードのルーティング領域にあるため、必要に応じてこの接続をサポートするのが容易である。
【０１２３】
汎用ルーティングネットワーク２０１０ａ、２０１０ｂは、上述の第１の汎用ルーティングネットワークから分離される。信号は、上記図４Ｂに関して説明したようにマルチプレクサを制御することによって、２０１０ａ、２０１０ｂから第１の汎用ルーティングネットワークに伝播する。
【０１２４】
制御信号としての「符号」と「オーバーフロー」の有用性
「符号」は、ＦＰＧＡまたはＲＡＡベースの再構成可能アレイの制御信号として特に有用である。これは上記アレイとオーバーフローを使用しがちな従来のプロセッサの間の差異である。この理由を以下に説明する。
【０１２５】
オーバーフロー
プロセッサは、ワード長に対して非常に限定的な制御を行い、通常は小さな範囲のワード長しかサポートしない（例えば、８、１６、および３２ビット−２の累乗の範囲が一般的である）。ＦＰＧＡおよびＲＡＡ装置は、広範囲のワード長をサポートすることができ、アレイを構成する処理素子の粒状度によってのみ制限される。すなわち、アレイが４ビットの処理素子を有する場合、アレイは４ｎ（ｎは正の整数）と等しいワード長を直接扱うことができる。
【０１２６】
多くの演算アプリケーションは、「典型的な」データセットで実行されるとき、アプリケーション内で計算されるすべての中間データは特定のワード長に一致するが、中間結果が適合しない非一般的なデータセットがいくつかあるという特性を有する。代表的ケースはサポートされるワード長のうちの１つに適合するが、非一般的ケースは適合しない場合、プロセッサにとって重大な問題である。実装に基づく単純なプロセッサは、残念ながら以下の選択肢に直面させられる。
稀なケースを扱うのに十分な大きさのワード長で常に走り、このための効率性に関するペナルティを受け入れる、あるいは
小さなワード長で実行するが、結果が時に誤りである可能性を受け入れる。
【０１２７】
効率性のペナルティはかなり重大である可能性がある。例えば、１６ビットから３２ビットに変えると、実装は中間結果に必要なメモリの量を２倍にし、主データ経路の処理能力を半分にすることができる。しかしながら、時折のエラーの可能性は容認できないものであるかもしれない。
【０１２８】
幸運にも、この選択を回避するのに利用できる以下の第３のオプションがある。
通常の状況では、小さなワード長で実行するが、必要に応じて救済措置が取れるように（例えば、広いワード長で計算の１部または全部を再実行する）誤った解答を与える情況を検知する。
【０１２９】
これによって、アプリケーションは大半の時間、小さなワード長（メモリサイズ、データ経路処理能力）という利点を有することができ、必要とされる稀な場合に長いワード長バージョンというペナルティを支払うだけでよい。
【０１３０】
したがって、ほとんどのプロセッサは、演算結果がターゲットワード長に合致しないときを特定するオーバーフロー検出機構を有し、オーバーフローが発生したときにプログラムの別の部分に分岐することができる。したがって、「オーバーフロー」はプロセッサにとって重要な概念である。
【０１３１】
ＦＰＧＡおよびＲＡＡベースの処理に関して、状況は大きく異なる。ワード長の細粒制御のため、ワード長を延長するコストは大幅に低減され、分岐にかかるコストは大幅に高騰する。アプリケーションは通常は１６ビットワードに合致するが、時には、１８ビットを必要とすると仮定する。プロセッサはこれらの場合を扱う３２ビットワードを有していなければならないが、４ビット処理素子を有するＲＡＡは２０−ビットデータ経路を使用することができる。したがって、最悪のケースの状況をサポートするペナルティは、領域の１００％増ではなく２５％増である。
【０１３２】
上述したように、ＦＰＧＡおよびＲＡＡは、プログラムを介したすべての可能な経路にデータ経路を形成することによって分岐を実行する。次に、ＦＰＧＡおよびＲＡＡは、マルチプレクサを使用して特定のデータセットに正しい経路を選択する。２０ビットを使用して繰り返されるいくつかのセクションを有する１６ビット１次データ経路を設け、それらの間を選択する多重化を行うことによって、結果的に、単により広いデータ経路を全部使用するよりも広範な実装が実現される。
【０１３３】
要約すると、プロセッサは細粒ワード長制御は苦手だが分岐は得意であり、ＦＰＧＡおよびＲＡＡはワード長制御が得意で、分岐が不得手である。オーバーフロー検出は、ワード長問題を分岐に変換する方法であるため、プロセッサにとっては適するが、ＦＰＧＡまたはＲＡＡにとっては不適切である。
【０１３４】
符号
符合の結果を知ることは、アプリケーション内の以下の２つの具体的な演算にとって重要である。
比較：
Ａ＞Ｂは、ＡからＢを引き、結果の符号をチェックすることによって実現される（完全な値ではなく、結果の符合のみが重要である）。同様の方法が他の比較でも働く（＜、＜＝、＞＝）。
【０１３５】
符号拡張：
２の補数の符号付き数のワード長を増やす場合、符号ビットを追加のビットすべてにコピーする必要がある。符号ビットが一旦分かれば、これは通常単純な演算である。
【０１３６】
符号付き数および符号なし数の両方にとって正しい結果を得なければならない。「符号なし」のケースは、符号付き演算の特別なケースとみなすことができる（ｎビットの符号なし値がｎ＋１ビットの符号付き値に埋め込まれている）。２の補数の表記では、値−Ｘは、符号ビットを示す最上位ビット（「ＭＳＢ」）１とともに（ＮＯＴ  Ｘ）＋１と表される。よって、
−２ｄｅｃｉｍａｌ＝ＮＯＴ（０１０ｂｉｎａｒｙ）＋１ｂｉｎａｒｙ
＝１０１ｂｉｎａｒｙ＋１ｂｉｎａｒｙ＝１１０ｂｉｎａｒｙ．
【０１３７】
符号なし比較は常に、演算の最上位ビットからキャリーアウトによって正しく表される。
減算とＭＳＢからのキャリーアウトのテストによる符号付き比較は、演算オーバーフローがある場合、誤った結果を生じる。これは、「キャリーアウト」信号と「オーバーフロー」信号の組み合わせで、あるいは符号信号を直接生成することによって調整することができる。
符号なし「符号拡張」は取るに足らず、追加されたすべてのビットが０である。
符号付き符号拡張は上述した通りである。符号がすべての追加ビットにコピーされる。
ワード長制御の様々な実現とプロセッサにおける分岐および上述のＦＰＧＡとＲＡＡは、符号が如何にして算出され使用されるかに影響を及ぼす。
【０１３８】
プロセッサ
プロセッサは、主制御機能として分岐を使用し、比較を利用して分岐を制御する。これは、組み合わされた「比較と分岐」命令または別々の「比較しフラグを設定」と「フラグ設定ならば分岐」命令のいずれかで行われる。したがって、比較演算と上述のオーバーフロー処理の説明との間にはいくらかの類似点がある。どちらも、「演算実行」段階の後に「条件が発生すれば分岐」（すなわち、オーバーフローがあれば、あるいは比較が真であれば）が続く。類似点はしばしば明確化され、プロセッサは、１セットの関連条件のうちのどれが生じたか（例えば、演算オーバーフロー、負の結果をもたらした演算（すなわち、「符号」）、最も近いキャリーアウト値）を示す１セットの「条件フラグ」と、１つまたは複数の特定のフラグのサブセットが設定された場合に飛び越す一般的な分岐命令とを有する。
【０１３９】
符号拡張、データがメモリからプロセッサにロードされたときに通常生じる。データがロードされるフォーマットよりもコンパクトなフォーマットで記憶される場合、符号拡張はロード演算で、記憶された表示のＭＳＢをイン−プロセッサバージョンの追加ビットに複製する。
【０１４０】
ＦＰＧＡ
分岐はＦＰＧＡの非効率的な演算である。ＦＰＧＡにおける比較演算は、マルチプレクサへの制御入力、または複数の条件を組み合わせる論理のブロックとして使用される可能性が高い。ルーティングネットワーの１ビットの性質は、以下与えられる正しい符号の表現を直接実行するのを簡易化するため、符号の計算は単純な演算である。
【０１４１】
ＦＰＧＡにおける符号拡張は、ルーティング演算であってもよい。ＦＰＧＡルーティングの１ビットの性質によって、符号ビットは複数の宛先に容易に接続させることができる。しかしながら、ｎビット入力とｎ＋１ビット出力の演算子を実現するのが容易なので、演算処理に入力を拡張する必要がない場合が多い。
【０１４２】
ＲＡＡ
ＲＡＡは、プロセッサとＦＰＧＡ間の中間のケースである。一般的な分岐はまだ非効率であるが（いくつかの限定的な形式は命令を多重化することによって実現できるが）、ルーティングネットワークはビットベースではなくワードベースであるので、符号とオーバーフロー式の直接的な実現はより困難であり、ワード内のビットの位置を調節するためのシフトを要する。したがって、符号および／またはオーバーフローを直接生成するためにＲＡＡ ＡＬＵに追加の論理を追加することを検討する価値がある。例えば、符号は有益で、それを実現するにはたった１つのＸＯＲゲートだけでよい。
【０１４３】
符号拡張は、ワード内のビットを再配列する必要性のため、単純なルーティングオプションにはなり得ない。しかしながら、演算出力の符号拡張は（上記のＦＰＧＡのケースで述べたように）ＲＡＡとともに使用することもでき、符号信号の利用可能性から直接恩恵を得る。図１８の回路は−マルチプレクサ１８３０を制御する加算（または減算）演算１８２０の符号出力１８１０を有する−、図３に示されるクラスタ３００のＡＬＵ１００およびマルチプレクサ２００上に直接マップする。その回路は、図４Ａに示される符号付き比較に続くデータ選択用に使用される回路構造と同一である。回路は入力として加算または減算される２つの数を受け取り、符号値を拡張することによって、出力として演算の結果と出力を所望の長さにパッドする追加数のビットとを生成する。
【０１４４】
図１８の回路では、符号出力１８１０が負の数を示す値「１」を保持する場合、マルチプレクサ１８３０はすべて１の第１の入力値を選択し、その結果をパッドする。符号出力１８１０が正の数を示す値「０」を保持する場合、マルチプレクサ１８３０はすべて０の第２の入力値を選択し、その結果をパッドする。
【０１４５】
要約すると、必須の論理を直接実現できるとき、専用符号論理はＦＰＧＡにほとんど利益をもたらさない。プロセッサ（分岐のための制御フラグとして）、および条件付きの制御と符号拡張の両方のために使用可能である場合、マルチプレクサ２００の制御信号としてＲＡＡにとって、大きな利益をもたらす。
【０１４６】
符号およびオーバーフローの式の導出
加算における個々のビットに関して、サムとキャリーアウトは以下のように入力（Ａ、Ｂ、キャリーイン）に関連する（ＢがＮＯＴ  Ｂに置き換えられる場合、同じ式が減算にも働く）。
Σｉ＝Ａｉ＾Ｂｉ＾Ｃｉ−１
Ｃｉ＝ｉｆ（Ａｉ＾Ｂｉ）ｔｈｅｎ（Ｃｉ−１）ｅｌｓｅ（Ａｉ）
Ｃｉ−１がキャリーインで、Ｃ１がキャリーアウト、＾がＸＯＲ演算を表す。
【０１４７】
ｎビットでの計算結果が、計算がより正確に行われた場合、例えば、入力と出力がｎ＋１ビットに拡張されている場合、に得られたであろう結果と異なる場合に、オーバーフローが生じている。符号付きのケースと符号なしのケースは別々に扱われるべきである。
【０１４８】
符号なしのケース
入力拡張は、先行０を追加することによって達成される。
Σｎ−１＝Ａｉ−１＾Ｂｎ−１＾Ｃｎ−２
Ｃｎ−１＝ｉｆ（Ａｎ−１＾Ｂｎ−１）ｔｈｅｎ（Ｃｎ−２）ｅｌｓｅ（Ａｎ−１）
Σｎ＝Ａｎ＾Ｂｎ＾Ｃｎ−１
Ａｎ＝０
Ｂｎ＝０
Σｎ＝Ｃｎ−１
【０１４９】
符号なしの加算では、結果内の追加ビットは０であるべきなので、ｎビット計算からのキャリーアウトがゼロでなければオーバーフローがある。減算のケースでは（すなわち、Ｂをｎｏｔ  Ｂに置き換える）、我々は
2008541636.tif 000006
を有し、期待値は再び０である。したがって、オーバーフローは加算ではキャリーアウトで、減算ではＮＯＴ（キャリーアウト）である。
【０１５０】
正しい符号は、符号なし加算では常に正である。減算に関しては、負の結果はオーバーフローを引き起こすため、減算の場合、正しい符号＝オーバーフロー＝ｎｏｔキャリーアウトである。
【０１５１】
符号付きのケース
入力拡張は、ＭＳＢを繰り返すことによって達成される。
Σｎ−１＝Ａｎ−１＾Ｂｎ−１＾Ｃｎ−２
Ｃｎ−１＝ｉｆ（Ａｎ−１＾Ｂｎ−１）ｔｈｅｎ（Ｃｎ−２）ｅｌｓｅ（Ａｎ−１）
Σｎ＝Ａｎ＾Ｂｎ＾Ｃｎ−１
Ａｎ＝Ａｎ−１
Ｂｎ＝Ｂｎ−１
Σｎ＝Ａｎ−１＾Ｂｎ−１＾Ｃｎ−１
【０１５２】
追加出力ビットの期待値は、最初の計算のＭＳＢを繰り返すべきである。したがって、オーバーフローＶは、これらの２ビットのＸＯＲに等しい。
Ｖ＝Σｎ＾Σｎ−１
＝（Ａｎ−１＾Ｂｎ−１＾Ｃｎ−１）＾（Ａｎ−１＾Ｂｎ−１＾Ｃｎ−２）
＝０＾０＾（Ｃｎ−１＾Ｃｎ−２）
＝Ｃｎ−１＾Ｃｎ−２
【０１５３】
したがって、オーバーフロー信号は、ｎビット演算の最終段階のキャリーインとキャリーアウトを組み合わせる単独のＸＯＲゲートで生成することができる。
【０１５４】
正しい符号（しばしば負フラグＮと称される）は追加出力ビットと等しい。
Ｎ＝Σｎ
＝Ａｎ−１＾Ｂｎ−１＾Ｃｎ−１
【０１５５】
しかし、Ａｎ−１＾Ｂｎ−１項は既にｎビット値のＭＳＢの演算の１部として計算されているので、符号は評価するのに追加のＸＯＲゲート１つで済む。
【０１５６】
要約すると、符号なしケースに関しては、正しい符号およびオーバーフローはキャリー出力と直接関係する。符号付きケースでは、これはもはや真実ではないが、それらを正しく生成するために、符号とオーバーフローの両方は。それぞれ１つの追加ＸＯＲゲートの加算しか必要としない。
【０１５７】
特定目的ルーティングネットワーク
図２１を参照し、クラスタ３００が専用ルーティングネットワーク２１１０に接続される場合の、本発明の別の実施形態を説明する。クラスタ３００は上述したように、ＡＬＵ１００と１次マルチプレクサ２００を含む。ＡＬＵ１００の選択出力１７０からマルチプレクサ２００のセレクタ入力２４０への直接接続は本実施形態では、選択出力１７０から専用ルーティングネットワーク２１１０の第１のルーティング入力２１２５への接続と、第１のルーティング出力２１６５から１次マルチプレクサ２００のセレクタ入力２４０への接続と置き換えられる。明瞭化のため、クラスタ３００に対応する専用ルーティングネットワーク２１１０の部分のみを図２１に示す。複数のクラスタ３００を含む再構成可能装置は、信号を追加のクラスタ３００との間を行き来させるのに供する専用ルーティングネットワーク２１１０の追加の部分も含むことが認識される。上記再構成可能装置の部分の例を以下に説明する。
【０１５８】
特に示されない限り、図２１〜３４に示される実施形態は、汎用ルーティングネットワーク（太線で示す）に対する４ビット接続と、専用ルーティングネットワーク（細線で示す）に対する１ビット直接接続および接続を有する。これらのビット幅は本発明のいくつかの実施形態の単なる例であって、直接、あるいは、汎用または専用ルーティングネットワークを介してでも、接続のための他のビット幅を使用することができると了解される。
【０１５９】
専用ルーティングネットワーク２１１０は、セレクタ２１１５、例えば、複数の入力信号のうちの１つを選択して出力として供給するためのマルチプレクサのようなルーティング素子を含む。もしくは、セレクタ２１１５は、上述の選択回路１５００に似た回路を含め、追加の論理機能を含むことができる。セレクタ２１１５はマスクを介して構成可能である、あるいは、汎用ルーティングネットワークなどの別のソースから選択信号を受信することができる。
【０１６０】
セレクタ２１１５への入力は、第１のセレクタ入力２１２０、第２のセレクタ入力２１３０、および第３のセレクタ入力２１４０を含む。第１のセレクタ入力２１２０は、第１のルーティング入力２１２５に接続される。第１のセレクタ入力２１２０は、ＡＬＵ１００の選択出力１７０から値を取得する。第２のセレクタ入力２１３０は、専用ルーティングネットワーク２１１０内の隣接セレクタに接続され、隣接セレクタから値を取得する。第３のセレクタ入力２１４０は専用ルーティングネットワーク２１１０の第２のルーティング入力２１４５に接続され、第２のルーティング入力２１４５は汎用ルーティングネットワークに接続されて、そこから値を取得する。なお、本実施形態では、第２のルーティング入力２１４５は１ビット幅入力であるが、本実施形態の汎用ルーティングネットワークは４ビットネットワークである。上述したように、および以下さらに詳細に説明するように、１ビット信号は様々な技法を用いて４ビットネットワークから検索することができる。
【０１６１】
専用ルーティングネットワーク２１１０は、セレクタリンク２１５０とセレクタ出力２１６０も含む。セレクタリンク２１５０は、セレクタ２１１５の出力を、専用ルーティングネットワーク２１１０内の別のセレクタに、最終的には、専用ルーティングネットワーク２１１０と対応付けられる他のクラスタ内の他のマルチプレクサに提供する。セレクタリンク２１６０は、セレクタ２１１５の出力を、ルーティング出力２１６５に、最終的には１次マルチプレクサ２００のセレクタ入力２４０に提供する。
【０１６２】
クラスタ３００は、専用キャリールーティングネットワークに接続し、キャリー信号をＡＬＵ１００から再構成可能装置内の他のクラスタの他のＡＬＵに転送する。キャリーネットワークは、ＡＬＵ１００によって生成されるキャリーアウト（Ｃｏｕｔ）信号を、キャリー出力２１９０を介して隣接クラスタの隣接ＡＬＵに送信する。キャリーネットワークは、再構成可能装置内の他のＡＬＵによって、あるいは、第１のキャリー入力２１７５および第２のキャリー入力２１８０上のキャリーイン信号（外部装置からの入力など）の他のソースによって生成されるキャリーイン（Ｃｉｎ）信号を受信する。第１のキャリー入力２１７５は、再構成可能装置内の 隣接ＡＬＵからキャリーイン信号を受信する。第２のキャリー入力２１８０は、汎用ルーティングネットワークからキャリーイン信号を受信する。キャリーイン信号の追加のソースを提供することもできる。キャリー選択マルチプレクサ２１７０などのルーティング素子は、所望のキャリーイン信号ソースをすべて受信し、ＡＬＵ１００への伝播のためにそれらのうちの１つを選択する。選択する特定のキャリーイン信号は、アプリケーション設計に従い、再構成可能装置に構成されるアプリケーションの設計者によって決定される。次に、選択されたキャリーイン信号は、ＡＬＵ１００に提供される。
【０１６３】
演算中、ＡＬＵ１００は、上述したように、選択信号を選択信号出力１７０に提供する。この選択信号はルーティング入力２１２５を介してセレクタ入力２１２０に転送され、その信号はさらにセレクタ２１１５によって転送される。ＡＬＵ１００から選択信号を受信することに加えて、セレクタ２１１５は、第２のセレクタ入力２１３０を介して、専用ルーティングネットワーク２１１０に接続される別のＡＬＵから選択信号を受信することもできる。また、セレクタ２１１５は、第３のセレクタ入力２１４０を介して、汎用ルーティングネットワークから選択信号を受信することができる。第３のセレクタ入力２１４０上の信号は、再構成可能装置の他の素子、あるいは再構成可能装置の外部ソースなど、幅広いソースから得ることができる。次に、セレクタ２１１５は、その後転送されるべき入力として、複数入力の中から１つの入力を選択する。セレクタ２１１５は、再構成可能装置が構成段階にあるとき、特定の入力を選択するように統計的に構成することができ、また、セレクタ２１１５は、再構成可能装置が設計段階にあるとき動的に構成することができる。セレクタ２１１５の特定の構成は、再構成可能装置に構成される特定のアプリケーションによって決定される。
【０１６４】
例えば、クラスタ３００が特定の制御信号の生成の主ソースである アプリケーションによって構成される場合、セレクタ２１１５は、（選択出力１７０から）第１のセレクタ入力２１２０上の値を選択し、その値をセレクタ出力２１６０に転送し、次に１次マルチプレクサ２００のセレクタ入力２４０に転送するように構成される。この値は、セレクタリンク２１５０を用いて、専用ルーティングネットワーク２１１０で、別のセレクタに転送され、そして再構成可能装置内の他のクラスタの他のマルチプレクサに転送される。
【０１６５】
しかしながら、クラスタ３００が、特定の制御信号の主ソースである専用ルーティングネットワーク２１１０に接続される別のクラスタのスレーブである場合、セレクタ２１１５は、（隣接クラスタから）第２のセレクタ入力２１３０上の値を選択し、それをセレクタ出力２１６０、セレクタ入力２４０に転送され、さらにセレクタリンク２１５０を介して別のセレクタに転送するよう構成される。クラスタが専用ルーティングネットワーク２１１０に接続されない別のクラスタのスレーブである場合、セレクタ２１１５は、（汎用ルーティングネットワークから）第３のセレクタ入力２１４０上の値を選択し、それを上述したようにさらに転送するように構成される。したがって、制御または他の信号は、幅広いソースから受け取られ、マルチプレクサまたは再構成可能装置内のクラスタの他の構成要素の入力または所望の他の入力を選択するように効率的に転送されることができる。
【０１６６】
再構成可能装置の一実施形態である専用ルーティングネットワーク２１１０は、図２２に示されるように、素子内のクラスタ３００の列２２００に対応する、素子内の列形式に配置される。各セレクタ２１１５ａ〜ｄのセレクタリンク２１５０は、隣接セレクタ２１１５ａ〜ｄの第２のセレクタ入力２１３０に接続される。これによって、選択信号などの信号を、１つのクラスタ３００ａ〜ｄ内で生成し、列２２００の他のクラスタに迅速に伝播することができる。
【０１６７】
例えば、列２２００が（４つの４ビット幅ＡＬＵを用いて）１６ビット幅 データ経路を実現するのに使用される場合、４つすべての１次マルチプレクサ２００は通常、同じ制御信号を使用する必要がある。したがって、制御信号は、クラスタ３００ａ内のＡＬＵ１００によって生成し、専用ルーティングネットワーク２１１０を用いてクラスタ３００ｂ〜ｄ内の１次マルチプレクサ２００に転送することができる。もしくは、制御信号は、再構成可能装置内のどこかで生成し、１つまたは複数の第３のセレクタ入力２１４０を介して列２２００に供給することができる。
【０１６８】
制御信号は上述したように、クラスタ３００ａのＡＬＵ１００からセレクタ２１１５ａへ転送される、あるいは、第３のセレクタ入力２１４０上のセレクタ２１１５ａによって受信される。セレクタ２１１５ａは制御信号を保持する適切なセレクタ入力を選択し、クラスタ３００ａに接続されたセレクタ出力２１６０を介して、制御信号をクラスタ３００ａの１次マルチプレクサ２００に転送する。セレクタ２１１５ａは、制御信号をクラスタ３００ｂと対応付けられるセレクタ２１１５ｂにも転送する。セレクタ２１１５ｂは制御信号を受信し、その信号をさらにクラスタ３００ｂに接続されたセレクタ出力２１６０を介して、クラスタ３００ｂの１次マルチプレクサ２００に転送する。セレクタ２１１５ｂは上述したような方法で、制御信号を列２２００内のクラスタ３００ｃ〜ｄにも転送する。したがって、同じ制御信号が、クラスタ３００ａ〜ｄ内の１次マルチプレクサ２００のすべてに迅速に伝播される。
【０１６９】
図２２では、セレクタ２１１５ａによって画定される部分と対応付けられる配線とを通る、クラスタ３００ａのＡＬＵからクラスタ３００ａのＭＵＸまでの経路は、図２２に示される物理的および論理的に等価の経路（クラスタ３００ｂのクラスタ３００ｂ−ＭＵＸのＡＬＵ、クラスタ３００ｃのクラスタ３００ｃ−ＭＵＸのＡＬＵ、クラスタ３００ｄのクラスタ３００Ｄ−ＭＵＸのＡＬＵ）のいずれも塞がれないため、直接接続である。しかしながら、セレクタ２１１５ａおよびセレクタ２１１５ｂによって画定される部分と対応付けられる配線を通る、クラスタ３００ａのＡＬＵからクラスタ３００ｂのＭＵＸまでの経路は、セレクタ２１１５ｂおよびセレクタ２１１５ｃによって画定される等価部分と対応付けられる配線とを通る、クラスタ３００ｂのＡＬＵからクラスタ３００ｃのＭＵＸまでの等価経路を塞ぐ（セレクタ２１１５ｂで）ため、直接接続ではない。
【０１７０】
本実施形態の専用ルーティングネットワーク２１１０は、クラスタ３００ａ〜ｄのＡＬＵ１００を一緒に接続するキャリーネットワークのチェーンからは離れたネットワークである。専用ルーティングネットワーク２１１０は、再構成可能装置のクラスタ３００ａ〜ｄ内の各マルチプレクサ２００のセレクタ入力２４０などの入力を、別のマルチプレクサ２００の入力に接続し、キャリーネットワークのチェーンは、各ＡＬＵ１００のキャリー出力を隣接するＡＬＵ１００のキャリー入力に接続する。
【０１７１】
図２３を参照すると、専用ルーティングネットワーク２１１０はさらに、選択信号が列２２００の上下方向のように複数の方向に伝播できるように構成することができる。本実施形態では、下方向にセレクタ２１１５ａ〜ｄをリンクするように、追加のセレクタリンク２１５０が追加されている。これらの追加のセレクタリンク２１５０はそれぞれ、セレクタ２１１５ａ〜ｄ上の第４のセレクタ入力２３１０につながる。この構成では、信号は、クラスタ３００ｄ内のＡＬＵ１００の選択出力１７０からセレクタ２１１５ｄへ、そしてセレクタリンク２１５０へと転送することができる。次に、信号は、セレクタリンク２１５０に沿って、下方の隣接セレクタ２１１５ｃの第４の入力２３１０へ下方向に転送される。セレクタ２１１５ｃは、第４の入力２３１０を選択し、選択信号を受信し、クラスタ３００ｃの１次マルチプレクサ２００に接続されるセレクタ出力２１６０に選択信号を転送する。
【０１７２】
上記の実施形態では、専用ルーティングネットワーク２１１０は、ＡＬＵから１次マルチプレクサに選択信号を移送するように構成されていた。図２４〜２６に示される別の実施形態では、選択信号以外の信号は、専用ルーティングネットワーク２１１０を用いて転送させることができる。例えば、図２４では、ＡＬＵ１００の関数出力１６０は、専用ルーティングネットワーク２１１０の第１のルーティング入力２１２５に接続される。ルーティング出力２１６５は、１次マルチプレクサ２００の第２の入力２２０に接続される。もしくは、ルーティング出力２１６５は、第１の入力２１０に接続することができる。このルーティングネットワークは、ＡＬＵ１００のデータ出力を、同じクラスタの１次マルチプレクサのデータ入力、および専用ルーティングネットワーク２１１０に接続される他の１次マルチプレクサのデータ入力に転送する。
【０１７３】
図２５では、マルチプレクサ出力２３０は、第１のルーティング入力２１２５に接続される。ルーティング出力２１６５は、ＡＬＵ１００の命令入力１３０、および専用ルーティングネットワーク２１１０を介して他のＡＬＵの命令入力に接続される。この構成によって、１次マルチプレクサ２００は、命令をＡＬＵ１００および、専用ルーティングネットワーク２１１０に接続される他のＡＬＵに送ることができる。
【０１７４】
図２６では、ＡＬＵ１００の関数出力１６０は、専用ルーティングネットワーク２１１０の第１のルーティング入力２１２５に接続される。ルーティング出力２１６５は、ＡＬＵ１００の命令入力１３０に、および専用ルーティングネットワーク２１１０を介して他のＡＬＵの命令入力に接続される。この構成によって、ＡＬＵ１００は、自身に、および専用ルーティングネットワーク２１１０に接続される他のＡＬＵに命令を送ることができる。
【０１７５】
図２７では、マルチプレクサ出力２３０は、第１のルーティング入力２１２５に接続される。ルーティング出力２１６５は、キャリー選択マルチプレクサ２１７０の第２のキャリー入力２１８０と、専用ルーティングネットワーク２１１０を介して他のキャリー選択マルチプレクサの入力にも接続される。この構成によって、１次マルチプレクサ２００は、キャリー情報をＡＬＵ１００と、専用ルーティングネットワーク２１１０に接続される他のＡＬＵにも送信することができる。この構成は図１２の構成に似ており、１次マルチプレクサ出力２３０はキャリー入力マルチプレクサ１２１０に接続され、専用ルーティングネットワーク２１１０を介して、他のクラスタ内のキャリー入力マルチプレクサに追加で接続される。
【０１７６】
図２８では、キャリーアウト出力１５０は、第１のルーティング入力２１２５に接続される。ルーティング出力２１６５は、１次マルチプレクサ２００の第２の入力２２０に、および専用ルーティングネットワーク２１１０を介して他のクラスタ内の他の１次マルチプレクサの入力に接続される。この構成によって、ＡＬＵ１００は、キャリーアウトデータを１次マルチプレクサ２００、および専用ルーティングネットワーク２１１０に接続される他の１次マルチプレクサに送ることができる。この構成は図１２の構成と同様で、キャリーアウト出力１５０は入力選択マルチプレクサ９１０に接続され、専用ルーティングネットワーク２１１０を介して、他のクラスタ内の入力選択マルチプレクサにも追加接続される。
【０１７７】
別の実施形態では、再構成可能装置内の他の構成要素の特定ターミナルとの間で信号を伝播できる高速ネットワークを提供するために、専用ルーティングネットワーク２１１０は再構成可能装置の構成要素のどの入力および出力とも接続させることができる。専用ルーティングネットワーク２１１０が再構成可能装置内のいくつかの等価構成要素の入力をまとめることによって、再構成可能装置は、再構成可能装置に見られるＡＬＵや１次マルチプレクサなどの様々な構成要素に対応するより広いデータ経路を実現することができる。
【０１７８】
専用ルーティングネットワーク２１１０は、信号を汎用ルーティングネットワークに送受信できるように、再構成可能装置上の汎用ルーティングネットワークへの接続を含むこともできる。これらの接続の例は、第２のルーティング入力２１４５への接続である。これらの接続は、専用ルーティングネットワークによって信号を汎用ルーティングネットワークと送受信させることによって、再構成可能装置の柔軟性を高める。
【０１７９】
図２９を参照すると、出力インバータ１６１０は任意に、セレクタリンク２１５０とセレクタ出力２１６０の一方または両方に追加することができる。これらの出力インバータ１６１０を以下詳細に説明する。図２９の実施形態に適用されるように、選択信号の１次マルチプレクサ２００への変換は、入力２１０、２２０の役割の交換と等価である。したがって、選択信号２４０の変換によって、制御されたマルチプレクサ２００の入力２１０、２２０を逆方向に接続させることができる。場合によっては、このために、これらの接続を形成するコストを低減することができ、選択信号２４０の任意の変換のコストは、同じレベルのルータビリティを達成するより低性能の汎用ルーティングネットワークを設けることで回収できる。セレクタリンク２１５０の任意の変換を追加することで、セレクタ２１１５に入力または論理をマッピングする際の追加の汎用性を可能にする。この出力変換は、選択信号の１次マルチプレクサ２００への任意の変換と、２つの選択肢が無関係な点によって判断されるかどうかは関係なく共有でき、あるいは、選択できる。
【０１８０】
プログラム可能セレクタ
本明細書に記載するような、汎用ルーティングネットワークと専用ルーティングネットワークなどの２つのネットワークを含む再構成可能装置では、信号が１つのネットワークから別のネットワークに移される場合がある。よくあるように、汎用ルーティングネットワークが専用ルーティングネットワークとビット幅が異なる場合、２つのネットワークの広い方のビット幅容量を効率的に使用する、２つのネットワーク間の接続を設けることが有益である。
【０１８１】
以下の図２９〜３３に記載される実施形態は、４ビット汎用ルーティングネットワークと２ビット専用ルーティングネットワークを仮定するが、当業者は、後述する概念が汎用ルーティングネットワークまたは専用ルーティングネットワークのいずれかのビット幅にも同等に適用されることを認識するであろう。
【０１８２】
プロセッサ条件信号などの専用ルーティングネットワーク上の２ビット幅信号は、同じ演算値の信号を４ビット幅ネットワークを単に配置することによって、４ビット幅汎用ルーティングネットワークで表示させることができる。例えば、［１１］の２ビットのプロセッサ条件信号は、［００１１］として４ビット幅ネットワークで表示させることができ、条件信号は４ビット幅ネットワークの最下位２ビットに配置される。次に、この同じ信号は、４ビット幅信号の最下位２ビットを２ビットネットワークに単に配置することによって、２ビットネットワークに配置し直すことができる。
【０１８３】
この原理は、直接接続上の信号をルーティングネットワークに送受信する際にも適用される。例えば、１ビットの直接接続から４ビットネットワークに信号を伝達する。これを実現する構成は、図４Ｂに示され、図４Ｂを説明する本文に記載されている。同様に、信号は、４ビットネットワークから１ビットの直接接続に伝達することができる。これを実現する構成は、図１２に示され、図１２を説明する本文に記載されている。
【０１８４】
このように４ビットネットワーク上で２ビット信号を転送すると、４ビットネットワークの４ビットのうちの２ビットは使用されなくなる。本発明のさらなる実施形態によると、図３０〜３４に示されるように、再構成可能装置上の信号は、セレクタを使用する様々なビット幅のルーティングネットワーク間でより効率的に転送されることができる。
【０１８５】
図３０Ａを参照すると、一実施形態の狭化セレクタ３０００は、汎用ルーティングネットワークなどの第１のネットワークからのデータ入力３００５とセレクタ入力３００７とを含む。狭化セレクタ３０００は、専用ネットワークまたは直接接続などの第２のネットワークへのデータ出力３０１０も含む。データ入力３００５は、データ出力３０１０より広い。本実施形態では、データ入力３００５は４ビット幅で、データ出力３０１０は２ビット幅だが、別の実施形態では他の幅を使用することができる。狭化セレクタ３０００は、データ入力３００５上の４ビットの中から選択し、セレクタ入力３００７の信号に従い、選択したビットをデータ出力３０１０に供給する。
【０１８６】
図３０Ｂ〜Ｃを参照すると、一実施形態の狭化セレクタ３０００は、論理ゲートを用いて構成される。狭化セレクタ３０００で使用される基本ブロック３００１を図３０Ｂに示す。ブロック３００１は、４つのＡＮＤゲート３０２０ａ〜ｄと１つのＯＲゲート３０３０を含む。各ＡＮＤゲート３０２０ａ〜ｄは、データ入力３００５の１ビット（Ｉ０、Ｉ１、Ｉ２、Ｉ３）とセレクタ入力３００７の２ビット（０、１）を受信する。セレクタ入力３００７のビットは、下記図４に示される選択スキームを実行するために、ＡＮＤゲートに提供される前に反転させることができる。各ＡＮＤゲート３０２０ａ〜ｄは、ＯＲゲート３０３０の入力の論理和を出力する。ＯＲゲートは、出力３０１０のビット線上の入力の４つ全部の論理和を出力する。
【０１８７】
セレクタ入力３００７上のビットは、図４の選択スキームを実現するため、入力のいくつかをＡＮＤゲート３０２０ａ〜ｄのいくつかに反転させる。第１のＡＮＤゲート３０２０ａは、反転されるビットラインを１本も持たない。第２のＡＮＤゲート３０２０ｂは、反転されるビット線０を有する。第３のＡＮＤゲート３０２０ｃは、反転されるビット線１を有する。第４のＡＮＤゲート３０２Ｏｄは、反転されるビット線０および１の両方を有する。この選択スキームは、表４に従い、入力ビット線Ｉ０、Ｉ１、Ｉ２、Ｉ３を出力ビット線（Ｏｕｔ）に転送させる。
【０１８８】
【表４】
2008541636.tif 000007
【０１８９】
図３０Ｃを参照すると、狭化セレクタ３０００は２つの基本ブロック３００１ａ〜ｂを含み、１つはデータ出力３０１０ｍｐ各出力線（Ｏｕｔ０、Ｏｕｔ１）用である。データ入力３００５の入力ビット線（Ｉ０、Ｉ１、Ｉ２、Ｉ３）は、基本ブロック３００１ａ〜ｂの両方に平行に接続される。セレクタ入力３００７は、２セットの２つの選択ビット線を備え、各セットは基本ブロック３００１ａ〜ｂのうちの１つを制御する。選択ビット線（０、１）は第１の基本ブロック３００１ａを制御し、選択ビット線（２、３）は第２の基本ブロック３００１ｂを制御する。
【０１９０】
セレクタ入力３００７上の選択信号はビットを選択して、下記表５に従い、データ出力３０１０に提供する。
【０１９１】
【表５】
2008541636.tif 000008
【０１９２】
図３０Ｄを参照すると、狭化セレクタ３０００’の別の実施形態が示されている。この別の実施形態では、追加の選択ビット線（４、５、６、７）が設けられ、各ＡＮＤゲート３０２０は、選択ビット線（０−７）のうちの１つを介して個々に選択可能である。したがって、各出力ビット線に対して複数の入力ビット線を選択することができる。その後、複数の入力ビット線はＯＲゲート３０３０を用いて論理輪を取られ、各出力ビット線を生成する。本実施形態は、追加の論理機能、すなわち、複数の入力線の論理和をとる性能も含む狭化セレクタ３０００の例である。下記表６の選択信号によって制御されると、図３０Ｄの実施形態は図３０Ｃの実施形態と同じ出力を生成する。
【０１９３】
【表６】
2008541636.tif 000009
【０１９４】
図３０Ｄの実施形態は、すべての入力（選択００００−００００）を非活動化する、すべての入力（１１１１−１１１１）を活動化する、あるいは、ＯＲゲート３０３０に提供される入力（例えば、１１０１−１００１）の他の任意の組み合わせを選択するなど、さらなる構成を可能にする。
【０１９５】
セレクタ入力を用い、図３０Ｂ〜Ｃの実施形態に示される狭化セレクタ３０００のゲートレベルの設計は、データ入力３００５の単独のビット線がデータ出力３０１０の各ビット線に向けられるようにプログラム可能である。図３０Ｂ〜Ｃの実施形態は、低減されたビット幅のセレクタ入力３００７と、データ入力３００５上の線とデータ出力３０１０上の線間の任意の接続パターンを作製する能力とを交換する。図３０Ｄの別の実施形態に示される狭化セレクタ３０００のゲートレベルの設計は、データ入力３００５上の線とデータ出力３０１０上の線との間の任意の接続パターンを可能にする。さらに、狭化セレクタ３０００は、データ出力３０１０の１つまたは複数の線がデータ入力３００５上の信号のいずれも受信しないようにプログラムすることができる。トレードオフは、増大されたビット幅のセレクタ入力３００７である。もしくは、データ入力３００５上の信号を受信しない出力線は、狭化セレクタと対応付けられる構成メモリまたは他のソースから一定の信号を受信することもできる。
【０１９６】
図３１Ａを参照すると、一実施形態の拡張セレクタ３１００は、第２のネットワークからのデータ入力３１０５とセレクタ入力３１０７とを含む。拡張セレクタ３１００は、第１のネットワークへのデータ出力３１１０も含む。データ入力３１０５は、データ出力３１１０より狭い。本実施形態では、データ入力３１０５は２ビット幅で、データ出力３１１０は４ビット幅だが、別の実施形態では他の幅を使用することができる。拡張セレクタ３１００は、セレクタ入力３１０７上の信号に応じて、データ入力３１０５上の２ビットを、データ出力３１１０上の２つ以上の選択されたビットに供給する。
【０１９７】
図３１Ｂを参照すると、一実施形態の拡張セレクタ３１００は、論理ゲートを用いて構成されている。拡張セレクタ３１００は、８つのトライステートドライバ３１２０ａ〜ｈを含む。データ入力３１０５は、２つのビット線（Ｉ０、Ｉ１）を含む。各ビット線は、４つのトライステートドライバの入力に接続される。ビット線Ｉ０は、トライステートドライバ３１２０ａ〜ｄに接続される。ビット線Ｉ１はトライステートドライバ３１２０ｅ〜ｈに接続される。セレクタ入力３１０７は、４つのビット線（Ｓ０、Ｓ１、Ｓ２、Ｓ３）を含み、各ビット線はトライステートドライバのうちの２つの入力を制御するように接続される。ビット線Ｓ０はトライステートドライバ３１２０ｂおよび３１２０ｅを制御する。ビット線Ｓ１は、トライステートドライバ３１２０ａおよび３１２０ｆを制御する。ビット線Ｓ２は、トライステートドライバ３１２０ｄおよび３１２０ｇを制御する。ビット線Ｓ３は、トライステートドライバ３１２０ｃおよび３１２０ｈを制御する。データ出力３１１０は、４つのビット線Ｏ０、Ｏ１、Ｏ２、Ｏ３を含む。ビット線Ｏ０は、トライステートドライバ３１２０ａおよび３１２０ｅに接続される。ビット線Ｏ１は、トライステートドライバ３１２０ｂおよび３１２０ｆの出力に接続される。ビット線Ｏ２は、トライステートドライバ３１２０ｃおよび３１２０ｇの出力に接続される。ビット線Ｏ３は、トライステートドライバ３１２０ｄおよび３１２０ｈの出力に接続される。ビット対（Ｓ０、Ｓ１）および（Ｓ２、Ｓ３）の値は、対のうちの最大１ビットが高くなるように制限される。この制限では、各出力ビット線Ｏ０、Ｏ１、Ｏ２、Ｏ３に接続される２つのトライステートドライのうち１つのみが駆動されるため、各出力ビット線は多くても１つの入力ビット線に接続される。全セレクタ入力ビット線のうち多くとも１ビットがＨｉｇｈであるという制限では、最下部または最上部の２出力ビットのいずれか（あるいはどちらでもない）が、下記表７に示されるように、入力に接続される。もしくは、各対の単独ビットが同じ時間でＨｉｇｈであることが許可される場合（例えば、１００１）、入力信号は最下部または最上部の２出力ビットの両方に接続することができ、結果的に信号分割効果が生じる。
【０１９８】
【表７】
2008541636.tif 000010
【０１９９】
図３１Ｃを参照すると、拡張セレクタ３１００の別の実施形態が示されている。本実施形態では、８つの選択ビット線があり、各選択ビット線は単独のトライステートドライバを制御している。制御ビット対（Ｓ０、Ｓ１）、（Ｓ２、Ｓ３）、（Ｓ４、Ｓ５）、（Ｓ６、Ｓ７）の値は、各対の多くとも１つがハイである（すなわち、１つのドライバのみが各出力に接続される）ように制限される。２対の出力（Ｏ０、Ｏ１）または（Ｏ２、Ｏ３）のうち１方のみに入力を向けることができるという追加の制限の場合、許可制御信号とその結果生じるデータ出力３１１０上の出力を表８に示す。
【０２００】
【表８】
2008541636.tif 000011
【０２０１】
上述の追加の制限が取り除かれた場合、図３１Ｃの構成によって、入力ビット線Ｉ０、Ｉ１と出力ビット線Ｏ０、Ｏ１、Ｏ２、Ｏ３間を任意に接続させることができる。例えば、１００１〜０１１０のセレクタ入力は、結果的にＩ１とＯ３、Ｉ０とＯ２、Ｉ０とＯ１、Ｉ１とＯ０とを接続する。したがって、一実施形態の拡張セレクタ３１００は、データ入力３１０５上の線とデータ出力３１１０上の線間の任意の接続パターンを可能とするようにプログラム可能である。さらに、拡張セレクタ３１００は、データ入力３１０５の１つまたは複数の線がデータ出力３１１０の線のいずれにも供給されないように、および／または、データ出力３１１０の１つまたは複数の線がデータ入力３１０５のいずれの線にも接続されないようにプログラム可能である。データ入力３１０５の線に接続されないデータ出力３１１０の線がある場合、拡張セレクタ３１００は、これらのデータ出力３１１０の線を定数値などの別のデータソースに接続するようにプログラム可能である。上述のトライステートドライバを用いる実施形態の拡張セレクタを使用する際、１）出力３１１０の線がトライステートドライバによって駆動されない、あるいは、２）再構成可能装置内の他の入力に最終的に接続される出力３１１０上のすべての線が厳密に１つのトライステートドライバによって駆動される、ことが好ましい。すなわち、出力３１１０は、出力線の１部が駆動される他の入力に接続されてはならない。
【０２０２】
狭化セレクタ３０００と拡張セレクタ３１００は、より複雑なセレクタも構成するように使用することができる。例えば、図３２Ａを参照すると、マージセレクタ３２００が示されている。マージセレクタ３２００は、第２のネットワーク上の様々な異なるソースのような複数の比較的狭いソースから、あるいは、構成要素からマージセレクタ３２００までの直接接続からのビットをマージする。マージされたビットは、第１のネットワークなどの比較的広いネットワークに提供される。マージセレクタ３２００は、比較的狭いソースからのデータを受信するための複数のデータ入力３２０５ａ〜ｂと、比較的広いターゲットにマージされたデータを提供するためのデータ出力３２１０とを含む。マージセレクタ３２００は、各データ入力３２０５ａ〜ｂのどのビットがデータ出力３２１０の各線に向けられるべきかを示す選択信号を受信するセレクタ入力３２０７も含む。
【０２０３】
上述の狭化セレクタ３０００および拡張セレクタ３１００と同様、マージセレクタ３２００は、データ入力３２０５ａ〜ｂ上の個々のビット線を含むデータ入力３２０５ａ〜ｂのいずれかをデータ出力３２１０の線のいずれかに向けるようにプログラム可能である。マージセレクタ３２００は、データ出力３２１０の各線に信号を提供する必要はないし、各データ入力３２０５ａ〜ｂの各線をデータ出力３２１０の線に提供する必要もない。データ入力３２０５ａ〜ｂ上の信号は、データ出力３２１０の線のサブセットを外すように提供することができる（例えば、データ入力３２０５ａの線をデータ出力３２１０の線１および２に供給し、データ入力３２０５ｂの線をデータ出力３２１０の線３および４に供給する）。もしくは、このような設計が所望されれば、サブセットは重複してもよい。
【０２０４】
図３２Ｂを参照すると、マージセレクタ３２００は、データ出力３２１０に並列に接続される２つの拡張セレクタ３１００を用いて構成される。第１の拡張セレクタ３１００ａは、データ入力３１０５ａで第１のデータ入力３２０５ａを受信する。第１の拡張セレクタは、第１のセレクタ入力３１０７ａで選択信号を受信し、その信号は、データ入力３１０５ａの線を第１のデータ出力３１１０ａの選択された線に導く。第２の拡張セレクタ３１００ｂは、データ入力３１０５ｂで第２のデータ入力３２０５ｂを受信する。第２の拡張セレクタは第２のセレクタ入力３１０７ｂで選択信号を受信し、その信号はデータ入力３１０５ｂの線を第２のデータ出力３１１０ｂの選択された線に導く。データ出力３１１０ａおよび３１１０ｂの線は結合され、マージセレクタ３２００のデータ出力３２１０に提供される。セレクタ入力３２０７はマージセレクタ３２００に関する選択信号を受信し、その信号は、マージセレクタ３２００の拡張セレクタ３１１０ａ〜ｂのそれぞれに関する選択信号を含む。上記図３１Ｂの拡張セレクタは、４つの制御ビット（３１０７ａ（Ｓ０、Ｓ１）、３１０７ｂ（Ｓ０、Ｓ１））、および（３１０７ａ（Ｓ２、Ｓ３）、３１０７ｂ（Ｓ２、Ｓ３））の各グループからの１ビットのみがどの時点でもＨｉｇｈであることを条件とすれば、図３２Ｂのマージセレクタ（２つの上記回路の出力バスが共に結び付けられている）で使用することができる。
【０２０５】
図３３Ａを参照すると、デマージセレクタ３３００が示されている。デマージセレクタ３３００は、第１のネットワークのような比較的広いソースからビットを分離する。分離されたビットは、第２のネットワークなどの１つまたは複数の比較的狭いネットワーク、あるいは、デマージセレクタ３３００から再構成可能装置の構成要素までの直接接続に提供される。デマージセレクタ３３００は、比較的広いソースからのデータを受信するためのデータ入力３３０５と、比較的狭いターゲットにデマージされたデータを提供するための複数のデータ出力３３１０ａ〜ｂとを含む。デマージセレクタ３３００は、各データ出力３３１０ａ〜ｂのどのビットがデータ入力３３０５の各線を受け取るべきかを示す選択信号を受信するセレクタ入力３３０７も含む。
【０２０６】
上述の狭化セレクタ３０００および拡張セレクタ３１００と同様、デマージセレクタ３３００は、データ入力３３０５の線のいずれかを、データ出力３３１Ｏａ〜ｂの個々のビット線のいずれかを含むデータ出力３３１０ａ〜ｂのいずれかに導くようにプログラム可能である。デマージセレクタ３３００は、データ出力３３１０ａ〜ｂの各線上の信号を提供する必要はないし、データ入力３３０５の各線がデータ出力３３１０ａ〜ｂの線に提供される必要もない。データ入力３３０５上の信号は、データ出力３３１０ａ〜ｂのうちの１つのみに提供することができる（例えば、データ入力３３０５の線１〜２をデータ出力３３１０ａに提供し、データ入力３３０５の線３０４をデータ出力３３１０ｂに提供する）。若しくは、このような設計が望まれれば、同じ入力信号を複数のデータ出力に提供することができる。
【０２０７】
図３３Ｂを参照すると、デマージセレクタ３３００は、データ入力３３０５に平行に接続される２つの狭化セレクタ３０００を用いて構成される。第１の狭化セレクタ３０００ａは、そのデータ入力３００５ａ上でデータ入力３３０５を受信する。第１の狭化セレクタ３０００ａはセレクタ入力３００７ａ上で選択信号を受信し、その信号はデータ入力３００５ａの所望の線を選択して、データ出力３０１０ａの線にそれらを振り向ける。第２の狭化セレクタ３０００ｂは、そのデータ入力３００５ｂ上でデータ入力３３０５を受信する。第２の狭化セレクタ３０００ｂは、セレクタ入力３００７ｂ上で選択信号を受信し、その信号は、データ入力３００５ｂの所望の線を選択して、データ出力３０１０ｂの線にそれらを振り向ける。データ出力３０１０ａは、デマージセレクタ３３００のデータ出力３３１０ａに接続される。データ出力３０１０ｂは、デマージセレクタ３３００のデータ出力３３１０ｂに接続される。セレクタ入力３３０７は、デマージセレクタ３３００に対する選択信号を受信し、その信号は、デマージセレクタ３３００の狭化セレクタ３０１０ａ〜ｂのそれぞれに対する選択信号を含む。
【０２０８】
一実施形態では、再構成可能装置は、装置を通る信号送信を効率化するため、マージセレクタ３２００とデマージセレクタ３３００を使用する。図３４を参照すると、信号を送る方法が示されている。ステップ３４１０では、マージセレクタ３２００は、専用ネットワークまたは直接接続などの比較的狭いソースからの複数の信号を、汎用ルーティングネットワークやより広い専用ルーティングネットワークなどの単独の広いターゲット上にパックするために使用される。ステップ３４２０では、パックされた信号は広いターゲットを介して、再構成可能装置内の目的位置まで送信される。ステップ３４３０では、対応するデマージセレクタ３３００が、広いターゲットの遠い端で複数の信号をアンパックし、各種信号の最終的目的地である比較的狭いネットワークまたは直接接続に信号を分配するために使用される。
【０２０９】
再構成可能装置におけるマージセレクタ３２００とデマージセレクタ３３００の具体的な使用例に関しては、図３５を参照されたい。図２１に示された再構成可能装置の部分は、マージセレクタ３２００とデマージセレクタ３３００の追加によって延長されている。マージセレクタ３２００は第１の入力３４１０、第２の入力３４２０、第３の入力３４３０、および第４の入力３４４０を含み、どれも１ビット幅である。第１の入力３４１０はキャリー出力２１９０に接続される。第２の入力３４２０は、１次マルチプレクサ２００のセレクタ入力２４０に接続される。第３の入力３４３０と第４の入力３４２０および任意の追加の入力は、設計者が汎用ルーティングネットワークとのインタフェースを希望する任意のソースに接続することができる。マージセレクタ３２００は第１の出力３４５０も含み、第１の出力は汎用ルーティングネットワークに接続される。第１の出力３４５０は４ビット幅である。
【０２１０】
したがって、マージセレクタ３２００は以下の１ビット信号を受信する。
１．Ｃｏｕｔ
２．１次マルチプレクサ選択信号
３．他の所望信号１
４．他の所望信号２
【０２１１】
これらの信号は、セレクタ入力３２０７で受信した選択信号に従い、マージセレクタ３２００によって４ビット汎用ルーティングネットワークにパックされる。例えば、選択信号は、汎用ルーティングネットワークの４ビットに以下の順番でパックされた信号を保持させる。
【０２１２】
【表９】
2008541636.tif 000012
【０２１３】
アプリケーションの設計者の希望に応じて、他の順番ももちろん可能である。いったんパックされたら、これらの信号は、汎用ルーティングネットワークに配置され、所望のターゲットクラスタに転送される。
【０２１４】
デマージセレクタ３３００に移ると、デマージセレクタは、４ビット幅である、汎用ルーティングネットワークからの入力３４５５を含む。デマージセレクタ３３００は、第１の出力３４６０、第２の出力３４７０、第３の出力３４８０、および第４の出力３４９０も含み、すべてが１ビット幅である。第１の出力３４６０は後述する第２のキャリー入力２１８０に接続され、上述したように、汎用ルーティングネットワークからキャリーイン（Ｃｉｎ）信号を受信するためである。第２の出力３４７０は専用ルーティングネットワーク２１１０の後述する第２のルーティング入力２１４５に接続され、上述したように、汎用ルーティングネットワークから１次マルチプレクサ２００の選択信号を受信するためである。第３の出力３４８０および第４の出力３４９０は、設計者が汎用ルーティングネットワークとのインタフェースを取ることを希望する他のターゲットに接続される。
【０２１５】
デマージセレクタ３３００は、上記表６に示されるパック信号などのパックされた信号を汎用ルーティングネットワークから受信する。このパック信号は、セレクタ入力３３０７で受信した選択信号に従い、デマージセレクタ３３００によってアンパックされる。例えば、デマージセレクタ３３００は、表６の信号を以下の４つの信号にアンパックする。
１．Ｃｉｎ（Ｃｏｕｔ）
２．１次マルチプレクサ選択信号
３．他の所望信号１
４．他の所望信号２
【０２１６】
デマージセレクタ３３００は、第２のキャリー入力２１８０に接続される第１の出力３４６０上のＣｉｎ信号を供給する。したがって、別のクラスタからのＣｏｕｔ信号は、クラスタ３００へのＣｉｎ信号として提供される。デマージセレクタ３３００は、第２の出力３４７０上に１次マルチプレクサ選択信号を提供し、第２の出力は専用ルーティングネットワーク２１１０の第２のルーティング入力２１４５に接続される。したがって、別のクラスタからの１次マルチプレクサ選択信号は、クラスタ３００に提供される。次に、この１次マルチプレクサ選択信号は、セレクタ２１１５、セレクタ出力２１６０、および第１のルーティング出力２１６５を介して１次マルチプレクサ２００のセレクタ入力２４０に伝播されることによって、１次マルチプレクサ２００は、専用ルーティングネットワーク２１１０に直接接続されていないクラスタまたは他の構成要素で生成される信号によって制御されることができる。他の所望信号は、設計者の希望に応じて、再構成可能装置他の構成要素に接続可能な第３の出力３４８０および第４の出力３４９０に提供される。
【０２１７】
本発明の本実施形態に従い信号をパックすると、例えば、第１のクラスタからのＣｏｕｔ信号を、第２のクラスタの汎用ルーティングネットワークを通って転送させることができ、そこでＣｏｕｔ信号は、第２のクラスタのＡＬＵのＣｉｎ信号として印加することができる。同様に、マルチプレクサ選択信号は、第１のクラスタから第２のクラスタへ汎用ルーティングネットワークで転送され、そこでこれらの信号は、第２のクラスタ内の１次マルチプレクサを制御するために使用することができる。したがって、本発明の一実施形態の再構成可能装置は、２つの方法のいずれかでクラスタ間で、キャリー信号および選択信号などの信号を輸送することができる。クラスタがどちらも同じ専用ルーティングネットワークに接続される場合、クラスタの相対的位置に応じて、専用ルーティングネットワーク上で転送することができる。２つのクラスタが同じ専用ルーティングネットワークに接続されない場合、信号はパックされ、１つのクラスタから別のクラスタへ汎用ルーティングネットワーク上で効率的に転送することができる。無駄にされるビット幅の量は低減され、ときには、本発明の一実施形態のマージおよびデマージセレクタのデータパック機能を用いて除去される場合もある。
【０２１８】
上記の説明では、本発明は、特定の実施形態に関して説明されている。しかしながら、本発明のより広範な精神および範囲を逸脱せずに様々な改良または変更を行うことが可能であろうことは明白である。例えば、読者は、本明細書に記載される工程フロー図に示される工程作業の具体的な順番や組み合わせは単に説明のためのものであって、本発明は異なるまたは追加の工程作業、あるいは工程作業の異なる組み合わせまたは順番を用いて実行可能であると理解すべきである。したがって、明細書と図面は限定的ではなく説明的な意味で考えられるべきであって、本発明は請求項およびその法的等価物に従う場合を除き、限定的であるとみなすべきではない。
【図面の簡単な説明】
【０２１９】
【図１】本発明の一実施形態で使用される演算論理装置を示す。
【図２】本発明の一実施形態で使用されるマルチプレクサを示す。
【図３】本発明の一実施形態による、クラスタと結合されるＡＬＵおよびマルチプレクサの例である。
【図４Ａ】データ選択回路として構成されるクラスタを示す。
【図４Ｂ】データ伝播回路として構成されるクラスタを示す。
【図５】条件処理回路として構成される２つのクラスタを示す。
【図６】データ経路制御回路として構成される２つのクラスタを示す。
【図７】マルチプレクサに接続される出力レジスタを有するクラスタを示す。
【図８Ａ】レジスタを有するマルチプレクサ用のイネーブル構成のレジスタを示す。
【図８Ｂ】レジスタを有するマルチプレクサ用のリセット構成のレジスタを示す。
【図９】追加の入力選択論理を有するマルチプレクサを示す。
【図１０】フィードバック回路として構成される入力選択論理を有するマルチプレクサを示す。
【図１１】キャリーアウト信号の別のルートを提供するように構成されるマルチプレクサを示す。
【図１２】ＡＬＵのキャリーアウト出力からキャリーイン入力への登録経路を実行するための追加の素子を有するクラスタを示す。
【図１３】マルチプレクサ出力に接続されるインバータを有するクラスタを示す。
【図１４】アプリケーション論理構成要素を処理素子に割り当てる方法を示すフローチャートである。
【図１５】マルチプレクサ制御信号を生成し選択する回路を示す。
【図１６】マルチプレクサ制御信号を選択的に反転させる回路を示す。
【図１７】図１５の回路の拡張を示し、転送される値が拡張回路を制御することができることを示す。
【図１８】図３のクラスタにマップすることのできる符号拡張を実現する回路を示す。
【図１９】クラスタに配置されたＡＬＵとマルチプレクサの集合を示す。
【図２０】制御信号のための２つの汎用ルーティングネットワークを含む再構成可能アレイを示す。
【図２１】本発明の一実施形態に係る、クラスタと専用ルーティングネットワークの対応付けられる部分とを示す。
【図２２】本発明の一実施形態に係る、対応付けられる専用ルーティングネットワークを有する再構成可能装置の列を示す。
【図２３】本発明の一実施形態に係る、対応付けられる双方向専用ルーティングネットワークを有する再構成可能装置の列を示す。
【図２４】本発明の様々な別の実施形態に係る、クラスタと専用ルーティングネットワークの対応付けられる部分とを示す。
【図２５】本発明の様々な別の実施形態に係る、クラスタと専用ルーティングネットワークの対応付けられる部分とを示す。
【図２６】本発明の様々な別の実施形態に係る、クラスタと専用ルーティングネットワークの対応付けられる部分とを示す。
【図２７】本発明の様々な別の実施形態に係る、クラスタと専用ルーティングネットワークの対応付けられる部分とを示す。
【図２８】本発明の様々な別の実施形態に係る、クラスタと専用ルーティングネットワークの対応付けられる部分とを示す。
【図２９】本発明の一実施形態に係る、クラスタと出力インバータを含む、対応付けられる専用ルーティングネットワークとを示す。
【図３０Ａ】本発明の一実施形態に係る狭化セレクタを示す。
【図３０Ｂ】本発明の一実施形態に係る狭化セレクタを示す。
【図３０Ｃ】本発明の一実施形態に係る狭化セレクタを示す。
【図３０Ｄ】本発明の一実施形態に係る狭化セレクタを示す。
【図３１Ａ】本発明の一実施形態に係る拡張セレクタを示す。
【図３１Ｂ】本発明の一実施形態に係る拡張セレクタを示す。
【図３１Ｃ】本発明の一実施形態に係る拡張セレクタを示す。
【図３２Ａ】本発明の一実施形態に係るマージセレクタを示す。
【図３２Ｂ】本発明の一実施形態に係るマージセレクタを示す。
【図３３Ａ】本発明の一実施形態に係るデマージセレクタを示す。
【図３３Ｂ】本発明の一実施形態に係るデマージセレクタを示す。
【図３４】本発明の一実施形態に係る、ネットワークを介して信号を送信する方法を示す。
【図３５】本発明の一実施形態に係る、クラスタとマージセレクタおよびデマージセレクタを含む専用ルーティングネットワークの対応付けられる部分とを示す。
【図１】
2008541636.tif 000013
【図２】
2008541636.tif 000014
【図３】
2008541636.tif 000015
【図４Ａ】
2008541636.tif 000016
【図４Ｂ】
2008541636.tif 000017
【図５】
2008541636.tif 000018
【図６】
2008541636.tif 000019
【図７】
2008541636.tif 000020
【図８Ａ】
2008541636.tif 000021
【図８Ｂ】
2008541636.tif 000022
【図９】
2008541636.tif 000023
【図１０】
2008541636.tif 000024
【図１１】
2008541636.tif 000025
【図１２】
2008541636.tif 000026
【図１３】
2008541636.tif 000027
【図１４】
2008541636.tif 000028
【図１５】
2008541636.tif 000029
【図１６】
2008541636.tif 000030
【図１７】
2008541636.tif 000031
【図１８】
2008541636.tif 000032
【図１９】
2008541636.tif 000033
【図２０】
2008541636.tif 000034
【図２１】
2008541636.tif 000035
【図２２】
2008541636.tif 000036
【図２３】
2008541636.tif 000037
【図２４】
2008541636.tif 000038
【図２５】
2008541636.tif 000039
【図２６】
2008541636.tif 000040
【図２７】
2008541636.tif 000041
【図２８】
2008541636.tif 000042
【図２９】
2008541636.tif 000043
【図３０Ａ】
2008541636.tif 000044
【図３０Ｂ】
2008541636.tif 000045
【図３０Ｃ】
2008541636.tif 000046
【図３０Ｄ】
2008541636.tif 000047
【図３１Ａ】
2008541636.tif 000048
【図３１Ｂ】
2008541636.tif 000049
【図３１Ｃ】
2008541636.tif 000050
【図３２Ａ】
2008541636.tif 000051
【図３２Ｂ】
2008541636.tif 000052
【図３３Ａ】
2008541636.tif 000053
【図３３Ｂ】
2008541636.tif 000054
【図３４】
2008541636.tif 000055
【図３５】
2008541636.tif 000056
【国際調査報告】
2008541636.tif 000057
2008541636.tif 000058
2008541636.tif 000059
2008541636.tif 000060
2008541636.tif 000061