JPH05217007A - データフロープログラムの実行制御方法 - Google Patents

データフロープログラムの実行制御方法

Info

Publication number
JPH05217007A
JPH05217007A JP4018780A JP1878092A JPH05217007A JP H05217007 A JPH05217007 A JP H05217007A JP 4018780 A JP4018780 A JP 4018780A JP 1878092 A JP1878092 A JP 1878092A JP H05217007 A JPH05217007 A JP H05217007A
Authority
JP
Japan
Prior art keywords
data
program
array
flow
field
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
Application number
JP4018780A
Other languages
English (en)
Inventor
Koichi Hatakeyama
耕一 畠山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sharp Corp
Original Assignee
Sharp Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sharp Corp filed Critical Sharp Corp
Priority to JP4018780A priority Critical patent/JPH05217007A/ja
Priority to US08/012,476 priority patent/US5369774A/en
Publication of JPH05217007A publication Critical patent/JPH05217007A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 この発明の目的は、配列のデータ処理を含む
データフロープログラム実行時の処理速度向上とメモリ
有効利用とを図ることのできるデータフロープログラム
の実行制御方法を提供することである。 【構成】 (a)および(c)のプログラムは、配列a
rray[3]のインクリメント処理を記述し、(c)
は、配列要素が“3”と確定しているにもかかわらず配
列をメモリ置きのデータに宣言しているので、(d)の
フローグラフにされるが、(a)は配列要素が“3”と
確定していることに着目して配列をフロー構造体fst
ructを用いて宣言しているので、(b)のフローグ
ラフとなり、その大きさは(d)よりも縮小されて、
(a)は(c)よりもプログラム実行処理速度向上とメ
モリ有効利用が図られるように記述されたことになる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明はデータ駆動型情報処理
装置におけるデータフロープログラムの実行制御方法に
関し、特に、配列型のデータを処理するデータフロープ
ログラムの実行制御方法に関する。
【0002】
【従来の技術】図6は、従来およびこの発明の一実施例
に適用されるデータ駆動型情報処理装置の概略構成図で
ある。
【0003】図7は、従来およびこの発明の一実施例に
適用されるデータ駆動型情報処理装置を巡回するデータ
パケットのフィールド構成を示す図である。
【0004】図7において、データパケットPAは行先
情報を格納する行先フィールド、命令情報を格納する命
令フィールド、オペランドデータが格納されるデータ1
フィールドおよびデータ2フィールドを含む。
【0005】図6を参照して、データ駆動型情報処理装
置1の処理部本体には、アクセス速度は低速であるが、
大容量の拡張データ記憶部2および拡張プログラム記憶
部7が外付けされている。さらに、情報処理装置1の処
理部本体は入出力制御部3、小容量ではあるがアクセス
速度は高速であるプログラム記憶部4、対データ検出を
する発火制御部5、および演算部6を含む。
【0006】拡張プログラム記憶部7は、与えられるデ
ータパケットPAによりプログラムデータの初期書込
(ダウンロード)が可能なように構成される。拡張プロ
グラム記憶部7は、発火制御部5から与えられるデータ
パケットPAの行先情報に基づいてアドレス指定され、
そこにストアされるプログラムデータを読出してデータ
パケットにしてプログラム記憶部4に出力する。
【0007】拡張データ記憶部2は、情報処理装置1に
おいてデータ処理されるべきデータを予め格納するため
の外部データメモリである。拡張データ記憶部2は与え
られるデータパケットPAの行先情報に基づいてアドレ
ス指定され、そこに格納されたデータを読出す。読出さ
れたデータは入力データパケットPAのデータ1フィー
ルドまたはデータ2フィールドに格納されて入出力制御
部3に導出される。
【0008】入出力制御部3は、与えられるデータパケ
ットPAに格納される命令情報に基づいて、入力データ
パケットPAを該装置1外部、拡張データ記憶部2およ
びプログラム記憶部4のいずれかに選択的に導出する。
【0009】プログラム記憶部4は、複数組の行先情報
および命令情報を格納しており、与えられるデータパケ
ットPAの行先情報に基づくアドレス指定により、次位
の行先情報および命令情報を読出して、発火制御部5に
与える。また、プログラム記憶部4は、拡張プログラム
記憶部7から読出されたプログラムデータをデータパケ
ットPAにして入力し、ロードする。
【0010】発火制御部5は、与えられるデータパケッ
トPAを順次入力し、行先情報の一致する異なる2つの
データパケットPAを検出(発火するという)して、そ
れらのデータパケットPAのうち一方のデータパケット
PAのオペランドデータ、たとえばデータ1フィールド
の内容を他方のデータパケットPAのデータ2フィール
ドに格納し、他方のデータパケットPAを出力する。こ
のとき、入力データパケットPAの命令情報が1オペラ
ンド命令(NOP)であれば、入力データパケットPA
はそのまま導出される。このとき、1オペランド命令が
拡張プログラム記憶部7からのプログラムデータ読出し
の命令であれば、該入力データパケットPAは拡張プロ
グラム記憶部7に出力される。
【0011】演算部6は、与えられるデータパケットP
Aに格納された命令情報に従って、同様にそこに格納さ
れたオペランドデータについて演算処理を施し、その結
果を入力データパケットPAのデータ1フィールドまた
はデータ2フィールドに格納して出力する。
【0012】図6のデータ駆動型情報処理装置1におい
て、外部からデータパケットPAにして与えられるプロ
グラムデータを拡張プログラム記憶部7とプログラム記
憶部4とにロードする場合の動作について説明する。な
お、プログラムデータは、外部からシリアルに順次入力
されて、すべてのプログラムデータは拡張プログラム記
憶部7にロードされ、そのうち初期のプログラムデー
タ、たとえば初期の1Kワードのプログラムデータはプ
ログラム記憶部4にもロードされる。
【0013】データパケットPAにして外部から与えら
れるプログラムデータには、ULD、LDI、LDXの
いずれかの命令が含まれる。ULDはアンロードの意味
であり、通常の実行状態を表わす命令である。LDIは
プログラム記憶部4に初期の1Kワードのプログラムデ
ータをロードせよという命令であり、LDXは残りのプ
ログラムデータを拡張プログラム記憶部7にロードせよ
という命令である。
【0014】プログラムロード時には、NOP命令でも
ある命令LDIまたはLDXを格納したデータパケット
PAが順次、データ駆動型情報処理装置1に入力される
ので、入出力制御部3はこれらデータパケットPAを入
力してプログラム記憶部4へ導出する。したがって、プ
ログラム記憶部4には初期の1Kワードのプログラムデ
ータが格納され、拡張プログラム記憶部7には、プログ
ラム記憶部4にストアされたプログラムデータを含むプ
ログラムデータが発火制御部5を介してストアされる。
【0015】上述のようにしてプログラムデータのロー
ドが完了すると、ロードされたプログラムの実行に先立
って次にデータが、拡張データ記憶部2にストアされ
る。ストアされるべきデータを格納したデータパケット
PAもまた、外部からデータ駆動型情報処理装置1に入
力されて、入出力制御部3を介して拡張データ記憶部2
に順次ロードされる。なお、拡張データ記憶部2へのデ
ータのロードは、前述したプログラムデータのロードに
先立って行なわれてもよく、プログラムとデータのダウ
ンロードの順序は問わない。
【0016】上述のようにして、プログラムデータおよ
びデータのダウンロードが完了すると、次にロードされ
たプログラムに従う処理が実行される。まず、外部から
命令ULDを含むデータパケットPAが入出力制御部3
に与えられる。入出力制御部3は、入力データパケット
PAの行先情報を参照して、装置1の外部およびプログ
ラム記憶部4のいずれかに選択的に導出する。
【0017】外部から命令ULDを含むデータパケット
PAが入出力制御部3を介してプログラム記憶部4に与
えられると、命令ULDであることに応じてその行先情
報に基づくアドレス指定により、該当のプログラムデー
タが読出される。このとき、指定アドレスがプログラム
記憶部4のアクセス可能空間アドレス領域を超える場合
は、入力データパケットPAは、発火制御部5を介して
拡張プログラム記憶部7に与えられる。逆に、指定アド
レスはプログラム記憶部4のアクセス可能空間アドレス
領域にあれば、そこにストアされたプログラムデータが
読出され、データパケットPAにして発火制御部5に与
えられる。
【0018】一方、拡張プログラム記憶部7は、与えら
れるデータパケットPAの行先情報に基づくアドレス指
定により、そこにストアされたプログラムデータを読出
し、データパケットPAにしてプログラム記憶部4に与
える。
【0019】発火制御部5は、行先情報の一致する異な
る2つの入力データパケットPAの待ち合わせをして、
対データ検出(発火)する。対データ検出したことによ
り得られたデータパケットPAは演算部6に与えられ
る。演算部6は、与えられるデータパケットPAについ
て演算処理を施し、その演算結果を格納したデータパケ
ットPAを出力する。
【0020】入出力制御部3は演算部6から与えられる
データパケットPAの命令情報に基づき、拡張データ記
憶部2をアクセスする。入力データパケットPAの命令
情報が拡張データ記憶部2をアクセスするような命令情
報であるとき、入出力制御部3は入力データパケットP
Aの行先情報に基づき拡張データ記憶部2をアドレス指
定によりアクセスする。指定アドレスから読出されたデ
ータは入出力制御部3に導出されて、入力データパケッ
トのデータ1フィールドまたはデータ2フィールドに格
納されて導出される。
【0021】以上のように、入出力制御部3→プログラ
ム記憶部4→発火制御部5→演算部6→…とデータパケ
ットPAが巡回し続けることにより、プログラム記憶部
4、拡張プログラム記憶部7および拡張データ記憶部2
にストアされたプログラムおよびデータに従うデータフ
ロープログラム処理が推進される。
【0022】上述したデータ駆動型情報処理装置1にお
いて拡張データ記憶部2は大容量ではあるが低アクセス
速度なので、頻繁にアクセスされるデータは、拡張デー
タ記憶部2よりもアクセス速度が高速であるプログラム
記憶部4にストアし、逆にアクセスされることが稀であ
るデータは拡張データ記憶部2にストアして、選択的に
記憶部2と4とを使い分けることにより、プログラム処
理速度の向上が図れる。上述したように拡張データ記憶
部2にストアされるデータはメモリデータと呼び、デー
タ駆動型情報処理装置1内部の伝送路上をデータパケッ
トPAにして流れるデータをフローデータと呼ぶ。
【0023】さて、従来のデータフロープログラムで
は、配列型のデータを、すべてデータ駆動型情報処理装
置1の拡張データ記憶部2にストアして、メモリデータ
として扱う。データフロープログラムにおける配列は、
たとえばarray[x]と記述される。array
[x]は、配列名がarrayであり配列を構成する配
列要素はxであり、xは上限値および下限値を持つ。配
列array[x]自体は拡張データ記憶部2にストア
されるメモリデータであるが、配列要素xはフローデー
タである。したがって、データパケットPAにして与え
られる配列要素xに基づくアドレス指定により拡張デー
タ記憶部2をアクセスして、そこにストアされる配列の
値(array[x])を読出すことにより配列データ
のアクセスを含むプログラム処理が行なわれていた。し
かし、拡張データ記憶部2は低速アクセスメモリなので
配列array[x]をメモリデータにすると、配列を
含むプログラムの処理速度が、拡張データ記憶部2のア
クセス速度により制限されてしまう。
【0024】上述の処理速度の制限は、配列array
[x]自体も配列要素xと同様にフローデータにして扱
えば解消できると考えられる。この場合、配列arra
y[x]を配列要素xと同様にデータパケットPAにし
て供給することになるので、配列array[x]自身
と配列要素xとの間で、データパケットPAの同期をと
る必要がある。つまり、配列array[1]、…、a
rray[n]のそれぞれをデータパケットPAにして
準備し、予めデータ駆動型情報処理装置1の入出力制御
部3およびプログラム記憶部4を介して発火制御部5に
格納して待たせておく。その後、プログラムが実行開始
され、実行中に、たとえば配列要素x=3と確定したデ
ータパケットPAが発火制御部5に入力されたら、ここ
で対データ検出されて配列データarray[3]が出
力される。これにより、配列array[x]自身と配
列要素xとの間で同期がとられたことになる。一般的
に、データ駆動型情報処理装置において、データパケッ
トPAの同期をとると、処理時間のロスを生じることが
知られている。つまり、配列array[1]…arr
ay[n]を発火制御部5において待たせるための待ち
時間が処理時間のロスとなる。
【0025】また、フローデータである配列要素xが確
定するまで、フローデータarray[x]のすべての
値を発火制御部5で待機させる必要があるので、フロー
グラフが非常に大きくなるという欠点がある。この欠点
を以下に説明する。
【0026】図8は、データフロープログラムのプログ
ラム開発手順を模式的に示す図である。
【0027】図9(a)ないし(c)は、配列をデータ
処理するためのデータフロープログラムをデータフロー
グラフに変換した場合の例を示す図である。
【0028】図10(a)ないし(d)は、データフロ
ープログラムをコンパイルして得られるフローグラフの
例を示す図である。
【0029】データフロープログラムの開発手順は、図
8に示されるようにテキストエディタ、フローグラフ・
コンパイラ、フローグラフ・リンカおよびマッパを含
み、これらはたとえばワークステーションなどにおいて
ソフトウェアで準備される。まず、テキストエディタに
よりエディト処理してデータフロープログラムが作成さ
れる。次に、フローグラフ・コンパイラにより作成され
たデータフロープログラムを文法解析し、プログラム上
におけるデータの流れを並列処理を示す構造の複数のフ
ローグラフに展開する。展開して得られたフローグラフ
群は、次のフローグラフ・リンカにより1単位として処
理可能な1つのフローグラフにまとめられ、さらにマッ
パにより実行可能なファイルにして、ターゲットシステ
ム、たとえば図6のデータ駆動型情報処理装置1にダウ
ンロードされる。このダウンロードは、データパケット
PAを介して行なわれる。以下、フローグラフ・コンパ
イラをコンパイラと略称する。
【0030】コンパイラは、図10(a)および(b)
のデータフロープログラムをコンパイルして、それぞれ
図10(c)および(d)のフローグラフに変換する。
この2つのフローグラフはフローグラフ・リンカにより
1つのフローグラフにリンクされるので、図10(c)
の“func1”の部分に、図10(d)のフローグラ
フが展開されて、1つのフローグラフに変換される。
【0031】さて、コンパイラは、データフロープログ
ラム上の配列を、図9のようにコンパイルする。たとえ
ば、コンパイルの段階で配列要素xの値が確定していな
い場合は、配列要素xがとり得ると予想される値1〜n
に対応する配列の値すべてを図6の発火制御部5で同時
に待たせるために、図9(a)に示されるように配列の
値array[1]〜array[n]までの値をすべ
てフローグラフに並列に展開する。配列要素xが確定し
データパケットPAにして与えられると、その配列要素
xと配列array[x]との間で同期(sync)を
とって発火した配列の値array[1]のみを、フロ
ーグラフの下方向へフローデータとして流すようにす
る。たとえば、x=1に確定した場合、フローグラフに
おける配列の値array[1]のみが、選択的にフロ
ーグラフの下方向へ流れる、すなわち図6の発火制御部
5において発火することが図9(b)に示される。
【0032】逆にデータフロープログラムのエディト段
階で配列要素xが、たとえばx=3と既に確定していれ
ば、コンパイラは、プログラム中の配列の値array
[x](ただしx=3)について、図9(c)に示され
るように、1つのフローデータとして扱う。つまり、コ
ンパイラによってデータフロープログラム中の配列要素
xはフローグラフ中では記述されない。
【0033】このように、配列要素xが確定していない
場合は、規定されるフローデータarray[x]のす
べての値が、コンパイラにより並列にグラフ展開される
ので、配列要素xが確定している場合の図9(c)のフ
ローグラフに比較し、確定していない場合は図9(a)
に示されるようにフローグラフが非常に大きくなる。
【0034】以上のように、配列array[x]をフ
ローデータにして扱うと想定すれば、同期をとることに
よる処理時間のロスおよびフローグラフの大規模化が引
き起こされてしまうので、従来のデータフロープログラ
ムでは、処理速度は制限されるのではあるが、配列はす
べてデータ駆動型情報処理装置1の拡張データ記憶部2
に配置してメモリデータとして取扱うようにしていた。
【0035】
【発明が解決しようとする課題】しかしながら、データ
フロープログラムが表わす処理の種類によっては、コン
パイル前の段階でそこに記述された配列の要素の値が確
定している場合がある。すなわち、配列array
[x]における配列要素xがプログラム実行中に変化し
ない場合がある。このように、プログラム実行中に配列
要素が変化しない配列を静的配列と呼び、逆にプログラ
ム実行中に配列要素が変化する配列を動的配列と呼ぶ。
たとえば、プログラム記述が x=3; b=array[x] とあるならば、配列array[x]は静的配列であ
り、その値はarray[3]と確定している。このよ
うな場合は、配列要素xはメモリデータでもフローデー
タでもない性質のデータである。したがって、データフ
ロープログラムをフローグラフに展開する段階で、確定
している配列要素xの値に対応する配列array
[x]を、図9(c)に示されるようにフローデータと
して処理することができる。このように、プログラム中
の配列によってはフローデータとして処理できるものも
あるのに、配列を一律にメモリデータとして扱う従来の
データフロープログラムの制御方法は、データ駆動型情
報処理装置1の処理速度を必要以上に低速化させること
になるとともに、メモリの有効利用という面からも理想
的でないという問題があった。
【0036】それゆえにこの発明の目的は、配列のデー
タ処理を含むデータフロープログラムの実行処理速度向
上とメモリ有効利用を図るデータフロープログラムの実
行制御方法を提供することである。
【0037】
【課題を解決するための手段】この発明に係るデータフ
ロープログラムの実行制御方法は、データフロープログ
ラムにおける配列型データの値が予め確定しているか否
かに基づいて配列型データを予めデータ記憶手段にスト
アするか、データパケットを用いてデータ駆動型情報処
理装置に供給するかを選択的に指定するようにしたもの
である。
【0038】
【作用】上述の実行制御方法を採用することにより、デ
ータフロープログラム中の配列型データは、その値が予
め確定しているか否かにより、予めデータ記憶手段にス
トアされるか、データパケットを用いて情報処理装置に
供給されるかが選択的に指定される。そのため、配列型
データを一律にデータ記憶手段にストアさせる場合と比
べて、データパケットを用いて供給される配列型データ
の分だけ、プログラム実行時のデータ記憶手段のアクセ
ス処理が不要となり、実行処理速度の速いデータフロー
プログラムを記述することが可能となるとともにデータ
記憶手段の有効利用が図られる。
【0039】
【実施例】以下、この発明の一実施例について図面を参
照して詳細に説明する。
【0040】本実施例に適用されるデータ駆動型情報処
理装置の構成、データパケットのフィールド構成ならび
にデータフロープログラムのプログラム開発手順は図
6、図7および図8に示したものと同じなので、詳細説
明は省略する。
【0041】前述したように、フローデータである配列
はフロー配列と呼び、メモリデータである配列はメモリ
配列と呼ぶ。
【0042】データフロープログラムにおいては、構造
体を記述することができる。構造体は、C言語における
構造体と同じ役割を有し、幾つかの型の異なるデータを
1つにまとめて取扱うことができる。さらに構造体は、
コンパイラによって一般にメモリデータにコンパイルさ
れるが、構造体の中でもコンパイラによってフローデー
タにコンパイルされるものがある。このような構造体
を、以下、フロー構造体と呼び、フロー構造体はコンパ
イル後は構造体であったことは残らない。これに対し、
コンパイルされても構造体がメモリ上に残るものをメモ
リ構造体と呼ぶ。
【0043】フロー構造体内部では、従来、メモリデー
タとして一律に扱われていたメモリ配列を用いることは
できない。フロー配列は、フロー構造体を応用して fstruct タグ {配列宣言子}; とプログラム記述して宣言する。この記述方法によって
フロー構造体内部であっても、配列が使用可能となる。
たとえば、 fstruct ARY {array[10]}; と記述すれば、フロー構造体名をARYにして、配列名
arrayが宣言され、配列array[10]はフロ
ー配列にして、フローデータとなる。
【0044】フロー配列array[x]の代入および
参照を行なうときは、配列array[x]におけるx
は、データフロープログラムにおけるpara文内のル
ープデータであるか、あるいは定数値でなければならな
い。さもなければ、xはプログラム実行中に変化してし
まい、配列array[x]は動的配列となり、フロー
配列として扱うことができないからである。このように
フロー構造体内部で配列が宣言されている場合であって
も、宣言された配列の配列要素がプログラム実行中に変
化しない静的な値でない場合は、コンパイラがエラーと
して検出する。
【0045】図1(a)ないし(c)は、本発明の一実
施例による配列をメモリ配列として記述したデータフロ
ープログラムと、フロー配列として記述したデータフロ
ープログラムと、それぞれのプログラムをコンパイルし
て得られるフローグラフを示すための図である。
【0046】図2は、メモリ配列を用いて記述されたデ
ータフロープログラムの一例を示す図である。
【0047】図3は、図2のデータフロープログラムを
コンパイルして得られるフローグラフを示す図である。
【0048】図4は、フロー配列を用いて記述されたデ
ータフロープログラムの一例を示す図である。
【0049】図5は、図4のデータフロープログラムを
コンパイルして得られるデータフローグラフを示す図で
ある。
【0050】図2において、配列要素が確定している配
列A[3]およびB[3]を、あえてint(整数)型
のメモリ配列A[3]およびB[3]として宣言して、
para文本体が、すなわちSP=A[i]*B[i]
の演算がi=0,i=1およびi=2にしてそれぞれ繰
返し実行される。最終的には、SPには、その積の総和
であるSP=(A[0]*B[0])+(A[1]*B
[1])+(A[2]*B[2])が設定される。
【0051】コンパイラが、図2のデータフロープログ
ラムをコンパイルすると、図3のフローグラフが得られ
て、A[0]、A[1]およびA[2]ならびにB
[0]、B[1]およびB[2]は拡張データ記憶部2
に設定されるメモリ配列となる。
【0052】図3のデータフローグラフの最左側のルー
トでは配列要素を特定する定数値0に基づくアドレス指
定により、拡張データ記憶部2を2回アクセス(cse
l)し、A[0]およびB[0]を読出して、演算部6
でA[0]*B[0]の演算が行なわれる。また、図3
の中央のルートでは同様に定数値1に基づくアドレス指
定により、拡張データ記憶部2が2回アクセス(cse
l)されてA[1]およびB[1]が読出されて演算部
6でA[1]*B[1]が行なわれる。さらに、再左側
のルートでは同様に定数値2に基づくアドレス指定によ
り、拡張データ記憶部2が2回アクセス(csel)さ
れてA[2]およびB[2]を読出して演算部6でA
[2]*B[2]が行なわれる。そして、データフロー
グラフの次の段では、演算部6で(A[0]*B
[0])+(A[1]*B[1])が行なわれ、さらに
次の最終段では前段での演算結果を用いて演算部6で
((A[0]*B[0])+(A[1]*B[1]))
+(A[2]*B[2])が行なわれて、SPがフロー
データにして導出されることを示している。
【0053】図4は、図2のデータフロープログラムと
同じ処理内容を、配列A[3]およびB[3]を、フロ
ー構造体flowを用いて配列宣言し、フロー配列とし
て記述した場合のデータフロープログラムである。配列
A[3]およびB[3]の配列要素がpara文のルー
プデータとして用いられていることに注意する。したが
って、このデータフロープログラムをコンパイルする
と、フロー配列A[3]およびB[3]は、既に確定し
た値としてフローデータにして入力されるようコンパイ
ルされる。このデータフロープログラムをコンパイルし
て得られたデータフローグラフが図5に示される。
【0054】図5のデータフローグラフは、入力ノード
に既に確定したフローデータであるf.A[0]、f.
B[0]、f.A[1]、f.B[1]、f.A
[2]、f.B[2]が設定される。そして、順次、*
(乗算)と+(加算)が行なわれて、最終的にフローデ
ータSPが((f.A[0]*f.B[0])+(f.
A[1]*f.B[1]))+(f.A[2]*f.B
[2])として得られる。
【0055】以上のように、同じ処理内容のデータフロ
ープログラムであっても、同じ配列をメモリ配列として
扱うよりも、フロー配列にして扱う方が、コンパイルし
て得られるフローグラフの大きさが著しく小さくなるこ
とがわかる。
【0056】次に上述した同じ配列を用いた同じ処理内
容のデータフロープログラムであっても、メモリ配列に
して記述するか、フロー配列にして記述するかで、得ら
れるプログラム処理速度が異なることを説明する。
【0057】図1(a)ないし(c)は、配列arra
y[3]をインクリメントする処理を記述したデータフ
ロープログラム(array[3]++;)と、それを
コンパイルして得られるフローグラフとを示している。
【0058】図1(a)は、配列array[3]をフ
ロー構造体flowを用いて配列宣言し、フロー配列に
して上述のインクリメント処理を記述したプログラムで
ある。図1(b)は、図1(a)に記されるデータフロ
ープログラムをコンパイルして得られるデータフローグ
ラフである。このフローグラフに従えば、命令ノード
“inc”において、図6の演算部6がインクリメント
の演算処理を実行する。このデータフロープログラムで
は記憶部2のアクセスは行なわれず、演算部6で一度だ
け演算処理が行なわれる。
【0059】図1(c)は、配列array[3]をメ
モリ配列にして宣言し、上述のインクリメント処理を記
述したプログラムである。図1(d)は、図1(c)に
示されるデータフロープログラムをコンパイルして得ら
れるデータフローグラフである。このデータフローグラ
フに従えば、命令ノード“nop”、“+”および“i
nc”において、図6の演算部6が演算処理を実行す
る。すなわち図1(c)のデータフロープログラムでは
3回の演算処理が行なわれる。さらに、図1(d)の命
令ノード“sel”および“rep”において図6の拡
張データ記憶部2がアクセスされて、データが読出され
る。すなわち、2回の拡張データ記憶部2のアクセス処
理が行なわれる。さらに発火制御部5で同期(syn
c)が採られる。
【0060】上述したように、予め配列要素が確定した
同じ配列を用いた同じ処理内容のプログラムであって
も、図1(a)のフロー配列によるデータフロープログ
ラムにすれば、図1(c)のメモリ配列によるデータフ
ロープログラムよりも、データの同期(sync)をと
る必要もなくなり、さらに演算部6における演算回数が
減少する。加えて、図1(a)のプログラムでフロー配
列に宣言していることから、配列値を得るために拡張デ
ータ記憶部2をアクセスする必要がなくなって、その分
プログラムの実行処理速度は向上する。
【0061】また、図1(b)と図1(d)とを比較し
てもわかるように、フロー配列により記述されたデータ
フロープログラムのフローグラフは、メモリ配列により
記述されたデータフロープログラムのフローグラフより
もその大きさが小さくなることから、プログラムの記述
性も向上する。
【0062】また、フロー構造体は関数の引き数として
使用できることが知られているので、同様にフロー構造
体のメンバーでもあるフロー配列も関数の引き数として
使用が可能となり、各配列要素を関数の引き数として列
挙する必要がなくなり、プログラムの記述性が向上す
る。
【0063】上述したように、配列データのうち静的配
列をフロー構造体で宣言して用いるデータフロープログ
ラムの記述方法によれば、配列を一律に拡張データ記憶
部2に予め設定する従来のプログラム記述方法よりもプ
ログラムの実行処理速度の向上が図られるとともに、配
列データのうち動的配列のみを拡張データ記憶部2に格
納するようなプログラム記述方法でもあるので、データ
駆動型情報処理装置1におけるメモリの有効利用が図ら
れる。
【0064】
【発明の効果】以上のようにデータ駆動型情報処理装置
において本発明によるデータフロープログラム実行制御
方法を採用すれば、本発明による実行制御方法では、配
列型データの値が予め確定しているか否かに基づいて配
列型データをデータ記憶手段にストアするか、データパ
ケットを用いて情報処理装置に供給するかを選択的に指
定しているので、データパケットにして供給される配列
型データの分だけ、一律に配列型データをデータ記憶手
段にストアしていた従来のデータフロープログラムの実
行制御方法よりもデータ記憶手段のアクセスが不必要と
なり、実行処理速度の速いデータフロープログラムを記
述することが可能になるという効果がある。
【0065】また、本発明による実行制御方法によれ
ば、配列型データをその値が予め確定しているか否かに
基づいて、データ記憶手段にストアするか否かを決定し
ているので、データ記憶手段の有効利用が図られるとい
う効果がある。
【図面の簡単な説明】
【図1】(a)ないし(c)は、本発明の一実施例によ
る配列をメモリ配列として記述したデータフロープログ
ラムとフロー配列として記述したデータフロープログラ
ムと、それぞれのプログラムをコンパイルして得られる
フローグラフを示す図である。
【図2】メモリ配列を用いて記述されたデータフロープ
ログラムの一例を示す図である。
【図3】図2のデータフロープログラムをコンパイルし
て得られるフローグラフを示す図である。
【図4】フロー配列を用いて記述されたデータフロープ
ログラムの一例を示す図である。
【図5】図4のデータフロープログラムをコンパイルし
て得られるデータフローグラフを示す図である。
【図6】従来およびこの発明の一実施例に適用されるデ
ータ駆動型情報処理装置の概略構成図である。
【図7】従来およびこの発明の一実施例に適用されるデ
ータ駆動型情報処理装置を巡回するデータパケットのフ
ィールド構成を示す図である。
【図8】データフロープログラムのプログラム開発手順
を模式的に示す図である。
【図9】(a)ないし(c)は、配列をデータ処理する
ためのデータフロープログラムをデータフローグラフに
変換した場合の例を示す図である。
【図10】(a)ないし(d)は、データフロープログ
ラムをコンパイルして得られるフローグラフの例を示す
図である。
【符号の説明】
1 データ駆動型情報処理装置 2 拡張データ記憶部 5 発火制御部 6 演算部

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 複数の行先情報および複数の命令情報か
    らなるデータフロープログラムを記憶し、行先フィール
    ド、命令フィールド、第1のデータフィールドおよび第
    2のデータフィールドからなるデータパケットを入力
    し、そのデータパケットの行先フィールドの内容に基づ
    くアドレス指定を行なうことによって、前記データフロ
    ープログラムの次位の行先情報および次位の命令情報を
    読出し、それらの各情報を前記データパケットの行先フ
    ィールドおよび命令フィールドにそれぞれ格納して出力
    するプログラム記憶手段と、 前記プログラム記憶手段から出力される前記データパケ
    ットの待ち合わせを行ない、行先情報が一致する2つの
    データパケットのうち一方のデータパケットの第1のデ
    ータフィールドのデータを他方のデータパケットの第2
    のデータフィールドに格納してその他方のデータパケッ
    トを出力するデータ対生成手段と、 前記データ対生成手段から出力される前記データパケッ
    トを入力し、そのデータパケットの命令フィールドの命
    令情報を解読し、前記第1および第2のデータフィール
    ドの2つのデータに対して所定の演算処理を施し、その
    結果をそのデータパケットの第1のデータフィールドに
    格納して出力する演算処理手段とを含む情報処理手段
    と、 前記情報処理手段に接続されて、前記演算処理手段にお
    ける前記演算処理に必要とされるデータを供給するデー
    タ記憶手段とから構成されるデータ駆動型情報処理装置
    におけるデータフロープログラムの実行制御方法であっ
    て、 配列型のデータの値が予め確定しているか否かを判断す
    るステップと、 前記判断結果に基づいて前記配列型データを予め前記デ
    ータ記憶手段にストアするか、前記データパケットを用
    いて前記情報処理装置に供給するかを選択的に指定する
    ステップとを含むことを特徴とする、データフロープロ
    グラムの実行制御方法。
JP4018780A 1992-02-04 1992-02-04 データフロープログラムの実行制御方法 Pending JPH05217007A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP4018780A JPH05217007A (ja) 1992-02-04 1992-02-04 データフロープログラムの実行制御方法
US08/012,476 US5369774A (en) 1992-02-04 1993-02-02 Method and apparatus for handling array type data in a data driven type information processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4018780A JPH05217007A (ja) 1992-02-04 1992-02-04 データフロープログラムの実行制御方法

Publications (1)

Publication Number Publication Date
JPH05217007A true JPH05217007A (ja) 1993-08-27

Family

ID=11981149

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4018780A Pending JPH05217007A (ja) 1992-02-04 1992-02-04 データフロープログラムの実行制御方法

Country Status (2)

Country Link
US (1) US5369774A (ja)
JP (1) JPH05217007A (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3233245B2 (ja) * 1993-07-01 2001-11-26 日本電気株式会社 言語処理方法
JP3983455B2 (ja) * 2000-04-13 2007-09-26 シャープ株式会社 データ駆動型情報処理装置の実行制御装置
JP3911130B2 (ja) * 2001-02-15 2007-05-09 シャープ株式会社 データ駆動型情報処理装置
JP2005259030A (ja) * 2004-03-15 2005-09-22 Sharp Corp 性能評価装置、性能評価方法、プログラムおよびコンピュータ読取可能記録媒体
US11093223B2 (en) * 2019-07-18 2021-08-17 Ab Initio Technology Llc Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5021947A (en) * 1986-03-31 1991-06-04 Hughes Aircraft Company Data-flow multiprocessor architecture with three dimensional multistage interconnection network for efficient signal and data processing
JP2580592B2 (ja) * 1987-04-17 1997-02-12 株式会社日立製作所 データ構造駆動型処理装置とその制御方法
JP2632074B2 (ja) * 1990-07-11 1997-07-16 シャープ株式会社 データフロー型情報処理装置

Also Published As

Publication number Publication date
US5369774A (en) 1994-11-29

Similar Documents

Publication Publication Date Title
JP3032031B2 (ja) ループ最適化方法及び装置
US5355494A (en) Compiler for performing incremental live variable analysis for data-parallel programs
JP2666847B2 (ja) 異種言語間連絡方式
US5774727A (en) Parallel processing system for virtual processor implementation of machine-language instructions
US5355491A (en) Compiler including retargetable data generation
US6154828A (en) Method and apparatus for employing a cycle bit parallel executing instructions
EP0222773A4 (en) METHOD FOR PREPARING A COMPUTER PROGRAM FOR EVALUATING BOOLEAN EXPRESSIONS AND SIMILAR EXPRESSIONS AND COMPUTER FOR EVALUATING THE RANGES OF A LADDER STRUCTURE.
US6151704A (en) Method for optimizing a loop in a computer program by speculatively removing loads from within the loop
US5515535A (en) System and method for parallel variable optimization
JPH05217007A (ja) データフロープログラムの実行制御方法
Labrousse et al. CREATE-LIFE: a modular design approach for high performance ASICs
JP2585793B2 (ja) コンパイラシステム
JP3006505B2 (ja) 並列プロセスを含むプログラムの修正装置、修正方法、および修正プログラムを記憶する記憶媒体
JPH0713962A (ja) コンパイラ装置
Maurer Mapping the Data Flow Model of Computation into an Enhanced Von Neumann Processor.
JP2003044106A (ja) Sfc変換プログラム、制御プログラムの作成方法及びプログラマブルロジックコントローラ
JPS63285668A (ja) ベクトルロ−ド処理方法
Schneider Set-theoretic concepts in programming languages and their implementation
Phillips et al. Microcode generation for the control of a massively parallel computer
JPH03233703A (ja) シーケンス制御装置
JP3686091B2 (ja) データ駆動型情報処理装置
JPH0371229A (ja) プログラム制御装置
JP2005044017A (ja) マイクロプロセッサおよび該マイクロプロセッサで実行されるプログラムのためのコンパイラ
JPH10232772A (ja) プログラム変更装置
JPH0264731A (ja) データ域の初期化処理方式

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20000801