(57)【要約】この発明に係るマルチコアモデルのシミュレーション装置は、入力された命令を実行する複数のプロセッサコアモデルと、前記複数のプロセッサコアモデルの各々が命令を実行した時刻を処理時刻として計算する処理時刻計算部と、前記処理時刻計算部で計算された処理時刻に基づき、前記複数のプロセッサコアモデルの中から次に実行するプロセッサコアモデルを選択するスケジューラと、前記処理時刻計算部で計算された処理時刻により定められる自装置全体の処理時刻を保持する全体時刻保持部とを備え、前記スケジューラで選択されたプロセッサコアモデルは、前記スケジューラの指示に従い、次の命令を実行することを特徴とする。この構成によって、マルチCPUもしくはマルチコアを異なる実行精度で実行させつつ、マルチCPUもしくはマルチコア間の同期精度を保つことができ、正確な性能評価を行うことが可能となる。
2017149641.tif 000002
【特許請求の範囲】
【請求項１】
入力された命令を実行する複数のプロセッサコアモデルと、
前記複数のプロセッサコアモデルの各々が命令を実行した時刻を処理時刻として計算する処理時刻計算部と、
前記処理時刻計算部で計算された処理時刻に基づき、前記複数のプロセッサコアモデルの中から次に実行するプロセッサコアモデルを選択するスケジューラと、
前記処理時刻計算部で計算された処理時刻により定められる自装置全体の処理時刻を保持する全体時刻保持部とを備え、
前記スケジューラで選択されたプロセッサコアモデルは、前記スケジューラの指示に従い、次の命令を実行する
ことを特徴とするマルチコアモデルのシミュレーション装置。
【請求項２】
前記スケジューラは、
前記処理時刻計算部で計算された処理時刻に基づき、前記複数のプロセッサコアモデルの中から最も時刻が経過していないプロセッサコアモデルを判定する判定部と、
前記判定部で判定されたプロセッサコアモデルを、前記次に実行するプロセッサコアモデルとして選択する選択部と、
を備えたことを特徴とする請求項１に記載のマルチコアモデルのシミュレーション装置。
【請求項３】
前記プロセッサコアモデルは、
前記入力された命令からホストコードを生成する命令入力制御部と、
前記命令入力制御部で生成されたホストコードを実行する命令実行部と、
を備えたことを特徴とする請求項１に記載のマルチコアモデルのシミュレーション装置。
【請求項４】
前記マルチコアモデルのシミュレーション装置は、前記複数のプロセッサコアモデルでの実行精度を設定する実行精度設定部を備え、
前記命令入力制御部は、前記実行精度設定部で設定された実行精度に基づき、前記入力された命令からホストコードを生成すること
を特徴とする請求項３に記載のマルチコアモデルのシミュレーション装置。
【請求項５】
前記実行精度は、命令数、サイクル数、処理時間、命令の種類のいずれかであることを特徴とする請求項４に記載のマルチコアモデルのシミュレーション装置。
【請求項６】
前記処理時刻計算部は、
前記プロセッサコアモデルが実行した命令の実行処理時間を取得する処理時間取得部と、
前記処理時間取得部で取得された実行処理時間に基づき、シミュレーション開始時を起点として前記プロセッサコアモデルが命令を実行した時刻を前記処理時刻として算出する処理時刻算出部と、
を備えたことを特徴とする請求項１乃至５のいずれか１項に記載のマルチコアモデルのシミュレーション装置。
【請求項７】
前記全体時刻保持部は、前記スケジューラで選択されたプロセッサコアモデルの処理時刻を、前記自装置全体の処理時刻として保持すること
を特徴とする請求項１乃至６のいずれか１項に記載のマルチコアモデルのシミュレーション装置。
【請求項８】
前記プロセッサコアモデルは、分岐命令を一単位として前記入力された命令を実行することを特徴とする請求項１乃至７のいずれか１項に記載のマルチコアモデルのシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、シミュレーションを行うシミュレーション装置に関する。
【背景技術】
【０００２】
複数の中央演算装置（以下、マルチCPU : Central Processing Unit）、もしくは、複数のコア（以下、マルチコア）を含むハードウェア（以下、HW : Hardware）と、その上で動作するソフトウェア(以下、SW : Software)で構成されるシステムの開発及び検証をシミュレーションにより行うシミュレーション装置がある。このシミュレーション装置では、検証対象システム（以下、ターゲットシステム）上のHWをCベース言語のシステムレベル設計言語で記述したHWモデルと、ターゲットとなる複数CPUもしくはコア上で動作するSWであるターゲットコードとを並列動作させて、その動作を検証する。【０００３】
図１５にそのシミュレーション装置の構成を示す。このシミュレータ装置６０００は、CPUコア0モデル６００１、CPUコア1モデル６００２、CPUバスモデル６００３、外部IOモデル６００４、周辺装置モデル６００５、メモリモデル６００６から構成される。S/Wモデル７０００は、シミュレーション装置６０００上で動作する。ここで、図１５の各モデルは、シミュレーション装置６０００上でC言語などの高級言語を用いてモデル化された機能モデルであり、ハードウエアそのものでないことに注意されたい。【０００４】
このシミュレーション装置６０００内のCPUコア0モデル６００１は、命令セットシミュレータ（以下、ISS：Instruction Set Simulator）で実現され、このISSにおいてターゲットコードを実行する。このISSは、ターゲットコードをシミュレーション装置６０００が稼働するホストマシンもしくはホストCPU用命令コード（以下、ホストコード）に変換する事で、実行する。【０００５】
シミュレーション装置６０００は、同期を取りながら、CPUコア0モデル６００１、CPUコア1モデル６００２のターゲットコードの実行を行う。シミュレーション装置６０００は、CPUコア0モデル６００１、CPUコア1モデル６００２の同期を、ホストマシンもしくはホストCPUの時間（以下、ホストCPU時間）を基準にして行う。シミュレーション装置６０００は、ホストCPU時間が一定時間まで経過すると、CPUコア0モデル６００１とCPUコア1モデル６００２の実行を切り替える。【０００６】
図１６にシミュレーション装置６０００におけるタイミングを示す。図１６は、上段にホストCPU時間で見たCPUコア0モデル６００１、CPUコア1モデル６００２の実行時間の様子、下段にターゲットCPU時間で見たCPUコア0モデル６００１、CPUコア1モデル６００２の実行時間の様子を示している。ここで、Hx(x=0, 1, 2, 3, …)はホストCPU時間を表し、Tx(x=0, 1, 2, 3, …)はターゲットCPU時間を表す。【０００７】
シミュレーション装置６０００の実行時間をホストCPU時間で見た場合、CPUコア0モデル６００１、CPUコア1モデル６００２はホストCPU時間が一定時間経過まで処理を実行するため、CPUコア0モデル６００１、CPUコア1モデル６００２の各コアの処理時間は共に等しく見える。【０００８】
一方、ターゲットCPU時間で見た場合、CPUコア0モデル６００１、CPUコア1モデル ６００２それぞれが有する動作周波数や命令実行サイクル、処理内容により、CPUコア0モデル６００１とCPUコア1モデル ６００２のターゲットCPU時間は、必ずしも等しくならない。そのため、マルチコアもしくはマルチCPUを有するターゲットシステムと異なるタイミングでCPUコア0モデル６００１とCPUコア1モデル６００２の同期が行われており、ターゲットシステムの動作を正確にシミュレートすることができないという問題がある。【０００９】
特許文献１は、複数のスレッドを実行するための複数のCPUコアモデルのシミュレーションにおいて、複数のCPUコアモデル間で同期を行いながら、シミュレーションを行う技術である。特許文献１は、複数のCPUコアモデルはそれぞれに１つのスレッドを割り当て同時実行し、スレッドの所定の実行命令数の命令を実行後待ち状態へ移行させることで、複数のCPUコアモデルの同期を行っている。以上により、特許文献１では1つのCPUコアモデルに対し１つのスレッドを動作させ、特定の実行命令数の命令を実行後待ち状態へ移行させ、CPUコアモデルの同期をターゲットするCPUの命令で行うことで、この問題を解決し、マルチコアを有するターゲットシステムの模擬を実行している。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特許第４７１７４９２号
【発明の概要】
【発明が解決しようとする課題】
【００１１】
特許文献１に記載の従来技術では、複数のCPUコアモデルは、共通の命令数を実行後、待ち状態へ移行することでコア間の同期を行う。そのため、従来技術では、各コアを異なる時間単位で異なる命令数を実行させる場合や、各コアを異なる動作周波数で実行させる場合などには対応できず、各コアを異なる実行精度で実行させるモデルに対応できない問題がある。すなわち、従来技術では、マルチCPUもしくはマルチコアを異なる実行精度で実行させつつ、マルチCPUもしくはマルチコア間の同期精度を保ち、正確な性能評価を行うことが困難となる課題があった。【００１２】
この発明は上記のような課題を解決するためになされたもので、マルチCPUもしくはマルチコアを有するシステムのシミュレーションを行う際に、そのマルチCPUもしくはマルチコアを異なる実行精度で実行させる場合にも、マルチCPUもしくはマルチコア間の同期精度を確保し、正確な性能評価を行えるマルチコアシミュレーション装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
この発明に係るマルチコアモデルのシミュレーション装置は、入力された命令を実行する複数のプロセッサコアモデルと、前記複数のプロセッサコアモデルの各々が命令を実行した時刻を処理時刻として計算する処理時刻計算部と、前記処理時刻計算部で計算された処理時刻に基づき、前記複数のプロセッサコアモデルの中から次に実行するプロセッサコアモデルを選択するスケジューラと、前記処理時刻計算部で計算された処理時刻により定められる自装置全体の処理時刻を保持する全体時刻保持部とを備え、前記スケジューラで選択されたプロセッサコアモデルは、前記スケジューラの指示に従い、次の命令を実行することを特徴とする。
【発明の効果】
【００１４】
この発明のシミュレーション装置によれば、マルチCPUもしくはマルチコアを有するシステムのシミュレーションを行う際に、マルチCPUもしくはマルチコアを異なる実行精度で実行させつつ、マルチCPUもしくはマルチコア間の同期精度を保つことができ、正確な性能評価を行うことが可能となる。
【図面の簡単な説明】
【００１５】
【図１】実施の形態１に係るシミュレーション装置の構成を説明する機能ブロック図。
【図２】実施の形態１に係る命令入力制御部を説明する機能ブロック図。
【図３】実施の形態１に係る処理時刻計算部を説明する機能ブロック図。
【図４】実施の形態１に係るスケジューラを説明する機能ブロック図。
【図５】実施の形態１に係る処理全体を説明するフローチャート。
【図６】実施の形態１に係る命令入力制御の動作を説明するフローチャート。
【図７】実施の形態１に係るマルチコアシミュレーションの動作を説明する図。
【図８】実施の形態１に係るマルチコアシミュレーションの動作を説明する図。
【図９】実施の形態１に係るシミュレーション装置を実現するハードウェア構成図。
【図１０】実施の形態２に係る命令入力制御部を説明する機能ブロック図。
【図１１】実施の形態２に係る命令入力制御の動作を説明するフローチャート。
【図１２】実施の形態３に係るシミュレーション装置の構成を説明する機能ブロック図。
【図１３】実施の形態３に係る命令入力制御部を説明する機能ブロック図。
【図１４】実施の形態３に係る命令入力制御の動作を説明するフローチャート。
【図１５】従来シミュレーション装置の構成を説明する図。
【図１６】従来シミュレーション装置におけるタイミングチャート。
【発明を実施するための形態】
【００１６】
実施の形態１．
図１にこの発明の実施の形態１におけるシミュレーション装置の構成を示す。なお、以降の各図において、同一符号は同一または相当部分を示す。
【００１７】
図１に示すシミュレーション装置１０００は、CPUコアモデルを２つ有する場合のシステムをシミュレーションする際の構成であり、大きくCPUモデル２０００、実行精度設定0 ２１００、実行精度設定1 ２２００、全体時刻保持部２３００、HWモデル２４００、SWモデルのプログラム４０００から構成される。SWモデルのプログラム４０００は、ターゲットCPU上で動作させる検証対象SWであり、CPUモデル２０００上で動作する。その際、SWモデルのプログラム４０００は、ホストコードに変換された後、実行される。実行精度設定0 ２１００、実行精度設定1 ２２００は、CPUモデルの処理実行の実行精度を設定する。ここで、実行精度は、各コアを実行させる時間単位や、各コアで実行させる命令数や、各コアで実行させる動作周波数など、さまざまな形式で規定することができる。全体時刻保持部２３００は、シミュレーション装置１０００全体の時刻を保持する。
【００１８】
さらに、CPUモデル２０００は、CPUコア0モデル２００１、CPUコア1モデル２００２、命令メモリモデル２００３、処理時刻計算部２００４、処理時刻計算部２００５、スケジューラ２００６から構成される。CPUコア0モデル２００１及びCPUコア1モデル２００２は、ターゲットシステム内CPUコアを模擬した機能モデルである。命令メモリモデル２００３は、SWモデルのプログラム４０００を格納する機能モデルである。処理時刻計算部２００４、処理時刻計算部２００５は、CPUコア0モデル２００１、及びCPUコア1モデル２００２、それぞれの処理時刻を計算する。スケジューラ２００６は、処理時刻計算部２００４、処理時刻計算部２００５の処理時刻計算結果から、CPUコア0モデル２００１及びCPUコア1モデル２００２の実行を制御する。
【００１９】
さらに、CPUコア0モデル２００１及びCPUコア1モデル２００２は、それぞれ命令実行部１０１、２０１と命令入力制御部１０２、２０２から構成される。命令入力制御部１０２、２０２は、実行精度設定0 ２１００及び実行精度設定1 ２２００の設定に基づき、CPUコア0モデル２００１及びCPUコア1モデル２００２が実行する命令の入力を制御する。命令実行部１０１、２０１は、命令入力制御部１０２、２０２から入力された命令を実行する。
【００２０】
さらに、HWモデル２４００は、CPUバスモデル２４０１、メモリモデル２４０２、外部IOモデル２４０３、周辺装置モデル２４０４から構成される。
【００２１】
前記各モデルはプログラム言語によって記述される機能モデルである。これらモデルは、C言語などの高級言語を用いてモデル化するが、HWモデル２４００に関してはHardware description language（以下、HDL）等のHW記述言語で記述しても良い。なお、プログラム言語によって記述されたHWモデル２４００などの機能モデルを実際に実行するハードウエア構成は図１４を用いて後に説明する。
【００２２】
実行精度設定0 ２１００は、CPUコア0モデル２００１用の処理時実行の精度を設定し、実行精度設定1 ２２００は、CPUコア1モデル ２００２用の処理実行の精度を設定する。実行精度設定0 ２１００、実行精度設定1 ２２００には、各コアの処理実行ステップを設定する。前記処理実行ステップは、実行命令数、サイクル数、処理時間のいずれかを設定する。
【００２３】
図２にCPUコア0モデル２００１内の命令入力制御部１０２の機能ブロック図を示す。命令入力制御部１０２は、命令取得部１０、取得命令数カウント部１１、取得命令数制御部１２、ホストコード生成部１４、次アドレス生成部１５から構成する。CPUコア1モデル２００２内の命令入力制御部２０２も図２と同様の構成である。
【００２４】
図３に処理時刻計算部２００４の機能ブロック図を示す。処理時刻計算部２００４は、処理時間取得部４１、命令処理時間情報４２、命令実行確認部４３、処理時刻算出部４４、処理時刻保持部４５を有する。なお、処理時刻計算部２００５の機能ブロック図も処理時刻計算部２００４の機能ブロック図と同様である。
【００２５】
図４にスケジューラ２００６の機能ブロック図を示す。スケジューラ２００６は、コア時刻比較部６１、実行コア選択部６２を有する。
【００２６】
図５、図６に図１に示すシミュレーション装置１０００のフローチャートを示す。図５はシミュレーション装置１０００全体のフローチャート、図６は図５のステップ８００の詳細フローチャートである。図５、図６を使用して図１〜図４に示すシミュレーション装置の動きを説明する。説明上、CPUコア0から動作を行うとする。
【００２７】
まず、図５のステップ８００において、CPUコア0モデル２００１は、命令メモリモデル２００３から実行する命令を取得する。命令メモリモデル２００３からの命令取得は、CPUコア0モデル２００１内の命令入力制御部１０２が図６に示すフローに基づいて行う。命令入力制御部１０２における命令取得は、CPUコア0モデル２００１が実行コアに指定されたどうかを取得命令数制御部１２で判定し（図６のステップ８１）、判定の結果yesの場合、次アドレス生成部１５において命令取得先アドレスを生成する（図６のステップ８２）。さらに、命令取得部１０はその生成されたアドレスに基づいて命令メモリモデル２００３から命令を取得し（図６のステップ８３）、取得命令数カウント部１１において命令取得部１０が取得した命令数をカウントし（図６のステップ８４）、取得命令数制御部１２において実行精度設定0 ２１００で設定された命令数に取得命令数が達したかを確認し（図６のステップ８５）、達していない場合（図６のステップ８５でNo）命令取得部１０が次の命令を取得し、達していた場合（図６のステップ８５でyes）命令取得をやめ、ホストコード生成部１４において取得した命令分のホストコードを生成し（図６のステップ８６）、命令実行部１０１へ入力する。また、命令取得部１０は、ホストコード生成１４へ出力した命令（図３の実行命令情報４６）を同じタイミングで処理時刻計算部２００４へも出力する。
【００２８】
次に、図５のステップ８１０において、CPUコア0モデル２００１内の命令実行部１０１が入力されたホストコードを実行する。命令実行部１０１は、命令実行後、実行完了情報４７を処理時刻計算部２００４へ出力する。
【００２９】
図５のステップ８２０において、処理時時刻計算部２００４は、CPUコア0モデル２００１からの実行命令情報４６と実行完了情報４７をもって、CPUコア0モデル２００１の処理時刻を計算する。処理時刻計算部２００４内の実行命令処理時間取得４１は、CPUコア0モデル２００１からの実行命令情報４６と命令処理時間情報４２からCPUコア0モデル２００１が実行した命令の処理時間を取得する。また、処理時刻計算部２００４内の命令実行確認部４３は、CPUコア0モデル２００１からの実行完了情報４７からCPUコア0モデル２００１の命令実行完了を判定する。処理時刻計算部２００４内の処理時刻算出部４４は、命令実行確認部４３からの命令実行完了判定結果が完了であれば、処理時時刻保持部４５で保持している処理時刻に実行命令処理時間取得４１からの処理時間を加算し、その結果を処理時刻保持部４５へ格納する。処理時刻保持部４５は、スケジューラ２００６へ保持している処理時刻を出力する。ここで、例えば、処理時時刻保持部４５はシミュレーション開始時を起点としてプロセッサコアモデルが命令を実行した時刻をその処理時刻として保持することができる。
【００３０】
次に、図５のステップ８３０において、スケジューラ２００６は、CPUコア0モデル ２００１とCPUコア1モデル２００２の処理時刻を比較する。スケジューラ２００６内のコア時刻判定部６１において、CPUコア0モデル ２００１とCPUコア1モデル２００２の処理時刻で、時刻が経過していない（進んでいない）コアと処理時刻を判定する。コア時刻判定部６１は、判定した処理時刻を全体時刻保持部２３００へ出力する。また、コア時刻判定部６１は、実行コア選択部６２へ判定したコア情報を出力する。実行コア選択部６２は、コア時刻判定部６１からの判定コア情報に基づき、CPUコア0モデル２００１、もしくは、CPUコア1モデル２００２へ実行コア指定情報を出力する。
【００３１】
次に、図５のステップ８４０において、全体時刻保持部２３００は、スケジューラ２００６からの処理時刻を保持し、CPUコア0モデル２００１の処理時刻を全体処理時刻として代入する。
【００３２】
次に、図５のステップ８５０において、CPUコア0モデル２００１内の取得命令数制御１２がスケジューラ２００６からの実行コア指定情報に基づいて、次アドレス生成部１５にアドレス生成を指示し、次アドレス生成部１５が次に実行する命令のアドレスを生成し、SWモデルのプログラム４０００が終了ならば、動作を終了させる。終了しない場合は、図５のステップ８００へ戻り、再度処理を実行する。
【００３３】
図７、図８に図１に示すシミュレーション装置１０００のコア間同期動作例を示す。図７、図８は、動作途中のあるタイミング(T0)以降からの動作を示す。図７内のループ回数欄は図５のステップ８００、８０１〜８５０、８５１をループした回数を、CPUコア0時刻欄は処理時刻計算部２００４内で保持しているCPUコア0モデル２００１の処理時刻、CPUコア1時刻欄は処理時刻計算部２００５内で保持しているCPUコア1モデル２００２の処理時刻、選択コアはスケジューラ２００６が処理時刻計算部２００４及び２００５からの出力から次に実行するコアを選択した結果、更新全体時刻はスケジューラ２００６が全体時刻管理部２３００へ出力する処理時刻である。
【００３４】
図８中のTx（x=０〜１７）はターゲット処理時間で見た処理時間、全体時刻は全体処理時刻保持部２３００で保持する全体処理時刻を示している。
【００３５】
前提として、まず、実行精度設定0 ２１００は”命令数４”、実行精度設定1 ２２００が”命令数１１”とする。また、説明のため１つの命令の処理時間は、T1とする。CPUコア0モデル２００１が実行精度設定0 ２１００で行う処理を処理0A〜OD、CPUコア1モデル２００２が実行精度設定1 ２２００で行う処理を処理1A〜１Cとする。従って、処理0A〜ODは命令数４、処理1A〜1Bは命令数１１で構成されている。
【００３６】
また、図７、図８に示す前の動作において、スケジューラ２００６はCPUコア1モデル２００２の処理実行を選択し、CPUコア1モデル２００２は処理1Aを既に実施している。そして、処理時刻計算部２００５は、CPUコア1モデル２００２の処理1A完了後、処理1Aの処理時刻を計算し、CPUコア1モデル２００２の処理時刻へ加算し、CPUコア1モデル２００２の処理時刻が既にT2となっている。このとき、スケジューラ２００６は、CPUコア0モデル２００１の処理時刻T0とCPUコア1モデル２００２の処理時刻T2との大小関係を判定し、CPUコア0モデル２００１を次の処理実行に選択する。全体処理時刻は、CPUコア0モデル２００１処理時刻を代入するため、T0である。
【００３７】
図７のループ回数＝１において、前記前提より、シミュレーション装置１０００は、実行コアとしてCPUコア0モデル２００１を選択した状態である。従って、ループ回数＝１では、CPUコア0モデル２００１が処理0Aを実行し、CPUコア0モデル２００１の処理時刻がT0からT4となる。スケジューラ２００６は、CPUコア0モデル２００１の処理0A実行完了後、CPUコア0モデル２００１の処理時刻T4とCPUコア1モデル２００２の処理時刻T2を比較し、時刻が経過していないCPUコア1モデル２００２を次の実行コアに選択する。また、全体処理時刻管理部２３００は、CPUコア1モデル２００２の処理時刻T2を全体処理時刻として保持する。
【００３８】
図７のループ回数=２において、処理0Aでは全命令が終了していないため、CPUコア1モデル２００２が処理1Bを実行し、CPUコア1モデル２００２の処理時刻がT2からT13となる。スケジューラ２００６は、CPUコア1モデル２００２の処理1B実行完了後、CPUコア0モデル２００１の処理時刻T4とCPUコア1モデル２００２の処理時刻T13を比較し、時刻が経過していないCPUコア0モデル２００１を次の実行コアに選択する。また、全体処理時刻管理部２３００は、CPUコア0モデル２００１の処理時刻T4を全体処理時刻として保持する。
【００３９】
図７のループ回数=３において、処理1Bでは全命令が終了していないため、CPUコア0モデル２００１が処理0Bを実行し、CPUコア0モデル２００１の処理時刻がT4からT8となる。スケジューラ２００６は、CPUコア0モデル２００１の処理0B実行完了後、CPUコア0モデル２００１の処理時刻T8とCPUコア1モデル２００２の処理時刻T13を比較し、時刻が経過していないCPUコア0モデル２００１を次の実行コアに選択する。また、全体処理時刻管理部２３００は、CPUコア0モデル２００１の処理時刻T8を全体処理時刻として保持する。
【００４０】
図７のループ回数=４において、処理0Bでは全命令が終了していないため、CPUコア0モデル２００１が処理0Cを実行し、CPUコア0モデル２００１の処理時刻がT8からT12となる。スケジューラ２００６は、CPUコア0モデル２００１の処理0C実行完了後、CPUコア0モデル２００１の処理時刻T12とCPUコア1モデル２００２の処理時刻T13を比較し、時刻が経過していないCPUコア0モデル２００１を次の実行コアに選択する。また、全体処理時刻管理部２３００は、CPUコア0モデル２００１の処理時刻T12を全体処理時刻として保持する。
【００４１】
図７のループ回数=５において、処理0Cでは全命令が終了していないため、CPUコア0モデル２００１が処理ODを実行し、CPUコア0モデル２００１の処理時刻がT12からT16となる。スケジューラ２００６は、CPUコア0モデル２００１の処理OD実行完了後、CPUコア0モデル２００１の処理時刻T16とCPUコア1モデル２００２の処理時刻T13を比較し、時刻が経過していないCPUコア1モデル２００２を次の実行コアに選択する。また、全体処理時刻管理部２３００は、CPUコア0モデル２００１の処理時刻T16を全体処理時刻として保持する。
【００４２】
次のループにおいて、処理ODでは全命令が終了していなければ、ループ回数=５で選択されたCPUコア1モデル２００２が処理を実行する。処理ODで全命令が終了していれば、シミュレーション装置１０００は、動作を終了する。
【００４３】
図９にこの発明の実施の形態１におけるシミュレーション装置を構築するハードウェア構成の一例を示す。図９に示すハードウェア構成で構築されるシミュレーション装置は、CPU３００、メモリ（Hard Disk Drive（HDD）/Random Access Memory（RAM）/Read Only Memory（ROM））３０１を有する。また、シミュレーション装置は、通信I/F(Interface)３０２とディスクドライブ（Compact Disc（CD）/Digial Versatile Disc (DVD)/Floppy Disk（FD））３０３、I/F（Peripheral Component Interconnect（PCI）/ Universal Serial Bus（USB））３０４を有する。また、シミュレーション装置は、ディスプレイ３０５、マウス３０６、キーボード３０７、プリンタ３０８を有する。マウス３０６の代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、その他ポインティングデバイスを使用してもよい。また、CPU３００からプリンタ３０８は、バス３０９を介してそれぞれ接続されている。
【００４４】
CPU３００は、プロセッサの一例であり、シミュレーション装置全体の制御、プログラム実行を行う。メモリ３０１は、ブートプログラムなどのプログラムや実施の形態１〜３で示す機能モデルを表すプログラムを記憶する不揮発性メモリであるROMやHDD、CPU３００のワークエリア等として使用されるRAMである。
【００４５】
通信I/F３０２は、ネットワークに接続され、シミュレーション装置をネットワークを介して制御可能とする。ネットワークとは、IP-VPN（Internet Protocol Virtual Private Network）、広域LAN、ATM（Asynchronous Transfer Mode）ネットワークといったWAN（Wide Area Network）、あるいは、インターネットに接続されていても構わない。LAN、WAN、インターネットは、ネットワークの一例である。ディスクドライブ３０３は、ディスクに対してデータのリード/ライトを制御する装置である。I/F３０４は、図１４に示す装置以外をPCI(Peripheral Component Interconnect)やUSB(Universal Serial Bus)を介してバス３０９へ接続し、シミュレーション装置の一部として使用することができる装置である。
【００４６】
以上のように、マルチCPUもしくはマルチコアを有するシステムのシミュレーションにおいて、各CPUもしくはコアが異なる実行精度で動作しつつ、マルチCPUもしくはマルチコア間の同期を精度良く、高速に実施可能である。また、本シミュレーション装置を用いることで、マルチCPUもしくはマルチコアを有するシステムの正確な性能評価を実施可能である。
【００４７】
このように、実施の形態１に係るマルチコアモデルのシミュレーション装置１０００は、入力された命令を実行するCPUIコア0モデル２００１及びCPUコア1モデル２００２で示される複数のプロセッサコアモデルと、前記複数のプロセッサコアモデルの各々が命令を実行した時刻を処理時刻として計算する処理時刻計算部２００４、２００５と、処理時刻計算部２００４、２００５で計算された処理時刻に基づき、CPUIコア0モデル２００１及びCPUコア1モデル２００２で示される複数のプロセッサコアモデルの中から次に実行するプロセッサコアモデルを選択するスケジューラ２００６と、処理時刻計算部２００５で計算された処理時刻により定められる自装置全体の処理時刻を保持する全体時刻保持部２３００とを備え、スケジューラ２００６で選択されたプロセッサコアモデルは、スケジューラ２００６の指示に従い、次の命令を実行することを特徴とする。この構成によって、マルチコアモデルのシミュレーション装置１０００は、マルチCPUもしくはマルチコアを有するシステムのシミュレーションを行う際に、マルチCPUもしくはマルチコアを異なる実行精度で実行させつつ、マルチCPUもしくはマルチコア間の同期精度を保つことができ、正確な性能評価を行うことが可能となる。
【００４８】
また、実施の形態１に係るマルチコアモデルのシミュレーション装置１０００では、スケジューラ２００６は、処理時刻計算部２００５で計算された処理時刻に基づき、複数のプロセッサコアモデルの中から最も時刻が経過していないプロセッサコアモデルを判定する判定部であるコア時刻判定部６１と、コア時刻判定部６１で判定されたプロセッサコアモデルを、次に実行するプロセッサコアモデルとして選択する選択部である実行コア選択部６２と、を備えたことを特徴とする。この構成によって、最も時刻が経過していないプロセッサコアモデルの時刻が進むように制御でき、複数のプロセッサコアモデルの間の処理時刻の違いを小さくすることで、複数のプロセッサコアモデルの間の同期精度を高めることができる。
【００４９】
また、実施の形態１に係るマルチコアモデルのシミュレーション装置１０００では、プロセッサコアモデルであるCPUIコア0モデル２００１及びCPUコア1モデル２００２は、入力された命令からホストコードを生成する命令入力制御部１０２、２０２と、命令入力制御部１０２、２０２で生成されたホストコードを実行する命令実行部１０１、２０１と、を備えたことを特徴とする。この構成によって、入力された命令からホストコードを生成する命令入力制御部１０２と、命令入力制御部１０２で生成されたホストコードを実行する命令実行部１０１と、を備えたことを特徴とする。この構成によって、設定された精度で入力された命令からホストコードに変換し、設定された処理単位で命令を実行することができる。
【００５０】
また、実施の形態１に係るマルチコアモデルのシミュレーション装置１０００は、
複数のプロセッサコアモデルであるCPUIコア0モデル２００１及びCPUコア1モデル２００２での実行精度を設定する実行精度設定0 ２１００、実行精度設定1 ２２００で示される実行精度設定部を備え、命令入力制御部１０２、２０２は、前記精度設定部で設定された実行精度に基づき、前記入力された命令からホストコードを生成することを特徴とする。この構成により、複数のプロセッサコアモデルであるCPUIコア0モデル２００１及びCPUコア1モデル２００２に対して、個別に精度を設定することができる。
【００５１】
また、実施の形態１に係るマルチコアモデルのシミュレーション装置１０００では、前記実行精度は、命令数、サイクル数、処理時間、命令の種類のいずれかであることを特徴とする。この構成により、命令数、サイクル数、処理時間、命令の種類に基づいて、入力された命令の実行単位を設定することができる。
【００５２】
また、実施の形態１に係るマルチコアモデルのシミュレーション装置１０００では、処理時刻計算部２００４、２００５は、プロセッサコアモデルが実行した命令の実行処理時間を取得する処理時間取得部４１と、処理時間取得部４１で取得された実行処理時間に基づき、シミュレーション開始時を起点として前記プロセッサコアモデルが命令を実行した時刻を処理時刻として算出する処理時刻算出部４４と、を備えたことを特徴とする。この構成により、プロセッサコアモデルが実行した命令の実行処理時間を実行単位ごとに測定し、各実行単位ごとに適切な処理時刻を算出することが可能となる。
【００５３】
また、実施の形態１に係るマルチコアモデルのシミュレーション装置１０００では、全体時刻保持部２３００は、前記スケジューラ２００６で選択されたプロセッサコアモデルの処理時刻を、前記自装置全体の処理時刻として保持することを特徴とする。この構成により、自装置全体と前記スケジューラ２００６で選択されたプロセッサコアモデルの処理時刻を同期させることができる。
【００５４】
また、実施の形態１に係るマルチコアモデルのシミュレーション装置１０００では、全体時刻保持部２３００は、前記スケジューラ２００６で選択されたプロセッサコアモデルの処理時刻を、前記自装置全体の処理時刻として保持することを特徴とする。この構成により、自装置全体と前記スケジューラ２００６で選択されたプロセッサコアモデルの処理時刻を同期させることができる。
【００５５】
実施の形態２．  
実施の形態１では、実行精度設定0として命令数を設定した場合の構成を主に示したのに対し、本実施の形態では実行精度設定0として処理時間もしくはサイクル数を設定した場合の構成を示す。
【００５６】
図１０にこの発明の実施の形態２における命令入力制御部１０２の機能ブロック図を示す。
【００５７】
図１０に示す命令入力制御部１０２は、実行精度設定0として処理時間もしくはサイクル数を設定された場合であり、図２に示す実施の形態１の命令入力制御部１０２に、命令処理時間情報１７を追加し、取得命令数カウント部１１を取得命令処理時間算出部１３へ、取得命令数制御１２を取得命令制御部１６へ置き換えた構成である。
【００５８】
図１１にこの発明の実施の形態２における図５のステップ８００の詳細フローチャートを示す。図６に示す実施の形態１のフローチャートとの差異は、ステップ８４の「命令取得数カウントアップ」がステップ１２４の「取得命令の処理時間を算出」に、ステップ８５の条件「取得命令数==実行精度設定値」がステップ１２５の条件「取得命令の処理時間>=実行精度設定値」にそれぞれ変わっている点である。図１１では、判定は処理時間で行うとしているが、サイクル数で行っても良い。その場合、実行精度設定値はサイクル数で指定される。
【００５９】
図１０、図１１を用いて実施の形態２におけるシミュレーション装置の動きを、図２、図６に示す実施の形態１における動きとの差異についてのみ、説明する。
【００６０】
図５のステップ８００において、CPUコア0モデル ２００１は、命令メモリから実行する命令を取得する。命令の取得は、CPUコア0モデル２００１内の命令入力制御部１０２が図１１に示すフローチャートに基づいて行う。
【００６１】
図１１に示すフローチャートにおいて、ステップ８１〜８３までは、実施の形態１における動きと同様である。ステップ１２４において、取得命令処理時間算出部１３がステップ８３で取得した命令の処理時間を命令処理時間情報１７から取得し、処理時間を算出する。ステップ１２５において、取得命令制御部１６がステップ１２４で算出した処理時間と実行精度設定0 ２１００で設定される実行精度設定値を比較し、取得した命令の処理時間が実行精度設定値以上である場合に命令取得部１０の命令取得を停止し、取得した命令の処理時間が実行精度設定値に満たない場合に命令取得部１０が次の命令を取得する。ステップ８６及びステップ８１０以降のフローは、実施の形態１における動きと同様である。
【００６２】
実施の形態２におけるシミュレーション装置でマルチコアシミュレーションを実施した場合の様子は、図７、図８と同様である。
【００６３】
以上のように、実施の形態２に係るシミュレーション装置では、マルチCPUもしくはマルチコアを有するシステムのシミュレーションにおいて、マルチCPUもしくはマルチコアで実施するスレッドに制限を与えず、各CPUもしくはコアが異なる実行精度で動作しつつ、マルチCPUもしくはマルチコア間の同期を精度良く、高速に実施可能である。また、本シミュレーション装置を用いることで、マルチCPUもしくはマルチコアを有するシステムの正確な性能評価を実施可能である。
【００６４】
なお、実施の形態１、２では、プログラム４０００は１つのスレッドを含む構成でもよいし、複数のプログラムを含むマルチスレッド構成とすることもできる。実施の形態１、２に記載の構成は、プログラム４０００がマルチスレッドを含む場合にも適用可能である。
【００６５】
実施の形態３．
実施の形態１、２ではコア0モデル２００１又はコア1モデル２００２の外から命令数もしくは処理時間もしくはサイクル数などの実行精度設定値が与えられ、その設定精度に基づいて各コアで行う処理を制御していたのに対して、本実施の形態では、コア0モデル２００１又はコア1モデル２００２の外からの設定に依存せず、プログラムに含まれる１つの分岐を１単位として、分岐命令ごとを実行単位とする構成について示す。
【００６６】
図１２にこの発明の実施の形態３におけるシミュレーション装置の構成を示す。図１２に示すシミュレーション装置は、図１に示すシミュレーション装置から実行精度設定0 ２１００と実行精度設定1 ２２００を除いた構成である。
【００６７】
図１３にこの発明の実施の形態３における命令入力制御部１０２の機能ブロック図を示す。図１３に示す命令入力制御部１０２は、図１０に示す実施の形態２における命令入力制御部１０２から命令処理時間情報１７、取得命令処理時間算出部１３、を除いた構成である。
【００６８】
図１４にこの発明の実施の形態３における図５のステップ８００の詳細フローチャートを示す。図６に示す実施の形態１のフローチャートとの差異は、ステップ８４が除かれ、ステップ８５の条件「取得命令数==実行精度設定値」がステップ１５５の条件「取得命令が分岐もしくはジャンプ命令」に変更になっている点である。
【００６９】
図１３、図１４を用いて、図１２に示す実施の形態２におけるシミュレーション装置の動きを図２、図６に示す実施の形態１における動きとの差異についてのみ、説明する。
【００７０】
図５のステップ８００において、CPUコア0モデル ２００１は、命令メモリから実行する命令を取得する。命令の取得は、CPUコア0モデル２００１内の命令入力制御部１０２が図１４に示すフローチャートに基づいて行う。
【００７１】
ステップ８１〜８３までは、実施の形態１における動きと同様である。ステップ１５５において、取得命令制御部１６がステップ８３で取得した命令が分岐命令、もしくは、ジャンプ命令、であるかを判定し、取得した命令が分岐命令、もしくはジャンプ命令であった場合命令取得部１０の命令取得を停止し、取得した命令が分岐命令、もしくはジャンプ命令でなかった場合命令取得１０が次の命令を取得する。ステップ８６及び、ステップ８１０以降のフローは、実施の形態１における動きと同様である。
【００７２】
図１３、図１４では、取得命令が分岐命令、もしくは、ジャンプ命令かを判断しているが、判定条件に命令を追加する、もしくは、判定条件の命令を変更する場合は、実行精度設定で判定条件を変更しても良い。その場合、図１２に示すシミュレーション装置に実行精度設定が追加になる。
【００７３】
このように、実施の形態３に係るマルチコアモデルのシミュレーション装置１０００では、CPUIコア0モデル２００１、CPUコア1モデル２００２などのプロセッサコアモデルは、分岐命令を一単位として前記入力された命令を実行することを特徴とする。この構成により、CPUIコア0モデル２００１、CPUコア1モデル２００２などのプロセッサコアモデルは、外からの設定に依存せずに、実行精度を決めて実行処理を行うことができる。
【符号の説明】
【００７４】
１０：命令取得部、１１：取得命令数カウント部、１２：取得命令数制御部、１４：ホストコード生成部、１５：次アドレス生成部、１６：取得命令制御部、１７：命令処理時間情報、４１：処理時間取得部、４２：命令処理時間情報、４３：命令実行確認部、４４：処理時刻計算部、４５：処理時刻保持部、４６：実行命令情報、４７：実行完了情報、６１：コア時刻比較部、６２：実行コア選択部、１０１、２０１：命令実行部、１０２、２０２：命令入力制御部、３００：CPU、３０１：メモリ（Hard Disk Drive（HDD）/Random Access Memory（RAM）/Read Only Memory（ROM））、３０２：通信I/F(Interface)、３０３：ディスクドライブ（Compact Disc（CD）/Digial Versatile Disc (DVD)/Floppy Disk（FD））、３０４：I/F（Peripheral Component Interconnect（PCI）/ Universal Serial Bus（USB））、３０５：ディスプレイ、３０６：マウス、３０７：キーボード、３０８：プリンタ、３０８：プリンタ、３０９：バス、１０００：シミュレーション装置、２０００：CPUモデル、２００１：CPUコア0モデル、２００２：CPUコア1モデル、２００３：命令メモリモデル、２００４：処理時刻計算部、２００５：処理時刻計算部、２００６：スケジューラ、２１００：実行精度設定0、２２００：実行精度設定1、２３００：全体時刻保持部、２４００：HWモデル、２４０１：CPUバスモデル、２４０２：メモリモデル、２４０３：外部IOモデル、２４０４：周辺装置モデル、４０００：プログラム、６０００：シミュレータ装置、６００１：CPUコア0モデル、６００２：CPUコア1モデル、６００３：CPUバスモデル、６００４：外部IOモデル、６００５：周辺装置モデル、６００６：メモリモデル、７０００：S/Wモデル
【図１】
2017149641.tif 000003
【図２】
2017149641.tif 000004
【図３】
2017149641.tif 000005
【図４】
2017149641.tif 000006
【図５】
2017149641.tif 000007
【図６】
2017149641.tif 000008
【図７】
2017149641.tif 000009
【図８】
2017149641.tif 000010
【図９】
2017149641.tif 000011
【図１０】
2017149641.tif 000012
【図１１】
2017149641.tif 000013
【図１２】
2017149641.tif 000014
【図１３】
2017149641.tif 000015
【図１４】
2017149641.tif 000016
【図１５】
2017149641.tif 000017
【図１６】
2017149641.tif 000018
【手続補正書】
【提出日】平成28年6月8日(2016.6.8)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
この発明に係るマルチコアモデルのシミュレーション装置は、入力された命令を実行する複数のプロセッサコアモデルと、前記複数のプロセッサコアモデルの各々が命令を実行した時刻を処理時刻として計算する処理時刻計算部と、前記処理時刻計算部で計算された処理時刻に基づき、前記複数のプロセッサコアモデルの中から最も時刻が経過していないプロセッサコアモデルを次に実行するプロセッサコアモデルとして選択するスケジューラと、前記処理時刻計算部で計算された処理時刻により定められる自装置全体の処理時刻を保持する全体時刻保持部とを備え、前記スケジューラで選択されたプロセッサコアモデルは、前記スケジューラの指示に従い、次の命令を実行することを特徴とする。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
入力された命令を実行する複数のプロセッサコアモデルと、
前記複数のプロセッサコアモデルの各々が命令を実行した時刻を処理時刻として計算する処理時刻計算部と、
前記処理時刻計算部で計算された処理時刻に基づき、前記複数のプロセッサコアモデルの中から最も時刻が経過していないプロセッサコアモデルを次に実行するプロセッサコアモデルとして選択するスケジューラと、
前記処理時刻計算部で計算された処理時刻により定められる自装置全体の処理時刻を保持する全体時刻保持部とを備え、
前記スケジューラで選択されたプロセッサコアモデルは、前記スケジューラの指示に従い、次の命令を実行する
ことを特徴とするマルチコアモデルのシミュレーション装置。
【請求項２】
前記スケジューラは、
前記処理時刻計算部で計算された処理時刻に基づき、前記複数のプロセッサコアモデルの中から最も時刻が経過していないプロセッサコアモデルを判定する判定部と、
前記判定部で判定されたプロセッサコアモデルを、前記次に実行するプロセッサコアモデルとして選択する選択部と、
を備えたことを特徴とする請求項１に記載のマルチコアモデルのシミュレーション装置。
【請求項３】
前記プロセッサコアモデルは、
前記入力された命令からホストコードを生成する命令入力制御部と、
前記命令入力制御部で生成されたホストコードを実行する命令実行部と、
を備えたことを特徴とする請求項１に記載のマルチコアモデルのシミュレーション装置。
【請求項４】
前記マルチコアモデルのシミュレーション装置は、前記複数のプロセッサコアモデルでの実行精度を設定する実行精度設定部を備え、
前記命令入力制御部は、前記実行精度設定部で設定された実行精度に基づき、前記入力された命令からホストコードを生成すること
を特徴とする請求項３に記載のマルチコアモデルのシミュレーション装置。
【請求項５】
前記実行精度は、命令数、サイクル数、処理時間、命令の種類のいずれかであることを特徴とする請求項４に記載のマルチコアモデルのシミュレーション装置。
【請求項６】
前記全体時刻保持部は、前記スケジューラで選択されたプロセッサコアモデルの処理時刻を、前記自装置全体の処理時刻として保持すること
を特徴とする請求項１乃至５のいずれか１項に記載のマルチコアモデルのシミュレーション装置。
【手続補正書】
【提出日】平成28年8月9日(2016.8.9)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
この発明に係るマルチコアモデルのシミュレーション装置は、入力された命令からホストコードを生成する命令入力制御部及び該命令入力制御部で生成されたホストコードを実行する命令実行部を備えた複数のプロセッサコアモデルと、前記複数のプロセッサコアモデルの各々が命令を実行した時刻を処理時刻として計算する処理時刻計算部と、前記処理時刻計算部で計算された処理時刻に基づき、前記複数のプロセッサコアモデルの中から最も時刻が経過していないプロセッサコアモデルを次に実行するプロセッサコアモデルとして選択するスケジューラと、前記処理時刻計算部で計算された処理時刻により定められる自装置全体の処理時刻を保持する全体時刻保持部とを備え、前記スケジューラで選択されたプロセッサコアモデルは、前記スケジューラの指示に従い、次の命令を実行することを特徴とする。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
入力された命令からホストコードを生成する命令入力制御部及び該命令入力制御部で生成されたホストコードを実行する命令実行部を備えた複数のプロセッサコアモデルと、
前記複数のプロセッサコアモデルの各々が命令を実行した時刻を処理時刻として計算する処理時刻計算部と、
前記処理時刻計算部で計算された処理時刻に基づき、前記複数のプロセッサコアモデルの中から最も時刻が経過していないプロセッサコアモデルを次に実行するプロセッサコアモデルとして選択するスケジューラと、
前記処理時刻計算部で計算された処理時刻により定められる自装置全体の処理時刻を保持する全体時刻保持部とを備え、
前記スケジューラで選択されたプロセッサコアモデルは、前記スケジューラの指示に従い、次の命令を実行する
ことを特徴とするマルチコアモデルのシミュレーション装置。
【請求項２】
前記マルチコアモデルのシミュレーション装置は、前記複数のプロセッサコアモデルでの実行精度を設定する実行精度設定部を備え、
前記命令入力制御部は、前記実行精度設定部で設定された実行精度に基づき、前記入力された命令からホストコードを生成すること
を特徴とする請求項１に記載のマルチコアモデルのシミュレーション装置。
【請求項３】
前記実行精度は、命令数、サイクル数、処理時間、命令の種類のいずれかであることを特徴とする請求項２に記載のマルチコアモデルのシミュレーション装置。
【請求項４】
前記全体時刻保持部は、前記スケジューラで選択されたプロセッサコアモデルの処理時刻を、前記自装置全体の処理時刻として保持すること
を特徴とする請求項１乃至３のいずれか１項に記載のマルチコアモデルのシミュレーション装置。
【国際調査報告】
2017149641.tif 000019
2017149641.tif 000020