(57)【特許請求の範囲】
【請求項１】
アプリケーションプログラムによる処理の少なくとも一部分を、回路情報を順次に読み込むことによりプログラマブル論理回路に構成する複数個の回路で処理する情報処理システムにおいて、
前記複数個の回路の全てに共通するものとして前記プログラマブル論理回路上に構成可能な共通回路部分と、前記複数個の回路で互いに共通せず、かつ、前記プログラマブル論理回路上で回路構成領域を共有しない非排他的独立回路部分とからなる先行ベース回路を、予め、前記プログラマブル論理回路に構成しておき、
前記先行ベース回路の回路情報との差分として、前記複数の回路の回路情報のそれぞれを形成し、
前記形成された複数の回路の回路情報のうちの、前記アプリケーションプログラムにより指定された回路情報により、前記プログラマブル論理回路上において部分的に回路を再構成することにより、前記処理に必要な回路を構成するようにする情報処理システム。
【請求項２】
プログラマブル論理回路に順次に構成する複数個の回路の回路情報の形成方法であって、
前記複数個の回路の全てに共通するものとして前記プログラマブル論理回路上に構成可能な共通回路部分と、前記複数個の回路で互いに共通せず、かつ、前記プログラマブル論理回路上で回路構成領域を共有しない非排他的独立回路部分とからなり、前記プログラマブル論理回路に、予め構成するようにするための先行ベース回路の回路情報と、
前記先行ベース回路の回路情報との差分としてそれぞれ構成される、前記複数の回路のそれぞれの回路を構成するための複数個の回路情報と、
により、前記複数個の回路の回路情報を形成することを特徴とするプログラマブル論理回路の回路情報形成方法。
【請求項３】
前記先行ベース回路の一部はルックアップテーブルにより回路が構成され、
前記複数個の回路の回路情報は、前記ルックアップテーブルのテーブルデータを含む
ことを特徴とする請求項２に記載の回路情報形成方法。
【請求項４】
前記先行ベース回路は、制御線を備え、
前記複数個の回路の回路情報は、この制御線の信号を切り換える情報を含む
ことを特徴とする請求項２に記載の回路情報形成方法。
【請求項５】
前記先行ベース回路が形成されているプログラマブル論理回路の部分的再構成により実現される機能回路が、四則演算器のうちの、少なくとも乗算器と、加算器と、減算器である
ことを特徴とする請求項１に記載の情報処理システム。
【請求項６】
請求項２に記載の回路情報形成方法において、
前記複数個の回路は、乗算器と、加算器と、減算器である
ことを特徴とするプログラマブル論理回路の回路情報形成方法。
【請求項７】
請求項３に記載の回路情報形成方法において、
前記複数個の回路は、乗算器と、加算器と、減算器と、除算器であり、前記ルックアップテーブルのテーブルデータの内容が、前記乗算器、加算器および減算器の場合と、除算器の場合とで変更される
ことを特徴とするプログラマブル論理回路の回路情報形成方法。
【請求項８】
請求項４に記載の回路情報形成方法において、
前記複数個の回路は、乗算器と、加算器と、減算器と、除算器であり、前記制御線の信号が、前記乗算器、加算器および減算器の場合と、除算器の場合とで切り換えられる
ことを特徴とするプログラマブル論理回路の回路情報形成方法。
【請求項９】
請求項６に記載の回路情報形成方法において、
前記先行ベース回路は、
４つの入力部と、
一つの出力部と、
少なくとも全加算器と論理積ゲートで構成される論理セルをマトリクス状に配置した演算回路部と、
前記演算回路部と前記出力部との間に設けられる桁上げ処理回路部と、
で構成され、
前記複数個の回路の回路情報で部分的に再構成される部分は、少なくとも前記４つの入力部へのデータ入力経路である
ことを特徴とするプログラマブル論理回路の回路情報形成方法。
【請求項１０】
請求項７に記載の回路情報形成方法において、
前記先行ベース回路は、
４つの入力部と、
一つの出力部と、
少なくとも２個のルックアップテーブルと論理積ゲートで構成される論理セルをマトリクス状に配置した演算回路部と、
前記演算回路部と前記出力部との間に設けられる桁上げ処理回路部およびフィードバック回路部と、
で構成され、
前記複数個の回路の回路情報で部分的に再構成される部分は、少なくとも前記４つの入力部へのデータ入力経路と、前記２個のルックアップテーブルに記憶されるデータである、
ことを特徴とするプログラマブル論理回路の回路情報形成方法。
【請求項１１】
請求項８に記載の回路情報形成方法において、
前記先行ベース回路は、
４つの入力部と、
一つの出力部と、
演算モードを切り換える制御線と、
少なくとも全加算器と、論理積ゲートと、前記制御線からの信号で内部接続が切り換えられるマルチプレクサとで構成される論理セルをマトリクス状に配置した演算回路部と、
前記演算回路部と前記出力部との間に設けられる桁上げ処理回路部およびフィードバック回路部と、
で構成され、
前記複数個の回路の回路情報で部分的に再構成される部分は、少なくとも前記４つの入力部へのデータ入力経路と、前記制御線の論理値の値である、
ことを特徴とするプログラマブル論理回路の回路情報形成方法。
【請求項１２】
プログラマブル論理回路に複数個の回路を順次に構成する方法であって、
前記複数個の回路の全てに共通するものとして前記プログラマブル論理回路上に構成可能な共通回路部分と、前記複数個の回路で互いに共通せず、かつ、前記プログラマブル論理回路上で回路構成領域を共有しない非排他的独立回路部分とからなる先行ベース回路を、前記複数個の回路の再構成に先立ち前記プログラマブル論理回路に予め構成する第１の工程と、
前記先行ベース回路の回路情報との差分としてそれぞれ構成される、前記複数の回路のそれぞれの回路情報により、前記先行ベース回路が形成されている前記プログラマブル論理回路を部分的再構成して、前記複数の回路のそれぞれの回路を順次に構成する第２の工程と、
を備えることを特徴とするプログラマブル論理回路の再構成方法。
【請求項１３】
前記先行ベース回路の一部はルックアップテーブルにより回路が構成され、
前記複数個の回路の回路情報は、前記ルックアップテーブルのテーブルデータを含む
ことを特徴とする請求項１２に記載のプログラマブル論理回路の再構成方法。
【請求項１４】
前記先行ベース回路は、制御線を備え、
前記複数個の回路の回路情報は、この制御線の信号を切り換える情報を含む
ことを特徴とする請求項１２に記載のプログラマブル論理回路の再構成方法。
【請求項１５】
前記先行ベース回路が形成されているプログラマブル論理回路の部分的再構成により実現される前記複数個の回路が、乗算器と、加算器と、減算器である
ことを特徴とする請求項１２に記載のプログラマブル論理回路の再構成方法。
【請求項１６】
請求項１３に記載のプログラマブル論理回路の再構成方法において、
前記先行ベース回路が形成されているプログラマブル論理回路の部分的再構成により実現される前記複数個の回路が、乗算器と、加算器と、減算器と、除算器であり、
前記第２の工程において、前記ルックアップテーブルのテーブルデータの内容が、前記乗算器、加算器および減算器の場合と、除算器の場合とで変更される
ことを特徴とするプログラマブル論理回路の再構成方法。
【請求項１７】
請求項１４に記載のプログラマブル論理回路の再構成方法において、
前記複数個の回路は、乗算器と、加算器と、減算器と、除算器であり、
前記第２の工程において、前記制御線の信号が、前記乗算器、加算器および減算器の場合と、除算器の場合とで切り換えられる
ことを特徴とするプログラマブル論理回路の再構成方法。
【請求項１８】
請求項１５に記載のプログラマブル論理回路の再構成方法において、
前記先行ベース回路は、
４つの入力部と、
一つの出力部と、
少なくとも全加算器と論理積ゲートで構成される論理セルをマトリクス状に配置した演算回路部と、
前記演算回路部と前記出力部との間に設けられる桁上げ処理回路部と、
で構成され、
前記第２の工程において前記複数個の回路の回路情報で部分的に再構成される部分は、少なくとも前記４つの入力部へのデータ入力経路である
ことを特徴とするプログラマブル論理回路の再構成方法。
【請求項１９】
請求項１６に記載のプログラマブル論理回路の再構成方法において、
前記先行ベース回路は、
４つの入力部と、
一つの出力部と、
少なくとも２個のルックアップテーブルと論理積ゲートで構成される論理セルをマトリクス状に配置した演算回路部と、
前記演算回路部と前記出力部との間に設けられる桁上げ処理回路部およびフィードバック回路部と、
で構成され、
前記第２の工程において前記複数個の回路の回路情報で部分的に再構成される部分は、少なくとも前記４つの入力部へのデータ入力経路と、前記２個のルックアップテーブルに記憶されるデータである、
ことを特徴とするプログラマブル論理回路の再構成方法。
【請求項２０】
請求項１７に記載のプログラマブル論理回路の再構成方法において、
前記先行ベース回路は、
４つの入力部と、
一つの出力部と、
演算モードを切り換える制御線と、
少なくとも全加算器と、論理積ゲートと、前記制御線からの信号で内部接続が切り換えられるマルチプレクサとで構成される論理セルをマトリクス状に配置した演算回路部と、
前記演算回路部と前記出力部との間に設けられる桁上げ処理回路部およびフィードバック回路部と、
で構成され、
前記第２の工程において前記複数個の回路の回路情報で部分的に再構成される部分は、少なくとも前記４つの入力部へのデータ入力経路と、前記制御線の論理値の値である、
ことを特徴とするプログラマブル論理回路の再構成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、アプリケーションプログラムによる処理の一部分を、回路構成を再構成できるプログラマブル論理回路で処理することが可能である情報処理システムおよびこの情報処理システムに使用するプログラマブル論理回路の回路情報形成方法、さらに、プログラマブル論理回路の再構成方法に関し、特に、回路の再構成時間を短縮する方法に関する。
【０００２】
【従来の技術】
デジタル回路装置の分野において、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）やプログラマブルロジックデバイス（ＰＬＤ）などのプログラマブル論理回路が、特定用途向け集積回路（ＡＳＩＣ）を作成する前の試作デバイスとして、または、数週間から数ヶ月という長い作製期間を要するＡＳＩＣの代替デバイスとして使われてきた。また、最近では、回路構成を変更できるというプログラマブル論理回路の特徴を生かして、回路装置作成後にも、仕様を変更したり回路欠陥を修正するためにプログラマブル論理回路が使われている。
【０００３】
さらに、アプリケーションの処理に合わせた処理回路をプログラマブル論理回路上に構成し、この前記アプリケーション専用の処理回路を用いて高速処理を実現するというリコンフィギュラブルコンピューティングに、プログラマブル論理回路が活用され始めている。
【０００４】
リコンフィギュラブルコンピューティングでは、アプリケーション処理で必要となる複数の処理回路の回路情報を記憶装置へ事前に格納しておき、必要に応じて、その記憶装置から読み出した回路情報を、プログラマブル論理回路のコンフィギュレーションメモリに書き込むことで、その時点で必要となる回路を生成する。
【０００５】
この技術は、必要な回路情報をプログラマブル論理回路の外部に退避しておくという観点から、キャッシュロジック技術と呼ばれたり、回路情報を書き替えることにより、実際のプログラマブル論理回路の回路規模よりも大きな規模の回路を実現できるという観点から、バーチャルロジック技術と呼ばれている。以下の説明では、簡単のため、これらの技術を総称して、キャッシュロジック技術と呼ぶことにする。
【０００６】
キャッシュロジック技術は、同じプログラマブル論理回路上に、必要に応じて異なる回路を構成するという時分割駆動技術である。その結果、回路規模の小さなプログラマブル論理回路を用いて、その回路規模以上の回路を実現でき、回路装置の小型化と低コスト化が可能となる。
【０００７】
しかしながら、プログラマブル論理回路のコンフィギュレーションメモリに書き込む回路情報の規模によっては、外部記憶装置からプログラマブル論理回路に回路情報を読み込んで、回路の再構成する時間が長くなり、専用のハードウエア処理回路を用いて高速処理を実現するというリコンフィギュラブルコンピューティングの効果を損なうという問題がある。
【０００８】
この問題のひとつの解決方法が、マルチコンテキスト技術と呼ばれるデバイス技術である。すなわち、マルチコンテキスト技術においては、プログラマブル論理回路内に複数の回路情報を格納することができるように、複数個のコンフィギュレーションメモリを設け、必要に応じてコンフィギュレーションメモリを切り替えることにより、プログラマブル論理回路装置に回路を再構成することで、回路の再構成時間を大幅に短縮する。
【０００９】
このマルチコンテキスト技術の従来例の一つが、ＦＰＤ’９５（Ｔｈｉｒｄ  Ｃａｎａｄｉａｎ  Ｗｏｒｋｓｈｏｐ  ｏｆ  Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｄｅｖｉｃｅｓ  １９９５）で発表された“Ａ  Ｆｉｒｓｔ  Ｇｅｎｅｒａｔｉｏｎ  ＤＰＧＡ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ”で示されたＤＰＧＡである。これを従来例１として、図５１を参照しながら説明する。
【００１０】
図５１は、発表されたＤＰＧＡの論理セル構造を示すものである。論理セルは、４組の構成を格納できる４×３２ビットのＤＲＡＭ１１、４つの８入力マルチプレクサ１２〜１５、４入力ルックアップテーブル１６、フリップフロップ１７、出力を切り替えるセレクタ１８で構成される。
【００１１】
３２ビットのＤＲＡＭ１１の出力のうち、１２ビットが４つの８入力マルチプレクサ１２〜１５の状態を、１６ビットが４入力ルックアップテーブル１６の状態を、１ビットがセレクタ１８の状態を決定し、残り３ビットは保留とされている。４組のＤＲＡＭ１１には、それぞれ異なる回路情報が格納されており、メモリ出力を切り替えることにより、異なる回路を構成することができる。
【００１２】
マルチコンテキスト技術は、事前に複数の回路情報をコンフィギュレーションメモリに格納してあるので、回路の再構成時間を短縮することを可能にする。
【００１３】
しかしながら、回路情報を格納するために、複数プレーンまたは複数個のコンフィギュレーションメモリがプログラマブル論理回路の内部に必要なため、プログラマブル論理回路の回路規模が大きくなる。回路規模が大きくなると、回路素子の負荷容量が大きくなることにより、回路性能が低下したり、消費電力が大きくなるという問題を引き起こす。また、回路規模が大きくなると、プログラマブル論理回路の製造コストが高くなるという問題も引き起こす。
【００１４】
このような欠点を持たない別の解決策が、スケルトン回路技術と呼ばれる回路設計技術である。このスケルトン回路技術においては、プログラマブル論理回路に再構成すべき複数の回路の全てに共通して使用可能な回路部分（これをスケルトン回路と呼ぶ）を、最初に、プログラマブル論理回路に構成しておく。そして、各回路の回路情報は、このスケルトン回路との差分回路の情報により構成するようにする。したがって、このスケルトン回路技術によれば、少ない回路情報で新たな回路を構成することができるので、回路の再構成時間を短縮することができる。
【００１５】
スケルトン回路技術の従来例の一つが、ＦＣＣＭ’９６の“Ａｓｓｅｓｓｉｎｇ  Ｄｏｃｕｍｅｎｔ  Ｒｅｌｅｖａｎｃｅ  ｗｉｔｈ  Ｒｕｎ−ｔｉｍｅ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｍａｃｈｉｎｅｓ”で示されているテキスト検索装置である。これを従来例２として説明する。
【００１６】
このテキスト検索装置は、プログラマブル論理回路上において、図５２に示すように、プリプロセッサ２１と、８個の単語検出回路２２Ａ〜２２Ｈと、４個のインクリメンター２３Ａ〜２３Ｄと、文字キャラクタ入力バス２４と、ストローブライン２５と、デストリビューションバス２６と、計数出力バス２７とで構成される。８個の単語検出回路２２Ａ〜２２Ｈは、それぞれ回路情報により指定される単語の検出回路である。
【００１７】
この図５２においては、８ビットで符号化された文字キャラクタデータがプリプロセッサ２１に入力されて、大文字と小文字を区別せずに、ＡからＺまでの文字が１から２６までのトークンにマップされ、データバス幅が５ビットに狭められる。数字などの他の文字は、０のトークンにマップされ、文字区切りを表すトークンとして扱われる。
【００１８】
５ビットのバス２６上を流れるトークンから、単語検出回路２２Ａ〜２２Ｈが、それぞれ指定された特定のトークンを検出し、特定のトークンの順列を検出することにより、単語を検索する。検出された単語数はインクリメンター２３Ａ〜２３Ｄで数え上げられる。図５２に示した例は、４単語からなる２組の単語リストを検出する。
【００１９】
この図５２では、単語検出回路２２Ａ〜２２Ｈを除いたバス２４〜２７とプリプロセッサ２１などの固定回路で、スケルトン回路が構成される。
【００２０】
このテキスト検索回路の電源投入時に、スケルトン回路が構成される。引き続いて単語検出回路２２Ａ〜２２Ｈが構成される。異なる単語を検出するときは、単語検出回路２２Ａ〜２２Ｈのうちの、その単語を構成する単語検出回路のみを再構成し、スケルトン回路部は再利用される。
【００２１】
スケルトン回路技術は、マルチコンテキスト技術におけるメモリ領域のような余分な回路領域を必要とせずに、回路情報を減らして回路の再構成時間を短縮することを可能にする。
【００２２】
【発明が解決しようとする課題】
前述したように、キャッシュロジック技術を用いて、アプリケーションプログラムによる処理の一部分を、プログラマブル論理回路で構成した回路で処理する情報処理システムでは、回路を再構成する時間が長くなり、ソフトウエア処理に比べて処理速度の速いプログラマブル論理回路によるハードウエア処理が、回路再構成時間を含めた総処理時間で比べると、ソフトウエア処理よりも時間を要することがある。
【００２３】
この問題を解決する一つの手段であるマルチコンテキスト技術は、回路の再構成時間を短縮することを可能にするが、複数の回路情報を格納するための余分なメモリ領域が必要なため、プログラマブル論理回路全体の回路規模が大きくなるという欠点がある。
【００２４】
また、上記問題を解決する別の解決手段であるスケルトン回路技術は、マルチコンテキスト技術のような、余分な回路領域を必要としないが、再構成される回路間に明白な共通部分が必要であるという制限がある。
【００２５】
この発明は、以上の点にかんがみ、マルチコンテキスト技術のように余分な回路領域を必要とせず、かつ、スケルトン回路技術における再構成される回路に対する制限を大幅に緩和して、高速に回路を再構成できるようにすることを目的とする。
【００２６】
【課題を解決するための手段】
この発明によるプログラマブル論理回路の再構成方法は、
プログラマブル論理回路に複数個の回路を順次に構成する方法であって、
前記複数個の回路の全てに共通するものとして前記プログラマブル論理回路上に構成可能な共通回路部分と、前記複数個の回路で互いに共通せず、かつ、前記プログラマブル論理回路上で回路構成領域を共有しない非排他的独立回路部分とからなる先行ベース回路を、前記複数個の回路の再構成に先立ち前記プログラマブル論理回路に予め構成する第１の工程と、
前記先行ベース回路の回路情報との差分としてそれぞれ構成される、前記複数の回路のそれぞれの回路情報により、前記先行ベース回路が形成されている前記プログラマブル論理回路を部分的再構成して、前記複数の回路のそれぞれの回路を順次に構成する第２の工程と、
を備えることを特徴とする。
【００２７】
【作用】
この発明による先行ベース回路は、上述したスケルトン回路技術の場合の、複数個の回路の共通部からなるスケルトン回路部分だけでなく、複数個の回路で、互いに排他的でなく、かつ、プログラマブル論理回路上で回路構成領域が互いに重ならない非共通部分をも含むものである。
【００２８】
したがって、複数の回路のそれぞれを再構成する場合には、先行ベース回路との差分の回路部分であるところの、複数個の回路で回路生成領域が重なるが、互いに排他的な回路部分のみを、再構成すればよい。
【００２９】
スケルトン回路技術の場合には、複数個の回路で共通の部分がないとスケルトン回路が生成できないので、その回路技術を用いることができないが、この発明の場合には、スケルトン回路部分だけではなく、複数個の回路で、互いに排他的でなく、かつ、プログラマブル論理回路上で回路構成領域が互いに重ならない非共通部分をも含む先行ベース回路を予めプログラマブル論理回路上に構成しておくものであるため、複数個の回路で共通の部分が必要というような制約がなくなり、どのような回路の場合にも、高速再構成が可能になる。
【００３０】
【発明の実施の形態】
以下、この発明による情報処理システム、回路情報形成方法、プログラマブル論理回路の再構成方法の実施の形態を、図を参照しながら説明する。
【００３１】
［情報処理システム全体の構成の概要］
この発明による、少なくとも処理の一部分が、回路構成を再構成できるプログラマブル論理回路を保有する処理手段で処理される情報処理システムの実施の形態の主要な概念構成を図３に示す。
【００３２】
この例の場合の情報処理システムは、情報処理部１００と、記憶部２００とからなる。これら情報処理部１００と、記憶部２００とは、一つの情報処理装置内に構成することもできるし、それぞれ別々の装置として、互いにネットワークを介して接続するようにして構成することもできる。
【００３３】
以下に説明する例では、情報処理部１００と、記憶部２００とは、一つの情報処理装置内に構成されている場合として説明する。
【００３４】
情報処理部１００においては、アプリケーションプログラム１０１は、実行しようとする一連の処理を複数個の処理に分割し、分割した処理をＣＰＵ１０２またはプログラマブル論理回路１０４を保有するハードウエア処理部１０３で実行する。アプリケーションプログラム１０１には、ＣＰＵ１０２で行う処理は、ＣＰＵ１０２の命令コードで記述され、また、ハードウエア処理部１０３で行う処理は、これが保有するプログラマブル論理回路１０４に構成する回路名と、その回路を構成要素の一部として構成されたハードウエア処理部１０３の制御コードで記述されている。
【００３５】
ハードウエア処理部１０３は、処理手段を構成するもので、プログラマブル論理回路１０４として、この例ではＦＰＧＡタイプのプログラマブル論理回路を保有し、このプログラマブル論理回路１０４に構成された回路を利用して処理を行う。
【００３６】
回路情報取得部１０５は、アプリケーションプログラム１０１からのハードウエア処理部１０３のプログラマブル論理回路１０４に構成する回路の要求を受けて、その回路を構成するための回路情報を記憶部２００から取得する。この例の場合、回路情報はヘッダ部とコード部（回路データ部）で構成されている。
【００３７】
記憶部２００には、アプリケーションプログラム１０１での処理で必要とされる一連の複数の回路の回路情報が、予め格納されている。記憶部２００に格納される、その一連の複数の回路の回路情報は、この実施の形態では、後述するように、できるだけプログラマブル論理回路１０４での回路の再構成時間が短縮化できるように考慮されたものとされている。
【００３８】
そして、回路情報取得部１０５は、取得した回路情報のコード部の回路データを、ハードウエア処理部１０３にロードして、そのプログラマブル論理回路１０４に回路を構成する。さらに、回路情報取得部１０５は、回路情報のヘッダ部に記述されている入出力ポート情報をアプリケーションプログラム１０１に提供する。
【００３９】
アプリケーションプログラム１０１は、この回路情報取得部１０５からの入出力ポート情報に基づいて、ハードウエア処理部１０３のプログラマブル論理回路１０４に構成された回路に、データを入出力する。
【００４０】
［ＦＰＧＡタイプのプログラマブル論理回路の説明］
前述したように、この実施の形態においては、プログラマブル論理回路１０４として、ＦＰＧＡタイプのプログラマブル論理回路を用いる。このＦＰＧＡタイプのプログラマブル論理回路の平面構造を図４に、内部構造のブロック図を図５に示す。
【００４１】
このＦＰＧＡタイプのプログラマブル論理回路１０４０は、図５に示すように、回路情報を格納するためのコンフィギュレーションメモリ１０４１と、回路素子１０４２とで構成される。回路素子１０４２は、図４に示すように、マトリクス配列された複数個の論理セル１０４３と、入出力端子１０４４と、論理セル１０４３間や論理セル１０４３と入出力端子１０４４との間などを接続するための配線領域１０４５とで構成される。
【００４２】
コンフィギュレーションメモリ１０４１は、ＥＥＰＲＯＭ、ＳＲＡＭなどの書き換え可能なメモリ素子で構成されている。回路情報がコンフィギュレーションメモリ１０４１に格納されると、この回路情報に従って、論理セル１０４３内の回路構成や、論理セル１０４３と入出力端子１０４４を相互に接続する配線領域１０４５の接続状態が再構成される。コンフィギュレーションメモリ１０４３の一部分を書き換えることにより、プログラマブル論理回路が動作中であっても、回路を部分的に再構成することができる。
【００４３】
プログラマブル論理回路に再構成された回路素子１０４２に、入出力端子１０４４を介して、処理すべきデータが入力されて所定の処理が実行され、また、その処理結果が入出力端子１０４４を介して出力される。
【００４４】
［プログラマブル論理回路の回路情報形成方法の実施の形態］
［記憶部２００に記憶される回路情報の構造］
図１は、この発明による回路情報形成方法の概念を説明するための図である。また、図２は、この発明による回路情報形成方式で形成された回路情報の例を、従来のスケルトン回路技術の場合の回路情報と比較して説明するための図である。
【００４５】
図１および図２に示す例においては、アプリケーションプログラムにより、回路Ａ，Ｂ，Ｃの３つの回路を、順次にプログラマブル論理回路に構成する場合について説明する。この場合、３つの回路Ａ，Ｂ，Ｃは、回路構成上、概念的に図１のような関係にあるものとする。
【００４６】
すなわち、図１において、共通回路部分１（図１において斜め格子を付した部分）は、回路Ａ，Ｂ，Ｃにおいて、プログラマブル論理回路に構成した回路部分を共通に使用することができる部分である。この共通回路部分１は、前述のスケルトン回路技術におけるスケルトン回路の部分に相当する。
【００４７】
また、図１において網点を付して示した部分２は、プログラマブル論理回路上において、回路Ａ，Ｂ，Ｃで互いに回路領域が重なるが、それぞれ異なる機能回路部分を構成すべき排他的全重なり部分である。
【００４８】
また、図１において、塗りつぶしを施していない部分３は、プログラマブル論理回路上において、回路Ａ，Ｂ，Ｃの全てで重なることはないが、いずれかの他の回路と重なり、それぞれ異なる機能回路部分を構成すべき排他的一部重なり部分である。
【００４９】
また、図１において、斜線を付した部分４は、それぞれの回路Ａ，Ｂ，Ｃのそれぞれが、他の回路と重なりを持たずにプログラマブル論理回路上に構成される排他的でない非共通部分である。
【００５０】
この発明においては、共通回路部分１と、回路Ａ，Ｂ，Ｃのそれぞれについての排他的でない非共通部分４とからなる部分（すなわち、図１において、斜め格子を付した部分と、斜線を付した部分とからなる部分；この回路部分を、この明細書では先行ベース回路と呼ぶことにする）を、複数個の回路Ａ，Ｂ，Ｃを再構成する前に、予めプログラマブル論理回路上に構成すべき先行ベース回路とし、その回路情報を、まず、生成する。すなわち、図２（Ａ）に示すように、先行ベース回路の回路情報５を、まず、生成する。
【００５１】
次に、この例の場合には、前述したように、回路Ａ→回路Ｂ→回路Ｃの順序でプログラマブル論理回路上に、３つの回路を構成するので、図２（Ａ）のように、順次に各回路Ａ，Ｂ，Ｃの回路情報６Ａ，６Ｂ，６Ｃを生成するが、これらの各回路Ａ，Ｂ，Ｃの回路情報６Ａ，６Ｂ，６Ｃのそれぞれは、それぞれの回路Ａ，Ｂ，Ｃと、先行ベース回路との差分に相当する回路部分の情報として生成する。
【００５２】
この場合の各回路Ａ，Ｂ，Ｃの回路情報６Ａ，６Ｂ，６Ｃは、図１において、塗りつぶしが付されていない排他的一部重なり部分３と、排他的全重なり部分２とからなる回路部分を部分的に再構成するものとなる。すなわち、この例の場合には、回路情報６Ａ，６Ｂ，６Ｃのそれぞれは、回路Ａ、回路Ｂ、回路Ｃのうちの、それぞれ、排他的一部重なり部分３と、排他的全重なり部分２とを部分的に再構成するための回路情報とされる。
【００５３】
このように形成された回路情報を用いて、プログラマブル論理回路１０４に処理に必要な機能回路を再構成すると共に、実際の処理を行なう手順を、図６のフローチャートを用いて説明する。
【００５４】
まず、始めに、処理に先立ち、回路情報取得部１０５は、記憶部２００から、先行ベース回路の回路情報５を読み込み、先行ベース回路をプログラマブル論理回路１０４上に構成しておく（ステップＳ１０１）。
【００５５】
そして、アプリケーションプログラム１０１からの回路選択指示を待ち（ステップＳ１０２）、回路選択指示があったら、選択された回路を認識し、記憶部２００からその選択指示された回路情報を読み出し（ステップＳ１０３）、その回路情報によるプログラマブル論理回路１０４の部分的再構成により、必要な回路がプログラマブル論理回路１０４上に生成される（ステップＳ１０４）。
【００５６】
この例の場合には、最初は、回路情報６Ａが指定されるので、この回路情報６Ａによりプログラマブル論理回路１０４上に既に構成されている先行ベース回路に加えて、回路Ａの生成のために必要な回路部分の部分再構成が行われ、回路Ａがプログラマブル論理回路１０４上に生成される。
【００５７】
必要な機能回路がプログラマブル論理回路１０４上に構成されると、処理が実行される（ステップＳ１０５）。そして、アプリケーションプログラムによる全ての処理が終了しているか否か判別し（ステップＳ１０６）、終了していなければ、ステップＳ１０２に戻り、順次に、必要な機能回路を、その生成のための前述したような回路情報により、先行ベース回路に加えて部分再構成して、プログラマブル論理回路１０４上に生成する。
【００５８】
そして、ステップＳ１０６で全ての処理が終了したと判別されたときには、この処理ルーチンを終了する。
【００５９】
以上のようにして、先行ベース回路は変更せずに、わずかな回路部分の再構成を行なうだけで、複数個の機能回路をプログラマブル論理回路上に実現することができ、高速のコンフィギュレーションが可能となる。
【００６０】
［従来のスケルトン回路技術との比較］
図２（Ｂ）は、従来のスケルトン回路技術を用いた場合において、前記３つの回路Ａ，Ｂ，Ｃを、順次に、プログラマブル論理回路に再構成するための回路情報の構造を示すものである。図２（Ａ）のこの発明による回路情報との違いは、最初の回路情報が、先行ベース回路の回路情報の代わりに、スケルトン回路の回路情報であるかということと、各回路Ａ，Ｂ，Ｃの回路情報が、この発明の場合には、先行ベース回路との差分であるのに対して、スケルトン回路技術の場合には、スケルトン回路との差分である点である。
【００６１】
スケルトン回路は、図１においては、共通回路部分１に相当する。これに対して、前述したように、先行ベース回路は、図１において、共通回路部分１だけでなく、各回路Ａ，Ｂ，Ｃの排他的でない非共通部分４を含むものである。したがって、この発明による回路情報の形成方法により形成された回路情報により各回路Ａ，Ｂ，Ｃが再構成される場合には、排他的一部重なり部分３と、排他的全重なり部分２とが再構成されるだけとなる。
【００６２】
このため、排他的一部重なり部分３と、排他的全重なり部分２とが再構成されるだけでなく、各回路Ａ，Ｂ，Ｃの排他的でない非共通部分４をも再構成しなければ、それぞれの回路Ａ，Ｂ，Ｃを再構成できないスケルトン回路技術の場合よりも、この発明の場合の方が、部分的再構成時間を短縮化することができるものである。
【００６３】
前述した従来例によるスケルトン回路技術では、共通回路部分を持った複数の回路から抽出された共通回路部分（スケルトン回路）を構成する回路情報を、まず、最初にコンフィギュレーションメモリに格納する。次に、アプリケーションによる処理に対応する処理回路を実現するために、その回路情報と既に構成されているスケルトン回路との差分に対応する回路のすべてを構成する回路情報を、コンフィギュレーションメモリに追加して格納する。その結果、既に構成されているスケルトン回路と、後から構成した非共通回路を合わせて、アプリケーションによる処理に対応する処理回路が構成される。
【００６４】
つぎに、アプリケーションによる別の処理に対応する処理回路を実現するために、その回路情報と既に構成されているスケルトン回路との差分に対応する非共通回路を構成する回路情報を、コンフィギュレーションメモリに追加して格納する。その結果、既に構成されているスケルトン回路と、後から構成した非共通回路を合わせて、アプリケーションによる処理に対応する処理回路が構成される。
【００６５】
このとき、先に構成された処理の非共通部分の回路情報は、後から構成された処理の非共通部分の回路情報により、一部もしくは全部が上書きされる。もし、全部が上書きされた場合は、先に構成された処理回路は全て失われる。もし、一部が上書きされた場合は、先に構成された処理回路と後に構成された処理回路の非排他的部分の回路が残る。
【００６６】
従来のスケルトン回路技術では、この非排他的部分回路は、回路断片としてプログラマブル論理回路上に放置されている。ふたたびアプリケーションにより先の回路を再構成するときに、非排他的回路部分を含んだ回路情報が上書きされて、同じ回路が再構成される。
【００６７】
この発明では、このように他の回路を再構成しても上書きされない非排他的部分回路を先行ベース回路の一部分として構成している。したがって、この発明によれば、再構成される回路情報の情報量が削減されて、再構成時間が短縮されるものである。
【００６８】
次に、以上説明したような回路情報形成方法を用いて形成される回路情報を用いて、処理が行われる情報処理システムの実施の形態について説明する。以下に説明する実施の形態は、情報処理システムのプログラマブル論理回路１０４に、処理に必要な機能処理回路をどのようにして構成するかを示したものであり、機能処理回路としては、四則演算のそれぞれの演算を行なうものを例にする。
【００６９】
以下においては、３つの実施の形態について説明するが、便宜上、回路ブロック図と、論理ゲートによる記述を用いて各実施の形態の回路構成を説明する。
【００７０】
なお、この発明は、記述した回路構成が、直接、プログラマブル論理回路上に構成されることに限定されない。なぜならば、プログラマブル論理回路は、回路ブロック図と論理ゲートを用いたスケマティック記述や、ＶＨＤＬなどの言語を用いた回路記述言語記述により表現された回路構成から生成された回路情報を読み込むことで、回路を構成する。構成された回路は、機能的にはスケマティック記述や回路記述言語記述により表現された回路と同じであるが、用いられる回路素子や回路素子間の結線状態は、プログラマブル論理回路のアーキテクチャにより異なる。
【００７１】
したがって、以下に説明する実施の形態は、説明に用いた回路ブロック図と論理ゲートにより構成される回路構成に限定されず、同じ機能を有するスケマティック記述や回路記述言語記述へ容易に拡張することができるものである。
【００７２】
［第１の実施の形態：演算モード切り替えなしの加減乗算器］
この発明の第１の実施の形態の場合の先行ベース回路を図７に示す。この第１の先行ベース回路は、Ｘ入力部３０、Ｙ入力部４０、Ｃｉｎ入力部５０、Ｐｉｎ入力部６０の４つの入力部と、Ｓ出力部７０の一つの出力部と、演算セルから構成される演算回路部８０、加減乗算における桁上げを処理するためのＣＬＡ（Ｃａｒｒｙ  Ｌｏｏｋ  Ａｈｅａｄ：桁上げ先見方式）付きアダー９０から構成される。ここで、Ｃｉｎは桁上げ信号の初期値、Ｐｉｎは部分和の初期値である。この図７は、演算ビット数をｎとして一般化した場合の先行ベース回路を示したもので、ｎは偶数である。
【００７３】
４つの入力部３０、４０、５０、６０の各ビット単位の構成は基本的には同一のものである。ただし、この例の場合には、後述するように、Ｙ入力部４０は、減算のための反転処理の部分が他の入力部と異なっている。
【００７４】
各入力部のビット単位の構成は、フリップフロップ回路により構成されるレジスタタイプのものと、スイッチ回路により構成されるタイプのものとがあり、用途に応じていずれのタイプのものを用いることもできる。
【００７５】
図８は、レジスタタイプの入力部の各ビット単位の構成例を示すもので、これはＸ入力部３０の場合の構成例である。すなわち、各ビット単位の入力部３１は、このレジスタタイプの場合には、Ｄフリップフロップ回路３２からなり、そのＤ入力端子に、入力ビットｘｉ  が供給され、Ｑ出力端子から入力部ビット出力ｘｏｕｔｉが取り出される。そして、Ｄフリップフロップ回路３２のプリセット端子ＰＲと、クリア端子ＣＬとに与えられるハイレベルＨあるいはローレベルＬの制御信号により、入力部ビット出力ｘｏｕｔｉの値が設定される。
【００７６】
すなわち、図８（Ａ）のように、Ｄフリップフロップ回路３２のプリセット端子ＰＲとクリア端子ＣＬとに与えられる制御信号が共にハイレベルＨのときには、入力部ビット出力ｘｏｕｔｉとしては、入力ビットｘｉ  がそのまま得られる。
【００７７】
また、図８（Ｂ）のように、Ｄフリップフロップ回路３２のプリセット端子ＰＲにはローレベルＬの制御信号が供給され、クリア端子ＣＬにはハイレベルＨの制御信号が与えられるときには、入力部ビット出力ｘｏｕｔｉは、常に「１」となる。
【００７８】
さらに、図８（Ｃ）のように、Ｄフリップフロップ回路３２のプリセット端子ＰＲにはハイレベルＨの制御信号が供給され、クリア端子ＣＬにはローレベルＬの制御信号が与えられるときには、入力部ビット出力ｘｏｕｔｉは、常に「０」となる。
【００７９】
図９は、各ビット単位の入力部３１をスイッチタイプのもので構成した場合である。図８のレジスタタイプのものと同様に、図９（Ａ）は、入力部ビット出力ｘｏｕｔｉとして、入力ビットｘｉ  がそのまま得られるようにする場合、図９（Ｂ）は、入力部ビット出力ｘｏｕｔｉが常に「１」に設定される場合、図９（Ｃ）は、入力部ビット出力ｘｏｕｔｉが常に「０」に設定される場合である。
【００８０】
このスイッチタイプのものは、回路情報により、図９（Ａ）、（Ｂ）、（Ｃ）のいずれかのスイッチ回路が形成されることにより、それぞれの状態が設定される。
【００８１】
なお、レジスタタイプの構成の場合には、入力値ｘｉ  ，０，１の全てを保持することができるが、スイッチタイプの場合には、０，１の固定値は保持することができるが、ｘｉ  などの変数値は保持することができない。
【００８２】
先行ベース回路を構成する場合に、各入力部のビット単位の入力部３１を、図８（Ａ），（Ｂ），（Ｃ）または図９（Ａ），（Ｂ），（Ｃ）のいずれかの状態に設定するが、どの状態に設定するかは、先行ベース回路の次にプログラマブル論理回路上に構成する回路に応じて、その回路用のものに設定すると、各入力部３０、４０、５０、６０を構成するための回路情報が不要となるので、再構成時間を短縮化することができる。以下の説明においては、各入力部３０、４０、５０、６０は、それぞれレジスタタイプにより構成されているものとして説明する。
【００８３】
前述したように、Ｙ入力部４０は、減算演算のために、反転制御回路が挿入される。その反転制御回路は、ビット単位の入力部４１に設けられるＤフリップフロップ回路４２の前段と後段のいずれに設けることもできる。図１０の例は、Ｄフリップフロップ回路４２の前段に設けられた場合の例である。すなわち、各ビット単位の入力部４１のＤフリップフロップ回路４２の前段には、インバータ４４と、マルチプレクサ４３とからなる反転制御回路が設けられる。
【００８４】
この反転制御回路は、マルチプレクサ４３に供給される切り替え制御信号ＳＥＬにより、切り替え制御されて、入力信号ｙｊ  をそのままの極性で出力する場合と、入力信号ｙｊ  を反転した状態で出力する場合とに切り替えられる。図１０で、反転出力は、ｙｊ  にオーバーバーを付して示した。
【００８５】
次に、図１１に、先行ベース回路の演算回路部８０と、ＣＬＡ付きアダー９０と、Ｓ出力部７０の部分の回路構成を示し、図１２に、演算回路部８０内の論理セル８１の構造を示す。図１１は、ｎ＝８の場合の演算回路部８０の構成を示している。したがって、Ｘ入力部３０、Ｙ入力部４０、Ｃｉｎ入力部５０のそれぞれは、ｘ０  〜ｘ７  、ｙ０  〜ｙ７  、ｃｉｎ０  〜ｃｉｎ７  の８ビット分のビット単位入力部を備え、Ｐｉｎ入力部６０は、ｐｉｎ０  〜ｐｉｎ１５の１６ビット分のビット単位入力部を備える。
【００８６】
図１２に示すように、先行ベース回路の各論理セル８１は、アンドゲート８１１と、全加算器（フルアダーＦＡ）８１２とを備えると共に、図示のような配線を備える。図１２における入力ｘ，ｙ、桁上げ出力ｃ、部分和ｐのそれぞれに付されている添字であるｉは、演算対象の入力ｘの桁を表わし、また、添字ｊは、論理セルを通って計算された回数（何回、論理セルを通って当該論理セルに入力されたかに相当）と、演算対象の入力ｙの桁を表わしている。
【００８７】
図１２の論理セル８１は、入力ｘｉ  と入力ｙｊ  との論理積を、アンドゲート８１１で演算する。そして、このアンドゲート８１１の論理積演算出力と、当該論理セル８１へ入力される桁上げ出力ｃｉ  （ｊ−１）と、当該論理セル８１へ入力される部分和ｐｉ  （ｊ−１）とを、全加算器８１２で加算演算する。そして、この全加算器８１２から、部分和出力ｐｉ  ｊ  と、桁上げ出力ｃｉ  ｊ  とを得るように構成されている。
【００８８】
また、図示は省略するが、Ｓ出力部７０は、出力バッファレジスタの構成であり、２ｎ個、したがって、図１１の例の場合には、１６個のＤフリップフロップ回路からなるレジスタで構成される。そして、Ｓ出力部７０は、その下位のｓ０  〜ｓ（ｎ−１）  （図１１の例では、ｓ０  〜ｓ７  ）として、演算回路部８０の各行の出力ビットを受け、また、その上位のｓｎ  〜ｓ（２ｎ−１）（図１１の例では、ｓ８  〜ｓ１５）として、ＣＬＡ付きアダー９０の出力を受け、外部に出力することが可能である。
【００８９】
また、先行ベース回路のＣＬＡ付きアダー９０は、図１４に示すように構成される。この図１４も、ｎ＝８の場合に対応したものである。このＣＬＡ付きアダー９０は、演算回路部８０の最後の行（ｙ７  の行）のキャリー出力ｃ７  ’〜ｃ１４’と、部分和出力ｓ８  ’〜ｓ１４’とを計算して、部分和出力ｓ８  〜ｓ１５を出力するために用いる。
【００９０】
図１４に示すように、ＣＬＡ付きアダー９０は、８個のハーフアダー（半加算器）９０１〜９０８と、１２個のアンドゲート９０９〜９２０と、６個のノアゲート９２１〜９２６と、６個のインバータ９２７〜９３２と、７個のイクスクルーシブオアゲート９３３〜９３９とから構成される。
【００９１】
ハーフアダー９０１〜９０８のそれぞれは、図１３に示すように、キャリー出力ｃ（ｉ−１）’と、部分和ｓｉ  ’とをそれぞれ入力とするアンドゲート９４１およびイクスクルーシブオアゲート９４２からなる。
【００９２】
図１４の場合でのＣＬＡ付きアダー９０は、図１４で点線で囲んで示したように、４ビット分を１ブロックとして、その単位でＣＬＡを用いて桁上げ信号を伝搬させ、ブロック内はリップルで桁上げ信号を伝える方式をとっている。ここでは、ハーフアダー９０１〜９０８のそれぞれの２つの入力ｓｉ  ’，ｃ（ｉ−１）  ’がともに“１”のときは、下の桁からの桁上げ信号ｃ（ｉ−１）  の値にかかわらず桁上げ信号ｃｉ  が発生し、前記２つの入力ｓｉ  ’，ｃ（ｉ−１）  ’のどちらかが“１”のときは、下の桁からの桁上げ信号ｃ（ｉ−１）  の値で桁上げ信号ｃｉ  が決定される。この様子を式で表すと、次のようになる。
【００９３】
ｃｉ  ＝ｇｉ  ＋ｐｉ  ・ｃ（ｉ−１）        …（１）
ただし、ｇｉ  ＝ｓｉ  ’・ｃ（ｉ−１）  ’であり、ｐｉ  ＝ｓｉ  ’［ｅｘｏｒ］ｃ（ｉ−１）  である。なお、・は乗算、また、［ｅｘｏｒ］は、排他的論理和演算を意味している。
【００９４】
式（１）において、ｇｉ  は桁上げ生成信号（ｇｅｎｅｒａｔｏｒ）と呼ばれ、ｐｉ  は桁上げ伝搬信号（ｐｒｏｐａｇａｔｏｒ）と呼ばれるが、機能的にはハーフアダーのキャリーおよび和に全く等しい。
【００９５】
これらｇｉ  およびｐｉ  を用いて、図１４における必要な各桁の桁上げ信号ｃ８  〜ｃ１４を表すと、図１５に示すようなものとなり、全ての桁の桁上げ信号は、自桁の入力値と、それぞれのＣＬＡ付きアダー９０での最下位の桁上げ信号（ここではｃ８  ，ｃ１１）だけで生成できる。
【００９６】
最終的な出力ｓｉ  （この場合ｓ８  〜ｓ１５）としては、ｓ８  についてはｐ８  を出力する。ｓ９  〜ｓ１５については、１つ下位の桁から出されたキャリー信号ｃ（ｉ−１）  とハーフアダーからの桁上げ伝搬信号ｐｉ  との排他的論理和を取ることにより出力される。
【００９７】
［先行ベース回路から乗算（Ｘ×Ｙ）処理回路の再構成の説明］
乗算を行う場合の並列乗算器の論理セル８１の内部構成は、図１２のままでよい。しかし、先行ベース回路のＸ入力部３０、Ｙ入力部４０、Ｃｉｎ入力部５０、Ｐｉｎ入力部６０、Ｓ出力部７０は、乗算回路用の回路情報により、図１６に示すように設定される。そして、この回路情報による部分再構成により、乗算回路がプログラマブル論理回路１０４に生成される。なお、この乗算器の場合、Ｙ入力部４０の反転制御信号ＳＥＬは、「０」とされ、非反転となる。
【００９８】
この場合、乗算の例として、Ｘ（８ビット）×Ｙ（８ビット）の演算を考えると、Ｘは被乗数、Ｙは乗数、ＳはＸとＹの積となり、図１６に示すように、各入力部３０、４０、５０、６０および出力部７０の値は設定される。
【００９９】
すなわち、Ｘ入力部３０およびＹ入力部４０は、図８（Ａ）に示したように、プリセット端子ＰＲおよびクリア端子ＣＬがそれぞれハイレベルに部分的再構成される。また、Ｃｉｎ入力部５０およびＰｉｎ入力部６０は、図８（Ｃ）に示したように、プリセット端子ＰＲおよびクリア端子ＣＬがそれぞれハイレベルおよびローレベルに部分的再構成されて、全て初期値０に設定される。さらに、Ｓ出力部７０は、ｓ０  〜ｓ１５の全てを用いるように部分的再構成される。
【０１００】
なお、先行ベース回路のＸ入力部３０、Ｙ入力部４０、Ｃｉｎ入力部５０、Ｐｉｎ入力部６０が、それぞれ図８（Ｃ）に示すプリセット端子ＰＲおよびクリア端子ＣＬがそれぞれハイレベルおよびローレベルに部分的再構成されて、全て初期値０に設定される状態にされている場合には、この乗算回路用の回路情報としては、Ｃｉｎ入力部５０、Ｐｉｎ入力部６０の設定情報は必要としない。
【０１０１】
［先行ベース回路から加算（Ｘ＋Ｙ）処理回路の再構成の説明］
加算器の論理セルは、図１７（Ａ）に示すように、図１２に示した先行ベース回路の論理セル８１へのＸ入力部３０のビット出力を「１」とし、Ｐｉｎ入力部６０の部分和出力を被加算数Ｘ（ｘｉ  ；ｉ＝０〜７）入力とし、Ｙ入力部４０のビット出力を加算数Ｙ（ｙｊ  ；ｊ＝０〜７）入力とし、Ｃｉｎ入力部５０の桁上げ出力の初期値を「０」とすることにより実現できる。すなわち、このとき、形成される加算器の論理セルは、図１７（Ｂ）に示すものと等価となり、その論理セル８１の部分和出力Ｐｉ  として、Ｐｉ  ＝ｘｉ  ＋ｙｊ  が得られ、桁上げ出力Ｃｉ  ｊ  として桁上げ信号が得られる。
【０１０２】
また、先行ベース回路の論理セル８１へのＸ入力部３０のビット出力を「０」にし、Ｃｉｎ入力部５０のビット出力を「０」にした場合には、その部分和出力Ｐｉ  ＝ｘｉ  となり、また、桁上げ出力Ｃｉ  ＝０となる。また、先行ベース回路の論理セル８１へのＸ入力部３０のビット出力を「０」、Ｃｉｎ入力部５０のビット出力を「０」、さらにＰｉｎ入力部６０のビット出力も「０」とした場合には、その論理セル８１の部分和ｐｉ  および桁上げ出力ｃｉ  は「０」となる。
【０１０３】
この加算演算の場合も乗算演算と同様に８ビット＋８ビットの演算を考え、演算回路部８０を８ビットの加算演算器の構成とする場合、図１８において、右端の論理セル８１ａ〜８１ｈのみを図１７（Ｂ）のような加算器の構成として、その加算器の部分和出力ｓ０  〜ｓ７  を加算出力とすると共に、ＣＬＡ付きアダー９０の最も下位のビットを桁上げ出力ｓ８  として用いるようにすればよい。
【０１０４】
以上のことから、先行ベース回路から、加算処理回路を再構成するための回路情報は、図１９に示すようなものとなる。すなわち、Ｘ入力部３０は、最下位のビット（ｘ０  に対応）が１で、その上位の７ビットは全て０とされる。また、Ｃｉｎ入力部５０の出力ビットは全て０とされる。そして、Ｐｉｎ入力部６０の下位の８ビットが８ビットの変数ｘｉ  となるようにされる。さらに、Ｐｉｎ入力部６０の上位の８ビットは、全て０とされる。そして、Ｓ出力部７０は、下９ビットｓ０  〜ｓ８  が出力バッファとして用いられるように結線される。なお、この加算処理回路の場合、Ｙ入力部４０の反転制御信号ＳＥＬは、「０」とされ、非反転となる。
【０１０５】
この加算処理回路は、Ｘ入力部３０と、Ｙ入力部４０との関係を上述の場合と逆とすることによっても実現することができる。すなわち、Ｐｉｎ入力部６０の部分和出力を加算数Ｙ（ｙｊ  ；ｊ＝０〜７）入力とし、Ｘ入力部３０のビット出力を被加算数Ｘ（ｘｉ  ；ｉ＝０〜７）入力とし、その他は、上述と同様とすることによっても実現できる。その場合の、回路情報は、図２０に示すように、各入力部３０、４０、５０、６０およびＳ出力部７０を設定するようなものとすればよい。
【０１０６】
［先行ベース回路から減算（Ｘ−Ｙ）処理回路の再構成の説明］
この減算処理回路は、前述した加算処理回路の第１の例において、Ｙ入力部４０の反転制御信号ＳＥＬを、「１」として、減算数Ｙを反転したものを、論理セル８１に出力するように構成すればよい。
【０１０７】
すなわち、この減算処理回路の場合も、８ビット×８ビットの演算を考えると、２の補数による減算を行うために、加算処理回路の場合の論理セル８１と同じ構造で、ｙｊ  を反転させ、Ｃｉｎ入力部５０の初期値に、０００００００１を入力すればよい。この場合の回路情報は、図２１に示すように、各入力部３０、４０、５０、６０および出力部７０を設定するようなものとなる。
【０１０８】
なお、Ｘ入力部３０を、前述したＹ入力部４０と同様に、反転制御回路を含む構成として、ｘｉを反転させ、Ｃｉｎ入力部５０の初期値に、０００００００１を入力すれば、Ｙ−Ｘの減算器を実現できる。このときには、回路情報により、図２２に示すように、各入力部３０、４０、５０、６０およびＳ出力部７０が設定される。
【０１０９】
［第２の実施の形態：ＬＵＴ保持で制御線変更による演算モード切り替え付きの加減乗除算］
第１の実施の形態は、乗算、加算、減算の３つの演算を行なうようにする場合に、プログラマブル論理回路を用いて、高速に回路を再構成して演算を実行する場合の例であるが、この第２の実施の形態は、上記の３演算に加えて、除算を行なえるようにした場合である。
【０１１０】
この第２の実施の形態の場合の先行ベース回路の例を図２３に示す。すなわち、この第２の実施の形態においては、先行ベース回路は、第１の実施の形態の場合と同様のＸ入力部３０、Ｙ入力部４０、Ｃｉｎ入力部５０、Ｐｉｎ入力部６０の４つの入力部、Ｓ出力部７０、演算セルから構成される演算回路部８０、加減乗算における桁上げを処理するためのＣＬＡ付きアダー９０を備えると共に、除算を行うための除算器最終段回路４０１と、加減乗算か除算かを選択するマルチプレクサ４０２と、マルチプレクサ４０２や演算回路部の論理セルを切り替え制御するための制御線４０３とから構成される。
【０１１１】
ＣＬＡ付きアダー９０の内部構成は、第１の実施の形態と同じである。また、除算器最終段回路４０１は、後に説明する。
【０１１２】
図２４に、ｎ＝８とした場合の先行ベース回路の演算回路部８０と、Ｓ出力部７０と、ＣＬＡ付きアダー９０と、除算器最終段回路４００と、マルチプレクサ５００の部分の構成を示す、また、図２５に、この第２の実施の形態の場合の演算回路部８０の一つの論理セル８２の構造を示す。
【０１１３】
この論理セル８２は、第１の実施の形態と同様に、アンドゲート８１１と全加算器８１２とを備えると共に、除算演算のための回路Ａおよび回路Ｂと、加減乗算の場合には全加算器８１２の出力を、除算の場合には、回路Ａ、回路Ｂの出力を出力するマルチプレクサ８３０、８３１とを備える。回路Ａは、インバータ８２１と、３個のアンドゲート８２２、８２３、８２４からなり、回路Ｂは、インバータ８２５と、４個のアンドゲート８２６、８２７、８２８、８２９からなる。
【０１１４】
マルチプレクサ８３０および８３１は、制御線４０３の値により切り換えられ、制御線４０３が「０」に設定されたときには、第１の実施の形態と同じ手順により、加算、減算、乗算を行うことができる。また、制御線４０３の値が「１」に設定された場合には、以下に説明するようにして除算を行う行なうことができる。この除算を行なう手順を、以下に説明する。
【０１１５】
［除算（Ｘ÷Ｙ）処理の説明］
まず、除算のアルゴリズム（引き戻し法）について簡単に述べる。初めに、よく知られている１０進数の割り算の手順を例に挙げると、図２６に示すような手順となる。
【０１１６】
これと同じ手順を、２進数で行うと次のようになる。
被除数Ｘを小数で２ｍ桁、除数Ｙを小数でｍ桁（Ｘ＜Ｙ）、Ｑを小数でｍ桁とする。剰余をＲとすれば、
Ｘ＝ＱＹ＋Ｒ
という関係が成り立つ。
【０１１７】
そして、次のような手順で割り算を実行する。
【０１１８】
（１）初期部分剰余ｒ０  を、ｒ０  ＝Ｘとする。
【０１１９】
（２）ｒ０  を２倍（左シフト）して、それからＹを引き、ｒ１  とする。
【０１２０】
ｒ１  ≧０→ｑ１  ＝１
ｒ１  ＜０→ｑ１  ＝０
この結果、ｒ１  ＝２ｒ０  −ｑ１  Ｙとなる。
【０１２１】
（３）ｒ１  を２倍して、それからＹを引き、ｒ２  とする。
【０１２２】
ｒ２  ≧０→ｑ２  ＝１
ｒ２  ＜０→ｑ２  ＝０
この結果、ｒ２  ＝２ｒ１  −ｑ２  Ｙとなる。
【０１２３】
（４）以下一般に
２ｒ（ｉ−１）  −Ｙ≧０→ｑｉ  ＝１
２ｒ（ｉ−１）  −Ｙ＜０→ｑｉ  ＝０
として、ｒｉ  ＝２ｒ（ｉ−１）  −ｑｉ  Ｙとする。
【０１２４】
すなわち、例をあげて示すと、図２７に示すようなものとなる。
【０１２５】
図２８に、プログラマブル論理回路が除算器として構成された場合の演算回路部８０の論理セル８２の中身の等価回路を示す。除算器の場合、被除数から除数を引くのに全減算器を構成させる必要がある。全減算器は、後述するように、全加算器においてキャリーに関する部分の入力の一つを反転することで実現できる。図２８において、ｂｉ  （ｊ−１）およびｂｉ  ｊ  は、ボローを意味している。
【０１２６】
また、全加算器におけるキャリーの部分は、全減算器ではボローに相当する。出力のマルチプレクサ８３０、８３１の制御入力が「０」の場合はキャリーを出力し、セル８２は全加算器として動作する。また、「１」の場合はボローを出力し、セル８２は全減算器として動作する。
【０１２７】
除算器最終段回路４０１からのフィードバック信号ｃｎｔが「０」の場合（被除数＞除数）、減算の結果が出力され、フィードバック信号ｃｎｔが「１」の場合（被除数＜除数）、論理セル８２内で減算は行わずに、入力された被除数がそのまま出力される。図２５および図２８において、各文字の添え字であるｉは桁を表し、ｊはセルを通って計算された回数と桁を表す。
【０１２８】
ここで、被除数Ｘ、除数Ｙ、商Ｑ、剰余Ｒのそれぞれは、図２９に示すようなものとする。図３０に、ｍ＝８の場合の除算器アレイを示す。この場合のＸ入力部３０、Ｙ入力部４０、Ｃｉｎ入力部５０（あるいはボロー入力部）、Ｐｉｎ入力部６０、およびＳ出力部７０のそれぞれは、回路情報により、図３１に示すように設定される。
【０１２９】
また、図３０において、破線で囲まれた部分は図２３と図２４で示した除算器最終段回路４０１の構成である。
【０１３０】
［第３の実施の形態：結線保持でＬＵＴ（ルックアップテーブル）変更による演算モード切り替え付きの加減乗除算］
第２の実施の形態では、制御線４０３の値を変更することにより、演算モードを切り替えた。この第３の実施の形態では、先行ベース回路の構造は殆ど変更されないが、ルックアップテーブルを書き換えることにより、論理セル内の全加算器部（ＦＡ：Ｆｕｌｌ  Ａｄｄｅｒ）と全減算器部（ＦＳ：Ｆｕｌｌ  Ｓｕｂｔｒａｃｔｏｒ）の切り替えを行なうと共に、除算器最終段回路４０１からのフィードバック無しの場合（加減乗算）と、フィードバック有り（除算）の場合とを切り換えることにより、加減乗算と除算の演算切替を行なうようにする。
【０１３１】
図３２に、この第３の実施の形態の場合における先行ベース回路の演算回路部の論理セル８４の構造を示す。これは、アンドゲート８１１と、第１のルックアップテーブル８４１と、第２のルックアップテーブル８４２とで構成される。第１のルックアップテーブル８４１は、全加算器部または全減算器部を構成する。また、第２のルックアップテーブル８４２は、除算器最終段回路４０１からのフィードバック無しの場合の回路部またはフィードバック有りの場合の回路部を構成する。
【０１３２】
［加減乗算を行う場合］
この場合、論理セル８４内の第１のルックアップテーブル８４１には、全加算器の構成となるテーブル情報を書き込むとともに、ルックアップテーブル８４２にはフィードバック無し（ＮＦＢ）の場合の出力のテーブル情報を書き込む。
【０１３３】
まず、第１のルックアップテーブル８４１による全加算器（Ｘ＋Ｙを行なう）の構成について説明する。
【０１３４】
この場合、ルックアップテーブルで構成される全加算器８４１の入出力の各変数が図３３に示すようなものである場合、それぞれの変数は、図３２の論理セル８４の構成において示した変数とは、それぞれ次のように対応する。すなわち、Ｘはｐ（ｉ＋１）（ｊ−１）に、Ｙはｙｊ  に、Ｓ’はｐｉ  ｊ  ’に、Ｃｉｎはｃｉ  （ｊ−１）に、そしてＣｏｕｔ  はｃｉ  ｊ  に対応する。なお、Ｃｉｎは下位から桁上げされるキャリー、Ｃｏｕｔ  は桁上げするキャリーの出力である。
【０１３５】
ルックアップテーブルとしての全加算器８４１に書き込まれる入力（Ｘ，Ｙ，Ｃｉｎ）対出力（Ｓ’，Ｃｏｕｔ  ）の真理値表のテーブルデータを、図３４に示す。この場合の出力Ｓ’とＣｏｕｔ  は、図３５に示す式で表される。なお、図３５の式で、Ｘ，Ｙ，Ｃｉｎにオーバーバーが付されたものは、Ｘ，Ｙ，Ｃｉｎの反転値を示している。
【０１３６】
次に、第２のルックアップテーブル８４２について考えるに、この場合には、この第２のルックアップテーブル８４２は、フィードバック無しの場合の回路構成となる。第２のルックアップテーブル８４２の入力は、図３２に示したように、ｃｎｔ，Ｘ，Ｓ’＝ｐｉ  ｊ  ’であり、出力はＳ（図３２ではｐｉ  ｊ  に対応）である。
【０１３７】
この場合に、第２のルックアップテーブル８４２に書き込まれる入力（ｃｎｔ，Ｘ，Ｓ’）対出力（Ｓ）の真理値表のテーブルデータを、図３６に示す。この図３６から判るように、第２のルックアップテーブル８４２では、変数ｃｎｔ，Ｘの値に関わらず、出力Ｓ’の値が出力Ｓにそのまま伝えられている（Ｓ’＝Ｓ）。
【０１３８】
以上のようにして、加・減・乗算の演算の場合には、図３４と図３６の真理値表のテーブルデータが、それぞれ第１および第２のルックアップテーブル８４１および８４２に書き込まれる。
【０１３９】
［除算を行う場合］
除算の場合も加・減・乗算の場合と同様に考える。論理セル８４セル内の第１のルックアップテーブル８４１と第２のルックアップテーブル８４２には、全減算器と、フィードバック有りの場合のテーブルデータを書き込む。
【０１４０】
まず、第１のルックアップテーブル８４１による全減算器部（Ｘ−Ｙを行う）の構成について考える。
【０１４１】
この場合、ルックアップテーブルで構成される全減算器８４２の入出力の各変数が図３７に示すようなものである場合、それぞれの変数は、図３２の論理セル８４の構成において示した変数とは、それぞれ次のように対応する。すなわち、Ｘはｐ（ｉ＋１）（ｊ−１）に、Ｙはｙｊ  に、Ｓ’はｐｉ  ｊ  ’に、Ｂｉｎはｃｉ  （ｊ−１）に、Ｂｏｕｔ  はｃｉ  ｊ  に対応する。なお、ここで、Ｂｉｎは下位から桁上げされるボロー、Ｂｏｕｔ  は桁上げするボローの出力である。
【０１４２】
ルックアップテーブルとしての全減算器８４１に書き込まれる入力（Ｘ，Ｙ，Ｂｉｎ）対出力（Ｓ’，Ｂｏｕｔ  ）の真理値表のテーブルデータを、図３８に示す。この場合の出力Ｓ’とＣｏｕｔ  は、図３９に示す式で表される。
【０１４３】
この図３９の全減算器の場合の式を、図３５の全加算器のときの式と比べると、Ｂｏｕｔ  の式の右辺のＸが、反転されたＸに変換されただけであることが分かる。
【０１４４】
次に、第２のルックアップテーブル８４２について考えるに、この場合には、この第２のルックアップテーブル８４２は、フィードバック有りの回路構成となる。
【０１４５】
この場合に、第２のルックアップテーブル８４２に書き込まれる入力（ｃｎｔ，Ｘ，Ｓ’）対出力（Ｓ）の真理値表のテーブルデータを図４０に示す。すなわち、除算演算では、フィードバック信号ｃｎｔの値により出力がＳ変わる。
【０１４６】
フィードバック信号ｃｎｔが「０」の場合は、全減算器８４１の演算結果Ｓ’を出力Ｓにそのまま出力する。一方、フィードバック信号ｃｎｔが「１」の場合は、Ｓ’の値に関わらず、Ｘの値をＳにそのまま伝える。
【０１４７】
以上のようにして、除算の演算の場合には、図３８と図４０の真理値表のテーブルデータが、それぞれ第１および第２のルックアップテーブル８４１および８４２に書き込まれる。
【０１４８】
こうして、第２の実施の形態の場合には、論理セル８４に第１のルックアップテーブル８４１と第２のルックアップテーブル８４２とを図３２に示すような結線により形成することにより、先行ベース回路を形成し、前記第１および第２のルックアップテーブル８４１、８４２のテーブルデータを書き換えることにより、加・減・乗算の演算を行なう処理回路の場合と、除算の演算を行なう処理回路の場合とを、それぞれ再構成することができる。テーブルデータの書換のみで、それぞれの演算処理回路を実現できるので、再構成時間を短縮化することができる。
【０１４９】
［第４の実施の形態］
以上の実施の形態は、図７や図２３に示した先行ベース回路が、プログラマブル論理回路１０４に形成されて、プログラマブル論理回路１０４が、加減乗除の演算回路に、順次に切り換え構成される場合として説明したが、プログラマブル論理回路が回路規模が大きい場合には、図７や図２３に示した先行ベース回路の複数個を、プログラマブル論理回路上に形成しておくことができる。
【０１５０】
そして、形成した各先行ベース回路を、加減乗除のいずれの演算回路として用いるか回路情報により設定すると共に、それらの複数個の先行ベース回路同士の接続を、回路情報により設定することにより、種々の処理回路を、先行ベース回路の部分を書き換えることなく、短時間に順次に再構成することができる。
【０１５１】
この第４の実施の形態は、上述の点を考慮したもので、この第４の実施の形態では、前述したような先行ベース回路の複数個を、先行ベース回路とすることにほぼ等しい。そして、この先行ベース回路を基に、わずかな回路再構成によって複数の演算処理回路を再構成することができる。
【０１５２】
この第４の実施の形態では、演算処理に先立ち、図４１に示す先行ベース回路を、プログラマブル論理回路に構成する。
【０１５３】
図４１の例の先行ベース回路は、前述の実施の形態の場合と同様に、８ビットデータを処理するよう構成されている。図４１に示すように、この第４の実施の形態の先行ベース回路としては、上述の第１〜第３の実施の形態で説明したような演算セルを８×８セル使った１２個のセルアレイ２０００、２００１、２００２、２００３、２００４、２００５、２００６、２００７、２００８、２００９、２０１０、２０１１と、入力レジスタ３００、３０１、３０２、３０３、３０４、３０５、３０６、３０７、３０８、３０９、３１０、３１１および３３０、３３１、３３２と、出力回路４１０、４１１、４１２、４１３、４１４、４１５、４１６、４１７、４１８、４１９、４２０、４２１と、出力レジスタ４３０、４３１、４３２、４３３、４３４、４３５、４３６、４３７、４３８、４３９、４４０、４４１と、部分積の初期値を設定する回路５００、５０１、５０２、５０３、５０４、５０５、５０６、５０７、５０８、５０９、５１０、５１１とから構成されている。
【０１５４】
入力レジスタ３００、３０１、３０２、３０３および入力レジスタ３３０、３３１、３３２は、それぞれ３段のシフトレジスタで構成されている。セルアレイ２０００、２００１、２００２、２００３には、３段の入力レジスタ３００、３０１、３０２、３０３の出力がそれぞれ入力されている。
【０１５５】
また、１段の入力レジスタ３０４、３０５、３０６、３０７、３０８、３０８、３０９、３１０、３１１の出力は、セルアレイ２００４、２００５、２００６、２００７、２００８、２００９、２０１０、２０１１の入力に接続されている。
【０１５６】
また、入力レジスタ３３０は、セルアレイ２０００、２００１、２００２、２００３のそれぞれの他方の入力に共通に接続され、入力レジスタ３３１はセルアレイ２００４、２００５、２００６、２００７のそれぞれの他方の入力に共通に接続され、また、入力レジスタ３３２はセルアレイ２００８、２００９、２０１０、２２２のそれぞれの他方の入力に共通に接続されている。
【０１５７】
セルアレイ２０００〜２０１１の出力回路４１０〜４２１は、出力レジスタ４３０〜４４１の入力に接続されている。
【０１５８】
部分積の初期値を設定する回路５００〜５１１は、出力レジスタ４３０〜４４１の出力をそれぞれ入力するよう配線されており、回路の部分的再構成によって切断または外部設定の選択ができる。
【０１５９】
（演算処理例１）
図４１の先行ベース回路を用いて、わずかな回路再構成のみによって行う演算処理の第１の例として、図４６に示す３行３列の式（２）の行列演算を行う場合について説明する。この行列演算は、例えばカラー画像をＲＧＢからＹＵＶ色空間に変換する場合などに利用される。
【０１６０】
この行列演算処理は、前述の第１、第２あるいは第３の実施の形態のいずれかにおける先行ベース回路についての、乗算回路および加算回路への設定（回路情報による部分的再構成）を、図４２の先行ベース回路の各セルアレイおよびその周辺の入出力部の再構成を用いることで実現できる。以下の説明においては、第１の実施の形態に基づいた場合として説明する。
【０１６１】
すなわち、第１の例では、図４２の先行ベース回路の各セルアレイおよびその周辺の入出力部を、前述の第１の実施の形態の先行ベース回路を、前述の第１の実施の形態に基づく乗算機能および加算機能に切り替えて用いる。
【０１６２】
図４１の先行ベース回路は、図４２に示すように、部分再構成される。すなわち、セルアレイ２０００、２００１、２００２は、乗算器として構成するように、部分積初期値設定回路５００、５０１、５０２に、
「００００００００００００００００」
を設定し、キャリー初期値回路（図示せず）に、
「００００００００」
を設定する。
【０１６３】
入力レジスタ３００、３０１、３０２は、巡回型シフトレジスタとして部分再構成する。また、出力レジスタ４３０、４３１、４３２の出力は、部分積初期値設定回路５００、５０１、５０２に、それぞれ入力するよう再構成する。
【０１６４】
図４６の行列演算式（２）の係数行列の各項は、あらかじめ、レジスタ３００にａ１１、ａ１２、ａ１３の値が、レジスタ３０１にａ２１、ａ２２、ａ２３の値が、レジスタ３０１にａ３１、ａ３２、ａ３３の値が、それぞれ格納される。
【０１６５】
入力データＸ１、Ｘ２、Ｘ３は、それぞれ、レジスタ３３０に一時的に格納される。この時点で、乗算器セルアレイ２０００の出力にａ１１×Ｘ１、乗算器２００１の出力にａ２１×Ｘ１、乗算器２００２の出力にａ３１×Ｘ１、の演算結果がそれぞれ出力される。
【０１６６】
次にクロックを動作させて、レジスタ内容をシフトする。すなわち、乗算器セルアレイ２０００にはａ１２、セルアレイ２００１にはａ２２、セルアレイ２００２にはａ３２、が入力される。一方、レジスタ３３０には、Ｘ２の内容がシフト動作により出力されて、セルアレイ２０００、２００１、２００２に入力される。
【０１６７】
出力レジスタ４３０、４３１、４３２には前回の演算結果が保持されており、部分積初期値設定回路５００、５０１、５０２に入力されているので、今回の乗算結果と加算される。すなわち各セルアレイ２０００、２００１、２００２の出力は、
（ａ１１×Ｘ１＋ａ１２×Ｘ２）、
（ａ２１×Ｘ１＋ａ２２×Ｘ２）、
（ａ３１×Ｘ１＋ａ３２×Ｘ２）
となる。
【０１６８】
同様にして、次のクロックで、セルアレイ２０００にはａ１３、セルアレイ２００１にはａ２３、セルアレイ２００２にはａ３３、がそれぞれ入力され、一方、レジスタ３３０にはＸ３の内容がシフト動作により出力されて、セルアレイ２０００、２００１、２００２に入力される。
【０１６９】
部分積初期値設定回路５００、５０１、５０２には前回の演算結果が入力されるので、今回の乗算結果と加算されて、
（ａ１１×Ｘ１＋ａ１２×Ｘ２＋ａ１３×Ｘ３）、
（ａ２１×Ｘ１＋ａ２２×Ｘ２＋ａ２３×Ｘ３）、
（ａ３１×Ｘ１＋ａ３２×Ｘ２＋ａ３３×Ｘ３）
が出力され、式（２）の行列演算が完了する。
【０１７０】
（演算処理例２）
次に、図４１の先行ベース回路を用いて、わずかな回路再構成のみによって行う演算処理の第２の例として、前述の第１の例である行列演算から、図４７の式（３）および図４８の式（４）に示す画像フィルタの一種であるガウシアン（Ｇａｕｓｓｉａｎ）フィルタ演算を行う場合について説明する。ガウシアンフィルタは、画像のノイズ除去の目的で、画像処理分野で多用されるローパスフィルタの一種である。
【０１７１】
この第２の例の演算処理は、前述した第１、第２あるいは第３の実施の形態のいずれかにおける先行ベース回路についての、乗算回路および加算回路への設定（回路情報による部分的再構成）を用いることで実現できる。以下の説明においては、第１の実施の形態に基づいた場合として説明する。
【０１７２】
すなわち、第２の例では、図４２の先行ベース回路の各セルアレイおよびその周辺の入出力部を、前述の第１の実施の形態の先行ベース回路を、前述の第１の実施の形態に基づく乗算機能および加算機能に切り替えて用いる。
【０１７３】
この第２の例では、第１の例で再構成した先行ベース回路に、さらに、図４３のように次の部分を再構成する。すなわち、出力レジスタ４３０の出力は、部分積初期設定回路５０５にも入力するよう再構成し、出力レジスタ４３１の出力は、入力レジスタ３０５にも入力されるよう再構成する。また、出力レジスタ４３２の出力は、部分積初期設定回路５０７にも入力するよう再構成し、出力レジスタ４３３の出力は、入力レジスタ３０７にも入力されるよう再構成する。さらに、出力レジスタ４３５の出力は部分積初期設定回路５１０へ、出力レジスタ４３７の出力は入力レジスタ３１０へ、それぞれ入力されるよう再構成する。
【０１７４】
これらの再構成は、あらかじめ先行ベース回路で設けておいた配線に対して所望の接続になるように、デマルチプレクサ等の回路を再設定する構成データを部分的に書き換えることで実現している。
【０１７５】
さらに、入力レジスタ３００、３０１、３０２、３０３は、通常のシフトレジスタに部分再構成を行い、入力レジスタ３３０は巡回型シフトレジスタへ、入力レジスタ３３１、３３２は保持のみを行うレジスタに、再構成する。
【０１７６】
入力レジスタ３３０には、データとして、「０００００００１」、「００００００１０」、「０００００１００」を固定値としてあらかじめ設定し、クロック動作によって巡回させながら、セルアレイ２０００、２００１、２００２、２００３に共通に入力させる。
【０１７７】
入力レジスタ３３１、３３２には固定値として、「０００００００１」が保持されている。ここでは、レジスタに固定値を保持する例を示したが、レジスタではなく、ゲートを用いた論理値出力回路で再構成してもよい。
【０１７８】
以上のように再構成した回路を用いてガウシアンフィルタ処理を行う動作を説明する。
【０１７９】
画像データは、入力レジスタ３００〜３０３に保持される。順序は、入力レジスタ３００に、Ｐｘ−１，ｙ−１  ，Ｐｘ−１，ｙ  ，Ｐｘ，ｙ  の順で保持され、入力レジスタ３０１に、Ｐｘ−１，ｙ＋１  ，Ｐｘ，ｙ−１  ，０の順で保持され、入力レジスタ３０２に、Ｐｘ＋１，ｙ−１  ，Ｐｘ，ｙ＋１  ，０の順で保持され、入力レジスタ３０３に、Ｐｘ＋１，ｙ＋１  ，Ｐｘ＋１，ｙ  ，０の順で保持される。
【０１８０】
まず最初に、入力レジスタ３３０の出力が「０００００００１」であるので、セルアレイ２０００、２００１、２００２、２００３の出力には、入力レジスタ３００、３０１、３０２，３０３の値がそのまま出力される。この値は部分積初期設定回路５００、５０１、５０２、５０３にそれぞれ入力される。
【０１８１】
次のクロック動作で、入力レジスタ３３０の出力は「００００００１０」となるため、セルアレイ２０００、２００１、２００２、２００３の出力は、入力レジスタ３００、３０１、３０２、３０３の出力に「２」を乗じた値となり、さらに、部分積初期設定回路５００、５０１、５０２、５０３に入力されていた、前回のクロック動作での演算結果と加算されて、出力レジスタ４３０、４３１、４３２、４３３に出力される。
【０１８２】
同様にして、次のクロックでは入力レジスタ３３０の出力が「０００００１００」となるため、セルアレイ２０００、２００１、２００２、２００３の出力は、入力レジスタ３００、３０１、３０２、３０３の出力に「４」を乗じた値となって、前回クロックでの演算結果と加算されて、出力レジスタ４３０、４３１、４３２、４３３に出力される。
【０１８３】
このようにして、３回のクロック動作で、
出力レジスタ４３０には、４×Ｐｘ，ｙ  ＋２×Ｐｘ−１，ｙ  ＋Ｐｘ−１，ｙ−１  、
出力レジスタ４３１には、２×Ｐｘ，ｙ−１  ＋Ｐｘ−１，ｙ＋１  、
出力レジスタ４３２には、２×Ｐｘ，ｙ＋１  ＋Ｐｘ＋１，ｙ−１  、
出力レジスタ４３３には、２×Ｐｘ＋１，ｙ  ＋Ｐｘ＋１，ｙ＋１  、
が出力される。
【０１８４】
次に、入力レジスタ３３１、３３２は「０００００００１」なので、セルアレイ２００５、２００７、２０１０は加算器として動作するため、前記３つのセルアレイ２００５、２００７、２０１０によって、出力レジスタ４３０、４３１、４３２、４３３の総和が演算処理される。
【０１８５】
最後の出力レジスタ４４０の下位４ビットを無視して外部にデータ出力することで、１／１６演算を行ったことと同様の処理になり、ガウシアンフィルタ処理が完了する。
【０１８６】
（演算処理例３）
次に、図４１の先行ベース回路を用いて、わずかな回路再構成のみによって行う演算処理の第３の例として、第２の例であるガウシアンフィルタ演算から、図４９の式（５）に示す画像フィルタの一種であるラプラシアン（Ｌａｐｌａｃｉａｎ）フィルタ演算を行う場合について説明する。ラプラシアンフィルタは、画像の輪郭を検出する目的で、画像処理分野で多用されるハイパスフィルタの一種である。
【０１８７】
このラプラシアンフィルタ処理は、前述の第１、第２あるいは第３の実施の形態のいずれかにおける先行ベース回路についての乗算回路および加算回路および減算回路への設定（回路情報による部分的再構成）を、図４２の先行ベース回路の各セルアレイおよびその周辺の入出力部の再構成を用いることで実現できる。以下の説明においては、第１の実施の形態に基づいた場合として説明する。
【０１８８】
すなわち、第３の例では、画像フィルタの一種であるＬａｐｌａｃｉａｎフィルタ処理を行うために、前述の第１の実施の形態における先行ベース回路を、前述の第１の実施の形態に基づく乗算機能および加算機能および減算機能に切り替えて用いる。
【０１８９】
この第３の例では、第２の例で再構成した先行ベース回路に、さらに、図４４に示すように部分的に再構成する。
【０１９０】
すなわち、出力レジスタ４３０の出力は部分積初期設定回路５０５に入力するように再構成し、出力レジスタ４３１の出力は入力レジスタ３０５に入力されるように再構成する。さらに、出力レジスタ４３５の出力は入力レジスタ３０９へ入力されるように再構成する。この再構成は、あらかじめ先行ベース回路で設けておいた配線に対して所望の接続になるように、デマルチプレクサ等の回路を再設定する回路構成データを部分的に書き換えることで実現している。
【０１９１】
さらに、入力レジスタ３００、３０１は通常のシフトレジスタに部分再構成を行う。また、セルアレイ２００９で減算を行うように、入力レジスタ３０９の出力は制御線（図示せず）を制御して、入力信号の反転信号が出力されるように設定し、キャリー初期値設定回路（図示せず）には「０００００００１」を設定する。
【０１９２】
入力レジスタ３３０には、データとして、「０００００００１」を固定値としてあらかじめ設定し、セルアレイ２０００、２００１に共通に入力される。
【０１９３】
入力レジスタ３３１、３３２には、固定値として、「０００００００１」が保持されている。ここではレジスタに固定値を保持する例を示したが、レジスタではなく、ゲートを用いた論理値出力回路で再構成してもよい。
【０１９４】
以上のように再構成した回路を用いてラプラシアンフィルタ処理を行う動作を説明する。
【０１９５】
画像データは、入力レジスタ３００にＰｘ−１，ｙ  、入力レジスタ３０１にＰｘ，ｙ＋１  が保持され、部分積初期設定回路５００にＰｘ，ｙ−１  、部分積初期設定回路５０１にＰｘ＋１，ｙ  が保持される。さらに、部分積初期設定回路５０９にＰｘ，ｙ  を２ビット上位にシフトしたものを保持する。
【０１９６】
まず、最初に入力レジスタ３３０の出力が「０００００００１」であるので、セルアレイ２０００の出力には、入力レジスタ３００と部分積初期値設定回路５００の値を加算した結果（Ｐｘ−１，ｙ  ＋Ｐｘ，ｙ−１  ）が出力され、それが、部分積初期値設定回路５０５に入力される。同様に、セルアレイ２００１の出力には、入力レジスタ３０１と部分積初期値設定回路５０１の値を加算した結果（Ｐｘ，ｙ＋１  ＋Ｐｘ＋１，ｙ  ）が出力され、それが入力レジスタ３０５に入力される。
【０１９７】
次に、入力レジスタ３３１には「０００００００１」が設定されているので、セルアレイ２００５は加算器として働き、セルアレイ２００５の出力には、部分積初期値設定回路５０５と入力レジスタ３０５の値が加算された結果（Ｐｘ−１，ｙ  ＋Ｐｘ，ｙ−１  ＋Ｐｘ，ｙ＋１  ＋Ｐｘ＋１，ｙ  ）が出力される。
【０１９８】
次に、セルアレイ２００９は減算器として働き、さらに、部分積初期値設定回路５０９には、Ｐｘ，ｙ  を２ビット上位にシフトした値が設定されているので、セルアレイ２００９からは、｛４×Ｐｘ，ｙ  −（Ｐｘ−１，ｙ  ＋Ｐｘ，ｙ−１  ＋Ｐｘ，ｙ＋１  ＋Ｐｘ＋１，ｙ  ）｝の演算結果が出力され、ラプラシアンフィルタ処理が完了する。
【０１９９】
（演算処理例４）
次に、図４１の先行ベース回路を用いて、わずかな回路再構成のみによって行う演算処理の第４の例として、上述の第３の例であるラプラシアンフィルタ演算から、画像の量子化等に用いられる除算処理を行う場合について説明する。この処理は、図４２の先行ベース回路の各セルアレイおよびその周辺の入出力部の設定（回路情報による部分再構成）に、前述の第２あるいは第３の実施の形態の先行ベース回路についての除算回路への設定を用いることで実現できる。
【０２００】
ＪＰＥＧ画像圧縮アルゴリズムでは、原画像Ｐｕ，ｖを離散コサイン変換（ＤＣＴ）してＤＣＴ係数Ｓｕ，ｖ  を求め、量子化テーブルＱｕ，ｖ  によって量子化されたＤＣＴ係数を得、ハフマン符号化方式等によって符号化して圧縮画像を生成する。
【０２０１】
量子化処理部分は、例えば８×８画素の画像ごとに、図５０の式（６）に示すような量子化テーブルＱｕ，ｖ  を用いるもので、ＤＣＴ係数の各要素に対応して、Ｑｕ，ｖ  の値で除算を行う。
【０２０２】
この第４の例では、第３の例で再構成した先行ベース回路に、さらに、図４５に示すように、部分的に再構成する。すなわち、セルアレイ２０００、２００４、２００８が除算器として動作するように、制御線（図示せず）を設定する。入力レジスタ３００、３３０、３３１、３３２は、通常のシフトレジスタに部分再構成を行う。
【０２０３】
入力レジスタ３３０にはデータとして、「０００００００１」を固定値としてあらかじめ設定し、セルアレイ２０００、２００１に共通に入力する。
【０２０４】
以上のように再構成した回路を用いて量子化処理を行う動作を説明する。なお、説明は８×８画素単位で行うものとする。
【０２０５】
ＤＣＴ係数に変換された画像データは、入力レジスタ３００にＳ０，０  、入力レジスタ３０４にＳ１，０  、入力レジスタ３０８にＳ２，０  、が保持され、入力レジスタ３３０にＱ０，０  、入力レジスタ３３１にＱ１，０  、入力レジスタ３３２にＱ２，０  、が保持される。
【０２０６】
セルアレイ２０００、２００４、２００８は除算器として構成されているので、出力レジスタ４３０、４３４、４３８には、それぞれ量子化されたＤＣＴ係数である、ｒ０，０  、ｒ１，０  、ｒ２，０  、が同時に出力される。
【０２０７】
次に、入力レジスタ３００にＳ０，１  、入力レジスタ３０４にＳ１，１  、入力レジスタ３０８にＳ２，１  、が保持され、入力レジスタ３３０にＱ０，１  、入力レジスタ３３１にＱ１，１  、入力レジスタ３３２にＱ２，１  、が保持され、同様に除算が行われて、出力レジスタ４３０、４３４、４３８には、それぞれ量子化されたＤＣＴ係数である、ｒ０，１  、ｒ１，１  、ｒ２，１  、が同時に出力される。
【０２０８】
このようにして、ｒ０，０  〜ｒ０，７  、ｒ１，０  〜ｒ１，７  、ｒ２，０  〜ｒ２，７  が並列に時系列的に出力される。
【０２０９】
さらに、同じようにして入力レジスタ３００にＳ３，０  〜Ｓ３，７  、入力レジスタ３０４にＳ４，０  〜Ｓ４，７  、入力レジスタ３０８にＳ５，０  〜Ｓ５，７  、入力レジスタ３３０にＱ３，０  〜Ｑ３，７  、入力レジスタ３３１にＱ４，０  〜Ｑ４，７  、入力レジスタ３３２にＱ５，０  〜Ｑ５，７  、を設定して、出力レジスタ４３０、４３４、４３８にはそれぞれ量子化されたＤＣＴ係数、ｒ３，０  〜ｒ３，７  、ｒ４，０  〜ｒ４，７  、ｒ５，０  〜ｒ５，７  が同時に出力される。ｒ６，０  〜ｒ６，７  、ｒ７，０  〜ｒ７，７  、についても同様の処理を行い、８×８画素ブロックの量子化処理が完了する。
【０２１０】
【発明の効果】
以上説明したように、この発明によれば、従来のマルチコンテキスト技術のように余分な回路領域を必要とせずに、また、従来のスケルトン回路技術のように再構成される回路に明白な共通部分を必要とせずに、より多様な回路構成に対して先行ベース回路を提供することで、回路の再構成時間を短縮し、その結果、回路再構成時間を含めた総処理時間で比べても、ソフトウエア処理に比べて処理時間の短いハードウエア処理を実現できる。
【０２１１】
その結果、キャッシュロジック技術によるリコンフュギュラブルコンピューティング技術を用いた、高速で小型化された情報処理システムを実現することができる。
【図面の簡単な説明】
【図１】この発明によるプログラマブル論理回路の再構成方法を説明するための図である。
【図２】この発明によるプログラマブル論理回路の再構成方法に用いられる回路情報の説明のための図である。
【図３】この発明による情報処理システムの実施の形態のブロック図である。
【図４】プログラマブル論理回路の構成例を説明するための図である。
【図５】プログラマブル論理回路の構成例を説明するための図である。
【図６】この発明による情報処理システムの実施の形態における処理の流れを示すフローチャートである。
【図７】この発明によるプログラマブル論理回路の再構成方法に用いられる先行ベース回路の一例を示す図である。
【図８】図７の先行ベース回路の一部の回路構成例を示す図である。
【図９】図７の先行ベース回路の一部の他の回路構成例を示す図である。
【図１０】図７の先行ベース回路の一部の回路構成例を示す図である。
【図１１】図７の先行ベース回路の演算回路部を中心とした具体構成例を説明する図である。
【図１２】図７の先行ベース回路の論理セルの構成例を示す図である。
【図１３】図７の先行ベース回路に用いるハーフアダーの構成を説明するための図である。
【図１４】図７の先行ベース回路のＣＬＡ付きアダーの構成例を示す図である。
【図１５】第１の実施の形態における乗算処理を説明するための図である。
【図１６】第１の実施の形態において、先行ベース回路を部分再構成して乗算演算回路を形成するための回路情報を説明するための図である。
【図１７】第１の実施の形態において、先行ベース回路の論理セルを全加算器とすることを説明するための図である。
【図１８】第１の実施の形態において、先行ベース回路を部分再構成して加算器として動作させたときの構成例を説明する図である。
【図１９】第１の実施の形態において、先行ベース回路を部分再構成して加算回路を形成するための回路情報を説明するための図である。
【図２０】第１の実施の形態において、先行ベース回路を部分再構成して加算回路を形成するための回路情報の他の例を説明するための図である。
【図２１】第１の実施の形態において、先行ベース回路を部分再構成して減算回路を形成するための回路情報の他の例を説明するための図である。
【図２２】第１の実施の形態において、先行ベース回路を部分再構成して減算回路を形成するための回路情報の他の例を説明するための図である。
【図２３】この発明の第２の実施の形態における先行ベース回路の構成例を示す図である。
【図２４】図２３の先行ベース回路の演算回路部を中心とした具体構成例を説明する図である。
【図２５】図２３の先行ベース回路の論理セルの構成例を示す図である。
【図２６】除算演算処理を説明するための図である。
【図２７】２進法による除算演算処理を説明するための図である。
【図２８】第２の実施の形態における除算処理に対応する演算セルの構成を説明する図である。
【図２９】第２の実施の形態における除算処理の説明のために用いる図である。
【図３０】第２の実施の形態における除算処理に対応する演算回路部の構成例を説明する図である。
【図３１】第２の実施の形態において、除算処理回路を構成する際の回路情報を説明するための図である。
【図３２】第３の実施の形態における除算処理に対応する論理セルをの構成例を説明する図である。
【図３３】第３の実施の形態における加減算処理を説明するための図である。
【図３４】第３の実施の形態における加減算処理を説明するための図である。
【図３５】第３の実施の形態における加減算処理を説明するための図である。
【図３６】第３の実施の形態における加減算処理を説明するための図である。
【図３７】第３の実施の形態における除算処理を説明するための図である。
【図３８】第３の実施の形態における除算処理を説明するための図である。
【図３９】第３の実施の形態における除算処理を説明するための図である。
【図４０】第３の実施の形態における除算処理を説明するための図である。
【図４１】第４の実施の形態における先行ベース回路の一例を示す図である。
【図４２】第４の実施の形態において、行列演算を行うように再構成された先行ベース回路を説明するための図である。
【図４３】第４の実施の形態において、ガウシアンフィルタ処理を行うように再構成された先行ベース回路を説明するための図である。
【図４４】第４の実施の形態において、ラプラシアンフィルタ処理を行うように再構成された先行ベース回路を説明するための図である。
【図４５】第４の実施の形態において、量子化演算処理を行うように再構成された先行ベース回路を説明するための図である。
【図４６】行列演算処理を説明するための図である。
【図４７】ガウシアンフィルタ処理を説明するための図である。
【図４８】ガウシアンフィルタ処理を説明するための図である。
【図４９】ラプラシアンフィルタ処理を説明するための図である。
【図５０】量子化演算処理を説明するための図である。
【図５１】従来例としてのマルチコンテキスト技術を説明するための図である。
【図５２】従来例としてのスケルトン回路技術を説明するための図である。
【符号の説明】
１  共通回路部分（スケルトン回路に相当）
２  排他的全共通部分
３  排他的一部重なり部分
４  排他的でない非共通部分
５  先行ベース回路の回路情報
６Ａ〜６Ｃ  先行ベース回路との差分からなる回路情報
１０１  アプリケーションプログラム
１０２  ＣＰＵ
１０３  ハードウエア処理部
１０４  プログラマブル論理回路
２００  回路情報の記憶部
３０  Ｘ入力部
４０  Ｙ入力部
５０  Ｃｉｎ（桁上げ出力の初期値）入力部
６０  Ｐｉｎ（部分和出力の初期値）入力部
７０  出力部
８０  演算回路部
８１、８２、８４  論理セル
９０  ＣＬＡ付きアダー
４０１  除算器最終段回路
４０２  マルチプレクサ
４０３  制御線
８４１、８４２  ルックアップテーブル
２０００〜２０１１  演算セルアレイ
３００〜３１１  入力レジスタ
３３０〜３３２  入力レジスタ
４１０〜４２１  演算結果レジスタ
４３０〜４４１  出力レジスタ
５００〜５１１  部分積初期値設定回路
【図１】
0003558119.tif 000002
【図２】
0003558119.tif 000003
【図３】
0003558119.tif 000004
【図４】
0003558119.tif 000005
【図５】
0003558119.tif 000006
【図６】
0003558119.tif 000007
【図７】
0003558119.tif 000008
【図８】
0003558119.tif 000009
【図９】
0003558119.tif 000010
【図１０】
0003558119.tif 000011
【図１１】
0003558119.tif 000012
【図１２】
0003558119.tif 000013
【図１３】
0003558119.tif 000014
【図１４】
0003558119.tif 000015
【図１５】
0003558119.tif 000016
【図１６】
0003558119.tif 000017
【図１７】
0003558119.tif 000018
【図１８】
0003558119.tif 000019
【図１９】
0003558119.tif 000020
【図２０】
0003558119.tif 000021
【図２１】
0003558119.tif 000022
【図２２】
0003558119.tif 000023
【図２３】
0003558119.tif 000024
【図２４】
0003558119.tif 000025
【図２５】
0003558119.tif 000026
【図２６】
0003558119.tif 000027
【図２７】
0003558119.tif 000028
【図２８】
0003558119.tif 000029
【図２９】
0003558119.tif 000030
【図３０】
0003558119.tif 000031
【図３１】
0003558119.tif 000032
【図３２】
0003558119.tif 000033
【図３３】
0003558119.tif 000034
【図３４】
0003558119.tif 000035
【図３５】
0003558119.tif 000036
【図３６】
0003558119.tif 000037
【図３７】
0003558119.tif 000038
【図３８】
0003558119.tif 000039
【図３９】
0003558119.tif 000040
【図４０】
0003558119.tif 000041
【図４１】
0003558119.tif 000042
【図４２】
0003558119.tif 000043
【図４３】
0003558119.tif 000044
【図４４】
0003558119.tif 000045
【図４５】
0003558119.tif 000046
【図４６】
0003558119.tif 000047
【図４７】
0003558119.tif 000048
【図４８】
0003558119.tif 000049
【図４９】
0003558119.tif 000050
【図５０】
0003558119.tif 000051
【図５１】
0003558119.tif 000052
【図５２】
0003558119.tif 000053