(57)【特許請求の範囲】
【請求項１】
段方向と列方向にマトリクス状に構成された複数の論理回路部を備え、
所定の論理回路部からの演算出力が、次段に配置された論理回路部のうち一部の論理回路部に制限されて接続されるよう構成されると共に論理回路部が上位演算と下位演算を個別に実行し多倍長演算を行う演算処理回路であって、
前記下位演算を実行する所定の論理回路部がキャリー出力を備え、該キャリー出力が、該所定の論理回路部から２列以上離れた列に位置する上位演算論理回路部に接続するよう構成されることを特徴とする、演算処理回路。
【請求項２】
前記論理回路部からの演算出力を保持する状態保持部を更に備え、
論理回路部からの演算出力は、前記状態保持部を介して次段の論理回路部へ入力され、
前記所定の論理回路部からのキャリー出力が、該所定の論理回路部の次段に位置する論理回路部に接続するよう構成されることを特徴とする、請求項１記載の演算処理回路。
【請求項３】
段方向に構成された複数の論理回路部を備え、
所定の論理回路部からの演算出力が、前記複数の論理回路のうち、一部の論理回路部に制限されて接続されるよう構成されると共に論理回路部が上位演算と下位演算を個別に実行し多倍長演算を行う演算処理回路であって、
前記下位演算所定の論理回路部がキャリー出力を備え、該キャリー出力が、該所定の論理回路部から２列以上離れた列に位置する上位演算論理回路部に接続するよう構成されることを特徴とする、演算処理回路。
【請求項４】
前記所定の論理回路部からの演算出力が、次段に配置された論理回路部のうち前記所定の論理回路部からｐ列（但し、ｐは自然数）以内に配置された論理回路部に制限されて接続されるよう構成され、
前記キャリー出力が、該所定の論理回路部から（ｐ＋１）列以上離れた列に位置する論理回路部に接続するよう構成されることを特徴とする、請求項１又は２かに記載の演算処理回路。
【請求項５】
前記所定の論理回路部からの演算出力が、前記所定の論理回路部からｐ列（但し、ｐは自然数）以内に配置された論理回路部に制限されて接続されるよう構成され、
前記キャリー出力が、該所定の論理回路部から（ｐ＋１）列以上離れた論理回路部に接続するよう構成されることを特徴とする、請求項３に記載の演算処理回路。
【請求項６】
前記論理回路部は、該論理回路の外部から供給される設定データに従って演算機能の変更が可能であることを特徴とする、請求項１ないし５のいずれかに記載の演算処理回路。
【請求項７】
同一段に、ｎ×ｋ個（但し、ｎ、ｋは、２以上の整数）の論理回路部が配置され、
前記所定の論理回路部がキャリー出力を備え、該キャリー出力が、該所定の論理回路部からｋ列離れた列に位置する論理回路部に接続するよう構成されることを特徴とする、請求項１ないし６のいずれかに記載の演算処理回路。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、演算処理回路に関する。特に多倍長演算が可能な演算処理回路であり、ある論理回路から他の論理回路へのキャリー出力を有するものに関する。
【背景技術】
【０００２】
近年、アプリケーションに応じてハードウェアの動作を変更可能なリコンフィギュラブルプロセッサの開発が進められている。リコンフィギュラブルプロセッサを実現するためのアーキテクチャとしては、ＤＳＰ(Digital Signal Processor)や、ＦＰＧＡ(Field Programmable Gate Array)を用いる方法が存在する。 
【０００３】
ＦＰＧＡ（Field Programmable Gate Array）はＬＳＩ製造後に回路データを書き込んで比較的自由に回路構成を設計することが可能であり、専用ハードウェアの設計に利用されている。ＦＰＧＡは、論理回路の真理値表を格納するためのルックアップテーブル（ＬＵＴ）と出力用のフリップフロップからなる基本セルと、その基本セル間を結ぶプログラマブルな配線リソースとを含む。ＦＰＧＡでは、ＬＵＴに格納するデータと配線データを書き込むことで目的とする論理演算を実現できる。しかし、ＦＰＧＡでＬＳＩを設計した場合、ＡＳＩＣ（Application Specific IC）による設計と比べると、実装面積が非常に大きくなり、コスト高になる。そこで、ＬＳＩ内の演算回路の構成を動的に再構成することで、回路構成の再利用を図る方法が提案されている（例えば、特許文献１参照）。 
【０００４】
また、近年、ＡＬＵ(Arithmetic Logic Unit)と呼ばれる基本的な演算機能（演算機能とは、たとえば、加算や減算の機能である）を有する論理回路を段方向及び列方向にマトリック配置したＡＬＵアレイを用いたリコンフィギュラブル回路が提案されている（例えば、特許文献２、非特許文献１）。このリコンフィギュラブル回路では、ＡＬＵの機能を制御する命令セット及びＡＬＵ間の接続先を制御する接続データセットからなる構成情報が各ＡＬＵに設定されることにより、所望の演算処理回路として機能する。
【０００５】
ＡＬＵアレイによるリコンフィギュラブル回路では、ＦＰＧＡによるリコンフィギュラブル回路よりも実装サイズを小型化できる上、回路の再構成が高速に実行できるという利点がある。このため、各種の規格に対応した処理回路を１つのＬＳＩで実現できること、および新しい規格にもソフトウエアのアップデートにより即座に対応可能という利点がある。
【０００６】
図９は、特許文献２で開示されたリコンフィギュラブル回路４００の構成を示す図である。ａ１１、ａ１２、…、ａ１６、ａ２１、…、ａ２６、ａ３１、…、ａ３６はＡＬＵである。各ＡＬＵは、設定データに従って演算機能が設定される。例えば、設定データに従って、あるときは加算器、あるときは減算器、論理和演算器、論理積演算器、ビットシフト演算器などとして機能する。
【０００７】
また、リコンフィギュラブル回路４００は、ＡＬＵによる論理回路の集合体を複数備えた構造を有する。即ち、ａ１１、…、ａ１６による１段目の論理回路は集合体ｇ１を成し、ａ２１、…、ａ２６による２段目の論理回路は集合体ｇ２を成し、ａ３１、…、ａ３６による３段目の論理回路は集合体ｇ３を成す。
【０００８】
また、ＡＬＵによる演算の出力は、同列に配置された次段のＡＬＵと、その左右の列に配置されたＡＬＵに制限されるように構成されている。例えば、ａ２２に関して言えば、その演算出力は、ａ３１、ａ３２、ａ３３のみに接続される。このように、リコンフィギュラブル回路４００では、ＡＬＵによる演算出力の接続を、次段の同列のＡＬＵとその左右の列のＡＬＵに制限する（いわゆる接続制限のある回路構成とする）ことにより、回路規模の小型化を図っている。
【０００９】
図１０に、リコンフィギュラブル回路４００による演算の実行例を示す。これは、第１段に配置されたＡＬＵａ１３とＡＬＵａ１４からの出力（それぞれＡ、Ｂとする）を第２段に配置されたＡＬＵａ２３で加算（Ａ＋Ｂの演算を実行）して第３段に配置されたＡＬＵａ３３へ出力すると共に、ＡＬＵａ１３とＡＬＵａ１４からの出力を第２段に配置されたＡＬＵａ２４で減算（Ａ−Ｂの演算を実行）して第３段に配置されたＡＬＵａ３４へ出力するものである。
【特許文献１】特開平１０−２５６３８３号公報
【特許文献２】特開２００５−１８２６５４号公報
【非特許文献１】: 「情報家電向け小型リコンフィギュラブルデバイス」、三洋電機技報 VOL.37, No.2, MARCH 2006 通巻第77号
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上記のリコンフィギュラブル回路により処理回路を実現する場合、処理内容によっては、リコンフィギュラブル回路のＡＬＵが可能な演算ビット数を超える、多ビットの演算が必要になる場合がある。即ち、リコンフィギュラブル回路を用いた多倍長演算の実現が求められている。
【００１１】
多倍長演算とは、一般的には、例えば演算ビット幅が16ビットのＡＬＵを用いて、32ビットの演算（倍長演算）や48ビットの演算（３倍長演算）などを行うことをいう。加算演算における倍長演算は、ＡＬＵで行った加算のキャリーを、上位のＡＬＵに渡すことで実行できる。
【００１２】
多倍長演算を行うためには、特許文献２のリコンフィギュラブル回路４００を、図１１で示すリコンフィギュラブル回路３００のように変更することが、まず考えられる。このリコンフィギュラブル回路３００は、各ＡＬＵがキャリー出力cを有し、このキャリー出力は、左隣の列に位置するＡＬＵへ接続される。
【００１３】
図１２を参照して、図１１のリコンフィギュラブル回路３００により倍長加算を行う例を示す。ここでは、ＡＬＵの演算ビット幅を１６ビットとし、３２ビット変数であるＡとＢの加算を行い、加算結果Ｃ（３２ビット変数）を得る例を説明する。まず、ＡＬＵａ１４からの出力がＡの下位１６ビットデータであるＡＬ、ＡＬＵａ１５からの出力がＢの下位１６ビットデータであるＢＬ、ＡＬＵａ１２からの出力がＡの上位１６ビットデータであるＡＨ、ＡＬＵａ１３からの出力がＢの上位１６ビットデータであるＢＨであるとする。下位データの計算は、加算機能が割り当てられたＡＬＵａ２４により行われ、演算結果であるAL+BLは、Ｃの下位１６ビットであるＣＬとしてＡＬＵａ３４へ出力される。また、キャリーはＡＬＵａ２３へ出力される。一方、上位データの計算は、加算機能が割り当てられたＡＬＵａ２３により行われ、演算結果であるAH+BH+キャリーは、Ｃの上位１６ビットであるＣＨとして、ＡＬＵａ３３へ出力される。このようにすれば倍長演算が可能となる。
【００１４】
しかしながら、図１１のリコンフィギュラブル回路３００では、演算の内容によっては倍長演算が実行できない場合がある。リコンフィギュラブル回路３００のような接続制限のあるリコンフィギュラブル回路では、ＡＬＵからの演算出力先が制限されているため、もともとＡＬＵの割り当てには制約がある。これに加え、倍長演算を実行しようとすると、キャリー出力についても考慮する必要があり、特にリコンフィギュラブル回路３００のようにキャリー出力が隣の列のＡＬＵに接続されるような場合、ＡＬＵの割り当てに更なる制約が生じるからである。以下に具体例を説明する。
【００１５】
図１３を参照して、Ａ＋Ｂ、Ａ−Ｂの加減算の同時処理を、リコンフィギュラブル回路３００により倍長演算で行う場合を説明する。リコンフィギュラブル回路３００で倍長演算を行うには、上位データの加算を行うＡＬＵと、下位データの加算を行うＡＬＵが隣り合うように配置する必要がある。同様に、上位データの減算を行うＡＬＵと、下位データの減算を行うＡＬＵも隣り合うように配置する必要がある。例えば、Ａの上位データＡＨ、下位データＡＬをそれぞれＡＬＵａ１２、ａ１３に設定し、Ｂの上位データＢＨ、下位データＢＬをそれぞれＡＬＵａ１４、ａ１５に設定し、上位加算、下位加算をそれぞれＡＬＵａ２２、ａ２３で実行させ、上位減算、下位減算をそれぞれＡＬＵａ２４、ＡＬＵａ２５で実行させるものとする。この場合、下位加算を行うためにALとBLをＡＬＵａ２３へ入力させる必要があるが、BLは２列右の上段にあるＡＬＵａ１５に設定されているので、リコンフィギュラブル回路３００では、ａ２３による加算を行うことができない。
【００１６】
上記の課題に鑑み、本発明はリコンフィギュラブルプロセッサ等の演算処理回路において多倍長演算を効率的に行うことができる演算処理回路を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明のある態様は、段方向と列方向にマトリクス状に構成された複数の論理回路部を備え、所定の論理回路部からの演算出力が、次段に配置された論理回路部のうち一部の論理回路部に制限されて接続されるよう構成された演算処理回路であって、前記所定の論理回路部がキャリー出力を備え、該キャリー出力が、該所定の論理回路部から２列以上離れた列に位置する論理回路部に接続するよう構成されることを特徴とする。
【００１８】
係る演算処理回路では、例えば論理回路部からの演算出力先が近接列に配置された論理回路部のみに制限されているような場合、キャリー出力を遠隔列の論理回路部へ接続するので、多倍長演算実行時におけるＡＬＵ割り当ての制約を緩和できるので、多倍長演算を効率的に行うことができる。
【００１９】
上記演算処理回路においては、前記論理回路部からの演算出力を保持する状態保持部を更に備え、論理回路部からの演算出力は、前記状態保持部を介して次段の論理回路部へ入力され、前記所定の論理回路部からのキャリー出力が、該所定の論理回路部の次段に位置する論理回路部に接続するよう構成されるものでも良い。
【００２０】
この態様の演算処理回路において、前記所定の論理回路部からの演算出力が、次段に配置された論理回路部のうち前記所定の論理回路部からｐ列（但し、ｐは自然数）以内に配置された論理回路部に制限されて接続されるよう構成され、前記キャリー出力が、該所定の論理回路部から（ｐ＋１）列以上離れた列に位置する論理回路部に接続するよう構成されるようにしても良い。
【００２１】
本発明の他の態様は、段方向に構成された複数の論理回路部を備え、所定の論理回路部からの演算出力が、前記複数の論理回路のうち、一部の論理回路部に制限されて接続されるよう構成された演算処理回路であって、前記所定の論理回路部がキャリー出力を備え、該キャリー出力が、該所定の論理回路部から２列以上離れた列に位置する論理回路部に接続するよう構成されることを特徴とする。
【００２２】
係る演算処理回路では、多倍長演算の効率化に加え、回路規模の小型化が図れる。
【００２３】
この態様の演算処理回路においては、前記所定の論理回路部からの演算出力が、前記所定の論理回路部からｐ列（但し、ｐは自然数）以内に配置された論理回路部に制限されて接続されるよう構成され、前記キャリー出力が、該所定の論理回路部から（ｐ＋１）列以上離れた論理回路部に接続するよう構成されても良い。
【００２４】
また、上記の各態様の演算処理回路において、論理回路部は、該論理回路の外部から供給される設定データに従って演算機能の変更が可能であっても良い。ここで、演算機能とは、例えば、加算演算や減算演算などをいう。
【００２５】
また、上記各態様の演算処理回路において、同一段に、ｎ×ｋ個（但し、ｎ、ｋは、２以上の整数）の論理回路部が配置され、前記所定の論理回路部がキャリー出力を備え、該キャリー出力が、該所定の論理回路部からｋ列離れた列に位置する論理回路部に接続するよう構成されるようにしても良い。
【発明の効果】
【００２６】
この発明によれば、いわゆる接続制限のある演算処理回路において多倍長演算を効率的に行うことができる。
【発明を実施するための最良の形態】
【００２７】
図１は、実施の形態に係る処理装置１０の構成、並びに設定データ生成装置３０の構成を示す図である。
【００２８】
＜処理装置１０の構成＞
処理装置１０は、１チップとして構成される集積回路からなり、リコンフィギュラブル回路１２、設定部１４、制御部１８を備える。
【００２９】
リコンフィギュラブル回路１２は、機能の変更が可能なＡＬＵによる論理回路を複数備えた構造を有する。このようなリコンフィギュラブル回路１２は、後述する設定部１４から供給される設定データに従って動作する演算回路として機能する。即ちリコンフィギュラブル回路１２は、外部からの入力データに対して、前記設定データに従った演算を行い、演算結果を出力する。このリコンフィギュラブル回路１２の構成については後で詳しく説明する。なお、リコンフィギュラブル回路１２は、本願発明の演算処理回路の一例に相当するものである。
【００３０】
設定部１４は、リコンフィギュラブル回路１２に所望の演算回路を構成するための設定データを供給する。設定部１４から設定データを供給することにより、リコンフィギュラブル回路１２は所望の演算回路として構成される。この設定データは後述する設定データ生成装置３０で生成される。
【００３１】
制御部１８は、処理装置１０の各部、即ち、リコンフィギュラブル回路１２、設定部１４を制御する。
【００３２】
＜設定データ生成装置３０の構成＞
設定データ生成装置３０は、リコンフィギュラブル回路１２で実現されるべき処理の動作を設定したプログラムを解析し、リコンフィギュラブル回路１２にマッピングするための設定データを生成する。この設定データは、リコンフィギュラブル回路１２における論理回路の機能や論理回路間の接続関係を定める。設定データ生成装置３０により生成された設定データは、設定部１４を介してリコンフィギュラブル回路１２へ供給される。
【００３３】
＜リコンフィギュラブル回路１２の構成  （その１）＞
図２は、リコンフィギュラブル回路１２の模式図である。リコンフィギュラブル回路１２は、段方向と列方向にマトリクス状に配置された複数のＡＬＵ（ａ１１、ａ１２、…、ａ１６、ａ２１、…、ａ２６、ａ３１、…、ａ３６）を備える。本実施形態は、請求項の発明でいうところのｐ＝１の場合の一例である。
【００３４】
各ＡＬＵは、設定データに従って演算機能が設定される。例えば、設定データに従って、あるときは加算器、あるときは減算器、論理和演算器、論理積演算器、ビットシフト演算器、…、などとして機能する。また、ａ１１、…、ａ１６による１段目の論理回路は集合体ｇ１を成し、ａ２１、…、ａ２６による２段目の論理回路は集合体ｇ２を成し、ａ３１、…、ａ３６による３段目の論理回路は集合体ｇ３を成すように構成されている。
【００３５】
また、ＡＬＵによる演算の出力は、同列に配置された次段のＡＬＵと、その左右の列に配置されたＡＬＵに制限されるように構成されている。即ち、ＡＬＵによる演算の出力が、該ＡＬＵから１列以内に配置された他のＡＬＵに制限されて接続されるよう構成される。例えば、ａ２２に関して言えば、その演算出力は、ａ３１、ａ３２、ａ３３のみに接続される。
【００３６】
また、一部のＡＬＵはキャリー出力を備えている（ここでは、ａ２５、ａ２６）。これらのＡＬＵからのキャリー出力は、該ＡＬＵから３列離れた列に位置する他のＡＬＵに接続するよう構成される。例えば、ＡＬＵａ２５からのキャリー出力がＡＬＵａ２２に接続され、ＡＬＵａ２６からのキャリー出力がＡＬＵａ２３に接続されている。リコンフィギュラブル回路１２では、キャリー出力が離れている列数が３であるので、この列数３が請求項の発明でいうところの（ｐ＋１）以上、すなわち２以上の条件を満足している。
【００３７】
図３を参照して、図２のリコンフィギュラブル回路１２による倍長加減算（Ａ＋Ｂ、及びＡ−Ｂ）を同時処理する例を説明する。ここでは、リコンフィギュラブル回路１２の各ＡＬＵの演算ビット幅は１６ビットであり、Ａ、Ｂはそれぞれ３２ビット変数であるものとする。まず、ＡＬＵａ１５からの出力データがＡの下位１６ビットデータであるＡＬ、ＡＬＵａ１６からの出力データがＢの下位１６ビットデータであるＢＬ、ＡＬＵａ１２からの出力データがＡの上位１６ビットデータであるＡＨ、ＡＬＵａ１３からの出力データがＢの上位１６ビットデータであるＢＨとする。
【００３８】
下位の加算は、加算機能が割り当てられたＡＬＵａ２５により行われ、加算結果であるＣＬはＡＬＵａ３５へ出力される。また、ＡＬＵａ２５での加算で発生したキャリーはＡＬＵａ２２へ出力される。一方、上位の加算は、加算機能が割り当てられたＡＬＵａ２２により行われ、加算結果であるＣＨはＡＬＵａ３２へ出力される。
【００３９】
一方、下位減算は、減算機能が割り当てられたＡＬＵａ２６により行われ、減算結果であるＤＬはＡＬＵａ３６へ出力される。また、ＡＬＵａ２６での減算で発生したキャリーはＡＬＵａ２３へ出力される。一方、上位減算は、減算機能が割り当てられたＡＬＵａ２３により行われ、減算結果であるＤＨは、ＡＬＵａ３３へ出力される。
【００４０】
リコンフィギュラブル回路１２では、キャリー出力を３列離れた列に位置するＡＬＵに接続しているため、上位データの演算を行うＡＬＵと下位データの演算を行うＡＬＵを離して配置することができるので接続制限と干渉しない。したがって、上位の演算を行うＡＬＵ、下位の演算を行うＡＬＵのそれぞれの配置を、単精度演算の場合と同じＡＬＵの配置により実行することができるので、多倍長演算を効率的に行うことができる。即ち、回路の利用効率、及び演算の実行速度を低下させることなく、倍長演算を行うことができる。
【００４１】
なお、図２では、一部のＡＬＵのみがキャリー出力を有するように記載しているが、全てのＡＬＵがキャリー出力を有していても良い。逆に、例えば、加減算は偶数段のＡＬＵで実行するというようなルールを予め設定しておくことにより、一部のＡＬＵにのみキャリー出力を設ける構成にすることもできる。これにより、キャリー出力の配線を必要最小限に抑えることができ、リコンフィギュラブル回路の小型化、低消費電力化が図れる。
【００４２】
＜リコンフィギュラブル回路の構成例（その２）＞
図４は、リコンフィギュラブル回路１２Ｂの構成を示すものである。
【００４３】
このリコンフィギュラブル回路１２Ｂでは、各論理回路（Ｌ１１、…、Ｌ６４）には、ＡＬＵの他、各ＡＬＵからの演算出力を受けるＤ型フリップフロップ（以下、「ＤＦＦ」と記す）を備える。本実施形態も、請求項の発明でいうところのｐ＝１の場合の一例である。
【００４４】
ＤＦＦに格納された各ＡＬＵからの出力データは、クロックに同期して次段のＡＬＵへ出力される。これにより、パイプライン処理が可能となり、各段のＡＬＵで別々の演算を同時に実行することができる。
【００４５】
また、一部のＡＬＵはキャリー出力を備えている（例えば、ａ４２、ａ５２、ａ６２）。これらのＡＬＵからのキャリー出力は、キャリー用ＤＦＦ（ｄ１、ｄ２又はｄ３）を介して、次段の３列離れた列に位置するＡＬＵへ接続される。リコンフィギュラブル回路１２Ｂでは、キャリー出力が離れている列数が３であるので、請求項の発明でいうところの（ｐ＋１）以上、すなわち２以上の条件を満足している。
【００４６】
図５を参照して、リコンフィギュラブル回路１２Ｂによる、倍長加算（Ａ＋Ｂ）及び倍長減算（Ａ−Ｂ）を同時に処理する例を説明する。
【００４７】
まず、第１のタイミングでは、第１段の論理回路L51、L61のＡＬＵa51、a61から、ＡＬとＢＬがそれぞれ出力される。また、論理回路L51、L61のＤＦＦd51、d52にもＡＬとＢＬがそれぞれ格納される。
【００４８】
次に、第２のタイミングでは、d51、d61に格納されたデータが第２段の論理回路L52、L62のＡＬＵa52、a62の両方へ出力される。そして、a52ではＡＬとＢＬの加算が行われる。その加算結果であるＣＬは、論理回路L52のＤＦＦd52に保存されると共に、加算によるキャリーは、キャリー用ＤＦＦ(d2)に保存される。一方、a62ではＡＬとＢＬの減算が行われる。その減算結果であるＤＬは、論理回路L62のＤＦＦd62に保存されると共に、減算によるキャリーは、キャリー用ＤＦＦ(d3)に保存される。また、この第２のタイミングでは、第１段の論理回路L22、L32のＡＬＵa22、a32から、ＡＨとＢＨがそれぞれ出力される。また、論理回路L22、L32のＤＦＦd22、d32にもＡＨとＢＨがそれぞれ格納される。
【００４９】
第３のタイミングでは、ＤＦＦd22、d32、d42、d52、並びにキャリー用ＤＦＦd2、d3に格納されたデータが第３段の論理回路へ出力される。論理回路L23のＡＬＵa23には、L22からのＡＨ、L32からのＢＨ、d2からのキャリーが入力され、a23ではこれらの加算演算が行われる。加算結果であるＣＨは、ＤＦＦd23に保存される。論理回路L33のＡＬＵa33には、L22からのＡＨ、L32からのＢＨ、d3からのキャリーが入力され、a33ではこれらの減算演算が行われる。減算結果であるＤＨは、ＤＦＦd33に保存される。
【００５０】
また、第３のタイミングでは、論理回路L53のＡＬＵa53にはL52からのＣＬが、論理回路L63のＡＬＵa63にはL62からのＤＨが入力される。
【００５１】
第４のタイミングでは、d23、d33に格納されたデータが第４段の論理回路へ出力される。そして、論理回路L24のＡＬＵa24にはＬ23からのＣＨが入力され、論理回路L34のＡＬＵa34にはL33からのＤＨが入力される。
【００５２】
上記のようにして、リコンフィギュラブル回路１２Ｂにより、倍長の加減算（Ａ＋Ｂ）、（Ａ−Ｂ）を同時処理ができる。
【００５３】
また、リコンフィギュラブル回路１２Ｂでは、演算のパイプライン処理を行うことができる。例えば、第２のタイミングで、第１段の論理回路L51、L61にあるＡＬＵa51、a61に前記のＡＬ及びＢＬとは異なる値をそれぞれ設定し、第３のタイミングで、第２段の論理回路L22、L32にあるＡＬＵa22、a32に、前記のＡＨとＢＨとは異なる変数を設定することにより、前述の加減算（Ａ＋Ｂ）、（Ａ−Ｂ）と異なる演算を実行させることができる。
【００５４】
また、リコンフィギュラブル回路１２Ｂによれば、このようなパイプライン処理を行う場合における演算速度を向上させることもできる。例えば、キャリー出力を同段の３列離れた列に位置するＡＬＵに接続すると、上位加算を行うＡＬＵは下位加算を行うＡＬＵからのキャリー入力を待つ必要がある。この待ち時間を考慮して１クロックの周期を設定すると、１クロックの周期が長くなり、演算が遅くなる。これに対し、リコンフィギュラブル回路１２Ｂでは、上位演算を行う論理回路を、下位演算を行う論理回路の下段に配置し、上位演算と下位演算を異なるタイミングで実行しているので、キャリー入力の待ち時間を考慮する必要が無く、クロック周期を短縮できる。これにより、演算速度を向上させることができる。
【００５５】
＜リコンフィギュラブル回路１２の構成例（その３）＞  
上記例のリコンフィギュラブル回路では、ＡＬＵからのキャリー出力を３列離れた列に位置するＡＬＵへ接続配線しているが、これに限られるものではない。
【００５６】
例えば、横方向（同一段）にｎ×ｋ個のＡＬＵが並んでいるリコンフィギュラブル回路でｎ倍長の演算を処理する場合、ｋ個毎にＡＬＵを分けて、左右の一方から下位からの演算を割り当てていくことが考えられる。この場合、キャリーはｋ列離れた列に位置するＡＬＵに接続するようにすれば良い。
【００５７】
図６は、横方向に6個のＡＬＵが並んだリコンフィギュラブル回路１２Ｃを用いて３倍長の演算を行う例を示したものである。このリコンフィギュラブル回路１２Ｃは、ＡＬＵによる演算出力が、同列に配置された次段のＡＬＵと、その左右の列に配置されたＡＬＵに制限されるように構成されている。ＡＬＵを２個毎に分け、下位、中位、上位の演算という様に演算器を割り当てる。この場合、キャリーの接続は、下位と中位、中位と上位との接続となり、２列離れた列に位置するＡＬＵにキャリーを接続する。
【００５８】
このようにすることで、ｋ個毎のＡＬＵのそれぞれでは、接続制限が同位の演算にのみ影響されるので、倍長演算による接続制限の影響を受けることがなく、効率的になる。なお、本構成例のリコンフィギュラブル回路１２Ｃも、請求項の発明でいうところのｐ＝１の場合の一例である。また、このリコンフィギュラブル回路１２Ｃでは、キャリー出力が離れている列数が２であり、請求項の発明でいうところの（ｐ＋１）以上、すなわち２以上の条件を満足している。
【００５９】
＜リコンフィギュラブル回路の構成例（その４）＞
図７は、１段構成でループバックさせるリコンフィギュラブル回路１２Ｄの構成を示す図である。各論理回路からの出力は、同じ論理回路の入力、及びその左右の列にある論理回路の入力へ接続される。本実施形態も、請求項の発明でいうところのｐ＝１の場合の一例である。
【００６０】
また、各論理回路のＡＬＵは、設定データに従って演算機能を変更させることが可能である。タイミングごとに演算の種類を切り替る制御を行うことにより、例えば図４で示した演算と同様の演算を行うことができる。
【００６１】
このようなリコンフィギュラブル回路を用いた倍長の加算（Ａ＋Ｂ）、減算（Ａ−Ｂ）の実行例を以下に説明する。
【００６２】
まず、第１のタイミングでは、ＡＬＵa5からＡの下位データであるＡＬが、ＡＬＵa6からＢの下位データであるＢＬが設定される。また、ＡＬＵa5の演算出力を受けるＤＦＦ５にはＡＬが、ＡＬＵa6の演算出力を受けるＤＦＦ６にはＢＬが保持される。
【００６３】
次の、第２のタイミングでは、ＡＬＵa5に加算機能が、ＡＬＵa6に減算機能が設定される。また、ＤＦＦ５、ＤＦＦ６にそれぞれ記憶されたＡＬ、ＢＬはa5、a6の両方へ出力される。そして、ＡＬＵa5では、ＤＦＦ５から出力されたＡＬとＤＦＦ６から出力されたＢＬによる加算演算、即ち下位データの加算が行われる。一方、ＡＬＵa6では、ＤＦＦ５から出力されたＡＬとＤＦＦ６から出力されたＢＬによる減算演算、即ち下位データの減算が行われる。ＡＬＵa5での加算結果であるＣＬはＤＦＦ５に格納され、ＡＬＵa6での減算結果であるＤＬはＤＦＦ６に格納される。また、ＡＬＵa5、a6での加算、減算により発生したキャリーは、それぞれキャリー用ＤＦＦ１、キャリー用ＤＦＦ２へ出力される。リコンフィギュラブル回路１２Ｃでは、キャリー出力が離れている列数が３であるので、請求項の発明でいうところの（ｐ＋１）以上、すなわち２以上の条件を満足している。
【００６４】
また、前記の第２のタイミングでは、ＡＬＵa2にＡの上位データであるＡＨが、ＡＬＵa3にＢの上位データであるＢＨが設定される。そして、ＤＦＦ２にはＡＨが、ＤＦＦ３にはＢＨが保持される。
【００６５】
次の、第３のタイミングでは、ＡＬＵa2に加算機能が、ＡＬＵa3に減算機能が設定される。ＤＦＦ２、ＤＦＦ３にそれぞれ記憶されたＡＨ、ＢＨはa2、a3の両方へ出力される。キャリー用ＤＦＦ１、キャリー用ＤＦＦ２にそれぞれ記憶されたキャリーは、それぞれa2、a3へ出力される。そして、ＡＬＵa2では、ＤＦＦ２から出力されたＡＨとＤＦＦ３から出力されたＢＨと、キャリー用ＤＦＦ１から出力されたキャリーによる加算演算、即ち上位データの加算が行われる。一方、ＡＬＵa3では、ＤＦＦ２から出力されたＡＨとＤＦＦ３から出力されたＢＨとキャリー用ＤＦＦ２から出力されたキャリーによる減算演算、即ち上位データの減算が行われる。
【００６６】
また、前記第３のタイミングでは、ＡＬＵa5には、第２タイミングにおける下位の加算結果であるＣＬが出力され、ＡＬＵa6には、第２タイミングにおける下位の減算結果であるＤＬが出力される。
【００６７】
続く第４のタイミングでは、ＡＬＵa2には、第３タイミングにおける上位の加算結果であるＣＨが出力され、ＡＬＵa3には、第３タイミングにおける上位の減算結果であるＤＨが出力される。このように、１段構成でループバックさせる構成のリコンフィギュラブル回路によっても倍長演算を実現することができる。
【００６８】
上記の実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【００６９】
なお、上記では、倍長演算を行うリコンフィギュラブル回路を例に説明したが、倍長演算と単精度演算の両方を行うリコンフィギュラブル回路も本願発明の範囲に含まれる。例えば、図４のリコンフィギュラブル回路１２Ｂの一部を図８のように構成することで実現できる。例えばa13、a23、a33など下位からのキャリー入力を受けるＡＬＵのキャリー入力の手前に選択器ＭＵＸを設け、単精度演算を実行するときは０をＭＵＸに選択させ、倍長演算を実行するときは下位ビットからのキャリー入力（例えば、図８の例では、a62のキャリー出力を一旦保持するＤＦＦd3の出力）をＭＵＸに選択させるようにすればよい。なお、リコンフィギュラブル回路１２Ｂだけでなく、リコンフィギュラブル回路１２、１２Ｃ、１２Ｄにおいても同様な改良を行うことにより倍長演算と単精度演算の両方を行うことができる。
【図面の簡単な説明】
【００７０】
【図１】実施の形態に係る処理装置１０、設定データ生成装置３０の構成を示す図である。
【図２】リコンフィギュラブル回路１２の構成を示す模式図である。
【図３】リコンフィギュラブル回路１２により倍長加算（Ａ＋Ｂ）及び倍長減算（Ａ−Ｂ）を同時に処理する例を説明する図である。
【図４】リコンフィギュラブル回路１２Ｂの構成を示す模式図である。
【図５】リコンフィギュラブル回路１２Ｂにより倍長加算（Ａ＋Ｂ）及び倍長減算（Ａ−Ｂ）を同時に処理する例を説明する図である。
【図６】同一段に６個のＡＬＵが並んだリコンフィギュラブル回路を用いて３倍長の演算を行う例を示す図である。
【図７】リコンフィギュラブル回路１２Ｄの構成を示す模式図である。
【図８】倍長演算、単精度演算の両方が可能なリコンフィギュラブル回路１２Ｂの一部分を示す図である。
【図９】従来のリコンフィギュラブル回路４００の模式図である。
【図１０】リコンフィギュラブル回路４００による演算の実行例を示す図である。
【図１１】リコンフィギュラブル回路３００の模式図である。
【図１２】リコンフィギュラブル回路３００により倍長加算を行う例を示す図である。
【００７１】
【図１３】リコンフィギュラブル回路３００により、倍長加算（Ａ＋Ｂ）及び倍長減算（Ａ−Ｂ）を同時に処理する例を示す図である。
【符号の説明】
【００７２】
１０  処理装置
１２  リコンフィギュラブル回路
１４  設定部
１８  制御部
３０  設定データ生成装置
【図１】
0005025509.tif 000002
【図２】
0005025509.tif 000003
【図３】
0005025509.tif 000004
【図４】
0005025509.tif 000005
【図５】
0005025509.tif 000006
【図６】
0005025509.tif 000007
【図７】
0005025509.tif 000008
【図８】
0005025509.tif 000009
【図９】
0005025509.tif 000010
【図１０】
0005025509.tif 000011
【図１１】
0005025509.tif 000012
【図１２】
0005025509.tif 000013
【図１３】
0005025509.tif 000014