説明

動的再構成可能演算装置および半導体装置

【課題】面積効率の高い動的再構成可能演算装置を得る。
【解決手段】乗算器100〜107は、それぞれ2入力の乗算を行う。加算器200〜203は、乗算器100〜107の乗算結果出力100c〜107cを入力として加算を行う。加算器204,205は、加算結果出力200a〜203aか乗算結果出力100c,101c,106c,107cかを入力として加算を行う。加算器206,207は、加算結果出力204a,205aか乗算結果出力102c〜105cかを入力として加算を行う。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、動的に演算回路を構成することのできる動的再構成可能演算装置に関するものである。
【背景技術】
【0002】
従来の動的再構成可能演算装置として、DSP(Digital Signal Processor)のような汎用性と、専用回路のような高い性能を併せ持つことのできる動的再構成デバイスがあった。このような従来の動的再構成デバイスでは、演算ユニットであるALU(Arithmetic Logic Unit)と、DMU(Data Management Unit)、レジスタファイル、バスセレクタ、命令メモリなどが含まれるプロセッサエレメント(PE)を2次元アレイ状に並べている。そして、命令メモリ内に格納された個々の命令コードにより、ALU/DMUで実行されるべき演算や、PE間の接続関係を指定していた(例えば、非特許文献1参照)。
【0003】
【非特許文献1】本村正人、若林一敏、粟島亨、戸井崇雄著、「DRPのデバイス・アーキテクチャ」、CQ出版、Design Wave Magazine 2004年8月号、p.62−68
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、上記従来の動的再構成可能演算装置のように、ALUを含む複数のプロセッサエレメントの組み合わせで構成する場合、多様なアプリケーションを実現できる柔軟性がある反面、回路規模が大きくなってしまう問題があり、また、アプリケーションによっては、多種多様な処理が必要ではないものもあるため面積効率が悪くなるという問題があった。
【0005】
この発明は上記のような課題を解決するためになされたもので、面積効率の高い動的再構成可能演算装置を得ることを目的とする。
【課題を解決するための手段】
【0006】
この発明に係る動的再構成可能演算装置は、2入力の値の乗算を行う複数の乗算器と、これら複数の乗算器の出力のうちいずれか二つの出力を入力として加算を行う複数の第1加算器と、乗算器の出力または第1加算器の出力のうちいずれか二つの出力を入力として加算を行う複数の第2加算器と、乗算器の出力または第2加算器の出力のうちいずれか二つの出力を入力として加算を行う複数の第3加算器と、第2加算器に入力される乗算器の出力と第1加算器の出力とを選択する複数の第1接続選択手段と、第3加算器に入力される乗算器の出力と第2加算器の出力とを選択する複数の第2接続選択手段とを備えたものである。
【発明の効果】
【0007】
この発明の動的再構成可能演算装置は、複数の乗算器と、これら複数の乗算器の出力を入力とする複数の第1加算器と、これら複数の第1加算器または複数の乗算器の出力を入力とする第2、第3加算器とを備え、これら乗算器と加算器とをツリー状に接続したので、画像処理や音声処理などで頻繁に用いられる積和演算、バタフライ演算、足し合わせ演算、行列演算に特化した面積効率の高い動的再構成可能な演算装置を得ることができる。
【発明を実施するための最良の形態】
【0008】
実施の形態1.
図1は、この発明の実施の形態1による動的再構成可能演算装置を示す構成図である。
図において、動的再構成可能演算装置は、乗算器100〜107、加算器200〜207、セレクタ300〜307を備えており、これらがツリー状に構成されている。乗算器100〜107は、それぞれが2入力の乗算器であり、乗算器100には、入力データ100aと入力データ100bが入力されるよう構成されている。同様に、乗算器101には、入力データ101aと入力データ101bが、乗算器102には、入力データ102aと入力データ102bが、乗算器103には、入力データ103aと入力データ103bが、乗算器104には、入力データ104aと入力データ104bが、乗算器105には、入力データ105aと入力データ105bが、乗算器106には、入力データ106aと入力データ106bが、乗算器107には、入力データ107aと入力データ107bが、それぞれ接続される。また、出力100c〜107cは、それぞれ乗算器100〜107の出力である。
【0009】
加算器200〜207は、2入力の加算器である。加算器200の2入力は、乗算器100,101の出力100c,101cであり、以下、同様に、加算器201の2入力は乗算器102,103の出力102c,103c、加算器202の2入力は乗算器104,105の出力104c,105c、加算器203の2入力は乗算器106,107の出力106c,107cである。また、出力200a〜203aは加算器200〜203の加算結果出力である。以上、加算器200〜203は、複数の乗算器100〜107のうちいずれか二つの出力を入力として加算を行う第1加算器である。更に、加算器204の2入力は、セレクタ300,301の出力300a,301a、加算器205の2入力は、セレクタ302,303の出力302a,303a、加算器206の2入力は、セレクタ304,305の出力304a,305a、加算器207の2入力は、セレクタ306,307の出力306a,307aであり、出力204a〜207aは加算器204〜207の加算結果出力である。また、加算器204,205は、乗算器100〜107の出力100c〜107cまたは加算器200〜203の出力200a〜203aのうちいずれか二つの出力を入力として加算を行う第2加算器であり、加算器206,207は、乗算器100〜107の出力100c〜107cまたは加算器204,205の出力204a,205aのうちいずれか二つの出力を入力として加算を行う第3加算器である。
【0010】
セレクタ300〜307は、2to1セレクタであり、外部から与えられるセレクト信号sel0〜sel7に基づいて、乗算器100〜107と加算器200〜207との接続関係を選択するよう構成されている。セレクタ300は、その2入力として加算器200の出力200aと乗算器100の出力100c、セレクタ301は乗算器101の出力101cと加算器201の出力201a、セレクタ302は加算器202の出力202aと乗算器106の出力106c、セレクタ303は乗算器107の出力107cと加算器203の出力203aを入力する。これらセレクタ300〜303は、第2加算器である加算器204,205に入力される乗算器100,101および乗算器106,107の出力と、第1加算器である加算器200,201および加算器202,203の出力とを選択する第1接続選択手段である。
【0011】
また、セレクタ304は、その2入力として加算器204の出力204aと乗算器102の出力102c、セレクタ305は乗算器103の出力103cと加算器205の出力205a、セレクタ306は加算器204の出力204aと乗算器104の出力104c、セレクタ307は乗算器105の出力105cと加算器205の出力205aをそれぞれ入力する。また、出力300a〜307aは、セレクタ300〜307の選択出力である。これらセレクタ304〜307は、第3加算器である加算器206,207に入力される乗算器102〜105の出力と第2加算器である加算器204,205の出力とを選択する第2接続選択手段を構成している。
【0012】
このように構成された動的再構成可能演算装置では、入力データ100aと100bが入力された乗算器100からは、これら入力データ100aと100bの乗算結果出力100cが得られる。同様に、入力データ101aと101bが入力された乗算器101からは、入力データ101aと101bの乗算結果出力101cが得られ、入力データ102aと102bが入力された乗算器102からは、入力データ102aと102bの乗算結果出力102cが得られ、入力データ103aと103bが入力された乗算器103からは、入力データ103aと103bの乗算結果出力103cが得られ、入力データ104aと104bが入力された乗算器104からは、入力データ104aと104bの乗算結果出力104cが得られ、入力データ105aと105bが入力された乗算器105からは、入力データ105aと105bの乗算結果出力105cが得られ、入力データ106aと106bが入力された乗算器106からは、入力データ106aと106bの乗算結果出力106cが得られ、入力データ107aと107bが入力された乗算器107からは、入力データ107aと107bの乗算結果出力107cが得られる。
【0013】
続いて、乗算器100,101で得られた乗算結果出力100cと101cが加算器200に入力され、乗算結果出力100cと101cの加算結果出力200aが得られる。同様に、乗算結果出力102cと103cが入力された加算器201からは、乗算結果出力102cと103cの加算結果出力201aが得られ、乗算結果出力104cと105cが入力された加算器202からは、乗算結果出力104cと105cの加算結果出力202aが得られ、乗算結果出力106cと107cが入力された加算器203からは、乗算結果出力106cと107cの加算結果出力203aが得られる。
【0014】
また、上記演算で得られた加算結果出力200aと乗算結果出力100cがセレクタ300に入力され、外部から入力される1ビットのセレクト信号sel0により選択され、セレクタ出力300aが得られる。同様に、加算結果出力201aと乗算結果出力101cが入力されたセレクタ301からは、セレクト信号sel1により選択されたセレクタ出力301aが得られ、加算結果出力202aと乗算結果出力106cが入力されたセレクタ302からは、セレクト信号sel2により選択されたセレクタ出力302aが得られ、加算結果出力203aと乗算結果出力107cが入力されたセレクタ303からは、セレクト信号sel3により選択されたセレクタ出力303aが得られる。
【0015】
続いて、上記演算で得られたセレクタ出力300aと301aが加算器204に入力され、セレクタ出力300aと301aの加算結果出力204aが得られる。同様に、セレクタ出力302aと303aが入力された加算器205からは、セレクタ出力302aと303aの加算結果出力205aが得られる。続いて、これら演算で得られた加算結果出力204aと乗算結果出力102cがセレクタ304に入力され、外部から入力される1ビットのセレクト信号sel4により選択され、セレクタ出力304aが得られる。同様に、加算結果出力205aと乗算結果出力103cが入力されたセレクタ305からは、セレクト信号sel5により選択されたセレクタ出力305aが得られ、加算結果出力204aと乗算結果出力104cが入力されたセレクタ306からは、セレクト信号sel6により選択されたセレクタ出力306aが得られ、加算結果出力205aと乗算結果出力105cが入力されたセレクタ307からは、セレクト信号sel7により選択されたセレクタ出力307aが得られる。続いて、これら演算で得られたセレクタ出力304aと305aが加算器206に入力され、セレクタ出力304aと305aの加算結果出力206aが得られる。同様に、セレクタ出力306aと307aが入力された加算器207からは、セレクタ出力306aと307aの加算結果出力207aが得られる。尚、以上の演算で得られた加算結果出力200a〜207aは、いずれも外部に出力することができる。
【0016】
次に、実施の形態1の動的再構成可能演算装置における積和演算を行う場合の具体例について説明する。
図2は、8タップ並列積和演算時の回路構成を示す説明図である。
先ず、8個の乗算器100〜107に、それぞれ入力データ100a〜107a、100b〜107bを入力する。乗算器100〜107からは、それぞれ乗算結果出力100c=100a・100b、101c=101a・101b、102c=102a・102b、103c=103a・103b、104c=104a・104b、105c=105a・105b、106c=106a・106b、107c=107a・107bが出力される。次に、加算器200に上記の乗算結果出力100cと101cが入力され、加算結果出力200a=100a・100b+101a・101bが得られる。同様に、加算器201には乗算結果出力102cと103cが入力され、加算結果出力201a=102a・102b+103a・103bが得られ、加算器202には乗算結果出力104cと105cが入力され、加算結果出力202a=104a・104b+105a・105bが得られ、加算器203には乗算結果出力106cと107cが入力され、加算結果出力203a=106a・106b+107a・107bが得られる。
【0017】
上記演算で得られた加算結果出力200a〜203aは、それぞれセレクタ300〜303に入力される。セレクタ300には、加算結果出力200aが選択され出力されるようなセレクト信号sel0を入力する。例えば、図面において左の入力を選択する場合はセレクト信号に“0”を、右の入力を選択する場合はセレクト信号に“1”を入力するものとすると、sel0には“0”を設定する。同様に、セレクタ301には加算結果出力201aが選択出力されるようなセレクト信号sel1=“1”を入力し、セレクタ302には加算結果出力202aが選択出力されるようなセレクト信号sel2=“0”を入力し、セレクタ303には加算結果出力203aが選択出力されるようなセレクト信号sel3=“1”を入力する。
【0018】
セレクタ300から出力された300a=200a=100a・100b+101a・101bと、セレクタ301から出力された301a=201a=102a・102b+103a・103bは、加算器204に入力され、加算結果出力204a=100a・100b+101a・101b+102a・102b+103a・103bが得られる。セレクタ302から出力された302a=202a=104a・104b+105a・105bと、セレクタ303から出力された303a=203a=106a・106b+107a・107bは、加算器205に入力され、加算結果出力205a=104a・104b+105a・105b+106a・106b+107a・107bが得られる。このような演算で得られた加算結果出力204aと205aは、それぞれセレクタ304と305に入力される。
【0019】
セレクタ304には加算結果出力204aが選択出力されるようなセレクト信号sel4=“0”を入力し、セレクタ305には加算結果出力205aが選択出力されるようなセレクト信号sel5=“1”を入力する。セレクタ304から出力された304a=204a=100a・100b+101a・101b+102a・102b+103a・103bと、セレクタ305から出力された305a=205a=104a・104b+105a・105b+106a・106b+107a・107bは、加算器206に入力され、加算結果出力206a=100a・100b+101a・101b+102a・102b+103a・103b+104a・104b+105a・105b+106a・106b+107a・107bが得られる。
【0020】
次に、8入力足し合わせ演算の動作例を説明する。
図3は、8入力足し合わせ演算時の回路構成を示す説明図である。
先ず、8個の乗算器100〜107に、それぞれ入力データ100a〜107aと、100b〜107bには固定値“1”を入力する。乗算器100〜107からは、片方の入力が“1”であるため、それぞれ乗算結果出力100c=100a、101c=101a、102c=102a、103c=103a、104c=104a、105c=105a、106c=106a、107c=107aが出力される。
【0021】
次に、加算器200に上記の乗算結果出力100cと101cが入力され、加算結果出力200a=100a+101aが得られる。同様に、加算器201には乗算結果出力102cと103cが入力されて加算結果出力201a=102a+103aが得られ、加算器202には乗算結果出力104cと105cが入力されて加算結果出力202a=104a+105aが得られ、加算器203には乗算結果出力106cと107cが入力されて加算結果出力203a=106a+107aが得られる。これら演算で得られた加算結果出力200a〜203aは、それぞれセレクタ300〜303に入力される。
【0022】
セレクタ300には、加算結果出力200aが選択され出力されるようなセレクト信号sel0を入力する。例えば、図面上における左の入力を選択する場合はセレクト信号に“0”を、右の入力を選択する場合はセレクト信号に“1”を入力するものとすると、sel0には“0”を設定する。同様に、セレクタ301には加算結果出力201aが選択出力されるようなセレクト信号sel1=“1”を入力し、セレクタ302には加算結果出力202aが選択出力されるようなセレクト信号sel2=“0”を入力し、セレクタ303には加算結果出力203aが選択出力されるようなセレクト信号sel3=“1”を入力する。セレクタ300から出力された選択結果出力300a=200a=100a+101aと、セレクタ301から出力された選択結果出力301a=201a=102a+103aは、加算器204に入力され、加算結果出力204a=100a+101a+102a+103aが得られる。セレクタ302から出力された選択結果出力302a=202=104a+105aと、セレクタ303から出力された選択結果出力303=203a=106a+107aは、加算器205に入力され、加算結果出力205a=104a+105a+106a+107aが得られる。
【0023】
上記演算で得られた加算結果出力204aと205aは、それぞれセレクタ304と305に入力される。セレクタ304には加算結果出力204aが選択出力されるようなセレクト信号sel4=“0”を入力し、セレクタ305には加算結果出力205aが選択出力されるようなセレクト信号sel5=“1”を入力する。セレクタ304から出力された選択結果出力304a=204a=100a+101a+102a+103aと、セレクタ305から出力された選択結果出力305a=205a=104a+105a+106a+107aは、加算器206に入力され、加算結果出力206a=100a+101a+102a+103a+104a+105a+106a+107aが得られる。
【0024】
このように、演算器の機能を乗算器100〜107と加算器200〜207に固定してツリー状に構成し、演算器間をセレクタ300〜307により接続して、セレクタ300〜307へ入力するセレクト信号のみを切り替えることで回路の再構成を行うことにより、画像処理や音声処理などで頻繁に用いられる積和演算、バタフライ演算、足し合わせ演算、行列演算に特化した面積効率のよい動的再構成可能な演算装置を得ることができる。また、演算機能を乗算器100〜107と加算器200〜207に固定しているため、演算機能を指定するための信号が必要なく、回路の構成情報データを削減することができる。
【0025】
以上のように、実施の形態1の動的再構成可能演算装置によれば、それぞれが、2入力の値の乗算を行う複数の乗算器と、複数の乗算器の出力のうちいずれか二つの出力を入力として加算を行う複数の第1加算器と、乗算器の出力または第1加算器の出力のうちいずれか二つの出力を入力として加算を行う複数の第2加算器と、乗算器の出力または第2加算器の出力のうちいずれか二つの出力を入力として加算を行う複数の第3加算器と、第2加算器に入力される乗算器の出力と第1加算器の出力とを選択する複数の第1接続選択手段と、第3加算器に入力される乗算器の出力と第2加算器の出力とを選択する複数の第2接続選択手段とを備えたので、面積効率の高い動的再構成可能演算装置を得ることができる。
【0026】
実施の形態2.
実施の形態2は、実施の形態1の構成において乗算器100〜107の一方の入力側にレジスタとセレクタとを備えたものである。
図4−1および図4−2は、実施の形態2における動的再構成可能演算装置を示す構成図である。
図示の動的再構成可能演算装置は、乗算器100〜107、加算器200〜207、セレクタ300〜315、レジスタ400〜407を備えている。ここで、レジスタ400〜407は、それぞれセレクタ308〜315を介して乗算器100〜107の一方の入力に接続される記憶素子であり、予め所定の値が設定されている。セレクタ308〜315は、2to1のセレクタであり、一方の入力をレジスタ400〜407の出力400a〜407aとして、もう一方の入力を入力データ100b〜107bとし、選択結果出力308a〜315aを乗算器100〜107の入力となるよう接続されている。これらセレクタ308〜315は、第3接続選択手段を構成している。これ以外の構成は、実施の形態1の構成と同様であるため、対応する部分に同一符号を付してその説明を省略する。
【0027】
レジスタ400〜407には、必要に応じて予め値を設定する。入力データ100bとレジスタ400の出力400aがセレクタ308に入力され、外部から入力される1ビットのセレクト信号sel8により選択され、セレクタ出力308aが得られる。同様に、入力データ101bとレジスタ401の出力401aが入力されたセレクタ309からは、セレクト信号sel9により選択されたセレクタ出力309aが得られ、入力データ102bとレジスタ402の出力402aが入力されたセレクタ310からは、セレクト信号sel10により選択されたセレクタ出力310aが得られ、入力データ103bとレジスタ403の出力403aが入力されたセレクタ311からは、セレクト信号sel11により選択されたセレクタ出力311aが得られ、入力データ104bとレジスタ404の出力404aが入力されたセレクタ312からは、セレクト信号sel12により選択されたセレクタ出力312aが得られ、入力データ105bとレジスタ405の出力405aが入力されたセレクタ313からは、セレクト信号sel13により選択されたセレクタ出力313aが得られ、入力データ106bとレジスタ406の出力406aが入力されたセレクタ314からは、セレクト信号sel14により選択されたセレクタ出力314aが得られ、入力データ107bとレジスタ407の出力407aが入力されたセレクタ315からは、セレクト信号sel15により選択されたセレクタ出力315aが得られる。
【0028】
続いて、入力データ100aと上記の演算で得られたセレクタ出力308aが入力された乗算器100からは、100aと308aの乗算結果出力100cが得られる。同様に、101aと309aが入力された乗算器101からは、101aと309aの乗算結果出力101cが得られ、102aと310aが入力された乗算器102からは、102aと310aの乗算結果出力102cが得られ、103aと311aが入力された乗算器103からは、103aと311aの乗算結果出力103cが得られ、104aと312aが入力された乗算器104からは、104aと312aの乗算結果出力104cが得られ、105aと313aが入力された乗算器105からは、105aと313aの乗算結果出力105cが得られ、106aと314aが入力された乗算器106からは、106aと314aの乗算結果出力106cが得られ、107aと315aが入力された乗算器107からは、107aと315aの乗算結果出力107cが得られる。
乗算器100〜107のおける乗算結果出力100c〜107c以降の信号に流れについては実施の形態1と同様であるため、ここでの説明は省略する。
【0029】
次に、実施の形態2における8入力足し合わせ演算の動作例を説明する。
図5−1および図5−2は、実施の形態2の動的再構成可能演算装置を用いた8入力足し合わせ演算時の回路構成を示す説明図である。
実施の形態2においては、図示のように、レジスタ400〜407にそれぞれ固定値“1”を予め設定し、セレクタ308〜315に、それぞれレジスタ出力400a〜407aを選択出力するようなセレクト信号sel8〜sel15(=“1”)を入力する。これにより、図3で示した実施の形態1における回路構成と同様の結果を得ることができる。尚、乗算器100〜107以降の動作は実施の形態1において図3で説明した動作と同様であるため、ここでの説明は省略する。
【0030】
このようにすることで、例えば8入力足し合わせ演算を入力データを変更しながら繰り返し実行する場合、実施の形態1における図3の構成では、毎回入力データとして固定値“1”を入力しなくてはならなかったところを、省略することができる。
【0031】
次に、動画像処理で頻繁に用いられるDCT(離散コサイン変換)演算を例に、バタフライ演算の動作例を示す。DCT演算は、下式(1)および(2)で示される。
【数1】

【0032】
DCT演算には様々なアルゴリズムが存在するが、ここでは例としてChenのアルゴリズムを用いる。Chenのアルゴリズムでは、図6に示すようなバタフライ演算を行う。図6において、実線は乗算を示しており、実線上の数値は掛け合わせる数値を示している。数値が示されていない実線は、掛け合わせる数値が“1”、即ち、掛け合わされる数値そのものを伝達することを示す。また、Ci,kはcos(iπ/k)、Si,kはsin(iπ/k)を示す。図6に示すバタフライ演算は、8タップ並列積和演算回路の構成を用いる場合、5つの部分演算[1]〜[5]に分割して実行できる。
【0033】
先ず、動的再構成可能演算装置上に、図7−1および図7ー2に示す[1]の部分演算用回路を構成し、[1]の部分演算を実行して出力値x0+x7、x0−x7、x1+x6、x1−x6、x2+x5、x2−x5、x3+x4、x3−x4を得る。即ち、セレクタ300〜307を、それぞれ乗算結果出力100c,101c,106c,107c,102c,103c,104c,105cを選択出力するよう設定する。
【0034】
次に、動的再構成可能演算装置の回路構成を図8−1および図8−2に示す[2]の部分演算用回路に再構成し、[1]の演算で得られた出力値を入力に[2]の部分演算を実行して、出力値x0+x7+x6+x1、x0+x7−x6−x1、x4+x3+x2+x5、x4+x3−x2−x5、C1,4・(x2−x5+x4−x3)、C1,4・(x2−x5−x4+x3)を得る。ここでは、セレクタ300,301,304〜307を、それぞれ乗算結果出力100c〜105cを選択出力するよう設定し、加算結果出力200a,204a,201a,206a,207a,202aが出力される。
【0035】
次に、動的再構成可能演算装置の回路構成を図9−1および図9−2に示す[3]の部分演算用回路に再構成し、[2]の部分演算で得られた出力値を入力に[3]の部分演算を実行して、出力値X0、X1、X2、X3を得る。ここでは、セレクタ306,307が乗算結果出力104c,105cを選択するよう設定され、加算結果出力200a〜202a,207aが出力される。
【0036】
次に、動的再構成可能演算装置の回路構成を図10−1および図10−2に示す[4]の部分演算用回路に再構成し、[1]および[2]の部分演算で得られた出力値を入力に[4]の部分演算を実行し、出力値x6−x1+C1,4・(x2−x5−x4+x3)、x6−x1−C1,4・(x2−x5−x4+x3)、x0−x7+C1,4・(x2−x5+x4−x3)、x0−x7−C1,4・(x2−x5+x4−x3)を得る。ここでは、セレクタ300,301およびセレクタ304,305が、それぞれ乗算結果出力100c〜103cを選択するよう設定され、加算結果出力200a,204a,201a,206aが出力される。
【0037】
最後に、動的再構成可能演算装置の回路構成を図11−1および図11−2に示す[5]の部分演算用回路に再構成し、[4]で得られた出力値を入力に[5]の部分演算を実行して、出力値X4、X5、X6、X7を得る。ここでは、加算結果出力200a〜203aが出力される。
【0038】
以上説明したように、本実施の形態の動的再構成可能演算装置により、バタフライ演算を実現することができる。ここでは、DCTを例にバタフライ演算の動作例を示したが、同様に、バタフライ演算を用いるFFT(高速離散フーリエ変換)等の処理も実現できる。
【0039】
次に、2次元のアフィン変換を例に、行列演算の動作例を示す。2次元のアフィン変換は、式(3)の行列演算で示される。
【数2】

行列演算の出力は、x’=d1・x+e1・y+f1、y’=d2・x+e2・y+f2のように積和演算により計算される。
【0040】
図12−1および図12−2に2次元アフィン変換の動作例を示す。2次元のアフィン変換の場合、x’とy’は3項の積の和となるため、8タップ並列の積和演算回路を用いる場合、x’とy’は、それぞれ4タップ並列の積和演算回路を用いて同時に演算することができる。まず、d1、e1、f1、d2、e2、f2を、それぞれレジスタ400,401,402,404,405,406に設定する。乗算器100にはxとセレクタ308により選択出力された308a=d1が入力され、乗算結果出力100c=x・d1が得られる。同様に、乗算器101にはyとセレクタ309により選択出力された309a=e1が入力され、乗算結果出力101c=y・e1が得られ、乗算器102には“1”とセレクタ310により選択出力された310a=f1が入力され、乗算結果出力102c=f1が得られ、乗算器104にはxとセレクタ312により選択出力された312a=d2が入力され、乗算結果出力104c=x・d2が得られ、乗算器105にはyとセレクタ313により選択出力された313a=e2が入力され、乗算結果出力105c=y・e2が得られ、乗算器106には“1”とセレクタ314により選択出力された314a=f2が入力され、乗算結果出力106c=f2が得られる。
【0041】
3項の積和の場合、乗算器は3個しか必要なく、乗算器103と107は演算を行う必要がない。従って、レジスタ403および407には“0”を設定し、セレクタ311、315がそれぞれレジスタ出力403a、407aを選択出力するようなセレクト信号sel11、sel15を入力することで、乗算器103および107の片方の入力が“0”となるため、乗算器103の出力103c、および、乗算器107の出力107cは、どちらも“0”となる。
【0042】
上記で得られた乗算結果出力100cと101cが加算器200に入力され、加算結果200a=x・d1+y・e1が得られ、乗算結果出力102cと103c(=“0”)が加算器201に入力され、加算結果出力201a=f1が得られる。得られた加算結果出力200aと201aが、それぞれセレクタ300と301から選択出力され加算器204に入力され、最終出力x’=x・d1+y・e1+f1が得られる。同様に、上記で得られた乗算結果出力104cと105cが加算器202に入力され、加算結果出力202a=x・d2+y・e2が得られ、乗算結果出力106cと107c(=“0”)が加算器203に入力され、加算結果出力203a=f2が得られる。得られた加算結果出力202aと203aが、それぞれセレクタ302と303から選択出力され加算器205に入力され、最終出力y’=x・d2+y・e2+f2が得られる。
【0043】
このように、予め値をレジスタ400〜407に設定し、入力データとレジスタ出力400a〜407aとをセレクタ308〜315で選択できるようにすることで、乗算器100〜107の片方の入力データが固定値である場合に、毎回外部から入力データとして固定値を入力するのにかかっていたサイクル数やバス幅を削減することができる。
【0044】
以上のように、実施の形態2の動的再構成可能演算装置によれば、任意の値を保持する複数の記憶素子と、複数の記憶素子の出力と所定の入力とを選択する第3接続選択手段を設け、複数の乗算器は第3接続選択手段の選択結果を、2入力のうちの一方の入力とするようにしたので、乗算器への入力データとして毎回入力しなければならないような場合でもこれを省略することができ、データ入力によるサイクル数の削減やバス幅の削減を図ることができる。
【0045】
実施の形態3.
実施の形態3の動的再構成可能演算装置は、実施の形態2の構成に加えて、乗算器100〜107と加算器200〜207の出力を保持するためのレジスタ(記憶素子)をそれぞれ備えたものである。
図13−1および図13−2は、実施の形態3における動的再構成可能演算装置を示す構成図である。
図示の動的再構成可能演算装置は、乗算器100〜107、加算器200〜207、セレクタ300〜315、レジスタ400〜423を備えている。ここで、レジスタ408〜415は、それぞれ乗算器100〜107の乗算結果出力100c〜107cの値を保持するためのレジスタ、レジスタ416〜423は、それぞれ加算器200〜207の加算結果出力200a〜207aの値を保持するためのレジスタである。これ以外の構成は、図4−1および図4−2に示した実施の形態2の構成と同様であるため、対応する部分に同一符号を付してその説明を省略する。
【0046】
乗算器100の乗算結果出力100cは、レジスタ408に格納する。同様に、乗算器101の乗算結果出力101cをレジスタ409に格納し、乗算器102の乗算結果出力102cをレジスタ410に格納し、乗算器103の乗算結果出力103cをレジスタ411に格納し、乗算器104の乗算結果出力104cをレジスタ412に格納し、乗算器105の乗算結果出力105cをレジスタ413に格納し、乗算器106の乗算結果出力106cをレジスタ414に格納し、乗算器107の乗算結果出力107cをレジスタ415に格納する。
【0047】
続いて、レジスタ408の出力408aとレジスタ409の出力409aが加算器200に入力され、得られる408aと409aの加算結果出力200aをレジスタ416に格納する。同様に、レジスタ410の出力410aとレジスタ411の出力411aが入力された加算器101から得られる410aと411aの加算結果出力201aをレジスタ417に格納し、レジスタ412の出力412aとレジスタ413の出力413aが入力された加算器202から得られる412aと413aの加算結果出力202aをレジスタ418に格納し、レジスタ414の出力414aとレジスタ415の出力415aが入力された加算器203から得られる414aと415aの加算結果出力203をレジスタ419に格納する。
【0048】
続いて、レジスタ416の出力416aとレジスタ408の出力408aがセレクタ300に入力され、外部から入力される1ビットのセレクト信号sel0により選択され、セレクタ出力300aが得られる。同様に、レジスタ417の出力417aとレジスタ409の出力409aが入力されたセレクタ301からは、セレクト信号sel1により選択されたセレクタ出力301aが得られ、レジスタ418の出力418aとレジスタ414の出力414aが入力されたセレクタ302からは、セレクト信号sel2により選択されたセレクタ出力302aが得られ、レジスタ419の出力419aとレジスタ415の出力415aが入力されたセレクタ303からは、セレクト信号sel3により選択されたセレクタ出力303aが得られる。
【0049】
続いて、上記演算で得られたセレクタ出力300aと301aが加算器204に入力され、得られる300aと301aの加算結果出力204aをレジスタ420に格納する。同様に、302aと303aが入力された加算器205から得られる302aと303aの加算結果出力205aをレジスタ421に格納する。続いて、レジスタ420の出力420aとレジスタ410の出力410aがセレクタ304に入力され、外部から入力される1ビットのセレクト信号sel4により選択され、セレクタ出力304aが得られる。同様に、レジスタ421の出力421aとレジスタ411の出力411aが入力されたセレクタ305からは、セレクト信号sel5により選択されたセレクタ出力305aが得られ、レジスタ420の出力420aとレジスタ412の出力412aが入力されたセレクタ306からは、セレクト信号sel6により選択されたセレクタ出力306aが得られ、レジスタ421の出力421aとレジスタ413の出力413aが入力されたセレクタ307からは、セレクト信号sel7により選択されたセレクタ出力307aが得られる。
【0050】
続いて、上記演算で得られたセレクタ出力304aと305aが加算器206に入力され、得られる304aと305aの加算結果出力206aをレジスタ422に格納する。同様に、306aと307aが入力された加算器207から得られる306aと307aの加算結果出力207aをレジスタ423に格納する。尚、これらのレジスタ416〜423の出力416a〜423aは、いずれも外部に出力できる。
このように、乗算器100〜107と加算器200〜207の演算結果出力を格納するレジスタ408〜423を備えることで、パイプライン動作が可能となり、装置全体のスループットを向上させることができる。
【0051】
次に、実施の形態3における8タップ並列積和演算の回路構成と、8入力足し合わせ演算の回路構成を動的に切り替えることにより実現される24タップFIRフィルタの動作例について説明する。
図14は、24タップFIRフィルタの動作イメージを示すものである。図中、FFは遅延素子を表す。
一般に、FIRフィルタの式は、式(4)で示される。
尚、式(4)において、Y(k)は時刻kにおける出力信号、Nはタップ数、xは入力信号、hはフィルタの係数である。
【数3】

【0052】
8タップ並列積和演算回路を用いる場合、一度に8タップまでの積和演算を行うことができるため、24タップを8タップずつ3回に分けて積和演算する。1回目は、入力信号x23〜x16と係数h0〜h7を入力とし、積和演算結果Y’0(23)=h0・x23+h1・x22+h2・x21+h3・x20+h4・x19+h5・x18+h6・x17+h7・x16を得る。2回目は、入力信号x15〜x8と係数h8〜h15を入力とし、積和演算結果Y’1(23)=h8・x15+h9・x14+h10・x13+h11・x12+h12・x11+h13・x10+h14・x9+h15・x8を得る。3回目は、入力信号x7〜x0と係数h16〜h23を入力とし、積和演算結果Y’2(23)=h16・x7+h17・x6+h18・x5+h19・x4+h20・x3+h21・x2+h22・x1+h23・x0を得る。次に、上記で得られた3つの8タップ分積和演算結果Y’0(23)〜Y’2(23)を足し合わせ演算回路を用いて足し合わせることにより、出力信号Y(23)を得られる。
【0053】
図15−1および図15−2〜図21−1および図21−2に、実施の形態3の動的再構成可能演算装置を例に、24タップFIRフィルタ動作例の手順1〜7を示す。
先ず、動的再構成可能演算装置上に8タップ並列積和演算を行う回路を構成し、1回目の8タップ分積和演算結果Y’0(23)を求めるための入力データであるx23〜x16とフィルタ係数h0〜h7を入力し、パイプラインの1段目において乗算を行う(図15−1および図15−2・手順1)。即ち、入力データ100a〜107として、x23〜x16をそれぞれ入力し、入力データ100b〜107bとしてフィルタ係数h0〜h7を入力する。また、セレクタ308〜315は、入力データ100b〜107bを選択するよう設定され、セレクタ300〜305は、それぞれレジスタ416〜421の出力416a〜421aを選択するよう設定される。更に、セレクタ304,305は、レジスタ420,421の出力420a,421aを選択するよう設定される。尚、各セレクタ300〜315の設定は図21−1および図21−2に示す手順7まで同様である。
また、図中、1回目の8タップ分積和演算結果Y’0(23)を求めるための演算を演算501で示している。
【0054】
次のサイクルでは、パイプライン2段目において、手順1により求められたパイプライン1段目の乗算結果を加算器200〜203で加算するのと同時に、パイプライン1段目においては、2回目の8タップ分積和演算結果Y’1(23)を求めるための入力データであるx15〜x8とフィルタ係数h8〜h15、入力データ100a〜107aおよび入力データ100b〜107bに入力し、乗算器100〜107にて乗算を行う(図16−1および図16−2・手順2)。図中、2回目の8タップ分積和演算結果Y’1(23)を求めるための演算を演算502で示している。
【0055】
次のサイクルでは、パイプライン3段目において、手順2により求められたパイプライン2段目の加算結果を加算器204,205で加算するのと同時に、パイプライン2段目においては、手順2により求められたパイプライン1段目の乗算結果を加算器200〜203で加算し、パイプライン1段目においては、3回目の8タップ分積和演算結果Y’2(23)を求めるための入力データであるx7〜x0とフィルタ係数h16〜h23を入力データ100a〜107aと入力データ100b〜107bに入力し、乗算器100〜107で乗算を行う(図17−1および図17−2・手順3)。図中、3回目の8タップ分積和演算結果Y’2(23)を求めるための演算を演算503で示している。
【0056】
次のサイクルでは、パイプライン4段目において、手順3により求められたパイプライン3段目の加算結果を加算器206で加算し、1回目の8タップ分積和演算結果Y’0(23)を得るのと同時に、パイプライン3段目においては、手順3により求められたパイプライン2段目の加算結果を加算器204,205で加算し、パイプライン2段目においては、手順3により求められたパイプライン1段目の乗算結果を加算器200〜203で加算する(図18−1および図18−2・手順4)。
【0057】
次のサイクルでは、パイプライン4段目において、手順4により求められたパイプライン3段目の加算結果を加算器206で加算し、2回目の8タップ分積和演算結果Y’1(23)を得るのと同時に、パイプライン3段目においては、手順4により求められたパイプライン2段目の加算結果を加算器204,205で加算する(図19−1および図19−2・手順5)。
【0058】
次のサイクルでは、パイプライン4段目において、手順5により求められたパイプライン3段目の加算結果を加算器206で加算し、3回目の8タップ分積和演算結果Y’2(23)を得る(図20−1および図20−2・手順6)。このような手順1〜手順6によって3つの8タップ分積和演算結果Y’0(23)〜Y’2(23)が得られた後、回路構成を切り替えて8入力足し合わせ演算回路を構成し、3つの8タップ分積和演算結果Y’0(23)〜Y’2(23)を足し合わせ、最終的な出力信号Y(23)を得る(図21−1および図21−2・手順7)。即ち、乗算器100〜102の一方の入力側の入力データ100a〜102aに対して、Y’0(23)〜Y’2(23)を入力すると共に、乗算器100〜107の他方の入力側には、レジスタ400〜407に設定された値“1”がセレクタ308〜315を介して入力される。また、入力データ103a〜107aには“0”を入力する。尚、8入力足し合わせ演算については、実施の形態1,2で説明した8入力足し合わせ演算と同様であるため、ここでの説明は省略する。
【0059】
このように、本実施の形態の動的再構成可能演算装置により、FIRフィルタを実現することができる。また、フィルタ係数を適応的に変更する適応フィルタについても、本実施の形態の動的再構成可能演算装置に備えられている乗算器と加算器を用いて係数の適応化演算用回路を構成することにより、実現することができる。
【0060】
尚、上記実施の形態1〜3において、積和演算や足し合わせ演算を実施の形態1や実施の形態3で、また、バタフライ演算や行列演算を実施の形態2で説明したが、これら演算は実施の形態1〜3のいずれの実施の形態で実現してもよい。
【0061】
以上のように、実施の形態3の動的再構成可能演算装置によれば、乗算器、第1加算器、第2加算器、第3加算器の出力をそれぞれ保持する記憶素子を設けたので、演算装置としてパイプライン動作が可能となり、装置全体のスループットを向上させることができる。
【0062】
実施の形態4.
図22は、この発明の実施の形態4における半導体装置を示すものである。
図22において、半導体装置1は、実施の形態1〜3のいずれかである動的再構成可能演算装置2と、動的再構成可能演算装置2に入力される演算前のデータあるいは演算後のデータのうち少なくとも一方のデータを格納する入出力データバッファ3を備える。このような半導体装置1は、所定の演算処理を指定するプロセッサであるCPU4と、半導体装置1が処理するデータを格納するメモリ5とバスライン6を介して接続されている。
【0063】
CPU4は、動的再構成可能演算装置2において処理する入力データを、ある単位分、メモリ5からバスライン6を介して入出力データバッファ3に格納する。動的再構成可能演算装置2は、CPU4からの指示により、入出力データバッファ3から入力データを読み込み、演算を開始する。演算が終了すると、動的再構成可能演算装置2から入出力データバッファ3へ演算後のデータが書き込まれる。ある単位分の演算が終了すると、CPU4は入出力データバッファ3に格納されている演算後のデータを、バスライン6を介してメモリ5に書き込む。
【0064】
以上のように、実施の形態4の半導体装置によれば、動的再構成可能演算装置は、所定の演算処理を指定するプロセッサからの指示に基づいて、その指示に対応した演算処理を行うと共に、動的再構成可能演算装置に入力される演算前のデータまたは演算後のデータのうち、少なくとも一方のデータを格納するバッファを設けたので、プロセッサとの接続が容易な半導体装置を実現することができる。
【図面の簡単な説明】
【0065】
【図1】この発明の実施の形態1による動的再構成可能演算装置を示す構成図である。
【図2】この発明の実施の形態1の動的再構成可能演算装置を用いた8タップ並列積和演算時の回路構成を示す説明図である。
【図3】この発明の実施の形態1の動的再構成可能演算装置を用いた8入力足し合わせ演算時の回路構成を示す説明図である。
【図4−1】この発明の実施の形態2による動的再構成可能演算装置を示す構成図である。
【図4−2】この発明の実施の形態2による動的再構成可能演算装置を示す構成図である。
【図5−1】この発明の実施の形態2の動的再構成可能演算装置を用いた8入力足し合わせ演算時の回路構成を示す説明図である。
【図5−2】この発明の実施の形態2の動的再構成可能演算装置を用いた8入力足し合わせ演算時の回路構成を示す説明図である。
【図6】この発明の実施の形態2の動的再構成可能演算装置で用いるバタフライ演算の説明図である。
【図7−1】この発明の実施の形態2の動的再構成可能演算装置によるDCT演算の説明図(その1)である。
【図7−2】この発明の実施の形態2の動的再構成可能演算装置によるDCT演算の説明図(その1)である。
【図8−1】この発明の実施の形態2の動的再構成可能演算装置によるDCT演算の説明図(その2)である。
【図8−2】この発明の実施の形態2の動的再構成可能演算装置によるDCT演算の説明図(その2)である。
【図9−1】この発明の実施の形態2の動的再構成可能演算装置によるDCT演算の説明図(その3)である。
【図9−2】この発明の実施の形態2の動的再構成可能演算装置によるDCT演算の説明図(その3)である。
【図10−1】この発明の実施の形態2の動的再構成可能演算装置によるDCT演算の説明図(その4)である。
【図10−2】この発明の実施の形態2の動的再構成可能演算装置によるDCT演算の説明図(その4)である。
【図11−1】この発明の実施の形態2の動的再構成可能演算装置によるDCT演算の説明図(その5)である。
【図11−2】この発明の実施の形態2の動的再構成可能演算装置によるDCT演算の説明図(その5)である。
【図12−1】この発明の実施の形態2の動的再構成可能演算装置による2次元アフィン変換の説明図である。
【図12−2】この発明の実施の形態2の動的再構成可能演算装置による2次元アフィン変換の説明図である。
【図13−1】この発明の実施の形態3の動的再構成可能演算装置を示す構成図である。
【図13−2】この発明の実施の形態3の動的再構成可能演算装置を示す構成図である。
【図14】この発明の実施の形態3による動的再構成可能演算装置による24タップFIRフィルタの動作イメージ示す説明図である。
【図15−1】この発明の実施の形態3の動的再構成可能演算装置を用いた24タップFIRフィルタ動作例の手順1を示す説明図である。
【図15−2】この発明の実施の形態3の動的再構成可能演算装置を用いた24タップFIRフィルタ動作例の手順1を示す説明図である。
【図16−1】この発明の実施の形態3の動的再構成可能演算装置を用いた24タップFIRフィルタ動作例の手順2を示す説明図である。
【図16−2】この発明の実施の形態3の動的再構成可能演算装置を用いた24タップFIRフィルタ動作例の手順2を示す説明図である。
【図17−1】この発明の実施の形態3の動的再構成可能演算装置を用いた24タップFIRフィルタ動作例の手順3を示す説明図である。
【図17−2】この発明の実施の形態3の動的再構成可能演算装置を用いた24タップFIRフィルタ動作例の手順3を示す説明図である。
【図18−1】この発明の実施の形態3の動的再構成可能演算装置を用いた24タップFIRフィルタ動作例の手順4を示す説明図である。
【図18−2】この発明の実施の形態3の動的再構成可能演算装置を用いた24タップFIRフィルタ動作例の手順4を示す説明図である。
【図19−1】この発明の実施の形態3の動的再構成可能演算装置を用いた24タップFIRフィルタ動作例の手順5を示す説明図である。
【図19−2】この発明の実施の形態3の動的再構成可能演算装置を用いた24タップFIRフィルタ動作例の手順5を示す説明図である。
【図20−1】この発明の実施の形態3の動的再構成可能演算装置を用いた24タップFIRフィルタ動作例の手順6を示す説明図である。
【図20−2】この発明の実施の形態3の動的再構成可能演算装置を用いた24タップFIRフィルタ動作例の手順6を示す説明図である。
【図21−1】この発明の実施の形態3の動的再構成可能演算装置を用いた24タップFIRフィルタ動作例の手順7を示す説明図である。
【図21−2】この発明の実施の形態3の動的再構成可能演算装置を用いた24タップFIRフィルタ動作例の手順7を示す説明図である。
【図22】この発明の実施の形態4による半導体装置を示す構成図である。
【符号の説明】
【0066】
1 半導体装置、2 動的再構成可能演算装置、3 入出力データバッファ、4 CPU、5 メモリ、100〜107 乗算器、100a〜107a,100b〜107b 入力、100c〜107c 乗算結果出力、200〜207 加算器、200a〜207a 加算結果出力、300〜315 セレクタ、300a〜315a セレクタ出力、400〜423 レジスタ、400a〜423a レジスタ出力。

【特許請求の範囲】
【請求項1】
それぞれが、2入力の値の乗算を行う複数の乗算器と、
前記複数の乗算器の出力のうちいずれか二つの出力を入力として加算を行う複数の第1加算器と、
前記乗算器の出力または前記第1加算器の出力のうちいずれか二つの出力を入力として加算を行う複数の第2加算器と、
前記乗算器の出力または前記第2加算器の出力のうちいずれか二つの出力を入力として加算を行う複数の第3加算器と、
前記第2加算器に入力される前記乗算器の出力と前記第1加算器の出力とを選択する複数の第1接続選択手段と、
前記第3加算器に入力される前記乗算器の出力と前記第2加算器の出力とを選択する複数の第2接続選択手段とを備えた動的再構成可能演算装置。
【請求項2】
任意の値を保持する複数の記憶素子と、前記複数の記憶素子の出力と所定の入力とを選択する第3接続選択手段を設け、前記複数の乗算器は前記第3接続選択手段の選択結果を、2入力のうちの一方の入力とすることを特徴とする請求項1記載の動的再構成可能演算装置。
【請求項3】
乗算器、第1加算器、第2加算器、第3加算器の出力をそれぞれ保持する記憶素子を設けたことを特徴とする請求項1または請求項2記載の動的再構成可能演算装置。
【請求項4】
請求項1から請求項3のうちのいずれか1項記載の動的再構成可能演算装置を備え、当該動的再構成可能演算装置は、所定の演算処理を指定するプロセッサからの指示に基づいて、当該指示に対応した演算処理を行うと共に、前記動的再構成可能演算装置に入力される演算前のデータまたは演算後のデータのうち、少なくとも一方のデータを格納するバッファを設けたことを特徴とする半導体装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4−1】
image rotate

【図4−2】
image rotate

【図5−1】
image rotate

【図5−2】
image rotate

【図6】
image rotate

【図7−1】
image rotate

【図7−2】
image rotate

【図8−1】
image rotate

【図8−2】
image rotate

【図9−1】
image rotate

【図9−2】
image rotate

【図10−1】
image rotate

【図10−2】
image rotate

【図11−1】
image rotate

【図11−2】
image rotate

【図12−1】
image rotate

【図12−2】
image rotate

【図13−1】
image rotate

【図13−2】
image rotate

【図14】
image rotate

【図15−1】
image rotate

【図15−2】
image rotate

【図16−1】
image rotate

【図16−2】
image rotate

【図17−1】
image rotate

【図17−2】
image rotate

【図18−1】
image rotate

【図18−2】
image rotate

【図19−1】
image rotate

【図19−2】
image rotate

【図20−1】
image rotate

【図20−2】
image rotate

【図21−1】
image rotate

【図21−2】
image rotate

【図22】
image rotate


【公開番号】特開2009−38758(P2009−38758A)
【公開日】平成21年2月19日(2009.2.19)
【国際特許分類】
【出願番号】特願2007−203380(P2007−203380)
【出願日】平成19年8月3日(2007.8.3)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】