JPH0764960A - データフロープロセサ - Google Patents
データフロープロセサInfo
- Publication number
- JPH0764960A JPH0764960A JP5213945A JP21394593A JPH0764960A JP H0764960 A JPH0764960 A JP H0764960A JP 5213945 A JP5213945 A JP 5213945A JP 21394593 A JP21394593 A JP 21394593A JP H0764960 A JPH0764960 A JP H0764960A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- flag
- semaphore
- data packet
- data
- 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.)
- Withdrawn
Links
Landscapes
- Multi Processors (AREA)
Abstract
(57)【要約】
【構成】 TEST&SET命令を指示する命令コード
を保持したデータパケットが命令実行部26に到着する
と、命令実行部26はセマフォフラグ記憶部34のセマ
フォフラグを読み出す。読み出したセマフォフラグが
「0」であれば、セマフォフラグを「1」にセットする
とともにデータパケットが保持している命令ノード番号
を新たな番号に更新することを許可する。そして、所望
の処理を実行する。読み出したセマフォフラグが「1」
であれば、データパケットが保持している命令ノード番
号を新たな番号に更新することを許可せずに、セマフォ
フラグが「0」になるまでデータパケットを循環パイプ
ライン14上で周回させながら待機させる。セマフォフ
ラグを「0」にリセットするには、セマフォリセット信
号cやセマフォリセット信号dが用いられ得る。 【効果】 複数プロセスの動的な排他制御を簡単なハー
ドウェアでかつ小さなオーバヘッドで効率良く実現でき
る。
を保持したデータパケットが命令実行部26に到着する
と、命令実行部26はセマフォフラグ記憶部34のセマ
フォフラグを読み出す。読み出したセマフォフラグが
「0」であれば、セマフォフラグを「1」にセットする
とともにデータパケットが保持している命令ノード番号
を新たな番号に更新することを許可する。そして、所望
の処理を実行する。読み出したセマフォフラグが「1」
であれば、データパケットが保持している命令ノード番
号を新たな番号に更新することを許可せずに、セマフォ
フラグが「0」になるまでデータパケットを循環パイプ
ライン14上で周回させながら待機させる。セマフォフ
ラグを「0」にリセットするには、セマフォリセット信
号cやセマフォリセット信号dが用いられ得る。 【効果】 複数プロセスの動的な排他制御を簡単なハー
ドウェアでかつ小さなオーバヘッドで効率良く実現でき
る。
Description
【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明はデータフロープロセサ
に関し、特にたとえばデータフローグラフによって記述
されるデータフロー型のプログラムを実行する並列計算
機に用いられる、データフロープロセサに関する。
に関し、特にたとえばデータフローグラフによって記述
されるデータフロー型のプログラムを実行する並列計算
機に用いられる、データフロープロセサに関する。
【0002】
【従来の技術】近年、並列計算機の実用化に向けて並列
処理向きのプロセサの研究開発が盛んである。特に、デ
ータフロープロセサは、データの依存関係に従って、効
率のよい並列処理が可能であるため、膨大な数のプロセ
サによる超並列処理に適したプロセサとして注目されて
いる。
処理向きのプロセサの研究開発が盛んである。特に、デ
ータフロープロセサは、データの依存関係に従って、効
率のよい並列処理が可能であるため、膨大な数のプロセ
サによる超並列処理に適したプロセサとして注目されて
いる。
【0003】データフロープロセサは、並列性の高いプ
ログラム中の多数の命令をパイプライン多重で処理する
際には、高い性能を発揮できる。しかし、1命令を実行
するための所要時間が一般に長いため、並列性の乏しい
逐次的なプログラムでは実効的な性能を高くできないと
いう問題点があった。このような問題点を解決するため
に本件出願人は、特開平2−240784号において新
たな「データ駆動型データ処理装置」を提案した。この
装置は、データフロープロセサにベクトル演算機能を備
え、並列性の低い繰り返し演算も高速に実行できる。す
なわち、このプロセサは基本的にはデータフロー型の実
行方式によって動作するが、内部に複数のレジスタを備
えていて、ベクトル演算命令の実行時には、このレジス
タ群を用いて制御駆動型の実行方式でベクトル演算を実
行する機能を備えている。
ログラム中の多数の命令をパイプライン多重で処理する
際には、高い性能を発揮できる。しかし、1命令を実行
するための所要時間が一般に長いため、並列性の乏しい
逐次的なプログラムでは実効的な性能を高くできないと
いう問題点があった。このような問題点を解決するため
に本件出願人は、特開平2−240784号において新
たな「データ駆動型データ処理装置」を提案した。この
装置は、データフロープロセサにベクトル演算機能を備
え、並列性の低い繰り返し演算も高速に実行できる。す
なわち、このプロセサは基本的にはデータフロー型の実
行方式によって動作するが、内部に複数のレジスタを備
えていて、ベクトル演算命令の実行時には、このレジス
タ群を用いて制御駆動型の実行方式でベクトル演算を実
行する機能を備えている。
【0004】データフロープロセサのように複数の処理
プロセスが多重に実行されるプロセサにおいては、上述
のような「レジスタ群」は複数プロセスの共有資源とな
り、或るプロセスにおいてそのレジスタを使用中に、他
のプロセスがレジスタの内容を書き換えることがないよ
うに、プロセスの実行を排他制御することが必要であ
る。
プロセスが多重に実行されるプロセサにおいては、上述
のような「レジスタ群」は複数プロセスの共有資源とな
り、或るプロセスにおいてそのレジスタを使用中に、他
のプロセスがレジスタの内容を書き換えることがないよ
うに、プロセスの実行を排他制御することが必要であ
る。
【0005】このような排他制御の方法として、予めプ
ログラマが複数のプロセスのアクセス要求が競合しない
ようにプログラミングを行う方法、またはコンパイラに
よって予め静的にアクセス要求が競合しないようにプロ
グラムを逐次化する方法などがある。
ログラマが複数のプロセスのアクセス要求が競合しない
ようにプログラミングを行う方法、またはコンパイラに
よって予め静的にアクセス要求が競合しないようにプロ
グラムを逐次化する方法などがある。
【0006】
【発明が解決しようとする課題】しかし、大規模な並列
処理においては、どのプロセスが時間的に同時に生起す
るかを予め静的に予測することは極めて困難であり、上
述のような方法で効率の良い排他制御を行うことは不可
能に近い。したがって、動的に、すなわちプログラム実
行中に排他制御を実現するメカニズムが必要となる。し
かし、従来のものでは、データフロープロセサでこのよ
うな動的な排他制御を効率良く実現することは困難であ
った。
処理においては、どのプロセスが時間的に同時に生起す
るかを予め静的に予測することは極めて困難であり、上
述のような方法で効率の良い排他制御を行うことは不可
能に近い。したがって、動的に、すなわちプログラム実
行中に排他制御を実現するメカニズムが必要となる。し
かし、従来のものでは、データフロープロセサでこのよ
うな動的な排他制御を効率良く実現することは困難であ
った。
【0007】それゆえに、この発明の主たる目的は、複
数プロセスの動的な排他制御を簡単なハードウェアで実
現できる、データフロープロセサを提供することであ
る。この発明のその他の目的は、複数プロセスの動的な
排他制御を小さなオーバヘッドで効率良く実現できる、
データフロープロセサを提供することである。
数プロセスの動的な排他制御を簡単なハードウェアで実
現できる、データフロープロセサを提供することであ
る。この発明のその他の目的は、複数プロセスの動的な
排他制御を小さなオーバヘッドで効率良く実現できる、
データフロープロセサを提供することである。
【0008】
【課題を解決するための手段】この発明は、命令ノード
番号および命令コードが付加されたデータパケットをデ
ータフロー型のプログラムに従って処理するデータフロ
ープロセサであって、複数のプロセスの処理を排他制御
するための少なくとも1ビットのセマフォフラグが格納
されるフラグ記憶手段、およびセマフォフラグをチェッ
クするための第1の命令を指示する命令コードを保持し
たデータパケットが到着したとき、フラグ記憶手段から
セマフォフラグを読み出し、読み出されたセマフォフラ
グが「0」であれば、フラグ記憶手段に「1」のセマフ
ォフラグをセットするとともにデータパケットが保持し
ている命令ノード番号を次の新たな番号に更新すること
を許可し、読み出されたセマフォフラグが「1」であれ
ば、データパケットが保持している命令ノード番号を新
たな番号に更新することを禁止し、セマフォフラグが
「0」になるまでデータパケットをデータフロープロセ
サ内部で待機させる第1命令実行手段を備える、データ
フロープロセサである。
番号および命令コードが付加されたデータパケットをデ
ータフロー型のプログラムに従って処理するデータフロ
ープロセサであって、複数のプロセスの処理を排他制御
するための少なくとも1ビットのセマフォフラグが格納
されるフラグ記憶手段、およびセマフォフラグをチェッ
クするための第1の命令を指示する命令コードを保持し
たデータパケットが到着したとき、フラグ記憶手段から
セマフォフラグを読み出し、読み出されたセマフォフラ
グが「0」であれば、フラグ記憶手段に「1」のセマフ
ォフラグをセットするとともにデータパケットが保持し
ている命令ノード番号を次の新たな番号に更新すること
を許可し、読み出されたセマフォフラグが「1」であれ
ば、データパケットが保持している命令ノード番号を新
たな番号に更新することを禁止し、セマフォフラグが
「0」になるまでデータパケットをデータフロープロセ
サ内部で待機させる第1命令実行手段を備える、データ
フロープロセサである。
【0009】
【作用】第1の命令、たとえばTEST&SET命令を
指示する命令コードを保持したデータパケットが第1命
令実行手段に到着すれば、第1命令実行手段はフラグ記
憶手段のセマフォフラグを読み出す。読み出されたセマ
フォフラグが「0」であれば、セマフォフラグを「1」
にセットするとともに、データパケットが保持している
命令ノード番号を新たな番号に更新することを許可す
る。そして、所望の処理を実行する。一方、読み出され
たセマフォフラグが「1」であれば、データパケットが
保持している命令ノード番号を新たな番号に更新するこ
とを許可せずに、セマフォフラグが「0」になるまでデ
ータフロープロセサ内部でデータパケットを待機させ
る。
指示する命令コードを保持したデータパケットが第1命
令実行手段に到着すれば、第1命令実行手段はフラグ記
憶手段のセマフォフラグを読み出す。読み出されたセマ
フォフラグが「0」であれば、セマフォフラグを「1」
にセットするとともに、データパケットが保持している
命令ノード番号を新たな番号に更新することを許可す
る。そして、所望の処理を実行する。一方、読み出され
たセマフォフラグが「1」であれば、データパケットが
保持している命令ノード番号を新たな番号に更新するこ
とを許可せずに、セマフォフラグが「0」になるまでデ
ータフロープロセサ内部でデータパケットを待機させ
る。
【0010】このとき、循環パイプラインを備えていれ
ばデータパケットを循環パイプライン上で周回させなが
ら待機させ、またパケットバッファ手段を備えていれば
データパケットをパケットバッファ内で待機させる。ま
た、第2の命令、たとえばCLR命令を実行する第2命
令実行手段を備えていれば、この第2命令実行手段にC
LR命令を指示するデータパケットが到着するとセマフ
ォフラグを「0」にリセットする。さらに、レジスタを
含む制御駆動型処理手段を備えていれば、そのレジスタ
を使用した一連の処理が終了すると同時に、制御駆動型
処理手段によってセマフォフラグを「0」にリセットす
る。
ばデータパケットを循環パイプライン上で周回させなが
ら待機させ、またパケットバッファ手段を備えていれば
データパケットをパケットバッファ内で待機させる。ま
た、第2の命令、たとえばCLR命令を実行する第2命
令実行手段を備えていれば、この第2命令実行手段にC
LR命令を指示するデータパケットが到着するとセマフ
ォフラグを「0」にリセットする。さらに、レジスタを
含む制御駆動型処理手段を備えていれば、そのレジスタ
を使用した一連の処理が終了すると同時に、制御駆動型
処理手段によってセマフォフラグを「0」にリセットす
る。
【0011】
【発明の効果】この発明によれば、フラグ記憶手段のセ
マフォフラグをチェックする第1命令実行手段を設ける
だけで、データフロープロセサにおける複数プロセスの
動的な排他制御を達成できるため、共有資源を利用する
ような場合、非常に効率的である。また、待たせるデー
タパケットの数が少ないので、そのような動的な排他制
御を、小さなオーバヘッドで効率良く実現することがで
きる。
マフォフラグをチェックする第1命令実行手段を設ける
だけで、データフロープロセサにおける複数プロセスの
動的な排他制御を達成できるため、共有資源を利用する
ような場合、非常に効率的である。また、待たせるデー
タパケットの数が少ないので、そのような動的な排他制
御を、小さなオーバヘッドで効率良く実現することがで
きる。
【0012】この発明の上述の目的,その他の目的,特
徴および利点は、図面を参照して行う以下の実施例の詳
細な説明から一層明らかとなろう。
徴および利点は、図面を参照して行う以下の実施例の詳
細な説明から一層明らかとなろう。
【0013】
【実施例】図1に示すこの実施例のデータフロープロセ
サ10は、たとえば1チップのLSIとして構成され、
通信制御部12および循環パイプライン14を含む。通
信制御部12は、4つの双方向通信リンクないしポート
北(N),東(E),南(S)および西(W)を有し、
循環パイプライン14と通信制御部12との間のデータ
の授受および他のデータフロープロセサまたはホスト計
算機(ともに図示せず)とのデータの授受を制御する。
すなわち、通信制御部12は、4つのポートN,E,S
およびWのいずれか1つから入力されたデータパケット
を、入力制御部16に入力するか、あるいは他のポート
に出力する。さらにまた、通信制御部12は、循環パイ
プライン14から出力されるデータパケットを4つのポ
ートN,E,SおよびWのいずれかに出力する。
サ10は、たとえば1チップのLSIとして構成され、
通信制御部12および循環パイプライン14を含む。通
信制御部12は、4つの双方向通信リンクないしポート
北(N),東(E),南(S)および西(W)を有し、
循環パイプライン14と通信制御部12との間のデータ
の授受および他のデータフロープロセサまたはホスト計
算機(ともに図示せず)とのデータの授受を制御する。
すなわち、通信制御部12は、4つのポートN,E,S
およびWのいずれか1つから入力されたデータパケット
を、入力制御部16に入力するか、あるいは他のポート
に出力する。さらにまた、通信制御部12は、循環パイ
プライン14から出力されるデータパケットを4つのポ
ートN,E,SおよびWのいずれかに出力する。
【0014】循環パイプライン14は、入力制御部1
6,キューメモリ18,命令フェッチ部20,出力制御
部22,待ち合わせ処理部24および命令実行部26を
循環的に結合して形成される。入力制御部16は、通信
制御部12からのデータパケットの入力を制御する。キ
ューメモリ18は、循環パイプライン14内のパケット
量の変動を吸収するバッファリング用のFIFOメモリ
である。命令フェッチ部20は、データパケットに命令
ノード番号や命令コードなどの命令情報をフェッチす
る。すなわち、命令フェッチ部20は、メモリ28内の
プログラムをメモリバス30を介して読み出して、デー
タパケットに命令コードおよび命令ノード番号を付加す
る。メモリ28には、データフローグラフの接続構造を
テーブル形式で表現したデータフロー型のプログラム,
およびプログラムで処理されるデータなどが格納され
る。出力制御部22は、通信制御部12へのデータパケ
ットの出力を制御する。待ち合わせ処理部24は、2項
演算のための2つのデータパケットを待ち合わせて、図
2の形式のデータパケットを生成する。命令実行部26
は、データパケットの命令コードで指示される命令を実
行する。
6,キューメモリ18,命令フェッチ部20,出力制御
部22,待ち合わせ処理部24および命令実行部26を
循環的に結合して形成される。入力制御部16は、通信
制御部12からのデータパケットの入力を制御する。キ
ューメモリ18は、循環パイプライン14内のパケット
量の変動を吸収するバッファリング用のFIFOメモリ
である。命令フェッチ部20は、データパケットに命令
ノード番号や命令コードなどの命令情報をフェッチす
る。すなわち、命令フェッチ部20は、メモリ28内の
プログラムをメモリバス30を介して読み出して、デー
タパケットに命令コードおよび命令ノード番号を付加す
る。メモリ28には、データフローグラフの接続構造を
テーブル形式で表現したデータフロー型のプログラム,
およびプログラムで処理されるデータなどが格納され
る。出力制御部22は、通信制御部12へのデータパケ
ットの出力を制御する。待ち合わせ処理部24は、2項
演算のための2つのデータパケットを待ち合わせて、図
2の形式のデータパケットを生成する。命令実行部26
は、データパケットの命令コードで指示される命令を実
行する。
【0015】さらに、データフロープロセサ10は、ベ
クトル演算制御部32およびセマフォフラグ記憶部34
を含む。ベクトル演算制御部32は、ベクトルデータの
アドレスレジスタや、ベクトル長レジスタなどのレジス
タ群を含み、ベクトル演算命令の起動によって、これら
のレジスタを用いながらメモリ28内のベクトルデータ
に対して繰り返し演算を施す。レジスタ群は、複数のプ
ロセスの共有資源である。セマフォフラグ記憶部34に
は、プロセスの排他制御を実現するためたとえば1ビッ
トのセマフォフラグが格納され、システムの初期化時
に、このセマフォフラグは「0」にリセットされる。セ
マフォフラグ記憶部34から命令実行部26へは、セマ
フォ読み出し信号aが与えられる。命令実行部26から
セマフォフラグ記憶部34へは、セマフォセット信号b
およびセマフォリセット信号cが与えられる。また、ベ
クトル演算制御部32からセマフォフラグ記憶部34へ
は、セマフォリセット信号dが与えられる。
クトル演算制御部32およびセマフォフラグ記憶部34
を含む。ベクトル演算制御部32は、ベクトルデータの
アドレスレジスタや、ベクトル長レジスタなどのレジス
タ群を含み、ベクトル演算命令の起動によって、これら
のレジスタを用いながらメモリ28内のベクトルデータ
に対して繰り返し演算を施す。レジスタ群は、複数のプ
ロセスの共有資源である。セマフォフラグ記憶部34に
は、プロセスの排他制御を実現するためたとえば1ビッ
トのセマフォフラグが格納され、システムの初期化時
に、このセマフォフラグは「0」にリセットされる。セ
マフォフラグ記憶部34から命令実行部26へは、セマ
フォ読み出し信号aが与えられる。命令実行部26から
セマフォフラグ記憶部34へは、セマフォセット信号b
およびセマフォリセット信号cが与えられる。また、ベ
クトル演算制御部32からセマフォフラグ記憶部34へ
は、セマフォリセット信号dが与えられる。
【0016】このようなデータフロープロセサ10で処
理されるデータパケットには、図2に示すように、第1
の命令であるTEST&SET命令の再実行を示す
「再」フラグの格納フィールド(以下、単に「再」フィ
ールドという)35が設けられている。TEST&SE
T命令の再実行時では、この「再」フィールド35の再
フラグは「1」であり、通常のデータフロー型の実行で
は、この「再」フラグは「0」である。
理されるデータパケットには、図2に示すように、第1
の命令であるTEST&SET命令の再実行を示す
「再」フラグの格納フィールド(以下、単に「再」フィ
ールドという)35が設けられている。TEST&SE
T命令の再実行時では、この「再」フィールド35の再
フラグは「1」であり、通常のデータフロー型の実行で
は、この「再」フラグは「0」である。
【0017】動作において、命令実行部26に、TES
T&SET命令の命令コードを保持したデータパケット
が到着すると、セマフォ読み出し信号aを用いてセマフ
ォフラグを読み出す。読み出されたセマフォフラグが
「0」であれば、セマフォセット信号bを用いてセマフ
ォフラグを「1」にセットし、データパケットの「再」
フラグを「0」にリセットして、入力制御部16に向け
てそのデータパケットを出力する。一方、読み出したセ
マフォフラグが「1」の場合には、データパケットの
「再」フラグを「1」にセットして、入力制御部16に
向けてそのデータパケットを出力する。
T&SET命令の命令コードを保持したデータパケット
が到着すると、セマフォ読み出し信号aを用いてセマフ
ォフラグを読み出す。読み出されたセマフォフラグが
「0」であれば、セマフォセット信号bを用いてセマフ
ォフラグを「1」にセットし、データパケットの「再」
フラグを「0」にリセットして、入力制御部16に向け
てそのデータパケットを出力する。一方、読み出したセ
マフォフラグが「1」の場合には、データパケットの
「再」フラグを「1」にセットして、入力制御部16に
向けてそのデータパケットを出力する。
【0018】そして、TEST&SET命令によって、
セマフォフラグのセットに成功(セマフォフラグを
「1」にセット)した場合には、「再」フラグが「0」
のデータパケットは、入力制御部16からキューメモリ
18を介して命令フェッチ部20に送られ、命令フェッ
チ部20において通常の処理が行われる。すなわち、
「再」フラグが「0」のデータパケットには、新たな命
令コードや命令ノード番号が付加されて、次の命令の実
行へと進むことができる。一方、セマフォフラグのセッ
トに失敗した「再」フラグが「1」のデータパケット
は、循環パイプライン14上の命令実行部26を除く全
ての処理要素を、何も処理が行われずに通過し、命令実
行部26におけるTEST&SET命令の再実行のみが
行われる。すなわち、セマフォフラグのセットに失敗し
たデータパケットは、セマフォフラグが再び「0」にリ
セットされるのを、循環パイプライン14内を周回しな
がら待つことになる。
セマフォフラグのセットに成功(セマフォフラグを
「1」にセット)した場合には、「再」フラグが「0」
のデータパケットは、入力制御部16からキューメモリ
18を介して命令フェッチ部20に送られ、命令フェッ
チ部20において通常の処理が行われる。すなわち、
「再」フラグが「0」のデータパケットには、新たな命
令コードや命令ノード番号が付加されて、次の命令の実
行へと進むことができる。一方、セマフォフラグのセッ
トに失敗した「再」フラグが「1」のデータパケット
は、循環パイプライン14上の命令実行部26を除く全
ての処理要素を、何も処理が行われずに通過し、命令実
行部26におけるTEST&SET命令の再実行のみが
行われる。すなわち、セマフォフラグのセットに失敗し
たデータパケットは、セマフォフラグが再び「0」にリ
セットされるのを、循環パイプライン14内を周回しな
がら待つことになる。
【0019】このようなメカニズムによって、TEST
&SET命令の実行時にセマフォフラグのセットに成功
した処理プロセスの実行のみが進み、TEST&SET
命令を含んだ他の処理プロセスは、セマフォフラグが
「0」にリセットされるまで、処理を待たされる。TE
ST&SET命令の実行時にセマフォフラグのセットに
成功した処理プロセスの実行が進み、そのプロセスがセ
マフォフラグの第2の命令であるリセット命令、すなわ
ちCLR命令を指示する命令コードを保持したデータパ
ケットを生成すると、そのデータパケットの到着によっ
て命令実行部26は、セマフォリセット信号cを用いて
セマフォフラグを「0」にリセットする。然るべき後
に、TEST&SET命令の実行時にセマフォフラグの
セットに失敗したデータパケットが命令実行部26に到
着すると、その時点でセマフォフラグのセットに成功
し、その処理プロセスの実行が再開される。
&SET命令の実行時にセマフォフラグのセットに成功
した処理プロセスの実行のみが進み、TEST&SET
命令を含んだ他の処理プロセスは、セマフォフラグが
「0」にリセットされるまで、処理を待たされる。TE
ST&SET命令の実行時にセマフォフラグのセットに
成功した処理プロセスの実行が進み、そのプロセスがセ
マフォフラグの第2の命令であるリセット命令、すなわ
ちCLR命令を指示する命令コードを保持したデータパ
ケットを生成すると、そのデータパケットの到着によっ
て命令実行部26は、セマフォリセット信号cを用いて
セマフォフラグを「0」にリセットする。然るべき後
に、TEST&SET命令の実行時にセマフォフラグの
セットに失敗したデータパケットが命令実行部26に到
着すると、その時点でセマフォフラグのセットに成功
し、その処理プロセスの実行が再開される。
【0020】ここで図3に、このようなメカニズムによ
って実行されるプログラムの一例を示す。図3は、ベク
トル演算のためのアドレスレジスタなどのレジスタ設定
処理およびベクトル演算処理を排他制御するプログラム
である。すなわち、プロセスAおよびプロセスBのそれ
ぞれについて、ステップS1でTEST&SET命令を
実行し、ステップS3でベクトル演算のためのレジスタ
設定処理をし、ステップS5でベクトル演算を実行し、
ステップS7でセマフォフラグを「0」にリセットし、
その後次の処理へ移る。
って実行されるプログラムの一例を示す。図3は、ベク
トル演算のためのアドレスレジスタなどのレジスタ設定
処理およびベクトル演算処理を排他制御するプログラム
である。すなわち、プロセスAおよびプロセスBのそれ
ぞれについて、ステップS1でTEST&SET命令を
実行し、ステップS3でベクトル演算のためのレジスタ
設定処理をし、ステップS5でベクトル演算を実行し、
ステップS7でセマフォフラグを「0」にリセットし、
その後次の処理へ移る。
【0021】この実施例のメカニズムによって、図3に
示すように、排他制御する部分(すなわちステップS3
およびS5)の前後に、それぞれTEST&SET命令
とセマフォフラグのリセット命令とを挿入すれば、実行
時に自動的に、動的な排他制御を実現できる。このた
め、プログラムやコンパイラによって静的にプロセスを
逐次化する必要はない。また、動的に、先行しているプ
ロセスの実行が先に進み、遅れているプロセスの実行が
自然な形で待たされるため、静的に逐次化する方式に比
べて、処理効率を高くできる。また、上述のような排他
制御のために、処理の継続の禁止によって待たされるデ
ータパケットの数は、1プロセスにつき僅か1パケット
すなわち「再」フラグが「1」のデータパケットだけで
あり、処理オーバヘッドも小さくできる。
示すように、排他制御する部分(すなわちステップS3
およびS5)の前後に、それぞれTEST&SET命令
とセマフォフラグのリセット命令とを挿入すれば、実行
時に自動的に、動的な排他制御を実現できる。このた
め、プログラムやコンパイラによって静的にプロセスを
逐次化する必要はない。また、動的に、先行しているプ
ロセスの実行が先に進み、遅れているプロセスの実行が
自然な形で待たされるため、静的に逐次化する方式に比
べて、処理効率を高くできる。また、上述のような排他
制御のために、処理の継続の禁止によって待たされるデ
ータパケットの数は、1プロセスにつき僅か1パケット
すなわち「再」フラグが「1」のデータパケットだけで
あり、処理オーバヘッドも小さくできる。
【0022】また、図1の実施例におけるセマフォリセ
ット信号dは、上述のメカニズムをさらに改良するため
に追加されたものである。すなわち、ベクトル演算制御
部32でのレジスタでベクトル演算命令の実行が終了す
ると同時に、このセマフォリセット信号dによって、セ
マフォフラグは自動的に「0」にリセットされる。これ
によって、図3とは異なり、図4に示すプログラムのよ
うに、セマフォリセットの処理を挿入する必要がなくな
り、プログラム生成効率および処理効率をさらに改善で
きる。
ット信号dは、上述のメカニズムをさらに改良するため
に追加されたものである。すなわち、ベクトル演算制御
部32でのレジスタでベクトル演算命令の実行が終了す
ると同時に、このセマフォリセット信号dによって、セ
マフォフラグは自動的に「0」にリセットされる。これ
によって、図3とは異なり、図4に示すプログラムのよ
うに、セマフォリセットの処理を挿入する必要がなくな
り、プログラム生成効率および処理効率をさらに改善で
きる。
【0023】しかしながら、図1に示すデータフロープ
ロセサ10では、セマフォフラグのセットに失敗したデ
ータパケットが循環パイプライン14上を周回するた
め、待ちプロセスの数が極端に大きくなると、やはり処
理効率がかなり劣化する恐れがある。また、図1に示す
データフロープロセサ10では、データパケットに
「再」フラグを格納する「再」フィールド35を設けな
ければならず、データパケットのサイズが大きくなって
しまうという問題点も残されている。これを改善した実
施例が図5に示すデータフロープロセサ10′である。
ロセサ10では、セマフォフラグのセットに失敗したデ
ータパケットが循環パイプライン14上を周回するた
め、待ちプロセスの数が極端に大きくなると、やはり処
理効率がかなり劣化する恐れがある。また、図1に示す
データフロープロセサ10では、データパケットに
「再」フラグを格納する「再」フィールド35を設けな
ければならず、データパケットのサイズが大きくなって
しまうという問題点も残されている。これを改善した実
施例が図5に示すデータフロープロセサ10′である。
【0024】図5に示すデータフロープロセサ10′で
は、パケットバッファ36,パケット書き込みバス38
およびパケット読み出しバス40がさらに付加されてい
る。その他の構成については図1の実施例と同様に構成
されるので、図1と同一の参照番号を付すことによって
その説明は省略する。このデータフロープロセサ10′
では、セマフォフラグのセットに失敗したデータパケッ
トをパケット書き込みバス38を介してパケットバッフ
ァ36に格納し、循環パイプライン14上の通常のデー
タパケットと区別して待機させる。これによって、デー
タパケットに「再」フィールド35を設ける必要がなく
なる。また、セマフォ読み出し信号aによってセマフォ
フラグの情報は、常にパケットバッファ36に入力され
ている。したがって、然るべき後に、セマフォフラグが
「0」にリセットされると、パケットバッファ36内で
待機していたデータパケットがパケット読み出しバス4
0を介し循環パイプライン14上に戻され、プロセス実
行の再開が許可される。このようなデータフロープロセ
サ10′によれば、循環パイプライン20における処理
効率の低下が生じないため、さらに効率の良い排他制御
を実現できる。
は、パケットバッファ36,パケット書き込みバス38
およびパケット読み出しバス40がさらに付加されてい
る。その他の構成については図1の実施例と同様に構成
されるので、図1と同一の参照番号を付すことによって
その説明は省略する。このデータフロープロセサ10′
では、セマフォフラグのセットに失敗したデータパケッ
トをパケット書き込みバス38を介してパケットバッフ
ァ36に格納し、循環パイプライン14上の通常のデー
タパケットと区別して待機させる。これによって、デー
タパケットに「再」フィールド35を設ける必要がなく
なる。また、セマフォ読み出し信号aによってセマフォ
フラグの情報は、常にパケットバッファ36に入力され
ている。したがって、然るべき後に、セマフォフラグが
「0」にリセットされると、パケットバッファ36内で
待機していたデータパケットがパケット読み出しバス4
0を介し循環パイプライン14上に戻され、プロセス実
行の再開が許可される。このようなデータフロープロセ
サ10′によれば、循環パイプライン20における処理
効率の低下が生じないため、さらに効率の良い排他制御
を実現できる。
【0025】なお、上述の実施例では、循環パイプライ
ン14を有するデータフロープロセサについて述べたが
これに限定されず、この発明は、循環パイプラインを有
さないデータフロープロセサにも適用し得る。
ン14を有するデータフロープロセサについて述べたが
これに限定されず、この発明は、循環パイプラインを有
さないデータフロープロセサにも適用し得る。
【図1】この発明の一実施例を示すブロック図である。
【図2】図1実施例によって処理されるデータパケット
の構成を示す図解図である。
の構成を示す図解図である。
【図3】図1実施例の動作を模式的に示すデータフロー
グラフである。
グラフである。
【図4】図1実施例の動作を模式的に示す他のデータフ
ローグラフである。
ローグラフである。
【図5】この発明の他の実施例を示すブロック図であ
る。
る。
10,10′ …データフロープロセサ 12 …通信制御部 14 …循環パイプライン 16 …入力制御部 18 …キューメモリ 20 …命令フェッチ部 22 …出力制御部 24 …待ち合わせ処理部 26 …命令実行部 28 …メモリ 30 …メモリバス 32 …ベクトル演算制御部 34 …セマフォフラグ記憶部 36 …パケットバッファ 38 …パケット書き込みバス 40 …パケット読み出しバス a …セマフォ読み出し信号 b …セマフォセット信号 c,d …セマフォリセット信号
Claims (5)
- 【請求項1】命令ノード番号および命令コードが付加さ
れたデータパケットをデータフロー型のプログラムに従
って処理するデータフロープロセサであって、 複数のプロセスの処理を排他制御するための少なくとも
1ビットのセマフォフラグが格納されるフラグ記憶手
段、および前記セマフォフラグをチェックするための第
1の命令を指示する命令コードを保持したデータパケッ
トが到着したとき、前記フラグ記憶手段から前記セマフ
ォフラグを読み出し、前記読み出されたセマフォフラグ
が「0」であれば、前記フラグ記憶手段に「1」のセマ
フォフラグをセットするとともに前記データパケットが
保持している命令ノード番号を次の新たな番号に更新す
ることを許可し、前記読み出されたセマフォフラグが
「1」であれば、前記データパケットが保持している命
令ノード番号を新たな番号に更新することを禁止し、前
記セマフォフラグが「0」になるまで前記データパケッ
トをデータフロープロセサ内部で待機させる第1命令実
行手段を備える、データフロープロセサ。 - 【請求項2】前記第1命令実行手段を含む循環パイプラ
インを備え、 前記第1命令実行手段で前記第1の命令を実行して、前
記読み出されたセマフォフラグが「1」であれば前記デ
ータパケットを前記循環パイプライン上で周回させなが
ら待機させる、請求項1記載のデータフロープロセサ。 - 【請求項3】前記第1命令実行手段を含む循環パイプラ
インおよび前記データパケットを待機させるためのパケ
ットバッファ手段を備え、 前記第1命令実行手段で前記第1の命令を実行して、前
記読み出されたセマフォフラグが「1」であれば、前記
データパケットを前記循環パイプラインから前記パケッ
トバッファに転送し前記パケットバッファ手段内で前記
データパケットを待機させる、請求項1記載のデータフ
ロープロセサ。 - 【請求項4】前記セマフォフラグを「0」にリセットす
る第2の命令を実行する第2命令実行手段をさらに備
え、 前記第2の命令を指示するデータパケットが前記第2命
令実行手段に到着すると、前記第2命令実行手段によっ
て前記フラグ記憶手段のセマフォフラグを「0」にリセ
ットする、請求項1ないし3のいずれかに記載のデータ
フロープロセサ。 - 【請求項5】複数のプロセスの共有資源である少なくと
も1つのレジスタを含む制御駆動型処理手段をさらに備
え、 前記レジスタを使用した一連の処理が終了すると同時に
前記制御駆動型処理手段によって前記フラグ記憶手段の
セマフォフラグを「0」にリセットする、請求項1ない
し3のいずれかに記載のデータフロープロセサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5213945A JPH0764960A (ja) | 1993-08-30 | 1993-08-30 | データフロープロセサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5213945A JPH0764960A (ja) | 1993-08-30 | 1993-08-30 | データフロープロセサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0764960A true JPH0764960A (ja) | 1995-03-10 |
Family
ID=16647657
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5213945A Withdrawn JPH0764960A (ja) | 1993-08-30 | 1993-08-30 | データフロープロセサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0764960A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000028547A1 (fr) * | 1998-11-05 | 2000-05-18 | Hitachi, Ltd. | Dispositif de stockage a semi-conducteur et systeme de test |
JP2011125498A (ja) * | 2009-12-17 | 2011-06-30 | Kyoraku Sangyo Kk | 遊技機、主制御部、主制御基板、中間部、周辺基板、認証方法及び認証プログラム |
JP2011125501A (ja) * | 2009-12-17 | 2011-06-30 | Kyoraku Sangyo Kk | 遊技機、主制御部、主制御基板、後段部、周辺基板、認証方法及び認証プログラム |
-
1993
- 1993-08-30 JP JP5213945A patent/JPH0764960A/ja not_active Withdrawn
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000028547A1 (fr) * | 1998-11-05 | 2000-05-18 | Hitachi, Ltd. | Dispositif de stockage a semi-conducteur et systeme de test |
JP2011125498A (ja) * | 2009-12-17 | 2011-06-30 | Kyoraku Sangyo Kk | 遊技機、主制御部、主制御基板、中間部、周辺基板、認証方法及び認証プログラム |
JP2011125501A (ja) * | 2009-12-17 | 2011-06-30 | Kyoraku Sangyo Kk | 遊技機、主制御部、主制御基板、後段部、周辺基板、認証方法及び認証プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6671827B2 (en) | Journaling for parallel hardware threads in multithreaded processor | |
US6981129B1 (en) | Breaking replay dependency loops in a processor using a rescheduled replay queue | |
US7020871B2 (en) | Breakpoint method for parallel hardware threads in multithreaded processor | |
US6877086B1 (en) | Method and apparatus for rescheduling multiple micro-operations in a processor using a replay queue and a counter | |
US7650605B2 (en) | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors | |
US6944850B2 (en) | Hop method for stepping parallel hardware threads | |
KR100422491B1 (ko) | 내장형 프로세서 복합체, 네트워크 프로세싱 시스템 및인스트럭션 실행 제어 방법 | |
US6934951B2 (en) | Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section | |
JP3120152B2 (ja) | コンピューターシステム | |
JP4292198B2 (ja) | 実行スレッドをグループ化するための方法 | |
US5680338A (en) | Method and system for vector processing utilizing selected vector elements | |
JPH0766329B2 (ja) | 情報処理装置 | |
US8387061B2 (en) | Logic for synchronizing multiple tasks at multiple locations in an instruction stream | |
US9442759B2 (en) | Concurrent execution of independent streams in multi-channel time slice groups | |
US5499348A (en) | Digital processor capable of concurrently executing external memory access and internal instructions | |
JPH0764960A (ja) | データフロープロセサ | |
JP4465081B2 (ja) | Vliwプロセッサにおける効率的なサブ命令エミュレーション | |
US20040034858A1 (en) | Programming a multi-threaded processor | |
EP1393162A2 (en) | Method and system for tracking and recycling physical register assignment | |
JP2003167726A (ja) | コプロセッサ装置およびデータ転送を容易にするための方法 | |
JP2744152B2 (ja) | データ駆動型データ処理装置 | |
US9141438B2 (en) | Logic for synchronizing multiple tasks | |
JP2001134449A (ja) | データ処理装置とその制御方法 | |
JPH0340169A (ja) | 多重プロセツサシステムおよび複数の処理装置を制御する方法 | |
JPH06162068A (ja) | ベクトル処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20040126 |