(57)【特許請求の範囲】
【請求項１】
単精度のデータが格納されたデータフィールドと命令コードを格納した命令フィールドを有するデータパケットを、要求信号が与えられたことに応じて転送する転送制御部と、前記転送制御部により転送される前記データパケットを入力するパケット入力手段と、多倍精度の１つ以上のオペランドが格納されるオペランド記憶部と、多倍精度のデータが格納されるデータ記憶部とを有して、前記パケット入力手段により前記データパケットが入力される毎に前記入力データパケットの内容に従い演算する演算処理手段を備えて、
前記演算処理手段は、
前記パケット入力手段により前記データパケットが入力されたことに応じて、前記入力データパケットの前記命令フィールドに格納された前記命令コードに基づいて、前記オペランド記憶部の前記１つ以上のオペランドから所望オペランドを選択して前記単精度単位で順次読出す読出手段と、
前記読出手段により前記所望オペランドが前記単精度単位で読出される毎に、読出された前記単精度単位の前記オペランドと前記入力データパケットの前記データフィールドに格納された前記単精度のデータとを所定演算し、該所定演算結果を所定ビット数だけシフトし、前記データ記憶部に格納された内容に該シフト結果を加算または前記データ記憶部に格納された内容から該シフト結果を減算し、前記加算または減算の結果を前記データ記憶部に格納する処理を繰返す累算手段と、
前記累算手段による処理の繰返し終了が検出されたことに応じて、前記累算手段による処理の結果が格納された前記データ記憶部の内容を読出して、読出した内容を前記入力データパケットの前記データフィールドに格納して該データパケットを出力するパケット出力手段とをさらに有し、
前記データパケットの前記データフィールドには、さらに、前記データ記憶部の内容における前記加算または減算を施す桁の位置を示す基準値が格納されて、
前記転送制御部は、
前記要求信号が与えられる毎にカウント値がリセットされて、その後、前記累算手段による処理が行なわれる毎に前記カウント値が１だけ更新されるカウンタを含み、
前記所定ビット数は、前記カウンタの前記カウント値と前記データパケットの前記データフィールドに格納された前記基準値とに基づいて決定される、データ駆動型処理装置。
【請求項２】
前記１つ以上の多倍精度のオペランドのそれぞれはＭ１ビット長を有し前記単精度のデータはＫ１ビット長を有する場合に、
前記累算手段による処理は、（Ｍ１／Ｋ１）回繰返されることを特徴とする、請求項１に記載のデータ駆動型処理装置。
【請求項３】
前記累算手段は、前記加算または前記減算のいずれかを、前記入力データパケットの前記命令フィールドに格納された前記命令コードに従い選択して実行することを特徴とする、請求項１または２に記載のデータ駆動型処理装置。
【請求項４】
前記カウンタのカウント値に基づいて、前記累算手段による前記処理の繰返し終了が検出されることを特徴とする、請求項２または３に記載のデータ駆動型処理装置。
【請求項５】
単精度のデータが格納されたデータフィールドと命令コードが格納された命令フィールドを有するデータパケットを、要求信号が与えられたことに応じて転送する転送制御部と、前記転送制御部により転送される前記データパケットを入力するパケット入力手段と、多倍精度の１つ以上のオペランドが格納されるオペランド記憶部と、多倍精度のデータが格納されるデータ記憶部とを備えるデータ駆動型処理装置におけるデータ処理方法であって、
前記パケット入力手段により前記データパケットが入力されたことに応じて、前記入力データパケットの前記命令フィールドに格納された前記命令コードに基づいて、前記オペランド記憶部の前記１つ以上のオペランドから所望オペランドを選択して前記単精度単位で順次読出す読出ステップと、
前記読出ステップにより前記所望オペランドが前記単精度単位で読出される毎に、読出された前記単精度単位の前記オペランドと前記入力データパケットの前記データフィールドに格納された前記単精度のデータとを所定演算し、該所定演算結果を所定ビット数だけシフトし、前記データ記憶部に格納された内容に該シフト処理結果を加算または前記データ記憶部に格納された内容から該シフト処理結果を減算し、前記加算または減算の結果を前記データ記憶部に格納する処理を繰返す累算ステップと、
前記累算ステップによる処理の繰返し終了が検出されたことに応じて、前記累算ステップによる処理の結果が格納された前記データ記憶部の内容を読出して、読出した内容を前記入力データパケットの前記データフィールドに格納して該データパケットを出力するパケット出力ステップとを有し、
前記データパケットの前記データフィールドには、さらに、前記データ記憶部の内容における前記加算または減算を施す桁の位置を示す基準値が格納されて、
前記転送制御部は、
前記要求信号が与えられる毎にカウント値がリセットされて、その後、前記累算ステップによる処理が行なわれる毎に前記カウント値が１だけ更新されるカウンタを含み、
前記所定ビット数は、前記カウンタの前記カウント値と前記データパケットの前記データフィールドに格納された前記基準値とに基づいて決定される、データ駆動型処理装置におけるデータ処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はデータ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法に関し、特に、多倍精度形式のデータ（以下、多倍精度データという）についてデータ駆動型の演算を行なうデータ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法に関する。
【０００２】
【従来の技術および発明が解決しようとする課題】
大量データの高速処理が望まれる場合には、並列処理が有効である。並列処理向きアーキテクチャのうちでも、データ駆動型と呼ばれるものが特に注目される。
【０００３】
データ駆動型情報処理システムでは、「ある処理に必要な入力データがすべて揃い、かつその処理に必要な演算装置などの資源が割当てられたときに処理が行なわれる」という規則に従って処理が並列に進行する。
【０００４】
図１１は、従来およびこの発明の実施の形態に適用されるデータ駆動型情報処理システムのブロック構成図である。図１２は、従来のデータ駆動型処理装置の構成図である。図１３（Ａ）と（Ｂ）は従来およびこの発明の実施の形態に適用されるデータパケットのフィールド構成図である。図１３（Ａ）では、データ駆動型処理装置の入出力データパケットＰＡの基本構成が示される。図１３（Ｂ）では、データ駆動型処理装置内部を流れるデータパケットＰＡ１の基本構成が示される。
【０００５】
図１３（Ａ）のデータパケットＰＡはプロセッサ番号ＰＥ（Processing Element）を格納するフィールド１８、ノード番号Ｎを格納するフィールド１９、世代番号Ｇを格納するフィールド２０およびデータＤを格納するフィールド２１を含む。図１３（Ｂ）のデータパケットＰＡ１は、図１３（Ａ）と同様のフィールド１９〜２１と、命令コードＣを格納するフィールド２２とを含む。
【０００６】
図１１においてデータ駆動型情報処理システムは従来のデータ駆動型処理装置１（本実施の形態に適用されるデータ駆動型処理装置１０）、複数のデータが予め格納されるデータメモリ３およびメモリインターフェース２を含む。データ駆動型処理装置１（１０）はデータ伝送路４、５および９のそれぞれが接続される入力ポートＩＡ、ＩＢおよびＩＶ、ならびにデータ伝送路６、７および８のそれぞれが接続される出力ポートＯＡ、ＯＢおよびＯＶを含む。
【０００７】
データ駆動型処理装置１（１０）はデータ伝送路４または５から入力ポートＩＡまたはＩＢを介して、データパケットＰＡが、時系列的に入力される。データ駆動型処理装置１（１０）には所定の処理内容がプログラムとして予め記憶されており、そのプログラム内容に基づく処理が実行される。
【０００８】
メモリインターフェース２はデータ駆動型処理装置１（１０）の出力ポートＯＶから出力されてデータメモリ３に対するアクセス（データメモリ３の内容の参照／更新など）要求を、データ伝送路８を介して受理する。メモリインターフェース２は受理したアクセス要求に従ってメモリアクセス制御線ＳＳＬを介してデータメモリ３に対してアクセスを行なった後、その結果を、データ伝送路９および入力ポートＩＶを介してデータ駆動型処理装置１（１０）に与える。
【０００９】
データ駆動型処理装置１（１０）は、入力したデータパケットＰＡに対する処理をして、処理が終了した後、出力ポートＯＡおよびデータ伝送路６または出力ポートＯＢおよびデータ伝送路７を介してデータパケットＰＡを出力する。
【００１０】
図１２には、従来のデータ駆動型処理装置１の構成が示される。図において、データ駆動型処理装置１は入出力制御部１１、合流部１２、データ駆動型の処理を行なうために発火制御部１３、内蔵メモリ１５が接続される演算部１４およびプログラム記憶部１６ならびに分岐部１７を含む。
【００１１】
ここで図１３（Ａ）と（Ｂ）を参照すると、プロセッサ番号ＰＥは、複数のデータ駆動型処理装置１が接続されたシステムにおいて対応するデータパケットＰＡが処理されるべきデータ駆動型処理装置１を特定するための情報である。ノード番号Ｎは、プログラム記憶部１６の内容をアクセスするためのアドレスとして用いられる。世代番号Ｇは、データ駆動型処理装置１に時系列に入力されるデータパケットを一意に識別するための識別子として用いられる。また世代番号Ｇはデータメモリ３が画像データメモリであった場合には、データメモリ３をアクセスするためのアドレスとしても用いられる。その際には、世代番号Ｇは上位ビットから順にフィールド番号Ｆ♯、ライン番号Ｌ♯およびピクセル番号Ｐ♯を示す。
【００１２】
動作において、図１３（Ａ）のデータパケットＰＡはデータ伝送路４、５を介してプロセッサ番号ＰＥで指定されたデータ駆動型処理装置１に与えられると入出力制御部１１において図１３（Ｂ）のデータパケットＰＡ１となる。つまり入出力制御部１１は、入力したデータパケットＰＡのプロセッサ番号ＰＥのフィールド１８を破棄して、該入力データパケットＰＡのノード番号Ｎに基づいて、命令コードＣと新たなノード番号Ｎとを得て、該入力データパケットＰＡのフィールド１８と１９にそれぞれ格納して、データパケットＰＡ１を合流部１２に出力する。したがって、入出力制御部１１から合流部１２に与えられたデータパケットＰＡ１は図１３（Ｂ）の構成を有する。なお、入出力制御部１１では世代番号ＧとデータＤは変化しない。
【００１３】
合流部１２は、入出力制御部１１から与えられるデータパケットＰＡ１、ならびに分岐部１７から出力されるデータパケットＰＡ１を順次入力して、発火制御部１３に出力する。
【００１４】
発火制御部１３には、対となるデータパケットＰＡ１を検出する（これを発火という）ための待合せメモリ１３１と定数データが１つ以上格納される定数データメモリ１３２が含まれる。発火制御部１３は、待合せメモリ１３１を利用して合流部１２から与えられるデータパケットＰＡ１について必要に応じて待合せを行なう。この結果、ノード番号Ｎおよび世代番号Ｇが一致する２つのデータパケットＰＡ１、すなわち対となる異なる２つのデータパケットＰＡ１のうち一方のデータパケットＰＡ１のフィールド２１のデータＤを、他方のデータパケットＰＡ１のフィールド２１に追加して格納して、この他方のデータパケットＰＡ１を演算部１４に出力する。このとき一方のデータパケットＰＡ１は消去される。ここでは、演算されるべき相手がデータパケットＰＡ１ではなく定数データである場合には、発火制御部１３での待合せは行なわれず、定数データが定数データメモリ１３２から読出されてデータパケットＰＡ１のフィールド２１に追加して格納されて、該データパケットＰＡ１は演算部１４に出力される。
【００１５】
演算部１４は発火制御部１３から与えられたデータパケットＰＡ１を入力して、データパケットＰＡ１の命令コードＣを解読して、解読結果に基づいて、所定の処理を行なう。命令コードＣがデータＤを含むデータパケットＰＡ１の内容に対する演算命令を示す場合には該命令コードＣに従いデータパケットＰＡ１の内容について所定の演算処理が施されて、その結果は該データパケットＰＡ１に格納されて、該データパケットＰＡ１はプログラム記憶部１６に出力される。また、このとき、データパケットＰＡ１の命令コードＣがメモリアクセス命令を指示している場合には内蔵メモリ１５へのアクセス処理が行なわれて、アクセス結果を格納したデータパケットＰＡ１はプログラム記憶部１６に出力される。なお、演算部１４に接続されるメモリはデータ駆動型処理装置１に内蔵されるメモリ１５に限定されず該装置に外付けされるメモリであってもよい。
【００１６】
また演算部１４は、命令コードＣがデータメモリ３に対するアクセス命令を示す場合にはアクセス要求として該データパケットＰＡ１を、データ伝送路８を介してメモリインターフェース２に与える。
【００１７】
メモリインターフェース２は、データ伝送路８を介して与えられたデータパケットＰＡ１を入力して、該入力データパケットＰＡ１の内容に従って、メモリアクセス制御線ＳＳＬを介してデータメモリ３をアクセスする。そのアクセスの結果は該入力データパケットＰＡ１のフィールド２１にデータＤとして格納されて、該データパケットＰＡ１はデータ伝送路９を介して演算部１４に与えられる。
【００１８】
プログラム記憶部１６は、複数の次位の命令コードＣおよびノード番号Ｎからなるデータフロープログラムが格納されたプログラムメモリ１６１を有する。プログラム記憶部１６は、演算部１４から与えられたデータパケットＰＡ１を入力し、該入力データパケットＰＡ１のノード番号Ｎに基づくアドレス指定によって、次位のノード番号Ｎおよび次位の命令コードＣをプログラムメモリ１６１から読出し、読出したノード番号Ｎおよび命令コードＣを、該入力データパケットＰＡ１のフィールド１９および２２のそれぞれに格納して、該入力データパケットＰＡ１を分岐部１７に出力する。
【００１９】
分岐部１７は、与えられたデータパケットＰＡ１の命令コードＣが該データ駆動型処理装置１内の演算部１４で実行されるべきものか、外部のデータ駆動型処理装置１の演算部１４で実行されるべきものかを判別する。外部のデータ駆動型処理装置１の演算部１４で実行されるべきと判別された場合にはデータパケットＰＡ１が入出力制御部１１に出力されて、入出力制御部１１はデータパケットＰＡ１を適切な出力ポートから該装置の外部に出力する。一方、該データ駆動型処理装置１内の演算部１４で実行すべきと判別された場合は、データパケットＰＡ１は合流部１２に与えられる。
【００２０】
このようにして、データパケットＰＡ１がデータ駆動型処理装置１内を周回することにより、プログラムメモリ１６１に予め記憶されたデータフロープログラムに従う処理が進行する。
【００２１】
データパケットはデータ駆動型処理装置１内においてはハンドシェイクによって非同期に転送される。プログラムメモリ１６１に格納されたデータフロープログラムに従う処理は、データパケットがデータ駆動型処理装置１内を周回することによるパイプライン処理に従い並列に実行される。よって、データ駆動型処理方法によれば、データパケット単位での処理の並列性が高く装置内を周回するデータパケットのフローレートが処理性能の１つの尺度となる。
【００２２】
近年はこのようなデータ駆動型処理方法の特徴が、大量の演算を高速で行なうことが必要とされる画像処理あるいは映像信号処理へと応用される。画像や映像信号の性質上、これらに対応のデータのビット長は短い。したがって、画像処理あるいは映像信号処理においても短いビット長のデータが処理対象とされる。現在、図１３（Ａ）と（Ｂ）のデータＤのフィールド２１は１２ｂｉｔ長を有する。同様に、データメモリ３や内蔵メモリ１５における１ワードも、１２ｂｉｔ長を有する。
【００２３】
上述したような画像処理あるいは映像信号処理とは異なり処理対象とされるデータのビット長が非常に長い処理もある。このような処理としては、たとえば公開された鍵を用いた暗号化処理である公開鍵暗号化処理やそのための復号化処理がある。
【００２４】
ここで、上述の公開鍵暗号化処理について説明する。周囲には秘密にして、特定の相手にだけある文（データ）を伝えたいとき、その伝えたい文（データ）を平文と呼び、平文を相手に伝達するために暗号化処理を施したものを暗号文と呼ぶ。平文をある法則によって暗号文へ変換する（暗号化する）あるいは暗号文を平文へ変換する（復号化する）ためのパラメータを鍵と呼ぶ。公開鍵暗号化方式では、数学的な性質が利用されることにより暗号文や公開鍵が第三者にわかっても送受信者が互いに独自に持っている秘密の鍵が知られなければ暗号文を解読できない、または容易には解読できない仕組みとなっている。公開鍵暗号化方式の代表的なものとしてはＲＳＡ（Rivest ，Shamir, Adlemanの略）やＤＨ（Diffie Hellmanの略）がある。以下、一例としてＤＨの鍵交換について説明する。
【００２５】
鍵交換を行なう２人をＡとＢとする。ＡとＢは、自分の秘密鍵Ｓ（Ａ）およびＳ（Ｂ）のそれぞれを生成し、これを使って自分の公開鍵Ｐ（Ａ）およびＰ（Ｂ）のそれぞれを、次の方法で作成する。なお、秘密鍵Ｓ（Ａ）およびＳ（Ｂ）のそれぞれは１０２４ｂｉｔ長のデータである。公開鍵暗号化処理では秘密鍵は一般的に１０２４ｂｉｔ長を有する。
【００２６】
公開鍵Ｐ（Ａ）＝Ｇ＾Ｓ（Ａ）ｍｏｄＰおよび公開鍵Ｐ（Ｂ）＝Ｇ＾Ｓ（Ｂ）ｍｏｄＰで求められる。ここで“＾”は冪乗算を示し“ｍｏｄ”は剰余算を示す。また、変数ＧおよびＰの値は定数として予め定められている。ＡとＢは、お互いに生成した公開鍵を相手に送信し、各人が相手の公開鍵を受理すると、次のように共通鍵Ｃが作成される。つまり、Ａは、Ｃ＝Ｐ（Ｂ）＾Ｓ（Ａ）ｍｏｄＰにより共通鍵Ｃを作成し、ＢはＣ＝Ｐ（Ｂ）＾Ｓ（Ａ）ｍｏｄＰに従い共通鍵Ｃを作成する。
【００２７】
２人が求めた共通鍵Ｃは全く同じ値となり、こうして秘密鍵を第三者に知られることなく送受信者で鍵の共有を図ることができる。なおＳ（Ａ）、Ｓ（Ｂ）およびＰは１０２４ｂｉｔ長のデータであり、Ｐ（Ａ）、Ｐ（Ｂ）およびＣもまた１０２４ｂｉｔ長のデータである。
【００２８】
上述した公開鍵の作成で使用される“Ｘ＾ＹｍｏｄＺ”という式に従う演算結果を求める際には、Ｘを乗数とする乗算または２乗演算と、Ｚを除数とする除算とが交互に繰返し行なわれる。またこの繰返し計算の中間結果を格納するために作業領域Ｕ（２０４８ｂｉｔ）およびＶ（２０４８ｂｉｔ）が準備される。“Ｘ＾ＹｍｏｄＺ”の演算のための処理フローが図１４に示される。
【００２９】
図１４はノイマン型計算機においてＸ＾ＹｍｏｄＺの演算を実行するための処理フローチャートである。図１４の処理フローを説明する。変数Ｘ，ＹおよびＺは、それぞれ１０２４ｂｉｔ長で構成されている。これら変数の値は、計算機内の内部メモリに格納されており処理開始時に内部メモリから読出される。その後、交互に中間演算とその結果格納が行なわれながら演算が進行する。なお、処理フローにおいて変数Ｙ［ｋ］は変数Ｙのｋビット目の値を示す。
【００３０】
まず、ステップＳ１において初期設定がなされる。つまり作業領域Ｕの内容はリセットされて作業領域Ｖの内容には１が設定される。そして制御変数ｋに１０２３がセットされる。つまり、制御変数ｋが１０２３から０まで１ずつデクリメントされながら、以下の演算が繰返される。
【００３１】
ステップＳ２では、変数Ｙ［ｋ］が１であるか０であるかで処理は分岐する。もし、変数Ｙ［ｋ］が１であれば、ステップＳ３の処理に移行するが、０であれば後述のステップＳ６に移行する。
【００３２】
ステップＳ３では、Ｖ×Ｘの演算が行なわれ、その結果が作業領域Ｕに格納される。次のステップＳ４ではＵ％Ｚに従う演算がなされて、つまり（作業領域Ｕに格納された値÷Ｚ）の剰余が求められて、その剰余値が作業領域Ｖに格納される。次のステップＳ５では、制御変数ｋが０であるか否かが判定される。０でなければステップＳ６において、作業領域Ｖの値が２乗されて、その結果が作業領域Ｕに格納される。そして、次のステップＳ７ではＵ％Ｚに従う演算がなされて、すなわち（作業領域Ｕに格納された値÷Ｚ）の剰余が求められて、その剰余値が作業領域Ｖに格納される。次のステップＳ８においては、制御変数ｋの値が１デクリメントされる。以降Ｓ２〜Ｓ８の処理が、ステップＳ５においてｋ＝０と判定されるまで繰返される。その結果、作業領域Ｖに格納されている値が、“Ｘ＾ＹｍｏｄＺ”の演算結果値となる。
【００３３】
このように公開鍵暗号化処理および復号化処理に代表されるように多倍精度データを処理する要求が生じているが、従来のデータ駆動型処理装置１によって多倍精度データを処理する方式はまだ確立されていない。詳述すると、公開鍵暗号化処理で必要とされる演算のビット長は１０２４ｂｉｔ程度であり、データ駆動型処理装置１によって、そのようなビット長を有した演算器、データパケットおよびメモリの１ワードを構成することは、データ駆動型処理装置１をＬＳＩ（集積回路の略）を用いて実現する場合の回路実装面積およびバス幅などの物理的な制約上非常に困難である。
【００３４】
それゆえにこの発明の目的は、多倍精度データを効率よく処理することのできるデータ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法を提供することである。
【００３５】
【課題を解決するための手段】
この発明の或る局面に係るデータ駆動型処理装置は、単精度のデータが格納されたデータフィールドと命令コードが格納された命令フィールドとを有するデータパケットを、要求信号が与えられたことに応じて転送する転送制御部と、転送制御部により転送される前記データパケットを入力するパケット入力手段と、多倍精度の１つ以上のオペランドが格納されるオペランド記憶部と多倍精度のデータが格納されるデータ記憶部とを有して、パケット入力手段によりデータパケットが入力される毎に入力データパケットの内容に従い演算する演算処理手段を備える。この演算処理手段は、パケット入力手段によりデータパケットが入力されたことに応じて、入力データパケットの前記命令フィールドに格納された命令コードに基づいて、オペランド記憶部の１つ以上のオペランドから所望オペランドを選択して単精度単位で順次読出す読出手段と、読出手段により所望オペランドが単精度単位で読出される毎に、読出された単精度単位のオペランドと入力データパケットのデータフィールドに格納された単精度のデータとを所定演算して該所定演算結果を所定ビット数だけシフトし、データ記憶部に格納された内容に該シフト結果を加算またはデータ記憶部に格納された内容から該シフト結果を減算し、加算または減算の結果をデータ記憶部に格納する処理を繰返す累算手段と、累算手段による処理の繰返し終了が検出されたことに応じて、累算手段による累算の結果が格納されたデータ記憶部の内容を読出して、読出した内容を入力データパケットのデータフィールドに格納して該データパケットを出力するパケット出力手段とをさらに有する。
データパケットのデータフィールドには、さらに、データ記憶部の内容における加算または減算を施す桁の位置を示す基準値が格納されて、転送制御部は、要求信号が与えられる毎にカウント値がリセットされて、その後、累算手段による処理が行なわれる毎にカウント値が１だけ更新されるカウンタを含み、所定ビット数は、カウンタのカウント値とデータパケットのデータフィールドに格納された基準値とに基づいて決定される。
【００３６】
上述のデータ駆動型処理装置では、処理実行中に演算処理手段に入力されたデータパケットの単精度のデータは、多倍精度の１つ以上のオペランドから選択された所望オペランドと単精度単位毎に繰返し所定演算されて、所定演算結果は累算されて、繰返し終了後に累算結果を格納した入力データパケットは演算処理手段から出力される。
【００３７】
したがって、データ駆動型処理装置において多倍精度データについて演算処理が行なわれる際には、演算対象の２オペランドのうちの一方の多倍精度データは複数の単精度データに分割されて単精度データの集合体として扱われる。それゆえに、データ駆動型処理装置においては、多倍精度データ同士の所定演算を単精度データを対象とする独立な複数の演算要素に分割できて、分割により得られた各単精度データについての演算をすべて同時並列に実行できる。したがって、データ駆動型処理装置の並列処理能力を最大限に発揮できる。また、多倍精度データの累算結果を格納するデータ記憶部が備えられるから、一括したハードウェア処理により演算の高速化を図ることができる。すなわちデータ駆動型処理装置では、データパケット単位の並列処理能力とデータ記憶部などの専用ハードウェアによる高速処理能力とは協調しあって互いにその能力が損なわれることはない。それゆえに、データ駆動型処理装置では多倍精度データの演算処理が実行される場合であっても処理速度と処理効率の向上を図ることができる。
【００３８】
上述したデータ駆動型処理装置によれば、多倍精度データについて演算処理が行なわれる際には、データ駆動型処理装置の演算処理部における１回の命令コードの実行だけで実現することができて、メモリアクセスを省略できる。それゆえに、このような演算処理を非常に高速かつ効率良く実行できる。
【００３９】
上述のデータ駆動型処理装置において、１つ以上の多倍精度のオペランドのそれぞれはＭ１ビット長を有し単精度のデータはＫ１ビット長を有する場合に、累算手段では、Ｋ１ビット長のデータ同士を所定演算して該所定演算結果をシフト処理しながらデータ記憶部に累算する処理が、（Ｍ１／Ｋ１）回繰返される。
【００４０】
上述のデータ駆動型処理装置によれば、多倍精度データについての演算処理の実行所要時間を、入力データパケットの単精度データと所望オペランドとデータ記憶部の累算結果それぞれのビット長に依存して決定することができる。
【００４１】
上述のデータ駆動型処理装置においては、読出手段は、入力データパケットの命令フィールドの命令コードに基づいて、１つ以上のオペランドから所望オペランドを選択する。そして累算手段は、シフト後の所定演算結果とデータ記憶部の内容と加算して加算結果をデータ記憶部に格納する加算的累算およびシフト後の所定演算結果を前記データ記憶部の内容から減算して減算結果をデータ記憶部に格納する減算的累算のいずれかを、入力データパケットの命令フィールドの命令コードに従い選択して実行する。
【００４２】
上述のデータ駆動型処理装置によれば、所望オペランドの選択および累算に関する選択は同一命令コードに基づいて実行することができる。
【００４４】
上述のデータ駆動型処理装置によれば、カウンタによりカウントされる累算手段の処理の繰返し回数値に基づいて、シフト処理のシフト量を制御できるとともに、累算手段による処理の繰返し終了を、言換えると多倍精度データの演算結果が算出されたタイミングを検知できる。
【００４５】
この発明の他の局面に係るデータ処理方法は、単精度のデータが格納されたデータフィールドと命令コードが格納された命令フィールドを有するデータパケットを、要求信号が与えられたことに応じて転送する転送制御部と、転送制御部により転送されるデータパケットを入力するパケット入力手段と、多倍精度の１つ以上のオペランドが格納されるオペランド記憶部と、多倍精度のデータが格納されるデータ記憶部とを備えるデータ駆動型処理装置に適用される方法であって、以下のステップを備える。つまり、データパケットが入力されたことに応じて、入力データパケットの命令フィールドに格納された命令コードに基づいて、オペランド記憶部の多倍精度の１つ以上のオペランドから所望オペランドを選択して単精度単位で順次読出す読出ステップと、読出ステップにより所望オペランドが単精度単位で読出される毎に、読出された単精度単位のオペランドと入力データパケットのデータフィールドに格納された単精度のデータとを所定演算して該所定演算結果を所定ビット数だけシフトし、データ記憶部に格納された内容に該シフト処理結果を加算またはデータ記憶部に格納された内容から該シフト処理結果を減算し、加算または減算の結果をデータ記憶部に格納する処理を繰返す累算ステップと、累算ステップによる処理の繰返し終了が検出されたことに応じて、累算ステップによる処理の結果が格納されたデータ記憶部の内容を読出して、読出した内容を、入力データパケットのデータフィールドに格納して該データパケットを出力するパケット出力ステップとを備える。
データパケットのデータフィールドには、さらに、データ記憶部の内容における加算または減算を施す桁の位置を示す基準値が格納されて、転送制御部は、要求信号が与えられる毎にカウント値がリセットされて、その後、累算ステップによる処理が行なわれる毎にカウント値が１だけ更新されるカウンタを含み、所定ビット数は、カウンタのカウント値とデータパケットのデータフィールドに格納された基準値とに基づいて決定される。
【００４６】
上述のデータ処理方法では、処理実行中に演算処理部に入力されたデータパケットの単精度のデータは、多倍精度の１つ以上のオペランドから選択された所望オペランドと単精度単位毎に繰返し所定演算されて、所定演算結果は累算されて、繰返し終了後に累算結果を格納した入力データパケットは演算処理部から出力される。
【００４７】
したがって、上述のデータ処理方法に従いデータ駆動型処理装置において多倍精度データについて演算処理が行なわれる際には、演算対象の２オペランドのうちの一方の多倍精度データは複数の単精度データに分割されて単精度データの集合体として扱われる。それゆえに、データ駆動型処理装置においては、多倍精度データ同士の所定演算を単精度データを対象とする独立な複数の演算要素に分割できて、分割により得られた各単精度データについての演算をすべて同時並列に実行できる。したがって、データ駆動型処理装置の並列処理能力を最大限に発揮できるから、データ駆動型処理装置では多倍精度データの演算処理が実行される場合であっても処理速度と処理効率の向上を図ることができる。
【００４８】
上述したデータ処理方法に従いデータ駆動型処理装置で多倍精度データについて演算処理は、演算処理部における１回の命令コードの実行だけで実現することができて、メモリアクセスを省略できる。それゆえに、このような演算処理を非常に高速かつ効率良く実行できる。
【００４９】
【発明の実施の形態】
以下、この発明の実施の形態について説明する。
【００５０】
まず、本実施の形態の特徴について説明する。
本実施の形態では、データ駆動型処理装置において多倍精度データの演算を実行するためにＬＳＩとして実現できる現実的な範囲でのビット長を有したデータと多倍精度データのレジスタ、さらに多倍精度データについての加算器（または減算器）を使用する。
【００５１】
図１は、この発明の実施の形態に係る演算部１４０の構成を、入出力されるデータパケットとともに示す図である。図２は、図１のＡＳＵＭ／ＡＤＥＤ演算回路６７の構成を示す図である。
【００５２】
図３は、この発明の実施の形態に係るデータ駆動型処理装置１０のブロック図である。図４（Ａ）と（Ｂ）はこの発明の実施の形態による多倍精度データの分割を説明する図である。図４（Ａ）の１０２４ｂｉｔの多倍精度データＡは図４（Ｂ）の３２ｂｉｔデータＡ［０］〜Ａ［３１］に分割される。データＡ［０］〜Ａ［３１］のそれぞれは、対応するそれぞれのデータパケットＰＡ１のフィールド２１に格納される。このようにして１０２４ｂｉｔの多倍精度データＡは、３２個のデータパケットＰＡ１の集合として表現される。図４（Ｂ）では３２個のデータパケットＰＡ１のそれぞれについてはフィールド２１に格納されるデータＡ［０］〜Ａ［３１］のそれぞれのみ示されて、他のフィールドのデータは省略される。
【００５３】
図５は図１のＡＳＵＭ／ＡＤＥＤ演算回路６７における２つの選択を模式的に説明する図である。図６は図５のＡＳＵＭ／ＡＤＥＤ演算回路６７におけるデータの操作を模式的に説明する図である。
【００５４】
図３のデータ駆動型処理装置１０は図１のシステムにおいて従来のデータ駆動型処理装置１に代替して設けられる。図３のデータ駆動型処理装置１０と図２の従来のデータ駆動型処理装置１とを比較して異なる点はデータ駆動型処理装置１０はデータ駆動型処理装置１の演算部１４に代替して演算部１４０を備える点である。データ駆動型処理装置１０の他の部分はデータ駆動型処理装置１と同様であるので説明を省略する。
【００５５】
図１を参照して、演算部１４０はＤＥＭＵＸ（デマルチプレクサの略）回路６４、ＡＳＵＭ／ＡＤＥＤ演算回路６７、メモリ演算回路６８、各種分岐命令を実行するＳＷＩＴＣＨ回路７０、他の種類の演算を行なう演算回路６５、６６および６９、ならびにＭＵＸ（マルチプレクサの略）回路７１を含む。ＡＳＵＭＡ／ＡＤＥＤ演算回路６７は多倍精度データの累積加算命令ＡＳＵＭＡ，ＡＳＵＭＢおよびＡＳＵＭＣと多倍精度データの累積減算命令ＡＤＥＤＡ，ＡＤＥＤＢおよびＡＤＥＤＣを実行する。ＳＷＩＴＣＨ回路７０は従来から提供される回路である。メモリ演算回路６８は必要に応じて内蔵メモリ１５をアクセスする。
【００５６】
演算部１４０にはデータパケットＰＡ１（ＩＮ）が入力される。データパケットＰＡ１（ＩＮ）にはフィールド２２に命令コードＣ、フィールド１９にノード番号Ｎ、フィールド２０に世代番号Ｇ、およびフィールド２１にデータＤとして左データＬＤおよび右データＲＤが格納される。左データＬＤおよび右データＲＤは対応の命令コードＣが２項演算命令などを示す場合に、発火制御部１３における待合せによって得られた２つのオペランドデータである。ただし、対応の命令コードＣが２項演算命令であっても、演算対象となる２つのオペランドデータの一方が定数である場合には、フィールド２１には発火制御部１３において定数データメモリ１３２から読出された定数データが格納される。
【００５７】
データパケットＰＡ１（ＩＮ）が演算部１４０に入力されると、入力データパケットＰＡ１の命令コードＣはＤＥＭＵＸ回路６４とＭＵＸ回路７１に与えられる。ＤＥＭＵＸ回路６４は与えられる命令コードＣに基づいて演算回路６５〜７０のうちのいずれか１つを選択して、選択した回路に該入力データパケットＰＡ１（ＩＮ）を与える。この演算回路の選択は、演算部１４０において並列配置された累積演算処理（ＡＳＵＭ／ＡＤＥＤ演算回路６７による処理）と非累積演算処理（回路６５，６６および６８〜７０による処理）のいずれか一方処理への分岐を示す。
【００５８】
非累積演算処理では、データパケットのデータまたはメモリデータに対する演算が行なわれる。演算内容は、加算、減算などの算術演算、シフト演算、論理和や論理積などの論理演算、データパケットの各フィールドの値を操作するフィールド操作などであってよい。ここでは、非累積演算処理についての詳細については省略する。
【００５９】
ＡＳＵＭ／ＡＤＥＤ演算回路６７には、後述するように多倍精度データのオペランドレジスタと結果レジスタが含まれており、必要に応じてこれらレジスタへアクセスし演算がなされる。この動作の詳細については後述する。各演算回路は、与えられるデータパケットＰＡ１（ＩＮ）の内容を対応の命令コードＣに基づいて演算し、その演算結果をデータパケットＰＡ１（ＩＮ）のフィールド２１に格納し、該データパケットＰＡ１（ＩＮ）をＭＵＸ回路７１に与える。
【００６０】
ＭＵＸ回路７１は与えられる命令コードＣに基づいて演算回路６５〜７０のいずれか１つの出力（データパケットＰＡ１（ＩＮ））を選択して入力する。そして、入力したデータパケットＰＡ１（ＩＮ）はデータパケットＰＡ１（ＯＵＴ）としてプログラム記憶部１６に出力される。
【００６１】
データパケットＰＡ１（ＯＵＴ）はフィールド２２に命令コードＣ、フィールド１９にノード番号Ｎ、フィールド２０に世代番号Ｇおよびフィールド２１にデータＤならびに真偽フラグＦＬを格納する。
【００６２】
真偽フラグＦＬはＳＷＩＴＣＨ命令を含む各種の分岐命令の実行結果によって出力される１ビットのフラグデータである。ＳＷＩＴＣＨ命令による判定結果が「真」のときは真偽フラグＦＬに１が設定され「偽」のときには０が設定される。分岐命令以外の命令では、真偽フラグＦＬには「真」を表わす“１”が常に出力される。真偽フラグＦＬに従い次位の命令コードＣと次位のノード番号Ｎとがプログラム記憶部１６のプログラムメモリ１６１から読出される。つまりＳＷＩＴＣＨ命令の次に実行される命令は、真偽フラグＦＬの値に従いプログラムメモリ１６１から選択的に読出される。
【００６３】
図２は多倍精度データの累積演算処理部を示しており、図１におけるＡＳＵＭ／ＡＤＥＤ演算回路６７の内部構成に相当する。累積演算処理部は、データパケットの転送を制御する転送制御部３０１と転送制御素子（以下、Ｃ素子という）２０２、データパケットＰＡ１（ＩＮ）の内容を保持するデータラッチ回路２０３および２０４、第１オペランドレジスタ群２０５、２０４８ｂｉｔの演算結果が格納される結果レジスタ２０６（以下、ＲＥＧ＿ＲＬＴ２０６という）、第１オペランドレジスタ群２０５から単精度データ（３２ビットのデータ）を選択的に読出すためのＭＵＸ回路２０７、ＭＵＸ回路２０８、乗算器２０９、シフト演算器２１０、多倍精度データのための加算器または減算器（以下、加算器／減算器という）２１１を有する。
【００６４】
ＭＵＸ回路２０８は、ＲＥＧ＿ＲＬＴ２０６の内容を入力パケットＰＡ１（ＩＮ）のフィールド２１に格納して出力すべきデータパケットＰＡ１（ＯＵＴ）を構成し出力する。
【００６５】
加算器／減算器２１１はシフト演算器２１０から出力されたデータとＲＥＧ＿ＲＬＴ２０６の内容とを用いて入力パケットＰＡ１（ＩＮ）の命令コードＣに従い加算および減算のいずれかをして、その結果をＲＥＧ＿ＲＬＴ２０６に格納する。したがって、加算器／減算器２１１とＲＥＧ＿ＲＬＴ２０６との動作により、加算結果の累算処理および減算結果の累算処理のいずれかが行なわれて、累算結果はＲＥＧ＿ＲＬＴ２０６に保持される。
【００６６】
第１オペランドレジスタ群２０５は、それぞれが１０２４ｂｉｔのレジスタＲＥＧ＿ＯＰＡ（以下、ＲＥＧ＿ＯＰＡという）２０５ａ、レジスタＲＥＧ＿０ＰＢ（以下、ＲＥＧ＿ＯＰＢという）２０５ｂおよびレジスタＲＥＧ＿ＯＰＣ（以下、ＲＥＧ＿ＯＰＣという）２０５ｃを含む。これらレジスタのそれぞれには、２項演算のための２つのオペランドのうちの１方オペランド（第１オペランドという）が定常的に格納される。言換えると所定のデータフロープログラムが予め実行されることにより、これらレジスタのそれぞれに初期値が格納される。
【００６７】
ＡＳＵＭ／ＡＤＥＤ演算回路６７には、図１のＤＥＭＵＸ回路６４による選択の結果、多倍精度データの累積加算命令（累積加算命令とは、加算して加算結果を累算する命令）または多倍精度データの累積減算命令（累積減算命令とは、減算して減算結果を累算する命令）が選択された場合に限りデータパケットＰＡ１（ＩＮ）が入力される。その場合には、データパケットＰＡ１（ＩＮ）の命令コードＣはＡＳＵＭ／ＡＤＥＤ演算回路６７で実行されるべき累積加算または累積減算の命令を示し、対応のノード番号Ｎと世代番号Ｇはプログラムを実行する上での適切な値を示し、対応の左データＬＤは演算対象である３２ｂｉｔの他方オペランド（第２オペランドという）を示し、対応の右データＲＤは第２オペランドを用いた乗算後に累積加算（または累積減算）する桁の位置を指示するための基準値Ｃｏｌを示す。ノード番号Ｎと世代番号Ｇは、ここでは特に使用されない。
【００６８】
ＡＳＵＭ／ＡＤＥＤ演算回路６７では、入力データパケットＰＡ１（ＩＮ）の命令コードＣによって図５に示す２つの選択がなされた後、図６に示すデータ操作が行なわれる。図５に示す２つの選択とは次のようなものである。
【００６９】
第１の選択において、命令コードＣに基づいて、第１オペランドレジスタ群２０５中の３つのレジスタから、すなわちＲＥＧ＿ＯＰＡ２０５ａ、ＲＥＧ＿ＯＰＢ２０５ｂおよびＲＥＧ＿ＯＰＣ２０５ｃから演算対象として１つが選択される。選択されたレジスタを以下、レジスタＲＥＧ＿ＯＰと称する。レジスタＲＥＧ＿ＯＰの内容は入力データパケットＰＡ１（ＩＮ）の３２ｂｉｔの単精度データである左データＬＤ（第２オペランド）と乗算される。第２の選択において、前述の乗算結果は、命令コードＣに基づいて、ＲＥＧ＿ＲＬＴ２０６の内容に累積加算するか累積減算するかが選択される。累積加算および累積減算のいずれかが選択されると、乗算結果は累算すべき桁の位置を示す対応の基準値Ｃｏｌ（右データＲＤ）に従い算術左シフトされた後、ＲＥＧ＿ＲＬＴ２０６の内容に累積加算または累積減算される。
【００７０】
前述した２つの選択の組合せにより、ＡＳＵＭ／ＡＤＥＤ演算回路６７で実行される命令コードＣで示される演算命令は、３×２＝６種類から１つが選ばれていることになる。６種類の演算命令には、命令コードＣが‘ＡＳＵＭＡ’、‘ＡＳＵＭＢ’および‘ＡＳＵＭＣ’で示される３種類の累積加算命令と、命令コードＣが‘ＡＤＥＤＡ’、‘ＡＤＥＤＢ’および‘ＡＤＥＤＣ’で示される３種類の累積減算命令とが含まれる。これら命令コードの末尾の‘Ａ’、‘Ｂ’および‘Ｃ’のそれぞれは、演算対象がＲＥＧ＿ＯＰＡ２０５ａ、ＲＥＧ＿ＯＰＢ２０５ｂおよびＲＥＧ＿ＯＰＣ２０５ｃのそれぞれの内容であることを示す。
【００７１】
レジスタＲＥＧ＿ＯＰの１０２４ｂｉｔのデータ（第１オペランド）と３２ｂｉｔの左データＬＤ（第２オペランド）を乗算して、乗算結果をＲＥＧ＿ＲＬＴ２０６の内容に累積加算および累積減算のいずれかをする処理の手順が図６に示される。このような処理手順は図６に示されるように、「３２ｂｉｔ×３２ｂｉｔの乗算」＆「算術左シフトとＲＥＧ＿ＲＬＴ２０６を用いた累積加算または累積減算」の処理セットが、３２回繰返し実行されることにより達成される。
【００７２】
図６ではレジスタＲＥＧ＿ＯＰとしてＲＥＧ＿ＯＰＡ２０５ａが選択されたと想定する。図４（Ａ）と（Ｂ）に示されるようにレジスタＲＥＧ＿ＯＰの１０２４ｂｉｔのデータは３２ｂｉｔのデータｏｐ[０]〜データｏｐ[３１]に分割される（図６のＳ１）。その後、データｏｐ[ｉ]（ｉ＝０、１、２、３、…３１）のそれぞれについて上述した処理セットが繰返されて、その結果を格納したデータパケットＰＡ１（ＯＵＴ）が生成されて、出力される。
【００７３】
図６において上述した処理セットの第１回目の実行ではレジスタＲＥＧ＿ＯＰの最下位の３２ｂｉｔのデータｏｐ［０］と左データＬＤとの間で乗算器２０９により乗算がなされ（図６のＳ２）、乗算結果はシフト演算器２１０により（３２＊Ｃｏｌ）ビットだけ算術左シフトされる（図６のＳ３）。この算術左シフト時には後述するように０フィル処理がなされて符号拡張処理がなされる。その結果は、加算器／減算器２１１によりレジスタＲＥＧ＿ＲＬＴ２０６の内容に累積加算または累積減算される（図６のＳ４、Ｓ５）。次に、上述した処理セットの第２回目の実行では、レジスタＲＥＧ＿ＯＰの次のデータｏｐ［１］と左データＬＤとの間で乗算器２０９により乗算がなされ、乗算結果はシフト演算器２１０により（３２＊（Ｃｏｌ＋１））ビットだけ算術左シフトされた後、加算器／減算器２１１によりＲＥＧ＿ＲＬＴ２０６の内容に累積加算または累積減算される（Ｓ２〜Ｓ４）。以降のデータｏｐ[ｉ]について上述の処理セットが第３回目から第３２回目まで同様にして繰返し実行される。その結果、レジスタＲＥＧ＿ＯＰの内容と左データＬＤの乗算結果は、ＲＥＧ＿ＲＬＴ２０６の内容に累積加算または累積減算する処理が達成される。
【００７４】
図２では、乗算器２０９と加算器／減算器２１１の累算部とはパイプライン構造となっているので単精度（３２ｂｉｔ）の乗算の３２回の繰返しによる遅延は累算自体の処理には影響を及ぼさない。
【００７５】
図６で示された処理は、図２では以下のように動作する。
前述した第１回目から第３２回目の処理セットの各回の実行は、信号ＣＰ１の変化によって開始される。信号ＣＰ１の変化時に、前段の処理部（図示せず）から入力データパケットＰＡ１（ＩＮ）がデータラッチ回路２０３に取込まれ、常に保持される。また、この時、第１オペランドレジスタ群２０５の中から、命令コードＣと信号ＮＵＭに基づいてＭＵＸ回路２０７により３２ｂｉｔのデータｏｐ［ｉ］が抽出される。ここで命令コードＣは入力データパケットＰＡ１（ＩＮ）に含まれる命令コードＣであり、信号ＮＵＭは転送制御部３０１内でカウントされる処理セットの繰返し回数（１〜３２のいずれか）を示す。詳細には、ＭＵＸ回路２０７は、データラッチ回路２０３が保持している命令コードＣに基づいて第１オペランドレジスタ群２０５の中から演算対象とされる１つのオペランドレジスタを選択すると、選択されたオペランドレジスタのデータ（１０２４ｂｉｔ）から信号ＮＵＭに基づいて３２ｂｉｔのデータを抽出してデータｏｐ［ｉ］として出力する。このように、ＭＵＸ回路２０７により命令コードＣと信号ＮＵＭとに基づいて、１０２４ｂｉｔ＊３のデータから３２ｂｉｔのデータｏｐ［ｉ］が選択される。
【００７６】
次に乗算器２０９によりデータｏｐ［ｉ］と入力データパケットＰＡ１（ＩＮ）の左データＬＤの乗算がなされ、６４ｂｉｔの乗算結果データが出力される。この乗算結果データは、信号ＮＵＭと入力データパケットＰＡ１（ＩＮ）の右データＲＤにより算術左シフトと０フィル処理がなされて２０４８ｂｉｔへ拡張される。なお、０フィルとは、図６で示されるように左シフトされていない、すなわち計算が施されていない上位ビットの全てに０をセットすることをいう。ここで、右データＲＤは基準値Ｃｏｌを示す。
【００７７】
次に、加算器／減算器２１１において、２０４８ｂｉｔのデータとＲＥＧ＿ＲＬＴ２０６の内容（２０４８ｂｉｔ）との間で命令コードＣに基づいて加算および減算のいずれかが実行される。実行結果は、信号ＣＰ２の変化によりＲＥＧ＿ＲＬＴ２０６の内容に累算される。
【００７８】
加算器／減算器２１１により累積加算が行なわれるＲＥＧ＿ＲＬＴ２０６上の桁の位置をデータパケットＰＡ１（ＩＮ）の内容で指定できる。すなわち入力データパケットＰＡ１（ＩＮ）の単精度データとオペランドレジスタの多倍精度データとの乗算結果をＲＥＧ＿ＲＬＴ２０６の内容に累算する場合に、乗算結果の最下位ビットをＲＥＧ＿ＲＬＴ２０６のどのビットに合せて累算するかを、データパケットＰＡ１（ＩＮ）の内容で指定できる。また、シフト演算器２１０による算術左シフトでは、シフト量は「データパケットＰＡ１（ＩＮ）の右データＲＤ」と「単精度乗算の繰返し回数」とから決定される。
【００７９】
ＡＳＵＭ／ＡＤＥＤ演算回路６７におけるデータ転送は、転送制御部３０１とＣ素子２０２によって制御される。
【００８０】
図７は、転送制御部３０１とＣ素子２０１の信号の入出力関係を示す図である。図８（Ａ）〜（Ｊ）は、図７における信号のタイミングチャートである。図７と図８（Ａ）〜（Ｊ）を参照して、転送制御部３０１とＣ素子２０１の信号の入出力動作について説明する。
【００８１】
図７を参照して転送制御部３０１はＣ素子２０１とＮＵＭカウンタ３０２を含む。ここでは、処理のためのデータはＣ素子２０１からＣ素子２０２の方向に伝送されると想定する。Ｃ素子２０１と２０２は、入力端子ＣＩとＲＩおよび出力端子ＣＯとＲＯをそれぞれ含む。入力端子ＣＩには、前段からデータの送信を要求する送信要求信号が与えられる。入力端子ＲＩには、次段からデータの受信を許可する受信許可信号が与えられる。出力端子ＣＯからは次段に対して送信要求信号が出力される。出力端子ＲＯからは次段に対して受信許可信号が出力される。ここでは、説明を簡単にするために、Ｃ素子２０１は図示されない前段から送信要求信号ＣＩを受理し、また図示されない前段に受信許可信号ＲＯを出力する（図８（Ａ）、（Ｊ）参照）。また、Ｃ素子２０２からＣ素子２０１に受信許可信号ＲＲ（図８（Ｅ）参照）が出力されて、Ｃ素子２０１からＣ素子２０２に送信要求信号ＣＣ（図８（Ｃ）参照）が出力されて、Ｃ素子２０２から図示されない次段に送信要求信号ＣＯ（図８（Ｉ）参照）が出力されると想定する。
【００８２】
Ｃ素子２０１は、受信許可信号ＲＲが与えられると、応じて信号ＩＮＣをＮＵＭカウンタ３０２に与える（図８（Ｅ）と（Ｇ）参照）。Ｃ素子２０１は送信要求信号ＣＩを受理すると（図８（Ａ）参照）、応じて信号ＣＰ１と信号ＲＳＴを、データラッチ回路２０３とＮＵＭカウンタ３０２にそれぞれ出力する（図８（Ｂ）と（Ｆ）参照）。ＮＵＭカウンタ３０２は信号ＲＳＴが与えられるとカウント値を１にリセットして、リセット後は、信号ＩＮＣが与えられる毎にカウントアップしてカウント値を示す信号ＮＵＭをＭＵＸ回路２０７とＣ素子２０１とＣ素子２０２とシフト演算器２１０にそれぞれ出力する（図８（Ｆ）、（Ｇ）および（Ｈ）参照）。
【００８３】
Ｃ素子２０１は信号ＮＵＭを参照して動作する。具体的には、与えられる信号ＮＵＭが３２を示す時に限り受信許可信号ＲＯを出力し（図８（Ｊ）参照）、３２以外の値を示す時には受信許可信号ＲＯを出力しない。
【００８４】
Ｃ素子２０２は信号ＮＵＭを参照して動作する。具体的には、信号ＮＵＭが３２を示す時に限り送信要求信号ＣＯを出力し、３２以外の値を示す時には送信要求信号ＣＯを出力しない（図８（Ｉ）参照）。
【００８５】
動作において、信号ＣＰ１の１回目の変化により上述した処理セットの第１回目が開始されるので、データラッチ回路２０３は信号ＣＰ１が与えられたことに応答して、前段の処理部からデータパケットＰＡ１（ＩＮ）を入力する。Ｃ素子２０２は、転送制御部３０１から出力された送信要求信号ＣＣを上述した各処理セットの計算処理に必要十分な時間だけ遅延された後、受理すると、転送制御部３０１に対して次のデータの受信を許可する受信許可信号ＲＲを送る（図８（Ｅ）参照）とともに、信号ＣＰ２を変化させる（図８（Ｄ）参照）。ここまでの期間に、上述した処理セットの第１回目の実行は完了している。処理セットの各回にかかる必要十分な所要時間だけ送信要求信号ＣＣの伝送を遅延させるために、伝送路部分に遅延素子３０３が挿入される。
【００８６】
処理セットの第２回目以降の実行は、Ｃ素子２０２からの受信許可信号ＲＲの変化により転送制御部３０１が第１オペランドレジスタ群２０５を制御する信号ＣＰ１１を再び変化させることで開始される。転送制御部３０１はまた同時に送信要求信号ＣＣを送り、信号ＮＵＭの値を１だけインクリメントする。Ｃ素子２０２は、転送制御部３０１から遅延を介して送信要求信号ＣＣを受理した時点で信号ＮＵＭを参照しＮＵＭ＝３２であったときに限り、次の処理に対する送信要求信号ＣＯを送り信号ＮＵＭがそれ以外の値のときは送信要求信号ＣＯは送らない。このようにすることで、第３２回目の処理セットの実行が終了したときに限りデータパケットＰＡ１（ＯＵＴ）は出力されて次段の処理部（図示せず）へ転送され、第１回目の処理セットから第３１回目の処理セットの間はデータパケットＰＡ１（ＯＵＴ）は出力されず次段の処理部へ転送されないように制御される。
【００８７】
転送要求信号ＣＯが変化するとＭＵＸ回路２０８において構成されたデータパケットＰＡ１（ＯＵＴ）は出力されて次段の処理部（図示せず）へ転送される。
【００８８】
本実施の形態では、演算対象となる多倍精度データはデータ駆動型処理装置１０をフローするデータパケットのフィールド２１に格納可能なビット長を有した複数のデータに分割される。仮に１０２４ｂｉｔの多倍精度データは３２ｂｉｔの３２個のデータに分割されると想定する。この分割の様子は図４（Ａ）と（Ｂ）に示した。
【００８９】
ここで、例として図１４の多倍精度データ演算のフローにおいて「Ｕ←Ｖ×Ｘ」の演算について示す。ここでＶとＸはそれぞれ１０２４ｂｉｔの多倍精度データでありＵは２０４８ｂｉｔの多倍精度データであるとする。図９は、多倍精度データの演算「Ｕ←Ｖ×Ｘ」を表現する式を示す図である。演算「Ｕ←Ｖ×Ｘ」は、図９の式（１）のように分割表現される。式（１）における‘≪’はシフト演算を示す。図９の式に対応の処理フローが図１０に示される。式（１）でＶ［０］，Ｖ［１］，…，Ｖ［３１］は図４（Ｂ）のパケット分割に従う。そこで、式（１）より、次のような使用法が考えられる。多倍精度データＵをＲＥＧ＿ＲＬＴ２０６へ、多倍精度データＸを第１オペランドレジスタに対応のＲＥＧ＿ＯＰＡ２０５ａへ割当て、多倍精度データＶはデータパケットＶ［０］，Ｖ［１］，…，Ｖ［３１］へと分割する（図９の式（２）参照）。このようにすることで前述した演算は、累積加算命令ＡＳＵＭＡの３２回の繰返し実行によって達成される（図９の式（３）参照）。３２個の累積加算命令ＡＳＵＭＡのそれぞれに関する入力はデータパケットＰＡ１（ＩＮ）において右データＲＤ＝基準値Ｃｏｌ，左データＬＤ＝Ｖ［Ｃｏｌ］であり、基準値Ｃｏｌを０〜３１まで変化させて３２回演算を実行すればよい。
【００９０】
具体的な処理手順を図１０を参照して説明する。図１０の処理フローはノードＮ１〜Ｎ６を有して、各ノードには実行される命令または処理内容が割当てられている。予め、ＲＥＧ＿ＲＬＴ２０６の内容は０にセットされて、ＲＥＧ＿ＯＰＡ２５ａにはデータＸがロードされる（ノードＮ１とＮ２参照）。その後、データＶ[０]〜[３１]が入力されて、データＶ[ｉ]（ｉ＝０、１、２…、３１）のそれぞれについてＲＥＧ＿ＯＰＡ２５ａのデータＸ[ｉ]と同期を取りながら命令ＡＳＵＭＡ（ＬＤ、ＲＤ）が実行される（ノードＮ２ａ、Ｎ３、Ｎ３ａ、Ｎ４）。詳細には、図２の乗算器２０９により３２ｂｉｔ＊３２ｂｉｔの乗算が３２回連続して実行されて、３２個の６４ｂｉｔの乗算結果データはＲＥＧ＿ＲＬＴ２０６に累積加算される。ＲＥＧ＿ＲＬＴ２０６の内容は、プログラムによりリセットされるまでは直前の累積加算結果が保存される。
【００９１】
その後、再度、命令ＡＳＵＭＡ（ＬＤ、ＲＤ）が同様にして実行されると（ノードＮ４）、前回の命令ＡＳＵＭＡ（ＬＤ、ＲＤ）の実行結果による累積加算値に、今回の命令ＡＳＵＭＡ（ＬＤ、ＲＤ）の実行結果による累積加算値が累積加算されて、その結果はＲＥＧ＿ＲＬＴ２０６に保持される。したがって、図９のように命令ＡＳＵＭＡが３２回実行されて演算の終了が判定されると（ノードＮ５）、ＲＥＧ＿ＲＬＴ２０６には１０２４ｂｉｔ＊１０２４ｂｉｔの演算結果が保持されている。ＭＵＸ回路２０８は、演算の終了が判定されるとＲＥＧ＿ＲＬＴ２０６から結果データを読出して３２ビットのデータＵ[ｉ]（ｉ＝０、１、２、…、６３）毎に、該データＵ[ｉ]を格納したデータパケットＰＡ１（ＯＵＴ）を生成して出力する（ノードＮ６）。
【００９２】
図２の第１オペランドレジスタ群２０５では、図１４のフロー全体を効率よく実現するために３つのオペランドレジスタであるＲＥＧ＿ＯＰＡ２０５ａ，ＲＥＧ＿ＯＰＢ２０５ｂおよびＲＥＧ＿ＯＰＣ２０５ｃが設けられる。したがって、図１４の多倍精度データ演算のフローを実現するためのレジスタ割当としては、データＵ（２０４８ｂｉｔ）をＲＥＧ＿ＲＬＴ２０６に、データＸ（１０２４ｂｉｔ）をＲＥＧ＿ＯＰＡ２０５ａに、データＺ（１０２４ｂｉｔ）をＲＥＧ＿ＯＰＢ２０５ｂに、Ｓ６における２つのデータＶ（１０２４ｂｉｔ）の一方をＲＥＧ＿ＯＰＣ２０５ｃにそれぞれ割当てるとよい。
【００９３】
図２の第１オペランドレジスタ群２０５は３つのオペランドレジスタを含むのは、以下の理由による。つまり、Ｘ＾ＹmodＺで示される多倍精度データの演算を効率よく行なうためである。「効率よく」とは、オペランドレジスタへの１０２４ｂｉｔのオペランドのロード回数を少なくすることを指す。１０２４ｂｉｔのデータのロード時間は装置における実行時間に対して無視できない。したがって、オペランドとして値の変化しないデータＸとデータＺは、オペランドレジスタに常駐させておいた方が、ロードによる負荷を軽減できる。なお、第１オペランドレジスタ群２０５は３つのオペランドレジスタを含むのは、Ｘ＾ＹmodＺに従う演算を実行するためには、Ａ＊Ｂで示される多倍精度データの乗算を繰返す必要があるからである。したがって、第１オペランドレジスタ群２０５には少なくとも１つのオペランドレジスタが含まれればよい。
【００９４】
図２では、乗算器２０９により多倍精度データの乗算が行なわれているが、他の種類の演算、例えば除算が行なわれるようにして、シフト演算器２１０は与えられるデータに対して右シフト処理するようにしてもよい。また、ここでは、乗算器２０９とシフト演算器２１０により入力データに対して一律に乗算が行なわれるようにしているが、入力データパケットＰＡ１（ＩＮ）の命令コードＣにより指示される種類の演算が行なわれるようにしてもよい。
【００９５】
上述のデータ駆動型処理装置によれば、多倍精度データについて命令コードＡＳＵＭ／ＡＤＥＤに従う演算処理が行なわれる際には、演算対象のオペランドの一方の多倍精度データは複数に分割されて単精度データの集合体として扱われる。それゆえに、データ駆動型処理装置においては、多倍精度データ同士の演算を単精度データを対象とする独立な演算要素に分割することができて、各単精度データについての演算をすべて同時並列に実行できる。それゆえに、データ駆動型処理装置の並列処理能力を最大限に発揮できる。また、多倍精度データの累積結果を格納するＲＥＧ＿ＲＬＴ２０６が備えられるから、一括したハードウェア処理による演算の高速化を図ることができる。すなわちデータ駆動型処理装置のデータパケット単位の並列処理能力と専用ハードウェアによる一括した高速処理能力とを協調させ、互いにその能力を損なうことなく処理の高速化と高い効率化を図ることができる。
【００９６】
上述したデータ駆動型処理装置によれば、多倍精度データについてＡＳＵＭ／ＡＤＥＤの演算処理が行なわれる際には、単精度データと多倍精度データとの間の乗算と累積加算／累積減算を、データ駆動型処理装置の１回の命令実行だけで実現することができ、メモリアクセスを省略できる。それゆえに、このような演算処理を非常に高速かつ効率良く実行できる。なお、このような演算処理の実行所要時間は、与えられる入力データパケットＰＡ１（ＩＮ）の単精度データと第１オペランドレジスタ群２０５の各レジスタとレジスタＲＥＧ＿ＲＬＴ２０６それぞれのビット長に依存する。
【００９７】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【００９８】
【発明の効果】
本発明によれば、データ駆動型処理装置において多倍精度データについて演算処理が行なわれる際には、演算対象の２オペランドのうちの一方の多倍精度データは複数の単精度データに分割されて単精度データの集合体として扱われる。それゆえに、データ駆動型処理装置においては、多倍精度データ同士の所定演算を単精度データを対象とする独立な複数の演算要素に分割できて、分割により得られた各単精度データについての演算をすべて同時並列に実行できる。したがって、データ駆動型処理装置の並列処理能力を最大限に発揮できる。また、多倍精度データの累算結果を格納するデータ記憶部が備えられるから、一括したハードウェア処理により演算の高速化を図ることができる。すなわちデータ駆動型処理装置では、データパケット単位の並列処理能力とデータ記憶部などの専用ハードウェアによる高速処理能力とは協調しあって互いにその能力が損なわれることはない。それゆえに、データ駆動型処理装置では多倍精度データの演算処理が実行される場合であっても処理速度と処理効率の向上を図ることができる。
【００９９】
上述したデータ駆動型処理装置によれば、多倍精度データについて演算処理が行なわれる際には、データ駆動型処理装置の演算処理部における１回の命令コードの実行だけで実現することができて、メモリアクセスを省略できる。それゆえに、このような演算処理を非常に高速かつ効率良く実行できる。
【図面の簡単な説明】
【図１】  この発明の実施の形態に係る演算部１４０の構成を、入出力されるデータパケットとともに示す図である。
【図２】  図１のＡＳＵＭ／ＡＤＥＤ演算回路６７の構成を示す図である。
【図３】  この発明の実施の形態に係るデータ駆動型処理装置１０のブロック図である。
【図４】  （Ａ）と（Ｂ）はこの発明の実施の形態による多倍精度データの分割を説明する図である。
【図５】  図１のＡＳＵＭ／ＡＤＥＤ演算回路６７における２つの選択を模式的に説明する図である。
【図６】  図１のＡＳＵＭ／ＡＤＥＤ演算回路６７におけるデータの操作を模式的に説明する図である。
【図７】  転送制御部３０１とＣ素子２０１の信号の入出力関係を示す図である。
【図８】  （Ａ）〜（Ｊ）は、図７における信号のタイミングチャートである。
【図９】  多倍精度データの演算「Ｕ→Ｖ×Ｘ」を表現する式を示す図である。
【図１０】  図９の式に対応の処理フローチャートである。
【図１１】  従来およびこの発明の実施の形態に適用されるデータ駆動型情報処理システムのブロック構成図である。
【図１２】  従来のデータ駆動型処理装置の構成図である。
【図１３】  （Ａ）と（Ｂ）は従来およびこの発明の実施の形態に適用されるデータパケットのフィールド構成図である。
【図１４】  ノイマン型計算機においてＸ＾ＹｍｏｄＺの演算を実行するための処理フローチャートである。
【符号の説明】
１，１０  データ駆動型処理装置、１４０  演算部、２０１，２０２  Ｃ素子、２０３，２０４  データラッチ回路、２０５  第１オペランドレジスタ群、２０６  ＲＥＧ＿ＲＬＴ、２０７，２０８  ＭＵＸ回路、２０９  乗算器、２１０シフト演算器、２１１  加算器／減算器、３０１  転送制御部、３０２  ＮＵＭカウンタ、３０３  遅延素子、ＰＡ１（ＩＮ），ＰＡ１（ＯＵＴ）  データパケット。
【図１】
0003912972.tif 000002
【図２】
0003912972.tif 000003
【図３】
0003912972.tif 000004
【図４】
0003912972.tif 000005
【図５】
0003912972.tif 000006
【図６】
0003912972.tif 000007
【図７】
0003912972.tif 000008
【図８】
0003912972.tif 000009
【図９】
0003912972.tif 000010
【図１０】
0003912972.tif 000011
【図１１】
0003912972.tif 000012
【図１２】
0003912972.tif 000013
【図１３】
0003912972.tif 000014
【図１４】
0003912972.tif 000015