JPH1166037A - シミュレータ - Google Patents
シミュレータInfo
- Publication number
- JPH1166037A JPH1166037A JP23902897A JP23902897A JPH1166037A JP H1166037 A JPH1166037 A JP H1166037A JP 23902897 A JP23902897 A JP 23902897A JP 23902897 A JP23902897 A JP 23902897A JP H1166037 A JPH1166037 A JP H1166037A
- Authority
- JP
- Japan
- Prior art keywords
- model
- instruction
- time
- processing
- cpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004088 simulation Methods 0.000 claims abstract description 42
- 238000000034 method Methods 0.000 claims description 47
- 238000012545 processing Methods 0.000 abstract description 76
- 230000006870 function Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 15
- 239000000284 extract Substances 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 239000013256 coordination polymer Substances 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000005094 computer simulation Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Accessory Devices And Overall Control Thereof (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
(57)【要約】
【解決手段】 シミュレーションの対象となる装置のC
PUモデル1には、命令の種類に応じたパイプライン処
理をしてその命令の実行時間を取り出すパイプライン機
能部11を設ける。計数部3は、命令毎にCPUモデル
1からその命令の実行時間を受け取る。該当する場合に
はデバイスモデル部5をアクセスし、デバイスアクセス
のための実行時間を受け取る。これらの実行時間を累積
してログファイル2に出力する。 【効果】 CPUモデル1の側でパイプライン処理によ
り命令の種類に応じた実行時間を得るので、計数部3は
実行時間の累積のみでシミュレーション時間を計算で
き、ハードウェアモデルとの同期も容易に行われる。
PUモデル1には、命令の種類に応じたパイプライン処
理をしてその命令の実行時間を取り出すパイプライン機
能部11を設ける。計数部3は、命令毎にCPUモデル
1からその命令の実行時間を受け取る。該当する場合に
はデバイスモデル部5をアクセスし、デバイスアクセス
のための実行時間を受け取る。これらの実行時間を累積
してログファイル2に出力する。 【効果】 CPUモデル1の側でパイプライン処理によ
り命令の種類に応じた実行時間を得るので、計数部3は
実行時間の累積のみでシミュレーション時間を計算で
き、ハードウェアモデルとの同期も容易に行われる。
Description
【0001】
【発明の属する技術分野】本発明は、プロセッサがプロ
グラムを実行してハードウェアを制御するような装置の
動作を、コンピュータ上で検証するシミュレータに関す
る。
グラムを実行してハードウェアを制御するような装置の
動作を、コンピュータ上で検証するシミュレータに関す
る。
【0002】
【従来の技術】プリンタやファクシミリ装置等の多くの
機器は、いずれもプロセッサによりその動作を制御され
る。プロセッサは、これらの機器に組み込まれた各種の
機構をファームウェアプログラムに従って制御する。こ
のような装置を制御するプログラムの開発段階では、そ
のプログラムが装置を正常に制御するかどうかを検証す
る。そしてその動作最適化のために、繰り返しシミュレ
ーションが行われる。こうしたシミュレーションに使用
されるシミュレータは、コンピュータ上で装置のプロセ
ッサやハードウェアをモデル化し、実際の装置が動作す
る状態をコンピュータ上で作り出しシミュレートする。
機器は、いずれもプロセッサによりその動作を制御され
る。プロセッサは、これらの機器に組み込まれた各種の
機構をファームウェアプログラムに従って制御する。こ
のような装置を制御するプログラムの開発段階では、そ
のプログラムが装置を正常に制御するかどうかを検証す
る。そしてその動作最適化のために、繰り返しシミュレ
ーションが行われる。こうしたシミュレーションに使用
されるシミュレータは、コンピュータ上で装置のプロセ
ッサやハードウェアをモデル化し、実際の装置が動作す
る状態をコンピュータ上で作り出しシミュレートする。
【0003】トレース型のシミュレータは、システムク
ロックを1つずつカウントし、モデル化したファイルの
状態を動作タイミングや動作時間あるいは動作中に使用
したデータを含めてログファイルに記録する。また、プ
ロファイラ型のシミュレータは、CPU(中央演算ユニ
ット)の命令をエミュレートして、各種の命令が発せら
れたとき、その命令を処理するために必要な時間を演算
処理により求めたり、ライト命令が何回、キャッシュヒ
ットが何回、メモリやI/Oの読み出しが何回といった
統計的データをログファイルに出力する。
ロックを1つずつカウントし、モデル化したファイルの
状態を動作タイミングや動作時間あるいは動作中に使用
したデータを含めてログファイルに記録する。また、プ
ロファイラ型のシミュレータは、CPU(中央演算ユニ
ット)の命令をエミュレートして、各種の命令が発せら
れたとき、その命令を処理するために必要な時間を演算
処理により求めたり、ライト命令が何回、キャッシュヒ
ットが何回、メモリやI/Oの読み出しが何回といった
統計的データをログファイルに出力する。
【0004】
【発明が解決しようとする課題】ところで、上記のよう
な従来のシミュレータには、次のような解決すべき課題
があった。装置の動作を1クロックずつトレースしてい
くようなトレース型のシミュレータは、正確に装置全体
の動作を解析できるという利点を有する一方、全てのシ
ミュレーションを終了するためには非常に多くの時間を
必要とする。従って、ファームウェアプログラムを改良
しながら繰り返しシミュレーションをする場合に、開発
時間が長くなるという問題があった。一方、プロファイ
ラ型のシミュレータでは、メモリや入出力装置にアクセ
スを行う際のアクセス時間を高速に積算することができ
るが、実際のアクセス動作をシミュレーションしてはい
ない。従って、ハードウェアモデルと組み合わせた場合
の動作の検証には不十分であった。
な従来のシミュレータには、次のような解決すべき課題
があった。装置の動作を1クロックずつトレースしてい
くようなトレース型のシミュレータは、正確に装置全体
の動作を解析できるという利点を有する一方、全てのシ
ミュレーションを終了するためには非常に多くの時間を
必要とする。従って、ファームウェアプログラムを改良
しながら繰り返しシミュレーションをする場合に、開発
時間が長くなるという問題があった。一方、プロファイ
ラ型のシミュレータでは、メモリや入出力装置にアクセ
スを行う際のアクセス時間を高速に積算することができ
るが、実際のアクセス動作をシミュレーションしてはい
ない。従って、ハードウェアモデルと組み合わせた場合
の動作の検証には不十分であった。
【0005】また、プロセッサが命令を実行し、外部デ
バイスにアクセスをする度にその命令の内容やアクセス
対象となるデバイスに応じて想定される実行時間を累積
して処理時間や処理速度をシミュレートするが、この場
合、シミュレータはシミュレーションの対象となるプロ
セッサの各命令に対応する処理時間、その他のデータを
蓄積し、プロセッサ毎に必要なデータを取り出し、シミ
ュレーションを実行する必要があった。従って、シミュ
レータ側では予め様々なデータを蓄積しておかなければ
ならない。
バイスにアクセスをする度にその命令の内容やアクセス
対象となるデバイスに応じて想定される実行時間を累積
して処理時間や処理速度をシミュレートするが、この場
合、シミュレータはシミュレーションの対象となるプロ
セッサの各命令に対応する処理時間、その他のデータを
蓄積し、プロセッサ毎に必要なデータを取り出し、シミ
ュレーションを実行する必要があった。従って、シミュ
レータ側では予め様々なデータを蓄積しておかなければ
ならない。
【0006】
【課題を解決するための手段】本発明は以上の点を解決
するため次の構成を採用する。 〈構成1〉プロセッサが所定のプログラムを実行して任
意のハードウェアを制御する装置の動作をシミュレーシ
ョンするために、コンピュータ上で、上記プロセッサと
ハードウェアとをモデル化したものにおいて、上記プロ
セッサモデルは、各ハードウェアモデルにアクセスし
て、これらをアクセスする処理をシミュレートするとと
もに、シミュレーションの対象となる装置の特性に応じ
た段数だけその命令を保持するパイプライン機能部を設
け、その命令実行のための実行時間情報を取得し、上記
CPUモデルがハードウェアモデルをアクセスしたと
き、上記ハードウェアモデルが通知するそのアクセスに
要する実行時間情報と、上記CPUモデルが取得した実
行時間情報とを累積して計数する計数部とを備えたこと
を特徴とするシミュレータ。
するため次の構成を採用する。 〈構成1〉プロセッサが所定のプログラムを実行して任
意のハードウェアを制御する装置の動作をシミュレーシ
ョンするために、コンピュータ上で、上記プロセッサと
ハードウェアとをモデル化したものにおいて、上記プロ
セッサモデルは、各ハードウェアモデルにアクセスし
て、これらをアクセスする処理をシミュレートするとと
もに、シミュレーションの対象となる装置の特性に応じ
た段数だけその命令を保持するパイプライン機能部を設
け、その命令実行のための実行時間情報を取得し、上記
CPUモデルがハードウェアモデルをアクセスしたと
き、上記ハードウェアモデルが通知するそのアクセスに
要する実行時間情報と、上記CPUモデルが取得した実
行時間情報とを累積して計数する計数部とを備えたこと
を特徴とするシミュレータ。
【0007】〈構成2〉構成1において、CPUモデル
は、パイプライン機能部がパイプラインを1段シフトす
る毎にシミュレーション時間を更新するようにして、実
行時間情報を取得することを特徴とするシミュレータ。
は、パイプライン機能部がパイプラインを1段シフトす
る毎にシミュレーション時間を更新するようにして、実
行時間情報を取得することを特徴とするシミュレータ。
【0008】
【発明の実施の形態】以下、本発明の実施の形態を具体
例を用いて説明する。 〈シミュレータの構成〉図1は、シミュレータのブロッ
ク図である。このシミュレータは、プロセッサモデル
(以下CPUモデルと呼ぶ)1がシミュレーションを行
い、その結果をログファイル2に記録する構成のもので
ある。このシミュレータはプロファイラ型のシミュレー
タで、計数部3がプログラムの各命令に対する動作時間
を累積して計算する構成となっている。この計数部3に
は、アドレスデコーダ4を介してデバイスモデル部5が
接続されている。デバイスモデル部5には、ROM(リ
ード・オンリ・メモリ)モデル6や、DRAM(ダイナ
ミック・ランダム・アクセス・メモリ)モデル7や、I
/O(入出力装置)モデル8等のハードウェアモデルが
設けられている。
例を用いて説明する。 〈シミュレータの構成〉図1は、シミュレータのブロッ
ク図である。このシミュレータは、プロセッサモデル
(以下CPUモデルと呼ぶ)1がシミュレーションを行
い、その結果をログファイル2に記録する構成のもので
ある。このシミュレータはプロファイラ型のシミュレー
タで、計数部3がプログラムの各命令に対する動作時間
を累積して計算する構成となっている。この計数部3に
は、アドレスデコーダ4を介してデバイスモデル部5が
接続されている。デバイスモデル部5には、ROM(リ
ード・オンリ・メモリ)モデル6や、DRAM(ダイナ
ミック・ランダム・アクセス・メモリ)モデル7や、I
/O(入出力装置)モデル8等のハードウェアモデルが
設けられている。
【0009】〈CPUモデルの構成〉CPUモデル1に
は、パイプライン機能部11、命令実行処理部12、命
令フェッチ処理部13、分岐処理部14、プログラムカ
ウンタ15及びレジスタファイル16が設けられてい
る。この図に示す命令フェッチ処理部13は、CPUモ
デル1が実行するプログラムから命令を1つずつ取り出
す部分である。
は、パイプライン機能部11、命令実行処理部12、命
令フェッチ処理部13、分岐処理部14、プログラムカ
ウンタ15及びレジスタファイル16が設けられてい
る。この図に示す命令フェッチ処理部13は、CPUモ
デル1が実行するプログラムから命令を1つずつ取り出
す部分である。
【0010】パイプライン機能部11は、インストラク
ションフェッチステージIFとデコードステージDと実
行ステージEXを備える。インストラクションフェッチ
ステージIFは命令フェッチ処理部13が取り出した命
令を最初に格納する部分である。デコードステージD
は、シミュレーションの対象となるCPU(中央処理装
置)のハードウェア構造に対応するように設定され、C
PUのパイプラインが1つ進む度にデータをレジスタ上
でシフトさせる部分である。
ションフェッチステージIFとデコードステージDと実
行ステージEXを備える。インストラクションフェッチ
ステージIFは命令フェッチ処理部13が取り出した命
令を最初に格納する部分である。デコードステージD
は、シミュレーションの対象となるCPU(中央処理装
置)のハードウェア構造に対応するように設定され、C
PUのパイプラインが1つ進む度にデータをレジスタ上
でシフトさせる部分である。
【0011】また、実行ステージEXは、CPUのパイ
プラインが1つ進む度にデコードステージDから移動し
てきた新たな命令を保持し、命令実行処理部12に送り
だす部分である。命令実行処理部12は、パイプライン
機能部11の実行ステージEXから受け入れた命令を解
釈し、シミュレーションの対象となるCPUと同一の処
理を実行する部分である。命令実行処理部12には、デ
ータロード処理部18とデータストア処理部19とが設
けられている。
プラインが1つ進む度にデコードステージDから移動し
てきた新たな命令を保持し、命令実行処理部12に送り
だす部分である。命令実行処理部12は、パイプライン
機能部11の実行ステージEXから受け入れた命令を解
釈し、シミュレーションの対象となるCPUと同一の処
理を実行する部分である。命令実行処理部12には、デ
ータロード処理部18とデータストア処理部19とが設
けられている。
【0012】データロード処理部18は、命令実行処理
部12の実行結果がロード命令だった場合に、デバイス
モデル部5をアクセスしてデータのリード処理を行う部
分である。データストア処理部19は、命令実行処理部
12による実行結果がストア命令だった場合に、デバイ
スモデル部5をアクセスしてデータのライト処理を行う
部分である。プログラムカウンタ15は、プログラムか
ら命令を一つずつフェッチするためのアドレスを保持す
る部分である。レジスタファイル16は、シミュレーシ
ョンの対象となるCPUが持つレジスタのモデルを集め
た部分である。分岐処理部14は、命令実行処理部12
による命令が分岐命令だった場合に、その分岐先アドレ
スを保持する部分である。
部12の実行結果がロード命令だった場合に、デバイス
モデル部5をアクセスしてデータのリード処理を行う部
分である。データストア処理部19は、命令実行処理部
12による実行結果がストア命令だった場合に、デバイ
スモデル部5をアクセスしてデータのライト処理を行う
部分である。プログラムカウンタ15は、プログラムか
ら命令を一つずつフェッチするためのアドレスを保持す
る部分である。レジスタファイル16は、シミュレーシ
ョンの対象となるCPUが持つレジスタのモデルを集め
た部分である。分岐処理部14は、命令実行処理部12
による命令が分岐命令だった場合に、その分岐先アドレ
スを保持する部分である。
【0013】〈シミュレータの概略動作〉図2は、シミ
ュレータの概略動作を示すフローチャートである。図1
に示すシミュレータが処理対象となる装置のシミュレー
ションを行う場合、この図に示すような手順で各処理を
実行する。まず、ステップS1において、CPUモデル
1がプログラムから命令を1命令取り出す。次に、ステ
ップS2において、その命令がCPUモデルの内部処理
か外部アクセス処理かを判断する。外部アクセス処理の
場合には、ステップS3において、計数部3に処理を移
す。即ち、CPUモデル1のデータロード処理部18や
データストア処理部19が計数部3に該当するデバイス
モデルのアドレスを渡し、計数部3はこれによってデバ
イスモデル部5のアクセスを行う。このアクセスはステ
ップS4において、アドレスデコーダ4が実行する。
ュレータの概略動作を示すフローチャートである。図1
に示すシミュレータが処理対象となる装置のシミュレー
ションを行う場合、この図に示すような手順で各処理を
実行する。まず、ステップS1において、CPUモデル
1がプログラムから命令を1命令取り出す。次に、ステ
ップS2において、その命令がCPUモデルの内部処理
か外部アクセス処理かを判断する。外部アクセス処理の
場合には、ステップS3において、計数部3に処理を移
す。即ち、CPUモデル1のデータロード処理部18や
データストア処理部19が計数部3に該当するデバイス
モデルのアドレスを渡し、計数部3はこれによってデバ
イスモデル部5のアクセスを行う。このアクセスはステ
ップS4において、アドレスデコーダ4が実行する。
【0014】アドレスデコーダ4によってアクセスされ
たデバイスモデル部5のいずれかのモデルは、リード処
理あるいはライト処理を実行し、その結果を返す。続い
てCPUモデル1は、次の命令の実行を行う。この処理
を通じて、CPUモデル1には、デバイスモデル部5の
ROMモデル6、DRAMモデル7、周辺I/Oモデル
8のいずれかのモデルから、その処理時間に相当する情
報を受け入れ、実行時間の累積を行う。
たデバイスモデル部5のいずれかのモデルは、リード処
理あるいはライト処理を実行し、その結果を返す。続い
てCPUモデル1は、次の命令の実行を行う。この処理
を通じて、CPUモデル1には、デバイスモデル部5の
ROMモデル6、DRAMモデル7、周辺I/Oモデル
8のいずれかのモデルから、その処理時間に相当する情
報を受け入れ、実行時間の累積を行う。
【0015】なお、ステップS2で、外部アクセスでな
いと判断されると、ステップS6において、CPUモデ
ルの内部処理が実行される。いずれの場合においても、
CPUモデル1が所定の命令を実行する場合に、その都
度、パイプライン機能部11において、これから説明す
るパイプライン処理が実行される。
いと判断されると、ステップS6において、CPUモデ
ルの内部処理が実行される。いずれの場合においても、
CPUモデル1が所定の命令を実行する場合に、その都
度、パイプライン機能部11において、これから説明す
るパイプライン処理が実行される。
【0016】図1に示すCPUモデル1は、各命令のパ
イプライン処理の結果に基づく実行時間と、実行した命
令等の種類を、計数部3に出力し、所定の演算処理が実
行されてログファイル2に記録される。ログファイル2
には、CPUモデル1がプログラムを処理するために実
行した命令数や動作時間、その他の各種の動作履歴が蓄
積される。
イプライン処理の結果に基づく実行時間と、実行した命
令等の種類を、計数部3に出力し、所定の演算処理が実
行されてログファイル2に記録される。ログファイル2
には、CPUモデル1がプログラムを処理するために実
行した命令数や動作時間、その他の各種の動作履歴が蓄
積される。
【0017】〈CPUモデルの動作〉図3には、CPU
モデルの動作フローチャートを示す。この図に示す動作
を実行することによって、CPUモデルは、命令毎にパ
イプラインを所定の段数進め、その都度シミュレーショ
ン時間にその段数に相当する時間を追加する処理を実行
する。その結果が命令ごとの実行時間になる。即ち、ま
ずステップS1において、パイプラインを1段進めるの
に必要な時間を計算結果に追加する。初期値は“0”で
あって、1段毎に、例えば10n(ナノ)秒とする。
モデルの動作フローチャートを示す。この図に示す動作
を実行することによって、CPUモデルは、命令毎にパ
イプラインを所定の段数進め、その都度シミュレーショ
ン時間にその段数に相当する時間を追加する処理を実行
する。その結果が命令ごとの実行時間になる。即ち、ま
ずステップS1において、パイプラインを1段進めるの
に必要な時間を計算結果に追加する。初期値は“0”で
あって、1段毎に、例えば10n(ナノ)秒とする。
【0018】次のステップS2では、デコードステージ
Dの内容を実行ステージEXに移動し、インストラクシ
ョンフェッチステージIFの内容をデコードステージD
に移動する。即ち、これによって、順番にパイプライン
を1段ずつ進める。従って、図1に示したパイプライン
機能部11の内部で命令が1段ずつシフトされる。次
に、ステップS3において、実行ステージEXに保持さ
れた命令を実行する。もし、その命令がロード/ストア
命令ならば、図1に示す計数部3を通じてデバイスモデ
ル部5がアクセスされ、既に説明した通りのシミュレー
ションが実行される。
Dの内容を実行ステージEXに移動し、インストラクシ
ョンフェッチステージIFの内容をデコードステージD
に移動する。即ち、これによって、順番にパイプライン
を1段ずつ進める。従って、図1に示したパイプライン
機能部11の内部で命令が1段ずつシフトされる。次
に、ステップS3において、実行ステージEXに保持さ
れた命令を実行する。もし、その命令がロード/ストア
命令ならば、図1に示す計数部3を通じてデバイスモデ
ル部5がアクセスされ、既に説明した通りのシミュレー
ションが実行される。
【0019】ステップS4では、命令が分岐命令かどう
かが判断される。分岐命令であれば、ステップS7にお
いて、命令フェッチアドレスの変更が行われる。即ち、
図1に示すプログラムカウンタ15の内容を分岐先アド
レスに変更する。また、分岐命令でなければ、ステップ
S5にそのまま進み、プログラムカウンタ16に示され
ているアドレスを元にデバイスモデル部5に対し読み出
しを依頼し、更に次の命令をフェッチしてインストラク
ションフェッチステージIFにその命令を格納する。ス
テップS6では、ステップS5で取り出した命令のアド
レスの次の命令が存在するアドレスにプログラムカウン
タ15の内容を変更する。CPUモデルはこのようにし
て順に命令を取り出し、パイプライン機能部11におい
てパイプライン処理を実行すると共に、パイプライン機
能部11から取り出された命令を1つずつ実行する。
かが判断される。分岐命令であれば、ステップS7にお
いて、命令フェッチアドレスの変更が行われる。即ち、
図1に示すプログラムカウンタ15の内容を分岐先アド
レスに変更する。また、分岐命令でなければ、ステップ
S5にそのまま進み、プログラムカウンタ16に示され
ているアドレスを元にデバイスモデル部5に対し読み出
しを依頼し、更に次の命令をフェッチしてインストラク
ションフェッチステージIFにその命令を格納する。ス
テップS6では、ステップS5で取り出した命令のアド
レスの次の命令が存在するアドレスにプログラムカウン
タ15の内容を変更する。CPUモデルはこのようにし
て順に命令を取り出し、パイプライン機能部11におい
てパイプライン処理を実行すると共に、パイプライン機
能部11から取り出された命令を1つずつ実行する。
【0020】〈パイプライン処理〉上記のようなパイプ
ライン処理を実行することによって、CPU1の内部に
おけるシミュレーション時間が順に計算され、その結果
が取り出される。図4には、パイプライン処理の内容説
明図を示す。この図を用いて、パイプライン処理の具体
的な内容を説明する。まず、CPUモデル1の内部のパ
イプラインは、動作開始当初即ちシミュレーション時間
が“0”のとき、インストラクションフェッチステージ
IF、デコードステージD、実行ステージEX共に変数
が初期化される。インストラクションフェッチステージ
IFとデコードステージDには、NOP命令即ち何も処
理を実行しない命令が書き込まれる。
ライン処理を実行することによって、CPU1の内部に
おけるシミュレーション時間が順に計算され、その結果
が取り出される。図4には、パイプライン処理の内容説
明図を示す。この図を用いて、パイプライン処理の具体
的な内容を説明する。まず、CPUモデル1の内部のパ
イプラインは、動作開始当初即ちシミュレーション時間
が“0”のとき、インストラクションフェッチステージ
IF、デコードステージD、実行ステージEX共に変数
が初期化される。インストラクションフェッチステージ
IFとデコードステージDには、NOP命令即ち何も処
理を実行しない命令が書き込まれる。
【0021】なお、このパイプラインは、実際にはシミ
ュレータのメモリ上に設定した一連のデータ保持領域に
より実現され、これらの領域のデータをパイプライン状
に順に書き換えていくことによって以下の動作が実行さ
れる。当初、プログラムカウンタ15は、プログラム開
始アドレスを示している。こうして、パイプラインの初
期化が終了し、シミュレーションが開始されると、シミ
ュレータはCPUモデル1に制御を移す。
ュレータのメモリ上に設定した一連のデータ保持領域に
より実現され、これらの領域のデータをパイプライン状
に順に書き換えていくことによって以下の動作が実行さ
れる。当初、プログラムカウンタ15は、プログラム開
始アドレスを示している。こうして、パイプラインの初
期化が終了し、シミュレーションが開始されると、シミ
ュレータはCPUモデル1に制御を移す。
【0022】CPUモデル1は、シミュレーション時間
をパイプライン1段分即ち10だけ進めると、インスト
ラクションフェッチステージIF及びデコードステージ
Dに格納された命令NOPが順に1段ずつ送られ、NO
Pは実行ステージEXに格納される。NOPは何もしな
い命令だから次に進む。なお、インストラクションフェ
ッチステージIFには、リード命令RDが読み込まれて
いる。このときのシミュレーション時間は10n秒であ
って、リード命令RDが実行される時間は10n秒に確
定している。CPUモデル1は、ここで図1に示した計
数部3に対してROMモデル6のメモリリードを依頼す
る。なお、こうした命令は常にキャッシュヒットすると
いう前提で処理され、シミュレーション時間の増加はな
い。
をパイプライン1段分即ち10だけ進めると、インスト
ラクションフェッチステージIF及びデコードステージ
Dに格納された命令NOPが順に1段ずつ送られ、NO
Pは実行ステージEXに格納される。NOPは何もしな
い命令だから次に進む。なお、インストラクションフェ
ッチステージIFには、リード命令RDが読み込まれて
いる。このときのシミュレーション時間は10n秒であ
って、リード命令RDが実行される時間は10n秒に確
定している。CPUモデル1は、ここで図1に示した計
数部3に対してROMモデル6のメモリリードを依頼す
る。なお、こうした命令は常にキャッシュヒットすると
いう前提で処理され、シミュレーション時間の増加はな
い。
【0023】次に、プログラムカウンタがカウントアッ
プして次の命令読み出しが実行される。これによって、
シミュレーション時間が10n秒増やされ、20n秒と
なる。ここで、パイプラインが1段進み、既にインスト
ラクションフェッチステージIFにフェッチしたリード
命令RDは、デコードステージDに進む。実行ステージ
EXには、もう一度NOP命令がくる。なお、このシミ
ュレーション時間20n秒のとき読み込まれた命令は例
えばレジスタ間演算命令I1とする。
プして次の命令読み出しが実行される。これによって、
シミュレーション時間が10n秒増やされ、20n秒と
なる。ここで、パイプラインが1段進み、既にインスト
ラクションフェッチステージIFにフェッチしたリード
命令RDは、デコードステージDに進む。実行ステージ
EXには、もう一度NOP命令がくる。なお、このシミ
ュレーション時間20n秒のとき読み込まれた命令は例
えばレジスタ間演算命令I1とする。
【0024】更に、処理が進み、シミュレーション時間
が30nSとなると、パイプラインが1段進み、インス
トラクションフェッチステージIFには新たなレジスタ
間演算命令I2がフェッチされ、デコードステージDに
はレジスタ間演算命令I1がくる。更に、実行ステージ
EXにはリード命令RDがくる。このタイミングでCP
Uモデル1はデータロード処理部11を起動し、計数部
3を呼び出す。このときのシミュレーション時間は30
n秒となっている。即ち、リード命令はシミュレーショ
ン時間30n秒のとき発生して開始される。
が30nSとなると、パイプラインが1段進み、インス
トラクションフェッチステージIFには新たなレジスタ
間演算命令I2がフェッチされ、デコードステージDに
はレジスタ間演算命令I1がくる。更に、実行ステージ
EXにはリード命令RDがくる。このタイミングでCP
Uモデル1はデータロード処理部11を起動し、計数部
3を呼び出す。このときのシミュレーション時間は30
n秒となっている。即ち、リード命令はシミュレーショ
ン時間30n秒のとき発生して開始される。
【0025】計数部3は、最初にCPUモデル1から呼
び出されたとき受け取ったアドレス情報を元に、例えば
ROMモデル6からそのアクセス時間に相当する情報を
取り出す。計数部3は、CPUモデル1から受け取った
アドレス情報をアドレスデコーダ4に渡し、デバイスモ
デル部5の中のハードウェアモデルを選択する。この場
合のハードウェアモデルがDRAMモデル7とすれば、
DRAMモデル7からアクセスサイクル120n秒を取
り出し、シミュレーション時間30n秒に加えて150
n秒とする。更に、DRAMモデル7のバッファから指
定されたアドレスのデータを取り出し、CPUモデル1
に返す。こうして、データのリード命令が完了する。従
って、リード終了時刻は150n秒となる。以下、シミ
ュレーション時間が220n秒となるまでレジスタ間演
算命令が続く。
び出されたとき受け取ったアドレス情報を元に、例えば
ROMモデル6からそのアクセス時間に相当する情報を
取り出す。計数部3は、CPUモデル1から受け取った
アドレス情報をアドレスデコーダ4に渡し、デバイスモ
デル部5の中のハードウェアモデルを選択する。この場
合のハードウェアモデルがDRAMモデル7とすれば、
DRAMモデル7からアクセスサイクル120n秒を取
り出し、シミュレーション時間30n秒に加えて150
n秒とする。更に、DRAMモデル7のバッファから指
定されたアドレスのデータを取り出し、CPUモデル1
に返す。こうして、データのリード命令が完了する。従
って、リード終了時刻は150n秒となる。以下、シミ
ュレーション時間が220n秒となるまでレジスタ間演
算命令が続く。
【0026】その後、ライト命令WRが実行される。こ
れらもリード命令RDと同様に、パイプライン上で順に
シフトされる。そして、CPUモデル1からその都度出
力される図4に示すようなシミュレーション時間を計数
部3が受け入れて、外部アクセスの場合にはデバイスモ
デル部5のいずれかのハードウェアモデルからアクセス
サイクルを取り出し、CPUモデル1の出力に加算する
といった動作を繰り返して所定のプログラムのシミュレ
ーション時間を累積加算する。また、こうしたシミュレ
ーション実行中の命令数やその他の情報を含めてログフ
ァイル2に書き込みを行う。
れらもリード命令RDと同様に、パイプライン上で順に
シフトされる。そして、CPUモデル1からその都度出
力される図4に示すようなシミュレーション時間を計数
部3が受け入れて、外部アクセスの場合にはデバイスモ
デル部5のいずれかのハードウェアモデルからアクセス
サイクルを取り出し、CPUモデル1の出力に加算する
といった動作を繰り返して所定のプログラムのシミュレ
ーション時間を累積加算する。また、こうしたシミュレ
ーション実行中の命令数やその他の情報を含めてログフ
ァイル2に書き込みを行う。
【0027】以上の動作を行うと、CPUモデル1が、
シミュレーションの対象となる装置の構成に対応したパ
イプライン機能部11を持つことにより、計数部3はシ
ミュレーションの対象となる装置のCPUの特性等を全
く意識することなく、CPUモデル1から受け取ったシ
ミュレーション時間に基づいて、自動的にシミュレーシ
ョン時間の累積加算を行い、所定の結果を得ることがで
きる。また、1段ずつ命令を実行する毎にシミュレーシ
ョン時間を更新していく動作を繰り返すため、ハードウ
ェアモデルとの動作上の同期が容易になる。
シミュレーションの対象となる装置の構成に対応したパ
イプライン機能部11を持つことにより、計数部3はシ
ミュレーションの対象となる装置のCPUの特性等を全
く意識することなく、CPUモデル1から受け取ったシ
ミュレーション時間に基づいて、自動的にシミュレーシ
ョン時間の累積加算を行い、所定の結果を得ることがで
きる。また、1段ずつ命令を実行する毎にシミュレーシ
ョン時間を更新していく動作を繰り返すため、ハードウ
ェアモデルとの動作上の同期が容易になる。
【0028】なお、上記パイプライン制御のシミュレー
ションは、制御クロックと同期した実際のレジスタへの
データ転送処理とは異なり、高速メモリ上でのデータの
書換え処理より実行できるため、CPUモデルにパイプ
ライン機能を持たせることによっても、シミュレーショ
ン時間の増大は防止できる。
ションは、制御クロックと同期した実際のレジスタへの
データ転送処理とは異なり、高速メモリ上でのデータの
書換え処理より実行できるため、CPUモデルにパイプ
ライン機能を持たせることによっても、シミュレーショ
ン時間の増大は防止できる。
【0029】〈シミュレータ全体の具体的な動作〉以下
には、本発明のシミュレータ全体の更に具体的な動作を
説明する。このようなシミュレータによって、例えばフ
ァクシミリやプリンタ等の制御用ファームウェアプログ
ラムの検証を行う。CPUモデル1は、ファクシミリや
プリンタ等に設けられたプロセッサをモデル化したもの
である。デバイスモデル部5は、プリンタ各部の機構を
モデル化したものである。プリンタの機構としてはメモ
リや搬送モータやスイッチ等がある。
には、本発明のシミュレータ全体の更に具体的な動作を
説明する。このようなシミュレータによって、例えばフ
ァクシミリやプリンタ等の制御用ファームウェアプログ
ラムの検証を行う。CPUモデル1は、ファクシミリや
プリンタ等に設けられたプロセッサをモデル化したもの
である。デバイスモデル部5は、プリンタ各部の機構を
モデル化したものである。プリンタの機構としてはメモ
リや搬送モータやスイッチ等がある。
【0030】コンピュータ上でモデル化されたプロセッ
サモデルやハードウェアモデルはいずれも、コンピュー
タのメモリ上に割りつけられたデータやサブルーチンで
ある。ハードウェアモデルがメモリとすれば、例えばラ
イトアクセスの場合には、アクセスアドレスとデータを
供給すると、そのデータを対応する場所に記憶する。図
1に示したCPUモデル1は、このようにプロセッサの
動作を実行する部分である。
サモデルやハードウェアモデルはいずれも、コンピュー
タのメモリ上に割りつけられたデータやサブルーチンで
ある。ハードウェアモデルがメモリとすれば、例えばラ
イトアクセスの場合には、アクセスアドレスとデータを
供給すると、そのデータを対応する場所に記憶する。図
1に示したCPUモデル1は、このようにプロセッサの
動作を実行する部分である。
【0031】計数部3は、CPUモデル1が実行する各
命令の実行時間を計数し、あるいはアドレスデコーダ4
を介してデバイスモデル部5をアクセスさせてその実行
時間を計数し、ログファイル2に格納する処理を行う部
分である。アドレスデコーダ4は、CPUモデル1が外
部アクセス要求を出したとき、そのアクセスアドレス
と、デバイスモデル部5側の各モデルのスタートアドレ
スやアクセス幅を比較して、デバイスモデル部5のどの
モデルに対するアクセスかを判定し、該当するモデルの
アクセスルーチンを呼び出す処理を行う部分である。
命令の実行時間を計数し、あるいはアドレスデコーダ4
を介してデバイスモデル部5をアクセスさせてその実行
時間を計数し、ログファイル2に格納する処理を行う部
分である。アドレスデコーダ4は、CPUモデル1が外
部アクセス要求を出したとき、そのアクセスアドレス
と、デバイスモデル部5側の各モデルのスタートアドレ
スやアクセス幅を比較して、デバイスモデル部5のどの
モデルに対するアクセスかを判定し、該当するモデルの
アクセスルーチンを呼び出す処理を行う部分である。
【0032】〈アドレスデコーダの機能〉図5には、ア
ドレスデコーダの機能説明図を示す。上記のようにアド
レスデコーダ4は、シミュレートするプログラムのアク
セスするべきアドレス9をCPUモデル1から受け入れ
ると、各モデルの属性情報を参照する。そして、その属
性情報とプログラムに従ってアクセスするアドレスとを
比較して、どのモデルをアクセスするものかを判断す
る。この判断の結果該当するハードウェアモデルに対し
て、アドレスを含む引き数が与えられる。アクセスアド
レスからハードウェアモデルの該当するデータ格納アド
レスへのアドレス変換処理自体は、アドレスデコーダか
ハードウェアモデルのいずれかで行えばよい。
ドレスデコーダの機能説明図を示す。上記のようにアド
レスデコーダ4は、シミュレートするプログラムのアク
セスするべきアドレス9をCPUモデル1から受け入れ
ると、各モデルの属性情報を参照する。そして、その属
性情報とプログラムに従ってアクセスするアドレスとを
比較して、どのモデルをアクセスするものかを判断す
る。この判断の結果該当するハードウェアモデルに対し
て、アドレスを含む引き数が与えられる。アクセスアド
レスからハードウェアモデルの該当するデータ格納アド
レスへのアドレス変換処理自体は、アドレスデコーダか
ハードウェアモデルのいずれかで行えばよい。
【0033】〈デバイスモデル〉図6に、デバイスモデ
ル部の例説明図を示す。各デバイスモデル部は、この図
に示すような属性情報と手続き情報とを持つ。属性情報
には、スタートアドレスとアクセスサイズ、アクセスサ
イクル及びバッファポインタが含まれる。また、手続き
情報としては、読み出し手続きと書き込み手続きが含ま
れる。スタートアドレスやアクセスサイズは、実際のフ
ァームウェア上で割り付けられるアドレスの値を示す。
従って、カーネル空間等へのアクセスがあった場合で
も、アドレスデコーダ4は、この属性情報を参照して、
どのデバイスモデル部に対するアクセスかを判断でき
る。
ル部の例説明図を示す。各デバイスモデル部は、この図
に示すような属性情報と手続き情報とを持つ。属性情報
には、スタートアドレスとアクセスサイズ、アクセスサ
イクル及びバッファポインタが含まれる。また、手続き
情報としては、読み出し手続きと書き込み手続きが含ま
れる。スタートアドレスやアクセスサイズは、実際のフ
ァームウェア上で割り付けられるアドレスの値を示す。
従って、カーネル空間等へのアクセスがあった場合で
も、アドレスデコーダ4は、この属性情報を参照して、
どのデバイスモデル部に対するアクセスかを判断でき
る。
【0034】入力したアドレスが、スタートアドレス以
上で、スタートアドレスとアクセスサイズとを加算した
値以下の値であれば、そのモデルをアクセスするアドレ
スと判断できる。そのアドレスはアドレスデコーダある
いはデバイスモデル部側で対応するアドレスに変換され
てアクセス処理が実行される。バッファポインタは、デ
バイスモデル部上のデータを書き込むべきアドレスを示
すポインタである。また、アクセスサイクルは、そのデ
バイスモデル部をアクセスする際に必要な実行時間情報
を示す。
上で、スタートアドレスとアクセスサイズとを加算した
値以下の値であれば、そのモデルをアクセスするアドレ
スと判断できる。そのアドレスはアドレスデコーダある
いはデバイスモデル部側で対応するアドレスに変換され
てアクセス処理が実行される。バッファポインタは、デ
バイスモデル部上のデータを書き込むべきアドレスを示
すポインタである。また、アクセスサイクルは、そのデ
バイスモデル部をアクセスする際に必要な実行時間情報
を示す。
【0035】ハードウェアモデルは手続き情報に従っ
て、データのリードライト等の手続きをして、所定の戻
り値を計数部に返す。手続き情報は、該当するアドレス
にデータを書き込んだり、該当するアドレスから戻り値
を求める処理を実行するサブルーチン等により構成され
る。
て、データのリードライト等の手続きをして、所定の戻
り値を計数部に返す。手続き情報は、該当するアドレス
にデータを書き込んだり、該当するアドレスから戻り値
を求める処理を実行するサブルーチン等により構成され
る。
【0036】〈アクセスサイクル読み出し〉図7には、
以上のシミュレータのアクセスサイクル読み出し動作フ
ローチャートを示す。上記のシミュレータは、CPUモ
デルが外部アクセス要求を行った場合に、そのアクセス
に必要な時間を求め、更にデバイスモデル部に対しデー
タの書き込みや読み出し等の処理を実行させる。図7に
示したものは、その際の実行時間を求めるためのアクセ
スサイクル読み出し動作を説明する図である。
以上のシミュレータのアクセスサイクル読み出し動作フ
ローチャートを示す。上記のシミュレータは、CPUモ
デルが外部アクセス要求を行った場合に、そのアクセス
に必要な時間を求め、更にデバイスモデル部に対しデー
タの書き込みや読み出し等の処理を実行させる。図7に
示したものは、その際の実行時間を求めるためのアクセ
スサイクル読み出し動作を説明する図である。
【0037】まず、ステップS1において、CPUモデ
ル1がアクセス要求を行うと、アドレスデコーダ4は、
ステップS2において、最初のモデルを選択する。例え
ば、図1に示した例では、ROMモデル6、DRAMモ
デル7及びI/Oモデル8の3種類のデバイスモデル部
が用意されている。アドレスデコーダ4は、これらのモ
デルのうち先頭から順番にその属性情報を参照し、モデ
ル選択処理を行う。即ち、図7のステップS3におい
て、最初に選択したモデルのスタートアドレスとアクセ
スサイズを取り出す。そして、ステップS4において、
現在のモデルに含まれるかどうかを判断する。
ル1がアクセス要求を行うと、アドレスデコーダ4は、
ステップS2において、最初のモデルを選択する。例え
ば、図1に示した例では、ROMモデル6、DRAMモ
デル7及びI/Oモデル8の3種類のデバイスモデル部
が用意されている。アドレスデコーダ4は、これらのモ
デルのうち先頭から順番にその属性情報を参照し、モデ
ル選択処理を行う。即ち、図7のステップS3におい
て、最初に選択したモデルのスタートアドレスとアクセ
スサイズを取り出す。そして、ステップS4において、
現在のモデルに含まれるかどうかを判断する。
【0038】この判断は、図5を用いて説明した通りの
アドレス比較による。アドレスが所定の範囲ならば、選
択したモデルが該当するものと判断し、ステップS5で
更に別の属性データを読む。即ち、その属性データの中
からアクセスサイクルを表示する部分を取り出し、戻り
値Xに書き込む。そして、ステップS6において、CP
Uモデル1にこの戻り値Xを返し、処理を終了する。な
お、ステップS4において、アドレスが所定の範囲に無
い場合にはステップS7に進み、次のモデルを選択す
る。
アドレス比較による。アドレスが所定の範囲ならば、選
択したモデルが該当するものと判断し、ステップS5で
更に別の属性データを読む。即ち、その属性データの中
からアクセスサイクルを表示する部分を取り出し、戻り
値Xに書き込む。そして、ステップS6において、CP
Uモデル1にこの戻り値Xを返し、処理を終了する。な
お、ステップS4において、アドレスが所定の範囲に無
い場合にはステップS7に進み、次のモデルを選択す
る。
【0039】もし、次のモデルがもう無いと判断される
と、ステップS8からステップS9に移り、アドレスエ
ラー処理が行われる。一方、次のモデルが存在する場合
には、再びステップS3に戻り、そのモデルのスタート
アドレスとアクセスサイズを取り出して、ステップS4
に進む。こうして、該当するデバイスモデル部から実行
時間を計算するためのアクセスサイクルを読み出し、計
数部3に渡す。計数部3は、これにより実行時間計算を
行う。実行時間は、アクセスサイクル×1クロック分の
時間で計算できる。
と、ステップS8からステップS9に移り、アドレスエ
ラー処理が行われる。一方、次のモデルが存在する場合
には、再びステップS3に戻り、そのモデルのスタート
アドレスとアクセスサイズを取り出して、ステップS4
に進む。こうして、該当するデバイスモデル部から実行
時間を計算するためのアクセスサイクルを読み出し、計
数部3に渡す。計数部3は、これにより実行時間計算を
行う。実行時間は、アクセスサイクル×1クロック分の
時間で計算できる。
【0040】〈命令の処理〉次に、デバイスモデル部5
の処理を説明する。図8は、命令処理動作フローチャー
トである。図7の処理では、アクセスサイクルの取り出
しを行ったが、図8の命令処理では、実際に命令を実行
する動作をシミュレートする。命令処理を行う場合に
は、図7に示したアクセスサイクルの読み出しと同様に
して、アクセス要求やモデルの選択処理が実行される。
ステップS1,S2,S3,S4及びS10,S11,
S12の処理は、図7に示したものと全く同様である。
の処理を説明する。図8は、命令処理動作フローチャー
トである。図7の処理では、アクセスサイクルの取り出
しを行ったが、図8の命令処理では、実際に命令を実行
する動作をシミュレートする。命令処理を行う場合に
は、図7に示したアクセスサイクルの読み出しと同様に
して、アクセス要求やモデルの選択処理が実行される。
ステップS1,S2,S3,S4及びS10,S11,
S12の処理は、図7に示したものと全く同様である。
【0041】ここで、該当するモデルに対する命令がラ
イト命令かどうかが判断される(ステップS5)。ライ
ト命令の場合は、該当するモデルの手続き情報からライ
ト処理ルーチンWrite()が呼び出される(ステッ
プS6)。また、それ以外の場合にはリード命令であっ
て、該当するデバイスモデル部のリード処理ルーチンR
ead()が呼び出される(ステップS8)。これらの
処理の具体的な内容を図9及び図10を用いて説明す
る。既に説明したように、デバイスモデル部の実体はシ
ミュレータのメモリ上に形成されたデータやサブルーチ
ンから構成される。ライト処理やリード処理サブルーチ
ンは、例えばC言語により組み立てられる。
イト命令かどうかが判断される(ステップS5)。ライ
ト命令の場合は、該当するモデルの手続き情報からライ
ト処理ルーチンWrite()が呼び出される(ステッ
プS6)。また、それ以外の場合にはリード命令であっ
て、該当するデバイスモデル部のリード処理ルーチンR
ead()が呼び出される(ステップS8)。これらの
処理の具体的な内容を図9及び図10を用いて説明す
る。既に説明したように、デバイスモデル部の実体はシ
ミュレータのメモリ上に形成されたデータやサブルーチ
ンから構成される。ライト処理やリード処理サブルーチ
ンは、例えばC言語により組み立てられる。
【0042】図9は、入出力装置のライト命令手続きの
説明図である。図に示す最初の4行は、入出力装置に設
定されたioreg(入出力レジスタ)のデータ型を定
義する部分である。書き込みデータはValue、処理
時刻はChange−timeと定義される。次の3行
は、入出力レジスタの名称をA,B,Cと定義してい
る。次の1行では、戻り値を返すタイミング制御のため
のデータ転送時間を定義する。こうして、データの書き
込み処理を宣言し、図のSwitchと記述された部分
で、ケース毎にレジスタA,BあるいはCを選択して、
データ書き込み処理を実行する。また、このようにデー
タが変更された時間をChange−timeとして記
録しておく。また、データ処理時刻も記憶しておく。デ
ータ処理時刻は、入出力装置アクセス動作の検証等に利
用される。なお、一般に書き込み処理は戻り値がないの
で、以下の説明では戻り値のない場合について説明をす
る。
説明図である。図に示す最初の4行は、入出力装置に設
定されたioreg(入出力レジスタ)のデータ型を定
義する部分である。書き込みデータはValue、処理
時刻はChange−timeと定義される。次の3行
は、入出力レジスタの名称をA,B,Cと定義してい
る。次の1行では、戻り値を返すタイミング制御のため
のデータ転送時間を定義する。こうして、データの書き
込み処理を宣言し、図のSwitchと記述された部分
で、ケース毎にレジスタA,BあるいはCを選択して、
データ書き込み処理を実行する。また、このようにデー
タが変更された時間をChange−timeとして記
録しておく。また、データ処理時刻も記憶しておく。デ
ータ処理時刻は、入出力装置アクセス動作の検証等に利
用される。なお、一般に書き込み処理は戻り値がないの
で、以下の説明では戻り値のない場合について説明をす
る。
【0043】図10には、メモリの読み出し手続きの説
明図を示す。これも同様にC言語で作成されたサブルー
チンで、読み出し手続きの場合には、予め図の注釈に示
したように、アドレスのオフセット換算が行われる。即
ち、ここでアドレス変換を行っている。そして、該当す
るアドレスを指定し、そのポインタで示したローカルア
ドレスにあるデータを戻り値として返す。なお、図9の
Write()でアドレス変換に相当する処理がなかっ
たのは、I/Oモデルのためにレジスタが特定されてい
るためである。メモリモデルの場合には、アドレス変換
処理が含められる。
明図を示す。これも同様にC言語で作成されたサブルー
チンで、読み出し手続きの場合には、予め図の注釈に示
したように、アドレスのオフセット換算が行われる。即
ち、ここでアドレス変換を行っている。そして、該当す
るアドレスを指定し、そのポインタで示したローカルア
ドレスにあるデータを戻り値として返す。なお、図9の
Write()でアドレス変換に相当する処理がなかっ
たのは、I/Oモデルのためにレジスタが特定されてい
るためである。メモリモデルの場合には、アドレス変換
処理が含められる。
【0044】再び図8に戻って、ライト命令とリード命
令の処理に対応する戻り値の説明を行う。図8のステッ
プS6でライト命令が実行されると、ライト命令自身に
は戻り値が無いため、ステップS7において戻り値を
“0”として計数部に返す。また、ステップS8でリー
ド命令が実行されると、読み出されたデータがXに格納
され、ステップS9において戻り値をXとし、計数部に
その値を返す。このようにして、メモリのリードライト
動作がシミュレートされる。
令の処理に対応する戻り値の説明を行う。図8のステッ
プS6でライト命令が実行されると、ライト命令自身に
は戻り値が無いため、ステップS7において戻り値を
“0”として計数部に返す。また、ステップS8でリー
ド命令が実行されると、読み出されたデータがXに格納
され、ステップS9において戻り値をXとし、計数部に
その値を返す。このようにして、メモリのリードライト
動作がシミュレートされる。
【0045】〈シミュレーションシーケンス〉図11に
は、アクセスサイクル取り出しシーケンスチャートを示
す。図11のCPUモデル1が、ステップS1において
外部アクセス要求を行うと、計数部3がこれを受けて、
CPUモデル1から受け入れたアドレスを引数とし(ス
テップS2)、アドレスデコーダ4のサブルーチンを呼
び出す。アドレスデコーダ4のサブルーチンは、デバイ
スモデル部5の選択処理を行う。1個のモデルをステッ
プS3で選択し、S4でその属性データからスタートア
ドレスとアクセスサイズを受け入れると、ステップS5
でアドレスデコーダ4が判定処理を行う。
は、アクセスサイクル取り出しシーケンスチャートを示
す。図11のCPUモデル1が、ステップS1において
外部アクセス要求を行うと、計数部3がこれを受けて、
CPUモデル1から受け入れたアドレスを引数とし(ス
テップS2)、アドレスデコーダ4のサブルーチンを呼
び出す。アドレスデコーダ4のサブルーチンは、デバイ
スモデル部5の選択処理を行う。1個のモデルをステッ
プS3で選択し、S4でその属性データからスタートア
ドレスとアクセスサイズを受け入れると、ステップS5
でアドレスデコーダ4が判定処理を行う。
【0046】この処理は、該当するモデルを選択するま
で繰り返されるが、選択が終了するとステップS6に進
み、決定したデバイスモデル部5の属性データ読み出し
が行われる。そして、ステップS7,S8において、デ
バイスモデル部5からアクセスサイクルがアドレスデコ
ーダ4を通じて計数部3に送られる。計数部3は、ステ
ップS9で動作時間を計算してログファイルへの書き込
みを行う。
で繰り返されるが、選択が終了するとステップS6に進
み、決定したデバイスモデル部5の属性データ読み出し
が行われる。そして、ステップS7,S8において、デ
バイスモデル部5からアクセスサイクルがアドレスデコ
ーダ4を通じて計数部3に送られる。計数部3は、ステ
ップS9で動作時間を計算してログファイルへの書き込
みを行う。
【0047】図12には、ライト命令処理の動作シーケ
ンスチャートを示す。CPUモデル1が計数部3に対し
ライト命令を出力すると(ステップS1)、計数部3は
アドレスデコーダ4に対し、アドレスと書き込みデータ
とサイクルタイムから計算された処理時刻を引数として
処理を依頼する(ステップS2)。アドレスデコーダ4
は、図11と同様にデバイスモデル部5の選択処理を行
う(ステップS3,ステップS4,ステップS5)。デ
バイスモデル部が選択されると、アドレスデコーダ4か
ら引数と、例えば書き込み動作の場合、書き込み手続き
のサブルーチンWrite()が呼び出される(ステッ
プS6)。
ンスチャートを示す。CPUモデル1が計数部3に対し
ライト命令を出力すると(ステップS1)、計数部3は
アドレスデコーダ4に対し、アドレスと書き込みデータ
とサイクルタイムから計算された処理時刻を引数として
処理を依頼する(ステップS2)。アドレスデコーダ4
は、図11と同様にデバイスモデル部5の選択処理を行
う(ステップS3,ステップS4,ステップS5)。デ
バイスモデル部が選択されると、アドレスデコーダ4か
ら引数と、例えば書き込み動作の場合、書き込み手続き
のサブルーチンWrite()が呼び出される(ステッ
プS6)。
【0048】この引数は、計数部3からアドレスデータ
4が受け入れたアドレスと、書き込みデータと、処理時
刻である。デバイスモデル部5はデータと処理時刻とを
該当する領域に書き込み(ステップS7)、戻り値を
“0”としてステップS8でアドレスデコーダ4に返
す。その結果、計数部3にこの戻り値が返されてライト
命令処理が終了する。ステップS10で、CPUモデル
1はライト命令の終了通知を受ける。
4が受け入れたアドレスと、書き込みデータと、処理時
刻である。デバイスモデル部5はデータと処理時刻とを
該当する領域に書き込み(ステップS7)、戻り値を
“0”としてステップS8でアドレスデコーダ4に返
す。その結果、計数部3にこの戻り値が返されてライト
命令処理が終了する。ステップS10で、CPUモデル
1はライト命令の終了通知を受ける。
【0049】図13には、具体的なシミュレーション時
間の説明図を示す。例えば、CPUモデルからリード命
令とライト命令等が出力された場合のシミュレーション
の結果をこの図を用いて説明する。まず、この図の横軸
はシミュレーション時間を示し、下側の軸にnS(ナノ
秒)単位で時刻が表示されている。なお、この場合、C
PUモデルによる命令は、常にキャッシュヒットとし、
データリードには120nS、データライトには30n
Sかかるものとする。更に、CPUモデルには1クロッ
クでアクセスできるライトバッファが1つ設けられてい
るものとする。また、1命令に費やす時間は10nSと
する。
間の説明図を示す。例えば、CPUモデルからリード命
令とライト命令等が出力された場合のシミュレーション
の結果をこの図を用いて説明する。まず、この図の横軸
はシミュレーション時間を示し、下側の軸にnS(ナノ
秒)単位で時刻が表示されている。なお、この場合、C
PUモデルによる命令は、常にキャッシュヒットとし、
データリードには120nS、データライトには30n
Sかかるものとする。更に、CPUモデルには1クロッ
クでアクセスできるライトバッファが1つ設けられてい
るものとする。また、1命令に費やす時間は10nSと
する。
【0050】CPUモデルが動作を開始すると、図示し
ないプログラムカウンタが“1”ずつカウントアップ
し、命令が順に呼び出される。まず、リード命令をエミ
ュレートすると、計数部3は前回のアクセスタイプと今
回のアクセスまでの命令数を元にバスの状態を計算す
る。最初はシミュレーションが始まったばかりで、前回
のアクセスタイプはなく、命令数もない。既に説明した
ように、計数部がそのリード命令に従ってバスを専有す
る時間を計算する。計数部がアドレスデコーダを介して
該当するモデルのアクセスサイクルを読み出すと、これ
によってバス専有時間が計算される。メモリリードサイ
クルの場合、120nSという時間計算が行われる。バ
スはこの間専有される。
ないプログラムカウンタが“1”ずつカウントアップ
し、命令が順に呼び出される。まず、リード命令をエミ
ュレートすると、計数部3は前回のアクセスタイプと今
回のアクセスまでの命令数を元にバスの状態を計算す
る。最初はシミュレーションが始まったばかりで、前回
のアクセスタイプはなく、命令数もない。既に説明した
ように、計数部がそのリード命令に従ってバスを専有す
る時間を計算する。計数部がアドレスデコーダを介して
該当するモデルのアクセスサイクルを読み出すと、これ
によってバス専有時間が計算される。メモリリードサイ
クルの場合、120nSという時間計算が行われる。バ
スはこの間専有される。
【0051】次に、メモリから読み出された値を取り出
す。この値はCPUモデルに返される。CPUモデルは
120nS経過するまでウエイト状態となっている。読
み出された値を元にCPUが所定の処理を実行する。そ
の命令数を10とする。1命令が10nSだから100
nSの時間だけ読み出された命令に対する処理が実行さ
れる。今度はそのデータをデバイスモデル部に書き込む
ためのライト命令が発生したとする。この場合、再び計
数部が動作する。ライトサイクルのサイクル数が計算さ
れて、220nSの時点から30nSの時間だけ書き込
み処理が行われる。この間、再びバスが専有される。即
ち、220nSから250nSまでの間バスが専有され
る。その後、分岐命令が出力されるが、分岐命令発生ま
でには50nSかかる。従って、メモリライトサイクル
の終了した250nS〜270nSまでバスが空き時間
となる。このような計算を繰り返すことによってプログ
ラムの実行時間が計算され、ログファイルに記録され
る。
す。この値はCPUモデルに返される。CPUモデルは
120nS経過するまでウエイト状態となっている。読
み出された値を元にCPUが所定の処理を実行する。そ
の命令数を10とする。1命令が10nSだから100
nSの時間だけ読み出された命令に対する処理が実行さ
れる。今度はそのデータをデバイスモデル部に書き込む
ためのライト命令が発生したとする。この場合、再び計
数部が動作する。ライトサイクルのサイクル数が計算さ
れて、220nSの時点から30nSの時間だけ書き込
み処理が行われる。この間、再びバスが専有される。即
ち、220nSから250nSまでの間バスが専有され
る。その後、分岐命令が出力されるが、分岐命令発生ま
でには50nSかかる。従って、メモリライトサイクル
の終了した250nS〜270nSまでバスが空き時間
となる。このような計算を繰り返すことによってプログ
ラムの実行時間が計算され、ログファイルに記録され
る。
【0052】
【発明の効果】以上説明した本発明のシミュレータは、
CPUモデルにパイプライン機能部を設け、ここに実行
すべき命令をフェッチし、パイプラインを1段シフトす
る毎にシミュレーション時間を更新するという構成にし
たので、シミュレーションの対象となる装置の動作とよ
く適合し、ハードウェアモデルとの同期が容易になる。
また、CPUモデルが求めたシミュレーション時間を計
数部が受け取り累積するような構造にしたので、計数部
はCPUモデルの各命令の実行時間等を意識することな
くシミュレーション結果をログファイルに出力すること
が可能になる。従って、CPUモデルのパイプライン機
能部をシミュレーション対象となる装置と適合させるよ
うにすれば、計数部の部分はCPUモデルが違っても全
く変更を必要とせず、共通化することが可能である。
CPUモデルにパイプライン機能部を設け、ここに実行
すべき命令をフェッチし、パイプラインを1段シフトす
る毎にシミュレーション時間を更新するという構成にし
たので、シミュレーションの対象となる装置の動作とよ
く適合し、ハードウェアモデルとの同期が容易になる。
また、CPUモデルが求めたシミュレーション時間を計
数部が受け取り累積するような構造にしたので、計数部
はCPUモデルの各命令の実行時間等を意識することな
くシミュレーション結果をログファイルに出力すること
が可能になる。従って、CPUモデルのパイプライン機
能部をシミュレーション対象となる装置と適合させるよ
うにすれば、計数部の部分はCPUモデルが違っても全
く変更を必要とせず、共通化することが可能である。
【図1】本発明によるシミュレータのブロック図であ
る。
る。
【図2】シミュレータの概略動作フローチャートであ
る。
る。
【図3】CPUモデルの動作フローチャートである。
【図4】パイプライン処理の内容説明図である。
【図5】アドレスデコーダの機能説明図である。
【図6】デバイスモデルの例説明図である。
【図7】アクセスサイクル読み出し動作フローチャート
である。
である。
【図8】命令処理動作フローチャートである。
【図9】入出力装置の書き込み手続きの説明図である。
【図10】メモリの読み出し手続きの説明図である。
【図11】アクセスサイクル取り出し動作シーケンスチ
ャートである。
ャートである。
【図12】ライト命令動作シーケンスチャートである。
【図13】シミュレーション時間の説明図である。
1 CPUモデル 2 ログファイル 3 計数部 4 アドレスデコーダ 5 デバイスモデル部 6 ROMモデル 7 DRAMモデル 8 周辺I/Oモデル 11 パイプライン機能部 12 命令実行処理部 13 命令フェッチ処理部 14 分岐処理部 15 プログラムカウンタ 16 レジスタファイル
Claims (2)
- 【請求項1】 プロセッサが所定のプログラムを実行し
て任意のハードウェアを制御する装置の動作をシミュレ
ーションするために、コンピュータ上で、前記プロセッ
サとハードウェアとをモデル化したものにおいて、 前記プロセッサモデルは、各ハードウェアモデルにアク
セスして、これらをアクセスする処理をシミュレートす
るとともに、シミュレーションの対象となる装置の特性
に応じた段数だけその命令を保持するパイプライン機能
部を設け、その命令実行のための実行時間情報を取得
し、 前記CPUモデルがハードウェアモデルをアクセスした
とき、前記ハードウェアモデルが通知するそのアクセス
に要する実行時間情報と、前記CPUモデルが取得した
実行時間情報とを累積して計数する計数部とを備えたこ
とを特徴とするシミュレータ。 - 【請求項2】 請求項1において、 CPUモデルは、パイプライン機能部がパイプラインを
1段シフトする毎にシミュレーション時間を更新するよ
うにして、実行時間情報を取得することを特徴とするシ
ミュレータ。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP23902897A JPH1166037A (ja) | 1997-08-20 | 1997-08-20 | シミュレータ |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP23902897A JPH1166037A (ja) | 1997-08-20 | 1997-08-20 | シミュレータ |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH1166037A true JPH1166037A (ja) | 1999-03-09 |
Family
ID=17038817
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP23902897A Pending JPH1166037A (ja) | 1997-08-20 | 1997-08-20 | シミュレータ |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH1166037A (ja) |
-
1997
- 1997-08-20 JP JP23902897A patent/JPH1166037A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN114580344B (zh) | 测试激励生成方法、验证方法、验证系统及相关设备 | |
| US8725485B2 (en) | Simulation method and simulation apparatus | |
| JP4564110B2 (ja) | 二重プロセッサ回路の動作をシミュレーションするためのコンピュータ実行方法及び信号プロセッサシミュレータ | |
| US8484006B2 (en) | Method for dynamically adjusting speed versus accuracy of computer platform simulation | |
| JP3351725B2 (ja) | パワーシミュレーション装置、パワーシミュレーション方法、及びパワーシミュレーションプログラムを記録した機械読み取り可能な記録媒体 | |
| US6212493B1 (en) | Profile directed simulation used to target time-critical crossproducts during random vector testing | |
| US7096322B1 (en) | Instruction processor write buffer emulation using embedded emulation control instructions | |
| JP2693678B2 (ja) | データ処理装置 | |
| US6038391A (en) | Method and apparatus for evaluating performance of multi-processing system and memory medium storing program for the same | |
| CN102184290A (zh) | 一种嵌入式微处理器的周期精确和位精确系统级模型 | |
| JP5542643B2 (ja) | シミュレーション装置及びシミュレーションプログラム | |
| JPH10187484A (ja) | シミュレータ | |
| JP2663893B2 (ja) | アーキテクチャ・シミュレータ | |
| JPH1166037A (ja) | シミュレータ | |
| JPH10320212A (ja) | キャッシュ向け最適化方法 | |
| JP3647287B2 (ja) | マルチプロセッサ・システムの性能評価方法および装置 | |
| JP2000259445A (ja) | ソフトウェア/ハードウェア協調シミュレーション方法 | |
| JP2006172234A (ja) | システム性能評価方法およびシステム性能評価装置 | |
| JP2994280B2 (ja) | 計算機システムの性能評価方法 | |
| CN119597353B (zh) | Cpu核心在研发验证环境下的启动加速方法及装置 | |
| JPH07253909A (ja) | マイクロプログラム検証方法 | |
| US20070038431A1 (en) | Data processing apparatus simulation | |
| JPH11149489A (ja) | シミュレーション装置 | |
| JP2000122898A (ja) | シミュレーション方法及び装置 | |
| JP2003256239A (ja) | 動作検証シミュレーションの実行方法及びシミュレーション実行装置並びにプログラム |