(57)【特許請求の範囲】
【請求項１】
積和演算を実行する積和演算部と、並べ替え演算を実行する並べ替え部と、パターンマッチ／換字演算を実行するパターンマッチ／換字部と、論理演算を実行する論理演算部とを有し、かつ、これら演算部における入力から出力に至る論理経路が選択可能な再構成可能演算部と、
前記再構成可能演算部の論理経路情報が記憶される演算制御メモリとを備え、
前記積和演算部は、８個ずつの乗算器および加算器と、これら乗算器および加算器の経路を制御する配線制御部とを有し、
前記論理演算部は、８個ずつの一方の論理演算器および他方の演算器と、これら一方および他方の演算器の経路を制御する配線制御部とを有し、
前記パターンマッチ／換字部は、８個の記憶部を有し、
前記再構成可能演算部は、前記演算制御メモリの論理経路情報に基づいて、使用する演算部と、当該演算部の論理経路が設定されることを特徴とする動的再構成プロセッサ。
【請求項２】
再構成可能演算部は、
積和演算部、並べ替え部、パターンマッチ／換字部及び論理演算部の入出力の経路を選択するセレクタを有し、
前記セレクタは、いずれかの演算部の出力を、他の演算部の入力に接続するよう経路選択を行うことを特徴とする請求項１記載の動的再構成プロセッサ。
【請求項３】
再構成可能演算部の経路情報を設定する演算制御部を備え、
前記演算制御部は、演算制御メモリの経路情報を逐次書き換えることにより、前記再構成可能演算部の経路情報を制御することを特徴とする請求項１または請求項２記載の動的再構成プロセッサ。
【請求項４】
再構成可能演算部の経路情報を設定する演算制御部を備え、
前記演算制御部は、演算制御メモリに対して予め一定の処理を行う制御情報を書き込むことにより、前記再構成可能演算部の経路情報を制御することを特徴とする請求項１または請求項２記載の動的再構成プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、構成を動的に変更可能な動的再構成プロセッサに関するものである。
【背景技術】
【０００２】
従来の動的再構成プロセッサとして、演算器にプログラマブル演算器を使用し、その内部を２次元マトリックス状に配置した複数の可変論理ブロックとそれらを接続する可変信号網により構成したものがあった（例えば、特許文献１参照）。
このようにすれば、演算器の回路規模を小さくでき、演算の仕様変更に対応でき、また、複合演算を実行するのに適した演算器を有するプロセッサを構成できる。
【０００３】
【特許文献１】特開平１１−２９６３４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記従来の動的再構成プロセッサは、一般的なＣＰＵ（Central Processing Unit）とほぼ同等の汎用性を備え、かつ利用可能な演算器がＣＰＵよりも多いことから、一般的にＣＰＵよりも高い処理性能を持っている。しかしながら、搭載されている演算器の実行可能な演算の種類や演算精度、および可変論理網の制限などにより、あるアプリケーションはとても効率よく実行できても、別のアプリケーションでは思ったほど性能が出ず、実行するアプリケーションによって得手不得手が存在するという問題があった。
【０００５】
例えば、高い演算精度で加算、乗算といった算術演算を実行できる演算器を複数搭載した動的再構成プロセッサの場合を考える。このような動的再構成プロセッサは、概して数値演算、特にＦＦＴ（Fast Fourier Transform）やＤＣＴ（Discrete Cosine Transform）など算術演算が主なアプリケーションで高い処理性能が出やすいが、ＡＥＳ（Advanced Encryption Standard）や、ＤＥＳ（Data Encryption Standard）といった論理演算や換字処理が主なアプリケーションで処理性能が出にくい。処理性能が出にくくなる理由は、論理演算を実行するために算術演算器を組み合わせて用いるため、組み合わせの複雑度が増し処理時間のオーバーヘッドを生じるためである。また、論理演算は本来ならば算術演算よりも少ないゲート数で実装可能な演算であるから、算術演算器で論理演算を実行することはゲート規模、ゲート利用率という観点からも処理効率が良くない。
【０００６】
この発明は上記のような課題を解決するためになされたもので、実行するアプリケーションによって処理性能が大きく変わることなく、ゲート規模やゲート利用率の観点から効率のよい動的再構成プロセッサを得ることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係る動的再構成プロセッサは、積和演算部と並べ替え部とパターンマッチ／換字部と論理演算部とを有し、かつ、これら演算部における入力から出力に至る論理経路が選択可能な再構成可能演算部と、再構成可能演算部の論理経路情報が記憶される演算制御メモリとを備え、積和演算部は、８個ずつの乗算器および加算器と、これら乗算器および加算器の経路を制御する配線制御部とを有し、論理演算部は、８個ずつの一方の論理演算器および他方の演算器と、これら一方および他方の演算器の経路を制御する配線制御部とを有し、パターンマッチ／換字部は、８個の記憶部を有し、再構成可能演算部は、演算制御メモリの論理経路情報に基づいて、使用する演算部とその論理経路が設定されるようにしたものである。
【発明の効果】
【０００８】
この発明の動的再構成プロセッサは、積和演算部と並べ替え部とパターンマッチ／換字部と論理演算部のうち少なくとも一つの演算部を使用し、かつ、その演算部における入力から出力に至る論理経路を選択可能としたので、実行するアプリケーションによって処理性能が大きく変わることなく、ゲート規模やゲート利用率の観点から効率のよい動的再構成プロセッサを得ることができる。
【発明を実施するための最良の形態】
【０００９】
実施の形態１．
図１は、この発明の実施の形態１による動的再構成プロセッサを示す構成図である。
図において、動的再構成プロセッサは、演算制御部１、バス２、再構成可能演算部３、演算制御メモリ４、データ記憶部５、バス制御部６を備えている。
【００１０】
演算制御部１は、再構成可能演算部３とバス制御部６とを制御するためのプログラムと、これらのプログラムを実行するためのＣＰＵとを搭載し、演算制御メモリ４に再構成可能演算部３の制御情報を書き込むことにより、再構成可能演算部３の制御を行う機能部である。バス２は、演算制御部１〜データ記憶部５を相互に接続するためのバスである。再構成可能演算部３は、積和演算を実行し、入力から出力に至る論理経路が選択可能な積和演算部と、並べ替え演算を実行し、入力から出力に至る論理経路が選択可能な並べ替え部と、パターンマッチ／換字演算を実行し、入力から出力に至る論理経路が選択可能なパターンマッチ／換字部と、論理演算を実行し、入力から出力に至る論理経路が選択可能な論理演算部を有し、演算制御メモリ４に格納された制御情報に基づいて、使用する演算部と、その演算部の論理経路が設定される演算部である。尚、積和演算部、論理演算部、並べ替え部及びパターンマッチ／換字部は、動画像処理、２／３次元画像処理、信号処理および暗号化処理から抽出されたクリティカルマクロファンクション（本実施の形態では、複数のアプリケーションで実行される演算のうち、特に処理性能を大きく左右するような演算をこう呼ぶ）に対応した演算を行う演算部である。尚、各演算部の詳細については後述する。
【００１１】
演算制御メモリ４は、再構成可能演算部３の演算回路を決定するための制御情報が演算制御部１によって書き込まれ、この制御情報を再構成可能演算部３に与えるための記憶部である。データ記憶部５は、再構成可能演算部３へ入力するデータや演算結果を記憶するためのメモリである。バス制御部６はバス２の制御を行う制御部である。
【００１２】
図２は、再構成可能演算部３の構成図である。
図示のように、再構成可能演算部３は、各演算部への入力データをバス２からの入力と各演算部からの出力四つのうちから一つを選択し、各演算部への入力を選択する入力セレクタ３１−０〜３１−３と、積和演算部３２−０、論理演算部３２−１、並べ替え部３２−２、パターンマッチ／換字部３２−３と、積和演算部３２−０〜パターンマッチ／換字部３２−３の出力のうち、一つを選択してバス２へ出力する出力セレクタ３３により構成される。
【００１３】
入力セレクタ３１−０〜３１−３は、それぞれ演算制御メモリ４に書き込まれた制御情報に基づいて積和演算部３２−０〜パターンマッチ／換字部３２−３への入力経路を選択するセレクタである。積和演算部３２−０は、乗算と加算演算を行う演算部であり、論理演算部３２−１は種々の論理演算を行う演算部である。また、並べ替え部３２−２は、入力ビットに対して、任意の並べ替え演算を行う演算部、パターンマッチ／換字部３２−３は、パターンマッチ及び換字処理を行う演算部である。出力セレクタ３３は、積和演算部３２−０〜パターンマッチ／換字部３２−３の出力を選択するためのセレクタである。
これらの入力セレクタ３１−０〜３１−３および出力セレクタ３３は、演算制御部１によって演算制御メモリ４に書き込まれた経路設定情報に基づいて設定される。また、積和演算部３２−０、論理演算部３２−１、並べ替え部３２−２およびパターンマッチ／換字部３２−３への入力を選択するそれぞれの入力セレクタ３１−０〜３１−３は、他の演算部の演算結果を入力として選択することができるため、異なる演算器間での演算をパイプライン化することができる。
【００１４】
図３は、積和演算部３２−０の構成図である。
積和演算部３２−０は、入力制御部３０１と、８個の乗算器３０２−０〜３０２−７と、配線制御部３０３と、８個の加算器３０４−０〜３０４−７と、出力制御部３０５とを備えている。入力制御部３０１、配線制御部３０３及び出力制御部３０５は、乗算器３０２−０〜３０２−７と加算器３０４−０〜３０４−７との接続関係を任意に変更するための制御部であり、乗算器３０２−０〜３０２−７及び加算器３０４−０〜３０４−７は、乗算及び加算を行う演算器である。この積和演算部３２−０は、入力制御部３０１による入力制御、配線制御部３０３による乗算器３０２−０〜３０２−７と加算器３０４−０〜３０４−７との接続制御、及び出力制御部３０５による加算器３０４−０〜３０４−７の出力制御を適切に制御することで、ＦＦＴ、ＤＣＴで頻繁に用いられるバタフライ演算、フィルタ処理などで頻繁に用いられる畳み込み演算、座標変換処理で頻繁に行われる行列演算、および８並列までの２入力乗算、加算が実行可能である。
【００１５】
図４は、論理演算部３２−１の構成図である。
論理演算部３２−１は、入力制御部３１１と、１６ｂｉｔ２入力、１６ｂｉｔ１出力のＡＮＤ、ＯＲ、ＮＯＴ、ＥＸＯＲが実行可能な１６個の論理演算器３１２−０〜３１２−７、３１４−０〜３１４−７と、配線制御部３１３と、出力制御部３１５とを備えている。入力制御部３１１、配線制御部３１３及び出力制御部３１５は、論理演算器３１２−０〜３１２−７、３１４−０〜３１４−７への入出力及びこれら演算器の接続関係を任意に設定するための制御部である。
【００１６】
図５は、並べ替え部３２−２の構成図である。
並べ替え部３２−２は、１２８ｂｉｔの入力を有し、全ての入力ｂｉｔを任意のｂｉｔ位置（１２８ｂｉｔ）に出力可能な配線制御部３２１を備え、１２８ｂｉｔの入力に対し任意の並べ替え演算が実行可能である。
【００１７】
図６は、パターンマッチ／換字部３２−３の構成図である。
パターンマッチ／換字部３２−３は、入力制御部３３１と、８個のＲＡＭ３３２−０〜３３２−７と、出力制御部３３３を備え、ＲＡＭ３３２−０〜３３２−７に任意の値を書き込むことで、アドレス対データの対応によりデータ変換を行うよう構成されている。また、入力制御部３３１及び出力制御部３３３は、ＲＡＭ３３２−０〜３３２−７への入力と出力を制御し、最大８並列までのパターンマッチ／換字演算を可能とする。
【００１８】
次に、上記のように構成された動的再構成プロセッサの動作について説明する。
先ず、動画像処理で頻繁に用いられるＤＣＴ演算を行う場合を説明する。
ＤＣＴ演算は、下式（１）、（２）で示され、この計算をするにあたっては様々なアルゴリズムが存在するが、ここではＣｈｅｎのアルゴリズムを用いることとする。
【数１】
0005046779.tif 000002
尚、Ｃｈｅｎのアルゴリズムは図７に示されるようなバタフライ演算を行う。この図７において、＋、−の記号は加算および減算を表し、実線は乗算を示し、実線上の数字は掛ける値を表す。また、乗算におけるＣikは、ｃｏｓ（ｉπ／ｋ）、Ｓikは、ｓｉｎ（ｉπ／ｋ）を表している。
以上により、ＤＣＴ演算は積和演算のみで実行可能であるので、本具体例では積和演算部３２−０のみを用いる。
【００１９】
本実施の形態の積和演算部３２−０は８個の乗算器３０２−０〜３０２−７と加算器３０４−０〜３０４−７を持つが、図７のバタフライ演算は２８回の加減算と乗算が必要であるので、１回で全てを実行することは出来ない。そのため、図７の［１］〜［５］に示すように５回に分けて演算を行う。
先ず、［１］の演算を行うにあたっては、演算制御部１から演算制御メモリ４に対し、再構成可能演算部３の入力経路の制御情報と積和演算部３２−０の制御情報が書き込まれる。この制御情報によって、再構成可能演算部３の入力経路は、図８に示すように、入力から積和演算部３２−０への経路と、積和演算部３２−０から出力への経路が選択される。即ち、入力セレクタ３１−０〜３１−３が入力を選択し積和演算部３２−０の演算結果が出力セレクタ３３を経て出力される。
【００２０】
また、積和演算部３２−０は、制御情報によって図９に示すように制御される。即ち、入力制御部３０１はバス２上のデータを入力するよう制御される。また、乗算器３０２−０の入力には図７で示したｘ０に相当するデータを、乗算器３０２−１にはｘ１に相当するデータを、乗算器３０２−２にはｘ２に相当するデータを、乗算器３０２−３にはｘ３に相当するデータを、乗算器３０２−４にはｘ４に相当するデータを、乗算器３０２−５にはｘ５に相当するデータを、乗算器３０２−６にはｘ６に相当するデータを、乗算器３０２−７にはｘ７に相当するデータを選択するように制御される。更に、乗算器３０２−１、３０２−３、３０２−５、３０２−７には掛ける値として−１が、その他の乗算器には掛ける値として１が設定される。
【００２１】
配線制御部３０３は、加算器３０４−０と加算器３０４−７の入力に対して、乗算器３０２−０と乗算器３０２−７の出力が接続されるよう経路を選択する。また、加算器３０４−１と加算器３０４−６の入力に対して、乗算器３０２−３と乗算器３０２−４の出力が接続されるよう経路を選択し、加算器３０４−２と加算器３０４−５の入力に対して、乗算器３０２−２と乗算器３０２−５の出力が接続されるよう経路を選択し、加算器３０４−３と加算器３０４−４の入力に対して、乗算器３０２−１と乗算器３０２−６の出力が接続されるよう経路を選択する。
【００２２】
また、出力制御部３０５は、加算器３０４−０〜３０４−７の出力をバス２上の適切な位置へ出力するよう経路を選択する。この状態で、演算制御部１からバス制御部６に対しデータ記憶部５から再構成可能演算部３へ演算対象となるデータを転送するよう命令を発行すると、再構成可能演算部３は、図７のバタフライ演算のうち［１］の演算を行ってバス２に演算結果を返す。再構成可能演算部３が返したデータは、バス制御部６により再びデータ記憶部５の適切な位置に記憶される。全ての演算対象に対し、［１］の計算が終了したら、演算制御部１は演算制御メモリ４を書き換えて、［２］の演算が実行可能なように再構成可能演算部３を制御し、バス制御部６に対しては［１］の演算結果が記憶されている位置からデータを読み出して再構成可能演算部３に入力する。以上のような操作を［５］の演算が完了するまで繰り返すことにより、本実施の形態の動的再構成プロセッサにてＤＣＴ演算を実行することが可能である。
【００２３】
次に、本実施の形態にて暗号化処理（ＡＥＳ）を実行する場合を説明する。先ず、ＡＥＳの処理について以下簡単に説明する。
ＡＥＳは１２８ｂｉｔの入力と１２８ｂｉｔの鍵データを用いて暗号文１２８ｂｉｔを得る処理である。処理のフローを図１０に示す。図１０中、ＡｄｄＲｏｕｎｄＫｅｙ（ステップＳＴ１）は、図１１に示すように、入力１２８ｂｉｔと副鍵１２８ｂｉｔとのＥＸＯＲを行う。副鍵の生成は、図１２に示すように入力１２８ｂｉｔから出力１２８ｂｉｔが生成される。即ち、入力１２８ｂｉｔのうち上位３２ｂｉｔ（１２〜１５ｂｙｔｅ目）を８ｂｉｔ左シフトした結果とＲｃｏｎ（ｘ）とのＥＸＯＲを行い、この結果と入力１２８ｂｉｔのうちの下位３２ｂｉｔ（０〜３ｂｙｔｅ目）とのＥＸＯＲ演算結果を出力１２８ｂｉｔの０〜３バイト目とする。また、出力の０〜３ｂｙｔｅ目と入力４〜７ｂｙｔｅ目とのＥＸＯＲ演算結果を出力４〜７ｂｙｔｅ目とし、更に、出力４〜７ｂｙｔｅ目と入力８〜１１ｂｙｔｅ目とのＥＸＯＲ演算結果を出力８〜１１ｂｙｔｅ目とし、出力８〜１１ｂｙｔｅ目と入力１２〜１５ｂｙｔｅ目とのＥＸＯＲ演算結果を出力１２〜１５ｂｙｔｅ目とし、出力１２８ｂｉｔを得る。
【００２４】
図１０におけるＳｕｂＢｙｔｅｓは、図１３に示すように１２８ｂｉｔの入力に対し、８ｂｉｔ毎に換字処理を行う演算である。換字処理の入力と出力の対応は、図１４のＳｕｂＢｙｔｅｓの変換テーブルに示す通りである。例えば、８ｂｉｔの入力“１１０００１０１”（＝Ｃ５）は、“０１００１０１０”（＝４Ａ）に変換される。
ＳｈｉｆｔＲｏｗｓは、図１５に示すように１２８ｂｉｔの入力に対して、８ｂｉｔ毎に区切り、それらを４ｘ４の配列状に配置したものを、一番上の行はそのまま、次の行は８ｂｉｔ左シフト、次の行は１６ｂｉｔ左シフト、次の行は２４ｂｉｔ左シフトを施して、また１２８ｂｉｔのｂｉｔに戻す処理を行う。一見複雑な処理であるが、図１６に示すように８ｂｉｔ単位の並べ替えを行う処理に帰着する。
ＭｉｘＣｏｌｕｍｎは、図１７に示すように、１２８ｂｉｔの入力を８ｂｉｔ単位の４ｘ４の行列に見立て、４ｘ４の行列演算を行う。但し、通常、行列演算は積和演算を行うが、ＡＥＳではガロア体を扱うため乗算の代わりにＡＮＤを、加算の代わりにＥＸＯＲを行う。更に、ＭｉｘＣｏｌｕｍでは行列演算の係数が１、２、３しかないため、１を掛ける場合はそのままの値、２を掛ける場合は自身の２回加算（ＥＸＯＲ）、３を掛ける場合は自身の３回の加算で代用する。
【００２５】
以上の処理を本実施の形態にて実行する手順を説明する。
先ず、演算制御部１は、データ記憶部５に暗号化対象（Ｎｂｉｔ）と副鍵の種１２８ｂｉｔ（Ｋ0）を書き込む。次に、最初のＡｄｄＲｏｕｎｄＫｅｙを実行するため、データ記憶部５に書き込んだ暗号化対象Ｎｂｉｔから１２８ｂｉｔを読み出して、副鍵Ｋ0とのＥＸＯＲを計算する。計算にあたっては、論理演算器３１２−０〜３１２−７の一方の入力に暗号化対象の１２８ｂｉｔを、他方の入力をＫ0となるように設定する。
次に図１０で示した暗号化処理の９回繰り返しの部分を実行する。まず、副鍵（Ｋ1）の生成を行うため、再構成可能演算部３の入力セレクタ３１−２に対してはバス２からの入力を選択するように設定し、パターンマッチ／換字部３２−３には並べ替え部３２−２の出力を選択するように入力セレクタ３１−３で設定し、論理演算部３２−１にはパターンマッチ／換字部３２−３の出力を選択するよう入力セレクタ３１−１で設定する。これを示したのが図１８である。
【００２６】
また、図１９に示すように、並べ替え部３２−２に対し、入力の１２８ｂｉｔのうち最上位の３２ｂｉｔに対して８ｂｉｔ左シフトを施すように経路情報を設定する。パターンマッチ／換字部３２−３における各ＲＡＭ３３２−０〜３３２−７に対し、図１４で示したＳｕｂＢｙｔｅｓの変換テーブルの値を書き込む。
また、図２０に示すように、論理演算部３２−１には、論理演算器３１２−０と論理演算器３１２−１の一方の入力をＦＦＦＦ16（ＸＸＸＸ16は１６進数ＸＸＸＸを表す）に設定し、他方の入力を入力制御部３１１の０〜１５ｂｉｔと１６〜２３ｂｉｔが入力となるようにそれぞれ設定する。また、論理演算器３１２−６，３１２−７に対しては、一方の入力にＲｃｏｎ（１）の上位１６ｂｉｔおよび下位１６ｂｉｔを設定し、他方の入力には、入力制御部３１１の９６〜１１１ｂｉｔと１１２〜１２７ｂｉｔが入力となるように設定する。
以上のように設定後、データ記憶部５から副鍵の種１２８ｂｉｔを読み出して再構成可能演算部３に入力すると、副鍵Ｋ0の最初の３２ｂｉｔが計算可能である。この最初の３２ｂｉｔは次の演算でまた使用するためデータ記憶部５に記録する。
【００２７】
次に、副鍵の残りの部分を計算するため、論理演算部３２−１を、図２１に示すように、入力制御部３１１にて、先に計算し上書きを行った副鍵Ｋ0の０〜１５ｂｉｔ目までが論理演算器３１２−２及び論理演算器３１２−４の一方の入力になるように、１６〜３１ｂｉｔ目までが論理演算器３１２−３と論理演算器３１２−５の一方の入力となるように設定する。また、これら論理演算器３１２−２〜３１２−５にはＸＯＲを実行するように設定する。
次に、配線制御部３１３にて、論理演算器３１４−２と論理演算器３１４−３の一方の入力がＦＦＦＦ16となるようにし、他方の入力が論理演算器３１２−２の出力、論理演算器３１２−３の出力となるように設定する。このようにすると、論理演算器３１４−２と論理演算器３１４−３の出力からは、副鍵Ｋ1の３２〜６３ｂｉｔ目までが計算できる。同時に、論理演算器３１４−４の入力の一方を論理演算器３１２−２の出力、もう一方を論理演算器３１２−４の出力とし、論理演算器３１４−５の入力の一方を論理演算器３１２−３の出力、もう一方を論理演算器３１２−５とし、実行する演算をＸＯＲとすると、論理演算器３１４−４と論理演算器３１４−５の出力からは、副鍵Ｋ1の６４〜９５ｂｉｔ目までが計算できる。以上の計算結果は次の計算で利用するのでデータ記憶部５に記憶する。
【００２８】
次に、副鍵の最上位３２ｂｉｔを計算するため、再構成可能演算部３の接続を、図２２に示すように、入力から論理演算部３２−１を通り、出力する経路に設定する。また、図２３に示すように、入力制御部３１１にて論理演算器３１２−６の一方の入力に、先ほど計算した副鍵Ｋ1の計算結果のうち６４ｂｉｔ〜７９ｂｉｔ目を、他方の入力に副鍵の種の９６〜１１１ｂｉｔ目を入力し、実行する演算をＸＯＲとする。また、論理演算器３１２−７の一方の入力を先ほど計算した副鍵Ｋ1の計算結果のうち８０〜９５ｂｉｔ目を、他方の入力を副鍵の種の１１２〜１２７ｂｉｔ目を入力し、実行する演算をＸＯＲとする。次に論理演算器３１４−６の一方の入力をＦＦＦＦ16に設定し、他方の入力に論理演算器３１２−６の出力を設定し、実行する演算をＡＮＤとする。また、論理演算器３１４−７の一方の入力にＦＦＦＦ16を設定し、他方の入力に論理演算器３１２−７を設定し、実行する演算をＡＮＤとする。以上の設定により、論理演算器３１４−６と論理演算器３１４−７の出力から副鍵Ｋ1の最上位３２ｂｉｔが計算できる。
【００２９】
次に、ＳｕｂＢｙｔｅｓを計算する。ＳｕｂＢｙｔｅｓの計算にはパターンマッチ／換字部３２−３を利用する。パターンマッチ／換字部３２−３のＲＡＭ３３２−０〜３３２−７に、図１４で示したＳｕｂＢｙｔｅｓの変換テーブルの値を書き込む。ＲＡＭ一つで８ｂｉｔのＳｕｂＢｙｔｅｓを実行可能であり、本実施の形態ではパターンマッチ／換字部３２−３には８個のＲＡＭ３３２−０〜３３２−７を搭載するので、一度に６４ｂｉｔまでのＳｕｂＢｙｔｅｓ演算が可能である。従って、本実施の形態では１２８ｂｉｔのＳｕｂＢｙｔｅｓ演算を実行するために、暗号化対象の１２８ｂｉｔを上位６４ｂｉｔ、下位６４ｂｉｔに分けて２回演算を実行する必要がある。
【００３０】
次に、ＳｈｉｆｔＲｏｗｓ演算を実行する。ＳｈｉｆｔＲｏｗｓ演算は、図１６に示したように８ｂｉｔ単位で配線のつなぎ換えを行う。よって、この演算には並べ替え部３２−２を利用する。並べ替えの設定については、図１６に示す通りである。
【００３１】
次にＭｉｘＣｏｌｕｍｎ演算を実行する。ＭｉｘＣｏｌｕｍｎは図１７に示したように、４ｘ４の行列演算を行う。どの行の計算も基本的には同じであるので、最初の行の計算についてのみ説明を行う。
先ず、再構成可能演算部３の設定を図２２に示すようにする。次に、論理演算器の設定を図２４に示すように、論理演算器３１２−０の両方の入力をａ０とし、実行する演算をＸＯＲとする（ａ０×０２を計算）。また、論理演算器３１２−１の両方の入力にａ１を設定し、実行する演算をＸＯＲとする（ａ１×０２を計算）。また、論理演算器３１２−１の一方をａ１とし他方をＦＦＦＦ16とする（ａ１）。また、論理演算器３１２−３の一方の入力をａ２、他方をａ３として実行する演算をＸＯＲとする（ａ２＋ａ３を計算）。続いて、論理演算器３１４−０の一方の入力を論理演算器３１２−０の出力、他方をＦＦＦＦ16とする（ａ０×０２をそのまま出力）。また、論理演算器３１４−１は、論理演算器３１２−１と論理演算器３１２−２の出力を入力とし実行する演算をＸＯＲとする（ａ１×０３の計算）。また、論理演算器３１４−２には一方の入力を論理演算器３１２−３の出力、他方をＦＦＦＦ16を設定する（ａ２＋ａ３をそのまま出力）。以上の計算結果を一旦データ記憶部５に書き戻す。
【００３２】
次に、書き戻したデータを再び読み出し、図２５に示すように、論理演算器３１２−０には、先ほど計算したａ０×２とａ１×３が入力となるようにし、実行する演算をＸＯＲとする。また、論理演算器３１２−１には一方の入力に先ほど計算したａ２×ａ３を、他方をＦＦＦＦ16となるようにする（ａ２＋ａ３をそのまま出力）。次に、論理演算器３１４−０にて、一方を論理演算器３１２−０の出力、他方を論理演算器３１２−１の出力を入力として実行する演算をＸＯＲとすることにより、最終的な演算結果ａ０×０２＋ａ１×３＋ａ２＋ａ３を得る。以上の演算を、入力を切り替えながら４回繰り返すことによりＭｉｘＣｏｌｕｍｎを実行可能である。
【００３３】
最後に、あらかじめ計算しておいた副鍵Ｋ1を用いて、この副鍵と入力１２８ｂｉｔを用いてＡｄｄＲｏｕｎｄＫｅｙを行う。ＡｄｄＲｏｕｎｄＫｅｙは副鍵と入力のＸＯＲで計算可能であるから、論理演算部３２−１を用いて計算を行う。計算にあたっては、論理演算器３１２−０〜３１２−７の一方の入力を暗号化対象の１２８ｂｉｔを、他方の入力をＫ1となるように設定する。
以上のような手順を１０回繰り返せば（１０回目だけＭｉｘＣｏｌｕｍｎは実行しない）１２８bitの暗号化処理が実行可能である。暗号化対象がＮｂｉｔ（Ｎ＞１２８）である場合はさらに１２８ｂｉｔを読み出して、暗号化処理の合計がＮｂｉｔ以上になるまで同じ事を繰り返せばよい。
以上のようにすれば本実施の形態の動的再構成プロセッサにて暗号化処理（ＡＥＳ）を実行可能である。
【００３４】
以上、本実施の形態は動画像処理（ＤＣＴ）と暗号化処理（ＡＥＳ）からクリティカルマクロファンクションを抽出し、その結果四つの演算部を持つ場合を想定したが、別のアプリケーションを考慮した場合、必ずしも四つの演算部を持つ必要はない。また、各演算部の構成は、特にＤＣＴと、ＡＥＳの各処理を効率的に実行できるような構成を取ったが、必ずしも本実施の形態の様な構成である必要はない。更に、演算制御部１は、演算制御メモリ４に対して予め一定の処理を行う制御情報を書き込むことにより、再構成可能演算部３の経路情報を制御するようにしたが、演算制御メモリ４の経路情報を逐次書き換えることにより再構成可能演算部３の経路情報を制御するよう構成してもよい。
【００３５】
以上のように、本実施の形態１の動的再構成プロセッサによれば、積和演算を実行する積和演算部と、並べ替え演算を実行する並べ替え部と、パターンマッチ／換字演算を実行するパターンマッチ／換字部と、論理演算を実行する論理演算部とを有し、かつ、これら演算部における入力から出力に至る論理経路が選択可能な再構成可能演算部と、再構成可能演算部の論理経路情報が記憶される演算制御メモリとを備え、積和演算部は、８個ずつの乗算器および加算器と、これら乗算器および加算器の経路を制御する配線制御部とを有し、論理演算部は、８個ずつの一方の論理演算器および他方の演算器と、これら一方および他方の演算器の経路を制御する配線制御部とを有し、パターンマッチ／換字部は、８個の記憶部を有し、再構成可能演算部は、演算制御メモリの論理経路情報に基づいて、使用する演算部と、演算部の論理経路が設定されるようにしたので、アプリケーションによって性能を左右する機能を効率よく実行でき、かつ、各機能の実装に適した回路構造を持つことができるので、実行するアプリケーションによって処理性能が大きく変わることなく、ゲート規模、ゲート利用率の観点からも効率の良い動的再構成可能プロセッサを提供することができる。
【００３６】
また、実施の形態１の動的再構成プロセッサによれば、再構成可能演算部は、積和演算部、並べ替え部、パターンマッチ／換字部及び論理演算部の入出力の経路を選択するセレクタを有し、セレクタは、いずれかの演算部の出力を、他の演算部の入力に接続するよう経路選択を行うようにしたので、異なる演算器間での演算をパイプライン化することができる。
【００３７】
また、実施の形態１の動的再構成プロセッサによれば、再構成可能演算部の経路情報を設定する演算制御部を備え、演算制御部は、演算制御メモリの経路情報を逐次書き換えることにより、再構成可能演算部の経路情報を制御するようにしたので、種々の演算を実行する動的再構成プロセッサを容易に実現することができる。
【００３８】
また、実施の形態１の動的再構成プロセッサによれば、再構成可能演算部の経路情報を設定する演算制御部を備え、演算制御部は、演算制御メモリに対して予め一定の処理を行う制御情報を書き込むことにより、再構成可能演算部の経路情報を制御するようにしたので、種々の演算を実行する動的再構成プロセッサを容易に実現することができる。
【図面の簡単な説明】
【００３９】
【図１】この発明の実施の形態１による動的再構成プロセッサを示す構成図である。
【図２】この発明の実施の形態１による動的再構成プロセッサの再構成可能演算部を示す構成図である。
【図３】この発明の実施の形態１による動的再構成プロセッサの積和演算部を示す構成図である。
【図４】この発明の実施の形態１による動的再構成プロセッサの論理演算部を示す構成図である。
【図５】この発明の実施の形態１による動的再構成プロセッサの並べ替え部の構成図である。
【図６】この発明の実施の形態１による動的再構成プロセッサのパターンマッチ／換字部を示す構成図である。
【図７】この発明の実施の形態１による動的再構成プロセッサのＤＣＴを行う場合の説明図である。
【図８】この発明の実施の形態１による動的再構成プロセッサのＤＣＴを行う場合の再構成可能演算部の経路設定の説明図である。
【図９】この発明の実施の形態１による動的再構成プロセッサのＤＣＴを行う場合の積和演算部の経路設定の説明図である。
【図１０】この発明の実施の形態１による動的再構成プロセッサのＡＥＳの処理手順を示す説明図である。
【図１１】この発明の実施の形態１による動的再構成プロセッサのＡＥＳのAddRoundKey処理を示す説明図である。
【図１２】この発明の実施の形態１による動的再構成プロセッサのＡＥＳの副鍵生成を示す説明図である。
【図１３】この発明の実施の形態１による動的再構成プロセッサのＡＥＳのSubBytes処理を示す説明図である。
【図１４】この発明の実施の形態１による動的再構成プロセッサのＡＥＳのSubBytes処理における変換テーブルを示す説明図である。
【図１５】この発明の実施の形態１による動的再構成プロセッサのＡＥＳのShiftRows処理を示す説明図である。
【図１６】この発明の実施の形態１による動的再構成プロセッサのＡＥＳのShiftRows処理を等価的に置き換えた処理を示す説明図である。
【図１７】この発明の実施の形態１による動的再構成プロセッサのＡＥＳのMixColumns処理を示す説明図である。
【図１８】この発明の実施の形態１による動的再構成プロセッサの副鍵生成をする際の再構成可能演算部の経路設定を示す説明図である。
【図１９】この発明の実施の形態１による動的再構成プロセッサの副鍵生成をする際の並べ替え部の経路設定を示す説明図である。
【図２０】この発明の実施の形態１による動的再構成プロセッサの副鍵生成をする際の論理演算部の経路設定（その１）を示す説明図である。
【図２１】この発明の実施の形態１による動的再構成プロセッサの副鍵生成をする際の論理演算部の経路設定（その２）を示す説明図である。
【図２２】この発明の実施の形態１による動的再構成プロセッサのＡＥＳの論理演算を行う場合の再構成可能演算部の経路設定を示す説明図である。
【図２３】この発明の実施の形態１による動的再構成プロセッサの副鍵生成をする際の論理演算部の経路設定（その３）を示す説明図である。
【図２４】この発明の実施の形態１による動的再構成プロセッサのMixColumns処理を実行する際の論理演算部の経路設定（その１）を示す説明図である。
【図２５】この発明の実施の形態１による動的再構成プロセッサのMixColumns処理を実行する際の論理演算部の経路設定（その２）を示す説明図である。
【符号の説明】
【００４０】
１  演算制御部、３  再構成可能演算部、４  演算制御メモリ、３１−０〜３１−３  入力セレクタ、３２−０  積和演算部、３２−１  論理演算部、３２−２  並べ替え部、３２−３  パターンマッチ／換字部、３３  出力セレクタ、３０１，３１１，３３１  入力制御部、３０２−０〜３０２−７  乗算器、３０３  配線制御部、３０４−０〜３０４−７  加算器、３０５，３１５，３３３  出力制御部、３１２−０〜３１２−７，３１４−０〜３１４−７  論理演算器、３１３  配線制御部、３２１  配線制御部、３３２−０〜３３２−７  ＲＡＭ。
【図１】
0005046779.tif 000003
【図２】
0005046779.tif 000004
【図３】
0005046779.tif 000005
【図４】
0005046779.tif 000006
【図５】
0005046779.tif 000007
【図６】
0005046779.tif 000008
【図７】
0005046779.tif 000009
【図８】
0005046779.tif 000010
【図９】
0005046779.tif 000011
【図１０】
0005046779.tif 000012
【図１１】
0005046779.tif 000013
【図１２】
0005046779.tif 000014
【図１３】
0005046779.tif 000015
【図１４】
0005046779.tif 000016
【図１５】
0005046779.tif 000017
【図１６】
0005046779.tif 000018
【図１７】
0005046779.tif 000019
【図１８】
0005046779.tif 000020
【図１９】
0005046779.tif 000021
【図２０】
0005046779.tif 000022
【図２１】
0005046779.tif 000023
【図２２】
0005046779.tif 000024
【図２３】
0005046779.tif 000025
【図２４】
0005046779.tif 000026
【図２５】
0005046779.tif 000027