JPH11352882A - 乗算装置及び剰余乗算装置 - Google Patents

乗算装置及び剰余乗算装置

Info

Publication number
JPH11352882A
JPH11352882A JP10156473A JP15647398A JPH11352882A JP H11352882 A JPH11352882 A JP H11352882A JP 10156473 A JP10156473 A JP 10156473A JP 15647398 A JP15647398 A JP 15647398A JP H11352882 A JPH11352882 A JP H11352882A
Authority
JP
Japan
Prior art keywords
value
remainder
multiplicand
bits
generating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP10156473A
Other languages
English (en)
Inventor
Takatoshi Ono
貴敏 小野
Natsume Matsuzaki
なつめ 松崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP10156473A priority Critical patent/JPH11352882A/ja
Priority to US09/261,614 priority patent/US6366940B1/en
Publication of JPH11352882A publication Critical patent/JPH11352882A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 加算器の規模を小さくした乗算装置と剰余乗
算装置を提供する。 【解決手段】 シフタ101〜103は、被乗数が入力
されると被乗数の1ビット桁上げした値、被乗数の2ビ
ット桁上げした値、被乗数の3ビット桁上げした値をそ
れぞれ演算値選択器104へ出力し、演算値選択器10
4は、入力される3ビットの乗数が”111”の場合、
被乗数の3ビット桁上げ下値と被乗数の1の補数と1と
を加算器105に出力し、また演算値選択器104は入
力される3ビットの乗数が”111”でない場合、乗数
の値に応じて被乗数、被乗数の1ビット桁上げした値、
被乗数の2ビット桁上げした値のうちのいずれかを加算
器105へ出力し、加算器105は、演算値選択器10
4より入力される値を加算する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、乗算装置及び剰余
乗算装置に関する。
【0002】
【従来の技術】近年、通信分野における暗号化技術の発
達に伴って、暗号化の際に利用される各種演算装置の需
要が高まっている。例えば、公開鍵暗号方式の一つであ
るRSA(Rivest Shamir Adleman)暗号においては剰
余乗算を行うための剰余乗算装置が利用されている。こ
こで剰余乗算とは、3つの正の整数X、Y及びPにおい
て、被乗数Xと乗数Yの積X*Yを除数Pで割った剰余
((X*Y)modPと表わす)を求めることである。
式(X*Y)modPの代りに((XmodP)*Y)m
odPとしてもよい。
【0003】従来技術において、3つの正の整数X、Y
及びPから(XmodP)*Yを算出する剰余乗算装置
は、剰余を求めるための剰余部と、乗算を行うための乗
算部とから構成される。剰余部は、被除数Xと除数Pが
入力されると剰余XmodPを乗算部へ出力する。剰余
部は、主に、被除数Xから除数Pを繰り返し減算するこ
とにより剰余を求める減算回路や、あるいは、被除数X
と除数Pのあらゆる値の組み合わせに対応する剰余Xm
odPの値を記憶するROMテーブル等により構成され
る。
【0004】乗算部は、剰余部から入力される剰余Xm
odPと乗数Yとの積(XmodP)*Yを算出する乗
算装置である。この乗算装置については、従来から様々
な構成のものが実現されている。以下に、従来技術にお
ける基本的な乗算装置の例を図15、図16を用いて説
明する。なお図15、図16において乗算装置は、被乗
数Xと乗数Yとの積X*Yを算出する。
【0005】図15は、第1の従来技術の乗算装置にお
ける乗算回路の構成図である。被乗数用レジスタ150
1は被乗数Xが入力されると、Xを加算器1502と左
ビットシフタ1505へ出力する。その後、被乗数用レ
ジスタ1501は、左1ビットシフタ1505より順次
入力される数を左1ビットシフタ1505へ戻しながら
加算器1502に出力する。乗数シフトレジスタ150
3は、乗数Yと同じビット幅のシフトレジスタで、乗数
Yが入力されると、レジスタの最下位ビットの値(0ま
たは1)、すなわち乗数Yの最下位ビットの値を加算器
1502に出力する。その後、乗数シフトレジスタ15
03は、レジスタ内部の値を右方向に順次1ビットずつ
シフトさせて、その都度最下位ビットの値を加算器15
02に出力する。
【0006】加算器1502は、乗数シフトレジスタ1
503からの入力が1のとき、被乗数用レジスタ150
1より入力される値を積X*Yの部分積として、その部
分積と累算用レジスタ1504から入力される値(初期
値は0)とを加算して、加算結果を累算用レジスタ15
04に出力する。加算器1502は、乗数シフトレジス
タ1503からの入力が0の場合は、何も行わない。こ
れらの処理によって加算器1502は、被乗数Xと乗数
Yの各ビットとを乗算した部分積の累算を行っている
【0007】累算用レジスタ1504は、保持している
初期値の0を加算器1502へ出力し、その後、加算器
1502より入力される値を保持しながらその値を加算
器1502へ出力する処理を繰り返す。左1ビットシフ
タ1505は、被乗数用レジスタ1501より値が入力
されると、レジスタの内容を左方向に順次1ビットずつ
シフトさせて空いた最下位ビットに0を入力してから被
乗数用レジスタ1501へ出力する。
【0008】以上のように構成された回路により、乗数
Yの最後のビットまで加算と桁送りを順次繰り返すと、
累算用レジスタ1504に積X*Yが得られる。第1の
従来技術における乗算装置は、乗数のビット数に比例し
て加算と桁送りの繰り返しも増加するので、乗数のビッ
ト数が多いほど乗算の処理速度は遅くなる。暗号化にお
いては、ビット数の多い乗数を用いるので、第1の従来
技術の乗算装置よりも高速に乗算を行う乗算装置が要求
される。そこで以下に説明する第2の従来技術は、一度
に乗数の複数ビットを処理することにより乗算処理の高
速化を図っている。
【0009】図16は、第2の従来技術の乗算装置にお
ける乗算回路の構成図である。第1の従来技術が加算器
1502と乗数シフトレジスタ1503による部分積の
生成と部分積の累算との繰り返しによって積を算出する
のに対して、第2の従来技術の乗算装置は、先に加算に
必要な部分積を生成しておいてから、それら部分積を一
度に加算して積を算出する。なお、ここにおいて、被乗
数Xはnビット、乗数Yは4ビットであり、乗数Yの各
ビットを明確に区別する場合、乗数Yの最上位ビットを
y[3]、その次をy[2]、その次をy[1]、最下位ビットをy
[0]と表わす。
【0010】被乗数レジスタ1601は、nビット幅の
レジスタであり、入力される被乗数Xをシフタ1602
〜1604及び加算器1605に出力する。シフタ16
02〜1604は、被乗数レジスタ1601から入力さ
れる被乗数Xを左方向にそれぞれ1〜3ビットシフトし
て、それぞれ下位1〜3ビットに0を埋めてから、それ
ら(n+1)〜(n+3)ビットデータを選択器1605の
I1〜I3に出力する。
【0011】選択器1605は、4ビットの乗数Yが入
力されると、Yの各ビットの値に応じて、シフタ160
1〜1604からの入力を加算器1606へ出力するか
否かを選択してから加算器1606へ出力する。詳しく
はy[0]が1の場合は被乗数レジスタ1601からの入
力をO0から加算器1606へ出力し、y[1]が1の場
合はシフタ1602からの入力をO1から加算器160
6へ出力し、y[2]が1の場合はシフタ1603からの
入力をO2から加算器1606へ出力し、y[3] が1の
場合はシフタ1603からの入力をO3から加算器16
06へ出力する。加算器1606は選択器1605より
入力される数を加算する。この加算結果が、積X*Yで
ある。
【0012】
【発明が解決しようとする課題】ところで、第2の従来
技術における乗算装置は、第1の従来技術の装置よりも
乗算処理の速度を向上させているが、乗数のビット数に
比例して加算器1606への入力数が増え、加算器16
06の規模が大きくなるという問題がある。上記の問題
に鑑み、本発明は加算器の規模を小さくした乗算装置と
剰余乗算装置を提供することを目的とする。
【0013】
【課題を解決するための手段】上記課題を解決するた
め、本発明にかかる乗算装置は、n(nは3以上)ビッ
トからなる乗数の全ビットが1であるか否かを判定する
判定手段と、全ビットが1であると判定されたとき、被
乗数の2のn乗倍した値を生成する生成手段と、全ビッ
トが1であると判定されたとき、被乗数の1の補数を生
成する補数生成手段と、被乗数の2のn乗倍した値と被
乗数の1の補数と定数1とを加算する加算手段とを備え
る。
【0014】前記生成手段は、被乗数を左へnビットシ
フトさせて下位nビット全てに0を入力するシフタにし
てもよい。また、本発明の乗算装置は、乗数を分割して
得られる部分乗数と被乗数との部分積を累算して乗算値
を求める乗算装置であって、乗数をn(nは3以上)ビ
ットからなる複数の部分乗数に分割する分割手段と、各
部分乗数について、部分乗数の全ビットが1であるか否
かを順次判定する判定手段と、全ビットが1であると判
定された場合には、被乗数を2のn乗倍した値と、被乗
数の負の値との和を用いて部分積を生成する第1生成手
段と、全ビットが1であると判定されなかった場合に
は、被乗数と当該部分乗数との積を用いて部分積を生成
する第2生成手段と、第1生成手段による部分積または
第2生成手段による部分積を順次累算する累算手段とを
備えてもよい。
【0015】前記第1生成手段は、全ビットが1である
と判定された場合に、被乗数をnビット左シフトするシ
フト手段と、被乗数の1の補数を生成する補数手段と、
シフト手段によるシフトされた被乗数と、被乗数の1の
補数と、1とを加算する加算手段とから構成してもよ
い。前記分割手段は、3ビットからなる部分乗数に分割
するよう構成してもよい。
【0016】また本発明の乗算装置は、乗数を分割して
得られる部分乗数と被乗数との部分積を累算して乗算値
を求める乗算装置であって、乗数を3m(mは2以上)
ビットからなる複数の部分乗数に分割する分割手段と、
各部分乗数について、その部分乗数の上位ビットから3
ビットずつ区切ったm個の3ビット値それぞれが“11
1”であるか否かを判定する判定手段と、判定手段によ
り“111”であると判定された場合には、被乗数を2
の3乗倍した値と、被乗数の負の値との和を用いて小部
分積を生成する第1生成手段と、判定手段により“11
1”ではないと判定された場合には、被乗数と当該3ビ
ット値との積を用いて小部分積を生成する第2生成手段
と、全ての部分乗数について、第1生成手段による小部
分積と第2生成手段による小部分積とを累算する累算手
段とを備えるてもよい。
【0017】また、本発明の乗算装置は、乗数を分割し
て得られる部分乗数と被乗数との部分積を累算して乗算
値を求める乗算装置であって、乗数を3m(mは2以
上)ビットからなる複数の部分乗数に分割する分割手段
と、各部分乗数について、その部分乗数の上位ビットか
ら3ビットずつ区切ったm個の3ビット値それぞれが
“111”であるか否かを判定する判定手段と、判定手
段により3ビット値が“111”であると判定されたと
き、当該3ビット値の上位隣の3ビット値が“111”
と判定されたことを検出する第1検出手段と、判定手段
により3ビット値が“111”であると判定されたと
き、当該3ビット値の下位隣の3ビット値が“111”
と判定されたことを検出する第2検出手段と、判定手段
により3ビットの値が“111”であると判定されたと
き、被乗数を2の3乗倍した値と被乗数の負の値とを用
いて小部分積を生成する第1生成手段と、第1検出手段
による検出がなされたとき、第1生成手段に被乗数の2
の3乗した値を用いずに小部分積を生成させる第1制御
手段と、第2検出手段による検出がなされたとき、第2
生成手段に被乗数の負の値を用いずに小部分積を生成さ
せる第2制御手段と、判定手段により”111”でない
と判定された場合には、被乗数と当該3ビット値との積
を用いて小部分積を生成する第2生成手段と、全ての部
分乗数について、第1生成手段による小部分積と第2生
成手段による小部分積を順次累算する累算手段とから構
成してもよい。
【0018】また、本乗算装置は、乗数を分割して得ら
れる部分乗数と被乗数との部分積を累算して乗算値を求
める乗算装置であって、乗数を3m(mは2以上)ビッ
トからなる複数の部分乗数に分割する分割手段と、各部
分乗数について、その部分乗数の上位ビットから3ビッ
トずつ区切ったm個の3ビット値それぞれが”111”
であるか否かを判定するm個の判定手段と、2つ以上の
互いに隣り合う判定手段であって、かつ、何れも”11
1”であると判定した判定手段群を検出する検出手段
と、各判定手段に対応して設けられ、各判定手段によ
り”111”であると判定された場合には、被乗数の2
の3乗倍した値と被乗数の負の値とを用いて小部分積を
生成するm個の第1生成手段と、検出手段により判定手
段群が検出された場合には、その判定手段群のうち最上
位の判定手段以外の判定手段群中の判定手段に対応する
第1生成手段による小部分積の生成を停止させる停止手
段と、各第1判定手段に対応して設けられ、第1判定手
段により“111”でないと判定された場合には、被乗
数と当該3ビット値との積を用いて小部分積を生成する
m個の第2生成手段と、全ての部分乗数についてm個の
第1生成手段による小部分積とm個の第2生成手段によ
る小部分積とを順次累算する累算手段とを備えてもよ
い。
【0019】前記乗算装置は、前記停止手段の代りに検
出手段により判定手段群が検出された場合には、当該判
定手段群のうち最上位の判定手段に対応する第1生成手
段に被乗数の負の値の生成を停止させ、当該判定手段群
のうち最上位の判定手段を除く何れか1つの判定手段に
対応する第1生成手段に被乗数の2の3乗の値の生成を
停止させる第1停止手段と、検出手段により判定手段群
が検出された場合には、その判定手段群のうち最上位の
判定手段と前記何れか1つの判定手段とを除く判定手段
群中の判定手段に対応する第1生成手段による小部分積
の生成を停止させる第2停止手段とを備えてもよい。
【0020】本発明にかかる剰余乗算装置は、数Xを初
期値として数Pによる剰余を順次に生成し、数Yを所定
ビットずつ下位側から分割して順次得られる部分数と再
帰的に順次生成される剰余との部分積を順次累算して積
X*Yの数Pによる剰余乗算値を求める剰余乗算装置で
あって、前記数Xの数Pによる剰余を生成する剰余生成
手段と、前記剰余を数Xの代替値として剰余生成手段に
再帰的に剰余を生成させる再帰手段と、数Yをn(nは
3以上)ビットからなる複数の部分数に分割する分割手
段と、各部分数について、部分数の全ビットが1である
か否かを判定する判定手段と、全ビットが1であると判
定された場合には、剰余を2のn乗倍した値と、剰余の
負の値との和を用いて部分積を生成する第1生成手段
と、全ビットが1ではないと判定された場合には、剰余
と当該部分数との積を用いて部分積を生成する第2生成
手段と、第1生成手段による部分積と第2生成手段によ
る部分積とを順次累算する累算手段とを備える。
【0021】また、本発明の剰余乗算装置は、数Xを初
期値として数Pによる剰余を順次再帰的に生成し、数Y
を所定ビットずつ下位側から分割して順次得られる部分
数と順次生成される剰余との部分積を順次累算して積X
*Yの数Pによる剰余乗算値を求める剰余乗算装置であ
って、前記数Xの数Pによる剰余を生成する剰余生成手
段と、前記剰余を数Xの代替値として剰余生成手段に再
帰的に剰余を生成させる再帰手段と、数Yを3m(mは
2以上)ビットからなる複数の部分数に分割する分割手
段と、各部分数について、その部分数の上位ビットから
3ビットずつ区切ったm個の3ビット値それぞれが“1
11”であるか否かを判定する判定手段と、判定手段に
より3ビット値が“111”であると判定されたとき、
当該3ビット値の上位隣の3ビット値が“111”と判
定されたことを検出する第1検出手段と、判定手段によ
り3ビット値が“111”であると判定されたとき、当
該3ビット値の下位隣の3ビット値が“111”と判定
されたことを検出する第2検出手段と、判定手段により
3ビットの値が“111”であると判定されたとき、剰
余を2の3乗倍した値と剰余の負の値とを用いて小部分
積を生成する第1生成手段と、第1検出手段による検出
がなされたとき、第1生成手段に剰余の2の3乗した値
を用いずに小部分積を生成させる第1制御手段と、第2
検出手段による検出がなされたとき、第2生成手段に剰
余の負の値を用いずに小部分積を生成させる第2制御手
段と、判定手段により”111”でないと判定された場
合には、剰余と当該3ビット値との積を用いて小部分積
を生成する第2生成手段と、全ての部分数について、第
1生成手段による小部分積と第2生成手段による小部分
積を順次累算する累算手段とを備えてもよい。
【0022】また、本発明の剰余乗算装置は、数Xを初
期値として数Pによる剰余を順次再帰的に生成し、数Y
を所定ビットずつ下位側から分割して順次得られる部分
数と順次生成される剰余との部分積を順次累算して積X
*Yの数Pによる剰余乗算値を求める剰余乗算装置であ
って、前記数Xの数Pによる剰余を生成する剰余生成手
段と、前記剰余を数Xの代替値として剰余生成手段に再
帰的に剰余を生成させる再帰手段と、乗数を3m(mは
2以上)ビットからなる複数の部分数に分割する分割手
段と、各部分数について、その部分数の上位ビットから
3ビットずつ区切ったm個の3ビット値それぞれが”1
11”であるか否かを判定するm個の判定手段と、2つ
以上の互いに隣り合う判定手段であって、かつ、何れ
も”111”であると判定した判定手段群を検出する検
出手段と、各判定手段に対応して設けられ、各判定手段
により”111”であると判定された場合には、剰余の
2の3乗倍した値と剰余の負の値とを用いて小部分積を
生成するm個の第1生成手段と、検出手段により判定手
段群が検出された場合には、その判定手段群のうち最上
位の判定手段以外の判定手段群中の判定手段に対応する
第1生成手段による部分積の生成を停止させる停止手段
と、各第1判定手段に対応して設けられ、第1判定手段
により“111”でないと判定された場合には、剰余と
当該3ビット値との積を用いて小部分積を生成するm個
の第2生成手段と、全ての部分数についてm個の第1生
成手段による小部分積とm個の第2生成手段による小部
分積とを順次累算する累算手段とから構成してもよい。
【0023】また、前記剰余乗算装置は、前記停止手段
の代りに検出手段により判定手段群が検出された場合に
は、当該判定手段群のうち最上位の判定手段に対応する
第1生成手段に剰余の負の値の生成を停止させ、当該判
定手段群のうち最上位の判定手段を除く何れか1つの判
定手段に対応する第1生成手段に剰余の2の3乗の値の
生成を停止させる第1停止手段と、検出手段により判定
手段群が検出された場合には、その判定手段群のうち最
上位の判定手段と前記何れか1つの判定手段とを除く判
定手段群中の判定手段に対応する第1生成手段による小
部分積の生成を停止させる第2停止手段とを備えてもよ
い。
【0024】
【発明の実施の形態】(第1実施形態)以下、本発明に
係る実施の形態について、図面を用いて説明する。図1
は、本発明に係る第1の実施形態における乗算装置の構
成図である。本実施形態における乗算装置は、2進数n
ビットの被乗数Xと2進数3ビットの乗数Yとが入力さ
れると、積X*Yを出力する。なお、ここで被乗数X及
び乗数Yを2進数であらわす場合、()2を用いて
【数1】
【数2】 と表記する。また、乗数Yの各ビットを区別して表わす
場合、最上位ビットをy[2]、その次のビットをy[1]、最
下位ビットをy[0]と表わす。
【0025】本乗算装置は、シフタ101〜103、演
算値選択器104、加算器105から構成される。シフ
タ101は、被乗数Xが入力されると被乗数Xを左方向
に1ビットシフトして最下位ビットに0を埋めた(n+1)
ビット幅のデータを演算値選択器104に出力する。
【0026】シフタ102は、被乗数Xが入力されると
被乗数Xを左方向に2ビットシフトして下位2ビットに
0を埋めた(n+2)ビット幅のデータを演算選択器104
に出力する。ここでシフタ101〜102について説明
する。
【0027】今、nビットの被乗数Xと3ビットの乗数
Yの積X*Yを展開すると、
【数3】 と表わされる。すなわち、積X*Yを求めるには、Xを
2ビット桁上げさせた値X*2と、Xを1ビット桁上
げさせた値X*2とXとを用意しておき、それぞれの
値にYの各ビットy[2]、y[1]、y[0]をそれぞれ掛け合わ
せることによってできる部分積を加算すればよい。
【0028】そのためシフタ101及び102は、シフ
トさせることにより、積X*Yの部分積となる可能性の
あるX*2及びX*2を生成して演算値選択器104
へ出力する役割を担っている。同じく部分積となる可能
性のあるX*20については、図1の100を通じて乗数
Xをそのまま演算値選択器104に入力すればよい。以
下、第1実施形態においては、積X*Yの部分積となる
可能性のある値のことを部分積候補と呼ぶ。
【0029】シフタ103は、被乗数Xが入力されると
被乗数Xを左方向に3ビットシフトして下位3ビットに
0を埋めた(n+3)ビット幅のデータを演算値選択器10
4に出力する。シフタ103は、乗数Yが(y[2]y[1]y
[0])2=(111)2である場合に利用される。すなわち、
(111)2=(1000)2-(1)2と変形できるので、この式を用い
て積X*Yを展開すると
【数4】 上式のうち、−Xは、Xの0と1とを反転させたXの反
転値(1の補数)と1を加えることにより生成される値
と同値なので、(数4)は(数5)のように表わすこと
ができる。
【数5】
【0030】これより、乗数Yが(111)2の場合、積X*
YはXを3ビット桁上げした値X*2 とXの1の補数
と1とを生成してこれらを加え合わせればよい。そのた
めシフタ103は、乗数Yが(111)2であるときに用いら
れるように(数4)におけるX*2を生成して演算値
選択器104に出力する役割を担っている。(数5)に
おけるXの1の補数と1については、演算値選択器10
4により生成される。
【0031】演算値選択器104は、入力端子I0から
入力される被乗数Xの1の補数(つまりXの反転値)を
生成する反転回路を有し、入力端子Sに入力される乗数
Yが(111)2である場合には、入力端子I3から入力され
るX*2と、反転回路により生成される被乗数Xの1
の補数と、1とを、出力端子O1、O0、Fから加算器
105へ出力し、乗数Yが(111)2以外である場合には、
部分積候補として入力端子Zに入力される0、I0〜I
2に入力されたX及び桁上げ後の各被乗数(X*2
X*2)を、乗数Yに応じて選択して出力端子O1、
O0、Fから部分積として加算器105へ出力する。図
2は、演算値選択器104における入出力制御論理を示
す真理値表である。
【0032】同図は、あらゆる値の乗数(y[2]y[1]y[0])
2に対して、演算値選択器104の出力端子O1、O
0、Fの出力値を表わしている。例えば、(y[2]y[1]y
[0])2=(001)2の場合、演算値選択器104は、出力端子
O1からは入力端子Zより入力される0を出力し、出力
端子O0からは入力端子I0より入力される被乗数Xを
出力し、出力端子Fからは0を出力することがわかる。
なお、同図において201は入力端子I0から入力され
る値を反転させた反転値を示している。
【0033】同図において、乗数(y[2]y[1]y[0])2が(11
1)2であるとき、演算値選択器104は、入力端子I3
から入力される値X*2と入力端子I0から入力され
る値Xを反転させたXの反転値とをそれぞれ出力端子O
1、O0から加算器105へ出力し、出力端子Fからキ
ャリ入力として1を加算器105へ出力する。これは、
(数6)において説明したとおりである。乗数(y[2]y
[1]y[0])2が(111)2ではないとき、演算値選択器104
は、図2の真理値表に示す通り、y[i]=1であるビット
に対応する入力端子を選択して、その入力値を加算器1
05へ出力する。
【0034】例えば乗数(y[2]y[1]y[0])2が(101)2のと
き、この値を(数4)に代入すると、
【数6】 となる。この例においては、乗数Yはy[2]及びy[0]が1
であるから、それらに対応するX*2とX*2とを加
算すれば、積X*Yが求められる。そこで演算値選択器
104は、それらのビットに対応する入力端子I2及び
I0を選択して、その入力値であるX*2及びXをそ
れぞれO1及びO0から加算器105へ出力する。
【0035】この例からわかるように(数4)は、各項
と乗数Yの各ビットが対応しているので、積X*Yを求
めるには乗数Yの各ビットのうち値が1のビットに対応
する項を加算すればよい。すなわち、演算値選択器10
4は、y[i]=1のとき、X*2iが入力される入力端子を
選択して出力端子O1とO0のいずれかから加算器10
5へ出力する。
【0036】乗数Yが(111)2以外の乗数Yは、y[i]=1と
なるビットが0〜2個なので、演算値選択器104が出
力する部分積の出力数も0〜2個である。そのため乗数
Yが(111)2でないとき演算値選択器104は、部分積を
出力する必要のない出力端子からは、入力端子Zより入
力される0を加算器105へ出力する。
【0037】演算値選択器104は、図2の入出力制御
論理を実現させるため、図3に示すように、反転回路3
01と、セレクタ302と、セレクタ303と、制御回
路304とから構成される。反転回路301は、I0か
ら入力される被乗数Xを反転させたXの反転値を生成し
てセレクタ303へ出力する。
【0038】セレクタ302は、制御回路304からの
制御信号に基づいて、入力端子I1〜I3及び入力端子
Zのうちから1つを選択して、選択した入力端子からの
入力値を出力端子O1より加算器105へ出力する。セ
レクタ303は、制御回路304からの制御信号に基づ
いて、入力端子I0、I1及び入力端子Z及びI0の反
転値が入力される入力端子(以下、この入力端子をI
0’と表わす)のうちから1つを選択して、選択した入
力端子からの入力値を出力端子O0より加算器105へ
出力する。
【0039】制御回路304は、乗数Yが入力される
と、その値に応じてセレクタ302及びセレクタ303
による入力端子の選択を制御する制御信号S1及び制御
信号S0をそれぞれセレクタ302及びセレクタ303
へ出力する。乗数Yの値に対する制御信号S1、S0の
出力は、図2の入出力制御論理に対応している。制御信
号S1は、セレクタ302が入力端子I3〜I1及び入
力端子Zの中からいずれか1つの入力端子を選択して、
その入力値を出力端子O1から加算器105へ出力する
よう指示する信号である。
【0040】また、制御信号S0は、セレクタ303が
入力端子I1、I0及び入力端子Z及び入力端子I0’
の中からいずれか1つの入力端子を選択して、その入力
値を出力端子O0から加算器105へ出力するよう指示
する信号である。詳しく説明すると制御回路304は乗
数Yの全ビットが1のとき、すなわち(y[2]y[1]y[0])2=
(111)2のとき、セレクタ302に入力端子I3から入力
されるX*2を出力値として選択するよう制御信号S1
による指示を与え、セレクタ303にI0’から入力さ
れるXの反転値を出力値として選択するよう制御信号S
0による指示を与える。それとともに制御回路304
は、出力端子Fから加算器105へキャリ入力として1
を出力する。
【0041】また、制御回路304は乗数Yの全ビット
が1ではないとき、すなわち(y[2]y[1]y[0])2=111では
ないとき、y[2]=1ならば入力端子I2から入力されるX
*2を、y[1]=1ならば入力端子I1から入力されるX*21
を、y[0]=1ならば入力端子I0から入力されるXを、出
力値として選択するようセレクタ302、303に制御
信号S1、S0による指示を与える。
【0042】加算器105は、演算値選択器104の出
力端子O1及びO0及びFから入力される値を加算す
る。この加算結果が積X*Yとなる。以上のようにし
て、乗数Yが(111)2のとき、積X*Yの演算が(数8)
となるような構成にしているので、従来X*22+X*21+X*20
の加算を行っていたのに対して加算器105の負荷が軽
減される。 (第2実施形態)
【0043】以下、本発明の第2実施形態における剰余
乗算装置について、図面を用いて説明する。本実施形態
の剰余乗算装置は、楕円曲線暗号の演算などに用いられ
るための装置で、161ビット以下の被乗数Xと161
ビット以下の乗数Yとの積X*YのPによる剰余X*Ym
odPを算出する。ここでPは2の160乗から2の5
4乗以下の値αを引いた素数とする。
【0044】本実施形態においては、被乗数Xや乗数Y
を2進表記する場合、第1実施形態と同様()2を用いて
【数7】 とする。
【0045】なお、本実施形態の剰余乗算装置は、(X*
Y)modPを、((XmodP)*Y)modPに変形した演算式に
基づいて構成される。より詳しくは、乗数Yを9ビット
ずつ18個の部分乗数Y’(m)(1<=m<=18)に分割し、Xm
odPと部分乗数Y’(m)と部分乗数Y’(m)の桁上げ分2
(m-1)*9とを加え合わせてできる部分積(XmodP)*Y’
(m)*2(m-1)*9の累算によって(XmodP)*Yを求めるよ
う構成される。つまり、Y’(m)を
【数8】 とすると、(XmodP)*Yは、
【数9】 となる。またさらに本剰余乗算装置は、(数10)に示
すようにXを2(m-1)*9桁上げすることによって、部分
乗数Y’(m)の桁上げ分2(m-1)*9の代りを行う。
【数10】 このとき、本剰余乗算装置は、Xの桁上げによる桁溢れ
を防ぐために、(数10)の(X*2(m-1)*9)modPをX*
(29modP)m-1に置き換えて演算を行っている。以上をま
とめると、本剰余乗算装置は、(X*Y)modPを求めるた
めに(数11)に示す演算を行うよう構成される。
【数11】 (数11)に沿って、本剰余乗算装置の処理の流れを簡
単に説明すると、まず、剰余乗算装置は、まずX*(29mo
dP)m-1とY’(m)を別々に生成して、次にそれらの部分
積X*((29modP)m-1)modP*Y’(m)を求め、求めた部分
積を累算するという一連の処理(以下、ループ処理と呼
ぶ)をm=1,2,...17,18について行い、最後に累算値の
Pによる剰余を算出する処理(以下、累算値剰余処理と
呼ぶ)を行う。
【0046】ただし、本剰余乗算装置の構成において、
X*(29modP)m-1を生成する処理は、2倍する処理
(以下、桁上げ処理と呼ぶ)とPによる剰余をとる処理
(以下、剰余演算処理と呼ぶ)の2段階の処理によって
行われている。具体的には、X*(29modP)m-1をR(m)と
おくと、m=1のときR(1)=Xとなるので、本剰余乗
算装置は、桁上げ処理も剰余演算処理も行わない。m=
2のとき、R(2)=X*29modPとなり、本剰余乗算装置
は、Xについて桁上げ処理を行ってから剰余乗算処理を
行う。m=3のとき、R(3)=R(2)*29modPとなり、本
剰余乗算装置は、m=2のとき算出したR(2)について
桁上げ処理を行ってから剰余演算処理を行う。このよう
にして、本剰余乗算装置は、桁上げ処理と剰余乗算処理
を18回繰り返す。
【0047】また、本剰余乗算装置の構成において、部
分積を求める処理は、部分積を1つ出力する処理ではな
く、加え合わせることで部分積と同値になるような複数
の演算値を出力する処理である。それにともない、累算
処理においては、部分積を累算するのではなく、複数の
演算値を累算する処理が行われる。
【0048】ここで複数の演算値について説明すると、
本剰余乗算装置においては部分乗数Y’(m)が(11111111
1)、(111111###)、(###111111)、(---###111)、(###111
###)、(111###---)のように1が連続する数字列を含む
場合(ここで、###は111以外の数字列、---は任意の数
字列を表わす)に、第1実施形態のY=(111)2の場合と
同様、出力される演算値が少なくなるよう工夫されてい
る。
【0049】以下からは、本実施形態における剰余乗算
装置の構成を(数9)と図面を用いて説明する。図4は
第2実施形態における剰余乗算装置の概略構成を示すブ
ロック図である。同図において、剰余乗算装置は、剰余
演算部401と、乗数分割部402と、部分積演算部4
03と、累算部404とから構成される。剰余演算部4
01は、部分積演算部403によって桁上げ処理がなさ
れた値について剰余演算処理を行い、部分積演算部40
3へ出力する。
【0050】詳しくは、剰余演算部401は、最初に初
期値として入力された被乗数X(=R(1))をそのまま
部分積演算部403へ出力する。次に剰余演算部401
は、部分積演算部403より被乗数Xを2倍された1
70ビットの値X*2が戻されるので、その値のPに
よる剰余(X*2)modP(=R(2))を算出して部
分積演算部403へ出力する。さらに剰余演算部401
は、部分積演算部403から(X*2)modPを9ビ
ット左へシフトさせた170ビットの値((X*2)mo
dP)*2が入力されるので、その値のPによる剰余
((X*2)modP)*2)modP(=R(3))を算出
して部分積演算部403へ出力する。
【0051】以上のようにして、剰余演算部401は、
部分積演算部403によって桁上げ処理された値を順次
受け取って、その度に受け取った値のPによる剰余R
(m)を部分積演算部403へ出力する。剰余乗算部40
1のm-1回目の出力R(m-1)と、m回目の出力R(m)との関
係を示すと以下のようになる。
【数12】
【0052】その他、剰余演算部401は、累算部40
4より入力される値のPによる剰余を算出する累算値剰
余処理を行い、その値を剰余乗算装置の演算結果である
(X*Y)modPとして外部へ出力する。乗数分割部40
2は、乗数Yの部分乗数Y’(m)を順次生成して部分積
演算部403へ出力する。
【0053】詳しくは、乗数分割部402は、初期値と
して乗数Yが入力されると、その最下位ビットから9ビ
ット分のビット列Y’(1)=(y[8]y[7]y...y[1]y[0])を
部分積演算部403へ出力する。次に、乗数分割部40
2は、次の9ビット分のビット列Y’(2)=(y[17]y[16]
y...y[10]y[9])を部分積演算部403へ出力する。この
ようにして乗数分割部402は、順次部分乗数Y’(m)
を部分積演算部403へ出力する。
【0054】乗数分割部403のm回目の出力Y’(m)
は、以下の式で表わされる。
【数13】 部分積演算部403は、剰余演算部401より入力され
る剰余R(m)と乗数分割部402より入力される部分乗
数Y’(m)とに基づいて、複数の演算値を出力する。こ
れら複数の演算値は加え合わせることにより、積R(m)*
Y’(m)となる値である。
【0055】詳しくは、部分積演算部403は、まず剰
余演算部401よりR(m)が入力されると、R(m)*29、R
(m)*28、R(m)*27、R(m)*26、R(m)*25、R(m)*24、R(m)*2
3、R(m)*22、R(m)*21を生成し、また内部の反転器を用
いてR(m)*26の反転値、R(m)*2 3の反転値、R(m)の反転
値を生成する。これらとR(m)は演算値の候補となる値
であり、以下、これらとR(m)とを合わせて演算値候補
と呼ぶ。
【0056】次に、部分積演算部403は、乗数分割部
402より入力される部分乗数Y’(m)に基づいて、先
に生成した演算値候補の中から演算値をいくつか選択し
て累算部404へ出力する。
【0057】演算値の選択について詳しく説明するため
に、今、乗数分割部403より入力される部分乗数Y’
(m)を
【数14】 とする。すると、通常、部分積演算部403は、i=1,
2,...8について部分乗数Y’(m)の各ビットym[i]の値が
1のとき演算値候補の中から対応するR(m)*2iを演算値
として選択し、累算部404へ出力する。ただし、部分
乗数Y(m)が(111111111)、(111111###)、(###111111)、
(---###111)、(###111###)、(111###---)である場合、
部分積演算部403が選択する演算値は、1が連続する
部分についてはこれに限らず、異なる選択を行う。具体
的に、部分積演算部403は、Y’(m)=(111111111)の
場合、R(m)*2とR(m)の反転値とを演算値として選択
し、(111111###)のとき、R(m)*2とR(m)*2の反転値
とを演算値として選択し、(###111111)のとき、R(m)*2
とR(m)の反転値とを演算値として選択し、(---###11
1)のとき、R(m)*2とR(m)の反転値とを演算値として
選択し、(###111###) のとき、R(m)*2とR(m)*2の反
転値とを演算値として選択し、(111###---)のとき、R
(m)*2 とR(m)*2の反転値とを演算値として選択し、
累算部404へ出力する。さらに部分積演算部403は
それぞれの場合について1を演算値として累算部404
へ出力する。
【0058】ここで、上記部分乗数Y’(m)中の###は11
1以外の3ビットの数字列、---は3ビットの任意の数字
列であるが、この部分については通常の場合と同様ym
[i]が1のときR(m)*2iを演算値として選択し、累算部
404へ出力する。累算部404は、部分積演算部40
3より複数の演算値が入力される度に、順次内部のレジ
スタに累算する。さらに累算部404は、1回の累算ご
とに、レジスタの桁溢れを防ぐために、累算値を補正し
て次の累算に備える。この補正については後に詳しく説
明する。
【0059】累算部404のm回目の累算結果O(m)を
式に表わすと以下のようになる。
【数15】 ここで、O’(m-1)は、(m-1)回目の累算結果O(m-1)を
補正した値を示す。累算部404は、累算が全て終わる
と、累算結果の補正を行ってから剰余演算部401へ補
正した累算結果を出力する。これは、剰余演算部401
に累算結果のPによる剰余を算出させることで、累算部
404の出力結果Oの値を161ビット以下に調節する
ためである。
【0060】図5は、本実施形態における剰余乗算装置
全体の処理の流れを示すフローチャートである。まず剰
余乗算装置の剰余演算部401と乗数分割部402と累
算部404は、初期値設定処理において、剰余分割部4
01は初期値として被乗数Xが、乗数分割部402は初
期値として乗数Yが、累算部404は累算用の初期値と
して0が、それぞれ入力される(S501)。 (一回目のループ)
【0061】初期値の設定が終わると、剰余演算部40
1は、被乗数XをXのPによる剰余R(1)として部分
積演算部403へ出力し、乗数分割部402は、乗数Y
の下位9ビットからなる部分乗数Y’(1)を部分積演
算部403へ出力する(S502)。
【0062】被乗数Xと部分乗数Y’(m)が入力された
部分積演算部403は、複数の演算値を累算部404へ
出力し、また、被乗数Xをを剰余演算部401へ出力
し、またR(2)を2した値を剰余演算部401へ出
力する(S503)。複数の演算値が入力された累算部
404は、それら複数の演算値を加え合わせて、初期値
の0に累算する(S504)。(2回目のループ)
【0063】剰余演算部401は、部分積演算部403
よりX*2が入力されると、その値のPによる剰余R
(2)=X*2modPを部分積演算部403へ算出
し、乗数分割部402は、乗数Yの下位から数えて10
〜18ビット目までの9ビット分の部分乗数Y’(2)
を部分積演算部403へ出力する(S502)。
【0064】部分積演算部403は、剰余R(2)と部
分乗数Y’(2)が入力されると、積R(2)*Y’
(2)を算出するための複数の演算値を累算部404へ
出力する(S503)。累算部404は、部分積演算部
403より複数の演算値が入力されると、それらを加え
合わせることによって積R(2)*Y’(2)を計算し
ながら積R(2)*Y’(2)を1回目のループ時の累
算値に累算する(S504)。
【0065】(3回目のループ以降)ループが18回目
になるまで、2回目のループと同じ処理を繰り返して、
S502〜S504におけるループ処理を終える。累算
部404は、ループ処理後の累算値が正になるように補
正を行って、剰余演算部401へ累算値を出力する(S
505)。
【0066】累算部404より累算値が入力された剰余
演算部401は、累算値のPによる剰余をとることによ
り、ビット数を161ビットに補正し、その補正された
値を結果として外部へ出力する(S506)。以上、本
実施形態の剰余乗算装置全体の流れをフローチャートに
より示した。以下からは、剰余乗算装置の各構成要素の
詳細な構成について図を用いて説明する。
【0067】図6は、図4のブロック図における剰余演
算部401の詳細な構成を示すブロック図である。同図
において、剰余演算部401は、セレクタ601、60
2、603と、p−ROMテーブル604と、加算器6
05とから構成される。セレクタ601は、被乗数X
と、加算器605より入力される値とのいずれか一方を
選択して部分積演算部403へ出力するセレクタであ
る。
【0068】詳しくは、セレクタ601は、最初、図5
のS501の初期値設定によって被乗数Xが入力される
と、被乗数Xを演算値選択部403へ出力する。その
後、セレクタ601は、図5のS502〜504による
ループの間、加算器605より順次入力される剰余を部
分積演算部403へ出力する。セレクタ602は、図5
のS502〜504のループ中は部分積演算部403か
ら入力される170ビットのうち上位10ビット分をp
−ROMテーブル604へ出力し、S506の剰余演算
による補正処理のときは累算部404より入力される1
70ビットのうち上位10ビット分をp−ROMテーブ
ル604へ出力する。
【0069】セレクタ603は、図5のS502〜50
4のループ中は、演算値選択部403から入力される1
70ビットのうち下位160ビット分を加算器605へ
出力し、図5のS506のときは、累算部404より入
力される170ビットのうち下位160ビット分を加算
器605へ出力する。
【0070】p−ROMテーブル604は、セレクタ6
02からの入力の度に、セレクタ602より入力される
上位10ビットを2160した値のPによる剰余を加算
器605へ出力する。剰余を出力するためにp−ROM
テーブル604は、図7に示すような、あらゆる10ビ
ットの入力値に対して、入力値の2の160乗倍した値
のPによる剰余を対応させたROMテーブルを予め記憶
し、入力値とそのROMテーブルとを照合することによ
って、対応する剰余値を加算器605へ出力する。
【0071】加算器605は、p−ROMテーブル60
4からの入力とセレクタ603からの入力を加算するこ
とによって選られた161ビットの値をセレクタ601
へ出力する。この加算値が部分積選択部403あるいは
累算部404より入力される170ビットの入力値のP
による剰余値である。以上に説明した、セレクタ60
2、603、p−ROMテーブル604、加算器605
からなる部分によって、入力された値の剰余が求められ
る。
【0072】図8は、図4のブロック図における乗数分
割部402の詳細を示すブロック図である。同図におい
て、乗数分割部402は、セレクタ801と、レジスタ
802と、9ビット右シフタ803とから構成される。
【0073】セレクタ801は、初期値として入力され
る乗数Yと9ビット右シフタ803からの入力値とのい
ずれか一方を選択してレジスタ802へ出力する。詳し
くは、セレクタ801は、最初の1回のみ図5のS50
1の初期値設定時に入力される乗数Yを選択してレジス
タ802へ出力し、その後はS502〜504のループ
中は順次9ビット右シフタ803より入力される値をレ
ジスタ802へ出力する。
【0074】レジスタ802は、セレクタ801より値
が順次入力される度にレジスタ802の値を更新しなが
らその値を保持し、保持している値の下位9ビットの値
を部分積演算部403へ出力する。それと同時にレジス
タ802は、保持している値を9ビット右シフタ803
へ出力する。9ビット右シフタ803は、レジスタ80
2より順次入力される161ビットの値を右方向に9ビ
ットシフトさせてセレクタ801へ出力する。
【0075】以上のような構成によって乗数分割部40
2は、乗数の下位から9ビットずつを部分積演算部40
3へ出力する。図9は、図4のブロック図における部分
積演算部403の詳細な構成を示すブロック図である。
本実施形態において部分積演算部403は、剰余演算部
401からの剰余Rと乗数分割部402からの9ビット
の部分乗数Y’(m)とが入力されると、累算部404に
おける加算の対象となる複数の演算値を出力する。これ
ら複数の演算値は、加え合わせることにより剰余R(m)
と部分乗数Y’(m)とからなる積R(m)*Y’(m)となる値
である。
【0076】同図において、部分積演算部403は、シ
フタ部51及び演算値選択部52から構成される。シフ
タ部51は、剰余演算部401より入力される剰余R
(m)に基づいて演算値となる可能性のある9個の演算値
候補R(m)*2、R(m)*2、R(m)*2、R(m)*2
R(m)*2、R(m)*2、R(m)*2、R(m)*2、R
(m)*2を生成して演算値選択部52へ出力する。ま
た、シフタ部51は、生成したR(m)*2 を剰余演算部
401へ出力する。
【0077】演算値候補を生成するため、シフタ部51
はシフタ501〜509を備える。シフタ501〜50
9は、剰余演算部401より入力される剰余R(m)につ
いて、それぞれ1〜9ビット左方向にシフトさせてそれ
ぞれ下位1〜9ビットに0を埋めて演算値選択部52へ
出力する。
【0078】演算値選択部52は、剰余演算部401か
らの剰余R(m)と、シフタ部51からの9個の演算値候
補と、0とが入力されると、積R(m)*Y’(m)を求める
ために必要となる複数の演算値を累算部404に出力す
る。このため演算値選択部52は、演算値選択器510
〜512と、論理和演算器513とから構成される。
【0079】演算値選択器510〜512は、乗数分割
部402より入力される部分乗数Y’(m)の値に応じて
演算値の出力を行う。演算値選択器510〜512によ
る入出力制御論理をまとめた表をそれぞれ図10(a)〜
(c)に示す。なお、同図において「‐」は任意の1ビッ
トの値を表わし、連続する「###」は数字列111以外の任
意の数字列を表わすものとする。
【0080】同図(a)〜(c)において、901〜903に
示す部分の入出力制御論理は、第1実施形態の演算値選
択器104において、入力される乗数Yが(111)2以外の
場合の入出力制御論理と同様である。すなわち、演算値
選択器510〜512は、以下に示す式の各項〜を
それぞれ分担して行っている。
【数16】
【0081】また、同図(a)〜(c)において、904〜9
06に示す部分の入出力制御論理は、第1の実施形態の
演算値選択器104において、入力される乗数Yが(11
1)の場合の入出力制御論理と同様である。すなわち、
演算値選択器510の場合において説明すると、部分乗
数Y’(m)の(ym[8]ym[7]ym[6])の数字列が(111)であ
って、かつ、(ym[5]ym[4]ym[3])の数字列が(111)で
ないとき、上式の部分は、(数5)を用いて展開する
とR(m)*29−R(m)*26とすることができる。よって、演
算値選択器510は、入力端子I3から入力されるR
(m)*29を出力端子O1から累算器404へ出力して、入
力端子I0から入力されるR(m)*26を反転させて1の補
数にしたR(m)*26の反転値(1の補数)を出力端子O0
から累算器404へ出力して、さらに1の補数を2の補
数にするための1を出力端子Fから累算器404へ出力
する。
【0082】同様に、演算値選択器511は、(ym[5]ym
[4]ym[3])の数字列が(111)であって、(ym[8]ym[7]ym
[6])及び(ym[2]ym[1]ym[0])の数字列が(111)ではな
いとき、出力端子O1、O0及びFからR(m)*26、R
(m)*2の反転値及び1を出力する。また、演算値選択
器512においても、(ym[2]ym[1]ym[0])の数字列が(1
11)であって、(ym[5]ym[4]ym[3])の数字列が(111)
ではないとき、出力端子O1、O0及びFからR(m)*2
、R(m)の反転値及び1を出力する。
【0083】このようにして(ym[8]ym[7]ym[6])、(ym
[5]ym[4]ym[3])、(ym[2]ym[1]ym[0])の数字列が(11
1)のときは、第1実施形態と同様累算部404におけ
る加算の負荷が軽減される。以上が、演算値選択器51
0〜512の第1実施形態の演算値選択器104と同様
の入出力制御論理部分の説明である。
【0084】以下からは、演算値選択器510〜512
における演算値選択器104と異なる入出力制御論理部
分について、部分乗数Y’(m)が(111111111)と、(11111
1###)と、(###111111)との場合に分けて説明する。な
お、###で表わされる数字列は(111)以外の数字列である
ものとする。
【0085】Y’(m)=(111111111)の場合、(11111111
1)=(1000000000)-(1)と変形することができるので、積
R(m)*Y’(m)は、
【数17】 と展開でき、積R(m)*Y’(m)を求めるには、R(m)の2
倍とR(m)の負の値とを加え合わせればよいことがわ
かる。そこで、演算値選択部52は、演算値選択器51
0がシフタ509より入力されるR(m)*2を演算値選
択器510の出力端子O1から累算部404へ出力し、
演算値選択器512が剰余演算部401より入力される
剰余R(m)を反転させたR(m)の反転値を生成して演算値
選択器512の出力端子O0から累算部404へ出力
し、また、R(m)の反転値を2の補数にするための1を
演算値選択器512の出力端子Fから累算部404へ出
力する。
【0086】Y’(m)=(111111###)の場合、(100000000
0)-(1000)+(###)と変形することができるので、積R(m)
*Y’(m)は、
【数18】 と展開でき、積R(m)*Y’(m)を求めるには、R(m)の2
倍と−R(m)の2倍とR(m)*(###)とを加え合わせれ
ばよいことがわかる。そこで、演算値選択部52は、演
算値選択器510がシフタ509より入力されるR(m)*
を演算値選択器510の出力端子O1から累算部4
04へ出力し、演算値選択器511がシフタ503より
入力されるR(m)*2を反転させたR(m)*2の反転値
を演算値選択器511の出力端子O0から累算部404
へ出力し、また、R(m)*2の反転値を2の補数にする
ための1を演算値選択器511の出力端子O0から累算
部404へ出力し、演算値選択器512がR(m)*(###)
を累算部404へ出力する。
【0087】Y’(m)=(###111111)の場合も同様にし
て、演算値選択器510がR(m)*(###)*2を累算部4
04へ出力し、演算値選択器511が、R(m)*2を演
算値選択器511の出力端子O1から累算部404へ出
力し、演算値選択器512が、R(m)を反転させたR(m)
の反転値を演算値選択器512の出力端子O0から累算
部404へ出力し、R(m)の反転値を2の補数にするた
めの1を演算値選択器512の出力端子Fから累算部4
04へ出力する。
【0088】以上から明らかなように、演算値選択部5
2は部分乗数Y’(m)が(111111111)、(111111###)、(##
#111111)、(---###111)、(###111###)、(111###---)の
ように1が連続する数字列を含む場合、その1が連続す
る数字列部分に必要な演算値の出力数が3つになるの
で、累算部404における入力数の規模を小さくするこ
とができる。
【0089】論理和演算器513は、演算値選択器51
1の出力端子Fからの入力と、演算値選択器512の出
力端子Fからの入力との論理和を出力する。図10(b)
(c)から明らかなように、演算値選択器511のFと演
算値選択器511のFとが両方とも同時に1とはならな
いことを利用して、論理和演算器513は、2つの入力
を1つにまとめて累算部404への出力を1つにしてい
る。これによりさらに累算部404への入力数を減らし
ている。
【0090】図11は、累算部404のより詳細な構成
を示すブロック図である。同図において、累算部404
は、部分積演算部403より入力される演算値を加え合
わせて剰余R(m)と部分乗数Y’(m)との部分積R(m)*
Y’(m)を求めて、順次求められる部分積R(m)*Y’(m)
を累算する。全ての部分積R(m)*Y’(m)の累算が終わ
ると剰余演算部401へ出力する。
【0091】上記を実施するため、本実施形態の累算部
404は、加算器701と、加算器702と、レジスタ
703と、セレクタ704と、加算器705とから構成
される。加算器701は、演算値選択器510より入力
される3つの値と、演算値選択器511の出力端子O1
より入力される値とをすべて加算して加算器705へ出
力する。
【0092】加算器702は、演算値選択器511の出
力端子O0及びFより入力される値と、演算値選択器5
12より入力される3つの値とをすべて加算して加算器
705へ出力する。加算器705は、加算した値を保持
するためのレジスタを持ち、加算器701と、702
と、セレクタ704とから順次入力される値を累算す
る。
【0093】レジスタ703は、除数Pを1022倍し
た定数を保持しており、定数選択器704へ前記定数を
出力する。この定数は、後述する加算器705におい
て、加算された値を補正するためのものである。定数選
択器704は、レジスタ703より入力される定数と、
レジスタ703より反転器を介すことによって反転され
た定数と、0とが入力されると、加算器705のレジス
タの累算値に応じて、それら3値のうちから1つを選択
して加算器705へ出力する。詳しく説明すると定数選
択器704は、図5のS502〜504のループ中、加
算器705の累算値が正または0の場合に定数の反転値
を選択し、累算値が負の場合に0を選択する。この選択
された値が加算器705で累算値に加算されることによ
って、定数選択器704は、累算値を整数Pの−102
2倍から1022倍までの間におさえる働きをしてい
る。
【0094】また、定数選択器704は、図5のS50
2〜504のループが終了したとき、加算器705内部
のレジスタの累算値が負の場合に定数を選択し、正のと
きは0を選択する。選択された値が加算器705で加算
されることによって、定数選択器704は、加算器70
5から剰余演算部401へ出力される累算値が必ず正の
値になるようにしている。
【0095】以上のようにして本発明は、Y’(m)が(11
1111111)、(111111###)、(###111111)、(---###111)、
(###111###)、(111###---)のとき、部分積演算部403
から累算部404へ出力される演算値が少なくなるよう
に工夫がなされているため、累算部404における入力
数が従来に比べて少なくてすみ、累算部404の加算器
701、702にかかる負荷が軽減される。
【0096】なお、第2実施形態の剰余演算部401
は、p−ROMテーブル604を1つ有し、このテーブ
ルによって、剰余演算部401に入力される170ビッ
トの値のうち、170〜161ビットの部分についての
剰余を求めていた。しかし、p−ROMテーブルを1つ
に限る必要はなく、例えば以下のような構成にしてもよ
い。
【0097】図12は、第2実施形態における剰余演算
部401の代替となる剰余演算部の構成を示すブロック
図である。同図において剰余演算部は、セレクタ60
1、1201、1202、603、p−ROMテーブル
1203、1204、加算器1205から構成される。
これらのうち、図6の剰余演算部401と同じ符号の構
成要素は、同じものであるので説明を省略し、以下異な
る構成要素について説明する。
【0098】セレクタ1201は、図5のS502〜5
04のループ中は部分積演算部403から入力される1
70ビットのうち下位から数えて170〜166ビット
目の5ビット分をp−ROMテーブル1203へ出力
し、S506の剰余演算による補正処理のときは累算部
404より入力される170ビットのうち下位から数え
て170〜166ビット目の5ビット分をp−ROMテ
ーブル1203へ出力する。
【0099】セレクタ1202は、図5のS502〜5
04のループ中は部分積演算部403から入力される1
70ビットのうち下位から数えて165〜161ビット
目の5ビット分をp−ROMテーブル1204へ出力
し、S506の剰余演算による補正処理のときは累算部
404より入力される170ビットのうち下位から数え
て165〜161ビット目の5ビット分をp−ROMテ
ーブル1204へ出力する。
【0100】p−ROMテーブル1203は、セレクタ
1201より入力される5ビットの値を2165した値
のPによる剰余を加算器1205へ出力する。剰余を出
力するためにp−ROMテーブル1203は、あらゆる
5ビットの入力値に対して、入力値の2165した値の
Pによる剰余を対応させたROMテーブルを予め記憶
し、入力値とそのROMテーブルとを照合することによ
って、対応する剰余を加算器1205へ出力する。
【0101】p−ROMテーブル1204は、セレクタ
1202より入力される5ビットの値を2160した値
のPによる剰余を加算器1205へ出力する。剰余を出
力するためにp−ROMテーブル1204は、あらゆる
5ビットの入力値に対して、入力値の2160した値の
Pによる剰余を対応させたROMテーブルを予め記憶
し、入力値とそのROMテーブルとを照合することによ
って、対応する剰余を加算器1205へ出力する。
【0102】加算器1205は、p−ROMテーブル1
203、1204及びセレクタ603より入力される値
を加算することによって選られる161ビットの値をセ
レクタ601へ出力する。この加算値が部分積演算部4
03あるいは累算部404より入力される170ビット
の入力値のPによる剰余である。
【0103】以上のように、図12における剰余演算部
はp−ROMテーブルを2つ設けることによって、テー
ブルを検索する時間の短縮を図っている。また、第2実
施形態における部分積演算部403の代りに、図13の
ような構成にしてもよい。
【0104】同図において、部分積演算部は、入力され
る部分乗数Y’(m)を3ビット右方向にシフトするシフ
タ1302と、3ビット左方向にシフトする1301を
有する。これらに乗数分割部402より部分乗数Y’
(m)が入力されると、演算値選択器1310には、シフ
タ1302によっ部分乗数Y’(m)の3ビット右シフト
された値が入力され、演算値選択器1312には、シフ
タ1301によって部分乗数Y’(m)の3ビット左シフ
トされた値が入力される。また、演算値選択器1311
には、部分乗数Y’(m)がそのまま入力される。
【0105】演算値選択器1310〜1312は、それ
ぞれ値が入力されると、図14に示す入出力制御論理に
基づいて、入力された値に対応する出力を行う。以上の
ように、第2実施形態の部分積演算部403の演算値選
択器510〜512は、3つともそれぞれ異なる入出力
制御論理によって入出力を行っていたのに対して、図1
3の部分積演算部の演算値選択器1310〜1312は
3つとも同じ入出力制御論理によって入出力を行うこと
ができる。これにより、部分積演算部は3つとも同じ内
部構成の演算値選択器を用いることができる。
【0106】
【発明の効果】本発明にかかる乗算装置は、n(nは3
以上)ビットからなる乗数の全ビットが1であるか否か
を判定する判定手段と、全ビットが1であると判定され
たとき、被乗数の2のn乗倍した値を生成する生成手段
と、全ビットが1であると判定されたとき、被乗数の1
の補数を生成する補数生成手段と、被乗数の2のn乗倍
した値と被乗数の1の補数と定数1とを加算する加算手
段とを備える。
【0107】この構成によれば、nビットの乗数の全ビ
ットが1であると判定されたとき、被乗数の2のn乗倍
した値と被乗数の1の補数とを生成し、それらを加算す
ることにより被乗数と乗数との乗算値を求める。このた
め、従来の技術においては乗数の全ビットが1である場
合、乗数の各ビットと被乗数とを乗算したn個の乗算値
を加算することにより被乗数と乗数との積を求めていた
のに対し、本構成においては、乗数の全ビットが1であ
る場合には、被乗数の2のn乗倍した値と1の補数と1
とを加算することによって被乗数と乗数との積を求める
ことができるので、積を求める際の加算の計算量の規模
と回路の規模とを小さくできるという効果がる。
【0108】また、前記生成手段は、被乗数を左へnビ
ットシフトさせて下位nビット全てに0を入力するシフ
タを用いて構成されるので、被乗数の2のn乗倍した値
をシフタによって簡単に生成することができるという効
果がある。
【0109】また、本発明の乗算装置は、乗数を分割し
て得られる部分乗数と被乗数との部分積を累算して乗算
値を求める乗算装置であって、乗数をn(nは3以上)
ビットからなる複数の部分乗数に分割する分割手段と、
各部分乗数について、部分乗数の全ビットが1であるか
否かを順次判定する判定手段と、全ビットが1であると
判定された場合には、被乗数を2のn乗倍した値と、被
乗数の負の値との和を用いて部分積を生成する第1生成
手段と、全ビットが1であると判定されなかった場合に
は、被乗数と当該部分乗数との積を用いて部分積を生成
する第2生成手段と、第1生成手段による部分積または
第2生成手段による部分積を順次累算する累算手段とを
備える。
【0110】この構成によれば、乗数は分割手段によっ
てnビットの部分乗数に分割され、各部分乗数の全ビッ
トが1である場合には、第1生成手段が被乗数を2のn
乗倍した値と被乗数の負の値との和を用いて部分積を生
成し、各部分乗数の全ビットが1ではない場合には、第
2生成手段が被乗数と部分乗数との積を用いて部分積を
生成し、第1生成手段による部分積または第2生成手段
による部分積を順次累算することによって乗数と被乗数
との乗算値を求める。このため、本乗算装置は、各部分
乗数の全ビットが1である場合には、被乗数を2のn乗
倍した値と被乗数の負の値との加算によって部分積を算
出するので、加算の計算量の規模と回路の規模とを小さ
くできるという効果がある。また、この構成によれば、
nビットの各部分乗数と被乗数との部分積の加算によっ
て積を求めているので、乗数のビット数が多い場合にも
各部分積を算出する際の加算の計算量の規模を軽減でき
るという効果がある。
【0111】また、前記第1生成手段は、全ビットが1
であると判定された場合に、被乗数をnビット左シフト
するシフト手段と、被乗数の1の補数を生成する補数手
段と、シフト手段によるシフトされた被乗数と、被乗数
の1の補数と、1とを加算する加算手段とから構成され
る。
【0112】この構成によれば、被乗数をnビット左に
シフトさせるだけで被乗数の2のn乗倍した値を簡単に
生成することができ、また被乗数の1の補数と1とから
簡単に被乗数の負の値を生成することができるので、部
分乗数の全ビットが1であるとき、簡単な回路構成によ
って部分乗数と被乗数との部分積を出力することができ
る。
【0113】前記分割手段は、3ビットからなる部分乗
数に分割するよう構成されれば、各部分乗数が”11
1”のとき、被乗数の2の3乗倍した値と被乗数の負の
値との和により部分積を生成することができるので、部
分積を生成する際の加算の計算量にかかる負荷が軽減さ
れるという効果がある。
【0114】また本発明の乗算装置は、乗数を分割して
得られる部分乗数と被乗数との部分積を累算して乗算値
を求める乗算装置であって、乗数を3m(mは2以上)
ビットからなる複数の部分乗数に分割する分割手段と、
各部分乗数について、その部分乗数の上位ビットから3
ビットずつ区切ったm個の3ビット値それぞれが“11
1”であるか否かを判定する判定手段と、判定手段によ
り“111”であると判定された場合には、被乗数を2
の3乗倍した値と、被乗数の負の値との和を用いて小部
分積を生成する第1生成手段と、判定手段により“11
1”ではないと判定された場合には、被乗数と当該3ビ
ット値との積を用いて小部分積を生成する第2生成手段
と、全ての部分乗数について、第1生成手段による小部
分積と第2生成手段による小部分積とを累算する累算手
段とを備えるてもよい。
【0115】この構成によれば、3ビットの部分乗数
が”111”の場合、従来の技術においては、部分乗数
の各ビットと被乗数との積を加算することにより部分積
を求めていたのに対し、本構成においては、被乗数の2
の3乗倍した値と被乗数の負の値との加算によって部分
積を求めることができ、部分積を求める際の加算の計算
量の規模と回路の規模とを小さくできるという効果があ
る。また、本構成は、乗数を3ビットずつに分割して部
分積の算出を行うため、ビット列中部分的に1が連続す
るような乗数においても、分割後の複数の部分乗数の中
に”111”である部分乗数が含まれている場合には、
その部分積を求める際に加算の計算量の規模を小さくで
きるという効果がある。
【0116】本発明にかかる剰余乗算装置は、数Xを初
期値として数Pによる剰余を順次に生成し、数Yを所定
ビットずつ下位側から分割して順次得られる部分数と再
帰的に順次生成される剰余との部分積を順次累算して積
X*Yの数Pによる剰余乗算値を求める剰余乗算装置で
あって、前記数Xの数Pによる剰余を生成する剰余生成
手段と、前記剰余を数Xの代替値として剰余生成手段に
再帰的に剰余を生成させる再帰手段と、数Yをn(nは
3以上)ビットからなる複数の部分数に分割する分割手
段と、各部分数について、部分数の全ビットが1である
か否かを判定する判定手段と、全ビットが1であると判
定された場合には、剰余を2のn乗倍した値と、剰余の
負の値との和を用いて部分積を生成する第1生成手段
と、全ビットが1ではないと判定された場合には、剰余
と当該部分数との積を用いて部分積を生成する第2生成
手段と、第1生成手段による部分積と第2生成手段によ
る部分積とを順次累算する累算手段とを備える。
【0117】この構成によれば、剰余生成手段は被乗数
の除数による剰余を生成し、分割手段は乗数をnビット
の部分乗数に分割し、各部分乗数の全ビットが1である
場合には被乗数の2のn乗倍した値と被乗数の負の値と
を加算することによって部分積を生成するので、部分積
を算出する際の加算の計算量の規模と回路の規模を小さ
くして剰余乗算値を算出できるという効果がある。
【0118】
【図面の簡単な説明】
【図1】本発明に係る第1の実施形態における乗算装置
の構成図である。
【図2】演算値選択器104における入出力制御論理を
示す真理値表である。
【図3】演算値選択器104の詳細構成図である。
【図4】第2実施形態における剰余乗算装置の概略構成
を示すブロック図である。
【図5】本実施形態における剰余乗算装置全体の処理の
流れを示すフローチャートである。
【図6】剰余演算部401の詳細な構成を示す図であ
る。
【図7】p−ROMテーブル604のROMテーブルを
示す図である。
【図8】図4のブロック図における乗数分割部402の
詳細を示すブロック図である。
【図9】図4のブロック図における部分積演算部403
の詳細な構成を示すブロック図である。
【図10】(a)〜(c)演算値選択器510〜512による
入出力制御論理をまとめた表である。
【図11】累算部404のより詳細な構成を示すブロッ
ク図である。
【図12】第2実施形態における剰余演算部401の代
替となる剰余演算部の構成を示すブロック図である。
【図13】部分積演算部403の別構成を示すブロック
図である。
【図14】演算値選択器1310〜1312の入出力論
理を示す表である。
【図15】第1の従来技術の乗算装置における乗算回路
の構成図である。
【図16】第2の従来技術の乗算装置における乗算回路
の構成図である。
【符号の説明】
101 シフタ 102 シフタ 103 シフタ 104 演算値選択器 105 加算器

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】 n(nは3以上)ビットからなる乗数の
    全ビットが1であるか否かを判定する判定手段と、 全ビットが1であると判定されたとき、被乗数の2のn
    乗倍した値を生成する生成手段と、 全ビットが1であると判定されたとき、被乗数の1の補
    数を生成する補数生成手段と、 被乗数の2のn乗倍した値と被乗数の1の補数と定数1
    とを加算する加算手段とを備えることを特徴とする乗算
    装置。
  2. 【請求項2】 前記生成手段は、被乗数を左へnビット
    シフトさせて下位nビット全てに0を入力するシフタで
    あることを特徴とする請求項1記載の乗算装置。
  3. 【請求項3】 乗数を分割して得られる部分乗数と被乗
    数との部分積を累算して乗算値を求める乗算装置であっ
    て、 乗数をn(nは3以上)ビットからなる複数の部分乗数
    に分割する分割手段と、 各部分乗数について、部分乗数の全ビットが1であるか
    否かを順次判定する判定手段と、 全ビットが1であると判定された場合には、被乗数を2
    のn乗倍した値と、被乗数の負の値との和を用いて部分
    積を生成する第1生成手段と、 全ビットが1であると判定されなかった場合には、被乗
    数と当該部分乗数との積を用いて部分積を生成する第2
    生成手段と、 第1生成手段による部分積または第2生成手段による部
    分積を順次累算する累算手段とを備えることを特徴とす
    る乗算装置。
  4. 【請求項4】 前記第1生成手段は、 全ビットが1であると判定された場合に、被乗数をnビ
    ット左シフトするシフト手段と、 被乗数の1の補数を生成する補数手段と、 シフト手段によるシフトされた被乗数と、被乗数の1の
    補数と、1とを加算する加算手段とを備えることを特徴
    とする請求項3記載の乗算装置。
  5. 【請求項5】 前記分割手段は、3ビットからなる部分
    乗数に分割することを特徴とする請求項3記載の乗算装
    置。
  6. 【請求項6】 乗数を分割して得られる部分乗数と被乗
    数との部分積を累算して乗算値を求める乗算装置であっ
    て、 乗数を3m(mは2以上)ビットからなる複数の部分乗
    数に分割する分割手段と、 各部分乗数について、その部分乗数の上位ビットから3
    ビットずつ区切ったm個の3ビット値それぞれが“11
    1”であるか否かを判定する判定手段と、 判定手段により“111”であると判定された場合に
    は、被乗数を2の3乗倍した値と、被乗数の負の値との
    和を用いて小部分積を生成する第1生成手段と、 判定手段により“111”ではないと判定された場合に
    は、被乗数と当該3ビット値との積を用いて小部分積を
    生成する第2生成手段と、 全ての部分乗数について、第1生成手段による小部分積
    と第2生成手段による小部分積とを累算する累算手段と
    を備えることを特徴とする乗算装置。
  7. 【請求項7】 乗数を分割して得られる部分乗数と被乗
    数との部分積を累算して乗算値を求める乗算装置であっ
    て、 乗数を3m(mは2以上)ビットからなる複数の部分乗
    数に分割する分割手段と、 各部分乗数について、その部分乗数の上位ビットから3
    ビットずつ区切ったm個の3ビット値それぞれが“11
    1”であるか否かを判定する判定手段と、 判定手段により3ビット値が“111”であると判定さ
    れたとき、当該3ビット値の上位隣の3ビット値が“1
    11”と判定されたことを検出する第1検出手段と、 判定手段により3ビット値が“111”であると判定さ
    れたとき、当該3ビット値の下位隣の3ビット値が“1
    11”と判定されたことを検出する第2検出手段と、 判定手段により3ビットの値が“111”であると判定
    されたとき、被乗数を2の3乗倍した値と被乗数の負の
    値とを用いて小部分積を生成する第1生成手段と、 第1検出手段による検出がなされたとき、第1生成手段
    に被乗数の2の3乗した値を用いずに小部分積を生成さ
    せる第1制御手段と、 第2検出手段による検出がなされたとき、第2生成手段
    に被乗数の負の値を用いずに小部分積を生成させる第2
    制御手段と、 判定手段により”111”でないと判定された場合に
    は、被乗数と当該3ビット値との積を用いて小部分積を
    生成する第2生成手段と、 全ての部分乗数について、第1生成手段による小部分積
    と第2生成手段による小部分積を順次累算する累算手段
    とを備えることを特徴とする乗算装置。
  8. 【請求項8】 乗数を分割して得られる部分乗数と被乗
    数との部分積を累算して乗算値を求める乗算装置であっ
    て、 乗数を3m(mは2以上)ビットからなる複数の部分乗
    数に分割する分割手段と、 各部分乗数について、その部分乗数の上位ビットから3
    ビットずつ区切ったm個の3ビット値それぞれが”11
    1”であるか否かを判定するm個の判定手段と、 2つ以上の互いに隣り合う判定手段であって、かつ、何
    れも”111”であると判定した判定手段群を検出する
    検出手段と、 各判定手段に対応して設けられ、各判定手段により”1
    11”であると判定された場合には、被乗数の2の3乗
    倍した値と被乗数の負の値とを用いて小部分積を生成す
    るm個の第1生成手段と、 検出手段により判定手段群が検出された場合には、その
    判定手段群のうち最上位の判定手段以外の判定手段群中
    の判定手段に対応する第1生成手段による小部分積の生
    成を停止させる停止手段と、 各第1判定手段に対応して設けられ、第1判定手段によ
    り“111”でないと判定された場合には、被乗数と当
    該3ビット値との積を用いて小部分積を生成するm個の
    第2生成手段と、 全ての部分乗数についてm個の第1生成手段による小部
    分積とm個の第2生成手段による小部分積とを順次累算
    する累算手段とを備えることを特徴とする乗算装置。
  9. 【請求項9】 前記乗算装置は、前記停止手段の代りに
    検出手段により判定手段群が検出された場合には、当該
    判定手段群のうち最上位の判定手段に対応する第1生成
    手段に被乗数の負の値の生成を停止させ、 当該判定手段群のうち最上位の判定手段を除く何れか1
    つの判定手段に対応する第1生成手段に被乗数の2の3
    乗の値の生成を停止させる第1停止手段と、 検出手段により判定手段群が検出された場合には、その
    判定手段群のうち最上位の判定手段と前記何れか1つの
    判定手段とを除く判定手段群中の判定手段に対応する第
    1生成手段による小部分積の生成を停止させる第2停止
    手段とを備えることを特徴とする請求項8記載の乗算装
    置。
  10. 【請求項10】 数Xを初期値として数Pによる剰余を
    順次に生成し、数Yを所定ビットずつ下位側から分割し
    て順次得られる部分数と再帰的に順次生成される剰余と
    の部分積を順次累算して積X*Yの数Pによる剰余乗算
    値を求める剰余乗算装置であって、 前記数Xの数Pによる剰余を生成する剰余生成手段と、 前記剰余を数Xの代替値として剰余生成手段に再帰的に
    剰余を生成させる再帰手段と、 数Yをn(nは3以上)ビットからなる複数の部分数に
    分割する分割手段と、 各部分数について、部分数の全ビットが1であるか否か
    を判定する判定手段と、 全ビットが1であると判定された場合には、剰余を2の
    n乗倍した値と、剰余の負の値との和を用いて部分積を
    生成する第1生成手段と、 全ビットが1ではないと判定された場合には、剰余と当
    該部分数との積を用いて部分積を生成する第2生成手段
    と、 第1生成手段による部分積と第2生成手段による部分積
    とを順次累算する累算手段とを備えることを特徴とする
    剰余乗算装置。
  11. 【請求項11】 数Xを初期値として数Pによる剰余を
    順次再帰的に生成し、数Yを所定ビットずつ下位側から
    分割して順次得られる部分数と順次生成される剰余との
    部分積を順次累算して積X*Yの数Pによる剰余乗算値
    を求める剰余乗算装置であって、 前記数Xの数Pによる剰余を生成する剰余生成手段と、 前記剰余を数Xの代替値として剰余生成手段に再帰的に
    剰余を生成させる再帰手段と、 数Yを3m(mは2以上)ビットからなる複数の部分数
    に分割する分割手段と、 各部分数について、その部分数の上位ビットから3ビッ
    トずつ区切ったm個の3ビット値それぞれが“111”
    であるか否かを判定する判定手段と、 判定手段により3ビット値が“111”であると判定さ
    れたとき、当該3ビット値の上位隣の3ビット値が“1
    11”と判定されたことを検出する第1検出手段と、 判定手段により3ビット値が“111”であると判定さ
    れたとき、当該3ビット値の下位隣の3ビット値が“1
    11”と判定されたことを検出する第2検出手段と、 判定手段により3ビットの値が“111”であると判定
    されたとき、剰余を2の3乗倍した値と剰余の負の値と
    を用いて小部分積を生成する第1生成手段と、 第1検出手段による検出がなされたとき、第1生成手段
    に剰余の2の3乗した値を用いずに小部分積を生成させ
    る第1制御手段と、 第2検出手段による検出がなされたとき、第2生成手段
    に剰余の負の値を用いずに小部分積を生成させる第2制
    御手段と、 判定手段により”111”でないと判定された場合に
    は、剰余と当該3ビット値との積を用いて小部分積を生
    成する第2生成手段と、 全ての部分数について、第1生成手段による小部分積と
    第2生成手段による小部分積を順次累算する累算手段と
    を備えることを特徴とする剰余乗算装置。
  12. 【請求項12】 数Xを初期値として数Pによる剰余を
    順次再帰的に生成し、数Yを所定ビットずつ下位側から
    分割して順次得られる部分数と順次生成される剰余との
    部分積を順次累算して積X*Yの数Pによる剰余乗算値
    を求める剰余乗算装置であって、 前記数Xの数Pによる剰余を生成する剰余生成手段と、 前記剰余を数Xの代替値として剰余生成手段に再帰的に
    剰余を生成させる再帰手段と、 乗数を3m(mは2以上)ビットからなる複数の部分数
    に分割する分割手段と、 各部分数について、その部分数の上位ビットから3ビッ
    トずつ区切ったm個の3ビット値それぞれが”111”
    であるか否かを判定するm個の判定手段と、 2つ以上の互いに隣り合う判定手段であって、かつ、何
    れも”111”であると判定した判定手段群を検出する
    検出手段と、 各判定手段に対応して設けられ、各判定手段により”1
    11”であると判定された場合には、剰余の2の3乗倍
    した値と剰余の負の値とを用いて小部分積を生成するm
    個の第1生成手段と、 検出手段により判定手段群が検出された場合には、その
    判定手段群のうち最上位の判定手段以外の判定手段群中
    の判定手段に対応する第1生成手段による部分積の生成
    を停止させる停止手段と、 各第1判定手段に対応して設けられ、第1判定手段によ
    り“111”でないと判定された場合には、剰余と当該
    3ビット値との積を用いて小部分積を生成するm個の第
    2生成手段と、 全ての部分数についてm個の第1生成手段による小部分
    積とm個の第2生成手段による小部分積とを順次累算す
    る累算手段とを備えることを特徴とする剰余乗算装置。
  13. 【請求項13】 前記剰余乗算装置は、前記停止手段の
    代りに検出手段により判定手段群が検出された場合に
    は、当該判定手段群のうち最上位の判定手段に対応する
    第1生成手段に剰余の負の値の生成を停止させ、 当該判定手段群のうち最上位の判定手段を除く何れか1
    つの判定手段に対応する第1生成手段に剰余の2の3乗
    の値の生成を停止させる第1停止手段と、 検出手段により判定手段群が検出された場合には、その
    判定手段群のうち最上位の判定手段と前記何れか1つの
    判定手段とを除く判定手段群中の判定手段に対応する第
    1生成手段による小部分積の生成を停止させる第2停止
    手段とを備えることを特徴とする請求項12記載の剰余
    乗算装置。
JP10156473A 1998-03-02 1998-06-04 乗算装置及び剰余乗算装置 Pending JPH11352882A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP10156473A JPH11352882A (ja) 1998-06-04 1998-06-04 乗算装置及び剰余乗算装置
US09/261,614 US6366940B1 (en) 1998-03-02 1999-03-02 High-speed modular multiplication apparatus achieved in small circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10156473A JPH11352882A (ja) 1998-06-04 1998-06-04 乗算装置及び剰余乗算装置

Publications (1)

Publication Number Publication Date
JPH11352882A true JPH11352882A (ja) 1999-12-24

Family

ID=15628530

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10156473A Pending JPH11352882A (ja) 1998-03-02 1998-06-04 乗算装置及び剰余乗算装置

Country Status (1)

Country Link
JP (1) JPH11352882A (ja)

Similar Documents

Publication Publication Date Title
US6049815A (en) Method and apparatus for finite field multiplication
KR100591761B1 (ko) 몽고메리 모듈러 곱셈기 및 캐리 저장 가산을 이용한몽고메리 모듈러 곱셈 방법
EP0381161A2 (en) Modular multipication method and the system
JP2004326112A (ja) マルチプルモジュラス選択器、累算器、モンゴメリー掛け算器、マルチプルモジュラス発生方法、部分掛け発生方法、累算方法、掛け算方法、モジュラス選択器、およびブースレコーダ
EP1672481A1 (en) Division and square root arithmetic unit
EP0502782A2 (en) Microcircuit for the implementation of RSA algorithm and ordinary and modular arithmetic, in particular exponentiation, with large operands
JP2006227939A (ja) 演算装置
US6366940B1 (en) High-speed modular multiplication apparatus achieved in small circuit
US7412474B2 (en) Montgomery modular multiplier using a compressor and multiplication method
KR970012132A (ko) 곱-합 계산 장치, 곱-합 계산 장치의 집적 회로 장치, 및 영상 데이타를 처리하기에 적절한 누적 가산기
US6763366B2 (en) Method for calculating arithmetic inverse over finite fields for use in cryptography
US20010054053A1 (en) Method and apparatus for finite field multiplication
WO2006022089A1 (ja) 乗算装置
US8977671B2 (en) Divider circuit and division method
RU2348965C1 (ru) Вычислительное устройство
JPH11352882A (ja) 乗算装置及び剰余乗算装置
KR100480997B1 (ko) GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치
JPH0326114A (ja) 乗算剰余演算器
Mohammadi et al. Efficient design of Elliptic curve point multiplication based on fast Montgomery modular multiplication
JP3563043B2 (ja) 平方根の逆数計算方法、計算回路、及びプログラム
JP4293665B2 (ja) 剰余乗算装置
JPH11282351A (ja) セキュリティ技術における逆元演算方法、その方法を使った演算装置、及びその方法を実行するプログラムを記録した記録媒体
JP4042215B2 (ja) 演算処理装置およびその方法
JP2558687B2 (ja) 剰余乗算装置
JPS6155691B2 (ja)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070529

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071002