JP6227195B1 - 情報処理装置、情報処理方法及び情報処理プログラム - Google Patents

情報処理装置、情報処理方法及び情報処理プログラム Download PDF

Info

Publication number
JP6227195B1
JP6227195B1 JP2017516806A JP2017516806A JP6227195B1 JP 6227195 B1 JP6227195 B1 JP 6227195B1 JP 2017516806 A JP2017516806 A JP 2017516806A JP 2017516806 A JP2017516806 A JP 2017516806A JP 6227195 B1 JP6227195 B1 JP 6227195B1
Authority
JP
Japan
Prior art keywords
program
program element
architecture
unit
functional
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2017516806A
Other languages
English (en)
Other versions
JPWO2018066074A1 (ja
Inventor
弘樹 村野
弘樹 村野
峯岸 孝行
孝行 峯岸
山本 亮
亮 山本
吉大 小川
吉大 小川
友美 竹内
友美 竹内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP6227195B1 publication Critical patent/JP6227195B1/ja
Publication of JPWO2018066074A1 publication Critical patent/JPWO2018066074A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3457Performance evaluation by simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/9035Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • G06N5/025Extracting rules from data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N99/00Subject matter not provided for in other groups of this subclass

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Databases & Information Systems (AREA)
  • Computational Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computational Linguistics (AREA)
  • Medical Informatics (AREA)
  • Operations Research (AREA)
  • Algebra (AREA)
  • Stored Programmes (AREA)

Abstract

解析部(120)は、階層化されたプログラムコードを既定の分割条件に従って複数のプログラム要素に分割し、複数のプログラム要素の各プログラム要素を解析し、各プログラム要素の属性と、複数のプログラム要素における階層とを抽出する。機能モジュール抽出部(130)は、解析部(120)により抽出された各プログラム要素の属性と複数のプログラム要素における階層とに基づいて機械学習を行って、複数のプログラム要素を複数のグループにグルーピングする。

Description

本発明は、例えば組込みシステムにおけるアーキテクチャ設計を支援する技術に関する。
家電製品や事務機器などで広く利用されているシステムは、一般に、ハードウェアとソフトウェアとから構成されている組込みシステムである。組込みシステムは、ASIC(Application Specific Integrated Circuit)(またはFPGA(Field−Programmable Gate Array))、プロセッサ、メモリ等から構成される。
組込みシステムの設計では、組込みシステム全体の処理機能を記述した仕様を、ASICなどによりハードウェア化する部分、プロセッサで実行されるプログラムとしてソフトウェア化する部分に分割する必要がある。これをソフトウェア/ハードウェア機能分割という。
また、分割された複数の機能を、組込みシステム上にどのように実装すれば所望の性能を出せるかということを検討し設計する必要がある。これをアーキテクチャ設計と呼ぶ。
従来、組込みシステムのアーキテクチャ設計は機能モデルと非機能要件から、演算量や処理の並列性、回路規模などを考慮し、人手で機能を分割し、ソフトウェアとハードウェアデバイスへの分割を行っていた。しかしながら、アーキテクチャ設計を行った時点では、非機能要件を満たす最適なアーキテクチャとなっているか否かを判断することは困難である。このため、実装工程や実機評価工程において非機能要件を満たさないことが発覚する事態が発生し、工程の大幅な手戻りが懸念される。
特許文献1には、ソフトウェア/ハードウェア機能分割を行う技術が開示されている。
特開2013−125419号公報
アーキテクチャ設計では、通常、組込みシステムの機能モデルが記述されているプログラムコードを複数のプログラム要素に分割する。そして、各プログラム要素の属性から、ソフトウェアまたはハードウェアブロックに割り当てる。現状は、各プログラム要素の属性として、プログラム要素に含まれる演算子の数、分岐の数、ループの数、変数の数、データの入出力数などが抽出される。これら属性に基づいて機械学習等の技術を用いることでソフトウェア、ハードウェアブロックへの割当てを実施することもできる。機械学習を用いる場合、現状では、各プログラム要素の属性として、プログラム要素に含まれる演算子の数、分岐の数、ループの数、変数の数、データの入出力数が抽出されるのみであるため、効果的に機械学習の精度を高めることができないという課題がある。
本発明は、このような課題を解決することを主な目的とする。すなわち、本発明は、プログラム要素をより高精細に解析して、機械学習の精度を高めることを主な目的とする。
本発明に係る情報処理装置は、
階層化されたプログラムコードを既定の分割条件に従って複数のプログラム要素に分割し、前記複数のプログラム要素の各プログラム要素を解析し、各プログラム要素の属性と、前記複数のプログラム要素における階層とを抽出する解析部と、
前記解析部により抽出された各プログラム要素の属性と前記複数のプログラム要素における階層とに基づいて機械学習を行って、前記複数のプログラム要素を複数のグループにグルーピングするグルーピング部とを有する。
本発明では、プログラム要素の解析により、各プログラム要素の属性と複数のプログラム要素における階層を抽出し、抽出したプログラム要素の属性と複数のプログラム要素における階層とに基づいて機械学習を行う。このため、本発明によれば、機械学習の精度を高めることができる。
実施の形態1に係るアーキテクチャ生成装置の機能構成例を示す図。 実施の形態1に係る記憶部で記憶されている情報の例を示す図。 実施の形態1に係るアーキテクチャ生成装置のハードウェア構成例を示す図。 実施の形態1に係るアーキテクチャ生成装置の動作例を示すフローチャート図。 実施の形態1に係るアーキテクチャ生成装置の動作例を示すフローチャート図。 実施の形態1に係る機能モデルソースコードの例を示す図。 実施の形態1に係る非機能要件情報の例を示す図。 実施の形態1に係る非機能要件ベクトルの例を示す図。 実施の形態1に係る機能モジュール情報の例を示す図。 実施の形態1に係るデータ入出力関係情報の例を示す図。 実施の形態1に係るブロック候補の例を示す図。 実施の形態1に係るアーキテクチャ候補の例を示す図。 実施の形態1に係る既存アーキテクチャを用いた機械学習の手順を示すフローチャート図。 実施の形態1に係る機能モデルベクトルの例を示す図。 実施の形態1に係る非機能要件ベクトルの例を示す図。 実施の形態1に係る機械学習で用いられる既存アーキテクチャの例を示す図。 実施の形態1に係る既存アーキテクチャを用いた機械学習で得られるグルーピング結果の例を示す図。 実施の形態1に係る既存アーキテクチャを用いた機械学習で得られるグルーピング結果の例を示す図。 実施の形態1に係るネスト数情報の例を示す図。 実施の形態1に係るネスト構造情報の例を示す図。 実施の形態1に係る更新後の非機能要件ベクトルの例を示す図。
実施の形態1.
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分または相当する部分を示す。
***構成の説明***
図1は、実施の形態1に係るアーキテクチャ生成装置100の機能構成例を示す。アーキテクチャ生成装置100は、高位合成装置200及びソフトウェアコンパイラ300に接続されている。
アーキテクチャ生成装置100は、情報処理装置の例である。また、アーキテクチャ生成装置100で行われる動作は情報処理方法の例である。
図2は、アーキテクチャ生成装置100内の記憶部170で記憶されている情報を示す。
図3は、アーキテクチャ生成装置100のハードウェア構成例を示す。
先ず、図3を参照して、アーキテクチャ生成装置100のハードウェア構成例を説明する。
アーキテクチャ生成装置100は、ハードウェアとして、プロセッサ901、補助記憶装置902、メモリ903、通信装置904、入力装置905及びディスプレイ906を備えるコンピュータである。
補助記憶装置902には、図1に示すソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160、既存アーキテクチャ情報取得部190及びバスレイヤー選択部191の機能を実現するプログラムが記憶されている。
そして、これらプログラムがメモリ903にロードされて、プロセッサ901がこれらプログラムを実行する。当該プログラムを実行することで、プロセッサ901が、後述するソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160、既存アーキテクチャ情報取得部190及びバスレイヤー選択部191の動作を行う。
図1では、プロセッサ901がソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160、既存アーキテクチャ情報取得部190及びバスレイヤー選択部191の機能を実現するプログラムを実行している状態を模式的に表している。
なお、解析部120、機能モジュール抽出部130の機能を実現するプログラムは、情報処理プログラムの例である。
また、補助記憶装置902は、図1に示す記憶部170として機能する。すなわち、補助記憶装置902は、図2に示す情報を記憶している。また、メモリ903が、図1に示す記憶部170として機能してもよい。すなわち、メモリ903が、図2に示す情報を記憶するようにしてもよい。
通信装置904は、アーキテクチャ生成装置100が外部装置と通信する際に用いられる。通信装置904は、データを受信するレシーバー及びデータを送信するトランスミッターを含む。
入力装置905は、アーキテクチャ生成装置100のユーザが各種情報をアーキテクチャ生成装置100に入力するために用いられる
ディスプレイ906は、アーキテクチャ生成装置100のユーザに各種情報を提示するために用いられる。
次に、図1を参照して、アーキテクチャ生成装置100の機能構成例を説明する。
ソースコード取得部110は、機能モデルソースコード171及び非機能要件情報172を入力装置905を介してユーザから取得する。
機能モデルソースコード171及び非機能要件情報172はアーキテクチャ生成装置100のユーザが生成する。
また、ソースコード取得部110は、取得した機能モデルソースコード171と非機能要件情報172とを、記憶部170に格納する。図2は、ソースコード取得部110により機能モデルソースコード171と非機能要件情報172とが格納された状態を示す。
機能モデルソースコード171は、アーキテクチャ設計の対象となる組込みシステムの複数の機能が記述されているプログラムコードである。
ソースコード取得部110は、例えば図6に示す機能モデルソースコード171を取得する。なお、図6に示す機能モデルソースコード171の詳細は後述する。
非機能要件情報172には、機能モデルソースコード171に記述されている機能に要求される要件である非機能要件が記述される。非機能要件情報172には、例えば、処理性能に関する要件、回路規模に関する要件及び消費電力に関する要件が記述される。
ソースコード取得部110は、例えば図7に示す非機能要件情報172を取得する。なお、図7に示す非機能要件情報172の詳細は後述する。
解析部120は、機能モデルソースコード171を関数などの最小構成単位で分割する。分割された最小構成単位を以降、プログラム要素という。プログラム要素は、例えば、機能モデルソースコード171内のforループブロックで実現される動作である。つまり、1つのforループブロックに記述されている内容を1つのプログラム要素として捉えることができる。但し、どのような範囲を1つのプログラム要素と定義するかはアーキテクチャ生成装置100のユーザに委ねられている。ユーザは、プログラム要素の条件を、予め設定しておく。ユーザは、例えば、1つの関数を1つのプログラム要素として定義してもよい。
解析部120は、また、各プログラム要素を解析して、プログラム要素の属性を抽出する。例えば、解析部120は、プログラム要素の属性として、演算子の数、分岐の数等を抽出し、抽出結果を示す機能モデルベクトル173を生成する。
解析部120は、例えば、図14に示す機能モデルベクトル173を生成する。なお、図14に示す機能モデルベクトル173の詳細は後述する。
機能モデルソースコード171は階層化されている。つまり、機能モデルソースコード171はネスト構造になっている。解析部120は、各プログラム要素を解析し、機能モデルソースコード171のネスト構造をパラメータ化する。すなわち、解析部120は、機能モデルソースコード171のネスト構造を解析して、複数のプログラム要素における階層を抽出する。そして、解析部120は、ネスト構造の解析結果を示すネスト数情報185及びネスト構造情報186を生成する。解析部120は、例えば、図19に示すネスト数情報185及び図20に示すネスト構造情報186を生成する。図19に示すネスト数情報185及び図20に示すネスト構造情報186の詳細は後述する。
また、解析部120は、非機能要件情報172を関数などの最小構成単位で分割し、非機能要件ベクトル174を生成する。
解析部120は、例えば、図8に示す非機能要件ベクトル174を生成する。なお、図8に示す非機能要件ベクトル174の詳細は後述する。
また、解析部120は、生成した機能モデルベクトル173とネスト数情報185とネスト構造情報186と非機能要件ベクトル174とを記憶部170に格納する。図2は、解析部120により機能モデルベクトル173とネスト数情報185とネスト構造情報186と非機能要件ベクトル174が記憶部170に格納されている状態を示す。
なお、解析部120により行われる動作は、解析処理に相当する。
機能モジュール抽出部130は、機能モデルベクトル173とネスト数情報185とネスト構造情報186と非機能要件ベクトル174と抽出ルール175とを記憶部170から読み出す。
抽出ルール175は、機能モデルソースコード171から機能モジュールを抽出するためのルールである。抽出ルール175は、機械学習により得られたルールである。
機能モジュールとは、機能モデルソースコード171を構成するプログラム要素の集合である。機能モジュールには、機能モデルソースコード171で実現される複数のプログラム要素のうちの少なくとも1つのプログラム要素が含まれる。
本実施の形態では、機能モジュール抽出部130は、抽出ルール175に基づいて、機能モデルベクトル173とネスト数情報185とネスト構造情報186を用いて、機能モデルソースコード171のプログラム要素をグルーピングすることで機能モジュールを抽出する。
また、機能モジュール抽出部130は、機能モジュールの抽出結果を示す機能モジュール情報176を生成する。
例えば、機能モジュール抽出部130は、図9に示す機能モジュール情報176を生成する。図9に示す機能モジュール情報176の詳細は後述する。
また、機能モジュール抽出部130は、機能モデルベクトル173に基づき、機能モジュール情報176に示される機能モジュール間のデータの入出力関係を解析し、解析結果が示されるデータ入出力関係情報177を生成する。
例えば、機能モジュール抽出部130は、図10に示すデータ入出力関係情報177を生成する。図10に示すデータ入出力関係情報177の詳細は後述する。
機能モジュール抽出部130は、グルーピング部に相当する。また、機能モジュール抽出部130により行われる動作は、グルーピング処理に相当する。
ブロック候補抽出部140は、機能モジュールごとにブロック候補を抽出する。
より具体的には、ブロック候補抽出部140は、機能モジュール抽出部130により得られた複数の機能モジュールの各々に、ブロックテンプレート178に基づき、各機能モジュールを実現するデバイスとして、プロセッサ及びプロセッサ以外のハードウェアデバイスのうちのいずれかを指定する。なお、ブロック候補抽出部140が各機能モジュールに割り当てるデバイスをブロック候補という。また、ブロック候補抽出部140は、各ブロック候補の性能及び回路規模を見積り、非機能要件情報172の非機能要件に合致しないブロック候補を除外する。つまり、ブロック候補抽出部140は、機能モジュールごとに、非機能要件に合致するプロセッサ又はハードウェアデバイスをブロック候補として指定する。
そして、ブロック候補抽出部140は、機能モジュールごとのブロック候補の抽出結果が示されるブロック候補抽出結果179を生成する。
アーキテクチャ候補抽出部150は、ブロック候補抽出結果179及びデータ入出力関係情報177に基づき、アーキテクチャ候補を抽出する。
つまり、アーキテクチャ候補抽出部150は、機能モデルソースコード171に含まれる複数の機能を実現するコンピュータアーキテクチャの候補、すなわち、組込みシステムのアーキテクチャの候補をアーキテクチャ候補として複数生成する。なお、各アーキテクチャ候補では、ブロック候補の組み合わせが異なる。
そして、ブロック候補抽出部140は、抽出したアーキテクチャ候補が示されるアーキテクチャ候補抽出結果180を生成する。
バスレイヤー選択部191は、アーキテクチャ候補抽出結果180に格納されている複数のアーキテクチャ候補のうち2以上のブロック(デバイス)がバス接続されているアーキテクチャ候補に対して、複数のバスレイヤーの中から非機能要件を満たすバスレイヤーを選択する。より具体的には、バスレイヤー選択部191は、バスレイヤーテンプレート183から、非機能要件を満たすバスレイヤーを選択する。そして、バスレイヤー選択部191は、選択したバスレイヤーが示されるバスレイヤー選択結果情報184を生成する。
性能評価部160は、アーキテクチャ候補抽出結果180に示される各アーキテクチャ候補の性能評価を行う。なお、性能評価部160は、バスレイヤーについては、バスレイヤー選択結果情報184に示されるバスレイヤーを評価する。
性能評価部160は、アーキテクチャ候補抽出部150により抽出された複数のアーキテクチャ候補の中から、組込みシステムのアーキテクチャに要求される非機能要件を満たすアーキテクチャ候補を選択する。
そして、性能評価部160は、選択したアーキテクチャ候補が示されるアーキテクチャ候補選択結果181を生成する。
また、性能評価部160は、非機能要件を満たすアーキテクチャ候補が存在しない場合は、非機能要件を満たさないが、ブロック候補抽出部140が生成した複数のアーキテクチャ候補の中で最も非機能要件に近い属性を持つアーキテクチャ候補を近似アーキテクチャ候補として選択する。
そして、性能評価部160は、選択した近似アーキテクチャ候補の属性と非機能要件との差分をブロック候補抽出部140に通知する。
既存アーキテクチャ情報取得部190は、設計済みのアーキテクチャの情報である既存アーキテクチャ情報182を入力装置905を介してユーザから取得する。そして、既存アーキテクチャ情報取得部190は、既存アーキテクチャ情報182を記憶部170に格納する。
既存アーキテクチャ情報182は、抽出ルール175を生成するために使用する。
また、アーキテクチャ生成装置100は、高位合成装置200と連携して動作する。
高位合成装置200は、RTL(Register Transfer Level)よりも抽象度が高いC言語、C++言語、SystemC言語などの高級言語を用いて、自動的にRTLを生成する。
高位合成装置200は、具体的には市販されている高位合成ツールにより実現可能である。
アーキテクチャ生成装置100は、ソフトウェアコンパイラ300と連携して動作する。
ソフトウェアコンパイラ300は、C言語等で書かれたソースコードからターゲットの組込みシステムのプロセッサで実行可能なバイナリファイルを出力する。
ソフトウェアコンパイラ300は、具体的には市販されているコンパイラにより実現可能である。
***動作の説明***
次に、図4及び図5を参照して、本実施の形態に係るアーキテクチャ生成装置100の動作例を説明する。
先ず、ステップS110において、ソースコード取得部110が、機能モデルソースコード171と非機能要件情報172をユーザから取得する。そして、ソースコード取得部110は、取得した機能モデルソースコード171と非機能要件情報172を記憶部170に格納する。
機能モデルソースコード171は、組込みシステムの処理機能/システム構成をプログラム言語(C言語など)で記述したプログラムコードである。
図6は、機能モデルソースコード171の例を示す。
機能モデルソースコード171は、図6に示すように一般的なプログラムと同一だが、システムの外部入力/出力に対応する変数は/*external_input*/,/*external_output*/と指定されている。
なお、図6において、ELEM0〜ELEM6は、それぞれプログラム要素を表す。以下、プログラム要素ELEM0〜ELEM6を区別する必要がない場合は、プログラム要素ELEM0〜ELEM6のそれぞれをプログラム要素ELEMxという。
図7に示されるように、非機能要件情報172には、非機能要件として、処理性能制約、回路規模制約及び消費電力制約が記述される。
処理性能制約は、特定の処理から別の特定の処理までが制限時間Tth[s]以内に完了するという制約である。
また、回路規模制約は、回路規模がAth[Gate]以内という制約である。
また、消費電力制約は、機能モデルソースコード171により実現される組込みシステムの全体の消費電力がPth[W]以内という制約である。
なお、非機能要件情報172には、処理性能制約、回路規模制約及び消費電力制約以外の非機能要件が記述されていてもよい。例えば、非機能要件情報172に、外部入出力のインタフェースに関する制約又は外部メモリのハードウェアリソースに関する制約が記述されていてもよい。
図4のステップS120において、解析部120は、機能モデルソースコード171から機能モデルベクトル173を生成する。
より具体的には、解析部120は、機能モデルソースコード171を最小分割単位で分割する。本実施の形態では、解析部120は、以下の分割条件に基づき、機能モデルソースコード171を最小分割単位で分割して複数のプログラム要素を得る。
(1)プログラム要素の単位はベーシックブロック(C言語の場合は{ })でくくられた範囲とする(なお、関数は全てインライン展開されるものとする)。
(2)機能モデルソースコード171がネスト構造である場合は、ネストの上位/下位をそれぞれのプログラム要素とする。
(3)ベーシックブロック内の演算数が閾値を超える場合は、ベーシックブロックの出力に用いられる変数のうち共通する変数を用いているすべての式を1つのプログラム要素として、分割する。
次に、解析部120は、機能モデルソースコード171に含まれる演算子の数、分岐の数、ループの数、変数の数及びデータの入出力数の少なくともいずれかの数値パラメータをプログラム要素ELEMxごとに解析して、機能モデルベクトル173を生成する。
ここでは、解析部120は、機能モデルソースコード171に含まれる演算子の数、分岐の数、ループの数、中間変数の数及びデータの入出力数をプログラム要素ELEMxごとに解析して、機能モデルベクトル173を生成することとする。
解析部120は、例えば、以下の手法で、各パラメータを抽出する。
(1)演算子数
解析部120は、プログラム要素ごとに、プログラム要素内に含まれる“+”、“−”、“*”、“−”、“<<”の個数を求める。
なお、解析部120は、積和演算に含まれる積演算子と和演算子とを個別に計数せずに、積和演算子として計数する。例えば、解析部120は、積和演算“y=a+b*c”に対して、“+”、“*”を別々に計数せずに、1つの積和演算子として計数する
また、解析部120は、定数乗算に含まれる乗算演算子と変数乗算に含まれる乗算演算子とを区別して計数する。例えば、解析部120は、定数乗算(例えば、y=a*3)の乗算演算子と変数乗算(例えば、y=a*b)の乗算演算子は区別して計数する。
解析部120は、同様に、定数除算に含まれる除算演算子と変数除算に含まれる除算演算子とを区別して計数する。
(2)分岐数
解析部120は、機能モデルソースコード171に含まれるif/elseの個数を求める。また、解析部120は、機能モデルソースコード171にswitchがある場合はcaseの個数の合計値を求める。
(3)ループ数
解析部120は、最外ループのループ数を計数する。なお、ループ数可変の場合は、解析部120は、最大値を計数する。
(4)中間変数個数
解析部120は、プログラム要素ごとに、当該プログラム要素内に含まれる中間変数の個数を求める。より具体的には、解析部120は、他のプログラム要素で使用されておらず、当該プログラム要素で参照された後に値が代入されている変数の個数を求める。
解析部120は、例えば、以下のtmpのような変数を計数する。
int tmp;
for(int i=0;i<N;i++){
out[i]=tmp;
tmp=func(in[i]);

(5)組込みシステム外部からの入力数
解析部120は、プログラム要素ごとに、当該プログラム要素内で/*external_input*/で指定された変数が参照される回数の合計値を求める。
(6)組込みシステム外部への出力数
解析部120は、プログラム要素ごとに、当該プログラム要素内で/*external_output*/で指定された変数に代入される回数の合計値を求める。
(7)他の機能からの入力数
解析部120は、プログラム要素ごとに、他のプログラム要素で代入された後に、当該プログラム要素内で参照されている、配列ではない変数の個数を計数する。
解析部120は、例えば、以下のvalのような変数を計数する。
//他のプログラム要素

val=func1();

//当該プログラム要素

func2(val+b);

(8)他の機能への出力数
解析部120は、プログラム要素ごとに、当該プログラム要素内で代入された後、他のプログラム要素内で参照されている、配列ではない変数の個数を計数する。すなわち、解析部120は、上記(7)の逆のパタンとなる変数の個数を計数する。
(9)配列入力数
解析部120は、プログラム要素ごとに、(a)当該プログラム要素で参照される配列の型と、(b)当該配列への当該プログラム要素でのアクセス数と、(c)当該プログラム要素で当該配列が参照される際のアクセスインデックスと当該プログラム要素よりも前に実行されるプログラム要素で当該配列に値が代入される際のアクセスインデックスとの差とを抽出する。なお、アクセスインデックスの差が閾値以上にならない場合は、解析部120は、アクセスインデックスの差として、既定の最大値を用いる。
解析部120は、例えば以下の場合に、(b)アクセス数としてNを抽出し、(c)アクセスインデックスの差として、(i+3)−i=3を抽出する。
//他のプログラム要素
for(int i=0;i<N;i++){
array[i]=i*i;

//当該プログラム要素
for(int i=0;i<N;i++){
out[i]=array[i+3];

(10)配列出力数
解析部120は、プログラム要素ごとに、(a)当該プログラム要素で値が代入される配列の型と、(b)当該配列への当該プログラム要素でのアクセス数と、(c)当該プログラム要素で当該配列に値が代入される際のアクセスインデックスと当該プログラム要素よりも後に実行されるプログラム要素で当該配列が参照される際のアクセスインデックスとの差とを抽出する。すなわち、解析部120は、上記(9)の逆のパタンとなる変数の個数を計数する。
(11)ネスト数
機能モデルソースコード171が階層化されている場合、すなわち、機能モデルソースコード171がネスト構造である場合は、解析部120は、各プログラム要素のネストの段数を判定する。ネストの段数を、以下ネスト数という。
図19は、解析部120が抽出した各プログラム要素のネスト数が示されるネスト数情報185の例を示す。図19は、図6の機能モデルソースコード171に対して生成されたネスト数情報185の例である。最上位のプログラム要素であるELEM0はネスト数0となり、その下位のプログラム要素であるELEM1、ELEM2、ELEM4はネスト数1となる。また、ELEM5、ELEM6は機能モデルソースコード171上ではネスト構造になっていないが、ベーシックブロック内の演算数が閾値を超えるとして、ELEM4から分割されている。このため、ELEM5及びELEM6は、ELEM4の下位階層として扱われ、ネスト数は2となる。
(12)下位プログラム要素
解析部120は、プログラム要素ごとに、当該プログラム要素に下位のプログラム要素が存在するか否かを解析する。
図20は、解析部120の解析結果が示されるネスト構造情報186の例を示す。図20のネスト構造情報186では、プログラム要素に下位のプログラム要素が存在する場合は、“1”が設定される。但し、図20のネスト構造情報186では、直下のプログラム要素に対してのみ“1”が設定される。例えば、ELEM0は、直下のプログラム要素としてELEM1、ELEM2、ELEM4が存在するため、ELEM0の行において、ELEM1、ELEM2、ELEM4の行に“1”が設定されている。ELEM3、ELEM5、ELEM6はELEM0の直下のプログラム要素ではないため、“0”が設定されている。このようにして、解析部120は、機能モデルソースコード171でのネスト構造をパラメータ化している。
図14は、解析部120により生成された機能モデルベクトル173の例を示す。
図14の機能モデルベクトル173では、作図上の理由から、ELEM0〜ELEM3についてのみ図示しているが、プログラム要素ELEM0〜ELEM6の各々に対して、演算子(加算、減算、定数乗算、変数乗算、定数除算、変数除算、代入、積和)の数、分岐の数、ループの数、中間変数の数及びデータの入出力数が示される。
なお、入力の欄では、列に入力元のプログラム要素が記述され、行に入力先のプログラム要素が記述される。また、出力の欄では、列に出力先のプログラム要素が記述され、行に出力元のプログラム要素が記述される。図14の例では、外部からプログラム要素ELEM0にデータが渡される。また、プログラム要素ELEM0からプログラム要素ELEM1及びプログラム要素ELEM2にデータが渡される。また、プログラム要素ELEM1及びプログラム要素ELEM2からプログラム要素ELEM3にデータが渡される。
次に、図4のステップS121において、解析部120が、非機能要件情報172から非機能要件ベクトル174を生成する。
より具体的には、解析部120は、非機能要件情報172から制約値を抽出し、抽出した制約値を用いて非機能要件ベクトル174を生成する。
図7に示す非機能要件情報172が与えられた場合は、解析部120は、図8に示すような非機能要件ベクトル174を生成する。
次に、ステップS130において、機能モジュール抽出部130は、プログラム要素ELEMxをグルーピングし、機能モジュール情報176を生成する。
より具体的には、機能モジュール抽出部130は、機能モデルベクトル173とネスト数情報185とネスト構造情報186と非機能要件ベクトル174に抽出ルール175を適用して、機能モデルソースコード171に含まれる複数のプログラム要素ELEMxを複数の機能モジュールにグルーピングする。そして、機能モジュール抽出部130は、グルーピング結果を示す機能モジュール情報176を生成する。
図9に機能モジュール抽出部130によって生成される機能モジュール情報176の例を示す。
図9の例では、プログラム要素ELEM0、ELEM4、ELEM5及びELEM6は機能モジュール0に分類されている。また、プログラム要素ELEM1は機能モジュール1に分類されている。また、プログラム要素ELEM2及びELEM3は、機能モジュール2に分類されている。
次に、ステップS131において、機能モジュール抽出部130は、機能モジュール間のデータの入出力関係を解析し、解析結果が示されるデータ入出力関係情報177を生成する。
より具体的には、機能モデルベクトル173に示されるプログラム要素ごとのデータの入力状況及び出力状況を解析して、機能モジュール情報176に示される機能モジュール間のデータの入出力関係を解析する。
図10の(a)に、データ入出力関係情報の例を示す。また、図10(b)は、図10の(a)のデータ入出力関係情報に示される内容を図式化したものである。
次に、ステップS140において、ブロック候補抽出部140が、機能モジュールに対応するブロック候補を抽出する。
より具体的には、ブロック候補抽出部140は、機能モジュールごとに、ブロックテンプレート178に含まれる複数のブロックのうち、機能モジュールに対応するブロックをブロック候補として抽出する。
ブロックテンプレート178には、ソフトウェアを実行するプロセッサ、ASIC、FPGA等の専用ハードウェアデバイスがブロックとして含まれている。
ブロックテンプレート178には以下の情報が含まれる。なお、以下において、S/Wはソフトウェアを意味し、H/Wはハードウェアを意味する。
(1)処理タイプ:S/W、H/W(パイプライン)、H/W(並列)、H/W(逐次実行)
(2)通信タイプ:バス、直接接続
(3)メモリタイプ:内部メモリ、外部メモリ(揮発)、外部メモリ(不揮発)
上記の(1)処理タイプは、機能モジュールを実現するデバイスを、ソフトウェアを実行するプロセッサとするか、専用H/Wとするかを決定するためのパラメータである。また、(1)処理タイプには、専用H/Wの種類として、例えば、パイプライン処理が行われるH/W、並列処理が行われるH/W、逐次処理が行われるH/Wが定義される。
ブロック候補抽出部140は、データ入出力関係情報177に示される機能モジュールごとの入出力関係を解析して、各機能モジュールに対応する全てのブロックをブロック候補として抽出する。
例えば、図10では、機能モジュール0は、外部(AXIスレーブ)からデータが入力されるが、ブロック候補抽出部140は、機能モジュール0に対して、AXIスレーブとのインタフェースを有するデバイスを全てをブロック候補として抽出する。
図11は、機能モジュール0に対してブロック候補抽出部140により抽出されたブロック候補の例を示す。
図11では、ブロック候補0−0、ブロック候補0−1、ブロック候補0−2が抽出されている。
次に、ステップS141において、ブロック候補抽出部140は、ステップS140で抽出した複数のブロック候補から、非機能要件情報172に示される非機能要件を満たすブロック候補を選択する。そして、ブロック候補抽出部140は、選択したブロック候補が示されるブロック候補抽出結果179を生成する。
より具体的には、ブロック候補抽出部140は、ステップS140で抽出した複数のブロック候補のうち、処理タイプがH/Wであるブロック候補は、高位合成装置200によって高位合成を行う。ブロック候補抽出部140は、高位合成装置200の高位合成により処理性能や回路規模などのブロック候補の性能を得る。そして、ブロック候補抽出部140は、高位合成により得られた性能が非機能要件情報172の非機能要件を満たすか否かをブロック候補ごとに判定する。ブロック候補抽出部140は、性能が非機能要件を満たすブロック候補を選択し、選択したブロック候補が示されるブロック候補抽出結果179を生成する。
また、ブロック候補抽出部140は、ステップS140で抽出した複数のブロック候補のうち、処理タイプがS/Wであるブロック候補は、ソフトウェアコンパイラ300によって高位合成を行う。ブロック候補抽出部140は、ソフトウェアコンパイラ300の高位合成により、命令実行数とクロック数を得る。そして、ブロック候補抽出部140は、実行命令数×クロック数から処理性能を算出する。ブロック候補抽出部140は、算出した処理性能の非機能要件を満たすか否かをブロック候補ごとに判定する。ブロック候補抽出部140は、性能が非機能要件を満たすブロック候補を選択し、選択したブロック候補が示されるブロック候補抽出結果179を生成する。
次に、ステップS150において、アーキテクチャ候補抽出部150が、ステップS141で選択されたブロック候補を接続してアーキテクチャ候補を抽出する。
より具体的には、アーキテクチャ候補抽出部150は、データ入出力関係情報177に示される入出力関係に従って、ブロック候補抽出結果179に示されるブロック候補を接続する。この際、アーキテクチャ候補抽出部150は、各ブロック候補の通信タイプに矛盾がないようにブロック候補を接続する。アーキテクチャ候補抽出部150は、例えば、通信タイプがバスタイプのブロック候補はバスに接続する。
図12にアーキテクチャ候補の例を示す。
図12の例では、機能モジュール0に対して、ブロック候補0−0、ブロック候補0−1、ブロック候補0−2が選択されている。また、機能モジュール1に対して、ブロック候補1−0、ブロック候補1−1、ブロック候補1−2が選択されている。また、機能モジュール2に対して、ブロック候補2−0、ブロック候補2−1、ブロック候補2−2が選択されている。また、機能モジュール3に対して、ブロック候補3−0、ブロック候補3−1、ブロック候補3−2が選択されている。なお、図12では、作図上の理由から、「ブロック候補」は単に「ブロック」と表記している。
また、図12では、作図上の理由から、アーキテクチャ候補は2つしか図示していないが、アーキテクチャ候補抽出部150は、通信タイプに矛盾が生じないブロック候補の組み合わせの全てに対応するアーキテクチャ候補を抽出する。
このように、アーキテクチャ候補抽出部150は、それぞれのブロック候補の組み合わせが異なる複数のアーキテクチャ候補を抽出する。
次に、図5のステップS151において、アーキテクチャ候補抽出部150は、ステップS150で抽出されたアーキテクチャ候補から、非機能要件を満たさないアーキテクチャ候補を除外する。
より具体的には、アーキテクチャ候補抽出部150は、図7に示すように、非機能要件情報172に処理性能制約Tth、回路規模制約Ath、消費電力制約Pthが含まれている場合は、以下の条件に該当するアーキテクチャ候補を除外する。
(1)Tthに関係するブロックのレイテンシ総和>Tth
(2)ブロックの回路規模の総和>Ath
(3)ブロックの消費電力の総和>Pth
そして、アーキテクチャ候補抽出部150は、ステップS150の後も残されているアーキテクチャ候補が示されるアーキテクチャ候補抽出結果180を生成する。
次に、ステップS191において、バスレイヤー選択部191が、バスレイヤーを選択する。
より具体的には、アーキテクチャ候補抽出結果180に、2以上のブロック(デバイス)がバス接続されているアーキテクチャ候補が含まれている場合に、当該アーキテクチャ候補に対して、非機能要件情報172の処理性能制約Tthを満たし、回路規模の最も小さくなるバスレイヤーをバスレイヤーテンプレート183から選択する。そして、バスレイヤー選択部191は、選択したバスレイヤーが示されるバスレイヤー選択結果情報184を生成する。
バスレイヤーテンプレート183には、クロスバー、リングバス等のバス接続パタン情報と対応するバス規格が格納されている。
バスレイヤー選択部191によるバスレイヤー選択手法の一例を示す。
2以上のブロックを接続するバスがAXIバスの場合は、バスレイヤー選択部191は、初期値として最も高速となるように全マスタ−スレーブ間をクロスバーで接続する。次に、バスレイヤー選択部191は、この接続にて、ソフトウェア/ハードウェア協調シミュレーションにより、非機能要件情報172の処理性能制約Tthの対象となっているアーキテクチャ候補中の箇所の処理時間を測定する。測定した処理時間が処理性能制約Tthを満たしている場合は、アーキテクチャ候補中で最もデータ転送の少ないパスを共有バスに変更し、再度ソフトウェア/ハードウェア協調シミュレーションにより処理時間を計測する。以上の手順を繰り返し、処理性能制約Tthを満たし、最も回路規模の小さいバスレイヤーを探索する。
次に、ステップS160において、性能評価部160が、各アーキテクチャ候補の性能を評価する。
より具体的には、性能評価部160は、アーキテクチャ候補抽出結果180の各アーキテクチャ候補においてソフトウェア/ハードウェア協調シミュレーションを実行して、各アーキテクチャ候補の性能(例えば、処理性能及び回路規模)を得る。なお、このとき、バス接続は、ステップS191で生成されたバスレイヤー選択結果情報184に示されるバスレイヤー(ステップS191で選択されたバスレイヤー)が用いられる。
そして、ステップS161において、性能評価部160は、ソフトウェア/ハードウェア協調シミュレーションにより得られた性能が非機能要件情報172の非機能要件を満たすか否かをアーキテクチャ候補ごとに判定する。
非機能要件を満たす性能をもつアーキテクチャ候補がある場合(ステップS161でYES)は、性能評価部160は、ステップS162において、非機能要件を満たす性能をもつアーキテクチャ候補をアーキテクチャ候補抽出結果180から選択する。そして、性能評価部160は、選択したアーキテクチャ候補が示されるアーキテクチャ候補選択結果181を生成する。
次に、ステップS163において、性能評価部160は、ステップS162で生成したアーキテクチャ候補選択結果181を例えばディスプレイ906に出力する。
そして、アーキテクチャ生成装置100は、処理を終了する。
一方、非機能要件を満たす性能をもつアーキテクチャ候補が存在しない場合(ステップS161でNO)は、性能評価部160は、ステップS164において、性能と非機能要件との差が最小のアーキテクチャ候補である近似アーキテクチャ候補を選択する。
より具体的には、性能評価部160は、ステップS160で得られた性能と非機能要件情報172の制約値との差の絶対値をアーキテクチャ候補ごとに算出し、算出した絶対値の合計値が最小となるアーキテクチャ候補を近似アーキテクチャ候補として選択する。
ここでは、非機能要件として処理性能制約Tthと回路規模制約Athが与えられている場合を想定する。また、アーキテクチャ候補抽出結果180に記述されているアーキテクチャ候補がN個(N≧2)あり、アーキテクチャ候補x(xは1からN)の処理性能を処理性能Txとし、アーキテクチャ候補xの回路規模を回路規模Axとする。性能評価部160は、|Tth−Tx|+|Ath−Ax|の値が最小となるアーキテクチャ候補xを近似アーキテクチャ候補として選択する。
次に、ステップS165において、性能評価部160は、ステップS164で選択した近似アーキテクチャ候補の性能と制約値との差分を機能モジュール抽出部130に通知する。
つまり、性能評価部160は、ステップS164で選択したアーキテクチャ候補xの前述の|Tth−Tx|と|Ath−Ax|とを機能モジュール抽出部130に通知する。
次に、機能モジュール抽出部130がステップS130において、ステップS165で性能評価部160から通知された差分(例えば、|Tth−Tx|と|Ath−Ax|)に基づき非機能要件ベクトル174を更新する。
図21は、更新された非機能要件ベクトル174の例を示す。
そして、機能モジュール抽出部130は、更新後の非機能要件フィードバック情報を用いて、例えば、教師つき学習のアルゴリズムまたは回帰分析のアルゴリズムに基づく機械学習を行い、抽出ルール175を変更する。そして、機能モジュール抽出部130は、変更後の抽出ルール175を用いて機能モデルソースコード171に含まれるプログラム要素ELEM0〜ELEM6をグルーピングして新たな機能モジュールを得る。
以降は、新たな機能モジュールに対してステップS131以降の処理が行われる。
ここで、図13を参照して、機能モジュール抽出部130が機械学習によって抽出ルール175を生成する手順を説明する。
なお、以下では、機能モジュール抽出部130が、設計済みの既存アーキテクチャが示される既存アーキテクチャ情報182を用いて機械学習(Deep Learning等)を行って抽出ルール175を生成する手順を示す。
なお、既存アーキテクチャは、例えば設計者が手作業により設計したアーキテクチャである。
ここでは、図16に示すアーキテクチャを既存アーキテクチャとする。
また、既存アーキテクチャが設計されている組込みシステムを既存組込みシステムという。
図16に示すように、既存組込みシステムには、プログラム要素ELEM0−ELEM3が含まれているものとする。
図16の既存アーキテクチャでは、プログラム要素ELEM0が機能モジュール0に分類されている。また、プログラム要素ELEM1が機能モジュール1に分類されている。また、プログラム要素ELEM2とプログラム要素ELEM3とが機能モジュール2に分類されている。また、機能モジュール0がプロセッサにより実現され、機能モジュール1が専用ハードウェア1で実現され、機能モジュール2が専用ハードウェア2により実現される。また、プロセッサ、専用ハードウェア1、専用ハードウェア2はそれぞれAXIバスに接続している。
以下では、プログラム要素ELEM0−ELEM3を区別する必要がない場合は、プログラム要素ELEM0−ELEM3のそれぞれをプログラム要素ELEMxという。
図13のステップS111において、ソースコード取得部110が機能モデルソースコード171と非機能要件情報172を取得する。ステップS111で取得する機能モデルソースコード171と非機能要件情報172は、既存組込みシステムの機能モデルソースコード171と非機能要件情報172である。
なお、ステップS111における取得手順は図4のステップS110で説明したものと同じであるため、ステップS111における取得手順についての説明は省略する。
次に、ステップS190において、既存アーキテクチャ情報取得部190が既存組込みシステムの既存アーキテクチャ情報182を取得し、記憶部170に既存アーキテクチャ情報182を格納する。
既存アーキテクチャ情報182には、図16に示すように、以下の情報が含まれる。
(1)既存組込みシステムの機能モデルソースコード171に含まれるプログラム要素のグルーピング結果を示す情報(機能モジュール情報176に相当する情報)
(2)既存アーキテクチャにおけるブロック構成とブロック間の接続に関する情報(アーキテクチャ候補抽出結果180に相当する情報)
次に、ステップS122において、解析部120が、ステップS111で取得された既存組込みシステムの機能モデルソースコード171から機能モデルベクトル173を生成する。
なお、ステップS122における機能モデルベクトル173の生成手順は、図4のステップS120で説明したものと同じであるため、説明を省略する。
次に、ステップS123において、解析部120は、ステップS111で取得された既存組込みシステムの非機能要件情報172から非機能要件ベクトル174を生成する。
なお、ステップS123における非機能要件ベクトル174の生成手順は、図4のステップS121で説明したものと同じであるため、説明を省略する。
なお、図15は、ステップS123で生成された非機能要件ベクトル174の例を示す。図15において、Tth0、Tth1、Tth2は図16に示す既存アーキテクチャとプロセッサ(ELEM0)、専用ハードウェア1(ELEM1)、専用ハードウェア2(ELEM2、ELEM3)のそれぞれの処理性能制約値を示す。また、Ath0、Ath1、Ath2は図16に示す既存アーキテクチャとプロセッサ(ELEM0)、専用ハードウェア1(ELEM1)、専用ハードウェア2(ELEM2、ELEM3)のそれぞれの回路規模制約値を示す。ELEM2、ELEM3は1つの機能モジュール(機能モジュール2)分類されるため制約値Tth2、Ath2をそれぞれELEM2、ELEM3で分ける(この例では2で割る)。
次に、ステップS132において、機能モジュール抽出部130が、抽出ルール175に基づき、既存組込みシステムのプログラム要素ELEMxをグルーピングし、機能モジュール情報176を生成する。なお、ステップS132における機能モジュール情報176の生成手順は、図4のステップS130で説明したものと同じであるため、説明を省略する。
次に、S133において、機能モジュール抽出部130は、ステップS132で得られたグルーピング結果と既存アーキテクチャ情報182に含まれるグルーピング結果とが等しいか否かを判定する。
そして、グルーピング結果が等しい場合(ステップS133でYES)は、機能モジュール抽出部130は処理を終了する。
例えば、ステップS132において図18に示すグルーピング結果が得られている場合は、図16に示すグルーピング結果と等しいため、機能モジュール抽出部130は処理を終了する。
一方、グルーピング結果が一致しない場合(ステップS133でNO)は、ステップS134において、機能モジュール抽出部130は、既存アーキテクチャ情報182に格納された既存アーキテクチャのグルーピング結果(ベクトル)を正解とし、ステップS132で生成した機能モジュール情報176のグルーピング結果(ベクトル)との誤差を計算する。
例えば、図17に示すグルーピング結果が得られている場合は、図16に示すグルーピング結果と等しくないため、機能モジュール抽出部130は、誤差を計算する。
そして、機能モジュール抽出部130は、一般的な教師つき学習のアルゴリズムまたは回帰分析のアルゴリズムに基づき、計算した誤差を用いて、抽出ルール175を更新する。
ステップS134の後、機能モジュール抽出部130は、ステップS132において、更新後の抽出ルール175を用いてプログラム要素ELEMxをグルーピングして、新たな機能モジュール情報176を生成する。以降は、グルーピング結果が一致するまでステップS133、ステップS134及びステップS132が繰り返される。
例えば、ステップS132で生成した機能モジュール情報176のグルーピング結果が図17に示すものであれば、機能モジュール抽出部130は、機械学習により、図18に示すグルーピング結果が得られるように抽出ルール175を変更する。
機能モジュール抽出部130は、このように、機能モデルベクトル173に記述されるパラメータから読み取れる関係性を解析する。そして、機能モジュール抽出部130は、解析結果から、抽出ルール175により得られるグルーピング結果と正解のグルーピング結果との誤差が小さくなるように機械学習パラメータを制御する。このようにすることで、機能モジュール抽出部130は、設計者が手作業により生成するアーキテクチャと同じアーキテクチャを獲得可能な抽出ルール175を生成することができる。
また、機能モジュール抽出部130が複数の既存アーキテクチャを学習することで、抽出ルール175は汎化され、既存アーキテクチャのない機能モデルと非機能要件を与えた際にも適切なグルーピングが可能になる。
***実施の形態の効果の説明***
以上、本実施の形態では、機能モジュールの解析により、各機能モジュールの属性と複数の機能モジュールにおける階層を抽出し、抽出した機能モジュールの属性と複数の機能モジュールにおける階層とに基づいて機械学習を行う。このため、本実施の形態によれば、機械学習の精度を高めることができる。
なお、本発明は、本実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
例えば、アーキテクチャ生成装置100の機能構成は図1と異なる機能構成であっても構わない。
また、アーキテクチャ生成装置100の動作手順は図4及び図5に示したものと異なっていてもよい。
***ハードウェア構成の説明***
最後に、アーキテクチャ生成装置100のハードウェア構成の補足説明を行う。
図3に示すプロセッサ901は、プロセッシングを行うIC(Integrated Circuit)である。
プロセッサ901は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)等である。
補助記憶装置902は、ROM(Read Only Memory)、フラッシュメモリ、HDD(Hard Disk Drive)等である。
メモリ903は、RAM(Random Access Memory)である。
通信装置904は、例えば、通信チップ又はNIC(Network Interface Card)である。
また、補助記憶装置902には、OS(Operating System)も記憶されている。
そして、OSの少なくとも一部がメモリ903にロードされ、プロセッサ901により実行される。
プロセッサ901はOSの少なくとも一部を実行しながら、ソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160、既存アーキテクチャ情報取得部190及びバスレイヤー選択部191の機能を実現するプログラムを実行する。
プロセッサ901がOSを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、ソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160、既存アーキテクチャ情報取得部190及びバスレイヤー選択部191の処理の結果を示す情報やデータや信号値や変数値が、補助記憶装置902、メモリ903、プロセッサ901内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、ソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160、既存アーキテクチャ情報取得部190及びバスレイヤー選択部191の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記憶媒体に記憶されてもよい。
また、ソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160、既存アーキテクチャ情報取得部190及びバスレイヤー選択部191の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、アーキテクチャ生成装置100は、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC、FPGAといった電子回路により実現されてもよい。
この場合は、ソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160、既存アーキテクチャ情報取得部190及びバスレイヤー選択部191は、それぞれ電子回路の一部として実現される。
なお、プロセッサ及び上記の電子回路を総称してプロセッシングサーキットリーともいう。
100 アーキテクチャ生成装置、110 ソースコード取得部、120 解析部、130 機能モジュール抽出部、140 ブロック候補抽出部、150 アーキテクチャ候補抽出部、160 性能評価部、170 記憶部、171 機能モデルソースコード、172 非機能要件情報、173 機能モデルベクトル、174 非機能要件ベクトル、175 抽出ルール、176 機能モジュール情報、177 データ入出力関係情報、178 ブロックテンプレート、179 ブロック候補抽出結果、180 アーキテクチャ候補抽出結果、181 アーキテクチャ候補選択結果、182 既存アーキテクチャ情報、183 バスレイヤーテンプレート、184 バスレイヤー選択結果情報、185 ネスト数情報、186 ネスト構造情報、190 既存アーキテクチャ情報取得部、191 バスレイヤー選択部、200 高位合成装置、300 ソフトウェアコンパイラ、901 プロセッサ、902 補助記憶装置、903 メモリ、904 通信装置、905 入力装置、906 ディスプレイ。

Claims (8)

  1. 階層化されたプログラムコードを既定の分割条件に従って二以上のプログラム要素に分割し、前記二以上のプログラム要素のいずれかのプログラム要素内の演算数が閾値を超える場合に、当該プログラム要素の出力に用いられる変数のうち共通する変数を用いているすべての式を1つのプログラム要素として、当該プログラム要素を更に二以上のプログラム要素に再分割し、分割及び再分割により得られた複数のプログラム要素の各プログラム要素を解析し、各プログラム要素の属性と、前記複数のプログラム要素における階層とを抽出する解析部と、
    前記解析部により抽出された各プログラム要素の属性と前記複数のプログラム要素における階層とに基づいて機械学習を行って、前記複数のプログラム要素を複数のグループにグルーピングするグルーピング部とを有する情報処理装置。
  2. 前記解析部は、
    各プログラム要素の属性として、プログラム要素ごとに、当該プログラム要素で参照される配列の型と、当該配列への当該プログラム要素でのアクセス数と、当該プログラム要素で当該配列が参照される際のアクセスインデックスと当該プログラム要素よりも前に実行されるプログラム要素で当該配列に値が代入される際のアクセスインデックスとの差とを抽出する請求項1に記載の情報処理装置。
  3. 前記解析部は、
    各プログラム要素の属性として、プログラム要素ごとに、当該プログラム要素で値が代入される配列の型と、当該配列への当該プログラム要素でのアクセス数と、当該プログラム要素で当該配列に値が代入される際のアクセスインデックスと当該プログラム要素よりも後に実行されるプログラム要素で当該配列が参照される際のアクセスインデックスとの差とを抽出する請求項1に記載の情報処理装置。
  4. 前記解析部は、
    各プログラム要素の属性として、各プログラム要素に含まれる演算子の数、分岐の数、ループの数、変数の数及びデータの入出力数の少なくともいずれかを抽出する請求項1に記載の情報処理装置。
  5. 前記解析部は、
    各プログラム要素に含まれる演算子の数を抽出する場合に、
    積和演算に含まれる積演算子と和演算子とを個別に計数せずに、積和演算子として計数し、
    定数乗算に含まれる乗算演算子と変数乗算に含まれる乗算演算子とを区別して計数し、
    定数除算に含まれる除算演算子と変数除算に含まれる除算演算子とを区別して計数する請求項4に記載の情報処理装置。
  6. 前記情報処理装置は、更に、
    前記グルーピング部によるグルーピング結果に基づき前記プログラムコードを実現するコンピュータアーキテクチャの候補として生成された複数のアーキテクチャ候補のうち2以上のデバイスがバス接続されているアーキテクチャ候補に対して、複数のバスレイヤーの中から制約条件を満たすバスレイヤーを選択するバスレイヤー選択部を有する請求項1に記載の情報処理装置。
  7. コンピュータが、階層化されたプログラムコードを既定の分割条件に従って二以上のプログラム要素に分割し、前記二以上のプログラム要素のいずれかのプログラム要素内の演算数が閾値を超える場合に、当該プログラム要素の出力に用いられる変数のうち共通する変数を用いているすべての式を1つのプログラム要素として、当該プログラム要素を更に二以上のプログラム要素に再分割し、分割及び再分割により得られた複数のプログラム要素の各プログラム要素を解析し、各プログラム要素の属性と、前記複数のプログラム要素における階層とを抽出し、
    前記コンピュータが、抽出された各プログラム要素の属性と前記複数のプログラム要素における階層とに基づいて機械学習を行って、前記複数のプログラム要素を複数のグループにグルーピングする情報処理方法。
  8. 階層化されたプログラムコードを既定の分割条件に従って二以上のプログラム要素に分割し、前記二以上のプログラム要素のいずれかのプログラム要素内の演算数が閾値を超える場合に、当該プログラム要素の出力に用いられる変数のうち共通する変数を用いているすべての式を1つのプログラム要素として、当該プログラム要素を更に二以上のプログラム要素に再分割し、分割及び再分割により得られた複数のプログラム要素の各プログラム要素を解析し、各プログラム要素の属性と、前記複数のプログラム要素における階層とを抽出する解析処理と、
    前記解析処理により抽出された各プログラム要素の属性と前記複数のプログラム要素における階層とに基づいて機械学習を行って、前記複数のプログラム要素を複数のグループにグルーピングするグルーピング処理とをコンピュータに実行させる情報処理プログラム。
JP2017516806A 2016-10-04 2016-10-04 情報処理装置、情報処理方法及び情報処理プログラム Expired - Fee Related JP6227195B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/079513 WO2018066074A1 (ja) 2016-10-04 2016-10-04 情報処理装置、情報処理方法及び情報処理プログラム

Publications (2)

Publication Number Publication Date
JP6227195B1 true JP6227195B1 (ja) 2017-11-08
JPWO2018066074A1 JPWO2018066074A1 (ja) 2018-10-04

Family

ID=60265762

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017516806A Expired - Fee Related JP6227195B1 (ja) 2016-10-04 2016-10-04 情報処理装置、情報処理方法及び情報処理プログラム

Country Status (3)

Country Link
US (1) US20190220778A1 (ja)
JP (1) JP6227195B1 (ja)
WO (1) WO2018066074A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022554262A (ja) * 2019-10-31 2022-12-28 華為技術有限公司 デバイス管理方法、装置、システム、及びデバイス、並びに記憶媒体

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2507753A4 (en) 2009-12-04 2013-10-30 Uber Technologies Inc SYSTEM AND METHOD FOR ORGANIZING TRANSPORT BETWEEN PARTS USING MOBILESSYSTEM DEVICES AND METHOD FOR ARRANGING TRANSPORT AMONGST PARTS THROUGH USE OF MOBILE DEVICES
US9230292B2 (en) 2012-11-08 2016-01-05 Uber Technologies, Inc. Providing on-demand services through use of portable computing devices
JP6996431B2 (ja) * 2018-06-13 2022-01-17 日本電信電話株式会社 パラメータ最適化装置、方法、およびプログラム
WO2020188658A1 (ja) * 2019-03-15 2020-09-24 三菱電機株式会社 アーキテクチャ推定装置、アーキテクチャ推定方法、およびアーキテクチャ推定プログラム
CN112148391A (zh) * 2019-06-26 2020-12-29 北京百度网讯科技有限公司 生成基于芯片的计算功能的方法、装置、设备和存储介质
US11144429B2 (en) * 2019-08-26 2021-10-12 International Business Machines Corporation Detecting and predicting application performance
US11431594B2 (en) 2020-03-31 2022-08-30 Nec Corporation Part extraction device, part extraction method and recording medium

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012098902A (ja) * 2010-11-02 2012-05-24 Hitachi Ltd ソフトウェア資産整理方法及び装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012098902A (ja) * 2010-11-02 2012-05-24 Hitachi Ltd ソフトウェア資産整理方法及び装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022554262A (ja) * 2019-10-31 2022-12-28 華為技術有限公司 デバイス管理方法、装置、システム、及びデバイス、並びに記憶媒体
JP7418565B2 (ja) 2019-10-31 2024-01-19 華為技術有限公司 デバイス管理方法、装置、システム、及びデバイス、並びに記憶媒体

Also Published As

Publication number Publication date
WO2018066074A1 (ja) 2018-04-12
US20190220778A1 (en) 2019-07-18
JPWO2018066074A1 (ja) 2018-10-04

Similar Documents

Publication Publication Date Title
JP6227195B1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
WO2019216404A1 (ja) ニューラルネットワーク構築装置、情報処理装置、ニューラルネットワーク構築方法及びプログラム
US8001510B1 (en) Automated method of architecture mapping selection from constrained high level language description via element characterization
EP3726442A1 (en) Semantic modeling and machine learning-based generation of conceptual plans for manufacturing assemblies
KR102013582B1 (ko) 혼합 모드 프로그램의 소스 코드 오류 위치 검출 장치 및 방법
Sommer et al. Automatic mapping of the sum-product network inference problem to fpga-based accelerators
JP6173644B1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
Siddavaatam et al. Grey Wolf Optimizer Driven design space exploration: A novel framework for multi-objective trade-off in architectural synthesis
CN103270512A (zh) 智能架构创建器
Karmazin et al. Timing driven placement for quasi delay-insensitive circuits
Glette et al. Lookup table partial reconfiguration for an evolvable hardware classifier system
Conrady et al. LCS-based automatic configuration of approximate computing parameters for fpga system designs
CN114492251B (zh) 超算环境的低速流场发散处理方法、装置、设备及介质
Meeuws et al. Quipu: A statistical model for predicting hardware resources
Vasil’ev et al. Hardware implementation of high-performance fuzzy computations based on programmable logic integrated circuits
Sommer et al. Automatic synthesis of fpga-based accelerators for the sum-product network inference problem
US20210056241A1 (en) Design support device and computer readable medium
Herath et al. Performance estimation of fpga modules for modular design methodology using artificial neural network
GB2588134A (en) Verification of hardware design for data transformation component
US20230162010A1 (en) Synthesizing Zero-Loss Low-Power Approximate DNN Accelerators With Large-Scale Search
Goswami et al. Application of Machine Learning in FPGA EDA Tool Development
US20220335286A1 (en) Methods, systems, articles of manufacture, and apparatus for designing hardware
TWI841724B (zh) 執行模擬基礎物理設計規則以最佳化電路佈局
Goswami Machine Learning Based Prediction in FPGA CAD
EP4174725A1 (en) Memory-efficient distributed neural network training using rematerialization

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170327

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170327

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170327

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170412

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170425

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170608

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170912

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171010

R150 Certificate of patent or registration of utility model

Ref document number: 6227195

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees