(57)【特許請求の範囲】
【請求項１】
複数の処理デバイスと、
該処理デバイス間の相互接続を提供する接続マトリクスと、
該接続マトリクスの構成を規定する手段と、を備えており、
前記処理デバイスの各々は、入力オペランドについて関数を実行して出力を生成するよう構成された算術論理演算装置を備えており、
前記入力オペランドは、各サイクルで同一経路上の相互接続から前記算術論理演算装置への入力として提供されており、
前記接続マトリクスは、前記処理デバイスのうちの第１の処理デバイスの出力を該処理デバイスのうちの第２の処理デバイスに送信して前記第２の処理デバイスにより実行される関数を決定するように構成されていることを特徴とする、再構成可能デバイス。
【請求項２】
前記処理デバイスの各々が、アドレス指定可能な入力レジスタを備えておらず、このため、算術論理演算装置により相互接続から入力オペランドを直接受け取る、請求項１の再構成可能デバイス。
【請求項３】
前記処理デバイスの各々が、該処理デバイスのうちの別の処理デバイスの出力により決定することが可能な第１の複数の構成ビットと、該処理デバイスのうちの別の処理デバイスの出力により決定することが不可能な第２の複数の構成ビットとを有している、請求項１の再構成可能デバイス。
【請求項４】
前記処理デバイスの各々が、第１オペランド入力と、第２オペランド入力と、関数結果出力と、桁上げ入力と、桁上げ出力とを有しており、前記第１オペランド入力、前記第２オペランド入力、及び前記関数結果出力がｎビットであり（ｎは１より大きい整数）、前記桁上げ入力及び前記桁上げ出力が１ビットである、請求項１の再構成可能デバイス。
【請求項５】
前記ｎ＝４である、請求項４の再構成可能デバイス。
【請求項６】
前記処理デバイスの各々が、その関数の決定のために、該処理デバイスのうちの別の処理デバイスからのｎビット命令入力を受け取るように構成されている、請求項４の再構成可能デバイス。
【請求項７】
前記処理デバイスのうちの１つへの桁上げ入力が該処理デバイスの算術論理演算装置の関数を変更することを可能にする手段が設けられている、請求項４の再構成可能デバイス。
【請求項８】
前記手段が、前記桁上げ入力が算術論理演算装置の関数を論理補数に変更することを可能にするものである、請求項７の再構成可能デバイス。
【請求項９】
桁上げ入力を一定値に保持することを可能とする手段が前記処理デバイスの各々に設けられている、請求項４の再構成可能デバイス。
【請求項１０】
前記処理デバイスのうちの第１の処理デバイスが、該第１の処理デバイスの桁上げ入力の値に従って、前記処理デバイスのうちの第２の処理デバイスへの命令入力の２つの値間で多重化を行うために使用可能となっている、請求項４の再構成可能デバイス。
【請求項１１】
前記第１の処理デバイスの桁上げ入力を該第１の処理デバイスを介して前記第２の処理デバイスの桁上げ入力へと伝播させることが可能となっている、請求項１０の再構成可能デバイス。
【請求項１２】
前記処理デバイスの各々が、関数出力のためのラッチ可能な出力レジスタを備えている、請求項１の再構成可能デバイス。
【請求項１３】
前記処理デバイスの各々が、算術論理演算装置の関数を決定するための命令が相互接続から動的に受けられるべきか前記処理デバイス中の構成メモリから提供されるべきかを決定する動的イネーブルゲートを備えている、請求項１の再構成可能デバイス。
【請求項１４】
前記処理デバイスの各々が、動的命令マスクを備えており、該動的命令マスクを前記処理デバイスが受け取った命令に適用することにより、前記命令を、算術論理演算装置の関数を決定するための算術論理演算装置の命令入力と、前記処理デバイスにおける周辺回路の制御のための周辺回路の命令入力との両方に提供することが可能となっている、請求項１の再構成可能デバイス。
【請求項１５】
複数の処理デバイスと、該処理デバイス間の相互接続を提供する接続マトリクスと、該接続マトリクスの構成を規定する手段を有する再構成可能デバイスから中央処理装置を構築する方法であり、
中央処理装置の算術論理演算装置を形成するために１つ又は２つ以上の処理デバイスを配設するステップと、
第１のメモリをレジスタファイルとして前記中央処理装置の算術論理演算装置に結びつけるステップと、
前記中央処理装置に命令を与えるために、第２のメモリをコードメモリとして前記中央処理装置の算術論理演算装置に結びつけるステップを備えており、
前記処理デバイスの各々は、入力オペランドについて関数を実行して出力を生成するよう構成された算術論理演算装置を備えており、
前記入力オペランドは、各サイクルで同一経路上の相互接続から前記算術論理演算装置への入力として提供されており、
前記中央処理装置の算術論理演算装置に対する命令入力は、前記第２のメモリから相互接続を介して提供されることを特徴とする方法。
【請求項１６】
前記第１のメモリと前記第２のメモリとの一方又は両方が、前記再構成可能デバイスの１つ又は２つ以上の構成要素を再構成可能デバイスに構成された中央処理デバイスによって利用可能なメモリにおいて再構成することにより提供される、請求項１５の方法。
【請求項１７】
前記再構成可能デバイスの前記１つ又は２つ以上の構成要素が、構成マトリクスの構成を規定するための手段の構成要素を含む、請求項１６の方法。
【請求項１８】
前記中央処理装置が、多数の算術論理演算装置を有しており、該多数の算術論理演算装置についての命令が前記第２のメモリから提供される、請求項１５の方法。
【請求項１９】
前記第２のメモリと、前記第１のメモリ及び前記中央処理装置の前記算術論理演算装置との両方の間に命令デコーダ回路が配設され、命令を圧縮形式で前記第２メモリに格納できるようになっており、また前記中央処理装置での実行前に前記命令デコーダ回路によりデコードされるようになっている、請求項１５の方法。
【請求項２０】
前記中央処理装置が、多数の算術論理演算装置を有しており、該多数の算術論理演算装置についての命令が前記第２のメモリから提供されており、
前記多数の算術論理演算装置に共通の命令デコーダ回路が配設される、請求項１９の方法。
【請求項２１】
前記処理デバイスの各々が、アドレス指定可能な入力レジスタを備えていない、請求項１５の方法。
【請求項２２】
前記処理デバイスの各々が、該処理デバイスのうちの別の処理デバイスの出力により決定することが可能な第１の複数の構成ビットと、該処理デバイスのうちの別の処理デバイスの出力により決定することが不可能な第２の複数の構成ビットとを有している、請求項１５の方法。
【請求項２３】
前記処理デバイスの各々が、第１オペランド入力と、第２オペランド入力と、関数結果出力と、桁上げ入力と、桁上げ出力とを有しており、前記第１オペランド入力、前記第２オペランド入力、及び前記関数結果出力がｎビットであり（ｎは１より大きい整数）、前記桁上げ入力及び前記桁上げ出力が１ビットである、請求項１５の方法。
【請求項２４】
前記ｎ＝４である、請求項２３の方法。
【請求項２５】
前記処理デバイスの各々が、その関数の決定のために、該処理デバイスのうちの別の処理デバイスからのｎビット命令入力を受け取るように構成されている、請求項２３の方法。
【請求項２６】
前記処理デバイスのうちの１つへの桁上げ入力が該処理デバイスの算術論理演算装置の関数を変更することを可能にする手段が設けられている、請求項２３の方法。
【請求項２７】
前記手段が、前記桁上げ入力が算術論理演算装置の関数を論理補数に変更することを可能にするものである、請求項２６の方法。
【請求項２８】
桁上げ入力を一定値に保持することを可能とする手段が前記処理デバイスの各々に設けられている、請求項２３の方法。
【請求項２９】
前記処理デバイスのうちの第１の処理デバイスが、該第１の処理デバイスの桁上げ入力の値に従って、前記処理デバイスのうちの第２の処理デバイスへの命令入力の２つの値間で多重化を行うために使用可能となっている、請求項２３の方法。
【請求項３０】
前記第１の処理デバイスの桁上げ入力を該第１の処理デバイスを介して前記第２の処理デバイスの桁上げ入力へと伝播させることが可能となっている、請求項２９の方法。
【請求項３１】
前記処理デバイスの各々が、関数出力のためのラッチ可能な出力レジスタを備えている、請求項１５の方法。
【請求項３２】
前記処理デバイスの各々が、算術論理演算装置の関数を決定するための命令が相互接続から動的に受けられるべきか前記処理デバイス中の構成メモリから提供されるべきかを決定する動的イネーブルゲートを備えている、請求項１５の方法。
【請求項３３】
前記処理デバイスの各々が、動的命令マスクを備えており、該動的命令マスクを前記処理デバイスが受け取った命令に適用することにより、前記命令を、算術論理演算装置の関数を決定するための算術論理演算装置の命令入力と、前記処理デバイスにおける周辺回路の制御のための周辺回路の命令入力との両方に提供することが可能となっている、請求項１５の方法。
【請求項３４】
複数の処理デバイスと、
該処理デバイス間の相互接続を提供する接続マトリクスと、
該接続マトリクスの構成を規定する手段と、を備えており、
前記処理デバイスの各々は、入力オペランドについて関数を実行して出力を生成するよう構成されており、
前記入力オペランドは、前記処理デバイスのうちの第１の処理デバイスへの入力として提供されており、
前記接続マトリクスは、前記処理デバイスのうちの第１の処理デバイスの出力を該処理デバイスのうちの第２の処理デバイスに送信して前記第２の処理デバイスにより実行される関数を決定するように構成されており、
前記入力オペランドは、各サイクルで同一経路上の相互接続から前記処理デバイスのうちの第１の処理デバイスへの入力として提供されており、
前記処理デバイスのうちの第１の処理デバイスが、算術論理演算装置を備えており、
前記入力オペランドは、各サイクルで同一経路上の相互接続から前記算術論理演算装置への入力として提供されている、再構成可能デバイス。
【請求項３５】
複数の処理デバイスと、
該処理デバイス間の相互接続を提供する接続マトリクスと、
該接続マトリクスの構成を規定する手段と、を備えており、
前記処理デバイスの各々は、入力オペランドについて関数を実行して出力を生成するよう構成されており、
前記入力オペランドは、前記処理デバイスのうちの第１の処理デバイスへの入力として提供されており、
前記接続マトリクスは、前記処理デバイスのうちの第１の処理デバイスの出力を該処理デバイスのうちの第２の処理デバイスに送信して前記第２の処理デバイスにより実行される関数を決定するように構成されており、
前記入力オペランドは、各サイクルで同一経路上の相互接続から前記複数の処理デバイスのうちの少なくとも一つの処理デバイスへの入力として提供されており、
前記複数の処理デバイスのうちの少なくとも一つの処理デバイスの各々が、算術論理演算装置を備えており、
前記入力オペランドは、各サイクルで同一経路上の相互接続から前記各々の複数の算術論理演算装置への入力として提供されている、再構成可能デバイス。
【請求項３６】
複数の処理デバイスと、
該処理デバイス間の相互接続を提供する接続マトリクスと、
該接続マトリクスの構成を規定する手段と、を備えており、
前記処理デバイスの各々は、入力オペランドについて関数を実行して出力を生成するよう構成されており、
前記入力オペランドは、前記処理デバイスのうちの第１の処理デバイスへの入力として提供されており、
前記接続マトリクスは、前記処理デバイスのうちの第１の処理デバイスの出力を該処理デバイスのうちの第２の処理デバイスに送信して前記第２の処理デバイスにより実行される関数を決定するように構成されており、
前記入力オペランドは、各サイクルで同一経路上の相互接続から前記複数の処理デバイスのうちの各々への入力として提供されており、
前記複数の処理デバイスのうちの各々が、算術論理演算装置を備えており、
前記入力オペランドは、各サイクルで同一経路上の相互接続から前記各々の複数の算術論理演算装置への入力として提供されている、再構成可能デバイス。
【請求項３７】
複数の処理デバイスと、該処理デバイス間の相互接続を提供する接続マトリクスと、該接続マトリクスの構成を規定する手段を有する再構成可能デバイスから中央処理装置を構築する方法であり、
中央処理装置の算術論理演算装置を形成するために１つ又は２つ以上の処理デバイスを配設するステップと、
第１のメモリをレジスタファイルとして前記中央処理装置の算術論理演算装置に結びつけるステップと、
前記中央処理装置に命令を与えるために、第２のメモリをコードメモリとして前記中央処理装置の算術論理演算装置に結びつけるステップを備えており、
前記処理デバイスの各々は、入力オペランドについて関数を実行して出力を生成するよう構成された算術論理演算装置を備えており、
前記入力オペランドは、各サイクルで同一経路上の相互接続から前記算術論理演算装置への入力として提供されており、
前記中央処理装置の算術論理演算装置に対する命令入力は、前記第２のメモリから相互接続を介して提供されており、
前記第１のメモリと前記第２のメモリとの一方又は両方が、前記再構成可能デバイスの１つ又は２つ以上の構成要素を再構成可能デバイスに構成された中央処理デバイスによって利用可能なメモリにおいて再構成することにより提供されることを特徴とする方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、再構成可能プロセッサデバイスに関するものである。
【０００２】
【従来の技術及び発明が解決しようとする課題】
従来のプロセッサ（例えばIntel社のPentium II（PentiumはIntel社の商標）等）は汎用デバイスである。これは、特定のタスク用に最適化されるものではなく、非常に広範な機能を実施するようプログラムすることが可能なものである。
【０００３】
従来のプロセッサの汎用アーキテクチャの結果として、特定のタスクについてのプロセッサの性能は、該特定のタスクを実行するよう設計されたハードウェアよりもはるかに劣るものとなる。これは、汎用プロセッサのアーキテクチャが、タスクの構造に従っていないためではなく、タスク中にひどく酷使されると共に必然的に伴う大容量メモリリソースに対する呼び出しを極めて頻繁に行う複合ＡＬＵ（算術論理演算装置）に依存するためである。かかるタスクが膨大な計算上の負荷を伴うものである場合には、汎用プロセッサを用いる方法は特に不適切なものとなる。
【０００４】
定期的な実行を必要とするタスクが存在する場合、適切な方法は、該タスクに特定に最適化された回路を提供することであろう。典型的な方法は、汎用プロセッサと共にコプロセッサまたはＡＳＩＣ（特定用途向けＩＣ）という形でかかる回路を提供することであり、これにより、コプロセッサまたはＡＳＩＣが最適化されることになるタスクを汎用プロセッサにより該コプロセッサ又はＡＳＩＣへと経路指定することが可能となる。
【０００５】
ＡＳＩＣは特定のタスクについては最適なものであるが、特定のタスク用に構築されたものであるが故に、他の計算処理タスクについては、概して低性能のものとなり、又は全く機能しないものとなる。この２つの極端な例、即ち、固定された構成を有するＡＳＩＣと（１サイクルにつきシリコンの「構成」しか存在しないものと考えられる）従来のプロセッサとの間には有利な可能性が存在する。この中間の可能性が再構成可能デバイスであり、これらは、所定の構成を有するが、必要に応じて異なる所定の構成へと再構成することが可能なものである。したがって、再構成可能デバイスは、適切な再構成により現在の計算上の必要性を満たすようそのハードウェアリソースを変更するコンピュータの可能性を提供するものとなる。
【０００６】
商業的に成功を収めた形の再構成可能デバイスは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）である。かかるデバイスは、構成可能な相互接続ネットワークに組み込まれた構成可能な処理要素の集合体からなる。相互接続構成を記述するために構成メモリが配設され、該メモリにはＳＲＡＭが使用されることが多い。これらのデバイスは、微細粒構造を有するものであり、ＦＰＧＡの各処理素子は、典型的には、構成可能なゲートである。したがって、処理は、中央ＡＬＵに集中されるのではなくデバイスに分散され、該デバイスのシリコン領域がより有効に利用される。市販のＦＰＧＡシリーズの一例として、Xilinx 4000シリーズがある。
【０００７】
かかる再構成可能デバイスは、プロセッサ又はＡＳＩＣが使用されるあらゆる計算用途に概ね使用することができる。しかしながら、かかるデバイスに特に適した用途は、計算上の負荷が大きなタスクではあるが目的別に構築されるＡＳＩＣに値するほど一般的ではないタスクを扱うためのコプロセッサとしての用途である。したがって、再構成可能なコプロセッサは、異なるときに異なる構成でプログラムすることが可能であり、該構成の各々は、計算上の負荷の大きな異なるタスクの実行に適合するものであり、これにより、全体的なコストを著しく増大させることなく、汎用プロセッサのみの場合よりも一層優れた効率が提供される。最近のＦＰＧＡデバイスでは、その目的が動的な再構成にあり、この場合には、コードの実行中に一部又は全体の再構成が提供され、これにより、時間多重化(time-multiplexing)を用いて、１つのコードを実行する異なる段階で異なるサブタスクにとって最適化された構成を提供することが可能となる。
【０００８】
ＦＰＧＡデバイスは、特定種類の計算タスクに特に適したものとはならない。個々の計算要素が極めて小さく、そのデータパスが極めて狭く、それらの多くが必要とされるため、構成プロセスにおいて多数の演算が必要となる。これらの構造は、小さなデータ要素について演算を行うタスクであってサイクル間で規則正しいタスクには比較的有効であるが、大きなデータ要素を伴う不規則なタスクには不十分なものとなる。かかるタスクもまた、汎用プロセッサでは良好に処理されないことが多く、（例えば画像処理等において）相当重要性の高いものとなり得る。
【０００９】
代替的な再構成可能なアーキテクチャがこれまでに提案されている。その一例として、カリフォルニア大学バークレー校で開発されたＰＡＤＤＩアーキテクチャであり、これについては、D.Chen及びJ.Rabaeyによる「A Reconfigurable Multiprocessor IC for Rapid Prototyping of Real Time Data Paths」（ISSCC, 1992年2月）、並びに、A.Yeung及びJ.Rabaeyによる「A Data-Driven Architecture for Rapid Prototyping of High Throughput DSP Algorithms」（IEEE VLSI Signal Processing Workshop、1992年10月）に記載されている。該アーキテクチャは、高速リアルタイムＤＳＰシステムのプロトタイプ向けのものであり、そのＤＳＰアルゴリズムは、従来のプロセッサ又はＦＰＧＡの何れによっても十分に扱うことができない計算処理の一例を提供するものとなる。該アーキテクチャは、再構成可能なネットワークによって接続された複数の比較的単純な処理実行装置を含むものである。その各実行装置は、16ビット幅で動作し、入力オペランド用のレジスタファイルを有し、またそれ自体の命令メモリを有している。１つの命令装置の動作を指定するために53ビットの命令ワードが必要である。
【００１０】
ＰＡＤＤＩでは、構成時および実行時の両方において命令が分散される。構成時には、制御記憶手段として機能するメモリに１組の命令がロードされる。実行時には、全ての制御記憶手段に関するアドレスの大域でのブロードキャストが行われ、これらの局所命令メモリの各々は、局所実行装置により使用するためにそれ自体の局所命令を読み出す。動作時には、処理要素間の通信がデータにより駆動され、該処理要素は、それぞれの局所命令にしたがってデータに作用する。
【００１１】
別の代替的なアーキテクチャとしては、マサチューセッツ工科大学で開発されたＭＡＴＲＩＸがあり、これについては、Ethan Mirsky及びAndr@ deHon著「MATRIX: A Reconfigurable Computing Architecture with Configurable Instruction Distribution and Deployable Resources」（FCCM '96 - IEEE Symposium on FPGAs for Custom Computing Machines, 1996年4月17〜19日、Napa, California, USA）に記載されており、より詳細には、Andr@ deHon著「Reconfigurable Architectures for General-Purpose Computing」（第257〜296頁、技術報告書1586、MIT ArtifＩＣial Intelligence Laboratory）に記載されている。ＭＡＴＲＩＸは、粗粒構造を有するものであり、同一の８ビットの機能ユニットのアレイが構成可能なネットワークと相互接続されている。各機能ユニットは、256×８ビットメモリと、アドレス指定可能な入力レジスタ、出力レジスタ、及びマルチプレクサを有する８ビットＡＬＵと、制御論理回路とを備えている。該アーキテクチャは、比較的汎用性を有するものであり、即ち、ＦＰＧＡの処理の非集中化を提供すると共に、所与の用途に必要とされるものへと命令ストリームを調節するための一層幅の広いデータパスおよび有効範囲を提供するものとなる。
【００１２】
ＭＡＴＲＩＸ構造は、有利な側面を有するものではあるが、その粗粒サイズは、従来のＦＰＧＡ構造よりも多量のシリコンを消費することを意味しており、サイクル単位の規則的なタスクについては効率が悪化するものとなる。したがって、ＭＡＴＲＩＸと従来のＦＰＧＡの両方の利点を可能な限り最良に組み合わせた更なる再構成可能な構造を開発することが望ましい。
【００１３】
したがって、本発明は、複数の処理デバイスと、該処理デバイス間の相互接続を提供する接続マトリクスと、該接続マトリクスの構成を規定する手段とを備えた再構成可能デバイスであって、前記処理デバイスの各々が、入力オペランドについて関数を実行して出力を生成するように構成された算術論理演算装置を備えており、前記入力オペランドが、各サイクルにおける同一経路上の相互接続から前記算術論理演算装置へ入力として提供され、さらに前記複数の処理デバイスのうちの第１の処理デバイスの出力を該処理デバイスのうちの第２の処理デバイスへと経路指定して該第２の処理デバイスにより実行される関数を決定するための手段が設けられている、再構成可能デバイスを提供する。
【００１４】
ＭＡＴＲＩＸとは異なり、該方法は、各サイクルで同一経路上の相互接続部から入力オペランドが提供されるため、アドレス指定可能な入力レジスタを含まない（したがって入力レジスタファイルを含まない）。このため、処理パイプラインの一部として個々の処理デバイスを使用することが必要となる（命令を自分に戻すことは可能であるが、これは相互接続を介して行うことが必要になると考えられる）。したがって、ＭＡＴＲＩＸにおける個々の処理デバイスは、本発明による再構成可能デバイスにおける個別の処理デバイスよりも一層十分な範囲の関数を実施することが可能なものとなる。しかしながら、これは、所与のシリコン領域についての処理デバイスの数が増加したことにより補償されたに過ぎない。
【００１５】
また、本方法は、ＰＡＤＤＩアーキテクチャに必要とされる制御記憶メモリを形成するための相当のシリコン領域の犠牲を含まないものとなる。この制御記憶メモリは、ＰＡＤＤＩではかなりの大きさを有する必要があり、また、ＰＡＤＤＩの実行装置は、本発明と等価の機能を得るためには本発明よりもはるかに大きなものとなる。また、制御記憶メモリは、ＰＡＤＤＩアーキテクチャでは冗長となることが多い（各サイクル毎に同じ命令を実行するためにのみ実行装置が必要となる場合）。全ての制御記憶メモリが単一のグローバルアドレスによってアドレス指定されるＰＡＤＤＩの要件により、データに依存する態様でのマシンの異なる部分のシーケンス、又は計算処理の異なるスレッドについての演算が阻止されることになる。ＰＡＤＤＩ構成では、全ての実行装置が互いに同期して実行されなければならない。
【００１６】
入力レジスタは、この種のアーキテクチャに必ずしも欠落したものではないことに留意されたい。即ち、アドレス指定不能な入力レジスタは本発明と両立するものである、（入力オペランドが依然として各サイクルで同一経路上で受け取られ、処理パイプラインでＡＬＵを使用する必要があるため）。しかしながら、好適な実施例では、処理デバイスは、如何なる種類の入力レジスタをも含まず、入力オペランドは、算術論理演算装置によって相互接続から直接受け取られることになる。
【００１７】
処理デバイスは、適当な機能を実行するための構成を必要とするものであり、動的命令を規定する何らかの基準を少なくとも設けるべきである。有利な解決策として、処理デバイスの各々が、該処理デバイスのうちの別の処理デバイスの出力により決定することが可能な第１の複数の構成ビットと、前記処理デバイスのうちの別の処理デバイスの出力により決定することが不可能な第２の複数の構成ビットと有していることが挙げられる。
【００１８】
【課題を解決するための手段】
好適な実施例では、各処理デバイスは、第１オペランド入力と、第２オペランド入力と、機能結果出力と、桁上げ入力と、桁上げ出力とを有しており、前記第１オペランド入力、前記第２オペランド入力、及び前記機能結果出力はｎビットであり（ｎは１よりも大きい整数）、前記桁上げ入力及び前記桁上げ出力は１ビットである。ｎ＝４の場合に特に良好な設計上の解決策が得られる。
【００１９】
好適な実施例では、動的命令機構は、処理デバイスの各々が（その関数の決定のために）別の処理デバイスからのｎビット命令入力を受け取るように構成される。
【００２０】
動的命令を提供するための更に有利な方法は、処理デバイスのうちの１つに対する前記桁上げ入力が該処理デバイスの算術論理演算装置の関数を変更することを可能にする（例えば、桁上げ入力が算術論理演算装置の関数を論理的な補数へと変更することを可能にする）手段を設けることによるものである。しかしながら、汎用性を有する演算の場合には、桁上げ入力を一定値として保持する手段を処理デバイスの各々に設けることもまた有利である。更に有利な方法として、処理デバイスのうちの第２の処理デバイスに入力された命令の２つの値間の多重化を第１の処理デバイスの桁上げ入力の値にしたがって行うために該第１の処置デバイスを使用することを可能とするものがあり、また、随意選択的に、第１の処理デバイスの桁上げ入力を該第１の処理デバイスを介して第２の処理デバイスの桁上げ入力へと伝播させるようにすることも可能である。
【００２１】
処理デバイスの各々が、関数出力のためのラッチ可能な出力レジスタを含むこともまた有利である。これは、「深い」パイプラインを構築する上で有用であり、この場合には、例えば、多数の演算を並列に実行し、及び異なるＡＬＵからの出力を同期させる必要がある。
【００２２】
個々のデバイスが動的命令を受容し又は拒絶することを可能にするために、算術論理演算装置の関数を決定する命令が相互接続から動的に受容されるべきか処理デバイスの構成メモリから提供されるべきかを決定する動的なイネーブルゲートを処理デバイスの各々に設けることが望ましい。各処理デバイスの更に有利な特徴は、動的な命令マスクであり、該動的な命令マスクを処理デバイスにより受容された命令に適用することにより、該命令を、算術論理演算装置の関数を決定する該算術論理演算装置の命令入力に供給すると共に、処理デバイスにおける周辺回路の制御のために該周辺回路の命令入力に供給することが可能となる。
【００２３】
【発明の実施の形態】
添付の図面を参照し、本発明の一実施例として、特定の実施例について説明することとする。
【００２４】
以下の説明では、「水平」、「垂直」、「北」、「南」、「東」、及び「西」という用語は、相対的な方向を理解する助けのための用いられるものであり、該用語のの使用は、本発明の実施形態の絶対的な配向についての限定を示唆することを意図してはいない。
【００２５】
本発明の実施形態のプロセッサアレイは集積回路中に設けられる。１つのレベルでは、該プロセッサアレイは、「タイル」10からなる矩形（好適には正方形）アレイにより形成され、その内の１つが図１に太線で区切って示されている。適当な任意数のタイルを、例えば、16×16、32×32、又は64×64アレイで使用することができる。各タイル10は、矩形であり、４つの回路領域に分かれている。これらのタイルは、（接続に対称性を与えるよう）論理的に正方形であることが好ましいが、該タイルが物理的に正方形であることは重要ではない（タイミング上の対称性を提供するという点で有利な場合もあるが、一般には大して重要でない可能性が高い）。回路領域12のうちの２つは、タイル10において対角線上で対向しており、２つの算術論理演算装置（ＡＬＵ）用の区域（又は場所(location)）を提供するものである。タイル10において対角線上で対向する他の２つの回路領域は、一対のスイッチングセクション14用の区域を提供するものである。
【００２６】
ここで図１及び図２を参照する。各ＡＬＵは、ＡＬＵ内で直接接続されている第１の一対の４ビット入力aと、ＡＬＵ内で直接接続されている第２の一対の４ビット入力bと、ＡＬＵ内で直接接続されている４つの４ビット出力fとを有している。各ＡＬＵはまた、独立した一対の１ビット桁上げ入力hci,vciと、ＡＬＵ内で直接接続されている一対の１ビット桁上げ出力coとを有している。該ＡＬＵは、入力信号a,b,hci,vciについて標準的な演算を実行して、加算、減算、ＡＮＤ、ＮＡＮＤ、ＯＲ、ＮＯＲ、ＸＯＲ、ＮＸＯＲ及び多重化等の出力信号f,coを生成することが可能であり、及び随意選択的に該演算結果を登録することが可能である。個々のＡＬＵの演算については以下で一層詳細に説明することとする。ＡＬＵに対する命令は、個々の４ビットメモリセル（後述する「Ｈツリー」構造を介してその値を設定できるもの）から供給すること、又は後述するバスシステム上で供給することが可能である。
【００２７】
図１及び図２に示すレベルでは、各スイッチングセクション14は、該セクションを水平方向に横切って延びる８つのバスと、該セクションを垂直方向に横切って延びる８つのバスとを有しており、これにより、64の交差点（図２にデカルト座標で符号を付す）を有する８×８の矩形アレイが形成される。バスの全ては４ビット幅を有している（X＝4における桁上げバスvc及びY＝3における桁上げバスhcが１ビット幅を有することを除く）。交差点の多くには、該交差点における２つのバスを選択的に接続することが可能な４連結(gang)プログラマブルスイッチ16が設けられている。幾つかの交差点には、４連結プログラマブルスイッチ18が設けられ、該スイッチは、該交差点で端部と端部とが出会う２つのバスをそこに対して直角方向に該バスとの接続を伴うことなく選択的に接続することが可能なものである。座標(4,3)における交差点には（例えば図６(c)に示すような）プログラマブルスイッチ20が設けられており、該スイッチは、該交差点で直交する桁上げバスvc,hcを選択的に接続することが可能なものである。
【００２８】
次に、スイッチングセクション14における水平方向のバスについて説明する。
【００２９】
Y＝0において、バスh2sは、プログラマブルスイッチ16により、X＝0,1,2,5,6で垂直バスに接続することが可能である。該バスh2sは、２タイル分の長さを有しており、座標(4,0)ではプログラマブルスイッチ18により１つおきのスイッチングセクション14に端部同士で接続可能である。
【００３０】
Y＝1では、ＡＬＵの入力bから西方向に延びるバスbeは、スイッチ16によりX＝0,1,2,3で垂直バスに接続することが可能である。また、ＡＬＵの出力fから東方向に延びるバスfwは、スイッチ16によりX＝5,6,7で垂直バスに接続することが可能である。これらのバスbe,fwの端部は、プログラマブルスイッチ18により座標(4,1)で接続することが可能である。
【００３１】
Y＝2では、バスhregsは、プログラマブルスイッチ16によりX＝1,2,3,5,6,7で垂直バスに接続することが可能である。
【００３２】
Y＝3では、バスhcoは、ＡＬＵの桁上げ出力coから西方向へ座標(4,3)におけるプログラマブルスイッチ20まで延びており、（a）ＡＬＵの桁上げ入力hciへと東方向に延びる桁上げバスhciに接続すること、又は（b）ＡＬＵの桁上げ入力vciへと南方向に延びる桁上げバスvciに接続することが可能である。
【００３３】
Y＝4では、バスhregnは、プログラマブルスイッチ16によりX＝0,1,2,3,5,6で垂直バスに接続することが可能である。
【００３４】
Y＝5では、バスhlは、X＝0,1,2,3,5,6,7で垂直バスに接続することが可能である。該バスhlは、1タイル分の長さを有し、プログラマブルスイッチ18により座標(4,5)で各スイッチングセクション14において端部と端部とを接続することが可能である。
【００３５】
Y＝6では、ＡＬＵの出力fから西方向に延びるバスfeは、スイッチ16によりX＝0,1,2,3で垂直バスに接続することが可能である。また、ＡＬＵの入力aから東方向に延びるバスawは、スイッチ16によりX＝5,6,7で垂直バスに接続することが可能である。バスfe,awの端部は、プログラマブルスイッチ18により座標(4,6)で接続することが可能である。
【００３６】
Y＝7では、バスh2nは、プログラマブルスイッチ16によりX＝1,2,3,6,7で垂直バスに接続することが可能である。バスh2nは、２タイル分の長さを有し、座標(4,7)では、プログラマブルスイッチ18により１つおきのスイッチングセクション14において端部と端部とを接続することが可能あり、座標(4,0)でバスh2sを接続するプログラマブルスイッチ18に対して互い違いに配置されている。
【００３７】
次に、スイッチングセクション14における垂直バスについて説明する。
【００３８】
X＝0では、バスv2wは、プログラマブルスイッチ16によりY＝0,1,4,5,6で水平バスに接続することが可能である。該バスv2wは、２タイル分の長さを有し、プログラマブルスイッチ18により１つおきのスイッチングセクション14において座標(0,3)で端部と端部を接続することが可能である。
【００３９】
X＝1では、ＡＬＵの出力fから南方向に延びるバスfnは、プログラマブルスイッチ16によりY＝0,1,2で水平バスに接続することが可能である。また、ＡＬＵの入力bから北方向に延びるバスbsは、スイッチ16によりY＝4,5,6,7で水平バスに接続することが可能である。バスfn,bsの端部は、プログラマブルスイッチ18により座標(1,3)で接続することが可能である。
【００４０】
X＝2では、バスvlは、Y＝0,1,2,4,5,6,7で水平バスに接続することが可能である。該バスvlは、１タイル分の長さを有し、座標(2,3)でプログラマブルスイッチ18により各スイッチングセクション14において端部と端部とを接続することが可能である。
【００４１】
X＝3では、バスvregwは、プログラマブルスイッチ16によりV＝1,2,4,5,6,7で水平バスに接続することが可能である。
【００４２】
X＝4では、バスvcoは、ＡＬＵの桁上げ出力coから西方向に座標(4,3)におけるプログラマブルスイッチ20まで延びており、（a）ＡＬＵの桁上げ入力hciへと東方向に延びる桁上げバスhciに接続すること、又は（b）ＡＬＵの桁上げ入力vciへと南方向に延びる桁上げバスvciに接続することが可能である。
【００４３】
X＝5では、バスvregeは、プログラマブルスイッチ16によりY＝0,1,2,4,5,6で水平バスに接続することが可能である。
【００４４】
X＝6では、ＡＬＵの入力aから南方向に延びるバスanは、スイッチ16によりY＝0,1,2で水平バスに接続することが可能である。また、ＡＬＵの出力fから北方向に延びるバスfsは、プログラマブルスイッチ16によりX＝4,5,6,7で水平バスに接続することが可能である。バスan,fsの端部は、座標(6,3)でプログラマブルスイッチ18により接続することが可能である。
【００４５】
X＝7では、バスv2eは、プログラマブルスイッチ16によりY＝1,2,5,6,7で水平バスに接続することが可能である。該バスv2eは、２タイル分の長さを有し、座標(7,3)でプログラマブルスイッチ18により１つおきのスイッチングセクション14において端部と端部を接続することが可能あり、座標(0,3)でバスv2wに接続するプログラマブルスイッチ18に対して互い違いに配置されている。
【００４６】
図２に示すように、バスbs,vco,fsは、スイッチングセクション14の北方向に向かってＡＬＵの入力b、出力co、及び出力fにそれぞれ接続されている。また、バスfe,hco,beは、スイッチングセクション14の西方向に向かってＡＬＵの出力f、出力co、及び入力bにそれぞれ接続されている。更に、バスaw,hci,fwは、スイッチングセクション14の東方向に向かってＡＬＵの入力a、入力ci、及び出力fにそれぞれ接続されている。更に、バスfn,vci,anは、スイッチングセクション14の南方向に向かってＡＬＵの出力f、入力ci、及び入力aにそれぞれ接続されている。
【００４７】
これらの接続に加えて、バスvregw,vregeは、それぞれのプログラマブルスイッチ18を介して、スイッチングセクション14の北方向に向かってＡＬＵの領域12において４ビット接続点vtsw,vtse（図２に「×」で示す）にそれぞれ接続される。また、バスhregs,hregnは、それぞれのプログラマブルスイッチ18を介して、スイッチングセクション14の西方向に向かってＡＬＵの領域12において４ビット接続点htse,htneにそれぞれ接続される。更に、バスhregs,hregnは、それぞれのプログラマブルスイッチ18を介して、スイッチングセクション14の東方向に向かってＡＬＵの領域12において４ビット接続点htsw,htnwにそれぞれ接続される。更に、バスvregw,vregeは、それぞれのプログラマブルスイッチ18を介して、スイッチングセクション14の南方向に向かってＡＬＵの領域12において４ビット接続点vtnw,vtneにそれぞれ接続される。これらの接続点vtnw,vtne,htne,htse,vtse,vtsw,htsw,htnwについては、図３ないし図５を参照して更に詳細に後述することとする。
【００４８】
また、図２に示すように、バスhregn,vrege,hregs,vregwは、それぞれ４ビット接続点22（図２に小さな四角で示す）を有しているが、これについては、図９を参照して更に詳細を後述することとする。
【００４９】
図３は、算術論理演算装置の各区域の間の相互接続の１つのレベルを示すものであり、該区域の各々は、隅が丸みを帯びた四角で示されている。４つの４ビットバスv8,v4w,v4e,v16からなる１グループは、ＡＬＵ区域12の各列を横切って垂直方向に延びている。各グループ中の最も左のバスv8は複数セグメントになっており、その各々は、ほぼ８タイル分の長さを有している。各グループ中の左から２つ目のバスv4wは複数セグメントになっており、その各々は、ほぼ４タイル分の長さを有している。各グループ中の右から２つ目のバスv4eは複数セグメントになっており、この場合も、その各々は、ほぼ４タイル分の長さを有しているが、左から２つ目のバスv4wとは２タイルだけオフセットされている。各グループ中の最も右のバスv16は複数セグメントになっており、その各々は、ほぼ16タイル分の長さを有している。図４の上部に位置するアレイの上縁部、及びその下縁部では、セグメントの長さは、上述したものよりも僅かに長く、又は短くすることが可能である。
【００５０】
ここで図３及び図５を参照する。４つのバスv8,v4w,v4e,v16からなる各グループは各ＡＬＵ区域12と交差し、接続点htnw,htsw,htse,htneで４つの４ビットタップ接続が行われる。バスセグメントの端部は、ＡＬＵ区域と交差するバスセグメントに対する接続上で接続されるような優先順位を取っている。
【００５１】
同様に、図４及び図５に示すように、４つの４ビットバスh8,h4n,h4s,h16からなるグループは、ＡＬＵ区域12の各行を横切って水平方向に延びている。各グループ中の一番上のバスh8は複数セグメントになっており、その各々はほぼ８タイル分の長さを有している。各グループ中の上から２つ目のバスh4nは複数セグメントになっており、その各々はほぼ４タイル分の長さを有している。各グループ中の下から２つ目のバスh4sは複数セグメントになっており、その各々はほぼ４タイル分の長さを有しているが、上から２つ目のバスh4nから２タイル分だけオフセットされている。各グループ中の一番下のバスh16は複数セグメントになっており、その各々はほぼ16タイル分の長さを有している。図４の左側に位置するアレイの左側縁部及び右側縁部では、セグメントの長さは上記よりも僅かに長く又は短くすることが可能である。４つのバスh8,h4n,h4s,h16からなる各グループが各ＡＬＵ区域12と交差する場合、更に別の４つの４ビットタップ接続が接続点vtnw,vtsw,vtse,vtneで行われる。バスセグメントの端部は、ＡＬＵ区域と交差するバスセグメントに対する接続上で接続されるような優先順位を取っている。
【００５２】
図５に示すように、接続点htnw,htsw,htne,htseは、プログラマブルスイッチを介して、ＡＬＵ区域の西方向及び東方向に向かうスイッチングセクションのバスhregn,hregsに接続されている。また、接続点vtnw,vtne,vtsw,vtseは、プログラマブルスイッチを介して、ＡＬＵ区域の北方向及び南方向に向かうスイッチングセクションのバスvregw,vregeに接続されている。
【００５３】
次に、図６(a)を参照して、直角に交差する４ビットバスからなる各対の間のプログラマブル結合部16について説明する。水平バスの導体をx0,x1,x2,x3とし、垂直バスの導体をy0,y1,y2,y3とする。ビット位置(bit significance)が同一である各導体対の間にトランジスタ160,161,162,163がそれぞれ設けられている。トランジスタ160,161,162,163のゲートはＮＯＲゲート16gの出力に共通に接続されている。該ＮＯＲゲート16gは、その２つの入力に、１つのスイッチグループにより共有することが可能な単一ビットメモリセルからのイネーブル信号を反転させた信号と、単一ビットメモリセル24の内容を反転させた信号とを受信する。したがって、イネーブル信号が高レベルであり及びメモリセル24の内容が高レベルである場合にのみ、導体x0,x1,x2,x3が、トランジスタ160,161,162,163により、導体y0,y1,y2,y3にそれぞれ接続される。
【００５４】
次に、互いに端部と端部とが直線状に出会う４ビットバスの各対の間のプログラマブル結合部16について図６(b)を参照して説明する。一方のバスの導体をx10,x11,x12,x13とし、他方のバスの導体をx20,x21,x22,x23とする。ビット位置が同一である各導体対の間にトランジスタ180,181,182,183がそれぞれ設けられている。トランジスタ180,181,182,183のゲートは、ＮＯＲゲート18gの出力に共通に接続されている。該ＮＯＲゲート18gは、その２つの入力として、１つのスイッチグループにより共有することが可能な単一ビットメモリセルからのイネーブル信号を反転させた信号と、単一ビットメモリセル24の内容を反転させた信号とを受信する。したがって、イネーブル信号が高レベルであり及びメモリセル24の内容が高レベルである場合にのみ、導体x10,x11,x12,x13が、トランジスタ180,181,182,183により、導体x20,x21,x22,x23にそれぞれ接続される。
【００５５】
次に、桁上げ導体hco,vco,hci,vciの間のプログラマブル結合部20について、図６(c)を参照して説明する。水平方向の桁上げ出力導体hcoは、トランジスタ20hh,20hvを介して水平方向の桁上げ入力導体hci及び垂直方向の桁上げ入力導体vciにそれぞれ接続される。更に、垂直方向の桁上げ出力導体vcoは、トランジスタ20vv,20vhを介して垂直方向の桁上げ入力導体vci及び水平方向の桁上げ入力導体hciにそれぞれ接続される。トランジスタ20hh,20vvのゲートは、インバータ20iの出力に共通に接続され、トランジスタ20hv,20vhのゲート及びインバータ20iへの入力は、ＮＯＲゲート20gの出力に接続されている。該ＮＯＲゲート20gは、その２つの入力として、１つのスイッチグループにより共有することが可能な単一ビットメモリセルからのイネーブル信号を反転させた信号と、単一ビットメモリセル24の内容を反転させた信号とを受信する。したがって、イネーブル信号が高レベルである場合に、導体hco,vcoが、メモリセル24の内容に従って、導体hci,vciにそれぞれ接続され、又は導体vci,hciにそれぞれ接続される。
【００５６】
図６(a)〜(c)を参照して説明した切り換え可能な結合部16,18,20がＮＯＲゲート16g,18g,20gをそれぞれ備えていることが理解されよう。図７に示すように、ＮＯＲゲート16gは、典型的には４つのトランジスタ16g1,16g2,16g3,16g4により形成され、前記２つのトランジスタ16g1,16g3が反転されたイネーブル信号に応答し、前記２つのトランジスタ16g2,16g4がメモリセル24の反転された内容に応答する。切換可能な結合部16,18,20からなるグループは、かかるグループのうちの一部のみをディセーブルにする必要性を伴うことなく共通にディセーブルにすることが可能であることが望ましい。かかるグループは、１つのスイッチングセクション14中の切換可能な結合部の全て、特定のタイルにおける２つのスイッチングセクション14中の切換可能な結合部の全て、又はアレイの一層大きな領域における切換可能な結合部の全てから構成することが可能である。この場合、トランジスタ16g1は、図８に示すように、該グループ中の切換可能な結合部16,18,20の全てに共通のものとすることが可能である。これにより、ゲートに必要となるトランジスタの数を25％省くことが可能となるが、図８に示すように、ゲートに連結する導体を追加する必要が生じる。
【００５７】
ここでは示さないが、メモリセル24の特性を用いることにより更なる簡略化が可能となる。該メモリセル24の内容と該内容の補数との両者は、出力として容易に求めることが可能なものである。したがって、図８の回路は、例えば、メモリセル24の特性を用いて実際のイネーブル信号及び反転されたイネーブル信号の両方を保持する必要性をなくすこと（メモリセルからの実際値又は補数値の何れか一方を用いて１つのイネーブル信号しか必要としないようにする等）により、配線コストを低減させることが可能になることが分かる。
【００５８】
図１及び図２を参照して上述したように、各スイッチングセクション14において、バスhregn,hregs,vregw,vregeは４ビット結合部22によりレジスタ又はバッファ回路にそれぞれ接続され、次に該回路について図９を参照して更に詳細を説明する。４つの結合部22は、マルチプレクサ26の入力にそれぞれ接続されている。該マルチプレクサ26は、入力の一つを出力として選択し、これをレジスタ又はバッファ28に供給する。該レジスタ又はバッファ28の出力は、４つの三状態バッファ30s,30w,30n,30eに供給され、該バッファは、バスhregs,vregw,hregn,vregeとの結合部22に再び接続される。バッファ28が使用される場合には、バスhregs,vregw,hregn,vregeのうちの選択された１つにおける４ビット信号が増幅されて、バスhregs,vregw,hregn,vregeのうちの選択された別の１つに供給される。レジスタ28が使用される場合には、バスhregs,vregw,hregn,vregeのうちの選択された１つにおける４ビット信号が増幅されて、次の活動状態のクロックエッジの後にバスhregs,vregw,hregn,vregeのうちの選択された何れか１つに供給される。
【００５９】
図９の構成の改善された形態を用いることにより、バス間の経路指定とは異なる目的で、バスhregs,vregw,hregn,vregeのうちの選択された１つの４ビット信号を取り出すことが可能となる。マルチプレクサ26の（又は代替的な構成ではバッファ28の）適当な構造及び接続により、配線網から受け取った値をマルチプレクサ26又はバッファ28の出力として選択し（これらの選択を図９に符号260,280で示す）、次いでその値を該スイッチボックスと関連するＡＬＵの命令を決定する際に使用することが可能となる。該構成の適用例を以下で詳述する。
【００６０】
この目的のためにマルチプレクサ26又はバッファ28を使用することは、ＡＬＵに命令を与えるために使用される値が、配線網を介して前方に送るために利用可能となる値でもあることを意味する。配線間で異なる値を送ることが望ましい場合には、異なるスイッチングセクション14を使用する必要がある。しかしながら、多くの構成では、ＡＬＵに送られる値により、その命令が１つの配線から別の１つの配線へと送られる値でもあると決定されることが望ましい。これは、同一の命令を多数のＡＬＵに与えること（深い処理パイプラインにおいて生じることが多い）が望ましい場合に適している。代替的な実施例（図示せず）では、マルチプレクサ26及びバッファ28からなる対が二対又は三対以上使用される。この場合、一対のマルチプレクサ／バッファ対は、関連するＡＬＵの命令入力を与える専用のものとすることが可能であり、一方、他のマルチプレクサ／バッファ対は、経路指定のために使用できる。
【００６１】
上述の構成により、アレイの周囲及び該アレイを横切る信号の経路指定に大きな柔軟性が提供される、ということが理解されよう。メモリセル24を用いたスイッチ16,18,20を適当にセッティングすることにより、及びマルチプレクサ26及びレジスタ又はバッファ28を適当にセッティングすることにより、バスv16,h16,v8,h8,v4e,v4w,h4n,h4sを主に使用して、アレイの縁部から特定のＡＬＵまで、ＡＬＵ同士の間、及び特定のＡＬＵからアレイの縁部まで長距離にわたり信号を送ることが可能である。これらのバスは、スイッチングセクション14により一直線に又は直角に共に結合させることが可能であり、レジスタ又はバッファ28による増幅によって伝播遅延が低減され、該レジスタ28によりパイプラインステージが導入される。また、これらのバスをその長さ方向に沿った途中の部分で引き出して(tap)、これにより特定の処理演算を実行するためのＡＬＵの設置がバスの長さにより完全に指定されることがないようにすることが可能である。したがって、信号は２つまたは３つ以上のＡＬＵに分散させることが可能である。更に、図１及び図２を参照して説明した前記の一層短い長さを有するバスを使用して、スイッチングセクション14とＡＬＵとの間で信号を経路指定することが可能であり、更に、例えば１つのＡＬＵからそれと同一の列及び行における隣接するＡＬＵ又は（該バスが水平方向又は垂直方向に延びている場合であっても）対角線方向で隣接するＡＬＵまでの一層短い距離に渡って主に信号を送ることが可能である。この場合も、レジスタ又はバッファ28を使用して信号を増幅し又はプログラマブル遅延を導入することが可能である。
【００６２】
上記の構成では、メモリセル24は、スイッチングセクション14及びＡＬＵ区域12と同程度までアレイを横切って分散される。各メモリセル24は、該メモリセル24により制御される１つ又は複数のスイッチ、マルチプレクサ、レジスタ又はバッファに隣接して配置される。これにより高い回路密度を達成することが可能になる。
【００６３】
次に、メモリセル24に対してデータの読み書きを行う態様、プログラマブルスイッチ16,18,20用のイネーブル信号をそれらのメモリセルに書き込む態様、命令及び／又は定数をＡＬＵに分散させる態様、及びクロック信号といった他の制御信号をアレイを横切って伝送する態様について説明する。これらの機能の全てについて、図１０に示すように「Ｈツリー」構造（該構造自体は既知のものである）を用いることが可能である。ここで図１０及び図１１を参照する。図示の64区域の何れにもイネーブル信号を分散させるために、イネーブル信号30a及び該イネーブル信号に関する６ビットアドレス32aをデコーダ34aに供給する。該デコーダ34aは、該デコーダからの４つの分岐のうちの何れが、前記アドレスに通じ、及び該４つの分岐の全てにおけるデコーダ34bへの４ビットアドレス32bと共に、前記分岐における更なるデコーダ34bにイネーブル信号30bを供給するかを決定する。イネーブル信号30bを受け取ったデコーダ34bは、該デコーダ34bからの４つ分岐のうちの何れが、必要とされるアドレスに通じ、及び該４つの分岐の全てにおけるデコーダ34cへの４ビットアドレス32cと共に、前記分岐における更なるデコーダ34cにイネーブル信号30cを供給するかを決定する。該イネーブル信号30cを受け取ったデコーダ34cは、次いで単一ビットメモリセルにおける格納可能な必要とされるアドレスにイネーブル信号34dを供給する。このＨツリー構造の利点は、全ての宛先に対する信号経路の長さがほぼ等しいことにあり、これはクロック信号の場合に特に有利となる。
【００６４】
上記記載の構成の大きな利点は、例えば１つのスイッチングセクション14中、又は１つのタイル中の２つのスイッチングセクション中、又は複数のタイルからなる１つのサブアレイにおける複数のスイッチングセクション中のメモリセル24のグループを、反転されたイネーブル信号により一括してディセーブルにして、これらメモリセルの内容がそれらに関連するスイッチに影響を及ぼさないようにすることが可能であることにある。次いで、これらのメモリセル24は、アレイの配線を構成するために使用するのではなくアプリケーションにより「ユーザ」メモリとして使用することが可能となる。
【００６５】
次に、本発明の本実施例で用いられるＡＬＵの構造について図１２を参照して説明する。図１２(a)に示すように、ＡＬＵは、４つの入力A,B,I,Cinと２つの出力F,Coutとを有している。A,B,I,Fは全て４ビット幅を有するものであり、A,B,Fについて上述するように、隣接するスイッチブロックにより一般の相互接続に接続されている。Iへの入力は、図9に示されるマルチプレクサ26から抽出される。Cin及びCoutは、どちらも1ビット幅であり、上記と同様に一層限定された相互接続に接続されている。A,Bは、ＡＬＵ用のオペランドを提供し、Fは出力を提供する。Cin,Coutは、桁上げ関数を提供するものではあるが、制御面でも重要なものである。IはＡＬＵの関数演算を決定する命令入力を提供する。これは、機能ユニットが１組のメモリビットにより制御されるという点で、標準的なＦＰＧＡと対照的である。この特徴の重要性及び配線網からＡＬＵまで命令入力を経路指定するために設けられた機構について以下で説明する。
【００６６】
ＡＬＵは、以下の４つの主要部分を有している。
【００６７】
４つの同一のビットスライス(bitslice)からなるＡＬＵデータパス
命令デコーダ
桁上げ／制御入力調整論理回路
スイッチブロックプログラミングインターフェイス
（これは、本発明の他の実施例ではＡＬＵ自体に存在する必要のないものではあるが、ＡＬＵに該特徴が存在することによりルックアップテーブルモードでＡＬＵを使用する可能性が許容されることになる）
図１２(b)は、ＡＬＵの単一ビットスライスのブロック図を示している。
【００６８】
２つの「入力バッファ」202,203は、経路指定網への電気的な接続を提供する手段に過ぎない。該アーキテクチャにはアドレス指定可能な入力レジスタ（ひいてはレジスタファイル）は存在しない。ＡＬＵの機能ユニット201には各サイクルで同じ場所（配線網）からオペランドが提供される。
【００６９】
機能ユニット201は、２つの入力A,Bのブール関数Uを生成するルックアップテーブル（ＬＵＴ）として動作する。４つの制御信号（L3,L2,L1,L0）により正確な関数がセットされ、表１に示すカルノー図が生成される。
【００７０】
【表１】
（ＡＬＵビットスライスに関するカルノー図）
0004230580.tif 000002
【００７１】
信号Liの生成について以下に説明する。
【００７２】
「和生成手段」204が、U及びCinのＸＯＲにより導出される和出力を提供する。
【００７３】
和 ＝ U ＸＯＲ Cin
Coutが、次の論理式に従って「桁上げ生成手段」205により生成される。
【００７４】
P ＝ U ＯＲ L4
G ＝ A ＯＲ L5
Cout ＝ IF P THEN Cin ELSE G
ここで、Pは伝搬関数、Gは生成関数とみなすことができる。信号Liは後述の態様で生成される。
【００７５】
出力レジスタ206は、和出力を随意選択的にラッチする。この随意選択は、ＡＬＵプログラミングメモリの制御下で選択可能なものである。随意選択的に、同様のラッチ構成を桁上げ出力に与えることができる。これらの特徴は、同じ演算を幾つかのＡＬＵで同期させ又はタイミング制御された態様で実行する必要のある深いパイプラインでの使用に有利なものである。
【００７６】
広範な異なる考え得るビットスライスを使用することが可能である。所与のアーキテクチャにおけるビットスライスタイプの選択は、全体として該アーキテクチャが最も効率よく処理を行うことを意図した命令のタイプの関数とすることが可能である。より複雑な演算に有用な構築ブロックとして作用することができる様々な関数を使用することが可能であることは、明らかに望ましい。その他の特徴もまた望ましいものである。即ち、その１つの望ましい特徴は、幾つかのビットをその正規関数から「流用」して(divert)他の回路要素にわたる制御を可能にする能力である。もう１つの望ましい特徴は、特定の構成での動的な命令切換を必要としないＡＬＵの固定命令を格納する能力である。ＡＬＵをスイッチボックス（又はルックアップテーブル）用の読み出し／書き込みポートとして使用することを可能にする適当なデフォルト状態が存在することもまた望ましい。
【００７７】
図１２(c)は、ＡＬＵの単一のビットスライスの物理的な実施態様のブロック図を示している。入力及び出力については図１２(b)を参照して上述したとおりである。該ビットスライスは、６つの制御信号を生成することを必要とする。このための機構について以下に説明する。該ビットスライスにより生成される有用な一組のブール関数を表２に示す。
【００７８】
【表２】
（ビットスライスの関数と関連する制御入力）
0004230580.tif 000003
【００７９】
入力は、以下のグループに分類される。即ち、算術演算命令（ADD,SUB）、２入力ビット単位(bitwise)命令（ＡＮＤ,ＯＲ,ＮＯＲ,ＸＯＲ,ＮＸＯＲ）、１入力命令（A,B,NOT A,NOT B）、比較及びテスト命令（EQUALS,MATCH1,MATCH0）である。これらの関数の出力を以下の表３にまとめる。
【００８０】
【表３】
（命令の出力）
0004230580.tif 000004
【００８１】
２の補数演算が使用され、及び演算に矛盾が生じないよう演算の桁上げが提供される。MATCH関数は俗にいうものであり、MATCH1の場合には、A及びBの両方で１となる少なくとも１つの位置が存在する場合にのみ値１が返され、MATCH0の場合には、A及びBの両方で０となる少なくとも１つの位置が存在する場合にのみ値０が返される。
【００８２】
ビットスライスの出力を決定するためには、６つの制御信号Liが必要である。しかしながら、ＡＬＵの関数を決定する動的な命令は何れも５ビット以上を含まないことが望ましく、これにより、該命令が相互接続の４ビット経路に適合するものとなり、及びＡＬＵ命令をそれとは別のＡＬＵの出力として提供することが可能となる。４つの命令ビットJiから制御信号Liを導出するための１つの方式は次のようになる。
【００８３】
【数１】
0004230580.tif 000005
【００８４】
しかし、これは、Cinのみによって制御されるマルチプレサが設けられていないという点で欠点を有するものである。これを実施するために、Cinについての依存性を与えるようL0及びL3の定義を変更することができる。その他の定義は変更しない。
【００８５】
L0 = IF (Cin AND L4) THEN J2 ELSE J3
L3 = IF (Cin AND L4) THEN J3 ELSE J2この結果得られた命令テーブルを表４として以下に示す。
【００８６】
【表４】
（命令ビット及びそれに対応する関数）
0004230580.tif 000006
【００８７】
次に、ＡＬＵの命令ビットの出所について説明する。本発明の構成要素は、その少なくとも１つの態様では、ＭＡＴＲＩＸアーキテクチャと共有されるものであり、機能ユニットについての命令をそれとは別の機能ユニットの出力として生成する能力である。これは、ＭＡＴＲＩＸアーキテクチャでは、比較的粗粒の(coarse)機能ユニットを備えた構造で実施され、該機能ユニットの各々は、８ビットＡＬＵと、自分自身のレジスタファイルを有する入力レジスタとを備えている。一方、本実施例では、４ビットＡＬＵを備えると共にアドレス指定可能な入力レジスタを有さない遙かに微細な機能ユニットが使用される。入力レジスタが存在しないため、機能ユニットが処理パイプラインで演算を行う必要がある。かかるパイプライン計算モデルにおいて配線網からＡＬＵに命令を入力することを可能にする回路を図１６に示す。
【００８８】
動的命令I（アレイ中で別のＡＬＵによって生成され、又は配線網にアクセスすることが可能なメモリから随意選択的に得られた４ビット命令）を含む入力信号は、配線網に対する結合部301から受け取られる。該入力信号は、上述のようにマルチプレクサ26（図９参照）を介して得ることも可能である。利用可能な選択肢が多数存在することが望ましい場合には、これは、１つ又は２つ以上の追加のＡＬＵをマルチプレクサ構成に使用することにより達成可能である。
【００８９】
該アーキテクチャの他の実施例では、全ての命令を動的に与えることが可能となり、この場合には信号はＡＬＵに直接渡される。しかし、本開示の実施例では、命令を動的に与えるか又は局所的に与えるかについての選択機能が存在する。配線網から入力された信号は、動的命令イネーブルゲート304を通過する。該ゲートの機能は、動的命令ビットIを該ＡＬＵにより使用可能とすること又はこれらを使用できないようにすることであり、後者の場合には、格納されている命令ビットを代替的に用いる必要がある。これは、該ＡＬＵについての構成ＲＡＭの単一ビット303により決定される。動的命令ビットを使用すべき場合には、ゲート304は、配線網から入力されたIの値を通過させる。そうでない場合には、ゲート304の出力がゼロになり、ＡＬＵへの命令入力は、格納された命令ビットとして４ビット制御レジスタ313中に既に格納されているものとなる。かかる既格納命令ビットは、例えばＨツリーネットワークを介して早期にロードしておくことが可能である。
【００９０】
配線網301からの動的命令ビットIとして又はレジスタ313からの既格納命令ビットとしてＡＬＵに入力を与える機構が、動的命令マスク305という形で設けられる場合には、利点を得ることができる。これは、２つのゲート、即ちＯＲゲート311及びＡＮＤゲート312を備えたものである。各ゲートへの入力（即ち動的命令イネーブルゲート304及びレジスタ313の出力）は同一である。
【００９１】
ＯＲゲート311の出力は、関連する命令ビットJiである。ＡＮＤゲート312の出力は、ＡＬＵの他の部分に提供するための出力Kiとして利用可能なものであり、その理由については後述することとする。入力イネーブルビット303が低レベルである場合には、出力Kiは全て低レベルとなり、ビットスライス用の命令ビットJiが４ビット制御レジスタ313に従う。入力イネーブルビット303が高レベルであり、制御レジスタ313ビットが低レベルである場合には、外部入力Iiが命令ビットJiの関連出力に経路指定され、関連するKiが低レベルにされる。入力イネーブルビット303が高レベルであり、制御レジスタ313ビットが高レベルである場合には、外部入力Iiが関連するKiに経路指定され、命令ビットJiの関連出力が高レベルにされる。
【００９２】
動的命令マスク305を提供する利点は、動的命令を効果的に利用するために、他の回路をＡＬＵと同期させて制御することが望ましいことが多いことである。例えば、ある場合には、ＡＬＵを加算演算と減算演算の間でスワップさせるべき場合に、桁上げチェーンの最下位ビットに供給する定数を、減算の場合には１をセットし、加算の場合には０をセットする必要がある。動的命令マスク305を設けることにより、図１７に示すように、該周辺回路を制御するために制御入力を追加する必要がなくなる。該マスク回路により、動的命令入力の特定のビットをＡＬＵに供給し、及び該動的命令入力の他のビットを周辺回路に供給することが可能になる。
【００９３】
図１７に示す場合には、制御レジスタ313は値0011を有する。その結果として、I3,I2はJ3,J2にそれぞれ接続するが、I1,I0はK1,K0に接続する。J1,J0は、両方とも値１に固定されている。これにより、最下位ビットを処理するためのADD_LSBコード及びSUB_LSBコードを含むADD及びSUB命令コードの拡張セットが与えられる。この関数コードセットを達成するよう結果的に得られるIに関するコードは次の通りである。
【００９４】
I 入力 ADD 命令コード       0000
I 入力 ADD_LSB 命令コード   0001
I 入力 SUB 命令コード       1100
I 入力 SUB_LSB 命令コード   1111
ＡＬＵ命令コードJは、ADD及びADD_LSBの両方については同じ（0011）であるが、ADDについては、Cinは、ビットスライス用のCinとなるよう単に伝播され、一方、ADD_LSBについては、ビットスライス用のCinの値は常に０である。SUB命令の位置も同様である。即ち、SUB_LSBについては、ビットスライス用のCinの値は常に１である。
【００９５】
したがって、周辺回路が動的命令入力により制御される際に同時に使用することができるＡＬＵ命令の組み合わせが制限される。しかし、これは、実際上の問題を生じさせるものとはならない（限られた数の場合しかカバーする必要がないため）。例えば、図１７に示す場合には、ADD命令とSUB命令との間に２つの共通ビットが存在する必要があり、即ち、この場合には、ビットJ1,J0が共に値１を有する。
【００９６】
したがって、ＡＬＵの４ビット出力は、別のＡＬＵの動的命令入力Iとして使用することが可能である。ＡＬＵの桁上げ出力もまた、別のＡＬＵの桁上げ入力として使用することが可能であり、これは動的命令を与える際に利用できる。ＡＬＵの演算を動的に変化させることが可能な３つの基本的な方法が存在する。
【００９７】
１．命令ビットIを一定に維持した状態で１つの関数の２つのバージョンの間で多重化を行うためにCinを使用することができる。図１３に示す例は、ＯＲとＡＮＤとの間の多重化を示している。これは、表４の右側２列に隣接して示されている関数間での多重化を可能にする。
【００９８】
２．Cinが同じ状態を維持している際に命令ビットIを変更することができる。これにより、Cinについて同じ要件を有する命令テーブルの同一列における関数間（例えば、桁上げ入力Cin＝０のとき命令入力1000,0000をそれぞれ有するＮＡＮＤとＸＯＲとの間）でスワッピングを行うことが可能になる。実際には、これは、図１４に示されるように、２つの命令間で多重化を行うために第２のＡＬＵを使用することにより最も容易に達成される。２つのIの値は、第１のＡＬＵの入力A,Bとして使用され、該第１のＡＬＵは、多重化関数0110を使用してプログラムされ、その出力がI入力として第２のＡＬＵに与えられる。
【００９９】
３．命令及びCinの値を変更することができる。これにより、命令テーブルの右側２列における任意の２項目間でスワッピングを行うことが可能になる。図１５は該構成を示すものであり、第１のＡＬＵをマルチプレクサとして使用し、及び該マルチプレクサで選択された命令が与えられる第２のＡＬＵをそのI入力として使用する点で、図１４と類似したものである。この場合、関数は、ＸＯＲ（命令コード0000）及びＮＯＲ（命令コード1000）であり、必要とされるCinの値はそれぞれ０,１である。代替的な命令入力間で選択を行うために多重化ＡＬＵのCinとして用いられる信号は、ここでは、多重化ＡＬＵのCoutとして伝播され、第２のＡＬＵのCinとして使用され、必要とされるI及びCinの組み合わせが得られることになる。
【０１００】
既述のように、ＡＬＵが隣接スイッチブロック用のメモリインターフェイス論理回路を備えているため、ルックアップテーブル操作が可能となる。したがって、一対のＡＬＵ及びスイッチブロックを４入力４出力ルックアップテーブル（ＬＵＴ）にすることができる。ＬＵＴアドレスを入力Aから得ると、出力和はAの任意のブール関数とすることができる。これは、ＡＬＵ命令セットでは効率的に実行することができない命令に有用なものとなる（その考え得る例としては、パリティ生成、ビット回転、及びCASE文における複雑なパターンの突き合わせがある）。ＬＵＴ操作は、ＡＬＵ内でモードビットにより選択可能となっており、該実施例ではI入力により選択することはできない。
【０１０１】
ＡＬＵのＬＵＴ操作中、I入力はディセーブルにされる。随意選択的に、該ＬＵＴ操作中にメモリへの書き込みを行うことが可能となり、この場合には、Bがデータ入力として使用され、Cinが書き込みイネーブル信号として使用される。該ＬＵＴの出力を使用してＡＬＵの出力を通常の態様で駆動することができる。
【０１０２】
当該プロセッサアレイにおけるプロセッサの基本モードは、所定のセットの論理演算のうちの１つを２又は３つの入力で実行することである。最も単純な場合には、プロセッサにより実行される命令は、構成メモリの４ビットに静的にプログラムされ、該命令は、連続するクロックサイクル間で変化しない。しかし、上述のように、動的命令を与えることも可能である。即ち、各プロセッサの動作を決定する命令が、構成メモリの４ビットと通常の配線網から得た４ビット入力との論理的な組み合わせとして形成される。次いで関連するプロセッサ（又はアレイの一部）の関数をサイクル毎に変更し、これにより完全な再構成に必要となるコストが節約され、提供可能な命令の数が増大し、データに依存する演算に関するコストが削減される。
【０１０３】
プロセッサ要素に動的命令を与えることができ、及び（このアレイの場合には構成メモリをユーザプレーンメモリへと変換することにより）ユーザプレーンメモリを利用することができるため、プロセッサアレイ内にＣＰＵを構築することが可能であることが判明した。図１８は、極めて単純なＣＰＵのビットスライスの一例を示している。図１８のビットスライスは最も単純に構築可能なものではあるが、これよりも遙かに複雑なビットスライスもまた実施可能であることに留意されたい。これは、ＲＡＭ401等のメモリ（例えばユーザプレーンメモリへと変換された構成メモリとすることが可能）と、プロセッサ要素の算術論理演算装置（ＡＬＵ）402と、プロセッサ要素の出力レジスタ403と、一般にＲＡＭとすることが可能なコードメモリ404（及びユーザプレーンメモリへと変換された１つ又は２つ以上のプロセッサ要素とすることが可能）とを含む。ＲＡＭ401は、16ワード×４ビットの大きさを有する。このＣＰＵは、４ビット幅のデータスライスに作用するよう適合されるたものである。これは、プロセッサ要素により処理可能なビットスライスが４ビット幅を有するためである。必要とされるデータパス幅が４ビットを越える場合には、１つ又は２つ以上の追加のプロセッサ要素が必要となる。
【０１０４】
ＲＡＭ401は、ＣＰＵのためのレジスタファイルとして機能し、ＣＰＵのためのデータを保持する。該ＣＰＵに関する命令は、コードメモリ404から受け取られる。かかる命令は、２種類からなり、即ち、ＡＬＵ402それ自体に関する命令と、ＲＡＭ401に関するアドレス及び読み出し／書き込み制御（アドレスポートから４本の専用線を介して渡されるアドレス情報（ADDRと示す）、及び上記とは別のポートを介して渡される読み取り／書き込み制御（R／Wと表される））である。有利には、該命令情報が圧縮形式でコードメモリ404に保持され、この場合には、コードメモリ404とＣＰＵとの間に追加の命令デコーダが必要となる。ＡＬＵ402により実行された命令が結果が得られると、該結果が出力レジスタ403に格納される。該結果は、次のサイクルで、ＡＬＵ402にフィードバックし、又はＲＡＭ401に格納することができる。単一サイクルで、ＲＡＭ401に対する読み出し又は書き込みが行われる。
【０１０５】
該ＣＰＵに適した単純な命令セットは以下に示す通りである（ここで、REGはレジスタ403、RAMはＲＡＭ401，及びaddrはＲＡＭ401へのアドレスである）。
【０１０６】
REG := RAM(addr)
→ワード番号（addr）をＲＡＭ401からREGにロードする
REG := NOT RAM(addr)
→RAM(addr)の反転論理をREGにロードする
REG := REG NAND RAM(addr)
→REG及びRAM(addr)内の値のビット単位の論理ＮＡＮＤを実行し、その結果をREGに格納する
REG := REG AND NOT RAM(addr)
→REG内の値のビット単位の論理ＮＡＮＤ及びRAM(addr)内の値の反転論理を実行し、その結果をREGに格納する
REG := REG + RAM(addr)
→REG及びRAM(addr)内の値の算術加算を実行し、その結果をREGに格納する
REG := REG OR RAM(addr)
→REG及びRAM(addr)内の値のビット単位の論理ＯＲを実行し、その結果をREGに格納する
RAM(addr) := REG
→レジスタファイルの書き込みを可能にする
更に複雑なデータパススライスを有し特定タイプの演算について最適化されたＣＰＵを入手可能な機能ユニットにより構築することは自明のことである。必要となるＡＬＵの数はＣＰＵに必要となる命令セットに依存し、一般に、時間的な制約により、必要とされる命令セットの実行に必要となるＡＬＵの数を最小限にすることが望ましい。追加のレジスタが必要となる場合に、１つ又は２つ以上の16ワード×４ビットＲＡＭ（ＲＡＭ401と同様）で該レジスタを構築することは自明のことである。１つのデータパススライス内に多数のＡＬＵが存在する場合には、必要とされる命令をそれらに協働して計算させる命令入力における命令値で各々を駆動することが必要である。
【０１０７】
２つ以上のデータパススライスが存在する場合もある。この場合には、各スライスにおける対応するＡＬＵが、共通のコードメモリからの命令入力を共有することが有利である。該命令が共通コードメモリ中で圧縮されている場合には、共有される命令デコーダを介して、ＡＬＵの各々に解凍された命令を提供することができる。桁上げは、桁上げ連鎖を使用して命令を実行する個々のＡＬＵ毎に、最下位のデータパススライスから最上位のデータパススライスまで連鎖されることになる。
【０１０８】
この種のＣＰＵの命令ストリームを生成するために利用することが可能な方法は多数存在する。最も容易なものを図１８に示す。命令ストリームはメモリから読み込まれる。しかし、結果的に生じるデータ依存型の実行によりデータ値から命令を導出することもまた可能である。最も汎用性のある構成は、これらの方法の両方を組み合わせて用いるものとなろう。
【０１０９】
本発明の実施形態を例示のためにのみ記載してきたが、本発明に従いながら多数の変形及び展開を行ってもよい。例えば、本実施形態では、４ビットＡＬＵを処理装置として用いているが、これに加えて、又はその代わりに、他の形態のＡＬＵその他の処理装置を使用することも可能である。
【０１１０】
更に、本実施形態では、ＡＬＵ及びスイッチングセクションによりアレイ全体がカバーされるような説明を行ってきたが、他の種類の構成要素を該アレイに含めることも可能である。例えば、サブアレイは、上述のようにＡＬＵ及びスイッチングセクションの４×４配列のタイルから構成することが可能である。また、該アレイは、４×４アレイにおける前述のサブアレイ及びメモリ、又は４×４アレイにおける前述のサブアレイ及びＲＩＳＣ ＣＰＵから構成することが可能である。
【０１１１】
上記の実施例では、各ＡＬＵ区域は正方形であり、各スイッチングセクションは正方形であってＡＬＵ区域と同一サイズであるが、レジスタバスvregw,vrege,hregn,hregsにおける制御可能スイッチ18が、ＡＬＵ区域の正方形の輪郭に侵入することに留意されたい。ＡＬＵ区域は、スイッチングセクションと同一サイズである必要はなく、特に一層小さくすることが可能であり、このため、１つ又は２つ以上のバスが、１つのスイッチングセクション14から対角線方向で隣接するスイッチングセクション14へと水平方向又は垂直方向に直接進行すること、例えばバスh2s,h2n間又はバスv2e,v2w間を走るようにすることが可能である。
【０１１２】
上記の実施例では、各ＡＬＵは、２つの独立した桁上げ入力vci,hci及び接続された一対の桁上げ出力coを有している。必要であれば、２つのタイプの桁上げ、即ち、マルチビット加算演算に特に用いられる隣接するＡＬＵ間の高速桁上げと、より柔軟に経路指定することが可能でありディジタル直列演算に特に用いられる低速桁上げとを処理するようＡＬＵを構成することも可能である。高速桁上げは、図面を参照して上述したものと同様に構成可能なものであり、低速桁上げは、桁上げ導体と４ビットバスの特定ビットとの間のスイッチングセクション14におけるプログラマブルスイッチを用いることが可能である。
【０１１３】
上記の実施例では、特定のビット幅、スイッチングセクションのサイズ、及びアレイのサイズについて説明してきたが、これらの値は全て適宜変更可能なものであることに留意されたい。また、プログラマブルスイッチ16,18,20は、各スイッチングセクション14中の特定区域に設けられるものとして説明したが、必要及び要求に応じて他の区域を用いることが可能である。
【０１１４】
上記の実施例では、アレイは二次元のものであるが、（例えば、隣接層のスイッチングセクションが互いに互い違いになった状態で上記アレイの積層体を形成することにより）三次元アレイに本発明の原理を応用することも可能である。この積層体は、２層からなるものとすることが可能であるが、好適には少なくとも３層からなり、その層数は２の累乗であることが好ましい。
【０１１５】
上記の実施例では、メモリセル24は、ゲート16g,18g,20gにより、メモリセルを他の目的（これを「ユーザプレーン」と表している）に使用できるよう制御を行うスイッチから分離させることができる。しかし、イネーブル信号メモリセルは、ユーザプレーンにすることができないものである。代替的な実施例では、特定のスイッチングセクション14におけるスイッチが、該スイッチングセクション14の境界においてバス中の更なるスイッチによりアレイの残りの部分から切断可能となっており、該更なるスイッチは、ユーザプレーンにすることができない更なるメモリセルにより制御される。
【０１１６】
その他にも多数の変形及び展開を実施することが可能である。
【０１１７】
以下においては、本発明の種々の構成要件の組み合わせからなる例示的な実施態様を示す。
【０１１８】
１．  複数の処理デバイスと、
該処理デバイス間の相互接続を提供する接続マトリクスと、
該接続マトリクスの構成を規定する手段と、
を備えており、
前記処理デバイスの各々が、入力オペランドについて関数を実行して出力を生成するよう構成された算術論理演算装置を備えており、前記入力オペランドが、各サイクルで同一経路上の相互接続から前記算術論理演算装置への入力として提供され、前記処理デバイスのうちの第１の処理デバイスの出力を該処理デバイスのうちの第２の処理デバイスへと経路指定して前記第２の処理デバイスにより実行される関数を決定する手段が配設されていることを特徴とする、再構成可能デバイス。
【０１１９】
２．  前記処理デバイスの各々が、アドレス指定可能な入力レジスタを備えておらず、このため、算術論理演算装置により相互接続から入力オペランドを直接受け取る、前項１に記載の再構成可能デバイス。
【０１２０】
３．  前記処理デバイスの各々が、該処理デバイスのうちの別の処理デバイスの出力により決定することが可能な第１の複数の構成ビットと、該処理デバイスのうちの別の処理デバイスの出力により決定することが不可能な第２の複数の構成ビットとを有している、前項１又は前項２に記載の再構成可能デバイス。
【０１２１】
４．  前記処理デバイスの各々が、第１オペランド入力と、第２オペランド入力と、機能結果出力と、桁上げ入力と、桁上げ出力とを有しており、前記第１オペランド入力、前記第２オペランド入力、及び前記機能結果出力がｎビットであり（ｎは１より大きい整数）、前記桁上げ入力及び前記桁上げ出力が１ビットである、前項１ないし前項３のいずれか１項に記載の再構成可能デバイス。
【０１２２】
５．  前記ｎ＝４である、前項４項に記載の再構成可能デバイス。
【０１２３】
６．  前記処理デバイスの各々が、その関数の決定のために、該処理デバイスのうちの別の処理デバイスからのｎビット命令入力を受け取るように構成されている、前項４又は前項５に記載の再構成可能デバイス。
【０１２４】
７．  前記処理デバイスのうちの１つへの桁上げ入力が該処理デバイスの算術論理演算装置の関数を変更することを可能にする手段が設けられている、前項４ないし前項６のいずれか１項に記載の再構成可能デバイス。
【０１２５】
８．  前記手段が、前記桁上げ入力が算術論理演算装置の関数を論理補数に変更することを可能にするものである、前項７に記載の再構成可能デバイス。
【０１２６】
９．  桁上げ入力を一定値に保持することを可能とする手段が前記処理デバイスの各々に設けられている、前項４ないし前項８のいずれか１項に記載の再構成可能デバイス。
【０１２７】
10．  前記処理デバイスのうちの第１の処理デバイスが、該第１の処理デバイスの桁上げ入力の値に従って、前記処理デバイスのうちの第２の処理デバイスへの命令入力の２つの値間で多重化を行うために使用可能となっている、前項４ないし前項７のいずれか１項に記載の再構成可能デバイス。
【０１２８】
11．  前記第１の処理デバイスの桁上げ入力を該第１の処理デバイスを介して前記第２の処理デバイスの桁上げ入力へと伝播させることが可能となっている、前項10項に記載の再構成可能デバイス。
【０１２９】
12．  前記処理デバイスの各々が、関数出力のためのラッチ可能な出力レジスタを備えている、前項１ないし前項11のいずれか１項に記載の再構成可能デバイス。
【０１３０】
13．  前記処理デバイスの各々が、算術論理演算装置の関数を決定するための命令が相互接続から動的に受けられるべきか前記処理デバイス中の構成メモリから提供されるべきかを決定する動的イネーブルゲートを備えている、前項１ないし前項12のいずれか１項に記載の再構成可能デバイス。
【０１３１】
14．  前記処理デバイスの各々が、動的命令マスクを備えており、該動的命令マスクを前記処理デバイスが受け取った命令に適用することにより、前記命令を、算術論理演算装置の関数を決定するための算術論理演算装置の命令入力と、前記処理デバイスにおける周辺回路の制御のための周辺回路の命令入力との両方に提供することが可能となっている、前項１ないし前項13のいずれか１項に記載の再構成可能デバイス。
【０１３２】
15．  中央処理装置の算術論理演算装置を形成するために１つ又は２つ以上の処理デバイスを配設し、
前記中央処理装置のレジスタファイルとして第１のメモリを配設し、
前記中央処理装置に命令を与えるためのコードメモリとして第２のメモリを配設する、
という各ステップを有し、
前記中央処理装置の前記算術論理演算装置の命令入力が前記第２メモリから提供されることを特徴とする、前項１ないし前項14のいずれか１項に記載の再構成可能デバイスから中央処理装置を構築する方法。
【０１３３】
16．  前記第１のメモリと前記第２のメモリとの一方又は両方が、前記再構成可能デバイスの１つ又は２つ以上の構成要素をユーザプレーンメモリに再構成することにより提供される、前項15に記載の方法。
【０１３４】
17．  前記再構成可能デバイスの前記１つ又は２つ以上の構成要素が、構成マトリクスの構成を規定するための手段の構成要素を含む、前項16に記載の方法。
【０１３５】
18．  前記再構成可能デバイスの前記１つ又は２つ以上の構成要素が、１つ又は２つ以上の処理デバイスを含む、前項16項又は前項17に記載の方法。
【０１３６】
19．  前記中央処理装置が、多数の算術論理演算装置を有しており、該多数の算術論理演算装置についての命令が前記第２のメモリから提供される、前項15ないし前項18のいずれか１項に記載の方法。
【０１３７】
20．  前記第２のメモリと、前記第１のメモリ及び前記中央処理装置の前記算術論理演算装置との両方の間に命令デコーダ回路が配設され、命令を圧縮形式で前記第２メモリに格納できるようになっており、また前記中央処理装置での実行前に前記命令デコーダ回路によりデコードされるようになっている、前項15ないし前項19のいずれか１項に記載の方法。
【０１３８】
21．  前記多数の算術論理演算装置に共通の命令デコーダ回路が配設される、前項21に従属する前項20に記載の方法。
【図面の簡単な説明】
【図１】プロセッサアレイの一部を示す説明図であり、６つのスイッチングセクション及び６つの算術論理演算装置の区域が示されている。
【図２】図１に示す構成の一部を示す部分拡大図であり、スイッチングセクションのうちの１つ及び算術論理演算装置の区域のうちの１つが示されている。
【図３】図１に示すプロセッサアレイの一部を更に小さなスケールで示す説明図であり、算術論理演算装置の区域と、これを横切って延びる「垂直」バスとが示されている。
【図４】図３と類似した図であるが、算術論理演算装置の区域を横切って延びる「水平」バスが示されている。
【図５】算術論理演算装置のうちの１つの区域ｎにおける図２、図３、及び図４のバス間の相互接続を示す説明図である。
【図６】  (a)は、互いに交差する一対の４ビットバスを接続するための、スイッチングセクション中の１つのタイプのプログラマブルスイッチを詳細に示す回路図、(b)は、端部と端部が互いに接する一対の４ビットバスを接続するための、スイッチングセクション中の別のタイプのプログラマブルスイッチを詳細に示す回路図、(c)は、桁上げビットバスを接続するための、スイッチングセクション中の別のタイプのプログラマブルスイッチを詳細に示す回路図である。
【図７】図５及び図６のプログラマブルスイッチで用いることが可能な一連のＮＯＲゲートを示す回路図である。
【図８】図７の回路の変形例を示す回路図である。
【図９】各スイッチングセクションで用いることが可能なバッファ及びレジスタを示す回路図である。
【図１０】スイッチングセクション中のプログラマブルスイッチに対してイネーブル信号が如何に分散されるかを概略的に示す説明図である。
【図１１】図１０に示す構成を一層詳細に示す回路図である。
【図１２】  (a)は、図１のアレイで用いられる個々の算術論理演算装置を示すブロック図、(b)は、個々の算術論理演算装置のビットスライスを概略的に示すブロック図、(c)は、(b)のビットスライスの物理的な実施態様を示す回路図である（これらは全て本発明の一実施例によるものである）
【図１３】算術論理演算装置におけるＯＲとＡＮＤとの間の動的な命令選択を示す説明図である。
【図１４】一対の算術論理演算装置におけるＮＡＮＤとＸＯＲとの間の動的な命令選択を示す説明図である。
【図１５】一対の算術論理演算装置におけるＸＯＲとＮＯＲとの間の動的な命令選択を示す説明図である。
【図１６】配線網から算術論理演算装置へ命令を動的に供給するための構造を示す説明図である。
【図１７】図１６に示す動的命令マスクによるビットの流用(diversion)を利用した桁上げ入出力パスを示す説明図である。
【図１８】極めて単純なＣＰＵのビットスライスの一例を示す説明図である。
【符号の説明】
12        回路領域
10        タイル
14        スイッチングセクション
16,18,20  プログラマブルスイッチ
22        結合部
【図１】
0004230580.tif 000007
【図２】
0004230580.tif 000008
【図３】
0004230580.tif 000009
【図４】
0004230580.tif 000010
【図５】
0004230580.tif 000011
【図６】
0004230580.tif 000012
【図７】
0004230580.tif 000013
【図８】
0004230580.tif 000014
【図９】
0004230580.tif 000015
【図１０】
0004230580.tif 000016
【図１１】
0004230580.tif 000017
【図１２】
0004230580.tif 000018
【図１３】
0004230580.tif 000019
【図１４】
0004230580.tif 000020
【図１５】
0004230580.tif 000021
【図１６】
0004230580.tif 000022
【図１７】
0004230580.tif 000023
【図１８】
0004230580.tif 000024