(57)【特許請求の範囲】
【請求項１】
それぞれが、２入力の値の論理演算を行う複数の第１論理演算ユニットと、
前記複数の第１論理演算ユニットの出力のうち二つの出力を入力として論理演算を行う複数の第２論理演算ユニットと、
前記複数の第２論理演算ユニットの出力のうち二つの出力を入力として論理演算を行う複数の第３論理演算ユニットと、
前記複数の第３論理演算ユニットの二つの出力を入力として論理演算を行う第４論理演算ユニットと、
前記複数の第１論理演算ユニットの出力のうち一つの出力と前記複数の第２論理演算ユニットの出力のうち一つの出力とを選択する複数の第１接続選択手段と、
前記複数の第１論理演算ユニットの出力のうち一つの出力と前記複数の第２論理演算ユニットの出力のうち一つの出力と前記複数の第３論理演算ユニットの出力のうち一つの出力とを選択する第２接続選択手段と、
前記複数の第１論理演算ユニットの出力のうち一つの出力と前記複数の第２論理演算ユニットの出力のうち一つの出力と前記複数の第３論理演算ユニットの出力のうち一つの出力と前記第４論理演算ユニットの出力とを選択する第３接続選択手段とを備え、
前記論理演算ユニットは、複数種類の論理演算素子と、当該複数種類の論理演算素子の出力のうち一つの出力を論理演算ユニットの出力として選択する接続選択手段とを備えたことを特徴とする動的再構成可能演算装置。
【請求項２】
論理演算ユニットが備える複数種類の論演算素子が、ＡＮＤ、ＯＲ、ＮＯＴ、ＥＸＯＲであることを特徴とする請求項１記載の動的再構成可能装置。
【請求項３】
任意の値を保持する複数の記憶素子と、前記複数の記憶素子の出力と所定の入力とを選択する第４接続選択手段を設け、前記複数の第１論理演算ユニットは前記第４接続選択手段の選択結果を、２入力のうちの一方の入力とすることを特徴とする請求項１または請求項２記載の動的再構成可能演算装置。
【請求項４】
請求項１から請求項３のうちのいずれか１項記載の動的再構成可能演算装置を備え、当該動的再構成可能演算装置は、所定の演算処理を指定するプロセッサからの指示に基づいて、当該指示に対応した演算処理を行うと共に、前記動的再構成可能演算装置に入力される演算前のデータまたは演算後のデータのうち、少なくとも一方のデータを格納するバッファを設けたことを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、動的に演算回路を構成することのできる動的再構成可能演算装置に関するものである。
【背景技術】
【０００２】
従来の動的再構成可能演算装置として、ＤＳＰ（Digital Signal Processor）のような汎用性と、専用回路のような高い性能を併せ持つことのできる動的再構成デバイスがあった。このような従来の動的再構成デバイスでは、演算ユニットであるＡＬＵ（Arithmetic Logic Unit）と、ＤＭＵ（Data Management Unit）、レジスタファイル、バスセレクタ、命令メモリなどが含まれるプロセッサエレメント（ＰＥ）を２次元アレイ状に並べている。そして、命令メモリ内に格納された個々の命令コードにより、ＡＬＵ／ＤＭＵで実行されるべき演算や、ＰＥ間の接続関係を指定していた（例えば、非特許文献１参照）。
【０００３】
【非特許文献１】本村正人、若林一敏、粟島亨、戸井崇雄著、「ＤＲＰのデバイス・アーキテクチャ」、ＣＱ出版、Ｄｅｓｉｇｎ  Ｗａｖｅ  Ｍａｇａｚｉｎｅ  ２００４年８月号、ｐ．６２−６８
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の動的再構成可能演算装置のように、ＡＬＵを含む複数のプロセッサエレメントの組み合わせで構成する場合、多様なアプリケーションを実現できる柔軟性がある反面、回路規模が大きくなってしまう問題があり、また、アプリケーションによっては、多種多様な処理が必要ではないものもあるため面積効率が悪くなるという問題があった。
【０００５】
この発明は上記のような課題を解決するためになされたもので、面積効率の高い動的再構成可能演算装置を得ることを目的とする。
【課題を解決するための手段】
【０００６】
この発明に係る動的再構成可能演算装置は、それぞれが、２入力の値の論理演算を行う複数の第１論理演算ユニットと、複数の第１論理演算ユニットの出力のうち二つの出力を入力として論理演算を行う複数の第２論理演算ユニットと、複数の第２論理演算ユニットの出力のうち二つの出力を入力として論理演算を行う複数の第３論理演算ユニットと、複数の第３論理演算ユニットの二つの出力を入力として論理演算を行う第４論理演算ユニットと、複数の第１論理演算ユニットの出力のうち一つの出力と複数の第２論理演算ユニットの出力のうち一つの出力とを選択する複数の第１接続選択手段と、複数の第１論理演算ユニットの出力のうち一つの出力と複数の第２論理演算ユニットの出力のうち一つの出力と複数の第３論理演算ユニットの出力のうち一つの出力とを選択する第２接続選択手段と、複数の第１論理演算ユニットの出力のうち一つの出力と複数の第２論理演算ユニットの出力のうち一つの出力と複数の第３論理演算ユニットの出力のうち一つの出力と第４論理演算ユニットの出力とを選択する第３接続選択手段とを備え、論理演算ユニットは、複数種類の論理演算素子と、当該複数種類の論理演算素子の出力のうち一つの出力を論理演算ユニットの出力として選択する接続選択手段とを備えたことを特徴とするものである。
【発明の効果】
【０００７】
この発明の動的再構成可能演算装置は、複数の第１論理演算ユニットと、複数の第２論理演算ユニットと、複数の第３論理演算ユニットと、第４論理演算ユニットとをツリー状に接続し、これらの論理演算ユニットの出力を、複数の第１接続選択手段と、第２接続選択手段と、第３接続選択手段とによって選択的に切り替えるようにしたので、例えば、８並列の１段の論理演算、４並列の２段の論理演算、２並列の３段の論理演算、４段の論理演算といった論理演算が選択的に実行でき、論理演算に特化した面積効率の高い動的再構成可能演算装置を得ることができる。また、論理演算ユニットは、複数種類の論理演算素子と、複数種類の論理演算素子の出力のうち一つの出力を論理演算ユニットの出力として選択する接続選択手段とを備えたので、種々の演算を行う動的再構成可能演算装置を容易に実現することができる。
【発明を実施するための最良の形態】
【０００８】
実施の形態１．
図１は、この発明の実施の形態１による動的再構成可能演算装置を示す構成図である。
図において、動的再構成可能演算装置は、論理演算ユニット１００〜１０７，２００〜２０３，３００，３０１，４００、セレクタ５００〜５０３を備えており、これらがツリー状に構成されている。論理演算ユニット１００〜１０７，２００〜２０３，３００，３０１，４００は、それぞれが２入力の論理演算ユニットであり、外部から与えられるセレクト信号ｓｅｌ１００〜ｓｅｌ１０７、ｓｅｌ２００〜ｓｅｌ２０３、ｓｅｌ３００、ｓｅｌ３０１、ｓｅｌ４００に基づいて、それぞれ論理演算ユニット内に備えた複数種類の論理演算素子の出力をそれぞれの論理演算ユニットの出力として選択するように構成されている（論理演算ユニット内の構成については後述する）。ここで、論理演算ユニット１００〜１０７が第１論理演算ユニットに対応し、論理演算ユニット２００〜２０３が第２論理演算ユニット、論理演算ユニット３００，３０１が第３論理演算ユニット、論理演算ユニット４００が第４論理演算ユニットに対応している。
【０００９】
論理演算ユニット１００には、入力データ１００ａと入力データ１００ｂが入力されるように構成されている。同様に、論理演算ユニット１０１には、入力データ１０１ａと入力データ１０１ｂが、論理演算ユニット１０２には、入力データ１０２ａと入力データ１０２ｂが、論理演算ユニット１０３には、入力データ１０３ａと入力データ１０３ｂが、論理演算ユニット１０４には、入力データ１０４ａと入力データ１０４ｂが、論理演算ユニット１０５には、入力データ１０５ａと入力データ１０５ｂが、論理演算ユニット１０６には、入力データ１０６ａと入力データ１０６ｂが、論理演算ユニット１０７には、入力データ１０７ａと入力データ１０７ｂが、それぞれ接続される。出力１００ｃ〜１０７ｃは、それぞれ、論理演算ユニット１００〜１０７の出力である。
【００１０】
論理演算ユニット２００には、論理演算ユニット１００の出力１００ｃと論理演算ユニット１０１の出力１０１ｃが入力される。同様に、論理演算ユニット２０１には、論理演算ユニット１０２の出力１０２ｃと論理演算ユニット１０３の出力１０３ｃが、論理演算ユニット２０２には、論理演算ユニット１０４の出力１０４ｃと論理演算ユニット１０５の出力１０５ｃが、論理演算ユニット２０３には、論理演算ユニット１０６の出力１０６ｃと論理演算ユニット１０７の出力１０７ｃが、それぞれ接続される。出力２００ａ〜２０３ａは、それぞれ、論理演算ユニット２００〜２０３の出力である。
【００１１】
論理演算ユニット３００には、論理演算ユニット２００の出力２００ａと論理演算ユニット２０１の出力２０１ａが入力される。同様に、論理演算ユニット３０１には、論理演算ユニット２０２の出力２０２ａと論理演算ユニット２０３の出力２０３ａが入力される。出力３００ａ，３０１ａは、それぞれ論理演算ユニット３００，３０１の出力である。
論理演算ユニット４００には、論理演算ユニット３００の出力３００ａと論理演算ユニット３０１の出力３０１ａが入力される。出力４００ａは、論理演算ユニット４００の出力である。
【００１２】
セレクタ５００は、２ｔｏ１セレクタであり、外部から与えられる１ビットのセレクト信号ｓｅｌ５００に基づいて、論理演算ユニット２００の出力２００ａと論理演算ユニット１０４の出力１０４ｃのうち一方を選択するように構成されている。同様に、セレクタ５０１は、セレクト信号ｓｅｌ５０１に基づいて、論理演算ユニット２０１の出力２０１ａと論理演算ユニット１０５の出力１０５ｃのうち一方を選択する。出力５００ａ，５０１ａは、セレクタ５００，５０１の選択出力である。また、これらセレクタ５００，５０１が第１接続選択手段に対応している。
【００１３】
セレクタ５０２は、３ｔｏ１セレクタであり、外部から与えられる２ビットのセレクト信号ｓｅｌ５０２に基づいて、論理演算ユニット３００の出力３００ａ、論理演算ユニット２０２の出力２０２ａ、論理演算ユニット１０６の出力１０６ｃのうちいずれかを選択するように構成されている。出力５０２ａは、セレクタ５０２の出力である。セレクタ５０３は、４ｔｏ１セレクタであり、外部から与えられる２ビットのセレクト信号ｓｅｌ５０３に基づいて、論理演算ユニット４００の出力４００ａ、論理演算ユニット３０１の出力３０１ａ、論理演算ユニット２０３の出力２０３ａ、論理演算ユニット１０７の出力１０７ｃのうちいずれかを選択するように構成されている。出力５０３ａは、セレクタ５０３の出力である。また、セレクタ５０２が第２接続選択手段に、セレクタ５０３が第３接続選択手段に対応している。
【００１４】
図２は、論理演算ユニット１００〜１０７，２００〜２０３，３００，３０１，４００の内部の構成を示す図である。すなわち、図２に示す論理演算ユニット１が図１の各論理演算ユニット１００〜１０７，２００〜２０３，３００，３０１，４００に対応し、図２中のセレクト信号ＳＥＬが、図１におけるセレクト信号ｓｅｌ１００〜１０７，２００〜２０３，３００，３０１，４００に対応している。
【００１５】
論理演算ユニット１は、ＮＯＴ演算子２、２入力ＥＸＯＲ演算子３、２入力ＯＲ演算子４、２入力ＡＮＤ演算子５、セレクタ６を備えている。ＮＯＴ演算子２は、入力データＩＮＢの否定を演算し、出力２ａを出力する。２入力ＥＸＯＲ演算子３は、入力データＩＮＡと入力データＩＮＢの排他的論理和を演算し、出力３ａを出力する。２入力ＯＲ演算子４は、入力データＩＮＡと入力データＩＮＢの論理和を演算し、出力４ａを出力する。２入力ＡＮＤ演算子５は、入力データＩＮＡと入力データＩＮＢの論理積を演算し、出力５ａを出力する。セレクタ６は、４ｔｏ１のセレクタであり、外部から与えられる２ビットのセレクト信号ＳＥＬに基づいて、上記演算子出力２ａ〜５ａを選択し、論理演算ユニット１の出力として出力ＯＵＴを出力する。
【００１６】
このように構成された動的再構成可能演算装置では、入力データ１００ａと１００ｂが入力された論理演算ユニット１００からは、外部から入力される２ビットのセレクト信号ｓｅｌ１００により選択された論理演算出力１００ｃが得られる。同様に、入力データ１０１ａと１０１ｂが入力された論理演算ユニット１０１からは、セレクト信号ｓｅｌ１０１により選択された論理演算出力１０１ｃが得られ、入力データ１０２ａと１０２ｂが入力された論理演算ユニット１０２からは、セレクト信号ｓｅｌ１０２により選択された論理演算出力１０２ｃが得られ、入力データ１０３ａと１０３ｂが入力された論理演算ユニット１０３からは、セレクト信号ｓｅｌ１０３により選択された論理演算出力１０３ｃが得られ、入力データ１０４ａと１０４ｂが入力された論理演算ユニット１０４からは、セレクト信号ｓｅｌ１０４により選択された論理演算出力１０４ｃが得られ、入力データ１０５ａと１０５ｂが入力された論理演算ユニット１０５からは、セレクト信号ｓｅｌ１０５により選択された論理演算出力１０５ｃが得られ、入力データ１０６ａと１０６ｂが入力された論理演算ユニット１０６からは、セレクト信号ｓｅｌ１０６により選択された論理演算出力１０６ｃが得られ、入力データ１０７ａと１０７ｂが入力された論理演算ユニット１０７からは、セレクト信号ｓｅｌ１０７により選択された論理演算出力１０７ｃが得られる。
【００１７】
続いて、論理演算ユニット１００，１０１で得られた論理演算出力１００ｃと１０１ｃが論理演算ユニット２００に入力され、２ビットのセレクト信号ｓｅｌ２００により選択された論理演算出力１００ｃと１０１ｃの論理演算出力２００ａが得られる。同様に、論理演算ユニット１０２，１０３で得られた論理演算出力１０２ｃと１０３ｃが入力された論理演算ユニット２０１からは、セレクト信号ｓｅｌ２０１により選択された論理演算出力１０２ｃと１０３ｃの論理演算出力２０１ａが得られ、論理演算ユニット１０４，１０５で得られた論理演算出力１０４ｃと１０５ｃが入力された論理演算ユニット２０２からは、セレクト信号ｓｅｌ２０２により選択された論理演算出力１０４ｃと１０５ｃの論理演算出力２０２ａが得られ、論理演算ユニット１０６，１０７で得られた論理演算出力１０６ｃと１０７ｃが入力された論理演算ユニット２０３からは、セレクト信号ｓｅｌ２０３により選択された論理演算出力１０６ｃと１０７ｃの論理演算出力２０３ａが得られる。
【００１８】
続いて、論理演算ユニット２００，２０１で得られた論理演算出力２００ａと２０１ａが論理演算ユニット３００に入力され、２ビットのセレクト信号ｓｅｌ３００により選択された論理演算出力２００ａと２０１ａの論理演算出力３００ａが得られる。同様に、論理演算ユニット２０２，２０３で得られた論理演算出力２０２ａと２０３ａが入力された論理演算ユニット３０１からは、セレクト信号ｓｅｌ３０１により選択された論理演算出力２０２ａと２０３ａの論理演算出力３０１ａが得られる。
【００１９】
続いて、論理演算ユニット３００，３０１で得られた論理演算出力３００ａと３０１ａが論理演算ユニット４００に入力され、２ビットのセレクト信号ｓｅｌ４００により選択された論理演算出力３００ａと３０１ａの論理演算出力４００ａが得られる。
【００２０】
また、上記演算で得られた論理演算出力２００ａと１０４ｃがセレクタ５００に入力され、外部から入力される１ビットのセレクト信号ｓｅｌ５００により選択され、セレクタ出力５００ａが得られる。同様に、論理演算出力２０１ａと１０５ｃが入力されたセレクタ５０１からは、１ビットのセレクト信号ｓｅｌ５０１により選択されたセレクタ出力５０１ａが得られ、論理演算出力３００ａ，２０２ａ，１０６ｃが入力されたセレクタ５０２からは、２ビットのセレクト信号ｓｅｌ５０２により選択されたセレクタ出力５０２ａが得られ、論理演算出力４００ａ，３０１ａ，２０３ａ，１０７ｃが入力されたセレクタ５０３からは、２ビットのセレクト信号ｓｅｌ５０３により選択されたセレクタ出力５０３ａが得られる。
なお、以上の演算で得られた論理演算出力１００ｃ，１０１ｃ，１０２ｃ，１０３ｃ，セレクタ出力５０１ａ〜５０３ａは、いずれも外部に出力することができる。
【００２１】
次に、実施の形態１の動的再構成可能演算装置における１２８ビット排他的論理和演算を行う場合の具体例について説明する。
図３−１および図３−２は、８並列排他的論理和演算時の回路構成を示す説明図である。
１つの論理演算ユニットで１６ビットの演算ができるものとすると、１２８ビットの２入力論理演算を行うためには、論理演算ユニットが８並列で必要となる。１２８ビットの２入力をＩＮＡとＩＮＢとすると、論理演算ユニット１００の一方の入力１００ａにＩＮＡの１１２〜１２７ビット目を入力し、もう一方の入力１００ｂにＩＮＢの１１２〜１２７ビット目を入力する。なお、図中、例えば［１２７：１１２］が１１２〜１２７ビット目のデータといったように、［ｂ：ａ］がａ〜ｂビット目のデータを表している。同様に、論理演算ユニット１０１の入力１０１ａと１０１ｂにはそれぞれＩＮＡとＩＮＢの９６〜１１１ビット目を入力し、論理演算ユニット１０２の入力１０２ａと１０２ｂにはそれぞれＩＮＡとＩＮＢの８０〜９５を入力し、論理演算ユニット１０３の入力１０３ａと１０３ｂにはそれぞれＩＮＡとＩＮＢの６４〜７９を入力し、論理演算ユニット１０４の入力１０４ａと１０４ｂにはそれぞれＩＮＡとＩＮＢの４８〜６３を入力し、論理演算ユニット１０５の入力１０５ａと１０５ｂにはそれぞれＩＮＡとＩＮＢの３２〜４７ビット目を入力し、論理演算ユニット１０６の入力１０６ａと１０６ｂにはそれぞれＩＮＡとＩＮＢの１６〜３１ビット目を入力し、論理演算ユニット１０７の入力１０７ａと１０７ｂにはそれぞれＩＮＡとＩＮＢの０〜１５ビット目を入力する。
【００２２】
また、論理演算ユニット１００〜１０７において、それぞれＥＸＯＲ演算子の出力を選択するようにセレクト信号ｓｅｌ１００〜１０７を設定することで、論理演算ユニット１００の出力１００ｃからは、ＩＮＡとＩＮＢの排他的論理和演算出力ＯＵＴの１１２〜１２７ビット目が出力される。同様に、論理演算ユニット１０１の出力１０１ｃからはＯＵＴの９６〜１１１ビット目が出力され、論理演算ユニット１０２の出力１０２ｃからはＯＵＴの８０〜９５ビット目が出力され、論理演算ユニット１０３の出力１０３ｃからはＯＵＴの６４〜７９ビット目が出力され、論理演算ユニット１０４の出力１０４ｃからはＯＵＴの４８〜６３ビット目が出力され、論理演算ユニット１０５の出力１０５ｃからはＯＵＴの３２〜４７ビット目が出力され、論理演算ユニット１０６の出力１０６ｃからはＯＵＴの１６〜３１ビット目が出力され、論理演算ユニット１０７の出力１０７ｃからはＯＵＴの０〜１５ビット目が出力される。
【００２３】
続いて、論理演算ユニット１０４〜１０７の出力１０４ｃ〜１０７ｃは、それぞれセレクタ５００〜５０３に入力される。セレクタ５００では、セレクト信号ｓｅｌ５００により出力１０４ｃが選択され、セレクタ出力５００ａからはＩＮＡとＩＮＢの排他的論理和演算出力ＯＵＴの４８〜６３ビット目が出力される。同様に、セレクタ５０１では、セレクト信号ｓｅｌ５０１により出力１０５ｃが選択され、セレクタ出力５０１ａからはＯＵＴの３２〜４７ビット目が出力され、セレクタ５０２では、セレクト信号ｓｅｌ５０２により出力１０６ｃが選択され、セレクタ出力５０２ａからはＯＵＴの１６〜３１ビット目が出力され、セレクタ５０３では、セレクト信号ｓｅｌ５０３により出力１０７ｃが選択され、セレクタ出力５０３ａからはＯＵＴの０〜１６ビット目が出力される。以上により、１２８ビットの２入力ＩＮＡとＩＮＢの排他的論理和演算出力ＯＵＴが求められる。
【００２４】
次に、４並列の４入力論理和演算の動作例を説明する。
図４−１および図４−２は、４入力論理和演算を４並列で動作させる場合の回路構成を示す説明図である。
４入力の論理和演算を行うには、２入力の論理演算ユニットが１段目に２個、２段目に１個、計３個必要となる。従って、図４−１および図４−２に示す１段目に８個の論理演算ユニットが配置されている回路構成では、４並列に４入力論理和演算を行うことができる。
【００２５】
まず、論理演算ユニット１００の一方の入力１００ａにはＩＮＡ０、もう一方の入力１００ｂにはＩＮＡ１を入力し、ＯＲ演算子の出力を選択するようにｓｅｌ１００を設定することにより、論理演算ユニット１００の出力１００ｃとしてＩＮＡ０とＩＮＡ１の論理和演算出力が得られる。同様に、入力１０１ａにＩＮＡ２、入力１０１ｂにＩＮＡ３を入力し、ＯＲ演算子の出力を選択するようにｓｅｌ１０１を設定した論理演算ユニット１０１からは、ＩＮＡ２とＩＮＡ３の論理和演算出力１０１ｃが得られ、入力１０２ａにＩＮＢ０、入力１０２ｂにＩＮＢ１を入力し、ＯＲ演算子の出力を選択するようにｓｅｌ１０２を設定した論理演算ユニット１０２からは、ＩＮＢ０とＩＮＢ１の論理和演算出力１０２ｃが得られ、入力１０３ａにＩＮＢ２、入力１０３ｂにＩＮＢ３を入力し、ＯＲ演算子の出力を選択するようにｓｅｌ１０３を設定した論理演算ユニット１０３からは、ＩＮＢ２とＩＮＢ３の論理和演算出力１０３ｃが得られ、入力１０４ａにＩＮＣ０、入力１０４ｂにＩＮＣ１を入力し、ＯＲ演算子の出力を選択するようにｓｅｌ１０４を設定した論理演算ユニット１０４からは、ＩＮＣ０とＩＮＣ１の論理和演算出力１０４ｃが得られ、入力１０５ａにＩＮＣ２、入力１０５ｂにＩＮＣ３を入力し、ＯＲ演算子の出力を選択するようにｓｅｌ１０５を設定した論理演算ユニット１０５からは、ＩＮＣ２とＩＮＣ３の論理和演算出力１０５ｃが得られ、入力１０６ａにＩＮＤ０、入力１０６ｂにＩＮＤ１を入力し、ＯＲ演算子の出力を選択するようにｓｅｌ１０６を設定した論理演算ユニット１０６からは、ＩＮＤ０とＩＮＤ１の論理和演算出力１０６ｃが得られ、入力１０７ａにＩＮＤ２、入力１０７ｂにＩＮＤ３を入力し、ＯＲ演算子の出力を選択するようにｓｅｌ１０７を設定した論理演算ユニット１０７からは、ＩＮＤ２とＩＮＤ３の論理和演算出力１０７ｃが得られる。
【００２６】
続いて、論理演算ユニット２００の一方の入力に論理演算ユニット１００の出力１００ｃを入力し、もう一方の入力に論理演算ユニット１０１の出力１０１ｃを入力し、ＯＲ演算子の出力を選択するようにｓｅｌ２００を設定することにより、論理演算ユニット２００の出力２００ａとして、１００ｃと１０１ｃの論理和演算出力、すなわち、ＩＮＡ０、ＩＮＡ１、ＩＮＡ２、ＩＮＡ３の論理和演算出力が得られる。同様に、論理演算ユニット１０２の出力１０２ｃと論理演算ユニット１０３の出力１０３ｃを入力し、ＯＲ演算子の出力を選択するようにｓｅｌ２０１を設定した論理演算ユニット２０１からは、１０２ｃと１０３ｃの論理和演算出力、すなわち、ＩＮＢ０、ＩＮＢ１、ＩＮＢ２、ＩＮＢ３の論理和演算出力２０１ａが得られ、論理演算ユニット１０４の出力１０４ｃと論理演算ユニット１０５の出力１０５ｃを入力し、ＯＲ演算子の出力を選択するようにｓｅｌ２０２を設定した論理演算ユニット２０２からは、１０４ｃと１０５ｃの論理和演算出力、すなわち、ＩＮＣ０、ＩＮＣ１、ＩＮＣ２、ＩＮＣ３の論理和演算出力２０２ａが得られ、論理演算ユニット１０６の出力１０６ｃと論理演算ユニット１０７の出力１０７ｃを入力し、ＯＲ演算子の出力を選択するようにｓｅｌ２０３を設定した論理演算ユニット２０３からは、１０６ｃと１０７ｃの論理和演算出力、すなわち、ＩＮＤ０、ＩＮＤ１、ＩＮＤ２、ＩＮＤ３の論理和演算出力２０３ａが得られる。
【００２７】
続いて、一方の入力に論理演算ユニット２００の出力２００ａを入力し、もう一方の入力に論理演算ユニット１０４の出力１０４ｃを入力したセレクタ５００には、出力２００ａを選択するようにセレクト信号ｓｅｌ５００を設定することにより、ＯＵＴＡとして、論理演算ユニット２００の出力２００ａ、すなわち、ＩＮＡ０、ＩＮＡ１、ＩＮＡ２、ＩＮＡ３の論理和演算出力が得られる。同様に、論理演算ユニット２０１の出力２０１ａと論理演算ユニット１０５の出力１０５ｃを入力したセレクタ５０１には、出力２０１ａを選択するようにセレクト信号ｓｅｌ５０１を設定することにより、ＯＵＴＢとして、論理演算ユニット２０１の出力２０１ａ、すなわち、ＩＮＢ０、ＩＮＢ１、ＩＮＢ２、ＩＮＢ３の論理和演算出力が得られる。論理演算ユニット３００の出力３００ａ、論理演算ユニット２０２の出力２０２ａ、論理演算ユニット１０６の出力１０６ｃを入力したセレクタ５０２には、出力２０２ａを選択するようにセレクト信号ｓｅｌ５０２を設定することにより、ＯＵＴＣとして、論理演算ユニット２０２の出力２０２ａ、すなわち、ＩＮＣ０、ＩＮＣ１、ＩＮＢＣ、ＩＮＣ３の論理和演算出力が得られる。論理演算ユニット４００の出力４００ａ、論理演算ユニット３０１の出力３０１ａ、論理演算ユニット２０３の出力２０３ａ、論理演算ユニット１０７の出力１０７ｃを入力したセレクタ５０３には、出力２０３ａを選択するようにセレクト信号ｓｅｌ５０３を設定することにより、ＯＵＴＤとして、論理演算ユニット２０３の出力２０３ａ、すなわち、ＩＮＤ０、ＩＮＤ１、ＩＮＤ２、ＩＮＤ３の論理和演算出力が得られる。以上により、４入力の論理和演算出力ＯＵＴＡ〜ＯＵＴＤが４並列同時に出力される。
【００２８】
次に、２並列の８入力論理積演算の動作例を説明する。
図５−１および図５−２は、８入力論理積演算を２並列で動作させる場合の回路構成を示す説明図である。
８入力の論理積演算を行うには、２入力の論理演算ユニットが１段目に４個、２段目に２個、３段目に１個必要となる。従って、図５−１および図５−２に示す１段目に８個の論理演算ユニットが配置されている回路構成では、２並列に８入力論理積演算を行うことができる。
【００２９】
まず、論理演算ユニット１００の一方の入力１００ａにはＩＮＡ０、もう一方の入力１００ｂにはＩＮＡ１を入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ１００を設定することにより、論理演算ユニット１００の出力１００ｃとしてＩＮＡ０とＩＮＡ１の論理積演算出力が得られる。同様に、入力１０１ａにＩＮＡ２、入力１０１ｂにＩＮＡ３を入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ１０１を設定した論理演算ユニット１０１からは、ＩＮＡ２とＩＮＡ３の論理積演算出力１０１ｃが得られ、入力１０２ａにＩＮＡ４、入力１０２ｂにＩＮＡ５を入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ１０２を設定した論理演算ユニット１０２からは、ＩＮＡ４とＩＮＡ５の論理積演算出力１０２ｃが得られ、入力１０３ａにＩＮＡ６、入力１０３ｂにＩＮＡ７を入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ１０３を設定した論理演算ユニット１０３からは、ＩＮＡ６とＩＮＡ７の論理積演算出力１０３ｃが得られ、入力１０４ａにＩＮＢ０、入力１０４ｂにＩＮＢ１を入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ１０４を設定した論理演算ユニット１０４からは、ＩＮＢ０とＩＮＢ１の論理積演算出力１０４ｃが得られ、入力１０５ａにＩＮＢ２、入力１０５ｂにＩＮＢ３を入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ１０５を設定した論理演算ユニット１０５からは、ＩＮＢ２とＩＮＢ３の論理積演算出力１０５ｃが得られ、入力１０６ａにＩＮＢ４、入力１０６ｂにＩＮＢ５を入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ１０６を設定した論理演算ユニット１０６からは、ＩＮＢ４とＩＮＢ５の論理積演算出力１０６ｃが得られ、入力１０７ａにＩＮＢ６、入力１０７ｂにＩＮＢ７を入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ１０７を設定した論理演算ユニット１０７からは、ＩＮＢ６とＩＮＢ７の論理積演算出力１０７ｃが得られる。
【００３０】
続いて、論理演算ユニット２００の一方の入力に論理演算ユニット１００の出力１００ｃを入力し、もう一方の入力に論理演算ユニット１０１の出力１０１ｃを入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ２００を設定することにより、論理演算ユニット２００の出力２００ａとして、１００ｃと１０１ｃの論理積演算出力、すなわち、ＩＮＡ０、ＩＮＡ１、ＩＮＡ２、ＩＮＡ３の論理積演算出力が得られる。同様に、論理演算ユニット１０２の出力１０２ｃと論理演算ユニット１０３の出力１０３ｃを入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ２０１を設定した論理演算ユニット２０１からは、１０２ｃと１０３ｃの論理積演算出力、すなわち、ＩＮＡ４、ＩＮＡ５、ＩＮＡ６、ＩＮＡ７の論理積演算出力２０１ａが得られ、論理演算ユニット１０４の出力１０４ｃと論理演算ユニット１０５の出力１０５ｃを入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ２０２を設定した論理演算ユニット２０２からは、１０４ｃと１０５ｃの論理積演算出力、すなわち、ＩＮＢ０、ＩＮＢ１、ＩＮＢ２、ＩＮＢ３の論理積演算出力２０２ａが得られ、論理演算ユニット１０６の出力１０６ｃと論理演算ユニット１０７の出力１０７ｃを入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ２０３を設定した論理演算ユニット２０３からは、１０６ｃと１０７ｃの論理積演算出力、すなわち、ＩＮＢ４、ＩＮＢ５、ＩＮＢ６、ＩＮＢ７の論理積演算出力２０３ａが得られる。
【００３１】
続いて、論理演算ユニット３００の一方の入力に論理演算ユニット２００の出力２００ａを入力し、もう一方の入力に論理演算ユニット２０１の出力２０１ａを入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ３００を設定することにより、論理演算ユニット３００の出力３００ａとして、２００ａと２０１ａの論理積演算出力、すなわち、ＩＮＡ０、ＩＮＡ１、ＩＮＡ２、ＩＮＡ３、ＩＮＡ４、ＩＮＡ５、ＩＮＡ６、ＩＮＡ７の論理積演算出力が得られる。同様に、論理演算ユニット２０２の出力２０２ａと論理演算ユニット２０３の出力２０３ａを入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ３０１を設定した論理演算ユニット３０１からは、２０２ａと２０３ａの論理積演算出力、すなわち、ＩＮＢ０、ＩＮＢ１、ＩＮＢ２、ＩＮＢ３、ＩＮＢ４、ＩＮＢ５、ＩＮＢ６、ＩＮＢ７の論理積演算出力３０１ａが得られる。
【００３２】
続いて、一つの入力に論理演算ユニット３００の出力３００ａを入力し、一つの入力に論理演算ユニット２０２の出力２０２ａ、一つの入力に論理演算ユニット１０６の出力１０６ｃを入力したセレクタ５０２には、出力３００ａを選択するようにセレクト信号ｓｅｌ５０２を設定することにより、ＯＵＴＡとして、論理演算ユニット３００の出力３００ａ、すなわち、ＩＮＡ０、ＩＮＡ１、ＩＮＡ２、ＩＮＡ３、ＩＮＡ４、ＩＮＡ５、ＩＮＡ６、ＩＮＡ７の論理積演算出力が得られる。同様に、論理演算ユニット４００の出力４００ａ、論理演算ユニット３０１の出力３０１ａ、論理演算ユニット２０３の出力２０３ａ、論理演算ユニット１０７の出力１０７ｃを入力したセレクタ５０３には、出力３０１ａを選択するようにセレクト信号ｓｅｌ５０３を設定することにより、ＯＵＴＢとして、論理演算ユニット３０１の出力３０１ａ、すなわち、ＩＮＢ０、ＩＮＢ１、ＩＮＢ２、ＩＮＢ３、ＩＮＢ４、ＩＮＢ５、ＩＮＢ６、ＩＮＢ７の論理積演算出力が得られる。以上により、８入力の論理積演算出力ＯＵＴＡ、ＯＵＴＢが２並列同時に出力される。
【００３３】
次に、１６入力論理積演算の動作例を説明する。
図６−１および図６−２は、１６入力論理積演算時の回路構成を示す説明図である。
図６−１および図６−２に示す２入力の論理演算ユニットが１段目に８個配置されている回路構成では、１６入力までの論理演算が可能である。
【００３４】
まず、論理演算ユニット１００の一方の入力１００ａにはＩＮ０、もう一方の入力１００ｂにはＩＮ１を入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ１００を設定することにより、論理演算ユニット１００の出力１００ｃとしてＩＮ０とＩＮ１の論理積演算出力が得られる。同様に、入力１０１ａにＩＮ２、入力１０１ｂにＩＮ３を入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ１０１を設定した論理演算ユニット１０１からは、ＩＮ２とＩＮ３の論理積演算出力１０１ｃが得られ、入力１０２ａにＩＮ４、入力１０２ｂにＩＮ５を入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ１０２を設定した論理演算ユニット１０２からは、ＩＮ４とＩＮ５の論理積演算出力１０２ｃが得られ、入力１０３ａにＩＮ６、入力１０３ｂにＩＮ７を入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ１０３を設定した論理演算ユニット１０３からは、ＩＮ６とＩＮ７の論理積演算出力１０３ｃが得られ、入力１０４ａにＩＮ８、入力１０４ｂにＩＮ９を入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ１０４を設定した論理演算ユニット１０４からは、ＩＮ８とＩＮ９の論理積演算出力１０４ｃが得られ、入力１０５ａにＩＮ１０、入力１０５ｂにＩＮ１１を入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ１０５を設定した論理演算ユニット１０５からは、ＩＮ１０とＩＮ１１の論理積演算出力１０５ｃが得られ、入力１０６ａにＩＮ１２、入力１０６ｂにＩＮ１３を入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ１０６を設定した論理演算ユニット１０６からは、ＩＮ１２とＩＮ１３の論理積演算出力１０６ｃが得られ、入力１０７ａにＩＮ１４、入力１０７ｂにＩＮ１５を入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ１０７を設定した論理演算ユニット１０７からは、ＩＮ１４とＩＮ１５の論理積演算出力１０７ｃが得られる。
【００３５】
続いて、論理演算ユニット２００の一方の入力に論理演算ユニット１００の出力１００ｃを入力し、もう一方の入力に論理演算ユニット１０１の出力１０１ｃを入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ２００を設定することにより、論理演算ユニット２００の出力２００ａとして、１００ｃと１０１ｃの論理積演算出力、すなわち、ＩＮ０、ＩＮ１、ＩＮ２、ＩＮ３の論理積演算出力が得られる。同様に、論理演算ユニット１０２の出力１０２ｃと論理演算ユニット１０３の出力１０３ｃを入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ２０１を設定した論理演算ユニット２０１からは、１０２ｃと１０３ｃの論理積演算出力、すなわち、ＩＮ４、ＩＮ５、ＩＮ６、ＩＮ７の論理積演算出力２０１ａが得られ、論理演算ユニット１０４の出力１０４ｃと論理演算ユニット１０５の出力１０５ｃを入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ２０２を設定した論理演算ユニット２０２からは、１０４ｃと１０５ｃの論理積演算出力、すなわち、ＩＮ８、ＩＮ９、ＩＮ１０、ＩＮ１１の論理積演算出力２０２ａが得られ、論理演算ユニット１０６の出力１０６ｃと論理演算ユニット１０７の出力１０７ｃを入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ２０３を設定した論理演算ユニット２０３からは、１０６ｃと１０７ｃの論理積演算出力、すなわち、ＩＮ１２、ＩＮ１３、ＩＮ１４、ＩＮ１５の論理積演算出力２０３ａが得られる。
【００３６】
続いて、論理演算ユニット３００の一方の入力に論理演算ユニット２００の出力２００ａを入力し、もう一方の入力に論理演算ユニット２０１の出力２０１ａを入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ３００を設定することにより、論理演算ユニット３００の出力３００ａとして、出力２００ａと出力２０１ａの論理積演算出力、すなわち、ＩＮ０、ＩＮ１、ＩＮ２、ＩＮ３、ＩＮ４、ＩＮ５、ＩＮ６、ＩＮ７の論理積演算出力が得られる。同様に、論理演算ユニット２０２の出力２０２ａと論理演算ユニット２０３の出力２０３ａを入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ３０１を設定した論理演算ユニット３０１からは、出力２０２ａと出力２０３ａの論理積演算出力、すなわち、ＩＮ８、ＩＮ９、ＩＮ１０、ＩＮ１１、ＩＮ１２、ＩＮ１３、ＩＮ１４、ＩＮ１５の論理積演算出力３０１ａが得られる。
【００３７】
続いて、論理演算ユニット４００の一方の入力に論理演算ユニット３００の出力３００ａを入力し、もう一方の入力に論理演算ユニット３０１の出力３０１ａを入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ４００を設定することにより、論理演算ユニット４００の出力４００ａとして、出力３００ａと出力３０１ａの論理積演算出力、すなわち、ＩＮ０、ＩＮ１、ＩＮ２、ＩＮ３、ＩＮ４、ＩＮ５、ＩＮ６、ＩＮ７、ＩＮ８、ＩＮ９、ＩＮ１０、ＩＮ１１、ＩＮ１２、ＩＮ１３、ＩＮ１４、ＩＮ１５の論理積演算出力が得られる。
【００３８】
続いて、一つの入力に論理演算ユニット４００の出力４００ａを入力し、一つの入力に論理演算ユニット３０１の出力３０１ａを入力し、一つの入力に論理演算ユニット２０３の出力２０３ａ、一つの入力に論理演算ユニット１０７の出力１０７ｃを入力したセレクタ５０３には、出力４００ａを選択するようにセレクト信号ｓｅｌ５０３を設定することにより、ＯＵＴとして、ＩＮ０、ＩＮ１、ＩＮ２、ＩＮ３、ＩＮ４、ＩＮ５、ＩＮ６、ＩＮ７、ＩＮ８、ＩＮ９、ＩＮ１０、ＩＮ１１、ＩＮ１２、ＩＮ１３、ＩＮ１４、ＩＮ１５の論理積演算出力が得られる。以上により、１６入力の論理積演算出力ＯＵＴが出力される。
【００３９】
上記のように、実施の形態１の回路は、ツリー状に構成することで回路の小型化を図ることが可能であるのと同時に、１段の論理演算であれば８並列に、２段の論理演算であれば４並列に、３段の論理演算であれば２並列に実行可能であり、処理の高速化を図ることが可能である。
【００４０】
以上のように、実施の形態１の動的再構成可能演算装置によれば、それぞれが、２入力の値の論理演算を行う複数の第１論理演算ユニットと、複数の第１論理演算ユニットの出力のうち二つの出力を入力として論理演算を行う複数の第２論理演算ユニットと、複数の第２論理演算ユニットの出力のうち二つの出力を入力として論理演算を行う複数の第３論理演算ユニットと、複数の第３論理演算ユニットの二つの出力を入力として論理演算を行う第４論理演算ユニットと、複数の第１論理演算ユニットの出力のうち一つの出力と複数の第２論理演算ユニットの出力のうち一つの出力とを選択する複数の第１接続選択手段と、複数の第１論理演算ユニットの出力のうち一つの出力と複数の第２論理演算ユニットの出力のうち一つの出力と複数の第３論理演算ユニットの出力のうち一つの出力とを選択する第２接続選択手段と、複数の第１論理演算ユニットの出力のうち一つの出力と複数の第２論理演算ユニットの出力のうち一つの出力と複数の第３論理演算ユニットの出力のうち一つの出力と第４論理演算ユニットの出力とを選択する第３接続選択手段とを備えたので、面積効率の高い動的再構成可能演算装置を得ることができる。
【００４１】
また、実施の形態１の動的再構成可能演算装置によれば、論理演算ユニットは、複数種類の論理演算素子と、複数種類の論理演算素子の出力のうち一つの出力を論理演算ユニットの出力として選択する接続選択手段とを備えたので、種々の演算を行う動的再構成可能演算装置を容易に実現することができる。
【００４２】
また、実施の形態１の動的再構成可能演算装置によれば、論理演算ユニットが備える複数種類の論演算素子を、ＡＮＤ、ＯＲ、ＮＯＴ、ＥＸＯＲとしたので、例えば、８並列排他的論理和演算や４並列４入力論理和演算、あるいは２並列８入力論理積演算や１６入力論理積演算といった論理演算を実現することができる。
【００４３】
実施の形態２．
実施の形態２は、実施の形態１の構成において論理演算ユニット１００〜１０７の一方の入力側に記憶素子であるレジスタと第４接続選択手段であるセレクタとを備えたものである。
図７−１および図７−２は、実施の形態２における動的再構成可能演算装置を示す構成図である。
図示の動的再構成可能演算装置は、論理演算ユニット１００〜１０７，２００〜２０３，３００，３０１，４００，セレクタ５００〜５０３，７００〜７０７，レジスタ６００〜６０７を備えている。ここで、レジスタ６００〜６０７は、それぞれセレクタ７００〜７０７を介して論理演算ユニット１００〜１０７の一方の入力に接続される記憶素子であり、予め所定の値が設定されている。セレクタ７００〜７０７は、２ｔｏ１のセレクタであり、一方の入力をレジスタ６００〜６０７の出力６００ａ〜６０７ａとして、もう一方の入力を入力データ１００ｂ〜１０７ｂとし、セレクタ出力７００ａ〜７０７ａを論理演算ユニット１００〜１０７の入力となるように接続されている。これ以外の構成は、実施の形態１の構成と同様であるため、対応する部分に同一符号を付してその説明を省略する。
【００４４】
レジスタ６００〜６０７には、必要に応じて予め値を設定する。入力データ１００ｂとレジスタ６００の出力６００ａがセレクタ７００に入力され、外部から入力される１ビットのセレクト信号ｓｅｌ７００により選択され、セレクタ出力７００ａが得られる。同様に、入力データ１０１ｂとレジスタ６０１の出力６０１ａが入力されたセレクタ７０１からは、セレクト信号ｓｅｌ７０１により選択されたセレクタ出力７０１ａが得られ、入力データ１０２ｂとレジスタ６０２の出力６０２ａが入力されたセレクタ７０２からは、セレクト信号ｓｅｌ７０２により選択されたセレクタ出力７０２ａが得られ、入力データ１０３ｂとレジスタ６０３の出力６０３ａが入力されたセレクタ７０３からは、セレクト信号ｓｅｌ７０３により選択されたセレクタ出力７０３ａが得られ、入力データ１０４ｂとレジスタ６０４の出力６０４ａが入力されたセレクタ７０４からは、セレクト信号ｓｅｌ７０４により選択されたセレクタ出力７０４ａが得られ、入力データ１０５ｂとレジスタ６０５の出力６０５ａが入力されたセレクタ７０５からは、セレクト信号ｓｅｌ７０５により選択されたセレクタ出力７０５ａが得られ、入力データ１０６ｂとレジスタ６０６の出力６０６ａが入力されたセレクタ７０６からは、セレクト信号ｓｅｌ７０６により選択されたセレクタ出力７０６ａが得られ、入力データ１０７ｂとレジスタ６０７の出力６０７ａが入力されたセレクタ７０７からは、セレクト信号ｓｅｌ７０７により選択されたセレクタ出力７０７ａが得られる。
【００４５】
続いて、入力データ１００ａと上記の演算で得られたセレクタ出力７００ａが入力された論理演算ユニット１００からは、外部から入力される２ビットのセレクト信号ｓｅｌ１００により選択された論理演算出力１００ｃが得られる。同様に、入力データ１０１ａとセレクタ出力７０１ａが入力された論理演算ユニット１０１からは、セレクト信号ｓｅｌ１０１により選択された論理演算出力１０１ｃが得られ、入力データ１０２ａとセレクタ出力７０２ａが入力された論理演算ユニット１０２からは、セレクト信号ｓｅｌ１０２により選択された論理演算出力１０２ｃが得られ、入力データ１０３ａとセレクタ出力７０３ａが入力された論理演算ユニット１０３からは、セレクト信号ｓｅｌ１０３により選択された論理演算出力１０３ｃが得られ、入力データ１０４ａとセレクタ出力７０４ａが入力された論理演算ユニット１０４からは、セレクト信号ｓｅｌ１０４により選択された論理演算出力１０４ｃが得られ、入力データ１０５ａとセレクタ出力７０５ａが入力された論理演算ユニット１０５からは、セレクト信号ｓｅｌ１０５により選択された論理演算出力１０５ｃが得られ、入力データ１０６ａとセレクタ出力７０６ａが入力された論理演算ユニット１０６からは、セレクト信号ｓｅｌ１０６により選択された論理演算出力１０６ｃが得られ、入力データ１０７ａとセレクタ出力７０７ａが入力された論理演算ユニット１０７からは、セレクト信号ｓｅｌ１０７により選択された論理演算出力１０７ｃが得られる。
【００４６】
次に、実施の形態２におけるＡＥＳのＭｉｘ‐Ｃｏｌｕｍｎ演算の動作例を説明する。
ＡＥＳとは、Advanced Encryption Standardの略で、共通鍵暗号化方式の名称である。ＡＥＳのプロセスのひとつにＭｉｘ‐Ｃｏｌｕｍｎ演算があり、Ｍｉｘ‐Ｃｏｌｕｍｎ演算は、数式１に示す行列演算で表される。
【数１】
0005241268.tif 000002
【００４７】
これを多項式に展開すると、数式２〜５で表される。
Ｓ′0＝｛０２｝・Ｓ0＋｛０３｝・Ｓ1＋｛０１｝・Ｓ2＋｛０１｝・Ｓ3  （数式２）
Ｓ′1＝｛０１｝・Ｓ0＋｛０２｝・Ｓ1＋｛０３｝・Ｓ2＋｛０１｝・Ｓ3  （数式３）
Ｓ′2＝｛０１｝・Ｓ0＋｛０１｝・Ｓ1＋｛０２｝・Ｓ2＋｛０３｝・Ｓ3  （数式４）
Ｓ′3＝｛０３｝・Ｓ0＋｛０１｝・Ｓ1＋｛０１｝・Ｓ2＋｛０２｝・Ｓ3  （数式５）
係数は１、２、３のみであるため、数式２〜５は、数式６〜９のように表すことができる。
Ｓ′0＝（Ｓ0＋Ｓ0）＋（Ｓ1＋Ｓ1＋Ｓ1）＋Ｓ2＋Ｓ3                    （数式６）
Ｓ′1＝Ｓ0＋（Ｓ1＋Ｓ1）＋（Ｓ2＋Ｓ2＋Ｓ2）＋Ｓ3                    （数式７）
Ｓ′2＝Ｓ0＋Ｓ1＋（Ｓ2＋Ｓ2）＋（Ｓ3＋Ｓ3＋Ｓ3）                    （数式８）
Ｓ′3＝（Ｓ0＋Ｓ0＋Ｓ0）＋Ｓ1＋Ｓ2＋（Ｓ3＋Ｓ3）                    （数式９）
ここで、Ｍｉｘ‐Ｃｏｌｕｍｎ演算で扱われるのはガロア体であるため、加算“＋”は排他的論理和演算となる。従って、数式６〜９は、論理演算子を用いて数式１０〜１３のように表される。
【数２】
0005241268.tif 000003
【００４８】
図８−１および図８−２は、実施の形態２におけるＡＥＳのＭｉｘ‐Ｃｏｌｕｍｎ演算の数式１０の回路構成を示す説明図である。
まず、レジスタ６００，６０１，６０２，６０３，６０４，６０６に定数０を設定する。また、入力１０５ｂにはＳ1を、入力１０７ｂにはＳ0を入力する。
続いて、セレクタ７００の一方の入力に１００ｂを入力し、もう一方の入力にレジスタ６００の出力６００ａを入力し、レジスタ出力６００ａを選択するようにセレクト信号ｓｅｌ７００を設定することで、セレクタ７００の出力７００ａからはレジスタ出力６００ａ、すなわち定数０が得られる。同様に、入力１０１ｂとレジスタ出力６０１ａが入力されるセレクタ７０１に、レジスタ出力６０１ａを選択するようにセレクト信号ｓｅｌ７０１を設定することで、出力７０１ａからレジスタ出力６０１ａ、すなわち定数０が得られ、入力１０２ｂとレジスタ出力６０２ａが入力されるセレクタ７０２に、レジスタ出力６０２ａを選択するようにセレクト信号ｓｅｌ７０２を設定することで、出力７０２ａからレジスタ出力６０２ａ、すなわち定数０が得られ、入力１０３ｂとレジスタ出力６０３ａが入力されるセレクタ７０３に、レジスタ出力６０３ａを選択するようにセレクト信号ｓｅｌ７０３を設定することで、出力７０３ａからレジスタ出力６０３ａ、すなわち定数０が得られ、入力１０４ｂとレジスタ出力６０４ａが入力されるセレクタ７０４に、レジスタ出力６０４ａを選択するようにセレクト信号ｓｅｌ７０４を設定することで、出力７０４ａからレジスタ出力６０４ａ、すなわち定数０が得られ、入力１０５ｂとレジスタ出力６０５ａが入力されるセレクタ７０５に、入力１０５ｂを選択するようにセレクト信号ｓｅｌ７０５を設定することで、出力７０５ａから入力１０５ｂ、すなわちＳ1が得られ、入力１０６ｂとレジスタ出力６０６ａが入力されるセレクタ７０６に、レジスタ出力６０６ａを選択するようにセレクト信号ｓｅｌ７０６を設定することで、出力７０６ａからレジスタ出力６０６ａ、すなわち定数０が得られ、入力１０７ｂとレジスタ出力６０７ａが入力されるセレクタ７０７に、入力１０７ｂを選択するようにセレクト信号ｓｅｌ７０７を設定することで、出力７０７ａから入力１０７ｂ、すなわちＳ0が得られる。
【００４９】
続いて、論理演算ユニット１００の一方の入力１００ａにはある値を、もう一方の入力にはセレクタ出力７００ａを入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ１００を設定することにより、論理演算ユニット１００の出力１００ｃとして、ある値と７００ａ、すなわち定数０の論理積演算出力、すなわち定数０が得られる。また、論理演算ユニット１０１の一方の入力１０１ａにはＳ3を、もう一方の入力にはセレクタ出力７０１ａを入力し、ＯＲ演算子の出力を選択するようにｓｅｌ１０１を設定することにより、論理演算ユニット１０１の出力１０１ｃとして、Ｓ3と７０１ａ、すなわち定数０の論理和演算出力、すなわちＳ3が得られる。また、論理演算ユニット１０２の一方の入力１０２ａにはある値を、もう一方の入力にはセレクタ出力７０２ａを入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ１０２を設定することにより、論理演算ユニット１０２の出力１０２ｃとして、ある値と７０２ａ、すなわち定数０の論理積演算出力、すなわち定数０が得られる。論理演算ユニット１０３の一方の入力１０３ａにはＳ2を、もう一方の入力にはセレクタ出力７０３ａを入力し、ＯＲ演算子の出力を選択するようにｓｅｌ１０３を設定することにより、論理演算ユニット１０３の出力１０３ｃとして、Ｓ2と７０３ａ、すなわち定数０の論理和演算出力、すなわちＳ2が得られる。
【００５０】
また、論理演算ユニット１０４の一方の入力１０４ａにはＳ1を、もう一方の入力にはセレクタ出力７０４ａを入力し、ＯＲ演算子の出力を選択するようにｓｅｌ１０４を設定することにより、論理演算ユニット１０４の出力１０４ｃとして、Ｓ1と７０４ａ、すなわち定数０の論理和演算出力、すなわちＳ1が得られる。論理演算ユニット１０５の一方の入力１０５ａにはＳ1を、もう一方の入力にはセレクタ出力７０５ａを入力し、ＥＸＯＲ演算子の出力を選択するようにｓｅｌ１０５を設定することにより、論理演算ユニット１０５の出力１０５ｃとして、Ｓ1と７０５ａ、すなわちＳ1の排他的論理和演算出力（Ｓ1 ∧ Ｓ1）が得られる。なお、∧は排他的論理和の演算子を示している。また、論理演算ユニット１０６の一方の入力１０６ａにはある値を、もう一方の入力にはセレクタ出力７０６ａを入力し、ＡＮＤ演算子の出力を選択するようにｓｅｌ１０６を設定することにより、論理演算ユニット１０６の出力１０６ｃとして、ある値と７０６ａ、すなわち定数０の論理積演算出力、すなわち定数０が得られる。論理演算ユニット１０７の一方の入力１０７ａにはＳ0を、もう一方の入力にはセレクタ出力７０７ａを入力し、ＥＸＯＲ演算子の出力を選択するようにｓｅｌ１０７を設定することにより、論理演算ユニット１０７の出力１０７ｃとして、Ｓ0と７０７ａ、すなわちＳ0の排他的論理和演算出力（Ｓ0 ∧ Ｓ0）が得られる。
【００５１】
続いて、論理演算ユニット２００の一方の入力に論理演算ユニット１００の出力１００ｃを入力し、もう一方の入力に論理演算ユニット１０１の出力１０１ｃを入力し、ＥＸＯＲ演算子の出力を選択するようにｓｅｌ２００を設定することにより、論理演算ユニット２００の出力２００ａとして、１００ｃと１０１ｃの排他的論理和演算出力、すなわち、定数０とＳ3の排他的論理和演算出力、すなわちＳ3が得られる。同様に、論理演算ユニット１０２の出力１０２ｃと論理演算ユニット１０３の出力１０３ｃを入力し、ＥＸＯＲ演算子の出力を選択するようにｓｅｌ２０１を設定した論理演算ユニット２０１からは、１０２ｃと１０３ｃの排他的論理和演算出力、すなわち、定数０とＳ2の排他的論理和演算出力２０１ａ、すなわちＳ2が得られ、論理演算ユニット１０４の出力１０４ｃと論理演算ユニット１０５の出力１０５ｃを入力し、ＥＸＯＲ演算子の出力を選択するようにｓｅｌ２０２を設定した論理演算ユニット２０２からは、１０４ｃと１０５ｃの排他的論理和演算出力、すなわち、Ｓ1と（Ｓ1 ∧ Ｓ1）の排他的論理和演算出力２０２ａ、すなわち（Ｓ1 ∧ Ｓ1 ∧ Ｓ1）が得られ、論理演算ユニット１０６の出力１０６ｃと論理演算ユニット１０７の出力１０７ｃを入力し、ＥＸＯＲ演算子の出力を選択するようにｓｅｌ２０３を設定した論理演算ユニット２０３からは、１０６ｃと１０７ｃの排他的論理和演算出力、すなわち、定数０と（Ｓ0 ∧ Ｓ0）の排他的論理和演算出力２０３ａ、すなわち（Ｓ0 ∧ Ｓ0）が得られる。
【００５２】
続いて、論理演算ユニット３００の一方の入力に論理演算ユニット２００の出力２００ａを入力し、もう一方の入力に論理演算ユニット２０１の出力２０１ａを入力し、ＥＸＯＲ演算子の出力を選択するようにｓｅｌ３００を設定することにより、論理演算ユニット３００の出力３００ａとして、２００ａと２０１ａの排他的論理和演算出力、すなわち、Ｓ3とＳ2の排他的論理和演算出力（Ｓ2 ∧ Ｓ3）が得られる。同様に、論理演算ユニット２０２の出力２０２ａと論理演算ユニット２０３の出力２０３ａを入力し、ＥＸＯＲ演算子の出力を選択するようにｓｅｌ３０１を設定した論理演算ユニット３０１からは、２０２ａと２０３ａの排他的論理和演算出力、すなわち、（Ｓ1 ∧ Ｓ1 ∧ Ｓ1）と（Ｓ0 ∧ Ｓ0）の排他的論理和演算出力３０１ａ、すなわち（Ｓ0 ∧ Ｓ0） ∧ （Ｓ1 ∧ Ｓ1 ∧ Ｓ1）が得られる。
【００５３】
続いて、論理演算ユニット４００の一方の入力に論理演算ユニット３００の出力３００ａを入力し、もう一方の入力に論理演算ユニット３０１の出力３０１ａを入力し、ＥＸＯＲ演算子の出力を選択するようにｓｅｌ４００を設定することにより、論理演算ユニット４００の出力４００ａとして、３００ａと３０１ａ、すなわち、（Ｓ2 ∧ Ｓ3）と（Ｓ0 ∧ Ｓ0） ∧ （Ｓ1 ∧ Ｓ1 ∧ Ｓ1）の排他的論理和演算出力、すなわち、（Ｓ0 ∧ Ｓ0） ∧ （Ｓ1 ∧ Ｓ1 ∧ Ｓ1） ∧ （Ｓ2 ∧ Ｓ3）が得られる。
【００５４】
続いて、一つの入力に論理演算ユニット４００の出力４００ａを入力し、一つの入力に論理演算ユニット３０１の出力３０１ａを入力し、一つの入力に論理演算ユニット２０３の出力２０３ａ、一つの入力に論理演算ユニット１０７の出力１０７ｃを入力したセレクタ５０３に、４００ａを選択するようにセレクト信号ｓｅｌ５０３を設定することにより、数式１０の出力Ｓ′0として、（Ｓ0 ∧ Ｓ0） ∧ （Ｓ1 ∧ Ｓ1 ∧ Ｓ1） ∧ （Ｓ2 ∧ Ｓ3）が得られる。
数式１１〜１３についても同様に演算出力を得られる。
【００５５】
以上のように、実施の形態２の動的再構成可能演算装置によれば、任意の値を保持する複数の記憶素子と、複数の記憶素子の出力と所定の入力とを選択する第４接続選択手段を設け、複数の第１論理演算ユニットは第４接続選択手段の選択結果を、２入力のうちの一方の入力とするようにしたので、第１論理演算ユニットへの入力データとして毎回入力しなければならないような場合でもこれを省略することができ、データ入力によるサイクル数の削減やバス幅の削減を図ることができる。
【００５６】
実施の形態３．
図９は、実施の形態３における半導体装置を示すものである。
図９において、半導体装置７は、実施の形態１または実施の形態２の動的再構成可能演算装置８と、動的再構成可能演算装置８に入力される演算前のデータあるいは演算後のデータのうち少なくとも一方のデータを格納する入出力データバッファ９を備える。このような半導体装置７は、所定の演算処理を指定するプロセッサであるＣＰＵ１０と、半導体装置７が処理するデータを格納するメモリ１１とバスライン１２を介して接続されている。
【００５７】
ＣＰＵ１０は、動的再構成可能演算装置８において処理する入力データを、ある単位分、メモリ１１からバスライン１２を介して入出力データバッファ９に格納する。動的再構成可能演算装置８は、ＣＰＵ１０からの指示により、入出力データバッファ９から入力データを読み込み、演算を開始する。演算が終了すると、動的再構成可能演算装置８から入出力データバッファ９へ演算後のデータが書き込まれる。ある単位分の演算が終了すると、ＣＰＵ１０は入出力データバッファ９に格納されている演算後のデータを、バスライン１２を介してメモリ１１に書き込む。
【００５８】
以上のように、実施の形態３の半導体装置によれば、動的再構成可能演算装置は、所定の演算処理を指定するプロセッサからの指示に基づいて、その指示に対応した演算処理を行うと共に、動的再構成可能演算装置に入力される演算前のデータまたは演算後のデータのうち、少なくとも一方のデータを格納するバッファを設けたので、プロセッサとの接続が容易な半導体装置を実現することができる。
【図面の簡単な説明】
【００５９】
【図１】この発明の実施の形態１による動的再構成可能演算装置を示す構成図である。
【図２】この発明の実施の形態１の動的再構成可能演算装置における論理演算ユニットの内部構成図である。
【図３−１】この発明の実施の形態１の動的再構成可能演算装置を用いた８並列排他的論理和演算時の回路構成を示す説明図である。
【図３−２】この発明の実施の形態１の動的再構成可能演算装置を用いた８並列排他的論理和演算時の回路構成を示す説明図である。
【図４−１】この発明の実施の形態１の動的再構成可能演算装置を用いた４並列の４入力論理和演算の回路構成を示す説明図である。
【図４−２】この発明の実施の形態１の動的再構成可能演算装置を用いた４並列の４入力論理和演算の回路構成を示す説明図である。
【図５−１】この発明の実施の形態１の動的再構成可能演算装置を用いた８入力論理積演算を２並列で動作させる場合の回路構成を示す説明図である。
【図５−２】この発明の実施の形態１の動的再構成可能演算装置を用いた８入力論理積演算を２並列で動作させる場合の回路構成を示す説明図である。
【図６−１】この発明の実施の形態１の動的再構成可能演算装置を用いた１６入力論理積演算の場合の回路構成を示す説明図である。
【図６−２】この発明の実施の形態１の動的再構成可能演算装置を用いた１６入力論理積演算の場合の回路構成を示す説明図である。
【図７−１】この発明の実施の形態２による動的再構成可能演算装置を示す構成図である。
【図７−２】この発明の実施の形態２による動的再構成可能演算装置を示す構成図である。
【図８−１】この発明の実施の形態２による動的再構成可能演算装置を用いたＡＥＳのＭｉｘ‐Ｃｏｌｕｍｎ演算の数式１０の回路構成を示す説明図である。
【図８−２】この発明の実施の形態２による動的再構成可能演算装置を用いたＡＥＳのＭｉｘ‐Ｃｏｌｕｍｎ演算の数式１０の回路構成を示す説明図である。
【図９】この発明の実施の形態３による半導体装置を示す構成図である。
【符号の説明】
【００６０】
１，１００〜１０７，２００〜２０３，３００，３０１，４００  論理演算ユニット、２  ＮＯＴ演算子、３  ＥＸＯＲ演算子、４  ＯＲ演算子、５  ＡＮＤ演算子、６  セレクタ、７  半導体装置、８  動的再構成可能演算装置、９  入出力データバッファ、１０  ＣＰＵ、１１  メモリ、１２  バスライン、１００ａ〜１０７ａ，１００ｂ〜１０７ｂ  論理演算ユニットの入力、１００ｃ〜１０７ｃ，２００ａ〜２０３ａ，３００ａ，３０１ａ，４００ａ  論理演算ユニットの出力、５００〜５０３，７００〜７０７  セレクタ、６００〜６０７  レジスタ、６００ａ〜６０７ａ  レジスタ出力、７００ａ〜７０７ａ  セレクタ出力。
【図１】
0005241268.tif 000004
【図２】
0005241268.tif 000005
【図３−１】
0005241268.tif 000006
【図３−２】
0005241268.tif 000007
【図４−１】
0005241268.tif 000008
【図４−２】
0005241268.tif 000009
【図５−１】
0005241268.tif 000010
【図５−２】
0005241268.tif 000011
【図６−１】
0005241268.tif 000012
【図６−２】
0005241268.tif 000013
【図７−１】
0005241268.tif 000014
【図７−２】
0005241268.tif 000015
【図８−１】
0005241268.tif 000016
【図８−２】
0005241268.tif 000017
【図９】
0005241268.tif 000018