(57)【要約】  プログラム分割部（２００）は、複数の命令列が含まれるプログラム（１００）を複数の基本ブロックに分割する。命令実行遅延時間算出部（５０）は、プログラム（１００）内で命令実行遅延時間の算出の対象の範囲として指定された測定区間が示される測定区間情報（５２０）を取得し、複数の基本ブロックから測定区間に含まれる基本ブロックを抽出し、抽出した基本ブロックの命令実行遅延時間を算出する。
2018163387.tif 000002
【特許請求の範囲】
【請求項１】
複数の命令列が含まれるプログラムを複数のブロックに分割するプログラム分割部と、
前記プログラム内で命令実行遅延時間の算出の対象の範囲として指定された算出対象範囲が示される算出対象範囲情報を取得し、前記複数のブロックから前記算出対象範囲に含まれるブロックを抽出し、抽出したブロックの命令実行遅延時間を算出する命令実行遅延時間算出部とを有する解析装置。
【請求項２】
前記命令実行遅延時間算出部は、
抽出したブロックを実行する際のパイプラインハザードの発生状況を推定して、抽出したブロックの命令実行遅延時間を算出する請求項１に記載の解析装置。
【請求項３】
前記解析装置は、更に、
ブロックごとに、ブロックを実行する際のキャッシュヒット状況を推定して、メモリアクセス遅延時間を算出するメモリアクセス遅延時間算出部と、
ブロックごとに、前記命令実行遅延時間算出部により算出された命令実行遅延時間と、前記メモリアクセス遅延時間算出部により算出されたメモリアクセス遅延時間とを加算する遅延時間加算部とを有する請求項１に記載の解析装置。
【請求項４】
前記命令実行遅延時間算出部は、
前記算出対象範囲に含まれるブロックとして複数のブロックを抽出した場合に、抽出したブロックごとに、記述内容が同じブロックに対して命令実行遅延時間が算出済みであるか否かを判定し、記述内容が同じブロックに対して命令実行遅延時間が算出済みであるブロックに対しては命令実行遅延時間の算出を省略して、算出済みの命令実行遅延時間を適用する請求項１に記載の解析装置。
【請求項５】
前記メモリアクセス遅延時間算出部は、
命令メモリへのアクセスでのキャッシュヒット状況及びデータメモリへのアクセスでのキャッシュヒット状況を推定して、前記命令メモリへのアクセスでのメモリアクセス遅延時間及び前記データメモリへのアクセスでのメモリアクセス遅延時間を算出する請求項３に記載の解析装置。
【請求項６】
コンピュータが、複数の命令列が含まれるプログラムを複数のブロックに分割し、
前記コンピュータが、前記プログラム内で命令実行遅延時間の算出の対象の範囲として指定された算出対象範囲が示される算出対象範囲情報を取得し、前記複数のブロックから前記算出対象範囲に含まれるブロックを抽出し、抽出したブロックの命令実行遅延時間を算出する解析方法。
【請求項７】
複数の命令列が含まれるプログラムを複数のブロックに分割するプログラム分割処理と、
前記プログラム内で命令実行遅延時間の算出の対象の範囲として指定された算出対象範囲が示される算出対象範囲情報を取得し、前記複数のブロックから前記算出対象範囲に含まれるブロックを抽出し、抽出したブロックの命令実行遅延時間を算出する命令実行遅延時間算出処理とをコンピュータに実行させる解析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの性能を解析する技術に関する。
【背景技術】
【０００２】
電子デバイスを用いたシステム、特に組み込みシステムの開発では、ハードウェア、ソフトウェア両方の開発が必要となる。しかしながら、一般的に、ソフトウェアは、ソフトウェアを実行するハードウェアが完成しないと動作させることができない。このため、従来は、ソフトウェア及びハードウェアの開発が伴うシステムの開発では、システムを構成するハードウェアの設計を先に完了させ、次に、完成したハードウェア上でソフトウェアを動かしてシステム全体の動作確認を行う手法がとられていた。【０００３】
このような従来の開発手法では、ソフトウェアの検証を含めたシステム全体の動作検証が開発工程の最後の段階に行われることから、不具合が発覚した場合の手戻りによるリスクが大きいという問題が潜在的に存在する。この潜在的なリスクは、システムが大きく、複雑になるに従って、システムの品質、並びに開発コストに強く影響するようになる。
近年、電子技術の発展により電子部品は小型化、高性能化してきている。一方で、これらの電子部品を用いて構成されるシステムは大きく、複雑化しており、前記した従来の開発手法での潜在的リスクが無視できなくなってきている。特に開発の後工程となるソフトウェアの開発フェーズにおいて、設計されたハードウェアでは所望の性能を達成することが困難であると判明した場合には、ハードウェアの再設計が必要になる場合がある。また、ハードウェアの再設計を伴わずにソフトウェアが性能を達成できる方法を捻出できた場合も、ソフトウェアの開発工数がその分増加してしまうということがある。
このような事態を回避するために、開発者は、システムアーキテクチャを考える際に、入念な机上検討によってソフトウェア実行性能の見積もりを行う。しかしながら、ソフトウェアの実行性能は、ソフトウェアを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のアーキテクチャ、並びに、周辺装置の構成に左右されるため、正確な見積もりを行うことは非常に困難である。【０００４】
この問題を解決するために、ＣＰＵの動作のうち性能に関わる動作を簡易的に模擬するモデルにソフトウェアを入力してＣＰＵの命令実行状況を解析することにより、ソフトウェアの実行性能を見積もる方法が考案されている。【０００５】
例えば、特許文献１には、精度よくソフトウェア（特許文献１では、機械語命令列と表記）の実行性能を見積もる方法が開示されている。具体的には、特許文献１には、ＣＰＵの命令実行に伴うパイプラインハザードの発生を解析することによって、あるソフトウェアの実行性能をパイプラインハザードによるオーバーヘッドを含めて見積もる方法が開示されている。【０００６】
更に、特許文献２にも、精度よくソフトウェアの実行性能を見積もる方法が開示されている。具体的には、特許文献２には、ソフトウェアの実行に伴うキャッシュメモリの状況を解析し、キャッシュミスヒットの場合のペナルティを見積もりの中に含めることで、精度よくソフトウェアの実行性能を見積もる方法が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平７−０２１０６１号公報
【特許文献２】特開２０１５−１３００６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１及び特許文献２のいずれの方法も、ＣＰＵの動作を実動作に近いレベルで模擬するため、ソフトウェアの分析に時間を要する。特に、近年のシステムはＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の搭載が当たり前のようになってきている。ソフトウェアの性能見積もりは、ＯＳ動作も加味して見積もる必要があるが、特許文献１の方法及び特許文献２の方法では、ＯＳの分析だけでも長い時間を要してしまう。
しかしながら、実際に実行性能の見積もりが必要なのは、ＯＳ起動後の数秒間であったり、システム全体の性能を決めるような一部のソフトウェアであることが多い。このため、特許文献１及び特許文献２の方法では、必ずしも必要ではない実行性能の見積もりに多大な時間及び演算リソースが費やされており、効率が悪いという課題がある。【０００９】
本発明は、上記のような課題を解決することを主な目的の一つとしている。より具体的には、効率的にプログラムの性能見積もりを行うことを主な目的とする。
【課題を解決するための手段】
【００１０】
本発明に係る解析装置は、
複数の命令列が含まれるプログラムを複数のブロックに分割するプログラム分割部と、
前記プログラム内で命令実行遅延時間の算出の対象の範囲として指定された算出対象範囲が示される算出対象範囲情報を取得し、前記複数のブロックから前記算出対象範囲に含まれるブロックを抽出し、抽出したブロックの命令実行遅延時間を算出する命令実行遅延時間算出部とを有する。
【発明の効果】
【００１１】
本発明では、命令実行遅延時間の算出が必要なブロックに限定して命令実行遅延時間を行う。このため、本発明によれば、効率的にプログラムの性能見積もりを行うことができる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１に係るプログラム性能見積もり装置の機能構成例を示す図。
【図２】実施の形態１に係るプログラム性能見積もり装置の動作例を示すフローチャート。
【図３】実施の形態１に係るステップＳ１００の詳細を示すフローチャート。
【図４】実施の形態１に係るステップＳ８０の詳細を示すフローチャート。
【図５】実施の形態１に係る基本ブロック情報の例を示す図。
【図６】実施の形態１に係るステップＳ９０の詳細を示すフローチャート。
【図７】実施の形態１に係るアクセス先情報の例を示す図。
【図８】実施の形態１に係る実行順序情報の例を示す図。
【図９】実施の形態１に係る実行遅延情報の例を示す図。
【図１０】実施の形態１に係るプログラム性能見積もり装置のハードウェア構成例を示す図。
【図１１】実施の形態１に係るプログラム性能見積もり装置の機能構成とハードウェア構成との関係を示す図。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分または相当する部分を示す。
【００１４】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１は、本実施の形態に係るプログラム性能見積もり装置１０の機能構成例を示す。
また、図１０は、本実施の形態に係るプログラム性能見積もり装置１０のハードウェア構成例を示す。
プログラム性能見積もり装置１０は、解析装置に相当する。また、プログラム性能見積もり装置１０により行われる動作は、解析方法及び解析プログラムに相当する。
【００１５】
先ず、図１０を参照して、プログラム性能見積もり装置１０のハードウェア構成例を説明する。
【００１６】
プログラム性能見積もり装置１０は、コンピュータである。
プログラム性能見積もり装置１０では、図１０に示すように、プロセッサ９００、記憶装置９０１、通信インタフェース９０２、及び入出力インタフェース９０３がバス９０４に接続されている。
記憶装置９０１には、図１に示すプログラム分割部２００、実行順序解析部３００、アクセス先解析部４００、ハザード遅延解析部５００、解析実施判定部５１０、メモリアクセス遅延時間算出部６００及び遅延時間加算部７００の機能を実現するプログラムが記憶されている。
そして、プロセッサ９００がこれらプログラムを実行して、後述する、プログラム分割部２００、実行順序解析部３００、アクセス先解析部４００、ハザード遅延解析部５００、解析実施判定部５１０、メモリアクセス遅延時間算出部６００及び遅延時間加算部７００の動作を行う。
また、記憶装置９０１は、プログラム１００、基本ブロック情報２０１、実行順序情報３０１、周辺装置／ＩＯ情報３１０、アクセス先情報４０１、実行遅延情報５０１、測定区間情報５２０、ＣＰＵ構成情報５３０、メモリアクセス遅延情報６０１、キャッシュ構成情報６１０及びプログラム実行性能情報７０１を記憶する。
図１１は、プログラム性能見積もり装置１０の機能構成とハードウェア構成との関係を示す。
図１１では、プロセッサ９００がプログラム分割部２００、実行順序解析部３００、アクセス先解析部４００、ハザード遅延解析部５００、解析実施判定部５１０、メモリアクセス遅延時間算出部６００及び遅延時間加算部７００の機能を実現するプログラムを実行している状態を模式的に表している。
また、図１１では、記憶装置９０１がプログラム１００、基本ブロック情報２０１、実行順序情報３０１、周辺装置／ＩＯ情報３１０、アクセス先情報４０１、実行遅延情報５０１、測定区間情報５２０、ＣＰＵ構成情報５３０、メモリアクセス遅延情報６０１、キャッシュ構成情報６１０及びプログラム実行性能情報７０１を記憶している状態を模式的に表している。
通信インタフェース９０２は、外部機器との間で通信を行う。
入出力インタフェース９０３は、例えば、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）等のインタフェースである。
【００１７】
次に、図１を参照して、プログラム性能見積もり装置１０の機能構成を説明する。
【００１８】
プログラム１００は、機械語命令列である。つまり、プログラム１００には、ソフトウェアを構成する複数のアセンブリ命令が含まれている。
プログラム１００は、ソフトウェア開発者がソフトウェア記述言語（例：Ｃ言語）で記述したソフトウェアをコンパイラ（例：Ｃコンパイラ）でコンパイルして得られる。もしくは、プログラム１００は、ソフトウェア開発者が記述したアセンブリ命令の集合である。
本実施の形態に係るプログラム性能見積もり装置１０は、プログラム１００が、ＣＰＵ構成情報５３０、キャッシュ構成情報６１０及び測定区間情報５２０に示される条件下で実行された場合の実行性能を見積もる。
【００１９】
プログラム分割部２００は、プログラム１００を特定の分割ルールにより分割し、基本ブロックと呼ぶ命令列の塊を複数生成する。プログラム分割部２００により生成された基本ブロックと基本ブロックの属性情報を合わせて基本ブロック情報２０１という。
プログラム分割部２００は、分割ルールとして、例えば、ジャンプ命令又は分岐命令が現れた箇所を境としてプログラム１００を分割するというルールを用いる。また、プログラム分割部２００は、分割ルールとして、一定の命令数（例：１０命令）ごとにプログラム１００を分割するというルールを用いることもできる。本実施の形態では、分割ルールについて特段指定しない。しかしながら、基本ブロック情報２０１に基づいて、後述するハザード遅延解析部５００が基本ブロック内の命令列を分析してパイプラインハザードの発生状況を解析するため、この解析がしやすい形態に基本ブロックが生成されるルールであることが望ましい。
【００２０】
実行順序解析部３００は、周辺装置／ＩＯ情報３１０を用いて、プログラム１００を実行する計算機（以下、実行計算機という）を模擬する。また、実行順序解析部３００は、実行計算機でプログラム１００が実行される場合のジャンプ命令の分岐条件及び分岐命令の分岐条件を正確に模擬し、基本ブロックの実行順序を示す実行順序情報を生成する。
周辺装置／ＩＯ情報３１０は、実行計算機のＣＰＵの周辺装置及びＩＯデバイスの状態を示す情報である。
【００２１】
アクセス先解析部４００は、基本ブロックに含まれるメモリアクセス命令（例えば、ロード／ストア命令）を検知する。また、アクセス先解析部４００は、基本ブロックに含まれるメモリアクセス命令のアクセス先を解析して、基本ブロックごとにアクセス先情報４０１を生成する。アクセス先情報４０１は、メモリアクセス命令のアクセス先を示す情報である。
【００２２】
解析実施判定部５１０は、基本ブロック情報２０１と実行順序情報３０１と測定区間情報５２０とを取得する。測定区間情報５２０では、測定区間が指定されている。測定区間は、ハザード遅延解析部５００による命令実行遅延時間の算出の対象の範囲である。測定区間は、算出対象範囲に相当する。また、測定区間情報５２０は、算出対象範囲情報に相当する。
解析実施判定部５１０は、複数の基本ブロックのうち測定区間に含まれる基本ブロックを抽出し、抽出した基本ブロックのみ命令実行遅延時間の算出をハザード遅延解析部５００に行わせる。具体的には、解析実施判定部５１０は、抽出した基本ブロックをハザード遅延解析部５００に通知する。
【００２３】
ハザード遅延解析部５００は、ＣＰＵ構成情報５３０を取得する。ＣＰＵ構成情報５３０には、実行計算機のＣＰＵのパイプライン構成及びレジスタ構成が記載されている。また、ハザード遅延解析部５００は、解析実施判定部５１０から命令実行遅延時間の算出の対象となる基本ブロック、すなわち、測定区間に含まれる基本ブロックを通知される。
ハザード遅延解析部５００は、解析実施判定部５１０により抽出された基本ブロックに含まれる命令列が実行計算機のＣＰＵで実行される際のパイプラインハザードの発生状況を推定する。そして、ハザード遅延解析部５００は、解析実施判定部５１０により抽出された基本ブロックに含まれる命令列を実行計算機のＣＰＵで実行する際の命令実行遅延時間をハザードの発生具合を加味して算出する。更に、ハザード遅延解析部５００は、算出した命令実行遅延時間を示す実行遅延情報５０１を生成する。
【００２４】
なお、ハザード遅延解析部５００及び解析実施判定部５１０を合わせて命令実行遅延時間算出部５０という。ハザード遅延解析部５００及び解析実施判定部５１０は、前述したように、命令実行遅延時間算出部５０として、測定区間情報５２０を取得し、複数の基本ブロックから測定区間に含まれる基本ブロックを抽出し、抽出した基本ブロックの命令実行遅延時間を算出する。また、命令実行遅延時間算出部５０により行われる処理を、命令実行遅延時間算出処理という。
【００２５】
メモリアクセス遅延時間算出部６００は、キャッシュ構成情報６１０と実行順序情報３０１とアクセス先情報４０１を取得する。キャッシュ構成情報６１０には、実行計算機のキャッシュ構成が示される。また、メモリアクセス遅延時間算出部６００は、キャッシュ構成情報６１０と実行順序情報３０１とアクセス先情報４０１に基づき、各基本ブロックが実行計算機で実行される際のキャッシュメモリの内部状態を模擬して、基本ブロック実行時のメモリアクセスのキャッシュヒット状況を推定する。
更に、メモリアクセス遅延時間算出部６００は、基本ブロックごとに、メモリアクセスのキャッシュヒットまたはキャッシュミスヒットを考慮して、メモリアクセス遅延時間を算出する。そして、メモリアクセス遅延時間算出部６００は、算出したメモリアクセス遅延時間が示されるメモリアクセス遅延情報６０１を生成する。
【００２６】
遅延時間加算部７００は、実行遅延情報５０１とメモリアクセス遅延情報６０１とを取得する。また、遅延時間加算部７００は、基本ブロックごとに、実行遅延情報５０１に示される命令実行遅延時間とメモリアクセス遅延情報６０１に示されるメモリアクセス遅延時間とを加算して、基本ブロックごとの総遅延時間を得る。具体的には、遅延時間加算部７００は、ハザード遅延解析部５００から出力される実行遅延情報５０１とメモリアクセス遅延時間算出部６００から出力されるメモリアクセス遅延情報６０１の中で、同じ基本ブロックの実行遅延情報５０１とメモリアクセス遅延情報６０１とを抽出する。そして、抽出した実行遅延情報５０１に示される命令実行遅延時間とメモリアクセス遅延情報６０１に示されるメモリアクセス遅延時間とを加算する。なお、遅延時間加算部７００は、命令実行遅延時間が算出されていない基本ブロック、すなわち、測定区間に含まれていない基本ブロックについては、メモリアクセス遅延時間をそのまま当該基本ブロックの総遅延時間として扱う。
更に、遅延時間加算部７００は、基本ブロックごとの総遅延時間を積算して、プログラム１００の実行性能値（総遅延時間）を得る。
【００２７】
＊＊＊動作の説明＊＊＊
図２は、本実施の形態に係るプログラム性能見積もり装置１０の動作例を示す。
以下、図２を参照して、プログラム性能見積もり装置１０の動作例を説明する。
【００２８】
ステップＳ８０において、プログラム分割部２００は、プログラム１００を分割し、基本ブロック情報２０１を生成する。
図４は、ステップＳ８０の詳細を示す。
【００２９】
先ず、ステップＳ２０１において、プログラム分割部２００は、命令列を入れるための変数である基本ブロックＮを生成する。
次に、ステップＳ２０２において、プログラム分割部２００は、プログラム１００から命令列を１つ読み出す。
次に、ステップＳ２０３において、プログラム分割部２００は、ステップＳ２０２で読み出した命令列が分岐命令又はジャンプ命令であるかを判定する。
ステップＳ２０２で読み出した命令列が分岐命令でもジャンプ命令でもない場合（ステップＳ２０３でＮＯ）は、プログラム分割部２００は、ステップＳ２０２で読み出した命令列を基本ブロックＮに追加する。そして、プログラム分割部２００は、再度ステップＳ２０２の動作を行う。
一方、ステップＳ２０２で読み出した命令列が分岐命令又はジャンプ命令である場合（ステップＳ２０３でＹＥＳ）は、プログラム分割部２００は、基本ブロックと、基本ブロック番号と、先頭アドレスとの組を、基本ブロック情報２０１に追加し、Ｎの値を１つ増やす。
具体的には、プログラム分割部２００は、基本ブロックに連番である基本ブロック番号を付与する。更に、プログラム分割部２００は、基本ブロック（命令列の集合）と、基本ブロック番号と、基本ブロックの先頭アドレスとの組から基本ブロック情報２０１を生成する。
基本ブロック情報２０１の例を図５に示す。
図５に示すように、基本ブロック情報２０１は、基本ブロック番号２０１１、先頭アドレス２０１２、命令列２０１３で構成される。基本ブロック番号２０１１は各基本ブロックに付与される連番である。先頭アドレス２０１２は、基本ブロックの先頭命令のメモリアドレスである。命令列２０１３は、命令列の集合であり、基本ブロックに相当する。
以下では、図５の基本ブロック情報２０１の各レコード（各行）を基本ブロックレコードという。
【００３０】
次に、図２に戻り、ステップＳ９０において、実行順序解析部３００が基本ブロックの実行順序を解析し、また、実行順序情報３０１を生成する。
次に、ステップＳ９１において、アクセス先解析部４００が基本ブロックのアクセス先を解析し、また、アクセス先情報４０１を生成する。
図６は、ステップＳ９０及びステップＳ９１の詳細を示す。
【００３１】
先ず、ステップＳ３０１において、アクセス先解析部４００は、基本ブロック情報２０１から、先頭の基本ブロックレコード［０］を読み出す。
次に、アクセス先解析部４００は、ステップＳ３０２において、読み出した基本ブロックレコードの命令列２０１３を解析して、命令列２０１３にメモリアクセス命令が含まれているか否かを検査する。
そして、命令列２０１３にメモリアクセス命令が含まれている場合（ステップＳ３０３でＹＥＳ）に、アクセス先解析部４００は、ステップＳ３０４で、メモリアクセス命令のアクセス先を解析し、アクセス先をアクセス先情報４０１に追加する。アクセス先情報４０１は、基本ブロック番号とアクセス先とを対応付ける情報である。アクセス先解析部４００は、アクセス先情報４０１を、新しいデータとして生成してもよいが、本実施の形態では、アクセス先解析部４００は、基本ブロック情報２０１にアクセス先情報の列を追加して、アクセス先情報４０１を生成するものとする。
図７は、アクセス先情報４０１の例を示す。図７では、基本ブロック情報２０１にアクセス先情報２０１４がマージされている。
命令列２０１３にメモリアクセス命令が含まれていない場合（ステップＳ３０３でＮＯ）は、アクセス先解析部４００は、ステップＳ３０４をスキップしてステップＳ３０５を行う。
ステップＳ３０５では、アクセス先解析部４００は、次に実行される基本ブロックのアドレス（ジャンプ先（Ｘ））を計算する。
次に、ステップＳ３０６において、アクセス先解析部４００は、ジャンプ先（Ｘ）がプログラムの最後であるか又は測定区間外であるかを判定する。
ジャンプ先（Ｘ）がプログラムの最後又は測定区間外である場合（ステップＳ３０６でＹＥＳ）は、アクセス先解析部４００は処理を終了する。
一方、ジャンプ先（Ｘ）がプログラムの最後及び測定区間外のいずれでもない場合（ステップＳ３０６でＮＯ）は、実行順序解析部３００が、基本ブロック番号（Ｎ）を実行順序情報３０１に追加する。
次に、アクセス先解析部４００がジャンプ先の基本ブロックレコード［Ｘ］を基本ブロック情報２０１から読み出し、基本ブロックレコード［Ｘ］についてステップＳ３０２を行う。
図８は、実行順序情報３０１の例を示す。
図８に示す通り、実行順序情報３０１は、実行順３０１１と、実行順３０１１に対応する基本ブロック番号３０１２で構成される。基本ブロック番号３０１２は、図５に示す基本ブロック番号２０１１と同じである。
【００３２】
次に、図２に戻り、ステップＳ１００にて、遅延時間の算出が行われる。
つまり、命令実行遅延時間算出部５０が測定区間内の基本ブロックの命令実行遅延時間を算出し、メモリアクセス遅延時間算出部６００が基本ブロックごとにメモリアクセス遅延時間を算出する。また、遅延時間加算部７００が命令実行遅延時間とメモリアクセス遅延時間とを加算し、更に、プログラム１００の全体の総遅延時間を算出する。
図３は、ステップＳ１００の詳細を示す。
【００３３】
ステップＳ１０１において、メモリアクセス遅延時間算出部６００が、実行順序情報３０１に従って、アクセス先情報４０１を読み出し、また、基本ブロック情報２０１から各基本ブロックレコードを読み出す。
次に、ステップＳ１０２において、メモリアクセス遅延時間算出部６００が、読み出したアクセス先情報４０１と、キャッシュ構成情報６１０とに基づき、キャッシュシミュレーションを行って、基本ブロックごとに、基本ブロック実行時のキャッシュ状態を推定し、基本ブロック実行時のメモリアクセスがキャッシュにヒットするか否かを判定する。
次に、ステップＳ１０３において、メモリアクセス遅延時間算出部６００が、ステップＳ１０２におけるキャッシュヒット／ミス判定結果に基づいて、基本ブロック実行時のメモリアクセス時間を算出する。
メモリアクセス遅延時間算出部６００は、各基本ブロックのメモリアクセス時間が示されるメモリアクセス遅延情報６０１を遅延時間加算部７００に出力する。
【００３４】
ステップＳ１０１〜Ｓ１０３に並行して、命令実行遅延時間算出部５０が、基本ブロック内のハザード遅延解析を行う。
より具体的には、解析実施判定部５１０が、ステップＳ１０４において、実行順序情報３０１に基づいて基本ブロック情報２０１から基本ブロックを読み出す。
次に、解析実施判定部５１０は、ステップＳ１０５において、読み出した基本ブロックレコードに含まれる基本ブロックが、測定区間情報５２０に示される測定区間に含まれるかどうかを判定する。測定区間情報５２０には測定区間に含まれる基本ブロックの基本ブロック番号が記載されている。解析実施判定部５１０は、読み出した基本ブロックレコードの基本ブロック番号が測定区間情報５２０に記載されているか否かを判定して、当該基本ブロックが測定区間に含まれるかどうかを判定する。
基本ブロックが測定区間に含まれる場合（ステップＳ１０５でＹＥＳ）は、ハザード遅延解析部５００が、当該基本ブロックのハザード遅延解析を行い、基本ブロックを実行した際のパイプラインハザードを考慮した命令実行遅延時間を算出する。つまり、解析実施判定部５１０が測定区間に含まれる基本ブロックの基本ブロック情報２０１をハザード遅延解析部５００に出力し、ハザード遅延解析部５００は、基本ブロック情報２０１とＣＰＵ構成情報５３０に基づいてハザード遅延解析を行う。
ハザード遅延解析部５００は、測定区間に含まれる基本ブロックの実行遅延時間が示される実行遅延情報５０１を遅延時間加算部７００に出力する。
実行遅延情報５０１は、基本ブロック番号と命令実行遅延時間とを対応付けた情報である。ハザード遅延解析部５００は、実行遅延情報５０１を、新しいデータとして生成してもよいが、本実施の形態では、ハザード遅延解析部５００は、基本ブロック情報２０１に命令実行遅延時間の列を追加して、実行遅延情報５０１を生成するものとする。
図９は、実行遅延情報５０１の例を示す。図９では、基本ブロック情報２０１に命令実行遅延時間２０１５がマージされている。
【００３５】
なお、測定区間に含まれる基本ブロックとして複数の基本ブロックが解析実施判定部５１０により抽出された場合は、ハザード遅延解析部５００は、抽出された基本ブロックごとに、記述内容が同じ基本ブロックに対して命令実行遅延時間が算出済みであるか否かを判定する。そして、ハザード遅延解析部５００は、記述内容が同じ基本ブロックに対して命令実行遅延時間が算出済みである基本ブロックに対しては命令実行遅延時間の算出を省略して、算出済みの命令実行遅延時間を適用する。
【００３６】
次に、遅延時間加算部７００が、ステップＳ１０７において、基本ブロックごとに、メモリアクセス遅延時間と命令実行遅延時間との加算を行う。加算により、遅延時間加算部７００は、基本ブロックの総遅延時間を得る。そして、遅延時間加算部７００は、先行する基本ブロックの総遅延時間の累計値に、ステップＳ１０７で得られた基本ブロックの総遅延時間を加算する。
なお、ステップＳ１０５でＮＯと判定された基本ブロックについては命令実行遅延時間が算出されないので、遅延時間加算部７００は、メモリアクセス遅延時間を基本ブロックの総遅延時間として扱う。そして、遅延時間加算部７００は、この総遅延時間を、先行する基本ブロックの総遅延時間の累計値に加算する。
【００３７】
ハザード遅延解析部５００、解析実施判定部５１０、メモリアクセス遅延時間算出部６００及び遅延時間加算部７００は、これら一連の処理をプログラム１００の最後に至るまで（ステップＳ１０８でＹＥＳ）繰り返し、プログラム１００の総遅延時間を得る。
【００３８】
＊＊＊実施の形態の効果の説明＊＊＊
以上、本実施の形態によれば、測定区間に含まれない基本ブロックの命令実行遅延時間の計算を省略することができる。このため、プログラムの性能見積もりを効率的に行うことができる。
従って、本実施の形態によれば、例えば、大規模なソフトウェアの実行性能見積もり、特にＯＳを含むような大規模なシステムの性能見積もりにおいて、性能見積もりの必要性が小さいが性能見積もり処理の負荷が比較的重い処理、例えば、システム全体の初期化処理の性能見積もりを省略することが可能となる。そして、性能見積もりの必要性の大きい、初期化処理完了後のシステム動作時の性能見積もり結果を従来よりも早期に得ることができる。
このように、本実施の形態では、性能見積もりが効率的に行える。
【００３９】
＊＊＊ハードウェア構成の説明＊＊＊
最後に、プログラム性能見積もり装置１０のハードウェア構成の補足説明を行う。
図１０に示すプロセッサ９００は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
プロセッサ９００は、ＣＰＵ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等である。
図１０に示す記憶装置９０１は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、フラッシュメモリ等である。
図１０に示す通信インタフェース９０２は、データを受信するレシーバー及びデータを送信するトランスミッターを含む。
通信インタフェース９０２は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
通信インタフェース９０２は、ネットワークに接続される。通信インタフェース９０２は、例えば、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）、広域ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）ネットワークといったＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、あるいは、インターネットに接続される。
【００４０】
また、図１０には、図示していないが、ディスクドライブ、ディスプレイ、マウス、キーボード、プリンタ等を備えていてもよい。ディスクドライブは、Ｃｏｍｐａｃｔ  Ｄｉｓｃ（ＣＤ）、ＤＶＤ、ブルーレイ（登録商標）ディスク、Ｆｌｏｐｐｙ  Ｄｉｓｋ（ＦＤ）等のディスクに対してデータのリード／ライトを制御する。また、プログラム性能見積もり装置１０は、マウスの代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、その他ポインティングデバイスを備えてもよい。また、プログラム性能見積もり装置１０は、プリンタに接続していてもよい。
【００４１】
また、記憶装置９０１には、ブートプログラム、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）等のプログラムも記憶されている。
ＯＳの少なくとも一部は、プロセッサ９００により実行される。
プロセッサ９００はＯＳの少なくとも一部を実行しながら、プログラム分割部２００、実行順序解析部３００、アクセス先解析部４００、ハザード遅延解析部５００、解析実施判定部５１０、メモリアクセス遅延時間算出部６００及び遅延時間加算部７００の機能を実現するプログラムを実行する。
プロセッサ９００がＯＳを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、プログラム性能見積もり装置１０は、プロセッサ９００を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、プログラム分割部２００、実行順序解析部３００、アクセス先解析部４００、ハザード遅延解析部５００、解析実施判定部５１０、メモリアクセス遅延時間算出部６００及び遅延時間加算部７００の機能を実現するプログラムの実行を分担する。それぞれのプロセッサは、プロセッサ９００と同じように、プロセッシングを行うＩＣである。
また、プログラム分割部２００、実行順序解析部３００、アクセス先解析部４００、ハザード遅延解析部５００、解析実施判定部５１０、メモリアクセス遅延時間算出部６００及び遅延時間加算部７００の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、記憶装置９０１、プロセッサ９００内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、プログラム分割部２００、実行順序解析部３００、アクセス先解析部４００、ハザード遅延解析部５００、解析実施判定部５１０、メモリアクセス遅延時間算出部６００及び遅延時間加算部７００の機能を実現するプログラムは、磁気ディスク、ＦＤ、光ディスク、ＣＤ、ブルーレイ（登録商標）ディスク、ＤＶＤ等の可搬記憶媒体に記憶されてもよい。
【００４２】
また、プログラム分割部２００、実行順序解析部３００、アクセス先解析部４００、ハザード遅延解析部５００、解析実施判定部５１０、メモリアクセス遅延時間算出部６００及び遅延時間加算部７００の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、プログラム性能見積もり装置１０は、ロジックＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった電子回路により実現されてもよい。
この場合は、プログラム分割部２００、実行順序解析部３００、アクセス先解析部４００、ハザード遅延解析部５００、解析実施判定部５１０、メモリアクセス遅延時間算出部６００及び遅延時間加算部７００は、それぞれ電子回路の一部として実現される。
なお、プロセッサ及び上記の電子回路を総称してプロセッシングサーキットリーともいう。
【符号の説明】
【００４３】
１０  プログラム性能見積もり装置、５０  命令実行遅延時間算出部、１００  プログラム、２００  プログラム分割部、２０１  基本ブロック情報、３００  実行順序解析部、３０１  実行順序情報、３１０  周辺装置／ＩＯ情報、４００  アクセス先解析部、４０１  アクセス先情報、５００  ハザード遅延解析部、５０１  実行遅延情報、５１０  解析実施判定部、５２０  測定区間情報、５３０  ＣＰＵ構成情報、６００  メモリアクセス遅延時間算出部、６０１  メモリアクセス遅延情報、６１０  キャッシュ構成情報、７００  遅延時間加算部、７０１  プログラム実行性能情報、９００  プロセッサ、９０１  記憶装置、９０２  通信インタフェース、９０３  入出力インタフェース、９０４  バス。
【図１】
2018163387.tif 000003
【図２】
2018163387.tif 000004
【図３】
2018163387.tif 000005
【図４】
2018163387.tif 000006
【図５】
2018163387.tif 000007
【図６】
2018163387.tif 000008
【図７】
2018163387.tif 000009
【図８】
2018163387.tif 000010
【図９】
2018163387.tif 000011
【図１０】
2018163387.tif 000012
【図１１】
2018163387.tif 000013
【手続補正書】
【提出日】平成29年9月12日(2017.9.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の命令列が含まれる、コンパイラによるコンパイルによって得られたプログラムを複数のブロックに分割するプログラム分割部と、
前記プログラム内で命令実行遅延時間の算出の対象の範囲として指定された算出対象範囲が示される算出対象範囲情報を取得し、前記複数のブロックから前記算出対象範囲に含まれるブロックを抽出し、抽出したブロックの命令実行遅延時間を算出する命令実行遅延時間算出部と、
ブロックごとに、ブロックを実行する際のキャッシュヒット状況を推定して、メモリアクセス遅延時間を算出するメモリアクセス遅延時間算出部と、
ブロックごとに、前記命令実行遅延時間算出部により算出された命令実行遅延時間と、前記メモリアクセス遅延時間算出部により算出されたメモリアクセス遅延時間とを加算する遅延時間加算部とを有する解析装置。
【請求項２】
前記命令実行遅延時間算出部は、
抽出したブロックを実行する際のパイプラインハザードの発生状況を推定して、抽出したブロックの命令実行遅延時間を算出する請求項１に記載の解析装置。
【請求項３】
前記命令実行遅延時間算出部は、
前記算出対象範囲に含まれるブロックとして複数のブロックを抽出した場合に、抽出したブロックごとに、記述内容が同じブロックに対して命令実行遅延時間が算出済みであるか否かを判定し、記述内容が同じブロックに対して命令実行遅延時間が算出済みであるブロックに対しては命令実行遅延時間の算出を省略して、算出済みの命令実行遅延時間を適用する請求項１に記載の解析装置。
【請求項４】
前記メモリアクセス遅延時間算出部は、
命令メモリへのアクセスでのキャッシュヒット状況及びデータメモリへのアクセスでのキャッシュヒット状況を推定して、前記命令メモリへのアクセスでのメモリアクセス遅延時間及び前記データメモリへのアクセスでのメモリアクセス遅延時間を算出する請求項１に記載の解析装置。
【請求項５】
コンピュータが、複数の命令列が含まれる、コンパイラによるコンパイルによって得られたプログラムを複数のブロックに分割し、
前記コンピュータが、前記プログラム内で命令実行遅延時間の算出の対象の範囲として指定された算出対象範囲が示される算出対象範囲情報を取得し、前記複数のブロックから前記算出対象範囲に含まれるブロックを抽出し、抽出したブロックの命令実行遅延時間を算出し、
前記コンピュータが、ブロックごとに、ブロックを実行する際のキャッシュヒット状況を推定して、メモリアクセス遅延時間を算出し、
前記コンピュータが、ブロックごとに、前記命令実行遅延時間と、前記メモリアクセス遅延時間とを加算する解析方法。
【請求項６】
複数の命令列が含まれる、コンパイラによるコンパイルによって得られたプログラムを複数のブロックに分割するプログラム分割処理と、
前記プログラム内で命令実行遅延時間の算出の対象の範囲として指定された算出対象範囲が示される算出対象範囲情報を取得し、前記複数のブロックから前記算出対象範囲に含まれるブロックを抽出し、抽出したブロックの命令実行遅延時間を算出する命令実行遅延時間算出処理と、
ブロックごとに、ブロックを実行する際のキャッシュヒット状況を推定して、メモリアクセス遅延時間を算出するメモリアクセス遅延時間算出処理と、
ブロックごとに、前記命令実行遅延時間算出処理により算出された命令実行遅延時間と、前記メモリアクセス遅延時間算出処理により算出されたメモリアクセス遅延時間とを加算する遅延時間加算処理とをコンピュータに実行させる解析プログラム。
【国際調査報告】
2018163387.tif 000014
2018163387.tif 000015
2018163387.tif 000016
2018163387.tif 000017