JP2010102496A - システムシミュレーション装置 - Google Patents
システムシミュレーション装置 Download PDFInfo
- Publication number
- JP2010102496A JP2010102496A JP2008273139A JP2008273139A JP2010102496A JP 2010102496 A JP2010102496 A JP 2010102496A JP 2008273139 A JP2008273139 A JP 2008273139A JP 2008273139 A JP2008273139 A JP 2008273139A JP 2010102496 A JP2010102496 A JP 2010102496A
- Authority
- JP
- Japan
- Prior art keywords
- address
- target
- conversion table
- simulator
- host computer
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【解決手段】ISS5は、ターゲットプログラム10のターゲットISA部分4を実行する。バスシミュレータ6はアドレス変換テーブル7を備える。ISS5はバスシミュレータ6を介して、ISS5上で動作するターゲットプログラム10による大域データへのメモリアクセス時に、アドレス変換テーブル7を用いてホスト計算機2上のアドレス空間に存在する大域データのアドレスを取得し、ホスト計算機2上の大域データに対してメモリアクセスする。
【選択図】図1
Description
このようなシミュレータでは、ターゲットCPUのオブジェクトコードとホストCPUのオブジェクトコードをリンクする必要がある。従って、リンク結果の機械語プログラムは、ホスト計算機の命令コードとターゲットCPUの命令コードから構成されるため、実ターゲットのメモリにロードして実行することは不可能である。逆に、シミュレータは、実ターゲットのメモリにロード可能なロードモジュールを用いてその一部のみをISS上で実行し、残りをホストネイティブで実行することも不可能である。
即ち、上記従来のシミュレータでは、ISS実行部分とホストネイティブ実行部分がデータを共有する場合において、実際にターゲットシステムで動作する機械語プログラムを用いてのシミュレーションが困難であるという問題があった。
図1は、この発明の実施の形態1によるシステムシミュレーション装置を示す構成図である。
図1に示すシステムシミュレーション装置1は、ホスト計算機2によって、ホストネイティブ部分3の機械語プログラムと、ターゲットISA部分4の機械語プログラムを実行することで実現される。ホスト計算機2は、ターゲットシステムと同一エンディアンの計算機である。ホストネイティブ部分3には、インストラクションセットシミュレータ(以下、ISSという)5とバスシミュレータ6を含んでいる。また、バスシミュレータ6は、アドレス変換テーブル7を備えている。
ホスト計算機アドレス空間22は、ホスト計算機2がプログラムをネイティブ実行する際にアクセスするアドレス空間である。ターゲットCPUアドレス空間21は、メモリ領域23とI/O領域24から構成される。メモリ領域23は、バスシミュレータ6の構成要素であるメモリモデルが模擬する領域であり、I/O領域24は、ペリフェラルモデルが模擬する領域である。ターゲットCPUアドレス空間21は、実機用の機械語プログラムがロードされるため、ターゲットシステムと等しいデータのレイアウトを持つ。例えば、ターゲットシステムで有効なアドレス0x1234に存在する命令あるいはデータは、ターゲットCPUアドレス空間でもアドレス0x1234に割り当てられる。
バスシミュレータ6は、多バイト長のバスアクセスを複数の単一バイトアクセスに分解し、図3の処理を適用する。即ち、バスシミュレータ6は、要求アドレスはメモリ領域か否かを判定し(ステップST301)、そうであった場合は、アドレス変換テーブル7を用いて、要求アドレスは大域変数領域かを判定する(ステップST302)。次に、これらステップST301,ST302の判断に基づいてバスアクセスの模擬処理であるステップST303,ST304,ST305の処理を選択する。即ち、ステップST302において、大域変数領域であった場合は、ホスト計算機のアドレス空間へのアクセスであり(ステップST303)、そうでなかった場合はメモリモデルへのアクセスと判断する(ステップST304)。ここで、ステップST303のホスト計算機アドレス空間へのアクセス処理は、アドレス変換テーブル7を用いて行う。また、ステップST301において、要求アドレスがメモリ領域ではなかった場合は、I/Oモデルへのアクセスと判定する(ステップST305)。図3では、すべてのバスアクセスを単一バイトのアクセスに分解することを前提としているが、特に大域変数へのアクセスがバイトアクセスに分解されていれば十分であり、他のアクセスは、多バイト長のままとする代替手段も可能である。また、大域変数へのアクセス先をメモリモデルとホスト計算機のアドレス空間に切り換えるのではなく、両方にアクセスする方式も可能である。この場合、ホスト計算機のアドレス空間へのアクセスのみバイトアクセスに分解し、データ読出しの場合、ホスト計算機から読み出したデータを優先すればよい。
アドレス変換テーブル7は、ターゲットCPUアドレス空間の変数情報9とホスト計算機アドレス空間の変数情報8に含まれる大域変数のアドレス変換の情報を持つ。図4中のFoo、Bar、Bazは、ターゲットプログラムに含まれる大域変数であるとする。各々の大域変数は、ホスト計算機上とISS上で同じサイズであるが、異なる割り当てアドレスを持つ。アドレス変換テーブル7は、大域変数Bazに関して、ISS上ではアドレス区間0x123C〜0x123Fとホスト計算機上ではアドレス区間0x30000〜0x30003のバイト毎の対応を持つ。一般に、アドレス変換テーブル7は、サイズNのグローバル変数に関して、ISS上でアドレスX、ホスト計算機上でアドレスYに割り当てられている場合、ISS上のアドレス区間XからX+N−1とホスト計算機上のアドレス区間YからY+N−1のバイト毎の対応を持つ。
ターゲットCPUアドレス空間51およびホスト計算機アドレス空間52の1つのエントリは、1バイトのサイズを持つ。ターゲットCPUアドレス空間51の領域53は、ターゲットプログラムの大域変数を含む領域であり、一般にオブジェクトファイル中の.dataセクションと.bssセクションに対応する領域である。アドレス変換テーブル7は、領域53に存在するすべてのエントリと同じ数のエントリを持つ。各エントリは、先頭から順に領域53のエントリと一対一に対応する。即ち、領域53の先頭からN番目に存在するエントリは、アドレス変換テーブル7の先頭からN番目のエントリに対応する。また、各エントリのサイズは、ホスト計算機のアドレスサイズであり、各エントリの値は、ターゲットCPUアドレス空間51のエントリに対応するホスト計算機アドレス空間52のエントリのアドレスもしくは0である。エントリの値が0の場合、対応するホスト計算機アドレス空間52のエントリが存在しない状態、即ち、エントリが表すターゲットCPUアドレス空間51のエントリが大域変数を保持していない状態である。この状態を示すエントリの値は、必ずしも0である必要はなく、大域変数が割り当てられることがない他の値でも代替可能である。上記の構成によって、ターゲットCPUアドレスXに対応するホスト計算機アドレスを保持するアドレス変換テーブルエントリのインデックスは下式で得られる。
(テーブルインデックス)=X−(領域53の先頭のアドレス)
データ領域登録処理は、アドレス変換の対象となる連続した領域の開始ターゲットCPUアドレスと開始ホスト計算機アドレスとバイトを単位とする領域サイズを入力とする。図7中のXは、変換対象となるターゲットCPUアドレスであり、Yは、Xを変換して得られるホスト計算機アドレスである。ステップST701は、Xに開始ターゲットCPUアドレスを代入する処理である。ステップST702は、Yに開始ホスト計算機アドレスを代入する処理である。ステップST703は、領域サイズのバイト数分だけ繰り返すループの開始であり、ステップST708は、当該ループの終了である。ステップST703で始まるループは、1回の繰り返しで1バイトの領域に対応するターゲットCPUアドレスとホスト計算機アドレスのペアをアドレス変換テーブル7に登録する。ステップST704は、ターゲットCPUアドレスXに対応するアドレス変換テーブル7のインデックスを計算する処理である。ステップST705は、ステップST704で算出したインデックスに存在するアドレス変換テーブル7のエントリにホスト計算機アドレスYを代入する。ステップST706とステップST707は、それぞれXとYに1を加算する処理である。上記の処理によって、指定された連続領域のデータに存在するバイト毎のターゲットCPUアドレスとホスト計算機アドレスの対応がアドレス変換テーブル7に設定される。
図8の処理は、ターゲットプログラム10中のISS5で実行する必要がある部分を含む関数をISS5を介して呼び出す処理である。シミュレーション環境用プログラム11は、ターゲットプログラム10中のISS5で実行する必要がある関数の呼出しを図8の処理で置換している。ステップST801は、ISS5のプログラムカウンタに関数の開始アドレスを設定する処理である。ステップST802は、スタックポインタを設定する処理である。ステップST803は、関数の引数を設定する処理である。具体的には、引数をレジスタやスタック中に設定し、引数がポインタであれば適切にポインタが指すデータをISS5のアドレス空間にコピーする処理である。ステップST803の処理は、関数が引数を持たない場合は不要である。ステップST804は、関数のリターンアドレスを設定する処理である。具体的には、リターンアドレスレジスタあるいはスタックに適当なリターンアドレスを設定する。リターンアドレスは、関数が実行し得る命令のアドレス以外の任意の値である。ステップST805は、プログラムを1命令実行する処理であり、関数の処理が完了するまで繰り返し実行される。ステップST806は、プログラムカウンタの値がステップST804で設定したリターンアドレスになっているかを確認することによって、関数呼出しの完了を検出する処理である。ステップST807は、関数呼出しの結果を取得する処理である。これは、関数の戻り値を戻り値レジスタあるいはスタックから取得と引数のポインタを介して得られる結果をISS5のアドレス空間からホスト計算機アドレス空間へコピーする処理を含む。ステップST807の処理は、関数が結果を出力しない場合不要である。
実施の形態1では、ホスト計算機がターゲットシステムと同一のエンディアンを持つことを前提とした。また、実施の形態1において、ホスト計算機用言語処理系13とターゲット用言語処理系14で同一構造体に対するメモリレイアウトが異なる場合、即ち、構造体メンバの構造体先頭からのオフセットが一致しない場合、アドレス変換テーブルを正しく構築できないため、構造体変数をISSとホストネイティブで共有する大域変数にすることができない。従って、ホスト計算機とコンパイラの選択に制約が生じることが問題となる。
ここで、ISS5はビッグエンディアンであり、ホスト計算機2がリトルエンディアンであると仮定する。ISS5の変数Bazの領域である0x123Cは、変数BazのMSB(Most Significant Byte)である。しかし、アドレス変換後の0x3000は、ホストネイティブ空間では、変数BazのLSB(Least Significant Byte)となり正しくない。
図10の処理は、ホストネイティブのデバッグ情報とターゲットシステム向けのデバッグ情報を入力とする。デバッグ情報は、一般的なC言語コンパイラが生成するデバッグ情報である。以降では、デバッグ情報としてDWARF形式を想定するが、大域変数の型情報とアドレス情報を取得できるデバッグ情報フォーマットであればDWARF形式に限らない。ステップST1001は、ターゲットプログラム10に含まれる全大域変数を順に処理するためのループの開始であり、ステップST1007は、当該ループの終了である。
図11の処理は、再帰処理であり、再帰の底で基本型データ毎のアドレス変換に必要なターゲットCPUアドレスとホスト計算機アドレスをアドレス変換テーブル7aに登録する。図11の処理の入力は、登録対象となるデータの開始アドレスと配列、構造体、基本型のいずれかの型情報である。具体的に型情報は、DW_TAG_array_type、DW_TAG_structure_type、DW_TAG_base_typeのいずれかをタグとするDIEである。ステップST1101は、データ型の判定処理であり、DIEのタグによってデータ型を判別し、配列の場合はステップST1102、構造体の場合はステップST1110、基本型の場合はステップST1117の処理を行う。
図12のステップST1201〜ST1208の処理は、ステップST1202とステップST1207を除いて図7のステップST701〜ST708の処理と同じである。図12の処理では、ステップST1202とステップST1207に示すように、図7の処理と逆順でターゲットCPUアドレスとホスト計算機アドレスのペアをアドレス変換テーブル7aに登録する。即ち、図12の処理は、開始ターゲットCPUアドレスが末尾ホスト計算機アドレスに変換されるようにし、末尾ターゲットCPUアドレスが開始ホスト計算機アドレスに変換されるようにアドレス変換テーブルを構築する。
ISSがCPUのMMU(Memory Management Unit)を模擬している場合、MMUを通過する前の論理アドレスを用いて大域変数のアドレスをホストアドレスに変換する必要がある。そこで、実施の形態3として、実施の形態1および2において、アドレス変換テーブル7(または7a)をバスシミュレータ6内部からISS5内部に移し、メモリアクセスに関するホストCPU空間とターゲットCPUアドレス空間の切替えをバスシミュレータ6ではなく、ISS5が行う。これにより、ISS5がCPUのMMUを模擬する場合に対応することができる。
実施の形態1、2、3において、アドレス変換テーブル7(または7a)の構築を、言語処理系が生成した変数情報からシステムシミュレーション装置1がアドレス変換テーブル7(または7a)を構築するのではなく、言語処理系内部でアドレス変換テーブルを作成し、システムシミュレーション装置1がアドレス変換テーブルをインポートするようにしてもよい。
Claims (7)
- ターゲットプログラムをターゲットCPUのインストラクションセットアーキテクチャで実行するインストラクションセットシミュレータと、
前記ターゲットCPU外部のハードウェアを模擬するバスシミュレータと、
前記ターゲットプログラムをネイティブ実行するホスト計算機とを備えたシステムシミュレーション装置であって、
前記バスシミュレータは、前記ターゲット計算機のアドレス空間のアドレスを前記ホスト計算機のアドレス空間のアドレスに変換するアドレス変換テーブルを有することを特徴とするシステムシミュレーション装置。 - インストラクションセットシミュレータ上で動作するターゲットプログラムによる大域データへのメモリアクセス時に、アドレス変換テーブルを用いてホスト計算機上のアドレス空間に存在する大域データのアドレスを取得し、当該ホスト計算機上の大域データに対してメモリアクセスすることを特徴とする請求項1記載のシステムシミュレーション装置。
- インストラクションセットシミュレータ上で動作するターゲットプログラムによる大域変数へのアクセス判定をアドレス変換テーブルを用いて行うことを特徴とする請求項1または請求項2記載のシステムシミュレーション装置。
- アドレス変換テーブルは、ターゲットCPUアドレス空間上に存在する大域変数を含む領域の先頭から末尾までのバイトアドレスと順に一対一に対応するエントリを持ち、各エントリがホストCPUアドレス空間上のアドレスを保持することを特徴とする請求項1から請求項3のうちのいずれか1項記載のシステムシミュレーション装置。
- アドレス変換テーブルは、言語処理系が生成する変数情報に含まれる変数のサイズとアドレスを用いて構築されることを特徴とする請求項1から請求項4のうちのいずれか1項記載のシステムシミュレーション装置。
- アドレス変換テーブルは、言語処理系が生成する変数情報に含まれる変数のサイズとアドレスと型情報を用いて構築されることを特徴とする請求項1から請求項4のうちのいずれか1項記載のシステムシミュレーション装置。
- ホストネイティブ実行からのインストラクションセットシミュレータ実行への切替え時、実行対象となる関数のエントリアドレスを前記インストラクションセットシミュレータのプログラムカウンタに設定し、かつ、関数が使用する前記インストラクションセットシミュレータのレジスタとスタックを設定すると共に、リターンアドレスとして関数実行時に前記プログラムカウンタの値として適切でない任意の値を設定し、この状態で、前記プログラムカウンタが設定したリターンアドレスの値になるまで前記インストラクションセットシミュレータの実行を続け、前記リターンアドレスが設定した値になると再び前記ホストネイティブ実行を行うことを特徴とする請求項1から請求項6のうちのいずれか1項記載のシステムシミュレーション装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008273139A JP5100604B2 (ja) | 2008-10-23 | 2008-10-23 | システムシミュレーション装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008273139A JP5100604B2 (ja) | 2008-10-23 | 2008-10-23 | システムシミュレーション装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010102496A true JP2010102496A (ja) | 2010-05-06 |
JP5100604B2 JP5100604B2 (ja) | 2012-12-19 |
Family
ID=42293094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008273139A Active JP5100604B2 (ja) | 2008-10-23 | 2008-10-23 | システムシミュレーション装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5100604B2 (ja) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06348543A (ja) * | 1993-06-02 | 1994-12-22 | Matsushita Electric Ind Co Ltd | 入出力シミュレータとの接続方法 |
JPH11282693A (ja) * | 1998-03-30 | 1999-10-15 | Toshiba Corp | Mcuシミュレーション装置、そのシミュレーション方法及びそのシミュレーションプログラムを記録したコンピュータ読み取り可能な記録媒体 |
JP2000259445A (ja) * | 1999-03-05 | 2000-09-22 | Nec Corp | ソフトウェア/ハードウェア協調シミュレーション方法 |
JP2002278775A (ja) * | 2001-03-15 | 2002-09-27 | Nec Corp | シミュレーション装置、シミュレーション方法およびプログラム |
JP2006107370A (ja) * | 2004-10-08 | 2006-04-20 | Canon Inc | 情報処理装置及びその制御方法 |
JP2006350686A (ja) * | 2005-06-16 | 2006-12-28 | Seiko Epson Corp | 命令セット・シミュレータ生成装置及びシミュレータ生成方法 |
JP2007011720A (ja) * | 2005-06-30 | 2007-01-18 | Sharp Corp | システムシミュレータ、システムシミュレート方法、制御プログラムおよび可読記録媒体 |
-
2008
- 2008-10-23 JP JP2008273139A patent/JP5100604B2/ja active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06348543A (ja) * | 1993-06-02 | 1994-12-22 | Matsushita Electric Ind Co Ltd | 入出力シミュレータとの接続方法 |
JPH11282693A (ja) * | 1998-03-30 | 1999-10-15 | Toshiba Corp | Mcuシミュレーション装置、そのシミュレーション方法及びそのシミュレーションプログラムを記録したコンピュータ読み取り可能な記録媒体 |
JP2000259445A (ja) * | 1999-03-05 | 2000-09-22 | Nec Corp | ソフトウェア/ハードウェア協調シミュレーション方法 |
JP2002278775A (ja) * | 2001-03-15 | 2002-09-27 | Nec Corp | シミュレーション装置、シミュレーション方法およびプログラム |
JP2006107370A (ja) * | 2004-10-08 | 2006-04-20 | Canon Inc | 情報処理装置及びその制御方法 |
JP2006350686A (ja) * | 2005-06-16 | 2006-12-28 | Seiko Epson Corp | 命令セット・シミュレータ生成装置及びシミュレータ生成方法 |
JP2007011720A (ja) * | 2005-06-30 | 2007-01-18 | Sharp Corp | システムシミュレータ、システムシミュレート方法、制御プログラムおよび可読記録媒体 |
Also Published As
Publication number | Publication date |
---|---|
JP5100604B2 (ja) | 2012-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5339422A (en) | System and method for jacketing cross-domain calls in a multi-code execution and debugging system within a multi-architecture environment | |
US7533246B2 (en) | Application program execution enhancing instruction set generation for coprocessor and code conversion with marking for function call translation | |
US8554535B2 (en) | Instruction-set architecture simulation techniques using just in time compilation | |
US7877741B2 (en) | Method and corresponding apparatus for compiling high-level languages into specific processor architectures | |
US20080127113A1 (en) | Method and system for implementing watchpoints | |
CN110245467B (zh) | 基于Dex2C与LLVM的Android应用程序保护方法 | |
US8886512B2 (en) | Simulation apparatus, computer-readable recording medium, and method | |
CN115858092A (zh) | 时序仿真方法、装置及系统 | |
CN114428642B (zh) | 一种基于新型处理器架构的随机指令生成环境 | |
JP5100604B2 (ja) | システムシミュレーション装置 | |
Blanqui et al. | Designing a CPU model: from a pseudo-formal document to fast code | |
KR0125605B1 (ko) | 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치 | |
JPH025138A (ja) | シミユレーシヨン方法 | |
Kim et al. | Output-based intermediate representation for translation of test-pattern program | |
Wang et al. | Hycos: hybrid compiled simulation of embedded software with target dependent code | |
CN115374017A (zh) | 一种仿真运行可执行文件时抓取现场的方法及计算设备 | |
JP7295469B2 (ja) | 関数生成プログラム、関数生成方法、及び情報処理装置 | |
JP5118562B2 (ja) | デバッグ支援装置 | |
JP2788839B2 (ja) | Cpuシミュレータ | |
Brent | Using program structure to achieve prefetching for cache memories | |
Kirchhof et al. | Simulation of model execution for embedded systems | |
CN114385524B (zh) | 嵌入式固件仿真系统及其方法、装置和电子设备 | |
CN108604205B (zh) | 测试点的创建方法,装置和系统 | |
JP3324542B2 (ja) | 仮想マシン | |
Van Dung et al. | Function profiling for embedded software by utilizing QEMU and analyzer tool |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20101013 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20111110 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111129 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120125 |
|
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: 20120828 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120925 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151005 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5100604 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |