JP2001357025A - データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法 - Google Patents

データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法

Info

Publication number
JP2001357025A
JP2001357025A JP2000178733A JP2000178733A JP2001357025A JP 2001357025 A JP2001357025 A JP 2001357025A JP 2000178733 A JP2000178733 A JP 2000178733A JP 2000178733 A JP2000178733 A JP 2000178733A JP 2001357025 A JP2001357025 A JP 2001357025A
Authority
JP
Japan
Prior art keywords
data
memory
overflow
stored
data packet
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
JP2000178733A
Other languages
English (en)
Other versions
JP3912958B2 (ja
Inventor
Shingo Kamiya
晋吾 紙谷
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.)
Sharp Corp
Original Assignee
Sharp Corp
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 Sharp Corp filed Critical Sharp Corp
Priority to JP2000178733A priority Critical patent/JP3912958B2/ja
Priority to US09/879,004 priority patent/US6941448B2/en
Publication of JP2001357025A publication Critical patent/JP2001357025A/ja
Application granted granted Critical
Publication of JP3912958B2 publication Critical patent/JP3912958B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/506Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/509Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
    • G06F7/5095Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators word-serial, i.e. with an accumulator-register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

(57)【要約】 【課題】 データ駆動型処理において多倍精度データを
効率よく処理する。 【解決手段】 データ駆動型処理装置において、102
4bitの多倍精度データについて所定演算処理が行な
われる際には、多倍精度データは累算メモリ151のメ
モリワード長に準じて32ビット長単位に分割された複
数の単精度データXとして、そしてメモリ151の32
ビット長の32個のメモリワードの集合は該多倍精度デ
ータとして扱われる。それゆえに、データ駆動型処理装
置において多倍精度データ専用の累算器を特別に用意し
なくても通常のメモリの領域で多倍精度データの累算器
の役割を果たすことができる。また、多倍精度データは
32ビット長の単精度データX単位の互いに独立な演算
要素に分割することによってデータについての演算をす
べて同時並列に実行できるから、データ駆動型処理装置
の並列処理能力を最大限に発揮できる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明はデータ駆動型処理
装置およびデータ駆動型処理装置におけるデータ処理方
法に関し、特に、多倍精度形式のデータ(以下、多倍精
度データという)についてデータ駆動型の演算を行なう
データ駆動型処理装置およびデータ駆動型処理装置にお
けるデータ処理方法に関する。
【0002】
【従来の技術および発明が解決しようとする課題】大量
データの高速処理が望まれる場合には、並列処理が有効
である。並列処理向きアーキテクチャのうちでも、デー
タ駆動型と呼ばれるものが特に注目される。
【0003】データ駆動型情報処理システムでは、「あ
る処理に必要な入力データがすべて揃い、かつその処理
に必要な演算装置などの資源が割当てられたときに処理
が行なわれる」という規則に従って処理が並列に進行す
る。
【0004】図13は、従来およびこの発明の実施の形
態に適用されるデータ駆動型情報処理システムのブロッ
ク構成図である。図14は、従来のデータ駆動型処理装
置の構成図である。図15(A)と(B)は従来および
この発明の実施の形態に適用されるデータパケットのフ
ィールド構成図である。図15(A)では、データ駆動
型処理装置の入出力データパケットPAの基本構成が示
される。図15(B)では、データ駆動型処理装置内部
を流れるデータパケットPA1の基本構成が示される。
【0005】図15(A)のデータパケットPAはプロ
セッサ番号PE(Processing Element)を格納するフィ
ールド18、ノード番号Nを格納するフィールド19、
世代番号Gを格納するフィールド20およびデータDを
格納するフィールド21を含む。図15(B)のデータ
パケットPA1は、図15(A)と同様のフィールド1
9〜21と、命令コードCを格納するフィールド22と
を含む。
【0006】図13においてデータ駆動型情報処理シス
テムは従来のデータ駆動型処理装置1(本実施の形態に
適用されるデータ駆動型処理装置10)、複数のデータ
が予め格納されるデータメモリ3およびメモリインター
フェース2を含む。データ駆動型処理装置1(10)は
データ伝送路4、5および9のそれぞれが接続される入
力ポートIA、IBおよびIV、ならびにデータ伝送路
6、7および8のそれぞれが接続される出力ポートO
A、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】図14には、従来のデータ駆動型処理装置
1の構成が示される。図において、データ駆動型処理装
置1は入出力制御部11、合流部12、データ駆動型の
処理を行なうために発火制御部13、内蔵メモリ15が
接続される演算部14およびプログラム記憶部16なら
びに分岐部17を含む。
【0011】ここで図15(A)と(B)を参照する
と、プロセッサ番号PEは、複数のデータ駆動型処理装
置1が接続されたシステムにおいて対応するデータパケ
ットPAが処理されるべきデータ駆動型処理装置1を特
定するための情報である。ノード番号Nは、プログラム
記憶部16の内容をアクセスするためのアドレスとして
用いられる。世代番号Gは、データ駆動型処理装置1に
時系列に入力されるデータパケットを一意に識別するた
めの識別子として用いられる。また世代番号Gはデータ
メモリ3が画像データメモリであった場合には、データ
メモリ3をアクセスするためのアドレスとしても用いら
れる。その際には、世代番号Gは上位ビットから順にフ
ィールド番号F♯、ライン番号L♯およびピクセル番号
P♯を示す。
【0012】動作において、図15(A)のデータパケ
ットPAはデータ伝送路4、5を介してプロセッサ番号
PEで指定されたデータ駆動型処理装置1に与えられる
と入出力制御部11において図15(B)のデータパケ
ットPA1となる。つまり入出力制御部11は、入力し
たデータパケットPAのプロセッサ番号PEのフィール
ド18を破棄して、該入力データパケットPAのノード
番号Nに基づいて、命令コードCと新たなノード番号N
とを得て、該入力データパケットPAのフィールド18
と19にそれぞれ格納して、データパケットPA1を合
流部12に出力する。したがって、入出力制御部11か
ら合流部12に与えられたデータパケットPA1は図1
5(B)の構成を有する。なお、入出力制御部11では
世代番号GとデータDは変化しない。
【0013】合流部12は、入出力制御部11から与え
られるデータパケットPA1、ならびに分岐部17から
出力されるデータパケットPA1を順次入力して、発火
制御部13に出力する。
【0014】発火制御部13には、対となるデータパケ
ットPA1を検出する(これを発火という)ための待合
せメモリ731と定数データが1つ以上格納される定数
データメモリ732が含まれる。発火制御部13は、待
合せメモリ731を利用して合流部12から与えられる
データパケットPA1について必要に応じて待合せを行
なう。この結果、ノード番号Nおよび世代番号Gが一致
する2つのデータパケットPA1、すなわち対となる異
なる2つのデータパケットPA1のうち一方のデータパ
ケットPA1のフィールド21のデータDを、他方のデ
ータパケットPA1のフィールド21に追加して格納し
て、この他方のデータパケットPA1を演算部14に出
力する。このとき一方のデータパケットPA1は消去さ
れる。ここでは、演算されるべき相手がデータパケット
PA1ではなく定数データである場合には、発火制御部
13での待合せは行なわれず、定数データが定数データ
メモリ732から読出されてデータパケットPA1のフ
ィールド21に追加して格納されて、該データパケット
PA1は演算部14に出力される。
【0015】演算部14は発火制御部13から与えられ
たデータパケットPA1を入力して、データパケットP
A1の命令コードCを解読して、解読結果に基づいて、
所定の処理を行なう。命令コードCがデータDを含むデ
ータパケットPA1の内容に対する演算命令を示す場合
には該命令コードCに従いデータパケットPA1の内容
について所定の演算処理が施されて、その結果は該デー
タパケットPA1に格納されて、該データパケットPA
1はプログラム記憶部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で
実行されるべきと判別された場合にはデータパケットP
A1が入出力制御部11に出力されて、入出力制御部1
1はデータパケットPA1を適切な出力ポートから該装
置の外部に出力する。一方、該データ駆動型処理装置1
内の演算部14で実行すべきと判別された場合は、デー
タパケットPA1は合流部12に与えられる。
【0020】このようにして、データパケットPA1が
データ駆動型処理装置1内を周回することにより、プロ
グラムメモリ161に予め記憶されたデータフロープロ
グラムに従う処理が進行する。
【0021】データパケットはデータ駆動型処理装置1
内においてはハンドシェイクによって非同期に転送され
る。プログラムメモリ161に格納されたデータフロー
プログラムに従う処理は、データパケットがデータ駆動
型処理装置1内を周回することによるパイプライン処理
に従い並列に実行される。よって、データ駆動型処理方
法によれば、データパケット単位での処理の並列性が高
く装置内を周回するデータパケットのフローレートが処
理性能の1つの尺度となる。
【0022】近年はこのようなデータ駆動型処理方法の
特徴が、大量の演算を高速で行なうことが必要とされる
画像処理あるいは映像信号処理へと応用される。画像や
映像信号の性質上、これらに対応のデータのビット長は
短い。したがって、画像処理あるいは映像信号処理にお
いても短いビット長のデータが処理対象とされる。現
在、図15(A)と(B)のデータDのフィールド21
は12bit長を有する。同様に、データメモリ3や内
蔵メモリ15における1ワードも、12bit長を有す
る。
【0023】上述したような画像処理あるいは映像信号
処理とは異なり処理対象とされるデータのビット長が非
常に長い処理もある。このような処理としては、たとえ
ば公開された鍵を用いた暗号化処理である公開鍵暗号化
処理やそのための復号化処理がある。
【0024】ここで、上述の公開鍵暗号化処理について
説明する。周囲には秘密にして、特定の相手にだけある
文(データ)を伝えたいとき、その伝えたい文(デー
タ)を平文と呼び、平文を相手に伝達するために暗号化
処理を施したものを暗号文と呼ぶ。平文をある法則によ
って暗号文へ変換する(暗号化する)あるいは暗号文を
平文へ変換する(復号化する)ためのパラメータを鍵と
呼ぶ。公開鍵暗号化方式では、数学的な性質が利用され
ることにより暗号文や公開鍵が第三者にわかっても送受
信者が互いに独自に持っている秘密の鍵が知られなけれ
ば暗号文を解読できない、または容易には解読できない
仕組みとなっている。公開鍵暗号化方式の代表的なもの
としてはRSA(Rivest ,Shamir, Adlemanの略)やD
H(DiffieHellmanの略)がある。以下、一例としてD
Hの鍵交換について説明する。
【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(2048bi
t)およびV(2048bit)が準備される。“X^
YmodZ”の演算のための処理フローが図16に示さ
れる。
【0029】図16はノイマン型計算機においてX^Y
modZの演算を実行するための処理フローチャートで
ある。図16の処理フローを説明する。変数X,Yおよ
びZは、それぞれ102bit長で構成されている。こ
れら変数の値は、計算機内の内部メモリに格納されてお
り処理開始時に内部メモリから読出される。その後、交
互に中間演算とその結果格納が行なわれながら演算が進
行する。なお、処理フローにおいて変数Y[k]は変数
Yのkビット目の値を示す。
【0030】まず、ステップS1において初期設定がな
される。つまり作業領域Uの内容はリセットされて作業
領域Vの内容には1が設定される。そして制御変数kに
1023がセットされる。つまり、制御変数kが102
3から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】
【課題を解決するための手段】この発明のある局面に係
るデータ駆動型処理装置は、kビット長(kは任意の正
の整数)のn個(nは2以上の任意の整数)の領域を含
むメモリを備えたデータ駆動型処理装置であって、さら
に、n個領域に格納されたメモリデータのそれぞれを演
算処理する演算処理部を備える。
【0036】演算処理部は、所定演算手段と、データ累
積加算手段と、あふれデータ累積加算手段とを有する。
【0037】所定演算手段は、メモリデータと、与えら
れるデータパケットのデータフィールドに格納されたk
ビット長のデータとを所定演算命令に従い所定演算処理
して、所定演算処理の結果を、複数のkビット長のデー
タを分割して、分割により得られた複数のkビット長の
データのそれぞれをデータフィールドに格納した複数の
データパケットを出力する。
【0038】所定演算手段から出力された複数のデータ
パケットを入力して、入力した複数データパケットのそ
れぞれについて、データ累積加算手段と、あふれデータ
累積加算手段とが適用される。
【0039】データ累積加算手段は該データパケットの
データフィールドのkビット長のデータを、メモリの所
定アドレスに対応の領域のメモリデータに累積加算し
て、桁あふれしたデータを除く累積加算結果を該領域に
格納して、桁あふれしたデータをデータフィールドに格
納したデータパケットを出力する。
【0040】あふれデータ累積加算手段は、桁あふれし
たデータをデータフィールドに格納したデータパケット
を入力して、該データパケットのデータフィールドの桁
あふれしたデータを、メモリにおける所定アドレスとは
異なる上位の所定アドレスに対応の領域のメモリデータ
に累積加算して、桁あふれしたデータを除く累積加算結
果を該領域に格納して、桁あふれしたデータをデータフ
ィールドに格納したデータパケットを出力する。累積加
算により所定アドレスの領域において桁あふれしたデー
タが生じる間は、あふれデータ累積加算手段による桁あ
ふれしたデータについての累積加算は繰返される。
【0041】上述のデータ駆動型処理装置によれば、多
倍精度データについて所定演算処理が行なわれる際に
は、多倍精度データはkビット長単位に分割された複数
の単精度データとして、そしてメモリのkビット長のn
個の領域の集合は該多倍精度データとして扱われる。そ
れゆえに、データ駆動型処理装置において多倍精度デー
タ専用の累算器を特別に用意しなくても通常のメモリの
領域で多倍精度データの累算器の役割を果たすことがで
きるから、多倍精度データについて所定演算処理が行な
われる際でも、データ駆動型処理装置の小型化は阻害さ
れない。
【0042】また多倍精度データの所定演算では、多倍
精度データはkビット長の単精度データ単位の互いに独
立な演算要素に分割することによってデータについての
演算をすべて同時並列に実行できるから、データ駆動型
処理装置の並列処理能力を最大限に発揮することができ
る。
【0043】また、データ駆動型処理装置では、複数の
演算の同時並列処理能力に加えてパイプライン並列処理
という特徴を有しているから、多倍精度データの所定演
算処理において、メモリを用いたデータの累算時に桁あ
ふれが連続的に発生しても連続発生する桁あふれによる
処理の遅延量は他の単精度データの処理によって抑制さ
れる。つまりオーバーフローの発生度合いは多倍精度デ
ータ演算処理全体にかかる所要時間(レスポンス)にほ
とんど影響しない。
【0044】さらに多倍精度データのデータ長に関して
論理的な制約がない。データ駆動型処理装置の通常のメ
モリの領域やデータパケットが利用されるから、物理的
に資源の許す限りどんなに長いビット長の多倍精度デー
タであっても所定演算処理できる。しかも、ビット長が
異なる多種類の多倍精度データを同時に扱うこともでき
る。
【0045】上述の所定演算処理は、加算、減算、除算
および乗算のいずれであってもよい。
【0046】上述のデータ駆動型処理装置において、演
算処理部は、累積加算により所定アドレスの領域におい
て桁あふれしたデータが生じているか否か判定する桁あ
ふれ判定手段をさらに有して、桁あふれ判定手段により
桁あふれしたデータが生じていると判定されたことに応
じて、あふれデータ累積加算手段により桁あふれしたデ
ータについての累積加算が行なわれる。
【0047】上述のデータ駆動型処理装置によれば、桁
あふれ判定手段を設けることにより、桁あふれしたデー
タが生じている間は、あふれデータ累積加算手段により
桁あふれしたデータについての累積加算が行なわれる。
それゆえに、桁あふれしたデータを確実に繰上げながら
所定演算を実行することができる。
【0048】上述のデータ駆動型処理装置において、2
個のm(mはn*k≧mを満たす任意の整数)ビット長
の多倍精度データ同士を所定演算処理する場合には、以
下の特徴を有する。つまり、一方の多倍精度データをk
ビット長ごとに分割して得られたそれぞれのデータは、
メモリのn個の領域のそれぞれにメモリデータとして格
納されて、他方の多倍精度データがkビット長ごとに分
割して得られたそれぞれのデータは、n個のデータパケ
ットのそれぞれのデータフィールドに格納されて、n個
のデータパケットは所定演算手段に順次与えられる。
【0049】上述のデータ駆動型処理装置によれば、2
個のm(mはn*k≧mを満たす任意の整数)ビット長
の多倍精度データ同士を所定演算処理することができ
る。
【0050】上述のデータ駆動型処理装置では、データ
パケットは、該データパケットを一意に識別するための
世代番号が格納される世代フィールドをさらに有して、
所定アドレスは、データパケットの世代フィールドの内
容に基づいて指定される。
【0051】上述のデータ駆動型処理装置によれば、累
算器として機能するメモリの領域の所定アドレスは、デ
ータパケットを一意に識別するための世代番号が格納さ
れる世代フィールドの内容に基づいて指定される。した
がって、多倍精度データを分割して得られた複数のkビ
ット長の単精度データのそれぞれについて対応する所定
アドレスが一意に指定されることになって、メモリにお
ける累算を確実に行うことができる。
【0052】上述のデータ駆動型処理装置において、デ
ータ累積加算手段およびあふれデータ累積加算手段のそ
れぞれは、以下の特徴を有する。つまり、与えられるデ
ータパケットを入力して、該入力データパケット中のデ
ータフィールドの内容を、メモリの所定アドレスに対応
の領域のメモリデータに累積加算して、桁あふれしたデ
ータを除く累積加算結果を該領域に格納して、桁あふれ
したデータを入力データパケットのデータフィールドに
格納して、該入力データパケットを出力することを指示
する演算命令に従い動作する。
【0053】上述のデータ駆動型処理装置によれば、デ
ータ累積加算手段およびあふれデータ累積加算手段のそ
れぞれにおいては、同一種類の演算命令が実行される。
したがって、多倍精度データを所定演算する場合であっ
ても、実行に必要とされる演算命令の種類数を少なくで
きて、プログラムのメンテナンスおよびデバッグは容易
である。
【0054】この発明の他の局面に係るデータ駆動型処
理装置におけるデータ処理方法は、kビット長(kは任
意の正の整数)のn個(nは2以上の任意の整数)の領
域を含んで、n個の領域のそれぞれにメモリデータが格
納されるメモリを備えたデータ駆動型処理装置における
データ処理方法であって、所定演算ステップと、データ
累積加算ステップと、あふれデータ累積加算ステップと
を有する。
【0055】所定演算ステップでは、メモリデータと、
与えられるデータパケットのデータフィールドに格納さ
れたkビット長のデータとが所定演算命令に従い所定演
算処理されて、所定演算処理の結果は、複数のkビット
長のデータに分割されて、分割により得られた複数のk
ビット長のデータのそれぞれがデータフィールドに格納
された複数のデータパケットが出力される。
【0056】データ累積加算ステップとあふれデータ累
積加算ステップとは、所定演算ステップにより出力され
た複数のデータパケットを入力して、入力した複数デー
タパケットのそれぞれについて適用される。
【0057】データ累積加算ステップでは、該データパ
ケットのデータフィールドのkビット長のデータは、メ
モリの所定アドレスに対応の領域のメモリデータに累積
加算されて、桁あふれしたデータを除く累積加算結果は
該領域に格納されて、桁あふれしたデータがデータフィ
ールドに格納されたデータパケットが出力される。
【0058】あふれデータ累積加算ステップでは、桁あ
ふれしたデータをデータフィールドに格納したデータパ
ケットが入力されると、該データパケットのデータフィ
ールドの桁あふれしたデータは、メモリにおける所定ア
ドレスとは異なる上位の所定アドレスに対応の領域のメ
モリデータに累積加算されて、桁あふれしたデータを除
く累積加算結果は該領域に格納されて、桁あふれしたデ
ータがデータフィールドに格納されたデータパケットが
出力される。上述の累積加算により所定アドレスの領域
において桁あふれしたデータが生じる間は、あふれデー
タ累積加算ステップによる桁あふれしたデータについて
の累積加算は繰返される。
【0059】上述のデータ駆動型処理装置におけるデー
タ処理方法によれば、多倍精度データについて所定演算
処理が行なわれる際には、多倍精度データはkビット長
単位に分割された複数の単精度データとして、そしてメ
モリのkビット長のn個の領域の集合は該多倍精度デー
タとして扱われる。それゆえに、データ駆動型処理装置
において多倍精度データ専用の累算器を特別に用意しな
くても通常のメモリの領域で多倍精度データの累算器の
役割を果たすことができるから、多倍精度データについ
て所定演算処理が行なわれる際でも、データ駆動型処理
装置の小型化は阻害されない。
【0060】また多倍精度データの所定演算では、多倍
精度データはkビット長の単精度データ単位の互いに独
立な演算要素に分割することによってデータについての
演算をすべて同時並列に実行できるから、データ駆動型
処理装置のデータ処理における並列処理能力を最大限に
発揮することができる。
【0061】また、データ駆動型処理装置のデータ処理
方法は、複数の演算の同時並列処理能力に加えてパイプ
ライン並列処理という特徴を有しているから、多倍精度
データの所定演算処理において、メモリを用いたデータ
の累算時に桁あふれが連続的に発生しても連続発生する
桁あふれによる処理の遅延量は他の単精度データの処理
によって抑制される。つまりオーバーフローの発生度合
いは多倍精度データ演算処理全体にかかる所要時間(レ
スポンス)にほとんど影響しない。
【0062】さらに多倍精度データのデータ長に関して
論理的な制約がない。データ駆動型処理装置の通常のメ
モリの領域やデータパケットが利用されるから、物理的
に資源の許す限りどんなに長いビット長の多倍精度デー
タであっても所定演算処理できる。しかも、ビット長が
異なる多種類の多倍精度データを同時に扱うこともでき
る。
【0063】上述の所定演算処理は、加算、減算、除算
および乗算のいずれであってもよい。
【0064】上述のデータ処理方法において、演算処理
ステップは、累積加算により所定アドレスの領域におい
て桁あふれしたデータが生じているか否か判定する桁あ
ふれ判定ステップをさらに有して、桁あふれ判定ステッ
プにより桁あふれしたデータが生じていると判定された
ことに応じて、あふれデータ累積加算ステップにより桁
あふれしたデータについての累積加算が行なわれる。
【0065】上述のデータ処理方法によれば、桁あふれ
判定ステップを設けることにより、桁あふれしたデータ
が生じている間は、あふれデータ累積加算ステップによ
り桁あふれしたデータについての累積加算が行なわれ
る。それゆえに、桁あふれしたデータを確実に繰上げな
がら所定演算を実行することができる。
【0066】上述のデータ駆動型処理方法において、2
個のm(mはn*k≧mを満たす任意の整数)ビット長
の多倍精度データ同士を所定演算処理する場合には、以
下の特徴を有する。つまり、一方の多倍精度データをk
ビット長ごとに分割して得られたそれぞれのデータは、
メモリのn個の領域のそれぞれにメモリデータとして格
納されて、他方の多倍精度データがkビット長ごとに分
割して得られたそれぞれのデータは、n個のデータパケ
ットのそれぞれのデータフィールドに格納されて、n個
のデータパケットは所定演算ステップに順次与えられ
る。
【0067】上述のデータ駆動型処理方法によれば、2
個のm(mはn*k≧mを満たす任意の整数)ビット長
の多倍精度データ同士を所定演算処理することができ
る。
【0068】上述のデータ駆動型処理方法では、データ
パケットは、該データパケットを一意に識別するための
世代番号が格納される世代フィールドをさらに有して、
所定アドレスは、データパケットの世代フィールドの内
容に基づいて指定される。
【0069】上述のデータ駆動型処理方法によれば、累
算器として機能するメモリの領域の所定アドレスは、デ
ータパケットを一意に識別するための世代番号が格納さ
れる世代フィールドの内容に基づいて指定される。した
がって、多倍精度データを分割して得られた複数のkビ
ット長の単精度データのそれぞれについて対応する所定
アドレスが一意に指定されることになって、メモリにお
ける累算を確実に行うことができる。
【0070】上述のデータ駆動型処理方法において、デ
ータ累積加算ステップおよびあふれデータ累積加算ステ
ップのそれぞれは、以下の特徴を有する。つまり、与え
られるデータパケットを入力して、該入力データパケッ
ト中のデータフィールドの内容を、メモリの所定アドレ
スに対応の領域のメモリデータに累積加算して、桁あふ
れしたデータを除く累積加算結果を該領域に格納して、
桁あふれしたデータを入力データパケットのデータフィ
ールドに格納して、該入力データパケットを出力するこ
とを指示する演算命令に従い動作する。
【0071】上述のデータ駆動型処理方法によれば、デ
ータ累積加算ステップおよびあふれデータ累積加算ステ
ップのそれぞれにおいては、同一種類の演算命令が実行
される。したがって、多倍精度データを所定演算する場
合であっても、実行に必要とされる演算命令の種類数を
少なくできて、プログラムのメンテナンスおよびデバッ
グは容易である。
【0072】
【発明の実施の形態】以下、この発明の実施の形態につ
いて説明する。
【0073】まず、本実施の形態の特徴について説明す
る。本実施の形態では、データ駆動型処理装置において
多倍精度データの演算を実現するために、LSIとして
実現できる現実的な範囲での短いビット長を有したデー
タやメモリワードを使用して多倍精度データの演算処理
を実現する。なお、ここでメモリワードとは、データ駆
動型処理装置における1回のメモリアクセス命令の実行
によりアクセスできるメモリのデータ量を示す。
【0074】図1は、この発明の実施の形態に係る演算
部141の構成を、入出力されるデータパケットととも
に示す図である。図2は、図1のswitch回路65
の構成を入出力されるデータとともに示す図である。図
3はこの発明の実施の形態に係るデータ駆動型処理装置
10のブロック図である。図4(A)と(B)は、本実
施の形態による多倍精度データの分割を説明する図であ
る。
【0075】図3のデータ駆動型処理装置10は、図1
3のシステムにおいて従来のデータ駆動型処理装置1に
代替して設けられる。図3のデータ駆動型処理装置10
と図14の従来のデータ駆動型処理装置1と比較し異な
る点は、データ駆動型処理装置10がデータ駆動型処理
装置1の演算部14および内蔵メモリ15に代替して演
算部141および累算メモリ151を有した内蔵メモリ
150を備える点にある。データ駆動型処理装置10の
他の部分はデータ駆動型処理装置1と同様であり説明を
省略する。
【0076】図1を参照して、演算部141は従来の演
算部14の構成に加えてメモリ累算命令ACCMCを実
行するACCMC回路68を追加実装している。演算部
141はDEMUX回路64、分岐命令switchを
実行するswitch回路65、命令inc_genを
実行するinc_gen回路66、乗算命令MUL32
を実行するMUL32回路67、ACCMC回路68、
他の種類の演算を行なう演算回路69〜71、およびM
UX(マルチプレクサの略)回路72を含む。
【0077】switch回路65、inc_gen回
路66およびMUL32回路67は従来から提供される
回路である。命令switchと命令inc_genに
ついては、後述する。
【0078】演算部141にはデータパケットPA1
(IN)が入力される。データパケットPA1(IN)
は命令コードC、ノード番号N、世代番号G、およびフ
ィールド21のデータDとして左データLDおよび右デ
ータRDが格納されている。左データLDおよび右デー
タRDは、命令コードCが2項演算命令などであった場
合に、発火制御部13における待合せによって得られた
2つのオペランドデータである。ただし、命令コードC
が2項演算命令であっても、演算対象となる2つのオペ
ランドデータの一方が定数である場合には発火制御部1
3において定数データメモリ732から読出された定数
データが格納される。
【0079】データパケットPA1(IN)が演算部1
41に入力されると、入力データパケットPA1の命令
コードCは、DEMUX回路64とMUX回路72に与
えられる。DEMUX回路64は、与えられる命令コー
ドCに基づいて演算回路65〜71のうちのいずれか1
つを選択して、選択した回路に該入力データパケットP
A1(IN)を与える。演算回路71およびACCMC
回路68は必要に応じて内蔵メモリ150をアクセスす
る。各演算回路は、与えられるデータパケットPA1
(IN)の内容を、対応の命令コードCに基づいて演算
し、その演算結果をフィールド21に格納したデータパ
ケットPA1(IN)をMUX回路72に与える。
【0080】MUX回路72は与えられる命令コードC
に基づいて、演算回路65〜71のいずれか1つの出力
を選択して入力する。そして、入力したデータパケット
はPA1(OUT)として出力されて、プログラム記憶
部16に与えられる。
【0081】データパケットPA1(OUT)は命令コ
ードC、ノード番号N、世代番号Gおよびフィールド2
1においてデータDおよび真偽フラグFLを格納する。
【0082】真偽フラグFLは、命令swichを含む
分岐命令の実行結果によって出力される1ビットのフラ
グデータである。命令switchによる判定結果が
「真」のときは真偽フラグFLに1が設定され、「偽」
のときには0が設定される。分岐命令以外の命令では、
真偽フラグFLには「真」を表わす1が常に出力され
る。この真偽フラグFLによって次位の命令コードCと
ノード番号Nとがプログラム記憶部16のプログラムメ
モリ161から読出される。つまり、命令switch
の次に実行される命令として真偽フラグFLの値によっ
て、たとえば、命令end_judgeおよび命令in
c_genのいずれか一方がプログラムメモリ161か
ら選択的に読出される。
【0083】図2には図1のswitch回路65の構
成例が示される。switch回路65はロジック回路
LUを含む。switch回路65はデータパケットP
A1(IN)のフィールド21のビットデータを参照し
た分岐機能とメモリ累算命令ACCMCの出力値は0で
あるかどうかの判定機能を有する。switch回路6
5では、データパケットPA1(IN)のフィールド2
1のデータDの下位1ビットの値(1または0)がロジ
ック回路LUに与えられる。ロジック回路LUは、与え
られる下位1ビットのデータが0のときには真偽フラグ
FLとして1を出力し、1のときは真偽フラグFLとし
て0を出力する。したがって、真偽フラグFLが1のと
きは、メモリ累算命令ACCMCの実行結果として出力
値0が得られたことが判定される。また入力データパケ
ットPA1(IN)のフィールド21のデータは出力デ
ータパケットPA1(OUT)のフィールド21のデー
タDとして格納される。
【0084】本実施の形態では演算対象となる多倍精度
データを、データ駆動型処理装置10をフローするデー
タパケットのフィールド21に格納可能なビット長を有
した複数のデータに分割する。仮に、1024bitの
多倍精度データは32bitの32個のデータに分割さ
れると想定する。この分割の様子が図4(A)と(B)
に示される。図4(A)の1024bitの多倍精度デ
ータAは、図4(B)の32bitのデータA[0]〜
A[31]に分割される。データA[0]〜A[31]
のそれぞれは、対応するそれぞれのデータパケットPA
1のフィールド21に格納されるとともに、データA
[j](ただしj=0、1、2、…、31)が多倍精度
データAにおけるいずれの桁(ビット)の位置に対応す
るかを示すjの値に相当する情報がフィールド20の一
部として格納される。ただし、フィールド20への正確
な格納方法は実際の演算の形態に依存する。
【0085】このようにして1024bitの多倍精度
データAは、32個のデータパケットPA1の集合とし
て表現される。図4(B)の32個のデータパケットP
A1それぞれについては、フィールド21に格納される
データA[0]〜A[31]のそれぞれのみが示され
て、他のフィールドのデータは省略されている。
【0086】図5(A)と(B)は、累算メモリ151
の領域における多倍精度データの格納例を説明する図で
ある。内蔵メモリ150の累算メモリ151の領域は、
多倍精度データの演算の中間結果や最終結果を格納する
ためのメモリとしてアクセスされる。累算メモリ151
の領域は、多倍精度データを演算することが可能なビッ
ト長を有したメモリワード単位に分割される。仮に、2
048bitの多倍精度データの演算を想定すると、こ
の多倍精度データは、32bit長の64個のデータに
分割されて累算メモリ151の領域に格納される。この
様子が図5(A)と(B)に示される。
【0087】図5(A)の2048bitの多倍精度デ
ータCは、図5(B)のような32bitのデータC
[0]〜C[63]へと分割された後に、これらデータ
は累算メモリ151のアドレス0〜63のメモリワード
のそれぞれに格納される。データC[h](h=0、
1、2、…、63)が多倍精度データCのうちのいずれ
の桁(ビット)に相当するかを示すhの値に相当する情
報は、アドレス0〜63に相当する。ここでいうアドレ
スは、あるオフセットを基準(アドレス0)として相対
値として与えられる。このようにして2048bitの
多倍精度データCは累算メモリ151では64個のメモ
リワードの列として表現される。
【0088】また、64個のメモリワードの列は204
8bitの記憶領域を有する累算器として機能させるこ
とが所望されるが、これらのメモリワード列は、64個
の全く独立した32bit長のメモリワードの集合にす
ぎない。しかしながら、メモリを用いた累算は、データ
パケットPA1のフィールド21の32bit長のデー
タDとメモリの32bit長の1メモリワードとを対象
にして行なわれるので、前述した64個のメモリワード
を多倍精度データの累算器として機能させるには、32
bit単位の累算時に生じる桁あふれ、すなわちオーバ
ーフローまたはアンダーフローを、次位のアドレスのメ
モリワードに反映させなければならない。
【0089】言換えると、「データD(32bit)+
所定メモリワードに格納されたデータ(32bit)」
の結果値が32bitで表現できる値を超えてオーバー
フローした場合、所定メモリワードには結果値の下位3
2bitだけが格納されて、所定メモリワードの次位の
アドレスのメモリワードの内容にオーバーフローした1
が加算されなければならない。逆に「データD(32b
it)−所定メモリワードに格納されたデータ(32b
it)」の結果値が負の値になってアンダーフローした
場合、所定メモリワードには結果値の下位32bitだ
けが格納され、所定メモリワードの次位のアドレスのメ
モリワードの内容からアンダーフローした1を引かなけ
ればならない。そのために、データ駆動型処理装置10
の演算部141は、図1に示されるようにオーバーフロ
ーおよびアンダーフローを処理するためのメモリアクセ
スに関する命令を実行するための機能を、従来の機能に
追加して備えている。
【0090】図6は、メモリワードでオーバフローが生
じた例を説明する図である。図6ではデータパケットP
A1については、フィールド21の内容のみが示され
て、他のフィールドの図示は省略されている。仮に、デ
ータパケットPA1のデータDを、ある指定アドレスの
メモリワードの内容に累算し、その結果オーバーフロー
が生じた場合の例が図6に示される。
【0091】図6において、メモリ累算命令ACCMC
を用いずに、「データパケットPA1のフィールド21
のデータA[x]はメモリワードC[x]へ累算して、
その累算結果をメモリワードC[63]〜C[0]へと
反映させる」という命令セットを用いて処理することを
想定すると処理の流れは次のようになる。
【0092】(A1)のデータパケットPA1の世代番
号Gから累算メモリ151のアドレスを算出する。たと
えば、アドレスxが算出されたとする。
【0093】(A2) メモリワードC[x]の値を累
算メモリ151から読出す。 (A3) 上述の(A2)の結果とデータA[x]を加
算し加算結果Dとする(D→C[x]、A[x])。
【0094】(A4) 上述の(A3)の加算結果の下
位32bitのデータを累算メモリ151のアドレスx
へ書込む。
【0095】(A5) 上述の(A3)の加算結果が3
2bitで表現できる値を超えていないか(オーバーフ
ローしていないか)を判定し、オーバーフローしていな
ければ終了し、オーバーフローしていれば次の処理に移
行する。
【0096】(B1) 次のメモリアドレスx+1を算
出する。 (B2) メモリワードC[x+1]を累算メモリ15
1から読出す。
【0097】(B3) 上述の(B2)の読出値に1を
加算して、加算結果をDとする(D→C[x+1]+
1)。
【0098】(B4) 上述の(B3)の加算結果の下
位32bitのデータを累算メモリ151のアドレスx
+1へ書込む。
【0099】(B5) 上述の(B3)の加算結果が3
2bitで表現できる値を超えていないか(オーバーフ
ローしていないか)判定し、オーバーフローしていなけ
れば処理を終了し、オーバーフローしていればx+1に
1を加えてx+2として、上述の(B1)〜(B5)の
処理を繰返す。このオーバーフローは、C[x+1]=
0xffffである限り発生する。
【0100】このような不定回数のオーバーフローが連
続して発生する可能性を考慮すると、1回の実行で不定
回数のメモリアクセスを指示するような命令を処理する
ためのハードウェアを従来の演算部14に実装すること
は、困難であった。なぜならば、上述の処理は加算結果
がオーバーフローしなくなるまで繰返されて、繰返しの
回数は、連続するオーバーフローの回数に依存している
ため、この命令実行に要する時間は毎回異なるから、命
令実行に要する時間が固定でない。また、データ駆動型
処理装置は周回パイプライン構造になっており、データ
パケットPA1がこのパイプライン内をフローする場合
には、全体においてデータパケットPA1の処理が滞り
なく進行して、前段のパイプラインが空き状態にならな
いとデータパケットPA1は前段へは進めない。したが
って、この命令で長い実行時間がかかると、該命令の実
行はパイプラインの輻輳を引き起こすかもしれない。こ
の輻輳を回避するのにはパイプラインの経路の分岐や緩
衝バッファを追加するなどの特別な工夫が必要となる。
【0101】また演算部のパイプラインにおいて、上述
のような累算命令と他の命令とに基づいて、データパケ
ットPA1の経路を分岐させたとしても、パイプライン
の経路を、すなわち内蔵メモリ15の一部を累算器とし
て用いることを想定しているから、上述のように内蔵メ
モリ15に関する不定回数のメモリアクセス実行中は他
の命令によるメモリアクセスが妨げられるから、全体と
しての処理速度は低下する。
【0102】そこで、本実施の形態では、上述したパイ
プラインにおける輻輳および処理速度低下というデメリ
ットを回避するために、次のようになされる。つまり、
オーバフローが生じた場合には、累算メモリ151内の
上位のメモリワードにオーバフローした値(1)を累算
するのではなくて、データパケットPA1のフィールド
21にデータDとして格納して該データパケットPA1
を出力するというメモリ累算命令ACCMCが提案され
る。
【0103】図7は、本実施の形態に係るメモリ累算命
令ACCMCを説明する図である。図7では、データパ
ケットPA1は、フィールド21に格納されたデータD
の値のみが示されて、他のフィールドの内容の図示は省
略されている。図7においては処理OP1とOP2が実
行されている。まず、処理OP1においては、演算部1
41に命令コードCとして“ACCMC”を、データD
としてA[x]を、世代番号Gとしてxを格納したデータ
パケットPA1が与えられると、メモリ累算命令ACC
MCに基づいて、累算メモリ151のアドレスxのメモ
リワードC[x]の内容が読み出されて、その値にデータ
パケットPA1のデータA[x]が累算されて、オーバフ
ローを含まない結果はメモリワードC[x]に書き込まれ
る。この累算で生じたオーバフローの値(+1)を用い
て、データパケットPA1のフィールド21の内容はA
[x+1]に書き換えられて、該データパケットは演算部
141から出力される。
【0104】該データパケットPA1は該装置のパイプ
ラインを1回以上周回した後に、演算部141に与えら
れると、処理OP2において、同様にして該データパケ
ット中のメモリ累算命令ACCMCに従い累算メモリ1
51の次のアドレスx+1のメモリワードC[x+1]の
内容が読み出されて、読み出された内容と該データパケ
ットのデータA[x+1](A[x+1]=1)とが累算さ
れて、累算結果は、累算メモリ151のアドレスx+1
のメモリワードC[x+1]に書き込まれる。これによ
り、累算と、累算により生じたオーバフロー処理とを実
行することができる。
【0105】上述したように、連続してオーバーフロー
が発生しても、1つの累算命令実行当り、累算メモリ1
51に関して読出と書込をそれぞれ1回行なうだけでよ
い。また、上述したように連続的にオーバーフローが発
生して複数回の累算命令が連続的に実行されることにな
ったとしても、データ駆動型処理装置におけるパイプラ
イン処理による処理の並列性の特徴により、演算に関す
る遅延時間を抑制することができる。
【0106】次に、上述した本実施の形態の特徴に基づ
いた具体的な動作を以下に説明する。
【0107】ここで1024bitの多倍精度データA
と1024bitの多倍精度データBとを乗算して20
48bitの多倍精度データCを得る演算処理を例示し
て説明する。
【0108】図3のデータ駆動型処理装置10のパイプ
ラインを周回する図15(B)のデータパケットPA1
は32bitのフィールド21を有し、累算メモリ15
1では1メモリワード当り32bitで構成されるもの
とする。
【0109】初期状態として多倍精度データAとBは累
算メモリ151に格納される。累算メモリ151では、
多倍精度データAはメモリワードA[0]〜A[31]
の32ワードに格納され、多倍精度データBはメモリワ
ードB[0]〜B[31]の32ワードに格納される。
乗算が実行されるときには、メモリワードA[i]とメ
モリワードB[j](i、j=0,1,2,3…,3
1)が累算メモリ151から必要に応じて読出されて演
算に使用される。そして、乗算結果である2048bi
tの多倍精度データCは、累算メモリ151のメモリワ
ードC[0]〜C[63]の64ワードで構成される。
演算においては中間結果がメモリワードC[0]〜C
[63]の64ワードにその都度累算される。したがっ
て、累算処理終了時点でのメモリワードC[0]〜C
[63]の64ワードにより最終の乗算結果が示され
る。
【0110】上述したA*Bの乗算処理を説明する。ま
ず、乗算命令MUL32が定義される。乗算命令MUL
32はA*Bについての各部分積データ(64bit)
を求め、該部分積データを上位32bitのデータと下
位32bitのデータに分けて、分けられたそれぞれの
データを各データパケットのフィールド21に格納して
出力することを指示する。
【0111】また、ここでは上述したメモリ累算命令A
CCMCが定義される。演算部141では乗算命令MU
L32の実行後、メモリ累算命令ACCMCが実行され
る。メモリ累算命令ACCMCが実行されることによ
り、データパケットPA1の世代番号Gに基づいて累算
メモリ151の所定アドレスが算出されて、該所定アド
レスによりアドレス指定される累算メモリ151のメモ
リワードから読出された値に、該データパケットPA1
のフィールド21のデータDを累算する。そしてこの累
算によりオーバーフローおよびアンダーフローした値を
除く累算結果を該所定アドレスに対応する累算メモリ1
51のメモリワードに書込むとともに、オーバーフロー
およびアンダーフローのいずれかが発生すればその値
(+1または−1)を該データパケットPA1のフィー
ルド21のデータDに代替して格納して、該データパケ
ットPA1を出力する。
【0112】次に上述したA*Bの乗算処理を、上述し
た乗算命令MUL32およびメモリ累算命令ACCMC
を用いて説明する。図8には本実施の形態によるA*B
の乗算式が示されている。図示されるように多倍精度デ
ータA(1024bit)、多倍精度データB(102
4bit)の乗算は、32bit同士の乗算結果(以
下、部分積という)の総和であって図8の式(1)のよ
うに示される。図8の式(1)において、<<(32*
1)は左へ32ビットシフトとすることを示す。また<
<(32*3)は左へ32×3ビットシフトすることを
示す。
【0113】図8の式(1)の各部分積A[i]*B
[j]は64bit長を有する。これを、32bit長
のフィールド21を有するデータパケットPA12つで
表現する。この部分積は、演算部141のMUL32回
路67において乗算命令MUL32が実行されることに
より求められる。乗算命令MUL32が実行されると、
部分積A[i]*B[j]が求められて、該部分積は上
位32bitのデータと下位32bitのデータに分け
られて、各データをデータDとしてフィールド21に格
納したデータパケットがそれぞれ出力される。
【0114】図9は、本実施の形態に係る乗算命令MU
L32を用いた処理フローチャートである。図9では、
32ビットのデータX(A[i])をデータDとして格
納したデータパケットPA1と32ビットのデータY
(B[j])をデータDとして格納したデータパケット
PA1とが発火制御部13にて発火して、命令コードC
として“MUL32”を、データDとしてデータX(A
[i])とY(B[j])とが格納されたデータパケッ
トPA(IN)が演算部141に与えられる。ただし、
データパケットPA(IN)ではフィールド21および
22の内容のみが示されて、他のフィールドの図示は省
略される。
【0115】そして、演算部141のMUL32回路6
7において、与えられたデータパケットPA(IN)が
入力されて、入力データパケットPA(IN)のフィー
ルド22に格納されていた乗算命令MUL32が実行さ
れる(ステップS1)。実行により得られた乗算結果の
値Z(A[i]*B[j])は上位の32bitのデー
タZu(A[i]*B[j]_upper)と下位の32b
itのデータZl(A[i]*B[j]#lower)に分割
されて、分割により得られた2つのデータは2つのデー
タパケットPA(OUT)のフィールド21にデータD
としてそれぞれ格納されて、2つのデータパケットPA
(OUT)は演算部141から出力される(ステップS
2)。ただし、データパケットPA(OUT)ではフィ
ールド21の内容のみが示されて、他のフィールドの図
示は省略される。
【0116】データパケットPA1が部分積A[i]*
B[j]に関するデータパケットの場合には、世代番号
Gのフィールド20には、前述したように、添字iとj
が格納される。具体的には、世代番号Gのフィールド2
0には2つの領域が含まれて、一方の領域には“i”
が、もう一方の領域には“j”が格納されることによっ
て部分積A[i]*B[j]の識別が行なわれる。そし
て、世代番号Gのフィールド20の2つの領域から部分
積A[i]*B[j]を累算するためのメモリワードの
アドレスを求めることができる。つまり、データA
[i]*B[j]_lowerについては、これら2つの領
域の値を加えるだけで、累算に用いられるメモリワード
のアドレス(i+j)が得られ、データA[i]*B
[j]_upperについては、これら2つの領域の値の加
算値にさらに1を加えることにより累算に用いられるメ
モリワードのアドレス(i+j+1)が得られる。
【0117】図10は、本実施の形態に係る部分積毎の
処理内容(乗算と累算)を示す処理フローチャートであ
る。なお、図10では、累算により、桁あふれは生じて
いないと想定している。図9の乗算命令MUL32が実
行された後、図9のデータパケットPA(OUT)は、
パイプラインを周回することにより、プログラム記憶部
16において対応の命令コードCが累算命令ACCMC
に更新されて、再度、演算部141に与えられる。
【0118】演算部141のACCMC回路68に、与
えられる2つのデータパケットPA(IN)は、データ
DとしてデータA[i]*B[j]_upperとデータA
[i]*B[j]#lowerとをそれぞれ格納しており、命
令コードCとして“ACCMC”を格納しており、世代
番号Gとしてiとjが格納されている。演算部141の
ACCMC回路68は、2つのデータパケットPA(I
N)を入力して、データA[i]*B[j]_upperを
格納したデータパケットPA(IN)の世代番号Gに基
づいて、累算メモリ151のアドレス(i+j+1)の
メモリワードC[i+j+1]の内容を読出して(ステ
ップS1a)、読出された値に該データパケットPA
(IN)に格納されているデータA[i]*B[j]_
upperを累算して、その結果値を累算メモリ151のア
ドレス(i+j+1)のメモリワードC[i+j+1]
に書き込む(ステップS2a)。
【0119】また、データA[i]*B[j]#lowerを
格納したデータパケットPA(IN)の世代番号Gに基
づいて、累算メモリ151のアドレス(i+j)のメモ
リワードC[i+j]の内容を読出して(ステップS1
b)、読出された値に該データパケットPA(IN)に
格納されているデータA[i]*B[j]_lowerを累
算されて、その結果値を累算メモリ151のアドレス
(i+j)のメモリワードC[i+j]に書込む(S2
b)。
【0120】図10で示されるように、部分積を求める
対象となっているデータA[j]、データB[j]の添
字iとjを変化させていくことで、累算メモリ151で
指定されるメモリワードのアドレスも同様に変更され
て、32ビット単位でシフト演算が行なわれていること
になる。このことは図8の式(1)の部分積の和を表わ
す中で、32bitずつシフトすることに相当する。
【0121】このように、累算メモリ151を用いて、
求めた各部分積が累算されることで最終的に乗算結果C
(2048bit)が求められることになる。
【0122】図11は、本実施の形態に係るメモリ累算
命令ACCMCを説明するためのフローチャートであ
る。なお、図においては、データパケットPA(IN)
およびPA(OUT)については、フィールド21と2
0のみが示されて他のフィールドの図示は省略されてい
る。メモリ累算命令ACCMCが実行される際に、まず
フィールド21に32bitのデータX(部分積A
[i]*B[j]_lowerまたは部分積A[i]*B
[j]_upper)とフィールド20の世代番号Gを格納
したデータパケットPA(IN)が演算部141に与え
られる。データパケットPA(IN)の世代番号Gのフ
ィールド20は、前述したように部分積A[i]*B
[j]を特定するためのiを格納する領域36とjを格
納する領域37とを含む。演算部141のACCMC回
路68は与えられるデータパケットPA(IN)を入力
して、該入力データパケットPA(IN)のフィールド
22のメモリ累算命令ACCMCに従って、フィールド
20の内容を用いてi+j+kが算出される(ステップ
S1)。なお、kは累算メモリ151の領域中のメモリ
ワードC[0]を決めるための32bitの値(オフセ
ット値)であって、定数である。
【0123】そして、累算メモリ151のアドレスi+
j+kのメモリワードC[i+j]に格納されているデ
ータMが読出されて(ステップS2)、読み出されたデ
ータM(32bit)を左入力データとし、データパケ
ットPA(IN)のフィールド21のデータXを右入力
データとして加算が行なわれて、33bitの加算結果
Zが得られると(ステップS3)、加算結果Zは下位3
2bitのデータと上位1ビットのデータとに分割され
て(ステップS4)、下位32bitのデータは累算メ
モリ151のアドレスi+j+kのメモリワードC[i
+j]に書込まれて(ステップS5)、上位1bitの
データはデータパケットPA(IN)のフィールド21
にデータXに代替して格納されて該データパケットPA
(IN)はデータパケットPA(OUT)として演算部
141から出力される。
【0124】データパケットPA(OUT)にデータD
として格納された加算結果の上位1bitのデータは加
算結果によるオーバーフローの有無を表わし、この値が
“1”であればオーバーフローが発生したことを、
“0”であればオーバーフローが発生していないことを
示す。そして、このデータパケットPA(OUT)のフ
ィールド20には、データパケットPA(IN)のフィ
ールド20の値iおよびjのいずれかが1つ増加され
て、i+j+k+1が格納される。これは、アンダーフ
ローが生じた場合でも同様にして行なうことができる。
【0125】ここで、仮にオーバーフローのデータパケ
ットPA1が出力された場合、これを累算メモリ151
へ反映させるためにオーバーフローした値をデータDと
して格納したデータパケットを、パイプラインを周回さ
せて、再度、演算部141のACCMC回路68に与え
て、該データパケットの内容についてメモリ累算命令A
CCMCを、同様にして実行する。この実行により、さ
らにオーバーフローが発生すれば累算メモリ151のさ
らに1つ上のアドレスに対してメモリ累算命令ACCM
Cが実行される。このような処理がオーバーフローが生
じなくなるまで継続される。
【0126】上述した乗算命令MUL32に従う乗算と
メモリ累算命令ACCMCに従う累算処理を図8の式
(1)のすべての部分積について実行すると、多倍精度
データAとBの乗算終了は、すべての部分積に対するメ
モリ累算命令ACCMCの出力として“0”が得られた
か、つまりオーバーフローが生じなくなったかどうかで
判定できる。これは、図8の式(1)の部分積の総数
(1024個)に対応してメモリ累算命令ACCMCの
出力値“0”をデータDとして格納したデータパケット
PA1が2048個(=1024×2)だけカウントさ
れたことにより判定される。
【0127】図12は、本実施の形態による多倍精度デ
ータ同士の乗算に関する全体の処理を示すフローチャー
トである。図の処理フローは、init_loadモジ
ュール42、init_streamモジュール43、
モジュール44、next_streamモジュール4
5、inc_genモジュール46と49、ACCMC
モジュール47、switchモジュール48およびe
nd_judgeモジュール50を含む。
【0128】init_loadモジュール42では、
入力データA[0]〜A[31]と入力データB[0]
〜B[31]を累算メモリ151に格納する。次のin
it_streamモジュール43では、世代番号の領
域37の値(j)を0として、累算メモリ151のメモ
リワードA[0]〜A[31]およびB[j]の計33
個が累算メモリ151から読出される。次のモジュール
44はMUL32回路67に相当して、乗算命令MUL
32を前述のように実行する。MUL32命令は図9に
示された命令である。
【0129】次のnext_streamモジュール4
5では、入力データパケットPA1のフィールド21の
領域37の値(j)に1を加えて、累算メモリ151の
メモリワードA[0]〜A[31]とB[j]の計33
個を累算メモリ151から読出す。上述したモジュール
44と45の処理を、j=0〜31まで順に繰返すこと
で、すべての部分積が求められる。これらの部分積の値
の上位32bitのデータと下位32bitのデータと
は、2つのデータパケットPA1のそれぞれのフィール
ド21に格納されて、これら2つのデータパケットPA
1はinc_genモジュール46に出力される。
【0130】次にinc_genモジュール46はin
c_gen回路66に相当して、上位32bitのデー
タを格納しているデータパケットPA1の領域37の値
(j)に1を加える。一方下位32bitのデータを格
納しているデータパケットPA1の領域37の値はその
ままである。これは、前述したように累算メモリ151
のメモリワードのアドレスに対応させるためになされ
る。
【0131】次にメモリ累算命令ACCMCのモジュー
ル47は、ACCMC回路68に相当して、図11に示
される処理を実行する。なお、図11の定数kにはメモ
リワードC[0]のアドレスが格納される。
【0132】次のswitchモジュール48は、sw
itch回路65に相当して、モジュール47から出力
されたデータパケットPA1を順次入力して、オーバー
フローの値を格納したデータパケットPA1とそうでな
いパケットPA1とを識別して、オーバーフローの値を
格納したデータパケットPA1はinc_genモジュ
ール49に出力して、そうでないデータパケットPA1
はend_judgeモジュール50に出力する。この
出力の分岐は次のようになされる。つまり、図2のロジ
ック回路LUが、与えられる下位1ビットのデータが0
のときには真偽フラグFLとして1を出力し、1のとき
は真偽フラグFLとして0を出力するので、真偽フラグ
FLが1のときは、メモリ累算命令ACCMCの実行結
果として出力値0が得られたことがわかる。そして、s
witchモジュール48から出力された真偽フラグF
Lの値に基づくプログラムメモリ161からの次位の命
令コードCの読み出しは、命令inc_genおよび命
令end_judgeのいずれか一方の選択的な読出し
となるから、上述した出力の分岐が実現される。
【0133】inc_genモジュール49は、inc
_gen回路66に相当してモジュール46と同等の機
能が行なわれる。end_judgeモジュール50で
はオーバーフローを示さない値0を持つデータパケット
PA1の入力がカウントされて、カウント結果が204
8になったとき、演算処理の終了信号ENDが出力され
る。このときの累算メモリ151内のメモリワードC
[0]〜C[63]で示される多倍精度データCの値
が、多倍精度データA*Bの最終の乗算結果を示す。
【0134】ここで、上述した実施の形態から得られる
効果について説明する。まず多倍精度データAおよびB
を複数の単精度データA〔i〕およびB〔j〕に分割
し、累算メモリ151の固定長のメモリワードの集合を
多倍精度データとして扱うことによって、データ駆動型
処理装置10において多倍精度データ専用の累算器を特
別に容易しなくても通常のメモリワードで多倍精度デー
タの累算器の役割を果たすことができる。
【0135】また多倍精度データの演算を単精度データ
単位の互いに独立な演算要素に分割することによってデ
ータについての演算をすべて同時並列に実行できるか
ら、データ駆動型処理装置10の並列処理能力を最大限
に発揮することができる。データ駆動型処理方式は、複
数の演算の同時並列処理能力に加えてパイプライン並列
処理という特徴を有しているから、多倍精度データの乗
算処理において、累算メモリ151を用いたデータの累
算時にオーバーフローが連続的に発生しても連続発生す
るオーバーフローによる処理の遅延量は他の単精度デー
タの処理によって抑制される。つまりオーバーフローの
発生度合いは多倍精度データ演算処理全体にかかる所要
時間(レスポンス)にほとんど影響しない。
【0136】さらに多倍精度データのデータ長に関して
論理的な制約がない。データ駆動型処理装置10の通常
のメモリワードやデータパケットPA(PA1)が利用
されるから物理的に資源の許す限りどんなに長いビット
長のデータであっても演算処理できる。しかも、ビット
長が異なる多種類の多倍精度データを同時に扱うことも
できる。
【0137】上述の実施の形態では多倍精度データの乗
算の例を示したが加算/減算/除算のいずれについても
同様の処理方式を採用することができる。減算と除算の
場合は図11の累算メモリ151の内容への累算とオー
バーフロー出力命令の代わりに、累算メモリ151の内
容からの減算とアンダーフロー出力命令を導入すればよ
い。
【0138】また、図12のデータフローグラフよりメ
モリ累算命令ACCMCを用いた多倍精度データの演算
処理では累算メモリ151の32bitのデータを1回
加算する際には、メモリ累算命令ACCMC、分岐命令
switchおよび命令inc_genの3命令が実行
される。したがって、この加算実行時に、n回のオーバ
ーフローが発生すると、3*n+1命令分の実行時間が
かかる。
【0139】そこで、メモリ累算命令ACCMCを用い
ずに前述したステップ(A1)〜(B5)を実現する命
令セットを実装する方が、累算メモリ151を用いた1
回の加算処理を1命令時間で実行できてよいようにも見
える。ところが図8の式(1)のような演算を実行する
場合には、パイプライン型並列処理能力を十分に利用し
て、式(1)の複数の部分積が同時並列に計算される。
この場合には、図3の周回パイプラインにおいて同時に
多くのデータパケットPA1がフローする。したがって
前述したようなパイプラインの輻輳および処理速度低下
というデメリットが生じて、データ駆動型処理装置にお
けるパイプライン型並列処理能力を十分に発揮できなく
なる。
【0140】一方、メモリ累算命令ACCMCを用いて
同様な処理を行う場合には、たとえ累算メモリ151へ
の加算1回について3*n+命令分の実行時間がかかっ
たとしても、多倍精度データの演算処理全体はパイプラ
イン型並列処理によって実効的な処理性能は飛躍的に向
上する。
【0141】今回開示された実施の形態はすべての点で
例示であって制限的なものではないと考えられるべきで
ある。本発明の範囲は上記した説明ではなくて特許請求
の範囲によって示され、特許請求の範囲と均等の意味お
よび範囲内でのすべての変更が含まれることが意図され
る。
【0142】
【発明の効果】この発明に係るデータ駆動型処理装置お
よびデータ処理方法によれば、多倍精度データについて
所定演算処理が行なわれる際には、多倍精度データはk
ビット長単位に分割された複数の単精度データとして、
そしてメモリのkビット長のn個の領域の集合は該多倍
精度データとして扱われる。それゆえに、データ駆動型
処理装置において多倍精度データ専用の累算器を特別に
用意しなくても通常のメモリの領域で多倍精度データの
累算器の役割を果たすことができるから、多倍精度デー
タについて所定演算処理が行なわれる際でも、データ駆
動方処理装置の小型化は阻害されない。
【0143】また多倍精度データの所定演算では、多倍
精度データはkビット長の単精度データ単位の互いに独
立な演算要素に分割することによってデータについての
演算をすべて同時並列に実行できるから、データ駆動型
処理装置の並列処理能力を最大限に発揮することができ
る。
【0144】また、データ駆動型処理装置では、複数の
演算の同時並列処理能力に加えてパイプライン並列処理
という特徴を有しているから、多倍精度データの所定演
算処理において、メモリを用いたデータの累算時に桁あ
ふれが連続的に発生しても連続発生する桁あふれによる
処理の遅延量は他の単精度データの処理によって抑制さ
れる。つまりオーバーフローの発生度合いは多倍精度デ
ータ演算処理全体にかかる所要時間(レスポンス)にほ
とんど影響しない。
【0145】さらに多倍精度データのデータ長に関して
論理的な制約がない。データ駆動型処理装置の通常のメ
モリの領域やデータパケットが利用されるから、物理的
に資源の許す限りどんなに長いビット長の多倍精度デー
タであっても所定演算処理できる。しかも、ビット長が
異なる多種類の多倍精度データを同時に扱うこともでき
る。
【図面の簡単な説明】
【図1】 この発明の実施の形態に係る演算部141の
構成を、入出力されるデータパケットとともに示す図で
ある。
【図2】 図1のswitch回路65の構成を入出力
されるデータとともに示す図である。
【図3】 この発明の実施の形態に係るデータ駆動型処
理装置10のブロック図である。
【図4】 (A)と(B)は、本実施の形態による多倍
精度データの分割を説明する図である。
【図5】 (A)と(B)は、累算メモリ151の領域
における多倍精度データの格納例を説明する図である。
【図6】 メモリワードでオーバフローが生じた例を説
明する図である。
【図7】 本実施の形態に係るメモリ累算命令ACCM
Cを説明する図である。
【図8】 本実施の形態によるA*Bの乗算式を示す図
である。
【図9】 本実施の形態に係る乗算命令MUL32を用
いた処理フローチャートである。
【図10】 本実施の形態に係る部分積毎の処理内容
(乗算と累算)を示す処理フローチャートである。
【図11】 本実施の形態に係るメモリ累算命令ACC
MCを説明するためのフローチャートである。
【図12】 本実施の形態による多倍精度データ同士の
乗算に関する全体の処理を示すフローチャートである。
【図13】 従来およびこの発明の実施の形態に適用さ
れるデータ駆動型情報処理システムのブロック構成図で
ある。
【図14】 従来のデータ駆動型処理装置の構成図であ
る。
【図15】 (A)と(B)は従来およびこの発明の実
施の形態に適用されるデータパケットのフィールド構成
図である。
【図16】 ノイマン型計算機においてX^YmodZ
の演算を実行するための処理フローチャートである。
【符号の説明】
1、10 データ駆動型処理装置、11 入出力制御
部、12 合流部、13発火制御部、14、141 演
算部、15、150 内蔵メモリ、151 累算メモ
リ、16 プログラム記憶部、17 分岐部、PA、P
A1、PA1(IN)、PA1(OUT) データパケ
ット。

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 kビット長(kは任意の正の整数)のn
    個(nは2以上の任意の整数)の領域を含むメモリを備
    えたデータ駆動型処理装置であって、 前記n個領域に格納されたメモリデータのそれぞれを演
    算処理する演算処理部をさらに備えて、 前記演算処理部は、 前記メモリデータと、与えられるデータパケットのデー
    タフィールドに格納された前記kビット長のデータとを
    所定演算命令に従い所定演算処理して、前記所定演算処
    理の結果を、複数の前記kビット長のデータを分割し
    て、前記分割により得られた前記複数のkビット長のデ
    ータのそれぞれを前記データフィールドに格納した複数
    の前記データパケットを出力する所定演算手段と、 前記所定演算手段から出力された前記複数のデータパケ
    ットを入力して、入力した複数データパケットのそれぞ
    れについて、 該データパケットの前記データフィールドの前記kビッ
    ト長のデータを、前記メモリの所定アドレスに対応の前
    記領域のメモリデータに累積加算して、桁あふれしたデ
    ータを除く累積加算結果を該領域に格納して、前記桁あ
    ふれしたデータを前記データフィールドに格納した前記
    データパケットを出力するデータ累積加算手段と、 前記桁あふれしたデータを前記データフィールドに格納
    した前記データパケットを入力して、該データパケット
    の前記データフィールドの前記桁あふれしたデータを、
    前記メモリにおける前記所定アドレスとは異なる上位の
    所定アドレスに対応の前記領域のメモリデータに累積加
    算して、桁あふれしたデータを除く累積加算結果を該領
    域に格納して、前記桁あふれしたデータを前記データフ
    ィールドに格納した前記データパケットを出力するあふ
    れデータ累積加算手段とを有して、 前記累積加算により前記所定アドレスの領域において桁
    あふれしたデータが生じる間は、前記あふれデータ累積
    加算手段による前記桁あふれしたデータについての前記
    累積加算が繰返されることを特徴とする、データ駆動型
    処理装置。
  2. 【請求項2】 前記演算処理部は、前記累積加算により
    前記所定アドレスの領域において桁あふれしたデータが
    生じているか否か判定する桁あふれ判定手段をさらに有
    して、 前記桁あふれ判定手段により桁あふれしたデータが生じ
    ていると判定されたことに応じて、前記あふれデータ累
    積加算手段により前記桁あふれしたデータについての前
    記累積加算が行なわれることを特徴とする、請求項1に
    記載のデータ駆動型処理装置。
  3. 【請求項3】 2個のm(mはn*k≧mを満たす任意
    の整数)ビット長の多倍精度データ同士を前記所定演算
    処理する場合に、 一方の前記多倍精度データを前記kビット長ごとに分割
    して得られたそれぞれのデータは、前記メモリのn個の
    領域のそれぞれに前記メモリデータとして格納されて、 他方の前記多倍精度データが前記kビット長ごとに分割
    して得られたそれぞれのデータは、n個の前記データパ
    ケットのそれぞれの前記データフィールドに格納され
    て、n個の前記データパケットは前記所定演算手段に順
    次与えられることを特徴とする、請求項1または2に記
    載のデータ駆動型処理装置。
  4. 【請求項4】 前記データパケットは、該データパケッ
    トを一意に識別するための世代番号が格納される世代フ
    ィールドをさらに有して、 所定アドレスは、前記データパケットの前記世代フィー
    ルドの内容に基づいて指定されることを特徴とする、請
    求項1ないし3のいずれかに記載のデータ駆動型処理装
    置。
  5. 【請求項5】 前記データ累積加算手段および前記あふ
    れデータ累積加算手段のそれぞれは、 与えられるデータパケットを入力して、該入力データパ
    ケット中の前記データフィールドの内容を、前記メモリ
    の前記所定アドレスに対応の前記領域のメモリデータに
    累積加算して、桁あふれしたデータを除く累積加算結果
    を該領域に格納して、前記桁あふれしたデータを前記入
    力データパケットの前記データフィールドに格納して、
    該入力データパケットを出力することを指示する演算命
    令に従い動作することを特徴とする、請求項1ないし4
    のいずれかに記載のデータ駆動型処理装置。
  6. 【請求項6】 kビット長(kは任意の正の整数)のn
    個(nは2以上の任意の整数)の領域を含んで、前記n
    個の領域のそれぞれにメモリデータが格納されるメモリ
    を備えたデータ駆動型処理装置におけるデータ処理方法
    であって、 前記メモリデータと、与えられるデータパケットのデー
    タフィールドに格納された前記kビット長のデータとを
    所定演算命令に従い所定演算処理して、前記所定演算処
    理の結果を、複数の前記kビット長のデータを分割し
    て、前記分割により得られた前記複数のkビット長のデ
    ータのそれぞれを前記データフィールドに格納した複数
    の前記データパケットを出力する所定演算ステップと、 前記所定演算ステップから出力された前記複数のデータ
    パケットを入力して、入力した複数データパケットのそ
    れぞれについて、 該データパケットの前記データフィールドの前記kビッ
    ト長のデータを、前記メモリの所定アドレスに対応の前
    記領域のメモリデータに累積加算して、桁あふれしたデ
    ータを除く累積加算結果を該領域に格納して、前記桁あ
    ふれしたデータを前記データフィールドに格納した前記
    データパケットを出力するデータ累積加算ステップと、 前記桁あふれしたデータを前記データフィールドに格納
    した前記データパケットを入力して、該データパケット
    の前記データフィールドの前記桁あふれしたデータを、
    前記メモリにおける前記所定アドレスとは異なる上位の
    所定アドレスに対応の前記領域のメモリデータに累積加
    算して、桁あふれしたデータを除く累積加算結果を該領
    域に格納して、前記桁あふれしたデータを前記データフ
    ィールドに格納した前記データパケットを出力するあふ
    れデータ累積加算ステップとを有して、 前記累積加算により前記所定アドレスの領域において桁
    あふれしたデータが生じる間は、前記あふれデータ累積
    加算ステップによる前記桁あふれしたデータについての
    前記累積加算が繰返されることを特徴とする、データ駆
    動型処理装置におけるデータ処理方法。
JP2000178733A 2000-06-14 2000-06-14 データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法 Expired - Fee Related JP3912958B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000178733A JP3912958B2 (ja) 2000-06-14 2000-06-14 データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法
US09/879,004 US6941448B2 (en) 2000-06-14 2001-06-13 Data-driven processor having multiple-precision data processing function and data processing method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000178733A JP3912958B2 (ja) 2000-06-14 2000-06-14 データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法

Publications (2)

Publication Number Publication Date
JP2001357025A true JP2001357025A (ja) 2001-12-26
JP3912958B2 JP3912958B2 (ja) 2007-05-09

Family

ID=18680121

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000178733A Expired - Fee Related JP3912958B2 (ja) 2000-06-14 2000-06-14 データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法

Country Status (2)

Country Link
US (1) US6941448B2 (ja)
JP (1) JP3912958B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058424B2 (en) * 2004-01-20 2006-06-06 Lucent Technologies Inc. Method and apparatus for interconnecting wireless and wireline networks
JP2005259030A (ja) * 2004-03-15 2005-09-22 Sharp Corp 性能評価装置、性能評価方法、プログラムおよびコンピュータ読取可能記録媒体
US8385971B2 (en) * 2008-08-19 2013-02-26 Digimarc Corporation Methods and systems for content processing

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2668438B2 (ja) * 1989-04-21 1997-10-27 三菱電機株式会社 データ検索装置
JP3689143B2 (ja) * 1995-03-31 2005-08-31 シャープ株式会社 データ駆動型情報処理装置
JP3720094B2 (ja) * 1995-10-18 2005-11-24 シャープ株式会社 データ駆動型情報処理装置

Also Published As

Publication number Publication date
JP3912958B2 (ja) 2007-05-09
US6941448B2 (en) 2005-09-06
US20010056529A1 (en) 2001-12-27

Similar Documents

Publication Publication Date Title
US5289397A (en) High-speed modulo exponentiator device
JP3525209B2 (ja) べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
US7925011B2 (en) Method for simultaneous modular exponentiations
CN112070222B (zh) 用于联邦学习的处理装置、加速器及方法
US8020142B2 (en) Hardware accelerator
US20110161390A1 (en) Modular multiplication processing apparatus
JPH11305996A (ja) 乗算を用いる計算装置のデ―タ処理高速化方法および装置
US7024560B2 (en) Power-residue calculating unit using Montgomery algorithm
CN100583757C (zh) 一种ecc\rsa加解密协处理器
US8458492B2 (en) Crypto-engine for cryptographic processing of data
EP1217512A2 (en) Arithmetic circuit and arithmetic method
JP2002040933A (ja) データ暗号化標準アルゴリズムを利用した暗号化装置
US7912886B2 (en) Configurable exponent FIFO
CN113193962B (zh) 基于轻量级模乘的sm2数字签名生成与验证器
JP2000353077A (ja) 多倍長演算装置
US6963644B1 (en) Multi-word arithmetic device for faster computation of cryptosystem calculations
US20040091105A1 (en) Apparatus for hyperelliptic-curve cryptography processing
TW589547B (en) Method and device for calculating a result of an exponentiation
JP2001357025A (ja) データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法
JP4147423B2 (ja) 任意精度演算器、任意精度演算方法、および電子機器
CN115270155A (zh) 一种获取大数拓展最大公约数的方法及硬件架构
US6614909B1 (en) Methods, systems, and circuits for generating keys for public key cryptosystems using parallel processing for modular operations of IC cards
Satoh et al. High-Speed MARS Hardware.
JP3912972B2 (ja) データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法
KR100858559B1 (ko) 잉여 이진수의 덧셈 방법, 잉여 이진수의 곱셈 방법, 잉여이진수 덧셈기 및 잉여 이진수 곱셈기

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051129

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060127

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