JPH09160949A - ハードウエアとソフトウエアの混在システムの設計支援方法 - Google Patents
ハードウエアとソフトウエアの混在システムの設計支援方法Info
- Publication number
- JPH09160949A JPH09160949A JP7318688A JP31868895A JPH09160949A JP H09160949 A JPH09160949 A JP H09160949A JP 7318688 A JP7318688 A JP 7318688A JP 31868895 A JP31868895 A JP 31868895A JP H09160949 A JPH09160949 A JP H09160949A
- Authority
- JP
- Japan
- Prior art keywords
- program
- constituent elements
- hardware
- information
- object program
- 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
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】
【課題】マイクロコンピュータの制御プログラムの機能
の内、ハードウエア化すべき部分の選択を支援する。 【解決手段】組み込みプログラム108中のソースプロ
グラムをディスプレイ104に表示し、その中のシミュ
レーション開始点と終了点とそれら2点間の満たすべき
処理時間とをユーザに指定させ(111)、組み込みプ
ログラム108中のオブジェクトプログラム解析してそ
の構成要素としての関数と関数を構成するセグメントと
およびそれらの相互の関係を抽出し(113)、オブジ
ェクトプログラムの動作を解析して、開始点を通過して
から終了点を通過するまでに実行された構成要素毎に、
処理時間と処理回数等を記録し、これらの構成要素と、
それらに関して記録された処理時間、処理回数等を表示
し(115)、ユーザに、ハードウエア化すべき部分を
構成要素単位に選択可能にする。
の内、ハードウエア化すべき部分の選択を支援する。 【解決手段】組み込みプログラム108中のソースプロ
グラムをディスプレイ104に表示し、その中のシミュ
レーション開始点と終了点とそれら2点間の満たすべき
処理時間とをユーザに指定させ(111)、組み込みプ
ログラム108中のオブジェクトプログラム解析してそ
の構成要素としての関数と関数を構成するセグメントと
およびそれらの相互の関係を抽出し(113)、オブジ
ェクトプログラムの動作を解析して、開始点を通過して
から終了点を通過するまでに実行された構成要素毎に、
処理時間と処理回数等を記録し、これらの構成要素と、
それらに関して記録された処理時間、処理回数等を表示
し(115)、ユーザに、ハードウエア化すべき部分を
構成要素単位に選択可能にする。
Description
【0001】
【発明の属する技術分野】本発明は、与えられた仕様の
マイクロプロセッサを利用するシステムの設計にあた
り、そのシステムが有すべき機能を、周辺回路により実
現すべき一部の機能と、そのマイクロプロセッサの制御
プログラムとで実現すべき機能とに分割するのを支援す
る方法に関する。
マイクロプロセッサを利用するシステムの設計にあた
り、そのシステムが有すべき機能を、周辺回路により実
現すべき一部の機能と、そのマイクロプロセッサの制御
プログラムとで実現すべき機能とに分割するのを支援す
る方法に関する。
【0002】
【従来の技術】マイクロプロセッサを利用したシステム
用のLSIの設計では、そのシステムが有すべき多数の
機能の各々をハードウェアで実行させるかソフトウェア
で実行させるかの選択が重要である。これは、ある機能
をソフトウェアで実行させる方がLSIのコストが小さ
くて済み、修正も容易であるが、その機能をハードウェ
アで実行させる方が処理速度は速いというトレードオフ
が存在するためである。システムが有すべき多数の機能
を、ソフトウエアで実現すべき機能とハードウエアで実
現すべき機能とに区分することは、機能分割とも呼ばれ
る。このようなハードウェアとソフトウェアの機能分割
における最も重要な基準はシステムの性能(処理速度)
である。しかし、性能以外にも、ハードウェアとソフト
ウェア間の転送データ量、LSIの面積(ハードウェア
の面積とプログラムを格納するROMの面積)、消費電
力、仕様変更への容易性等、機能分割に当たり考慮すべ
き点がいろいろある。
用のLSIの設計では、そのシステムが有すべき多数の
機能の各々をハードウェアで実行させるかソフトウェア
で実行させるかの選択が重要である。これは、ある機能
をソフトウェアで実行させる方がLSIのコストが小さ
くて済み、修正も容易であるが、その機能をハードウェ
アで実行させる方が処理速度は速いというトレードオフ
が存在するためである。システムが有すべき多数の機能
を、ソフトウエアで実現すべき機能とハードウエアで実
現すべき機能とに区分することは、機能分割とも呼ばれ
る。このようなハードウェアとソフトウェアの機能分割
における最も重要な基準はシステムの性能(処理速度)
である。しかし、性能以外にも、ハードウェアとソフト
ウェア間の転送データ量、LSIの面積(ハードウェア
の面積とプログラムを格納するROMの面積)、消費電
力、仕様変更への容易性等、機能分割に当たり考慮すべ
き点がいろいろある。
【0003】従来は、人手か、簡単なツールを用いてプ
ログラムを解析し、ハードウェア化する部分を選択して
いた。あるいは、設計者の経験を利用してハードウェア
化する部分を決定し、ソフトウェアの設計を行う過程で
性能的に不十分な機能をその都度ハードウェア化すると
いう手法をとっていた。この場合、ハードウエア化すべ
き機能を人手で仮に選択した後、選択された機能をハー
ドウエア化した状態でのシステム性能等の評価が必要で
あり、この評価の結果によっては、ハードウエア化すべ
き機能を再度選択し直す必要が生じるため、ハードウエ
ア化すべき機能の最終決定までには多くの時間が掛か
る。
ログラムを解析し、ハードウェア化する部分を選択して
いた。あるいは、設計者の経験を利用してハードウェア
化する部分を決定し、ソフトウェアの設計を行う過程で
性能的に不十分な機能をその都度ハードウェア化すると
いう手法をとっていた。この場合、ハードウエア化すべ
き機能を人手で仮に選択した後、選択された機能をハー
ドウエア化した状態でのシステム性能等の評価が必要で
あり、この評価の結果によっては、ハードウエア化すべ
き機能を再度選択し直す必要が生じるため、ハードウエ
ア化すべき機能の最終決定までには多くの時間が掛か
る。
【0004】したがって、このような機能分割のために
は、ソフトウエアで実現される機能とハードウエアで実
現される機能に機能分割した状態で、処理速度その他の
特性に関してシミュレーション出来ることが望ましい。
さらに、ハードウエア化すべき部分をこのシミュレーシ
ョンにより自動的に決定できることが望ましい。さら
に、ハードウエア化することが望ましいと決定された機
能を実現するハードウエアは、計算機により自動的に生
成出来ることが望ましい。
は、ソフトウエアで実現される機能とハードウエアで実
現される機能に機能分割した状態で、処理速度その他の
特性に関してシミュレーション出来ることが望ましい。
さらに、ハードウエア化すべき部分をこのシミュレーシ
ョンにより自動的に決定できることが望ましい。さら
に、ハードウエア化することが望ましいと決定された機
能を実現するハードウエアは、計算機により自動的に生
成出来ることが望ましい。
【0005】現在、ハードウェア/ソフトウェア混在シ
ステムの性能のシミュレーションを支援する手段とし
て、論理シミュレータ上でマイクロプロセッサのモデル
を動作させ、ハードウェア部分とプログラムを同時にシ
ミュレーションする技術がある。例えば、情報処理学会
大47回全国大会(平成5年後期)、6−85頁(以
下、第1の参考文献と呼ぶ)には、プログラムのデバッ
グ機能を持つマイクロプロセッサモデルを論理シミュレ
ータ上で動作させる技術が紹介されている。しかし、こ
れらのハードウェア/ソフトウェア混在システムのシミ
ュレーションの方法は、ハードウェア/ソフトウェア混
在システムの動作を検証する目的で作られているため、
処理速度を計る手段に関しては、プログラムの内、ユー
ザ指定の一部分の処理時間を測定する機能がある程度で
ある。
ステムの性能のシミュレーションを支援する手段とし
て、論理シミュレータ上でマイクロプロセッサのモデル
を動作させ、ハードウェア部分とプログラムを同時にシ
ミュレーションする技術がある。例えば、情報処理学会
大47回全国大会(平成5年後期)、6−85頁(以
下、第1の参考文献と呼ぶ)には、プログラムのデバッ
グ機能を持つマイクロプロセッサモデルを論理シミュレ
ータ上で動作させる技術が紹介されている。しかし、こ
れらのハードウェア/ソフトウェア混在システムのシミ
ュレーションの方法は、ハードウェア/ソフトウェア混
在システムの動作を検証する目的で作られているため、
処理速度を計る手段に関しては、プログラムの内、ユー
ザ指定の一部分の処理時間を測定する機能がある程度で
ある。
【0006】したがって、システムの設計に当たり、そ
のシステムが有すべき機能の性能は、LSIにある信号
が入力されてから、そのLSIが処理を行い別の信号を
出力するまでの処理時間等で定義される。ソフトウェア
上では信号の入力と信号の出力が同じサブルーチン内で
行われる訳ではなく、一般的には異なるサブルーチンで
行われ、その間に通過するプログラム上の経路も入力デ
ータの値や、その時のLSIの状態により変化する。ま
た、ハードウェア化されるべき処理はサブルーチン内の
一部の処理であったり複数のサブルーチンにまたがる処
理であったりする。そのため、ハードウェア化すべき機
能の候補(プログラムの一部)を探すためには測定部分
を何度も変えて繰り返し測定する必要がある。
のシステムが有すべき機能の性能は、LSIにある信号
が入力されてから、そのLSIが処理を行い別の信号を
出力するまでの処理時間等で定義される。ソフトウェア
上では信号の入力と信号の出力が同じサブルーチン内で
行われる訳ではなく、一般的には異なるサブルーチンで
行われ、その間に通過するプログラム上の経路も入力デ
ータの値や、その時のLSIの状態により変化する。ま
た、ハードウェア化されるべき処理はサブルーチン内の
一部の処理であったり複数のサブルーチンにまたがる処
理であったりする。そのため、ハードウェア化すべき機
能の候補(プログラムの一部)を探すためには測定部分
を何度も変えて繰り返し測定する必要がある。
【0007】一方、シミュレーションだけでなく、機能
分割あるいはハードウエア化の自動化も研究されてい
る。か一方、例えば、IEEE,Design&Tes
t of Computers,Volume10,N
umber4,1993年12月、64頁〜75頁(以
下、第2の参考文献と呼ぶ)に示されるように、ハード
ウェアとソフトウェアの切り分けの自動化を目指した研
究も報告されている。この論文ではC言語で記述したシ
ステムの動作記述からコプロセッサ(ハードウェア)と
プログラム(ソフトウェア)を自動的に生成するシステ
ムが提案されている。これらの研究では、ソフトウェア
の動作を解析し処理頻度の高い部分を選んでハードウェ
ア部分とする処理を自動化している。しかし、自動化の
際のハードウェア化部分の選択の基準が処理頻度の高い
部分だけであり、前記のような他の観点での評価は行わ
れていない。このため、システムの使用を実現するのに
最適な機能分割が実現できない。この問題を軽減するた
めに、この従来技術では、設計者が直接ハードウェア化
すべき部分を指定可能になっているが、その場合も、指
摘できるのが、C言語のレベルのプログラム内の部分で
あり、実際の機械語レベルの命令列ではないために、設
計者が意図した細かい分割を指定できないという問題が
ある。また、自動的にハードウエア化するための技術
は、現段階では、十分実用的とは言えず、ある機能を実
現するために、このような自動的な方法で生成されるハ
ードウエアは、人手でその機能をハードウエア化した場
合に得られるハードウエアに比べて、集積度あるいは処
理速度等で劣る場合がある。
分割あるいはハードウエア化の自動化も研究されてい
る。か一方、例えば、IEEE,Design&Tes
t of Computers,Volume10,N
umber4,1993年12月、64頁〜75頁(以
下、第2の参考文献と呼ぶ)に示されるように、ハード
ウェアとソフトウェアの切り分けの自動化を目指した研
究も報告されている。この論文ではC言語で記述したシ
ステムの動作記述からコプロセッサ(ハードウェア)と
プログラム(ソフトウェア)を自動的に生成するシステ
ムが提案されている。これらの研究では、ソフトウェア
の動作を解析し処理頻度の高い部分を選んでハードウェ
ア部分とする処理を自動化している。しかし、自動化の
際のハードウェア化部分の選択の基準が処理頻度の高い
部分だけであり、前記のような他の観点での評価は行わ
れていない。このため、システムの使用を実現するのに
最適な機能分割が実現できない。この問題を軽減するた
めに、この従来技術では、設計者が直接ハードウェア化
すべき部分を指定可能になっているが、その場合も、指
摘できるのが、C言語のレベルのプログラム内の部分で
あり、実際の機械語レベルの命令列ではないために、設
計者が意図した細かい分割を指定できないという問題が
ある。また、自動的にハードウエア化するための技術
は、現段階では、十分実用的とは言えず、ある機能を実
現するために、このような自動的な方法で生成されるハ
ードウエアは、人手でその機能をハードウエア化した場
合に得られるハードウエアに比べて、集積度あるいは処
理速度等で劣る場合がある。
【0008】
【発明が解決しようとする課題】上記第2の参考文献が
めざす機能分割の自動化は、理想的であるが、現実には
その技術は、まだ実用段階には達していない。このよう
な技術の状況では、設計者がハードウエア化すべき部分
を選択するのを支援できる技術がより実用的である。そ
のようは支援のためには、以下のような条件を満たすこ
とが望ましい。
めざす機能分割の自動化は、理想的であるが、現実には
その技術は、まだ実用段階には達していない。このよう
な技術の状況では、設計者がハードウエア化すべき部分
を選択するのを支援できる技術がより実用的である。そ
のようは支援のためには、以下のような条件を満たすこ
とが望ましい。
【0009】(1)ハードウエア化すべき部分は、オブ
ジェクトプログラム上の構成要素を単位として設計者が
指定出来ることが望ましい。そのためには、シミュレー
ション結果は、オブジェクトプログラム上の構成要素の
単位で得られることが望ましい。この場合、設計者が動
作解析すべきプログラム部分を比較的容易に指定できる
ことが望ましい。そのためには、動作解析すべき範囲を
ソースプログラム上で指定できることが望ましい。
ジェクトプログラム上の構成要素を単位として設計者が
指定出来ることが望ましい。そのためには、シミュレー
ション結果は、オブジェクトプログラム上の構成要素の
単位で得られることが望ましい。この場合、設計者が動
作解析すべきプログラム部分を比較的容易に指定できる
ことが望ましい。そのためには、動作解析すべき範囲を
ソースプログラム上で指定できることが望ましい。
【0010】(2)ユーザが指定した複数の動作解析す
べき区間に関するシミュレーションを行い、その結果に
基づいて、ユーザ指定の処理条件に違反したか否かを判
別し、違反した複数の区間があれば、それらをハードウ
エア化すべき部分の候補としてユーザに提示し、ユーザ
がそれらの区間の各々の内部の内、ハードウエア化すべ
き部分を選択するのを支援するシミュレーション方法が
望ましい。
べき区間に関するシミュレーションを行い、その結果に
基づいて、ユーザ指定の処理条件に違反したか否かを判
別し、違反した複数の区間があれば、それらをハードウ
エア化すべき部分の候補としてユーザに提示し、ユーザ
がそれらの区間の各々の内部の内、ハードウエア化すべ
き部分を選択するのを支援するシミュレーション方法が
望ましい。
【0011】(3)さらに、シミュレーションの結果を
利用して一部の機能をハードウエア化した後に、その結
果を利用して新たにハードウエア化すべき部分を見つけ
るように、シミュレーションを簡単に繰り返すことが出
来ることが望ましい。
利用して一部の機能をハードウエア化した後に、その結
果を利用して新たにハードウエア化すべき部分を見つけ
るように、シミュレーションを簡単に繰り返すことが出
来ることが望ましい。
【0012】その際、設計者が望めば、設計者が選んだ
ハードウエア化すべきプログラム部分を設計者が人手で
ハードウエア化した後に、その結果を取り込んで、新た
なシミュレーションを実行できるシミュレーション方法
が望ましい。
ハードウエア化すべきプログラム部分を設計者が人手で
ハードウエア化した後に、その結果を取り込んで、新た
なシミュレーションを実行できるシミュレーション方法
が望ましい。
【0013】したがって、本発明の目的は、動作解析す
べきオブジェクトプログラムの各構成要素毎にシミュレ
ーション結果を出力できる設計支援方法を提供すること
である。
べきオブジェクトプログラムの各構成要素毎にシミュレ
ーション結果を出力できる設計支援方法を提供すること
である。
【0014】本発明のより具体的な目的は、これらの動
作解析すべき区間をユーザが指定でき、シミュレーショ
ン結果として、オブジェクトプログラムの各構成要素毎
にシミュレーション結果を出力できる設計支援方法を提
供することである。本発明のさらに具体的な目的は、動
作解析すべき区間をユーザがソースプログラム上で指定
でき、シミュレーション結果として、オブジェクトプロ
グラムの各構成要素毎にシミュレーション結果を出力で
きる設計支援方法を提供することである。
作解析すべき区間をユーザが指定でき、シミュレーショ
ン結果として、オブジェクトプログラムの各構成要素毎
にシミュレーション結果を出力できる設計支援方法を提
供することである。本発明のさらに具体的な目的は、動
作解析すべき区間をユーザがソースプログラム上で指定
でき、シミュレーション結果として、オブジェクトプロ
グラムの各構成要素毎にシミュレーション結果を出力で
きる設計支援方法を提供することである。
【0015】本発明の他の目的は、ユーザ指定の複数の
動作解析すべき区間に対してシミュレーションを行い、
その結果に基づいて、設計者が指定した処理時間等の条
件を満たさない複数の動作解析すべき区間を自動的に判
別し、これらをハードウエア化すべきプログラム部分の
候補として設計者に提示できる設計支援方法を提供する
ことである。
動作解析すべき区間に対してシミュレーションを行い、
その結果に基づいて、設計者が指定した処理時間等の条
件を満たさない複数の動作解析すべき区間を自動的に判
別し、これらをハードウエア化すべきプログラム部分の
候補として設計者に提示できる設計支援方法を提供する
ことである。
【0016】さらに、本発明の他の目的は、先行するシ
ミュレーションの結果を利用して次のシミュレーション
が実行できるように、シミュレーションを簡単に繰り返
すことを支援する設計支援方法を提供することである。
ミュレーションの結果を利用して次のシミュレーション
が実行できるように、シミュレーションを簡単に繰り返
すことを支援する設計支援方法を提供することである。
【0017】
【課題を解決するための手段】上記本願発明の目的を達
成するために、本願発明では、計算機と、入力装置と、
出力装置とを有する計算機システムにより以下を実行さ
せる。
成するために、本願発明では、計算機と、入力装置と、
出力装置とを有する計算機システムにより以下を実行さ
せる。
【0018】プロセッサと、それに接続された少なくと
も一つの関連回路とを有する回路を制御するためのオブ
ジェクトプログラムを構成する複数の構成要素とそれら
の間の関係を示す構成要素間関係を判別し、ユーザによ
り選択された動作解析すべき区間を特定するための区間
指定情報を入力装置を用いて入力し、該プロセッサとそ
の関連回路を制御するときの上記オブジェクトプログラ
ムの動作を、上記プロセッサの仕様と上記少なくとも一
つの関連回路を記述するハードウエア記述とに基づいて
シミュレーションし、上記シミュレーションの間に、該
判別された複数の構成要素の内、該入力された区間指定
情報で特定される動作解析すべき区間に属する一部の複
数の構成要素の各々の実行時間の合計、実行頻度など、
その構成要素の処理時間に関連する情報を収集し、上記
一部の複数の構成要素の各々を識別する情報とそれぞれ
に対して収集された処理時間に関連する情報とを、該オ
ブジェクトプログラムの内、ハードウエア化すべき部分
の、該ユーザによる選択を支援するための情報として表
示装置に表示する。
も一つの関連回路とを有する回路を制御するためのオブ
ジェクトプログラムを構成する複数の構成要素とそれら
の間の関係を示す構成要素間関係を判別し、ユーザによ
り選択された動作解析すべき区間を特定するための区間
指定情報を入力装置を用いて入力し、該プロセッサとそ
の関連回路を制御するときの上記オブジェクトプログラ
ムの動作を、上記プロセッサの仕様と上記少なくとも一
つの関連回路を記述するハードウエア記述とに基づいて
シミュレーションし、上記シミュレーションの間に、該
判別された複数の構成要素の内、該入力された区間指定
情報で特定される動作解析すべき区間に属する一部の複
数の構成要素の各々の実行時間の合計、実行頻度など、
その構成要素の処理時間に関連する情報を収集し、上記
一部の複数の構成要素の各々を識別する情報とそれぞれ
に対して収集された処理時間に関連する情報とを、該オ
ブジェクトプログラムの内、ハードウエア化すべき部分
の、該ユーザによる選択を支援するための情報として表
示装置に表示する。
【0019】より具体的には、上記複数の構成要素は、
上記オブジェクトプログラムに含まれる複数の関数と、
該複数の関数の各々に含まれる複数のセグメントとを含
み、上記収集では、上記動作解析すべき区間に属する複
数の関数の各々に関する処理時間に関連する情報と、そ
れぞれの関数に属する複数のセグメントの各々について
の処理時間に関する情報とを収集し、上記表示では、上
記動作解析すべき区間に属する上記複数の関数の各々お
よびそれぞれの関数に属する複数のセグメントの各々に
関して収集された処理時間に関連する情報を表示する。
上記オブジェクトプログラムに含まれる複数の関数と、
該複数の関数の各々に含まれる複数のセグメントとを含
み、上記収集では、上記動作解析すべき区間に属する複
数の関数の各々に関する処理時間に関連する情報と、そ
れぞれの関数に属する複数のセグメントの各々について
の処理時間に関する情報とを収集し、上記表示では、上
記動作解析すべき区間に属する上記複数の関数の各々お
よびそれぞれの関数に属する複数のセグメントの各々に
関して収集された処理時間に関連する情報を表示する。
【0020】さらに、より具体的には、上記区間指定情
報の入力では、上記オブジェクトプログラムに対するソ
ースプログラムを上記表示装置に表示し、表示されたソ
ースプログラム上の、ユーザにより選択された動作解析
すべき区間の開始点と終了点とを指定する区間指定情報
を上記入力装置を用いて入力する。
報の入力では、上記オブジェクトプログラムに対するソ
ースプログラムを上記表示装置に表示し、表示されたソ
ースプログラム上の、ユーザにより選択された動作解析
すべき区間の開始点と終了点とを指定する区間指定情報
を上記入力装置を用いて入力する。
【0021】さらに、本発明では以上のことをユーザが
選択した複数の動作解析すべき区間に関して行い、か
つ、それぞれの区間に関してユーザが指定した処理時間
等の条件を入力装置から入力し、それらの区間がユーザ
が指定した条件を満たしているかをそれらの区間に関す
るシミュレーションの結果により判別し、条件を満たさ
ない複数の区間を検出したときには、それらの区間の各
々に属する複数の構成要素に関するシミュレーション結
果を表示装置に表示し、それでもってユーザがハードウ
エア化すべき部分を選択するのを支援する。
選択した複数の動作解析すべき区間に関して行い、か
つ、それぞれの区間に関してユーザが指定した処理時間
等の条件を入力装置から入力し、それらの区間がユーザ
が指定した条件を満たしているかをそれらの区間に関す
るシミュレーションの結果により判別し、条件を満たさ
ない複数の区間を検出したときには、それらの区間の各
々に属する複数の構成要素に関するシミュレーション結
果を表示装置に表示し、それでもってユーザがハードウ
エア化すべき部分を選択するのを支援する。
【0022】さらに、以上のようなシミュレーション結
果を利用して、ユーザがいずれかのハードウエア化すべ
き部分を選択した後に、さらに他のハードウエア化すべ
き部分を選択するように、後続のシミュレーションを繰
り返し実行するのを支援するために、本願発明のシミュ
レーション支援方法は、アセンブラプログラムを使用し
て、次のように行われる。
果を利用して、ユーザがいずれかのハードウエア化すべ
き部分を選択した後に、さらに他のハードウエア化すべ
き部分を選択するように、後続のシミュレーションを繰
り返し実行するのを支援するために、本願発明のシミュ
レーション支援方法は、アセンブラプログラムを使用し
て、次のように行われる。
【0023】まず構成要素の解析は、オブジェクトプロ
グラムに対応するソースプログラムを変換して得られる
アセンブラプログラムを上記オブジェクトプログラムに
変換し、該アセンブラプログラムに基づいて、該アセン
ブラプログラムを構成する複数の構成要素とそれらの間
の関係を示す構成要素間関係を検出し、該アセンブラプ
ログラムを構成する複数の構成要素とそれらの間の関係
を示す構成要素間関係に基づいて、該オブジェクトプロ
グラムを構成する複数の構成要素とそれらの間の関係を
示す構成要素間関係を判別することにより行われる。
グラムに対応するソースプログラムを変換して得られる
アセンブラプログラムを上記オブジェクトプログラムに
変換し、該アセンブラプログラムに基づいて、該アセン
ブラプログラムを構成する複数の構成要素とそれらの間
の関係を示す構成要素間関係を検出し、該アセンブラプ
ログラムを構成する複数の構成要素とそれらの間の関係
を示す構成要素間関係に基づいて、該オブジェクトプロ
グラムを構成する複数の構成要素とそれらの間の関係を
示す構成要素間関係を判別することにより行われる。
【0024】上記オブジェクトプログラムのシミュレー
ションの結果表示の後に、上記アセンブラプログラムの
複数の構成要素が識別可能なように、上記アセンブラプ
ログラムを表示し、上記表示されたアセンブラプログラ
ムの内、ユーザにより選択されたハードウエア化すべき
プログラム部分を指定する情報を入力装置より入力し、
該入力された指定情報に従って、上記アセンブラプログ
ラムの上記プログラム部分に代えて、他の関連回路を使
用するように該アセンブラプログラムを更新し、該更新
後のアセンブラプログラムに基づいて、上記変換から更
新までを繰り返す。
ションの結果表示の後に、上記アセンブラプログラムの
複数の構成要素が識別可能なように、上記アセンブラプ
ログラムを表示し、上記表示されたアセンブラプログラ
ムの内、ユーザにより選択されたハードウエア化すべき
プログラム部分を指定する情報を入力装置より入力し、
該入力された指定情報に従って、上記アセンブラプログ
ラムの上記プログラム部分に代えて、他の関連回路を使
用するように該アセンブラプログラムを更新し、該更新
後のアセンブラプログラムに基づいて、上記変換から更
新までを繰り返す。
【0025】
【発明の実施の形態】以下、本発明に係るハードウェア
/ソフトウェア混在システムの設計支援方法を図面に示
した実施の形態を参照してさらに詳細に説明する。
/ソフトウェア混在システムの設計支援方法を図面に示
した実施の形態を参照してさらに詳細に説明する。
【0026】(システム構成)図1はハードウェア/ソ
フトウェア混在システムの設計支援装置の構成を示す。
101はCPU、102はキーボード、103はマウス
等の入力機器、104はディスプレイ等の出力機器であ
る。105、106は補助記憶装置であり、105は入
力用のファイルを、106は出力用のファイルを表して
いる。107はCPUに接続する主記憶装置で、本発明
による設計支援装置の動作を決定するプログラムとデー
タを格納する。
フトウェア混在システムの設計支援装置の構成を示す。
101はCPU、102はキーボード、103はマウス
等の入力機器、104はディスプレイ等の出力機器であ
る。105、106は補助記憶装置であり、105は入
力用のファイルを、106は出力用のファイルを表して
いる。107はCPUに接続する主記憶装置で、本発明
による設計支援装置の動作を決定するプログラムとデー
タを格納する。
【0027】入力用ファイルは、設計対象となるLSI
のうち、LSI内のROMに組み込むプログラムを格納
するファイル108、既設計の部分の論理回路や設計対
象となるLSIの周囲の動作を表すハードウェア記述1
09からなる。また出力用ファイルは統計解析結果を格
納するファイル110、共通動作検索結果を格納するフ
ァイル122、選択した命令列を格納するファイル13
4、ハードウェアの生成結果を格納するファイル13
5、生成したハードウェアに対応する命令を用いて組み
込みプログラム108を書き換えたファイル136から
なる。
のうち、LSI内のROMに組み込むプログラムを格納
するファイル108、既設計の部分の論理回路や設計対
象となるLSIの周囲の動作を表すハードウェア記述1
09からなる。また出力用ファイルは統計解析結果を格
納するファイル110、共通動作検索結果を格納するフ
ァイル122、選択した命令列を格納するファイル13
4、ハードウェアの生成結果を格納するファイル13
5、生成したハードウェアに対応する命令を用いて組み
込みプログラム108を書き換えたファイル136から
なる。
【0028】主記憶装置107には図1に示す設計支援
装置の処理プログラムおよびデータを格納する。処理プ
ログラムとデータは、区間制約処理111、区間制約デ
ータ112、プログラム構成要素解析処理113、構造
/統計データ114、プログラム実行解析処理115、
統計解析処理116、共通動作検索処理121、命令列
選択処理131、ハードウェア生成処理132、命令列
置換処理133からなる。
装置の処理プログラムおよびデータを格納する。処理プ
ログラムとデータは、区間制約処理111、区間制約デ
ータ112、プログラム構成要素解析処理113、構造
/統計データ114、プログラム実行解析処理115、
統計解析処理116、共通動作検索処理121、命令列
選択処理131、ハードウェア生成処理132、命令列
置換処理133からなる。
【0029】区間制約処理111は、組み込みプログラ
ム108を読み込み、組み込みプログラムの中の2点間
のタイミング制約をユーザに指定させ区間制約データ1
12を作成する。プログラム構成要素解析処理113
は、組み込みプログラム108を読み込み、オブジェク
トプログラムの構造を解析する。具体的には、オブジェ
クトプログラムの構成要素を解析し、さらにそれらの構
成要素の相互の関係を解析し、構造/統計データ114
を作成する。する。
ム108を読み込み、組み込みプログラムの中の2点間
のタイミング制約をユーザに指定させ区間制約データ1
12を作成する。プログラム構成要素解析処理113
は、組み込みプログラム108を読み込み、オブジェク
トプログラムの構造を解析する。具体的には、オブジェ
クトプログラムの構成要素を解析し、さらにそれらの構
成要素の相互の関係を解析し、構造/統計データ114
を作成する。する。
【0030】一般に、プログラムは、ルーチンと呼ぶあ
るまとまった処理を実行するプログラム部分により構成
される。ルーチンはメインルーチンとサブルーチンに分
類できる。サブルーチンは、手続きあるいは関数ともよ
ばれる。オブジェクトプログラム上のこれらのルーチン
は、ソースプログラム上の一つのルーチンに対応する。
従って、オブジェクトプログラムの構造を解析するとき
のプログラム構成要素として、ルーチンを解析すれば、
それらはソースプログラム上のルーチンに対応するの
で、これらの構成要素はユーザにとってソースプログラ
ムと対比して理解できる、分かりやすい構造といえる。
このため、本実施の形態では、オブジェクトプログラム
のルーチンを構成要素として解析する。しかし、各ルー
チンは一般に多くの処理を実行するので、オブジェクト
プログラムをハードウエア化する場合には、ルーチンよ
り小さな構成要素についてハードウエア化するか否かを
決めることが望ましい。このため、本実施の形態では、
各ルーチンを構成する相対的に小さな構成要素も解析す
る。
るまとまった処理を実行するプログラム部分により構成
される。ルーチンはメインルーチンとサブルーチンに分
類できる。サブルーチンは、手続きあるいは関数ともよ
ばれる。オブジェクトプログラム上のこれらのルーチン
は、ソースプログラム上の一つのルーチンに対応する。
従って、オブジェクトプログラムの構造を解析するとき
のプログラム構成要素として、ルーチンを解析すれば、
それらはソースプログラム上のルーチンに対応するの
で、これらの構成要素はユーザにとってソースプログラ
ムと対比して理解できる、分かりやすい構造といえる。
このため、本実施の形態では、オブジェクトプログラム
のルーチンを構成要素として解析する。しかし、各ルー
チンは一般に多くの処理を実行するので、オブジェクト
プログラムをハードウエア化する場合には、ルーチンよ
り小さな構成要素についてハードウエア化するか否かを
決めることが望ましい。このため、本実施の形態では、
各ルーチンを構成する相対的に小さな構成要素も解析す
る。
【0031】以下に説明するように、本実施の形態で
は、一般に関数と呼ばれる複数のルーチンにより構成さ
れたソースプログラムを使用するので、対応するオブジ
ェクトプログラムの相対的に大きな構成要素の一例とし
て、オブジェクトプログラムを構成する関数を解析す
る。各関数より相対的に小さなプログラム構成要素の一
例として、セグメントを解析する。セグメントは、関数
を構成する機械語レベルの命令列で、本実施の形態で
は、その途中に外への分岐点も外からの飛び込む点も持
たない命令列をセグメントと定義する。このようなセグ
メントは、分岐に関連する処理を含まないために、オブ
ジェクトプログラムのハードウエア化の際に、このセグ
メントを単位にしてハードウエア化するかあるいはその
一部をハードウエア化するのに適している。
は、一般に関数と呼ばれる複数のルーチンにより構成さ
れたソースプログラムを使用するので、対応するオブジ
ェクトプログラムの相対的に大きな構成要素の一例とし
て、オブジェクトプログラムを構成する関数を解析す
る。各関数より相対的に小さなプログラム構成要素の一
例として、セグメントを解析する。セグメントは、関数
を構成する機械語レベルの命令列で、本実施の形態で
は、その途中に外への分岐点も外からの飛び込む点も持
たない命令列をセグメントと定義する。このようなセグ
メントは、分岐に関連する処理を含まないために、オブ
ジェクトプログラムのハードウエア化の際に、このセグ
メントを単位にしてハードウエア化するかあるいはその
一部をハードウエア化するのに適している。
【0032】構造/統計データ114はセグメントや関
数間の関係を表すデータと各セグメントと各関数毎の処
理時間に関する統計情報を格納する。プログラム実行解
析処理115は組み込みプログラム108とハードウェ
ア記述109を読み込み、設計対象とするLSIのハー
ドウェアとソフトウェア双方を同時にシミュレーション
することによりハードウェアの影響も考慮したソフトウ
ェア(組み込みプログラム)の実行時の統計情報の採取
を行う。統計情報はセグメントや関数毎に構造/統計デ
ータ114に格納する。統計解析処理116はプログラ
ム実行解析処理115の終了後に構造/統計データ11
4を解析して組み込みプログラムの処理時間に関する統
計情報を計算しディスプレイ104と統計解析結果ファ
イル110に出力する。
数間の関係を表すデータと各セグメントと各関数毎の処
理時間に関する統計情報を格納する。プログラム実行解
析処理115は組み込みプログラム108とハードウェ
ア記述109を読み込み、設計対象とするLSIのハー
ドウェアとソフトウェア双方を同時にシミュレーション
することによりハードウェアの影響も考慮したソフトウ
ェア(組み込みプログラム)の実行時の統計情報の採取
を行う。統計情報はセグメントや関数毎に構造/統計デ
ータ114に格納する。統計解析処理116はプログラ
ム実行解析処理115の終了後に構造/統計データ11
4を解析して組み込みプログラムの処理時間に関する統
計情報を計算しディスプレイ104と統計解析結果ファ
イル110に出力する。
【0033】共通動作検索処理121は、複数のセグメ
ントに存在する類似の動作をする命令列を検索する処理
である。ここで類似の動作とは、例えば、命令の実行順
序が異なっていたり、計算時に使用するレジスタが異な
っているが、同じ計算を行う場合を言う。検索結果はデ
ィスプレイ104とファイル122に出力する。
ントに存在する類似の動作をする命令列を検索する処理
である。ここで類似の動作とは、例えば、命令の実行順
序が異なっていたり、計算時に使用するレジスタが異な
っているが、同じ計算を行う場合を言う。検索結果はデ
ィスプレイ104とファイル122に出力する。
【0034】命令列選択処理131は、統計解析結果1
16、あるいは共通動作検索処理121により出力され
たセグメント、あるいは共通動作命令列の中からハード
ウェア化する対象の命令列を選択する処理である。選択
結果はファイル134に出力するとともに、ハードウェ
ア生成処理132と命令列置換処理133に渡される。
16、あるいは共通動作検索処理121により出力され
たセグメント、あるいは共通動作命令列の中からハード
ウェア化する対象の命令列を選択する処理である。選択
結果はファイル134に出力するとともに、ハードウェ
ア生成処理132と命令列置換処理133に渡される。
【0035】ハードウェア生成処理132は、命令列選
択処理131で選択されたハードウェア化対象の命令列
を解析してその命令列と同じ動作を行うハードウェアの
構成を求め、そのハードウェア記述をファイル135に
出力する。命令列置換処理133は、組み込みプログラ
ム108を読み込み、プログラム中に存在する命令列選
択処理131で選択された命令列をハードウェア生成処
理132で生成されたハードウェアを起動する命令列に
置き換える処理である。置き換えた結果できたプログラ
ムはファイル136に出力する。
択処理131で選択されたハードウェア化対象の命令列
を解析してその命令列と同じ動作を行うハードウェアの
構成を求め、そのハードウェア記述をファイル135に
出力する。命令列置換処理133は、組み込みプログラ
ム108を読み込み、プログラム中に存在する命令列選
択処理131で選択された命令列をハードウェア生成処
理132で生成されたハードウェアを起動する命令列に
置き換える処理である。置き換えた結果できたプログラ
ムはファイル136に出力する。
【0036】以上の処理により組み込みプログラムの性
能を解析し、与えた処理時間制約を満たさない部分に関
してハードウェア化すべき部分を探索することができ
る。またハードウェア化すべき命令列からハードウェア
を生成するとともに、元の組み込みプログラム中のハー
ドウェア化対象命令列を生成したハードウェアを起動す
る命令列に置き換えることができる。さらに、置き換え
た命令列と、生成したハードウェアを用いて再度プログ
ラムの性能解析を繰り返すことにより、ハードウェア化
の効果を確認し、生成したハードウェアの修正や、他の
ハードウェア化対象部分を検索することができる。
能を解析し、与えた処理時間制約を満たさない部分に関
してハードウェア化すべき部分を探索することができ
る。またハードウェア化すべき命令列からハードウェア
を生成するとともに、元の組み込みプログラム中のハー
ドウェア化対象命令列を生成したハードウェアを起動す
る命令列に置き換えることができる。さらに、置き換え
た命令列と、生成したハードウェアを用いて再度プログ
ラムの性能解析を繰り返すことにより、ハードウェア化
の効果を確認し、生成したハードウェアの修正や、他の
ハードウェア化対象部分を検索することができる。
【0037】以下、以上の処理とそれらに関係するデー
タの詳細を説明する。
タの詳細を説明する。
【0038】(区間制約指定処理111)図2は区間制
約指定処理111の説明図である。区間制約指定では、
ユーザに動作解析すべき区間を指定する情報をキーボー
ド102あるいはマウス103を用いて入力させる。さ
らにその区間が満たさなくてはならない処理時間の制約
も指定させる。この処理を行うために、まずプログラム
読み込み201により組み込みプログラム108を読み
込む。
約指定処理111の説明図である。区間制約指定では、
ユーザに動作解析すべき区間を指定する情報をキーボー
ド102あるいはマウス103を用いて入力させる。さ
らにその区間が満たさなくてはならない処理時間の制約
も指定させる。この処理を行うために、まずプログラム
読み込み201により組み込みプログラム108を読み
込む。
【0039】組み込みプログラム108は、高級言語で
記述したソースプログラムをコンパイルすることにより
生成する。コンパイルは高級言語プログラムをアセンブ
ラプログラムに変換する処理と、アセンブラプログラム
をアセンブルし、機械語命令に対する命令コードと命令
のアドレスからなるオブジェクトプログラムを生成する
処理からなる。図8は組み込みプログラム108のファ
イル形式を説明する図である。図中で801はプログラ
ムの格納されるアドレス、802は命令コード、803
はラベル、804はコメント中に記録された高級言語の
ソースプログラム(805、807、809、811、
813)とそのコンパイル結果であるアセンブリ言語
(806、808、810、812)である。ソースプ
ログラム解析202ではコメント中にある高級言語で記
載されたソースプログラムの各文805とプログラムの
アドレス801の関係を調べる。204のループはユー
ザによる区間指定が終了するまで205〜209の処理
を繰り返す。開始点指定205ではユーザによる開始点
の指定を受け取る。指定はソースプログラムの文単位で
行う。このように、ソースプログラム上でシミュレーシ
ョンの開始点と終了点を指定する方法は、ユーザにとっ
て分かりやすい。このために、組み込みプログラム10
8をディスプレイ104に表示し、ユーザにその表示さ
れた組み込みプログラム中のソースプログラム805上
の、開始点の位置を区間指定情報として入力させる。開
始点アドレス検索206ではオブジェクトプログラム解
析処理203で解析した時に得られるプログラム間関
係、すなわち、オブジェクトプログラムの各命令のアド
レスと対応する高級言語プログラムの文との間の関係を
基に、開始点に対応するオブジェクトプログラム上の命
令の実際のアドレスを求める。終了点指定207と終了
点アドレス検索208では同様にユーザ指定の終了点に
対応するオブジェクトプログラム上の命令の実際のアド
レスを求める。
記述したソースプログラムをコンパイルすることにより
生成する。コンパイルは高級言語プログラムをアセンブ
ラプログラムに変換する処理と、アセンブラプログラム
をアセンブルし、機械語命令に対する命令コードと命令
のアドレスからなるオブジェクトプログラムを生成する
処理からなる。図8は組み込みプログラム108のファ
イル形式を説明する図である。図中で801はプログラ
ムの格納されるアドレス、802は命令コード、803
はラベル、804はコメント中に記録された高級言語の
ソースプログラム(805、807、809、811、
813)とそのコンパイル結果であるアセンブリ言語
(806、808、810、812)である。ソースプ
ログラム解析202ではコメント中にある高級言語で記
載されたソースプログラムの各文805とプログラムの
アドレス801の関係を調べる。204のループはユー
ザによる区間指定が終了するまで205〜209の処理
を繰り返す。開始点指定205ではユーザによる開始点
の指定を受け取る。指定はソースプログラムの文単位で
行う。このように、ソースプログラム上でシミュレーシ
ョンの開始点と終了点を指定する方法は、ユーザにとっ
て分かりやすい。このために、組み込みプログラム10
8をディスプレイ104に表示し、ユーザにその表示さ
れた組み込みプログラム中のソースプログラム805上
の、開始点の位置を区間指定情報として入力させる。開
始点アドレス検索206ではオブジェクトプログラム解
析処理203で解析した時に得られるプログラム間関
係、すなわち、オブジェクトプログラムの各命令のアド
レスと対応する高級言語プログラムの文との間の関係を
基に、開始点に対応するオブジェクトプログラム上の命
令の実際のアドレスを求める。終了点指定207と終了
点アドレス検索208では同様にユーザ指定の終了点に
対応するオブジェクトプログラム上の命令の実際のアド
レスを求める。
【0040】処理時間制約指定209では205〜20
8で指定した区間の処理時間が満たさなくてはならない
時間の制約を受け取る。205〜209で得た区間制約
データは図3に示す区間制約データ112に格納する。
図3において、1行が1つの区間制約データを表す。3
01は区間制約データの識別番号id、302は開始点
アドレス、303は終了点アドレス、304は処理時間
制約である。305はプログラム実行解析処理115と
統計解析処理116で使用する区間毎の統計情報であ
る。統計情報は複数の情報からなる。この詳細はプログ
ラム実行解析処理115とともに説明する。
8で指定した区間の処理時間が満たさなくてはならない
時間の制約を受け取る。205〜209で得た区間制約
データは図3に示す区間制約データ112に格納する。
図3において、1行が1つの区間制約データを表す。3
01は区間制約データの識別番号id、302は開始点
アドレス、303は終了点アドレス、304は処理時間
制約である。305はプログラム実行解析処理115と
統計解析処理116で使用する区間毎の統計情報であ
る。統計情報は複数の情報からなる。この詳細はプログ
ラム実行解析処理115とともに説明する。
【0041】(プログラム構成要素解析処理113)図
4はプログラム構成要素解析処理113を説明する図で
ある。プログラム構成要素解析処理113は、組み込み
プログラム108を読み込み、プログラムの構造をセグ
メントと関数単位で解析し、構造/統計データ114を
作成する。処理は402〜408の処理を組み込みプロ
グラム108を1行ずつ読み込み(402)、解釈す
る。プログラムが関数の先頭であれば(403)、その
関数の情報を構造/統計データ114に登録する。プロ
グラム中の分岐点(ラベルが付加されているか、分岐命
令がある場合)であれば(405)、その前に分岐点が
出現したアドレスから現在の行のアドレスまでをセグメ
ントとして登録する(406)。さらに、プログラム中
に他の関数を呼び出すコール部分が存在すれば(40
7)、現在の関数の下位階層に呼ばれる関数があること
を登録する(408)。図4の処理により、図8のプロ
グラム例は806、808、810、812の4つのセ
グメントに分解される。
4はプログラム構成要素解析処理113を説明する図で
ある。プログラム構成要素解析処理113は、組み込み
プログラム108を読み込み、プログラムの構造をセグ
メントと関数単位で解析し、構造/統計データ114を
作成する。処理は402〜408の処理を組み込みプロ
グラム108を1行ずつ読み込み(402)、解釈す
る。プログラムが関数の先頭であれば(403)、その
関数の情報を構造/統計データ114に登録する。プロ
グラム中の分岐点(ラベルが付加されているか、分岐命
令がある場合)であれば(405)、その前に分岐点が
出現したアドレスから現在の行のアドレスまでをセグメ
ントとして登録する(406)。さらに、プログラム中
に他の関数を呼び出すコール部分が存在すれば(40
7)、現在の関数の下位階層に呼ばれる関数があること
を登録する(408)。図4の処理により、図8のプロ
グラム例は806、808、810、812の4つのセ
グメントに分解される。
【0042】(構造/統計データ114)図5は構造/
統計データ114を説明する図である。図は大きく関数
の構造を表すFNstruct(501)、関数の情報
を表すFN(506)、セグメント間の関係を表すSG
struct(512)、セグメントの情報を表すSG
(525)からなる。FNstruct(501)は4
つの要素からなる。fnp(502)はその関数の情報
を表すFN(506)へのポインタ、sgl(503)
はその関数を構成するセグメントの集合を表すリスト
(518)へのポインタ、prnt(504)はその関
数の上位階層の関数(その関数をコールする関数)のF
Nstructを指すポインタのリスト(519)への
ポインタ、chd(505)はその関数の下位階層の関
数のFNstructを指すポインタのリスト(52
0)へのポインタである。FN(506)は大きく5つ
の情報からなる。id(507)は関数の識別番号、F
N名(508)は関数名、sa(509)は関数の開始
アドレス、ea(510)は関数の終了アドレス、関数
統計情報(511)はその関数の統計情報である。51
1はさらに複数の情報により構成される。この詳細はプ
ログラム実行解析処理115とともに説明する。SGs
truct(512)は4つの要素からなる。sgp
(521)はセグメント情報SG(525)へのポイン
タ、pre(522)はこのセグメントの直前に実行さ
れるセグメントのリスト541へのポインタ、suc
(523)はこのセグメントの直後に実行されるセグメ
ントのリスト542へのポインタ、fnp(524)は
このセグメントを含む関数(FNstruct)へのポ
インタである。セグメントの情報を表すSG(525)
は大きく5つの情報からなる。id(526)はこのセ
グメントの識別番号、ラベル名(527)はこのセグメ
ントの先頭アドレスにラベルがあればそのラベル名、s
a(528)はそのセグメントの開始アドレス、ea
(529)はそのセグメントの終了アドレス、セグメン
ト統計情報(530)はそのセグメントの統計情報であ
る。530はさらに複数の情報により構成される。この
詳細はプログラム実行解析処理115とともに説明す
る。
統計データ114を説明する図である。図は大きく関数
の構造を表すFNstruct(501)、関数の情報
を表すFN(506)、セグメント間の関係を表すSG
struct(512)、セグメントの情報を表すSG
(525)からなる。FNstruct(501)は4
つの要素からなる。fnp(502)はその関数の情報
を表すFN(506)へのポインタ、sgl(503)
はその関数を構成するセグメントの集合を表すリスト
(518)へのポインタ、prnt(504)はその関
数の上位階層の関数(その関数をコールする関数)のF
Nstructを指すポインタのリスト(519)への
ポインタ、chd(505)はその関数の下位階層の関
数のFNstructを指すポインタのリスト(52
0)へのポインタである。FN(506)は大きく5つ
の情報からなる。id(507)は関数の識別番号、F
N名(508)は関数名、sa(509)は関数の開始
アドレス、ea(510)は関数の終了アドレス、関数
統計情報(511)はその関数の統計情報である。51
1はさらに複数の情報により構成される。この詳細はプ
ログラム実行解析処理115とともに説明する。SGs
truct(512)は4つの要素からなる。sgp
(521)はセグメント情報SG(525)へのポイン
タ、pre(522)はこのセグメントの直前に実行さ
れるセグメントのリスト541へのポインタ、suc
(523)はこのセグメントの直後に実行されるセグメ
ントのリスト542へのポインタ、fnp(524)は
このセグメントを含む関数(FNstruct)へのポ
インタである。セグメントの情報を表すSG(525)
は大きく5つの情報からなる。id(526)はこのセ
グメントの識別番号、ラベル名(527)はこのセグメ
ントの先頭アドレスにラベルがあればそのラベル名、s
a(528)はそのセグメントの開始アドレス、ea
(529)はそのセグメントの終了アドレス、セグメン
ト統計情報(530)はそのセグメントの統計情報であ
る。530はさらに複数の情報により構成される。この
詳細はプログラム実行解析処理115とともに説明す
る。
【0043】(プログラム実行解析処理115)図6は
プログラム実行解析処理115を説明する図である。プ
ログラム実行解析処理115は組み込みプログラム10
8とハードウェア記述109により記述されるソフトウ
ェアとハードウェア双方の動作を同時にシミュレーショ
ンし、ハードウェアの影響を考慮したソフトウェア(組
み込みプログラム)の実行統計情報の採取を行う。ハー
ドウェアとプログラムを同時にシミュレーションするた
めに、通常の論理シミュレータ(601)上でハードウ
ェア記述により定義される周辺回路602と組み込みプ
ログラム108を格納するメモリのモデル603とマイ
クロプロセッサの動作を行うマイクロプロセッサモデル
604を動作させる。そして、マイクロプロセッサモデ
ルの実行する命令をトレースするプログラム実行トレー
ス605によりプログラム実行統計情報を採取し、その
結果は構造統計データ114に格納する。ここで採取す
る統計データは、セグメント毎と関数毎に、最大処理時
間、最小処理時間、合計処理時間、処理回数、区間制約
毎に最大処理時間、最小処理時間、合計処理時間、処理
回数、制約値を超えた回数、処理中に通過したセグメン
トのリストである。また統計を採取する際にしようする
データとして各セグメント毎に開始時刻、終了時刻、経
過時間、最終実行アドレス等の情報を、各区間制約毎に
開始時刻、終了時刻、集計中を示すのフラグ等の情報を
持つ。
プログラム実行解析処理115を説明する図である。プ
ログラム実行解析処理115は組み込みプログラム10
8とハードウェア記述109により記述されるソフトウ
ェアとハードウェア双方の動作を同時にシミュレーショ
ンし、ハードウェアの影響を考慮したソフトウェア(組
み込みプログラム)の実行統計情報の採取を行う。ハー
ドウェアとプログラムを同時にシミュレーションするた
めに、通常の論理シミュレータ(601)上でハードウ
ェア記述により定義される周辺回路602と組み込みプ
ログラム108を格納するメモリのモデル603とマイ
クロプロセッサの動作を行うマイクロプロセッサモデル
604を動作させる。そして、マイクロプロセッサモデ
ルの実行する命令をトレースするプログラム実行トレー
ス605によりプログラム実行統計情報を採取し、その
結果は構造統計データ114に格納する。ここで採取す
る統計データは、セグメント毎と関数毎に、最大処理時
間、最小処理時間、合計処理時間、処理回数、区間制約
毎に最大処理時間、最小処理時間、合計処理時間、処理
回数、制約値を超えた回数、処理中に通過したセグメン
トのリストである。また統計を採取する際にしようする
データとして各セグメント毎に開始時刻、終了時刻、経
過時間、最終実行アドレス等の情報を、各区間制約毎に
開始時刻、終了時刻、集計中を示すのフラグ等の情報を
持つ。
【0044】図10はプログラム実行トレース処理60
5を詳しく説明する図である。プログラム実行トレース
の処理は論理シミュレータ601上でのシミュレーショ
ンの各サイクル毎に起動される。処理はマイクロプロセ
ッサモデル604上で実行されている命令のアドレスa
dとシミュレーション時刻ctを用いる。まず、現在の
実行アドレスadを含むセグメント番号csを求める
(1001)。次に、区間制約データ112に格納され
ているすべての区間制約tsnに関して1003〜10
06の処理を行う。現在の実行アドレスadが開始アド
レスならば1004〜1005を、終了アドレスなら1
006を行う(1003)。開始アドレスなら現在参照
している区間制約tsnに関して、統計データを集計中
でなければ(1004)、その区間制約tsnの統計デ
ータの集計を開始する。一方、終了アドレスなら集計を
開始してから現在までの時間を統計情報305を更新す
る。次に現在のセグメント番号csが、一回前にプログ
ラム実行トレースを行った際のセグメント番号snとが
等しくない場合、即ち、現時刻で新しいセグメントに入
った場合に(1007)、現在集計中の区間制約tsa
に関して(1008)、現在のセグメント番号csを統
計情報305中の通過セグメントリストに追加する(1
009)。さらに、現在のセグメントcsの統計情報5
30を更新する(1010)。この処理は図17で詳し
く説明する。そして、現在のセグメントcsをsnとし
(1011)、最終シミュレーション時刻Xtimeを
現在の時刻ctとする(1012)。
5を詳しく説明する図である。プログラム実行トレース
の処理は論理シミュレータ601上でのシミュレーショ
ンの各サイクル毎に起動される。処理はマイクロプロセ
ッサモデル604上で実行されている命令のアドレスa
dとシミュレーション時刻ctを用いる。まず、現在の
実行アドレスadを含むセグメント番号csを求める
(1001)。次に、区間制約データ112に格納され
ているすべての区間制約tsnに関して1003〜10
06の処理を行う。現在の実行アドレスadが開始アド
レスならば1004〜1005を、終了アドレスなら1
006を行う(1003)。開始アドレスなら現在参照
している区間制約tsnに関して、統計データを集計中
でなければ(1004)、その区間制約tsnの統計デ
ータの集計を開始する。一方、終了アドレスなら集計を
開始してから現在までの時間を統計情報305を更新す
る。次に現在のセグメント番号csが、一回前にプログ
ラム実行トレースを行った際のセグメント番号snとが
等しくない場合、即ち、現時刻で新しいセグメントに入
った場合に(1007)、現在集計中の区間制約tsa
に関して(1008)、現在のセグメント番号csを統
計情報305中の通過セグメントリストに追加する(1
009)。さらに、現在のセグメントcsの統計情報5
30を更新する(1010)。この処理は図17で詳し
く説明する。そして、現在のセグメントcsをsnとし
(1011)、最終シミュレーション時刻Xtimeを
現在の時刻ctとする(1012)。
【0045】図17は現在のセグメントcsの統計情報
530の更新処理1010を説明する図である。この処
理も現在のセグメント番号csが、一回前にプログラム
実行トレースを行った際のセグメント番号snとが等し
くない場合とそうでない場合で処理が異なる(170
1)。等しい場合は、セグメントcsの最後に実行した
アドレスを現在の実行アドレスadとして記録する(1
702)。等しくない場合は、セグメントcsの実行開
始時刻を現在のシミュレーション時刻ctとして記録し
(1703)、セグメントcsが処理の一番最初のセグ
メントでない限り(1704)、今までのセグメントs
nの終了時刻をctとし(1705)、今までのセグメ
ントの最終実行アドレスとセグメントの終了アドレスが
等しい場合(1706)、セグメントsnの処理時間を
計算し(1707)、それを基にセグメントsnの統計
情報を更新し(1708)、処理時間の計算に用いる経
過時間をクリアする(1709)。一方、等しくない場
合、即ち、割り込み等の要因で、セグメント途中で他の
セグメントに処理が移った場合は、経過時間に今までの
処理時間を加え保持する(1710)。
530の更新処理1010を説明する図である。この処
理も現在のセグメント番号csが、一回前にプログラム
実行トレースを行った際のセグメント番号snとが等し
くない場合とそうでない場合で処理が異なる(170
1)。等しい場合は、セグメントcsの最後に実行した
アドレスを現在の実行アドレスadとして記録する(1
702)。等しくない場合は、セグメントcsの実行開
始時刻を現在のシミュレーション時刻ctとして記録し
(1703)、セグメントcsが処理の一番最初のセグ
メントでない限り(1704)、今までのセグメントs
nの終了時刻をctとし(1705)、今までのセグメ
ントの最終実行アドレスとセグメントの終了アドレスが
等しい場合(1706)、セグメントsnの処理時間を
計算し(1707)、それを基にセグメントsnの統計
情報を更新し(1708)、処理時間の計算に用いる経
過時間をクリアする(1709)。一方、等しくない場
合、即ち、割り込み等の要因で、セグメント途中で他の
セグメントに処理が移った場合は、経過時間に今までの
処理時間を加え保持する(1710)。
【0046】以上では、ソフトウェア中の一部の指定さ
れた区間に対して実行解析を行ったが、プログラム全体
をミュレーション区間として指定したい場合には、シミ
ュレーションの指定区間の開始点と終了点として、プロ
グラムの先頭およびオブジェクトプログラムの命令が持
つことがありえない命令アドレスを指定すればよい。
れた区間に対して実行解析を行ったが、プログラム全体
をミュレーション区間として指定したい場合には、シミ
ュレーションの指定区間の開始点と終了点として、プロ
グラムの先頭およびオブジェクトプログラムの命令が持
つことがありえない命令アドレスを指定すればよい。
【0047】(統計解析処理116)統計解析処理11
6はプログラム実行解析処理115により求めた各セグ
メント毎の処理時間や実行回数などの値から、区間制
約、セグメント、関数毎の処理頻度、実行回数などの統
計値を計算し、出力する処理である。この出力では、計
算結果をファイル110として出力するとともに、ディ
スプレイ104へその内容を表示する。
6はプログラム実行解析処理115により求めた各セグ
メント毎の処理時間や実行回数などの値から、区間制
約、セグメント、関数毎の処理頻度、実行回数などの統
計値を計算し、出力する処理である。この出力では、計
算結果をファイル110として出力するとともに、ディ
スプレイ104へその内容を表示する。
【0048】図7は統計解析処理116を説明する図で
ある。統計解析処理116では、まず各セグメントsg
について(701)、全処理時間に対するsgの処理時
間割合とsgの平均処理時間を計算(702)し、各関
数fnに関して(703)、fn自体の合計処理時間、
全処理時間に対するfnの処理時間割合、fnの実行回
数、fnの平均処理時間、fn以下の関数の合計処理時
間、fn以下の関数の平均処理時間を計算(704)。
そして区間制約違反部分に関して処理時間に関連する情
報の表示を行う(705)。この処理は図11で詳しく
説明する。最後に区間制約、セグメント、関数毎の処理
時間に関連する情報を統計解析結果ファイル110に出
力する。
ある。統計解析処理116では、まず各セグメントsg
について(701)、全処理時間に対するsgの処理時
間割合とsgの平均処理時間を計算(702)し、各関
数fnに関して(703)、fn自体の合計処理時間、
全処理時間に対するfnの処理時間割合、fnの実行回
数、fnの平均処理時間、fn以下の関数の合計処理時
間、fn以下の関数の平均処理時間を計算(704)。
そして区間制約違反部分に関して処理時間に関連する情
報の表示を行う(705)。この処理は図11で詳しく
説明する。最後に区間制約、セグメント、関数毎の処理
時間に関連する情報を統計解析結果ファイル110に出
力する。
【0049】図11は区間制約違反部分に関して処理時
間に関連する情報の表示を行う処理(705)を説明す
る図である。これは図12〜図16に示すディスプレイ
上に表示される情報がどのような手順により表示される
かを示す状態遷移図である。区間リスト表示1101
は、区間制約に違反した、即ち、実際の処理時間が区間
制約としてあらかじめ指定された処理時間304を超え
た場合にその区間制約を表示する。1101から一つの
区間制約を選択し(1104)、その区間を処理する際
に通過したセグメントのリストを表示する(110
5)。ここで、一つのセグメントを選択し(110
8)、セグメントの中の命令列を表示できる(110
9)、またはそのセグメントを含む関数、さらにその上
位の関数といったプログラムの階層を表示できる(11
10)、プログラムの階層表示で、一つのセグメントを
選択すると、セグメントリスト表示1105に戻り、一
つの関数を選択すると関数のリストを表示できる(11
13)。関数表示から関数を選択すると、その関数に含
まれるセグメントのリスト(1105)、またはその関
数を処理中に通過した区間を表示できる(1101)。
間に関連する情報の表示を行う処理(705)を説明す
る図である。これは図12〜図16に示すディスプレイ
上に表示される情報がどのような手順により表示される
かを示す状態遷移図である。区間リスト表示1101
は、区間制約に違反した、即ち、実際の処理時間が区間
制約としてあらかじめ指定された処理時間304を超え
た場合にその区間制約を表示する。1101から一つの
区間制約を選択し(1104)、その区間を処理する際
に通過したセグメントのリストを表示する(110
5)。ここで、一つのセグメントを選択し(110
8)、セグメントの中の命令列を表示できる(110
9)、またはそのセグメントを含む関数、さらにその上
位の関数といったプログラムの階層を表示できる(11
10)、プログラムの階層表示で、一つのセグメントを
選択すると、セグメントリスト表示1105に戻り、一
つの関数を選択すると関数のリストを表示できる(11
13)。関数表示から関数を選択すると、その関数に含
まれるセグメントのリスト(1105)、またはその関
数を処理中に通過した区間を表示できる(1101)。
【0050】区間リスト表示1101、セグメントリス
ト表示1105、関数表示1113は表形式の表示で、
さらに2つの状態を含む。第一の状態は表のある列が選
択された状態である(1103、1107、111
5)。列が選択されると、選択された列の表示内容によ
りソーティングして再表示する。第二の状態は表のある
行が選択された状態である(1104、1108、11
16)。行が選択され、再度指示があると、表示が変わ
る。たとえば、状態1104から状態1108へ、状態
1108から状態1112または状態1104へ、状態
1116から状態1112または状態1108または1
104へと変わる。
ト表示1105、関数表示1113は表形式の表示で、
さらに2つの状態を含む。第一の状態は表のある列が選
択された状態である(1103、1107、111
5)。列が選択されると、選択された列の表示内容によ
りソーティングして再表示する。第二の状態は表のある
行が選択された状態である(1104、1108、11
16)。行が選択され、再度指示があると、表示が変わ
る。たとえば、状態1104から状態1108へ、状態
1108から状態1112または状態1104へ、状態
1116から状態1112または状態1108または1
104へと変わる。
【0051】図12〜図16を用いてディスプレイ上に
表示する情報の例を示す。これらの表や図は、ディスプ
レイ上のウィンドに個々に表示する。またウィンドの大
きさはキーボードやマウスによる指示により変更でき
る。
表示する情報の例を示す。これらの表や図は、ディスプ
レイ上のウィンドに個々に表示する。またウィンドの大
きさはキーボードやマウスによる指示により変更でき
る。
【0052】図12は区間制約に違反した区間情報の表
示例である。1201はタイトル部分で、この表のタイ
トル「区間制約違反」の他、表の各項目のタイトルを表
示する。表の各項目は#(1202)が各行の番号、t
sn#(1203)が区間制約データの識別番号id
(301)、start(1204)が開始点アドレス
(302)、end(1205)が終了点アドレス(3
03)、spec(1206)が制約として与えられた
処理時間(304)、ave(1207)がその区間の
平均の処理時間、cnt(1208)がその区間の実行
回数、violate(1209)が実際の処理時間が
制約時間を超えた回数である。
示例である。1201はタイトル部分で、この表のタイ
トル「区間制約違反」の他、表の各項目のタイトルを表
示する。表の各項目は#(1202)が各行の番号、t
sn#(1203)が区間制約データの識別番号id
(301)、start(1204)が開始点アドレス
(302)、end(1205)が終了点アドレス(3
03)、spec(1206)が制約として与えられた
処理時間(304)、ave(1207)がその区間の
平均の処理時間、cnt(1208)がその区間の実行
回数、violate(1209)が実際の処理時間が
制約時間を超えた回数である。
【0053】図12や他の類似の表形式の表示(図1
3、図16、図19)に共通する機能として、行選択機
能、列選択機能、表示範囲変更機能がある。行選択機能
は表の1つの行を選択する機能で、ディスプレィ104
上に表示されるマウス103のカーソルを選択したい行
に合わせ、マウスのボタンをクリックすることにより選
択する。選択するとその行の表示の背景色と文字色を反
転する。初期状態では最も上にある行が選択されてい
る。列選択機能は表の各行の表示順序を変更する機能で
ある。ウィンドのタイトル部分の各項目にマウスのカー
ソルを合わせ、マウスのボタンをクリックすることによ
り、その項目に関してソーティングを行い再表示を行
う。選択した項目が数値であれば大きい順に、文字であ
ればアルファベット順にソーティングする。表示範囲変
更機能はスクロールバー(1210〜1212)を用い
て表の表示範囲を変更する。要素数が多い表では狭いウ
ィンド上に多くの情報を表示できないため、一部分のみ
を表示する。その時、全体に対する表示箇所の位置が1
212の位置で表わされる。1212にマウスのカーソ
ルを合わせ、マウスのボタンを押したままカーソルを上
下することにより表示範囲を上下に移動する。また12
10、1211にマウスのカーソルを合わせ、マウスの
ボタンをクリックすることで、上下方向にそれぞれ1行
分表示範囲をずらすことができる。図11に示すような
他の表示へ状態を移動するには、選択した行の上にマウ
スのカーソルを合わせマウスのボタンを押し続けた際に
画面上に現われる移動可能な表示状態のリストのうちの
一つをマウスのカーソルで選択することにより行う。す
でに目的のウィンドが画面上に表示されている場合は、
行選択の結果、他のウィンドの表示内容も連動して変化
する。またカーソルをそのウィンドに合わせることでそ
のウィンドの状態に移ることができる。なお、図12に
おいては初期状態で1207の項目に関してソーティン
グして表示する。
3、図16、図19)に共通する機能として、行選択機
能、列選択機能、表示範囲変更機能がある。行選択機能
は表の1つの行を選択する機能で、ディスプレィ104
上に表示されるマウス103のカーソルを選択したい行
に合わせ、マウスのボタンをクリックすることにより選
択する。選択するとその行の表示の背景色と文字色を反
転する。初期状態では最も上にある行が選択されてい
る。列選択機能は表の各行の表示順序を変更する機能で
ある。ウィンドのタイトル部分の各項目にマウスのカー
ソルを合わせ、マウスのボタンをクリックすることによ
り、その項目に関してソーティングを行い再表示を行
う。選択した項目が数値であれば大きい順に、文字であ
ればアルファベット順にソーティングする。表示範囲変
更機能はスクロールバー(1210〜1212)を用い
て表の表示範囲を変更する。要素数が多い表では狭いウ
ィンド上に多くの情報を表示できないため、一部分のみ
を表示する。その時、全体に対する表示箇所の位置が1
212の位置で表わされる。1212にマウスのカーソ
ルを合わせ、マウスのボタンを押したままカーソルを上
下することにより表示範囲を上下に移動する。また12
10、1211にマウスのカーソルを合わせ、マウスの
ボタンをクリックすることで、上下方向にそれぞれ1行
分表示範囲をずらすことができる。図11に示すような
他の表示へ状態を移動するには、選択した行の上にマウ
スのカーソルを合わせマウスのボタンを押し続けた際に
画面上に現われる移動可能な表示状態のリストのうちの
一つをマウスのカーソルで選択することにより行う。す
でに目的のウィンドが画面上に表示されている場合は、
行選択の結果、他のウィンドの表示内容も連動して変化
する。またカーソルをそのウィンドに合わせることでそ
のウィンドの状態に移ることができる。なお、図12に
おいては初期状態で1207の項目に関してソーティン
グして表示する。
【0054】図13はセグメントの実行統計の情報の表
示例である。1301はタイトル部分で、この表のタイ
トル「セグメント実行統計」の他、表の各項目のタイト
ルを表示する。各項目は、#(1302)が各行の番
号、sg#(1303)がセグメント番号(SGのid
526)、label(1304)がセグメントの先
頭アドレスのラベル(SGのlabel名 527)、
start(1305)はそのセグメントの開始アドレ
ス(SGのsa 528)、end(1306)は終了
アドレス(SGのea 529)、total(130
7)はそのセグメントの合計処理時間、rate(13
08)は全処理時間に対するそのセグメントの処理時間
の割合、call(1309)はそのセグメントの実行
回数、ave(1310)はそのセグメントの平均処理
時間、min(1311)は最小処理時間、max(1
312)は最大処理時間である。なお、図13において
は初期状態で1307の項目に関してソーティングして
表示する。
示例である。1301はタイトル部分で、この表のタイ
トル「セグメント実行統計」の他、表の各項目のタイト
ルを表示する。各項目は、#(1302)が各行の番
号、sg#(1303)がセグメント番号(SGのid
526)、label(1304)がセグメントの先
頭アドレスのラベル(SGのlabel名 527)、
start(1305)はそのセグメントの開始アドレ
ス(SGのsa 528)、end(1306)は終了
アドレス(SGのea 529)、total(130
7)はそのセグメントの合計処理時間、rate(13
08)は全処理時間に対するそのセグメントの処理時間
の割合、call(1309)はそのセグメントの実行
回数、ave(1310)はそのセグメントの平均処理
時間、min(1311)は最小処理時間、max(1
312)は最大処理時間である。なお、図13において
は初期状態で1307の項目に関してソーティングして
表示する。
【0055】図14は図13の第1要素のセグメントの
例である。1401はタイトル部で、図13における
#、sg#、start、endの情報を表示する。1
402はアドレス部、1403はラベル部、1404は
命令部である。命令部にはアセンブラの命令列の他、ア
センブラに対応するソースプログラムをコメントの形で
表示する。これらの命令列の情報は組み込みプログラム
ファイルを参照して表示する。
例である。1401はタイトル部で、図13における
#、sg#、start、endの情報を表示する。1
402はアドレス部、1403はラベル部、1404は
命令部である。命令部にはアセンブラの命令列の他、ア
センブラに対応するソースプログラムをコメントの形で
表示する。これらの命令列の情報は組み込みプログラム
ファイルを参照して表示する。
【0056】図15は関数とセグメントの階層を表わ
す。例えば、図13でlabelがL103の行を選択
している場合、L103(1504)とそれを含む関数
(1503)やその上位関数(1502)、あるいはL
103と同じ関数に含まれるセグメント(1505〜1
507)、そして上位関数に含まれる関数(1508)
とセグメント(1509)が表示される。関数名あるい
はセグメント名を表示したボックスにマウスのカーソル
を合わせ、マウスのボタンをクリックすると、選択した
部分を中心とした表示に切り替わる。
す。例えば、図13でlabelがL103の行を選択
している場合、L103(1504)とそれを含む関数
(1503)やその上位関数(1502)、あるいはL
103と同じ関数に含まれるセグメント(1505〜1
507)、そして上位関数に含まれる関数(1508)
とセグメント(1509)が表示される。関数名あるい
はセグメント名を表示したボックスにマウスのカーソル
を合わせ、マウスのボタンをクリックすると、選択した
部分を中心とした表示に切り替わる。
【0057】図16は関数の実行統計の情報の表示例で
ある。1601はタイトル部である。表の各項目は、#
(1602)が各行の番号、fn#(1603)が関数
の識別番号(FNのid関数 507)、name(1
604)が関数名(FNのFN名 508)、star
t(1605)が開始アドレス(FNのsa 50
9)、end(1606)が終了アドレス(FNのea
510)、total(1607)がその関数自体の
合計処理時間、rate(1608)が全処理時間に対
するその関数の処理時間の割合、call(1609)
がその関数の実行回数、ave(1610)がその関数
平均処理時間、all(1611)がその関数以下の全
処理とその関数の処理時間合計、arate(161
2)がallの全処理時間に対する割合である。この表
は初期状態でtotalの大きい順に表示する。
ある。1601はタイトル部である。表の各項目は、#
(1602)が各行の番号、fn#(1603)が関数
の識別番号(FNのid関数 507)、name(1
604)が関数名(FNのFN名 508)、star
t(1605)が開始アドレス(FNのsa 50
9)、end(1606)が終了アドレス(FNのea
510)、total(1607)がその関数自体の
合計処理時間、rate(1608)が全処理時間に対
するその関数の処理時間の割合、call(1609)
がその関数の実行回数、ave(1610)がその関数
平均処理時間、all(1611)がその関数以下の全
処理とその関数の処理時間合計、arate(161
2)がallの全処理時間に対する割合である。この表
は初期状態でtotalの大きい順に表示する。
【0058】(共通動作検索処理121)この処理は、
ハードウエア化すべき部分の候補として、プログラム中
の異なる部分で実行される同一の処理の部分を検出し、
ユーザに提示するために行う。図18は共通動作検索処
理121を説明する図である。図18の1801では各
セグメントsgについて1802〜1805の処理を繰
り返す。1802ではsg中の演算命令をノードとする
データフローグラフdfgを作成する。1803ではd
fg中で出枝が2以上のノードがルートとするような木
に分割し個々の木をクラスタとする。例えば、図22に
示すデータフローグラフの場合、出枝が2以上のノード
2206と2208、出枝が無い2210と2211を
ルートとするような木に分割し個々の木(2212、2
213、2214、2215)をクラスタとする。18
04では命令毎にあらかじめ決められた命令コストの総
和とそのクラスタの実行回数(すなわちセグメントの実
行回数)の積を求め、これをクラスタのコストCcとす
る。1805ではクラスタをその中の構造、演算命令の
種類により分類し、種類毎に識別番号idを付加する。
1806〜1807では同一クラスタ種の2つのクラス
タの組i,jに関して、クラスタiとjが同一の種類の
クラスタを出力側または入力側に持つ場合にiとjを同
一のグループとする処理を行う。1808〜1809で
は1807で作成した各グループについて、1807と
同様の処理を繰り返すことで、グループに属するクラス
タを増やしていく。この処理により、共通のクラスタ構
造を持つ極大のグループを構成できる。1810〜18
11では1809で拡大したグループについて、グルー
プを構成するクラスタのノード数があらかじめ決められ
た値Nよりも小さいグループの登録を抹消する。181
2では、各グループについて、グループを構成するクラ
スタのコストの総和が大きいグループから順にグループ
のデータフローグラフとグループを構成するクラスタを
含むセグメント番号を整列して共通動作命令列情報を生
成し、出力する。この出力では、この共通動作命令列情
報をファイル122へ出力するとともに、ディスプレイ
104に表示するように行う。
ハードウエア化すべき部分の候補として、プログラム中
の異なる部分で実行される同一の処理の部分を検出し、
ユーザに提示するために行う。図18は共通動作検索処
理121を説明する図である。図18の1801では各
セグメントsgについて1802〜1805の処理を繰
り返す。1802ではsg中の演算命令をノードとする
データフローグラフdfgを作成する。1803ではd
fg中で出枝が2以上のノードがルートとするような木
に分割し個々の木をクラスタとする。例えば、図22に
示すデータフローグラフの場合、出枝が2以上のノード
2206と2208、出枝が無い2210と2211を
ルートとするような木に分割し個々の木(2212、2
213、2214、2215)をクラスタとする。18
04では命令毎にあらかじめ決められた命令コストの総
和とそのクラスタの実行回数(すなわちセグメントの実
行回数)の積を求め、これをクラスタのコストCcとす
る。1805ではクラスタをその中の構造、演算命令の
種類により分類し、種類毎に識別番号idを付加する。
1806〜1807では同一クラスタ種の2つのクラス
タの組i,jに関して、クラスタiとjが同一の種類の
クラスタを出力側または入力側に持つ場合にiとjを同
一のグループとする処理を行う。1808〜1809で
は1807で作成した各グループについて、1807と
同様の処理を繰り返すことで、グループに属するクラス
タを増やしていく。この処理により、共通のクラスタ構
造を持つ極大のグループを構成できる。1810〜18
11では1809で拡大したグループについて、グルー
プを構成するクラスタのノード数があらかじめ決められ
た値Nよりも小さいグループの登録を抹消する。181
2では、各グループについて、グループを構成するクラ
スタのコストの総和が大きいグループから順にグループ
のデータフローグラフとグループを構成するクラスタを
含むセグメント番号を整列して共通動作命令列情報を生
成し、出力する。この出力では、この共通動作命令列情
報をファイル122へ出力するとともに、ディスプレイ
104に表示するように行う。
【0059】図19は1812の処理によりディスプレ
イ104に表示される共通動作命令列情報の表示例であ
る。1901はタイトル部である。表の各項目は#(1
902)が各行の番号、gr#(1903)が共通動作
の命令列のグループ番号、cost(1904)がその
グループのコストの総和、#cl(1905)がそのグ
ループを構成するクラスタの種類の数、#sg(190
6)がそのグループの共通動作命令列を含むセグメント
の種類の数である。この表はcostの大きい順に表示
する。また、マウスのカーソルを任意の行(共通動作命
令列グループ)に合わせ、マウスのボタンをクリックす
ると、図23に示す様な命令列のデータフローグラフを
表示するウィンドを開くことができる。また同時に、も
し図13に示すセグメント情報の表示が画面上にあれ
ば、そのグループの共通動作命令列を含むセグメントに
対応する行の表示の背景色と文字色を反転する。
イ104に表示される共通動作命令列情報の表示例であ
る。1901はタイトル部である。表の各項目は#(1
902)が各行の番号、gr#(1903)が共通動作
の命令列のグループ番号、cost(1904)がその
グループのコストの総和、#cl(1905)がそのグ
ループを構成するクラスタの種類の数、#sg(190
6)がそのグループの共通動作命令列を含むセグメント
の種類の数である。この表はcostの大きい順に表示
する。また、マウスのカーソルを任意の行(共通動作命
令列グループ)に合わせ、マウスのボタンをクリックす
ると、図23に示す様な命令列のデータフローグラフを
表示するウィンドを開くことができる。また同時に、も
し図13に示すセグメント情報の表示が画面上にあれ
ば、そのグループの共通動作命令列を含むセグメントに
対応する行の表示の背景色と文字色を反転する。
【0060】図23はデータフローグラフの表示例であ
り、2301はデータ入力、2302はデータ出力、2
303〜2305は演算ノードを表わす。このグラフで
は命令列中のデータ移動命令(メモリ読み出し、レジス
タ間の移動)やフロー制御命令(分岐)は省略される。
り、2301はデータ入力、2302はデータ出力、2
303〜2305は演算ノードを表わす。このグラフで
は命令列中のデータ移動命令(メモリ読み出し、レジス
タ間の移動)やフロー制御命令(分岐)は省略される。
【0061】(命令列選択処理131)命令列選択処理
131は、ハードウェア化の対象となるプログラムの一
部としてユーザが選択した命令列を入力する。選択の対
象は、共通動作命令列、セグメント内の一部の命令列、
複数のセグメントにまたがる命令列である。ユーザは、
統計解析処理116の処理結果あるいは共通動作検索処
理121の処理結果をディスプレイ104上で見て、ハ
ードウエア化すべきプログラム部分を選択し、選択した
部分を、ディスプレイ104上で指示する。たとえば、
統計解析処理116の結果に従って、このハードウエア
化する部分を選択するときには、図12あるいは図13
等の、ディスプレイ104に表示される情報を見て、ハ
ードウエア化すべき部分をこれらの画面上で指示する。
また、共通動作検索処理121で検索された共通動作命
令列またはその一部をハードウエア化すべき部分として
選択する場合、図19上で一つの行を選択する。
131は、ハードウェア化の対象となるプログラムの一
部としてユーザが選択した命令列を入力する。選択の対
象は、共通動作命令列、セグメント内の一部の命令列、
複数のセグメントにまたがる命令列である。ユーザは、
統計解析処理116の処理結果あるいは共通動作検索処
理121の処理結果をディスプレイ104上で見て、ハ
ードウエア化すべきプログラム部分を選択し、選択した
部分を、ディスプレイ104上で指示する。たとえば、
統計解析処理116の結果に従って、このハードウエア
化する部分を選択するときには、図12あるいは図13
等の、ディスプレイ104に表示される情報を見て、ハ
ードウエア化すべき部分をこれらの画面上で指示する。
また、共通動作検索処理121で検索された共通動作命
令列またはその一部をハードウエア化すべき部分として
選択する場合、図19上で一つの行を選択する。
【0062】(ハードウェア生成処理132)ハードウ
ェア生成処理132は命令列選択処理131が選択した
命令列について、ユーザより、その命令列を実行するハ
ードウェアを自動生成することが指示された場合に行な
われ、ユーザ自身がその命令列を実行するハードウェア
を設計する場合には、この処理は行われない。このハー
ドウェア生成処理132で生成されるハードウエアが実
用的と期待される場合には、ユーザは、この処理を起動
すればよい。あるいは、テスト的にこの処理を起動し、
この処理で生成されるハードウエアを評価した後、この
ハードウエアが実用的でないと判断したときには、この
処理で生成されたハードウエアを破棄するようにしても
よい。以下では、ユーザが共通動作検索処理121で検
索された共通動作命令列をハードウエア化すべき命令列
として選択した場合を例に取り、ハードウェア生成処理
132を説明する。
ェア生成処理132は命令列選択処理131が選択した
命令列について、ユーザより、その命令列を実行するハ
ードウェアを自動生成することが指示された場合に行な
われ、ユーザ自身がその命令列を実行するハードウェア
を設計する場合には、この処理は行われない。このハー
ドウェア生成処理132で生成されるハードウエアが実
用的と期待される場合には、ユーザは、この処理を起動
すればよい。あるいは、テスト的にこの処理を起動し、
この処理で生成されるハードウエアを評価した後、この
ハードウエアが実用的でないと判断したときには、この
処理で生成されたハードウエアを破棄するようにしても
よい。以下では、ユーザが共通動作検索処理121で検
索された共通動作命令列をハードウエア化すべき命令列
として選択した場合を例に取り、ハードウェア生成処理
132を説明する。
【0063】図20はハードウェア生成処理132の動
作を説明する図である。まず、ユーザが選択した命令列
を解析し、図23に示すようなデータフローグラフを作
成する(2001)。次にデータフローグラフの各ノー
ドにある演算命令に対応してあらかじめ定義されている
演算器を調べる(2002)。そして、使用する演算器
の情報とデータフローグラフの構造に合わせた演算器の
接続情報を含んだハードウェア記述を生成する。この
時、生成したハードウェアはマイクロプロセッサのメモ
リ空間に設定されたレジスタを入出力とし、メモリ空間
の決められたアドレスを参照することにより起動する。
生成は回路の雛型(HDL)をライブラリに用意し、こ
れを実際のデータフローに対応して変更することにより
行う。
作を説明する図である。まず、ユーザが選択した命令列
を解析し、図23に示すようなデータフローグラフを作
成する(2001)。次にデータフローグラフの各ノー
ドにある演算命令に対応してあらかじめ定義されている
演算器を調べる(2002)。そして、使用する演算器
の情報とデータフローグラフの構造に合わせた演算器の
接続情報を含んだハードウェア記述を生成する。この
時、生成したハードウェアはマイクロプロセッサのメモ
リ空間に設定されたレジスタを入出力とし、メモリ空間
の決められたアドレスを参照することにより起動する。
生成は回路の雛型(HDL)をライブラリに用意し、こ
れを実際のデータフローに対応して変更することにより
行う。
【0064】例えば、図23に示すデータフローグラフ
に対して図24のような論理回路を生成するが、この図
で2405、2407の入力レジスタが図23の入力2
301に、2412の出力レジスタが出力2302に、
2409の乗算器が2303に、2410の乗算器が2
404に、2411の加算器が2405にそれぞれ対応
する。実際には図25と図26に示すHDLが生成の対
象である。2501部分は回路名称と入出力端子を定義
している。この中で回路名称と、入力レジスタの書き込
み制御線の本数(STR0、STR1)が設計対象によ
り異なる。2502部分はライブラリファイルに定義さ
れている各演算命令に対応した演算器とレジスタの定義
である。これらは、設計対象のデータフローグラフのノ
ードに応じて必要な演算器を選択する。2503は生成
回路中で用いる定数と信号線である。これらは、このハ
ードウェアの起動命令で用いる割り当てアドレスとこの
ハードウェアの実行サイクル、使用する演算器とレジス
タの数により決める。ハードウェアの実行サイクルは入
力レジスタと出力レジスタ以外のレジスタの段数+1の
値である。2601は図24の制御回路2404の動作
である。これらは実行サイクル、割り当てアドレス部分
の名称を設計対象により変更する。2602はレジスタ
と演算器の接続情報である。これらは図23のグラフに
対応して生成する。ハードウェア生成処理では、図2
5、図26に示したHDLの他に、入出力レジスタの選
択信号を作成するアドレスデコーダの回路を用意する。
このアドレスデコーダもライブラリファイルにあらかじ
め登録したHDL記述を用いる。このハードウェア生成
には特開平4−175974に示した方法を用いること
もできる。
に対して図24のような論理回路を生成するが、この図
で2405、2407の入力レジスタが図23の入力2
301に、2412の出力レジスタが出力2302に、
2409の乗算器が2303に、2410の乗算器が2
404に、2411の加算器が2405にそれぞれ対応
する。実際には図25と図26に示すHDLが生成の対
象である。2501部分は回路名称と入出力端子を定義
している。この中で回路名称と、入力レジスタの書き込
み制御線の本数(STR0、STR1)が設計対象によ
り異なる。2502部分はライブラリファイルに定義さ
れている各演算命令に対応した演算器とレジスタの定義
である。これらは、設計対象のデータフローグラフのノ
ードに応じて必要な演算器を選択する。2503は生成
回路中で用いる定数と信号線である。これらは、このハ
ードウェアの起動命令で用いる割り当てアドレスとこの
ハードウェアの実行サイクル、使用する演算器とレジス
タの数により決める。ハードウェアの実行サイクルは入
力レジスタと出力レジスタ以外のレジスタの段数+1の
値である。2601は図24の制御回路2404の動作
である。これらは実行サイクル、割り当てアドレス部分
の名称を設計対象により変更する。2602はレジスタ
と演算器の接続情報である。これらは図23のグラフに
対応して生成する。ハードウェア生成処理では、図2
5、図26に示したHDLの他に、入出力レジスタの選
択信号を作成するアドレスデコーダの回路を用意する。
このアドレスデコーダもライブラリファイルにあらかじ
め登録したHDL記述を用いる。このハードウェア生成
には特開平4−175974に示した方法を用いること
もできる。
【0065】なお、以上において、プログラム中の一部
の命令列と等価な動作を行うハードウェアを人手で作成
した場合は、そのハードウェア記述を既設計のハードウ
ェア記述を格納したファイル109に追加する。ハード
ウェアの起動の方法が、すでに示した方法と同様の場合
は、ハードウェア化した命令列をデータフローの形式で
入力すると、後に述べる命令列置換処理133によるプ
ログラムの修正が可能である。また、このような人手に
よるハードウエア記述を含むプログラムの修正も人手で
行うことも可能である。追加したハードウェアの記述
と、そのハードウェアを起動する命令列を含むプログラ
ムが準備できれば、上に示した手順でハードウェア込み
の性能解析が可能になる。この時、ソースプログラム上
で指定した区間制約の箇所をソースプログラムレベルで
保存しておくことにより、プログラムのサイズの変化に
伴い、制約区間の実際のアドレスが変わっても、再度区
間制約の指定を行わずに同じ制約箇所に関する情報を採
取することができる。
の命令列と等価な動作を行うハードウェアを人手で作成
した場合は、そのハードウェア記述を既設計のハードウ
ェア記述を格納したファイル109に追加する。ハード
ウェアの起動の方法が、すでに示した方法と同様の場合
は、ハードウェア化した命令列をデータフローの形式で
入力すると、後に述べる命令列置換処理133によるプ
ログラムの修正が可能である。また、このような人手に
よるハードウエア記述を含むプログラムの修正も人手で
行うことも可能である。追加したハードウェアの記述
と、そのハードウェアを起動する命令列を含むプログラ
ムが準備できれば、上に示した手順でハードウェア込み
の性能解析が可能になる。この時、ソースプログラム上
で指定した区間制約の箇所をソースプログラムレベルで
保存しておくことにより、プログラムのサイズの変化に
伴い、制約区間の実際のアドレスが変わっても、再度区
間制約の指定を行わずに同じ制約箇所に関する情報を採
取することができる。
【0066】(命令列置換処理133)命令列置換処理
133はハードウェア生成処理132の実行をユーザが
指定した場合に行われ、ユーザが選択したハードウェア
化すべき命令列として選択した命令列と、ハードウェア
生成処理132が生成したハードウェアを起動するため
の命令列を用いて、組み込みプログラム108に記述さ
れた命令列をハードウェア生成処理132が生成したハ
ードウェアを利用する命令列に自動的に置き換える。
133はハードウェア生成処理132の実行をユーザが
指定した場合に行われ、ユーザが選択したハードウェア
化すべき命令列として選択した命令列と、ハードウェア
生成処理132が生成したハードウェアを起動するため
の命令列を用いて、組み込みプログラム108に記述さ
れた命令列をハードウェア生成処理132が生成したハ
ードウェアを利用する命令列に自動的に置き換える。
【0067】この処理を図21を用いて説明する。21
01では、命令列選択132が選択した命令列のデータ
フローグラフdfgを作成し、2103〜2110の処
理を、命令列の置き換えが必要な各セグメントsgにつ
いて繰り返す。2103ではsgのすべての命令をノー
ドとするデータフローグラフdfg_sgを作成する。
2104ではdfgとdfg_sgの対応する命令を検
索する。2105ではdfg_sg上の対応演算命令の
演算対象のレジスタ、あるいはメモリ位置を指すインデ
ックスレジスタの値をセットしている命令を検索する。
2106では2105で求めたレジスタのセットの命令
を、生成したハードウェアの入力レジスタへの書き込み
命令に変更する。2107ではdfg_sg上の対応演
算命令のうち、最後の演算命令とその結果が格納される
出力レジスタの番号Nrを検索する。2108では最後
の演算命令を、生成したハードウェアの起動命令と、生
成したハードウェアの出力レジスタからレジスタNrへ
の書き込み命令に変更する。2109ではdfg_sg
上の対応演算命令のうち、変更されていない残りのノー
ドを削除する。2110ではdfg_sgのノードをト
ポロジカルオーダで(入力の依存順)アセンブラ命令に
置き換えてファイル136出力する。
01では、命令列選択132が選択した命令列のデータ
フローグラフdfgを作成し、2103〜2110の処
理を、命令列の置き換えが必要な各セグメントsgにつ
いて繰り返す。2103ではsgのすべての命令をノー
ドとするデータフローグラフdfg_sgを作成する。
2104ではdfgとdfg_sgの対応する命令を検
索する。2105ではdfg_sg上の対応演算命令の
演算対象のレジスタ、あるいはメモリ位置を指すインデ
ックスレジスタの値をセットしている命令を検索する。
2106では2105で求めたレジスタのセットの命令
を、生成したハードウェアの入力レジスタへの書き込み
命令に変更する。2107ではdfg_sg上の対応演
算命令のうち、最後の演算命令とその結果が格納される
出力レジスタの番号Nrを検索する。2108では最後
の演算命令を、生成したハードウェアの起動命令と、生
成したハードウェアの出力レジスタからレジスタNrへ
の書き込み命令に変更する。2109ではdfg_sg
上の対応演算命令のうち、変更されていない残りのノー
ドを削除する。2110ではdfg_sgのノードをト
ポロジカルオーダで(入力の依存順)アセンブラ命令に
置き換えてファイル136出力する。
【0068】図9は命令列置換の結果を説明する図であ
る。2701は図8に示したプログラムである。ここで
は図23に示すデータフローグラフが表す共通動作命令
列を置換の対象とする例を説明する。図23の共通命令
列を含むL103から始まるセグメント(810)は、
命令列置換の処理により2702のように置き換わる。
図9に示す結果はこの形式でファイル136に格納され
る。命令列置換により命令数が変化するので従来のアド
レスや命令コードはそのまま再利用することはできない
が、ファイル136を再度アセンブルし、図8に示すよ
うにアドレス、命令コードを含む形式に変換することに
より、再度本実施の形態に示す方法を適用することがで
きる。すなわち、置換後のプログラムファイル136を
アセンブルし、ハードウェア生成処理132が生成した
ファイル135をハードウェア記述109に追加して、
本実施の形態に示す方法を再度適用することで新しく生
成したハードウェアを含めてシステム性能を評価し、ハ
ードウェア化の効果を確認できるとともに、新たなハー
ドウェア化箇所の候補を選択することが可能である。
る。2701は図8に示したプログラムである。ここで
は図23に示すデータフローグラフが表す共通動作命令
列を置換の対象とする例を説明する。図23の共通命令
列を含むL103から始まるセグメント(810)は、
命令列置換の処理により2702のように置き換わる。
図9に示す結果はこの形式でファイル136に格納され
る。命令列置換により命令数が変化するので従来のアド
レスや命令コードはそのまま再利用することはできない
が、ファイル136を再度アセンブルし、図8に示すよ
うにアドレス、命令コードを含む形式に変換することに
より、再度本実施の形態に示す方法を適用することがで
きる。すなわち、置換後のプログラムファイル136を
アセンブルし、ハードウェア生成処理132が生成した
ファイル135をハードウェア記述109に追加して、
本実施の形態に示す方法を再度適用することで新しく生
成したハードウェアを含めてシステム性能を評価し、ハ
ードウェア化の効果を確認できるとともに、新たなハー
ドウェア化箇所の候補を選択することが可能である。
【0069】以上の発明の実施の形態から分かるよう
に、マイクロプロセッサとそのプログラムを組み込んだ
メモリ、および周辺回路を1チップに集積したLSIの
ようなハードウェアとソフトウェアが混在したシステム
の設計に際し、ハードウェア部分の動作を含めて、ソフ
トウェアの処理時間と処理頻度を正確に測定し、指定区
間の処理時間制約を満足しない箇所を調べ、その動作を
抽出するので、ユーザがハードウエア化すべき部分を選
択するのが容易になる。さらに、目標性能を満足するよ
うに、少ない追加ハードウェア量で目的の動作を実現し
ようとする場合に、処理時間制約を満足しない指定区間
中に通過するプログラム部分の処理頻度を調べることに
より、ユーザがハードウェアとして実現するプログラム
の1部分の候補を探すことが容易にできるようになる。
さらに、同じ動作を異なる命令順で行っているプログラ
ム中の共通動作部分を自動的に調べて、ユーザに提示し
た場合には、プログラムの構成要素の一部あるいは複数
の構成要素にまたがった、ハードウェア化すべき範囲と
して、ユーザがこの共通動作部分を選択しやすくなる。
選択したプログラム動作から自動的に生成したハードウ
ェアモデルが実用的であると期待される場合には、ユー
ザの指示によりそのハードウエアモデルを自動的に生成
し、元のプログラムを生成したハードウェアを利用する
ように自動的に書き換えることもできる。この書き換え
後のプログラムの性能評価を再度おこなうことによりハ
ードウェア化の効果を簡単に確認することが可能にな
る。さらに、この作業を繰り返すことにより、すでに生
成したハードウェアの修正や他のハードウェア化対象部
分を検索することができる。
に、マイクロプロセッサとそのプログラムを組み込んだ
メモリ、および周辺回路を1チップに集積したLSIの
ようなハードウェアとソフトウェアが混在したシステム
の設計に際し、ハードウェア部分の動作を含めて、ソフ
トウェアの処理時間と処理頻度を正確に測定し、指定区
間の処理時間制約を満足しない箇所を調べ、その動作を
抽出するので、ユーザがハードウエア化すべき部分を選
択するのが容易になる。さらに、目標性能を満足するよ
うに、少ない追加ハードウェア量で目的の動作を実現し
ようとする場合に、処理時間制約を満足しない指定区間
中に通過するプログラム部分の処理頻度を調べることに
より、ユーザがハードウェアとして実現するプログラム
の1部分の候補を探すことが容易にできるようになる。
さらに、同じ動作を異なる命令順で行っているプログラ
ム中の共通動作部分を自動的に調べて、ユーザに提示し
た場合には、プログラムの構成要素の一部あるいは複数
の構成要素にまたがった、ハードウェア化すべき範囲と
して、ユーザがこの共通動作部分を選択しやすくなる。
選択したプログラム動作から自動的に生成したハードウ
ェアモデルが実用的であると期待される場合には、ユー
ザの指示によりそのハードウエアモデルを自動的に生成
し、元のプログラムを生成したハードウェアを利用する
ように自動的に書き換えることもできる。この書き換え
後のプログラムの性能評価を再度おこなうことによりハ
ードウェア化の効果を簡単に確認することが可能にな
る。さらに、この作業を繰り返すことにより、すでに生
成したハードウェアの修正や他のハードウェア化対象部
分を検索することができる。
【0070】<変形例> (1)前述の実施の形態で記載した技術は、マイクロプ
ロセッサ以外のプロセッサ、たとえば、信号処理プロセ
ッサ等を搭載した回路にも適用できる。さらに、プロセ
ッサが搭載されているLSIの外部に位置する他のLS
Iに一部の周辺回路が搭載されている場合にも、適用で
きる。
ロセッサ以外のプロセッサ、たとえば、信号処理プロセ
ッサ等を搭載した回路にも適用できる。さらに、プロセ
ッサが搭載されているLSIの外部に位置する他のLS
Iに一部の周辺回路が搭載されている場合にも、適用で
きる。
【0071】(2)前述の実施の形態では、区間制約の
指定に際し、ソースプログラム上で指定する例を示し
た。これは、区間制約に関しての統計情報は、機械語命
令レベルで採取するが、ユーザにとって機械語命令レベ
ルより、ソースプログラムで指示を行う方が容易である
ことによる。しかし、画面上で機械語命令のアドレスで
区間を指定する、またはファイルに記述した機械語命令
のアドレスで区間を指定することもできる。
指定に際し、ソースプログラム上で指定する例を示し
た。これは、区間制約に関しての統計情報は、機械語命
令レベルで採取するが、ユーザにとって機械語命令レベ
ルより、ソースプログラムで指示を行う方が容易である
ことによる。しかし、画面上で機械語命令のアドレスで
区間を指定する、またはファイルに記述した機械語命令
のアドレスで区間を指定することもできる。
【0072】(3)前述の実施の形態では、組込みプロ
グラムの例として機械語プログラム、アセンブラ、ソー
スプログラムが混在する形式のファイルを入力し、アセ
ンブラの記述をベースにして構成要素解析を実施する例
を示したが、機械語プログラムと、各関数の開始アドレ
スや分岐先のアドレス等のコンパイル時の情報を元に同
様の解析を行うこともできる。この場合、機械語プログ
ラムを解析し、分岐命令の分岐先アドレスを特定するこ
とにより、セグメントへの分割を行う。分岐先アドレス
がレジスタ値により指定されるような分岐命令でこの命
令だけでは分岐先が特定できない場合、その直前のレジ
スタ設定命令を調べ、その値を調べるか、統計情報を採
取する際のシミュレーション時に、分岐先が判明した時
点で新たにセグメント分割位置を変更することにより構
成要素の解析を行う。各関数と機械語プログラムのアド
レスとの対応は、コンパイル時の情報を用いる。また、
区間制約を与える際に使用するソースプログラムは別途
与える。
グラムの例として機械語プログラム、アセンブラ、ソー
スプログラムが混在する形式のファイルを入力し、アセ
ンブラの記述をベースにして構成要素解析を実施する例
を示したが、機械語プログラムと、各関数の開始アドレ
スや分岐先のアドレス等のコンパイル時の情報を元に同
様の解析を行うこともできる。この場合、機械語プログ
ラムを解析し、分岐命令の分岐先アドレスを特定するこ
とにより、セグメントへの分割を行う。分岐先アドレス
がレジスタ値により指定されるような分岐命令でこの命
令だけでは分岐先が特定できない場合、その直前のレジ
スタ設定命令を調べ、その値を調べるか、統計情報を採
取する際のシミュレーション時に、分岐先が判明した時
点で新たにセグメント分割位置を変更することにより構
成要素の解析を行う。各関数と機械語プログラムのアド
レスとの対応は、コンパイル時の情報を用いる。また、
区間制約を与える際に使用するソースプログラムは別途
与える。
【0073】(4)前述の実施の形態では、命令列置換
処理133において、アセンブラプログラムのレベルで
置換を行い、変更されたアセンブラプログラムを再アセ
ンブルすることにより再度、ハードウェア化部分も含め
た性能解析を行う方法を示した。再度アセンブルするの
は、命令列置換処理により、プログラムのサイズが変わ
るため、分岐先のアドレス、データの格納アドレス等を
再度設定しなおす必要があるからである。これに対し再
アセンブルを行わず、内部データのみを修正する方法も
ある。内部データを修正する場合は、分岐命令やデータ
参照等のメモリアドレスを使用している機械語命令の場
所とそのアドレスに関する情報を別途保持し、プログラ
ムサイズが変わった際に、機械語命令中のアドレス情報
を直接変更できるようにする。また、構造/統計データ
中のアドレスに関する情報も同時に更新する。
処理133において、アセンブラプログラムのレベルで
置換を行い、変更されたアセンブラプログラムを再アセ
ンブルすることにより再度、ハードウェア化部分も含め
た性能解析を行う方法を示した。再度アセンブルするの
は、命令列置換処理により、プログラムのサイズが変わ
るため、分岐先のアドレス、データの格納アドレス等を
再度設定しなおす必要があるからである。これに対し再
アセンブルを行わず、内部データのみを修正する方法も
ある。内部データを修正する場合は、分岐命令やデータ
参照等のメモリアドレスを使用している機械語命令の場
所とそのアドレスに関する情報を別途保持し、プログラ
ムサイズが変わった際に、機械語命令中のアドレス情報
を直接変更できるようにする。また、構造/統計データ
中のアドレスに関する情報も同時に更新する。
【0074】(5)前述の実施の形態では、セグメント
内の一部の命令列をハードウェアの起動命令列に置き換
える例を示したが、複数のセグメントにまたがった命令
列をハードウェアに置き換えることも可能である。この
場合、構造/統計データのうちのセグメントの構成に関
する情報も修正する必要がある。これは、修正のあった
セグメントに対し、それを含む関数の情報をたどり、逐
次情報を修正することにより行う。
内の一部の命令列をハードウェアの起動命令列に置き換
える例を示したが、複数のセグメントにまたがった命令
列をハードウェアに置き換えることも可能である。この
場合、構造/統計データのうちのセグメントの構成に関
する情報も修正する必要がある。これは、修正のあった
セグメントに対し、それを含む関数の情報をたどり、逐
次情報を修正することにより行う。
【0075】(6)前述の実施の形態に示した支援方法
では、そこで用いる処理や関連する処理が全て同じ計算
機システム上で実行される。しかし、これらの処理は、
異なるプロセッサ上に実現されていても、本発明の目的
を損なうものではない。例えば、ハードウェアのシミュ
レーションに用いる論理シミュレータがその他の部分と
異なるプロセッサ上で動作し、適宜必要な情報をプロセ
ッサ間で通信することにより実現できる。また、入力と
する組込みプログラムのコンパイル・アセンブルを他の
プロセッサ上で行うこともできる。この場合、ファイル
を通信あるいは記録媒体を介して転送するか、プロセッ
サ間でのファイル共有方法により共有を実現する。
では、そこで用いる処理や関連する処理が全て同じ計算
機システム上で実行される。しかし、これらの処理は、
異なるプロセッサ上に実現されていても、本発明の目的
を損なうものではない。例えば、ハードウェアのシミュ
レーションに用いる論理シミュレータがその他の部分と
異なるプロセッサ上で動作し、適宜必要な情報をプロセ
ッサ間で通信することにより実現できる。また、入力と
する組込みプログラムのコンパイル・アセンブルを他の
プロセッサ上で行うこともできる。この場合、ファイル
を通信あるいは記録媒体を介して転送するか、プロセッ
サ間でのファイル共有方法により共有を実現する。
【0076】
【発明の効果】本発明によれば、オブジェクトプログラ
ムのシミュレーションの結果として、そのプログラムの
各構成要素毎に処理時間に関連する情報を出力できるの
で、ユーザは、そのプログラムの中のハードウエア化す
べき部分を各構成要素を手掛かりにして選択すればよい
ので、このハードウエア化すべき部分の選択しやすくな
る。さらに、その際、シミュレーションを実行する区間
を指定するようにすれば、ユーザが希望する区間に関し
て、上に述べたよう、構成要素を単位としてのシミュレ
ーション結果が得られるので、ユーザが希望する部分の
中からハードウエア化すべき部分をさらに絞ることが出
来る。さらに、このシミュレーション区間の指定を、ソ
ースプログラム上で指定する方法を採用した場合には、
ユーザにとって、区間の指定が平易に出来る。
ムのシミュレーションの結果として、そのプログラムの
各構成要素毎に処理時間に関連する情報を出力できるの
で、ユーザは、そのプログラムの中のハードウエア化す
べき部分を各構成要素を手掛かりにして選択すればよい
ので、このハードウエア化すべき部分の選択しやすくな
る。さらに、その際、シミュレーションを実行する区間
を指定するようにすれば、ユーザが希望する区間に関し
て、上に述べたよう、構成要素を単位としてのシミュレ
ーション結果が得られるので、ユーザが希望する部分の
中からハードウエア化すべき部分をさらに絞ることが出
来る。さらに、このシミュレーション区間の指定を、ソ
ースプログラム上で指定する方法を採用した場合には、
ユーザにとって、区間の指定が平易に出来る。
【0077】さらに、ユーザ指定の複数のシミュレーシ
ョン区間に対してシミュレーションを行い、その結果に
基づいて、設計者が指定した処理時間等の条件を満たさ
ない複数のシミュレーション区間を自動的に判別する場
合には、設計者が希望する条件を満たさない区間の中か
らハードウエア化すべきプログラム部分をユーザは選択
できるので、ハードウエア化すべき部分の選択が容易に
なる。
ョン区間に対してシミュレーションを行い、その結果に
基づいて、設計者が指定した処理時間等の条件を満たさ
ない複数のシミュレーション区間を自動的に判別する場
合には、設計者が希望する条件を満たさない区間の中か
らハードウエア化すべきプログラム部分をユーザは選択
できるので、ハードウエア化すべき部分の選択が容易に
なる。
【0078】さらに、先行するシミュレーションの結果
を利用して、ハードウエア化すべき部分を自動的に決
め、その後シミュレーション中に使用するプログラムを
そのハードウエア化する部分により自動的に更新する場
合には、ユーザは、そのプログラムを自らが更新するこ
となく、シミュレーションを繰り返すことが出来る。
を利用して、ハードウエア化すべき部分を自動的に決
め、その後シミュレーション中に使用するプログラムを
そのハードウエア化する部分により自動的に更新する場
合には、ユーザは、そのプログラムを自らが更新するこ
となく、シミュレーションを繰り返すことが出来る。
【0079】
【図1】本発明によるハードウェア/ソフトウェア混在
システムの設計支援装置の構成を示す図である。
システムの設計支援装置の構成を示す図である。
【図2】区間制約指定処理のフローチャートである。
【図3】区間制約データを説明する図である。
【図4】プログラム構成要素解析処理のフローチャート
である。
である。
【図5】構造/統計データを説明する図である。
【図6】プログラム実行解析処理のフローチャートであ
る。
る。
【図7】統計解析処理のフローチャートである。
【図8】組み込みプログラムの例を説明する図である。
【図9】命令置換後のプログラムの例を示す図である。
【図10】プログラム実行トレース処理のフローチャー
トである。
トである。
【図11】区間制約違反部分に関して、処理時間に関連
する情報の表示動作を説明する図である。
する情報の表示動作を説明する図である。
【図12】区間制約違反の出力例である。
【図13】セグメント実行統計の出力例を示す図であ
る。
る。
【図14】セグメントの出力例を示す図である。
【図15】関数とセグメントの階層の出力例を示す図で
ある。
ある。
【図16】関数実行統計の出力例を示す図でである。
【図17】現在のセグメントの統計情報の更新処理のフ
ローチャートである。
ローチャートである。
【図18】共通動作検索処理のフローチャートである。
【図19】共通動作命令列の例を示す図である。
【図20】ハードウェア生成処理のフローチャートであ
る。
る。
【図21】命令列置換処理のフローチャートである。
【図22】共通動作検索処理を説明するための図であ
る。
る。
【図23】共通動作検索処理で生成されるデータフロー
グラフの例を説明する図である。
グラフの例を説明する図である。
【図24】命令列選択処理により選択された命令列を実
行するハードウェアを例示する図である。
行するハードウェアを例示する図である。
【図25】命令列選択処理により生成されるハードウェ
ア記述言語の例を示す図である。
ア記述言語の例を示す図である。
【図26】命令列選択処理により生成されるハードウェ
ア記述言語の他の例を示す図である。
ア記述言語の他の例を示す図である。
801…プログラムの格納されるアドレス、802…命
令コード、803…ラベル、804…プログラム部、8
05…コメント中に記録された高級言語のプログラム、
806…アセンブリ言語、501…関数の構造データF
Nstruct、502…その関数の情報を表すFN
(506)へのポインタfnp、503…リスト(51
8)へのポインタsgl、504…リスト(519)へ
のポインタprnt、505…リスト(520)へのポ
インタchd、506…関数の情報FN、507…関数
の識別番号id、508…関数名(FN名)、509…
関数の開始アドレスsa、510…関数の終了アドレス
ea、511…関数統計情報はその関数の統計情報、5
18…関数を構成するセグメントの集合を表すリスト、
519…関数の上位階層の関数(その関数をコールする
関数)のFNstructを指すポインタのリスト、5
20…関数の下位階層の関数のFNstructを指す
ポインタのリスト、512…セグメント間の関係を表す
データSGstruct、521…セグメント情報SG
(525)へのポインタsgp、522…リスト541
へのポインタpre、523…リスト542へのポイン
タsuc、524…このセグメントを含む関数へのポイ
ンタfnp、525…セグメント情報を表すデータS
G、526…セグメントの識別番号id、527…セグ
メントの先頭アドレスにラベルがあった場合のラベル
名、528…セグメントの開始アドレスsa、529…
セグメントの終了アドレスea、530…セグメントの
統計情報、541…このセグメントの直前に実行される
セグメントのリスト、542…このセグメントの直後に
実行されるセグメントのリスト、1201…タイトル部
分、1202…各行の番号#、1203…区間制約デー
タの識別番号id(301)に対応する番号tsn#、
1204…開始点アドレス(302)start、12
05…終了点アドレス(303)end、1206…制
約として与えられた処理時間(304)spec、12
07…その区間の平均の処理時間ave、1208…そ
の区間の実行回数cnt、1209…実際の処理時間が
制約時間を超えた回数violate、1301…タイ
トル部分、1302…各行の番号#、1303…セグメ
ント番号(SGのid 526)sg#、1304…セ
グメントの先頭アドレスのラベル(SGのlabel名
527)label、1305…そのセグメントの開
始アドレス(SGのsa 528)start、130
6…終了アドレス(SGのea 529)end、13
07…そのセグメントの合計処理時間total、13
08…全処理時間に対するそのセグメントの処理時間の
割合rate、1309…そのセグメントの実行回数c
all、1310…そのセグメントの平均処理時間av
e、1311…最小処理時間min、1312…最大処
理時間max、1401…タイトル部、1402…アド
レス部、1403…ラベル部、1404…命令部、15
02・1503・1505…関数、1504・1506
〜1508…セグメント、1601…タイトル部、16
02…各行の番号#、1603…関数の識別番号(FN
のid関数 507)fn#、1604…関数名(FN
のFN名 508)name、1605…開始アドレス
(FNのsa 509)start、1606…終了ア
ドレス(FNのea 510)end、1607…その
関数自体の合計処理時間total、1608…全処理
時間に対するその関数の処理時間の割合rate、16
09…その関数の実行回数call、1610…その関
数平均処理時間ave、1611…その関数以下の全処
理とその関数の処理時間合計all、1612…all
の全処理時間に対する割合arate、2201〜22
05…入力ノード、2206〜2211…ノード、22
12〜2215…クラスタ、1901…タイトル部、1
902…各行の番号#、1903…共通動作の命令列の
グループ番号gr#、1904…そのグループのコスト
の総和cost、1905…そのグループを構成するク
ラスタの種類の数#cl、1906…そのグループの共
通動作命令列を含むセグメントの種類の数#sg、23
01…入力ノード、2302…出力ノード、2303〜
2305…ノード、2401…アドレスバス、2402
…データバス、2405〜2408…入力レジスタ、2
409〜2411…演算器、2412…出力レジスタ。
令コード、803…ラベル、804…プログラム部、8
05…コメント中に記録された高級言語のプログラム、
806…アセンブリ言語、501…関数の構造データF
Nstruct、502…その関数の情報を表すFN
(506)へのポインタfnp、503…リスト(51
8)へのポインタsgl、504…リスト(519)へ
のポインタprnt、505…リスト(520)へのポ
インタchd、506…関数の情報FN、507…関数
の識別番号id、508…関数名(FN名)、509…
関数の開始アドレスsa、510…関数の終了アドレス
ea、511…関数統計情報はその関数の統計情報、5
18…関数を構成するセグメントの集合を表すリスト、
519…関数の上位階層の関数(その関数をコールする
関数)のFNstructを指すポインタのリスト、5
20…関数の下位階層の関数のFNstructを指す
ポインタのリスト、512…セグメント間の関係を表す
データSGstruct、521…セグメント情報SG
(525)へのポインタsgp、522…リスト541
へのポインタpre、523…リスト542へのポイン
タsuc、524…このセグメントを含む関数へのポイ
ンタfnp、525…セグメント情報を表すデータS
G、526…セグメントの識別番号id、527…セグ
メントの先頭アドレスにラベルがあった場合のラベル
名、528…セグメントの開始アドレスsa、529…
セグメントの終了アドレスea、530…セグメントの
統計情報、541…このセグメントの直前に実行される
セグメントのリスト、542…このセグメントの直後に
実行されるセグメントのリスト、1201…タイトル部
分、1202…各行の番号#、1203…区間制約デー
タの識別番号id(301)に対応する番号tsn#、
1204…開始点アドレス(302)start、12
05…終了点アドレス(303)end、1206…制
約として与えられた処理時間(304)spec、12
07…その区間の平均の処理時間ave、1208…そ
の区間の実行回数cnt、1209…実際の処理時間が
制約時間を超えた回数violate、1301…タイ
トル部分、1302…各行の番号#、1303…セグメ
ント番号(SGのid 526)sg#、1304…セ
グメントの先頭アドレスのラベル(SGのlabel名
527)label、1305…そのセグメントの開
始アドレス(SGのsa 528)start、130
6…終了アドレス(SGのea 529)end、13
07…そのセグメントの合計処理時間total、13
08…全処理時間に対するそのセグメントの処理時間の
割合rate、1309…そのセグメントの実行回数c
all、1310…そのセグメントの平均処理時間av
e、1311…最小処理時間min、1312…最大処
理時間max、1401…タイトル部、1402…アド
レス部、1403…ラベル部、1404…命令部、15
02・1503・1505…関数、1504・1506
〜1508…セグメント、1601…タイトル部、16
02…各行の番号#、1603…関数の識別番号(FN
のid関数 507)fn#、1604…関数名(FN
のFN名 508)name、1605…開始アドレス
(FNのsa 509)start、1606…終了ア
ドレス(FNのea 510)end、1607…その
関数自体の合計処理時間total、1608…全処理
時間に対するその関数の処理時間の割合rate、16
09…その関数の実行回数call、1610…その関
数平均処理時間ave、1611…その関数以下の全処
理とその関数の処理時間合計all、1612…all
の全処理時間に対する割合arate、2201〜22
05…入力ノード、2206〜2211…ノード、22
12〜2215…クラスタ、1901…タイトル部、1
902…各行の番号#、1903…共通動作の命令列の
グループ番号gr#、1904…そのグループのコスト
の総和cost、1905…そのグループを構成するク
ラスタの種類の数#cl、1906…そのグループの共
通動作命令列を含むセグメントの種類の数#sg、23
01…入力ノード、2302…出力ノード、2303〜
2305…ノード、2401…アドレスバス、2402
…データバス、2405〜2408…入力レジスタ、2
409〜2411…演算器、2412…出力レジスタ。
Claims (19)
- 【請求項1】プロセッサと、それに接続された少なくと
も一つの関連回路とを有する回路を制御するためのオブ
ジェクトプログラムの内、他の関連回路によりその機能
を実行させるべき部分の選択を、計算機と、入力装置
と、出力装置とを有する計算機システムを用いて支援す
るハードウエアとソフトウエアの混在システムの設計支
援方法であって、 そのオブジェクトプログラムを構成する複数の構成要素
とそれらの間の関係を示す構成要素間関係を判別し、 ユーザにより選択された、動作解析すべき区間を特定す
るための区間指定情報を上記入力装置を用いて入力し、 該プロセッサと該関連回路を制御するときの上記オブジ
ェクトプログラムの動作を、上記プロセッサの仕様と上
記少なくとも一つの関連回路を記述するハードウエア記
述とに基づいてシミュレーションし、 上記シミュレーションの間に、該判別された複数の構成
要素の内、該入力された区間指定情報で特定される動作
解析すべき区間に属する一部の複数の構成要素の各々の
処理時間に関連する情報を収集し、 上記一部の複数の構成要素の各々を識別する情報とそれ
ぞれに対して収集された処理時間に関連する情報とを、
該オブジェクトプログラムの内、ハードウエア化すべき
部分の、該ユーザによる選択を支援するための情報とし
て上記表示装置に表示するハードウエアとソフトウエア
の混在システムの設計支援方法。 - 【請求項2】上記オブジェクトプログラムを構成する該
複数の構成要素の判別は、上記オブジェクトプログラム
に対するソースプログラムを構成する複数の構成要素の
一つにそれぞれ対応するように相対的に大きな複数の構
成要素を選択し、該選択された相対的に大きな複数の構
成要素の各々を構成する相対的に小さな複数の構成要素
を選択し、上記選択された相対的に大きな複数の構成要
素と上記選択された相対的に小さな複数の構成要素とを
オブジェクトプログラムを構成する複数の構成要素とし
て判別するステップを有し、 上記収集は、上記動作解析すべき区間に属する複数の相
対的に大きな構成要素の各々に関する処理時間に関連す
る情報と、それぞれの相対的に大きな構成要素に属する
相対的に小さな複数の構成要素の各々についての処理時
間に関する情報とを収集するステップを含み、 上記表示は、上記動作解析すべき区間に属する上記判別
された相対的に大きな複数の構成要素の各々およびそれ
ぞれの相対的に大きな複数の構成要素に属する相対的に
小さな複数の構成要素の各々に関して収集された処理時
間に関連する情報を表示するステップを有する請求項1
記載のハードウエアとソフトウエアの混在システムの設
計支援方法。 - 【請求項3】上記オブジェクトプログラムは、上記オブ
ジェクトプログラムに対するソースプログラムを変換し
て得られるアセンブラプログラムをさらに変換して得ら
れたものであり、 上記オブジェクトプログラムの複数の構成要素と構成要
素間関係の判別は、 上記アセンブラプログラムを解析して、アセンブラプロ
グラムを構成する複数の構成要素とそれらの構成要素の
間の関係を指示する構成要素間関係を判別し、 上記アセンブラプログラムを構成する複数の構成要素と
それらの構成要素の間の関係を指示する構成要素間関係
に基づいて、上記オブジェクトプログラムの対応する複
数の構成要素と構成要素間関係を判別するステップを有
する請求項1記載のハードウエアとソフトウエアの混在
システムの設計支援方法。 - 【請求項4】上記オブジェクトプログラムの構成要素と
構成要素間関係の判別は、上記オブジェクトプログラム
を解析して行われる請求項1記載のハードウエアとソフ
トウエアの混在システムの設計支援方法。 - 【請求項5】上記区間指定情報の入力は、 上記オブジェクトプログラムに対するソースプログラム
を上記表示装置に表示し、 表示されたソースプログラム上の、ユーザにより選択さ
れた動作解析すべき区間の開始点と終了点とを指定する
区間指定情報を上記入力装置を用いて入力するステップ
を有する請求項1記載のハードウエアとソフトウエアの
混在システムの設計支援方法。 - 【請求項6】上記選択においては、 前記ソースプログラム上の上記開始点および上記終了点
にそれぞれ対応する、上記オブジェクトプログラム上の
開始点と終了点を、オブジェクト上の動作解析すべき区
間を規定する情報として検出し、 該検出された開始点と終了点および該判別された構成要
素間関係とに基づいて、該オブジェクトプログラム上の
開始点を通過してから該オブジェクトプログラム上の終
了点に至るまでの間に実行される一部の構成要素を、上
記情報を収集する一部の複数の構成要素として選択する
ステップをさらに有する請求項5記載のハードウエアと
ソフトウエアの混在システムの設計支援方法。 - 【請求項7】上記オブジェクトプログラムを、該ソース
プログラムから生成する時に、上記ソースプログラム内
のコードと上記オブジェクトプログラム内の対応するコ
ートとを関連づけるプログラム間関係情報を生成するス
テップをさらに有し、 上記検出においては、 上記生成されたプログラム間関係情報に基づいて、ソー
スプログラム上の上記開始点および上記終了点に対応す
る、上記オブジェクトプログラム上の開始点と終了点を
検出するステップをさらに有する請求項6記載のハード
ウエアとソフトウエアの混在システムの設計支援方法。 - 【請求項8】上記動作解析すべき区間に属する該一部の
複数の構成要素中の複数箇所に含まれる共通動作部分を
検索し、 該共通動作部分をそれぞれ含む複数の構成要素と、該共
通動作部分のデータフローグラフとを該表示装置に表示
するステップをさらに有する請求項1記載のハードウエ
アとソフトウエアの混在システムの設計支援方法。 - 【請求項9】プロセッサと、それに接続された少なくと
も一つの関連回路とを有する回路を制御するためのオブ
ジェクトプログラムの内、他の関連回路によりその機能
を実行させるべき部分の選択を、計算機と、入力装置
と、出力装置とを有する計算機システムを用いて支援す
るハードウエアとソフトウエアの混在システムの設計支
援方法であって、 そのオブジェクトプログラムを構成する複数の構成要素
とそれらの間の関係を示す構成要素間関係を判別し、 ユーザにより選択された、複数の動作解析すべき区間の
一つをそれぞれ特定するための複数の区間指定情報と各
動作解析すべき区間が満たすべき、ユーザが指定した処
理時間条件に関する情報とを上記入力装置を用いて入力
し、 該プロセッサと該関連回路を制御するときの上記オブジ
ェクトプログラムの動作を、上記プロセッサの仕様と上
記少なくとも一つの関連回路を記述するハードウエア記
述とに基づいてシミュレーションし、 上記シミュレーションの間に、該入力された複数の区間
指定情報で特定される複数の動作解析すべき区間の各々
の処理時間に関連する情報と、各動作解析すべき区間に
属すると判別された該一部の複数の構成要素の各々の処
理時間に関連する情報を収集し、 該複数の動作解析すべき区間の各々に対して収集された
処理時間に関連する情報とその区間に対して入力された
処理時間条件に関する情報とに基づいて、上記複数の動
作解析すべき区間の内、それぞれの区間に対して指定さ
れた処理時間条件を満たさない一つまたは複数の動作解
析すべき区間を検出し、 該検出された一つまたは複数の動作解析すべき区間の各
々に対して検出された上記一部の複数の構成要素の各々
を識別する情報と、それぞれの構成要素に対して収集さ
れた処理時間に関連する情報とを、該オブジェクトプロ
グラムの内、ハードウエア化すべき部分の、該ユーザに
よる選択を支援するための情報として上記表示装置に表
示するハードウエアとソフトウエアの混在システムの設
計支援方法。 - 【請求項10】上記オブジェクトプログラムを構成する
該複数の構成要素の判別は、上記オブジェクトプログラ
ムに対するソースプログラムを構成する複数の構成要素
の一つにそれぞれ対応するように相対的に大きな複数の
構成要素を選択し、該選択された相対的に大きな複数の
構成要素の各々を構成する相対的に小さな複数の構成要
素を選択し、上記選択された相対的に大きな複数の構成
要素と上記選択された相対的に小さな複数の構成要素と
をオブジェクトプログラムを構成する複数の構成要素と
して判別するステップを有し、 上記収集は、上記動作解析すべき区間に属する複数の相
対的に大きな構成要素の各々に関する処理時間に関連す
る情報と、それぞれの相対的に大きな構成要素に属する
相対的に小さな複数の構成要素の各々についての処理時
間に関する情報とを収集するステップを含み、 上記表示は、上記動作解析すべき区間に属する上記判別
された相対的に大きな複数の構成要素の各々およびそれ
ぞれの相対的に大きな複数の構成要素に属する相対的に
小さな複数の構成要素の各々に関して収集された処理時
間に関連する情報を表示するステップを有する請求項1
記載のハードウエアとソフトウエアの混在システムの設
計支援方法。請求項9記載のハードウエアとソフトウエ
アの混在システムの設計支援方法。 - 【請求項11】上記オブジェクトプログラムは、上記オ
ブジェクトプログラムに対するソースプログラムを変換
して得られるアセンブラプログラムをさらに変換して得
られたものであり、 上記オブジェクトプログラムの複数の構成要素と構成要
素間関係の判別は、 上記アセンブラプログラムを解析して、アセンブラプロ
グラムを構成する複数の構成要素とそれらの構成要素の
間の関係を指示する構成要素間関係を判別し、 上記アセンブラプログラムを構成する複数の構成要素と
それらの構成要素の間の関係を指示する構成要素間関係
に基づいて、上記オブジェクトプログラムの対応する複
数の構成要素と構成要素間関係を判別するステップを有
する請求項9記載のハードウエアとソフトウエアの混在
システムの設計支援方法。 - 【請求項12】上記オブジェクトプログラムの構成要素
と構成要素間関係の判別は、上記オブジェクトプログラ
ムを解析して行われる請求項9記載のハードウエアとソ
フトウエアの混在システムの設計支援方法。 - 【請求項13】各区間指定情報の入力は、 上記オブジェクトプログラムに対するソースプログラム
を上記表示装置に表示し、 表示されたソースプログラム上の、ユーザにより選択さ
れた動作解析すべき区間の開始点と終了点とを指定する
区間指定情報を上記入力装置を用いて入力するステップ
を有する請求項9記載のハードウエアとソフトウエアの
混在システムの設計支援方法。 - 【請求項14】上記選択においては、 前記ソースプログラム上の一つの動作解析すべき区間を
表す開始点と終了点に対応する上記オブジェクトプログ
ラム上での開始点と終了点を、オブジェクト上の一つの
動作解析すべき区間を規定する情報として検出し、 該検出された上記オブジェクト上の開始点と終了点およ
び該判別された構成要素間関係とに基づいて、該オブジ
ェクトプログラム上の開始点を通過してから該オブジェ
クトプログラム上の終了点に至るまでの間に実行される
一部の構成要素を、上記情報を収集する一部の複数の構
成要素として選択するステップをさらに有する請求項1
3記載のハードウエアとソフトウエアの混在システムの
設計支援方法。 - 【請求項15】上記オブジェクトプログラムを、該ソー
スプログラムから生成する時に、上記ソースプログラム
内のコードと上記オブジェクトプログラム内の対応する
コートとを関連づけるプログラム間関係情報を生成する
ステップをさらに有し、 上記検出においては、 上記生成されたプログラム間関係情報に基づいて、各動
作解析すべき区間に対する、前記ソースプログラム上の
開始点と終了点に対応する、上記オブジェクトプログラ
ム上の開始点と終了点を検出するステップを有する請求
項14記載のハードウエアとソフトウエアの混在システ
ムの設計支援方法。 - 【請求項16】上記複数の動作解析すべき区間に属する
複数の構成要素中の複数箇所に含まれる共通動作部分を
検索し、 該共通動作部分をそれぞれ含む複数の構成要素と、該共
通動作部分のデータフローグラフとを該表示装置に表示
するステップをさらに有する請求項9記載のハードウエ
アとソフトウエアの混在システムの設計支援方法。 - 【請求項17】プロセッサと、それに接続された少なく
とも一つの関連回路とを有する回路を制御するためのオ
ブジェクトプログラムの内、他の関連回路によりその機
能を実行させるべき部分の選択を、計算機と、入力装置
と、出力装置とを有する計算機システムを用いて支援す
るハードウエアとソフトウエアの混在システムの設計支
援方法であって、 上記オブジェクトプログラムに対応するソースプログラ
ムを変換して得られるアセンブラプログラムを上記オブ
ジェクトプログラムに変換し、 該アセンブラプログラムに基づいて、該アセンブラプロ
グラムを構成する複数の構成要素とそれらの間の関係を
示す構成要素間関係を検出し、 該アセンブラプログラムを構成する複数の構成要素とそ
れらの間の関係を示す構成要素間関係に基づいて、該オ
ブジェクトプログラムを構成する複数の構成要素とそれ
らの間の関係を示す構成要素間関係を判別し、 該プロセッサと該関連回路を制御するときの上記オブジ
ェクトプログラムの動作を、上記プロセッサの仕様と上
記少なくとも一つの関連回路を記述するハードウエア記
述とに基づいてシミュレーションし、 上記シミュレーションの間に、上記判別された上記オブ
ジェクトプログラムを構成する該複数の構成要素の内、
少なくとも一部の複数の構成要素の各々の処理時間に関
連する情報を収集し、 上記少なくとも一部の複数の構成要素の各々を識別する
ための情報とそれぞれに対して収集された処理時間に関
連する情報を、上記オブジェクトプログラム中のハード
ウエア化すべきプログラム部分のユーザによる選択を支
援する情報として上記表示装置に出力し、 上記アセンブラプログラムの複数の構成要素が識別可能
なように、上記アセンブラプログラムを表示し、 上記表示されたアセンブラプログラムの内、ユーザによ
り選択されたハードウエア化すべきプログラム部分を指
定する情報を該入力装置より入力し、 該入力された指定情報に従って、上記アセンブラプログ
ラムの上記プログラム部分に代えて、他の関連回路を使
用するように該アセンブラプログラムを更新し、 該更新後のアセンブラプログラムに基づいて、上記変換
から更新までを繰り返し、 その繰り返し時における上記更新後のシミュレーション
の実行は、上記プロセッサの仕様と、上記少なくとも一
つの関連回路を記述するハードウエア記述と、上記他の
関連回路を記述する他のハードウエア記述とに基づいて
実行されるハードウエアとソフトウエアの混在システム
の設計支援方法。 - 【請求項18】上記他のハードウエア記述を、該入力さ
れた識別情報指定される一つの構成要素の内容に基づい
て自動的に生成するステップをさらに有する請求項17
記載のハードウエアとソフトウエアの混在システムの設
計支援方法。 - 【請求項19】上記他のハードウエア記述を該ユーザが
指定するステップをさらに有する請求項17記載のハー
ドウエアとソフトウエアの混在システムの設計支援方
法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP7318688A JPH09160949A (ja) | 1995-12-07 | 1995-12-07 | ハードウエアとソフトウエアの混在システムの設計支援方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP7318688A JPH09160949A (ja) | 1995-12-07 | 1995-12-07 | ハードウエアとソフトウエアの混在システムの設計支援方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH09160949A true JPH09160949A (ja) | 1997-06-20 |
Family
ID=18101913
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP7318688A Pending JPH09160949A (ja) | 1995-12-07 | 1995-12-07 | ハードウエアとソフトウエアの混在システムの設計支援方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH09160949A (ja) |
Cited By (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2002099704A1 (en) * | 2001-05-30 | 2002-12-12 | Yozan Inc. | System development supporting apparatus, system development supporting method, and computer-readable recorded medium |
| WO2004003794A1 (ja) * | 2002-06-26 | 2004-01-08 | E-Trees.Japan Inc. | ソフトウェアをハードウェアに置き換えることにより通信プロトコルを高速処理する方法および装置 |
| US7171643B2 (en) | 2003-02-27 | 2007-01-30 | Matsushita Electric Industrial Co., Ltd. | System LSI design support apparatus and a system LSI design support method |
| JP2009193313A (ja) * | 2008-02-14 | 2009-08-27 | Hiroshima Univ | バグレスソフトウェアシステム設計支援装置、方法及びプログラム |
| JP2009211614A (ja) * | 2008-03-06 | 2009-09-17 | Nec Corp | 動作合成装置、動作合成方法、および、プログラム |
| JP2010181942A (ja) * | 2009-02-03 | 2010-08-19 | Renesas Electronics Corp | Pld/cpldからマイコンへの置換え見積の情報提供システム及び方法 |
| JP2010262412A (ja) * | 2009-04-30 | 2010-11-18 | Fujitsu Ltd | 論理回路設計装置 |
| JP2013025703A (ja) * | 2011-07-25 | 2013-02-04 | Hitachi Information & Communication Engineering Ltd | ソフトウェアのハードウェア化の性能見積り方法、装置、プログラムおよびその記録媒体 |
| JP2013125419A (ja) * | 2011-12-14 | 2013-06-24 | Fuji Xerox Co Ltd | ハードウエア/ソフトウエア協調設計装置及びプログラム |
| JPWO2017138220A1 (ja) * | 2016-02-12 | 2018-11-29 | ソニー株式会社 | 情報処理方法および情報処理装置 |
| CN115906726A (zh) * | 2023-03-09 | 2023-04-04 | 上海合见工业软件集团有限公司 | 目标综合电路图生成和显示系统 |
-
1995
- 1995-12-07 JP JP7318688A patent/JPH09160949A/ja active Pending
Cited By (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2002099704A1 (en) * | 2001-05-30 | 2002-12-12 | Yozan Inc. | System development supporting apparatus, system development supporting method, and computer-readable recorded medium |
| WO2004003794A1 (ja) * | 2002-06-26 | 2004-01-08 | E-Trees.Japan Inc. | ソフトウェアをハードウェアに置き換えることにより通信プロトコルを高速処理する方法および装置 |
| US7171643B2 (en) | 2003-02-27 | 2007-01-30 | Matsushita Electric Industrial Co., Ltd. | System LSI design support apparatus and a system LSI design support method |
| JP2009193313A (ja) * | 2008-02-14 | 2009-08-27 | Hiroshima Univ | バグレスソフトウェアシステム設計支援装置、方法及びプログラム |
| JP2009211614A (ja) * | 2008-03-06 | 2009-09-17 | Nec Corp | 動作合成装置、動作合成方法、および、プログラム |
| JP2010181942A (ja) * | 2009-02-03 | 2010-08-19 | Renesas Electronics Corp | Pld/cpldからマイコンへの置換え見積の情報提供システム及び方法 |
| JP2010262412A (ja) * | 2009-04-30 | 2010-11-18 | Fujitsu Ltd | 論理回路設計装置 |
| JP2013025703A (ja) * | 2011-07-25 | 2013-02-04 | Hitachi Information & Communication Engineering Ltd | ソフトウェアのハードウェア化の性能見積り方法、装置、プログラムおよびその記録媒体 |
| JP2013125419A (ja) * | 2011-12-14 | 2013-06-24 | Fuji Xerox Co Ltd | ハードウエア/ソフトウエア協調設計装置及びプログラム |
| JPWO2017138220A1 (ja) * | 2016-02-12 | 2018-11-29 | ソニー株式会社 | 情報処理方法および情報処理装置 |
| US10942711B2 (en) | 2016-02-12 | 2021-03-09 | Sony Corporation | Information processing method and information processing apparatus |
| CN115906726A (zh) * | 2023-03-09 | 2023-04-04 | 上海合见工业软件集团有限公司 | 目标综合电路图生成和显示系统 |
| CN115906726B (zh) * | 2023-03-09 | 2023-05-05 | 上海合见工业软件集团有限公司 | 目标综合电路图生成和显示系统 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8627272B1 (en) | Traceability in a modeling environment | |
| EP0714064B1 (en) | Apparatus for visualizing program slices | |
| US6516456B1 (en) | Method and apparatus for selectively viewing nets within a database editor tool | |
| US8234608B2 (en) | Circuit specification description visualizing device, circuit specification description visualizing method and storage medium | |
| US5880971A (en) | Methodology for deriving executable low-level structural descriptions and valid physical implementations of circuits and systems from semantic specifications and descriptions thereof | |
| EP2555109B1 (en) | Search utility program for software developers | |
| US6212666B1 (en) | Graphic representation of circuit analysis for circuit design and timing performance evaluation | |
| JPH09512115A (ja) | ハードウエア記述言語ソースレベル分析のためのアーキテクチャおよび方法ならびにデバッギングシステム | |
| JPH04211871A (ja) | 論理設計の検証支援システム | |
| US7409602B2 (en) | Methodology for debugging RTL simulations of processor based system on chip | |
| JPH09160949A (ja) | ハードウエアとソフトウエアの混在システムの設計支援方法 | |
| Diep et al. | VMW: A visualization-based microarchitecture workbench | |
| US6691079B1 (en) | Method and system for analyzing test coverage | |
| Maoz et al. | On tracing reactive systems | |
| EP2891983A1 (en) | Software verification program and software verification system | |
| US20040193395A1 (en) | Program analyzer for a cycle accurate simulator | |
| US20020052720A1 (en) | Analytical data-writable, general-purpose analysis system, analytical data-writable, general-purpose analysis program, and recording medium which records the analytical data-writable, general-purpose analysis program | |
| CN101916179B (zh) | 控制寄存器中的标志位的存取方法 | |
| US7454680B2 (en) | Method, system and computer program product for improving efficiency in generating high-level coverage data for a circuit-testing scheme | |
| WO2005071534A2 (en) | A process for simulating and analysing an object-oriented code and the corresponding software product | |
| JP2006277282A (ja) | モデル評価解析システムおよびモデル評価解析プログラム | |
| Todorovich et al. | Tcl/tk for eda tools | |
| JP2001022808A (ja) | 論理回路削減装置ならびに論理シミュレーション方法および装置 | |
| Bosshart | Overview of a 32-bit microprocessor design project | |
| JP2990882B2 (ja) | 機能シミュレーション装置 |