JP5200675B2 - シミュレーション装置,シミュレーション方法,シミュレーションプログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体 - Google Patents

シミュレーション装置,シミュレーション方法,シミュレーションプログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体 Download PDF

Info

Publication number
JP5200675B2
JP5200675B2 JP2008153505A JP2008153505A JP5200675B2 JP 5200675 B2 JP5200675 B2 JP 5200675B2 JP 2008153505 A JP2008153505 A JP 2008153505A JP 2008153505 A JP2008153505 A JP 2008153505A JP 5200675 B2 JP5200675 B2 JP 5200675B2
Authority
JP
Japan
Prior art keywords
simulation
execution log
unit
software
basic
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.)
Expired - Fee Related
Application number
JP2008153505A
Other languages
English (en)
Other versions
JP2009301231A (ja
Inventor
知己 加藤
典保 中山
裕之 稗田
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008153505A priority Critical patent/JP5200675B2/ja
Priority to US12/393,155 priority patent/US8249850B2/en
Priority to TW098106420A priority patent/TWI423058B/zh
Priority to KR1020090024890A priority patent/KR101076348B1/ko
Publication of JP2009301231A publication Critical patent/JP2009301231A/ja
Application granted granted Critical
Publication of JP5200675B2 publication Critical patent/JP5200675B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価シミュレーションを実行するための技術に関する。
近年、電子機器に用いられる半導体装置、例えばLarge Scale Integration(LSI)は大規模集積化し、従来は個別部品であったプロセッサ,バス,メモリ等を1チップ上に搭載することが可能となった。
1チップ化する目的は一般的に、小型化、低コスト化、低消費電力化である。このような半導体装置を、システムLSI、あるいは、System on Chip(SoC)などと呼んでいる。
しかしながら、そのような半導体装置(以下、LSI、あるいは、システムLSIともいう)に搭載される機能増加は、設計の難しさを増大させるというデメリットもある。この難しさの多くは、一度決めたハードウエア・アーキテクチャが、1チップ化されることにより、後で容易に変更できなくなるということに起因する。
特に、小型化・低コスト化を推し進めるためには、システムLSIの処理負荷の軽減と、設計上のマージンを低減することが必要であり、その問題解決のためには、設計初期の段階での性能検証技術が重要となってきている。
システムLSI等の性能検証は、システムが持つ機能を、ハードウェアとソフトウェアとのどちらで実現するかを仮決定した後に行う。
一般に、ソフトウェアは、C言語、あるいは、アセンブリ言語等で記述し、ターゲットプロセッサを含む実機モデル、またはターゲットプロセッサ向けのInstruction Set Simulator(ISS;命令セットシミュレータ)上で実行することにより、その動作をシミュレーションすることができる。
また、ハードウェアの動作については、Register Transfer Level(RTL)、または、Transaction Level Model(TLM)、あるいは、両者を混在させたもので記述することによりシミュレーションが可能になる。なお、前者で代表的なものは、Verilog−HDL、後者はSystemCである。
このように、ソフトウェアとハードウェアとを合わせたシステム全体をシミュレートすることにより、プロセッサ負荷率等の性能の評価ができることになる。
なお、従来からソフトウェア(アプリケーション)を作成するためにシミュレーションを実行する技術もある(例えば、下記特許文献1,2参照)。
図14に従来の半導体装置の性能評価シミュレーション装置の例を示す。従来のシミュレーション装置100において、Central Processing Unit(CPU)101,I-cache(命令キャッシュ)102,D-Cache(データキャッシュ)103,バス104,外部RAM(Random Access Memory)105,及び周辺HW(HardWare)106は、ハードウェアモデルにより実現される。
なお、CPU101は、ソフトウェアを実行するISS110,外部アクセスを実行するアクセス処理部111,及びシミュレーション結果としての統計情報120を集計するデータ集計部112を備えている。
しかしながら、従来のシミュレーション装置100では、前述のとおり仕様121に基づく、実際にプロセッサに実装するソフトウェア122をISS110上で実行する。そのため、高精度な検証を行うためにはソフトウェア122の完成度が十分であることが必要になり、設計の早期に最適化の検討、即ち、性能評価シミュレーションを行うことができない。
また、そのシミュレーションを実行する場合には、シミュレーションのほとんどをISS110が占めてしまい、実行時間が非常に長くなるという問題がある。
そこで、従来から、プロセッサ上で実行するソフトウェアを、UML分析を用いてモデル化することでソフトウェアを作成し、設計早期の検証を可能とする技術や、要求仕様から概念モデルから機能モデルとソフトウェアを作成する技術がある(例えば下記特許文献3,4参照)。
特開2002−215423号公報 特開2006−59108号公報 特開2001−318812号公報 特開2007−310449号公報
しかしながら、上記特許文献3,4のような技術では、要求仕様のドキュメントからアプリケーションプログラムをモデリングするため、ソフトウェアを作成するまでに相当の工数が必要となり、多くの時間が掛かってしまう。
また、上記特許文献3,4のような技術では、実際に実装するソフトウェアとの乖離、即ち性能検証環境の精度が不明であるので、作成されたソフトウェアが信頼できるものであるのかが分からない。
本発明は、このような課題に鑑み創案されたもので、ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価シミュレーションをより少ない工数で高精度に実現できるようにすることを目的とする。
上記目的を達成するために、このシミュレーション装置及びシミュレーション方法は、第1取得部が既存の仮ソフトウェアを実行することにより取得した第1実行ログを、分割部が複数の基本処理単位に分割する。次いで、基本処理実行ログ生成部が複数の基本処理単位のうちの一部の基本処理単位を変更することによりシミュレーションに用いる基本処理実行ログを生成する。そして、シミュレーション実行部が、基本処理実行ログを、ハードウェアモデルに入力することにより、シミュレーションを実行して性能評価に要する情報を取得する。
また、上記目的を達成するため、このシミュレーションプログラムは、上述した第1取得部,分割部,基本処理実行ログ生成部,及びシミュレーション実行部としてコンピュータを機能させる。
さらに、上記目的を達成するため、このコンピュータ読取可能な記録媒体は、上述したシミュレーションプログラムを記録している。
このように、上述したシミュレーション装置,シミュレーション方法,シミュレーションプログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体によれば、実装する実際の実ソフトウェアが完成していない早い段階から、既存の仮ソフトウェアを利用することで、性能評価対象のハードウェアのシミュレーションを高精度に実行できる。しかも、既存の仮ソフトウェアを用いるので、従来技術のように、要求仕様のドキュメントからアプリケーションプログラムをモデリングする必要がなく、仮ソフトウェアを作成するまでの工数も削減できる。
さらに、従来技術のように、シミュレーションの際にソフトウェアをISSによって実行することなく、シミュレーション実行部は、基本処理実行ログを用いてシミュレーションを実行する。したがって、シミュレーションに係る工数を低減でき、シミュレーションに要する時間を短縮できる。
以下、図面を参照しながら本発明の実施の形態について説明する。
〔1〕本発明の一実施形態について
まず、図1に示すブロック図を参照しながら、本発明の一実施形態としての性能評価シミュレーション装置(以下、本シミュレーション装置という)1の構成について説明する。
本シミュレーション装置1は、半導体装置、例えばLSIに搭載されるハードウェア(例えばCPU)の性能を評価するものである。本シミュレーション装置1によるシミュレーションは、ISSを用いずに、ソフトウェアを実行して得られる実行履歴である実行ログに基づいてシミュレーションが実行される。
つまり、本シミュレーション装置1は、ハードウェアの性能を評価するための、ソフトウェアとハードウェアのモデル化に関し、キャッシュ解析可能な抽象度で、ISSを必要とせずに、過去のソフトウェア設計資産を活用してターゲットCPUのアーキテクチャ検討可能な、ソフトウェアのモデル化を提供する。
ここで、実行ログ(実行時命令列)とは、ソフトウェアをターゲットCPU用のISS等で実行させた時に実際に実行された命令の履歴のことである。
本シミュレーション装置1は、SW(SoftWare)/HW(HardWare)分割部2,フラグ処理部3,第1取得部4,分割部5,機能モジュール作成部6,基本処理実行ログ生成部10及びシミュレーション実行部20を備えている。
SW/HW分割部2は、シミュレーション対象のシステムの仕様に基づいて、その仕様によって決定する処理、または、その仕様を、ソフトウェアの処理とハードウェアの処理とに分割するものである。
フラグ処理部3は、基本処理実行ログ生成部10が後述する基本処理実行ログを生成するために用いる、予め作成された既存の仮ソフトウェアに対して、その仮ソフトウェアにおけるソースコードの分岐行、及び/または、オブジェクトを呼び出す関数行を示すフラグを、その行の直前あるいは直後にフラグを埋め込むものである。
例えば、図2に示すように、仮ソフトウェアが構成されていた場合、フラグ処理部3は、ソースコードの分岐行である“if”文及び“else”文の直後に所定のアドレスに対してリードアクセスを行うフラグを埋め込む。ここでは、フラグ処理部3は、“addr1+offset”をリードする“DT_READ(addr1,offset,data)”と、“addr2+offset”をリードする“DT_READ(addr2,offset,data)”と、“addr4+offset”をリードする“DT_READ(addr4,offset,data)”とをそれぞれフラグとして挿入する。
また、フラグ処理部3は、“ex_test0(num);”のようにオブジェクトをコールする関数行の直前に、ここでは“addr3+offset”をリードする“DT_READ(addr3,offset,data)”をフラグとして挿入する。
このように、フラグ処理部3がフラグを挿入することによって、仮ソフトウェアを実機あるいはISSによって実行した結果得られる実行ログにおいて、指定したアドレスへのリードアクセスをフラグ情報として取得することができるようになる。そして、そのフラグ情報を元に、後述する図6に示すオブジェクト遷移グラフ(オブジェクトシーケンス図)や各オブジェクトのフラグ間のソースコードの自動抽出が可能となる。その結果、後述する簡易ソフトウェアモデル生成部11が、簡易ソフトウェアを作成することができる。
なお、フラグ処理部3は、仮ソフトウェアにおける、例えば“if”や“else”に基づいて分岐行を自動的に特定して、自動的にフラグを埋め込む。また、フラグ処理部3は、仮ソフトウェアにおいて、オブジェクトを呼び出す関数に法則性がある場合にはその法則性(例えば、関数の命名の仕方)、図2の例では“ex”に基づいて、所定関数を自動的に特定する。そして、フラグ処理部3はその特定した関数の直前あるいは直後にフラグを自動的に埋め込む。
第1取得部4は、予め作成された流用のための仮ソフトウェアを、実機上あるいはISSによって実行することにより、仮ソフトウェアの実行ログ(第1実行ログ)を取得するものである。
ここで、図3に第1取得部4によって取得される実行ログの一例を示す。
図3の実行ログの情報は、主として処理毎に、実行時間情報としてのタイムスタンプ(図中“time”),命令/データアクセスの指定(図中“type”)、データアクセスの場合はリード/ライトの指定、命令の場合のオブジェクト(図中“Object(\#line)”;オブジェクトファイル)、及びアドレスを含んでいる。なお、このオブジェクトを参照することにより、処理がどのソースファイルを実行しているのかが分かる。
第1取得部4は、その他、後述する簡易ソフトウェアモデル生成のために、各処理の実オブジェクト間の呼び出し関数の実行情報(ソースコードの実行行数)も取得する。そして、第1取得部4が取得した情報は、一般的なエミュレータ及びISSを含む統合開発ツールにはデバッグ機能として持っている。
なお、仮ソフトウェアが通信処理ソフトウェアの場合、実行ログの処理量である命令アドレス列およびデータアクセス列の数は、転送レートを変えることでも変化するため、ターゲットプロセッサ上でのシミュレーション条件に留意する必要がある。
分割部5は、第1取得部4が取得した実行ログを、複数の基本処理単位に分割するものである。なお、基本処理単位とは、ソフトウェアモデルで実行される処理の実行単位をいう。具体的には、後述する図6に示す。
分割部5は、例えばマルチメディア処理や通信処理のアプリケーションの場合、同じ処理の繰り返しがほとんどであるため、周期処理のパターンからOSのタスク起動点を見つけ、これを足がかりにタスク単位で分割する。あるいは、分割部5は命令アドレス列からオブジェクトファイル間の処理の流れを追い、タスクの区切りを見つけて分割する。
ここでは、分割部5は、図4に示すごとくオブジェクトシーケンスを作成して周期処理のパターンを抜き出すことにより、実行ログを複数の基本処理単位に分割する。
図5は図4のオブジェクトシーケンス表を図化したものである。図5において“xxx.o”,“yyy.o”,“zzz.o”は、オブジェクトを示している。
図5に示すように、各基本処理単位Fn[1]は、オブジェクトファイル間のアクセスの始点から終点までを一つの区切りとすることで抜き出されたものである。
機能モジュール作成部6は、分割部5によって分割された基本処理単位に応じて、シミュレーション実行部20によって実行されるシミュレーションに用いる機能モジュールを作成する。機能モジュールの詳細については、後述する図7を参照しながら詳細に説明する。
基本処理実行ログ生成部10は、複数の基本処理単位のうちの一部の基本処理単位を変更することによりシミュレーションに用いる基本処理実行ログを生成する。
具体的には、基本処理実行ログ生成部10は、簡易ソフトウェアモデル生成部11,第2取得部12及び合成部13を備えている。
簡易ソフトウェアモデル生成部11は、分割部5によって分割された複数の基本処理単位のうちの変更対象である基本処理単位(変更対象基本処理単位)をオペレータの指示に基づいて抽出し、抽出した変更対象基本処理単位に基づいて簡易ソフトウェアモデルを生成するものである。
つまり、簡易ソフトウェアモデル生成部11は、仮ソフトウェアに対して、変更する処理に該当する基本処理単位(変更対象基本処理単位)を抽出し、それに対して変更を加えることによって、ターゲットCPUに適用される新たなソフトウェアに対応する基本処理単位を生成する。
図6に簡易ソフトウェア(簡易ソフトウェアモデル)11aの構成を示す。簡易ソフトウェアモデル11aの構成は、大別してユーザモデル11bとリアルタイムOS(RTOS)11cとから成る。ユーザモデル11bは更に、イベントフラグで開始され、RAMへのデータアクセスを含むデータ構造の連続・反復・選択処理を行うデータ処理部11dと、初期化シーケンスや、データ処理中にシステムコールで呼び出される処理シーケンスのような制御部11eで構成される。
簡易ソフトウェアモデル生成部11は、ユーザモデル11bに該当する部分を、変更対象として抽出して変更を加える。
なお、簡易ソフトウェアモデル生成部11のより詳細な動作内容については、後述する図10のフローチャートを参照しながら説明する。
第2取得部12は、簡易ソフトウェアモデル生成部11によって生成された簡易ソフトウェアモデル11aを、実機あるいはISSによって実行することにより、その実行履歴である実行ログ(仮実行ログ)を取得するものである。
合成部13は、分割部5によって分割された複数の基本処理単位のうちの変更対象基本処理単位以外の基本処理単位と、仮実行ログとを合成して基本処理実行ログを生成するものである。
シミュレーション実行部20は、基本処理実行ログ生成部10によって生成された基本処理実行ログを用いてシミュレーションを行い、ターゲットCPUの性能評価のための統計情報を取得するものである。
具体的には、シミュレーション実行部20は、基本処理実行ログをハードウェアモデルに入力することにより、シミュレーションを実行して性能評価に要する情報(統計情報)を取得する。
図7にシミュレーション部20によって実現される性能評価シミュレーションの対象(ハードウェアモデル)について説明する。
つまり、CPU21,I-cache(命令キャッシュ)30,D-cache(データキャッシュ)31,バス32,外部RAM33,及び周辺ハードウェア(Hardware;図中“周辺HW”と表記)34は、全体が性能評価シミュレーションの対象である。
CPU21は、性能評価の対象であるターゲットプロセッサである。このCPU21上でソフトウェアを実行したときのハードウェア性能を調査することで、CPU21の性能検証を行うことができる。
CPU21は、基本処理単位で構成された機能モジュール22−1〜22−n(ここではnは3以上の整数),スケジューラ部23,及びアクセス処理部24から成る。
機能モジュール22−1〜22−n(以下、これら機能モジュール22−1〜22−nを区別しない場合には機能モジュール22という)は、実行ログから抽出された基本処理単位のログ解析ファイルである基本処理実行ログ25を入力としている。
機能モジュール22は、CPU21において、アクセス処理部24により実行ログに基づいて分割されたソフトウェアモデルで実行される処理の実行単位である基本処理単位として機能する。
つまり、入力される基本処理実行ログはいずれかの機能モジュール22に属し、同じ機能ブロックに複数所属している場合は、実行時に選択される。
スケジューラ部23は、イベント制御情報26を読み込んで、そのイベント制御情報をトリガとして、対応する機能モジュール22にプロセス処理を依頼する。
イベント制御情報26は、第1取得部4によって取得された実行ログから得られるもので、この時間にこのイベントが発生するというパラメータファイルからなる。
そして、スケジューラ部23はそのイベント制御情報26に基づいて基本処理実行ログを対応する機能モジュール22に投入する。
つまり、シミュレーション実行部20は、実行ログにおけるイベント制御情報に基づいて基本処理実行ログを、ハードウェアモデルに入力するようになっている。
そして、スケジューラ部23は、アクセス処理部24により実行されたシミュレーション処理から性能評価に用いる統計情報27を作成する。
例えば、スケジューラ部23は、基本処理単位毎、即ち、機能モジュール22毎に、命令実行時間(ns),命令フェッチ時間(ns),データアクセス時間(ns),及びCPU負荷率(%)を、統計情報27として取得し作成する。つまり、実行ログは命令アドレス列と、データアクセスのアドレス列を持っているため、シミュレーション実行部20は、それぞれ命令キャッシュ、データキャッシュを経由してバスアクセスを実行させることができ、その結果、命令実行時間、命令フェッチ時間、データアクセス時間等をモニタし、CPU負荷率等統計データを作成できる。
アクセス処理部24は、機能モジュール22から命令フェッチまたはデータアクセス処理を受けてI-cache30またはD-cache31へのアクセスを実行する。
ここで、I-cache30とは、外部RAM33上に存在する命令の取得時間を短くするための、命令キャッシュである。D-cache31もI-cache30と同じく、こちらはデータアクセスの時間を短くするための、データキャッシュである。I-cache30と異なるのは、読み出しだけではなく、書き込みにも対応している点である。
I-cache30及び D-cache31は、バス32に接続される。バス32に接続されているものは、この例では他に外部RAM33と周辺HW34がある。なお、外部RAM33は、CPU21の外部にバス32を介して接続されるRAMを意味する。周辺HW34とは、外部I/F、あるいは、特定用途向け専用ハードウェアなどを意味している。
シミュレーション実行部20は、基本処理実行ログの入力を除く部分は、例えば、SystemC言語などを用いたトランザクションレベルで構築する。
ここで、図8にシミュレーション実行部20によるシミュレーションにおいて、CPU21(CPUモデル)が、周期的にイベントを行う様子を示す。
各イベントのプロセス処理は、複数の基本処理で構成される。例えば、パラメータとして与えておいた頻度に従い周期イベントAが発生すると、これをトリガとしてCPU21内部のスケジューラ部23は機能モジュール22−1に続いて機能モジュール22−2を呼び出す。
呼び出された機能モジュール22−1,22−2はそれぞれ対応する基本処理の実行ログを実行する。イベントや基本処理には要求仕様等によって優先順位を予め与えておき、イベントや基本処理同士が時間的に衝突することを避けるようにする。図8の例では、スケジューラ部23は、イベントAと後続のイベントBとが衝突しないように制御する。
なお、機能モジュール22では、性能評価に必要な命令フェッチ、メモリアクセス、命令時間消費など統計情報データを収集するための共通処理の他に、ハードウェアの完成度に応じて各モジュール固有の機能を記述する。
次に、図9のフローチャート(ステップS1〜S17,S8´,S10´)を参照しながら、本シミュレーション装置1の動作手順の概略、即ち、本発明の一実施形態としてのシミュレーション方法を示す。
まず、本シミュレーション装置1は、性能評価対象のハードウェア(以下、ターゲットCPUという)と、そのターゲットCPUに搭載するソフトウェアとに係るシステムの要求仕様を入力される(ステップS1)。なお、機能を検証するための機能モデルを作成することもあるが、ここでは省略している。
次に、SW/HW分割部2が、要求仕様に基づいて発生する処理を、ソフトウェアの処理とハードウェアの処理と(ソフトウェアモデルとハードウェアモデルと)に分割する(ステップS2)。
ここで、シミュレーション実行部20は、ハードウェアに係る動作モデルを作成する(ステップS3)。なお、動作モデルは、RTLまたは抽象度の高いTLM、あるいはその両方の混在した記述で作成される。
一方、ソフトウェアは、性能を評価するのに十分な負荷を作り出すことのできる仮ソフトウェアとして過去に作成した既存のソフトウェア(過去のソフトウェア)を用いる(ステップS4)。つまり、流用設計元となるとなる既存モデルのソースコードを利用する。ここでは、リアルタイムOS(RTOS)を利用する場合を記述している。
次に、フラグ処理部3が、図2を参照しながら説明したように仮ソフトウェアにフラグを埋め込む(ステップS5;フラグ処理ステップ)。
そして、第1取得部4が、仮ソフトウェアをターゲットプロセッサ向けにコンパイルし、実行バイナリを作成する。ソフトウェア実行環境として、エミュレータを介した実機または計算機上のISSと、OSを含む命令の実行履歴(実行ログ)を取得する計算機を用いて、実際にソフトウェアを実行することで実行ログを取得する(ステップS6,S7;第1取得ステップ)。
続いて、分割部4が、取得した実行ログを基本処理単位に分割する(ステップ8;分割ステップ)。
なお、この基本処理単位の抜き出しに併せて、ハードウェアの方では機能モジュール作成部6が、対応する機能モジュールを作成する(ステップS8´)。
次に、基本処理実行ログ生成部10の簡易ソフトウェアモデル生成部11が、基本処理単位に分割した実行ログについて、仮ソフトウェアの既存機能からの変更となる処理部分を選別し(ステップS9)、変更部分については(ステップS9のYesルート)簡易ソフトウェアモデル11aを作成する(ステップS10)。
ここで、簡易ソフトウェアモデル11aとは、要求仕様に記載される機能をそのまま実装した場合の抽象度を記述したモデルであり、具体的には異常検出の分岐処理や内部状態遷移、内部変数保持などの処理を省いたモデルとなる。
実行ログから簡易ソフトウェアモデル11aを作成する詳細手順については、後述する図10を参照しながら説明する。
なお、このとき、機能モジュール作成部6が、簡易ソフトウェアモデル生成部11が作成した簡易ソフトウェアモデルに合わせ、必要に応じてハードウェアの機能モジュールの修正を行う(ステップS10´)。
続いて、第2取得部12は、作成された簡易ソフトウェアモデルをターゲットプロセッサ向けにコンパイルし(ステップS11)、実行バイナリを作成する(ステップS12)。その後、第2取得部12は、この実行バイナリをターゲットプロセッサ用のISS上で実行し(ステップS13)、実際に実行された命令の実行履歴(仮実行ログ)を取得する(ステップS14)。
そして、合成部13が、上記ステップS9で変更部分に選択しなかった既存部分の基本処理単位の実行ログと、仮実行ログとを合成し(ステップS15)、基本処理実行ログを生成する(ステップS16)。
最後に、シミュレーション実行部20が、その基本処理実行ログと、動作モデルとを用いてターゲットCPU21の性能評価シミュレーションを実行し(ステップS17;シミュレーション実行ステップ)、処理を終了する。ここで、シミュレーション実行部20は、基本処理単位の実行ログを、頻度などのパラメータ設定とともに動作モデルに入力として与えることで、性能評価シミュレーションを実行している。
次に、図10に示すフローチャート(ステップS20〜S33)を参照しながら、簡易ソフトウェアモデル生成部11のより詳細な動作手順(簡易ソフトウェアモデルのフロー)を示す。
簡易ソフトウェアモデル生成部11は、分割部5が仮ソフトウェアの実行ログを図3〜図5に示す手順で基本処理単位に分割した中から、新規に変更する処理部分を抜き出して取得する(ステップS20)。
次に、簡易ソフトウェアモデル生成部11は、当該実行ログからデータアクセスを除いた命令処理行のみを抽出したデータを作成し(ステップS21)、更に予め付加しておいたオブジェクト情報を基に、図4のオブジェクトシーケンス表を作成する(ステップS22)。
あるいは、簡易ソフトウェアモデル生成部11は、命令アドレス列からオブジェクト情報を付加することでもオブジェクトシーケンスを作成可能である。
そして、簡易ソフトウェアモデル生成部11は、オブジェクトシーケンスとタイムスタンプ(図4中“time”)から各オブジェクトの処理時間中に実行される呼び出し関数を実行ログから抽出する(ステップS23)。
次に、簡易ソフトウェアモデル生成部11は、抽出した関数がユーザモデル11に係るものか、RTOS11に係るものかを、各関数がアクセスするオブジェクトに応じて分別する(ステップS24)。つまり、簡易ソフトウェアモデル生成部11は、呼び出し関数がアクセスするオブジェクトを参照することによって、その関数がユーザモデル11に関するものか、RTOS11に関するものかを判断する。
RTOS11に関するものについては、簡易ソフトウェアモデル生成部11は、その呼び出し関数処理前後のオブジェクトを抽出し(ステップS25)、抽出したオブジェクトのパターン発生率を算出する(ステップS26)。
これらの処理はユーザモデル11と同様に実行ログ内に含まれているため、既存部分を参考にして類似箇所のログを繋ぎ合わせる。具体的には、簡易ソフトウェアモデル生成部11は、当該基本処理の実行処理のタイムスタンプを基に前後のRTOSオブジェクトを抽出し、オブジェクトパターンの発生頻度を第1取得部4が取得した実行ログから求めて、各オブジェクトの発生率を決定する係数を与えることで、パターン発生率を作成する
なお、パターン発生率は、イベント制御情報26の一部としてスケジュール部23の制御に用いられる。
一方、ユーザモデル11bに対しては、簡易ソフトウェアモデル生成部11は、上記図4のオブジェクトシーケンスと呼び出し関数の実行情報の相関に基づき、ユーザモデル11bのデータ処理部11dおよび制御部11eについて、流用元である既存の仮ソフトウェアのソースコードから必要な記述を抜粋することで機能レベルの抽象化モデルを作成する(ステップS27,S28)。
ここで、必要な記述とは、呼び出し関数及び呼び出し関数を読み出している行の前後の処理、分岐の流れを補完することであり(ステップS27)、異常検出のif文や、内部状態遷移処理は省略する。
例えば、簡易ソフトウェアモデル生成部11は、図4に示すオブジェクトシーケンス表において、タイムスタンプ“30530”の関数“#100”の直後と、タイムスタンプ“30539”の関数“#398”の直前とに対して上記補完を行う。また、簡易ソフトウェアモデル生成部11は、タイムスタンプ“30557”の関数“#406”の直後と、タイムスタンプ“30572”の関数“#174”の直前とに対して上記補完を行う。
また、簡易ソフトウェアモデル生成部11は、上記手順で作成した抽象化モデルのソースコードに、切り出した当該基本処理の開始と終了を制御するmain関数を追加する(ステップS28)。例えば、簡易ソフトウェアモデル生成部11は、図11(a)に示す基本処理1,2に対して、図11(b)に示すように、関数“f1.o”と“f2.o”との間にmain関数“main.o”を追加する。これによって、当該基本処理は周辺処理とのレイヤ間でデータ連携せず、独立で動く抽象化モデル11fとなる。
このように、簡易ソフトウェアモデル生成部11は、実行ログのオブジェクトシーケンスから簡易ソフトウェアモデル11aのデータ処理部11dを作成する。
なお、簡易ソフトウェアモデル生成部11は、main関数内では、前述の当該基本処理の呼び出しの他、オブジェクト内で呼び出されるRAMアクセスのアドレスやデータ、当該基本処理以外のオブジェクトに実装される変数を初期値として設定する。こうしておくことで、第2取得部12が、当該基本処理をコンパイル後、ターゲットプロセッサ上で実行して取り出す実行ログからオブジェクトmain.oの処理を取り除けば当該基本処理部の正確な命令数、データアクセス数を把握することができる。
なお、簡易ソフトウェアモデル生成部11は、RAMアクセスのアドレスについては、流用元である既存の仮ソフトウェアのメモリマップを元にRAM領域内の適当なアドレスを割り振る。また、簡易ソフトウェアモデル生成部11は、当該基本処理以外の変数についても同様に適当な値を割り振るものとする。
このように、基本処理実行ログ生成部10は、仮ソフトウェアに基づいて、仮ソフトウェアにより得られた基本処理単位に変更を加えることで、ターゲットCPUに搭載する新たなソフトウェアに対応する実行ログを取得する。
そして、第2取得部12が、コンパイル処理(ステップS29),実行(ステップS30)を行うことにより、仮実行ログを取得する(ステップS31)。
次に、基本処理実行ログ生成部10は、その仮実行ログのうち、データ処理部11dに係るものと制御部11eに係るものとを分別する(ステップS32)。
ここで、基本処理実行ログ生成部10は、仮実行ログのタイムスタンプに基づいて、周期的なものはデータ処理部11dに係るものと判断し、非周期的なものを制御部11eに係るものと判断する。
そして、基本処理実行ログ生成部10は、制御部11eに係るものについては、上述したRTOS11cと同様にパターン発生率を算出して出力する(ステップS26)。
つまり、制御部11eの場合、システムコールで呼び出されて実行される。この処理タイミングはソフトウェア要求仕様によって確定するため、開発初期のアーキ検討時には未定の場合も考えられる。そこで既存の実行ログからオブジェクトパターンの発生頻度、即ち全命令数に対する当該オブジェクトの命令数の割合及び当該オブジェクトの実行周期を求めて、各オブジェクトの発生率を決定する係数を与えることで、基本処理実行ログ生成部10は各制御部11eのパターン発生率を作成する。
そして、上記ステップS31で取得された仮実行ログは合成部13に出力される。つまり、基本処理実行ログ生成部10はデータ処理部11dと制御部11eとをまとめて仮実行ログとして出力し(ステップS33)、上記図9のステップS15の処理に移行する。
このように、本発明の一実施形態としてのシミュレーション装置1及びシミュレーション方法によれば、第1取得部4が予め作成された仮ソフトウェアを実行することによって取得した第1実行ログを、分割部5が複数の基本処理単位に分割する。次に、基本処理実行ログ生成部10が、一部の基本処理単位を変更することにより、シミュレーションに用いる基本処理実行ログを生成する。そして、シミュレーション実行部20は、その基本処理実行ログを、ハードウェアモデルに入力することにより、シミュレーションを実行して性能評価に要する情報を取得する。
したがって、ターゲットCPUに実際に実装する実ソフトウェアが完成していない早い段階から、仮ソフトウェアを利用することで、ターゲットCPUの性能評価を高精度に実行できる。つまり、基本処理実行ログ生成部10は、仮ソフトウェアの実行ログに変更を加えて、実ソフトウェアに対応する実行ログを生成する。そのため、ターゲットCPUに実際に搭載する新たなソフトウェアが完成していなくても、過去のソフトウェア設計資産を活用することで設計初期の段階から高精度のシミュレーションを実行でき、ターゲットCPUのアーキテクチャ検討が可能になる。しかも、既存の仮ソフトウェアを用いるので、要求仕様のドキュメントからアプリケーションプログラムをモデリングする必要がなく、仮ソフトウェアを作成するまでの工数も削減できる。
また、ソフトウェアを基本機能毎に分割してハードウェアモデルに負荷を与える構成とすることで、ソフトウェアの設計進捗度に応じて各機能の抽象度を変更していくことができ、更なる性能評価の精度向上が可能となる。
さらに、従来技術のように、シミュレーションの際にソフトウェアをISSによって実行することなく、シミュレーション実行部20は、基本処理実行ログを用いてシミュレーションを実行する。したがって、シミュレーションに係る工数を低減でき、シミュレーションに要する時間を短縮できる。
このように、本シミュレーション装置1によれば、システムLSI(ターゲットCPU)のアーキテクチャを開発早期に高精度で検討でき、処理負荷と設計マージンを抑えて低コスト化と小型化とを達成することに大きく寄与できる。
また、基本処理実行ログ生成部10は、具体的には、簡易ソフトウェアモデル生成部11が簡易ソフトウェアモデルを生成し、第2取得部12がその仮実行ログを取得する。そして合成部13が未変更部分と仮実行ログとを合成することで、既存の仮ソフトウェアから、実ソフトウェアに対応する実行ログを確実に、且つ、少ない工数で生成することができる。
さらに、フラグ処理部2は自動的に仮ソフトウェアにフラグを埋め込み、その実行ログにおけるフラグ情報に基づいて、簡易ソフトウェアモデル生成部11が簡易ソフトウェアモデルを生成する。そのため、簡易ソフトウェアモデル生成部11は、オブジェクトシーケンスの生成、及び、ソースコードの抽出を高速且つ確実に行うことができる。
さらに、シミュレーション実行部20は、第1取得部4によって取得された実行ログにおけるイベント制御情報に基づいて基本処理実行ログを、ハードウェアモデルに入力するので、基本処理実行ログを用いたシミュレーションを既存の資源を用いて確実に実行できる。
〔2〕本発明の変形例について
なお、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態では、基本処理実行ログ生成部10が、分割部5によって分割された基本処理単位の内容を変更することにより、仮ソフトウェアに基づいて実装ソフトウェアに対応する実行ログを取得するように構成した。しかし、本発明はこれに限定されるものではなく、基本処理実行ログ生成部10は、分割部5によって分割された基本処理単位を、別途用意した他の基本処理単位に置換することによって、実装ソフトウェアに対応する実行ログを取得するように構成してもよい。
ここで、上記他の基本処理単位としては、新たに作成したソフトウェアに基づく場合(後述する図12の場合)や、別の仮ソフトウェアに基づいて取得した場合(後述する図13の場合)が考えられる。
例えば、図12のフローチャート(ステップS1〜S4,S6〜S9,S8´,S15〜S17,S40〜S46,S46´)を参照しながら、新たに作成したソフトウェアに基づく基本処理単位を置換する場合について説明する。なお、図12において既述の符号と同一の符号は、同一の処理もしくは略同一の処理を示しているので、ここではその詳細な説明は省略する。また、図12及び後述する図13において、説明の簡略化のためにフラグの埋め込み処理(図9のステップS5の処理)は省略している。
つまり、図12に示す本発明の第1変形例は、基本処理実行ログ生成部10が変更対象として変更部分の基本処理を抜き出す(ステップS40)。そして、基本処理実行ログ生成部10は抜き出した基本処理を削除するか、あるいは、後述するステップS36において、その部分に他の基本処理を上書きする。
つまり、基本処理実行ログ生成部10は、仮ソフトウェアとは別に、今回の変更部分に係る新たなソフトウェア設計を取得し(ステップS41)、それを第2取得部12がターゲットCPU向けにコンパイルし(ステップS42)、実行バイナリを取得する(ステップS43)。次いで、第2取得部12は、その実行バイナリを、ISSを用いてターゲットCPU上で実行し、変更部分に係る仮実行ログ(第2実行ログ)を取得する(ステップS44)。
そして、基本処理実行ログ生成部10は、上記ステップS40で抽出した変更対象の基本処理単位を、上記ステップS45で取得した仮実行ログに置換する(ステップS46)。つまり、基本処理実行ログ生成部10は、抽出した部分に仮実行ログを挿入する。このとき、機能モジュール作成部6は、挿入された仮実行ログに対応する機能モジュールを作成する(ステップS46´)。
その後、合成部13が未変更部分と仮実行ログとを合成して(ステップS15)、基本処理実行ログ生成部10は、基本処理実行ログを生成する(ステップS16)。
このように、本発明の第1変形例としてのシミュレーション装置1の基本処理実行ログ生成部10は、オペレータが別途用意した新規ソフトウェアの仮実行ログを、仮ソフトウェアの実行ログの一部と置き換えることにより、基本処理実行ログ(ソフトウェアモデル)を生成する。これによっても上述した実施形態と同様の作用効果を得ることができる。
次に、図13のフローチャート(ステップS4−1、S4−2,S6−1〜S8−1,S6−2〜S8−2,S15,S16,S50〜S53,S60)を参照しながら、上記ステップS4で流用する仮ソフトウェアとは異なる他の仮ソフトウェアに基づいて基本処理単位を置換する場合について説明する。なお、図13において既述の符号と同一の符号は、同一の処理もしくは略同一の処理を示しているので、ここではその詳細な説明は省略する。
つまり、図13に示す本発明の第2変形例は、第1取得部4が、2つの既存の仮ソフトウェアX1,Y1を取得し(ステップS4−1,4−2)、それぞれに対して、実機上で実行して(ステップS6−1,6−2)、実行ログX2,Y2(第1実行ログ及び第2実行ログ)を取得する(ステップS7−1,7−2)。
そして、分割部5がそれぞれの実行ログX2,Y2に対して基本処理単位への分割を行なう(ステップS8−1,8−2)。
次に、基本処理実行ログ生成部10は、2つの仮ソフトウェアX1,Y1のうち、ベースとなる仮ソフトウェアX1の基本処理単位における差し換え部分を選択し(ステップS50)、差し換え部分の基本処理を抜き出す(ステップS51)。
一方、基本処理実行ログ生成部10は、他方の仮ソフトウェアY1の基本処理単位から、流用部分の基本処理単位を抜き出す(ステップS52)。
そして、基本処理実行ログ生成部10は、抜き出した基本処理単位と、流用部分の基本処理単位とを差し替える(ステップS53)。
これにより、基本処理実行ログ生成部10は、複数の既存の仮ソフトウェアX1,Y1から、実装ソフトウェアに対応する基本処理実行ログを生成する。
なお、流用部分の機能に改変や追加が必要な場合は、図13において二点鎖線で示す簡易ソフトウェアモデル化処理S60(ステップS10〜S14)を実施し、その流用部分を抽象化して簡易ソフトウェアモデル化し、ターゲットプロセッサ上で実行して仮実行ログを作成する。
また、RTOS部は、流用元のソフトウェア実行ログからそれぞれの当該基本処理の実行時間を元に前後のRTOSオブジェクトの実行ログを抽出する。上記手順にて作成した各基本処理実行ログおよびRTOS部の実行ログに発生頻度と順番のパラメータを与えてソフトウェア負荷を作り出すことで、過去のソフトウェアの一部機能移植や、異なる機能を持つ2つ以上のソフトウェアを1本化する際に、開発早期に簡易的にモデル化することが可能になる。
このように、本発明の第2変形例としてのシミュレーション装置1の基本処理実行ログ生成部10は、複数の既存の仮ソフトウェアX1,Y1を用いて、これらを組み合わせることにより、基本処理実行ログ(ソフトウェアモデル)を生成する。これによっても上述した実施形態と同様の作用効果を得ることができる。
また、上述した実施形態では、機能モジュール作成部6と基本処理実行ログ生成部10とを別に構成した。しかし、本発明はこれに限定されるものではなく、機能モジュール作成部6は基本処理実行ログ生成部10の機能の一部として実現されてもよい。
なお、上述したSW/HW分割部2,フラグ処理部3,第1取得部4,分割部5,機能モジュール作成部6,基本処理実行ログ生成部10,簡易ソフトウェアモデル生成部11,第2取得部12,合成部13,及びシミュレーション実行部20としての機能は、コンピュータ(CPU,情報処理装置,各種端末を含む)が所定のアプリケーションプログラム(シミュレーションプログラム)を実行することによって実現されてもよい。
そのプログラムは、例えばフレキシブルディスク,CD(CD−ROM,CD−R,CD−RWなど),DVD(DVD−ROM,DVD−RAM,DVD−R,DVD−RW,DVD+R,DVD+RWなど)等のコンピュータ読取可能な記録媒体に記録された形態で提供される。この場合、コンピュータはその記録媒体からシミュレーションプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信回線を介してコンピュータに提供するようにしてもよい。
ここで、コンピュータとは、ハードウェアとOS(オペレーティングシステム)とを含む概念であり、OSの制御の下で動作するハードウェアを意味している。また、OSが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、CPU等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえている。
上記シミュレーションプログラムとしてのアプリケーションプログラムは、上述のようなコンピュータに、SW/HW分割部2,フラグ処理部3,第1取得部4,分割部5,機能モジュール作成部6,基本処理実行ログ生成部10,簡易ソフトウェアモデル生成部11,第2取得部12,合成部13,及びシミュレーション実行部20としての機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくOSによって実現されてもよい。
なお、本実施形態としての記録媒体としては、上述したフレキシブルディスク,CD,DVD,磁気ディスク,光ディスク,光磁気ディスクのほか、ICカード,ROMカートリッジ,磁気テープ,パンチカード,コンピュータの内部記憶装置(RAMやROMなどのメモリ),外部記憶装置等や、バーコードなどの符号が印刷された印刷物等の、コンピュータ読取可能な種々の媒体を利用することもできる。
〔3〕付記
(付記1)
ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価のためのシミュレーションを、ハードウェアモデルを用いて実行するシミュレーション装置であって、
既存の仮ソフトウェアを実行することにより第1実行ログを取得する第1取得部と、
前記第1実行ログを複数の基本処理単位に分割する分割部と、
前記複数の基本処理単位のうちの一部の基本処理単位を変更することにより前記シミュレーションに用いる基本処理実行ログを生成する基本処理実行ログ生成部と、
前記基本処理実行ログを、前記ハードウェアモデルに入力することにより、前記シミュレーションを実行して前記性能評価に要する情報を取得するシミュレーション実行部とを備えたことを特徴とする、シミュレーション装置。
(付記2)
前記基本処理実行ログ生成部が、
前記複数の基本処理単位のうちの変更対象基本処理単位を抽出し、抽出した前記変更対象基本処理単位に基づいて簡易ソフトウェアモデルを生成する簡易ソフトウェアモデル生成部と、
前記簡易ソフトウェアモデルに基づいて仮実行ログを取得する第2取得部と、
前記複数の基本処理単位のうちの前記変更対象基本処理単位以外の基本処理単位と、前記仮実行ログとを合成して前記基本処理実行ログを生成する合成部とを備えたことを特徴とする、付記1記載のシミュレーション装置。
(付記3)
前記仮ソフトウェアにおけるソースコードの分岐行もしくはオブジェクトを呼び出す関数行を示すフラグを前記仮ソフトウェアに埋め込むフラグ処理部を備え、
前記第1取得部は、前記フラグを埋め込まれた前記仮ソフトウェアを実行して前記第1実行ログを取得するように構成されるとともに、
前記簡易ソフトウェアモデル生成部が、前記変更対象基本処理単位における前記フラグに対応するフラグ情報に基づいて、前記変更対象基本処理単位内のオブジェクトシーケンスを生成し、前記ソースコードを抽出して前記簡易ソフトウェアモデルを生成することを特徴とする、付記2記載のシミュレーション装置。
(付記4)
前記基本処理実行ログ生成部が、前記複数の基本処理単位のうちの一部の基本処理単位を、他の基本処理単位に置換することにより前記基本処理実行ログを生成することを特徴とする、付記1記載のシミュレーション装置。
(付記5)
前記基本処理実行ログ生成部が、前記仮ソフトウェアとは異なる他の仮ソフトウェアを実行して第2実行ログを取得し、その第2実行ログに基づいて前記他の基本処理単位を取得することを特徴とする、付記4記載のシミュレーション装置。
(付記6)
前記シミュレーション実行部は、前記第1実行ログにおけるイベント制御情報に基づいて前記基本処理実行ログを、前記ハードウェアモデルに入力することを特徴とする、付記1〜5のいずれか1項に記載のシミュレーション装置。
(付記7)
ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価のためのシミュレーションを、ハードウェアモデルを用いて実行するシミュレーション方法であって、
既存の仮ソフトウェアを実行することにより第1実行ログを取得する第1取得ステップと、
前記第1実行ログを複数の基本処理単位に分割する分割ステップと、
前記複数の基本処理単位のうちの一部の基本処理単位を変更することにより前記シミュレーションに用いる基本処理実行ログを生成する基本処理実行ログ生成ステップと、
前記基本処理実行ログを、前記ハードウェアモデルに入力することにより、前記シミュレーションを実行して前記性能評価に要する情報を取得するシミュレーション実行ステップとを含んでいることを特徴とする、シミュレーション方法。
(付記8)
前記基本処理実行ログ生成ステップが、
前記複数の基本処理単位のうちの変更対象基本処理単位を抽出し、抽出した前記変更対象基本処理単位に基づいて簡易ソフトウェアモデルを生成する簡易ソフトウェアモデル生成ステップと、
前記簡易ソフトウェアモデルに基づいて仮実行ログを取得する第2取得ステップと、
前記複数の基本処理単位のうちの前記変更対象基本処理単位以外の基本処理単位と、前記仮実行ログとを合成して前記基本処理実行ログを生成する合成ステップとを含んでいることを特徴とする、付記7記載のシミュレーション方法。
(付記9)
前記仮ソフトウェアにおけるソースコードの分岐行もしくはオブジェクトを呼び出す関数行を示すフラグを前記仮ソフトウェアに埋め込むフラグ処理ステップをさらに含み、
前記第1取得ステップにおいて、前記フラグを埋め込まれた前記仮ソフトウェアを実行して前記第1実行ログが取得されるとともに、
前記簡易ソフトウェアモデル生成ステップにおいて、前記変更対象基本処理単位における前記フラグに対応するフラグ情報に基づいて、前記変更対象基本処理単位内のオブジェクトシーケンスが生成され、前記ソースコードを抽出して前記簡易ソフトウェアモデルが生成されることを特徴とする、付記8記載のシミュレーション方法。
(付記10)
前記基本処理実行ログ生成ステップにおいて、前記複数の基本処理単位のうちの一部の基本処理単位を、他の基本処理単位に置換することにより前記基本処理実行ログが生成されることを特徴とする、付記7記載のシミュレーション方法。
(付記11)
前記基本処理実行ログ生成ステップにおいて、前記仮ソフトウェアとは異なる他の仮ソフトウェアを実行して第2実行ログを取得し、その第2実行ログに基づいて前記他の基本処理単位を取得することを特徴とする、付記10記載のシミュレーション方法。
(付記12)
前記シミュレーション実行ステップにおいて、前記第1実行ログにおけるイベント制御情報に基づいて前記基本処理実行ログを、前記ハードウェアモデルに入力することを特徴とする、付記7〜11のいずれか1項に記載のシミュレーション方法。
(付記13)
ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価のためのシミュレーションを、ハードウェアモデルを用いて実行する機能をコンピュータに実現させるためのシミュレーションプログラムであって、
既存の仮ソフトウェアを実行することにより第1実行ログを取得する第1取得部、
前記第1実行ログを複数の基本処理単位に分割する分割部、
前記複数の基本処理単位のうちの一部の基本処理単位を変更することにより前記シミュレーションに用いる基本処理実行ログを生成する基本処理実行ログ生成部、及び、
前記基本処理実行ログを、前記ハードウェアモデルに入力することにより、前記シミュレーションを実行して前記性能評価に要する情報を取得するシミュレーション実行部として、前記コンピュータを機能させることを特徴とする、シミュレーションプログラム。
(付記14)
前記基本処理実行ログ生成部として前記コンピュータを機能させる際、
前記複数の基本処理単位のうちの変更対象基本処理単位を抽出し、抽出した前記変更対象基本処理単位に基づいて簡易ソフトウェアモデルを生成する簡易ソフトウェアモデル生成部、
前記簡易ソフトウェアモデルに基づいて仮実行ログを取得する第2取得部、及び、
前記複数の基本処理単位のうちの前記変更対象基本処理単位以外の基本処理単位と、前記仮実行ログとを合成して前記基本処理実行ログを生成する合成部として、前記コンピュータを機能させることを特徴とする、付記13記載のシミュレーションプログラム。
(付記15)
前記仮ソフトウェアにおけるソースコードの分岐行もしくはオブジェクトを呼び出す関数行を示すフラグを前記仮ソフトウェアに埋め込むフラグ処理部として、前記コンピュータを機能させ、
前記第1取得部が、前記フラグを埋め込まれた前記仮ソフトウェアを実行して前記第1実行ログを取得するとともに、
前記簡易ソフトウェアモデル生成部が、前記変更対象基本処理単位における前記フラグに対応するフラグ情報に基づいて、前記変更対象基本処理単位内のオブジェクトシーケンスを生成し、前記ソースコードを抽出して前記簡易ソフトウェアモデルを生成するように、前記コンピュータを機能させることを特徴とする、付記14記載のシミュレーションプログラム。
(付記16)
前記基本処理実行ログ生成部が、前記複数の基本処理単位のうちの一部の基本処理単位を、他の基本処理単位に置換することにより前記基本処理実行ログを生成するように、前記コンピュータを機能させることを特徴とする、付記13記載のシミュレーションプログラム。
(付記17)
前記基本処理実行ログ生成部が、前記仮ソフトウェアとは異なる他の仮ソフトウェアを実行して第2実行ログを取得し、その第2実行ログに基づいて前記他の基本処理単位を取得するように、前記コンピュータを機能させることを特徴とする、付記16記載のシミュレーションプログラム。
(付記18)
前記シミュレーション実行部は、前記第1実行ログにおけるイベント制御情報に基づいて前記基本処理実行ログを、前記ハードウェアモデルに入力するように、前記コンピュータを機能させることを特徴とする、付記13〜17のいずれか1項に記載のシミュレーションプログラム。
(付記19)
ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価のためのシミュレーションを、ハードウェアモデルを用いて実行する機能をコンピュータに実現させるためのシミュレーションプログラムを記録したコンピュータ読取可能な記録媒体であって、
前記シミュレーションプログラムが、
既存の仮ソフトウェアを実行することにより第1実行ログを取得する第1取得部、
前記第1実行ログを複数の基本処理単位に分割する分割部、
前記複数の基本処理単位のうちの一部の基本処理単位を変更することにより前記シミュレーションに用いる基本処理実行ログを生成する基本処理実行ログ生成部、及び、
前記基本処理実行ログを、前記ハードウェアモデルに入力することにより、前記シミュレーションを実行して前記性能評価に要する情報を取得するシミュレーション実行部として、前記コンピュータを機能させることを特徴とする、シミュレーションプログラムを記録したコンピュータ読取可能な記録媒体。
(付記20)
前記シミュレーションプログラムは、前記基本処理実行ログ生成部として前記コンピュータを機能させる際、
前記複数の基本処理単位のうちの変更対象基本処理単位を抽出し、抽出した前記変更対象基本処理単位に基づいて簡易ソフトウェアモデルを生成する簡易ソフトウェアモデル生成部、
前記簡易ソフトウェアモデルに基づいて仮実行ログを取得する第2取得部、及び、
前記複数の基本処理単位のうちの前記変更対象基本処理単位以外の基本処理単位と、前記仮実行ログとを合成して前記基本処理実行ログを生成する合成部として、前記コンピュータを機能させることを特徴とする、付記19記載のシミュレーションプログラムを記録したコンピュータ読取可能な記録媒体。
本発明の一実施形態としてのシミュレーション装置の要部構成を示すブロック図である。 本発明の一実施形態としてのシミュレーション装置のフラグ処理部による処理を説明するための図である。 本発明の一実施形態としてのシミュレーション装置の第1取得部によって取得される実行ログの一例を示す図である。 本発明の一実施形態としてのシミュレーション装置の基本処理実行ログ生成部の簡易ソフトウェアモデル生成部が生成するオブジェクトシーケンスの一例を示す図である。 図4に示すオブジェクトシーケンスの一部に対応する簡易シーケンス図の一例を示す図である。 本発明の一実施形態としてのシミュレーション装置の基本処理実行ログ生成部の簡易ソフトウェアモデル生成部が生成する簡易ソフトウェアモデルを説明するための図である。 本発明の一実施形態としてのシミュレーション装置のシミュレーション実行部によって実現されるシミュレーション対象の構成例を示す図である。 本発明の一実施形態としてのシミュレーション装置のシミュレーション実行部によるシミュレーションにおける周期的なイベントの実行例を示す図である。 本発明の一実施形態としてのシミュレーション方法の処理手順を示すフローチャートである。 本発明の一実施形態としてのシミュレーション装置の基本処理実行ログ生成部の簡易ソフトウェアモデル生成部の動作手順の一例を示すフローチャートである。 本発明の一実施形態としてのシミュレーション装置の基本処理実行ログ生成部の簡易ソフトウェアモデル生成部の処理の一例を説明するための図であり、(a)が簡易ソフトウェアモデル生成部が処理を施す前の基本処理を示し、(b)は(a)に対して抽象化モデルを生成するための処理を施した基本処理を示している。 本発明の第1変形例としてのシミュレーション方法の処理手順を示すフローチャートである。 本発明の第2変形例としてのシミュレーション方法の処理手順を示すフローチャートである。 従来の半導体装置の性能評価シミュレーション装置の構成例を示すブロック図である。
符号の説明
1 シミュレーション装置
2 SW/HW(SoftWare/HardWare)分割部
3 フラグ処理部
4 第1取得部
5 分割部
6 機能モジュール作成部
10 基本処理実行ログ生成部
11 簡易ソフトウェアモデル生成部
11a 簡易ソフトウェアモデル
11b ユーザモデル
11c RTOS(Real Time Operating System)
11d データ処理部
11e 制御部
12 第2取得部
13 合成部
20 シミュレーション実行部
21 CPU(Central Processing Unit;ターゲットCPU)
22,22−1〜22−n 機能モジュール
23 スケジューラ部
24 アクセス処理部
25 基本処理実行ログ
26 イベント制御情報
27 統計情報
30,102 I−cache
31,103 D−cache
32,104 バス
33,105 外部RAM(Random Access Memory)
34,106 周辺HW(HardWare)
100 シミュレーション装置
101 CPU
110 ISS(Instruction Set Simulator)
120 統計情報
121 仕様
122 ソフトウェア

Claims (10)

  1. ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価のためのシミュレーションを、ハードウェアモデルを用いて実行するシミュレーション装置であって、
    既存の仮ソフトウェアを実行することにより第1実行ログを取得する第1取得部と、
    前記第1実行ログを複数の基本処理単位に分割する分割部と、
    前記複数の基本処理単位のうちの一部の基本処理単位を変更することにより前記シミュレーションに用いる基本処理実行ログを生成する基本処理実行ログ生成部と、
    前記基本処理実行ログを、前記ハードウェアモデルに入力することにより、前記シミュレーションを実行して前記性能評価に要する情報を取得するシミュレーション実行部とを備えたことを特徴とする、シミュレーション装置。
  2. 前記基本処理実行ログ生成部が、
    前記複数の基本処理単位のうちの変更対象基本処理単位を抽出し、抽出した前記変更対象基本処理単位に基づいて簡易ソフトウェアモデルを生成する簡易ソフトウェアモデル生成部と、
    前記簡易ソフトウェアモデルに基づいて仮実行ログを取得する第2取得部と、
    前記複数の基本処理単位のうちの前記変更対象基本処理単位以外の基本処理単位と、前記仮実行ログとを合成して前記基本処理実行ログを生成する合成部とを備えたことを特徴とする、請求項1記載のシミュレーション装置。
  3. 前記仮ソフトウェアにおけるソースコードの分岐行もしくはオブジェクトを呼び出す関数行を示すフラグを前記仮ソフトウェアに埋め込むフラグ処理部を備え、
    前記第1取得部は、前記フラグを埋め込まれた前記仮ソフトウェアを実行して前記第1実行ログを取得するように構成されるとともに、
    前記簡易ソフトウェアモデル生成部が、前記変更対象基本処理単位における前記フラグに対応するフラグ情報に基づいて、前記変更対象基本処理単位内のオブジェクトシーケンスを生成し、前記ソースコードを抽出して前記簡易ソフトウェアモデルを生成することを特徴とする、請求項2記載のシミュレーション装置。
  4. 前記基本処理実行ログ生成部が、前記複数の基本処理単位のうちの一部の基本処理単位を、他の基本処理単位に置換することにより前記基本処理実行ログを生成することを特徴とする、請求項1記載のシミュレーション装置。
  5. ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価のためのシミュレーションを、ハードウェアモデルを用いて実行するシミュレーション方法であって、
    既存の仮ソフトウェアを実行することにより第1実行ログを取得する第1取得ステップと、
    前記第1実行ログを複数の基本処理単位に分割する分割ステップと、
    前記複数の基本処理単位のうちの一部の基本処理単位を変更することにより前記シミュレーションに用いる基本処理実行ログを生成する基本処理実行ログ生成ステップと、
    前記基本処理実行ログを、前記ハードウェアモデルに入力することにより、前記シミュレーションを実行して前記性能評価に要する情報を取得するシミュレーション実行ステップとを含んでいることを特徴とする、シミュレーション方法。
  6. 前記基本処理実行ログ生成ステップが、
    前記複数の基本処理単位のうちの変更対象基本処理単位を抽出し、抽出した前記変更対象基本処理単位に基づいて簡易ソフトウェアモデルを生成する簡易ソフトウェアモデル生成ステップと、
    前記簡易ソフトウェアモデルに基づいて仮実行ログを取得する第2取得ステップと、
    前記複数の基本処理単位のうちの前記変更対象基本処理単位以外の基本処理単位と、前記仮実行ログとを合成して前記基本処理実行ログを生成する合成ステップとを含んでいることを特徴とする、請求項5記載のシミュレーション方法。
  7. 前記仮ソフトウェアにおけるソースコードの分岐行もしくはオブジェクトを呼び出す関数行を示すフラグを前記仮ソフトウェアに埋め込むフラグ処理ステップをさらに含み、
    前記第1取得ステップにおいて、前記フラグを埋め込まれた前記仮ソフトウェアを実行して前記第1実行ログが取得されるとともに、
    前記簡易ソフトウェアモデル生成ステップにおいて、前記変更対象基本処理単位における前記フラグに対応するフラグ情報に基づいて、前記変更対象基本処理単位内のオブジェクトシーケンスが生成され、前記ソースコードを抽出して前記簡易ソフトウェアモデルが生成されることを特徴とする、請求項6記載のシミュレーション方法。
  8. 前記基本処理実行ログ生成ステップにおいて、前記複数の基本処理単位のうちの一部の基本処理単位を、他の基本処理単位に置換することにより前記基本処理実行ログが生成されることを特徴とする、請求項5記載のシミュレーション方法。
  9. ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価のためのシミュレーションを、ハードウェアモデルを用いて実行する機能をコンピュータに実現させるためのシミュレーションプログラムであって、
    既存の仮ソフトウェアを実行することにより第1実行ログを取得する第1取得部、
    前記第1実行ログを複数の基本処理単位に分割する分割部、
    前記複数の基本処理単位のうちの一部の基本処理単位を変更することにより前記シミュレーションに用いる基本処理実行ログを生成する基本処理実行ログ生成部、及び、
    前記基本処理実行ログを、前記ハードウェアモデルに入力することにより、前記シミュレーションを実行して前記性能評価に要する情報を取得するシミュレーション実行部として、前記コンピュータを機能させることを特徴とする、シミュレーションプログラム。
  10. ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価のためのシミュレーションを、ハードウェアモデルを用いて実行する機能をコンピュータに実現させるためのシミュレーションプログラムを記録したコンピュータ読取可能な記録媒体であって、
    前記シミュレーションプログラムが、
    既存の仮ソフトウェアを実行することにより第1実行ログを取得する第1取得部、
    前記第1実行ログを複数の基本処理単位に分割する分割部、
    前記複数の基本処理単位のうちの一部の基本処理単位を変更することにより前記シミュレーションに用いる基本処理実行ログを生成する基本処理実行ログ生成部、及び、
    前記基本処理実行ログを、前記ハードウェアモデルに入力することにより、前記シミュレーションを実行して前記性能評価に要する情報を取得するシミュレーション実行部として、前記コンピュータを機能させることを特徴とする、シミュレーションプログラムを記録したコンピュータ読取可能な記録媒体。
JP2008153505A 2008-06-11 2008-06-11 シミュレーション装置,シミュレーション方法,シミュレーションプログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体 Expired - Fee Related JP5200675B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2008153505A JP5200675B2 (ja) 2008-06-11 2008-06-11 シミュレーション装置,シミュレーション方法,シミュレーションプログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体
US12/393,155 US8249850B2 (en) 2008-06-11 2009-02-26 Method and an apparatus for executing simulation for system performance evaluation
TW098106420A TWI423058B (zh) 2008-06-11 2009-02-27 模擬裝置、模擬方法及記錄有模擬程式之電腦可讀記錄媒體
KR1020090024890A KR101076348B1 (ko) 2008-06-11 2009-03-24 시뮬레이션 장치, 시뮬레이션 방법, 및 시뮬레이션 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008153505A JP5200675B2 (ja) 2008-06-11 2008-06-11 シミュレーション装置,シミュレーション方法,シミュレーションプログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体

Publications (2)

Publication Number Publication Date
JP2009301231A JP2009301231A (ja) 2009-12-24
JP5200675B2 true JP5200675B2 (ja) 2013-06-05

Family

ID=41415558

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008153505A Expired - Fee Related JP5200675B2 (ja) 2008-06-11 2008-06-11 シミュレーション装置,シミュレーション方法,シミュレーションプログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体

Country Status (4)

Country Link
US (1) US8249850B2 (ja)
JP (1) JP5200675B2 (ja)
KR (1) KR101076348B1 (ja)
TW (1) TWI423058B (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5034955B2 (ja) * 2008-01-08 2012-09-26 富士通株式会社 性能評価シミュレーション装置、性能評価シミュレーション方法および性能評価シミュレーションプログラム
JP5928128B2 (ja) * 2012-04-25 2016-06-01 株式会社明電舎 デジタル回路用シミュレーション方法
US9734263B2 (en) * 2012-12-20 2017-08-15 Intel Corporation Method and apparatus for efficient pre-silicon debug
CN103473431B (zh) * 2013-09-25 2016-12-07 北京大学 一种轻量级的在线调试php程序的方法
CN103514055A (zh) * 2013-10-09 2014-01-15 浪潮(北京)电子信息产业有限公司 一种面向过程的高性能计算应用性能的测评方法及系统
US10372590B2 (en) 2013-11-22 2019-08-06 International Business Corporation Determining instruction execution history in a debugger
JP7452071B2 (ja) * 2020-02-18 2024-03-19 富士通株式会社 抽出プログラム、抽出方法および情報処理装置
CN113821458B (zh) * 2021-09-18 2023-09-05 日立楼宇技术(广州)有限公司 一种数据操作方法、装置、计算机设备和存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09114693A (ja) * 1995-10-13 1997-05-02 Toshiba Corp プログラム開発支援装置及びプログラム実行装置
KR20010006983A (ko) 1999-06-26 2001-01-26 양세양 신속 프로토타이핑 장치와 그것의 입출력 탐침방법 및그것을 이용한 혼합 검증 방법
JP2001256079A (ja) * 2000-03-10 2001-09-21 Matsushita Electric Ind Co Ltd ソフトウェアのデバッグ方法および論理回路のデバッグ方法
JP2001318812A (ja) 2000-05-11 2001-11-16 Nec Corp 性能評価モデル生成装置および性能評価モデル生成方法
JP2001344287A (ja) * 2000-06-02 2001-12-14 Nec Microsystems Ltd アルゴリズム記述におけるバスの性能評価方法
JP2002215423A (ja) 2001-01-22 2002-08-02 Hitachi Ltd ソフトウェアモデル作成方法
SG94796A1 (en) * 2001-03-28 2003-03-18 Council Scient Ind Res A simulated circuit layout for low voltage, low power and high performance type ii current conveyor
JP4503203B2 (ja) * 2001-07-03 2010-07-14 富士通株式会社 情報処理装置を評価するためのテストプログラムを作成する方法、装置、およびそのための処理を記述したプログラム
US20030121010A1 (en) * 2001-12-21 2003-06-26 Celoxica Ltd. System, method, and article of manufacture for estimating a potential performance of a codesign from an executable specification
JP3828104B2 (ja) * 2003-10-02 2006-10-04 株式会社東芝 模擬回路パターン評価方法、半導体集積回路の製造方法、テスト基板、及びテスト基板群
JP4100630B2 (ja) * 2004-05-14 2008-06-11 インターナショナル・ビジネス・マシーンズ・コーポレーション Uml設計方法
KR100921314B1 (ko) * 2004-07-12 2009-10-13 양세양 검증결과 재활용 기법을 채용한 고성능 설계검증 장치 및이를 활용한 신속한 설계검증 방법
JP2006059108A (ja) 2004-08-19 2006-03-02 Mitsubishi Electric Corp 情報システム開発試験支援システム
JP2007018313A (ja) 2005-07-08 2007-01-25 Fujitsu Ltd 回路設計プログラム、回路設計装置、回路設計方法
US8781808B2 (en) * 2005-10-10 2014-07-15 Sei Yang Yang Prediction-based distributed parallel simulation method
US20090150136A1 (en) * 2005-10-10 2009-06-11 Sei Yang Yang Dynamic-based verification apparatus for verification from electronic system level to gate level, and verification method using the same
JP2007310449A (ja) 2006-05-16 2007-11-29 Fujitsu Ltd ソフトウェア/ハードウェア協調設計のためのモデル生成プログラム、およびモデル生成方法
JP4634525B2 (ja) * 2007-10-15 2011-02-16 富士通株式会社 シミュレート方法、シミュレートプログラムおよびシミュレーション装置
JP5034955B2 (ja) * 2008-01-08 2012-09-26 富士通株式会社 性能評価シミュレーション装置、性能評価シミュレーション方法および性能評価シミュレーションプログラム

Also Published As

Publication number Publication date
US8249850B2 (en) 2012-08-21
KR20090129320A (ko) 2009-12-16
KR101076348B1 (ko) 2011-10-25
TW200951750A (en) 2009-12-16
JP2009301231A (ja) 2009-12-24
US20090313001A1 (en) 2009-12-17
TWI423058B (zh) 2014-01-11

Similar Documents

Publication Publication Date Title
JP5200675B2 (ja) シミュレーション装置,シミュレーション方法,シミュレーションプログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体
JP4994393B2 (ja) 単一のマスターモデルから異なる抽象化レベルの複数のモデルを生成するシステムと方法
US8122398B2 (en) Conversion of circuit description to an abstract model of the circuit
US20020152061A1 (en) Data processing system and design system
US20070011664A1 (en) Device and method for generating an instruction set simulator
WO2004044798A2 (en) Global analysis of software objects generated from a hardware description
CN112444731B (zh) 芯片测试方法、装置、处理器芯片及服务器
JP2014510960A (ja) ツール・ジェネレータ
US6856951B2 (en) Repartitioning performance estimation in a hardware-software system
CN116341428B (zh) 构建参考模型的方法、芯片验证方法及系统
CN117094269A (zh) 一种验证方法、装置、电子设备及可读存储介质
US8140315B2 (en) Test bench, method, and computer program product for performing a test case on an integrated circuit
US20070271080A1 (en) Model generation method for software/hardware collaboration design
KR20090065742A (ko) 소프트웨어 개발 장치 및 그 방법
JP4492803B2 (ja) 動作合成装置及びプログラム
US8245163B1 (en) Partial compilation of circuit design with new software version to obtain a complete compiled design
Goli et al. Through the looking glass: Automated design understanding of SystemC-based VPs at the ESL
US7971167B2 (en) Semiconductor design support device, semiconductor design support method, and manufacturing method for semiconductor integrated circuit
US7328415B2 (en) Modeling blocks of an integrated circuit for timing verification
JP4152659B2 (ja) データ処理システムおよび設計システム
US10210294B1 (en) System and methods for simulating a circuit design
US8813005B1 (en) Debugging using tagged flip-flops
JP5390464B2 (ja) シミュレーション装置、シミュレーション装置の制御方法およびプログラム
JP2007018313A (ja) 回路設計プログラム、回路設計装置、回路設計方法
CN118363715A (zh) 一种参考模型的集成方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110315

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120912

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121002

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121022

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: 20130115

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130128

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160222

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees