JP2002323981A - 目的プログラムの実行ステップ数調整方法とその調整装置およびプログラムを記憶した記録媒体 - Google Patents

目的プログラムの実行ステップ数調整方法とその調整装置およびプログラムを記憶した記録媒体

Info

Publication number
JP2002323981A
JP2002323981A JP2001126084A JP2001126084A JP2002323981A JP 2002323981 A JP2002323981 A JP 2002323981A JP 2001126084 A JP2001126084 A JP 2001126084A JP 2001126084 A JP2001126084 A JP 2001126084A JP 2002323981 A JP2002323981 A JP 2002323981A
Authority
JP
Japan
Prior art keywords
step number
execution
adjustment
steps
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.)
Granted
Application number
JP2001126084A
Other languages
English (en)
Other versions
JP3758991B2 (ja
Inventor
Yoshinori Hanesaka
佳典 羽坂
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.)
Renesas Micro Systems Co Ltd
Original Assignee
Renesas Micro Systems 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 Renesas Micro Systems Co Ltd filed Critical Renesas Micro Systems Co Ltd
Priority to JP2001126084A priority Critical patent/JP3758991B2/ja
Publication of JP2002323981A publication Critical patent/JP2002323981A/ja
Application granted granted Critical
Publication of JP3758991B2 publication Critical patent/JP3758991B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】ソースプログラム上に待ち処理を挿入したと
き、正確な待ち時間を実現し、再コンパイルなどによる
調整時間を短くし且つプログラム開発における外部回路
などのタイミング調整を簡単に行うことにある。 【解決手段】コンパイラまたはアセンブラを用いて静的
解析を行った結果により、ステップ数調整オブジェクト
を出力した後、リンカを用いてメモリ配置による静的解
析を行い、その結果で修正する。また、コンパイラまた
はアセンブラを用いて動的解析を行った結果により、ス
テップ数調整オブジェクトを再度修正し、さらにリンク
することにより、ソースプログラムの分岐ルートごとの
実行ステップ数を同一ステップ数になるように繰返し行
う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はプログラムの実行ス
テップ数を調整する方法とその調整装置およびプログラ
ムを記憶した記録媒体に関し、特に目的プログラムの実
行ステップ数調整方法とその調整装置および目的プログ
ラムやその実行プログラムを記憶した記録媒体に関す
る。
【0002】
【従来の技術】一般に、プログラムの性能を向上させる
意味で、コンパイラの最適化を行うことおよびプログラ
ムの実行速度を知ることは、プログラム開発における重
要な要素の一つである。
【0003】このコンパイラは、限られた時間および記
録媒体にプログラムを収めるために、プログラムを高速
動作させるとともに、プログラムのサイズを小さくする
ことが理想とされており、通常この為のソースプログラ
ムの変換をコンパイラの最適化と呼んでいる。また、プ
ログラムの実行速度を予測あるいは計測し、その結果に
よりソースプログラムを修正するか、あるいは実行速度
の結果に基づきコンパイラを最適化し直すことが行われ
ている。
【0004】しかし、このソースプログラムの修正ある
いはコンパイラの最適化を行うと、プログラムの実行速
度が変化したとき、プログラムの動作に不具合が生じる
場合がある。
【0005】例えば、第一の不具合の例は、プログラム
によって動作するCPUに接続された外部回路の動作速
度が遅く、そのためにプログラム上に時間待ち処理を挿
入した場合に発生する。
【0006】また、第二の不具合の例は、外部入力を正
確に計測したり、あるいは外部出力を正確に行う必要が
あり、そのためにプログラム上に待ち合せ処理を挿入し
た場合に発生する。
【0007】これらの不具合は、タイマ回路を使用して
正確に時間計測を行っていたときには発生しないが、時
間待ち処理機構や待ち合わせ処理機構がプログラムの命
令コード実行ステップ数に依存する形式になっていたと
きには発生する。本来ならば、タイマ回路を使用して正
確に時間計測を行うべきであるが、幾つかの要因によっ
て、プログラムの命令コード実行ステップ数に依存する
場合がある。
【0008】その第一の要因は、ソースプログラムの流
用の問題である。例えば、ソースプログラムをCPUに
依存するアセンブラ命令や、タイマ回路によって実現し
たとき、そのソースプログラムのアルゴリズムを修正す
ることになる。しかし、このアルゴリズムの修正を直接
行うと、修正が面倒であり、信頼性も乏しくなるため、
アルゴリズムの修正に比べて、より信頼性の高い命令コ
ード実行ステップ数の修正に依存してしまうからであ
る。
【0009】第二の要因は、組み込みシステムなどにお
ける価格の問題である。一般的に、タイマ回路などをシ
ステムに組み込んだ場合、その分価格が上昇してしま
う。近年、CPU性能は向上したものの、それに合わせ
てプログラムも複雑な機能を組み込むことが要求されて
おり、十分な性能を持ったCPUを使用できないことが
多い。
【0010】要するに、これらの要因により、前述した
2つの不具合は無くならない問題であると言える。
【0011】かかる2つの不具合を抑制させる為に、規
模の小さいシステムでは、目的プログラム中の必要な点
にトラップ命令を埋め込み、ターゲットシステム上で実
際にプログラムを動作させた上で調整を行っている。し
かし、プログラムの規模が大きく、調整箇所が多い場合
は再コンパイルなどの作業後、何度も調整を繰り返す必
要があり時間がかかった。
【0012】また、例えば特開平11−039155号
公報(文献1)や特開平11−296416号公報(文
献2)にも開示されているように、静的にソースプログ
ラムを解析し、実行ステップを出力する方法もある。こ
の方法は、コンパイラの最適化によって、実行ステップ
が変化するため、何度も調整を繰り返す必要がある。し
かも、かかる方法は時間がかかり、ターゲットシステム
上で行う動的な計測を利用した調整、およびソース解析
による静的な調整では、ソースプログラムを何度も修正
することが必要であり、ソースプログラムの流用を著し
く妨げていた。
【0013】さらに、動的に計測する方法として、例え
ば特開平6−282444号公報(文献3)に記載され
たコンパイル方法もある。このコンパイル方法は、予め
準備された機械語を選択するか、命令数のみを計測する
ものであり、上述した2つの不具合を発生させないため
には不十分である。
【0014】図16は従来の実行ステップ数調整方法の
一例を示すシステム構成図である。図16に示すよう
に、従来の実行ステップ数調整にあたっては、ソースプ
ログラム50よりオブジェクト52を作成するオブジェ
クト生成部1aと、オブジェクト結合部2aと、実行ス
テップ数の計測を行う実行部3aとを有している。この
オブジェクト生成部1aは、オブジェクト生成手段12
と、コード解析ステップ数計測手段13と、アセンブラ
ソース生成手段15とを備え、ソースプログラム50よ
り命令実行ステップ数情報51に基づいてオブジェクト
52およびステップ数計測結果61を出力するととも
に、アセンブラソース生成手段15よりアセンブラソー
ス60を出力する。またオブジェクト結合部2aは、オ
ブジェクト52をメモリ割付情報55に基づいて結合す
るオブジェクト結合手段21を備え、実行形式56を出
力する。さらに、実行部3aは、実行ステップ数計測手
段31を備え、ターゲットシステム34との間の情報授
受を行うとともに、外部モデル33および実行形式56
により実行ステップ数計測結果59を出力する。
【0015】このソースプログラム50はC言語,アセ
ンブリ言語などで記述された原始プログラムであり、オ
ブジェクト52はかかる原始プログラムをコンパイラ,
アセンブラによって命令コードに変換したオブジェクト
コード群である。ここで、命令実行ステップ数情報51
は、命令コードと,この命令コードの実行ステップ数と
によって構成されている。このオブジェクト52はメモ
リ割付情報55を元にし、オブジェクト結合手段21に
よって実行形式56として出力されるが、この実行形式
56は実行部3aにおいて実行できるオブジェクトコー
ド群である。一方、ターゲットシステム34は、実行部
3aが例えばエミュレータであったときには、メモリや
外部装置などのハードウェアであり、また外部モデル3
3は、実行部3aが例えばシミュレータであったときに
は、メモリや外部装置などをソフトウェアにより、シミ
ュレーションするための構成と動作を定義されているフ
ァイルである。
【0016】このように、従来の実行ステップ数の調整
(文献1)においては、ソースプログラム50を解析
し、ステップ数計測結果61をアセンブラソース60に
付加して出力することにより、ソースプログラム50の
実行ステップ数を予測しようとしている。すなわち、こ
の従来例においては、アセンブラソース60に付加され
た実行ステップ数によって、ソースプログラム50の修
正と、オブジェクト52の生成とを繰返えすことによ
り、実行ステップ数を調整する必要がある。
【0017】また、上述したシステムにおいて、文献2
に記載したような技術を用いても、文献2では、ソース
プログラム50を解析し、ステップ数計測結果61に基
づいて、ループ毎のステップ数を求め、ソースプログラ
ム50の実行ステップ数を予測するものであるため、ル
ープ毎の命令数を計測するだけであり、実行ステップ数
を求めることはできない。
【0018】同様に、上述したシステムにおいて、文献
3のようなシステムを用いても、文献3では、オブジェ
クト生成部1aおよびオブジェクト結合部2aの組込み
時、またはソースプログラム50を翻訳してオブジェク
ト52を生成するとき、実行部3aによって命令実行ス
テップ数情報51を最適なものに更新することはできて
も、予め準備された命令を選択するだけであるので、実
行ステップ数を求めることはできない。
【0019】したがって、上述した従来例においては、
計測技術が不十分であることに加えて、複数の外部装置
を接続するシステムの通信部分が、前述したプログラム
の命令コード実行ステップ数に依存する構成になってい
る場合には、すべての機器接続の組合せにおいて、前述
したような計測を行い、ソースプログラムの修正を行う
ことは、プログラムの開発の後段階での評価を長くする
という問題がある。さらに、プログラムの開発途中にお
いて、CPUに接続するROM,RAM,I/Oなどの
外部回路および前述した外部装置は、タイミングが変化
することから、結果を簡単に反映することが必要であ
る。
【0020】以上のことから、アルゴリズムを変更しな
いで、しかもソースプログラムを修正せずに、上述した
2つの不具合の対策を施すこと、再コンパイルなどによ
る調整時間を短くすること、さらには開発途中における
外部回路または外部装置のタイミング調整を簡単に行え
ることが重要である。
【0021】図17は従来の他の例を説明するためのコ
ンパイル装置を用いたシステム構成図である。図17に
示すように、このシステムは、例えば特開2000−1
94566号公報(文献4)に記載されているように、
オブジェクト生成部にコンパイル装置1bを用いたもの
であり、ソースプログラム50からオブジェクト52を
生成するにあたり、分岐履歴情報ファイル67を使用し
ている。特に、コンパイル装置1bは分岐履歴情報採取
コード生成手段63と、分岐パターン解析手段64と、
ループ並列化手段65と、ループ最適化手段66とを備
え、分岐情報を貯えるためのコードを埋め込み、実行結
果を元に最適なオブジェクトプロゲラムを生成すること
により、並列化処理における各ループの負荷分散を均等
化し、プログラムの性能を向上させるものである。
【0022】しかし、このコンパイル装置を用いたシス
テムは、オブジェクトから履歴情報ファイルを作成する
ため、コンパイル装置1bで再コンパイルを必要とし、
実行環境が無いと最適化を行えないという問題がある。
しかも、この例は、分岐に関する最適化のみであり、外
部回路(ROM,RAM,I/Oなど)や外部装置のタ
イミング調整を行えないという問題がある。
【0023】図18は従来のまた別の例を説明するため
の目的プログラムの最適化を行うCPUとメモリ等の接
続構成図である。図18に示すように、この構成例は、
例えば特開平7−64799号公報(文献5)に記載さ
れているように、コンパイラで生成した目的プログラム
を計算機に試行させ、その試行結果で目的プログラムを
最適化させるものである。
【0024】すなわち、コンパイラが最適化処理中の目
的プログラムを第1のCPU75に対応した第1のメモ
リ76に格納し、そのプログラムの試行の実行をOSに
要求する。この要求により、OSは試行モードを設定
し、第2のCPU73の試行モード切換スイッチ72を
切換えるとともに、目的プログラム試行に際して実行す
る命令毎に計算機内部の動的状態を格納する実行状況テ
ーブルを第2のCPU73に接続された第2のメモリ7
7に設定し且つトレース先頭指定レジスタ71を設定す
る。また、パイプライン制御機構74は、命令の実行毎
に実行状況テーブルに計算機の動的状態を自動的に記録
する。かかる試行後、その実行状況テーブルの記録内容
をコンパイラに渡すと、コンパイラはその記録内容によ
り目的プログラムの未最適化部分の最適化を行う。要す
るに、この従来例は、第1のCPU75で実行された結
果を、第2のCPU73により実行状況テーブルとして
の第2のメモリ77の指定位置から保存し、その結果を
コンパイラに知らせるものである。
【0025】しかし、この例においては、コンパイラ最
適化処理中に、第1のCPU75で試行の実行をし、そ
の後第2のCPU73が記録する実行状況テーブルを読
み出して、再度コンパイラによる最適化を実行するた
め、コンパイル時間が長くなるという問題がある。ま
た、この例においては、コンパイル時に、特別なハード
ウェアを必要とするという問題がある。例えば、パイプ
ライン制御機構74から出力される情報を記録するため
には、第2のCPU73の性能が、少なくとも第1のC
PU75よりも上でないと、記録することはできない。
その理由は、プログラムによって第2のメモリ77に保
存するための命令が1命令では実行できないからであ
る。このために、かかる従来例においては、外部回路な
どのタイミング調整を行うことができないことになる。
【0026】
【発明が解決しようとする課題】上述した図16のシス
テムにおいては、計測技術が不十分であり、複数の外部
装置を接続するシステムの通信部分が、前述したプログ
ラムの命令コード実行ステップ数に依存する構成になっ
ている場合には、すべての機器接続の組合せにおいて計
測を行い、ソースプログラムの修正を行わねばならず、
プログラム開発の時間を長くするという欠点がある。さ
らに、プログラムの開発途中において、外部回路などは
タイミングが変化することから、結果を簡単に反映する
ことが困難であるという欠点がある。
【0027】このため、アルゴリズムを変更せずに且つ
ソースプログラムも修正せずに、上述した不具合の対策
を施すこと、再コンパイルなどによる調整時間を短くす
ること、さらには開発途中における外部回路等のタイミ
ング調整を簡単に行うことが困難であるという欠点もあ
る。
【0028】また、上述した図17および図18のシス
テムにおいては、プログラムの最適化が目的である。つ
まり、これらが意図しているのは、プログラムを高速に
動作させたり、あるいはプログラムのサイズを小さくす
ることであり、時間待ちおよび待ち合せを命令コードの
挿入によって行っているとき、分岐ルートごとの実行ス
テップ数を合わせるようなことは、実現できないという
欠点がある。
【0029】本発明の目的は、上述したソースプログラ
ム上に時間待ち処理や待ち合わせ処理を挿入したとき、
正確な時間待ちや待ち合わせを実現し、再コンパイルな
どによる調整時間を短くするとともに、プログラム開発
における外部回路などのタイミング調整を簡単に行うこ
とのできる目的プログラムの実行ステップ数調整方法と
その調整装置およびプログラムを記憶した記録媒体を提
供することにある。
【0030】
【課題を解決するための手段】本発明の目的プログラム
の実行ステップ数調整方法は、ソースプログラムに対
し、生成される命令コードの分岐構造および分岐ルート
ごとの命令ステップ数の静的解析を行い、その結果によ
りステップ数調整オブジェクトを出力する第1の手順
と、前記生成される命令コードのメモリ配置について静
的解析を行い、その結果により前記ステップ数調整オブ
ジェクトを修正する第2の手順と、前記ソースプログラ
ムに対して生成されたオブジェクトと前記ステップ数調
整オブジェクトを結合し、目的プログラムとしての実行
形式を生成する第3の手順とを含んで構成される。
【0031】また、本発明における前記第1の手順は、
前記ソースプログラムおよび命令実行ステップ数情報を
参照して、前記ステップ数調整オブジェクトの他に、オ
ブジェクトと個別ステップ数調整情報を作成し、前記第
2の手順は、メモリ割付情報を参照して、前記個別ステ
ップ数調整情報と前記ステップ数調整オブジェクトを修
正し、第3の手順は、前記オブジェクトおよび前記ステ
ップ数調整オブジェクトを結合して前記実行形式および
結合ステップ数調整情報を作成するように形成される。
【0032】本発明の目的プログラムの実行ステップ数
調整方法は、ソースプログラムに対し、生成される命令
コードの分岐構造および分岐ルートごとの命令ステップ
数の静的解析を行い、その結果によりステップ数調整オ
ブジェクトを出力する第1の手順と、前記生成される命
令コードのメモリ配置について静的解析を行い、その結
果により前記ステップ数調整オブジェクトを修正する第
2の手順と、前記ソースプログラムに対して生成された
オブジェクトと前記ステップ数調整オブジェクトを結合
し、目的プログラムとしての実行形式を生成する第3の
手順と、前記第3の手順により生成された前記実行形式
を前記ステップ数調整情報によって動的解析を行い、そ
の結果により実行ステップ数計測結果を出力する第4の
手順と、前記実行ステップ数計測結果を用いて前記ステ
ップ数調整オブジェクトを修正する第5の手順とを含
み、前記第5の手順により前記ステップ数調整オブジェ
クトが修正されたとき、前記第3の手順に戻って前記目
的プログラムとしての実行形式を再生成するように形成
される。
【0033】また、本発明における前記第1の手順は、
前記ソースプログラムおよび命令実行ステップ数情報を
参照して、前記ステップ数調整オブジェクトの他に、オ
ブジェクトと個別ステップ数調整情報を作成し、前記第
2の手順は、メモリ割付情報を参照して、前記個別ステ
ップ数調整情報と前記ステップ数調整オブジェクトを修
正し、第3の手順は、前記オブジェクトおよび前記ステ
ップ数調整オブジェクトを結合して前記実行形式および
結合ステップ数調整情報を作成し、前記第4の手順は、
前記結合ステップ数調整情報を用いて、分岐ルートに対
する実行ステップ数の計測および不要ステップの削除を
行った後に、前記実行ステップ数計測結果を作成し、前
記第5の手順は、前記実行ステップ数計測結果を参照
し、前記個別ステップ数調整情報と前記ステップ数調整
オブジェクトを修正するように形成される。
【0034】本発明の目的プログラムの実行ステップ数
調整方法は、ソースプログラムに対し、生成される命令
コードの分岐構造および分岐ルートごとの命令ステップ
数の静的解析および前記命令コードのメモリ配置につい
ての静的解析を行い、それらの結果によりステップ数調
整オブジェクトを出力する第1の手順と、前記ソースプ
ログラムに対して生成されたオブジェクトと前記ステッ
プ数調整オブジェクトを結合し、目的プログラムとして
の実行形式を生成する第2の手順と、前記第2の手順に
より生成された前記実行形式をステップ数調整情報によ
って動的解析を行い、その結果により実行ステップ数計
測結果を出力する第3の手順と、前記実行ステップ数計
測結果により前記ステップ数調整オブジェクトを修正す
る第4の手順とを含み、前記第4の手順によって前記ス
テップ数調整オブジェクトが修正されたとき、前記第2
の手順に戻って前記目的プログラムを再生成するように
構成される。
【0035】本発明の目的プログラムの実行ステップ数
調整装置は、ソースプログラムより命令コードに変換し
たオブジェクトを出力し、前記オブジェクトをメモリ割
付情報に基づいて結合することにより、目的プログラム
としての実行形式を作成し、それによって実行ステップ
数を計測する目的プログラムの実行ステップ数調整装置
において、命令実行ステップ数情報を参照して前記オブ
ジェクトの分岐構造および分岐ルートごとの命令ステッ
プ数の静的解析を行うコード解析ステップ数計測手段
と,前記コード解析ステップ数計測手段によって得られ
た静的解析の結果を用い、個別ステップ数調整情報およ
びステップ数調整オブジェクトを作成するコード解析ス
テップ数調整手段とを備えるオブジェクト生成部と、前
記オブジェクト,前記ステップ数調整オブジェクト,前
記個別ステップ数調整情報を結合し、前記目的プログラ
ムとしての実行形式と結合ステップ数調整情報を出力す
るオブジェクト結合手段と,前記オブジェクトのメモリ
配置について静的解析を行い、その結果を用いて前記ス
テップ数調整オブジェクトおよび前記個別ステップ数調
整情報を修正するメモリ割付ステップ数調整手段とを備
えるオブジェクト結合部とを有して構成される。
【0036】また、本発明の目的プログラムの実行ステ
ップ数調整装置は、前記オブジェクト結合部で作成され
た前記実行形式を実行するとともに、前記結合ステップ
数調整情報によって分岐ルートごとの実行ステップ数を
計測する実行ステップ数計測手段と,前記実行ステップ
数計測手段の計測結果から不要ステップを削除し、実行
ステップ数計測結果を出力する不要ステップ削除手段と
を備える目的プログラムの実行部と、前記実行ステップ
数計測結果より分岐ルートごとの実行ステップ数を取出
し、調整を行って、前記ステップ数調整オブジェクトと
前記個別ステップ数調整情報を修正する実行ステップ数
調整手段を備える実行ステップ数更新部とを有し、前記
オブジェクト結合手段により、前記実行形式と前記結合
ステップ数調整情報を再結合するように形成される。
【0037】本発明の目的プログラムの実行ステップ数
調整装置は、ソースプログラムより命令コードに変換し
たオブジェクトを出力し、前記オブジェクトをメモリ割
付情報に基づいて結合することにより、目的プログラム
としての実行形式を作成し、それによって実行ステップ
数を計測する目的プログラムの実行ステップ数調整装置
において、命令実行ステップ数情報を参照して前記オブ
ジェクトの分岐構造および分岐ルートごとの命令ステッ
プ数の静的解析を行うコード解析ステップ数計測手段
と,前記コード解析ステップ数計測手段によって得られ
た静的解析の結果を用い、個別ステップ数調整情報およ
びステップ数調整オブジェクトを作成するコード解析ス
テップ数調整手段と,前記オブジェクトのメモリ配置に
ついて静的解析を行い、その結果を用いて前記ステップ
数調整オブジェクトおよび前記個別ステップ数調整情報
を修正するメモリ割付ステップ数調整手段とを備えるオ
ブジェクト生成部と、前記オブジェクト,前記ステップ
数調整オブジェクト,前記個別ステップ数調整情報を結
合し、前記目的プログラムとしての実行形式と結合ステ
ップ数調整情報を出力するオブジェクト結合手段を備え
るオブジェクト結合部とを有して構成される。
【0038】また、本発明の目的プログラムの実行ステ
ップ数調整装置は、前記オブジェクト結合部で作成され
た前記実行形式を実行するとともに、前記結合ステップ
数調整情報によって分岐ルートごとの実行ステップ数を
計測する実行ステップ数計測手段と,前記実行ステップ
数計測手段の計測結果から不要ステップを削除し、実行
ステップ数計測結果を出力する不要ステップ削除手段と
を備える目的プログラムの実行部と、前記実行ステップ
数計測結果より分岐ルートごとの実行ステップ数を取出
し、調整を行って、前記ステップ数調整オブジェクトと
前記個別ステップ数調整情報を修正する実行ステップ数
調整手段を備える実行ステップ数更新部とを有し、前記
オブジェクト結合手段により、前記実行形式と前記結合
ステップ数調整情報を再結合するようぬ形成される。
【0039】本発明のプログラムを記憶した記録媒体
は、ソースプログラムに対し、生成される命令コードの
分岐構造および分岐ルートごとの命令ステップ数の静的
解析を行い、その結果によりステップ数調整オブジェク
トを出力する第1の手順と、前記生成される命令コード
のメモリ配置について静的解析を行い、その結果により
前記ステップ数調整オブジェクトを修正する第2の手順
と、前記ソースプログラムに対して生成されたオブジェ
クトと前記ステップ数調整オブジェクトを結合し、目的
プログラムとしての実行形式を生成する第3の手順とを
処理として、目的プログラムの生成装置に実行させるプ
ログラムを記録して構成される。
【0040】本発明のプログラムを記憶した記録媒体
は、ソースプログラムに対し、生成される命令コードの
分岐構造および分岐ルートごとの命令ステップ数の静的
解析を行い、その結果によりステップ数調整オブジェク
トを出力する第1の手順と、前記生成される命令コード
のメモリ配置について静的解析を行い、その結果により
前記ステップ数調整オブジェクトを修正する第2の手順
と、前記ソースプログラムに対して生成されたオブジェ
クトと前記ステップ数調整オブジェクトを結合し、目的
プログラムとしての実行形式を生成する第3の手順と、
前記第3の手順により生成された前記実行形式を前記ス
テップ数調整情報によって動的解析を行い、その結果に
より実行ステップ数計測結果を出力する第4の手順と、
前記実行ステップ数計測結果を用いて前記ステップ数調
整オブジェクトを修正する第5の手順とを処理として、
目的プログラムの実行装置に実行されるプログラムを記
録して構成される。
【0041】本発明のプログラムを記憶した記録媒体
は、ソースプログラムに対し、生成される命令コードの
分岐構造および分岐ルートごとの命令ステップ数の静的
解析および前記命令コードのメモリ配置についての静的
解析を行い、それらの結果によりステップ数調整オブジ
ェクトを出力する第1の手順と、前記ソースプログラム
に対して生成されたオブジェクトと前記ステップ数調整
オブジェクトを結合し、目的プログラムとしての実行形
式を生成する第2の手順と、前記第2の手順により生成
された前記実行形式をステップ数調整情報によって動的
解析を行い、その結果により実行ステップ数計測結果を
出力する第3の手順と、前記実行ステップ数計測結果に
より前記ステップ数調整オブジェクトを修正する第4の
手順とを処理として、目的プログラムの生成装置または
前記目的プログラムの実行装置に実行させるプログラム
を記録して構成される。
【0042】また、本発明のプログラムを記憶した記録
媒体は、前記目的プログラムの実行ステップ数調整によ
って作成されたいずれかのプログラムを記録して形成さ
れる。
【0043】
【発明の実施の形態】本発明の実施の形態は、ソースプ
ログラムに記述された時間待ちおよび待ち合せを命令コ
ード挿入によって行っているとき、プログラムの分岐ル
ートごとに異なる実行ステップ数を同一ステップ数にす
ることにより、タイマ回路などの特殊なハードウェアを
用いずに正確に行うものである。
【0044】具体的には、まずコンパイラ,アセンブラ
により静的解析を行い、その結果によってステップ数調
整オブジェクトを出力する。ついで、リンカによってメ
モリ配置による静的解析を行い、その結果でステップ数
調整オブジェクトを修正する。さらに、エミュレータ,
シミュレータにより動的解析を行い、その結果によりス
テップ数調整オブジェクトを修正する。しかる後、再度
リンクすることによって、プログラムの分岐ルートごと
の実行ステップ数を同一ステップ数にする。以上の操作
により、実行ステップ数を段階的に調整する。
【0045】以下、本発明の実施の形態を図面を参照し
て説明する。
【0046】図1は本発明の一実施の形態を説明するた
めの実行ステップ数調整装置のシステム構成図である。
なお、前述した図16のシステム構成における回路やフ
ァイルの機能と同様の要素については、同一の番号を付
与している。図1に示すように、本実施の形態は、目的
プログラムの実行ステップ数調整を行うにあたり、ソー
スプログラム50および命令実行ステップ数情報51よ
りオブジェクト52,個別ステップ数調整情報53およ
びステップ数調整オブジェクト54を作成するオブジェ
クト生成部1と、このオブジェクト52やメモリ割付情
報55などにより複数のオブジェクトを結合し、実行形
式(目的プログラム)56および結合ステップ数調整情
報57を作成するオブジェクト結合部2と、外部モデル
33やターゲットシステム34を入力するとともに、実
行形式56や結合ステップ数調整情報57に基づいてプ
ログラムを試行実行し、実行ステップ数計測結果58を
出力する実行部3と、この実行ステップ数計測結果58
を用いて実行ステップ数の調整を行い、前述した個別ス
テップ数調整情報53およびステップ数調整オブジェク
ト54を更新する実行ステップ数更新部4とを有してい
る。
【0047】ここで、ソースプログラム50は、C言
語,アセンブリ言語など記述された原始プログラムであ
り、命令実行ステップ数情報51は、命令コードと、こ
の命令コードの実行ステップ数とによって構成されてい
る。オブジェクト52は、原始プログラムをコンパイ
ラ,アセンブラによって命令コードに変換したオブジェ
クトコード群である。このオブジェクト52は、メモリ
割付情報55を元にし、オブジェクト結合部2によりて
実行形式56として出力される。この実行形式56は、
実行部3において実行できるオブジェクトコード群であ
る。
【0048】一方、ターゲットシステム34は、実行部
3をエミュレータとしたときに、メモリや外部装置など
のハードウェアであり、また外部モデル33は、実行部
3をシミュレータで形成した場合、メモリや外部装置な
どを、ソフトウェアによりシミュレーションするための
構成と動作を定義したファイルである。なお、ターゲッ
トシステム34とシミュレータ、および外部モデル33
とエミュレータの組合わせでは、使用されない。
【0049】さらに、実行部3における実行ステップ数
とは、命令コードをCPUによって実行した場合に必要
なクロック数であり、後述する合計ステップ数,差分ス
テップ数,加算ステップ数は、それぞれ複数個の実行ク
ロック数を合計、差分、加算した値である。さらに、調
整ステップ数は、分岐ルートごとの実行ステップ数を同
一ステップにするために調整する値を意味する。
【0050】以下の説明では、コンパイラ、アセンブ
ラ、リンカなどによって、ソースプログラム50、オブ
ジェクト52、実行形式56の命令コードを実行せず
に、分岐ルートを解析することを静的解析と呼び、命令
コードを実行せずに、実行ステップ数、合計ステップ
数、差分ステップ数、加算ステップ数を計測することを
静的計測と呼び、この静的計測によって、ステップ数を
調整することを静的調整と呼ぶ。同様に、エミュレータ
やシミュレータなどによって、実行形式56の命令コー
ドを実行し、その実行した結果により分岐ルートを解析
することを動的解析と呼び、実行した結果によって、実
行ステップ数、合計ステップ数、差分ステップ数、加算
ステップ数を計測することを動的計測と呼び、この動的
計測によって、ステップ数を調整することを動的調整と
呼ぶ。
【0051】また、個別ステップ数調整情報53は、ソ
ースプログラム50ごとに生成し、ソースプログラム5
0を識別するためのソースファイル情報と、ステップ数
範囲行とステップ数範囲レーベルとステップ数解析調整
データとステップ数調整オブジェクト開始レーベル名を
含むステップ数調整範囲情報と、によって構成される。
メモリ割付情報55は、メモリ割付の種類を識別できる
セグメント名と、このセグメント名ごとのメモリ割付ア
ドレス範囲と、このメモリ割付アドレス範囲をアクセス
したときに余分にかかる加算ステップ数とによって構成
されている。結合ステップ数調整情報57は、個別ステ
ップ数調整情報53を結合したものである。
【0052】このことを具体的に説明すると、ソースプ
ログラム50は、通常複数個(n個)存在し、これらn
個のソースプログラム50をコンパイルすると、n個の
オブジェクト52が生成される。このとき、n個のソー
スプログラム50に、例えばステップ数調整範囲を1個
所指定すると、n個の個別ステップ数調整情報53と、
n個×(分岐ルート数)のステップ数調整オブジェクト
54が生成される。このため、n個のオブジェクト52
と、n個×(分岐ルート数)のステップ数調整オブジェ
クト54とは、1つに結合して実行形式56を得る。同
様に、n個の個別ステップ数調整情報53を1つに結合
して結合ステップ数調整情報57を得るようにしてい
る。
【0053】かかるオブジェクト生成部1は、ソースプ
ログラム50におけるステップ数の調整範囲を判定する
ステップ数調整範囲判定手段11と、この判定手段11
の判定結果により実際のオブジェクトを生成するオブジ
ェクト生成手段12と、このオブジェクト生成結果によ
りコード解析するステップ数を計測するコード解析ステ
ップ数計測手段13と、ステップ数の計測結果によりコ
ード解析するステップ数を調整するコード解析ステップ
数調整手段14とを備えている。このオブジェクト生成
部1は、コンパイラまたはアセンブラであり、ソースプ
ログラム50と、命令実行ステップ数情報51によっ
て、オブジェクト52と、個別ステップ数調整情報53
と、ステップ数調整オブジェクト54を出力する。この
オブジェクト生成部1におけるステップ数調整範囲判定
手段11は、ソースプログラム50の計測範囲を識別
し、個別ステップ数調整情報53とステップ数調整オブ
ジェクト54の初期情報を出力する。また、コード解析
ステップ数計測手段13は、オブジェクト生成手段12
で生成したオブジェクト52の計測範囲に対して分岐ル
ートを解析し、命令実行ステップ数情報51を使った分
岐ルートごとの命令コード実行ステップ数の合計と、各
分岐ルートについてメモリ割付ごとのアクセス回数とを
計測する。その結果、コード解析ステップ数調整手段1
4は、分岐ルートごとの命令ステップ数から調整ステッ
プ数を求め、個別ステップ数調整情報53を更新し、ス
テップ数調整オブジェクト54を呼び出す命令コードを
オブジェクト52に対して挿入した後、個別ステップ数
調整情報53で更新された調整ステップ数に相当する命
令コードをステップ数調整オブジェクト54として出力
する。
【0054】また、オブジェクト生成部2は、リンカお
よびアーカイバで構成され、オブジェクト結合手段21
と、個別ステップ数調整情報結合手段22と、メモリ割
付ステップ数調整手段23とを備えており、メモリ割付
情報55を元にして、オブジェクト52を結合して実行
形式56を出力するとともに、ステップ数調整オブジェ
クト54を結合して結合ステップ数調整情報57を出力
する。すなわち、オブジェクト結合手段21によって、
オブジェクト52を結合し、必要であればアーカイバま
たはライブラリアンで作成されたライブラリも結合して
実行形式56を出力する。個別ステップ数調整情報結合
手段22はメモリ割付情報55を元にして、個別ステッ
プ数調整情報53を結合し、結合ステップ数調整情報5
7を出力する。このとき、結合ステップ数調整情報57
内のアドレスは、実行形式56を作成することによって
得られた絶対アドレスに変換する。ついで、メモリ割付
ステップ数調整手段23は、個別ステップ数調整情報結
合手段22の出力により、分岐ルートごとのメモリ割付
によるアクセス回数から調整ステップ数を求め、それを
個別ステップ数調整情報53に挿入し且つ調整ステップ
数に相当する命令をステップ数調整オブジェクト54に
挿入するとともに、その調整ステップ数に相当する命令
を実行形式56に結合する。
【0055】次に、実行部3は、シミュレータまたはエ
ミュレータで構成され、実行ステップ数計測手段31
と、不要ステップ数削除手段32とを備えている。この
実行部3は、外部モデル33またはターゲットシステム
34を使用し、実行形式56に対しエミュレーションま
たはシミュレーションを行い、結合ステップ数調整情報
57によって分岐ルートごとの計測範囲を得ることによ
り、実行ステップ数計測結果58を出力する。特に、実
行ステップ数計測手段31は、結合ステップ数調整情報
57における分岐ルートの分岐開始アドレスと分岐終了
アドレスを取出し、シミュレータまたはエミュレータに
対して、分岐ルートの計測開始アドレスと計測終了アド
レスとして命令コード実行ステップ数を計測する。ま
た、不要ステップ削除手段32は、割り込み処理やDM
A転送などの分岐ルート以外の命令が実行された場合、
実行ステップ数計測手段31に対して再計測を要求する
か、あるいは計測開始アドレスから計測終了アドレスま
での命令コード実行ステップ数より割り込み処理とDM
A転送などの分岐ルート以外の実行ステップ数を減算す
ることによって、実行ステップ数計測結果58を出力す
る。
【0056】さらに、実行ステップ数更新部4は、実行
ステップ数調整手段41を備え、実行ステップ数計測結
果58に基づいて実行ステップ数の計算を行い、その結
果によって個別ステップ数調整情報53とステップ数調
整オブジェクト54とを更新する。要するに、実行ステ
ップ数調整手段41によって、コード解析による分岐ル
ートごとの実行ステップ数にメモリ割付による加算ステ
ップ数を加えた値と、実行ステップ数計測結果58の実
行ステップ数との差分ステップ数を求め、それを調整ス
テップ数として個別ステップ数調整情報53に挿入する
とともに、差分ステップ数に相当する命令コードをステ
ップ数調整オブジェクト54に挿入する。
【0057】上述した実行部3において、初めて実行形
式56をエミュレーションまたはシミュレーションを行
った場合、オブジェクト生成部1のコード解析による調
整ステップ数と、オブジェクト結合部2におけるメモリ
割付による加算ステップ数とによって、ソースプログラ
ム50に記述された調整範囲の分岐ルートを捜し、その
分岐ルートごとの実行ステップ数を大まかに調整する。
【0058】その後、オブジェクト結合部2におけるメ
モリ割付情報55の加算ステップ数が変更されたとき、
メモリ割付ステップ数調整手段23によりその加算ステ
ップ数の変更が反映されたステップ数調整オブジェクト
54を作成し、その変更結果で実行形式56を生成する
ことにより、ソースプログラム50に記述された調整範
囲の分岐ルートごとの実行ステップ数も同時に調整され
る。
【0059】再度、実行部3において、実行ステップ数
計測結果58が出力された後、実行ステップ数更新部4
において、個別ステップ数調整情報53を更新する。こ
の個別ステップ数調整情報53が更新されたとき、再度
オブジェクト結合部2は、調整範囲の分岐ルートごとの
実行ステップ数の精度が向上した実行形式56を出力す
るので、再度実行部3が実行ステップ数の計測を実行し
たときは、分岐ルート毎の実行ステップ数に差異が無く
なる。
【0060】なお、上述したオブジェクト生成部1、オ
ブジェクト結合部2、実行部3、実行ステップ数更新部
4は、記憶媒体(図示せず)に記録されても良い。ここ
で、記憶媒体とは、プログラムを記録したコンピュータ
読み取り可能な記録媒体のことであり、具体的には、光
ディスク、磁気ディスク、半導体メモリなどが用いられ
る。要するに、この記憶媒体には、コンピュータが読み
取り可能な形式で保存され、コンピュータが実行可能な
形式に変換された媒体であればよい。これにより、記憶
媒体に保存されたプログラムをコンピュータが直接実行
するか、あるいは記憶媒体から別の高速な半導体メモリ
などへ出力した後、コンピュータが実行することができ
る。
【0061】図2は図1に示すシステムの動作を説明す
るフロー図である。図2に示すように、このシステム全
体の動作フローにおいて、図1のブロック図との関係で
説明すると、ステップS1〜S3はオブジェクト生成部
1のステップ数調整範囲判定手段11によって実現し、
ステップS4はオブジェクト生成手段12によって実現
し、ステップS5〜S7はコード解析ステップ数計測手
段13とコード解析ステップ数調整手段14によって実
現している。また、ステップS8はオブジェクト結合部
2におけるオブジェクト結合手段21と個別ステップ数
調整情報結合手段22によって実現し、ステップS9〜
S11はメモリ割付ステップ数調整手段23によって実
現し、ステップS12はオブジェクト結合手段21によ
って実現する。さらに、ステップS13〜S15は実行
部3の実行ステップ数計測手段31と不要ステップ数削
除手段32および実行ステップ数更新部4の実行ステッ
プ数調整手段41とによって実現し、ステップS16は
オブジェクト結合手段21によって実現する。
【0062】まず、ソースプログラム50のステップ数
調整範囲は、ステップS1〜S3によって検索され、ス
テップ数調整範囲の開始行と終了行に、それぞれ開始レ
ーベルと終了レーベルを挿入する。すなわち、ステップ
S1でステップ数調整開始位置を検出したか否かの判定
を行い、検出した場合には、ステップS2の処理を行
う。このとき、ステップ調整情報が存在するときはその
ままとするが、存在しないときはステップ調整情報を作
成する。ついで、ステップS3で、ステップ数調整範囲
レーベルをソースプログラムに挿入してステップ調整情
報を書込む。この書込みが完了すると、ステップS1に
戻って再度ステップ調整開始位置の検出判定を行う。
【0063】一方、このステップS1でステップ調整開
始位置を検出しないと、ステップS4のオブジェクト生
成を行う。このオブジェクト生成ステップでは、開始レ
ーベルと終了レーベルを挿入したソースプログラム50
よりオブジェクト52を生成する。このソースプログラ
ム50の記述例としては、例えば後述する図10のC言
語におけるpragma疑似命令を用いる。
【0064】次に、ステップS5により、開始レーベル
と終了レーベルを元にオブジェクト52に含まれるステ
ップ数調整範囲の分岐ルートを解析し、命令実行ステッ
プ数情報51を使った分岐ルートごとの命令コード実行
ステップ数の合計と、各分岐ルートにおけるメモリ割付
ごとのアクセス回数とを計測する。その結果、分岐ルー
トごとの命令ステップ数から調整ステップ数を求め、個
別ステップ数調整情報53を更新する。
【0065】この分岐ルートの解析,調整が完了する
と、ステップS5で解析および調整の結果より、ステッ
プ数調整オブジェクトを作成する。すなわち、ステップ
数調整オブジェクト54を呼び出す命令コードをオブジ
ェクト52に対して挿入し、個別ステップ数調整情報5
3で更新された調整ステップ数に相当する命令コードを
ステップ数調整オブジェクト54に挿入する。ついで、
ステップS7で調整範囲が未だ残っているかの判定を行
う。残っている場合、つまりステップ数調整範囲がオブ
ジェクト52に存在する間、ステップS5,ステップS
6を継続する。
【0066】次に、ステップS8によって、オブジェク
ト52を結合するとともに、ステップ数調整情報を結合
し、実行形式56および結合ステップ数調整情報57を
生成する。
【0067】次に、ステップS9により、メモリ割付情
報55の加算ステップ数を元にして、個別ステップ数調
整情報53に含まれるメモリ割付ごとのアクセス回数か
ら分岐ルートごとのメモリ割付による調整ステップ数を
求め、個別ステップ数調整情報53を更新する。つい
で、ステップS10により、個別ステップ数調整情報5
3で更新された調整ステップ数に相当する命令コードを
ステップ数調整オブジェクト54に挿入する。このステ
ップ数調整オブジェクト54への挿入が完了すると、ス
テップ11において、調整範囲が未だ残っているか否か
の判定を行う。ステップ数調整範囲が実行形式56に存
在する間、ステップS9,ステップS10を繰返し継続
する。
【0068】次に、このステップ数調整範囲が無くなる
と、ステップS12によって、実行形式56に調整済み
のステップ調整オブジェクト54を結合する。ついで、
ステップS13により、結合ステップ数調整情報57に
おける分岐ルートの分岐開始アドレスと分岐終了アドレ
スを取出し、分岐ルートの計測開始アドレスと計測終了
アドレスとして命令コード実行ステップ数を計測した
後、割り込み処理やDMA転送などの分岐ルート以外の
実行ステップ数を減算して調整した結果を実行ステップ
数計測結果58として出力する。
【0069】次に、ステップS14により、上述の調整
結果に基づいて、コード解析による分岐ルートごとの実
行ステップ数にメモリ割付による加算ステップ数を加え
た値と、実行ステップ数計測結果58の実行ステップ数
との差分ステップ数を求める。このステップS14で
は、求めた差分ステップ数を調整ステップ数として個別
ステップ数調整情報53に挿入し、差分ステップ数に相
当する命令コードをステップ数調整オブジェクト54に
挿入する。さらに、ステップ15で調整範囲が未だ残っ
ているか否かの判定を行う。この結果、ステップ数調整
範囲が実行形式56に存在する間、ステップS13、ス
テップS14は繰返し継続する。要するに、実行ステッ
プ数のフィードバックがかけられる。
【0070】最後に、ステップS16により、ステップ
S14によって調整されたステップ数調整オブジェクト
54を再度結合し、実行形式56を作成する。このオブ
ジェクト54の再結合が完了すると、一連の処理が終了
する。
【0071】図3は図1における個別ステップ数調整情
報の構成図である。図3に示すように、この個別ステッ
プ数調整情報53は、ファイル情報100と、複数の
(個別)ステップ数調整範囲情報101とから構成さ
れ、そのステップ数調整範囲情報101は、ステップ数
の調整範囲を行で規定したステップ数調整範囲行102
とステップ数調整範囲レーベル103と複数のステップ
数解析調整データ104とを含んで形成される。なお、
このファイル情報100は、個別ステップ数調整情報5
3の元になるソースプログラム50およびオブジェクト
52のファイル名、作成日付などによって構成され、ソ
ースプログラム50とオブジェクト52と個別ステップ
数調整情報53との関係および更新日時、更新理由(例
えば、ソースプログラム50の変更、メモリ割付による
更新、実行ステップ数による更新)などを備えている。
したがって、前述した図1のコード解析ステップ数調整
手段14と、メモリ割付ステップ数調整手段23と、実
行ステップ数調整手段41とにおいて、何時更新された
か、さらには更新する必要があるか否かを知ることがで
きる。
【0072】また、複数のステップ数解析調整データ1
04は、それぞれステップ数調整オブジェクト開始レー
ベル名105を持って形成される。この個別ステップ数
調整情報53は、前述したように、図2におけるステッ
プS2によって生成し、ステップS6とステップS10
によって更新し、ステップS8によってオブジェクト結
合と同時に、個別ステップ数調整情報も結合される。
【0073】なお、前述した結合ステップ数調整情報5
7もこの個別ステップ数調整情報53と同様に、ファイ
ル情報と複数のステップ数調整範囲情報とで構成され
る。、結合ステップ数調整情報57の構成例である。
【0074】図4は図3におけるステップ数調整解析調
整データの構成図である。図4に示すように、ステップ
数調整情報53におけるステップ数解析調整データ10
4は、解析開始アドレス,コード解析合計ステップ数,
メモリ割付個別アクセス数,コード解析調整ステップ
数,メモリ割付調整ステップ数,実行時計測ステップ
数,実行時調整ステップ数,複数(分岐先1〜n)のス
テップ数解析調整データへのポインタを含んでおり、分
岐先毎のポインタが複数個あるときのステップ数解析調
整データ例を調整データ(1〜3)106,107,1
08で表わしている。例えば、分岐先1に複数のポイン
タがあるときのステップ数解析調整データ106は、解
析開始アドレス,コード解析合計ステップ数,メモリ割
付個別アクセス数,コード解析調整ステップ数,メモリ
割付調整ステップ数,実行時計測ステップ数,実行時調
整ステップ数,分岐先1−1乃至分岐先1−nのステッ
プ数解析調整データへのポインタとから形成される。要
するに、実行ステップ数調整範囲1個に対して分岐先が
n個あったときには、n個のポインタによりn個の調整
データを管理する。つまり、データ106において、n
個の分岐先のうち、さらにm個の分岐先があったとき、
m個のポインタによってm個の調整データを管理する方
法を説明している。
【0075】すなわち、前述した図2のステップS5に
おいて、分岐ルートを解析した結果に基づき、ステップ
数解析調整データをポインタによって接続している。
【0076】図5は図1におけるステップ数調整オブジ
ェクトの構成図である。図5に示すように、ステップ数
調整オブジェクト54は、ステップ数調整オブジェクト
開始レーベル名〔Entry〕106,コード解析調整
ステップ数に相当する命令コード〔nop〕107,メ
モリ割付調整ステップ数に相当する命令コード〔no
p〕108,実行時調整ステップ数に相当する命令コー
ド〔nop〕109,ステップ数調整オブジェクトから
の復帰コード〔jmp(jp)〕110から構成され
る。このステップ数調整オブジェクト54は、調整ステ
ップ数に相当する命令コードとして、NOP(ノン・オ
ペレーション)命令を挿入した例である。
【0077】すなわち、前述した図2のフローにおいて
は、ステップS6によって生成し、ステップS10によ
って更新し、ステップS12によって結合している。こ
のステップ数調整オブジェクト54は、ステップ数調整
オブジェクト情報に対応して生成し、オブジェクト52
からステップ数調整オブジェクト54を呼び出すステッ
プ数調整オブジェクト開始レーベル名106と、コード
解析調整ステップ数に相当する命令コード107と、メ
モリ割付調整ステップ数に相当する命令コード108
と、実行時調整ステップ数に相当する命令コード109
と、ステップ数調整オブジェクト54から復帰する命令
コード110とによって構成される。
【0078】次に、図2における個々の動作フロー(図
6〜図8)と前述した図3〜図5を参照し、本実施の形
態の調整動作について説明する。
【0079】図6は図2における分岐ステップ数解析お
よび調整のフロー図である。図6に示すように、この分
岐ステップ数解析および調整フローは、前述した図2の
ステップS5の詳細なフローである。このステップS5
で呼び出される分岐ステップ数解析および調整は、まず
ステップS20により、解析開始アドレスを記憶させ、
解析中アドレスを個別ステップ調整情報53に追加す
る。このアドレスの記憶が完了すると、ステップS21
により分岐命令を検索する。
【0080】この検索判定の結果、分岐命令がある場合
は、ステップ23で解析調整処理を再帰呼出し、このと
きの分岐先アドレスを解析開始アドレスとする。
【0081】一方、ステップS21で分岐命令がない場
合は、ステップS22において、コード解析によって選
られた合計ステップ数(コード解析合計ステップ数)と
メモリ割付ごとのアクセス回数(メモリ割付個別アクセ
ス数)を測定し、その測定結果を個別ステップ調整情報
53に追加し、処理を終了する。
【0082】ついで、ステップS24において、再帰呼
出しからの復帰後、ステップS24により、再帰呼出し
からの復帰後、前述した図4のステップ数解析調整デー
タ104における分岐先1〜nへのポインタを設定す
る。このポインタの設定が完了すると、ステップS25
において、全ての分岐を処理したか否かの判定を行う。
これらステップS24,ステップS25は、分岐命令が
ある間、すなわち未処理がある間、ステップS23へ戻
り、繰返し継続される。
【0083】さらに、全ての分岐について処理済みにな
ると、ステップS26において、分岐先へのポインタ
(図4のステップ数解析調整データ104における分岐
先1〜n)が指し示すステップ数解析調整データ10
6,107,108にあるコード解析合計ステップ数の
差分ステップ数を求め、コード解析調整ステップ数を挿
入し、処理を終了する。
【0084】図7は図2におけるメモリ割付ステップ数
調整フロー図である。図7に示すように、メモリ割付ス
テップ数調整フローは、前述した図2のステップS9の
詳細なフローである。このステップS9で呼び出される
メモリ割付ステップ数調整は、まずステップS30によ
り分岐命令を検索する。なお、この分岐命令の検索およ
びつぎの図8で説明する分岐命令の検索は、図2のコー
ド解析によって得られたステップ数解析データのポイン
タ接続を追い掛けることを意味する。
【0085】このステップS30で分岐命令がある場合
は、ステップS31のメモリ割付ステップ数調整を行っ
た後、ステップS32で全ての分岐について処理したか
否かの判定をする。ここで、未処理の分岐があった場合
には、ステップS31に戻ってステップ数調整の再帰呼
出しを行う。しかし、前述したステップS30の分岐命
令検索の結果、分岐命令が残っていないときは、メモリ
割付ステップ数調整の処理を終了させる。
【0086】最後に、ステップS33により、再帰呼出
しからの復帰後、分岐先へのポインタ(図4のステップ
数解析調整データ104の分岐先1〜nのポインタ)が
指し示すコード解析によって得られたメモリ割付個別ア
クセス数とメモリ割付情報55の加算ステップ数から図
4のステップ数解析調整データ1,2,3(106〜1
08)におけるメモリ割付調整ステップ数を挿入(加
算)して終了する。
【0087】図8は図2における実行ステップ数調整フ
ロー図である。図8に示すように、この実行ステップ数
調整フローは、前述した図2のステップS13の詳細な
フローである。このステップS13で呼び出される実行
ステップ数調整は、まずステップS40により分岐命令
を検索する。ここで、分岐命令がある場合は、ステップ
S41の実行ステップ数調整を行い、続いてステップS
43で全ての分岐について処理したか否かの判定を行
う。この判定の結果、未処理の分岐が残っていると処理
を繰返し継続する。
【0088】一方、ステップS40で分岐命令がない場
合は、分岐開始アドレスを計測開始アドレスとし、エミ
ュレータまたはシミュレータを実行した結果から実行時
計測ステップ数(図4の106〜108)を挿入して終
了する。
【0089】しかし、ステップS41によって、再帰呼
出しから復帰後、すべての分岐に対して、実行時計測ス
テップ数を得られたら、ステップS44において、分岐
先へのポインタ(図4の106〜108)が指し示す実
行時計測ステップ数の差分ステップ数を求め、実行時調
整ステップ数を挿入(加算)して処理を終了する。
【0090】図9は図1におけるメモリ割付情報の一例
を示す構成図である。図9に示すように、このメモリ割
付情報55は、変数と領域と加算ステップ数からなる。
例えば、変数MEM1は低速RAMの領域であり、加算
するステップ数は1としている。この加算ステップ数を
1,0,3などと規定することにより、異った領域の長
さ(時間)の調整を行っている。
【0091】図10は図1におけるソースプログラムの
一例を示す構成図である。図10に示すように、このソ
ースプログラム50は、#pragma adjust
start(ステップ数調整範囲の開始位置)と#p
ragma adjustend(ステップ数調整範囲
の終了位置)を指定した例である。この例におけるステ
ップ数調整範囲内のソースプログラム50は、「if
(MEM2==0){MEM1=0;}」において、前
述した図9の高速RAMを参照して値が0であれば、低
速RAMに0を書き込み、また「else if(ME
M2==1){MEM3=0;}」において高速RAM
を参照して値が1であれば、I/Oポートに0を書き込
み、さらに「else{MEM2=0;}」において高
速RAMを参照して値が0または11でなければ、高速
RAMに0を書き込むことを表わしている。
【0092】このように、かかる調整範囲に指定された
コマンドが、上述の意味を表わすことにより、ソースプ
ログラム50は、オブジェクト生成部1によりオブジェ
クト52に形成される。
【0093】図11は図1におけるオブジェクトの一例
を示す構成図である。図11に示すように、このオブジ
ェクト52は、前述した図10のステップ数調整範囲内
のソースプログラム50より変換されたものである。
【0094】すなわち、図11において、「if(ME
M2==0)」が、「CMP MEM2,0」、「BN
Z LABEL 1」となり、「{MEM1=0;}」
が、「MOVE MEM1,0」、「BR LABEL
1 END」となり、「else if(MEM2=
=1)」が、「CMP MEM2,1」、「BNZLA
BEL 1 2」となり、「{MEM3=0;}」が、
「MOVE MEM3,0」、「BR LABEL 1
END」となり、「else{MEM2=0;}」
が、「MOVE MEM2,0」とそれぞれ変換され
る。なお、記号A〜Eは、図12で説明するブロックを
表わしている。
【0095】図12は図11に示すオブジェクトのフロ
ー図である。図12に示すように、このフローは、オブ
ジェクト52を分解したとき、ブロックA,Cが比較命
令と分岐判定を行うブロック、ブロックB,D,Eがメ
モリに数値を代入するブロックである。
【0096】しかるに、前述した図10のソースプログ
ラム50の調整範囲(スタートとエンドを除く範囲)が
指定されているとき、図11のようなオブジェクト52
が生成される。したがって、分岐ルートを解析する場
合、まず分岐しない側を先に解析し、次に分岐する側を
解析する。その結果、図12のフローに示すように、ブ
ロックA→B→C→D→Eの順番で解析を行う。
【0097】図13(a)〜(c)はそれぞれ図12に
おける分岐ルートの解析フロー図である。図13(a)
に示すように、この解析フローは、ブロックA,Bから
なるルートである。同様に、図13(b),(c)に示
すように、これらの解析フローは、ブロックA,C,D
からなるルートおよびブロックA,C,Eからなるルー
トである。要するに、図12の解析フローは、図13の
ような3つの分岐ルートになる。
【0098】かかる解析フローにおいて、ブロックAは
全ルートで実行されるため、調整ステップを挿入しな
い。また、ブロックBは、ブロックCとDの合計ステッ
プ数と、CとEの合計ステップ数と同じ長さのステップ
になるように、調整ステップを挿入する。また、ブロッ
クCは、分岐ルート2(A→C→D)と分岐ルート3
(A→C→E)で実行されるため、調整ステップを挿入
しない。さらに、ブロックDおよびEは、同一ステップ
になるように、どちらかに、調整ステップを挿入する。
【0099】要するに、図13は、図12のフローを分
岐ルートごとに組合わせを説明したものであり、(a)
〜(c)の3つのルートが存在するので、そのルートご
とのトータル時間を同じにするため、コード解析による
調整ステップと、メモリ割付による調整ステップと、実
行時による調整ステップとを挿入した例を示している。
すなわち、処理ステップ1つについて1ステップだけの
処理時間がかかる場合、すべてのルートの処理時間は一
致しないといけないため、図13における比較,分岐命
令,調整ステップなどのステップ数(箱の数)は、各ル
ートごとに一致させる必要がある。これら分岐ルートご
との箱の数は、前述した図1におけるコード解析ステッ
プ数調整手段14によって同じになるように調整され
る。
【0100】つぎに、箱の数だけでは分らない時間の調
整、例えばMEM1とMEM2とMEM3の実行ステッ
プの違いによる調整は、メモリ割付ステップ数調整手段
23により行う。すなわち、前述した図9の例に示すよ
うに、加算ステップの関係が、MEM3〉MEM1〉M
EM1であった場合、[MEM3の加算ステップ数−M
EM2の加算ステップ数]を図13(c)の分岐ルート
に挿入し、[MEM3の加算ステップ数−MEM1の加
算ステップ数]を図13(a)の分岐ルートに挿入する
ことにより、箱の数だけでは分からない部分の調整を行
う。
【0101】さらに、実行部3において、図13
(b),(c)のブロックD,Eを実行ブロックDの方
が遅いステップ数であった場合、そのステップ数の差を
図13(b)に挿入することにより、箱の数だけでは分
からず、メモリ割付でも分からなかった調整を実行ステ
ップ数調整手段41で行う。
【0102】図14(a)〜(c)はそれぞれ図13に
おけるオブジェクトをステップ数調整オブジェクトに置
き換えた解析フロー図である。。図14(a)〜(c)
に示すように、これらの解析フローは、図13(a)〜
(c)におけるブロックA〜EをブロックA′〜E′に
置換えるとともに、ステップ数を合わせるための新たな
ブロックF,G,Hを追加して記載したものである。
【0103】要するに、本実施の形態においては、前述
した図6の分岐ステップ数解析および調整フローにおい
て、分岐ルートを再帰呼出しによって検索し、枝から順
番に合計ステップが決定する。したがって、図12のフ
ローの場合、ブロックE→D→C→B→Aの順番で決定
する。
【0104】すなわち、ブロックDが決定したとき、ブ
ロックEとDの調整ステップ数をブロックEまたはDに
挿入し、ブロックEまたはDの最大ステップ数をブロッ
クCの合計ステップ数とする。
【0105】また、ブロックBが決定したとき、ブロッ
クCとBの調整ステップ数をブロックCまたはBに挿入
し、ブロックCまたはDの最大ステップ数をブロックA
の合計ステップ数とする。
【0106】しかるに、図13および図14において、
ブロックEとHの両方にコード解析調整ステップが挿入
されているが、図13のブロックB,ブロックDおよび
図14のブロックB′,ブロックD′における「LAB
EL 1 ENDにジャンプ」と同様に、分岐命令を挿
入した場合を想定している。
【0107】最終的に、図13のブロックBにおける
「コード解析調整ステップ」(一番下),ブロックDに
おける「コード解析調整ステップ」,ブロックEにおけ
る「コード解析調整ステップ」および図14におけるブ
ロックFにおける「コード解析調整ステップ」(一番
下),ブロックGにおける「コード解析調整ステッ
プ」,ブロックHにおける「コード解析調整ステップ」
の差分ステップ数から片方のステップを削除することが
できる。
【0108】なお、図13(a)のブロックBにおける
「コード解析調整ステップ」(上の3つ),ブロックE
における「分岐する(偽)場合のステップ」および図1
4におけるブロックFにおける「コード解析調整ステッ
プ」(上の3つ),ブロックE′に「分岐する(偽)場
合のステップ」は、個別ステップ数調整情報53に入れ
たとき合計ステップ数として挿入される。
【0109】このように、図14(a)〜(c)に示す
とおり、分岐ルートの最後に調整ステップをまとめたブ
ロックF,G,Hがステップ数調整オブジェクトにな
る。
【0110】上述した点をさらに図12〜図14を用
い、各調整フローを参照して、より具対的に説明する。
【0111】図12に示すブロックA、B、C、D、E
は、前述した図6の分岐ステップ数解析および調整フロ
ーにより、以下のように分岐ルートを再帰呼び出しによ
って検索し、枝から順番に合計ステップを決定する。こ
こで、枝とは、ブロックAに対してブロックBとCであ
り、ブロックCに対してブロックDとEである。まず、
ブロックDとEの解析後にブロックCの解析が終了し、
ブロックBとCの解析後にブロックAの解析が終了す
る。
【0112】ブロックAの解析からブロックCの解析
呼び出し ブロックAから他分岐命令を検索(図6のステップS2
1)し、「BNZ LABEL 1」(図11)を発見
すると、分岐先である「LABEL1」を現在の解析位
置として、1回目の再帰呼び出しを行う(ステップS2
3)。
【0113】ブロックCの解析からブロックEの解析
呼び出し ブロックCから他分岐命令を検索(ステップS21)
し、「BNZ LABEL 1 2」を発見すると、分
岐先である「BNZ LABEL 1 2」を現在の解
析位置として、2回目の再帰呼び出しを行う(ステップ
S23)。ついで、ブロックEから他分岐命令を検索
(ステップS21)すると、他分岐命令が無いため、
「MOVE MEM2,0」のステップ数をブロックE
におけるコード解析合計ステップ数とする(ステップS
22)。
【0114】ブロックCの解析からブロックDの解析
呼び出し 2回目の再帰呼び出しから復帰し、分岐しない場合の
「MOVE MEM3,0」を現在の解析位置として、
3回目の再帰呼び出しを行う(ステップS25)。つい
で、ブロックDから他分岐命令を検索する(ステップS
21)と、他分岐命令が無いため、「MOVE MEM
3,0」と「BR LABEL 1 END」の合計ス
テップ数をブロックDにおけるコード解析合計ステップ
数とする(ステップ22)。
【0115】ブロックEとブロックDの解析結果から
ブロックCの結果を保存 3回目の再帰呼び出しから復帰し、ブロックEとDのコ
ード解析合計ステップ数の合計ステップが長い方のステ
ップ数と、ブロックCにおける「CMP MEM2,
1」と「BNZ LABEL 1 2」とのステップ数
を加算したステップ数をブロックCにおけるコード解析
合計ステップ数とする(ステップS26)。また、ブロ
ックEとDのコード解析合計ステップ数との差分を調整
ステップ数とする。
【0116】ブロックAの解析からブロックBの解析
呼び出し 1回目の再帰呼び出しから復帰し、分岐しない場合の
「MOVE MEM1,0」を現在の解析位置として、
4回目の再帰呼び出しを行う(ステップ25)。つい
で、ブロックBから多分岐命令を検索(ステップS2
1)すると、多分岐が無いため、「MOVE MEM
1,0」と「BR LABEL 1 END」の合計ス
テップ数をブロックBにおけるコード解析合計ステップ
数とする(ステップS22)。
【0117】ブロックCとブロックBの解析結果から
ブロックAの結果を保存 4回目の再帰呼び出しから復帰し、ブロックCとBのコ
ード解析合計ステップ数の合計ステップが長い方のステ
ップ数と、ブロックAにおける「CMP MEM2,
0」と「BNZ LABEL 1」とのステップ数を加
算したステップ数をブロックAにおけるコード解析合計
ステップ数とする(ステップS26)。また、ブロック
CとBのコード解析合計ステップ数との差分を調整ステ
ップ数とする。
【0118】以上の解析によって、多分岐を2回検出し
たことから、図13(a)、(b)、(c)のように、
3つの分岐ルートがあったことになる。この解析した結
果は、前述した図4のステップ数解析調整データ104
として記憶させる。
【0119】さらに、図13に示すように、ブロックE
とDの調整ステップ数は、ブロックDにコード解析調整
ステップ数D−1を挿入し、ブロックCとBの調整ステ
ップ数は、ブロックBにコード解析調整ステップ数B−
1、B−2、B−3、B−4として挿入した調整オブジ
ェクトを生成する(図2のステップS6)。
【0120】次に、図7のメモリ割付ステップ数調整フ
ローによリ、図4のステップ数解析調整データを用い、
以下のように解析する。
【0121】図12に示すブロックAの解析からブロ
ックCの解析呼び出し ブロックCの1回目の再帰呼び出しを行う(ステップS
31)。
【0122】ブロックCの解析からブロックEの解析
呼び出し ブロックEの2回目の再帰呼び出しを行う(ステップS
31)。このブロックEには多分岐がないので、ブロッ
クEからメモリ割付個別アクセス数を記憶した後、2回
目の再帰呼び出しから復帰する。
【0123】ブロックCの解析からブロックDの解析
呼び出し ブロックCには、もう一つの分岐先が残っていることか
ら、再度ステップS31により、ブロックDの3回目の
再帰呼び出しを行う(ステップS32)。ブロックDに
は多分岐がないので、ブロックDのメモリ割付個別アク
セス数を記憶した後、3回目の再帰呼び出しから復帰す
る。
【0124】ブロックEとブロックDの解析結果から
ブロックCの結果を保存する ブロックEとブロックDのメモリ割付個別アクセス数の
差分を求め、ブロックEとブロックDのそれぞれのメモ
リ割付調整ステップ数を更新する(ステップS33)。
メモリ割付個別アクセス数の大きい側のステップ数は、
ブロックCのメモリ割付個別アクセス数として記憶す
る。
【0125】ブロックAの解析からブロックBの解析
呼び出し 1回目の再帰呼び出しから復帰し、ステップS32によ
りもう一つの分岐先が残っていることから、再度ステッ
プS31によって、ブロックBの4回目の再帰呼び出し
を行う。ブロックBには多分岐がないので、ブロックB
のメモリ割付個別アクセス数を記憶した後、4回目の再
帰呼び出しから復帰する。
【0126】ブロックCとブロックBの解析結果から
ブロックAの結果を保存する ステップS33によりブロックCとブロックBのメモリ
割付個別アクセス数の差分を求め、ブロックCとブロッ
クBのメモリ割付調整ステップ数を更新する。メモリ割
付個別アクセス数の大きい側のステップ数は、ブロック
Aのメモリ割付個別アクセス数として記憶する。
【0127】以上の解析により、解析した結果は、図4
のステップ数解析調整データを更新することによって実
現する。
【0128】さらに、図13に示すように、ブロックE
とDの調整ステップ数は、ブロックEにメモリ割付調整
ステップ数E−1として挿入し、ブロックCとBの調整
ステップ数は、ブロックBにメモリ割付調整ステップ数
B−5として挿入した調整オブジェクトを生成する(図
2のステップS10)。
【0129】次に、図8によって、図4のステップ数解
析調整データを使って、以下のように解析する。
【0130】ブロックAの解析からブロックCの解析
呼び出し ブロックCの1回目の再帰呼び出しを行う(ステップS
41)。
【0131】ブロックCの解析からブロックEの解析
呼び出し ブロックEの2回目の再帰呼び出しを行う(ステップS
41)。ブロックEには多分岐がないので、実行時計測
ステップ数を計測し、2回目の再帰呼び出しから復帰す
る(ステップS42)。
【0132】ブロックCの解析からブロックDの解析
呼び出し もう一つの分岐先が残っていること(ステップS43)
から、再度ステップS41により、ブロックDの3回目
の再帰呼び出しを行う。ブロックDには多分岐がないの
で、実行時計測ステップ数を計測し(ステップ42)、
3回目の再帰呼び出しから復帰する。
【0133】ブロックEとブロックDの解析結果から
ブロックCの結果を保存する ブロックEとブロックDの実行時計測ステップ数の差分
を求め(ステップS44)、ブロックEとブロックDの
それぞれの実行時調整ステップ数を更新する。実行時計
測ステップ数の大きい側のステップ数は、ブロックCの
実行時計測ステップ数として記憶する。
【0134】ブロックAの解析からブロックBの解析
呼び出し 1回目の再帰呼び出しから復帰し、ステップS43によ
りもう一つの分岐先が残っていることから、再度ブロッ
クBの4回目の再帰呼び出しを行う(ステップ41)。
ブロックBには多分岐がないので、実行時計測ステップ
数を計測し(ステップ42)、4回目の再帰呼び出しか
ら復帰する。
【0135】ブロックCとブロックBの解析結果から
ブロックAの結果を保存する ブロックCとブロックBの実行時計測ステップ数の差分
を求め(ステップS44)、ブロックCとブロックBの
実行時調整ステップ数を更新する。実行時計測ステップ
数の大きい側のステップ数は、ブロックAの実行時計測
ステップ数として記憶する。
【0136】以上の解析によって、解析した結果は、図
4のステップ数解析調整データを更新することによって
実現する。
【0137】さらに、図13に示すように、ブロックE
とDの調整ステップ数は、ブロックDに実行時調整ステ
ップ数D−2として挿入し(図2のステップS14)、
ブロックCとBの調整ステップ数は、ブロックBに実行
時調整ステップ数B−6として挿入した調整オブジェク
トを生成する。
【0138】最終的には、調整ステップB−1〜B−6
を図14のブロックFとして、調整ステップD−1,D
−2を図14のブロックGとして、調整ステップE−1
を図14のブロックHとして、分岐ルートごとに調整オ
ブジェクトを生成したことになる。
【0139】以上、本発明の一実施の形態について説明
したが、本発明はこれに限ることなく、以下のような変
形も可能である。
【0140】前述した一実施の形態では、図1における
オブジェクト生成部1は命令ステップ数情報51を参照
したが、このオブジェクト生成部1が命令ステップ数情
報51の他に、オブジェクト結合部2で参照していたメ
モリ割付情報55を参照するようにしてもよい。その場
合を図15を参照して説明する。
【0141】図15は本発明の他の実施の形態を説明す
るための実行ステップ数調整装置のシステム構成図であ
る。図15に示すように、命令実行ステップ数情報51
とメモリ割付情報55を結合するとともに、オブジェク
ト結合部2に設けていたメモリ割付ステップ数調整手段
23をオブジェクト生成部1の内部に設けることで実現
することができる。これによって、前述の図7で行って
いたメモリ割付ステップ数調整を、図6のステップS2
2における個別メモリアクセス数を求めたときに、メモ
リ割付情報55を参照して、図7のステップS33にお
ける差分の計算および調整ステップ数の計算を行うこと
ができる。これによって、図2におけるステップS9〜
S12を削除することができる。
【0142】また、前述したように、ソースプログラム
50は複数存在するために、オブジェクト52と個別ス
テップ数調整情報53とステップ数調整オブジェクト5
4とは、複数存在する。例えば、n個のソースプログラ
ム50があると、n個のオブジェクト52と、[n個×
調整範囲数]の個別ステップ数調整情報53と、[n個
×調整範囲数×分岐ルート数]のステップ数調整オブジ
ェクト54を生成しているが、記憶装置に記憶する際は
まとめることが考えられる。例えば、[n個×調整範囲
数]の個別ステップ数調整情報53は、一つにまとめ
て、n個の個別ステップ数調整情報53とすることがで
きる。また、[n個×調整範囲数×分岐ルート数]のス
テップ数調整オブジェクト54は、一つにまとめて、n
個のステップ数調整オブジェクト54とすることができ
る。ただし、この場合であっても記憶装置への記憶のさ
せ方が異なるだけであり、それぞれ、[調整範囲数]お
よび[調整範囲数×分岐ルート数]の情報を持つため、
同等になることは明白である。
【0143】以上は図15に示す他の実施形態の構成お
よびその主要部の動作であり、他は図1と同様である。
【0144】また、図1におけるステップ数調整オブジ
ェクト54は、ソースプログラムとしても実現すること
ができる。すなわち、ソースプログラムが単純であり、
コンパイルまたはアセンブルに時間がかからないからで
ある。しかも、このステップ数調整オブジェクト54
は、アーカイバまたはライブラリアンを使用して、ライ
ブラリ化して実現することも可能である。その場合、コ
ード解析ステップ数調整手段14とメモリ割付ステップ
数調整手段23と実行ステップ数調整手段41とに、ラ
イブラリアンを更新する機能を付属させるか、調整ステ
ップ数を可変したくないとき、意図的にライブラリアン
とすることが可能である。
【0145】また、図1における実行部3および実行ス
テップ数変更部4は一体化することも可能である。その
場合は、実行ステップ数調整手段41を実行部3に含ま
せることにより、実行ステップ数計測結果58を省くこ
ともできる。
【0146】さらに、前述した図10のソースプログラ
ム50中のpragma調整スタート,調整終了のよう
なC言語におけるpragma疑似命令において、ステ
ップ数の最大ステップ数または最小ステップ数を制限す
るオプションを加え、個別ステップ数調整情報53や結
合ステップ数調整情報57に、前記最大ステップ数また
は最小ステップ数を挿入することにより、コード解析ス
テップ数調整手段14,メモリ割付ステップ数調整手段
23,実行ステップ数調整手段41のそれぞれで挿入さ
れる調整ステップ数を制限することも可能である。
【0147】例えば、ステップ数調整範囲内にfor
文,while文などのループ文があり、且つその終了
条件に変数が使用されていた場合には、ステップ調整を
毎回更新することが有得るため、図10のソースプログ
ラム50中のpragma調整スタート,調整終了のよ
うなC言語におけるpragma疑似命令において、f
or文,while文などの終了条件に変数が使用され
ていたとき、平均ステップ数を求めるオプションを加
え、個別ステップ数調整情報53、結合ステップ数調整
情報57に平均ステップ数を挿入することにより、コー
ド解析ステップ数調整手段14、メモリ割付ステップ数
調整手段23、実行ステップ数調整手段41に挿入され
る調整ステップ数の乱れを抑制することが可能である。
また、これらfor文,while文などの終了条件に
変数が使用されている箇所に、調整ステップ数を固定ス
テップ数にしたり、最大ステップ数または最小ステップ
数を制限できる特殊コメントなどを挿入することによ
り、調整ステップ数を制限することができる。その理由
は、ある範囲だけ特定ステップ数に固定することは、一
部分だけ調整を無効化することにもなり、また調整ステ
ップ数を入れすぎると、全体の処理時間が長くなりすぎ
るという問題があるためである。
【0148】一方、前述した図10のpragma調整
スタート,調整終了のように、C言語におけるprag
ma疑似命令を使用せず、個別ステップ数調整情報53
の行番号などにより、まったくソースプログラム50を
修正せずにステップ数調整範囲判定手段11を簡略化す
ることも可能である。つまり、ソースプログラム50の
調整したい範囲を直接個別ステップ数調整情報53に入
れることにより、#pragma疑似命令を使用しない
方法では、行番号から開始レーベルと終了レーベルを生
成することになる。例えば、ソースプログラム50のフ
ァイル名が「abcd」というファイル名であるとし、
調整開始行が11行目、調整終了行が20行目であった
とすると、前記ファイル名「abcd」と行番号を組合
わせて、abcd11を開始レーベル、abcd20を
終了レーベルとする方法が考えられる。
【0149】上述した実施の形態の変形例は、これらに
限定されることなく、特許請求範囲に記載した範囲内で
各種の変形が可能であることは、言うまでもない。
【0150】
【発明の効果】以上説明したように、本発明の目的プロ
グラムの実行ステップ数調整方法およびその調整装置
は、プログラムで動作させるCPUに接続された外部回
路の動作速度が遅く、ソースプログラム上に時間待ち処
理を挿入するときでも、正確な時間待ちを得ることが出
来るという効果がある。また、本発明は、外部入力を正
確に計測したり、あるいは外部出力を正確に行う必要が
あり、ソースプログラム上に待ち合せ処理を挿入したと
きでも、正確な待ち合せを実現できるという効果があ
る。
【0151】その理由は、ソースプログラムの分岐ルー
トごとのステップ数を同一ステップにすることにより、
分岐ルートごとに存在した命令ステップ数の違いによる
待ち時間の誤差を無くし、外部回路,外部装置の実際の
動作に応じた待ち合せ時間を反映することができるから
である。
【0152】すなわち、コンパイラまたはアセンブラに
おいて、分岐ルートを解析し、分岐ルートごとに命令コ
ードの実行ステップ数を計測して分岐ルートごとに同一
ステップ数になるように大まかに調整し、エミュレータ
またはシミュレータにおいて分岐ルートごとに命令コー
ドをエミュレーションまたはシミュレーションした実行
ステップ数を計測することにより、命令コードの実行ス
テップ数との差分ステップ数によって分岐ルートごとに
同一ステップ数になるように細かく調整できるからであ
る。
【0153】また、本発明は、目的オブジェクトとステ
ップ数調整オブジェクトとを別々に出力するため、ステ
ップ調整にあたっては、ステップ数調整オブジェクトを
調整した後に再結合するだけで良いので、時間待ちおよ
び待ち合せを調整するための再コンパイルなどによる調
整期間を短くできるという効果がある。
【0154】さらに、本発明は、エミュレータまたはシ
ミュレータによって、実行ステップ数の計測結果を元に
した細かな調整を行うので、ターゲットシステムの外部
回路または外部装置をバージョンアップするとき、ステ
ップ数調整オブジェクトを調整した後に再結合するだけ
で済み、開発途中における外部回路または外部装置のタ
イミング調整を簡単に行うことができるという効果があ
る。
【図面の簡単な説明】
【図1】本発明の一実施の形態を説明するための実行ス
テップ数調整装置のシステム構成図である。
【図2】図1に示すシステムの動作を説明するフロー図
である。
【図3】図1における個別ステップ数調整情報の構成図
である。
【図4】図3におけるステップ数解析調整データの構成
図である。
【図5】図1におけるステップ数調整オブジェクトの構
成図である。
【図6】図2における分岐ステップ数解析および調整の
フロー図である。
【図7】図2におけるメモリ割付ステップ数調整フロー
図である。
【図8】図2における実行ステップ数調整フロー図であ
る。
【図9】図1におけるメモリ割付情報の一例を示す構成
図である。
【図10】図1におけるソースプログラムの一例を示す
構成図である。
【図11】図1におけるオブジェクトの一例を示す構成
図である。
【図12】図11に示すオブジェクトのフロー図であ
る。
【図13】図12における分岐ルートの解析フロー図で
ある。
【図14】図13におけるオブジェクトをステップ数調
整オブジェクトに置き換えた解析フロー図である。
【図15】本発明の他の実施の形態を説明するための実
行ステップ数調整装置のシステム構成図である。
【図16】従来の実行ステップ数調整方法の一例を示す
システム構成図である。
【図17】従来の他の例を説明するためのコンパイル装
置を用いたシステム構成図である。
【図18】従来のまた別の例を説明するための目的プロ
グラムの最適化を行うCPUとメモリ等の接続構成図で
ある。
【符号の説明】
1 オブジェクト生成部 2 オブジェクト結合部 3 実行部 4 実行ステップ数更新部 11 ステップ数調整範囲判定手段 12 オブジェクト生成手段 13 コード解析ステップ数計測手段 14 コード解析ステップ数調整手段 21 オブジェクト結合手段 22 個別ステップ数調整情報結合手段 23 メモリ割付ステップ数調整手段 31 実行ステップ数計測手段 32 不要ステップ削除手段 33 外部モデル 34 ターゲットシステム 41 実行ステップ数調整手段 50 ソースプログラム 51 命令実行ステップ数情報 52 オブジェクト 53 個別ステップ数調整情報 54 ステップ数調整オブジェクト 55 メモリ割付情報 56 実行形式 57 結合ステップ数調整情報 58 実行ステップ数計測結果

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】 ソースプログラムに対し、生成される命
    令コードの分岐構造および分岐ルートごとの命令ステッ
    プ数の静的解析を行い、その結果によりステップ数調整
    オブジェクトを出力する第1の手順と、前記生成される
    命令コードのメモリ配置について静的解析を行い、その
    結果により前記ステップ数調整オブジェクトを修正する
    第2の手順と、前記ソースプログラムに対して生成され
    たオブジェクトと前記ステップ数調整オブジェクトを結
    合し、目的プログラムとしての実行形式を生成する第3
    の手順とを含むことを特徴とする目的プログラムの実行
    ステップ数調整方法。
  2. 【請求項2】 前記第1の手順は、前記ソースプログラ
    ムおよび命令実行ステップ数情報を参照して、前記ステ
    ップ数調整オブジェクトの他に、オブジェクトと個別ス
    テップ数調整情報を作成し、前記第2の手順は、メモリ
    割付情報を参照して、前記個別ステップ数調整情報と前
    記ステップ数調整オブジェクトを修正し、第3の手順
    は、前記オブジェクトおよび前記ステップ数調整オブジ
    ェクトを結合して前記実行形式および結合ステップ数調
    整情報を作成する請求項1記載の目的プログラム実行ス
    テップ調整方法。
  3. 【請求項3】 ソースプログラムに対し、生成される命
    令コードの分岐構造および分岐ルートごとの命令ステッ
    プ数の静的解析を行い、その結果によりステップ数調整
    オブジェクトを出力する第1の手順と、前記生成される
    命令コードのメモリ配置について静的解析を行い、その
    結果により前記ステップ数調整オブジェクトを修正する
    第2の手順と、前記ソースプログラムに対して生成され
    たオブジェクトと前記ステップ数調整オブジェクトを結
    合し、目的プログラムとしての実行形式を生成する第3
    の手順と、前記第3の手順により生成された前記実行形
    式を前記ステップ数調整情報によって動的解析を行い、
    その結果により実行ステップ数計測結果を出力する第4
    の手順と、前記実行ステップ数計測結果を用いて前記ス
    テップ数調整オブジェクトを修正する第5の手順とを含
    み、前記第5の手順により前記ステップ数調整オブジェ
    クトが修正されたとき、前記第3の手順に戻って前記目
    的プログラムとしての実行形式を再生成することを特徴
    とする的プログラムの実行ステップ数調整方法。
  4. 【請求項4】 前記第1の手順は、前記ソースプログラ
    ムおよび命令実行ステップ数情報を参照して、前記ステ
    ップ数調整オブジェクトの他に、オブジェクトと個別ス
    テップ数調整情報を作成し、前記第2の手順は、メモリ
    割付情報を参照して、前記個別ステップ数調整情報と前
    記ステップ数調整オブジェクトを修正し、第3の手順
    は、前記オブジェクトおよび前記ステップ数調整オブジ
    ェクトを結合して前記実行形式および結合ステップ数調
    整情報を作成し、前記第4の手順は、前記結合ステップ
    数調整情報を用いて、分岐ルートに対する実行ステップ
    数の計測および不要ステップの削除を行った後に、前記
    実行ステップ数計測結果を作成し、前記第5の手順は、
    前記実行ステップ数計測結果を参照し、前記個別ステッ
    プ数調整情報と前記ステップ数調整オブジェクトを修正
    する請求項3記載の目的プログラムの実行ステップ数調
    整方法。
  5. 【請求項5】 ソースプログラムに対し、生成される命
    令コードの分岐構造および分岐ルートごとの命令ステッ
    プ数の静的解析および前記命令コードのメモリ配置につ
    いての静的解析を行い、それらの結果によりステップ数
    調整オブジェクトを出力する第1の手順と、前記ソース
    プログラムに対して生成されたオブジェクトと前記ステ
    ップ数調整オブジェクトを結合し、目的プログラムとし
    ての実行形式を生成する第2の手順と、前記第2の手順
    により生成された前記実行形式をステップ数調整情報に
    よって動的解析を行い、その結果により実行ステップ数
    計測結果を出力する第3の手順と、前記実行ステップ数
    計測結果により前記ステップ数調整オブジェクトを修正
    する第4の手順とを含み、前記第4の手順によって前記
    ステップ数調整オブジェクトが修正されたとき、前記第
    2の手順に戻って前記目的プログラムを再生成すること
    を特徴とする目的プログラムの実行ステップ数調整方
    法。
  6. 【請求項6】 ソースプログラムより命令コードに変換
    したオブジェクトを出力し、前記オブジェクトをメモリ
    割付情報に基づいて結合することにより、目的プログラ
    ムとしての実行形式を作成し、それによって実行ステッ
    プ数を計測する目的プログラムの実行ステップ数調整装
    置において、命令実行ステップ数情報を参照して前記オ
    ブジェクトの分岐構造および分岐ルートごとの命令ステ
    ップ数の静的解析を行うコード解析ステップ数計測手段
    と,前記コード解析ステップ数計測手段によって得られ
    た静的解析の結果を用い、個別ステップ数調整情報およ
    びステップ数調整オブジェクトを作成するコード解析ス
    テップ数調整手段とを備えるオブジェクト生成部と、前
    記オブジェクト,前記ステップ数調整オブジェクト,前
    記個別ステップ数調整情報を結合し、前記目的プログラ
    ムとしての実行形式と結合ステップ数調整情報を出力す
    るオブジェクト結合手段と,前記オブジェクトのメモリ
    配置について静的解析を行い、その結果を用いて前記ス
    テップ数調整オブジェクトおよび前記個別ステップ数調
    整情報を修正するメモリ割付ステップ数調整手段とを備
    えるオブジェクト結合部とを有することを特徴とする目
    的プログラムの実行ステップ数調整装置。
  7. 【請求項7】 前記目的プログラムの実行ステップ数調
    整装置は、前記オブジェクト結合部で作成された前記実
    行形式を実行するとともに、前記結合ステップ数調整情
    報によって分岐ルートごとの実行ステップ数を計測する
    実行ステップ数計測手段と,前記実行ステップ数計測手
    段の計測結果から不要ステップを削除し、実行ステップ
    数計測結果を出力する不要ステップ削除手段とを備える
    目的プログラムの実行部と、前記実行ステップ数計測結
    果より分岐ルートごとの実行ステップ数を取出し、調整
    を行って、前記ステップ数調整オブジェクトと前記個別
    ステップ数調整情報を修正する実行ステップ数調整手段
    を備える実行ステップ数更新部とを有し、前記オブジェ
    クト結合手段により、前記実行形式と前記結合ステップ
    数調整情報を再結合する請求項6記載の目的プログラム
    の実行ステップ数調整装置。
  8. 【請求項8】 ソースプログラムより命令コードに変換
    したオブジェクトを出力し、前記オブジェクトをメモリ
    割付情報に基づいて結合することにより、目的プログラ
    ムとしての実行形式を作成し、それによって実行ステッ
    プ数を計測する目的プログラムの実行ステップ数調整装
    置において、命令実行ステップ数情報を参照して前記オ
    ブジェクトの分岐構造および分岐ルートごとの命令ステ
    ップ数の静的解析を行うコード解析ステップ数計測手段
    と,前記コード解析ステップ数計測手段によって得られ
    た静的解析の結果を用い、個別ステップ数調整情報およ
    びステップ数調整オブジェクトを作成するコード解析ス
    テップ数調整手段と,前記オブジェクトのメモリ配置に
    ついて静的解析を行い、その結果を用いて前記ステップ
    数調整オブジェクトおよび前記個別ステップ数調整情報
    を修正するメモリ割付ステップ数調整手段とを備えるオ
    ブジェクト生成部と、前記オブジェクト,前記ステップ
    数調整オブジェクト,前記個別ステップ数調整情報を結
    合し、前記目的プログラムとしての実行形式と結合ステ
    ップ数調整情報を出力するオブジェクト結合手段を備え
    るオブジェクト結合部とを有することを特徴とする目的
    プログラムの実行ステップ数調整装置。
  9. 【請求項9】 前記目的プログラムの実行ステップ数調
    整装置は、前記オブジェクト結合部で作成された前記実
    行形式を実行するとともに、前記結合ステップ数調整情
    報によって分岐ルートごとの実行ステップ数を計測する
    実行ステップ数計測手段と,前記実行ステップ数計測手
    段の計測結果から不要ステップを削除し、実行ステップ
    数計測結果を出力する不要ステップ削除手段とを備える
    目的プログラムの実行部と、前記実行ステップ数計測結
    果より分岐ルートごとの実行ステップ数を取出し、調整
    を行って、前記ステップ数調整オブジェクトと前記個別
    ステップ数調整情報を修正する実行ステップ数調整手段
    を備える実行ステップ数更新部とを有し、前記オブジェ
    クト結合手段により、前記実行形式と前記結合ステップ
    数調整情報を再結合する請求項8記載の目的プログラム
    の実行ステップ数調整装置。
  10. 【請求項10】 ソースプログラムに対し、生成される
    命令コードの分岐構造および分岐ルートごとの命令ステ
    ップ数の静的解析を行い、その結果によりステップ数調
    整オブジェクトを出力する第1の手順と、前記生成され
    る命令コードのメモリ配置について静的解析を行い、そ
    の結果により前記ステップ数調整オブジェクトを修正す
    る第2の手順と、前記ソースプログラムに対して生成さ
    れたオブジェクトと前記ステップ数調整オブジェクトを
    結合し、目的プログラムとしての実行形式を生成する第
    3の手順とを処理として、目的プログラムの生成装置に
    実行させるプログラムを記録したことを特徴とするプロ
    グラムを記憶した記録媒体。
  11. 【請求項11】 ソースプログラムに対し、生成される
    命令コードの分岐構造および分岐ルートごとの命令ステ
    ップ数の静的解析を行い、その結果によりステップ数調
    整オブジェクトを出力する第1の手順と、前記生成され
    る命令コードのメモリ配置について静的解析を行い、そ
    の結果により前記ステップ数調整オブジェクトを修正す
    る第2の手順と、前記ソースプログラムに対して生成さ
    れたオブジェクトと前記ステップ数調整オブジェクトを
    結合し、目的プログラムとしての実行形式を生成する第
    3の手順と、前記第3の手順により生成された前記実行
    形式を前記ステップ数調整情報によって動的解析を行
    い、その結果により実行ステップ数計測結果を出力する
    第4の手順と、前記実行ステップ数計測結果を用いて前
    記ステップ数調整オブジェクトを修正する第5の手順と
    を処理として、目的プログラムの実行装置に実行される
    プログラムを記録したことを特徴とするプログラムを記
    憶した記憶媒体。
  12. 【請求項12】 ソースプログラムに対し、生成される
    命令コードの分岐構造および分岐ルートごとの命令ステ
    ップ数の静的解析および前記命令コードのメモリ配置に
    ついての静的解析を行い、それらの結果によりステップ
    数調整オブジェクトを出力する第1の手順と、前記ソー
    スプログラムに対して生成されたオブジェクトと前記ス
    テップ数調整オブジェクトを結合し、目的プログラムと
    しての実行形式を生成する第2の手順と、前記第2の手
    順により生成された前記実行形式をステップ数調整情報
    によって動的解析を行い、その結果により実行ステップ
    数計測結果を出力する第3の手順と、前記実行ステップ
    数計測結果により前記ステップ数調整オブジェクトを修
    正する第4の手順とを処理として、目的プログラムの生
    成装置または前記目的プログラムの実行装置に実行させ
    るプログラムを記録したことを特徴とするプログラムを
    記憶した記録媒体。
  13. 【請求項13】 前記目的プログラムの実行ステップ数
    調整によって作成されたプログラムを記録した請求項1
    1乃至請求項13のいずれかに記載のプログラムを記憶
    した記録媒体。
JP2001126084A 2001-04-24 2001-04-24 目的プログラムの実行ステップ数調整方法とその調整装置およびプログラムを記憶した記録媒体 Expired - Fee Related JP3758991B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001126084A JP3758991B2 (ja) 2001-04-24 2001-04-24 目的プログラムの実行ステップ数調整方法とその調整装置およびプログラムを記憶した記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001126084A JP3758991B2 (ja) 2001-04-24 2001-04-24 目的プログラムの実行ステップ数調整方法とその調整装置およびプログラムを記憶した記録媒体

Publications (2)

Publication Number Publication Date
JP2002323981A true JP2002323981A (ja) 2002-11-08
JP3758991B2 JP3758991B2 (ja) 2006-03-22

Family

ID=18975180

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001126084A Expired - Fee Related JP3758991B2 (ja) 2001-04-24 2001-04-24 目的プログラムの実行ステップ数調整方法とその調整装置およびプログラムを記憶した記録媒体

Country Status (1)

Country Link
JP (1) JP3758991B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011060109A (ja) * 2009-09-11 2011-03-24 Ricoh Co Ltd 組み込み用プログラム開発装置及び組み込み用プログラム開発方法
US8312432B2 (en) 2007-09-25 2012-11-13 Renesas Electronics Corporation Method of adjusting timing difference between pre-corrected source program and post-corrected source program, compiler and information processor

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8312432B2 (en) 2007-09-25 2012-11-13 Renesas Electronics Corporation Method of adjusting timing difference between pre-corrected source program and post-corrected source program, compiler and information processor
JP2011060109A (ja) * 2009-09-11 2011-03-24 Ricoh Co Ltd 組み込み用プログラム開発装置及び組み込み用プログラム開発方法

Also Published As

Publication number Publication date
JP3758991B2 (ja) 2006-03-22

Similar Documents

Publication Publication Date Title
US5768592A (en) Method and apparatus for managing profile data
KR101418969B1 (ko) 프로세서 및 컴파일 방법
US6588009B1 (en) Method and apparatus for compiling source code using symbolic execution
US6877150B1 (en) Method of transforming software language constructs to functional hardware equivalents
US20070011664A1 (en) Device and method for generating an instruction set simulator
US20050204344A1 (en) Program analysis device, analysis method and program of same
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
US7779393B1 (en) System and method for efficient verification of memory consistency model compliance
JPH11232147A (ja) パワーエスティメーション装置、パワーエスティメーション方法、及びパワーエスティメーションプログラムを記録した機械読み取り可能な記録媒体
Wang et al. Accurate source-level simulation of embedded software with respect to compiler optimizations
Mueller-Gritschneder et al. Control-flow-driven source level timing annotation for embedded software models on transaction level
JP2004362216A (ja) コンパイラ装置、コンパイル方法、コンパイラプログラム、及び記録媒体
US7266791B2 (en) High level synthesis device, method for generating a model for verifying hardware, method for verifying hardware, control program, and readable recording medium
US20070271080A1 (en) Model generation method for software/hardware collaboration design
JP5504960B2 (ja) シミュレーション装置及びシミュレーション方法
Sarkar et al. LightningSim: Fast and accurate trace-based simulation for High-Level Synthesis
CN110210046B (zh) 应用程序及专用指令集处理器一体化敏捷设计方法
CN111324948A (zh) 模拟方法及模拟系统
KR0125605B1 (ko) 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치
JP3758991B2 (ja) 目的プログラムの実行ステップ数調整方法とその調整装置およびプログラムを記憶した記録媒体
JP5979965B2 (ja) 回路設計支援装置及び回路設計支援方法及びプログラム
JPH10320212A (ja) キャッシュ向け最適化方法
US20030070117A1 (en) Simulation apparatus and simulation method
US20170131985A1 (en) Executable code generation program and executable code generation device
JP4503203B2 (ja) 情報処理装置を評価するためのテストプログラムを作成する方法、装置、およびそのための処理を記述したプログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050801

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050809

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050930

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20051129

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051227

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees