(57)【特許請求の範囲】
【請求項１】
論理素子の接続を変更することにより、論理素子を共有してかつ複数の論理構造を実現する電気的に変更可能なプログラマブルゲートアレーにより構成されたプログラマブル演算器と、
上記プログラマブルゲートアレーを命令に応じて論理構造を変更することが可能な制御回路とを有し、
上記命令は、実行すべき演算の種類を規定する第１コードと、オペランドと、上記演算の接続関係を規定する第２コードと、を含み、
上記制御回路は、予め定められた上記プログラマブルゲートアレーの論理構造を変更するための複数の配線情報を予め記憶しており、実行すべき命令に含まれる上記第２コードに基づいて上記複数の配線情報の一つを読み出して上記プログラマブル演算器に供給し、
上記プログラマブル演算器は、上記配線情報に基づいて上記プログラマブルゲートアレーの論理構造を変更して、上記第１コードと上記オペランドで指定される演算を実行することを特徴とするプロセッサ。
【請求項２】
上記プログラマブル演算器は、
それぞれ電気的に変更可能なプログラマブルゲートアレーにより構成された複数の論理ブロックと、
上記複数の論理ブロック間の接続を電気的に切り替え可能な可変信号線網とを有し、
上記複数の配線情報の各々は、上記複数の論理ブロック内、一つの演算に対応して定められ、その演算を実行する演算器を少なくとも複数の論理ブロックを使用して実現させるための配線情報であって、上記少なくとも複数の論理ブロックの各々論理構造を切り替えるための第１の情報と上記少なくとも複数の論理ブロック間の接続を切り替えるための第２の情報を含み、
該制御回路は、各命令の実行時に、その命令のための配線情報内の第１，第２の情報を、その命令が要求する演算に対応して定められた複数の論理ブロックと上記可変信号線網にそれぞれ供給する請求項１記載のプロセッサ。
【請求項３】
上記制御回路は、
上記複数の配線情報を記憶した記憶回路と、
実行すべき命令に含まれる上記第２コードに基づいて、上記複数の配線情報の一つを読み出し、上記複数の論理ブロックと上記可変信号線網に供給する回路とを有する請求項２記載のプロセッサ。
【請求項４】
上記複数の論理ブロックは、２次元マトリックス状に配置され、
上記可変信号線網は、
第１の方向に延在した複数の第１種の信号線と、
第１の方向と直交する第２の方向に延在した複数の第２種の信号線と、
上記複数の第１種の信号線と上記複数の第２種の信号線との間の接続を切り替えるための、マトリックス状に配置された複数のスイッチとを有する請求項２または３記載のプロセッサ。
【請求項５】
命令に応じて演算機能を実現するように論理構造を電気的に変更可能なプログラマブル演算器と上記プログラマブル演算器の論理構造を変更するための制御回路とを有し、
上記命令は、実行すべき演算の種類を規定する第１コードと、オペランドと、
上記演算の接続関係を規定する第２コードと、を含み、
上記プログラマブル演算器は、
複数の論理ブロックと、
上記複数の論理ブロック間の接続を電気的に切り替え可能な可変信号線網とを有し、
上記制御回路は、
上記命令で指定される演算機能を上記プログラマブル演算器により実現させるための複数の配線情報を記憶した記憶回路と、
複数の命令の各々を実行すべき時に、上記記憶回路から、上記複数の配線情報のうちの上記命令に含まれる上記第２コードに対応する配線情報を読み出して上記可変信号線網に供給する読み出し回路とを有し、
上記配線情報は、上記命令で指定される演算機能を上記プログラマブル演算器に含まれる上記論理ブロックにより実現させるものであることを特徴とするプロセッサ。
【請求項６】
上記複数の論理ブロックは、２次元マトリックス状に配置され、
上記可変信号線網は、
第１の方向に延在した複数の第１種の信号線と、
第１の方向と直交する第２の方向に延在した複数の第２種の信号線と、
上記複数の第１種の信号線と上記複数の第２種の信号線との間の接続を切り替えるための、マトリックス状に配置された複数のスイッチとを有する請求項５記載のプロセッサ。
【請求項７】
プログラマブル演算器と、制御回路と、を含み、命令を実行するプロセッサであって、
上記プログラマブル演算器は、複数の論理回路ブロックと上記複数の論理回路ブロックを相互に接続する可変信号線網とを含み、
上記可変信号線網は、配線情報に基づいて上記複数の論理回路ブロックの相互接続関係を形成するものであって、
上記制御回路は、命令デコーダと、記憶回路と、を含み、
上記命令デコーダは、上記命令を解読して、実行すべき処理を指定する第１の制御信号を上記プログラマブル演算器に出力するとともに、上記処理に対応する上記配線情報を指定する第２の制御信号を上記記憶回路に出力し、
上記記憶回路は、上記命令で指定され得る複数の上記配線情報を予め格納しており、上記命令デコーダから出力された第２の制御信号で指定される上記配線情報を読み出して、上記プログラマブル演算器に供給し、
上記プログラマブル演算器は、上記配線情報に基づいて上記可変信号線網を制御して上記複数の論理回路ブロックの相互接続関係を形成し、上記第１の制御信号で指定される処理を実行することを特徴とするプロセッサ。
【請求項８】
上記論理回路ブロックは、論理素子の接続を変更することにより、論理素子を共有してかつ複数の論理構造を実現する電気的に変更可能なプログラマブルゲートアレーにより構成され、
上記配線情報は、上記論理回路ブロックを変更する情報をさらに含むことを特徴とする請求項７記載のプロセッサ。
【請求項９】
上記命令は、実行すべき処理を示す命令コードと、オペランドを示すオペランドコードと、上記配線情報を指定する配線コードとを含むことを特徴とする請求項７もしくは８記載のプロセッサ。
【請求項１０】
上記命令は、実行すべき処理を示す命令コードと、オペランドを示すオペランドコードとを含み、
上記命令コードは、上記配線情報を指定する情報を含むことを特徴とする請求項７もしくは８記載のプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムに従って処理を実行するプロセッサに係り、特にディジタル信号をプログラムに従って処理を実行する信号処理プロセッサに好適なプロセッサに関する。
【０００２】
【従来の技術】
従来のプログラム制御の典型的なプロセッサは、図２７に示すプロセッサＸ１のように、データあるいはプログラムを記憶するメモリＸ１３、演算を実行する演算器Ｘ１４、データを一時的にラッチするレジスタＸ１１、信号の入出力の制御、命令のフェッチとそのデコード、バスの制御などを行う制御器Ｘ１２から構成され、この制御器Ｘ１２には通常命令フェッチ用のプログラムカウンタが含まれる。なお、プロセッサの構成と機能のより詳細については、例えば、「ＵＬＳＩ設計技術」（社団法人電子情報通信学会  発行）を参照。
【０００３】
とくに、演算器Ｘ１４は、例えば汎用の算術論理演算を実行する演算器（ＡＬＵ）を含み、レジスタＸ１１あるいはメモリＸ１３から読み出されたのデータを制御器Ｘ１２を介して取り込み、命令に従ってこのデータに対して演算を実行し、演算結果データを制御器Ｘ１２を介してレジスタＸ１１あるいはメモリＸ１３に転送する。
【０００４】
一方、特開平７−７３０１４号明細書には、複数の演算器を有し、入力データに応じて必要な演算器を選択してそのデータに対する演算を実行するプロセッサも提案されている。すなわち、図２９に示すように、このプロセッサＸ３は、演算器として、加算器Ｘ３３、減算器Ｘ３４、乗算器Ｘ３５、自乗器Ｘ３６、論理演算器Ｘ３７を実行する演算器を有し、命令デコーダＸ３１により解読された命令に応じて入力回路Ｘ３２から供給される入力データに対して使用する演算器を動的および静的に選択し、結果データを出力回路Ｘ３８を介して外部に出力する。
【０００５】
他のプロセッサとしては、信号処理プロセッサも知られている。このプロセッサの構造も基本的には図２７に示すものと同じであるが、この信号処理プロセッサには、音声信号あるいは画像信号でよく使用される演算を実行可能な演算器が含まれている。このようなプロセッサはプログラムを変えることにより、異なる信号処理を実行できるようになる。
【０００６】
しかし、画像処理の用途によっては、信号処理プロセッサよりも高速に処理を実行するために、特定の処理を高速に実行するように構成された専用の大規模集積回路（ＬＳＩ）が使用されることが多い。その一例は、画像信号の圧縮・伸張処理を実行する専用ＬＳＩである。近年のマルチメディア化に伴い、画像信号の圧縮・伸張技術はそのキー技術として注目を浴びている。それに伴い、画像信号の圧縮伸張方式に関する標準の規格化がＩＴＵ−ＴやＩＳＯ等によりなされている。例えば、テレビ電話・会議等の通信用途を目的とした規格としては、Ｈ．２６１，Ｈ．２６２（ＩＴＵ−Ｔ勧告）があり、蓄積メディアを目的とした規格としては、ＩＳＯ−１３８１８，ＩＳＯ−１１１７２（ＩＳＯ勧告）等がある。
【０００７】
これらの標準に基づいて圧縮された画像信号の伸張処理を実行するための専用ＬＳＩがすでに多数開発されている。代表的な画像伸張処理回路には、図２８に示すように、画像処理専用のＬＳＩが含まれている。可変長復号器（ＶＬＤ）Ｘ２２は、ビットストリームのコードの復号を行うＬＳＩである。逆量子化器（ＩＱ）Ｘ２３は、量子化されている信号を元の信号にするＬＳＩである。逆離散コサイン変換器（ＩＤＣＴ）Ｘ２４は、圧縮処理でよく利用される離散コサイン変換（ＤＣＴ）の逆変換である逆離散コサイン変換を実行するＬＳＩである。動き補償回路（ＭＣ）Ｘ２５は、動画像に動きを補償する処理を実行するＬＳＩである。表示器（ＤＩＳＰ）Ｘ２６は、動画像を図示しない表示装置に表示するための処理を実行するＬＳＩである。画像伸張処理回路Ｘ２には、これらの他に、画像信号の圧縮ビットストリームが入力され、画像伸張処理回路Ｘ２の全体を制御するホストインターフェース＆制御器Ｘ２１と、外部メモリとのインターフェイスを行うメモリ制御器Ｘ２７が含まれている。個々の回路の機能及び処理内容については、たとえば、ＩＴＵ−ＴあるいはＩＳＯの勧告を参照。
【０００８】
圧縮された画像信号の伸張処理では、画像フレーム（あるいは画像フィールド）を、図３１Ａに示すように複数のブロックに分割し、そのブロック単位に信号処理を実行することが一般的である。専用ＬＳＩは、各ブロックに対して特定の信号処理を実行する演算器であるとも考えることもできる。それぞれの演算器は、特定の信号処理を高速に行うことができるように構成され、かつ、これらの演算器は、図３１Ｂの下側に示すようにパイプライン処理により異なる処理を並列に実行することが可能なように構成され、１フレームに許容される時間内で画像フレーム内の信号処理を実行することができる。
【０００９】
【発明が解決しようとする課題】
上記の画像処理専用の演算器を使用すると高速に画像処理を実行できる。しかし、画像処理のＬＳＩをそれぞれ製造するコストが高くなる。
【００１０】
さらに、近年、画像処理技術の進歩が著しく、次々とより高度の画像処理技術が提案されている。このような新しい画像処理技術を取り込むには、各画像処理専用のＬＳＩが行う画像処理を、新たな仕様に基づいて変更する必要がある。しかし、専用のＬＳＩを使用する方法では、このような新しい画像処理技術を導入するにはＬＳＩを新たに開発しなければならない。このように、専用のＬＳＩを使用する方法は、処理の仕様の変更に対応しにくい。
【００１１】
さらに、画像処理に使用される複数の専用のＬＳＩの中には、共通する演算機能があり、画像処理回路全体としては演算器に冗長性があり回路規模を増大しているという問題がある。
【００１２】
一方、既に述べた画像処理を信号処理プロセッサにより実行させるには、前述の複数の専用ＬＳＩが実行する処理を要求する命令をプロセッサに実行させることが考えられる。しかし、一般に、画像処理のような信号処理は、図２７に示しているような構造の従来の信号処理プロセッサに含まれる比較的単純な複数の演算を続けて実行する必要がある。また、そのようなプロセッサに含まれている演算器では高速に処理できない演算を使用する。しかし、従来のプロセッサは、複数の演算の組み合わせからなる複合演算を高速に実行できる演算器は含まれていない。また、信号処理とくに画像処理でよく実行される処理を高速に実行できる演算器も含まれていない。したがって、このようなプロセッサで、信号処理を実行させた場合、図３１Ｂの上段に示すように、処理時間が増大し、上記のような複数の専用の演算器を使用した場合のような高速な処理を実行できない。このことは、図２９に示したような構成のプロセッサでも変わりはない。
【００１３】
また、画像処理用の専用の演算器を付加された汎用のプロセッサも販売されている。しかし、このようなプロセッサでは、プロセッサ内の演算器と付加された演算器の間には、同じ機能の回路が含まれ、回路的に無駄であるという問題は残る。さらに、新しい画像処理技術に適した演算を高速に実行させたいときには、プロセッサ内の汎用の演算器を使用するか、付加された演算器が改良されるのを待たなければならない。汎用の演算器を使用した場合には、処理速度が期待できない。
【００１４】
さらに、従来のプロセッサでは、その処理をより高速にするためには、たとえば、図３０（ａ）にあるように、複数の演算器をプロセッサ内に設け、それらを並列に動作させることが考えられる。これにより、Ｚ１＝Ａ＋Ｂ、Ｚ２＝Ｃ＋Ｄという二つの加算を並列に実行できる。しかし、このような演算器では、図３０（ｂ）に示すような、Ｚ１＝Ａ＋Ｂ、Ｚ２＝Ｚ１＋Ｃ、すなわち、Ｚ２＝Ａ＋Ｂ＋Ｃとなるような従属演算を実行できない。このような従属演算も実行可能にするには、従来のプロセッサでは、図３０（ｂ）の演算器を別に設けなければならない。したがって、図３０（ａ）と（ｂ）に示すような二つの加算器を使用する異なる演算のために別々の演算器を重複して使用しなければならず、回路的には無駄が生じる。
【００１５】
したがって、本発明の目的は、演算器の回路規模を縮小するのに適した演算器を有するプロセッサを提供することである。
【００１６】
本発明の他の目的は、演算の仕様が変更された場合にも変更後の演算仕様に即して新たな演算を実行するのに適した演算器を有するプロセッサを提供することである。
【００１７】
さらに、本発明のさらに他の目的は、複数の命令が要求する異なる演算、とくに、複数の演算を組み合わせた複合演算を実行するのに適した演算器を有するプロセッサを提供することである。
【００１８】
【課題を解決するための手段】
上記目的を達成するために、本発明よるプロセッサでは、
演算器が、電気的に変更可能なプログラマブルゲートアレーにより構成されたプログラマブル演算器により構成され、
制御回路により、複数の命令が要求する複数の演算をそれぞれ実行する複数の演算器を上記プログラマブルゲートアレーを共用して実現するために予め定められた、上記プログラマブルゲートアレーの論理構造を変更するための複数の配線情報の内、実行すべき命令が要求する演算を実行する演算器を実現するための一つの配線情報を供給するように、実行すべき命令に依存して上記複数の配線情報を切り替えて上記プログラマブル演算器に供給する。
【００１９】
より具体的には、
上記プログラマブル演算器は、
それぞれ電気的に変更可能なプログラマブルゲートアレーにより構成された複数の論理ブロックと、
上記複数の論理ブロック間の接続を電気的に切り替え可能な可変信号線網とを有する。
【００２０】
上記複数の配線情報の各々は、上記複数の論理ブロック内、一つの演算に対応して定められ、その演算を実行する演算器を少なくとも複数の論理ブロックを使用して実現させるための配線情報であって、上記少なくとも複数の論理ブロックの各々論理構造を切り替えるための第１の情報と上記少なくとも複数の論理ブロック間の接続を切り替えるための第２の情報を含む。
【００２１】
上記制御回路は、各命令の実行時に、その命令のための配線情報内の第１，第２の情報を、その命令が要求する演算に対応して定められた複数の論理ブロックと上記可変信号線網にそれぞれ供給する。
【００２２】
さらに具体的には、上記複数の論理ブロックは、２次元マトリックス状に配置され、
上記可変信号線網は、
第１の方向に延在した複数の第１種の信号線と、
第１の方向と直交する第２の方向に延在した複数の第２種の信号線と、
上記複数の第１種の信号線と上記複数の第２種の信号線との間の接続を切り替えるための、マトリックス状に配置された複数のスイッチとを有する。
【００２３】
本発明に係るプロセッサのさらに他の態様では、
異なる演算器を実現するように論理構造を電気的に変更可能なプログラマブル演算器とそのための制御回路とを有する。
【００２４】
上記プログラマブル演算器は、
複数の論理ブロックと、
上記複数の論理ブロック間の接続を電気的に切り替え可能な可変信号線網とを有する。
【００２５】
上記複数の論理ブロックは、それぞれ異なる演算器を構成する複数の演算器回路ブロックを含む。
【００２６】
上記制御回路は、
上記プログラマブル演算器の論理構造を電気的に切り替え、もって異なる演算器の一つを上記プログラマブル演算器により実現させるための複数の配線情報を記憶した記憶回路と、
複数の命令の各々を実行すべき時に、その命令に応答して上記複数の配線情報の一つを読み出し、上記可変信号線網に供給する読み出し回路とを有する。
【００２７】
上記複数の配線情報は、それぞれ上記複数の演算器回路ブロックの内の複数の演算器回路ブロックの間の接続を電気的に切り替え、もって異なる演算器を上記プログラマブル演算器により実現させるための複数の配線情報を含む。
【００２８】
さらに具体的的には、
上記複数の論理ブロックは、２次元マトリックス状に配置され、
上記可変信号線網は、
第１の方向に延在した複数の第１種の信号線と、
第１の方向と直交する第２の方向に延在した複数の第２種の信号線と、
上記複数の第１種の信号線と上記複数の第２種の信号線との間の接続を切り替えるための、マトリックス状に配置された複数のスイッチとを有する。
【００２９】
【発明の実施の形態】
以下、本発明に係るプロセッサを図面に示したいくつかの実施の形態を参照してさらに詳細に説明する。なお、以下においては、同じ参照番号は同じものもしくは類似のものを表わすものとする。また、発明の第２の実施の形態以降においては、発明の第１の実施の形態との相違点を主に説明するに止める。
【００３０】
＜発明の実施の形態１＞
図１Ａにおいて、信号処理プロセッサ１には、本発明に特徴的なプログラマブル演算器１４とそれを制御するための演算器制御器１５が設けられている。プログラマブル演算器１４は、その論理構造を電気的に変更可能な回路から構成され、その論理構造を変更することにより実行する命令に適切な演算器を構成することが可能である。演算器制御器１５は、プロセッサ１で実行される命令を全てに対する配線情報を予め記憶し、実行すべき命令を解読したときに、その命令に応じて、そのその命令が要求する演算器を実現するために必要な配線情報をプログラマブル演算器１４に送り、それにより、その命令が必要とする演算器をプログラマブル演算器１４により実現させる。なお、プロセッサ１には、データあるいはプログラムを記憶するメモリ１３、データを一時的にラッチするレジスタ１１、信号の入出力の制御やバスの制御、メモリ１３から命令のフェッチ、フェッチされた命令の解読などを行う制御器１２が含まれている。制御器１２にはフェッチすべき命令のアドレスを指定するプログラムカウンタが含まれる。信号処理プロセッサ１は、単一の半導体チップ上に大規模集回路（ＬＳＩ）により実現される。
【００３１】
本実施の形態で使用する命令は、図６Ａの１５０に示すように、命令コードとオペランドと配線コードを含む。オペランドフィールドは、命令が使用するオペランドが保持されているメモリのアドレスあるいはそのオペランドが保持されているレジスタの番号を含むオペランド指定フィールドである。複数のオペランドを指定する場合には、このオペランドフィールドはそれぞれのオペランドを指定する情報を含む。制御器１２内には、命令１５０を解読する命令デコーダを有し、その命令デコーダの出力に従い、命令１５０のオペランドフィールドが指定するオペランドを読み出し、プログラマブル演算器１４に供給する。また、命令１５０の命令コードもプログラマブル演算器１４に供給する。命令１５０の配線コードを演算器制御器１５に供給する。
【００３２】
図１Ｂに示すように、プログラマブル演算器１４は、マトリックス状に配置されている、それぞれ電気的に構成を変更可能な複数の可変論理ブロック（ＣＬＢ）１４３と、演算を受けるべきデータを入力するための入力インターフェイス１４１と演算結果データを出力するための出力インターフェイス１４４と、これらの可変論理ブロック（ＣＬＢ）１４３の入力端と出力端および入力インターフェイス１４１、出力インターフェイス１４４を相互に接続するための、電気的にパスを切り替え可能な可変信号線網が設けられる。可変論理ブロック（ＣＬＢ）１４３は、ここでは、２行３列に配置されているが、この行数と列数はあくまで一例であって、プロセッサの主たる用途あるいは性能に依存して適宜決定すればよい。
【００３３】
各可変論理ブロック（ＣＬＢ）１４３は、論理回路を実現するため複数のトランジスタで構成された回路要素を含む。これらの回路を以下では基本論理素子と呼ぶ。各可変論理ブロック（ＣＬＢ）１４３内には、図示しない複数の接続スイッチがさらに設けられている。それらの複数種類の基本論理素子の内の一つの入力端を、その（ＣＬＢ）１４３内の他の任意の基本論理解路の出力端に接続するか、その可変論理ブロック（ＣＬＢ）１４３の上側、下側、左側あるいは右側の配線チャネルの各々内の複数の信号線のいずれかと接続するか、あるいはそれらの複数種類の基本論理素子の内の一つの出力端を、その可変論理ブロック（ＣＬＢ）１４３の上側、下側、左側あるいは右側の配線チャネルのそれぞれ内の複数の信号線のいずれかと接続する。各可変論理ブロック（ＣＬＢ）１４３には、上記複数の接続スイッチに対応して図示しない複数のメモリ素子がさらに設けられている。各メモリ素子は、対応するスイッチのオンオフ動作（接続、切断動作）を指定する。例えば、メモリ素子に電荷が与えられた場合には、オン動作を行うことによりスイッチを接続するように動作する。各可変論理ブロック（ＣＬＢ）１４３内のこれらのメモリ素子に与える電荷を制御することにより、その可変論理ブロック（ＣＬＢ）１４３が実現する論理構造を切り替えることができる。
【００３４】
各可変論理ブロック（ＣＬＢ）１４３は、上に説明したように、複数の基本論理素子と、それらの間の接続あるいはそれらと配線チャネルとの間の接続を切り替える複数の接続スイッチと、それぞれ一つの接続スイッチに対応する複数の書き換え可能なメモリ素子とからなる。具体的には、基本論理素子としては、（１）トランジスタを使用する（２）たとえばＡＮＤ，ＯＲ，ＮＡＮＤ，フリップフロップ等を実現するように構成された複数のマクロセルを使用する（３）基本論理素子としてランダムアクセスメモリ（ＲＡＭ）を利用して、異なる入力信号に対応するアドレスに、それらの入力信号に対して可変論理ブロック（ＣＬＢ）１４３が生成すべき出力信号を予め記憶する（４）これらの複合構造等が考えられる。本実施の形態では、上記複数のマクロセルを使用する。このような可変論理ブロックはすでにフィールドプログラマブルゲートアレー（ＦＰＧＡ）（あるいはフィールドプログラマブルロジックアレー（ＦＰＬＡ）とも呼ばれる）として、とくに、電気的に構造を変更可能なＦＰＧＡあるいはＦＰＬＡとして知られている回路を使用して実現できる。
【００３５】
可変論理ブロック（ＣＬＢ）は、１つの可変論理ブロック（ＣＬＢ）で一つの演算器を構成できない場合には、複数の可変論理ブロック（ＣＬＢ）を次に述べる可変信号線網により接続して一つの演算器を構成する。
【００３６】
本実施の形態では、可変論理ブロック（ＣＬＢ）１４３間の接続を切り替える可変信号線網は、複数のスイッチマトリックス（ＳＭ）１４２と、複数の配線チャネル１４０Ｘ、１４０Ｙにより構成される。すなわち、各行の複数の可変論理ブロック（ＣＬＢ）１４３の図上での上側および下側には、図の水平方向（これをＸ方向と呼ぶ）に延びる配線チャネル１４０Ｘが設けられ、各列の可変論理ブロックの図の右側および左側には、図の垂直方向（これをＹ方向と呼ぶ）に延びる複数の配線チャネル１４０Ｙが設けられている。さらに、入力インターフェイス１４１の出力端に接続してＹ方向の配線チャネル１４０Ｙが設けられ、出力インターフェイス１４４の入力端に接続して、４つのＹ方向の配線チャネル１４０Ｙが設けられている。
【００３７】
各Ｘ方向の配線チャネル１４０Ｘおよび各Ｙ方向の配線チャネル１４０Ｙはそれぞれ所定の複数の信号線を含む。これらの信号線の数は、可変論理ブロック（ＣＬＢ）１４３の総数とそれらにより実現したい演算器の数と、演算に使用されるデータのビット数、演算結果データのビット数などに依存して決定すればよい。最も望ましいのは、任意の可変論理ブロック（ＣＬＢ）１４３の出力を任意の可変論理ブロック（ＣＬＢ）１４３の入力に供給できること、その供給に必要な信号線が、他の可変論理ブロック（ＣＬＢ）１４３の出力をさらに他の可変論理ブロック（ＣＬＢ）１４３へ供給するのに必要な信号線と競合しないように選択できることである。
【００３８】
各可変論理ブロック（ＣＬＢ）１４３は、その上側および下側に位置するＸ方向の配線チャネル１４０Ｘ内の複数の信号線の内の、その各可変論理ブロック（ＣＬＢ）１４３に対応して予め定められた複数の信号線１４５Ｘに後に説明する接続スイッチを介して接続されている。同様に、各可変論理ブロック（ＣＬＢ）１４３は、その右側および左側に位置するＹ方向の配線チャネル１４０Ｙ内の複数の信号線内の、その各可変論理ブロック（ＣＬＢ）１４３に対応して予め定められた複数の信号線１４５Ｙに後に説明する接続スイッチを介して接続されている。
【００３９】
各スイッチマトリックス（ＳＭ）１４２は、隣接する一対のＸ方向の配線チャネル１４０Ｘと隣接する一対のＹ方向の配線チャネル１４０Ｙとに対応して設けられ、それらの間の接続を切り替えるのに使用される。但し、図の左端の列および右端の列に属する一部のスイッチマトリックス（ＳＭ）１４２は、一つのＸ方向の配線チャネル１４０Ｘと隣接する一対のＹ方向の配線チャネル１４０Ｙとに対応して設けられ、それらの間の接続を切り替えるのに使用される。複数のスイッチマトリックス（ＳＭ）１４２のマトリックスは、ここでは、可変論理ブロック（ＣＬＢ）１４３の行数、列数よりもそれぞれ１だけ多い行数と列数、ここでは３行４列でもって配置されている。
【００４０】
図２にスイッチングマトリクス（ＳＭ）１４２の例を示す。参照番号１４０Ｘ１と１４０Ｘ２は、それぞれ隣接する二つのＸ方向の配線チャネルを示し、１４０Ｙ１と１４０Ｙ２は、それぞれ隣接する二つのＹ方向の配線チャネルを示す。二つのＸ方向の配線チャネル１４０Ｘ１，１４０Ｘ２に含まれる信号線の数は同じである。二つのＹ方向の配線チャネル１４０Ｙ１，１４０Ｙ２に含まれる信号線についても同じである。ここでは説明の簡単化のために、Ｘ方向の配線チャネル１４０Ｘ１、１４０Ｘ２には、それぞれ４つの信号線Ｈ１，Ｈ２，Ｈ３，Ｈ４およびＨＨ１，ＨＨ２，ＨＨ３、ＨＨ４が含まれ、Ｙ方向の配線チャネル１４０Ｘ１、１４０Ｙ２にはそれぞれ４つの信号線Ｖ１，Ｖ２，Ｖ３，Ｖ４及びＶＶ１，ＶＶ２，ＶＶ３，ＶＶ４が含まれると仮定している。
【００４１】
スイッチングマトリクス１４２には、一対のＸ方向の信号線と一対のＹ方向の信号線との組み合わせに対応して一つのスイッチ１４２１が設けられ、いずれかの一対のＸ方向の信号線たとえばＨ１、ＨＨ１と、いずれかの一対のＹ方向の信号線たとえばＶ１、ＶＶ１は、それらの信号線対の組に対応する一つのスイッチ、たとえば図の左上隅に位置するスイッチ１４２１の位置にまで延びている。そのスイッチ１４２１は、対応する一対のＸ方向の信号線Ｈ１、ＨＨ１の任意の一つまたはその両方と、対応する一対のＹ方向の信号線Ｖ１、ＶＶ１の任意の一つまたはその両方との間の接続を切り替える。他のスイッチ１４２１も同様である。
【００４２】
スイッチ１４２１の構成は、色々考えられるが、図３Ａにその一例を示す。図３では、そのスイッチに入力されている４つの信号線ＨＸ、ＨＨＸ、ＶＸ、ＶＶＸを相互に接続するための４つの、それぞれＣＭＯＳトランジスタからなるスイッチ回路１４２１Ｓを有する。図では、スイッチ回路１４２１Ｓの内部には簡単化のために複数のＣＭＯＳトランジスタに代えて一つのトランジスタのみを示す。各スイッチ回路１４２１Ｓ内の端子１４２１Ｔは、そのスイッチ回路に接続される端子を示し、この端子に図示しないメモリ素子が接続されている。メモリ素子は、たとえばフリップフロップのようなデータを電気的に書き込み可能な素子からなる。そのメモリ素子には、演算器制御器１５から配線情報ビットが書き込まれる。それにより、そのスイッチ回路１４２１Ｓのオン／オフを切り替えることができる。
【００４３】
入力インターフェイス１４１は、制御器１２から供給される、演算に使用するデータを受け取り、Ｙ方向の配線チャネル１４０Ｙのいずれかに供給する。
【００４４】
出力インターフェイス１４４は、Ｙ方向の配線チャネル１４０Ｙに接続され、そのいずれかに供給される演算結果データを受け取り、制御器１２に供給する。これらの入力インターフェイス１４１、出力インターフェイス１４４も、可変論理ブロック（ＣＬＢ）１４３と同様に電気的に論理構造を変更可能な可変論理ブロックにより構成され、演算器制御器１５からの配線情報によりその論理構造を変更する。
【００４５】
図１Ｃに示すように、演算器制御部１５は、配線命令デコーダ１５１と、配線情報記憶部１５２と、演算器出力制御部１５３とから構成される。配線情報記憶部１５２は、種々の演算器をプログラマブル演算器１４により実現するための複数の配線情報を予め記憶する。既に述べたように、プログラマブル演算器１４内の各可変論理ブロック（ＣＬＢ）１４３には、その論理構造を切り替えるための複数の接続スイッチと、それぞれの接続スイッチを制御する信号を記憶する図示しない複数のメモリ素子が含まれている。各配線情報は、複数のビットからなるデータであり、各ビットは、プログラマブル演算器１４内のこれらのメモリ素子の一つに対応する。
【００４６】
既に述べたように、制御器１２（図１Ａ）により解読された命令１５０の配線コードが制御器１２から配線命令デコーダ１５１に供給される。配線命令デコーダ１５１は、供給された配線コードを解読し、その命令が使用する演算器を実現するため配線情報を配線情報記憶部１５２から読み出し、その情報をプログラマブル演算器１４に供給する。プログラマブル演算器１４はその配線情報に従い、各可変論理ブロック（ＣＬＢ）１４３、入力インターフェイス１４１、出力インターフェイス１４４の論理構造を変更するとともに、可変信号線網を構成する各スイッチングマトリクス１４２の接続動作を切り替える。
【００４７】
なお、プログラマブル演算器１４は、論理演算だけでなく、演算の途中で、例えばオーバーフローや種々のフラグなど演算結果に依存する信号も出力するように構成される。そのような信号を生成する回路の例は、実施の形態２で使用される、図１２（ｂ）に示した回路と等価な回路が使用できる。演算器出力制御部１５３は、プログラマブル演算器１４で、演算の途中で生成されるこのような信号を制御器１２に出力する回路である。
【００４８】
図６Ａには、配線情報記憶部１５２の具体的な構造の例を示す。配線情報記憶部１５２は、可変論理ブロック（ＣＬＢ）１４３用の複数の配線情報を記憶したＲＯＭ１５２Ａと、スイッチングマトリクス１４２用の複数の配線情報を記憶したＲＯＭ１５２Ｂとからなる。ＲＯＭ１５２Ａには、入力インターフェイス１４１、出力インターフェイス１４４のための配線情報も含まれるが、以下では簡単化のためにこの配線情報は説明しない。
【００４９】
配線命令デコーダ１５１は、実行すべき命令の配線コードを解読して配線情報記憶部１５２内のＲＯＭ１５２Ａ、１５２Ｂのアドレスを生成する。本実施の形態では、配線コードは、命令コードとは別に命令１５０内に付加されているが、他の方法により命令の中にプログラマブル演算器１４の配線を指定する情報を含ませてもよい。たとえば、命令コードの中に配線コードを含めることも可能である。その場合には、命令コードが制御器１２より演算器制御器１５に供給される。
【００５０】
各配線コードに対して生成されるアドレスの具体的な例を、図６Ｂに示す。この例では、配線コードは３ビットであり配線命令デコーダ１５１は、ＲＯＭ（ＣＬＢ）１５２Ａ用の２ビットのアドレスとＲＯＭ（ＳＭ）１５２Ｂ用の２ビットのアドレスとからなる４ビットを並列に出力する。デコーダ１５１から出力されたＲＯＭアドレスは、配線情報記憶部１５２内の二つのＲＯＭ１５２Ａ、１５２Ｂに入力され、ＲＯＭ１５２Ａ、１５２Ｂは、プログラマブル演算器１４内の各可変論理ブロック１４３の論理構造を指定する一つの配線情報と、スイッチングマトリクス１４２の結線を指示する一つの配線情報を線１５２Ｃを介してプログラマブル演算器１４内の図示しない複数のメモリ素子に供給する。
【００５１】
ＲＯＭ１５２Ａが供給する配線情報は、複数のビットからなるデータであり、各ビットはプログラマブル演算器１４の複数の可変論理ブロック１４３内に存在する、図示しない複数のメモリ素子の一つに対応する。ＲＯＭ１５２Ｂが供給する配線情報は、複数のビットからなるデータであり、各ビットはプログラマブル演算器１４の複数のスイッチングマトリクス１４２内に存在する、図示しない複数のメモリ素子の一つに対応する。こうして、ＲＯＭ１５２Ａが供給する配線情報とＲＯＭ１５２Ｂが供給する配線情報の全ビットは、プログラマブル演算器１４内の複数のメモリ素子に並列に供給される。
【００５２】
ＲＯＭ１５２Ａ、１５２Ｂの出力の具体的な例を図６Ｃ、６Ｄにそれぞれ示した。ＲＯＭ１５２Ａは、実現すべき種々の演算器の論理構造を実現する配線データを出力する。したがって、この配線データは、各可変論理ブロック１４３に対応したデータを有し、一つの可変論理ブロック１４３に対応したデータは、その可変論理ブロック１４３に含まれた図示しない複数のメモリ素子に対応した複数のビットからなる。ＲＯＭ１５２Ｂは、並列配線、従属配線等の配線情報を出力する。したがって、この配線情報は、各スイッチングマトリクス１４２に対応したデータを有し、一つのスイッチングマトリクス１４２に対応したデータは、そのスイッチマトリックス１４２内に含まれた図示しない複数のメモリ素子に対応した複数のビットからなる。したがって、線１５２Ｃは、ＲＯＭ１５２Ａ、１５２Ｂから出力された情報の全ビットを並列に転送できることが転送時間の短縮の上で望ましい。しかし、線１５２Ｃの線幅がこれらの情報の全ビット数より小さくせざるを得ないときには、配線情報記憶部１５２を、二つのＲＯＭ１５２Ａ、１５２Ｂの出力情報を時分割に転送するように構成すればよい。
【００５３】
以下具体的に図６Ｂから図６Ｄに基づいて、プログラマブル演算器１４における異なる演算器の実現を説明する。図６Ｂの備考欄に示すように、配線コードは、プログラマブル演算器１４に、通常の算術論理演算器（ＡＬＵ）、並列加算器、縦列加算器、乗算器、割り算器、積和演算器をそれぞれ実現させるときに、“０００”、“００１”、“０１０”、“０１１”、“１００”、“１０１”を持つ。ここで、通常の算術論理演算器は、二つのオペランドに対する加減算および二つのオペランドに対するアンドあるいはオア等の複数の簡単な論理演算を行う演算器であり、乗算あるいは割り算は行わない。この演算器の例は、後の実施の形態２で使用される、図１２（ｂ）に示された回路と等価な回路である。並列加算器、縦列加算器はそれぞれ図３０（ａ）、（ｂ）に示した構造の演算器を言う。乗算器の例は、後の実施の形態２で使用される、図１２（ａ）に示された回路と等価な回路である。
【００５４】
たとえば、プログラマブル演算器１４により通常の算術論理回路を実現させるときには、図６Ｂに示すように配線コード“０００”が使用され、デコーダ１５１は、ＲＯＭ１５２Ａ、１５２Ｂ用のアドレスとして“００”、“００”を出力する。図６Ｃから分かるように、ＲＯＭ１５２Ａは、アドレス“００”に対して“ＡＬＵ構成データ”を出力する。このデータは、予め定められた複数の可変論理ブロック１４３を組み合わせて算術論理演算器を構成するための配線情報であり、このデータはこれらの可変論理ブロック１４３に供給される。ＲＯＭ１５２Ｂは、アドレス“０００”に対して通常配線を実現する配線情報を出力する。ここで、通常配線とは、プログラマブル演算器１４により通常の算術論理回路を実現させるときに、複数のスイッチマトリックス１４２により実現されるべき配線を指定する情報を言う。
【００５５】
すなわち、通常の算術論理回路を使用する命令は二つのオペランドを指定する。入力インターフェイス１４１は、これらのオペランドを制御器１２から受け取り、予め定められた複数の可変論理ブロック１４３に並行して供給する論理構造を採るように、上記ＡＬＵ構成データにより構成される。それらの可変論理ブロック１４３と他の複数の可変論理ブロックを含む一群の可変論理ブロックが、互いに組み合わされて一つの算術論理演算器を実現するように上記ＡＬＵ構成データにより構成される。複数のスイッチマトリックス１４２は、入力インターフェイス１４１から出力された二つのデータを上記二つの特定の可変論理ブロック１４３に入力データとして供給し、上記一群の可変論理ブロック１４３の一つから出力される結果データを出力インターフェイス１４４に供給するように、上記通常配線を実現する配線情報により構成される。出力インターフェイス１４４は、この結果データを出力する論理構造となるように上記ＡＬＵ構成データにより構成される。こうして、プログラマブル演算器１４は、通常の算術論理演算器を実現する。
【００５６】
このようにして実現された通常の算術論理演算器により、四則演算および複数の簡単な論理演算のいずれかを行うための制御信号は、すでに述べたように、制御器１２が命令内の命令コードを解読して生成し、入力インターフェイス１４１を介して供給する。言い換えると、この通常の算術論理演算器が実行可能な複数の演算のいずれかを指定する複数の命令に対して、プログラマブル演算器１４の論理構造は変更されないで、命令コードによりその動作が切り替えられるようになっている。本実施の形態では、配線コードを命令コードとは別に定めたので、異なる命令コードの命令に対して同じ配線コードを指定でき、これらの命令に対しては、プログラマブル演算器１４の論理構造自体は変更する必要がない。
【００５７】
たとえば、プログラマブル演算器１４により並列演算器を実現させるときも縦列演算器を実現させるときも、図６Ｂに示すように配線コード“００１”、“０１０”がそれぞれ使用される。配線コード“００１”と“０１０”のいずれに対しても、デコーダ１５１は、ＲＯＭ１５２Ａ用のアドレスとして“０１”を出力する。図６Ｃから分かるように、ＲＯＭ１５２Ａは、アドレス“０１”に対して加算器構成データを出力する。このデータは、第１群の可変論理ブロック１４３と第２群の可変論理ブロック１４３によりそれぞれ二つの入力端を有する第１，第２の加算器を構成するためのデータである。
【００５８】
一方、配線コード“００１”と“０１０”に対して、デコーダ１５１は、ＲＯＭ１５２Ｂ用のアドレスとして“０１”、”１０”を出力する。図６Ｃから分かるように、ＲＯＭ１５２Ｂは、アドレス“０１”と“１０”に対してそれぞれ並列配線と従属配線を指定する配線情報をする。ここで並列配線を指定する配線情報は、上記第１、第２の加算器を互いに独立の加算器として動作させるための配線情報であり、それより、プログラマブル演算器１４に並列加算器を実現させる。一方、従属配線を指定する配線情報は、上記第１，第２の加算器を縦列に接続し、それにより３つの入力データに対する加算を行う加算器を実現するための配線情報であり、それより、プログラマブル演算器１４に縦列加算器を実現させる。このように、配線情報記憶部１５２を、可変論理ブロック１４３の論理構造を指定するＲＯＭ１５２Ａと、スイッチマトリックス１４２のスイッチ動作を指定するＲＯＭ１５２Ｂに区分して構成したので、並列加算器と縦列加算器のように異なる演算器を実現するときでも、一方のＲＯＭ、ここではＲＯＭ１５２Ａ内の同じデータを使用できる。このため、配線情報記憶部１５２の必要な容量を減少できる。なお、他の演算器を実現する場合も同様に行われるので、それらに関する詳細な説明は簡単化のために省略する。
【００５９】
プロセッサ１の動作の概要は以下の通りである。制御器１２がメモリ１３内に記憶されたプログラム命令をフェッチし、この命令を解読し、この命令が演算命令であるときには、外部の図示しないメモリ及び内部のメモリ１３等のデバイスから演算を受けるべきデータを読み込み、レジスタ１１にデータを一時ラッチする。ラッチされたデータは、制御器１２を通じてプログラマブル演算器１４の入力インターフェイス１４１に入力される。制御器１２は、さらに、その命令の命令コードを解読して結果の信号をその入力インターフェイス１４１に送付する。さらに、演算器制御部１５にその命令内の配線コードを送付する。演算器制御部１５は、その配線コードをデコーダ１５１で解読し、配線情報記憶部１５２を読み出すアドレスを生成する。このアドレスに基づいて、配線記憶部１５２からは、プログラマブル演算器１４に適切な配線情報が読み出される。その配線情報に従い、スイッチングマトリクス（ＳＭ）１４２のスイッチ動作と、可変論理ブロック（ＣＬＢ）１４３の論理構造と、入力インターフェイス１４１の論理構造と、出力インターフェイス１４４の論理構造とが変化し、プログラマブル演算器１４は上記命令が必要とする演算器を実現する。プログラマブル演算器１４での演算結果データは、制御器１２を介してレジスタ１１あるいはメモリ１３に記憶される。プログラマブル演算器１４から、演算の途中で例えばオーバーフローや各種フラグが出力されると、この信号は、演算器制御器１５内の演算器出力制御部１５３に入力され、必要に応じて制御器１２にフィードバックされる。なお、この信号を配線情報記憶部１５２に入力し、それが出力する配線情報が変更されるように使用してもよい。
【００６０】
以上のごとく、本実施の形態では、演算器制御部１５による制御により、プログラマブル演算器１４内の複数の可変論理ブロック（ＣＬＢ）１４３の論理構造が変更され、さらに、複数のスイッチマトリックス（ＳＭ）１４２の接続動作が切り替えられ、さらに、入力インターフェイス１４１、出力インターフェイス１４４の論理構造が変更されることにより、プログラマブル演算器１４が、実行すべき命令が要求する演算器を実現する。しかも、プログラマブル演算器１４は、実行すべき命令に応じて、異なる演算器を動的に切り替えて実現することができる。したがって、本実施の形態で使用するプログラマブル演算器が実行する複数の演算を複数の専用演算器を使用して実行させる場合に比べて、必要な回路規模は小さくて済む。すなわち、複数の機能演算を行う演算器の冗長性を削減することができ、回路規模の増加を抑制する。
【００６１】
さらに、プロセッサで実行させるべき演算の仕様が変更された場合にも変更後の演算仕様に即して新たな演算を実行させるには、配線情報記憶部１５２に記憶する配線情報を適宜書き換えたプロセッサを用意すればよい。プログラマブル演算器１４等の回路は変更する必要はない。したがって、このような演算の仕様の変更に対応して新たなプロセッサを開発することが容易となり、開発コストの低減にも寄与する。
【００６２】
さらに、並列加算と縦列加算により例示されるように、複数の可変論理ブロック（ＣＬＢ）が行う演算を組み合わせて複合演算を実行することも容易となる。さらにそれらの複合演算に用いる演算の組み合わせを変更することも容易となる。さらにそれらの複合演算に用いる演算の数を変更することも容易となる。
【００６３】
とくに、本実施の形態では、可変論理ブロックが２次元マトリックス状に配置され、かつ、可変信号線網も、Ｘ方向の複数の信号線と、Ｙ方向の複数の信号線と、それらを接続する、マトリックス状に配置された複数のスイッチマトリックス（ＳＭ）から構成されるので、任意の複数の可変論理ブロックを組み合わせて複合演算を実行させること、また、それらの可変論理ブロックの組み合わせを変更して異なる複合演算を実行させるのが容易になる。
【００６４】
また、次のような効果も期待でき、より安価で機能性の高い信号処理プロセッサの実現を可能にする。
【００６５】
１）演算器が対応する演算に対して最適な構成であるため、プロセッサの動作周波数を上昇を抑制し、低消費電力化が可能となる。
【００６６】
２）命令に応じて、ダイナミックに演算を実行できるため、プログラムステップ数が削減できる。
【００６７】
＜発明の実施の形態１の変形例＞
本発明は、実施の形態１に限定されない。以下に例示する態様を含め、他のいろいろの態様で実施可能である。
【００６８】
（１）可変論理ブロック（その１）
各可変論理ブロック（ＣＬＢ）１４３内の図示しないメモリ素子を省略し、その可変論理ブロック（ＣＬＢ）１４３内の接続スイッチを制御する信号を演算器制御器１５から必要な期間供給し続ける構造にすることもできる。同様に、各スイッチングマトリクス１４２内の図示しないメモリ素子を省略し、その可変論理ブロック（ＣＬＢ）１４３内の接続スイッチを制御する信号を演算器制御器１５から必要な期間供給し続ける構造にすることもできる。しかし、実施の形態１で記載したメモリ素子を使用した場合には、プログラマブル演算器１４がある命令の演算を実行中に演算器制御器１５が次の命令を解読することができる。
【００６９】
（２）可変論理ブロック（その２）
各可変論理ブロック（ＣＬＢ）１４３は、既に例示したようないろいろの方法で実現できる。図４には、基本論理素子としてランダムアクセスメモリ（ＲＡＭ）を利用して、異なる入力信号に対応するアドレスに、それらの入力信号に対して可変論理ブロック（ＣＬＢ）１４３が生成すべき出力信号を予め記憶する方法を採用したときの可変論理ブロック（ＣＬＢ）１４３の構造の例を示す。すなわち、可変論理ブロック１４３内に、論理ＲＡＭ  Ｌ１，Ｌ２，Ｌ３，Ｌ４が配置される。４ビットの加算器を実現する場合には、これらの論理ＲＡＭ  Ｌ１，Ｌ２，Ｌ３，Ｌ４は、図に示されるように相互に結線され、さらに互いに異なるＸ方向またはＹ方向の配線チャネル１４０に接続される。結線は図示しない接続スイッチを制御して行われる。これらの論理ＲＡＭ  Ｌ１，Ｌ２，Ｌ３，Ｌ４には、表に示されるような入出力関係を実現するデータが演算器制御器１５の制御下で記憶される。
【００７０】
これらの論理ＲＡＭ間の接続およびこれらの論理ＲＡＭと可変信号線網との間の接続を同様に図示しない接続スイッチを制御して切り替えることにより、異なる演算器をその可変論理ブロック１４３により実現させることができる。なお、図においても、これらの接続スイッチを制御する配線情報を記憶するメモリ素子は図示していない。
【００７１】
（３）可変論理ブロック（その３）
図５は、可変論理ブロック１４３の他の構成例である。可変論理ブロック１４３は、入力インターフェイス１４３１、サブ可変論理ブロック（ＳＣＬＢ）１４３２、スイッチングマトリクス１４３３、出力インターフェイス１４３４から構成され、各ブロック間の自由に結線できる構成である。入力インターフェイス１４３１、出力インターフェイス１４３４はそれぞれ互いに異なるＸ方向またはＹ方向の配線チャネル１４０に接続される。図５の構造は、図１に示したプログラマブル演算器１４の構成を、各可変論理ブロック（ＣＬＢ）１４３内に取り入れた構成である。このような構成をとることにより、可変論理ブロック１４３は、より複雑な論理構造にも対応することが可能となる。
【００７２】
（４）可変信号線網
可変信号線網も実施の形態１とは異なる構造でもって実現することができる。たとえば、図１Ｃでは、同じ行に属するＸ方向の複数の配線チャネルに含まれる信号線は、複数のスイッチングマトリクス１４２により分断されていた。しかし、これらのＸ方向の複数の配線チャネルに含まれる信号線を共通の信号線により実現することもできる。このことは、同じ列に属する複数のＹ方向の配線チャネルに属する信号線についても同じである。
【００７３】
この場合、可変信号線網を構成する複数の信号線は、図１ＣのＸ方向の延在する複数の可変論理ブロック１４３の存在範囲より少し広い範囲に亘り延在し、各行に属する複数のスイッチングマトリクス１４２に対応し、それらのスイッチングマトリクス１４２に共通に設けられた複数の信号線と、図１ＣのＹ方向の延在する複数の可変論理ブロック１４３の存在範囲より少し広い範囲に亘り延在し、各列に属する複数のスイッチングマトリクス１４２に対応し、それらのスイッチングマトリクス１４２に共通に設けられた複数の信号線とよりなる。すなわち、図２に示した一対の互いに対応するＸ方向の信号線が常に接続されていることになる。一対の互いに対応するＹ方向の信号線も同じである。
【００７４】
このとき、スイッチングマトリクス１４２を構成する各スイッチ回路１４２１は、図３Ｂのように構成することができる。すなわち、図において、各スイッチ回路１４２１は、一つのＸ方向の信号線と一つのＹ方向の信号線を接続する一つの各スイッチ回路１４２１Ｓからなる。
【００７５】
（５）配線情報記憶部１５２
図７は、演算器制御器１５内の配線情報記憶部１５２としてＲＡＭ回路を用いた例を示す。ＲＡＭ回路を用いることにより、配線情報を変更することが可能となる。これにより、プログラマブル演算器１４に実行させる演算の種類がより広げられる。例えば、それまで使用していた演算の種類と異なる演算を使用する新たな信号処理を実行させたい場合、その信号処理の実行に必要となるプログラマブル演算器１４の配線情報をＲＡＭ回路に新たに書き込むことにより、新たな信号処理を実行することが可能である。
【００７６】
（６）演算器制御器１５（その１）
図８には、プログラマブル演算器１４が実行した演算結果に応じてプログラマブル演算器１４が次に実行すべき演算を変化させる必要がある場合に使用できる演算器制御器１５の構成例を示す。すなわち、プログラマブル演算器１４が判断命令等を実行した結果、分岐フラグが立った場合、既に述べたようにそのフラグ情報が演算器出力制御部１５３（図１Ｃ）に線１４Ａを介して供給される。プログラマブル演算器１４が次に実行すべき演算をそのフラグ情報により変える場合は、その変更を次のようにして行うことができる。図８（ａ）では、演算器出力制御部１５３は、そのフラグを線１４Ａを介して取り込み、デコーダ１５１にそのフラグ情報を線１５３Ｂを介して転送する。デコーダ１５１は、そのフラグ情報に応じて配線情報記憶部１５２に供給するアドレスを変更するように構成される。それでもって当該次に実行すべき演算に対応する適切な配線情報を配線情報記憶部１５２より出力させることができる。
【００７７】
（７）演算器制御器１５（その２）
図８（ｂ）には、図８（ａ）に対する代替案を示す。配線コード内に直接プログラマブル演算器１４を制御する情報がある場合、デコーダ１５１でその命令を解読し、直接演算器制御器１５３を通じて、直接プログラマブル演算器１４に信号を伝達する。また、プログラマブル演算器１４からのフラグ情報が演算器制御器１５３に入力され、そのフラグ情報に応じて演算器制御器１５３がプログラマブル演算器１４に信号を伝達する構成をとる。
【００７８】
（８）演算器制御器１５（その３）
実施の形態１で使用した命令には命令コードとは別に配線コードが設けられた。しかし、配線コードを使用しないで、命令コードを解読して、配線情報を配線情報記憶部１５２から読み出すように、デコーダ１５１を構成することもできる。この場合、実施の形態１における、並列加算器と縦列加算器を異なる命令に対して生成するときに、ＲＯＭ１５２Ａ内の同じ情報をしたのと同じことをするように、このデコーダを構成することができる。
【００７９】
＜発明の実施の形態２＞
図９は、プログラマブル演算器１４の他の構成例を示す。プログラマブル演算器１４には、図１Ａの可変論理ブロック１４３に代えて、乗算器１４７、算術論理演算器１４８等の複数の固定配線の演算器が２次元マトリックス状に設けられる。すなわち、実施の形態１では、１つあるいは複数の可変論理ブロックが組み合わされ、命令に即した演算器を実現した。本実施例では、特定の演算を実現する複数の演算器をあらかじめ配置し、可変信号線網によりその演算器の接続を変更する。
【００８０】
図９では、演算器は３行２列に配置されている。これらの演算器を接続する可変信号線網を構成するために、複数群のＸ方向のバス１４０ＸＢと複数群のＹ方向のバス１４０ＹＢとが設けられる。図では、演算器の行数より１多い群数（４群）のＸ方向バス１４０ＸＢと、演算器の列数より１多い群数（３群）のＹ方向バスとが設けられている。各群のＸ方向バスは、２より多い複数（たとえば４）のバスからなる。各バス１４０ＸＢは、一つの行に属する複数の演算器のＸ方向の存在範囲より広い範囲に亘って存在する。各バス１４０ＸＢのバス幅は一つの演算データあるいは演算結果データの幅に等しい。各群のＹ方向バスは２より多い複数（たとえば４）のバスからなる。各バス１４０ＹＢは、一つの列に属する複数の演算器のＹ方向の存在範囲より広い範囲に亘って存在する。各バス１４０ＹＢのバス幅は一つの演算データあるいは演算結果データの幅に等しい。
【００８１】
Ｘ方向のバス１４０ＸＢとＹ方向のバス１４０ＹＢの総数は、実現する演算器の数に応じて決定すればよい。最も望ましいのは、任意の演算器の出力を任意の演算器の入力に供給できること、その供給に必要なバスを、他の演算器の出力をさらに他の演算器へ供給するのに必要なバスと競合しないように選択できることである。少なくとも、各演算器の出力は、他の一部の複数の演算器に入力できることが望ましい。
【００８２】
各群のＸ方向のバス１４０ＸＢと各群のＹ方向のバス１４０ＹＢが交差するポイントには、バススイッチングマトリクス（ＢＳＭ）１４５が配置される。各演算器間をいずれか一対のＸ方向のバス１４０ＸＢに接続する。すなわち、各演算器への一対の入力線と一群のＸ方向のバス１４０ＸＢの結線部分には、サブスイッチングマトリクス（ＳＳＭ）１４６が配置される。そのサブスイッチングマトリクス（ＳＳＭ）１４６は、その一群のＸ方向のバス１４０ＸＢの内の一対のバスをその一対の入力線に接続する。その演算器の出力線と他の一群のＸ方向のバス１４０ＸＢの結線部分にもサブスイッチングマトリクス（ＳＳＭ）１４６が配置される。そのサブスイッチングマトリクス（ＳＳＭ）１４６は、その一群のＸ方向のバス１４０ＸＢの内の一つのＸ方向のバス１４０ＸＢをその演算器の出力線に接続する。こうして、複数の演算器が、複数群のバス１４０ＸＢと１４０ＹＢにより接続される。本実施の形態でのプログラマブル演算器１４は、実施の形態１のそれに比較して、演算機能の自由度は低下するものの、予め設計された固定の演算器を配置するため、回路規模を削減できる。
【００８３】
バススイッチングマトリクス１４５の構成例を図１０（ａ）に示す。バススイッチングマトリクス１４５は、４つの、Ｎビット幅（Ｎは複数）のＸ方向のバス１４０ＸＢを、４つの、Ｎビット幅のＹ方向のバス１４０ＹＢの任意のものに接続するために、各Ｘ方向のバスＢＨ１、、またはＢＨ４と、各Ｙ方向のバスＢＶ１、、ＢＶ４の交点に配置された複数のスイッチ回路１４５１を有する。
【００８４】
図１１には、スイッチ回路１４５１の具体例である。ここでは、一つのＸ方向のバスＢＨＸが４本の信号線ＢＨＸ＿０〜ＢＨＸ＿３からなり、一つのＹ方向のバスＢＨＹが４本の信号線ＢＨＹ＿０〜ＢＨＹ＿３からなると仮定している。スイッチ回路１４５１は、各Ｘ方向の信号線と各Ｙ方向の信号線との交点に設けられた複数のＣＭＯＳのスイッチ１４５１Ｓからなり、それらのゲートを共通の端子１４５１Ｔに結線され、これらのスイッチ１４５１Ｓが同時にオンオフされる点が、実施の形態２におけるスイッチングマトリクス１４２と異なる点である。この端子は図示しないメモリ素子に接続されるのは実施の形態１の場合と同じである。
【００８５】
また、サブスイッチングマトリクス１４６の構成を図１０（ｂ）に示す。図９から分かるように、サブスイッチングマトリクス１４６は、Ｘ方向のバス群１４０ＸＢを一つの演算器への二つの入力端に接続するとともに、他の一つの演算器の出力端を他のＸ方向のバス群１４０ＸＢに接続する。但し、二つの乗算器１４７にそれぞれ接続された二つのサブスイッチングマトリクス１４６では、他の演算器の出力端との接続路は使用されていない。また、図９の最下位位置にある二つのサブスイッチングマトリクス１４６では、いずれかの演算器の二つの入力端への接続路が使用されていない。したがって、サブスイッチングマトリクス１４６は、図１０（ｂ）に示すように、一群のＸ方向のバスＢＨ１、、ＢＨ４の内の任意のものを、演算器への二つの入力バスＢＶＶ１、ＢＶＶ２と他の演算器の出力バスＢＶ１にそれぞれ接続するスイッチ１４５１により構成されればよい。但し、図９においては、演算器からの出力バスに接続されたＸ方向のバスＢＨ’を設け、このバスも二つの入力バスＢＶＶ１、ＢＶＶ２に接続できるように構成されている。
【００８６】
図１２は、図９中の乗算器１４７の構成を示した例である。この例では、乗算器１４７は、ブースのデコーダ回路１４７１と部分積の生成・加算回路１４７２及び加算部１４７３から構成され、２つのデータを乗算し出力する構成をとる。乗算器の概要及び構成については、様々な構成が考えられるが、それらの詳細は、本発明の本質に関わらないので省略する。
【００８７】
図１２には、算術演算器（ＡＬＵ）の構成例も示した。算術演算器１４８は、入力選択器１４８１，加減算・論理演算器１４８２、出力選択器１４８３、オーバーフロー検出回路１４８４から構成され、２つの入力信号に対して、加算、減算、論理和、論理積、排他論理和の演算を実行する。実行中に出力されるオーバーフロー等のフラグ信号は、オーバーフロー検出器１４８４で検出される。出力データは、選択器１４８４で選択され出力される。図の点線は、演算器制御器１５からの配線情報であり、入力データの選択や演算器１４８２の制御、オーバーフロー検出器１４８４の制御、出力選択器１４８３から出力するデータの選択等を行う。また、オーバーフロー検出器１４８４からフラグ情報が演算器制御器１５に出力される。本例は、基本的な算術演算器の構成を示した例であり、他の例も多数考えられる。
【００８８】
本実施の形態では、演算器制御器１５に使用する配線情報記憶部１５２には、実施の形態１で使用した可変論理ブロック１４３の論理構造を指定する配線情報を記憶しなくてよい。また、可変信号線網もバス１４０ＸＢ、１４０ＹＢ、バススイッチ１４５、サブスイッチングマトリクス１４６により構成されるので、それに合わせて、配線情報記憶部１５２に記憶する配線情報を実施の形態１の場合と変更すればよい。
【００８９】
動作例の概要は、プログラムの命令を制御器１２が判断し、演算器に関する命令については、図中の点線で示したパスを通して、演算制御部１５に演算命令として指示する。演算命令を受けた演算制御部は、その命令を命令デコーダ１５１で解読し、配線情報記憶部１５２に記憶してある適切な配線情報を指示する。配線記憶部１５２からは、プログラマブル演算器１４に、適切な配線情報が指示され、それに従い、バススイッチングマトリクス（ＢＳＭ）１４５やサブスイッチングマトリクス（ＳＳＭ）１４６の結線を変更し、命令に応じた演算器の組み合わせと接続を実現する。データは、プログラムの命令に従い、レジスタ１１あるいはメモリ１３から、制御器１２を通じてプログラマブル演算器１４に供給され、演算されてその結果は、再び制御器１２を介してレジスタ１１あるいはメモリ１３に記憶される。演算の途中で出現する信号（例えば、オーバーフローや各種フラグ）は、プログラマブル演算器１４から出力され、演算器制御器１５内の演算器出力制御部１５３に入力され、その情報は、必要に応じて制御器１２にフィードバックされたり、配線情報記憶部に入力され配線情報を変更するように動作する。
【００９０】
以上から明らかなように、本実施の形態では、予め論理構造が固定された複数の演算器を使用するが、それらの演算器を接続する信号線網が可変の構造となっている。したがって、複数の固定の演算器が行う演算を組み合わせて複合演算を実行することが容易となる。さらにそれらの複合演算に用いる演算の組み合わせを変更することも容易となる。さらにそれらの複合演算に用いる演算の数を変更することも容易となる
とくに、本実施の形態では、演算器が２次元マトリックス状に配置され、可変信号線網も、Ｘ方向の複数の信号線と、Ｙ方向の複数の信号線と、それらを接続する、マトリックス状に配置された複数のスイッチマトリックス、すなわち、複数のバススイッチングマトリクス（ＢＳＭ）１４５と複数のサブスイッチングマトリクス（ＳＳＭ）１４６から構成されるので、任意の複数の演算器を組み合わせて複合演算を実行させること、また、それらの演算器の組み合わせを変更して異なる複合演算を実行させるのが容易になる。さらに、複合演算に用いる演算器の数の変更も容易となる。
【００９１】
しかも、この複合演算を変更したいときには、配線情報記憶部１５２の記憶内容を書き換えるだけでよい。したがって、プロセッサを開発後にある命令の演算処理の内容を変更したくなったときでも、そのような変更が容易となる。あるいは、他の複合演算を必要とする命令を新たにプロセッサにより実行可能としたい場合にも、そのための変更も配線情報記憶部１５２を書き換えることにより簡単に実現できる。
【００９２】
実施の形態１では、可変論理ブロック１４３が行う演算自体を変更できたが、本実施の形態では、むしろ複数の演算器を複合して使用するような複雑な処理を一つの命令で実行させるときに、その演算を行う演算器を実現することあるいはその演算を変更することが容易となる。
【００９３】
また、本実施の形態では、配線情報記憶部１５２には、実施の形態１で記憶した、可変論理ブロック１４３の論理構造に関する配線情報を記憶する必要がないので、配線情報記憶部１５２のメモリ容量を少なくできる。
【００９４】
＜発明の実施の形態２の変形例＞
本実施の形態にも種々の変形が可能である。
【００９５】
（１）実施の形態１で使用した技術を本実施の形態で使用することも可能である。たとえば、図９では、バススイッチングマトリクス１４５とサブスイッチングマトリクス１４６を利用したが、これらに代えて、図１及び図２、図３に示した配線チャネルとスイッチングマトリクスを利用することも可能である。但し、実施の形態２のように、バスを単位として可変信号線網を構成する方が、回路的に構造が簡単である。可変信号線網のスイッチ動作を切り替えるための配線情報も少なくて済み、それらを転送する信号線の数も少なくて済む。
【００９６】
（２）実施の形態１に対してすでに記載した種々の変形例も、可変論理ブロック１４３の使用に関する部分を除けば本実施の形態にも適用可能である。
【００９７】
＜発明の実施の形態３＞
本実施の形態においては、画像信号処理に適するように構成されたプログラマブル演算器を有するプロセッサ、特に圧縮された画像信号を伸張する処理に適するように構成されているプログラマブル演算器を有するプロセッサを提供する。以下では、実施の形態２との相違点を主として説明するに止める。
【００９８】
図１３Ａに示すように、プログラマブル演算器１４には、論理構造がすでに決定された演算器として、一つの乗算器１４７、一つの算術演算器（ＡＬＵ）１４８の他に、新たに二つのシフト機能付き加算器１４９、ＲＡＭ１４Ｉ、８個のレジスタ１４Ａから１４Ｈが設けられる。可変信号線網は、基本的には実施の形態２と同様に、複数群のＸ方向のバスと、複数群のＹ方向のバスと、複数のバススイッチングマトリクス１４５、複数のサブスイッチングマトリクス１４６よりなる。算術演算器（ＡＬＵ）１４８は４入力、２出力の加算器であり、二つのサブスイッチングマトリクス１４６からそれぞれ二つのデータが供給され、一つのサブスイッチングマトリクス１４６に二つのデータを供給する。レジスタ１４Ａ、１４Ｃ、１４Ｄは２つのデータを並列に読み書きできる。他のレジスタ１４Ｂ、１４Ｅ、１４Ｆ、１４Ｇ、１４Ｈはいずれも一つのデータを保持可能である。
【００９９】
レジスタ１４Ｅから１４Ｈは、それぞれ入力インターフェイス１４１と対応するバススイッチングマトリクス１４５との間に設けられている。最左列の演算器には、乗算器１４７、レジスタ１４Ａが属し、中央の列には、二つのシフト機能付き加算器１４９が属する。これらの二つの演算器列のいずれにも属する演算器として算術演算器（ＡＬＵ）１４８、レジスタ１４Ｄが設けられている。最右列には、二つのシフト機能付き加算器１４９、レジスタ１４Ｂ、１４Ｃが属する。図１３Ｂに示すように、演算器制御器１５内の配線情報記憶部１５２は、ＲＡＭ回路により構成される。そこには、以下に説明するように、本プロセッサを圧縮された画像信号を伸張する処理に使用するために、ＶＬＤ配線情報、ＩＱ配線情報、ＩＤＣＴ配線情報、ＭＣ配線情報が記憶されている。他の信号処理を実行するときには、この配線情報記憶部１５２に記憶する配線情報を書き換える。
【０１００】
図１４は、シフト付き加算器１４９の構成例を示す。シフト付き加算器１４９は、シフト回路１４９１と加減算器１４９２から構成される。入力データは、シフト回路１４９１により適当にシフトされ加減算器１４９２の一方の入力に入力され、もう一方の入力ポートに入力されるデータと加減算される。図中に示した斜線付きの四角形の端子１４９１Ｔは、演算器制御器１５からの制御情報の入力あるいは出力ポイントである。以下同様である。
【０１０１】
図１５に、図１３で使用されるレジスタの構成例を示す。図１３では、バス幅が異なる２種類のレジスタが利用されている。単位長のレジスタ、たとえば１４Ｂ、１４Ｅ、１４Ｆ、１４Ｇ、１４Ｈは、図１５（ａ）に示すように、基本的には選択器１４ＸＳ１とフリップフロップ１４ＸＲ１で構成される。入力データか現在出力しているデータを選択器１４ＸＳ１で選択し、フリップフロップ１４ＸＲ１に入力し、入力クロック（ＣＬＫ）に応じて入力データをラッチさせる。一方、バス幅が２倍のレジスタ、たとえば１４Ａ、１４Ｃ、１４Ｄは、図１３（ｂ）に示すように、このレジスタ回路を独立に２個含んでいる。図１３で使用されるレジスタの各々へのデータ書き込みタイミングを指定する信号は、制御器１２が命令を解読して生成する。
【０１０２】
より具体的な例として、画像信号の伸張処理を例にして、伸張の各処理でプログラマブル演算器内の演算器がどのように組み合わされるかを説明する。伸張処理で必要とされる機能演算の代表的なものは、以下の通りである。
【０１０３】
１）可変長符号の復号（ＶＬＤ）処理：圧縮された画像信号の符号列（可変長符号を含む）を、復号する処理
２）逆量子化（ＩＱ）処理：復号された符号列は、圧縮器により量子化されたデータであるため、逆量子化の処理を行うことにより、圧縮される以前のデータに近づける処理
３）逆離散コサイン変換（ＩＤＣＴ）処理：逆量子化されたデータは、圧縮器により離散コサイン変換された信号であり、この変換の逆変換を行う処理
４）動き（ＭＣ）補償処理：逆変換された信号は、そのまま画像データとなる信号もあるが、圧縮器により以前のフレームのデータとの差分が取られていることがある。そのため、以前のフレームのデータと逆離散コサイン変換されたデータとの加算を行う処理
その他にも必要となる処理があるが、以下ではこれらの４つの処理を実行するためにプログラマブル演算器１４がどのような構成になるかを説明する。
【０１０４】
（１）可変長復号処理
可変長符号化は、シンボルの発生頻度に応じて符号語を割り振ることにより、発生情報量を抑制する技術である。即ち、発生頻度高いシンボルには、短い符号長の符号語を割り振り、派生頻度の低いシンボルには逆に長い符号語を割り振る。よく知られている可変長符号に、ハフマン符号化がある。この可変長符号の復号回路として、バレルシフタを利用する構成がある。その構成例を図１６に示し、その動作説明図を図１７に示す。
【０１０５】
圧縮された符号列は、図１７に示すように１／０のパターンで入力される。入力された符号列は、図中の例では、４ビットを一つの区切りとして扱い、図１６のＲＥＧ２（２０１）に入力される。ＲＥＧ１（２０２）、ＲＥＧ２（２０１）の４ビットの符号は、図中の結線に従い選択器２０３，２０４，２０５，２０６に入力され、各選択器は４入力の１本を選択して出力する。図１７の例では、ＲＥＧ１（２０２）に‘１００１’、ＲＥＧ２（２０１）に‘１０１１’がラッチされており、各選択器は、最左ビットを選択することにより、ＲＥＧ３（２０７）には、‘１００１’がラッチされる。ＲＥＧ２（２０７）にラッチされた信号は、テーブルＲＡＭ２０８に入力され、復号値はＲＥＧ４（２０９）に符号長はＲＥＧ５（２０Ａ）にラッチされる。
【０１０６】
図１７の例では、可変長符号と復号値、符号長の関係が表に示されるような関係だとする。テーブルＲＡＭ２０８には、図１７の表に従い復号値と符号長を記憶しておく。ＲＥＧ３（２０７）の出力（符号）をアドレスとして、このテーブルＲＡＭ２０８を読み出す。ＲＥＧ３（２０７）の出力‘１００１’に対して、ＲＡＭ２０８は、復号値２、符号長２を出力し、それぞれをＲＥＧ４（２０９）、ＲＥＧ５（２０Ａ）にラッチする。復号値は、そのまま出力されるが、符号長は、加算器２０Ｂに入力され、ＲＥＧ６（２０Ｃ）のデータと加算された後、ＲＥＧ６（２０Ｃ）にラッチされる。図１７の例では、ＲＥＧ６の最初の値は、０であるためＲＥＧ５の符号長２がそのままＲＥＧ６にラッチされる。
【０１０７】
ＲＥＧ６の出力は、各選択器の制御端子に入力されている。ＲＥＧ６の出力が２は、選択器の入力の３番目を選択することを意味する。すなわち、ＲＥＧ６の出力値＋１番目の入力線を選択する。そのため、次の選択器からの出力は、‘０１１０’になる。そして同様の処理を行い、その次の選択器からの出力‘１１０１’が出力される。そして、この‘１１０１’を復号すると、符号値２、符号長３となり、加算器２０Ｂは、ＲＥＧ６にラッチされている３と加算するため、キャリー信号を発生する。２ビット加算器であるため、キャリー信号が発生すると、ＲＥＧ２のデータはＲＥＧ１にラッチされ、ＲＥＧ２には新たなデータ１０１１がラッチされる。以上の動作を繰り返すことによりスムーズに可変長符号の復号処理が実行できる。
【０１０８】
本実施の形態では、この可変長符号の復号処理を図１３Ａのプログラマブル演算器１４で実行させるために、この復号処理を要求する一つの命令を実行する。演算器制御器１５内の命令デコーダ１５１は、この命令を解読して配線情報記憶部１５２からＶＬＤ配線情報を読み出す。読み出された配線情報はプログラマブル演算器１４内のバススイッチングマトリクス１４５、サブスイッチングマトリクス１４６に送られる。図１８にプログラマブル演算器１４でこの復号処理を実行した場合の配線例を示す。
【０１０９】
入力インターフェイス１４１を通して、まずレジスタ１４Ｆに符号データが入力される。このレジスタ１４Ｆが、図１６のＲＥＧ２に当たる。レジスタ１４Ｆの出力は、レジスタ１４Ａ内の一つのレジスタの入力に接続される。このレジスタ１４Ａ内の一つのレジスタが、図１６のＲＥＧ１に当たる。また、レジスタ１４Ｆの出力は、シフト加算器１４９の入力に接続される。また、レジスタ１４Ａ内の一つのレジスタの出力は、また別のシフト加算器１４９の入力に接続される。シフト加算器１４９のシフト機能を利用して出力された信号は、また、別のシフト加算器１４９に入力され、加算される。即ち、この３つのシフト加算器１４９は、図１６の選択器の機能に当たる。
【０１１０】
その出力は、レジスタ１４Ａのもう一方のレジスタに記憶される。そのレジスタからの出力は、ＲＡＭ１４Ｉに入力される。レジスタ１４Ａのもう一方のレジスタは、図１６中のＲＥＧ３にあたり、ＲＡＭ１４Ｉは、テーブルＲＡＭ２０８に当たる。ＲＡＭ１４Ｉからは、復号値と符号長が出力され、復号値は、レジスタ１４Ｃにラッチされる。符号長は、さらにもう一つのシフト加算器１４９に入力され、レジスタ１４Ｂの出力と加算され、そのレジスタ１４Ｂに再び記憶される。即ち、このシフト付き加算器が図１６中の加算器２０Ｂであり、レジスタ１４ＢがＲＥＧ６に当たる。
【０１１１】
（２）逆量子化処理
逆量子化は、復号されたデータ（ＤＣＴ係数）に量子化スケールとＷマトリクスを乗算して実行する。詳細については、ＩＳＯやＩＴＵ−Ｔの勧告書を参照。このため、図１９に示すような回路２１が必要となる。復号されたデータ（ＤＣＴ係数）は、レジスタ２１２でラッチされ、スケーリング回路２１３でスケールリングされ、乗算回路２１４でＷマトリクスと演算され、レジスタ２１５にラッチされる。
【０１１２】
本実施の形態では、この逆量子化処理を図１３Ａのプログラマブル演算器１４で実行させるために、この逆量子化処理を要求する一つの命令を実行する。演算器制御器１５内の命令デコーダ１５１は、この命令を解読して配線情報記憶部１５２からＩＱ配線情報を読み出す。読み出された配線情報はプログラマブル演算器１４内の複数のバススイッチングマトリクス１４５、複数のサブスイッチングマトリクス１４６に送られる。図２０にプログラマブル演算器１４でこの逆量子化処理を実行した場合の配線例を示す。
【０１１３】
入力インターフェイス１４１を介して入力されたＤＣＴ係数は、レジスタ１４Ｆにラッチされる。レジスタ１４Ｆの出力は、シフト加算器１４９に入力され、スケーリング処理が行われ、その出力を乗算器１４７の入力に接続する。Ｗマトリクスは、入力インターフェイス１４１を通じてレジスタ１４Ｅに入力され、レジスタ１４Ｅの出力は、乗算器１４７のもう一方の入力端に接続される。乗算結果は、レジスタ１４Ａでラッチされ、出力インターフェイスＣＬＢから出力される。
【０１１４】
（３）逆離散コサイン変換処理
逆離散コサイン変換は、積和演算が基本となり、逆量子化されたデータに対して変換行列を演算する演算である。詳細については、ＩＳＯあるいはＩＴＵ−Ｔの勧告書を参照。この処理のためには図２１の回路２２が必要となる。すなわち、逆量子化されたデータは、レジスタ２２１にラッチされた後、乗算器２２４に入力される。変換行列は、レジスタ２２２にラッチされた後、乗算器２２４のもう一方の入力に入力され、乗算が行われる。乗算結果は、レジスタ２２４にラッチされた後、加算回路２２５の一方の入力となる。加算回路２２４のもう一方の入力は、レジスタ２２６の出力である。加算結果は、レジスタ２２６に入力され、累積加算回路を実現する。
【０１１５】
本実施の形態では、この逆離散コサイン変換処理を図１３Ａのプログラマブル演算器１４で実行させるために、この逆離散コサイン変換処理を要求する一つの命令を実行する。演算器制御器１５内の命令デコーダ１５１は、この命令を解読して配線情報記憶部１５２からＩＤＣＴ配線情報を読み出す。読み出された配線情報はプログラマブル演算器１４内の複数のバススイッチングマトリクス１４５、複数のサブスイッチングマトリクス１４６に送られる。図２２にプログラマブル演算器１４でこの逆離散コサイン変換処理を実行した場合の配線例を示す。
【０１１６】
逆量子化されたデータは、入力インターフェイス１４１を通じて、レジスタ１４Ｅにラッチされる。同様に変換行列も、入力インターフェイス１４１を通じて、レジスタ１４Ｆにラッチされる。レジスタ１４Ｅ及びレジスタ１４Ｆの出力は、乗算器１４７の入力となり乗算される。乗算結果は、レジスタ１４Ａに入力され、出力インターフェイスＣＬＢを介して出力される。
【０１１７】
（４）動き補償処理
動き補償処理は、既に復号した画像に現復号画像を加算する演算が必要となる。図２３に例示する回路２３は、２つのリファレンス画像Ｒｅｆ１及びＲｅｆ２と、現復号画像を加算する構成である。リファレンスデータは、レジスタ２３１及びレジスタ２３２にラッチされた後に、加算器２３４により加算され、その出力は従属に接続された加算器２３５の一方の入力とされる。また、復号データは、レジスタ２３３にラッチされた後に、加算器２３５のもう一方の入力とされ加算される。
【０１１８】
本実施の形態では、この動き補償処理を図１３Ａのプログラマブル演算器１４で実行させるために、この動き補償処理を要求する一つの命令を実行する。演算器制御器１５内の命令デコーダ１５１は、この命令を解読して配線情報記憶部１５２からＭＣ配線情報を読み出す。読み出された配線情報はプログラマブル演算器１４内の複数のバススイッチングマトリクス１４５、複数のサブスイッチングマトリクス１４６に送られる。図２４にプログラマブル演算器１４でこの動き補償処理を実行した場合の配線例を示す。
【０１１９】
レファレンスデータは、入力インターフェイス１４１を通じて、レジスタ１４Ｅとレジスタ１４Ｆにラッチされ、シフト加算器１４９の入力となる。シフト加算器１４９の出力は、別のシフト加算器１４９の一方の入力と接続される。そのシフト加算器１４９のもう一方の入力である現フレームの復号データは、入力インターフェイス１４１を通じてレジスタ１４Ｇにラッチされ、そのレジスタ１４Ｇから出力されたデータである。そのシフト加算器１４９の出力は、レジスタ１４Ｄにラッチされた後に、出力インターフェイスＣＬＢを介して出力される。
【０１２０】
実施の形態２の利点は、本実施の形態にもあてはまる。さらに、本実施の形態では以下の利点がある。本実施の形態によるプロセッサでは、圧縮された動画像の復号処理に必要な複数の信号処理のいずれをも共通のプログラマブル演算器１４を使用して実行できる。すなわち、プログラマブル演算器１４により、これらの個々の処理を実行する種々の演算器を実現できたことになる。これらの処理が共通のプログラマブル演算器１４により実行されるために、それぞれの処理を別々に実行する複数の専用の演算器を使用する場合よりも、必要な回路全体の規模が少なくて済む。しかも、本プロセッサにより異なる信号処理を実行するには、配線情報記憶部１５２に予め多くの処理を実行するための配線情報を記憶するか、あるいは必要な配線情報をこの配線情報記憶部１５２に記憶すればよい。
【０１２１】
圧縮された動画像の復号処理に必要な複数の信号処理の各々は、複雑な演算を組み合わせた複合演算を必要とするが、本実施の形態はこのような複合演算を容易に実行することができる。
【０１２２】
さらに、信号処理の仕様が変更された場合でも、配線情報を変更することにより、その変更後の処理を実行するように、プログラマブル演算器１４を再構成することは容易である。したがって、新たな原理に基づいて信号処理方法自体が改良された場合にも、その新たな方法に基づいて信号処理を行うように、プログラマブル演算器１４を再構成することが極めて容易となる。
【０１２３】
＜発明の実施の形態３の変形例＞
本発明は、実施の形態３に限定されるのではなく、それに対してもいろいろの変形が可能である。たとえば、すでに説明した実施の形態１，２に記載の技術あるいはそれぞれの実施の形態に対して記載した変形例は本実施の形態にも適用可能である。
【０１２４】
また、実施の形態３においては、可変長復号、逆量子化、逆離散コサイン変換、動き補償の各機能を実現するプログラマブル演算器１４の配線を説明したが、勿論、各演算で利用していない演算器は、他の演算の実行中に並行して利用できるような配線にすることも可能である。例えば、算術演算器１４８を、可変長符号処理を行っている時に同時に別の処理を行う配線を施すということも可能である。
【０１２５】
＜変形例＞
以上の説明は、プロセッサ内に演算部が一つしかない例で説明したが、本発明のプログラマブル演算器は、演算器が複数あるプロセッサにおいて、それらの演算器の一つとして利用することも可能である。例えば、図２５に示すように、プロセッサ内に、算術演算器などの演算器１６とは別に、本発明のプログラマブル演算器１４及び演算器制御器１５を使用してもよい。
【０１２６】
また、図２６に示すように、本発明に係るプログラマブル演算器１４と演算器制御器１５の組の他に、同様の要素１４’、１５’の組が少なくとも一つ同じプロセッサ１内に存在してもよい。
【０１２７】
【発明の効果】
本発明によれば、回路規模が小さくてよい演算器を使用するプロセッサが得られる。
【０１２８】
さらに、本発明によれば、演算の仕様が変更された場合にも変更後の演算仕様に即して新たな演算を実行するのに適した演算器を有するプロセッサが得られる。
【０１２９】
さらに、本発明によれば、複数の命令が要求する異なる演算、とくに、複数の演算を組み合わせた複合演算を実行するのに適した演算器を有するプロセッサが得られる。
【図面の簡単な説明】
【図１Ａ】本発明に係るプロセッサの概略ブロック図。
【図１Ｂ】図１Ａの装置に使用するプログラマブル演算器の概略ブロック図。
【図１Ｃ】図１Ａの装置に使用する演算器制御器の概略ブロック図。
【図２】図１Ａの装置に使用するスイッチングマトリクスの概略構成図。
【図３Ａ】本発明のスイッチングマトリクス内のスイッチの構成例の図。
【図３Ｂ】本発明のスイッチングマトリクス内のスイッチの他の構成の図。
【図４】本発明の可変論理ブロック（ＣＬＢ）の構成例の図。
【図５】本発明の可変論理ブロック（ＣＬＢ）の別の構成例の図。
【図６Ａ】演算器制御器内の配線情報記憶部の構成例の図。
【図６Ｂ】演算器制御器内のデコーダの出力アドレスを示す図。
【図６Ｃ】配線情報記憶部内のＲＯＭの出力を示す図。
【図６Ｄ】配線情報記憶部内の他のＲＯＭの出力を示す図。
【図７】演算器制御器の他の構成例の図。
【図８】演算器制御器のさらに他の構成例の図。
【図９】本発明に係る他のプログラマブル演算器の概略ブロック図。
【図１０Ａ】バススイッチングマトリクスの構成例の図。
【図１０Ｂ】サブスイッチングマトリクスの構成例の図。
【図１１】バススイッチングマトリクス内のスイッチの構成例の図。
【図１２】乗算器及び算術演算器の構成例の図。
【図１３Ａ】本発明に係るさらに他のプログラマブル演算器の概略ブロック図。
【図１３Ｂ】本発明に係るさらに他の演算器制御器の概略ブロック図。
【図１４】プログラマブル演算器内のシフト加算器の構成例の図。
【図１５】プログラマブル演算器内のレジスタの構成例の図。
【図１６】従来の可変長復号回路の図。
【図１７】従来の可変長復号回路の説明図。
【図１８】可変長復号回路をプログラマブル演算器で実現した場合の接続例の図。
【図１９】従来の逆量子化回路の図。
【図２０】逆量子化回路をプログラマブル演算器で実現した場合の接続例の図。
【図２１】従来の逆離散コサイン変換（ＤＣＴ）回路の図。
【図２２】逆離散コサイン変換をプログラマブル演算器で実現した場合の接続例の図。
【図２３】従来の動き補償回路の図。
【図２４】動き補償回路をプログラマブル演算器で実現した場合の接続例の図。
【図２５】本発明の一実施例であるプロセッサの図。
【図２６】本発明の一実施例であるプロセッサの図。
【図２７】従来の一般的なプロセッサの図。
【図２８】従来の一般的な画像伸張ＬＳＩの図。
【図２９】従来のプロセッサの図。
【図３０】従来のプロセッサの問題点の説明図。
【図３１Ａ】従来の画像処理におけるブロック単位の処理の説明図。
【図３１Ｂ】従来の画像伸張処理の説明図。
【図１Ａ】
0003611714.tif 000002
【図１Ｂ】
0003611714.tif 000003
【図１Ｃ】
0003611714.tif 000004
【図２】
0003611714.tif 000005
【図３Ａ】
0003611714.tif 000006
【図３Ｂ】
0003611714.tif 000007
【図４】
0003611714.tif 000008
【図５】
0003611714.tif 000009
【図６Ａ】
0003611714.tif 000010
【図６Ｂ】
0003611714.tif 000011
【図６Ｃ】
0003611714.tif 000012
【図６Ｄ】
0003611714.tif 000013
【図７】
0003611714.tif 000014
【図８】
0003611714.tif 000015
【図９】
0003611714.tif 000016
【図１０Ａ】
0003611714.tif 000017
【図１０Ｂ】
0003611714.tif 000018
【図１１】
0003611714.tif 000019
【図１２】
0003611714.tif 000020
【図１３Ａ】
0003611714.tif 000021
【図１３Ｂ】
0003611714.tif 000022
【図１４】
0003611714.tif 000023
【図１５】
0003611714.tif 000024
【図１６】
0003611714.tif 000025
【図１７】
0003611714.tif 000026
【図１８】
0003611714.tif 000027
【図１９】
0003611714.tif 000028
【図２０】
0003611714.tif 000029
【図２１】
0003611714.tif 000030
【図２２】
0003611714.tif 000031
【図２３】
0003611714.tif 000032
【図２４】
0003611714.tif 000033
【図２５】
0003611714.tif 000034
【図２６】
0003611714.tif 000035
【図２７】
0003611714.tif 000036
【図２８】
0003611714.tif 000037
【図２９】
0003611714.tif 000038
【図３０】
0003611714.tif 000039
【図３１Ａ】
0003611714.tif 000040
【図３１Ｂ】
0003611714.tif 000041