JPH0648499B2 - プロセッシングユニット - Google Patents
プロセッシングユニットInfo
- Publication number
- JPH0648499B2 JPH0648499B2 JP63010775A JP1077588A JPH0648499B2 JP H0648499 B2 JPH0648499 B2 JP H0648499B2 JP 63010775 A JP63010775 A JP 63010775A JP 1077588 A JP1077588 A JP 1077588A JP H0648499 B2 JPH0648499 B2 JP H0648499B2
- Authority
- JP
- Japan
- Prior art keywords
- token
- data
- unit
- processing
- result
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Multi Processors (AREA)
Description
【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、メモリ部,演算部をパイプライン状のバスで
結合し、データ駆動方式により演算順序をコントロール
するデータフロープロセッサのプロセッシングユニット
に関するものである。
結合し、データ駆動方式により演算順序をコントロール
するデータフロープロセッサのプロセッシングユニット
に関するものである。
〔従来の技術〕 従来、データフロープロセッサとしては特開昭56-16915
2 号公報に記載されている技術があり、それを製品化し
たものとして日本電気株式会社製のμPD7281がある。μ
PD7281は第7図に示されるような構成を持つ。このμPD
7281によれば、外部バスから装置に入力されるデータの
単位となるトークンは、データ値、入力後にリンクテー
ブル92を参照するための識別子、そのトークンが処理さ
れるべき装置を示すモジュール番号を持ち、トークン入
力部91は、外部バスを通るトークンのモジュール番号が
その装置の番号と一致する場合にそのトークンを内部に
入力し、そうでない場合トークン出力部97を通じてその
まま外部バスから出力する。入力されたトークンは、こ
の持つ識別子によりリンクテーブル92を参照し、そこで
ファンクションテーブル93を参照するためのファンクシ
ョンテーブルアドレスと次回にリンクテーブル92を参照
するための識別子を得た後にファンクションテーブル93
へ送られる。
2 号公報に記載されている技術があり、それを製品化し
たものとして日本電気株式会社製のμPD7281がある。μ
PD7281は第7図に示されるような構成を持つ。このμPD
7281によれば、外部バスから装置に入力されるデータの
単位となるトークンは、データ値、入力後にリンクテー
ブル92を参照するための識別子、そのトークンが処理さ
れるべき装置を示すモジュール番号を持ち、トークン入
力部91は、外部バスを通るトークンのモジュール番号が
その装置の番号と一致する場合にそのトークンを内部に
入力し、そうでない場合トークン出力部97を通じてその
まま外部バスから出力する。入力されたトークンは、こ
の持つ識別子によりリンクテーブル92を参照し、そこで
ファンクションテーブル93を参照するためのファンクシ
ョンテーブルアドレスと次回にリンクテーブル92を参照
するための識別子を得た後にファンクションテーブル93
へ送られる。
トークンはファンクションテーブル93のおいてそのファ
ンクションテーブルアドレスによる参照を行い、そこで
データメモリ94の管理情報の参照・更新を行うと同時
に、プロセッシングユニット96での処理内容を示す処理
コードとデータメモリ94のアクセスアドレスを得、デー
タメモリ94に送られ、そこで必要に応じて2項演算の相
手方のオペランドの待合わせ、あるいは定数演算のため
の定数の読出しを行う。キューメモリ95はプロセッシン
グユニット96が前のトークンを処理中でトークンを入力
できない時にトークンを一時保持するためのメモリであ
り、プロセッシングユニット96がビジーでない場合に
は、トークンはキューメモリ95からプロセッシングユニ
ット96に送られ、その処理コードに応じて、整数データ
の加減乗算、論理演算、シフト、比較、ビット反転、プ
ライオリティエンコーディング、分流、数値発生、コピ
ー、内部レジスタを利用した累積加算演算などのうち1
つの処理を受ける。なおトークンの持つ処理コードが出
力を示すものである場合には、トークンはキューメモリ
95からトークン出力部97へ送られ、入力トークンと同一
の形に変形された後に、外部バスへ出力される。プロセ
ッシングユニット96で処理を受けたトークンは、リンク
テーブル92に送られ、再びその識別子により参照を行
う。以下同様にして出力命令が実行されるまで内部のリ
ングバスを回り、そのデータ値に対して必要な処理を受
ける。
ンクションテーブルアドレスによる参照を行い、そこで
データメモリ94の管理情報の参照・更新を行うと同時
に、プロセッシングユニット96での処理内容を示す処理
コードとデータメモリ94のアクセスアドレスを得、デー
タメモリ94に送られ、そこで必要に応じて2項演算の相
手方のオペランドの待合わせ、あるいは定数演算のため
の定数の読出しを行う。キューメモリ95はプロセッシン
グユニット96が前のトークンを処理中でトークンを入力
できない時にトークンを一時保持するためのメモリであ
り、プロセッシングユニット96がビジーでない場合に
は、トークンはキューメモリ95からプロセッシングユニ
ット96に送られ、その処理コードに応じて、整数データ
の加減乗算、論理演算、シフト、比較、ビット反転、プ
ライオリティエンコーディング、分流、数値発生、コピ
ー、内部レジスタを利用した累積加算演算などのうち1
つの処理を受ける。なおトークンの持つ処理コードが出
力を示すものである場合には、トークンはキューメモリ
95からトークン出力部97へ送られ、入力トークンと同一
の形に変形された後に、外部バスへ出力される。プロセ
ッシングユニット96で処理を受けたトークンは、リンク
テーブル92に送られ、再びその識別子により参照を行
う。以下同様にして出力命令が実行されるまで内部のリ
ングバスを回り、そのデータ値に対して必要な処理を受
ける。
数値シュミレーションやパターン認識などの応用分野に
おいて用いられる数値計算では、データの精度を確保す
るために浮動小数点データを扱う必要があり、特に浮動
小数点データを要素とする行列とベクトルの乗算や行列
同士の乗算は、これらのアプリケーションにおいて頻繁
に行われる。
おいて用いられる数値計算では、データの精度を確保す
るために浮動小数点データを扱う必要があり、特に浮動
小数点データを要素とする行列とベクトルの乗算や行列
同士の乗算は、これらのアプリケーションにおいて頻繁
に行われる。
前述のデータフロープロセッサで、この様な乗算に現れ
る、外部メモリ上にある複数のデータに対しそれぞれあ
る係数を掛けそれらの積の和をとる、いわゆるコンボリ
ューション処理を行う場合を考える。従来のデータフロ
ープロセッサにおいては演算器が一つしかなく、トーク
ンが内部リングを1周してプロセッシングユニットに入
った時にそのトークンの持つ2つのデータの間の1つの
2項演算しかできないため、コンボリューションにおい
てはN個のデータ組の乗算を行うためにN回と、その結
果の加算を行うために(N−1)回トークンが内部リン
グを周回しプロセッシングユニットに流れ込む必要があ
り、さらにそのうちの加算は時間的に直列に行なわれな
ければならないため処理時間が長くなるという問題点が
ある。
る、外部メモリ上にある複数のデータに対しそれぞれあ
る係数を掛けそれらの積の和をとる、いわゆるコンボリ
ューション処理を行う場合を考える。従来のデータフロ
ープロセッサにおいては演算器が一つしかなく、トーク
ンが内部リングを1周してプロセッシングユニットに入
った時にそのトークンの持つ2つのデータの間の1つの
2項演算しかできないため、コンボリューションにおい
てはN個のデータ組の乗算を行うためにN回と、その結
果の加算を行うために(N−1)回トークンが内部リン
グを周回しプロセッシングユニットに流れ込む必要があ
り、さらにそのうちの加算は時間的に直列に行なわれな
ければならないため処理時間が長くなるという問題点が
ある。
μPD7281においては上の問題点のうち連続データの加算
を高速化するためにプロセッシングユニットにレジスタ
を設け累積加算を行うようになっているが、これでも一
度には乗算と加算の一方しかできないため乗算について
は高速化できない。従ってコンボリューションの高速化
のためには、係数と入力データとの乗算を行う乗算器
と、レジスタを用いてその積の累積加算を行う演算器と
が縦列に配置されなければならない。
を高速化するためにプロセッシングユニットにレジスタ
を設け累積加算を行うようになっているが、これでも一
度には乗算と加算の一方しかできないため乗算について
は高速化できない。従ってコンボリューションの高速化
のためには、係数と入力データとの乗算を行う乗算器
と、レジスタを用いてその積の累積加算を行う演算器と
が縦列に配置されなければならない。
一方、前述のデータフロープロセッサではサポートされ
ている算術演算処理が整数データに対する加減乗算に限
られているため、これら以外の浮動小数点表現のデータ
の演算を必要とする処理は実行できず、これを行おうと
する場合、ソフトウェアで実現しなければならず、処理
時間の増大を招いていた。
ている算術演算処理が整数データに対する加減乗算に限
られているため、これら以外の浮動小数点表現のデータ
の演算を必要とする処理は実行できず、これを行おうと
する場合、ソフトウェアで実現しなければならず、処理
時間の増大を招いていた。
これを解決するために、前記データフロープロセッサの
プロセッシングユニットに通常のプロセッサで用いられ
ている浮動小数点演算用ハードウェアを組み込んだプロ
セッサを提供することは可能である。しかしこの場合、
浮動小数点演算のためには他の固定小数点演算における
より長い処理時間が必要であるため、プロセッサ内部の
トークン転送をパイプラインクロックに同期して行うデ
ータフロープロセッサでは全体の動作パイプラインサイ
クルを長くせざるを得ず、全体の処理速度が低下すると
いう問題が生ずる。
プロセッシングユニットに通常のプロセッサで用いられ
ている浮動小数点演算用ハードウェアを組み込んだプロ
セッサを提供することは可能である。しかしこの場合、
浮動小数点演算のためには他の固定小数点演算における
より長い処理時間が必要であるため、プロセッサ内部の
トークン転送をパイプラインクロックに同期して行うデ
ータフロープロセッサでは全体の動作パイプラインサイ
クルを長くせざるを得ず、全体の処理速度が低下すると
いう問題が生ずる。
これに対し一般にはこのように浮動小数点演算部が複雑
な処理を必要とする場合、その内部を複数ステージに分
割し、各段をパイプライン的に動作させることにより全
体のクロック周期を短くするという手法が取られる。し
かしこの場合でも、例えばベクトル内の要素の累積加算
をとる際はその前の和をとる演算が終了しなければ次の
加算を開始できないというようにそれらの加算はパイプ
ライン化できないため、その分だけ処理時間がかかる。
な処理を必要とする場合、その内部を複数ステージに分
割し、各段をパイプライン的に動作させることにより全
体のクロック周期を短くするという手法が取られる。し
かしこの場合でも、例えばベクトル内の要素の累積加算
をとる際はその前の和をとる演算が終了しなければ次の
加算を開始できないというようにそれらの加算はパイプ
ライン化できないため、その分だけ処理時間がかかる。
例えばそれぞれ浮動小数点データを要素とするm×nの
行列A(要素a[i,j])と長さnのベクトル(要素
x[j]の乗算=Aを、浮動小数点乗算器とsステー
ジからなるパイプライン化された浮動小数点加算器を持
つデータフロープロセッサで行う場合を考える。
行列A(要素a[i,j])と長さnのベクトル(要素
x[j]の乗算=Aを、浮動小数点乗算器とsステー
ジからなるパイプライン化された浮動小数点加算器を持
つデータフロープロセッサで行う場合を考える。
を求める場合、連続して入力される2つのデータ列の乗
算を行った後、その結果の累積加算を行うためにはn個
の積の和を求めなければならない。そこでそのための
(n−1)回の加算のためには、1回の加算がsステッ
プかかり、かつ全ての加算は時間的に直列に行わざるを
得ないため、s×(n−1)ステップかかり、従って全
部で s×(n−1)×m ステップ かかることになる。
算を行った後、その結果の累積加算を行うためにはn個
の積の和を求めなければならない。そこでそのための
(n−1)回の加算のためには、1回の加算がsステッ
プかかり、かつ全ての加算は時間的に直列に行わざるを
得ないため、s×(n−1)ステップかかり、従って全
部で s×(n−1)×m ステップ かかることになる。
本発明の目的は上記のような問題点を解決し、浮動小数
点表現のデータによる積和演算をなるべくパイプライン
性能を低下させずに実行でき、上述のような処理を高速
化できるデータフロープロセッサのプロセッシングユニ
ットを提供することにある。
点表現のデータによる積和演算をなるべくパイプライン
性能を低下させずに実行でき、上述のような処理を高速
化できるデータフロープロセッサのプロセッシングユニ
ットを提供することにある。
本発明のプロセッシングユニットは、 前記内部メモリ部から前記バスを介して入力されるコン
トロール情報とオペランドデータを持つトークン上の2
つのオペランドデータの演算を行い、結果データを持つ
トークンを出力する算術計算部と、 前記算術計算部の出力トークン上の結果データ、及び、
加算の途中結果を一時保持する複数のレジスタからなる
レジスタファイルと、 前記算術計算部の出力トークン上の結果データと前記レ
ジスタファイルから読出したデータとの演算を行い、結
果を前記レジスタファイルに送る加算器と、 前記算術計算部の出力トークン上のコントロール情報を
前記加算器を通過するデータと同期させるための遅延回
路と、 前記加算器の結果出力データと前記遅延回路から得られ
るコントロール情報とから演算結果データを持つトーク
ンを生成する結果トークン生成部と、 からなることを特徴としている。
トロール情報とオペランドデータを持つトークン上の2
つのオペランドデータの演算を行い、結果データを持つ
トークンを出力する算術計算部と、 前記算術計算部の出力トークン上の結果データ、及び、
加算の途中結果を一時保持する複数のレジスタからなる
レジスタファイルと、 前記算術計算部の出力トークン上の結果データと前記レ
ジスタファイルから読出したデータとの演算を行い、結
果を前記レジスタファイルに送る加算器と、 前記算術計算部の出力トークン上のコントロール情報を
前記加算器を通過するデータと同期させるための遅延回
路と、 前記加算器の結果出力データと前記遅延回路から得られ
るコントロール情報とから演算結果データを持つトーク
ンを生成する結果トークン生成部と、 からなることを特徴としている。
本発明のプロセッシングユニットを持つデータフロープ
ロセッサにおいて、前記の行列Aとベクトルの乗算を
行う場合、予めベクトルの要素x[1],x[2],・
・,x[n]を外部から与えることにより内部メモリに保
持しておく。処理に際し、行列Aの要素データa[1,
1],a[2,1],・・,a[m,1],a[1,2],・
・,a[m,2],・・,a[1,n],・・,a[m,n]
をこの順で持つn×m個のトークンをデータフロープロ
セッサに入力する。入力されたトークンは内部メモリを
経由する際に必要な2項演算の相手方データとなるベク
トルの要素と処理コードとを得る。この相手方データ
はx[1],・・,x[1](m個),x[2],・・x
[2],・・,x[n],・・,x[n]のようにm×n個ア
クセスされる。
ロセッサにおいて、前記の行列Aとベクトルの乗算を
行う場合、予めベクトルの要素x[1],x[2],・
・,x[n]を外部から与えることにより内部メモリに保
持しておく。処理に際し、行列Aの要素データa[1,
1],a[2,1],・・,a[m,1],a[1,2],・
・,a[m,2],・・,a[1,n],・・,a[m,n]
をこの順で持つn×m個のトークンをデータフロープロ
セッサに入力する。入力されたトークンは内部メモリを
経由する際に必要な2項演算の相手方データとなるベク
トルの要素と処理コードとを得る。この相手方データ
はx[1],・・,x[1](m個),x[2],・・x
[2],・・,x[n],・・,x[n]のようにm×n個ア
クセスされる。
2つのオペランドを持つトークンは、プロセッシングユ
ニットの前段を構成する算術計算部に順に連続して入力
される。そこでは入力された2つのオペランドについて
乗算を行い、後段の累積加算部へその結果の積p[i,
j]=a[i,j]*x[j]を持つトークンをそのデータ
がp[1,1],p[2,1],・・,p[m,1],p
[1,2],・・,p[1,n],・・,p[m,n]の順に
なるように送出する。累積加算部では内部のレジスタフ
ァイル内のレジスタの長さmのFIFOとして用いるこ
とにより、第i行の部分和q[1,k−1]=q[i,1]
+・・+p[i,k−1]をp[i,k]が入力されるまで
サイクリックに保持し、保持した部分和が次にmクロッ
ク遅れて入って来る次の加算されるべきデータに同期す
るようにこれらを加算器へ送る。加算器では連続して入
って来るオペランドの組が、第(i−1)列に関するも
の、第i列に関するもの、第(i+1)列に関するもの
というように互いに独立なもののためパイプラインの各
段をフルに用いて加算することができ、加算の後、結果
の部分和が再びレジスタファイルに保持される。
ニットの前段を構成する算術計算部に順に連続して入力
される。そこでは入力された2つのオペランドについて
乗算を行い、後段の累積加算部へその結果の積p[i,
j]=a[i,j]*x[j]を持つトークンをそのデータ
がp[1,1],p[2,1],・・,p[m,1],p
[1,2],・・,p[1,n],・・,p[m,n]の順に
なるように送出する。累積加算部では内部のレジスタフ
ァイル内のレジスタの長さmのFIFOとして用いるこ
とにより、第i行の部分和q[1,k−1]=q[i,1]
+・・+p[i,k−1]をp[i,k]が入力されるまで
サイクリックに保持し、保持した部分和が次にmクロッ
ク遅れて入って来る次の加算されるべきデータに同期す
るようにこれらを加算器へ送る。加算器では連続して入
って来るオペランドの組が、第(i−1)列に関するも
の、第i列に関するもの、第(i+1)列に関するもの
というように互いに独立なもののためパイプラインの各
段をフルに用いて加算することができ、加算の後、結果
の部分和が再びレジスタファイルに保持される。
このようにしてm×n組のデータが入力される間に、m
個の積和をパイプライン的に動作する加算器によって求
めることができる。
個の積和をパイプライン的に動作する加算器によって求
めることができる。
次に本発明の実施例について図面を参照して説明する。
第2図は本発明の一実施例におけるデータフロープロセ
ッサ1全体の構成を示す内部ブロック図であり、10はト
ークン入力部、11はリンクテーブル、12はオペランドフ
ェッチテーブル、13はデータメモリ、14はファンクショ
ンテーブル、15はバッファキュー、16はプロセッシング
ユニット、17はトークン出力部であり、リンクテーブル
11、オペランドフェッチテーブル12、データメモリ13、
ファンクションテーブル14、バッファキュー15、プロセ
ッシングユニット16は、図に示すようにこの順にパイプ
ライン方式のバスでリング状に接続されており、トーク
ンはこの内部リングバス上を転送される。またプロセッ
シングユニット16は、算術計算部20と、累積加算部21と
が縦列に配置されたものである。
ッサ1全体の構成を示す内部ブロック図であり、10はト
ークン入力部、11はリンクテーブル、12はオペランドフ
ェッチテーブル、13はデータメモリ、14はファンクショ
ンテーブル、15はバッファキュー、16はプロセッシング
ユニット、17はトークン出力部であり、リンクテーブル
11、オペランドフェッチテーブル12、データメモリ13、
ファンクションテーブル14、バッファキュー15、プロセ
ッシングユニット16は、図に示すようにこの順にパイプ
ライン方式のバスでリング状に接続されており、トーク
ンはこの内部リングバス上を転送される。またプロセッ
シングユニット16は、算術計算部20と、累積加算部21と
が縦列に配置されたものである。
第3図は第2図のデータフロープロセッサを用いたデー
タ処理装置の一例の全体構成図である。このデータ処理
装置においては複数のデータフロープロセッサ1・・・
2と、1つのメモリインタフェース回路3が外部バス5
で結ばれており、外部バス5はメモリインタフェース回
路3を介してメモリ4と接続されている。外部バス5上
でトークンはハンドシェーク方式により非同期に転送さ
れる。
タ処理装置の一例の全体構成図である。このデータ処理
装置においては複数のデータフロープロセッサ1・・・
2と、1つのメモリインタフェース回路3が外部バス5
で結ばれており、外部バス5はメモリインタフェース回
路3を介してメモリ4と接続されている。外部バス5上
でトークンはハンドシェーク方式により非同期に転送さ
れる。
第4図は第2図のデータフロープロセッサ、および第3
図のデータ処理装置で用いられる、データの単位である
トークンの形式を示す。第4図(a)に示す外部バス5
上でのトークン60はモジュール番号61、コントロールフ
ラグ62、リンクテーブルアドレス63とデータ部64からな
る。コントロールフラグ62は、プログラム実行の前にリ
ンクテーブル11などデータフロープロセッサ内部のテー
ブルにプログラムをロードする際に用いるトークンを処
理実行時の実行トークンと区別するために用いる。
図のデータ処理装置で用いられる、データの単位である
トークンの形式を示す。第4図(a)に示す外部バス5
上でのトークン60はモジュール番号61、コントロールフ
ラグ62、リンクテーブルアドレス63とデータ部64からな
る。コントロールフラグ62は、プログラム実行の前にリ
ンクテーブル11などデータフロープロセッサ内部のテー
ブルにプログラムをロードする際に用いるトークンを処
理実行時の実行トークンと区別するために用いる。
トークン入力部10は前段のデータフロープロセッサまた
はメモリインタフェース回路から入力されるトークンの
うちそのモジュール番号61が、その装置に与えられた番
号に等しいもののみを内部へ取り込みリンクテーブル11
へパイプラインサイクルに同期して送り、その他のトー
クンは通過トークンとしてそのままトークン出力部17へ
送る。ただし、それに対して送出すべきリンクテーブル
11あるいはトークン出力部17がビジー状態である場合に
はトークンを送出せず、更に前段のデータフロープロセ
ッサまたはメモリインタフェース回路からの入力をハン
ドシェークのアルノレジ信号を返さないことにより停止
する。
はメモリインタフェース回路から入力されるトークンの
うちそのモジュール番号61が、その装置に与えられた番
号に等しいもののみを内部へ取り込みリンクテーブル11
へパイプラインサイクルに同期して送り、その他のトー
クンは通過トークンとしてそのままトークン出力部17へ
送る。ただし、それに対して送出すべきリンクテーブル
11あるいはトークン出力部17がビジー状態である場合に
はトークンを送出せず、更に前段のデータフロープロセ
ッサまたはメモリインタフェース回路からの入力をハン
ドシェークのアルノレジ信号を返さないことにより停止
する。
リンクテーブル11はプロセッシングユニット16またはト
ークン入力部10からトークンを入力するが、両方から同
時に入力要求があった場合にはトークン入力部10からの
入力を優先する。リンクテーブル11はプロセッシングユ
ニット16またはトークン入力部10から入力されたトーク
ン60のリンクテーブルアドレス63によって参照され、ト
ークンはオペランドフェッチテーブル12をアクセスする
アドレス、ファンクションテーブル14をアクセスするア
ドレス及び次回のリンクテーブル11参照のためのリンク
テーブルアドレスを得てオペランドフェッチテーブル12
に送られる。
ークン入力部10からトークンを入力するが、両方から同
時に入力要求があった場合にはトークン入力部10からの
入力を優先する。リンクテーブル11はプロセッシングユ
ニット16またはトークン入力部10から入力されたトーク
ン60のリンクテーブルアドレス63によって参照され、ト
ークンはオペランドフェッチテーブル12をアクセスする
アドレス、ファンクションテーブル14をアクセスするア
ドレス及び次回のリンクテーブル11参照のためのリンク
テーブルアドレスを得てオペランドフェッチテーブル12
に送られる。
オペランドフェッチテーブル12は入力トークン60の持つ
リンクテーブル11から読出したオペランドフェッチテー
ブルアクセスアドレスによって参照され、そのアドレス
にある、データメモリ13の読出し、書込み、データの2
項キュー制御の命令コードの参照と状態管理を行う情報
の参照、更新を行う。これによりトークンはデータメモ
リ13のアクセスアドレスとデータメモリ13における動作
を指定するデータメモリ処理コードを受け取る。
リンクテーブル11から読出したオペランドフェッチテー
ブルアクセスアドレスによって参照され、そのアドレス
にある、データメモリ13の読出し、書込み、データの2
項キュー制御の命令コードの参照と状態管理を行う情報
の参照、更新を行う。これによりトークンはデータメモ
リ13のアクセスアドレスとデータメモリ13における動作
を指定するデータメモリ処理コードを受け取る。
データメモリ13は入力トークン60の持つデータメモリア
クセスアドレスによってアクセスされ、必要に応じて2
項演算のデータ同士の待ち合わせのキューとして、ある
いは2項演算のための一方のオペランドデータを一時格
納するためのメモリとして用いられる。例えば予め外部
メモリからデータフロープロセッサに入力したデータを
データメモリ13の順に連続した番地に書き込むことによ
って保持し、その後演算処理を行う際に2項演算のため
の第1オペランドを持つデータメモリ読出しトークンに
よってデータメモリ13からその書込んだデータを読出
し、読出しデータを第2オペランドとしてトークンに付
加することによりプロセッシングユニット16での2項演
算に用いることができる。更にデータメモリ13の出口で
第1オペランドと第2オペランドをデータメモリ処理コ
ードに従って交換することができる。
クセスアドレスによってアクセスされ、必要に応じて2
項演算のデータ同士の待ち合わせのキューとして、ある
いは2項演算のための一方のオペランドデータを一時格
納するためのメモリとして用いられる。例えば予め外部
メモリからデータフロープロセッサに入力したデータを
データメモリ13の順に連続した番地に書き込むことによ
って保持し、その後演算処理を行う際に2項演算のため
の第1オペランドを持つデータメモリ読出しトークンに
よってデータメモリ13からその書込んだデータを読出
し、読出しデータを第2オペランドとしてトークンに付
加することによりプロセッシングユニット16での2項演
算に用いることができる。更にデータメモリ13の出口で
第1オペランドと第2オペランドをデータメモリ処理コ
ードに従って交換することができる。
ファンクションテーブル14では入力されるトークンは、
そのファンクションテーブルアクセスアドレスによりそ
の内部のテーブルをアクセスする。これによりプロセッ
シングユニット16での処理内容を示す処理コードがトー
クンに付加される。同時にファンクションテーブル14に
保存された内部状態により、流れるトークンのリンクテ
ーブルアドレス部が変更されることにより必要に応じて
流れの制御が行われる。また上述の流れ制御動作の代わ
りにその内部状態保持部にあるデータを第2オペランド
としてトークンに付加し、ファンクションテーブル14の
入力時に持っていた第1オペランドのデータと共にプロ
セッシングユニット16へ入力することができる。なおフ
ァンクションテーブル14でフェッチされる処理コード
は、算術計算部20での処理を規定する算術計算部処理コ
ード、累積加算部21での処理を規定する累積加算部処理
コード、及びプロセッシングユニット16の処理結果を持
つトークンをリンクテーブル11へ送るかトークン出力部
へ送るかを指定する出力選択コードからなる。
そのファンクションテーブルアクセスアドレスによりそ
の内部のテーブルをアクセスする。これによりプロセッ
シングユニット16での処理内容を示す処理コードがトー
クンに付加される。同時にファンクションテーブル14に
保存された内部状態により、流れるトークンのリンクテ
ーブルアドレス部が変更されることにより必要に応じて
流れの制御が行われる。また上述の流れ制御動作の代わ
りにその内部状態保持部にあるデータを第2オペランド
としてトークンに付加し、ファンクションテーブル14の
入力時に持っていた第1オペランドのデータと共にプロ
セッシングユニット16へ入力することができる。なおフ
ァンクションテーブル14でフェッチされる処理コード
は、算術計算部20での処理を規定する算術計算部処理コ
ード、累積加算部21での処理を規定する累積加算部処理
コード、及びプロセッシングユニット16の処理結果を持
つトークンをリンクテーブル11へ送るかトークン出力部
へ送るかを指定する出力選択コードからなる。
バッファキュー15は、プロセッシングユニット16にトー
クンを入力する前にトークンを一時保持するためのFI
FOメモリであり、プロセッシングユニット16がトーク
ン入力を停止している際にプロセッシングユニット16に
対する出力を停止する。バッファキュー15からプロセッ
シングユニット16へ送られる際のトークンの形式を、第
4図(b)のトークン65に示す。トークン65はコントロ
ールフラグ69、リンクテーブルアドレス70と、処理され
るべき第1オペランド71、第2オペランド72を持ち、さ
らにファンクションテーブル14でフェッチした算術計算
部処理コード66、累積加算部処理コード67、出力選択コ
ード68を持っている。
クンを入力する前にトークンを一時保持するためのFI
FOメモリであり、プロセッシングユニット16がトーク
ン入力を停止している際にプロセッシングユニット16に
対する出力を停止する。バッファキュー15からプロセッ
シングユニット16へ送られる際のトークンの形式を、第
4図(b)のトークン65に示す。トークン65はコントロ
ールフラグ69、リンクテーブルアドレス70と、処理され
るべき第1オペランド71、第2オペランド72を持ち、さ
らにファンクションテーブル14でフェッチした算術計算
部処理コード66、累積加算部処理コード67、出力選択コ
ード68を持っている。
プロセッシングユニット16は第1図に示されるように、
算術計算部20、累積加算部21が直列に接続されることに
より構成され、入力されたトークンが独立に動作するそ
れらを順に通過する際に、これらのトークンに対しパイ
プライン的に作用する。
算術計算部20、累積加算部21が直列に接続されることに
より構成され、入力されたトークンが独立に動作するそ
れらを順に通過する際に、これらのトークンに対しパイ
プライン的に作用する。
算術計算部20はそこへ入力されるトークンの第1オペラ
ンドと第2オペランドとの2項演算、あるいは第1オペ
ランドの単項演算を、ファンクションテーブル14でフェ
ッチした処理コードのうちの算術計算部処理コードに従
い内部状態を持たずに実行し、結果データを持つトーク
ンを信号線101を介して累積加算部21へ出力する。演算
としては算術演算、論理演算、シフト、比較、ビット操
作などがある。特にトークンの持つデータが浮動小数点
データであり、トークンが浮動小数点乗算を指示する処
理コードを持つ場合には、入力された2つの浮動小数点
データ間の乗算を行い、結果の浮動小数点データを持つ
トークンを結果トークンとする。なお算術計算部20は全
体のパイプラインクロックを上げるため、そのハードウ
ェアをパイプライン的に動作する複数ステージに分割し
て構成することも可能である。
ンドと第2オペランドとの2項演算、あるいは第1オペ
ランドの単項演算を、ファンクションテーブル14でフェ
ッチした処理コードのうちの算術計算部処理コードに従
い内部状態を持たずに実行し、結果データを持つトーク
ンを信号線101を介して累積加算部21へ出力する。演算
としては算術演算、論理演算、シフト、比較、ビット操
作などがある。特にトークンの持つデータが浮動小数点
データであり、トークンが浮動小数点乗算を指示する処
理コードを持つ場合には、入力された2つの浮動小数点
データ間の乗算を行い、結果の浮動小数点データを持つ
トークンを結果トークンとする。なお算術計算部20は全
体のパイプラインクロックを上げるため、そのハードウ
ェアをパイプライン的に動作する複数ステージに分割し
て構成することも可能である。
累積加算部21では算術計算部20から信号線101 を介して
入力されるトークンの持つ累積加算部処理コードに従っ
て、そのデータを加算器22に送ってレジスタファイル23
から読出したデータと加算を行わせ、あるいはレジスタ
ファイル23の中の適当なレジスタにその値をセットする
ことができる。算術計算部20からの入力トークンは入力
トークンレジスタ30に保持され、その内容のうち処理さ
れるべきデータ値が信号線102 に、その他の制御用のト
ークン情報が信号線107 に出力される。信号線107 上の
トークン情報としては、第4図(b)に示すプロセッシ
ングユニット16に対する入力トークン65が持っていたリ
ンクテーブルアドレス70、コントロールフラグ69、累積
加算部処理コード67、出力選択コード68がある。特にそ
のうち累積加算部処理コード67にはレジスタファイル23
の書込み制御コード、読出し制御コード、結果トークン
生成制御コードが含まれ、また出力選択コード68には、
その結果トークンをトークン出力部17に対して出力する
かリンクテーブル11に対して出力するかのフラグと、ト
ークン出力部17から外部バスに出力する際に持つべきモ
ジュール番号が含まれる。
入力されるトークンの持つ累積加算部処理コードに従っ
て、そのデータを加算器22に送ってレジスタファイル23
から読出したデータと加算を行わせ、あるいはレジスタ
ファイル23の中の適当なレジスタにその値をセットする
ことができる。算術計算部20からの入力トークンは入力
トークンレジスタ30に保持され、その内容のうち処理さ
れるべきデータ値が信号線102 に、その他の制御用のト
ークン情報が信号線107 に出力される。信号線107 上の
トークン情報としては、第4図(b)に示すプロセッシ
ングユニット16に対する入力トークン65が持っていたリ
ンクテーブルアドレス70、コントロールフラグ69、累積
加算部処理コード67、出力選択コード68がある。特にそ
のうち累積加算部処理コード67にはレジスタファイル23
の書込み制御コード、読出し制御コード、結果トークン
生成制御コードが含まれ、また出力選択コード68には、
その結果トークンをトークン出力部17に対して出力する
かリンクテーブル11に対して出力するかのフラグと、ト
ークン出力部17から外部バスに出力する際に持つべきモ
ジュール番号が含まれる。
レジスタファイル23はr個のレジスタからなり、レジス
タファイル書込み制御部24からの信号109 により信号線
105 上のデータが指定されたレジスタに書込まれる。レ
ジスタファイル書込み制御部24は信号107 または信号10
8 のレジスタファイル書込み制御コードで制御され、信
号線102 または104 から入力されるデータの何れかをレ
ジスタファイル23の内の指定されたレジスタに信号線10
5 を介して書き込む。信号107 と信号108 では信号107
を優先する。レジスタファイル読出し制御部25は信号10
7 のレジスタファイル読出し制御コードで制御され、レ
ジスタファイル23の各レジスタのうち指定されたレジス
タのデータを信号線103 への出力とする。
タファイル書込み制御部24からの信号109 により信号線
105 上のデータが指定されたレジスタに書込まれる。レ
ジスタファイル書込み制御部24は信号107 または信号10
8 のレジスタファイル書込み制御コードで制御され、信
号線102 または104 から入力されるデータの何れかをレ
ジスタファイル23の内の指定されたレジスタに信号線10
5 を介して書き込む。信号107 と信号108 では信号107
を優先する。レジスタファイル読出し制御部25は信号10
7 のレジスタファイル読出し制御コードで制御され、レ
ジスタファイル23の各レジスタのうち指定されたレジス
タのデータを信号線103 への出力とする。
加算器22は信号線102, 103上の2つの浮動小数点データ
に対してパイプライン的な加算動作を行い、同じフォー
マットを持つ結果データを信号線104 に出力する。第5
図に5段のステージで構成される加算器22の一例を示
す。この例では扱うデータはIEEE754標準規格の
浮動小数点フォーマットに準拠しており、各データの指
数部と仮数部を分離した後、各々を内部の5段のラッチ
で順に保持しながら演算を進めていく。第5図中、Lで
示されるのはパイプラインの各ステージを構成するため
のラッチである。以下簡単にその動作を説明する。2つ
の入力データは比較選択部150 で比較され、信号151 に
2つのデータのうち大きい方の指数部が、信号152 にそ
の仮数部が、信号153 に小さい方のデータの仮数部が、
信号154 に2つの指数部の差の絶対値が選択出力され
る。小さい方のデータの仮数部は指数部の差だけ右シフ
タ155 で右フシトされ、加算器156 でもう一方の仮数部
と加算される。その結果の上位から2進法表現で0の続
く数が零数カウンタ157 で計数され、その数だけ仮数の
和が左シフタ158 で左シフトされ正規化された演算結果
の仮数部が得られる。同時に同じく零数カウンタ157 の
出力が加算器159 で元の大きい方の指数部に加えられる
ことによって演算結果の指数部が得られる。なおここで
は加算器22のパイプライン段数は5段の例を示したが、
以下では一般的にs段と仮定して説明する。
に対してパイプライン的な加算動作を行い、同じフォー
マットを持つ結果データを信号線104 に出力する。第5
図に5段のステージで構成される加算器22の一例を示
す。この例では扱うデータはIEEE754標準規格の
浮動小数点フォーマットに準拠しており、各データの指
数部と仮数部を分離した後、各々を内部の5段のラッチ
で順に保持しながら演算を進めていく。第5図中、Lで
示されるのはパイプラインの各ステージを構成するため
のラッチである。以下簡単にその動作を説明する。2つ
の入力データは比較選択部150 で比較され、信号151 に
2つのデータのうち大きい方の指数部が、信号152 にそ
の仮数部が、信号153 に小さい方のデータの仮数部が、
信号154 に2つの指数部の差の絶対値が選択出力され
る。小さい方のデータの仮数部は指数部の差だけ右シフ
タ155 で右フシトされ、加算器156 でもう一方の仮数部
と加算される。その結果の上位から2進法表現で0の続
く数が零数カウンタ157 で計数され、その数だけ仮数の
和が左シフタ158 で左シフトされ正規化された演算結果
の仮数部が得られる。同時に同じく零数カウンタ157 の
出力が加算器159 で元の大きい方の指数部に加えられる
ことによって演算結果の指数部が得られる。なおここで
は加算器22のパイプライン段数は5段の例を示したが、
以下では一般的にs段と仮定して説明する。
遅延回路26はs個の遅延のためのラッチを直列に接続し
たものであり、信号線107 上のトークン情報を、s段遅
らせることにより加算器22を通過する演算データに同期
して結果トークン生成部25及びレジスタファイル書込み
制御部24に送るために用いられる。
たものであり、信号線107 上のトークン情報を、s段遅
らせることにより加算器22を通過する演算データに同期
して結果トークン生成部25及びレジスタファイル書込み
制御部24に送るために用いられる。
結果トークン生成部29は信号107 の結果トークン生成制
御コードで制御され、加算器22から出力される浮動小数
点形式の結果データ104 に信号線107 で送られるトーク
ン情報のうちリンクテーブルアドレス、コントロールフ
ラグ、出力選択コードを付加してプロセッシングユニッ
ト16からの出力トークンの形式を整え、指定されたタイ
ミングで結果トークンを信号線110 へ出力する。
御コードで制御され、加算器22から出力される浮動小数
点形式の結果データ104 に信号線107 で送られるトーク
ン情報のうちリンクテーブルアドレス、コントロールフ
ラグ、出力選択コードを付加してプロセッシングユニッ
ト16からの出力トークンの形式を整え、指定されたタイ
ミングで結果トークンを信号線110 へ出力する。
プロセッシングユニット16からの出力トークンは通常リ
ンクテーブル11に送出されるが、そのトークンがデータ
フロープロセッサ外へ出力されるべきであることを示す
出力選択コードを持つときには、出力選択コード内にあ
る外部バスのトークンに必要なモジュール番号をそのト
ークンに付加し、トークン出力部17へ送出する。ただし
トークン出力部17がビジー状態である場合にはそこへの
出力を停止し、プロセッシングユニット16へのバッファ
キュー15からの入力も禁止する。
ンクテーブル11に送出されるが、そのトークンがデータ
フロープロセッサ外へ出力されるべきであることを示す
出力選択コードを持つときには、出力選択コード内にあ
る外部バスのトークンに必要なモジュール番号をそのト
ークンに付加し、トークン出力部17へ送出する。ただし
トークン出力部17がビジー状態である場合にはそこへの
出力を停止し、プロセッシングユニット16へのバッファ
キュー15からの入力も禁止する。
トークン出力部17はプロセッシングユニット16またはト
ークン入力部10から入力されたトークンを外部バス5を
介して後段のデータフロープロセッサまたはメモリイン
タフェース回路3に対して出力する。ただしプロセッシ
ングユニット16及びトークン入力部10の両方から同時に
そのリクエストがあった場合にはトークン入力部10から
の入力を優先し、プロセッシングユニット16に対し、ビ
ジー状態であることを知らせる信号を送ることによって
プロセッシングユニット16からのトークンの受付を停止
する。また後段のデータフロープロセッサまたはメモリ
インタフェース回路がビジー状態でハンドシェークのア
クノレジ信号を返さない場合にも、出力を停止し、また
プロセッシングユニット16からもトークンの受付を停止
する。
ークン入力部10から入力されたトークンを外部バス5を
介して後段のデータフロープロセッサまたはメモリイン
タフェース回路3に対して出力する。ただしプロセッシ
ングユニット16及びトークン入力部10の両方から同時に
そのリクエストがあった場合にはトークン入力部10から
の入力を優先し、プロセッシングユニット16に対し、ビ
ジー状態であることを知らせる信号を送ることによって
プロセッシングユニット16からのトークンの受付を停止
する。また後段のデータフロープロセッサまたはメモリ
インタフェース回路がビジー状態でハンドシェークのア
クノレジ信号を返さない場合にも、出力を停止し、また
プロセッシングユニット16からもトークンの受付を停止
する。
以上の実施例で説明したプロセッシングユニットにおい
て、加算器22を構成するステージ数s、レジスタファイ
ル23のレジスタ数r、また本発明で扱うべき行列Aとベ
クトルの乗算問題においては、その行列Aのサイズm
×nについて、 r≧m≧s が成立しなければならない。
て、加算器22を構成するステージ数s、レジスタファイ
ル23のレジスタ数r、また本発明で扱うべき行列Aとベ
クトルの乗算問題においては、その行列Aのサイズm
×nについて、 r≧m≧s が成立しなければならない。
次に本実施例を用いて例えば先で述べたような行列A
(サイズm×n)×ベクトル(サイズn)の演算処理
を行う場合の動作について説明する。実施例において加
算器22を構成するステージ数s=5、レジスタファイル
23のレジスタ数r=32とし、またmについては前述の条
件に従ってm=32とする。なおここではm=rである
が、m<rの場合には、レジスタファイル23のr個のレ
ジスタのうちm個だけをFIFOとして用いるようにア
クセスレジスタ選択を行うので、全く同様に処理を進め
られる。
(サイズm×n)×ベクトル(サイズn)の演算処理
を行う場合の動作について説明する。実施例において加
算器22を構成するステージ数s=5、レジスタファイル
23のレジスタ数r=32とし、またmについては前述の条
件に従ってm=32とする。なおここではm=rである
が、m<rの場合には、レジスタファイル23のr個のレ
ジスタのうちm個だけをFIFOとして用いるようにア
クセスレジスタ選択を行うので、全く同様に処理を進め
られる。
まず演算に先立ってベクトルの要素x[1],x[2],
・・,x[n]をデータメモリに設定する。次に処理に用
いる行列Aの要素を持つトークンを外部メモリ4からメ
モリインタフェース回路3を介してデータフロープロセ
ッサに次々に入力する。この際は、 a[1,1],a[2,1],・・,a[m,1], a[1,2],a[2,2],・・,a[m,2],・・・ a[1,n],a[2,n],・・,a[m,n], の順でm×n個の行列の要素データが入力されるように
外部メモリ4をアクセスする。
・・,x[n]をデータメモリに設定する。次に処理に用
いる行列Aの要素を持つトークンを外部メモリ4からメ
モリインタフェース回路3を介してデータフロープロセ
ッサに次々に入力する。この際は、 a[1,1],a[2,1],・・,a[m,1], a[1,2],a[2,2],・・,a[m,2],・・・ a[1,n],a[2,n],・・,a[m,n], の順でm×n個の行列の要素データが入力されるように
外部メモリ4をアクセスする。
入力されたトークンはトークン入力部10からリンクテー
ブル11に入力され、オペランドフェッチテーブル12にお
いて、データメモリ13のベクトル要素を入力順に、 x[1]をm回、x[2]をm回、・・・、x[n]をm回 というようにアクセスされるように制御される。これに
よりプロセッシングユニット16に入力される際の2つの
オペランドの組は (a[1,1],x[1]),(a[2,1],x[1]), ・・,(a[m,1],x[1]), (a[1,2],x[2]),(a[2,2],x[2]), ・・,(a[m,2],x[2]),・・・ (a[1,n],x[n]),(a[2,n],x[n]), ・・,(a[m,n],x[n]) のようになる。
ブル11に入力され、オペランドフェッチテーブル12にお
いて、データメモリ13のベクトル要素を入力順に、 x[1]をm回、x[2]をm回、・・・、x[n]をm回 というようにアクセスされるように制御される。これに
よりプロセッシングユニット16に入力される際の2つの
オペランドの組は (a[1,1],x[1]),(a[2,1],x[1]), ・・,(a[m,1],x[1]), (a[1,2],x[2]),(a[2,2],x[2]), ・・,(a[m,2],x[2]),・・・ (a[1,n],x[n]),(a[2,n],x[n]), ・・,(a[m,n],x[n]) のようになる。
次いでファンクションテーブル14において各トークンは
プロセッシングユニット16における処理内容を指定する
処理コードをフェッチする。処理コードとしては先に述
べたように次のようなものがあり、各々を以下の説明に
用いるニーモニックの内容とともに示すと次のようにな
る。
プロセッシングユニット16における処理内容を指定する
処理コードをフェッチする。処理コードとしては先に述
べたように次のようなものがあり、各々を以下の説明に
用いるニーモニックの内容とともに示すと次のようにな
る。
1.算術計算部20における処理を規定するコード fmul:入力される2つのオペランドの浮動小数点乗算 2.累積加算部21のレジスタファイル書込みの制御コー
ド w0:信号線102 上のデータをサイクリックに書込む w1:信号線104 上のデータをサイクリックに書込む 3.累積加算部21のレジスタファイル読出しの制御コー
ド rdcyc :レジスタをサイクリックに読出す −:読出さない 4.累積加算部21のトークン生成制御コード fadd:トークン生成する −:出力トークンを生成しない 5.出力選択コード out :トークンをトークン出力部17へ送る −:トークンをリンクテーブル11へ送る。
ド w0:信号線102 上のデータをサイクリックに書込む w1:信号線104 上のデータをサイクリックに書込む 3.累積加算部21のレジスタファイル読出しの制御コー
ド rdcyc :レジスタをサイクリックに読出す −:読出さない 4.累積加算部21のトークン生成制御コード fadd:トークン生成する −:出力トークンを生成しない 5.出力選択コード out :トークンをトークン出力部17へ送る −:トークンをリンクテーブル11へ送る。
各トークンについてこの5つのコードの組を順に括弧に
入れて示すとすると、本処理を行うには流れるm×n個
のトークンについてのコードの組が 最初のm個について: (fmul,w0,-,-,-) 次のm×(n−2)個について: (fmul,w1,rdcyc,-,-) 最後のm個について: (fmul,-,rdcyc,fadd,out) となるようにする。以上によりプロセッシングユニット
16で演算されるべきデータとそのための処理コードを持
つトークンがm×n個連続して、即ちクロック毎にプロ
セッシングユニット16へ流入する。
入れて示すとすると、本処理を行うには流れるm×n個
のトークンについてのコードの組が 最初のm個について: (fmul,w0,-,-,-) 次のm×(n−2)個について: (fmul,w1,rdcyc,-,-) 最後のm個について: (fmul,-,rdcyc,fadd,out) となるようにする。以上によりプロセッシングユニット
16で演算されるべきデータとそのための処理コードを持
つトークンがm×n個連続して、即ちクロック毎にプロ
セッシングユニット16へ流入する。
算術計算部20では処理を規定するコードが全てのトーク
ンについて fmnl なので入力される2つのオペランドの
浮動小数点乗算を行い、それらの積を同じく連続データ
として累積加算部21へ送る。以下簡単のため p[i,j]=a[i,j]・x[j] とすると、算術計算部20の出力トークンのデータは順
に、 p[1,1],p[2,1],・・,p[m,1], p[1,2],p[2,2],・・,p[m,2],・・・ p[1,n],p[2,n],・・,p[m,n], となり、これもクロック毎に連続して累積加算部21へ流
入する。
ンについて fmnl なので入力される2つのオペランドの
浮動小数点乗算を行い、それらの積を同じく連続データ
として累積加算部21へ送る。以下簡単のため p[i,j]=a[i,j]・x[j] とすると、算術計算部20の出力トークンのデータは順
に、 p[1,1],p[2,1],・・,p[m,1], p[1,2],p[2,2],・・,p[m,2],・・・ p[1,n],p[2,n],・・,p[m,n], となり、これもクロック毎に連続して累積加算部21へ流
入する。
累積加算部21では上記の順で入力されるトークンの処理
コードに従い、 a)最初のm個についてはそのデータをレジスタファイ
ル23にサイクリックに書込み、 b)次のm×(n−2)個についてはレジスタファイル
23からサイクリックに読出したデータと、入力したデー
タを加算器23で加算し、その結果データをレジスタファ
イル23にサイクリックに書込み、 c)最後のm個についてはレジスタファイル23からサイ
クリックに読出したデータと、入力したデータを加算器
22で加算し、その結果データを持つトークンを生成し、
プロセッシングユニット16の出力としてトークン出力部
に送出する、 という動作を行う。このようにレジスタファイル23を長
さmのFIFOとして用いることにより、最初のm個の
トークンはmクロック遅れ、次のp[1,2],・・,p
[m,2]の列のトークンと同期して加算器22へ入力され
る。その結果の部分和(第2部分和)は加算器22内でs
ステージ通過するためにsクロック遅れ、その後レジス
タファイル23に一度書込まれ、(m−s)クロック後に
読出されることにより計mクロック遅れ、次のp[1,
3],・・,p[m,3]の列のトークンと同期して加算
器22へ入力されることとなる。以下これを繰り返すこと
により第n部分和の列が求まり、これを最終結果として
結果トークン生成部29から出力することにより、処理を
終了する。
コードに従い、 a)最初のm個についてはそのデータをレジスタファイ
ル23にサイクリックに書込み、 b)次のm×(n−2)個についてはレジスタファイル
23からサイクリックに読出したデータと、入力したデー
タを加算器23で加算し、その結果データをレジスタファ
イル23にサイクリックに書込み、 c)最後のm個についてはレジスタファイル23からサイ
クリックに読出したデータと、入力したデータを加算器
22で加算し、その結果データを持つトークンを生成し、
プロセッシングユニット16の出力としてトークン出力部
に送出する、 という動作を行う。このようにレジスタファイル23を長
さmのFIFOとして用いることにより、最初のm個の
トークンはmクロック遅れ、次のp[1,2],・・,p
[m,2]の列のトークンと同期して加算器22へ入力され
る。その結果の部分和(第2部分和)は加算器22内でs
ステージ通過するためにsクロック遅れ、その後レジス
タファイル23に一度書込まれ、(m−s)クロック後に
読出されることにより計mクロック遅れ、次のp[1,
3],・・,p[m,3]の列のトークンと同期して加算
器22へ入力されることとなる。以下これを繰り返すこと
により第n部分和の列が求まり、これを最終結果として
結果トークン生成部29から出力することにより、処理を
終了する。
第6図はこの処理における、累積加算部21の各部分で処
理されるデータのタイミングの概略を示す。図中、p
i,jとあるのは説明中のp[i,j]を示し、また である。従ってqi,n=yiである。さらに とあるのはそのタイミングの間にp1,j,p2,j,・・,
pm,jが順に流れたことを意味し、同様に は加算器22に2つのオペランドの組として (p1,j,q1,j-1),(p2,j,q2,j-1),・・,(p
m,j,qm,j-1) を順に入力することを示す。この時は当然加算器22の出
力は q1,j,q2,j,・・,qm,j となる。加算器22はオペランドの組が入力されてから結
果が出力されるまでsステップかかるので、その結果を
利用するレジスタファイル書込み制御部24、結果トーク
ン生成部29の動作タイミングはsクロック遅れる。
理されるデータのタイミングの概略を示す。図中、p
i,jとあるのは説明中のp[i,j]を示し、また である。従ってqi,n=yiである。さらに とあるのはそのタイミングの間にp1,j,p2,j,・・,
pm,jが順に流れたことを意味し、同様に は加算器22に2つのオペランドの組として (p1,j,q1,j-1),(p2,j,q2,j-1),・・,(p
m,j,qm,j-1) を順に入力することを示す。この時は当然加算器22の出
力は q1,j,q2,j,・・,qm,j となる。加算器22はオペランドの組が入力されてから結
果が出力されるまでsステップかかるので、その結果を
利用するレジスタファイル書込み制御部24、結果トーク
ン生成部29の動作タイミングはsクロック遅れる。
以上説明したように本発明においては、 (1)大きなハードウェアを必要とし本来ならば長い処
理時間がかかる浮動小数点の加算を行う専用ハードウェ
アを用意し、しかもそれをパイプライン的に動作する複
数ステージに分割して構成している。これにより浮動小
数点計算のスループットを向上させ、つまり実効的な演
算時間を短縮することができ、さらにプロセッシングユ
ニット部、さらにはデータフロープロセッサ全体の動作
パイプラインサイクルを短縮することが可能になること
により処理性能が向上される。
理時間がかかる浮動小数点の加算を行う専用ハードウェ
アを用意し、しかもそれをパイプライン的に動作する複
数ステージに分割して構成している。これにより浮動小
数点計算のスループットを向上させ、つまり実効的な演
算時間を短縮することができ、さらにプロセッシングユ
ニット部、さらにはデータフロープロセッサ全体の動作
パイプラインサイクルを短縮することが可能になること
により処理性能が向上される。
(2)さらに浮動小数点の乗算が可能な算術計算部をこ
の加算器と縦列に配置することにより、浮動小数点デー
タのコンボリューションがデータを1度でプロセッシン
グユニットに通すだけで行える。
の加算器と縦列に配置することにより、浮動小数点デー
タのコンボリューションがデータを1度でプロセッシン
グユニットに通すだけで行える。
(3)このようなパイプライン化された加算器を装備し
た場合、従来の積和演算を含む行列×ベクトルの計算
時にその加算器のステージ数をsとしてs×(n−1)
×mステップかかっていたが、本発明では第6図が示す
ように約 m×n+s ステップ で終了し、処理の高速化が図れる。これはレジスタファ
イルの利用により加算器の各パイプラインステージをフ
ル稼働させることが可能となったことによる。
た場合、従来の積和演算を含む行列×ベクトルの計算
時にその加算器のステージ数をsとしてs×(n−1)
×mステップかかっていたが、本発明では第6図が示す
ように約 m×n+s ステップ で終了し、処理の高速化が図れる。これはレジスタファ
イルの利用により加算器の各パイプラインステージをフ
ル稼働させることが可能となったことによる。
という効果があり、これにより数値演算処理の高速化を
図ることができる。
図ることができる。
第1図は本発明のプロセッシングユニットの一実施例の
構成を示すブロック図、 第2図は第1図のプロセッシングユニットを用いたデー
タフロープロセッサの構成図、 第3図は第2図のデータフロープロセッサを用いたデー
タフロー処理装置の例を示す全体構成図、 第4図は本発明の説明に供するトークンの形式を示す
図、 第5図は累積加算部内の加算器の構成の一例を示すブロ
ック図、 第6図は累積加算部におけるデータ処理の動作を示すタ
イミングチャート図、 第7図は従来のデータフロープロセッサの構成を示す図
である。 16……プロセッシングユニット 20……算術計算部 21……累積加算部 22……加算器 23……レジスタファイル 24……レジスタファイル書込制御部 25……レジスタファイル読出し制御部 26……遅延回路 29……結果トークン生成部 30……入力トークンレジスタ
構成を示すブロック図、 第2図は第1図のプロセッシングユニットを用いたデー
タフロープロセッサの構成図、 第3図は第2図のデータフロープロセッサを用いたデー
タフロー処理装置の例を示す全体構成図、 第4図は本発明の説明に供するトークンの形式を示す
図、 第5図は累積加算部内の加算器の構成の一例を示すブロ
ック図、 第6図は累積加算部におけるデータ処理の動作を示すタ
イミングチャート図、 第7図は従来のデータフロープロセッサの構成を示す図
である。 16……プロセッシングユニット 20……算術計算部 21……累積加算部 22……加算器 23……レジスタファイル 24……レジスタファイル書込制御部 25……レジスタファイル読出し制御部 26……遅延回路 29……結果トークン生成部 30……入力トークンレジスタ
Claims (1)
- 【請求項1】内部のメモリ部、演算部を結合するパイプ
ライン状のバスにデータの単位であるトークンを流し、
データ駆動方式により演算順序をコントロールするデー
タフロープロセッサのプロセッシングユニットにおい
て、 前記内部メモリ部から前記バスを介して入力されるコン
トロール情報とオペランドデータを持つトークン上の2
つのオペランドデータの演算を行い、結果データを持つ
トークンを出力する算術計算部と、 前記算術計算部の出力トークン上の結果データ、及び、
加算の途中結果を一時保持する複数のレジスタからなる
レジスタファイルと、 前記算術計算部の出力トークン上の結果データと前記レ
ジスタファイルから読出したデータとの演算を行い、結
果を前記レジスタファイルに送る加算器と、 前記算術計算部の出力トークン上のコントロール情報を
前記加算器を通過するデータと同期させるための遅延回
路と、 前記加算器の結果出力データと前記遅延回路から得られ
るコントロール情報とから演算結果データを持つトーク
ンを生成する結果トークン生成部と、 からなることを特徴とするプロセッシングユニット。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63010775A JPH0648499B2 (ja) | 1988-01-22 | 1988-01-22 | プロセッシングユニット |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63010775A JPH0648499B2 (ja) | 1988-01-22 | 1988-01-22 | プロセッシングユニット |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH01187638A JPH01187638A (ja) | 1989-07-27 |
| JPH0648499B2 true JPH0648499B2 (ja) | 1994-06-22 |
Family
ID=11759704
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP63010775A Expired - Fee Related JPH0648499B2 (ja) | 1988-01-22 | 1988-01-22 | プロセッシングユニット |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0648499B2 (ja) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0469783A (ja) * | 1990-07-11 | 1992-03-04 | Nec Corp | データフロー型計算機用データ列補間モジュール |
| JPH05233853A (ja) * | 1992-02-24 | 1993-09-10 | Sharp Corp | 演算処理装置 |
-
1988
- 1988-01-22 JP JP63010775A patent/JPH0648499B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JPH01187638A (ja) | 1989-07-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5844830A (en) | Executing computer instrucrions by circuits having different latencies | |
| US5311458A (en) | CPU with integrated multiply/accumulate unit | |
| US5081573A (en) | Parallel processing system | |
| US5381360A (en) | Modulo arithmetic addressing circuit | |
| JPH0635675A (ja) | データプロセッサにおいて除算を行うための方法および装置 | |
| US5497468A (en) | Data processor that utilizes full data width when processing a string operation | |
| US5426600A (en) | Double precision division circuit and method for digital signal processor | |
| JP2006012182A (ja) | データ処理システムとその方法 | |
| US4539635A (en) | Pipelined digital processor arranged for conditional operation | |
| JPH06195322A (ja) | 汎用型ニューロコンピュータとして用いられる情報処理装置 | |
| JPH06236257A (ja) | データ・プロセッサにおいて浮動小数点実行ユニット内で後正規化を実行する方法および装置 | |
| JPH03138759A (ja) | 信号プロセツサ | |
| US6295597B1 (en) | Apparatus and method for improved vector processing to support extended-length integer arithmetic | |
| JP2683488B2 (ja) | 3−1論理演算装置 | |
| US4150434A (en) | Matrix arithmetic apparatus | |
| Knofel | Fast hardware units for the computation of accurate dot products | |
| JP3578883B2 (ja) | データ処理装置 | |
| JPH07104784B2 (ja) | デジタルデータ処理装置 | |
| JP2518293B2 (ja) | デ−タフロ−プロセツサ | |
| US5822557A (en) | Pipelined data processing device having improved hardware control over an arithmetic operations unit | |
| JPH08123769A (ja) | 並列プロセッサ | |
| JPH0648499B2 (ja) | プロセッシングユニット | |
| US4463441A (en) | Register arithmetic device | |
| JP3597547B2 (ja) | 高速のマイクロプロセッサ分岐決定回路 | |
| GB2380283A (en) | A processing arrangement comprising a special purpose and a general purpose processing unit and means for supplying an instruction to cooperate to these units |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |