JP2000242529A - プログラム開発支援装置および開発支援システムおよび記録媒体 - Google Patents

プログラム開発支援装置および開発支援システムおよび記録媒体

Info

Publication number
JP2000242529A
JP2000242529A JP11044361A JP4436199A JP2000242529A JP 2000242529 A JP2000242529 A JP 2000242529A JP 11044361 A JP11044361 A JP 11044361A JP 4436199 A JP4436199 A JP 4436199A JP 2000242529 A JP2000242529 A JP 2000242529A
Authority
JP
Japan
Prior art keywords
program
data
execution
microcomputer
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP11044361A
Other languages
English (en)
Inventor
Shintaro Tsubata
真太郎 津幡
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP11044361A priority Critical patent/JP2000242529A/ja
Publication of JP2000242529A publication Critical patent/JP2000242529A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 マイコン上のプログラム開発を支援するソフ
トウエア開発支援システムであって、シミュレータでの
プログラム実行時間の算出精度を保ったままシミュレー
ション速度の向上を図ったソフトウエア開発支援システ
ムを提供することを目的とする。 【解決手段】 データ依存の検出およびそのペナルティ
サイクルの算出をプログラムのコンパイル時に行うこと
により、シミュレーション実行時にデータ依存の検出お
よびペナルティサイクルの算出を行う必要がなくなり、
シミュレータのサイクル算出精度を落とさずにシミュレ
ーション速度を高速にすることができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイコン上で実行
されるプログラムの開発を支援する開発支援装置および
システムに係り、特にマイコンの動作を模擬するシミュ
レータを用いてプログラムの実行サイクル数を評価する
開発支援装置およびシステムに関する。
【0002】
【従来の技術】近年の電子技術の発展により、家電機器
などの組み込み機器においてもマイコンなどを組み込
み、プログラム開発を伴った機器開発が行われている。
【0003】組み込み機器開発においては、リアルタイ
ム応用など高速処理実現と低コスト実現の両立が求めら
れ、より正確な性能評価およびそれに基づいた性能向上
が求められる。また、機器開発の初期段階では、機器の
性能見積りや成立性の検討のために、プログラムを含め
た評価を行うことが求められる。
【0004】このプログラムの評価では、実機での実行
時間の測定や、使用するマイコンのシミュレータを用い
ての実行時間見積りが行われてきた。
【0005】一般に、シミュレータは、模擬実行を高速
に行うために、マイコンの命令を単位として模擬を行う
命令レベルシミュレータが用いられてきた。しかし、命
令レベルシミュレータでは、マイコンのパイプライン動
作を模擬しないため、速度見積り精度を向上させるため
に、データ依存ペナルティなどの遅延要因の算出などが
模擬実行時に行われている。
【0006】データ依存ペナルティとは、マイコンの命
令実行における制約であり、例えばメモリから読込んで
(ロードして)きたデータをすぐには演算に使えず、一
定サイクル間CPUの命令実行が滞ることである。
【0007】このデータ依存ペナルティを検出するに
は、連続して実行される命令列を走査する必要がある。
【0008】従来技術では、以上述べたようにシミュレ
ータの動作を実機に近付けようとしている。
【0009】
【発明が解決しようとする課題】しかしながら、模擬実
行時に、毎回データ依存ペナルティなどの遅延要因を算
出するため、実行模擬の速度が遅くなるという課題を有
していた。
【0010】本発明の目的は、前記課題に鑑み、データ
依存ペナルティなどの遅延要因の算出を模擬実行前に行
い、模擬実行が高速なシミュレータを備えるプログラム
開発支援装置および開発支援システムを提供することを
目的とする。
【0011】
【課題を解決するための手段】前記課題を解決するため
本発明請求項1記載のプログラム開発支援装置は、マイ
コン上で実行されるプログラムの開発を支援するプログ
ラム開発支援装置であって、前記マイコンのCPU部を
模擬するCPUシミュレーション手段と、前記マイコン
のメモリを模擬するメモリ管理手段と、前記プログラム
を実行した場合に発生するデータ依存による遅延サイク
ル数とそのアドレスを対応付けた対照表を管理するペナ
ルティ情報管理手段と、前記プログラムの実行サイクル
数を算出するサイクル数算出手段を備え、模擬実行時に
前記ペナルティ情報管理手段から遅延サイクル数を取得
し実行サイクル数を算出するよう構成したものである。
【0012】このため、模擬実行時に、毎回データ依存
を算出することがなく、高速に模擬実行が可能となる。
【0013】また、前記課題を解決するため本発明請求
項2記載のプログラム開発支援装置は、マイコン上で実
行されるプログラムの開発を支援するプログラム開発支
援装置であって、前記マイコンのCPU部を模擬するC
PUシミュレーション手段と、前記マイコンのメモリを
模擬するメモリ管理手段と、CPUにおけるデータ依存
による遅延サイクル数を前記プログラムについて模擬実
行前に予め検出するデータ依存検出手段と、前記遅延サ
イクル数をその対応アドレスを対応付けた対照表を管理
するペナルティ情報管理手段と、前記プログラムの実行
サイクル数を算出するサイクル数算出手段を備え、模擬
実行時に前記ペナルティ情報管理手段から遅延サイクル
数を取得し実行サイクル数を算出するよう構成したもの
である。
【0014】このため、模擬実行時に、繰り返し実行さ
れるプログラム部分については、最初の1度だけデータ
依存の算出を行い、それ以降では対照表を参照すること
により算出を行う必要がなく、高速に模擬実行が可能と
なる。
【0015】また、前記課題を解決するため本発明請求
項3記載のデータ生成装置は、マイコン上で実行される
プログラムを入力する手段と、前記プログラムを実行し
た場合に発生するデータ依存による遅延サイクル数を検
出するデータ依存検出手段と、前記遅延サイクル数とデ
ータ依存が発生するアドレスを対応付けた対照表を生成
する対照表生成手段を備え、対照表を出力するよう構成
したものである。
【0016】このため、このデータ依存とアドレスの対
照表を利用するプログラム開発支援装置のシミュレータ
が高速に模擬実行することが可能となる。
【0017】また、前記課題を解決するため本発明請求
項4記載の開発支援システムは、マイコン上で実行され
るプログラムの開発を支援するプログラム開発支援シス
テムであって、マイコン上で実行されるプログラムを入
力する手段と、前記プログラムを実行した場合に発生す
るデータ依存による遅延サイクル数を検出するデータ依
存検出手段と、前記遅延サイクル数とデータ依存が発生
するアドレスを対応付けた対照表を生成する対照表生成
手段と、前記マイコンのCPU部を模擬するCPUシミ
ュレーション手段と、前記マイコンのメモリを模擬する
メモリ管理手段と、前記対照表生成手段で生成された対
照表を入力し管理するペナルティ情報管理手段と、前記
プログラムの実行サイクル数を算出するサイクル数算出
手段を備え、模擬実行時に前記ペナルティ情報管理手段
から遅延サイクル数を取得し実行サイクル数を算出する
よう構成したものである。
【0018】このため、模擬実行時に、毎回データ依存
を算出することがなく、高速に模擬実行が可能となる。
【0019】また、前記課題を解決するため本発明請求
項5記載の機械可読記録媒体は、マイコンプログラムの
機械語コードとその格納アドレスと、前記プログラムを
実行した場合に発生するデータ依存による遅延サイクル
数とその発生アドレスとを含むよう構成したものであ
る。
【0020】
【発明の実施の形態】以下、本発明の実施の形態につい
て説明する。
【0021】(第一の実施の形態)図1は、本発明の第
一の実施の形態における開発支援システムに適用される
システムの一例であり、高級言語によるソフトウエア開
発およびそのシミュレーション、デバッグに係る全体的
なシステムである。
【0022】図1において、105は、開発の対象とな
るアプリケーションを高級言語で記述したソースプログ
ラムである。
【0023】101は、コンパイラであり、ソースプロ
グラム105を入力し、対象とするマイコンに対応した
オブジェクトコード106と、デバッグ情報107を出
力する。
【0024】102は、開発支援システムであり、デバ
ッガ103と、対象マイコンの動作をシミュレーション
するシミュレータ104とから構成される。
【0025】開発支援システム102は、オブジェクト
コード106とデバッグ情報107を入力し、アプリケ
ーションのシミュレーションおよび高級言語レベルでの
デバッグを実現する。
【0026】図2に、前記開発支援システム102の構
成の一例を示す。
【0027】図2において、201はデバッガであり、
デバッグ操作処理部203、実行制御部204、オブジ
ェクトコード管理部205を備える。
【0028】また、202はシミュレータであり、CP
UをシミュレーションするCPUシミュレーション部2
06、内蔵メモリや外付けメモリをシミュレーションす
るメモリ管理部207、シミュレーション実行の時刻を
管理計測する時刻管理部208、データ依存による遅延
サイクル(ペナルティサイクル)数とその発生アドレス
の対照表を管理するペナルティ情報管理部209を備え
る。
【0029】211はオブジェクトコードであり、21
2はデバッグ情報である。
【0030】203は、デバッグ操作処理部であり、オ
ブジェクトコードのロードや実行開始、ブレークアドレ
ス設定などユーザからのデバッガコマンドの入力を受付
け、処理する手段である。
【0031】例えば、オブジェクトコードのロードコマ
ンド処理時には、オブジェクトコード管理部205か
ら、オブジェクトコードを読込み、シミュレータ202
内のペナルティサイクル対照表210にオブジェクトコ
ードの内容を書き込む処理を行う。
【0032】また、実行開始コマンド処理時には、前記
シミュレータ202内のCPUシミュレーション部20
6のプログラムカウンタ(PC)レジスタに開始アドレ
スを設定し、実行制御部204により、前記オブジェク
トコードの実行を開始する。
【0033】実行制御部204は、前記シミュレータ2
02を用いて対象オブジェクトコードの実行を実現す
る。
【0034】シミュレーションの実行は、命令を単位と
して制御可能である。
【0035】前記実行制御部204では、ユーザに指定
されたブレークポイントにオブジェクトコードの実行が
到達するまで、あるいは、既定の停止アドレス(例えば
exit関数のアドレス)に実行が到達するまで、オブ
ジェクトコードの実行が繰り返し行われる。
【0036】210は、ペナルティサイクル対照表であ
り、デバッグ情報212に含まれる。オブジェクトコー
ド管理部205により、シミュレーション実行開始時
に、デバッグ情報212から抽出され、シミュレータ2
02に入力される。
【0037】図3に、前記実行制御部204の動作フロ
ーチャートを示す。
【0038】図3において、ステップ301では、前記
シミュレータ202からCPU内のプログラムカウンタ
レジスタ(PC)の値を読み出し、実行アドレスが既定
の停止アドレス(例えばexit関数)に到達したかを
判定する。到達していれば処理を終了し、到達していな
ければステップ302に進む。
【0039】ステップ302では、前記デバッグ操作処
理部から利用者が指定したブレークアドレスの情報を読
み出し、実行アドレスが当該ブレークアドレスに到達し
たかを判定する。到達していれば処理を終了し、到達し
ていなければステップ303に進む。
【0040】ステップ303では、前記シミュレーショ
ン部202を用いて1命令分のシミュレーションを行
う。
【0041】図4に、CPUシミュレーション部206
の1命令分のシミュレーションを行う場合の動作フロー
チャートを示す。
【0042】図4において、ステップ401では、前記
CPUシミュレーション部206のプログラムカウンタ
(PC)レジスタが指し示すアドレスと1命令の語長で
ある4バイトを前記メモリ管理部207に指定して、そ
のアドレス上のデータを読み込む。また、同時に命令の
読込みに必要なサイクル数を求める。
【0043】ステップ402では、入力した機械語命令
である4バイト長のビットパターンを解析し、命令の種
類および命令実行に必要なデータの入力先および出力先
を求める。ビットパターンには、入力元あるいは出力先
のレジスタの指定番号や即値あるいはメモリ上のアドレ
スが埋込まれている。
【0044】ステップ403では、命令実行に必要なデ
ータを入力する。データの入力元は、命令によって異な
り、レジスタの内容やメモリ上の内容あるいは即値であ
る。入力元がレジスタの内容である場合は、CPUシミ
ュレーション部206の中のレジスタ内容管理領域を参
照することによって、入力値を得る。また、入力元がメ
モリ上の内容の場合は、前記メモリ管理部207に入力
元アドレスおよびデータ長を指定することにより、入力
値を得る。また、同時にデータの読込みに必要なサイク
ル数を求める。また、即値の場合は、ステップ402で
解析した結果を参照する。
【0045】ステップ404では、CPUシミュレーシ
ョン部のプログラムカウンタが指し示す現在の実行アド
レスを、ペナルティ情報管理部209へ入力し、データ
依存ペナルティサイクル数を求める。
【0046】図5に、ペナルティサイクル対照表210
の一例を示す。
【0047】501は、実行アドレスであり、502
は、そのアドレスにおけるペナルティサイクル数であ
る。この対照表に登録されていないアドレスは、ペナル
ティサイクル数が0であることを示す。
【0048】ペナルティサイクル対照表210は、オブ
ジェクトコード管理部205で、デバッグ情報212か
ら抽出される。
【0049】ペナルティ情報管理部209では、ペナル
ティサイクル対照表から入力されてアドレスに該当する
値を検索し、その値をペナルティサイクル数としてCP
Uシミュレーション部206に出力する。
【0050】ステップ405では、前記ステップ402
で解析した結果を用いて命令の種類を判別し、命令の種
類に応じてステップ406a、406b、406c、4
06d、406e、406f、406g、406h、4
06iに進む。
【0051】前記命令がadd命令の場合は、ステップ
406aに進む。ステップ406aでは、add命令の
演算シミュレーションを行う。つまりステップ403で
入力したデータを用いて加算を実行し、演算結果を得
る。
【0052】同様に、前記命令がinc命令の場合は、
ステップ406bに進む。ステップ406bでは、in
c命令の演算シミュレーションを行う。つまりステップ
403で入力したデータと値1の加算を実行し、演算結
果を得る。
【0053】同様に、前記命令がsub命令の場合は、
ステップ406cに進む。ステップ406cでは、su
b命令の演算シミュレーションを行う。つまりステップ
403で入力したデータを用いて減算を実行し、演算結
果を得る。
【0054】同様に、前記命令がcmp命令の場合は、
ステップ406dに進む。ステップ406dでは、cm
p命令の演算シミュレーションを行う。つまりステップ
403で入力したデータによる減算を実行し、演算結果
フラグを得る。
【0055】同様に、前記命令がmul命令の場合は、
ステップ406eに進む。ステップ406eでは、mu
l命令の演算シミュレーションを行う。つまりステップ
403で入力したデータを用いて乗算を実行し、演算結
果を得る。
【0056】同様に、前記命令がclr命令の場合は、
ステップ406fに進む。ステップ406fでは、cl
r命令の演算シミュレーションを行う。つまり演算結果
として0を得る。
【0057】同様に、前記命令がmov命令の場合は、
ステップ406gに進む。ステップ406gでは、mo
v命令の演算シミュレーションを行う。つまりステップ
403で入力したデータを演算結果とする。
【0058】同様に、前記命令がjmp命令の場合は、
ステップ406hに進む。ステップ406hでは、jm
p命令の演算シミュレーションを行う。つまりステップ
402での解析結果からジャンプ先のアドレスを入力し
て、CPUシミュレーション部206のプログラムカウ
ンタレジスタに格納する。
【0059】同様に、前記命令がbge命令の場合は、
ステップ406iに進む。ステップ406iでは、bg
e命令の演算シミュレーションを行う。つまりCPUシ
ミュレーション部206からプロセッサ状態語レジスタ
PSWの値を読み出し、フラグを参照して、条件が成立
している場合(演算結果フラグが正あるいは0)に、ス
テップ402での解析結果からジャンプ先のアドレスを
入力して、CPUシミュレーション部206のプログラ
ムカウンタレジスタに格納する。
【0060】ステップ406a、406b、406c、
406d、406e、406f、406gでは、次に処
理終了後ステップ407に進む。
【0061】ステップ406h、406iでは、次に処
理終了後ステップ408に進む。
【0062】ステップ406a、406b、406c、
406d、406e、406f、406g、406hお
よび406iでは、それぞれ命令の実行にかかるサイク
ル数を求める。これは、命令の種類およびその実行時の
CPUの状態により決定され、求まる。
【0063】ステップ407では、CPUシミュレーシ
ョン部206のプログラムカウンタレジスタの値を入力
し、値4を加算して格納する。これによりプログラム実
行が逐次的に行われる。
【0064】ステップ408では、ステップ406a、
406b、406c、406d、406e、406f、
406gで得られた演算結果を、ステップ402での解
析で判別した出力先に格納する。演算結果の出力先は、
命令によって異なり、レジスタやメモリ上の領域であ
る。出力先がレジスタである場合は、CPUシミュレー
ション部206の中のレジスタ内容管理領域へ格納す
る。また、出力先がメモリ上の領域の場合は、前記メモ
リ管理部207に出力先アドレスと出力データおよび出
力データ長を指定することにより、出力を行う。
【0065】ステップ409では、命令の読込みにかか
るサイクル数(時間)、命令の実行に必要となるデータ
の入力にかかるサイクル数、命令の実行にかかるサイク
ル数、演算結果の格納にかかるサイクル数およびステッ
プ404で取得したデータ依存ペナルティサイクル数な
どから1命令実行に必要なサイクル数を全て算出し、前
記時刻管理部208へ出力する。
【0066】時刻管理部208は、1命令ごとのサイク
ル数を合計していくことにより、実行プログラムのサイ
クル数を求める。
【0067】図7に、マイコンのCPUの構成およびメ
モリとの関係を示す。
【0068】図7において、701はCPUであり、プ
ログラム実行時に主にデータを格納するデータレジスタ
(D0、D1、D2、D3)703、704、705、
706と、主にアドレスを格納するアドレスレジスタ
(A0、A1、A2、A3)707、708、709、
710と、演算結果フラグを格納するプロセッサ状態語
レジスタ(PSW)711と、プログラム実行アドレス
を指し示すプログラムカウンタレジスタ(PC)712
と、スタック領域のアドレスを指し示すスタックポイン
タレジスタ(SP)713と、各種演算を行う演算器7
14から構成される。
【0069】702は、メモリ領域のモデルである。7
02に示すように、メモリ領域は、プログラム自体であ
る実行コードを格納する実行コード格納領域715と主
にグローバルなデータを格納するデータ領域716と主
にローカルなデータを格納するスタック領域717から
構成される。このメモリ領域には、すべてアドレスが割
振られ、CPUからはアドレスによりアクセスが行われ
る。
【0070】この構成において、マイコンは、実行コー
ド格納領域715に格納されている命令を読込み、読込
んだ命令に従って各種レジスタあるいはメモリ702上
のデータを用いて演算を行う。
【0071】図8に、ソースプログラムの一例を示す。
【0072】図8に示すソースプログラムは、高級言語
の一つであるC言語によって記述されている。
【0073】なお、図8において、各行の左端の『数
字:』は、説明のために付与した行番号である。
【0074】図8のソースプログラムにおいて、1行目
は、グローバル変数でint(整数)型変数xとyの宣
言を示す。
【0075】3行目から10行目までが、関数main
の定義部分である。
【0076】関数mainでは、4行目に示すように、
ローカル変数でint(整数)型変数iを用いて、6行
目から9行目に示すように、変数iを0から99まで増
加させて、7、8行目に示す演算を繰り返し行う処理が
記述されている。
【0077】図9に、オブジェクトコードに対応するア
センブラ記述による説明図を示す。
【0078】オブジェクトコードは、対象とするマイコ
ンの機械語命令で表現され、アドレスとそのアドレスに
格納する値が情報として記述される。
【0079】図9では、説明のため機械語命令と対応す
るアセンブラ記述を示しているが本質的には前記2つは
同一の情報を表現する。
【0080】また、全ての機械語命令は、4バイトの長
さのビットパターンである。
【0081】なお、図9において、各行の左端の『数
字:』は、説明のために付与した行番号であり、左端2
番目の16進数による表記は、その命令あるいはデータ
が格納されるアドレスを示す。例えば、3行目の命令
『add −4,SP』に対応するオブジェクトコード
は、アドレス0x100番地に格納され、33行目に示
すデータxに対応するデータは、アドレス0x400番
地に格納される。
【0082】図9において、1行目から30行目まで
は、実行コード部分である。
【0083】1行目は、アセンブラ記述での擬似命令で
あり、1行目に続く部分が実行コードであることを示
す。
【0084】また、33行目から35行目は、データ領
域部分であり、33行目は、以下に続く部分がデータ領
域であることを示すアセンブラ擬似命令である。
【0085】34行目は、アドレス0x400番地に4
バイト分の領域を割当ることを示す。
【0086】同様に、35行目は、アドレス0x410
番地に4バイト分の領域を割当ることを示す。
【0087】後述するシンボル情報によって、アドレス
0x100番地が前記C言語プログラム上の関数mai
nの先頭番地に対応付けられ、また、アドレス0x40
0番地が変数xに、同様にアドレス0x410番地が変
数yに対応付けられる。
【0088】下記に3行目から30行目に記述されてい
る実行コードで用いられているアセンブラ記述とマイコ
ンの命令の対応を示す。
【0089】(1)add 『加算データ』,『被加算
データ』 『加算データ』で示されるレジスタあるいはメモリの内
容あるいは即値を『被加算データ』で示されるレジスタ
の内容に加算して、結果を『被加算データ』で示される
レジスタに格納する。例えば、3行目の記述は、即値−
4をスタックポインタレジスタ(SP)の内容に加算し
て、加算結果をスタックポインタレジスタに格納する命
令である。また、18行目の記述は、データレジスタD
0の内容をデータレジスタD1の内容に加算して、加算
結果をデータレジスタD1へ格納する命令である。
【0090】(2)clr 『対象レジスタ』 『対象レジスタ』で示されるレジスタの内容を値0にす
る。例えば、4行目の記述は、データレジスタD0の内
容を0にする命令である。
【0091】(3)inc 『対象レジスタ』 『対象レジスタ』で示されるレジスタの内容を1増加し
て格納する。例えば、22行目の記述は、データレジス
タD0の内容を1増加して格納する命令である。
【0092】(4)sub 『減算データ』,『被減算
データ』 『減算データ』で示されるレジスタあるいはメモリの内
容あるいは即値を『被減算データ』で示されるレジスタ
の内容から減算して、結果を『被減算データ』で示され
るレジスタに格納する。例えば、14行目の記述は、デ
ータレジスタD1の内容をデータレジスタD0の内容か
ら減算して、減算結果をデータレジスタD0に格納する
命令である。
【0093】(5)cmp 『減算データ』,『被減算
データ』 『減算データ』で示されるレジスタあるいはメモリの内
容あるいは即値を『被減算データ』で示されるレジスタ
の内容から減算して、結果のフラグ(結果が正である、
結果が負である、結果0である)をプロセッサ状態語レ
ジスタPSWに反映する。sub命令と異なり、減算結
果は、レジスタには格納されない。
【0094】例えば、26行目の記述は、データレジス
タD0から即値100を減算して、その結果フラグをプ
ロセッサ状態語レジスタPSWに反映する命令である。
【0095】(6)mov 『転送元データ』,『転送
先データ』 『転送元データ』で示されるレジスタあるいはメモリの
内容あるいは即値を『転送先データ』で示されるレジス
タあるいはメモリへ転送する。例えば、5行目の記述
は、データレジスタD0の内容をアドレス0x410番
地から始まる1ワード(4バイト)分のメモリ上の領域
に転送する命令である。また、例えば、10行目の記述
は、スタックポインタレジスタSPの内容が指し示すメ
モリ上の1ワード分の領域の内容を、データレジスタD
0へ格納する命令である。
【0096】(7)jmp 『ジャンプ先』 『ジャンプ先』で示されるアドレスへ、プログラム実行
の制御を変更する。
【0097】例えば、8行目の記述は、0x150番地
(25行目)にプログラム実行の制御を変更する命令で
ある。
【0098】なお、このようなジャンプ命令以外は、プ
ログラム実行は逐次的に行われる。例えば、0x100
番地(3行目)の命令の次は0x104番地(4行目)
の命令が実行される。
【0099】(8)mul 『乗算データ』,『被乗算
データ』 『乗算データ』で示されるレジスタの内容を、『被乗算
データ』で示されるレジスタの内容に乗じて、乗算結果
を『被乗算データ』で示されるレジスタに格納する。例
えば、12行目の記述は、データレジスタD1の内容を
データレジスタD0の内容に乗算して、その乗算結果を
データレジスタD0に格納する命令である。
【0100】(9)bge 『ジャンプ先』 プロセッサ状態語レジスタのフラグが正あるいは0の場
合に、『ジャンプ先』で示されるアドレスへ、プログラ
ム実行の制御を変更する。例えば、27行目の記述は、
フラグが正あるいは0の場合に、0x160番地(30
行目)にプログラム実行の制御を変更する命令である。
【0101】(10)ret サブルーチン呼び出し元へプログラムの制御を変更す
る。
【0102】しかし、オブジェクトコードには、前記説
明したようなC言語での関数あるいは変数との対応付け
の情報はなく、実際には次に説明するシンボル情報で示
される。
【0103】図10に、デバッグ情報の一例を示す。
【0104】なお、図10において、各行の左端の『数
字:』は、説明のために付与した行番号である。
【0105】1行目から15行目までは、シンボル情報
であり、高級言語上の変数名や関数名などシンボルとオ
ブジェクトコード上でのアドレスとの対応付けを行う情
報である。17行目から18行目までは、ペナルティ情
報であり、実行アドレスとそのアドレスで発生するペナ
ルティサイクル数を示す情報である。このペナルティ情
報が、オブジェクトコード管理部205で抽出され、ペ
ナルティサイクル対照表210として管理される。
【0106】図10において、1行目から6行目では、
シンボル″main″が関数であり、その開始アドレス
が0x100番地であり、関数の引数および戻り値がv
oid型であり、加えて関数main内のローカル変数
iがスタックポインタ(SP)レジスタが指すアドレス
に割付られており、その型がint(整数)型であるこ
とを示している。
【0107】また、9行目から11行目までには、シン
ボル″x″がグローバル変数であり、その開始アドレス
が0x400番地であり、その型がint(整数)型で
あることを示している。
【0108】同様に、13行目から15行目では、シン
ボル″y″がグローバル変数であり、その開始アドレス
が0x410番地であり、その型がint(整数)型で
あることを示している。
【0109】17行目、18行目は、ペナルティ情報で
あり、17行目は、アドレス0x11Cでは、1サイク
ルのペナルティによる遅延が発生することを示してい
る。同様に、18行目は、アドレス0x128で、1サ
イクルのペナルティサイクルが発生することを示してい
る。
【0110】図12において、1201は、アドレス0
x00000000番地から0x00003FFF番地
までのアドレス空間のデータ内容を保持管理する領域で
ある。同様に、1202はアドレス0x4000000
0番地から0x40003FFF番地までのアドレス空
間のデータ内容を、1203は0x80000000番
地から0x80003FFF番地までのアドレス空間の
データ内容を保持管理する領域である。
【0111】ステップ1003では、アクセスにかかる
サイクル数を算出する。シミュレーション対象のメモリ
のウエイト数およびメモリとプロセッサ間のバス幅など
の情報からサイクル数を算出する。
【0112】同様に、データリード動作の場合は、ステ
ップ1004では、ステップ1002と同様に、メモリ
管理部内のメモリデータ格納領域を参照し、指定アドレ
スのメモリデータを得る。
【0113】ステップ1005では、ステップ1003
と同様に、アクセスにかかるサイクル数を算出する。
【0114】同様に、データライト動作の場合は、ステ
ップ1006では、メモリ管理部207内のメモリデー
タ格納領域のデータ内容を変更する。
【0115】ステップ1007では、ステップ1003
と同様に、アクセスにかかるサイクル数を算出する。
【0116】また、ダイレクトリード動作の場合は、ス
テップ1008において、直接メモリデータ格納領域の
データを参照する。
【0117】同様に、ダイレクトライト動作の場合は、
ステップ1009において、直接メモリデータ格納領域
のデータを変更する。
【0118】図6に、前記コンパイラ101の構成の一
例を示す。
【0119】図6において、601はソースプログラム
入力部で、ソースプログラムを入力する。
【0120】602はプログラム変換部でソースプログ
ラムを中間記述レベル表現に変換する。
【0121】603はプログラム最適化部で中間記述レ
ベル表現のプログラム中のオペレーションを移動して実
行順序を変更することや不要なオペレーションを削除す
ることによって最適化を行いつつ実行コードを生成す
る。
【0122】604はデータ依存検出部で、前記プログ
ラム最適化部でのデータ解析より得られたデータ連鎖情
報に基づいて、対象マイコンでのデータ依存によるペナ
ルティサイクル数を求め、該当アドレスとともにペナル
ティサイクル対照表609に登録する。
【0123】605は対照表出力部で、対照表の情報を
デバッグ情報107に追記して出力する。
【0124】606は実行コード出力部でプログラム最
適化部によって生成された実行コードをオブジェクトコ
ード106として出力する。
【0125】607はデバッグ情報生成部でデバッグに
必要な識別子や行番号と実行コードの関連付けなどのデ
バッグ情報を生成する。
【0126】608はデバッグ情報出力部でデバッグ情
報生成部607によって生成されたデバッグ情報をデバ
ッグ情報107として出力する。
【0127】図11に、前記データ依存検出部の動作フ
ローチャートを示す。
【0128】ステップ1101では、前記プログラム最
適化部からデータの使用定義連鎖情報を取得し、全ての
使用定義連鎖情報についてステップ1102、1103
の処理を繰り返す。
【0129】ステップ1102では、使用定義連鎖情報
の定義側の命令がロード命令でかつ使用側が直後の命令
かどうかを判定する。条件が成り立てばステップ110
3に進み、成り立たなければステップ1101に戻る。
【0130】ステップ1103では、対象マイコンのロ
ードユースペナルティサイクル数を求め、ペナルティサ
イクル対照表609にアドレスとともに登録する。
【0131】図12に、データ使用定義連鎖情報の一例
を示す。
【0132】1201は、データ使用定義連鎖情報番号
である。
【0133】1202は、該当する命令コードである。
【0134】1203は、UDリストであり、該当命令
コードで使用する資源を定義している命令コードを指し
示すリストであり、リストの要素はデータ使用定義連鎖
情報番号である。
【0135】1204は、DUリストであり、該当命令
コードで定義する資源を使用している命令コードを指し
示すリストであり、リストの要素はデータ使用定義連鎖
情報番号である。
【0136】例えば、データ使用定義連鎖情報番号1
は、「mov D0,D1」命令コードに関してであ
り、この命令コードで使用される資源D0を定義してい
る命令は、データ使用定義連鎖情報番号0で示される命
令コードであり、この命令コードで定義される資源D1
を使用する命令は、データ使用定義連鎖情報番号2で示
される命令コードであることを示している。データ使用
定義連鎖情報は、データの依存関係を調べるためにプロ
グラム最適化部で生成される。
【0137】以上のように本発明の第一の実施の形態に
よれば、データ依存の検出およびそのペナルティサイク
ルの算出をプログラムのコンパイル時に行うことによ
り、シミュレーション実行時にデータ依存の検出および
ペナルティサイクルの算出を行う必要がなくなり、シミ
ュレータのサイクル算出精度を落とさずにシミュレーシ
ョン速度を高速にすることができる。
【0138】(第二の実施の形態)図13は、本発明の
第二の実施の形態における開発支援システム102の構
成の一例である。
【0139】図13において、201、202、20
3、204、205、206、207、208は、図2
と同様である。
【0140】1311は、データ依存検出部であり、C
PUシミュレーション部206から現実行アドレス及び
現命令とその直後の命令で使用する資源(レジスタ)の
リスト情報を入力し、記憶する。ここで、データ依存検
出に複数個の後続する命令が必要な場合は、そのすべて
の命令について入力する。また、現実行するアドレスに
おいて、データ依存が発生していればそのデータ依存に
基づく遅延サイクル数(ペナルティサイクル数)をペナ
ルティ情報管理部1309に出力する。
【0141】1309は、ペナルティ情報管理部であ
り、CPUシミュレーション部206から現実行アドレ
スを入力し、ペナルティサイクル対照表を検索し、ペナ
ルティサイクルを時刻管理部208に出力する。
【0142】1310は、ペナルティサイクル対照表で
ある。
【0143】図14に、データ依存検出部1311の動
作フローチャートを示す。
【0144】ステップ1401で、現実行アドレスの命
令がロード命令かどうかを判定する。ロード命令でない
場合は処理を終了し、ロード命令の場合はステップ14
02に進む。
【0145】ステップ1402では、現アドレスがペナ
ルティサイクル対照表に既に登録されているか調べる。
登録されていなければ、ステップ1403に進み、既に
登録されていれば、処理を終了する。
【0146】ステップ1403では、現命令で参照して
いる資源が直前命令でロード命令によって更新されてい
るかを判定する。更新されていれば、ステップ1404
に進み、更新されていなければ、ロードユースによるデ
ータ依存はないものとして、処理を終了する。
【0147】ステップ1404では、ロードユースによ
るデータ依存の遅延サイクル数をペナルティ対照表に現
アドレスと対応付けてペナルティサイクル対照表に登録
する。
【0148】図15に、ペナルティサイクル対照表13
10の一例を示す。
【0149】1501は、実行アドレスであり、150
2は、そのアドレスにおけるペナルティサイクル数であ
る。ペナルティサイクル数が0の場合は、データ依存が
そのアドレスで発生していないことを示し、1以上の場
合は、そのサイクル数である。この対照表に登録されて
いないアドレスは、データ依存の検出が行われていない
ことを示す。
【0150】以上のように本発明の第二の実施の形態に
よれば、繰り返し実行されるプログラム部分について、
データ依存の検出およびそのペナルティサイクルの算出
を最初の1回の実行時に限り行うことにより、2回目以
降のシミュレーション実行時にデータ依存の検出および
ペナルティサイクルの算出を行う必要がなくなり、シミ
ュレータのサイクル算出精度を落とさずにシミュレーシ
ョン速度を高速にすることができる。
【0151】
【発明の効果】以上説明したように本発明によれば、マ
イコンのプログラムを評価、開発する際に、シミュレー
タのサイクル数算出の精度を保ったまま、シミュレーシ
ョンの速度を向上させることができ、機器開発の効率化
が図れるという効果がある。
【図面の簡単な説明】
【図1】本発明の実施の形態における開発支援システム
に適用されるシステムのブロック図
【図2】本発明の第一の実施の形態における開発支援シ
ステムのブロック図
【図3】実行制御部204の動作フローチャート
【図4】CPUシミュレーション部206の動作フロー
チャート
【図5】本発明の第一の実施の形態におけるペナルティ
サイクル対照表の例を示す図
【図6】コンパイラの構成図
【図7】マイコン動作モデルを示す図
【図8】ソースプログラムの説明図
【図9】オブジェクトコードの説明図
【図10】デバッグ情報の説明図
【図11】本発明の第一の実施の形態におけるデータ依
存検出部の動作フローチャート
【図12】本発明の第一の実施の形態における使用定義
連鎖情報の例を示す図
【図13】本発明の第二の実施の形態における開発支援
システムのブロック図
【図14】データ依存検出部の動作フローチャート
【図15】本発明の第二の実施の形態におけるペナルテ
ィサイクル対照表の例を示す図
【符号の説明】
101 コンパイラ 102 開発支援システム 103 デバッガ 104 シミュレータ 105 ソースプログラム 106 オブジェクトコード 107 デバッグ情報 201 デバッガ 202 シミュレータ 203 デバッグ操作処理部 204 実行制御部 205 オブジェクトコード管理部 206 CPUシミュレーション部 207 メモリ管理部 208 時刻管理部 209 ペナルティ情報管理部 210 ペナルティサイクル対照表 211 オブジェクトコード 212 デバッグ情報 601 ソースプログラム入力部 602 プログラム変換部 603 プログラム最適化部 604 データ依存検出部 605 対照表出力部 606 実行コード出力部 607 デバッグ情報生成部 608 デバッグ情報出力部 609 ペナルティサイクル対照表 701 CPU 702 メモリ 703、704、705、706 データレジスタ 707、708、709、710 アドレスレジスタ 711 プロセッサ状態語レジスタ 712 プログラムカウンタレジスタ 713 スタックポインタレジスタ 714 演算器 715 実行コード格納領域 716 データ格納領域 717 スタック領域 1309 ペナルティ情報管理部 1310 ペナルティサイクル対照表 1311 データ依存検出部

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 マイコン上で実行されるプログラムの開
    発を支援するプログラム開発支援装置において、 前記マイコンのCPU部を模擬するCPUシミュレーシ
    ョン手段と、 前記マイコンのメモリを模擬するメモリ管理手段と、 前記プログラムを実行した場合に発生するデータ依存に
    よる遅延サイクル数とそのアドレスを対応付けた対照表
    を管理するペナルティ情報管理手段と、 前記プログラムの実行サイクル数を算出するサイクル数
    算出手段を備え、 模擬実行時に前記ペナルティ情報管理手段から遅延サイ
    クル数を取得し実行サイクル数を算出することを特徴と
    するプログラム開発支援装置。
  2. 【請求項2】 マイコン上で実行されるプログラムの開
    発を支援するプログラム開発支援装置において、 前記マイコンのCPU部を模擬するCPUシミュレーシ
    ョン手段と、 前記マイコンのメモリを模擬するメモリ管理手段と、 CPUにおけるデータ依存による遅延サイクル数を前記
    プログラムについて模擬実行前に予め検出するデータ依
    存検出手段と、 前記遅延サイクル数をその対応アドレスを対応付けた対
    照表を管理するペナルティ情報管理手段と、 前記プログラムの実行サイクル数を算出するサイクル数
    算出手段を備え、 模擬実行時に前記ペナルティ情報管理手段から遅延サイ
    クル数を取得し実行サイクル数を算出することを特徴と
    するプログラム開発支援装置。
  3. 【請求項3】 マイコン上で実行されるプログラムを入
    力する手段と、 前記プログラムを実行した場合に発生するデータ依存に
    よる遅延サイクル数を検出するデータ依存検出手段と、 前記遅延サイクル数とデータ依存が発生するアドレスを
    対応付けた対照表を生成する対照表生成手段を備えるこ
    とを特徴とするデータ生成装置。
  4. 【請求項4】 マイコン上で実行されるプログラムの開
    発を支援するプログラム開発支援システムにおいて、 マイコン上で実行されるプログラムを入力する手段と、 前記プログラムを実行した場合に発生するデータ依存に
    よる遅延サイクル数を検出するデータ依存検出手段と、 前記遅延サイクル数とデータ依存が発生するアドレスを
    対応付けた対照表を生成する対照表生成手段と、 前記マイコンのCPU部を模擬するCPUシミュレーシ
    ョン手段と、 前記マイコンのメモリを模擬するメモリ管理手段と、 前記対照表生成手段で生成された対照表を入力し管理す
    るペナルティ情報管理手段と、 前記プログラムの実行サイクル数を算出するサイクル数
    算出手段を備え、 模擬実行時に前記ペナルティ情報管理手段から遅延サイ
    クル数を取得し実行サイクル数を算出することを特徴と
    するプログラム開発支援システム。
  5. 【請求項5】 マイコンプログラムの機械語コードとそ
    の格納アドレスと、 前記プログラムを実行した場合に発生するデータ依存に
    よる遅延サイクル数とその発生アドレスとを含むことを
    特徴とする機械可読記録媒体。
JP11044361A 1999-02-23 1999-02-23 プログラム開発支援装置および開発支援システムおよび記録媒体 Pending JP2000242529A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11044361A JP2000242529A (ja) 1999-02-23 1999-02-23 プログラム開発支援装置および開発支援システムおよび記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11044361A JP2000242529A (ja) 1999-02-23 1999-02-23 プログラム開発支援装置および開発支援システムおよび記録媒体

Publications (1)

Publication Number Publication Date
JP2000242529A true JP2000242529A (ja) 2000-09-08

Family

ID=12689380

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11044361A Pending JP2000242529A (ja) 1999-02-23 1999-02-23 プログラム開発支援装置および開発支援システムおよび記録媒体

Country Status (1)

Country Link
JP (1) JP2000242529A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010286892A (ja) * 2009-06-09 2010-12-24 Mitsubishi Electric Corp 処理時間見積り装置および処理時間見積りプログラム
WO2011058946A1 (ja) * 2009-11-10 2011-05-19 株式会社日立製作所 実行命令数計測方法、実行クロック数計測方法及び計算機システム
US10564992B2 (en) 2013-04-18 2020-02-18 Fujitsu Limited Simulation apparatus and storage medium

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010286892A (ja) * 2009-06-09 2010-12-24 Mitsubishi Electric Corp 処理時間見積り装置および処理時間見積りプログラム
WO2011058946A1 (ja) * 2009-11-10 2011-05-19 株式会社日立製作所 実行命令数計測方法、実行クロック数計測方法及び計算機システム
JP2011103026A (ja) * 2009-11-10 2011-05-26 Hitachi Ltd 実行命令数計測方法、実行クロック数計測方法及び計算機システム
US10564992B2 (en) 2013-04-18 2020-02-18 Fujitsu Limited Simulation apparatus and storage medium

Similar Documents

Publication Publication Date Title
US6973417B1 (en) Method and system for simulating execution of a target program in a simulated target system
Engblom Processor pipelines and static worst-case execution time analysis
JP2637914B2 (ja) テスト・プログラム・ジェネレータ及びテスト・プログラムを生成する方法
US20100268523A1 (en) System Level Power Profiling of Embedded Applications Executing on Virtual Multicore System-on-Chip Platforms
US8086438B2 (en) Method and system for instruction-set architecture simulation using just in time compilation
JP2002230065A (ja) システムlsi開発装置およびシステムlsi開発方法
Wang et al. Accurate source-level simulation of embedded software with respect to compiler optimizations
US7266791B2 (en) High level synthesis device, method for generating a model for verifying hardware, method for verifying hardware, control program, and readable recording medium
US7684971B1 (en) Method and system for improving simulation performance
Lee et al. Timed compiled-code simulation of embedded software for performance analysis of SOC design
Mitchell et al. A workbench for computer architects
JP4342392B2 (ja) ソフトウェア検証モデル生成方法
Wolf et al. Execution cost interval refinement in static software analysis
JP2000242529A (ja) プログラム開発支援装置および開発支援システムおよび記録媒体
Jünger et al. Fast SystemC processor models with unicorn
Letychevskyi et al. Fuzz Testing Technique and its Use in Cybersecurity Tasks
US20030070117A1 (en) Simulation apparatus and simulation method
JPH10320212A (ja) キャッシュ向け最適化方法
JPH1173329A (ja) ソフトウエア開発支援システム
JPH096646A (ja) プログラムシミュレーション装置
JP6740607B2 (ja) シミュレーションプログラム、情報処理装置、シミュレーション方法
Saastamoinen et al. Application workload model generation methodologies for system-level design exploration
JP3214459B2 (ja) シミュレーション方法及び装置
Kirchhof et al. Simulation of model execution for embedded systems
Bartsch et al. Efficient SAT/simulation-based model generation for low-level embedded software.