動的再構成プロセッサ
【課題】実行するアプリケーションによって処理性能が大きく変わることなく、ゲート規模やゲート利用率の観点から効率のよい動的再構成プロセッサを得る。
【解決手段】再構成可能演算部3は、積和演算部と並べ替え部とパターンマッチ/換字部と論理演算部のうち少なくとも一つの演算部を有し、かつ、その演算部における入力から出力に至る論理経路が選択可能に構成されている。演算制御部1は、再構成可能演算部3の論理経路情報を演算制御メモリ4に書き込み、再構成可能演算部3は、演算制御メモリ4に記憶された論理経路情報に基づいて、使用する演算部とその論理経路が設定される。
【解決手段】再構成可能演算部3は、積和演算部と並べ替え部とパターンマッチ/換字部と論理演算部のうち少なくとも一つの演算部を有し、かつ、その演算部における入力から出力に至る論理経路が選択可能に構成されている。演算制御部1は、再構成可能演算部3の論理経路情報を演算制御メモリ4に書き込み、再構成可能演算部3は、演算制御メモリ4に記憶された論理経路情報に基づいて、使用する演算部とその論理経路が設定される。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、構成を動的に変更可能な動的再構成プロセッサに関するものである。
【背景技術】
【0002】
従来の動的再構成プロセッサとして、演算器にプログラマブル演算器を使用し、その内部を2次元マトリックス状に配置した複数の可変論理ブロックとそれらを接続する可変信号網により構成したものがあった(例えば、特許文献1参照)。
このようにすれば、演算器の回路規模を小さくでき、演算の仕様変更に対応でき、また、複合演算を実行するのに適した演算器を有するプロセッサを構成できる。
【0003】
【特許文献1】特開平11−296345号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
上記従来の動的再構成プロセッサは、一般的なCPU(Central Processing Unit)とほぼ同等の汎用性を備え、かつ利用可能な演算器がCPUよりも多いことから、一般的にCPUよりも高い処理性能を持っている。しかしながら、搭載されている演算器の実行可能な演算の種類や演算精度、および可変論理網の制限などにより、あるアプリケーションはとても効率よく実行できても、別のアプリケーションでは思ったほど性能が出ず、実行するアプリケーションによって得手不得手が存在するという問題があった。
【0005】
例えば、高い演算精度で加算、乗算といった算術演算を実行できる演算器を複数搭載した動的再構成プロセッサの場合を考える。このような動的再構成プロセッサは、概して数値演算、特にFFT(Fast Fourier Transform)やDCT(Discrete Cosine Transform)など算術演算が主なアプリケーションで高い処理性能が出やすいが、AES(Advanced Encryption Standard)や、DES(Data Encryption Standard)といった論理演算や換字処理が主なアプリケーションで処理性能が出にくい。処理性能が出にくくなる理由は、論理演算を実行するために算術演算器を組み合わせて用いるため、組み合わせの複雑度が増し処理時間のオーバーヘッドを生じるためである。また、論理演算は本来ならば算術演算よりも少ないゲート数で実装可能な演算であるから、算術演算器で論理演算を実行することはゲート規模、ゲート利用率という観点からも処理効率が良くない。
【0006】
この発明は上記のような課題を解決するためになされたもので、実行するアプリケーションによって処理性能が大きく変わることなく、ゲート規模やゲート利用率の観点から効率のよい動的再構成プロセッサを得ることを目的とする。
【課題を解決するための手段】
【0007】
この発明に係る動的再構成プロセッサは、積和演算部と並べ替え部とパターンマッチ/換字部と論理演算部のうち少なくとも一つの演算部を有し、かつ、その演算部における入力から出力に至る論理経路が選択可能な再構成可能演算部と、再構成可能演算部の論理経路情報が記憶される演算制御メモリとを備え、再構成可能演算部は、演算制御メモリの論理経路情報に基づいて、使用する演算部とその論理経路が設定されるようにしたものである。
【発明の効果】
【0008】
この発明の動的再構成プロセッサは、積和演算部と並べ替え部とパターンマッチ/換字部と論理演算部のうち少なくとも一つの演算部を使用し、かつ、その演算部における入力から出力に至る論理経路を選択可能としたので、実行するアプリケーションによって処理性能が大きく変わることなく、ゲート規模やゲート利用率の観点から効率のよい動的再構成プロセッサを得ることができる。
【発明を実施するための最良の形態】
【0009】
実施の形態1.
図1は、この発明の実施の形態1による動的再構成プロセッサを示す構成図である。
図において、動的再構成プロセッサは、演算制御部1、バス2、再構成可能演算部3、演算制御メモリ4、データ記憶部5、バス制御部6を備えている。
【0010】
演算制御部1は、再構成可能演算部3とバス制御部6とを制御するためのプログラムと、これらのプログラムを実行するためのCPUとを搭載し、演算制御メモリ4に再構成可能演算部3の制御情報を書き込むことにより、再構成可能演算部3の制御を行う機能部である。バス2は、演算制御部1〜データ記憶部5を相互に接続するためのバスである。再構成可能演算部3は、積和演算を実行し、入力から出力に至る論理経路が選択可能な積和演算部と、並べ替え演算を実行し、入力から出力に至る論理経路が選択可能な並べ替え部と、パターンマッチ/換字演算を実行し、入力から出力に至る論理経路が選択可能なパターンマッチ/換字部と、論理演算を実行し、入力から出力に至る論理経路が選択可能な論理演算部を有し、演算制御メモリ4に格納された制御情報に基づいて、使用する演算部と、その演算部の論理経路が設定される演算部である。尚、積和演算部、論理演算部、並べ替え部及びパターンマッチ/換字部は、動画像処理、2/3次元画像処理、信号処理および暗号化処理から抽出されたクリティカルマクロファンクション(本実施の形態では、複数のアプリケーションで実行される演算のうち、特に処理性能を大きく左右するような演算をこう呼ぶ)に対応した演算を行う演算部である。尚、各演算部の詳細については後述する。
【0011】
演算制御メモリ4は、再構成可能演算部3の演算回路を決定するための制御情報が演算制御部1によって書き込まれ、この制御情報を再構成可能演算部3に与えるための記憶部である。データ記憶部5は、再構成可能演算部3へ入力するデータや演算結果を記憶するためのメモリである。バス制御部6はバス2の制御を行う制御部である。
【0012】
図2は、再構成可能演算部3の構成図である。
図示のように、再構成可能演算部3は、各演算部への入力データをバス2からの入力と各演算部からの出力四つのうちから一つを選択し、各演算部への入力を選択する入力セレクタ31−0〜31−3と、積和演算部32−0、論理演算部32−1、並べ替え部32−2、パターンマッチ/換字部32−3と、積和演算部32−0〜パターンマッチ/換字部32−3の出力のうち、一つを選択してバス2へ出力する出力セレクタ33により構成される。
【0013】
入力セレクタ31−0〜31−3は、それぞれ演算制御メモリ4に書き込まれた制御情報に基づいて積和演算部32−0〜パターンマッチ/換字部32−3への入力経路を選択するセレクタである。積和演算部32−0は、乗算と加算演算を行う演算部であり、論理演算部32−1は種々の論理演算を行う演算部である。また、並べ替え部32−2は、入力ビットに対して、任意の並べ替え演算を行う演算部、パターンマッチ/換字部32−3は、パターンマッチ及び換字処理を行う演算部である。出力セレクタ33は、積和演算部32−0〜パターンマッチ/換字部32−3の出力を選択するためのセレクタである。
これらの入力セレクタ31−0〜31−3および出力セレクタ33は、演算制御部1によって演算制御メモリ4に書き込まれた経路設定情報に基づいて設定される。また、積和演算部32−0、論理演算部32−1、並べ替え部32−2およびパターンマッチ/換字部32−3への入力を選択するそれぞれの入力セレクタ31−0〜31−3は、他の演算部の演算結果を入力として選択することができるため、異なる演算器間での演算をパイプライン化することができる。
【0014】
図3は、積和演算部32−0の構成図である。
積和演算部32−0は、入力制御部301と、8個の乗算器302−0〜302−7と、配線制御部303と、8個の加算器304−0〜304−7と、出力制御部305とを備えている。入力制御部301、配線制御部303及び出力制御部305は、乗算器302−0〜302−7と加算器304−0〜304−7との接続関係を任意に変更するための制御部であり、乗算器302−0〜302−7及び加算器304−0〜304−7は、乗算及び加算を行う演算器である。この積和演算部32−0は、入力制御部301による入力制御、配線制御部303による乗算器302−0〜302−7と加算器304−0〜304−7との接続制御、及び出力制御部305による加算器304−0〜304−7の出力制御を適切に制御することで、FFT、DCTで頻繁に用いられるバタフライ演算、フィルタ処理などで頻繁に用いられる畳み込み演算、座標変換処理で頻繁に行われる行列演算、および8並列までの2入力乗算、加算が実行可能である。
【0015】
図4は、論理演算部32−1の構成図である。
論理演算部32−1は、入力制御部311と、16bit2入力、16bit1出力のAND、OR、NOT、EXORが実行可能な16個の論理演算器312−0〜312−7、314−0〜314−7と、配線制御部313と、出力制御部315とを備えている。入力制御部311、配線制御部313及び出力制御部315は、論理演算器312−0〜312−7、314−0〜314−7への入出力及びこれら演算器の接続関係を任意に設定するための制御部である。
【0016】
図5は、並べ替え部32−2の構成図である。
並べ替え部32−2は、128bitの入力を有し、全ての入力bitを任意のbit位置(128bit)に出力可能な配線制御部321を備え、128bitの入力に対し任意の並べ替え演算が実行可能である。
【0017】
図6は、パターンマッチ/換字部32−3の構成図である。
パターンマッチ/換字部32−3は、入力制御部331と、8個のRAM332−0〜332−7と、出力制御部333を備え、RAM332−0〜332−7に任意の値を書き込むことで、アドレス対データの対応によりデータ変換を行うよう構成されている。また、入力制御部331及び出力制御部333は、RAM332−0〜332−7への入力と出力を制御し、最大8並列までのパターンマッチ/換字演算を可能とする。
【0018】
次に、上記のように構成された動的再構成プロセッサの動作について説明する。
先ず、動画像処理で頻繁に用いられるDCT演算を行う場合を説明する。
DCT演算は、下式(1)、(2)で示され、この計算をするにあたっては様々なアルゴリズムが存在するが、ここではChenのアルゴリズムを用いることとする。
【数1】
尚、Chenのアルゴリズムは図7に示されるようなバタフライ演算を行う。この図7において、+、−の記号は加算および減算を表し、実線は乗算を示し、実線上の数字は掛ける値を表す。また、乗算におけるCikは、cos(iπ/k)、Sikは、sin(iπ/k)を表している。
以上により、DCT演算は積和演算のみで実行可能であるので、本具体例では積和演算部32−0のみを用いる。
【0019】
本実施の形態の積和演算部32−0は8個の乗算器302−0〜302−7と加算器304−0〜304−7を持つが、図7のバタフライ演算は28回の加減算と乗算が必要であるので、1回で全てを実行することは出来ない。そのため、図7の[1]〜[5]に示すように5回に分けて演算を行う。
先ず、[1]の演算を行うにあたっては、演算制御部1から演算制御メモリ4に対し、再構成可能演算部3の入力経路の制御情報と積和演算部32−0の制御情報が書き込まれる。この制御情報によって、再構成可能演算部3の入力経路は、図8に示すように、入力から積和演算部32−0への経路と、積和演算部32−0から出力への経路が選択される。即ち、入力セレクタ31−0〜31−3が入力を選択し積和演算部32−0の演算結果が出力セレクタ33を経て出力される。
【0020】
また、積和演算部32−0は、制御情報によって図9に示すように制御される。即ち、入力制御部301はバス2上のデータを入力するよう制御される。また、乗算器302−0の入力には図7で示したx0に相当するデータを、乗算器302−1にはx1に相当するデータを、乗算器302−2にはx2に相当するデータを、乗算器302−3にはx3に相当するデータを、乗算器302−4にはx4に相当するデータを、乗算器302−5にはx5に相当するデータを、乗算器302−6にはx6に相当するデータを、乗算器302−7にはx7に相当するデータを選択するように制御される。更に、乗算器302−1、302−3、302−5、302−7には掛ける値として−1が、その他の乗算器には掛ける値として1が設定される。
【0021】
配線制御部303は、加算器304−0と加算器304−7の入力に対して、乗算器302−0と乗算器302−7の出力が接続されるよう経路を選択する。また、加算器304−1と加算器304−6の入力に対して、乗算器302−3と乗算器302−4の出力が接続されるよう経路を選択し、加算器304−2と加算器304−5の入力に対して、乗算器302−2と乗算器302−5の出力が接続されるよう経路を選択し、加算器304−3と加算器304−4の入力に対して、乗算器302−1と乗算器302−6の出力が接続されるよう経路を選択する。
【0022】
また、出力制御部305は、加算器304−0〜304−7の出力をバス2上の適切な位置へ出力するよう経路を選択する。この状態で、演算制御部1からバス制御部6に対しデータ記憶部5から再構成可能演算部3へ演算対象となるデータを転送するよう命令を発行すると、再構成可能演算部3は、図7のバタフライ演算のうち[1]の演算を行ってバス2に演算結果を返す。再構成可能演算部3が返したデータは、バス制御部6により再びデータ記憶部5の適切な位置に記憶される。全ての演算対象に対し、[1]の計算が終了したら、演算制御部1は演算制御メモリ4を書き換えて、[2]の演算が実行可能なように再構成可能演算部3を制御し、バス制御部6に対しては[1]の演算結果が記憶されている位置からデータを読み出して再構成可能演算部3に入力する。以上のような操作を[5]の演算が完了するまで繰り返すことにより、本実施の形態の動的再構成プロセッサにてDCT演算を実行することが可能である。
【0023】
次に、本実施の形態にて暗号化処理(AES)を実行する場合を説明する。先ず、AESの処理について以下簡単に説明する。
AESは128bitの入力と128bitの鍵データを用いて暗号文128bitを得る処理である。処理のフローを図10に示す。図10中、AddRoundKey(ステップST1)は、図11に示すように、入力128bitと副鍵128bitとのEXORを行う。副鍵の生成は、図12に示すように入力128bitから出力128bitが生成される。即ち、入力128bitのうち上位32bit(12〜15byte目)を8bit左シフトした結果とRcon(x)とのEXORを行い、この結果と入力128bitのうちの下位32bit(0〜3byte目)とのEXOR演算結果を出力128bitの0〜3バイト目とする。また、出力の0〜3byte目と入力4〜7byte目とのEXOR演算結果を出力4〜7byte目とし、更に、出力4〜7byte目と入力8〜11byte目とのEXOR演算結果を出力8〜11byte目とし、出力8〜11byte目と入力12〜15byte目とのEXOR演算結果を出力12〜15byte目とし、出力128bitを得る。
【0024】
図10におけるSubBytesは、図13に示すように128bitの入力に対し、8bit毎に換字処理を行う演算である。換字処理の入力と出力の対応は、図14のSubBytesの変換テーブルに示す通りである。例えば、8bitの入力“11000101”(=C5)は、“01001010”(=4A)に変換される。
ShiftRowsは、図15に示すように128bitの入力に対して、8bit毎に区切り、それらを4x4の配列状に配置したものを、一番上の行はそのまま、次の行は8bit左シフト、次の行は16bit左シフト、次の行は24bit左シフトを施して、また128bitのbitに戻す処理を行う。一見複雑な処理であるが、図16に示すように8bit単位の並べ替えを行う処理に帰着する。
MixColumnは、図17に示すように、128bitの入力を8bit単位の4x4の行列に見立て、4x4の行列演算を行う。但し、通常、行列演算は積和演算を行うが、AESではガロア体を扱うため乗算の代わりにANDを、加算の代わりにEXORを行う。更に、MixColumでは行列演算の係数が1、2、3しかないため、1を掛ける場合はそのままの値、2を掛ける場合は自身の2回加算(EXOR)、3を掛ける場合は自身の3回の加算で代用する。
【0025】
以上の処理を本実施の形態にて実行する手順を説明する。
先ず、演算制御部1は、データ記憶部5に暗号化対象(Nbit)と副鍵の種128bit(K0)を書き込む。次に、最初のAddRoundKeyを実行するため、データ記憶部5に書き込んだ暗号化対象Nbitから128bitを読み出して、副鍵K0とのEXORを計算する。計算にあたっては、論理演算器312−0〜312−7の一方の入力に暗号化対象の128bitを、他方の入力をK0となるように設定する。
次に図10で示した暗号化処理の9回繰り返しの部分を実行する。まず、副鍵(K1)の生成を行うため、再構成可能演算部3の入力セレクタ31−2に対してはバス2からの入力を選択するように設定し、パターンマッチ/換字部32−3には並べ替え部32−2の出力を選択するように入力セレクタ31−3で設定し、論理演算部32−1にはパターンマッチ/換字部32−3の出力を選択するよう入力セレクタ31−1で設定する。これを示したのが図18である。
【0026】
また、図19に示すように、並べ替え部32−2に対し、入力の128bitのうち最上位の32bitに対して8bit左シフトを施すように経路情報を設定する。パターンマッチ/換字部32−3における各RAM332−0〜332−7に対し、図14で示したSubBytesの変換テーブルの値を書き込む。
また、図20に示すように、論理演算部32−1には、論理演算器312−0と論理演算器312−1の一方の入力をFFFF16(XXXX16は16進数XXXXを表す)に設定し、他方の入力を入力制御部311の0〜15bitと16〜23bitが入力となるようにそれぞれ設定する。また、論理演算器312−6,312−7に対しては、一方の入力にRcon(1)の上位16bitおよび下位16bitを設定し、他方の入力には、入力制御部311の96〜111bitと112〜127bitが入力となるように設定する。
以上のように設定後、データ記憶部5から副鍵の種128bitを読み出して再構成可能演算部3に入力すると、副鍵K0の最初の32bitが計算可能である。この最初の32bitは次の演算でまた使用するためデータ記憶部5に記録する。
【0027】
次に、副鍵の残りの部分を計算するため、論理演算部32−1を、図21に示すように、入力制御部311にて、先に計算し上書きを行った副鍵K0の0〜15bit目までが論理演算器312−2及び論理演算器312−4の一方の入力になるように、16〜31bit目までが論理演算器312−3と論理演算器312−5の一方の入力となるように設定する。また、これら論理演算器312−2〜312−5にはXORを実行するように設定する。
次に、配線制御部313にて、論理演算器314−2と論理演算器314−3の一方の入力がFFFF16となるようにし、他方の入力が論理演算器312−2の出力、論理演算器312−3の出力となるように設定する。このようにすると、論理演算器314−2と論理演算器314−3の出力からは、副鍵K1の32〜63bit目までが計算できる。同時に、論理演算器314−4の入力の一方を論理演算器312−2の出力、もう一方を論理演算器312−4の出力とし、論理演算器314−5の入力の一方を論理演算器312−3の出力、もう一方を論理演算器312−5とし、実行する演算をXORとすると、論理演算器314−4と論理演算器314−5の出力からは、副鍵K1の64〜95bit目までが計算できる。以上の計算結果は次の計算で利用するのでデータ記憶部5に記憶する。
【0028】
次に、副鍵の最上位32bitを計算するため、再構成可能演算部3の接続を、図22に示すように、入力から論理演算部32−1を通り、出力する経路に設定する。また、図23に示すように、入力制御部311にて論理演算器312−6の一方の入力に、先ほど計算した副鍵K1の計算結果のうち64bit〜79bit目を、他方の入力に副鍵の種の96〜111bit目を入力し、実行する演算をXORとする。また、論理演算器312−7の一方の入力を先ほど計算した副鍵K1の計算結果のうち80〜95bit目を、他方の入力を副鍵の種の112〜127bit目を入力し、実行する演算をXORとする。次に論理演算器314−6の一方の入力をFFFF16に設定し、他方の入力に論理演算器312−6の出力を設定し、実行する演算をANDとする。また、論理演算器314−7の一方の入力にFFFF16を設定し、他方の入力に論理演算器312−7を設定し、実行する演算をANDとする。以上の設定により、論理演算器314−6と論理演算器314−7の出力から副鍵K1の最上位32bitが計算できる。
【0029】
次に、SubBytesを計算する。SubBytesの計算にはパターンマッチ/換字部32−3を利用する。パターンマッチ/換字部32−3のRAM332−0〜332−7に、図14で示したSubBytesの変換テーブルの値を書き込む。RAM一つで8bitのSubBytesを実行可能であり、本実施の形態ではパターンマッチ/換字部32−3には8個のRAM332−0〜332−7を搭載するので、一度に64bitまでのSubBytes演算が可能である。従って、本実施の形態では128bitのSubBytes演算を実行するために、暗号化対象の128bitを上位64bit、下位64bitに分けて2回演算を実行する必要がある。
【0030】
次に、ShiftRows演算を実行する。ShiftRows演算は、図16に示したように8bit単位で配線のつなぎ換えを行う。よって、この演算には並べ替え部32−2を利用する。並べ替えの設定については、図16に示す通りである。
【0031】
次にMixColumn演算を実行する。MixColumnは図17に示したように、4x4の行列演算を行う。どの行の計算も基本的には同じであるので、最初の行の計算についてのみ説明を行う。
先ず、再構成可能演算部3の設定を図22に示すようにする。次に、論理演算器の設定を図24に示すように、論理演算器312−0の両方の入力をa0とし、実行する演算をXORとする(a0×02を計算)。また、論理演算器312−1の両方の入力にa1を設定し、実行する演算をXORとする(a1×02を計算)。また、論理演算器312−1の一方をa1とし他方をFFFF16とする(a1)。また、論理演算器312−3の一方の入力をa2、他方をa3として実行する演算をXORとする(a2+a3を計算)。続いて、論理演算器314−0の一方の入力を論理演算器312−0の出力、他方をFFFF16とする(a0×02をそのまま出力)。また、論理演算器314−1は、論理演算器312−1と論理演算器312−2の出力を入力とし実行する演算をXORとする(a1×03の計算)。また、論理演算器314−2には一方の入力を論理演算器312−3の出力、他方をFFFF16を設定する(a2+a3をそのまま出力)。以上の計算結果を一旦データ記憶部5に書き戻す。
【0032】
次に、書き戻したデータを再び読み出し、図25に示すように、論理演算器312−0には、先ほど計算したa0×2とa1×3が入力となるようにし、実行する演算をXORとする。また、論理演算器312−1には一方の入力に先ほど計算したa2×a3を、他方をFFFF16となるようにする(a2+a3をそのまま出力)。次に、論理演算器314−0にて、一方を論理演算器312−0の出力、他方を論理演算器312−1の出力を入力として実行する演算をXORとすることにより、最終的な演算結果a0×02+a1×3+a2+a3を得る。以上の演算を、入力を切り替えながら4回繰り返すことによりMixColumnを実行可能である。
【0033】
最後に、あらかじめ計算しておいた副鍵K1を用いて、この副鍵と入力128bitを用いてAddRoundKeyを行う。AddRoundKeyは副鍵と入力のXORで計算可能であるから、論理演算部32−1を用いて計算を行う。計算にあたっては、論理演算器312−0〜312−7の一方の入力を暗号化対象の128bitを、他方の入力をK1となるように設定する。
以上のような手順を10回繰り返せば(10回目だけMixColumnは実行しない)128bitの暗号化処理が実行可能である。暗号化対象がNbit(N>128)である場合はさらに128bitを読み出して、暗号化処理の合計がNbit以上になるまで同じ事を繰り返せばよい。
以上のようにすれば本実施の形態の動的再構成プロセッサにて暗号化処理(AES)を実行可能である。
【0034】
以上、本実施の形態は動画像処理(DCT)と暗号化処理(AES)からクリティカルマクロファンクションを抽出し、その結果四つの演算部を持つ場合を想定したが、別のアプリケーションを考慮した場合、必ずしも四つの演算部を持つ必要はない。また、各演算部の構成は、特にDCTと、AESの各処理を効率的に実行できるような構成を取ったが、必ずしも本実施の形態の様な構成である必要はない。更に、演算制御部1は、演算制御メモリ4に対して予め一定の処理を行う制御情報を書き込むことにより、再構成可能演算部3の経路情報を制御するようにしたが、演算制御メモリ4の経路情報を逐次書き換えることにより再構成可能演算部3の経路情報を制御するよう構成してもよい。
【0035】
以上のように、本実施の形態1の動的再構成プロセッサによれば、積和演算を実行する積和演算部と、並べ替え演算を実行する並べ替え部と、パターンマッチ/換字演算を実行するパターンマッチ/換字部と、論理演算を実行する論理演算部のうち少なくとも一つの演算部を有し、かつ、演算部における入力から出力に至る論理経路が選択可能な再構成可能演算部と、再構成可能演算部の論理経路情報が記憶される演算制御メモリとを備え、再構成可能演算部は、演算制御メモリの論理経路情報に基づいて、使用する演算部と、演算部の論理経路が設定されるようにしたので、アプリケーションによって性能を左右する機能を効率よく実行でき、かつ、各機能の実装に適した回路構造を持つことができるので、実行するアプリケーションによって処理性能が大きく変わることなく、ゲート規模、ゲート利用率の観点からも効率の良い動的再構成可能プロセッサを提供することができる。
【0036】
また、実施の形態1の動的再構成プロセッサによれば、再構成可能演算部は、積和演算部、並べ替え部、パターンマッチ/換字部及び論理演算部の入出力の経路を選択するセレクタを有し、セレクタは、いずれかの演算部の出力を、他の演算部の入力に接続するよう経路選択を行うようにしたので、異なる演算器間での演算をパイプライン化することができる。
【0037】
また、実施の形態1の動的再構成プロセッサによれば、再構成可能演算部の経路情報を設定する演算制御部を備え、演算制御部は、演算制御メモリの経路情報を逐次書き換えることにより、再構成可能演算部の経路情報を制御するようにしたので、種々の演算を実行する動的再構成プロセッサを容易に実現することができる。
【0038】
また、実施の形態1の動的再構成プロセッサによれば、再構成可能演算部の経路情報を設定する演算制御部を備え、演算制御部は、演算制御メモリに対して予め一定の処理を行う制御情報を書き込むことにより、再構成可能演算部の経路情報を制御するようにしたので、種々の演算を実行する動的再構成プロセッサを容易に実現することができる。
【図面の簡単な説明】
【0039】
【図1】この発明の実施の形態1による動的再構成プロセッサを示す構成図である。
【図2】この発明の実施の形態1による動的再構成プロセッサの再構成可能演算部を示す構成図である。
【図3】この発明の実施の形態1による動的再構成プロセッサの積和演算部を示す構成図である。
【図4】この発明の実施の形態1による動的再構成プロセッサの論理演算部を示す構成図である。
【図5】この発明の実施の形態1による動的再構成プロセッサの並べ替え部の構成図である。
【図6】この発明の実施の形態1による動的再構成プロセッサのパターンマッチ/換字部を示す構成図である。
【図7】この発明の実施の形態1による動的再構成プロセッサのDCTを行う場合の説明図である。
【図8】この発明の実施の形態1による動的再構成プロセッサのDCTを行う場合の再構成可能演算部の経路設定の説明図である。
【図9】この発明の実施の形態1による動的再構成プロセッサのDCTを行う場合の積和演算部の経路設定の説明図である。
【図10】この発明の実施の形態1による動的再構成プロセッサのAESの処理手順を示す説明図である。
【図11】この発明の実施の形態1による動的再構成プロセッサのAESのAddRoundKey処理を示す説明図である。
【図12】この発明の実施の形態1による動的再構成プロセッサのAESの副鍵生成を示す説明図である。
【図13】この発明の実施の形態1による動的再構成プロセッサのAESのSubBytes処理を示す説明図である。
【図14】この発明の実施の形態1による動的再構成プロセッサのAESのSubBytes処理における変換テーブルを示す説明図である。
【図15】この発明の実施の形態1による動的再構成プロセッサのAESのShiftRows処理を示す説明図である。
【図16】この発明の実施の形態1による動的再構成プロセッサのAESのShiftRows処理を等価的に置き換えた処理を示す説明図である。
【図17】この発明の実施の形態1による動的再構成プロセッサのAESのMixColumns処理を示す説明図である。
【図18】この発明の実施の形態1による動的再構成プロセッサの副鍵生成をする際の再構成可能演算部の経路設定を示す説明図である。
【図19】この発明の実施の形態1による動的再構成プロセッサの副鍵生成をする際の並べ替え部の経路設定を示す説明図である。
【図20】この発明の実施の形態1による動的再構成プロセッサの副鍵生成をする際の論理演算部の経路設定(その1)を示す説明図である。
【図21】この発明の実施の形態1による動的再構成プロセッサの副鍵生成をする際の論理演算部の経路設定(その2)を示す説明図である。
【図22】この発明の実施の形態1による動的再構成プロセッサのAESの論理演算を行う場合の再構成可能演算部の経路設定を示す説明図である。
【図23】この発明の実施の形態1による動的再構成プロセッサの副鍵生成をする際の論理演算部の経路設定(その3)を示す説明図である。
【図24】この発明の実施の形態1による動的再構成プロセッサのMixColumns処理を実行する際の論理演算部の経路設定(その1)を示す説明図である。
【図25】この発明の実施の形態1による動的再構成プロセッサのMixColumns処理を実行する際の論理演算部の経路設定(その2)を示す説明図である。
【符号の説明】
【0040】
1 演算制御部、3 再構成可能演算部、4 演算制御メモリ、31−0〜31−3 入力セレクタ、32−0 積和演算部、32−1 論理演算部、32−2 並べ替え部、32−3 パターンマッチ/換字部、33 出力セレクタ、301,311,331 入力制御部、302−0〜302−7 乗算器、303 配線制御部、304−0〜304−7 加算器、305,315,333 出力制御部、312−0〜312−7,314−0〜314−7 論理演算器、313 配線制御部、321 配線制御部、332−0〜332−7 RAM。
【技術分野】
【0001】
この発明は、構成を動的に変更可能な動的再構成プロセッサに関するものである。
【背景技術】
【0002】
従来の動的再構成プロセッサとして、演算器にプログラマブル演算器を使用し、その内部を2次元マトリックス状に配置した複数の可変論理ブロックとそれらを接続する可変信号網により構成したものがあった(例えば、特許文献1参照)。
このようにすれば、演算器の回路規模を小さくでき、演算の仕様変更に対応でき、また、複合演算を実行するのに適した演算器を有するプロセッサを構成できる。
【0003】
【特許文献1】特開平11−296345号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
上記従来の動的再構成プロセッサは、一般的なCPU(Central Processing Unit)とほぼ同等の汎用性を備え、かつ利用可能な演算器がCPUよりも多いことから、一般的にCPUよりも高い処理性能を持っている。しかしながら、搭載されている演算器の実行可能な演算の種類や演算精度、および可変論理網の制限などにより、あるアプリケーションはとても効率よく実行できても、別のアプリケーションでは思ったほど性能が出ず、実行するアプリケーションによって得手不得手が存在するという問題があった。
【0005】
例えば、高い演算精度で加算、乗算といった算術演算を実行できる演算器を複数搭載した動的再構成プロセッサの場合を考える。このような動的再構成プロセッサは、概して数値演算、特にFFT(Fast Fourier Transform)やDCT(Discrete Cosine Transform)など算術演算が主なアプリケーションで高い処理性能が出やすいが、AES(Advanced Encryption Standard)や、DES(Data Encryption Standard)といった論理演算や換字処理が主なアプリケーションで処理性能が出にくい。処理性能が出にくくなる理由は、論理演算を実行するために算術演算器を組み合わせて用いるため、組み合わせの複雑度が増し処理時間のオーバーヘッドを生じるためである。また、論理演算は本来ならば算術演算よりも少ないゲート数で実装可能な演算であるから、算術演算器で論理演算を実行することはゲート規模、ゲート利用率という観点からも処理効率が良くない。
【0006】
この発明は上記のような課題を解決するためになされたもので、実行するアプリケーションによって処理性能が大きく変わることなく、ゲート規模やゲート利用率の観点から効率のよい動的再構成プロセッサを得ることを目的とする。
【課題を解決するための手段】
【0007】
この発明に係る動的再構成プロセッサは、積和演算部と並べ替え部とパターンマッチ/換字部と論理演算部のうち少なくとも一つの演算部を有し、かつ、その演算部における入力から出力に至る論理経路が選択可能な再構成可能演算部と、再構成可能演算部の論理経路情報が記憶される演算制御メモリとを備え、再構成可能演算部は、演算制御メモリの論理経路情報に基づいて、使用する演算部とその論理経路が設定されるようにしたものである。
【発明の効果】
【0008】
この発明の動的再構成プロセッサは、積和演算部と並べ替え部とパターンマッチ/換字部と論理演算部のうち少なくとも一つの演算部を使用し、かつ、その演算部における入力から出力に至る論理経路を選択可能としたので、実行するアプリケーションによって処理性能が大きく変わることなく、ゲート規模やゲート利用率の観点から効率のよい動的再構成プロセッサを得ることができる。
【発明を実施するための最良の形態】
【0009】
実施の形態1.
図1は、この発明の実施の形態1による動的再構成プロセッサを示す構成図である。
図において、動的再構成プロセッサは、演算制御部1、バス2、再構成可能演算部3、演算制御メモリ4、データ記憶部5、バス制御部6を備えている。
【0010】
演算制御部1は、再構成可能演算部3とバス制御部6とを制御するためのプログラムと、これらのプログラムを実行するためのCPUとを搭載し、演算制御メモリ4に再構成可能演算部3の制御情報を書き込むことにより、再構成可能演算部3の制御を行う機能部である。バス2は、演算制御部1〜データ記憶部5を相互に接続するためのバスである。再構成可能演算部3は、積和演算を実行し、入力から出力に至る論理経路が選択可能な積和演算部と、並べ替え演算を実行し、入力から出力に至る論理経路が選択可能な並べ替え部と、パターンマッチ/換字演算を実行し、入力から出力に至る論理経路が選択可能なパターンマッチ/換字部と、論理演算を実行し、入力から出力に至る論理経路が選択可能な論理演算部を有し、演算制御メモリ4に格納された制御情報に基づいて、使用する演算部と、その演算部の論理経路が設定される演算部である。尚、積和演算部、論理演算部、並べ替え部及びパターンマッチ/換字部は、動画像処理、2/3次元画像処理、信号処理および暗号化処理から抽出されたクリティカルマクロファンクション(本実施の形態では、複数のアプリケーションで実行される演算のうち、特に処理性能を大きく左右するような演算をこう呼ぶ)に対応した演算を行う演算部である。尚、各演算部の詳細については後述する。
【0011】
演算制御メモリ4は、再構成可能演算部3の演算回路を決定するための制御情報が演算制御部1によって書き込まれ、この制御情報を再構成可能演算部3に与えるための記憶部である。データ記憶部5は、再構成可能演算部3へ入力するデータや演算結果を記憶するためのメモリである。バス制御部6はバス2の制御を行う制御部である。
【0012】
図2は、再構成可能演算部3の構成図である。
図示のように、再構成可能演算部3は、各演算部への入力データをバス2からの入力と各演算部からの出力四つのうちから一つを選択し、各演算部への入力を選択する入力セレクタ31−0〜31−3と、積和演算部32−0、論理演算部32−1、並べ替え部32−2、パターンマッチ/換字部32−3と、積和演算部32−0〜パターンマッチ/換字部32−3の出力のうち、一つを選択してバス2へ出力する出力セレクタ33により構成される。
【0013】
入力セレクタ31−0〜31−3は、それぞれ演算制御メモリ4に書き込まれた制御情報に基づいて積和演算部32−0〜パターンマッチ/換字部32−3への入力経路を選択するセレクタである。積和演算部32−0は、乗算と加算演算を行う演算部であり、論理演算部32−1は種々の論理演算を行う演算部である。また、並べ替え部32−2は、入力ビットに対して、任意の並べ替え演算を行う演算部、パターンマッチ/換字部32−3は、パターンマッチ及び換字処理を行う演算部である。出力セレクタ33は、積和演算部32−0〜パターンマッチ/換字部32−3の出力を選択するためのセレクタである。
これらの入力セレクタ31−0〜31−3および出力セレクタ33は、演算制御部1によって演算制御メモリ4に書き込まれた経路設定情報に基づいて設定される。また、積和演算部32−0、論理演算部32−1、並べ替え部32−2およびパターンマッチ/換字部32−3への入力を選択するそれぞれの入力セレクタ31−0〜31−3は、他の演算部の演算結果を入力として選択することができるため、異なる演算器間での演算をパイプライン化することができる。
【0014】
図3は、積和演算部32−0の構成図である。
積和演算部32−0は、入力制御部301と、8個の乗算器302−0〜302−7と、配線制御部303と、8個の加算器304−0〜304−7と、出力制御部305とを備えている。入力制御部301、配線制御部303及び出力制御部305は、乗算器302−0〜302−7と加算器304−0〜304−7との接続関係を任意に変更するための制御部であり、乗算器302−0〜302−7及び加算器304−0〜304−7は、乗算及び加算を行う演算器である。この積和演算部32−0は、入力制御部301による入力制御、配線制御部303による乗算器302−0〜302−7と加算器304−0〜304−7との接続制御、及び出力制御部305による加算器304−0〜304−7の出力制御を適切に制御することで、FFT、DCTで頻繁に用いられるバタフライ演算、フィルタ処理などで頻繁に用いられる畳み込み演算、座標変換処理で頻繁に行われる行列演算、および8並列までの2入力乗算、加算が実行可能である。
【0015】
図4は、論理演算部32−1の構成図である。
論理演算部32−1は、入力制御部311と、16bit2入力、16bit1出力のAND、OR、NOT、EXORが実行可能な16個の論理演算器312−0〜312−7、314−0〜314−7と、配線制御部313と、出力制御部315とを備えている。入力制御部311、配線制御部313及び出力制御部315は、論理演算器312−0〜312−7、314−0〜314−7への入出力及びこれら演算器の接続関係を任意に設定するための制御部である。
【0016】
図5は、並べ替え部32−2の構成図である。
並べ替え部32−2は、128bitの入力を有し、全ての入力bitを任意のbit位置(128bit)に出力可能な配線制御部321を備え、128bitの入力に対し任意の並べ替え演算が実行可能である。
【0017】
図6は、パターンマッチ/換字部32−3の構成図である。
パターンマッチ/換字部32−3は、入力制御部331と、8個のRAM332−0〜332−7と、出力制御部333を備え、RAM332−0〜332−7に任意の値を書き込むことで、アドレス対データの対応によりデータ変換を行うよう構成されている。また、入力制御部331及び出力制御部333は、RAM332−0〜332−7への入力と出力を制御し、最大8並列までのパターンマッチ/換字演算を可能とする。
【0018】
次に、上記のように構成された動的再構成プロセッサの動作について説明する。
先ず、動画像処理で頻繁に用いられるDCT演算を行う場合を説明する。
DCT演算は、下式(1)、(2)で示され、この計算をするにあたっては様々なアルゴリズムが存在するが、ここではChenのアルゴリズムを用いることとする。
【数1】
尚、Chenのアルゴリズムは図7に示されるようなバタフライ演算を行う。この図7において、+、−の記号は加算および減算を表し、実線は乗算を示し、実線上の数字は掛ける値を表す。また、乗算におけるCikは、cos(iπ/k)、Sikは、sin(iπ/k)を表している。
以上により、DCT演算は積和演算のみで実行可能であるので、本具体例では積和演算部32−0のみを用いる。
【0019】
本実施の形態の積和演算部32−0は8個の乗算器302−0〜302−7と加算器304−0〜304−7を持つが、図7のバタフライ演算は28回の加減算と乗算が必要であるので、1回で全てを実行することは出来ない。そのため、図7の[1]〜[5]に示すように5回に分けて演算を行う。
先ず、[1]の演算を行うにあたっては、演算制御部1から演算制御メモリ4に対し、再構成可能演算部3の入力経路の制御情報と積和演算部32−0の制御情報が書き込まれる。この制御情報によって、再構成可能演算部3の入力経路は、図8に示すように、入力から積和演算部32−0への経路と、積和演算部32−0から出力への経路が選択される。即ち、入力セレクタ31−0〜31−3が入力を選択し積和演算部32−0の演算結果が出力セレクタ33を経て出力される。
【0020】
また、積和演算部32−0は、制御情報によって図9に示すように制御される。即ち、入力制御部301はバス2上のデータを入力するよう制御される。また、乗算器302−0の入力には図7で示したx0に相当するデータを、乗算器302−1にはx1に相当するデータを、乗算器302−2にはx2に相当するデータを、乗算器302−3にはx3に相当するデータを、乗算器302−4にはx4に相当するデータを、乗算器302−5にはx5に相当するデータを、乗算器302−6にはx6に相当するデータを、乗算器302−7にはx7に相当するデータを選択するように制御される。更に、乗算器302−1、302−3、302−5、302−7には掛ける値として−1が、その他の乗算器には掛ける値として1が設定される。
【0021】
配線制御部303は、加算器304−0と加算器304−7の入力に対して、乗算器302−0と乗算器302−7の出力が接続されるよう経路を選択する。また、加算器304−1と加算器304−6の入力に対して、乗算器302−3と乗算器302−4の出力が接続されるよう経路を選択し、加算器304−2と加算器304−5の入力に対して、乗算器302−2と乗算器302−5の出力が接続されるよう経路を選択し、加算器304−3と加算器304−4の入力に対して、乗算器302−1と乗算器302−6の出力が接続されるよう経路を選択する。
【0022】
また、出力制御部305は、加算器304−0〜304−7の出力をバス2上の適切な位置へ出力するよう経路を選択する。この状態で、演算制御部1からバス制御部6に対しデータ記憶部5から再構成可能演算部3へ演算対象となるデータを転送するよう命令を発行すると、再構成可能演算部3は、図7のバタフライ演算のうち[1]の演算を行ってバス2に演算結果を返す。再構成可能演算部3が返したデータは、バス制御部6により再びデータ記憶部5の適切な位置に記憶される。全ての演算対象に対し、[1]の計算が終了したら、演算制御部1は演算制御メモリ4を書き換えて、[2]の演算が実行可能なように再構成可能演算部3を制御し、バス制御部6に対しては[1]の演算結果が記憶されている位置からデータを読み出して再構成可能演算部3に入力する。以上のような操作を[5]の演算が完了するまで繰り返すことにより、本実施の形態の動的再構成プロセッサにてDCT演算を実行することが可能である。
【0023】
次に、本実施の形態にて暗号化処理(AES)を実行する場合を説明する。先ず、AESの処理について以下簡単に説明する。
AESは128bitの入力と128bitの鍵データを用いて暗号文128bitを得る処理である。処理のフローを図10に示す。図10中、AddRoundKey(ステップST1)は、図11に示すように、入力128bitと副鍵128bitとのEXORを行う。副鍵の生成は、図12に示すように入力128bitから出力128bitが生成される。即ち、入力128bitのうち上位32bit(12〜15byte目)を8bit左シフトした結果とRcon(x)とのEXORを行い、この結果と入力128bitのうちの下位32bit(0〜3byte目)とのEXOR演算結果を出力128bitの0〜3バイト目とする。また、出力の0〜3byte目と入力4〜7byte目とのEXOR演算結果を出力4〜7byte目とし、更に、出力4〜7byte目と入力8〜11byte目とのEXOR演算結果を出力8〜11byte目とし、出力8〜11byte目と入力12〜15byte目とのEXOR演算結果を出力12〜15byte目とし、出力128bitを得る。
【0024】
図10におけるSubBytesは、図13に示すように128bitの入力に対し、8bit毎に換字処理を行う演算である。換字処理の入力と出力の対応は、図14のSubBytesの変換テーブルに示す通りである。例えば、8bitの入力“11000101”(=C5)は、“01001010”(=4A)に変換される。
ShiftRowsは、図15に示すように128bitの入力に対して、8bit毎に区切り、それらを4x4の配列状に配置したものを、一番上の行はそのまま、次の行は8bit左シフト、次の行は16bit左シフト、次の行は24bit左シフトを施して、また128bitのbitに戻す処理を行う。一見複雑な処理であるが、図16に示すように8bit単位の並べ替えを行う処理に帰着する。
MixColumnは、図17に示すように、128bitの入力を8bit単位の4x4の行列に見立て、4x4の行列演算を行う。但し、通常、行列演算は積和演算を行うが、AESではガロア体を扱うため乗算の代わりにANDを、加算の代わりにEXORを行う。更に、MixColumでは行列演算の係数が1、2、3しかないため、1を掛ける場合はそのままの値、2を掛ける場合は自身の2回加算(EXOR)、3を掛ける場合は自身の3回の加算で代用する。
【0025】
以上の処理を本実施の形態にて実行する手順を説明する。
先ず、演算制御部1は、データ記憶部5に暗号化対象(Nbit)と副鍵の種128bit(K0)を書き込む。次に、最初のAddRoundKeyを実行するため、データ記憶部5に書き込んだ暗号化対象Nbitから128bitを読み出して、副鍵K0とのEXORを計算する。計算にあたっては、論理演算器312−0〜312−7の一方の入力に暗号化対象の128bitを、他方の入力をK0となるように設定する。
次に図10で示した暗号化処理の9回繰り返しの部分を実行する。まず、副鍵(K1)の生成を行うため、再構成可能演算部3の入力セレクタ31−2に対してはバス2からの入力を選択するように設定し、パターンマッチ/換字部32−3には並べ替え部32−2の出力を選択するように入力セレクタ31−3で設定し、論理演算部32−1にはパターンマッチ/換字部32−3の出力を選択するよう入力セレクタ31−1で設定する。これを示したのが図18である。
【0026】
また、図19に示すように、並べ替え部32−2に対し、入力の128bitのうち最上位の32bitに対して8bit左シフトを施すように経路情報を設定する。パターンマッチ/換字部32−3における各RAM332−0〜332−7に対し、図14で示したSubBytesの変換テーブルの値を書き込む。
また、図20に示すように、論理演算部32−1には、論理演算器312−0と論理演算器312−1の一方の入力をFFFF16(XXXX16は16進数XXXXを表す)に設定し、他方の入力を入力制御部311の0〜15bitと16〜23bitが入力となるようにそれぞれ設定する。また、論理演算器312−6,312−7に対しては、一方の入力にRcon(1)の上位16bitおよび下位16bitを設定し、他方の入力には、入力制御部311の96〜111bitと112〜127bitが入力となるように設定する。
以上のように設定後、データ記憶部5から副鍵の種128bitを読み出して再構成可能演算部3に入力すると、副鍵K0の最初の32bitが計算可能である。この最初の32bitは次の演算でまた使用するためデータ記憶部5に記録する。
【0027】
次に、副鍵の残りの部分を計算するため、論理演算部32−1を、図21に示すように、入力制御部311にて、先に計算し上書きを行った副鍵K0の0〜15bit目までが論理演算器312−2及び論理演算器312−4の一方の入力になるように、16〜31bit目までが論理演算器312−3と論理演算器312−5の一方の入力となるように設定する。また、これら論理演算器312−2〜312−5にはXORを実行するように設定する。
次に、配線制御部313にて、論理演算器314−2と論理演算器314−3の一方の入力がFFFF16となるようにし、他方の入力が論理演算器312−2の出力、論理演算器312−3の出力となるように設定する。このようにすると、論理演算器314−2と論理演算器314−3の出力からは、副鍵K1の32〜63bit目までが計算できる。同時に、論理演算器314−4の入力の一方を論理演算器312−2の出力、もう一方を論理演算器312−4の出力とし、論理演算器314−5の入力の一方を論理演算器312−3の出力、もう一方を論理演算器312−5とし、実行する演算をXORとすると、論理演算器314−4と論理演算器314−5の出力からは、副鍵K1の64〜95bit目までが計算できる。以上の計算結果は次の計算で利用するのでデータ記憶部5に記憶する。
【0028】
次に、副鍵の最上位32bitを計算するため、再構成可能演算部3の接続を、図22に示すように、入力から論理演算部32−1を通り、出力する経路に設定する。また、図23に示すように、入力制御部311にて論理演算器312−6の一方の入力に、先ほど計算した副鍵K1の計算結果のうち64bit〜79bit目を、他方の入力に副鍵の種の96〜111bit目を入力し、実行する演算をXORとする。また、論理演算器312−7の一方の入力を先ほど計算した副鍵K1の計算結果のうち80〜95bit目を、他方の入力を副鍵の種の112〜127bit目を入力し、実行する演算をXORとする。次に論理演算器314−6の一方の入力をFFFF16に設定し、他方の入力に論理演算器312−6の出力を設定し、実行する演算をANDとする。また、論理演算器314−7の一方の入力にFFFF16を設定し、他方の入力に論理演算器312−7を設定し、実行する演算をANDとする。以上の設定により、論理演算器314−6と論理演算器314−7の出力から副鍵K1の最上位32bitが計算できる。
【0029】
次に、SubBytesを計算する。SubBytesの計算にはパターンマッチ/換字部32−3を利用する。パターンマッチ/換字部32−3のRAM332−0〜332−7に、図14で示したSubBytesの変換テーブルの値を書き込む。RAM一つで8bitのSubBytesを実行可能であり、本実施の形態ではパターンマッチ/換字部32−3には8個のRAM332−0〜332−7を搭載するので、一度に64bitまでのSubBytes演算が可能である。従って、本実施の形態では128bitのSubBytes演算を実行するために、暗号化対象の128bitを上位64bit、下位64bitに分けて2回演算を実行する必要がある。
【0030】
次に、ShiftRows演算を実行する。ShiftRows演算は、図16に示したように8bit単位で配線のつなぎ換えを行う。よって、この演算には並べ替え部32−2を利用する。並べ替えの設定については、図16に示す通りである。
【0031】
次にMixColumn演算を実行する。MixColumnは図17に示したように、4x4の行列演算を行う。どの行の計算も基本的には同じであるので、最初の行の計算についてのみ説明を行う。
先ず、再構成可能演算部3の設定を図22に示すようにする。次に、論理演算器の設定を図24に示すように、論理演算器312−0の両方の入力をa0とし、実行する演算をXORとする(a0×02を計算)。また、論理演算器312−1の両方の入力にa1を設定し、実行する演算をXORとする(a1×02を計算)。また、論理演算器312−1の一方をa1とし他方をFFFF16とする(a1)。また、論理演算器312−3の一方の入力をa2、他方をa3として実行する演算をXORとする(a2+a3を計算)。続いて、論理演算器314−0の一方の入力を論理演算器312−0の出力、他方をFFFF16とする(a0×02をそのまま出力)。また、論理演算器314−1は、論理演算器312−1と論理演算器312−2の出力を入力とし実行する演算をXORとする(a1×03の計算)。また、論理演算器314−2には一方の入力を論理演算器312−3の出力、他方をFFFF16を設定する(a2+a3をそのまま出力)。以上の計算結果を一旦データ記憶部5に書き戻す。
【0032】
次に、書き戻したデータを再び読み出し、図25に示すように、論理演算器312−0には、先ほど計算したa0×2とa1×3が入力となるようにし、実行する演算をXORとする。また、論理演算器312−1には一方の入力に先ほど計算したa2×a3を、他方をFFFF16となるようにする(a2+a3をそのまま出力)。次に、論理演算器314−0にて、一方を論理演算器312−0の出力、他方を論理演算器312−1の出力を入力として実行する演算をXORとすることにより、最終的な演算結果a0×02+a1×3+a2+a3を得る。以上の演算を、入力を切り替えながら4回繰り返すことによりMixColumnを実行可能である。
【0033】
最後に、あらかじめ計算しておいた副鍵K1を用いて、この副鍵と入力128bitを用いてAddRoundKeyを行う。AddRoundKeyは副鍵と入力のXORで計算可能であるから、論理演算部32−1を用いて計算を行う。計算にあたっては、論理演算器312−0〜312−7の一方の入力を暗号化対象の128bitを、他方の入力をK1となるように設定する。
以上のような手順を10回繰り返せば(10回目だけMixColumnは実行しない)128bitの暗号化処理が実行可能である。暗号化対象がNbit(N>128)である場合はさらに128bitを読み出して、暗号化処理の合計がNbit以上になるまで同じ事を繰り返せばよい。
以上のようにすれば本実施の形態の動的再構成プロセッサにて暗号化処理(AES)を実行可能である。
【0034】
以上、本実施の形態は動画像処理(DCT)と暗号化処理(AES)からクリティカルマクロファンクションを抽出し、その結果四つの演算部を持つ場合を想定したが、別のアプリケーションを考慮した場合、必ずしも四つの演算部を持つ必要はない。また、各演算部の構成は、特にDCTと、AESの各処理を効率的に実行できるような構成を取ったが、必ずしも本実施の形態の様な構成である必要はない。更に、演算制御部1は、演算制御メモリ4に対して予め一定の処理を行う制御情報を書き込むことにより、再構成可能演算部3の経路情報を制御するようにしたが、演算制御メモリ4の経路情報を逐次書き換えることにより再構成可能演算部3の経路情報を制御するよう構成してもよい。
【0035】
以上のように、本実施の形態1の動的再構成プロセッサによれば、積和演算を実行する積和演算部と、並べ替え演算を実行する並べ替え部と、パターンマッチ/換字演算を実行するパターンマッチ/換字部と、論理演算を実行する論理演算部のうち少なくとも一つの演算部を有し、かつ、演算部における入力から出力に至る論理経路が選択可能な再構成可能演算部と、再構成可能演算部の論理経路情報が記憶される演算制御メモリとを備え、再構成可能演算部は、演算制御メモリの論理経路情報に基づいて、使用する演算部と、演算部の論理経路が設定されるようにしたので、アプリケーションによって性能を左右する機能を効率よく実行でき、かつ、各機能の実装に適した回路構造を持つことができるので、実行するアプリケーションによって処理性能が大きく変わることなく、ゲート規模、ゲート利用率の観点からも効率の良い動的再構成可能プロセッサを提供することができる。
【0036】
また、実施の形態1の動的再構成プロセッサによれば、再構成可能演算部は、積和演算部、並べ替え部、パターンマッチ/換字部及び論理演算部の入出力の経路を選択するセレクタを有し、セレクタは、いずれかの演算部の出力を、他の演算部の入力に接続するよう経路選択を行うようにしたので、異なる演算器間での演算をパイプライン化することができる。
【0037】
また、実施の形態1の動的再構成プロセッサによれば、再構成可能演算部の経路情報を設定する演算制御部を備え、演算制御部は、演算制御メモリの経路情報を逐次書き換えることにより、再構成可能演算部の経路情報を制御するようにしたので、種々の演算を実行する動的再構成プロセッサを容易に実現することができる。
【0038】
また、実施の形態1の動的再構成プロセッサによれば、再構成可能演算部の経路情報を設定する演算制御部を備え、演算制御部は、演算制御メモリに対して予め一定の処理を行う制御情報を書き込むことにより、再構成可能演算部の経路情報を制御するようにしたので、種々の演算を実行する動的再構成プロセッサを容易に実現することができる。
【図面の簡単な説明】
【0039】
【図1】この発明の実施の形態1による動的再構成プロセッサを示す構成図である。
【図2】この発明の実施の形態1による動的再構成プロセッサの再構成可能演算部を示す構成図である。
【図3】この発明の実施の形態1による動的再構成プロセッサの積和演算部を示す構成図である。
【図4】この発明の実施の形態1による動的再構成プロセッサの論理演算部を示す構成図である。
【図5】この発明の実施の形態1による動的再構成プロセッサの並べ替え部の構成図である。
【図6】この発明の実施の形態1による動的再構成プロセッサのパターンマッチ/換字部を示す構成図である。
【図7】この発明の実施の形態1による動的再構成プロセッサのDCTを行う場合の説明図である。
【図8】この発明の実施の形態1による動的再構成プロセッサのDCTを行う場合の再構成可能演算部の経路設定の説明図である。
【図9】この発明の実施の形態1による動的再構成プロセッサのDCTを行う場合の積和演算部の経路設定の説明図である。
【図10】この発明の実施の形態1による動的再構成プロセッサのAESの処理手順を示す説明図である。
【図11】この発明の実施の形態1による動的再構成プロセッサのAESのAddRoundKey処理を示す説明図である。
【図12】この発明の実施の形態1による動的再構成プロセッサのAESの副鍵生成を示す説明図である。
【図13】この発明の実施の形態1による動的再構成プロセッサのAESのSubBytes処理を示す説明図である。
【図14】この発明の実施の形態1による動的再構成プロセッサのAESのSubBytes処理における変換テーブルを示す説明図である。
【図15】この発明の実施の形態1による動的再構成プロセッサのAESのShiftRows処理を示す説明図である。
【図16】この発明の実施の形態1による動的再構成プロセッサのAESのShiftRows処理を等価的に置き換えた処理を示す説明図である。
【図17】この発明の実施の形態1による動的再構成プロセッサのAESのMixColumns処理を示す説明図である。
【図18】この発明の実施の形態1による動的再構成プロセッサの副鍵生成をする際の再構成可能演算部の経路設定を示す説明図である。
【図19】この発明の実施の形態1による動的再構成プロセッサの副鍵生成をする際の並べ替え部の経路設定を示す説明図である。
【図20】この発明の実施の形態1による動的再構成プロセッサの副鍵生成をする際の論理演算部の経路設定(その1)を示す説明図である。
【図21】この発明の実施の形態1による動的再構成プロセッサの副鍵生成をする際の論理演算部の経路設定(その2)を示す説明図である。
【図22】この発明の実施の形態1による動的再構成プロセッサのAESの論理演算を行う場合の再構成可能演算部の経路設定を示す説明図である。
【図23】この発明の実施の形態1による動的再構成プロセッサの副鍵生成をする際の論理演算部の経路設定(その3)を示す説明図である。
【図24】この発明の実施の形態1による動的再構成プロセッサのMixColumns処理を実行する際の論理演算部の経路設定(その1)を示す説明図である。
【図25】この発明の実施の形態1による動的再構成プロセッサのMixColumns処理を実行する際の論理演算部の経路設定(その2)を示す説明図である。
【符号の説明】
【0040】
1 演算制御部、3 再構成可能演算部、4 演算制御メモリ、31−0〜31−3 入力セレクタ、32−0 積和演算部、32−1 論理演算部、32−2 並べ替え部、32−3 パターンマッチ/換字部、33 出力セレクタ、301,311,331 入力制御部、302−0〜302−7 乗算器、303 配線制御部、304−0〜304−7 加算器、305,315,333 出力制御部、312−0〜312−7,314−0〜314−7 論理演算器、313 配線制御部、321 配線制御部、332−0〜332−7 RAM。
【特許請求の範囲】
【請求項1】
積和演算を実行する積和演算部と、並べ替え演算を実行する並べ替え部と、パターンマッチ/換字演算を実行するパターンマッチ/換字部と、論理演算を実行する論理演算部のうち少なくとも一つの演算部を有し、かつ、当該演算部における入力から出力に至る論理経路が選択可能な再構成可能演算部と、
前記再構成可能演算部の論理経路情報が記憶される演算制御メモリとを備え、
前記再構成可能演算部は、前記演算制御メモリの論理経路情報に基づいて、使用する演算部と、当該演算部の論理経路が設定されることを特徴とする動的再構成プロセッサ。
【請求項2】
再構成可能演算部は、
積和演算部、並べ替え部、パターンマッチ/換字部及び論理演算部の入出力の経路を選択するセレクタを有し、
前記セレクタは、いずれかの演算部の出力を、他の演算部の入力に接続するよう経路選択を行うことを特徴とする請求項1記載の動的再構成プロセッサ。
【請求項3】
再構成可能演算部の経路情報を設定する演算制御部を備え、
前記演算制御部は、演算制御メモリの経路情報を逐次書き換えることにより、前記再構成可能演算部の経路情報を制御することを特徴とする請求項1または請求項2記載の動的再構成プロセッサ。
【請求項4】
再構成可能演算部の経路情報を設定する演算制御部を備え、
前記演算制御部は、演算制御メモリに対して予め一定の処理を行う制御情報を書き込むことにより、前記再構成可能演算部の経路情報を制御することを特徴とする請求項1または請求項2記載の動的再構成プロセッサ。
【請求項1】
積和演算を実行する積和演算部と、並べ替え演算を実行する並べ替え部と、パターンマッチ/換字演算を実行するパターンマッチ/換字部と、論理演算を実行する論理演算部のうち少なくとも一つの演算部を有し、かつ、当該演算部における入力から出力に至る論理経路が選択可能な再構成可能演算部と、
前記再構成可能演算部の論理経路情報が記憶される演算制御メモリとを備え、
前記再構成可能演算部は、前記演算制御メモリの論理経路情報に基づいて、使用する演算部と、当該演算部の論理経路が設定されることを特徴とする動的再構成プロセッサ。
【請求項2】
再構成可能演算部は、
積和演算部、並べ替え部、パターンマッチ/換字部及び論理演算部の入出力の経路を選択するセレクタを有し、
前記セレクタは、いずれかの演算部の出力を、他の演算部の入力に接続するよう経路選択を行うことを特徴とする請求項1記載の動的再構成プロセッサ。
【請求項3】
再構成可能演算部の経路情報を設定する演算制御部を備え、
前記演算制御部は、演算制御メモリの経路情報を逐次書き換えることにより、前記再構成可能演算部の経路情報を制御することを特徴とする請求項1または請求項2記載の動的再構成プロセッサ。
【請求項4】
再構成可能演算部の経路情報を設定する演算制御部を備え、
前記演算制御部は、演算制御メモリに対して予め一定の処理を行う制御情報を書き込むことにより、前記再構成可能演算部の経路情報を制御することを特徴とする請求項1または請求項2記載の動的再構成プロセッサ。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【公開番号】特開2009−37333(P2009−37333A)
【公開日】平成21年2月19日(2009.2.19)
【国際特許分類】
【出願番号】特願2007−199635(P2007−199635)
【出願日】平成19年7月31日(2007.7.31)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】
【公開日】平成21年2月19日(2009.2.19)
【国際特許分類】
【出願日】平成19年7月31日(2007.7.31)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】
[ Back to top ]