(57)【要約】【課題】論理レベルの最適化ができ、また構成情報の増大を防止でき、集積回路としての面積効率の低下を防止でき、また、演算効率の向上を図れ、しかも低消費電力化を図れる演算装置を提供する。【解決手段】構成情報に応じて係数入力Ｃ０Ｉ〜ＣｋＩを選択する第１の選択装置１１と、構成情報に応じてデータ入力Ｄ０Ｉ〜ＤｍＩを選択する第２の選択装置１２と、第１，第２の選択装置の出力信号を入力として、構成情報に応じた論理演算を行うＡＬＵ１４と、第１，第２の選択装置の出力信号を入力として構成情報に応じた演算を行うＭＡＣ１５と、構成情報に応じてＡＬＵ１４とＭＡＣ１５の出力信号のいずれかを選択する第４の選択装置１６とを設ける。【選択図】図１
2006185459.tif 000002
【特許請求の範囲】
【請求項１】
動的に変更可能な演算経路を示す構成情報を生成して出力する、または記憶された情報を上記構成情報として出力する構成情報出力手段と、
上記構成情報に応じて複数の入力データから所望のデータを選択する第１の選択手段と、
上記構成情報に応じて複数の入力データから所望のデータを選択する第２の選択手段と、
上記第１の選択手段の出力信号、および第２の選択手段の出力信号を入力として、上記構成情報に応じた演算を行う演算手段と
を有する演算装置。
【請求項２】
上記演算手段は、２項演算が可能である
請求項１記載の演算装置。
【請求項３】
上記演算手段は、２項演算の結果を単項演算する
請求項２記載の演算装置。
【請求項４】
上記入力データを制御信号に応じた遅延量をもって遅延させて出力する遅延手段
を有する請求項１記載の演算装置。
【請求項５】
動的に変更可能な演算経路を示す構成情報を生成して出力する、または記憶された情報を上記構成情報として出力する構成情報出力手段と、
上記構成情報に応じて複数の入力データから所望のデータを選択する第１の選択手段と、
上記構成情報に応じて複数の入力データから所望のデータを選択する第２の選択手段と、
上記構成情報に応じて複数の入力データから所望のデータを選択する第３の選択手段と、
上記第１の選択手段の出力信号、第２の選択手段の出力信号、および第３の選択手段の出力信号を入力として、上記構成情報に応じた演算を行う演算手段と
を有する演算装置。
【請求項６】
上記演算手段は、３項演算が可能である
請求項５記載の演算装置。
【請求項７】
上記演算手段は、３項演算の結果を単項演算する
請求項６記載の演算装置。
【請求項８】
上記入力データを制御信号に応じた遅延量をもって遅延させて出力する遅延手段
を有する請求項５記載の演算装置。
【請求項９】
動的に変更可能な演算経路を示す構成情報を生成して出力する、または記憶された情報を上記構成情報として出力する構成情報出力手段と、
上記構成情報に応じて複数の入力データから所望のデータを選択する第１の選択手段と、
上記構成情報に応じて複数の入力データから所望のデータを選択する第２の選択手段と、
上記第１の選択手段の出力信号、および第２の選択手段の出力信号を入力として、上記構成情報に応じた演算を行う演算手段と
を有し、
上記複数の演算装置のデータの入出力同士をカスケード接続し、かつ、各演算装置の演算結果信号を他の装置の複数のデータ入力の一のデータとして供給する
並列演算装置。
【請求項１０】
上記入力データを制御信号に応じた遅延量をもって遅延させて次段の演算装置に出力する遅延手段
を有する請求項９記載の並列演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＳＰ(Digital Signal Processor)等に用いられ、算術論理演算を行う算術論理演算器（ＡＬＵ：Arithmetic Logic Unit ）や積和演算を繰り返すＭＡＣ構造(Multiply-Accumulate Architecture)の演算器等を含み、外部からの制御により再構成可能な演算装置に関するものである。
【背景技術】
【０００２】
外部からの制御により再構成可能な演算装置としては、たとえば特表平７−５０３８０４号公報に開示された、動的構成可能ゲートアレイで構成される集積回路演算装置が知られている。
【０００３】
この集積回路演算装置は、動的構成可能フィールドプログラマブルゲートアレイ（ＦＰＧＡ）により構成される。
ＦＰＧＡは、多数の入出力（Ｉ／Ｏ）ブロックと、プログラム可能論理ブロックと、論理ブロックを相互に入出力ブロックに接続し、入出力パッドを介してＦＰＧＡピンに入出力ブロックを接続するための配線等の配信資源により構成される。
また、ＦＰＧＡのプログラムは、構成データをＦＰＧＡの構成メモリアレイにロードされる。
そして、この演算装置は、プロセッサと再構成可能命令実行部を有し、再構成可能命令実行部を動的に変化させることで、複雑な処理をハードウェアで達成し、異なる組み合わせ論理機能を実現している。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、上述した演算装置は、ＦＰＧＡを用いて構成され、ゲートレベルでの切り換えを行って再構成することから、論理レベルの最適化が困難で、また構成情報が大きくなり、集積回路としての面積効率も悪いという不利益がある。
【０００５】
また、従来のＤＳＰではＭＡＣやＡＬＵは１つ、あるいは２つで構成されることが多く、たとえばＭＥＭＷ＝ａｘ＋ｂｙ＋ｃｚ＋ｄｗというような多項演算を行う場合、次のように行う必要がある。ここで、ｒｅｇ１〜ｒｅｇ４はレジスタを示す。
【０００６】
（数１）
ｒｅｇ１＝ａｘ
ｒｅｇ２＝ｂｙ
ｒｅｇ３＝ｃｚ
ｒｅｇ４＝ｄｗ
ｒｅｇ１＝ｒｅｇ１＋ｒｅｇ２
ｒｅｇ３＝ｒｅｇ３＋ｒｅｇ４
ＭＥＭＷ＝ｒｅｇ１＋ｒｅｇ３
【０００７】
以上のように従来のＤＳＰでは、一時レジスタにデータを書き戻して演算結果を得る必要があった。
すなわち、従来のＤＳＰでは、実際に行いたい演算以外にレジスタへのアクセスが必要になる。そのため余計なサイクルがかかり、演算効率の点からも低電力化の観点からも好ましくない。
【０００８】
本発明は、かかる事情に鑑みてなされたものであり、その第１の目的は、論理レベルの最適化ができ、また構成情報の増大を防止でき、集積回路としての面積効率の低下を防止できる演算装置を提供することにある。
【０００９】
本発明の第２の目的は、演算効率の向上を図れ、しかも低消費電力化を図れる演算装置を提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明の演算装置は、動的に変更可能な演算経路を示す構成情報を生成して出力する、または記憶された情報を上記構成情報として出力する構成情報出力手段と、上記構成情報に応じて複数の入力データから所望のデータを選択する第１の選択手段と、上記構成情報に応じて複数の入力データから所望のデータを選択する第２の選択手段と、上記第１の選択手段の出力信号、および第２の選択手段の出力信号を入力として、上記構成情報に応じた演算を行う演算手段とを有する。
【００１１】
また、本発明では、上記演算手段は、２項演算が可能である。
【００１２】
また、本発明では、上記演算手段は、２項演算の結果を単項演算する。
【００１３】
また、本発明では、上記入力データを制御信号に応じた遅延量をもって遅延させて出力する遅延手段を有する。
【００１４】
また、本発明の演算装置は、動的に変更可能な演算経路を示す構成情報を生成して出力する、または記憶された情報を上記構成情報として出力する構成情報出力手段と、上記構成情報に応じて複数の入力データから所望のデータを選択する第１の選択手段と、上記構成情報に応じて複数の入力データから所望のデータを選択する第２の選択手段と、上記構成情報に応じて複数の入力データから所望のデータを選択する第３の選択手段と、上記第１の選択手段の出力信号、第２の選択手段の出力信号、および第３の選択手段の出力信号を入力として、上記構成情報に応じた演算を行う演算手段とを有する。
【００１５】
また、本発明では、上記演算手段は、３項演算が可能である。
【００１６】
また、本発明では、上記演算手段は、３項演算の結果を単項演算する。
【００１７】
また、本発明では、上記入力データを制御信号に応じた遅延量をもって遅延させて出力する遅延手段を有する。
【００１８】
また、本発明の並列演算装置は、動的に変更可能な演算経路を示す構成情報を生成して出力する、または記憶された情報を上記構成情報として出力する構成情報出力手段と、上記構成情報に応じて複数の入力データから所望のデータを選択する第１の選択手段と、上記構成情報に応じて複数の入力データから所望のデータを選択する第２の選択手段と、上記第１の選択手段の出力信号、および第２の選択手段の出力信号を入力として、上記構成情報に応じた演算を行う演算手段とを有し、上記複数の演算装置のデータの入出力同士をカスケード接続し、かつ、各演算装置の演算結果信号を他の装置の複数のデータ入力の一のデータとして供給する。
【００１９】
また、本発明では、上記入力データを制御信号に応じた遅延量をもって遅延させて次段の演算装置に出力する遅延手段を有する。
【００２０】
本発明によれば、第１の選択手段で、制御信号に応じて複数の入力データから所望のデータが選択され、演算手段に供給される。同様に、第２の選択手段で、制御信号に応じて複数の入力データから所望のデータが選択され、演算手段に供給される。
そして、演算手段では、第１の選択手段の出力信号と第２の選択手段の出力信号を用いて、制御信号の指示に応じた演算、たとえば２項演算が行われる。
また、たとえば演算手段においては、２項演算の結果が単項演算される。
【００２１】
本発明によれば、第１の選択手段で、制御信号に応じて複数の入力データから所望のデータが選択され、演算手段に供給される。同様に、第２の選択手段で、制御信号に応じて複数の入力データから所望のデータが選択され、第３の選択手段で、制御信号に応じて複数の入力データから所望のデータが選択され、演算手段に供給される。
そして、演算手段では、第１の選択手段の出力信号と第２の選択手段の出力信号と第３の選択手段の出力信号を用いて、制御信号の指示に応じた演算、たとえば３項演算が行われる。
また、たとえば演算手段においては、３項演算の結果が単項演算される。
【００２２】
本発明によれば、第１の選択手段で、制御信号に応じて複数の入力データから所望のデータが選択され、演算手段に供給される。同様に、第２の選択手段で、制御信号に応じて複数の入力データから所望のデータが選択され、第３の選択手段で、制御信号に応じて複数の入力データから所望のデータが選択される。そして、第１の選択手段および第２の選択手段により選択された信号は第１の演算手段に供給され、また、第１の選択手段、第２の選択手段、および第３の選択手段により選択された信号は第２の演算手段に供給される。
そして、第１の演算手段では、第１の選択手段の出力信号と第２の選択手段の出力信号を用いて、制御信号の指示に応じた演算、たとえば２項演算が行われる。
また、たとえば第１の演算手段においては、２項演算の結果が単項演算される。
また、第２の演算手段では、第１の選択手段の出力信号と第２の選択手段の出力信号と第３の選択手段の出力信号を用いて、制御信号の指示に応じた演算、たとえば３項演算が行われる。
また、たとえば第２の演算手段においては、３項演算の結果が単項演算される。
そして、たとえば、第４の選択手段において、制御信号に応じて、第１の演算手段の出力信号と第２の演算手段の出力信号のいずれかが選択され、演算装置の演算結果として出力される。
【００２３】
また、本発明の並列演算装置によれば、複数の演算装置のデータの入出力同士がカスケード接続され、かつ、各演算装置の演算結果信号が他の演算装置の複数のデータ入力の一のデータとして供給される。
その結果、たとえば多項演算を行う場合等に、各演算装置に各演算処理が割り当てられ、さらに前段の演算結果をカスケード接続することで、一度に多項演算が行われる。
そのため、実行サイクル数が短くなり、また、一時的なレジスタへのアクセスが少なくなる。
【発明の効果】
【００２４】
本発明によれば、演算装置自体を外部から再構成可能である。したがって、論理レベルの最適化ができることはもとより、構成情報の増大を防止でき、集積回路としての面積効率の悪化を防止できる演算装置を実現できる利点がある。
また、演算装置を再構成可能であることから、カスケード演算だけでなく並列演算も同一のハードウェアで実現することが可能になっている。そのため、演算装置の数を増やして多くの並列化可能な処理を効率良く実行することもできる。
【００２５】
また、複数の演算を行う場合に、各演算装置に各演算を割り当て、さらに前段の演算結果をカスケードすることで一度に演算結果を得ることが可能である。そのため、実行サイクル数が短くなる。また一時レジスタへのアクセスが少なくなるため電力の消費も抑えることができる利点がある。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の実施形態を図面に関連付けて説明する。
【００２７】
第１実施形態
図１は、本発明に係る演算装置の第１の実施形態を示す構成図である。
図１の演算装置１０は、構成情報に基づいて再構成可能なＡＬＵとＭＡＣ構造の演算器を内蔵し、係数バスｎ（＝ｍ＋１）本、データバスｎ（＝ｋ＋１）本、カスケード入力ｎ−１本と出力データを持つ。
以下、演算装置１０の具体的な構成および機能について、順を追って説明する。
【００２８】
本演算装置１０は、図１に示すように、第１の選択装置（ＳＥＬＡ）１１、第２の選択装置（ＳＥＬＢ）１２、第３の選択装置（ＳＥＬＣ）１３、ＡＬＵ１４、ＭＡＣ構造の演算器（以下、単にＭＡＣという）１５、第４の選択装置（ＳＥＬＥ）１６、レジスタ（ＲＥＧ）１７、係数入力遅延用のｋ（たとえばｋ＝ｎ−１）個のＦＩＦＯ(First-In First-Out 、C0FIFO〜CkFIFO) １８−０〜１８−ｋ、およびデータ入力遅延用のｍ（たとえばｍ＝ｎ−１＝ｋ）個のＦＩＦＯ(D0FIFO 〜DmFIFO) １９−１〜１９−ｍを主構成要素として有している。
【００２９】
そして、演算装置１０は、係数入力Ｃ０Ｉ，Ｃ１Ｉ，…，ＣｋＩ、データ入力Ｄ０Ｉ，Ｄ１Ｉ，…，ＤｍＩ、カスケード入力Ｐ０，Ｐ１，…Ｐｎ−2 、係数出力Ｃ０Ｏ，Ｃ１Ｏ，…，ＣｋＯ、データ出力Ｄ０Ｏ，Ｄ１Ｏ，…，ＤｍＯ、および演算出力Ｃを有し、再構成等のための演算制御信号ＡＳＥＬ，ＢＳＥＬ，ＥＳＥＬ，ＭＡＣＭＤ，ＡＬＵＭＤ，ＲＮＤＭＤ，ＳＡＴＭＤ，ＯＳＦＭＤ，ＡＣＣＭＤ、遅延制御信号Ｃ０ＤＬ，Ｃ１ＤＬ，…ＣｋＤＬ，Ｄ０ＤＬ，Ｄ１ＤＬ，…ＤｍＤＬが供給される。
【００３０】
第１の選択装置１１は、制御信号ＡＳＥＬに応じて係数入力Ｃ０Ｉ，Ｃ１Ｉ，…，ＣｋＩとデータ０を選択し、信号ａｓｅｌ＿out として、ＡＬＵ１４、およびＭＡＣ１５に出力する。
【００３１】
第２の選択装置１２は、制御信号ＢＳＥＬに応じてデータ入力Ｄ０Ｉ，Ｄ１Ｉ，…，ＤｍＩを選択し、信号ｂｓｅｌ＿out として、ＡＬＵ１４、およびＭＡＣ１５に出力する。
【００３２】
第３の選択装置１３は、制御信号ＣＳＥＬに応じてカスケード入力Ｐ０，Ｐ１，…，Ｐｎ−2 とデータ０を選択し、信号ｃｓｅｌ＿out として、第１の選択装置１１、ＡＬＵ１４、およびＭＡＣ１５に出力する。
【００３３】
ＡＬＵ１４は、ａｌｕ＿acc をアキュムレートレジスタとし、第１の選択装置１１の出力信号ａｓｅｌ＿out 、第２の選択装置１２の出力信号ｂｓｅｌ＿out、および第３の選択装置１３の出力信号ｃｓｅｌ＿out を入力として、制御信号ＡＬＵＭＤ，ＲＮＤＭＤ，ＳＡＴＭＤ，ＯＳＦＭＤ，ＡＣＣＭＤの指示に応じた論理演算を行い、その結果を信号ａｌｕ＿out として第４の選択装置１６に出力する。
【００３４】
具体的には、ＡＬＵ１４は、制御信号ＲＮＤＭＤの値により丸めモードを「０方向、０から遠い方向、正の無限大方向、負の無限大方向、もっとも近い整数」から選択可能で、制御信号ＳＡＴＭＤの値により飽和ビット幅を指定可能であり、制御信号ＯＳＦＭＤの値によりシフト量を指定可能となる。
また、ＡＬＵ１４は、制御信号ＡＣＣＭＤの値によりアキュムレートレジスタａｌｕ＿acc への値のロード、ゼロ初期化を選択可能になっている。
ＡＬＵ１４での演算は制御信号ＡＬＵＭＤの値により、以下のいずれかの演算を行う。
【００３５】
（数２）
ａｌｕ＿out ＝ａｓｅｌ＿out ＋ｂｓｅｌ＿out 
ａｌｕ＿out ＝ａｓｅｌ＿out −ｂｓｅｌ＿out 
ａｌｕ＿out ＝ａｌｕ＿acc ＋ｂｓｅｌ＿out 
ａｌｕ＿out ＝ａｌｕ＿acc −ｂｓｅｌ＿out 
ａｌｕ＿out ＝〜ｂｓｅｌ＿out 
ａｌｕ＿out ＝−ｂｓｅｌ＿out 
ａｌｕ＿out ＝｜ｂｓｅｌ＿out ｜
ａｌｕ＿out ＝｜ａｓｅｌ＿out −ｂｓｅｌ＿out ｜
ａｌｕ＿out ＝ａｓｅｌ＿out ＆ｂｓｅｌ＿out 
ａｌｕ＿out ＝ａｓｅｌ＿out ｜ｂｓｅｌ＿out 
ａｌｕ＿out ＝ａｓｅｌ＿out ∧ｂｓｅｌ＿out 
ａｌｕ＿out ＝ＭＡＸ（ａｓｅｌ＿out ，ｂｓｅｌ＿out ）
ａｌｕ＿out ＝ＭＩＮ（ａｓｅｌ＿out ，ｂｓｅｌ＿out ）
ａｌｕ＿out ＝Leading ＺＥＲＯ（ｂｓｅｌ＿out ）
ａｌｕ＿out ＝Leading ＯＮＥ（ｂｓｅｌ＿out ）
ａｌｕ＿out ＝ＡＬＳ（ｂｓｅｌ＿out ）
ａｌｕ＿out ＝ＡＲＳ（ｂｓｅｌ＿out ）
ａｌｕ＿out ＝ＬＬＳ（ｂｓｅｌ＿out ）
ａｌｕ＿out ＝ＬＲＳ（ｂｓｅｌ＿out ）
ａｌｕ＿out ＝ａｓｅｌ＿out ＋ｂｓｅｌ＿out ＋ｃｓｅｌ＿out 
ａｌｕ＿out ＝ａｓｅｌ＿out −ｂｓｅｌ＿out ＋ｃｓｅｌ＿out 
ａｌｕ＿out ＝ａｓｅｌ＿out ＋ｂｓｅｌ＿out −ｃｓｅｌ＿out 
ａｌｕ＿out ＝ａｓｅｌ＿out −ｂｓｅｌ＿out −ｃｓｅｌ＿out 
【００３６】
ここで、〜はビット反転、−は符号反転、｜  ｜は絶対値、＆はＡＮＤ（論理積）、｜はＯＲ（論理和）、∧はＥＸＯＲ（排他的論理和）を意味する。また、ＭＡＸは最大値を返す関数、ＭＩＮは最小値を返す関数、Leading ＺＥＲＯは２進数表記をした場合のＭＳＢから連続する０の個数を返す関数、Leading ＯＮＥは２進数表記をした場合のＭＳＢから連続する１の個数を返す関数、ＡＬＳは算術左シフト、ＡＲＳは算術右シフト、ＬＬＳは論理左シフト、ＬＲＳは論理右シフトを意味している。
【００３７】
ＭＡＣ１５は、ｍａｃ＿acc をアキュムレートレジスタとし、第１の選択装置１１の出力信号ａｓｅｌ＿out 、第２の選択装置１２の出力信号ｂｓｅｌ＿out、および第３の選択装置１３の出力信号ｃｓｅｌ＿out を入力として、制御信号ＭＡＣＭＤ，ＲＮＤＭＤ，ＳＡＴＭＤ，ＯＳＦＭＤ，ＡＣＣＭＤの指示に応じた演算を行い、その結果を信号ｍａｃ＿out として出力する。
【００３８】
具体的には、ＭＡＣ１５は、制御信号ＲＮＤＭＤの値により丸めモードを「０方向、０から遠い方向、正の無限大方向、負の無限大方向、もっとも近い整数」のうちから選択可能であり、制御信号ＳＡＴＭＤの値により飽和ビット幅を指定可能、かつ制御信号ＯＳＦＭＤの値によりシフト量を指定可能になっている。また、ＭＡＣ１５は、制御信号ＡＣＣＭＤの値によりアキュムレートレジスタｍａｃ＿acc への値のロード、ゼロ初期化が選択も可能である。
ＭＡＣ１５での演算は、制御信号ＭＡＣＭＤの値により、以下のいずれかの演算を行う。
【００３９】
（数３）
ｍａｃ＿out ＝ａｓｅｌ＿out ＊ｂｓｅｌ＿out 
ｍａｃ＿out ＝−（ａｓｅｌ＿out ＊ｂｓｅｌ＿out ）
ｍａｃ＿out ＝ａｓｅｌ＿out ＊ｂｓｅｌ＿out ＋ｃｓｅｌ＿out 
ｍａｃ＿out ＝−（ａｓｅｌ＿out ＊ｂｓｅｌ＿out ）＋ｃｓｅｌ＿out 
ｍａｃ＿out ＝ａｓｅｌ＿out ＊ｂｓｅｌ＿out −ｃｓｅｌ＿out 
ｍａｃ＿out ＝−（ａｓｅｌ＿out ＊ｂｓｅｌ＿out ）−ｃｓｅｌ＿out 
ｍａｃ＿out ＝ａｓｅｌ＿out ＊ｂｓｅｌ＿out ＋ｍａｃ＿acc 
ｍａｃ＿out ＝−（ａｓｅｌ＿out ＊ｂｓｅｌ＿out ）＋ｍａｃ＿acc 
ｍａｃ＿out ＝ａｓｅｌ＿out ＊ｂｓｅｌ＿out −ｍａｃ＿acc 
ｍａｃ＿out ＝−（ａｓｅｌ＿out ＊ｂｓｅｌ＿out ）−ｍａｃ＿acc 
【００４０】
第４の選択装置１６は、制御信号ＥＳＥＬに応じて、ＡＬＵ１４の出力信号ａｌｕ＿out とＭＡＣ１５の出力信号ｍａｃ＿out のいずれかを選択し、信号ｅｓｅｌ＿out としてレジスタ１７に出力する。
【００４１】
レジスタ１７は、第４の選択装置１６の出力信号ｅｓｅｌ＿out を格納し、また格納データを第２の選択装置１２に出力するとともに、演算出力Ｃとして出力する。
【００４２】
Ｃ０ＦＩＦＯ１８−０は、制御信号Ｃ０ＤＬの値により任意のサイクル遅延が可能であり、係数入力Ｃ０Ｉを制御信号Ｃ０ＤＬの値に応じたサイクルを持って遅延させて、係数出力Ｃ０Ｏを得、たとえば次段の装置に出力する。
【００４３】
Ｃ１ＦＩＦＯ１８−１は、制御信号Ｃ１ＤＬの値により任意のサイクル遅延が可能であり、係数入力Ｃ１Ｉを制御信号Ｃ１ＤＬの値に応じたサイクルを持って遅延させて、係数出力Ｃ１Ｏを得、たとえば次段の装置に出力する。
【００４４】
同様に、ＣｋＦＩＦＯ１８−ｋは、制御信号ＣｋＤＬの値により任意のサイクル遅延が可能であり、係数入力ＣｋＩを制御信号ＣｋＤＬの値に応じたサイクルを持って遅延させて、係数出力ＣｋＯを得、たとえば次段の装置に出力する。
【００４５】
Ｄ０ＦＩＦＯ１９−０は、制御信号Ｄ０ＤＬの値により任意のサイクル遅延が可能であり、データ入力Ｄ０Ｉを制御信号Ｄ０ＤＬの値に応じたサイクルを持って遅延させて、データ出力Ｄ０Ｏを得、たとえば次段の装置に出力する。
【００４６】
Ｄ１ＦＩＦＯ１９−１は、制御信号Ｄ１ＤＬの値により任意のサイクル遅延が可能であり、データ入力Ｄ１Ｉを制御信号Ｄ１ＤＬの値に応じたサイクルを持って遅延させて、データ出力Ｄ１Ｏを得、たとえば次段の装置に出力する。
【００４７】
同様に、ＤｍＦＩＦＯ１９−ｍは、制御信号ＤｍＤＬの値により任意のサイクル遅延が可能であり、データ入力ＤｍＩを制御信号ＤｍＤＬの値に応じたサイクルを持って遅延させて、データ出力ＤｍＯを得、たとえば次段の装置に出力する。
【００４８】
なお、本実施形態では、所定のサイクルをもって遅延させない場合も遅延０として、遅延の定義に含めるものとする。
【００４９】
次に、上記構成による動作を、図２に示すように、ｎ＝４で、係数入出力、データ入出力が４、カスケード入力が３である演算装置１０Ａの動作について説明する。
【００５０】
なおここでは、係数入力Ｃ０Ｉ，Ｃ１Ｉ，Ｃ２Ｉ，Ｃ３Ｉはそれぞれａ，ｂ，ｃ，ｄ、データ入力Ｄ０Ｉ，Ｄ１Ｉ，Ｄ２Ｉ，Ｄ３Ｉはそれぞれｘ，ｙ，ｚ，ｗであるものとする。また、カスケード入力Ｐ０，Ｐ１，Ｐ２はそれぞれａ＊ｘ、ａ＊ｘ＋ｂ＊ｙ、ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚであるものとする。
【００５１】
まず、Ｃ＝ａ＊ｘを求める場合を説明する。
【００５２】
この場合、制御信号ＡＳＥＬが係数入力Ｃ０Ｉ（ａ）を選択するように設定されて第１の選択装置１１に供給される。
また、制御信号ＢＳＥＬがデータ入力Ｄ０Ｉ（ｘ）を選択するように設定されて第２の選択装置１２に供給される。
これにより、第１の選択装置１１から係数ａが信号ａｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第２の選択装置１２からデータｘが信号ｂｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。
【００５３】
このとき、乗算を指定する制御信号ＭＡＣＭＤが、ＭＡＣ１５に供給される。これにより、ＭＡＣ１５において、係数ａとデータｘとの乗算が行われ、その結果ａ＊ｘが信号ｍａｃ ｏｕｔとして第４の選択装置１６に出力される。
そして、制御信号ＥＳＥＬがＭＡＣ１５の出力を選択するように、第４の選択装置１６に供給されている。その結果、第４の選択装置１６においてＭＡＣ１５の出力信号ｍａｃ ｏｕｔ（ａ＊ｘ）が選択され、信号ｅｓｅｌ ｏｕｔ（ａ＊ｘ）としてレジスタ１７に出力される。
レジスタ１７では、ＭＡＣ１５の演算結果ａ＊ｘが格納され、この格納データが演算出力Ｃとして出力される。
【００５４】
次に、Ｃ＝ａ＊ｘ＋ｂ＊ｙを求める場合を説明する。
【００５５】
この場合、制御信号ＡＳＥＬが係数入力Ｃ１Ｉ（ｂ）を選択するように設定されて第１の選択装置１１に供給される。
また、制御信号ＢＳＥＬがデータ入力Ｄ１Ｉ（ｙ）を選択するように設定されて第２の選択装置１２に供給される。
また、制御信号ＣＳＥＬがカスケード入力Ｐ０（ａ＊ｘ）を選択するように設定されて第３の選択装置１３に供給される。
これにより、第１の選択装置１１から係数ｂが信号ａｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第２の選択装置１２からデータｙが信号ｂｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第３の選択装置１３から、カスケード入力データａ＊ｘが信号ｃｓｅｌ ｏｕｔとして第１の選択装置１１、ＡＬＵ１４およびＭＡＣ１５に出力される。
【００５６】
このとき、乗加算を指定する制御信号ＭＡＣＭＤが、ＭＡＣ１５に供給される。これにより、ＭＡＣ１５において、係数ｂとデータｙとの乗算が行われ、さらに、その結果ｂ＊ｙとａ＊ｘとの加算が行われる。これにより、ＭＡＣ１５から乗加算結果ａ＊ｘ＋ｂ＊ｙが信号ｍａｃ ｏｕｔとして第４の選択装置１６に出力される。
そして、制御信号ＥＳＥＬがＭＡＣ１５の出力を選択するように、第４の選択装置１６に供給されている。その結果、第４の選択装置１６においてＭＡＣ１５の出力信号ｍａｃ ｏｕｔ（ａ＊ｘ＋ｂ＊ｙ）が選択され、信号ｅｓｅｌ ｏｕｔ（ａ＊ｘ＋ｂ＊ｙ）としてレジスタ１７に出力される。
レジスタ１７では、ＭＡＣ１５の演算結果ａ＊ｘ＋ｂ＊ｙが格納され、この格納データが演算出力Ｃとして出力される。
【００５７】
次に、Ｃ＝ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚを求める場合を説明する。
【００５８】
この場合、制御信号ＡＳＥＬが係数入力Ｃ２Ｉ（ｃ）を選択するように設定されて第１の選択装置１１に供給される。
また、制御信号ＢＳＥＬがデータ入力Ｄ２Ｉ（ｚ）を選択するように設定されて第２の選択装置１２に供給される。
また、制御信号ＣＳＥＬがカスケード入力Ｐ１（ａ＊ｘ＋ｂ＊ｙ）を選択するように設定されて第３の選択装置１３に供給される。
これにより、第１の選択装置１１から係数ｃが信号ａｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第２の選択装置１２からデータｚが信号ｂｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第３の選択装置１３から、カスケード入力データａ＊ｘ＋ｂ＊ｙが信号ｃｓｅｌ ｏｕｔとして第１の選択装置１１、ＡＬＵ１４およびＭＡＣ１５に出力される。
【００５９】
このとき、乗加算を指定する制御信号ＭＡＣＭＤが、ＭＡＣ１５に供給される。これにより、ＭＡＣ１５において、係数ｃとデータｚとの乗算が行われ、さらに、その結果ｃ＊ｚと（ａ＊ｘ＋ｂ＊ｙ）との加算が行われる。これにより、ＭＡＣ１５から乗加算結果ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚが信号ｍａｃ ｏｕｔとして第４の選択装置１６に出力される。
そして、制御信号ＥＳＥＬがＭＡＣ１５の出力を選択するように、第４の選択装置１６に供給されている。その結果、第４の選択装置１６においてＭＡＣ１５の出力信号ｍａｃ ｏｕｔ（ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚ）が選択され、信号ｅｓｅｌ ｏｕｔ（ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚ）としてレジスタ１７に出力される。
レジスタ１７では、ＭＡＣ１５の演算結果ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚが格納され、この格納データが演算出力Ｃとして出力される。
【００６０】
次に、Ｃ＝ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚ＋ｄ＊ｗを求める場合を説明する。
【００６１】
この場合、制御信号ＡＳＥＬが係数入力Ｃ３Ｉ（ｄ）を選択するように設定されて第１の選択装置１１に供給される。
また、制御信号ＢＳＥＬがデータ入力Ｄ３Ｉ（ｗ）を選択するように設定されて第２の選択装置１２に供給される。
また、制御信号ＣＳＥＬがカスケード入力Ｐ２（ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚ）を選択するように設定されて第３の選択装置１３に供給される。
これにより、第１の選択装置１１から係数ｄが信号ａｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第２の選択装置１２からデータｗが信号ｂｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第３の選択装置１３から、カスケード入力データａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚが信号ｃｓｅｌ ｏｕｔとして第１の選択装置１１、ＡＬＵ１４およびＭＡＣ１５に出力される。
【００６２】
このとき、乗加算を指定する制御信号ＭＡＣＭＤが、ＭＡＣ１５に供給される。これにより、ＭＡＣ１５において、係数ｄとデータｗとの乗算が行われ、さらに、その結果ｄ＊ｗと（ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚ）との加算が行われる。これにより、ＭＡＣ１５から乗加算結果ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚ＋ｄ＊ｗが信号ｍａｃ ｏｕｔとして第４の選択装置１６に出力される。
そして、制御信号ＥＳＥＬがＭＡＣ１５の出力を選択するように、第４の選択装置１６に供給されている。その結果、第４の選択装置１６においてＭＡＣ１５の出力信号ｍａｃ ｏｕｔ（ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚ＋ｄ＊ｗ）が選択され、信号ｅｓｅｌ ｏｕｔ（ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚ＋ｄ＊ｗ）としてレジスタ１７に出力される。
レジスタ１７では、ＭＡＣ１５の演算結果ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚ＋ｄ＊ｗが格納され、この格納データが演算出力Ｃとして出力される。
【００６３】
以上説明したように、本第１の実施形態によれば、制御信号ＡＳＥＬに応じて係数入力Ｃ０Ｉ，Ｃ１Ｉ，…，ＣｋＩとデータ０を選択する第１の選択装置１１と、制御信号ＢＳＥＬに応じてデータ入力Ｄ０Ｉ，Ｄ１Ｉ，…，ＤｍＩを選択する第２の選択装置１２と、制御信号ＣＳＥＬに応じてカスケード入力Ｐ０，Ｐ１，…，Ｐｎ−2 とデータ０を選択する第３の選択装置１３と、第１の選択装置１１の出力信号ａｓｅｌ＿out 、第２の選択装置１２の出力信号ｂｓｅｌ＿out 、および第３の選択装置１３の出力信号ｃｓｅｌ＿out を入力として、制御信号ＡＬＵＭＤ，ＲＮＤＭＤ，ＳＡＴＭＤ，ＯＳＦＭＤ，ＡＣＣＭＤの指示に応じた論理演算を行うＡＬＵ１４と、第１の選択装置１１の出力信号ａｓｅｌ＿out 、第２の選択装置１２の出力信号ｂｓｅｌ＿out 、および第３の選択装置１３の出力信号ｃｓｅｌ＿out を入力として、制御信号ＭＡＣＭＤ，ＲＮＤＭＤ，ＳＡＴＭＤ，ＯＳＦＭＤ，ＡＣＣＭＤの指示に応じた演算を行うＭＡＣ１５と、制御信号ＥＳＥＬに応じて、ＡＬＵ１４の出力信号ａｌｕ＿out とＭＡＣ１５の出力信号ｍａｃ＿out のいずれかを選択する第４の選択装置１６とを設けたので、演算装置自体を外部から再構成可能である。
【００６４】
したがって、本第１の実施形態によれば、論理レベルの最適化ができることはもとより、構成情報の増大を防止でき、集積回路としての面積効率の悪化を防止できる演算装置を実現できる利点がある。
また、演算装置を再構成可能であることから、カスケード演算だけでなく並列演算も同一のハードウェアで実現することが可能になっている。そのため、演算装置の数を増やして多くの並列化可能な処理を効率良く実行することもできる。
【００６５】
第２実施形態
図３は、本発明に係る並列演算装置の第２の実施形態を示す構成図である。
【００６６】
本第２の実施形態では、図１の演算装置を複数個（ｎ個）カスケード接続して、他の演算装置の演算結果をカスケード入力することで、多くの並列化可能な処理を効率良く実行するように構成している。
【００６７】
各演算装置１０−０〜１０−n-1 （ＰＥ０〜ＰＥｎ−１）は、係数入力端子ＰＥ Ｃ０Ｉ〜ＰＥ ＣｋＩ、データ入力端子ＰＥ Ｄ０Ｉ〜ＰＥ ＤｍＩ、カスケード入力端子ＰＥ Ｐ０〜ＰＥ Ｐｎ−２、係数出力端子ＰＥ Ｃ０Ｏ〜ＰＥ ＣｋＯ、データ出力端子ＰＥ Ｄ０Ｏ〜ＰＥ ＤｍＯ、および演算出力端子ＰＥ Ｃを有している。
【００６８】
演算装置１０−０においては、係数入力端子ＰＥ Ｃ０Ｉ〜ＰＥ ＣｋＩに係数Ｃ０Ｉ〜ＣｋＩが供給され、データ入力端子ＰＥ Ｄ０Ｉ〜ＰＥ ＤｍＩにデータ入力Ｄ０Ｉ〜ＤｍＩが供給され、カスケード入力ＰＥ Ｐ０〜ＰＥ Ｐｎ−２に他の演算装置１０−１〜１０−n-1 の演算出力端子ＰＥ Ｃから出力される演算結果信号ＯＴ１〜ＯＴｎ−１が供給される。たとえばカスケード入力ＰＥ Ｐ０には、最終段の演算装置１０−n-1 の演算結果信号ＯＴｎ−１が供給され、カスケード入力端子ＰＥ Ｐｎ−２に次段の演算装置１０−１の演算結果信号ＯＴ１が供給される。
また、演算装置１０−０において、係数出力端子ＰＥ Ｃ０Ｏ〜ＰＥ ＣｋＯからＣ０ＦＩＦＯ１８−０〜ＣｋＦＩＦＯ１８−ｋで所望の遅延量だけ遅延された係数が係数出力ｃ００〜ｃｋ０として次段の演算装置１０−１に出力され、データ出力端子ＰＥ Ｄ０Ｏ〜ＰＥ ＤｍＯからＤ０ＦＩＦＯ１９−０〜ＤｍＦＩＦＯ１９−ｍで所望の遅延量だけ遅延されたデータがデータ出力ｄ００〜ｄｍ０として次段の演算装置１０−１に出力される。
また、演算装置１０−０においては、演算出力端子ＰＥ Ｃから演算結果信号ＯＴ０が他の演算装置１０−１〜１０−n-1 に出力される。
なお、図３においては、演算装置１０−０に供給されるべき演算制御信号ＡＳＥＬ，ＢＳＥＬ，ＥＳＥＬ，ＭＡＣＭＤ，ＡＬＵＭＤ，ＲＮＤＭＤ，ＳＡＴＭＤ，ＯＳＦＭＤ，ＡＣＣＭＤ、および遅延制御信号Ｃ０ＤＬ，Ｃ１ＤＬ，…ＣｋＤＬ，Ｄ０ＤＬ，Ｄ１ＤＬ，…ＤｍＤＬは、簡単化のため制御信号ＣＴＬ０として示している。
【００６９】
演算装置１０−１においては、係数入力端子ＰＥ Ｃ０Ｉ〜ＰＥ ＣｋＩに演算装置１０−０の係数出力ｃ００〜ｃｋ０が供給され、データ入力端子ＰＥ Ｄ０Ｉ〜ＰＥ ＤｍＩに演算装置１０−０のデータ出力ｄ００〜ｄｍ０が供給され、カスケード入力ＰＥ Ｐ０〜ＰＥ Ｐｎ−２に他の演算装置１０−０、１０−２（図示せず）〜１０−n-1 の演算出力端子ＰＥ Ｃから出力される演算結果信号ＯＴ０，ＯＴ２〜ＯＴｎ−１が供給される。たとえばカスケード入力ＰＥ Ｐ０には、前段の演算装置１０−０の演算結果信号ＯＴ０が供給され、カスケード入力端子ＰＥ Ｐｎ−２に演算装置１０−n-2 の演算結果信号ＯＴｎ−２が供給される。
また、演算装置１０−１において、係数出力端子ＰＥ Ｃ０Ｏ〜ＰＥ ＣｋＯからＣ０ＦＩＦＯ１８−０〜ＣｋＦＩＦＯ１８−ｋで所望の遅延量だけ遅延された係数が係数出力ｃ０１〜ｃｋ１として次段の演算装置１０−２に出力され、データ出力端子ＰＥ Ｄ０Ｏ〜ＰＥ ＤｍＯからＤ０ＦＩＦＯ１９−０〜ＤｍＦＩＦＯ１９−ｍで所望の遅延量だけ遅延されたデータがデータ出力ｄ０１〜ｄｍ１として次段の演算装置１０−２に出力される。
また、演算装置１０−１においては、演算出力端子ＰＥ Ｃから演算結果信号ＯＴ１が他の演算装置１０−０，１０−２〜１０−n-1 に出力される。
なお、図３においては、演算装置１０−１に供給されるべき演算制御信号ＡＳＥＬ，ＢＳＥＬ，ＥＳＥＬ，ＭＡＣＭＤ，ＡＬＵＭＤ，ＲＮＤＭＤ，ＳＡＴＭＤ，ＯＳＦＭＤ，ＡＣＣＭＤ、および遅延制御信号Ｃ０ＤＬ，Ｃ１ＤＬ，…ＣｋＤＬ，Ｄ０ＤＬ，Ｄ１ＤＬ，…ＤｍＤＬは、簡単化のため制御信号ＣＴＬ１として示している。
【００７０】
同様に、演算装置１０−ｉ（２≦ｉ≦ｎ−２）においては、係数入力端子ＰＥ Ｃ０Ｉ〜ＰＥ ＣｋＩに演算装置１０−i-1 の係数出力ｃ０i-1 〜ｃｋi-1 が供給され、データ入力端子ＰＥ Ｄ０Ｉ〜ＰＥ ＤｍＩに演算装置１０−i-1 のデータ出力ｄ０i-1 〜ｄｍi-1 が供給され、カスケード入力ＰＥ Ｐ０〜ＰＥ Ｐｎ−２に他の演算装置１０−０〜１０−i-1 ，１０−i+1 〜１０−n-1 の演算出力端子ＰＥ Ｃから出力される演算結果信号ＯＴ０〜ＯＴｉ−１，ＯＴｉ＋１〜ＯＴｎ−１が供給される。
また、演算装置１０−ｉにおいて、係数出力端子ＰＥ Ｃ０Ｏ〜ＰＥ ＣｋＯからＣ０ＦＩＦＯ１８−０〜ＣｋＦＩＦＯ１８−ｋで所望の遅延量だけ遅延された係数が係数出力ｃ０ｉ〜ｃｋｉとして次段の演算装置１０−i+1 に出力され、データ出力端子ＰＥ Ｄ０Ｏ〜ＰＥ ＤｍＯからＤ０ＦＩＦＯ１９−０〜ＤｍＦＩＦＯ１９−ｍで所望の遅延量だけ遅延されたデータがデータ出力ｄ０ｉ〜ｄｍｉとして次段の演算装置１０−i+1 に出力される。
また、演算装置１０−ｉにおいては、演算出力端子ＰＥ Ｃから演算結果信号ＯＴｉが他の演算装置１０−０〜１０−i-1 ，１０−i+1 〜１０−n-1 に出力される。
なお、図示しないが、演算装置１０−ｉには、演算制御信号ＡＳＥＬ，ＢＳＥＬ，ＥＳＥＬ，ＭＡＣＭＤ，ＡＬＵＭＤ，ＲＮＤＭＤ，ＳＡＴＭＤ，ＯＳＦＭＤ，ＡＣＣＭＤ、および遅延制御信号Ｃ０ＤＬ，Ｃ１ＤＬ，…ＣｋＤＬ，Ｄ０ＤＬ，Ｄ１ＤＬ，…ＤｍＤＬが、たとえば制御信号ＣＴＬｉとして供給される。
【００７１】
そして、演算装置１０−n-1 においては、係数入力端子ＰＥ Ｃ０Ｉ〜ＰＥ ＣｋＩに演算装置１０−n-2 の係数出力ｃ０n-2 〜ｃｋn-2 が供給され、データ入力端子ＰＥ Ｄ０Ｉ〜ＰＥ ＤｍＩに演算装置１０−n-2 のデータ出力ｄ０n-2 〜ｄｍn-2 が供給され、カスケード入力ＰＥ Ｐ０〜ＰＥ Ｐｎ−２に他の演算装置１０−０〜１０−n-2 の演算出力端子ＰＥ Ｃから出力される演算結果信号ＯＴ０〜ＯＴｎ−２が供給される。たとえばカスケード入力ＰＥ Ｐ０には、前段の演算装置１０−n-2 の演算結果信号ＯＴn-2 が供給され、カスケード入力端子ＰＥ Ｐｎ−２に演算装置１０−０の演算結果信号ＯＴ０が供給される。
また、演算装置１０−n-1 において、係数出力端子ＰＥ Ｃ０Ｏ〜ＰＥ ＣｋＯからの係数出力、およびデータ出力端子ＰＥ Ｄ０Ｏ〜ＰＥ ＤｍＯからのデータ出力の他の演算装置への出力は行われない。
また、演算装置１０−n-1 においては、演算出力端子ＰＥ Ｃから演算結果信号ＯＴｎ−１が他の演算装置１０−０〜１０−n-2 に出力される。
なお、図３においては、演算装置１０−n-1 に供給されるべき演算制御信号ＡＳＥＬ，ＢＳＥＬ，ＥＳＥＬ，ＭＡＣＭＤ，ＡＬＵＭＤ，ＲＮＤＭＤ，ＳＡＴＭＤ，ＯＳＦＭＤ，ＡＣＣＭＤ、および遅延制御信号Ｃ０ＤＬ，Ｃ１ＤＬ，…ＣｋＤＬ，Ｄ０ＤＬ，Ｄ１ＤＬ，…ＤｍＤＬは、簡単化のため制御信号ＣＴＬｎ−１として示している。
【００７２】
次に、本第２の実施形態の動作を、図４に示すように、カスケード接続する演算装置数を４（ｎ＝４）の場合を例に説明する。
この場合における各演算装置１０Ａ−０〜１０Ａ−３は、図２に示す構成を有する。したがって、動作説明は、図２および図４に関連付けて行う。
なおここでは、以下の演算を行う場合を例に説明する。
【００７３】
（数４）
ｏｕｔ＝ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚ＋ｄ＊ｗ
【００７４】
そして、演算装置１０Ａ−０への係数入力Ｃ０Ｉ，Ｃ１Ｉ，Ｃ２Ｉ，Ｃ３Ｉはそれぞれａ，ｂ，ｃ，ｄ、データ入力Ｄ０Ｉ，Ｄ１Ｉ，Ｄ２Ｉ，Ｄ３Ｉはそれぞれｘ，ｙ，ｚ，ｗであるものとする。
【００７５】
まず、演算装置１０Ａ−０においては、制御信号ＣＴＬ０により、演算結果信号ＯＴ０＝ａ＊ｘとなる演算が行われるように制御が行われる。
【００７６】
この場合、演算装置１０Ａ−０において、制御信号ＡＳＥＬが係数入力Ｃ０Ｉ（ａ）を選択するように設定されて第１の選択装置１１に供給される。
また、制御信号ＢＳＥＬがデータ入力Ｄ０Ｉ（ｘ）を選択するように設定されて第２の選択装置１２に供給される。
これにより、第１の選択装置１１から係数ａが信号ａｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第２の選択装置１２からデータｘが信号ｂｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。
【００７７】
このとき、乗算を指定する制御信号ＭＡＣＭＤが、ＭＡＣ１５に供給される。これにより、ＭＡＣ１５において、係数ａとデータｘとの乗算が行われ、その結果ａ＊ｘが信号ｍａｃ ｏｕｔとして第４の選択装置１６に出力される。
そして、制御信号ＥＳＥＬがＭＡＣ１５の出力を選択するように、第４の選択装置１６に供給されている。その結果、第４の選択装置１６においてＭＡＣ１５の出力信号ｍａｃ ｏｕｔ（ａ＊ｘ）が選択され、信号ｅｓｅｌ ｏｕｔ（ａ＊ｘ）としてレジスタ１７に出力される。
レジスタ１７では、ＭＡＣ１５の演算結果ａ＊ｘが格納され、この格納データが演算出力端子ＰＥ Ｃから演算結果信号ＯＴ０として、演算装置１０Ａ−１のカスケード入力ＰＥ Ｐ０、演算装置１０Ａ−２のカスケード入力ＰＥ Ｐ１、および演算装置１０Ａ−３のカスケード入力ＰＥ Ｐ２に出力される。
【００７８】
演算装置１０Ａ−０においては、Ｃ０ＦＩＦＯ１８−０〜Ｃ３ＦＩＦＯ１８−３で所望の遅延量だけ遅延された係数ａ，ｂ，ｃ，ｄが係数出力端子ＰＥ Ｃ０Ｏ〜ＰＥ Ｃ３Ｏから係数出力ｃ００〜ｃ３０として次段の演算装置１０Ａ−１の係数入力端子ＰＥ Ｃ０Ｉ〜ＰＥ Ｃ３Ｉに出力され、Ｄ０ＦＩＦＯ１９−０〜Ｄ３ＦＩＦＯ１９−３で所望の遅延量だけ遅延されたデータｘ，ｙ，ｚ，ｗがデータ出力端子ＰＥ Ｄ０Ｏ〜ＰＥ Ｄ３Ｏからデータ出力ｄ００〜ｄ３０として次段の演算装置１０Ａ−１のデータ入力端子ＰＥ Ｄ０Ｉ〜ＰＥ Ｄ３Ｉに出力される。
【００７９】
次に、演算装置１０Ａ−１においては、制御信号ＣＴＬ１により、演算結果信号ＯＴ１＝ＯＴ０＋ｂ＊ｙ＝ａ＊ｘ＋ｂ＊ｙとなる演算が行われるように制御が行われる。
【００８０】
この場合、制御信号ＡＳＥＬが係数入力端子ＰＥ Ｃ１Ｉに供給される演算装置１０Ａ−０の係数出力ｃ１０（ｂ）を選択するように設定されて第１の選択装置１１に供給される。
また、制御信号ＢＳＥＬがデータ入力端子ＰＥ Ｄ１Ｉに供給される演算装置１０Ａ−０のデータ出力ｄ１０（ｙ）を選択するように設定されて第２の選択装置１２に供給される。
また、制御信号ＣＳＥＬがカスケード入力端子ＰＥ Ｐ０に供給される演算装置１０Ａ−０の演算結果信号ＯＴ０（ａ＊ｘ）を選択するように設定されて第３の選択装置１３に供給される。
これにより、第１の選択装置１１から係数ｂが信号ａｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第２の選択装置１２からデータｙが信号ｂｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第３の選択装置１３から、カスケード入力データａ＊ｘが信号ｃｓｅｌ ｏｕｔとして第１の選択装置１１、ＡＬＵ１４およびＭＡＣ１５に出力される。
【００８１】
このとき、乗加算を指定する制御信号ＭＡＣＭＤが、ＭＡＣ１５に供給される。これにより、ＭＡＣ１５において、係数ｂとデータｙとの乗算が行われ、さらに、その結果ｂ＊ｙとａ＊ｘとの加算が行われる。これにより、ＭＡＣ１５から乗加算結果ａ＊ｘ＋ｂ＊ｙが信号ｍａｃ ｏｕｔとして第４の選択装置１６に出力される。
そして、制御信号ＥＳＥＬがＭＡＣ１５の出力を選択するように、第４の選択装置１６に供給されている。その結果、第４の選択装置１６においてＭＡＣ１５の出力信号ｍａｃ ｏｕｔ（ａ＊ｘ＋ｂ＊ｙ）が選択され、信号ｅｓｅｌ ｏｕｔ（ａ＊ｘ＋ｂ＊ｙ）としてレジスタ１７に出力される。
レジスタ１７では、ＭＡＣ１５の演算結果ａ＊ｘ＋ｂ＊ｙが格納され、この格納データが演算出力端子ＰＥ Ｃから演算結果信号ＯＴ１として、演算装置１０Ａ−０のカスケード入力ＰＥ Ｐ２、演算装置１０Ａ−２のカスケード入力ＰＥ Ｐ０、および演算装置１０Ａ−３のカスケード入力ＰＥ Ｐ１に出力される。
【００８２】
演算装置１０Ａ−１においては、Ｃ０ＦＩＦＯ１８−０〜Ｃ３ＦＩＦＯ１８−３で所望の遅延量だけ遅延された係数ａ，ｂ，ｃ，ｄが係数出力端子ＰＥ Ｃ０Ｏ〜ＰＥ Ｃ３Ｏから係数出力ｃ０１〜ｃ３１として次段の演算装置１０Ａ−２の係数入力端子ＰＥ Ｃ０Ｉ〜ＰＥ Ｃ３Ｉに出力され、Ｄ０ＦＩＦＯ１９−０〜ＤｍＦＩＦＯ１９−３で所望の遅延量だけ遅延されたデータｘ，ｙ，ｚ，ｗがデータ出力端子ＰＥ Ｄ０Ｏ〜ＰＥ Ｄ３Ｏからデータ出力ｄ０１〜ｄ３１として次段の演算装置１０Ａ−２のデータ入力端子ＰＥ Ｄ０Ｉ〜ＰＥ Ｄ３Ｉに出力される。
【００８３】
次に、演算装置１０Ａ−２においては、制御信号ＣＴＬ２により、演算結果信号ＯＴ２＝ＯＴ１＋ｃ＊ｚ＝ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚとなる演算が行われるように制御が行われる。
【００８４】
この場合、制御信号ＡＳＥＬが係数入力端子ＰＥ Ｃ２Ｉに供給される演算装置１０Ａ−１の係数出力ｃ２１（ｃ）を選択するように設定されて第１の選択装置１１に供給される。
また、制御信号ＢＳＥＬがデータ入力端子ＰＥ Ｄ２Ｉに供給される演算装置１０Ａ−１のデータ出力ｄ２１（ｚ）を選択するように設定されて第２の選択装置１２に供給される。
また、制御信号ＣＳＥＬがカスケード入力端子ＰＥ Ｐ０に供給される演算装置１０Ａ−１の演算結果信号ＯＴ１（ａ＊ｘ＋ｂ＊ｙ）を選択するように設定されて第３の選択装置１３に供給される。
これにより、第１の選択装置１１から係数ｃが信号ａｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第２の選択装置１２からデータｚが信号ｂｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第３の選択装置１３から、カスケード入力データａ＊ｘ＋ｂ＊ｙが信号ｃｓｅｌ ｏｕｔとして第１の選択装置１１、ＡＬＵ１４およびＭＡＣ１５に出力される。
【００８５】
このとき、乗加算を指定する制御信号ＭＡＣＭＤが、ＭＡＣ１５に供給される。これにより、ＭＡＣ１５において、係数ｃとデータｚとの乗算が行われ、さらに、その結果ｃ＊ｚと（ａ＊ｘ＋ｂ＊ｙ）との加算が行われる。これにより、ＭＡＣ１５から乗加算結果ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚが信号ｍａｃ ｏｕｔとして第４の選択装置１６に出力される。
そして、制御信号ＥＳＥＬがＭＡＣ１５の出力を選択するように、第４の選択装置１６に供給されている。その結果、第４の選択装置１６においてＭＡＣ１５の出力信号ｍａｃ ｏｕｔ（ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚ）が選択され、信号ｅｓｅｌ ｏｕｔ（ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚ）としてレジスタ１７に出力される。
レジスタ１７では、ＭＡＣ１５の演算結果ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚが格納され、この格納データが演算出力端子ＰＥ Ｃから演算結果信号ＯＴ２として、演算装置１０Ａ−０のカスケード入力ＰＥ Ｐ１、演算装置１０Ａ−２のカスケード入力ＰＥ Ｐ２、および演算装置１０Ａ−３のカスケード入力ＰＥ Ｐ０に出力される。
【００８６】
演算装置１０Ａ−２においては、Ｃ０ＦＩＦＯ１８−０〜Ｃ３ＦＩＦＯ１８−３で所望の遅延量だけ遅延された係数ａ，ｂ，ｃ，ｄが係数出力端子ＰＥ Ｃ０Ｏ〜ＰＥ Ｃ３Ｏから係数出力ｃ０２〜ｃ３２として次段の演算装置１０Ａ−３の係数入力端子ＰＥ Ｃ０Ｉ〜ＰＥ Ｃ３Ｉに出力され、Ｄ０ＦＩＦＯ１９−０〜ＤｍＦＩＦＯ１９−３で所望の遅延量だけ遅延されたデータｘ，ｙ，ｚ，ｗがデータ出力端子ＰＥ Ｄ０Ｏ〜ＰＥ Ｄ３Ｏからデータ出力ｄ０２〜ｄ３２として次段の演算装置１０Ａ−３のデータ入力端子ＰＥ Ｄ０Ｉ〜ＰＥ Ｄ３Ｉに出力される。
【００８７】
次に、演算装置１０Ａ−３においては、制御信号ＣＴＬ３により、演算結果信号ＯＴ３＝ＯＴ２＋ｄ＊ｗ＝ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚ＋ｄ＊ｗとなる演算が行われるように制御が行われる。
【００８８】
この場合、制御信号ＡＳＥＬが係数入力端子ＰＥ Ｃ３Ｉに供給される演算装置１０Ａ−２の係数出力ｃ３２（ｄ）を選択するように設定されて第１の選択装置１１に供給される。
また、制御信号ＢＳＥＬがデータ入力端子ＰＥ Ｄ３Ｉに供給される演算装置１０Ａ−２のデータ出力ｄ３２（ｗ）を選択するように設定されて第２の選択装置１２に供給される。
また、制御信号ＣＳＥＬがカスケード入力端子ＰＥ Ｐ０に供給される演算装置１０Ａ−２の演算結果信号ＯＴ２（ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚ）を選択するように設定されて第３の選択装置１３に供給される。
これにより、第１の選択装置１１から係数ｄが信号ａｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第２の選択装置１２からデータｗが信号ｂｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第３の選択装置１３から、カスケード入力データａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚが信号ｃｓｅｌ ｏｕｔとして第１の選択装置１１、ＡＬＵ１４およびＭＡＣ１５に出力される。
【００８９】
このとき、乗加算を指定する制御信号ＭＡＣＭＤが、ＭＡＣ１５に供給される。これにより、ＭＡＣ１５において、係数ｄとデータｗとの乗算が行われ、さらに、その結果ｄ＊ｗと（ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚ）との加算が行われる。これにより、ＭＡＣ１５から乗加算結果ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚ＋ｄ＊ｗが信号ｍａｃ ｏｕｔとして第４の選択装置１６に出力される。
そして、制御信号ＥＳＥＬがＭＡＣ１５の出力を選択するように、第４の選択装置１６に供給されている。その結果、第４の選択装置１６においてＭＡＣ１５の出力信号ｍａｃ ｏｕｔ（ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚ＋ｄ＊ｗ）が選択され、信号ｅｓｅｌ ｏｕｔ（ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚ＋ｄ＊ｗ）としてレジスタ１７に出力される。
レジスタ１７では、ＭＡＣ１５の演算結果ａ＊ｘ＋ｂ＊ｙ＋ｃ＊ｚ＋ｄ＊ｗが格納され、この格納データが演算出力端子ＰＥ Ｃから演算結果信号ＯＴ３として所望の演算結果ｏｕｔとして出力され、演算装置１０Ａ−０のカスケード入力ＰＥ Ｐ０、演算装置１０Ａ−２のカスケード入力ＰＥ Ｐ１、および演算装置１０Ａ−２のカスケード入力ＰＥ Ｐ２に出力される。
【００９０】
以上において、図２において図４に示す遅延制御信号Ｃ０ＤＬ，Ｃ１ＤＬ，Ｃ２ＤＬ，Ｃ３ＤＬはすべて遅延０となるように、各Ｃ０ＦＩＦＯ１８−０〜Ｃ３ＦＩＦＯ１８−３に供給される。
また、遅延制御信号Ｄ０ＤＬは遅延０となるように、Ｄ０ＦＩＦＯ１９−０に供給され、遅延制御信号Ｄ１ＤＬは遅延１となるように、Ｄ１ＦＩＦＯ１９−１に供給され、遅延制御信号Ｄ２ＤＬは遅延２となるように、Ｄ２ＦＩＦＯ１９−２に供給され、遅延制御信号Ｄ３ＤＬは遅延３となるように、Ｄ３ＦＩＦＯ１９−３に供給される。
【００９１】
以上説明したように、本第２の実施形態によれば、制御信号ＡＳＥＬに応じて係数入力Ｃ０Ｉ，Ｃ１Ｉ，…，ＣｋＩとデータ０を選択する第１の選択装置１１と、制御信号ＢＳＥＬに応じてデータ入力Ｄ０Ｉ，Ｄ１Ｉ，…，ＤｍＩを選択する第２の選択装置１２と、制御信号ＣＳＥＬに応じてカスケード入力Ｐ０，Ｐ１，…，Ｐｎ−2 とデータ０を選択する第３の選択装置１３と、第１の選択装置１１の出力信号ａｓｅｌ＿out 、第２の選択装置１２の出力信号ｂｓｅｌ＿out 、および第３の選択装置１３の出力信号ｃｓｅｌ＿out を入力として、制御信号ＡＬＵＭＤ，ＲＮＤＭＤ，ＳＡＴＭＤ，ＯＳＦＭＤ，ＡＣＣＭＤの指示に応じた論理演算を行うＡＬＵ１４と、第１の選択装置１１の出力信号ａｓｅｌ＿out 、第２の選択装置１２の出力信号ｂｓｅｌ＿out 、および第３の選択装置１３の出力信号ｃｓｅｌ＿out を入力として、制御信号ＭＡＣＭＤ，ＲＮＤＭＤ，ＳＡＴＭＤ，ＯＳＦＭＤ，ＡＣＣＭＤの指示に応じた演算を行うＭＡＣ１５と、制御信号ＥＳＥＬに応じて、ＡＬＵ１４の出力信号ａｌｕ＿out とＭＡＣ１５の出力信号ｍａｃ＿out のいずれかを選択する第４の選択装置１６と、遅延制御信号Ｃ０ＤＬ〜ＣｋＤＬの値により任意のサイクル遅延可能であり、係数入力を遅延制御信号Ｃ０ＤＬ〜ＣｋＤＬの値に応じたサイクルを持って遅延させて、係数出力を得、次段の装置に出力するＣ０ＦＩＦＯ１８−０〜ＣｋＦＩＦＯ１８−ｋと、制御信号Ｄ０ＤＬ〜ＤｍＤＬの値により任意のサイクル遅延可能であり、データ入力を遅延制御信号Ｄ０ＤＬ〜ＤｍＤＬの値に応じたサイクルを持って遅延させて、データ出力を得、次段の装置に出力するＤ０ＦＩＦＯ１９−０〜ＤｍＦＩＦＯ１９−ｍとを有する複数の演算装置１０−０〜１０−n-1 を設け、演算装置１０−０〜１０−n-1 の係数およびデータの入出力同士をカスケード接続し、かつ、各演算装置の演算結果信号ＯＴ０〜ＯＴｎ−１を他の装置のカスケード入力ＰＥ＿Ｐ０，ＰＥ＿Ｐ１，…，ＰＥ＿Ｐｎ−2 として供給するように構成したので、演算装置自体を外部から再構成可能である。
【００９２】
したがって、本第２の実施形態によれば、上述した第１の実施形態と同様に、論理レベルの最適化ができることはもとより、構成情報の増大を防止でき、集積回路としての面積効率の悪化を防止できる演算装置を実現できる利点がある。
また、演算装置を再構成可能であることから、カスケード演算だけでなく並列演算も同一のハードウェアで実現することが可能になっている。そのため、演算装置の数を増やして多くの並列化可能な処理を効率良く実行することもできる。
【００９３】
また、ＭＡＣやＡＬＵが１あるいは２であるＤＳＰではＭＥＭＷ＝ａｘ＋ｂｙ＋ｃｚ＋ｄｗの演算を行う場合、一時レジスタにデータを書き戻して演算結果を得る必要があったのに対して、本第２の実施形態によれば、各演算装置にａｘ，ｂｙ，ｃｚ，ｄｗの演算を割り当て、さらに前段の演算結果をカスケードすることで一度にＭＥＭＷの演算が可能になっている。
そのため、実行サイクル数が短くなる。また一時レジスタへのアクセスが少なくなるため電力の消費も抑えることができる利点がある。
【００９４】
第３実施形態
図５は、本発明に係る演算装置の第３の実施形態を示す構成図である。
【００９５】
図５の演算装置２０は、構成情報に基づいて再構成可能な演算装置であって、４入力４出力の演算を行い、バタフライ演算とシフト演算を同時に実行可能に構成されている。
【００９６】
本演算装置２０は、単項演算手段としてのシフト演算器（ＳＦＴ０）２１−０、およびシフト演算器（ＳＦＴ１）２１−１、入力選択装置（ＲＳＥＬ０）２２−０、入力選択装置（ＲＳＥＬ１）２２−１、２入力２出力のバタフライ演算器（ＢＴＦ０）２３、出力選択装置（ＤＳＥＬ０）２４−０、出力選択装置（ＤＳＥＬ１）２４−１、出力選択装置（ＷＳＥＬ０）２５−０、および出力選択装置（ＷＳＥＬ１）２５−１を有している。
【００９７】
そして、演算装置２０は、データ入力ＭＥＭＲ０，ＭＥＭＲ１，Ｉ０，Ｉ１、およびデータ出力ＭＥＭＷ０，ＭＥＭＷ１，Ｄ０，Ｄ１を有し、また、再構成等のための制御信号ＢＴＦＭＤ０，Ｒ０ＳＥＬ，Ｒ１ＳＥＬ，Ｗ０ＳＥＬ，Ｗ１ＳＥＬ，Ｄ０ＳＥＬ，Ｄ１ＳＥＬが供給される。
【００９８】
シフト演算器２１−０は、データ入力ＭＥＭＲ０の値を制御信号ＳＦＴ０ＭＤに応じて単項演算、具体的には、制御信号ＳＦＴ０ＭＤが示す値（シフト量）に応じて左または右に任意ビットだけシフトする演算を行って、その結果を入力選択装置２２−０および出力選択装置２４−０に出力する。なお、シフト演算器２１−０は、たとえば制御信号ＳＦＴ０ＭＤが示すシフト量がゼロの場合には、シフト演算を行わず、データ入力ＭＥＭＲ０をそのまま出力する。
【００９９】
シフト演算器２１−１は、データ入力ＭＥＭＲ１の値を制御信号ＳＦＴ１ＭＤに応じて単項演算、具体的には、制御信号ＳＦＴ１ＭＤが示す値（シフト量）に応じて左または右に任意ビットだけシフトする演算を行って、その結果を入力選択装置２２−１および出力選択装置２４−１に出力する。なお、シフト演算器２１−１は、たとえば制御信号ＳＦＴ１ＭＤが示すシフト量がゼロの場合には、シフト演算を行わず、データ入力ＭＥＭＲ１をそのまま出力する。
【０１００】
入力選択装置２２−０は、制御信号Ｒ０ＳＥＬに応じて、シフト演算器２１−０の出力データおよびデータ入力Ｉ０のいずれかを選択し、信号ｒ０ｓｅｌ out としてバタフライ演算器２３に出力する。
【０１０１】
入力選択装置２２−１は、制御信号Ｒ１ＳＥＬに応じて、シフト演算器２１−１の出力データおよびデータ入力Ｉ１のいずれかを選択し、信号ｒ１ｓｅｌ out としてバタフライ演算器２３に出力する。
【０１０２】
バタフライ演算器２３は、入力端子ＤＡに入力選択装置２２−０の出力信号ｒ０ｓｅｌ out を入力し、入力端子ＤＢの入力選択装置２２−１の出力信号ｒ１ｓｅｌ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ０の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ０ａ out として出力選択装置２４−０および２５−０に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ０ｂ out として出力選択装置２４−１および２５−１に出力する。
【０１０３】
具体的には、バタフライ演算器２３は、制御信号ＢＴＦＭＤ０の値により、以下のいずれかの演算を選択的に行う。
【０１０４】
（数５）
btf0ａ out ＝ r1sel out ，btf0ｂ out ＝ r0sel out 
btf0ａ out ＝ r1sel out ，btf0ｂ out ＝-r0sel out 
btf0ａ out ＝-r1sel out ，btf0ｂ out ＝ r0sel out 
btf0ａ out ＝-r1sel out ，btf0ｂ out ＝-r0sel out 
btf0ａ out ＝ r0sel out ，btf0ｂ out ＝ r1sel out 
btf0ａ out ＝ r0sel out ，btf0ｂ out ＝-r1sel out 
btf0ａ out ＝-r0sel out ，btf0ｂ out ＝ r1sel out 
btf0ａ out ＝-r0sel out ，btf0ｂ out ＝-r1sel out 
btf0ａ out ＝ r0sel out ＋ r1sel out ，btf0ｂ out 
＝ r0sel out − r1sel out 
btf0ａ out ＝ r0sel out ＋ r1sel out ，btf0ｂ out 
＝ r1sel out − r0sel out 
btf0ａ out ＝ r0sel out − r1sel out ，btf0ｂ out 
＝ r0sel out ＋ r1sel out 
btf0ａ out ＝ r1sel out − r0sel out ，btf0ｂ out 
＝ r0sel out ＋ r1sel out 
【０１０５】
出力選択装置２４−０は、制御信号Ｄ０ＳＥＬに応じて、シフト演算器２１−０の出力信号（たとえばＭＥＭＲ０）とバタフライ演算器２３の出力信号ｂｔｆ０ａ out のいずれかを選択し、信号Ｄ０として出力する。
【０１０６】
出力選択装置２４−１は、制御信号Ｄ１ＳＥＬに応じて、シフト演算器２１−１の出力信号（たとえばＭＥＭＲ１）とバタフライ演算器２３の出力信号ｂｔｆ０ｂ out のいずれかを選択し、信号Ｄ１として出力する。
【０１０７】
出力選択装置２５−０は、制御信号Ｗ０ＳＥＬに応じて、データ入力Ｉ０とバタフライ演算器２３の出力信号ｂｔｆ０ａ out のいずれかを選択し、信号ＭＥＭＷ０として出力する。
【０１０８】
出力選択装置２５−１は、制御信号Ｗ１ＳＥＬに応じて、データ入力Ｉ１とバタフライ演算器２３の出力信号ｂｔｆ０ｂ out のいずれかを選択し、信号ＭＥＭＷ１として出力する。
【０１０９】
次に、上記構成による動作を説明する。
ここでは、
Ｄ０＝ＭＥＭＲ０，
Ｄ１＝ＭＥＭＲ０−ＭＥＭＲ１，
ＭＥＭＷ０＝ＭＥＭＲ０＋ＭＥＭＲ１，
ＭＥＭＷ１＝Ｉ１
の演算を実行するものとする。
【０１１０】
たとえばシフト演算器２１−０，２１−１のシフト量が、制御信号ＳＦＴ０ＭＤ，ＳＦＴ１ＭＤによりゼロに設定される。
したがって、シフト演算器２１−０の出力はＭＥＭＲ０となり、入力選択装置２２−０および出力選択装置２４−０に供給される。
同様に、シフト演算器２１−１の出力はＭＥＭＲ１となり、入力選択装置２２−１および出力選択装置２４−１に供給される。
【０１１１】
入力選択装置２２−０では、制御信号Ｒ０ＳＥＬにより、シフト演算器２１−０の出力信号、すなわちＭＥＭＲ０を選択するように制御され、選択されたデータＭＥＭＲ０が信号ｒ０ｓｅｌ out として、バラフライ演算器２３の入力端子ＤＡに供給される。
また、入力選択装置２２−１では、制御信号Ｒ１ＳＥＬにより、シフト演算器２１−１の出力信号、すなわちＭＥＭＲ１を選択するように制御され、選択されたデータＭＥＭＲ１が信号ｒ１ｓｅｌ out として、バラフライ演算器２３の入力端子ＤＢに供給される。
【０１１２】
バタフライ演算器２３では、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ０により、ＯＡ＝ＤＡ＋ＤＢ，ＯＢ＝ＤＡ−ＤＢが計算されるモードに設定される。
これにより、バタフライ演算器２３においては、入力端子ＤＡに供給されたデータＭＥＭＲ０と入力端子ＤＢに供給されたデータＭＥＭＲ１とが加算され、その結果である（ＭＥＭＲ０＋ＭＥＭＲ１）が出力端子ＯＡから信号ｂｔｆ０ａ out として、出力選択装置２４−０および２５−０に出力される。
また、バタフライ演算器２３においては、入力端子ＤＡに供給されたデータＭＥＭＲ０と入力端子ＤＢに供給されたデータＭＥＭＲ１との差がとられ、その結果である（ＭＥＭＲ０−ＭＥＭＲ１）が出力端子ＯＢから信号ｂｔｆ０ｂ outとして、出力選択装置２４−１および２５−１に出力される。
【０１１３】
出力選択装置２４−０では、シフト演算器２１−０の出力信号（ＭＥＭＲ０）とバタフライ演算器２３の出力信号ｂｔｆ０ａ out （＝ＭＥＭＲ０＋ＭＥＭＲ１）のうち、シフト演算器２１−０の出力信号（ＭＥＭＲ０）を選択するように制御信号Ｄ０ＳＥＬが供給され、これにより選択されたデータが信号Ｄ０＝ＭＥＭＲ０として出力される。
【０１１４】
出力選択装置２５−０では、データ入力Ｉ０とバタフライ演算器２３の出力信号ｂｔｆ０ａ out （＝ＭＥＭＲ０＋ＭＥＭＲ１）のうち、バタフライ演算器２３の出力信号ｂｔｆ０ａ out を選択するように制御信号Ｗ０ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ０＝ＭＥＭＲ０＋ＭＥＭＲ１として出力される。
【０１１５】
また、出力選択装置２５−１では、データ入力Ｉ１とバタフライ演算器２３の出力信号ｂｔｆ０ｂ out （＝ＭＥＭＲ０−ＭＥＭＲ１）のうち、データ入力Ｉ１を選択するように制御信号Ｗ１ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ１＝Ｉ１として出力される。
【０１１６】
出力選択装置２４−１では、シフト演算器２１−１の出力信号（ＭＥＭＲ１）とバタフライ演算器２３の出力信号ｂｔｆ０ｂ out （＝ＭＥＭＲ０−ＭＥＭＲ１）のうち、バタフライ演算器２３の出力信号ｂｔｆ０ｂ out を選択するように制御信号Ｄ１ＳＥＬが供給され、これにより選択されたデータが信号Ｄ１＝ＭＥＭＲ０−ＭＥＭＲ１として出力される。
【０１１７】
以上説明したように、本第３の実施形態によれば、データ入力ＭＥＭＲ０の値を制御信号ＳＦＴ０ＭＤが示す値に応じて左または右に任意ビットだけシフトする演算を行うシフト演算器２１−０と、データ入力ＭＥＭＲ１の値を制御信号ＳＦＴ１ＭＤが示す値に応じて左または右に任意ビットだけシフトする演算を行うシフト演算器２１−１と、制御信号Ｒ０ＳＥＬに応じて、シフト演算器２１−０の出力データおよびデータ入力Ｉ０のいずれかを選択し、信号ｒ０ｓｅｌ outとして出力する入力選択装置２２−０と、制御信号Ｒ１ＳＥＬに応じて、シフト演算器２１−１の出力データおよびデータ入力Ｉ１のいずれかを選択し、信号ｒ１ｓｅｌ out として出力する入力選択装置２２−１と、入力端子ＤＡに入力選択装置２２−０の出力信号ｒ０ｓｅｌ out を入力し、入力端子ＤＢに入力選択装置２２−１の出力信号ｒ１ｓｅｌ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ０の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ０ａ out として出力選択装置２４−０および２５−０に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ０ｂ out として出力選択装置２４−１および２５−１に出力するバタフライ演算器２３と、制御信号Ｄ０ＳＥＬに応じて、シフト演算器２１−０の出力信号とバタフライ演算器２３の出力信号ｂｔｆ０ａ out のいずれかを選択し、信号Ｄ０として出力する出力選択装置２４−０と、制御信号Ｄ１ＳＥＬに応じて、シフト演算器２１−１の出力信号とバタフライ演算器２３の出力信号ｂｔｆ０ｂ out のいずれかを選択し、信号Ｄ１として出力する出力選択装置２４−１と、制御信号Ｗ０ＳＥＬに応じて、データ入力Ｉ０とバタフライ演算器２３の出力信号ｂｔｆ０ａ out のいずれかを選択し、信号ＭＥＭＷ０として出力する出力選択装置２５−０と、制御信号Ｗ１ＳＥＬに応じて、データ入力Ｉ１とバタフライ演算器２３の出力信号ｂｔｆ０ｂ out のいずれかを選択し、信号ＭＥＭＷ１として出力する出力選択装置２５−１とを設けたので、以下の効果を得ることができる。
【０１１８】
バタフライ演算などの多入力、多出力演算を行う場合には、ｙ０＝ｘ０＋ｘ１，ｙ１＝ｘ０−ｘ１などの演算を同時に行うことができる。
このため、入力データとしてｘ０とｘ１を１回ずつ読み出せばよい。そのためメモリ／レジスタへのアクセス効率があがるという利点がある。
また専用ハードウェアと異なり、ｙ０＝ｘ０＋ｘ１とｙ１＝ｘ０−ｘ１のほかにも、ｙ０＝ｘ０＋ｘ１＋ｘ２＋ｘ３などの計算を柔軟に行うことができる構成を容易に実現できる利点がある。
【０１１９】
また、演算装置自体を外部から再構成可能であることから、論理レベルの最適化ができることはもとより、構成情報の増大を防止でき、集積回路としての面積効率の低下を防止できる演算装置を実現できる利点がある。
【０１２０】
第４実施形態
図６は、本発明に係る演算装置の第４の実施形態を示す構成図である。
【０１２１】
図６の演算装置２０Ａは、構成情報に基づいて再構成可能な演算装置であって、８入力８出力の演算を行い、バタフライ演算とシフト演算を同時に実行可能に構成されている。
【０１２２】
本演算装置２０Ａは、シフト演算器（ＳＦＴ０）２１Ａ−０、シフト演算器（ＳＦＴ１）２１Ａ−１、シフト演算器（ＳＦＴ２）２１Ａ−２、シフト演算器（ＳＦＴ３）２１Ａ−３、入力選択装置（ＲＳＥＬ０）２２Ａ−０、入力選択装置（ＲＳＥＬ１）２２Ａ−１、入力選択装置（ＲＳＥＬ２）２２Ａ−２、入力選択装置（ＲＳＥＬ３）２２Ａ−３、バタフライ演算器（ＢＴＦ０）２３Ａ−０、バタフライ演算器（ＢＴＦ１）２３Ａ−１、出力選択装置（ＤＳＥＬ０）２４Ａ−０、出力選択装置（ＤＳＥＬ１）２４Ａ−１、出力選択装置（ＤＳＥＬ２）２４Ａ−２、出力選択装置（ＤＳＥＬ３）２４Ａ−３、出力選択装置（ＷＳＥＬ０）２５Ａ−０、出力選択装置（ＷＳＥＬ１）２５Ａ−１、出力選択装置（ＷＳＥＬ２）２５Ａ−２、および出力選択装置（ＷＳＥＬ３）２５Ａ−３を有している。
【０１２３】
そして、演算装置２０Ａは、データ入力ＭＥＭＲ０，ＭＥＭＲ１，ＭＥＭＲ２，ＭＥＭＲ３，Ｉ０，Ｉ１、Ｉ２，Ｉ３、およびデータ出力ＭＥＭＷ０，ＭＥＭＷ１，ＭＥＭＷ２，ＭＥＭＷ３，Ｄ０，Ｄ１，Ｄ２，Ｄ３を有し、また、再構成のための制御信号ＢＴＦＭＤ０，ＢＴＦＭＤ１，Ｒ０ＳＥＬ，Ｒ１ＳＥＬ，Ｒ２ＳＥＬ，Ｒ３ＳＥＬ，Ｗ０ＳＥＬ，Ｗ１ＳＥＬ，Ｗ２ＳＥＬ，Ｗ３ＳＥＬ，Ｄ０ＳＥＬ，Ｄ１ＳＥＬ，Ｄ２ＳＥＬ，Ｄ３ＳＥＬが供給される。
【０１２４】
シフト演算器２１Ａ−０は、データ入力ＭＥＭＲ０の値を制御信号ＳＦＴ０ＭＤに応じて単項演算、具体的には、制御信号ＳＦＴ０ＭＤが示す値（シフト量）に応じて左または右に任意ビットだけシフトする演算を行って、その結果を信号ｓｆｔ０ out として入力選択装置２２Ａ−０および出力選択装置２４Ａ−０に出力する。なお、シフト演算器２１Ａ−０は、たとえば制御信号ＳＦＴ０ＭＤが示すシフト量がゼロの場合には、シフト演算を行わず、データ入力ＭＥＭＲ０をそのまま出力する。
【０１２５】
シフト演算器２１Ａ−１は、データ入力ＭＥＭＲ１の値を制御信号ＳＦＴ１ＭＤに応じて単項演算、具体的には、制御信号ＳＦＴ１ＭＤが示す値（シフト量）に応じて左または右に任意ビットだけシフトする演算を行って、その結果を信号ｓｆｔ１ out として入力選択装置２２Ａ−１および出力選択装置２４Ａ−１に出力する。なお、シフト演算器２１Ａ−１は、たとえば制御信号ＳＦＴ１ＭＤが示すシフト量がゼロの場合には、シフト演算を行わず、データ入力ＭＥＭＲ１をそのまま出力する。
【０１２６】
シフト演算器２１Ａ−２は、データ入力ＭＥＭＲ２の値を制御信号ＳＦＴ２ＭＤに応じて単項演算、具体的には、制御信号ＳＦＴ２ＭＤが示す値（シフト量）に応じて左または右に任意ビットだけシフトする演算を行って、その結果を信号ｓｆｔ２ out として入力選択装置２２Ａ−２および出力選択装置２４Ａ−２に出力する。なお、シフト演算器２１Ａ−２は、たとえば制御信号ＳＦＴ２ＭＤが示すシフト量がゼロの場合には、シフト演算を行わず、データ入力ＭＥＭＲ２をそのまま出力する。
【０１２７】
シフト演算器２１Ａ−３は、データ入力ＭＥＭＲ３の値を制御信号ＳＦＴ３ＭＤに応じて単項演算、具体的には、制御信号ＳＦＴ３ＭＤが示す値（シフト量）に応じて左または右に任意ビットだけシフトする演算を行って、その結果を信号ｓｆｔ３ out として入力選択装置２２Ａ−３および出力選択装置２４Ａ−３に出力する。なお、シフト演算器２１Ａ−３は、たとえば制御信号ＳＦＴ３ＭＤが示すシフト量がゼロの場合には、シフト演算を行わず、データ入力ＭＥＭＲ３をそのまま出力する。
【０１２８】
入力選択装置２２Ａ−０は、制御信号Ｒ０ＳＥＬに応じて、シフト演算器２１Ａ−０の出力データおよびデータ入力Ｉ０のいずれかを選択し、信号ｒ０ｓｅｌ out としてバタフライ演算器２３Ａ−０に出力する。
【０１２９】
入力選択装置２２Ａ−１は、制御信号Ｒ１ＳＥＬに応じて、シフト演算器２１Ａ−１の出力データおよびデータ入力Ｉ１のいずれかを選択し、信号ｒ１ｓｅｌ out としてバタフライ演算器２３Ａ−０に出力する。
【０１３０】
入力選択装置２２Ａ−２は、制御信号Ｒ２ＳＥＬに応じて、シフト演算器２１Ａ−２の出力データおよびデータ入力Ｉ２のいずれかを選択し、信号ｒ２ｓｅｌ out としてバタフライ演算器２３Ａ−１に出力する。
【０１３１】
入力選択装置２２Ａ−３は、制御信号Ｒ３ＳＥＬに応じて、シフト演算器２１Ａ−３の出力データおよびデータ入力Ｉ３のいずれかを選択し、信号ｒ３ｓｅｌ out としてバタフライ演算器２３Ａ−１に出力する。
【０１３２】
バタフライ演算器２３Ａ−０は、入力端子ＤＡに入力選択装置２２Ａ−０の出力信号ｒ０ｓｅｌ out を入力し、入力端子ＤＢに入力選択装置２２Ａ−１の出力信号ｒ１ｓｅｌ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ０の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ０ａ out として出力選択装置２４Ａ−０および２５Ａ−０に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ０ｂ out として出力選択装置２４Ａ−１および２５Ａ−１に出力する。
【０１３３】
具体的には、バタフライ演算器２３Ａ−０は、制御信号ＢＴＦＭＤ０の値により、以下のいずれかの演算を選択的に行う。
【０１３４】
（数６）
btf0ａ out ＝ r1sel out ，btf0ｂ out ＝ r0sel out 
btf0ａ out ＝ r1sel out ，btf0ｂ out ＝-r0sel out 
btf0ａ out ＝-r1sel out ，btf0ｂ out ＝ r0sel out 
btf0ａ out ＝-r1sel out ，btf0ｂ out ＝-r0sel out 
btf0ａ out ＝ r0sel out ，btf0ｂ out ＝ r1sel out 
btf0ａ out ＝ r0sel out ，btf0ｂ out ＝-r1sel out 
btf0ａ out ＝-r0sel out ，btf0ｂ out ＝ r1sel out 
btf0ａ out ＝-r0sel out ，btf0ｂ out ＝-r1sel out 
btf0ａ out ＝ r0sel out ＋ r1sel out ，btf0ｂ out 
＝ r0sel out − r1sel out 
btf0ａ out ＝ r0sel out ＋ r1sel out ，btf0ｂ out 
＝ r1sel out − r0sel out 
btf0ａ out ＝ r0sel out − r1sel out ，btf0ｂ out 
＝ r0sel out ＋ r1sel out 
btf0ａ out ＝ r1sel out − r0sel out ，btf0ｂ out 
＝ r0sel out ＋ r1sel out 
【０１３５】
バタフライ演算器２３Ａ−１は、入力端子ＤＡに入力選択装置２２Ａ−２の出力信号ｒ２ｓｅｌ out を入力し、入力端子ＤＢに入力選択装置２２Ａ−３の出力信号ｒ３ｓｅｌ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ１の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ１ａ out として出力選択装置２４Ａ−２および２５Ａ−２に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ１ｂ out として出力選択装置２４Ａ−３および２５Ａ−３に出力する。
【０１３６】
具体的には、バタフライ演算器２３Ａ−１は、制御信号ＢＴＦＭＤ１の値により、以下のいずれかの演算を選択的に行う。
【０１３７】
（数７）
btf1ａ out ＝ r3sel out ，btf1ｂ out ＝ r2sel out 
btf1ａ out ＝ r3sel out ，btf1ｂ out ＝-r2sel out 
btf1ａ out ＝-r3sel out ，btf1ｂ out ＝ r2sel out 
btf1ａ out ＝-r3sel out ，btf1ｂ out ＝-r2sel out 
btf1ａ out ＝ r2sel out ，btf1ｂ out ＝ r3sel out 
btf1ａ out ＝ r2sel out ，btf1ｂ out ＝-r3sel out 
btf1ａ out ＝-r2sel out ，btf1ｂ out ＝ r3sel out 
btf1ａ out ＝-r2sel out ，btf1ｂ out ＝-r3sel out 
btf1ａ out ＝ r2sel out ＋ r3sel out ，btf1ｂ out 
＝ r2sel out − r3sel out 
btf1ａ out ＝ r2sel out ＋ r3sel out ，btf1ｂ out 
＝ r3sel out − r2sel out 
btf1ａ out ＝ r2sel out − 31sel out ，btf1ｂ out 
＝ r2sel out ＋ r3sel out 
btf1ａ out ＝ r3sel out − r2sel out ，btf1ｂ out 
＝ r2sel out ＋ r3sel out 
【０１３８】
出力選択装置２４Ａ−０は、制御信号Ｄ０ＳＥＬに応じて、シフト演算器２１Ａ−０の出力信号ｓｆｔ０ out （たとえばＭＥＭＲ０）とバタフライ演算器２３Ａ−０の出力信号ｂｔｆ０ａ out のいずれかを選択し、信号Ｄ０として出力する。
【０１３９】
出力選択装置２４Ａ−１は、制御信号Ｄ１ＳＥＬに応じて、シフト演算器２１Ａ−１の出力信号ｓｆｔ１ out （たとえばＭＥＭＲ１）とバタフライ演算器２３Ａ−０の出力信号ｂｔｆ０ｂ out のいずれかを選択し、信号Ｄ１として出力する。
【０１４０】
出力選択装置２４Ａ−２は、制御信号Ｄ２ＳＥＬに応じて、シフト演算器２１Ａ−２の出力信号ｓｆｔ２ out （たとえばＭＥＭＲ２）とバタフライ演算器２３Ａ−１の出力信号ｂｔｆ１ａ out のいずれかを選択し、信号Ｄ２として出力する。
【０１４１】
出力選択装置２４Ａ−３は、制御信号Ｄ３ＳＥＬに応じて、シフト演算器２１Ａ−３の出力信号ｓｆｔ３ out （たとえばＭＥＭＲ３）とバタフライ演算器２３Ａ−１の出力信号ｂｔｆ１ｂ out のいずれかを選択し、信号Ｄ３として出力する。
【０１４２】
出力選択装置２５Ａ−０は、制御信号Ｗ０ＳＥＬに応じて、データ入力Ｉ０とバタフライ演算器２３Ａ−０の出力信号ｂｔｆ０ａ out のいずれかを選択し、信号ＭＥＭＷ０として出力する。
【０１４３】
出力選択装置２５Ａ−１は、制御信号Ｗ１ＳＥＬに応じて、データ入力Ｉ１とバタフライ演算器２３Ａ−０の出力信号ｂｔｆ０ｂ out のいずれかを選択し、信号ＭＥＭＷ１として出力する。
【０１４４】
出力選択装置２５Ａ−２は、制御信号Ｗ２ＳＥＬに応じて、データ入力Ｉ２とバタフライ演算器２３Ａ−１の出力信号ｂｔｆ１ａ out のいずれかを選択し、信号ＭＥＭＷ２として出力する。
【０１４５】
出力選択装置２５Ａ−３は、制御信号Ｗ３ＳＥＬに応じて、データ入力Ｉ３とバタフライ演算器２３Ａ−１の出力信号ｂｔｆ１ｂ out のいずれかを選択し、信号ＭＥＭＷ３として出力する。
【０１４６】
次に、上記構成による動作を説明する。
ここでは、
Ｄ１＝ＭＥＭＲ０−ＭＥＭＲ１，
Ｄ３＝ＭＥＭＲ２−ＭＥＭＲ３，
ＭＥＭＷ０＝ＭＥＭＲ０＋ＭＥＭＲ１，
ＭＥＭＷ２＝ＭＥＭＲ２＋ＭＥＭＲ３，
ＭＥＭＷ１＝Ｉ１
ＭＥＭＷ３＝Ｉ３
の演算を実行するものとする。
【０１４７】
たとえばシフト演算器２１Ａ−０，２１Ａ−１，２１Ａ−２，２１Ａ−３のシフト量が、制御信号ＳＦＴ０ＭＤ，ＳＦＴ１ＭＤ，ＳＦＴ２ＭＤ，ＳＦＴ３ＭＤによりゼロに設定される。
したがって、シフト演算器２１Ａ−０の出力信号ｓｆｔ０ out はＭＥＭＲ０となり、入力選択装置２２Ａ−０および出力選択装置２４Ａ−０に供給される。
同様に、シフト演算器２１Ａ−１の出力信号ｓｆｔ１ out はＭＥＭＲ１となり、入力選択装置２２Ａ−１および出力選択装置２４Ａ−１に供給される。
シフト演算器２１Ａ−２の出力信号ｓｆｔ２ out はＭＥＭＲ２となり、入力選択装置２２Ａ−２および出力選択装置２４Ａ−２に供給される。
そして、シフト演算器２１Ａ−３の出力信号ｓｆｔ３ out はＭＥＭＲ３となり、入力選択装置２２Ａ−３および出力選択装置２４Ａ−３に供給される。
【０１４８】
入力選択装置２２Ａ−０では、制御信号Ｒ０ＳＥＬにより、シフト演算器２１Ａ−０の出力信号、すなわちＭＥＭＲ０を選択するように制御され、選択されたデータＭＥＭＲ０が信号ｒ０ｓｅｌ out として、バラフライ演算器２３Ａ−０の入力端子ＤＡに供給される。
入力選択装置２２Ａ−１では、制御信号Ｒ１ＳＥＬにより、シフト演算器２１Ａ−１の出力信号、すなわちＭＥＭＲ１を選択するように制御され、選択されたデータＭＥＭＲ１が信号ｒ１ｓｅｌ out として、バラフライ演算器２３Ａ−０の入力端子ＤＢに供給される。
【０１４９】
また、入力選択装置２２Ａ−２では、制御信号Ｒ２ＳＥＬにより、シフト演算器２１Ａ−２の出力信号、すなわちＭＥＭＲ２を選択するように制御され、選択されたデータＭＥＭＲ２が信号ｒ２ｓｅｌ out として、バラフライ演算器２３Ａ−１の入力端子ＤＡに供給される。
入力選択装置２２Ａ−３では、制御信号Ｒ３ＳＥＬにより、シフト演算器２１Ａ−３の出力信号、すなわちＭＥＭＲ３を選択するように制御され、選択されたデータＭＥＭＲ３が信号ｒ３ｓｅｌ out として、バラフライ演算器２３Ａ−１の入力端子ＤＢに供給される。
【０１５０】
バタフライ演算器２３Ａ−０では、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ０により、ＯＡ＝ＤＡ＋ＤＢ，ＯＢ＝ＤＡ−ＤＢが計算されるモードに設定される。
これにより、バタフライ演算器２３Ａ−０においては、入力端子ＤＡに供給されたデータＭＥＭＲ０と入力端子ＤＢに供給されたデータＭＥＭＲ１とが加算され、その結果である（ＭＥＭＲ０＋ＭＥＭＲ１）が出力端子ＯＡから信号ｂｔｆ０ａ out として、出力選択装置２４Ａ−０および２５Ａ−０に出力される。
また、バタフライ演算器２３Ａ−０においては、入力端子ＤＡに供給されたデータＭＥＭＲ０と入力端子ＤＢに供給されたデータＭＥＭＲ１との差がとられ、その結果である（ＭＥＭＲ０−ＭＥＭＲ１）が出力端子ＯＢから信号ｂｔｆ０ｂ out として、出力選択装置２４Ａ−１および２５Ａ−１に出力される。
【０１５１】
同様に、バタフライ演算器２３Ａ−１では、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ１により、ＯＡ＝ＤＡ＋ＤＢ，ＯＢ＝ＤＡ−ＤＢが計算されるモードに設定される。
これにより、バタフライ演算器２３Ａ−１においては、入力端子ＤＡに供給されたデータＭＥＭＲ２と入力端子ＤＢに供給されたデータＭＥＭＲ３とが加算され、その結果である（ＭＥＭＲ２＋ＭＥＭＲ３）が出力端子ＯＡから信号ｂｔｆ１ａ out として、出力選択装置２４Ａ−２および２５Ａ−２に出力される。
また、バタフライ演算器２３Ａ−１においては、入力端子ＤＡに供給されたデータＭＥＭＲ２と入力端子ＤＢに供給されたデータＭＥＭＲ３との差がとられ、その結果である（ＭＥＭＲ２−ＭＥＭＲ３）が出力端子ＯＢから信号ｂｔｆ１ｂ out として、出力選択装置２４Ａ−３および２５Ａ−３に出力される。
【０１５２】
出力選択装置２４Ａ−１において、シフト演算器２１Ａ−１の出力信号（ＭＥＭＲ１）とバタフライ演算器２３Ａ−０の出力信号ｂｔｆ０ｂ out （＝ＭＥＭＲ０−ＭＥＭＲ１）のうち、バタフライ演算器２３Ａ−０の出力信号ｂｔｆ０ｂ out を選択するように制御信号Ｄ１ＳＥＬが供給され、これにより選択されたデータが信号Ｄ１＝ＭＥＭＲ０−ＭＥＭＲ１として出力される。
【０１５３】
また、出力選択装置２５Ａ−０では、データ入力Ｉ０とバタフライ演算器２３Ａ−０の出力信号ｂｔｆ０ａ out （＝ＭＥＭＲ０＋ＭＥＭＲ１）のうち、バタフライ演算器２３Ａ−０の出力信号ｂｔｆ０ａ out を選択するように制御信号Ｗ０ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ０＝ＭＥＭＲ０＋ＭＥＭＲ１として出力される。
【０１５４】
また、出力選択装置２５Ａ−１では、データ入力Ｉ１とバタフライ演算器２３Ａ−０の出力信号ｂｔｆ０ｂ out （＝ＭＥＭＲ０−ＭＥＭＲ１）のうち、データ入力Ｉ１を選択するように制御信号Ｗ１ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ１＝Ｉ１として出力される。
【０１５５】
また、出力選択装置２４Ａ−３において、シフト演算器２１Ａ−３の出力信号（ＭＥＭＲ３）とバタフライ演算器２３Ａ−１の出力信号ｂｔｆ１ｂ out （＝ＭＥＭＲ２−ＭＥＭＲ３）のうち、バタフライ演算器２３Ｂ−１の出力信号ｂｔｆ１ｂ out を選択するように制御信号Ｄ３ＳＥＬが供給され、これにより選択されたデータが信号Ｄ３＝ＭＥＭＲ２−ＭＥＭＲ３として出力される。
【０１５６】
また、出力選択装置２５Ａ−２では、データ入力Ｉ２とバタフライ演算器２３Ａ−１の出力信号ｂｔｆ１ａ out （＝ＭＥＭＲ２＋ＭＥＭＲ３）のうち、バタフライ演算器２３Ａ−１の出力信号ｂｔｆ１ａ out を選択するように制御信号Ｗ２ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ２＝ＭＥＭＲ２＋ＭＥＭＲ３として出力される。
【０１５７】
また、出力選択装置２５Ａ−３では、データ入力Ｉ３とバタフライ演算器２３Ａ−１の出力信号ｂｔｆ１ｂ out （＝ＭＥＭＲ２−ＭＥＭＲ３）のうち、データ入力Ｉ３を選択するように制御信号Ｗ３ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ３＝Ｉ３として出力される。
【０１５８】
本第４の実施形態に係る８入力８出力の演算装置２０Ａによれば、上述した第３の実施形態の効果と同様の効果を得ることができる。
【０１５９】
第５実施形態
図７は、本発明に係る演算装置の第５の実施形態を示す構成図である。
【０１６０】
本第５の実施形態が上述した第４の実施形態と異なる点は、入力端子ＤＡにバタフライ演算器２３Ａ−０の出力信号ｂｔｆ０ａ out を入力し、入力端子ＤＢにバタフライ演算器２３Ａ−１の出力信号ｂｔｆ１ａ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ２の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ２ａ out として出力選択装置２５Ｂ−０および２５Ｂ−２に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ２ｂ out として出力選択装置２５Ｂ−１および２５Ｂ−３に出力するバタフライ演算器２３Ａ−２を設け、３つのバタフライ演算器をいわゆる多段に配置して、ツリー状に接続した構成としたことにある。
【０１６１】
なお、本第５の実施形態に係るバタフライ演算器２３Ｂ−２は、制御信号ＢＴＦＭＤ２の値により、以下のいずれかの演算を選択的に行う。
【０１６２】
（数８）
btf2ａ out ＝ btf0a out ，btf2ｂ out ＝ btf1a out 
btf2ａ out ＝ btf0a out ，btf2ｂ out ＝-btf1a out 
btf2ａ out ＝-btf0a out ，btf2ｂ out ＝ btf1a out 
btf2ａ out ＝-btf0a out ，btf2ｂ out ＝-btf1a out 
btf2ａ out ＝ btf0a out ，btf2ｂ out ＝ btf1a out 
btf2ａ out ＝ btf0a out ，btf2ｂ out ＝-btf1a out 
btf2ａ out ＝-btf0a out ，btf2ｂ out ＝ btf1a out 
btf2ａ out ＝-btf0a out ，btf2ｂ out ＝-btf1a out 
btf2ａ out ＝ btf1a out ＋ btf0a out ，btf2ｂ out 
＝ btf1a out − btf0a out 
btf2ａ out ＝ btf1a out ＋ btf0a out ，btf2ｂ out 
＝ btf0a out − btf1a out 
btf2ａ out ＝ btf1a out − btf0a out ，btf2ｂ out 
＝ btf1a out ＋ btf0a out 
btf2ａ out ＝ btf0a out − btf1a out ，btf2ｂ out 
＝ btf1a out ＋ btf0a out 
【０１６３】
そして、本第５の実施形態においては、出力選択装置２５Ｂ−０〜２５Ｂ−３を制御信号Ｗ０ＳＥＬ〜Ｗ３ＳＥＬに応じて３つの入力データの中から一つのデータを選択し、信号ＭＥＭＷ０〜ＭＥＭＷ３として出力するように構成している。
【０１６４】
出力選択装置２５Ｂ−０は、制御信号Ｗ０ＳＥＬに応じて、データ入力Ｉ０とバタフライ演算器２３Ａ−０の出力信号ｂｔｆ０ａ out とバタフライ演算器２３Ｂ−２の出力信号ｂｔｆ２ａ out とのいずれかを選択し、信号ＭＥＭＷ０として出力する。
【０１６５】
出力選択装置２５Ｂ−１は、制御信号Ｗ１ＳＥＬに応じて、データ入力Ｉ１とバタフライ演算器２３Ａ−０の出力信号ｂｔｆ０ｂ out とバタフライ演算器２３Ｂ−２の出力信号ｂｔｆ２ｂ out のいずれかを選択し、信号ＭＥＭＷ１として出力する。
【０１６６】
出力選択装置２５Ｂ−２は、制御信号Ｗ２ＳＥＬに応じて、データ入力Ｉ２とバタフライ演算器２３Ａ−１の出力信号ｂｔｆ１ａ out とバタフライ演算器２３Ｂ−２の出力信号ｂｔｆ２ａ out のいずれかを選択し、信号ＭＥＭＷ２として出力する。
【０１６７】
出力選択装置２５Ｂ−３は、制御信号Ｗ３ＳＥＬに応じて、データ入力Ｉ３とバタフライ演算器２３Ａ−１の出力信号ｂｔｆ１ｂ out とバタフライ演算器２３Ｂ−２の出力信号ｂｔｆ２ｂ out のいずれかを選択し、信号ＭＥＭＷ３として出力する。
【０１６８】
その他の構成および機能は、第４の実施形態に係る図６と同様であることから、図７においては、図６と同一構成部分は、同一符号をもって表している。
【０１６９】
このような構成において、たとえばバタフライ演算器２３Ａ−０の出力信号ｂｔｆ０ａ out が（ＭＥＭＲ０＋ＭＥＭＲ１）で、バタフライ演算器２３Ａ−１の出力信号ｂｔｆ１ａ out が（ＭＥＭＲ２＋ＭＥＭＲ３）であるとした場合に、たとえばバタフライ演算器２３Ｂ−２の出力信号ｂｔｆ２ａ out が（ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３）となり、出力信号ｂｔｆ２ｂ out が（ＭＥＭＲ０＋ＭＥＭＲ１−ＭＥＭＲ２−ＭＥＭＲ３）となる。
【０１７０】
そして、出力選択装置２５Ｂ−０において、制御信号Ｗ０ＳＥＬに応じて、バタフライ演算器２３Ｂ−２の出力信号ｂｔｆ２ａ out を選択するように制御することにより、信号ＭＥＭＷ０は（ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３）として出力される。
同様に、出力選択装置２５Ｂ−２において、制御信号Ｗ２ＳＥＬに応じて、バタフライ演算器２３Ｂ−２の出力信号ｂｔｆ２ａ out を選択するように制御することにより、信号ＭＥＭＷ２は（ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３）として出力される。
【０１７１】
また、出力選択装置２５Ｂ−１において、制御信号Ｗ１ＳＥＬに応じて、バタフライ演算器２３Ｂ−２の出力信号ｂｔｆ２ｂ out を選択するように制御することにより、信号ＭＥＭＷ１は（ＭＥＭＲ０＋ＭＥＭＲ１−ＭＥＭＲ２−ＭＥＭＲ３）として出力される。
同様に、出力選択装置２５Ｂ−３において、制御信号Ｗ３ＳＥＬに応じて、バタフライ演算器２３Ｂ−２の出力信号ｂｔｆ２ｂ out を選択するように制御することにより、信号ＭＥＭＷ３は（ＭＥＭＲ０＋ＭＥＭＲ１−ＭＥＭＲ２−ＥＭＲ３）として出力される。
【０１７２】
その他の構成、および作用は、上述した第４の実施形態と同様であることからここではその説明は省略する。
【０１７３】
本第５の実施形態によれば、上述した第４の実施形態と同様の効果を得られることはもとより、さらに高度な複雑な演算を容易に行うことができる利点がある。
【０１７４】
第６実施形態
図８は、本発明に係る演算装置の第６の実施形態を示す構成図である。
【０１７５】
図８の演算装置２０Ｃは、構成情報に基づいて再構成可能な演算装置であって、１６入力１６出力の演算を行い、バタフライ演算を実行可能に構成されている。
【０１７６】
本演算装置２０Ｃは、入力選択装置（ＲＳＥＬ０）２２Ｃ−０、入力選択装置（ＲＳＥＬ１）２２Ｃ−１、入力選択装置（ＲＳＥＬ２）２２Ｃ−２、入力選択装置（ＲＳＥＬ３）２２Ｃ−３、入力選択装置（ＲＳＥＬ４）２２Ｃ−４、入力選択装置（ＲＳＥＬ５）２２Ｃ−５、入力選択装置（ＲＳＥＬ６）２２Ｃ−６、入力選択装置（ＲＳＥＬ７）２２Ｃ−７、入力選択装置（ＢＳＥＬ０）２２Ｃ−８、入力選択装置（ＢＳＥＬ１）２２Ｃ−９、入力選択装置（ＢＳＥＬ２）２２Ｃ−１０、入力選択装置（ＢＳＥＬ３）２２Ｃ−１１、入力選択装置（ＢＳＥＬ４）２２Ｃ−１２、入力選択装置（ＢＳＥＬ５）２２Ｃ−１３、入力選択装置（ＢＳＥＬ６）２２Ｃ−１４、入力選択装置（ＢＳＥＬ７）２２Ｃ−１５、バタフライ演算器（ＢＴＦ０）２３Ｃ−０、バタフライ演算器（ＢＴＦ１）２３Ｃ−１、バタフライ演算器（ＢＴＦ２）２３Ｃ−２、バタフライ演算器（ＢＴＦ３）２３Ｃ−３、バタフライ演算器（ＢＴＦ４）２３Ｃ−４、バタフライ演算器（ＢＴＦ５）２３Ｃ−５、バタフライ演算器（ＢＴＦ６）２３Ｃ−６、バタフライ演算器（ＢＴＦ７）２３Ｃ−７、出力選択装置（ＤＳＥＬ０）２４Ｃ−０、出力選択装置（ＤＳＥＬ１）２４Ｃ−１、出力選択装置（ＤＳＥＬ２）２４Ｃ−２、出力選択装置（ＤＳＥＬ３）２４Ｃ−３、出力選択装置（ＤＳＥＬ４）２４Ｃ−４、出力選択装置（ＤＳＥＬ５）２４Ｃ−５、出力選択装置（ＤＳＥＬ６）２４Ｃ−６、出力選択装置（ＤＳＥＬ７）２４Ｃ−７、出力選択装置（ＷＳＥＬ０）２５Ｃ−０、出力選択装置（ＷＳＥＬ１）２５Ｃ−１、出力選択装置（ＷＳＥＬ２）２５Ｃ−２、出力選択装置（ＷＳＥＬ３）２５Ｃ−３、出力選択装置（ＷＳＥＬ４）２５Ｃ−４、出力選択装置（ＷＳＥＬ５）２５Ｃ−５、出力選択装置（ＷＳＥＬ６）２５Ｃ−６、および出力選択装置（ＷＳＥＬ７）２５Ｃ−７を有している。
【０１７７】
そして、入力選択装置２２Ｃ−０〜２２Ｃ−７が本発明の第１の入力選択装置を構成し、入力選択装置２２Ｃ−９〜２２Ｃ−１５が本発明の第２の入力選択装置を構成し、バタフライ演算器２３Ｃ−０，バタフライ演算器２３Ｃ−２，バタフライ演算器２３Ｃ−４、およびバタフライ演算器２３Ｃ−６が本発明の第１の演算器を構成し、バタフライ演算器２３Ｃ−１，バタフライ演算器２３Ｃ−３，バタフライ演算器２３Ｃ−５、およびバタフライ演算器２３Ｃ−７が本発明の第２の演算器を構成し、出力選択装置２４Ｃ−０〜２４Ｃ−７が本発明の第１の出力選択装置を構成し、出力選択装置２５Ｃ−０〜２５Ｃ−７が本発明の第２の出力選択装置を構成する。
【０１７８】
そして、演算装置２０Ｃは、データ入力ＭＥＭＲ０，ＭＥＭＲ１，ＭＥＭＲ２，ＭＥＭＲ３，ＭＥＭＲ４，ＭＥＭＲ５，ＭＥＭＲ６，ＭＥＭＲ７，Ｉ０，Ｉ１，Ｉ２，Ｉ３，Ｉ４，Ｉ５，Ｉ６，Ｉ７、およびデータ出力ＭＥＭＷ０，ＭＥＭＷ１，ＭＥＭＷ２，ＭＥＭＷ３，ＭＥＭＷ４，ＭＥＭＷ５，ＭＥＭＷ６，ＭＥＭＷ７，Ｄ０，Ｄ１，Ｄ２，Ｄ３，Ｄ４，Ｄ５，Ｄ６，Ｄ７を有し、また、再構成のための制御信号ＢＴＦＭＤ０，ＢＴＦＭＤ１，ＢＴＦＭＤ２，ＢＴＦＭＤ３，ＢＴＦＭＤ４，ＢＴＦＭＤ５，ＢＴＦＭＤ６，ＢＴＦＭＤ７、Ｒ０ＳＥＬ，Ｒ１ＳＥＬ，Ｒ２ＳＥＬ，Ｒ３ＳＥＬ，Ｒ４ＳＥＬ，Ｒ５ＳＥＬ，Ｒ６ＳＥＬ，Ｒ７ＳＥＬ、Ｂ０ＳＥＬ，Ｂ１ＳＥＬ，Ｂ２ＳＥＬ，Ｂ３ＳＥＬ，Ｂ４ＳＥＬ，Ｂ５ＳＥＬ，Ｂ６ＳＥＬ，Ｂ７ＳＥＬ、Ｗ０ＳＥＬ，Ｗ１ＳＥＬ，Ｗ２ＳＥＬ，Ｗ３ＳＥＬ，Ｗ４ＳＥＬ，Ｗ５ＳＥＬ，Ｗ６ＳＥＬ，Ｗ７ＳＥＬ、Ｄ０ＳＥＬ，Ｄ１ＳＥＬ，Ｄ２ＳＥＬ，Ｄ３ＳＥＬ，Ｄ４ＳＥＬ，Ｄ５ＳＥＬ，Ｄ６ＳＥＬ，Ｄ７ＳＥＬが供給される。
【０１７９】
入力選択装置２２Ｃ−０は、制御信号Ｒ０ＳＥＬに応じて、データ入力ＭＥＭＲ０およびデータ入力Ｉ０のいずれかを選択し、信号ｒ０ｓｅｌ out としてバタフライ演算器２３Ｃ−０に出力する。
【０１８０】
入力選択装置２２Ｃ−１は、制御信号Ｒ１ＳＥＬに応じて、データ入力ＭＥＭＲ１およびデータ入力Ｉ１のいずれかを選択し、信号ｒ１ｓｅｌ out としてバタフライ演算器２３Ｃ−０に出力する。
【０１８１】
入力選択装置２２Ｃ−２は、制御信号Ｒ２ＳＥＬに応じて、データ入力ＭＥＭＲ２およびデータ入力Ｉ２のいずれかを選択し、信号ｒ２ｓｅｌ out としてバタフライ演算器２３Ｃ−２に出力する。
【０１８２】
入力選択装置２２Ｃ−３は、制御信号Ｒ３ＳＥＬに応じて、データ入力ＭＥＭＲ３およびデータ入力Ｉ３のいずれかを選択し、信号ｒ３ｓｅｌ out としてバタフライ演算器２３Ｃ−２に出力する。
【０１８３】
入力選択装置２２Ｃ−４は、制御信号Ｒ４ＳＥＬに応じて、データ入力ＭＥＭＲ４およびデータ入力Ｉ４のいずれかを選択し、信号ｒ４ｓｅｌ out としてバタフライ演算器２３Ｃ−４に出力する。
【０１８４】
入力選択装置２２Ｃ−５は、制御信号Ｒ５ＳＥＬに応じて、データ入力ＭＥＭＲ５およびデータ入力Ｉ５のいずれかを選択し、信号ｒ５ｓｅｌ out としてバタフライ演算器２３Ｃ−４に出力する。
【０１８５】
入力選択装置２２Ｃ−６は、制御信号Ｒ６ＳＥＬに応じて、データ入力ＭＥＭＲ６およびデータ入力Ｉ６のいずれかを選択し、信号ｒ６ｓｅｌ out としてバタフライ演算器２３Ｃ−６に出力する。
【０１８６】
入力選択装置２２Ｃ−７は、制御信号Ｒ７ＳＥＬに応じて、データ入力ＭＥＭＲ７およびデータ入力Ｉ７のいずれかを選択し、信号ｒ７ｓｅｌ out としてバタフライ演算器２３Ｃ−６に出力する。
【０１８７】
入力選択装置２２Ｃ−８は、制御信号Ｂ０ＳＥＬに応じて、データ入力Ｉ０、バタフライ演算器２３Ｃ−０の出力信号ｂｔｆ０ａ out 、およびバタフライ演算器２３Ｃ−６の出力信号ｂｔｆ６ｂ out のいずれかを選択し、信号ｂ０ｓｅｌ out としてバタフライ演算器２３Ｃ−１に出力する。
【０１８８】
入力選択装置２２Ｃ−９は、制御信号Ｂ１ＳＥＬに応じて、データ入力Ｉ１、バタフライ演算器２３Ｃ−０の出力信号ｂｔｆ０ｂ out 、およびバタフライ演算器２３Ｃ−２の出力信号ｂｔｆ２ａ out のいずれかを選択し、信号ｂ１ｓｅｌ out としてバタフライ演算器２３Ｃ−１に出力する。
【０１８９】
入力選択装置２２Ｃ−１０は、制御信号Ｂ２ＳＥＬに応じて、データ入力Ｉ２、バタフライ演算器２３Ｃ−２の出力信号ｂｔｆ２ａ out 、およびバタフライ演算器２３Ｃ−０の出力信号ｂｔｆ０ｂ out のいずれかを選択し、信号ｂ２ｓｅｌ out としてバタフライ演算器２３Ｃ−３に出力する。
【０１９０】
入力選択装置２２Ｃ−１１は、制御信号Ｂ３ＳＥＬに応じて、データ入力Ｉ３、バタフライ演算器２３Ｃ−２の出力信号ｂｔｆ２ｂ out 、およびバタフライ演算器２３Ｃ−４の出力信号ｂｔｆ４ａ out のいずれかを選択し、信号ｂ３ｓｅｌ out としてバタフライ演算器２３Ｃ−３に出力する。
【０１９１】
入力選択装置２２Ｃ−１２は、制御信号Ｂ４ＳＥＬに応じて、データ入力Ｉ４、バタフライ演算器２３Ｃ−４の出力信号ｂｔｆ４ａ out 、およびバタフライ演算器２３Ｃ−２の出力信号ｂｔｆ２ｂ out のいずれかを選択し、信号ｂ４ｓｅｌ out としてバタフライ演算器２３Ｃ−５に出力する。
【０１９２】
入力選択装置２２Ｃ−１３は、制御信号Ｂ５ＳＥＬに応じて、データ入力Ｉ５、バタフライ演算器２３Ｃ−４の出力信号ｂｔｆ４ｂ out 、およびバタフライ演算器２３Ｃ−６の出力信号ｂｔｆ６ａ out のいずれかを選択し、信号ｂ５ｓｅｌ out としてバタフライ演算器２３Ｃ−５に出力する。
【０１９３】
入力選択装置２２Ｃ−１４は、制御信号Ｂ６ＳＥＬに応じて、データ入力Ｉ６、バタフライ演算器２３Ｃ−６の出力信号ｂｔｆ６ａ out 、およびバタフライ演算器２３Ｃ−４の出力信号ｂｔｆ４ｂ out のいずれかを選択し、信号ｂ６ｓｅｌ out としてバタフライ演算器２３Ｃ−７に出力する。
【０１９４】
入力選択装置２２Ｃ−１５は、制御信号Ｂ７ＳＥＬに応じて、データ入力Ｉ７、バタフライ演算器２３Ｃ−６の出力信号ｂｔｆ６ｂ out 、およびバタフライ演算器２３Ｃ−０の出力信号ｂｔｆ０ａ out のいずれかを選択し、信号ｂ７ｓｅｌ out としてバタフライ演算器２３Ｃ−７に出力する。
【０１９５】
バタフライ演算器２３Ｃ−０は、入力端子ＤＡに入力選択装置２２Ｃ−０の出力信号ｒ０ｓｅｌ out を入力し、入力端子ＤＢに入力選択装置２２Ｃ−１の出力信号ｒ１ｓｅｌ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ０の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ０ａ out として入力選択装置２２Ｃ−８および２２Ｃ−１５に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ０ｂ out として入力選択装置２２Ｃ−９および２２Ｃ−１０に出力する。
【０１９６】
バタフライ演算器２３Ｃ−１は、入力端子ＤＡに入力選択装置２２Ｃ−８の出力信号ｂ０ｓｅｌ out を入力し、入力端子ＤＢに入力選択装置２２Ｃ−９の出力信号ｂ１ｓｅｌ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ１の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ１ａ out として出力選択装置２４Ｃ−０および２５Ｃ−０に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ１ｂ out として出力選択装置２４Ｃ−１および２５Ｃ−１に出力する。
【０１９７】
バタフライ演算器２３Ｃ−２は、入力端子ＤＡに入力選択装置２２Ｃ−２の出力信号ｒ２ｓｅｌ out を入力し、入力端子ＤＢに入力選択装置２２Ｃ−３の出力信号ｒ３ｓｅｌ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ２の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ２ａ out として入力選択装置２２Ｃ−１０および２２Ｃ−９に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ２ｂ out として入力選択装置２２Ｃ−１１および２２Ｃ−１２に出力する。
【０１９８】
バタフライ演算器２３Ｃ−３は、入力端子ＤＡに入力選択装置２２Ｃ−１０の出力信号ｂ２ｓｅｌ out を入力し、入力端子ＤＢに入力選択装置２２Ｃ−１１の出力信号ｂ３ｓｅｌ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ３の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ３ａ out として出力選択装置２４Ｃ−２および２５Ｃ−２に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ３ｂ out として出力選択装置２４Ｃ−３および２５Ｃ−３に出力する。
【０１９９】
バタフライ演算器２３Ｃ−４は、入力端子ＤＡに入力選択装置２２Ｃ−４の出力信号ｒ４ｓｅｌ out を入力し、入力端子ＤＢに入力選択装置２２Ｃ−５の出力信号ｒ５ｓｅｌ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ４の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ４ａ out として入力選択装置２２Ｃ−１２および２２Ｃ−１１に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ４ｂ out として入力選択装置２２Ｃ−１３および２２Ｃ−１４に出力する。
【０２００】
バタフライ演算器２３Ｃ−５は、入力端子ＤＡに入力選択装置２２Ｃ−１２の出力信号ｂ４ｓｅｌ out を入力し、入力端子ＤＢに入力選択装置２２Ｃ−１３の出力信号ｂ５ｓｅｌ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ５の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ５ａ out として出力選択装置２４Ｃ−４および２５Ｃ−４に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ５ｂ out として出力選択装置２４Ｃ−５および２５Ｃ−５に出力する。
【０２０１】
バタフライ演算器２３Ｃ−６は、入力端子ＤＡに入力選択装置２２Ｃ−６の出力信号ｒ６ｓｅｌ out を入力し、入力端子ＤＢに入力選択装置２２Ｃ−７の出力信号ｒ７ｓｅｌ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ６の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ６ａ out として入力選択装置２２Ｃ−１４および２２Ｃ−１３に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ６ｂ out として入力選択装置２２Ｃ−１５および２２Ｃ−８に出力する。
【０２０２】
バタフライ演算器２３Ｃ−７は、入力端子ＤＡに入力選択装置２２Ｃ−１４の出力信号ｂ６ｓｅｌ out を入力し、入力端子ＤＢに入力選択装置２２Ｃ−１５の出力信号ｂ７ｓｅｌ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ７の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ７ａ out として出力選択装置２４Ｃ−６および２５Ｃ−６に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ７ｂ out として出力選択装置２４Ｃ−７および２５Ｃ−７に出力する。
【０２０３】
具体的には、バタフライ演算器２３Ｃ−ｉ（ｉ＝０，２，４，６）は、制御信号ＢＴＦＭＤｉの値により、以下のいずれかの演算を選択的に行う。
【０２０４】
（数９）
btf[i]ａ out ＝r[i+1] sel out ，btf[i]ｂ out ＝r[i] sel out 
btf[i]ａ out ＝r[i+1] sel out ，btf[i]ｂ out ＝-r[i]sel out 
btf[i]ａ out ＝-r[i+1]sel out ，btf[i]ｂ out ＝r[i] sel out 
btf[i]ａ out ＝-r[i+1]sel out ，btf[i]ｂ out ＝-r[i]sel out 
btf[i]ａ out ＝r[i] sel out ，btf[i]ｂ out ＝r[i+1] sel out 
btf[i]ａ out ＝r[i] sel out ，btf[i]ｂ out ＝-r[i+1]sel out 
btf[i]ａ out ＝-r[i]sel out ，btf[i]ｂ out ＝r[i+1] sel out 
btf[i]ａ out ＝-r[i]sel out ，btf[i]ｂ out ＝-r[i+1]sel out 
btf[i]ａ out ＝r[i] sel out ＋r[i+1] sel out ，btf[i]ｂ out 
＝r[i] sel out −r[i+1] sel out 
btf[i]ａ out ＝r[i] sel out ＋r[i+1] sel out ，btf[i]ｂ out 
＝r[i+1] sel out −r[i] sel out 
btf[i]ａ out ＝r[i] sel out −r[i+1] sel out ，btf[i]ｂ out 
＝r[i] sel out ＋r[i+1] sel out 
btf[i]ａ out ＝r[i+1] sel out −r[i] sel out ，btf[i]ｂ out 
＝r[i] sel out ＋r[i+1] sel out 
【０２０５】
また、バタフライ演算器２３Ｃ−ｊ（ｊ＝１，３，５，７）は、制御信号ＢＴＦＭＤｊの値により、以下のいずれかの演算を選択的に行う。
【０２０６】
（数１０）
btf[j]ａ out ＝b[j] sel out ，btf[j]ｂ out ＝b[j-1] sel out 
btf[j]ａ out ＝b[j] sel out ，btf[j]ｂ out ＝-b[j-1]sel out 
btf[j]ａ out ＝-b[j]sel out ，btf[j]ｂ out ＝b[j-1] sel out 
btf[j]ａ out ＝-b[j]sel out ，btf[j]ｂ out ＝-b[j-1]sel out 
btf[j]ａ out ＝b[j-1] sel out ，btf[j]ｂ out ＝b[j] sel out 
btf[j]ａ out ＝b[j-1] sel out ，btf[j]ｂ out ＝-b[j]sel out 
btf[j]ａ out ＝-b[j-1]sel out ，btf[j]ｂ out ＝b[j] sel out 
btf[j]ａ out ＝-b[j-1]sel out ，btf[j]ｂ out ＝-b[j]sel out 
btf[j]ａ out ＝b[j-1] sel out ＋b[j] sel out ，btf[j]ｂ out 
＝b[j-1] sel out −b[j] sel out 
btf[j]ａ out ＝b[j-1] sel out ＋b[j] sel out ，btf[j]ｂ out 
＝b[j] sel out −b[j-1] sel out 
btf[j]ａ out ＝b[j-1] sel out −b[j] sel out ，btf[j]ｂ out 
＝b[j-1] sel out ＋b[j] sel out 
btf[j]ａ out ＝b[j] sel out −b[j-1] sel out ，btf[j]ｂ out 
＝b[j-1] sel out ＋b[j] sel out 
【０２０７】
出力選択装置２４Ｃ−０は、制御信号Ｄ０ＳＥＬに応じて、データ入力ＭＥＭＲ０とバタフライ演算器２３Ｃ−１の出力信号ｂｔｆ１ａ out のいずれかを選択し、信号Ｄ０として出力する。
【０２０８】
出力選択装置２４Ｃ−１は、制御信号Ｄ１ＳＥＬに応じて、データ入力ＭＥＭＲ１とバタフライ演算器２３Ｃ−１の出力信号ｂｔｆ１ｂ out のいずれかを選択し、信号Ｄ１として出力する。
【０２０９】
出力選択装置２４Ｃ−２は、制御信号Ｄ２ＳＥＬに応じて、データ入力ＭＥＭＲ２とバタフライ演算器２３Ｃ−３の出力信号ｂｔｆ３ａ out のいずれかを選択し、信号Ｄ２として出力する。
【０２１０】
出力選択装置２４Ｃ−３は、制御信号Ｄ３ＳＥＬに応じて、データ入力ＭＥＭＲ３とバタフライ演算器２３Ｃ−３の出力信号ｂｔｆ３ｂ out のいずれかを選択し、信号Ｄ３として出力する。
【０２１１】
出力選択装置２４Ｃ−４は、制御信号Ｄ４ＳＥＬに応じて、データ入力ＭＥＭＲ４とバタフライ演算器２３Ｃ−５の出力信号ｂｔｆ５ａ out のいずれかを選択し、信号Ｄ４として出力する。
【０２１２】
出力選択装置２４Ｃ−５は、制御信号Ｄ５ＳＥＬに応じて、データ入力ＭＥＭＲ５とバタフライ演算器２３Ｃ−５の出力信号ｂｔｆ５ｂ out のいずれかを選択し、信号Ｄ５として出力する。
【０２１３】
出力選択装置２４Ｃ−６は、制御信号Ｄ６ＳＥＬに応じて、データ入力ＭＥＭＲ６とバタフライ演算器２３Ｃ−７の出力信号ｂｔｆ７ａ out のいずれかを選択し、信号Ｄ６として出力する。
【０２１４】
出力選択装置２４Ｃ−７は、制御信号Ｄ７ＳＥＬに応じて、データ入力ＭＥＭＲ７とバタフライ演算器２３Ｃ−７の出力信号ｂｔｆ７ｂ out のいずれかを選択し、信号Ｄ７として出力する。
【０２１５】
出力選択装置２５Ｃ−０は、制御信号Ｗ０ＳＥＬに応じて、データ入力Ｉ０とバタフライ演算器２３Ｃ−１の出力信号ｂｔｆ１ａ out のいずれかを選択し、信号ＭＥＭＷ０として出力する。
【０２１６】
出力選択装置２５Ｃ−１は、制御信号Ｗ１ＳＥＬに応じて、データ入力Ｉ１とバタフライ演算器２３Ｃ−１の出力信号ｂｔｆ１ｂ out のいずれかを選択し、信号ＭＥＭＷ１として出力する。
【０２１７】
出力選択装置２５Ｃ−２は、制御信号Ｗ２ＳＥＬに応じて、データ入力Ｉ２とバタフライ演算器２３Ｃ−３の出力信号ｂｔｆ３ａ out のいずれかを選択し、信号ＭＥＭＷ２として出力する。
【０２１８】
出力選択装置２５Ｃ−３は、制御信号Ｗ３ＳＥＬに応じて、データ入力Ｉ３とバタフライ演算器２３Ｃ−３の出力信号ｂｔｆ３ｂ out のいずれかを選択し、信号ＭＥＭＷ３として出力する。
【０２１９】
出力選択装置２５Ｃ−４は、制御信号Ｗ４ＳＥＬに応じて、データ入力Ｉ４とバタフライ演算器２３Ｃ−５の出力信号ｂｔｆ５ａ out のいずれかを選択し、信号ＭＥＭＷ４として出力する。
【０２２０】
出力選択装置２５Ｃ−５は、制御信号Ｗ５ＳＥＬに応じて、データ入力Ｉ５とバタフライ演算器２３Ｃ−５の出力信号ｂｔｆ５ｂ out のいずれかを選択し、信号ＭＥＭＷ５として出力する。
【０２２１】
出力選択装置２５Ｃ−６は、制御信号Ｗ６ＳＥＬに応じて、データ入力Ｉ６とバタフライ演算器２３Ｃ−７の出力信号ｂｔｆ７ａ out のいずれかを選択し、信号ＭＥＭＷ６として出力する。
【０２２２】
出力選択装置２５Ｃ−７は、制御信号Ｗ７ＳＥＬに応じて、データ入力Ｉ７とバタフライ演算器２３Ｃ−７の出力信号ｂｔｆ７ｂ out のいずれかを選択し、信号ＭＥＭＷ７として出力する。
【０２２３】
次に、上記構成による動作を説明する。
ここでは、たとえば以下の演算を実行するものとする。
Ｄ０＝ＭＥＭＲ６−ＭＥＭＲ７＋ＭＥＭＲ０−ＭＥＭＲ１，
Ｄ１＝ＭＥＭＲ１，
Ｄ６＝ＭＥＭＲ６，
Ｄ７＝ＭＥＭＲ６＋ＭＥＭＲ７−ＭＥＭＲ０−ＭＥＭＲ１，
ＭＥＭＷ０＝Ｉ０
ＭＥＭＷ１＝ＭＥＭＲ６−ＭＥＭＲ７−ＭＥＭＲ０＋ＭＥＭＲ１，
ＭＥＭＷ６＝ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ６＋ＭＥＭＲ７，
ＭＥＭＷ７＝Ｉ７
【０２２４】
この場合、入力選択装置２２Ｃ−０では、制御信号Ｒ０ＳＥＬにより、データ入力ＭＥＭＲ０を選択するように制御され、選択されたデータＭＥＭＲ０が信号ｒ０ｓｅｌ out として、バラフライ演算器２３Ｃ−０の入力端子ＤＡに供給される。
入力選択装置２２Ｃ−１では、制御信号Ｒ１ＳＥＬにより、ＭＥＭＲ１を選択するように制御され、選択されたデータＭＥＭＲ１が信号ｒ１ｓｅｌ out として、バラフライ演算器２３Ｃ−０の入力端子ＤＢに供給される。
【０２２５】
また、入力選択装置２２Ｃ−６では、制御信号Ｒ６ＳＥＬにより、ＭＥＭＲ６を選択するように制御され、選択されたデータＭＥＭＲ６が信号ｒ６ｓｅｌ out として、バラフライ演算器２３Ｃ−６の入力端子ＤＡに供給される。
入力選択装置２２Ｃ−７では、制御信号Ｒ７ＳＥＬにより、ＭＥＭＲ７を選択するように制御され、選択されたデータＭＥＭＲ７が信号ｒ７ｓｅｌ out として、バラフライ演算器２３Ｃ−６の入力端子ＤＢに供給される。
【０２２６】
バタフライ演算器２３Ｃ−０では、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ０により、ＯＡ＝ＤＡ＋ＤＢ，ＯＢ＝ＤＡ−ＤＢが計算されるモードに設定される。
これにより、バタフライ演算器２３Ｃ−０においては、入力端子ＤＡに供給されたデータＭＥＭＲ０と入力端子ＤＢに供給されたデータＭＥＭＲ１とが加算され、その結果である（ＭＥＭＲ０＋ＭＥＭＲ１）が出力端子ＯＡから信号ｂｔｆ０ａ out として、入力選択装置２２Ｃ−８および２２Ｃ−１５に出力される。
また、バタフライ演算器２３Ｃ−０においては、入力端子ＤＡに供給されたデータＭＥＭＲ０と入力端子ＤＢに供給されたデータＭＥＭＲ１との差がとられ、その結果である（ＭＥＭＲ０−ＭＥＭＲ１）が出力端子ＯＢから信号ｂｔｆ０ｂ out として、入力選択装置２２Ｃ−９および２２Ｃ−１０に出力される。
【０２２７】
同様に、バタフライ演算器２３Ｃ−６では、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ６により、ＯＡ＝ＤＡ＋ＤＢ，ＯＢ＝ＤＡ−ＤＢが計算されるモードに設定される。
これにより、バタフライ演算器２３Ｃ−６においては、入力端子ＤＡに供給されたデータＭＥＭＲ６と入力端子ＤＢに供給されたデータＭＥＭＲ７とが加算され、その結果である（ＭＥＭＲ６＋ＭＥＭＲ７）が出力端子ＯＡから信号ｂｔｆ６ａ out として、入力選択装置２２Ｃ−１４および２２Ｃ−１３に出力される。
また、バタフライ演算器２３Ｃ−６においては、入力端子ＤＡに供給されたデータＭＥＭＲ６と入力端子ＤＢに供給されたデータＭＥＭＲ７との差がとられ、その結果である（ＭＥＭＲ６−ＭＥＭＲ７）が出力端子ＯＢから信号ｂｔｆ６ｂ out として、入力選択装置２２Ｃ−１５および２２Ｃ−８に出力される。
【０２２８】
そして、入力選択装置２２Ｃ−８では、制御信号Ｂ０ＳＥＬにより、バタフライ演算器２３Ｃ−６の出力信号ｂｔｆ６ｂ out （＝ＭＥＭＲ６−ＭＥＭＲ７）を選択するように制御され、選択されたデータ（ＭＥＭＲ６−ＭＥＭＲ７）が信号ｂ０ｓｅｌ out として、バラフライ演算器２３Ｃ−１の入力端子ＤＡに供給される。
入力選択装置２２Ｃ−９では、制御信号Ｂ１ＳＥＬにより、バタフライ演算器２３Ｃ−０の出力信号ｂｔｆ０ｂ out （＝ＭＥＭＲ０−ＭＥＭＲ１）を選択するように制御され、選択されたデータ（ＭＥＭＲ０−ＭＥＭＲ１）が信号ｂ１ｓｅｌ out として、バラフライ演算器２３Ｃ−１の入力端子ＤＢに供給される。
【０２２９】
また、入力選択装置２２Ｃ−１４では、制御信号Ｂ６ＳＥＬにより、バタフライ演算器２３Ｃ−６の出力信号ｂｔｆ６ａ out （＝ＭＥＭＲ６＋ＭＥＭＲ７）を選択するように制御され、選択されたデータ（ＭＥＭＲ６＋ＭＥＭＲ７）が信号ｂ６ｓｅｌ out として、バラフライ演算器２３Ｃ−７の入力端子ＤＡに供給される。
入力選択装置２２Ｃ−１５では、制御信号Ｂ７ＳＥＬにより、バタフライ演算器２３Ｃ−０の出力信号ｂｔｆ０ａ out （＝ＭＥＭＲ０＋ＭＥＭＲ１）を選択するように制御され、選択されたデータ（ＭＥＭＲ０＋ＭＥＭＲ１）が信号ｂ７ｓｅｌ out として、バラフライ演算器２３Ｃ−７の入力端子ＤＢに供給される。
【０２３０】
バタフライ演算器２３Ｃ−１では、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ１により、ＯＡ＝ＤＡ＋ＤＢ，ＯＢ＝ＤＡ−ＤＢが計算されるモードに設定される。
これにより、バタフライ演算器２３Ｃ−１においては、入力端子ＤＡに供給されたデータ（ＭＥＭＲ６−ＭＥＭＲ７）と入力端子ＤＢに供給されたデータ（ＭＥＭＲ０−ＭＥＭＲ１）とが加算され、その結果である（ＭＥＭＲ６−ＭＥＭＲ７＋ＭＥＭＲ０−ＭＥＭＲ１）が出力端子ＯＡから信号ｂｔｆ１ａ out として、出力選択装置２４Ｃ−０および２５Ｃ−０に出力される。
また、バタフライ演算器２３Ｃ−１においては、入力端子ＤＡに供給されたデータ（ＭＥＭＲ６−ＭＥＭＲ７）と入力端子ＤＢに供給されたデータ（ＭＥＭＲ０−ＭＥＭＲ１）との差がとられ、その結果である（ＭＥＭＲ６−ＭＥＭＲ７−ＭＥＭＲ０＋ＭＥＭＲ１）が出力端子ＯＢから信号ｂｔｆ１ｂ out として、出力選択装置２４Ｃ−１および２５Ｃ−１に出力される。
【０２３１】
同様に、バタフライ演算器２３Ｃ−７では、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ７により、ＯＡ＝ＤＡ＋ＤＢ，ＯＢ＝ＤＡ−ＤＢが計算されるモードに設定される。
これにより、バタフライ演算器２３Ｃ−７においては、入力端子ＤＡに供給されたデータ（ＭＥＭＲ６＋ＭＥＭＲ７）と入力端子ＤＢに供給されたデータ（ＭＥＭＲ０＋ＭＥＭＲ１）とが加算され、その結果である（ＭＥＭＲ６＋ＭＥＭＲ７＋ＭＥＭＲ０＋ＭＥＭＲ１）が出力端子ＯＡから信号ｂｔｆ７ａ out として、出力選択装置２４Ｃ−６および２５Ｃ−６に出力される。
また、バタフライ演算器２３Ｃ−７においては、入力端子ＤＡに供給されたデータ（ＭＥＭＲ６＋ＭＥＭＲ７）と入力端子ＤＢに供給されたデータ（ＭＥＭＲ０＋ＭＥＭＲ１）との差がとられ、その結果である（ＭＥＭＲ６＋ＭＥＭＲ７−ＭＥＭＲ０−ＭＥＭＲ１）が出力端子ＯＢから信号ｂｔｆ７ｂ out として、出力選択装置２４Ｃ−７および２５Ｃ−７に出力される。
【０２３２】
出力選択装置２４Ｃ−０においては、データ入力ＭＥＭＲ０とバタフライ演算器２３Ｃ−１の出力信号ｂｔｆ１ａ out （＝ＭＥＭＲ６−ＭＥＭＲ７＋ＭＥＭＲ０−ＭＥＭＲ１）のうち、バタフライ演算器２３Ｃ−１の出力信号ｂｔｆ１ａ out を選択するように制御信号Ｄ０ＳＥＬが供給され、これにより選択されたデータが信号Ｄ０＝ＭＥＭＲ６−ＭＥＭＲ７＋ＭＥＭＲ０−ＭＥＭＲ１として出力される。
【０２３３】
出力選択装置２４Ｃ−１においては、データ入力ＭＥＭＲ１とバタフライ演算器２３Ｃ−１の出力信号ｂｔｆ１ｂ out （＝ＭＥＭＲ６−ＭＥＭＲ７−ＭＥＭＲ０＋ＭＥＭＲ１）のうち、データ入力ＭＥＭＲ１を選択するように制御信号Ｄ１ＳＥＬが供給され、これにより選択されたデータが信号Ｄ１＝ＭＥＭＲ１として出力される。
【０２３４】
出力選択装置２４Ｃ−６においては、データ入力ＭＥＭＲ６とバタフライ演算器２３Ｃ−７の出力信号ｂｔｆ７ａ out （＝ＭＥＭＲ６＋ＭＥＭＲ７＋ＭＥＭＲ０＋ＭＥＭＲ１）のうち、データ入力ＭＥＭＲ６を選択するように制御信号Ｄ６ＳＥＬが供給され、これにより選択されたデータが信号Ｄ６＝ＭＥＭＲ６として出力される。
【０２３５】
出力選択装置２４Ｃ−７においては、データ入力ＭＥＭＲ７とバタフライ演算器２３Ｃ−７の出力信号ｂｔｆ７ｂ out （＝ＭＥＭＲ６＋ＭＥＭＲ７−ＭＥＭＲ０−ＭＥＭＲ１）のうち、バタフライ演算器２３Ｃ−７の出力信号ｂｔｆ７ｂ out を選択するように制御信号Ｄ７ＳＥＬが供給され、これにより選択されたデータが信号Ｄ７＝ＭＥＭＲ６＋ＭＥＭＲ７−ＭＥＭＲ０−ＭＥＭＲ１として出力される。
【０２３６】
また、出力選択装置２５Ｃ−０では、データ入力Ｉ０とバタフライ演算器２３Ｃ−１の出力信号ｂｔｆ１ａ out （＝ＭＥＭＲ６−ＭＥＭＲ７＋ＭＥＭＲ０−ＭＥＭＲ１）のうち、入力データＩ０を選択するように制御信号Ｗ０ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ０＝Ｉ０として出力される。
【０２３７】
出力選択装置２５Ｃ−１においては、データ入力Ｉ１とバタフライ演算器２３Ｃ−１の出力信号ｂｔｆ１ｂ out （＝ＭＥＭＲ６−ＭＥＭＲ７−ＭＥＭＲ０＋ＭＥＭＲ１）のうち、バタフライ演算器２３Ｃ−１の出力信号ｂｔｆ１ｂ outを選択するように制御信号Ｗ１ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ１＝ＭＥＭＲ６−ＭＥＭＲ７−ＭＥＭＲ０＋ＭＥＭＲ１として出力される。
【０２３８】
出力選択装置２５Ｃ−６においては、データ入力Ｉ６とバタフライ演算器２３Ｃ−７の出力信号ｂｔｆ７ａ out （＝ＭＥＭＲ６＋ＭＥＭＲ７＋ＭＥＭＲ０＋ＭＥＭＲ１）のうち、バタフライ演算器２３Ｃ−７の出力信号ｂｔｆ７ａ outを選択するように制御信号Ｗ６ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ６＝ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ６＋ＭＥＭＲ７として出力される。
【０２３９】
また、出力選択装置２５Ｃ−７では、データ入力Ｉ７とバタフライ演算器２３Ｃ−７の出力信号ｂｔｆ７ｂ out （＝ＭＥＭＲ６＋ＭＥＭＲ７−ＭＥＭＲ０−ＭＥＭＲ１）のうち、入力データＩ７を選択するように制御信号Ｗ７ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ７＝Ｉ７として出力される。
【０２４０】
以上のように、本第６の実施形態に係る１６入力１６出力の演算装置２０Ｃによれば、上述した第３の実施形態の効果と同様の効果を得ることができる。
【０２４１】
なお、本第６の実施形態においては、データ入力ＭＥＭＲ０〜ＭＥＭＲ７の入力段に単項演算器、たとえばシフト演算器を、上述した第３〜第５の実施形態と同様に、配置することが可能である。
この場合、単項演算器ＳＦＴ０，ＳＦＴ１，ＳＦＴ２，ＳＦＴ３，ＳＦＴ４，ＳＦＴ５，ＳＦＴ６，ＳＦＴ７は、それぞれたとえば制御信号ＳＦＴ０ＭＤ，ＳＦＴ１ＭＤ，ＳＦＴ２ＭＤ，ＳＦＴ３ＭＤ，ＳＦＴ４ＭＤ，ＳＦＴ５ＭＤ，ＳＦＴ６ＭＤ，ＳＦＴ７ＭＤを入力とし、ＭＥＭＲ０，ＭＥＭＲ１，ＭＥＭＲ２，ＭＥＭＲ３，ＭＥＭＲ４，ＭＥＭＲ５，ＭＥＭＲ６，ＭＥＭＲ７の値を、制御信号ＳＦＴ０ＭＤ，ＳＦＴ１ＭＤ，ＳＦＴ２ＭＤ，ＳＦＴ３ＭＤ，ＳＦＴ４ＭＤ，ＳＦＴ５ＭＤ，ＳＦＴ６ＭＤ，ＳＦＴ７ＭＤの値に応じて単項演算を行い、その結果を入力選択装置２２Ｃ−０〜２２Ｃ−７（ＲＳＥＬ０〜ＲＳＥＬ７）、出力選択装置２４Ｃ−０〜２４Ｃ−７（ＤＳＥＬ０〜ＤＳＥＬ７）に出力するように構成される。
ただし、ここで単項演算器は、左または右に任意ビットシフトする演算で実現される演算器である。
【０２４２】
第７実施形態
図９は、本発明に係る演算装置の第７の実施形態を示す構成図である。
【０２４３】
図９の演算装置２０Ｄは、構成情報に基づいて再構成可能な演算装置であって、１６入力１６出力の演算を行い、バタフライ演算を実行可能に構成されている。
【０２４４】
本演算装置２０Ｄは、入力選択装置（ＲＳＥＬ０）２２Ｄ−０、入力選択装置（ＲＳＥＬ１）２２Ｄ−１、入力選択装置（ＲＳＥＬ２）２２Ｄ−２、入力選択装置（ＲＳＥＬ３）２２Ｄ−３、入力選択装置（ＲＳＥＬ４）２２Ｄ−４、入力選択装置（ＲＳＥＬ５）２２Ｄ−５、入力選択装置（ＲＳＥＬ６）２２Ｄ−６、入力選択装置（ＲＳＥＬ７）２２Ｄ−７、バタフライ演算器（ＢＴＦ０）２３Ｄ−０、バタフライ演算器（ＢＴＦ１）２３Ｄ−１、バタフライ演算器（ＢＴＦ２）２３Ｄ−２、バタフライ演算器（ＢＴＦ３）２３Ｄ−３、バタフライ演算器（ＢＴＦ４）２３Ｄ−４、バタフライ演算器（ＢＴＦ５）２３Ｄ−５、バタフライ演算器（ＢＴＦ６）２３Ｄ−６、出力選択装置（ＤＳＥＬ０）２４Ｄ−０、出力選択装置（ＤＳＥＬ１）２４Ｄ−１、出力選択装置（ＤＳＥＬ２）２４Ｄ−２、出力選択装置（ＤＳＥＬ３）２４Ｄ−３、出力選択装置（ＤＳＥＬ４）２４Ｄ−４、出力選択装置（ＤＳＥＬ５）２４Ｄ−５、出力選択装置（ＤＳＥＬ６）２４Ｄ−６、出力選択装置（ＤＳＥＬ７）２４Ｄ−７、出力選択装置（ＷＳＥＬ０）２５Ｄ−０、出力選択装置（ＷＳＥＬ１）２５Ｄ−１、出力選択装置（ＷＳＥＬ２）２５Ｄ−２、出力選択装置（ＷＳＥＬ３）２５Ｄ−３、出力選択装置（ＷＳＥＬ４）２５Ｄ−４、出力選択装置（ＷＳＥＬ５）２５Ｄ−５、出力選択装置（ＷＳＥＬ６）２５Ｄ−６、および出力選択装置（ＷＳＥＬ７）２５Ｄ−７を有している。
【０２４５】
そして、演算装置２０Ｄは、データ入力ＭＥＭＲ０，ＭＥＭＲ１，ＭＥＭＲ２，ＭＥＭＲ３，ＭＥＭＲ４，ＭＥＭＲ５，ＭＥＭＲ６，ＭＥＭＲ７，Ｉ０，Ｉ１，Ｉ２，Ｉ３，Ｉ４，Ｉ５，Ｉ６，Ｉ７、およびデータ出力ＭＥＭＷ０，ＭＥＭＷ１，ＭＥＭＷ２，ＭＥＭＷ３，ＭＥＭＷ４，ＭＥＭＷ５，ＭＥＭＷ６，ＭＥＭＷ７，Ｄ０，Ｄ１，Ｄ２，Ｄ３，Ｄ４，Ｄ５，Ｄ６，Ｄ７を有し、また、再構成のための制御信号ＢＴＦＭＤ０，ＢＴＦＭＤ１，ＢＴＦＭＤ２，ＢＴＦＭＤ３，ＢＴＦＭＤ４，ＢＴＦＭＤ５，ＢＴＦＭＤ６、Ｒ０ＳＥＬ，Ｒ１ＳＥＬ，Ｒ２ＳＥＬ，Ｒ３ＳＥＬ，Ｒ４ＳＥＬ，Ｒ５ＳＥＬ，Ｒ６ＳＥＬ，Ｒ７ＳＥＬ、Ｗ０ＳＥＬ，Ｗ１ＳＥＬ，Ｗ２ＳＥＬ，Ｗ３ＳＥＬ，Ｗ４ＳＥＬ，Ｗ５ＳＥＬ，Ｗ６ＳＥＬ，Ｗ７ＳＥＬ、Ｄ０ＳＥＬ，Ｄ１ＳＥＬ，Ｄ２ＳＥＬ，Ｄ３ＳＥＬ，Ｄ４ＳＥＬ，Ｄ５ＳＥＬ，Ｄ６ＳＥＬ，Ｄ７ＳＥＬが供給される。
【０２４６】
入力選択装置２２Ｄ−０は、制御信号Ｒ０ＳＥＬに応じて、データ入力ＭＥＭＲ０およびデータ入力Ｉ０のいずれかを選択し、信号ｒ０ｓｅｌ out としてバタフライ演算器２３Ｄ−０に出力する。
【０２４７】
入力選択装置２２Ｄ−１は、制御信号Ｒ１ＳＥＬに応じて、データ入力ＭＥＭＲ１およびデータ入力Ｉ１のいずれかを選択し、信号ｒ１ｓｅｌ out としてバタフライ演算器２３Ｄ−０に出力する。
【０２４８】
入力選択装置２２Ｄ−２は、制御信号Ｒ２ＳＥＬに応じて、データ入力ＭＥＭＲ２およびデータ入力Ｉ２のいずれかを選択し、信号ｒ２ｓｅｌ out としてバタフライ演算器２３Ｄ−１に出力する。
【０２４９】
入力選択装置２２Ｄ−３は、制御信号Ｒ３ＳＥＬに応じて、データ入力ＭＥＭＲ３およびデータ入力Ｉ３のいずれかを選択し、信号ｒ３ｓｅｌ out としてバタフライ演算器２３Ｄ−１に出力する。
【０２５０】
入力選択装置２２Ｄ−４は、制御信号Ｒ４ＳＥＬに応じて、データ入力ＭＥＭＲ４およびデータ入力Ｉ４のいずれかを選択し、信号ｒ４ｓｅｌ out としてバタフライ演算器２３Ｄ−２に出力する。
【０２５１】
入力選択装置２２Ｄ−５は、制御信号Ｒ５ＳＥＬに応じて、データ入力ＭＥＭＲ５およびデータ入力Ｉ５のいずれかを選択し、信号ｒ５ｓｅｌ out としてバタフライ演算器２３Ｄ−２に出力する。
【０２５２】
入力選択装置２２Ｄ−６は、制御信号Ｒ６ＳＥＬに応じて、データ入力ＭＥＭＲ６およびデータ入力Ｉ６のいずれかを選択し、信号ｒ６ｓｅｌ out としてバタフライ演算器２３Ｄ−３に出力する。
【０２５３】
入力選択装置２２Ｄ−７は、制御信号Ｒ７ＳＥＬに応じて、データ入力ＭＥＭＲ７およびデータ入力Ｉ７のいずれかを選択し、信号ｒ７ｓｅｌ out としてバタフライ演算器２３Ｄ−３に出力する。
【０２５４】
バタフライ演算器２３Ｄ−０は、入力端子ＤＡに入力選択装置２２Ｄ−０の出力信号ｒ０ｓｅｌ out を入力し、入力端子ＤＢに入力選択装置２２Ｄ−１の出力信号ｒ１ｓｅｌ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ０の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ０ａ out としてバタフライ演算器２３Ｄ−４、出力選択装置２４Ｄ−０、および２５Ｄ−０に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ０ｂ out として出力選択装置２４Ｄ−１および２５Ｄ−１に出力する。
【０２５５】
バタフライ演算器２３Ｄ−１は、入力端子ＤＡに入力選択装置２２Ｄ−２の出力信号ｒ２ｓｅｌ out を入力し、入力端子ＤＢに入力選択装置２２Ｄ−３の出力信号ｒ３ｓｅｌ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ１の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ１ａ out としてバタフライ演算器２３Ｄ−４、出力選択装置２４Ｄ−２、および２５Ｄ−２に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ１ｂ out として出力選択装置２４Ｄ−３および２５Ｄ−３に出力する。
【０２５６】
バタフライ演算器２３Ｄ−２は、入力端子ＤＡに入力選択装置２２Ｄ−４の出力信号ｒ４ｓｅｌ out を入力し、入力端子ＤＢに入力選択装置２２Ｄ−５の出力信号ｒ５ｓｅｌ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ２の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ２ａ out としてバタフライ演算器２３Ｄ−５、出力選択装置２４Ｄ−４、および２５Ｄ−４に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ２ｂ out として出力選択装置２４Ｄ−５および２５Ｄ−５に出力する。
【０２５７】
バタフライ演算器２３Ｄ−３は、入力端子ＤＡに入力選択装置２２Ｄ−６の出力信号ｒ６ｓｅｌ out を入力し、入力端子ＤＢに入力選択装置２２Ｄ−７の出力信号ｒ７ｓｅｌ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ３の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ３ａ out としてバタフライ演算器２３Ｄ−５、出力選択装置２４Ｄ−６、および２５Ｄ−６に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ３ｂ out として出力選択装置２４Ｄ−７および２５Ｄ−７に出力する。
【０２５８】
バタフライ演算器２３Ｄ−４は、入力端子ＤＡにバタフライ演算器２３Ｄ−０の出力信号ｂｔｆ０ａ out を入力し、入力端子ＤＢにバタフライ演算器２３Ｄ−１の出力信号ｂｔｆ１ａ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ４の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ４ａ out としてバタフライ演算器２３Ｄ−６、出力選択装置２５Ｄ−０および２５Ｄ−２に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ４ｂ out として出力選択装置２５Ｄ−１および２５Ｄ−３に出力する。
【０２５９】
バタフライ演算器２３Ｄ−５は、入力端子ＤＡにバタフライ演算器２３Ｄ−２の出力信号ｂｔｆ２ａ out を入力し、入力端子ＤＢにバタフライ演算器２３Ｄ−３の出力信号ｂｔｆ３ａ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ５の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ５ａ out としてバタフライ演算器２３Ｄ−６、出力選択装置２５Ｄ−４および２５Ｄ−６に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ５ｂ out として出力選択装置２５Ｄ−５および２５Ｄ−７に出力する。
【０２６０】
バタフライ演算器２３Ｄ−６は、入力端子ＤＡにバタフライ演算器２３Ｄ−４の出力信号ｂｔｆ４ａ out を入力し、入力端子ＤＢにバタフライ演算器２３Ｄ−５の出力信号ｂｔｆ５ａ out を入力し、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ６の指示に応じた演算を行って２つの演算結果を得、一方の演算結果を出力端子ＯＡから信号ｂｔｆ６ａ out として出力選択装置２５Ｄ−０、２５Ｄ−２、２５Ｄ−４、および２５Ｄ−６に出力し、他方の演算結果を出力端子ＯＢから信号ｂｔｆ６ｂ out として出力選択装置２５Ｄ−１、２５Ｄ−３、２５Ｄ−５、および２５Ｄ−７に出力する。
【０２６１】
具体的には、バタフライ演算器２３Ｄ−ｌ（ｌ＝０，１，２，３）は、制御信号ＢＴＦＭＤｌの値により、以下のいずれかの演算を選択的に行う。
【０２６２】
（数１１）
btf[l]ａ out ＝r[l+1] sel out ，btf[l]ｂ out ＝r[l] sel out 
btf[l]ａ out ＝r[l+1] sel out ，btf[l]ｂ out ＝-r[l]sel out 
btf[l]ａ out ＝-r[l+1]sel out ，btf[l]ｂ out ＝r[l] sel out 
btf[l]ａ out ＝-r[l+1]sel out ，btf[l]ｂ out ＝-r[l]sel out 
btf[l]ａ out ＝r[l] sel out ，btf[l]ｂ out ＝r[l+1] sel out 
btf[l]ａ out ＝r[l] sel out ，btf[l]ｂ out ＝-r[l+1]sel out 
btf[l]ａ out ＝-r[l]sel out ，btf[l]ｂ out ＝r[l+1] sel out 
btf[l]ａ out ＝-r[l]sel out ，btf[l]ｂ out ＝-r[l+1]sel out 
btf[l]ａ out ＝r[l] sel out ＋r[l+1] sel out ，btf[l]ｂ out 
＝r[l] sel out −r[l+1] sel out 
btf[l]ａ out ＝r[l] sel out ＋r[l+1] sel out ，btf[l]ｂ out 
＝r[l+1] sel out −r[l] sel out 
btf[l]ａ out ＝r[l] sel out −r[l+1] sel out ，btf[l]ｂ out 
＝r[l] sel out ＋r[l+1] sel out 
btf[l]ａ out ＝r[l+1] sel out −r[l] sel out ，btf[l]ｂ out 
＝r[l] sel out ＋r[l+1] sel out 
【０２６３】
また、バタフライ演算器２３Ｄ−４は、制御信号ＢＴＦＭＤ４の値により、以下のいずれかの演算を選択的に行う。
【０２６４】
（数１２）
btf4ａ out ＝ btf0a out ，btf4ｂ out ＝ btf1a out 
btf4ａ out ＝ btf0a out ，btf4ｂ out ＝-btf1a out 
btf4ａ out ＝-btf0a out ，btf4ｂ out ＝ btf1a out 
btf4ａ out ＝-btf0a out ，btf4ｂ out ＝-btf1a out 
btf4ａ out ＝ btf0a out ，btf4ｂ out ＝ btf1a out 
btf4ａ out ＝ btf0a out ，btf4ｂ out ＝-btf1a out 
btf4ａ out ＝-btf0a out ，btf4ｂ out ＝ btf1a out 
btf4ａ out ＝-btf0a out ，btf4ｂ out ＝-btf1a out 
btf4ａ out ＝ btf1a out ＋ btf0a out ，btf4ｂ out 
＝ btf1a out − btf0a out 
btf4ａ out ＝ btf1a out ＋ btf0a out ，btf4b  out 
＝ btf0a out − btf1a out 
btf4ａ out ＝ btf1a out − btf0a out ，btf4ｂ out 
＝ btf1a out ＋ btf0a out 
btf4ａ out ＝ btf0a out − btf1a out ，btf4ｂ out 
＝ btf1a out ＋ btf0a out 
【０２６５】
また、バタフライ演算器２３Ｄ−５は、制御信号ＢＴＦＭＤ５の値により、以下のいずれかの演算を選択的に行う。
【０２６６】
（数１３）
btf5ａ out ＝ btf2a out ，btf5ｂ out ＝ btf3a out 
btf5ａ out ＝ btf2a out ，btf5ｂ out ＝-btf3a out 
btf5ａ out ＝-btf2a out ，btf5ｂ out ＝ btf3a out 
btf5ａ out ＝-btf2a out ，btf5ｂ out ＝-btf3a out 
btf5ａ out ＝ btf2a out ，btf5ｂ out ＝ btf3a out 
btf5ａ out ＝ btf2a out ，btf5ｂ out ＝-btf3a out 
btf5ａ out ＝-btf2a out ，btf5ｂ out ＝ btf3a out 
btf5ａ out ＝-btf2a out ，btf5ｂ out ＝-btf3a out 
btf5ａ out ＝ btf3a out ＋ btf2a out ，btf5ｂ out 
＝ btf3a out − btf2a out 
btf5ａ out ＝ btf3a out ＋ btf2a out ，btf5b  out 
＝ btf2a out − btf3a out 
btf5ａ out ＝ btf3a out − btf2a out ，btf5ｂ out 
＝ btf3a out ＋ btf2a out 
btf5ａ out ＝ btf2a out − btf3a out ，btf5ｂ out 
＝ btf3a out ＋ btf2a out 
【０２６７】
出力選択装置２４Ｄ−０は、制御信号Ｄ０ＳＥＬに応じて、データ入力ＭＥＭＲ０とバタフライ演算器２３Ｄ−０の出力信号ｂｔｆ０ａ out のいずれかを選択し、信号Ｄ０として出力する。
【０２６８】
出力選択装置２４Ｄ−１は、制御信号Ｄ１ＳＥＬに応じて、データ入力ＭＥＭＲ１とバタフライ演算器２３Ｄ−０の出力信号ｂｔｆ０ｂ out のいずれかを選択し、信号Ｄ１として出力する。
【０２６９】
出力選択装置２４Ｄ−２は、制御信号Ｄ２ＳＥＬに応じて、データ入力ＭＥＭＲ２とバタフライ演算器２３Ｄ−１の出力信号ｂｔｆ１ａ out のいずれかを選択し、信号Ｄ２として出力する。
【０２７０】
出力選択装置２４Ｄ−３は、制御信号Ｄ３ＳＥＬに応じて、データ入力ＭＥＭＲ３とバタフライ演算器２３Ｄ−１の出力信号ｂｔｆ１ｂ out のいずれかを選択し、信号Ｄ３として出力する。
【０２７１】
出力選択装置２４Ｄ−４は、制御信号Ｄ４ＳＥＬに応じて、データ入力ＭＥＭＲ４とバタフライ演算器２３Ｄ−２の出力信号ｂｔｆ２ａ out のいずれかを選択し、信号Ｄ４として出力する。
【０２７２】
出力選択装置２４Ｄ−５は、制御信号Ｄ５ＳＥＬに応じて、データ入力ＭＥＭＲ５とバタフライ演算器２３Ｄ−２の出力信号ｂｔｆ２ｂ out のいずれかを選択し、信号Ｄ５として出力する。
【０２７３】
出力選択装置２４Ｄ−６は、制御信号Ｄ６ＳＥＬに応じて、データ入力ＭＥＭＲ６とバタフライ演算器２３Ｄ−３の出力信号ｂｔｆ３ａ out のいずれかを選択し、信号Ｄ６として出力する。
【０２７４】
出力選択装置２４Ｄ−７は、制御信号Ｄ７ＳＥＬに応じて、データ入力ＭＥＭＲ７とバタフライ演算器２３Ｄ−３の出力信号ｂｔｆ３ｂ out のいずれかを選択し、信号Ｄ７として出力する。
【０２７５】
出力選択装置２５Ｄ−０は、制御信号Ｗ０ＳＥＬに応じて、データ入力Ｉ０とバタフライ演算器２３Ｄ−０の出力信号ｂｔｆ０ａ out とバタフライ演算器２３Ｄ−４の出力信号ｂｔｆ４ａ out とバタフライ演算器２３Ｄ−６の出力信号ｂｔｆ６ａ out のいずれかを選択し、信号ＭＥＭＷ０として出力する。
【０２７６】
出力選択装置２５Ｄ−１は、制御信号Ｗ１ＳＥＬに応じて、データ入力Ｉ１とバタフライ演算器２３Ｄ−０の出力信号ｂｔｆ０ｂ out とバタフライ演算器２３Ｄ−４の出力信号ｂｔｆ４ｂ out とバタフライ演算器２３Ｄ−６の出力信号ｂｔｆ６ｂ out のいずれかを選択し、信号ＭＥＭＷ１として出力する。
【０２７７】
出力選択装置２５Ｄ−２は、制御信号Ｗ２ＳＥＬに応じて、データ入力Ｉ２とバタフライ演算器２３Ｄ−１の出力信号ｂｔｆ１ａ out とバタフライ演算器２３Ｄ−４の出力信号ｂｔｆ４ａ out とバタフライ演算器２３Ｄ−６の出力信号ｂｔｆ６ａ out のいずれかを選択し、信号ＭＥＭＷ２として出力する。
【０２７８】
出力選択装置２５Ｄ−３は、制御信号Ｗ３ＳＥＬに応じて、データ入力Ｉ３とバタフライ演算器２３Ｄ−１の出力信号ｂｔｆ１ｂ out とバタフライ演算器２３Ｄ−４の出力信号ｂｔｆ４ｂ out とバタフライ演算器２３Ｄ−６の出力信号ｂｔｆ６ｂ out のいずれかを選択し、信号ＭＥＭＷ３として出力する。
【０２７９】
出力選択装置２５Ｄ−４は、制御信号Ｗ４ＳＥＬに応じて、データ入力Ｉ４とバタフライ演算器２３Ｄ−２の出力信号ｂｔｆ２ａ out とバタフライ演算器２３Ｄ−５の出力信号ｂｔｆ５ａ out とバタフライ演算器２３Ｄ−６の出力信号ｂｔｆ６ａ out のいずれかを選択し、信号ＭＥＭＷ４として出力する。
【０２８０】
出力選択装置２５Ｄ−５は、制御信号Ｗ５ＳＥＬに応じて、データ入力Ｉ５とバタフライ演算器２３Ｄ−２の出力信号ｂｔｆ２ｂ out とバタフライ演算器２３Ｄ−５の出力信号ｂｔｆ５ｂ out とバタフライ演算器２３Ｄ−６の出力信号ｂｔｆ６ｂ out のいずれかを選択し、信号ＭＥＭＷ５として出力する。
【０２８１】
出力選択装置２５Ｄ−６は、制御信号Ｗ６ＳＥＬに応じて、データ入力Ｉ６とバタフライ演算器２３Ｄ−３の出力信号ｂｔｆ３ａ out とバタフライ演算器２３Ｄ−５の出力信号ｂｔｆ５ａ out とバタフライ演算器２３Ｄ−６の出力信号ｂｔｆ６ａ out のいずれかを選択し、信号ＭＥＭＷ６として出力する。
【０２８２】
出力選択装置２５Ｄ−７は、制御信号Ｗ７ＳＥＬに応じて、データ入力Ｉ７とバタフライ演算器２３Ｄ−３の出力信号ｂｔｆ３ｂ out とバタフライ演算器２３Ｄ−５の出力信号ｂｔｆ５ｂ out とバタフライ演算器２３Ｄ−６の出力信号ｂｔｆ６ｂ out のいずれかを選択し、信号ＭＥＭＷ７として出力する。
【０２８３】
次に、上記構成による動作を説明する。
なおここでは、たとえば以下のように全ての出力Ｄ０〜Ｄ７，ＭＥＭＷ０〜ＭＥＭＷ７を得る場合を例に、装置全体の動作を説明する。
Ｄ０＝ＭＥＭＲ０＋ＭＥＭＲ１，
Ｄ１＝ＭＥＭＲ１，
Ｄ２＝ＭＥＭＲ２，
Ｄ３＝ＭＥＭＲ２−ＭＥＭＲ３，
Ｄ４＝ＭＥＭＲ４＋ＭＥＭＲ５，
Ｄ５＝ＭＥＭＲ５，
Ｄ６＝ＭＥＭＲ６＋ＭＥＭＲ７，
Ｄ７＝ＭＥＭＲ６−ＭＥＭＲ７，
ＭＥＭＷ０＝Ｉ０
ＭＥＭＷ１＝ＭＥＭＲ０＋ＭＥＭＲ１−ＭＥＭＲ２−ＭＥＭＲ３，
ＭＥＭＷ２＝ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３，
ＭＥＭＷ３＝Ｉ３
ＭＥＭＷ４＝ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３＋ＭＥＭＲ４＋ＭＥＭＲ５＋ＭＥＭＲ６＋ＭＥＭＲ７，
ＭＥＭＷ５＝ＭＥＭＲ４＋ＭＥＭＲ５−ＭＥＭＲ６−ＭＥＭＲ７，
ＭＥＭＷ６＝Ｉ６
ＭＥＭＷ７＝ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３−ＭＥＭＲ４−ＭＥＭＲ５−ＭＥＭＲ６−ＭＥＭＲ７
【０２８４】
この場合、入力選択装置２２Ｄ−０では、制御信号Ｒ０ＳＥＬにより、データ入力ＭＥＭＲ０を選択するように制御され、選択されたデータＭＥＭＲ０が信号ｒ０ｓｅｌ out として、バタフライ演算器２３Ｄ−０の入力端子ＤＡに供給される。
入力選択装置２２Ｄ−１では、制御信号Ｒ１ＳＥＬにより、ＭＥＭＲ１を選択するように制御され、選択されたデータＭＥＭＲ１が信号ｒ１ｓｅｌ out として、バタフライ演算器２３Ｄ−０の入力端子ＤＢに供給される。
【０２８５】
また、入力選択装置２２Ｄ−２では、制御信号Ｒ２ＳＥＬにより、ＭＥＭＲ２を選択するように制御され、選択されたデータＭＥＭＲ２が信号ｒ２ｓｅｌ out として、バタフライ演算器２３Ｄ−１の入力端子ＤＡに供給される。
入力選択装置２２Ｄ−３では、制御信号Ｒ３ＳＥＬにより、ＭＥＭＲ３を選択するように制御され、選択されたデータＭＥＭＲ３が信号ｒ３ｓｅｌ out として、バタフライ演算器２３Ｄ−１の入力端子ＤＢに供給される。
【０２８６】
また、入力選択装置２２Ｄ−４では、制御信号Ｒ４ＳＥＬにより、ＭＥＭＲ４を選択するように制御され、選択されたデータＭＥＭＲ４が信号ｒ４ｓｅｌ out として、バタフライ演算器２３Ｄ−２の入力端子ＤＡに供給される。
入力選択装置２２Ｄ−５では、制御信号Ｒ５ＳＥＬにより、ＭＥＭＲ５を選択するように制御され、選択されたデータＭＥＭＲ５が信号ｒ５ｓｅｌ out として、バタフライ演算器２３Ｄ−２の入力端子ＤＢに供給される。
【０２８７】
また、入力選択装置２２Ｄ−６では、制御信号Ｒ６ＳＥＬにより、ＭＥＭＲ６を選択するように制御され、選択されたデータＭＥＭＲ６が信号ｒ６ｓｅｌ out として、バタフライ演算器２３Ｄ−３の入力端子ＤＡに供給される。
入力選択装置２２Ｄ−７では、制御信号Ｒ７ＳＥＬにより、ＭＥＭＲ７を選択するように制御され、選択されたデータＭＥＭＲ７が信号ｒ７ｓｅｌ out として、バタフライ演算器２３Ｄ−３の入力端子ＤＢに供給される。
【０２８８】
バタフライ演算器２３Ｄ−０では、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ０により、ＯＡ＝ＤＡ＋ＤＢ，ＯＢ＝ＤＡ−ＤＢが計算されるモードに設定される。
これにより、バタフライ演算器２３Ｄ−０においては、入力端子ＤＡに供給されたデータＭＥＭＲ０と入力端子ＤＢに供給されたデータＭＥＭＲ１とが加算され、その結果である（ＭＥＭＲ０＋ＭＥＭＲ１）が出力端子ＯＡから信号ｂｔｆ０ａ out として、バタフライ演算器２３Ｄ−４の入力端子ＤＡ、出力選択装置２４Ｄ−０および２５Ｄ−０に出力される。
また、バタフライ演算器２３Ｄ−０においては、入力端子ＤＡに供給されたデータＭＥＭＲ０と入力端子ＤＢに供給されたデータＭＥＭＲ１との差がとられ、その結果である（ＭＥＭＲ０−ＭＥＭＲ１）が出力端子ＯＢから信号ｂｔｆ０ｂ out として、出力選択装置２４Ｄ−１および２５Ｄ−１に出力される。
【０２８９】
バタフライ演算器２３Ｄ−１では、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ１により、ＯＡ＝ＤＡ＋ＤＢ，ＯＢ＝ＤＡ−ＤＢが計算されるモードに設定される。
これにより、バタフライ演算器２３Ｄ−１においては、入力端子ＤＡに供給されたデータＭＥＭＲ２と入力端子ＤＢに供給されたデータＭＥＭＲ３とが加算され、その結果である（ＭＥＭＲ２＋ＭＥＭＲ３）が出力端子ＯＡから信号ｂｔｆ１ａ out として、バタフライ演算器２３Ｄ−４の入力端子ＤＢ、出力選択装置２４Ｄ−２および２５Ｄ−２に出力される。
また、バタフライ演算器２３Ｄ−１においては、入力端子ＤＡに供給されたデータＭＥＭＲ２と入力端子ＤＢに供給されたデータＭＥＭＲ３との差がとられ、その結果である（ＭＥＭＲ２−ＭＥＭＲ３）が出力端子ＯＢから信号ｂｔｆ１ｂ out として、出力選択装置２４Ｄ−３および２５Ｄ−３に出力される。
【０２９０】
バタフライ演算器２３Ｄ−２では、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ２により、ＯＡ＝ＤＡ＋ＤＢ，ＯＢ＝ＤＡ−ＤＢが計算されるモードに設定される。
これにより、バタフライ演算器２３Ｄ−２においては、入力端子ＤＡに供給されたデータＭＥＭＲ４と入力端子ＤＢに供給されたデータＭＥＭＲ５とが加算され、その結果である（ＭＥＭＲ４＋ＭＥＭＲ５）が出力端子ＯＡから信号ｂｔｆ２ａ out として、バタフライ演算器２３Ｄ−５の入力端子ＤＡ、出力選択装置２４Ｄ−４および２５Ｄ−４に出力される。
また、バタフライ演算器２３Ｄ−２においては、入力端子ＤＡに供給されたデータＭＥＭＲ４と入力端子ＤＢに供給されたデータＭＥＭＲ５との差がとられ、その結果である（ＭＥＭＲ４−ＭＥＭＲ５）が出力端子ＯＢから信号ｂｔｆ２ｂ out として、出力選択装置２４Ｄ−５および２５Ｄ−５に出力される。
【０２９１】
バタフライ演算器２３Ｄ−３では、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ３により、ＯＡ＝ＤＡ＋ＤＢ，ＯＢ＝ＤＡ−ＤＢが計算されるモードに設定される。
これにより、バタフライ演算器２３Ｄ−３においては、入力端子ＤＡに供給されたデータＭＥＭＲ６と入力端子ＤＢに供給されたデータＭＥＭＲ７とが加算され、その結果である（ＭＥＭＲ６＋ＭＥＭＲ７）が出力端子ＯＡから信号ｂｔｆ３ａ out として、バタフライ演算器２３Ｄ−５の入力端子ＤＢ、出力選択装置２４Ｄ−６および２５Ｄ−６に出力される。
また、バタフライ演算器２３Ｄ−３においては、入力端子ＤＡに供給されたデータＭＥＭＲ６と入力端子ＤＢに供給されたデータＭＥＭＲ６との差がとられ、その結果である（ＭＥＭＲ６−ＭＥＭＲ７）が出力端子ＯＢから信号ｂｔｆ３ｂ out として、出力選択装置２４Ｄ−７および２５Ｄ−７に出力される。
【０２９２】
バタフライ演算器２３Ｄ−４では、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ４により、ＯＡ＝ＤＡ＋ＤＢ，ＯＢ＝ＤＡ−ＤＢが計算されるモードに設定される。
これにより、バタフライ演算器２３Ｄ−４においては、入力端子ＤＡに供給されたデータ（ＭＥＭＲ０＋ＭＥＭＲ１）と入力端子ＤＢに供給されたデータ（ＭＥＭＲ２＋ＭＥＭＲ３）とが加算され、その結果である（ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３）が出力端子ＯＡから信号ｂｔｆ４ａ out として、バタフライ演算器２３Ｄ−６の入力端子ＤＡ、出力選択装置２５Ｄ−０および２５Ｄ−２に出力される。
また、バタフライ演算器２３Ｄ−４においては、入力端子ＤＡに供給されたデータ（ＭＥＭＲ０＋ＭＥＭＲ１）と入力端子ＤＢに供給されたデータ（ＭＥＭＲ２＋ＭＥＭＲ３）との差がとられ、その結果である（ＭＥＭＲ０＋ＭＥＭＲ１−ＭＥＭＲ２−ＭＥＭＲ３）が出力端子ＯＢから信号ｂｔｆ４ｂ out として、出力選択装置２５Ｄ−１および２５Ｄ−３に出力される。
【０２９３】
バタフライ演算器２３Ｄ−５では、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ５により、ＯＡ＝ＤＡ＋ＤＢ，ＯＢ＝ＤＡ−ＤＢが計算されるモードに設定される。
これにより、バタフライ演算器２３Ｄ−５においては、入力端子ＤＡに供給されたデータ（ＭＥＭＲ４＋ＭＥＭＲ５）と入力端子ＤＢに供給されたデータ（ＭＥＭＲ６＋ＭＥＭＲ７）とが加算され、その結果である（ＭＥＭＲ４＋ＭＥＭＲ５＋ＭＥＭＲ６＋ＭＥＭＲ７）が出力端子ＯＡから信号ｂｔｆ５ａ out として、バタフライ演算器２３Ｄ−６の入力端子ＤＢ、出力選択装置２５Ｄ−４および２５Ｄ−６に出力される。
また、バタフライ演算器２３Ｄ−５においては、入力端子ＤＡに供給されたデータ（ＭＥＭＲ４＋ＭＥＭＲ５）と入力端子ＤＢに供給されたデータ（ＭＥＭＲ６＋ＭＥＭＲ７）との差がとられ、その結果である（ＭＥＭＲ４＋ＭＥＭＲ５−ＭＥＭＲ６−ＭＥＭＲ７）が出力端子ＯＢから信号ｂｔｆ５ｂ out として、出力選択装置２５Ｄ−５および２５Ｄ−７に出力される。
【０２９４】
そして、バタフライ演算器２３Ｄ−６では、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ６により、ＯＡ＝ＤＡ＋ＤＢ，ＯＢ＝ＤＡ−ＤＢが計算されるモードに設定される。
これにより、バタフライ演算器２３Ｄ−６においては、入力端子ＤＡに供給されたデータ（ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３）と入力端子ＤＢに供給されたデータ（ＭＥＭＲ４＋ＭＥＭＲ５＋ＭＥＭＲ６＋ＭＥＭＲ７）とが加算され、その結果である（ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３＋ＭＥＭＲ４＋ＭＥＭＲ５＋ＭＥＭＲ６＋ＭＥＭＲ７）が出力端子ＯＡから信号ｂｔｆ６ａ out として、出力選択装置２５Ｄ−０、２５Ｄ−２、２５Ｄ−４および２５Ｄ−６に出力される。
また、バタフライ演算器２３Ｄ−６においては、入力端子ＤＡに供給されたデータ（ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３）と入力端子ＤＢに供給されたデータ（ＭＥＭＲ４＋ＭＥＭＲ５＋ＭＥＭＲ６＋ＭＥＭＲ７）との差がとられ、その結果である（ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３−ＭＥＭＲ４−ＭＥＭＲ５−ＭＥＭＲ６−ＭＥＭＲ７）が出力端子ＯＢから信号ｂｔｆ６ｂ out として、出力選択装置２５Ｄ−１、２５Ｄ−３、２５Ｄ−５および２５Ｄ−７に出力される。
【０２９５】
出力選択装置２４Ｄ−０においては、データ入力ＭＥＭＲ０とバタフライ演算器２３Ｄ−０の出力信号ｂｔｆ０ａ out （＝ＭＥＭＲ０＋ＭＥＭＲ１）のうち、バタフライ演算器２３Ｄ−０の出力信号ｂｔｆ０ａ out を選択するように制御信号Ｄ０ＳＥＬが供給され、これにより選択されたデータが信号Ｄ０＝ＭＥＭＲ０＋ＭＥＭＲ１として出力される。
【０２９６】
出力選択装置２４Ｄ−１においては、データ入力ＭＥＭＲ１とバタフライ演算器２３Ｄ−０の出力信号ｂｔｆ０ｂ out （＝ＭＥＭＲ０−ＭＥＭＲ１）のうち、データ入力ＭＥＭＲ１を選択するように制御信号Ｄ１ＳＥＬが供給され、これにより選択されたデータが信号Ｄ１＝ＭＥＭＲ１として出力される。
【０２９７】
出力選択装置２４Ｄ−２においては、データ入力ＭＥＭＲ２とバタフライ演算器２３Ｄ−１の出力信号ｂｔｆ１ａ out （＝ＭＥＭＲ２＋ＭＥＭＲ３）のうち、データ入力ＭＥＭＲ２を選択するように制御信号Ｄ２ＳＥＬが供給され、これにより選択されたデータが信号Ｄ２＝ＭＥＭＲ２として出力される。
【０２９８】
出力選択装置２４Ｄ−３においては、データ入力ＭＥＭＲ３とバタフライ演算器２３Ｄ−１の出力信号ｂｔｆ１ｂ out （＝ＭＥＭＲ２−ＭＥＭＲ３）のうち、バタフライ演算器２３Ｄ−１の出力信号ｂｔｆ１ｂ out を選択するように制御信号Ｄ３ＳＥＬが供給され、これにより選択されたデータが信号Ｄ３＝ＭＥＭＲ２−ＭＥＭＲ３として出力される。
【０２９９】
出力選択装置２４Ｄ−４においては、データ入力ＭＥＭＲ４とバタフライ演算器２３Ｄ−２の出力信号ｂｔｆ２ａ out （＝ＭＥＭＲ４＋ＭＥＭＲ５）のうち、バタフライ演算器２３Ｄ−２の出力信号ｂｔｆ２ａ out を選択するように制御信号Ｄ４ＳＥＬが供給され、これにより選択されたデータが信号Ｄ４＝ＭＥＭＲ４＋ＭＥＭＲ５として出力される。
【０３００】
出力選択装置２４Ｄ−５においては、データ入力ＭＥＭＲ５とバタフライ演算器２３Ｄ−２の出力信号ｂｔｆ２ｂ out （＝ＭＥＭＲ４−ＭＥＭＲ５）のうち、データ入力ＭＥＭＲ５を選択するように制御信号Ｄ５ＳＥＬが供給され、これにより選択されたデータが信号Ｄ５＝ＭＥＭＲ５として出力される。
【０３０１】
出力選択装置２４Ｄ−６においては、データ入力ＭＥＭＲ６とバタフライ演算器２３Ｄ−３の出力信号ｂｔｆ３ａ out （＝ＭＥＭＲ６＋ＭＥＭＲ７）のうち、バタフライ演算器２３Ｄ−３の出力信号ｂｔｆ３ａ out を選択するように制御信号Ｄ６ＳＥＬが供給され、これにより選択されたデータが信号Ｄ６＝ＭＥＭＲ６＋ＭＥＭＲ７として出力される。
【０３０２】
出力選択装置２４Ｄ−７においては、データ入力ＭＥＭＲ７とバタフライ演算器２３Ｄ−３の出力信号ｂｔｆ３ｂ out （＝ＭＥＭＲ６−ＭＥＭＲ７）のうち、バタフライ演算器２３Ｄ−３の出力信号ｂｔｆ３ｂ out を選択するように制御信号Ｄ７ＳＥＬが供給され、これにより選択されたデータが信号Ｄ７＝ＭＥＭＲ６−ＭＥＭＲ７として出力される。
【０３０３】
また、出力選択装置２５Ｄ−０では、データ入力Ｉ０とバタフライ演算器２３Ｄ−０の出力信号ｂｔｆ０ａ out （＝ＭＥＭＲ０＋ＭＥＭＲ１）とバタフライ演算器２３Ｄ−４の出力信号ｂｔｆ４ａ out （＝ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３）とバタフライ演算器２３Ｄ−６の出力信号ｂｔｆ６ａ out （＝ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３＋ＭＥＭＲ４＋ＭＥＭＲ５＋ＭＥＭＲ６＋ＭＥＭＲ７）のうち、入力データＩ０を選択するように制御信号Ｗ０ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ０＝Ｉ０として出力される。
【０３０４】
また、出力選択装置２５Ｄ−１では、データ入力Ｉ１とバタフライ演算器２３Ｄ−０の出力信号ｂｔｆ０ｂ out （＝ＭＥＭＲ０−ＭＥＭＲ１）とバタフライ演算器２３Ｄ−４の出力信号ｂｔｆ４ｂ out （＝ＭＥＭＲ０＋ＭＥＭＲ１−ＭＥＭＲ２−ＭＥＭＲ３）とバタフライ演算器２３Ｄ−６の出力信号ｂｔｆ６ｂ out （＝ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３−ＭＥＭＲ４−ＭＥＭＲ５−ＭＥＭＲ６−ＭＥＭＲ７）のうち、バタフライ演算器２３Ｄ−４の出力信号ｂｔｆ４ｂ out を選択するように制御信号Ｗ１ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ１＝ＭＥＭＲ０＋ＭＥＭＲ１−ＭＥＭＲ２−ＭＥＭＲ３として出力される。
【０３０５】
また、出力選択装置２５Ｄ−２では、データ入力Ｉ２とバタフライ演算器２３Ｄ−１の出力信号ｂｔｆ１ａ out （＝ＭＥＭＲ２＋ＭＥＭＲ３）とバタフライ演算器２３Ｄ−４の出力信号ｂｔｆ４ａ out （＝ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３）とバタフライ演算器２３Ｄ−６の出力信号ｂｔｆ６ａ out （＝ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３＋ＭＥＭＲ４＋ＭＥＭＲ５＋ＭＥＭＲ６＋ＭＥＭＲ７）のうち、バタフライ演算器２３Ｄ−４の出力信号ｂｔｆ４ａ out を選択するように制御信号Ｗ２ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ２＝ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３として出力される。
【０３０６】
また、出力選択装置２５Ｄ−３では、データ入力Ｉ３とバタフライ演算器２３Ｄ−１の出力信号ｂｔｆ０ｂ out （＝ＭＥＭＲ２−ＭＥＭＲ３）とバタフライ演算器２３Ｄ−４の出力信号ｂｔｆ４ｂ out （＝ＭＥＭＲ０＋ＭＥＭＲ１−ＭＥＭＲ２−ＭＥＭＲ３）とバタフライ演算器２３Ｄ−６の出力信号ｂｔｆ６ｂ out （＝ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３−ＭＥＭＲ４−ＭＥＭＲ５−ＭＥＭＲ６−ＭＥＭＲ７）のうち、入力データＩ３を選択するように制御信号Ｗ３ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ３＝Ｉ３として出力される。
【０３０７】
また、出力選択装置２５Ｄ−４では、データ入力Ｉ４とバタフライ演算器２３Ｄ−２の出力信号ｂｔｆ２ａ out （＝ＭＥＭＲ４＋ＭＥＭＲ５）とバタフライ演算器２３Ｄ−５の出力信号ｂｔｆ５ａ out （＝ＭＥＭＲ４＋ＭＥＭＲ５＋ＭＥＭＲ６＋ＭＥＭＲ７）とバタフライ演算器２３Ｄ−６の出力信号ｂｔｆ６ａ out （＝ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３＋ＭＥＭＲ４＋ＭＥＭＲ５＋ＭＥＭＲ６＋ＭＥＭＲ７）のうち、バタフライ演算器２３Ｄ−６の出力信号ｂｔｆ６ａ out を選択するように制御信号Ｗ４ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ４＝ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３＋ＭＥＭＲ４＋ＭＥＭＲ５＋ＭＥＭＲ６＋ＭＥＭＲ７として出力される。
【０３０８】
また、出力選択装置２５Ｄ−５では、データ入力Ｉ５とバタフライ演算器２３Ｄ−２の出力信号ｂｔｆ２ｂ out （＝ＭＥＭＲ４−ＭＥＭＲ５）とバタフライ演算器２３Ｄ−５の出力信号ｂｔｆ５ｂ out （＝ＭＥＭＲ４＋ＭＥＭＲ５−ＭＥＭＲ６−ＭＥＭＲ７）とバタフライ演算器２３Ｄ−６の出力信号ｂｔｆ６ｂ out （＝ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３−ＭＥＭＲ４−ＭＥＭＲ５−ＭＥＭＲ６−ＭＥＭＲ７）のうち、バタフライ演算器２３Ｄ−５の出力信号ｂｔｆ５ｂ out を選択するように制御信号Ｗ５ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ５＝ＭＥＭＲ４＋ＭＥＭＲ５−ＭＥＭＲ６−ＭＥＭＲ７として出力される。
【０３０９】
また、出力選択装置２５Ｄ−６では、データ入力Ｉ６とバタフライ演算器２３Ｄ−３の出力信号ｂｔｆ３ａ out （＝ＭＥＭＲ６＋ＭＥＭＲ７）とバタフライ演算器２３Ｄ−５の出力信号ｂｔｆ５ａ out （＝ＭＥＭＲ４＋ＭＥＭＲ５＋ＭＥＭＲ６＋ＭＥＭＲ７）とバタフライ演算器２３Ｄ−６の出力信号ｂｔｆ６ａ out （＝ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３＋ＭＥＭＲ４＋ＭＥＭＲ５＋ＭＥＭＲ６＋ＭＥＭＲ７）のうち、データ入力Ｉ６を選択するように制御信号Ｗ６ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ６＝Ｉ６として出力される。
【０３１０】
また、出力選択装置２５Ｄ−７では、データ入力Ｉ７とバタフライ演算器２３Ｄ−３の出力信号ｂｔｆ３ｂ out （＝ＭＥＭＲ６−ＭＥＭＲ７）とバタフライ演算器２３Ｄ−５の出力信号ｂｔｆ５ｂ out （＝ＭＥＭＲ４＋ＭＥＭＲ５−ＭＥＭＲ６−ＭＥＭＲ７）とバタフライ演算器２３Ｄ−６の出力信号ｂｔｆ６ｂ out （＝ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３−ＭＥＭＲ４−ＭＥＭＲ５−ＭＥＭＲ６−ＭＥＭＲ７）のうち、バタフライ演算器２３Ｄ−６の出力信号ｂｔｆ６ｂ out を選択するように制御信号Ｗ７ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ７＝ＭＥＭＲ０＋ＭＥＭＲ１＋ＭＥＭＲ２＋ＭＥＭＲ３−ＭＥＭＲ４−ＭＥＭＲ５−ＭＥＭＲ６−ＭＥＭＲ７として出力される。
【０３１１】
以上のように、本第７の実施形態に係る１６入力１６出力の演算装置２０Ｄによれば、上述した第３の実施形態の効果と同様の効果を得ることができる。
【０３１２】
なお、本第７の実施形態においては、データ入力ＭＥＭＲ０〜ＭＥＭＲ７の入力段に単項演算器、たとえばシフト演算器を、上述した第３〜第５の実施形態と同様に、配置することが可能である。
この場合、単項演算器ＳＦＴ０，ＳＦＴ１，ＳＦＴ２，ＳＦＴ３，ＳＦＴ４，ＳＦＴ５，ＳＦＴ６，ＳＦＴ７は、それぞれたとえば制御信号ＳＦＴ０ＭＤ，ＳＦＴ１ＭＤ，ＳＦＴ２ＭＤ，ＳＦＴ３ＭＤ，ＳＦＴ４ＭＤ，ＳＦＴ５ＭＤ，ＳＦＴ６ＭＤ，ＳＦＴ７ＭＤを入力とし、ＭＥＭＲ０，ＭＥＭＲ１，ＭＥＭＲ２，ＭＥＭＲ３，ＭＥＭＲ４，ＭＥＭＲ５，ＭＥＭＲ６，ＭＥＭＲ７の値を、制御信号ＳＦＴ０ＭＤ，ＳＦＴ１ＭＤ，ＳＦＴ２ＭＤ，ＳＦＴ３ＭＤ，ＳＦＴ４ＭＤ，ＳＦＴ５ＭＤ，ＳＦＴ６ＭＤ，ＳＦＴ７ＭＤの値に応じて単項演算を行い、その結果を入力選択装置２２Ｄ−０〜２２Ｄ−７（ＲＳＥＬ０〜ＲＳＥＬ７）、出力選択装置２４Ｄ−０〜２４Ｄ−７（ＤＳＥＬ０〜ＤＳＥＬ７）に出力するように構成される。
ただし、ここで単項演算器は、左または右に任意ビットシフトする演算で実現される演算器である。
【０３１３】
第８実施形態
図１０は、本発明に係る演算装置の第８の実施形態を示す構成図である。
図１０の演算装置３０は、上述した第１および第２の実施形態に係るＡＬＵおよびＭＡＣを含む第１の演算装置と、第３〜第７の実施形態に係るバタフライ演算器を含む第２の演算装置とを再構成可能に結合することで、データ読み出し、演算、データ書き込みの１サイクルで信号処理演算を効率良く実行可能に構成されている。
【０３１４】
本第８の実施形態に係る演算装置３０は、図１０に示すように、ＡＬＵおよびＭＡＣを含む第１の演算装置（ＰＵ）３１、およびバタフライ演算器を含む第２の演算装置（ＢＴＦＬ）３２を主構成要素として有している。
【０３１５】
第１の演算装置３１は、たとえば図２の演算装置を４つカスケード接続した図４の演算装置と同様の構成を有しており、データ入力Ｄ０Ｉ，Ｄ１Ｉ，Ｄ２Ｉ，Ｄ３Ｉ、係数入力ＣＯＥ０，ＣＯＥ１，ＣＯＥ２，ＣＯＥ３、およびデータ出力ＯＴ０，ＯＴ１，ＯＴ２，ＯＴ３を有し、再構成のための制御信号ＣＴＲＬ０，ＣＴＲＬ１，ＣＴＲＬ２，ＣＴＲＬ３が供給される。
そして、各制御信号には、演算制御信号ＡＳＥＬ，ＢＳＥＬ，ＥＳＥＬ，ＭＡＣＭＤ，ＡＬＵＭＤ，ＲＮＤＭＤ，ＳＡＴＭＤ，ＯＳＦＭＤ，ＡＣＣＭＤ、および遅延制御信号Ｃ０ＤＬ，Ｃ１ＤＬ，Ｃ２ＤＬ，Ｃ３ＤＬ、Ｄ０ＤＬ，Ｄ１ＤＬ，Ｄ２ＤＬ，Ｄ３ＤＬが含まれる。
【０３１６】
第２の演算装置３２は、データ入力ＭＥＭＲ０，ＭＥＭＲ１，ＭＥＭＲ２，ＭＥＭＲ３、演算結果入力Ｉ０，Ｉ１，Ｉ２，Ｉ３、データ出力Ｄ０，Ｄ１，Ｄ２，Ｄ３、およびＭＥＭＷ０，ＭＥＭＷ１，ＭＥＭＷ２，ＭＥＭＷ３を有し、再構成のための制御信号ＣＴＲＬＢが供給される。
たとえば第４の実施形態の場合を例にとると、制御信号ＣＴＲＬＢには、ＳＦＴ０ＭＤ，Ｒ０ＳＥＬ，ＢＴＦＭＤ０，Ｄ０ＳＥＬ，Ｗ０ＳＥＬ、ＳＦＴ１ＭＤ，Ｒ１ＳＥＬ，ＢＴＦＭＤ１，Ｄ１ＳＥＬ，Ｗ１ＳＥＬ、ＳＦＴ２ＭＤ，Ｒ２ＳＥＬ，ＢＴＦＭＤ２，Ｄ２ＳＥＬ，Ｗ２ＳＥＬ、およびＳＦＴ３ＭＤ，Ｒ３ＳＥＬ，ＢＴＦＭＤ３，Ｄ３ＳＥＬ，Ｗ３ＳＥＬが含まれる。
【０３１７】
そして、第２の演算装置３２のデータ入力ＭＥＭＲ０にデータＲ０が供給され、データ入力ＭＥＭＲ１にデータＲ１が供給され、データ入力ＭＥＭＲ２にデータＲ２が供給され、データ入力ＭＥＭＲ３にデータＲ３が供給される。
第２の演算装置３２のデータ出力Ｄ０が第１の演算装置３１のデータ入力Ｄ０Ｉに供給され、第２の演算装置３２のデータ出力Ｄ１が第１の演算装置３１のデータ入力Ｄ１Ｉに供給され、第２の演算装置３２のデータ出力Ｄ２が第１の演算装置３１のデータ入力Ｄ２Ｉに供給され、第２の演算装置３２のデータ出力Ｄ３が第１の演算装置３１のデータ入力Ｄ３Ｉに供給される。
また、第１の演算装置３１のデータ出力ＯＴ０が第２の演算装置３２のデータ入力Ｉ０に供給され、第１の演算装置３１のデータ出力ＯＴ１が第２の演算装置３２のデータ入力Ｉ１に供給され、第１の演算装置３１のデータ出力ＯＴ２が第２の演算装置３２のデータ入力Ｉ２に供給され、第１の演算装置３１のデータ出力ＯＴ３が第２の演算装置３２のデータ入力Ｉ３に供給される。
また、第２の演算装置３２のデータ出力ＭＥＭＷ０からデータＷ０が出力され、データ出力ＭＥＭＷ１からデータＷ１が出力され、データ出力ＭＥＭＷ２からデータＷ２が出力され、データ出力ＭＥＭＷ３からデータＷ３が出力される。
【０３１８】
また、第１の演算装置３１においては、以下の演算処理を同時（並列）に実行可能に構成されている。
【０３１９】
（数１４）
ＯＴ０＝（（Ｃ０Ｉ‖Ｃ１Ｉ‖Ｃ２Ｉ‖Ｃ３Ｉ‖Ｄ０Ｉ‖Ｄ１Ｉ‖Ｄ２Ｉ‖Ｄ３Ｉ‖ＯＴ１‖ＯＴ２‖ＯＴ３‖０）ｏｐ０（Ｄ０Ｉ‖Ｄ１Ｉ‖Ｄ２Ｉ‖Ｄ３Ｉ‖ＯＴ０）ｏｐ１（Ｄ０Ｉ‖Ｄ１Ｉ‖Ｄ２Ｉ‖Ｄ３Ｉ‖ＯＴ１‖ＯＴ２‖ＯＴ３‖０））、かつ、
ＯＴ１＝（（Ｃ０Ｉ‖Ｃ１Ｉ‖Ｃ２Ｉ‖Ｃ３Ｉ‖Ｄ０Ｉ‖Ｄ１Ｉ‖Ｄ２Ｉ‖Ｄ３Ｉ‖ＯＴ１‖ＯＴ２‖ＯＴ３‖０）ｏｐ２（Ｄ０Ｉ‖Ｄ１Ｉ‖Ｄ２Ｉ‖Ｄ３Ｉ‖ＯＴ０）ｏｐ３（Ｄ０Ｉ‖Ｄ１Ｉ‖Ｄ２Ｉ‖Ｄ３Ｉ‖ＯＴ２‖ＯＴ３‖ＯＴ０‖０））、かつ、
ＯＴ２＝（（Ｃ０Ｉ‖Ｃ１Ｉ‖Ｃ２Ｉ‖Ｃ３Ｉ‖Ｄ０Ｉ‖Ｄ１Ｉ‖Ｄ２Ｉ‖Ｄ３Ｉ‖ＯＴ１‖ＯＴ２‖ＯＴ３‖０）ｏｐ４（Ｄ０Ｉ‖Ｄ１Ｉ‖Ｄ２Ｉ‖Ｄ３Ｉ‖ＯＴ０）ｏｐ５（Ｄ０Ｉ‖Ｄ１Ｉ‖Ｄ２Ｉ‖Ｄ３Ｉ‖ＯＴ３‖ＯＴ０‖ＯＴ１‖０））、かつ、
ＯＴ３＝（（Ｃ０Ｉ‖Ｃ１Ｉ‖Ｃ２Ｉ‖Ｃ３Ｉ‖Ｄ０Ｉ‖Ｄ１Ｉ‖Ｄ２Ｉ‖Ｄ３Ｉ‖ＯＴ１‖ＯＴ２‖ＯＴ３‖０）ｏｐ６（Ｄ０Ｉ‖Ｄ１Ｉ‖Ｄ２Ｉ‖Ｄ３Ｉ‖ＯＴ０）ｏｐ７（Ｄ０Ｉ‖Ｄ１Ｉ‖Ｄ２Ｉ‖Ｄ３Ｉ‖ＯＴ０‖ＯＴ１‖ＯＴ２‖０））
【０３２０】
ただし、‖は選択演算を、ｏｐ０〜ｏｐ７は演算子を表している。またここで、演算子ｏｐ０〜ｏｐ７は、以下のいずれかで定義される。
【０３２１】
（数１５）
ＡｏｐＢ＝Ａ＊Ｂ，
ＡｏｐＢ＝Ａ＊−Ｂ，
ＡｏｐＢ＝Ａ＋Ｂ，
ＡｏｐＢ＝Ａ−Ｂ，
ＡｏｐＢ＝Ａ＆Ｂ，
ＡｏｐＢ＝Ａ｜Ｂ，
ＡｏｐＢ＝Ａ∧Ｂ，
【０３２２】
また、第２の演算装置３２においては、以下の演算処理を同時（並列）に実行可能に構成されている。
【０３２３】
（数１６）
ＭＥＭＷ０＝（（ＭＥＭＲ０‖Ｉ０）ｏｐ０（ＭＥＭＲ１‖Ｉ１））‖Ｉ０、かつ、
ＭＥＭＷ１＝（（ＭＥＭＲ０‖Ｉ０）ｏｐ１（ＭＥＭＲ１‖Ｉ１））‖Ｉ１、かつ、
ＭＥＭＷ２＝（（ＭＥＭＲ２‖Ｉ２）ｏｐ２（ＭＥＭＲ３‖Ｉ３））‖Ｉ２、かつ、
ＭＥＭＷ３＝（（ＭＥＭＲ２‖Ｉ２）ｏｐ３（ＭＥＭＲ３‖Ｉ３））‖Ｉ３、かつ、
Ｄ０＝（（ＭＥＭＲ０‖Ｉ０）ｏｐ４（ＭＥＭＲ１‖Ｉ１））‖ＭＥＭＲ０、かつ、
Ｄ１＝（（ＭＥＭＲ０‖Ｉ０）ｏｐ５（ＭＥＭＲ１‖Ｉ１））‖ＭＥＭＲ１、かつ、
Ｄ２＝（（ＭＥＭＲ２‖Ｉ２）ｏｐ６（ＭＥＭＲ３‖Ｉ３））‖ＭＥＭＲ２、かつ、
Ｄ３＝（（ＭＥＭＲ２‖Ｉ２）ｏｐ７（ＭＥＭＲ３‖Ｉ３））‖ＭＥＭＲ３
【０３２４】
ここでも、‖は選択演算を、ｏｐ０〜ｏｐ７は演算子を表している。またここで、演算子ｏｐ０〜ｏｐ７は、以下のいずれかで定義される。
【０３２５】
（数１７）
ＡｏｐＢ＝Ａ＋Ｂ，
ＡｏｐＢ＝Ａ−Ｂ，
ＡｏｐＢ＝−Ａ＋Ｂ，
ＡｏｐＢ＝−Ａ−Ｂ，
ＡｏｐＢ＝Ａ，
ＡｏｐＢ＝−Ａ，
ＡｏｐＢ＝Ｂ，
ＡｏｐＢ＝−Ｂ，
【０３２６】
次に、図１０の演算装置の動作を、第１の演算装置３１が図４の並列演算装置と同様の構成を有し、第２の演算装置３２が図６の装置と同様の構成を有する場合を例に説明する。
【０３２７】
なお、ここでは、以下の演算を実行するものとする。
Ｗ０＝Ｒ０＋Ｒ１，
Ｗ１＝ＣＯＥ０＊（Ｒ０−Ｒ１）−ＣＯＥ１＊（Ｒ２−Ｒ３），
Ｗ２＝Ｒ２＋Ｒ３，
Ｗ３＝ＣＯＥ２＊（Ｒ０−Ｒ１）＋ＣＯＥ３＊（Ｒ２−Ｒ３）
【０３２８】
まず、第２の演算装置３２において、図６に示すように、たとえばシフト演算器２１Ａ−０，２１Ａ−１，２１Ａ−２，２１Ａ−３のシフト量が、制御信号ＳＦＴ０ＭＤ，ＳＦＴ１ＭＤ，ＳＦＴ２ＭＤ，ＳＦＴ３ＭＤによりゼロに設定される。
したがって、シフト演算器２１Ａ−０の出力信号ｓｆｔ０ out はＭＥＭＲ０、すなわちデータＲ０となり、入力選択装置２２Ａ−０および出力選択装置２４Ａ−０に供給される。
同様に、シフト演算器２１Ａ−１の出力信号ｓｆｔ１ out はＭＥＭＲ１、すなわちＲ１となり、入力選択装置２２Ａ−１および出力選択装置２４Ａ−１に供給される。
シフト演算器２１Ａ−２の出力信号ｓｆｔ２ out はＭＥＭＲ２、すなわちＲ２となり、入力選択装置２２Ａ−２および出力選択装置２４Ａ−２に供給される。
そして、シフト演算器２１Ａ−３の出力信号ｓｆｔ３ out はＭＥＭＲ３、すなちＲ３となり、入力選択装置２２Ａ−３および出力選択装置２４Ａ−３に供給される。
【０３２９】
入力選択装置２２Ａ−０では、制御信号Ｒ０ＳＥＬにより、シフト演算器２１Ａ−０の出力信号Ｒ０を選択するように制御され、選択されたデータＲ０が信号ｒ０ｓｅｌ out として、バラフライ演算器２３Ａ−０の入力端子ＤＡに供給される。
入力選択装置２２Ａ−１では、制御信号Ｒ１ＳＥＬにより、シフト演算器２１Ａ−１の出力信号Ｒ１を選択するように制御され、選択されたデータＲ１が信号ｒ１ｓｅｌ out として、バラフライ演算器２３Ａ−０の入力端子ＤＢに供給される。
【０３３０】
また、入力選択装置２２Ａ−２では、制御信号Ｒ２ＳＥＬにより、シフト演算器２１Ａ−２の出力信号Ｒ２を選択するように制御され、選択されたデータＲ２が信号ｒ２ｓｅｌ out として、バラフライ演算器２３Ａ−１の入力端子ＤＡに供給される。
入力選択装置２２Ａ−３では、制御信号Ｒ３ＳＥＬにより、シフト演算器２１Ａ−３の出力信号Ｒ３を選択するように制御され、選択されたデータＲ３が信号ｒ３ｓｅｌ out として、バラフライ演算器２３Ａ−１の入力端子ＤＢに供給される。
【０３３１】
バタフライ演算器２３Ａ−０では、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ０により、ＯＡ＝ＤＡ＋ＤＢ，ＯＢ＝ＤＡ−ＤＢが計算されるモードに設定される。
これにより、バタフライ演算器２３Ａ−０においては、入力端子ＤＡに供給されたデータＲ０と入力端子ＤＢに供給されたデータＲ１とが加算され、その結果である（Ｒ０＋Ｒ１）が出力端子ＯＡから信号ｂｔｆ０ａ out として、出力選択装置２４Ａ−０および２５Ａ−０に出力される。
また、バタフライ演算器２３Ａ−０においては、入力端子ＤＡに供給されたデータＲ０と入力端子ＤＢに供給されたデータＲ１との差がとられ、その結果である（Ｒ０−Ｒ１）が出力端子ＯＢから信号ｂｔｆ０ｂ out として、出力選択装置２４Ａ−１および２５Ａ−１に出力される。
【０３３２】
同様に、バタフライ演算器２３Ａ−１では、制御端子ＣＴＬに供給される制御信号ＢＴＦＭＤ１により、ＯＡ＝ＤＡ＋ＤＢ，ＯＢ＝ＤＡ−ＤＢが計算されるモードに設定される。
これにより、バタフライ演算器２３Ａ−１においては、入力端子ＤＡに供給されたデータＲ２と入力端子ＤＢに供給されたデータＲ３とが加算され、その結果である（Ｒ２＋Ｒ３）が出力端子ＯＡから信号ｂｔｆ１ａ out として、出力選択装置２４Ａ−２および２５Ａ−２に出力される。
また、バタフライ演算器２３Ａ−１においては、入力端子ＤＡに供給されたデータＲ２と入力端子ＤＢに供給されたデータＲ３との差がとられ、その結果である（Ｒ２−Ｒ３）が出力端子ＯＢから信号ｂｔｆ１ｂ out として、出力選択装置２４Ａ−３および２５Ａ−３に出力される。
【０３３３】
そして、第２の演算装置３２では、出力選択装置２４Ａ−１において、シフト演算器２１Ａ−１の出力信号（Ｒ１）とバタフライ演算器２３Ａ−０の出力信号ｂｔｆ０ｂ out （＝ＭＥＭＲ０−ＭＥＭＲ１）のうち、バタフライ演算器２３Ａ−０の出力信号ｂｔｆ０ｂ out を選択するように制御信号Ｄ１ＳＥＬが供給され、これにより選択されたデータが信号Ｄ１＝Ｒ０−Ｒ１として、第１の演算装置３１のデータ入力Ｄ１Ｉに供給される。
【０３３４】
同様に、第２の演算装置３２では、出力選択装置２４Ａ−３において、シフト演算器２１Ａ−３の出力信号（Ｒ３）とバタフライ演算器２３Ａ−１の出力信号ｂｔｆ１ｂ out （＝Ｒ２−Ｒ３）のうち、バタフライ演算器２３Ａ−１の出力信号ｂｔｆ１ｂ out を選択するように制御信号Ｄ３ＳＥＬが供給され、これにより選択されたデータが信号Ｄ３＝Ｒ２−Ｒ３として、第１の演算装置３１のデータ入力Ｄ３Ｉに供給される。
【０３３５】
第１の演算装置３１では、まず、演算装置１０Ａ−０において、制御信号ＣＴＬ０により、演算結果信号ＯＴ０＝ＣＯＥ０＊Ｄ１となる演算が行われるように制御が行われる。
【０３３６】
この場合、演算装置１０Ａ−０において、制御信号ＡＳＥＬが係数入力ＣＯＥ０を選択するように設定されて第１の選択装置１１に供給される。
また、制御信号ＢＳＥＬがデータ入力Ｄ１Ｉ（＝Ｄ１＝Ｒ０−Ｒ１）を選択するように設定されて第２の選択装置１２に供給される。
これにより、第１の選択装置１１から係数ＣＯＥ０が信号ａｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第２の選択装置１２からデータＤ１（＝Ｒ０−Ｒ１）が信号ｂｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。
【０３３７】
このとき、乗算を指定する制御信号ＭＡＣＭＤが、ＭＡＣ１５に供給される。これにより、ＭＡＣ１５において、係数ＣＯＥ０とデータＤ１との乗算が行われ、その結果ＣＯＥ０＊Ｄ１が信号ｍａｃ ｏｕｔとして第４の選択装置１６に出力される。
そして、制御信号ＥＳＥＬがＭＡＣ１５の出力を選択するように、第４の選択装置１６に供給されている。その結果、第４の選択装置１６においてＭＡＣ１５の出力信号ｍａｃ ｏｕｔ（ＣＯＥ０＊Ｄ１）が選択され、信号ｅｓｅｌ ｏｕｔ（ＣＯＥ０＊Ｄ１）としてレジスタ１７に出力される。
レジスタ１７では、ＭＡＣ１５の演算結果ＣＯＥ０＊Ｄ１が格納され、この格納データが演算出力端子ＰＥ Ｃから演算結果信号ＯＴ０として、演算装置１０Ａ−１のカスケード入力ＰＥ Ｐ０、演算装置１０Ａ−２のカスケード入力ＰＥ Ｐ１、および演算装置１０Ａ−３のカスケード入力ＰＥ Ｐ２に出力される。
【０３３８】
演算装置１０Ａ−０においては、Ｃ０ＦＩＦＯ１８−０〜Ｃ３ＦＩＦＯ１８−３で所望の遅延量だけ遅延された係数ＣＯＥ０〜ＣＯＥ３が係数出力端子ＰＥ Ｃ０Ｏ〜ＰＥ Ｃ３Ｏから係数出力ｃ００〜ｃ３０として次段の演算装置１０Ａ−１の係数入力端子ＰＥ Ｃ０Ｉ〜ＰＥ Ｃ３Ｉに出力され、Ｄ０ＦＩＦＯ１９−１，Ｄ３ＦＩＦＯ１９−３で所望の遅延量だけ遅延されたデータＤ１，Ｄ３がデータ出力端子ＰＥ Ｄ１Ｏ，ＰＥ Ｄ３Ｏからデータ出力ｄ１０，ｄ３０として次段の演算装置１０Ａ−１のデータ入力端子ＰＥ Ｄ１Ｉ，〜ＰＥ Ｄ３Ｉに出力される。
【０３３９】
次に、演算装置１０Ａ−１においては、制御信号ＣＴＬ１により、演算結果信号ＯＴ１＝ＯＴ０−ＣＯＥ１＊Ｄ３となる演算が行われるように制御が行われる。
【０３４０】
この場合、制御信号ＡＳＥＬが係数入力端子ＰＥ Ｃ１Ｉに供給される演算装置１０Ａ−０の係数出力ｃ１０（ＣＯＥ１）を選択するように設定されて第１の選択装置１１に供給される。
また、制御信号ＢＳＥＬがデータ入力端子ＰＥ Ｄ１Ｉに供給される演算装置１０Ａ−０のデータ出力ｄ１０（Ｄ３＝Ｒ２−Ｒ３）を選択するように設定されて第２の選択装置１２に供給される。
また、制御信号ＣＳＥＬがカスケード入力端子ＰＥ Ｐ０に供給される演算装置１０Ａ−０の演算結果信号ＯＴ０（ＣＯＥ０＊Ｄ１）を選択するように設定されて第３の選択装置１３に供給される。
これにより、第１の選択装置１１から係数ＣＯＥ１が信号ａｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第２の選択装置１２からデータＤ３（＝Ｒ２−Ｒ３）が信号ｂｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第３の選択装置１３から、カスケード入力データＣＯＥ０＊Ｄ１が信号ｃｓｅｌ ｏｕｔとして第１の選択装置１１、ＡＬＵ１４およびＭＡＣ１５に出力される。
【０３４１】
このとき、乗減算を指定する制御信号ＭＡＣＭＤが、ＭＡＣ１５に供給される。これにより、ＭＡＣ１５において、係数ＣＯＥ１とデータＤ３との乗算が行われ、さらに、その結果ＣＯＥ０＊Ｄ１とＣＯＥ１＊Ｄ３との減算が行われる。これにより、ＭＡＣ１５から乗加算結果（ＣＯＥ０＊Ｄ１−ＣＯＥ１＊Ｄ３）が信号ｍａｃ ｏｕｔとして第４の選択装置１６に出力される。
そして、制御信号ＥＳＥＬがＭＡＣ１５の出力を選択するように、第４の選択装置１６に供給されている。その結果、第４の選択装置１６においてＭＡＣ１５の出力信号ｍａｃ ｏｕｔ（ＣＯＥ０＊Ｄ１−ＣＯＥ１＊Ｄ３）が選択され、信号ｅｓｅｌ ｏｕｔとしてレジスタ１７に出力される。
レジスタ１７では、ＭＡＣ１５の演算結果（ＣＯＥ０＊Ｄ１−ＣＯＥ１＊Ｄ３）が格納され、この格納データが演算出力端子ＰＥ Ｃから演算結果信号ＯＴ１として、演算装置１０Ａ−０のカスケード入力ＰＥ Ｐ２、演算装置１０Ａ−２のカスケード入力ＰＥ Ｐ０、および演算装置１０Ａ−２のカスケード入力ＰＥ Ｐ１に出力される。
また、演算装置１０Ａ−１の（ＣＯＥ０＊Ｄ１−ＣＯＥ１＊Ｄ３）を示す演算結果信号ＯＴ１は、図１０の第２の演算装置３２のデータ入力Ｉ１に供給される。
【０３４２】
また、演算装置１０Ａ−１においては、Ｃ０ＦＩＦＯ１８−０〜Ｃ３ＦＩＦＯ１８−３で所望の遅延量だけ遅延された係数ＣＯＥ０〜ＣＯＥ３が係数出力端子ＰＥ Ｃ０Ｏ〜ＰＥ Ｃ３Ｏから係数出力ｃ０１〜ｃ３１として次段の演算装置１０Ａ−２の係数入力端子ＰＥ Ｃ０Ｉ〜ＰＥ Ｃ３Ｉに出力され、Ｄ０ＦＩＦＯ１９−１，Ｄ３ＦＩＦＯ１９−３で所望の遅延量だけ遅延されたデータＤ１，Ｄ３がデータ出力端子ＰＥ Ｄ１Ｏ，ＰＥ Ｄ３Ｏからデータ出力ｄ１１，ｄ３１として次段の演算装置１０Ａ−３のデータ入力端子ＰＥ Ｄ１Ｉ，ＰＥ Ｄ３Ｉに出力される。
【０３４３】
次に、演算装置１０Ａ−２においては、制御信号ＣＴＬ２により、演算結果信号ＯＴ２＝ＣＯＥ２＊Ｄ１となる演算が行われるように制御が行われる。
【０３４４】
この場合、制御信号ＡＳＥＬが係数入力端子ＰＥ Ｃ２Ｉに供給される演算装置１０Ａ−１の係数出力ｃ２１（ＣＯＥ２）を選択するように設定されて第１の選択装置１１に供給される。
また、制御信号ＢＳＥＬがデータ入力端子ＰＥ Ｄ１Ｉに供給される演算装置１０Ａ−１のデータ出力ｄ１１（Ｄ１）を選択するように設定されて第２の選択装置１２に供給される。
これにより、第１の選択装置１１から係数ＣＯＥ２が信号ａｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第２の選択装置１２からデータＤ１が信号ｂｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。
【０３４５】
このとき、乗算を指定する制御信号ＭＡＣＭＤが、ＭＡＣ１５に供給される。これにより、ＭＡＣ１５において、係数ＣＯＥ２とデータＤ１との乗算が行われる。これにより、ＭＡＣ１５から乗算結果ＣＯＥ２＊Ｄ１が信号ｍａｃ ｏｕｔとして第４の選択装置１６に出力される。
そして、制御信号ＥＳＥＬがＭＡＣ１５の出力を選択するように、第４の選択装置１６に供給されている。その結果、第４の選択装置１６においてＭＡＣ１５の出力信号ｍａｃ ｏｕｔ（ＣＯＥ２＊Ｄ１）が選択され、信号ｅｓｅｌ ｏｕｔ（ＣＯＥ２＊Ｄ１）としてレジスタ１７に出力される。
レジスタ１７では、ＭＡＣ１５の演算結果ＣＯＥ２＊Ｄ１が格納され、この格納データが演算出力端子ＰＥ Ｃから演算結果信号ＯＴ２として、演算装置１０Ａ−０のカスケード入力ＰＥ Ｐ１、演算装置１０Ａ−１のカスケード入力ＰＥ Ｐ２、および演算装置１０Ａ−３のカスケード入力ＰＥ Ｐ０に出力される。
【０３４６】
演算装置１０Ａ−２においては、Ｃ０ＦＩＦＯ１８−０〜Ｃ３ＦＩＦＯ１８−３で所望の遅延量だけ遅延された係数ＣＯＥ０，ＣＯＥ１，ＣＯＥ２，ＣＯＥ３が係数出力端子ＰＥ Ｃ０Ｏ〜ＰＥ Ｃ３Ｏから係数出力ｃ０２〜ｃ３２として次段の演算装置１０Ａ−３の係数入力端子ＰＥ Ｃ０Ｉ〜ＰＥ Ｃ３Ｉに出力され、Ｄ０ＦＩＦＯ１９−１，Ｄ３ＦＩＦＯ１９−３で所望の遅延量だけ遅延されたデータＤ１，Ｄ３がデータ出力端子ＰＥ Ｄ１Ｏ，ＰＥ Ｄ３Ｏからデータ出力ｄ１２，ｄ３２として次段の演算装置１０Ａ−３のデータ入力端子ＰＥ Ｄ１Ｉ〜ＰＥ Ｄ３Ｉに出力される。
【０３４７】
次に、演算装置１０Ａ−３においては、制御信号ＣＴＬ３により、演算結果信号ＯＴ３＝ＯＴ２＋ＣＯＥ３＊Ｄ３＝ＣＯＥ２＊Ｄ１＋ＣＯＥ３＊Ｄ３となる演算が行われるように制御が行われる。
【０３４８】
この場合、制御信号ＡＳＥＬが係数入力端子ＰＥ Ｃ３Ｉに供給される演算装置１０Ａ−２の係数出力ｃ３２（ＣＯＥ３）を選択するように設定されて第１の選択装置１１に供給される。
また、制御信号ＢＳＥＬがデータ入力端子ＰＥ Ｄ３Ｉに供給される演算装置１０Ａ−２のデータ出力ｄ３２（Ｄ３）を選択するように設定されて第２の選択装置１２に供給される。
また、制御信号ＣＳＥＬがカスケード入力端子ＰＥ Ｐ０に供給される演算装置１０Ａ−２の演算結果信号ＯＴ２（ＣＯＥ２＊Ｄ１）を選択するように設定されて第３の選択装置１３に供給される。
これにより、第１の選択装置１１から係数ＣＯＥ３が信号ａｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第２の選択装置１２からデータＤ３が信号ｂｓｅｌ＿out として、ＡＬＵ１４およびＭＡＣ１５に出力される。また、第３の選択装置１３から、カスケード入力データＣＯＥ２＊Ｄ１が信号ｃｓｅｌ ｏｕｔとして第１の選択装置１１、ＡＬＵ１４およびＭＡＣ１５に出力される。
【０３４９】
このとき、乗加算を指定する制御信号ＭＡＣＭＤが、ＭＡＣ１５に供給される。これにより、ＭＡＣ１５において、係数ＣＯＥ３とデータＤ３との乗算が行われ、さらに、その結果ＣＯＥ３＊Ｄ３と（ＣＯＥ２＊Ｄ１）との加算が行われる。これにより、ＭＡＣ１５から乗加算結果ＣＯＥ３＊Ｄ３＋ＣＯＥ２＊Ｄ１が信号ｍａｃ ｏｕｔとして第４の選択装置１６に出力される。
そして、制御信号ＥＳＥＬがＭＡＣ１５の出力を選択するように、第４の選択装置１６に供給されている。その結果、第４の選択装置１６においてＭＡＣ１５の出力信号ｍａｃ ｏｕｔ（ＣＯＥ２＊Ｄ１＋ＣＯＥ３＊Ｄ３）が選択され、信号ｅｓｅｌ ｏｕｔ（ＣＯＥ２＊Ｄ１＋ＣＯＥ３＊Ｄ３）としてレジスタ１７に出力される。
レジスタ１７では、ＭＡＣ１５の演算結果（ＣＯＥ２＊Ｄ１＋ＣＯＥ３＊Ｄ３）が格納され、この格納データが演算出力端子ＰＥ Ｃから演算結果信号ＯＴ３として所望の演算結果ｏｕｔとして出力され、演算装置１０Ａ−０のカスケード入力ＰＥ Ｐ０、演算装置１０Ａ−２のカスケード入力ＰＥ Ｐ１、および演算装置１０Ａ−２のカスケード入力ＰＥ Ｐ２に出力される。
また、演算装置１０Ａ−３の（ＣＯＥ２＊Ｄ１＋ＣＯＥ３＊Ｄ３）を示す演算結果信号ＯＴ３は、図１０の第２の演算装置３２のデータ入力Ｉ３に供給される。
【０３５０】
なお、以上において、図２に示す遅延制御信号Ｃ０ＤＬ，Ｃ１ＤＬ，Ｃ２ＤＬ，Ｃ３ＤＬはすべて遅延０となるように、各Ｃ０ＦＩＦＯ〜Ｃ３ＦＩＦＯ１８−０〜１８−３に供給される。
また、遅延制御信号Ｄ０ＤＬは遅延０となるように、Ｄ０ＦＩＦＯ１９−０に供給され、遅延制御信号Ｄ１ＤＬは遅延１となるように、Ｄ１ＦＩＦＯ１９−１に供給され、遅延制御信号Ｄ２ＤＬは遅延２となるように、Ｄ２ＦＩＦＯ１９−２に供給され、遅延制御信号Ｄ３ＤＬは遅延３となるように、Ｄ３ＦＩＦＯ１９−３に供給される。
【０３５１】
第２の演算装置３２のデータ入力Ｉ１に供給された第１の演算装置３１の演算結果（ＣＯＥ０＊Ｄ１−ＣＯＥ１＊Ｄ３）は図６の出力選択装置２５Ａ−１に供給される。
また、第２の演算装置３２のデータ入力Ｉ３に供給された第１の演算装置３１の演算結果（ＣＯＥ２＊Ｄ１＋ＣＯＥ３＊Ｄ３）は図６の出力選択装置２５Ａ−３に供給される。
【０３５２】
そして、第２の演算装置３２において、出力選択装置２５Ａ−０では、データ入力Ｉ０とバタフライ演算器２３Ａ−０の出力信号ｂｔｆ０ａ out （＝Ｒ０＋Ｒ１）のうち、バタフライ演算器２３Ａ−０の出力信号ｂｔｆ０ａ out を選択するように制御信号Ｗ０ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ０＝Ｒ０＋Ｒ１として出力される。
【０３５３】
また、出力選択装置２５Ａ−１では、データ入力Ｉ１とバタフライ演算器２３Ａ−０の出力信号ｂｔｆ０ｂ out （＝Ｒ０−Ｒ１）のうち、データ入力Ｉ１を選択するように制御信号Ｗ１ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ１＝Ｉ１＝（ＣＯＥ０＊Ｄ１−ＣＯＥ１＊Ｄ３）＝（ＣＯＥ０＊（Ｒ０−Ｒ１）−ＣＯＥ１＊（Ｒ２−Ｒ３））として出力される。
【０３５４】
また、出力選択装置２５Ａ−２では、データ入力Ｉ２とバタフライ演算器２３Ａ−１の出力信号ｂｔｆ１ａ out （＝Ｒ２＋Ｒ３）のうち、バタフライ演算器２３Ａ−１の出力信号ｂｔｆ１ａ out を選択するように制御信号Ｗ２ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ２＝Ｒ２＋Ｒ３として出力される。
【０３５５】
また、出力選択装置２５Ａ−３では、データ入力Ｉ３とバタフライ演算器２３Ａ−１の出力信号ｂｔｆ１ｂ out （＝Ｒ２−Ｒ３）のうち、データ入力Ｉ３を選択するように制御信号Ｗ３ＳＥＬが供給され、これにより選択されたデータが信号ＭＥＭＷ３＝Ｉ３＝（ＣＯＥ２＊Ｄ１＋ＣＯＥ３＊Ｄ３）＝（ＣＯＥ２＊（Ｒ０−Ｒ１）＋ＣＯＥ３＊（Ｒ２−Ｒ３））として出力される。
【０３５６】
以上説明したように、本第８の実施形態によれば、第１および第２の実施形態に係るＡＬＵおよびＭＡＣを含む演算装置と、第３〜第７の実施形態に係るバタフライ演算器を含む演算装置とを再構成可能に結合したので、以下の利点がある。
【０３５７】
すなわち、従来のＤＳＰなどのプロセッサでは、
ＭＥＭＷ０＝ｘ[k0]＋ｘ[k1]，
ＭＥＭＷ１＝ｐｘ＊（ｘ[k0]−ｘ[k1]）−ｐｙ＊（ｙ[k0]−ｙ[k1]），
ＭＥＭＷ２＝ｙ[k0]＋ｙ[k1]，
ＭＥＭＷ３＝ｐｘ＊（ｘ[k0]−ｘ[k1]）＋ｐｙ＊（ｙ[k0]−ｙ[k1]）
の演算を実行しようとした場合、たとえばＭＥＭＷ１の計算で
ｒｅｇ１＝ｘ[k0]−ｘ[k1]，
ｒｅｇ２＝ｐｘ＊ｒｅｇ１，
ｒｅｇ３＝ｙ[k0]−ｙ[k1]，
ｒｅｇ４＝ｐｙ＊ｒｅｇ３，
ＭｅＭＷ１＝ｒｅｇ２−ｒｅｇ４，
などのように一時的にレジスタに値を格納する演算が必要となっていた。そのため演算動作に不要なレジスタへの書き込み、レジスタからの読み出しが多くなり、動作サイクル数、消費電力ともに増えていたが、ＭＡＣ，ＡＬＵとバタフライ演算とを組み合わせることで、メモリ読み出しから、演算、メモリ書き込みを行う際に、演算ブロックでの演算自由度が増し、効率よい演算ができるようになる。そのため、実行サイクル数が少なくなり、また一時データの読み、書きが減るため電力が削減される。
【０３５８】
さらに、ＭＥＭＷ０の演算とＭＥＭＷ１の演算のようにｘ[k0]，ｘ[k1]を共通に使用している場合には、従来のプロセッサではｘ[k0]＋ｘ[k1]，ｘ[k0]−ｘ[k1]の演算を同時に行うことができずに演算に必要なサイクル数が増えていたが、本第８の実施形態では、この演算を同時に行うため必要サイクル数が少なくて済む。
【０３５９】
また、本第８の実施形態によれば、上述した第１の実施形態と同様に、論理レベルの最適化ができることはもとより、構成情報の増大を防止でき、集積回路としての面積効率の低下を防止できる演算装置を実現できる利点がある。
また、演算装置を再構成可能であることから、カスケード演算だけでなく並列演算も同一のハードウェアで実現することが可能になっている。そのため、演算装置の数を増やして多くの並列化可能な処理を効率良く実行することもできる。
【０３６０】
第９実施形態
図１１は、本発明に係る演算装置の第９の実施形態を示す構成図である。
本第９の実施形態に係る演算装置３０Ａは、第８の実施形態のように、上述した第１および第２の実施形態に係るＡＬＵおよびＭＡＣを含む第１の演算装置と、第３〜第７の実施形態に係るバタフライ演算器を含む第２の演算装置とを再構成可能に結合した演算装置をより一般化した場合の装置例である。
この演算装置３０Ａもデータ読み出し、演算、データ書き込みの１サイクルで信号処理演算を効率良く実行可能に構成されている。
【０３６１】
本演算装置３０Ａは、図１１に示すように、ＡＬＵおよびＭＡＣを含む第１の演算装置（ＰＵ）３１Ａ、およびバタフライ演算器を含む第２の演算装置３２Ａ−０（ＢＴＦＬａ０），…，３２Ａ−ｋ（ＢＴＦＬａｋ）、３２Ｂ−０（ＢＴＦＬｂ０），…，３２Ｂ−ｍ（ＢＴＦＬｂｍ）、３２Ｃ−０（ＢＴＦＬｃ０），…，３２Ｃ−ｎ（ＢＴＦＬｃｎ）を主構成要素として有している。
【０３６２】
以下に、第１の演算装置３１Ａ、および第２の演算装置３２Ａ−０（ＢＴＦＬａ０），…，３２Ａ−ｋ（ＢＴＦＬａｋ）、３２Ｂ−０（ＢＴＦＬｂ０），…，３２Ｂ−ｍ（ＢＴＦＬｂｍ）、３２Ｃ−０（ＢＴＦＬｃ０），…，３２Ｃ−ｎ（ＢＴＦＬｃｎ）のデータ入出力および制御信号、並びに接続関係について詳述し、各部の動作は、第８の実施形態の場合と同様に行われることから、その詳細は省略する。
【０３６３】
第１の演算装置３１Ａは、たとえば図１または図２の演算装置を２、４、８等の複数個カスケード接続した演算装置を含んでおり、データ入力ＤＩａ０，ＤＩａ１、ＤＩａ２ｋ，ＤＩａ２ｋ＋１、ＤＩｂ０，ＤＩｂ１，ＤＩｂ２，ＤＩｂ３、ＤＩｂ４ｍ，ＤＩｂ４ｍ＋１，ＤＩｂ４ｍ＋２，ＤＩｂ４ｍ＋３、ＤＩｃ０，ＤＩｃ１，…，ＤＩｃ６，ＤＩｃ７、ＤＩｃ８ｎ，ＤＩｃ８ｎ＋１，…，ＤＩｃ８ｎ＋６，ＤＩｃ８ｎ＋７、係数入力ＣＯＥ０，…，ＣＯＥｐ、データ出力ＯＴａ０，ＯＴａ１、ＯＴａ２ｋ，ＯＴａ２ｋ＋１、ＯＴｂ０，ＯＴｂ１，ＯＴｂ２，ＯＴｂ３、ＯＴｂ４ｍ，ＯＴｂ４ｍ＋１，ＯＴｂ４ｍ＋２，ＯＴｂ４ｍ＋３、ＯＴｃ０，ＯＴｃ１…ＯＴｃ６，ＯＴｃ７、ＯＴｃ８ｎ，ＯＴｃ８ｎ＋１，…，ＯＴｃ８ｎ＋６，ＯＴｃ８ｎ＋７を有し、再構成のための制御信号ＣＴＲＬａ０，…，ＣＴＲＬａ２ｋ＋１、ＣＴＲＬｂ０，…，ＣＴＲＬｂ４ｍ＋３、ＣＴＲＬｃ０，…，ＣＴＲＬｃ８ｎ＋７が供給される。
そして、各制御信号には、演算制御信号ＡＳＥＬ，ＢＳＥＬ，ＥＳＥＬ，ＭＡＣＭＤ，ＡＬＵＭＤ，ＲＮＤＭＤ，ＳＡＴＭＤ，ＯＳＦＭＤ，ＡＣＣＭＤ、および遅延制御信号Ｃ０ＤＬ，Ｃ１ＤＬ，…，ＣｋＤＬ、Ｄ０ＤＬ，Ｄ１ＤＬ，…，ＤｍＤＬが含まれる。
【０３６４】
第２の演算装置３２Ａ−０は、たとえば図５に示すような４入力４出力の演算装置であって、データ入力ＭＥＭＲａ０，ＭＥＭＲａ１、演算結果入力Ｉａ０，Ｉａ１、データ出力（演算結果出力）Ｄａ０，Ｄａ１、データ出力ＭＥＭＷａ０，ＭＥＭＷａ１を有し、再構成のための制御信号ＣＴＲＬＢａ０が供給される。
たとえば第３の実施形態の場合を例にとると、制御信号ＣＴＲＬＢａ０には、ＳＦＴ０ＭＤ，Ｒ０ＳＥＬ，ＢＴＦＭＤ０，Ｄ０ＳＥＬ，Ｗ０ＳＥＬ、およびＳＦＴ１ＭＤ，Ｒ１ＳＥＬ，ＢＴＦＭＤ１，Ｄ１ＳＥＬ，Ｗ１ＳＥＬが含まれる。
【０３６５】
第２の演算装置３２Ａ−ｋは、たとえば図５に示すような４入力４出力の演算装置であって、データ入力ＭＥＭＲａ２ｋ，ＭＥＭＲａ２ｋ＋１、演算結果入力Ｉａ２ｋ，Ｉａ２ｋ＋１、データ出力（演算結果出力）Ｄａ２ｋ，Ｄａ２ｋ＋１、データ出力ＭＥＭＷａ２ｋ，ＭＥＭＷａ２ｋ＋１を有し、再構成のための制御信号ＣＴＲＬＢａ２ｋが供給される。
たとえば第３の実施形態の場合を例にとると、制御信号ＣＴＲＬＢａ２ｋには、ＳＦＴ０ＭＤ，Ｒ０ＳＥＬ，ＢＴＦＭＤ０，Ｄ０ＳＥＬ，Ｗ０ＳＥＬ、およびＳＦＴ１ＭＤ，Ｒ１ＳＥＬ，ＢＴＦＭＤ１，Ｄ１ＳＥＬ，Ｗ１ＳＥＬが含まれる。
【０３６６】
第２の演算装置３２Ｂ−０は、たとえば図６または図７に示すような８入力８出力の演算装置であって、データ入力ＭＥＭＲｂ０，ＭＥＭＲｂ１，ＭＥＭＲｂ２，ＭＥＭＲｂ３、演算結果入力Ｉｂ０，Ｉｂ１，Ｉｂ２，Ｉｂ３、データ出力（演算結果出力）Ｄｂ０，Ｄｂ１，Ｄｂ２，Ｄｂ３、データ出力ＭＥＭＷｂ０，ＭＥＭＷｂ１，ＭＥＭＷｂ２，ＭＥＭＷｂ３を有し、再構成のための制御信号ＣＴＲＬＢｂ０が供給される。
たとえば第４または第５の実施形態の場合を例にとると、制御信号ＣＴＲＬＢｂ０には、ＳＦＴ０ＭＤ，Ｒ０ＳＥＬ，ＢＴＦＭＤ０，Ｄ０ＳＥＬ，Ｗ０ＳＥＬ、ＳＦＴ１ＭＤ，Ｒ１ＳＥＬ，ＢＴＦＭＤ１，Ｄ１ＳＥＬ，Ｗ１ＳＥＬ、ＳＦＴ２ＭＤ，Ｒ２ＳＥＬ，ＢＴＦＭＤ２，Ｄ２ＳＥＬ，Ｗ２ＳＥＬ、およびＳＦＴ３ＭＤ，Ｒ３ＳＥＬ，ＢＴＦＭＤ３，Ｄ３ＳＥＬ，Ｗ３ＳＥＬが含まれる。
【０３６７】
第２の演算装置３２Ｂ−ｍは、たとえば図６または図７に示すような８入力８出力の演算装置であって、データ入力ＭＥＭＲｂ４ｍ，ＭＥＭＲｂ４ｍ＋１，ＭＥＭＲｂ４ｍ＋２，ＭＥＭＲｂ４ｍ＋３、演算結果入力Ｉｂ４ｍ，Ｉｂ４ｍ＋１，Ｉｂ４ｍ＋２，Ｉｂ４ｍ＋３、データ出力（演算結果出力）Ｄｂ４ｍ，Ｄｂ４ｍ＋１，Ｄｂ４ｍ＋２，Ｄｂ４ｍ＋３、データ出力ＭＥＭＷｂ４ｍ，ＭＥＭＷｂ４ｍ＋１，ＭＥＭＷｂ４ｍ＋２，ＭＥＭＷｂ４ｍ＋３を有し、再構成のための制御信号ＣＴＲＬＢｂ４ｍが供給される。
たとえば第４または第５の実施形態の場合を例にとると、制御信号ＣＴＲＬＢｂ４ｍには、ＳＦＴ０ＭＤ，Ｒ０ＳＥＬ，ＢＴＦＭＤ０，Ｄ０ＳＥＬ，Ｗ０ＳＥＬ、ＳＦＴ１ＭＤ，Ｒ１ＳＥＬ，ＢＴＦＭＤ１，Ｄ１ＳＥＬ，Ｗ１ＳＥＬ、ＳＦＴ２ＭＤ，Ｒ２ＳＥＬ，ＢＴＦＭＤ２，Ｄ２ＳＥＬ，Ｗ２ＳＥＬ、およびＳＦＴ３ＭＤ，Ｒ３ＳＥＬ，ＢＴＦＭＤ３，Ｄ３ＳＥＬ，Ｗ３ＳＥＬが含まれる。
【０３６８】
第２の演算装置３２Ｃ−０は、たとえば図８または図９に示すような１６入力１６出力の演算装置であって、データ入力ＭＥＭＲｃ０，ＭＥＭＲｃ１，…，ＭＥＭＲｃ６，ＭＥＭＲｃ７、演算結果入力Ｉｃ０，Ｉｃ１，…，Ｉｃ６，Ｉｃ７、データ出力（演算結果出力）Ｄｃ０，Ｄｃ１，…，Ｄｃ６，Ｄｃ７、データ出力ＭＥＭＷｃ０，ＭＥＭＷｃ１，…，ＭＥＭＷｃ６，ＭＥＭＷｃ７を有し、再構成のための制御信号ＣＴＲＬＢｃ０が供給される。
たとえば第６または第７の実施形態の場合を例にとると、制御信号ＣＴＲＬＢｂ４ｍには、ＳＦＴ０ＭＤ，Ｒ０ＳＥＬ，ＭＴＦＭＤ０，Ｄ０ＳＥＬ，Ｗ０ＳＥＬ、ＳＦＴ１ＭＤ，Ｒ１ＳＥＬ，ＭＴＦＭＤ１，Ｄ１ＳＥＬ，Ｗ１ＳＥＬ、ＳＦＴ２ＭＤ，Ｒ２ＳＥＬ，ＭＴＦＭＤ２，Ｄ２ＳＥＬ，Ｗ２ＳＥＬ、ＳＦＴ３ＭＤ，Ｒ３ＳＥＬ，ＭＴＦＭＤ３，Ｄ３ＳＥＬ，Ｗ３ＳＥＬ、ＳＦＴ４ＭＤ，Ｒ４ＳＥＬ，ＭＴＦＭＤ４，Ｄ４ＳＥＬ，Ｗ４ＳＥＬ、ＳＦＴ５ＭＤ，Ｒ５ＳＥＬ，ＭＴＦＭＤ５，Ｄ５ＳＥＬ，Ｗ５ＳＥＬ、ＳＦＴ６ＭＤ，Ｒ６ＳＥＬ，ＭＴＦＭＤ６，Ｄ６ＳＥＬ，Ｗ６ＳＥＬ、ＳＦＴ７ＭＤ，Ｒ７ＳＥＬ，ＭＴＦＭＤ７，Ｄ７ＳＥＬ，Ｗ７ＳＥＬが含まれる。
【０３６９】
第２の演算装置３２Ｃ−ｎは、たとえば図８または図９に示すような１６入力１６出力の演算装置であって、データ入力ＭＥＭＲｃ８ｎ，ＭＥＭＲｃ８ｎ＋１，…，ＭＥＭＲｃ８ｎ＋６，ＭＥＭＲｃ８ｎ＋７、演算結果入力Ｉｌｃ８ｎ，Ｉｌｃ８ｎ＋１，…，Ｉｃ８ｎ＋６，Ｉｃ８ｎ＋７、データ出力（演算結果出力）Ｄｃ８ｎ，Ｄｃ８ｎ＋１，…，Ｄｃ８ｎ＋６，Ｄｃ８ｎ＋７、データ出力ＭＥＭＷｃ８ｎ，ＭＥＭＷｃ８ｎ＋１…ＭＥＭＷｃ８ｎ＋６，ＭＥＭＷｃ８ｎ＋７を有し、再構成のための制御信号ＣＴＲＬＢｃ８ｎが供給される。
たとえば第６または第７の実施形態の場合を例にとると、制御信号ＣＴＲＬＢｂ４ｍには、ＳＦＴ０ＭＤ，Ｒ０ＳＥＬ，ＭＴＦＭＤ０，Ｄ０ＳＥＬ，Ｗ０ＳＥＬ、ＳＦＴ１ＭＤ，Ｒ１ＳＥＬ，ＭＴＦＭＤ１，Ｄ１ＳＥＬ，Ｗ１ＳＥＬ、ＳＦＴ２ＭＤ，Ｒ２ＳＥＬ，ＭＴＦＭＤ２，Ｄ２ＳＥＬ，Ｗ２ＳＥＬ、ＳＦＴ３ＭＤ，Ｒ３ＳＥＬ，ＭＴＦＭＤ３，Ｄ３ＳＥＬ，Ｗ３ＳＥＬ、ＳＦＴ４ＭＤ，Ｒ４ＳＥＬ，ＭＴＦＭＤ４，Ｄ４ＳＥＬ，Ｗ４ＳＥＬ、ＳＦＴ５ＭＤ，Ｒ５ＳＥＬ，ＭＴＦＭＤ５，Ｄ５ＳＥＬ，Ｗ５ＳＥＬ、ＳＦＴ６ＭＤ，Ｒ６ＳＥＬ，ＭＴＦＭＤ６，Ｄ６ＳＥＬ，Ｗ６ＳＥＬ、ＳＦＴ７ＭＤ，Ｒ７ＳＥＬ，ＭＴＦＭＤ７，Ｄ７ＳＥＬ，Ｗ７ＳＥＬが含まれる。
【０３７０】
そして、第２の演算装置３２Ａ−０のデータ入力ＭＥＭＲａ０にデータＲａ０が供給され、データ入力ＭＥＭＲａ１にデータＲａ１が供給される。
第２の演算装置３２Ａ−０のデータ出力Ｄａ０が第１の演算装置３１Ａのデータ入力ＤＩａ０に供給され、第２の演算装置３２Ａ−０のデータ出力Ｄａ１が第１の演算装置３１Ａのデータ入力ＤＩａ１に供給される。
また、第１の演算装置３１Ａのデータ出力ＯＴａ０が第２の演算装置３２Ａ−０のデータ入力Ｉａ０に供給され、第１の演算装置３１Ａのデータ出力ＯＴａ１が第２の演算装置３２Ａ−０のデータ入力Ｉａ１に供給される。
また、第２の演算装置３２Ａ−０のデータ出力ＭＥＭＷａ０からデータＷａ０が出力され、データ出力ＭＥＭＷａ１からデータＷａ１が出力される。
【０３７１】
第２の演算装置３２Ａ−ｋのデータ入力ＭＥＭＲａ２ｋにデータＲａ２ｋが供給され、データ入力ＭＥＭＲａ２ｋ＋１にデータＲａ２ｋ＋１が供給される。
第２の演算装置３２Ａ−ｋのデータ出力Ｄａ２ｋが第１の演算装置３１Ａのデータ入力ＤＩａ２ｋに供給され、第２の演算装置３２Ａ−ｋのデータ出力Ｄａ２ｋ＋１が第１の演算装置３１Ａのデータ入力ＤＩａ２ｋ＋１に供給される。
また、第１の演算装置３１Ａのデータ出力ＯＴａ２ｋが第２の演算装置３２Ａ−ｋのデータ入力Ｉａ２ｋに供給され、第１の演算装置３１Ａのデータ出力ＯＴａ２ｋ＋１が第２の演算装置３２Ａ−ｋのデータ入力Ｉａ２ｋ＋１に供給される。
また、第２の演算装置３２Ａ−ｋのデータ出力ＭＥＭＷａ２ｋからデータＷａ２ｋが出力され、データ出力ＭＥＭＷａ２ｋ＋１からデータＷａ２ｋ＋１が出力される。
【０３７２】
第２の演算装置３２Ｂ−０のデータ入力ＭＥＭＲｂ０にデータＲｂ０が供給され、データ入力ＭＥＭＲｂ１にデータＲｂ１が供給され、データ入力ＭＥＭＲｂ２にデータＲｂ２が供給され、データ入力ＭＥＭＲｂ３にデータＲｂ３が供給される。
第２の演算装置３２Ｂ−０のデータ出力Ｄｂ０が第１の演算装置３１Ａのデータ入力ＤＩｂ０に供給され、第２の演算装置３２Ｂ−０のデータ出力Ｄｂ１が第１の演算装置３１Ａのデータ入力ＤＩｂ１に供給され、第２の演算装置３２Ｂ−０のデータ出力Ｄｂ２が第１の演算装置３１Ａのデータ入力ＤＩｂ２に供給され、第２の演算装置３２Ｂ−０のデータ出力Ｄｂ３が第１の演算装置３１Ａのデータ入力ＤＩｂ３に供給される。
また、第１の演算装置３１Ａのデータ出力ＯＴｂ０が第２の演算装置３２Ｂ−０のデータ入力Ｉｂ０に供給され、第１の演算装置３１Ａのデータ出力ＯＴｂ１が第２の演算装置３２Ｂ−０のデータ入力Ｉｂ１に供給され、第１の演算装置３１Ａのデータ出力ＯＴｂ２が第２の演算装置３２Ｂ−０のデータ入力Ｉｂ２に供給され、第１の演算装置３１Ａのデータ出力ＯＴｂ３が第２の演算装置３２Ｂ−０のデータ入力Ｉｂ３に供給される。
また、第２の演算装置３２Ｂ−０のデータ出力ＭＥＭＷｂ０からデータＷｂ０が出力され、データ出力ＭＥＭＷｂ１からデータＷｂ１が出力され、データ出力ＭＥＭＷｂ２からデータＷｂ２が出力され、データ出力ＭＥＭＷｂ３からデータＷｂ３が出力される。
【０３７３】
第２の演算装置３２Ｂ−ｍのデータ入力ＭＥＭＲｂ４ｍにデータＲｂ４ｍが供給され、データ入力ＭＥＭＲｂ４ｍ＋１にデータＲｂ４ｍ＋１が供給され、データ入力ＭＥＭＲｂ４ｍ＋２にデータＲｂ４ｍ＋２が供給され、データ入力ＭＥＭＲｂ４ｍ＋３にデータＲｂ４ｍ＋３が供給される。
第２の演算装置３２Ｂ−ｍのデータ出力Ｄｂ４ｍが第１の演算装置３１Ａのデータ入力ＤＩｂ４ｍに供給され、第２の演算装置３２Ｂ−ｍのデータ出力Ｄｂ４ｍ＋１が第１の演算装置３１Ａのデータ入力ＤＩｂ４ｍ＋１に供給され、第２の演算装置３２Ｂ−ｍのデータ出力Ｄｂ４ｍ＋２が第１の演算装置３１Ａのデータ入力ＤＩｂ４ｍ＋２に供給され、第２の演算装置３２Ｂ−ｍのデータ出力Ｄｂ４ｍ＋３が第１の演算装置３１Ａのデータ入力ＤＩｂ４ｍ＋３に供給される。
また、第１の演算装置３１Ａのデータ出力ＯＴｂ４ｍが第２の演算装置３２Ｂ−ｍのデータ入力Ｉｂ４ｍに供給され、第１の演算装置３１Ａのデータ出力ＯＴｂ４ｍ＋１が第２の演算装置３２Ｂ−ｍのデータ入力Ｉｂ４ｍ＋１に供給され、第１の演算装置３１Ａのデータ出力ＯＴｂ４ｍ＋２が第２の演算装置３２Ｂ−ｍのデータ入力Ｉｂ４ｍ＋２に供給され、第１の演算装置３１Ａのデータ出力ＯＴｂ４ｍ＋３が第２の演算装置３２Ｂ−ｍのデータ入力Ｉｂ４ｍ＋３に供給される。
また、第２の演算装置３２Ｂ−ｍのデータ出力ＭＥＭＷｂ４ｍからデータＷｂ４ｍが出力され、データ出力ＭＥＭＷｂ４ｍ＋１からデータＷｂ４ｍ＋１が出力され、データ出力ＭＥＭＷｂ４ｍ＋２からデータＷｂ４ｍ＋２が出力され、データ出力ＭＥＭＷｂ４ｍ＋３からデータＷｂ４ｍ＋３が出力される。
【０３７４】
第２の演算装置３２Ｃ−０のデータ入力ＭＥＭＲｃ０にデータＲｃ０が供給され、データ入力ＭＥＭＲｃ１にデータＲｃ１が供給され、同様にしてデータ入力ＭＥＭＲｃ６にデータＲｃ６が供給され、データ入力ＭＥＭＲｃ７にデータＲｃ７が供給される。
第２の演算装置３２Ｃ−０のデータ出力Ｄｃ０が第１の演算装置３１Ａのデータ入力ＤＩｃ０に供給され、第２の演算装置３２Ｃ−０のデータ出力Ｄｃ１が第１の演算装置３１Ａのデータ入力ＤＩｃ１に供給され、同様にして第２の演算装置３２Ｃ−０のデータ出力Ｄｃ６が第１の演算装置３１Ａのデータ入力ＤＩｃ６に供給され、第２の演算装置３２Ｃ−０のデータ出力ＤＣ７が第１の演算装置３１Ａのデータ入力ＤＩＣ７に供給される。
また、第１の演算装置３１Ａのデータ出力ＯＴｃ０が第２の演算装置３２Ｃ−０のデータ入力Ｉｃ０に供給され、第１の演算装置３１Ａのデータ出力ＯＴｃ１が第２の演算装置３２Ｃ−０のデータ入力Ｉｃ１に供給され、同様にして第１の演算装置３１Ａのデータ出力ＯＴｃ６が第２の演算装置３２Ｃ−０のデータ入力Ｉｃ６に供給され、第１の演算装置３１Ａのデータ出力ＯＴｃ７が第２の演算装置３２Ｃ−０のデータ入力Ｉｃ７に供給される。
また、第２の演算装置３２Ｃ−０のデータ出力ＭＥＭＷｃ０からデータＷｃ０が出力され、データ出力ＭＥＭＷｃ１からデータＷｃ１が出力され、同様にしてデータ出力ＭＥＭＷｃ６からデータＷｃ６が出力され、データ出力ＭＥＭＷｃ７からデータＷｃ７が出力される。
【０３７５】
第２の演算装置３２Ｃ−ｎのデータ入力ＭＥＭＲｃ８ｎにデータＲｃ８ｎが供給され、データ入力ＭＥＭＲｃ８ｎ＋１にデータＲｃ８ｎ＋１が供給され、同様にしてデータ入力ＭＥＭＲｃ８ｎ＋６にデータＲｃ８ｎ＋６が供給され、データ入力ＭＥＭＲｃ８ｎ＋７にデータＲｃ８ｎ＋７が供給される。
第２の演算装置３２Ｃ−ｎのデータ出力ＤＣ８ｎが第１の演算装置３１Ａのデータ入力ＤＩｃ８ｎに供給され、第２の演算装置３２Ｃ−ｎのデータ出力Ｄｃ８ｎ＋１が第１の演算装置３１Ａのデータ入力ＤＩｃ８ｎ＋１に供給され、同様にして第２の演算装置３２Ｃ−ｎのデータ出力Ｄｃ８ｎ＋６が第１の演算装置３１Ａのデータ入力ＤＩｃ８ｎ＋６に供給され、第２の演算装置３２Ｃ−ｎのデータ出力Ｄｃ８ｎ＋７が第１の演算装置３１Ａのデータ入力ＤＩｃ８ｎ＋７に供給される。
また、第１の演算装置３１Ａのデータ出力ＯＴｃ８ｎが第２の演算装置３２Ｃ−ｎのデータ入力Ｉｃ８ｎに供給され、第１の演算装置３１Ａのデータ出力ＯＴｃ８ｎ＋１が第２の演算装置３２Ｃ−ｎのデータ入力Ｉｃ８ｎ＋１に供給され、同様にして第１の演算装置３１Ａのデータ出力ＯＴｃ８ｎ＋６が第２の演算装置３２Ｃ−ｎのデータ入力Ｉｃ８ｎ＋６に供給され、第１の演算装置３１Ａのデータ出力ＯＴｃ８ｎ＋７が第２の演算装置３２Ｃ−ｎのデータ入力Ｉｃ８ｎ＋７に供給される。
また、第２の演算装置３２Ｃ−ｎのデータ出力ＭＥＭＷｃ８ｎからデータＷｃ８ｎが出力され、データ出力ＭＥＭＷｃ８ｎ＋１からデータＷｃ８ｎ＋１が出力され、同様にしてデータ出力ＭＥＭＷｃ８ｎ＋６からデータＷｃ８ｎ＋６が出力され、データ出力ＭＥＭＷｃ８ｎ＋７からデータＷｃ８ｎ＋７が出力される。
【０３７６】
このような構成を有する演算装置３０Ａにおいて、たとえば第１の演算装置３１Ａと８入力８出力の第２の演算装置３２Ｂ−０〜３２Ｂ−ｍとの間でデータの授受を行って演算を行う場合には、上述した第８の実施形態においては説明した動作と同様の動作が行われる。
その他の第２の演算装置３２Ａ−０〜３２Ａ−ｋ、３２Ｃ−０〜３２Ｃ−ｎと第１の演算装置３１Ａとの間でデータの授受を行って演算を行う場合であっても、データ入出力数が異なるだけで、略同様の動作が行われる。
したがって、上述したように、ここでは各部の動作は、その詳細は省略する。
【０３７７】
本第９の実施形態によれば、３項演算装置かつ／または２項演算装置を含む演算装置を複数有する第１の演算装置３１Ａと、２入力２出力演算装置を含む第２の演算装置３２Ａ−０（ＢＴＦＬａ０），…，３２Ａ−ｋ（ＢＴＦＬａｋ）、３２Ｂ−０（ＢＴＦＬｂ０），…，３２Ｂ−ｍ（ＢＴＦＬｂｍ）、３２Ｃ−０（ＢＴＦＬｃ０），…，３２Ｃ−ｎ（ＢＴＦＬｃｎ）とを備え、外部から再構成可能な演算装置３０Ａにおいて、第２の演算装置３２Ａ−０（ＢＴＦＬａ０），…，３２Ａ−ｋ（ＢＴＦＬａｋ）、３２Ｂ−０（ＢＴＦＬｂ０），…，３２Ｂ−ｍ（ＢＴＦＬｂｍ）、３２Ｃ−０（ＢＴＦＬｃ０），…，３２Ｃ−ｎ（ＢＴＦＬｃｎ）の演算結果を第１の演算装置３１Ａの入力とし、また、第１の演算装置３１Ａの演算結果を第２の演算装置の入力として、最終的な演算結果を得るようにしたので、上述した第８の実施形態の効果と同様の効果を得ることができる。
【０３７８】
すなわち、従来のＤＳＰなどのプロセッサでは、
ＭＥＭＷ０＝ｘ[k0]＋ｘ[k1]，
ＭＥＭＷ１＝ｐｘ＊（ｘ[k0]−ｘ[k1]）−ｐｙ＊（ｙ[k0]−ｙ[k1]），
ＭＥＭＷ２＝ｙ[k0]＋ｙ[k1]，
ＭＥＭＷ３＝ｐｘ＊（ｘ[k0]−ｘ[k1]）＋ｐｙ＊（ｙ[k0]−ｙ[k1]）
の演算を実行しようとした場合、たとえばＭＥＭＷ１の計算で
ｒｅｇ１＝ｘ[k0]−ｘ[k1]，
ｒｅｇ２＝ｐｘ＊ｒｅｇ１，
ｒｅｇ３＝ｙ[k0]−ｙ[k1]，
ｒｅｇ４＝ｐｙ＊ｒｅｇ３，
ＭｅＭＷ１＝ｒｅｇ２−ｒｅｇ４，
などのように一時的にレジスタに値を格納する演算が必要となっていた。そのため演算動作に不要なレジスタへの書き込み、レジスタからの読み出しが多くなり、動作サイクル数、消費電力ともに増えていたが、ＭＡＣ，ＡＬＵとバタフライ演算とを組み合わせることで、メモリ読み出しから、演算、メモリ書き込みを行う際に、演算ブロックでの演算自由度が増し、効率よい演算ができるようになる。そのため、実行サイクル数が少なくなり、また一時データの読み、書きが減るため電力が削減される。
【０３７９】
さらに、ＭＥＭＷ０の演算とＭＥＭＷ１の演算のようにｘ[k0]，ｘ[k1]を共通に使用している場合には、従来のプロセッサではｘ[k0]＋ｘ[k1]，ｘ[k0]−ｘ[k1]の演算を同時に行うことができずに演算に必要なサイクル数が増えていたが、本第９の実施形態では、この演算を同時に行うため必要サイクル数が少なくて済む。
【０３８０】
また、本第９の実施形態によれば、上述した第１の実施形態と同様に、論理レベルの最適化ができることはもとより、構成情報の増大を防止でき、集積回路としての面積効率の低下を防止できる演算装置を実現できる利点がある。
また、演算装置を再構成可能であることから、カスケード演算だけでなく並列演算も同一のハードウェアで実現することが可能になっている。そのため、演算装置の数を増やして多くの並列化可能な処理を効率良く実行することもできる。
【０３８１】
第１０実施形態
図１２は、本発明の第１０の実施形態に係る演算システムを示す構成図である。
【０３８２】
本演算システム４０では、たとえば上述した第１の実施形態〜第９の実施形態に係る演算器の配列や、演算実行時の係数パラメータ等を、構成情報に基づいて再構成可能な演算装置が用いられる。
そして、本演算システム４０は、演算装置、メモリ、アドレス生成装置と、経路情報を格納するメモリを含み、ＣＰＵを用いた経路情報選択の他に、アドレス生成装置が発生する制御信号に基づいて、演算途中であっても特定条件で経路情報を切り替えすることができる再構成可能なシステムとして構成される。
【０３８３】
具体的には、本演算システム４０は、図１２に示すように、制御回路としてのＣＰＵ４１、複数、たとえば２つの第１の経路選択情報メモリ４２、第２の経路選択情報メモリ４３、選択装置４４、アドレス生成装置４５、データメモリ４６、および再構成可能な演算装置４７を有している。
【０３８４】
ＣＰＵ４１は、バスＢＵＳを介して、第１の経路選択情報メモリ４２、第２の経路選択情報メモリ４３、データメモリ４６にアクセスすることが可能になっている。
ＣＰＵ４１は、ｒｅｑ＿ａｃｋ信号を用いてアドレス生成装置４５の起動を行い、アドレス生成装置４５からのｒｅｑ＿ａｃｋ信号によりアドレス生成装置４５の動作の終了を認識する。
また、ＣＰＵ４１は、第１の経路選択情報メモリ４２に第１の経路選択情報ｃｏｎｆｉｇ１を書き込み、第２の経路選択情報メモリ４３に第２の経路選択情報ｃｏｎｆｉｇ２を書き込む。
また、ＣＰＵ４１は、データメモリ４６に複数のデータを書き込んでおく。さらにＣＰＵ４１は、アドレス生成装置４５に信号ａｇｃｔｒｌでアドレス生成パターンを指定し、アドレス生成装置４５の起動を行う。
さらに、ＣＰＵ４１は、制御信号ｃｔｒｌｂを選択装置４４に出力し、第１の経路選択情報メモリ４２の第１の経路選択情報ｃｏｎｆｉｇ１および第２の経路選択情報メモリ４３の第２の経路選択情報ｃｏｎｆｉｇ２のうちのいずれの経路選択情報を選択するのかを指示する。換言すれば、ＣＰＵ４１は、制御信号ｃｔｒｌｂをアドレス生成装置４５がアドレス生成を行っている途中で、動的に変更し、経路選択情報を複数の経路選択情報メモリ４２，４３から選択するのかを制御する。
【０３８５】
第１の経路選択情報メモリ４２は、ＣＰＵ４１からバスＢＵＳを介して第１の経路選択情報ｃｏｎｆｉｇ１が書き込まれ、書き込まれた第１の経路選択情報ｃｏｎｆｉｇ１を選択装置４４に出力する。
【０３８６】
第２の経路選択情報メモリ４３は、ＣＰＵ４１からバスＢＵＳを介して第２の経路選択情報ｃｏｎｆｉｇ２が書き込まれ、書き込まれた第２の経路選択情報ｃｏｎｆｉｇ２を選択装置４４に出力する。
【０３８７】
選択装置４４は、アドレス生成装置４５による制御信号ｃｔｒｌａおよびＣＰＵ４１による制御信号ｃｔｒｌｂに応じて、第１の経路選択情報メモリ４２による第１の経路選択情報ｃｏｎｆｉｇ１、および第２の経路選択情報メモリ４３による第２の経路選択情報ｃｏｎｆｉｇ２のうちのいずれかを選択して、演算装置４７に供給する。
【０３８８】
アドレス生成装置４５は、ＣＰＵ４１によるｒｅｑ＿ａｃｋ信号を受けて起動し、あらかじめＣＰＵ４１により制御信号ａｇｃｔｒｌで指定されたアドレス生成パターンで、自動的にアドレスａｄｒを生成し、データメモリ４６からの読み出し、データメモリ４６ヘの書き込みを行う。
また、アドレス生成装置４５は、生成したアドレスに応じた選択情報を含む制御信号ｃｔｒｌａを選択装置４４に出力し、第１の経路選択情報メモリ４２による第１の経路選択情報ｃｏｎｆｉｇ１、および第２の経路選択情報メモリ４３による第２の経路選択情報ｃｏｎｆｉｇ２のうちのいずれかを選択させて、演算装置４７に供給させる。
そして、アドレス生成装置４５は、アドレスの生成が終了したときには、ｒｅｑ＿ａｃｋ信号を用いてＣＰＵ４１に動作の完了を伝える。
【０３８９】
データメモリ４６は、アドレス生成装置４５で生成されたアドレスａｄｒによりデータメモリ４６の記憶データを読み出し、この読み出しデータｒｅａｄ ｄａｔを演算装置４７に供給し、演算装置４７の演算結果である書き込みデータｗｒｉｔｅ ｄａｔを書き込み。
また、データメモリ４６は、バスＢＵＳを介してＣＰＵ４１によりアクセスされる。
【０３９０】
演算装置４７は、選択装置４４で選択された第１の経路選択情報メモリ４２による第１の経路選択情報ｃｏｎｆｉｇ１、または第２の経路選択情報メモリ４３による第２の経路選択情報ｃｏｎｆｉｇ２に基づいて、演算器の配列や、演算実行時の係数パラメータ等を再構成して、データメモリ４６の読み出しデータｒｅａｄ ｄａｔに対し指定の演算を行い、この演算結果を書き込みデータｗｒｉｔｅ ｄａｔとしてデータメモリ４６に供給する。
【０３９１】
次に、上記構成による動作を、図１３に関連付けて説明する。
【０３９２】
まず、ＣＰＵ４１により、バスＢＵＳを介して、第１の経路選択情報メモリ４２に第１の経路選択情報ｃｏｎｆｉｇ１が書き込まれ、第２の経路選択情報メモリ４３に第２の経路選択情報ｃｏｎｆｉｇ２が書き込まれる。
【０３９３】
また、ＣＰＵ４１により、バスＢＵＳを介してデータメモリ４６に複数のデータがあらかじめ書き込まれる。
さらに、ＣＰＵ４１によりアドレス生成装置４５に対して制御信号ａｇｃｔｒが出力されて、アドレス生成パターンが指定されて、アドレス生成装置４５の起動が行われる。
【０３９４】
これにより、ＣＰＵ４１から制御がアドレス生成装置４５に移行され、アドレス生成装置４５において、アドレスの自動生成が開始され、データメモリ４６に供給される。
なお、ここでは簡単のため、アドレス生成装置４５において発生する読み出しアドレスパターンが０，１，２，３，４，５であるものとする。
そして、生成アドレスａｄｒに基づいてデータメモリ４６から読み出され、演算装置４７に供給されるデータは、ｒｅａｄ＿ｄａｔ [０] 、ｒｅａｄ＿ｄａｔ [１] 、ｒｅａｄ＿ｄａｔ [２] 、ｒｅａｄ＿ｄａｔ [３] 、ｒｅａｄ＿ｄａｔ [４] 、およびｒｅａｄ＿ｄａｔ [５] となる。
【０３９５】
また、アドレス生成装置４５からは、生成アドレスに応じて制御信号ｃｔｒｌａが選択装置４４に出力される。
選択装置４４では、アドレス生成装置４５による制御信号ｃｔｒｌａおよびＣＰＵ４１による制御信号ｃｔｒｌｂに応じて、第１の経路選択情報メモリ４２による第１の経路選択情報ｃｏｎｆｉｇ１、および第２の経路選択情報メモリ４３による第２の経路選択情報ｃｏｎｆｉｇ２のうちのいずれかが選択されて、演算装置４７に供給される。
【０３９６】
演算装置４７においては、選択装置４４により供給される第１の経路選択情報メモリ４２による第１の経路選択情報ｃｏｎｆｉｇ１、または第２の経路選択情報メモリ４３による第２の経路選択情報ｃｏｎｆｉｇ２に基づいて、演算器の配列や、演算実行時の係数パラメータ等が再構成される。
そして、再構成された演算装置４７において、データメモリ４６の読み出しデータｒｅａｄ＿ｄａｔ [０] 、ｒｅａｄ＿ｄａｔ [１] 、ｒｅａｄ＿ｄａｔ [２] 、ｒｅａｄ＿ｄａｔ [３] 、ｒｅａｄ＿ｄａｔ [４] 、およびｒｅａｄ＿ｄａｔ [５] に対し指定の演算が行われる。
【０３９７】
演算装置４７における演算結果は、ｗｒｉｔｅ−ｄａｔ [０] 、ｗｒｉｔｅ−ｄａｔ [１] 、ｗｒｉｔｅ−ｄａｔ [２] 、ｗｒｉｔｅ−ｄａｔ [３] 、ｗｒｉｔｅ−ｄａｔ [４] 、およびｗｒｉｔｅ−ｄａｔ [５] となる。
【０３９８】
ここで、第１の経路選択情報ｃｏｎｆｉｇ１で実行される演算をｆｕｎｃ１（）、第２の経路選択情報ｃｏｎｆｉｇ２で実行される演算をｆｕｎｃ２（）とする。
そして、図１３に示すように、アドレス生成装置４５からの制御情報ｃｔｒｌａでアドレスが、０，１，３，４のときには第１の経路選択情報ｃｏｎｆｉｇ１を、アドレスが２，５のときには第２の経路選択情報ｃｏｎｆｉｇ２を選択することができるものとする。
この場合の演算結果は、次のように表すことができる。
【０３９９】
（数１８）
ｗｒｉｔｅ−ｄａｔ [０] ＝ｆｕｎｃ１（ｒｅａｄ＿ｄａｔ [０] ）
ｗｒｉｔｅ−ｄａｔ [１] ＝ｆｕｎｃ１（ｒｅａｄ＿ｄａｔ [１] ）
ｗｒｉｔｅ−ｄａｔ [２] ＝ｆｕｎｃ２（ｒｅａｄ＿ｄａｔ [２] ）
ｗｒｉｔｅ−ｄａｔ [３] ＝ｆｕｎｃ１（ｒｅａｄ＿ｄａｔ [３] ）
ｗｒｉｔｅ−ｄａｔ [４] ＝ｆｕｎｃ１（ｒｅａｄ＿ｄａｔ [４] ）
ｗｒｉｔｅ−ｄａｔ [５] ＝ｆｕｎｃ２（ｒｅａｄ＿ｄａｔ [５] ）
【０４００】
これらの演算結果がデータメモリ４６に書き込まれ、アドレス生成装置４５によるアドレスａｄｒの自動生成が終了される。
そして、アドレス生成装置４５からａｓｋ＿ｒｅｑ信号がＣＰＵ４１に送られ、演算の終了が伝えられる。
【０４０１】
以上説明したように、本第１０の実施形態によれば、第１の経路選択情報ｃｏｎｆｉｇ１を記憶する第１の経路選択情報メモリ４２と、第２の経路選択情報ｃｏｎｆｉｇ２を記憶する第２の経路選択情報メモリ４３と、制御信号ｃｔｒｌａおよび制御信号ｃｔｒｌｂに応じて、第１の経路選択情報メモリ４２による第１の経路選択情報ｃｏｎｆｉｇ１、および第２の経路選択情報メモリ４３による第２の経路選択情報ｃｏｎｆｉｇ２のうちのいずれかを選択する選択装置４４と、指定されたアドレス生成パターンで、自動的にアドレスａｄｒを生成し、データメモリ４６からの読み出し、データメモリ４６ヘの書き込みを行い、かつ、生成したアドレスに応じて制御信号ｃｔｒｌａを選択装置４４に出力するアドレス生成装置４５と、選択装置４４で選択された第１の経路選択情報ｃｏｎｆｉｇ１、または第２の経路選択情報ｃｏｎｆｉｇ２に基づいて、演算器の配列や、演算実行時の係数パラメータ等を再構成して、データメモリ４６の読み出しデータｒｅａｄ ｄａｔに対し指定の演算を行い、この演算結果を書き込みデータｗｒｉｔｅ ｄａｔとしてデータメモリ４６に書き戻す演算装置４７とを設けたので、以下の利点がある。
【０４０２】
すなわち、従来、ＣＰＵとアドレス生成装置と複数の構成情報メモリと再構成可能な演算装置で構成される演算システムにおいては、ＣＰＵを用いて、複数の構成メモリの選択を制御し、アドレス生成装置がアドレスを生成している期間中にＣＰＵを用いてメモリの選択を行わせるためには、ＣＰＵとアドレス生成装置間に同期機構を設ける必要があり、そのため、制御が複雑になり、余計なハードウェアが必要になる、あるいはハードウェアの構造によっては、同期自体が不可能であるという欠点を持っていた。
これに対して、本第１０の実施形態に係る演算システムによれば、アドレス生成装置自身が出力する制御信号を用いて、複数の構成メモリの選択が可能になるため、同期機構を設ける必要がなくなるという利点がある。
また、ＣＰＵに制御が一度戻ることがないため、処理を行うためのオーバーヘッドが少なくなり、システム全体の処理能力を向上させることも可能になる。
【０４０３】
第１１実施形態
図１４は、本発明の第１１の実施形態を説明するための図であって、本発明に係る演算システムに適用可能なアドレス生成装置の一例を示す構成図である。
【０４０４】
本アドレス生成装置５０は、たとえば上述した第１０の実施形態を示す図１２の演算システムに適用可能で、４個（一般的にはｎ個）のカウンタを用いてアドレスを生成する装置であって、Ｃ言語のｆｏｒループ中での配列のアクセスパターンやそのネスティング、ＦＦＴ、ビットリバース等のアドレスパターンを生成し、このアドレス生成とともに制御信号ＣＴＲＬ（図１２のｃｔｒｌａ）も出力する。
以下、アドレス生成装置５０の具体的な構成および機能について、順を追って説明する。
【０４０５】
本アドレス生成装置５０は、図１４に示すように、演算器（ＩＮＣＤＥＣ０）５１−０，演算器（ＩＮＣＤＥＣ１）５１−１，演算器（ＩＮＣＤＥＣ２）５１−２，演算器（ＩＮＣＤＥＣｘ）５１−Ｘ、セレクタ付き演算器（ＳＵＭ０）５２−０，セレクタ付き演算器（ＳＵＭ１）５２−１，セレクタ付き演算器（ＳＵＭ２）５２−２、セレクタ（ＳＥＬ０）５３−０，セレクタ（ＳＥＬ１）５３−１，セレクタ（ＳＥＬ２）５３−２，セレクタ（ＳＥＬｘ）５３−ｘ、カウンタ（Ｃｏｕｎｔｅｒ０）５４−０，カウンタ（Ｃｏｕｎｔｅｒ１）５４−１，カウンタ（Ｃｏｕｎｔｅｒ２）５４−２，カウンタ（Ｃｏｕｎｔｅｒｘ）５４−ｘ、比較器（ＥＮＤ）５５、比較器（ＥＮＤ０）５６−０，比較器（ＥＮＤ１）５６−１，比較器（ＥＮＤ２）５６−２，比較器（ＥＮＤｘ）５６−ｘ、比較器（ＩＮＣ０）５７−０，比較器（ＩＮＣ１）５７−１，比較器（ＩＮＣ２）５７−２、セレクタ付き演算器（ＡＤＲＳＵＭ）５８、ビット反転器（ＢＲＶ）５９、マスク生成器（ＡＤＲＭＳＫ）６０、および制御信号生成器（ＣＴＲＬＧＥＮ）６１を有している。
【０４０６】
そして、アドレス生成装置５０は、入力信号ＣＯＵＮＴ０ＳＴＰ，ＣＯＵＮＴ１ＳＴＰ，ＣＯＵＮＴ２ＳＴＰ，ＣＯＵＮＴ０ＩＮＩ，ＣＯＵＮＴ１ＩＮＩ，ＣＯＵＮＴ２ＩＮＩ，ＣＯＵＮＴｘＩＮＩ，ＣＯＵＮＴ０ＦＩＮ，ＣＯＵＮＴ１ＦＩＮ，ＣＯＵＮＴ２ＦＩＮ，ＣＯＵＮＴｘＦＩＮ，ＯＦＦＳＥＴ，ＭＡＳＫと、制御信号ＣＮＴ０ＩＮＩＭＤ，ＣＮＴ１ＩＮＩＭＤ，ＣＮＴ２ＩＮＩＭＤ，ＣＮＴ０ＲＥＴＭＤ，ＣＮＴ１ＲＥＴＭＤ，ＣＮＴ２ＲＥＴＭＤ，ＣＮＴ０ＥＮＤＭＤ，ＣＮＴ１ＥＮＤＭＤ，ＣＮＴ２ＥＮＤＭＤ，ＣＮＴ０ＩＮＣＭＤ，ＣＮＴ１ＩＮＣＭＤ，ＣＮＴ２ＩＮＣＭＤ，ＣＴＲＬＭＤ，ＣＯＵＮＴＳＵＭ，ＭＳＫＭＤ，ＣＯＵＮＴＥＮが供給され、制御信号ＣＴＲＬ、および生成アドレスＧＥＮＡＤＲを出力する。
【０４０７】
演算器５１−０は、制御信号ＣＮＴ０ＩＮＩＭＤの値に応じて入力信号ＣＯＵＮＴ０ＳＴＰとカウンタ５４−０のカウントデータｃｏｕｎｔｄａｔ ０を演算した結果を信号ｃｏｕｎｔｃａｌ ０としてセレクタ５３−０、およびセレクタ演算器５２−０〜５２−２に出力する。
具体的には、演算器５１−０は、制御信号ＣＮＴ０ＩＮＩＭＤの値に応じて、以下のいずれかの演算を行う。
【０４０８】
（数１９）
ｃｏｕｎｔｃａｌ ０＝ＣＯＵＮＴ０ＳＴＰ＋ｃｏｕｎｔｄａｔ ０、
ｃｏｕｎｔｃａｌ ０＝ＣＯＵＮＴ０ＳＴＰ−ｃｏｕｎｔｄａｔ ０
【０４０９】
演算器５１−１は、制御信号ＣＮＴ１ＩＮＩＭＤの値に応じて入力信号ＣＯＵＮＴ１ＳＴＰとカウンタ５４−１のカウントデータｃｏｕｎｔｄａｔ １を演算した結果を信号ｃｏｕｎｔｃａｌ １としてセレクタ５３−１、およびセレクタ演算器５２−０〜５２−２に出力する。
具体的には、演算器５１−１は、制御信号ＣＮＴ１ＩＮＩＭＤの値に応じて、以下のいずれかの演算を行う。
【０４１０】
（数２０）
ｃｏｕｎｔｃａｌ １＝ＣＯＵＮＴ１ＳＴＰ＋ｃｏｕｎｔｄａｔ １、
ｃｏｕｎｔｃａｌ １＝ＣＯＵＮＴ１ＳＴＰ−ｃｏｕｎｔｄａｔ １
【０４１１】
演算器５１−２は、制御信号ＣＮＴ２ＩＮＩＭＤの値に応じて入力信号ＣＯＵＮＴ２ＳＴＰとカウンタ５４−２のカウントデータｃｏｕｎｔｄａｔ ２を演算した結果を信号ｃｏｕｎｔｃａｌ ２としてセレクタ５３−２、およびセレクタ演算器５２−０〜５２−２に出力する。
具体的には、演算器５１−２は、制御信号ＣＮＴ２ＩＮＩＭＤの値に応じて、以下のいずれかの演算を行う。
【０４１２】
（数２１）
ｃｏｕｎｔｃａｌ ２＝ＣＯＵＮＴ２ＳＴＰ＋ｃｏｕｎｔｄａｔ ２、
ｃｏｕｎｔｃａｌ ２＝ＣＯＵＮＴ２ＳＴＰ−ｃｏｕｎｔｄａｔ ２
【０４１３】
演算器５１−ｘは、入力信号ＣＯＵＮＴｘＦＩＮとカウンタ５４−ｘのカウントデータｃｏｕｎｔｄａｔ ｘを演算した結果を信号ｃｏｕｎｔｃａｌ ｘとしてセレクタ５３−ｘに出力する。
【０４１４】
セレクタ付き演算器５２−０は、制御信号ＣＮＴ０ＲＥＴＭＤの値に応じて入力信号ＣＯＵＮＴ０ＩＮＩ、演算器５１−０の出力信号ｃｏｕｎｔｃａｌ ０、演算器５１−１の出力信号ｃｏｕｎｔｃａｌ １、および演算器５１−２の出力信号ｃｏｕｎｔｃａｌ ２を演算した結果を信号ｃｏｕｎｔｒｅｔ ０としてセレクタ５３−０に出力する。
具体的には、演算器５２−０は、制御信号ＣＮＴ０ＲＥＴＭＤの値に応じて、以下のいずれかの演算を行う。
【０４１５】
（数２２）
ｃｏｕｎｔｒｅｔ ０＝ＣＯＵＮＴ０ＩＮＩ、
ｃｏｕｎｔｒｅｔ ０＝ｃｏｕｎｔｃａｌ ０、
ｃｏｕｎｔｒｅｔ ０＝ｃｏｕｎｔｃａｌ １、
ｃｏｕｎｔｒｅｔ ０＝ｃｏｕｎｔｃａｌ ２、
ｃｏｕｎｔｒｅｔ ０＝ＣＯＵＮＴ０ＩＮＩ＋ｃｏｕｎｔｃａｌ ０、
ｃｏｕｎｔｒｅｔ ０＝ＣＯＵＮＴ０ＩＮＩ＋ｃｏｕｎｔｃａｌ １、
ｃｏｕｎｔｒｅｔ ０＝ＣＯＵＮＴ０ＩＮＩ＋ｃｏｕｎｔｃａｌ ２
【０４１６】
セレクタ付き演算器５２−１は、制御信号ＣＮＴ１ＲＥＴＭＤの値に応じて入力信号ＣＯＵＮＴ１ＩＮＩ、演算器５１−０の出力信号ｃｏｕｎｔｃａｌ ０、演算器５１−１の出力信号ｃｏｕｎｔｃａｌ １、および演算器５１−２の出力信号ｃｏｕｎｔｃａｌ ２を演算した結果を信号ｃｏｕｎｔｒｅｔ １としてセレクタ５３−１に出力する。
具体的には、演算器５２−１は、制御信号ＣＮＴ１ＲＥＴＭＤの値に応じて、以下のいずれかの演算を行う。
【０４１７】
（数２３）
ｃｏｕｎｔｒｅｔ １＝ＣＯＵＮＴ１ＩＮＩ、
ｃｏｕｎｔｒｅｔ １＝ｃｏｕｎｔｃａｌ ０、
ｃｏｕｎｔｒｅｔ １＝ｃｏｕｎｔｃａｌ １、
ｃｏｕｎｔｒｅｔ １＝ｃｏｕｎｔｃａｌ ２、
ｃｏｕｎｔｒｅｔ １＝ＣＯＵＮＴ１ＩＮＩ＋ｃｏｕｎｔｃａｌ ０、
ｃｏｕｎｔｒｅｔ １＝ＣＯＵＮＴ１ＩＮＩ＋ｃｏｕｎｔｃａｌ １、
ｃｏｕｎｔｒｅｔ １＝ＣＯＵＮＴ１ＩＮＩ＋ｃｏｕｎｔｃａｌ ２
【０４１８】
セレクタ付き演算器５２−２は、制御信号ＣＮＴ２ＲＥＴＭＤの値に応じて入力信号ＣＯＵＮＴ２ＩＮＩ、演算器５１−０の出力信号ｃｏｕｎｔｃａｌ ０、演算器５１−１の出力信号ｃｏｕｎｔｃａｌ １、および演算器５１−２の出力信号ｃｏｕｎｔｃａｌ ２を演算した結果を信号ｃｏｕｎｔｒｅｔ ２としてセレクタ５３−２に出力する。
具体的には、演算器５２−２は、制御信号ＣＮＴ２ＲＥＴＭＤの値に応じて、以下のいずれかの演算を行う。
【０４１９】
（数２４）
ｃｏｕｎｔｒｅｔ ２＝ＣＯＵＮＴ２ＩＮＩ、
ｃｏｕｎｔｒｅｔ ２＝ｃｏｕｎｔｃａｌ ０、
ｃｏｕｎｔｒｅｔ ２＝ｃｏｕｎｔｃａｌ １、
ｃｏｕｎｔｒｅｔ ２＝ｃｏｕｎｔｃａｌ ２、
ｃｏｕｎｔｒｅｔ ２＝ＣＯＵＮＴ２ＩＮＩ＋ｃｏｕｎｔｃａｌ ０、
ｃｏｕｎｔｒｅｔ ２＝ＣＯＵＮＴ２ＩＮＩ＋ｃｏｕｎｔｃａｌ １、
ｃｏｕｎｔｒｅｔ ２＝ＣＯＵＮＴ２ＩＮＩ＋ｃｏｕｎｔｃａｌ ２
【０４２０】
セレクタ５３−０は、比較器５６−０の出力信号ｃｏｕｎｔｅｎｄ ０、および比較器５７−０の出力信号ｃｏｕｎｔｉｎｃ ０の値に応じて、演算器５１−０の出力信号ｃｏｕｎｔｃａｌ ０、入力信号ＣＯＵＮＴ０ＩＮＩ、演算器５２−０の出力信号ｃｏｕｎｔｒｅｔ ０の値を選択して、カウンタ５４−０に出力する。
【０４２１】
セレクタ５３−１は、比較器５６−１の出力信号ｃｏｕｎｔｅｎｄ １、および比較器５７−１の出力信号ｃｏｕｎｔｉｎｃ １の値に応じて、演算器５１−１の出力信号ｃｏｕｎｔｃａｌ １、入力信号ＣＯＵＮＴ１ＩＮＩ、演算器５２−１の出力信号ｃｏｕｎｔｒｅｔ １の値を選択して、カウンタ５４−１に出力する。
【０４２２】
セレクタ５３−２は、比較器５６−２の出力信号ｃｏｕｎｔｅｎｄ ２、および比較器５７−２の出力信号ｃｏｕｎｔｉｎｃ ２の値に応じて、演算器５１−２の出力信号ｃｏｕｎｔｃａｌ ２、入力信号ＣＯＵＮＴ２ＩＮＩ、演算器５２−２の出力信号ｃｏｕｎｔｒｅｔ ２の値を選択して、カウンタ５４−２に出力する。
【０４２３】
セレクタ５３−ｘは、比較器５６−ｘの出力信号ｃｏｕｎｔｅｎｄ ｘの値に応じて、演算器５１−ｘの出力信号ｃｏｕｎｔｃａｌ ｘ、入力信号ＣＯＵＮＴｘＩＮＩの値を選択して、カウンタ５４−ｘに出力する。
【０４２４】
カウンタ５４−０は、セレクタ５３−０の出力信号をカウントデータｃｏｕｎｔｄａｔ ０として格納し、格納データを演算器５１−０、比較器５５、およびセレクタ付き演算器５８に出力する。
【０４２５】
カウンタ５４−１は、セレクタ５３−１の出力信号をカウントデータｃｏｕｎｔｄａｔ １として格納し、格納データを演算器５１−１、比較器５５、およびセレクタ付き演算器５８に出力する。
【０４２６】
カウンタ５４−２は、セレクタ５３−２の出力信号をカウントデータｃｏｕｎｔｄａｔ ２として格納し、格納データを演算器５１−２、比較器５５、およびセレクタ付き演算器５８に出力する。
【０４２７】
カウンタ５４−ｘは、セレクタ５３−ｘの出力信号をカウントデータｃｏｕｎｔｄａｔ ｘとして格納し、格納データを演算器５１−ｘ、比較器５５、およびセレクタ付き演算器５８に出力する。
【０４２８】
比較器５５は、カウンタ５４−０によるカウンタデータｃｏｕｎｔｄａｔ ０、カウンタ５４−１によるカウンタデータｃｏｕｎｔｄａｔ １、カウンタ５４−２によるカウンタデータｃｏｕｎｔｄａｔ ２、カウンタ５４−ｘによるカウンタデータｃｏｕｎｔｄａｔ ｘ、および入力信号ＣＯＵＮＴ０ＩＮＩ，ＣＯＵＮＴ１ＩＮＩ、ＣＯＵＮＴ２ＩＮＩ、ＣＯＵＮＴ０ＦＩＮ、ＣＯＵＮＴ１ＦＩＮ、ＣＯＵＮＴ２ＦＩＮの値を演算し、結果ｅｎｄｓｉｇ０を比較器５６−０に出力し、結果ｅｎｄｓｉｇ１を比較器５６−１に出力し、結果ｅｎｄｓｉｇ２を比較器５６−２に出力し、結果ｅｎｄｓｉｇｘを比較器５６−ｘに出力する。
【０４２９】
具体的には、比較器５５は、ｊ＝０，１，２，ｘについて、カウンタ５４−０によるカウントデータｃｏｕｎｔｄａｔ ０と入力信号ＣＯＵＮＴ０ＩＮＩが等しいときにｅｎｄｓｉｇｊ＝ｅｑ０、カウンタ５４−１によるカウントデータｃｏｕｎｔｄａｔ １と入力信号ＣＯＵＮＴ１ＩＮＩが等しいときにｅｎｄｓｉｇｊ＝ｅｑ１、カウンタ５４−２によるカウントデータｃｏｕｎｔｄａｔ ２と入力信号ＣＯＵＮＴ２ＩＮＩが等しいときにｅｎｄｓｉｇｊ＝ｅｑ２を設定する。
同様に、比較器５５は、カウンタ５４−０によるカウントデータｃｏｕｎｔｄａｔ ０と入力信号ＣＯＵＮＴ０ＦＩＮが等しいときにｅｎｄｓｉｇｊ＝ｅｑ３、カウンタ５４−１によるカウントデータｃｏｕｎｔｄａｔ １と入力信号ＣＯＵＮＴ１ＦＩＮが等しいときにｅｎｄｓｉｇｊ＝ｅｑ４、カウンタ５４−２によるカウントデータｃｏｕｎｔｄａｔ ２と入力信号ＣＯＵＮＴ２ＦＩＮが等しいときにｅｎｄｓｉｇｊ＝ｅｑ５を設定する。
また、比較器５５は、カウンタ５４−０によるカウントデータｃｏｕｎｔｄａｔ ０とカウンタ５４−１によるカウントデータｃｏｕｎｔｄａｔ １が等しいときｅｎｄｓｉｇｊ＝ｅｑ６、カウンタ５４−１によるカウントデータｃｏｕｎｔｄａｔ １とカウンタ５４−２によるカウントデータｃｏｕｎｔｄａｔ ２が等しいときｅｎｄｓｉｇｊ＝ｅｑ７、カウンタ５４−２によるカウントデータｃｏｕｎｔｄａｔ ２とカウンタ５４−０によるカウントデータｃｏｕｎｔｄａｔ ０が等しいときｅｎｄｓｉｇｊ＝ｅｑ８を設定する。
【０４３０】
比較器５６−０は、制御信号ＣＮＴ０ＥＮＤＭＤの値に応じて、比較器５５の出力信号ｅｎｄｓｉｇ０の値から、信号ｃｏｕｎｔｅｎｄ ０を生成し、セレクタ５３−０、比較器５７−１，５７−２、および制御信号生成器６１に出力する。
具体的には、比較器５６−０は、制御信号ＣＮＴ０ＥＮＤＭＤの値と比較器５５の出力信号ｅｎｄｓｉｇ０の値が、一致していれば信号ｃｏｕｎｔｅｎｄ ０に真を設定し、一致していなければ信号ｃｏｕｎｔｅｎｄ ０に偽を設定する。
【０４３１】
比較器５６−１は、制御信号ＣＮＴ１ＥＮＤＭＤの値に応じて、比較器５５の出力信号ｅｎｄｓｉｇ１の値から、信号ｃｏｕｎｔｅｎｄ １を生成し、セレクタ５３−１、比較器５７−０，５７−２、および制御信号生成器６１に出力する。
具体的には、比較器５６−１は、制御信号ＣＮＴ１ＥＮＤＭＤの値と比較器５５の出力信号ｅｎｄｓｉｇ１の値が、一致していれば信号ｃｏｕｎｔｅｎｄ １に真を設定し、一致していなければ信号ｃｏｕｎｔｅｎｄ １に偽を設定する。
【０４３２】
比較器５６−２は、制御信号ＣＮＴ２ＥＮＤＭＤの値に応じて、比較器５５の出力信号ｅｎｄｓｉｇ２の値から、信号ｃｏｕｎｔｅｎｄ ２を生成し、セレクタ５３−２、比較器５７−０，５７−１、および制御信号生成器６１に出力する。
具体的には、比較器５６−２は、制御信号ＣＮＴ２ＥＮＤＭＤの値と比較器５５の出力信号ｅｎｄｓｉｇ２の値が、一致していれば信号ｃｏｕｎｔｅｎｄ ２に真を設定し、一致していなければ信号ｃｏｕｎｔｅｎｄ ２に偽を設定する。
【０４３３】
比較器５６−ｘは、比較器５５の出力信号ｅｎｄｓｉｇｘの値から、信号ｃｏｕｎｔｅｎｄ ｘを生成し、セレクタ５３−ｘに出力する。
【０４３４】
比較器５７−０は、制御信号ＣＮＴ０ＩＮＣＭＤの値に応じて、比較器５６−１の出力信号ｃｏｕｎｔｅｎｄ １、および比較器５６−２の出力信号ｃｏｕｎｔｅｎｄ ２の値から信号ｃｏｕｎｔｉｎｃ ０を生成し、セレクタ５３−０に出力する。
具体的には、比較器５７−０は、制御信号ＣＮＴ０ＩＮＣＭＤの値に応じて、比較器５６−１の出力信号ｃｏｕｎｔｅｎｄ １が真のときに信号ｃｏｕｎｔｉｎｃ ０に真を設定し、偽のときに信号ｃｏｕｎｔｉｎｃ ０に偽を設定する。
または、比較器５７−０は、制御信号ＣＮＴ０ＩＮＣＭＤの値に応じて、比較器５６−２の出力信号ｃｏｕｎｔｅｎｄ ２が真のときに信号ｃｏｕｎｔｉｎｃ ０に真を設定し、偽のときに信号ｃｏｕｎｔｉｎｃ ０に偽を設定する。
または、比較器５７−０は、制御信号ＣＮＴ０ＩＮＣＭＤの値に応じて、比較器５６−１の出力信号ｃｏｕｎｔｅｎｄ １、かつ比較器５６−２の出力信号ｃｏｕｎｔｅｎｄ ２が真のときに信号ｃｏｕｎｔｉｎｃ ０に真を設定し、偽のときに信号ｃｏｕｎｔｉｎｃ ０に偽を設定する。
【０４３５】
比較器５７−１は、制御信号ＣＮＴ１ＩＮＣＭＤの値に応じて、比較器５６−２の出力信号ｃｏｕｎｔｅｎｄ ２、および比較器５６−０の出力信号ｃｏｕｎｔｅｎｄ ０の値から信号ｃｏｕｎｔｉｎｃ １を生成し、セレクタ５３−１に出力する。
具体的には、比較器５７−１は、制御信号ＣＮＴ１ＩＮＣＭＤの値に応じて、比較器５６−２の出力信号ｃｏｕｎｔｅｎｄ ２が真のときに信号ｃｏｕｎｔｉｎｃ １に真を設定し、偽のときに信号ｃｏｕｎｔｉｎｃ １に偽を設定する。
または、比較器５７−１は、制御信号ＣＮＴ０ＩＮＣＭＤの値に応じて、比較器５６−０の出力信号ｃｏｕｎｔｅｎｄ ０が真のときに信号ｃｏｕｎｔｉｎｃ １に真を設定し、偽のときに信号ｃｏｕｎｔｉｎｃ １に偽を設定する。
または、比較器５７−１は、制御信号ＣＮＴ１ＩＮＣＭＤの値に応じて、比較器５６−２の出力信号ｃｏｕｎｔｅｎｄ ２、かつ比較器５６−０の出力信号ｃｏｕｎｔｅｎｄ ０が真のときに信号ｃｏｕｎｔｉｎｃ １に真を設定し、偽のときに信号ｃｏｕｎｔｉｎｃ １に偽を設定する。
【０４３６】
比較器５７−２は、制御信号ＣＮＴ２ＩＮＣＭＤの値に応じて、比較器５６−０の出力信号ｃｏｕｎｔｅｎｄ ０、および比較器５６−１の出力信号ｃｏｕｎｔｅｎｄ １の値から信号ｃｏｕｎｔｉｎｃ ２を生成し、セレクタ５３−２に出力する。
具体的には、比較器５７−２は、制御信号ＣＮＴ２ＩＮＣＭＤの値に応じて、比較器５６−０の出力信号ｃｏｕｎｔｅｎｄ ０が真のときに信号ｃｏｕｎｔｉｎｃ ２に真を設定し、偽のときに信号ｃｏｕｎｔｉｎｃ ２に偽を設定する。
または、比較器５７−２は、制御信号ＣＮＴ２ＩＮＣＭＤの値に応じて、比較器５６−１の出力信号ｃｏｕｎｔｅｎｄ １が真のときに信号ｃｏｕｎｔｉｎｃ ２に真を設定し、偽のときに信号ｃｏｕｎｔｉｎｃ ２に偽を設定する。
または、比較器５７−２は、制御信号ＣＮＴ２ＩＮＣＭＤの値に応じて、比較器５６−０の出力信号ｃｏｕｎｔｅｎｄ ０、かつ比較器５６−１の出力信号ｃｏｕｎｔｅｎｄ １が真のときに信号ｃｏｕｎｔｉｎｃ ２に真を設定し、偽のときに信号ｃｏｕｎｔｉｎｃ ２に偽を設定する。
【０４３７】
セレクタ付き演算器５８は、制御信号ＣＯＵＮＴＳＵＭの値に応じて、カウンタ５４−０によるカウントデータｃｏｕｎｔｄａｔ ０、カウンタ５４−１によるカウントデータｃｏｕｎｔｄａｔ １、カウンタ５４−２によるカウントデータｃｏｕｎｔｄａｔ ２、カウンタ５４−３によるカウントデータｃｏｕｎｔｄａｔ ｘ、および入力信号ＯＦＦＳＥＴに基づいて信号ｓｕｍａｄｒを生成し、ビット反転器５９、およびマスク生成器６０に出力する。
具体的には、演算器５８は、制御信号ＣＯＵＮＴＳＵＭの値に応じて、以下のいずれかの演算を行う。
【０４３８】
（数２５）
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０、
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ １、
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ２、
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０＋ｃｏｕｎｔｄａｔ １、ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０＋ｃｏｕｎｔｄａｔ ２、ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ １＋ｃｏｕｎｔｄａｔ ２、ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０＋ｃｏｕｎｔｄａｔ １
＋ｃｏｕｎｔｄａｔ ２、
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０＋ｃｏｕｎｔｄａｔ １
＋ｃｏｕｎｔｄａｔ ２、
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０＋ｃｏｕｎｔｄａｔ １
＊２＾（ｃｏｕｎｔｄａｔ ｘ＋１）、
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０＋ｃｏｕｎｔｄａｔ １
＊２＾（ｃｏｕｎｔｄａｔ ｘ＋１）−１、
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０＋ｃｏｕｎｔｄａｔ １
＊２＾（ｃｏｕｎｔｄａｔ ｘ＋１）＋１、
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０＋ｃｏｕｎｔｄａｔ １
＊２＾（ｃｏｕｎｔｄａｔ ｘ＋１）
＋２＾（ｃｏｕｎｔｄａｔ ｘ）、
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０
＊２＾（ＣＯＵＮＴｘＦＩＮ−ｃｏｕｎｔｄａｔ ｘ）
【０４３９】
ビット反転器５９は、制御信号ＭＳＫＭＤの値に応じて、セレクタ付セレクタ付演算器５８の生成信号ｓｕｍａｄｒから信号ｂｒｖａｄｒを生成し、マスク生成器６０に出力する。
具体的には、ビット反転器５９は、制御信号ＭＳＫＭＤの値に応じて、ｍを決定し、信号ｂｒｖａｄｒにセレクタ付演算器５８の生成信号ｓｕｍａｄｒのＬＳＢからｍ−１ビットまでのビット反転を設定する。
【０４４０】
マスク生成器６０は、制御信号ＭＳＤＭＤの値に応じて、ビット反転器５９の生成信号ｂｒｖａｄｒ、セレクタ付演算器５８の生成信号ｓｕｍａｄｒ、および入力信号ＭＡＳＫに基づいてアドレス信号ＧＥＮＡＤＲを生成する。
具体的には、マスク生成器６０は、制御信号ＭＳＫＭＤの値に応じて、ビット反転器５９の生成信号ｂｒｖａｄｒとセレクタ付演算器５８の生成信号ｓｕｍａｄｒの値を選択し、その結果と入力信号ＭＡＳＫの値を各ビット単位でＡＮＤ（論理積）、ＯＲ（論理和）、ＸＯＲ（排他的論理和）のいずれかの操作を行い、信号ＧＥＮＡＤＲを生成する。
この生成されたアドレス信号ＧＥＮＡＤＲが、たとえば図１２の演算システムのデータメモリ４６に供給される。
【０４４１】
制御信号生成器６１は、制御信号ＣＴＲＬＭＤの値に応じて、比較器５６−０の出力信号ｃｏｕｎｔｅｎｄ ０、比較器５６−１の出力信号ｃｏｕｎｔｅｎｄ １、および比較器５６−２の出力信号ｃｏｕｎｔｅｎｄ ２に基づいて制御信号ＣＴＲＬを生成し、アドレスが生成されている期間はアドレス有効信号ＶＡＬＩＤを有効にする。
また、制御信号ＣＯＵＮＴＥＮの値に応じて、内部に持つカウンタ５４−０、５４−１、５４−２、および５４−ｘのカウントアップの許可／不許可の制御を行う。
【０４４２】
具体的には、制御信号生成器６１は、制御信号ＣＴＲＬＭＤの値に応じて、
・信号ｃｏｕｎｔｅｎｄ ０が真のとき、
・信号ｃｏｕｎｔｅｎｄ １が真のとき、
・信号ｃｏｕｎｔｅｎｄ ２が真のとき、
・信号ｃｏｕｎｔｅｎｄ ０が真かつ信号ｃｏｕｎｔｅｎｄ １が真のとき、
・信号ｃｏｕｎｔｅｎｄ ０が真かつ信号ｃｏｕｎｔｅｎｄ ２が真のとき、
・信号ｃｏｕｎｔｅｎｄ １が真かつ信号ｃｏｕｎｔｅｎｄ ２が真のとき
のいずれかの場合に制御信号ＣＴＲＬを有効にし、それ以外のときはＣＴＲＬを無効にする。
【０４４３】
次に、上記構成によるアドレス生成の具体的な動作を、図１４の３重ループの場合を例に、図１５に関連付けて説明する。
【０４４４】
まず、入力信号として与えられる各カウンタのステップ値、初期値、終了値がそれぞれ以下のように設定される。
【０４４５】
ステップ値信号ＣＯＵＮＴ０ＳＴＰが「３」に設定されて演算器５１−０に供給され、初期値信号ＣＯＵＮＴ０ＩＮＩが「０」に設定されて演算器５２−０、およびセレクタ５３−０に供給され、終了値信号ＣＯＵＮＴ０ＦＩＮが「３」に設定されて比較器５５に供給される。
同様に、ステップ値信号ＣＯＵＮＴ１ＳＴＰが「５」に設定されて演算器５１−１に供給され、初期値信号ＣＯＵＮＴ１ＩＮＩが「０」に設定されて演算器５２−１、およびセレクタ５３−１に供給され、終了値信号ＣＯＵＮＴ１ＦＩＮが「１０」に設定されて比較器５５に供給される。
ステップ値信号ＣＯＵＮＴ２ＳＴＰが「１」に設定されて演算器５１−２に供給され、初期値信号ＣＯＵＮＴ２ＩＮＩが「０」に設定されて演算器５２−２、およびセレクタ５３−２に供給され、終了値信号ＣＯＵＮＴ２ＦＩＮが「１」に設定されて比較器５５に供給される。
また、初期値信号ＣＯＵＮＴｘＩＮＩが「０」に設定されてセレクタ５３−ｘに供給され、終了値信号ＣＯＵＮＴｘＦＩＮが「０」に設定されて演算器５１−ｘに供給される。
【０４４６】
また、制御信号ＣＮＴ０ＩＮＩＭＤは加算の実行を選択するように、演算器５１−０に供給される。
同様に、制御信号ＣＮＴ１ＩＮＩＭＤは加算の実行を選択するように、演算器５１−１に供給され、制御信号ＣＮＴ２ＩＮＩＭＤは加算の実行を選択するように、演算器５１−２に供給される。
【０４４７】
さらに、制御信号ＣＮＴ０ＲＥＴＭＤがＣＯＵＮＴ０ＩＮＩを選択するように設定されて、演算器５２−０に供給される。
同様に、制御信号ＣＮＴ１ＲＥＴＭＤがＣＯＵＮＴ１ＩＮＩを選択するように設定されて演算器５２−１に供給され、制御信号ＣＮＴ２ＲＥＴＭＤがＣＯＵＮＴ２ＩＮＩを選択するように設定されて演算器５２−２に供給される。
【０４４８】
また、制御信号ＣＮＴ０ＥＮＤＭＤが、カウンタ５４−０のカウントデータｃｏｕｎｔｄａｔ ０と終了値信号ＣＯＵＮＴ０ＦＩＮが一致したときの比較器５５の出力信号ｅｄｎｓｉｇ０を入力したときに、信号ｃｏｕｎｔｅｎｄ ０に真を設定するように、比較器５６−０に供給される。
同様に、制御信号ＣＮＴ１ＥＮＤＭＤが、カウンタ５４−１のカウントデータｃｏｕｎｔｄａｔ １と終了値信号ＣＯＵＮＴ１ＦＩＮが一致したときの比較器５５の出力信号ｅｄｎｓｉｇ１を入力したときに、信号ｃｏｕｎｔｅｎｄ １に真を設定するように、比較器５６−１に供給される。
そして、制御信号ＣＮＴ２ＥＮＤＭＤが、カウンタ５４−２のカウントデータｃｏｕｎｔｄａｔ ２と終了値信号ＣＯＵＮＴ２ＦＩＮが一致したときの比較器５５の出力信号ｅｄｎｓｉｇ２を入力したときに、信号ｃｏｕｎｔｅｎｄ ２に真を設定するように、比較器５６−２に供給される。
【０４４９】
また、制御信号ＣＮＴ０ＩＮＣＭＤが、比較器５７−２の出力信号ｃｏｕｎｔｅｎｄ ２が真で、かつ比較器５７−１の出力信号ｃｏｕｎｔｅｎｄ １が真であるときに、信号ｃｏｕｎｔｉｎｃ ０に真を設定するように、比較器５７−０に供給される。
また、制御信号ＣＮＴ１ＩＮＣＭＤが、比較器５７−２の出力信号ｃｏｕｎｔｅｎｄ ２が真であるときに、信号ｃｏｕｎｔｉｎｃ １に真を設定するように、比較器５７−１に供給される。
また、制御信号ＣＮＴ２ＩＮＣＭＤが、常に信号ｃｏｕｎｔｉｎｃ ２に真を設定するように、比較器５７−２に供給される。
【０４５０】
さらに、制御信号ＣＯＵＮＴＳＵＭが、カウンタ５４−０によるカウントデータｃｏｕｎｔｄａｔ ０の値、カウンタ５４−１によるカウントデータｃｏｕｎｔｄａｔ １の値、およびカウンタ５４−２によるカウントデータｃｏｕｎｔｄａｔ ２の値の合計を出力するモードに設定されるように、セレクタ付演算器５８に供給される。
【０４５１】
また、セレクタ付演算器５８に供給される入力信号ＯＦＦＳＥＴ、およびマスク生成器６０に供給される入力信号ＭＡＳＫが「０」に設定される。
さらに、制御信号ＭＳＫＭＤが、ビットリバースなし、マスクをしないモードに設定するように、ビット反転器５９、およびマスク生成器６０に供給される。
【０４５２】
このような状態において、アドレス生成装置５０が、図示しない制御回路からアドレス生成起動信号を受けて、カウンタ５４−０〜５４−ｘが所定のタイミングでカウント動作を開始される。
この場合、カウンタ５４−２では、図１５（ｊ）に示すように、比較器５７−２の出力信号ｃｏｕｎｔｉｎｃ ２が常に真（図１５ではハイレベル）、すなわち、常にカウントアップを示しているのでカウントアップはじめ、初期値０にステップ値信号ＣＯＵＮＴ２ＳＴＰの値「１」が加えられ、カウントデータｃｏｕｎｔｄａｔ ２は、図１５（ｃ）に示すように、０から１となる。
【０４５３】
カウンタ５４−２のカウントデータｃｏｕｎｔｄａｔ ２が「１」になり、比較器５５に供給される。このカウントデータｃｏｕｎｔｄａｔ ２の値「１」は、終了値信号ＣＯＵＮＴ２ＦＩＮと等しくなるので、その旨を示す信号ｅｎｄｓｉｇ２が比較器５６−２に供給され、図１５（ｇ）に示すように、比較器５６−２の出力信号ｃｏｕｎｔｅｎｄ ２が真に設定されて比較器５７−１，５７−０、および制御信号生成器６１に供給される。
【０４５４】
比較器５６−２の出力信号ｃｏｕｎｔｅｎｄ ２が真で供給された比較器５７−１では、図１５（ｉ）に示すように、その出力信号ｃｏｕｎｔｉｎｃ １が真に設定される。
これにより、カウンタ５４−１においてカウントアップが行われ、カウントデータｃｏｕｎｔｄａｔ １は、図１５（ｂ）に示すように「５」になる。
このとき、カウンタ５４−２は、制御信号ＣＮＴ１ＲＥＴＭＤに従って、セレクタ５３−２を介して初期値０に戻される。
このとき、カウンタ５４−０では、図１５（ｈ）に示すように、比較器５７−０の出力信号ｃｏｕｎｔｉｎｃ ０が偽（図１５ではローレベル）であることから、カウントアップ動作が開始されない。
【０４５５】
カウンタ５４−２のカウントデータｃｏｕｎｔｄａｔ ２が、図１５（ｃ）に示すように、再び「１」になると、カウンタ５４−１がカウントアップされることを繰り返される。
図１５（ｂ）に示すように、カウンタ５４−１のカウントデータｃｏｕｎｔｄａｔ １が「１０」になった時点で、終了値信号ＣＯＵＮＴ１ＦＩＮと等しくなるので、その旨を示す信号ｅｎｄｓｉｇ１が比較器５６−１に供給され、図１５（ｆ）に示すように、比較器５６−１の出力信号ｃｏｕｎｔｅｎｄ １が真に設定されて比較器５７−０，５７−２、および制御信号生成器６１に供給される。
【０４５６】
比較器５６−１の出力信号ｃｏｕｎｔｅｎｄ １が真で供給された比較器５７−０では、図１５（ｈ）に示すように、その出力信号ｃｏｕｎｔｉｎｃ ０が真に設定される。
これにより、カウンタ５４−０においてカウントアップが行われ、カウントデータｃｏｕｎｔｄａｔ ０は、図１５（ａ）にしめすように「０」から「３」に更新される。
【０４５７】
生成されるアドレスは、制御信号ＣＯＵＮＴＳＵＭを受けたセレクタ付演算器５８では、カウンタ５４−０のカウントデータｃｏｕｎｔｄａｔ ０、カウンタ５４−１のカウントデータｃｏｕｎｔｄａｔ １、およびカウンタ５４−２のカウントデータｃｏｕｎｔｄａｔ ２の合計値を出力するモードになっているので、マスク生成器６０から、図１５（ｄ）に示すように、アドレス信号ＧＥＮＡＤＲとしてカウンタの合計値が出力される。
【０４５８】
さらに、制御信号ＣＴＲＬＭＤが、比較器５６−１の出力信号ｃｏｕｎｔｅｎｄ １、かつ比較器５６−２の出力信号ｃｏｕｎｔｅｎｄ ２が真のときに制御信号ＣＴＲＬを出力するように、制御信号生成器６１に供給されると、図１５（ｌ）に示すように、両信号が真となるそのタイミングでＣＴＲＬが真になる。
【０４５９】
以上説明したように、本第１１の実施形態によれば、従来のＤＳＰなどではアドレス生成不可能だった複雑なループのネスト、ＦＦＴアクセスパターン、ビットリバース等を行おうとする場合に、アドレスを自動生成することができる。このためＡＬＵを用いてアドレス計算を行う必要がなくなり、処理に必要なサイクル数が減り効率が良くなる利点がある。
【０４６０】
なお、以上の説明では、図１４に関連付けて、３重ループの場合を例を説明したが、本発明は、これに限定されるものではなく、カウンタ数の異なる種々の態様が可能であることはいうまでもない。
【０４６１】
以下に、カウンタ数が上述した例の拡張である一般的な実現例について説明する。
【０４６２】
このアドレス生成装置は、カウンタCounter ｉ，Counter ｘ、演算器ＩＮＣＤＥＣｉ，ＩＮＣＤＥＣｘ、セレクタ付き演算器ＳＵＭｉ，ＡＤＲＳＵＭ、セレクタＳＥＬｉ，ＳＥＬｘ、比較器ＥＮＤ，ＥＮＤｉ，ＥＮＤｘ，ＩＮＣｉ、ビット反転器ＢＲＶ、およびマスク生成器ＡＤＲＭＳＫにより構成される（ただし０≦ｉ≦ｎ−１）。
【０４６３】
また、このアドレス生成装置は、入力信号ＣＯＵＮＴｉＳＴＰ，ＣＯＵＮＴｉＩＮＩ，ＣＯＵＮＴｉＦＩＮ，ＣＯＵＮＴｘＦＩＮ，ＯＦＦＳＥＴ，ＭＡＳＫと、制御信号ＣＮＴｉｌＮＩＭＤ，ＣＮＴｉＲＥＴＭＤ，ＣＮＴｉＥＮＤＭＤ，ＣＮＴｉＩＮＣＭＤ，ＣＴＲＬＭＤ，ＣＯＵＮＴＳＵＭ，ＭＳＫＭＤ，ＣＯＵＮＴＥＮが供給され、制御信号ＣＴＲＬ、および生成アドレスＧＥＮＡＤＲを出力する。
【０４６４】
ここで、ｉ＝０〜ｎ−１のすべてのｉについて、カウンタCounter ｉはカウントデータｃｏｕｎｔｄａｔ ｉを格納し、カウンタCounter ｘはカウントデータｃｏｕｎｔｄａｔ ｘを格納する。
【０４６５】
ｉ＝０〜ｎ−１のすべてのｉについて、演算器ＩＮＣＤＥＣｉは制御信号ＣＮＴｉＩＮＩＭＤの値に応じてステップ値信号ＣＯＵＮＴｉＳＴＰとカウンタCounter ｉのカウントデータｃｏｕｎｔｄａｔ ｉを演算した結果を信号ｃｏｕｎｔｃａｌ ｉとして出力、演算器ＩＮＣＤＥＣｘは終了値信号ＣＯＵＮＴｘＦＩＮとカウンタCounter ｘのカウントデータｃｏｕｎｔｄａｔ ｘを演算した結果を信号ｃｏｕｎｔｃａｌ ｘを出力する。
【０４６６】
ｉ＝０〜ｎ−１のすべてのｉについて、セレクタ付き演算器ＳＵＭｉは制御信号ＣＮＴｉＲＥＴＭＤの値に応じて初期値信号ＣＯＵＮＴｉＩＮＩ、演算器ＩＮＣＤＥＣｉの出力信号ｃｏｕｎｔｃａｌ ０，ｃｏｕｎｔｃａｌ １，…，ｃｏｕｎｔｃａｌ ｎ−１を演算した結果を、セレクタＳＥＬｉを介してカウンタCounter ｉに出力する。
【０４６７】
ｉ＝０〜ｎ−１のすべてのｉについて、比較器ＥＮＤはカウンタCounter i のカウントデータｃｏｕｎｔｄａｔ ０，ｃｏｕｎｔｄａｔ １，…，ｃｏｕｎｔｃａｌ ｎ−１、カウンタCounter x のカウントデータｃｏｕｎｔｄａｔ ｘ、初期値信号ＣＯＵＮＴ０ＩＮＩ，ＣＯＵＮＴ１ＩＮＩ，…，ＣＯＵＮＴｎ−１ＩＮＩ、終了値信号ＣＯＵＮＴ０ＦＩＮ，ＣＯＵＮＴ１ＦＩＮ，…，ＣＯＵＮＴｎ−１ＦＩＮの値を演算した結果を信号ｅｎｄｓｉｇｉとして出力し、また、カウンタCounter i のカウントデータｃｏｕｎｔｄａｔ ０，ｃｏｕｎｔｄａｔ １，…，ｃｏｕｎｔｃａｌ ｎ−１、カウンタCounter x のカウントデータｃｏｕｎｔｄａｔ ｘ、初期値信号ＣＯＵＮＴ０ＩＮＩ，ＣＯＵＮＴ１ＩＮＩ，…，ＣＯＵＮＴｎ−１ＩＮＩ、終了値信号ＣＯＵＮＴ０ＦＩＮ，ＣＯＵＮＴ１ＦＩＮ，…，ＣＯＵＮＴｎ−１ＦＩＮの値を演算した結果を信号ｅｎｄｓｉｇｘとして出力する。
【０４６８】
ｉ＝０〜ｎ−１のすべてのｉについて、比較器ＥＮＤｉは制御信号ＣＮＴｉＥＮＤＭＤの値に応じて、比較器ＥＮＤの出力信号ｅｎｄｓｉｇｉの値から信号ｃｏｕｎｔｅｎｄ ｉを生成し、比較器ＥＮＤｘは比較器ＥＮＤの出力信号ｅｎｄｓｉｇｘの値から信号ｃｏｕｎｔｅｎｄ ｘを生成する。
【０４６９】
ｉ＝０〜ｎ−１のすべてのｉについて、比較器ＩＮＣｉは制御信号ＣＮＴｉＩＮＣＭＤの値に応じて、ｊ＝０〜ｎ−１のすべてのｊ（ただしｊ！＝ｉ）について比較器ＥＮＤｉの出力信号ｃｏｕｎｔｅｎｄ ｊ値から信号ｃｏｕｎｔｉｎｃ ０を生成する。
【０４７０】
ｉ＝０〜ｎ−１のすべてのｉについて、セレクタＳＥＬｉは比較器ＩＮＣｉの出力信号ｃｏｕｎｔｉｎｃ ｉ、比較器ＥＮＤｉの出力信号ｃｏｕｎｔｅｎｄ ｉの値に応じて、演算器ＩＮＣＤＥＣｉの出力信号ｃｏｕｎｔｃｌａ ｉ、初期値信号ＣＯＵＮＴｉＩＮＩ、演算器ＳＵＭｉの出力信号ｃｏｕｎｔｒｅｔ ｉの値を選択して、カウンタCounter i のカウントデータｃｏｕｎｔｄａｔ ｉを設定し、セレクタＳＥＬｘは比較器ＥＮＤｘの出力信号ｃｏｕｎｔｅｎｄ ｘの値に応じて、演算器ＩＮＣＤＥＣｘの出力信号ｃｏｕｎｔｃａｌ ｘ、初期値信号ＣＯＵＮＴｘＩＮＩの値を選択して、カウンタCounter x のカウントデータｃｏｕｎｔｄａｔ ｘを設定する。
【０４７１】
セレクタ付演算器ＡＤＲＳＵＭは、制御信号ＣＯＵＮＴＳＵＭの値に応じて、カウンタCounter i のカウントデータｃｏｕｎｔｄａｔ ０，ｃｏｕｎｔｄａｔ １，…，ｃｏｕｎｔｃａｌ ｎ−１、カウンタCounter x のカウントデータｃｏｕｎｔｄａｔ ｘ、入力信号ＯＦＦＳＥＴから信号ｓｕｍａｄｒを生成する。
【０４７２】
ビット反転器ＢＲＶは、制御信号ＭＳＫＭＤの値に応じてセレクタ付演算器ＡＤＲＳＵＭの出力信号ｓｕｍａｄｒから信号ｂｒｖａｄｒを生成する。
【０４７３】
マスク生成器ＡＤＲＭＳＫは、制御信号ＭＳＤＭＤの値に応じビット反転器ｂｒｖａｄｒとセレクタ付演算器ＡＤＲＳＵＭの出力信号ｓｕｍａｄｒと入力信号ＭＡＳＫからアドレス信号ＧＥＮＡＤＲを生成する。
【０４７４】
制御信号生成器ＣＴＲＬＧＥＮは、制御信号ＣＴＲＬＭＤの値に応じてカウンタCounter i のカウントデータｃｏｕｎｔｄａｔ ０，ｃｏｕｎｔｄａｔ １，…，ｃｏｕｎｔｃａｌ ｎ−１から制御信号ＣＴＲＬを生成する。
制御信号生成器ＣＴＲＬＧＥＮは、アドレスが生成されている期間はアドレス有効信号ＶＡＬＩＤを有効にする。
【０４７５】
そして、上述した構成を有するアドレス生成装置において、ｉ＝０〜ｎ−１のすべてのｉについて、以下の処理が行われる。
【０４７６】
ｉ＝０〜ｎ−１のすべてのｉについて、演算器ＩＮＣＤＥＣｉは、制御信号ＣＮＴｉＩＮＩＭＤの値に応じて、次のいずれかの演算を行う。
【０４７７】
（数２６）
ｃｏｕｎｔｃａｌ ｉ＝ＣＯＵＮＴｉＳＴＰ＋ｃｏｕｎｔｄａｔ ｉ、
ｃｏｕｎｔｃａｌ ｉ＝ＣＯＵＮＴｉＳＴＰ−＋ｃｏｕｎｔｄａｔ ｉ
【０４７８】
ｉ＝０〜ｎ−１のすべてのｉについて、セレクタ付演算器ＳＵＭｉは、制御信号ＣＮＴｉＲＥＴＭＤの値に応じて、次のいずれかの演算を行う。
【０４７９】
（数２７）
ｃｏｕｎｔｒｅｔ ｉ＝ＣＯＵＮＴｉＩＮＩ、
ｃｏｕｎｔｒｅｔ ｉ＝ｃｏｕｎｔｃａｌ ０、
ｃｏｕｎｔｒｅｔ ｉ＝ｃｏｕｎｔｃａｌ １、
…
ｃｏｕｎｔｒｅｔ ｉ＝ｃｏｕｎｔｃａｌ ｎ−１、
ｃｏｕｎｔｒｅｔ ｉ＝ＣＯＵＮＴｉＩＮＩ＋ｃｏｕｎｔｃａｌ ０、
ｃｏｕｎｔｒｅｔ ｉ＝ＣＯＵＮＴｉＩＮＩ＋ｃｏｕｎｔｃａｌ １、
…
ｃｏｕｎｔｒｅｔ ｉ＝ＣＯＵＮＴｉＩＮＩ＋ｃｏｕｎｔｃａｌ ｎ−１
【０４８０】
ｉ＝０〜ｎ−１のすべてのｉについて、比較器ＥＮＤは、カウントデータｃｏｕｎｔｄａｔ ０と初期値信号ＣＯＵＮＴ０ＩＮＩが等しいときにendsigi ＝ＩＮＩ０、カウントデータｃｏｕｎｔｄａｔ １と初期値信号ＣＯＵＮＴ１ＩＮＩが等しいときにendsigi ＝ＩＮＩ１、…、カウントデータｃｏｕｎｔｄａｔ ｎ−１と初期値信号ＣＯＵＮＴｎ−１ＩＮＩが等しいときにendsigi ＝ＩＮＩｎ−１を設定する。
同様に、比較器ＥＮＤは、カウントデータｃｏｕｎｔｄａｔ ０と終了値信号ＣＯＵＮＴ０ＦＩＮが等しいときにendsigi ＝ＦＩＮ０、カウントデータｃｏｕｎｔｄａｔ １と終了値信号ＣＯＵＮＴ１ＦＩＮが等しいときにendsigi ＝ＦＩＮ１、…、カウントデータｃｏｕｎｔｄａｔ ｎ−１と終了値信号ＣＯＵＮＴｎ−１ＦＩＮが等しいときにendsigi ＝ＦＩＮｎ−１を設定する。
また、比較器ＥＮＤは、カウントデータｃｏｕｎｔｄａｔ ０とｃｏｕｎｔｄａｔ １が等しいときにendsigi ＝ｅｑ０１、カウントデータｃｏｕｎｔｄａｔ ０とｃｏｕｎｔｄａｔ ２が等しいときにendsigi ＝ｅｑ０２、…カウントデータｃｏｕｎｔｄａｔ ０とｃｏｕｎｔｄａｔ ｎ−１が等しいときにendsigi
＝ｅｑｎ−１、……、ｃｏｕｎｔｄａｔ ｎ−１とｃｏｕｎｔｄａｔ ｎ−２が等しいときにendsigi ＝ｅｑｎ−１ｎ−２を設定する。
【０４８１】
ｉ＝０〜ｎ−１のすべてのｉについて、比較器ＥＮＤｉは、制御信号ＣＮＴｉＥＮＤＭＤの値と信号ｅｎｄｓｉｇｉの値が一致していれば信号ｃｏｕｎｔｅｎｄ ｉに真を設定し、一致していなければ信号ｃｏｕｎｔｅｎｄ ｉに偽を設定する。
【０４８２】
ｉ＝０〜ｎ−１のすべてのｉについて、比較器ＩＮＣｉは、制御信号ＣＮＴｉＩＮＣＭＤの値に応じて、ｊ＝０〜ｎ−１のすべてのｊ（ただしｊ！＝ｉ）について、信号ｃｏｕｎｔｅｎｄ ｊが真のときに信号ｃｏｕｎｔｉｎｃ ｉに真を設定し、信号ｃｏｕｎｔｅｎｄ ｊが偽のときには信号ｃｏｕｎｔｉｎｃ ｉに偽を設定する。
または、比較器ｉは、ｊ＝０〜ｎ−１のすべてのｊ（ただしｉ！＝ｊ）とｋ＝０〜ｎ−１のすべてのｋ（ただしｋ！＝ｉ）について、信号ｃｏｕｎｔｅｎｄ ｊが真で、かつ、信号ｃｏｕｎｔｅｎｄ ｋが真のときに、信号ｃｏｕｎｔｉｎｃ ｉに真を設定し、そうでないときに信号ｃｏｕｎｔｉｎｃ ｉに偽を設定する。
【０４８３】
セレクタ付演算器ＡＤＲＳＵＭは、制御信号ＣＯＵＮＴＳＵＭの値に応じてのいずれかの演算を行う。
【０４８４】
（数２８）
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０、
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ １、
…
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ｎ−１、
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０＋ｃｏｕｎｔｄａｔ １、ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０＋ｃｏｕｎｔｄａｔ ２、            …
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０＋ｃｏｕｎｔｄａｔ ｎ−１、
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ １＋ｃｏｕｎｔｄａｔ ２、            …
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ １
＋ｃｏｕｎｔｄａｔ ｎ−１、
…
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ｎ−２
＋ｃｏｕｎｔｄａｔ ｎ−１、
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０＋ｃｏｕｎｔｄａｔ １
＋ｃｏｕｎｔｄａｔ ２、
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０＋ｃｏｕｎｔｄａｔ １
＊２＾（ｃｏｕｎｔｄａｔ ｘ＋１）、
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０＋ｃｏｕｎｔｄａｔ １
＊２＾（ｃｏｕｎｔｄａｔ ｘ＋１）−１、
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０＋ｃｏｕｎｔｄａｔ １
＊２＾（ｃｏｕｎｔｄａｔ ｘ＋１）＋１、
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０＋ｃｏｕｎｔｄａｔ １
＊２＾（ｃｏｕｎｔｄａｔ ｘ＋１）
＋２＾（ｃｏｕｎｔｄａｔ ｘ）、
ｓｕｍａｄｒ＝ＯＦＦＳＥＴ＋ｃｏｕｎｔｄａｔ ０
＊２＾（ＣＯＵＮＴｘＦＩＮ−ｃｏｕｎｔｄａｔ ｘ）
【０４８５】
ビット反転器ＢＲＶは、制御信号ＭＳＫＭＤの値に応じてｍを決定し、信号ｂｒｖａｄｒにセレクタ付演算器ＡＤＲＳＵＭの生成信号ｓｕｍａｄｒのＬＳＢからｍ−１ビットまでのビット反転を設定する。
【０４８６】
マスク生成器ＡＤＲＭＳＫは、制御信号ＭＳＫＭＤの値に応じて、ビット反転器ＢＲＶの生成信号ｂｒｖａｄｒ、セレクタ付演算器ＡＤＲＳＵＭの生成信号ｓｕｍａｄｒを選択し、その結果と入力信号ＭＡＳＫの値を各ビット単位でＡＮＤ（論理積）、ＯＲ（論理和）、ＸＯＲ（排他的論理和）のいずれかの操作を行い、信号ＧＥＮＡＤＲを生成する。
【０４８７】
制御信号生成器ＣＴＲＬＧＥＮは、制御信号ＣＴＲＬＭＤの値に応じて、カウントデータｃｏｕｎｔｄａｔ ０が真のとき、カウントデータｃｏｕｎｔｄａｔ １が真のとき、…、カウントデータｃｏｕｎｔｄａｔ ｎ−１が真のとき、カウントデータｃｏｕｎｔｄａｔ ０が真かつカウントデータｃｏｕｎｔｄａｔ １が真のとき、カウントデータｃｏｕｎｔｄａｔ ０が真かつカウントデータｃｏｕｎｔｄａｔ ２が真のとき、…、カウントデータｃｏｕｎｔｄａｔ ０が真かつカウントデータｃｏｕｎｔｄａｔ ｎ−１が真のとき、…、カウントデータｃｏｕｎｔｄａｔ ｎ−２が真かつカウントデータｃｏｕｎｔｄａｔ ｎ−１が真のときのいずれかの場合に制御信号ＣＴＲＬを有効にし、それ以外のときは制御信号ＣＴＲＬを無効にし、アドレスが生成されている期間はアドレス有効信号ＶＡＬＩＤを有効にする。
また、制御信号ＣＯＵＮＴＥＮの値に応じて、内部に持つカウンタCounteri（ただし０≦ｉ≦ｎ−１）、Countex のカウントアップを許可／不許可にする。
【０４８８】
以上説明した一般的な例においても、上述した図１４の装置の作用効果と同様の作用効果を得ることができる。
【０４８９】
第１２実施形態
図１６は、本発明の第１２の実施形態を説明するための図であって、本発明に係るインタリーブ装置のデータ読み出し系の一例を示す構成図である。
【０４９０】
本インタリーブ装置７０は、特定のアクセスパターンに対して、デュアルポートメモリが必要なアクセスを、シングルポートメモリを用いて実現することが可能な装置であって、ＦＦＴ演算のデータアクセス等に利用できる。
したがって、本インタリーブ装置７０は、たとえば上述した第１０の実施形態を示す図１２の演算システムのデータメモリから演算装置へのデータ伝送系に適用可能である。
なお、以下の説明では、図示しないシングルポートメモリは、メモリバンクＭＢＮＫ０とメモリバンクＭＢＮＫ１を有し、インタリーブ装置７０は、メモリバンクＭＢＮＫ０とメモリバンクＭＢＮＫ１に対するアクセスを行うものとする。
【０４９１】
本インタリーブ装置７０は、図１６に示すように、第１の遅延装置（ＤＦＦ０）７１−０、第２の遅延装置（ＤＦＦ１）７１−１、第１の選択装置（ｓｅｌ０）７２−０、および第２の選択装置（ｓｅｌ１）７２−１を有している。
【０４９２】
そして、インタリーブ装置７０は、メモリバンクＭＢＮＫ０からの読み出しデータ入力ＭＢＮＫＲ０、メモリバンクＭＢＮＫ１からの読み出しデータ入力ＭＢＮＫＲ１、および読み出しデータ出力ＭＥＭＲ０，ＭＥＭＲ１を有し、制御信号ｍｂｓｅｌｒ０，ｍｂｓｅｌｒ１が供給される。
【０４９３】
第１の遅延装置７１−０は、たとえばＤ型フリップフロップにより構成され、１サイクルの遅延を生じさせ、メモリバンクＭＢＮＫ０からの読み出しデータ入力ＭＢＮＫＲ０を１サイクルだけ遅延させ、信号ｍｂｎｋｒ０ ｄとして第１の選択装置７２−０、および第２の選択装置７２−１に出力する。
【０４９４】
第２の遅延装置７１−１は、たとえばＤ型フリップフロップにより構成され、１サイクルの遅延を生じさせ、メモリバンクＭＢＮＫ１からの読み出しデータ入力ＭＢＮＫＲ１を１サイクルだけ遅延させ、信号ｍｂｎｋｒ１ ｄとして第１の選択装置７２−０、および第２の選択装置７２−１に出力する。
【０４９５】
第１の選択装置７２−０は、メモリバンクＭＢＮＫ０からの読み出しデータ入力ＭＢＮＫＲ０、メモリバンクＭＢＮＫ１からの読み出しデータ入力ＭＢＮＫＲ１、第１の遅延装置７１−０の出力信号ｍｂｎｋｒ０ ｄ、および第２の遅延装置７１−１の出力信号ｍｂｎｋｒ１ ｄを入力とし、制御信号ｍｂｓｅｌｒ０の値に応じて、メモリバンクＭＢＮＫ０からの読み出しデータ入力ＭＢＮＫＲ０、メモリバンクＭＢＮＫ１からの読み出しデータ入力ＭＢＮＫＲ１、第１の遅延装置７１−０の出力信号ｍｂｎｋｒ０ ｄ、および第２の遅延装置７１−１の出力信号ｍｂｎｋｒ１ ｄのうちのいずれかの値を、読み出しデータ出力ＭＥＭＲ０として選択する。
【０４９６】
第２の選択装置７２−１は、メモリバンクＭＢＮＫ０からの読み出しデータ入力ＭＢＮＫＲ０、メモリバンクＭＢＮＫ１からの読み出しデータ入力ＭＢＮＫＲ１、第１の遅延装置７１−０の出力信号ｍｂｎｋｒ０ ｄ、および第２の遅延装置７１−１の出力信号ｍｂｎｋｒ１ ｄを入力とし、制御信号ｍｂｓｅｌｒ１の値に応じて、メモリバンクＭＢＮＫ０からの読み出しデータ入力ＭＢＮＫＲ０、メモリバンクＭＢＮＫ１からの読み出しデータ入力ＭＢＮＫＲ１、第１の遅延装置７１−０の出力信号ｍｂｎｋｒ０ ｄ、および第２の遅延装置７１−１の出力信号ｍｂｎｋｒ１ ｄのうちのいずれかの値を、読み出しデータ出力ＭＥＭＲ１として選択する。
【０４９７】
次に、上記構成による動作を、図１７に関連付けて説明する。
【０４９８】
図１７は、図１６の読み出し系インタリーブ装置の動作を説明するためのタイミングチャートである。
このタイミングチャートは、はじめの２サイクル（ｃｙｃｌｅ０，ｃｙｃｌｅ１）は通常のメモリアクセス、すなわち読み出しデータ出力ＭＥＭＲ０にメモリバンクＭＢＮＫ０からの読み出しデータ入力ＭＢＮＫＲ０を送り、読み出しデータ出力ＭＥＭＲ１にメモリバンクＭＢＮＫ１から読み出したデータＭＢＮＫＲ１を送るアクセスを表し、残りのサイクル（ｃｙｃｌｅ２〜）は読み出しデータ出力ＭＥＭＲ０，ＭＥＭＲ１で１サイクル中にメモリバンクＭＢＮＫ０からの読み出しデータ入力ＭＢＮＫＲ０を同時に利用、あるいは１サイクル中にメモリバンクＭＢＮＫ１からの読み出しデータ入力ＭＢＮＫＲ１のデータを同時に利用する場合を表している。
【０４９９】
図１７（ａ）に示すように、サイクル（ｃｙｃｌｅ）０でメモリバンクＭＢＮＫ０から読み出したデータ入力ＭＢＮＫＲ０はｅｖｅｎ０のデータになる。
ｃｙｃｌｅ１で読み出しデータ入力ＭＢＮＫＲ０はｅｖｅｎ１になり、メモリバンクＭＢＮＫ１からの読み出しデータ入力ＭＢＮＫＲ１は、図１７（ｂ）に示すように、ｏｄｄ０になる。
そして、読み出しデータ入力ＭＢＮＫＲ０は、そのまま直接に第１の選択装置７２−０、および第２の選択装置７２−１に入力され、かつ、第１の遅延装置７１−０で１サイクルだけ遅延され、信号ｍｂｎｋｒ０ ｄとして第１の選択装置７２−０、および第２の選択装置７２−１に入力される。
同様に、読み出しデータ入力ＭＢＮＫＲ１は、そのまま直接に第１の選択装置７２−０、および第２の選択装置７２−１に入力され、かつ、第２の遅延装置７１−１で１サイクルだけ遅延され、信号ｍｂｎｋｒ１ ｄとして第１の選択装置７２−０、および第２の選択装置７２−１に入力される。
【０５００】
そして、図１７（ｃ），（ｄ）に示すように、ｃｙｃｌｅ１では、読み出しデータ出力ＭＥＭＲ０とＭＥＭＲ１としてデータｅｖｅｎ０、ｏｄｄ０を出力するため、制御信号ｍｂｓｅｌｒ０が、図１７（ｅ）に示すように、データ入力ＭＢＮＫＲ０の１サイクル遅延を生じさせた信号ｍｂｎｋｒ０ ｄを選択するように、第１の選択装置７２−０に供給される。これにより、第１の選択装置７２−０の読み出しデータ出力ＭＥＭＲ０は、データｅｖｅｎ０となる。
同様に、制御信号ｍｂｓｅｌｒ１が、図１７（ｆ）に示すように、データ入力ＭＢＮＫＲ１を選択するように、第２の選択装置７２−１に供給される。これにより、第２の選択装置７２−１の読み出しデータ出力ＭＥＭＲ１は、データｏｄｄ０となる。
【０５０１】
ｃｙｃｌｅ２では、読み出しデータ入力ＭＢＮＫＲ０は、図１７（ａ）に示すように、データｅｖｅｎ２となり、読み出しデータ入力ＭＢＮＫＲ１は、図１７（ｂ）に示すように、データｏｄｄ１になる。
そして、図１７（ｃ），（ｄ）に示すように、ｃｙｃｌｅ２では、読み出しデータ出力ＭＥＭＲ０とＭＥＭＲ１としてデータｅｖｅｎ１、ｏｄｄ１を出力するため、制御信号ｍｂｓｅｌｒ０が、図１７（ｅ）に示すように、データ入力ＭＢＮＫＲ０の１サイクル遅延を生じさせた信号ｍｂｎｋｒ０ ｄを選択するように、第１の選択装置７２−０に供給される。これにより、第１の選択装置７２−０の読み出しデータ出力ＭＥＭＲ０は、データｅｖｅｎ１となる。
同様に、制御信号ｍｂｓｅｌｒ１が、図１７（ｆ）に示すように、データ入力ＭＢＮＫＲ１を選択するように、第２の選択装置７２−１に供給される。これにより、第２の選択装置７２−１の読み出しデータ出力ＭＥＭＲ１は、データｏｄｄ１となる。
【０５０２】
ｃｙｃｌｅ３では、読み出しデータ入力ＭＢＮＫＲ０は、図１７（ａ）に示すように、データｅｖｅｎ３となり、読み出しデータ入力ＭＢＮＫＲ１は、図１７（ｂ）に示すように、データｏｄｄ２になる。
そして、図１７（ｃ），（ｄ）に示すように、ｃｙｃｌｅ３では、読み出しデータ出力ＭＥＭＲ０とＭＥＭＲ１としてデータｅｖｅｎ２、ｏｄｄ３を出力するため、制御信号ｍｂｓｅｌｒ０が、図１７（ｅ）に示すように、データ入力ＭＢＮＫＲ０の１サイクル遅延を生じさせた信号ｍｂｎｋｒ０ ｄを選択するように、第１の選択装置７２−０に供給される。これにより、第１の選択装置７２−０の読み出しデータ出力ＭＥＭＲ０は、データｅｖｅｎ２となる。
同様に、制御信号ｍｂｓｅｌｒ１が、図１７（ｆ）に示すように、データ入力ＭＢＮＫＲ０を選択するように、第２の選択装置７２−１に供給される。これにより、第２の選択装置７２−１の読み出しデータ出力ＭＥＭＲ１は、データｅｖｅｎ３となる。
【０５０３】
ｃｙｃｌｅ４では、読み出しデータ入力ＭＢＮＫＲ０は、図１７（ａ）に示すように、データｅｖｅｎ４となり、読み出しデータ入力ＭＢＮＫＲ１は、図１７（ｂ）に示すように、データｏｄｄ３になる。
そして、図１７（ｃ），（ｄ）に示すように、ｃｙｃｌｅ４では、読み出しデータ出力ＭＥＭＲ０とＭＥＭＲ１としてデータｏｄｄ２、ｏｄｄ３を出力するため、制御信号ｍｂｓｅｌｒ０が、図１７（ｅ）に示すように、データ入力ＭＢＮＫＲ１の１サイクル遅延を生じさせた信号ｍｂｎｋｒ１ ｄを選択するように、第１の選択装置７２−０に供給される。これにより、第１の選択装置７２−０の読み出しデータ出力ＭＥＭＲ０は、データｏｄｄ２となる。
同様に、制御信号ｍｂｓｅｌｒ１が、図１７（ｆ）に示すように、データ入力ＭＢＮＫＲ１を選択するように、第２の選択装置７２−１に供給される。これにより、第２の選択装置７２−１の読み出しデータ出力ＭＥＭＲ１は、データｏｄｄ３となる。
【０５０４】
以上説明したように、本第１２の実施形態によれば、メモリバンクＭＢＮＫ０からの読み出しデータ入力ＭＢＮＫＲ０を１サイクルだけ遅延させ、信号ｍｂｎｋｒ０ ｄとして第１の選択装置７２−０、および第２の選択装置７２−１に出力する第１の遅延装置７１−０と、１サイクルの遅延を生じさせ、メモリバンクＭＢＮＫ１からの読み出しデータ入力ＭＢＮＫＲ１を１サイクルだけ遅延させ、信号ｍｂｎｋｒ１ ｄとして第１の選択装置７２−０、および第２の選択装置７２−１に出力する第２の遅延装置７１−１と、制御信号ｍｂｓｅｌｒ０の値に応じて、メモリバンクＭＢＮＫ０からの読み出しデータ入力ＭＢＮＫＲ０、メモリバンクＭＢＮＫ１からの読み出しデータ入力ＭＢＮＫＲ１、第１の遅延装置７１−０の出力信号ｍｂｎｋｒ０ ｄ、および第２の遅延装置７１−１の出力信号ｍｂｎｋｒ１ ｄのうちのいずれかの値を、読み出しデータ出力ＭＥＭＲ０として選択する第１の選択装置７２−０と、制御信号ｍｂｓｅｌｒ１の値に応じて、メモリバンクＭＢＮＫ０からの読み出しデータ入力ＭＢＮＫＲ０、メモリバンクＭＢＮＫ１からの読み出しデータ入力ＭＢＮＫＲ１、第１の遅延装置７１−０の出力信号ｍｂｎｋｒ０ ｄ、および第２の遅延装置７１−１の出力信号ｍｂｎｋｒ１ ｄのうちのいずれかの値を、読み出しデータ出力ＭＥＭＲ１として選択する第２の選択装置７２−１とを設けたので、デュアルポートメモリ（２Ｒ２Ｗメモリ）が必要な状況でも、特定のアクセスパターンの場合にはシングルポートメモリ（１Ｒ１Ｗメモリ）を用いて同等の機能を実現することができる。
これにより、メモリ面積の削減、プロセスポータビリティの向上が可能になり、しかも連続したメモリアクセスを実現できる利点がある。
【０５０５】
第１３実施形態
図１８は、本発明の第１３の実施形態を説明するための図であって、本発明に係るインタリーブ装置のデータ書き込み系の一例を示す構成図である。
【０５０６】
本インタリーブ装置８０は、特定のアクセスパターンに対して、デュアルポートメモリが必要なアクセスを、シングルポートメモリを用いて実現することが可能な装置であって、ＦＦＴ演算のデータアクセス等に利用できる。
したがって、本インタリーブ装置８０は、たとえば上述した第１０の実施形態を示す図１２の演算システムの演算装置の演算結果のデータメモリへの書き込みデータのデータ伝送系に適用可能である。
なお、以下の説明でも、図示しないシングルポートメモリは、メモリバンクＭＢＮＫ０とメモリバンクＭＢＮＫ１を有し、インタリーブ装置８０は、メモリバンクＭＢＮＫ０とメモリバンクＭＢＮＫ１に対するアクセスを行うものとする。
【０５０７】
本インタリーブ装置８０は、図１８に示すように、第１の遅延装置（ＤＦＦ０）８１−０、第２の遅延装置（ＤＦＦ１）８１−１、第１の選択装置（ｓｅｌ０）８２−０、および第２の選択装置（ｓｅｌ１）８２−１を有している。
【０５０８】
そして、インタリーブ装置８０は、系列０からの書き込みデータ入力ＭＥＭＷ０、系列１からの書き込みデータ入力ＭＥＭＷ１、メモリバンクＭＢＮＫ０への書き込みデータ出力ＭＢＮＫＷ０、およびメモリバンクＭＢＮＫ１への書き込みデータ出力ＭＢＮＫＷ１を有し、制御信号ｍｂｓｅｌｗ０，ｍｂｓｅｌｗ１が供給される。
【０５０９】
第１の遅延装置８１−０は、たとえばＤ型フリップフロップにより構成され、１サイクルの遅延を生じさせ、系列０からの書き込みデータ入力ＭＥＭＷ０を１サイクルだけ遅延させ、信号ｍｅｍｗ０ ｄとして第１の選択装置８２−０、および第２の選択装置８２−１に出力する。
【０５１０】
第２の遅延装置８１−１は、たとえばＤ型フリップフロップにより構成され、１サイクルの遅延を生じさせ、系列１からの書き込みデータ入力ＭＥＭＷ１を１サイクルだけ遅延させ、信号ｍｅｍｗ１ ｄとして第１の選択装置８２−０、および第２の選択装置８２−１に出力する。
【０５１１】
第１の選択装置８２−０は、系列０からの書き込み入力ＭＥＭＷ０、系列１からの書き込みデータ入力ＭＥＭＷ１、第１の遅延装置８１−０の出力信号ｍｅｍｗ０ ｄ、および第２の遅延装置８１−１の出力信号ｍｅｍｗ１ ｄを入力とし、制御信号ｍｂｓｅｌｗ０の値に応じて、系列０からの書き込み入力ＭＥＭＷ０、系列１からの書き込みデータ入力ＭＥＭＷ１、第１の遅延装置８１−０の出力信号ｍｅｍｗ０ ｄ、および第２の遅延装置８１−１の出力信号ｍｅｍｗ１ ｄのうちのいずれかの値を、書き込みデータ出力ＭＢＮＫＷ０として選択する。
【０５１２】
第２の選択装置８２−１は、系列０からの書き込み入力ＭＥＭＷ０、系列１からの書き込みデータ入力ＭＥＭＷ１、第１の遅延装置８１−０の出力信号ｍｅｍｗ０ ｄ、および第２の遅延装置８１−１の出力信号ｍｅｍｗ１ ｄを入力とし、制御信号ｍｂｓｅｌｗ１の値に応じて、系列０からの書き込み入力ＭＥＭＷ０、系列１からの書き込みデータ入力ＭＥＭＷ１、第１の遅延装置８１−０の出力信号ｍｅｍｗ０ ｄ、および第２の遅延装置８１−１の出力信号ｍｅｍｗ１ ｄのうちのいずれかの値を、書き込みデータ出力ＭＢＮＫＷ１として選択する。
【０５１３】
次に、上記構成による動作を、図１９に関連付けて説明する。
【０５１４】
図１９は、図１８の書き込み系インタリーブ装置の動作を説明するためのタイミングチャートである。
このタイミングチャートは、はじめの２サイクル（ｃｙｃｌｅ０，ｃｙｃｌｅ１）は通常のメモリアクセス、すなわちメモリバンクＭＢＮＫ０への書き込みデータ出力ＭＢＮＫＷ０に系列０からの書き込みデータ入力ＭＥＭＷ０を送り、メモリバンクＭＢＮＫ１への書き込みデータ出力ＭＢＮＫＷ１に系列１からの書き込みデータ入力ＭＥＭＷ１を送るアクセスを表し、残りのサイクル（ｃｙｃｌｅ２〜）は書き込みデータ入力ＭＥＭＷ０，ＭＥＭＷ１が同時に書き込みデータ出力ＭＢＮＫＷ０、あるいは書き込みデータ出力ＭＢＮＫＷ１としてメモリバンクＭＢＮＫ０、ＭＢＮＫ１に書き込みをする必要があることを表している。
【０５１５】
サイクル（ｃｙｃｌｅ）０で、系列０からの書き込みデータ入力ＭＥＭＷ０は、図１９（ａ）に示すように、ｅｖｅｎ０のデータになる。また、系列１からの書き込みデータ入力ＭＥＭＷ１は、図１９（ｂ）に示すように、ｏｄｄ０のデータになる。
そして、書き込みデータ入力ＭＥＭＷ０は、そのまま直接に第１の選択装置８２−０、および第２の選択装置８２−１に入力され、かつ、第８の遅延装置８１−０で１サイクルだけ遅延され、信号ｍｅｍｗ０ ｄとして第１の選択装置８２−０、および第２の選択装置８２−１に入力される。
同様に、書き込みデータ入力ＭＥＭＷ１は、そのまま直接に第１の選択装置８２−０、および第２の選択装置８２−１に入力され、かつ、第２の遅延装置８１−１で１サイクルだけ遅延され、信号ｍｅｍｗ１ ｄとして第１の選択装置８２−０、および第２の選択装置８２−１に入力される。
【０５１６】
そして、図１９（ｃ），（ｄ）に示すように、ｃｙｃｌｅ０では、書き込みデータ出力ＭＢＮＫＷ０としてデータｅｖｅｎ０を出力するため、制御信号ｍｂｓｅｌｗ０が、図１７（ｅ）に示すように、データ入力ＭＥＭＷ０を選択するように、第１の選択装置８２−０に供給される。これにより、第１の選択装置８２−０の書き込みデータ出力ＭＢＮＫＷ０は、データｅｖｅｎ０となる。
【０５１７】
ｃｙｃｌｅ１で、系列０からの書き込みデータ入力ＭＥＭＷ０は、図１９（ａ）に示すように、ｅｖｅｎ１のデータになる。また、系列１からの書き込みデータ入力ＭＥＭＷ１は、図１９（ｂ）に示すように、ｏｄｄ１のデータになる。
そして、図１９（ｃ），（ｄ）に示すように、ｃｙｃｌｅ１では、書き込みデータ出力ＭＢＮＫＷ０としてデータｅｖｅｎ１を出力するため、制御信号ｍｂｓｅｌｗ０が、図１９（ｅ）に示すように、データ入力ＭＥＭＷ０を選択するように、第１の選択装置８２−０に供給される。これにより、第１の選択装置８２−０の書き込みデータ出力ＭＢＮＫＷ０は、データｅｖｅｎ１となる。
同様に、制御信号ｍｂｓｅｌｗ１が、図１９（ｆ）に示すように、データ入力ＭＥＭＷ１の１サイクル遅延を生じさせた信号ｍｅｍｗ１ ｄを選択するように、第２の選択装置８２−１に供給される。これにより、第２の選択装置８２−１の書き込みデータ出力ＭＢＮＫＷ１は、データｏｄｄ０となる。
【０５１８】
ｃｙｃｌｅ２で、系列０からの書き込みデータ入力ＭＥＭＷ０は、図１９（ａ）に示すように、ｅｖｅｎ２のデータになる。また、系列１からの書き込みデータ入力ＭＥＭＷ１は、図１９（ｂ）に示すように、ｅｖｅｎ３のデータになる。
そして、図１９（ｃ），（ｄ）に示すように、ｃｙｃｌｅ２では、書き込みデータ出力ＭＢＮＫＷ０としてデータｅｖｅｎ２を出力するため、制御信号ｍｂｓｅｌｗ０が、図１９（ｅ）に示すように、データ入力ＭＥＭＷ０を選択するように、第１の選択装置８２−０に供給される。これにより、第１の選択装置８２−０の書き込みデータ出力ＭＢＮＫＷ０は、データｅｖｅｎ２となる。
同様に、制御信号ｍｂｓｅｌｗ１が、図１９（ｆ）に示すように、データ入力ＭＥＭＷ１の１サイクル遅延を生じさせた信号ｍｅｍｗ１ ｄを選択するように、第２の選択装置８２−１に供給される。これにより、第２の選択装置８２−１の書き込みデータ出力ＭＢＮＫＷ１は、データｏｄｄ１となる。
【０５１９】
ｃｙｃｌｅ３で、系列０からの書き込みデータ入力ＭＥＭＷ０は、図１９（ａ）に示すように、ｏｄｄ２のデータになる。また、系列１からの書き込みデータ入力ＭＥＭＷ１は、図１９（ｂ）に示すように、ｏｄｄ３のデータになる。
そして、図１９（ｃ），（ｄ）に示すように、ｃｙｃｌｅ３では、書き込みデータ出力ＭＢＮＫＷ０としてデータｅｖｅｎ３を出力するため、制御信号ｍｂｓｅｌｗ０が、図１９（ｅ）に示すように、データ入力ＭＥＭＷ１の１サイクル遅延を生じさせた信号ｍｅｍｗ１ ｄを選択するように、第１の選択装置８２−０に供給される。これにより、第１の選択装置８２−０の書き込みデータ出力ＭＢＮＫＷ０は、データｅｖｅｎ３となる。
同様に、制御信号ｍｂｓｅｌｗ１が、図１９（ｆ）に示すように、データ入力ＭＥＭＷ０を選択するように、第２の選択装置８２−１に供給される。これにより、第２の選択装置８２−１の書き込みデータ出力ＭＢＮＫＷ１は、データｏｄｄ２となる。
【０５２０】
以下、ｃｙｃｌｅ２とｃｙｃｌｅ３の内容を繰り返す。
【０５２１】
以上説明したように、本第１３の実施形態によれば、系列０からの書き込みデータ入力ＭＥＭＷ０を１サイクルだけ遅延させ、信号ｍｅｍｗ０ ｄとして第１の選択装置８２−０、および第２の選択装置８２−１に出力する第１の遅延装置８１−０と、系列１からの書き込みデータ入力ＭＥＭＷ１を１サイクルだけ遅延させ、信号ｍｅｍｗ１ ｄとして第１の選択装置８２−０、および第２の選択装置８２−１に出力する第２の遅延装置８１−１と、制御信号ｍｂｓｅｌｗ０の値に応じて、系列０からの書き込み入力ＭＥＭＷ０、系列１からの書き込みデータ入力ＭＥＭＷ１、第１の遅延装置８１−０の出力信号ｍｅｍｗ０ ｄ、および第２の遅延装置８１−１の出力信号ｍｅｍｗ１ ｄのうちのいずれかの値を、書き込みデータ出力ＭＢＮＫＷ０として選択する第１の選択装置８２−０と、制御信号ｍｂｓｅｌｗ１の値に応じて、系列０からの書き込み入力ＭＥＭＷ０、系列１からの書き込みデータ入力ＭＥＭＷ１、第１の遅延装置８１−０の出力信号ｍｅｍｗ０ ｄ、および第２の遅延装置８１−１の出力信号ｍｅｍｗ１ ｄのうちのいずれかの値を、書き込みデータ出力ＭＢＮＫＷ１として選択する第２の選択装置８２−１とを設けたので、上述した第１２の実施形態と同様に、デュアルポートメモリ（２Ｒ２Ｗメモリ）が必要な状況でも、特定のアクセスパターンの場合にはシングルポートメモリ（１Ｒ１Ｗメモリ）を用いて同等の機能を実現することができる。
これにより、メモリ面積の削減、プロセスポータビリティの向上が可能になり、しかも連続したメモリアクセスを実現できる利点がある。
【０５２２】
第１４実施形態
図２０は、本発明の第１４の実施形態を説明するための図であって、本発明に係るインタリーブ装置のデータ読み出し系の一般化した例を示す構成図である。
【０５２３】
本第１４の実施形態は、上述した遅延装置および選択装置を２個ずつ持つ第１２の実施形態を一般化して、ｎ個の読み出しデータ入力ＭＢＮＫＲ０〜ＭＢＮＫＲｎ−１に対してそれぞれ、ｎ個ずつの遅延装置７１Ａ−００〜７１Ａ−０ｎ−１、…、７１Ａ−（ｎ−１）０〜７１Ａ−（ｎ−１）ｎ−１をもち、各遅延装置７１Ａ−００〜７１Ａ−０ｎ−１、…、７１Ａ−（ｎ−１）０〜７１Ａ−（ｎ−１）ｎ−１の遅延信号ｍｂｎｋｒ０ １ｄ〜ｍｂｎｋｒ０ ｎｄ、ｍｂｎｋｒ１ １ｄ〜ｍｂｎｋｒ１ ｎｄをｎ個の選択装置７２Ａ−０〜７２Ａ−ｎ−１に対して並列に入力させた構成となっている。
【０５２４】
すなわち、本インタリーブ装置７０Ａは、ｎ×ｎ個の第１の遅延装置７１Ａ−００〜７１Ａ−０ｎ−１、…、第ｎの遅延装置７１Ａ−（ｎ−１）０〜７１Ａ−（ｎ−１）ｎ−１、およびｎ個の第１〜第ｎの選択装置７２Ａ−０〜７２Ａ−ｎ−１を有している。
【０５２５】
そして、インタリーブ装置７０Ａは、メモリバンクＭＢＮＫ０からの読み出しデータ入力ＭＢＮＫＲ０、メモリバンクＭＢＮＫ１からの読み出しデータ入力ＭＢＮＫＲ１、…、メモリバンクＭＢＮＫｎ−１からの読み出しデータ入力ＭＢＮＫＲｎ−１、および読み出しデータ出力ＭＥＭＲ０〜ＭＥＭＲｎ−１を有し、制御信号ｍｂｓｅｌｒ０，ｍｂｓｅｌｒ１、…、ｍｂｓｅｌｎ−１が供給される。
【０５２６】
第１の遅延装置７１Ａ−００は、たとえばＤ型フリップフロップにより構成され、任意のｋ（０≦ｋ≦ｎ−１）について、ｍサイクル（１≦ｍ≦ｎ）の遅延を生じさせる遅延装置であって、メモリバンクＭＢＮＫ０からの読み出しデータ入力ＭＢＮＫＲ０をｍサイクルだけ遅延させ、信号ｍｂｎｋｒ０ １ｄとして第１〜第ｎの選択装置７２Ａ−０〜７２Ａ−ｎ−１に出力する。
【０５２７】
第１の遅延装置７１Ａ−０１は、たとえばＤ型フリップフロップにより構成され、任意のｋ（０≦ｋ≦ｎ−１）について、ｍサイクル（１≦ｍ≦ｎ）の遅延を生じさせる遅延装置であって、メモリバンクＭＢＮＫ０からの読み出しデータ入力ＭＢＮＫＲ０をｍサイクルだけ遅延させ、信号ｍｂｎｋｒ０ ２ｄとして第１〜第ｎの選択装置７２Ａ−０〜７２Ａ−ｎ−１に出力する。
【０５２８】
同様にして、第１の遅延装置７１Ａ−０ｎ−１は、たとえばＤ型フリップフロップにより構成され、任意のｋ（０≦ｋ≦ｎ−１）について、ｍサイクル（１≦ｍ≦ｎ）の遅延を生じさせる遅延装置であって、メモリバンクＭＢＮＫ０からの読み出しデータ入力ＭＢＮＫＲ０をｍサイクルだけ遅延させ、信号ｍｂｎｋｒ０ ｎｄとして第１〜第ｎの選択装置７２Ａ−０〜７２Ａ−ｎ−１に出力する。
【０５２９】
第ｎの遅延装置７１Ａ−（ｎ−１）０は、たとえばＤ型フリップフロップにより構成され、任意のｋ（０≦ｋ≦ｎ−１）について、ｍサイクル（１≦ｍ≦ｎ）の遅延を生じさせる遅延装置であって、メモリバンクＭＢＮＫｎ−１からの読み出しデータ入力ＭＢＮＫＲｎ−１をｍサイクルだけ遅延させ、信号ｍｂｎｋｒｎ−１ １ｄとして第１〜第ｎの選択装置７２Ａ−０〜７２Ａ−ｎ−１に出力する。
【０５３０】
第ｎの遅延装置７１Ａ−（ｎ−１）１は、たとえばＤ型フリップフロップにより構成され、任意のｋ（０≦ｋ≦ｎ−１）について、ｍサイクル（１≦ｍ≦ｎ）の遅延を生じさせる遅延装置であって、メモリバンクＭＢＮＫｎ−１からの読み出しデータ入力ＭＢＮＫＲｎ−１をｍサイクルだけ遅延させ、信号ｍｂｎｋｒｎ−１ ２ｄとして第１〜第ｎの選択装置７２Ａ−０〜７２Ａ−ｎ−１に出力する。
【０５３１】
同様にして、第ｎの遅延装置７１Ａ−（ｎ−１）ｎ−１は、たとえばＤ型フリップフロップにより構成され、任意のｋ（０≦ｋ≦ｎ−１）について、ｍサイクル（１≦ｍ≦ｎ）の遅延を生じさせる遅延装置であって、メモリバンクＭＢＮＫｎ−１からの読み出しデータ入力ＭＢＮＫＲｎ−１をｍサイクルだけ遅延させ、信号ｍｂｎｋｒｎ−１ ｎｄとして第１〜第ｎの選択装置７２Ａ−０〜７２Ａ−ｎ−１に出力する。
【０５３２】
第１の選択装置７２Ａ−０は、メモリバンクＭＢＮＫ０からの読み出しデータ入力ＭＢＮＫＲ０、メモリバンクＭＢＮＫ１からの読み出しデータ入力ＭＢＮＫＲ１、…、メモリバンクＭＢＮＫｎ−１からの読み出しデータ入力ＭＢＮＫＲｎ−１、第１の遅延装置７１Ａ−００〜７１Ａ−０ｎ−１の出力信号ｍｂｎｋｒ０ １ｄ〜ｍｂｎｋｒ０ ｎｄ、…，第ｎの遅延装置７１Ａ−（ｎ−１）０〜７１Ａ−（ｎ−１）ｎ−１の出力信号ｍｂｎｋｒ１ １ｄ〜ｍｂｎｋｒ１ ｎｄを入力とし、制御信号ｍｂｓｅｌｒ０の値に応じて、メモリバンクＭＢＮＫ０からの読み出しデータ入力ＭＢＮＫＲ０、メモリバンクＭＢＮＫ１からの読み出しデータ入力ＭＢＮＫＲ１、…、メモリバンクＭＢＮＫｎ−１からの読み出しデータ入力ＭＢＮＫＲｎ−１、第１の遅延装置７１Ａ−００〜７１Ａ−０ｎ−１の出力信号ｍｂｎｋｒ０ １ｄ〜ｍｂｎｋｒ０ ｎｄ、…、第ｎの遅延装置７１Ａ−（ｎ−１）０〜７１Ａ−（ｎ−１）ｎ−１の出力信号ｍｂｎｋｒ１ １ｄ〜ｍｂｎｋｒ１ ｎｄのうちのいずれかの値を、読み出しデータ出力ＭＥＭＲ０として選択する。
【０５３３】
同様にして、第１の選択装置７２Ａ−ｎ−１は、メモリバンクＭＢＮＫ０からの読み出しデータ入力ＭＢＮＫＲ０、メモリバンクＭＢＮＫ１からの読み出しデータ入力ＭＢＮＫＲ１、…、メモリバンクＭＢＮＫｎ−１からの読み出しデータ入力ＭＢＮＫＲｎ−１、第１の遅延装置７１Ａ−００〜７１Ａ−０ｎ−１の出力信号ｍｂｎｋｒ０ １ｄ〜ｍｂｎｋｒ０ ｎｄ、…、第ｎの遅延装置７１Ａ−（ｎ−１）０〜７１Ａ−（ｎ−１）ｎ−１の出力信号ｍｂｎｋｒ１ １ｄ〜ｍｂｎｋｒ１ ｎｄを入力とし、制御信号ｍｂｓｅｌｒｎ−１の値に応じて、メモリバンクＭＢＮＫ０からの読み出しデータ入力ＭＢＮＫＲ０、メモリバンクＭＢＮＫ１からの読み出しデータ入力ＭＢＮＫＲ１、…、メモリバンクＭＢＮＫｎ−１からの読み出しデータ入力ＭＢＮＫＲｎ−１、第１の遅延装置７１Ａ−００〜７１Ａ−０ｎ−１の出力信号ｍｂｎｋｒ０ １ｄ〜ｍｂｎｋｒ０ ｎｄ、…，第ｎの遅延装置７１Ａ−（ｎ−１）０〜７１Ａ−（ｎ−１）ｎ−１の出力信号ｍｂｎｋｒ１ １ｄ〜ｍｂｎｋｒ１ ｎｄのうちのいずれかの値を、読み出しデータ出力ＭＥＭＲｎ−１として選択する。
【０５３４】
以上の構成を有するインタリーブ装置７０Ａにおいては、上述したように、ｎ個の読み出しデータ入力ＭＢＮＫＲ０〜ＭＢＮＫＲｎ−１に対してそれぞれ、ｎ個ずつの遅延装置７１Ａ−００〜７１Ａ−０ｎ−１、…、７１Ａ−（ｎ−１）０〜７１Ａ−（ｎ−１）ｎ−１をもち、各遅延装置７１Ａ−００〜７１Ａ−０ｎ−１、…、７１Ａ−（ｎ−１）０〜７１Ａ−（ｎ−１）ｎ−１の遅延信号ｍｂｎｋｒ０ １ｄ〜ｍｂｎｋｒ０ ｎｄ、ｍｂｎｋｒ１ １ｄ〜ｍｂｎｋｒ１ ｎｄをｎ個の選択装置７２Ａ−０〜７２Ａ−ｎ−１に対して並列に入力させた構成となっている以外は、第１２の実施形態と同様であり、各部の機能も同様であることから、動作については、そのタイミングチャートを図２１に示し、ここでは詳細な説明は省略する。
【０５３５】
したがって、本第１４の実施形態によれば、上述した第１２の実施形態と同様に、デュアルポートメモリ（２Ｒ２Ｗメモリ）が必要な状況でも、特定のアクセスパターンの場合にはシングルポートメモリ（１Ｒ１Ｗメモリ）を用いて同等の機能を実現することができる。
これにより、メモリ面積の削減、プロセスポータビリティの向上が可能になり、しかも連続したメモリアクセスを実現できる利点がある。
【０５３６】
第１５実施形態
図２２は、本発明の第１５の実施形態を説明するための図であって、本発明に係るインタリーブ装置のデータ書き込み系の一般化した例を示す構成図である。
【０５３７】
本第１５の実施形態は、上述した遅延装置および選択装置を２個ずつ持つ第１２の実施形態の一般化して、ｎ−１個の読み出しデータ入力ＭＢＮＫＲ１〜ＭＢＮＫＲｎ−１に対してそれぞれ第２の遅延装置８１Ａ−１、…、第ｎの遅延装置８１Ａ−ｎ−１をもち、各遅延装置８１Ａ−１〜８１Ａ−ｎ−１の遅延信号ｍｅｍｗ１ １ｄ〜ｍｅｍｗｎ−１ ｎ−１ｄをｎ個の選択装置８２Ａ−０〜８２Ａ−ｎ−１に対して並列に入力させた構成となっている。
【０５３８】
すなわち、本インタリーブ装置８０Ａは、ｎ−１個の第２〜第ｎの遅延装置８１Ａ−１〜８１Ａ−ｎ−１、およびｎ個の第１〜第ｎの選択装置８２Ａ−０〜８２Ａ−ｎ−１を有している。
【０５３９】
そして、インタリーブ装置８０Ａは、系列０からの書き込みデータ入力ＭＥＭＷ０、系列１からの書き込みデータ入力ＭＥＭＷ１、…、系列ｎ−１からの書き込みデータ入力ＭＥＭＷｎ−１、メモリバンクＭＢＮＫ０への書き込みデータ出力ＭＢＮＫＷ０、メモリバンクＭＢＮＫ１への書き込みデータ出力ＭＢＮＫＷ１、…、メモリバンクＭＢＮＫｎ−１への書き込みデータ出力ＭＢＮＫＷｎ−１を有し、制御信号ｍｂｓｅｌｗ０，ｍｂｓｅｌｗ１、…、ｍｂｓｅｌｗｎ−１が供給される。
【０５４０】
第２の遅延装置８１Ａ−１は、たとえばＤ型フリップフロップにより構成され、任意のｋ（０≦ｋ≦ｎ−１）について、ｍサイクル（１≦ｍ≦ｎ）の遅延を生じさせる遅延装置であって、系列１からの書き込みデータ入力ＭＥＭＷ１を１サイクルだけ遅延させ、信号ｍｅｍｗ１ ｄとして第１の選択装置８２Ａ−０〜第ｎの選択装置８２Ａ−ｎ−１に出力する。
【０５４１】
同様にして、第ｎの遅延装置８１Ａ−ｎ−１は、たとえばＤ型フリップフロップにより構成され、任意のｋ（０≦ｋ≦ｎ−１）について、ｍサイクル（１≦ｍ≦ｎ）の遅延を生じさせる遅延装置であって、系列ｎ−１からの書き込みデータ入力ＭＥＭＷｎ−１を１サイクルだけ遅延させ、信号ｍｅｍｗｎ−１ ｎ−１ｄとして第１の選択装置８２Ａ−０〜第ｎの選択装置８２Ａ−ｎ−１に出力する。
【０５４２】
第１の選択装置８２Ａ−０は、系列０からの書き込み入力ＭＥＭＷ０、系列１からの書き込みデータ入力ＭＥＭＷ１、…、系列ｎ−１からの書き込みデータ入力ＭＥＭＷｎ−１、第２の遅延装置８１Ａ−１の出力信号ｍｅｍｗ１ １ｄ、…、第ｎの遅延装置８１Ａ−ｎ−１の出力信号ｍｅｍｗｎ−１ ｎ−１ｄを入力とし、制御信号ｍｂｓｅｌｗ０の値に応じて、系列０からの書き込み入力ＭＥＭＷ０、系列１からの書き込みデータ入力ＭＥＭＷ１、…、系列ｎ−１からの書き込みデータ入力ＭＥＭＷｎ−１、第２の遅延装置８１Ａ−１の出力信号ｍｅｍｗ１ １ｄ、…、第ｎの遅延装置８１Ａ−ｎ−１の出力信号ｍｅｍｗｎ−１ ｎ−１ｄのうちのいずれかの値を、書き込みデータ出力ＭＢＮＫＷ０として選択する。
【０５４３】
第２の選択装置８２Ａ−１は、系列０からの書き込み入力ＭＥＭＷ０、系列１からの書き込みデータ入力ＭＥＭＷ１、…、系列ｎ−１からの書き込みデータ入力ＭＥＭＷｎ−１、第２の遅延装置８１Ａ−１の出力信号ｍｅｍｗ１ １ｄ、…、第ｎの遅延装置８１Ａ−ｎ−１の出力信号ｍｅｍｗｎ−１ ｎ−１ｄを入力とし、制御信号ｍｂｓｅｌｗ１の値に応じて、系列０からの書き込み入力ＭＥＭＷ０、系列１からの書き込みデータ入力ＭＥＭＷ１、…、系列ｎ−１からの書き込みデータ入力ＭＥＭＷｎ−１、第２の遅延装置８１Ａ−１の出力信号ｍｅｍｗ１ １ｄ、…、第ｎの遅延装置８１Ａ−ｎ−１の出力信号ｍｅｍｗｎ−１ ｎ−１ｄのうちのいずれかの値を、書き込みデータ出力ＭＢＮＫＷ１として選択する。
【０５４４】
同様にして、第ｎの選択装置８２Ａ−ｎ−１は、系列０からの書き込み入力ＭＥＭＷ０、系列１からの書き込みデータ入力ＭＥＭＷ１、…、系列ｎ−１からの書き込みデータ入力ＭＥＭＷｎ−１、第２の遅延装置８１Ａ−１の出力信号ｍｅｍｗ１ １ｄ、…、第ｎの遅延装置８１Ａ−ｎ−１の出力信号ｍｅｍｗｎ−１ ｎ−１ｄを入力とし、制御信号ｍｂｓｅｌｗｎ−１の値に応じて、系列０からの書き込み入力ＭＥＭＷ０、系列１からの書き込みデータ入力ＭＥＭＷ１、…、系列ｎ−１からの書き込みデータ入力ＭＥＭＷｎ−１、第２の遅延装置８１Ａ−１の出力信号ｍｅｍｗ１ １ｄ、…、第ｎの遅延装置８１Ａ−ｎ−１の出力信号ｍｅｍｗｎ−１ ｎ−１ｄのうちのいずれかの値を、書き込みデータ出力ＭＢＮＫＷｎ−１として選択する。
【０５４５】
以上の構成を有するインタリーブ装置８０Ａにおいては、上述したように、第１３の実施形態を一般化して、ｎ−１個の読み出しデータ入力ＭＢＮＫＲ１〜ＭＢＮＫＲｎ−１に対してそれぞれ第２の遅延装置８１Ａ−１、…、第ｎの遅延装置８１Ａ−ｎ−１をもち、各遅延装置８１Ａ−１〜８１Ａ−ｎ−１の遅延信号ｍｅｍｗ１ １ｄ〜ｍｅｍｗｎ−１ ｎ−１ｄをｎ個の選択装置８２Ａ−０〜８２Ａ−ｎ−１に対して並列に入力させた構成となっている以外は、第１３の実施形態と同様であり、各部の機能も同様であることから、動作については、そのタイミングチャートを図２３に示し、ここでは詳細な説明は省略する。
【０５４６】
したがって、本第１５の実施形態によれば、上述した第１３の実施形態と同様に、デュアルポートメモリ（２Ｒ２Ｗメモリ）が必要な状況でも、特定のアクセスパターンの場合にはシングルポートメモリ（１Ｒ１Ｗメモリ）を用いて同等の機能を実現することができる。
これにより、メモリ面積の削減、プロセスポータビリティの向上が可能になり、しかも連続したメモリアクセスを実現できる利点がある。
【０５４７】
第１６実施形態
図２４は、本発明の第１６の実施形態に係る演算システムを示す構成図である。
【０５４８】
本演算システム９０では、たとえば上述した第１の実施形態〜第９の実施形態に係る演算器の配列や、演算実行時の係数パラメータ等を、構成情報に基づいて再構成可能な演算装置が用いられる。
そして、本演算システム９０は、演算実行部、演算実行部の再構成のための構成情報を格納する構成情報記憶部を含み、この構成情報記憶部は、ＣＰＵを用い演算実行部の構成情報の書き換えにおいて、複数の構成情報を記憶するためにリング状に構成された記憶部を持ち、演算実行時に使用する構成情報記憶部と、書き換えを行うための構成情報記憶部とを分離し、構成情報の書き換えに伴うオーバーヘッドを低減し、または、高速に複数の構成を切り換えることができるように構成される。
【０５４９】
具体的には、本演算システム９０は、図２４に示すように、制御回路としてのＣＰＵ９１、構成情報記憶部９２、および演算実行部９３を主構成要素として有している。
【０５５０】
ＣＰＵ９１は、たとえばバスを介して、構成情報記憶部９２に対してアクセスすることが可能になっている。
そして、ＣＰＵ９１は、演算実行部９３の再構成のための構成情報ＣＤを、書き込み信号ＣＷＲを用いて構成情報記憶部９２に書き込む。
また、ＣＰＵ９１は、シフト信号ＣＥＸを用いて演算実行部９３の再構成のための構成情報を既に記憶されている他の情報に変更させる。
【０５５１】
構成情報記憶部９２は、ＣＰＵ９１からバスを介して構成情報が書き込まれ、、書き込まれた構成情報を演算実行部９３に出力する。
構成情報記憶部９２は、図２４に示すように、たとえば「構成情報１」、「構成情報２」、…という各構成情報の記憶部が、それぞれ複数の構成情報を保持できるようにしている。
その中の１つは演算実行時の構成情報を記憶するため、別の１つは外部からの構成情報の書き込みを行うための記憶領域となる。
さらに、これらの構成情報の内容は一斉に瞬時に入れ替えが可能になっている。
これにより、演算実行部９３が演算を行っている間に、別のページの内容を同時に書き換えることができ、従来、図２５（ａ）に示すように、構成情報の書き換えに必要な時間的オーバーヘッドが大きかったという問題が、図２５（ｂ）に示すように、構成情報の書き換えに必要な時間的オーバーヘッドを、演算の実行時間の裏側に隠蔽することができる。
【０５５２】
図２６は、４つの構成情報を保持することができる構成情報記憶部の構成例を示す図である。
【０５５３】
この構成情報記憶部９２は、図２６に示すように、レジスタ９２１〜９２４、選択装置９２５、およびＯＲゲート９２６を有している。
また、図２６において、ＴCDは構成情報ＣＤの入力端子、ＴCWR は書き込み信号ＣＷＲの入力端子、ＴCEX はシフト信号ＣＥＸの入力端子、ＴCCLKはクロック入力端子、ＴOUT は記憶した構成情報の演算実行部９３への出力端子をそれぞれ示している。
【０５５４】
レジスタ９２１〜９２４（ＣＤ１〜ＣＤ４）は、構成情報を記憶するためのレジスタであり、これらのレジスタ９２１〜９２４はリング状に接続されている。
具体的には、レジスタ９２１の出力がレジスタ９２４の入力、および構成情報の出力端子ＴOUT に接続され、レジスタ９２４の出力がレジスタ９２３の入力に接続され、レジスタ９２３の出力が選択装置９２５の第１の入力端子「０」を介してレジスタ９２２の入力に接続され、レジスタ９２２の出力がレジスタ９２１の入力に接続されている。
【０５５５】
また、選択装置９２５の第２の入力端子「１」が構成情報ＣＤの入力端子ＴCDに接続されている。選択装置９２５の制御端子が書き込み信号ＣＷＲの入力端子ＴCWR に接続されている。
選択装置９２５は、書き込み信号ＣＷＲが論理「１」で制御端子に供給されると入力端子ＴCDに入力される構成情報ＣＤを選択して、レジスタ９２２に入力させる。
一方、選択装置９２５は、書き込み信号ＣＷＲが論理「０」で制御端子に供給されるとレジスタ９２３の出力情報を選択して、レジスタ９２２に入力させる。
【０５５６】
２入力ＯＲゲート９２６は、第１の入力端子が書き込み信号ＣＷＲの入力端子ＴCWR に接続され、第２の入力端子がシフト信号ＣＥＸの入力端子ＴCEX に接続され、出力端子がレジスタ９２２の制御端子に接続されている。
【０５５７】
また、レジスタ９２１，９２３，９２４の制御端子はシフト信号ＣＥＸの入力端子ＴCEX に接続されており、また、各レジスタ９２１〜９２４のクロック端子がクロック入力端子ＴCCLKに接続されている。
【０５５８】
そして、これらのレジスタ９２１〜９２４は、その先に接続される「被再構成部」が必要とする構成情報のビット数を記憶できる。
これらの中で、演算実行部９３の構成情報として、レジスタ９２１（ＣＤ１）の内容が使用される。
レジスタ９２１の出力は、演算実行部９３の構成変更回路に直結されているため、この値が書き換えられると演算実行部９３のハードウェア構成に即座に反映される。
このため、演算実行部９３の動作中に外部からレジスタ９２１に対して書き込みを行うと実行中の演算結果に影響を与えることになる。
これを避けるために、外部からの構成情報ＣＤの書き込みはレジスタ９２２（ＣＤ２）に対して行われる。
【０５５９】
構成情報ＣＤの書き換えは、入力端子ＴCDに構成情報ＣＤを入力し、書き込み信号ＣＷＲを１にすることで行われる。
この書き込み操作では、レジスタ９２１（ＣＤ１）の内容は変化しない。
【０５６０】
新たに書き込んだ構成情報ＣＤを演算実行部９３の構成に反映するためには、書き込み信号「ＣＷＲ」を０、シフト信号「ＣＥＸ」を１にしてレジスタ９２２（ＣＤ２）の内容をレジスタ９２１（ＣＤ１）に転送する。
この時同時に、レジスタ９２１（ＣＤ１）→レジスタ９２４（ＣＤ４）→レジスタ９２３（ＣＤ３）→レジスタ９２２（ＣＤ２）というように構成情報がリングの中でローテーションして保持される。
【０５６１】
構成情報ＣＤの入れ替えは、すべての構成情報記憶部９２に対して同時に行われるので、クロック「ＣＣＬＫ」１サイクル分で完了する。
また、新しい構成情報を書き込まずに上記の入れ替え操作だけを行えば、リングを構成するレジスタ数分の過去の構成情報を高速に切り替えて再使用することができる。
【０５６２】
なお、複数の構成情報を記憶できる記憶部を用意する場合、任意の構成情報を順番に関係なく自由に入れ替え可能にしたいという欲求が生じる場合がある。
しかしそのためには、記憶部の構成情報入れ替え制御手段が複雑になり、システム全体の構成情報の情報量が増えてくると、記憶部が占める面積や消費電力といったオーバーヘッドが無視できなくなってくる。
【０５６３】
本第１６の実施形態に係るリング状の構成情報の入れ替え手段は、記憶している任意の構成情報ＣＤをすぐに呼び出すことはできないが、記憶部の回路構成と入れ替えのための制御信号を単純化できるという特徴を備える。
記憶している構成情報ＣＤの入れ替えの自由度が制限されるという制約は、１つの信号処理アプリケーション等に含まれる複数の演算処理を、構成を切り替えながら実行するようなケースを考えた場合、再構成がアプリケーションのアルゴリズムにしたがって、決まったパターンで繰り返し行われると考えられ、その限りにおいては間題にならない。
【０５６４】
演算実行部９３は、たとえば図１に示すような演算装置等と同様の構成を有し、構成情報記憶部９２による構成情報に基づいて係数、データ等の経路を選択するための選択装置（ＳＥＬ）９３１−０〜９３１−２、構成情報記憶部９２による構成情報（演算内容を指示するための制御信号）に基づいて算術理演算を行うＡＬＵ９３２、構成情報記憶部９２により構成情報（演算内容を指示するための制御信号）に基づいて積和演算を行うＭＡＣ構造の演算器９３３を有し、構成情報記憶部９２による構成情報に基づいて、演算器の配列や、演算実行時の係数パラメータ等を再構成して、指定の演算を行い、この演算結果をたとえば図示しないデータメモリ等に出力する。
【０５６５】
次に、上記構成による動作を説明する。
なお、ここでは、構成情報記憶部９２の４つのレジスタ９２１〜９２４にはそれぞれ構成情報ＣＤが保持されているものとする。
【０５６６】
この場合、演算実行部９３の構成情報として、構成情報記憶部９２のレジスタ９２１（ＣＤ１）の内容が使用される。
レジスタ９２１の出力は、演算実行部９３の構成変更回路に直結されている。このため、演算実行部９３においては、構成情報記憶部９２による構成情報に基づいて、演算器の配列や、演算実行時の係数パラメータ等が再構成されて、指定の演算が行われる。そして、演算結果がたとえば図示しないデータメモリ等に出力される。
【０５６７】
ここで、演算実行部９３に供給する構成情報ＣＤの値を書き換える場合には、演算実行部９３の動作中に外部からレジスタ９２１に対して書き込みを行うと実行中の演算結果に影響を与えることになる。
これを避けるために、外部からの構成情報ＣＤの書き込みはレジスタ９２２（ＣＤ２）に対して行われる。
【０５６８】
構成情報ＣＤの書き換えは、ＣＰＵ９１から入力端子ＴCDに構成情報ＣＤが入力され、書き込み信号ＣＷＲが「１」に設定される。これにより、レジスタ９２２に対してＣＰＵ９１から供給された構成情報ＣＤが書き込まれる。
なお、この書き込み操作では、レジスタ９２１（ＣＤ１）の内容は変化しない。
【０５６９】
次に、新たに書き込んだ構成情報ＣＤを演算実行部９３の構成に反映するために、ＣＰＵ９１により書き込み信号ＣＷＲが「０」、シフト信号ＣＥＸが「１」に設定される。これにより、レジスタ９２２（ＣＤ２）の内容がレジスタ９２１（ＣＤ１）に転送される。
この時同時に、レジスタ９２１（ＣＤ１）→レジスタ９２４（ＣＤ４）→レジスタ９２３（ＣＤ３）→レジスタ９２２（ＣＤ２）というように構成情報がリングの中でローテーションして保持される。
【０５７０】
構成情報ＣＤの入れ替えは、すべての構成情報記憶部９２に対して同時に行われるので、クロック「ＣＣＬＫ」１サイクル分で完了する。
【０５７１】
以上説明したように、本第１６の実施形態によれば、演算器の配列等のハードウェア構成を再構成可能な演算装置を有する演算システム９０において、構成情報を保持する構成情報記憶部９２を、リング状に結合した複数のレジスタ９２１〜９２４で構成し、その中の一つの構成情報を用いて演算処理を行っている間に、別の構成情報記憶部の内容を書き換えることができるように構成情報書き換え部、および再構成可能な演算実行部９３と接続し、また、各レジスタ９２１〜９２４に記憶された構成情報は、リング内をローテーションすることによって切り替えが可能としたことから、以下の効果を得られる。
すなわち、演算器が演算処理を実行中であっても、同時に次に使用する構成情報を設定することが可能とし、また、新たな構成情報を書き込まずに、構成の切り替えのみを行うことによって過去に使用した構成情報を再利用可能となる利点がある。
【０５７２】
すなわち、ハードウェアの再構成を演算実行と同時に行えるようになり、このオーバーヘッドを、演算の実行時間の裏側に隠蔽できるようになる。
また、複数の構成情報を同時に保持でき、それらを瞬時に切り替えることができる特性により、繰り返し使用される構成情報を同時に記憶しておき、それらを切り替えて使用することで、再構成のためのオーバーヘッドをほぼ「ゼロ」にすることも可能となる利点がある。
【０５７３】
なお、本第１６の実施形態においては、４つの構成情報を保持できる構成を示しているが、必要に応じて２以上の任意の数の構成情報を保持できるようにしてもよい。
【図面の簡単な説明】
【０５７４】
【図１】本発明に係る演算装置の第１の実施形態を示す構成図である。
【図２】本第１の実施形態の動作を説明するための図であって、図１の演算装置において、ｎ＝４で、係数入出力、データ入出力が４、カスケード入力が３である場合の装置の構成を示す図である。
【図３】本発明に係る演算装置の第２の実施形態を示す構成図である。
【図４】本第２の実施形態の動作を説明するための図であって、図３の演算装置において、ｎ＝４である場合の装置の構成を示す図である。
【図５】本発明に係る演算装置の第３の実施形態を示す構成図である。
【図６】本発明に係る演算装置の第４の実施形態を示す構成図である。
【図７】本発明に係る演算装置の第５の実施形態を示す構成図である。
【図８】本発明に係る演算装置の第６の実施形態を示す構成図である。
【図９】本発明に係る演算装置の第７の実施形態を示す構成図である。
【図１０】本発明に係る演算装置の第８の実施形態を示す構成図である。
【図１１】本発明に係る演算装置の第９の実施形態を示す構成図である。
【図１２】本発明の第１０の実施形態に係る演算システムを示す構成図である。
【図１３】本発明に係るアドレス生成装置によって生成されるアドレスと制御信号により選択される経路選択情報の選択タイミング例を示す図である。
【図１４】本発明の第１１の実施形態を説明する図であって、本発明に係る演算システムに適用可能なアドレス生成装置の一例を示す構成図である。
【図１５】図１４の動作を説明するための図である。
【図１６】本発明の第１２の実施形態を説明するための図であって、本発明に係るインタリーブ装置のデータ読み出し系の一例を示す構成図である。
【図１７】図１６の読み出し系インタリーブ装置の動作を説明するためのタイミングチャートである。
【図１８】本発明の第１３の実施形態を説明するための図であって、本発明に係るインタリーブ装置のデータ書き込み系の一例を示す構成図である。
【図１９】図１８の書き込み系インタリーブ装置の動作を説明するためのタイミングチャートである。
【図２０】本発明の第１４の実施形態を説明するための図であって、本発明に係るインタリーブ装置のデータ読み出し系の一般化した例を示す構成図である。
【図２１】図２０の読み出し系インタリーブ装置のタイミングチャートである。
【図２２】本発明の第１５の実施形態を説明するための図であって、本発明に係るインタリーブ装置のデータ書き込み系の一般化した例を示す構成図である。
【図２３】図２２の書き込み系インタリーブ装置のタイミングチャートである。
【図２４】本発明の第１６の実施形態に係る演算システムを示す構成図である。
【図２５】本発明に係る構成情報記憶部を設けることによる効果を説明するための図である。
【図２６】本発明に係る構成情報記憶部の具体的な構成例を示す図である。
【符号の説明】
【０５７５】
１０，１０Ａ，１０−１〜１０−ｎ，１０Ａ−１〜１０Ａ−３…演算装置、１１…第１の選択装置（ＳＥＬＡ）、１２…第２の選択装置（ＳＥＬＢ）、１３…第３の選択装置（ＳＥＬＣ）、１４…ＡＬＵ、１５…ＭＡＣ、１６…第４の選択装置（ＳＥＬＥ）、１７…レジスタ（ＲＥＧ）、１８−０〜１８−ｋ…係数入力遅延用ＦＩＦＯ(C0FIFO 〜CkFIFO) 、１９−０〜１９−ｍ…データ入力遅延用ＦＩＦＯ(D0FIFO 〜DmFIFO) 、２０…演算装置、２１−０，２１−１…シフト演算器（ＳＦＴ０，ＳＦＴ１）、２２−０，２２−１…入力選択装置（ＲＳＥＬ０，ＲＳＥＬ１）、２３…バタフライ演算器（ＢＴＦ０）、２４−０，２４−１…出力選択装置（ＤＳＥＬ０，ＤＳＥＬ１）、２５−０，２５−１…出力選択装置（ＷＳＥＬ０，ＷＳＥＬ１）、２０Ａ…演算装置、２１Ａ−０〜２１Ａ−３…シフト演算器（ＳＦＴ０〜ＳＦＴ３）、２２Ａ−０〜２２Ａ−３…入力選択装置（ＲＳＥＬ０〜ＲＳＥＬ３）、２３Ａ−０，２３Ａ−１…バタフライ演算器（ＢＴＦ０，ＢＴＦ１）、２４Ａ−０〜２４Ａ−３…出力選択装置（ＤＳＥＬ０〜ＤＳＥＬ３）、２５Ａ−０〜２５Ａ−３…出力選択装置（ＷＳＥＬ０〜ＷＳＥＬ３）、２０Ｂ…演算装置、２３Ｂ−２…バタフライ演算器（ＢＴＦ２）、２５Ｂ−０〜２５Ｂ−３…出力選択装置（ＷＳＥＬ０〜ＷＳＥＬ３）、２０Ｃ…演算装置、２２Ｃ−０〜２２Ｃ−１５…入力選択装置（ＲＳＥＬ０〜ＲＳＥＬ７，ＢＳＥＬ０〜ＢＳＥＬ７）、２３Ｃ−０〜２３Ｃ−７…バタフライ演算器（ＢＴＦ０〜ＢＴＦ７）、２４Ｃ−０〜２４Ａ−７…出力選択装置（ＤＳＥＬ０〜ＤＳＥＬ７）、２５Ｃ−０〜２５Ｃ−７…出力選択装置（ＷＳＥＬ０〜ＷＳＥＬ７）、２０Ｄ…演算装置、２２Ｄ−０〜２２Ｄ−７…入力選択装置（ＲＳＥＬ０〜ＲＳＥＬ７）、２３Ｄ−０〜２３Ｃ−６…バタフライ演算器（ＢＴＦ０〜ＢＴＦ６）、２４Ｄ−０〜２４Ｄ−７…出力選択装置（ＤＳＥＬ０〜ＤＳＥＬ７）、２５Ｄ−０〜２５Ｄ−７…出力選択装置（ＷＳＥＬ０〜ＷＳＥＬ７）、３０…演算装置、３１…第１の演算装置（ＰＵ）、３２…第２の演算装置（ＢＴＦ）、３０Ａ…演算装置、３１Ａ…第１の演算装置（ＰＵ）、３２Ａ−０（ＢＴＦＬａ０），…，３２Ａ−ｋ（ＢＴＦＬａｋ）、３２Ｂ−０（ＢＴＦＬｂ０），…，３２Ｂ−ｍ（ＢＴＦＬｂｍ）、３２Ｃ−０（ＢＴＦＬｃ０），…，３２Ｃ−ｎ（ＢＴＦＬｃｎ）…第２の演算装置、４０…演算システム、４１…ＣＰＵ、４２…第１の経路選択情報メモリ、４３…第２の経路選択情報メモリ、４４…選択装置、４５…アドレス生成装置、４６…データメモリ、４７…再構成可能な演算装置、５０…アドレス生成装置、５１−０〜５１−ｘ…演算器（ＩＮＣＤＥＣ０〜ＩＮＣＤＥＣＤｘ）、５２−０〜５２−２…セレクタ付き演算器（ＳＵＭ０〜ＳＵＭ２）、５３−０〜５３−ｘ…セクレタ（ＳＥＬ０〜ＳＥＬｘ）、５４−０〜５４−ｘ…カウンタ（Ｃｏｕｎｔｅｒ０〜Ｃｏｕｎｔｅｒｘ）、５５−０…比較器（ＥＮＤ）、５６−０〜５６−ｘ…比較器（ＥＮＤ１〜ＥＮＤｘ）、５７−０〜５７−２…比較器（ＩＮＣ０〜ＩＮＣ２）、５８…セレクタ付き演算器（ＡＤＲＳＵＭ）、５９…ビット反転器（ＢＲＶ）、６０…マスク生成器（ＡＤＲＭＳＫ）、６１…制御信号生成器���ＣＴＲＬＧＥＮ）、７０…読み出し系インタリーブ装置、７１−０…第１の遅延装置（ＤＦＦ０）、７１−１…第２の遅延装置（ＤＦＦ１）、７２−０…第１の選択装置（ｓｅｌ０）、７２−１…第２の選択装置（ｓｅｌ１）、８０…書き込み系インタリーブ装置、８１−０…第１の遅延装置（ＤＦＦ０）、８１−１…第２の遅延装置（ＤＦＦ１）、８２−０…第１の選択装置（ｓｅｌ０）、８２−１…第２の選択装置（ｓｅｌ１）、７０Ａ…読み出し系インタリーブ装置、７１Ａ−００〜７１Ａ−０ｎ−１…第１の遅延装置、７１Ａ−（ｎ−１）０〜７１Ａ−（ｎ−１）ｎ−１…第ｎの遅延装置、７２Ａ−０〜７２Ａ−ｎ−１…第１〜第ｎの選択装置、８０Ａ…インタリーブ装置、８１Ａ−１〜８１Ａ−ｎ−１…第２の遅延装置〜第ｎの遅延装置、８２Ａ−０〜８２Ａ−ｎ−１…第１〜第ｎの選択装置、９０…演算システム、９１…ＣＰＵ、９２…構成情報記憶部、９２１〜９２４（ＣＤ１〜ＣＤ４）…レジスタ、９２５…選択装置、９２６…ＯＲゲート、９３…演算実行部、９３１−０〜９３１−２…選択装置、９３２…ＡＬＵ、９３３…ＭＡＣ構造の演算器。
【図１】
2006185459.tif 000003
【図２】
2006185459.tif 000004
【図３】
2006185459.tif 000005
【図４】
2006185459.tif 000006
【図５】
2006185459.tif 000007
【図６】
2006185459.tif 000008
【図７】
2006185459.tif 000009
【図８】
2006185459.tif 000010
【図９】
2006185459.tif 000011
【図１０】
2006185459.tif 000012
【図１１】
2006185459.tif 000013
【図１２】
2006185459.tif 000014
【図１３】
2006185459.tif 000015
【図１４】
2006185459.tif 000016
【図１５】
2006185459.tif 000017
【図１６】
2006185459.tif 000018
【図１７】
2006185459.tif 000019
【図１８】
2006185459.tif 000020
【図１９】
2006185459.tif 000021
【図２０】
2006185459.tif 000022
【図２１】
2006185459.tif 000023
【図２２】
2006185459.tif 000024
【図２３】
2006185459.tif 000025
【図２４】
2006185459.tif 000026
【図２５】
2006185459.tif 000027
【図２６】
2006185459.tif 000028