JP3912972B2 - データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法 - Google Patents
データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法 Download PDFInfo
- Publication number
- JP3912972B2 JP3912972B2 JP2000312811A JP2000312811A JP3912972B2 JP 3912972 B2 JP3912972 B2 JP 3912972B2 JP 2000312811 A JP2000312811 A JP 2000312811A JP 2000312811 A JP2000312811 A JP 2000312811A JP 3912972 B2 JP3912972 B2 JP 3912972B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- processing
- data packet
- packet
- stored
- 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.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
この発明はデータ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法に関し、特に、多倍精度形式のデータ(以下、多倍精度データという)についてデータ駆動型の演算を行なうデータ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法に関する。
【0002】
【従来の技術および発明が解決しようとする課題】
大量データの高速処理が望まれる場合には、並列処理が有効である。並列処理向きアーキテクチャのうちでも、データ駆動型と呼ばれるものが特に注目される。
【0003】
データ駆動型情報処理システムでは、「ある処理に必要な入力データがすべて揃い、かつその処理に必要な演算装置などの資源が割当てられたときに処理が行なわれる」という規則に従って処理が並列に進行する。
【0004】
図11は、従来およびこの発明の実施の形態に適用されるデータ駆動型情報処理システムのブロック構成図である。図12は、従来のデータ駆動型処理装置の構成図である。図13(A)と(B)は従来およびこの発明の実施の形態に適用されるデータパケットのフィールド構成図である。図13(A)では、データ駆動型処理装置の入出力データパケットPAの基本構成が示される。図13(B)では、データ駆動型処理装置内部を流れるデータパケットPA1の基本構成が示される。
【0005】
図13(A)のデータパケットPAはプロセッサ番号PE(Processing Element)を格納するフィールド18、ノード番号Nを格納するフィールド19、世代番号Gを格納するフィールド20およびデータDを格納するフィールド21を含む。図13(B)のデータパケットPA1は、図13(A)と同様のフィールド19〜21と、命令コードCを格納するフィールド22とを含む。
【0006】
図11においてデータ駆動型情報処理システムは従来のデータ駆動型処理装置1(本実施の形態に適用されるデータ駆動型処理装置10)、複数のデータが予め格納されるデータメモリ3およびメモリインターフェース2を含む。データ駆動型処理装置1(10)はデータ伝送路4、5および9のそれぞれが接続される入力ポートIA、IBおよびIV、ならびにデータ伝送路6、7および8のそれぞれが接続される出力ポートOA、OBおよびOVを含む。
【0007】
データ駆動型処理装置1(10)はデータ伝送路4または5から入力ポートIAまたはIBを介して、データパケットPAが、時系列的に入力される。データ駆動型処理装置1(10)には所定の処理内容がプログラムとして予め記憶されており、そのプログラム内容に基づく処理が実行される。
【0008】
メモリインターフェース2はデータ駆動型処理装置1(10)の出力ポートOVから出力されてデータメモリ3に対するアクセス(データメモリ3の内容の参照/更新など)要求を、データ伝送路8を介して受理する。メモリインターフェース2は受理したアクセス要求に従ってメモリアクセス制御線SSLを介してデータメモリ3に対してアクセスを行なった後、その結果を、データ伝送路9および入力ポートIVを介してデータ駆動型処理装置1(10)に与える。
【0009】
データ駆動型処理装置1(10)は、入力したデータパケットPAに対する処理をして、処理が終了した後、出力ポートOAおよびデータ伝送路6または出力ポートOBおよびデータ伝送路7を介してデータパケットPAを出力する。
【0010】
図12には、従来のデータ駆動型処理装置1の構成が示される。図において、データ駆動型処理装置1は入出力制御部11、合流部12、データ駆動型の処理を行なうために発火制御部13、内蔵メモリ15が接続される演算部14およびプログラム記憶部16ならびに分岐部17を含む。
【0011】
ここで図13(A)と(B)を参照すると、プロセッサ番号PEは、複数のデータ駆動型処理装置1が接続されたシステムにおいて対応するデータパケットPAが処理されるべきデータ駆動型処理装置1を特定するための情報である。ノード番号Nは、プログラム記憶部16の内容をアクセスするためのアドレスとして用いられる。世代番号Gは、データ駆動型処理装置1に時系列に入力されるデータパケットを一意に識別するための識別子として用いられる。また世代番号Gはデータメモリ3が画像データメモリであった場合には、データメモリ3をアクセスするためのアドレスとしても用いられる。その際には、世代番号Gは上位ビットから順にフィールド番号F♯、ライン番号L♯およびピクセル番号P♯を示す。
【0012】
動作において、図13(A)のデータパケットPAはデータ伝送路4、5を介してプロセッサ番号PEで指定されたデータ駆動型処理装置1に与えられると入出力制御部11において図13(B)のデータパケットPA1となる。つまり入出力制御部11は、入力したデータパケットPAのプロセッサ番号PEのフィールド18を破棄して、該入力データパケットPAのノード番号Nに基づいて、命令コードCと新たなノード番号Nとを得て、該入力データパケットPAのフィールド18と19にそれぞれ格納して、データパケットPA1を合流部12に出力する。したがって、入出力制御部11から合流部12に与えられたデータパケットPA1は図13(B)の構成を有する。なお、入出力制御部11では世代番号GとデータDは変化しない。
【0013】
合流部12は、入出力制御部11から与えられるデータパケットPA1、ならびに分岐部17から出力されるデータパケットPA1を順次入力して、発火制御部13に出力する。
【0014】
発火制御部13には、対となるデータパケットPA1を検出する(これを発火という)ための待合せメモリ131と定数データが1つ以上格納される定数データメモリ132が含まれる。発火制御部13は、待合せメモリ131を利用して合流部12から与えられるデータパケットPA1について必要に応じて待合せを行なう。この結果、ノード番号Nおよび世代番号Gが一致する2つのデータパケットPA1、すなわち対となる異なる2つのデータパケットPA1のうち一方のデータパケットPA1のフィールド21のデータDを、他方のデータパケットPA1のフィールド21に追加して格納して、この他方のデータパケットPA1を演算部14に出力する。このとき一方のデータパケットPA1は消去される。ここでは、演算されるべき相手がデータパケットPA1ではなく定数データである場合には、発火制御部13での待合せは行なわれず、定数データが定数データメモリ132から読出されてデータパケットPA1のフィールド21に追加して格納されて、該データパケットPA1は演算部14に出力される。
【0015】
演算部14は発火制御部13から与えられたデータパケットPA1を入力して、データパケットPA1の命令コードCを解読して、解読結果に基づいて、所定の処理を行なう。命令コードCがデータDを含むデータパケットPA1の内容に対する演算命令を示す場合には該命令コードCに従いデータパケットPA1の内容について所定の演算処理が施されて、その結果は該データパケットPA1に格納されて、該データパケットPA1はプログラム記憶部16に出力される。また、このとき、データパケットPA1の命令コードCがメモリアクセス命令を指示している場合には内蔵メモリ15へのアクセス処理が行なわれて、アクセス結果を格納したデータパケットPA1はプログラム記憶部16に出力される。なお、演算部14に接続されるメモリはデータ駆動型処理装置1に内蔵されるメモリ15に限定されず該装置に外付けされるメモリであってもよい。
【0016】
また演算部14は、命令コードCがデータメモリ3に対するアクセス命令を示す場合にはアクセス要求として該データパケットPA1を、データ伝送路8を介してメモリインターフェース2に与える。
【0017】
メモリインターフェース2は、データ伝送路8を介して与えられたデータパケットPA1を入力して、該入力データパケットPA1の内容に従って、メモリアクセス制御線SSLを介してデータメモリ3をアクセスする。そのアクセスの結果は該入力データパケットPA1のフィールド21にデータDとして格納されて、該データパケットPA1はデータ伝送路9を介して演算部14に与えられる。
【0018】
プログラム記憶部16は、複数の次位の命令コードCおよびノード番号Nからなるデータフロープログラムが格納されたプログラムメモリ161を有する。プログラム記憶部16は、演算部14から与えられたデータパケットPA1を入力し、該入力データパケットPA1のノード番号Nに基づくアドレス指定によって、次位のノード番号Nおよび次位の命令コードCをプログラムメモリ161から読出し、読出したノード番号Nおよび命令コードCを、該入力データパケットPA1のフィールド19および22のそれぞれに格納して、該入力データパケットPA1を分岐部17に出力する。
【0019】
分岐部17は、与えられたデータパケットPA1の命令コードCが該データ駆動型処理装置1内の演算部14で実行されるべきものか、外部のデータ駆動型処理装置1の演算部14で実行されるべきものかを判別する。外部のデータ駆動型処理装置1の演算部14で実行されるべきと判別された場合にはデータパケットPA1が入出力制御部11に出力されて、入出力制御部11はデータパケットPA1を適切な出力ポートから該装置の外部に出力する。一方、該データ駆動型処理装置1内の演算部14で実行すべきと判別された場合は、データパケットPA1は合流部12に与えられる。
【0020】
このようにして、データパケットPA1がデータ駆動型処理装置1内を周回することにより、プログラムメモリ161に予め記憶されたデータフロープログラムに従う処理が進行する。
【0021】
データパケットはデータ駆動型処理装置1内においてはハンドシェイクによって非同期に転送される。プログラムメモリ161に格納されたデータフロープログラムに従う処理は、データパケットがデータ駆動型処理装置1内を周回することによるパイプライン処理に従い並列に実行される。よって、データ駆動型処理方法によれば、データパケット単位での処理の並列性が高く装置内を周回するデータパケットのフローレートが処理性能の1つの尺度となる。
【0022】
近年はこのようなデータ駆動型処理方法の特徴が、大量の演算を高速で行なうことが必要とされる画像処理あるいは映像信号処理へと応用される。画像や映像信号の性質上、これらに対応のデータのビット長は短い。したがって、画像処理あるいは映像信号処理においても短いビット長のデータが処理対象とされる。現在、図13(A)と(B)のデータDのフィールド21は12bit長を有する。同様に、データメモリ3や内蔵メモリ15における1ワードも、12bit長を有する。
【0023】
上述したような画像処理あるいは映像信号処理とは異なり処理対象とされるデータのビット長が非常に長い処理もある。このような処理としては、たとえば公開された鍵を用いた暗号化処理である公開鍵暗号化処理やそのための復号化処理がある。
【0024】
ここで、上述の公開鍵暗号化処理について説明する。周囲には秘密にして、特定の相手にだけある文(データ)を伝えたいとき、その伝えたい文(データ)を平文と呼び、平文を相手に伝達するために暗号化処理を施したものを暗号文と呼ぶ。平文をある法則によって暗号文へ変換する(暗号化する)あるいは暗号文を平文へ変換する(復号化する)ためのパラメータを鍵と呼ぶ。公開鍵暗号化方式では、数学的な性質が利用されることにより暗号文や公開鍵が第三者にわかっても送受信者が互いに独自に持っている秘密の鍵が知られなければ暗号文を解読できない、または容易には解読できない仕組みとなっている。公開鍵暗号化方式の代表的なものとしてはRSA(Rivest ,Shamir, Adlemanの略)やDH(Diffie Hellmanの略)がある。以下、一例としてDHの鍵交換について説明する。
【0025】
鍵交換を行なう2人をAとBとする。AとBは、自分の秘密鍵S(A)およびS(B)のそれぞれを生成し、これを使って自分の公開鍵P(A)およびP(B)のそれぞれを、次の方法で作成する。なお、秘密鍵S(A)およびS(B)のそれぞれは1024bit長のデータである。公開鍵暗号化処理では秘密鍵は一般的に1024bit長を有する。
【0026】
公開鍵P(A)=G^S(A)modPおよび公開鍵P(B)=G^S(B)modPで求められる。ここで“^”は冪乗算を示し“mod”は剰余算を示す。また、変数GおよびPの値は定数として予め定められている。AとBは、お互いに生成した公開鍵を相手に送信し、各人が相手の公開鍵を受理すると、次のように共通鍵Cが作成される。つまり、Aは、C=P(B)^S(A)modPにより共通鍵Cを作成し、BはC=P(B)^S(A)modPに従い共通鍵Cを作成する。
【0027】
2人が求めた共通鍵Cは全く同じ値となり、こうして秘密鍵を第三者に知られることなく送受信者で鍵の共有を図ることができる。なおS(A)、S(B)およびPは1024bit長のデータであり、P(A)、P(B)およびCもまた1024bit長のデータである。
【0028】
上述した公開鍵の作成で使用される“X^YmodZ”という式に従う演算結果を求める際には、Xを乗数とする乗算または2乗演算と、Zを除数とする除算とが交互に繰返し行なわれる。またこの繰返し計算の中間結果を格納するために作業領域U(2048bit)およびV(2048bit)が準備される。“X^YmodZ”の演算のための処理フローが図14に示される。
【0029】
図14はノイマン型計算機においてX^YmodZの演算を実行するための処理フローチャートである。図14の処理フローを説明する。変数X,YおよびZは、それぞれ1024bit長で構成されている。これら変数の値は、計算機内の内部メモリに格納されており処理開始時に内部メモリから読出される。その後、交互に中間演算とその結果格納が行なわれながら演算が進行する。なお、処理フローにおいて変数Y[k]は変数Yのkビット目の値を示す。
【0030】
まず、ステップS1において初期設定がなされる。つまり作業領域Uの内容はリセットされて作業領域Vの内容には1が設定される。そして制御変数kに1023がセットされる。つまり、制御変数kが1023から0まで1ずつデクリメントされながら、以下の演算が繰返される。
【0031】
ステップS2では、変数Y[k]が1であるか0であるかで処理は分岐する。もし、変数Y[k]が1であれば、ステップS3の処理に移行するが、0であれば後述のステップS6に移行する。
【0032】
ステップS3では、V×Xの演算が行なわれ、その結果が作業領域Uに格納される。次のステップS4ではU%Zに従う演算がなされて、つまり(作業領域Uに格納された値÷Z)の剰余が求められて、その剰余値が作業領域Vに格納される。次のステップS5では、制御変数kが0であるか否かが判定される。0でなければステップS6において、作業領域Vの値が2乗されて、その結果が作業領域Uに格納される。そして、次のステップS7ではU%Zに従う演算がなされて、すなわち(作業領域Uに格納された値÷Z)の剰余が求められて、その剰余値が作業領域Vに格納される。次のステップS8においては、制御変数kの値が1デクリメントされる。以降S2〜S8の処理が、ステップS5においてk=0と判定されるまで繰返される。その結果、作業領域Vに格納されている値が、“X^YmodZ”の演算結果値となる。
【0033】
このように公開鍵暗号化処理および復号化処理に代表されるように多倍精度データを処理する要求が生じているが、従来のデータ駆動型処理装置1によって多倍精度データを処理する方式はまだ確立されていない。詳述すると、公開鍵暗号化処理で必要とされる演算のビット長は1024bit程度であり、データ駆動型処理装置1によって、そのようなビット長を有した演算器、データパケットおよびメモリの1ワードを構成することは、データ駆動型処理装置1をLSI(集積回路の略)を用いて実現する場合の回路実装面積およびバス幅などの物理的な制約上非常に困難である。
【0034】
それゆえにこの発明の目的は、多倍精度データを効率よく処理することのできるデータ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法を提供することである。
【0035】
【課題を解決するための手段】
この発明の或る局面に係るデータ駆動型処理装置は、単精度のデータが格納されたデータフィールドと命令コードが格納された命令フィールドとを有するデータパケットを、要求信号が与えられたことに応じて転送する転送制御部と、転送制御部により転送される前記データパケットを入力するパケット入力手段と、多倍精度の1つ以上のオペランドが格納されるオペランド記憶部と多倍精度のデータが格納されるデータ記憶部とを有して、パケット入力手段によりデータパケットが入力される毎に入力データパケットの内容に従い演算する演算処理手段を備える。この演算処理手段は、パケット入力手段によりデータパケットが入力されたことに応じて、入力データパケットの前記命令フィールドに格納された命令コードに基づいて、オペランド記憶部の1つ以上のオペランドから所望オペランドを選択して単精度単位で順次読出す読出手段と、読出手段により所望オペランドが単精度単位で読出される毎に、読出された単精度単位のオペランドと入力データパケットのデータフィールドに格納された単精度のデータとを所定演算して該所定演算結果を所定ビット数だけシフトし、データ記憶部に格納された内容に該シフト結果を加算またはデータ記憶部に格納された内容から該シフト結果を減算し、加算または減算の結果をデータ記憶部に格納する処理を繰返す累算手段と、累算手段による処理の繰返し終了が検出されたことに応じて、累算手段による累算の結果が格納されたデータ記憶部の内容を読出して、読出した内容を入力データパケットのデータフィールドに格納して該データパケットを出力するパケット出力手段とをさらに有する。
データパケットのデータフィールドには、さらに、データ記憶部の内容における加算または減算を施す桁の位置を示す基準値が格納されて、転送制御部は、要求信号が与えられる毎にカウント値がリセットされて、その後、累算手段による処理が行なわれる毎にカウント値が1だけ更新されるカウンタを含み、所定ビット数は、カウンタのカウント値とデータパケットのデータフィールドに格納された基準値とに基づいて決定される。
【0036】
上述のデータ駆動型処理装置では、処理実行中に演算処理手段に入力されたデータパケットの単精度のデータは、多倍精度の1つ以上のオペランドから選択された所望オペランドと単精度単位毎に繰返し所定演算されて、所定演算結果は累算されて、繰返し終了後に累算結果を格納した入力データパケットは演算処理手段から出力される。
【0037】
したがって、データ駆動型処理装置において多倍精度データについて演算処理が行なわれる際には、演算対象の2オペランドのうちの一方の多倍精度データは複数の単精度データに分割されて単精度データの集合体として扱われる。それゆえに、データ駆動型処理装置においては、多倍精度データ同士の所定演算を単精度データを対象とする独立な複数の演算要素に分割できて、分割により得られた各単精度データについての演算をすべて同時並列に実行できる。したがって、データ駆動型処理装置の並列処理能力を最大限に発揮できる。また、多倍精度データの累算結果を格納するデータ記憶部が備えられるから、一括したハードウェア処理により演算の高速化を図ることができる。すなわちデータ駆動型処理装置では、データパケット単位の並列処理能力とデータ記憶部などの専用ハードウェアによる高速処理能力とは協調しあって互いにその能力が損なわれることはない。それゆえに、データ駆動型処理装置では多倍精度データの演算処理が実行される場合であっても処理速度と処理効率の向上を図ることができる。
【0038】
上述したデータ駆動型処理装置によれば、多倍精度データについて演算処理が行なわれる際には、データ駆動型処理装置の演算処理部における1回の命令コードの実行だけで実現することができて、メモリアクセスを省略できる。それゆえに、このような演算処理を非常に高速かつ効率良く実行できる。
【0039】
上述のデータ駆動型処理装置において、1つ以上の多倍精度のオペランドのそれぞれはM1ビット長を有し単精度のデータはK1ビット長を有する場合に、累算手段では、K1ビット長のデータ同士を所定演算して該所定演算結果をシフト処理しながらデータ記憶部に累算する処理が、(M1/K1)回繰返される。
【0040】
上述のデータ駆動型処理装置によれば、多倍精度データについての演算処理の実行所要時間を、入力データパケットの単精度データと所望オペランドとデータ記憶部の累算結果それぞれのビット長に依存して決定することができる。
【0041】
上述のデータ駆動型処理装置においては、読出手段は、入力データパケットの命令フィールドの命令コードに基づいて、1つ以上のオペランドから所望オペランドを選択する。そして累算手段は、シフト後の所定演算結果とデータ記憶部の内容と加算して加算結果をデータ記憶部に格納する加算的累算およびシフト後の所定演算結果を前記データ記憶部の内容から減算して減算結果をデータ記憶部に格納する減算的累算のいずれかを、入力データパケットの命令フィールドの命令コードに従い選択して実行する。
【0042】
上述のデータ駆動型処理装置によれば、所望オペランドの選択および累算に関する選択は同一命令コードに基づいて実行することができる。
【0044】
上述のデータ駆動型処理装置によれば、カウンタによりカウントされる累算手段の処理の繰返し回数値に基づいて、シフト処理のシフト量を制御できるとともに、累算手段による処理の繰返し終了を、言換えると多倍精度データの演算結果が算出されたタイミングを検知できる。
【0045】
この発明の他の局面に係るデータ処理方法は、単精度のデータが格納されたデータフィールドと命令コードが格納された命令フィールドを有するデータパケットを、要求信号が与えられたことに応じて転送する転送制御部と、転送制御部により転送されるデータパケットを入力するパケット入力手段と、多倍精度の1つ以上のオペランドが格納されるオペランド記憶部と、多倍精度のデータが格納されるデータ記憶部とを備えるデータ駆動型処理装置に適用される方法であって、以下のステップを備える。つまり、データパケットが入力されたことに応じて、入力データパケットの命令フィールドに格納された命令コードに基づいて、オペランド記憶部の多倍精度の1つ以上のオペランドから所望オペランドを選択して単精度単位で順次読出す読出ステップと、読出ステップにより所望オペランドが単精度単位で読出される毎に、読出された単精度単位のオペランドと入力データパケットのデータフィールドに格納された単精度のデータとを所定演算して該所定演算結果を所定ビット数だけシフトし、データ記憶部に格納された内容に該シフト処理結果を加算またはデータ記憶部に格納された内容から該シフト処理結果を減算し、加算または減算の結果をデータ記憶部に格納する処理を繰返す累算ステップと、累算ステップによる処理の繰返し終了が検出されたことに応じて、累算ステップによる処理の結果が格納されたデータ記憶部の内容を読出して、読出した内容を、入力データパケットのデータフィールドに格納して該データパケットを出力するパケット出力ステップとを備える。
データパケットのデータフィールドには、さらに、データ記憶部の内容における加算または減算を施す桁の位置を示す基準値が格納されて、転送制御部は、要求信号が与えられる毎にカウント値がリセットされて、その後、累算ステップによる処理が行なわれる毎にカウント値が1だけ更新されるカウンタを含み、所定ビット数は、カウンタのカウント値とデータパケットのデータフィールドに格納された基準値とに基づいて決定される。
【0046】
上述のデータ処理方法では、処理実行中に演算処理部に入力されたデータパケットの単精度のデータは、多倍精度の1つ以上のオペランドから選択された所望オペランドと単精度単位毎に繰返し所定演算されて、所定演算結果は累算されて、繰返し終了後に累算結果を格納した入力データパケットは演算処理部から出力される。
【0047】
したがって、上述のデータ処理方法に従いデータ駆動型処理装置において多倍精度データについて演算処理が行なわれる際には、演算対象の2オペランドのうちの一方の多倍精度データは複数の単精度データに分割されて単精度データの集合体として扱われる。それゆえに、データ駆動型処理装置においては、多倍精度データ同士の所定演算を単精度データを対象とする独立な複数の演算要素に分割できて、分割により得られた各単精度データについての演算をすべて同時並列に実行できる。したがって、データ駆動型処理装置の並列処理能力を最大限に発揮できるから、データ駆動型処理装置では多倍精度データの演算処理が実行される場合であっても処理速度と処理効率の向上を図ることができる。
【0048】
上述したデータ処理方法に従いデータ駆動型処理装置で多倍精度データについて演算処理は、演算処理部における1回の命令コードの実行だけで実現することができて、メモリアクセスを省略できる。それゆえに、このような演算処理を非常に高速かつ効率良く実行できる。
【0049】
【発明の実施の形態】
以下、この発明の実施の形態について説明する。
【0050】
まず、本実施の形態の特徴について説明する。
本実施の形態では、データ駆動型処理装置において多倍精度データの演算を実行するためにLSIとして実現できる現実的な範囲でのビット長を有したデータと多倍精度データのレジスタ、さらに多倍精度データについての加算器(または減算器)を使用する。
【0051】
図1は、この発明の実施の形態に係る演算部140の構成を、入出力されるデータパケットとともに示す図である。図2は、図1のASUM/ADED演算回路67の構成を示す図である。
【0052】
図3は、この発明の実施の形態に係るデータ駆動型処理装置10のブロック図である。図4(A)と(B)はこの発明の実施の形態による多倍精度データの分割を説明する図である。図4(A)の1024bitの多倍精度データAは図4(B)の32bitデータA[0]〜A[31]に分割される。データA[0]〜A[31]のそれぞれは、対応するそれぞれのデータパケットPA1のフィールド21に格納される。このようにして1024bitの多倍精度データAは、32個のデータパケットPA1の集合として表現される。図4(B)では32個のデータパケットPA1のそれぞれについてはフィールド21に格納されるデータA[0]〜A[31]のそれぞれのみ示されて、他のフィールドのデータは省略される。
【0053】
図5は図1のASUM/ADED演算回路67における2つの選択を模式的に説明する図である。図6は図5のASUM/ADED演算回路67におけるデータの操作を模式的に説明する図である。
【0054】
図3のデータ駆動型処理装置10は図1のシステムにおいて従来のデータ駆動型処理装置1に代替して設けられる。図3のデータ駆動型処理装置10と図2の従来のデータ駆動型処理装置1とを比較して異なる点はデータ駆動型処理装置10はデータ駆動型処理装置1の演算部14に代替して演算部140を備える点である。データ駆動型処理装置10の他の部分はデータ駆動型処理装置1と同様であるので説明を省略する。
【0055】
図1を参照して、演算部140はDEMUX(デマルチプレクサの略)回路64、ASUM/ADED演算回路67、メモリ演算回路68、各種分岐命令を実行するSWITCH回路70、他の種類の演算を行なう演算回路65、66および69、ならびにMUX(マルチプレクサの略)回路71を含む。ASUMA/ADED演算回路67は多倍精度データの累積加算命令ASUMA,ASUMBおよびASUMCと多倍精度データの累積減算命令ADEDA,ADEDBおよびADEDCを実行する。SWITCH回路70は従来から提供される回路である。メモリ演算回路68は必要に応じて内蔵メモリ15をアクセスする。
【0056】
演算部140にはデータパケットPA1(IN)が入力される。データパケットPA1(IN)にはフィールド22に命令コードC、フィールド19にノード番号N、フィールド20に世代番号G、およびフィールド21にデータDとして左データLDおよび右データRDが格納される。左データLDおよび右データRDは対応の命令コードCが2項演算命令などを示す場合に、発火制御部13における待合せによって得られた2つのオペランドデータである。ただし、対応の命令コードCが2項演算命令であっても、演算対象となる2つのオペランドデータの一方が定数である場合には、フィールド21には発火制御部13において定数データメモリ132から読出された定数データが格納される。
【0057】
データパケットPA1(IN)が演算部140に入力されると、入力データパケットPA1の命令コードCはDEMUX回路64とMUX回路71に与えられる。DEMUX回路64は与えられる命令コードCに基づいて演算回路65〜70のうちのいずれか1つを選択して、選択した回路に該入力データパケットPA1(IN)を与える。この演算回路の選択は、演算部140において並列配置された累積演算処理(ASUM/ADED演算回路67による処理)と非累積演算処理(回路65,66および68〜70による処理)のいずれか一方処理への分岐を示す。
【0058】
非累積演算処理では、データパケットのデータまたはメモリデータに対する演算が行なわれる。演算内容は、加算、減算などの算術演算、シフト演算、論理和や論理積などの論理演算、データパケットの各フィールドの値を操作するフィールド操作などであってよい。ここでは、非累積演算処理についての詳細については省略する。
【0059】
ASUM/ADED演算回路67には、後述するように多倍精度データのオペランドレジスタと結果レジスタが含まれており、必要に応じてこれらレジスタへアクセスし演算がなされる。この動作の詳細については後述する。各演算回路は、与えられるデータパケットPA1(IN)の内容を対応の命令コードCに基づいて演算し、その演算結果をデータパケットPA1(IN)のフィールド21に格納し、該データパケットPA1(IN)をMUX回路71に与える。
【0060】
MUX回路71は与えられる命令コードCに基づいて演算回路65〜70のいずれか1つの出力(データパケットPA1(IN))を選択して入力する。そして、入力したデータパケットPA1(IN)はデータパケットPA1(OUT)としてプログラム記憶部16に出力される。
【0061】
データパケットPA1(OUT)はフィールド22に命令コードC、フィールド19にノード番号N、フィールド20に世代番号Gおよびフィールド21にデータDならびに真偽フラグFLを格納する。
【0062】
真偽フラグFLはSWITCH命令を含む各種の分岐命令の実行結果によって出力される1ビットのフラグデータである。SWITCH命令による判定結果が「真」のときは真偽フラグFLに1が設定され「偽」のときには0が設定される。分岐命令以外の命令では、真偽フラグFLには「真」を表わす“1”が常に出力される。真偽フラグFLに従い次位の命令コードCと次位のノード番号Nとがプログラム記憶部16のプログラムメモリ161から読出される。つまりSWITCH命令の次に実行される命令は、真偽フラグFLの値に従いプログラムメモリ161から選択的に読出される。
【0063】
図2は多倍精度データの累積演算処理部を示しており、図1におけるASUM/ADED演算回路67の内部構成に相当する。累積演算処理部は、データパケットの転送を制御する転送制御部301と転送制御素子(以下、C素子という)202、データパケットPA1(IN)の内容を保持するデータラッチ回路203および204、第1オペランドレジスタ群205、2048bitの演算結果が格納される結果レジスタ206(以下、REG_RLT206という)、第1オペランドレジスタ群205から単精度データ(32ビットのデータ)を選択的に読出すためのMUX回路207、MUX回路208、乗算器209、シフト演算器210、多倍精度データのための加算器または減算器(以下、加算器/減算器という)211を有する。
【0064】
MUX回路208は、REG_RLT206の内容を入力パケットPA1(IN)のフィールド21に格納して出力すべきデータパケットPA1(OUT)を構成し出力する。
【0065】
加算器/減算器211はシフト演算器210から出力されたデータとREG_RLT206の内容とを用いて入力パケットPA1(IN)の命令コードCに従い加算および減算のいずれかをして、その結果をREG_RLT206に格納する。したがって、加算器/減算器211とREG_RLT206との動作により、加算結果の累算処理および減算結果の累算処理のいずれかが行なわれて、累算結果はREG_RLT206に保持される。
【0066】
第1オペランドレジスタ群205は、それぞれが1024bitのレジスタREG_OPA(以下、REG_OPAという)205a、レジスタREG_0PB(以下、REG_OPBという)205bおよびレジスタREG_OPC(以下、REG_OPCという)205cを含む。これらレジスタのそれぞれには、2項演算のための2つのオペランドのうちの1方オペランド(第1オペランドという)が定常的に格納される。言換えると所定のデータフロープログラムが予め実行されることにより、これらレジスタのそれぞれに初期値が格納される。
【0067】
ASUM/ADED演算回路67には、図1のDEMUX回路64による選択の結果、多倍精度データの累積加算命令(累積加算命令とは、加算して加算結果を累算する命令)または多倍精度データの累積減算命令(累積減算命令とは、減算して減算結果を累算する命令)が選択された場合に限りデータパケットPA1(IN)が入力される。その場合には、データパケットPA1(IN)の命令コードCはASUM/ADED演算回路67で実行されるべき累積加算または累積減算の命令を示し、対応のノード番号Nと世代番号Gはプログラムを実行する上での適切な値を示し、対応の左データLDは演算対象である32bitの他方オペランド(第2オペランドという)を示し、対応の右データRDは第2オペランドを用いた乗算後に累積加算(または累積減算)する桁の位置を指示するための基準値Colを示す。ノード番号Nと世代番号Gは、ここでは特に使用されない。
【0068】
ASUM/ADED演算回路67では、入力データパケットPA1(IN)の命令コードCによって図5に示す2つの選択がなされた後、図6に示すデータ操作が行なわれる。図5に示す2つの選択とは次のようなものである。
【0069】
第1の選択において、命令コードCに基づいて、第1オペランドレジスタ群205中の3つのレジスタから、すなわちREG_OPA205a、REG_OPB205bおよびREG_OPC205cから演算対象として1つが選択される。選択されたレジスタを以下、レジスタREG_OPと称する。レジスタREG_OPの内容は入力データパケットPA1(IN)の32bitの単精度データである左データLD(第2オペランド)と乗算される。第2の選択において、前述の乗算結果は、命令コードCに基づいて、REG_RLT206の内容に累積加算するか累積減算するかが選択される。累積加算および累積減算のいずれかが選択されると、乗算結果は累算すべき桁の位置を示す対応の基準値Col(右データRD)に従い算術左シフトされた後、REG_RLT206の内容に累積加算または累積減算される。
【0070】
前述した2つの選択の組合せにより、ASUM/ADED演算回路67で実行される命令コードCで示される演算命令は、3×2=6種類から1つが選ばれていることになる。6種類の演算命令には、命令コードCが‘ASUMA’、‘ASUMB’および‘ASUMC’で示される3種類の累積加算命令と、命令コードCが‘ADEDA’、‘ADEDB’および‘ADEDC’で示される3種類の累積減算命令とが含まれる。これら命令コードの末尾の‘A’、‘B’および‘C’のそれぞれは、演算対象がREG_OPA205a、REG_OPB205bおよびREG_OPC205cのそれぞれの内容であることを示す。
【0071】
レジスタREG_OPの1024bitのデータ(第1オペランド)と32bitの左データLD(第2オペランド)を乗算して、乗算結果をREG_RLT206の内容に累積加算および累積減算のいずれかをする処理の手順が図6に示される。このような処理手順は図6に示されるように、「32bit×32bitの乗算」&「算術左シフトとREG_RLT206を用いた累積加算または累積減算」の処理セットが、32回繰返し実行されることにより達成される。
【0072】
図6ではレジスタREG_OPとしてREG_OPA205aが選択されたと想定する。図4(A)と(B)に示されるようにレジスタREG_OPの1024bitのデータは32bitのデータop[0]〜データop[31]に分割される(図6のS1)。その後、データop[i](i=0、1、2、3、…31)のそれぞれについて上述した処理セットが繰返されて、その結果を格納したデータパケットPA1(OUT)が生成されて、出力される。
【0073】
図6において上述した処理セットの第1回目の実行ではレジスタREG_OPの最下位の32bitのデータop[0]と左データLDとの間で乗算器209により乗算がなされ(図6のS2)、乗算結果はシフト演算器210により(32*Col)ビットだけ算術左シフトされる(図6のS3)。この算術左シフト時には後述するように0フィル処理がなされて符号拡張処理がなされる。その結果は、加算器/減算器211によりレジスタREG_RLT206の内容に累積加算または累積減算される(図6のS4、S5)。次に、上述した処理セットの第2回目の実行では、レジスタREG_OPの次のデータop[1]と左データLDとの間で乗算器209により乗算がなされ、乗算結果はシフト演算器210により(32*(Col+1))ビットだけ算術左シフトされた後、加算器/減算器211によりREG_RLT206の内容に累積加算または累積減算される(S2〜S4)。以降のデータop[i]について上述の処理セットが第3回目から第32回目まで同様にして繰返し実行される。その結果、レジスタREG_OPの内容と左データLDの乗算結果は、REG_RLT206の内容に累積加算または累積減算する処理が達成される。
【0074】
図2では、乗算器209と加算器/減算器211の累算部とはパイプライン構造となっているので単精度(32bit)の乗算の32回の繰返しによる遅延は累算自体の処理には影響を及ぼさない。
【0075】
図6で示された処理は、図2では以下のように動作する。
前述した第1回目から第32回目の処理セットの各回の実行は、信号CP1の変化によって開始される。信号CP1の変化時に、前段の処理部(図示せず)から入力データパケットPA1(IN)がデータラッチ回路203に取込まれ、常に保持される。また、この時、第1オペランドレジスタ群205の中から、命令コードCと信号NUMに基づいてMUX回路207により32bitのデータop[i]が抽出される。ここで命令コードCは入力データパケットPA1(IN)に含まれる命令コードCであり、信号NUMは転送制御部301内でカウントされる処理セットの繰返し回数(1〜32のいずれか)を示す。詳細には、MUX回路207は、データラッチ回路203が保持している命令コードCに基づいて第1オペランドレジスタ群205の中から演算対象とされる1つのオペランドレジスタを選択すると、選択されたオペランドレジスタのデータ(1024bit)から信号NUMに基づいて32bitのデータを抽出してデータop[i]として出力する。このように、MUX回路207により命令コードCと信号NUMとに基づいて、1024bit*3のデータから32bitのデータop[i]が選択される。
【0076】
次に乗算器209によりデータop[i]と入力データパケットPA1(IN)の左データLDの乗算がなされ、64bitの乗算結果データが出力される。この乗算結果データは、信号NUMと入力データパケットPA1(IN)の右データRDにより算術左シフトと0フィル処理がなされて2048bitへ拡張される。なお、0フィルとは、図6で示されるように左シフトされていない、すなわち計算が施されていない上位ビットの全てに0をセットすることをいう。ここで、右データRDは基準値Colを示す。
【0077】
次に、加算器/減算器211において、2048bitのデータとREG_RLT206の内容(2048bit)との間で命令コードCに基づいて加算および減算のいずれかが実行される。実行結果は、信号CP2の変化によりREG_RLT206の内容に累算される。
【0078】
加算器/減算器211により累積加算が行なわれるREG_RLT206上の桁の位置をデータパケットPA1(IN)の内容で指定できる。すなわち入力データパケットPA1(IN)の単精度データとオペランドレジスタの多倍精度データとの乗算結果をREG_RLT206の内容に累算する場合に、乗算結果の最下位ビットをREG_RLT206のどのビットに合せて累算するかを、データパケットPA1(IN)の内容で指定できる。また、シフト演算器210による算術左シフトでは、シフト量は「データパケットPA1(IN)の右データRD」と「単精度乗算の繰返し回数」とから決定される。
【0079】
ASUM/ADED演算回路67におけるデータ転送は、転送制御部301とC素子202によって制御される。
【0080】
図7は、転送制御部301とC素子201の信号の入出力関係を示す図である。図8(A)〜(J)は、図7における信号のタイミングチャートである。図7と図8(A)〜(J)を参照して、転送制御部301とC素子201の信号の入出力動作について説明する。
【0081】
図7を参照して転送制御部301はC素子201とNUMカウンタ302を含む。ここでは、処理のためのデータはC素子201からC素子202の方向に伝送されると想定する。C素子201と202は、入力端子CIとRIおよび出力端子COとROをそれぞれ含む。入力端子CIには、前段からデータの送信を要求する送信要求信号が与えられる。入力端子RIには、次段からデータの受信を許可する受信許可信号が与えられる。出力端子COからは次段に対して送信要求信号が出力される。出力端子ROからは次段に対して受信許可信号が出力される。ここでは、説明を簡単にするために、C素子201は図示されない前段から送信要求信号CIを受理し、また図示されない前段に受信許可信号ROを出力する(図8(A)、(J)参照)。また、C素子202からC素子201に受信許可信号RR(図8(E)参照)が出力されて、C素子201からC素子202に送信要求信号CC(図8(C)参照)が出力されて、C素子202から図示されない次段に送信要求信号CO(図8(I)参照)が出力されると想定する。
【0082】
C素子201は、受信許可信号RRが与えられると、応じて信号INCをNUMカウンタ302に与える(図8(E)と(G)参照)。C素子201は送信要求信号CIを受理すると(図8(A)参照)、応じて信号CP1と信号RSTを、データラッチ回路203とNUMカウンタ302にそれぞれ出力する(図8(B)と(F)参照)。NUMカウンタ302は信号RSTが与えられるとカウント値を1にリセットして、リセット後は、信号INCが与えられる毎にカウントアップしてカウント値を示す信号NUMをMUX回路207とC素子201とC素子202とシフト演算器210にそれぞれ出力する(図8(F)、(G)および(H)参照)。
【0083】
C素子201は信号NUMを参照して動作する。具体的には、与えられる信号NUMが32を示す時に限り受信許可信号ROを出力し(図8(J)参照)、32以外の値を示す時には受信許可信号ROを出力しない。
【0084】
C素子202は信号NUMを参照して動作する。具体的には、信号NUMが32を示す時に限り送信要求信号COを出力し、32以外の値を示す時には送信要求信号COを出力しない(図8(I)参照)。
【0085】
動作において、信号CP1の1回目の変化により上述した処理セットの第1回目が開始されるので、データラッチ回路203は信号CP1が与えられたことに応答して、前段の処理部からデータパケットPA1(IN)を入力する。C素子202は、転送制御部301から出力された送信要求信号CCを上述した各処理セットの計算処理に必要十分な時間だけ遅延された後、受理すると、転送制御部301に対して次のデータの受信を許可する受信許可信号RRを送る(図8(E)参照)とともに、信号CP2を変化させる(図8(D)参照)。ここまでの期間に、上述した処理セットの第1回目の実行は完了している。処理セットの各回にかかる必要十分な所要時間だけ送信要求信号CCの伝送を遅延させるために、伝送路部分に遅延素子303が挿入される。
【0086】
処理セットの第2回目以降の実行は、C素子202からの受信許可信号RRの変化により転送制御部301が第1オペランドレジスタ群205を制御する信号CP11を再び変化させることで開始される。転送制御部301はまた同時に送信要求信号CCを送り、信号NUMの値を1だけインクリメントする。C素子202は、転送制御部301から遅延を介して送信要求信号CCを受理した時点で信号NUMを参照しNUM=32であったときに限り、次の処理に対する送信要求信号COを送り信号NUMがそれ以外の値のときは送信要求信号COは送らない。このようにすることで、第32回目の処理セットの実行が終了したときに限りデータパケットPA1(OUT)は出力されて次段の処理部(図示せず)へ転送され、第1回目の処理セットから第31回目の処理セットの間はデータパケットPA1(OUT)は出力されず次段の処理部へ転送されないように制御される。
【0087】
転送要求信号COが変化するとMUX回路208において構成されたデータパケットPA1(OUT)は出力されて次段の処理部(図示せず)へ転送される。
【0088】
本実施の形態では、演算対象となる多倍精度データはデータ駆動型処理装置10をフローするデータパケットのフィールド21に格納可能なビット長を有した複数のデータに分割される。仮に1024bitの多倍精度データは32bitの32個のデータに分割されると想定する。この分割の様子は図4(A)と(B)に示した。
【0089】
ここで、例として図14の多倍精度データ演算のフローにおいて「U←V×X」の演算について示す。ここでVとXはそれぞれ1024bitの多倍精度データでありUは2048bitの多倍精度データであるとする。図9は、多倍精度データの演算「U←V×X」を表現する式を示す図である。演算「U←V×X」は、図9の式(1)のように分割表現される。式(1)における‘≪’はシフト演算を示す。図9の式に対応の処理フローが図10に示される。式(1)でV[0],V[1],…,V[31]は図4(B)のパケット分割に従う。そこで、式(1)より、次のような使用法が考えられる。多倍精度データUをREG_RLT206へ、多倍精度データXを第1オペランドレジスタに対応のREG_OPA205aへ割当て、多倍精度データVはデータパケットV[0],V[1],…,V[31]へと分割する(図9の式(2)参照)。このようにすることで前述した演算は、累積加算命令ASUMAの32回の繰返し実行によって達成される(図9の式(3)参照)。32個の累積加算命令ASUMAのそれぞれに関する入力はデータパケットPA1(IN)において右データRD=基準値Col,左データLD=V[Col]であり、基準値Colを0〜31まで変化させて32回演算を実行すればよい。
【0090】
具体的な処理手順を図10を参照して説明する。図10の処理フローはノードN1〜N6を有して、各ノードには実行される命令または処理内容が割当てられている。予め、REG_RLT206の内容は0にセットされて、REG_OPA25aにはデータXがロードされる(ノードN1とN2参照)。その後、データV[0]〜[31]が入力されて、データV[i](i=0、1、2…、31)のそれぞれについてREG_OPA25aのデータX[i]と同期を取りながら命令ASUMA(LD、RD)が実行される(ノードN2a、N3、N3a、N4)。詳細には、図2の乗算器209により32bit*32bitの乗算が32回連続して実行されて、32個の64bitの乗算結果データはREG_RLT206に累積加算される。REG_RLT206の内容は、プログラムによりリセットされるまでは直前の累積加算結果が保存される。
【0091】
その後、再度、命令ASUMA(LD、RD)が同様にして実行されると(ノードN4)、前回の命令ASUMA(LD、RD)の実行結果による累積加算値に、今回の命令ASUMA(LD、RD)の実行結果による累積加算値が累積加算されて、その結果はREG_RLT206に保持される。したがって、図9のように命令ASUMAが32回実行されて演算の終了が判定されると(ノードN5)、REG_RLT206には1024bit*1024bitの演算結果が保持されている。MUX回路208は、演算の終了が判定されるとREG_RLT206から結果データを読出して32ビットのデータU[i](i=0、1、2、…、63)毎に、該データU[i]を格納したデータパケットPA1(OUT)を生成して出力する(ノードN6)。
【0092】
図2の第1オペランドレジスタ群205では、図14のフロー全体を効率よく実現するために3つのオペランドレジスタであるREG_OPA205a,REG_OPB205bおよびREG_OPC205cが設けられる。したがって、図14の多倍精度データ演算のフローを実現するためのレジスタ割当としては、データU(2048bit)をREG_RLT206に、データX(1024bit)をREG_OPA205aに、データZ(1024bit)をREG_OPB205bに、S6における2つのデータV(1024bit)の一方をREG_OPC205cにそれぞれ割当てるとよい。
【0093】
図2の第1オペランドレジスタ群205は3つのオペランドレジスタを含むのは、以下の理由による。つまり、X^YmodZで示される多倍精度データの演算を効率よく行なうためである。「効率よく」とは、オペランドレジスタへの1024bitのオペランドのロード回数を少なくすることを指す。1024bitのデータのロード時間は装置における実行時間に対して無視できない。したがって、オペランドとして値の変化しないデータXとデータZは、オペランドレジスタに常駐させておいた方が、ロードによる負荷を軽減できる。なお、第1オペランドレジスタ群205は3つのオペランドレジスタを含むのは、X^YmodZに従う演算を実行するためには、A*Bで示される多倍精度データの乗算を繰返す必要があるからである。したがって、第1オペランドレジスタ群205には少なくとも1つのオペランドレジスタが含まれればよい。
【0094】
図2では、乗算器209により多倍精度データの乗算が行なわれているが、他の種類の演算、例えば除算が行なわれるようにして、シフト演算器210は与えられるデータに対して右シフト処理するようにしてもよい。また、ここでは、乗算器209とシフト演算器210により入力データに対して一律に乗算が行なわれるようにしているが、入力データパケットPA1(IN)の命令コードCにより指示される種類の演算が行なわれるようにしてもよい。
【0095】
上述のデータ駆動型処理装置によれば、多倍精度データについて命令コードASUM/ADEDに従う演算処理が行なわれる際には、演算対象のオペランドの一方の多倍精度データは複数に分割されて単精度データの集合体として扱われる。それゆえに、データ駆動型処理装置においては、多倍精度データ同士の演算を単精度データを対象とする独立な演算要素に分割することができて、各単精度データについての演算をすべて同時並列に実行できる。それゆえに、データ駆動型処理装置の並列処理能力を最大限に発揮できる。また、多倍精度データの累積結果を格納するREG_RLT206が備えられるから、一括したハードウェア処理による演算の高速化を図ることができる。すなわちデータ駆動型処理装置のデータパケット単位の並列処理能力と専用ハードウェアによる一括した高速処理能力とを協調させ、互いにその能力を損なうことなく処理の高速化と高い効率化を図ることができる。
【0096】
上述したデータ駆動型処理装置によれば、多倍精度データについてASUM/ADEDの演算処理が行なわれる際には、単精度データと多倍精度データとの間の乗算と累積加算/累積減算を、データ駆動型処理装置の1回の命令実行だけで実現することができ、メモリアクセスを省略できる。それゆえに、このような演算処理を非常に高速かつ効率良く実行できる。なお、このような演算処理の実行所要時間は、与えられる入力データパケットPA1(IN)の単精度データと第1オペランドレジスタ群205の各レジスタとレジスタREG_RLT206それぞれのビット長に依存する。
【0097】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【0098】
【発明の効果】
本発明によれば、データ駆動型処理装置において多倍精度データについて演算処理が行なわれる際には、演算対象の2オペランドのうちの一方の多倍精度データは複数の単精度データに分割されて単精度データの集合体として扱われる。それゆえに、データ駆動型処理装置においては、多倍精度データ同士の所定演算を単精度データを対象とする独立な複数の演算要素に分割できて、分割により得られた各単精度データについての演算をすべて同時並列に実行できる。したがって、データ駆動型処理装置の並列処理能力を最大限に発揮できる。また、多倍精度データの累算結果を格納するデータ記憶部が備えられるから、一括したハードウェア処理により演算の高速化を図ることができる。すなわちデータ駆動型処理装置では、データパケット単位の並列処理能力とデータ記憶部などの専用ハードウェアによる高速処理能力とは協調しあって互いにその能力が損なわれることはない。それゆえに、データ駆動型処理装置では多倍精度データの演算処理が実行される場合であっても処理速度と処理効率の向上を図ることができる。
【0099】
上述したデータ駆動型処理装置によれば、多倍精度データについて演算処理が行なわれる際には、データ駆動型処理装置の演算処理部における1回の命令コードの実行だけで実現することができて、メモリアクセスを省略できる。それゆえに、このような演算処理を非常に高速かつ効率良く実行できる。
【図面の簡単な説明】
【図1】 この発明の実施の形態に係る演算部140の構成を、入出力されるデータパケットとともに示す図である。
【図2】 図1のASUM/ADED演算回路67の構成を示す図である。
【図3】 この発明の実施の形態に係るデータ駆動型処理装置10のブロック図である。
【図4】 (A)と(B)はこの発明の実施の形態による多倍精度データの分割を説明する図である。
【図5】 図1のASUM/ADED演算回路67における2つの選択を模式的に説明する図である。
【図6】 図1のASUM/ADED演算回路67におけるデータの操作を模式的に説明する図である。
【図7】 転送制御部301とC素子201の信号の入出力関係を示す図である。
【図8】 (A)〜(J)は、図7における信号のタイミングチャートである。
【図9】 多倍精度データの演算「U→V×X」を表現する式を示す図である。
【図10】 図9の式に対応の処理フローチャートである。
【図11】 従来およびこの発明の実施の形態に適用されるデータ駆動型情報処理システムのブロック構成図である。
【図12】 従来のデータ駆動型処理装置の構成図である。
【図13】 (A)と(B)は従来およびこの発明の実施の形態に適用されるデータパケットのフィールド構成図である。
【図14】 ノイマン型計算機においてX^YmodZの演算を実行するための処理フローチャートである。
【符号の説明】
1,10 データ駆動型処理装置、140 演算部、201,202 C素子、203,204 データラッチ回路、205 第1オペランドレジスタ群、206 REG_RLT、207,208 MUX回路、209 乗算器、210シフト演算器、211 加算器/減算器、301 転送制御部、302 NUMカウンタ、303 遅延素子、PA1(IN),PA1(OUT) データパケット。
Claims (5)
- 単精度のデータが格納されたデータフィールドと命令コードを格納した命令フィールドを有するデータパケットを、要求信号が与えられたことに応じて転送する転送制御部と、前記転送制御部により転送される前記データパケットを入力するパケット入力手段と、多倍精度の1つ以上のオペランドが格納されるオペランド記憶部と、多倍精度のデータが格納されるデータ記憶部とを有して、前記パケット入力手段により前記データパケットが入力される毎に前記入力データパケットの内容に従い演算する演算処理手段を備えて、
前記演算処理手段は、
前記パケット入力手段により前記データパケットが入力されたことに応じて、前記入力データパケットの前記命令フィールドに格納された前記命令コードに基づいて、前記オペランド記憶部の前記1つ以上のオペランドから所望オペランドを選択して前記単精度単位で順次読出す読出手段と、
前記読出手段により前記所望オペランドが前記単精度単位で読出される毎に、読出された前記単精度単位の前記オペランドと前記入力データパケットの前記データフィールドに格納された前記単精度のデータとを所定演算し、該所定演算結果を所定ビット数だけシフトし、前記データ記憶部に格納された内容に該シフト結果を加算または前記データ記憶部に格納された内容から該シフト結果を減算し、前記加算または減算の結果を前記データ記憶部に格納する処理を繰返す累算手段と、
前記累算手段による処理の繰返し終了が検出されたことに応じて、前記累算手段による処理の結果が格納された前記データ記憶部の内容を読出して、読出した内容を前記入力データパケットの前記データフィールドに格納して該データパケットを出力するパケット出力手段とをさらに有し、
前記データパケットの前記データフィールドには、さらに、前記データ記憶部の内容における前記加算または減算を施す桁の位置を示す基準値が格納されて、
前記転送制御部は、
前記要求信号が与えられる毎にカウント値がリセットされて、その後、前記累算手段による処理が行なわれる毎に前記カウント値が1だけ更新されるカウンタを含み、
前記所定ビット数は、前記カウンタの前記カウント値と前記データパケットの前記データフィールドに格納された前記基準値とに基づいて決定される、データ駆動型処理装置。 - 前記1つ以上の多倍精度のオペランドのそれぞれはM1ビット長を有し前記単精度のデータはK1ビット長を有する場合に、
前記累算手段による処理は、(M1/K1)回繰返されることを特徴とする、請求項1に記載のデータ駆動型処理装置。 - 前記累算手段は、前記加算または前記減算のいずれかを、前記入力データパケットの前記命令フィールドに格納された前記命令コードに従い選択して実行することを特徴とする、請求項1または2に記載のデータ駆動型処理装置。
- 前記カウンタのカウント値に基づいて、前記累算手段による前記処理の繰返し終了が検出されることを特徴とする、請求項2または3に記載のデータ駆動型処理装置。
- 単精度のデータが格納されたデータフィールドと命令コードが格納された命令フィールドを有するデータパケットを、要求信号が与えられたことに応じて転送する転送制御部と、前記転送制御部により転送される前記データパケットを入力するパケット入力手段と、多倍精度の1つ以上のオペランドが格納されるオペランド記憶部と、多倍精度のデータが格納されるデータ記憶部とを備えるデータ駆動型処理装置におけるデータ処理方法であって、
前記パケット入力手段により前記データパケットが入力されたことに応じて、前記入力データパケットの前記命令フィールドに格納された前記命令コードに基づいて、前記オペランド記憶部の前記1つ以上のオペランドから所望オペランドを選択して前記単精度単位で順次読出す読出ステップと、
前記読出ステップにより前記所望オペランドが前記単精度単位で読出される毎に、読出された前記単精度単位の前記オペランドと前記入力データパケットの前記データフィールドに格納された前記単精度のデータとを所定演算し、該所定演算結果を所定ビット数だけシフトし、前記データ記憶部に格納された内容に該シフト処理結果を加算または前記データ記憶部に格納された内容から該シフト処理結果を減算し、前記加算または減算の結果を前記データ記憶部に格納する処理を繰返す累算ステップと、
前記累算ステップによる処理の繰返し終了が検出されたことに応じて、前記累算ステップによる処理の結果が格納された前記データ記憶部の内容を読出して、読出した内容を前記入力データパケットの前記データフィールドに格納して該データパケットを出力するパケット出力ステップとを有し、
前記データパケットの前記データフィールドには、さらに、前記データ記憶部の内容における前記加算または減算を施す桁の位置を示す基準値が格納されて、
前記転送制御部は、
前記要求信号が与えられる毎にカウント値がリセットされて、その後、前記累算ステップによる処理が行なわれる毎に前記カウント値が1だけ更新されるカウンタを含み、
前記所定ビット数は、前記カウンタの前記カウント値と前記データパケットの前記データフィールドに格納された前記基準値とに基づいて決定される、データ駆動型処理装置におけるデータ処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000312811A JP3912972B2 (ja) | 2000-10-13 | 2000-10-13 | データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000312811A JP3912972B2 (ja) | 2000-10-13 | 2000-10-13 | データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002123503A JP2002123503A (ja) | 2002-04-26 |
JP3912972B2 true JP3912972B2 (ja) | 2007-05-09 |
Family
ID=18792327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000312811A Expired - Fee Related JP3912972B2 (ja) | 2000-10-13 | 2000-10-13 | データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3912972B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115344525B (zh) * | 2022-08-16 | 2023-04-18 | 江南信安(北京)科技有限公司 | 一种椭圆曲线点加硬件加速方法及装置 |
-
2000
- 2000-10-13 JP JP2000312811A patent/JP3912972B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002123503A (ja) | 2002-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3525209B2 (ja) | べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法 | |
CN102231102B (zh) | 基于余数系统的rsa密码处理方法及协处理器 | |
US8020142B2 (en) | Hardware accelerator | |
Kaihara et al. | A hardware algorithm for modular multiplication/division | |
JP4909403B2 (ja) | 安全にデータを求める方法 | |
KR100682354B1 (ko) | 다배장 데이터 곱합 연산 처리 회로 및 몽고메리 곱합잉여 연산 회로 | |
US7024560B2 (en) | Power-residue calculating unit using Montgomery algorithm | |
JP4302640B2 (ja) | 被乗数のシフトを用いて乗算を計算するための装置およびその方法、上記装置を実行するためのプログラムコードを格納した記録媒体 | |
US8781112B2 (en) | Signed montgomery arithmetic | |
KR101925868B1 (ko) | 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템 | |
KR20040060445A (ko) | 4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그승산 방법 | |
US6963644B1 (en) | Multi-word arithmetic device for faster computation of cryptosystem calculations | |
Keliris et al. | Investigating large integer arithmetic on Intel Xeon Phi SIMD extensions | |
US20040091105A1 (en) | Apparatus for hyperelliptic-curve cryptography processing | |
JP3912972B2 (ja) | データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法 | |
JP3912958B2 (ja) | データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法 | |
US6614909B1 (en) | Methods, systems, and circuits for generating keys for public key cryptosystems using parallel processing for modular operations of IC cards | |
CN115270155A (zh) | 一种获取大数拓展最大公约数的方法及硬件架构 | |
GB2318892A (en) | Co-processor for performing modular multiplication | |
CN113467752A (zh) | 用于隐私计算的除法运算装置、数据处理系统及方法 | |
US10318245B2 (en) | Device and method for determining an inverse of a value related to a modulus | |
JP4223819B2 (ja) | べき乗剰余演算装置及びそのプログラム | |
Vollala et al. | Dual-core implementation of right-to-left modular exponentiation | |
KR100451570B1 (ko) | 에스피에이에 견디는 타원 곡선 암호화 알고리즘을구현하는 방법 및 장치 | |
JP4850884B2 (ja) | べき乗剰余演算器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060131 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060331 |
|
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: 20070123 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070130 |
|
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: 20100209 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110209 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120209 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |