(57)【特許請求の範囲】
【請求項１】
１つ以上のループ処理が含まれるプログラムから前記１つ以上のループ処理の各々を抽出するループ抽出部と、
前記ループ抽出部により抽出された各ループ処理の特性を判定する特性判定部と、
処理時間を計算するための複数の処理時間計算手順の中から、ループ処理ごとに、各ループ処理の処理時間を計算するための処理時間計算手順を、前記特性判定部により判定された各ループ処理の特性と、前記プログラムを実行する計算資源のアーキテクチャとに基づき選択する計算手順選択部と、
前記計算手順選択部により選択された、対応する処理時間計算手順を用いて、各ループ処理の処理時間を計算する処理時間計算部とを有する情報処理装置。
【請求項２】
前記計算手順選択部は、
メモリアクセス遅延時間を計算するための複数のメモリアクセス遅延時間計算手順の中から、ループ処理ごとに、各ループ処理でのメモリアクセス遅延時間を計算するためのメモリアクセス遅延時間計算手順を、前記プログラムを実行する計算資源のアーキテクチャに基づき選択し、
前記処理時間計算部は、
前記計算手順選択部により選択された、対応するメモリアクセス遅延時間計算手順を用いて、各ループ処理でのメモリアクセス遅延時間を計算し、
計算により得られたメモリアクセス遅延時間を、対応する処理時間計算手順に適用して、各ループ処理の処理時間を計算する請求項１に記載の情報処理装置。
【請求項３】
前記処理時間計算部は、
各ループ処理で行われる演算の種別と演算数とに基づき、各ループ処理での演算時間を計算し、
計算により得られた演算時間を、対応する処理時間計算手順に適用して、各ループ処理の処理時間を計算する請求項１に記載の情報処理装置。
【請求項４】
前記複数の処理時間計算手順の各々には、適用対象のループ処理の特性と適用対象の計算資源のアーキテクチャとが定義されており、
前記計算手順選択部は、
各ループ処理の特性と前記プログラムを実行する計算資源のアーキテクチャと、各処理時間計算手順に定義されている適用対象のループ処理の特性と適用対象の計算資源のアーキテクチャとを比較して、ループ処理ごとに、各ループ処理の処理時間を計算するための処理時間計算手順を選択する請求項１に記載の情報処理装置。
【請求項５】
前記特性判定部は、
ループ処理の特性として、ループ処理のイタレーション間のデータ依存の有無、ループ処理に含まれる分岐処理の数、及びループ処理の縮約演算化の可否のうちの少なくともいずれかを判定する請求項１に記載の情報処理装置。
【請求項６】
前記処理時間計算部は、
各ループ処理の処理時間から、前記プログラムの処理時間を得る請求項１に記載の情報処理装置。
【請求項７】
コンピュータが、１つ以上のループ処理が含まれるプログラムから前記１つ以上のループ処理の各々を抽出し、
前記コンピュータが、各ループ処理の特性を判定し、
前記コンピュータが、処理時間を計算するための複数の処理時間計算手順の中から、ループ処理ごとに、各ループ処理の処理時間を計算するための処理時間計算手順を、各ループ処理の特性と、前記プログラムを実行する計算資源のアーキテクチャとに基づき選択し、
前記コンピュータが、前記選択した、対応する処理時間計算手順を用いて、各ループ処理の処理時間を計算する情報処理方法。
【請求項８】
１つ以上のループ処理が含まれるプログラムから前記１つ以上のループ処理の各々を抽出するループ抽出処理と、
前記ループ抽出処理により抽出された各ループ処理の特性を判定する特性判定処理と、
処理時間を計算するための複数の処理時間計算手順の中から、ループ処理ごとに、各ループ処理の処理時間を計算するための処理時間計算手順を、前記特性判定処理により判定された各ループ処理の特性と、前記プログラムを実行する計算資源のアーキテクチャとに基づき選択する計算手順選択処理と、
前記計算手順選択処理により選択された、対応する処理時間計算手順を用いて、各ループ処理の処理時間を計算する処理時間計算処理とをコンピュータに実行させる情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの処理時間を計算する技術に関する。
【背景技術】
【０００２】
組込みシステムは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等の計算資源、メモリ、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などが組み合わされて構成される。これらの計算資源を選定すること、メモリ及びＩＣを選定すること及び計算資源とメモリ及びＩＣとの接続構成を決定することをシステムアーキテクチャ設計と呼ぶ。【０００３】
従来から、システムアーキテクチャ設計は、設計者の経験等により行われている。また、計算資源上で動作するソフトウェアやハードウェアのシミュレーションモデルを用いて、組込みシステムのシミュレートを行うことで、組込みシステムの性能見積りが行われる。【０００４】
しかしながら、上記の性能見積り方法は、一旦システムアーキテクチャ設計を行ったうえで、システムを構成する計算資源及びメモリのそれぞれについてシミュレーションモデルを作成する必要がある。このため、シミュレーションモデル開発に工数がかかるという問題がある。また、システムアーキテクチャを変更する度に、シミュレーションモデルの変更が必要になるという問題もある。【０００５】
また、性能を見積もるためにシミュレーションモデルを用いたシミュレーションを行う時間が必要となり、性能見積りに時間がかかるという問題もある。【０００６】
これらの問題を解決するため、シミュレーションを用いずにデータベース上の性能値を利用する方法が、特許文献１及び特許文献２に開示されている。【０００７】
特許文献１では、プロセッサの性能を見積る方法が開示されている。より具体的には、特許文献１では、プロセッサの命令実行時間をデータベースに格納しておき、プロセッサの命令実行時間をソースコードに含まれる演算に当てはめることでプロセッサの性能を見積もる方法が開示されている。【０００８】
特許文献２では、ＧＰＵのような並列プロセッサの性能を見積る方法が開示されている。より具体的には、特許文献２では、機能モデルからループ回数を取得し、取得したループ回数を並列プロセッサのコア数で除算することにより、ループを並列化した際の並列プロセッサの性能を見積る方法が開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００５−２４２５６９号公報
【特許文献２】特開２０１４−１９４６６０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、これらの手法を用いても、計算資源のアーキテクチャに基づいて機能モデルを実装した際の性能見積りができず、見積値の精度が低いという課題がある。【００１１】
本発明は、この課題を解決することを主な目的とする。より具体的には、本発明は、シミュレーションを用いずに、計算資源のアーキテクチャを反映した高精度な性能見積りを実現することを主な目的とする。
【課題を解決するための手段】
【００１２】
本発明に係る情報処理装置は、
１つ以上のループ処理が含まれるプログラムから前記１つ以上のループ処理の各々を抽出するループ抽出部と、
前記ループ抽出部により抽出された各ループ処理の特性を判定する特性判定部と、
処理時間を計算するための複数の処理時間計算手順の中から、ループ処理ごとに、各ループ処理の処理時間を計算するための処理時間計算手順を、前記特性判定部により判定された各ループ処理の特性と、前記プログラムを実行する計算資源のアーキテクチャとに基づき選択する計算手順選択部と、
前記計算手順選択部により選択された、対応する処理時間計算手順を用いて、各ループ処理の処理時間を計算する処理時間計算部とを有する。
【発明の効果】
【００１３】
本発明によれば、シミュレーションを用いずに、計算資源のアーキテクチャを反映した高精度な性能見積りを実現することができる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１に係る性能見積り装置の機能構成例を示す図。
【図２】実施の形態１に係る性能見積り装置のハードウェア構成例を示す図。
【図３】実施の形態１に係る性能見積り装置の動作例を示すフローチャート。
【図４】実施の形態１に係る性能見積り装置の動作例を示すフローチャート。
【図５】実施の形態１に係る機能モデルの例を示す図。
【図６】実施の形態１に係るループ処理の例を示す図。
【図７】実施の形態１に係るイタレーション間にデータ依存のあるループ処理の例を示す図。
【図８】実施の形態１に係る制御依存のあるループ処理の例を示す図。
【図９】実施の形態１に係る縮約可能演算化が可能なループ処理の例を示す図。
【図１０】実施の形態１に係るループ処理のパラメータ抽出例を示す図。
【図１１】実施の形態１に係る性能計算基本式情報の例を示す図。
【図１２】実施の形態１に係る制約条件情報の例を示す図。
【図１３】実施の形態１に係るメモリアクセス遅延特性情報の例を示す図。
【図１４】実施の形態１に係る演算時間情報の例を示す図。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分または相当する部分を示す。
【００１６】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１は、実施の形態１に係る性能見積り装置１００の機能構成例を示す。実施の形態１に係る性能見積り装置１００の機能構成について、図１に基づいて説明する。ただし、性能見積り装置１００の機能構成は図１と異なる機能構成であっても構わない。
【００１７】
性能見積り装置１００は、計算資源情報取得部１１０と機能モデル取得部１２０と処理分割部１３０とパラメータ抽出部１４０と性能計算基本式選択部１５０と性能見積り部１６０と計算資源データベース１７０とを備える。
また、性能見積り装置１００は、計算資源情報２００と機能モデル２１０を取得し、性能見積値３００を出力する。
性能見積り装置１００は、情報処理装置に相当する。また、性能見積り装置１００で行われる動作は、情報処理方法及び情報処理プログラムに相当する。
【００１８】
また、図２は、実施の形態１に係る性能見積り装置１００のハードウェア構成例を示す。
性能見積り装置１００は、プロセッサ９０１、メモリ９０２、記憶装置９０３、入力装置９０４及び出力装置９０５を備える。
性能見積り装置１００は、コンピュータである。
記憶装置９０３には、図１に示す計算資源情報取得部１１０、機能モデル取得部１２０、機能モデル取得部１２０、処理分割部１３０、パラメータ抽出部１４０、性能計算基本式選択部１５０及び性能見積り部１６０の機能を実現するプログラムが記憶されている。
プログラムはメモリ９０２にロードされる。そして、プロセッサ９０１がプログラムをメモリ９０２から読み出してプログラムを実行し、後述する計算資源情報取得部１１０、機能モデル取得部１２０、機能モデル取得部１２０、処理分割部１３０、パラメータ抽出部１４０、性能計算基本式選択部１５０及び性能見積り部１６０の動作を行う。
図１では、プロセッサ９０１が計算資源情報取得部１１０、機能モデル取得部１２０、機能モデル取得部１２０、処理分割部１３０、パラメータ抽出部１４０、性能計算基本式選択部１５０及び性能見積り部１６０の機能を実現するプログラムを実行している状態を模式的に表している。
【００１９】
次に、図１に示す構成要素の詳細を説明する。
【００２０】
計算資源情報取得部１１０は、計算資源情報２００を取得する。計算資源情報２００には、機能モデル２１０を実行する計算資源のアーキテクチャが示される。機能モデル２１０には、性能見積もりの対象の処理が記述される。機能モデル２１０は、例えば、プログラムのソースコードの全部又は一部である。機能モデル２１０には、１つ以上のループ処理が含まれる。計算資源とは、プログラムを実行する演算装置である。前述したように、計算資源には、ＣＰＵ、ＤＳＰ、ＧＰＵ、ＦＰＧＡ等が含まれる。計算資源のアーキテクチャは、製品名、製品コードといった計算資源の具体的な型番である。
計算資源情報取得部１１０は、計算資源情報２００を性能計算基本式選択部１５０に出力する。
【００２１】
機能モデル取得部１２０は、機能モデル２１０を取得する。機能モデル２１０の機能モデル取得部１２０への入力は、性能見積り装置１００を利用するユーザが実施する。
【００２２】
処理分割部１３０は、機能モデル取得部１２０が取得した機能モデル２１０を分割する。より具体的には、処理分割部１３０は、機能モデル２１０からループ処理を抽出する。
ループ処理とは、例えば機能モデル２１０がＣ言語のプログラムである場合は、ｆｏｒ文などで表される処理である。処理分割部１３０は、機能モデル２１０がＣ言語のプログラムである場合は、ｆｏｒ文で囲われた箇所を１つのループとして抽出し、また、ｆｏｒ文とｆｏｒ文の間の処理記述を、ループ回数１のループとして抽出する。
処理分割部１３０は、ループ処理ごとに分割した機能モデル２１０をパラメータ抽出部１４０に出力する。
機能モデル取得部１２０は、ループ抽出部に相当する。また、機能モデル取得部１２０により行われる処理は、ループ抽出処理に相当する。
【００２３】
パラメータ抽出部１４０は、処理分割部１３０で抽出された各ループ処理の特性を判定する。また、パラメータ抽出部１４０は、処理分割部１３０で抽出された各ループ処理から、ループ処理全体のメモリアクセスサイズとメモリアクセス順序を抽出する。また、パラメータ抽出部１４０は、処理分割部１３０で抽出された各ループ処理から、ループ処理内の演算種別ごとの演算数を抽出する。
パラメータ抽出部１４０は、ループ処理の特性として、ループ処理のイタレーション間のデータ依存の有無、ループ処理に含まれる分岐処理の数（ループ処理内の処理の制御依存数）、ループ処理の縮約演算化の可否を判定する。なお、ループ処理の特性は、これらに限られない。
パラメータ抽出部１４０は、各ループ処理の特性を性能計算基本式選択部１５０に出力する。
また、パラメータ抽出部１４０は、抽出したメモリアクセスサイズ、メモリアクセス順序、演算種別ごとの演算数を性能見積り部１６０に出力する。
パラメータ抽出部１４０は、特性判定部に相当する。また、パラメータ抽出部１４０により行われる処理は特性判定処理に相当する。
【００２４】
性能計算基本式選択部１５０は、計算資源データベース１７０で保持されている複数の性能計算基本式から最適の性能計算基本式を選択する。性能計算基本式は、ループ処理の処理時間を計算するための処理時間計算手順である。性能計算基本式選択部１５０は、ループ処理ごとに、最適の性能計算基本式を選択する。より具体的には、性能計算基本式選択部１５０は、計算資源データベース１７０から出力される制約条件情報に示される制約条件と、パラメータ抽出部１４０で判定されたループ処理の特性と、計算資源情報２００に示される計算資源のアーキテクチャとに基づき、ループ処理ごとに、最適な性能計算基本式を選択する。
性能計算基本式選択部１５０は、選択した性能計算基本式を性能見積り部１６０に出力する。
性能計算基本式選択部１５０は、計算手順選択部に相当する。また、性能計算基本式選択部１５０で行われる処理は、計算手順選択処理に相当する。
【００２５】
性能見積り部１６０は、性能計算基本式選択部１５０から、性能計算基本式を取得する。
また、性能見積り部１６０は、計算資源データベース１７０から、メモリアクセス遅延特性情報を取得する。そして、性能見積り部１６０は、パラメータ抽出部１４０が抽出したメモリアクセスサイズ、メモリアクセス順序をメモリアクセス遅延特性情報に適用して、ループ処理内のメモリアクセス時間を算出する。
また、性能見積り部１６０は、計算資源データベース１７０から、演算時間情報を取得する。そして、性能見積り部１６０は、パラメータ抽出部１４０が抽出したループ処理内の演算種別ごとの演算数を演算時間情報に適用して、ループ処理での演算時間（命令実行時間）を算出する。
また、性能見積り部１６０は、算出したメモリアクセス時間、演算時間（命令実行時間）を性能計算基本式選択部１５０から取得した性能計算基本式に適用する。そして、性能見積り部１６０は、ループ処理全体の処理時間を得る。
性能見積り部１６０は、各ループ処理の処理時間から、機能モデル２１０の全体の処理時間を得る。そして、性能見積り部１６０は、機能モデル２１０の全体の処理時間を性能見積値３００として出力する。
性能見積り部１６０は、処理時間計算部に相当する。また、性能見積り部１６０により行われる処理は処理時間計算処理に相当する。
【００２６】
計算資源データベース１７０は、性能計算基本式情報を保持する。また、計算資源データベース１７０は、制約条件情報を保持する。更に、計算資源データベース１７０は、メモリアクセス遅延特性情報、演算ごとの演算時間情報を保持する。
計算資源データベース１７０は、記憶装置９０３で実現される。
【００２７】
性能計算基本式情報には、複数の性能計算基本式が記述されている。図１１に性能計算基本式情報の例を示す。性能計算基本式情報の詳細は後述する。
図１１の性能計算基本式情報には、４つの性能計算基本式が記述される。なお、説明の欄は、各性能計算基本式を理解するための補足情報として設けている。計算資源データベース１７０で保持する性能計算基本式情報には、説明の欄を設けなくてもよい。
【００２８】
制約条件情報には、性能計算基本式ごとに制約条件が記述される。図１２に制約条件情報の例を示す。図１２の制約条件情報には、ループ処理の特性についての制約条件と計算資源のアーキテクチャについての制約条件が定義されている。制約条件情報の詳細は後述する。ループ処理の特性についての制約条件には、性能計算基本式の適用対象のループ利処理の特性が示される。また、計算資源のアーキテクチャについての制約条件には、性能計算基本式の適用対象の計算資源のアーキテクチャが示される。
【００２９】
メモリアクセス遅延特性情報には、メモリアクセス遅延時間の算出手順が記述される。図１３にメモリアクセス遅延特性情報の例を示す。メモリアクセス遅延特性情報の詳細は後述する。なお、メモリアクセス遅延特性情報は、メモリアクセス遅延時間計算手順に相当する。
【００３０】
演算時間情報には、演算時間の算出手順が記述される。図１４に演算時間情報の例を示す。演算時間情報の詳細は後述する。
【００３１】
＊＊＊動作の説明＊＊＊
図３及び図４は、実施の形態１に係る性能見積り装置１００の動作例を示す。
実施の形態１に係る性能見積り装置１００の動作例を図３及び図４に基づいて説明する。ただし、性能見積り装置１００の動作に図３及び図４と異なる処理が含まれていても構わない。
【００３２】
先ず、ステップＳ１１０において、計算資源情報取得部１１０は、計算資源情報２００を取得し、取得した計算資源情報２００を性能計算基本式選択部１５０に出力する。
ステップＳ１１０の後、処理はステップＳ１２０に進む。
【００３３】
次に、ステップＳ１２０において、機能モデル取得部１２０が、機能モデル２１０を取得し、取得した機能モデル２１０を処理分割部１３０に出力する。機能モデル２１０は、Ｃ言語等のプログラミング言語で記述された処理であり、実行可能なプログラムの全体または一部である。図５に機能モデル２１０の例を示す。
ステップＳ１２０の後、処理はステップＳ１３０に進む。
【００３４】
次に、Ｓ１３０において、処理分割部１３０が、機能モデル２１０からループ処理を抽出し、各ループ処理をパラメータ抽出部１４０に出力する。
図６は、図５に示す機能モデル２１０から抽出されたループ処理の例を示す。
ステップＳ１３０の後、処理はステップＳ１４０に進む。
【００３５】
次に、ステップＳ１４０において、パラメータ抽出部１４０が、各ループ処理の特性を判定する。そして、パラメータ抽出部１４０は、各ループ処理と、各ループ処理の特性を性能計算基本式選択部１５０に出力する。ループ処理の特性としては、例えば、以下のようなものがある。
（１）ループイタレーション間のデータ依存の有無
パラメータ抽出部１４０は、ループ処理に含まれている複数の演算の実行順序が制限されるか否かを判定する。図７に、データ依存があるループ処理の例を示す。
（２）ループ内の分岐数処理の数
ループ処理内に分岐処理が含まれる場合に、パラメータ抽出部１４０は、分岐処理の数をカウントする。図８に制御依存があるループ処理、すなわち、分岐処理が含まれるループ処理の例を示す。図８のループ処理の場合は、分岐処理が１つのため、分岐処理数（制御依存数ともいう）は１である。
（３）ループの縮約演算化の可否
演算結果が１変数に集約される、交換法則適用可能な演算がループ処理に含まれる場合に、パラメータ抽出部１４０は、当該ループ処理を、縮約演算化可能なループ処理として判定する。図９に縮約演算化可能なループ処理の例を示す。
ステップＳ１４０の後、処理はステップＳ１４１に進む。
【００３６】
ステップＳ１４１において、パラメータ抽出部１４０が、各ループ処理からメモリアクセスサイズ、メモリアクセス順序（シーケンシャルまたはランダム）、演算種別ごとの演算数を抽出する。そして、パラメータ抽出部１４０は、メモリアクセスサイズ、メモリアクセス順序、演算種別ごとの演算数と、計算資源情報２００を性能見積り部１６０に出力する。
パラメータ抽出部１４０は、演算種別として、加減乗除、ビットシフト、論理演算などの演算子を抽出する。また、パラメータ抽出部１４０は、積和演算（ａ  ＊  ｃ  ＋  ｂ）等の計算資源のアーキテクチャ上、１演算として扱われる演算も１つの演算種別として抽出する。
図１０に、ループ処理のソースコードと、当該ループ処理についてのパラメータ抽出部１４０のパラメータ抽出例を示す。
ステップＳ１４１の後、処理はステップＳ１５０に進む。
【００３７】
次に、ステップＳ１５０において、性能計算基本式選択部１５０が、計算資源データベース１７０から、制約条件情報を取得する。
図１２に制約条件情報の例を示す。
Ｓ１５０の後、処理はＳ１５１に進む。
【００３８】
ステップＳ１５１において、性能計算基本式選択部１５０は、ループ処理の特性と計算資源のアーキテクチャから、計算資源データベース１７０で保持されている複数の性能計算基本式の中から、ループ処理ごとに、最適な性能計算基本式を選択する。
より具体的には、性能計算基本式選択部１５０は、パラメータ抽出部１４０で判定されたループ処理の特性と、計算資源情報２００に示される計算資源のアーキテクチャとの組み合わせと、ステップＳ１５０で取得した制約条件情報に示されるループ処理の特性についての制約条件と計算資源のアーキテクチャについての制約条件との組み合わせとを比較して、性能計算基本式を選択する。
図１２では、「（１）シーケンシャル」の性能計算基本式に対しては、ループ処理の特性についての制約条件として「無」が定義され、計算資源のアーキテクチャについての制約条件として「ＣＰＵ，ＤＳＰ，ＦＰＧＡ，ＧＰＵ」が定義されている。「（２）並列」の性能計算基本式に対しては、ループ処理の特性についての制約条件として「ループイタレーション間のデータ存在無」が定義され、計算資源のアーキテクチャについての制約条件として「ＤＳＰ，ＧＰＵ」が定義されている。「（４）縮約」の性能計算基本式に対しては、ループ処理の特性についての制約条件として「縮約演算化可能」が定義され、計算資源のアーキテクチャについての制約条件として「ＧＰＵ，ＦＰＧＡ」が定義されている。
計算資源情報２００に示される計算資源のアーキテクチャがＧＰＵに属する型番である場合は、性能計算基本式選択部１５０は、当該ループ処理の性能計算基本式として、「（１）シーケンシャル」、「（２）並列」及び「（４）縮約」の性能計算基本式が選択可能である。図１０に示すループ処理は、ループイタレーション間のデータ依存があり、縮約化可能なループ処理である。性能計算基本式選択部１５０は、図１０のループ処理に対しては、「（１）シーケンシャル」又は「（４）縮約」の性能計算基本式が選択可能である。ここでは、「（４）縮約」の性能計算基本式の方が性能が良いので、性能計算基本式選択部１５０は、「（４）縮約」の性能計算基本式を選択する。
そして、性能計算基本式選択部１５０は、選択した性能計算基本式を計算資源データベース１７０から取得し、取得した性能計算基本式を性能見積り部１６０に出力する。
ステップＳ１５１の後、処理はステップＳ１６０に進む。
【００３９】
ステップＳ１６０において、性能見積り部１６０は、計算資源データベース１７０から、メモリアクセス遅延特性情報を取得する。メモリアクセス遅延特性情報は、計算資源のメモリアーキテクチャに依存したメモリアクセス順序及びメモリアクセスサイズから、メモリアクセス遅延時間を算出する手順を示す。図１３にメモリアクセス遅延特性情報の例を示す。
図１３のメモリアクセス遅延特性情報は、リードアクセスのアクセスサイズがＮ［ｂｙｔｅ］以上、メモリアクセス順序がランダムアクセスのときに、アクセス時間がＴｒ＿ｓｌｏｗ［ｎｓ］であることを示す。また、図１３のメモリアクセス遅延特性情報は、リードアクセスのアクセスサイズ及びメモリアクセス順序が上記の条件以外のときは、アクセス時間がＴｒ＿ｆａｓｔ［ｎｓ］であることを示す。また、図１３のメモリアクセス遅延特性情報は、ライトアクセスのアクセス時間は常にＴｗ［ｎｓ］であることを示す。図１３のメモリアクセス遅延特性情報は、Ｎ［ｂｙｔｅ］のキャッシュを持つ計算資源のメモリアクセス遅延特性を示している。
図１３の例では、メモリアクセス遅延特性情報は、プログラミング言語の形式で表現されているが、メモリアクセス遅延特性情報は、数式等の他の方法で表現されてもよい。
ステップＳ１６０の後は、処理はステップＳ１６１に進む。
【００４０】
ステップＳ１６１において、性能見積り部１６０は、Ｓ１６０で取得したメモリアクセス遅延特性情報に、ステップＳ１４１でパラメータ抽出部１４０から取得したメモリアクセス順序、メモリアクセスサイズを代入することで、ループ処理でのメモリアクセス遅延時間を計算する。
【００４１】
図１３に示す計算資源のメモリアクセス遅延特性情報が用いられ、パラメータ抽出部１４０が図１０で示すアクセスサイズ、メモリアクセス順序を抽出した場合を想定する。この場合は、アクセスサイズ＝Ｎ［ｂｙｔｅ］、リードアクセス順序＝シーケンシャルなので、リードアクセス時間Ｔｒ＿ｆａｓｔ［ｎｓ］、ライトアクセス時間Ｔｗ［ｎｓ］となる。このため、ループ処理内のメモリアクセス時間は（Ｔｒ＿ｆａｓｔ＋Ｔｗ）［ｎｓ］となる。
【００４２】
ステップＳ１６２において、性能見積り部１６０は、計算資源データベース１７０から、計算資源の演算時間情報を取得する。図１４は演算時間情報の例を示す。図１４に示すように、演算時間情報には、計算資源に含まれる演算器ごとに、遅延値と対応する演算種別が示される。
ステップＳ１６２の後は、処理はステップＳ１６３に進む。
【００４３】
ステップＳ１６３において、性能見積り部１６０は、ステップＳ１６２で取得した演算時間情報と、ステップＳ１４１でパラメータ抽出部１４０が抽出した演算種別ごとの演算数から、ループ処理での演算時間を計算する。
【００４４】
図１４に示す演算時間情報が用いられ、パラメータ抽出部１４０が図１０で示す演算種別ごとの演算数を抽出した場合を想定する。図１０の例では、ＡＤＤが１つなので、ループ内演算時間はＴａｌｕ［ｎｓ］となる。もし、ループ処理に、ＡＤＤが１つ、ＳＵＢが１つ、ＳＨＩＦＴが１つ含まれていれば、ループ内演算時間は、３×Ｔａｌｕ［ｎｓ］となる。
ステップＳ１６３の後は、ステップＳ１６４に進む。
【００４５】
ステップＳ１６４において、性能見積り部１６０は、ステップＳ１５１で性能計算基本式選択部１５０が選択した性能計算基本式にステップＳ１６１とステップＳ１６３で性能見積り部１６０が算出したループ処理内のメモリアクセス時間とループ処理内の演算時間を代入してループ処理全体の処理時間を計算する。
【００４６】
性能計算基本式が図１１の「（４）縮約」であり、ループ処理内のメモリアクセス遅延が（Ｔｒ＿ｆａｓｔ＋Ｔｗ）［ｎｓ］であり、ループ処理内の演算時間がＴａｌｕ［ｎｓ］であり、オーバーヘッド（固定値）がＯＨ［ｎｓ］である場合は、ループ処理全体の演算時間は｛（Ｔｒ＿ｆａｓｔ＋Ｔｗ＋Ｔａｌｕ＋ＯＨ）×ｌｏｇ２（Ｎ）｝［ｎｓ］と算出される。
【００４７】
例えば、性能計算基本計算式１５０が図１２の「（１）シーケンシャル」を選択した場合に、上記と同じメモリアクセス遅延時間と演算時間が得られたと仮定すると、ループ処理全体の演算時間は｛（Ｔｒ＿ｆａｓｔ＋Ｔｗ＋Ｔａｌｕ＋ＯＨ）×Ｎ｝［ｎｓ］となる。
このように、性能計算基本式は、ループ処理の実装方法によって生じるループ処理の処理時間の差異を反映している。
【００４８】
ステップＳ１６４の後は、処理はステップＳ１６５に進む。
【００４９】
ステップＳ１６５において、性能見積り部１６０は、ステップＳ１６４で算出した各ループ処理全体の処理時間から、機能モデル全体の処理時間を算出する。
性能見積り部１６０は、例えば、各ループ処理の総和またはクリティカルパスの算出により機能モデル２１０全体の処理時間を算出する。性能見積り部１６０は、タスク並列化が可能な計算資源の場合、クリティカルパスをタスクスケジューリングにより算出する。タスク並列化が可能な計算資源は、例えばマルチコアＣＰＵやＦＰＧＡである。
【００５０】
性能見積り部１６０は、上記で算出した機能モデル２１０全体の処理時間を性能見積値３００として出力し、性能見積り処理を終了する。
【００５１】
なお、上記では、計算資源データベース１７０は、計算資源ごとに１つのメモリアクセス遅延特性情報と１つの演算時間情報を保持している。１つの計算資源が複数の性能計算基本式に適応している場合は、計算資源データベース１７０は、計算資源と性能計算基本式との組合せの単位で、メモリアクセス遅延特性情報及び演算時間情報を保持していてもよい。
図１２の例では、ＧＰＵは「（１）シーケンシャル」、「（２）並列」及び「（４）縮約」に対応している。計算資源データベース１７０は、ＧＰＵと「（１）シーケンシャル」の組合せについてのメモリアクセス遅延特性情報及び演算時間情報、ＧＰＵと「（２）並列」の組合せについてのメモリアクセス遅延特性情報及び演算時間情報、及びＧＰＵと「（４）縮約」の組合せについてのメモリアクセス遅延特性情報及び演算時間情報を保持してもよい。
そして、各メモリアクセス遅延特性情報には異なる算出手順が示され、各演算時間情報には異なる算出手順が示されている。
【００５２】
＊＊＊実施の形態の効果の説明＊＊＊
本実施の形態に係る性能見積り装置は、ループ処理の特性と、計算資源のアーキテクチャとに基づき、性能計算基本式を選択する。そして、本実施の形態に係る性能見積り装置は、選択した性能計算基本式を用いて、ループ処理の処理時間を計算する。このため、シミュレーションを用いずに、計算資源のアーキテクチャを反映した高精度な性能見積りを実現することができる。
【００５３】
＊＊＊ハードウェア構成の説明＊＊＊
最後に、性能見積り装置１００のハードウェア構成の補足説明を行う。
図２に示すプロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
プロセッサ９０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等である。
メモリ９０２は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
記憶装置９０３は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等である。
入力装置９０４は、例えば、マウス又はキーボードである。
出力装置９０５は、例えば、ディスプレイ装置である。
【００５４】
また、記憶装置９０３には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。
そして、ＯＳの少なくとも一部がプロセッサ９０１により実行される。
プロセッサ９０１はＯＳの少なくとも一部を実行しながら、計算資源情報取得部１１０、機能モデル取得部１２０、機能モデル取得部１２０、処理分割部１３０、パラメータ抽出部１４０、性能計算基本式選択部１５０及び性能見積り部１６０の機能を実現するプログラムを実行する。
プロセッサ９０１がＯＳを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、計算資源情報取得部１１０、機能モデル取得部１２０、機能モデル取得部１２０、処理分割部１３０、パラメータ抽出部１４０、性能計算基本式選択部１５０及び性能見積り部１６０の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、記憶装置９０３、プロセッサ９０１内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、計算資源情報取得部１１０、機能モデル取得部１２０、処理分割部１３０、パラメータ抽出部１４０、性能計算基本式選択部１５０及び性能見積り部１６０の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ等の可搬記憶媒体に記憶されてもよい。
【００５５】
また、計算資源情報取得部１１０、機能モデル取得部１２０、機能モデル取得部１２０、処理分割部１３０、パラメータ抽出部１４０、性能計算基本式選択部１５０及び性能見積り部１６０の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、性能見積り装置１００は、ロジックＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった電子回路により実現されてもよい。
この場合は、計算資源情報取得部１１０、機能モデル取得部１２０、機能モデル取得部１２０、処理分割部１３０、パラメータ抽出部１４０、性能計算基本式選択部１５０及び性能見積り部１６０は、それぞれ電子回路の一部として実現される。
なお、プロセッサ及び上記の電子回路を総称してプロセッシングサーキットリーともいう。
【符号の説明】
【００５６】
１００  性能見積り装置、１１０  計算資源情報取得部、１２０  機能モデル取得部、１３０  処理分割部、１４０  パラメータ抽出部、１５０  性能計算基本式選択部、１６０  性能見積り部、１７０  計算資源データベース、２００  計算資源情報、２１０  機能モデル、３００  性能見積値、９０１  プロセッサ、９０２  メモリ、９０３  記憶装置、９０４  入力装置、９０５  出力装置。
【図１】
0006548848.tif 000002
【図２】
0006548848.tif 000003
【図３】
0006548848.tif 000004
【図４】
0006548848.tif 000005
【図５】
0006548848.tif 000006
【図６】
0006548848.tif 000007
【図７】
0006548848.tif 000008
【図８】
0006548848.tif 000009
【図９】
0006548848.tif 000010
【図１０】
0006548848.tif 000011
【図１１】
0006548848.tif 000012
【図１２】
0006548848.tif 000013
【図１３】
0006548848.tif 000014
【図１４】
0006548848.tif 000015