JP2000293356A - 演算装置 - Google Patents

演算装置

Info

Publication number
JP2000293356A
JP2000293356A JP11094977A JP9497799A JP2000293356A JP 2000293356 A JP2000293356 A JP 2000293356A JP 11094977 A JP11094977 A JP 11094977A JP 9497799 A JP9497799 A JP 9497799A JP 2000293356 A JP2000293356 A JP 2000293356A
Authority
JP
Japan
Prior art keywords
memory
register
arithmetic
data
variable storage
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.)
Granted
Application number
JP11094977A
Other languages
English (en)
Other versions
JP3553815B2 (ja
Inventor
Soichi Okada
壮一 岡田
Naoya Torii
直哉 鳥居
Masahiko Takenaka
正彦 武仲
Yoshiki Okumura
嘉樹 奥村
Takeshi Nagase
健 長瀬
Tomohiro Hayashi
朋弘 林
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP09497799A priority Critical patent/JP3553815B2/ja
Publication of JP2000293356A publication Critical patent/JP2000293356A/ja
Application granted granted Critical
Publication of JP3553815B2 publication Critical patent/JP3553815B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 ソフトウェアあるいはファームウェアの介在
を削減し、高速処理を実現する演算装置を提供する。 【解決手段】 コプロセッサ5は、メモリ7との間でデ
ータの入出力が可能であり、メモリ7から読み出されて
転送されてくる変数を格納可能な入力変数格納用レジス
タ8,9と、入力変数格納用レジスタ8,9に格納され
ている変数を用いて所定の演算処理を実行する演算回路
10と、演算回路10での演算結果を格納するととも
に、格納している内容をメモリ7に転送可能な出力変数
格納用レジスタ11と、出力変数格納用レジスタ11に
格納されている内容を複写可能であるとともに、格納し
ている内容を入力変数格納用レジスタ8に複写可能な変
数退避用レジスタ12とを備えている。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、演算装置、特に、
暗号装置やICカードなどに搭載される演算装置に関す
る。
【0002】
【従来の技術】通常の演算装置は、所定の演算処理を実
行する演算部と、演算部における演算に必要な変数が書
き込まれる複数の入力変数格納用レジスタと、演算部に
おける演算結果を格納する演算結果格納用レジスタとを
備えている。演算処理を行う場合には、演算に必要な変
数をメモリから入力変数格納用レジスタに書き込み、こ
の入力変数格納用レジスタの内容を用いて演算部で演算
処理を実行し、演算結果格納用レジスタに格納する。演
算結果格納用レジスタの内容は適宜メモリに読み出しが
行われる。
【0003】このとき、各入力変数格納用レジスタおよ
び演算結果格納用レジスタには、それぞれアドレスが割
り当てられており、メモリからのデータの書き込みやメ
モリへのデータの読み出しを行うことが可能となってい
る。たとえば、“An Implementation Of Elliptic Curv
e Cryptosystems over F2 1 55, IEEE JOURNAL SELECTED
AREAS IN CMMUNICATIONS, Vol 11, No.5, JUNE 1993”
に記載されている楕円曲線暗号用LSIの演算装置で
は、3つのレジスタA,B,Cで、演算およびオペレー
ションの命令(MULTI, INVERSE, READ, WRITE,ROTATE,
COPY, SWAP, CLEAR, SET, ADD, ACCUMULATE)を実行し
ている。各レジスタA,B,Cには、個々にアドレスが
割り当てられており、メモリからの変数の書き込みおよ
びメモリへの読み出しが可能となっている。また、演算
処理の高速化を図るために、レジスタCの内容をレジス
タAにコピーするためのパス、レジスタCの内容をレジ
スタBにコピーするためのパスおよびレジスタAとレジ
スタBの内容を入れ替えるためのパスが設けられてい
る。
【0004】このような演算装置では、2つのレジスタ
A,Bを入力変数格納用レジスタとし、レジスタCを演
算結果格納用レジスタとしている。この場合、メモリと
各レジスタA,B,Cとの間のデータのリード/ライト
は、各レジスタに割り当てられたアドレスを指定して行
われるため、アドレスデコード回路の規模が大きくな
る。また、各レジスタ間に内容をコピーするためのパス
や入れ替えのためのパスを設けているため、演算回路内
の結線数が多くなり、回路規模が大きくなってしまう。
さらに、各レジスタへのデータのアクセス(リード/ラ
イト)の制御が複雑であり、制御回路の規模が大きくな
るという問題を内包している。
【0005】このような問題点を解決するために、本願
出願人は、特願平10-244837号において、メモリから読
み出した入力変数を格納する書き込み専用レジスタと、
演算結果を格納するための読み出し専用レジスタとを備
えた演算装置を提案している。
【0006】
【発明が解決しようとする課題】前述したような楕円曲
線暗号処理を行う場合には、演算した結果をメモリに転
送し、このメモリに転送した演算結果を入力変数として
さらに演算処理を実行することが繰り返し行われる。し
たがって、メモリと演算装置間における変数の転送が頻
繁に行われることとなる。
【0007】特願平10-244837号の演算装置では、メモ
リから読み出した変数を書き込むための書き込み用レジ
スタとメモリに変数を読み出すための読み出し用レジス
タが決められているため、メモリとの間でデータを入出
力する際の制御が簡単となる。しかしながら、楕円曲線
暗号では百数十ビット以上の変数の演算が必要であり、
メモリとの間に設けられたデータバスが32ビットまた
は64ビットなどの太いバス幅である場合には、演算時
間よりもデータ転送時間が小さいため充分に効力が発揮
されるものの、CPUとして8ビットマイクロプロセッ
サなどの能力の小さいものが用いられており、かつこの
CPUを用いてデータの転送を行う場合には、演算時間
に比してデータ転送時間が支配的になってしまう。した
がって、演算の度にその演算結果をメモリに書き込み、
次の演算処理に必要な入力変数をメモリから読み出す必
要がある上述の装置では、データ転送時間が大きくなる
結果、暗号化/復号化のための演算処理に莫大な時間を
要することとなる。
【0008】また、従来の装置において、CPUは、入
出力インターフェイス(I/O)や演算処理を実行する
専用のコプロセッサなどに対して、単独のコマンドを発
行するようにしか構成されていない。このため、CPU
が複数のコマンドを同時に発行した場合には、エラーと
して処理され、コマンドの処理が実行されない。したが
って、演算部における各処理毎にCPUがコマンドを発
行する必要があり、上述のような楕円曲線暗号処理に用
いる場合には、ソフトウェアあるいはファームウェアが
頻繁に介在することとなって、暗号化/復号化のための
演算処理が莫大な時間を要することとなる。
【0009】本発明の目的は、ソフトウェアあるいはフ
ァームウェアの介在を削減し、高速処理を実現する演算
装置の提供にある。
【0010】
【課題を解決するための手段】本発明に係る演算装置
は、メモリとの間でデータの入出力が可能な演算装置で
あって、入力変数格納用レジスタと、演算部と、出力変
数格納用レジスタと、変数退避用レジスタとを備えてい
る。入力変数格納用レジスタは、メモリから読み出され
て転送されてくる変数を格納可能となっている。演算部
は、入力変数格納用レジスタに格納されている変数を用
いて所定の演算処理を実行する。出力変数格納用レジス
タは、演算部での演算結果を格納するとともに、格納し
ている内容を前記メモリに転送可能となっている。変数
退避用レジスタは、出力変数格納用レジスタに格納され
ている内容を複写可能であるとともに、格納している内
容を入力変数格納用レジスタに複写可能となっている。
【0011】ここで、入力変数格納用レジスタが、メモ
リから読み出されて転送されてくる変数または変数退避
用レジスタに格納されている内容を格納する第1入力変
数格納用レジスタと、第1入力変数格納用レジスタに格
納されている内容を複写可能な第2変数格納用レジスタ
とを備える構成とすることができる。さらに、この演算
装置は、外部に設けられたCPUによって各部が制御さ
れ、所定の演算処理を実行するための演算コプロセッサ
であってもよい。
【0012】また、演算部における演算処理に必要な複
数のコマンドを同時に設定可能なコマンドレジスタをさ
らに備え、演算部は、CPUによってコマンドレジスタ
に設定された複数のコマンドをその優先順位に基づいて
順次処理するように構成できる。さらに、演算部は楕円
曲線暗号のための演算処理が可能であり、コマンドレジ
スタは演算部における演算処理に必要な楕円曲線暗号の
ための複数のコマンドが同時に設定できるように構成さ
れる、楕円曲線暗号コプロセッサとすることができる。
【0013】また、コマンドレジスタ内の内容が、演算
部によって実行されたコマンドの順にクリアされるよう
に構成できる。さらに、演算部がコマンドレジスタに設
定された複数のコマンドを全て実行したか否かのステー
タス情報を格納するステータスレジスタをさらに備える
構成とすることができる。
【0014】また、メモリとの間でダイレクト・メモリ
・アクセス方式(DMA)によりデータの転送を行う構
成とすることができる。この場合、メモリとの間でデー
タの入出力を行うためにアクセスするメモリアドレスを
生成するアドレスカウンタと、メモリとの間に設けられ
たデータバスのビット数毎のデータ転送回数を計数する
転送回数カウンタと、メモリに対するメモリリード/ラ
イト信号を生成するリード/ライト信号生成回路とを備
える構成とし、転送回数カウンタの計数するデータ転送
回数が、メモリとの間で入出力を行うデータのビット数
およびメモリとの間に設けられたデータバスのビット数
に基づいて特定される転送回数に達するまで、アドレス
カウンタの生成するメモリアドレスをデータバスのビッ
ト数毎にシフトさせながらメモリに対するアクセスを行
い、メモリとのデータの転送を実行するように構成する
ことが好ましい。
【0015】また、外部に設けられるCPUによって各
部が制御され、CPUがアクセスするタイミングに基づ
いて、メモリとのデータの入出力を行うためのメモリリ
ード/ライト信号を生成するように構成することも可能
である。この場合には、メモリとの間でデータの入出力
を行うためにアクセスするメモリアドレスを生成するア
ドレスカウンタと、メモリとの間に設けられたデータバ
スのビット数毎のデータ転送回数を計数する転送回数カ
ウンタと、CPUがアクセスするタイミングに基づい
て、メモリに対するメモリリード/ライト信号を生成す
るリード/ライト信号生成回路とを備える構成とし、転
送回数カウンタの計数するデータ転送回数が、メモリと
の間で入出力を行うデータのビット数およびメモリとの
間に設けられたデータバスのビット数に基づいて特定さ
れる転送回数に達するまで、アドレスカウンタの生成す
るメモリアドレスをデータバスのビット数毎にシフトさ
せながら前記メモリに対するアクセスを行い、メモリと
のデータの転送を実行するように構成することが好まし
い。
【0016】
【発明の実施の形態】本発明の1実施形態が採用される
演算装置について図に基づいて説明する。 〔全体構成〕図1において、コプロセッサ5は、所定の
演算処理を実行するための演算部4を備えている。
【0017】コプロセッサ5は、各部の動作を制御して
いるCPU6とバスBUSを介して接続されており、メモ
リ7との間でデータの入出力が可能となっている。演算
部4は、第1入力変数格納用レジスタ(M1)8,第2
入力変数格納用レジスタ(M2)9を備えている。第1
入力変数格納用レジスタ8は、バスBUSと接続されてお
り、メモリ7から読み出された変数の書き込みが行われ
る。第1入力変数格納用レジスタ8は、第2入力変数格
納用レジスタ9と接続されており、内容を第2入力変数
格納用レジスタ9にコピーすることが可能となってい
る。
【0018】第1入力変数格納用レジスタ8および第2
入力変数格納用レジスタ9は、それぞれ演算回路10に
接続されている。演算回路10は、論理演算子で構成さ
れており、例えば、複数の排他的論理和ゲート(XO
R)で構成することができる。演算回路10は演算結果
を格納するための出力変数格納用レジスタ(MO)11
に接続されている。出力変数格納用レジスタ11はバス
BUSを介してメモリ7と接続されており、その内容をメ
モリ7に読み出すことが可能となっている。
【0019】出力変数格納レジスタ11は、変数退避用
レジスタ(M3)12に接続されており、内容を変数退
避用レジスタ12にコピーすることが可能となってい
る。また、出力変数格納用レジスタ11および変数退避
用レジスタ12は、第1入力変数格納用レジスタ8と接
続されており、それぞれその内容を第1入力変数格納用
レジスタ8にコピーすることが可能となっている。
【0020】コプロセッサ5は、CPU6によって設定
される複数のコマンドをその優先順位にしたがって演算
部4に処理させる制御部3を備えている。この制御部3
には、CPU6によって複数のコマンドが設定されるコ
マンドレジスタ1と、コマンドレジスタ1に設定された
コマンドの処理が全て終了したか否かのステータス情報
を格納するステータスレジスタ2とを備えている。
【0021】〔全体的な動作〕処理に必要なデータや演
算に必要なデータ(変数)がメモリ7に格納されてお
り、このメモリ7に格納されている変数を用いて所定の
演算処理を行う。CPU6は、まず、必要なデータをメ
モリ7から読み出して、コプロセッサ5内の第1入力変
数格納用レジスタ8に書き込む。次に、CPU6は、演
算処理に必要な複数のコマンドをコマンドレジスタ1に
設定する。
【0022】制御部3は、コマンドレジスタ1に設定さ
れた複数のコマンドを、予め決められた優先順位にした
がって、演算部4で順次処理を実行するように制御す
る。コマンドレジスタ1に設定された全てのコマンドに
対する処理が終了した場合には、制御部3はステータス
レジスタ2の内容を処理終了を示す値とし、CPU6が
これを知り得る状態とする。演算処理の結果は、出力変
数格納用レジスタ11に格納されており、CPU6はこ
れを読み出してメモリ7に書き込む。
【0023】続いて、CPU6は次の演算処理に必要な
データをメモリ7から読み出して、コプロセッサ5の第
1入力変数格納用レジスタ8に書き込むとともに、次の
処理に必要なコマンドを発行してコマンドレジスタ1に
設定し、以下、同様の動作を繰り返す。このようにした
場合、コプロセッサ5とメモリ7との間にデータ転送処
理が発生するまでは、コプロセッサ5内での処理を連続
して行うこととなり、この間にソフトウェアあるいはフ
ァームウェアが介在することがなく、高速処理が実現で
きる。
【0024】〔演算部の動作〕メモリ7に格納されてい
る変数A,Bを用いて演算処理を実行する場合を考え
る。CPU6は、演算に必要な変数Aをメモリ7から読
み出して、第1入力変数格納用レジスタ8に書き込む。
書き込みが終了すれば、第1入力変数格納用レジスタ8
から第2入力変数格納用レジスタ9に変数Aをコピーす
る。
【0025】次に、変数Bをメモリ7から読み出して、
第1入力変数格納用レジスタ8に書き込む。この状態
で、第2入力変数格納用レジスタ9に格納された変数A
と第1入力変数格納用レジスタ8に格納された変数Bを
用いて演算回路10における演算処理を実行する。演算
回路10による演算結果Cは、出力変数格納用レジスタ
11に格納される。
【0026】演算結果Cを次の演算処理に使用する場合
には、出力変数格納用レジスタ11の内容を第1入力変
数格納用レジスタ8にコピーする。それ以外の場合に
は、出力変数格納用レジスタ11に格納されている演算
結果Cを、メモリ7に転送するか、あるいは変数退避用
レジスタ12にコピーする。変数退避用レジスタ12に
格納されている変数を使用する場合には、この変数退避
用レジスタ12の内容を第1入力変数格納用レジスタ8
にコピーする。
【0027】2つの変数が同じ値の演算(A+A,A×
A)の場合には、メモリ7から変数Aを読み出して第1
入力変数格納用レジスタ8に書き込み、第1入力変数格
納用レジスタ8の内容を第2入力変数格納用レジスタ9
にコピーして、演算を開始すればよい。メモリ7から変
数を読み出して第1入力変数格納用レジスタ8に書き込
みを行ったり、出力変数格納用レジスタ11から演算結
果を読み出してメモり7に書き込みを行ったり、第1入
力変数格納用レジスタ8から第2入力変数格納用レジス
タ9へのコピー、出力変数格納用レジスタ11から第1
入力変数格納用レジスタ8へのコピー、出力変数格納用
レジスタ11から変数退避用レジスタ12へのコピーお
よび変数退避用レジスタ12から第1入力変数格納用レ
ジスタ11へのコピーは、CPU6がコマンドを発行し
て行うものであり、コマンドの優先順位と処理手順を考
慮して、ソフトウェアあるいはファームウェアが最適な
プログラムで実現している。
【0028】たとえば、163ビットの変数データをメ
モリ7と演算部4との間で転送する場合に、CPU6が
8ビットマイクロプロセッサであるとき、約220サイ
クル程度(実際にはアドレッシングを行う必要があるた
め、これ以上となる)要するが、演算部4内において各
レジスタ間でデータをコピーする場合には1サイクルで
済むこととなり、出力変数格納用レジスタ11または変
数退避用レジスタ12の内容を第1入力変数格納用レジ
スタ8にコピーして使用することで、高速演算が可能と
なる。
【0029】〔実施例〕具体的な実施例として、有限体
GF(2m)上の楕円曲線暗号コプロセッサについて考
える。この場合、図1に示すコプロセッサ5の演算部4
は、有限体GF(2m)上の2つの元A,Bに対して、
m次の既約多項式Fによる乗算剰余A×B modFを演算
する回路である。この回路では、mビットの変数A=
(am-1,am-2,・・・a0)、変数B=(bm-1,b
m-2,・・・b0)に対してmサイクルで乗算剰余演算を
完了する。
【0030】ここで対象とする楕円曲線は、以下の式で
表されるnon-supersingular楕円曲線である。 y2+xy=x3+ax2+b ・・・・(1) (但し、a,b∈GF(2m)、b≠0) 点の演算処理は、2次元アファイン平面上の点として表
される式(1)上の点を3次元射影平面に変換して点の
加算および2倍算を行い、最後に逆変換を行って、2次
元の座標値を得る。この3次元座標系として、IEEE P13
63/D8準拠のヤコビヤン座標系を用いる。
【0031】点の2倍算および加算における処理手順を
表1、表2に示す。また、逆変換処理における処理手順
(途中の過程を一部省略している)を表3に示す。表中
のオペレーションは、図1の演算部4のオペレーション
を示し、PMULは乗算剰余を、PADDは加算(XOR)を意味
している。また、Tはコプロセッサ5とメモリ7間のデ
ータ転送に要するサイクル数を示している。さらに、M
3欄において、左欄はコプロセッサ5外部にM3を設け
た場合(メモリ7の一部に演算結果を格納する場合)の
必要サイクル数を示し、右欄はコプロセッサ5内部にM
3を設けた場合(変数退避用レジスタ12に演算結果を
退避させる場合)の必要サイクル数を示している。
【0032】
【表1】
【0033】
【表2】
【0034】
【表3】 各表において、変数退避用レジスタ12が関わるデータ
移動の部分については、太枠で示している。この太枠部
分においては、コプロセッサ5内部にある変数退避用レ
ジスタ12を用いた場合に、データの移動に要するサイ
クル数が(T−1)だけ減少することがわかる。
【0035】演算処理に用いる変数のビット数をm=1
63ビットとし、コプロセッサ5とメモリ7間のデータ
転送に要するサイクル数をT=220サイクルとする
と、楕円曲線暗号のスカラー倍算処理の平均サイクル数
は、 コプロセッサ5外部にM3を設けた場合には、1845
346サイクル コプロセッサ5内部にM3を設けた場合には、1487
938サイクル となる。
【0036】したがって、このようなコプロセッサ5内
部に設けた変数退避用レジスタ12を用いた場合には、
演算処理を約20%高速化するすることができる。各処
理手順において、演算結果であるX0,Y0,Z0など
に対応する変数退避用レジスタをそれぞれ設ければ、よ
り演算処理の高速化を図ることが可能となる。 〔コマンドレジスタとステータスレジスタ〕コマンドレ
ジスタ1の1実施例を図2に示す。ここでは、コマンド
レジスタ1は8ビットで構成されている。各ビットに対
応するコマンドは、最上位ビットから順に、第1入力変
数格納用レジスタ8から第2入力変数格納用レジスタ9
へのコピー(M1M2 2nd)、出力変数格納用レジスタ11
から第1入力変数格納用レジスタ8へのコピー(MOM
1)、第1入力変数格納用レジスタ8から第2入力変数
格納用レジスタ9へのコピー(M1M2 1st)、変数退避用
レジスタ12から第1入力変数格納用レジスタ8へのコ
ピー(M3M1)、出力変数格納用レジスタ11から変数退
避用レジスタ12へのコピー(MOM3)であり、下位3ビ
ットはメモリ7との間のデータ入出力、第1入力変数格
納用レジスタ8からの既約多項式のコピーおよび乗算、
加算の演算コマンド(WRITE/READ/M1#F/PMUL/PADD)とな
っている。
【0037】各コマンドの優先順位は、 となっている。
【0038】各コマンドの対応表を表4に示す。
【0039】
【表4】 必要なコマンドに対応してコード化したデータを、この
ようなコマンドレジスタに格納することにより、制御部
3が各コマンドの優先順位に基づいて演算部4での演算
を実行させるように構成できる。このとき、コマンドレ
ジスタ1に同時に設定できるコマンド数は1〜6であ
る。
【0040】ステータスレジスタ2の1実施例を図3に
示す。ここでは、ステータスレジスタ2は8ビットで構
成されており、最下位から4ビット目が入出力可能を示
すビット(IORDY)に設定されており、最下位ビットがコ
マンド完了を示すビット(COMPLETE)に設定されてい
る。IORDYのビットが1である場合に、第1入力変数格
納用レジスタ8への変数の書き込みが可能であり、出力
変数格納用レジスタ11からの変数の読み出しが可能で
ある。WRITEまたはREADの転送コマンドが実行されたと
き、IORDYビットが1となり、データのビット数とバスB
USのうちデータバスのビット数に応じてその転送回数分
のリード/ライトが完了したときに、IORDYは0とな
る。
【0041】ステータスレジスタ2のCOMPLETEビット
は、コマンドレジスタ1にコマンドが書き込まれたとき
その内容が0となり、コマンドレジスタ1に設定された
コマンドを全て完了した際にその内容が1となるように
構成されている。複数のコマンドが同時に設定されるコ
マンドレジスタ1を用いて演算処理を行う場合の動作を
図4のフローチャートに基づいて説明する。
【0042】ステップS1では、CPU6からのコマン
ド発行があったか否かを判別する。複数のコマンドに対
応してコード化されたデータがコマンドレジスタ1に格
納されたとき、コマンド発行があったと判断してステッ
プS2に移行する。ステップS2では、ステータスレジ
スタ2のCOMPLETEビットを0に設定する。ステップS3
では、コマンドレジスタ1に設定された複数のコマンド
のうち、最も優先度の高いコマンドを演算部4に実行さ
せる。ステップS4では、コマンドの処理が終了したか
否かを判別する。演算部4におけるコマンドの処理が終
了したと判断した場合には、ステップS5に移行する。
ステップS5では、終了したコマンドに対応するコマン
ドレジスタ1のビットをクリアする。
【0043】ステップS6では、コマンドレジスタ1の
各ビットが全て0であるか否かを判別する。コマンドレ
ジスタ1の各ビットが全て0であると判断した場合に
は、ステップS7に移行し、1つでも1であるビットが
残っている場合にはステップS3に移行する。ステップ
S7では、ステータスレジスタ2のCOMPLETEビットを1
に設定する。この後ステップS1に移行する。
【0044】CPU6がコプロセッサ5にコマンドの発
行を行う際には、ステータスレジスタ2の内容をモニタ
し、COMPLETEビットが1である場合のみコマンドレジス
タ1へのコマンドの書き込みを行う。COMPLETEビットが
0である場合には、CPU6はコマンド発行を行わな
い。このことにより、コプロセッサ5の演算部4での処
理が完了するまで、コマンドレジスタ1の内容がCPU
6によって書き替わることがなく、誤動作を防止するこ
とができる。
【0045】CPU6が発行するコマンドに優先順位を
付けていない場合には、CPU6は各コマンド毎に毎回
コプロセッサ5のコマンドレジスタ1にアクセスを行っ
てコマンドの設定を行う必要がある。上述のように優先
順位を設定した場合と、優先順位を設定せずに毎回アク
セスを行う場合とを比較すると、CPU6からコマンド
レジスタ1へのアクセス回数は表5に示すようになる。
【0046】
【表5】 2倍算処理、加算処理、逆変換処理のいずれの場合も、
複数のコマンドに優先順位を設け、CPU6からコプロ
セッサ5に発行するコマンドを同時に複数設定できるよ
うにした場合の方が、コマンドレジスタ1へのアクセス
回数が格段に減少させることができる。CPU6がコマ
ンドレジスタ1にアクセスする場合、ソフトウェアある
いはファームウェアが介在するが、このコマンドレジス
タ1へのアクセス回数を減少させることによって、ソフ
トウェアあるいはファームウェアが介在する回数を減少
させ、処理の高速化を図ることが可能となる。
【0047】〔DMA転送〕本発明の他の実施形態とし
て、コプロセッサ5がダイレクト・メモリ・アクセス
(DMA)処理を行って、メモリ7とのデータの入出力
を行う例を示す。この他の実施形態が採用される演算装
置の概略構成を図5に示す。バスBUSを介してCPU6
およびメモリ7に接続されるコプロセッサ5内の演算部
4の構成は、前述した実施形態と同様であり、ここでは
説明を省略する。
【0048】制御部3内には、前述したコマンドレジス
タ1、ステータスレジスタ2(いずれも図5には図示せ
ず)とは別に、メモリ7内の変数をリード/ライトする
アドレスのベースアドレスが格納されるアドレス設定レ
ジスタ14が設けられている。また、メモリ7との間で
転送を行う変数のビット数と、バスBUSのうちデータバ
スのビット数に応じて、この変数を転送するために要す
る転送回数が設定される転送回数カウンタ16が設けら
れている。この転送回数カウンタ16は、バスBUSのう
ちのデータバスのビット数毎に行われる転送処理が1回
行われるとその都度デクリメントされ、0になると転送
処理が完了したと判断される。
【0049】また、制御部3には、転送回数カウンタ1
6と同期するアドレスカウンタ13が設けられている。
アドレスカウンタ13は、変数の転送が開始されると、
アドレス設定レジスタ14に格納されているベースアド
レスを出力し、バスBUSのうちのデータバスのビット数
毎に行われる転送処理が1回行われるとその都度データ
バスのビット数毎にインクリメントされる。
【0050】さらに、制御部3には、リード/ライト信
号を生成するリード/ライト信号生成部15が設けられ
ている。このリード/ライト信号生成部15は、転送回
数カウンタ16のカウントに基づいて、各転送処理毎に
メモリリード信号(OE)またはメモリライト信号(W
E)を出力する。 〈メモリからコプロセッサへのデータ転送〉メモリ7に
格納されている変数を使って演算処理を行う際に、メモ
リ7からその変数を読み出す場合について説明する。
【0051】まず、CPU6は、メモリ7内において演
算に用いられる変数が格納されているアドレスのベース
アドレスを、アドレス設定レジスタ14に設定する。変
数のビット数とバスBUSのうちのデータバスのビット数
とに基づいて、この変数を入力変数格納用レジスタ8に
格納するために要する転送回数を転送回数カウンタ16
に設定する。
【0052】1回の転送が終了する毎に、転送回数カウ
ンタ16の内容をデクリメントし、アドレスカウンタ1
3のメモリアドレスをインクリメントしながら転送を実
行する。このとき、リード/ライト信号生成部15によ
りメモリリード信号(OE)を出力して、メモリ7から
データを読み出し、第1入力変数格納用レジスタ8にデ
ータを書き込む。この動作を転送カウンタ16の内容が
0になるまで繰り返すことで、メモリ7内の変数を第1
入力変数格納用レジスタ8に書き込むことができる。
【0053】〈コプロセッサからメモリへのデータ転
送〉演算部4における演算結果をメモリ7に格納する場
合について説明する。CPU6は、メモリ7内における
演算結果を格納するアドレスのベースアドレスをアドレ
ス設定レジスタ14に設定する。変数のビット数とバス
BUSのうちのデータバスのビット数とに基づいて、この
変数をメモリ7に格納するために要する転送回数を転送
回数カウンタ16に設定する。
【0054】1回の転送が終了する毎に、転送回数カウ
ンタ16の内容をデクリメントし、アドレスカウンタ1
3のメモリアドレスをインクリメントしながら転送を実
行する。このとき、リード/ライト信号生成部15によ
りメモリライト信号(WE)を出力して、出力変数格納
用レジスタ11からデータを読み出し、メモリ7にデー
タを送出する。この動作を転送カウンタ16の内容が0
になるまで繰り返すことで、出力変数格納用レジスタ1
1から読み出したデータをメモリ7に書き込むことがで
きる。
【0055】このようにした場合、DMA転送によりメ
モリ7とコプロセッサ5間のデータ転送を行っているた
め、ソフトウェアあるいはファームウェアの介在を削減
でき、処理を高速化することが可能となる。 〔疑似DMA転送〕前述したDMA転送において、CP
U6がコプロセッサ5にアクセスするタイミングに基づ
いて、リード/ライト信号を生成するように構成するこ
とも可能である。この場合、図5に示すものと同じ構成
で、リード/ライト信号生成部15が、CPU6のアク
セスタイミングに基づいてメモリリード信号(OE)あ
るいはメモリライト信号(WE)を生成するように構成
する。
【0056】このようにした場合、データ転送を完全ハ
ードウェアで行うわけではなく、ソフトウェアが介在す
ることとなるが、CPU6の制御によりメモリ7とコプ
ロセッサ5との間のデータの転送を行うよりも高速化を
図ることができる。なお、この場合、コプロセッサ5が
バスを占有することがない。
【0057】
【発明の効果】本発明によれば、ソフトウェアあるいは
ファームウェアの介在を削減し、演算の高速処理を実現
することができる。
【図面の簡単な説明】
【図1】本発明の1実施形態の回路ブロック図。
【図2】コマンドレジスタの説明図。
【図3】ステータスレジスタの説明図。
【図4】1実施形態の制御フローチャート。
【図5】他の実施形態の回路ブロック図。
【符号の説明】
1 コマンドレジスタ 2 ステータスレジスタ 3 制御部 4 演算部 5 コプロセッサ 6 CPU 7 メモリ 8 第1入力変数格納用レジスタ 9 第2入力変数格納用レジスタ 10 演算回路 11 出力変数格納用レジスタ 12 変数退避用レジスタ 13 アドレスカウンタ 14 アドレス設定レジスタ 15 リードライト信号生成部 16 転送回数カウンタ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 武仲 正彦 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 (72)発明者 奥村 嘉樹 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 (72)発明者 長瀬 健 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 (72)発明者 林 朋弘 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 Fターム(参考) 5B022 AA05 BA04 CA01 CA03 CA05 CA09 DA01 EA02 FA01

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】メモリとの間でデータの入出力が可能な演
    算装置であって、 前記メモリから読み出されて転送されてくる変数を格納
    可能な入力変数格納用レジスタと、 前記入力変数格納用レジスタに格納されている変数を用
    いて所定の演算処理を実行する演算部と、 前記演算部での演算結果を格納するとともに、格納して
    いる内容を前記メモリに転送可能な出力変数格納用レジ
    スタと、 前記出力変数格納用レジスタに格納されている内容を複
    写可能であるとともに、格納している内容を前記入力変
    数格納用レジスタに複写可能な変数退避用レジスタと、
    を備えた演算装置。
  2. 【請求項2】前記入力変数格納用レジスタは、前記メモ
    リから読み出されて転送されてくる変数または前記変数
    退避用レジスタに格納されている内容を格納する第1入
    力変数格納用レジスタと、前記第1入力変数格納用レジ
    スタに格納されている内容を複写可能な第2変数格納用
    レジスタとを備える、請求項1に記載の演算装置。
  3. 【請求項3】外部に設けられたCPUによって各部が制
    御され、所定の演算処理を実行するための演算コプロセ
    ッサである、請求項1または2に記載の演算装置。
  4. 【請求項4】前記演算部における演算処理に必要な複数
    のコマンドを同時に設定可能なコマンドレジスタをさら
    に備え、前記演算部は、前記CPUによって前記コマン
    ドレジスタに設定された複数のコマンドをその優先順位
    に基づいて順次処理する、請求項3に記載の演算装置。
  5. 【請求項5】前記演算部は楕円曲線暗号のための演算処
    理が可能であり、前記コマンドレジスタは前記演算部に
    おける演算処理に必要な楕円曲線暗号のための複数のコ
    マンドが同時に設定できるように構成されている、請求
    項4に記載の演算装置。
  6. 【請求項6】前記コマンドレジスタ内の内容は、前記演
    算部によって実行されたコマンドの順にクリアされる、
    請求項4または5に記載の演算装置。
  7. 【請求項7】少なくとも、前記演算部が前記コマンドレ
    ジスタに設定された複数のコマンドを全て実行したか否
    かのステータス情報を格納するステータスレジスタをさ
    らに備える、請求項4〜6のいずれかに記載の演算装
    置。
  8. 【請求項8】前記メモリとの間でダイレクト・メモリ・
    アクセス方式(DMA)によりデータの転送を行う、請
    求項1〜7のいずれかに記載の演算装置。
  9. 【請求項9】前記メモリとの間でデータの入出力を行う
    ためにアクセスするメモリアドレスを生成するアドレス
    カウンタと、前記メモリとの間に設けられたデータバス
    のビット数毎のデータ転送回数を計数する転送回数カウ
    ンタと、前記メモリに対するメモリリード/ライト信号
    を生成するリード/ライト信号生成回路とを備え、 前記転送回数カウンタの計数するデータ転送回数が、前
    記メモリとの間で入出力を行うデータのビット数および
    前記メモリとの間に設けられたデータバスのビット数に
    基づいて特定される転送回数に達するまで、前記アドレ
    スカウンタの生成するメモリアドレスを前記データバス
    のビット数毎にシフトさせながら前記メモリに対するア
    クセスを行い、前記メモリとのデータの転送を実行す
    る、請求項8に記載の演算装置。
  10. 【請求項10】外部に設けられるCPUによって各部が
    制御され、前記CPUがアクセスするタイミングに基づ
    いて、前記メモリとのデータの入出力を行うためのメモ
    リリード/ライト信号を生成する、請求項1〜7のいず
    れかに記載の演算装置。
  11. 【請求項11】前記メモリとの間でデータの入出力を行
    うためにアクセスするメモリアドレスを生成するアドレ
    スカウンタと、前記メモリとの間に設けられたデータバ
    スのビット数毎のデータ転送回数を計数する転送回数カ
    ウンタと、前記CPUがアクセスするタイミングに基づ
    いて、前記メモリに対するメモリリード/ライト信号を
    生成するリード/ライト信号生成回路とを備え、 前記転送回数カウンタの計数するデータ転送回数が、前
    記メモリとの間で入出力を行うデータのビット数および
    前記メモリとの間に設けられたデータバスのビット数に
    基づいて特定される転送回数に達するまで、前記アドレ
    スカウンタの生成するメモリアドレスを前記データバス
    のビット数毎にシフトさせながら前記メモリに対するア
    クセスを行い、前記メモリとのデータの転送を実行す
    る、請求項10に記載の演算装置。
JP09497799A 1999-04-01 1999-04-01 演算装置 Expired - Fee Related JP3553815B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP09497799A JP3553815B2 (ja) 1999-04-01 1999-04-01 演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP09497799A JP3553815B2 (ja) 1999-04-01 1999-04-01 演算装置

Publications (2)

Publication Number Publication Date
JP2000293356A true JP2000293356A (ja) 2000-10-20
JP3553815B2 JP3553815B2 (ja) 2004-08-11

Family

ID=14124978

Family Applications (1)

Application Number Title Priority Date Filing Date
JP09497799A Expired - Fee Related JP3553815B2 (ja) 1999-04-01 1999-04-01 演算装置

Country Status (1)

Country Link
JP (1) JP3553815B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004533671A (ja) * 2001-02-21 2004-11-04 ミップス テクノロジーズ インコーポレイテッド 多項式演算オペレーション

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004533671A (ja) * 2001-02-21 2004-11-04 ミップス テクノロジーズ インコーポレイテッド 多項式演算オペレーション
JP2009282992A (ja) * 2001-02-21 2009-12-03 Mips Technologies Inc 多項式演算オペレーション

Also Published As

Publication number Publication date
JP3553815B2 (ja) 2004-08-11

Similar Documents

Publication Publication Date Title
CN113032797B (zh) 在处理设备中执行加密操作的方法
JPS63198174A (ja) 図形処理装置
JP3553815B2 (ja) 演算装置
KR100417136B1 (ko) 다항식 기저에서 유한체 승산 장치 및 그 방법
US5175838A (en) Memory circuit formed on integrated circuit device and having programmable function
JP3305406B2 (ja) プログラム制御のプロセッサ
JPH04333952A (ja) Dmaコントロールlsi
JPH0588887A (ja) データ処理装置
JP3007396B2 (ja) 文字処理装置および文字処理方法
JP3001545B1 (ja) ベクトルデータ処理装置
JPH11161304A (ja) プログラマブルコントローラ
JP3247441B2 (ja) 画像処理装置
JPH0535472A (ja) マイクロコンピユータ
JPH05120211A (ja) データバス幅制御装置
CN117043746A (zh) 用于矢量处理器中的收集/分散操作的方法和设备
JP2806376B2 (ja) 画像処理装置および画像処理方法
JPH01237766A (ja) データ処理装置およびそれを用いた画像データ処理システム
JPS58129570A (ja) パタ−ン発生装置
JPH02190968A (ja) ベクトル処理装置
JPS59143192A (ja) スクロ−ル制御装置
JPH02230320A (ja) データ処理装置
JPH0193868A (ja) データ処理装置
JPH05341751A (ja) 高速画像描画装置
JPH03127126A (ja) 情報処理装置
JPH04205678A (ja) 画像情報処理装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040419

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040427

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040430

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080514

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090514

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090514

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100514

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100514

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110514

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120514

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130514

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140514

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees