JP5459021B2 - シミュレーション装置 - Google Patents
シミュレーション装置 Download PDFInfo
- Publication number
- JP5459021B2 JP5459021B2 JP2010082710A JP2010082710A JP5459021B2 JP 5459021 B2 JP5459021 B2 JP 5459021B2 JP 2010082710 A JP2010082710 A JP 2010082710A JP 2010082710 A JP2010082710 A JP 2010082710A JP 5459021 B2 JP5459021 B2 JP 5459021B2
- Authority
- JP
- Japan
- Prior art keywords
- bus
- simulation
- access
- bus access
- instruction
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Description
本発明は、シミュレーション装置に関し、マルチコアの情報処理システムに係る性能評価技術に関する。
マルチコアプロセッサは、複数のCPU(Central Processing Unit)やDSP(Digital Signal Processor)やハードウェアアクセラレータを有するプロセッサである。以下では、CPUやDSPやハードウェアアクセラレータの各々の1個を単にコア(core)と称する。マルチコアプロセッサを有する情報処理システムは、複数のコアがメモリを共有するもの、各々のコアがローカルなメモリを持つもの、それらが混在するもの、またキャッシュメモリ等の階層構造が存在するものなどがある。
近年、情報処理システムは、高性能・高機能と低消費電力とを両立するために、複数のコアを備えるマルチコア化が進んでいる。マルチコア化された情報処理システムにおいて動作するソフトウェアは、マルチコア向けに並列化されたソフトウェアであることが望まれている。しかし、従来の逐次処理方式のソフトウェアを並列化するには多大な労力が必要であり、また適切に並列化しないと目標とする性能を達成できないおそれがある。
このような複数のコアを備える情報処理システムの設計においては、各コアにデータを供給したり処理結果をメモリ等に格納したりするバスアーキテクチャが重要である。それは、各コアがいかに高性能であっても処理すべきデータが供給されなければ処理を続けることができず、また処理結果をメモリ等に格納できなければ次の処理を行うことができないためである。
ここで、バスアーキテクチャとは、各コアとメモリやI/O等との接続方法や配置方法などである。バスアーキテクチャのパラメータには、例えばメモリのポート数やバスのデータ幅、複数のCPUを複数のメモリやI/Oに接続する場合に、相互に接続するのか、1本の共有の配線で接続するのかといったバスのトポロジがある。また、バスアーキテクチャのパラメータには、ある配線やメモリポートに複数のCPUがアクセスしようとした場合、すなわちアクセスが競合した場合の優先順位付け等もある。
バス構成を必要以上に贅沢にすると、回路面積や消費電力の点で過大な増大を招いてしまう。また、バス構成において一箇所でも性能が不足している部分があると、その部分がボトルネックとなって他の部分にいくら回路規模や電力を費やしても情報処理システム全体としては目標とする性能が達成できない。また、優先順位の高いバスアクセスが優先順位の低いバスアクセスを必要以上に阻害してしまい、情報処理システム全体として目標とする性能が達成できないというケースも起こりうる。
また、コア単体では性能を変えずにコアの数を増やすことでのアップグレードに関し、情報処理システム全体での性能がスケーラブルに向上してほしいという要求がある。マルチコアプロセッサを有する情報処理システムの開発における初期の段階においては、前述のような要求を満たしているか等を確認しながらバスアーキテクチャの設計を行わなければならない。
情報処理システムにおいてバスの挙動は動的であり、机上の計算だけで必要な性能を満たしているか否かを判断することは困難である。そこで、動的なバスの挙動を再現したシミュレーションモデルを構築し、その上でソフトウェアを動作させることで、情報処理システム全体としての性能評価を行うシミュレーション技術がある。例えば、図20に示すように、評価対象のソフトウェアを並列化し、情報処理システムが有するコア数分の命令セットシミュレータを用いて並列化されたソフトウェアを動作させる。そして、命令セットシミュレータが生成させたバスアクセスを、情報処理システムのバスアーキテクチャを模倣した、チップ内インターコネクト、メモリコントローラ、及びメモリを有するシミュレータにより再現する。
また、マルチコア化されたシステムのシミュレーションを高速化しようとするシミュレーション技術が提案されている(例えば、特許文献1、2参照。)。また、修正対象のプログラムに対し、テストデータに対する処理を所定の分割単位でコンピュータに実行させ、実行手順を比較することで修正が必要な箇所を検出する技術が提案されている(例えば、特許文献3参照。)。
しかしながら、従来のシミュレーション技術では、シミュレーションを実行するのに先だって、マルチコアプロセッサを有する情報処理システムで動作する並列化されたソフトウェアを用意する必要がある。ソフトウェアを並列化する際、その方針はソフトウェアを動作させる情報処理システムのバスアーキテクチャによって左右されてしまうが、このバスアーキテクチャを決定するためには、まず並列化されたソフトウェアが必要であるという矛盾がある。そこで、従来は、机上の計算や熟練者の知見等に基づいて、まずソフトウェアを並列化してみるというステップが必要であった。
このように、マルチコアプロセッサを有する情報処理システム向けにソフトウェアを並列化する際に、適切に並列化できるよう情報処理システムのバスアーキテクチャを評価するために、その情報処理システム向けに並列化されたソフトウェアが必要であった。
本発明の一観点によれば、ソフトウェアに従ってコアで実行される命令に係るシミュレーションを行う第1のシミュレータ部と、当該シミュレーションにより要求されたバスアクセスに係るシミュレーションを行う第2のシミュレータ部とを有するシミュレーション装置が提供される。第2のシミュレータ部は、要求されたバスアクセスを分割条件に従って各ポートに割り当てる分割処理部と、その割り当てに従ってバスアクセスをポート毎に生成する生成処理部と、生成されたバスアクセスのシミュレーションを行う実行処理部とを有する。
開示のシミュレーション装置は、並列化されていないソフトウェアを用いて、当該ソフトウェアを並列化してマルチコアプロセッサを有する情報処理システムで動作させた場合に相当するバスアクセスを再現し、情報処理システムのバスアーキテクチャの評価を行うことができるという効果を奏する。
以下、本発明の実施形態を図面に基づいて説明する。
以下に説明する各実施形態によるシミュレーション装置は、マルチコアプロセッサを有する情報処理システムの評価を行うものであり、例えば情報処理システムのバスの性能評価等に用いられる。
以下に説明する各実施形態によるシミュレーション装置は、マルチコアプロセッサを有する情報処理システムの評価を行うものであり、例えば情報処理システムのバスの性能評価等に用いられる。
(第1の実施形態)
本発明の第1の実施形態について説明する。
図1は、第1の実施形態によるシミュレーション装置の機能構成例を示すブロック図である。第1の実施形態によるシミュレーション装置は、制御部101、命令セットシミュレータ102、及びバスシミュレータ103を有する。
本発明の第1の実施形態について説明する。
図1は、第1の実施形態によるシミュレーション装置の機能構成例を示すブロック図である。第1の実施形態によるシミュレーション装置は、制御部101、命令セットシミュレータ102、及びバスシミュレータ103を有する。
命令セットシミュレータ102は、マルチコア向けに並列化されていない並列化前のソフトウェア109の命令に係るシミュレーションを行う。命令セットシミュレータ102は、並列化前のソフトウェア109に従ってコア(プロセッサ等)が実行する命令を1命令ずつシミュレーションする。命令セットシミュレータ102は、シミュレーションにおいてバスアクセスを要求する場合、そのバスアクセスに係る情報をバスシミュレータ103に供給する。
バスシミュレータ103は、命令セットシミュレータ102でのシミュレーションにより要求されたバスアクセスに係るシミュレーションを行う。バスシミュレータ103は、命令セットシミュレータ102から供給されたバスアクセスに係る情報に基づいて、バスアクセスを生成してシミュレーションする。バスシミュレータ103は、バスアクセス分割モデル104、トランザクション生成モデル105、チップ内インターコネクト106、メモリコントローラ107、及びメモリ108を有する。
バスアクセス分割モデル104は、要求されるバスアクセスを分割条件(分類条件)110に従って各ポート(図1に示す例では、ポート<#0>、<#1>、<#2>、<#3>)に割り当てる。すなわち、命令セットシミュレータ102より要求されるバスアクセスは、バスアクセス分割モデル104で分割条件(分類条件)110に従って各ポートに分割される。また、バスアクセス分割モデル104は、メモリ108に接続するためのダイレクトメモリインターフェースを介して、要求されるバスアクセスに応じたメモリアクセスに係る論理的な動作が実行可能である。これにより、バスアクセスに係るシミュレーションモデルでは、論理的に正しいメモリアクセスの順序を知ることができ、命令セットシミュレータに対して割り込み等の適切なフィードバックをかけることができる。
トランザクション生成モデル105は、評価対象となるマルチコアプロセッサを有する情報処理システムに含まれるすべてのコアのバスとの入出力ポートの各々に対応して設けられている。トランザクション生成モデル105は、バスアクセス分割モデル104により割り当てられたバスアクセスの情報に基づき、チップ内インターコネクト106、メモリコントローラ107及びメモリ108により形成されるバスモデルに対するバスアクセスを生成する。トランザクション生成モデル105により生成されたバスアクセスに応じて、チップ内インターコネクト106及びメモリコントローラ107を介したメモリ108へのリードアクセス/ライトアクセスがシミュレーションされる。
制御部101は、本実施形態によるシミュレーション装置を統括的に制御するものである。制御部101は、例えば、分割終了条件(分類終了条件)111やバスシミュレータ103から受けた終了通知等に基づいて、命令セットシミュレータ102やバスシミュレータ103に係る起動制御を行う。
例えば分割終了条件(分類終了条件)111を満たしたときに、制御部101が、命令セットシミュレータ102の動作を停止させるとともにトランザクション生成モデル105を起動させる。また、トランザクション生成モデル105で生成したバスアクセスのシミュレーションが終了したときに、制御部101が、トランザクション生成モデル105の動作を停止させるとともに命令セットシミュレータ102を起動(動作を再開)させる。このように制御することで、本実施形態によるシミュレーション装置では、図2に示すようなタイミング(制御)で命令に係るシミュレーション及びバスアクセスに係るシミュレーションが実行される。つまり、本実施形態によるシミュレーション装置では、命令に係るシミュレーションとバスアクセスに係るシミュレーションとが交互に実行される。図2は、第1の実施形態によるシミュレーションの実行形態の例を示す図である。図2において、ISS1、ISS2、ISS3、ISS4は命令実行処理を示しており、バス1、バス2、バス3、バス4はバスアクセス処理を示している。
図3(A)は、第1の実施形態によるバスアクセス分割モデル104の動作を説明するための図である。バスアクセス分割モデル104には、命令セットシミュレータ102より要求するバスアクセスに係る情報301が入力される。図3(A)に示す例では、バスアクセスに係る情報301は、命令セットシミュレータ102において求められたシミュレーション内における概算時刻(Time)、命令のプログラムカウンタ値(PC)、アクセス先のアドレス(Address)、及びアクセスの種類(Operation)を含む。
また、バスアクセス分割モデル104には分割条件302が入力される。図3(A)に示す例での分割条件302は、アクセス先のアドレスが“0x0001****”(*はDon't care、以下同様)、“0x0011****”、“0x0021****”であるバスアクセスはポート<#0>に割り当て、アクセス先のアドレスが“0x0002****”、“0x0012****”、“0x0022****”であるバスアクセスはポート<#1>に割り当てることを示している。
バスアクセス分割モデル104は、命令セットシミュレータ102より要求するバスアクセスに係る情報301が入力されると、分割条件302に従って、要求されたバスアクセスを生成させるポートを決定する(P101)。なお、バスアクセス分割モデル104には、予め設定されたデフォルト出力ポートを示す情報303が入力されている。バスアクセス分割モデル104は、要求するバスアクセスが分割条件302におけるいずれの条件にも合致しない場合には、そのバスアクセスを生成させるポートをデフォルト出力ポートに決定する。
バスアクセス分割モデル104は、要求されたバスアクセスを生成させるポートを決定すると、各ポート単位で次の処理を行う。
バスアクセス分割モデル104は、同じポートに対するバスアクセスが複数ある(連続する)場合には、図3(B)に示すようにバスアクセスのアクセス間隔を、バスアクセスに係る情報301のシミュレーション内における概算時刻から決定する。そして、決定したバスアクセスのアクセス間隔をバスアクセスの生成可能時刻として付加する(P102)。
バスアクセス分割モデル104は、同じポートに対するバスアクセスが複数ある(連続する)場合には、図3(B)に示すようにバスアクセスのアクセス間隔を、バスアクセスに係る情報301のシミュレーション内における概算時刻から決定する。そして、決定したバスアクセスのアクセス間隔をバスアクセスの生成可能時刻として付加する(P102)。
また、バスアクセス分割モデル104は、要求されたバスアクセスに係る情報301からペイロードを抽出する(P103)。ここでペイロードは、例えばアクセス先のアドレスやアクセスの種類(リードアクセス/ライトアクセス、アクセスサイズなど)等の情報である。
このようにして、バスアクセス分割モデル104は、要求されたバスアクセスを分割条件に従って各ポートに割り当て、ポート毎にバスアクセスの生成可能時刻及びペイロードを含むアクセス情報を出力する。例えば、図3(A)に示したバスアクセスに係る情報301及び分割条件302が入力された場合、バスアクセス分割モデル104は、ポート<#0>について図3(C)に示すアクセス情報を出力する。なお、バスアクセス分割モデル104において処理P101〜P103を行う順序は、前述した順序に限定されるものではなく、ポート毎に割り当てられたバスアクセスのアクセス情報が最終的に出力されれば良く、処理を行う順序は任意である。
図4は、第1の実施形態によるトランザクション生成モデル105の説明図である。トランザクション生成モデル105は、トランザクションキュー401を有している。前述のようにしてバスアクセス分割モデル104から出力されたアクセス情報402は、アクセス先のポートに接続されるトランザクション生成モデル105のトランザクションキュー401に格納される。すなわち、トランザクション生成モデル105のトランザクションキュー401には、対応するポートに対するバスアクセスの生成可能時刻及びペイロードを含むアクセス情報が格納される。
トランザクション生成モデル105は、トランザクションキュー401にアクセス情報が格納されている場合、バスアクセスの発生可能時刻とバスモデル内の現在時刻とを比較する。ここで、バスアクセスの発生可能時刻は、前回バスアクセスを生成させたときのバスモデル内の時刻に、次に生成すべきバスアクセスの生成可能時刻を加算したものである。トランザクション生成モデル105は、バスアクセスの発生可能時刻がバスモデル内の現在時刻と同時又はバスモデル内の現在時刻以降である場合には、バスアクセスを生成可能であると判断する(P201)。
トランザクション生成モデル105は、バスアクセスが生成可能と判断すると、トランザクションキュー401に格納されている次に生成すべきバスアクセスのアクセス情報に基づいて、バスモデルに対するバスアクセスを生成する(P202)。そして、トランザクション生成モデル105は、生成させたバスアクセスをバスモデルに供給するとともに、生成させたバスアクセスのアクセス情報をトランザクションキュー401から取り除く(消去する)。
次に、第1の実施形態によるシミュレーション装置の動作について説明する。
図5A及び図5Bは、第1の実施形態によるシミュレーション装置の処理手順の一例を示すフローチャートである。
図5A及び図5Bは、第1の実施形態によるシミュレーション装置の処理手順の一例を示すフローチャートである。
動作を開始すると、命令セットシミュレータ102は、並列化前のソフトウェア109に従ってコアが実行する命令を命令単位で実行してシミュレーションを行う(S101)。命令セットシミュレータ102は、命令を実行するたびに、その処理時間を概算してシミュレーション内における時刻を進めていく。なお、本実施形態では、処理時間の概算方法については言及しないが、例えば命令の種類毎に処理時間のデータベースを用意しておき、命令を実行するたびに、実行した命令の処理時間をデータベースから取得して、シミュレーション内の時刻に累積加算していく。
次に、制御部101は、命令セットシミュレータ102でのシミュレーションの処理の結果、指定されている切替条件を満たしているか否かを判定する(S102)。判定の結果、指定されている切替条件を満たしていれば、デフォルト出力ポートの選択(S103)、及び切替条件や分割条件(分類条件)の変更(S104)が行われる。
次に、バスアクセス分割モデル104は、命令セットシミュレータ102でのシミュレーションによりバスアクセスの要求があったか否かを判定する(S105)。その結果、命令セットシミュレータ102がバスアクセスを要求していない場合には、ステップS101に戻る。
一方、判定の結果、命令セットシミュレータ102からバスアクセスが要求された場合には、バスアクセス分割モデル104は、ダイレクトメモリインターフェースを介して、メモリ108に対し直接にメモリアクセスに係る論理的な動作を実行する(S106)。このときに行われるのは論理的な動作だけで時間的な動作は行われない。つまり、バスモデルとしては論理的に正しい動作をするが、タイミングは考慮せず、バスモデル内部のシミュレーション時刻は変化しない。
次に、バスアクセス分割モデル104は、命令セットシミュレータ102から要求されたバスアクセスに係る情報を抽出し(S107)、要求されたバスアクセスに合う分割条件を探索する(S108)。続いて、バスアクセス分割モデル104は、要求されたバスアクセスに合う分割条件があったか否かを判定する(S109)。そして、要求されたバスアクセスに合う分割条件があった場合には、バスアクセス分割モデル104は、分割条件により指定されるポートを、バスアクセスを生成させるポートに決定する(S110)。一方、要求されたバスアクセスに合う分割条件がない場合には、バスアクセス分割モデル104は、ステップS103において選択したデフォルト出力ポートを、バスアクセスを生成させるポートに決定する(S111)。
続いて、バスアクセス分割モデル104は、ステップS110又はS111において決定したアクセス先のポートに接続されるトランザクション生成モデル105のトランザクションキュー401に、要求されたバスアクセスのアクセス情報を格納する(S112)。
次に、制御部101は、分割終了条件を満たすか否かを判定する(S113)。判定の結果、分割終了条件を満たさない場合には、ステップS101に戻る。すなわち、分割終了条件を満たすまで、前述のステップS101〜S112の一連の処理が繰り返して行われる。
一方、分割終了条件を満たす場合には、命令セットシミュレータ102による命令に係るシミュレーションを停止し、バスアクセスに係るシミュレーションを行う。バスアクセスに係るシミュレーションは、以下のようにトランザクション生成モデル105のトランザクションキュー401に格納されているアクセス情報に応じたバスアクセスをバスモデルに対して供給し、バスに係るシミュレーションを進めていく。
最初のポートが選択され(S114)、そのポートに対応するトランザクション生成モデル105が、トランザクションキュー401からキュー先頭のアクセス情報、すなわち次に生成させるバスアクセスのアクセス情報を抽出する(S115)。トランザクション生成モデル105は、抽出したアクセス情報に基づいて、そのバスアクセスの発生可能時刻を算出してバスモデル内部のシミュレーション時刻と比較し、バスアクセスが発行可能であるか否かを判定する(S116)。
トランザクション生成モデル105は、算出したバスアクセスの発生可能時刻が、バスモデル内部のシミュレーション時刻と同時もしくはそれ以降であれば、バスアクセスが発行可能であると判断する。すなわち、同じトランザクション生成モデル105からバスアクセスを前回生成させたときからの時間間隔が、次に生成させるバスアクセスのアクセス情報の生成可能時刻で与えられる時間間隔より長ければ、バスアクセスが発行可能であると判断する。
ステップS116での判定の結果、バスアクセスが発行可能と判定すると、トランザクション生成モデル105は、ステップS115において抽出したアクセス情報に基づいて、バスモデルに対するバスアクセスを生成させる。そして、トランザクション生成モデル105は、生成させたバスアクセスをバスモデルに供給するとともに、生成させたバスアクセスのアクセス情報をトランザクションキュー401から取り除く。バスアクセスの生成の仕組みは、例えばトランザクションレベルモデリング等の方法により、バスアクセスの情報をバスモデルに供給すればよい。
すべてのポートに対して前述したステップS115〜S117の処理が行われるまで(非選択のポートがなくなるまで)、未選択のポートのうちから次のポートを順次選択して、前述したステップS115〜S117の処理を繰り返し行う(S118、S119)。これにより、バスモデル内部の現在のシミュレーション時刻で発行可能なバスアクセスのすべてが生成されバスモデルに供給される。
すべてのポートに対するステップS115〜S117の処理が完了すると、チップ内インターコネクト106、メモリコントローラ107及びメモリ108を含むバスモデルでのバスのシミュレーションが行われる(S120)。バスのシミュレーションでは、供給されたバスアクセスが処理され、バスモデル内部のシミュレーション時刻が進められる。バスのシミュレーションでは、いずれかのポートが次のバスアクセスを受け付けられる状態になった場合に、制御部101に処理を返すようにすることが望ましい。
次に、制御部101は、すべてのトランザクション生成モデル105のトランザクションキュー401が空になったか否か、すなわち命令セットシミュレータ102から要求されたすべてのバスアクセスに係る動作が完了したか否かを判定する(S121)。判定の結果、命令セットシミュレータ102から要求されたバスアクセスに係る動作が完了しない場合には、ステップS114に戻る。一方、命令セットシミュレータ102から要求されたすべてのバスアクセスに係る動作が完了した場合には、バスのシミュレーションを終了し、命令セットシミュレータ102で次に実行すべき命令があるか否かの判定が行われる(S122)。
判定の結果、命令セットシミュレータ102が次に実行すべき命令がなければ、全体のシミュレーションが終わったとみなし、動作を終了する。なお、シミュレーション対象のコアが停止状態に陥っている場合など命令セットシミュレータ102が次の命令を実行できる状態でない場合にも、全体のシミュレーションが終わったとみなして動作を終了するようにしても良い。
ステップS122での判定の結果、命令セットシミュレータ102が次に実行すべき命令がある場合には、ステップS101に戻る。このとき、命令セットシミュレータ102内部のシミュレーション時刻に、バスモデル内部でのシミュレーション時刻が代入される。したがって、命令セットシミュレータ102内部のシミュレーション時刻は、進むこともあれば戻ることもある。また、このとき、バスのシミュレーション中に生成した割り込み等が命令セットシミュレータ102に通知される。そして、命令セットシミュレータ102は、前回停止した箇所の次の命令から命令に係るシミュレーションを再開する。
第1の実施形態によるシミュレーション装置は、並列化前のソフトウェア109を1つの命令セットシミュレータ102で動作させながら、命令セットシミュレータ102でのシミュレーションにより要求されたバスアクセスを分割条件に従って分割する。そして、バスシミュレータ103にて、バスの各ポートに対して分割されたバスアクセスについて、バスモデルに対するバスアクセスをシミュレーション内で並列に生成させバスモデルに供給する。これにより、ソフトウェアの並列化を行うことなく、マルチコアプロセッサを有する情報処理システムで並列化したソフトウェアを動作させたときのバスアクセスを模倣して再現でき、情報処理システムのバスアーキテクチャの評価を行うことができる。
なお、前述した説明ではシミュレーション装置が、図2に示したように命令に係るシミュレーションとバスアクセスに係るシミュレーションとを交互に実行する場合を示した。しかし、例えば命令セットシミュレータ102が次に実行すべき命令がないことを分割終了条件とすれば、命令に係るシミュレーションを最初から最後まで連続して実行し、それが完了した後に、バスに係るシミュレーションを実行するようにすることも可能である。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。
図6は、第2の実施形態によるシミュレーション装置の機能構成例を示すブロック図である。図6において、図1に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。
次に、本発明の第2の実施形態について説明する。
図6は、第2の実施形態によるシミュレーション装置の機能構成例を示すブロック図である。図6において、図1に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。
第2の実施形態によるシミュレーション装置は、図7に示すように命令に係るシミュレーションとバスアクセスに係るシミュレーションとを同時に(並行して)実行するようにしたものである。第2の実施形態によるシミュレーション装置は、いわゆるマルチスレッド等の技術を適用して、命令に係るシミュレーション動作とバスアクセスに係るシミュレーション動作を同時に実行する。命令セットシミュレータ102とバスアクセス分割モデル104との処理部601により、命令シミュレーション及びバスアクセスの分割を行う命令セットシミュレーションスレッドが実行される。また、トランザクション生成モデル105、チップ内インターコネクト106、メモリコントローラ107、及びメモリ108の処理部602により、バスシミュレーションを行うバスシミュレーションスレッドが実行される。
図8は、第2の実施形態によるトランザクション生成モデル105の説明図である。トランザクション生成モデル105は、トランザクションキュー801を有している。バスアクセス分割モデル104から出力されたアクセス情報802は、アクセス先のポートに接続されるトランザクション生成モデル105のトランザクションキュー801に格納される。これにより、トランザクション生成モデル105のトランザクションキュー801には、対応するポートに対するバスアクセスの生成可能時刻及びペイロードを含むアクセス情報が格納される。なお、バスアクセス分割モデル104での、命令セットシミュレータ102より要求されたバスアクセスの分割動作及び各ポートへのバスアクセスのアクセス情報の出力動作は、第1の実施形態と同様である。
さらに、第2の実施形態におけるトランザクションキュー801には、アクセス情報毎に発行許可フラグが追加されている。この発行許可フラグは、命令に係るシミュレーション動作によって、ある時刻に生成可能なすべてのポートのバスアクセスが確定するまでバスアクセスに係るシミュレーション動作を遅延させるためのものである。
発行許可フラグは、バスアクセスのアクセス情報がトランザクションキュー801に格納された際にはOFFとなっている。そして、処理部601での命令に係るシミュレーション動作によって、バスアクセスの発生可能時刻に他のポートで生成し得るバスアクセスがすべて確定したときにONとなる。すなわち、バスアクセスのアクセス情報をトランザクションキュー801に格納した際に、新たに格納したアクセス情報でのバスアクセスの発生可能時刻と、各トランザクションキューに最後に格納したアクセス情報でのバスアクセスの発生可能時刻とを比較する。比較の結果、新たに格納したアクセス情報でのバスアクセスの発生可能時刻が最も小さい場合には、そのバスアクセスの発生可能時刻より前に発行可能なバスアクセスに係る発行許可フラグをONにする。
トランザクション生成モデル105は、トランザクションキュー801にアクセス情報が格納され、さらに発行許可フラグがONであるアクセス情報がある場合、バスアクセスの発生可能時刻とバスモデル内の現在時刻とを比較する。トランザクション生成モデル105は、バスアクセスの発生可能時刻がバスモデル内の現在時刻と同時又はバスモデル内の現在時刻以降である場合には、バスアクセスを生成可能であると判断する(P301)。
トランザクション生成モデル105は、バスアクセスが生成可能と判断すると、トランザクションキュー801に格納されている次に生成すべきバスアクセスのアクセス情報に基づき、バスモデルに対するバスアクセスを生成する(P302)。そして、トランザクション生成モデル105は、生成させたバスアクセスをバスモデルに供給するとともに、生成させたバスアクセスのアクセス情報をトランザクションキュー801から取り除く。
次に、第2の実施形態によるシミュレーション装置の動作について説明する。
図9A、図9B、及び図9Cは、第2の実施形態によるシミュレーション装置の処理手順の一例を示すフローチャートである。
図9A、図9B、及び図9Cは、第2の実施形態によるシミュレーション装置の処理手順の一例を示すフローチャートである。
図9Aに示すように、動作を開始すると、命令セットシミュレータ102とバスアクセス分割モデル104との処理部601が、図9Bに示す命令セットシミュレーションスレッドを開始する(S201)。また、トランザクション生成モデル105、チップ内インターコネクト106、メモリコントローラ107、及びメモリ108の処理部602が、図9Cに示すバスシミュレーションスレッドを開始する(S202)。その後、命令セットシミュレーションスレッド及びバスシミュレーションスレッドが並行して実行され、バスアクセスに係るシミュレーションが完了すると(S203)、動作を終了する。
図9Bに示すように、命令セットシミュレーションスレッドでは、命令セットシミュレータ102とバスアクセス分割モデル104との処理部601により、まずステップS301〜S312に示す処理が行われる。ここで、図9Bに示したステップS301〜S312での処理は、図5Aに示したステップS101〜S112での処理と同様であるので、その説明は省略する。なお、ステップS312において、要求されたバスアクセスの情報を、割り当てられたポートに接続されるトランザクション生成モデル105のトランザクションキュー801に格納する際、そのアクセス情報に付加される発行許可フラグはOFFである。
続いて、処理部601は、ステップS312において格納したアクセス情報でのバスアクセスの発生可能時刻が、他のポートのトランザクションキューに最後に格納したアクセス情報でのバスアクセスの発生可能時刻より小さいか否かを判定する(S313)。判定の結果、ステップS312において格納したアクセス情報でのバスアクセスの発生可能時刻が最も小さい場合には、そのバスアクセスの発生可能時刻より前に発行可能なバスアクセスに係る発行許可フラグをOFFからONにする(S314)。このステップS314での処理は、すべてのポートのトランザクションキューに格納されているバスアクセスのアクセス情報に対して行われる。
次に、命令セットシミュレータ102で次に実行すべき命令があるか否かの判定が行われる(S315)。判定の結果、命令セットシミュレータ102が次に実行すべき命令がなければ、命令に係るシミュレーションが終わったとみなし、すべてのポートのトランザクションキューに格納されているバスアクセスのアクセス情報の発行許可フラグをONにする(S316)。そして、命令セットシミュレーションスレッドを終了する。一方、判定の結果、命令セットシミュレータ102が次に実行すべき命令がある場合には、ステップS301に戻る。
また、図9Cに示すように、バスシミュレーションスレッドでは、トランザクション生成モデル105は、発行許可フラグがONであるバスアクセスのアクセス情報がトランザクションキューに格納されるまで待機する(S401)。いずれかのポートのトランザクションキューに発行許可フラグがONのアクセス情報が格納されると、トランザクション生成モデル105は、ステップS402〜S408に示す処理を行う。ここで、図9Cに示したステップS402〜S403、S405〜S408での処理は、図5Bに示したステップS114〜S115、S116〜S119での処理と同様であるので、その説明は省略する。図9CのステップS404に示されるように、本実施形態では、ステップS403において抽出したアクセス情報のうち発行許可フラグがONであるアクセス情報についてだけ、バスアクセスの発生可能時刻とバスモデル内部のシミュレーション時刻との比較が行われる。
このようにして、バスモデル内部の現在のシミュレーション時刻で発行可能なバスアクセスのすべてが生成されバスモデルに供給され、バスモデルでのバスのシミュレーションが行われる(S409)。バスのシミュレーションでは、供給されたバスアクセスが処理され、バスモデル内部のシミュレーション時刻が進められる。
次に、トランザクション生成モデル105のトランザクションキューに格納されているバスアクセスのアクセス情報で発行許可フラグがONであるバスアクセスのすべてが完了したか否かが判定される(S410)。判定の結果、発行許可フラグがONであるバスアクセスが完了していなければ、ステップS402に戻る。
一方、発行許可フラグがONであるバスアクセスのすべてが完了したならば、命令セットシミュレーション動作が完了したか否かが判定される(S411)。判定の結果、命令セットシミュレーション動作が完了していなければ、ステップS401に戻り、そうでなければバスアクセスに係るシミュレーションが終わったとみなし、バスシミュレーションスレッドを終了する。
第2の実施形態によれば、第1の実施形態と同様に、ソフトウェアの並列化を行うことなく、マルチコアプロセッサを有する情報処理システムで並列化したソフトウェアを動作させたときのバスアクセスを模倣して再現でき、情報処理システムのバスアーキテクチャの評価を行うことができる。また、命令に係るシミュレーションとバスアクセスに係るシミュレーションとを同時に実行することで分割終了条件によって命令に係るシミュレーションを停止することによって生じる誤差を低減することができる。
なお、前述した第1及び第2の実施形態では、ダイレクトメモリインターフェースを介して、要求されるバスアクセスに応じたメモリアクセスに係る論理的な動作を実行している。しかし、ダイレクトメモリインターフェースを設けずに、図10に示すように命令セットシミュレータ102側に命令セットシミュレーション用のメモリ1001を設け、メモリアクセスの論理的な動作を行うようにしても良い。このようにすれば、命令セットシミュレータ側として既存のシミュレータを用いて構成することができる。なお、図10において、図1に示した構成要素と同一の機能を有する構成要素には同一の符号を付している。
以下、分割条件、分割終了条件について説明する。
<分割条件>
分割条件としては、例えば次のようなものがある。
(1)バスアクセスを要求した命令のプログラムカウンタ値
(2)バスアクセスのアドレス範囲
(3)バスアクセスのアドレス範囲に対するアクセス回数
(4)バスアクセスの種類(リードアクセス、ライトアクセス、命令アクセス、データアクセス、アクセスサイズ等)
(5)命令に係るシミュレーションでの予め指定した時間経過をトリガとしてポートを切り替える
(6)命令に係るシミュレーションでの予め指定した実行命令数超過をトリガとしてポートを切り替える
(7)命令に係るシミュレーションでの予め指定した命令の実行をトリガとしてポートを切り替える
(8)命令に係るシミュレーションでの予め指定したアドレスへのアクセスをトリガとしてポートを切り替える
(9)命令に係るシミュレーションでの予め指定したアドレスへの特定データの読み出し・書き込みをトリガとしてポートを切り替える
なお、前述した各条件を単独で分割条件とするようにしても良いし、複数の条件を任意に組み合わせたものを分割条件とするようにしても良い。また、分割条件(5)〜(9)の切り替え動作に同期して分割条件を切り替えるようにしても良い。
分割条件としては、例えば次のようなものがある。
(1)バスアクセスを要求した命令のプログラムカウンタ値
(2)バスアクセスのアドレス範囲
(3)バスアクセスのアドレス範囲に対するアクセス回数
(4)バスアクセスの種類(リードアクセス、ライトアクセス、命令アクセス、データアクセス、アクセスサイズ等)
(5)命令に係るシミュレーションでの予め指定した時間経過をトリガとしてポートを切り替える
(6)命令に係るシミュレーションでの予め指定した実行命令数超過をトリガとしてポートを切り替える
(7)命令に係るシミュレーションでの予め指定した命令の実行をトリガとしてポートを切り替える
(8)命令に係るシミュレーションでの予め指定したアドレスへのアクセスをトリガとしてポートを切り替える
(9)命令に係るシミュレーションでの予め指定したアドレスへの特定データの読み出し・書き込みをトリガとしてポートを切り替える
なお、前述した各条件を単独で分割条件とするようにしても良いし、複数の条件を任意に組み合わせたものを分割条件とするようにしても良い。また、分割条件(5)〜(9)の切り替え動作に同期して分割条件を切り替えるようにしても良い。
図11は、バスアクセスを要求した命令のプログラムカウンタ値を分割条件としてバスアクセスを分割する例を説明するための図である。命令のプログラムカウンタ値を分割条件としてバスアクセスを分割する好適な例としては、例えば関数毎に並列処理を行うような並列化を行う場合がある。図11に示す例では、関数func1()の実行により要求されたバスアクセスはポート<#0>に割り当て、関数func2()の実行により要求されたバスアクセスはポート<#1>に割り当てる。同様に、関数func3()の実行により要求されたバスアクセスはポート<#2>に割り当て、関数func4()の実行により要求されたバスアクセスはポート<#3>に割り当てる。
図12は、バスアクセスのアドレス範囲を分割条件としてバスアクセスを分割する例を説明するための図である。バスアクセスのアドレス範囲を分割条件としてバスアクセスを分割する好適な例としては、例えば画像処理などデータ方向に並列性がある処理がある。図12に示す例では、アドレス範囲0x*1000〜へのバスアクセスはポート<#0>に割り当て、アドレス範囲0x*2000〜へのバスアクセスはポート<#1>に割り当てる。同様に、アドレス範囲0x*3000〜へのバスアクセスはポート<#2>に割り当て、アドレス範囲0x*4000〜へのバスアクセスはポート<#3>に割り当てる。例えば、図16(A)に示すように、入力画像における領域0、1、2、3をそれぞれコア0、1、2、3で画像処理して出力する場合であって、図16(B)に示すようにメモリ空間に領域0、1、2、3の画像データが記憶され、画像処理後のデータを領域0、1、2、3毎にメモリ空間に保存されるような場合に用いて好適である。
図13は、命令に係るシミュレーションでの予め指定した時間経過もしくは実行命令数超過をトリガとしてポートを切り替える例を説明するための図である。図14は、命令に係るシミュレーションでの予め指定した命令の実行をトリガとしてポートを切り替える例を説明するための図である。命令に係るシミュレーションでの予め指定した命令の実行をトリガとしてポートを切り替える好適な例としては、例えば指定したポイントでの処理のソフトウェアパイプライン化がある。図14に示す例では、ポイントpt0、pt1、pt2、pt3でポートの切り替えを行う。
図15は、命令に係るシミュレーションでの予め指定したアドレスへのアクセス、予め指定したアドレスへの特定データの読み出し・書き込みをトリガとしてポートを切り替える例を説明するための図である。図15に示す例では、ポイントpt0でポート<#0>に切り替え、yという変数のアドレスにアクセスしたときにポート<#1>に切り替える。また、xに値0x8000が入れられたときにポート<#2>に切り替え、ポイントpt1でポート<#3>に切り替える。
また、分割終了条件としては、例えば次のようなものがある。
(1)命令に係るシミュレーションでの時間経過
(2)命令に係るシミュレーションでの実行命令数超過
(3)命令に係るシミュレーションでの特定の命令の実行
(4)命令に係るシミュレーションでの特定のアドレスへのアクセス
(5)命令に係るシミュレーションでの特定のアドレスへの特定データの読み出し・書き込み
(6)バスアクセス量の超過
なお、前述した各条件を単独で分割終了条件とするようにしても良いし、複数の条件を任意に組み合わせたものを分割終了条件とするようにしても良い。
(1)命令に係るシミュレーションでの時間経過
(2)命令に係るシミュレーションでの実行命令数超過
(3)命令に係るシミュレーションでの特定の命令の実行
(4)命令に係るシミュレーションでの特定のアドレスへのアクセス
(5)命令に係るシミュレーションでの特定のアドレスへの特定データの読み出し・書き込み
(6)バスアクセス量の超過
なお、前述した各条件を単独で分割終了条件とするようにしても良いし、複数の条件を任意に組み合わせたものを分割終了条件とするようにしても良い。
前述した各実施形態によるシミュレーション装置は、例えばCPU又はMPU、RAM、ROM等を有するコンピュータが、ROM等の記憶部に記憶されたプログラムを実行することで実現でき、前記プログラムは本発明の実施形態に含まれる。また、コンピュータが前記機能を果たすように動作させるプログラムを、例えばCD−ROMのような記録媒体に記録し、コンピュータに読み込ませることによって実現できるものであり、前記プログラムを記録した記録媒体は本発明の実施形態に含まれる。前記プログラムを記録する記録媒体としては、CD−ROM以外に、フレキシブルディスク、ハードディスク、磁気テープ、光磁気ディスク、不揮発性メモリカード等を用いることができる。
また、コンピュータがプログラムを実行し処理を行うことにより、前記実施形態の機能が実現されるプログラムプロダクトは、本発明の実施形態に含まれる。前記プログラムプロダクトとしては、前記実施形態の機能を実現するプログラム自体、前記プログラムが読み込まれたコンピュータがある。また、前記プログラムプロダクトとして、ネットワークを介して通信可能に接続されたコンピュータに前記プログラムを提供可能な送信装置、当該送信装置を備えるネットワークシステム等がある。
また、供給されたプログラムがコンピュータにおいて稼動しているOS(オペレーティングシステム)又は他のアプリケーションソフト等と共同して前記実施形態の機能が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。また、供給されたプログラムの処理のすべて又は一部がコンピュータの機能拡張ボードや機能拡張ユニットにより行われて前記実施形態の機能が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。また、本発明をネットワーク環境で利用するべく、全部又は一部のプログラムが他のコンピュータで実行されるようになっていても良い。
例えば、前述した各実施形態によるシミュレーション装置は、図17に示すようなコンピュータ機能1700により実現でき、そのCPU1701により前記実施形態での動作が実施される。
コンピュータ機能1700は、図17に示すように、CPU1701と、ROM1702と、RAM1703と、操作部(CONS)1709のコントローラ(CONSC)1705と、表示部としてのディスプレイ(DISP)1710のディスプレイコントローラ(DISPC)1706と、ハードディスク(HD)1711及びフレキシブルディスク等の記憶デバイス(STD)1712のコントローラ(DCONT)1707と、ネットワークインタフェースカード(NIC)1708とが、システムバス1704を介して互いに通信可能に接続された構成としている。
コンピュータ機能1700は、図17に示すように、CPU1701と、ROM1702と、RAM1703と、操作部(CONS)1709のコントローラ(CONSC)1705と、表示部としてのディスプレイ(DISP)1710のディスプレイコントローラ(DISPC)1706と、ハードディスク(HD)1711及びフレキシブルディスク等の記憶デバイス(STD)1712のコントローラ(DCONT)1707と、ネットワークインタフェースカード(NIC)1708とが、システムバス1704を介して互いに通信可能に接続された構成としている。
CPU1701は、ROM1702又はHD1711に記憶されたソフトウェア(プログラム)、又はSTD1712より供給されるソフトウェア(プログラム)を実行することで、システムバス1704に接続された各構成部を総括的に制御する。すなわち、CPU1701は、前述したような機能を実現するための処理プログラムを、ROM1702、HD1711、又はSTD1712から読み出して実行することで、前記実施形態での機能を実現するための制御を行う。RAM1703は、CPU1701の主メモリ又はワークエリア等として機能する。
CONSC1705は、CONS1709や図示していないポインティングデバイス等からの指示入力を制御する。DISPC1706は、DISP1710の表示を制御する。DCONT1707は、ブートプログラム、種々のアプリケーション、ユーザファイル、ネットワーク管理プログラム、及び前記実施形態による機能を実現するための処理プログラム等を記憶するHD1711及びSTD1712とのアクセスを制御する。NIC1708はネットワーク1713上の他の装置と双方向にデータをやりとりする。
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の諸態様を付記として以下に示す。
本発明の諸態様を付記として以下に示す。
(付記1)
ソフトウェアに従ってコアで実行される命令に係るシミュレーションを実行する第1のシミュレータ部と、
前記第1のシミュレータ部でのシミュレーションにより要求されたバスアクセスに係るシミュレーションを実行する第2のシミュレータ部とを有し、
前記第2のシミュレータ部は、
要求された前記バスアクセスを分類条件に従って各ポートに割り当てる分割処理部と、
前記分割処理部による割り当てに従って、前記バスアクセスを前記ポート毎に生成する生成処理部と、
前記生成処理部により生成された前記バスアクセスのシミュレーションを行う実行処理部とを有することを特徴とするシミュレーション装置。
(付記2)
前記分割処理部は、前記バスアクセスを要求した命令のプログラムカウンタ値に応じて、前記バスアクセスを前記ポートに割り当てることを特徴とする付記1記載のシミュレーション装置。
(付記3)
前記分割処理部は、前記バスアクセスのアドレス範囲、前記バスアクセスのアドレス範囲に対するアクセス回数、及び前記バスアクセスの種類の少なくとも1つに応じて、前記バスアクセスを前記ポートに割り当てることを特徴とする付記1又は2記載のシミュレーション装置。
(付記4)
前記分割処理部は、命令に係るシミュレーションでの所定の時間経過及び所定の実行命令数超過の少なくとも1つをトリガとして、要求された前記バスアクセスを割り当てるポートを切り替えることを特徴とする付記1〜3の何れか1項に記載のシミュレーション装置。
(付記5)
前記分割処理部は、命令に係るシミュレーションでの所定の命令の実行、所定のアドレスへのアクセス、及び所定のアドレスへの所定データアクセスの少なくとも1つをトリガとして、要求された前記バスアクセスを割り当てるポートを切り替えることを特徴とする付記1〜4の何れか1項に記載のシミュレーション装置。
(付記6)
前記第1のシミュレータ部でのシミュレーションにより要求されたバスアクセスに応じたメモリアクセスに係る論理的な動作を行うインターフェースを有することを特徴とする付記1〜5の何れか1項に記載のシミュレーション装置。
(付記7)
命令に係るシミュレーションでの所定の時間経過及び所定の実行命令数超過の少なくとも1つをトリガとして、前記第1のシミュレータ部での命令に係るシミュレーションを停止し、前記第2のシミュレータ部でのバスアクセスに係るシミュレーションを開始することを特徴とする付記1〜6の何れか1項に記載のシミュレーション装置。
(付記8)
命令に係るシミュレーションでの所定の命令の実行、所定のアドレスへのアクセス、及び所定のアドレスへの所定データアクセスの少なくとも1つをトリガとして、前記第1のシミュレータ部での命令に係るシミュレーションを停止し、前記第2のシミュレータ部でのバスアクセスに係るシミュレーションを開始することを特徴とする付記1〜7の何れか1項に記載のシミュレーション装置。
(付記9)
バスアクセス量の超過をトリガとして、前記第1のシミュレータ部での命令に係るシミュレーションを停止し、前記第2のシミュレータ部でのバスアクセスに係るシミュレーションを開始することを特徴とする付記1〜8の何れか1項に記載のシミュレーション装置。
(付記10)
前記生成処理部による前記バスアクセスの生成は、前記ポート間で並列して行われることを特徴とする付記1〜9の何れか1項に記載のシミュレーション装置。
ソフトウェアに従ってコアで実行される命令に係るシミュレーションを実行する第1のシミュレータ部と、
前記第1のシミュレータ部でのシミュレーションにより要求されたバスアクセスに係るシミュレーションを実行する第2のシミュレータ部とを有し、
前記第2のシミュレータ部は、
要求された前記バスアクセスを分類条件に従って各ポートに割り当てる分割処理部と、
前記分割処理部による割り当てに従って、前記バスアクセスを前記ポート毎に生成する生成処理部と、
前記生成処理部により生成された前記バスアクセスのシミュレーションを行う実行処理部とを有することを特徴とするシミュレーション装置。
(付記2)
前記分割処理部は、前記バスアクセスを要求した命令のプログラムカウンタ値に応じて、前記バスアクセスを前記ポートに割り当てることを特徴とする付記1記載のシミュレーション装置。
(付記3)
前記分割処理部は、前記バスアクセスのアドレス範囲、前記バスアクセスのアドレス範囲に対するアクセス回数、及び前記バスアクセスの種類の少なくとも1つに応じて、前記バスアクセスを前記ポートに割り当てることを特徴とする付記1又は2記載のシミュレーション装置。
(付記4)
前記分割処理部は、命令に係るシミュレーションでの所定の時間経過及び所定の実行命令数超過の少なくとも1つをトリガとして、要求された前記バスアクセスを割り当てるポートを切り替えることを特徴とする付記1〜3の何れか1項に記載のシミュレーション装置。
(付記5)
前記分割処理部は、命令に係るシミュレーションでの所定の命令の実行、所定のアドレスへのアクセス、及び所定のアドレスへの所定データアクセスの少なくとも1つをトリガとして、要求された前記バスアクセスを割り当てるポートを切り替えることを特徴とする付記1〜4の何れか1項に記載のシミュレーション装置。
(付記6)
前記第1のシミュレータ部でのシミュレーションにより要求されたバスアクセスに応じたメモリアクセスに係る論理的な動作を行うインターフェースを有することを特徴とする付記1〜5の何れか1項に記載のシミュレーション装置。
(付記7)
命令に係るシミュレーションでの所定の時間経過及び所定の実行命令数超過の少なくとも1つをトリガとして、前記第1のシミュレータ部での命令に係るシミュレーションを停止し、前記第2のシミュレータ部でのバスアクセスに係るシミュレーションを開始することを特徴とする付記1〜6の何れか1項に記載のシミュレーション装置。
(付記8)
命令に係るシミュレーションでの所定の命令の実行、所定のアドレスへのアクセス、及び所定のアドレスへの所定データアクセスの少なくとも1つをトリガとして、前記第1のシミュレータ部での命令に係るシミュレーションを停止し、前記第2のシミュレータ部でのバスアクセスに係るシミュレーションを開始することを特徴とする付記1〜7の何れか1項に記載のシミュレーション装置。
(付記9)
バスアクセス量の超過をトリガとして、前記第1のシミュレータ部での命令に係るシミュレーションを停止し、前記第2のシミュレータ部でのバスアクセスに係るシミュレーションを開始することを特徴とする付記1〜8の何れか1項に記載のシミュレーション装置。
(付記10)
前記生成処理部による前記バスアクセスの生成は、前記ポート間で並列して行われることを特徴とする付記1〜9の何れか1項に記載のシミュレーション装置。
例えば図18に示すように、バスアーキテクチャの部分1801(図示の例では1801A〜1801E)を変更し、他の部分は変更せずにシミュレーションを行う。これにより、本発明の実施形態によるシミュレーション装置は、ハードウェア設計支援ツールとして用いることができ、並列化された評価対象のソフトウェアがない状態での様々なバス構成の評価が可能となる。
また、例えば図19に示すように、分割条件110Aを変更し、他の部分は変更せずにシミュレーションを行う。これにより、本発明の実施形態によるシミュレーション装置は、ソフトウェア設計支援ツールとして用いることができ、ソフトウェアを並列化するうえでの良好な性能が得られる適切な条件の探索が可能となる。
なお、図18及び図19において、図1に示した構成要素と同一の機能を有する構成要素には同一の符号を付している。また、図18及び図19において、1802はLevel2キャッシュである。
101 制御部
102 命令セットシミュレータ
103 バスシミュレータ
104 バスアクセス分割モデル
105 トランザクション生成モデル
106 チップ内インターコネクト
107 メモリコントローラ
108 メモリ
109 ソフトウェア(並列化前)
110 分割条件
111 分割終了条件
102 命令セットシミュレータ
103 バスシミュレータ
104 バスアクセス分割モデル
105 トランザクション生成モデル
106 チップ内インターコネクト
107 メモリコントローラ
108 メモリ
109 ソフトウェア(並列化前)
110 分割条件
111 分割終了条件
Claims (5)
- ソフトウェアに従ってコアで実行される命令に係るシミュレーションを実行する第1のシミュレータ部と、
前記第1のシミュレータ部でのシミュレーションにより要求されたバスアクセスに係るシミュレーションを実行する第2のシミュレータ部とを有し、
前記第2のシミュレータ部は、
要求された前記バスアクセスを分類条件に従って各ポートに割り当てる分割処理部と、
前記分割処理部による割り当てに従って、前記バスアクセスを前記ポート毎に生成する生成処理部と、
前記生成処理部により生成された前記バスアクセスのシミュレーションを行う実行処理部とを有することを特徴とするシミュレーション装置。 - 前記分割処理部は、前記バスアクセスを要求した命令のプログラムカウンタ値に応じて、前記バスアクセスを前記ポートに割り当てることを特徴とする請求項1記載のシミュレーション装置。
- 前記第1のシミュレータ部でのシミュレーションにより要求されたバスアクセスに応じたメモリアクセスに係る論理的な動作を行うインターフェースを有することを特徴とする請求項1又は2記載のシミュレーション装置。
- 命令に係るシミュレーションでの所定の時間経過及び所定の実行命令数超過の少なくとも1つをトリガとして、前記第1のシミュレータ部での命令に係るシミュレーションを停止し、前記第2のシミュレータ部でのバスアクセスに係るシミュレーションを開始することを特徴とする請求項1〜3の何れか1項に記載のシミュレーション装置。
- 前記生成処理部による前記バスアクセスの生成は、前記ポート間で並列して行われることを特徴とする請求項1〜4の何れか1項に記載のシミュレーション装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010082710A JP5459021B2 (ja) | 2010-03-31 | 2010-03-31 | シミュレーション装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010082710A JP5459021B2 (ja) | 2010-03-31 | 2010-03-31 | シミュレーション装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011215810A JP2011215810A (ja) | 2011-10-27 |
JP5459021B2 true JP5459021B2 (ja) | 2014-04-02 |
Family
ID=44945483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010082710A Expired - Fee Related JP5459021B2 (ja) | 2010-03-31 | 2010-03-31 | シミュレーション装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5459021B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016194028A1 (ja) * | 2015-05-29 | 2016-12-08 | 三菱電機株式会社 | シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006022204A1 (ja) * | 2004-08-23 | 2006-03-02 | Pacific Design Inc. | ソースプログラムの分析装置および方法 |
JP2007011720A (ja) * | 2005-06-30 | 2007-01-18 | Sharp Corp | システムシミュレータ、システムシミュレート方法、制御プログラムおよび可読記録媒体 |
-
2010
- 2010-03-31 JP JP2010082710A patent/JP5459021B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2011215810A (ja) | 2011-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101697937B1 (ko) | 멀티프로세서 시스템에서 동적 태스크 마이그레이션을 위한 방법 및 시스템 | |
Zhao et al. | Locality-aware scheduling for containers in cloud computing | |
Bhimani et al. | Docker container scheduler for I/O intensive applications running on NVMe SSDs | |
Spafford et al. | Maestro: data orchestration and tuning for opencl devices | |
US9141173B2 (en) | Thread consolidation in processor cores | |
JP2008165795A (ja) | バーチャルマシーンの動的生成 | |
Rafique et al. | Supporting mapreduce on large-scale asymmetric multi-core clusters | |
Rapp et al. | Power-and cache-aware task mapping with dynamic power budgeting for many-cores | |
US10853259B2 (en) | Exitless extended page table switching for nested hypervisors | |
Sohal et al. | E-warp: A system-wide framework for memory bandwidth profiling and management | |
JP2009157684A (ja) | 仮想化プログラム、シミュレーション装置、仮想化方法 | |
Sohal et al. | Profile-driven memory bandwidth management for accelerators and CPUs in QoS-enabled platforms | |
US9311156B2 (en) | System and method for distributing data processes among resources | |
US9612863B2 (en) | Hardware device for accelerating the execution of a systemC simulation in a dynamic manner during the simulation | |
Strati et al. | Orion: Interference-aware, Fine-grained GPU Sharing for ML Applications | |
Quan et al. | A system-level simulation framework for evaluating task migration in MPSoCs | |
JP5459021B2 (ja) | シミュレーション装置 | |
WO2009064420A1 (en) | Multiprocessing apparatus, system and method | |
Cabezas et al. | Runtime and architecture support for efficient data exchange in multi-accelerator applications | |
Borin et al. | Dynamic power management under the run scheduling algorithm: a slack filling approach | |
US20050209839A1 (en) | Data processing apparatus simulation | |
Wang et al. | Millipedes: Distributed and set-based sub-task scheduler of computing engines running on yarn cluster | |
Khiat et al. | MFHS: A modular scheduling framework for heterogeneous system | |
Wu et al. | A hardware platform for exploring predictable cache coherence protocols for real-time multicores | |
CN108009074B (zh) | 一种基于模型和动态分析的多核系统实时性评估方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130206 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20131213 |
|
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: 20131217 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131230 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |