JP3846196B2 - Arithmetic unit and parallel arithmetic unit - Google Patents

Arithmetic unit and parallel arithmetic unit Download PDF

Info

Publication number
JP3846196B2
JP3846196B2 JP2001012524A JP2001012524A JP3846196B2 JP 3846196 B2 JP3846196 B2 JP 3846196B2 JP 2001012524 A JP2001012524 A JP 2001012524A JP 2001012524 A JP2001012524 A JP 2001012524A JP 3846196 B2 JP3846196 B2 JP 3846196B2
Authority
JP
Japan
Prior art keywords
output
data
signal
control signal
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2001012524A
Other languages
Japanese (ja)
Other versions
JP2002215603A (en
Inventor
邦彦 小澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2001012524A priority Critical patent/JP3846196B2/en
Priority to US10/050,849 priority patent/US7020673B2/en
Publication of JP2002215603A publication Critical patent/JP2002215603A/en
Application granted granted Critical
Publication of JP3846196B2 publication Critical patent/JP3846196B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、DSP(Digital Signal Processor)等に用いられ、算術論理演算を行う算術論理演算器(ALU:Arithmetic Logic Unit )や積和演算を繰り返すMAC構造(Multiply-Accumulate Architecture)の演算器等を含み、外部からの制御により再構成可能な演算装置に関するものである。
【0002】
【従来の技術】
外部からの制御により再構成可能な演算装置としては、たとえば特表平7−503804号公報に開示された、動的構成可能ゲートアレイで構成される集積回路演算装置が知られている。
【0003】
この集積回路演算装置は、動的構成可能フィールドプログラマブルゲートアレイ(FPGA)により構成される。
FPGAは、多数の入出力(I/O)ブロックと、プログラム可能論理ブロックと、論理ブロックを相互に入出力ブロックに接続し、入出力パッドを介してFPGAピンに入出力ブロックを接続するための配線等の配信資源により構成される。
また、FPGAのプログラムは、構成データをFPGAの構成メモリアレイにロードされる。
そして、この演算装置は、プロセッサと再構成可能命令実行部を有し、再構成可能命令実行部を動的に変化させることで、複雑な処理をハードウェアで達成し、異なる組み合わせ論理機能を実現している。
【0004】
【発明が解決しようとする課題】
しかし、上述した演算装置は、FPGAを用いて構成され、ゲートレベルでの切り換えを行って再構成することから、論理レベルの最適化が困難で、また構成情報が大きくなり、集積回路としての面積効率も悪いという不利益がある。
【0005】
また、従来のDSPではMACやALUは1つ、あるいは2つで構成されることが多く、たとえばMEMW=ax+by+cz+dwというような多項演算を行う場合、次のように行う必要がある。ここで、reg1〜reg4はレジスタを示す。
【0006】
【数1】
reg1=ax
reg2=by
reg3=cz
reg4=dw
reg1=reg1+reg2
reg3=reg3+reg4
MEMW=reg1+reg3
【0007】
以上のように従来のDSPでは、一時レジスタにデータを書き戻して演算結果を得る必要があった。
すなわち、従来のDSPでは、実際に行いたい演算以外にレジスタへのアクセスが必要になる。そのため余計なサイクルがかかり、演算効率の点からも低電力化の観点からも好ましくない。
【0008】
本発明は、かかる事情に鑑みてなされたものであり、その第1の目的は、論理レベルの最適化ができ、また構成情報の増大を防止でき、集積回路としての面積効率の低下を防止できる演算装置を提供することにある。
【0009】
本発明の第2の目的は、演算効率の向上を図れ、しかも低消費電力化を図れる演算装置を提供することにある。
【0010】
【課題を解決するための手段】
上記目的を達成するため、本発明は、外部からの制御により演算経路を再構成可能な演算装置であって、制御信号に応じて複数の入力データから所望のデータを選択する第1の選択手段と、制御信号に応じて複数の入力データから所望のデータを選択する第2の選択手段と、制御信号に応じて複数の入力データから所望のデータを選択する第3の選択手段と、上記第1の選択手段の出力信号、および第2の選択手段の出力信号を入力として、制御信号の指示に応じた演算を行う第1の演算手段と、上記第1の選択手段の出力信号、第2の選択手段、および第3の選択手段の出力信号を入力として、制御信号の指示に応じた演算を行う第2の演算手段とを有する。
【0018】
また、本発明は、外部からの制御により演算経路を再構成可能な演算装置であって、制御信号に応じて複数の入力データから所望のデータを選択する第1の選択手段と、制御信号に応じて複数の入力データから所望のデータを選択する第2の選択手段と、制御信号に応じて複数の入力データから所望のデータを選択する第3の選択手段と、上記第1の選択手段の出力信号、および第2の選択手段の出力信号を入力として、制御信号の指示に応じた演算を行う第1の演算手段と、上記第1の選択手段の出力信号、第2の選択手段、および第3の選択手段の出力信号を入力として、制御信号の指示に応じた演算を行う第2の演算手段とを有する。
【0019】
また、本発明では、制御信号に応じて、上記第1の演算手段の出力信号と上記第2の演算手段の出力信号のいずれかを選択する第4の選択手段をさらに有する。
【0020】
また、本発明では、上記第1の演算手段は2項演算が可能で、上記第2の演算手段は、3項演算が可能である。
【0021】
また、本発明では、上記第1の演算手段は、2項演算の結果を単項演算し、上記第2の演算手段は、3項演算の結果を単項演算する。
【0022】
また、本発明では、上記入力データを制御信号に応じた遅延量をもって遅延させて出力する遅延手段を有する。
【0023】
また、本発明は、外部からの制御により演算経路を再構成可能な演算装置であって、制御信号に応じて第1のデータ群から一のデータを選択する第1の選択手段と、制御信号に応じて第2のデータ群から一のデータを選択する第2の選択手段と、上記第1の選択手段の出力信号、および第2の選択手段の出力信号を入力として、制御信号の指示に応じた演算を行う第1の演算手段と、上記第1の選択手段の出力信号、および第2の選択手段の出力信号を入力として、制御信号の指示に応じた演算を行う第2の演算手段と、制御信号に応じて、上記第1の演算手段の出力信号と上記第2の演算手段の出力信号のいずれかを選択する第4の選択手段とを有する。
【0024】
また、本発明は、外部からの制御により演算経路を再構成可能な演算装置であって、制御信号に応じて第1のデータ群から一のデータを選択する第1の選択手段と、制御信号に応じて第2のデータ群から一のデータを選択する第2の選択手段と、制御信号に応じて第3のデータ群から一のデータを選択する第3の選択手段と、上記第1の選択手段の出力信号、第2の選択手段の出力信号、および第3の選択手段の出力信号のうちの少なくとも2つの信号を入力として、制御信号の指示に応じた演算を行う第1の演算手段と、上記第1の選択手段の出力信号、第2の選択手段の出力信号、および第3の選択手段の出力信号のうちの少なくとも2つの信号を入力として、制御信号の指示に応じた演算を行う第2の演算手段と、制御信号に応じて、上記第1の演算手段の出力信号と上記第2の演算手段の出力信号のいずれかを選択する第4の選択手段とを有する。
【0027】
また、本発明の並列演算装置は、制御信号に応じて複数の入力データから所望のデータを選択する第1の選択手段と、制御信号に応じて複数の入力データから所望のデータを選択する第2の選択手段と、制御信号に応じて複数の入力データから所望のデータを選択する第3の選択手段と、上記第1の選択手段の出力信号、第2の選択手段の出力信号、および第3の選択手段の出力信号を入力として、制御信号の指示に応じた演算を行う演算手段とを有し、外部からの制御により演算経路を再構成可能な複数の演算装置を有し、上記複数の演算装置のデータの入出力同士をカスケード接続し、かつ、各演算装置の演算結果信号を他の装置の複数のデータ入力の一のデータとして供給する。
【0028】
また、本発明では、上記入力データを制御信号に応じた遅延量をもって遅延させて次段の演算装置に出力する遅延手段を有する。
【0029】
また、本発明の並列演算装置は、制御信号に応じて複数の入力データから所望のデータを選択する第1の選択手段と、制御信号に応じて複数の入力データから所望のデータを選択する第2の選択手段と、制御信号に応じて複数の入力データから所望のデータを選択する第3の選択手段と、上記第1の選択手段の出力信号、および第2の選択手段の出力信号を入力として、制御信号の指示に応じた演算を行う第1の演算手段と、上記第1の選択手段の出力信号、第2の選択手段の出力信号、および第3の選択手段の出力信号を入力として、制御信号の指示に応じた演算を行う第2の演算手段と、制御信号に応じて、上記第1の演算手段の出力信号と上記第2の演算手段の出力信号のいずれかを選択し、演算結果信号として出力する第4の選択手段とを有し、外部からの制御により演算経路を再構成可能な複数の演算装置を有し、上記複数の演算装置のデータの入出力同士をカスケード接続し、かつ、各演算装置の演算結果信号を他の装置の複数のデータ入力の一のデータとして供給する。
【0030】
また、本発明では、上記入力データを制御信号に応じた遅延量をもって遅延させて次段の演算装置に出力する遅延手段を有する。
【0031】
また、本発明の並列演算装置は、制御信号に応じて第1のデータ群から一のデータを選択する第1の選択手段と、制御信号に応じて第2のデータ群から一のデータを選択する第2の選択手段と、上記第1の選択手段の出力信号、および第2の選択手段の出力信号を入力として、制御信号の指示に応じた演算を行う第1の演算手段と、上記第1の選択手段の出力信号、および第2の選択手段の出力信号を入力として、制御信号の指示に応じた演算を行う第2の演算手段と、制御信号に応じて、上記第1の演算手段の出力信号と上記第2の演算手段の出力信号のいずれかを選択し、演算結果信号として出力する第4の選択手段とを有し、外部からの制御により演算経路を再構成可能な複数の演算装置を有し、上記複数の演算装置の第1のデータ群の入出力同士をカスケード接続し、かつ、各演算装置の演算結果信号を他の装置の第2のデータ群の一のデータとして供給する。
【0032】
また、本発明では、上記第1のデータ群を制御信号に応じた遅延量をもって遅延させて次段の演算装置に出力する遅延手段を有する。
【0033】
また、本発明の並列演算装置は、制御信号に応じて第1のデータ群から一のデータを選択する第1の選択手段と、制御信号に応じて第2のデータ群から一のデータを選択する第2の選択手段と、制御信号に応じて第3のデータ群から一のデータを選択する第3の選択手段と、上記第1の選択手段の出力信号、第2の選択手段の出力信号、および第3の選択手段の出力信号のうちの少なくとも2つの信号を入力として、制御信号の指示に応じた演算を行う第1の演算手段と、上記第1の選択手段の出力信号、第2の選択手段の出力信号、および第3の選択手段の出力信号のうちの少なくとも2つの信号を入力として、制御信号の指示に応じた演算を行う第2の演算手段と、制御信号に応じて、上記第1の演算手段の出力信号と上記第2の演算手段の出力信号のいずれかを選択する第4の選択手段とを有し、外部からの制御により演算経路を再構成可能な複数の演算装置を有し、上記複数の演算装置の第1のデータ群および第2のデータ群の入出力同士をカスケード接続し、かつ、各演算装置の演算結果信号を他の装置の第3のデータ群の一のデータとして供給する。
【0034】
また、本発明では、上記第1のデータ群を制御信号に応じた遅延量をもって遅延させて次段の演算装置に出力する第1の遅延手段と、上記第2のデータ群を制御信号に応じた遅延量をもって遅延させて次段の演算装置に出力する第2の遅延手段とを有する。
【0035】
本発明によれば、第1の選択手段で、制御信号に応じて複数の入力データから所望のデータが選択され、演算手段に供給される。同様に、第2の選択手段で、制御信号に応じて複数の入力データから所望のデータが選択され、演算手段に供給される。
そして、演算手段では、第1の選択手段の出力信号と第2の選択手段の出力信号を用いて、制御信号の指示に応じた演算、たとえば2項演算が行われる。
また、たとえば演算手段においては、2項演算の結果が単項演算される。
【0036】
本発明によれば、第1の選択手段で、制御信号に応じて複数の入力データから所望のデータが選択され、演算手段に供給される。同様に、第2の選択手段で、制御信号に応じて複数の入力データから所望のデータが選択され、第3の選択手段で、制御信号に応じて複数の入力データから所望のデータが選択され、演算手段に供給される。
そして、演算手段では、第1の選択手段の出力信号と第2の選択手段の出力信号と第3の選択手段の出力信号を用いて、制御信号の指示に応じた演算、たとえば3項演算が行われる。
また、たとえば演算手段においては、3項演算の結果が単項演算される。
【0037】
本発明によれば、第1の選択手段で、制御信号に応じて複数の入力データから所望のデータが選択され、演算手段に供給される。同様に、第2の選択手段で、制御信号に応じて複数の入力データから所望のデータが選択され、第3の選択手段で、制御信号に応じて複数の入力データから所望のデータが選択される。そして、第1の選択手段および第2の選択手段により選択された信号は第1の演算手段に供給され、また、第1の選択手段、第2の選択手段、および第3の選択手段により選択された信号は第2の演算手段に供給される。
そして、第1の演算手段では、第1の選択手段の出力信号と第2の選択手段の出力信号を用いて、制御信号の指示に応じた演算、たとえば2項演算が行われる。
また、たとえば第1の演算手段においては、2項演算の結果が単項演算される。
また、第2の演算手段では、第1の選択手段の出力信号と第2の選択手段の出力信号と第3の選択手段の出力信号を用いて、制御信号の指示に応じた演算、たとえば3項演算が行われる。
また、たとえば第2の演算手段においては、3項演算の結果が単項演算される。
そして、たとえば、第4の選択手段において、制御信号に応じて、第1の演算手段の出力信号と第2の演算手段の出力信号のいずれかが選択され、演算装置の演算結果として出力される。
【0038】
また、本発明の並列演算装置によれば、複数の演算装置のデータの入出力同士がカスケード接続され、かつ、各演算装置の演算結果信号が他の演算装置の複数のデータ入力の一のデータとして供給される。
その結果、たとえば多項演算を行う場合等に、各演算装置に各演算処理が割り当てられ、さらに前段の演算結果をカスケード接続することで、一度に多項演算が行われる。
そのため、実行サイクル数が短くなり、また、一時的なレジスタへのアクセスが少なくなる。
【0039】
【発明の実施の形態】
以下、本発明の実施形態を図面に関連付けて説明する。
【0040】
第1実施形態
図1は、本発明に係る演算装置の第1の実施形態を示す構成図である。
図1の演算装置10は、構成情報に基づいて再構成可能なALUとMAC構造の演算器を内蔵し、係数バスn(=m+1)本、データバスn(=k+1)本、カスケード入力n−1本と出力データを持つ。
以下、演算装置10の具体的な構成および機能について、順を追って説明する。
【0041】
本演算装置10は、図1に示すように、第1の選択装置(SELA)11、第2の選択装置(SELB)12、第3の選択装置(SELC)13、ALU14、MAC構造の演算器(以下、単にMACという)15、第4の選択装置(SELE)16、レジスタ(REG)17、係数入力遅延用のk(たとえばk=n−1)個のFIFO(First-In First-Out 、C0FIFO〜CkFIFO) 18−0〜18−k、およびデータ入力遅延用のm(たとえばm=n−1=k)個のFIFO(D0FIFO 〜DmFIFO) 19−1〜19−mを主構成要素として有している。
【0042】
そして、演算装置10は、係数入力C0I,C1I,…,CkI、データ入力D0I,D1I,…,DmI、カスケード入力P0,P1,…Pn−2 、係数出力C0O,C1O,…,CkO、データ出力D0O,D1O,…,DmO、および演算出力Cを有し、再構成等のための演算制御信号ASEL,BSEL,ESEL,MACMD,ALUMD,RNDMD,SATMD,OSFMD,ACCMD、遅延制御信号C0DL,C1DL,…CkDL,D0DL,D1DL,…DmDLが供給される。
【0043】
第1の選択装置11は、制御信号ASELに応じて係数入力C0I,C1I,…,CkIとデータ0を選択し、信号asel_out として、ALU14、およびMAC15に出力する。
【0044】
第2の選択装置12は、制御信号BSELに応じてデータ入力D0I,D1I,…,DmIを選択し、信号bsel_out として、ALU14、およびMAC15に出力する。
【0045】
第3の選択装置13は、制御信号CSELに応じてカスケード入力P0,P1,…,Pn−2 とデータ0を選択し、信号csel_out として、第1の選択装置11、ALU14、およびMAC15に出力する。
【0046】
ALU14は、alu_acc をアキュムレートレジスタとし、第1の選択装置11の出力信号asel_out 、第2の選択装置12の出力信号bsel_out、および第3の選択装置13の出力信号csel_out を入力として、制御信号ALUMD,RNDMD,SATMD,OSFMD,ACCMDの指示に応じた論理演算を行い、その結果を信号alu_out として第4の選択装置16に出力する。
【0047】
具体的には、ALU14は、制御信号RNDMDの値により丸めモードを「0方向、0から遠い方向、正の無限大方向、負の無限大方向、もっとも近い整数」から選択可能で、制御信号SATMDの値により飽和ビット幅を指定可能であり、制御信号OSFMDの値によりシフト量を指定可能となる。
また、ALU14は、制御信号ACCMDの値によりアキュムレートレジスタalu_acc への値のロード、ゼロ初期化を選択可能になっている。
ALU14での演算は制御信号ALUMDの値により、以下のいずれかの演算を行う。
【0048】
【数2】
alu_out =asel_out +bsel_out
alu_out =asel_out −bsel_out
alu_out =alu_acc +bsel_out
alu_out =alu_acc −bsel_out
alu_out =〜bsel_out
alu_out =−bsel_out
alu_out =|bsel_out |
alu_out =|asel_out −bsel_out |
alu_out =asel_out &bsel_out
alu_out =asel_out |bsel_out
alu_out =asel_out ∧bsel_out
alu_out =MAX(asel_out ,bsel_out )
alu_out =MIN(asel_out ,bsel_out )
alu_out =Leading ZERO(bsel_out )
alu_out =Leading ONE(bsel_out )
alu_out =ALS(bsel_out )
alu_out =ARS(bsel_out )
alu_out =LLS(bsel_out )
alu_out =LRS(bsel_out )
alu_out =asel_out +bsel_out +csel_out
alu_out =asel_out −bsel_out +csel_out
alu_out =asel_out +bsel_out −csel_out
alu_out =asel_out −bsel_out −csel_out
【0049】
ここで、〜はビット反転、−は符号反転、| |は絶対値、&はAND(論理積)、|はOR(論理和)、∧はEXOR(排他的論理和)を意味する。また、MAXは最大値を返す関数、MINは最小値を返す関数、Leading ZEROは2進数表記をした場合のMSBから連続する0の個数を返す関数、Leading ONEは2進数表記をした場合のMSBから連続する1の個数を返す関数、ALSは算術左シフト、ARSは算術右シフト、LLSは論理左シフト、LRSは論理右シフトを意味している。
【0050】
MAC15は、mac_acc をアキュムレートレジスタとし、第1の選択装置11の出力信号asel_out 、第2の選択装置12の出力信号bsel_out、および第3の選択装置13の出力信号csel_out を入力として、制御信号MACMD,RNDMD,SATMD,OSFMD,ACCMDの指示に応じた演算を行い、その結果を信号mac_out として出力する。
【0051】
具体的には、MAC15は、制御信号RNDMDの値により丸めモードを「0方向、0から遠い方向、正の無限大方向、負の無限大方向、もっとも近い整数」のうちから選択可能であり、制御信号SATMDの値により飽和ビット幅を指定可能、かつ制御信号OSFMDの値によりシフト量を指定可能になっている。また、MAC15は、制御信号ACCMDの値によりアキュムレートレジスタmac_acc への値のロード、ゼロ初期化が選択も可能である。
MAC15での演算は、制御信号MACMDの値により、以下のいずれかの演算を行う。
【0052】
【数3】
mac_out =asel_out *bsel_out
mac_out =−(asel_out *bsel_out )
mac_out =asel_out *bsel_out +csel_out
mac_out =−(asel_out *bsel_out )+csel_out
mac_out =asel_out *bsel_out −csel_out
mac_out =−(asel_out *bsel_out )−csel_out
mac_out =asel_out *bsel_out +mac_acc
mac_out =−(asel_out *bsel_out )+mac_acc
mac_out =asel_out *bsel_out −mac_acc
mac_out =−(asel_out *bsel_out )−mac_acc
【0053】
第4の選択装置16は、制御信号ESELに応じて、ALU14の出力信号alu_out とMAC15の出力信号mac_out のいずれかを選択し、信号esel_out としてレジスタ17に出力する。
【0054】
レジスタ17は、第4の選択装置16の出力信号esel_out を格納し、また格納データを第2の選択装置12に出力するとともに、演算出力Cとして出力する。
【0055】
C0FIFO18−0は、制御信号C0DLの値により任意のサイクル遅延が可能であり、係数入力C0Iを制御信号C0DLの値に応じたサイクルを持って遅延させて、係数出力C0Oを得、たとえば次段の装置に出力する。
【0056】
C1FIFO18−1は、制御信号C1DLの値により任意のサイクル遅延が可能であり、係数入力C1Iを制御信号C1DLの値に応じたサイクルを持って遅延させて、係数出力C1Oを得、たとえば次段の装置に出力する。
【0057】
同様に、CkFIFO18−kは、制御信号CkDLの値により任意のサイクル遅延が可能であり、係数入力CkIを制御信号CkDLの値に応じたサイクルを持って遅延させて、係数出力CkOを得、たとえば次段の装置に出力する。
【0058】
D0FIFO19−0は、制御信号D0DLの値により任意のサイクル遅延が可能であり、データ入力D0Iを制御信号D0DLの値に応じたサイクルを持って遅延させて、データ出力D0Oを得、たとえば次段の装置に出力する。
【0059】
D1FIFO19−1は、制御信号D1DLの値により任意のサイクル遅延が可能であり、データ入力D1Iを制御信号D1DLの値に応じたサイクルを持って遅延させて、データ出力D1Oを得、たとえば次段の装置に出力する。
【0060】
同様に、DmFIFO19−mは、制御信号DmDLの値により任意のサイクル遅延が可能であり、データ入力DmIを制御信号DmDLの値に応じたサイクルを持って遅延させて、データ出力DmOを得、たとえば次段の装置に出力する。
【0061】
なお、本実施形態では、所定のサイクルをもって遅延させない場合も遅延0として、遅延の定義に含めるものとする。
【0062】
次に、上記構成による動作を、図2に示すように、n=4で、係数入出力、データ入出力が4、カスケード入力が3である演算装置10Aの動作について説明する。
【0063】
なおここでは、係数入力C0I,C1I,C2I,C3Iはそれぞれa,b,c,d、データ入力D0I,D1I,D2I,D3Iはそれぞれx,y,z,wであるものとする。また、カスケード入力P0,P1,P2はそれぞれa*x、a*x+b*y、a*x+b*y+c*zであるものとする。
【0064】
まず、C=a*xを求める場合を説明する。
【0065】
この場合、制御信号ASELが係数入力C0I(a)を選択するように設定されて第1の選択装置11に供給される。
また、制御信号BSELがデータ入力D0I(x)を選択するように設定されて第2の選択装置12に供給される。
これにより、第1の選択装置11から係数aが信号asel_out として、ALU14およびMAC15に出力される。また、第2の選択装置12からデータxが信号bsel_out として、ALU14およびMAC15に出力される。
【0066】
このとき、乗算を指定する制御信号MACMDが、MAC15に供給される。これにより、MAC15において、係数aとデータxとの乗算が行われ、その結果a*xが信号mac outとして第4の選択装置16に出力される。
そして、制御信号ESELがMAC15の出力を選択するように、第4の選択装置16に供給されている。その結果、第4の選択装置16においてMAC15の出力信号mac out(a*x)が選択され、信号esel out(a*x)としてレジスタ17に出力される。
レジスタ17では、MAC15の演算結果a*xが格納され、この格納データが演算出力Cとして出力される。
【0067】
次に、C=a*x+b*yを求める場合を説明する。
【0068】
この場合、制御信号ASELが係数入力C1I(b)を選択するように設定されて第1の選択装置11に供給される。
また、制御信号BSELがデータ入力D1I(y)を選択するように設定されて第2の選択装置12に供給される。
また、制御信号CSELがカスケード入力P0(a*x)を選択するように設定されて第3の選択装置13に供給される。
これにより、第1の選択装置11から係数bが信号asel_out として、ALU14およびMAC15に出力される。また、第2の選択装置12からデータyが信号bsel_out として、ALU14およびMAC15に出力される。また、第3の選択装置13から、カスケード入力データa*xが信号csel outとして第1の選択装置11、ALU14およびMAC15に出力される。
【0069】
このとき、乗加算を指定する制御信号MACMDが、MAC15に供給される。これにより、MAC15において、係数bとデータyとの乗算が行われ、さらに、その結果b*yとa*xとの加算が行われる。これにより、MAC15から乗加算結果a*x+b*yが信号mac outとして第4の選択装置16に出力される。
そして、制御信号ESELがMAC15の出力を選択するように、第4の選択装置16に供給されている。その結果、第4の選択装置16においてMAC15の出力信号mac out(a*x+b*y)が選択され、信号esel out(a*x+b*y)としてレジスタ17に出力される。
レジスタ17では、MAC15の演算結果a*x+b*yが格納され、この格納データが演算出力Cとして出力される。
【0070】
次に、C=a*x+b*y+c*zを求める場合を説明する。
【0071】
この場合、制御信号ASELが係数入力C2I(c)を選択するように設定されて第1の選択装置11に供給される。
また、制御信号BSELがデータ入力D2I(z)を選択するように設定されて第2の選択装置12に供給される。
また、制御信号CSELがカスケード入力P1(a*x+b*y)を選択するように設定されて第3の選択装置13に供給される。
これにより、第1の選択装置11から係数cが信号asel_out として、ALU14およびMAC15に出力される。また、第2の選択装置12からデータzが信号bsel_out として、ALU14およびMAC15に出力される。また、第3の選択装置13から、カスケード入力データa*x+b*yが信号csel outとして第1の選択装置11、ALU14およびMAC15に出力される。
【0072】
このとき、乗加算を指定する制御信号MACMDが、MAC15に供給される。これにより、MAC15において、係数cとデータzとの乗算が行われ、さらに、その結果c*zと(a*x+b*y)との加算が行われる。これにより、MAC15から乗加算結果a*x+b*y+c*zが信号mac outとして第4の選択装置16に出力される。
そして、制御信号ESELがMAC15の出力を選択するように、第4の選択装置16に供給されている。その結果、第4の選択装置16においてMAC15の出力信号mac out(a*x+b*y+c*z)が選択され、信号esel out(a*x+b*y+c*z)としてレジスタ17に出力される。
レジスタ17では、MAC15の演算結果a*x+b*y+c*zが格納され、この格納データが演算出力Cとして出力される。
【0073】
次に、C=a*x+b*y+c*z+d*wを求める場合を説明する。
【0074】
この場合、制御信号ASELが係数入力C3I(d)を選択するように設定されて第1の選択装置11に供給される。
また、制御信号BSELがデータ入力D3I(w)を選択するように設定されて第2の選択装置12に供給される。
また、制御信号CSELがカスケード入力P2(a*x+b*y+c*z)を選択するように設定されて第3の選択装置13に供給される。
これにより、第1の選択装置11から係数dが信号asel_out として、ALU14およびMAC15に出力される。また、第2の選択装置12からデータwが信号bsel_out として、ALU14およびMAC15に出力される。また、第3の選択装置13から、カスケード入力データa*x+b*y+c*zが信号csel outとして第1の選択装置11、ALU14およびMAC15に出力される。
【0075】
このとき、乗加算を指定する制御信号MACMDが、MAC15に供給される。これにより、MAC15において、係数dとデータwとの乗算が行われ、さらに、その結果d*wと(a*x+b*y+c*z)との加算が行われる。これにより、MAC15から乗加算結果a*x+b*y+c*z+d*wが信号mac outとして第4の選択装置16に出力される。
そして、制御信号ESELがMAC15の出力を選択するように、第4の選択装置16に供給されている。その結果、第4の選択装置16においてMAC15の出力信号mac out(a*x+b*y+c*z+d*w)が選択され、信号esel out(a*x+b*y+c*z+d*w)としてレジスタ17に出力される。
レジスタ17では、MAC15の演算結果a*x+b*y+c*z+d*wが格納され、この格納データが演算出力Cとして出力される。
【0076】
以上説明したように、本第1の実施形態によれば、制御信号ASELに応じて係数入力C0I,C1I,…,CkIとデータ0を選択する第1の選択装置11と、制御信号BSELに応じてデータ入力D0I,D1I,…,DmIを選択する第2の選択装置12と、制御信号CSELに応じてカスケード入力P0,P1,…,Pn−2 とデータ0を選択する第3の選択装置13と、第1の選択装置11の出力信号asel_out 、第2の選択装置12の出力信号bsel_out 、および第3の選択装置13の出力信号csel_out を入力として、制御信号ALUMD,RNDMD,SATMD,OSFMD,ACCMDの指示に応じた論理演算を行うALU14と、第1の選択装置11の出力信号asel_out 、第2の選択装置12の出力信号bsel_out 、および第3の選択装置13の出力信号csel_out を入力として、制御信号MACMD,RNDMD,SATMD,OSFMD,ACCMDの指示に応じた演算を行うMAC15と、制御信号ESELに応じて、ALU14の出力信号alu_out とMAC15の出力信号mac_out のいずれかを選択する第4の選択装置16とを設けたので、演算装置自体を外部から再構成可能である。
【0077】
したがって、本第1の実施形態によれば、論理レベルの最適化ができることはもとより、構成情報の増大を防止でき、集積回路としての面積効率の悪化を防止できる演算装置を実現できる利点がある。
また、演算装置を再構成可能であることから、カスケード演算だけでなく並列演算も同一のハードウェアで実現することが可能になっている。そのため、演算装置の数を増やして多くの並列化可能な処理を効率良く実行することもできる。
【0078】
第2実施形態
図3は、本発明に係る並列演算装置の第2の実施形態を示す構成図である。
【0079】
本第2の実施形態では、図1の演算装置を複数個(n個)カスケード接続して、他の演算装置の演算結果をカスケード入力することで、多くの並列化可能な処理を効率良く実行するように構成している。
【0080】
各演算装置10−0〜10−n-1 (PE0〜PEn−1)は、係数入力端子PE C0I〜PE CkI、データ入力端子PE D0I〜PE DmI、カスケード入力端子PE P0〜PE Pn−2、係数出力端子PE C0O〜PE CkO、データ出力端子PE D0O〜PE DmO、および演算出力端子PE Cを有している。
【0081】
演算装置10−0においては、係数入力端子PE C0I〜PE CkIに係数C0I〜CkIが供給され、データ入力端子PE D0I〜PE DmIにデータ入力D0I〜DmIが供給され、カスケード入力PE P0〜PE Pn−2に他の演算装置10−1〜10−n-1 の演算出力端子PE Cから出力される演算結果信号OT1〜OTn−1が供給される。たとえばカスケード入力PE P0には、最終段の演算装置10−n-1 の演算結果信号OTn−1が供給され、カスケード入力端子PE Pn−2に次段の演算装置10−1の演算結果信号OT1が供給される。
また、演算装置10−0において、係数出力端子PE C0O〜PE CkOからC0FIFO18−0〜CkFIFO18−kで所望の遅延量だけ遅延された係数が係数出力c00〜ck0として次段の演算装置10−1に出力され、データ出力端子PE D0O〜PE DmOからD0FIFO19−0〜DmFIFO19−mで所望の遅延量だけ遅延されたデータがデータ出力d00〜dm0として次段の演算装置10−1に出力される。
また、演算装置10−0においては、演算出力端子PE Cから演算結果信号OT0が他の演算装置10−1〜10−n-1 に出力される。
なお、図3においては、演算装置10−0に供給されるべき演算制御信号ASEL,BSEL,ESEL,MACMD,ALUMD,RNDMD,SATMD,OSFMD,ACCMD、および遅延制御信号C0DL,C1DL,…CkDL,D0DL,D1DL,…DmDLは、簡単化のため制御信号CTL0として示している。
【0082】
演算装置10−1においては、係数入力端子PE C0I〜PE CkIに演算装置10−0の係数出力c00〜ck0が供給され、データ入力端子PE D0I〜PE DmIに演算装置10−0のデータ出力d00〜dm0が供給され、カスケード入力PE P0〜PE Pn−2に他の演算装置10−0、10−2(図示せず)〜10−n-1 の演算出力端子PE Cから出力される演算結果信号OT0,OT2〜OTn−1が供給される。たとえばカスケード入力PE P0には、前段の演算装置10−0の演算結果信号OT0が供給され、カスケード入力端子PE Pn−2に演算装置10−n-2 の演算結果信号OTn−2が供給される。
また、演算装置10−1において、係数出力端子PE C0O〜PE CkOからC0FIFO18−0〜CkFIFO18−kで所望の遅延量だけ遅延された係数が係数出力c01〜ck1として次段の演算装置10−2に出力され、データ出力端子PE D0O〜PE DmOからD0FIFO19−0〜DmFIFO19−mで所望の遅延量だけ遅延されたデータがデータ出力d01〜dm1として次段の演算装置10−2に出力される。
また、演算装置10−1においては、演算出力端子PE Cから演算結果信号OT1が他の演算装置10−0,10−2〜10−n-1 に出力される。
なお、図3においては、演算装置10−1に供給されるべき演算制御信号ASEL,BSEL,ESEL,MACMD,ALUMD,RNDMD,SATMD,OSFMD,ACCMD、および遅延制御信号C0DL,C1DL,…CkDL,D0DL,D1DL,…DmDLは、簡単化のため制御信号CTL1として示している。
【0083】
同様に、演算装置10−i(2≦i≦n−2)においては、係数入力端子PE C0I〜PE CkIに演算装置10−i-1 の係数出力c0i-1 〜cki-1 が供給され、データ入力端子PE D0I〜PE DmIに演算装置10−i-1 のデータ出力d0i-1 〜dmi-1 が供給され、カスケード入力PE P0〜PE Pn−2に他の演算装置10−0〜10−i-1 ,10−i+1 〜10−n-1 の演算出力端子PE Cから出力される演算結果信号OT0〜OTi−1,OTi+1〜OTn−1が供給される。
また、演算装置10−iにおいて、係数出力端子PE C0O〜PE CkOからC0FIFO18−0〜CkFIFO18−kで所望の遅延量だけ遅延された係数が係数出力c0i〜ckiとして次段の演算装置10−i+1 に出力され、データ出力端子PE D0O〜PE DmOからD0FIFO19−0〜DmFIFO19−mで所望の遅延量だけ遅延されたデータがデータ出力d0i〜dmiとして次段の演算装置10−i+1 に出力される。
また、演算装置10−iにおいては、演算出力端子PE Cから演算結果信号OTiが他の演算装置10−0〜10−i-1 ,10−i+1 〜10−n-1 に出力される。
なお、図示しないが、演算装置10−iには、演算制御信号ASEL,BSEL,ESEL,MACMD,ALUMD,RNDMD,SATMD,OSFMD,ACCMD、および遅延制御信号C0DL,C1DL,…CkDL,D0DL,D1DL,…DmDLが
【0084】
そして、演算装置10−n-1 においては、係数入力端子PE C0I〜PE CkIに演算装置10−n-2 の係数出力c0n-2 〜ckn-2 が供給され、データ入力端子PE D0I〜PE DmIに演算装置10−n-2 のデータ出力d0n-2 〜dmn-2 が供給され、カスケード入力PE P0〜PE Pn−2に他の演算装置10−0〜10−n-2 の演算出力端子PE Cから出力される演算結果信号OT0〜OTn−2が供給される。たとえばカスケード入力PE P0には、前段の演算装置10−n-2 の演算結果信号OTn-2 が供給され、カスケード入力端子PE Pn−2に演算装置10−0の演算結果信号OT0が供給される。
また、演算装置10−n-1 において、係数出力端子PE C0O〜PE CkOからの係数出力、およびデータ出力端子PE D0O〜PE DmOからのデータ出力の他の演算装置への出力は行われない。
また、演算装置10−n-1 においては、演算出力端子PE Cから演算結果信号OTn−1が他の演算装置10−0〜10−n-2 に出力される。
なお、図3においては、演算装置10−n-1 に供給されるべき演算制御信号ASEL,BSEL,ESEL,MACMD,ALUMD,RNDMD,SATMD,OSFMD,ACCMD、および遅延制御信号C0DL,C1DL,…CkDL,D0DL,D1DL,…DmDLは、簡単化のため制御信号CTLn−1として示している。
【0085】
次に、本第2の実施形態の動作を、図4に示すように、カスケード接続する演算装置数を4(n=4)の場合を例に説明する。
この場合における各演算装置10A−0〜10A−3は、図2に示す構成を有する。したがって、動作説明は、図2および図4に関連付けて行う。
なおここでは、以下の演算を行う場合を例に説明する。
【0086】
【数4】
out=a*x+b*y+c*z+d*w
【0087】
そして、演算装置10A−0への係数入力C0I,C1I,C2I,C3Iはそれぞれa,b,c,d、データ入力D0I,D1I,D2I,D3Iはそれぞれx,y,z,wであるものとする。
【0088】
まず、演算装置10A−0においては、制御信号CTL0により、演算結果信号OT0=a*xとなる演算が行われるように制御が行われる。
【0089】
この場合、演算装置10A−0において、制御信号ASELが係数入力C0I(a)を選択するように設定されて第1の選択装置11に供給される。
また、制御信号BSELがデータ入力D0I(x)を選択するように設定されて第2の選択装置12に供給される。
これにより、第1の選択装置11から係数aが信号asel_out として、ALU14およびMAC15に出力される。また、第2の選択装置12からデータxが信号bsel_out として、ALU14およびMAC15に出力される。
【0090】
このとき、乗算を指定する制御信号MACMDが、MAC15に供給される。これにより、MAC15において、係数aとデータxとの乗算が行われ、その結果a*xが信号mac outとして第4の選択装置16に出力される。
そして、制御信号ESELがMAC15の出力を選択するように、第4の選択装置16に供給されている。その結果、第4の選択装置16においてMAC15の出力信号mac out(a*x)が選択され、信号esel out(a*x)としてレジスタ17に出力される。
レジスタ17では、MAC15の演算結果a*xが格納され、この格納データが演算出力端子PE Cから演算結果信号OT0として、演算装置10A−1のカスケード入力PE P0、演算装置10A−2のカスケード入力PE P1、および演算装置10A−3のカスケード入力PE P2に出力される。
【0091】
演算装置10A−0においては、C0FIFO18−0〜C3FIFO18−3で所望の遅延量だけ遅延された係数a,b,c,dが係数出力端子PE C0O〜PE C3Oから係数出力c00〜c30として次段の演算装置10A−1の係数入力端子PE C0I〜PE C3Iに出力され、D0FIFO19−0〜D3FIFO19−3で所望の遅延量だけ遅延されたデータx,y,z,wがデータ出力端子PE D0O〜PE D3Oからデータ出力d00〜d30として次段の演算装置10A−1のデータ入力端子PE D0I〜PE D3Iに出力される。
【0092】
次に、演算装置10A−1においては、制御信号CTL1により、演算結果信号OT1=OT0+b*y=a*x+b*yとなる演算が行われるように制御が行われる。
【0093】
この場合、制御信号ASELが係数入力端子PE C1Iに供給される演算装置10A−0の係数出力c10(b)を選択するように設定されて第1の選択装置11に供給される。
また、制御信号BSELがデータ入力端子PE D1Iに供給される演算装置10A−0のデータ出力d10(y)を選択するように設定されて第2の選択装置12に供給される。
また、制御信号CSELがカスケード入力端子PE P0に供給される演算装置10A−0の演算結果信号OT0(a*x)を選択するように設定されて第3の選択装置13に供給される。
これにより、第1の選択装置11から係数bが信号asel_out として、ALU14およびMAC15に出力される。また、第2の選択装置12からデータyが信号bsel_out として、ALU14およびMAC15に出力される。また、第3の選択装置13から、カスケード入力データa*xが信号csel outとして第1の選択装置11、ALU14およびMAC15に出力される。
【0094】
このとき、乗加算を指定する制御信号MACMDが、MAC15に供給される。これにより、MAC15において、係数bとデータyとの乗算が行われ、さらに、その結果b*yとa*xとの加算が行われる。これにより、MAC15から乗加算結果a*x+b*yが信号mac outとして第4の選択装置16に出力される。
そして、制御信号ESELがMAC15の出力を選択するように、第4の選択装置16に供給されている。その結果、第4の選択装置16においてMAC15の出力信号mac out(a*x+b*y)が選択され、信号esel out(a*x+b*y)としてレジスタ17に出力される。
レジスタ17では、MAC15の演算結果a*x+b*yが格納され、この格納データが演算出力端子PE Cから演算結果信号OT1として、演算装置10A−0のカスケード入力PE P2、演算装置10A−2のカスケード入力PE P0、および演算装置10A−3のカスケード入力PE P1に出力される。
【0095】
演算装置10A−1においては、C0FIFO18−0〜C3FIFO18−3で所望の遅延量だけ遅延された係数a,b,c,dが係数出力端子PE C0O〜PE C3Oから係数出力c01〜c31として次段の演算装置10A−2の係数入力端子PE C0I〜PE C3Iに出力され、D0FIFO19−0〜DmFIFO19−3で所望の遅延量だけ遅延されたデータx,y,z,wがデータ出力端子PE D0O〜PE D3Oからデータ出力d01〜d31として次段の演算装置10A−のデータ入力端子PE D0I〜PE D3Iに出力される。
【0096】
次に、演算装置10A−2においては、制御信号CTL2により、演算結果信号OT2=OT1+c*z=a*x+b*y+c*zとなる演算が行われるように制御が行われる。
【0097】
この場合、制御信号ASELが係数入力端子PE C2Iに供給される演算装置10A−1の係数出力c21(c)を選択するように設定されて第1の選択装置11に供給される。
また、制御信号BSELがデータ入力端子PE D2Iに供給される演算装置10A−1のデータ出力d21(z)を選択するように設定されて第2の選択装置12に供給される。
また、制御信号CSELがカスケード入力端子PE P0に供給される演算装置10A−1の演算結果信号OT1(a*x+b*y)を選択するように設定されて第3の選択装置13に供給される。
これにより、第1の選択装置11から係数cが信号asel_out として、ALU14およびMAC15に出力される。また、第2の選択装置12からデータzが信号bsel_out として、ALU14およびMAC15に出力される。また、第3の選択装置13から、カスケード入力データa*x+b*yが信号csel outとして第1の選択装置11、ALU14およびMAC15に出力される。
【0098】
このとき、乗加算を指定する制御信号MACMDが、MAC15に供給される。これにより、MAC15において、係数cとデータzとの乗算が行われ、さらに、その結果c*zと(a*x+b*y)との加算が行われる。これにより、MAC15から乗加算結果a*x+b*y+c*zが信号mac outとして第4の選択装置16に出力される。
そして、制御信号ESELがMAC15の出力を選択するように、第4の選択装置16に供給されている。その結果、第4の選択装置16においてMAC15の出力信号mac out(a*x+b*y+c*z)が選択され、信号esel out(a*x+b*y+c*z)としてレジスタ17に出力される。
レジスタ17では、MAC15の演算結果a*x+b*y+c*zが格納され、この格納データが演算出力端子PE Cから演算結果信号OT2として、演算装置10A−0のカスケード入力PE P1、演算装置10A−のカスケード入力PE P2、および演算装置10A−3のカスケード入力PE P0に出力される。
【0099】
演算装置10A−2においては、C0FIFO18−0〜C3FIFO18−3で所望の遅延量だけ遅延された係数a,b,c,dが係数出力端子PE C0O〜PE C3Oから係数出力c02〜c32として次段の演算装置10A−3の係数入力端子PE C0I〜PE C3Iに出力され、D0FIFO19−0〜DmFIFO19−3で所望の遅延量だけ遅延されたデータx,y,z,wがデータ出力端子PE D0O〜PE D3Oからデータ出力d02〜d32として次段の演算装置10A−3のデータ入力端子PE D0I〜PE D3Iに出力される。
【0100】
次に、演算装置10A−3においては、制御信号CTL3により、演算結果信号OT3=OT2+d*w=a*x+b*y+c*z+d*wとなる演算が行われるように制御が行われる。
【0101】
この場合、制御信号ASELが係数入力端子PE C3Iに供給される演算装置10A−2の係数出力c32(d)を選択するように設定されて第1の選択装置11に供給される。
また、制御信号BSELがデータ入力端子PE D3Iに供給される演算装置10A−2のデータ出力d32(w)を選択するように設定されて第2の選択装置12に供給される。
また、制御信号CSELがカスケード入力端子PE P0に供給される演算装置10A−2の演算結果信号OT2(a*x+b*y+c*z)を選択するように設定されて第3の選択装置13に供給される。
これにより、第1の選択装置11から係数dが信号asel_out として、ALU14およびMAC15に出力される。また、第2の選択装置12からデータwが信号bsel_out として、ALU14およびMAC15に出力される。また、第3の選択装置13から、カスケード入力データa*x+b*y+c*zが信号csel outとして第1の選択装置11、ALU14およびMAC15に出力される。
【0102】
このとき、乗加算を指定する制御信号MACMDが、MAC15に供給される。これにより、MAC15において、係数dとデータwとの乗算が行われ、さらに、その結果d*wと(a*x+b*y+c*z)との加算が行われる。これにより、MAC15から乗加算結果a*x+b*y+c*z+d*wが信号mac outとして第4の選択装置16に出力される。
そして、制御信号ESELがMAC15の出力を選択するように、第4の選択装置16に供給されている。その結果、第4の選択装置16においてMAC15の出力信号mac out(a*x+b*y+c*z+d*w)が選択され、信号esel out(a*x+b*y+c*z+d*w)としてレジスタ17に出力される。
レジスタ17では、MAC15の演算結果a*x+b*y+c*z+d*wが格納され、この格納データが演算出力端子PE Cから演算結果信号OT3として所望の演算結果outとして出力され、演算装置10A−0のカスケード入力PE P0、演算装置10A−2のカスケード入力PE P1、および演算装置10A−2のカスケード入力PE P2に出力される。
【0103】
以上において、図2において図4に示す遅延制御信号C0DL,C1DL,C2DL,C3DLはすべて遅延0となるように、各C0FIFO18−0〜C3FIFO18−3に供給される。
また、遅延制御信号D0DLは遅延0となるように、D0FIFO19−0に供給され、遅延制御信号D1DLは遅延1となるように、D1FIFO19−1に供給され、遅延制御信号D2DLは遅延2となるように、D2FIFO19−2に供給され、遅延制御信号D3DLは遅延3となるように、D3FIFO19−3に供給される。
【0104】
以上説明したように、本第2の実施形態によれば、制御信号ASELに応じて係数入力C0I,C1I,…,CkIとデータ0を選択する第1の選択装置11と、制御信号BSELに応じてデータ入力D0I,D1I,…,DmIを選択する第2の選択装置12と、制御信号CSELに応じてカスケード入力P0,P1,…,Pn−2 とデータ0を選択する第3の選択装置13と、第1の選択装置11の出力信号asel_out 、第2の選択装置12の出力信号bsel_out 、および第3の選択装置13の出力信号csel_out を入力として、制御信号ALUMD,RNDMD,SATMD,OSFMD,ACCMDの指示に応じた論理演算を行うALU14と、第1の選択装置11の出力信号asel_out 、第2の選択装置12の出力信号bsel_out 、および第3の選択装置13の出力信号csel_out を入力として、制御信号MACMD,RNDMD,SATMD,OSFMD,ACCMDの指示に応じた演算を行うMAC15と、制御信号ESELに応じて、ALU14の出力信号alu_out とMAC15の出力信号mac_out のいずれかを選択する第4の選択装置16と、遅延制御信号C0DL〜CkDLの値により任意のサイクル遅延可能であり、係数入力を遅延制御信号C0DL〜CkDLの値に応じたサイクルを持って遅延させて、係数出力を得、次段の装置に出力するC0FIFO18−0〜CkFIFO18−kと、制御信号D0DL〜DmDLの値により任意のサイクル遅延可能であり、データ入力を遅延制御信号D0DL〜DmDLの値に応じたサイクルを持って遅延させて、データ出力を得、次段の装置に出力するD0FIFO19−0〜DmFIFO19−mとを有する複数の演算装置10−0〜10−n-1 を設け、演算装置10−0〜10−n-1 の係数およびデータの入出力同士をカスケード接続し、かつ、各演算装置の演算結果信号OT0〜OTn−1を他の装置のカスケード入力PE_P0,PE_P1,…,PE_Pn−2 として供給するように構成したので、演算装置自体を外部から再構成可能である。
【0105】
したがって、本第2の実施形態によれば、上述した第1の実施形態と同様に、論理レベルの最適化ができることはもとより、構成情報の増大を防止でき、集積回路としての面積効率の悪化を防止できる演算装置を実現できる利点がある。
また、演算装置を再構成可能であることから、カスケード演算だけでなく並列演算も同一のハードウェアで実現することが可能になっている。そのため、演算装置の数を増やして多くの並列化可能な処理を効率良く実行することもできる。
【0106】
また、MACやALUが1あるいは2であるDSPではMEMW=ax+by+cz+dwの演算を行う場合、一時レジスタにデータを書き戻して演算結果を得る必要があったのに対して、本第2の実施形態によれば、各演算装置にax,by,cz,dwの演算を割り当て、さらに前段の演算結果をカスケードすることで一度にMEMWの演算が可能になっている。
そのため、実行サイクル数が短くなる。また一時レジスタへのアクセスが少なくなるため電力の消費も抑えることができる利点がある。
【0107】
第3実施形態
図5は、本発明に係る演算装置の第3の実施形態を示す構成図である。
【0108】
図5の演算装置20は、構成情報に基づいて再構成可能な演算装置であって、4入力4出力の演算を行い、バタフライ演算とシフト演算を同時に実行可能に構成されている。
【0109】
本演算装置20は、単項演算手段としてのシフト演算器(SFT0)21−0、およびシフト演算器(SFT1)21−1、入力選択装置(RSEL0)22−0、入力選択装置(RSEL1)22−1、2入力2出力のバタフライ演算器(BTF0)23、出力選択装置(DSEL0)24−0、出力選択装置(DSEL1)24−1、出力選択装置(WSEL0)25−0、および出力選択装置(WSEL1)25−1を有している。
【0110】
そして、演算装置20は、データ入力MEMR0,MEMR1,I0,I1、およびデータ出力MEMW0,MEMW1,D0,D1を有し、また、再構成等のための制御信号BTFMD0,R0SEL,R1SEL,W0SEL,W1SEL,D0SEL,D1SELが供給される。
【0111】
シフト演算器21−0は、データ入力MEMR0の値を制御信号SFT0MDに応じて単項演算、具体的には、制御信号SFT0MDが示す値(シフト量)に応じて左または右に任意ビットだけシフトする演算を行って、その結果を入力選択装置22−0および出力選択装置24−0に出力する。なお、シフト演算器21−0は、たとえば制御信号SFT0MDが示すシフト量がゼロの場合には、シフト演算を行わず、データ入力MEMR0をそのまま出力する。
【0112】
シフト演算器21−1は、データ入力MEMR1の値を制御信号SFT1MDに応じて単項演算、具体的には、制御信号SFT1MDが示す値(シフト量)に応じて左または右に任意ビットだけシフトする演算を行って、その結果を入力選択装置22−1および出力選択装置24−1に出力する。なお、シフト演算器21−1は、たとえば制御信号SFT1MDが示すシフト量がゼロの場合には、シフト演算を行わず、データ入力MEMR1をそのまま出力する。
【0113】
入力選択装置22−0は、制御信号R0SELに応じて、シフト演算器21−0の出力データおよびデータ入力I0のいずれかを選択し、信号r0sel out としてバタフライ演算器23に出力する。
【0114】
入力選択装置22−1は、制御信号R1SELに応じて、シフト演算器21−1の出力データおよびデータ入力I1のいずれかを選択し、信号r1sel out としてバタフライ演算器23に出力する。
【0115】
バタフライ演算器23は、入力端子DAに入力選択装置22−0の出力信号r0sel out を入力し、入力端子DBの入力選択装置22−1の出力信号r1sel out を入力し、制御端子CTLに供給される制御信号BTFMD0の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf0a out として出力選択装置24−0および25−0に出力し、他方の演算結果を出力端子OBから信号btf0b out として出力選択装置24−1および25−1に出力する。
【0116】
具体的には、バタフライ演算器23は、制御信号BTFMD0の値により、以下のいずれかの演算を選択的に行う。
【0117】
【数5】

Figure 0003846196
【0118】
出力選択装置24−0は、制御信号D0SELに応じて、シフト演算器21−0の出力信号(たとえばMEMR0)とバタフライ演算器23の出力信号btf0a out のいずれかを選択し、信号D0として出力する。
【0119】
出力選択装置24−1は、制御信号D1SELに応じて、シフト演算器21−1の出力信号(たとえばMEMR1)とバタフライ演算器23の出力信号btf0b out のいずれかを選択し、信号D1として出力する。
【0120】
出力選択装置25−0は、制御信号W0SELに応じて、データ入力I0とバタフライ演算器23の出力信号btf0a out のいずれかを選択し、信号MEMW0として出力する。
【0121】
出力選択装置25−1は、制御信号W1SELに応じて、データ入力I1とバタフライ演算器23の出力信号btf0b out のいずれかを選択し、信号MEMW1として出力する。
【0122】
次に、上記構成による動作を説明する。
ここでは、
D0=MEMR0,
D1=MEMR0−MEMR1,
MEMW0=MEMR0+MEMR1,
MEMW1=I1
の演算を実行するものとする。
【0123】
たとえばシフト演算器21−0,21−1のシフト量が、制御信号SFT0MD,SFT1MDによりゼロに設定される。
したがって、シフト演算器21−0の出力はMEMR0となり、入力選択装置22−0および出力選択装置24−0に供給される。
同様に、シフト演算器21−1の出力はMEMR1となり、入力選択装置22−1および出力選択装置24−1に供給される。
【0124】
入力選択装置22−0では、制御信号R0SELにより、シフト演算器21−0の出力信号、すなわちMEMR0を選択するように制御され、選択されたデータMEMR0が信号r0sel out として、バラフライ演算器23の入力端子DAに供給される。
また、入力選択装置22−1では、制御信号R1SELにより、シフト演算器21−1の出力信号、すなわちMEMR1を選択するように制御され、選択されたデータMEMR1が信号r1sel out として、バラフライ演算器23の入力端子DBに供給される。
【0125】
バタフライ演算器23では、制御端子CTLに供給される制御信号BTFMD0により、OA=DA+DB,OB=DA−DBが計算されるモードに設定される。
これにより、バタフライ演算器23においては、入力端子DAに供給されたデータMEMR0と入力端子DBに供給されたデータMEMR1とが加算され、その結果である(MEMR0+MEMR1)が出力端子OAから信号btf0a out として、出力選択装置24−0および25−0に出力される。
また、バタフライ演算器23においては、入力端子DAに供給されたデータMEMR0と入力端子DBに供給されたデータMEMR1との差がとられ、その結果である(MEMR0−MEMR1)が出力端子OBから信号btf0b outとして、出力選択装置24−1および25−1に出力される。
【0126】
出力選択装置24−0では、シフト演算器21−0の出力信号(MEMR0)とバタフライ演算器23の出力信号btf0a out (=MEMR0+MEMR1)のうち、シフト演算器21−0の出力信号(MEMR0)を選択するように制御信号D0SELが供給され、これにより選択されたデータが信号D0=MEMR0として出力される。
【0127】
出力選択装置25−0では、データ入力I0とバタフライ演算器23の出力信号btf0a out (=MEMR0+MEMR1)のうち、バタフライ演算器23の出力信号btf0a out を選択するように制御信号W0SELが供給され、これにより選択されたデータが信号MEMW0=MEMR0+MEMR1として出力される。
【0128】
また、出力選択装置25−1では、データ入力I1とバタフライ演算器23の出力信号btf0b out (=MEMR0−MEMR1)のうち、データ入力I1を選択するように制御信号W1SELが供給され、これにより選択されたデータが信号MEMW1=I1として出力される。
【0129】
出力選択装置24−1では、シフト演算器21−1の出力信号(MEMR1)とバタフライ演算器23の出力信号btf0b out (=MEMR0−MEMR1)のうち、バタフライ演算器23の出力信号btf0b out を選択するように制御信号D1SELが供給され、これにより選択されたデータが信号D1=MEMR0−MEMR1として出力される。
【0130】
以上説明したように、本第3の実施形態によれば、データ入力MEMR0の値を制御信号SFT0MDが示す値に応じて左または右に任意ビットだけシフトする演算を行うシフト演算器21−0と、データ入力MEMR1の値を制御信号SFT1MDが示す値に応じて左または右に任意ビットだけシフトする演算を行うシフト演算器21−1と、制御信号R0SELに応じて、シフト演算器21−0の出力データおよびデータ入力I0のいずれかを選択し、信号r0sel outとして出力する入力選択装置22−0と、制御信号R1SELに応じて、シフト演算器21−1の出力データおよびデータ入力I1のいずれかを選択し、信号r1sel out として出力する入力選択装置22−1と、入力端子DAに入力選択装置22−0の出力信号r0sel out を入力し、入力端子DBに入力選択装置22−1の出力信号r1sel out を入力し、制御端子CTLに供給される制御信号BTFMD0の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf0a out として出力選択装置24−0および25−0に出力し、他方の演算結果を出力端子OBから信号btf0b out として出力選択装置24−1および25−1に出力するバタフライ演算器23と、制御信号D0SELに応じて、シフト演算器21−0の出力信号とバタフライ演算器23の出力信号btf0a out のいずれかを選択し、信号D0として出力する出力選択装置24−0と、制御信号D1SELに応じて、シフト演算器21−1の出力信号とバタフライ演算器23の出力信号btf0b out のいずれかを選択し、信号D1として出力する出力選択装置24−1と、制御信号W0SELに応じて、データ入力I0とバタフライ演算器23の出力信号btf0a out のいずれかを選択し、信号MEMW0として出力する出力選択装置25−0と、制御信号W1SELに応じて、データ入力I1とバタフライ演算器23の出力信号btf0b out のいずれかを選択し、信号MEMW1として出力する出力選択装置25−1とを設けたので、以下の効果を得ることができる。
【0131】
バタフライ演算などの多入力、多出力演算を行う場合には、y0=x0+x1,y1=x0−x1などの演算を同時に行うことができる。
このため、入力データとしてx0とx1を1回ずつ読み出せばよい。そのためメモリ/レジスタへのアクセス効率があがるという利点がある。
また専用ハードウェアと異なり、y0=x0+x1とy1=x0−x1のほかにも、y0=x0+x1+x2+x3などの計算を柔軟に行うことができる構成を容易に実現できる利点がある。
【0132】
また、演算装置自体を外部から再構成可能であることから、論理レベルの最適化ができることはもとより、構成情報の増大を防止でき、集積回路としての面積効率の低下を防止できる演算装置を実現できる利点がある。
【0133】
第4実施形態
図6は、本発明に係る演算装置の第4の実施形態を示す構成図である。
【0134】
図6の演算装置20Aは、構成情報に基づいて再構成可能な演算装置であって、8入力8出力の演算を行い、バタフライ演算とシフト演算を同時に実行可能に構成されている。
【0135】
本演算装置20Aは、シフト演算器(SFT0)21A−0、シフト演算器(SFT1)21A−1、シフト演算器(SFT2)21A−2、シフト演算器(SFT3)21A−3、入力選択装置(RSEL0)22A−0、入力選択装置(RSEL1)22A−1、入力選択装置(RSEL2)22A−2、入力選択装置(RSEL3)22A−3、バタフライ演算器(BTF0)23A−0、バタフライ演算器(BTF1)23A−1、出力選択装置(DSEL0)24A−0、出力選択装置(DSEL1)24A−1、出力選択装置(DSEL2)24A−2、出力選択装置(DSEL3)24A−3、出力選択装置(WSEL0)25A−0、出力選択装置(WSEL1)25A−1、出力選択装置(WSEL2)25A−2、および出力選択装置(WSEL3)25A−3を有している。
【0136】
そして、演算装置20Aは、データ入力MEMR0,MEMR1,MEMR2,MEMR3,I0,I1、I2,I3、およびデータ出力MEMW0,MEMW1,MEMW2,MEMW3,D0,D1,D2,D3を有し、また、再構成のための制御信号BTFMD0,BTFMD1,R0SEL,R1SEL,R2SEL,R3SEL,W0SEL,W1SEL,W2SEL,W3SEL,D0SEL,D1SEL,D2SEL,D3SELが供給される。
【0137】
シフト演算器21A−0は、データ入力MEMR0の値を制御信号SFT0MDに応じて単項演算、具体的には、制御信号SFT0MDが示す値(シフト量)に応じて左または右に任意ビットだけシフトする演算を行って、その結果を信号sft0 out として入力選択装置22A−0および出力選択装置24A−0に出力する。なお、シフト演算器21A−0は、たとえば制御信号SFT0MDが示すシフト量がゼロの場合には、シフト演算を行わず、データ入力MEMR0をそのまま出力する。
【0138】
シフト演算器21A−1は、データ入力MEMR1の値を制御信号SFT1MDに応じて単項演算、具体的には、制御信号SFT1MDが示す値(シフト量)に応じて左または右に任意ビットだけシフトする演算を行って、その結果を信号sft1 out として入力選択装置22A−1および出力選択装置24A−1に出力する。なお、シフト演算器21A−1は、たとえば制御信号SFT1MDが示すシフト量がゼロの場合には、シフト演算を行わず、データ入力MEMR1をそのまま出力する。
【0139】
シフト演算器21A−2は、データ入力MEMR2の値を制御信号SFT2MDに応じて単項演算、具体的には、制御信号SFT2MDが示す値(シフト量)に応じて左または右に任意ビットだけシフトする演算を行って、その結果を信号sft2 out として入力選択装置22A−2および出力選択装置24A−2に出力する。なお、シフト演算器21A−2は、たとえば制御信号SFT2MDが示すシフト量がゼロの場合には、シフト演算を行わず、データ入力MEMR2をそのまま出力する。
【0140】
シフト演算器21A−3は、データ入力MEMR3の値を制御信号SFT3MDに応じて単項演算、具体的には、制御信号SFT3MDが示す値(シフト量)に応じて左または右に任意ビットだけシフトする演算を行って、その結果を信号sft3 out として入力選択装置22A−3および出力選択装置24A−3に出力する。なお、シフト演算器21A−3は、たとえば制御信号SFT3MDが示すシフト量がゼロの場合には、シフト演算を行わず、データ入力MEMR3をそのまま出力する。
【0141】
入力選択装置22A−0は、制御信号R0SELに応じて、シフト演算器21A−0の出力データおよびデータ入力I0のいずれかを選択し、信号r0sel out としてバタフライ演算器23A−0に出力する。
【0142】
入力選択装置22A−1は、制御信号R1SELに応じて、シフト演算器21A−1の出力データおよびデータ入力I1のいずれかを選択し、信号r1sel out としてバタフライ演算器23A−0に出力する。
【0143】
入力選択装置22A−2は、制御信号R2SELに応じて、シフト演算器21A−2の出力データおよびデータ入力I2のいずれかを選択し、信号r2sel out としてバタフライ演算器23A−1に出力する。
【0144】
入力選択装置22A−3は、制御信号R3SELに応じて、シフト演算器21A−3の出力データおよびデータ入力I3のいずれかを選択し、信号r3sel out としてバタフライ演算器23A−1に出力する。
【0145】
バタフライ演算器23A−0は、入力端子DAに入力選択装置22A−0の出力信号r0sel out を入力し、入力端子DBに入力選択装置22A−1の出力信号r1sel out を入力し、制御端子CTLに供給される制御信号BTFMD0の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf0a out として出力選択装置24A−0および25A−0に出力し、他方の演算結果を出力端子OBから信号btf0b out として出力選択装置24A−1および25A−1に出力する。
【0146】
具体的には、バタフライ演算器23A−0は、制御信号BTFMD0の値により、以下のいずれかの演算を選択的に行う。
【0147】
【数6】
Figure 0003846196
【0148】
バタフライ演算器23A−1は、入力端子DAに入力選択装置22A−2の出力信号r2sel out を入力し、入力端子DBに入力選択装置22A−3の出力信号r3sel out を入力し、制御端子CTLに供給される制御信号BTFMD1の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf1a out として出力選択装置24A−2および25A−2に出力し、他方の演算結果を出力端子OBから信号btf1b out として出力選択装置24A−3および25A−3に出力する。
【0149】
具体的には、バタフライ演算器23A−1は、制御信号BTFMD1の値により、以下のいずれかの演算を選択的に行う。
【0150】
【数7】
Figure 0003846196
【0151】
出力選択装置24A−0は、制御信号D0SELに応じて、シフト演算器21A−0の出力信号sft0 out (たとえばMEMR0)とバタフライ演算器23A−0の出力信号btf0a out のいずれかを選択し、信号D0として出力する。
【0152】
出力選択装置24A−1は、制御信号D1SELに応じて、シフト演算器21A−1の出力信号sft1 out (たとえばMEMR1)とバタフライ演算器23A−0の出力信号btf0b out のいずれかを選択し、信号D1として出力する。
【0153】
出力選択装置24A−2は、制御信号D2SELに応じて、シフト演算器21A−2の出力信号sft2 out (たとえばMEMR2)とバタフライ演算器23A−1の出力信号btf1a out のいずれかを選択し、信号D2として出力する。
【0154】
出力選択装置24A−3は、制御信号D3SELに応じて、シフト演算器21A−3の出力信号sft3 out (たとえばMEMR3)とバタフライ演算器23A−1の出力信号btf1b out のいずれかを選択し、信号D3として出力する。
【0155】
出力選択装置25A−0は、制御信号W0SELに応じて、データ入力I0とバタフライ演算器23A−0の出力信号btf0a out のいずれかを選択し、信号MEMW0として出力する。
【0156】
出力選択装置25A−1は、制御信号W1SELに応じて、データ入力I1とバタフライ演算器23A−0の出力信号btf0b out のいずれかを選択し、信号MEMW1として出力する。
【0157】
出力選択装置25A−2は、制御信号W2SELに応じて、データ入力I2とバタフライ演算器23A−1の出力信号btf1a out のいずれかを選択し、信号MEMW2として出力する。
【0158】
出力選択装置25A−3は、制御信号W3SELに応じて、データ入力I3とバタフライ演算器23A−1の出力信号btf1b out のいずれかを選択し、信号MEMW3として出力する。
【0159】
次に、上記構成による動作を説明する。
ここでは、
D1=MEMR0−MEMR1,
D3=MEMR2−MEMR3,
MEMW0=MEMR0+MEMR1,
MEMW2=MEMR2+MEMR3,
MEMW1=I1
MEMW3=I3
の演算を実行するものとする。
【0160】
たとえばシフト演算器21A−0,21A−1,21A−2,21A−3のシフト量が、制御信号SFT0MD,SFT1MD,SFT2MD,SFT3MDによりゼロに設定される。
したがって、シフト演算器21A−0の出力信号sft0 out はMEMR0となり、入力選択装置22A−0および出力選択装置24A−0に供給される。
同様に、シフト演算器21A−1の出力信号sft1 out はMEMR1となり、入力選択装置22A−1および出力選択装置24A−1に供給される。
シフト演算器21A−2の出力信号sft2 out はMEMR2となり、入力選択装置22A−2および出力選択装置24A−2に供給される。
そして、シフト演算器21A−3の出力信号sft3 out はMEMR3となり、入力選択装置22A−3および出力選択装置24A−3に供給される。
【0161】
入力選択装置22A−0では、制御信号R0SELにより、シフト演算器21A−0の出力信号、すなわちMEMR0を選択するように制御され、選択されたデータMEMR0が信号r0sel out として、バラフライ演算器23A−0の入力端子DAに供給される。
入力選択装置22A−1では、制御信号R1SELにより、シフト演算器21A−1の出力信号、すなわちMEMR1を選択するように制御され、選択されたデータMEMR1が信号r1sel out として、バラフライ演算器23A−0の入力端子DBに供給される。
【0162】
また、入力選択装置22A−2では、制御信号R2SELにより、シフト演算器21A−2の出力信号、すなわちMEMR2を選択するように制御され、選択されたデータMEMR2が信号r2sel out として、バラフライ演算器23A−1の入力端子DAに供給される。
入力選択装置22A−3では、制御信号R3SELにより、シフト演算器21A−3の出力信号、すなわちMEMR3を選択するように制御され、選択されたデータMEMR3が信号r3sel out として、バラフライ演算器23A−1の入力端子DBに供給される。
【0163】
バタフライ演算器23A−0では、制御端子CTLに供給される制御信号BTFMD0により、OA=DA+DB,OB=DA−DBが計算されるモードに設定される。
これにより、バタフライ演算器23A−0においては、入力端子DAに供給されたデータMEMR0と入力端子DBに供給されたデータMEMR1とが加算され、その結果である(MEMR0+MEMR1)が出力端子OAから信号btf0a out として、出力選択装置24A−0および25A−0に出力される。
また、バタフライ演算器23A−0においては、入力端子DAに供給されたデータMEMR0と入力端子DBに供給されたデータMEMR1との差がとられ、その結果である(MEMR0−MEMR1)が出力端子OBから信号btf0b out として、出力選択装置24A−1および25A−1に出力される。
【0164】
同様に、バタフライ演算器23A−1では、制御端子CTLに供給される制御信号BTFMD1により、OA=DA+DB,OB=DA−DBが計算されるモードに設定される。
これにより、バタフライ演算器23A−1においては、入力端子DAに供給されたデータMEMR2と入力端子DBに供給されたデータMEMR3とが加算され、その結果である(MEMR2+MEMR3)が出力端子OAから信号btf1a out として、出力選択装置24A−2および25A−2に出力される。
また、バタフライ演算器23A−1においては、入力端子DAに供給されたデータMEMR2と入力端子DBに供給されたデータMEMR3との差がとられ、その結果である(MEMR2−MEMR3)が出力端子OBから信号btf1b out として、出力選択装置24A−3および25A−3に出力される。
【0165】
出力選択装置24A−1において、シフト演算器21A−1の出力信号(MEMR1)とバタフライ演算器23A−0の出力信号btf0b out (=MEMR0−MEMR1)のうち、バタフライ演算器23A−0の出力信号btf0b out を選択するように制御信号D1SELが供給され、これにより選択されたデータが信号D1=MEMR0−MEMR1として出力される。
【0166】
また、出力選択装置25A−0では、データ入力I0とバタフライ演算器23A−0の出力信号btf0a out (=MEMR0+MEMR1)のうち、バタフライ演算器23A−0の出力信号btf0a out を選択するように制御信号W0SELが供給され、これにより選択されたデータが信号MEMW0=MEMR0+MEMR1として出力される。
【0167】
また、出力選択装置25A−1では、データ入力I1とバタフライ演算器23A−0の出力信号btf0b out (=MEMR0−MEMR1)のうち、データ入力I1を選択するように制御信号W1SELが供給され、これにより選択されたデータが信号MEMW1=I1として出力される。
【0168】
また、出力選択装置24A−3において、シフト演算器21A−3の出力信号(MEMR3)とバタフライ演算器23A−1の出力信号btf1b out (=MEMR2−MEMR3)のうち、バタフライ演算器23B−1の出力信号btf1b out を選択するように制御信号D3SELが供給され、これにより選択されたデータが信号D3=MEMR2−MEMR3として出力される。
【0169】
また、出力選択装置25A−2では、データ入力I2とバタフライ演算器23A−1の出力信号btf1a out (=MEMR2+MEMR3)のうち、バタフライ演算器23A−1の出力信号btf1a out を選択するように制御信号W2SELが供給され、これにより選択されたデータが信号MEMW2=MEMR2+MEMR3として出力される。
【0170】
また、出力選択装置25A−3では、データ入力I3とバタフライ演算器23A−1の出力信号btf1b out (=MEMR2−MEMR3)のうち、データ入力I3を選択するように制御信号W3SELが供給され、これにより選択されたデータが信号MEMW3=I3として出力される。
【0171】
本第4の実施形態に係る8入力8出力の演算装置20Aによれば、上述した第3の実施形態の効果と同様の効果を得ることができる。
【0172】
第5実施形態
図7は、本発明に係る演算装置の第5の実施形態を示す構成図である。
【0173】
本第5の実施形態が上述した第4の実施形態と異なる点は、入力端子DAにバタフライ演算器23A−0の出力信号btf0a out を入力し、入力端子DBにバタフライ演算器23A−1の出力信号btf1a out を入力し、制御端子CTLに供給される制御信号BTFMD2の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf2a out として出力選択装置25B−0および25B−2に出力し、他方の演算結果を出力端子OBから信号btf2b out として出力選択装置25B−1および25B−3に出力するバタフライ演算器23A−2を設け、3つのバタフライ演算器をいわゆる多段に配置して、ツリー状に接続した構成としたことにある。
【0174】
なお、本第5の実施形態に係るバタフライ演算器23B−2は、制御信号BTFMD2の値により、以下のいずれかの演算を選択的に行う。
【0175】
【数8】
Figure 0003846196
【0176】
そして、本第5の実施形態においては、出力選択装置25B−0〜25B−3を制御信号W0SEL〜W3SELに応じて3つの入力データの中から一つのデータを選択し、信号MEMW0〜MEMW3として出力するように構成している。
【0177】
出力選択装置25B−0は、制御信号W0SELに応じて、データ入力I0とバタフライ演算器23A−0の出力信号btf0a out とバタフライ演算器23B−2の出力信号btf2a out とのいずれかを選択し、信号MEMW0として出力する。
【0178】
出力選択装置25B−1は、制御信号W1SELに応じて、データ入力I1とバタフライ演算器23A−0の出力信号btf0b out とバタフライ演算器23B−2の出力信号btf2b out のいずれかを選択し、信号MEMW1として出力する。
【0179】
出力選択装置25B−2は、制御信号W2SELに応じて、データ入力I2とバタフライ演算器23A−1の出力信号btf1a out とバタフライ演算器23B−2の出力信号btf2a out のいずれかを選択し、信号MEMW2として出力する。
【0180】
出力選択装置25B−3は、制御信号W3SELに応じて、データ入力I3とバタフライ演算器23A−1の出力信号btf1b out とバタフライ演算器23B−2の出力信号btf2b out のいずれかを選択し、信号MEMW3として出力する。
【0181】
その他の構成および機能は、第4の実施形態に係る図6と同様であることから、図7においては、図6と同一構成部分は、同一符号をもって表している。
【0182】
このような構成において、たとえばバタフライ演算器23A−0の出力信号btf0a out が(MEMR0+MEMR1)で、バタフライ演算器23A−1の出力信号btf1a out が(MEMR2+MEMR3)であるとした場合に、たとえばバタフライ演算器23B−2の出力信号btf2a out が(MEMR0+MEMR1+MEMR2+MEMR3)となり、出力信号btf2b out が(MEMR0+MEMR1−MEMR2−MEMR3)となる。
【0183】
そして、出力選択装置25B−0において、制御信号W0SELに応じて、バタフライ演算器23B−2の出力信号btf2a out を選択するように制御することにより、信号MEMW0は(MEMR0+MEMR1+MEMR2+MEMR3)として出力される。
同様に、出力選択装置25B−2において、制御信号W2SELに応じて、バタフライ演算器23B−2の出力信号btf2a out を選択するように制御することにより、信号MEMW2は(MEMR0+MEMR1+MEMR2+MEMR3)として出力される。
【0184】
また、出力選択装置25B−1において、制御信号W1SELに応じて、バタフライ演算器23B−2の出力信号btf2b out を選択するように制御することにより、信号MEMW1は(MEMR0+MEMR1−MEMR2−MEMR3)として出力される。
同様に、出力選択装置25B−3において、制御信号W3SELに応じて、バタフライ演算器23B−2の出力信号btf2b out を選択するように制御することにより、信号MEMW3は(MEMR0+MEMR1−MEMR2−EMR3)として出力される。
【0185】
その他の構成、および作用は、上述した第4の実施形態と同様であることからここではその説明は省略する。
【0186】
本第5の実施形態によれば、上述した第4の実施形態と同様の効果を得られることはもとより、さらに高度な複雑な演算を容易に行うことができる利点がある。
【0187】
第6実施形態
図8は、本発明に係る演算装置の第6の実施形態を示す構成図である。
【0188】
図8の演算装置20Cは、構成情報に基づいて再構成可能な演算装置であって、16入力16出力の演算を行い、バタフライ演算を実行可能に構成されている。
【0189】
本演算装置20Cは、入力選択装置(RSEL0)22C−0、入力選択装置(RSEL1)22C−1、入力選択装置(RSEL2)22C−2、入力選択装置(RSEL3)22C−3、入力選択装置(RSEL4)22C−4、入力選択装置(RSEL5)22C−5、入力選択装置(RSEL6)22C−6、入力選択装置(RSEL7)22C−7、入力選択装置(BSEL0)22C−8、入力選択装置(BSEL1)22C−9、入力選択装置(BSEL2)22C−10、入力選択装置(BSEL3)22C−11、入力選択装置(BSEL4)22C−12、入力選択装置(BSEL5)22C−13、入力選択装置(BSEL6)22C−14、入力選択装置(BSEL7)22C−15、バタフライ演算器(BTF0)23C−0、バタフライ演算器(BTF1)23C−1、バタフライ演算器(BTF2)23C−2、バタフライ演算器(BTF3)23C−3、バタフライ演算器(BTF4)23C−4、バタフライ演算器(BTF5)23C−5、バタフライ演算器(BTF6)23C−6、バタフライ演算器(BTF7)23C−7、出力選択装置(DSEL0)24C−0、出力選択装置(DSEL1)24C−1、出力選択装置(DSEL2)24C−2、出力選択装置(DSEL3)24C−3、出力選択装置(DSEL4)24C−4、出力選択装置(DSEL5)24C−5、出力選択装置(DSEL6)24C−6、出力選択装置(DSEL7)24C−7、出力選択装置(WSEL0)25C−0、出力選択装置(WSEL1)25C−1、出力選択装置(WSEL2)25C−2、出力選択装置(WSEL3)25C−3、出力選択装置(WSEL4)25C−4、出力選択装置(WSEL5)25C−5、出力選択装置(WSEL6)25C−6、および出力選択装置(WSEL7)25C−7を有している。
【0190】
そして、入力選択装置22C−0〜22C−7が本発明の第1の入力選択装置を構成し、入力選択装置22C−9〜22C−15が本発明の第2の入力選択装置を構成し、バタフライ演算器23C−0,バタフライ演算器23C−2,バタフライ演算器23C−4、およびバタフライ演算器23C−6が本発明の第1の演算器を構成し、バタフライ演算器23C−1,バタフライ演算器23C−3,バタフライ演算器23C−5、およびバタフライ演算器23C−7が本発明の第2の演算器を構成し、出力選択装置24C−0〜24C−7が本発明の第1の出力選択装置を構成し、出力選択装置25C−0〜25C−7が本発明の第2の出力選択装置を構成する。
【0191】
そして、演算装置20Cは、データ入力MEMR0,MEMR1,MEMR2,MEMR3,MEMR4,MEMR5,MEMR6,MEMR7,I0,I1,I2,I3,I4,I5,I6,I7、およびデータ出力MEMW0,MEMW1,MEMW2,MEMW3,MEMW4,MEMW5,MEMW6,MEMW7,D0,D1,D2,D3,D4,D5,D6,D7を有し、また、再構成のための制御信号BTFMD0,BTFMD1,BTFMD2,BTFMD3,BTFMD4,BTFMD5,BTFMD6,BTFMD7、R0SEL,R1SEL,R2SEL,R3SEL,R4SEL,R5SEL,R6SEL,R7SEL、B0SEL,B1SEL,B2SEL,B3SEL,B4SEL,B5SEL,B6SEL,B7SEL、W0SEL,W1SEL,W2SEL,W3SEL,W4SEL,W5SEL,W6SEL,W7SEL、D0SEL,D1SEL,D2SEL,D3SEL,D4SEL,D5SEL,D6SEL,D7SELが供給される。
【0192】
入力選択装置22C−0は、制御信号R0SELに応じて、データ入力MEMR0およびデータ入力I0のいずれかを選択し、信号r0sel out としてバタフライ演算器23C−0に出力する。
【0193】
入力選択装置22C−1は、制御信号R1SELに応じて、データ入力MEMR1およびデータ入力I1のいずれかを選択し、信号r1sel out としてバタフライ演算器23C−0に出力する。
【0194】
入力選択装置22C−2は、制御信号R2SELに応じて、データ入力MEMR2およびデータ入力I2のいずれかを選択し、信号r2sel out としてバタフライ演算器23C−2に出力する。
【0195】
入力選択装置22C−3は、制御信号R3SELに応じて、データ入力MEMR3およびデータ入力I3のいずれかを選択し、信号r3sel out としてバタフライ演算器23C−2に出力する。
【0196】
入力選択装置22C−4は、制御信号R4SELに応じて、データ入力MEMR4およびデータ入力I4のいずれかを選択し、信号r4sel out としてバタフライ演算器23C−4に出力する。
【0197】
入力選択装置22C−5は、制御信号R5SELに応じて、データ入力MEMR5およびデータ入力I5のいずれかを選択し、信号r5sel out としてバタフライ演算器23C−4に出力する。
【0198】
入力選択装置22C−6は、制御信号R6SELに応じて、データ入力MEMR6およびデータ入力I6のいずれかを選択し、信号r6sel out としてバタフライ演算器23C−6に出力する。
【0199】
入力選択装置22C−7は、制御信号R7SELに応じて、データ入力MEMR7およびデータ入力I7のいずれかを選択し、信号r7sel out としてバタフライ演算器23C−6に出力する。
【0200】
入力選択装置22C−8は、制御信号B0SELに応じて、データ入力I0、バタフライ演算器23C−0の出力信号btf0a out 、およびバタフライ演算器23C−6の出力信号btf6b out のいずれかを選択し、信号b0sel out としてバタフライ演算器23C−1に出力する。
【0201】
入力選択装置22C−9は、制御信号B1SELに応じて、データ入力I1、バタフライ演算器23C−0の出力信号btf0b out 、およびバタフライ演算器23C−2の出力信号btf2a out のいずれかを選択し、信号b1sel out としてバタフライ演算器23C−1に出力する。
【0202】
入力選択装置22C−10は、制御信号B2SELに応じて、データ入力I2、バタフライ演算器23C−2の出力信号btf2a out 、およびバタフライ演算器23C−0の出力信号btf0b out のいずれかを選択し、信号b2sel out としてバタフライ演算器23C−3に出力する。
【0203】
入力選択装置22C−11は、制御信号B3SELに応じて、データ入力I3、バタフライ演算器23C−2の出力信号btf2b out 、およびバタフライ演算器23C−4の出力信号btf4a out のいずれかを選択し、信号b3sel out としてバタフライ演算器23C−3に出力する。
【0204】
入力選択装置22C−12は、制御信号B4SELに応じて、データ入力I4、バタフライ演算器23C−4の出力信号btf4a out 、およびバタフライ演算器23C−2の出力信号btf2b out のいずれかを選択し、信号b4sel out としてバタフライ演算器23C−5に出力する。
【0205】
入力選択装置22C−13は、制御信号B5SELに応じて、データ入力I5、バタフライ演算器23C−4の出力信号btf4b out 、およびバタフライ演算器23C−6の出力信号btf6a out のいずれかを選択し、信号b5sel out としてバタフライ演算器23C−5に出力する。
【0206】
入力選択装置22C−14は、制御信号B6SELに応じて、データ入力I6、バタフライ演算器23C−6の出力信号btf6a out 、およびバタフライ演算器23C−4の出力信号btf4b out のいずれかを選択し、信号b6sel out としてバタフライ演算器23C−7に出力する。
【0207】
入力選択装置22C−15は、制御信号B7SELに応じて、データ入力I7、バタフライ演算器23C−6の出力信号btf6b out 、およびバタフライ演算器23C−0の出力信号btf0a out のいずれかを選択し、信号b7sel out としてバタフライ演算器23C−7に出力する。
【0208】
バタフライ演算器23C−0は、入力端子DAに入力選択装置22C−0の出力信号r0sel out を入力し、入力端子DBに入力選択装置22C−1の出力信号r1sel out を入力し、制御端子CTLに供給される制御信号BTFMD0の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf0a out として入力選択装置22C−8および22C−15に出力し、他方の演算結果を出力端子OBから信号btf0b out として入力選択装置22C−9および22C−10に出力する。
【0209】
バタフライ演算器23C−1は、入力端子DAに入力選択装置22C−8の出力信号b0sel out を入力し、入力端子DBに入力選択装置22C−9の出力信号b1sel out を入力し、制御端子CTLに供給される制御信号BTFMD1の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf1a out として出力選択装置24C−0および25C−0に出力し、他方の演算結果を出力端子OBから信号btf1b out として出力選択装置24C−1および25C−1に出力する。
【0210】
バタフライ演算器23C−2は、入力端子DAに入力選択装置22C−2の出力信号r2sel out を入力し、入力端子DBに入力選択装置22C−3の出力信号r3sel out を入力し、制御端子CTLに供給される制御信号BTFMD2の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf2a out として入力選択装置22C−10および22C−9に出力し、他方の演算結果を出力端子OBから信号btf2b out として入力選択装置22C−11および22C−12に出力する。
【0211】
バタフライ演算器23C−3は、入力端子DAに入力選択装置22C−10の出力信号b2sel out を入力し、入力端子DBに入力選択装置22C−11の出力信号b3sel out を入力し、制御端子CTLに供給される制御信号BTFMD3の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf3a out として出力選択装置24C−2および25C−2に出力し、他方の演算結果を出力端子OBから信号btf3b out として出力選択装置24C−3および25C−3に出力する。
【0212】
バタフライ演算器23C−4は、入力端子DAに入力選択装置22C−4の出力信号r4sel out を入力し、入力端子DBに入力選択装置22C−5の出力信号r5sel out を入力し、制御端子CTLに供給される制御信号BTFMD4の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf4a out として入力選択装置22C−12および22C−11に出力し、他方の演算結果を出力端子OBから信号btf4b out として入力選択装置22C−13および22C−14に出力する。
【0213】
バタフライ演算器23C−5は、入力端子DAに入力選択装置22C−12の出力信号b4sel out を入力し、入力端子DBに入力選択装置22C−13の出力信号b5sel out を入力し、制御端子CTLに供給される制御信号BTFMD5の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf5a out として出力選択装置24C−4および25C−4に出力し、他方の演算結果を出力端子OBから信号btf5b out として出力選択装置24C−5および25C−5に出力する。
【0214】
バタフライ演算器23C−6は、入力端子DAに入力選択装置22C−6の出力信号r6sel out を入力し、入力端子DBに入力選択装置22C−7の出力信号r7sel out を入力し、制御端子CTLに供給される制御信号BTFMD6の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf6a out として入力選択装置22C−14および22C−13に出力し、他方の演算結果を出力端子OBから信号btf6b out として入力選択装置22C−15および22C−8に出力する。
【0215】
バタフライ演算器23C−7は、入力端子DAに入力選択装置22C−14の出力信号b6sel out を入力し、入力端子DBに入力選択装置22C−15の出力信号b7sel out を入力し、制御端子CTLに供給される制御信号BTFMD7の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf7a out として出力選択装置24C−6および25C−6に出力し、他方の演算結果を出力端子OBから信号btf7b out として出力選択装置24C−7および25C−7に出力する。
【0216】
具体的には、バタフライ演算器23C−i(i=0,2,4,6)は、制御信号BTFMDiの値により、以下のいずれかの演算を選択的に行う。
【0217】
【数9】
Figure 0003846196
【0218】
また、バタフライ演算器23C−j(j=1,3,5,7)は、制御信号BTFMDjの値により、以下のいずれかの演算を選択的に行う。
【0219】
【数10】
Figure 0003846196
【0220】
出力選択装置24C−0は、制御信号D0SELに応じて、データ入力MEMR0とバタフライ演算器23C−1の出力信号btf1a out のいずれかを選択し、信号D0として出力する。
【0221】
出力選択装置24C−1は、制御信号D1SELに応じて、データ入力MEMR1とバタフライ演算器23C−1の出力信号btf1b out のいずれかを選択し、信号D1として出力する。
【0222】
出力選択装置24C−2は、制御信号D2SELに応じて、データ入力MEMR2とバタフライ演算器23C−3の出力信号btf3a out のいずれかを選択し、信号D2として出力する。
【0223】
出力選択装置24C−3は、制御信号D3SELに応じて、データ入力MEMR3とバタフライ演算器23C−3の出力信号btf3b out のいずれかを選択し、信号D3として出力する。
【0224】
出力選択装置24C−4は、制御信号D4SELに応じて、データ入力MEMR4とバタフライ演算器23C−5の出力信号btf5a out のいずれかを選択し、信号D4として出力する。
【0225】
出力選択装置24C−5は、制御信号D5SELに応じて、データ入力MEMR5とバタフライ演算器23C−5の出力信号btf5b out のいずれかを選択し、信号D5として出力する。
【0226】
出力選択装置24C−6は、制御信号D6SELに応じて、データ入力MEMR6とバタフライ演算器23C−7の出力信号btf7a out のいずれかを選択し、信号D6として出力する。
【0227】
出力選択装置24C−7は、制御信号D7SELに応じて、データ入力MEMR7とバタフライ演算器23C−7の出力信号btf7b out のいずれかを選択し、信号D7として出力する。
【0228】
出力選択装置25C−0は、制御信号W0SELに応じて、データ入力I0とバタフライ演算器23C−1の出力信号btf1a out のいずれかを選択し、信号MEMW0として出力する。
【0229】
出力選択装置25C−1は、制御信号W1SELに応じて、データ入力I1とバタフライ演算器23C−1の出力信号btf1b out のいずれかを選択し、信号MEMW1として出力する。
【0230】
出力選択装置25C−2は、制御信号W2SELに応じて、データ入力I2とバタフライ演算器23C−3の出力信号btf3a out のいずれかを選択し、信号MEMW2として出力する。
【0231】
出力選択装置25C−3は、制御信号W3SELに応じて、データ入力I3とバタフライ演算器23C−3の出力信号btf3b out のいずれかを選択し、信号MEMW3として出力する。
【0232】
出力選択装置25C−4は、制御信号W4SELに応じて、データ入力I4とバタフライ演算器23C−5の出力信号btf5a out のいずれかを選択し、信号MEMW4として出力する。
【0233】
出力選択装置25C−5は、制御信号W5SELに応じて、データ入力I5とバタフライ演算器23C−5の出力信号btf5b out のいずれかを選択し、信号MEMW5として出力する。
【0234】
出力選択装置25C−6は、制御信号W6SELに応じて、データ入力I6とバタフライ演算器23C−7の出力信号btf7a out のいずれかを選択し、信号MEMW6として出力する。
【0235】
出力選択装置25C−7は、制御信号W7SELに応じて、データ入力I7とバタフライ演算器23C−7の出力信号btf7b out のいずれかを選択し、信号MEMW7として出力する。
【0236】
次に、上記構成による動作を説明する。
ここでは、たとえば以下の演算を実行するものとする。
D0=MEMR6−MEMR7+MEMR0−MEMR1,
D1=MEMR1,
D6=MEMR6,
D7=MEMR6+MEMR7−MEMR0−MEMR1,
MEMW0=I0
MEMW1=MEMR6−MEMR7−MEMR0+MEMR1,
MEMW6=MEMR0+MEMR1+MEMR6+MEMR7,
MEMW7=I7
【0237】
この場合、入力選択装置22C−0では、制御信号R0SELにより、データ入力MEMR0を選択するように制御され、選択されたデータMEMR0が信号r0sel out として、バラフライ演算器23C−0の入力端子DAに供給される。
入力選択装置22C−1では、制御信号R1SELにより、MEMR1を選択するように制御され、選択されたデータMEMR1が信号r1sel out として、バラフライ演算器23C−0の入力端子DBに供給される。
【0238】
また、入力選択装置22C−6では、制御信号R6SELにより、MEMR6を選択するように制御され、選択されたデータMEMR6が信号r6sel out として、バラフライ演算器23C−6の入力端子DAに供給される。
入力選択装置22C−7では、制御信号R7SELにより、MEMR7を選択するように制御され、選択されたデータMEMR7が信号r7sel out として、バラフライ演算器23C−の入力端子DBに供給される。
【0239】
バタフライ演算器23C−0では、制御端子CTLに供給される制御信号BTFMD0により、OA=DA+DB,OB=DA−DBが計算されるモードに設定される。
これにより、バタフライ演算器23C−0においては、入力端子DAに供給されたデータMEMR0と入力端子DBに供給されたデータMEMR1とが加算され、その結果である(MEMR0+MEMR1)が出力端子OAから信号btf0a out として、入力選択装置22C−8および22C−15に出力される。また、バタフライ演算器23C−0においては、入力端子DAに供給されたデータMEMR0と入力端子DBに供給されたデータMEMR1との差がとられ、その結果である(MEMR0−MEMR1)が出力端子OBから信号btf0b out として、入力選択装置22C−9および22C−10に出力される。
【0240】
同様に、バタフライ演算器23C−6では、制御端子CTLに供給される制御信号BTFMD6により、OA=DA+DB,OB=DA−DBが計算されるモードに設定される。
これにより、バタフライ演算器23C−6においては、入力端子DAに供給されたデータMEMR6と入力端子DBに供給されたデータMEMR7とが加算され、その結果である(MEMR6+MEMR7)が出力端子OAから信号btf6a out として、入力選択装置22C−14および22C−13に出力される。
また、バタフライ演算器23C−6においては、入力端子DAに供給されたデータMEMR6と入力端子DBに供給されたデータMEMR7との差がとられ、その結果である(MEMR6−MEMR7)が出力端子OBから信号btf6b out として、入力選択装置22C−15および22C−8に出力される。
【0241】
そして、入力選択装置22C−8では、制御信号B0SELにより、バタフライ演算器23C−6の出力信号btf6b out (=MEMR6−MEMR7)を選択するように制御され、選択されたデータ(MEMR6−MEMR7)が信号b0sel out として、バラフライ演算器23C−1の入力端子DAに供給される。
入力選択装置22C−9では、制御信号B1SELにより、バタフライ演算器23C−0の出力信号btf0b out (=MEMR0−MEMR1)を選択するように制御され、選択されたデータ(MEMR0−MEMR1)が信号b1sel out として、バラフライ演算器23C−1の入力端子DBに供給される。
【0242】
また、入力選択装置22C−14では、制御信号B6SELにより、バタフライ演算器23C−6の出力信号btf6a out (=MEMR6+MEMR7)を選択するように制御され、選択されたデータ(MEMR6+MEMR7)が信号b6sel out として、バラフライ演算器23C−7の入力端子DAに供給される。
入力選択装置22C−15では、制御信号B7SELにより、バタフライ演算器23C−0の出力信号btf0a out (=MEMR0+MEMR1)を選択するように制御され、選択されたデータ(MEMR0+MEMR1)が信号b7sel out として、バラフライ演算器23C−7の入力端子DBに供給される。
【0243】
バタフライ演算器23C−1では、制御端子CTLに供給される制御信号BTFMD1により、OA=DA+DB,OB=DA−DBが計算されるモードに設定される。
これにより、バタフライ演算器23C−1においては、入力端子DAに供給されたデータ(MEMR6−MEMR7)と入力端子DBに供給されたデータ(MEMR0−MEMR1)とが加算され、その結果である(MEMR6−MEMR7+MEMR0−MEMR1)が出力端子OAから信号btf1a out として、出力選択装置24C−0および25C−0に出力される。
また、バタフライ演算器23C−1においては、入力端子DAに供給されたデータ(MEMR6−MEMR7)と入力端子DBに供給されたデータ(MEMR0−MEMR1)との差がとられ、その結果である(MEMR6−MEMR7−MEMR0+MEMR1)が出力端子OBから信号btf1b out として、出力選択装置24C−1および25C−1に出力される。
【0244】
同様に、バタフライ演算器23C−7では、制御端子CTLに供給される制御信号BTFMD7により、OA=DA+DB,OB=DA−DBが計算されるモードに設定される。
これにより、バタフライ演算器23C−7においては、入力端子DAに供給されたデータ(MEMR6+MEMR7)と入力端子DBに供給されたデータ(MEMR0+MEMR1)とが加算され、その結果である(MEMR6+MEMR7+MEMR0+MEMR1)が出力端子OAから信号btf7a out として、出力選択装置24C−6および25C−6に出力される。
また、バタフライ演算器23C−7においては、入力端子DAに供給されたデータ(MEMR6+MEMR7)と入力端子DBに供給されたデータ(MEMR0+MEMR1)との差がとられ、その結果である(MEMR6+MEMR7−MEMR0−MEMR1)が出力端子OBから信号btf7b out として、出力選択装置24C−7および25C−7に出力される。
【0245】
出力選択装置24C−0においては、データ入力MEMR0とバタフライ演算器23C−1の出力信号btf1a out (=MEMR6−MEMR7+MEMR0−MEMR1)のうち、バタフライ演算器23C−1の出力信号btf1a out を選択するように制御信号D0SELが供給され、これにより選択されたデータが信号D0=MEMR6−MEMR7+MEMR0−MEMR1として出力される。
【0246】
出力選択装置24C−1においては、データ入力MEMR1とバタフライ演算器23C−1の出力信号btf1b out (=MEMR6−MEMR7−MEMR0+MEMR1)のうち、データ入力MEMR1を選択するように制御信号D1SELが供給され、これにより選択されたデータが信号D1=MEMR1として出力される。
【0247】
出力選択装置24C−6においては、データ入力MEMR6とバタフライ演算器23C−7の出力信号btf7a out (=MEMR6+MEMR7+MEMR0+MEMR1)のうち、データ入力MEMR6を選択するように制御信号D6SELが供給され、これにより選択されたデータが信号D6=MEMR6として出力される。
【0248】
出力選択装置24C−7においては、データ入力MEMR7とバタフライ演算器23C−7の出力信号btf7b out (=MEMR6+MEMR7−MEMR0−MEMR1)のうち、バタフライ演算器23C−7の出力信号btf7b out を選択するように制御信号D7SELが供給され、これにより選択されたデータが信号D7=MEMR6+MEMR7−MEMR0−MEMR1として出力される。
【0249】
また、出力選択装置25C−0では、データ入力I0とバタフライ演算器23C−1の出力信号btf1a out (=MEMR6−MEMR7+MEMR0−MEMR1)のうち、入力データI0を選択するように制御信号W0SELが供給され、これにより選択されたデータが信号MEMW0=I0として出力される。
【0250】
出力選択装置25C−1においては、データ入力I1とバタフライ演算器23C−1の出力信号btf1b out (=MEMR6−MEMR7−MEMR0+MEMR1)のうち、バタフライ演算器23C−1の出力信号btf1b outを選択するように制御信号W1SELが供給され、これにより選択されたデータが信号MEMW1=MEMR6−MEMR7−MEMR0+MEMR1として出力される。
【0251】
出力選択装置25C−6においては、データ入力I6とバタフライ演算器23C−7の出力信号btf7a out (=MEMR6+MEMR7+MEMR0+MEMR1)のうち、バタフライ演算器23C−7の出力信号btf7a outを選択するように制御信号W6SELが供給され、これにより選択されたデータが信号MEMW6=MEMR0+MEMR1+MEMR6+MEMR7として出力される。
【0252】
また、出力選択装置25C−7では、データ入力I7とバタフライ演算器23C−7の出力信号btf7b out (=MEMR6+MEMR7−MEMR0−MEMR1)のうち、入力データI7を選択するように制御信号W7SELが供給され、これにより選択されたデータが信号MEMW7=I7として出力される。
【0253】
以上のように、本第6の実施形態に係る16入力16出力の演算装置20Cによれば、上述した第3の実施形態の効果と同様の効果を得ることができる。
【0254】
なお、本第6の実施形態においては、データ入力MEMR0〜MEMR7の入力段に単項演算器、たとえばシフト演算器を、上述した第3〜第5の実施形態と同様に、配置することが可能である。
この場合、単項演算器SFT0,SFT1,SFT2,SFT3,SFT4,SFT5,SFT6,SFT7は、それぞれたとえば制御信号SFT0MD,SFT1MD,SFT2MD,SFT3MD,SFT4MD,SFT5MD,SFT6MD,SFT7MDを入力とし、MEMR0,MEMR1,MEMR2,MEMR3,MEMR4,MEMR5,MEMR6,MEMR7の値を、制御信号SFT0MD,SFT1MD,SFT2MD,SFT3MD,SFT4MD,SFT5MD,SFT6MD,SFT7MDの値に応じて単項演算を行い、その結果を入力選択装置22C−0〜22C−7(RSEL0〜RSEL7)、出力選択装置24C−0〜24C−7(DSEL0〜DSEL7)に出力するように構成される。
ただし、ここで単項演算器は、左または右に任意ビットシフトする演算で実現される演算器である。
【0255】
第7実施形態
図9は、本発明に係る演算装置の第7の実施形態を示す構成図である。
【0256】
図9の演算装置20Dは、構成情報に基づいて再構成可能な演算装置であって、16入力16出力の演算を行い、バタフライ演算を実行可能に構成されている。
【0257】
本演算装置20Dは、入力選択装置(RSEL0)22D−0、入力選択装置(RSEL1)22D−1、入力選択装置(RSEL2)22D−2、入力選択装置(RSEL3)22D−3、入力選択装置(RSEL4)22D−4、入力選択装置(RSEL5)22D−5、入力選択装置(RSEL6)22D−6、入力選択装置(RSEL7)22D−7、バタフライ演算器(BTF0)23D−0、バタフライ演算器(BTF1)23D−1、バタフライ演算器(BTF2)23D−2、バタフライ演算器(BTF3)23D−3、バタフライ演算器(BTF4)23D−4、バタフライ演算器(BTF5)23D−5、バタフライ演算器(BTF6)23D−6、出力選択装置(DSEL0)24D−0、出力選択装置(DSEL1)24D−1、出力選択装置(DSEL2)24D−2、出力選択装置(DSEL3)24D−3、出力選択装置(DSEL4)24D−4、出力選択装置(DSEL5)24D−5、出力選択装置(DSEL6)24D−6、出力選択装置(DSEL7)24D−7、出力選択装置(WSEL0)25D−0、出力選択装置(WSEL1)25D−1、出力選択装置(WSEL2)25D−2、出力選択装置(WSEL3)25D−3、出力選択装置(WSEL4)25D−4、出力選択装置(WSEL5)25D−5、出力選択装置(WSEL6)25D−6、および出力選択装置(WSEL7)25D−7を有している。
【0258】
そして、演算装置20Dは、データ入力MEMR0,MEMR1,MEMR2,MEMR3,MEMR4,MEMR5,MEMR6,MEMR7,I0,I1,I2,I3,I4,I5,I6,I7、およびデータ出力MEMW0,MEMW1,MEMW2,MEMW3,MEMW4,MEMW5,MEMW6,MEMW7,D0,D1,D2,D3,D4,D5,D6,D7を有し、また、再構成のための制御信号BTFMD0,BTFMD1,BTFMD2,BTFMD3,BTFMD4,BTFMD5,BTFMD6、R0SEL,R1SEL,R2SEL,R3SEL,R4SEL,R5SEL,R6SEL,R7SEL、W0SEL,W1SEL,W2SEL,W3SEL,W4SEL,W5SEL,W6SEL,W7SEL、D0SEL,D1SEL,D2SEL,D3SEL,D4SEL,D5SEL,D6SEL,D7SELが供給される。
【0259】
入力選択装置22D−0は、制御信号R0SELに応じて、データ入力MEMR0およびデータ入力I0のいずれかを選択し、信号r0sel out としてバタフライ演算器23D−0に出力する。
【0260】
入力選択装置22D−1は、制御信号R1SELに応じて、データ入力MEMR1およびデータ入力I1のいずれかを選択し、信号r1sel out としてバタフライ演算器23D−0に出力する。
【0261】
入力選択装置22D−2は、制御信号R2SELに応じて、データ入力MEMR2およびデータ入力I2のいずれかを選択し、信号r2sel out としてバタフライ演算器23D−1に出力する。
【0262】
入力選択装置22D−3は、制御信号R3SELに応じて、データ入力MEMR3およびデータ入力I3のいずれかを選択し、信号r3sel out としてバタフライ演算器23D−1に出力する。
【0263】
入力選択装置22D−4は、制御信号R4SELに応じて、データ入力MEMR4およびデータ入力I4のいずれかを選択し、信号r4sel out としてバタフライ演算器23D−2に出力する。
【0264】
入力選択装置22D−5は、制御信号R5SELに応じて、データ入力MEMR5およびデータ入力I5のいずれかを選択し、信号r5sel out としてバタフライ演算器23D−2に出力する。
【0265】
入力選択装置22D−6は、制御信号R6SELに応じて、データ入力MEMR6およびデータ入力I6のいずれかを選択し、信号r6sel out としてバタフライ演算器23D−3に出力する。
【0266】
入力選択装置22D−7は、制御信号R7SELに応じて、データ入力MEMR7およびデータ入力I7のいずれかを選択し、信号r7sel out としてバタフライ演算器23D−3に出力する。
【0267】
バタフライ演算器23D−0は、入力端子DAに入力選択装置22D−0の出力信号r0sel out を入力し、入力端子DBに入力選択装置22D−1の出力信号r1sel out を入力し、制御端子CTLに供給される制御信号BTFMD0の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf0a out としてバタフライ演算器23D−4、出力選択装置24D−0、および25D−0に出力し、他方の演算結果を出力端子OBから信号btf0b out として出力選択装置24D−1および25D−1に出力する。
【0268】
バタフライ演算器23D−1は、入力端子DAに入力選択装置22D−2の出力信号r2sel out を入力し、入力端子DBに入力選択装置22D−3の出力信号r3sel out を入力し、制御端子CTLに供給される制御信号BTFMD1の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf1a out としてバタフライ演算器23D−4、出力選択装置24D−2、および25D−2に出力し、他方の演算結果を出力端子OBから信号btf1b out として出力選択装置24D−3および25D−3に出力する。
【0269】
バタフライ演算器23D−2は、入力端子DAに入力選択装置22D−4の出力信号r4sel out を入力し、入力端子DBに入力選択装置22D−5の出力信号r5sel out を入力し、制御端子CTLに供給される制御信号BTFMD2の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf2a out としてバタフライ演算器23D−5、出力選択装置24D−4、および25D−4に出力し、他方の演算結果を出力端子OBから信号btf2b out として出力選択装置24D−5および25D−5に出力する。
【0270】
バタフライ演算器23D−3は、入力端子DAに入力選択装置22D−6の出力信号r6sel out を入力し、入力端子DBに入力選択装置22D−7の出力信号r7sel out を入力し、制御端子CTLに供給される制御信号BTFMD3の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf3a out としてバタフライ演算器23D−5、出力選択装置24D−6、および25D−6に出力し、他方の演算結果を出力端子OBから信号btf3b out として出力選択装置24D−7および25D−7に出力する。
【0271】
バタフライ演算器23D−4は、入力端子DAにバタフライ演算器23D−0の出力信号btf0a out を入力し、入力端子DBにバタフライ演算器23D−1の出力信号btf1a out を入力し、制御端子CTLに供給される制御信号BTFMD4の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf4a out としてバタフライ演算器23D−6、出力選択装置25D−0および25D−2に出力し、他方の演算結果を出力端子OBから信号btf4b out として出力選択装置25D−1および25D−3に出力する。
【0272】
バタフライ演算器23D−5は、入力端子DAにバタフライ演算器23D−2の出力信号btf2a out を入力し、入力端子DBにバタフライ演算器23D−3の出力信号btf3a out を入力し、制御端子CTLに供給される制御信号BTFMD5の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf5a out としてバタフライ演算器23D−6、出力選択装置25D−4および25D−6に出力し、他方の演算結果を出力端子OBから信号btf5b out として出力選択装置25D−5および25D−7に出力する。
【0273】
バタフライ演算器23D−6は、入力端子DAにバタフライ演算器23D−4の出力信号btf4a out を入力し、入力端子DBにバタフライ演算器23D−5の出力信号btf5a out を入力し、制御端子CTLに供給される制御信号BTFMD6の指示に応じた演算を行って2つの演算結果を得、一方の演算結果を出力端子OAから信号btf6a out として出力選択装置25D−0、25D−2、25D−4、および25D−6に出力し、他方の演算結果を出力端子OBから信号btf6b out として出力選択装置25D−1、25D−3、25D−5、および25D−7に出力する。
【0274】
具体的には、バタフライ演算器23D−l(l=0,1,2,3)は、制御信号BTFMDlの値により、以下のいずれかの演算を選択的に行う。
【0275】
【数11】
Figure 0003846196
【0276】
また、バタフライ演算器23D−4は、制御信号BTFMD4の値により、以下のいずれかの演算を選択的に行う。
【0277】
【数12】
Figure 0003846196
【0278】
また、バタフライ演算器23D−5は、制御信号BTFMD5の値により、以下のいずれかの演算を選択的に行う。
【0279】
【数13】
Figure 0003846196
【0280】
出力選択装置24D−0は、制御信号D0SELに応じて、データ入力MEMR0とバタフライ演算器23D−0の出力信号btf0a out のいずれかを選択し、信号D0として出力する。
【0281】
出力選択装置24D−1は、制御信号D1SELに応じて、データ入力MEMR1とバタフライ演算器23D−0の出力信号btf0b out のいずれかを選択し、信号D1として出力する。
【0282】
出力選択装置24D−2は、制御信号D2SELに応じて、データ入力MEMR2とバタフライ演算器23D−1の出力信号btf1a out のいずれかを選択し、信号D2として出力する。
【0283】
出力選択装置24D−3は、制御信号D3SELに応じて、データ入力MEMR3とバタフライ演算器23D−1の出力信号btf1b out のいずれかを選択し、信号D3として出力する。
【0284】
出力選択装置24D−4は、制御信号D4SELに応じて、データ入力MEMR4とバタフライ演算器23D−2の出力信号btf2a out のいずれかを選択し、信号D4として出力する。
【0285】
出力選択装置24D−5は、制御信号D5SELに応じて、データ入力MEMR5とバタフライ演算器23D−2の出力信号btf2b out のいずれかを選択し、信号D5として出力する。
【0286】
出力選択装置24D−6は、制御信号D6SELに応じて、データ入力MEMR6とバタフライ演算器23D−3の出力信号btf3a out のいずれかを選択し、信号D6として出力する。
【0287】
出力選択装置24D−7は、制御信号D7SELに応じて、データ入力MEMR7とバタフライ演算器23D−3の出力信号btf3b out のいずれかを選択し、信号D7として出力する。
【0288】
出力選択装置25D−0は、制御信号W0SELに応じて、データ入力I0とバタフライ演算器23D−0の出力信号btf0a out とバタフライ演算器23D−4の出力信号btf4a out とバタフライ演算器23D−6の出力信号btf6a out のいずれかを選択し、信号MEMW0として出力する。
【0289】
出力選択装置25D−1は、制御信号W1SELに応じて、データ入力I1とバタフライ演算器23D−0の出力信号btf0b out とバタフライ演算器23D−4の出力信号btf4b out とバタフライ演算器23D−6の出力信号btf6b out のいずれかを選択し、信号MEMW1として出力する。
【0290】
出力選択装置25D−2は、制御信号W2SELに応じて、データ入力I2とバタフライ演算器23D−1の出力信号btf1a out とバタフライ演算器23D−4の出力信号btf4a out とバタフライ演算器23D−6の出力信号btf6a out のいずれかを選択し、信号MEMW2として出力する。
【0291】
出力選択装置25D−3は、制御信号W3SELに応じて、データ入力I3とバタフライ演算器23D−1の出力信号btf1b out とバタフライ演算器23D−4の出力信号btf4b out とバタフライ演算器23D−6の出力信号btf6b out のいずれかを選択し、信号MEMW3として出力する。
【0292】
出力選択装置25D−4は、制御信号W4SELに応じて、データ入力I4とバタフライ演算器23D−2の出力信号btf2a out とバタフライ演算器23D−5の出力信号btf5a out とバタフライ演算器23D−6の出力信号btf6a out のいずれかを選択し、信号MEMW4として出力する。
【0293】
出力選択装置25D−5は、制御信号W5SELに応じて、データ入力I5とバタフライ演算器23D−2の出力信号btf2b out とバタフライ演算器23D−5の出力信号btf5b out とバタフライ演算器23D−6の出力信号btf6b out のいずれかを選択し、信号MEMW5として出力する。
【0294】
出力選択装置25D−6は、制御信号W6SELに応じて、データ入力I6とバタフライ演算器23D−3の出力信号btf3a out とバタフライ演算器23D−5の出力信号btf5a out とバタフライ演算器23D−6の出力信号btf6a out のいずれかを選択し、信号MEMW6として出力する。
【0295】
出力選択装置25D−7は、制御信号W7SELに応じて、データ入力I7とバタフライ演算器23D−3の出力信号btf3b out とバタフライ演算器23D−5の出力信号btf5b out とバタフライ演算器23D−6の出力信号btf6b out のいずれかを選択し、信号MEMW7として出力する。
【0296】
次に、上記構成による動作を説明する。
なおここでは、たとえば以下のように全ての出力D0〜D7,MEMW0〜MEMW7を得る場合を例に、装置全体の動作を説明する。
D0=MEMR0+MEMR1,
D1=MEMR1,
D2=MEMR2,
D3=MEMR2−MEMR3,
D4=MEMR4+MEMR5,
D5=MEMR5,
D6=MEMR6+MEMR7,
D7=MEMR6−MEMR7,
MEMW0=I0
MEMW1=MEMR0+MEMR1−MEMR2−MEMR3,
MEMW2=MEMR0+MEMR1+MEMR2+MEMR3,
MEMW3=I3
MEMW4=MEMR0+MEMR1+MEMR2+MEMR3+MEMR4+MEMR5+MEMR6+MEMR7,
MEMW5=MEMR4+MEMR5−MEMR6−MEMR7,
MEMW6=I6
MEMW7=MEMR0+MEMR1+MEMR2+MEMR3−MEMR4−MEMR5−MEMR6−MEMR7
【0297】
この場合、入力選択装置22D−0では、制御信号R0SELにより、データ入力MEMR0を選択するように制御され、選択されたデータMEMR0が信号r0sel out として、バタフライ演算器23D−0の入力端子DAに供給される。
入力選択装置22D−1では、制御信号R1SELにより、MEMR1を選択するように制御され、選択されたデータMEMR1が信号r1sel out として、バタフライ演算器23D−0の入力端子DBに供給される。
【0298】
また、入力選択装置22D−2では、制御信号R2SELにより、MEMR2を選択するように制御され、選択されたデータMEMR2が信号r2sel out として、バタフライ演算器23D−1の入力端子DAに供給される。
入力選択装置22D−3では、制御信号R3SELにより、MEMR3を選択するように制御され、選択されたデータMEMR3が信号r3sel out として、バタフライ演算器23D−1の入力端子DBに供給される。
【0299】
また、入力選択装置22D−4では、制御信号R4SELにより、MEMR4を選択するように制御され、選択されたデータMEMR4が信号r4sel out として、バタフライ演算器23D−2の入力端子DAに供給される。
入力選択装置22D−5では、制御信号R5SELにより、MEMR5を選択するように制御され、選択されたデータMEMR5が信号r5sel out として、バタフライ演算器23D−2の入力端子DBに供給される。
【0300】
また、入力選択装置22D−6では、制御信号R6SELにより、MEMR6を選択するように制御され、選択されたデータMEMR6が信号r6sel out として、バタフライ演算器23D−3の入力端子DAに供給される。
入力選択装置22D−7では、制御信号R7SELにより、MEMR7を選択するように制御され、選択されたデータMEMR7が信号r7sel out として、バタフライ演算器23D−3の入力端子DBに供給される。
【0301】
バタフライ演算器23D−0では、制御端子CTLに供給される制御信号BTFMD0により、OA=DA+DB,OB=DA−DBが計算されるモードに設定される。
これにより、バタフライ演算器23D−0においては、入力端子DAに供給されたデータMEMR0と入力端子DBに供給されたデータMEMR1とが加算され、その結果である(MEMR0+MEMR1)が出力端子OAから信号btf0a out として、バタフライ演算器23D−4の入力端子DA、出力選択装置24D−0および25D−0に出力される。
また、バタフライ演算器23D−0においては、入力端子DAに供給されたデータMEMR0と入力端子DBに供給されたデータMEMR1との差がとられ、その結果である(MEMR0−MEMR1)が出力端子OBから信号btf0b out として、出力選択装置24D−1および25D−1に出力される。
【0302】
バタフライ演算器23D−1では、制御端子CTLに供給される制御信号BTFMD1により、OA=DA+DB,OB=DA−DBが計算されるモードに設定される。
これにより、バタフライ演算器23D−1においては、入力端子DAに供給されたデータMEMR2と入力端子DBに供給されたデータMEMR3とが加算され、その結果である(MEMR2+MEMR3)が出力端子OAから信号btf1a out として、バタフライ演算器23D−4の入力端子DB、出力選択装置24D−2および25D−2に出力される。
また、バタフライ演算器23D−1においては、入力端子DAに供給されたデータMEMR2と入力端子DBに供給されたデータMEMR3との差がとられ、その結果である(MEMR2−MEMR3)が出力端子OBから信号btf1b out として、出力選択装置24D−3および25D−3に出力される。
【0303】
バタフライ演算器23D−2では、制御端子CTLに供給される制御信号BTFMD2により、OA=DA+DB,OB=DA−DBが計算されるモードに設定される。
これにより、バタフライ演算器23D−2においては、入力端子DAに供給されたデータMEMR4と入力端子DBに供給されたデータMEMR5とが加算され、その結果である(MEMR4+MEMR5)が出力端子OAから信号btf2a out として、バタフライ演算器23D−5の入力端子DA、出力選択装置24D−4および25D−4に出力される。
また、バタフライ演算器23D−2においては、入力端子DAに供給されたデータMEMR4と入力端子DBに供給されたデータMEMR5との差がとられ、その結果である(MEMR4−MEMR5)が出力端子OBから信号btf2b out として、出力選択装置24D−5および25D−5に出力される。
【0304】
バタフライ演算器23D−3では、制御端子CTLに供給される制御信号BTFMD3により、OA=DA+DB,OB=DA−DBが計算されるモードに設定される。
これにより、バタフライ演算器23D−3においては、入力端子DAに供給されたデータMEMR6と入力端子DBに供給されたデータMEMR7とが加算され、その結果である(MEMR6+MEMR7)が出力端子OAから信号btf3a out として、バタフライ演算器23D−5の入力端子DB、出力選択装置24D−6および25D−6に出力される。
また、バタフライ演算器23D−3においては、入力端子DAに供給されたデータMEMR6と入力端子DBに供給されたデータMEMR6との差がとられ、その結果である(MEMR6−MEMR7)が出力端子OBから信号btf3b out として、出力選択装置24D−7および25D−7に出力される。
【0305】
バタフライ演算器23D−4では、制御端子CTLに供給される制御信号BTFMD4により、OA=DA+DB,OB=DA−DBが計算されるモードに設定される。
これにより、バタフライ演算器23D−4においては、入力端子DAに供給されたデータ(MEMR0+MEMR1)と入力端子DBに供給されたデータ(MEMR2+MEMR3)とが加算され、その結果である(MEMR0+MEMR1+MEMR2+MEMR3)が出力端子OAから信号btf4a out として、バタフライ演算器23D−6の入力端子DA、出力選択装置25D−0および25D−2に出力される。
また、バタフライ演算器23D−4においては、入力端子DAに供給されたデータ(MEMR0+MEMR1)と入力端子DBに供給されたデータ(MEMR2+MEMR3)との差がとられ、その結果である(MEMR0+MEMR1−MEMR2−MEMR3)が出力端子OBから信号btf4b out として、出力選択装置25D−1および25D−3に出力される。
【0306】
バタフライ演算器23D−5では、制御端子CTLに供給される制御信号BTFMD5により、OA=DA+DB,OB=DA−DBが計算されるモードに設定される。
これにより、バタフライ演算器23D−5においては、入力端子DAに供給されたデータ(MEMR4+MEMR5)と入力端子DBに供給されたデータ(MEMR6+MEMR7)とが加算され、その結果である(MEMR4+MEMR5+MEMR6+MEMR7)が出力端子OAから信号btf5a out として、バタフライ演算器23D−6の入力端子DB、出力選択装置25D−4および25D−6に出力される。
また、バタフライ演算器23D−5においては、入力端子DAに供給されたデータ(MEMR4+MEMR5)と入力端子DBに供給されたデータ(MEMR6+MEMR7)との差がとられ、その結果である(MEMR4+MEMR5−MEMR6−MEMR7)が出力端子OBから信号btf5b out として、出力選択装置25D−5および25D−7に出力される。
【0307】
そして、バタフライ演算器23D−6では、制御端子CTLに供給される制御信号BTFMD6により、OA=DA+DB,OB=DA−DBが計算されるモードに設定される。
これにより、バタフライ演算器23D−6においては、入力端子DAに供給されたデータ(MEMR0+MEMR1+MEMR2+MEMR3)と入力端子DBに供給されたデータ(MEMR4+MEMR5+MEMR6+MEMR7)とが加算され、その結果である(MEMR0+MEMR1+MEMR2+MEMR3+MEMR4+MEMR5+MEMR6+MEMR7)が出力端子OAから信号btf6a out として、出力選択装置25D−0、25D−2、25D−4および25D−6に出力される。
また、バタフライ演算器23D−6においては、入力端子DAに供給されたデータ(MEMR0+MEMR1+MEMR2+MEMR3)と入力端子DBに供給されたデータ(MEMR4+MEMR5+MEMR6+MEMR7)との差がとられ、その結果である(MEMR0+MEMR1+MEMR2+MEMR3−MEMR4−MEMR5−MEMR6−MEMR7)が出力端子OBから信号btf6b out として、出力選択装置25D−1、25D−3、25D−5および25D−7に出力される。
【0308】
出力選択装置24D−0においては、データ入力MEMR0とバタフライ演算器23D−0の出力信号btf0a out (=MEMR0+MEMR1)のうち、バタフライ演算器23D−0の出力信号btf0a out を選択するように制御信号D0SELが供給され、これにより選択されたデータが信号D0=MEMR0+MEMR1として出力される。
【0309】
出力選択装置24D−1においては、データ入力MEMR1とバタフライ演算器23D−0の出力信号btf0b out (=MEMR0−MEMR1)のうち、データ入力MEMR1を選択するように制御信号D1SELが供給され、これにより選択されたデータが信号D1=MEMR1として出力される。
【0310】
出力選択装置24D−2においては、データ入力MEMR2とバタフライ演算器23D−1の出力信号btf1a out (=MEMR2+MEMR3)のうち、データ入力MEMR2を選択するように制御信号D2SELが供給され、これにより選択されたデータが信号D2=MEMR2として出力される。
【0311】
出力選択装置24D−3においては、データ入力MEMR3とバタフライ演算器23D−1の出力信号btf1b out (=MEMR2−MEMR3)のうち、バタフライ演算器23D−1の出力信号btf1b out を選択するように制御信号D3SELが供給され、これにより選択されたデータが信号D3=MEMR2−MEMR3として出力される。
【0312】
出力選択装置24D−4においては、データ入力MEMR4とバタフライ演算器23D−2の出力信号btf2a out (=MEMR4+MEMR5)のうち、バタフライ演算器23D−2の出力信号btf2a out を選択するように制御信号D4SELが供給され、これにより選択されたデータが信号D4=MEMR4+MEMR5として出力される。
【0313】
出力選択装置24D−5においては、データ入力MEMR5とバタフライ演算器23D−2の出力信号btf2b out (=MEMR4−MEMR5)のうち、データ入力MEMR5を選択するように制御信号D5SELが供給され、これにより選択されたデータが信号D5=MEMR5として出力される。
【0314】
出力選択装置24D−6においては、データ入力MEMR6とバタフライ演算器23D−3の出力信号btf3a out (=MEMR6+MEMR7)のうち、バタフライ演算器23D−3の出力信号btf3a out を選択するように制御信号D6SELが供給され、これにより選択されたデータが信号D6=MEMR6+MEMR7として出力される。
【0315】
出力選択装置24D−7においては、データ入力MEMR7とバタフライ演算器23D−3の出力信号btf3b out (=MEMR6−MEMR7)のうち、バタフライ演算器23D−3の出力信号btf3b out を選択するように制御信号D7SELが供給され、これにより選択されたデータが信号D7=MEMR6−MEMR7として出力される。
【0316】
また、出力選択装置25D−0では、データ入力I0とバタフライ演算器23D−0の出力信号btf0a out (=MEMR0+MEMR1)とバタフライ演算器23D−4の出力信号btf4a out (=MEMR0+MEMR1+MEMR2+MEMR3)とバタフライ演算器23D−6の出力信号btf6a out (=MEMR0+MEMR1+MEMR2+MEMR3+MEMR4+MEMR5+MEMR6+MEMR7)のうち、入力データI0を選択するように制御信号W0SELが供給され、これにより選択されたデータが信号MEMW0=I0として出力される。
【0317】
また、出力選択装置25D−1では、データ入力I1とバタフライ演算器23D−0の出力信号btf0b out (=MEMR0−MEMR1)とバタフライ演算器23D−4の出力信号btf4b out (=MEMR0+MEMR1−MEMR2−MEMR3)とバタフライ演算器23D−6の出力信号btf6b out (=MEMR0+MEMR1+MEMR2+MEMR3−MEMR4−MEMR5−MEMR6−MEMR7)のうち、バタフライ演算器23D−4の出力信号btf4b out を選択するように制御信号W1SELが供給され、これにより選択されたデータが信号MEMW1=MEMR0+MEMR1−MEMR2−MEMR3として出力される。
【0318】
また、出力選択装置25D−2では、データ入力I2とバタフライ演算器23D−1の出力信号btf1a out (=MEMR2+MEMR3)とバタフライ演算器23D−4の出力信号btf4a out (=MEMR0+MEMR1+MEMR2+MEMR3)とバタフライ演算器23D−6の出力信号btf6a out (=MEMR0+MEMR1+MEMR2+MEMR3+MEMR4+MEMR5+MEMR6+MEMR7)のうち、バタフライ演算器23D−4の出力信号btf4a out を選択するように制御信号W2SELが供給され、これにより選択されたデータが信号MEMW2=MEMR0+MEMR1+MEMR2+MEMR3として出力される。
【0319】
また、出力選択装置25D−3では、データ入力I3とバタフライ演算器23D−1の出力信号btf0b out (=MEMR2−MEMR3)とバタフライ演算器23D−4の出力信号btf4b out (=MEMR0+MEMR1−MEMR2−MEMR3)とバタフライ演算器23D−6の出力信号btf6b out (=MEMR0+MEMR1+MEMR2+MEMR3−MEMR4−MEMR5−MEMR6−MEMR7)のうち、入力データI3を選択するように制御信号W3SELが供給され、これにより選択されたデータが信号MEMW3=I3として出力される。
【0320】
また、出力選択装置25D−4では、データ入力I4とバタフライ演算器23D−2の出力信号btf2a out (=MEMR4+MEMR5)とバタフライ演算器23D−5の出力信号btf5a out (=MEMR4+MEMR5+MEMR6+MEMR7)とバタフライ演算器23D−6の出力信号btf6a out (=MEMR0+MEMR1+MEMR2+MEMR3+MEMR4+MEMR5+MEMR6+MEMR7)のうち、バタフライ演算器23D−6の出力信号btf6a out を選択するように制御信号W4SELが供給され、これにより選択されたデータが信号MEMW4=MEMR0+MEMR1+MEMR2+MEMR3+MEMR4+MEMR5+MEMR6+MEMR7として出力される。
【0321】
また、出力選択装置25D−5では、データ入力I5とバタフライ演算器23D−2の出力信号btf2b out (=MEMR4−MEMR5)とバタフライ演算器23D−5の出力信号btf5b out (=MEMR4+MEMR5−MEMR6−MEMR7)とバタフライ演算器23D−6の出力信号btf6b out (=MEMR0+MEMR1+MEMR2+MEMR3−MEMR4−MEMR5−MEMR6−MEMR7)のうち、バタフライ演算器23D−5の出力信号btf5b out を選択するように制御信号W5SELが供給され、これにより選択されたデータが信号MEMW5=MEMR4+MEMR5−MEMR6−MEMR7として出力される。
【0322】
また、出力選択装置25D−6では、データ入力I6とバタフライ演算器23D−3の出力信号btf3a out (=MEMR6+MEMR7)とバタフライ演算器23D−5の出力信号btf5a out (=MEMR4+MEMR5+MEMR6+MEMR7)とバタフライ演算器23D−6の出力信号btf6a out (=MEMR0+MEMR1+MEMR2+MEMR3+MEMR4+MEMR5+MEMR6+MEMR7)のうち、データ入力I6を選択するように制御信号W6SELが供給され、これにより選択されたデータが信号MEMW6=I6として出力される。
【0323】
また、出力選択装置25D−7では、データ入力I7とバタフライ演算器23D−3の出力信号btf3b out (=MEMR6−MEMR7)とバタフライ演算器23D−5の出力信号btf5b out (=MEMR4+MEMR5−MEMR6−MEMR7)とバタフライ演算器23D−6の出力信号btf6b out (=MEMR0+MEMR1+MEMR2+MEMR3−MEMR4−MEMR5−MEMR6−MEMR7)のうち、バタフライ演算器23D−6の出力信号btf6b out を選択するように制御信号W7SELが供給され、これにより選択されたデータが信号MEMW7=MEMR0+MEMR1+MEMR2+MEMR3−MEMR4−MEMR5−MEMR6−MEMR7として出力される。
【0324】
以上のように、本第7の実施形態に係る16入力16出力の演算装置20Dによれば、上述した第3の実施形態の効果と同様の効果を得ることができる。
【0325】
なお、本第7の実施形態においては、データ入力MEMR0〜MEMR7の入力段に単項演算器、たとえばシフト演算器を、上述した第3〜第5の実施形態と同様に、配置することが可能である。
この場合、単項演算器SFT0,SFT1,SFT2,SFT3,SFT4,SFT5,SFT6,SFT7は、それぞれたとえば制御信号SFT0MD,SFT1MD,SFT2MD,SFT3MD,SFT4MD,SFT5MD,SFT6MD,SFT7MDを入力とし、MEMR0,MEMR1,MEMR2,MEMR3,MEMR4,MEMR5,MEMR6,MEMR7の値を、制御信号SFT0MD,SFT1MD,SFT2MD,SFT3MD,SFT4MD,SFT5MD,SFT6MD,SFT7MDの値に応じて単項演算を行い、その結果を入力選択装置22D−0〜22D−7(RSEL0〜RSEL7)、出力選択装置24D−0〜24D−7(DSEL0〜DSEL7)に出力するように構成される。
ただし、ここで単項演算器は、左または右に任意ビットシフトする演算で実現される演算器である。
【0326】
第8実施形態
図10は、本発明に係る演算装置の第8の実施形態を示す構成図である。
図10の演算装置30は、上述した第1および第2の実施形態に係るALUおよびMACを含む第1の演算装置と、第3〜第7の実施形態に係るバタフライ演算器を含む第2の演算装置とを再構成可能に結合することで、データ読み出し、演算、データ書き込みの1サイクルで信号処理演算を効率良く実行可能に構成されている。
【0327】
本第8の実施形態に係る演算装置30は、図10に示すように、ALUおよびMACを含む第1の演算装置(PU)31、およびバタフライ演算器を含む第2の演算装置(BTFL)32を主構成要素として有している。
【0328】
第1の演算装置31は、たとえば図2の演算装置を4つカスケード接続した図4の演算装置と同様の構成を有しており、データ入力D0I,D1I,D2I,D3I、係数入力COE0,COE1,COE2,COE3、およびデータ出力OT0,OT1,OT2,OT3を有し、再構成のための制御信号CTRL0,CTRL1,CTRL2,CTRL3が供給される。
そして、各制御信号には、演算制御信号ASEL,BSEL,ESEL,MACMD,ALUMD,RNDMD,SATMD,OSFMD,ACCMD、および遅延制御信号C0DL,C1DL,C2DL,C3DL、D0DL,D1DL,D2DL,D3DLが含まれる。
【0329】
第2の演算装置32は、データ入力MEMR0,MEMR1,MEMR2,MEMR3、演算結果入力I0,I1,I2,I3、データ出力D0,D1,D2,D3、およびMEMW0,MEMW1,MEMW2,MEMW3を有し、再構成のための制御信号CTRLBが供給される。
たとえば第4の実施形態の場合を例にとると、制御信号CTRLBには、SFT0MD,R0SEL,BTFMD0,D0SEL,W0SEL、SFT1MD,R1SEL,BTFMD1,D1SEL,W1SEL、SFT2MD,R2SEL,BTFMD2,D2SEL,W2SEL、およびSFT3MD,R3SEL,BTFMD3,D3SEL,W3SELが含まれる。
【0330】
そして、第2の演算装置32のデータ入力MEMR0にデータR0が供給され、データ入力MEMR1にデータR1が供給され、データ入力MEMR2にデータR2が供給され、データ入力MEMR3にデータR3が供給される。
第2の演算装置32のデータ出力D0が第1の演算装置31のデータ入力D0Iに供給され、第2の演算装置32のデータ出力D1が第1の演算装置31のデータ入力D1Iに供給され、第2の演算装置32のデータ出力D2が第1の演算装置31のデータ入力D2Iに供給され、第2の演算装置32のデータ出力D3が第1の演算装置31のデータ入力D3Iに供給される。
また、第1の演算装置31のデータ出力OT0が第2の演算装置32のデータ入力I0に供給され、第1の演算装置31のデータ出力OT1が第2の演算装置32のデータ入力I1に供給され、第1の演算装置31のデータ出力OT2が第2の演算装置32のデータ入力I2に供給され、第1の演算装置31のデータ出力OT3が第2の演算装置32のデータ入力I3に供給される。
また、第2の演算装置32のデータ出力MEMW0からデータW0が出力され、データ出力MEMW1からデータW1が出力され、データ出力MEMW2からデータW2が出力され、データ出力MEMW3からデータW3が出力される。
【0331】
また、第1の演算装置31においては、以下の演算処理を同時(並列)に実行可能に構成されている。
【0332】
【数14】
OT0=((C0I‖C1I‖C2I‖C3I‖D0I‖D1I‖D2I‖D3I‖OT1‖OT2‖OT3‖0)op0(D0I‖D1I‖D2I‖D3I‖OT0)op1(D0I‖D1I‖D2I‖D3I‖OT1‖OT2‖OT3‖0))、かつ、
OT1=((C0I‖C1I‖C2I‖C3I‖D0I‖D1I‖D2I‖D3I‖OT1‖OT2‖OT3‖0)op2(D0I‖D1I‖D2I‖D3I‖OT0)op3(D0I‖D1I‖D2I‖D3I‖OT2‖OT3‖OT0‖0))、かつ、
OT2=((C0I‖C1I‖C2I‖C3I‖D0I‖D1I‖D2I‖D3I‖OT1‖OT2‖OT3‖0)op4(D0I‖D1I‖D2I‖D3I‖OT0)op5(D0I‖D1I‖D2I‖D3I‖OT3‖OT0‖OT1‖0))、かつ、
OT3=((C0I‖C1I‖C2I‖C3I‖D0I‖D1I‖D2I‖D3I‖OT1‖OT2‖OT3‖0)op6(D0I‖D1I‖D2I‖D3I‖OT0)op7(D0I‖D1I‖D2I‖D3I‖OT0‖OT1‖OT2‖0))
【0333】
ただし、‖は選択演算を、op0〜op7は演算子を表している。またここで、演算子op0〜op7は、以下のいずれかで定義される。
【0334】
【数15】
AopB=A*B,
AopB=A*−B,
AopB=A+B,
AopB=A−B,
AopB=A&B,
AopB=A|B,
AopB=A∧B,
【0335】
また、第2の演算装置32においては、以下の演算処理を同時(並列)に実行可能に構成されている。
【0336】
【数16】
MEMW0=((MEMR0‖I0)op0(MEMR1‖I1))‖I0、かつ、
MEMW1=((MEMR0‖I0)op1(MEMR1‖I1))‖I1、かつ、
MEMW2=((MEMR2‖I2)op2(MEMR3‖I3))‖I2、かつ、
MEMW3=((MEMR2‖I2)op3(MEMR3‖I3))‖I3、かつ、
D0=((MEMR0‖I0)op4(MEMR1‖I1))‖MEMR0、かつ、
D1=((MEMR0‖I0)op5(MEMR1‖I1))‖MEMR1、かつ、
D2=((MEMR2‖I2)op6(MEMR3‖I3))‖MEMR2、かつ、
D3=((MEMR2‖I2)op7(MEMR3‖I3))‖MEMR3
【0337】
ここでも、‖は選択演算を、op0〜op7は演算子を表している。またここで、演算子op0〜op7は、以下のいずれかで定義される。
【0338】
【数17】
AopB=A+B,
AopB=A−B,
AopB=−A+B,
AopB=−A−B,
AopB=A,
AopB=−A,
AopB=B,
AopB=−B,
【0339】
次に、図10の演算装置の動作を、第1の演算装置31が図4の並列演算装置と同様の構成を有し、第2の演算装置32が図6の装置と同様の構成を有する場合を例に説明する。
【0340】
なお、ここでは、以下の演算を実行するものとする。
W0=R0+R1,
W1=COE0*(R0−R1)−COE1*(R2−R3),
W2=R2+R3,
W3=COE2*(R0−R1)+COE3*(R2−R3)
【0341】
まず、第2の演算装置32において、図6に示すように、たとえばシフト演算器21A−0,21A−1,21A−2,21A−3のシフト量が、制御信号SFT0MD,SFT1MD,SFT2MD,SFT3MDによりゼロに設定される。
したがって、シフト演算器21A−0の出力信号sft0 out はMEMR0、すなわちデータR0となり、入力選択装置22A−0および出力選択装置24A−0に供給される。
同様に、シフト演算器21A−1の出力信号sft1 out はMEMR1、すなわちR1となり、入力選択装置22A−1および出力選択装置24A−1に供給される。
シフト演算器21A−2の出力信号sft2 out はMEMR2、すなわちR2となり、入力選択装置22A−2および出力選択装置24A−2に供給される。
そして、シフト演算器21A−3の出力信号sft3 out はMEMR3、すなちR3となり、入力選択装置22A−3および出力選択装置24A−3に供給される。
【0342】
入力選択装置22A−0では、制御信号R0SELにより、シフト演算器21A−0の出力信号R0を選択するように制御され、選択されたデータR0が信号r0sel out として、バラフライ演算器23A−0の入力端子DAに供給される。
入力選択装置22A−1では、制御信号R1SELにより、シフト演算器21A−1の出力信号R1を選択するように制御され、選択されたデータR1が信号r1sel out として、バラフライ演算器23A−0の入力端子DBに供給される。
【0343】
また、入力選択装置22A−2では、制御信号R2SELにより、シフト演算器21A−2の出力信号R2を選択するように制御され、選択されたデータR2が信号r2sel out として、バラフライ演算器23A−1の入力端子DAに供給される。
入力選択装置22A−3では、制御信号R3SELにより、シフト演算器21A−3の出力信号R3を選択するように制御され、選択されたデータR3が信号r3sel out として、バラフライ演算器23A−1の入力端子DBに供給される。
【0344】
バタフライ演算器23A−0では、制御端子CTLに供給される制御信号BTFMD0により、OA=DA+DB,OB=DA−DBが計算されるモードに設定される。
これにより、バタフライ演算器23A−0においては、入力端子DAに供給されたデータR0と入力端子DBに供給されたデータR1とが加算され、その結果である(R0+R1)が出力端子OAから信号btf0a out として、出力選択装置24A−0および25A−0に出力される。
また、バタフライ演算器23A−0においては、入力端子DAに供給されたデータR0と入力端子DBに供給されたデータR1との差がとられ、その結果である(R0−R1)が出力端子OBから信号btf0b out として、出力選択装置24A−1および25A−1に出力される。
【0345】
同様に、バタフライ演算器23A−1では、制御端子CTLに供給される制御信号BTFMD1により、OA=DA+DB,OB=DA−DBが計算されるモードに設定される。
これにより、バタフライ演算器23A−1においては、入力端子DAに供給されたデータR2と入力端子DBに供給されたデータR3とが加算され、その結果である(R2+R3)が出力端子OAから信号btf1a out として、出力選択装置24A−2および25A−2に出力される。
また、バタフライ演算器23A−1においては、入力端子DAに供給されたデータR2と入力端子DBに供給されたデータR3との差がとられ、その結果である(R2−R3)が出力端子OBから信号btf1b out として、出力選択装置24A−3および25A−3に出力される。
【0346】
そして、第2の演算装置32では、出力選択装置24A−1において、シフト演算器21A−1の出力信号(R1)とバタフライ演算器23A−0の出力信号btf0b out (=MEMR0−MEMR1)のうち、バタフライ演算器23A−0の出力信号btf0b out を選択するように制御信号D1SELが供給され、これにより選択されたデータが信号D1=R0−R1として、第1の演算装置31のデータ入力D1Iに供給される。
【0347】
同様に、第2の演算装置32では、出力選択装置24A−3において、シフト演算器21A−3の出力信号(R3)とバタフライ演算器23A−1の出力信号btf1b out (=R2−R3)のうち、バタフライ演算器23A−1の出力信号btf1b out を選択するように制御信号D3SELが供給され、これにより選択されたデータが信号D3=R2−R3として、第1の演算装置31のデータ入力D3Iに供給される。
【0348】
第1の演算装置31では、まず、演算装置10A−0において、制御信号CTL0により、演算結果信号OT0=COE0*D1となる演算が行われるように制御が行われる。
【0349】
この場合、演算装置10A−0において、制御信号ASELが係数入力COE0を選択するように設定されて第1の選択装置11に供給される。
また、制御信号BSELがデータ入力D1I(=D1=R0−R1)を選択するように設定されて第2の選択装置12に供給される。
これにより、第1の選択装置11から係数COE0が信号asel_out として、ALU14およびMAC15に出力される。また、第2の選択装置12からデータD1(=R0−R1)が信号bsel_out として、ALU14およびMAC15に出力される。
【0350】
このとき、乗算を指定する制御信号MACMDが、MAC15に供給される。これにより、MAC15において、係数COE0とデータD1との乗算が行われ、その結果COE0*D1が信号mac outとして第4の選択装置16に出力される。
そして、制御信号ESELがMAC15の出力を選択するように、第4の選択装置16に供給されている。その結果、第4の選択装置16においてMAC15の出力信号mac out(COE0*D1)が選択され、信号esel out(COE0*D1)としてレジスタ17に出力される。
レジスタ17では、MAC15の演算結果COE0*D1が格納され、この格納データが演算出力端子PE Cから演算結果信号OT0として、演算装置10A−1のカスケード入力PE P0、演算装置10A−2のカスケード入力PE P1、および演算装置10A−3のカスケード入力PE P2に出力される。
【0351】
演算装置10A−0においては、C0FIFO18−0〜C3FIFO18−3で所望の遅延量だけ遅延された係数COE0〜COE3が係数出力端子PE C0O〜PE C3Oから係数出力c00〜c30として次段の演算装置10A−1の係数入力端子PE C0I〜PE C3Iに出力され、D0FIFO19−1,D3FIFO19−3で所望の遅延量だけ遅延されたデータD1,D3がデータ出力端子PE D1O,PE D3Oからデータ出力d10,d30として次段の演算装置10A−1のデータ入力端子PE D1I,〜PE D3Iに出力される。
【0352】
次に、演算装置10A−1においては、制御信号CTL1により、演算結果信号OT1=OT0−COE1*D3となる演算が行われるように制御が行われる。
【0353】
この場合、制御信号ASELが係数入力端子PE C1Iに供給される演算装置10A−0の係数出力c10(COE1)を選択するように設定されて第1の選択装置11に供給される。
また、制御信号BSELがデータ入力端子PE D1Iに供給される演算装置10A−0のデータ出力d10(D3=R2−R3)を選択するように設定されて第2の選択装置12に供給される。
また、制御信号CSELがカスケード入力端子PE P0に供給される演算装置10A−0の演算結果信号OT0(COE0*D1)を選択するように設定されて第3の選択装置13に供給される。
これにより、第1の選択装置11から係数COE1が信号asel_out として、ALU14およびMAC15に出力される。また、第2の選択装置12からデータD3(=R2−R3)が信号bsel_out として、ALU14およびMAC15に出力される。また、第3の選択装置13から、カスケード入力データCOE0*D1が信号csel outとして第1の選択装置11、ALU14およびMAC15に出力される。
【0354】
このとき、乗減算を指定する制御信号MACMDが、MAC15に供給される。これにより、MAC15において、係数COE1とデータD3との乗算が行われ、さらに、その結果COE0*D1とCOE1*D3との減算が行われる。これにより、MAC15から乗加算結果(COE0*D1−COE1*D3)が信号mac outとして第4の選択装置16に出力される。
そして、制御信号ESELがMAC15の出力を選択するように、第4の選択装置16に供給されている。その結果、第4の選択装置16においてMAC15の出力信号mac out(COE0*D1−COE1*D3)が選択され、信号esel outとしてレジスタ17に出力される。
レジスタ17では、MAC15の演算結果(COE0*D1−COE1*D3)が格納され、この格納データが演算出力端子PE Cから演算結果信号OT1として、演算装置10A−0のカスケード入力PE P2、演算装置10A−2のカスケード入力PE P0、および演算装置10A−2のカスケード入力PE P1に出力される。
また、演算装置10A−1の(COE0*D1−COE1*D3)を示す演算結果信号OT1は、図10の第2の演算装置32のデータ入力I1に供給される。
【0355】
また、演算装置10A−1においては、C0FIFO18−0〜C3FIFO18−3で所望の遅延量だけ遅延された係数COE0〜COE3が係数出力端子PE C0O〜PE C3Oから係数出力c01〜c31として次段の演算装置10A−2の係数入力端子PE C0I〜PE C3Iに出力され、D0FIFO19−1,D3FIFO19−3で所望の遅延量だけ遅延されたデータD1,D3がデータ出力端子PE D1O,PE D3Oからデータ出力d11,d31として次段の演算装置10A−3のデータ入力端子PE D1I,PE D3Iに出力される。
【0356】
次に、演算装置10A−2においては、制御信号CTL2により、演算結果信号OT2=COE2*D1となる演算が行われるように制御が行われる。
【0357】
この場合、制御信号ASELが係数入力端子PE C2Iに供給される演算装置10A−1の係数出力c21(COE2)を選択するように設定されて第1の選択装置11に供給される。
また、制御信号BSELがデータ入力端子PE D1Iに供給される演算装置10A−1のデータ出力d11(D1)を選択するように設定されて第2の選択装置12に供給される。
これにより、第1の選択装置11から係数COE2が信号asel_out として、ALU14およびMAC15に出力される。また、第2の選択装置12からデータD1が信号bsel_out として、ALU14およびMAC15に出力される。
【0358】
このとき、乗算を指定する制御信号MACMDが、MAC15に供給される。これにより、MAC15において、係数COE2とデータD1との乗算が行われる。これにより、MAC15から乗算結果COE2*D1が信号mac outとして第4の選択装置16に出力される。
そして、制御信号ESELがMAC15の出力を選択するように、第4の選択装置16に供給されている。その結果、第4の選択装置16においてMAC15の出力信号mac out(COE2*D1)が選択され、信号esel out(COE2*D1)としてレジスタ17に出力される。
レジスタ17では、MAC15の演算結果COE2*D1が格納され、この格納データが演算出力端子PE Cから演算結果信号OT2として、演算装置10A−0のカスケード入力PE P1、演算装置10A−のカスケード入力PE P2、および演算装置10A−3のカスケード入力PE P0に出力される。
【0359】
演算装置10A−2においては、C0FIFO18−0〜C3FIFO18−3で所望の遅延量だけ遅延された係数COE0,COE1,COE2,COE3が係数出力端子PE C0O〜PE C3Oから係数出力c02〜c32として次段の演算装置10A−3の係数入力端子PE C0I〜PE C3Iに出力され、D0FIFO19−1,D3FIFO19−3で所望の遅延量だけ遅延されたデータD1,D3がデータ出力端子PE D1O,PE D3Oからデータ出力d12,d32として次段の演算装置10A−3のデータ入力端子PE D1I〜PE D3Iに出力される。
【0360】
次に、演算装置10A−3においては、制御信号CTL3により、演算結果信号OT3=OT2+COE3*D3=COE2*D1+COE3*D3となる演算が行われるように制御が行われる。
【0361】
この場合、制御信号ASELが係数入力端子PE C3Iに供給される演算装置10A−2の係数出力c32(COE3)を選択するように設定されて第1の選択装置11に供給される。
また、制御信号BSELがデータ入力端子PE D3Iに供給される演算装置10A−2のデータ出力d32(D3)を選択するように設定されて第2の選択装置12に供給される。
また、制御信号CSELがカスケード入力端子PE P0に供給される演算装置10A−2の演算結果信号OT2(COE2*D1)を選択するように設定されて第3の選択装置13に供給される。
これにより、第1の選択装置11から係数COE3が信号asel_out として、ALU14およびMAC15に出力される。また、第2の選択装置12からデータD3が信号bsel_out として、ALU14およびMAC15に出力される。また、第3の選択装置13から、カスケード入力データCOE2*D1が信号csel outとして第1の選択装置11、ALU14およびMAC15に出力される。
【0362】
このとき、乗加算を指定する制御信号MACMDが、MAC15に供給される。これにより、MAC15において、係数COE3とデータD3との乗算が行われ、さらに、その結果COE3*D3と(COE2*D1)との加算が行われる。これにより、MAC15から乗加算結果COE3*D3+COE2*D1が信号mac outとして第4の選択装置16に出力される。
そして、制御信号ESELがMAC15の出力を選択するように、第4の選択装置16に供給されている。その結果、第4の選択装置16においてMAC15の出力信号mac out(COE2*D1+COE3*D3)が選択され、信号esel out(COE2*D1+COE3*D3)としてレジスタ17に出力される。
レジスタ17では、MAC15の演算結果(COE2*D1+COE3*D3)が格納され、この格納データが演算出力端子PE Cから演算結果信号OT3として所望の演算結果outとして出力され、演算装置10A−0のカスケード入力PE P0、演算装置10A−のカスケード入力PE P1、および演算装置10A−2のカスケード入力PE に出力される。
また、演算装置10A−3の(COE2*D1+COE3*D3)を示す演算結果信号OT3は、図10の第2の演算装置32のデータ入力I3に供給される。
【0363】
なお、以上において、図2に示す遅延制御信号C0DL,C1DL,C2DL,C3DLはすべて遅延0となるように、各C0FIFO〜C3FIFO18−0〜18−3に供給される。
また、遅延制御信号D0DLは遅延0となるように、D0FIFO19−0に供給され、遅延制御信号D1DLは遅延1となるように、D1FIFO19−1に供給され、遅延制御信号D2DLは遅延2となるように、D2FIFO19−2に供給され、遅延制御信号D3DLは遅延3となるように、D3FIFO19−3に供給される。
【0364】
第2の演算装置32のデータ入力I1に供給された第1の演算装置31の演算結果(COE0*D1−COE1*D3)は図6の出力選択装置25A−1に供給される。
また、第2の演算装置32のデータ入力I3に供給された第1の演算装置31の演算結果(COE2*D1+COE3*D3)は図6の出力選択装置25A−3に供給される。
【0365】
そして、第2の演算装置32において、出力選択装置25A−0では、データ入力I0とバタフライ演算器23A−0の出力信号btf0a out (=R0+R1)のうち、バタフライ演算器23A−0の出力信号btf0a out を選択するように制御信号W0SELが供給され、これにより選択されたデータが信号MEMW0=R0+R1として出力される。
【0366】
また、出力選択装置25A−1では、データ入力I1とバタフライ演算器23A−0の出力信号btf0b out (=R0−R1)のうち、データ入力I1を選択するように制御信号W1SELが供給され、これにより選択されたデータが信号MEMW1=I1=(COE0*D1−COE1*D3)=(COE0*(R0−R1)−COE1*(R2−R3))として出力される。
【0367】
また、出力選択装置25A−2では、データ入力I2とバタフライ演算器23A−1の出力信号btf1a out (=R2+R3)のうち、バタフライ演算器23A−1の出力信号btf1a out を選択するように制御信号W2SELが供給され、これにより選択されたデータが信号MEMW2=R2+R3として出力される。
【0368】
また、出力選択装置25A−3では、データ入力I3とバタフライ演算器23A−1の出力信号btf1b out (=R2−R3)のうち、データ入力I3を選択するように制御信号W3SELが供給され、これにより選択されたデータが信号MEMW3=I3=(COE2*D1+COE3*D3)=(COE2*(R0−R1)+COE3*(R2−R3))として出力される。
【0369】
以上説明したように、本第8の実施形態によれば、第1および第2の実施形態に係るALUおよびMACを含む演算装置と、第3〜第7の実施形態に係るバタフライ演算器を含む演算装置とを再構成可能に結合してので、以下の利点がある。
【0370】
すなわち、従来のDSPなどのプロセッサでは、
MEMW0=x[k0]+x[k1],
MEMW1=px*(x[k0]−x[k1])−py*(y[k0]−y[k1]),
MEMW2=y[k0]+y[k1],
MEMW3=px*(x[k0]−x[k1])+py*(y[k0]−y[k1])
の演算を実行しようとした場合、たとえばMEMW1の計算で
reg1=x[k0]−x[k1],
reg2=px*reg1,
reg3=y[k0]−y[k1],
reg4=py*reg3,
MeMW1=reg2−reg4,
などのように一時的にレジスタに値を格納する演算が必要となっていた。そのため演算動作に不要なレジスタへの書き込み、レジスタからの読み出しが多くなり、動作サイクル数、消費電力ともに増えていたが、MAC,ALUとバタフライ演算とを組み合わせることで、メモリ読み出しから、演算、メモリ書き込みを行う際に、演算ブロックでの演算自由度が増し、効率よい演算ができるようになる。そのため、実行サイクル数が少なくなり、また一時データの読み、書きが減るため電力が削減される。
【0371】
さらに、MEMW0の演算とMEMW1の演算のようにx[k0],x[k1]を共通に使用している場合には、従来のプロセッサではx[k0]+x[k1],x[k0]−x[k1]の演算を同時に行うことができずに演算に必要なサイクル数が増えていたが、本第8の実施形態では、この演算を同時に行うため必要サイクル数が少なくて済む。
【0372】
また、本第8の実施形態によれば、上述した第1の実施形態と同様に、論理レベルの最適化ができることはもとより、構成情報の増大を防止でき、集積回路としての面積効率の低下を防止できる演算装置を実現できる利点がある。
また、演算装置を再構成可能であることから、カスケード演算だけでなく並列演算も同一のハードウェアで実現することが可能になっている。そのため、演算装置の数を増やして多くの並列化可能な処理を効率良く実行することもできる。
【0373】
第9実施形態
図11は、本発明に係る演算装置の第9の実施形態を示す構成図である。
本第9の実施形態に係る演算装置30Aは、第8の実施形態のように、上述した第1および第2の実施形態に係るALUおよびMACを含む第1の演算装置と、第3〜第7の実施形態に係るバタフライ演算器を含む第2の演算装置とを再構成可能に結合した演算装置をより一般化した場合の装置例である。
この演算装置30Aもデータ読み出し、演算、データ書き込みの1サイクルで信号処理演算を効率良く実行可能に構成されている。
【0374】
本演算装置30Aは、図11に示すように、ALUおよびMACを含む第1の演算装置(PU)31A、およびバタフライ演算器を含む第2の演算装置32A−0(BTFLa0),…,32A−k(BTFLak)、32B−0(BTFLb0),…,32B−m(BTFLbm)、32C−0(BTFLc0),…,32C−n(BTFLcn)を主構成要素として有している。
【0375】
以下に、第1の演算装置31A、および第2の演算装置32A−0(BTFLa0),…,32A−k(BTFLak)、32B−0(BTFLb0),…,32B−m(BTFLbm)、32C−0(BTFLc0),…,32C−n(BTFLcn)のデータ入出力および制御信号、並びに接続関係について詳述し、各部の動作は、第8の実施形態の場合と同様に行われることから、その詳細は省略する。
【0376】
第1の演算装置31Aは、たとえば図1または図2の演算装置を2、4、8等の複数個カスケード接続した演算装置を含んでおり、データ入力DIa0,DIa1、DIa2k,DIa2k+1、DIb0,DIb1,DIb2,DIb3、DIb4m,DIb4m+1,DIb4m+2,DIb4m+3、DIc0,DIc1,…,DIc6,DIc7、DIc8n,DIc8n+1,…,DIc8n+6,DIc8n+7、係数入力COE0,…,COEp、データ出力OTa0,OTa1、OTa2k,OTa2k+1、OTb0,OTb1,OTb2,OTb3、OTb4m,OTb4m+1,OTb4m+2,OTb4m+3、OTc0,OTc1…OTc6,OTc7、OTc8n,OTc8n+1,…,OTc8n+6,OTc8n+7を有し、再構成のための制御信号CTRLa0,…,CTRLa2k+1、CTRLb0,…,CTRLb4m+3、CTRLc0,…,CTRLc8n+7が供給される。
そして、各制御信号には、演算制御信号ASEL,BSEL,ESEL,MACMD,ALUMD,RNDMD,SATMD,OSFMD,ACCMD、および遅延制御信号C0DL,C1DL,…,CkDL、D0DL,D1DL,…,DmDLが含まれる。
【0377】
第2の演算装置32A−0は、たとえば図5に示すような4入力4出力の演算装置であって、データ入力MEMRa0,MEMRa1、演算結果入力Ia0,Ia1、データ出力(演算結果出力)Da0,Da1、データ出力MEMWa0,MEMWa1を有し、再構成のための制御信号CTRLBa0が供給される。たとえば第3の実施形態の場合を例にとると、制御信号CTRLBa0には、SFT0MD,R0SEL,BTFMD0,D0SEL,W0SEL、およびSFT1MD,R1SEL,BTFMD1,D1SEL,W1SELが含まれる。
【0378】
第2の演算装置32A−kは、たとえば図5に示すような4入力4出力の演算装置であって、データ入力MEMRa2k,MEMRa2k+1、演算結果入力Ia2k,Ia2k+1、データ出力(演算結果出力)Da2k,Da2k+1、データ出力MEMWa2k,MEMWa2k+1を有し、再構成のための制御信号CTRLBa2kが供給される。
たとえば第3の実施形態の場合を例にとると、制御信号CTRLBa2kには、SFT0MD,R0SEL,BTFMD0,D0SEL,W0SEL、およびSFT1MD,R1SEL,BTFMD1,D1SEL,W1SELが含まれる。
【0379】
第2の演算装置32B−0は、たとえば図6または図7に示すような8入力8出力の演算装置であって、データ入力MEMRb0,MEMRb1,MEMRb2,MEMRb3、演算結果入力Ib0,Ib1,Ib2,Ib3、データ出力(演算結果出力)Db0,Db1,Db2,Db3、データ出力MEMWb0,MEMWb1,MEMWb2,MEMWb3を有し、再構成のための制御信号CTRLBb0が供給される。
たとえば第4または第5の実施形態の場合を例にとると、制御信号CTRLBb0には、SFT0MD,R0SEL,BTFMD0,D0SEL,W0SEL、SFT1MD,R1SEL,BTFMD1,D1SEL,W1SEL、SFT2MD,R2SEL,BTFMD2,D2SEL,W2SEL、およびSFT3MD,R3SEL,BTFMD3,D3SEL,W3SELが含まれる。
【0380】
第2の演算装置32B−mは、たとえば図6または図7に示すような8入力8出力の演算装置であって、データ入力MEMRb4m,MEMRb4m+1,MEMRb4m+2,MEMRb4m+3、演算結果入力Ib4m,Ib4m+1,Ib4m+2,Ib4m+3、データ出力(演算結果出力)Db4m,Db4m+1,Db4m+2,Db4m+3、データ出力MEMWb4m,MEMWb4m+1,MEMWb4m+2,MEMWb4m+3を有し、再構成のための制御信号CTRLBb4mが供給される。
たとえば第4または第5の実施形態の場合を例にとると、制御信号CTRLBb4mには、SFT0MD,R0SEL,BTFMD0,D0SEL,W0SEL、SFT1MD,R1SEL,BTFMD1,D1SEL,W1SEL、SFT2MD,R2SEL,BTFMD2,D2SEL,W2SEL、およびSFT3MD,R3SEL,BTFMD3,D3SEL,W3SELが含まれる。
【0381】
第2の演算装置32C−0は、たとえば図8または図9に示すような16入力16出力の演算装置であって、データ入力MEMRc0,MEMRc1,…,MEMRc6,MEMRc7、演算結果入力Ic0,Ic1,…,Ic6,Ic7、データ出力(演算結果出力)Dc0,Dc1,…,Dc6,Dc7、データ出力MEMWc0,MEMWc1,…,MEMWc6,MEMWc7を有し、再構成のための制御信号CTRLBc0が供給される。
たとえば第6または第7の実施形態の場合を例にとると、制御信号CTRLBb4mには、SFT0MD,R0SEL,MTFMD0,D0SEL,W0SEL、SFT1MD,R1SEL,MTFMD1,D1SEL,W1SEL、SFT2MD,R2SEL,MTFMD2,D2SEL,W2SEL、SFT3MD,R3SEL,MTFMD3,D3SEL,W3SEL、SFT4MD,R4SEL,MTFMD4,D4SEL,W4SEL、SFT5MD,R5SEL,MTFMD5,D5SEL,W5SEL、SFT6MD,R6SEL,MTFMD6,D6SEL,W6SEL、SFT7MD,R7SEL,MTFMD7,D7SEL,W7SELが含まれる。
【0382】
第2の演算装置32C−nは、たとえば図8または図9に示すような16入力16出力の演算装置であって、データ入力MEMRc8n,MEMRc8n+1,…,MEMRc8n+6,MEMRc8n+7、演算結果入力Ilc8n,Ilc8n+1,…,Ic8n+6,Ic8n+7、データ出力(演算結果出力)Dc8n,Dc8n+1,…,Dc8n+6,Dc8n+7、データ出力MEMWc8n,MEMWc8n+1…MEMWc8n+6,MEMWc8n+7を有し、再構成のための制御信号CTRLBc8nが供給される。
たとえば第6または第7の実施形態の場合を例にとると、制御信号CTRLBb4mには、SFT0MD,R0SEL,MTFMD0,D0SEL,W0SEL、SFT1MD,R1SEL,MTFMD1,D1SEL,W1SEL、SFT2MD,R2SEL,MTFMD2,D2SEL,W2SEL、SFT3MD,R3SEL,MTFMD3,D3SEL,W3SEL、SFT4MD,R4SEL,MTFMD4,D4SEL,W4SEL、SFT5MD,R5SEL,MTFMD5,D5SEL,W5SEL、SFT6MD,R6SEL,MTFMD6,D6SEL,W6SEL、SFT7MD,R7SEL,MTFMD7,D7SEL,W7SELが含まれる。
【0383】
そして、第2の演算装置32A−0のデータ入力MEMRa0にデータRa0が供給され、データ入力MEMRa1にデータRa1が供給される。
第2の演算装置32A−0のデータ出力Da0が第1の演算装置31Aのデータ入力DIa0に供給され、第2の演算装置32A−0のデータ出力Da1が第1の演算装置31Aのデータ入力DIa1に供給される。
また、第1の演算装置31Aのデータ出力OTa0が第2の演算装置32A−0のデータ入力Ia0に供給され、第1の演算装置31Aのデータ出力OTa1が第2の演算装置32A−0のデータ入力Ia1に供給される。
また、第2の演算装置32A−0のデータ出力MEMWa0からデータWa0が出力され、データ出力MEMWa1からデータWa1が出力される。
【0384】
第2の演算装置32A−kのデータ入力MEMRa2kにデータRa2kが供給され、データ入力MEMRa2k+1にデータRa2k+1が供給される。
第2の演算装置32A−kのデータ出力Da2kが第1の演算装置31Aのデータ入力DIa2kに供給され、第2の演算装置32A−kのデータ出力Da2k+1が第1の演算装置31Aのデータ入力DIa2k+1に供給される。
また、第1の演算装置31Aのデータ出力OTa2kが第2の演算装置32A−kのデータ入力Ia2kに供給され、第1の演算装置31Aのデータ出力OTa2k+1が第2の演算装置32A−kのデータ入力Ia2k+1に供給される。
また、第2の演算装置32A−kのデータ出力MEMWa2kからデータWa2kが出力され、データ出力MEMWa2k+1からデータWa2k+1が出力される。
【0385】
第2の演算装置32B−0のデータ入力MEMRb0にデータRb0が供給され、データ入力MEMRb1にデータRb1が供給され、データ入力MEMRb2にデータRb2が供給され、データ入力MEMRb3にデータRb3が供給される。
第2の演算装置32B−0のデータ出力Db0が第1の演算装置31Aのデータ入力DIb0に供給され、第2の演算装置32B−0のデータ出力Db1が第1の演算装置31Aのデータ入力DIb1に供給され、第2の演算装置32B−0のデータ出力Db2が第1の演算装置31Aのデータ入力DIb2に供給され、第2の演算装置32B−0のデータ出力Db3が第1の演算装置31Aのデータ入力DIb3に供給される。
また、第1の演算装置31Aのデータ出力OTb0が第2の演算装置32B−0のデータ入力Ib0に供給され、第1の演算装置31Aのデータ出力OTb1が第2の演算装置32B−0のデータ入力Ib1に供給され、第1の演算装置31Aのデータ出力OTb2が第2の演算装置32B−0のデータ入力Ib2に供給され、第1の演算装置31Aのデータ出力OTb3が第2の演算装置32B−0のデータ入力Ib3に供給される。
また、第2の演算装置32B−0のデータ出力MEMWb0からデータWb0が出力され、データ出力MEMWb1からデータWb1が出力され、データ出力MEMWb2からデータWb2が出力され、データ出力MEMWb3からデータWb3が出力される。
【0386】
第2の演算装置32B−mのデータ入力MEMRb4mにデータRb4mが供給され、データ入力MEMRb4m+1にデータRb4m+1が供給され、データ入力MEMRb4m+2にデータRb4m+2が供給され、データ入力MEMRb4m+3にデータRb4m+3が供給される。
第2の演算装置32B−mのデータ出力Db4mが第1の演算装置31Aのデータ入力DIb4mに供給され、第2の演算装置32B−mのデータ出力Db4m+1が第1の演算装置31Aのデータ入力DIb4m+1に供給され、第2の演算装置32B−mのデータ出力Db4m+2が第1の演算装置31Aのデータ入力DIb4m+2に供給され、第2の演算装置32B−mのデータ出力Db4m+3が第1の演算装置31Aのデータ入力DIb4m+3に供給される。
また、第1の演算装置31Aのデータ出力OTb4mが第2の演算装置32B−mのデータ入力Ib4mに供給され、第1の演算装置31Aのデータ出力OTb4m+1が第2の演算装置32B−mのデータ入力Ib4m+1に供給され、第1の演算装置31Aのデータ出力OTb4m+2が第2の演算装置32B−mのデータ入力Ib4m+2に供給され、第1の演算装置31Aのデータ出力OTb4m+3が第2の演算装置32B−mのデータ入力Ib4m+3に供給される。
また、第2の演算装置32B−mのデータ出力MEMWb4mからデータWb4mが出力され、データ出力MEMWb4m+1からデータWb4m+1が出力され、データ出力MEMWb4m+2からデータWb4m+2が出力され、データ出力MEMWb4m+3からデータWb4m+3が出力される。
【0387】
第2の演算装置32C−0のデータ入力MEMRc0にデータRc0が供給され、データ入力MEMRc1にデータRc1が供給され、同様にしてデータ入力MEMRc6にデータRc6が供給され、データ入力MEMRc7にデータRc7が供給される。
第2の演算装置32C−0のデータ出力Dc0が第1の演算装置31Aのデータ入力DIc0に供給され、第2の演算装置32C−0のデータ出力Dc1が第1の演算装置31Aのデータ入力DIc1に供給され、同様にして第2の演算装置32C−0のデータ出力Dc6が第1の演算装置31Aのデータ入力DIc6に供給され、第2の演算装置32C−0のデータ出力DC7が第1の演算装置31Aのデータ入力DIC7に供給される。
また、第1の演算装置31Aのデータ出力OTc0が第2の演算装置32C−0のデータ入力Ic0に供給され、第1の演算装置31Aのデータ出力OTc1が第2の演算装置32C−0のデータ入力Ic1に供給され、同様にして第1の演算装置31Aのデータ出力OTc6が第2の演算装置32C−0のデータ入力Ic6に供給され、第1の演算装置31Aのデータ出力OTc7が第2の演算装置32C−0のデータ入力Ic7に供給される。
また、第2の演算装置32C−0のデータ出力MEMWc0からデータWc0が出力され、データ出力MEMWc1からデータWc1が出力され、同様にしてデータ出力MEMWc6からデータWc6が出力され、データ出力MEMWc7からデータWc7が出力される。
【0388】
第2の演算装置32C−nのデータ入力MEMRc8nにデータRc8nが供給され、データ入力MEMRc8n+1にデータRc8n+1が供給され、同様にしてデータ入力MEMRc8n+6にデータRc8n+6が供給され、データ入力MEMRc8n+7にデータRc8n+7が供給される。
第2の演算装置32C−nのデータ出力DC8nが第1の演算装置31Aのデータ入力DIc8nに供給され、第2の演算装置32C−nのデータ出力Dc8n+1が第1の演算装置31Aのデータ入力DIc8n+1に供給され、同様にして第2の演算装置32C−nのデータ出力Dc8n+6が第1の演算装置31Aのデータ入力DIc8n+6に供給され、第2の演算装置32C−nのデータ出力Dc8n+7が第1の演算装置31Aのデータ入力DIc8n+に供給される。
また、第1の演算装置31Aのデータ出力OTc8nが第2の演算装置32C−nのデータ入力Ic8nに供給され、第1の演算装置31Aのデータ出力OTc8n+1が第2の演算装置32C−nのデータ入力Ic8n+1に供給され、同様にして第1の演算装置31Aのデータ出力OTc8n+6が第2の演算装置32C−nのデータ入力Ic8n+6に供給され、第1の演算装置31Aのデータ出力OTc8n+7が第2の演算装置32C−nのデータ入力Ic8n+7に供給される。
また、第2の演算装置32C−nのデータ出力MEMWc8nからデータWc8nが出力され、データ出力MEMWc8n+1からデータWc8n+1が出力され、同様にしてデータ出力MEMWc8n+6からデータWc8n+6が出力され、データ出力MEMWc8n+7からデータWc8n+7が出力される。
【0389】
このような構成を有する演算装置30Aにおいて、たとえば第1の演算装置31Aと8入力8出力の第2の演算装置32B−0〜32B−mとの間でデータの授受を行って演算を行う場合には、上述した第8の実施形態においては説明した動作と同様の動作が行われる。
その他の第2の演算装置32A−0〜32A−k、32C−0〜32C−nと第1の演算装置31Aとの間でデータの授受を行って演算を行う場合であっても、データ入出力数が異なるだけで、略同様の動作が行われる。
したがって、上述したように、ここでは各部の動作は、その詳細は省略する。
【0390】
本第9の実施形態によれば、3項演算装置かつ/または2項演算装置を含む演算装置を複数有する第1の演算装置31Aと、2入力2出力演算装置を含む第2の演算装置32A−0(BTFLa0),…,32A−k(BTFLak)、32B−0(BTFLb0),…,32B−m(BTFLbm)、32C−0(BTFLc0),…,32C−n(BTFLcn)とを備え、外部から再構成可能な演算装置30Aにおいて、第2の演算装置32A−0(BTFLa0),…,32A−k(BTFLak)、32B−0(BTFLb0),…,32B−m(BTFLbm)、32C−0(BTFLc0),…,32C−n(BTFLcn)の演算結果を第1の演算装置31Aの入力とし、また、第1の演算装置31Aの演算結果を第2の演算装置の入力として、最終的な演算結果を得るようにしたので、上述した第8の実施形態の効果と同様の効果を得ることができる。
【0391】
すなわち、従来のDSPなどのプロセッサでは、
MEMW0=x[k0]+x[k1],
MEMW1=px*(x[k0]−x[k1])−py*(y[k0]−y[k1]),
MEMW2=y[k0]+y[k1],
MEMW3=px*(x[k0]−x[k1])+py*(y[k0]−y[k1])
の演算を実行しようとした場合、たとえばMEMW1の計算で
reg1=x[k0]−x[k1],
reg2=px*reg1,
reg3=y[k0]−y[k1],
reg4=py*reg3,
MeMW1=reg2−reg4,
などのように一時的にレジスタに値を格納する演算が必要となっていた。そのため演算動作に不要なレジスタへの書き込み、レジスタからの読み出しが多くなり、動作サイクル数、消費電力ともに増えていたが、MAC,ALUとバタフライ演算とを組み合わせることで、メモリ読み出しから、演算、メモリ書き込みを行う際に、演算ブロックでの演算自由度が増し、効率よい演算ができるようになる。そのため、実行サイクル数が少なくなり、また一時データの読み、書きが減るため電力が削減される。
【0392】
さらに、MEMW0の演算とMEMW1の演算のようにx[k0],x[k1]を共通に使用している場合には、従来のプロセッサではx[k0]+x[k1],x[k0]−x[k1]の演算を同時に行うことができずに演算に必要なサイクル数が増えていたが、本第9の実施形態では、この演算を同時に行うため必要サイクル数が少なくて済む。
【0393】
また、本第9の実施形態によれば、上述した第1の実施形態と同様に、論理レベルの最適化ができることはもとより、構成情報の増大を防止でき、集積回路としての面積効率の低下を防止できる演算装置を実現できる利点がある。
また、演算装置を再構成可能であることから、カスケード演算だけでなく並列演算も同一のハードウェアで実現することが可能になっている。そのため、演算装置の数を増やして多くの並列化可能な処理を効率良く実行することもできる。
【0394】
第10実施形態
図12は、本発明の第10の実施形態に係る演算システムを示す構成図である。
【0395】
本演算システム40では、たとえば上述した第1の実施形態〜第9の実施形態に係る演算器の配列や、演算実行時の係数パラメータ等を、構成情報に基づいて再構成可能な演算装置が用いられる。
そして、本演算システム40は、演算装置、メモリ、アドレス生成装置と、経路情報を格納するメモリを含み、CPUを用いた経路情報選択の他に、アドレス生成装置が発生する制御信号に基づいて、演算途中であっても特定条件で経路情報を切り替えすることができる再構成可能なシステムとして構成される。
【0396】
具体的には、本演算システム40は、図12に示すように、制御回路としてのCPU41、複数、たとえば2つの第1の経路選択情報メモリ42、第2の経路選択情報メモリ43、選択装置44、アドレス生成装置45、データメモリ46、および再構成可能な演算装置47を有している。
【0397】
CPU41は、バスBUSを介して、第1の経路選択情報メモリ42、第2の経路選択情報メモリ43、データメモリ46にアクセスすることが可能になっている。
CPU41は、req_ack信号を用いてアドレス生成装置45の起動を行い、アドレス生成装置45からのreq_ack信号によりアドレス生成装置45の動作の終了を認識する。
また、CPU41は、第1の経路選択情報メモリ42に第1の経路選択情報config1を書き込み、第2の経路選択情報メモリ43に第2の経路選択情報config2を書き込む。
また、CPU41は、データメモリ46に複数のデータを書き込んでおく。さらにCPU41は、アドレス生成装置45に信号agctrlでアドレス生成パターンを指定し、アドレス生成装置45の起動を行う。
さらに、CPU41は、制御信号ctrlbを選択装置44に出力し、第1の経路選択情報メモリ42の第1の経路選択情報config1および第2の経路選択情報メモリ43の第2の経路選択情報config2のうちのいずれの経路選択情報を選択するのかを指示する。換言すれば、CPU41は、制御信号ctrlbをアドレス生成装置45がアドレス生成を行っている途中で、動的に変更し、経路選択情報を複数の経路選択情報メモリ42,43から選択するのかを制御する。
【0398】
第1の経路選択情報メモリ42は、CPU41からバスBUSを介して第1の経路選択情報config1が書き込まれ、書き込まれた第1の経路選択情報config1を選択装置44に出力する。
【0399】
第2の経路選択情報メモリ43は、CPU41からバスBUSを介して第2の経路選択情報config2が書き込まれ、書き込まれた第2の経路選択情報config2を選択装置44に出力する。
【0400】
選択装置44は、アドレス生成装置45による制御信号ctrlaおよびCPU41による制御信号ctrlbに応じて、第1の経路選択情報メモリ42による第1の経路選択情報config1、および第2の経路選択情報メモリ43による第2の経路選択情報config2のうちのいずれかを選択して、演算装置47に供給する。
【0401】
アドレス生成装置45は、CPU41によるreq_ack信号を受けて起動し、あらかじめCPU41により制御信号agctrlで指定されたアドレス生成パターンで、自動的にアドレスadrを生成し、データメモリ46からの読み出し、データメモリ46ヘの書き込みを行う。
また、アドレス生成装置45は、生成したアドレスに応じた選択情報を含む制御信号ctrlaを選択装置44に出力し、第1の経路選択情報メモリ42による第1の経路選択情報config1、および第2の経路選択情報メモリ43による第2の経路選択情報config2のうちのいずれかを選択させて、演算装置47に供給させる。
そして、アドレス生成装置45は、アドレスの生成が終了したときには、req_ack信号を用いてCPU41に動作の完了を伝える。
【0402】
データメモリ46は、アドレス生成装置45で生成されたアドレスadrによりデータメモリ46の記憶データを読み出し、この読み出しデータread datを演算装置47に供給し、演算装置47の演算結果である書き込みデータwrite datを書き込み。
また、データメモリ46は、バスBUSを介してCPU41によりアクセスされる。
【0403】
演算装置47は、選択装置44で選択された第1の経路選択情報メモリ42による第1の経路選択情報config1、または第2の経路選択情報メモリ43による第2の経路選択情報config2に基づいて、演算器の配列や、演算実行時の係数パラメータ等を再構成して、データメモリ46の読み出しデータread datに対し指定の演算を行い、この演算結果を書き込みデータwrite datとしてデータメモリ46に供給する。
【0404】
次に、上記構成による動作を、図13に関連付けて説明する。
【0405】
まず、CPU41により、バスBUSを介して、第1の経路選択情報メモリ42に第1の経路選択情報config1が書き込まれ、第2の経路選択情報メモリ43に第2の経路選択情報config2が書き込まれる。
【0406】
また、CPU41により、バスBUSを介してデータメモリ46に複数のデータがあらかじめ書き込まれる。
さらに、CPU41によりアドレス生成装置45に対して制御信号agctrが出力されて、アドレス生成パターンが指定されて、アドレス生成装置45の起動が行われる。
【0407】
これにより、CPU41から制御がアドレス生成装置45に移行され、アドレス生成装置45において、アドレスの自動生成が開始され、データメモリ46に供給される。
なお、ここでは簡単のため、アドレス生成装置45において発生する読み出しアドレスパターンが0,1,2,3,4,5であるものとする。
そして、生成アドレスadrに基づいてデータメモリ46から読み出され、演算装置47に供給されるデータは、read_dat [0] 、read_dat [1] 、read_dat [2] 、read_dat [3] 、read_dat [4] 、およびread_dat [5] となる。
【0408】
また、アドレス生成装置45からは、生成アドレスに応じて制御信号ctrlaが選択装置44に出力される。
選択装置44では、アドレス生成装置45による制御信号ctrlaおよびCPU41による制御信号ctrlbに応じて、第1の経路選択情報メモリ42による第1の経路選択情報config1、および第2の経路選択情報メモリ43による第2の経路選択情報config2のうちのいずれかが選択されて、演算装置47に供給される。
【0409】
演算装置47においては、選択装置44により供給される第1の経路選択情報メモリ42による第1の経路選択情報config1、または第2の経路選択情報メモリ43による第2の経路選択情報config2に基づいて、演算器の配列や、演算実行時の係数パラメータ等が再構成される。
そして、再構成された演算装置47において、データメモリ46の読み出しデータread_dat [0] 、read_dat [1] 、read_dat [2] 、read_dat [3] 、read_dat [4] 、およびread_dat [5] に対し指定の演算が行われる。
【0410】
演算装置47における演算結果は、write−dat [0] 、write−dat [1] 、write−dat [2] 、write−dat [3] 、write−dat [4] 、およびwrite−dat [5] となる。
【0411】
ここで、第1の経路選択情報config1で実行される演算をfunc1()、第2の経路選択情報config2で実行される演算をfunc2()とする。
そして、図13に示すように、アドレス生成装置45からの制御情報ctrlaでアドレスが、0,1,3,4のときには第1の経路選択情報config1を、アドレスが2,5のときには第2の経路選択情報config2を選択することができるものとする。
この場合の演算結果は、次のように表すことができる。
【0412】
【数18】
write−dat [0] =func1(read_dat [0] )
write−dat [1] =func1(read_dat [1] )
write−dat [2] =func2(read_dat [2] )
write−dat [3] =func1(read_dat [3] )
write−dat [4] =func1(read_dat [4] )
write−dat [5] =func2(read_dat [5] )
【0413】
これらの演算結果がデータメモリ46に書き込まれ、アドレス生成装置45によるアドレスadrの自動生成が終了される。
そして、アドレス生成装置45からask_req信号がCPU41に送られ、演算の終了が伝えられる。
【0414】
以上説明したように、本第10の実施形態によれば、第1の経路選択情報config1を記憶する第1の経路選択情報メモリ42と、第2の経路選択情報config2を記憶する第2の経路選択情報メモリ43と、制御信号ctrlaおよび制御信号ctrlbに応じて、第1の経路選択情報メモリ42による第1の経路選択情報config1、および第2の経路選択情報メモリ43による第2の経路選択情報config2のうちのいずれかを選択する選択装置44と、指定されたアドレス生成パターンで、自動的にアドレスadrを生成し、データメモリ46からの読み出し、データメモリ46ヘの書き込みを行い、かつ、生成したアドレスに応じて制御信号ctrlaを選択装置44に出力するアドレス生成装置45と、選択装置44で選択された第1の経路選択情報config1、または第2の経路選択情報config2に基づいて、演算器の配列や、演算実行時の係数パラメータ等を再構成して、データメモリ46の読み出しデータread datに対し指定の演算を行い、この演算結果を書き込みデータwrite datとしてデータメモリ46に書き戻す演算装置47とを設けたので、以下の利点がある。
【0415】
すなわち、従来、CPUとアドレス生成装置と複数の構成情報メモリと再構成可能な演算装置で構成される演算システムにおいては、CPUを用いて、複数の構成メモリの選択を制御し、アドレス生成装置がアドレスを生成している期間中にCPUを用いてメモリの選択を行わせるためには、CPUとアドレス生成装置間に同期機構を設ける必要があり、そのため、制御が複雑になり、余計なハードウェアが必要になる、あるいはハードウェアの構造によっては、同期自体が不可能であるという欠点を持っていた。
これに対して、本第10の実施形態に係る演算システムによれば、アドレス生成装置自身が出力する制御信号を用いて、複数の構成メモリの選択が可能になるため、同期機構を設ける必要がなくなるという利点がある。
また、CPUに制御が一度戻ることがないため、処理を行うためのオーバーヘッドが少なくなり、システム全体の処理能力を向上させることも可能になる。
【0416】
第11実施形態
図14は、本発明の第11の実施形態を説明するための図であって、本発明に係る演算システムに適用可能なアドレス生成装置の一例を示す構成図である。
【0417】
本アドレス生成装置50は、たとえば上述した第10の実施形態を示す図12の演算システムに適用可能で、4個(一般的にはn個)のカウンタを用いてアドレスを生成する装置であって、C言語のforループ中での配列のアクセスパターンやそのネスティング、FFT、ビットリバース等のアドレスパターンを生成し、このアドレス生成とともに制御信号CTRL(図12のctrla)も出力する。
以下、アドレス生成装置50の具体的な構成および機能について、順を追って説明する。
【0418】
本アドレス生成装置50は、図14に示すように、演算器(INCDEC0)51−0,演算器(INCDEC1)51−1,演算器(INCDEC2)51−2,演算器(INCDECx)51−X、セレクタ付き演算器(SUM0)52−0,セレクタ付き演算器(SUM1)52−1,セレクタ付き演算器(SUM2)52−2、セレクタ(SEL0)53−0,セレクタ(SEL1)53−1,セレクタ(SEL2)53−2,セレクタ(SELx)53−x、カウンタ(Counter0)54−0,カウンタ(Counter1)54−1,カウンタ(Counter2)54−2,カウンタ(Counterx)54−x、比較器(END)55、比較器(END0)56−0,比較器(END1)56−1,比較器(END2)56−2,比較器(ENDx)56−x、比較器(INC0)57−0,比較器(INC1)57−1,比較器(INC2)57−2、セレクタ付き演算器(ADRSUM)58、ビット反転器(BRV)59、マスク生成器(ADRMSK)60、および制御信号生成器(CTRLGEN)61を有している。
【0419】
そして、アドレス生成装置50は、入力信号COUNT0STP,COUNT1STP,COUNT2STP,COUNT0INI,COUNT1INI,COUNT2INI,COUNTxINI,COUNT0FIN,COUNT1FIN,COUNT2FIN,COUNTxFIN,OFFSET,MASKと、制御信号CNT0INIMD,CNT1INIMD,CNT2INIMD,CNT0RETMD,CNT1RETMD,CNT2RETMD,CNT0ENDMD,CNT1ENDMD,CNT2ENDMD,CNT0INCMD,CNT1INCMD,CNT2INCMD,CTRLMD,COUNTSUM,MSKMD,COUNTENが供給され、制御信号CTRL、および生成アドレスGENADRを出力する。
【0420】
演算器51−0は、制御信号CNT0INIMDの値に応じて入力信号COUNT0STPとカウンタ54−0のカウントデータcountdat 0を演算した結果を信号countcal 0としてセレクタ53−0、およびセレクタ演算器52−0〜52−2に出力する。
具体的には、演算器51−0は、制御信号CNT0INIMDの値に応じて、以下のいずれかの演算を行う。
【0421】
【数19】
countcal 0=COUNT0STP+countdat 0、
countcal 0=COUNT0STP−countdat
【0422】
演算器51−1は、制御信号CNT1INIMDの値に応じて入力信号COUNT1STPとカウンタ54−1のカウントデータcountdat 1を演算した結果を信号countcal 1としてセレクタ53−1、およびセレクタ演算器52−0〜52−2に出力する。
具体的には、演算器51−1は、制御信号CNT1INIMDの値に応じて、以下のいずれかの演算を行う。
【0423】
【数20】
countcal 1=COUNT1STP+countdat 1、
countcal 1=COUNT1STP−countdat
【0424】
演算器51−2は、制御信号CNT2INIMDの値に応じて入力信号COUNT2STPとカウンタ54−2のカウントデータcountdat 2を演算した結果を信号countcal 2としてセレクタ53−2、およびセレクタ演算器52−0〜52−2に出力する。
具体的には、演算器51−2は、制御信号CNT2INIMDの値に応じて、以下のいずれかの演算を行う。
【0425】
【数21】
countcal 2=COUNT2STP+countdat 2、
countcal 2=COUNT2STP−countdat
【0426】
演算器51−xは、入力信号COUNTxFINとカウンタ54−xのカウントデータcountdat xを演算した結果を信号countcal xとしてセレクタ53−xに出力する。
【0427】
セレクタ付き演算器52−0は、制御信号CNT0RETMDの値に応じて入力信号COUNT0INI、演算器51−0の出力信号countcal 0、演算器51−1の出力信号countcal 1、および演算器51−2の出力信号countcal 2を演算した結果を信号countret 0としてセレクタ53−0に出力する。
具体的には、演算器52−0は、制御信号CNT0RETMDの値に応じて、以下のいずれかの演算を行う。
【0428】
【数22】
countret 0=COUNT0INI、
countret 0=countcal 0、
countret 0=countcal 1、
countret 0=countcal 2、
countret 0=COUNT0INI+countcal 0、
countret 0=COUNT0INI+countcal 1、
countret 0=COUNT0INI+countcal
【0429】
セレクタ付き演算器52−1は、制御信号CNT1RETMDの値に応じて入力信号COUNT1INI、演算器51−0の出力信号countcal 0、演算器51−1の出力信号countcal 1、および演算器51−2の出力信号countcal 2を演算した結果を信号countret 1としてセレクタ53−1に出力する。
具体的には、演算器52−1は、制御信号CNT1RETMDの値に応じて、以下のいずれかの演算を行う。
【0430】
【数23】
countret 1=COUNT1INI、
countret 1=countcal 0、
countret 1=countcal 1、
countret 1=countcal 2、
countret 1=COUNT1INI+countcal 0、
countret 1=COUNT1INI+countcal 1、
countret 1=COUNT1INI+countcal
【0431】
セレクタ付き演算器52−2は、制御信号CNT2RETMDの値に応じて入力信号COUNT2INI、演算器51−0の出力信号countcal 0、演算器51−1の出力信号countcal 1、および演算器51−2の出力信号countcal 2を演算した結果を信号countret 2としてセレクタ53−2に出力する。
具体的には、演算器52−2は、制御信号CNT2RETMDの値に応じて、以下のいずれかの演算を行う。
【0432】
【数24】
countret 2=COUNT2INI、
countret 2=countcal 0、
countret 2=countcal 1、
countret 2=countcal 2、
countret 2=COUNT2INI+countcal 0、
countret 2=COUNT2INI+countcal 1、
countret 2=COUNT2INI+countcal
【0433】
セレクタ53−0は、比較器56−0の出力信号countend 0、および比較器57−0の出力信号countinc 0の値に応じて、演算器51−0の出力信号countcal 0、入力信号COUNT0INI、演算器52−0の出力信号countret 0の値を選択して、カウンタ54−0に出力する。
【0434】
セレクタ53−1は、比較器56−1の出力信号countend 1、および比較器57−1の出力信号countinc 1の値に応じて、演算器51−1の出力信号countcal 1、入力信号COUNT1INI、演算器52−1の出力信号countret 1の値を選択して、カウンタ54−1に出力する。
【0435】
セレクタ53−2は、比較器56−2の出力信号countend 2、および比較器57−2の出力信号countinc 2の値に応じて、演算器51−2の出力信号countcal 2、入力信号COUNT2INI、演算器52−2の出力信号countret 2の値を選択して、カウンタ54−2に出力する。
【0436】
セレクタ53−xは、比較器56−xの出力信号countend xの値に応じて、演算器51−xの出力信号countcal x、入力信号COUNTxINIの値を選択して、カウンタ54−xに出力する。
【0437】
カウンタ54−0は、セレクタ53−0の出力信号をカウントデータcountdat 0として格納し、格納データを演算器51−0、比較器55、およびセレクタ付き演算器58に出力する。
【0438】
カウンタ54−1は、セレクタ53−1の出力信号をカウントデータcountdat 1として格納し、格納データを演算器51−1、比較器55、およびセレクタ付き演算器58に出力する。
【0439】
カウンタ54−2は、セレクタ53−2の出力信号をカウントデータcountdat 2として格納し、格納データを演算器51−2、比較器55、およびセレクタ付き演算器58に出力する。
【0440】
カウンタ54−xは、セレクタ53−xの出力信号をカウントデータcountdat xとして格納し、格納データを演算器51−x、比較器55、およびセレクタ付き演算器58に出力する。
【0441】
比較器55は、カウンタ54−0によるカウンタデータcountdat 0、カウンタ54−1によるカウンタデータcountdat 1、カウンタ54−2によるカウンタデータcountdat 2、カウンタ54−xによるカウンタデータcountdat x、および入力信号COUNT0INI,COUNT1INI、COUNT2INI、COUNT0FIN、COUNT1FIN、COUNT2FINの値を演算し、結果endsig0を比較器56−0に出力し、結果endsig1を比較器56−1に出力し、結果endsig2を比較器56−2に出力し、結果endsigxを比較器56−xに出力する。
【0442】
具体的には、比較器55は、j=0,1,2,xについて、カウンタ54−0によるカウントデータcountdat 0と入力信号COUNT0INIが等しいときにendsigj=eq0、カウンタ54−1によるカウントデータcountdat 1と入力信号COUNT1INIが等しいときにendsigj=eq1、カウンタ54−2によるカウントデータcountdat 2と入力信号COUNT2INIが等しいときにendsigj=eq2を設定する。同様に、比較器55は、カウンタ54−0によるカウントデータcountdat 0と入力信号COUNT0FINが等しいときにendsigj=eq3、カウンタ54−1によるカウントデータcountdat 1と入力信号COUNT1FINが等しいときにendsigj=eq4、カウンタ54−2によるカウントデータcountdat 2と入力信号COUNT2FINが等しいときにendsigj=eq5を設定する。
また、比較器55は、カウンタ54−0によるカウントデータcountdat 0とカウンタ54−1によるカウントデータcountdat 1が等しいときendsigj=eq6、カウンタ54−1によるカウントデータcountdat 1とカウンタ54−2によるカウントデータcountdat 2が等しいときendsigj=eq7、カウンタ54−2によるカウントデータcountdat 2とカウンタ54−0によるカウントデータcountdat 0が等しいときendsigj=eq8を設定する。
【0443】
比較器56−0は、制御信号CNT0ENDMDの値に応じて、比較器55の出力信号endsig0の値から、信号countend 0を生成し、セレクタ53−0、比較器57−1,57−2、および制御信号生成器61に出力する。
具体的には、比較器56−0は、制御信号CNT0ENDMDの値と比較器55の出力信号endsig0の値が、一致していれば信号countend 0に真を設定し、一致していなければ信号countend 0に偽を設定する。
【0444】
比較器56−1は、制御信号CNT1ENDMDの値に応じて、比較器55の出力信号endsig1の値から、信号countend 1を生成し、セレクタ53−1、比較器57−0,57−2、および制御信号生成器61に出力する。
具体的には、比較器56−1は、制御信号CNT1ENDMDの値と比較器55の出力信号endsig1の値が、一致していれば信号countend 1に真を設定し、一致していなければ信号countend 1に偽を設定する。
【0445】
比較器56−2は、制御信号CNT2ENDMDの値に応じて、比較器55の出力信号endsig2の値から、信号countend 2を生成し、セレクタ53−2、比較器57−0,57−1、および制御信号生成器61に出力する。
具体的には、比較器56−2は、制御信号CNT2ENDMDの値と比較器55の出力信号endsig2の値が、一致していれば信号countend 2に真を設定し、一致していなければ信号countend 2に偽を設定する。
【0446】
比較器56−xは、比較器55の出力信号endsigxの値から、信号countend xを生成し、セレクタ53−xに出力する。
【0447】
比較器57−0は、制御信号CNT0INCMDの値に応じて、比較器56−1の出力信号countend 1、および比較器56−2の出力信号countend 2の値から信号countinc 0を生成し、セレクタ53−0に出力する。
具体的には、比較器57−0は、制御信号CNT0INCMDの値に応じて、比較器56−1の出力信号countend 1が真のときに信号countinc 0に真を設定し、偽のときに信号countinc 0に偽を設定する。
または、比較器57−0は、制御信号CNT0INCMDの値に応じて、比較器56−2の出力信号countend 2が真のときに信号countinc 0に真を設定し、偽のときに信号countinc 0に偽を設定する。
または、比較器57−0は、制御信号CNT0INCMDの値に応じて、比較器56−1の出力信号countend 1、かつ比較器56−2の出力信号countend 2が真のときに信号countinc 0に真を設定し、偽のときに信号countinc 0に偽を設定する。
【0448】
比較器57−1は、制御信号CNT1INCMDの値に応じて、比較器56−2の出力信号countend 2、および比較器56−0の出力信号countend 0の値から信号countinc 1を生成し、セレクタ53−1に出力する。
具体的には、比較器57−1は、制御信号CNT1INCMDの値に応じて、比較器56−2の出力信号countend 2が真のときに信号countinc 1に真を設定し、偽のときに信号countinc 1に偽を設定する。
または、比較器57−1は、制御信号CNT0INCMDの値に応じて、比較器56−0の出力信号countend 0が真のときに信号countinc 1に真を設定し、偽のときに信号countinc 1に偽を設定する。
または、比較器57−1は、制御信号CNT1INCMDの値に応じて、比較器56−2の出力信号countend 2、かつ比較器56−0の出力信号countend 0が真のときに信号countinc 1に真を設定し、偽のときに信号countinc 1に偽を設定する。
【0449】
比較器57−2は、制御信号CNT2INCMDの値に応じて、比較器56−0の出力信号countend 0、および比較器56−1の出力信号countend 1の値から信号countinc 2を生成し、セレクタ53−2に出力する。
具体的には、比較器57−2は、制御信号CNT2INCMDの値に応じて、比較器56−0の出力信号countend 0が真のときに信号countinc 2に真を設定し、偽のときに信号countinc 2に偽を設定する。
または、比較器57−2は、制御信号CNT2INCMDの値に応じて、比較器56−1の出力信号countend 1が真のときに信号countinc 2に真を設定し、偽のときに信号countinc 2に偽を設定する。
または、比較器57−2は、制御信号CNT2INCMDの値に応じて、比較器56−0の出力信号countend 0、かつ比較器56−1の出力信号countend 1が真のときに信号countinc 2に真を設定し、偽のときに信号countinc 2に偽を設定する。
【0450】
セレクタ付き演算器58は、制御信号COUNTSUMの値に応じて、カウンタ54−0によるカウントデータcountdat 0、カウンタ54−1によるカウントデータcountdat 1、カウンタ54−2によるカウントデータcountdat 2、カウンタ54−3によるカウントデータcountdat x、および入力信号OFFSETに基づいて信号sumadrを生成し、ビット反転器59、およびマスク生成器60に出力する。
具体的には、演算器58は、制御信号COUNTSUMの値に応じて、以下のいずれかの演算を行う。
【0451】
【数25】
Figure 0003846196
【0452】
ビット反転器59は、制御信号MSKMDの値に応じて、セレクタ付セレクタ付演算器58の生成信号sumadrから信号brvadrを生成し、マスク生成器60に出力する。
具体的には、ビット反転器59は、制御信号MSKMDの値に応じて、mを決定し、信号brvadrにセレクタ付演算器58の生成信号sumadrのLSBからm−1ビットまでのビット反転を設定する。
【0453】
マスク生成器60は、制御信号MSDMDの値に応じて、ビット反転器59の生成信号brvadr、セレクタ付演算器58の生成信号sumadr、および入力信号MASKに基づいてアドレス信号GENADRを生成する。
具体的には、マスク生成器60は、制御信号MSKMDの値に応じて、ビット反転器59の生成信号brvadrとセレクタ付演算器58の生成信号sumadrの値を選択し、その結果と入力信号MASKの値を各ビット単位でAND(論理積)、OR(論理和)、XOR(排他的論理和)のいずれかの操作を行い、信号GENADRを生成する。
この生成されたアドレス信号GENADRが、たとえば図12の演算システムのデータメモリ46に供給される。
【0454】
制御信号生成器61は、制御信号CTRLMDの値に応じて、比較器56−0の出力信号countend 0、比較器56−1の出力信号countend 1、および比較器56−2の出力信号countend 2に基づいて制御信号CTRLを生成し、アドレスが生成されている期間はアドレス有効信号VALIDを有効にする。
また、制御信号COUNTENの値に応じて、内部に持つカウンタ54−0、54−1、54−2、および54−xのカウントアップの許可/不許可の制御を行う。
【0455】
具体的には、制御信号生成器61は、制御信号CTRLMDの値に応じて、
・信号countend 0が真のとき、
・信号countend 1が真のとき、
・信号countend 2が真のとき、
・信号countend 0が真かつ信号countend 1が真のとき、
・信号countend 0が真かつ信号countend 2が真のとき、
・信号countend 1が真かつ信号countend 2が真のとき
のいずれかの場合に制御信号CTRLを有効にし、それ以外のときはCTRLを無効にする。
【0456】
次に、上記構成によるアドレス生成の具体的な動作を、図14の3重ループの場合を例に、図15に関連付けて説明する。
【0457】
まず、入力信号として与えられる各カウンタのステップ値、初期値、終了値がそれぞれ以下のように設定される。
【0458】
ステップ値信号COUNT0STPが「3」に設定されて演算器51−0に供給され、初期値信号COUNT0INIが「0」に設定されて演算器52−0、およびセレクタ53−0に供給され、終了値信号COUNT0FINが「3」に設定されて比較器55に供給される。
同様に、ステップ値信号COUNT1STPが「5」に設定されて演算器51−1に供給され、初期値信号COUNT1INIが「0」に設定されて演算器52−1、およびセレクタ53−1に供給され、終了値信号COUNT1FINが「10」に設定されて比較器55に供給される。
ステップ値信号COUNT2STPが「1」に設定されて演算器51−2に供給され、初期値信号COUNT2INIが「0」に設定されて演算器52−2、およびセレクタ53−2に供給され、終了値信号COUNT2FINが「1」に設定されて比較器55に供給される。
また、初期値信号COUNTxINIが「0」に設定されてセレクタ53−xに供給され、終了値信号COUNTxFINが「0」に設定されて演算器51−xに供給される。
【0459】
また、制御信号CNT0INIMDは加算の実行を選択するように、演算器51−0に供給される。
同様に、制御信号CNT1INIMDは加算の実行を選択するように、演算器51−1に供給され、制御信号CNT2INIMDは加算の実行を選択するように、演算器51−2に供給される。
【0460】
さらに、制御信号CNT0RETMDがCOUNT0INIを選択するように設定されて、演算器52−0に供給される。
同様に、制御信号CNT1RETMDがCOUNT1INIを選択するように設定されて演算器52−1に供給され、制御信号CNT2RETMDがCOUNT2INIを選択するように設定されて演算器52−2に供給される。
【0461】
また、制御信号CNT0ENDMDが、カウンタ54−0のカウントデータcountdat 0と終了値信号COUNT0FINが一致したときの比較器55の出力信号ednsig0を入力したときに、信号countend 0に真を設定するように、比較器56−0に供給される。
同様に、制御信号CNT1ENDMDが、カウンタ54−1のカウントデータcountdat 1と終了値信号COUNT1FINが一致したときの比較器55の出力信号ednsig1を入力したときに、信号countend 1に真を設定するように、比較器56−1に供給される。
そして、制御信号CNT2ENDMDが、カウンタ54−2のカウントデータcountdat 2と終了値信号COUNT2FINが一致したときの比較器55の出力信号ednsig2を入力したときに、信号countend 2に真を設定するように、比較器56−2に供給される。
【0462】
また、制御信号CNT0INCMDが、比較器57−2の出力信号countend 2が真で、かつ比較器57−1の出力信号countend 1が真であるときに、信号countinc 0に真を設定するように、比較器57−0に供給される。
また、制御信号CNT1INCMDが、比較器57−2の出力信号countend 2が真であるときに、信号countinc 1に真を設定するように、比較器57−1に供給される。
また、制御信号CNT2INCMDが、常に信号countinc 2に真を設定するように、比較器57−2に供給される。
【0463】
さらに、制御信号COUNTSUMが、カウンタ54−0によるカウントデータcountdat 0の値、カウンタ54−1によるカウントデータcountdat 1の値、およびカウンタ54−2によるカウントデータcountdat 2の値の合計を出力するモードに設定されるように、セレクタ付演算器58に供給される。
【0464】
また、セレクタ付演算器58に供給される入力信号OFFSET、およびマスク生成器60に供給される入力信号MASKが「0」に設定される。
さらに、制御信号MSKMDが、ビットリバースなし、マスクをしないモードに設定するように、ビット反転器59、およびマスク生成器60に供給される。
【0465】
このような状態において、アドレス生成装置50が、図示しない制御回路からアドレス生成起動信号を受けて、カウンタ54−0〜54−xが所定のタイミングでカウント動作を開始される。
この場合、カウンタ54−2では、図15(j)に示すように、比較器57−2の出力信号countinc 2が常に真(図15ではハイレベル)、すなわち、常にカウントアップを示しているのでカウントアップはじめ、初期値0にステップ値信号COUNT2STPの値「1」が加えられ、カウントデータcountdat 2は、図15(c)に示すように、0から1となる。
【0466】
カウンタ54−2のカウントデータcountdat 2が「1」になり、比較器55に供給される。このカウントデータcountdat 2の値「1」は、終了値信号COUNT2FINと等しくなるので、その旨を示す信号endsig2が比較器56−2に供給され、図15(g)に示すように、比較器56−2の出力信号countend 2が真に設定されて比較器57−1,57−0、および制御信号生成器61に供給される。
【0467】
比較器56−2の出力信号countend 2が真で供給された比較器57−1では、図15(i)に示すように、その出力信号countinc 1が真に設定される。
これにより、カウンタ54−1においてカウントアップが行われ、カウントデータcountdat 1は、図15(b)に示すように「5」になる。
このとき、カウンタ54−2は、制御信号CNT1RETMDに従って、セレクタ53−2を介して初期値0に戻される。
このとき、カウンタ54−0では、図15(h)に示すように、比較器57−0の出力信号countinc 0が偽(図15ではローレベル)であることから、カウントアップ動作が開始されない。
【0468】
カウンタ54−2のカウントデータcountdat 2が、図15(c)に示すように、再び「1」になると、カウンタ54−1がカウントアップされることを繰り返される。
図15(b)に示すように、カウンタ54−1のカウントデータcountdat 1が「10」になった時点で、終了値信号COUNT1FINと等しくなるので、その旨を示す信号endsig1が比較器56−1に供給され、図15(f)に示すように、比較器56−1の出力信号countend 1が真に設定されて比較器57−0,57−2、および制御信号生成器61に供給される。
【0469】
比較器56−1の出力信号countend 1が真で供給された比較器57−0では、図15(h)に示すように、その出力信号countinc 0が真に設定される。
これにより、カウンタ54−0においてカウントアップが行われ、カウントデータcountdat 0は、図15(a)にしめすように「0」から「3」に更新される。
【0470】
生成されるアドレスは、制御信号COUNTSUMを受けたセレクタ付演算器58では、カウンタ54−0のカウントデータcountdat 0、カウンタ54−1のカウントデータcountdat 1、およびカウンタ54−2のカウントデータcountdat 2の合計値を出力するモードになっているので、マスク生成器60から、図15(d)に示すように、アドレス信号GENADRとしてカウンタの合計値が出力される。
【0471】
さらに、制御信号CTRLMDが、比較器56−1の出力信号countend 1、かつ比較器56−2の出力信号countend 2が真のときに制御信号CTRLを出力するように、制御信号生成器61に供給されると、図15(l)に示すように、両信号が真となるそのタイミングでCTRLが真になる。
【0472】
以上説明したように、本第11の実施形態によれば、従来のDSPなどではアドレス生成不可能だった複雑なループのネスト、FFTアクセスパターン、ビットリバース等を行おうとする場合に、アドレスを自動生成することができる。このためALUを用いてアドレス計算を行う必要がなくなり、処理に必要なサイクル数が減り効率が良くなる利点がある。
【0473】
なお、以上の説明では、図14に関連付けて、3重ループの場合を例を説明したが、本発明は、これに限定されるものではなく、カウンタ数の異なる種々の態様が可能であることはいうまでもない。
【0474】
以下に、カウンタ数が上述した例の拡張である一般的な実現例について説明する。
【0475】
このアドレス生成装置は、カウンタCounter i,Counter x、演算器INCDECi,INCDECx、セレクタ付き演算器SUMi,ADRSUM、セレクタSELi,SELx、比較器END,ENDi,ENDx,INCi、ビット反転器BRV、およびマスク生成器ADRMSKにより構成される(ただし0≦i≦n−1)。
【0476】
また、このアドレス生成装置は、入力信号COUNTiSTP,COUNTiINI,COUNTiFIN,COUNTxFIN,OFFSET,MASKと、制御信号CNTilNIMD,CNTiRETMD,CNTiENDMD,CNTiINCMD,CTRLMD,COUNTSUM,MSKMD,COUNTENが供給され、制御信号CTRL、および生成アドレスGENADRを出力する。
【0477】
ここで、i=0〜n−1のすべてのiについて、カウンタCounter iはカウントデータcountdat iを格納し、カウンタCounter xはカウントデータcountdat xを格納する。
【0478】
i=0〜n−1のすべてのiについて、演算器INCDECiは制御信号CNTiINIMDの値に応じてステップ値信号COUNTiSTPとカウンタCounter iのカウントデータcountdat iを演算した結果を信号countcal iとして出力、演算器INCDECxは終了値信号COUNTxFINとカウンタCounter xのカウントデータcountdat xを演算した結果を信号countcal xを出力する。
【0479】
i=0〜n−1のすべてのiについて、セレクタ付き演算器SUMiは制御信号CNTiRETMDの値に応じて初期値信号COUNTiINI、演算器INCDECiの出力信号countcal 0,countcal 1,…,countcal n−1を演算した結果を、セレクタSELiを介してカウンタCounter iに出力する。
【0480】
i=0〜n−1のすべてのiについて、比較器ENDはカウンタCounter i のカウントデータcountdat 0,countdat 1,…,countcal n−1、カウンタCounter x のカウントデータcountdat x、初期値信号COUNT0INI,COUNT1INI,…,COUNTn−1INI、終了値信号COUNT0FIN,COUNT1FIN,…,COUNTn−1FINの値を演算した結果を信号endsigiとして出力し、また、カウンタCounter i のカウントデータcountdat 0,countdat 1,…,countcal n−1、カウンタCounter x のカウントデータcountdat x、初期値信号COUNT0INI,COUNT1INI,…,COUNTn−1INI、終了値信号COUNT0FIN,COUNT1FIN,…,COUNTn−1FINの値を演算した結果を信号endsigxとして出力する。
【0481】
i=0〜n−1のすべてのiについて、比較器ENDiは制御信号CNTiENDMDの値に応じて、比較器ENDの出力信号endsigiの値から信号countend iを生成し、比較器ENDxは比較器ENDの出力信号endsigxの値から信号countend xを生成する。
【0482】
i=0〜n−1のすべてのiについて、比較器INCiは制御信号CNTiINCMDの値に応じて、j=0〜n−1のすべてのj(ただしj!=i)について比較器ENDiの出力信号countend j値から信号countinc 0を生成する。
【0483】
i=0〜n−1のすべてのiについて、セレクタSELiは比較器INCiの出力信号countinc i、比較器ENDiの出力信号countend iの値に応じて、演算器INCDECiの出力信号countcla i、初期値信号COUNTiINI、演算器SUMiの出力信号countret iの値を選択して、カウンタCounter i のカウントデータcountdat iを設定し、セレクタSELxは比較器ENDxの出力信号countend xの値に応じて、演算器INCDECxの出力信号countcal x、初期値信号COUNTxINIの値を選択して、カウンタCounter x のカウントデータcountdat xを設定する。
【0484】
セレクタ付演算器ADRSUMは、制御信号COUNTSUMの値に応じて、カウンタCounter i のカウントデータcountdat 0,countdat 1,…,countcal n−1、カウンタCounter x のカウントデータcountdat x、入力信号OFFSETから信号sumadrを生成する。
【0485】
ビット反転器BRVは、制御信号MSKMDの値に応じてセレクタ付演算器ADRSUMの出力信号sumadrから信号brvadrを生成する。
【0486】
マスク生成器ADRMSKは、制御信号MSDMDの値に応じビット反転器brvadrとセレクタ付演算器ADRSUMの出力信号sumadrと入力信号MASKからアドレス信号GENADRを生成する。
【0487】
制御信号生成器CTRLGENは、制御信号CTRLMDの値に応じてカウンタCounter i のカウントデータcountdat 0,countdat 1,…,countcal n−1から制御信号CTRLを生成する。
制御信号生成器CTRLGENは、アドレスが生成されている期間はアドレス有効信号VALIDを有効にする。
【0488】
そして、上述した構成を有するアドレス生成装置において、i=0〜n−1のすべてのiについて、以下の処理が行われる。
【0489】
i=0〜n−1のすべてのiについて、演算器INCDECiは、制御信号CNTiINIMDの値に応じて、次のいずれかの演算を行う。
【0490】
【数26】
countcal i=COUNTiSTP+countdat i、
countcal i=COUNTiSTP−+countdat
【0491】
i=0〜n−1のすべてのiについて、セレクタ付演算器SUMiは、制御信号CNTiRETMDの値に応じて、次のいずれかの演算を行う。
【0492】
【数27】
countret i=COUNTiINI、
countret i=countcal 0、
countret i=countcal 1、

countret i=countcal n−1、
countret i=COUNTiINI+countcal 0、
countret i=COUNTiINI+countcal 1、

countret i=COUNTiINI+countcal n−1
【0493】
i=0〜n−1のすべてのiについて、比較器ENDは、カウントデータcountdat 0と初期値信号COUNT0INIが等しいときにendsigi =INI0、カウントデータcountdat 1と初期値信号COUNT1INIが等しいときにendsigi =INI1、…、カウントデータcountdat n−1と初期値信号COUNTn−1INIが等しいときにendsigi =INIn−1を設定する。
同様に、比較器ENDは、カウントデータcountdat 0と終了値信号COUNT0FINが等しいときにendsigi =FIN0、カウントデータcountdat 1と終了値信号COUNT1FINが等しいときにendsigi =FIN1、…、カウントデータcountdat n−1と終了値信号COUNTn−1FINが等しいときにendsigi =FINn−1を設定する。
また、比較器ENDは、カウントデータcountdat 0とcountdat 1が等しいときにendsigi =eq01、カウントデータcountdat 0とcountdat 2が等しいときにendsigi =eq02、…カウントデータcountdat 0とcountdat n−1が等しいときにendsigi=eqn−1、……、countdat n−1とcountdat n−2が等しいときにendsigi =eqn−1n−2を設定する。
【0494】
i=0〜n−1のすべてのiについて、比較器ENDiは、制御信号CNTiENDMDの値と信号endsigiの値が一致していれば信号countend iに真を設定し、一致していなければ信号countend iに偽を設定する。
【0495】
i=0〜n−1のすべてのiについて、比較器INCiは、制御信号CNTiINCMDの値に応じて、j=0〜n−1のすべてのj(ただしj!=i)について、信号countend jが真のときに信号countinc iに真を設定し、信号countend jが偽のときには信号countinc iに偽を設定する。
または、比較器iは、j=0〜n−1のすべてのj(ただしi!=j)とk=0〜n−1のすべてのk(ただしk!=i)について、信号countend jが真で、かつ、信号countend kが真のときに、信号countinc iに真を設定し、そうでないときに信号countinc iに偽を設定する。
【0496】
セレクタ付演算器ADRSUMは、制御信号COUNTSUMの値に応じてのいずれかの演算を行う。
【0497】
【数28】
Figure 0003846196
【0498】
ビット反転器BRVは、制御信号MSKMDの値に応じてmを決定し、信号brvadrにセレクタ付演算器ADRSUMの生成信号sumadrのLSBからm−1ビットまでのビット反転を設定する。
【0499】
マスク生成器ADRMSKは、制御信号MSKMDの値に応じて、ビット反転器BRVの生成信号brvadr、セレクタ付演算器ADRSUMの生成信号sumadrを選択し、その結果と入力信号MASKの値を各ビット単位でAND(論理積)、OR(論理和)、XOR(排他的論理和)のいずれかの操作を行い、信号GENADRを生成する。
【0500】
制御信号生成器CTRLGENは、制御信号CTRLMDの値に応じて、カウントデータcountdat 0が真のとき、カウントデータcountdat 1が真のとき、…、カウントデータcountdat n−1が真のとき、カウントデータcountdat 0が真かつカウントデータcountdat 1が真のとき、カウントデータcountdat 0が真かつカウントデータcountdat 2が真のとき、…、カウントデータcountdat 0が真かつカウントデータcountdat n−1が真のとき、…、カウントデータcountdat n−2が真かつカウントデータcountdat n−1が真のときのいずれかの場合に制御信号CTRLを有効にし、それ以外のときは制御信号CTRLを無効にし、アドレスが生成されている期間はアドレス有効信号VALIDを有効にする。
また、制御信号COUNTENの値に応じて、内部に持つカウンタCounteri(ただし0≦i≦n−1)、Countex のカウントアップを許可/不許可にする。
【0501】
以上説明した一般的な例においても、上述した図14の装置の作用効果と同様の作用効果を得ることができる。
【0502】
第12実施形態
図16は、本発明の第12の実施形態を説明するための図であって、本発明に係るインタリーブ装置のデータ読み出し系の一例を示す構成図である。
【0503】
本インタリーブ装置70は、特定のアクセスパターンに対して、デュアルポートメモリが必要なアクセスを、シングルポートメモリを用いて実現することが可能な装置であって、FFT演算のデータアクセス等に利用できる。
したがって、本インタリーブ装置70は、たとえば上述した第10の実施形態を示す図12の演算システムのデータメモリから演算装置へのデータ伝送系に適用可能である。
なお、以下の説明では、図示しないシングルポートメモリは、メモリバンクMBNK0とメモリバンクMBNK1を有し、インタリーブ装置70は、メモリバンクMBNK0とメモリバンクMBNK1に対するアクセスを行うものとする。
【0504】
本インタリーブ装置70は、図16に示すように、第1の遅延装置(DFF0)71−0、第2の遅延装置(DFF1)71−1、第1の選択装置(sel0)72−0、および第2の選択装置(sel1)72−1を有している。
【0505】
そして、インタリーブ装置70は、メモリバンクMBNK0からの読み出しデータ入力MBNKR0、メモリバンクMBNK1からの読み出しデータ入力MBNKR1、および読み出しデータ出力MEMR0,MEMR1を有し、制御信号mbselr0,mbselr1が供給される。
【0506】
第1の遅延装置71−0は、たとえばD型フリップフロップにより構成され、1サイクルの遅延を生じさせ、メモリバンクMBNK0からの読み出しデータ入力MBNKR0を1サイクルだけ遅延させ、信号mbnkr0 dとして第1の選択装置72−0、および第2の選択装置72−1に出力する。
【0507】
第2の遅延装置71−1は、たとえばD型フリップフロップにより構成され、1サイクルの遅延を生じさせ、メモリバンクMBNK1からの読み出しデータ入力MBNKR1を1サイクルだけ遅延させ、信号mbnkr1 dとして第1の選択装置72−0、および第2の選択装置72−1に出力する。
【0508】
第1の選択装置72−0は、メモリバンクMBNK0からの読み出しデータ入力MBNKR0、メモリバンクMBNK1からの読み出しデータ入力MBNKR1、第1の遅延装置71−0の出力信号mbnkr0 d、および第2の遅延装置71−1の出力信号mbnkr1 dを入力とし、制御信号mbselr0の値に応じて、メモリバンクMBNK0からの読み出しデータ入力MBNKR0、メモリバンクMBNK1からの読み出しデータ入力MBNKR1、第1の遅延装置71−0の出力信号mbnkr0 d、および第2の遅延装置71−1の出力信号mbnkr1 dのうちのいずれかの値を、読み出しデータ出力MEMR0として選択する。
【0509】
第2の選択装置72−1は、メモリバンクMBNK0からの読み出しデータ入力MBNKR0、メモリバンクMBNK1からの読み出しデータ入力MBNKR1、第1の遅延装置71−0の出力信号mbnkr0 d、および第2の遅延装置71−1の出力信号mbnkr1 dを入力とし、制御信号mbselr1の値に応じて、メモリバンクMBNK0からの読み出しデータ入力MBNKR0、メモリバンクMBNK1からの読み出しデータ入力MBNKR1、第1の遅延装置71−0の出力信号mbnkr0 d、および第2の遅延装置71−1の出力信号mbnkr1 dのうちのいずれかの値を、読み出しデータ出力MEMR1として選択する。
【0510】
次に、上記構成による動作を、図17に関連付けて説明する。
【0511】
図17は、図16の読み出し系インタリーブ装置の動作を説明するためのタイミングチャートである。
このタイミングチャートは、はじめの2サイクル(cycle0,cycle1)は通常のメモリアクセス、すなわち読み出しデータ出力MEMR0にメモリバンクMBNK0からの読み出しデータ入力MBNKR0を送り、読み出しデータ出力MEMR1にメモリバンクMBNK1から読み出したデータMBNKR1を送るアクセスを表し、残りのサイクル(cycle2〜)は読み出しデータ出力MEMR0,MEMR1で1サイクル中にメモリバンクMBNK0からの読み出しデータ入力MBNKR0を同時に利用、あるいは1サイクル中にメモリバンクMBNK1からの読み出しデータ入力MBNKR1のデータを同時に利用する場合を表している。
【0512】
図17(a)に示すように、サイクル(cycle)0でメモリバンクMBNK0から読み出したデータ入力MBNKR0はeven0のデータになる。
cycle1で読み出しデータ入力MBNKR0はeven1になり、メモリバンクMBNK1からの読み出しデータ入力MBNKR1は、図17(b)に示すように、odd0になる。
そして、読み出しデータ入力MBNKR0は、そのまま直接に第1の選択装置72−0、および第2の選択装置72−1に入力され、かつ、第1の遅延装置71−0で1サイクルだけ遅延され、信号mbnkr0 dとして第1の選択装置72−0、および第2の選択装置72−1に入力される。
同様に、読み出しデータ入力MBNKR1は、そのまま直接に第1の選択装置72−0、および第2の選択装置72−1に入力され、かつ、第2の遅延装置71−1で1サイクルだけ遅延され、信号mbnkr1 dとして第1の選択装置72−0、および第2の選択装置72−1に入力される。
【0513】
そして、図17(c),(d)に示すように、cycle1では、読み出しデータ出力MEMR0とMEMR1としてデータeven0、odd0を出力するため、制御信号mbselr0が、図17(e)に示すように、データ入力MBNKR0の1サイクル遅延を生じさせた信号mbnkr0 dを選択するように、第1の選択装置72−0に供給される。これにより、第1の選択装置72−0の読み出しデータ出力MEMR0は、データeven0となる。
同様に、制御信号mbselr1が、図17(f)に示すように、データ入力MBNKR1を選択するように、第2の選択装置72−1に供給される。これにより、第2の選択装置72−1の読み出しデータ出力MEMR1は、データodd0となる。
【0514】
cycle2では、読み出しデータ入力MBNKR0は、図17(a)に示すように、データeven2となり、読み出しデータ入力MBNKR1は、図17(b)に示すように、データodd1になる。
そして、図17(c),(d)に示すように、cycle2では、読み出しデータ出力MEMR0とMEMR1としてデータeven1、odd1を出力するため、制御信号mbselr0が、図17(e)に示すように、データ入力MBNKR0の1サイクル遅延を生じさせた信号mbnkr0 dを選択するように、第1の選択装置72−0に供給される。これにより、第1の選択装置72−0の読み出しデータ出力MEMR0は、データeven1となる。
同様に、制御信号mbselr1が、図17(f)に示すように、データ入力MBNKR1を選択するように、第2の選択装置72−1に供給される。これにより、第2の選択装置72−1の読み出しデータ出力MEMR1は、データodd1となる。
【0515】
cycle3では、読み出しデータ入力MBNKR0は、図17(a)に示すように、データeven3となり、読み出しデータ入力MBNKR1は、図17(b)に示すように、データodd2になる。
そして、図17(c),(d)に示すように、cycle3では、読み出しデータ出力MEMR0とMEMR1としてデータeven2、odd3を出力するため、制御信号mbselr0が、図17(e)に示すように、データ入力MBNKR0の1サイクル遅延を生じさせた信号mbnkr0 dを選択するように、第1の選択装置72−0に供給される。これにより、第1の選択装置72−0の読み出しデータ出力MEMR0は、データeven2となる。
同様に、制御信号mbselr1が、図17(f)に示すように、データ入力MBNKR0を選択するように、第2の選択装置72−1に供給される。これにより、第2の選択装置72−1の読み出しデータ出力MEMR1は、データeven3となる。
【0516】
cycle4では、読み出しデータ入力MBNKR0は、図17(a)に示すように、データeven4となり、読み出しデータ入力MBNKR1は、図17(b)に示すように、データodd3になる。
そして、図17(c),(d)に示すように、cycle4では、読み出しデータ出力MEMR0とMEMR1としてデータodd2、odd3を出力するため、制御信号mbselr0が、図17(e)に示すように、データ入力MBNKR1の1サイクル遅延を生じさせた信号mbnkr1 dを選択するように、第1の選択装置72−0に供給される。これにより、第1の選択装置72−0の読み出しデータ出力MEMR0は、データodd2となる。
同様に、制御信号mbselr1が、図17(f)に示すように、データ入力MBNKR1を選択するように、第2の選択装置72−1に供給される。これにより、第2の選択装置72−1の読み出しデータ出力MEMR1は、データodd3となる。
【0517】
以上説明したように、本第12の実施形態によれば、メモリバンクMBNK0からの読み出しデータ入力MBNKR0を1サイクルだけ遅延させ、信号mbnkr0 dとして第1の選択装置72−0、および第2の選択装置72−1に出力する第1の遅延装置71−0と、1サイクルの遅延を生じさせ、メモリバンクMBNK1からの読み出しデータ入力MBNKR1を1サイクルだけ遅延させ、信号mbnkr1 dとして第1の選択装置72−0、および第2の選択装置72−1に出力する第2の遅延装置71−1と、制御信号mbselr0の値に応じて、メモリバンクMBNK0からの読み出しデータ入力MBNKR0、メモリバンクMBNK1からの読み出しデータ入力MBNKR1、第1の遅延装置71−0の出力信号mbnkr0 d、および第2の遅延装置71−1の出力信号mbnkr1 dのうちのいずれかの値を、読み出しデータ出力MEMR0として選択する第1の選択装置72−0と、制御信号mbselr1の値に応じて、メモリバンクMBNK0からの読み出しデータ入力MBNKR0、メモリバンクMBNK1からの読み出しデータ入力MBNKR1、第1の遅延装置71−0の出力信号mbnkr0 d、および第2の遅延装置71−1の出力信号mbnkr1 dのうちのいずれかの値を、読み出しデータ出力MEMR1として選択する第2の選択装置72−1とを設けたので、デュアルポートメモリ(2R2Wメモリ)が必要な状況でも、特定のアクセスパターンの場合にはシングルポートメモリ(1R1Wメモリ)を用いて同等の機能を実現することができる。
これにより、メモリ面積の削減、プロセスポータビリティの向上が可能になり、しかも連続したメモリアクセスを実現できる利点がある。
【0518】
第13実施形態
図18は、本発明の第13の実施形態を説明するための図であって、本発明に係るインタリーブ装置のデータ書き込み系の一例を示す構成図である。
【0519】
本インタリーブ装置80は、特定のアクセスパターンに対して、デュアルポートメモリが必要なアクセスを、シングルポートメモリを用いて実現することが可能な装置であって、FFT演算のデータアクセス等に利用できる。
したがって、本インタリーブ装置80は、たとえば上述した第10の実施形態を示す図12の演算システムの演算装置の演算結果のデータメモリへの書き込みデータのデータ伝送系に適用可能である。
なお、以下の説明でも、図示しないシングルポートメモリは、メモリバンクMBNK0とメモリバンクMBNK1を有し、インタリーブ装置80は、メモリバンクMBNK0とメモリバンクMBNK1に対するアクセスを行うものとする。
【0520】
本インタリーブ装置80は、図18に示すように、第1の遅延装置(DFF0)81−0、第2の遅延装置(DFF1)81−1、第1の選択装置(sel0)82−0、および第2の選択装置(sel1)82−1を有している。
【0521】
そして、インタリーブ装置80は、系列0からの書き込みデータ入力MEMW0、系列1からの書き込みデータ入力MEMW1、メモリバンクMBNK0への書き込みデータ出力MBNKW0、およびメモリバンクMBNK1への書き込みデータ出力MBNKW1を有し、制御信号mbselw0,mbselw1が供給される。
【0522】
第1の遅延装置81−0は、たとえばD型フリップフロップにより構成され、1サイクルの遅延を生じさせ、系列0からの書き込みデータ入力MEMW0を1サイクルだけ遅延させ、信号memw0 dとして第1の選択装置82−0、および第2の選択装置82−1に出力する。
【0523】
第2の遅延装置81−1は、たとえばD型フリップフロップにより構成され、1サイクルの遅延を生じさせ、系列1からの書き込みデータ入力MEMW1を1サイクルだけ遅延させ、信号memw1 dとして第1の選択装置82−0、および第2の選択装置82−1に出力する。
【0524】
第1の選択装置82−0は、系列0からの書き込み入力MEMW0、系列1からの書き込みデータ入力MEMW1、第1の遅延装置81−0の出力信号memw0 d、および第2の遅延装置81−1の出力信号memw1 dを入力とし、制御信号mbselw0の値に応じて、系列0からの書き込み入力MEMW0、系列1からの書き込みデータ入力MEMW1、第1の遅延装置81−0の出力信号memw0 d、および第2の遅延装置81−1の出力信号memw1 dのうちのいずれかの値を、書き込みデータ出力MBNKW0として選択する。
【0525】
第2の選択装置82−1は、系列0からの書き込み入力MEMW0、系列1からの書き込みデータ入力MEMW1、第1の遅延装置81−0の出力信号memw0 d、および第2の遅延装置81−1の出力信号memw1 dを入力とし、制御信号mbselw1の値に応じて、系列0からの書き込み入力MEMW0、系列1からの書き込みデータ入力MEMW1、第1の遅延装置81−0の出力信号memw0 d、および第2の遅延装置81−1の出力信号memw1 dのうちのいずれかの値を、書き込みデータ出力MBNKW1として選択する。
【0526】
次に、上記構成による動作を、図19に関連付けて説明する。
【0527】
図19は、図18の書き込み系インタリーブ装置の動作を説明するためのタイミングチャートである。
このタイミングチャートは、はじめの2サイクル(cycle0,cycle1)は通常のメモリアクセス、すなわちメモリバンクMBNK0への書き込みデータ出力MBNKW0に系列0からの書き込みデータ入力MEMW0を送り、メモリバンクMBNK1への書き込みデータ出力MBNKW1に系列1からの書き込みデータ入力MEMW1を送るアクセスを表し、残りのサイクル(cycle2〜)は書き込みデータ入力MEMW0,MEMW1が同時に書き込みデータ出力MBNKW0、あるいは書き込みデータ出力MBNKW1としてメモリバンクMBNK0、MBNK1に書き込みをする必要があることを表している。
【0528】
サイクル(cycle)0で、系列0からの書き込みデータ入力MEMW0は、図19(a)に示すように、even0のデータになる。また、系列1からの書き込みデータ入力MEMW1は、図19(b)に示すように、odd0のデータになる。
そして、書き込みデータ入力MEMW0は、そのまま直接に第1の選択装置82−0、および第2の選択装置82−1に入力され、かつ、第8の遅延装置81−0で1サイクルだけ遅延され、信号memw0 dとして第1の選択装置82−0、および第2の選択装置82−1に入力される。
同様に、書き込みデータ入力MEMW1は、そのまま直接に第1の選択装置82−0、および第2の選択装置82−1に入力され、かつ、第2の遅延装置81−1で1サイクルだけ遅延され、信号memw1 dとして第1の選択装置82−0、および第2の選択装置82−1に入力される。
【0529】
そして、図19(c),(d)に示すように、cycle0では、書き込みデータ出力MBNKW0としてデータeven0を出力するため、制御信号mbselw0が、図17(e)に示すように、データ入力MEMW0を選択するように、第1の選択装置82−0に供給される。これにより、第1の選択装置82−0の書き込みデータ出力MBNKW0は、データeven0となる。
【0530】
cycle1で、系列0からの書き込みデータ入力MEMW0は、図19(a)に示すように、even1のデータになる。また、系列1からの書き込みデータ入力MEMW1は、図19(b)に示すように、odd1のデータになる。
そして、図19(c),(d)に示すように、cycle1では、書き込みデータ出力MBNKW0としてデータeven1を出力するため、制御信号mbselw0が、図19(e)に示すように、データ入力MEMW0を選択するように、第1の選択装置82−0に供給される。これにより、第1の選択装置82−0の書き込みデータ出力MBNKW0は、データeven1となる。
同様に、制御信号mbselw1が、図19(f)に示すように、データ入力MEMW1の1サイクル遅延を生じさせた信号memw1 dを選択するように、第2の選択装置82−1に供給される。これにより、第2の選択装置82−1の書き込みデータ出力MBNKW1は、データodd0となる。
【0531】
cycle2で、系列0からの書き込みデータ入力MEMW0は、図19(a)に示すように、even2のデータになる。また、系列1からの書き込みデータ入力MEMW1は、図19(b)に示すように、even3のデータになる。
そして、図19(c),(d)に示すように、cycle2では、書き込みデータ出力MBNKW0としてデータeven2を出力するため、制御信号mbselw0が、図19(e)に示すように、データ入力MEMW0を選択するように、第1の選択装置82−0に供給される。これにより、第1の選択装置82−0の書き込みデータ出力MBNKW0は、データeven2となる。
同様に、制御信号mbselw1が、図19(f)に示すように、データ入力MEMW1の1サイクル遅延を生じさせた信号memw1 dを選択するように、第2の選択装置82−1に供給される。これにより、第2の選択装置82−1の書き込みデータ出力MBNKW1は、データodd1となる。
【0532】
cycle3で、系列0からの書き込みデータ入力MEMW0は、図19(a)に示すように、odd2のデータになる。また、系列1からの書き込みデータ入力MEMW1は、図19(b)に示すように、odd3のデータになる。
そして、図19(c),(d)に示すように、cycle3では、書き込みデータ出力MBNKW0としてデータeven3を出力するため、制御信号mbselw0が、図19(e)に示すように、データ入力MEMW1の1サイクル遅延を生じさせた信号memw1 dを選択するように、第1の選択装置82−0に供給される。これにより、第1の選択装置82−0の書き込みデータ出力MBNKW0は、データeven3となる。
同様に、制御信号mbselw1が、図19(f)に示すように、データ入力MEMW0を選択するように、第2の選択装置82−1に供給される。これにより、第2の選択装置82−1の書き込みデータ出力MBNKW1は、データodd2となる。
【0533】
以下、cycle2とcycle3の内容を繰り返す。
【0534】
以上説明したように、本第13の実施形態によれば、系列0からの書き込みデータ入力MEMW0を1サイクルだけ遅延させ、信号memw0 dとして第1の選択装置82−0、および第2の選択装置82−1に出力する第1の遅延装置81−0と、系列1からの書き込みデータ入力MEMW1を1サイクルだけ遅延させ、信号memw1 dとして第1の選択装置82−0、および第2の選択装置82−1に出力する第2の遅延装置81−1と、制御信号mbselw0の値に応じて、系列0からの書き込み入力MEMW0、系列1からの書き込みデータ入力MEMW1、第1の遅延装置81−0の出力信号memw0 d、および第2の遅延装置81−1の出力信号memw1 dのうちのいずれかの値を、書き込みデータ出力MBNKW0として選択する第1の選択装置82−0と、制御信号mbselw1の値に応じて、系列0からの書き込み入力MEMW0、系列1からの書き込みデータ入力MEMW1、第1の遅延装置81−0の出力信号memw0 d、および第2の遅延装置81−1の出力信号memw1 dのうちのいずれかの値を、書き込みデータ出力MBNKW1として選択する第2の選択装置82−1とを設けたので、上述した第12の実施形態と同様に、デュアルポートメモリ(2R2Wメモリ)が必要な状況でも、特定のアクセスパターンの場合にはシングルポートメモリ(1R1Wメモリ)を用いて同等の機能を実現することができる。
これにより、メモリ面積の削減、プロセスポータビリティの向上が可能になり、しかも連続したメモリアクセスを実現できる利点がある。
【0535】
第14実施形態
図20は、本発明の第14の実施形態を説明するための図であって、本発明に係るインタリーブ装置のデータ読み出し系の一般化した例を示す構成図である。
【0536】
本第14の実施形態は、上述した遅延装置および選択装置を2個ずつ持つ第12の実施形態を一般化して、n個の読み出しデータ入力MBNKR0〜MBNKRn−1に対してそれぞれ、n個ずつの遅延装置71A−00〜71A−0n−1、…、71A−(n−1)0〜71A−(n−1)n−1をもち、各遅延装置71A−00〜71A−0n−1、…、71A−(n−1)0〜71A−(n−1)n−1の遅延信号mbnkr0 1d〜mbnkr0 nd、mbnkr1 1d〜mbnkr1 ndをn個の選択装置72A−0〜72A−n−1に対して並列に入力させた構成となっている。
【0537】
すなわち、本インタリーブ装置70Aは、n×n個の第1の遅延装置71A−00〜71A−0n−1、…、第nの遅延装置71A−(n−1)0〜71A−(n−1)n−1、およびn個の第1〜第nの選択装置72A−0〜72A−n−1を有している。
【0538】
そして、インタリーブ装置70Aは、メモリバンクMBNK0からの読み出しデータ入力MBNKR0、メモリバンクMBNK1からの読み出しデータ入力MBNKR1、…、メモリバンクMBNKn−1からの読み出しデータ入力MBNKRn−1、および読み出しデータ出力MEMR0〜MEMRn−1を有し、制御信号mbselr0,mbselr1、…、mbseln−1が供給される。
【0539】
第1の遅延装置71A−00は、たとえばD型フリップフロップにより構成され、任意のk(0≦k≦n−1)について、mサイクル(1≦m≦n)の遅延を生じさせる遅延装置であって、メモリバンクMBNK0からの読み出しデータ入力MBNKR0をmサイクルだけ遅延させ、信号mbnkr0 1dとして第1〜第nの選択装置72A−0〜72A−n−1に出力する。
【0540】
第1の遅延装置71A−01は、たとえばD型フリップフロップにより構成され、任意のk(0≦k≦n−1)について、mサイクル(1≦m≦n)の遅延を生じさせる遅延装置であって、メモリバンクMBNK0からの読み出しデータ入力MBNKR0をmサイクルだけ遅延させ、信号mbnkr0 2dとして第1〜第nの選択装置72A−0〜72A−n−1に出力する。
【0541】
同様にして、第1の遅延装置71A−0n−1は、たとえばD型フリップフロップにより構成され、任意のk(0≦k≦n−1)について、mサイクル(1≦m≦n)の遅延を生じさせる遅延装置であって、メモリバンクMBNK0からの読み出しデータ入力MBNKR0をmサイクルだけ遅延させ、信号mbnkr0 ndとして第1〜第nの選択装置72A−0〜72A−n−1に出力する。
【0542】
第nの遅延装置71A−(n−1)0は、たとえばD型フリップフロップにより構成され、任意のk(0≦k≦n−1)について、mサイクル(1≦m≦n)の遅延を生じさせる遅延装置であって、メモリバンクMBNKn−1からの読み出しデータ入力MBNKRn−1をmサイクルだけ遅延させ、信号mbnkrn−1 1dとして第1〜第nの選択装置72A−0〜72A−n−1に出力する。
【0543】
第nの遅延装置71A−(n−1)1は、たとえばD型フリップフロップにより構成され、任意のk(0≦k≦n−1)について、mサイクル(1≦m≦n)の遅延を生じさせる遅延装置であって、メモリバンクMBNKn−1からの読み出しデータ入力MBNKRn−1をmサイクルだけ遅延させ、信号mbnkrn−1 2dとして第1〜第nの選択装置72A−0〜72A−n−1に出力する。
【0544】
同様にして、第nの遅延装置71A−(n−1)n−1は、たとえばD型フリップフロップにより構成され、任意のk(0≦k≦n−1)について、mサイクル(1≦m≦n)の遅延を生じさせる遅延装置であって、メモリバンクMBNKn−1からの読み出しデータ入力MBNKRn−1をmサイクルだけ遅延させ、信号mbnkrn−1 ndとして第1〜第nの選択装置72A−0〜72A−n−1に出力する。
【0545】
第1の選択装置72A−0は、メモリバンクMBNK0からの読み出しデータ入力MBNKR0、メモリバンクMBNK1からの読み出しデータ入力MBNKR1、…、メモリバンクMBNKn−1からの読み出しデータ入力MBNKRn−1、第1の遅延装置71A−00〜71A−0n−1の出力信号mbnkr0 1d〜mbnkr0 nd、…,第nの遅延装置71A−(n−1)0〜71A−(n−1)n−1の出力信号mbnkr1 1d〜mbnkr1 ndを入力とし、制御信号mbselr0の値に応じて、メモリバンクMBNK0からの読み出しデータ入力MBNKR0、メモリバンクMBNK1からの読み出しデータ入力MBNKR1、…、メモリバンクMBNKn−1からの読み出しデータ入力MBNKRn−1、第1の遅延装置71A−00〜71A−0n−1の出力信号mbnkr0 1d〜mbnkr0 nd、…、第nの遅延装置71A−(n−1)0〜71A−(n−1)n−1の出力信号mbnkr1 1d〜mbnkr1 ndのうちのいずれかの値を、読み出しデータ出力MEMR0として選択する。
【0546】
同様にして、第1の選択装置72A−n−1は、メモリバンクMBNK0からの読み出しデータ入力MBNKR0、メモリバンクMBNK1からの読み出しデータ入力MBNKR1、…、メモリバンクMBNKn−1からの読み出しデータ入力MBNKRn−1、第1の遅延装置71A−00〜71A−0n−1の出力信号mbnkr0 1d〜mbnkr0 nd、…、第nの遅延装置71A−(n−1)0〜71A−(n−1)n−1の出力信号mbnkr1 1d〜mbnkr1 ndを入力とし、制御信号mbselrn−1の値に応じて、メモリバンクMBNK0からの読み出しデータ入力MBNKR0、メモリバンクMBNK1からの読み出しデータ入力MBNKR1、…、メモリバンクMBNKn−1からの読み出しデータ入力MBNKRn−1、第1の遅延装置71A−00〜71A−0n−1の出力信号mbnkr0 1d〜mbnkr0 nd、…,第nの遅延装置71A−(n−1)0〜71A−(n−1)n−1の出力信号mbnkr1 1d〜mbnkr1 ndのうちのいずれかの値を、読み出しデータ出力MEMRn−1として選択する。
【0547】
以上の構成を有するインタリーブ装置70Aにおいては、上述したように、n個の読み出しデータ入力MBNKR0〜MBNKRn−1に対してそれぞれ、n個ずつの遅延装置71A−00〜71A−0n−1、…、71A−(n−1)0〜71A−(n−1)n−1をもち、各遅延装置71A−00〜71A−0n−1、…、71A−(n−1)0〜71A−(n−1)n−1の遅延信号mbnkr0 1d〜mbnkr0 nd、mbnkr1 1d〜mbnkr1 ndをn個の選択装置72A−0〜72A−n−1に対して並列に入力させた構成となっている以外は、第12の実施形態と同様であり、各部の機能も同様であることから、動作については、そのタイミングチャートを図21に示し、ここでは詳細な説明は省略する。
【0548】
したがって、本第14の実施形態によれば、上述した第12の実施形態と同様に、デュアルポートメモリ(2R2Wメモリ)が必要な状況でも、特定のアクセスパターンの場合にはシングルポートメモリ(1R1Wメモリ)を用いて同等の機能を実現することができる。
これにより、メモリ面積の削減、プロセスポータビリティの向上が可能になり、しかも連続したメモリアクセスを実現できる利点がある。
【0549】
第15実施形態
図22は、本発明の第15の実施形態を説明するための図であって、本発明に係るインタリーブ装置のデータ書き込み系の一般化した例を示す構成図である。
【0550】
本第15の実施形態は、上述した遅延装置および選択装置を2個ずつ持つ第12の実施形態の一般化して、n−1個の読み出しデータ入力MBNKR1〜MBNKRn−1に対してそれぞれ第2の遅延装置81A−1、…、第nの遅延装置81A−n−1をもち、各遅延装置81A−1〜81A−n−1の遅延信号memw1 1d〜memwn−1 n−1dをn個の選択装置82A−0〜82A−n−1に対して並列に入力させた構成となっている。
【0551】
すなわち、本インタリーブ装置80Aは、n−1個の第2〜第nの遅延装置81A−1〜81A−n−1、およびn個の第1〜第nの選択装置82A−0〜82A−n−1を有している。
【0552】
そして、インタリーブ装置80Aは、系列0からの書き込みデータ入力MEMW0、系列1からの書き込みデータ入力MEMW1、…、系列n−1からの書き込みデータ入力MEMWn−1、メモリバンクMBNK0への書き込みデータ出力MBNKW0、メモリバンクMBNK1への書き込みデータ出力MBNKW1、…、メモリバンクMBNKn−1への書き込みデータ出力MBNKWn−1を有し、制御信号mbselw0,mbselw1、…、mbselwn−1が供給される。
【0553】
第2の遅延装置81A−1は、たとえばD型フリップフロップにより構成され、任意のk(0≦k≦n−1)について、mサイクル(1≦m≦n)の遅延を生じさせる遅延装置であって、系列1からの書き込みデータ入力MEMW1を1サイクルだけ遅延させ、信号memw1 dとして第1の選択装置82A−0〜第nの選択装置82A−n−1に出力する。
【0554】
同様にして、第nの遅延装置81A−n−1は、たとえばD型フリップフロップにより構成され、任意のk(0≦k≦n−1)について、mサイクル(1≦m≦n)の遅延を生じさせる遅延装置であって、系列n−1からの書き込みデータ入力MEMWn−1を1サイクルだけ遅延させ、信号memwn−1 n−1dとして第1の選択装置82A−0〜第nの選択装置82A−n−1に出力する。
【0555】
第1の選択装置82A−0は、系列0からの書き込み入力MEMW0、系列1からの書き込みデータ入力MEMW1、…、系列n−1からの書き込みデータ入力MEMWn−1、第2の遅延装置81A−1の出力信号memw1 1d、…、第nの遅延装置81A−n−1の出力信号memwn−1 n−1dを入力とし、制御信号mbselw0の値に応じて、系列0からの書き込み入力MEMW0、系列1からの書き込みデータ入力MEMW1、…、系列n−1からの書き込みデータ入力MEMWn−1、第2の遅延装置81A−1の出力信号memw1 1d、…、第nの遅延装置81A−n−1の出力信号memwn−1 n−1dのうちのいずれかの値を、書き込みデータ出力MBNKW0として選択する。
【0556】
第2の選択装置82A−1は、系列0からの書き込み入力MEMW0、系列1からの書き込みデータ入力MEMW1、…、系列n−1からの書き込みデータ入力MEMWn−1、第2の遅延装置81A−1の出力信号memw1 1d、…、第nの遅延装置81A−n−1の出力信号memwn−1 n−1dを入力とし、制御信号mbselw1の値に応じて、系列0からの書き込み入力MEMW0、系列1からの書き込みデータ入力MEMW1、…、系列n−1からの書き込みデータ入力MEMWn−1、第2の遅延装置81A−1の出力信号memw1 1d、…、第nの遅延装置81A−n−1の出力信号memwn−1 n−1dのうちのいずれかの値を、書き込みデータ出力MBNKW1として選択する。
【0557】
同様にして、第nの選択装置82A−n−1は、系列0からの書き込み入力MEMW0、系列1からの書き込みデータ入力MEMW1、…、系列n−1からの書き込みデータ入力MEMWn−1、第2の遅延装置81A−1の出力信号memw1 1d、…、第nの遅延装置81A−n−1の出力信号memwn−1 n−1dを入力とし、制御信号mbselwn−1の値に応じて、系列0からの書き込み入力MEMW0、系列1からの書き込みデータ入力MEMW1、…、系列n−1からの書き込みデータ入力MEMWn−1、第2の遅延装置81A−1の出力信号memw1 1d、…、第nの遅延装置81A−n−1の出力信号memwn−1 n−1dのうちのいずれかの値を、書き込みデータ出力MBNKWn−1として選択する。
【0558】
以上の構成を有するインタリーブ装置80Aにおいては、上述したように、第13の実施形態を一般化して、n−1個の読み出しデータ入力MBNKR1〜MBNKRn−1に対してそれぞれ第2の遅延装置81A−1、…、第nの遅延装置81A−n−1をもち、各遅延装置81A−1〜81A−n−1の遅延信号memw1 1d〜memwn−1 n−1dをn個の選択装置82A−0〜82A−n−1に対して並列に入力させた構成となっている以外は、第13の実施形態と同様であり、各部の機能も同様であることから、動作については、そのタイミングチャートを図23に示し、ここでは詳細な説明は省略する。
【0559】
したがって、本第15の実施形態によれば、上述した第13の実施形態と同様に、デュアルポートメモリ(2R2Wメモリ)が必要な状況でも、特定のアクセスパターンの場合にはシングルポートメモリ(1R1Wメモリ)を用いて同等の機能を実現することができる。
これにより、メモリ面積の削減、プロセスポータビリティの向上が可能になり、しかも連続したメモリアクセスを実現できる利点がある。
【0560】
第16実施形態
図24は、本発明の第16の実施形態に係る演算システムを示す構成図である。
【0561】
本演算システム90では、たとえば上述した第1の実施形態〜第9の実施形態に係る演算器の配列や、演算実行時の係数パラメータ等を、構成情報に基づいて再構成可能な演算装置が用いられる。
そして、本演算システム90は、演算実行部、演算実行部の再構成のための構成情報を格納する構成情報記憶部を含み、この構成情報記憶部は、CPUを用い演算実行部の構成情報の書き換えにおいて、複数の構成情報を記憶するためにリング状に構成された記憶部を持ち、演算実行時に使用する構成情報記憶部と、書き換えを行うための構成情報記憶部とを分離し、構成情報の書き換えに伴うオーバーヘッドを低減し、または、高速に複数の構成を切り換えることができるように構成される。
【0562】
具体的には、本演算システム90は、図24に示すように、制御回路としてのCPU91、構成情報記憶部92、および演算実行部93を主構成要素として有している。
【0563】
CPU91は、たとえばバスを介して、構成情報記憶部92に対してアクセスすることが可能になっている。
そして、CPU91は、演算実行部93の再構成のための構成情報CDを、書き込み信号CWRを用いて構成情報記憶部92に書き込む。
また、CPU91は、シフト信号CEXを用いて演算実行部93の再構成のための構成情報を既に記憶されている他の情報に変更させる。
【0564】
構成情報記憶部92は、CPU91からバスを介して構成情報が書き込まれ、、書き込まれた構成情報を演算実行部93に出力する。
構成情報記憶部92は、図24に示すように、たとえば「構成情報1」、「構成情報2」、…という各構成情報の記憶部が、それぞれ複数の構成情報を保持できるようにしている。
その中の1つは演算実行時の構成情報を記憶するため、別の1つは外部からの構成情報の書き込みを行うための記憶領域となる。
さらに、これらの構成情報の内容は一斉に瞬時に入れ替えが可能になっている。
これにより、演算実行部93が演算を行っている間に、別のページの内容を同時に書き換えることができ、従来、図25(a)に示すように、構成情報の書き換えに必要な時間的オーバーヘッドが大きかったという問題が、図25(b)に示すように、構成情報の書き換えに必要な時間的オーバーヘッドを、演算の実行時間の裏側に隠蔽することができる。
【0565】
図26は、4つの構成情報を保持することができる構成情報記憶部の構成例を示す図である。
【0566】
この構成情報記憶部92は、図26に示すように、レジスタ921〜924、選択装置925、およびORゲート926を有している。
また、図26において、TCDは構成情報CDの入力端子、TCWR は書き込み信号CWRの入力端子、TCEX はシフト信号CEXの入力端子、TCCLKはクロック入力端子、TOUT は記憶した構成情報の演算実行部93への出力端子をそれぞれ示している。
【0567】
レジスタ921〜924(CD1〜CD4)は、構成情報を記憶するためのレジスタであり、これらのレジスタ921〜924はリング状に接続されている。
具体的には、レジスタ921の出力がレジスタ924の入力、および構成情報の出力端子TOUT に接続され、レジスタ924の出力がレジスタ923の入力に接続され、レジスタ923の出力が選択装置925の第1の入力端子「0」を介してレジスタ922の入力に接続され、レジスタ922の出力がレジスタ921の入力に接続されている。
【0568】
また、選択装置925の第2の入力端子「1」が構成情報CDの入力端子TCDに接続されている。選択装置925の制御端子が書き込み信号CWRの入力端子TCWR に接続されている。
選択装置925は、書き込み信号CWRが論理「1」で制御端子に供給されると入力端子TCDに入力される構成情報CDを選択して、レジスタ922に入力させる。
一方、選択装置925は、書き込み信号CWRが論理「0」で制御端子に供給されるとレジスタ923の出力情報を選択して、レジスタ922に入力させる。
【0569】
2入力ORゲート926は、第1の入力端子が書き込み信号CWRの入力端子TCWR に接続され、第2の入力端子がシフト信号CEXの入力端子TCEX に接続され、出力端子がレジスタ922の制御端子に接続されている。
【0570】
また、レジスタ921,923,924の制御端子はシフト信号CEXの入力端子TCEX に接続されており、また、各レジスタ921〜924のクロック端子がクロック入力端子TCCLKに接続されている。
【0571】
そして、これらのレジスタ921〜924は、その先に接続される「被再構成部」が必要とする構成情報のビット数を記憶できる。
これらの中で、演算実行部93の構成情報として、レジスタ921(CD1)の内容が使用される。
レジスタ921の出力は、演算実行部93の構成変更回路に直結されているため、この値が書き換えられると演算実行部93のハードウェア構成に即座に反映される。
このため、演算実行部93の動作中に外部からレジスタ921に対して書き込みを行うと実行中の演算結果に影響を与えることになる。
これを避けるために、外部からの構成情報CDの書き込みはレジスタ922(CD2)に対して行われる。
【0572】
構成情報CDの書き換えは、入力端子TCDに構成情報CDを入力し、書き込み信号CWRを1にすることで行われる。
この書き込み操作では、レジスタ921(CD1)の内容は変化しない。
【0573】
新たに書き込んだ構成情報CDを演算実行部93の構成に反映するためには、書き込み信号「CWR」を0、シフト信号「CEX」を1にしてレジスタ922(CD2)の内容をレジスタ921(CD1)に転送する。
この時同時に、レジスタ921(CD1)→レジスタ924(CD4)→レジスタ923(CD3)→レジスタ922(CD2)というように構成情報がリングの中でローテーションして保持される。
【0574】
構成情報CDの入れ替えは、すべての構成情報記憶部92に対して同時に行われるので、クロック「CCLK」1サイクル分で完了する。
また、新しい構成情報を書き込まずに上記の入れ替え操作だけを行えば、リングを構成するレジスタ数分の過去の構成情報を高速に切り替えて再使用することができる。
【0575】
なお、複数の構成情報を記憶できる記憶部を用意する場合、任意の構成情報を順番に関係なく自由に入れ替え可能にしたいという欲求が生じる場合がある。
しかしそのためには、記憶部の構成情報入れ替え制御手段が複雑になり、システム全体の構成情報の情報量が増えてくると、記憶部が占める面積や消費電力といったオーバーヘッドが無視できなくなってくる。
【0576】
本第16の実施形態に係るリング状の構成情報の入れ替え手段は、記憶している任意の構成情報CDをすぐに呼び出すことはできないが、記憶部の回路構成と入れ替えのための制御信号を単純化できるという特徴を備える。
記憶している構成情報CDの入れ替えの自由度が制限されるという制約は、1つの信号処理アプリケーション等に含まれる複数の演算処理を、構成を切り替えながら実行するようなケースを考えた場合、再構成がアプリケーションのアルゴリズムにしたがって、決まったパターンで繰り返し行われると考えられ、その限りにおいては間題にならない。
【0577】
演算実行部93は、たとえば図1に示すような演算装置等と同様の構成を有し、構成情報記憶部92による構成情報に基づいて係数、データ等の経路を選択するための選択装置(SEL)931−0〜931−2、構成情報記憶部92による構成情報(演算内容を指示するための制御信号)に基づいて算術理演算を行うALU932、構成情報記憶部92により構成情報(演算内容を指示するための制御信号)に基づいて積和演算を行うMAC構造の演算器933を有し、構成情報記憶部92による構成情報に基づいて、演算器の配列や、演算実行時の係数パラメータ等を再構成して、指定の演算を行い、この演算結果をたとえば図示しないデータメモリ等に出力する。
【0578】
次に、上記構成による動作を説明する。
なお、ここでは、構成情報記憶部92の4つのレジスタ921〜924にはそれぞれ構成情報CDが保持されているものとする。
【0579】
この場合、演算実行部93の構成情報として、構成情報記憶部92のレジスタ921(CD1)の内容が使用される。
レジスタ921の出力は、演算実行部93の構成変更回路に直結されている。このため、演算実行部93においては、構成情報記憶部92による構成情報に基づいて、演算器の配列や、演算実行時の係数パラメータ等が再構成されて、指定の演算が行われる。そして、演算結果がたとえば図示しないデータメモリ等に出力される。
【0580】
ここで、演算実行部93に供給する構成情報CDの値を書き換える場合には、演算実行部93の動作中に外部からレジスタ921に対して書き込みを行うと実行中の演算結果に影響を与えることになる。
これを避けるために、外部からの構成情報CDの書き込みはレジスタ922(CD2)に対して行われる。
【0581】
構成情報CDの書き換えは、CPU91から入力端子TCDに構成情報CDが入力され、書き込み信号CWRが「1」に設定される。これにより、レジスタ922に対してCPU91から供給された構成情報CDが書き込まれる。
なお、この書き込み操作では、レジスタ921(CD1)の内容は変化しない。
【0582】
次に、新たに書き込んだ構成情報CDを演算実行部93の構成に反映するために、CPU91により書き込み信号CWRが「0」、シフト信号CEXが「1」に設定される。これにより、レジスタ922(CD2)の内容がレジスタ921(CD1)に転送される。
この時同時に、レジスタ921(CD1)→レジスタ924(CD4)→レジスタ923(CD3)→レジスタ922(CD2)というように構成情報がリングの中でローテーションして保持される。
【0583】
構成情報CDの入れ替えは、すべての構成情報記憶部92に対して同時に行われるので、クロック「CCLK」1サイクル分で完了する。
【0584】
以上説明したように、本第16の実施形態によれば、演算器の配列等のハードウェア構成を再構成可能な演算装置を有する演算システム90において、構成情報を保持する構成情報記憶部92を、リング状に結合した複数のレジスタ921〜924で構成し、その中の一つの構成情報を用いて演算処理を行っている間に、別の構成情報記憶部の内容を書き換えることができるように構成情報書き換え部、および再構成可能な演算実行部93と接続し、また、各レジスタ921〜924に記憶された構成情報は、リング内をローテーションすることによって切り替えが可能としたことから、以下の効果を得られる。
すなわち、演算器が演算処理を実行中であっても、同時に次に使用する構成情報を設定することが可能とし、また、新たな構成情報を書き込まずに、構成の切り替えのみを行うことによって過去に使用した構成情報を再利用可能となる利点がある。
【0585】
すなわち、ハードウェアの再構成を演算実行と同時に行えるようになり、このオーバーヘッドを、演算の実行時間の裏側に隠蔽できるようになる。
また、複数の構成情報を同時に保持でき、それらを瞬時に切り替えることができる特性により、繰り返し使用される構成情報を同時に記憶しておき、それらを切り替えて使用することで、再構成のためのオーバーヘッドをほぼ「ゼロ」にすることも可能となる利点がある。
【0586】
なお、本第16の実施形態においては、4つの構成情報を保持できる構成を示しているが、必要に応じて2以上の任意の数の構成情報を保持できるようにしてもよい。
【0587】
【発明の効果】
以上説明したように、本発明によれば、演算装置自体を外部から再構成可能である。したがって、論理レベルの最適化ができることはもとより、構成情報の増大を防止でき、集積回路としての面積効率の悪化を防止できる演算装置を実現できる利点がある。
また、演算装置を再構成可能であることから、カスケード演算だけでなく並列演算も同一のハードウェアで実現することが可能になっている。そのため、演算装置の数を増やして多くの並列化可能な処理を効率良く実行することもできる。
【0588】
また、複数の演算を行う場合に、各演算装置に各演算を割り当て、さらに前段の演算結果をカスケードすることで一度に演算結果を得ることが可能である。そのため、実行サイクル数が短くなる。また一時レジスタへのアクセスが少なくなるため電力の消費も抑えることができる利点がある。
【図面の簡単な説明】
【図1】本発明に係る演算装置の第1の実施形態を示す構成図である。
【図2】本第1の実施形態の動作を説明するための図であって、図1の演算装置において、n=4で、係数入出力、データ入出力が4、カスケード入力が3である場合の装置を構成を示す図である。
【図3】本発明に係る演算装置の第2の実施形態を示す構成図である。
【図4】本第2の実施形態の動作を説明するための図であって、図3の演算装置において、n=4である場合の装置を構成を示す図である。
【図5】本発明に係る演算装置の第3の実施形態を示す構成図である。
【図6】本発明に係る演算装置の第4の実施形態を示す構成図である。
【図7】本発明に係る演算装置の第5の実施形態を示す構成図である。
【図8】本発明に係る演算装置の第6の実施形態を示す構成図である。
【図9】本発明に係る演算装置の第7の実施形態を示す構成図である。
【図10】本発明に係る演算装置の第8の実施形態を示す構成図である。
【図11】本発明に係る演算装置の第9の実施形態を示す構成図である。
【図12】本発明の第10の実施形態に係る演算システムを示す構成図である。
【図13】本発明に係るアドレス生成装置によって生成されるアドレスと制御信号により選択される経路選択情報の選択タイミング例を示す図である。
【図14】本発明の第11の実施形態を説明する図であって、本発明に係る演算システムに適用可能なアドレス生成装置の一例を示す構成図である。
【図15】図14の動作を説明するための図である。
【図16】本発明の第12の実施形態を説明するための図であって、本発明に係るインタリーブ装置のデータ読み出し系の一例を示す構成図である。
【図17】図16の読み出し系インタリーブ装置の動作を説明するためのタイミングチャートである。
【図18】本発明の第13の実施形態を説明するための図であって、本発明に係るインタリーブ装置のデータ書き込み系の一例を示す構成図である。
【図19】図18の書き込み系インタリーブ装置の動作を説明するためのタイミングチャートである。
【図20】本発明の第14の実施形態を説明するための図であって、本発明に係るインタリーブ装置のデータ読み出し系の一般化した例を示す構成図である。
【図21】図20の読み出し系インタリーブ装置のタイミングチャートである。
【図22】本発明の第15の実施形態を説明するための図であって、本発明に係るインタリーブ装置のデータ書き込み系の一般化した例を示す構成図である。
【図23】図22の書き込み系インタリーブ装置のタイミングチャートである。
【図24】本発明の第16の実施形態に係る演算システムを示す構成図である。
【図25】本発明に係る構成情報記憶部を設けることによる効果を説明するための図である。
【図26】本発明に係る構成情報記憶部の具体的な構成例を示す図である。
【符号の説明】
10,10A,10−1〜10−n,10A−1〜10A−3…演算装置、11…第1の選択装置(SELA)、12…第2の選択装置(SELB)、13…第3の選択装置(SELC)、14…ALU、15…MAC、16…第4の選択装置(SELE)、17…レジスタ(REG)、18−0〜18−k…係数入力遅延用FIFO(C0FIFO 〜CkFIFO) 、19−0〜19−m…データ入力遅延用FIFO(D0FIFO 〜DmFIFO) 、20…演算装置、21−0,21−1…シフト演算器(SFT0,SFT1)、22−0,22−1…入力選択装置(RSEL0,RSEL1)、23…バタフライ演算器(BTF0)、24−0,24−1…出力選択装置(DSEL0,DSEL1)、25−0,25−1…出力選択装置(WSEL0,WSEL1)、20A…演算装置、21A−0〜21A−3…シフト演算器(SFT0〜SFT3)、22A−0〜22A−3…入力選択装置(RSEL0〜RSEL3)、23A−0,23A−1…バタフライ演算器(BTF0,BTF1)、24A−0〜24A−3…出力選択装置(DSEL0〜DSEL3)、25A−0〜25A−3…出力選択装置(WSEL0〜WSEL3)、20B…演算装置、23B−2…バタフライ演算器(BTF2)、25B−0〜25B−3…出力選択装置(WSEL0〜WSEL3)、20C…演算装置、22C−0〜22C−15…入力選択装置(RSEL0〜RSEL7,BSEL0〜BSEL7)、23C−0〜23C−7…バタフライ演算器(BTF0〜BTF7)、24C−0〜24A−7…出力選択装置(DSEL0〜DSEL7)、25C−0〜25C−7…出力選択装置(WSEL0〜WSEL7)、20D…演算装置、22D−0〜22D−7…入力選択装置(RSEL0〜RSEL7)、23D−0〜23C−6…バタフライ演算器(BTF0〜BTF6)、24D−0〜24D−7…出力選択装置(DSEL0〜DSEL7)、25D−0〜25D−7…出力選択装置(WSEL0〜WSEL7)、30…演算装置、31…第1の演算装置(PU)、32…第2の演算装置(BTF)、30A…演算装置、31A…第1の演算装置(PU)、32A−0(BTFLa0),…,32A−k(BTFLak)、32B−0(BTFLb0),…,32B−m(BTFLbm)、32C−0(BTFLc0),…,32C−n(BTFLcn)…第2の演算装置、40…演算システム、41…CPU、42…第1の経路選択情報メモリ、43…第2の経路選択情報メモリ、44…選択装置、45…アドレス生成装置、46…データメモリ、47…再構成可能な演算装置、50…アドレス生成装置、51−0〜51−x…演算器(INCDEC0〜INCDECDx)、52−0〜52−2…セレクタ付き演算器(SUM0〜SUM2)、53−0〜53−x…セクレタ(SEL0〜SELx)、54−0〜54−x…カウンタ(Counter0〜Counterx)、55−0…比較器(END)、56−0〜56−x…比較器(END1〜ENDx)、57−0〜57−2…比較器(INC0〜INC2)、58…セレクタ付き演算器(ADRSUM)、59…ビット反転器(BRV)、60…マスク生成器(ADRMSK)、61…制御信号生成器(CTRLGEN)、70…読み出し系インタリーブ装置、71−0…第1の遅延装置(DFF0)、71−1…第2の遅延装置(DFF1)、72−0…第1の選択装置(sel0)、72−1…第2の選択装置(sel1)、80…書き込み系インタリーブ装置、81−0…第1の遅延装置(DFF0)、81−1…第2の遅延装置(DFF1)、82−0…第1の選択装置(sel0)、82−1…第2の選択装置(sel1)、70A…読み出し系インタリーブ装置、71A−00〜71A−0n−1…第1の遅延装置、71A−(n−1)0〜71A−(n−1)n−1…第nの遅延装置、72A−0〜72A−n−1…第1〜第nの選択装置、80A…インタリーブ装置、81A−1〜81A−n−1…第2の遅延装置〜第nの遅延装置、82A−0〜82A−n−1…第1〜第nの選択装置、90…演算システム、91…CPU、92…構成情報記憶部、921〜924(CD1〜CD4)…レジスタ、925…選択装置、926…ORゲート、93…演算実行部、931−0〜931−2…選択装置、932…ALU、933…MAC構造の演算器。[0001]
BACKGROUND OF THE INVENTION
The present invention is used in a DSP (Digital Signal Processor) or the like, and includes an arithmetic logic unit (ALU) that performs arithmetic logic operations, an arithmetic unit of MAC structure (Multiply-Accumulate Architecture) that repeats product-sum operations, and the like. The present invention relates to an arithmetic device that can be reconfigured by external control.
[0002]
[Prior art]
As an arithmetic unit that can be reconfigured by control from the outside, an integrated circuit arithmetic unit composed of a dynamically configurable gate array is disclosed, for example, in JP 7-503804A.
[0003]
  This integrated circuit computing device is a dynamically configurable field programmableGateAn array (FPGA) is used.
  The FPGA connects a number of input / output (I / O) blocks, a programmable logic block, and a logic block to each other, and connects the input / output block to the FPGA pin via an input / output pad. Consists of distribution resources such as wiring.
  The FPGA program loads configuration data into the FPGA configuration memory array.
  This arithmetic unit has a processor and a reconfigurable instruction execution unit, and dynamically changes the reconfigurable instruction execution unit to achieve complicated processing in hardware and realize different combinational logic functions. is doing.
[0004]
[Problems to be solved by the invention]
However, since the arithmetic unit described above is configured using an FPGA and is reconfigured by switching at the gate level, it is difficult to optimize the logic level, and the configuration information increases, resulting in an area as an integrated circuit. There is a disadvantage that efficiency is also bad.
[0005]
A conventional DSP is often configured with one or two MACs or ALUs. For example, when performing a multinomial operation such as MEMW = ax + by + cz + dw, it is necessary to perform as follows. Here, reg1 to reg4 indicate registers.
[0006]
[Expression 1]
reg1 = ax
reg2 = by
reg3 = cz
reg4 = dw
reg1 = reg1 + reg2
reg3 = reg3 + reg4
MEMW = reg1 + reg3
[0007]
As described above, in the conventional DSP, it is necessary to write the data back to the temporary register to obtain the operation result.
In other words, the conventional DSP requires access to the registers in addition to the operation that is actually desired. Therefore, an extra cycle is required, which is not preferable from the viewpoint of calculation efficiency and from the viewpoint of reducing power consumption.
[0008]
The present invention has been made in view of such circumstances, and a first object thereof is to optimize a logic level, to prevent an increase in configuration information, and to prevent a reduction in area efficiency as an integrated circuit. It is to provide an arithmetic device.
[0009]
A second object of the present invention is to provide an arithmetic device capable of improving the calculation efficiency and reducing the power consumption.
[0010]
[Means for Solving the Problems]
  In order to achieve the above object, the present invention is a computing device capable of reconfiguring a computation path by external control, and a first selection means for selecting desired data from a plurality of input data according to a control signal. And second selection means for selecting desired data from a plurality of input data according to the control signal,Third selection means for selecting desired data from a plurality of input data according to a control signal;The output signal of the first selection means and the output signal of the second selection means are input, and an operation according to the instruction of the control signal is performed.FirstComputing means;Second calculation means for performing an operation in accordance with an instruction of the control signal by using the output signals of the first selection means, the second selection means, and the third selection means as inputs;Have
[0018]
In addition, the present invention is an arithmetic device capable of reconfiguring an arithmetic path by external control, and includes a first selection unit that selects desired data from a plurality of input data according to a control signal, and a control signal A second selection unit that selects desired data from a plurality of input data in response, a third selection unit that selects desired data from a plurality of input data according to a control signal, and the first selection unit. A first calculation means for performing an operation in accordance with an instruction of the control signal, using the output signal and the output signal of the second selection means as input; an output signal of the first selection means; a second selection means; Second output means for performing an operation according to an instruction of the control signal with the output signal of the third selection means as an input.
[0019]
The present invention further includes fourth selection means for selecting either the output signal of the first calculation means or the output signal of the second calculation means in accordance with the control signal.
[0020]
Further, in the present invention, the first calculation means can perform two-term calculation, and the second calculation means can perform three-term calculation.
[0021]
In the present invention, the first computing means performs a unary operation on the result of the binary operation, and the second computing means performs a unary operation on the result of the ternary operation.
[0022]
The present invention further includes delay means for delaying and outputting the input data with a delay amount corresponding to the control signal.
[0023]
In addition, the present invention is an arithmetic device capable of reconfiguring an arithmetic path by external control, the first selection means for selecting one data from the first data group according to the control signal, the control signal In response to the second selection means for selecting one data from the second data group, the output signal of the first selection means, and the output signal of the second selection means as inputs, the control signal is instructed. A first computing means for performing a computation in accordance with the output signal of the first selection means and an output signal of the second selection means as inputs, and a second computing means for performing a computation in accordance with an instruction of the control signal And a fourth selection means for selecting one of the output signal of the first calculation means and the output signal of the second calculation means in accordance with the control signal.
[0024]
In addition, the present invention is an arithmetic device capable of reconfiguring an arithmetic path by external control, the first selection means for selecting one data from the first data group according to the control signal, the control signal Second selection means for selecting one data from the second data group in response to the second data, third selection means for selecting one data from the third data group in response to the control signal, and the first First computing means for performing computation in accordance with an instruction of the control signal with at least two signals of the output signal of the selection means, the output signal of the second selection means, and the output signal of the third selection means as inputs. And at least two signals out of the output signal of the first selection means, the output signal of the second selection means, and the output signal of the third selection means, and performs an operation according to the instruction of the control signal Depending on the second computing means to be performed and the control signal, And a fourth selection means for selecting one of the serial first output signal and an output signal of said second arithmetic means calculating means.
[0027]
The parallel processing device of the present invention includes a first selection unit that selects desired data from a plurality of input data according to a control signal, and a first selection unit that selects desired data from a plurality of input data according to a control signal. 2 selection means, third selection means for selecting desired data from a plurality of input data according to the control signal, output signal of the first selection means, output signal of the second selection means, and first And an arithmetic unit that performs an operation according to an instruction of the control signal using the output signal of the selection unit 3 as an input, and includes a plurality of arithmetic units that can reconfigure the arithmetic path by external control, The data input / output of each arithmetic device is cascade-connected, and the arithmetic result signal of each arithmetic device is supplied as one data of a plurality of data inputs of other devices.
[0028]
The present invention further includes delay means for delaying the input data by a delay amount corresponding to the control signal and outputting the delayed data to the next stage arithmetic unit.
[0029]
The parallel processing device of the present invention includes a first selection unit that selects desired data from a plurality of input data according to a control signal, and a first selection unit that selects desired data from a plurality of input data according to a control signal. 2 selection means, a third selection means for selecting desired data from a plurality of input data according to a control signal, an output signal of the first selection means, and an output signal of the second selection means are input. As an input, the first calculation means for performing the calculation according to the instruction of the control signal, the output signal of the first selection means, the output signal of the second selection means, and the output signal of the third selection means A second calculation means for performing a calculation according to the instruction of the control signal, and selecting either the output signal of the first calculation means or the output signal of the second calculation means according to the control signal, 4th selection hand which outputs as calculation result signal A plurality of arithmetic devices that can reconfigure arithmetic paths by external control, cascade connection of data inputs / outputs of the plurality of arithmetic devices, and arithmetic result signals of each arithmetic device Is supplied as one data of a plurality of data inputs of other devices.
[0030]
The present invention further includes delay means for delaying the input data by a delay amount corresponding to the control signal and outputting the delayed data to the next stage arithmetic unit.
[0031]
The parallel processing device of the present invention selects a first data from the first data group according to the control signal and a first data from the second data group according to the control signal. The first selection means, the first calculation means for performing the calculation according to the instruction of the control signal, using the output signal of the first selection means and the output signal of the second selection means as inputs, and the first A second calculation means for performing an operation according to an instruction of the control signal by using an output signal of the first selection means and an output signal of the second selection means; and the first calculation means according to the control signal. A plurality of output signals and a fourth selection means for outputting one of the output signals of the second calculation means and outputting as a calculation result signal, and a plurality of reconfigurable calculation paths by external control A first data group of the plurality of arithmetic devices The input and output between cascaded, and supplies the calculation result signal of the arithmetic unit as one of the data of the second data group of another device.
[0032]
The present invention further includes delay means for delaying the first data group by a delay amount corresponding to the control signal and outputting the delayed data to the next stage arithmetic unit.
[0033]
The parallel processing device of the present invention selects a first data from the first data group according to the control signal and a first data from the second data group according to the control signal. Second selecting means, third selecting means for selecting one data from the third data group according to the control signal, output signal of the first selecting means, output signal of the second selecting means , And the first selection means for performing calculation according to the instruction of the control signal by using at least two signals among the output signals of the third selection means, the output signal of the first selection means, the second And at least two signals of the output signal of the selection means and the output signal of the third selection means, the second calculation means for performing a calculation according to the instruction of the control signal, and the control signal, The output signal of the first computing means and the second computing hand And a fourth selecting means for selecting any one of the output signals, and having a plurality of arithmetic units capable of reconfiguring the arithmetic path by external control, and a first data group of the plurality of arithmetic units And the input / output of the second data group is cascade-connected, and the calculation result signal of each arithmetic device is supplied as one data of the third data group of the other device.
[0034]
In the present invention, the first data group is delayed by an amount of delay corresponding to the control signal and output to the next stage arithmetic unit, and the second data group is determined according to the control signal. Second delay means for delaying the output with the delay amount and outputting the result to the next stage arithmetic unit.
[0035]
According to the present invention, the first selection means selects desired data from a plurality of input data according to the control signal, and supplies the selected data to the calculation means. Similarly, desired data is selected from a plurality of input data in accordance with the control signal by the second selection means and supplied to the calculation means.
Then, in the calculation means, calculation according to the instruction of the control signal, for example, binary calculation is performed using the output signal of the first selection means and the output signal of the second selection means.
Further, for example, in the calculation means, the result of the binary operation is a single operation.
[0036]
According to the present invention, the first selection means selects desired data from a plurality of input data according to the control signal, and supplies the selected data to the calculation means. Similarly, the second selection unit selects desired data from a plurality of input data according to the control signal, and the third selection unit selects desired data from the plurality of input data according to the control signal. , Supplied to the computing means.
Then, the calculation means uses the output signal of the first selection means, the output signal of the second selection means, and the output signal of the third selection means to perform calculation according to the instruction of the control signal, for example, three-term calculation. Done.
Further, for example, in the calculation means, the result of the ternary operation is calculated as a single term.
[0037]
According to the present invention, the first selection means selects desired data from a plurality of input data according to the control signal, and supplies the selected data to the calculation means. Similarly, the second selection unit selects desired data from a plurality of input data according to the control signal, and the third selection unit selects desired data from the plurality of input data according to the control signal. The The signals selected by the first selection means and the second selection means are supplied to the first calculation means, and are selected by the first selection means, the second selection means, and the third selection means. The processed signal is supplied to the second calculation means.
Then, in the first calculation means, calculation according to the instruction of the control signal, for example, binary calculation is performed using the output signal of the first selection means and the output signal of the second selection means.
Further, for example, in the first calculation means, the result of the binary operation is a single operation.
Further, the second calculation means uses the output signal of the first selection means, the output signal of the second selection means, and the output signal of the third selection means to calculate according to the instruction of the control signal, for example, 3 A term operation is performed.
Further, for example, in the second computing means, the result of the ternary operation is subjected to a unary operation.
For example, in the fourth selection means, either the output signal of the first calculation means or the output signal of the second calculation means is selected in accordance with the control signal, and is output as the calculation result of the calculation device. .
[0038]
Further, according to the parallel arithmetic device of the present invention, the input / output of the data of the plurality of arithmetic devices is cascade-connected, and the arithmetic result signal of each arithmetic device is one data input of the plurality of data inputs of the other arithmetic devices. Supplied as
As a result, for example, when performing a multinomial operation, each arithmetic processing is assigned to each arithmetic device, and a multinomial operation is performed at a time by cascading the previous operation results.
Therefore, the number of execution cycles is shortened and access to temporary registers is reduced.
[0039]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, embodiments of the present invention will be described with reference to the drawings.
[0040]
First embodiment
FIG. 1 is a configuration diagram showing a first embodiment of an arithmetic device according to the present invention.
The arithmetic unit 10 in FIG. 1 includes a reconfigurable ALU and a MAC structure arithmetic unit based on configuration information, and includes n (= m + 1) coefficient buses, n (= k + 1) data buses, and cascade input n−. Has one and output data.
Hereinafter, a specific configuration and function of the arithmetic device 10 will be described in order.
[0041]
As shown in FIG. 1, the arithmetic device 10 includes a first selection device (SELA) 11, a second selection device (SELB) 12, a third selection device (SELC) 13, an ALU 14, and an arithmetic unit having a MAC structure. (Hereinafter simply referred to as MAC) 15, fourth selection device (SELE) 16, register (REG) 17, k (for example, k = n−1) FIFOs (First-In First-Out) for coefficient input delay, C0FIFO to CkFIFO) 18-0 to 18-k and m (for example, m = n-1 = k) FIFOs (D0FIFO to DmFIFO) 19-1 to 19-m for data input delay are included as main components. is doing.
[0042]
  The arithmetic unit 10 includes coefficient inputs C0I, C1I,..., CkI, data inputs D0I, D1I,..., DmI, cascade inputs P0, P1,. D0O, D1O, ..., DmO,And arithmeticOperation control signals ASEL, BSEL, ESEL, MACMD, ALUMD, RNDMD, SATD, OSFMD, ACCMD, delay control signals C0DL, C1DL,... CkDL, D0DL, D1DL,. Supplied.
[0043]
The first selection device 11 selects coefficient inputs C0I, C1I,..., CkI and data 0 according to the control signal ASEL, and outputs them to the ALU 14 and the MAC 15 as a signal asel_out.
[0044]
The second selection device 12 selects the data inputs D0I, D1I,..., DmI according to the control signal BSEL, and outputs them to the ALU 14 and the MAC 15 as the signal bsel_out.
[0045]
The third selection device 13 selects the cascade inputs P0, P1,..., Pn-2 and data 0 according to the control signal CSEL, and outputs them to the first selection device 11, the ALU 14 and the MAC 15 as the signal csel_out. .
[0046]
The ALU 14 uses alu_acc as an accumulation register, and receives the output signal asel_out of the first selection device 11, the output signal bsel_out of the second selection device 12, and the output signal csel_out of the third selection device 13 as inputs, and the control signal ALUMD , RNDMD, SATDD, OSFMD, and ACCMD, the logical operation is performed, and the result is output to the fourth selection device 16 as a signal alu_out.
[0047]
Specifically, the ALU 14 can select the rounding mode from “0 direction, direction far from 0, positive infinity direction, negative infinity direction, nearest integer” according to the value of the control signal RNDMD, and the control signal SATMD. The saturation bit width can be designated by the value of, and the shift amount can be designated by the value of the control signal OSFMD.
Further, the ALU 14 can select loading of a value into the accumulation register alu_acc and zero initialization according to the value of the control signal ACCMD.
The calculation at the ALU 14 is performed according to one of the following calculations depending on the value of the control signal ALUMD.
[0048]
[Expression 2]
alu_out = asel_out + bsel_out
alu_out = asel_out -bsel_out
alu_out = alu_acc + bsel_out
alu_out = alu_acc -bsel_out
alu_out = ~ bsel_out
alu_out = -bsel_out
alu_out = | bsel_out |
alu_out = | asel_out -bsel_out |
alu_out = asel_out & bsel_out
alu_out = asel_out | bsel_out
alu_out = asel_out ∧ bsel_out
alu_out = MAX (asel_out, bsel_out)
alu_out = MIN (asel_out, bsel_out)
alu_out = Leading ZERO (bsel_out)
alu_out = Leading ONE (bsel_out)
alu_out = ALS (bsel_out)
alu_out = ARS (bsel_out)
alu_out = LLS (bsel_out)
alu_out = LRS (bsel_out)
alu_out = asel_out + bsel_out + csel_out
alu_out = asel_out -bsel_out + csel_out
alu_out = asel_out + bsel_out-csel_out
alu_out = asel_out -bsel_out -csel_out
[0049]
Here, ˜ means bit inversion, − means sign inversion, || means absolute value, & means AND (logical product), | means OR (logical sum), and ∧ means EXOR (exclusive logical sum). MAX is a function that returns the maximum value, MIN is a function that returns the minimum value, Leading ZERO is a function that returns the number of consecutive zeros from the MSB in binary notation, and Leading ONE is an MSB in binary notation , ALS means arithmetic left shift, ARS means arithmetic right shift, LLS means logical left shift, and LRS means logical right shift.
[0050]
The MAC 15 uses mac_acc as an accumulation register, receives the output signal asel_out of the first selection device 11, the output signal bsel_out of the second selection device 12, and the output signal csel_out of the third selection device 13 as inputs, and the control signal MACMD , RNDMD, SATDD, OSFMD, and ACCMD, and outputs the result as a signal mac_out.
[0051]
Specifically, the MAC 15 can select the rounding mode from “0 direction, direction far from 0, positive infinity direction, negative infinity direction, nearest integer” according to the value of the control signal RNDMD, The saturation bit width can be designated by the value of the control signal SATMD, and the shift amount can be designated by the value of the control signal OSFMD. The MAC 15 can also select loading of a value into the accumulation register mac_acc and initialization of zero according to the value of the control signal ACCMD.
The calculation in the MAC 15 is performed according to one of the following calculations depending on the value of the control signal MACMD.
[0052]
[Equation 3]
mac_out = asel_out * bsel_out
mac_out =-(asel_out * bsel_out)
mac_out = asel_out * bsel_out + csel_out
mac_out =-(asel_out * bsel_out) + csel_out
mac_out = asel_out * bsel_out -csel_out
mac_out =-(asel_out * bsel_out) -csel_out
mac_out = asel_out * bsel_out + mac_acc
mac_out =-(asel_out * bsel_out) + mac_acc
mac_out = asel_out * bsel_out -mac_acc
mac_out =-(asel_out * bsel_out) -mac_acc
[0053]
The fourth selection device 16 selects either the output signal alu_out of the ALU 14 or the output signal mac_out of the MAC 15 according to the control signal ESEL, and outputs it to the register 17 as the signal esel_out.
[0054]
The register 17 stores the output signal esel_out of the fourth selection device 16 and outputs the stored data to the second selection device 12 as well as the calculation output C.
[0055]
The C0FIFO 18-0 can be delayed in any cycle depending on the value of the control signal C0DL. The coefficient input C0I is delayed with a cycle corresponding to the value of the control signal C0DL to obtain the coefficient output C0O. Output to the device.
[0056]
The C1 FIFO 18-1 can be delayed in any cycle depending on the value of the control signal C1DL. The coefficient input C1I is delayed with a cycle corresponding to the value of the control signal C1DL to obtain a coefficient output C1O. Output to the device.
[0057]
Similarly, the Ck FIFO 18-k can be arbitrarily delayed by the value of the control signal CkDL. The coefficient input CkI is delayed by a cycle corresponding to the value of the control signal CkDL to obtain the coefficient output CkO. Output to the next device.
[0058]
The D0FIFO 19-0 can be delayed by any cycle depending on the value of the control signal D0DL. The data input D0I is delayed with a cycle corresponding to the value of the control signal D0DL to obtain the data output D0O. Output to the device.
[0059]
The D1 FIFO 19-1 can be delayed in any cycle depending on the value of the control signal D1DL. The data input D1I is delayed with a cycle corresponding to the value of the control signal D1DL to obtain the data output D1O. Output to the device.
[0060]
Similarly, the DmFIFO 19-m can have an arbitrary cycle delay depending on the value of the control signal DmDL, and delays the data input DmI with a cycle corresponding to the value of the control signal DmDL to obtain the data output DmO. Output to the next device.
[0061]
In the present embodiment, the case where the delay is not performed in a predetermined cycle is also included in the definition of delay as delay 0.
[0062]
Next, the operation of the arithmetic unit 10A in which n = 4, the coefficient input / output, the data input / output is 4, and the cascade input is 3, as shown in FIG.
[0063]
Here, the coefficient inputs C0I, C1I, C2I, and C3I are a, b, c, and d, respectively, and the data inputs D0I, D1I, D2I, and D3I are x, y, z, and w, respectively. The cascade inputs P0, P1, and P2 are a * x, a * x + b * y, and a * x + b * y + c * z, respectively.
[0064]
First, a case where C = a * x is obtained will be described.
[0065]
In this case, the control signal ASEL is set so as to select the coefficient input C0I (a) and is supplied to the first selection device 11.
The control signal BSEL is set to select the data input D0I (x) and is supplied to the second selection device 12.
As a result, the coefficient a is output from the first selection device 11 to the ALU 14 and the MAC 15 as the signal asel_out. Further, the data x is output from the second selection device 12 to the ALU 14 and the MAC 15 as the signal bsel_out.
[0066]
At this time, a control signal MACMD designating multiplication is supplied to the MAC 15. As a result, the MAC 15 multiplies the coefficient a and the data x, and the result a * x is converted to the signal mac. It is output to the fourth selection device 16 as out.
The control signal ESEL is supplied to the fourth selection device 16 so as to select the output of the MAC 15. As a result, in the fourth selection device 16, the output signal mac of the MAC 15 out (a * x) is selected and the signal esel It is output to the register 17 as out (a * x).
The register 17 stores the calculation result a * x of the MAC 15, and this stored data is output as the calculation output C.
[0067]
Next, a case where C = a * x + b * y is obtained will be described.
[0068]
In this case, the control signal ASEL is set to select the coefficient input C1I (b) and supplied to the first selection device 11.
Further, the control signal BSEL is set so as to select the data input D1I (y) and is supplied to the second selection device 12.
Further, the control signal CSEL is set so as to select the cascade input P0 (a * x) and is supplied to the third selection device 13.
As a result, the coefficient b is output from the first selection device 11 to the ALU 14 and the MAC 15 as the signal asel_out. Further, the data y is output from the second selection device 12 to the ALU 14 and the MAC 15 as the signal bsel_out. Further, the third input device 13 receives the cascade input data a * x from the signal csel. It is output to the first selection device 11, ALU 14 and MAC 15 as out.
[0069]
At this time, a control signal MACMD for specifying multiplication and addition is supplied to the MAC 15. As a result, the MAC 15 multiplies the coefficient b and the data y and, as a result, adds b * y and a * x. As a result, the multiplication / addition result a * x + b * y is output from the MAC 15 to the signal mac. It is output to the fourth selection device 16 as out.
The control signal ESEL is supplied to the fourth selection device 16 so as to select the output of the MAC 15. As a result, in the fourth selection device 16, the output signal mac of the MAC 15 out (a * x + b * y) is selected and the signal esel It is output to the register 17 as out (a * x + b * y).
The register 17 stores the calculation result a * x + b * y of the MAC 15, and this stored data is output as the calculation output C.
[0070]
Next, a case where C = a * x + b * y + c * z is obtained will be described.
[0071]
In this case, the control signal ASEL is set to select the coefficient input C2I (c) and supplied to the first selection device 11.
Further, the control signal BSEL is set so as to select the data input D2I (z) and is supplied to the second selection device 12.
Further, the control signal CSEL is set so as to select the cascade input P <b> 1 (a * x + b * y) and is supplied to the third selection device 13.
As a result, the coefficient c is output from the first selection device 11 to the ALU 14 and the MAC 15 as the signal asel_out. Further, the data z is output from the second selection device 12 to the ALU 14 and the MAC 15 as the signal bsel_out. Further, the cascade input data a * x + b * y is received from the third selection device 13 as a signal csel. It is output to the first selection device 11, ALU 14 and MAC 15 as out.
[0072]
At this time, a control signal MACMD for specifying multiplication and addition is supplied to the MAC 15. As a result, the MAC 15 multiplies the coefficient c and the data z, and further adds the result c * z and (a * x + b * y). As a result, the multiplication / addition result a * x + b * y + c * z is transferred from the MAC 15 to the signal mac. It is output to the fourth selection device 16 as out.
The control signal ESEL is supplied to the fourth selection device 16 so as to select the output of the MAC 15. As a result, in the fourth selection device 16, the output signal mac of the MAC 15 out (a * x + b * y + c * z) is selected and the signal esel It is output to the register 17 as out (a * x + b * y + c * z).
The register 17 stores the calculation result a * x + b * y + c * z of the MAC 15, and this stored data is output as the calculation output C.
[0073]
Next, a case where C = a * x + b * y + c * z + d * w is obtained will be described.
[0074]
In this case, the control signal ASEL is set to select the coefficient input C3I (d) and supplied to the first selection device 11.
Further, the control signal BSEL is set so as to select the data input D3I (w) and is supplied to the second selection device 12.
Further, the control signal CSEL is set so as to select the cascade input P <b> 2 (a * x + b * y + c * z) and is supplied to the third selection device 13.
As a result, the coefficient d is output from the first selection device 11 to the ALU 14 and the MAC 15 as the signal asel_out. Further, the data w is output from the second selection device 12 to the ALU 14 and the MAC 15 as the signal bsel_out. In addition, the cascade input data a * x + b * y + c * z is received from the third selection device 13 as a signal csel. It is output to the first selection device 11, ALU 14 and MAC 15 as out.
[0075]
At this time, a control signal MACMD for specifying multiplication and addition is supplied to the MAC 15. As a result, the MAC 15 multiplies the coefficient d and the data w, and further adds the result d * w and (a * x + b * y + c * z). As a result, the multiplication / addition result a * x + b * y + c * z + d * w is output from the MAC 15 to the signal mac. It is output to the fourth selection device 16 as out.
The control signal ESEL is supplied to the fourth selection device 16 so as to select the output of the MAC 15. As a result, in the fourth selection device 16, the output signal mac of the MAC 15 out (a * x + b * y + c * z + d * w) is selected and the signal esel It is output to the register 17 as out (a * x + b * y + c * z + d * w).
In the register 17, the calculation result a * x + b * y + c * z + d * w of the MAC 15 is stored, and this stored data is output as the calculation output C.
[0076]
As described above, according to the first embodiment, the first selection device 11 that selects the coefficient inputs C0I, C1I,..., CkI and data 0 according to the control signal ASEL and the control signal BSEL. , DmI, and a third selection device 13 for selecting cascade inputs P0, P1,..., Pn-2 and data 0 according to the control signal CSEL. And the output signal asel_out of the first selection device 11, the output signal bsel_out of the second selection device 12, and the output signal csel_out of the third selection device 13 as inputs, and control signals ALUMD, RNDMD, SATD, OSFMD, ACCMD ALU 14 that performs a logical operation in response to the instruction, an output signal asel_out from the first selection device 11, and an output signal from the second selection device 12. sel_out and the output signal csel_out of the third selection device 13 are input to the MAC 15 that performs calculations according to the instructions of the control signals MACMD, RNDMD, SATDD, OSFMD, and ACCMD, and the output signal of the ALU 14 according to the control signal ESEL Since the fourth selection device 16 for selecting either alu_out or the output signal mac_out of the MAC 15 is provided, the arithmetic device itself can be reconfigured from the outside.
[0077]
Therefore, according to the first embodiment, not only can the logic level be optimized, but also there is an advantage that an increase in configuration information can be prevented and an arithmetic unit capable of preventing deterioration in area efficiency as an integrated circuit can be realized.
Further, since the arithmetic device can be reconfigured, not only cascade operations but also parallel operations can be realized with the same hardware. Therefore, it is possible to efficiently execute many parallelizable processes by increasing the number of arithmetic devices.
[0078]
Second embodiment
FIG. 3 is a block diagram showing a second embodiment of the parallel arithmetic device according to the present invention.
[0079]
In the second embodiment, a plurality of (n) arithmetic devices in FIG. 1 are cascade-connected, and arithmetic results of other arithmetic devices are cascade-input, thereby efficiently executing many parallelizable processes. It is configured to do.
[0080]
Each arithmetic unit 10-0 to 10-n-1 (PE0 to PEn-1) is a coefficient input terminal PE. C0I to PE CkI, data input terminal PE D0I to PE DmI, cascade input terminal PE P0-PE Pn-2, coefficient output terminal PE C0-PE CkO, data output terminal PE D0-PE DmO and operation output terminal PE C.
[0081]
  In the arithmetic unit 10-0, the coefficient input terminal PE C0I to PE The coefficients C0I to CkI are supplied to CkI, and the data input terminal PE D0I to PE Data input D0I to DmI is supplied to DmI, and cascade input PE P0-PE Operation output terminals PE of other arithmetic units 10-1 to 10-n-1 are connected to Pn-2. Operation result signals OT1 to OTn-1 output from C are supplied. For example, cascade input PE P0 is supplied with the operation result signal OTn-1 of the final stage arithmetic unit 10-n-1, and the cascade input terminal PE The calculation result signal OT1 of the next stage arithmetic unit 10-1 is supplied to Pn-2.
  In the arithmetic unit 10-0, the coefficient output terminal PE C0-PE Coefficients delayed by a desired delay amount from CkO to C0FIFO 18-0 to CkFIFO 18-k are output as coefficient outputs c00 to ck0 to the next stage arithmetic unit 10-1, and output to the data output terminal PE. D0-PE Data output from DmO by D0FIFO19-0 to DmFIFO19-m by a desired delay amount is output as data output d00-dm0Is output to the next-stage arithmetic unit 10-1.
  In the arithmetic unit 10-0, the arithmetic output terminal PE The calculation result signal OT0 is output from C to the other calculation devices 10-1 to 10-n-1.
  In FIG. 3, arithmetic control signals ASEL, BSEL, ESEL, MACMD, ALUMD, RNDMD, SATDMD, OSFMD, ACCMD and delay control signals C0DL, C1DL,... CkDL, D0DL to be supplied to the arithmetic unit 10-0. , D1DL,... DmDL are shown as control signal CTL0 for simplicity.
[0082]
  In the arithmetic unit 10-1, the coefficient input terminal PE C0I to PE The coefficient output c00 to ck0 of the arithmetic unit 10-0 is supplied to CkI, and the data input terminal PE D0I to PE The data output d00 to dm0 of the arithmetic unit 10-0 is supplied to DmI, and the cascade input PE P0-PE Operation output terminals PE of other arithmetic units 10-0, 10-2 (not shown) to 10-n-1 are connected to Pn-2. Operation result signals OT0, OT2 to OTn-1 output from C are supplied. For example, cascade input PE P0 is supplied with the operation result signal OT0 of the preceding arithmetic unit 10-0, and the cascade input terminal PE The calculation result signal OTn-2 of the calculation device 10-n-2 is supplied to Pn-2.
  In the arithmetic unit 10-1, the coefficient output terminal PE C0-PE Coefficients delayed from CkO by C0FIFO 18-0 to CkFIFO 18-k by a desired delay amount are output to the next stage arithmetic unit 10-2 as coefficient outputs c01 to ck1, and are output to the data output terminal PE. D0-PE Data delayed from DmO by D0FIFO19-0 to DmFIFO19-m by a desired delay amount is data output d01-dm1Is output to the next-stage arithmetic unit 10-2.
  In the arithmetic unit 10-1, the arithmetic output terminal PE is used. The calculation result signal OT1 is output from C to the other calculation devices 10-0, 10-2 to 10-n-1.
  In FIG. 3, arithmetic control signals ASEL, BSEL, ESEL, MACMD, ALUMD, RNDMD, SATDD, OSFMD, ACCMD, and delay control signals C0DL, C1DL,... CkDL, D0DL to be supplied to the arithmetic unit 10-1. , D1DL,... DmDL are shown as control signals CTL1 for simplicity.
[0083]
  Similarly, in the arithmetic unit 10-i (2 ≦ i ≦ n−2), the coefficient input terminal PE C0I to PE The coefficient outputs c0i-1 to cki-1 of the arithmetic unit 10-i-1 are supplied to CkI, and the data input terminal PE D0I to PE The data outputs d0i-1 to dmi-1 of the arithmetic unit 10-i-1 are supplied to DmI, and the cascade input PE P0-PE Operation output terminals PE of other arithmetic units 10-0 to 10-i-1, 10-i + 1 to 10-n-1 are connected to Pn-2. Operation result signals OT0 to OTi-1 and OTi + 1 to OTn-1 output from C are supplied.
  Further, in the arithmetic unit 10-i, the coefficient output terminal PE C0-PE Coefficients delayed by a desired delay amount from CkO to C0FIFO18-0 to CkFIFO18-k are output as coefficient outputs c0i to cki to the arithmetic unit 10-i + 1 at the next stage and output to the data output terminal PE D0-PE Data delayed from DmO by D0FIFO19-0 to DmFIFO19-m by a desired delay amount is data output d0i ~dmiIs output to the next stage arithmetic unit 10-i + 1.
  In the arithmetic unit 10-i, the arithmetic output terminal PE An operation result signal OTi is output from C to the other arithmetic units 10-0 to 10-i-1, 10-i + 1 to 10-n-1.
  Although not shown, the arithmetic unit 10-i includes arithmetic control signals ASEL, BSEL, ESEL, MACMD, ALUMD, RNDMD, SATMD, OSFMD, ACCMD, and delay control signals C0DL, C1DL,... CkDL, D0DL, D1DL, ... DmDL is
[0084]
In the arithmetic unit 10-n-1, the coefficient input terminal PE C0I to PE The coefficient outputs c0n-2 to ckn-2 of the arithmetic unit 10-n-2 are supplied to CkI, and the data input terminal PE D0I to PE The data outputs d0n-2 to dmn-2 of the arithmetic unit 10-n-2 are supplied to DmI, and the cascade input PE P0-PE An arithmetic output terminal PE of another arithmetic unit 10-0 to 10-n-2 is connected to Pn-2. Operation result signals OT0 to OTn-2 output from C are supplied. For example, cascade input PE P0 is supplied with the operation result signal OTn-2 of the previous stage arithmetic unit 10-n-2, and the cascade input terminal PE The calculation result signal OT0 of the calculation device 10-0 is supplied to Pn-2.
Further, in the arithmetic unit 10-n-1, the coefficient output terminal PE C0-PE Coefficient output from CkO and data output terminal PE D0-PE Data output from DmO is not output to other arithmetic units.
In the arithmetic unit 10-n-1, the arithmetic output terminal PE The calculation result signal OTn-1 is output from C to the other calculation devices 10-0 to 10-n-2.
3, calculation control signals ASEL, BSEL, ESEL, MACMD, ALUMD, RNDMD, SATDMD, OSFMD, ACCMD, and delay control signals C0DL, C1DL,... CkDL to be supplied to the arithmetic unit 10-n-1. , D0DL, D1DL,... DmDL are shown as control signals CTLn-1 for simplification.
[0085]
Next, the operation of the second embodiment will be described by taking an example in which the number of arithmetic devices to be cascade-connected is 4 (n = 4) as shown in FIG.
Each arithmetic device 10A-0 to 10A-3 in this case has the configuration shown in FIG. Therefore, the operation will be described in association with FIG. 2 and FIG.
Here, a case where the following calculation is performed will be described as an example.
[0086]
[Expression 4]
out = a * x + b * y + c * z + d * w
[0087]
The coefficient inputs C0I, C1I, C2I, and C3I to the arithmetic unit 10A-0 are a, b, c, and d, respectively, and the data inputs D0I, D1I, D2I, and D3I are x, y, z, and w, respectively. To do.
[0088]
First, in the arithmetic unit 10A-0, control is performed by the control signal CTL0 so that the arithmetic result signal OT0 = a * x is calculated.
[0089]
In this case, in the arithmetic unit 10A-0, the control signal ASEL is set so as to select the coefficient input C0I (a) and supplied to the first selection unit 11.
The control signal BSEL is set to select the data input D0I (x) and is supplied to the second selection device 12.
As a result, the coefficient a is output from the first selection device 11 to the ALU 14 and the MAC 15 as the signal asel_out. Further, the data x is output from the second selection device 12 to the ALU 14 and the MAC 15 as the signal bsel_out.
[0090]
At this time, a control signal MACMD designating multiplication is supplied to the MAC 15. As a result, the MAC 15 multiplies the coefficient a and the data x, and the result a * x is converted to the signal mac. It is output to the fourth selection device 16 as out.
The control signal ESEL is supplied to the fourth selection device 16 so as to select the output of the MAC 15. As a result, in the fourth selection device 16, the output signal mac of the MAC 15 out (a * x) is selected and the signal esel It is output to the register 17 as out (a * x).
In the register 17, the calculation result a * x of the MAC 15 is stored, and this stored data is stored in the calculation output terminal PE. As a calculation result signal OT0 from C, the cascade input PE of the arithmetic unit 10A-1 P0, cascade input PE of arithmetic unit 10A-2 P1 and cascade input PE of arithmetic device 10A-3 Output to P2.
[0091]
In the arithmetic unit 10A-0, the coefficients a, b, c and d delayed by a desired delay amount by the C0 FIFO 18-0 to C3 FIFO 18-3 are used as the coefficient output terminal PE. C0-PE Coefficient input terminal PE of the next stage arithmetic unit 10A-1 as coefficient outputs c00 to c30 from C3O C0I to PE Data x, y, z, and w output to C3I and delayed by a desired delay amount in D0FIFO19-0 to D3FIFO19-3 are data output terminals PE. D0-PE The data input terminal PE of the next-stage arithmetic unit 10A-1 as data outputs d00 to d30 from D3O D0I to PE Is output to D3I.
[0092]
Next, in the arithmetic unit 10A-1, control is performed by the control signal CTL1 so that the arithmetic result signal OT1 = OT0 + b * y = a * x + b * y is performed.
[0093]
In this case, the control signal ASEL is supplied to the coefficient input terminal PE. The coefficient output c10 (b) of the arithmetic unit 10A-0 supplied to C1I is set to be selected and supplied to the first selection unit 11.
Further, the control signal BSEL is supplied to the data input terminal PE. The data output d10 (y) of the arithmetic device 10A-0 supplied to D1I is set to be selected and supplied to the second selection device 12.
Further, the control signal CSEL is input to the cascade input terminal PE. The operation result signal OT0 (a * x) of the operation device 10A-0 supplied to P0 is set to be selected and supplied to the third selection device 13.
As a result, the coefficient b is output from the first selection device 11 to the ALU 14 and the MAC 15 as the signal asel_out. Further, the data y is output from the second selection device 12 to the ALU 14 and the MAC 15 as the signal bsel_out. Further, the third input device 13 receives the cascade input data a * x from the signal csel. It is output to the first selection device 11, ALU 14 and MAC 15 as out.
[0094]
At this time, a control signal MACMD for specifying multiplication and addition is supplied to the MAC 15. As a result, the MAC 15 multiplies the coefficient b and the data y and, as a result, adds b * y and a * x. As a result, the multiplication / addition result a * x + b * y is output from the MAC 15 to the signal mac. It is output to the fourth selection device 16 as out.
The control signal ESEL is supplied to the fourth selection device 16 so as to select the output of the MAC 15. As a result, in the fourth selection device 16, the output signal mac of the MAC 15 out (a * x + b * y) is selected and the signal esel It is output to the register 17 as out (a * x + b * y).
The register 17 stores the calculation result a * x + b * y of the MAC 15, and the stored data is stored in the calculation output terminal PE. As a calculation result signal OT1 from C, the cascade input PE of the arithmetic unit 10A-0 P2, cascade input PE of arithmetic unit 10A-2 P0 and cascade input PE of arithmetic device 10A-3 Output to P1.
[0095]
  In the arithmetic unit 10A-1, the coefficients a, b, c and d delayed by a desired delay amount by the C0 FIFO 18-0 to C3 FIFO 18-3 are used as the coefficient output terminal PE. C0-PE As coefficient outputs c01 to c31 from C3O, the coefficient input terminal PE of the next stage arithmetic unit 10A-2 C0I to PE Data x, y, z, w output to C3I and delayed by a desired delay amount by D0FIFO19-0 to DmFIFO19-3 are data output terminals PE. D0-PE As the data outputs d01 to d31 from D3O, the next stage arithmetic unit 10A-2Data input terminal PE D0I to PE Is output to D3I.
[0096]
Next, in the arithmetic unit 10A-2, control is performed by the control signal CTL2 so that the arithmetic result signal OT2 = OT1 + c * z = a * x + b * y + c * z is performed.
[0097]
In this case, the control signal ASEL is supplied to the coefficient input terminal PE. The coefficient output c21 (c) of the arithmetic device 10A-1 supplied to C2I is set to be selected and supplied to the first selection device 11.
Further, the control signal BSEL is supplied to the data input terminal PE. The data output d21 (z) of the arithmetic device 10A-1 supplied to D2I is set to be selected and supplied to the second selection device 12.
Further, the control signal CSEL is input to the cascade input terminal PE. The calculation result signal OT1 (a * x + b * y) of the calculation device 10A-1 supplied to P0 is set to be selected and supplied to the third selection device 13.
As a result, the coefficient c is output from the first selection device 11 to the ALU 14 and the MAC 15 as the signal asel_out. Further, the data z is output from the second selection device 12 to the ALU 14 and the MAC 15 as the signal bsel_out. Further, the cascade input data a * x + b * y is received from the third selection device 13 as a signal csel. It is output to the first selection device 11, ALU 14 and MAC 15 as out.
[0098]
  At this time, a control signal MACMD for specifying multiplication and addition is supplied to the MAC 15. As a result, the MAC 15 multiplies the coefficient c and the data z, and further adds the result c * z and (a * x + b * y). As a result, the multiplication / addition result a * x + b * y + c * z is transferred from the MAC 15 to the signal mac. It is output to the fourth selection device 16 as out.
  The control signal ESEL is supplied to the fourth selection device 16 so as to select the output of the MAC 15. As a result, in the fourth selection device 16, the output signal mac of the MAC 15 out (a * x + b * y + c * z) is selected and the signal esel It is output to the register 17 as out (a * x + b * y + c * z).
  In the register 17, the calculation result a * x + b * y + c * z of the MAC 15 is stored, and this stored data is stored in the calculation output terminal PE. As a calculation result signal OT2 from C, the cascade input PE of the arithmetic unit 10A-0 P1, arithmetic unit 10A-1Cascade input PE P2 and cascade input PE of arithmetic device 10A-3 Output to P0.
[0099]
In the arithmetic unit 10A-2, the coefficients a, b, c and d delayed by a desired delay amount by the C0 FIFO 18-0 to C3 FIFO 18-3 are used as the coefficient output terminal PE. C0-PE As coefficient outputs c02 to c32 from C3O, the coefficient input terminal PE of the next stage arithmetic unit 10A-3 C0I to PE Data x, y, z, w output to C3I and delayed by a desired delay amount by D0FIFO19-0 to DmFIFO19-3 are data output terminals PE. D0-PE Data input terminal PE of the next stage arithmetic unit 10A-3 as data outputs d02 to d32 from D3O D0I to PE Is output to D3I.
[0100]
Next, in the arithmetic unit 10A-3, control is performed by the control signal CTL3 so that the arithmetic result signal OT3 = OT2 + d * w = a * x + b * y + c * z + d * w is performed.
[0101]
In this case, the control signal ASEL is supplied to the coefficient input terminal PE. The coefficient output c32 (d) of the arithmetic unit 10A-2 supplied to C3I is set to be selected and supplied to the first selection unit 11.
Further, the control signal BSEL is supplied to the data input terminal PE. The data output d32 (w) of the arithmetic device 10A-2 supplied to D3I is set to be selected and supplied to the second selection device 12.
Further, the control signal CSEL is input to the cascade input terminal PE. The calculation result signal OT2 (a * x + b * y + c * z) of the calculation device 10A-2 supplied to P0 is set to be selected and supplied to the third selection device 13.
As a result, the coefficient d is output from the first selection device 11 to the ALU 14 and the MAC 15 as the signal asel_out. Further, the data w is output from the second selection device 12 to the ALU 14 and the MAC 15 as the signal bsel_out. In addition, the cascade input data a * x + b * y + c * z is received from the third selection device 13 as a signal csel. It is output to the first selection device 11, ALU 14 and MAC 15 as out.
[0102]
At this time, a control signal MACMD for specifying multiplication and addition is supplied to the MAC 15. As a result, the MAC 15 multiplies the coefficient d and the data w, and further adds the result d * w and (a * x + b * y + c * z). As a result, the multiplication / addition result a * x + b * y + c * z + d * w is output from the MAC 15 to the signal mac. It is output to the fourth selection device 16 as out.
The control signal ESEL is supplied to the fourth selection device 16 so as to select the output of the MAC 15. As a result, in the fourth selection device 16, the output signal mac of the MAC 15 out (a * x + b * y + c * z + d * w) is selected and the signal esel It is output to the register 17 as out (a * x + b * y + c * z + d * w).
In the register 17, the calculation result a * x + b * y + c * z + d * w of the MAC 15 is stored, and this stored data is stored in the calculation output terminal PE. C outputs a calculation result signal OT3 as a desired calculation result out, and the cascade input PE of the calculation device 10A-0 P0, cascade input PE of arithmetic unit 10A-2 P1 and cascade input PE of arithmetic device 10A-2 Output to P2.
[0103]
In FIG. 2, the delay control signals C0DL, C1DL, C2DL, and C3DL shown in FIG. 4 are supplied to the C0 FIFOs 18-0 to C3 FIFO 18-3 so that all delays are zero.
Further, the delay control signal D0DL is supplied to the D0 FIFO 19-0 so that the delay becomes zero, the delay control signal D1DL is supplied to the D1 FIFO 19-1 so that the delay becomes 1, and the delay control signal D2DL becomes the delay 2 The delay control signal D3DL is supplied to the D3 FIFO 19-3 so that the delay 3 is obtained.
[0104]
As described above, according to the second embodiment, the first selection device 11 that selects the coefficient inputs C0I, C1I,..., CkI and data 0 according to the control signal ASEL, and the control signal BSEL. , DmI, and a third selection device 13 for selecting cascade inputs P0, P1,..., Pn-2 and data 0 according to the control signal CSEL. And the output signal asel_out of the first selection device 11, the output signal bsel_out of the second selection device 12, and the output signal csel_out of the third selection device 13 as inputs, and control signals ALUMD, RNDMD, SATD, OSFMD, ACCMD ALU 14 that performs a logical operation in response to the instruction, an output signal asel_out from the first selection device 11, and an output signal from the second selection device 12. sel_out and the output signal csel_out of the third selection device 13 are input to the MAC 15 that performs calculations according to the instructions of the control signals MACMD, RNDMD, SATDD, OSFMD, and ACCMD, and the output signal of the ALU 14 according to the control signal ESEL The fourth selection device 16 that selects either alu_out or the output signal mac_out of the MAC 15 can be delayed by any cycle depending on the value of the delay control signals C0DL to CkDL, and the coefficient input is changed to the value of the delay control signals C0DL to CkDL. The cycle is delayed by a corresponding cycle, the coefficient output is obtained, C0FIFO18-0 to CkFIFO18-k to be output to the next stage device, and the control signals D0DL to DmDL can be delayed arbitrarily, and the data input Cycle according to the values of the delay control signals D0DL to DmDL Are provided with a plurality of arithmetic units 10-0 to 10-n-1 having D0FIFO 19-0 to DmFIFO 19-m to obtain data output and output to the next stage device. -10-n-1 coefficients and data inputs / outputs are cascade-connected, and the operation result signals OT0 to OTn-1 of each arithmetic unit are used as cascade inputs PE_P0, PE_P1,..., PE_Pn-2 of other units Since it is configured to supply, the arithmetic unit itself can be reconfigured from the outside.
[0105]
Therefore, according to the second embodiment, similarly to the first embodiment described above, not only can the logic level be optimized, but also an increase in configuration information can be prevented, and the area efficiency as an integrated circuit can be deteriorated. There exists an advantage which can implement | achieve the arithmetic unit which can be prevented.
Further, since the arithmetic device can be reconfigured, not only cascade operations but also parallel operations can be realized with the same hardware. Therefore, it is possible to efficiently execute many parallelizable processes by increasing the number of arithmetic devices.
[0106]
Further, in a DSP having MAC or ALU of 1 or 2, when performing an operation of MEMW = ax + by + cz + dw, it is necessary to write back data to a temporary register to obtain an operation result. According to this, MEMW operations can be performed at one time by assigning operations of ax, by, cz, and dw to the respective arithmetic devices, and further cascading the previous operation results.
Therefore, the number of execution cycles is shortened. Further, since access to the temporary register is reduced, there is an advantage that power consumption can be suppressed.
[0107]
Third embodiment
FIG. 5 is a block diagram showing a third embodiment of the arithmetic device according to the present invention.
[0108]
The computing device 20 in FIG. 5 is a computing device that can be reconfigured based on the configuration information, and is configured to perform 4-input 4-output computation and to perform butterfly computation and shift computation simultaneously.
[0109]
This computing device 20 includes a shift computing unit (SFT0) 21-0 as a single term computing means, a shift computing unit (SFT1) 21-1, an input selection device (RSEL0) 22-0, and an input selection device (RSEL1) 22-. 1, 2-input 2-output butterfly calculator (BTF0) 23, output selection device (DSEL0) 24-0, output selection device (DSEL1) 24-1, output selection device (WSEL0) 25-0, and output selection device ( WSEL1) 25-1.
[0110]
The arithmetic unit 20 has data inputs MEMR0, MEMR1, I0, I1 and data outputs MEMW0, MEMW1, D0, D1, and control signals BTFMD0, R0SEL, R1SEL, W0SEL, W1SEL for reconfiguration and the like. , D0SEL, D1SEL are supplied.
[0111]
The shift calculator 21-0 shifts the value of the data input MEMR0 by unary operation according to the control signal SFT0MD, specifically, by an arbitrary bit to the left or right according to the value (shift amount) indicated by the control signal SFT0MD. The calculation is performed and the result is output to the input selection device 22-0 and the output selection device 24-0. Note that, for example, when the shift amount indicated by the control signal SFT0MD is zero, the shift calculator 21-0 outputs the data input MEMR0 as it is without performing the shift calculation.
[0112]
The shift computing unit 21-1 shifts the value of the data input MEMR1 by an unary operation according to the control signal SFT1MD, specifically, an arbitrary bit to the left or right according to the value (shift amount) indicated by the control signal SFT1MD. The calculation is performed, and the result is output to the input selection device 22-1 and the output selection device 24-1. Note that, for example, when the shift amount indicated by the control signal SFT1MD is zero, the shift calculator 21-1 does not perform the shift calculation and outputs the data input MEMR1 as it is.
[0113]
The input selection device 22-0 selects either the output data of the shift calculator 21-0 or the data input I0 in accordance with the control signal R0SEL, and the signal r0sel. The result is output to the butterfly calculator 23 as out.
[0114]
The input selection device 22-1 selects either the output data of the shift calculator 21-1 or the data input I1 according to the control signal R1SEL, and the signal r1sel The result is output to the butterfly calculator 23 as out.
[0115]
The butterfly computing unit 23 receives the output signal r0sel of the input selection device 22-0 at the input terminal DA. out and the output signal r1sel of the input selection device 22-1 of the input terminal DB. out is input, an operation according to the instruction of the control signal BTFMD0 supplied to the control terminal CTL is performed, two operation results are obtained, and one operation result is output from the output terminal OA to the signal btf0a. output to the output selection devices 24-0 and 25-0 as the out, and the other operation result is output from the output terminal OB to the signal btf0b. It outputs to the output selection apparatus 24-1 and 25-1 as out.
[0116]
Specifically, the butterfly calculator 23 selectively performs any of the following calculations depending on the value of the control signal BTFMD0.
[0117]
[Equation 5]
Figure 0003846196
[0118]
In response to the control signal D0SEL, the output selection device 24-0 outputs the output signal (for example, MEMR0) of the shift computing unit 21-0 and the output signal btf0a of the butterfly computing unit 23. Either out is selected and output as a signal D0.
[0119]
The output selection device 24-1 outputs the output signal (for example, MEMR1) of the shift computing unit 21-1 and the output signal btf0b of the butterfly computing unit 23 according to the control signal D1SEL. Either out is selected and output as the signal D1.
[0120]
In response to the control signal W0SEL, the output selection device 25-0 outputs the data input I0 and the output signal btf0a of the butterfly calculator 23. Either out is selected and output as the signal MEMW0.
[0121]
In response to the control signal W1SEL, the output selection device 25-1 receives the data input I1 and the output signal btf0b of the butterfly calculator 23. Either out is selected and output as the signal MEMW1.
[0122]
Next, the operation according to the above configuration will be described.
here,
D0 = MEMR0,
D1 = MEMR0−MEMR1,
MEMW0 = MEMR0 + MEMR1,
MEMW1 = I1
It is assumed that the operation of
[0123]
For example, the shift amounts of the shift computing units 21-0 and 21-1 are set to zero by the control signals SFT0MD and SFT1MD.
Therefore, the output of the shift computing unit 21-0 becomes MEMR0 and is supplied to the input selection device 22-0 and the output selection device 24-0.
Similarly, the output of the shift computing unit 21-1 becomes MEMR1 and is supplied to the input selection device 22-1 and the output selection device 24-1.
[0124]
The input selection device 22-0 is controlled by the control signal R0SEL to select the output signal of the shift computing unit 21-0, that is, MEMR0, and the selected data MEMR0 is the signal r0sel. As out, it is supplied to the input terminal DA of the butterfly calculator 23.
Further, the input selection device 22-1 is controlled by the control signal R1SEL to select the output signal of the shift computing unit 21-1, that is, MEMR1, and the selected data MEMR1 is the signal r1sel. As out, it is supplied to the input terminal DB of the butterfly calculator 23.
[0125]
The butterfly computing unit 23 is set to a mode in which OA = DA + DB and OB = DA-DB are calculated by the control signal BTFMD0 supplied to the control terminal CTL.
Thereby, in the butterfly computing unit 23, the data MEMR0 supplied to the input terminal DA and the data MEMR1 supplied to the input terminal DB are added, and the result (MEMR0 + MEMR1) is output from the output terminal OA to the signal btf0a. As out, it is output to the output selection devices 24-0 and 25-0.
In the butterfly computing unit 23, the difference between the data MEMR0 supplied to the input terminal DA and the data MEMR1 supplied to the input terminal DB is taken, and the result (MEMR0−MEMR1) is output from the output terminal OB. btf0b As out, it is output to the output selection devices 24-1 and 25-1.
[0126]
In the output selection device 24-0, the output signal (MEMR0) of the shift calculator 21-0 and the output signal btf0a of the butterfly calculator 23 are displayed. Out of (= MEMR0 + MEMR1), the control signal D0SEL is supplied so as to select the output signal (MEMR0) of the shift computing unit 21-0, and the selected data is output as signal D0 = MEMR0.
[0127]
In the output selection device 25-0, the data input I0 and the output signal btf0a of the butterfly calculator 23 are displayed. out (= MEMR0 + MEMR1), the output signal btf0a of the butterfly calculator 23 The control signal W0SEL is supplied so as to select out, and the selected data is output as a signal MEMW0 = MEMR0 + MEMR1.
[0128]
In the output selection device 25-1, the data input I1 and the output signal btf0b of the butterfly calculator 23 are displayed. Out of (= MEMR0−MEMR1), the control signal W1SEL is supplied so as to select the data input I1, and the selected data is output as the signal MEMW1 = I1.
[0129]
In the output selection device 24-1, the output signal (MEMR1) of the shift calculator 21-1 and the output signal btf0b of the butterfly calculator 23 are displayed. out (= MEMR0−MEMR1), the output signal btf0b of the butterfly calculator 23 The control signal D1SEL is supplied so as to select out, and the selected data is output as a signal D1 = MEMR0-MEMR1.
[0130]
As described above, according to the third embodiment, the shift arithmetic unit 21-0 that performs an operation of shifting the value of the data input MEMR0 by an arbitrary bit to the left or right according to the value indicated by the control signal SFT0MD; The shift arithmetic unit 21-1 performs an operation of shifting the value of the data input MEMR1 by an arbitrary bit to the left or right according to the value indicated by the control signal SFT1MD, and the shift arithmetic unit 21-0 according to the control signal R0SEL. Select either output data or data input I0, signal r0sel According to the input selection device 22-0 to be output as out and the control signal R1SEL, either the output data of the shift computing unit 21-1 or the data input I1 is selected, and the signal r1sel is selected. The input selection device 22-1 that outputs as out and the output signal r0sel of the input selection device 22-0 at the input terminal DA. out is input, and the output signal r1sel of the input selection device 22-1 is input to the input terminal DB. out is input, an operation according to the instruction of the control signal BTFMD0 supplied to the control terminal CTL is performed, two operation results are obtained, and one operation result is output from the output terminal OA to the signal btf0a. output to the output selection devices 24-0 and 25-0 as the out, and the other operation result is output from the output terminal OB to the signal btf0b. butterfly calculator 23 output to output selection devices 24-1 and 25-1 as out, and output signal btf0a of shift calculator 21-0 and butterfly calculator 23 in accordance with control signal D0SEL The output selection device 24-0 that selects any one of out and outputs it as the signal D0, and the output signal btf0b of the shift calculator 21-1 and the output signal btf0b of the butterfly calculator 23 according to the control signal D1SEL The output selection device 24-1 that selects one of out and outputs it as the signal D1, and the output signal btf0a of the data input I0 and the butterfly computing unit 23 according to the control signal W0SEL The output selection device 25-0 that selects any one of out and outputs it as the signal MEMW0, and the output signal btf0b of the data input I1 and the butterfly calculator 23 according to the control signal W1SEL Since the output selection device 25-1 that selects any of “out” and outputs it as the signal MEMW 1 is provided, the following effects can be obtained.
[0131]
When performing multi-input and multi-output calculations such as butterfly calculations, calculations such as y0 = x0 + x1, y1 = x0−x1 can be performed simultaneously.
For this reason, x0 and x1 may be read once as input data. Therefore, there is an advantage that the access efficiency to the memory / register is improved.
In addition to the dedicated hardware, there is an advantage that a configuration that can flexibly perform calculations such as y0 = x0 + x1 + x2 + x3 in addition to y0 = x0 + x1 and y1 = x0−x1 can be easily realized.
[0132]
In addition, since the arithmetic device itself can be reconfigured from the outside, not only can the logic level be optimized, but also an arithmetic device that can prevent an increase in configuration information and a reduction in area efficiency as an integrated circuit can be realized. There are advantages.
[0133]
Fourth embodiment
FIG. 6 is a block diagram showing a fourth embodiment of the arithmetic device according to the present invention.
[0134]
The arithmetic device 20A in FIG. 6 is an arithmetic device that can be reconfigured based on the configuration information, and is configured to perform 8-input 8-output arithmetic and execute butterfly arithmetic and shift arithmetic simultaneously.
[0135]
This computing device 20A includes a shift computing unit (SFT0) 21A-0, a shift computing unit (SFT1) 21A-1, a shift computing unit (SFT2) 21A-2, a shift computing unit (SFT3) 21A-3, an input selection device ( RSEL0) 22A-0, input selection device (RSEL1) 22A-1, input selection device (RSEL2) 22A-2, input selection device (RSEL3) 22A-3, butterfly calculator (BTF0) 23A-0, butterfly calculator ( BTF1) 23A-1, output selection device (DSEL0) 24A-0, output selection device (DSEL1) 24A-1, output selection device (DSEL2) 24A-2, output selection device (DSEL3) 24A-3, output selection device ( WSEL0) 25A-0, output selection device (WSEL1) 25A-1, output selection device (WSEL2) 25A-2, and And an output selection device (WSEL3) 25A-3.
[0136]
The arithmetic unit 20A has data inputs MEMR0, MEMR1, MEMR2, MEMR3, I0, I1, I2, I3, and data outputs MEMW0, MEMW1, MEMW2, MEMW3, D0, D1, D2, D3, and again. Control signals BTFMD0, BTFMD1, R0SEL, R1SEL, R2SEL, R3SEL, W0SEL, W1SEL, W2SEL, W3SEL, D0SEL, D1SEL, D2SEL, D3SEL for configuration are supplied.
[0137]
The shift calculator 21A-0 shifts the value of the data input MEMR0 by a single operation according to the control signal SFT0MD, specifically, by an arbitrary bit to the left or right according to the value (shift amount) indicated by the control signal SFT0MD. The operation is performed and the result is obtained as signal sft0. It is output to the input selection device 22A-0 and the output selection device 24A-0 as out. Note that, for example, when the shift amount indicated by the control signal SFT0MD is zero, the shift calculator 21A-0 does not perform shift calculation and outputs the data input MEMR0 as it is.
[0138]
The shift calculator 21A-1 shifts the value of the data input MEMR1 by an unary operation according to the control signal SFT1MD, specifically, by an arbitrary bit to the left or right according to the value (shift amount) indicated by the control signal SFT1MD. The operation is performed and the result is obtained as signal sft1. It is output to the input selection device 22A-1 and the output selection device 24A-1 as out. Note that, for example, when the shift amount indicated by the control signal SFT1MD is zero, the shift calculator 21A-1 does not perform the shift calculation and outputs the data input MEMR1 as it is.
[0139]
The shift calculator 21A-2 shifts the value of the data input MEMR2 by unary operation according to the control signal SFT2MD, specifically, by an arbitrary bit to the left or right according to the value (shift amount) indicated by the control signal SFT2MD. The result is calculated and the result is signal sft2 It is output to the input selection device 22A-2 and the output selection device 24A-2 as out. Note that, for example, when the shift amount indicated by the control signal SFT2MD is zero, the shift calculator 21A-2 outputs the data input MEMR2 as it is without performing the shift calculation.
[0140]
The shift calculator 21A-3 shifts the value of the data input MEMR3 by unary operation according to the control signal SFT3MD, specifically, by an arbitrary bit to the left or right according to the value (shift amount) indicated by the control signal SFT3MD. The operation is performed and the result is obtained as signal sft3. It is output to the input selection device 22A-3 and the output selection device 24A-3 as out. Note that, for example, when the shift amount indicated by the control signal SFT3MD is zero, the shift calculator 21A-3 outputs the data input MEMR3 as it is without performing the shift calculation.
[0141]
The input selection device 22A-0 selects either the output data of the shift calculator 21A-0 or the data input I0 according to the control signal R0SEL, and the signal r0sel. The result is output to the butterfly calculator 23A-0 as out.
[0142]
The input selection device 22A-1 selects either the output data of the shift computing unit 21A-1 or the data input I1 according to the control signal R1SEL, and the signal r1sel The result is output to the butterfly calculator 23A-0 as out.
[0143]
The input selection device 22A-2 selects either the output data of the shift computing unit 21A-2 or the data input I2 according to the control signal R2SEL, and the signal r2sel It outputs to butterfly computing unit 23A-1 as out.
[0144]
The input selection device 22A-3 selects either the output data of the shift computing unit 21A-3 or the data input I3 according to the control signal R3SEL, and the signal r3sel It outputs to butterfly computing unit 23A-1 as out.
[0145]
The butterfly computing unit 23A-0 receives the output signal r0sel of the input selection device 22A-0 at the input terminal DA. out is input, and the output signal r1sel of the input selection device 22A-1 is input to the input terminal DB. out is input, an operation according to the instruction of the control signal BTFMD0 supplied to the control terminal CTL is performed, two operation results are obtained, and one operation result is output from the output terminal OA to the signal btf0a. output to the output selection devices 24A-0 and 25A-0 as the out, and the other operation result is output from the output terminal OB to the signal btf0b. The output is output to the output selection devices 24A-1 and 25A-1.
[0146]
Specifically, the butterfly calculator 23A-0 selectively performs any of the following calculations depending on the value of the control signal BTFMD0.
[0147]
[Formula 6]
Figure 0003846196
[0148]
The butterfly calculator 23A-1 receives the output signal r2sel of the input selection device 22A-2 at the input terminal DA. out is input, and the output signal r3sel of the input selection device 22A-3 is input to the input terminal DB. out is input, an operation is performed according to an instruction of the control signal BTFMD1 supplied to the control terminal CTL, two operation results are obtained, and one operation result is output from the output terminal OA to the signal btf1a. output to the output selection devices 24A-2 and 25A-2, and the other operation result is output from the output terminal OB to the signal btf1b. It outputs to output selection device 24A-3 and 25A-3 as out.
[0149]
Specifically, the butterfly calculator 23A-1 selectively performs any of the following calculations depending on the value of the control signal BTFMD1.
[0150]
[Expression 7]
Figure 0003846196
[0151]
The output selection device 24A-0 outputs the output signal sft0 of the shift computing unit 21A-0 according to the control signal D0SEL. out (for example, MEMR0) and the output signal btf0a of the butterfly calculator 23A-0 Either out is selected and output as a signal D0.
[0152]
The output selection device 24A-1 outputs the output signal sft1 of the shift computing unit 21A-1 according to the control signal D1SEL. out (for example, MEMR1) and the output signal btf0b of the butterfly calculator 23A-0 Either out is selected and output as the signal D1.
[0153]
The output selection device 24A-2 outputs the output signal sft2 of the shift computing unit 21A-2 according to the control signal D2SEL. out (for example, MEMR2) and the output signal btf1a of the butterfly calculator 23A-1 Either out is selected and output as the signal D2.
[0154]
The output selection device 24A-3 outputs the output signal sft3 of the shift computing unit 21A-3 according to the control signal D3SEL. out (for example, MEMR3) and the output signal btf1b of the butterfly calculator 23A-1 Either out is selected and output as a signal D3.
[0155]
In response to the control signal W0SEL, the output selection device 25A-0 outputs the data input I0 and the output signal btf0a of the butterfly calculator 23A-0. Either out is selected and output as the signal MEMW0.
[0156]
In response to the control signal W1SEL, the output selection device 25A-1 receives the data input I1 and the output signal btf0b of the butterfly calculator 23A-0. Either out is selected and output as the signal MEMW1.
[0157]
In response to the control signal W2SEL, the output selection device 25A-2 receives the data input I2 and the output signal btf1a of the butterfly calculator 23A-1. Either out is selected and output as the signal MEMW2.
[0158]
In response to the control signal W3SEL, the output selection device 25A-3 receives the data input I3 and the output signal btf1b of the butterfly calculator 23A-1. Either out is selected and output as the signal MEMW3.
[0159]
Next, the operation according to the above configuration will be described.
here,
D1 = MEMR0−MEMR1,
D3 = MEMR2-MEMR3
MEMW0 = MEMR0 + MEMR1,
MEMW2 = MEMR2 + MEMR3
MEMW1 = I1
MEMW3 = I3
It is assumed that the operation of
[0160]
For example, the shift amounts of the shift calculators 21A-0, 21A-1, 21A-2, 21A-3 are set to zero by the control signals SFT0MD, SFT1MD, SFT2MD, SFT3MD.
Therefore, the output signal sft0 of the shift calculator 21A-0 out becomes MEMR0 and is supplied to the input selection device 22A-0 and the output selection device 24A-0.
Similarly, the output signal sft1 of the shift calculator 21A-1 out becomes MEMR1 and is supplied to the input selection device 22A-1 and the output selection device 24A-1.
Output signal sft2 of shift computing unit 21A-2 out becomes MEMR2 and is supplied to the input selection device 22A-2 and the output selection device 24A-2.
Then, the output signal sft3 of the shift computing unit 21A-3 out becomes MEMR3 and is supplied to the input selection device 22A-3 and the output selection device 24A-3.
[0161]
The input selection device 22A-0 is controlled by the control signal R0SEL to select the output signal of the shift computing unit 21A-0, that is, MEMR0, and the selected data MEMR0 is the signal r0sel. As out, it is supplied to the input terminal DA of the butterfly calculator 23A-0.
The input selection device 22A-1 is controlled by the control signal R1SEL to select the output signal of the shift computing unit 21A-1, that is, MEMR1, and the selected data MEMR1 is the signal r1sel. As out, it is supplied to the input terminal DB of the butterfly calculator 23A-0.
[0162]
The input selection device 22A-2 is controlled to select the output signal of the shift computing unit 21A-2, that is, MEMR2, by the control signal R2SEL, and the selected data MEMR2 is the signal r2sel. As out, it is supplied to the input terminal DA of the butterfly calculator 23A-1.
In the input selection device 22A-3, the control signal R3SEL is controlled so as to select the output signal of the shift computing unit 21A-3, that is, MEMR3, and the selected data MEMR3 is the signal r3sel. As out, it is supplied to the input terminal DB of the butterfly calculator 23A-1.
[0163]
The butterfly computing unit 23A-0 is set to a mode in which OA = DA + DB and OB = DA-DB are calculated by the control signal BTFMD0 supplied to the control terminal CTL.
Thereby, in the butterfly computing unit 23A-0, the data MEMR0 supplied to the input terminal DA and the data MEMR1 supplied to the input terminal DB are added, and the result (MEMR0 + MEMR1) is output from the output terminal OA to the signal btf0a. As out, it is output to the output selection devices 24A-0 and 25A-0.
In the butterfly calculator 23A-0, the difference between the data MEMR0 supplied to the input terminal DA and the data MEMR1 supplied to the input terminal DB is taken, and the result (MEMR0-MEMR1) is the output terminal OB. To signal btf0b As out, it is output to the output selection devices 24A-1 and 25A-1.
[0164]
Similarly, the butterfly calculator 23A-1 is set to a mode in which OA = DA + DB and OB = DA-DB are calculated by the control signal BTFMD1 supplied to the control terminal CTL.
Thereby, in the butterfly computing unit 23A-1, the data MEMR2 supplied to the input terminal DA and the data MEMR3 supplied to the input terminal DB are added, and the result (MEMR2 + MEMR3) is output from the output terminal OA to the signal btf1a. As out, it is output to the output selection devices 24A-2 and 25A-2.
In the butterfly computing unit 23A-1, the difference between the data MEMR2 supplied to the input terminal DA and the data MEMR3 supplied to the input terminal DB is taken, and the result (MEMR2-MEMR3) is the output terminal OB. To signal btf1b As out, it is output to the output selection devices 24A-3 and 25A-3.
[0165]
In the output selection device 24A-1, the output signal (MEMR1) of the shift computing unit 21A-1 and the output signal btf0b of the butterfly computing unit 23A-0 out (= MEMR0−MEMR1), the output signal btf0b of the butterfly calculator 23A-0 The control signal D1SEL is supplied so as to select out, and the selected data is output as a signal D1 = MEMR0-MEMR1.
[0166]
Further, in the output selection device 25A-0, the data input I0 and the output signal btf0a of the butterfly calculator 23A-0. out (= MEMR0 + MEMR1), the output signal btf0a of the butterfly calculator 23A-0 The control signal W0SEL is supplied so as to select out, and the selected data is output as a signal MEMW0 = MEMR0 + MEMR1.
[0167]
In the output selection device 25A-1, the data input I1 and the output signal btf0b of the butterfly calculator 23A-0 Out of (= MEMR0−MEMR1), the control signal W1SEL is supplied so as to select the data input I1, and the selected data is output as the signal MEMW1 = I1.
[0168]
In the output selection device 24A-3, the output signal (MEMR3) of the shift computing unit 21A-3 and the output signal btf1b of the butterfly computing unit 23A-1 out (= MEMR2−MEMR3), the output signal btf1b of the butterfly calculator 23B-1 The control signal D3SEL is supplied so as to select out, and the selected data is output as signal D3 = MEMR2−MEMR3.
[0169]
In the output selection device 25A-2, the data input I2 and the output signal btf1a of the butterfly calculator 23A-1 out (= MEMR2 + MEMR3), the output signal btf1a of the butterfly calculator 23A-1 The control signal W2SEL is supplied so as to select out, and the selected data is output as a signal MEMW2 = MEMR2 + MEMR3.
[0170]
Further, in the output selection device 25A-3, the data input I3 and the output signal btf1b of the butterfly calculator 23A-1 Out of (= MEMR2−MEMR3), the control signal W3SEL is supplied so as to select the data input I3, and the selected data is output as the signal MEMW3 = I3.
[0171]
According to the 8-input 8-output arithmetic device 20A according to the fourth embodiment, it is possible to obtain the same effects as the effects of the third embodiment described above.
[0172]
Fifth embodiment
FIG. 7 is a block diagram showing a fifth embodiment of the arithmetic device according to the present invention.
[0173]
The fifth embodiment is different from the fourth embodiment described above in that the output signal btf0a of the butterfly calculator 23A-0 is input to the input terminal DA. out and the output signal btf1a of the butterfly calculator 23A-1 is input to the input terminal DB. out is input, an operation according to the instruction of the control signal BTFMD2 supplied to the control terminal CTL is performed to obtain two operation results, and one operation result is obtained from the output terminal OA as a signal btf2a output to the output selection devices 25B-0 and 25B-2, and the other operation result is output from the output terminal OB to the signal btf2b. A butterfly computing unit 23A-2 for outputting to the output selecting devices 25B-1 and 25B-3 as out is provided, and three butterfly computing units are arranged in a so-called multistage and connected in a tree shape.
[0174]
The butterfly calculator 23B-2 according to the fifth embodiment selectively performs any of the following calculations depending on the value of the control signal BTFMD2.
[0175]
[Equation 8]
Figure 0003846196
[0176]
In the fifth embodiment, the output selection devices 25B-0 to 25B-3 select one data from the three input data according to the control signals W0SEL to W3SEL, and output them as signals MEMW0 to MEMW3. It is configured to do.
[0177]
In response to the control signal W0SEL, the output selection device 25B-0 outputs the data input I0 and the output signal btf0a of the butterfly calculator 23A-0. out and the output signal btf2a of the butterfly calculator 23B-2 One of “out” is selected and output as a signal MEMW0.
[0178]
In response to the control signal W1SEL, the output selection device 25B-1 outputs the data input I1 and the output signal btf0b of the butterfly calculator 23A-0. out and the output signal btf2b of the butterfly calculator 23B-2 Either out is selected and output as the signal MEMW1.
[0179]
In response to the control signal W2SEL, the output selection device 25B-2 outputs the data input I2 and the output signal btf1a of the butterfly calculator 23A-1. out and the output signal btf2a of the butterfly calculator 23B-2 Either out is selected and output as the signal MEMW2.
[0180]
In response to the control signal W3SEL, the output selection device 25B-3 receives the data input I3 and the output signal btf1b of the butterfly calculator 23A-1. out and the output signal btf2b of the butterfly calculator 23B-2 Either out is selected and output as the signal MEMW3.
[0181]
Since other configurations and functions are the same as those of FIG. 6 according to the fourth embodiment, the same components as those of FIG. 6 are denoted by the same reference numerals in FIG.
[0182]
In such a configuration, for example, the output signal btf0a of the butterfly calculator 23A-0 out is (MEMR0 + MEMR1), and the output signal btf1a of the butterfly calculator 23A-1 When out is (MEMR2 + MEMR3), for example, the output signal btf2a of the butterfly calculator 23B-2 out becomes (MEMR0 + MEMR1 + MEMR2 + MEMR3), and the output signal btf2b out becomes (MEMR0 + MEMR1-MEMR2-MEMR3).
[0183]
Then, in the output selection device 25B-0, the output signal btf2a of the butterfly calculator 23B-2 according to the control signal W0SEL. By controlling to select out, the signal MEMW0 is output as (MEMR0 + MEMR1 + MEMR2 + MEMR3).
Similarly, in the output selection device 25B-2, the output signal btf2a of the butterfly computing unit 23B-2 according to the control signal W2SEL. By controlling to select out, the signal MEMW2 is output as (MEMR0 + MEMR1 + MEMR2 + MEMR3).
[0184]
Further, in the output selection device 25B-1, the output signal btf2b of the butterfly calculator 23B-2 according to the control signal W1SEL. By controlling to select out, the signal MEMW1 is output as (MEMR0 + MEMR1-MEMR2-MEMR3).
Similarly, in the output selection device 25B-3, in response to the control signal W3SEL, the output signal btf2b of the butterfly calculator 23B-2 By controlling to select out, the signal MEMW3 is output as (MEMR0 + MEMR1-MEMR2-EMR3).
[0185]
Since other configurations and operations are the same as those of the above-described fourth embodiment, description thereof is omitted here.
[0186]
According to the fifth embodiment, not only can the same effect as that of the fourth embodiment described above be obtained, but also there is an advantage that more advanced and complicated calculations can be easily performed.
[0187]
Sixth embodiment
FIG. 8 is a block diagram showing a sixth embodiment of the arithmetic device according to the present invention.
[0188]
The arithmetic device 20C in FIG. 8 is a reconfigurable arithmetic device based on configuration information, and is configured to perform a 16-input 16-output operation and perform a butterfly operation.
[0189]
The arithmetic device 20C includes an input selection device (RSEL0) 22C-0, an input selection device (RSEL1) 22C-1, an input selection device (RSEL2) 22C-2, an input selection device (RSEL3) 22C-3, an input selection device ( RSEL4) 22C-4, input selection device (RSEL5) 22C-5, input selection device (RSEL6) 22C-6, input selection device (RSEL7) 22C-7, input selection device (BSEL0) 22C-8, input selection device ( BSEL1) 22C-9, input selection device (BSEL2) 22C-10, input selection device (BSEL3) 22C-11, input selection device (BSEL4) 22C-12, input selection device (BSEL5) 22C-13, input selection device ( BSEL6) 22C-14, input selection device (BSEL7) 22C-15, butterfly calculator (BTF0) 23C-0, butterfly calculator (BTF1) 23C-1, butterfly calculator (BTF2) 23C-2, butterfly calculator (BTF3) 23C-3, butterfly calculator (BTF4) 23C-4, butterfly calculator (BTF5) 23C-5, butterfly computing unit (BTF6) 23C-6, butterfly computing unit (BTF7) 23C-7, output selection device (DSEL0) 24C-0, output selection device (DSEL1) 24C-1, output selection device (DSEL2) 24C-2, output selection device (DSEL3) 24C-3, output selection device (DSEL4) 24C-4, output selection device (DSEL5) 24C-5, output selection device (DSEL6) 24C-6, output selection device (DSEL7) 24C-7, output selection device (WSEL0) 25C-0, output selection device (WSEL1) 25 -1, output selection device (WSEL2) 25C-2, output selection device (WSEL3) 25C-3, output selection device (WSEL4) 25C-4, output selection device (WSEL5) 25C-5, output selection device (WSEL6) 25C -6, and an output selection device (WSEL7) 25C-7.
[0190]
The input selection devices 22C-0 to 22C-7 constitute the first input selection device of the present invention, the input selection devices 22C-9 to 22C-15 constitute the second input selection device of the present invention, The butterfly computing unit 23C-0, the butterfly computing unit 23C-2, the butterfly computing unit 23C-4, and the butterfly computing unit 23C-6 constitute the first computing unit of the present invention, and the butterfly computing unit 23C-1 and the butterfly computation 23C-3, butterfly calculator 23C-5, and butterfly calculator 23C-7 constitute the second calculator of the present invention, and output selectors 24C-0 to 24C-7 output the first output of the present invention. The selection device is constituted, and the output selection devices 25C-0 to 25C-7 constitute the second output selection device of the present invention.
[0191]
The arithmetic unit 20C has data inputs MEMR0, MEMR1, MEMR2, MEMR3, MEMR4, MEMR5, MEMR6, MEMR7, I0, I1, I2, I3, I4, I5, I6, I7, and data outputs MEMW0, MEMW1, MEMW2, and so on. MEMW3, MEMW4, MEMW5, MEMW6, MEMW7, D0, D1, D2, D3, D4, D5, D6, D7, and control signals BTFMD0, BTFMD1, BTFMD2, BTFMD3, BTFMD4, BTFMD5 for reconfiguration BTFMD6, BTFMD7, R0SEL, R1SEL, R2SEL, R3SEL, R4SEL, R5SEL, R6SEL, R7SEL, B0SEL, B1SEL, B2SEL, B3SEL, B4SEL, B5SEL, B6SEL, 7SEL, W0SEL, W1SEL, W2SEL, W3SEL, W4SEL, W5SEL, W6SEL, W7SEL, D0SEL, D1SEL, D2SEL, D3SEL, D4SEL, D5SEL, D6SEL, is D7SEL supplied.
[0192]
The input selection device 22C-0 selects either the data input MEMR0 or the data input I0 according to the control signal R0SEL, and the signal r0sel The result is output to the butterfly calculator 23C-0 as out.
[0193]
The input selection device 22C-1 selects either the data input MEMR1 or the data input I1 according to the control signal R1SEL, and outputs the signal r1sel. The result is output to the butterfly calculator 23C-0 as out.
[0194]
The input selection device 22C-2 selects either the data input MEMR2 or the data input I2 in response to the control signal R2SEL, and outputs the signal r2sel. It outputs to butterfly computing unit 23C-2 as out.
[0195]
The input selection device 22C-3 selects one of the data input MEMR3 and the data input I3 according to the control signal R3SEL, and outputs a signal r3sel. It outputs to butterfly computing unit 23C-2 as out.
[0196]
The input selection device 22C-4 selects one of the data input MEMR4 and the data input I4 according to the control signal R4SEL, and outputs a signal r4sel. It outputs to butterfly computing unit 23C-4 as out.
[0197]
The input selection device 22C-5 selects either the data input MEMR5 or the data input I5 in response to the control signal R5SEL, and outputs the signal r5sel. It outputs to butterfly computing unit 23C-4 as out.
[0198]
The input selection device 22C-6 selects one of the data input MEMR6 and the data input I6 according to the control signal R6SEL, and outputs a signal r6sel. It outputs to butterfly computing unit 23C-6 as out.
[0199]
The input selection device 22C-7 selects either the data input MEMR7 or the data input I7 in response to the control signal R7SEL, and the signal r7sel It outputs to butterfly computing unit 23C-6 as out.
[0200]
In response to the control signal B0SEL, the input selection device 22C-8 receives the data input I0 and the output signal btf0a of the butterfly calculator 23C-0. out and the output signal btf6b of the butterfly calculator 23C-6 select one of out and signal b0sel It outputs to butterfly computing unit 23C-1 as out.
[0201]
In response to the control signal B1SEL, the input selection device 22C-9 receives the data input I1 and the output signal btf0b of the butterfly calculator 23C-0. out and the output signal btf2a of the butterfly calculator 23C-2 select one of out and the signal b1sel It outputs to butterfly computing unit 23C-1 as out.
[0202]
In response to the control signal B2SEL, the input selection device 22C-10 receives the data input I2 and the output signal btf2a of the butterfly calculator 23C-2. out and the output signal btf0b of the butterfly calculator 23C-0 out one of the signals, and the signal b2sel It outputs to butterfly computing unit 23C-3 as out.
[0203]
In response to the control signal B3SEL, the input selection device 22C-11 receives the data input I3 and the output signal btf2b of the butterfly calculator 23C-2. out and the output signal btf4a of the butterfly calculator 23C-4 select one of out and the signal b3sel It outputs to butterfly computing unit 23C-3 as out.
[0204]
In response to the control signal B4SEL, the input selection device 22C-12 receives the data input I4 and the output signal btf4a from the butterfly calculator 23C-4. out and the output signal btf2b of the butterfly computing unit 23C-2 out one of the signals b4sel It outputs to butterfly computing unit 23C-5 as out.
[0205]
In response to the control signal B5SEL, the input selection device 22C-13 receives the data input I5 and the output signal btf4b of the butterfly calculator 23C-4. out and the output signal btf6a of the butterfly computing unit 23C-6 select one of out and the signal b5sel It outputs to butterfly computing unit 23C-5 as out.
[0206]
In response to the control signal B6SEL, the input selection device 22C-14 receives the data input I6 and the output signal btf6a from the butterfly calculator 23C-6. out and the output signal btf4b of the butterfly calculator 23C-4 select one of out and the signal b6sel It outputs to butterfly computing unit 23C-7 as out.
[0207]
In response to the control signal B7SEL, the input selection device 22C-15 receives the data input I7 and the output signal btf6b from the butterfly calculator 23C-6. out and the output signal btf0a of the butterfly calculator 23C-0 select one of out and signal b7sel It outputs to butterfly computing unit 23C-7 as out.
[0208]
The butterfly computing unit 23C-0 has an output signal r0sel of the input selection device 22C-0 at the input terminal DA. out is input, and the output signal r1sel of the input selection device 22C-1 is input to the input terminal DB. out is input, an operation according to the instruction of the control signal BTFMD0 supplied to the control terminal CTL is performed, two operation results are obtained, and one operation result is output from the output terminal OA to the signal btf0a. out is output to the input selection devices 22C-8 and 22C-15, and the other operation result is output from the output terminal OB to the signal btf0b. It is output to the input selection devices 22C-9 and 22C-10 as out.
[0209]
The butterfly calculator 23C-1 receives the output signal b0sel of the input selection device 22C-8 at the input terminal DA. out is input, and the output signal b1sel of the input selection device 22C-9 is input to the input terminal DB. out is input, an operation is performed according to an instruction of the control signal BTFMD1 supplied to the control terminal CTL, two operation results are obtained, and one operation result is output from the output terminal OA to the signal btf1a. output to the output selection devices 24C-0 and 25C-0 as the out, and the other operation result is output from the output terminal OB to the signal btf1b. The output is output to the output selection devices 24C-1 and 25C-1.
[0210]
The butterfly computing unit 23C-2 receives the output signal r2sel of the input selection device 22C-2 at the input terminal DA. out is input, and the output signal r3sel of the input selection device 22C-3 is input to the input terminal DB. out is input, an operation according to the instruction of the control signal BTFMD2 supplied to the control terminal CTL is performed to obtain two operation results, and one operation result is obtained from the output terminal OA as a signal btf2a output to the input selection devices 22C-10 and 22C-9 as out, and the other operation result is output from the output terminal OB to the signal btf2b. It is output to the input selection devices 22C-11 and 22C-12 as out.
[0211]
The butterfly computing unit 23C-3 receives the output signal b2sel of the input selection device 22C-10 at the input terminal DA. out is input, and the output signal b3sel of the input selection device 22C-11 is input to the input terminal DB. out is input, an operation is performed in accordance with the instruction of the control signal BTFMD3 supplied to the control terminal CTL, two operation results are obtained, and one operation result is output from the output terminal OA to the signal btf3a. output to the output selection devices 24C-2 and 25C-2 as the out, and the other operation result is output from the output terminal OB to the signal btf3b. It outputs to the output selection devices 24C-3 and 25C-3 as out.
[0212]
The butterfly calculator 23C-4 receives the output signal r4sel of the input selection device 22C-4 at the input terminal DA. out is input, and the output signal r5sel of the input selection device 22C-5 is input to the input terminal DB. out is input, an operation according to the instruction of the control signal BTFMD4 supplied to the control terminal CTL is performed to obtain two operation results, and one operation result is obtained from the output terminal OA as a signal btf4a. output to the input selection devices 22C-12 and 22C-11 as out, and the other operation result is output from the output terminal OB to the signal btf4b. It is output to the input selection devices 22C-13 and 22C-14 as out.
[0213]
The butterfly calculator 23C-5 receives the output signal b4sel of the input selection device 22C-12 at the input terminal DA. out is input, and the output signal b5sel of the input selection device 22C-13 is input to the input terminal DB. out is input, an operation according to the instruction of the control signal BTFMD5 supplied to the control terminal CTL is performed, two operation results are obtained, and one operation result is output from the output terminal OA to the signal btf5a. output to the output selection devices 24C-4 and 25C-4 as the out, and the other operation result is output from the output terminal OB to the signal btf5b. The output is output to the output selection devices 24C-5 and 25C-5.
[0214]
The butterfly calculator 23C-6 has an output signal r6sel of the input selection device 22C-6 at the input terminal DA. out is input, and the output signal r7sel of the input selection device 22C-7 is input to the input terminal DB. out is input, an operation according to the instruction of the control signal BTFMD6 supplied to the control terminal CTL is performed, two operation results are obtained, and one operation result is output from the output terminal OA to the signal btf6a. out to the input selection devices 22C-14 and 22C-13, and the other operation result is output from the output terminal OB to the signal btf6b. It is output to the input selection devices 22C-15 and 22C-8 as out.
[0215]
The butterfly calculator 23C-7 receives the output signal b6sel of the input selection device 22C-14 at the input terminal DA. out is input, and the output signal b7sel of the input selection device 22C-15 is input to the input terminal DB. out is input, an operation according to the instruction of the control signal BTFMD7 supplied to the control terminal CTL is performed, two operation results are obtained, and one operation result is output from the output terminal OA to the signal btf7a. output to the output selection devices 24C-6 and 25C-6 as the out, and the other operation result is output from the output terminal OB to the signal btf7b. It is output to the output selection devices 24C-7 and 25C-7 as out.
[0216]
Specifically, the butterfly calculator 23C-i (i = 0, 2, 4, 6) selectively performs any of the following calculations depending on the value of the control signal BTFMDi.
[0217]
[Equation 9]
Figure 0003846196
[0218]
The butterfly calculator 23C-j (j = 1, 3, 5, 7) selectively performs any of the following calculations depending on the value of the control signal BTFMDj.
[0219]
[Expression 10]
Figure 0003846196
[0220]
In response to the control signal D0SEL, the output selection device 24C-0 outputs the data input MEMR0 and the output signal btf1a of the butterfly calculator 23C-1. Either out is selected and output as a signal D0.
[0221]
The output selection device 24C-1 receives the data input MEMR1 and the output signal btf1b of the butterfly calculator 23C-1 according to the control signal D1SEL. Either out is selected and output as the signal D1.
[0222]
In response to the control signal D2SEL, the output selection device 24C-2 outputs the data input MEMR2 and the output signal btf3a of the butterfly calculator 23C-3. Either out is selected and output as the signal D2.
[0223]
In response to the control signal D3SEL, the output selection device 24C-3 receives the data input MEMR3 and the output signal btf3b of the butterfly calculator 23C-3. Either out is selected and output as a signal D3.
[0224]
In response to the control signal D4SEL, the output selection device 24C-4 receives the data input MEMR4 and the output signal btf5a of the butterfly calculator 23C-5. Either out is selected and output as the signal D4.
[0225]
In response to the control signal D5SEL, the output selection device 24C-5 receives the data input MEMR5 and the output signal btf5b of the butterfly calculator 23C-5. Either out is selected and output as the signal D5.
[0226]
In response to the control signal D6SEL, the output selection device 24C-6 outputs the data input MEMR6 and the output signal btf7a of the butterfly calculator 23C-7. Either out is selected and output as a signal D6.
[0227]
In response to the control signal D7SEL, the output selection device 24C-7 outputs the data input MEMR7 and the output signal btf7b of the butterfly calculator 23C-7. Either out is selected and output as a signal D7.
[0228]
In response to the control signal W0SEL, the output selection device 25C-0 receives the data input I0 and the output signal btf1a of the butterfly calculator 23C-1. Either out is selected and output as the signal MEMW0.
[0229]
In response to the control signal W1SEL, the output selection device 25C-1 receives the data input I1 and the output signal btf1b of the butterfly calculator 23C-1. Either out is selected and output as the signal MEMW1.
[0230]
In response to the control signal W2SEL, the output selection device 25C-2 receives the data input I2 and the output signal btf3a of the butterfly calculator 23C-3. Either out is selected and output as the signal MEMW2.
[0231]
In response to the control signal W3SEL, the output selection device 25C-3 receives the data input I3 and the output signal btf3b of the butterfly calculator 23C-3. Either out is selected and output as the signal MEMW3.
[0232]
In response to the control signal W4SEL, the output selection device 25C-4 outputs the data input I4 and the output signal btf5a of the butterfly calculator 23C-5. Either out is selected and output as the signal MEMW4.
[0233]
In response to the control signal W5SEL, the output selection device 25C-5 receives the data input I5 and the output signal btf5b from the butterfly calculator 23C-5. Either out is selected and output as the signal MEMW5.
[0234]
In response to the control signal W6SEL, the output selection device 25C-6 selects the data input I6 and the output signal btf7a from the butterfly calculator 23C-7. Either out is selected and output as the signal MEMW6.
[0235]
In response to the control signal W7SEL, the output selection device 25C-7 receives the data input I7 and the output signal btf7b from the butterfly calculator 23C-7. Either out is selected and output as the signal MEMW7.
[0236]
Next, the operation according to the above configuration will be described.
Here, for example, the following calculation is performed.
D0 = MEMR6−MEMR7 + MEMR0−MEMR1,
D1 = MEMR1,
D6 = MEMR6
D7 = MEMR6 + MEMR7−MEMR0−MEMR1,
MEMW0 = I0
MEMW1 = MEMR6−MEMR7−MEMR0 + MEMR1,
MEMW6 = MEMR0 + MEMR1 + MEMR6 + MEMR7,
MEMW7 = I7
[0237]
In this case, the input selection device 22C-0 is controlled to select the data input MEMR0 by the control signal R0SEL, and the selected data MEMR0 is the signal r0sel. As out, it is supplied to the input terminal DA of the butterfly calculator 23C-0.
The input selection device 22C-1 is controlled to select MEMR1 by the control signal R1SEL, and the selected data MEMR1 is the signal r1sel. As out, it is supplied to the input terminal DB of the butterfly calculator 23C-0.
[0238]
  Further, the input selection device 22C-6 is controlled to select the MEMR 6 by the control signal R6SEL, and the selected data MEMR6 is the signal r6sel. As out, it is supplied to the input terminal DA of the butterfly calculator 23C-6.
  The input selection device 22C-7 is controlled to select MEMR7 by the control signal R7SEL, and the selected data MEMR7 is the signal r7sel. as out, the flyer calculator 23C-6To the input terminal DB.
[0239]
In the butterfly computing unit 23C-0, the control signal BTFMD0 supplied to the control terminal CTL is set to a mode in which OA = DA + DB and OB = DA-DB are calculated.
Thereby, in the butterfly computing unit 23C-0, the data MEMR0 supplied to the input terminal DA and the data MEMR1 supplied to the input terminal DB are added, and the result (MEMR0 + MEMR1) is output from the output terminal OA to the signal btf0a. It is output to the input selection devices 22C-8 and 22C-15 as out. Further, in the butterfly calculator 23C-0, the difference between the data MEMR0 supplied to the input terminal DA and the data MEMR1 supplied to the input terminal DB is taken, and the result (MEMR0-MEMR1) is the output terminal OB. To signal btf0b It is output to the input selection devices 22C-9 and 22C-10 as out.
[0240]
Similarly, the butterfly calculator 23C-6 is set to a mode in which OA = DA + DB and OB = DA-DB are calculated by the control signal BTFMD6 supplied to the control terminal CTL.
Thereby, in the butterfly computing unit 23C-6, the data MEMR6 supplied to the input terminal DA and the data MEMR7 supplied to the input terminal DB are added, and the result (MEMR6 + MEMR7) is output from the output terminal OA to the signal btf6a. As out, it is output to the input selection devices 22C-14 and 22C-13.
In the butterfly calculator 23C-6, the difference between the data MEMR6 supplied to the input terminal DA and the data MEMR7 supplied to the input terminal DB is taken, and the result (MEMR6-MEMR7) is the output terminal OB. To signal btf6b It is output to the input selection devices 22C-15 and 22C-8 as out.
[0241]
In the input selection device 22C-8, the output signal btf6b of the butterfly calculator 23C-6 is received by the control signal B0SEL. out (= MEMR6-MEMR7) is selected, and the selected data (MEMR6-MEMR7) is the signal b0sel. As out, it is supplied to the input terminal DA of the butterfly calculator 23C-1.
In the input selection device 22C-9, the output signal btf0b of the butterfly calculator 23C-0 is received by the control signal B1SEL. out (= MEMR0-MEMR1) is selected, and the selected data (MEMR0-MEMR1) is the signal b1sel. As out, it is supplied to the input terminal DB of the butterfly calculator 23C-1.
[0242]
Further, in the input selection device 22C-14, the output signal btf6a of the butterfly calculator 23C-6 is received by the control signal B6SEL. out (= MEMR6 + MEMR7) is selected, and the selected data (MEMR6 + MEMR7) is the signal b6sel. As out, it is supplied to the input terminal DA of the butterfly calculator 23C-7.
In the input selection device 22C-15, the output signal btf0a of the butterfly calculator 23C-0 is received by the control signal B7SEL. out (= MEMR0 + MEMR1) is selected, and the selected data (MEMR0 + MEMR1) is the signal b7sel. As out, it is supplied to the input terminal DB of the butterfly calculator 23C-7.
[0243]
The butterfly computing unit 23C-1 is set to the mode in which OA = DA + DB and OB = DA-DB are calculated by the control signal BTFMD1 supplied to the control terminal CTL.
As a result, in the butterfly computing unit 23C-1, the data (MEMR6-MEMR7) supplied to the input terminal DA and the data (MEMR0-MEMR1) supplied to the input terminal DB are added, and the result (MEMR6). -MEMR7 + MEMR0-MEMR1) from the output terminal OA to the signal btf1a As out, it is output to the output selection devices 24C-0 and 25C-0.
In the butterfly computing unit 23C-1, the difference between the data (MEMR6-MEMR7) supplied to the input terminal DA and the data (MEMR0-MEMR1) supplied to the input terminal DB is taken, and this is the result ( MEMR6-MEMR7-MEMR0 + MEMR1) is output from the output terminal OB to the signal btf1b. As out, it is output to the output selection devices 24C-1 and 25C-1.
[0244]
Similarly, the butterfly computing unit 23C-7 is set to a mode in which OA = DA + DB and OB = DA-DB are calculated by the control signal BTFMD7 supplied to the control terminal CTL.
Thereby, in the butterfly calculator 23C-7, the data (MEMR6 + MEMR7) supplied to the input terminal DA and the data (MEMR0 + MEMR1) supplied to the input terminal DB are added, and the result (MEMR6 + MEMR7 + MEMR0 + MEMR1) is output terminal. Signal btf7a from OA As out, it is output to the output selection devices 24C-6 and 25C-6.
In the butterfly calculator 23C-7, the difference between the data (MEMR6 + MEMR7) supplied to the input terminal DA and the data (MEMR0 + MEMR1) supplied to the input terminal DB is taken, and the result (MEMR6 + MEMR7−MEMR0−) is obtained. MEMR1) is connected to the signal btf7b from the output terminal OB. As out, it is output to the output selection devices 24C-7 and 25C-7.
[0245]
In the output selection device 24C-0, the data input MEMR0 and the output signal btf1a of the butterfly calculator 23C-1 out (= MEMR6−MEMR7 + MEMR0−MEMR1), the output signal btf1a of the butterfly calculator 23C-1 The control signal D0SEL is supplied so as to select out, and the selected data is output as a signal D0 = MEMR6−MEMR7 + MEMR0−MEMR1.
[0246]
In the output selection device 24C-1, the data input MEMR1 and the output signal btf1b of the butterfly calculator 23C-1 Out of (= MEMR6−MEMR7−MEMR0 + MEMR1), the control signal D1SEL is supplied so as to select the data input MEMR1, and the selected data is output as signal D1 = MEMR1.
[0247]
In the output selection device 24C-6, the data input MEMR6 and the output signal btf7a of the butterfly calculator 23C-7. Out of (= MEMR6 + MEMR7 + MEMR0 + MEMR1), the control signal D6SEL is supplied so as to select the data input MEMR6, and the selected data is output as a signal D6 = MEMR6.
[0248]
In the output selection device 24C-7, the data input MEMR7 and the output signal btf7b of the butterfly calculator 23C-7. out (= MEMR6 + MEMR7−MEMR0−MEMR1), the output signal btf7b of the butterfly calculator 23C-7 The control signal D7SEL is supplied so as to select out, and the selected data is output as a signal D7 = MEMR6 + MEMR7−MEMR0−MEMR1.
[0249]
Further, in the output selection device 25C-0, the data input I0 and the output signal btf1a of the butterfly calculator 23C-1 Out (= MEMR6−MEMR7 + MEMR0−MEMR1), the control signal W0SEL is supplied so as to select the input data I0, and the selected data is output as the signal MEMW0 = I0.
[0250]
In the output selection device 25C-1, the data input I1 and the output signal btf1b of the butterfly calculator 23C-1 out (= MEMR6−MEMR7−MEMR0 + MEMR1), the output signal btf1b of the butterfly calculator 23C-1 The control signal W1SEL is supplied so as to select out, and the selected data is output as a signal MEMW1 = MEMR6−MEMR7−MEMR0 + MEMR1.
[0251]
In the output selection device 25C-6, the data input I6 and the output signal btf7a of the butterfly calculator 23C-7. out (= MEMR6 + MEMR7 + MEMR0 + MEMR1), the output signal btf7a of the butterfly computing unit 23C-7 The control signal W6SEL is supplied so as to select “out”, and the selected data is output as a signal MEMW6 = MEMR0 + MEMR1 + MEMR6 + MEMR7.
[0252]
Further, in the output selection device 25C-7, the data input I7 and the output signal btf7b of the butterfly calculator 23C-7. Out of (= MEMR6 + MEMR7−MEMR0−MEMR1), the control signal W7SEL is supplied so as to select the input data I7, and the selected data is output as the signal MEMW7 = I7.
[0253]
As described above, according to the 16-input 16-output computing device 20C according to the sixth embodiment, it is possible to obtain the same effects as those of the third embodiment described above.
[0254]
In the sixth embodiment, unary arithmetic units, for example, shift arithmetic units, can be arranged at the input stages of the data inputs MEMR0 to MEMR7, as in the third to fifth embodiments. is there.
In this case, the unary arithmetic units SFT0, SFT1, SFT2, SFT3, SFT4, SFT5, SFT6, and SFT7 have, for example, control signals SFT0MD, SFT1MD, SFT2MD, SFT3MD, SFT4MD, SFT5MD, SFT6MD, and SFT7MD as inputs, respectively. MEMR2, MEMR3, MEMR4, MEMR5, MEMR6, MEMR7 values are subjected to unary operations according to the values of control signals SFT0MD, SFT1MD, SFT2MD, SFT3MD, SFT4MD, SFT5MD, SFT6MD, and SFT7MD, and the result is input selection unit 22C- 0 to 22C-7 (RSEL0 to RSEL7) and output selection devices 24C-0 to 24C-7 (DSEL0 to DSEL7).
However, here, the unary arithmetic unit is an arithmetic unit realized by an operation that shifts an arbitrary bit to the left or right.
[0255]
Seventh embodiment
FIG. 9 is a block diagram showing a seventh embodiment of the arithmetic device according to the present invention.
[0256]
The arithmetic device 20D of FIG. 9 is a reconfigurable arithmetic device based on the configuration information, and is configured to perform a 16-input 16-output operation and perform a butterfly operation.
[0257]
The computing device 20D includes an input selection device (RSEL0) 22D-0, an input selection device (RSEL1) 22D-1, an input selection device (RSEL2) 22D-2, an input selection device (RSEL3) 22D-3, an input selection device ( RSEL4) 22D-4, input selection device (RSEL5) 22D-5, input selection device (RSEL6) 22D-6, input selection device (RSEL7) 22D-7, butterfly calculator (BTF0) 23D-0, butterfly calculator ( BTF1) 23D-1, butterfly calculator (BTF2) 23D-2, butterfly calculator (BTF3) 23D-3, butterfly calculator (BTF4) 23D-4, butterfly calculator (BTF5) 23D-5, butterfly calculator ( BTF6) 23D-6, output selection device (DSEL0) 24D-0, output selection device (DSEL1) 24D-1, output selection device (DSEL2) 24D-2, output selection device (DSEL3) 24D-3, output selection device (DSEL4) 24D-4, output selection device (DSEL5) 24D-5, output selection device (DSEL6) 24D-6, output selection device (DSEL7) 24D-7, output selection device (WSEL0) 25D-0, output selection device (WSEL1) 25D-1, output selection device (WSEL2) 25D-2, output selection device (WSEL3) 25D-3, output selection device (WSEL4) 25D-4, output selection device (WSEL5) 25D-5, output selection device (WSEL6) 25D-6, and output selection device (WSEL7) 25D-7.
[0258]
The arithmetic unit 20D includes data inputs MEMR0, MEMR1, MEMR2, MEMR3, MEMR4, MEMR5, MEMR6, MEMR7, I0, I1, I2, I3, I4, I5, I6, I7, and data outputs MEMW0, MEMW1, MEMW2, and so on. MEMW3, MEMW4, MEMW5, MEMW6, MEMW7, D0, D1, D2, D3, D4, D5, D6, D7, and control signals BTFMD0, BTFMD1, BTFMD2, BTFMD3, BTFMD4, BTFMD5 for reconfiguration BTFMD6, R0SEL, R1SEL, R2SEL, R3SEL, R4SEL, R5SEL, R6SEL, R7SEL, W0SEL, W1SEL, W2SEL, W3SEL, W4SEL, W5SEL, W6SEL, W7SEL, D SEL, D1SEL, D2SEL, D3SEL, D4SEL, D5SEL, D6SEL, is D7SEL supplied.
[0259]
The input selection device 22D-0 selects either the data input MEMR0 or the data input I0 according to the control signal R0SEL, and the signal r0sel It outputs to butterfly computing unit 23D-0 as out.
[0260]
The input selection device 22D-1 selects either the data input MEMR1 or the data input I1 according to the control signal R1SEL, and outputs the signal r1sel. It outputs to butterfly computing unit 23D-0 as out.
[0261]
The input selection device 22D-2 selects one of the data input MEMR2 and the data input I2 according to the control signal R2SEL, and outputs a signal r2sel. As out, it outputs to the butterfly computing unit 23D-1.
[0262]
The input selection device 22D-3 selects either the data input MEMR3 or the data input I3 in response to the control signal R3SEL, and outputs the signal r3sel. As out, it outputs to the butterfly computing unit 23D-1.
[0263]
The input selection device 22D-4 selects one of the data input MEMR4 and the data input I4 according to the control signal R4SEL, and outputs a signal r4sel. It outputs to butterfly computing unit 23D-2 as out.
[0264]
The input selection device 22D-5 selects either the data input MEMR5 or the data input I5 in response to the control signal R5SEL, and outputs the signal r5sel. It outputs to butterfly computing unit 23D-2 as out.
[0265]
The input selection device 22D-6 selects either the data input MEMR6 or the data input I6 in response to the control signal R6SEL, and outputs the signal r6sel. It outputs to butterfly computing unit 23D-3 as out.
[0266]
The input selection device 22D-7 selects either the data input MEMR7 or the data input I7 in response to the control signal R7SEL, and the signal r7sel It outputs to butterfly computing unit 23D-3 as out.
[0267]
The butterfly computing unit 23D-0 receives the output signal r0sel of the input selection device 22D-0 at the input terminal DA. out is input, and the output signal r1sel of the input selection device 22D-1 is input to the input terminal DB. out is input, an operation according to the instruction of the control signal BTFMD0 supplied to the control terminal CTL is performed, two operation results are obtained, and one operation result is output from the output terminal OA to the signal btf0a. out is output to the butterfly calculator 23D-4, the output selectors 24D-0 and 25D-0, and the other calculation result is output from the output terminal OB to the signal btf0b. The output is output to the output selection devices 24D-1 and 25D-1.
[0268]
The butterfly computing unit 23D-1 receives the output signal r2sel of the input selection device 22D-2 at the input terminal DA. out is input, and the output signal r3sel of the input selection device 22D-3 is input to the input terminal DB. out is input, an operation is performed according to an instruction of the control signal BTFMD1 supplied to the control terminal CTL, two operation results are obtained, and one operation result is output from the output terminal OA to the signal btf1a. is output to the butterfly calculator 23D-4, the output selectors 24D-2 and 25D-2, and the other calculation result is output from the output terminal OB to the signal btf1b. It outputs to output selection apparatus 24D-3 and 25D-3 as out.
[0269]
The butterfly calculator 23D-2 receives the output signal r4sel of the input selection device 22D-4 at the input terminal DA. out is input, and the output signal r5sel of the input selection device 22D-5 is input to the input terminal DB. out is input, an operation according to the instruction of the control signal BTFMD2 supplied to the control terminal CTL is performed to obtain two operation results, and one operation result is obtained from the output terminal OA as a signal btf2a is output to the butterfly calculator 23D-5, the output selectors 24D-4, and 25D-4, and the other calculation result is output from the output terminal OB to the signal btf2b. It outputs to output selection device 24D-5 and 25D-5 as out.
[0270]
The butterfly computing unit 23D-3 receives the output signal r6sel of the input selection device 22D-6 at the input terminal DA. out is input, and the output signal r7sel of the input selection device 22D-7 is input to the input terminal DB. out is input, an operation is performed in accordance with the instruction of the control signal BTFMD3 supplied to the control terminal CTL, two operation results are obtained, and one operation result is output from the output terminal OA to the signal btf3a. output to the butterfly calculator 23D-5, the output selectors 24D-6, and 25D-6 as the out, and the other calculation result is output from the output terminal OB to the signal btf3b. It outputs to the output selection apparatus 24D-7 and 25D-7 as out.
[0271]
The butterfly calculator 23D-4 has an input signal DA at the input terminal DA and the output signal btf0a of the butterfly calculator 23D-0. out is input, and the output signal btf1a of the butterfly calculator 23D-1 is input to the input terminal DB. out is input, an operation according to the instruction of the control signal BTFMD4 supplied to the control terminal CTL is performed to obtain two operation results, and one operation result is obtained from the output terminal OA as a signal btf4a. out is output to the butterfly calculator 23D-6 and the output selectors 25D-0 and 25D-2, and the other calculation result is output from the output terminal OB to the signal btf4b. It outputs to the output selection apparatus 25D-1 and 25D-3 as out.
[0272]
The butterfly computing unit 23D-5 receives the output signal btf2a of the butterfly computing unit 23D-2 at the input terminal DA. out is input, and the output signal btf3a of the butterfly calculator 23D-3 is input to the input terminal DB. out is input, an operation according to the instruction of the control signal BTFMD5 supplied to the control terminal CTL is performed, two operation results are obtained, and one operation result is output from the output terminal OA to the signal btf5a. output to the butterfly calculator 23D-6 and the output selectors 25D-4 and 25D-6 as the out, and the other calculation result is output from the output terminal OB to the signal btf5b. It outputs to the output selection apparatus 25D-5 and 25D-7 as out.
[0273]
The butterfly calculator 23D-6 has an output signal btf4a of the butterfly calculator 23D-4 at the input terminal DA. out is input, and the output signal btf5a of the butterfly calculator 23D-5 is input to the input terminal DB. out is input, an operation according to the instruction of the control signal BTFMD6 supplied to the control terminal CTL is performed, two operation results are obtained, and one operation result is output from the output terminal OA to the signal btf6a. output to the output selection devices 25D-0, 25D-2, 25D-4, and 25D-6 as out, and the other operation result is output from the output terminal OB to the signal btf6b. It is output to the output selection devices 25D-1, 25D-3, 25D-5, and 25D-7 as out.
[0274]
Specifically, the butterfly calculator 23D-1 (l = 0, 1, 2, 3) selectively performs any of the following calculations depending on the value of the control signal BTFMD1.
[0275]
## EQU11 ##
Figure 0003846196
[0276]
The butterfly calculator 23D-4 selectively performs any of the following calculations depending on the value of the control signal BTFMD4.
[0277]
[Expression 12]
Figure 0003846196
[0278]
The butterfly calculator 23D-5 selectively performs any of the following calculations depending on the value of the control signal BTFMD5.
[0279]
[Formula 13]
Figure 0003846196
[0280]
In response to the control signal D0SEL, the output selection device 24D-0 outputs the data input MEMR0 and the output signal btf0a of the butterfly calculator 23D-0. Either out is selected and output as a signal D0.
[0281]
In response to the control signal D1SEL, the output selection device 24D-1 outputs the data input MEMR1 and the output signal btf0b of the butterfly calculator 23D-0. Either out is selected and output as the signal D1.
[0282]
In response to the control signal D2SEL, the output selection device 24D-2 outputs the data input MEMR2 and the output signal btf1a of the butterfly calculator 23D-1. Either out is selected and output as the signal D2.
[0283]
In response to the control signal D3SEL, the output selection device 24D-3 outputs the data input MEMR3 and the output signal btf1b of the butterfly calculator 23D-1. Either out is selected and output as a signal D3.
[0284]
The output selection device 24D-4 receives the data input MEMR4 and the output signal btf2a of the butterfly calculator 23D-2 according to the control signal D4SEL. Either out is selected and output as the signal D4.
[0285]
In response to the control signal D5SEL, the output selection device 24D-5 receives the data input MEMR5 and the output signal btf2b of the butterfly calculator 23D-2. Either out is selected and output as the signal D5.
[0286]
In response to the control signal D6SEL, the output selection device 24D-6 outputs the data input MEMR6 and the output signal btf3a of the butterfly calculator 23D-3. Either out is selected and output as a signal D6.
[0287]
In response to the control signal D7SEL, the output selection device 24D-7 outputs the data input MEMR7 and the output signal btf3b of the butterfly calculator 23D-3. Either out is selected and output as a signal D7.
[0288]
In response to the control signal W0SEL, the output selection device 25D-0 outputs the data input I0 and the output signal btf0a of the butterfly calculator 23D-0. out and the output signal btf4a of the butterfly calculator 23D-4 out and the output signal btf6a of the butterfly calculator 23D-6 Either out is selected and output as the signal MEMW0.
[0289]
In response to the control signal W1SEL, the output selection device 25D-1 receives the data input I1 and the output signal btf0b of the butterfly calculator 23D-0. out and the output signal btf4b of the butterfly calculator 23D-4 out and the output signal btf6b of the butterfly calculator 23D-6 Either out is selected and output as the signal MEMW1.
[0290]
In response to the control signal W2SEL, the output selection device 25D-2 outputs the data input I2 and the output signal btf1a of the butterfly calculator 23D-1. out and the output signal btf4a of the butterfly calculator 23D-4 out and the output signal btf6a of the butterfly calculator 23D-6 Either out is selected and output as the signal MEMW2.
[0291]
In response to the control signal W3SEL, the output selection device 25D-3 outputs the data input I3 and the output signal btf1b of the butterfly calculator 23D-1. out and the output signal btf4b of the butterfly calculator 23D-4 out and the output signal btf6b of the butterfly calculator 23D-6 Either out is selected and output as the signal MEMW3.
[0292]
In response to the control signal W4SEL, the output selection device 25D-4 selects the data input I4 and the output signal btf2a of the butterfly calculator 23D-2. out and the output signal btf5a of the butterfly calculator 23D-5 out and the output signal btf6a of the butterfly calculator 23D-6 Either out is selected and output as the signal MEMW4.
[0293]
In response to the control signal W5SEL, the output selection device 25D-5 receives the data input I5 and the output signal btf2b of the butterfly calculator 23D-2. out and the output signal btf5b of the butterfly calculator 23D-5 out and the output signal btf6b of the butterfly calculator 23D-6 Either out is selected and output as the signal MEMW5.
[0294]
In response to the control signal W6SEL, the output selection device 25D-6 outputs the data input I6 and the output signal btf3a of the butterfly calculator 23D-3. out and the output signal btf5a of the butterfly calculator 23D-5 out and the output signal btf6a of the butterfly calculator 23D-6 Either out is selected and output as the signal MEMW6.
[0295]
In response to the control signal W7SEL, the output selection device 25D-7 outputs the data input I7 and the output signal btf3b of the butterfly calculator 23D-3. out and the output signal btf5b of the butterfly calculator 23D-5 out and the output signal btf6b of the butterfly calculator 23D-6 Either out is selected and output as the signal MEMW7.
[0296]
Next, the operation according to the above configuration will be described.
Here, for example, the operation of the entire apparatus will be described by taking as an example the case of obtaining all outputs D0 to D7 and MEMW0 to MEMW7 as follows.
D0 = MEMR0 + MEMR1,
D1 = MEMR1,
D2 = MEMR2,
D3 = MEMR2-MEMR3
D4 = MEMR4 + MEMR5
D5 = MEMR5
D6 = MEMR6 + MEMR7,
D7 = MEMR6-MEMR7,
MEMW0 = I0
MEMW1 = MEMR0 + MEMR1-MEMR2-MEMR3
MEMW2 = MEMR0 + MEMR1 + MEMR2 + MEMR3
MEMW3 = I3
MEMW4 = MEMR0 + MEMR1 + MEMR2 + MEMR3 + MEMR4 + MEMR5 + MEMR6 + MEMR7,
MEMW5 = MEMR4 + MEMR5-MEMR6-MEMR7,
MEMW6 = I6
MEMW7 = MEMR0 + MEMR1 + MEMR2 + MEMR3-MEMR4-MEMR5-MEMR6-MEMR7
[0297]
In this case, the input selection device 22D-0 is controlled to select the data input MEMR0 by the control signal R0SEL, and the selected data MEMR0 is the signal r0sel. As out, it is supplied to the input terminal DA of the butterfly computing unit 23D-0.
The input selection device 22D-1 is controlled to select MEMR1 by the control signal R1SEL, and the selected data MEMR1 is the signal r1sel. As out, it is supplied to the input terminal DB of the butterfly computing unit 23D-0.
[0298]
The input selection device 22D-2 is controlled to select MEMR2 by the control signal R2SEL, and the selected data MEMR2 is the signal r2sel. As out, it is supplied to the input terminal DA of the butterfly calculator 23D-1.
The input selection device 22D-3 is controlled to select MEMR3 by the control signal R3SEL, and the selected data MEMR3 is the signal r3sel. As out, it is supplied to the input terminal DB of the butterfly computing unit 23D-1.
[0299]
The input selection device 22D-4 is controlled to select MEMR4 by the control signal R4SEL, and the selected data MEMR4 is the signal r4sel. As out, it is supplied to the input terminal DA of the butterfly calculator 23D-2.
The input selection device 22D-5 is controlled to select MEMR5 by the control signal R5SEL, and the selected data MEMR5 is the signal r5sel. As out, it is supplied to the input terminal DB of the butterfly computing unit 23D-2.
[0300]
Further, the input selection device 22D-6 is controlled to select MEMR6 by the control signal R6SEL, and the selected data MEMR6 is the signal r6sel. As out, it is supplied to the input terminal DA of the butterfly calculator 23D-3.
The input selection device 22D-7 is controlled to select MEMR7 by the control signal R7SEL, and the selected data MEMR7 is the signal r7sel. As out, it is supplied to the input terminal DB of the butterfly computing unit 23D-3.
[0301]
The butterfly calculator 23D-0 is set to a mode in which OA = DA + DB and OB = DA-DB are calculated by the control signal BTFMD0 supplied to the control terminal CTL.
Thereby, in the butterfly computing unit 23D-0, the data MEMR0 supplied to the input terminal DA and the data MEMR1 supplied to the input terminal DB are added, and the result (MEMR0 + MEMR1) is output from the output terminal OA to the signal btf0a. As out, it is output to the input terminal DA of the butterfly calculator 23D-4 and the output selectors 24D-0 and 25D-0.
In the butterfly calculator 23D-0, the difference between the data MEMR0 supplied to the input terminal DA and the data MEMR1 supplied to the input terminal DB is taken, and the result (MEMR0-MEMR1) is the output terminal OB. To signal btf0b As out, it is output to the output selection devices 24D-1 and 25D-1.
[0302]
The butterfly calculator 23D-1 is set to a mode in which OA = DA + DB and OB = DA-DB are calculated by the control signal BTFMD1 supplied to the control terminal CTL.
Thereby, in the butterfly computing unit 23D-1, the data MEMR2 supplied to the input terminal DA and the data MEMR3 supplied to the input terminal DB are added, and the result (MEMR2 + MEMR3) is output from the output terminal OA to the signal btf1a. As out, it is output to the input terminal DB of the butterfly calculator 23D-4 and the output selectors 24D-2 and 25D-2.
In the butterfly calculator 23D-1, the difference between the data MEMR2 supplied to the input terminal DA and the data MEMR3 supplied to the input terminal DB is taken, and the result (MEMR2-MEMR3) is the output terminal OB. To signal btf1b As out, it is output to the output selection devices 24D-3 and 25D-3.
[0303]
The butterfly computing unit 23D-2 is set to a mode in which OA = DA + DB and OB = DA-DB are calculated by the control signal BTFMD2 supplied to the control terminal CTL.
Thereby, in the butterfly computing unit 23D-2, the data MEMR4 supplied to the input terminal DA and the data MEMR5 supplied to the input terminal DB are added, and the result (MEMR4 + MEMR5) is output from the output terminal OA to the signal btf2a. As out, it is output to the input terminal DA of the butterfly calculator 23D-5 and the output selectors 24D-4 and 25D-4.
In the butterfly computing unit 23D-2, the difference between the data MEMR4 supplied to the input terminal DA and the data MEMR5 supplied to the input terminal DB is taken, and the result (MEMR4-MEMR5) is the output terminal OB. To signal btf2b As out, it is output to the output selection devices 24D-5 and 25D-5.
[0304]
The butterfly computing unit 23D-3 is set to a mode in which OA = DA + DB and OB = DA-DB are calculated by the control signal BTFMD3 supplied to the control terminal CTL.
Thereby, in the butterfly computing unit 23D-3, the data MEMR6 supplied to the input terminal DA and the data MEMR7 supplied to the input terminal DB are added, and the result (MEMR6 + MEMR7) is output from the output terminal OA to the signal btf3a. As out, it is output to the input terminal DB of the butterfly calculator 23D-5 and the output selectors 24D-6 and 25D-6.
In the butterfly computing unit 23D-3, the difference between the data MEMR6 supplied to the input terminal DA and the data MEMR6 supplied to the input terminal DB is taken, and the result (MEMR6-MEMR7) is the output terminal OB. To signal btf3b As out, it is output to the output selection devices 24D-7 and 25D-7.
[0305]
The butterfly computing unit 23D-4 is set to a mode in which OA = DA + DB and OB = DA-DB are calculated by the control signal BTFMD4 supplied to the control terminal CTL.
Thereby, in the butterfly calculator 23D-4, the data (MEMR0 + MEMR1) supplied to the input terminal DA and the data (MEMR2 + MEMR3) supplied to the input terminal DB are added, and the result (MEMR0 + MEMR1 + MEMR2 + MEMR3) is output terminal. Signal btf4a from OA As out, it is output to the input terminal DA and the output selection devices 25D-0 and 25D-2 of the butterfly computing unit 23D-6.
In the butterfly computing unit 23D-4, the difference between the data (MEMR0 + MEMR1) supplied to the input terminal DA and the data (MEMR2 + MEMR3) supplied to the input terminal DB is taken, and the result (MEMR0 + MEMR1-MEMR2-) is obtained. MEMR3) is connected to the signal btf4b from the output terminal OB. As out, it is output to the output selection devices 25D-1 and 25D-3.
[0306]
The butterfly computing unit 23D-5 is set to a mode in which OA = DA + DB and OB = DA-DB are calculated by the control signal BTFMD5 supplied to the control terminal CTL.
Thereby, in the butterfly calculator 23D-5, the data (MEMR4 + MEMR5) supplied to the input terminal DA and the data (MEMR6 + MEMR7) supplied to the input terminal DB are added, and the result (MEMR4 + MEMR5 + MEMR6 + MEMR7) is output terminal. Signal btf5a from OA As out, it is output to the input terminal DB of the butterfly calculator 23D-6 and the output selection devices 25D-4 and 25D-6.
In the butterfly computing unit 23D-5, the difference between the data (MEMR4 + MEMR5) supplied to the input terminal DA and the data (MEMR6 + MEMR7) supplied to the input terminal DB is taken, and the result is (MEMR4 + MEMR5-MEMR6-). MEMR7) receives the signal btf5b from the output terminal OB. As out, it is output to the output selection devices 25D-5 and 25D-7.
[0307]
The butterfly calculator 23D-6 is set to a mode in which OA = DA + DB and OB = DA-DB are calculated by the control signal BTFMD6 supplied to the control terminal CTL.
Thereby, in the butterfly calculator 23D-6, the data (MEMR0 + MEMR1 + MEMR2 + MEMR3) supplied to the input terminal DA and the data (MEMR4 + MEMR5 + MEMR6 + MEMR7) supplied to the input terminal DB are added, and the result is (MEMR0 + MEMR1 + MEMR5 + MEMR5 + MEMR5 + MEMR5 + MEMR5 + MEMR4 + MEMR4 + Signal btf6a from OA As out, it is output to the output selection devices 25D-0, 25D-2, 25D-4 and 25D-6.
In the butterfly calculator 23D-6, the difference between the data supplied to the input terminal DA (MEMR0 + MEMR1 + MEMR2 + MEMR3) and the data supplied to the input terminal DB (MEMR4 + MEMR5 + MEMR6 + MEMR7) is taken, and the result is (MEMR0 + MEMR1 + MEMR2 + MEMR3 + MEMR4−MEMR4−MEMR4−MEMR4−MEMR4−MEMR4−MEMR4−MEMR4−MEMR4). MEMR5-MEMR6-MEMR7) is connected to the signal btf6b from the output terminal OB. As out, it is output to the output selection devices 25D-1, 25D-3, 25D-5 and 25D-7.
[0308]
In the output selection device 24D-0, the data input MEMR0 and the output signal btf0a of the butterfly calculator 23D-0 out (= MEMR0 + MEMR1), the output signal btf0a of the butterfly calculator 23D-0 A control signal D0SEL is supplied so as to select out, and the selected data is output as a signal D0 = MEMR0 + MEMR1.
[0309]
In the output selection device 24D-1, the data input MEMR1 and the output signal btf0b of the butterfly calculator 23D-0 Out of (= MEMR0−MEMR1), the control signal D1SEL is supplied so as to select the data input MEMR1, and the selected data is output as the signal D1 = MEMR1.
[0310]
In the output selection device 24D-2, the data input MEMR2 and the output signal btf1a of the butterfly calculator 23D-1 Out of (= MEMR2 + MEMR3), the control signal D2SEL is supplied so as to select the data input MEMR2, and the selected data is output as the signal D2 = MEMR2.
[0311]
In the output selection device 24D-3, the data input MEMR3 and the output signal btf1b of the butterfly calculator 23D-1 out (= MEMR2−MEMR3), the output signal btf1b of the butterfly calculator 23D-1 The control signal D3SEL is supplied so as to select out, and the selected data is output as signal D3 = MEMR2−MEMR3.
[0312]
In the output selection device 24D-4, the data input MEMR4 and the output signal btf2a of the butterfly calculator 23D-2 out (= MEMR4 + MEMR5), the output signal btf2a of the butterfly calculator 23D-2 The control signal D4SEL is supplied so as to select out, and the selected data is output as signal D4 = MEMR4 + MEMR5.
[0313]
In the output selection device 24D-5, the data input MEMR5 and the output signal btf2b of the butterfly calculator 23D-2 Out of (= MEMR4−MEMR5), the control signal D5SEL is supplied so as to select the data input MEMR5, and the selected data is output as the signal D5 = MEMR5.
[0314]
In the output selection device 24D-6, the data input MEMR6 and the output signal btf3a of the butterfly calculator 23D-3 out (= MEMR6 + MEMR7), the output signal btf3a of the butterfly calculator 23D-3 A control signal D6SEL is supplied so as to select out, and the selected data is output as signal D6 = MEMR6 + MEMR7.
[0315]
In the output selection device 24D-7, the data input MEMR7 and the output signal btf3b of the butterfly calculator 23D-3 out (= MEMR6-MEMR7), the output signal btf3b of the butterfly calculator 23D-3 A control signal D7SEL is supplied so as to select out, and the selected data is output as signal D7 = MEMR6-MEMR7.
[0316]
Further, in the output selection device 25D-0, the data input I0 and the output signal btf0a of the butterfly calculator 23D-0. out (= MEMR0 + MEMR1) and the output signal btf4a of the butterfly calculator 23D-4 out (= MEMR0 + MEMR1 + MEMR2 + MEMR3) and the output signal btf6a of the butterfly calculator 23D-6 Out of (= MEMR0 + MEMR1 + MEMR2 + MEMR3 + MEMR4 + MEMR5 + MEMR6 + MEMR7), the control signal W0SEL is supplied so as to select the input data I0, and the selected data is output as the signal MEMW0 = I0.
[0317]
Further, in the output selection device 25D-1, the data input I1 and the output signal btf0b of the butterfly calculator 23D-0 out (= MEMR0-MEMR1) and the output signal btf4b of the butterfly calculator 23D-4 out (= MEMR0 + MEMR1-MEMR2-MEMR3) and the output signal btf6b of the butterfly calculator 23D-6 out (= MEMR0 + MEMR1 + MEMR2 + MEMR3-MEMR4-MEMR5-MEMR6-MEMR7), the output signal btf4b of the butterfly calculator 23D-4 The control signal W1SEL is supplied so as to select out, and the selected data is output as a signal MEMW1 = MEMR0 + MEMR1-MEMR2-MEMR3.
[0318]
In the output selection device 25D-2, the data input I2 and the output signal btf1a of the butterfly calculator 23D-1 out (= MEMR2 + MEMR3) and the output signal btf4a of the butterfly calculator 23D-4 out (= MEMR0 + MEMR1 + MEMR2 + MEMR3) and the output signal btf6a of the butterfly calculator 23D-6 out (= MEMR0 + MEMR1 + MEMR2 + MEMR3 + MEMR4 + MEMR5 + MEMR6 + MEMR7) The output signal btf4a of the butterfly calculator 23D-4 The control signal W2SEL is supplied so as to select out, and the selected data is output as a signal MEMW2 = MEMR0 + MEMR1 + MEMR2 + MEMR3.
[0319]
In the output selection device 25D-3, the data input I3 and the output signal btf0b of the butterfly calculator 23D-1 out (= MEMR2-MEMR3) and the output signal btf4b of the butterfly calculator 23D-4 out (= MEMR0 + MEMR1-MEMR2-MEMR3) and the output signal btf6b of the butterfly calculator 23D-6 Out of (= MEMR0 + MEMR1 + MEMR2 + MEMR3-MEMR4-MEMR5-MEMR6-MEMR7), the control signal W3SEL is supplied so as to select the input data I3, and the selected data is output as the signal MEMW3 = I3.
[0320]
In the output selection device 25D-4, the data input I4 and the output signal btf2a of the butterfly calculator 23D-2 are displayed. out (= MEMR4 + MEMR5) and the output signal btf5a of the butterfly calculator 23D-5 out (= MEMR4 + MEMR5 + MEMR6 + MEMR7) and the output signal btf6a of the butterfly calculator 23D-6 out (= MEMR0 + MEMR1 + MEMR2 + MEMR3 + MEMR4 + MEMR5 + MEMR6 + MEMR7) The output signal btf6a of the butterfly calculator 23D-6 The control signal W4SEL is supplied so as to select out, and the selected data is output as a signal MEMW4 = MEMR0 + MEMR1 + MEMR2 + MEMR3 + MEMR4 + MEMR5 + MEMR6 + MEMR7.
[0321]
In the output selection device 25D-5, the data input I5 and the output signal btf2b of the butterfly calculator 23D-2 are displayed. out (= MEMR4-MEMR5) and the output signal btf5b of the butterfly calculator 23D-5 out (= MEMR4 + MEMR5-MEMR6-MEMR7) and the output signal btf6b of the butterfly calculator 23D-6 out (= MEMR0 + MEMR1 + MEMR2 + MEMR3-MEMR4-MEMR5-MEMR6-MEMR7), the output signal btf5b of the butterfly calculator 23D-5 A control signal W5SEL is supplied so as to select out, and the selected data is output as a signal MEMW5 = MEMR4 + MEMR5-MEMR6-MEMR7.
[0322]
In the output selection device 25D-6, the data input I6 and the output signal btf3a of the butterfly calculator 23D-3 are displayed. out (= MEMR6 + MEMR7) and the output signal btf5a of the butterfly calculator 23D-5 out (= MEMR4 + MEMR5 + MEMR6 + MEMR7) and the output signal btf6a of the butterfly calculator 23D-6 Out of (= MEMR0 + MEMR1 + MEMR2 + MEMR3 + MEMR4 + MEMR5 + MEMR6 + MEMR7), the control signal W6SEL is supplied so as to select the data input I6, and the selected data is output as the signal MEMW6 = I6.
[0323]
In the output selection device 25D-7, the data input I7 and the output signal btf3b of the butterfly calculator 23D-3 are displayed. out (= MEMR6-MEMR7) and the output signal btf5b of the butterfly calculator 23D-5 out (= MEMR4 + MEMR5-MEMR6-MEMR7) and the output signal btf6b of the butterfly calculator 23D-6 out (= MEMR0 + MEMR1 + MEMR2 + MEMR3-MEMR4-MEMR5-MEMR6-MEMR7), the output signal btf6b of the butterfly calculator 23D-6 The control signal W7SEL is supplied so as to select out, and the selected data is output as a signal MEMW7 = MEMR0 + MEMR1 + MEMR2 + MEMR3-MEMR4-MEMR5-MEMR6-MEMR7.
[0324]
As described above, according to the 16-input 16-output arithmetic unit 20D according to the seventh embodiment, the same effects as those of the third embodiment described above can be obtained.
[0325]
In the seventh embodiment, unary arithmetic units, for example, shift arithmetic units, can be arranged at the input stages of the data inputs MEMR0 to MEMR7, as in the third to fifth embodiments described above. is there.
In this case, the unary arithmetic units SFT0, SFT1, SFT2, SFT3, SFT4, SFT5, SFT6, and SFT7 have, for example, control signals SFT0MD, SFT1MD, SFT2MD, SFT3MD, SFT4MD, SFT5MD, SFT6MD, and SFT7MD as inputs, respectively. MEMR2, MEMR3, MEMR4, MEMR5, MEMR6, MEMR7 values are subjected to unary operations according to the values of control signals SFT0MD, SFT1MD, SFT2MD, SFT3MD, SFT4MD, SFT5MD, SFT6MD, and SFT7MD, and the result is input selection device 22D- 0 to 22D-7 (RSEL0 to RSEL7) and output selection devices 24D-0 to 24D-7 (DSEL0 to DSEL7).
However, here, the unary arithmetic unit is an arithmetic unit realized by an operation that shifts an arbitrary bit to the left or right.
[0326]
Eighth embodiment
FIG. 10 is a block diagram showing an eighth embodiment of the arithmetic device according to the present invention.
The arithmetic device 30 in FIG. 10 includes a first arithmetic device including the ALU and MAC according to the first and second embodiments described above, and a second arithmetic unit including butterfly arithmetic units according to the third to seventh embodiments. By reconfigurable connection with the arithmetic unit, signal processing arithmetic can be efficiently executed in one cycle of data reading, arithmetic and data writing.
[0327]
As shown in FIG. 10, the arithmetic device 30 according to the eighth embodiment includes a first arithmetic device (PU) 31 including an ALU and a MAC, and a second arithmetic device (BTFL) 32 including a butterfly arithmetic unit. As a main component.
[0328]
The first arithmetic unit 31 has, for example, the same configuration as the arithmetic unit of FIG. 4 in which four arithmetic units of FIG. , COE2, COE3 and data outputs OT0, OT1, OT2, OT3, and control signals CTRL0, CTRL1, CTRL2, CTRL3 for reconfiguration are supplied.
Each control signal includes arithmetic control signals ASEL, BSEL, ESEL, MACMD, ALUMD, RNDMD, SATDD, OSFMD, ACCMD, and delay control signals C0DL, C1DL, C2DL, C3DL, D0DL, D1DL, D2DL, D3DL. It is.
[0329]
The second arithmetic unit 32 has data inputs MEMR0, MEMR1, MEMR2, and MEMR3, arithmetic result inputs I0, I1, I2, and I3, data outputs D0, D1, D2, and D3, and MEMW0, MEMW1, MEMW2, and MEMW3. A control signal CTRLB for reconfiguration is supplied.
For example, taking the case of the fourth embodiment as an example, the control signals CTRLB include SFT0MD, R0SEL, BTFMD0, D0SEL, W0SEL, SFT1MD, R1SEL, BTFMD1, D1SEL, W1SEL, SFT2MD, R2SEL, BTFMD2, D2SEL, And SFT3MD, R3SEL, BTFMD3, D3SEL, and W3SEL.
[0330]
Then, the data R0 is supplied to the data input MEMR0, the data R1 is supplied to the data input MEMR1, the data R2 is supplied to the data input MEMR2, and the data R3 is supplied to the data input MEMR3.
The data output D0 of the second arithmetic unit 32 is supplied to the data input D0I of the first arithmetic unit 31, the data output D1 of the second arithmetic unit 32 is supplied to the data input D1I of the first arithmetic unit 31, The data output D2 of the second arithmetic device 32 is supplied to the data input D2I of the first arithmetic device 31, and the data output D3 of the second arithmetic device 32 is supplied to the data input D3I of the first arithmetic device 31. .
The data output OT0 of the first arithmetic device 31 is supplied to the data input I0 of the second arithmetic device 32, and the data output OT1 of the first arithmetic device 31 is supplied to the data input I1 of the second arithmetic device 32. The data output OT2 of the first arithmetic device 31 is supplied to the data input I2 of the second arithmetic device 32, and the data output OT3 of the first arithmetic device 31 is supplied to the data input I3 of the second arithmetic device 32. Is done.
Data W0 is output from the data output MEMW0 of the second arithmetic unit 32, data W1 is output from the data output MEMW1, data W2 is output from the data output MEMW2, and data W3 is output from the data output MEMW3.
[0331]
The first arithmetic unit 31 is configured to be able to execute the following arithmetic processes simultaneously (in parallel).
[0332]
[Expression 14]
OT0 = ((C0I‖C1I‖C2I‖C3I‖D0I‖D1I‖D2I‖D3I‖OT1‖OT2‖OT3‖0) op0 (D0I‖D1I‖D2I‖D3I‖OT0) op1 (D0I‖D1I‖D2I‖D3I‖ OT1‖OT2‖OT3‖0)), and
OT1 = ((C0I‖C1I‖C2I‖C3I‖D0I‖D1I‖D2I‖D3I‖OT1‖OT2‖OT3‖0) op2 (D0I‖D1I‖D2I‖D3I‖OT0) op3 (D0I‖D1I‖D2I‖D3I‖ OT2‖OT3‖OT0‖0)), and
OT2 = ((C0I‖C1I‖C2I‖C3I‖D0I‖D1I‖D2I‖D3I‖OT1‖OT2‖OT3‖0) op4 (D0I‖D1I‖D2I‖D3I‖OT0) op5 (D0I‖D1I‖D2I‖D3I‖ OT3‖OT0‖OT1‖0)), and
OT3 = ((C0I‖C1I‖C2I‖C3I‖D0I‖D1I‖D2I‖D3I‖OT1‖OT2‖OT3‖0) op6 (D0I‖D1I‖D2I‖D3I‖OT0) op7 (D0I‖D1I‖D2I‖D3I‖ OT0‖OT1‖OT2‖0))
[0333]
However, ‖ represents a selection operation, and op0 to op7 represent operators. Here, the operators op0 to op7 are defined by any of the following.
[0334]
[Expression 15]
AopB = A * B,
AopB = A * -B,
AopB = A + B,
AopB = A−B,
AopB = A & B,
AopB = A | B,
AopB = A∧B,
[0335]
The second arithmetic device 32 is configured to be able to execute the following arithmetic processing simultaneously (in parallel).
[0336]
[Expression 16]
MEMW0 = ((MEMR0‖I0) op0 (MEMR1‖I1)) ‖I0, and
MEMW1 = ((MEMR0‖I0) op1 (MEMR1‖I1)) ‖I1, and
MEMW2 = ((MEMR2‖I2) op2 (MEMR3‖I3)) ‖I2, and
MEMW3 = ((MEMR2‖I2) op3 (MEMR3‖I3)) ‖I3, and
D0 = ((MEMR0‖I0) op4 (MEMR1‖I1)) ‖MEMR0, and
D1 = ((MEMR0‖I0) op5 (MEMR1‖I1)) ‖MEMR1, and
D2 = ((MEMR2‖I2) op6 (MEMR3‖I3)) ‖MEMR2, and
D3 = ((MEMR2‖I2) op7 (MEMR3‖I3)) ‖MEMR3
[0337]
Again, ‖ represents a selection operation and op0 to op7 represent operators. Here, the operators op0 to op7 are defined by any of the following.
[0338]
[Expression 17]
AopB = A + B,
AopB = A−B,
AopB = −A + B,
AopB = −A−B,
AopB = A,
AopB = −A,
AopB = B,
AopB = −B,
[0339]
Next, with respect to the operation of the arithmetic unit in FIG. 10, the first arithmetic unit 31 has the same configuration as the parallel arithmetic unit in FIG. 4, and the second arithmetic unit 32 has the same configuration as the unit in FIG. A case will be described as an example.
[0340]
Here, it is assumed that the following calculation is executed.
W0 = R0 + R1,
W1 = COE0 * (R0-R1) -COE1 * (R2-R3),
W2 = R2 + R3
W3 = COE2 * (R0-R1) + COE3 * (R2-R3)
[0341]
First, in the second arithmetic unit 32, as shown in FIG. 6, for example, the shift amounts of the shift arithmetic units 21A-0, 21A-1, 21A-2, 21A-3 are controlled by the control signals SFT0MD, SFT1MD, SFT2MD, SFT3MD. Set to zero.
Therefore, the output signal sft0 of the shift calculator 21A-0 out becomes MEMR0, that is, data R0, and is supplied to the input selection device 22A-0 and the output selection device 24A-0.
Similarly, the output signal sft1 of the shift calculator 21A-1 out becomes MEMR1, that is, R1, and is supplied to the input selection device 22A-1 and the output selection device 24A-1.
Output signal sft2 of shift computing unit 21A-2 out becomes MEMR2, that is, R2, and is supplied to the input selection device 22A-2 and the output selection device 24A-2.
Then, the output signal sft3 of the shift computing unit 21A-3 out becomes MEMR3, that is, R3, and is supplied to the input selection device 22A-3 and the output selection device 24A-3.
[0342]
The input selection device 22A-0 is controlled by the control signal R0SEL so as to select the output signal R0 of the shift computing unit 21A-0, and the selected data R0 is the signal r0sel. As out, it is supplied to the input terminal DA of the butterfly calculator 23A-0.
The input selection device 22A-1 is controlled to select the output signal R1 of the shift computing unit 21A-1 by the control signal R1SEL, and the selected data R1 is the signal r1sel. As out, it is supplied to the input terminal DB of the butterfly calculator 23A-0.
[0343]
The input selection device 22A-2 is controlled to select the output signal R2 of the shift calculator 21A-2 by the control signal R2SEL, and the selected data R2 is the signal r2sel. As out, it is supplied to the input terminal DA of the butterfly calculator 23A-1.
The input selection device 22A-3 is controlled to select the output signal R3 of the shift computing unit 21A-3 by the control signal R3SEL, and the selected data R3 is the signal r3sel. As out, it is supplied to the input terminal DB of the butterfly calculator 23A-1.
[0344]
The butterfly computing unit 23A-0 is set to a mode in which OA = DA + DB and OB = DA-DB are calculated by the control signal BTFMD0 supplied to the control terminal CTL.
Thereby, in the butterfly computing unit 23A-0, the data R0 supplied to the input terminal DA and the data R1 supplied to the input terminal DB are added, and the result (R0 + R1) is output from the output terminal OA to the signal btf0a. As out, it is output to the output selection devices 24A-0 and 25A-0.
In the butterfly computing unit 23A-0, the difference between the data R0 supplied to the input terminal DA and the data R1 supplied to the input terminal DB is taken, and the result (R0-R1) is the output terminal OB. To signal btf0b As out, it is output to the output selection devices 24A-1 and 25A-1.
[0345]
Similarly, the butterfly calculator 23A-1 is set to a mode in which OA = DA + DB and OB = DA-DB are calculated by the control signal BTFMD1 supplied to the control terminal CTL.
Thereby, in the butterfly computing unit 23A-1, the data R2 supplied to the input terminal DA and the data R3 supplied to the input terminal DB are added, and the result (R2 + R3) is output from the output terminal OA to the signal btf1a. As out, it is output to the output selection devices 24A-2 and 25A-2.
In the butterfly calculator 23A-1, the difference between the data R2 supplied to the input terminal DA and the data R3 supplied to the input terminal DB is taken, and the result (R2-R3) is the output terminal OB. To signal btf1b As out, it is output to the output selection devices 24A-3 and 25A-3.
[0346]
In the second arithmetic unit 32, in the output selection unit 24A-1, the output signal (R1) of the shift arithmetic unit 21A-1 and the output signal btf0b of the butterfly arithmetic unit 23A-0 out (= MEMR0−MEMR1), the output signal btf0b of the butterfly calculator 23A-0 The control signal D1SEL is supplied so as to select out, and the data selected thereby is supplied to the data input D1I of the first arithmetic unit 31 as a signal D1 = R0-R1.
[0347]
Similarly, in the second arithmetic unit 32, in the output selection unit 24A-3, the output signal (R3) of the shift arithmetic unit 21A-3 and the output signal btf1b of the butterfly arithmetic unit 23A-1 out (= R2-R3), butterfly calculator 23A-1 output signal btf1b The control signal D3SEL is supplied so as to select out, and the data selected thereby is supplied as the signal D3 = R2-R3 to the data input D3I of the first arithmetic unit 31.
[0348]
In the first arithmetic unit 31, first, in the arithmetic unit 10A-0, control is performed so that an arithmetic operation result signal OT0 = COE0 * D1 is performed by the control signal CTL0.
[0349]
In this case, in the arithmetic unit 10A-0, the control signal ASEL is set so as to select the coefficient input COE0 and is supplied to the first selection unit 11.
Further, the control signal BSEL is set so as to select the data input D1I (= D1 = R0−R1) and supplied to the second selection device 12.
As a result, the coefficient COE0 is output from the first selection device 11 to the ALU 14 and the MAC 15 as the signal asel_out. Further, the data D1 (= R0−R1) is output from the second selection device 12 to the ALU 14 and the MAC 15 as the signal bsel_out.
[0350]
At this time, a control signal MACMD designating multiplication is supplied to the MAC 15. As a result, the MAC 15 multiplies the coefficient COE0 and the data D1, and as a result, the COE0 * D1 becomes the signal mac. It is output to the fourth selection device 16 as out.
The control signal ESEL is supplied to the fourth selection device 16 so as to select the output of the MAC 15. As a result, in the fourth selection device 16, the output signal mac of the MAC 15 out (COE0 * D1) is selected and the signal esel It is output to the register 17 as out (COE0 * D1).
The register 17 stores the calculation result COE0 * D1 of the MAC 15, and this stored data is stored in the calculation output terminal PE. As a calculation result signal OT0 from C, the cascade input PE of the arithmetic unit 10A-1 P0, cascade input PE of arithmetic unit 10A-2 P1 and cascade input PE of arithmetic device 10A-3 Output to P2.
[0351]
In the arithmetic unit 10A-0, the coefficients COE0 to COE3 delayed by a desired delay amount by the C0 FIFO 18-0 to C3 FIFO 18-3 are the coefficient output terminals PE. C0-PE Coefficient input terminal PE of the next stage arithmetic unit 10A-1 as coefficient outputs c00 to c30 from C3O C0I to PE The data D1 and D3 output to C3I and delayed by a desired delay amount by the D0 FIFO 19-1 and D3 FIFO 19-3 are output to the data output terminal PE. D1O, PE The data input terminal PE of the next stage arithmetic unit 10A-1 as data output d10, d30 from D3O D1I, ~ PE Is output to D3I.
[0352]
Next, in the arithmetic unit 10A-1, control is performed by the control signal CTL1 so that the arithmetic result signal OT1 = OT0−COE1 * D3 is performed.
[0353]
In this case, the control signal ASEL is supplied to the coefficient input terminal PE. The coefficient output c10 (COE1) of the arithmetic unit 10A-0 supplied to C1I is set to be selected and supplied to the first selection unit 11.
Further, the control signal BSEL is supplied to the data input terminal PE. The data output d10 (D3 = R2-R3) of the arithmetic unit 10A-0 supplied to D1I is set to be selected and supplied to the second selection unit 12.
Further, the control signal CSEL is input to the cascade input terminal PE. The operation result signal OT0 (COE0 * D1) of the operation device 10A-0 supplied to P0 is set to be selected and supplied to the third selection device 13.
As a result, the coefficient COE1 is output from the first selection device 11 to the ALU 14 and the MAC 15 as the signal asel_out. Further, the data D3 (= R2-R3) is output from the second selection device 12 to the ALU 14 and the MAC 15 as the signal bsel_out. In addition, the third input device 13 receives the cascade input data COE0 * D1 from the signal csel. It is output to the first selection device 11, ALU 14 and MAC 15 as out.
[0354]
At this time, a control signal MACMD designating multiplication / subtraction is supplied to the MAC 15. As a result, the MAC 15 multiplies the coefficient COE1 and the data D3, and as a result, subtracts the COE0 * D1 and the COE1 * D3. As a result, the multiplication / addition result (COE0 * D1-COE1 * D3) from the MAC 15 becomes the signal mac. It is output to the fourth selection device 16 as out.
The control signal ESEL is supplied to the fourth selection device 16 so as to select the output of the MAC 15. As a result, in the fourth selection device 16, the output signal mac of the MAC 15 out (COE0 * D1-COE1 * D3) is selected and the signal esel It is output to the register 17 as out.
The register 17 stores the calculation result of the MAC 15 (COE0 * D1-COE1 * D3), and this stored data is stored in the calculation output terminal PE. As a calculation result signal OT1 from C, the cascade input PE of the arithmetic unit 10A-0 P2, cascade input PE of arithmetic unit 10A-2 P0 and the cascade input PE of the arithmetic unit 10A-2 Output to P1.
Further, the calculation result signal OT1 indicating (COE0 * D1-COE1 * D3) of the calculation device 10A-1 is supplied to the data input I1 of the second calculation device 32 in FIG.
[0355]
In the arithmetic unit 10A-1, the coefficients COE0 to COE3 delayed by a desired delay amount by the C0 FIFO 18-0 to C3 FIFO 18-3 are the coefficient output terminals PE. C0-PE As coefficient outputs c01 to c31 from C3O, the coefficient input terminal PE of the next stage arithmetic unit 10A-2 C0I to PE The data D1 and D3 output to C3I and delayed by a desired delay amount by the D0 FIFO 19-1 and D3 FIFO 19-3 are output to the data output terminal PE. D1O, PE The data input terminal PE of the next stage arithmetic unit 10A-3 as data outputs d11 and d31 from D3O D1I, PE Is output to D3I.
[0356]
Next, in the arithmetic unit 10A-2, control is performed by the control signal CTL2 so that the arithmetic result signal OT2 = COE2 * D1 is performed.
[0357]
In this case, the control signal ASEL is supplied to the coefficient input terminal PE. The coefficient output c21 (COE2) of the arithmetic unit 10A-1 supplied to C2I is set to be selected and supplied to the first selection unit 11.
Further, the control signal BSEL is supplied to the data input terminal PE. The data output d11 (D1) of the arithmetic unit 10A-1 supplied to D1I is set to be selected and supplied to the second selection unit 12.
As a result, the coefficient COE2 is output from the first selection device 11 to the ALU 14 and the MAC 15 as the signal asel_out. Further, the data D1 is output from the second selection device 12 to the ALU 14 and the MAC 15 as the signal bsel_out.
[0358]
  At this time, a control signal MACMD designating multiplication is supplied to the MAC 15. As a result, the MAC 15 multiplies the coefficient COE2 and the data D1. As a result, the multiplication result COE2 * D1 is transferred from the MAC 15 to the signal mac. It is output to the fourth selection device 16 as out.
  The control signal ESEL is supplied to the fourth selection device 16 so as to select the output of the MAC 15. As a result, in the fourth selection device 16, the output signal mac of the MAC 15 out (COE2 * D1) is selected and the signal esel It is output to the register 17 as out (COE2 * D1).
  The register 17 stores the calculation result COE2 * D1 of the MAC 15, and this stored data is stored in the calculation output terminal PE. As a calculation result signal OT2 from C, the cascade input PE of the arithmetic unit 10A-0 P1, arithmetic unit 10A-1Cascade input PE P2 and cascade input PE of arithmetic device 10A-3 Output to P0.
[0359]
In the arithmetic unit 10A-2, the coefficients COE0, COE1, COE2, and COE3 delayed by a desired delay amount by the C0 FIFO 18-0 to C3 FIFO 18-3 are the coefficient output terminals PE. C0-PE As coefficient outputs c02 to c32 from C3O, the coefficient input terminal PE of the next stage arithmetic unit 10A-3 C0I to PE The data D1 and D3 output to C3I and delayed by a desired delay amount by the D0 FIFO 19-1 and D3 FIFO 19-3 are output to the data output terminal PE. D1O, PE Data input terminal PE of the next stage arithmetic unit 10A-3 as data outputs d12 and d32 from D3O D1I-PE Is output to D3I.
[0360]
Next, in the arithmetic unit 10A-3, control is performed by the control signal CTL3 so that the arithmetic result signal OT3 = OT2 + COE3 * D3 = COE2 * D1 + COE3 * D3 is performed.
[0361]
In this case, the control signal ASEL is supplied to the coefficient input terminal PE. The coefficient output c32 (COE3) of the arithmetic device 10A-2 supplied to C3I is set to be selected and supplied to the first selection device 11.
Further, the control signal BSEL is supplied to the data input terminal PE. The data output d32 (D3) of the arithmetic device 10A-2 supplied to D3I is set to be selected and supplied to the second selection device 12.
Further, the control signal CSEL is input to the cascade input terminal PE. The calculation result signal OT2 (COE2 * D1) of the calculation device 10A-2 supplied to P0 is set to be selected and supplied to the third selection device 13.
Thereby, the coefficient COE3 is output from the first selection device 11 to the ALU 14 and the MAC 15 as the signal asel_out. Further, the data D3 is output from the second selection device 12 to the ALU 14 and the MAC 15 as the signal bsel_out. In addition, the cascade input data COE2 * D1 is supplied from the third selection device 13 to the signal csel. It is output to the first selection device 11, ALU 14 and MAC 15 as out.
[0362]
  At this time, a control signal MACMD for specifying multiplication and addition is supplied to the MAC 15. As a result, the MAC 15 multiplies the coefficient COE3 and the data D3 and, as a result, adds COE3 * D3 and (COE2 * D1). As a result, the multiplication / addition result COE3 * D3 + COE2 * D1 from the MAC 15 becomes the signal mac. It is output to the fourth selection device 16 as out.
  The control signal ESEL is supplied to the fourth selection device 16 so as to select the output of the MAC 15. As a result, in the fourth selection device 16, the output signal mac of the MAC 15 out (COE2 * D1 + COE3 * D3) is selected and the signal esel It is output to the register 17 as out (COE2 * D1 + COE3 * D3).
  The register 17 stores the calculation result of the MAC 15 (COE2 * D1 + COE3 * D3), and this stored data is stored in the calculation output terminal PE. C outputs a calculation result signal OT3 as a desired calculation result out, and the cascade input PE of the calculation device 10A-0 P0, arithmetic unit 10A-1Cascade input PE P1 and cascade input PE of arithmetic device 10A-2 P2Is output.
  Further, the calculation result signal OT3 indicating (COE2 * D1 + COE3 * D3) of the calculation device 10A-3 is supplied to the data input I3 of the second calculation device 32 in FIG.
[0363]
In the above, the delay control signals C0DL, C1DL, C2DL, and C3DL shown in FIG. 2 are supplied to the C0 FIFO to C3 FIFOs 18-0 to 18-3 so that all delays are zero.
Further, the delay control signal D0DL is supplied to the D0 FIFO 19-0 so that the delay becomes zero, the delay control signal D1DL is supplied to the D1 FIFO 19-1 so that the delay becomes 1, and the delay control signal D2DL becomes the delay 2 The delay control signal D3DL is supplied to the D3 FIFO 19-3 so that the delay 3 is obtained.
[0364]
The calculation result (COE0 * D1-COE1 * D3) of the first calculation device 31 supplied to the data input I1 of the second calculation device 32 is supplied to the output selection device 25A-1 in FIG.
The calculation result (COE2 * D1 + COE3 * D3) of the first calculation device 31 supplied to the data input I3 of the second calculation device 32 is supplied to the output selection device 25A-3 in FIG.
[0365]
In the second arithmetic unit 32, the output selection unit 25A-0 receives the data input I0 and the output signal btf0a of the butterfly arithmetic unit 23A-0. out (= R0 + R1) of the output signal btf0a of the butterfly calculator 23A-0 The control signal W0SEL is supplied so as to select out, and the selected data is output as a signal MEMW0 = R0 + R1.
[0366]
In the output selection device 25A-1, the data input I1 and the output signal btf0b of the butterfly calculator 23A-0 out (= R0-R1), the control signal W1SEL is supplied so as to select the data input I1, and the data selected by this is the signal MEMW1 = I1 = (COE0 * D1-COE1 * D3) = (COE0 * (R0-R1) -COE1 * (R2-R3)).
[0367]
In the output selection device 25A-2, the data input I2 and the output signal btf1a of the butterfly calculator 23A-1 out (= R2 + R3), the output signal btf1a of the butterfly calculator 23A-1 The control signal W2SEL is supplied so as to select out, and the selected data is output as a signal MEMW2 = R2 + R3.
[0368]
Further, in the output selection device 25A-3, the data input I3 and the output signal btf1b of the butterfly calculator 23A-1 out (= R2−R3), the control signal W3SEL is supplied so as to select the data input I3, and the data thus selected is the signal MEMW3 = I3 = (COE2 * D1 + COE3 * D3) = (COE2 * (R0) -R1) + COE3 * (R2-R3)).
[0369]
As described above, according to the eighth embodiment, the arithmetic device including the ALU and MAC according to the first and second embodiments and the butterfly arithmetic unit according to the third to seventh embodiments are included. Since it is reconfigurable with the arithmetic unit, there are the following advantages.
[0370]
That is, in a processor such as a conventional DSP,
MEMW0 = x [k0] + x [k1],
MEMW1 = px * (x [k0] −x [k1]) − py * (y [k0] −y [k1]),
MEMW2 = y [k0] + y [k1],
MEMW3 = px * (x [k0] −x [k1]) + py * (y [k0] −y [k1])
When trying to perform the operation of, for example, in the calculation of MEMW1
reg1 = x [k0] −x [k1],
reg2 = px * reg1,
reg3 = y [k0] −y [k1],
reg4 = py * reg3
MeMW1 = reg2-reg4
For example, an operation for temporarily storing a value in a register is required. For this reason, writing to registers unnecessary for arithmetic operations and reading from registers have increased, and the number of operation cycles and power consumption have increased. However, by combining MAC, ALU and butterfly arithmetic, memory readout can be performed from arithmetic operation to memory When writing, the degree of freedom of operation in the operation block is increased, and efficient operation can be performed. As a result, the number of execution cycles is reduced, and the reading and writing of temporary data is reduced, thereby reducing power.
[0371]
Further, when x [k0] and x [k1] are commonly used as in the MEMW0 and MEMW1 operations, the conventional processor uses x [k0] + x [k1], x [k0] − Although the calculation of x [k1] cannot be performed at the same time and the number of cycles required for the calculation has increased, in the eighth embodiment, since this calculation is performed at the same time, the number of necessary cycles can be reduced.
[0372]
Further, according to the eighth embodiment, as in the first embodiment described above, not only can the logic level be optimized, but also an increase in configuration information can be prevented, and the area efficiency as an integrated circuit can be reduced. There exists an advantage which can implement | achieve the arithmetic unit which can be prevented.
Further, since the arithmetic device can be reconfigured, not only cascade operations but also parallel operations can be realized with the same hardware. Therefore, it is possible to efficiently execute many parallelizable processes by increasing the number of arithmetic devices.
[0373]
Ninth embodiment
FIG. 11 is a block diagram showing a ninth embodiment of the arithmetic device according to the present invention.
As in the eighth embodiment, the arithmetic device 30A according to the ninth embodiment includes the first arithmetic device including the ALU and MAC according to the first and second embodiments described above, and the third to third arithmetic devices. It is an apparatus example at the time of generalizing the arithmetic device which couple | bonded the 2nd arithmetic device containing the butterfly arithmetic unit which concerns on 7th embodiment so that reconfigurable.
The arithmetic device 30A is also configured to efficiently execute signal processing operations in one cycle of data reading, calculation, and data writing.
[0374]
As shown in FIG. 11, the present arithmetic unit 30A includes a first arithmetic unit (PU) 31A including an ALU and a MAC, and a second arithmetic unit 32A-0 (BTFLa0), ..., 32A- including a butterfly arithmetic unit. k (BTFLak), 32B-0 (BTFLb0), ..., 32B-m (BTFLbm), 32C-0 (BTFLc0), ..., 32Cn (BTFLcn) as main components.
[0375]
The first arithmetic unit 31A and the second arithmetic units 32A-0 (BTFLa0), ..., 32A-k (BTFLak), 32B-0 (BTFLb0), ..., 32B-m (BTFLbm), 32C- Data input / output and control signals of 0 (BTFLc0),..., 32C-n (BTFLcn) and connection relations will be described in detail, and the operation of each part is performed in the same manner as in the eighth embodiment. Details are omitted.
[0376]
The first arithmetic unit 31A includes, for example, arithmetic units obtained by cascading a plurality of arithmetic units of FIG. 1 or FIG. 2, such as 2, 4, 8, etc., and data inputs DIa0, DIa1, DIa2k, DIa2k + 1, DIb0, DIb1 , DIb2, DIb3, DIb4m, DIb4m + 1, DIb4m + 2, DIb4m + 3, DIc0, DIc1,..., DIc6, DIc8n, DIc8n + 1,. OTb0, OTb1, OTb2, OTb3, OTb4m, OTb4m + 1, OTb4m + 2, OTb4m + 3, OTc0, OTc1 ... OTc6, OTc7, OTc8n, OTc8n + 1, ..., OTc8n + 6, OTc8n + 6 Has 8n + 7, the control signal CTRLa0 for reconstitution, ..., CTRLa2k + 1, CTRLb0, ..., CTRLb4m + 3, CTRLc0, ..., CTRLc8n + 7 is supplied.
Each control signal includes arithmetic control signals ASEL, BSEL, ESEL, MACMD, ALUMD, RNDMD, SATD, OSFMD, ACCMD, and delay control signals C0DL, C1DL,..., CkDL, D0DL, D1DL,. It is.
[0377]
The second arithmetic unit 32A-0 is, for example, a four-input four-output arithmetic unit as shown in FIG. 5, and includes data inputs MEMRa0 and MEMRa1, operation result inputs Ia0 and Ia1, data output (calculation result output) Da0, Da1 and data outputs MEMWa0 and MEMWa1 are supplied, and a control signal CTRLBa0 for reconfiguration is supplied. For example, taking the case of the third embodiment as an example, the control signal CTRLBa0 includes SFT0MD, R0SEL, BTFMD0, D0SEL, W0SEL, and SFT1MD, R1SEL, BTFMD1, D1SEL, and W1SEL.
[0378]
The second arithmetic unit 32A-k is a four-input four-output arithmetic unit as shown in FIG. 5, for example, and includes data inputs MEMRa2k, MEMRa2k + 1, operation result inputs Ia2k, Ia2k + 1, data output (operation result output) Da2k, It has Da2k + 1, data outputs MEMWa2k, MEMWa2k + 1, and is supplied with a control signal CTRLBa2k for reconfiguration.
For example, taking the case of the third embodiment as an example, the control signal CTRLBa2k includes SFT0MD, R0SEL, BTFMD0, D0SEL, W0SEL, and SFT1MD, R1SEL, BTFMD1, D1SEL, and W1SEL.
[0379]
The second arithmetic unit 32B-0 is, for example, an 8-input 8-output arithmetic unit as shown in FIG. 6 or 7, and includes data inputs MEMRb0, MEMRb1, MEMRb2, MEMRb3, and operation result inputs Ib0, Ib1, Ib2, and so on. Ib3, data output (calculation result output) Db0, Db1, Db2, Db3 and data output MEMWb0, MEMWb1, MEMWb2, MEMWb3, and a control signal CTRLBb0 for reconfiguration is supplied.
For example, taking the case of the fourth or fifth embodiment as an example, the control signal CTRLBb0 includes SFT0MD, R0SEL, BTFMD0, D0SEL, W0SEL, SFT1MD, R1SEL, BTFMD1, D1SEL, W1SEL, SFT2MD, R2SEL, SBTMD2, S , W2SEL, and SFT3MD, R3SEL, BTFMD3, D3SEL, and W3SEL.
[0380]
The second arithmetic unit 32B-m is, for example, an 8-input 8-output arithmetic unit as shown in FIG. 6 or FIG. Ib4m + 3, data output (calculation result output) Db4m, Db4m + 1, Db4m + 2, Db4m + 3, data output MEMWb4m, MEMWb4m + 1, MEMWb4m + 2, and MEMWb4m + 3, and a control signal CTRLBb4m for reconfiguration is supplied.
For example, taking the case of the fourth or fifth embodiment as an example, the control signal CTRLBb4m includes SFT0MD, R0SEL, BTFMD0, D0SEL, W0SEL, SFT1MD, R1SEL, BTFMD1, D1SEL, W1SEL, SFT2MD, R2SEL2, BTFMD2, , W2SEL, and SFT3MD, R3SEL, BTFMD3, D3SEL, and W3SEL.
[0381]
The second arithmetic unit 32C-0 is, for example, a 16-input 16-output arithmetic unit as shown in FIG. 8 or 9, and includes data inputs MEMRc0, MEMRc1,..., MEMRc6, MEMRc7, and operation result inputs Ic0, Ic1, ..., Ic6, Ic7, data output (calculation result output) Dc0, Dc1, ..., Dc6, Dc7, data outputs MEMWc0, MEMWc1, ..., MEMWc6, MEMWc7, and a control signal CTRLBc0 for reconfiguration is supplied .
For example, taking the case of the sixth or seventh embodiment as an example, the control signal CTRLBb4m includes SFT0MD, R0SEL, MTFMD0, D0SEL, W0SEL, SFT1MD, R1SEL, MTFMD1, D1SEL, W1SEL, SFT2MD, R2SEL, MTFMD2, D2SEL. , W2SEL, SFT3MD, R3SEL, MTFMD3, D3SEL, W3SEL, SFT4MD, R4SEL, MTFMD4, D4SEL, W4SEL, SFT5MD, R5SEL, MTFMD5, D5SEL, W5SEL, SFT6MD, R6SEL, MTFMDSEL, MT6MD7, R6SEL, MTFMD7 , W7SEL.
[0382]
The second arithmetic unit 32C-n is, for example, a 16-input 16-output arithmetic unit as shown in FIG. 8 or FIG. 9, and data inputs MEMRc8n, MEMRc8n + 1,. .., Ic8n + 6, Ic8n + 7, data output (calculation result output) Dc8n, Dc8n + 1,..., Dc8n + 6, Dc8n + 7, data output MEMWc8n, MEMWc8n + 1,.
For example, taking the case of the sixth or seventh embodiment as an example, the control signal CTRLBb4m includes SFT0MD, R0SEL, MTFMD0, D0SEL, W0SEL, SFT1MD, R1SEL, MTFMD1, D1SEL, W1SEL, SFT2MD, R2SEL, MTFMD2, D2SEL. , W2SEL, SFT3MD, R3SEL, MTFMD3, D3SEL, W3SEL, SFT4MD, R4SEL, MTFMD4, D4SEL, W4SEL, SFT5MD, R5SEL, MTFMD5, D5SEL, W5SEL, SFT6MD, R6SEL, MTFMDSEL, MT6MD7, R6SEL, MTFMD7 , W7SEL.
[0383]
Then, the data Ra0 is supplied to the data input MEMRa0 of the second arithmetic unit 32A-0, and the data Ra1 is supplied to the data input MEMRa1.
The data output Da0 of the second arithmetic device 32A-0 is supplied to the data input DIa0 of the first arithmetic device 31A, and the data output Da1 of the second arithmetic device 32A-0 is the data input DIa1 of the first arithmetic device 31A. To be supplied.
The data output OTa0 of the first arithmetic device 31A is supplied to the data input Ia0 of the second arithmetic device 32A-0, and the data output OTa1 of the first arithmetic device 31A is the data of the second arithmetic device 32A-0. Supplyed to input Ia1.
Further, the data Wa0 is output from the data output MEMWa0 of the second arithmetic unit 32A-0, and the data Wa1 is output from the data output MEMWa1.
[0384]
The data Ra2k is supplied to the data input MEMRa2k of the second arithmetic unit 32A-k, and the data Ra2k + 1 is supplied to the data input MEMRa2k + 1.
The data output Da2k of the second arithmetic device 32A-k is supplied to the data input DIa2k of the first arithmetic device 31A, and the data output Da2k + 1 of the second arithmetic device 32A-k is the data input DIa2k + 1 of the first arithmetic device 31A. To be supplied.
The data output OTa2k of the first arithmetic device 31A is supplied to the data input Ia2k of the second arithmetic device 32A-k, and the data output OTa2k + 1 of the first arithmetic device 31A is the data of the second arithmetic device 32A-k. Supplyed to input Ia2k + 1.
Further, the data Wa2k is output from the data output MEMWa2k of the second arithmetic unit 32A-k, and the data Wa2k + 1 is output from the data output MEMWa2k + 1.
[0385]
Data Rb0 is supplied to data input MEMRb0 of second arithmetic unit 32B-0, data Rb1 is supplied to data input MEMRb1, data Rb2 is supplied to data input MEMRb2, and data Rb3 is supplied to data input MEMRb3.
The data output Db0 of the second arithmetic unit 32B-0 is supplied to the data input DIb0 of the first arithmetic unit 31A, and the data output Db1 of the second arithmetic unit 32B-0 is the data input DIb1 of the first arithmetic unit 31A. , The data output Db2 of the second arithmetic device 32B-0 is supplied to the data input DIb2 of the first arithmetic device 31A, and the data output Db3 of the second arithmetic device 32B-0 is the first arithmetic device 31A. To the data input DIb3.
The data output OTb0 of the first arithmetic device 31A is supplied to the data input Ib0 of the second arithmetic device 32B-0, and the data output OTb1 of the first arithmetic device 31A is the data of the second arithmetic device 32B-0. The data output OTb2 of the first arithmetic device 31A is supplied to the data input Ib2 of the second arithmetic device 32B-0, and the data output OTb3 of the first arithmetic device 31A is supplied to the second arithmetic device 32B. It is supplied to the data input Ib3 of −0.
Also, data Wb0 is output from the data output MEMWb0 of the second arithmetic unit 32B-0, data Wb1 is output from the data output MEMWb1, data Wb2 is output from the data output MEMWb2, and data Wb3 is output from the data output MEMWb3. The
[0386]
Data Rb4m is supplied to the data input MEMRb4m of the second arithmetic device 32B-m, data Rb4m + 1 is supplied to the data input MEMRb4m + 1, data Rb4m + 2 is supplied to the data input MEMRb4m + 2, and data Rb4m + 3 is supplied to the data input MEMRb4m + 3.
The data output Db4m of the second arithmetic device 32B-m is supplied to the data input DIb4m of the first arithmetic device 31A, and the data output Db4m + 1 of the second arithmetic device 32B-m is the data input DIb4m + 1 of the first arithmetic device 31A. The data output Db4m + 2 of the second arithmetic device 32B-m is supplied to the data input DIb4m + 2 of the first arithmetic device 31A, and the data output Db4m + 3 of the second arithmetic device 32B-m is the first arithmetic device 31A. Data input DIb4m + 3.
Further, the data output OTb4m of the first arithmetic device 31A is supplied to the data input Ib4m of the second arithmetic device 32B-m, and the data output OTb4m + 1 of the first arithmetic device 31A is the data of the second arithmetic device 32B-m. The data output OTb4m + 2 of the first arithmetic device 31A is supplied to the data input Ib4m + 2 of the second arithmetic device 32B-m, and the data output OTb4m + 3 of the first arithmetic device 31A is supplied to the second arithmetic device 32B. -M data input Ib4m + 3.
Data Wb4m is output from data output MEMWb4m of second arithmetic unit 32B-m, data Wb4m + 1 is output from data output MEMWb4m + 1, data Wb4m + 2 is output from data output MEMWb4m + 2, and data Wb4m + 3 is output from data output MEMWb4m + 3. The
[0387]
The data Rc0 is supplied to the data input MEMRc0 of the second arithmetic unit 32C-0, the data Rc1 is supplied to the data input MEMRc1, the data Rc6 is supplied to the data input MEMRc6, and the data Rc7 is supplied to the data input MEMRc7. Is done.
The data output Dc0 of the second arithmetic device 32C-0 is supplied to the data input DIc0 of the first arithmetic device 31A, and the data output Dc1 of the second arithmetic device 32C-0 is the data input DIc1 of the first arithmetic device 31A. Similarly, the data output Dc6 of the second arithmetic unit 32C-0 is supplied to the data input DIc6 of the first arithmetic unit 31A, and the data output DC7 of the second arithmetic unit 32C-0 is the first The data is supplied to the data input DIC7 of the arithmetic unit 31A.
The data output OTc0 of the first arithmetic device 31A is supplied to the data input Ic0 of the second arithmetic device 32C-0, and the data output OTc1 of the first arithmetic device 31A is the data of the second arithmetic device 32C-0. Similarly, the data output OTc6 of the first arithmetic unit 31A is supplied to the data input Ic6 of the second arithmetic unit 32C-0, and the data output OTc7 of the first arithmetic unit 31A is the second one. It is supplied to the data input Ic7 of the arithmetic unit 32C-0.
Further, the data output MEMWc0 of the second arithmetic unit 32C-0 outputs the data Wc0, the data output MEMWc1 outputs the data Wc1, the data output MEMWc6 outputs the data Wc6, and the data output MEMWc7 outputs the data Wc7. Is output.
[0388]
  Data Rc8n is supplied to data input MEMRc8n of second arithmetic unit 32C-n, data Rc8n + 1 is supplied to data input MEMRc8n + 1, data Rc8n + 6 is supplied to data input MEMRc8n + 6, and data Rc8n + 7 is supplied to data input MEMRc8n + 7. Is done.
  The data output DC8n of the second arithmetic device 32C-n is supplied to the data input DIc8n of the first arithmetic device 31A, and the data output Dc8n + 1 of the second arithmetic device 32C-n is the data input DIc8n + 1 of the first arithmetic device 31A. Similarly, the data output Dc8n + 6 of the second arithmetic unit 32C-n is supplied to the data input DIc8n + 6 of the first arithmetic unit 31A, and the data output Dc8n + 7 of the second arithmetic unit 32C-n is the first Data input DIc8n + of arithmetic unit 31A7To be supplied.
  The data output OTc8n of the first arithmetic device 31A is supplied to the data input Ic8n of the second arithmetic device 32C-n, and the data output OTc8n + 1 of the first arithmetic device 31A is the data of the second arithmetic device 32C-n. Similarly, the data output OTc8n + 6 of the first arithmetic unit 31A is supplied to the data input Ic8n + 6 of the second arithmetic unit 32C-n, and the data output OTc8n + 7 of the first arithmetic unit 31A is supplied to the second Ic8n + 1. It is supplied to the data input Ic8n + 7 of the arithmetic unit 32C-n.
  Further, the data output MEMWc8n of the second arithmetic unit 32C-n outputs data Wc8n, the data output MEMWc8n + 1 outputs data Wc8n + 1, the data output MEMWc8n + 6 outputs data Wc8n + 6, and the data output MEMWc8n + 7 outputs data Wc8n + 7. Is output.
[0389]
In the arithmetic device 30A having such a configuration, for example, when data is exchanged between the first arithmetic device 31A and the second arithmetic device 32B-0 to 32B-m having eight inputs and eight outputs, the arithmetic is performed. The same operation as that described in the eighth embodiment is performed.
Even when data is exchanged between the other second arithmetic devices 32A-0 to 32A-k, 32C-0 to 32C-n and the first arithmetic device 31A, the data is input. Substantially the same operation is performed only in the number of outputs.
Therefore, as described above, the details of the operation of each unit are omitted here.
[0390]
According to the ninth embodiment, a first arithmetic device 31A having a plurality of arithmetic devices including a three-term arithmetic device and / or a two-term arithmetic device, and a second arithmetic device 32A including a two-input two-output arithmetic device. -0 (BTFLa0), ..., 32A-k (BTFLak), 32B-0 (BTFLb0), ..., 32B-m (BTFLbm), 32C-0 (BTFLc0), ..., 32C-n (BTFLcn) In the arithmetic device 30A that can be reconfigured from the outside, the second arithmetic devices 32A-0 (BTFLa0), ..., 32A-k (BTFLak), 32B-0 (BTFLb0), ..., 32B-m (BTFLbm), 32C- 0 (BTFLc0),..., 32C-n (BTFLcn) is used as the input to the first arithmetic unit 31A, and the arithmetic result of the first arithmetic unit 31A is used as the second operation. As an input device, since to obtain a final operation result can be obtained the same effect as the eighth embodiment described above.
[0390]
That is, in a processor such as a conventional DSP,
MEMW0 = x [k0] + x [k1],
MEMW1 = px * (x [k0] −x [k1]) − py * (y [k0] −y [k1]),
MEMW2 = y [k0] + y [k1],
MEMW3 = px * (x [k0] −x [k1]) + py * (y [k0] −y [k1])
When trying to perform the operation of, for example, in the calculation of MEMW1
reg1 = x [k0] −x [k1],
reg2 = px * reg1,
reg3 = y [k0] −y [k1],
reg4 = py * reg3
MeMW1 = reg2-reg4
For example, an operation for temporarily storing a value in a register is required. For this reason, writing to registers unnecessary for arithmetic operations and reading from registers have increased, and the number of operation cycles and power consumption have increased. However, by combining MAC, ALU and butterfly arithmetic, memory readout can be performed from arithmetic operation to memory When writing, the degree of freedom of operation in the operation block is increased, and efficient operation can be performed. As a result, the number of execution cycles is reduced, and the reading and writing of temporary data is reduced, thereby reducing power.
[0392]
Further, when x [k0] and x [k1] are commonly used as in the MEMW0 and MEMW1 operations, the conventional processor uses x [k0] + x [k1], x [k0] − Although the calculation of x [k1] cannot be performed at the same time and the number of cycles required for the calculation is increased, in the ninth embodiment, since this calculation is performed at the same time, the number of necessary cycles can be reduced.
[0393]
Further, according to the ninth embodiment, as in the first embodiment described above, not only can the logic level be optimized, but also an increase in configuration information can be prevented, and the area efficiency as an integrated circuit can be reduced. There exists an advantage which can implement | achieve the arithmetic unit which can be prevented.
Further, since the arithmetic device can be reconfigured, not only cascade operations but also parallel operations can be realized with the same hardware. Therefore, it is possible to efficiently execute many parallelizable processes by increasing the number of arithmetic devices.
[0394]
Tenth embodiment
FIG. 12 is a configuration diagram showing an arithmetic system according to the tenth embodiment of the present invention.
[0395]
In the present arithmetic system 40, for example, an arithmetic device capable of reconfiguring the array of arithmetic units according to the first to ninth embodiments described above, the coefficient parameters at the time of executing the arithmetic, and the like based on the configuration information is used. It is done.
The arithmetic system 40 includes an arithmetic device, a memory, an address generation device, and a memory for storing route information. In addition to route information selection using a CPU, the arithmetic system 40 is based on a control signal generated by the address generation device. The system is configured as a reconfigurable system that can switch route information under specific conditions even during calculation.
[0396]
Specifically, as shown in FIG. 12, the arithmetic system 40 includes a CPU 41 as a control circuit, a plurality of, for example, two first route selection information memories 42, a second route selection information memory 43, and a selection device 44. , An address generation device 45, a data memory 46, and a reconfigurable computing device 47.
[0397]
The CPU 41 can access the first route selection information memory 42, the second route selection information memory 43, and the data memory 46 via the bus BUS.
The CPU 41 activates the address generation device 45 using the req_ack signal, and recognizes the end of the operation of the address generation device 45 based on the req_ack signal from the address generation device 45.
Further, the CPU 41 writes the first route selection information config 1 in the first route selection information memory 42, and writes the second route selection information config 2 in the second route selection information memory 43.
Further, the CPU 41 writes a plurality of data in the data memory 46. Further, the CPU 41 designates an address generation pattern with the signal aggtrl to the address generation device 45 and activates the address generation device 45.
Further, the CPU 41 outputs a control signal ctrlb to the selection device 44, and the first route selection information config 1 in the first route selection information memory 42 and the second route selection information config 2 in the second route selection information memory 43. It is instructed which route selection information is to be selected. In other words, the CPU 41 dynamically changes the control signal ctrlb while the address generation device 45 is performing address generation, and controls whether the route selection information is selected from the plurality of route selection information memories 42 and 43. To do.
[0398]
The first route selection information memory 42 is written with the first route selection information config 1 from the CPU 41 via the bus BUS, and outputs the written first route selection information config 1 to the selection device 44.
[0399]
The second route selection information memory 43 is written with the second route selection information config 2 from the CPU 41 via the bus BUS, and outputs the written second route selection information config 2 to the selection device 44.
[0400]
The selection device 44 uses the first route selection information config1 and the second route selection information memory 43 based on the first route selection information memory 42 in response to the control signal ctrlla from the address generation device 45 and the control signal ctrlb from the CPU 41. Any one of the second route selection information config 2 is selected and supplied to the computing device 47.
[0401]
The address generation device 45 is activated in response to a req_ack signal from the CPU 41, automatically generates an address adr with an address generation pattern designated in advance by the control signal agctrl by the CPU 41, reads it from the data memory 46, and reads the data memory 46. Write to F.
In addition, the address generation device 45 outputs a control signal ctrlla including selection information corresponding to the generated address to the selection device 44, and the first route selection information config 1 and the second route selection information config 1 by the first route selection information memory 42. Any one of the second route selection information config 2 by the route selection information memory 43 is selected and supplied to the arithmetic device 47.
Then, when the address generation is completed, the address generation device 45 notifies the CPU 41 of the completion of the operation using the req_ack signal.
[0402]
The data memory 46 reads the data stored in the data memory 46 using the address adr generated by the address generation device 45 and reads the read data read. dat is supplied to the arithmetic unit 47, and write data write which is the arithmetic result of the arithmetic unit 47 is supplied. Write dat.
The data memory 46 is accessed by the CPU 41 via the bus BUS.
[0403]
The computing device 47 is based on the first route selection information config 1 by the first route selection information memory 42 selected by the selection device 44 or the second route selection information config 2 by the second route selection information memory 43. The data array 46 read data read is reconstructed by reconfiguring the array of arithmetic units, coefficient parameters at the time of execution of the arithmetic operations, etc. Performs a specified operation on dat, and writes the operation result as write data write dat is supplied to the data memory 46.
[0404]
Next, the operation of the above configuration will be described with reference to FIG.
[0405]
First, the CPU 41 writes the first route selection information config1 in the first route selection information memory 42 and the second route selection information config2 in the second route selection information memory 43 via the bus BUS. .
[0406]
Further, the CPU 41 writes a plurality of data in advance in the data memory 46 via the bus BUS.
Further, the CPU 41 outputs a control signal aggtr to the address generation device 45, designates an address generation pattern, and activates the address generation device 45.
[0407]
As a result, the control is transferred from the CPU 41 to the address generation device 45, and automatic address generation is started in the address generation device 45 and supplied to the data memory 46.
Here, for the sake of simplicity, it is assumed that the read address patterns generated in the address generator 45 are 0, 1, 2, 3, 4, and 5.
The data read from the data memory 46 based on the generated address adr and supplied to the arithmetic unit 47 are read_dat [0], read_dat [1], read_dat [2], read_dat [3], read_dat [4]. , And read_dat [5].
[0408]
Further, the address generation device 45 outputs a control signal ctrlla to the selection device 44 in accordance with the generated address.
In the selection device 44, in accordance with the control signal ctrlla from the address generation device 45 and the control signal ctrlb from the CPU 41, the first route selection information config1 by the first route selection information memory 42 and the second route selection information memory 43 Any one of the second route selection information config2 is selected and supplied to the arithmetic unit 47.
[0409]
In the arithmetic device 47, the first route selection information config 1 by the first route selection information memory 42 supplied from the selection device 44 or the second route selection information config 2 by the second route selection information memory 43 is supplied. The arrangement of the computing units, the coefficient parameters at the time of executing the computations, and the like are reconfigured.
In the reconfigured arithmetic unit 47, the read data read_dat [0], read_dat [1], read_dat [2], read_dat [3], read_dat [4], and read_dat [5] of the data memory 46 are designated. Is calculated.
[0410]
The calculation result in the arithmetic unit 47 is write-dat [0], write-dat [1], write-dat [2], write-dat [3], write-dat [4], and write-dat [5]. It becomes.
[0411]
Here, the calculation executed with the first route selection information config 1 is func 1 (), and the calculation executed with the second route selection information config 2 is func 2 ().
As shown in FIG. 13, when the address is 0, 1, 3 or 4 in the control information ctrla from the address generator 45, the first route selection information config1 is shown. When the address is 2 or 5, the second route selection information config1 is shown. It is assumed that the route selection information config2 can be selected.
The calculation result in this case can be expressed as follows.
[0412]
[Formula 18]
write-dat [0] = func1 (read_dat [0])
write-dat [1] = func1 (read_dat [1])
write-dat [2] = func2 (read_dat [2])
write-dat [3] = func1 (read_dat [3])
write-dat [4] = func1 (read_dat [4])
write-dat [5] = func2 (read_dat [5])
[0413]
These calculation results are written in the data memory 46, and the automatic generation of the address adr by the address generator 45 is finished.
Then, the ask_req signal is sent from the address generation device 45 to the CPU 41 to notify the end of the calculation.
[0414]
  As described above, according to the tenth embodiment, the first route selection information memory 42 that stores the first route selection information config 1 and the second route that stores the second route selection information config 2. The first route selection information config1 by the first route selection information memory 42 and the second route selection information by the second route selection information memory 43 according to the selection information memory 43, the control signal ctrla and the control signal ctrlb. A selection device 44 that selects one of the config 2 and a specified address generation pattern automatically generate an address adr, read from the data memory 46, write to the data memory 46, and generate An address generation device 45 that outputs a control signal ctrlla to the selection device 44 in accordance with the selected address, and a selection device Based on the first route selection information config1 or the second route selection information config2 selected at 44, the arrangement of the computing units, the coefficient parameters at the time of execution of the computation, and the like are reconfigured, and the read data of the data memory 46 read Performs a specified operation on dat, and writes the operation result to write data write an arithmetic unit 47 to write back to the data memory 46 as datBecause it was providedThere are the following advantages.
[0415]
That is, conventionally, in an arithmetic system composed of a CPU, an address generation device, a plurality of configuration information memories, and a reconfigurable arithmetic device, the selection of the plurality of configuration memories is controlled using the CPU. In order to select the memory using the CPU during the period of generating the address, it is necessary to provide a synchronization mechanism between the CPU and the address generating device, which makes the control complicated and extra hardware. However, depending on the hardware structure, synchronization itself is impossible.
On the other hand, according to the arithmetic system according to the tenth embodiment, since a plurality of configuration memories can be selected using a control signal output from the address generation device itself, it is necessary to provide a synchronization mechanism. There is an advantage that it disappears.
In addition, since control does not return to the CPU, the overhead for processing is reduced, and the processing capacity of the entire system can be improved.
[0416]
Eleventh embodiment
FIG. 14 is a diagram for explaining the eleventh embodiment of the present invention, and is a block diagram showing an example of an address generation device applicable to the arithmetic system according to the present invention.
[0417]
The address generation device 50 can be applied to the arithmetic system of FIG. 12 showing the tenth embodiment described above, for example, and is a device that generates addresses using four (generally n) counters. An address pattern such as an array access pattern in the C for loop and its nesting, FFT, and bit reverse is generated, and a control signal CTRL (ctrla in FIG. 12) is also output together with this address generation.
Hereinafter, a specific configuration and function of the address generation device 50 will be described in order.
[0418]
As shown in FIG. 14, the address generator 50 includes an arithmetic unit (INCDEC0) 51-0, an arithmetic unit (INCDEC1) 51-1, an arithmetic unit (INCDEC2) 51-2, an arithmetic unit (INCDECx) 51-X, An arithmetic unit with a selector (SUM0) 52-0, an arithmetic unit with a selector (SUM1) 52-1, an arithmetic unit with a selector (SUM2) 52-2, a selector (SEL0) 53-0, a selector (SEL1) 53-1, a selector (SEL2) 53-2, selector (SELx) 53-x, counter (Counter0) 54-0, counter (Counter1) 54-1, counter (Counter2) 54-2, counter (Counterx) 54-x, comparator ( END) 55, comparator (END0) 56-0, comparator (END1) 56-1, comparator (END) ) 56-2, comparator (ENDx) 56-x, comparator (INC0) 57-0, comparator (INC1) 57-1, comparator (INC2) 57-2, arithmetic unit with selector (ADRSUM) 58, A bit inverter (BRV) 59, a mask generator (ADRMSK) 60, and a control signal generator (CTRLGEN) 61 are included.
[0419]
Then, the address generator 50 controls the input signals COUNT0STP, COUNT1STP, COUNT2STP, COUNT0INI, COUNT1INI, COUNT2INI, COUNTxINI, COUNT0FIN, COUNT1FIN, COUNT2FIN, COUNTxFIN, OFFSET, CNT0, DCNT, CNT0, DCNT, CNT0 , CNT0ENDMD, CNT1ENDMD, CNT2ENDMD, CNT0INCMD, CNT1INCMD, CNT2INCMD, CTRLMD, COUNTSUM, MSKMD, and COUNTEN are supplied, and a control signal CTRL and a generation address GENADR are output.
[0420]
The computing unit 51-0 receives the input signal COUNT0STP and the count data countdat of the counter 54-0 according to the value of the control signal CNT0INIMD. The result of calculating 0 is the signal countcal 0 is output to the selector 53-0 and the selector calculators 52-0 to 52-2.
Specifically, the computing unit 51-0 performs any of the following computations according to the value of the control signal CNT0INIMD.
[0421]
[Equation 19]
countcal 0 = COUNT0STP + countdat 0,
countcal 0 = COUNT0STP-countdat 0
[0422]
The arithmetic unit 51-1 receives the input signal COUNT1STP and the count data countdat of the counter 54-1 according to the value of the control signal CNT1INIMD. The result of computing 1 is the signal countcal 1 is output to the selector 53-1 and the selector calculators 52-0 to 52-2.
Specifically, the computing unit 51-1 performs any of the following computations according to the value of the control signal CNT1INIMD.
[0423]
[Expression 20]
countcal 1 = COUNT1STP + countdat 1,
countcal 1 = COUNT1STP-countdat 1
[0424]
The arithmetic unit 51-2 receives the input signal COUNT2STP and the count data countdat of the counter 54-2 according to the value of the control signal CNT2INIMD. 2 is the signal countcal 2 is output to the selector 53-2 and the selector calculators 52-0 to 52-2.
Specifically, the calculator 51-2 performs one of the following calculations according to the value of the control signal CNT2INIMD.
[0425]
[Expression 21]
countcal 2 = COUNT2STP + countdat 2,
countcal 2 = COUNT2STP-countdat 2
[0426]
The computing unit 51-x receives the input signal COUNTxFIN and the count data countdat of the counter 54-x. The result of computing x is the signal countcal It outputs to selector 53-x as x.
[0427]
The computing unit with selector 52-0 receives the input signal COUNT0INI and the output signal countcal of the computing unit 51-0 according to the value of the control signal CNT0RETMD. 0, output signal countcal of the arithmetic unit 51-1 1 and the output signal countcal of the arithmetic unit 51-2 2 is the signal countret 0 is output to the selector 53-0.
Specifically, the calculator 52-0 performs any of the following calculations according to the value of the control signal CNT0RETMD.
[0428]
[Expression 22]
countret 0 = COUNT0INI,
countret 0 = countcal 0,
countret 0 = countcal 1,
countret 0 = countcal 2,
countret 0 = COUNT0INI + countcal 0,
countret 0 = COUNT0INI + countcal 1,
countret 0 = COUNT0INI + countcal 2
[0429]
The arithmetic unit with selector 52-1 has the input signal COUNT1INI and the output signal countcal of the arithmetic unit 51-0 according to the value of the control signal CNT1RETMD. 0, output signal countcal of the arithmetic unit 51-1 1 and the output signal countcal of the arithmetic unit 51-2 2 is the signal countret 1 is output to the selector 53-1.
Specifically, the calculator 52-1 performs any of the following calculations according to the value of the control signal CNT1RETMD.
[0430]
[Expression 23]
countret 1 = COUNT1INI,
countret 1 = countcal 0,
countret 1 = countcal 1,
countret 1 = countcal 2,
countret 1 = COUNT1INI + countcal 0,
countret 1 = COUNT1INI + countcal 1,
countret 1 = COUNT1INI + countcal 2
[0431]
The selector-equipped computing unit 52-2 receives the input signal COUNT2INI and the output signal countcal of the computing unit 51-0 according to the value of the control signal CNT2RETMD. 0, output signal countcal of the arithmetic unit 51-1 1 and the output signal countcal of the arithmetic unit 51-2 2 is the signal countret 2 is output to the selector 53-2.
Specifically, the calculator 52-2 performs any of the following calculations according to the value of the control signal CNT2RETMD.
[0432]
[Expression 24]
countret 2 = COUNT2INI,
countret 2 = countcal 0,
countret 2 = countcal 1,
countret 2 = countcal 2,
countret 2 = COUNT2INI + countcal 0,
countret 2 = COUNT2INI + countcal 1,
countret 2 = COUNT2INI + countcal 2
[0433]
The selector 53-0 outputs the output signal countend of the comparator 56-0. 0 and the output signal countinc of the comparator 57-0 Depending on the value of 0, the output signal countcal of the computing unit 51-0 0, input signal COUNT0INI, output signal countret of the arithmetic unit 52-0 A value of 0 is selected and output to the counter 54-0.
[0434]
The selector 53-1 outputs the output signal countend of the comparator 56-1. 1 and the output signal countinc of the comparator 57-1. Depending on the value of 1, the output signal countcal of the arithmetic unit 51-1 1, input signal COUNT1INI, output signal countret of the arithmetic unit 52-1. A value of 1 is selected and output to the counter 54-1.
[0435]
The selector 53-2 outputs the output signal countend of the comparator 56-2. 2 and the output signal countinc of the comparator 57-2 Depending on the value of 2, the output signal countcal of the arithmetic unit 51-2 2. Input signal COUNT2INI, output signal countret of the arithmetic unit 52-2 A value of 2 is selected and output to the counter 54-2.
[0436]
The selector 53-x outputs the output signal countend of the comparator 56-x. Depending on the value of x, the output signal countcal of the arithmetic unit 51-x x, the value of the input signal COUNTxINI is selected and output to the counter 54-x.
[0437]
The counter 54-0 outputs the output signal of the selector 53-0 to the count data countdat. The stored data is stored as 0, and the stored data is output to the computing unit 51-0, the comparator 55, and the computing unit 58 with a selector.
[0438]
The counter 54-1 outputs the output signal of the selector 53-1 to the count data countdat. 1 and the stored data is output to the computing unit 51-1, the comparator 55, and the computing unit 58 with a selector.
[0439]
The counter 54-2 outputs the output signal of the selector 53-2 to the count data countdat. 2, and the stored data is output to the computing unit 51-2, the comparator 55, and the computing unit 58 with a selector.
[0440]
The counter 54-x outputs the output signal of the selector 53-x to the count data countdat. The data is stored as x, and the stored data is output to the computing unit 51-x, the comparator 55, and the computing unit 58 with a selector.
[0441]
The comparator 55 receives the counter data countdat from the counter 54-0. 0, counter data countdat by counter 54-1 1. Counter data countdat by the counter 54-2 2. Counter data countdat by counter 54-x x and the values of the input signals COUNT0INI, COUNT1INI, COUNT2INI, COUNT0FIN, COUNT1FIN, COUNT2FIN are calculated, the result endsig0 is output to the comparator 56-0, the result endsig1 is output to the comparator 56-1, and the result endsig2 is compared And outputs the result endsigx to the comparator 56-x.
[0442]
Specifically, the comparator 55 counts count data countdat by the counter 54-0 for j = 0, 1, 2, x. When 0 and the input signal COUNT0INI are equal, endsigj = eq0, the count data countdat by the counter 54-1 1 and the input signal COUNT1INI are equal, endsignj = eq1, count data countdat by the counter 54-2 2 and endsigj = eq2 are set when the input signal COUNT2INI is equal. Similarly, the comparator 55 includes count data countdat by the counter 54-0. When 0 and the input signal COUNT0FIN are equal, endsigj = eq3, count data countdat by the counter 54-1 1 and the input signal COUNT1FIN are equal to endsignj = eq4, the count data countdat by the counter 54-2 2 and endsigj = eq5 are set when the input signal COUNT2FIN is equal.
The comparator 55 also counts the count data countdat by the counter 54-0. 0 and the count data countdat by the counter 54-1 When 1 is equal to endsignj = eq6, the count data countdat by the counter 54-1 1 and the count data countdat by the counter 54-2 When 2 is equal, endsignj = eq7, count data countdat by the counter 54-2 2 and count data countdat by counter 54-0 When 0 is equal, endsigj = eq8 is set.
[0443]
The comparator 56-0 determines the signal countend from the value of the output signal endsig0 of the comparator 55 according to the value of the control signal CNT0ENDMD. 0 is generated and output to the selector 53-0, the comparators 57-1, 57-2, and the control signal generator 61.
Specifically, the comparator 56-0 outputs a signal countend if the value of the control signal CNT0ENDMDD matches the value of the output signal endsig0 of the comparator 55. Set true to 0 and signal countend if they do not match Set false to 0.
[0444]
The comparator 56-1 determines the signal countend from the value of the output signal endsig1 of the comparator 55 according to the value of the control signal CNT1ENDMD. 1 is output to the selector 53-1, the comparators 57-0 and 57-2, and the control signal generator 61.
Specifically, the comparator 56-1 determines that the signal countend is equal to the value of the control signal CNT1ENDMD and the value of the output signal endsig1 of the comparator 55. Set true to 1 and signal countend if they do not match Set false to 1.
[0445]
The comparator 56-2 determines the signal countend from the value of the output signal endsig2 of the comparator 55 in accordance with the value of the control signal CNT2ENDMD. 2 is output to the selector 53-2, the comparators 57-0 and 57-1, and the control signal generator 61.
Specifically, the comparator 56-2 outputs the signal countend if the value of the control signal CNT2ENDMD matches the value of the output signal endsig2 of the comparator 55. Set true to 2 and signal countend if they do not match Set 2 to false.
[0446]
The comparator 56-x calculates the signal countend from the value of the output signal endsigx of the comparator 55. x is generated and output to the selector 53-x.
[0447]
The comparator 57-0 outputs the output signal countend of the comparator 56-1 according to the value of the control signal CNT0INCMD. 1 and the output signal countend of the comparator 56-2 The signal countinc from the value of 2 0 is generated and output to the selector 53-0.
Specifically, the comparator 57-0 outputs the output signal countend of the comparator 56-1 according to the value of the control signal CNT0INCMD. Signal countinc when 1 is true Set true to 0, and signal false when false Set false to 0.
Alternatively, the comparator 57-0 outputs the output signal countend of the comparator 56-2 according to the value of the control signal CNT0INCMD. Signal countinc when 2 is true Set true to 0, and signal false when false Set false to 0.
Alternatively, the comparator 57-0 outputs the output signal countend of the comparator 56-1 according to the value of the control signal CNT0INCMD. 1 and the output signal countend of the comparator 56-2 Signal countinc when 2 is true Set true to 0, and signal false when false Set false to 0.
[0448]
The comparator 57-1 outputs the output signal countend of the comparator 56-2 according to the value of the control signal CNT1INCMD. 2 and the output signal countend of the comparator 56-0 The signal countinc from the value of 0 1 is generated and output to the selector 53-1.
Specifically, the comparator 57-1 outputs the output signal countend of the comparator 56-2 according to the value of the control signal CNT1INCMD. Signal countinc when 2 is true Set true to 1 and signal false when false Set false to 1.
Alternatively, the comparator 57-1 outputs the output signal “countend” of the comparator 56-0 in accordance with the value of the control signal CNT 0 INCMD. Signal countinc when 0 is true Set true to 1 and signal false when false Set false to 1.
Alternatively, the comparator 57-1 outputs the output signal countend of the comparator 56-2 according to the value of the control signal CNT1INCMD. 2 and the output signal countend of the comparator 56-0 Signal countinc when 0 is true Set true to 1 and signal false when false Set false to 1.
[0449]
The comparator 57-2 outputs the output signal countend of the comparator 56-0 in accordance with the value of the control signal CNT2INCMD. 0 and the output signal countend of the comparator 56-1 The signal countinc from the value of 1 2 is generated and output to the selector 53-2.
Specifically, the comparator 57-2 outputs the output signal countend of the comparator 56-0 in accordance with the value of the control signal CNT2INCMD. Signal countinc when 0 is true Set true to 2 and signal false when false Set 2 to false.
Alternatively, the comparator 57-2 outputs the output signal countend of the comparator 56-1 according to the value of the control signal CNT2INCMD. Signal countinc when 1 is true Set true to 2 and signal false when false Set 2 to false.
Alternatively, the comparator 57-2 outputs the output signal countend of the comparator 56-0 according to the value of the control signal CNT2INCMD. 0, and the output signal countend of the comparator 56-1 Signal countinc when 1 is true Set true to 2 and signal false when false Set 2 to false.
[0450]
The selector-equipped computing unit 58 counts the count data countdat by the counter 54-0 in accordance with the value of the control signal COUNTSUM. 0, count data countdat by counter 54-1 1. Count data countdat by the counter 54-2 2. Count data countdat by the counter 54-3 The signal sumadr is generated based on x and the input signal OFFSET, and is output to the bit inverter 59 and the mask generator 60.
Specifically, the calculator 58 performs any of the following calculations according to the value of the control signal COUNTSUM.
[0451]
[Expression 25]
Figure 0003846196
[0452]
The bit inverter 59 generates a signal brvadr from the generation signal sumadr of the selector-equipped computing unit 58 according to the value of the control signal MSKMD, and outputs the signal brvadr to the mask generator 60.
Specifically, the bit inverter 59 determines m in accordance with the value of the control signal MSKMD, and sets the bit inversion from the LSB of the generation signal sumadr of the computing unit with selector 58 to m−1 bits in the signal brvadr. To do.
[0453]
The mask generator 60 generates an address signal GENADR based on the generation signal brvadr of the bit inverter 59, the generation signal sumadr of the selector-equipped computing unit 58, and the input signal MASK according to the value of the control signal MSDMD.
Specifically, the mask generator 60 selects the value of the generation signal brvadr of the bit inverter 59 and the value of the generation signal sumadr of the computing unit with selector 58 according to the value of the control signal MSKMD, and the result and the input signal MASK. The signal GENADR is generated by performing any one of AND (logical product), OR (logical sum), and XOR (exclusive logical sum) for each bit value.
The generated address signal GENADR is supplied to, for example, the data memory 46 of the arithmetic system in FIG.
[0454]
  The control signal generator 61 outputs the output signal countend of the comparator 56-0 according to the value of the control signal CTRLMD. 0, output signal countend of the comparator 56-1 1 and the output signal countend of the comparator 56-2 The control signal CTRL is generated based on 2 and the address valid signal VALID is made valid during the period in which the address is generated.
  Further, depending on the value of the control signal COUNTEN, the counters 54-0, 54-1, 54-2, and 54- provided therein are provided.xControls whether or not undup is allowed.
[0455]
Specifically, the control signal generator 61 depends on the value of the control signal CTRLMD,
・ Signal countend When 0 is true,
・ Signal countend When 1 is true,
・ Signal countend When 2 is true,
Signal countend 0 is true and signal countend When 1 is true,
Signal countend 0 is true and signal countend When 2 is true,
Signal countend 1 is true and signal countend When 2 is true
In either case, the control signal CTRL is validated, and in other cases, the CTRL is invalidated.
[0456]
Next, a specific operation of address generation with the above configuration will be described with reference to FIG. 15 by taking the triple loop of FIG. 14 as an example.
[0457]
First, the step value, initial value, and end value of each counter given as an input signal are set as follows.
[0458]
The step value signal COUNT0STP is set to “3” and supplied to the computing unit 51-0, the initial value signal COUNT0INI is set to “0” and supplied to the computing unit 52-0 and the selector 53-0, and the end value The signal COUNT0FIN is set to “3” and supplied to the comparator 55.
Similarly, the step value signal COUNT1STP is set to “5” and supplied to the computing unit 51-1, and the initial value signal COUNT1INI is set to “0” and supplied to the computing unit 52-1 and the selector 53-1. The end value signal COUNT1FIN is set to “10” and supplied to the comparator 55.
The step value signal COUNT2STP is set to “1” and supplied to the calculator 51-2, the initial value signal COUNT2INI is set to “0” and supplied to the calculator 52-2 and the selector 53-2, and the end value The signal COUNT2FIN is set to “1” and supplied to the comparator 55.
Also, the initial value signal COUNTxINI is set to “0” and supplied to the selector 53-x, and the end value signal COUNTxFIN is set to “0” and supplied to the computing unit 51-x.
[0459]
The control signal CNT0INIMD is supplied to the computing unit 51-0 so as to select execution of addition.
Similarly, the control signal CNT1INIMD is supplied to the computing unit 51-1 so as to select execution of addition, and the control signal CNT2INIMD is supplied to the computing unit 51-2 so as to select execution of addition.
[0460]
Further, the control signal CNT0RETMD is set so as to select COUNT0INI and supplied to the computing unit 52-0.
Similarly, the control signal CNT1RETMD is set to select COUNT1INI and supplied to the calculator 52-1, and the control signal CNT2RETMD is set to select COUNT2INI and supplied to the calculator 52-2.
[0461]
In addition, the control signal CNT0ENDMD is changed to count data countdat of the counter 54-0. When the output signal edsign0 of the comparator 55 when 0 and the end value signal COUNT0FIN match is input, the signal countend Provided to comparator 56-0 to set true to zero.
Similarly, the control signal CNT1ENDMD is sent to the count data countdat of the counter 54-1. When the output signal edsign1 of the comparator 55 when 1 and the end value signal COUNT1FIN match is input, the signal countend 1 is supplied to the comparator 56-1 so as to set true.
Then, the control signal CNT2ENDMD is sent to the count data countdat of the counter 54-2. When the output signal edsign2 of the comparator 55 when 2 and the end value signal COUNT2FIN match is input, the signal countend 2 is supplied to the comparator 56-2 so as to set true.
[0462]
In addition, the control signal CNT0INCMD is output from the comparator 57-2 output signal countend. 2 is true and the output signal countend of the comparator 57-1. The signal countinc when 1 is true It is supplied to the comparator 57-0 so as to set true to 0.
In addition, the control signal CNT1INCMD is the output signal countend of the comparator 57-2. The signal countinc when 2 is true 1 is supplied to the comparator 57-1 so as to set true.
Also, the control signal CNT2INCMD is always the signal countinc. 2 is supplied to the comparator 57-2 so as to set true.
[0463]
Further, the control signal COUNTSUM is counted by count data countdat by the counter 54-0. 0 value, count data countdat by the counter 54-1 1 value and count data countdat by the counter 54-2 This is supplied to the selector-equipped computing unit 58 so as to be set to a mode for outputting the sum of the two values.
[0464]
Further, the input signal OFFSET supplied to the selector-equipped computing unit 58 and the input signal MASK supplied to the mask generator 60 are set to “0”.
Further, the control signal MSKMD is supplied to the bit inverter 59 and the mask generator 60 so as to set the mode in which there is no bit reverse and no mask.
[0465]
In such a state, the address generation device 50 receives an address generation activation signal from a control circuit (not shown), and the counters 54-0 to 54-x start counting at a predetermined timing.
In this case, in the counter 54-2, as shown in FIG. 15 (j), the output signal countinc of the comparator 57-2. 2 is always true (high level in FIG. 15), that is, count-up is always started, so the count-up starts, the value “1” of the step value signal COUNT2STP is added to the initial value 0, and the count data countdat 2 is from 0 to 1 as shown in FIG.
[0466]
Count data countdat of the counter 54-2 2 becomes “1” and is supplied to the comparator 55. This count data countdat Since the value “1” of 2 becomes equal to the end value signal COUNT2FIN, the signal endsig2 indicating that is supplied to the comparator 56-2, and the output of the comparator 56-2 as shown in FIG. Signal countend 2 is set to true and supplied to the comparators 57-1 and 57-0 and the control signal generator 61.
[0467]
Output signal countend of the comparator 56-2 In the comparator 57-1 supplied with 2 being true, as shown in FIG. 15 (i), its output signal countinc 1 is set to true.
As a result, the counter 54-1 counts up, and the count data countdat. 1 becomes “5” as shown in FIG.
At this time, the counter 54-2 is returned to the initial value 0 via the selector 53-2 in accordance with the control signal CNT1RETMD.
At this time, in the counter 54-0, as shown in FIG. 15 (h), the output signal countinc of the comparator 57-0. Since 0 is false (low level in FIG. 15), the count-up operation is not started.
[0468]
Count data countdat of the counter 54-2 When 2 becomes “1” again as shown in FIG. 15C, the counter 54-1 is repeatedly counted up.
As shown in FIG. 15B, the count data countdat of the counter 54-1. When 1 becomes “10”, it becomes equal to the end value signal COUNT1FIN. Therefore, a signal endsig1 indicating that is supplied to the comparator 56-1, and as shown in FIG. 1 output signal countend 1 is set to true and supplied to the comparators 57-0 and 57-2 and the control signal generator 61.
[0469]
Output signal countend of the comparator 56-1 In the comparator 57-0 to which 1 is supplied as true, as shown in FIG. 0 is set to true.
As a result, the counter 54-0 counts up and count data countdat. 0 is updated from “0” to “3” as shown in FIG.
[0470]
In the arithmetic unit with selector 58 that has received the control signal COUNTSUM, the generated address is the count data countdat of the counter 54-0. 0, the count data countdat of the counter 54-1 1 and the count data countdat of the counter 54-2 Since the mode is such that the total value of 2 is output, the total value of the counter is output as the address signal GENADR from the mask generator 60 as shown in FIG.
[0471]
Further, the control signal CTRLMD is output from the output signal countend of the comparator 56-1. 1 and the output signal countend of the comparator 56-2 When it is supplied to the control signal generator 61 so that the control signal CTRL is output when 2 is true, CTRL becomes true at the timing when both signals become true, as shown in FIG. .
[0472]
As described above, according to the eleventh embodiment, when an attempt is made to perform complicated loop nesting, FFT access pattern, bit reverse, etc., which cannot be generated by a conventional DSP or the like, the address is automatically set. Can be generated. For this reason, there is no need to perform address calculation using the ALU, and there is an advantage that the number of cycles required for processing is reduced and efficiency is improved.
[0473]
In the above description, an example of a triple loop has been described with reference to FIG. 14, but the present invention is not limited to this, and various modes with different numbers of counters are possible. Needless to say.
[0474]
A general implementation example in which the number of counters is an extension of the above-described example will be described below.
[0475]
This address generation device includes counters Counter i and Counter x, arithmetic units INCDECi and INCDECx, arithmetic units with selectors SUMi and ADRSUM, selectors SELi and SELx, comparators END, ENDi, ENDx and INCi, bit inverter BRV, and mask generation Is constituted by a device ADRMSK (where 0 ≦ i ≦ n−1).
[0476]
This address generator is supplied with input signals COUNTISTP, COUNTINI, COUNTIFIN, COUNTxFIN, OFFSET, MASK, control signals CNTiNIMD, CNTiRETMD, CNTiENDMD, CNTiINCMD, CTRLMD, COUNTSUM, MSKMD, COUNTEN, and TR The address GENADR is output.
[0477]
Here, for all i of i = 0 to n−1, the counter Counter i is the count data countdat. i is stored and the counter Counter x is the count data countdat Store x.
[0478]
For all i of i = 0 to n−1, the arithmetic unit INCDECi determines the step value signal COUNTTiSTP and the count data countdat of the counter Counter i according to the value of the control signal CNTiINIMD. The result of computing i is the signal countcal output as i, and the arithmetic unit INCDECx outputs the end value signal COUNTxFIN and the count data countdat of the counter Counter x The result of computing x is the signal countcal Output x.
[0479]
For all i of i = 0 to n−1, the computing unit SUMi with selector selects the initial value signal COUNTiINI and the output signal countcal of the computing unit INCDECi according to the value of the control signal CNTiRETMD. 0, countcal 1, ..., countcal The result of calculating n−1 is output to the counter Counter i via the selector SELi.
[0480]
For all i of i = 0 to n−1, the comparator END counts the count data countdat of the counter Counter i. 0, countdat 1, ..., countcal n-1, count data countdat of counter Counter x x, initial value signals COUNT0INI, COUNT1INI,..., COUNTn-1INI, end value signals COUNT0FIN, COUNT1FIN,. 0, countdat 1, ..., countcal n-1, count data countdat of counter Counter x , COUNTn-1INI, end value signals COUNT0FIN, COUNT1FIN,..., COUNTn-1FIN are output as a signal endsigx.
[0481]
For all i of i = 0 to n−1, the comparator ENDi determines the signal countend from the value of the output signal endsigni of the comparator END according to the value of the control signal CNTiENDMD. i, and the comparator ENDx determines the signal countend from the value of the output signal endsigx of the comparator END. Generate x.
[0482]
For all i of i = 0 to n−1, the comparator INCi outputs the output of the comparator ENDi for all j (j! = i) of j = 0 to n−1 according to the value of the control signal CNTiINCMD. Signal countend j value to signal countinc Generate 0.
[0483]
For all i of i = 0 to n−1, the selector SELi outputs the output signal countinc of the comparator INCi. i, output signal countend of the comparator ENDi Depending on the value of i, the output signal countcl of the arithmetic unit INCDECi i, an initial value signal COUNTININI, an output signal countret of the arithmetic unit SUMi Select the value of i and count data countdat of counter Counter i i is set, and the selector SELx outputs the output signal countend of the comparator ENDx. Depending on the value of x, the output signal countcal of the arithmetic unit INCDECx x, the value of the initial value signal COUNTxINI is selected, and the count data countdat of the counter Counter x is selected. Set x.
[0484]
The arithmetic unit ADRSUM with selector selects the count data countdat of the counter Counter i according to the value of the control signal COUNTSUM. 0, countdat 1, ..., countcal n-1, count data countdat of counter Counter x x, a signal sumdr is generated from the input signal OFFSET.
[0485]
The bit inverter BRV generates a signal brvadr from the output signal sumadr of the arithmetic unit with selector ADRSUM according to the value of the control signal MSKMD.
[0486]
The mask generator ADRMSK generates an address signal GENADR from the bit inverter brvadr, the output signal sumadr of the arithmetic unit with selector ADRSUM, and the input signal MASK according to the value of the control signal MSDMD.
[0487]
The control signal generator CTRLGEN generates the count data countdat of the counter Counter i according to the value of the control signal CTRLMD. 0, countdat 1, ..., countcal A control signal CTRL is generated from n-1.
The control signal generator CTRLGEN validates the address valid signal VALID while the address is being generated.
[0488]
In the address generation device having the above-described configuration, the following processing is performed for all i of i = 0 to n-1.
[0489]
For all i of i = 0 to n−1, the arithmetic unit INCDECi performs one of the following operations according to the value of the control signal CNTiINIMD.
[0490]
[Equation 26]
countcal i = COUNTITSTP + countdat i,
countcal i = COUNTITSTP- + countdat i
[0491]
For all i of i = 0 to n−1, the calculator with selector SUMi performs one of the following calculations according to the value of the control signal CNTiRETMD.
[0492]
[Expression 27]
countret i = COUNTIINI,
countret i = countcal 0,
countret i = countcal 1,
...
countret i = countcal n-1,
countret i = COUNTIINI + countcal 0,
countret i = COUNTIINI + countcal 1,
...
countret i = COUNTIINI + countcal n-1
[0493]
For all i of i = 0 to n−1, the comparator END counts the count data countdat. When 0 and the initial value signal COUNT0INI are equal, endsigi = INI0, count data countdat 1 and when the initial value signal COUNT1INI is equal, endsigi = INI1,..., Count data countdat When n−1 is equal to the initial value signal COUNTn−1INI, endsigi = INIn−1 is set.
Similarly, the comparator END receives count data countdat. When 0 and the end value signal COUNT0FIN are equal, endsigi = FIN0, count data countdat When the end value signal COUNT1FIN is equal to 1, endsigi = FIN1,..., Count data countdat When n−1 and the end value signal COUNTn−1FIN are equal, endsigi = FINn−1 is set.
The comparator END also counts the count data countdat. 0 and countdat When 1 is equal, endsigi = eq01, count data countdat 0 and countdat When 2 is equal, endsigi = eq02, ... count data countdat 0 and countdat When n-1 is equal, endsigi = eqn-1, ..., countdat n-1 and countdat Sets endsigi = eqn-1n-2 when n-2 is equal.
[0494]
For all i of i = 0 to n−1, the comparator ENDi determines that the signal countend if the value of the control signal CNTiENDMD matches the value of the signal endsigni. If i is set to true and does not match, the signal countend Set false to i.
[0495]
For all i of i = 0 to n−1, the comparator INCi determines the signal countend for all j of j = 0 to n−1 (where j! = i), depending on the value of the control signal CNTiINCMD. The signal countinc when j is true set i to true and signal countend The signal countinc when j is false Set false to i.
Alternatively, the comparator i outputs the signal countend for all j (j! = J) where j = 0 to n−1 and all k (where k! = I) where k = 0 to n−1. j is true and the signal countend The signal countinc when k is true set i to true, otherwise signal counttin Set false to i.
[0496]
The selector-equipped computing unit ADRSUM performs any computation according to the value of the control signal COUNTSUM.
[0497]
[Expression 28]
Figure 0003846196
[0498]
The bit inverter BRV determines m according to the value of the control signal MSKMD, and sets the bit inversion from the LSB to m−1 bits of the generation signal sumadr of the arithmetic unit with selector ADRSUM in the signal brvadr.
[0499]
The mask generator ADRMSK selects the generation signal brvadr of the bit inverter BRV and the generation signal sumadr of the selector-equipped arithmetic unit ADRSUM according to the value of the control signal MSKMD, and the result and the value of the input signal MASK in units of bits. Any one of AND (logical product), OR (logical sum), and XOR (exclusive logical sum) is performed to generate the signal GENADR.
[0500]
The control signal generator CTRLGEN generates count data countdat according to the value of the control signal CTRLMD. Count data countdat when 0 is true When 1 is true, count data countdat When n-1 is true, the count data countdat 0 is true and count data countdat When 1 is true, the count data countdat 0 is true and count data countdat When 2 is true, ..., count data countdat 0 is true and count data countdat When n-1 is true, count data countdat n-2 is true and the count data countdat The control signal CTRL is validated in any case when n-1 is true, otherwise the control signal CTRL is invalidated, and the address valid signal VALID is validated during an address generation period.
Further, according to the value of the control signal COUNTEN, the internal counter Counteri (where 0.ltoreq.i.ltoreq.n-1) and count-up are permitted / not permitted.
[0501]
Also in the general example described above, the same function and effect as those of the apparatus of FIG. 14 described above can be obtained.
[0502]
12th embodiment
FIG. 16 is a diagram for explaining the twelfth embodiment of the present invention, and is a block diagram showing an example of a data read system of the interleave device according to the present invention.
[0503]
This interleaving device 70 is a device that can realize access that requires a dual port memory for a specific access pattern by using a single port memory, and can be used for data access of an FFT operation or the like.
Therefore, the present interleave device 70 can be applied to a data transmission system from the data memory of the arithmetic system of FIG. 12 showing the tenth embodiment described above to the arithmetic device, for example.
In the following description, it is assumed that a single port memory (not shown) has a memory bank MBNK0 and a memory bank MBNK1, and the interleave device 70 accesses the memory bank MBNK0 and the memory bank MBNK1.
[0504]
As shown in FIG. 16, the interleaving device 70 includes a first delay device (DFF0) 71-0, a second delay device (DFF1) 71-1, a first selection device (sel0) 72-0, and It has the 2nd selection apparatus (sel1) 72-1.
[0505]
The interleave device 70 has a read data input MBNKR0 from the memory bank MBNK0, a read data input MBNKR1 from the memory bank MBNK1, and read data outputs MEMR0 and MEMR1, and is supplied with control signals mbselr0 and mbselr1.
[0506]
First delay device 71-0 is formed of, for example, a D-type flip-flop, causes a delay of one cycle, delays read data input MBNKR0 from memory bank MBNK0 by one cycle, and outputs signal mbnkr0 d is output to the first selection device 72-0 and the second selection device 72-1.
[0507]
Second delay device 71-1 is formed of, for example, a D-type flip-flop, causes a delay of one cycle, delays read data input MBNKR1 from memory bank MBNK1 by one cycle, and outputs signal mbnkr1 d is output to the first selection device 72-0 and the second selection device 72-1.
[0508]
The first selection device 72-0 includes a read data input MBNKR0 from the memory bank MBNK0, a read data input MBNKR1 from the memory bank MBNK1, and an output signal mbnkr0 from the first delay device 71-0. d and the output signal mbnkr1 of the second delay device 71-1. d is input, and in accordance with the value of the control signal mbselr0, the read data input MBNKR0 from the memory bank MBNK0, the read data input MBNKR1 from the memory bank MBNK1, and the output signal mbnkr0 of the first delay device 71-0 d and the output signal mbnkr1 of the second delay device 71-1. Any value of d is selected as the read data output MEMR0.
[0509]
The second selection device 72-1 includes a read data input MBNKR0 from the memory bank MBNK0, a read data input MBNKR1 from the memory bank MBNK1, and an output signal mbnkr0 from the first delay device 71-0. d and the output signal mbnkr1 of the second delay device 71-1. d is input, and in accordance with the value of the control signal mbselr1, the read data input MBNKR0 from the memory bank MBNK0, the read data input MBNKR1 from the memory bank MBNK1, and the output signal mbnkr0 of the first delay device 71-0 d and the output signal mbnkr1 of the second delay device 71-1. Any value of d is selected as the read data output MEMR1.
[0510]
Next, the operation of the above configuration will be described with reference to FIG.
[0511]
FIG. 17 is a timing chart for explaining the operation of the read interleaving apparatus of FIG.
In this timing chart, in the first two cycles (cycle 0, cycle 1), normal memory access, that is, the read data input MBNKR0 from the memory bank MBNK0 is sent to the read data output MEMR0, and the data read from the memory bank MBNK1 to the read data output MEMR1. Represents an access to send MBNKR1, and the remaining cycles (cycle 2) use the read data outputs MEMR0 and MEMR1 simultaneously with the read data input MBNKR0 from the memory bank MBNK0 during one cycle, or read from the memory bank MBNK1 during one cycle. The case where the data of the data input MBNKR1 are used simultaneously is shown.
[0512]
As shown in FIG. 17A, the data input MBNKR0 read from the memory bank MBNK0 in cycle 0 becomes even0 data.
In cycle 1, the read data input MBNKR0 becomes even1, and the read data input MBNKR1 from the memory bank MBNK1 becomes odd0 as shown in FIG.
Then, the read data input MBNKR0 is directly input to the first selection device 72-0 and the second selection device 72-1, and is delayed by one cycle by the first delay device 71-0. Signal mbnkr0 d is input to the first selection device 72-0 and the second selection device 72-1.
Similarly, the read data input MBNKR1 is directly input to the first selection device 72-0 and the second selection device 72-1 as it is, and is delayed by one cycle by the second delay device 71-1. , Signal mbnkr1 d is input to the first selection device 72-0 and the second selection device 72-1.
[0513]
Then, as shown in FIGS. 17C and 17D, in the cycle 1, since the data even0 and odd0 are output as the read data outputs MEMR0 and MEMR1, the control signal mbselr0 is changed as shown in FIG. The signal mbnkr0 causing a one cycle delay of the data input MBNKR0 The first selection device 72-0 is supplied to select d. As a result, the read data output MEMR0 of the first selection device 72-0 becomes the data even0.
Similarly, the control signal mbselr1 is supplied to the second selection device 72-1 so as to select the data input MBNKR1 as shown in FIG. 17 (f). As a result, the read data output MEMR1 of the second selection device 72-1 becomes the data odd0.
[0514]
In cycle 2, the read data input MBNKR0 becomes data even2 as shown in FIG. 17A, and the read data input MBNKR1 becomes data odd1 as shown in FIG. 17B.
Then, as shown in FIGS. 17C and 17D, in the cycle 2, since the data even1 and odd1 are output as the read data outputs MEMR0 and MEMR1, the control signal mbselr0 is as shown in FIG. 17E. The signal mbnkr0 causing a one cycle delay of the data input MBNKR0 The first selection device 72-0 is supplied to select d. As a result, the read data output MEMR0 of the first selection device 72-0 becomes the data even1.
Similarly, the control signal mbselr1 is supplied to the second selection device 72-1 so as to select the data input MBNKR1 as shown in FIG. 17 (f). As a result, the read data output MEMR1 of the second selection device 72-1 becomes the data odd1.
[0515]
In cycle 3, the read data input MBNKR0 becomes data even3 as shown in FIG. 17A, and the read data input MBNKR1 becomes data odd2 as shown in FIG. 17B.
Then, as shown in FIGS. 17C and 17D, in the cycle 3, since the data even2 and odd3 are output as the read data outputs MEMR0 and MEMR1, the control signal mbselr0 is changed as shown in FIG. The signal mbnkr0 causing a one cycle delay of the data input MBNKR0 The first selection device 72-0 is supplied to select d. As a result, the read data output MEMR0 of the first selection device 72-0 becomes the data even2.
Similarly, the control signal mbselr1 is supplied to the second selection device 72-1 so as to select the data input MBNKR0 as shown in FIG. 17 (f). As a result, the read data output MEMR1 of the second selection device 72-1 becomes the data even3.
[0516]
In cycle 4, the read data input MBNKR0 becomes data even4 as shown in FIG. 17A, and the read data input MBNKR1 becomes data odd3 as shown in FIG. 17B.
Then, as shown in FIGS. 17C and 17D, in cycle 4, since data odd2 and odd3 are output as read data outputs MEMR0 and MEMR1, the control signal mbselr0 is as shown in FIG. 17E. The signal mbnkr1 causing a one cycle delay of the data input MBNKR1 The first selection device 72-0 is supplied to select d. As a result, the read data output MEMR0 of the first selection device 72-0 becomes the data odd2.
Similarly, the control signal mbselr1 is supplied to the second selection device 72-1 so as to select the data input MBNKR1 as shown in FIG. 17 (f). As a result, the read data output MEMR1 of the second selection device 72-1 becomes the data odd3.
[0517]
As described above, according to the twelfth embodiment, the read data input MBNKR0 from the memory bank MBNK0 is delayed by one cycle, and the signal mbnkr0 The first delay device 71-0 that outputs to the first selection device 72-0 and the second selection device 72-1 as d and a delay of one cycle are generated, and the read data input MBNKR1 from the memory bank MBNK1 is generated. Is delayed by one cycle and the signal mbnkr1 The first selection device 72-0 and the second delay device 71-1 output to the second selection device 72-1 as d and the read data input from the memory bank MBNK0 according to the value of the control signal mbselr0 MBNKR0, read data input MBNKR1 from the memory bank MBNK1, and output signal mbnkr0 of the first delay device 71-0 d and the output signal mbnkr1 of the second delay device 71-1. From the first selection device 72-0 that selects any value of d as the read data output MEMR0, and from the read data input MBNKR0 and the memory bank MBNK1 from the memory bank MBNK0 according to the value of the control signal mbselr1 Read data input MBNKR1 and output signal mbnkr0 of the first delay device 71-0 d and the output signal mbnkr1 of the second delay device 71-1. In the case of a specific access pattern even in a situation where a dual port memory (2R2W memory) is required, since the second selection device 72-1 for selecting any value of d as the read data output MEMR1 is provided. The same function can be realized using a single port memory (1R1W memory).
As a result, the memory area can be reduced, the process portability can be improved, and continuous memory access can be realized.
[0518]
13th Embodiment
FIG. 18 is a diagram for explaining a thirteenth embodiment of the present invention, and is a block diagram showing an example of a data writing system of the interleave device according to the present invention.
[0519]
The interleaving device 80 is a device that can realize access that requires a dual port memory for a specific access pattern by using a single port memory, and can be used for data access of an FFT operation or the like.
Therefore, this interleaving device 80 can be applied to a data transmission system for writing data to the data memory of the calculation results of the calculation device of the calculation system of FIG. 12 showing the tenth embodiment described above, for example.
In the following description, it is assumed that the single port memory (not shown) includes the memory bank MBNK0 and the memory bank MBNK1, and the interleave device 80 accesses the memory bank MBNK0 and the memory bank MBNK1.
[0520]
As shown in FIG. 18, the interleave device 80 includes a first delay device (DFF0) 81-0, a second delay device (DFF1) 81-1, a first selection device (sel0) 82-0, and A second selection device (sel1) 82-1 is included.
[0521]
The interleaving device 80 has a write data input MEMW0 from the series 0, a write data input MEMW1 from the series 1, a write data output MBNKW0 to the memory bank MBNK0, and a write data output MBNKW1 to the memory bank MBNK1. Signals mbselw0 and mbselw1 are supplied.
[0522]
The first delay device 81-0 is constituted by, for example, a D-type flip-flop, causes a delay of one cycle, delays the write data input MEMW0 from the series 0 by one cycle, and generates a signal memw0. d is output to the first selection device 82-0 and the second selection device 82-1.
[0523]
Second delay device 81-1 is constituted by, for example, a D-type flip-flop, causes a delay of one cycle, delays write data input MEMW1 from series 1 by one cycle, and generates signal memw1 d is output to the first selection device 82-0 and the second selection device 82-1.
[0524]
The first selection device 82-0 includes a write input MEMW0 from the series 0, a write data input MEMW1 from the series 1, and an output signal memw0 from the first delay device 81-0. d and the output signal memw1 of the second delay device 81-1 d is input, and depending on the value of the control signal mbselw0, the write input MEMW0 from the series 0, the write data input MEMW1 from the series 1, and the output signal memw0 of the first delay device 81-0 d and the output signal memw1 of the second delay device 81-1 Any value of d is selected as the write data output MBNKW0.
[0525]
The second selection device 82-1 includes a write input MEMW0 from the series 0, a write data input MEMW1 from the series 1, and an output signal memw0 from the first delay device 81-0. d and the output signal memw1 of the second delay device 81-1 d as an input, and depending on the value of the control signal mbselw1, the write input MEMW0 from the series 0, the write data input MEMW1 from the series 1, and the output signal memw0 of the first delay device 81-0 d and the output signal memw1 of the second delay device 81-1 Any value of d is selected as the write data output MBNKW1.
[0526]
Next, the operation of the above configuration will be described with reference to FIG.
[0527]
FIG. 19 is a timing chart for explaining the operation of the write interleaving apparatus of FIG.
In this timing chart, in the first two cycles (cycle0, cycle1), normal memory access, that is, write data output MENK0 from series 0 is sent to write data output MBNKW0 to memory bank MBNK0, and write data output to memory bank MBNK1 is sent. This represents an access to send the write data input MEMW1 from the series 1 to MBNKW1, and in the remaining cycles (cycle 2), the write data inputs MEMW0 and MEMW1 are simultaneously written to the memory banks MBNK0 and MBNK1 as the write data output MBNKW0 or the write data output MBNKW1. It is necessary to do.
[0528]
  In cycle 0, write data input MEMW0 from series 0 becomes even0 data as shown in FIG. Further, the write data input MEMW1 from the series 1 is shown in FIG.Shown inThus, the data becomes odd0.
  The write data input MEMW0 is directly input to the first selection device 82-0 and the second selection device 82-1 as it is, and is delayed by one cycle by the eighth delay device 81-0. Signal memw0 d is input to the first selection device 82-0 and the second selection device 82-1.
  Similarly, the write data input MEMW1 is directly input to the first selection device 82-0 and the second selection device 82-1 as it is, and is delayed by one cycle by the second delay device 81-1. , Signal memw1 d is input to the first selection device 82-0 and the second selection device 82-1.
[0529]
Then, as shown in FIGS. 19C and 19D, in the cycle 0, the data even0 is output as the write data output MBNKW0, so that the control signal mbselw0 sets the data input MEMW0 as shown in FIG. The first selection device 82-0 is supplied for selection. As a result, the write data output MBNKW0 of the first selection device 82-0 becomes the data even0.
[0530]
In cycle1, the write data input MEMW0 from the series 0 becomes even1 data as shown in FIG. Further, the write data input MEMW1 from the series 1 becomes the data of odd1 as shown in FIG.
Then, as shown in FIGS. 19C and 19D, since the data even1 is output as the write data output MBNKW0 in cycle1, the control signal mbselw0 sets the data input MEMW0 as shown in FIG. 19E. The first selection device 82-0 is supplied for selection. As a result, the write data output MBNKW0 of the first selection device 82-0 becomes the data even1.
Similarly, as shown in FIG. 19F, the control signal mbselw1 is a signal memw1 that causes a one-cycle delay of the data input MEMW1. It is supplied to the second selection device 82-1 so as to select d. As a result, the write data output MBNKW1 of the second selection device 82-1 becomes the data odd0.
[0531]
In cycle2, the write data input MEMW0 from the series 0 becomes even2 data as shown in FIG. Further, the write data input MEMW1 from the series 1 becomes even3 data as shown in FIG.
Then, as shown in FIGS. 19 (c) and 19 (d), in cycle2, since the data even2 is output as the write data output MBNKW0, the control signal mbselw0 sets the data input MEMW0 as shown in FIG. 19 (e). The first selection device 82-0 is supplied for selection. As a result, the write data output MBNKW0 of the first selection device 82-0 becomes the data even2.
Similarly, as shown in FIG. 19F, the control signal mbselw1 is a signal memw1 that causes a one-cycle delay of the data input MEMW1. It is supplied to the second selection device 82-1 so as to select d. As a result, the write data output MBNKW1 of the second selection device 82-1 becomes the data odd1.
[0532]
In cycle 3, the write data input MEMW0 from the series 0 becomes odd2 data as shown in FIG. Further, the write data input MEMW1 from the series 1 becomes odd3 data as shown in FIG.
Then, as shown in FIGS. 19C and 19D, since the data even3 is output as the write data output MBNKW0 in the cycle 3, the control signal mbselw0 is the data input MEMW1 as shown in FIG. 19E. Signal memw1 that caused a one cycle delay The first selection device 82-0 is supplied to select d. As a result, the write data output MBNKW0 of the first selection device 82-0 becomes data even3.
Similarly, the control signal mbselw1 is supplied to the second selection device 82-1 so as to select the data input MEMW0 as shown in FIG. 19 (f). As a result, the write data output MBNKW1 of the second selection device 82-1 becomes the data odd2.
[0533]
Thereafter, the contents of cycle2 and cycle3 are repeated.
[0534]
As described above, according to the thirteenth embodiment, the write data input MEMW0 from the series 0 is delayed by one cycle, and the signal memw0 The first delay unit 81-0 and the first delay unit 81-0 output to the second selection unit 82-1 as d and the write data input MEMW1 from the series 1 are delayed by one cycle, and the signal memw1 d as the first selection device 82-0, the second delay device 81-1 output to the second selection device 82-1, and the write input MEMW0 from the series 0 according to the value of the control signal mbselw0, Write data input MEMW1 from series 1, output signal memw0 of first delay device 81-0 d and the output signal memw1 of the second delay device 81-1 The first selection device 82-0 that selects any value of d as the write data output MBNKW0, and the write input MEMW0 from the series 0 and the write data from the series 1 according to the value of the control signal mbselw1 Input MEMW1, output signal memw0 of first delay device 81-0 d and the output signal memw1 of the second delay device 81-1 Since the second selection device 82-1 for selecting one of the values of d as the write data output MBNKW1 is provided, the dual port memory (2R2W memory) is similar to the twelfth embodiment described above. Even in a necessary situation, an equivalent function can be realized by using a single port memory (1R1W memory) in the case of a specific access pattern.
As a result, the memory area can be reduced, the process portability can be improved, and continuous memory access can be realized.
[0535]
Fourteenth embodiment
FIG. 20 is a diagram for explaining a fourteenth embodiment of the present invention, and is a configuration diagram showing a generalized example of a data read system of an interleave device according to the present invention.
[0536]
The fourteenth embodiment is a generalization of the twelfth embodiment having two delay devices and two selection devices, and each of n read data inputs MBNKR0 to MBNKRn−1 has n pieces. Delay devices 71A-00 to 71A-0n-1,..., 71A- (n-1) 0 to 71A- (n-1) n-1, each delay device 71A-00 to 71A-0n-1,. , 71A- (n-1) 0 to 71A- (n-1) n-1 delayed signal mbnkr0 1d to mbnkr0 nd, mbnkr1 1d to mbnkr1 In this configuration, nd is input in parallel to the n selection devices 72A-0 to 72A-n-1.
[0537]
That is, the interleaving device 70A includes n × n first delay devices 71A-00 to 71A-0n−1,..., N-th delay devices 71A- (n−1) 0 to 71A- (n−1). ) N-1 and n first to nth selection devices 72A-0 to 72A-n-1.
[0538]
The interleaving device 70A then reads the read data input MBNKR0 from the memory bank MBNK0, the read data input MBNKR1 from the memory bank MBNK1,... -1 and a control signal mbselr0, mbselr1, ..., mbseln-1 is supplied.
[0539]
The first delay device 71A-00 is configured by, for example, a D-type flip-flop, and generates a delay of m cycles (1 ≦ m ≦ n) for an arbitrary k (0 ≦ k ≦ n−1). The read data input MBNKR0 from the memory bank MBNK0 is delayed by m cycles and the signal mbnkr0 1d is output to the first to nth selection devices 72A-0 to 72A-n-1.
[0540]
The first delay device 71A-01 is configured by, for example, a D-type flip-flop, and generates a delay of m cycles (1 ≦ m ≦ n) for an arbitrary k (0 ≦ k ≦ n−1). The read data input MBNKR0 from the memory bank MBNK0 is delayed by m cycles and the signal mbnkr0 2d is output to the first to nth selection devices 72A-0 to 72A-n-1.
[0541]
Similarly, the first delay device 71A-0n-1 is constituted by, for example, a D-type flip-flop, and is delayed for m cycles (1 ≦ m ≦ n) for an arbitrary k (0 ≦ k ≦ n−1). Which delays the read data input MBNKR0 from the memory bank MBNK0 by m cycles and generates a signal mbnkr0. nd is output to the first to nth selection devices 72A-0 to 72A-n-1.
[0542]
The n-th delay device 71A- (n-1) 0 is configured by, for example, a D-type flip-flop, and delays m cycles (1 ≦ m ≦ n) for an arbitrary k (0 ≦ k ≦ n−1). A delay device for delaying the read data input MBNKRn-1 from the memory bank MBNKn-1 by m cycles and generating a signal mbnkrn-1 1d is output to the first to nth selection devices 72A-0 to 72A-n-1.
[0543]
The n-th delay device 71A- (n-1) 1 is configured by, for example, a D-type flip-flop, and delays m cycles (1 ≦ m ≦ n) for an arbitrary k (0 ≦ k ≦ n−1). A delay device for delaying the read data input MBNKRn-1 from the memory bank MBNKn-1 by m cycles and generating a signal mbnkrn-1 2d is output to the first to nth selection devices 72A-0 to 72A-n-1.
[0544]
Similarly, the n-th delay device 71A- (n-1) n-1 is constituted by, for example, a D-type flip-flop, and for any k (0 ≦ k ≦ n−1), m cycles (1 ≦ m .Ltoreq.n), which delays the read data input MBNKRn-1 from the memory bank MBNKn-1 by m cycles and generates a signal mbnkrn-1. nd is output to the first to nth selection devices 72A-0 to 72A-n-1.
[0545]
The first selection device 72A-0 includes a read data input MBNKR0 from the memory bank MBNK0, a read data input MBNKR1 from the memory bank MBNK1, ..., a read data input MBNKRn-1 from the memory bank MBNKn-1, a first delay. Output signal mbnkr0 of devices 71A-00 to 71A-0n-1 1d to mbnkr0 nd, ..., n-th delay device 71A- (n-1) 0 to 71A- (n-1) n-1 output signal mbnkr1 1d to mbnkr1 nd is input, and depending on the value of the control signal mbselr0, the read data input MBNKR0 from the memory bank MBNK0, the read data input MBNKR1 from the memory bank MBNK1, ..., the read data input MBNKRn-1, Output signal mbnkr0 of the first delay devices 71A-00 to 71A-0n-1 1d to mbnkr0 nd, ..., n-th delay device 71A- (n-1) 0 to 71A- (n-1) n-1 output signal mbnkr1 1d to mbnkr1 Any value of nd is selected as the read data output MEMR0.
[0546]
Similarly, the first selection device 72A-n-1 reads data input MBNKR0 from the memory bank MBNK0, read data input MBNKR1 from the memory bank MBNK1, ..., read data input MBNKRn- from the memory bank MBNKn-1. 1. Output signal mbnkr0 of first delay device 71A-00 to 71A-0n-1 1d to mbnkr0 nd, ..., n-th delay device 71A- (n-1) 0 to 71A- (n-1) n-1 output signal mbnkr1 1d to mbnkr1 nd is input, and depending on the value of the control signal mbselrn-1, the read data input MBNKR0 from the memory bank MBNK0, the read data input MBNKR1 from the memory bank MBNK1, ..., the read data input MBNKRn- from the memory bank MBNKn-1 1. Output signal mbnkr0 of first delay device 71A-00 to 71A-0n-1 1d to mbnkr0 nd, ..., n-th delay device 71A- (n-1) 0 to 71A- (n-1) n-1 output signal mbnkr1 1d to mbnkr1 Any value of nd is selected as the read data output MEMRn-1.
[0547]
In interleaving device 70A having the above configuration, as described above, n delay devices 71A-00 to 71A-0n-1,..., N for each of n read data inputs MBNKR0 to MBNKRn-1. 71A- (n-1) 0 to 71A- (n-1) n-1, each delay device 71A-00 to 71A-0n-1, ..., 71A- (n-1) 0 to 71A- (n -1) n-1 delayed signal mbnkr0 1d to mbnkr0 nd, mbnkr1 1d to mbnkr1 It is the same as the twelfth embodiment except that nd is inputted in parallel to n selection devices 72A-0 to 72A-n-1, and the functions of the respective parts are also the same. Therefore, the timing chart of the operation is shown in FIG. 21, and the detailed description is omitted here.
[0548]
Therefore, according to the fourteenth embodiment, similarly to the twelfth embodiment described above, even in a situation where a dual port memory (2R2W memory) is required, a single port memory (1R1W memory) is used in the case of a specific access pattern. ) Can be used to achieve an equivalent function.
As a result, the memory area can be reduced, the process portability can be improved, and continuous memory access can be realized.
[0549]
15th embodiment
FIG. 22 is a diagram for explaining a fifteenth embodiment of the present invention, and is a block diagram showing a generalized example of a data writing system of an interleave device according to the present invention.
[0550]
The fifteenth embodiment is a generalization of the twelfth embodiment having two delay devices and two selection devices described above. The fifteenth embodiment has a second configuration for each of n−1 read data inputs MBNKR1 to MBNKRn−1. Delay devices 81A-1,..., Nth delay devices 81A-n-1, and delay signals memw1 of the delay devices 81A-1 to 81A-n-1. 1d to memwn-1 In this configuration, n-1d is input in parallel to n selection devices 82A-0 to 82A-n-1.
[0551]
That is, the interleaving device 80A includes n-1 second to nth delay devices 81A-1 to 81A-n-1, and n first to nth selection devices 82A-0 to 82A-n. -1.
[0552]
Then, the interleaving device 80A includes a write data input MEMW0 from the series 0, a write data input MEMW1 from the series 1, ..., a write data input MEMWn-1 from the series n-1, a write data output MBNKW0 to the memory bank MBNK0, The write data output MBNKW1,... To the memory bank MBNK1,..., The write data output MBNKWn-1 to the memory bank MBNKn-1, and the control signals mbselw0, mbselw1,.
[0553]
The second delay device 81A-1 is configured by, for example, a D-type flip-flop, and generates a delay of m cycles (1 ≦ m ≦ n) for an arbitrary k (0 ≦ k ≦ n−1). The write data input MEMW1 from the series 1 is delayed by one cycle, and the signal memw1 d is output to the first selection device 82A-0 to the nth selection device 82A-n-1.
[0554]
Similarly, the n-th delay device 81A-n-1 is configured by, for example, a D-type flip-flop, and delays for m cycles (1 ≦ m ≦ n) for an arbitrary k (0 ≦ k ≦ n−1). Delaying the write data input MEMWn-1 from the series n-1 by one cycle, and the signal memwn-1 n-1d is output to the first selection device 82A-0 to the nth selection device 82A-n-1.
[0555]
The first selection device 82A-0 includes a write input MEMW0 from the series 0, a write data input MEMW1 from the series 1, ..., a write data input MEMWn-1 from the series n-1, and a second delay device 81A-1. Output signal memw1 1d,..., Output signal memwn-1 of the n-th delay device 81A-n-1 n-1d is input, and depending on the value of the control signal mbselw0, write input MEMW0 from series 0, write data input MEMW1 from series 1,..., write data input MEMWn-1 from series n-1, second Output signal memw1 of the delay device 81A-1 1d,..., Output signal memwn-1 of the n-th delay device 81A-n-1 Any value of n-1d is selected as the write data output MBNKW0.
[0556]
The second selection device 82A-1 includes a write input MEMW0 from the series 0, a write data input MEMW1 from the series 1, ..., a write data input MEMWn-1 from the series n-1, and a second delay device 81A-1. Output signal memw1 1d,..., Output signal memwn-1 of the n-th delay device 81A-n-1 n-1d as an input, and depending on the value of the control signal mbselw1, write input MEMW0 from series 0, write data input MEMW1 from series 1,..., write data input MEMWn-1 from series n-1, second Output signal memw1 of the delay device 81A-1 1d,..., Output signal memwn-1 of the n-th delay device 81A-n-1 Any value of n-1d is selected as the write data output MBNKW1.
[0557]
Similarly, the n-th selection device 82A-n-1 includes write input MEMW0 from series 0, write data input MEMW1 from series 1,..., Write data input MEMWn-1 from series n-1, second Output signal memw1 of the delay device 81A-1 1d,..., Output signal memwn-1 of the n-th delay device 81A-n-1 n-1d as an input, and depending on the value of the control signal mbselwn-1, the write input MEMW0 from series 0, the write data input MEMW1 from series 1, ..., the write data input MEMWn-1 from series n-1, Output signal memw1 of second delay device 81A-1 1d,..., Output signal memwn-1 of the n-th delay device 81A-n-1 One of the values of n-1d is selected as the write data output MBNKWn-1.
[0558]
In the interleaving device 80A having the above configuration, as described above, the thirteenth embodiment is generalized and the second delay device 81A- is applied to each of n−1 read data inputs MBNKR1 to MBNKRn−1. 1,... Have an n-th delay device 81A-n-1, and delay signals memw1 of the delay devices 81A-1 to 81A-n-1 1d to memwn-1 The configuration is the same as that of the thirteenth embodiment except that n-1d is input in parallel to n selection devices 82A-0 to 82A-n-1, and the functions of the respective units are also the same. Therefore, the timing chart of the operation is shown in FIG. 23, and detailed description is omitted here.
[0559]
Therefore, according to the fifteenth embodiment, similarly to the thirteenth embodiment described above, even in a situation where a dual port memory (2R2W memory) is required, a single port memory (1R1W memory) is used in the case of a specific access pattern. ) Can be used to achieve an equivalent function.
As a result, the memory area can be reduced, the process portability can be improved, and continuous memory access can be realized.
[0560]
Sixteenth embodiment
FIG. 24 is a block diagram showing an arithmetic system according to the sixteenth embodiment of the present invention.
[0561]
In the present arithmetic system 90, for example, an arithmetic device capable of reconfiguring the array of arithmetic units according to the first to ninth embodiments described above, coefficient parameters at the time of executing the arithmetic, and the like based on the configuration information is used. It is done.
The calculation system 90 includes a calculation execution unit and a configuration information storage unit that stores configuration information for reconfiguration of the calculation execution unit. The configuration information storage unit uses a CPU to store configuration information of the calculation execution unit. In rewriting, it has a storage unit configured in a ring shape to store a plurality of configuration information, and separates the configuration information storage unit used at the time of executing the operation and the configuration information storage unit for performing rewriting, The overhead associated with rewriting is reduced, or a plurality of configurations can be switched at high speed.
[0562]
Specifically, as shown in FIG. 24, the present calculation system 90 includes a CPU 91 as a control circuit, a configuration information storage unit 92, and a calculation execution unit 93 as main components.
[0563]
The CPU 91 can access the configuration information storage unit 92 via, for example, a bus.
Then, the CPU 91 writes the configuration information CD for reconfiguration of the calculation execution unit 93 in the configuration information storage unit 92 using the write signal CWR.
Further, the CPU 91 uses the shift signal CEX to change the configuration information for reconfiguration of the calculation execution unit 93 to other information already stored.
[0564]
The configuration information storage unit 92 is written with configuration information from the CPU 91 via the bus, and outputs the written configuration information to the calculation execution unit 93.
As shown in FIG. 24, the configuration information storage unit 92 is configured such that, for example, storage units of configuration information “configuration information 1”, “configuration information 2”,...
One of them stores configuration information at the time of execution of the operation, and another one serves as a storage area for writing configuration information from the outside.
Furthermore, the contents of these pieces of configuration information can be exchanged instantaneously all at once.
As a result, the contents of another page can be rewritten at the same time while the operation execution unit 93 performs the operation, and the time overhead conventionally required for rewriting the configuration information as shown in FIG. As shown in FIG. 25B, the time overhead required for rewriting the configuration information can be hidden behind the execution time of the calculation.
[0565]
FIG. 26 is a diagram illustrating a configuration example of a configuration information storage unit capable of holding four pieces of configuration information.
[0566]
The configuration information storage unit 92 includes registers 921 to 924, a selection device 925, and an OR gate 926, as shown in FIG.
In FIG. 26, TCD is an input terminal for configuration information CD, TCWR is an input terminal for write signal CWR, TCEX is an input terminal for shift signal CEX, TCCLK is a clock input terminal, and TOUT is an operation execution section 93 for stored configuration information. Each output terminal is shown.
[0567]
The registers 921 to 924 (CD1 to CD4) are registers for storing configuration information, and these registers 921 to 924 are connected in a ring shape.
Specifically, the output of the register 921 is connected to the input of the register 924 and the output terminal TOUT of the configuration information, the output of the register 924 is connected to the input of the register 923, and the output of the register 923 is the first of the selection device 925. Are connected to the input of the register 922 through the input terminal “0” of the input terminal, and the output of the register 922 is connected to the input of the register 921.
[0568]
Further, the second input terminal “1” of the selection device 925 is connected to the input terminal TCD of the configuration information CD. The control terminal of the selection device 925 is connected to the input terminal TCWR of the write signal CWR.
When the write signal CWR is supplied to the control terminal with the logic “1”, the selection device 925 selects the configuration information CD input to the input terminal TCD and inputs the configuration information CD to the register 922.
On the other hand, when the write signal CWR is supplied to the control terminal with the logic “0”, the selection device 925 selects the output information of the register 923 and inputs it to the register 922.
[0569]
The two-input OR gate 926 has a first input terminal connected to the input terminal TCWR of the write signal CWR, a second input terminal connected to the input terminal TCEX of the shift signal CEX, and an output terminal connected to the control terminal of the register 922. It is connected.
[0570]
The control terminals of the registers 921, 923, and 924 are connected to the input terminal TCEX of the shift signal CEX, and the clock terminals of the registers 921 to 924 are connected to the clock input terminal TCCLK.
[0571]
And these registers 921-924 can memorize | store the bit number of the configuration information which the "reconfigured part" connected ahead is required.
Among these, the contents of the register 921 (CD1) are used as the configuration information of the arithmetic execution unit 93.
Since the output of the register 921 is directly connected to the configuration change circuit of the calculation execution unit 93, when this value is rewritten, it is immediately reflected in the hardware configuration of the calculation execution unit 93.
For this reason, if an external write is performed to the register 921 during the operation of the operation execution unit 93, the result of the operation being executed is affected.
In order to avoid this, the external configuration information CD is written to the register 922 (CD2).
[0572]
The rewriting of the configuration information CD is performed by inputting the configuration information CD to the input terminal TCD and setting the write signal CWR to 1.
In this write operation, the contents of the register 921 (CD1) do not change.
[0573]
In order to reflect the newly written configuration information CD in the configuration of the arithmetic execution unit 93, the write signal “CWR” is set to 0, the shift signal “CEX” is set to 1, and the contents of the register 922 (CD2) are set to the register 921 (CD1 ).
At the same time, the configuration information is rotated and held in the ring in the order of register 921 (CD1) → register 924 (CD4) → register 923 (CD3) → register 922 (CD2).
[0574]
The replacement of the configuration information CD is performed simultaneously for all the configuration information storage units 92, and thus is completed in one cycle of the clock “CCLK”.
If only the above replacement operation is performed without writing new configuration information, the past configuration information for the number of registers constituting the ring can be switched at high speed and reused.
[0575]
When a storage unit that can store a plurality of pieces of configuration information is prepared, there may be a desire to be able to freely replace arbitrary configuration information regardless of the order.
However, for this purpose, the configuration information replacement control unit of the storage unit becomes complicated, and when the information amount of the configuration information of the entire system increases, overhead such as the area occupied by the storage unit and power consumption cannot be ignored.
[0576]
The ring-shaped configuration information switching means according to the sixteenth embodiment cannot immediately call any stored configuration information CD, but simply stores the circuit configuration of the storage unit and the control signal for replacement. It has the feature that can be made.
The restriction that the degree of freedom of replacement of the stored configuration information CD is limited is re-executed when considering a case where a plurality of arithmetic processes included in one signal processing application or the like are executed while switching the configuration. It is considered that the composition is repeated in a fixed pattern according to the algorithm of the application.
[0577]
The arithmetic execution unit 93 has a configuration similar to that of the arithmetic unit as shown in FIG. 1, for example, and a selection device (SEL for selecting a path of coefficients, data, etc. based on the configuration information by the configuration information storage unit 92 ) 931-0 to 931-2, ALU 932 that performs arithmetic operation based on the configuration information (control signal for instructing the operation content) by the configuration information storage unit 92, and the configuration information (the operation content is changed by the configuration information storage unit 92) Control unit 933 that performs a product-sum operation based on a control signal for instructing), and based on the configuration information by the configuration information storage unit 92, the arrangement of the operation units, the coefficient parameter at the time of execution of the calculation, Are reconfigured to perform a specified calculation, and the calculation result is output to, for example, a data memory (not shown).
[0578]
Next, the operation according to the above configuration will be described.
Here, it is assumed that the configuration information CD is held in each of the four registers 921 to 924 of the configuration information storage unit 92.
[0579]
In this case, the contents of the register 921 (CD1) of the configuration information storage unit 92 are used as the configuration information of the calculation execution unit 93.
The output of the register 921 is directly connected to the configuration change circuit of the calculation execution unit 93. For this reason, in the calculation execution unit 93, based on the configuration information stored in the configuration information storage unit 92, the arrangement of the calculators, the coefficient parameters at the time of calculation execution, and the like are reconfigured, and the specified calculation is performed. Then, the calculation result is output to, for example, a data memory (not shown).
[0580]
Here, when rewriting the value of the configuration information CD supplied to the operation execution unit 93, writing to the register 921 from the outside during the operation of the operation execution unit 93 will affect the operation result being executed. become.
In order to avoid this, the external configuration information CD is written to the register 922 (CD2).
[0581]
To rewrite the configuration information CD, the configuration information CD is input from the CPU 91 to the input terminal TCD, and the write signal CWR is set to “1”. As a result, the configuration information CD supplied from the CPU 91 is written into the register 922.
In this writing operation, the contents of the register 921 (CD1) do not change.
[0582]
Next, in order to reflect the newly written configuration information CD in the configuration of the operation execution unit 93, the CPU 91 sets the write signal CWR to “0” and the shift signal CEX to “1”. As a result, the contents of the register 922 (CD2) are transferred to the register 921 (CD1).
At the same time, the configuration information is rotated and held in the ring in the order of register 921 (CD1) → register 924 (CD4) → register 923 (CD3) → register 922 (CD2).
[0583]
The replacement of the configuration information CD is performed simultaneously for all the configuration information storage units 92, and thus is completed in one cycle of the clock “CCLK”.
[0584]
As described above, according to the sixteenth embodiment, in the arithmetic system 90 having the arithmetic device capable of reconfiguring the hardware configuration such as the arrangement of the arithmetic units, the configuration information storage unit 92 that holds the configuration information is provided. , Composed of a plurality of registers 921 to 924 coupled in a ring shape, so that the contents of another configuration information storage unit can be rewritten while performing arithmetic processing using one of the configuration information Since the configuration information rewriting unit and the reconfigurable calculation execution unit 93 are connected and the configuration information stored in each of the registers 921 to 924 can be switched by rotating in the ring, the following The effect can be obtained.
That is, even when the arithmetic unit is executing arithmetic processing, it is possible to set the configuration information to be used next at the same time, and only by switching the configuration without writing new configuration information. There is an advantage that the configuration information used in the above can be reused.
[0585]
That is, the hardware can be reconfigured simultaneously with the execution of the operation, and this overhead can be hidden behind the execution time of the operation.
In addition, due to the ability to hold multiple configuration information at the same time and switch them instantaneously, the configuration information that is used repeatedly is stored at the same time, and they are used by switching them, so that the overhead for reconfiguration There is an advantage that can be made almost zero.
[0586]
In the sixteenth embodiment, a configuration is shown in which four pieces of configuration information can be held. However, any number of pieces of configuration information of two or more may be held as necessary.
[0587]
【The invention's effect】
As described above, according to the present invention, the arithmetic device itself can be reconfigured from the outside. Therefore, not only can the logic level be optimized, but also there is an advantage that an increase in configuration information can be prevented and an arithmetic unit capable of preventing deterioration in area efficiency as an integrated circuit can be realized.
Further, since the arithmetic device can be reconfigured, not only cascade operations but also parallel operations can be realized with the same hardware. Therefore, it is possible to efficiently execute many parallelizable processes by increasing the number of arithmetic devices.
[0588]
Further, when performing a plurality of calculations, it is possible to obtain calculation results at once by assigning each calculation to each calculation device and further cascading the calculation results of the previous stage. Therefore, the number of execution cycles is shortened. Further, since access to the temporary register is reduced, there is an advantage that power consumption can be suppressed.
[Brief description of the drawings]
FIG. 1 is a configuration diagram showing a first embodiment of an arithmetic unit according to the present invention.
2 is a diagram for explaining the operation of the first embodiment. In the arithmetic unit of FIG. 1, n = 4, coefficient input / output, data input / output is 4, and cascade input is 3. FIG. It is a figure which shows a structure of the apparatus of a case.
FIG. 3 is a block diagram showing a second embodiment of the arithmetic device according to the present invention.
FIG. 4 is a diagram for explaining the operation of the second embodiment, and is a diagram showing the configuration of the apparatus when n = 4 in the arithmetic unit of FIG. 3;
FIG. 5 is a block diagram showing a third embodiment of the arithmetic device according to the present invention.
FIG. 6 is a block diagram showing a fourth embodiment of the arithmetic device according to the present invention.
FIG. 7 is a configuration diagram showing a fifth embodiment of an arithmetic device according to the present invention.
FIG. 8 is a configuration diagram showing a sixth embodiment of the arithmetic device according to the present invention.
FIG. 9 is a block diagram showing a seventh embodiment of the arithmetic device according to the present invention.
FIG. 10 is a configuration diagram showing an eighth embodiment of the arithmetic device according to the present invention.
FIG. 11 is a configuration diagram showing a ninth embodiment of the arithmetic device according to the present invention.
FIG. 12 is a configuration diagram showing an arithmetic system according to a tenth embodiment of the present invention.
FIG. 13 is a diagram showing a selection timing example of route selection information selected by an address generated by the address generation device according to the present invention and a control signal;
FIG. 14 is a diagram for explaining an eleventh embodiment of the present invention, and is a block diagram showing an example of an address generation device applicable to the arithmetic system according to the present invention.
FIG. 15 is a diagram for explaining the operation of FIG. 14;
FIG. 16 is a diagram for explaining a twelfth embodiment of the present invention, and is a block diagram showing an example of a data read system of an interleave device according to the present invention.
17 is a timing chart for explaining the operation of the read interleaving apparatus of FIG. 16;
FIG. 18 is a diagram for explaining a thirteenth embodiment of the present invention, and is a block diagram showing an example of a data write system of an interleave device according to the present invention.
19 is a timing chart for explaining the operation of the write interleaving apparatus in FIG. 18;
FIG. 20 is a diagram for explaining a fourteenth embodiment of the present invention, and is a block diagram showing a generalized example of a data read system of an interleave device according to the present invention.
FIG. 21 is a timing chart of the read interleaving apparatus in FIG. 20;
FIG. 22 is a diagram for explaining a fifteenth embodiment of the present invention, and is a block diagram showing a generalized example of a data writing system of an interleave device according to the present invention.
FIG. 23 is a timing chart of the write interleaving apparatus in FIG. 22;
FIG. 24 is a configuration diagram showing an arithmetic system according to a sixteenth embodiment of the present invention.
FIG. 25 is a diagram for explaining the effect of providing the configuration information storage unit according to the present invention.
FIG. 26 is a diagram showing a specific configuration example of a configuration information storage unit according to the present invention.
[Explanation of symbols]
10, 10A, 10-1 to 10-n, 10A-1 to 10A-3 ... arithmetic device, 11 ... first selection device (SELA), 12 ... second selection device (SELB), 13 ... third Selection device (SELC), 14 ... ALU, 15 ... MAC, 16 ... 4th selection device (SELE), 17 ... Register (REG), 18-0 to 18-k ... Coefficient input delay FIFO (C0FIFO to CkFIFO) , 19-0 to 19-m... Data input delay FIFO (D0FIFO to DmFIFO), 20... Arithmetic unit, 21-0, 21-1... Shift arithmetic unit (SFT0, SFT1), 22-0, 22-1. Input selection devices (RSEL0, RSEL1), 23 ... butterfly calculator (BTF0), 24-0, 24-1 ... output selection devices (DSEL0, DSEL1), 25-0, 25-1 ... output selection devices (WSEL0, WSEL1) ), 20 ... arithmetic units, 21A-0 to 21A-3 ... shift arithmetic units (SFT0 to SFT3), 22A-0 to 22A-3 ... input selection devices (RSEL0 to RSEL3), 23A-0, 23A-1 ... butterfly arithmetic units ( BTF0, BTF1), 24A-0 to 24A-3 ... output selection device (DSEL0 to DSEL3), 25A-0 to 25A-3 ... output selection device (WSEL0 to WSEL3), 20B ... calculation device, 23B-2 ... butterfly calculation Units (BTF2), 25B-0 to 25B-3 ... output selection devices (WSEL0 to WSEL3), 20C ... arithmetic units, 22C-0 to 22C-15 ... input selection devices (RSEL0 to RSEL7, BSEL0 to BSEL7), 23C- 0 to 23C-7 ... butterfly calculator (BTF0 to BTF7), 24C-0 to 24A-7 ... output selection device (DS EL0 to DSEL7), 25C-0 to 25C-7 ... output selection device (WSEL0 to WSEL7), 20D ... arithmetic device, 22D-0 to 22D-7 ... input selection device (RSEL0 to RSEL7), 23D-0 to 23C- 6 ... butterfly calculator (BTF0 to BTF6), 24D-0 to 24D-7 ... output selection device (DSEL0 to DSEL7), 25D-0 to 25D-7 ... output selection device (WSEL0 to WSEL7), 30 ... calculation device, 31 ... 1st arithmetic unit (PU), 32 ... 2nd arithmetic unit (BTF), 30A ... Arithmetic unit, 31A ... 1st arithmetic unit (PU), 32A-0 (BTFLa0), ..., 32A-k (BTFLak), 32B-0 (BTFLb0), ..., 32B-m (BTFLbm), 32C-0 (BTFLc0), ..., 32C-n (BTFLcn) 2nd arithmetic unit, 40 ... arithmetic system, 41 ... CPU, 42 ... first route selection information memory, 43 ... second route selection information memory, 44 ... selection device, 45 ... address generation device, 46 ... data memory , 47... Reconfigurable computing device, 50... Address generating device, 51-0 to 51-x... Computing unit (INCDEC0 to INCDECDx), 52-0 to 52-2... Computing unit with selector (SUM0 to SUM2), 53-0 to 53-x: Secretors (SEL0 to SELx), 54-0 to 54-x ... Counter (Counter0 to Counterx), 55-0 ... Comparator (END), 56-0 to 56-x ... Comparator (END1 to ENDx), 57-0 to 57-2 ... comparators (INC0 to INC2), 58 ... operator with selector (ADRSUM), 59 ... bit inverter (B V), 60 ... Mask generator (ADRMSK), 61 ... Control signal generator (CTRLGEN), 70 ... Read-out interleave device, 71-0 ... First delay device (DFF0), 71-1 ... Second delay Device (DFF1), 72-0 ... first selection device (sel0), 72-1 ... second selection device (sel1), 80 ... write interleaving device, 81-0 ... first delay device (DFF0) , 81-1 ... second delay device (DFF1), 82-0 ... first selection device (sel0), 82-1 ... second selection device (sel1), 70A ... read-out interleaving device, 71A-00 ... 71A-0n-1 ... first delay device, 71A- (n-1) 0-71A- (n-1) n-1 ... nth delay device, 72A-0 to 72A-n-1 ... th. 1 to nth selection devices, 80A ... inter Leave device, 81A-1 to 81A-n-1, second delay device to nth delay device, 82A-0 to 82A-n-1, first to nth selection device, 90, computing system, 91 ... CPU, 92 ... Configuration information storage unit, 921 to 924 (CD1 to CD4) ... Register, 925 ... Selection device, 926 ... OR gate, 93 ... Calculation execution unit, 931-0 to 931-2 ... Selection device, 932 ... ALU, 933... Arithmetic unit of MAC structure.

Claims (15)

外部からの制御により演算経路を再構成可能な演算装置であって、
制御信号に応じて複数の入力データから所望のデータを選択する第1の選択手段と、
制御信号に応じて複数の入力データから所望のデータを選択する第2の選択手段と、
制御信号に応じて複数の入力データから所望のデータを選択する第3の選択手段と、
上記第1の選択手段の出力信号、および第2の選択手段の出力信号を入力として、制御信号の指示に応じた演算を行う第1の演算手段と、
上記第1の選択手段の出力信号、第2の選択手段、および第3の選択手段の出力信号を入力として、制御信号の指示に応じた演算を行う第2の演算手段と
を有する演算装置。
An arithmetic device capable of reconfiguring an arithmetic path by external control,
First selection means for selecting desired data from a plurality of input data according to a control signal;
Second selection means for selecting desired data from a plurality of input data according to a control signal;
Third selection means for selecting desired data from a plurality of input data according to a control signal;
The output signal of the first selecting means, and as an input the output signal of the second selection means, a first arithmetic means for performing an operation according to the instruction of the control signal,
An arithmetic unit comprising: an output signal of the first selection means, a second selection means, and an output signal of the third selection means, and a second calculation means for performing a calculation according to an instruction of the control signal .
制御信号に応じて、上記第1の演算手段の出力信号と上記第2の演算手段の出力信号のいずれかを選択する第4の選択手段
をさらに有する請求項1記載の演算装置。
Fourth selection means for selecting either the output signal of the first calculation means or the output signal of the second calculation means in accordance with a control signal
The arithmetic device according to claim 1 , further comprising:
上記第1の演算手段は2項演算が可能で、
上記第2の演算手段は、3項演算が可能である
請求項記載の演算装置。
The first calculation means can perform a binary calculation,
It said second calculating means, calculating apparatus according to claim 1, wherein it is possible ternary operation.
上記第1の演算手段は、2項演算の結果を単項演算し、
上記第2の演算手段は、3項演算の結果を単項演算する
請求項記載の演算装置。
The first calculation means performs a unary operation on the result of the binary operation,
4. The arithmetic unit according to claim 3 , wherein the second arithmetic means performs a single arithmetic operation on a result of the three-term operation .
上記入力データを制御信号に応じた遅延量をもって遅延させて出力する遅延手段
を有する請求項1記載の演算装置。
Delay means for delaying and outputting the input data with a delay amount corresponding to the control signal
The arithmetic unit according to claim 1, comprising:
部からの制御により演算経路を再構成可能な演算装置であって、
制御信号に応じて第1のデータ群から一のデータを選択する第1の選択手段と、
制御信号に応じて第2のデータ群から一のデータを選択する第2の選択手段と、
上記第1の選択手段の出力信号、および第2の選択手段の出力信号を入力として、制御信号の指示に応じた演算を行う第1の演算手段と、
上記第1の選択手段の出力信号、および第2の選択手段の出力信号を入力として、制御信号の指示に応じた演算を行う第2の演算手段と、
制御信号に応じて、上記第1の演算手段の出力信号と上記第2の演算手段の出力信号のいずれかを選択する第4の選択手段と
を有する演算装置。
Calculating path under the control of the external a reconfigurable computing device,
First selecting means for selecting one data from the first data group in response to the control signal;
Second selection means for selecting one data from the second data group according to the control signal;
First calculation means for performing calculation according to an instruction of a control signal, using the output signal of the first selection means and the output signal of the second selection means as inputs;
Second calculation means for performing an operation in accordance with an instruction of a control signal using the output signal of the first selection means and the output signal of the second selection means as inputs;
Fourth selection means for selecting either the output signal of the first calculation means or the output signal of the second calculation means in accordance with a control signal;
A computing device having
外部からの制御により演算経路を再構成可能な演算装置であって、
制御信号に応じて第1のデータ群から一のデータを選択する第1の選択手段と、
制御信号に応じて第2のデータ群から一のデータを選択する第2の選択手段と、
制御信号に応じて第3のデータ群から一のデータを選択する第3の選択手段と、
上記第1の選択手段の出力信号、第2の選択手段の出力信号、および第3の選択手段の出力信号のうちの少なくとも2つの信号を入力として、制御信号の指示に応じた演算を行う第1の演算手段と、
上記第1の選択手段の出力信号、第2の選択手段の出力信号、および第3の選択手段の出力信号のうちの少なくとも2つの信号を入力として、制御信号の指示に応じた演算を行う第2の演算手段と、
制御信号に応じて、上記第1の演算手段の出力信号と上記第2の演算手段の出力信号のいずれかを選択する第4の選択手段と
を有する演算装置。
An arithmetic device capable of reconfiguring an arithmetic path by external control,
First selecting means for selecting one data from the first data group in response to the control signal;
Second selection means for selecting one data from the second data group according to the control signal;
Third selecting means for selecting one data from the third data group in response to the control signal;
A second calculation is performed according to a control signal instruction, with at least two of the output signal from the first selection means, the output signal from the second selection means, and the output signal from the third selection means as inputs. 1 computing means;
A second calculation is performed according to a control signal instruction, with at least two of the output signal from the first selection means, the output signal from the second selection means, and the output signal from the third selection means as inputs. Two computing means;
Fourth selection means for selecting either the output signal of the first calculation means or the output signal of the second calculation means in accordance with a control signal;
A computing device having
制御信号に応じて複数の入力データから所望のデータを選択する第1の選択手段と、
制御信号に応じて複数の入力データから所望のデータを選択する第2の選択手段と、
制御信号に応じて複数の入力データから所望のデータを選択する第3の選択手段と、
上記第1の選択手段の出力信号、第2の選択手段の出力信号、および第3の選択手段の 出力信号を入力として、制御信号の指示に応じた演算を行う演算手段と
を有し、外部からの制御により演算経路を再構成可能な複数の演算装置を有し、
上記複数の演算装置のデータの入出力同士をカスケード接続し、かつ、各演算装置の演算結果信号を他の装置の複数のデータ入力の一のデータとして供給する
並列演算装置。
First selection means for selecting desired data from a plurality of input data according to a control signal;
Second selection means for selecting desired data from a plurality of input data according to a control signal;
Third selection means for selecting desired data from a plurality of input data according to a control signal;
Calculating means for performing an operation in accordance with an instruction of the control signal by using the output signal of the first selecting means, the output signal of the second selecting means, and the output signal of the third selecting means as inputs;
And having a plurality of arithmetic devices capable of reconfiguring the arithmetic path by external control,
Cascade connection of data inputs / outputs of the plurality of arithmetic devices, and supply an arithmetic result signal of each arithmetic device as one data of a plurality of data inputs of other devices
Parallel computing device.
上記入力データを制御信号に応じた遅延量をもって遅延させて次段の演算装置に出力する遅延手段
を有する請求項8記載の並列演算装置。
9. The parallel arithmetic unit according to claim 8, further comprising delay means for delaying the input data by a delay amount corresponding to a control signal and outputting the delayed data to a next stage arithmetic unit.
制御信号に応じて複数の入力データから所望のデータを選択する第1の選択手段と、
制御信号に応じて複数の入力データから所望のデータを選択する第2の選択手段と、
制御信号に応じて複数の入力データから所望のデータを選択する第3の選択手段と、
上記第1の選択手段の出力信号、および第2の選択手段の出力信号を入力として、制御信号の指示に応じた演算を行う第1の演算手段と、
上記第1の選択手段の出力信号、第2の選択手段の出力信号、および第3の選択手段の出力信号を入力として、制御信号の指示に応じた演算を行う第2の演算手段と、
制御信号に応じて、上記第1の演算手段の出力信号と上記第2の演算手段の出力信号のいずれかを選択し、演算結果信号として出力する第4の選択手段と
を有し、外部からの制御により演算経路を再構成可能な複数の演算装置を有し、
上記複数の演算装置のデータの入出力同士をカスケード接続し、かつ、各演算装置の演算結果信号を他の装置の複数のデータ入力の一のデータとして供給する
並列演算装置。
First selection means for selecting desired data from a plurality of input data according to a control signal;
Second selection means for selecting desired data from a plurality of input data according to a control signal;
Third selection means for selecting desired data from a plurality of input data according to a control signal;
First calculation means for performing calculation according to an instruction of a control signal, using the output signal of the first selection means and the output signal of the second selection means as inputs;
Second calculation means for performing an operation according to an instruction of a control signal, using the output signal of the first selection means, the output signal of the second selection means, and the output signal of the third selection means as inputs;
A fourth selection means for selecting one of the output signal of the first calculation means and the output signal of the second calculation means in accordance with the control signal, and outputting as a calculation result signal;
And having a plurality of arithmetic devices capable of reconfiguring the arithmetic path by external control,
Cascade connection of data inputs / outputs of the plurality of arithmetic devices, and supply an arithmetic result signal of each arithmetic device as one data of a plurality of data inputs of other devices
Parallel computing device.
上記入力データを制御信号に応じた遅延量をもって遅延させて次段の演算装置に出力する遅延手段
を有する請求項10記載の並列演算装置。
Delay means for delaying the input data by a delay amount corresponding to the control signal and outputting the delayed data to the next stage arithmetic unit
Parallel operation device according to claim 10, further comprising a.
制御信号に応じて第1のデータ群から一のデータを選択する第1の選択手段と、
制御信号に応じて第2のデータ群から一のデータを選択する第2の選択手段と、
上記第1の選択手段の出力信号、および第2の選択手段の出力信号を入力として、制御信号の指示に応じた演算を行う第1の演算手段と、
上記第1の選択手段の出力信号、および第2の選択手段の出力信号を入力として、制御信号の指示に応じた演算を行う第2の演算手段と、
制御信号に応じて、上記第1の演算手段の出力信号と上記第2の演算手段の出力信号のいずれかを選択し、演算結果信号として出力する第4の選択手段と、
を有し、外部からの制御により演算経路を再構成可能な複数の演算装置を有し、
上記複数の演算装置の第1のデータ群の入出力同士をカスケード接続し、かつ、各演算装置の演算結果信号を他の装置の第2のデータ群の一のデータとして供給する
並列演算装置。
First selecting means for selecting one data from the first data group in response to the control signal;
Second selection means for selecting one data from the second data group according to the control signal;
First calculation means for performing calculation according to an instruction of a control signal, using the output signal of the first selection means and the output signal of the second selection means as inputs;
Second calculation means for performing an operation in accordance with an instruction of a control signal using the output signal of the first selection means and the output signal of the second selection means as inputs;
A fourth selecting means for selecting one of the output signal of the first computing means and the output signal of the second computing means in accordance with a control signal, and outputting the result as a computation result signal;
And having a plurality of arithmetic devices capable of reconfiguring the arithmetic path by external control,
Cascade connection between the input and output of the first data group of the plurality of arithmetic devices, and supply the operation result signal of each arithmetic device as one data of the second data group of the other device
Parallel computing device.
上記第1のデータ群を制御信号に応じた遅延量をもって遅延させて次段の演算装置に出力する遅延手段
を有する請求項12記載の並列演算装置。
The parallel arithmetic unit according to claim 12, further comprising delay means for delaying the first data group by a delay amount corresponding to a control signal and outputting the delayed data to a next stage arithmetic unit.
制御信号に応じて第1のデータ群から一のデータを選択する第1の選択手段と、
制御信号に応じて第2のデータ群から一のデータを選択する第2の選択手段と、
制御信号に応じて第3のデータ群から一のデータを選択する第3の選択手段と、
上記第1の選択手段の出力信号、第2の選択手段の出力信号、および第3の選択手段の出力信号のうちの少なくとも2つの信号を入力として、制御信号の指示に応じた演算を行う第1の演算手段と、
上記第1の選択手段の出力信号、第2の選択手段の出力信号、および第3の選択手段の出力信号のうちの少なくとも2つの信号を入力として、制御信号の指示に応じた演算を行う第2の演算手段と、
制御信号に応じて、上記第1の演算手段の出力信号と上記第2の演算手段の出力信号のいずれかを選択する第4の選択手段と
を有し、外部からの制御により演算経路を再構成可能な複数の演算装置を有し、
上記複数の演算装置の第1のデータ群および第2のデータ群の入出力同士をカスケード接続し、かつ、各演算装置の演算結果信号を他の装置の第3のデータ群の一のデータとして供給する
並列演算装置。
First selecting means for selecting one data from the first data group in response to the control signal;
Second selection means for selecting one data from the second data group according to the control signal;
Third selecting means for selecting one data from the third data group in response to the control signal;
A second calculation is performed according to a control signal instruction, with at least two of the output signal from the first selection means, the output signal from the second selection means , and the output signal from the third selection means as inputs. 1 computing means;
A second calculation is performed according to a control signal instruction, with at least two of the output signal from the first selection means, the output signal from the second selection means , and the output signal from the third selection means as inputs. Two computing means;
Fourth selection means for selecting either the output signal of the first calculation means or the output signal of the second calculation means in accordance with a control signal;
And having a plurality of arithmetic devices capable of reconfiguring the arithmetic path by external control,
The input / output of the first data group and the second data group of the plurality of arithmetic devices is cascade-connected, and the arithmetic result signal of each arithmetic device is used as one data of the third data group of another device. Supply
Parallel computing device.
上記第1のデータ群を制御信号に応じた遅延量をもって遅延させて次段の演算装置に出力する第1の遅延手段と、
上記第2のデータ群を制御信号に応じた遅延量をもって遅延させて次段の演算装置に出力する第2の遅延手段
を有する請求項14記載の並列演算装置。
First delay means for delaying the first data group by a delay amount corresponding to a control signal and outputting the delayed first data group to a next-stage arithmetic unit;
The parallel arithmetic unit according to claim 14 , further comprising: second delay means for delaying the second data group by a delay amount corresponding to a control signal and outputting the delayed data group to a next stage arithmetic unit.
JP2001012524A 2001-01-19 2001-01-19 Arithmetic unit and parallel arithmetic unit Expired - Fee Related JP3846196B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001012524A JP3846196B2 (en) 2001-01-19 2001-01-19 Arithmetic unit and parallel arithmetic unit
US10/050,849 US7020673B2 (en) 2001-01-19 2002-01-18 Reconfigurable arithmetic device and arithmetic system including that arithmetic device and address generation device and interleave device applicable to arithmetic system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001012524A JP3846196B2 (en) 2001-01-19 2001-01-19 Arithmetic unit and parallel arithmetic unit

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2006035224A Division JP4671882B2 (en) 2006-02-13 2006-02-13 Arithmetic unit and parallel arithmetic unit

Publications (2)

Publication Number Publication Date
JP2002215603A JP2002215603A (en) 2002-08-02
JP3846196B2 true JP3846196B2 (en) 2006-11-15

Family

ID=18879519

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001012524A Expired - Fee Related JP3846196B2 (en) 2001-01-19 2001-01-19 Arithmetic unit and parallel arithmetic unit

Country Status (1)

Country Link
JP (1) JP3846196B2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2953356B1 (en) * 2009-11-30 2014-12-05 Commissariat Energie Atomique DIGITAL OPERATOR DATA PROCESSOR FOR EXECUTING AN FFT / IFFT AND TELECOMMUNICATION TERMINAL
EP2940594A4 (en) * 2012-12-25 2016-09-21 Nec Corp Computation device and computation method
JP6810651B2 (en) 2017-04-24 2021-01-06 日立オートモティブシステムズ株式会社 Electronic control device, logic circuit control method

Also Published As

Publication number Publication date
JP2002215603A (en) 2002-08-02

Similar Documents

Publication Publication Date Title
US7020673B2 (en) Reconfigurable arithmetic device and arithmetic system including that arithmetic device and address generation device and interleave device applicable to arithmetic system
US8024394B2 (en) Dual mode floating point multiply accumulate unit
JP2003296096A (en) Serial arithmetic pipeline, arithmetic unit, arithmetic logic circuit, and arithmetic method by serial arithmetic pipeline
JP2016537724A (en) A vector processing engine (VPE) utilizing a format conversion circuit in a data flow path between a vector data memory and an execution unit to provide in-flight format conversion of input vector data to the execution unit for vector processing operations and related Vector processing system and method
JP2016537726A (en) Vector processing engine with merging circuit between execution unit and vector data memory and associated method
JP2016541057A (en) A vector processing engine (VPE) and associated vector processor that utilizes a reordering circuit in the data flow path between the execution unit and the vector data memory to provide in-flight reordering of output vector data stored in the vector data memory System and method
JP2016537725A (en) Vector processing engine utilizing despreading circuit in data flow path between execution unit and vector data memory, and associated method
KR20000050581A (en) Fft processor with cbfp algorithm
JP3955741B2 (en) SIMD type microprocessor having sort function
JP3846196B2 (en) Arithmetic unit and parallel arithmetic unit
JP4940497B2 (en) Address generator
JP4747419B2 (en) Interleaving device and computing system
JP4411786B2 (en) Arithmetic system
JP4292719B2 (en) Parallel processing unit
JP3846197B2 (en) Arithmetic system
JP4292718B2 (en) Arithmetic unit
US11526432B2 (en) Parallel processing device
JP4737248B2 (en) Arithmetic unit and parallel arithmetic unit
JP7131115B2 (en) DATA PROCESSING APPARATUS, DATA PROCESSING METHOD, AND PROGRAM
JP4671882B2 (en) Arithmetic unit and parallel arithmetic unit
JPH08123769A (en) Parallel processor
US20230071941A1 (en) Parallel processing device
JP2017500657A (en) Long delay time architecture in emulated shared memory architecture
US20050256915A1 (en) Low latency computation in real time utilizing a dsp processor
Tan et al. Speed-optimised microprocessor implementation of a digital filter

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20051201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051213

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060210

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060801

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060814

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100901

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110901

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120901

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120901

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130901

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees