JPH1173329A - ソフトウエア開発支援システム - Google Patents

ソフトウエア開発支援システム

Info

Publication number
JPH1173329A
JPH1173329A JP10013878A JP1387898A JPH1173329A JP H1173329 A JPH1173329 A JP H1173329A JP 10013878 A JP10013878 A JP 10013878A JP 1387898 A JP1387898 A JP 1387898A JP H1173329 A JPH1173329 A JP H1173329A
Authority
JP
Japan
Prior art keywords
information
cache
data
symbol
access
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
JP10013878A
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 JP10013878A priority Critical patent/JPH1173329A/ja
Publication of JPH1173329A publication Critical patent/JPH1173329A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】キャッシュメモリへのアクセスの状況を高級言
語レベルで検出し、キャッシュメモリのヒット率が向上
するようにシンボルの割付情報を生成することにより、
キャッシュメモリ塔載プロセッサ上のプログラム開発を
支援するソフトウエア開発支援システムを提供する。 【解決手段】 プロセッサの動作をシミュレーションす
るシミュレータ202と、キャッシュメモリへのアクセ
スに関する情報を採取するキャッシュアクセス情報採取
部207と、プログラムのシンボル情報を管理するシン
ボル情報管理部206と、プログラムのシンボルの配置
を変更するためのシンボル配置変更情報を生成するシン
ボル配置変更情報生成部208とを備えている。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、キャッシュメモ
リを塔載するプロセッサ上で実行されるプログラムの開
発を支援するソフトウエア開発支援システムに関するも
のである。
【0002】
【従来の技術】近年の電子技術の発展により、家電機器
などの組み込み機器においてもマイクロコンピュータな
どプロセッサを組み込み、プログラム開発を伴った機器
開発が行われている。加えて、組み込み機器の高機能化
に伴い、プログラムが大規模になり、プログラムの開発
および保守の効率化のため、C言語など高級言語による
プログラム開発が行われている。
【0003】また、プログラムの大規模化に従い、大容
量のメモリがプログラムのコード格納やデータ格納のた
めに必要とされている。さらに、プログラムの処理の高
速化のため、メモリアクセスを高速にするキャッシュメ
モリ塔載のプロセッサが組み込み機器に用いられてい
る。図3に、キャッシュメモリ塔載のプロセッサのシス
テム構成の一例を示す。図3において、点線で囲まれた
部分がプロセッサであり、601はCPU(中央演算装
置)であり各種演算を行う。602は、プロセッサの外
部に存在する主記憶装置であり、プログラム実行コード
(オブジェクトコード)およびデータを記憶する。60
3はキャッシュメモリであり、主記憶装置へのアクセス
を高速化するために機能する。604はバスであり、こ
のバスを用いて、CPU601、主記憶装置602、キ
ャッシュメモリ603の間でデータが転送される。
【0004】このようなプロセッサにおける、キャッシ
ュメモリの機能について説明する。主記憶装置602上
のアドレスに対する読込みアクセスの場合には、そのア
ドレスおよびそのデータがキャッシュメモリ603の対
応するアドレス上に登録されていれば(キャッシュヒッ
トと呼ぶ)、そのキャッシュメモリ603上のデータが
参照され、そのアクセスが高速に実行される。
【0005】また、アドレスおよびデータがキャッシュ
メモリ603上に未登録であれば(キャッシュミス)、
主記憶装置602上のデータが読込まれると同時に、ア
ドレスとデータがキャッシュメモリ603上に登録され
る。この場合のアクセス時間は、はキャッシュヒット時
に比べて大きい。同様に、主記憶装置602上のアドレ
スに対する書きこみアクセスの場合は、そのアドレスお
よびそのデータがキャッシュメモリ603の対応するア
ドレス上に登録されていれば(キャッシュヒット)、そ
のキャッシュメモリ603上のデータのみが更新される
ことにより、そのアクセスが高速に実行される。
【0006】また、そのアドレスおよびデータがキャッ
シュメモリ603上に未登録であれば(キャッシュミ
ス)、主記憶装置602上のデータおよびそのアドレス
とデータがキャッシュメモリ603上に登録されると同
時にキャッシュメモリ603上のデータのみが更新され
る。この場合のアクセス時間は、キャッシュヒット時に
比べて大きい。
【0007】なお、主記憶装置上のアドレスとキャッシ
ュメモリ上への対応づけの方式には、主記憶装置上の1
つのアドレスに1つのキャッシュメモリ上のアドレスが
対応づくダイレクトマップ方式や、2つのキャッシュメ
モリ上のアドレスが対応づく2ウエイセットアソシエイ
ティブ方式など幾つかの方式がある。また、キャッシュ
メモリの方式によってキャッシュメモリへの書きこみと
同時につねに主記憶装置上へも書きこみが行われる方式
(ライトスルー方式)もある。
【0008】以上説明したようなキャッシュメモリ60
3を塔載したプロセッサにおいて、実行されるプログラ
ムの性能評価および性能向上は、プログラム実行時のキ
ャッシュヒット、キャッシュミスの状況を考慮し行う必
要がある。加えて、組み込み機器開発においては、リア
ルタイム応用など高速処理実現と低コスト実現の両立が
求められ、より正確な性能評価およびそれに基いた性能
向上が求められる。
【0009】しかし、従来は、性能評価として、実機で
の実行時間の測定や、またシミュレーションによるサイ
クル数の見積もりなどが行われてきた。また、キャッシ
ュ塔載のプロセッサを対象とする場合は、性能評価の指
標としてキャッシュのヒット率つまりアクセス回数に対
するキャッシュヒットの比率が専ら用いられてきた。
【0010】このような性能評価を行い、速度要求を満
していないプログラムのサブルーチンなど特定部分につ
いては、利用者がプログラムを変更し、速度の改善を図
ってきた。プログラム変更の一つの方法は、キャッシュ
ヒット率を向上させ、メモリアクセスの速度を向上させ
ることであり、例えば、キャッシュヒット率が向上する
ように、プログラムで使用するデータの割付けアドレス
を変更することである。
【0011】
【発明が解決しようとする課題】しかしながら、従来の
方法においてキャッシュヒット率だけではその詳細な状
況は判らず、また、シミュレーションにおけるプログラ
ム動作のトレース結果では、トレースされる対象がアド
レスだけであり、実際に利用者が変更する対象である高
級言語レベルのプログラムには対応しておらず、性能向
上のためのプログラム変更が困難であるという問題を有
していた。
【0012】この発明は、上記の課題に鑑み、キャッシ
ュメモリへのアクセスの状況を高級言語レベルで検出
し、キャッシュメモリのヒット率が向上するようにシン
ボルの割付情報を生成することにより、キャッシュメモ
リ塔載プロセッサ上のプログラム開発を支援するソフト
ウエア開発支援システムを提供することを目的とする。
また、キャッシュミスの分類の1つとして、キャッシュ
メモリの1つのエントリに複数の主記憶上のブロック
(アドレス)が対応するために起因する競合性ミスがあ
る。このキャッシュミスは、複数の主記憶上のブロック
が1つのエントリに対応づかないようにプログラムを変
更してやれば解決できる可能性があるキャッシュミスで
ある。
【0013】この発明は、したがって上記の課題に鑑
み、キャッシュミスのうち特に競合性ミスを検出し競合
しているシンボルを競合しないようにシンボルの割付情
報を生成することにより、キャッシュメモリ塔載プロセ
ッサ上のプログラム開発を支援するソフトウエア開発支
援システムを提供することを目的とする。さらにこの発
明は、上記の課題に鑑み、キャッシュメモリへのアクセ
スの状況を高級言語レベルで利用者に表示し、キャッシ
ュメモリ搭載プロセッサ上のプログラムを支援するソフ
トウエア開発支援システムを提供することを目的とす
る。
【0014】
【課題を解決するための手段】請求項1記載のソフトウ
エア開発支援システムは、キャッシュメモリを塔載する
プロセッサ上で実行されるプログラムのソフトウエア開
発支援システムであって、プロセッサの動作をシミュレ
ーションするシミュレーション手段と、このシミュレー
ション手段からキャッシュメモリへのアクセスに関する
情報を採取するキャッシュアクセス情報採取手段と、プ
ログラムのシンボル情報を管理するシンボル情報管理手
段と、プログラムのシンボルの配置を変更するためのシ
ンボル配置変更情報を生成するシンボル配置変更情報生
成手段とを備えたものである。
【0015】請求項1記載のソフトウエア開発支援シス
テムによれば、キャッシュアクセス情報採取手段で採取
された情報と、シンボル情報管理手段で管理されている
シンボル情報から、プログラムのメモリアクセス時の速
度が高速になるようにシンボルの配置を変更するための
シンボルの配置変更情報を生成することができる。これ
により、キャッシュメモリへのアクセスの状況が対象プ
ログラムが記述される高級言語レベルで検知可能とな
り、アクセス速度を低下させるシンボルの配置を変更
し、プログラムの実行性能を向上させることが可能とな
る。
【0016】請求項2記載のソフトウエア支援開発シス
テムは、請求項1において、キャッシュアクセス情報採
取手段が、キャッシュメモリでのエントリの競合性ミス
に関する情報を採取するものである。請求項2記載のソ
フトウエア支援開発システムによれば、請求項1と同様
な効果のほか、キャッシュアクセス情報採取手段で採取
された情報からキャッシュ競合性ミスを検出し、シンボ
ル情報と関連づけて、シンボルの配置変更情報をシンボ
ル配置変更情報生成手段で生成することができる。これ
により、キャッシュメモリ塔載のプログラムを開発する
際に、キャッシュメモリへのアクセスの状況特に競合性
ミスをシンボルレベルないし高級言語レベルで検出し、
キャッシュメモリで競合性ミスが発生するシンボルの配
置を変更する情報を生成するなど、その競合を解消する
ためにシンボルの配置を変更することが容易にでき、プ
ログラム開発の効率化が図れる。
【0017】請求項3記載のソフトウエア支援開発シス
テムは、請求項1または請求項2において、シンボル配
置変更情報生成手段が、キャッシュメモリでのエントリ
の競合性ミスを低減するための情報を生成するものであ
る。請求項3記載のソフトウエア支援開発システムによ
れば、請求項1または請求項2と同様な効果のほか、競
合性のキャッシュミスが発生したシンボルをキャッシュ
されていない空のエントリに対応するアドレスに変更す
るための情報を生成するなど、キャッシュメモリの競合
性ミスを低減させるようなシンボルの配置変更情報が生
成でき、より一層のプログラムの性能向上を図れる。
【0018】請求項4記載のソフトウエア支援開発シス
テムは、キャッシュメモリを塔載するプロセッサ上で実
行されるプログラムのソフトウエア開発支援システムで
あって、プロセッサの動作をシミュレーションするシミ
ュレーション手段と、このシミュレーション手段からキ
ャッシュメモリへのアクセスに関する情報を採取するキ
ャッシュアクセス情報採取手段と、プログラムのシンボ
ル情報を管理するシンボル情報管理手段と、シンボル情
報を用いてキャッシュアクセスの情報を表示する表示手
段とを備えたものである。
【0019】請求項4記載のソフトウエア支援開発シス
テムによれば、キャッシュアクセス情報採取手段で採取
された情報と、シンボル情報管理手段で管理されている
シンボル情報を表示手段により関連付けて表示すること
ができるので、キャッシュメモリへのアクセスの状況
が、対象プログラムが記述される高級言語レベルで表示
可能となり、評価性能に基いたプログラムの変更が容易
になる。したがって、キャッシュメモリ搭載のプログラ
ムを開発し評価する際に、キャッシュメモリへのアクセ
ス状況を高級言語レベルで知ることができ、プログラム
開発の効率化が図れる。
【0020】請求項5記載のソフトウエア支援開発シス
テムは、請求項4において、キャッシュアクセス情報採
取手段が、アクセス対象のアドレスおよびアクセス時の
プログラムカウンタ値、スタックポインタ値ならびにア
クセスがヒットかどうかの情報を採取するものである。
請求項5記載のソフトウエア支援開発システムによれ
ば、請求項4と同様な効果がある。
【0021】請求項6記載のソフトウエア支援開発シス
テムは、請求項4または請求項5において、表示手段
が、キャッシュメモリでのエントリ別に分類して表示す
るものである。請求項6記載のソフトウエア支援開発シ
ステムによれば、請求項4または請求項5と同様な効果
がある。
【0022】
【発明の実施の形態】以下、この発明の実施の形態につ
いて説明する。この発明の第1の実施の形態を図1から
図16により説明する。図1は、この発明の第1の実施
の形態におけるソフトウエア開発支援システムに適用さ
れるシステムの一例であり、高級言語によるソフトウエ
ア開発およびそのシミュレーション、ならびにデバッグ
に係る全体的なシステムである。
【0023】図1において、105は、開発の対象とな
るアプリケーションを高級言語で記述したソースプログ
ラムである。101はコンパイラであり、ソースプログ
ラム105を入力し、対象とするプロセッサに対応した
オブジェクトコード106と、デバッグ情報107を出
力する。
【0024】102は、ソフトウエア開発支援システム
であり、デバッガ103と、対象プロセッサの動作をシ
ミュレーションするシミュレーション手段であるシミュ
レータ104とから構成される。開発支援システム10
2は、オブジェクトコード106とデバッグ情報107
を入力し、アプリケーションのシミュレーションおよび
高級言語レベルでのデバッグを実現する。
【0025】図9に、開発支援システム102が対象と
するプロセッサの構成図を示す。図9は図3と比べて、
キャッシュメモリが命令キャッシュメモリ1303とデ
ータキャッシュメモリ1304に別れている点が異な
る。よって、命令キャッシュメモリ1303とデータキ
ャッシュメモリ1304についてのみ説明する。命令キ
ャッシュメモリ1303は、命令の読込み動作(フェッ
チ動作)時に、用いられるキャッシュメモリであり、デ
ータキャッシュメモリ1304は、データの読込み動作
(データリード動作)時とデータの書きこみ動作(デー
タライト動作)時に用いられるキャッシュメモリであ
る。
【0026】また、命令キャッシュメモリ1303は、
内部にタグアレイ1306およびデータアレイ1307
を備え、同様にデータキャッシュメモリ1304は、タ
グアレイ1308とデータアレイ1309を備える。タ
グアレイ1306、1308は、主記憶装置1302上
のアドレスとキャッシュメモリのデータアレイ130
7、1309上のアドレスを対応付けるタグ情報を保持
する。また、データアレイ1307、1309は、上記
のように対応付けられたデータの内容自体を保持する。
【0027】図4は、プロセッサのCPUの構成ととも
に、メモリとの関係を示す。図4において、701はC
PUであり、プログラム実行時に主にデータを格納する
データレジスタ(D0、D1、D2、D3)703、7
04、705、706と、主にアドレスを格納するアド
レスレジスタ(A0、A1、A2、A3)707、70
8、709、710と、演算結果フラグを格納するプロ
セッサ状態語レジスタ(PSW)711と、プログラム
実行アドレスを指し示すプログラムカウンタレジスタ
(PC)と、スタック領域のアドレスを指し示すスタッ
クポインタレジスタ(SP)と、各種演算を行う演算器
714から構成される。
【0028】702は、メモリ領域の概念図である。7
02に示すように、メモリ領域は、プログラム自体であ
る実行コードを格納する実行コード格納領域715と、
主にグローバルなデータを格納するデータ領域716
と、主にローカルなデータを格納するスタック領域71
7から構成される。このメモリ領域には、すべてアドレ
スが割振られ、CPU701からはアドレスによりアク
セスが行われる。 この構成において、プロセッサは、
実行コード格納領域715に格納されている命令を読込
み、読込んだ命令に従って各種レジスタあるいはメモリ
上のデータを用いて演算を行う。
【0029】このようなプロセッサでは、プロセッサ
(CPU)とメモリ(主記憶)の間のデータの転送は、
(1)メモリからプロセッサへの命令の読込み(フェッ
チ)、(2)メモリからプロセッサへのデータの読込み
(データリード)、(3)プロセッサからメモリへのデ
ータの書きこみ(データライト)の3種類に区分され
る。
【0030】表1に、ソースプログラムの一例を示す。
【0031】
【表1】
【0032】表1に示すソースプログラムは、高級言語
の一つであるC言語によって記述されている。なお、表
1において、各行の左端の『数字:』は、説明のために
付与した行番号である。表1のソースプログラムにおい
て、1行目は、グローバル変数でint(整数)型変数
xとyの宣言を示す。3行目から10行目までが、関数
mainの定義部分である。関数mainでは、4行目
に示すように、ローカル変数でint(整数)型変数i
を用いて、6行目から9行目に示すように、変数iを0
から99まで増加させて、7、8行目に示す演算を繰り
返し行う処理が記述されている。
【0033】表2に、オブジェクトコードに対応するア
センブラ記述による説明図を示す。オブジェクトコード
は、対象とするプロセッサの機械語命令で表現され、ア
ドレスとそのアドレスに格納する値が情報として記述さ
れる。
【0034】
【表2】
【0035】表2では、説明のため機械語命令と対応す
るアセンブラ記述を示しているが、本質的には前記の2
つは同一の情報を表現する。また、全ての機械語命令
は、4バイトの長さのビットパターンである。なお、表
2において、各行の左端の『数字:』は、説明のために
付与した行番号であり、左端2番目の16進数による表
記は、その命令あるいはデータが格納されるアドレスを
示す。例えば、3行目の命令『add −4,SP』に
対応するオブジェクトコードは、アドレス0x100番
地に格納され、33行目に示すデータxに対応するデー
タは、アドレス0x400番地に格納される。
【0036】表2において、1行目から30行目まで
は、実行コード部分である。1行目は、アセンブラ記述
での擬似命令であり、1行目に続く部分が実行コードで
あることを示す。また、33行目から35行目は、デー
タ領域部分であり、33行目は、以下に続く部分がデー
タ領域であることを示すアセンブラ擬似命令である。3
4行目は、アドレス0x400番地以降に4バイト分の
領域を割当ることを示す。同様に、35行目は、アドレ
ス0x410番地以降に4バイト分の領域を割当ること
を示す。
【0037】後述するシンボル情報によって、アドレス
0x100番地がC言語プログラム上の関数mainの
先頭番地に対応付けられ、また、アドレス0x400番
地が変数xに、同様にアドレス0x410番地が変数y
に対応付けられる。下記に3行目から30行目に記述さ
れている実行コードで用いられているアセンブラ記述と
プロセッサの命令の対応を示す。
【0038】(1)add 『加算データ』,『被加算
データ』 『加算データ』で示されるレジスタあるいはメモリの内
容あるいは即値を『被加算データ』で示されるレジスタ
の内容に加算して、結果を『被加算データ』で示される
レジスタに格納する。例えば、3行目の記述は、即値−
4をスタックポインタレジスタ(SP)の内容に加算し
て、加算結果をスタックポインタレジスタに格納する命
令である。また、18行目の記述は、データレジスタD
0の内容をデータレジスタD1の内容に加算して、加算
結果をデータレジスタD1へ格納する命令である。
【0039】(2)clr 『対象レジスタ』 『対象レジスタ』で示されるレジスタの内容を値0にす
る。例えば、4行目の記述は、データレジスタD0の内
容を0にする命令である。 (3)inc 『対象レジスタ』 『対象レジスタ』で示されるレジスタの内容を1増加し
て格納する。例えば、22行目の記述は、データレジス
タD0の内容を1増加して格納する命令である。
【0040】(3)sub 『減算データ』,『被減算
データ』 『減算データ』で示されるレジスタあるいはメモリの内
容あるいは即値を『被減算データ』で示されるレジスタ
の内容から減算して、結果を『被減算データ』で示され
るレジスタに格納する。例えば、14行目の記述は、デ
ータレジスタD1の内容をデータレジスタD0の内容か
ら減算して、減算結果をデータレジスタD0に格納する
命令である。
【0041】(4)cmp 『減算データ』,『被減算
データ』 『減算データ』で示されるレジスタあるいはメモリの内
容あるいは即値を『被減算データ』で示されるレジスタ
の内容から減算して、結果のフラグ(結果が正である、
結果が負である、結果が0である)をプロセッサ状態語
レジスタPSWに反映する。sub命令と異なり、減算
結果は、レジスタには格納されない。例えば、26行目
の記述は、データレジスタD0から即値100を減算し
て、その結果フラグをプロセッサ状態語レジスタPSW
に反映する命令である。
【0042】(5)mov 『転送元データ』,『転送
先データ』 『転送元データ』で示されるレジスタあるいはメモリの
内容あるいは即値を『転送先データ』で示されるレジス
タあるいはメモリへ転送する。例えば、5行目の記述
は、データレジスタD0の内容をアドレス0x410番
地から始まる1ワード(4バイト)分のメモリ上の領域
に転送する命令である。また、例えば、10行目の記述
は、スタックポインタレジスタSPの内容が指し示すメ
モリ上の1ワード分の領域の内容を、データレジスタD
0へ格納する命令である。
【0043】(6)jmp 『ジャンプ先』 『ジャンプ先』で示されるアドレスへ、プログラム実行
の制御を変更する。例えば、8行目の記述は、0x15
0番地(25行目)にプログラム実行の制御を変更する
命令である。なお、このようなジャンプ命令以外は、プ
ログラム実行は逐次的に行われる。例えば、0x100
番地(3行目)の命令の次は0x104番地(4行目)
の命令が実行される。
【0044】(7)mul『乗算データ』,『被乗算デ
ータ』 『乗算データ』で示されるレジスタの内容を、『被乗算
データ』で示されるレジスタの内容に乗じて、乗算結果
を『被乗算データ』で示されるレジスタに格納する。例
えば、12行目の記述は、データレジスタD1の内容を
データレジスタD0の内容に乗算して、その乗算結果を
データレジスタD0に格納する命令である。
【0045】(8)bge 『ジャンプ先』 プロセッサ状態語レジスタのフラグが正あるいは0の場
合に、『ジャンプ先』で示されるアドレスへ、プログラ
ム実行の制御を変更する。例えば、27行目の記述は、
フラグが正あるいは0の場合に、0x160番地(30
行目)にプログラム実行の制御を変更する命令である。
【0046】(9)ret サブルーチン呼び出し元へプログラムの制御を変更す
る。しかし、オブジェクトコードには、前記に説明した
ようなC言語での関数あるいは変数との対応付けの情報
はなく、実際には次に説明するシンボル情報で示され
る。表3に、デバッグ情報の一例であるシンボル情報を
示す。
【0047】
【表3】
【0048】なお、表3において、各行の左端の『数
字:』は、説明のために付与した行番号である。シンボ
ル情報では、高級言語上の変数名や関数名などシンボル
とオブジェクトコード上でのアドレスとの対応付けを行
う情報である。表3において、1行目から6行目では、
シンボル″main″が関数であり、その開始アドレス
が0x100番地であり、関数の引数および戻り値がv
oid型であり、加えて関数main内のローカル変数
iがスタックポインタ(SP)レジスタが指すアドレス
に割付られており、その型がint(整数)型であるこ
とを示している。
【0049】また、9行目から11行目までには、シン
ボル″x″がグローバル変数であり、その開始アドレス
が0x400番地であり、その型がint(整数)型で
あることを示している。同様に、13行目から15行目
では、シンボル″y″がグローバル変数であり、その開
始アドレスが0x410番地であり、その型がint
(整数)型であることを示している。
【0050】図2に、前記開発支援システム102の構
成の一例を示す。図2において、201はデバッガ10
3であり、デバッグ操作処理部203、実行制御部20
4、オブジェクトコード管理部205、シンボル情報管
理手段であるシンボル情報管理部206、キャッシュア
クセス情報採取手段であるキャッシュアクセス情報採取
部207、シンボル配置変更情報生成手段であるシンボ
ル配置変更情報生成部208を備える。
【0051】また、202はシミュレータ104であ
り、CPUをシミュレーションするCPUシミュレーシ
ョン部209、内蔵メモリや外付けメモリをシミュレー
ションするメモリシミュレーション部210、キャッシ
ュメモリをシミュレーションするキャッシュメモリシミ
ュレーション部211、シミュレーション実行の時刻を
管理計測する時刻管理部212を備える。
【0052】デバッグ操作処理部203は、オブジェク
トコード213のロードや実行開始、ブレークアドレス
設定などユーザからのデバッガコマンドの入力を受付
け、処理する手段である。例えば、オブジェクトコード
213のロードコマンド処理時には、オブジェクトコー
ド管理部205から、オブジェクトコード213を読込
み、シミュレータ202内のメモリシミュレーション部
210にオブジェクトコード213の内容を書き込む処
理を行う。
【0053】また、実行開始コマンド処理時には、シミ
ュレータ203内のCPUシミュレーション部209の
プログラムカウンタ(PC)レジスタに開始アドレスを
設定し、実行制御部204により、オブジェクトコード
のシミュレーションの実行を開始する。実行制御部20
4は、シミュレータ202を用いて対象オブジェクトコ
ードの実行を実現する。シミュレーションの実行は、命
令を単位として制御可能である。なお、これはプロセッ
サの動作サイクル毎の制御でもよい。
【0054】この実行制御部204では、ユーザに指定
されたブレークポイントにオブジェクトコードの実行が
到達するまで、あるいは既定の停止アドレス(例えばe
xit関数のアドレス)に実行が到達するまで、オブジ
ェクトコード213の実行が繰り返し行われる。図5
に、実行制御部204の動作フローチャートを示す。図
5において、ステップ801では、シミュレータ202
からCPU701(1301)内のプログラムカウンタ
レジスタ(PC)の値を読み出し、実行アドレスが既定
の停止アドレス(例えばexit関数)に到達したかを
判定する。到達していれば処理を終了し、到達していな
ければステップ802に進む。
【0055】ステップ802では、デバッグ操作処理部
203から利用者が指定したブレークアドレスの情報を
読み出し、実行アドレスがブレークアドレスに到達した
かを判定する。到達していれば処理を終了し、到達して
いなければステップ803に進む。ステップ803で
は、シミュレーション部202を用いて1命令分のシミ
ュレーションを行う。
【0056】図2において、209はCPUシミュレー
ション部であり、CPU701(1301)の動作をシ
ミュレーションする。つまり、実行する命令をプログラ
ムカウンタ(PC)レジスタが指し示すアドレスから読
取り(以下フェッチ動作とよぶ)、読込んだ命令に従っ
てレジスタあるいはメモリ上のデータを用いて演算を行
う。
【0057】フェッチ動作をシミュレーションする場
合、メモリシミュレーション部210にアドレス(フェ
ッチアドレス)を入力して、そのアドレス上のデータを
得る。また、演算のシミュレーションにおいて、入力と
してメモリ上のデータを読込む(データリード)際に
は、メモリシミュレーション部210にアドレスを入力
し、そのアドレス上のデータを得る。
【0058】同様に演算時に結果をメモリ上に出力する
(データライト)際には、メモリシミュレーション部2
10へアドレスと出力するデータ内容を入力し、そのア
ドレス上のデータへ書き込む。図6に、CPUシミュレ
ーション部209の1命令分のシミュレーションを行う
場合の動作フローチャートを示す。図6において、ステ
ップ901では、CPUシミュレーション部209のプ
ログラムカウンタ(PC)レジスタが指し示すアドレス
と、1命令の語長である4バイトをメモリシミュレーシ
ョン部210に指定して、そのアドレス上のデータを読
み込む。また、同時に命令の読込みに必要なサイクル数
を求める。
【0059】ステップ902では、入力した機械語命令
である4バイト長のビットパターンを解析し、命令の種
類および命令実行に必要な入力先および出力先を求め
る。ビットパターンには、入力元あるいは出力先のレジ
スタの指定番号や、即値あるいはメモリ上のアドレスが
埋込まれている。ステップ903では、命令実行に必要
なデータを入力する。データの入力元は命令によって異
なり、レジスタの内容やメモリ上の内容あるいは即値で
ある。入力元がレジスタの内容である場合は、CPUシ
ミュレーション部209の中のレジスタ内容管理領域を
参照することによって、入力値を得る。また、入力元が
メモリ上の内容の場合は、メモリシミュレーション部2
10に入力元アドレスおよびデータ長を指定することに
より、入力値を得る。また、同時にデータの読込みに必
要なサイクル数を求める。また、即値の場合は、ステッ
プ902で解析した結果を参照する。
【0060】ステップ904では、ステップ902で解
析した結果を用いて命令の種類を判別し、命令の種類に
応じてステップ905a、905b、905c、905
d、905e、905f、905g、905h、905
iに進む。命令がadd命令の場合は、ステップ905
aに進む。ステップ905aでは、add命令の演算シ
ミュレーションを行う。つまりステップ903で入力し
たデータを用いて加算を実行し、演算結果を得る。
【0061】同様に、命令がinc命令の場合は、ステ
ップ905bに進む。ステップ905bでは、inc命
令の演算シミュレーションを行う。つまりステップ90
3で入力したデータと値1の加算を実行し、演算結果を
得る。同様に、命令がsub命令の場合は、ステップ9
05cに進む。ステップ905cでは、sub命令の演
算シミュレーションを行う。つまりステップ903で入
力したデータを用いて減算を実行し、演算結果を得る。
【0062】同様に、命令がcmp命令の場合は、ステ
ップ905dに進む。ステップ905dでは、cmp命
令の演算シミュレーションを行う。つまりステップ90
3で入力したデータによる減算を実行し、演算結果フラ
グを得る。同様に、命令がmul命令の場合は、ステッ
プ905eに進む。ステップ905eでは、mul命令
の演算シミュレーションを行う。つまりステップ903
で入力したデータを用いて乗算を実行し、演算結果を得
る。
【0063】同様に、命令がclr命令の場合は、ステ
ップ905fに進む。ステップ905fでは、clr命
令の演算シミュレーションを行う。つまり演算結果とし
て0を得る。同様に、命令がmov命令の場合は、ステ
ップ905gに進む。ステップ905gでは、mov命
令の演算シミュレーションを行う。つまりステップ90
3で入力したデータを演算結果とする。
【0064】同様に、命令がjmp命令の場合は、ステ
ップ905hに進む。ステップ905hでは、jmp命
令の演算シミュレーションを行う。つまりステップ90
2での解析結果からジャンプ先のアドレスを入力して、
CPUシミュレーション部209のプログラムカウンタ
レジスタに格納する。同様に、命令がbge命令の場合
は、ステップ905iに進む。ステップ905iでは、
bge命令の演算シミュレーションを行う。つまりCP
Uシミュレーション部209からプロセッサ状態語レジ
スタPSWの値を読み出し、フラグを参照して、条件が
成立している場合(演算結果フラグが正あるいは0)
に、ステップ902での解析結果からジャンプ先のアド
レスを入力して、CPUシミュレーション部209のプ
ログラムカウンタレジスタに格納する。
【0065】ステップ905a、905b、905c、
905d、905e、905f、905gでは、次に処
理終了後ステップ906に進む。ステップ905h、9
05iでは、次に処理終了後ステップ907に進む。ス
テップ905a、905b、905c、905d、90
5e、905f、905g、905hおよび905iで
は、それぞれ命令の実行にかかるサイクル数を求める。
これは、命令の種類およびその実行時のCPUの状態に
より決定され、求まる。
【0066】ステップ906では、CPUシミュレーシ
ョン部209のプログラムカウンタレジスタの値を入力
し、値4を加算して格納する。これによりプログラム実
行が逐次的に行われる。ステップ907では、ステップ
905a、905b、905c、905d、905e、
905f、905gで得られた演算結果を、ステップ9
02での解析で判別した出力先に格納する。演算結果の
出力先は、命令によって異なり、レジスタやメモリ上の
領域である。出力先がレジスタである場合は、CPUシ
ミュレーション部209の中のレジスタ内容管理領域へ
格納する。また、出力先がメモリ上の領域の場合は、メ
モリシミュレーション部210に出力先アドレスと出力
データおよび出力データ長を指定することにより、出力
を行う。
【0067】ステップ908では、命令の読込みにかか
るサイクル数(時間)、命令の実行に必要となるデータ
の入力にかかるサイクル数、命令の実行にかかるサイク
ル数、演算結果の格納にかかるサイクル数など1命令実
行に必要なサイクル数を全て算出し、時刻管理部212
へ出力する。図2における時刻管理部212は、1命令
ごとのサイクル数を合計していくことにより、実行プロ
グラムのサイクル数を求める。
【0068】図7にメモリシミュレーション部210の
動作フローチャートを示す。図7において、ステップ1
001では、メモリシミュレーション部210へのアク
セスの種別の判定を行う。前述したようにCPUシミュ
レーション部209からは、命令の読込み動作(フェッ
チ動作)の要求、データの読込み動作(データリード動
作)の要求およびデータの書きこみ動作(データライト
動作)の要求がくる。また、デバッガ201からは、デ
バッガコマンドでのメモリ参照操作の場合に、データの
読込み(ダイレクトリード動作)の要求が、またオブジ
ェクトコード213のロード処理やデバッガ201上で
のメモリ変更操作処理の場合に、データの書きこみ(ダ
イレクトライト動作)の要求がくる。このダイレクトリ
ード動作あるいは、ダイレクトライト動作の場合は、プ
ロセッサのシミュレーションは行わない。つまりプロセ
ッサの状態を変更せず、またサイクル数を算出しない。
【0069】フェッチ動作の場合は、ステップ1002
で、アクセス対象として指定されたアドレスがキャッシ
ャブル空間かどうかを判定する。この実施の形態で対象
とするプロセッサは、アクセスの対象となるアドレスに
よってキャッシュが動作するかどうか違い、表4に示す
ような、区分となっている。
【0070】
【表4】
【0071】表4は、メモリシミュレーション部210
が保持するキャッシャブル属性判定表である。表4は、
アドレス0x00000000番地から0x3FFFF
FFF番地までのアドレス空間およびアドレス0x80
000000番地から0xFFFFFFFF番地までの
アドレス空間が非キャッシャブル空間であり、アドレス
0x40000000番地から0x7FFFFFFF番
地までのアドレス空間がキャッシャブル空間であること
を示している。キャッシャブル空間の場合、その空間内
のアドレスへのアクセスは全てキャッシュメモリを利用
して高速化され、非キャッシャブル空間の場合は、キャ
ッシュメモリが利用されない。
【0072】ステップ1002において、指定アドレス
がキャッシャブル空間の場合は、ステップ1003に進
む。そうでない場合はステップ1004に進む。ステッ
プ1003では、キャッシュメモリシミュレーション部
211に対してアドレスと読込むデータ長を指定するこ
とにより、キャッシュメモリのフェッチ動作のシミュレ
ーションを行う。
【0073】ステップ1004では、メモリシミュレー
ション部210内のメモリデータ格納領域を参照し、指
定アドレスのメモリデータを得る。メモリデータ格納領
域は図8に示すように、実際のメモリデータとそのアド
レスを管理保持する領域である。図8において、120
1は、アドレス0x00000000番地から0x00
003FFF番地までのアドレス空間のデータ内容を保
持管理する領域である。同様に、1202はアドレス0
x40000000番地から0x40003FFF番地
までのアドレス空間のデータ内容を、1203は0x8
0000000番地から0x80003FFF番地まで
のアドレス空間のデータ内容を保持管理する領域であ
る。
【0074】ステップ1005では、アクセスにかかる
サイクル数を算出する。キャッシャブル空間の場合は、
キャッシュメモリシミュレーション部211で算出され
たサイクル数を参照する。また非キャッシャブル空間の
場合は、シミュレーション対象のメモリのウエイト数お
よびメモリとプロセッサ間のバス幅などの情報からサイ
クル数を算出する。
【0075】同様に、データリード動作の場合は、ステ
ップ1006で、アクセス対象として指定されたアドレ
スがキャッシャブル空間かどうかを判定する。指定アド
レスがキャッシャブル空間の場合は、ステップ1007
に進む。そうでない場合は、ステップ1008に進む。
ステップ1007では、キャッシュメモリシミュレーシ
ョン部211に対してアドレスと読込むデータ長を指定
することにより、キャッシュメモリのデータリード動作
のシミュレーションを行う。
【0076】ステップ1008では、ステップ1004
と同様に、メモリシミュレーション部210内のメモリ
データ格納領域を参照し、指定アドレスのメモリデータ
を得る。ステップ1009では、ステップ1005と同
様に、アクセスにかかるサイクル数を算出する。
【0077】同様に、データライト動作の場合は、ステ
ップ1010で、アクセス対象として指定されたアドレ
スがキャッシャブル空間かどうかを判定する。指定アド
レスがキャッシャブル空間の場合は、ステップ1011
に進む。そうでない場合は、ステップ1012に進む。
ステップ1011では、キャッシュメモリシミュレーシ
ョン部211に対してアドレスと書き込むデータとその
データ長を指定することにより、キャッシュメモリのデ
ータライト動作のシミュレーションを行う。ステップ1
012では、メモリシミュレーション部210内のメモ
リデータ格納領域のデータ内容を変更する。
【0078】ステップ1013では、ステップ1005
と同様に、アクセスにかかるサイクル数を算出する。ま
た、ダイレクトリード動作の場合は、ステップ1014
において、直接メモリデータ格納領域のデータを参照す
る。同様に、ダイレクトライト動作の場合は、ステップ
1015において、直接メモリデータ格納領域のデータ
を変更する。
【0079】図10に、キャッシュメモリシミュレーシ
ョン部211のブロック図を示す。図10において、1
401は、キャッシュメモリシミュレーション部であ
り、命令キャッシュタグ情報管理部1402とデータキ
ャッシュタグ情報管理部1403を備える。命令キャッ
シュタグ情報管理部1402は、命令キャッシュメモリ
のシミュレーション時つまりフェッチ動作のシミュレー
ション時に利用する図11に示すタグ情報管理表を保持
し、命令キャッシュメモリ1303上に主記憶装置13
02上のどのアドレスのデータが登録されているかを管
理する。
【0080】同様に、データキャッシュタグ情報管理部
1403は、データキャッシュメモリ1304のシミュ
レーション時つまりデータリード動作とデータライト動
作時のシミュレーション時に利用するタグ情報管理表を
保持し、データキャッシュメモリ1304上に登録され
ている主記憶装置1302上のアドレスを管理する。な
お、この実施の形態で対象とするプロセッサでは、キャ
ッシュデータアレイ部自体も、アドレスが割振れてい
る。よって、キャッシュメモリ上に登録されているメモ
リデータは、通常のメモリデータと同様にメモリシミュ
レーション部210内のメモリデータ格納領域において
管理する。
【0081】図11に、タグ情報管理表を示す。図11
において、エントリ1502はキャッシュメモリ上のア
ドレスに対応し、タグ1503は主記憶装置1302上
のアドレスを表す。また、エントリ1502が有効であ
るか無効であるかつまり主記憶装置1302上のアドレ
スに対応しているかどうかを管理する有効フラグ150
1を持つ。
【0082】また、この実施の形態で対象とするプロセ
ッサでは、エントリ1502と主記憶装置1302上の
アドレスの対応付けはダイレクトマップ方式であり、キ
ャッシュメモリ上のアドレス(エントリのアドレス)は
主記憶装置1302でのアドレス値と32ビット値0x
000007F0の論理積で求められる。つまりアドレ
ス値の4ビット目から10ビット目を取り出した値であ
り、1つのエントリにはタグで示されるアドレスから開
始して16バイト分が対応する。
【0083】例えば、1504の情報はエントリ「0」
が有効であり、主記憶装置1302上のアドレス0x4
0001000番地から0x4000100F番地に対
応することを示しており、また1505の情報はエント
リ「2」が無効であることを示している。図12に、キ
ャッシュメモリシミュレーション部1401の動作フロ
ーチャートを示す。図12において、ステップ1601
で、シミュレーション動作の種別の判別を行う。動作が
フェッチ動作の場合は、ステップ1602に進み、命令
キャッシュメモリ1303上のエントリを指定されたア
ドレスから算出する。エントリ番号は、前述したように
アドレス値と32ビット値0x000007F0の論理
積で求められる。
【0084】ステップ1603では、エントリ1502
のタグ情報および有効フラグを命令キャッシュタグ情報
管理部1402から検索し、有効フラグを判定する。エ
ントリ1502が有効な場合は、ステップ1604に進
み、無効の場合はステップ1605に進む。ステップ1
604では、取得したタグ情報と指定アドレスを比較
し、キャッシュヒットかどうかを判定する。この比較に
は、指定アドレスのLSB4ビットを0でマスクした値
を用いる。比較結果が一致であれば、キャッシュヒット
である。一致しなければキャッシュミスである。また、
ステップ1603でエントリが無効である場合も、キャ
ッシュミスである。ステップ1604でキャッシュミス
と判定された場合は、競合性ミスであり、この場合競合
性ミスであることを記憶する。なお、競合性ミスである
ことはステップ1607において、キャッシュアクセス
情報採取部207に登録される。
【0085】キャッシュミスの場合、ステップ1605
に進み、エントリ1502に登録する。ステップ160
5では、エントリ1502にアドレスを登録する。ステ
ップ1606では、命令キャッシュミス時のサイクル数
を求める。ステップ1607では、命令キャッシュへの
フェッチ動作時のアクセスがキャッシュミスであったこ
と、ならびにアクセスアドレス、データ長、エントリお
よび競合性ミスであったかどうかをキャッシュアクセス
情報採取部207に登録する。
【0086】ステップ1608では、命令キャッシュヒ
ット時のサイクル数を求める。ステップ1609では、
命令キャッシュへのフェッチ動作時のアクセスがキャッ
シュヒットであっとこと、ならびにアクセスアドレス、
データ長、およびエントリをキャッシュアクセス情報採
取部207に登録する。同様に、動作がデータリード動
作の場合は、ステップ1610に進み、データキャッシ
ュメモリ上のエントリを指定されたアドレスから算出す
る。ステップ1611では、エントリのタグ情報および
有効フラグをデータキャッシュタグ情報管理部1403
から検索し、有効フラグを判定する。エントリが有効な
場合は、ステップ1612に進み、無効の場合はステッ
プ1613に進む。
【0087】ステップ1612では、取得したタグ情報
と指定アドレスを比較し、キャッシュヒットかどうかを
判定する。キャッシュミスと判定された場合は、競合性
ミスであり、この場合競合性ミスであることを記憶す
る。なお、競合性ミスであることはステップ1615に
おいて、キャッシュアクセス情報採取手段であるキャッ
シュアクセス情報採取部207に登録される。
【0088】キャッシュミスの場合、ステップ1613
に進む。ステップ1613では、エントリにそのアドレ
スを登録する。ステップ1614では、データリード動
作におけるデータキャッシュミス時のサイクル数を求め
る。ステップ1615では、データキャッシュへのデー
タリード動作時のアクセスがキャッシュミスであっとこ
と、ならびにアクセスアドレス、データ長、およびエン
トリをキャッシュアクセス情報採取部207に登録す
る。また、CPUシミュレーション部209からプログ
ラムカウンタレジスタ(PC)の値と、スタックポイン
タレジスタ(SP)の値を取得し、共に登録する。ま
た、競合性ミスであったかどうも登録する。
【0089】ステップ1616では、データリード動作
におけるデータキャッシュヒット時のサイクル数を求め
る。ステップ1617では、データキャッシュへのデー
タリード動作時のアクセスがキャッシュヒットであった
ことをキャッシュアクセス情報採取部207に登録す
る。またアクセスアドレス、データ長、およひエントリ
をキャッシュアクセス情報採取部207に登録する。ま
た、CPUシミュレーション部209からプログラムカ
ウンタレジスタ(PC)の値と、スタックポインタレジ
スタ(SP)の値を取得し、共に登録する。
【0090】同様に、動作がデータライト動作の場合
は、ステップ1618に進み、データキャッシュメモリ
上のエントリを指定されたアドレスから算出する。ステ
ップ1619では、エントリのタグ情報および有効フラ
グをデータキャッシュタグ情報管理部1403から検索
し、有効フラグを判定する。そのエントリが有効な場合
は、ステップ1620に進み、無効の場合はステップ1
621に進む。
【0091】ステップ1620では、取得したタグ情報
と指定アドレスを比較し、キャッシュヒットかどうかを
判定する。キャッシュミスと判定された場合は、競合性
ミスであり、この場合競合性ミスであることを記憶す
る。なお、競合性ミスであることはステップ1623に
おいて、キャッシュアクセス情報採取部207に登録さ
れる。
【0092】キャッシュミスの場合、ステップ1621
に進む。ステップ1621では、エントリにそのアドレ
スを登録する。ステップ1622では、データライト動
作におけるデータキャッシュミス時のサイクル数を求め
る。ステップ1623では、データキャッシュへのデー
タライト動作時のアクセスがキャッシュミスであったこ
と、ならびにアクセスアドレス、データ長、およびエン
トリをキャッシュアクセス情報採取部207に登録す
る。また、CPUシミュレーション部209からプログ
ラムカウンタレジスタ(PC)の値と、スタックポイン
タレジスタ(SP)の値を取得し、共に登録する。ま
た、競合性ミスであったかどうも登録する。
【0093】ステップ1624では、データライト動作
におけるデータキャッシュヒット時のサイクル数を求め
る。ステップ1625では、データキャッシュへのデー
タライト動作時のアクセスがキャッシュヒットであっと
ことをキャッシュアクセス情報採取部207に登録す
る。また、アクセスアドレス、データ長、およびエント
リをキャッシュアクセス情報採取部207に登録する。
また、CPUシミュレーション部209からプログラム
カウンタレジスタ(PC)の値と、スタックポインタレ
ジスタ(SP)の値を取得し、共に登録する。
【0094】図13に、キャッシュアクセス情報採取部
207のブロック図を示す。図13において、1701
で示すキャッシュアクセス情報採取部207は、命令キ
ャッシュアクセス情報管理部1702と、データキャッ
シュアクセス情報管理部1703を備える。命令キャッ
シュアクセス情報管理部1702は、フェッチアクセス
情報1704を保持する。フェッチアクセス情報170
4は、キャッシュメモリでのエントリ番号、フェッチア
クセスにおけるアクセスアドレスとそのアクセスがキャ
ッシュヒットであったかどうかの情報、そのデータ長、
また対応するシンボルとそのアクセスの回数およびキャ
ッシュミスの場合はその内の競合性ミスの回数を含む情
報である。
【0095】また同様に、データキャッシュアクセス情
報管理部1703は、データリードアクセス情報170
5とデータライトアクセス情報1706を保持する。デ
ータリードアクセス情報1705は、データリードアク
セスにおけるアクセスアドレスとそのアクセスがキャッ
シュヒットであったかどうかの情報、そのデータ長、ま
た対応するシンボルとそのアクセスの回数、およびキャ
ッシュミスの場合はその内の競合性ミスの回数を含む情
報である。
【0096】同様に、データライトアクセス情報170
6は、データライトアクセスにおけるアクセスアドレス
とそのアクセスがキャッシュヒットであったかどうかの
情報、そのデータ長、また対応するシンボルとそのアク
セスの回数、およびキャッシュミスの場合はその内の競
合性ミスの回数を含む情報である。図14に、キャッシ
ュアクセス情報採取部207の動作フローチャートを示
す。図14において、ステップ1801では、キャッシ
ュメモリシミュレーション部1401から入力された採
取情報の種別の判定を行う。採取情報が、フェッチ動作
に関するものならばステップ1802に進み、データリ
ード動作に関するものならばステップ1804に進み、
データライト動作に関するものならばステップ1806
に進む。
【0097】ステップ1802では、フェッチアクセス
の対象アドレスをシンボル情報から検索し、シンボルと
の関連を付ける。すなわち、アドレスをキーにシンボル
情報を検索し、シンボル名を得る。ステップ1803で
は、フェッチアクセス情報1704に、アクセス対象の
アドレス、キャッシュヒットか否か、アクセスデータ
長、対応付けられたシンボルを登録する。既に同一の情
報が登録されていればそのアクセスの回数の値を増や
す。
【0098】ステップ1804では、データリードアク
セスの対象アドレスをシンボル情報から検索し、シンボ
ルとの関連を付ける。すなわち、アドレスをキーにシン
ボル情報を検索し、シンボル名を得る。また、その際に
シンボル情報中で局所変数のように関数とスタックポイ
ンタレジスタ(SP)からのオフセットして定義されて
いるシンボル情報は、前記の採取情報に含まれているア
クセス時のプログラムカウンタ(PC)から関数が判別
でき、さらにアクセス時のスタックポインタレジスタ
(SP)の値からシンボルとの対応付けができる。
【0099】ステップ1805では、データリードアク
セス情報1705に、アクセス対象のアドレス、キャッ
シュヒットか否か、アクセスデータ長、対応付けられた
シンボルを登録する。既に同一の情報が登録されていれ
ばそのアクセスの回数の値を増やす。同様に、ステップ
1806では、データライトアクセスの対象アドレスを
シンボル情報から検索し、シンボルとの関連を付ける。
すなわち、アドレスをキーにシンボル情報を検索し、シ
ンボル名を得る。また、その際にシンボル情報中で局所
変数のように関数とスタックポインタレジスタ(SP)
からのオフセットして定義されているシンボル情報は、
前記の採取情報に含まれているアクセス時のプログラム
カウンタ(PC)から関数が判別でき、さらにアクセス
時のスタックポインタレジスタ(SP)の値からシンボ
ルとの対応付けができる。
【0100】ステップ1807では、データライトアク
セス情報1706に、アクセス対象のアドレス、キャッ
シュヒットか否か、アクセスデータ長、および、対応付
けられたシンボルを登録する。既に同一の情報が登録さ
れていればそのアクセスの回数の値を増やす。なお、シ
ンボル名が対応付かない場合は、シンボル名なしとして
登録する。
【0101】図15に、プログラムのシンボルの配置を
変更するためのシンボル配置変更情報を生成するシンボ
ル配置変更情報生成部208の動作フローチャートを示
す。ステップ1901において、命令キャッシュに関す
る情報であるフェッチアクセス情報1704について、
各エントリの情報を走査し、競合性ミスが発生しなかっ
たシンボル、競合性ミスが発生したシンボルをそれぞれ
図16(a)に示す命令キャッシュ競合情報表2101
に登録する。
【0102】ステップ1902において、命令キャッシ
ュ競合情報管理表2101から競合ミスをおこしたシン
ボルを検索する。シンボルがあればステップ1903に
進み、シンボルがなければステップ1905に進む。ス
テップ1903において、命令キャッシュ競合情報管理
表2101からキャッシュがヒットしていない空のエン
トリを検索する。空のエントリがあればステップ190
4に進み、空のエントリがなければステップ1905に
進む。
【0103】ステップ1904において、競合ミスをお
こしたシンボルを空のエントリ割付け、対応するアドレ
スを生成する。空のエントリ番号からアドレスの変更
は、例えばある既定値からのエントリ番号に対応するオ
フセットを足し込むなどして求めることが可能である。
生成する情報であるシンボル配置変更情報は、たとえば 変数x:0x0400 → 0x1140 …(1) のように表示する。
【0104】データキャッシュに関して同様に、ステッ
プ1905から1908まで、それぞれステップ190
1から1904に対応する処理を行う。ステップ190
5において、ステップ1901と同様に、データキャッ
シュに関する情報であるデータリードアクセス情報17
05およびデータライトアクセス情報1706につい
て、各エントリの情報を走査し、図16(b)に示すデ
ータキャッシュ競合情報表2102に登録する。ステッ
プ1906において、データキャッシュ競合情報管理表
2102から競合ミスをおこしたシンボルを検索する。
シンボルがあればステップ1907に進み、シンボルが
なければ処理を終了する。例えば、競合するシンボルと
しては、『変数x』と『変数i@main』が得られ
る。
【0105】ステップ1907において、データキャッ
シュ競合情報管理表2102からキャッシュがヒットし
ていない空のエントリを検索する。空のエントリがあれ
ばステップ1908に進み、空のエントリがなければ処
理を終了する。例えば、空のエントリとして0x14が
得られる。ステップ1908において、競合ミスをおこ
したシンボルを空のエントリ割付け、対応するアドレス
を生成する。
【0106】上記の表示(1)に、シンボル配置変更情
報生成部208によるシンボル配置変更情報の一例を示
す。表示(1)は、シンボルxをアドレス0x0400
から0x1140へ変更することを示している。以上の
ように、この第1の実施の形態によれば、キャッシュメ
モリへのアクセスの状況を高級言語のシンボルとして検
出し、キャッシュメモリで競合性ミスが発生するシンボ
ルの配置を変更する情報が生成できる。
【0107】この発明の第2の実施の形態を図17から
図19により説明する。すなわち、このソフトウエア開
発支援システムは、第1の実施の形態の図2に示すシン
ボル配置変更情報生成部208に代えて、表示手段であ
るキャッシュアクセス情報表示部216を設けたもので
ある。図18に、キャッシュアクセス情報表示部216
の動作フローチャートを示す。ステップ1901におい
て、命令キャッシュに関する情報であるフェッチアクセ
ス情報をエントリ別にわけて表示する。ステップ190
2において、データキャッシュに関する情報であるデー
タリードアクセス情報とデータライトアクセス情報とを
エントリ別にわけて表示する。
【0108】図19にキャッシュアクセス情報表示部2
16によるキャッシュアクセス情報の一例を示す。図1
9において、エントリおよびシンボル別にデータリード
動作、データライト動作のヒットとミスの頻度の表示を
示している。このように、キャッシュメモリへのアクセ
スの状況を高級言語レベルで利用者に表示することがで
きる。
【0109】第2の実施の形態によれば、キャッシュア
クセス情報採取部207で採取された情報と、シンボル
情報管理部206で管理されているシンボル情報をキャ
ッシュアクセス情報表示部216により関連付けて表示
することができるので、キャッシュメモリへのアクセス
の状況が、対象プログラムが記述される高級言語レベル
で表示可能となり、評価性能に基いたプログラムの変更
が容易になる。したがって、キャッシュメモリ搭載のプ
ログラムを開発し評価する際に、キャッシュメモリへの
アクセス状況を高級言語レベルで知ることができ、プロ
グラム開発の効率化が図れる。
【0110】その他は、第1の実施の形態と同様であ
る。なお、他の実施の形態として、第1の実施の形態に
第2の実施の形態のキャッシュアクセス情報表示部21
6を付加したソフトウエア開発支援システムも可能であ
る。また、この発明において、キャッシュアクセス情報
を採取する区間を指定する手段を設け、指定された区間
についてのみキャッシュアクセスに関する情報を採取す
ることにより、高速性が求められるプログラムの特定の
区間のみについて、性能向上を図ることも可能である。
【0111】
【発明の効果】請求項1記載のソフトウエア開発支援シ
ステムによれば、キャッシュアクセス情報採取手段で採
取された情報と、シンボル情報管理手段で管理されてい
るシンボル情報から、プログラムのメモリアクセス時の
速度が高速になるようにシンボルの配置を変更するため
のシンボルの配置変更情報を生成することができる。こ
れにより、キャッシュメモリへのアクセスの状況が対象
プログラムが記述される高級言語レベルで検知可能とな
り、アクセス速度を低下させるシンボルの配置を変更
し、プログラムの実行性能を向上させることが可能とな
る。
【0112】請求項2記載のソフトウエア支援開発シス
テムによれば、請求項1と同様な効果のほか、キャッシ
ュアクセス情報採取手段で採取された情報からキャッシ
ュ競合性ミスを検出し、シンボル情報と関連づけて、シ
ンボルの配置変更情報をシンボル配置変更情報生成手段
で生成することができる。これにより、キャッシュメモ
リ塔載のプログラムを開発する際に、キャッシュメモリ
へのアクセスの状況特に競合性ミスをシンボルレベルな
いし高級言語レベルで検出し、キャッシュメモリで競合
性ミスが発生するシンボルの配置を変更する情報を生成
するなど、その競合を解消するためにシンボルの配置を
変更することが容易にでき、プログラム開発の効率化が
図れる。
【0113】請求項3記載のソフトウエア支援開発シス
テムによれば、請求項1または請求項2と同様な効果の
ほか、競合性のキャッシュミスが発生したシンボルをキ
ャッシュされていない空のエントリに対応するアドレス
に変更するための情報を生成するなど、キャッシュメモ
リの競合性ミスを低減させるようなシンボルの配置変更
情報が生成でき、より一層のプログラムの性能向上を図
れる。
【0114】請求項4記載のソフトウエア支援開発シス
テムによれば、キャッシュアクセス情報採取手段で採取
された情報と、シンボル情報管理手段で管理されている
シンボル情報を表示手段により関連付けて表示すること
ができるので、キャッシュメモリへのアクセスの状況
が、対象プログラムが記述される高級言語レベルで表示
可能となり、評価性能に基いたプログラムの変更が容易
になる。したがって、キャッシュメモリ搭載のプログラ
ムを開発し評価する際に、キャッシュメモリへのアクセ
ス状況を高級言語レベルで知ることができ、プログラム
開発の効率化が図れる。
【0115】請求項5記載のソフトウエア支援開発シス
テムによれば、請求項4と同様な効果がある。請求項6
記載のソフトウエア支援開発システムによれば、請求項
4または請求項5と同様な効果がある。
【図面の簡単な説明】
【図1】この発明の第1の実施の形態におけるソフトウ
エア開発支援システムに適用されるシステムのブロック
図である。
【図2】この発明の第1の実施の形態におけるソフトウ
エア開発支援システムのブロック図である。
【図3】キャッシュメモリ塔載プロセッサのシステムブ
ロック図である。
【図4】プロセッサの動作モデルを説明する説明図であ
る。
【図5】図2の実行制御部204の動作フローチャート
である。
【図6】図2のCPUシミュレーション部209の動作
フローチャートである。
【図7】図2のメモリシミュレーション部210の動作
フローチャートである。
【図8】メモリシミュレーション部のメモリデータ格納
領域の説明図である。
【図9】この実施の形態におけるキャッシュメモリ塔載
プロセッサのシステムブロック図である。
【図10】キャッシュシミュレーション部のブロック図
である。
【図11】キャッシュタグ情報管理表を示す説明図であ
る。
【図12】キャッシュシミュレーション部211の動作
フローチャートである。
【図13】キャッシュアクセス情報採取部のブロック図
である。
【図14】キャッシュアクセス情報採取部の動作フロー
チャートである。
【図15】シンボル配置変更情報生成部の動作フローチ
ャートである。
【図16】キャッシュ競合情報表を示すブロック図であ
る。
【図17】第2の実施の形態におけるソフトウエア開発
支援システムのブロック図である。
【図18】キャッシュアクセス情報表示部の動作フロー
チャートである。
【図19】キャッシュアクセス情報の表示例を示す説明
図である。
【符号の説明】
101 コンパイラ 102 開発支援システム 103 デバッガ 104 シミュレータ 105 ソースプログラム 106 オブジェクトコード 107 デバッグ情報 201 デバッガ 202 シミュレータ 203 デバッグ操作処理部 204 実行制御部 205 オブジェクトコード管理部 206 シンボル情報管理部 207 キャッシュアクセス情報採取部 208 シンボル配置変更情報生成部 209 CPUシミュレーション部 210 メモリシミュレーション部 211 キャッシュメモリシミュレーション部 212 時刻管理部 216 キャッシュアクセス情報表示部 601 CPU 602 主記憶装置 603 キャッシュメモリ 604 バス 701 CPU 702 メモリ 703、704、705、706 データレジスタ 707、708、709、710 アドレスレジスタ 711 プロセッサ状態語レジスタ 712 プログラムカウンタレジスタ 713 スタックポインタレジスタ 714 演算器 715 実行コード格納領域 716 データ格納領域 717 スタック領域 1201、1202、1203 アドレス空間メモリデ
ータ格納領域 1301 CPU 1302 主記憶装置 1303 命令キャッシュメモリ 1304 データキャッシュメモリ 1305 バス 1306 命令キャッシュメモリのタグアレイ 1307 命令キャッシュメモリのデータアレイ 1308 データキャッシュメモリのタグアレイ 1309 データキャッシュメモリのデータアレイ 1401 キャッシュメモリシミュレーション部 1402 命令キャッシュタグ情報管理部 1403 データキャッシュタグ情報管理部 1501 有効フラグ 1502 エントリ 1503 タグ 1504 有効なエントリの一例 1505 無効なエントリの一例 1701 キャッシュアクセス情報採取部 1702 命令キャッシュアクセス情報管理部 1703 データキャッシュアクセス情報管理部 1704 フェッチアクセス情報 1705 データリードアクセス情報 1706 データライトアクセス情報 2101 命令キャッシュ競合情報管理表 2102 データキャッシュ競合情報管理表

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 キャッシュメモリを塔載するプロセッサ
    上で実行されるプログラムのソフトウエア開発支援シス
    テムであって、 前記プロセッサの動作をシミュレーションするシミュレ
    ーション手段と、このシミュレーション手段から前記キ
    ャッシュメモリへのアクセスに関する情報を採取するキ
    ャッシュアクセス情報採取手段と、前記プログラムのシ
    ンボル情報を管理するシンボル情報管理手段と、前記プ
    ログラムのシンボルの配置を変更するためのシンボル配
    置変更情報を生成するシンボル配置変更情報生成手段と
    を備えたソフトウエア開発支援システム。
  2. 【請求項2】 キャッシュアクセス情報採取手段は、キ
    ャッシュメモリでのエントリの競合性ミスに関する情報
    を採取する請求項1記載のソフトウエア開発支援システ
    ム。
  3. 【請求項3】 シンボル配置変更情報生成手段は、キャ
    ッシュメモリでのエントリの競合性ミスを低減するため
    の情報を生成する請求項1または請求項2記載のソフト
    ウエア開発支援システム。
  4. 【請求項4】 キャッシュメモリを塔載するプロセッサ
    上で実行されるプログラムのソフトウエア開発支援シス
    テムであって、 前記プロセッサの動作をシミュレーションするシミュレ
    ーション手段と、このシミュレーション手段から前記キ
    ャッシュメモリへのアクセスに関する情報を採取するキ
    ャッシュアクセス情報採取手段と、前記プログラムのシ
    ンボル情報を管理するシンボル情報管理手段と、前記シ
    ンボル情報を用いて前記キャッシュアクセスの情報を表
    示する表示手段とを備えたソフトウエア開発支援システ
    ム。
  5. 【請求項5】 キャッシュアクセス情報採取手段は、ア
    クセス対象のアドレスおよびアクセス時のプログラムカ
    ウンタ値、スタックポインタ値ならびにアクセスがヒッ
    トかどうかの情報を採取する請求項4記載のソフトウエ
    ア開発支援システム。
  6. 【請求項6】 表示手段は、キャッシュメモリでのエン
    トリ別に分類して表示する請求項4または請求項5記載
    のソフトウエア開発支援システム。
JP10013878A 1997-06-24 1998-01-27 ソフトウエア開発支援システム Pending JPH1173329A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10013878A JPH1173329A (ja) 1997-06-24 1998-01-27 ソフトウエア開発支援システム

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP9-166777 1997-06-24
JP16677797 1997-06-24
JP10013878A JPH1173329A (ja) 1997-06-24 1998-01-27 ソフトウエア開発支援システム

Publications (1)

Publication Number Publication Date
JPH1173329A true JPH1173329A (ja) 1999-03-16

Family

ID=26349738

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10013878A Pending JPH1173329A (ja) 1997-06-24 1998-01-27 ソフトウエア開発支援システム

Country Status (1)

Country Link
JP (1) JPH1173329A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005122506A (ja) * 2003-10-17 2005-05-12 Matsushita Electric Ind Co Ltd コンパイラ装置
JP2008015941A (ja) * 2006-07-07 2008-01-24 Fujitsu Ltd プログラム調整装置およびプログラム調整方法
JP2010003171A (ja) * 2008-06-20 2010-01-07 Toshiba Corp デバッグ支援装置
JP2011028774A (ja) * 2004-12-29 2011-02-10 Intel Corp マルチプロセッサ環境におけるトランザクションベースの共有データオペレーション
JP2011048413A (ja) * 2009-08-25 2011-03-10 Fujitsu Ltd 記録装置、記録方法、及び記録プログラム
JP2011081836A (ja) * 2010-12-20 2011-04-21 Panasonic Corp コンパイラ装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005122506A (ja) * 2003-10-17 2005-05-12 Matsushita Electric Ind Co Ltd コンパイラ装置
JP2011028774A (ja) * 2004-12-29 2011-02-10 Intel Corp マルチプロセッサ環境におけるトランザクションベースの共有データオペレーション
JP2008015941A (ja) * 2006-07-07 2008-01-24 Fujitsu Ltd プログラム調整装置およびプログラム調整方法
JP2010003171A (ja) * 2008-06-20 2010-01-07 Toshiba Corp デバッグ支援装置
JP2011048413A (ja) * 2009-08-25 2011-03-10 Fujitsu Ltd 記録装置、記録方法、及び記録プログラム
JP2011081836A (ja) * 2010-12-20 2011-04-21 Panasonic Corp コンパイラ装置

Similar Documents

Publication Publication Date Title
US5615357A (en) System and method for verifying processor performance
US6973417B1 (en) Method and system for simulating execution of a target program in a simulated target system
US10509713B2 (en) Observation by a debug host with memory model and timing offset calculation between instruction and data traces of software execution carried on in a debug target having a main memory and a cache arrangement
KR100292642B1 (ko) 방해없는 코드 계측을 위한 시스템 및 방법
US6751583B1 (en) Hardware and software co-simulation including simulating a target processor using binary translation
US6263302B1 (en) Hardware and software co-simulation including simulating the cache of a target processor
US8086438B2 (en) Method and system for instruction-set architecture simulation using just in time compilation
CN102236541A (zh) 预加载指令控制
Herdt et al. Fast and accurate performance evaluation for RISC-V using virtual prototypes
Tarditi Design and implementation of code optimizations for a type- directed compiler for Standard ML
Lee et al. Timed compiled-code simulation of embedded software for performance analysis of SOC design
JPH1173329A (ja) ソフトウエア開発支援システム
Mitchell et al. A workbench for computer architects
JP4342392B2 (ja) ソフトウェア検証モデル生成方法
Jünger et al. Fast SystemC processor models with unicorn
JP2000293557A (ja) 消費電力のシミュレーション方法
Magnusson Partial translation
JP2002334128A (ja) 半導体集積回路の消費電力シミュレーション方法
Wood The design and evaluation of in-cache address translation
Cooksey Content-sensitive data prefetching
JPH05189307A (ja) 計算機システム
JP2000242529A (ja) プログラム開発支援装置および開発支援システムおよび記録媒体
JP2000020345A (ja) マイクロプロセッサ及びデータ処理システム
JPH10187484A (ja) シミュレータ
JP3324542B2 (ja) 仮想マシン