(57)【特許請求の範囲】
【請求項１】
行先フィールドと、データフィールドと、命令フィールドとを少なくとも含む通常パケット形式で外部とのデータの受渡しを行なうデータ処理装置であって、
外部からパケットを受け、パケットを、演算結果の累積値を格納するための所定のフィールドを追加した形式の拡張パケット形式に変換して、上記データ処理装置内部において循環させるための内部経路手段と、
前記内部経路手段内に配置され、命令の実行に必要な拡張パケットの待合せを行なって、命令の実行に必要なデータをすべて含む拡張パケットを前記内部経路手段上に出力する待合せ制御手段と、
前記内部経路手段内に配置され、前記待合せ制御手段の出力する拡張パケットのデータフィールド内のデータと前記所定のフィールド内のデータとに対し、命令フィールドの内容により指定される演算を行なって、データフィールドおよび前記所定のフィールドの内容を更新して、結果の拡張パケットを前記内部経路手段上に出力するための演算手段と、
前記内部経路手段内に配置され、予めデータフロープログラムを格納しており、前記演算手段の出力する拡張パケットを用いて、次に実行すべき命令に関する情報を含んだ拡張パケットを前記内部経路手段上に出力するプログラム記憶手段と、
前記内部経路手段内に配置され、前記プログラム記憶手段の出力する拡張パケットを、その行先フィールドの内容に従って前記内部経路手段と外部とに分岐させるとともに、外部に出力されるパケットを、前記拡張パケット形式から前記通常パケット形式に変換するための分岐手段とを含む、データ処理装置。
【請求項２】
前記演算手段は、
与えられる拡張パケットのデータフィールドの内容に対して、命令フィールドの内容により指定される処理を行なう算術演算回路と、
与えられる拡張パケットの前記所定のフィールドの内容に前記算術演算回路の出力を加算する加算回路と、
前記加算回路の出力と、与えられる拡張パケットの命令フィールドおよび前記所定のフィールドの内容とから、拡張パケットを組立て出力するためのパケット組立手段とを含む、請求項１記載のデータ処理装置。
【請求項３】
前記所定のフィールドのビット精度が、通常パケット形式のデータフィールドのビット精度よりも高く選ばれている、請求項１または２記載のデータ処理装置。
【請求項４】
前記パケット組立手段は、
前記加算回路の出力を受け、与えられる拡張パケットの命令フィールドの内容に応答して、前記加算回路の出力を所定ビットシフトするシフト手段と、
前記シフト手段の出力と、与えられる拡張パケットの前記所定のフィールドの内容とを受け、与えられる拡張パケットの命令フィールドの内容に応答して、前記シフト手段の出力または前記与えられる拡張パケットの前記所定のフィールドの内容を選択的に出力するための第１の選択手段と、
前記シフト手段の出力と前記加算回路の出力とを受け、与えられる拡張パケットの命令フィールドの内容に応答して、前記シフト手段の出力または前記加算回路の出力を選択的に出力するための第２の選択手段とを含む、請求項２に記載のデータ処理装置。
【請求項５】
前記内部経路手段は、外部から受けたパケットを前記拡張パケット形式に変換する際に、前記所定のフィールドに、所定の方法により定められる初期値を設定する機能を有する、請求項１から４のいずれかに記載のデータ処理装置。
【請求項６】
前記内部経路手段は、外部から受けたパケットを前記拡張パケット形式に変換する際に、前記所定のフィールドに、固定された初期値を設定する機能を有する、請求項５に記載のデータ処理装置。
【請求項７】
前記内部経路手段は、外部から受けたパケットを前記拡張パケット形式に変換する際に、前記所定のフィールドに、受けたパケットの内容により定まる初期値を設定する機能を有する、請求項５に記載のデータ処理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明はデータ処理装置に関し、特に、累算処理のように、３以上のデータパケットにわたって演算を行なうことができるデータ処理装置に関する。
【０００２】
【従来の技術】
パケット形式でデータの受渡しを行なうデータ処理装置において、３以上のデータパケットのデータに対する処理を実行する場合がある。たとえば、同一世代内で、入力データのデータを累積するような場合である。
【０００３】
従来のデータ処理装置では、そうした累算を行なう場合、装置内の特定の箇所に、保持したい累積値の数だけのデータラッチなどを準備することにより累算値を保持する機能を実現していた。そうした従来技術が特開平５−２３３８５３号公報に開示されている。
【０００４】
図１５は、特開平５−２３３８５３号公報に開示されたデータ処理装置のうちの、乗算部１２０の概略構成を示す。図１５を参照して、乗算部１２０は、デコーダ１４０と、データラッチ回路１３２、１３４、１３６および１３８と、データセレクタ１４４と、加算処理を行なうための加算器１４２と、データセレクタ１４８と、乗算処理を行なうための乗算器１４６と、同期制御部部１３０と、前世代の入力に対する履歴値を保持するための、データラッチ回路１５０およびゲート回路Ｇ６からなるアキュームレータ部とを含む。
【０００５】
乗算部１２０の動作は、転送制御回路１２４により制御される。転送制御回路１２４は、転送制御素子Ｃ１〜Ｃ４を含む。転送制御素子は、前後の転送制御素子との間で交信される受信要求信号および送信許可信号に従って順次データラッチを制御してデータを転送していく機能を有している。
【０００６】
図１５に示される従来のデータ処理装置の乗算部１２０は、累積加算動作を行なう場合には次のように動作する。乗算部１２０には、ｎビットの乗算係数と、ｎビットのデータとが入力データとして与えられる。デコーダ１４０には、ｍビットの命令コードが与えられる。デコーダ１４０は、命令コードをデコードし、所定の累積加算処理命令のときのみ１となる信号ＬＯＯＰを生成し、データラッチ回路１３２に与える。
【０００７】
データラッチ回路１３２は、入力されるデータと係数の２つのｎビットデータと、信号ＬＯＯＰとを、転送制御素子Ｃ１の受信要求出力の立上がりタイミングでラッチする。これにより、データラッチ回路１３４への入力が、データラッチ回路１３２にラッチされたデータとなる。加算器１４２には、データラッチ回路１３２にラッチされたデータ（左データ）と、データラッチ回路１５０に保持されている１世代前の演算結果とが入力されている。加算器１４２は、この２つの値を加算してデータラッチ回路１３０に与える。
【０００８】
データラッチ回路１３４は、入力を、転送制御素子Ｃ２からの受信要求出力の立上がりによって規定されるタイミングでラッチする。これによりデータラッチ回路１３６に与えられるデータおよびデータセレクタ１４４に与えられるデータが、新たにデータラッチ回路１３４にラッチされた値となる。
【０００９】
データセレクタ１４４は、信号ＬＯＯＰが１のときにはデータラッチ回路１３４から端子ｂに入力される加算器１４２の加算結果を、０の場合には端子ａにデータラッチ回路１３２、１３４を介して与えられる入力データをそれぞれ選択し、データラッチ回路１３６に与える。
【００１０】
データラッチ回路１３６は、転送制御素子Ｃ３の受信要求出力のパルスの立上がりによって規定されるタイミングで入力データをラッチする。したがってデータラッチ回路１３８への入力および乗算器１４６への入力がともに新たにこのデータラッチ回路１３６によってラッチされた値となる。
【００１１】
乗算器１４６の入力の一方にｎビットの係数（右データ）が入力される。他方には、信号ＬＯＯＰが１である場合には加算器１４２の加算結果が、０である場合にはデータ（左データ）がそれぞれ入力される。乗算器１４６はしたがって、信号ＬＯＯＰが１のときには係数と加算器１４２の加算結果とを乗算し、データラッチ回路１３８に与える。乗算器１４６は信号ＬＯＯＰが０のときには右データと左データとを乗算し、結果をデータラッチ回路１３８に与える。
【００１２】
データラッチ回路１３８は、転送制御素子Ｃ４の受信要求出力によって規定されるタイミングでデータをラッチし、ラッチしたデータをデータセレクタ１４８に出力する。
【００１３】
データセレクタ１４８に入力されるデータは以下のようになる。信号ＬＯＯＰが０の場合、データセレクタ１４８の一方の入力ｃには、データ（左データ）ｎビットがそのまま入力される。他方の入力ｄには、乗算器１４６の乗算結果、すなわち右データと左データとの乗算結果が入力される。データセレクタ１４８は信号ＬＯＯＰが０である場合には入力ｄの値を選択して２ｎビットデータとして出力する。この出力は、後続するシフタ（図示せず）により必要なシフト処理がされてｎビットとされた上、タグが書替えられて環状のパイプラインに出力される。
【００１４】
信号ＬＯＯＰが１の場合、データセレクタ１４８の一方の入力ｃには、加算器１４２の加算結果が入力される。すなわち、入力ｃには、入力されるｎビットのデータとデータラッチ回路１５０にラッチされていた１世代前の乗算結果とを加算した値が入力される。この値は乗算器１４６の一方の入力にも与えられる。データセレクタ１４８の他方の入力端子ｄには、乗算器１４６による乗算結果が入力される。すなわち入力ｄには、係数と、加算器１４２の加算結果との乗算結果が入力される。しかしこの場合データセレクタ１４８は、信号ＬＯＯＰの値が１であることに応答して、入力ｃからの入力を選択してｎビットのデータとして出力する。すなわちデータセレクタ１４８からは、乗算部１２０に入力されたｎビットのデータと、１世代前の帰還ループの演算結果とを加算した値が出力される。
【００１５】
同期制御部１３０は以下のように動作する。命令コードとして累積加算処理命令が入力された場合、デコーダ１４０は信号ＬＯＯＰとして１を出力する。ゲートＧ５が、パルス信号をゲートＧ２にクロック信号として与え、このパルスに応答してゲートＧ２のフリップフロップがセットされ、そのＱ出力が１となる。
【００１６】
ゲートＧ３の出力が、ゲートＧ２の出力が１となったことに応答して０となる。その結果Ｇ４は、転送制御素子Ｃ２から与えられる送信許可信号の値にかかわらず、転送制御素子Ｃ１の送信許可入力に対して０を与える。したがって転送制御素子Ｃ１への送信許可入力は送信禁止状態となる。すなわち、デコーダ１４０に与えられる信号が累積加算処理命令である場合には、データラッチ回路１３２のラッチは、転送制御素子Ｃ１への送信許可入力が１となるまで待機させられる。
【００１７】
入力される命令が累積加算処理命令以外の場合には、デコーダ１４０の出力は０となる。ゲートＧ３の出力は１となり、ゲートＧ４は転送制御素子Ｃ２の出力する送信許可信号をそのまま転送制御素子Ｃ１に与える。したがってこの場合には、乗算部１２０に入力されるデータの、データラッチ回路１３２へのラッチは待機させられない。
【００１８】
ループ命令の待機命令は次のようにして解除される。ゲートＧ６は、転送制御素子Ｃの出力する受信要求出力と、信号ＬＯＯＰとから、データラッチ回路１５０のクロック信号を生成する。ゲートＧ６は、信号ＬＯＯＰが０の場合、常に１を出力する。そのためデータラッチ回路１５０は乗算器１４６の出力をラッチすることはない。信号ＬＯＯＰが１の場合、ゲートＧ６は、転送制御素子Ｃ４の出力する受信要求信号に応答してクロック信号を生成し、データラッチ回路１５０に与える。このクロック信号の生成タイミングは、データラッチ回路１３８のデータラッチのタイミングと同時である。データラッチ回路１５０は、ゲートＧ６の出力するクロック信号の立上がりによって規制されるタイミングで、乗算器１４６の出力をラッチする。ラッチされたデータは再び加算器１４２の入力の一方に与えられる。
【００１９】
ゲートＧ６からクロック信号が出力されると、ゲートＧ１を介してゲートＧ２がリセットされる。ゲートＧ２のＱ出力が再び０に戻る。これに応答してゲート回路Ｇ３の出力が１となり、ゲート回路Ｇ４は転送制御素子Ｃ２の送信許可信号を転送制御素子Ｃ１にそのまま与えるようになる。その結果次の命令コードに応答して、データラッチ回路１３２によるデータのラッチが可能となり、次の命令の実行が開始される。
【００２０】
特開平５−２３３８５３号公報に開示されたデータ処理装置では、複数の世代間で共通の累積値を参照することになる。
【００２１】
なお、本願明細書において「世代」または「世代番号」は、ストリーム状データの処理を行なうデータ駆動型プロセッサなどにおいて、処理すべきデータの組を識別するための概念を言う。この場合ストリーム状データの処理とは、次々にデータを受取って同時に複数組のデータを並列処理する場合を言う。具体的には、入力データのある組に対しては等しい世代番号を与え、それによってデータの組相互を識別している。たとえば、入力データの入力順に世代番号を０、１、２…などと与える場合がある。
【００２２】
「世代内処理」とは、同時に入力された値の組に対して、プログラムの進行に伴って他のデータの組とは独立に処理を行なうことを言う。
【００２３】
「ノード」とは、プログラム中の処理を指定するための概念を言う。データフローグラフ中では、こうした処理は接点（ノード）として表現されることから、このように呼ばれる。それぞれの接点には固有の識別子が与えられる。
【００２４】
【発明が解決しようとする課題】
特開平５−２３３８５３号公報に開示された装置を用いて累算回路を実現した場合には、複数の世代間で共通の累積値を参照することになる。このような従来の演算装置を用いたデータ処理装置で同一世代内の累算を行なおうとする場合には、たとえば、ある世代におけるデータラッチの参照または更新が終了したことをトリガとして次の世代の参照または更新を許可するようなプログラム上の工夫か必要であったり、ハードウェアによるデータラッチのアクセス制御を行なうことが必要であったりした。こうした処理は、実行されるべき演算に対するオーバーヘッドとなり、従来の装置を用いた場合には高速の累積処理演算を行なうことができなかった。
【００２５】
また、個々の世代での累算処理を独立に行なうために、多数のデータラッチを搭載することも考えられる。しかしその場合には、同時に処理が行なわれる世代の数だけデータラッチが必要となり、これら複数個のデータラッチを制御するための制御機構も必要となる。そのため高速処理を実現しようとすれば、回路規模を大幅に増大する必要があった。さらに、累積演算の場合には、複数個の数値を１つのデータラッチに加算する処理が行なわれるために、通常の演算結果と比較してオーバーフローが生じやすいという問題点があった。
【００２６】
また、演算装置を様々なアプリケーションに適用する場合、アプリケーションごとに必要となるデータラッチの数が異なってくるため、データラッチの数を予め決めることができないという問題点がある。すなわちアプリケーションごとに異なる演算装置を用意する必要があり、カスタム対応となるために装置のコストが上昇するという問題点がある。
【００２７】
それゆえに請求項１に記載の発明の目的は、ハードウェア費用の増大を抑えつつ、高速で、同一世代内の３個以上のパケット間での演算を、世代ごとに独立して行なうことができるデータ処理装置を提供することである。
【００２８】
請求項２に記載の発明の目的は、ハードウェア費用の増大を抑えつつ、高速で、同一世代内での３個以上のパケットの間での累積演算を各世代で独立に行なうことができるデータ処理装置を提供することである。
【００２９】
請求項３に記載の発明の目的は、ハードウェア費用の増大を抑えつつ、高速に、同一世代内での３個以上のパケット間での累積演算を高い精度で、各世代で独立に行なうことができるデータ処理装置を提供することである。
【００３０】
請求項４に記載の発明の目的は、ハードウェア費用の増大を抑えつつ、高速に、同一世代内での３個以上のパケットの間での累積演算を高い精度で、各世代で独立に行なうことができ、かつ適当な形式に変換して外部に出力できるデータ処理装置を提供することである。
【００３１】
請求項５に記載の発明の目的は、ハードウェア費用の増大を抑えつつ、高速に、同一世代内での３個以上のパケット間での累積演算等の演算を高い精度で各世代で独立に行なうことができ、かつその制御も容易なデータ処理装置を提供することである。
【００３２】
請求項６に記載の発明の目的は、ハードウェア費用の増大を抑えつつ、高速に、同一世代内での３個以上のパケットの間での累積演算を高い精度で、かつ各世代で独立に行なうことができ、かつその制御も簡単なデータ処理装置を提供することである。
【００３３】
請求項７に記載の発明の目的は、ハードウェア費用の増大を抑えつつ、高速に、同一世代内での３個以上のパケットの間の累積演算等の演算を高い精度で各世代で独立に、かつ簡単な制御で行なうことができ、外部との間で適切なデータの入出力を行なうことが可能なデータ処理装置を提供することである。
【００３４】
【課題を解決するための手段】
請求項１に記載のデータ処理装置は、行先フィールドと、データフィールドと、命令フィールドとを少なくとも含む通常パケット形式で外部とのデータの受渡しを行なうデータ処理装置であって、外部からパケットを受け、パケットを、演算結果の累積値を格納するための所定のフィールドを追加した形式の拡張パケットに変換して、データ処理装置内部において循環させるための内部経路手段と、内部経路手段内に配置され、命令の実行に必要な拡張パケットの待合せを行なって、命令の実行に必要なデータをすべて含む拡張パケットを内部経路手段上に出力する待合せ制御手段と、内部経路手段内に配置され、待合せ制御手段の出力する拡張パケットのデータフィールド内のデータと所定のフィールド内のデータとに対して、命令フィールドの内容により指定される演算を行なって、データフィールドおよび所定のフィールドの内容を更新して、結果の拡張パケットを内部経路手段上に出力するための演算手段と、内部経路手段内に配置され、予めデータフロープログラムを格納しており、演算手段の出力する拡張パケットを用いて、次に実行すべき命令に関する情報を含んだ拡張パケットを内部経路手段上に出力するプログラム記憶手段と、内部経路手段内に配置され、プログラム記憶手段の出力する拡張パケットを、その行先フィールドの内容に従って内部経路手段と外部とに分岐させるとともに、外部に出力されるパケットを、拡張パケット形式から通常パケット形式に変換するための分岐手段とを含む。
【００３５】
請求項２に記載のデータ処理装置は、請求項１の構成に加え、演算手段は、与えられる拡張パケットのデータフィールドの内容に対して、命令フィールドの内容により指定される処理を行なう算術演算回路と、与えられる拡張パケットの所定のフィールドの内容に算術演算回路の出力を加算する加算回路と、加算回路の出力と、与えられる拡張パケットの命令フィールドおよび所定のフィールドの内容とから、拡張パケットを組立て出力するためのパケット組立手段とを含む。
【００３６】
請求項３に記載のデータ処理装置は、請求項１または２に記載の構成に加えて、所定のフィールドのビット精度が、通常パケット形式のデータフィールドのビット精度よりも高く選ばれている。
【００３７】
請求項４に記載のデータ処理装置は、請求項２に記載の構成に加え、パケット組立手段は、加算回路からの出力を受け、与えられる拡張パケットの命令フィールドの内容に応答して、加算回路の出力を所定ビットシフトするシフト手段と、シフト手段の出力と、与えられる拡張パケットの所定のフィールドの内容とを受け、与えられる拡張パケットの命令フィールドの内容に応答して、シフト手段の出力または与えられる拡張パケットの所定のフィールドの内容を選択的に出力するための第１の選択手段と、シフト手段の出力と加算回路の出力とを受け、与えられる拡張パケットの命令フィールドの内容に応答して、シフト手段の出力または加算回路の出力を選択的に出力するための第２の選択手段とを含む。
【００３８】
請求項５に記載のデータ処理装置は、請求項１から４のいずれかの構成に加えて、内部経路手段は、外部から受けたパケットを拡張パケット形式に変換する際に、所定のフィールドに、所定の方法により定められる初期値を設定する機能を有する。
【００３９】
請求項６に記載のデータ処理装置は、請求項５に記載のデータ処理装置の構成に加え、内部経路手段は、外部から受けたパケットを拡張パケット形式に変換する際に、所定のフィールドに、固定された初期値を設定する機能を有する。
【００４０】
請求項７に記載のデータ処理装置は、請求項５に記載のデータ処理装置の構成に加え、内部経路手段は、外部から受けたパケットを拡張パケット形式に変換する際に、所定のフィールドに、受けたパケットの内容により定まる初期値を設定する機能を有する。
【００４１】
【作用】
請求項１に記載のデータ処理装置では、内部経路手段が外部からパケットを受け、パケットの形式を、演算結果の累積値を格納するための所定のフィールドを追加した形式の拡張パケット形式に変換して、データ処理装置内部において循環させる。待合せ制御手段は、命令の実行に必要な拡張パケットの待合せを行なって、命令の実行に必要なデータをすべて含む拡張パケットを内部経路手段上に出力する。演算手段は、待合せ制御手段の出力する拡張パケットのデータフィールド内のデータと所定のフィールド内のデータとに基づき、命令フィールドの内容により指定される処理を行なって、データフィールドおよび所定のフィールドの内容を更新して、結果の拡張パケットを内部経路手段上に出力する。プログラム記憶手段は、演算手段の出力する拡張パケットを用いて、次に実行すべき命令に関する情報を含んだ拡張パケットを内部経路手段上に出力する。分岐手段は、プログラム記憶手段の出力する拡張パケットを、その行先フィールドの内容に従って内部経路手段と外部とに分岐させる。分岐手段はまた、外部に出力されるパケットを、拡張パケット形式から通常パケット形式に変換する。
【００４２】
請求項２に記載のデータ処理装置においては、請求項１の作用に加えて、算術演算回路が、拡張パケットのデータフィールドの内容に対して、命令フィールドの内容により指定される処理を行ない、加算回路が、拡張パケットの所定のフィールドの内容に算術演算回路の出力を加算する。パケット組立手段が、加算回路の出力と、与えられる拡張パケットの命令フィールドおよび所定のフィールドの内容とから、拡張パケットを組立て出力する。
【００４３】
請求項３に記載のデータ処理装置においては、請求項１または２の作用に加えて、通常パケット形式のデータフィールドのビット精度よりも高い精度のデータを所定のフィールドに格納できる。
【００４４】
請求項４に記載のデータ処理装置では、請求項２の作用に加え、シフト手段が、命令フィールドの内容に応答して、加算回路の出力を所定ビットシフトする。第１の選択手段は、シフト手段の出力と、拡張パケットの所定のフィールドの内容とを受け、拡張パケットの命令フィールドの内容に応答して、シフト手段の出力または拡張パケットの所定のフィールドの内容を選択的に出力する。第２の選択手段は、拡張パケットの命令フィールドの内容に応答して、シフト手段の出力または加算回路の出力を選択的に出力する。
【００４５】
請求項５に記載のデータ処理装置においては、請求項１から４のいずれかの作用に加え、内部経路手段が、パケットを拡張パケット形式に変換する際に、所定のフィールドに所定の方法により定められる初期値を設定する。
【００４６】
請求項６に記載のデータ処理装置においては、請求項５の作用に加えて内部経路手段は、パケットを拡張パケット形式に変換する際に、所定のフィールドに、固定された初期値を設定する。
【００４７】
請求項７に記載のデータ処理装置においては、請求項５の作用に加え、内部経路手段は、パケットを拡張パケット形式に変換する際に、所定のフィールドに、受けたパケットの内容により定まる初期値を設定する。
【００４８】
【実施例】
図１に、パケット形式で外部とのデータの受渡しを行なうデータ処理装置の一例であるデータ駆動型プロセッサ１００の構成を模式的に示す。以下本発明を、データ駆動型プロセッサに適用した場合を例にとって説明する。なお以下に述べる実施例は、あくまでも一例であって、データ駆動型プロセッサ以外のデータ処理装置に対して本願発明を適用することが可能である。
【００４９】
データ駆動型プロセッサ１００は、その内部においてデータパケットを循環させるための環状の経路１１６と、環状の経路１１６内に設けられ、経路１１２を介して外部から与えられるデータパケットを、環状の経路１１６内に合流させるための合流部１０２と、２入力演算を実行するための組となる２つのデータの待合せを行ない、パケット１対から、演算に必要なデータかすべて揃ったパケットを生成して出力するための待合せ制御部１０４と、待合せ制御部１０４から与えられるパケットに対して、累積演算を含む算術的・論理的演算処理を行なって結果パケットを出力するための演算部１０６と、演算部１０６の出力する結果を用いて次に実行すべき命令に関する情報をパケットに加え、環状の経路１１６上に出力するためのプログラム記憶１０８と、環状の経路１１６内に設けられ、プログラム記憶１０８から出力されるパケットを、その行先フィールドの内容に従って外部への経路１１４と、環状の経路１１６とに分岐させるための分岐部１１０とを含む。待合せ制御部１０４はまた、１入力命令については待合せを行なわず、直ちにパケット出力を行なう。
【００５０】
この処理系内を何周か周回することにより、パケットに対する所望の処理が完了される。処理が完了したパケットに対しては、プログラム記憶１０８において次の命令に関する情報を加える代わりに、処理系の外部に出力することを示す命令が加えられ、分岐部１１０はその命令が外部行命令であることを検出してパケットを経路１１４上に出力する。
【００５１】
従来のデータ処理装置では、待合せ制御部１０４から出力されるデータパケットは図１６（Ｂ）に示されるパケット１６２の形式であり、他の部分におけるパケット形式は図１６（Ａ）に示されるようなものであった。ここで従来のデータパケット形式について説明しておくと、図１６（Ａ）に示されるパケット１６０は、命令コードのフィールド５２と、世代番号フィールド５４と、ノード番号フィールド５６と、データフィールド５８とを含む。図１６（Ｂ）を参照して、待合せ制御部１０４から出力されるパケット１６２は、命令コードフィールド５２と、世代番号フィールド５４と、ノード番号フィールド５６と、左データフィールド６２と、右データフィールド６４とを含む。
【００５２】
これに対して図１に示す本願発明に係る実施例のデータ駆動型プロセッサ１００では、図３に示す形式のパケットが用いられる。図３（Ｂ）を参照して、待合せ制御部１０４から出力されるパケット４２は、命令コードフィールド５２と、世代番号フィールド５４と、ノード番号フィールド５６と、左データフィールド６２と、右データフィールド６４とに加え、累積値（以下「ＡＣＣ」と呼ぶ）保持フィールド６６を含む。同様に図３（Ａ）を参照して、図１に示すデータ駆動型プロセッサ１００の、他の部分で使用されるパケット４０は、命令コードフィールド５２と、世代番号フィールド５４と、ノード番号フィールド５６と、データフィールド５８とに加え、ＡＣＣフィールド６０を含む。
【００５３】
データフィールド５８と、左データフィールド６２と、右データフィールド６４とはｎビットであり、ＡＣＣフィールドはｍ（ｍ＞ｎ）ビットである。たとえばｎ＝１２、ｍ＝２４である。このようにＡＣＣフィールドのビット数を通常のデータフィールドのビット数より多くしたのは、次のような理由である。たとえばｎ＝ｍ＝１２とした場合に、８ビット精度のデータを累積加算する場合を考える。この場合、１６個の値を加算した時点で、加算結果が１２ビットのデータフィールドをオーバーフローする危険性がある。本発明ではｎより大きな値のｍビット幅を有するＡＣＣフィールドを設けることにより、オーバーフローによる不正確な演算結果の出力を抑制するようにしている。
【００５４】
図２に、演算部１０６の機能構成を模式的に示した。図２を参照して演算部１０６は、パイプラインラッチ２２、２６および３６と、算術演算回路２４と、加算器２８と、シフタ３０と、セレクタ３２および３４とを含む。
【００５５】
パイプラインラッチ２２は、パケットの右データと、左データと、命令コードと、ＡＣＣとを一旦ラッチするためのものである。
【００５６】
算術演算回路２０は、パイプラインラッチ２２から与えられる右データおよび左データに対して、パイプラインラッチ２２から与えられる命令コードに対応した処理を行なって結果をパイプラインラッチ２６に与えるためのものである。
【００５７】
パイプラインラッチ２６は、算術演算回路２４の出力と、命令コードと、ＡＣＣとを一旦ラッチし、加算器２８とセレクタ３２および３４とに与えるためのものである。
【００５８】
加算器２８は、パイプラインラッチ２６を介して与えられる算術演算回路２４の出力と、パイプラインラッチ２６を介して与えられるＡＣＣとを加算してシフタ３０およびセレクタ３４に与えるためのものである。
【００５９】
シフタ３０は、加算器２８の出力を、パイプラインラッチ２６を介して与えられる命令コードに応じて所定ビットシフトしてセレクタ３２および３４に与えるためのものである。
【００６０】
セレクタ３２は、シフタ３０の出力とＡＣＣとのいずれか一方を命令コードに応じて選択し、パイプラインラッチ３６を介して、出力されるパケットのデータとして出力するためのものである。
【００６１】
セレクタ３４は、命令コードによって制御され、シフタ３０の出力または加算器２８の出力を、パイプラインラッチ３６を介して、出力データパケットのＡＣＣフィールドの値として出力するためのものである。
【００６２】
図２を参照して、パケット内の右データと左データとが算術演算回路２４で処理され、その結果が加算器２８により累算値（ＡＣＣ）に加えられる。加算結果はシフタ３０によってオフセットをかけられてセレクタ３２および３４に与えられる。セレクタ３２および３４がいずれの入力を選択するかに応じて、ＡＣＣフィールドの値を更新したり、出力データフィールドに結果を出力したり、データフィールドにはシフタ３０の出力を格納させ、ＡＣＣフィールドには加算器２８の出力を格納させたりすることができる。算術演算の内容とシフト処理の詳細については後述する。
【００６３】
再び図１を参照して、上述したような累算処理が、図１に示す処理系（データ駆動型プロセッサ１００）内部で閉じたものであるならば、ハードウェアを節約するという観点から言えば、このデータ駆動型プロセッサ１００と外部との間で入出力されるパケットには、図３に示されるようなＡＣＣフィールドを設けることは不要である。したがって経路１１２および１１４上のパケットとしては図１６に示した従来形式のパケットを利用することができる。こうすることにより、システム全体で、パケットを伝送するための経路のビット幅が少なくなり、ハードウェアを節約することができる。
【００６４】
このように外部との入出力には従来と同様のパケット形式を利用する場合、処理系内で累算処理を実行するためには、外部から処理系に入力された通常形式のパケットを、図３に示されるようなＡＣＣフィールドを有する拡張したパケット形式に変換する必要がある。この処理は、たとえば図１に示す合流部１０２で行なってもよいし、合流部１０２の前に専用の回路を設けてもよい。
【００６５】
このように通常パケット形式から拡張パケット形式にパケット形式を変換する場合、ＡＣＣフィールドには適切な初期値を与えることが望ましい。たとえば一般的には「０」という固定したデータを用いてＡＣＣフィールドを初期化することが考えられるが、「０」に限らず他の所望な初期値を与えるようにしてもよい。本実施例のデータ駆動型プロセッサでは、以下に示す累積演算の他にも、ＡＣＣフィールドの内容を初期化する演算も提供する。たとえば図１６（Ａ）に示すフォーマットで入力されたパケットの命令コード５２が所定のＡＣＣ初期化命令である場合には、データフィールド５８に格納されているｎビットデータをｍビットに符号拡張したうえで、図３（Ａ）に示すパケット４０のＡＣＣフィールド６０に格納して、パケット４０をデータ駆動型プロセッサ１００内部に供給する。なお符号拡張とは、この場合ｎビットデータの最上位ビットの値で、ｍビットのＭＳＢ（最上位ビット）側のｍ−ｎビットを埋めてｍビットデータとする操作を言う。
【００６６】
また、ＡＣＣフィールドの内容を参照する場合、図１に示す経路１１４上に、図１６（Ａ）に示すパケット１６０の形式で外部にＡＣＣフィールドの内容を出力する必要がある。この場合、ＡＣＣフィールドはｍビット幅であり、パケット１６０のデータフィールド５８はｎビット幅であるため、ＡＣＣフィールドの内容をデータフィールド５８に収めることはそのままでは不可能である。そこで、ＡＣＣフィールドの内容をｎビットで表現できるように、ｐビットだけ右シフトしてオフセットさせることが考えられる。この場合のパケット４０と、出力されるパケット１６０とのフィールドの対応関係を図４に示す。あるいは、ＡＣＣフィールドの内容を、２つのパケット１６０のデータフィールド５８に分割して出力することが考えられる。この場合の１つの方法を図５に示す。図５に示す例では、ＡＣＣフィールド６０のｍビットデータのうち下位ｎビットを２段目のパケット１６０−２のデータフィールド５８に格納し、ＡＣＣフィールド６０の上位（ｍ−ｎ）ビットをｎビットに符号拡張したうえで、パケット１６０−１のデータフィールド５８に格納する。
【００６７】
ＡＣＣフィールドの内容を外部に出力するためのデータの変換方法としては、上述の他にも種々考えられる。そうした処理は、図２に示すシフタ３０およびセレクタ３２を用いて行なってもよいし、図１に示す分岐部１１０で行なってもよい。または分岐部１１０の後方側に専用の回路を設けてもよい。
【００６８】
累算処理としては、左データを単純にＡＣＣフィールドの内容に加算する処理以外に、入力されるデータに対して従来から行なわれている算術演算の結果をＡＣＣフィールドの内容に加算する処理などが考えられる。本実施例のデータ駆動型プロセッサでは、次のような累積演算を実現する命令体系を提供している。
【００６９】
入力される左データと右データとの間に次のような演算を行なうことが考えられる。
【００７０】
▲１▼  乗算
▲２▼  加算
▲３▼  減算
▲４▼  ２乗
右データと左データとの間に行なわれた結果に対して、さらに次の場合を考えることができる。
【００７１】
ｉ）  シフト処理を施す。
ｉｉ）  シフト処理を施さない。
【００７２】
上述のようなシフト処理（またはシフトしない処理）の結果とＡＣＣフィールドとの内容に対して次の処理が考えられる。
【００７３】
Ａ）  結果をＡＣＣに加える。
Ｂ）  結果でＡＣＣフィールドを上書きする。
【００７４】
このようにしてＡＣＣフィールドを更新したうえで、データの出力としては次のような方法が考えられる。
【００７５】
ａ）  ＡＣＣの更新結果を出力する。
ｂ）  ＡＣＣの更新結果をシフトして出力する。
【００７６】
ｃ）  ＡＣＣの更新前の内容を出力する。
ｄ）  ＡＣＣの更新前の内容をシフトして出力する。
【００７７】
ｅ）  ▲１▼〜▲４▼の演算結果を出力する。
ｆ）  ▲１▼〜▲４▼の演算結果をシフトして出力する。
【００７８】
本実施例では、左データと右データとの間の演算、結果に対するシフト処理、その結果を用いたＡＣＣの更新、および出力するデータおよびシフトの選択方法の各々を組合せたものをそれぞれ１命令として実現した命令体系を提供している。
【００７９】
続いて、本演算装置の具体的な動作を、図６に示すような画素７０、７２、７４、７６および７８に対する画像処理を例にして説明する。図６（Ａ）は、画像データのある画素７８を、周囲の４点の画素７０、７２、７４および７６の平均値として求める処理の画像イメージを示し、図６（Ｂ）は画素７８の値ｅの計算方法を、画素７０、７２、７４および７６の値をそれぞれａ、ｂ、ｃ、ｄとして式で表わしたものである。
【００８０】
図７は、上述した処理を示すデータフローグラフである。図７に示すデータフローグラフでは、それぞれの演算に対して、それぞれを区別するための識別子としてノード番号が与えられている。ノード８０は第１のノードであり、累算ｘが行なわれる。ノード８２は第２のノードであり、累算ｙが行なわれる。ノード８４は第３のノードであり、累算ｚが行なわれる。
【００８１】
一般的な画像データの特徴として、画面の左上から水平方向に走査して、順に下段の走査線に移りながら画像データが構成されている。そのため処理装置への画素データの到着順序はａ、ｂ、ｃ、ｄの順となる。図７のデータフローグラフは、データａ、ｂ、ｃ、ｄの到着順にデータを順次処理するアルゴリズムを実現している。
【００８２】
なお図７において累算ｘは上記した処理の組合せのうち▲２▼、ｉｉ、Ｂ、およびａの組合せを、累算ｙは▲２▼、ｉｉ、Ａ、およびａの組合せを、累算ｚは、▲２▼、ｉ、Ａ、およびａの組合せを、それぞれ示している。
【００８３】
図８は、図７に示すデータフローグラフに対応するデータフロープログラム９０が、プログラム記憶１０８に格納されている状態を模式的に示す。このデータフロープログラムは、ノードと、そのノードの処理の次にどのノードのどの命令を実行するか、等を関連づけるために必要な内容を含む。プログラム記憶１０８に到着したパケットのノード番号を「前ノード番号」としてプログラム記憶１０８内のメモリを参照して、対応する命令コードと次ノード番号とを読出し、パケット中の命令コードフィールドとノード番号フィールドとの内容を、このようにして読出された「命令コード」と「次ノード番号」に付替える。
【００８４】
図９は、図１および図２に示したデータ駆動型プロセッサにおけるプログラム実行に伴って、パケットの内容がどのように変化するかを示す。
【００８５】
図９（Ａ）〜（Ｄ）は、このプログラムに対する第０世代目の４つの入力パケットである。これらのパケットは、それぞれの入力データ（Ａ）〜（Ｄ）とともに、それぞれのデータが入力されるノードを指定するための情報（ノード番号および命令コード）と、これらパケットが同時に処理すべきデータの組に属することを示す同一の世代番号（＝０）を持っている。また、ＡＣＣフィールドは、データ駆動型プロセッサ１００への入力時点で０に初期化されている。
【００８６】
図１０に、図９（Ａ）および図９（Ｂ）に示される２つのパケットが図１に示す待合せ制御部１０４で対とされて出力された結果のパケットを示す。待合せ制御部１０４は、入力パケットのうち、命令コードおよび世代番号が同一で、ノード番号が同一な１対のデータパケットを、そのノードへの左右の入力データとして検出し、図１０に示すような左右のデータフィールドを持つパケットを生成して演算部１０６に与える。
図１１は、図７に示すノード８０において累算ｘの処理を施した結果、ノード８０から出力されるパケットを示す。図１１に示すように、この処理の場合には、ＡＣＣフィールドとデータフィールドとの双方に、演算結果の「ａ＋ｂ」が書込まれている。
【００８７】
図１２は、演算部１０６からプログラム記憶１０８に与えられた図１１に示すパケットに対して、上述したような次命令付替手順によってノード番号と命令コードとが付替えられたものを示す。このパケットは図７に示すノード８２に対する左入力パケットである。
【００８８】
図１３および図１４は、図１１と同様に、ノード番号８２および８４の出力パケットを示す。図１４に示されるパケットは、この後図８に「外部出力」として示されている、前ノード番号３に対応する命令コードが、命令フィールドに書込まれ、その結果分岐部１１０および経路１１４を介して外部に出力される。
【００８９】
以上のように上記した実施例のデータ駆動型プロセッサでは、複数の世代の各々について、その内部で複数個のパケットでの演算処理、たとえば累算処理を行なうことができる。しかもそれを実現するためのハードウェアは、たとえば各世代ごとの累算値を格納するための複数個のデータラッチを設ける場合と比較して簡単で済み、制御も容易である。またそうした処理を実現するためのソフトウェアも簡単なもので済む。したがって演算を実行するうえでのオーバーヘッドが少なく済み、処理を高速化することが可能である。また、累積値のビット幅を通常の演算のビット幅よりも大きくしてあるため、データ駆動型プロセッサ内部で行なわれる累積演算の結果にオーバーフローを生じて演算結果が大きく狂うという不都合が生ずる恐れが小さい。また異なるアプリケーションに対しても、同じハードウェアを使用して対処することができ、異なるアプリケーションに対してハードウェアを別々に構成するものと比較してコスト的に有利である。
【００９０】
【発明の効果】
以上のように請求項１に記載のデータ処理装置によれば、パケットを、演算結果の累積値を格納するための所定のフィールドを追加した形式の拡張パケットの形式に変換して内部で循環させて処理したうえで、通常パケット形式の結果のパケットを外部に出力する。同一世代に属する３個以上のパケットの間で、ある演算を行なうために途中結果を保持する必要がある演算について、その途中結果を所定のフィールドに格納して、その途中結果を用いてデータ処理装置内部で各世代ごとに独立して繰返して演算することができる。アプリケーションが異なっても、ハードウェアを変更する必要はない。演算同士の処理順序を制御するための特別な機構や、１世代ごとに独立した処理を行なうための特別な機構が不要であり、オーバーヘッドが減少する。そのため処理速度を向上させることができる。回路規模を小さくすることもでき、その制御も簡単である。その結果、ハードウェア費用の増大を抑えつつ、高速に、同一世代に属する３個以上のパケットの間での演算を、世代ごとに独立して行なうことができるデータ処理装置を提供できる。
【００９１】
請求項２に記載のデータ処理装置によれば、請求項１の効果に加えて、拡張パケットのデータフィールドの内容に対して、命令フィールドの内容により指定される処理を行なった結果と、その結果と拡張パケットの所定のフィールドの内容との和とから拡張パケットを組立てることができる。そのため、同一世代に属する３個以上のパケットのデータの累積値を、複雑な制御なく求めることができる。その結果、ハードウェア費用の増大を抑えつつ、高速に、同一世代の３個以上のパケットの間での累積演算を世代ごとに独立して行なうことができるデータ処理装置を提供できる。
【００９２】
請求項３に記載のデータ処理装置によれば、請求項１または２の効果に加えて、所定フィールドのビット精度は、通常のデータフィールドのそれよりも高いので、累積演算におけるオーバーフローを起こしにくい。その結果、ハードウェア費用の増大を抑えつつ、高速に、同一世代の３個以上のパケットの間での累積演算を各世代ごとに独立して、高い精度で行なうことができるデータ処理装置を提供できる。
【００９３】
請求項４に記載のデータ処理装置によれば、請求項２または３の効果に加え、加算回路の出力を所定ビットシフトし、またはシフトせず、パケットのデータフィールドまたは所定のフィールドに格納させることができる。データ処理装置内部での演算結果を、適切な形式に変換したうえで出力することができる。その結果、ハードウェア費用の増大を抑えつつ、高速に、同一世代の３個以上のパケット間での累積演算を世代ごとに独立して高い精度で行なうことができ、かつ結果を適切な形式に変換して出力できるデータ処理装置が得られる。
【００９４】
請求項５に記載のデータ処理装置によれば、請求項１から４のいずれかの効果に加え、パケットを拡張パケット形式に変換する際に、所定のフィールドに、所定の方法により定められる初期値を設定するので、様々な処理に対しても、データ処理装置内部での演算の制御を簡単にすることができる。その結果、ハードウェア費用の増大を抑えつつ、高速に、同一世代の３個以上のパケット間での累積演算等の演算を世代ごとに独立して高い精度で行なうことができ、かつその制御の容易なデータ処理装置を得ることができる。
【００９５】
請求項６に記載のデータ処理装置によれば、請求項５の効果に加え、所定のフィールドに、固定された初期値が設定される。たとえば累積演算などのように初期値が０と定まっている場合などに、複雑な制御なく、初期設定処理を行なうことができる。その結果、ハードウェア費用の増大を抑えつつ、高速に、同一世代の３個以上のパケット間の累積演算を世代ごとに独立して高い精度で行なうことができ、かつその制御の簡単なデータ処理装置を得ることができる。
【００９６】
請求項７に記載のデータ処理装置によれば、パケットを拡張パケット形式に変換する際に、所定のフィールドに、受けたパケットの内容により定まる初期値が設定されるので、たとえば低精度の外部データを、データ処理装置内部での高精度の演算のためのデータに変換して初期値として利用することができる。その結果、ハードウェア費用の増大を抑えつつ、高速に、同一世代の３個以上のパケット間での累積演算等の演算を世代ごとに独立して高い精度で、かつ簡単な制御で行なうことができ、外部との間で適切にデータの入出力を行なうことが可能なデータ処理装置を得ることができる。
【図面の簡単な説明】
【図１】本発明のデータ処理装置の一実施例のデータ駆動型プロセッサの概略ブロック図である。
【図２】演算部のブロック図である。
【図３】図１に示されるデータ駆動型プロセッサ内部で使用される拡張パケット形式を示す図である。
【図４】ＡＣＣを外部に出力する際のデータ変換方法を示す図である。
【図５】ＡＣＣの値を外部に出力する際の他のデータ変換方法を示す図である。
【図６】実施例のデータ駆動型プロセッサの動作を説明するための、画像処理を模式的に示す図である。
【図７】図６に示した画像処理のデータフローグラフを示す図である。
【図８】図７に示すデータフローグラフに対応するデータフロープログラムを模式的に示す図である。
【図９】図７に示されるデータフローグラフに対応して、データ駆動型プロセッサに与えられる第０世代のパケットを示す図である。
【図１０】図７に示される処理の途中で生成されるパケットを示す図である。
【図１１】図７に示される処理の途中で生成されるパケットを示す図である。
【図１２】図７に示される処理の途中で生成されるパケットを示す図である。
【図１３】図７に示される処理の途中で生成されるパケットを示す図である。
【図１４】図７に示される処理の途中で生成されるパケットを示す図である。
【図１５】従来のデータ処理装置の一例で用いられる乗算部のブロック図である。
【図１６】従来のデータ処理装置の一例であるデータ駆動型プロセッサにおいて使用されるパケットを示す図である。
【符号の説明】
２４  算術演算回路
２８  加算器
３０  シフタ
３２、３４  セレクタ
１００  データ駆動型プロセッサ
１０２  合流部
１０４  待合せ制御部
１０６  演算部
１０８  プログラム記憶
１１０  分岐部
１１６  環状の経路
【図１】
0003577134.tif 000002
【図２】
0003577134.tif 000003
【図３】
0003577134.tif 000004
【図４】
0003577134.tif 000005
【図５】
0003577134.tif 000006
【図６】
0003577134.tif 000007
【図７】
0003577134.tif 000008
【図８】
0003577134.tif 000009
【図９】
0003577134.tif 000010
【図１０】
0003577134.tif 000011
【図１１】
0003577134.tif 000012
【図１２】
0003577134.tif 000013
【図１３】
0003577134.tif 000014
【図１４】
0003577134.tif 000015
【図１５】
0003577134.tif 000016
【図１６】
0003577134.tif 000017