ガロア体上の元の除算演算回路
【課題】除数の制限がなく、標数Pと標数2の何れの除算演算処理も回路規模を増加させずに実現できるようにする。
【解決手段】シフトレジスタ12に格納された被除数Aの上位桁から順にシフトしていって、被除数Aの上位5ビットを見る。レジスタ30は、現在の最高次の値であり、これが「1」となった時に減算が実行される。レジスタ30の値が「1」になると、論理積素子32〜38は、レジスタ14〜22からの除数Bの値を出力し、排他的論理和素子40〜46において減算が実行される。レジスタ30の出力は、そのままシフトレジスタ48に格納され、これが商となる。このような処理動作は、被除数Aの全ビットが出力されるまで実行され、被除数Aがmビットであればmクロックで動作を止める。その時のレジスタ24〜30の値が剰余となり、レジスタ30の値が最上位桁(MSB)となる。
【解決手段】シフトレジスタ12に格納された被除数Aの上位桁から順にシフトしていって、被除数Aの上位5ビットを見る。レジスタ30は、現在の最高次の値であり、これが「1」となった時に減算が実行される。レジスタ30の値が「1」になると、論理積素子32〜38は、レジスタ14〜22からの除数Bの値を出力し、排他的論理和素子40〜46において減算が実行される。レジスタ30の出力は、そのままシフトレジスタ48に格納され、これが商となる。このような処理動作は、被除数Aの全ビットが出力されるまで実行され、被除数Aがmビットであればmクロックで動作を止める。その時のレジスタ24〜30の値が剰余となり、レジスタ30の値が最上位桁(MSB)となる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ガロア体上の元の除算演算回路およびその演算回路を含む演算装置に係り、特に、符号・暗号回路等に用いられるガロア体上の元の除算演算回路およびその演算回路を含む演算装置に関する。
【背景技術】
【0002】
近年、情報のディジタル化によって様々なサービスが提供され、快適な生活環境が整備されつつある。
例えば、インターネットの普及によって、我々はネットワークに接続された世界中のサーバが提供するサービスの恩恵を受けることができる。また、ディジタル携帯電話の普及によって、必要なときにすぐにコミュニケーションをとることが可能となり、通話以外の付加サービスを利用することができる。さらに、クレジットカードやプリペイトカードなどは、現金のやりとりによる煩わしさを解消してくれるという利点がある。
このような情報のディジタル化は、我々に利便性を提供してくれる反面、不正利用による被害を受け易いという問題を有する。例えば、盗聴によるプライバシーの侵害や個人情報の流出、複写・改ざん・なりすましによるシステムの不正利用などがそれである。そこで、これらの問題の解決策として、最近では暗号技術が注目されており、その中でもガロア体上の演算を利用した暗号技術の一つである楕円曲線暗号の研究開発が盛んに行われている。
この楕円曲線暗号は、楕円曲線上の離散対数問題に安全性の根拠を置く公開鍵暗号系であり、IEEE P1363で標準化の検討がなされている。
このように、従来の符号・暗号の分野では、ガロア体上の演算が利用されている。ガロア体GF(2m)は、2m個の元からなる集合であり、その表現方法としてベクトル表現がよく用いられる。上記のベクトル表現においては、ガロア体GF(2m)上の元aはGF(2)の元
を用いて、m次元ベクトル
として表現する。ベクトル表現においては、元の表現はベクトル空間の基底によって決定される。
【0003】
特に、多項式基底では、GF(2)上のm次既約多項式fを生成多項式とし、fの根である元αを用いて、
を基底とする。また、このとき、ガロア体GF(2m)上の元aの多項式表現は、xを変数として、
となる。ガロア体GF(2m)上の元同士の演算は、上記多項式表現を用いると容易に理解することができる。
例えば、GF(26)上の2つの元を
A=(1,0,0,1,1,1)
B=(1,1,0,0,0,1)
とし、それらの加算式C=A+Bは、多項式表現を用いると、
となる。即ち、
C=(1+1,0+1,0+0,1+0,1+0,1+1)
=(0,1,0,1,1,0)
である。ここに、+はGF(2)上の演算であるから、排他的論理和演算となる。
これと同様に、GF(26)上の2つの元
A=(1,0,0,1,1,1)
B=(1,1,0,0,0,1)
の減算式C=A−Bは、
C=(1−1,0−1,0−0,1−0,1−0,1−1)=(0,1,0,1,1,0)
である。ここに、−もGF(2)上の演算であるから、排他的論理和演算となる。
また、GF(26)上の2つの元の乗算式D=A・Bは、多項式表現を用いると、次式(1)のように計算することができる。
…………(1)
【0004】
今、このガロア体GF(26)の既約多項式を
F=(1,0,1,0,1,0,1)
とする。すなわち、
である。この既約多項式によって、上記(1)式を5次以下の多項式へと変形する。即ち、F(x)を0とおき、次式(2)のように6次以上の項に繰り返し適用して、5次以下にする。
…………(2)
まず、(1)式の最高次が10次なので、(2)式にx4を乗じると、
となる。この式を(1)式の10次の項に代入すると、
のようになり、この時点での最高次が9次なので、同様の計算を行う。これを繰り返して、5次以下にすると最終的な結果は、
となり、乗算結果のベクトル表現は、
D=(1,0,0,1,1,1)
となる。
このように、乗算演算では、(1)式を(2)式の既約多項式Fで5次以下とする演算処理を行う際に、途中の演算結果の桁数を増やさない(次数を落とす)ための除算を行いその剰余を求めている点に着目し、本発明者らは除算演算を行う際にも同様の演算回路を利用することができないかを検討している。
また、従来の除算演算回路では、乗算と加算とを一定の条件に従って繰り返し演算処理することにより除算演算を行っていた。
さらに、通常のCPU等の演算回路には、一般的に用いられる除算演算回路(以下、標数Pの除算演算回路という)が内蔵されている。一方で、符号・暗号処理等を行う際には、上記したガロア体GF(2m)上のベクトルで表される2つの元の除算演算回路(以下、標数2の除算演算回路という)を必要とする場合があった。そこで、これら両者の除算演算処理を必要とする場合、従来はそれぞれ別個の演算回路を用意していた。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、このような従来の演算回路にあっては、上記した乗算演算において、(1)式を(2)式の既約多項式Fで5次以下にする処理は、除算を行いその剰余を求めているが、この除算は途中の演算結果の桁数を増やさない(次数を落とす)ための処理であり、除数が既約多項式に制限されてしまうことから、これまでの乗算回路をそのまま除算回路として転用するのは困難であるという問題があった。
また、従来の除算演算回路における除算演算は、乗算と加算とが一定の条件に従って繰り返し行われるため、計算量が膨大となり、計算時間が長くかかるという問題があった。
さらに、一般的に用いられる標数Pの除算演算回路と、符号・暗号処理等を行うための標数2の除算演算回路の両方が必要な場合は、従来はそれぞれ別個の演算回路を使用していたため、回路規模が増加し、コスト増になるという問題があった。
本発明は、上記課題に鑑みてなされたものであり、除数の制限がなく、演算速度が速い上、標数Pと標数2の両方の除算演算処理を行う場合であっても回路規模を増加させずに、低コストに実現することができるガロア体上の元の除算演算方法および除算演算回路を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記の目的を達成するため、請求項1記載の発明は、ガロア体上のmビットとnビット(m、nは共に自然数で、m>n)のベクトルで表現される2つの元である被除数A=(a0,…,am−1)と除数B=(b0,…,bn−1)に対してA/Bを演算し、最大でmビットで表現される商C=(c0,…,cm−1)と、最大でn−1ビットで表現される剰余D=(d0,…,dn−2)とを求めるためのガロア体上の元の除算演算回路であって、mビットから成る前記被除数Aを格納し、上位ビットから順次出力する被除数格納出力手段と、nビットから成る前記除数Bを各桁毎に格納し、それぞれ個別に出力する除数格納出力手段と、各桁毎の演算データをそれぞれ格納し、その演算データを次桁へ出力する演算データ格納出力手段と、前記被除数格納出力手段から出力される被除数あるいは前記演算データ格納出力手段から出力される各桁の演算データを前記除数格納出力手段から出力される除数の値に基づいて、そのまま出力するか、一つ下の桁の出力を上位桁へ渡すかを選択して前記除数の有効桁数を検出する有効桁数検出手段と、前記有効桁数検出手段からの出力と、前記除数格納出力手段から出力される各桁の除数Bとの論理積をとって減算処理するか否かを選択する論理積手段と、前記論理積手段からの論理積出力と、前記被除数格納出力手段から出力される被除数あるいは前記演算データ格納出力手段から出力される演算データとの排他的論理和をとって減算処理を実行する排他的論理和手段と、前記有効桁数検出手段からの出力を順次入力して格納する演算結果格納手段と、を備え、前記被除数Aの全ビットが出力されるまで演算処理を実行することにより、前記演算結果格納手段に前記商Cが格納され、前記演算データ格納出力手段に剰余Dが格納されるものである。
【発明の効果】
【0007】
以上説明したように、請求項1記載のガロア体上の元の除算演算回路によれば、ガロア体上の元の除算および剰余算を除数Bのビット数に制限されることなく実現することができる。
【図面の簡単な説明】
【0008】
【図1】本実施の形態1に係るガロア体上の元の除算演算回路の構成例を示す図である。
【図2】図1の除算演算回路による演算処理状態を示す図である。
【図3】図1の除算演算回路を用いて除算演算を行う場合の処理動作を説明する図である。
【図4】本実施の形態2に係るガロア体上の元の除算演算回路の構成例を示す図である。
【図5】除数のビット数の制限を受けない図4の除算演算回路による演算処理状態を示す図である。
【図6】図4の除算演算回路を用いて除算演算を行う場合の処理動作を説明する図である。
【図7】本実施の形態3に係る除算演算回路の構成例を示す図である。
【図8】(a)(b)(c)(d)は、図7の除算演算用モジュールの内部構造を示す図である。
【図9】図8(c)のボロー計算部への入力信号の組み合わせと出力信号との関係を一覧に示した図である。
【図10】図7の除算演算回路による標数Pの演算処理過程を説明する図である。
【図11】図7の除算演算回路による標数2の演算処理過程を説明する図である。
【発明を実施するための形態】
【0009】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
(実施の形態1)
この実施の形態1は、本発明のガロア体GF(2m)上の元の除算を実現する除算演算回路を説明するものである。
図1は、本実施の形態1に係るガロア体上の元の除算演算回路10の構成例を示す図である。この構成例では、除数を5ビットとし、最上位桁が常に1である必要がある。つまり、除数が4ビットや3ビットでは計算することのできない構成である。
図1に示す除算演算回路10は、被除数格納出力手段としてのシフトレジスタ12、除数格納出力手段としてのレジスタ14〜22、演算データ格納出力手段としてのレジスタ24〜30、論理積手段としての論理積素子32〜38、排他的論理和手段としての排他的論理和素子40〜46、演算結果格納手段としてのシフトレジスタ48などにより構成されている。
シフトレジスタ12には、被除数Aが格納され、1クロック毎に上位桁から出力するものである。ここでは、一例として被除数A=(1,1,0,1,0,0,1,1,1)とすると、1,1,1,0,0,1,0,1,1の順に出力される。
レジスタ14〜22は、除数Bを格納するもので、レジスタ22に最上位桁(MSB)、そしてレジスタ20、18、16…と順に格納してゆき、レジスタ14に最下位桁(LSB)を格納する。ここでは、一例として除数B=(1,0,0,1,1)とすると、レジスタ14〜22には順に1,0,0,1,1が格納される。
レジスタ24〜30は、演算用のレジスタであって、レジスタ30が最上位桁となる。レジスタ24〜30は、演算前に全て「0」にリセットされる。各レジスタ24〜30には、対応する桁のレジスタ14〜22からの除数Bと、レジスタ30からの出力との論理積(論理積素子32〜38による)出力と、一つ下位の桁の出力(例えば、最下位桁のレジスタ24にはシフトレジスタ12からの出力)との排他的論理和(排他的論理和素子40〜46による)出力がそれぞれ入力される。
排他的論理和素子40〜46は、減算を実行する素子である。
論理積素子32〜38は、論理積を実行する素子であり、ここに入力されるレジスタ30からの出力は、減算するかしないかの選択信号である。通常、この値は「0」(減算をしない)であり、演算用のレジスタ24〜30の値をそのまま次桁へシフトさせる。
以上のように、本実施の形態1の除算演算回路10が構成されており、シフトレジスタ12に格納された被除数Aの上位桁から順にシフトしていって、被除数Aの上位5桁を常に見ている。
【0010】
レジスタ30は、現在の最高次の値であり、これが「1」となった時に減算処理が実行される。レジスタ30の値が「1」になると、論理積素子32〜38は、レジスタ14〜22からの除数Bの値を出力して、排他的論理和素子40〜46において減算が実行される。
また、レジスタ30の出力は、そのままシフトレジスタ48にも格納され、これが商となる。このような処理動作は、被除数Aの全ビットが出力されるまで実行される。例えば、被除数Aがmビットであればmクロックで動作を止めるようにする。そして、この時にレジスタ24〜30に格納されている値が剰余となり、レジスタ30に格納されている値が最上位桁(MSB)となる。
図2は、図1の除算演算回路10による演算処理状態を示す図である。ここでは、被除数A=(1,1,0,1,0,0,1,1,1)、除数B=(1,0,0,1,1)として、実際にA/Bを計算したものである。
ここでは、被除数Aが9ビットであるため、図2に示すように、9クロック目まで演算処理が行われる。その結果、商が10110となり、剰余が1101となる。
【0011】
次に、その除算演算の処理動作を説明する。
図3は、図1の除算演算回路10を用いて除算演算を行う場合の処理動作を説明する図である。
図3に示すように、被除数A=(1,1,0,1,0,0,1,1,1)が格納されたシフトレジスタ12からレジスタ24〜30へ被除数Aの最上位ビットから順にシフトさせて、4クロック目で上位4ビットを格納し、5ビット目がシフトレジスタ12の最上位桁に位置する状態として、除数Bと同じ5ビット(nビット)数分だけ被除数Aから抽出して、これを演算対象A´とする。
ここで、レジスタ30に格納された演算対象A´の最上位ビットの「1」を商c4=1とする。
このように、演算対象A´の最上位ビットが「1」であれば、演算対象A´から除数Bを減算し、それを減算結果A″として抽出する。
その減算結果A″の最上位ビットが「0」ならば、その最上位ビットを除く4ビット(n−1ビット)列を抽出すると共に、その4ビット列に被除数Aのa3の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その最上位ビットの「0」を商c3=0とする。
上記と同様の手順に従い、演算対象A´の最上位ビットが「0」であるので、最上位ビットを除く4ビット列を抽出し、その4ビット列に被除数Aのa2の「0」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その最上位ビットの「1」を商c2=1とする。
この新たな演算対象A´は、最上位ビットが「1」であるので除数Bを減算し、それを減算結果A″として抽出する。
その減算結果A″の最上位ビットが「0」であるので、最上位ビットを除く4ビット列を抽出し、被除数Aのa1の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出し、その最上位ビットの「1」を商c1=1とする。
新たな演算対象A´は、最上位ビットが「1」であるので除数Bを減算し、それを減算結果A″として抽出する。
減算結果A″の最上位ビットが「0」であるので、最上位ビットを除く4ビット列を抽出し、被除数Aのa0の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その最上位ビットの「0」を商c0=0とする。
このときの新たな演算対象A´の最上位ビットを除く4ビット列が剰余Dとなる。
その結果、商Cは、「10110」となり、剰余Dが「1101」となる。
以上説明したように、本実施の形態1によれば、除数が既約多項式のみに制限されることなく、迅速にガロア体上の元の除算演算を行うことができる。
【0012】
(実施の形態2)
本実施の形態2は、ガロア体GF(2m)上の除数のビット数が制限されない除算を実現するものである。
図4は、本実施の形態2に係るガロア体上の元の除算演算回路50の構成例を示す図である。この構成例では、除数の最大ビット数を5ビットとする。つまり、除数としては1〜5ビットまでを使用することができる。
図4に示す除算演算回路50は、被除数格納出力手段としてのシフトレジスタ52、除数格納出力手段としてのレジスタ54〜62、演算データ格納出力手段としてのレジスタ64〜70、論理積手段としての論理積素子72〜78、排他的論理和手段としての排他的論理和素子80〜86、有効桁数検出手段としてのセレクタ88〜96、演算結果格納手段としてのシフトレジスタ98などにより構成されている。
シフトレジスタ52には、被除数Aが格納され、1クロック毎に上位桁から出力するものである。ここでは、一例として被除数A=(1,1,0,1,0,0,1,1,1)とすると、1,1,1,0,0,1,0,1,1の順に出力される。
レジスタ54〜62は、除数Bを格納するもので、レジスタ62に最上位桁(MSB)、そしてレジスタ60、58、56…と順に格納してゆき、レジスタ54に最下位桁(LSB)を格納する。ここでは、一例として5ビットの除数B=(1,0,1,0,0)とすると、レジスタ54〜62には順に1,0,1,0,0が格納される。
レジスタ64〜70は、演算用のレジスタであって、レジスタ70が最上位桁となる。レジスタ64〜70は、演算前に全て「0」にリセットされる。各レジスタ64〜70には、対応する桁のレジスタ54〜62からの除数Bと、セレクタ96からの出力信号100との論理積(論理積素子72〜78による)出力と、一つ下位の桁の出力(例えば、最下位桁のレジスタ64にはシフトレジスタ52からの出力)との排他的論理和(排他的論理和素子80〜86による)出力が入力される。
【0013】
排他的論理和素子80〜86は、減算を実行する素子である。
論理積素子72〜78は、論理積を実行する素子であり、ここに入力されるセレクタ96からの出力信号100は、減算するかしないかの選択信号である。この選択信号は、レジスタ54〜62からの除数Bと、シフトレジスタ52からの出力、およびレジスタ64〜70の各出力と、セレクタ88〜96とによって制御される。
この各セレクタ88〜96を制御する制御信号は、レジスタ54〜62から出力される除数Bのそれぞれの値である。この制御信号の値が「1」の時は、その次数に対応する演算用のレジスタ64〜70の出力がそのままセレクタ出力となり、制御信号の値が「0」の時は、一つ下の次数のセレクタ出力を上位次数のセレクタへ渡すようにする。
最終的な出力信号100は、除数Bの値が「1」である次数の中で最高次のセレクタ96の出力となる。これにより、除数Bの有効ビット数を検出している。本実施の形態2では、除数B=(1,0,1,0,0)であるので、レジスタ58からセレクタ92に除数Bの最高次の「1」が出力されて、レジスタ66の出力が出力信号100となる。また、例えば、除数B=(1,0,0,1,1)の場合は、レジスタ70の出力が出力信号100となる。
通常、出力信号100の値は「0」である(図5の1クロック目参照)。すなわち、減算をせずに演算用のレジスタ64〜70をそのままシフトさせる。このようにして、被除数Aの上位桁から順にシフトしていって、有効ビットの次の値が「1」となった時に減算が実行される。
また、出力信号100の値が「1」になった場合は(図5の2〜3クロック目参照)、論理積素子72〜78がレジスタ54〜60からの除数Bの値を出力し、排他的論理和素子80〜86において減算が実行される。
そして、出力信号100は、そのままシフトレジスタ98にも格納され、これが商Cとなる。このような処理動作は、被除数Aの全ビットが出力されるまで行われる。すなわち、被除数Aがmビットであれば、mクロックで処理動作を止め、この時のレジスタ64〜70に格納されている値が剰余Dとなる。その時のレジスタ70の値が最上位桁(MSB)である。
また、図5は、除数のビット数の制限を受けない図4の除算演算回路50による演算処理状態を示す図である。ここでは、除数B=(1,0,1,0,0)が3ビットであっても、除算演算回路50でA/Bを計算することにより、商が1101000となり、剰余Dが11となる。
【0014】
次に、その除算演算の処理動作を説明する。
図6は、図4の除算演算回路50を用いて除算演算を行う場合の処理動作を説明する図である。
図6に示すように、被除数A=(1,1,0,1,0,0,1,1,1)がシフトレジスタ52に格納され、その上位のレジスタ64〜70に4(n−1)ビット分の「0」を置いて、これを被除数Aとし、その被除数Aの上位5(n)ビット列「10000」を演算対象A´として抽出する。ここで、除数B=(1,0,1,0,0)であるので、0次から「1」の値を持つ次数の中で最高次までの有効ビット数をtとすると、t=3となる。このため、上記した演算対象A´「10000」の3ビット目の「0」が商c8=0となる。
この演算対象A´の3ビット目が「0」であれば、演算対象A´の最上位ビットを除く4ビット(n−1ビット)列を抽出すると共に、その4ビット列に被除数Aのa7の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その3ビット目の「0」を商c7=0とする。
同様に演算対象A´の3ビット目が「0」であるので、その演算対象A´の最上位ビットを除く4ビット列を抽出すると共に、その4ビット列に被除数Aのa6の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その3ビット目の「1」を商c6=1とする
新たな演算対象A´の3ビット目が「1」ならば、除数Bを減算して、その減算結果A″として抽出し、その減算結果A″の最上位ビットを除く4(n−1)ビット列を抽出し、被除数Aのa5の「0」を最下位ビットとして付加し、これを新たな演算対象A´として抽出する。そして、この新たな演算対象A´の3ビット目の「1」を商c5=1とする。
この新たな演算対象A´の3ビット目は、「1」であるので除数Bを減算し、それを新たな減算結果A″として抽出し、その減算結果A″の最上位ビットを除く4ビット列を抽出して、被除数Aのa4の「0」を最下位ビットとして付加し、これを新たな演算対象A´として抽出する。そして、この新たな演算対象A´の3ビット目の「0」を商c4=0とする。
【0015】
新たな演算対象A´の3ビット目は、「0」であるので、その演算対象A´の最上位ビットを除く4ビット列を抽出すると共に、被除数Aのa3の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その3ビット目の「1」を商c3=1とする
この新たな演算対象A´の3ビット目が「1」であるので除数Bを減算し、それを新たな減算結果A″として抽出し、減算結果A″の最上位ビットを除く4ビット列を抽出して、被除数Aのa2の「0」を最下位ビットとして付加し、これを新たな演算対象A´として抽出する。そして、この新たな演算対象A´の3ビット目の「0」を商c2=0とする。
新たな演算対象A´の3ビット目は、「0」であるので、その演算対象A´の最上位ビットを除く4ビット列を抽出すると共に、被除数Aのa1の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その3ビット目の「0」を商c1=0とする。
同様に、新たな演算対象A´の3ビット目が「0」であるので、その演算対象A´の最上位ビットを除く4ビット列を抽出すると共に、被除数Aのa0の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その3ビット目の「0」を商c0=0とする。
この商Cのc0までを求めた時の新たな演算対象A´の最上位ビットを除いた4(n−1)ビット列が剰余Dとなる。
このように、本実施の形態2では、被除数A=(1,1,0,1,0,0,1,1,1)とし、除数B=(1,0,1,0,0)として、図4の除算演算回路50により実際にA/Bを計算すると、その時の商Cが「0001011」となり、その剰余Dを「11」と求めることができる。
以上説明したように、本実施の形態2によれば、ガロア体上の元の除算および剰余算を除数Bのビット制限なく実現することができる。
【0016】
(実施の形態3)
本実施の形態3は、ガロア体GF(2m)上ベクトルで表わされる2つの元の除算演算(標数2の除算)と、一般的に用いられる除算演算(標数Pの演算)のどちらの除算演算をも可能とする除算演算回路を実現するものである。
図7は、本実施の形態3に係る除算演算回路110の構成例を示す図である。この構成例では、除数の最大ビット数を4ビットとする。つまり、除数としては1〜4ビットまでを使用することができる。
図7に示す除算演算回路110は、シフトレジスタ112、レジスタ114〜120、除算演算用モジュール122〜130、レジスタ132〜138、インバータ140、セレクタ142、シフトレジスタ144などにより構成されている。
シフトレジスタ112には、被除数Aが格納され、1クロック毎に上位桁から出力するものである。
レジスタ114〜120は、除数Bを格納するもので、レジスタ120に最上位桁(MSB)、そしてレジスタ118、116…と順に格納してゆき、レジスタ114に最下位桁(LSB)を格納する。
今、ここでは一例として標数Pにおいて75÷12を計算しようとすると、被除数75の2進表現1001011がシフトレジスタ112に格納され、1,1,0,1,0,0,1の順に出力されて、除数12の2進表現1100がレジスタ114〜120に順番に0,0,1,1と格納される。
同様に標数2においても、ベクトルで表現されるガロア体上の2つの元、被除数A=(1,1,0,1,0,1,0,0,1)、除数B=(1,0,1,1)の除算演算時には、シフトレジスタ112に被除数Aが格納され、1,0,0,1,0,1,0,1,1の順に出力されて、レジスタ114〜120に除数Bが順番に1,0,1,1と格納される。
レジスタ132〜138は、演算用のレジスタであり、レジスタ138が最上位桁となり、演算前に全て「0」にリセットされる。
【0017】
除算演算用モジュール122〜130は、除算演算用の回路をモジュール化したものである。図8(a)は、図7の除算演算用モジュールを示す図であり、(b)は、除算演算用モジュール内の演算部の構造を示す図であり、(c)は、標数P用のボロー計算部の構造を示す図であり、(d)は、標数2用の演算制御部を示す図である。
図8(a)に示した除算演算用モジュール122(124〜130も同様)の左側のA〜Fは、入力信号であり、右側のL〜Nは出力信号である。その除算演算用モジュール122の内部は、図8(b)〜(d)に示すように、3つのブロックにそれぞれ分かれている。
図8(b)は、除算演算の為の演算(減算)を行う演算部である。入力信号Fは、減算処理を実行するか否かの実行/非実行の選択信号であり、「1」で実行、「0」で非実行となる。この減算非実行時は、前段のレジスタからの入力信号Aがそのままセレクタ154を通って出力される(出力信号L)。また、減算実行時には、入力信号A、除数Bの対応桁の値、前段からのボロー信号の3つの値がエクスクル−シブオアゲート152により排他的論理和演算がなされ、セレクタ154を通って出力される。但し、標数2の演算時には、ボロー信号は不要となるので、標数P/標数2の選択信号E(「1」で標数Pを選択、「0」で標数2を選択)によって、アンドゲート150の出力がエクスクル−シブオアゲート152に入力され、マスクされる。そして、レジスタ132〜138の入力には、この演算部の出力信号Lが入力される。
図8(c)は、標数P用の演算制御部であるボロー計算部であり、前段の除算演算用モジュールの標数P用のボロー計算部の出力信号Mがボロー信号Cとして入力される。このボロー信号Cと除数Bの対応桁の値がオアゲート158に入力され、その出力信号と前段からのレジスタからの入力信号Aの反転信号がアンドゲート160に入力される。また、ボロー信号Cと除数Bの対応桁の値をアンドゲート156に入力し、その出力信号と前記アンドゲート160の出力信号とをオアゲート162に入力し、その出力信号Mが次段の除算演算用モジュール等に出力される。この図8(c)のボロー計算部へのA、B、Cの入力信号の組み合わせと、出力信号Mとの関係を一覧に示したのが図9である。
図8(d)は、標数2用の演算制御部であり、セレクタ164を備えている。このセレクタ164に入力される入力信号Bは、除数Bに対応する桁の値であり、これが「1」の時は前段レジスタの出力Aを出力し、「0」の時は標数2の制御信号Dを出力する。前段の標数2用の演算制御部の出力信号Nは、次段の標数2の制御信号Dとして入力される。
【0018】
標数P/標数2のそれぞれの場合において、演算制御部の最終段の出力(標数Pの場合はM、標数2の場合はN、但し、標数PはMの論理反転出力)が減算処理を実行するか否かを選択する減算実行/非実行選択信号となる。信号146の標数P/標数2の選択信号によって実行する除算演算が選択され、これに対応する減算実行/非実行選択信号が信号148となり、各除算演算用モジュール122〜130のF端子へ入力される。
通常、信号148の値は「0」、すなわち、減算処理をせずに演算用のレジスタ132〜138をそのままシフトさせる。このようにして、シフトレジスタ112に格納されている被除数Aの上位桁から順にシフトしていき、信号148の減算実行/非実行選択信号が「1」となった時に減算処理が実行される。信号148の出力は、そのままシフトレジスタ144に格納され、これが商となる。
上記の動作をシフトレジスタ112の被除数Aの全ビットが出力されるまで、すなわち、被除数Aがmビットであればmクロックで動作を止めるようにする。また、この時のレジスタ132〜138の値が剰余となり、そのうちのレジスタ138の値が最高位桁(MSB)となる。
図10は、図7の除算演算回路110による標数Pの演算処理過程を説明する図である。図10に示されるように、標数Pにおける75÷+9を実際に計算すると、商が8(2進数表現で1000)、剰余が3(2進表現で11)と求めることができる。
また、図11は、図7の除算演算回路110による標数2の演算処理過程を説明する図であり、被除数A=(1,1,0,1,0,1,0,0,1)、除数B=(1,0,1,1)の場合であって、A/Bを実際に計算すると、商が101010、剰余が101というように求めることができる。
以上説明したように、本実施の形態3によれば、標数Pと標数2のどちらの場合の除算演算であっても、それぞれ別に回路を設けることなく、低コストの除算演算回路を実現することができる。
【符号の説明】
【0019】
10 除算演算回路、12 シフトレジスタ、14〜22 レジスタ、24〜30 レジスタ、32〜38 論理積素子、40〜46 排他的論理和素子、48 シフトレジスタ、50 除算演算回路、52 シフトレジスタ、54〜62 レジスタ、64〜70 レジスタ、72〜78 論理積素子、80〜86 排他的論理和素子、88〜96 セレクタ88〜96、98 シフトレジスタ、110 除算演算回路、112 シフトレジスタ、114〜120 レジスタ、122〜130 除算演算用モジュール、132〜138 レジスタ、140 インバータ、142 セレクタ、144 シフトレジスタ、146、148 信号、150 アンドゲート、152 エクスクル−シブオアゲート、154 セレクタ、156 アンドゲート、158 オアゲート、160 アンドゲート、162 オアゲート、164 セレクタ
【技術分野】
【0001】
本発明は、ガロア体上の元の除算演算回路およびその演算回路を含む演算装置に係り、特に、符号・暗号回路等に用いられるガロア体上の元の除算演算回路およびその演算回路を含む演算装置に関する。
【背景技術】
【0002】
近年、情報のディジタル化によって様々なサービスが提供され、快適な生活環境が整備されつつある。
例えば、インターネットの普及によって、我々はネットワークに接続された世界中のサーバが提供するサービスの恩恵を受けることができる。また、ディジタル携帯電話の普及によって、必要なときにすぐにコミュニケーションをとることが可能となり、通話以外の付加サービスを利用することができる。さらに、クレジットカードやプリペイトカードなどは、現金のやりとりによる煩わしさを解消してくれるという利点がある。
このような情報のディジタル化は、我々に利便性を提供してくれる反面、不正利用による被害を受け易いという問題を有する。例えば、盗聴によるプライバシーの侵害や個人情報の流出、複写・改ざん・なりすましによるシステムの不正利用などがそれである。そこで、これらの問題の解決策として、最近では暗号技術が注目されており、その中でもガロア体上の演算を利用した暗号技術の一つである楕円曲線暗号の研究開発が盛んに行われている。
この楕円曲線暗号は、楕円曲線上の離散対数問題に安全性の根拠を置く公開鍵暗号系であり、IEEE P1363で標準化の検討がなされている。
このように、従来の符号・暗号の分野では、ガロア体上の演算が利用されている。ガロア体GF(2m)は、2m個の元からなる集合であり、その表現方法としてベクトル表現がよく用いられる。上記のベクトル表現においては、ガロア体GF(2m)上の元aはGF(2)の元
を用いて、m次元ベクトル
として表現する。ベクトル表現においては、元の表現はベクトル空間の基底によって決定される。
【0003】
特に、多項式基底では、GF(2)上のm次既約多項式fを生成多項式とし、fの根である元αを用いて、
を基底とする。また、このとき、ガロア体GF(2m)上の元aの多項式表現は、xを変数として、
となる。ガロア体GF(2m)上の元同士の演算は、上記多項式表現を用いると容易に理解することができる。
例えば、GF(26)上の2つの元を
A=(1,0,0,1,1,1)
B=(1,1,0,0,0,1)
とし、それらの加算式C=A+Bは、多項式表現を用いると、
となる。即ち、
C=(1+1,0+1,0+0,1+0,1+0,1+1)
=(0,1,0,1,1,0)
である。ここに、+はGF(2)上の演算であるから、排他的論理和演算となる。
これと同様に、GF(26)上の2つの元
A=(1,0,0,1,1,1)
B=(1,1,0,0,0,1)
の減算式C=A−Bは、
C=(1−1,0−1,0−0,1−0,1−0,1−1)=(0,1,0,1,1,0)
である。ここに、−もGF(2)上の演算であるから、排他的論理和演算となる。
また、GF(26)上の2つの元の乗算式D=A・Bは、多項式表現を用いると、次式(1)のように計算することができる。
…………(1)
【0004】
今、このガロア体GF(26)の既約多項式を
F=(1,0,1,0,1,0,1)
とする。すなわち、
である。この既約多項式によって、上記(1)式を5次以下の多項式へと変形する。即ち、F(x)を0とおき、次式(2)のように6次以上の項に繰り返し適用して、5次以下にする。
…………(2)
まず、(1)式の最高次が10次なので、(2)式にx4を乗じると、
となる。この式を(1)式の10次の項に代入すると、
のようになり、この時点での最高次が9次なので、同様の計算を行う。これを繰り返して、5次以下にすると最終的な結果は、
となり、乗算結果のベクトル表現は、
D=(1,0,0,1,1,1)
となる。
このように、乗算演算では、(1)式を(2)式の既約多項式Fで5次以下とする演算処理を行う際に、途中の演算結果の桁数を増やさない(次数を落とす)ための除算を行いその剰余を求めている点に着目し、本発明者らは除算演算を行う際にも同様の演算回路を利用することができないかを検討している。
また、従来の除算演算回路では、乗算と加算とを一定の条件に従って繰り返し演算処理することにより除算演算を行っていた。
さらに、通常のCPU等の演算回路には、一般的に用いられる除算演算回路(以下、標数Pの除算演算回路という)が内蔵されている。一方で、符号・暗号処理等を行う際には、上記したガロア体GF(2m)上のベクトルで表される2つの元の除算演算回路(以下、標数2の除算演算回路という)を必要とする場合があった。そこで、これら両者の除算演算処理を必要とする場合、従来はそれぞれ別個の演算回路を用意していた。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、このような従来の演算回路にあっては、上記した乗算演算において、(1)式を(2)式の既約多項式Fで5次以下にする処理は、除算を行いその剰余を求めているが、この除算は途中の演算結果の桁数を増やさない(次数を落とす)ための処理であり、除数が既約多項式に制限されてしまうことから、これまでの乗算回路をそのまま除算回路として転用するのは困難であるという問題があった。
また、従来の除算演算回路における除算演算は、乗算と加算とが一定の条件に従って繰り返し行われるため、計算量が膨大となり、計算時間が長くかかるという問題があった。
さらに、一般的に用いられる標数Pの除算演算回路と、符号・暗号処理等を行うための標数2の除算演算回路の両方が必要な場合は、従来はそれぞれ別個の演算回路を使用していたため、回路規模が増加し、コスト増になるという問題があった。
本発明は、上記課題に鑑みてなされたものであり、除数の制限がなく、演算速度が速い上、標数Pと標数2の両方の除算演算処理を行う場合であっても回路規模を増加させずに、低コストに実現することができるガロア体上の元の除算演算方法および除算演算回路を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記の目的を達成するため、請求項1記載の発明は、ガロア体上のmビットとnビット(m、nは共に自然数で、m>n)のベクトルで表現される2つの元である被除数A=(a0,…,am−1)と除数B=(b0,…,bn−1)に対してA/Bを演算し、最大でmビットで表現される商C=(c0,…,cm−1)と、最大でn−1ビットで表現される剰余D=(d0,…,dn−2)とを求めるためのガロア体上の元の除算演算回路であって、mビットから成る前記被除数Aを格納し、上位ビットから順次出力する被除数格納出力手段と、nビットから成る前記除数Bを各桁毎に格納し、それぞれ個別に出力する除数格納出力手段と、各桁毎の演算データをそれぞれ格納し、その演算データを次桁へ出力する演算データ格納出力手段と、前記被除数格納出力手段から出力される被除数あるいは前記演算データ格納出力手段から出力される各桁の演算データを前記除数格納出力手段から出力される除数の値に基づいて、そのまま出力するか、一つ下の桁の出力を上位桁へ渡すかを選択して前記除数の有効桁数を検出する有効桁数検出手段と、前記有効桁数検出手段からの出力と、前記除数格納出力手段から出力される各桁の除数Bとの論理積をとって減算処理するか否かを選択する論理積手段と、前記論理積手段からの論理積出力と、前記被除数格納出力手段から出力される被除数あるいは前記演算データ格納出力手段から出力される演算データとの排他的論理和をとって減算処理を実行する排他的論理和手段と、前記有効桁数検出手段からの出力を順次入力して格納する演算結果格納手段と、を備え、前記被除数Aの全ビットが出力されるまで演算処理を実行することにより、前記演算結果格納手段に前記商Cが格納され、前記演算データ格納出力手段に剰余Dが格納されるものである。
【発明の効果】
【0007】
以上説明したように、請求項1記載のガロア体上の元の除算演算回路によれば、ガロア体上の元の除算および剰余算を除数Bのビット数に制限されることなく実現することができる。
【図面の簡単な説明】
【0008】
【図1】本実施の形態1に係るガロア体上の元の除算演算回路の構成例を示す図である。
【図2】図1の除算演算回路による演算処理状態を示す図である。
【図3】図1の除算演算回路を用いて除算演算を行う場合の処理動作を説明する図である。
【図4】本実施の形態2に係るガロア体上の元の除算演算回路の構成例を示す図である。
【図5】除数のビット数の制限を受けない図4の除算演算回路による演算処理状態を示す図である。
【図6】図4の除算演算回路を用いて除算演算を行う場合の処理動作を説明する図である。
【図7】本実施の形態3に係る除算演算回路の構成例を示す図である。
【図8】(a)(b)(c)(d)は、図7の除算演算用モジュールの内部構造を示す図である。
【図9】図8(c)のボロー計算部への入力信号の組み合わせと出力信号との関係を一覧に示した図である。
【図10】図7の除算演算回路による標数Pの演算処理過程を説明する図である。
【図11】図7の除算演算回路による標数2の演算処理過程を説明する図である。
【発明を実施するための形態】
【0009】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
(実施の形態1)
この実施の形態1は、本発明のガロア体GF(2m)上の元の除算を実現する除算演算回路を説明するものである。
図1は、本実施の形態1に係るガロア体上の元の除算演算回路10の構成例を示す図である。この構成例では、除数を5ビットとし、最上位桁が常に1である必要がある。つまり、除数が4ビットや3ビットでは計算することのできない構成である。
図1に示す除算演算回路10は、被除数格納出力手段としてのシフトレジスタ12、除数格納出力手段としてのレジスタ14〜22、演算データ格納出力手段としてのレジスタ24〜30、論理積手段としての論理積素子32〜38、排他的論理和手段としての排他的論理和素子40〜46、演算結果格納手段としてのシフトレジスタ48などにより構成されている。
シフトレジスタ12には、被除数Aが格納され、1クロック毎に上位桁から出力するものである。ここでは、一例として被除数A=(1,1,0,1,0,0,1,1,1)とすると、1,1,1,0,0,1,0,1,1の順に出力される。
レジスタ14〜22は、除数Bを格納するもので、レジスタ22に最上位桁(MSB)、そしてレジスタ20、18、16…と順に格納してゆき、レジスタ14に最下位桁(LSB)を格納する。ここでは、一例として除数B=(1,0,0,1,1)とすると、レジスタ14〜22には順に1,0,0,1,1が格納される。
レジスタ24〜30は、演算用のレジスタであって、レジスタ30が最上位桁となる。レジスタ24〜30は、演算前に全て「0」にリセットされる。各レジスタ24〜30には、対応する桁のレジスタ14〜22からの除数Bと、レジスタ30からの出力との論理積(論理積素子32〜38による)出力と、一つ下位の桁の出力(例えば、最下位桁のレジスタ24にはシフトレジスタ12からの出力)との排他的論理和(排他的論理和素子40〜46による)出力がそれぞれ入力される。
排他的論理和素子40〜46は、減算を実行する素子である。
論理積素子32〜38は、論理積を実行する素子であり、ここに入力されるレジスタ30からの出力は、減算するかしないかの選択信号である。通常、この値は「0」(減算をしない)であり、演算用のレジスタ24〜30の値をそのまま次桁へシフトさせる。
以上のように、本実施の形態1の除算演算回路10が構成されており、シフトレジスタ12に格納された被除数Aの上位桁から順にシフトしていって、被除数Aの上位5桁を常に見ている。
【0010】
レジスタ30は、現在の最高次の値であり、これが「1」となった時に減算処理が実行される。レジスタ30の値が「1」になると、論理積素子32〜38は、レジスタ14〜22からの除数Bの値を出力して、排他的論理和素子40〜46において減算が実行される。
また、レジスタ30の出力は、そのままシフトレジスタ48にも格納され、これが商となる。このような処理動作は、被除数Aの全ビットが出力されるまで実行される。例えば、被除数Aがmビットであればmクロックで動作を止めるようにする。そして、この時にレジスタ24〜30に格納されている値が剰余となり、レジスタ30に格納されている値が最上位桁(MSB)となる。
図2は、図1の除算演算回路10による演算処理状態を示す図である。ここでは、被除数A=(1,1,0,1,0,0,1,1,1)、除数B=(1,0,0,1,1)として、実際にA/Bを計算したものである。
ここでは、被除数Aが9ビットであるため、図2に示すように、9クロック目まで演算処理が行われる。その結果、商が10110となり、剰余が1101となる。
【0011】
次に、その除算演算の処理動作を説明する。
図3は、図1の除算演算回路10を用いて除算演算を行う場合の処理動作を説明する図である。
図3に示すように、被除数A=(1,1,0,1,0,0,1,1,1)が格納されたシフトレジスタ12からレジスタ24〜30へ被除数Aの最上位ビットから順にシフトさせて、4クロック目で上位4ビットを格納し、5ビット目がシフトレジスタ12の最上位桁に位置する状態として、除数Bと同じ5ビット(nビット)数分だけ被除数Aから抽出して、これを演算対象A´とする。
ここで、レジスタ30に格納された演算対象A´の最上位ビットの「1」を商c4=1とする。
このように、演算対象A´の最上位ビットが「1」であれば、演算対象A´から除数Bを減算し、それを減算結果A″として抽出する。
その減算結果A″の最上位ビットが「0」ならば、その最上位ビットを除く4ビット(n−1ビット)列を抽出すると共に、その4ビット列に被除数Aのa3の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その最上位ビットの「0」を商c3=0とする。
上記と同様の手順に従い、演算対象A´の最上位ビットが「0」であるので、最上位ビットを除く4ビット列を抽出し、その4ビット列に被除数Aのa2の「0」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その最上位ビットの「1」を商c2=1とする。
この新たな演算対象A´は、最上位ビットが「1」であるので除数Bを減算し、それを減算結果A″として抽出する。
その減算結果A″の最上位ビットが「0」であるので、最上位ビットを除く4ビット列を抽出し、被除数Aのa1の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出し、その最上位ビットの「1」を商c1=1とする。
新たな演算対象A´は、最上位ビットが「1」であるので除数Bを減算し、それを減算結果A″として抽出する。
減算結果A″の最上位ビットが「0」であるので、最上位ビットを除く4ビット列を抽出し、被除数Aのa0の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その最上位ビットの「0」を商c0=0とする。
このときの新たな演算対象A´の最上位ビットを除く4ビット列が剰余Dとなる。
その結果、商Cは、「10110」となり、剰余Dが「1101」となる。
以上説明したように、本実施の形態1によれば、除数が既約多項式のみに制限されることなく、迅速にガロア体上の元の除算演算を行うことができる。
【0012】
(実施の形態2)
本実施の形態2は、ガロア体GF(2m)上の除数のビット数が制限されない除算を実現するものである。
図4は、本実施の形態2に係るガロア体上の元の除算演算回路50の構成例を示す図である。この構成例では、除数の最大ビット数を5ビットとする。つまり、除数としては1〜5ビットまでを使用することができる。
図4に示す除算演算回路50は、被除数格納出力手段としてのシフトレジスタ52、除数格納出力手段としてのレジスタ54〜62、演算データ格納出力手段としてのレジスタ64〜70、論理積手段としての論理積素子72〜78、排他的論理和手段としての排他的論理和素子80〜86、有効桁数検出手段としてのセレクタ88〜96、演算結果格納手段としてのシフトレジスタ98などにより構成されている。
シフトレジスタ52には、被除数Aが格納され、1クロック毎に上位桁から出力するものである。ここでは、一例として被除数A=(1,1,0,1,0,0,1,1,1)とすると、1,1,1,0,0,1,0,1,1の順に出力される。
レジスタ54〜62は、除数Bを格納するもので、レジスタ62に最上位桁(MSB)、そしてレジスタ60、58、56…と順に格納してゆき、レジスタ54に最下位桁(LSB)を格納する。ここでは、一例として5ビットの除数B=(1,0,1,0,0)とすると、レジスタ54〜62には順に1,0,1,0,0が格納される。
レジスタ64〜70は、演算用のレジスタであって、レジスタ70が最上位桁となる。レジスタ64〜70は、演算前に全て「0」にリセットされる。各レジスタ64〜70には、対応する桁のレジスタ54〜62からの除数Bと、セレクタ96からの出力信号100との論理積(論理積素子72〜78による)出力と、一つ下位の桁の出力(例えば、最下位桁のレジスタ64にはシフトレジスタ52からの出力)との排他的論理和(排他的論理和素子80〜86による)出力が入力される。
【0013】
排他的論理和素子80〜86は、減算を実行する素子である。
論理積素子72〜78は、論理積を実行する素子であり、ここに入力されるセレクタ96からの出力信号100は、減算するかしないかの選択信号である。この選択信号は、レジスタ54〜62からの除数Bと、シフトレジスタ52からの出力、およびレジスタ64〜70の各出力と、セレクタ88〜96とによって制御される。
この各セレクタ88〜96を制御する制御信号は、レジスタ54〜62から出力される除数Bのそれぞれの値である。この制御信号の値が「1」の時は、その次数に対応する演算用のレジスタ64〜70の出力がそのままセレクタ出力となり、制御信号の値が「0」の時は、一つ下の次数のセレクタ出力を上位次数のセレクタへ渡すようにする。
最終的な出力信号100は、除数Bの値が「1」である次数の中で最高次のセレクタ96の出力となる。これにより、除数Bの有効ビット数を検出している。本実施の形態2では、除数B=(1,0,1,0,0)であるので、レジスタ58からセレクタ92に除数Bの最高次の「1」が出力されて、レジスタ66の出力が出力信号100となる。また、例えば、除数B=(1,0,0,1,1)の場合は、レジスタ70の出力が出力信号100となる。
通常、出力信号100の値は「0」である(図5の1クロック目参照)。すなわち、減算をせずに演算用のレジスタ64〜70をそのままシフトさせる。このようにして、被除数Aの上位桁から順にシフトしていって、有効ビットの次の値が「1」となった時に減算が実行される。
また、出力信号100の値が「1」になった場合は(図5の2〜3クロック目参照)、論理積素子72〜78がレジスタ54〜60からの除数Bの値を出力し、排他的論理和素子80〜86において減算が実行される。
そして、出力信号100は、そのままシフトレジスタ98にも格納され、これが商Cとなる。このような処理動作は、被除数Aの全ビットが出力されるまで行われる。すなわち、被除数Aがmビットであれば、mクロックで処理動作を止め、この時のレジスタ64〜70に格納されている値が剰余Dとなる。その時のレジスタ70の値が最上位桁(MSB)である。
また、図5は、除数のビット数の制限を受けない図4の除算演算回路50による演算処理状態を示す図である。ここでは、除数B=(1,0,1,0,0)が3ビットであっても、除算演算回路50でA/Bを計算することにより、商が1101000となり、剰余Dが11となる。
【0014】
次に、その除算演算の処理動作を説明する。
図6は、図4の除算演算回路50を用いて除算演算を行う場合の処理動作を説明する図である。
図6に示すように、被除数A=(1,1,0,1,0,0,1,1,1)がシフトレジスタ52に格納され、その上位のレジスタ64〜70に4(n−1)ビット分の「0」を置いて、これを被除数Aとし、その被除数Aの上位5(n)ビット列「10000」を演算対象A´として抽出する。ここで、除数B=(1,0,1,0,0)であるので、0次から「1」の値を持つ次数の中で最高次までの有効ビット数をtとすると、t=3となる。このため、上記した演算対象A´「10000」の3ビット目の「0」が商c8=0となる。
この演算対象A´の3ビット目が「0」であれば、演算対象A´の最上位ビットを除く4ビット(n−1ビット)列を抽出すると共に、その4ビット列に被除数Aのa7の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その3ビット目の「0」を商c7=0とする。
同様に演算対象A´の3ビット目が「0」であるので、その演算対象A´の最上位ビットを除く4ビット列を抽出すると共に、その4ビット列に被除数Aのa6の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その3ビット目の「1」を商c6=1とする
新たな演算対象A´の3ビット目が「1」ならば、除数Bを減算して、その減算結果A″として抽出し、その減算結果A″の最上位ビットを除く4(n−1)ビット列を抽出し、被除数Aのa5の「0」を最下位ビットとして付加し、これを新たな演算対象A´として抽出する。そして、この新たな演算対象A´の3ビット目の「1」を商c5=1とする。
この新たな演算対象A´の3ビット目は、「1」であるので除数Bを減算し、それを新たな減算結果A″として抽出し、その減算結果A″の最上位ビットを除く4ビット列を抽出して、被除数Aのa4の「0」を最下位ビットとして付加し、これを新たな演算対象A´として抽出する。そして、この新たな演算対象A´の3ビット目の「0」を商c4=0とする。
【0015】
新たな演算対象A´の3ビット目は、「0」であるので、その演算対象A´の最上位ビットを除く4ビット列を抽出すると共に、被除数Aのa3の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その3ビット目の「1」を商c3=1とする
この新たな演算対象A´の3ビット目が「1」であるので除数Bを減算し、それを新たな減算結果A″として抽出し、減算結果A″の最上位ビットを除く4ビット列を抽出して、被除数Aのa2の「0」を最下位ビットとして付加し、これを新たな演算対象A´として抽出する。そして、この新たな演算対象A´の3ビット目の「0」を商c2=0とする。
新たな演算対象A´の3ビット目は、「0」であるので、その演算対象A´の最上位ビットを除く4ビット列を抽出すると共に、被除数Aのa1の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その3ビット目の「0」を商c1=0とする。
同様に、新たな演算対象A´の3ビット目が「0」であるので、その演算対象A´の最上位ビットを除く4ビット列を抽出すると共に、被除数Aのa0の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その3ビット目の「0」を商c0=0とする。
この商Cのc0までを求めた時の新たな演算対象A´の最上位ビットを除いた4(n−1)ビット列が剰余Dとなる。
このように、本実施の形態2では、被除数A=(1,1,0,1,0,0,1,1,1)とし、除数B=(1,0,1,0,0)として、図4の除算演算回路50により実際にA/Bを計算すると、その時の商Cが「0001011」となり、その剰余Dを「11」と求めることができる。
以上説明したように、本実施の形態2によれば、ガロア体上の元の除算および剰余算を除数Bのビット制限なく実現することができる。
【0016】
(実施の形態3)
本実施の形態3は、ガロア体GF(2m)上ベクトルで表わされる2つの元の除算演算(標数2の除算)と、一般的に用いられる除算演算(標数Pの演算)のどちらの除算演算をも可能とする除算演算回路を実現するものである。
図7は、本実施の形態3に係る除算演算回路110の構成例を示す図である。この構成例では、除数の最大ビット数を4ビットとする。つまり、除数としては1〜4ビットまでを使用することができる。
図7に示す除算演算回路110は、シフトレジスタ112、レジスタ114〜120、除算演算用モジュール122〜130、レジスタ132〜138、インバータ140、セレクタ142、シフトレジスタ144などにより構成されている。
シフトレジスタ112には、被除数Aが格納され、1クロック毎に上位桁から出力するものである。
レジスタ114〜120は、除数Bを格納するもので、レジスタ120に最上位桁(MSB)、そしてレジスタ118、116…と順に格納してゆき、レジスタ114に最下位桁(LSB)を格納する。
今、ここでは一例として標数Pにおいて75÷12を計算しようとすると、被除数75の2進表現1001011がシフトレジスタ112に格納され、1,1,0,1,0,0,1の順に出力されて、除数12の2進表現1100がレジスタ114〜120に順番に0,0,1,1と格納される。
同様に標数2においても、ベクトルで表現されるガロア体上の2つの元、被除数A=(1,1,0,1,0,1,0,0,1)、除数B=(1,0,1,1)の除算演算時には、シフトレジスタ112に被除数Aが格納され、1,0,0,1,0,1,0,1,1の順に出力されて、レジスタ114〜120に除数Bが順番に1,0,1,1と格納される。
レジスタ132〜138は、演算用のレジスタであり、レジスタ138が最上位桁となり、演算前に全て「0」にリセットされる。
【0017】
除算演算用モジュール122〜130は、除算演算用の回路をモジュール化したものである。図8(a)は、図7の除算演算用モジュールを示す図であり、(b)は、除算演算用モジュール内の演算部の構造を示す図であり、(c)は、標数P用のボロー計算部の構造を示す図であり、(d)は、標数2用の演算制御部を示す図である。
図8(a)に示した除算演算用モジュール122(124〜130も同様)の左側のA〜Fは、入力信号であり、右側のL〜Nは出力信号である。その除算演算用モジュール122の内部は、図8(b)〜(d)に示すように、3つのブロックにそれぞれ分かれている。
図8(b)は、除算演算の為の演算(減算)を行う演算部である。入力信号Fは、減算処理を実行するか否かの実行/非実行の選択信号であり、「1」で実行、「0」で非実行となる。この減算非実行時は、前段のレジスタからの入力信号Aがそのままセレクタ154を通って出力される(出力信号L)。また、減算実行時には、入力信号A、除数Bの対応桁の値、前段からのボロー信号の3つの値がエクスクル−シブオアゲート152により排他的論理和演算がなされ、セレクタ154を通って出力される。但し、標数2の演算時には、ボロー信号は不要となるので、標数P/標数2の選択信号E(「1」で標数Pを選択、「0」で標数2を選択)によって、アンドゲート150の出力がエクスクル−シブオアゲート152に入力され、マスクされる。そして、レジスタ132〜138の入力には、この演算部の出力信号Lが入力される。
図8(c)は、標数P用の演算制御部であるボロー計算部であり、前段の除算演算用モジュールの標数P用のボロー計算部の出力信号Mがボロー信号Cとして入力される。このボロー信号Cと除数Bの対応桁の値がオアゲート158に入力され、その出力信号と前段からのレジスタからの入力信号Aの反転信号がアンドゲート160に入力される。また、ボロー信号Cと除数Bの対応桁の値をアンドゲート156に入力し、その出力信号と前記アンドゲート160の出力信号とをオアゲート162に入力し、その出力信号Mが次段の除算演算用モジュール等に出力される。この図8(c)のボロー計算部へのA、B、Cの入力信号の組み合わせと、出力信号Mとの関係を一覧に示したのが図9である。
図8(d)は、標数2用の演算制御部であり、セレクタ164を備えている。このセレクタ164に入力される入力信号Bは、除数Bに対応する桁の値であり、これが「1」の時は前段レジスタの出力Aを出力し、「0」の時は標数2の制御信号Dを出力する。前段の標数2用の演算制御部の出力信号Nは、次段の標数2の制御信号Dとして入力される。
【0018】
標数P/標数2のそれぞれの場合において、演算制御部の最終段の出力(標数Pの場合はM、標数2の場合はN、但し、標数PはMの論理反転出力)が減算処理を実行するか否かを選択する減算実行/非実行選択信号となる。信号146の標数P/標数2の選択信号によって実行する除算演算が選択され、これに対応する減算実行/非実行選択信号が信号148となり、各除算演算用モジュール122〜130のF端子へ入力される。
通常、信号148の値は「0」、すなわち、減算処理をせずに演算用のレジスタ132〜138をそのままシフトさせる。このようにして、シフトレジスタ112に格納されている被除数Aの上位桁から順にシフトしていき、信号148の減算実行/非実行選択信号が「1」となった時に減算処理が実行される。信号148の出力は、そのままシフトレジスタ144に格納され、これが商となる。
上記の動作をシフトレジスタ112の被除数Aの全ビットが出力されるまで、すなわち、被除数Aがmビットであればmクロックで動作を止めるようにする。また、この時のレジスタ132〜138の値が剰余となり、そのうちのレジスタ138の値が最高位桁(MSB)となる。
図10は、図7の除算演算回路110による標数Pの演算処理過程を説明する図である。図10に示されるように、標数Pにおける75÷+9を実際に計算すると、商が8(2進数表現で1000)、剰余が3(2進表現で11)と求めることができる。
また、図11は、図7の除算演算回路110による標数2の演算処理過程を説明する図であり、被除数A=(1,1,0,1,0,1,0,0,1)、除数B=(1,0,1,1)の場合であって、A/Bを実際に計算すると、商が101010、剰余が101というように求めることができる。
以上説明したように、本実施の形態3によれば、標数Pと標数2のどちらの場合の除算演算であっても、それぞれ別に回路を設けることなく、低コストの除算演算回路を実現することができる。
【符号の説明】
【0019】
10 除算演算回路、12 シフトレジスタ、14〜22 レジスタ、24〜30 レジスタ、32〜38 論理積素子、40〜46 排他的論理和素子、48 シフトレジスタ、50 除算演算回路、52 シフトレジスタ、54〜62 レジスタ、64〜70 レジスタ、72〜78 論理積素子、80〜86 排他的論理和素子、88〜96 セレクタ88〜96、98 シフトレジスタ、110 除算演算回路、112 シフトレジスタ、114〜120 レジスタ、122〜130 除算演算用モジュール、132〜138 レジスタ、140 インバータ、142 セレクタ、144 シフトレジスタ、146、148 信号、150 アンドゲート、152 エクスクル−シブオアゲート、154 セレクタ、156 アンドゲート、158 オアゲート、160 アンドゲート、162 オアゲート、164 セレクタ
【特許請求の範囲】
【請求項1】
ガロア体上のmビットとnビット(m、nは共に自然数で、m>n)のベクトルで表現される2つの元である被除数A=(a0,…,am−1)と除数B=(b0,…,bn−1)に対してA/Bを演算し、最大でmビットで表現される商C=(c0,…,cm−1)と、最大でn−1ビットで表現される剰余D=(d0,…,dn−2)とを求めるためのガロア体上の元の除算演算回路であって、
mビットから成る前記被除数Aを格納し、上位ビットから順次出力する被除数格納出力手段と、
nビットから成る前記除数Bを各桁毎に格納し、それぞれ個別に出力する除数格納出力手段と、
各桁毎の演算データをそれぞれ格納し、その演算データを次桁へ出力する演算データ格納出力手段と、
前記被除数格納出力手段から出力される被除数あるいは前記演算データ格納出力手段から出力される各桁の演算データを前記除数格納出力手段から出力される除数の値に基づいて、そのまま出力するか、一つ下の桁の出力を上位桁へ渡すかを選択して前記除数の有効桁数を検出する有効桁数検出手段と、
前記有効桁数検出手段からの出力と、前記除数格納出力手段から出力される各桁の除数Bとの論理積をとって減算処理するか否かを選択する論理積手段と、
前記論理積手段からの論理積出力と、前記被除数格納出力手段から出力される被除数あるいは前記演算データ格納出力手段から出力される演算データとの排他的論理和をとって減算処理を実行する排他的論理和手段と、
前記有効桁数検出手段からの出力を順次入力して格納する演算結果格納手段と、
を備え、前記被除数Aの全ビットが出力されるまで演算処理を実行することにより、前記演算結果格納手段に前記商Cが格納され、前記演算データ格納出力手段に剰余Dが格納されることを特徴とするガロア体上の元の除算演算回路。
【請求項1】
ガロア体上のmビットとnビット(m、nは共に自然数で、m>n)のベクトルで表現される2つの元である被除数A=(a0,…,am−1)と除数B=(b0,…,bn−1)に対してA/Bを演算し、最大でmビットで表現される商C=(c0,…,cm−1)と、最大でn−1ビットで表現される剰余D=(d0,…,dn−2)とを求めるためのガロア体上の元の除算演算回路であって、
mビットから成る前記被除数Aを格納し、上位ビットから順次出力する被除数格納出力手段と、
nビットから成る前記除数Bを各桁毎に格納し、それぞれ個別に出力する除数格納出力手段と、
各桁毎の演算データをそれぞれ格納し、その演算データを次桁へ出力する演算データ格納出力手段と、
前記被除数格納出力手段から出力される被除数あるいは前記演算データ格納出力手段から出力される各桁の演算データを前記除数格納出力手段から出力される除数の値に基づいて、そのまま出力するか、一つ下の桁の出力を上位桁へ渡すかを選択して前記除数の有効桁数を検出する有効桁数検出手段と、
前記有効桁数検出手段からの出力と、前記除数格納出力手段から出力される各桁の除数Bとの論理積をとって減算処理するか否かを選択する論理積手段と、
前記論理積手段からの論理積出力と、前記被除数格納出力手段から出力される被除数あるいは前記演算データ格納出力手段から出力される演算データとの排他的論理和をとって減算処理を実行する排他的論理和手段と、
前記有効桁数検出手段からの出力を順次入力して格納する演算結果格納手段と、
を備え、前記被除数Aの全ビットが出力されるまで演算処理を実行することにより、前記演算結果格納手段に前記商Cが格納され、前記演算データ格納出力手段に剰余Dが格納されることを特徴とするガロア体上の元の除算演算回路。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2010−217921(P2010−217921A)
【公開日】平成22年9月30日(2010.9.30)
【国際特許分類】
【出願番号】特願2010−140131(P2010−140131)
【出願日】平成22年6月21日(2010.6.21)
【分割の表示】特願平11−371965の分割
【原出願日】平成11年12月27日(1999.12.27)
【出願人】(305027456)ネッツエスアイ東洋株式会社 (200)
【Fターム(参考)】
【公開日】平成22年9月30日(2010.9.30)
【国際特許分類】
【出願日】平成22年6月21日(2010.6.21)
【分割の表示】特願平11−371965の分割
【原出願日】平成11年12月27日(1999.12.27)
【出願人】(305027456)ネッツエスアイ東洋株式会社 (200)
【Fターム(参考)】
[ Back to top ]