(57)【要約】  シミュレーション装置（１００）において、選択部（１０１）は、複数のコアのそれぞれに対して個別に作成され、対応するコアで実行される命令を示すコンテキスト情報を繰り返し選択する。模擬部（１０２）は、選択部（１０１）により１つのコアのコンテキスト情報が選択されてから選択部（１０１）により別のコアのコンテキスト情報が選択されるまでの期間に、当該１つのコアのコンテキスト情報で示された命令の実行を模擬する。調整部（１０３）は、少なくとも一部の命令に対して上記期間の長さを個別に定義する定義情報（２５１）を参照し、模擬部（１０２）により実行が模擬される命令が当該少なくとも一部の命令である場合、選択部（１０１）により当該少なくとも一部の命令を実行するコアのコンテキスト情報が選択されてから、参照した定義情報（２５１）に従って、選択部（１０１）に別のコアのコンテキスト情報を選択させるタイミングを調整する。
2016194028.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーション装置であって、
前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択する選択部と、
前記選択部により１つの要素に対応するコンテキスト情報が選択されてから前記選択部により別の要素に対応するコンテキスト情報が選択されるまでの期間に、当該１つの要素に対応するコンテキスト情報で示された命令の実行を模擬する模擬部と、
前記複数の要素で実行される命令のうち少なくとも一部の命令に対して前記期間の長さを個別に定義する定義情報を記憶する記憶媒体と、
前記模擬部により実行が模擬される命令が前記少なくとも一部の命令である場合、前記選択部により前記少なくとも一部の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記記憶媒体に記憶された定義情報に従って、前記選択部に別の要素に対応するコンテキスト情報を選択させるタイミングを調整する調整部と
を備えるシミュレーション装置。
【請求項２】
前記定義情報は、前記模擬部により実行が連続で模擬される命令の数を指定することで前記期間の長さを定義する情報であり、
前記調整部は、前記模擬部により実行が模擬される命令が前記少なくとも一部の命令である場合、前記選択部により前記少なくとも一部の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記模擬部により前記記憶媒体に記憶された定義情報で指定された数の命令の実行が模擬されたときに、前記選択部に別の要素に対応するコンテキスト情報を選択させる請求項１に記載のシミュレーション装置。
【請求項３】
前記定義情報は、前記複数の要素で実行される命令のうち一部の命令に対して前記期間の長さを個別に定義する情報であり、
前記調整部は、前記模擬部により実行が模擬される命令が前記一部の命令とは別の命令である場合、前記選択部により前記別の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記模擬部により固定数の命令の実行が模擬されたときに、前記選択部に別の要素に対応するコンテキスト情報を選択させる請求項２に記載のシミュレーション装置。
【請求項４】
前記調整部は、前記模擬部により実行が模擬される命令が前記別の命令である場合、前記選択部により前記別の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記模擬部により固定数の命令の実行が模擬される前であっても、前記模擬部により分岐又は同期の命令の実行が模擬されたときに、前記選択部に別の要素に対応するコンテキスト情報を選択させる請求項３に記載のシミュレーション装置。
【請求項５】
前記定義情報は、前記システムが有するメモリで前記少なくとも一部の命令が格納されるアドレスの範囲ごとに前記期間の長さを定義する情報である請求項１から４のいずれか１項に記載のシミュレーション装置。
【請求項６】
前記定義情報は、前記プログラムに含まれる関数のうち前記少なくとも一部の命令に対応する関数を識別する識別子ごとに前記期間の長さを定義する情報である請求項１から４のいずれか１項に記載のシミュレーション装置。
【請求項７】
前記複数の要素は、プロセッサの複数のコアである請求項１から６のいずれか１項に記載のシミュレーション装置。
【請求項８】
前記複数の要素は、複数のプロセッサである請求項１から６のいずれか１項に記載のシミュレーション装置。
【請求項９】
プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーション方法であって、
記憶媒体を備えるコンピュータが、前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択し、
前記コンピュータが、１つの要素に対応するコンテキスト情報を選択してから別の要素に対応するコンテキスト情報を選択するまでの期間に、当該１つの要素に対応するコンテキスト情報で示された命令の実行を模擬し、
前記複数の要素で実行される命令のうち少なくとも一部の命令に対して前記期間の長さを個別に定義する定義情報が、前記記憶媒体に記憶され、
前記コンピュータが、実行を模擬する命令が前記少なくとも一部の命令である場合、前記少なくとも一部の命令を実行する要素に対応するコンテキスト情報を選択してから、前記記憶媒体に記憶された定義情報に従って、別の要素に対応するコンテキスト情報を選択するタイミングを調整するシミュレーション方法。
【請求項１０】
プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーションプログラムであって、
記憶媒体を備えるコンピュータに、
前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択する選択処理と、
前記選択処理により１つの要素に対応するコンテキスト情報が選択されてから前記選択処理により別の要素に対応するコンテキスト情報が選択されるまでの期間に、当該１つの要素に対応するコンテキスト情報で示された命令の実行を模擬する模擬処理と
を実行させ、
前記複数の要素で実行される命令のうち少なくとも一部の命令に対して前記期間の長さを個別に定義する定義情報が、前記記憶媒体に記憶され、
前記コンピュータに、
前記模擬処理により実行が模擬される命令が前記少なくとも一部の命令である場合、前記選択処理により前記少なくとも一部の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記記憶媒体に記憶された定義情報に従って、前記選択処理に別の要素に対応するコンテキスト情報を選択させるタイミングを調整する調整処理
を実行させるシミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション装置及びシミュレーション方法及びシミュレーションプログラムに関するものである。
【背景技術】
【０００２】
近年では、ＩＳＳ（Ｉｎｓｔｒｕｃｔｉｏｎ・Ｓｅｔ・Ｓｉｍｕｌａｔｏｒ）を用いることで実際のハードウェアの作成前にソフトウェアのデバッグが可能となっている。ＩＳＳは、ターゲットＣＰＵ（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）の命令セットをホストＣＰＵの命令セットに変換し、変換後の命令セットを実行するシミュレータである。ターゲットＣＰＵとは、シミュレーションの対象となるターゲットマシンのプロセッサのことである。ホストＣＰＵとは、シミュレーションを実行するホストマシンのプロセッサのことである。【０００３】
従来、異なる動作周波数を持つプロセッサコアをそれぞれに含む複数のシステムの同時動作をシミュレーションする方法がある（例えば、特許文献１参照）。この方法のように、マルチコアＣＰＵシステム及びマルチＣＰＵシステムのシミュレーションも可能になっている。マルチコアＣＰＵシステムとは、１つのプロセッサの中に複数のコアが実装されているシステムのことである。マルチＣＰＵシステムとは、複数のプロセッサを持つシステムのことである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−２１９０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の方法では、基準のクロックサイクル時間を決めて、１クロックサイクル時間ごとに複数のシステムのシミュレーションを切り替えて実行する。この方法では、それぞれのシステムについて毎クロックサイクル時間に同期化処理が実行されるため、シミュレーションに時間がかかる。【０００６】
本発明は、シミュレーションを高速化することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の１つの態様に係るシミュレーション装置は、
プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーション装置であって、
前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択する選択部と、
前記選択部により１つの要素に対応するコンテキスト情報が選択されてから前記選択部により別の要素に対応するコンテキスト情報が選択されるまでの期間に、当該１つの要素に対応するコンテキスト情報で示された命令の実行を模擬する模擬部と、
前記複数の要素で実行される命令のうち少なくとも一部の命令に対して前記期間の長さを個別に定義する定義情報を記憶する記憶媒体と、
前記模擬部により実行が模擬される命令が前記少なくとも一部の命令である場合、前記選択部により前記少なくとも一部の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記記憶媒体に記憶された定義情報に従って、前記選択部に別の要素に対応するコンテキスト情報を選択させるタイミングを調整する調整部とを備える。
【発明の効果】
【０００８】
本発明では、どの命令の実行が模擬されるかによって、複数の要素のシミュレーションを切り替えるタイミングが調整される。このため、本発明によれば、シミュレーションを高速化することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態において動作が模擬されるシステムのハードウェア構成例を示す図。
【図２】実施の形態１に係るシミュレーション装置の構成を示すブロック図。
【図３】実施の形態１に係るシミュレーション装置の定義テーブルの例を示す図。
【図４】実施の形態１に係るシミュレーション装置の動作を示すフローチャート。
【図５】実施の形態１に係るシミュレーション装置の同期化処理の例を示す図。
【図６】実施の形態１に係るシミュレーション装置の同期化処理の例を示す図。
【図７】実施の形態２に係るシミュレーション装置の構成を示すブロック図。
【図８】実施の形態２に係るシミュレーション装置の定義テーブルの例を示す図。
【図９】本発明の実施の形態に係るシミュレーション装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【００１０】
図１を参照して、本発明の実施の形態において動作が模擬されるシステム５００のハードウェア構成例を説明する。
【００１１】
システム５００は、マルチコアＣＰＵ５１０と、メモリ５２０と、複数のＩ／Ｏ５３０（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）とを有する。
【００１２】
マルチコアＣＰＵ５１０は、コアＸ５１１と、コアＹ５１２と、コアＸ５１１に接続されたＬ１キャッシュ５１３と、コアＹ５１２に接続されたＬ１キャッシュ５１４と、Ｌ１キャッシュ５１３，５１４に接続されたＬ２キャッシュ５１５とを有する。マルチコアＣＰＵ５１０は、ターゲットＣＰＵに相当する。
【００１３】
Ｉ／Ｏ５３０は、周辺機器とのインタフェース、又は、ＤＭＡ（Ｄｉｒｅｃｔ・Ｍｅｍｏｒｙ・Ａｃｃｅｓｓ）コントローラ等である。
【００１４】
本発明の実施の形態では、マルチコアＣＰＵ５１０を持つシステム５００におけるプログラムの実行がシミュレートされる。マルチコアＣＰＵ５１０は、図１に示したように、複数のコアを持つプロセッサである。「複数のコア」は、プログラムの命令を個別に実行する複数の要素の例である。図１の例のような２つのコアに限らず、３つ以上のコアが「複数の要素」として扱われてもよい。また、複数のプロセッサが「複数の要素」として扱われてもよい。即ち、本発明の実施の形態は、マルチＣＰＵのシステムにおけるプログラムの実行がシミュレートされるように変更されてもよい。
【００１５】
マルチコア又はマルチＣＰＵによるソフトウェアの処理では、同期化が必要なタイミングが限られている。よって、そのタイミングだけ同期化を行えば、問題なくシミュレーションを実行することができる。本発明の実施の形態では、常に１クロックサイクル時間ごとに同期化が実行されるのではなく、基本的には複数クロックサイクル時間ごとに同期化が実行され、適宜同期化のタイミングが調整される。これにより、シミュレーションを高速化することができる。
【００１６】
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一又は相当する部分には、同一符号を付している。実施の形態の説明において、同一又は相当する部分については、その説明を適宜省略又は簡略化する。
【００１７】
実施の形態１．
本実施の形態に係る装置の構成、本実施の形態に係る装置の動作、本実施の形態の効果を順番に説明する。
【００１８】
＊＊＊構成の説明＊＊＊
図２を参照して、本実施の形態に係る装置であるシミュレーション装置１００の構成を説明する。
【００１９】
シミュレーション装置１００は、「複数のコア」としてコアＸ５１１及びコアＹ５１２を有するシステム５００の並列処理の動作を模擬する装置である。
【００２０】
シミュレーション装置１００は、記憶媒体２００を備える。
【００２１】
記憶媒体２００は、コアＸ５１１のコンテキスト情報であるコンテキスト情報Ｘ２０１と、コアＹ５１２のコンテキスト情報であるコンテキスト情報Ｙ２０２とを記憶する。また、記憶媒体２００は、定義情報２５１を記憶する。
【００２２】
シミュレーション装置１００は、さらに、選択部１０１と、模擬部１０２と、調整部１０３とを備える。
【００２３】
選択部１０１は、記憶媒体２００に記憶されたコンテキスト情報を繰り返し選択する。コンテキスト情報は、コアＸ５１１及びコアＹ５１２のそれぞれに対して個別に作成され、対応するコアで実行される命令を示す情報である。即ち、コンテキスト情報Ｘ２０１は、コアＸ５１１で実行される命令を示す情報である。コンテキスト情報Ｙ２０２は、コアＹ５１２で実行される命令を示す情報である。本実施の形態では、２つのコアを持つマルチコアシステムのシミュレーションが実行されるが、コンテキスト情報をコア数分用意することで３つ以上のコアに対応することができる。また、コンテキスト情報をプロセッサ別に用意することで２つ以上のプロセッサにも対応することができる。なお、コンテキスト情報は、記憶媒体２００から取得される代わりに、シミュレーション装置１００の外部から取得されてもよい。
【００２４】
模擬部１０２は、選択部１０１により１つのコアに対応するコンテキスト情報が選択されてから選択部１０１により別のコアに対応するコンテキスト情報が選択されるまでの期間に、当該１つのコアに対応するコンテキスト情報で示された命令の実行を模擬する。即ち、模擬部１０２は、選択部１０１によりコンテキスト情報Ｘ２０１が選択された場合、選択部１０１によりコンテキスト情報Ｙ２０２が選択されるまでの期間に、コンテキスト情報Ｘ２０１で示された命令の実行を模擬する。模擬部１０２は、選択部１０１によりコンテキスト情報Ｙ２０２が選択された場合、選択部１０１によりコンテキスト情報Ｘ２０１が選択されるまでの期間に、コンテキスト情報Ｙ２０２で示された命令の実行を模擬する。「期間」の長さがどのように決められるかについては後述する。
【００２５】
調整部１０３は、記憶媒体２００に記憶された定義情報２５１を参照する。定義情報２５１は、コアＸ５１１及びコアＹ５１２で実行される命令のうち少なくとも一部の命令に対して「期間」の長さを個別に定義する情報である。調整部１０３は、模擬部１０２により実行が模擬される命令が当該少なくとも一部の命令である場合、選択部１０１により当該少なくとも一部の命令を実行するコアに対応するコンテキスト情報が選択されてから、参照した定義情報２５１に従って、選択部１０１に別のコアに対応するコンテキスト情報を選択させるタイミングを調整する。即ち、調整部１０３は、コンテキスト情報Ｘ２０１で示され、かつ、定義情報２５１で個別の期間が定義されている命令の実行が模擬部１０２により模擬される場合、定義された個別の期間が経過したときに選択部１０１によりコンテキスト情報Ｙ２０２が選択されるように選択部１０１を制御する。調整部１０３は、コンテキスト情報Ｙ２０２で示され、かつ、定義情報２５１で個別の期間が定義されている命令の実行が模擬部１０２により模擬される場合、定義された個別の期間が経過したときに選択部１０１によりコンテキスト情報Ｘ２０１が選択されるように選択部１０１を制御する。
【００２６】
本実施の形態において、定義情報２５１は、模擬部１０２により実行が連続で模擬される命令の数を指定することで「期間」の長さを定義する情報である。即ち、定義情報２５１は、個別の期間として個別の命令数を指定する情報である。調整部１０３は、模擬部１０２により実行が模擬される命令が定義情報２５１で個別の命令数が指定されている命令である場合、選択部１０１により当該命令を実行するコアに対応するコンテキスト情報が選択されてから、模擬部１０２により定義情報２５１で指定された数の命令の実行が模擬されたときに、選択部１０１に別のコアに対応するコンテキスト情報を選択させる。即ち、調整部１０３は、コンテキスト情報Ｘ２０１で示され、かつ、定義情報２５１で個別の命令数が指定されている命令の実行が模擬部１０２により模擬される場合、その命令を最初の命令として、模擬部１０２により実行が模擬された命令の数が、指定された命令数に達した時点で、選択部１０１にコンテキスト情報Ｙ２０２を選択させる。調整部１０３は、コンテキスト情報Ｙ２０２で示され、かつ、定義情報２５１で個別の命令数が指定されている命令の実行が模擬部１０２により模擬される場合、その命令を最初の命令として、模擬部１０２により実行が模擬された命令の数が、指定された命令数に達した時点で、選択部１０１にコンテキスト情報Ｘ２０１を選択させる。なお、定義情報２５１は、模擬部１０２により命令の実行が模擬される時間を指定することで「期間」の長さを定義する情報であってもよい。
【００２７】
定義情報２５１は、コアＸ５１１及びコアＹ５１２で実行される命令の全てに対して「期間」の長さを定義する情報であってもよいが、本実施の形態では、コアＸ５１１及びコアＹ５１２で実行される命令のうち一部の命令に対して「期間」の長さを定義する情報である。調整部１０３は、模擬部１０２により実行が模擬される命令が当該一部の命令とは別の命令である場合、選択部１０１により当該別の命令を実行するコアに対応するコンテキスト情報が選択されてから、模擬部１０２により固定数の命令の実行が模擬されたときに、選択部１０１に別のコアに対応するコンテキスト情報を選択させる。ただし、本実施の形態において、調整部１０３は、模擬部１０２により分岐又は同期の命令の実行が模擬されたときには、模擬部１０２により固定数の命令の実行が模擬される前であっても、選択部１０１に別のコアに対応するコンテキスト情報を選択させる。即ち、調整部１０３は、コンテキスト情報Ｘ２０１で示され、かつ、定義情報２５１で個別の命令数が指定されていない命令の実行が模擬部１０２により模擬される場合、その命令を最初の命令として、模擬部１０２により実行が模擬された命令の数が、予め決められた固定数に達するか、或いは、模擬部１０２により分岐又は同期の命令の実行が模擬された時点で、選択部１０１にコンテキスト情報Ｙ２０２を選択させる。調整部１０３は、コンテキスト情報Ｙ２０２で示され、かつ、定義情報２５１で個別の命令数が指定されていない命令の実行が模擬部１０２により模擬される場合、その命令を最初の命令として、模擬部１０２により実行が模擬された命令の数が、予め決められた固定数に達するか、或いは、模擬部１０２により分岐又は同期の命令の実行が模擬された時点で、選択部１０１にコンテキスト情報Ｘ２０１を選択させる。
【００２８】
本実施の形態において、模擬部１０２は、ターゲットＣＰＵの命令コードであるターゲット命令コード３０１を、ホストＣＰＵの命令コードであるホスト命令コード３０２に変換し、ホスト命令コード３０２を実行する。調整部１０３は、模擬部１０２の処理を管理する。
【００２９】
模擬部１０２は、デコード処理部１２１と、変換処理部１２２と、実行処理部１２３とを有する。
【００３０】
デコード処理部１２１は、命令デコード処理を行う。具体的には、デコード処理部１２１は、調整部１０３の指示により、ターゲットＣＰＵが実行可能であるターゲット命令コード３０１のアドレスに関して、ホスト命令コード３０２が記憶媒体２００に格納されているかを確認する。デコード処理部１２１は、そのホスト命令コード３０２が記憶媒体２００に格納されていない場合は、ターゲット命令コード３０１に含まれる命令の種類、ソース及びデスティネーションとなるレジスタ又はメモリアドレスを解釈する。
【００３１】
変換処理部１２２は、命令変換処理を行う。具体的には、変換処理部１２２は、デコード処理部１２１が解釈したターゲット命令コード３０１を、ホストＣＰＵが実行可能である１つ又は複数のホスト命令コード３０２に変換する。変換処理部１２２は、そのホスト命令コード３０２を記憶媒体２００に格納する。
【００３２】
実行処理部１２３は、命令実行処理を行う。具体的には、実行処理部１２３は、変換処理部１２２が記憶媒体２００に格納した、実行すべきターゲット命令コード３０１に対応するホスト命令コード３０２を実行することにより、シミュレーションを行う。
【００３３】
一度実行されたターゲット命令コード３０１のシミュレーションが再度実行されるときは、デコード処理部１２１が記憶媒体２００を検索する。対応するホスト命令コード３０２が格納されていれば、調整部１０３がデコード処理部１２１への命令デコード処理指示と、変換処理部１２２への命令変換処理指示とを出さずに、実行処理部１２３に命令実行処理指示を出す。命令デコード処理と命令変換処理とを省略し、命令実行処理のみを行うことでシミュレーションを高速化することができる。
【００３４】
調整部１０３は、コア決定部１３１と、タイミング管理部１３２とを有する。
【００３５】
コア決定部１３１は、次に実行すべきターゲット命令コード３０１がコアＸ５１１の命令コードとコアＹ５１２の命令コードとのいずれであるかを判断する。コア決定部１３１は、判断結果に応じて、選択すべきコンテキスト情報を選択部１０１に伝達する。コンテキスト情報Ｘ２０１とコンテキスト情報Ｙ２０２は、それぞれターゲットＣＰＵのコアＸ５１１及びコアＹ５１２がターゲット命令コード３０１を実行する際に必要なターゲットＣＰＵの内部レジスタの情報、各コアで保持するアドレスの情報、時刻、割り込みといったリソースに関する情報を含む。シミュレーション実行時にコアを切り替える場合は、コンテキスト情報も切り替えることで、共通のデコード処理部１２１、変換処理部１２２、実行処理部１２３を利用することができる。
【００３６】
選択部１０１は、次に実行すべきターゲット命令コード３０１がコアＸ５１１の命令コードである場合は、コンテキスト情報Ｘ２０１を読み出し、次に実行すべきターゲット命令コード３０１がコアＹ５１２の命令コードである場合は、コンテキスト情報Ｙ２０２を読み出す。選択部１０１は、読み出したコンテキスト情報を、実行処理部１２３の命令実行処理で用いられるリソース情報として提供する。
【００３７】
シミュレーション装置１００は、さらに、時間管理部１０４を備える。
【００３８】
時間管理部１０４は、ターゲットＣＰＵの時間進行をホスト命令コード３０２の実行に合わせてシミュレートする。時間管理部１０４は、１つのホスト命令コード３０２が実行される度に、実行にかかる時間、メモリアクセス、Ｉ／Ｏアクセス等にかかる時間を算出し、算出結果を、コアごとに用意されたコンテキスト情報Ｘ２０１及びコンテキスト情報Ｙ２０２に反映する。各コアの時間情報は、基本的には、一定のタイミングごとに同期化される。各コアの時間情報は、命令実行状況と合わせて性能情報として利用することが可能である。
【００３９】
同期化のタイミングが固定されている場合、１命令ごとといった短い間隔で各コアの時間を同期化することで、時間精度の良いシミュレーションが可能となるが、シミュレーション時間が長くなってしまう。シミュレーション時間が長いと、大きなプログラムのシミュレーションを行う場合、或いは、繰り返しシミュレーションを実行する場合に効率が悪い。各コアの時間を同期化する間隔をある程度長くすることで、シミュレーション時間を短縮できるが、時間精度が悪くなってしまい、性能の分析に使用するデータの採取ができなくなる。また、各コアの時間を同期化する間隔が長すぎると、ソフトウェア動作に問題が生じる。具体的には、後で訂正することができないか、或いは、後で訂正することが許されない計算の誤り、間違ったデータの使用等が発生する。
【００４０】
性能の分析では、プログラム全体の動作を把握したい場合とプログラムの一部の処理状況を分析したい場合とがある。プログラム開発時、ハードウェア開発時、出荷後の性能問題によるトラブル発生時は、特定のタスク又はプロセスの動作状況を詳細に分析したい場合が多い。そこで、本実施の形態では、特定のタスク又はプロセスを実行するターゲット命令コード３０１のアドレスの範囲、求められる精度、同期化の間隔が定義テーブル２５０で予め定義される。同期化の間隔は、前述したように、命令数によって定義される。タイミング管理部１３２は、シミュレーションが実行されるターゲット命令コード３０１のアドレスが定義テーブル２５０で定義された範囲に含まれる場合、各コアの時間を同期化する間隔を定義テーブル２５０で定義された間隔に調整する。タイミング管理部１３２は、シミュレーションが実行されるターゲット命令コード３０１のアドレスが定義テーブル２５０で定義された範囲に含まれない場合、各コアの時間を同期化する間隔をソフトウェア動作に問題ないレベルで長くとることができる。
【００４１】
定義情報２５１は、定義テーブル２５０に格納される。上記のように、本実施の形態では、定義情報２５１が、システム５００が有するメモリ５２０で命令が格納されるアドレスの範囲ごとに「期間」の長さを定義する情報になっている。
【００４２】
図３は、定義テーブル２５０の例を示している。この例において、定義テーブル２５０は、詳細に分析すべき命令が配置される開始アドレス及び終了アドレスと、同期化の間隔の命令数とを示している。なお、開始アドレスと終了アドレスは、開始アドレスと命令のサイズとに置き換えられてもよい。同期化の間隔の命令数は、同期化の間隔の時間に置き換えられてもよい。
【００４３】
本実施の形態では、動的にコア間の時間を同期化するタイミングを調整することで、シミュレーションの対象となるプログラムの命令のうち、性能分析に必要なアドレス領域内に配置された命令については時間精度の良いシミュレーションを行い、性能分析に必要なアドレス領域外に配置された命令については高速なシミュレーションを行うことができる。
【００４４】
なお、本実施の形態において、「複数の要素」は、プロセッサの複数のコアであるが、前述したように、「複数の要素」は、複数のプロセッサであってもよい。即ち、本実施の形態では、マルチコアシステムのシミュレーションが行われるが、同様の方式でマルチＣＰＵシステムのシミュレーションを行ってもよい。
【００４５】
＊＊＊動作の説明＊＊＊
図４を参照して、シミュレーション装置１００の動作を説明する。シミュレーション装置１００の動作は、本実施の形態に係るシミュレーション方法に相当する。シミュレーション装置１００の動作は、本実施の形態に係るシミュレーションプログラムの処理手順に相当する。
【００４６】
ステップＳ１１において、調整部１０３の構成要素であるコア決定部１３１は、次に命令を実行するコアを決める。コア間の命令実行状況に差がない場合、つまり各コアの時間進行が同等の場合、コア決定部１３１は、任意のコアを選択する。コア間の命令実行状況に差がある場合、つまりいずれかのコアの時間が先行している場合、時間が遅れている方のコアを選択する。
【００４７】
ステップＳ１２において、選択部１０１は、ステップＳ１１で選択されたコアのコンテキスト情報を命令実行時の参照情報として選択する。
【００４８】
ステップＳ１１で選択されたコアが次に実行すべき命令のアドレスである実行命令アドレスは、そのコアのコンテキスト情報で定義されている。ステップＳ１３において、実行命令アドレスの命令がホスト命令コード３０２に変換されていないターゲット命令コード３０１であれば、フローはステップＳ１４に進む。実行命令アドレスの命令がホスト命令コード３０２に変換済のターゲット命令コード３０１であれば、フローはステップＳ１９に進む。
【００４９】
ステップＳ１４において、模擬部１０２の構成要素であるデコード処理部１２１は、実行命令アドレスのターゲット命令コード３０１を読み込む。
【００５０】
ステップＳ１５において、デコード処理部１２１は、ステップＳ１４で読み込んだターゲット命令コード３０１をデコードする。
【００５１】
ステップＳ１６において、模擬部１０２の構成要素である変換処理部１２２は、ステップＳ１５でデコードされたターゲット命令コード３０１をホスト命令コード３０２に変換する。このホスト命令コード３０２は、１つ以上の命令を含む命令列となっている。変換処理部１２２は、ステップＳ１２で選択されたコンテキスト情報を参照して、レジスタ等の内部リソース情報をホスト命令コード３０２に埋め込む。
【００５２】
ステップＳ１７において、変換処理部１２２は、ステップＳ１６で得られたホスト命令コード３０２を１つのブロックとして記憶媒体２００に格納する。
【００５３】
ステップＳ１８において、調整部１０３の構成要素であるタイミング管理部１３２は、定義テーブル２５０を参照し、ステップＳ１６で変換された命令の実行命令アドレスが定義テーブル２５０で定義された範囲内にあるかどうかを判断する。タイミング管理部１３２は、実行命令アドレスが定義テーブル２５０で定義された範囲内にある場合、直前のステップＳ１２以降にステップＳ１５で変換された命令の数が定義テーブル２５０で定義された同期化の間隔の命令数未満かどうかを判断する。変換された命令の数が同期化の間隔の命令数未満の場合、フローはステップＳ１３に戻る。変換された命令の数が同期化の間隔の命令数以上の場合、フローはステップＳ１９に進む。タイミング管理部１３２は、実行命令アドレスが定義テーブル２５０で定義された範囲外にある場合、変換された命令の数が一定の命令数未満かどうかを判断する。変換された命令の数が一定の命令数未満の場合、フローはステップＳ１３に戻る。変換された命令の数が一定の命令数以上の場合、フローはステップＳ１９に進む。
【００５４】
フローがステップＳ１８からステップＳ１３に戻ってステップＳ１４からステップＳ１７の処理が行われる場合、即ち、命令デコード処理及び命令変換処理が継続して行われる場合、ステップＳ１６で得られたホスト命令コード３０２は、同一のブロックとして記憶媒体２００に格納される。フローがステップＳ１９に進む時点、即ち、命令デコード処理及び命令変換処理が終了した時点で、そのブロックの登録が完了する。
【００５５】
ステップＳ１９において、模擬部１０２の構成要素である実行処理部１２３は、ステップＳ１７で得られたホスト命令コード３０２を実行する。ホスト命令コード３０２は、ブロックごとに実行される。１つのブロックの実行が完了すると、コア間の時間進行が同期化される。即ち、ステップＳ１９の後、フローはステップＳ１１に戻り、コアＸ５１１及びコアＹ５１２のうち時間進行が遅れている方のコアが、次に命令を実行すべきコアとして選択される。
【００５６】
本実施の形態において、定義テーブル２５０で定義される同期化の間隔は、ステップＳ１４からステップＳ１７の処理で１つのブロックに変換される命令の数である。１つのブロックの実行が終わる度にコア間の同期化が行われるため、ターゲット命令コード３０１のアドレスの範囲によって１つのブロックに変換される命令の数を変えることで、同期化が必要なタイミングで同期化を行うことが可能となる。アドレスが定義テーブル２５０で定義されている範囲に含まれないターゲット命令コード３０１については、予め定義された一定の数の命令が同一のブロックに変換される。そのため、同期化の間隔は長くなるが、同期化の回数が大幅に削減される。よって、高速にホスト命令コード３０２を実行することができる。「予め定義された一定の数」は、数十命令程度である。前述したように、分岐命令又は同期命令でブロックを閉じる方式も併用される。
【００５７】
図５は、シミュレーション装置１００の同期化処理の例を示している。この例において、コアＸ５１１の命令０〜２のアドレスと、コアＹ５１２の命令０〜２のアドレスは、いずれも定義テーブル２５０で定義された範囲内にあるものとする。それらの範囲について定義テーブル２５０で定義された同期化の間隔の命令数は、１つであるとする。
【００５８】
最初にコアＸ５１１が選択され、コアＸ５１１の命令０の実行が模擬されたとする。コアＸ５１１の命令０については、同期化の間隔の命令数が１つであるから、コアＸ５１１の命令０の実行が模擬された時点で、１つのブロックの実行が完了する。コアＸ５１１の方が命令１つ分だけ時間が進んでいるという状況が生じているため、次にコアＹ５１２が選択され、コアＹ５１２の命令０の実行が模擬される。これにより、コアＸ５１１及びコアＹ５１２の時間が同期化される。なお、最初にコアＹ５１２が選択され、コアＹ５１２の命令０の実行が模擬されてもよい。
【００５９】
コアＹ５１２の命令０についても、同期化の間隔の命令数が１つであるから、コアＹ５１２の命令０の実行が模擬された時点で、１つのブロックの実行が完了する。コアＸ５１１及びコアＹ５１２の時間が同期化された直後であるため、次にコアＸ５１１が選択されてもよいし、コアＹ５１２が選択されてもよい。ここでは、コアＸ５１１が選択され、コアＸ５１１の命令１の実行が模擬されたとする。コアＸ５１１の命令１についても、同期化の間隔の命令数が１つであるから、コアＸ５１１の命令１の実行が模擬された時点で、１つのブロックの実行が完了する。コアＸ５１１の方が命令１つ分だけ時間が進んでいるという状況が再び生じているため、次にコアＹ５１２が選択され、コアＹ５１２の命令１の実行が模擬される。これにより、コアＸ５１１及びコアＹ５１２の時間が同期化される。以降、同じように、コアＹ５１２の命令２とコアＹ５１２の命令２とが順番に実行される。なお、命令ごとの時間進行が異なる場合は、コアの選択時に時刻が比較される。即ち、時刻が先行しているコアが選択される。
【００６０】
図６は、シミュレーション装置１００の同期化処理の別の例を示している。この例において、コアＸ５１１の命令０〜９のアドレスと、コアＹ５１２の命令０〜９のアドレスは、いずれも定義テーブル２５０で定義された範囲内にあるものとする。それらの範囲について定義テーブル２５０で定義された同期化の間隔の命令数は、５つであるとする。なお、コアＸ５１１の命令０〜９のアドレスと、コアＹ５１２の命令０〜９のアドレスが、定義テーブル２５０で定義された範囲外にあっても、「予め定義された一定の数」が５つであれば、処理は図６に示したものと同じになる。
【００６１】
最初にコアＸ５１１が選択され、コアＸ５１１の命令０の実行が模擬されたとする。コアＸ５１１の命令０〜４については、同期化の間隔の命令数が５つであるから、コアＸ５１１の命令０の実行が模擬された時点では、１つのブロックの実行が完了していない。よって、続けてコアＸ５１１の命令１〜４の実行が模擬される。コアＸ５１１の命令４の実行が模擬された時点で、１つのブロックの実行が完了する。コアＸ５１１の方が命令５つ分だけ時間が進んでいるという状況が生じているため、次にコアＹ５１２が選択され、コアＹ５１２の命令０の実行が模擬される。コアＹ５１２の命令０〜４についても、同期化の間隔の命令数が１つであるから、コアＹ５１２の命令０の実行が模擬された時点では、１つのブロックの実行が完了していない。よって、続けてコアＹ５１２の命令１〜４の実行が模擬される。これにより、コアＸ５１１及びコアＹ５１２の時間が同期化される。なお、最初にコアＹ５１２が選択され、コアＹ５１２の命令０の実行が模擬されてもよい。
【００６２】
コアＹ５１２の命令４の実行が模擬された時点で、１つのブロックの実行が完了する。コアＸ５１１及びコアＹ５１２の時間が同期化された直後であるため、次にコアＸ５１１が選択されてもよいし、コアＹ５１２が選択されてもよい。ここでは、コアＸ５１１が選択され、コアＸ５１１の命令５の実行が模擬されたとする。コアＸ５１１の命令５〜９についても、同期化の間隔の命令数が５つであるから、コアＸ５１１の命令５の実行が模擬された時点では、１つのブロックの実行が完了していない。よって、続けてコアＸ５１１の命令６〜９の実行が模擬される。コアＸ５１１の命令９の実行が模擬された時点で、１つのブロックの実行が完了する。コアＸ５１１の方が命令５つ分だけ時間が進んでいるという状況が再び生じているため、次にコアＹ５１２が選択され、コアＹ５１２の命令５の実行が模擬される。コアＹ５１２の命令５〜９についても、同期化の間隔の命令数が５つであるから、コアＹ５１２の命令５の実行が模擬された時点では、１つのブロックの実行が完了していない。よって、続けてコアＹ５１２の命令６〜９の実行が模擬される。これにより、コアＸ５１１及びコアＹ５１２の時間が同期化される。
【００６３】
＊＊＊効果の説明＊＊＊
本実施の形態では、どの命令の実行が模擬されるかによって、コアＸ５１１及びコアＹ５１２のシミュレーションを切り替えるタイミングが調整される。このため、本実施の形態によれば、シミュレーションを高速化することが可能となる。
【００６４】
実施の形態２．
本実施の形態について、主に実施の形態１との差異を説明する。
【００６５】
図７を参照して、本実施の形態に係るシミュレーション装置１００の構成を説明する。
【００６６】
実施の形態１と同じように、定義情報２５１は、定義テーブル２５０に格納される。実施の形態１では、定義情報２５１が、システム５００が有するメモリ５２０で命令が格納されるアドレスの範囲ごとに「期間」の長さを定義する情報になっている。一方、本実施の形態では、定義情報２５１が、システム５００により実行されるプログラムに含まれる関数のうち少なくとも一部の命令に対応する関数を識別するＩＤ（識別子）ごとに「期間」の長さを定義する情報になっている。
【００６７】
図８は、定義テーブル２５０の例を示している。この例において、定義テーブル２５０は、詳細に分析すべき命令を実行する関数のＩＤと、同期化の間隔の命令数とを示している。なお、同期化の間隔の命令数は、同期化の間隔の時間に置き換えられてもよい。
【００６８】
図７に示したように、本実施の形態では、記憶媒体２００に関数配置マップ２６０が記憶される。関数配置マップ２６０は、シミュレートされるプログラムをコンパイル及びリンクしたときに生成される関数のアドレスマップ情報を含む。
【００６９】
シミュレーション装置１００の動作は、ステップＳ１８を除いて、図４に示した実施の形態１のものと同じである。
【００７０】
ステップＳ１８において、調整部１０３の構成要素であるタイミング管理部１３２は、関数配置マップ２６０の情報から、ステップＳ１６で変換された命令を実行する関数である実行タスクを判別する。タイミング管理部１３２は、定義テーブル２５０を参照し、判別した実行タスクが定義テーブル２５０で定義されているかどうかを判断する。タイミング管理部１３２は、実行タスクが定義テーブル２５０で定義されている場合、直前のステップＳ１２以降にステップＳ１５で変換された命令の数が定義テーブル２５０で定義された同期化の間隔の命令数未満かどうかを判断する。変換された命令の数が同期化の間隔の命令数未満の場合、フローはステップＳ１３に戻る。変換された命令の数が同期化の間隔の命令数以上の場合、フローはステップＳ１９に進む。タイミング管理部１３２は、実タスクが定義テーブル２５０で定義されていない場合、変換された命令の数が一定の命令数未満かどうかを判断する。変換された命令の数が一定の命令数未満の場合、フローはステップＳ１３に戻る。変換された命令の数が一定の命令数以上の場合、フローはステップＳ１９に進む。
【００７１】
本実施の形態において、定義テーブル２５０で定義される同期化の間隔は、実施の形態１と同じように、ステップＳ１４からステップＳ１７の処理で１つのブロックに変換される命令の数である。１つのブロックの実行が終わる度にコア間の同期化が行われるため、ターゲット命令コード３０１の関数によって１つのブロックに変換される命令の数を変えることで、同期化が必要なタイミングで同期化を行うことが可能となる。関数が定義テーブル２５０で定義されていないターゲット命令コード３０１については、予め定義された一定の数の命令が同一のブロックに変換される。そのため、同期化の間隔は長くなるが、同期化の回数が大幅に削減される。よって、高速にホスト命令コード３０２を実行することができる。本実施の形態においても、分岐命令又は同期命令でブロックを閉じる方式が併用される。
【００７２】
以下では、図９を参照して、本発明の実施の形態に係るシミュレーション装置１００のハードウェア構成例を説明する。
【００７３】
シミュレーション装置１００は、コンピュータである。シミュレーション装置１００は、プロセッサ９０１、補助記憶装置９０２、メモリ９０３、通信装置９０４、入力インタフェース９０５、ディスプレイインタフェース９０６といったハードウェアを備える。プロセッサ９０１は、信号線９１０を介して他のハードウェアと接続され、これら他のハードウェアを制御する。入力インタフェース９０５は、入力装置９０７に接続されている。ディスプレイインタフェース９０６は、ディスプレイ９０８に接続されている。
【００７４】
プロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ・Ｃｉｒｃｕｉｔ）である。プロセッサ９０１は、ホストＣＰＵに相当する。
【００７５】
補助記憶装置９０２は、例えば、ＲＯＭ（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）、フラッシュメモリ、又は、ＨＤＤ（Ｈａｒｄ・Ｄｉｓｋ・Ｄｒｉｖｅ）である。補助記憶装置９０２は、記憶媒体２００に相当する。
【００７６】
メモリ９０３は、例えば、ＲＡＭ（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）である。メモリ９０３は、記憶媒体２００に相当する。
【００７７】
通信装置９０４は、データを受信するレシーバ９２１及びデータを送信するトランスミッタ９２２を含む。通信装置９０４は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ・Ｉｎｔｅｒｆａｃｅ・Ｃａｒｄ）である。
【００７８】
入力インタフェース９０５は、入力装置９０７のケーブル９１１が接続されるポートである。入力インタフェース９０５は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ・Ｓｅｒｉａｌ・Ｂｕｓ）端子である。
【００７９】
ディスプレイインタフェース９０６は、ディスプレイ９０８のケーブル９１２が接続されるポートである。ディスプレイインタフェース９０６は、例えば、ＵＳＢ端子又はＨＤＭＩ（登録商標）（Ｈｉｇｈ・Ｄｅｆｉｎｉｔｉｏｎ・Ｍｕｌｔｉｍｅｄｉａ・Ｉｎｔｅｒｆａｃｅ）端子である。
【００８０】
入力装置９０７は、例えば、マウス、タッチペン、キーボード、又は、タッチパネルである。
【００８１】
ディスプレイ９０８は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ・Ｃｒｙｓｔａｌ・Ｄｉｓｐｌａｙ）である。
【００８２】
補助記憶装置９０２には、選択部１０１、模擬部１０２、調整部１０３といった「部」の機能を実現するプログラムが記憶されている。このプログラムは、メモリ９０３にロードされ、プロセッサ９０１に読み込まれ、プロセッサ９０１によって実行される。補助記憶装置９０２には、ＯＳ（Ｏｐｅｒａｔｉｎｇ・Ｓｙｓｔｅｍ）も記憶されている。ＯＳの少なくとも一部がメモリ９０３にロードされ、プロセッサ９０１はＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。
【００８３】
図９では、１つのプロセッサ９０１が示されているが、シミュレーション装置１００が複数のプロセッサ９０１を備えていてもよい。そして、複数のプロセッサ９０１が「部」の機能を実現するプログラムを連携して実行してもよい。
【００８４】
「部」の処理の結果を示す情報やデータや信号値や変数値は、補助記憶装置９０２、メモリ９０３、又は、プロセッサ９０１内のレジスタ又はキャッシュメモリに記憶される。
【００８５】
「部」を「サーキットリ」で提供してもよい。また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。「回路」及び「サーキットリ」は、プロセッサ９０１だけでなく、ロジックＩＣ、ＧＡ（Ｇａｔｅ・Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ・Ｓｐｅｃｉｆｉｃ・Ｉｎｔｅｇｒａｔｅｄ・Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ・Ｇａｔｅ・Ａｒｒａｙ）といった他の種類の処理回路をも包含する概念である。
【００８６】
以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、いくつかを組み合わせて実施しても構わない。或いは、これらの実施の形態のうち、いずれか１つ又はいくつかを部分的に実施しても構わない。例えば、これらの実施の形態の説明において「部」として説明するもののうち、いずれか１つのみを採用してもよいし、いくつかの任意の組み合わせを採用してもよい。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【００８７】
１００  シミュレーション装置、１０１  選択部、１０２  模擬部、１０３  調整部、１０４  時間管理部、１２１  デコード処理部、１２２  変換処理部、１２３  実行処理部、１３１  コア決定部、１３２  タイミング管理部、２００  記憶媒体、２０１  コンテキスト情報Ｘ、２０２  コンテキスト情報Ｙ、２５０  定義テーブル、２５１  定義情報、２６０  関数配置マップ、３０１  ターゲット命令コード、３０２  ホスト命令コード、５００  システム、５１０  マルチコアＣＰＵ、５１１  コアＸ、５１２  コアＹ、５１３  Ｌ１キャッシュ、５１４  Ｌ１キャッシュ、５１５  Ｌ２キャッシュ、５２０  メモリ、５３０  Ｉ／Ｏ、９０１  プロセッサ、９０２  補助記憶装置、９０３  メモリ、９０４  通信装置、９０５  入力インタフェース、９０６  ディスプレイインタフェース、９０７  入力装置、９０８  ディスプレイ、９１０  信号線、９１１  ケーブル、９１２  ケーブル、９２１  レシーバ、９２２  トランスミッタ。
【図１】
2016194028.tif 000003
【図２】
2016194028.tif 000004
【図３】
2016194028.tif 000005
【図４】
2016194028.tif 000006
【図５】
2016194028.tif 000007
【図６】
2016194028.tif 000008
【図７】
2016194028.tif 000009
【図８】
2016194028.tif 000010
【図９】
2016194028.tif 000011
【手続補正書】
【提出日】平成29年3月27日(2017.3.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーション装置であって、
前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択する選択部と、
前記選択部により１つの要素に対応するコンテキスト情報が選択されてから前記選択部により別の要素に対応するコンテキスト情報が選択されるまでの期間に、当該１つの要素に対応するコンテキスト情報で示された命令の実行を模擬する模擬部と、
前記複数の要素で実行される命令のうち一部の命令に対して前記模擬部により実行が連続で模擬される命令の数を指定することで前記期間の長さを個別に定義する定義情報を記憶する記憶媒体と、
前記模擬部により実行が模擬される命令が前記一部の命令である場合、前記選択部により前記一部の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記模擬部により前記記憶媒体に記憶された定義情報で指定された数の命令の実行が模擬されたときに、前記選択部に別の要素に対応するコンテキスト情報を選択させ、前記模擬部により実行が模擬される命令が前記一部の命令とは別の命令である場合、前記選択部により前記別の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記模擬部により固定数の命令の実行が模擬されたときに、前記選択部に別の要素に対応するコンテキスト情報を選択させる調整部と
を備えるシミュレーション装置。
【請求項２】
前記調整部は、前記模擬部により実行が模擬される命令が前記別の命令である場合、前記選択部により前記別の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記模擬部により固定数の命令の実行が模擬される前であっても、前記模擬部により分岐又は同期の命令の実行が模擬されたときに、前記選択部に別の要素に対応するコンテキスト情報を選択させる請求項１に記載のシミュレーション装置。
【請求項３】
プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーション装置であって、
前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択する選択部と、
前記選択部により１つの要素に対応するコンテキスト情報が選択されてから前記選択部により別の要素に対応するコンテキスト情報が選択されるまでの期間に、当該１つの要素に対応するコンテキスト情報で示された命令の実行を模擬する模擬部と、
前記複数の要素で実行される命令のうち少なくとも一部の命令に対して前記期間の長さを個別に定義する定義情報を記憶する記憶媒体と、
前記模擬部により実行が模擬される命令が前記少なくとも一部の命令である場合、前記選択部により前記少なくとも一部の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記記憶媒体に記憶された定義情報に従って、前記選択部に別の要素に対応するコンテキスト情報を選択させるタイミングを調整する調整部と
を備え、
前記定義情報は、前記システムが有するメモリで前記少なくとも一部の命令が格納されるアドレスの範囲ごとに前記期間の長さを定義する情報であるシミュレーション装置。
【請求項４】
プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーション装置であって、
前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択する選択部と、
前記選択部により１つの要素に対応するコンテキスト情報が選択されてから前記選択部により別の要素に対応するコンテキスト情報が選択されるまでの期間に、当該１つの要素に対応するコンテキスト情報で示された命令の実行を模擬する模擬部と、
前記複数の要素で実行される命令のうち少なくとも一部の命令に対して前記期間の長さを個別に定義する定義情報を記憶する記憶媒体と、
前記模擬部により実行が模擬される命令が前記少なくとも一部の命令である場合、前記選択部により前記少なくとも一部の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記記憶媒体に記憶された定義情報に従って、前記選択部に別の要素に対応するコンテキスト情報を選択させるタイミングを調整する調整部と
を備え、
前記定義情報は、前記プログラムに含まれる関数のうち前記少なくとも一部の命令に対応する関数を識別する識別子ごとに前記期間の長さを定義する情報であるシミュレーション装置。
【請求項５】
前記複数の要素は、プロセッサの複数のコアである請求項１から４のいずれか１項に記載のシミュレーション装置。
【請求項６】
前記複数の要素は、複数のプロセッサである請求項１から４のいずれか１項に記載のシミュレーション装置。
【請求項７】
プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーション方法であって、
記憶媒体を備えるコンピュータが、前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択し、
前記コンピュータが、１つの要素に対応するコンテキスト情報を選択してから別の要素に対応するコンテキスト情報を選択するまでの期間に、当該１つの要素に対応するコンテキスト情報で示された命令の実行を模擬し、
前記複数の要素で実行される命令のうち一部の命令に対して前記コンピュータにより実行が連続で模擬される命令の数を指定することで前記期間の長さを個別に定義する定義情報が、前記記憶媒体に記憶され、
前記コンピュータが、実行を模擬する命令が前記一部の命令である場合、前記一部の命令を実行する要素に対応するコンテキスト情報を選択してから、前記記憶媒体に記憶された定義情報で指定された数の命令の実行を模擬したときに、別の要素に対応するコンテキスト情報を選択し、実行を模擬する命令が前記一部の命令とは別の命令である場合、前記別の命令を実行する要素に対応するコンテキスト情報を選択してから、固定数の命令の実行を模擬したときに、別の要素に対応するコンテキスト情報を選択するシミュレーション方法。
【請求項８】
プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーション方法であって、
記憶媒体を備えるコンピュータが、前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択し、
前記コンピュータが、１つの要素に対応するコンテキスト情報を選択してから別の要素に対応するコンテキスト情報を選択するまでの期間に、当該１つの要素に対応するコンテキスト情報で示された命令の実行を模擬し、
前記複数の要素で実行される命令のうち少なくとも一部の命令に対して前記期間の長さを個別に定義する定義情報が、前記記憶媒体に記憶され、
前記コンピュータが、実行を模擬する命令が前記少なくとも一部の命令である場合、前記少なくとも一部の命令を実行する要素に対応するコンテキスト情報を選択してから、前記記憶媒体に記憶された定義情報に従って、別の要素に対応するコンテキスト情報を選択するタイミングを調整し、
前記定義情報は、前記システムが有するメモリで前記少なくとも一部の命令が格納されるアドレスの範囲ごとに前記期間の長さを定義する情報であるシミュレーション方法。
【請求項９】
プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーション方法であって、
記憶媒体を備えるコンピュータが、前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択し、
前記コンピュータが、１つの要素に対応するコンテキスト情報を選択してから別の要素に対応するコンテキスト情報を選択するまでの期間に、当該１つの要素に対応するコンテキスト情報で示された命令の実行を模擬し、
前記複数の要素で実行される命令のうち少なくとも一部の命令に対して前記期間の長さを個別に定義する定義情報が、前記記憶媒体に記憶され、
前記コンピュータが、実行を模擬する命令が前記少なくとも一部の命令である場合、前記少なくとも一部の命令を実行する要素に対応するコンテキスト情報を選択してから、前記記憶媒体に記憶された定義情報に従って、別の要素に対応するコンテキスト情報を選択するタイミングを調整し、
前記定義情報は、前記プログラムに含まれる関数のうち前記少なくとも一部の命令に対応する関数を識別する識別子ごとに前記期間の長さを定義する情報であるシミュレーション方法。
【請求項１０】
プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーションプログラムであって、
記憶媒体を備えるコンピュータに、
前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択する選択処理と、
前記選択処理により１つの要素に対応するコンテキスト情報が選択されてから前記選択処理により別の要素に対応するコンテキスト情報が選択されるまでの期間に、当該１つの要素に対応するコンテキスト情報で示された命令の実行を模擬する模擬処理と
を実行させ、
前記複数の要素で実行される命令のうち一部の命令に対して前記模擬処理により実行が連続で模擬される命令の数を指定することで前記期間の長さを個別に定義する定義情報が、前記記憶媒体に記憶され、
前記コンピュータに、
前記模擬処理により実行が模擬される命令が前記一部の命令である場合、前記選択処理により前記一部の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記模擬処理により前記記憶媒体に記憶された定義情報で指定された数の命令の実行が模擬されたときに、前記選択処理に別の要素に対応するコンテキスト情報を選択させ、前記模擬処理により実行が模擬される命令が前記一部の命令とは別の命令である場合、前記選択処理により前記別の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記模擬処理により固定数の命令の実行が模擬されたときに、前記選択処理に別の要素に対応するコンテキスト情報を選択させる調整処理
を実行させるシミュレーションプログラム。
【請求項１１】
プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーションプログラムであって、
記憶媒体を備えるコンピュータに、
前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択する選択処理と、
前記選択処理により１つの要素に対応するコンテキスト情報が選択されてから前記選択処理により別の要素に対応するコンテキスト情報が選択されるまでの期間に、当該１つの要素に対応するコンテキスト情報で示された命令の実行を模擬する模擬処理と
を実行させ、
前記複数の要素で実行される命令のうち少なくとも一部の命令に対して前記期間の長さを個別に定義する定義情報が、前記記憶媒体に記憶され、
前記コンピュータに、
前記模擬処理により実行が模擬される命令が前記少なくとも一部の命令である場合、前記選択処理により前記少なくとも一部の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記記憶媒体に記憶された定義情報に従って、前記選択処理に別の要素に対応するコンテキスト情報を選択させるタイミングを調整する調整処理
を実行させ、
前記定義情報は、前記システムが有するメモリで前記少なくとも一部の命令が格納されるアドレスの範囲ごとに前記期間の長さを定義する情報であるシミュレーションプログラム。
【請求項１２】
プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーションプログラムであって、
記憶媒体を備えるコンピュータに、
前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択する選択処理と、
前記選択処理により１つの要素に対応するコンテキスト情報が選択されてから前記選択処理により別の要素に対応するコンテキスト情報が選択されるまでの期間に、当該１つの要素に対応するコンテキスト情報で示された命令の実行を模擬する模擬処理と
を実行させ、
前記複数の要素で実行される命令のうち少なくとも一部の命令に対して前記期間の長さを個別に定義する定義情報が、前記記憶媒体に記憶され、
前記コンピュータに、
前記模擬処理により実行が模擬される命令が前記少なくとも一部の命令である場合、前記選択処理により前記少なくとも一部の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記記憶媒体に記憶された定義情報に従って、前記選択処理に別の要素に対応するコンテキスト情報を選択させるタイミングを調整する調整処理
を実行させ、
前記定義情報は、前記プログラムに含まれる関数のうち前記少なくとも一部の命令に対応する関数を識別する識別子ごとに前記期間の長さを定義する情報であるシミュレーションプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００６１
【補正方法】変更
【補正の内容】
【００６１】
最初にコアＸ５１１が選択され、コアＸ５１１の命令０の実行が模擬されたとする。コアＸ５１１の命令０〜４については、同期化の間隔の命令数が５つであるから、コアＸ５１１の命令０の実行が模擬された時点では、１つのブロックの実行が完了していない。よって、続けてコアＸ５１１の命令１〜４の実行が模擬される。コアＸ５１１の命令４の実行が模擬された時点で、１つのブロックの実行が完了する。コアＸ５１１の方が命令５つ分だけ時間が進んでいるという状況が生じているため、次にコアＹ５１２が選択され、コアＹ５１２の命令０の実行が模擬される。コアＹ５１２の命令０〜４についても、同期化の間隔の命令数が５つであるから、コアＹ５１２の命令０の実行が模擬された時点では、１つのブロックの実行が完了していない。よって、続けてコアＹ５１２の命令１〜４の実行が模擬される。これにより、コアＸ５１１及びコアＹ５１２の時間が同期化される。なお、最初にコアＹ５１２が選択され、コアＹ５１２の命令０の実行が模擬されてもよい。
【国際調査報告】
2016194028.tif 000012
2016194028.tif 000013