JPH0567222A - 関数呼出し処理方式 - Google Patents
関数呼出し処理方式Info
- Publication number
- JPH0567222A JPH0567222A JP22686091A JP22686091A JPH0567222A JP H0567222 A JPH0567222 A JP H0567222A JP 22686091 A JP22686091 A JP 22686091A JP 22686091 A JP22686091 A JP 22686091A JP H0567222 A JPH0567222 A JP H0567222A
- Authority
- JP
- Japan
- Prior art keywords
- output
- instruction
- input
- token
- processing device
- 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.)
- Pending
Links
Landscapes
- Exchange Systems With Centralized Control (AREA)
Abstract
(57)【要約】
【目的】静的データフローコンピュータ上で実行できる
データフローグラフに展開する関数呼出し処理方式にお
いて、同一関数を異なる呼出し間で共用できるようにし
てメモリスペースを削減する。 【構成】関数を呼ぶ側の装置Aが、自らが存在するプロ
セッサ番号と戻りリンクアドレスの情報を持つアドレス
テーブル(100)から2つのトークンを呼出し、関数
が呼ばれる側装置Bへ呼出し要求トークンとして送出す
ることにより呼出しを要求する。装置B(呼ばれる側)
では、同期命令(103)上にあらかじめ格納された複
数のトークンにより、装置B(呼ばれる側)が一時に受
入れられる呼出しの回数を制御する。呼出し要求トーク
ンはその後2つのセット命令(セット命令A(10
5)、セット命令B(106))を通じ、装置B(呼ば
れる側)内の第1外部出力命令(107)と戻り値送出
部(108)の出力先情報の書換えに使用されること
で、戻り値トークンを正確に装置A(呼ぶ側)へ返送す
る。
データフローグラフに展開する関数呼出し処理方式にお
いて、同一関数を異なる呼出し間で共用できるようにし
てメモリスペースを削減する。 【構成】関数を呼ぶ側の装置Aが、自らが存在するプロ
セッサ番号と戻りリンクアドレスの情報を持つアドレス
テーブル(100)から2つのトークンを呼出し、関数
が呼ばれる側装置Bへ呼出し要求トークンとして送出す
ることにより呼出しを要求する。装置B(呼ばれる側)
では、同期命令(103)上にあらかじめ格納された複
数のトークンにより、装置B(呼ばれる側)が一時に受
入れられる呼出しの回数を制御する。呼出し要求トーク
ンはその後2つのセット命令(セット命令A(10
5)、セット命令B(106))を通じ、装置B(呼ば
れる側)内の第1外部出力命令(107)と戻り値送出
部(108)の出力先情報の書換えに使用されること
で、戻り値トークンを正確に装置A(呼ぶ側)へ返送す
る。
Description
【0001】
【産業上の利用分野】本発明は関数呼出し処理方式に関
する。
する。
【0002】
【従来の技術】従来静的データフロー方式のプロセッサ
としては特開昭58−70360号公報に記載されてい
る技術があり、それを製品化したものとして日本電気株
式会社製のデータフロープロセッサμPD7281があ
る。
としては特開昭58−70360号公報に記載されてい
る技術があり、それを製品化したものとして日本電気株
式会社製のデータフロープロセッサμPD7281があ
る。
【0003】このデータフロープロセッサμPD728
1は図4に示されるような構成を有している。外部バス
からデータフロープロセッサμPD7281に入力され
るデータの単位となるトークンは、図5(a)に示すよ
うに、データ値DATAと、入力後にリンクテーブル9
2を参照するためのリンクテーブルアドレスIDとを持
つ。
1は図4に示されるような構成を有している。外部バス
からデータフロープロセッサμPD7281に入力され
るデータの単位となるトークンは、図5(a)に示すよ
うに、データ値DATAと、入力後にリンクテーブル9
2を参照するためのリンクテーブルアドレスIDとを持
つ。
【0004】入力されたトークンは図5(b)に示され
るようにそのID値によりリンクテーブル92を参照
し、そこでファンクションテーブル93を参照するため
のファンクションテーブルアドレスFTAと、ファンク
ションテーブル内でデータメモリの管理情報の参照・更
新を指示する1ビットの情報FTRC、それに次回にリ
ンクテーブル92を参照するためのリンクテーブルアド
レスID’とを得た後に、ファンクションテーブル93
へ送られる。
るようにそのID値によりリンクテーブル92を参照
し、そこでファンクションテーブル93を参照するため
のファンクションテーブルアドレスFTAと、ファンク
ションテーブル内でデータメモリの管理情報の参照・更
新を指示する1ビットの情報FTRC、それに次回にリ
ンクテーブル92を参照するためのリンクテーブルアド
レスID’とを得た後に、ファンクションテーブル93
へ送られる。
【0005】ファンクションテーブル93へ送られたト
ークンは、図5(c)に示されるように、ファンクショ
ンテーブル93において、そのFTAによる参照を行う
とともに必要に応じフロー制御が行われ、到着トークン
のIDを変更する処理、あるいはプロセッシングユニッ
ト96での処理内容を示すコードFTLを得る処理、あ
るいはデータメモリ94へのアクセスアドレスDMAを
得る処理が施される。このファンクションテーブル93
において行われる処理はID変更処理に対応する分流命
令(count命令、pickup命令)と、DMA生
成処理に対応するメモリリード命令(rdcycs命
令、wrcycs命令、queue命令)の動作を行
う。
ークンは、図5(c)に示されるように、ファンクショ
ンテーブル93において、そのFTAによる参照を行う
とともに必要に応じフロー制御が行われ、到着トークン
のIDを変更する処理、あるいはプロセッシングユニッ
ト96での処理内容を示すコードFTLを得る処理、あ
るいはデータメモリ94へのアクセスアドレスDMAを
得る処理が施される。このファンクションテーブル93
において行われる処理はID変更処理に対応する分流命
令(count命令、pickup命令)と、DMA生
成処理に対応するメモリリード命令(rdcycs命
令、wrcycs命令、queue命令)の動作を行
う。
【0006】その後、トークンはデータメモリ94に送
られ、DMAに基づきそこで必要に応じ2項演算の相手
方のオペランドの待合わせ、あるいは定数演算のための
定数読み出しを行った後に、キューメモリ95へ向う。
図5(d)にその時点でのトークンフォーマットを示
す。ここでは、読み出されるデータには制御ビットC及
び符号ビットが付加される。キューメモリ95はプロセ
ッシングユニット96が前のトークンを処理中で次のト
ークンを入力できない時に、次のトークンを一時保持す
るためのメモリである。プロセンシングユニット96が
ビジーでない場合では、キューメモリ95からプロセッ
シングユニット96に送られたトークンは、そこでその
FTLに応じ整数データの加減演算、論理演算、シフ
ト、比較、ビット反転、プライオリティエンコーディン
グ、分流、数値発生、コピー、、内部レジスタを利用し
た演算、出力変換などのうちの一つの処理を受ける。こ
のプロセッシングユニット96で行われる処理は、コピ
ー処理に対応するトークン生成命令(copybk命
令、copym命令、setctl命令)、そして出力
変換処理に対応する外部出力命令(out1命令)の動
作を行う。
られ、DMAに基づきそこで必要に応じ2項演算の相手
方のオペランドの待合わせ、あるいは定数演算のための
定数読み出しを行った後に、キューメモリ95へ向う。
図5(d)にその時点でのトークンフォーマットを示
す。ここでは、読み出されるデータには制御ビットC及
び符号ビットが付加される。キューメモリ95はプロセ
ッシングユニット96が前のトークンを処理中で次のト
ークンを入力できない時に、次のトークンを一時保持す
るためのメモリである。プロセンシングユニット96が
ビジーでない場合では、キューメモリ95からプロセッ
シングユニット96に送られたトークンは、そこでその
FTLに応じ整数データの加減演算、論理演算、シフ
ト、比較、ビット反転、プライオリティエンコーディン
グ、分流、数値発生、コピー、、内部レジスタを利用し
た演算、出力変換などのうちの一つの処理を受ける。こ
のプロセッシングユニット96で行われる処理は、コピ
ー処理に対応するトークン生成命令(copybk命
令、copym命令、setctl命令)、そして出力
変換処理に対応する外部出力命令(out1命令)の動
作を行う。
【0007】処理を受けたトークンは、リンクテーブル
92に再び送られ、そのリンクテーブルアドレスにより
参照を行う。トークンを外部バスへ出力されるべき場合
では、キューメモリ95の出口においてトークンの持つ
FTAが出力を示すものであることを検出するとそのト
ークンをトークン出力部97へ送り、そこで外部バスト
ークンの形に変形された後に、外部バスへ出力される。
以下同様にして外部バス出力命令が実行されるまで内部
のリンクバスを回り、そのデータ値に対し必要な処理を
受ける。
92に再び送られ、そのリンクテーブルアドレスにより
参照を行う。トークンを外部バスへ出力されるべき場合
では、キューメモリ95の出口においてトークンの持つ
FTAが出力を示すものであることを検出するとそのト
ークンをトークン出力部97へ送り、そこで外部バスト
ークンの形に変形された後に、外部バスへ出力される。
以下同様にして外部バス出力命令が実行されるまで内部
のリンクバスを回り、そのデータ値に対し必要な処理を
受ける。
【0008】こうしたデータフロープロセッサμPD7
281上でのプログラミングでは、上記のプロセッシン
グユニット96での命令がそれぞれ一つのノードに相当
するようなデータフローグラフを書き、そのクラフに対
し、トークンを流すことによりプログラムをデータフロ
ープロセッサμPD7281上で実行させる。グラフ上
のリンクは、番号の形で上記リンクテーブル92内に置
かれ、また、各ノードを表わす命令は、上記ファンクシ
ョンテーブル93内に置かれる。
281上でのプログラミングでは、上記のプロセッシン
グユニット96での命令がそれぞれ一つのノードに相当
するようなデータフローグラフを書き、そのクラフに対
し、トークンを流すことによりプログラムをデータフロ
ープロセッサμPD7281上で実行させる。グラフ上
のリンクは、番号の形で上記リンクテーブル92内に置
かれ、また、各ノードを表わす命令は、上記ファンクシ
ョンテーブル93内に置かれる。
【0009】そこで、従来の関数呼出し処理方式は、デ
ータフロープロセッサμPD7281を使用して、関数
が呼ばれる度にその関数のデータフローグラフを、呼ば
れた場所に対応して展開して使用するという方式が使用
されていた。
ータフロープロセッサμPD7281を使用して、関数
が呼ばれる度にその関数のデータフローグラフを、呼ば
れた場所に対応して展開して使用するという方式が使用
されていた。
【0010】図3は従来の関数呼出し処理方式の2つの
例を示す図であり、図3の(a)は同一関数が一回呼ば
れた場合、図3(b)は同一関数が3回呼ばれた場合
の、呼ばれた関数のデータフローグラフをその都度展開
している様子を示す図である。
例を示す図であり、図3の(a)は同一関数が一回呼ば
れた場合、図3(b)は同一関数が3回呼ばれた場合
の、呼ばれた関数のデータフローグラフをその都度展開
している様子を示す図である。
【0011】
【発明が解決しようとする課題】上述した従来の関数呼
出し処理方式では、図3からわかるように、呼出された
関数を呼出しの都度グラフ展開しなければならず、その
ため、頻繁な関数呼出しを行うプログラムは、全体とし
て非常に大きなデータフローグラフに展開されるという
問題がある。
出し処理方式では、図3からわかるように、呼出された
関数を呼出しの都度グラフ展開しなければならず、その
ため、頻繁な関数呼出しを行うプログラムは、全体とし
て非常に大きなデータフローグラフに展開されるという
問題がある。
【0012】本発明は、静的なデータフローコンピュー
タ上での関数呼出し処理の実現において、同一関数のデ
ータフローグラフを、異なる呼出し間で共同に使用でき
るようにするための、関数呼出し処理方式を提供するこ
とを目的とする。
タ上での関数呼出し処理の実現において、同一関数のデ
ータフローグラフを、異なる呼出し間で共同に使用でき
るようにするための、関数呼出し処理方式を提供するこ
とを目的とする。
【0013】
【課題を解決するための手段】本第1の発明の関数呼出
し処理方式は、第1のデータフロープロセッサを有して
関数を呼ぶ第1の処理装置と、第2のデータフロープロ
セッサと複数の関数を記憶するライブラリーとを有して
前記第1の処理装置から呼ばれた関数を送出する第2の
処理装置とを備えて成る関数呼出し処理方式において、
前記第1の処理装置は前記第1の処理装置内の前記第1
のデータフロープロセッサのプロセッサ番号と戻り値の
ための戻り先リンクアドレスとを連続に格納したメモリ
上のアドレステーブルと、関数呼出しの実行を開始させ
る2つのトークンが入力されるとメモリリード命令によ
って前記アドレステーブルから前記プロセッサ番号と前
記リンクアドレスとを読み出し、外部出力命令によって
前記メモリリード命令の出力を呼出し要求トークンとし
て前記第2の処理装置へ出力し、前記第2の処理装置か
ら出力された呼出し受入れトークンを第1のトークン生
成命令によって入力し、前記第1の処理装置からのパラ
メタトークンを入力とし、且つ前記第1のトークン生成
命令の出力を入力として両者の同期をとるための同期付
きパラメタ送出部とを有し、前記第2の処理装置は同期
命令によって初期状態では2つのトークンをB入力に受
入れ、前記呼出し要求トークンをA入力に受入れ、第2
の生成命令によって呼ばれる関数の実行終了を表わすト
ークンを入力とし前記同期命令のB入力に対し一時に2
つのトークンを出力し、分流命令によって前記同期命令
の出力をセット命令Aとセット命令Bとの2つのセット
命令に分配し、前記セット命令Aにより出力先プロセッ
サ番号を書換え、前記セット命令Bにより出力先プロセ
ッサ内リンクアドレスを書換え、これらの書換えの後に
第1の外部出力命令によって前記セット命令Bの出力を
入力として前記呼出し受入れトークンを前記第1の処理
装置へ出力し、前記セット命令Aにより出力先プロセッ
サ番号が書換えられ、また前記セット命令Bにより出力
先プロセッサ内リンクアドレスが書換えられ、これらの
書替えられた後に、前記第2の処理装置からの戻り値を
入力し、前記第1の処理装置へ戻り値トークンとして出
力する戻り値送出部を有している。本第2の発明の関数
呼出し処理方式は、第1のデータフロープロセッサを有
して関数を呼ぶ第1の処理装置と、第3のデータフロー
プロセッサと複数の関数を記憶するライブラリーとを有
して前記第1の処理装置からの呼ばれた関数を送出する
第3の処理装置とを備えて成る関数呼出し処理方式にお
いて、前記第1の処理装置は請求項1記載と同様な構成
で処理を行い、前記第3の処理装置は同期命令Aによっ
て呼ばれる関数のデータフローグラフが一度に受け付け
られる呼出しの回数をn(n≧1の整数)とした場合の
初期状態では2n個のトークンをB入力に受入れ前記呼
出し要求トークンをA入力に受入れ、トークン生成命令
Aによって呼ばれる関数の実行終了を表わすトークンを
入力とし前記同期命令AのB入力に対し一時に2つのト
ークンを出力し、トークン生成命令Bによって前記同期
命令Aの出力を入力としてA出力とB出力との二つを出
力し、分流命令によって前記トークン生成命令BのA出
力を入力としてセット命令Aとセット命令Bとの2つの
セット命令に分配出力し、前記セット命令Aにより出力
先プロセッサ番号を書換え前記セット命令Bにより出力
先プロセッサ内リンクアドレスを書換え、これらの書換
えの後に第1の外部出力命令によって前記セット命令B
の出力を入力として前記呼出し受入れトークンとして前
記第1の処理装置へ出力し、同期命令Bによって前記ト
ークン生成命令BのB出力をA入力とし且つ初期状態で
は2つのトークンをそのB入力に入力し、トークン生成
命令Cによって呼ばれる関数の実行終了を表わすトーク
ンを入力とし前記同期命令BのB入力に対し一時に2つ
のトークンを出力し、分配命令Bによって前記同期命令
Bの出力をセット命令Cとセット命令Dとに分配し、前
記セット命令Cにより出力先プロセッサ番号を書換え、
前記セット命令Dにより出力先プロセッサ内リンクアド
レスを書換え、これらの書換えの後に前記第3の処理装
置からの戻り値を入力し、前記第1の処理装置へ戻り値
トークンとして出力する戻り値送出部を有している。
し処理方式は、第1のデータフロープロセッサを有して
関数を呼ぶ第1の処理装置と、第2のデータフロープロ
セッサと複数の関数を記憶するライブラリーとを有して
前記第1の処理装置から呼ばれた関数を送出する第2の
処理装置とを備えて成る関数呼出し処理方式において、
前記第1の処理装置は前記第1の処理装置内の前記第1
のデータフロープロセッサのプロセッサ番号と戻り値の
ための戻り先リンクアドレスとを連続に格納したメモリ
上のアドレステーブルと、関数呼出しの実行を開始させ
る2つのトークンが入力されるとメモリリード命令によ
って前記アドレステーブルから前記プロセッサ番号と前
記リンクアドレスとを読み出し、外部出力命令によって
前記メモリリード命令の出力を呼出し要求トークンとし
て前記第2の処理装置へ出力し、前記第2の処理装置か
ら出力された呼出し受入れトークンを第1のトークン生
成命令によって入力し、前記第1の処理装置からのパラ
メタトークンを入力とし、且つ前記第1のトークン生成
命令の出力を入力として両者の同期をとるための同期付
きパラメタ送出部とを有し、前記第2の処理装置は同期
命令によって初期状態では2つのトークンをB入力に受
入れ、前記呼出し要求トークンをA入力に受入れ、第2
の生成命令によって呼ばれる関数の実行終了を表わすト
ークンを入力とし前記同期命令のB入力に対し一時に2
つのトークンを出力し、分流命令によって前記同期命令
の出力をセット命令Aとセット命令Bとの2つのセット
命令に分配し、前記セット命令Aにより出力先プロセッ
サ番号を書換え、前記セット命令Bにより出力先プロセ
ッサ内リンクアドレスを書換え、これらの書換えの後に
第1の外部出力命令によって前記セット命令Bの出力を
入力として前記呼出し受入れトークンを前記第1の処理
装置へ出力し、前記セット命令Aにより出力先プロセッ
サ番号が書換えられ、また前記セット命令Bにより出力
先プロセッサ内リンクアドレスが書換えられ、これらの
書替えられた後に、前記第2の処理装置からの戻り値を
入力し、前記第1の処理装置へ戻り値トークンとして出
力する戻り値送出部を有している。本第2の発明の関数
呼出し処理方式は、第1のデータフロープロセッサを有
して関数を呼ぶ第1の処理装置と、第3のデータフロー
プロセッサと複数の関数を記憶するライブラリーとを有
して前記第1の処理装置からの呼ばれた関数を送出する
第3の処理装置とを備えて成る関数呼出し処理方式にお
いて、前記第1の処理装置は請求項1記載と同様な構成
で処理を行い、前記第3の処理装置は同期命令Aによっ
て呼ばれる関数のデータフローグラフが一度に受け付け
られる呼出しの回数をn(n≧1の整数)とした場合の
初期状態では2n個のトークンをB入力に受入れ前記呼
出し要求トークンをA入力に受入れ、トークン生成命令
Aによって呼ばれる関数の実行終了を表わすトークンを
入力とし前記同期命令AのB入力に対し一時に2つのト
ークンを出力し、トークン生成命令Bによって前記同期
命令Aの出力を入力としてA出力とB出力との二つを出
力し、分流命令によって前記トークン生成命令BのA出
力を入力としてセット命令Aとセット命令Bとの2つの
セット命令に分配出力し、前記セット命令Aにより出力
先プロセッサ番号を書換え前記セット命令Bにより出力
先プロセッサ内リンクアドレスを書換え、これらの書換
えの後に第1の外部出力命令によって前記セット命令B
の出力を入力として前記呼出し受入れトークンとして前
記第1の処理装置へ出力し、同期命令Bによって前記ト
ークン生成命令BのB出力をA入力とし且つ初期状態で
は2つのトークンをそのB入力に入力し、トークン生成
命令Cによって呼ばれる関数の実行終了を表わすトーク
ンを入力とし前記同期命令BのB入力に対し一時に2つ
のトークンを出力し、分配命令Bによって前記同期命令
Bの出力をセット命令Cとセット命令Dとに分配し、前
記セット命令Cにより出力先プロセッサ番号を書換え、
前記セット命令Dにより出力先プロセッサ内リンクアド
レスを書換え、これらの書換えの後に前記第3の処理装
置からの戻り値を入力し、前記第1の処理装置へ戻り値
トークンとして出力する戻り値送出部を有している。
【0014】
【実施例】次に本発明について図面を参照して説明す
る。
る。
【0015】図1は本第1の発明の一実施例を示す流れ
図である。
図である。
【0016】図1において本実施例はアドレステーブル
100と同期付きパレメタ送出部110とを有し図4に
示したデータフロープロセッサ(図示省略)によって処
理を行う関数を呼ぶ側の装置Aと、戻り値送出部108
を有して図4に示したデータフロープロセッサ(図示省
略)によって処理を行う関数が呼ばれる側の装置Bとを
備えて構成している。
100と同期付きパレメタ送出部110とを有し図4に
示したデータフロープロセッサ(図示省略)によって処
理を行う関数を呼ぶ側の装置Aと、戻り値送出部108
を有して図4に示したデータフロープロセッサ(図示省
略)によって処理を行う関数が呼ばれる側の装置Bとを
備えて構成している。
【0017】次に本実施例における関数呼出しの処理に
ついて説明する。
ついて説明する。
【0018】関数呼出しの存在するプログラムブロック
の実行開始と同時に、関数呼出しの実行を開始するため
に2つのトークンがメモリリード命令(101)に入力
され、それによりアドレステーブル(100)内の、呼
ぶ側の装置Aに存在するプロセッサの番号と、後で呼出
し受入れトークンや戻り値トークンなどを受け取るため
のリンクアドレスとが読み出され、それら2つのトーク
ンを呼出し要求トークンとして外部出力命令(102)
に入力することで、呼出し要求トークンを呼ばれる側の
装置Bへ出力する。
の実行開始と同時に、関数呼出しの実行を開始するため
に2つのトークンがメモリリード命令(101)に入力
され、それによりアドレステーブル(100)内の、呼
ぶ側の装置Aに存在するプロセッサの番号と、後で呼出
し受入れトークンや戻り値トークンなどを受け取るため
のリンクアドレスとが読み出され、それら2つのトーク
ンを呼出し要求トークンとして外部出力命令(102)
に入力することで、呼出し要求トークンを呼ばれる側の
装置Bへ出力する。
【0019】これらの2つのトークンは呼ばれる側の装
置Bの同期命令(103)に入力されるが、呼ばれる側
が呼出し待ち状態にあれば、待合わせが成立しそのまま
入力された2つのトークンは分流命令(104)へ向う
が、呼ばれる側が呼出し待ち状態にない場合は同期命令
(103)に留まり、呼ばれる側が再度呼出し待ち状態
になるのを待つ。なお、呼ばれる側の初期状態は呼出し
待ち状態であり、それは同期命令(103)のB入力リ
ンク(113)上にトークンが存在することにより表現
される。なお初期状態ではB入力リンク(113)上に
は2つのトークンが用意されている。分流命令(10
4)へ向った前記2つのトークンは、それぞれ別々にセ
ット命令A(105)とセット命令B(106)へ向
う。
置Bの同期命令(103)に入力されるが、呼ばれる側
が呼出し待ち状態にあれば、待合わせが成立しそのまま
入力された2つのトークンは分流命令(104)へ向う
が、呼ばれる側が呼出し待ち状態にない場合は同期命令
(103)に留まり、呼ばれる側が再度呼出し待ち状態
になるのを待つ。なお、呼ばれる側の初期状態は呼出し
待ち状態であり、それは同期命令(103)のB入力リ
ンク(113)上にトークンが存在することにより表現
される。なお初期状態ではB入力リンク(113)上に
は2つのトークンが用意されている。分流命令(10
4)へ向った前記2つのトークンは、それぞれ別々にセ
ット命令A(105)とセット命令B(106)へ向
う。
【0020】セット命令A(105)とセット命令B
(106)はそれぞれ第1外部出力命令(107)と戻
り値送出部(108)に対し、それらの出力先プロセッ
サ番号、出力先プロセッサ内リンクアドレスを書換え
る。セット命令B(106)は上記の書換えのためのト
ークンを出力した後に1つのトークンを生成して第1外
部出力命令(107)に入力し、第1外部出力命令(1
07)はそれを呼出し受入れトークンとして呼ぶ側の装
置Aへ送出する。この呼出し受入れトークンはトークン
生成命令(109)に入力され、それをトークン生成命
令(109)は、装置A(呼ぶ側)から装置B(呼ばれ
る側)へパラメタトークンを送り出すための同期付きパ
ラメタ送出部(110)での同期に必要なだけのトーク
ンをコピーし同期付きパラメタ送出部(110)に入力
する。同期付きパラメタ送出部(110)はトークン生
成命令(109)及び計算用データ部(114)から入
力を受けることで内部で同期が取れた時点で、必要なパ
ラメタを装置B(呼ばれる側)に出力する。
(106)はそれぞれ第1外部出力命令(107)と戻
り値送出部(108)に対し、それらの出力先プロセッ
サ番号、出力先プロセッサ内リンクアドレスを書換え
る。セット命令B(106)は上記の書換えのためのト
ークンを出力した後に1つのトークンを生成して第1外
部出力命令(107)に入力し、第1外部出力命令(1
07)はそれを呼出し受入れトークンとして呼ぶ側の装
置Aへ送出する。この呼出し受入れトークンはトークン
生成命令(109)に入力され、それをトークン生成命
令(109)は、装置A(呼ぶ側)から装置B(呼ばれ
る側)へパラメタトークンを送り出すための同期付きパ
ラメタ送出部(110)での同期に必要なだけのトーク
ンをコピーし同期付きパラメタ送出部(110)に入力
する。同期付きパラメタ送出部(110)はトークン生
成命令(109)及び計算用データ部(114)から入
力を受けることで内部で同期が取れた時点で、必要なパ
ラメタを装置B(呼ばれる側)に出力する。
【0021】計算結果データ部(111)での実行が終
了すれば、実行終了トークンを生成しトークン生成命令
(112)に入力し、トークン生成命令(112)は同
期命令(103)のB入力リンク(113)上に再び2
つのトークンを用意し、それによって装置B(呼ばれる
側)は再び呼出し待ち状態に入り、他の呼出し要求を受
け付ける。また計算結果データ部(111)は戻り値送
出部(108)に対し戻り値トークンを送出し、戻り値
送出部(108)は先にセット命令A(105)及びセ
ット命令B(106)によって既に出力先プロセッサ番
号及び出力先プロセッサ内リンクアドレスを装置A(呼
ぶ側)のそれにセットされたので、戻り値送出部(10
8)から入力された戻り値トークンは装置Aに送出さ
れ、これで一回の関数呼出しの実行が終了する。
了すれば、実行終了トークンを生成しトークン生成命令
(112)に入力し、トークン生成命令(112)は同
期命令(103)のB入力リンク(113)上に再び2
つのトークンを用意し、それによって装置B(呼ばれる
側)は再び呼出し待ち状態に入り、他の呼出し要求を受
け付ける。また計算結果データ部(111)は戻り値送
出部(108)に対し戻り値トークンを送出し、戻り値
送出部(108)は先にセット命令A(105)及びセ
ット命令B(106)によって既に出力先プロセッサ番
号及び出力先プロセッサ内リンクアドレスを装置A(呼
ぶ側)のそれにセットされたので、戻り値送出部(10
8)から入力された戻り値トークンは装置Aに送出さ
れ、これで一回の関数呼出しの実行が終了する。
【0022】本第1の発明の実施例では、装置B(呼ば
れる側)の関数が一度に一つの呼出ししか受け付けられ
ない場合の関数呼出し処理を、上述のようなデータフロ
ーグラフに展開する。
れる側)の関数が一度に一つの呼出ししか受け付けられ
ない場合の関数呼出し処理を、上述のようなデータフロ
ーグラフに展開する。
【0023】次に、第2の発明について説明する。
【0024】図2は本第2の発明の一実施例を示す流れ
図である。
図である。
【0025】図2において本第2の発明の本実施例は関
数を呼ぶ側の装置Aと関数が呼ばれる側の装置Cとから
成り、装置Aの構成は図1に示した本第1の発明の一実
施例の場合と同じ構成要件を有しており、装置Cは戻り
値送出部222を有し、図4に示したデータフロープロ
セッサ(図示省略)によって関数呼出しの処理を行う構
成を有している。
数を呼ぶ側の装置Aと関数が呼ばれる側の装置Cとから
成り、装置Aの構成は図1に示した本第1の発明の一実
施例の場合と同じ構成要件を有しており、装置Cは戻り
値送出部222を有し、図4に示したデータフロープロ
セッサ(図示省略)によって関数呼出しの処理を行う構
成を有している。
【0026】次に本実施例における関数の呼出しの処理
について説明する。
について説明する。
【0027】本実施例においては、装置C(呼ばれる
側)の関数のデータフローグラフの一度に受入れらる呼
出しの数をn(n≧1の整数)とする。関数呼出しの存
在するプログラムブロックの実行開始と同時に、関数呼
出しの実行を開始するために2つのトークンがメモリリ
ード命令(101)に入力され、それによりアドレステ
ーブル(100)内の装置A(呼ぶ側)が存在するプロ
セッサの番号と、後で呼出し受入れトークンや戻り値ト
ークンなどを受け取るためのリンクアドレスとが読み出
され、それら2つのトークンを呼出し要求トークンとし
て外部出力命令(102)に入力することで、呼出し要
求トークンを装置C(呼ばれる側)へ出力する。
側)の関数のデータフローグラフの一度に受入れらる呼
出しの数をn(n≧1の整数)とする。関数呼出しの存
在するプログラムブロックの実行開始と同時に、関数呼
出しの実行を開始するために2つのトークンがメモリリ
ード命令(101)に入力され、それによりアドレステ
ーブル(100)内の装置A(呼ぶ側)が存在するプロ
セッサの番号と、後で呼出し受入れトークンや戻り値ト
ークンなどを受け取るためのリンクアドレスとが読み出
され、それら2つのトークンを呼出し要求トークンとし
て外部出力命令(102)に入力することで、呼出し要
求トークンを装置C(呼ばれる側)へ出力する。
【0028】これらの2つのトークンは装置C(呼ばれ
る側)の同期命令A(203)のA入力リンク(20
5)に入力されるが、装置C(呼ばれる側)が呼出し待
ち状態にあれば、待合わせが成立しそのまま入力された
2つのトークンはトークン生成命令B(204)へ向
い、装置C(呼ばれる側)の一度に受け付けらる呼出し
の回数は1つ減るが、装置C(呼ばれる側)が呼出し待
ち状態にない場合、つまり同期命令A(203)のB入
力リンク(223)上にトークンが存在しない場合は同
期命令A(203)に留まり、装置C(呼ばれる側)が
再度呼出し状態になるのを待つ。
る側)の同期命令A(203)のA入力リンク(20
5)に入力されるが、装置C(呼ばれる側)が呼出し待
ち状態にあれば、待合わせが成立しそのまま入力された
2つのトークンはトークン生成命令B(204)へ向
い、装置C(呼ばれる側)の一度に受け付けらる呼出し
の回数は1つ減るが、装置C(呼ばれる側)が呼出し待
ち状態にない場合、つまり同期命令A(203)のB入
力リンク(223)上にトークンが存在しない場合は同
期命令A(203)に留まり、装置C(呼ばれる側)が
再度呼出し状態になるのを待つ。
【0029】なお、装置C(呼ばれる側)の初期状態は
呼出し待ち状態であり、それはB入力リンク(223)
上にトークンが存在することにより表現されるが、初期
状態ではB入力リンク(223)上には2n個のトーク
ンが用意されており、それによって初期状態ではn回の
呼出しを受け付けられることを表現する。同期命令A
(203)において同期が成立すれば、2つのトークン
はトークン生成命令B(204)へ向い、トークン生成
命令(204)においてコピーされた上でトークン生成
命令(204)のA出力リンク(206)とB出力リン
ク(207)に出力される。A出力リンク(206)上
を流れるトークンは分流命令A(208)に入力された
後、それぞれ別々にセット命令A(209)とセット命
令B(210)へ向う。
呼出し待ち状態であり、それはB入力リンク(223)
上にトークンが存在することにより表現されるが、初期
状態ではB入力リンク(223)上には2n個のトーク
ンが用意されており、それによって初期状態ではn回の
呼出しを受け付けられることを表現する。同期命令A
(203)において同期が成立すれば、2つのトークン
はトークン生成命令B(204)へ向い、トークン生成
命令(204)においてコピーされた上でトークン生成
命令(204)のA出力リンク(206)とB出力リン
ク(207)に出力される。A出力リンク(206)上
を流れるトークンは分流命令A(208)に入力された
後、それぞれ別々にセット命令A(209)とセット命
令B(210)へ向う。
【0030】B出力リンク(207)は同期命令B(2
17)のA入力であり、B出力リンク(207)上のト
ークンは同期命令(217)へ入力される。なお、同期
命令B(217)のB入力(218)には、初期状態で
は2つのトークンが用意される。セット命令A(20
9)とセット命令B(210)は第1外部出力命令(2
11)に対し、その出力先プロセッサ番号、出力先プロ
セッサ内リンクアドレスを書換えることで第1外部出力
命令(211)の出力が装置A(呼ぶ側)でのトークン
生成命令(109)に送出されるようにする。
17)のA入力であり、B出力リンク(207)上のト
ークンは同期命令(217)へ入力される。なお、同期
命令B(217)のB入力(218)には、初期状態で
は2つのトークンが用意される。セット命令A(20
9)とセット命令B(210)は第1外部出力命令(2
11)に対し、その出力先プロセッサ番号、出力先プロ
セッサ内リンクアドレスを書換えることで第1外部出力
命令(211)の出力が装置A(呼ぶ側)でのトークン
生成命令(109)に送出されるようにする。
【0031】セット命令B(210)は上記の書換えの
ためのトークンを出力した後に1つのトークンを生成し
て第1外部出力命令(211)に入力し、第1外部出力
命令(211)はそれを呼出し受入れトークンとして装
置A(呼ぶ側)へ送出する。この呼出し受入れトークン
はトークン生成命令(109)に入力され、それをトー
クン生成命令(109)は装置A(呼ぶ側)から呼ばれ
る側へパラメタトークンを送り出すための同期付きパレ
メタ送出部(110)での同期に必要なだけのトークン
をコピーし同期付きパラメタ送出部(110)に入力す
る。同期付きパラメタ送出部(110)はトークン生成
命令(109)からの入力と計算用のデータ部(11
4)からの入力を受けて、内部で両入力の同期が取れれ
ば、必要なパラメタを装置C(呼ばれる側)に出力す
る。
ためのトークンを出力した後に1つのトークンを生成し
て第1外部出力命令(211)に入力し、第1外部出力
命令(211)はそれを呼出し受入れトークンとして装
置A(呼ぶ側)へ送出する。この呼出し受入れトークン
はトークン生成命令(109)に入力され、それをトー
クン生成命令(109)は装置A(呼ぶ側)から呼ばれ
る側へパラメタトークンを送り出すための同期付きパレ
メタ送出部(110)での同期に必要なだけのトークン
をコピーし同期付きパラメタ送出部(110)に入力す
る。同期付きパラメタ送出部(110)はトークン生成
命令(109)からの入力と計算用のデータ部(11
4)からの入力を受けて、内部で両入力の同期が取れれ
ば、必要なパラメタを装置C(呼ばれる側)に出力す
る。
【0032】計算結果データ部(214)での実行が終
了すれば、実行終了トークンを生成しトークン生成命令
A(215)及びトークン生成命令C(216)に入力
し、トークン生成命令A(215)ではトークンのコピ
ーを行うことで同期命令A(203)のB入力リンク
(204)上に再び2つのトークンを追加し、それによ
って装置C(呼ばれる側)が受け付けられる呼出しの回
数は1増える。同様にトークン生成命令C(216)で
はトークンのコピーを行うことで同期命令B(217)
のB入力リンク(218)上に再び2つのトークンを追
加する。同期命令B(217)は分流命令B(219)
に出力を行い、分流命令B(219)はその出力をセッ
ト命令C(220)とセット命令D(221)とに分配
する。セット命令C(220)とセット命令D(22
1)は戻り値送出部(222)に対し、その出力先プロ
セッサ番号、出力先プロセッサ内リンクアドレスを書換
え、それによってすべての戻り値が装置A(呼ぶ側)に
送出された時点で、一回の関数呼出しに対する処理が終
了する。
了すれば、実行終了トークンを生成しトークン生成命令
A(215)及びトークン生成命令C(216)に入力
し、トークン生成命令A(215)ではトークンのコピ
ーを行うことで同期命令A(203)のB入力リンク
(204)上に再び2つのトークンを追加し、それによ
って装置C(呼ばれる側)が受け付けられる呼出しの回
数は1増える。同様にトークン生成命令C(216)で
はトークンのコピーを行うことで同期命令B(217)
のB入力リンク(218)上に再び2つのトークンを追
加する。同期命令B(217)は分流命令B(219)
に出力を行い、分流命令B(219)はその出力をセッ
ト命令C(220)とセット命令D(221)とに分配
する。セット命令C(220)とセット命令D(22
1)は戻り値送出部(222)に対し、その出力先プロ
セッサ番号、出力先プロセッサ内リンクアドレスを書換
え、それによってすべての戻り値が装置A(呼ぶ側)に
送出された時点で、一回の関数呼出しに対する処理が終
了する。
【0033】本第2の発明の本実施例では、装置C(呼
ばれる側)の関数が一度にn個の呼出しを受け付けられ
る場合の関数呼出し処理を、上述のようなデータフロー
グラフに展開する。
ばれる側)の関数が一度にn個の呼出しを受け付けられ
る場合の関数呼出し処理を、上述のようなデータフロー
グラフに展開する。
【0034】
【発明の効果】以上詳細に説明したように本発明は、頻
繁に同一の関数を呼出すプログラムに対し得られるデー
タフローグラフを従来方式よりかなり小さくすることが
可能となり、有限なメモリ資源しか持たない静的なデー
タフロープロセッサの使用メモリペースを大幅に削減す
ることができる効果を有する。
繁に同一の関数を呼出すプログラムに対し得られるデー
タフローグラフを従来方式よりかなり小さくすることが
可能となり、有限なメモリ資源しか持たない静的なデー
タフロープロセッサの使用メモリペースを大幅に削減す
ることができる効果を有する。
【図1】本第1の発明の一実施例を示す流れ図である。
【図2】本第2の発明の一実施例を示す流れ図である。
【図3】従来の関数呼出し処理方式の二つの例を示し、
(a)は同一関数が一回呼ばれる場合を示すブロック
図、(b)は同一関数が3回呼ばれる場合を示すブロッ
ク図である。
(a)は同一関数が一回呼ばれる場合を示すブロック
図、(b)は同一関数が3回呼ばれる場合を示すブロッ
ク図である。
【図4】本第1,第2の発明の各実施例および従来例に
使用されるデータフロープロセッサμPD7281を示
すブロック図である。
使用されるデータフロープロセッサμPD7281を示
すブロック図である。
【図5】図4に示すデータフロープロセッサ内でのトー
クンフォーマットを示し、(a)は入力のトークンフォ
ーマットを示す図、(b)はファンクションテーブルへ
送られるトークンフォーマットを示す図、(c)はデー
タメモリへ送られるトークンフォーマットを示す図、
(d)はキューメモリへ送られるトークンフォーマット
を示す図である。
クンフォーマットを示し、(a)は入力のトークンフォ
ーマットを示す図、(b)はファンクションテーブルへ
送られるトークンフォーマットを示す図、(c)はデー
タメモリへ送られるトークンフォーマットを示す図、
(d)はキューメモリへ送られるトークンフォーマット
を示す図である。
91 トークン入力部 92 リンクテーブル 93 ファンクションテーブル 94 データメモリ 95 キューメモリ 96 プロセッシングユニット 97 トークン出力部 100 アドレステーブル 111,214 計算結果のデータ部 114 計算用のデータ部 108,222 戻り値送出部
Claims (2)
- 【請求項1】 第1のデータフロープロセッサを有して
関数を呼ぶ第1の処理装置と、第2のデータフロープロ
セッサと複数の関数を記憶するライブラリーとを有して
前記第1の処理装置から呼ばれた関数を送出する第2の
処理装置とを備えて成る関数呼出し処理方式において、
前記第1の処理装置は前記第1の処理装置内の前記第1
のデータフロープロセッサのプロセッサ番号と戻り値の
ための戻り先リンクアドレスとを連続に格納したメモリ
上のアドレステーブルと、関数呼出しの実行を開始させ
る2つのトークンが入力されるとメモリリード命令によ
って前記アドレステーブルから前記プロセッサ番号と前
記リンクアドレスとを読み出し、外部出力命令によって
前記メモリリード命令の出力を呼出し要求トークンとし
て前記第2の処理装置へ出力し、前記第2の処理装置か
ら出力された呼出し受入れトークンを第1のトークン生
成命令によって入力し、前記第1の処理装置からのパラ
メタトークンを入力とし、且つ前記第1のトークン生成
命令の出力を入力として両者の同期をとるための同期付
きパラメタ送出部とを有し、前記第2の処理装置は同期
命令によって初期状態では2つのトークンをB入力に受
入れ、前記呼出し要求トークンをA入力に受入れ、第2
の生成命令によって呼ばれる関数の実行終了を表わすト
ークンを入力とし前記同期命令のB入力に対し一時に2
つのトークンを出力し、分流命令によって前記同期命令
の出力をセット命令Aとセット命令Bとの2つのセット
命令に分配し、前記セット命令Aにより出力先プロセッ
サ番号を書換え、前記セット命令Bにより出力先プロセ
ッサ内リンクアドレスを書換え、これらの書換えの後に
第1の外部出力命令によって前記セット命令Bの出力を
入力として前記呼出し受入れトークンを前記第1の処理
装置へ出力し、前記セット命令Aにより出力先プロセッ
サ番号が書換えられ、また前記セット命令Bにより出力
先プロセッサ内リンクアドレスが書換えられ、これらの
書替えられた後に、前記第2の処理装置からの戻り値を
入力し、前記第1の処理装置へ戻り値トークンとして出
力する戻り値送出部を有することを特徴とする関数呼出
し処理方式。 - 【請求項2】 第1のデータフロープロセッサを有して
関数を呼ぶ第1の処理装置と、第3のデータフロープロ
セッサと複数の関数を記憶するライブラリーとを有して
前記第1の処理装置からの呼ばれた関数を送出する第3
の処理装置とを備えて成る関数呼出し処理方式におい
て、前記第1の処理装置は請求項1記載と同様な構成で
処理を行い、前記第3の処理装置は同期命令Aによって
呼ばれる関数のデータフローグラフが一度に受け付けら
れる呼出しの回数をn(n≧1の整数)とした場合の初
期状態では2n個のトークンをB入力に受入れ前記呼出
し要求トークンをA入力に受入れ、トークン生成命令A
によって呼ばれる関数の実行終了を表わすトークンを入
力とし前記同期命令AのB入力に対し一時に2つのトー
クンを出力し、トークン生成命令Bによって前記同期命
令Aの出力を入力としてA出力とB出力との二つを出力
し、分流命令によって前記トークン生成命令BのA出力
を入力としてセット命令Aとセット命令Bとの2つのセ
ット命令に分配出力し、前記セット命令Aにより出力先
プロセッサ番号を書換え前記セット命令Bにより出力先
プロセッサ内リンクアドレスを書換え、これらの書換え
の後に第1の外部出力命令によって前記セット命令Bの
出力を入力として前記呼出し受入れトークンとして前記
第1の処理装置へ出力し、同期命令Bによって前記トー
クン生成命令BのB出力をA入力とし且つ初期状態では
2つのトークンをそのB入力に入力し、トークン生成命
令Cによって呼ばれる関数の実行終了を表わすトークン
を入力とし前記同期命令BのB入力に対し一時に2つの
トークンを出力し、分配命令Bによって前記同期命令B
の出力をセット命令Cとセット命令Dとに分配し、前記
セット命令Cにより出力先プロセッサ番号を書換え、前
記セット命令Dにより出力先プロセッサ内リンクアドレ
スを書換え、これらの書換えの後に前記第3の処理装置
からの戻り値を入力し、前記第1の処理装置へ戻り値ト
ークンとして出力する戻り値送出部を有することを特徴
とする関数呼出し処理方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22686091A JPH0567222A (ja) | 1991-09-06 | 1991-09-06 | 関数呼出し処理方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22686091A JPH0567222A (ja) | 1991-09-06 | 1991-09-06 | 関数呼出し処理方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0567222A true JPH0567222A (ja) | 1993-03-19 |
Family
ID=16851708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP22686091A Pending JPH0567222A (ja) | 1991-09-06 | 1991-09-06 | 関数呼出し処理方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0567222A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010282429A (ja) * | 2009-06-04 | 2010-12-16 | Canon Inc | 画像処理装置及びその制御方法 |
JP2014112396A (ja) * | 2014-01-07 | 2014-06-19 | Canon Inc | 画像処理装置及びその制御方法 |
WO2023084740A1 (ja) * | 2021-11-12 | 2023-05-19 | 日本電信電話株式会社 | データ生成装置およびプログラム |
-
1991
- 1991-09-06 JP JP22686091A patent/JPH0567222A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010282429A (ja) * | 2009-06-04 | 2010-12-16 | Canon Inc | 画像処理装置及びその制御方法 |
JP2014112396A (ja) * | 2014-01-07 | 2014-06-19 | Canon Inc | 画像処理装置及びその制御方法 |
WO2023084740A1 (ja) * | 2021-11-12 | 2023-05-19 | 日本電信電話株式会社 | データ生成装置およびプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4156903A (en) | Data driven digital data processor | |
EP0409285B1 (en) | Method and apparatus for data transfer between processor elements | |
JPS6015771A (ja) | ベクトルプロセッサ | |
JPS5916053A (ja) | パイプライン演算装置 | |
EP0295646B1 (en) | Arithmetic operation processing apparatus of the parallel processing type and compiler which is used in this apparatus | |
JPH05210491A (ja) | 通信オートマトンセットの開発を支援する方法 | |
CN116166402B (zh) | 一种数据安全处理方法、系统、安全芯片以及电子设备 | |
JP2007034392A (ja) | 情報処理装置及びデータ処理方法 | |
JP2729343B2 (ja) | 複数個の処理装置を有する情報処理システムおよびこの情報処理システムにおいて用いられる制御装置ならびに処理装置 | |
JPH0567222A (ja) | 関数呼出し処理方式 | |
JP6817827B2 (ja) | アクセラレータ処理管理装置、ホスト装置、アクセラレータ処理実行システム、方法およびプログラム | |
JPH07104845B2 (ja) | 並列処理装置 | |
JPH0981525A (ja) | 並列処理システム | |
JP2765058B2 (ja) | ストリーム演算終了検知方法及びその装置 | |
JP2821321B2 (ja) | Dmaコントローラ | |
JP2635863B2 (ja) | 中央処理装置 | |
JP3091441B2 (ja) | データ処理装置 | |
CN115373647A (zh) | 一种动态添加异步并返回最后添加异步结果的方法及装置 | |
JPS6343784B2 (ja) | ||
Kovacevic et al. | Prototyping from SDL specifications using a real-time concurrent logic language | |
JPH0644299B2 (ja) | デ−タフロ−プロセツサ | |
JP2000003285A (ja) | 割り込み処理方法および割り込み回路 | |
JPH02282876A (ja) | トークン識別子変換方法及び装置 | |
JPH03218524A (ja) | 命令処理装置 | |
JPH02230473A (ja) | 並列計算機の画像処理システム |