(57)【要約】  アーキテクチャ候補生成部は、プログラムコードから抽出された複数の機能モジュールの各々に、各機能モジュールを実現するデバイスとして、プロセッサ及びプロセッサ以外のハードウェアデバイスのうちのいずれかを指定し、各々においてデバイスの組み合わせが異なる、複数の機能を実現するコンピュータアーキテクチャの候補をアーキテクチャ候補として複数生成する。アーキテクチャ候補選択部は、アーキテクチャ候補生成部により生成された複数のアーキテクチャ候補の中から、コンピュータアーキテクチャに要求される要求属性を持つアーキテクチャ候補を選択する。
2018066073.tif 000002
【特許請求の範囲】
【請求項１】
プログラムコードから抽出された複数の機能モジュールの各々に、各機能モジュールを実現するデバイスとして、プロセッサ及び前記プロセッサ以外のハードウェアデバイスのうちのいずれかを指定し、それぞれのデバイスの組み合わせが異なるコンピュータアーキテクチャの候補をアーキテクチャ候補として複数生成するアーキテクチャ候補生成部と、
前記アーキテクチャ候補生成部により生成された複数のアーキテクチャ候補の中から、前記コンピュータアーキテクチャに要求される要求属性を持つアーキテクチャ候補を選択するアーキテクチャ候補選択部とを有する情報処理装置。
【請求項２】
前記アーキテクチャ候補生成部は、
機能モジュールごとに、各機能モジュールに要求される要求属性を持つプロセッサ又はハードウェアデバイスを指定する請求項１に記載の情報処理装置。
【請求項３】
前記アーキテクチャ候補選択部は、
前記要求属性を持つアーキテクチャ候補が存在しない場合に、前記要求属性を満たさないが、前記複数のアーキテクチャ候補の中で最も要求属性に近い属性を持つアーキテクチャ候補を近似アーキテクチャ候補として選択する請求項１に記載の情報処理装置。
【請求項４】
前記情報処理装置は、更に、
既定の抽出ルールを用いて前記プログラムコードから前記複数の機能モジュールを抽出する機能モジュール抽出部を有し、
前記アーキテクチャ候補選択部は、
前記近似アーキテクチャ候補の属性と前記要求属性との差分を前記機能モジュール抽出部に通知し、
前記機能モジュール抽出部は、
前記アーキテクチャ候補選択部から通知された前記差分に基づき、前記抽出ルールを変更し、変更後の抽出ルールを用いて前記プログラムコードから新たな複数の機能モジュールを抽出する請求項３に記載の情報処理装置。
【請求項５】
前記情報処理装置は、更に、
前記プログラムコードに含まれる演算子の数、分岐の数、ループの数、変数の数及びデータの入出力数の少なくともいずれかを処理ごとに解析する解析部を有し、
前記機能モジュール抽出部は、
前記解析部による処理ごとの解析結果に前記抽出ルールを適用して、前記複数の機能モジュールを抽出する請求項４に記載の情報処理装置。
【請求項６】
コンピュータが、プログラムコードから抽出された複数の機能モジュールの各々に、各機能モジュールを実現するデバイスとして、プロセッサ及び前記プロセッサ以外のハードウェアデバイスのうちのいずれかを指定し、それぞれのデバイスの組み合わせが異なるコンピュータアーキテクチャの候補をアーキテクチャ候補として複数生成し、
前記コンピュータが、生成された複数のアーキテクチャ候補の中から、前記コンピュータアーキテクチャに要求される要求属性を持つアーキテクチャ候補を選択する情報処理方法。
【請求項７】
プログラムコードから抽出された複数の機能モジュールの各々に、各機能モジュールを実現するデバイスとして、プロセッサ及び前記プロセッサ以外のハードウェアデバイスのうちのいずれかを指定し、それぞれのデバイスの組み合わせが異なるコンピュータアーキテクチャの候補をアーキテクチャ候補として複数生成するアーキテクチャ候補生成処理と、
前記アーキテクチャ候補生成処理により生成された複数のアーキテクチャ候補の中から、前記コンピュータアーキテクチャに要求される要求属性を持つアーキテクチャ候補を選択するアーキテクチャ候補選択処理とをコンピュータに実行させる情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば組込みシステムにおけるアーキテクチャ設計を支援する技術に関する。
【背景技術】
【０００２】
家電製品や事務機器などで広く利用されているシステムは、一般に、ハードウェアとソフトウェアとから構成されている組込みシステムである。組込みシステムは、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）（またはＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ））、プロセッサ、メモリ等から構成される。【０００３】
組込みシステムの設計では、組込みシステム全体の処理機能を記述した仕様を、ＡＳＩＣなどによりハードウェア化する部分、プロセッサで実行されるプログラムとしてソフトウェア化する部分に分割する必要がある。これをソフトウェア／ハードウェア機能分割という。
また、分割された複数の機能を、組込みシステム上にどのように実装すれば所望の性能を出せるかということを検討し設計する必要がある。これをアーキテクチャ設計と呼ぶ。【０００４】
従来、組込みシステムのアーキテクチャ設計は機能モデルと非機能要件から、演算量や処理の並列性、回路規模などを考慮し、人手で機能を分割し、ソフトウェアとハードウェアデバイスへの分割を行っていた。しかしながら、アーキテクチャ設計を行った時点では、非機能要件を満たす最適なアーキテクチャとなっているか否かを判断することは困難である。このため、実装工程や実機評価工程において非機能要件を満たさないことが発覚する事態が発生し、工程の大幅な手戻りが懸念される。【０００５】
特許文献１では、この問題に対処するための技術が開示されている。
具体的には、特許文献１では、組込みシステム全体の処理機能を記述した仕様に基づき、各処理の処理負荷を計算し、閾値以内の処理をプロセッサで実行させ、閾値を超える処理をハードウェアデバイスで実行させるソフトウェア／ハードウェア機能分割を行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−１２５４１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１の技術では、プロセッサとハードウェアデバイスとの間で機能分割を行う。このため、特許文献１の技術では、プロセッサとハードウェアデバイスとをバス接続したプラットフォームを基にしたアーキテクチャしか生成することができない。つまり、特許文献１の技術では、プロセッサ以外の複数のハードウェアデバイスを組み合わせたプラットフォームといった他のプラットフォームを基にしたアーキテクチャを生成することができないという課題がある。【０００８】
本発明は、このような課題を解決することを主な目的とする。つまり、本発明は、プロセッサとハードウェアデバイスとの組合せに限らず、多様なアーキテクチャ候補の中から最適なコンピュータアーキテクチャを選択することができる構成を得ることを主な目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る情報処理装置は、
プログラムコードから抽出された複数の機能モジュールの各々に、各機能モジュールを実現するデバイスとして、プロセッサ及び前記プロセッサ以外のハードウェアデバイスのうちのいずれかを指定し、それぞれのデバイスの組み合わせが異なるコンピュータアーキテクチャの候補をアーキテクチャ候補として複数生成するアーキテクチャ候補生成部と、
前記アーキテクチャ候補生成部により生成された複数のアーキテクチャ候補の中から、前記コンピュータアーキテクチャに要求される要求属性を持つアーキテクチャ候補を選択するアーキテクチャ候補選択部とを有する。
【発明の効果】
【００１０】
本発明では、プロセッサとハードウェアデバイスとの組合せを含む複数のアーキテクチャ候補を生成するため、多様なアーキテクチャ候補の中から最適なコンピュータアーキテクチャを選択することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１に係るアーキテクチャ生成装置の機能構成例を示す図。
【図２】実施の形態１に係る記憶部で記憶されている情報の例を示す図。
【図３】実施の形態１に係るアーキテクチャ生成装置のハードウェア構成例を示す図。
【図４】実施の形態１に係るアーキテクチャ生成装置の動作例を示すフローチャート図。
【図５】実施の形態１に係るアーキテクチャ生成装置の動作例を示すフローチャート図。
【図６】実施の形態１に係る機能モデルソースコードの例を示す図。
【図７】実施の形態１に係る機能モデルソースコードの例を示す図。
【図８】実施の形態１に係る機能モデルソースコードの例を示す図。
【図９】実施の形態１に係る非機能要件情報の例を示す図。
【図１０】実施の形態１に係る機能モデルベクトルの例を示す図。
【図１１】実施の形態１に係る非機能要件ベクトルの例を示す図。
【図１２】実施の形態１に係る機能モジュール情報の例を示す図。
【図１３】実施の形態１に係るデータ入出力関係情報の例を示す図。
【図１４】実施の形態１に係るブロック候補の例を示す図。
【図１５】実施の形態１に係るアーキテクチャ候補の例を示す図。
【図１６】実施の形態１に係る既存アーキテクチャを用いた機械学習の手順を示すフローチャート図。
【図１７】実施の形態１に係る機械学習で得られる機能モデルベクトルの例を示す図。
【図１８】実施の形態１に係る機械学習で得られる非機能要件ベクトルの例を示す図。
【図１９】実施の形態１に係る機械学習で用いられる既存アーキテクチャの例を示す図。
【図２０】実施の形態１に係る機械学習で得られるグルーピング結果の例を示す図。
【図２１】実施の形態１に係る機械学習で得られるグルーピング結果の例を示す図。
【発明を実施するための形態】
【００１２】
実施の形態１．
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分または相当する部分を示す。
【００１３】
＊＊＊構成の説明＊＊＊
図１は、実施の形態１に係るアーキテクチャ生成装置１００の機能構成例を示す。アーキテクチャ生成装置１００は、高位合成装置２００及びソフトウェアコンパイラ３００に接続されている。
アーキテクチャ生成装置１００は、情報処理装置の例である。また、アーキテクチャ生成装置１００で行われる動作は情報処理方法の例である。
図２は、アーキテクチャ生成装置１００内の記憶部１７０で記憶されている情報を示す。
図３は、アーキテクチャ生成装置１００のハードウェア構成例を示す。
【００１４】
先ず、図３を参照して、アーキテクチャ生成装置１００のハードウェア構成例を説明する。
【００１５】
アーキテクチャ生成装置１００は、ハードウェアとして、プロセッサ９０１、補助記憶装置９０２、メモリ９０３、通信装置９０４、入力装置９０５及びディスプレイ９０６を備えるコンピュータである。
補助記憶装置９０２には、図１に示すソースコード取得部１１０、解析部１２０、機能モジュール抽出部１３０、ブロック候補抽出部１４０、アーキテクチャ候補抽出部１５０、性能評価部１６０及び既存アーキテクチャ情報取得部１９０の機能を実現するプログラムが記憶されている。
そして、これらプログラムがメモリ９０３にロードされて、プロセッサ９０１がこれらプログラムを実行する。当該プログラムを実行することで、プロセッサ９０１が、後述するソースコード取得部１１０、解析部１２０、機能モジュール抽出部１３０、ブロック候補抽出部１４０、アーキテクチャ候補抽出部１５０、性能評価部１６０及び既存アーキテクチャ情報取得部１９０の動作を行う。
図１では、プロセッサ９０１がソースコード取得部１１０、解析部１２０、機能モジュール抽出部１３０、ブロック候補抽出部１４０、アーキテクチャ候補抽出部１５０、性能評価部１６０及び既存アーキテクチャ情報取得部１９０の機能を実現するプログラムを実行している状態を模式的に表している。
なお、ブロック候補抽出部１４０、アーキテクチャ候補抽出部１５０及び性能評価部１６０の機能を実現するプログラムは、情報処理プログラムの例である。
また、補助記憶装置９０２は、図１に示す記憶部１７０として機能する。すなわち、補助記憶装置９０２は、図２に示す情報を記憶している。また、メモリ９０３が、図１に示す記憶部１７０として機能してもよい。すなわち、メモリ９０３が、図２に示す情報を記憶するようにしてもよい。
通信装置９０４は、アーキテクチャ生成装置１００が外部装置と通信する際に用いられる。通信装置９０４は、データを受信するレシーバー及びデータを送信するトランスミッターを含む。
入力装置９０５は、アーキテクチャ生成装置１００のユーザが各種情報をアーキテクチャ生成装置１００に入力するために用いられる
ディスプレイ９０６は、アーキテクチャ生成装置１００のユーザに各種情報を提示するために用いられる。
【００１６】
次に、図１を参照して、アーキテクチャ生成装置１００の機能構成例を説明する。
【００１７】
ソースコード取得部１１０は、機能モデルソースコード１７１及び非機能要件情報１７２を入力装置９０５を介してユーザから取得する。
機能モデルソースコード１７１及び非機能要件情報１７２はアーキテクチャ生成装置１００のユーザが生成する。
また、ソースコード取得部１１０は、取得した機能モデルソースコード１７１と非機能要件情報１７２とを、記憶部１７０に格納する。図２は、ソースコード取得部１１０により機能モデルソースコード１７１と非機能要件情報１７２とが格納された状態を示す。
機能モデルソースコード１７１は、アーキテクチャ設計の対象となる組込みシステムの複数の機能が記述されているプログラムコードである。
ソースコード取得部１１０は、例えば図６、図７及び図８に示す機能モデルソースコード１７１を取得する。なお、図６、図７及び図８に示す機能モデルソースコード１７１の詳細は後述する。
非機能要件情報１７２には、機能モデルソースコード１７１に記述されている機能に要求される属性（要求属性）である非機能要件が記述される。非機能要件情報１７２には、例えば、処理性能に関する要件及び回路規模に関する要件が記述される。
ソースコード取得部１１０は、例えば図９に示す非機能要件情報１７２を取得する。なお、図９に示す非機能要件情報１７２の詳細は後述する。
【００１８】
解析部１２０は、機能モデルソースコード１７１を関数などの最小構成単位で分割し、最小構成単位ごとに演算子の数、分岐の数等を解析し、解析結果を示す機能モデルベクトル１７３を生成する。
解析部１２０は、例えば、図１０に示す機能モデルベクトル１７３を生成する。なお、図１０に示す機能モデルベクトル１７３の詳細は後述する。
また、解析部１２０は、非機能要件情報１７２を関数などの最小構成単位で分割し、非機能要件ベクトル１７４を生成する。
解析部１２０は、例えば、図１１に示す非機能要件ベクトル１７４を生成する。なお、図１１に示す非機能要件ベクトル１７４の詳細は後述する。
また、解析部１２０は、生成した機能モデルベクトル１７３と非機能要件ベクトル１７４を記憶部１７０に格納する。図２は、解析部１２０により機能モデルベクトル１７３と非機能要件ベクトル１７４が記憶部１７０に格納されている状態を示す。
【００１９】
機能モジュール抽出部１３０は、機能モデルベクトル１７３と非機能要件ベクトル１７４と抽出ルール１７５とを記憶部１７０から読み出す。
抽出ルール１７５は、機能モデルソースコード１７１から機能モジュールを抽出するためのルールである。抽出ルール１７５は、機械学習により得られたルールである。
機能モジュールとは、機能モデルソースコード１７１を構成する要素の集合である。機能モジュールには、機能モデルソースコード１７１で実現される複数の機能のうちの少なくとも１つの機能が含まれる。機能は、例えば、機能モデルソースコード１７１内のｆｏｒループブロックで実現される動作である。つまり、１つのｆｏｒループブロックに記述されている内容を１つの機能として捉えることができる。但し、どのような範囲を１つの機能と定義するかはアーキテクチャ生成装置１００のユーザに委ねられている。例えば、１つの関数を１つの機能として定義してもよい。
本実施の形態では、機能モジュール抽出部１３０は、抽出ルール１７５に基づいて、機能モデルソースコード１７１の要素をグルーピングすることで機能モジュールを抽出する。
また、機能モジュール抽出部１３０は、機能モジュールの抽出結果を示す機能モジュール情報１７６を生成する。
例えば、機能モジュール抽出部１３０は、図１２に示す機能モジュール情報１７６を生成する。図１２に示す機能モジュール情報１７６の詳細は後述する。
また、機能モジュール抽出部１３０は、機能モデルベクトル１７３に基づき、機能モジュール情報１７６に示される機能モジュール間のデータの入出力関係を解析し、解析結果が示されるデータ入出力関係情報１７７を生成する。
例えば、機能モジュール抽出部１３０は、図１３に示すデータ入出力関係情報１７７を生成する。図１３に示すデータ入出力関係情報１７７の詳細は後述する。
【００２０】
ブロック候補抽出部１４０は、機能モジュールごとにブロック候補を抽出する。
より具体的には、ブロック候補抽出部１４０は、機能モジュール抽出部１３０により得られた複数の機能モジュールの各々に、ブロックテンプレート１７８に基づき、各機能モジュールを実現するデバイスとして、プロセッサ及びプロセッサ以外のハードウェアデバイスのうちのいずれかを指定する。なお、ブロック候補抽出部１４０が各機能モジュールに割り当てるデバイスをブロック候補という。また、ブロック候補抽出部１４０は、各ブロック候補の性能及び回路規模を見積り、非機能要件情報１７２の非機能要件に合致しないブロック候補を除外する。つまり、ブロック候補抽出部１４０は、機能モジュールごとに、各機能モジュールに要求される要求属性を持つプロセッサ又はハードウェアデバイスをブロック候補として指定する。
そして、ブロック候補抽出部１４０は、機能モジュールごとのブロック候補の抽出結果が示されるブロック候補抽出結果１７９を生成する。
なお、ブロック候補抽出部１４０は、後述のアーキテクチャ候補抽出部１５０とともにアーキテクチャ候補生成部の例である。
また、ブロック候補抽出部１４０で行われる処理は、アーキテクチャ候補生成処理を構成する。
【００２１】
アーキテクチャ候補抽出部１５０は、ブロック候補抽出結果１７９及びデータ入出力関係情報１７７に基づき、アーキテクチャ候補を抽出する。
つまり、アーキテクチャ候補抽出部１５０は、機能モデルソースコード１７１に含まれる複数の機能を実現するコンピュータアーキテクチャの候補、すなわち、組込みシステムのアーキテクチャの候補をアーキテクチャ候補として複数生成する。なお、各アーキテクチャ候補では、ブロック候補の組み合わせが異なる。
そして、ブロック候補抽出部１４０は、抽出したアーキテクチャ候補が示されるアーキテクチャ候補抽出結果１８０を生成する。
アーキテクチャ候補抽出部１５０は、ブロック候補抽出部１４０とともにアーキテクチャ候補生成部の例である。
また、アーキテクチャ候補抽出部１５０で行われる処理は、アーキテクチャ候補生成処理を構成する。
【００２２】
性能評価部１６０は、アーキテクチャ候補抽出結果１８０に示される各アーキテクチャ候補の性能評価を行う。そして、性能評価部１６０は、アーキテクチャ候補抽出部１５０により抽出された複数のアーキテクチャ候補の中から、組込みシステムのアーキテクチャに要求される要求属性を持つアーキテクチャ候補を選択する。
より具体的には、性能評価部１６０は、アーキテクチャ候補が非機能要件情報１７２に示される非機能要件を満たすかどうか判定し、非機能要件を満たすアーキテクチャ候補を選択する。そして、性能評価部１６０は、選択したアーキテクチャ候補が示されるアーキテクチャ候補選択結果１８１を生成する。
また、性能評価部１６０は、非機能要件（要求属性）を満たすアーキテクチャ候補が存在しない場合は、非機能要件を満たさないが、ブロック候補抽出部１４０が生成した複数のアーキテクチャ候補の中で最も非機能要件に近い属性を持つアーキテクチャ候補を近似アーキテクチャ候補として選択する。
そして、性能評価部１６０は、選択した近似アーキテクチャ候補の属性と非機能要件（要求属性）との差分をブロック候補抽出部１４０に通知する。
性能評価部１６０は、アーキテクチャ候補選択部の例である。
また、性能評価部１６０で行われる処理は、アーキテクチャ候補選択処理の例である。
【００２３】
既存アーキテクチャ情報取得部１９０は、設計済みのアーキテクチャの情報である既存アーキテクチャ情報１８２を入力装置９０５を介してユーザから取得する。そして、既存アーキテクチャ情報取得部１９０は、既存アーキテクチャ情報１８２を記憶部１７０に格納する。
既存アーキテクチャ情報１８２は、抽出ルール１７５を生成するために使用する。
【００２４】
また、アーキテクチャ生成装置１００は、高位合成装置２００と連携して動作する。
高位合成装置２００は、ＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）よりも抽象度が高いＣ言語、Ｃ＋＋言語、ＳｙｓｔｅｍＣ言語などの高級言語を用いて、自動的にＲＴＬを生成する。
高位合成装置２００は、具体的には市販されている高位合成ツールにより実現可能である。
【００２５】
アーキテクチャ生成装置１００は、ソフトウェアコンパイラ３００と連携して動作する。
ソフトウェアコンパイラ３００は、Ｃ言語等で書かれたソースコードからターゲットの組込みシステムのプロセッサで実行可能なバイナリファイルを出力する。
ソフトウェアコンパイラ３００は、具体的には市販されているコンパイラにより実現可能である。
【００２６】
＊＊＊動作の説明＊＊＊
次に、図４及び図５を参照して、本実施の形態に係るアーキテクチャ生成装置１００の動作例を説明する。
【００２７】
先ず、ステップＳ１１０において、ソースコード取得部１１０が、機能モデルソースコード１７１と非機能要件情報１７２をユーザから取得する。そして、ソースコード取得部１１０は、取得した機能モデルソースコード１７１と非機能要件情報１７２を記憶部１７０に格納する。
機能モデルソースコード１７１は、組込みシステムの処理機能／システム構成をプログラム言語（Ｃ言語など）で記述したプログラムコードである。
図６、図７及び図８は、機能モデルソースコード１７１の例を示す。作図上の理由から機能モデルソースコード１７１は図６、図７及び図８に分割されているが、機能モデルソースコード１７１は図６、図７及び図８の記述内容から構成される１つのプログラムコードである。
機能モデルソースコード１７１は、図６、図７及び図８に示すように一般的なプログラムと同一だが、システムの外部入力／出力に対応する変数は／＊ｅｘｔｅｒｎａｌ＿ｉｎｐｕｔ＊／，／＊ｅｘｔｅｒｎａｌ＿ｏｕｔｐｕｔ＊／と指定されている。
なお、図６、図７及び図８において、ＤＩＶ０〜ＤＩＶ７は、それぞれ組込みシステムにおいて実現される機能を表す。以下、機能ＤＩＶ０−ＤＩＶ７を区別する必要がない場合は、機能ＤＩＶ０−ＤＩＶ７を機能ＤＩＶｘと総称する。
【００２８】
図９に示されるように、非機能要件情報１７２には、非機能要件として、処理性能制約及び回路規模制約が記述される。
処理性能制約は、機能モデルソースコード１７１内の特定の機能の処理から別の特定の機能の処理が制限時間Ｔｔｈ［ｓ］以内に完了するという制約である。図９の例では、機能ＤＩＶ０からＤＩＶ４までの処理が１００μｓ以内に完了するという処理性能制約Ｔｔｈ０と、機能ＤＩＶ５からＤＩＶ７までの処理が５０μｓ以内に完了するという処理性能制約Ｔｔｈ１とが記述されている。
また、回路規模制約は、機能モデルソースコードにより実現される組込みシステムの全体の回路規模がＡｔｈ［Ｇａｔｅ］以内という制約である。図９の例では、組込みシステムの全体の回路規模が１０，０００ＫＧであるという回路規模制約Ａｔｈ０が記述されている。
なお、非機能要件情報１７２には、処理性能制約及び回路規模制約以外の非機能要件が記述されていてもよい。
【００２９】
図４のステップＳ１２０において、解析部１２０は、機能モデルソースコード１７１から機能モデルベクトル１７３を生成する。
より具体的には、解析部１２０は、機能モデルソースコード１７１を最小分割単位で分割する。本実施の形態では、解析部１２０は、機能モデルソースコード１７１を、図６、図７及び図８に示す機能ＤＩＶ０−ＤＩＶ７に分割する。
次に、解析部１２０は、機能モデルソースコード１７１に含まれる演算子の数、分岐の数、ループの数、変数の数及びデータの入出力数の少なくともいずれかの数値パラメータを機能ＤＩＶｘごとに解析して、機能モデルベクトル１７３を生成する。
ここでは、解析部１２０は、機能モデルソースコード１７１に含まれる演算子の数、分岐の数、ループの数、中間変数の数及びデータの入出力数を機能ＤＩＶｘごとに解析して、機能モデルベクトル１７３を生成することとする。
解析部１２０は、例えば、以下の手法で、各パラメータを抽出する。
（１）演算子数
解析部１２０は、機能ＤＩＶｘに含まれる“＋”、“−”、“×”、“−”の個数を求める。なお、機能ＤＩＶｘにｗｈｉｌｅ、ｆｏｒなどの繰返し処理がある場合は、解析部１２０は演算子ごとに繰り返し回数×個数を求める。
（２）分岐数
解析部１２０は、機能モデルソースコード１７１に含まれるｉｆ／ｅｌｓｅ  ｉｆ／ｅｌｓｅの個数を求める。また、解析部１２０は、機能モデルソースコード１７１にｓｗｉｔｃｈがある場合はｃａｓｅの個数の合計値を求める。
（３）ループ数
解析部１２０は、機能ＤＩＶｘの最も外側のｆｏｒループの回数を求める。
（４）中間変数個数
解析部１２０は、機能ＤＩＶｘに含まれる中間変数の個数を求める。また、解析部１２０は、機能ＤＩＶｘ以外の機能で参照も代入もされていない変数の個数を求める。
（５）組込みシステム外部からの入力数
解析部１２０は、機能ＤＩＶｘ内で／＊ｅｘｔｅｒｎａｌ＿ｉｎｐｕｔ＊／で指定された変数が参照される回数の合計値を求める。
（６）組込みシステム外部への出力数
解析部１２０は、機能ＤＩＶｘ内で／＊ｅｘｔｅｒｎａｌ＿ｏｕｔｐｕｔ＊／で指定された変数に代入される回数の合計値を求める。
（７）他の機能からの入力数
解析部１２０は、機能ＤＩＶｘ内で参照されている変数の数を求める。なお、機能ＤＩＶｘ内に中間変数以外の変数がある場合は、解析部１２０は、機能モデルソースコード１７１で機能ＤＩＶｘよりも上に記載されている機能において最後に代入されている機能ＤＩＶｘからの入力数も計上する。
（８）他の機能への出力数
解析部１２０は、機能ＤＩＶｘ内で参照している変数の数を求める。なお、機能ＤＩＶｘ内に中間変数以外の変数がある場合は、解析部１２０は、機能モデルソースコード１７１で機能ＤＩＶｘよりも下に記載されている機能ＤＩＶｘ＋ｎが機能ＤＩＶｘを参照している個数も計上する。
【００３０】
図１０は、解析部１２０により生成された機能モデルベクトル１７３の例を示す。
図１０の機能モデルベクトル１７３では、機能ＤＩＶ０−ＤＩＶ７の各々に対して、演算子（＋、―、＊、／、＝）の数、分岐の数、ループの数、中間変数の数及びデータの入出力数が示される。
なお、入力の欄では、列に入力元の機能が記述され、行に入力先の機能が記述される。また、出力の欄では、列に出力先の機能が記述され、行に出力元の機能が記述される。図１０の例では、外部から機能ＤＩＶ０にデータが渡される。また、機能ＤＩＶ０から機能ＤＩＶ１にデータが渡される。また、機能ＤＩＶ１から機能ＤＩＶ２及び機能ＤＩＶ３にデータが渡される。また、機能ＤＩＶ２から機能ＤＩＶ４にデータが渡される。また、機能ＤＩＶ３から機能ＤＩＶ４及び機能ＤＩＶ６にデータが渡される。また、機能ＤＩＶ４から機能ＤＩＶ５にデータが渡される。また、機能ＤＩＶ５から機能ＤＩＶ６にデータが渡される。また、機能ＤＩＶ６から機能ＤＩＶ７にデータが渡される。また、機能ＤＩＶ７から外部にデータが渡される。
なお、本実施の形態では、機能ＤＩＶｘ、すなわち、ｆｏｒループブロックを最小分割単位としたが、最小分割単位はこの限りではなく、最下層の関数、行を最小分割単位とすることもできる。
【００３１】
次に、図４のステップＳ１２１において、解析部１２０が、非機能要件情報１７２から非機能要件ベクトル１７４を生成する。
より具体的には、解析部１２０は、非機能要件情報１７２から機能ＤＩＶｘに対して定義されている制約値を抽出し、抽出した制約値を用いて非機能要件ベクトル１７４を生成する。
図９に示す非機能要件情報１７２が与えられた場合は、解析部１２０は、図１１に示すような非機能要件ベクトル１７４を生成する。例えば処理性能制約Ｔｔｈ０は、機能ＤＩＶ０―ＤＩＶ４に対して定義されている非機能要件である。このため、解析部１２０は、機能ＤＩＶ０〜ＤＩＶ４に１００μｓを設定して非機能要件ベクトル１７４を生成する。一方、解析部１２０は、機能ＤＩＶ５〜ＤＩＶ７には０を設定する。回路規模制約Ａｔｈは組込みシステム全体に対する非機能要件であるため、解析部１２０は、機能ＤＩＶ０−ＤＩＶ７のすべてに１０，０００ＫＧを設定する。また、非機能要件フィードバック情報は性能評価部１６０にフィードバック入力される情報であるが、初期値は非機能要件情報の値と同一とする。
【００３２】
次に、ステップＳ１３０において、機能モジュール抽出部１３０は、機能ＤＩＶｘをグルーピングし、機能モジュール情報１７６を生成する。
より具体的には、機能モジュール抽出部１３０は、機能モデルベクトル１７３と非機能要件ベクトル１７４に抽出ルール１７５を適用して、機能モデルソースコード１７１に含まれる複数の機能ＤＩＶｘを複数の機能モジュールにグルーピングする。そして、機能モジュール抽出部１３０は、グルーピング結果を示す機能モジュール情報１７６を生成する。
図１２に機能モジュール抽出部１３０によって生成される機能モジュール情報１７６の例を示す。
図１２の例では、機能ＤＩＶ０、機能ＤＩＶ１及び機能ＤＩＶ２は、機能モジュール０に分類されている。機能ＤＩＶ３は、機能モジュール１に分類されている。機能ＤＩＶ４及び機能ＤＩＶ５は、機能モジュール２に分類されている。機能ＤＩＶ６及び機能ＤＩＶ７は、機能モジュール３に分類されている。
【００３３】
次に、ステップＳ１３１において、機能モジュール抽出部１３０は、機能モジュール間のデータの入出力関係を解析し、解析結果が示されるデータ入出力関係情報１７７を生成する。
より具体的には、機能モデルベクトル１７３に示される機能ごとのデータの入力状況及び出力状況を解析して、機能モジュール情報１７６に示される機能モジュール間のデータの入出力関係を解析する。
図１３の（ａ）に、データ入出力関係情報の例を示す。また、図１３（ｂ）は、図１３の（ａ）のデータ入出力関係情報に示される内容を図式化したものである。
【００３４】
次に、ステップＳ１４０において、ブロック候補抽出部１４０が、機能モジュールに対応するブロック候補を抽出する。
より具体的には、ブロック候補抽出部１４０は、機能モジュールごとに、ブロックテンプレート１７８に含まれる複数のブロックのうち、機能モジュールに対応するブロックをブロック候補として抽出する。
ブロックテンプレート１７８には、ソフトウェアを実行するプロセッサ、ＡＳＩＣ、ＦＰＧＡ等の専用ハードウェアデバイスがブロックとして含まれている。
ブロックテンプレート１７８には以下の情報が含まれる。なお、以下において、Ｓ／Ｗはソフトウェアを意味し、Ｈ／Ｗはハードウェアを意味する。
（１）処理タイプ：Ｓ／Ｗ、Ｈ／Ｗ（パイプライン）、Ｈ／Ｗ（並列）、Ｈ／Ｗ（逐次実行）
（２）通信タイプ：バス、直接接続
（３）メモリタイプ：内部メモリ、外部メモリ（揮発）、外部メモリ（不揮発）
上記の（１）処理タイプは、機能モジュールを実現するデバイスを、ソフトウェアを実行するプロセッサとするか、専用Ｈ／Ｗとするかを決定するためのパラメータである。また、（１）処理タイプには、専用Ｈ／Ｗの種類として、例えば、パイプライン処理が行われるＨ／Ｗ、並列処理が行われるＨ／Ｗ、逐次処理が行われるＨ／Ｗが定義される。
ブロック候補抽出部１４０は、データ入出力関係情報１７７に示される機能モジュールごとの入出力関係を解析して、各機能モジュールに対応する全てのブロックをブロック候補として抽出する。
例えば、図１３では、機能モジュール０は、外部（ＡＸＩスレーブ）からデータが入力されるが、ブロック候補抽出部１４０は、機能モジュール０に対して、ＡＸＩスレーブとのインタフェースを有するデバイスを全てをブロック候補として抽出する。
図１４は、機能モジュール０に対してブロック候補抽出部１４０により抽出されたブロック候補の例を示す。
図１４では、ブロック候補０−０、ブロック候補０−１、ブロック候補０−２が抽出されている。
【００３５】
次に、ステップＳ１４１において、ブロック候補抽出部１４０は、ステップＳ１４０で抽出した複数のブロック候補から、非機能要件情報１７２に示される非機能要件を満たすブロック候補を選択する。そして、ブロック候補抽出部１４０は、選択したブロック候補が示されるブロック候補抽出結果１７９を生成する。
より具体的には、ブロック候補抽出部１４０は、ステップＳ１４０で抽出した複数のブロック候補のうち、処理タイプがＨ／Ｗであるブロック候補は、高位合成装置２００によって高位合成を行う。ブロック候補抽出部１４０は、高位合成装置２００の高位合成により処理性能や回路規模などのブロック候補の性能を得る。そして、ブロック候補抽出部１４０は、高位合成により得られた性能が非機能要件情報１７２の非機能要件を満たすか否かをブロック候補ごとに判定する。ブロック候補抽出部１４０は、性能が非機能要件を満たすブロック候補を選択し、選択したブロック候補が示されるブロック候補抽出結果１７９を生成する。
また、ブロック候補抽出部１４０は、ステップＳ１４０で抽出した複数のブロック候補のうち、処理タイプがＳ／Ｗであるブロック候補は、ソフトウェアコンパイラ３００によって高位合成を行う。ブロック候補抽出部１４０は、ソフトウェアコンパイラ３００の高位合成により、命令実行数とクロック数を得る。そして、ブロック候補抽出部１４０は、実行命令数×クロック数から処理性能を算出する。ブロック候補抽出部１４０は、算出した処理性能の非機能要件を満たすか否かをブロック候補ごとに判定する。ブロック候補抽出部１４０は、性能が非機能要件を満たすブロック候補を選択し、選択したブロック候補が示されるブロック候補抽出結果１７９を生成する。
【００３６】
次に、ステップＳ１５０において、アーキテクチャ候補抽出部１５０が、ステップＳ１４１で選択されたブロック候補を接続してアーキテクチャ候補を抽出し、アーキテクチャ候補が示されるアーキテクチャ候補抽出結果１８０を生成する。
より具体的には、アーキテクチャ候補抽出部１５０は、データ入出力関係情報１７７に示される入出力関係に従って、ブロック候補抽出結果１７９に示されるブロック候補を接続する。この際、アーキテクチャ候補抽出部１５０は、各ブロック候補の通信タイプに矛盾がないようにブロック候補を接続する。アーキテクチャ候補抽出部１５０は、例えば、通信タイプがバスタイプのブロック候補はバスに接続する。
図１５にアーキテクチャ候補の例を示す。
図１５の例では、機能モジュール０に対して、ブロック候補０−０、ブロック候補０−１、ブロック候補０−２が選択されている。また、機能モジュール１に対して、ブロック候補１−０、ブロック候補１−１、ブロック候補１−２が選択されている。また、機能モジュール２に対して、ブロック候補２−０、ブロック候補２−１、ブロック候補２−２が選択されている。また、機能モジュール３に対して、ブロック候補３−０、ブロック候補３−１、ブロック候補３−２が選択されている。なお、図１５では、作図上の理由から、「ブロック候補」は単に「ブロック」と表記している。
また、図１５では、作図上の理由から、アーキテクチャ候補は２つしか図示していないが、アーキテクチャ候補抽出部１５０は、通信タイプに矛盾が生じないブロック候補の組み合わせの全てに対応するアーキテクチャ候補を抽出する。
このように、アーキテクチャ候補抽出部１５０は、それぞれのブロック候補の組み合わせが異なる複数のアーキテクチャ候補を抽出する。
【００３７】
次に、ステップＳ１６０において、性能評価部１６０が、各アーキテクチャ候補の性能を評価する。
より具体的には、性能評価部１６０は、アーキテクチャ候補抽出結果１８０の各アーキテクチャ候補においてソフトウェア／ハードウェア協調シミュレーションを実行して、各アーキテクチャ候補の性能（例えば、処理性能及び回路規模）を得る。
【００３８】
そして、ステップＳ１６１において、性能評価部１６０は、ソフトウェア／ハードウェア協調シミュレーションにより得られた性能が非機能要件情報１７２の非機能要件を満たすか否かをアーキテクチャ候補ごとに判定する。
【００３９】
非機能要件を満たす性能をもつアーキテクチャ候補がある場合（ステップＳ１６１でＹＥＳ）は、性能評価部１６０は、ステップＳ１６２において、非機能要件を満たす性能をもつアーキテクチャ候補をアーキテクチャ候補抽出結果１８０から選択する。そして、性能評価部１６０は、選択したアーキテクチャ候補が示されるアーキテクチャ候補選択結果１８１を生成する。
【００４０】
次に、ステップＳ１６３において、性能評価部１６０は、ステップＳ１６２で生成したアーキテクチャ候補選択結果１８１を例えばディスプレイ９０６に出力する。
そして、アーキテクチャ生成装置１００は、処理を終了する。
【００４１】
一方、非機能要件を満たす性能をもつアーキテクチャ候補が存在しない場合（ステップＳ１６１でＮＯ）は、性能評価部１６０は、ステップＳ１６４において、性能と非機能要件との差が最小のアーキテクチャ候補である近似アーキテクチャ候補を選択する。
より具体的には、性能評価部１６０は、ステップＳ１６０で得られた性能と非機能要件情報１７２の制約値との差の絶対値をアーキテクチャ候補ごとに算出し、算出した絶対値の合計値が最小となるアーキテクチャ候補を近似アーキテクチャ候補として選択する。
ここでは、図９に示すように、非機能要件として処理性能制約Ｔｔｈと回路規模制約Ａｔｈが与えられている場合を想定する。また、アーキテクチャ候補抽出結果１８０に記述されているアーキテクチャ候補がＮ個（Ｎ≧２）あり、アーキテクチャ候補ｘ（ｘは１からＮ）の処理性能を処理性能Ｔｘとし、アーキテクチャ候補ｘの回路規模を回路規模Ａｘとする。性能評価部１６０は、｜Ｔｔｈ−Ｔｘ｜＋｜Ａｔｈ−Ａｘ｜の値が最小となるアーキテクチャ候補ｘを近似アーキテクチャ候補として選択する。
【００４２】
次に、ステップＳ１６５において、性能評価部１６０は、ステップＳ１６４で選択した近似アーキテクチャ候補の性能と制約値との差分を機能モジュール抽出部１３０に通知する。
つまり、性能評価部１６０は、ステップＳ１６４で選択したアーキテクチャ候補ｘの前述の｜Ｔｔｈ−Ｔｘ｜と｜Ａｔｈ−Ａｘ｜とを機能モジュール抽出部１３０に通知する。
【００４３】
次に、機能モジュール抽出部１３０がステップＳ１３０において、ステップＳ１６５で性能評価部１６０から通知された差分（例えば、｜Ｔｔｈ−Ｔｘ｜と｜Ａｔｈ−Ａｘ｜）で非機能要件ベクトル１７４の非機能要件フィードバック情報の値を更新する。そして、機能モジュール抽出部１３０は、更新後の非機能要件フィードバック情報を用いて、例えば、教師つき学習のアルゴリズムまたは回帰分析のアルゴリズムに基づく機械学習を行い、抽出ルール１７５を変更する。そして、機能モジュール抽出部１３０は、変更後の抽出ルール１７５を用いて機能モデルソースコード１７１に含まれる機能ＤＩＶ０−ＤＩＶ７をグルーピングして新たな機能モジュールを得る。
以降は、新たな機能モジュールに対してステップＳ１３１以降の処理が行われる。
【００４４】
ここで、図１６を参照して、機能モジュール抽出部１３０が機械学習によって抽出ルール１７５を生成する手順を説明する。
なお、以下では、機能モジュール抽出部１３０が、設計済みの既存アーキテクチャが示される既存アーキテクチャ情報１８２を用いて機械学習（Ｄｅｅｐ  Ｌｅａｒｎｉｎｇ等）を行って抽出ルール１７５を生成する手順を示す。
なお、既存アーキテクチャは、例えば設計者が手作業により設計したアーキテクチャである。
ここでは、図１９に示すアーキテクチャを既存アーキテクチャとする。
また、既存アーキテクチャが設計されている組込みシステムを既存組込みシステムという。
図１９に示すように、既存組込みシステムには、機能ＤＩＶ０−ＤＩＶ３が含まれているものとする。
図１９の既存アーキテクチャでは、機能ＤＩＶ０が機能モジュール０に分類されている。また、機能ＤＩＶ１が機能モジュール１に分類されている。また、機能ＤＩＶ２と機能ＤＩＶ３とが機能モジュール２に分類されている。また、機能モジュール０がプロセッサ０により実現され、機能モジュール１が専用ハードウェアで実現され、機能モジュール２がプロセッサ１により実現される。また、プロセッサ０、プロセッサ１、専用ハードウェアはそれぞれバスに接続しており、また、専用ハードウェアとプロセッサ１とは相互に直接接続している。
以下では、機能ＤＩＶ０−ＤＩＶ３を区別する必要がない場合は、機能ＤＩＶ０−ＤＩＶ３を機能ＤＩＶｘと総称する。
【００４５】
図１６のステップＳ１１１において、ソースコード取得部１１０が機能モデルソースコード１７１と非機能要件情報１７２を取得する。ステップＳ１１１で取得する機能モデルソースコード１７１と非機能要件情報１７２は、既存組込みシステムの機能モデルソースコード１７１と非機能要件情報１７２である。
なお、ステップＳ１１１における取得手順は図４のステップＳ１１０で説明したものと同じであるため、ステップＳ１１１における取得手順についての説明は省略する。
【００４６】
次に、ステップＳ１９０において、既存アーキテクチャ情報取得部１９０が既存組込みシステムの既存アーキテクチャ情報１８２を取得し、記憶部１７０に既存アーキテクチャ情報１８２を格納する。
既存アーキテクチャ情報１８２には、図１９に示すように、以下の情報が含まれる。
（１）既存組込みシステムの機能モデルソースコード１７１に含まれる機能のグルーピング結果を示す情報（機能モジュール情報１７６に相当する情報）
（２）既存アーキテクチャにおけるブロック構成とブロック間の接続に関する情報（アーキテクチャ候補抽出結果１８０に相当する情報）
【００４７】
次に、ステップＳ１２２において、解析部１２０が、ステップＳ１１１で取得された既存組込みシステムの機能モデルソースコード１７１から機能モデルベクトル１７３を生成する。
なお、ステップＳ１２２における機能モデルベクトル１７３の生成手順は、図４のステップＳ１２０で説明したものと同じであるため、説明を省略する。
図１７は、ステップＳ１２２で生成される機能モデルベクトル１７３の例を示す。
【００４８】
次に、ステップＳ１２３において、解析部１２０は、ステップＳ１１１で取得された既存組込みシステムの非機能要件情報１７２から非機能要件ベクトル１７４を生成する。
なお、ステップＳ１２３における非機能要件ベクトル１７４の生成手順は、図４のステップＳ１２１で説明したものと同じであるが、非機能要件フィードバック情報は機械学習では使用しないため、解析部１２０は、非機能要件フィードバック情報の値は全て０とする。
図１８は、ステップＳ１２３で生成される非機能要件ベクトル１７４の例を示す。
【００４９】
次に、ステップＳ１３２において、機能モジュール抽出部１３０が、抽出ルール１７５に基づき、既存組込みシステムの機能ＤＩＶｘをグルーピングし、機能モジュール情報１７６を生成する。なお、ステップＳ１３２における機能モジュール情報１７６の生成手順は、図４のステップＳ１３０で説明したものと同じであるため、説明を省略する。
【００５０】
次に、Ｓ１３３において、機能モジュール抽出部１３０は、ステップＳ１３２で得られたグルーピング結果と既存アーキテクチャ情報１８２に含まれるグルーピング結果とが等しいか否かを判定する。
そして、グルーピング結果が等しい場合（ステップＳ１３３でＹＥＳ）は、機能モジュール抽出部１３０は処理を終了する。
例えば、ステップＳ１３２において図２０に示す得られたグルーピング結果が得られている場合は、図１９に示すグルーピング結果と等しいため、機能モジュール抽出部１３０は処理を終了する。
【００５１】
一方、グルーピング結果が一致しない場合（ステップＳ１３３でＮＯ）は、ステップＳ１３４において、機能モジュール抽出部１３０は、既存アーキテクチャ情報１８２に格納された既存アーキテクチャのグルーピング結果（ベクトル）を正解とし、ステップＳ１３２で生成した機能モジュール情報１７６のグルーピング結果（ベクトル）との誤差を計算する。
そして、機能モジュール抽出部１３０は、一般的な教師つき学習のアルゴリズムまたは回帰分析のアルゴリズムに基づき、計算した誤差を用いて、抽出ルール１７５を更新する。
【００５２】
ステップＳ１３４の後、機能モジュール抽出部１３０は、ステップＳ１３２において、更新後の抽出ルール１７５を用いて機能ＤＩＶｘをグルーピングして、新たな機能モジュール情報１７６を生成する。以降は、グルーピング結果が一致するまでステップＳ１３３、ステップＳ１３４及びステップＳ１３２が繰り返される。
【００５３】
例えば、ステップＳ１３２で生成した機能モジュール情報１７６のグルーピング結果が図２１に示すものであれば、機能モジュール抽出部１３０は、機械学習により、図２０に示すグルーピング結果が得られるように抽出ルール１７５を変更する。
図１７に示す機能モデルベクトル１７３からは、機能ＤＩＶ１と機能ＤＩＶ２はともに機能ＤＩＶ０からデータが入力されるため、機能ＤＩＶ１と機能ＤＩＶ２が並列に実行可能である。また、演算子の数の差から機能ＤＩＶ１と機能とＤＩＶ２では機能ＤＩＶ１の方が処理量が多いことが予測される。このため、機能ＤＩＶ１に単一のデバイスを割当て、機能ＤＩＶ２と機能ＤＩＶ３とがデバイスを共有することで、回路規模を小さくすることができる。
機能モジュール抽出部１３０は、このように、機能モデルベクトル１７３に記述されるパラメータから読み取れる関係性を解析する。そして、機能モジュール抽出部１３０は、解析結果から、抽出ルール１７５により得られるグルーピング結果と正解のグルーピング結果との誤差が小さくなるように機械学習パラメータを制御する。このようにすることで、機能モジュール抽出部１３０は、設計者が手作業により生成するアーキテクチャと同じアーキテクチャを獲得可能な抽出ルール１７５を生成することができる。
【００５４】
また、機能モジュール抽出部１３０が複数の既存アーキテクチャを学習することで、抽出ルール１７５は汎化され、既存アーキテクチャのない機能モデルと非機能要件を与えた際にも適切なグルーピングが可能になる。
【００５５】
＊＊＊実施の形態の効果の説明＊＊＊
以上、本実施の形態では、プロセッサとハードウェアデバイスとの組合せを含む複数のアーキテクチャ候補を生成するため、多様なアーキテクチャ候補の中から設計対象の組込みシステムに最適なコンピュータアーキテクチャを選択することができる。
また、本実施の形態によれば、設計者が組み込みシステム全体の処理機能を記述した仕様を基に非機能要件を満たすプラットフォームの検討を行わずとも、アーキテクチャ生成装置１００に組込みシステム全体の処理機能を記述した仕様と非機能要件を入力することで、非機能要件を満たす組込みシステムのアーキテクチャを選択することができる。
【００５６】
なお、本発明は、本実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
例えば、アーキテクチャ生成装置１００の機能構成は図１と異なる機能構成であっても構わない。
また、アーキテクチャ生成装置１００の動作手順は図４及び図５に示したものと異なっていてもよい。
【００５７】
＊＊＊ハードウェア構成の説明＊＊＊
最後に、アーキテクチャ生成装置１００のハードウェア構成の補足説明を行う。
図３に示すプロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
プロセッサ９０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等である。
補助記憶装置９０２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等である。
メモリ９０３は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
通信装置９０４は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
【００５８】
また、補助記憶装置９０２には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。
そして、ＯＳの少なくとも一部がメモリ９０３にロードされ、プロセッサ９０１により実行される。
プロセッサ９０１はＯＳの少なくとも一部を実行しながら、ソースコード取得部１１０、解析部１２０、機能モジュール抽出部１３０、ブロック候補抽出部１４０、アーキテクチャ候補抽出部１５０、性能評価部１６０及び既存アーキテクチャ情報取得部１９０の機能を実現するプログラムを実行する。
プロセッサ９０１がＯＳを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、ソースコード取得部１１０、解析部１２０、機能モジュール抽出部１３０、ブロック候補抽出部１４０、アーキテクチャ候補抽出部１５０、性能評価部１６０及び既存アーキテクチャ情報取得部１９０の処理の結果を示す情報やデータや信号値や変数値が、補助記憶装置９０２、メモリ９０３、プロセッサ９０１内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、ソースコード取得部１１０、解析部１２０、機能モジュール抽出部１３０、ブロック候補抽出部１４０、アーキテクチャ候補抽出部１５０、性能評価部１６０及び既存アーキテクチャ情報取得部１９０の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ等の可搬記憶媒体に記憶されてもよい。
【００５９】
また、ソースコード取得部１１０、解析部１２０、機能モジュール抽出部１３０、ブロック候補抽出部１４０、アーキテクチャ候補抽出部１５０、性能評価部１６０及び既存アーキテクチャ情報取得部１９０の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、アーキテクチャ生成装置１００は、ロジックＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ、ＦＰＧＡといった電子回路により実現されてもよい。
この場合は、ソースコード取得部１１０、解析部１２０、機能モジュール抽出部１３０、ブロック候補抽出部１４０、アーキテクチャ候補抽出部１５０、性能評価部１６０及び既存アーキテクチャ情報取得部１９０は、それぞれ電子回路の一部として実現される。
なお、プロセッサ及び上記の電子回路を総称してプロセッシングサーキットリーともいう。
【符号の説明】
【００６０】
１００  アーキテクチャ生成装置、１１０  ソースコード取得部、１２０  解析部、１３０  機能モジュール抽出部、１４０  ブロック候補抽出部、１５０  アーキテクチャ候補抽出部、１６０  性能評価部、１７０  記憶部、１７１  機能モデルソースコード、１７２  非機能要件情報、１７３  機能モデルベクトル、１７４  非機能要件ベクトル、１７５  抽出ルール、１７６  機能モジュール情報、１７７  データ入出力関係情報、１７８  ブロックテンプレート、１７９  ブロック候補抽出結果、１８０  アーキテクチャ候補抽出結果、１８１  アーキテクチャ候補選択結果、１８２  既存アーキテクチャ情報、１９０  既存アーキテクチャ情報取得部、２００  高位合成装置、３００  ソフトウェアコンパイラ、９０１  プロセッサ、９０２  補助記憶装置、９０３  メモリ、９０４  通信装置、９０５  入力装置、９０６  ディスプレイ。
【図１】
2018066073.tif 000003
【図２】
2018066073.tif 000004
【図３】
2018066073.tif 000005
【図４】
2018066073.tif 000006
【図５】
2018066073.tif 000007
【図６】
2018066073.tif 000008
【図７】
2018066073.tif 000009
【図８】
2018066073.tif 000010
【図９】
2018066073.tif 000011
【図１０】
2018066073.tif 000012
【図１１】
2018066073.tif 000013
【図１２】
2018066073.tif 000014
【図１３】
2018066073.tif 000015
【図１４】
2018066073.tif 000016
【図１５】
2018066073.tif 000017
【図１６】
2018066073.tif 000018
【図１７】
2018066073.tif 000019
【図１８】
2018066073.tif 000020
【図１９】
2018066073.tif 000021
【図２０】
2018066073.tif 000022
【図２１】
2018066073.tif 000023
【手続補正書】
【提出日】平成29年2月20日(2017.2.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プログラムコードから抽出された複数の機能モジュールの各々に、各機能モジュールを実現するデバイスを１つ以上、プロセッサ及び前記プロセッサ以外のハードウェアデバイスのうちの少なくともいずれかから指定し、各デバイスの通信タイプに対応させた接続方式でデバイス間を接続し、それぞれのデバイスの組み合わせ及びデバイス間の接続方式の組合せが異なるコンピュータアーキテクチャの候補をアーキテクチャ候補として複数生成するアーキテクチャ候補生成部と、
前記アーキテクチャ候補生成部により生成された複数のアーキテクチャ候補の中から、前記コンピュータアーキテクチャに要求される要求属性を持つアーキテクチャ候補を選択するアーキテクチャ候補選択部とを有する情報処理装置。
【請求項２】
前記アーキテクチャ候補生成部は、
機能モジュールごとに、各機能モジュールに要求される要求属性を持つデバイスを１つ以上、プロセッサ及びハードウェアデバイスのうちの少なくともいずれかから指定する請求項１に記載の情報処理装置。
【請求項３】
前記アーキテクチャ候補選択部は、
前記要求属性を持つアーキテクチャ候補が存在しない場合に、前記要求属性を満たさないが、前記複数のアーキテクチャ候補の中で最も要求属性に近い属性を持つアーキテクチャ候補を近似アーキテクチャ候補として選択する請求項１に記載の情報処理装置。
【請求項４】
前記情報処理装置は、更に、
既定の抽出ルールを用いて前記プログラムコードから前記複数の機能モジュールを抽出する機能モジュール抽出部を有し、
前記アーキテクチャ候補選択部は、
前記近似アーキテクチャ候補の属性と前記要求属性との差分を前記機能モジュール抽出部に通知し、
前記機能モジュール抽出部は、
前記アーキテクチャ候補選択部から通知された前記差分に基づき、前記抽出ルールを変更し、変更後の抽出ルールを用いて前記プログラムコードから新たな複数の機能モジュールを抽出する請求項３に記載の情報処理装置。
【請求項５】
前記情報処理装置は、更に、
前記プログラムコードに含まれる演算子の数、分岐の数、ループの数、変数の数及びデータの入出力数の少なくともいずれかを処理ごとに解析する解析部を有し、
前記機能モジュール抽出部は、
前記解析部による処理ごとの解析結果に前記抽出ルールを適用して、前記複数の機能モジュールを抽出する請求項４に記載の情報処理装置。
【請求項６】
コンピュータが、プログラムコードから抽出された複数の機能モジュールの各々に、各機能モジュールを実現するデバイスを１つ以上、プロセッサ及び前記プロセッサ以外のハードウェアデバイスのうちの少なくともいずれかから指定し、各デバイスの通信タイプに対応させた接続方式でデバイス間を接続し、それぞれのデバイスの組み合わせ及びデバイス間の接続方式の組合せが異なるコンピュータアーキテクチャの候補をアーキテクチャ候補として複数生成し、
前記コンピュータが、生成された複数のアーキテクチャ候補の中から、前記コンピュータアーキテクチャに要求される要求属性を持つアーキテクチャ候補を選択する情報処理方法。
【請求項７】
プログラムコードから抽出された複数の機能モジュールの各々に、各機能モジュールを実現するデバイスを１つ以上、プロセッサ及び前記プロセッサ以外のハードウェアデバイスのうちの少なくともいずれかから指定し、各デバイスの通信タイプに対応させた接続方式でデバイス間を接続し、それぞれのデバイスの組み合わせ及びデバイス間の接続方式の組合せが異なるコンピュータアーキテクチャの候補をアーキテクチャ候補として複数生成するアーキテクチャ候補生成処理と、
前記アーキテクチャ候補生成処理により生成された複数のアーキテクチャ候補の中から、前記コンピュータアーキテクチャに要求される要求属性を持つアーキテクチャ候補を選択するアーキテクチャ候補選択処理とをコンピュータに実行させる情報処理プログラム。
【手続補正書】
【提出日】平成29年5月23日(2017.5.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プログラムコードから抽出された複数の機能モジュールの各々に、各機能モジュールを実現するデバイスとして、プロセッサ及び前記プロセッサ以外のハードウェアデバイスのうちのいずれかを指定し、前記複数の機能モジュールを実現するデバイスの組み合わせが異なるコンピュータアーキテクチャの候補をアーキテクチャ候補として複数生成するアーキテクチャ候補生成部と、
前記アーキテクチャ候補生成部により生成された複数のアーキテクチャ候補の中に、前記コンピュータアーキテクチャに要求される要求属性を持つアーキテクチャ候補が存在しない場合に、前記要求属性を満たさないが、前記複数のアーキテクチャ候補の中で最も要求属性に近い属性を持つアーキテクチャ候補を近似アーキテクチャ候補として選択するアーキテクチャ候補選択部と、
既定の抽出ルールを用いて前記プログラムコードから前記複数の機能モジュールを抽出する機能モジュール抽出部とを有し、
前記アーキテクチャ候補選択部は、
前記近似アーキテクチャ候補の属性と前記要求属性との差分を前記機能モジュール抽出部に通知し、
前記機能モジュール抽出部は、
前記アーキテクチャ候補選択部から通知された前記差分に基づき、前記抽出ルールを変更し、変更後の抽出ルールを用いて前記プログラムコードから新たな複数の機能モジュールを抽出する情報処理装置。
【請求項２】
前記アーキテクチャ候補生成部は、
機能モジュールごとに、各機能モジュールに要求される要求属性を持つプロセッサ又はハードウェアデバイスを指定する請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、更に、
前記プログラムコードに含まれる演算子の数、分岐の数、ループの数、変数の数及びデータの入出力数の少なくともいずれかを処理ごとに解析する解析部を有し、
前記機能モジュール抽出部は、
前記解析部による処理ごとの解析結果に前記抽出ルールを適用して、前記複数の機能モジュールを抽出する請求項１に記載の情報処理装置。
【請求項４】
コンピュータが、プログラムコードから抽出された複数の機能モジュールの各々に、各機能モジュールを実現するデバイスとして、プロセッサ及び前記プロセッサ以外のハードウェアデバイスのうちのいずれかを指定し、前記複数の機能モジュールを実現するデバイスの組み合わせが異なるコンピュータアーキテクチャの候補をアーキテクチャ候補として複数生成し、
前記コンピュータが、生成された複数のアーキテクチャ候補の中に、前記コンピュータアーキテクチャに要求される要求属性を持つアーキテクチャ候補が存在しない場合に、前記要求属性を満たさないが、前記複数のアーキテクチャ候補の中で最も要求属性に近い属性を持つアーキテクチャ候補を近似アーキテクチャ候補として選択し、
前記コンピュータが、前記近似アーキテクチャ候補の属性と前記要求属性との差分に基づき、既定の抽出ルール変更し、変更後の抽出ルールを用いて前記プログラムコードから新たな複数の機能モジュールを抽出する情報処理方法。
【請求項５】
プログラムコードから抽出された複数の機能モジュールの各々に、各機能モジュールを実現するデバイスとして、プロセッサ及び前記プロセッサ以外のハードウェアデバイスのうちのいずれかを指定し、前記複数の機能モジュールを実現するデバイスの組み合わせが異なるコンピュータアーキテクチャの候補をアーキテクチャ候補として複数生成する処理と、
生成された複数のアーキテクチャ候補の中に、前記コンピュータアーキテクチャに要求される要求属性を持つアーキテクチャ候補が存在しない場合に、前記要求属性を満たさないが、前記複数のアーキテクチャ候補の中で最も要求属性に近い属性を持つアーキテクチャ候補を近似アーキテクチャ候補として選択する処理と、
前記近似アーキテクチャ候補の属性と前記要求属性との差分に基づき、既定の抽出ルール変更し、変更後の抽出ルールを用いて前記プログラムコードから新たな複数の機能モジュールを抽出する処理とをコンピュータに実行させる情報処理プログラム。
【国際調査報告】
2018066073.tif 000024
2018066073.tif 000025