JP2990084B2 - 演算装置合成方法 - Google Patents

演算装置合成方法

Info

Publication number
JP2990084B2
JP2990084B2 JP9010821A JP1082197A JP2990084B2 JP 2990084 B2 JP2990084 B2 JP 2990084B2 JP 9010821 A JP9010821 A JP 9010821A JP 1082197 A JP1082197 A JP 1082197A JP 2990084 B2 JP2990084 B2 JP 2990084B2
Authority
JP
Japan
Prior art keywords
function
function call
generating
synthesizing
global variable
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
Application number
JP9010821A
Other languages
English (en)
Other versions
JPH10207929A (ja
Inventor
宗 山内
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.)
GIJUTSU KENKYU KUMIAI SHINJOHO SHORI KAIHATSU KIKO
NEC Corp
Original Assignee
GIJUTSU KENKYU KUMIAI SHINJOHO SHORI KAIHATSU KIKO
Nippon Electric Co Ltd
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 GIJUTSU KENKYU KUMIAI SHINJOHO SHORI KAIHATSU KIKO, Nippon Electric Co Ltd filed Critical GIJUTSU KENKYU KUMIAI SHINJOHO SHORI KAIHATSU KIKO
Priority to JP9010821A priority Critical patent/JP2990084B2/ja
Publication of JPH10207929A publication Critical patent/JPH10207929A/ja
Application granted granted Critical
Publication of JP2990084B2 publication Critical patent/JP2990084B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は半導体集積回路に関
し、特に半導体集積回路へのマッピングに関する。
【0002】
【従来の技術】従来、高度な並列処理を目指すアーキテ
クチャとして、FPGA(FieldProgramm
able Gate Array)などのプログラマブ
ルな半導体集積回路上にデータ/制御流に従ってプログ
ラムを直接マップして実行するという方式がある。プロ
グラムを半導体集積回路にマップする際に、データフロ
ーの概念を取り入れると大規模な並列性を取り出すこと
が容易になる。
【0003】この方式において、プログラムを如何に半
導体集積回路にマップするかは重要な技術課題である。
単純にデータフロー型計算モデルの概念を取り入れると
大規模な並列性を取り出すことは容易になるが、プログ
ラミングモデルとしては使いにくいものとなる。データ
フロー型計算モデルの概念と相性のよいプログラミング
モデルに基づいたプログラム言語として良く知られてい
るのは、単一代入の関数型言語である。
【0004】しかし、世間に広く受け入れられているC
言語やFORTRAN等の手続型言語と比べると、単一
代入の関数型言語は制約が厳しい言語で、あまり一般的
ではなく、使いやすいとは言いがたい。
【0005】逆に、半導体集積回路上にデータ/制御流
に従ってプログラムを直接マップする際の記述言語とし
て従来のC言語やFORTRAN等の手続型言語を用い
ることにも問題が多い。局所変数に関してはスコープに
従ってデータ流を解析することによりマップすることが
可能であるが、手続型言語につきものの大域変数の存在
が厄介である。
【0006】大域変数はプログラムの全領域で参照/代
入されるので、データ流と制御流に複雑に影響され、ス
コープの解析は容易ではない。そして、関数を抜けたら
その存在を失う局所変数と異なり、大域変数は常に変数
の実体が存在し続けなければならないので、データフロ
ー型計算モデルのようにデータが常に一か所に止まらず
に流れ続けることを基本とした計算モデルとは相性が悪
い。
【0007】
【発明が解決しようとする課題】本発明が解決しようと
する課題は、半導体集積回路上にデータ/制御流に従っ
てプログラムを直接マップする際の記述言語として手続
型言語を用いつつ、大規模な並列性を取り出すことがで
きる演算装置合成方法を提供することである。
【0008】
【課題を解決するための手段】上記のような課題を解決
するため、本発明は、手続型言語における関数起動の呼
び出し条件として、データフローの概念に基づいた、○
引数の値が揃っていること、という条件の他に、その関
数が参照する大域変数に対して、○代入している演算が
終了していること、○副作用を与える関数が終了してい
ること、という条件を加えることにより、データフロー
の概念を拡張し、大域変数という概念を用いる手続型言
語でもデータフローの概念が有する高い並列性を取り出
すことが可能になるというものである。
【0009】本発明は、手続型言語により記述されたプ
ログラムを半導体集積回路にマップする演算装置合成方
法において、前記手続型言語により記述された関数、及
び参照及び代入のいずれか又は両方を行う大域変数の参
照代入関係を再帰的に解析する大域変数解析段階と、大
域変数に対してどの演算及び関数呼び出しが代入するか
についての情報を保持するスコープスタックを生成する
スコープスタック生成段階と、前記スコープスタックを
成長方向の逆方向に辿り、関数呼び出し甲が参照する大
域変数に対して代入する関数呼び出し乙及び演算を前記
参照代入関係に基づいて見つけるスコープ解析段階と、
前記関数呼び出し甲の引数が揃い、かつ、前記関数呼び
出し乙及び前記演算が終了したとき、関数呼び出し甲を
起動する回路を生成する回路生成段階とを含むことを特
徴とする演算装置合成方法を提供する。
【0010】これにより、世間で広く用いられている手
続型言語をデータフロー的な概念に基づきマップするこ
とが可能になり、使いやすさと高性能を両立することが
可能になる。
【0011】
【発明の実施の形態】本発明の第1の実施の形態につい
て図面を参照して説明する。
【0012】図1に入力プログラムの例を示す。このプ
ログラムを半導体集積回路に直接マップして実現するこ
とを考え、特に関数呼び出しh(x)103をどのタイ
ミングで起動するかについて着目する。大域変数a10
9が存在しなければ、関数呼び出しh()の引数x10
4の値がそろった時点で関数呼び出しh(x)103を
起動することが可能である。しかし、大域変数が存在す
る場合には、そのデータ依存関係も考慮する必要があ
る。
【0013】そこで、まず、各関数呼び出しで呼び出さ
れるサブルーチンにおいて、どの大域変数が参照され、
どの大域変数には代入がなされるのかを解析する。解析
は図2に示すように、関数f()の大域変数参照表20
1及び大域変数代入表202、関数g()の大域変数参
照表203及び大域変数代入表204、並びに関数
h()の大域変数参照表205及び大域変数代入表20
6を生成して行う。
【0014】ここで注意しなければならないのは、関数
f()と大域変数のデータ依存関係は、一見すると大域
変数bへの代入106しか存在しないかのように見える
が、関数f()から呼ばれる関数g()及び関数h()
において大域変数aへの代入が行われていることであ
る。結果として、関数f()は大域変数bだけではな
く、大域変数aともデータ依存関係があることになる。
このように、ある関数自身の中で直接のデータ依存関係
はないが、その関数の中で呼び出される他の関数の中で
データ依存関係があるような大域変数については、関数
の中で呼ばれる関数がどの大域変数に対して代入するか
のリストアップを再帰的に実行することにより解析を行
う。
【0015】次に、どの大域変数に対してどこで代入が
行われているかを示すスコープスタックを生成する。図
3は図1の入力プログラム及び図2に示した表に従って
生成されたスコープスタック301を示した図である。
この場合は関数呼び出しf()におけるスコープスタッ
クであり、プログラムを記述の順番に解析するのに連れ
てスコープスタック301は図3の右方向に成長する。
そして、スコープスタック301の各項目には変数名、
局所変数及び大域変数の区別と、その場での代入なの
か、関数呼び出しによる大域変数への代入なのかの区別
とを記し、その場での代入ならば×印を、関数呼び出し
による大域変数への代入の場合にはその関数名を記す。
【0016】ここで言う関数呼び出しによる大域変数へ
の代入とは、その関数を呼び出すことにより、呼び出さ
れた関数の中で大域変数に対する代入が行われるという
ことであり、どの関数呼び出しでどのような代入が行わ
れるかは図2を参照すればわかる。
【0017】スコープスタック301を用いると、プロ
グラムのある時点で変数への参照が生じた場合に、参照
すべき値はどの代入の結果であるかを知ることができ
る。即ち、ある変数への参照が生じたら、その時点のス
コープスタック301を逆向きに辿り、最初に見つけた
その変数への代入が参照すべき値となるのである。
【0018】そしていよいよ関数呼び出しh()103
をどのタイミングで起動するかを決定する。関数呼び出
しh()103を起動するのに必要なのは、引数xの値
が求められている事、及び関数呼び出しh()103が
参照する大域変数aの値が求められている事である。そ
こで、スコープスタック301を逆向きに辿って引数x
及び大域変数aがそれぞれどの時点で求められるのかを
判定する。すると、引数xについては引数xへの参照及
び代入105で代入されたときの値を待つ必要があり、
大域変数aについては関数呼び出しg()101で代入
されるので関数呼び出しg()101の終了を待つ必要
があることがわかる。
【0019】従って、関数呼び出しh()103を起動
するには、引数xへの参照と代入105、及び関数呼び
出しg()101の双方の終了を待てばよい。図4は関
数呼び出しh()を起動する信号を生成する例を示す図
である。図4を参照すると、「x++;」の処理をする
ブロック401が処理を終了したことを示す終了信号4
04、及び関数g(x)を呼び出すブロック402が終
了したことを示す終了信号405の双方の信号が揃った
ことを各終了信号の同期をとる同期化ブロック406に
よって検出されると、同期化ブロック406は関数h
(x)の起動信号407を生成する。
【0020】以上のようにすることにより、大域変数に
よる依存関係が生じる従来のC言語やFORTRANな
どの手続型言語をデータフロー的な概念に基づきマップ
することが可能になり、使いやすさと高度な並列性を両
立することが可能になる。
【0021】図5は本発明の第2の実施の形態による関
数h(x)503の起動を示した図である。図1のプロ
グラムを見ると、関数呼び出しh()103を起動する
には必ずしも関数呼び出しg()101の実行が終了す
るのを待つ必要がないことに気付く。関数呼び出し
h()103が必要としているのは大域変数aの値なの
で、関数呼び出しg()101の中の大域変数aへの参
照と代入107が終わった時点ですぐに関数呼び出しh
()103を起動しても構わないのである。この点を考
慮したのが第2の実施の形態である。
【0022】図4では、「x++;」の処理の終了信号
404及び関数g(x)の終了信号405の双方の信号
が揃ったことを各終了信号の同期化ブロック406によ
り検出していたが、図5では、「x++;」の処理の終
了信号504、及び大域変数aへの参照及び代入107
の直後に関数g(x)における大域変数aへの代入の終
了信号509の双方を各終了信号の同期化ブロック50
6によって検出し、双方が揃うと同期化ブロック506
は関数h(x)の起動信号507を生成する。これによ
り、関数呼び出しg()101の終了を待たずして関数
呼び出しh()103を起動することが可能となり、実
行時間の短縮を図ることができる。
【0023】図6は本発明の第3の実施の形態の対象と
なるプログラムの例である。第1及び第2の実施の形態
では、大域変数aについてのみ待ち合わせをすればよか
った。これに対し、複数の大域変数について依存関係が
ある場合について図6を参照して説明する。
【0024】関数呼び出しg()601において大域変
数a、b、cに代入がされ、関数呼び出しh()602
において大域変数a、b、cへの参照が生じる。関数呼
び出しg()601における大域変数a、b、cへの代
入603、604、605の順番の依存関係が明確であ
り、大域変数cへの代入605が最後に実行される。従
って、それらの複数の大域変数への代入のうち、最後の
代入終了信号、即ち大域変数cへの代入605の代入終
了信号を代表の代入終了信号として用いることが可能で
ある。
【0025】図7は本発明の第4の実施の形態の対象と
なるプログラムの例である。第4の実施の形態も第3の
実施の形態と同様に複数の大域変数を扱うが、第3の実
施の形態では大域変数どうしの順番の依存関係が明確な
プログラムを対象にしたのに対し、第4の実施の形態で
は順番が特定できないようなプログラムを対象とする。
【0026】大域変数a、b、cへの代入703、70
4、705はそれぞれ互いにデータの依存関係が無い関
数を呼び出した結果を代入しているので、同時に関数呼
び出しの実行が可能であり、それぞれの代入が終了する
時刻の前後関係が不明である。このため、最後に代入が
終了する大域変数が特定できず、第3の実施の形態のよ
うに代表の代入終了信号を決めることができない。これ
に対して、第4の実施の形態では大域変数aへの代入7
03の代入終了信号、大域変数bへの代入704の代入
終了信号、及び大域変数cへの代入705の代入終了信
号の3つの代入終了信号が全て揃ったことを検出する同
期化ブロックを追加し、その出力を関数呼び出しg()
701の代入終了信号として用いる。これにより、複数
の大域変数への代入の終了する順番を特定できないプロ
グラムに対しても対応することができる。
【0027】
【発明の効果】本発明によれば、手続型言語における関
数起動の呼び出し条件として、データフローの概念に基
づいた、○引数の値が揃っていること、という条件の他
に、その関数が参照する大域変数に対して、○代入して
いる演算が終了していること、○副作用を与える関数が
終了していること、という条件を加えることにより、デ
ータフローの概念を拡張し、大域変数という概念を用い
る手続型言語でもデータフローの概念が有する高い並列
性を取り出すことが可能になるというものである。
【0028】本発明による演算装置合成方法は、各関数
が参照/代入する大域変数について再帰的に解析する段
階と、ある大域変数に対してどの演算や関数呼び出しが
代入しているかという情報を保持するスコープスタック
を生成する段階と、ある関数呼び出しを半導体集積回路
にマップする際に、その関数が参照している大域変数に
対して代入している演算や関数呼び出しを、スコープス
タックを逆に辿って見つけだす段階と、ある関数の呼び
出し条件として、○その関数の引数が揃っていること、
○スコープスタックに従い、その関数が参照している大
域変数へ代入している演算及び関数呼び出しが終了して
いること、の2条件を集め、それらの全ての条件が揃っ
た時点で関数呼び出しを起動する回路を生成する段階で
構成される。
【0029】これにより、世間で広く用いられている手
続型言語をデータフロー的な概念に基づきマップするこ
とが可能になり、使いやすさと高性能を両立することが
可能になる。
【0030】以上、本発明を実施の形態に基づいて説明
したが、本発明はこれに限定されるものではなく、当業
者の通常の知識の範囲内でその変更や改良が可能である
ことは勿論である。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態の対象となるプログ
ラムの例である。
【図2】図1のプログラムの大域変数参照表及び大域変
数代入表である。
【図3】図1のプログラム及び図2に示した表に従って
生成されたスコープスタックを示した図である。
【図4】関数呼び出しh()を起動する信号を生成する
例を示す図である。
【図5】本発明の第2の実施の形態による関数h(x)
の起動を示した図である。
【図6】本発明の第3の実施の形態の対象となるプログ
ラムの例である。
【図7】本発明の第4の実施の形態の対象となるプログ
ラムの例である。
【符号の説明】
201、203、205 大域変数参照表 202、204、206 大域変数代入表 301 スコープスタック
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.6,DB名) G06F 17/50 G06F 9/06 G06F 9/44 - 9/455

Claims (8)

    (57)【特許請求の範囲】
  1. 【請求項1】 手続型言語により記述されたプログラム
    を半導体集積回路にマップする演算装置合成方法におい
    て、 前記手続型言語により記述された関数、及び参照及び代
    入のいずれか又は両方を行う大域変数の参照代入関係を
    再帰的に解析する大域変数解析段階と、 大域変数に対してどの演算及び関数呼び出しが代入する
    かについての情報を保持するスコープスタックを生成す
    るスコープスタック生成段階と、 前記スコープスタックを成長方向の逆方向に辿り、関数
    呼び出し甲が参照する大域変数に対して代入する関数呼
    び出し乙及び演算を前記参照代入関係に基づいて見つけ
    るスコープ解析段階と、 前記関数呼び出し甲の引数が揃い、かつ、前記関数呼び
    出し乙及び前記演算が終了したとき、関数呼び出し甲を
    起動する回路を生成する回路生成段階とを含むことを特
    徴とする演算装置合成方法。
  2. 【請求項2】 請求項1記載の演算装置合成方法におい
    て、前記回路生成段階は、前記関数呼び出し甲の引数が
    揃い、かつ、前記関数呼び出し乙における大域変数への
    代入が終了したとき、関数呼び出し甲を起動する回路を
    生成することを特徴とする演算装置合成方法。
  3. 【請求項3】 請求項1及び2のいずれかに記載の演算
    装置合成方法において、前記関数呼び出し乙により代入
    される複数の大域変数が存在する場合、前記回路生成段
    階は、前記関数呼び出し甲の引数が揃い、かつ、前記関
    数呼び出し乙における大域変数への代入のうち最も遅く
    終了する代入が終了したとき、関数呼び出し甲を起動す
    る回路を生成することを特徴とする演算装置合成方法。
  4. 【請求項4】 請求項1乃至3のいずれかに記載の演算
    装置合成方法において、前記関数呼び出し乙により代入
    される複数の大域変数が存在する場合、前記回路生成段
    階は、前記関数呼び出し甲の引数が揃い、かつ、前記関
    数呼び出し乙における大域変数への代入がすべて終了し
    たとき、関数呼び出し甲を起動する回路を生成すること
    を特徴とする演算装置合成方法。
  5. 【請求項5】 請求項1乃至4のいずれかに記載の演算
    装置合成方法において、前記半導体集積回路はPLD
    (Programmable Logic Devic
    e)であることを特徴とする演算装置合成方法。
  6. 【請求項6】 請求項1乃至4のいずれかに記載の演算
    装置合成方法において、前記半導体集積回路は再構成可
    能であることを特徴とする演算装置合成方法。
  7. 【請求項7】 請求項6に記載の演算装置合成方法にお
    いて、前記再構成可能な半導体集積回路はFPGA(F
    ield Programmable Gate Ar
    ray)であることを特徴とする演算装置合成方法。
  8. 【請求項8】 請求項1乃至7のいずれかに記載の演算
    装置合成方法において、前記手続型言語はFORTRA
    N及びC言語のいずれかであることを特徴とする演算装
    置合成方法。
JP9010821A 1997-01-24 1997-01-24 演算装置合成方法 Expired - Fee Related JP2990084B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9010821A JP2990084B2 (ja) 1997-01-24 1997-01-24 演算装置合成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9010821A JP2990084B2 (ja) 1997-01-24 1997-01-24 演算装置合成方法

Publications (2)

Publication Number Publication Date
JPH10207929A JPH10207929A (ja) 1998-08-07
JP2990084B2 true JP2990084B2 (ja) 1999-12-13

Family

ID=11761031

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9010821A Expired - Fee Related JP2990084B2 (ja) 1997-01-24 1997-01-24 演算装置合成方法

Country Status (1)

Country Link
JP (1) JP2990084B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5342508B2 (ja) * 2010-06-07 2013-11-13 三菱電機株式会社 情報処理装置及び情報処理方法及びプログラム

Also Published As

Publication number Publication date
JPH10207929A (ja) 1998-08-07

Similar Documents

Publication Publication Date Title
KR101126255B1 (ko) 신호처리장치
JP3315857B2 (ja) 一般フロントエンド、及び動的にロード可能なバックエンドを有するコンパイラ
US6922827B2 (en) Iterative software development environment with prioritized build rules
JPH0734178B2 (ja) 変換コードを実行するための効果的エラー報告
US7594217B2 (en) Matching client interfaces with service interfaces
JPH11250112A (ja) ハードウェア合成方法およびハードウェア合成装置並びにハードウェア合成プログラムを記録した記録媒体
JP2574985B2 (ja) ディジタルデータ処理システムとエラー処理方法
JP2990084B2 (ja) 演算装置合成方法
US6198813B1 (en) System and method for providing call processing services using call independent building blocks
US20070006121A1 (en) Development activity recipe
Engels et al. Rapid prototyping for DSP systems with multiprocessors
US7565632B2 (en) Behavioral synthesizer system, operation synthesizing method and program
JP2663893B2 (ja) アーキテクチャ・シミュレータ
EP1027652A1 (en) Apparatus and method for logging information relating to function calls to a function library
CN111401020A (zh) 一种界面加载方法、***和计算设备
Kartal et al. An evaluation of aspect oriented programming for embedded real-time systems
JP2001256075A (ja) 開発システム、開発方法、記録媒体
CN117632711A (zh) 一种基于触发机制的软件调试方法及装置
JPH02220145A (ja) プログラムトレース方式
Lauwereins et al. GRAPE-II.
JPH0695869A (ja) ダイナミックリンクライブラリプログラムの入出力インターフェース情報取得方式
JP3323147B2 (ja) コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体
Kountouris et al. A real-time HW/SW co-design approach based on the SIGNAL language and its environment
US6625782B1 (en) Software structure methodology description of programmable phase-locked loop die and device presentation techniques
JPH0430239A (ja) コマンドオプション指定処理装置

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19990916

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081008

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091008

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091008

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101008

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111008

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121008

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131008

Year of fee payment: 14

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees