JP6173644B1 - 情報処理装置、情報処理方法及び情報処理プログラム - Google Patents
情報処理装置、情報処理方法及び情報処理プログラム Download PDFInfo
- Publication number
- JP6173644B1 JP6173644B1 JP2017510421A JP2017510421A JP6173644B1 JP 6173644 B1 JP6173644 B1 JP 6173644B1 JP 2017510421 A JP2017510421 A JP 2017510421A JP 2017510421 A JP2017510421 A JP 2017510421A JP 6173644 B1 JP6173644 B1 JP 6173644B1
- Authority
- JP
- Japan
- Prior art keywords
- architecture
- candidate
- function
- unit
- candidates
- 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
Links
- 230000010365 information processing Effects 0.000 title claims description 13
- 238000003672 processing method Methods 0.000 title description 2
- 238000000605 extraction Methods 0.000 claims description 145
- 238000004458 analytical method Methods 0.000 claims description 51
- 238000000034 method Methods 0.000 claims description 34
- 239000000284 extract Substances 0.000 claims description 15
- 230000006870 function Effects 0.000 abstract description 199
- 238000012545 processing Methods 0.000 description 43
- 238000011156 evaluation Methods 0.000 description 32
- 238000010586 diagram Methods 0.000 description 19
- 230000015572 biosynthetic process Effects 0.000 description 13
- 238000003786 synthesis reaction Methods 0.000 description 13
- 238000010801 machine learning Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 101100171060 Caenorhabditis elegans div-1 gene Proteins 0.000 description 9
- 101100115215 Caenorhabditis elegans cul-2 gene Proteins 0.000 description 8
- 238000013461 design Methods 0.000 description 5
- 238000000611 regression analysis Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 101100208381 Caenorhabditis elegans tth-1 gene Proteins 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012854 evaluation process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
Description
また、分割された複数の機能を、組込みシステム上にどのように実装すれば所望の性能を出せるかということを検討し設計する必要がある。これをアーキテクチャ設計と呼ぶ。
具体的には、特許文献1では、組込みシステム全体の処理機能を記述した仕様に基づき、各処理の処理負荷を計算し、閾値以内の処理をプロセッサで実行させ、閾値を超える処理をハードウェアデバイスで実行させるソフトウェア/ハードウェア機能分割を行う技術が開示されている。
プログラムコードから抽出された複数の機能モジュールの各々に、各機能モジュールを実現するデバイスとして、プロセッサ及び前記プロセッサ以外のハードウェアデバイスのうちのいずれかを指定し、それぞれのデバイスの組み合わせが異なるコンピュータアーキテクチャの候補をアーキテクチャ候補として複数生成するアーキテクチャ候補生成部と、
前記アーキテクチャ候補生成部により生成された複数のアーキテクチャ候補の中から、前記コンピュータアーキテクチャに要求される要求属性を持つアーキテクチャ候補を選択するアーキテクチャ候補選択部とを有する。
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分または相当する部分を示す。
図1は、実施の形態1に係るアーキテクチャ生成装置100の機能構成例を示す。アーキテクチャ生成装置100は、高位合成装置200及びソフトウェアコンパイラ300に接続されている。
アーキテクチャ生成装置100は、情報処理装置の例である。また、アーキテクチャ生成装置100で行われる動作は情報処理方法の例である。
図2は、アーキテクチャ生成装置100内の記憶部170で記憶されている情報を示す。
図3は、アーキテクチャ生成装置100のハードウェア構成例を示す。
補助記憶装置902には、図1に示すソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160及び既存アーキテクチャ情報取得部190の機能を実現するプログラムが記憶されている。
そして、これらプログラムがメモリ903にロードされて、プロセッサ901がこれらプログラムを実行する。当該プログラムを実行することで、プロセッサ901が、後述するソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160及び既存アーキテクチャ情報取得部190の動作を行う。
図1では、プロセッサ901がソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160及び既存アーキテクチャ情報取得部190の機能を実現するプログラムを実行している状態を模式的に表している。
なお、ブロック候補抽出部140、アーキテクチャ候補抽出部150及び性能評価部160の機能を実現するプログラムは、情報処理プログラムの例である。
また、補助記憶装置902は、図1に示す記憶部170として機能する。すなわち、補助記憶装置902は、図2に示す情報を記憶している。また、メモリ903が、図1に示す記憶部170として機能してもよい。すなわち、メモリ903が、図2に示す情報を記憶するようにしてもよい。
通信装置904は、アーキテクチャ生成装置100が外部装置と通信する際に用いられる。通信装置904は、データを受信するレシーバー及びデータを送信するトランスミッターを含む。
入力装置905は、アーキテクチャ生成装置100のユーザが各種情報をアーキテクチャ生成装置100に入力するために用いられる
ディスプレイ906は、アーキテクチャ生成装置100のユーザに各種情報を提示するために用いられる。
機能モデルソースコード171及び非機能要件情報172はアーキテクチャ生成装置100のユーザが生成する。
また、ソースコード取得部110は、取得した機能モデルソースコード171と非機能要件情報172とを、記憶部170に格納する。図2は、ソースコード取得部110により機能モデルソースコード171と非機能要件情報172とが格納された状態を示す。
機能モデルソースコード171は、アーキテクチャ設計の対象となる組込みシステムの複数の機能が記述されているプログラムコードである。
ソースコード取得部110は、例えば図6、図7及び図8に示す機能モデルソースコード171を取得する。なお、図6、図7及び図8に示す機能モデルソースコード171の詳細は後述する。
非機能要件情報172には、機能モデルソースコード171に記述されている機能に要求される属性(要求属性)である非機能要件が記述される。非機能要件情報172には、例えば、処理性能に関する要件及び回路規模に関する要件が記述される。
ソースコード取得部110は、例えば図9に示す非機能要件情報172を取得する。なお、図9に示す非機能要件情報172の詳細は後述する。
解析部120は、例えば、図10に示す機能モデルベクトル173を生成する。なお、図10に示す機能モデルベクトル173の詳細は後述する。
また、解析部120は、非機能要件情報172を関数などの最小構成単位で分割し、非機能要件ベクトル174を生成する。
解析部120は、例えば、図11に示す非機能要件ベクトル174を生成する。なお、図11に示す非機能要件ベクトル174の詳細は後述する。
また、解析部120は、生成した機能モデルベクトル173と非機能要件ベクトル174を記憶部170に格納する。図2は、解析部120により機能モデルベクトル173と非機能要件ベクトル174が記憶部170に格納されている状態を示す。
抽出ルール175は、機能モデルソースコード171から機能モジュールを抽出するためのルールである。抽出ルール175は、機械学習により得られたルールである。
機能モジュールとは、機能モデルソースコード171を構成する要素の集合である。機能モジュールには、機能モデルソースコード171で実現される複数の機能のうちの少なくとも1つの機能が含まれる。機能は、例えば、機能モデルソースコード171内のforループブロックで実現される動作である。つまり、1つのforループブロックに記述されている内容を1つの機能として捉えることができる。但し、どのような範囲を1つの機能と定義するかはアーキテクチャ生成装置100のユーザに委ねられている。例えば、1つの関数を1つの機能として定義してもよい。
本実施の形態では、機能モジュール抽出部130は、抽出ルール175に基づいて、機能モデルソースコード171の要素をグルーピングすることで機能モジュールを抽出する。
また、機能モジュール抽出部130は、機能モジュールの抽出結果を示す機能モジュール情報176を生成する。
例えば、機能モジュール抽出部130は、図12に示す機能モジュール情報176を生成する。図12に示す機能モジュール情報176の詳細は後述する。
また、機能モジュール抽出部130は、機能モデルベクトル173に基づき、機能モジュール情報176に示される機能モジュール間のデータの入出力関係を解析し、解析結果が示されるデータ入出力関係情報177を生成する。
例えば、機能モジュール抽出部130は、図13に示すデータ入出力関係情報177を生成する。図13に示すデータ入出力関係情報177の詳細は後述する。
より具体的には、ブロック候補抽出部140は、機能モジュール抽出部130により得られた複数の機能モジュールの各々に、ブロックテンプレート178に基づき、各機能モジュールを実現するデバイスとして、プロセッサ及びプロセッサ以外のハードウェアデバイスのうちのいずれかを指定する。なお、ブロック候補抽出部140が各機能モジュールに割り当てるデバイスをブロック候補という。また、ブロック候補抽出部140は、各ブロック候補の性能及び回路規模を見積り、非機能要件情報172の非機能要件に合致しないブロック候補を除外する。つまり、ブロック候補抽出部140は、機能モジュールごとに、各機能モジュールに要求される要求属性を持つプロセッサ又はハードウェアデバイスをブロック候補として指定する。
そして、ブロック候補抽出部140は、機能モジュールごとのブロック候補の抽出結果が示されるブロック候補抽出結果179を生成する。
なお、ブロック候補抽出部140は、後述のアーキテクチャ候補抽出部150とともにアーキテクチャ候補生成部の例である。
また、ブロック候補抽出部140で行われる処理は、アーキテクチャ候補生成処理を構成する。
つまり、アーキテクチャ候補抽出部150は、機能モデルソースコード171に含まれる複数の機能を実現するコンピュータアーキテクチャの候補、すなわち、組込みシステムのアーキテクチャの候補をアーキテクチャ候補として複数生成する。なお、各アーキテクチャ候補では、ブロック候補の組み合わせが異なる。
そして、ブロック候補抽出部140は、抽出したアーキテクチャ候補が示されるアーキテクチャ候補抽出結果180を生成する。
アーキテクチャ候補抽出部150は、ブロック候補抽出部140とともにアーキテクチャ候補生成部の例である。
また、アーキテクチャ候補抽出部150で行われる処理は、アーキテクチャ候補生成処理を構成する。
より具体的には、性能評価部160は、アーキテクチャ候補が非機能要件情報172に示される非機能要件を満たすかどうか判定し、非機能要件を満たすアーキテクチャ候補を選択する。そして、性能評価部160は、選択したアーキテクチャ候補が示されるアーキテクチャ候補選択結果181を生成する。
また、性能評価部160は、非機能要件(要求属性)を満たすアーキテクチャ候補が存在しない場合は、非機能要件を満たさないが、ブロック候補抽出部140が生成した複数のアーキテクチャ候補の中で最も非機能要件に近い属性を持つアーキテクチャ候補を近似アーキテクチャ候補として選択する。
そして、性能評価部160は、選択した近似アーキテクチャ候補の属性と非機能要件(要求属性)との差分をブロック候補抽出部140に通知する。
性能評価部160は、アーキテクチャ候補選択部の例である。
また、性能評価部160で行われる処理は、アーキテクチャ候補選択処理の例である。
既存アーキテクチャ情報182は、抽出ルール175を生成するために使用する。
高位合成装置200は、RTL(Register Transfer Level)よりも抽象度が高いC言語、C++言語、SystemC言語などの高級言語を用いて、自動的にRTLを生成する。
高位合成装置200は、具体的には市販されている高位合成ツールにより実現可能である。
ソフトウェアコンパイラ300は、C言語等で書かれたソースコードからターゲットの組込みシステムのプロセッサで実行可能なバイナリファイルを出力する。
ソフトウェアコンパイラ300は、具体的には市販されているコンパイラにより実現可能である。
次に、図4及び図5を参照して、本実施の形態に係るアーキテクチャ生成装置100の動作例を説明する。
機能モデルソースコード171は、組込みシステムの処理機能/システム構成をプログラム言語(C言語など)で記述したプログラムコードである。
図6、図7及び図8は、機能モデルソースコード171の例を示す。作図上の理由から機能モデルソースコード171は図6、図7及び図8に分割されているが、機能モデルソースコード171は図6、図7及び図8の記述内容から構成される1つのプログラムコードである。
機能モデルソースコード171は、図6、図7及び図8に示すように一般的なプログラムと同一だが、システムの外部入力/出力に対応する変数は/*external_input*/,/*external_output*/と指定されている。
なお、図6、図7及び図8において、DIV0〜DIV7は、それぞれ組込みシステムにおいて実現される機能を表す。以下、機能DIV0−DIV7を区別する必要がない場合は、機能DIV0−DIV7を機能DIVxと総称する。
処理性能制約は、機能モデルソースコード171内の特定の機能の処理から別の特定の機能の処理が制限時間Tth[s]以内に完了するという制約である。図9の例では、機能DIV0からDIV4までの処理が100μs以内に完了するという処理性能制約Tth0と、機能DIV5からDIV7までの処理が50μs以内に完了するという処理性能制約Tth1とが記述されている。
また、回路規模制約は、機能モデルソースコードにより実現される組込みシステムの全体の回路規模がAth[Gate]以内という制約である。図9の例では、組込みシステムの全体の回路規模が10,000KGであるという回路規模制約Ath0が記述されている。
なお、非機能要件情報172には、処理性能制約及び回路規模制約以外の非機能要件が記述されていてもよい。
より具体的には、解析部120は、機能モデルソースコード171を最小分割単位で分割する。本実施の形態では、解析部120は、機能モデルソースコード171を、図6、図7及び図8に示す機能DIV0−DIV7に分割する。
次に、解析部120は、機能モデルソースコード171に含まれる演算子の数、分岐の数、ループの数、変数の数及びデータの入出力数の少なくともいずれかの数値パラメータを機能DIVxごとに解析して、機能モデルベクトル173を生成する。
ここでは、解析部120は、機能モデルソースコード171に含まれる演算子の数、分岐の数、ループの数、中間変数の数及びデータの入出力数を機能DIVxごとに解析して、機能モデルベクトル173を生成することとする。
解析部120は、例えば、以下の手法で、各パラメータを抽出する。
(1)演算子数
解析部120は、機能DIVxに含まれる“+”、“−”、“×”、“−”の個数を求める。なお、機能DIVxにwhile、forなどの繰返し処理がある場合は、解析部120は演算子ごとに繰り返し回数×個数を求める。
(2)分岐数
解析部120は、機能モデルソースコード171に含まれるif/else if/elseの個数を求める。また、解析部120は、機能モデルソースコード171にswitchがある場合はcaseの個数の合計値を求める。
(3)ループ数
解析部120は、機能DIVxの最も外側のforループの回数を求める。
(4)中間変数個数
解析部120は、機能DIVxに含まれる中間変数の個数を求める。また、解析部120は、機能DIVx以外の機能で参照も代入もされていない変数の個数を求める。
(5)組込みシステム外部からの入力数
解析部120は、機能DIVx内で/*external_input*/で指定された変数が参照される回数の合計値を求める。
(6)組込みシステム外部への出力数
解析部120は、機能DIVx内で/*external_output*/で指定された変数に代入される回数の合計値を求める。
(7)他の機能からの入力数
解析部120は、機能DIVx内で参照されている変数の数を求める。なお、機能DIVx内に中間変数以外の変数がある場合は、解析部120は、機能モデルソースコード171で機能DIVxよりも上に記載されている機能において最後に代入されている機能DIVxからの入力数も計上する。
(8)他の機能への出力数
解析部120は、機能DIVx内で参照している変数の数を求める。なお、機能DIVx内に中間変数以外の変数がある場合は、解析部120は、機能モデルソースコード171で機能DIVxよりも下に記載されている機能DIVx+nが機能DIVxを参照している個数も計上する。
図10の機能モデルベクトル173では、機能DIV0−DIV7の各々に対して、演算子(+、―、*、/、=)の数、分岐の数、ループの数、中間変数の数及びデータの入出力数が示される。
なお、入力の欄では、列に入力元の機能が記述され、行に入力先の機能が記述される。また、出力の欄では、列に出力先の機能が記述され、行に出力元の機能が記述される。図10の例では、外部から機能DIV0にデータが渡される。また、機能DIV0から機能DIV1にデータが渡される。また、機能DIV1から機能DIV2及び機能DIV3にデータが渡される。また、機能DIV2から機能DIV4にデータが渡される。また、機能DIV3から機能DIV4及び機能DIV6にデータが渡される。また、機能DIV4から機能DIV5にデータが渡される。また、機能DIV5から機能DIV6にデータが渡される。また、機能DIV6から機能DIV7にデータが渡される。また、機能DIV7から外部にデータが渡される。
なお、本実施の形態では、機能DIVx、すなわち、forループブロックを最小分割単位としたが、最小分割単位はこの限りではなく、最下層の関数、行を最小分割単位とすることもできる。
より具体的には、解析部120は、非機能要件情報172から機能DIVxに対して定義されている制約値を抽出し、抽出した制約値を用いて非機能要件ベクトル174を生成する。
図9に示す非機能要件情報172が与えられた場合は、解析部120は、図11に示すような非機能要件ベクトル174を生成する。例えば処理性能制約Tth0は、機能DIV0―DIV4に対して定義されている非機能要件である。このため、解析部120は、機能DIV0〜DIV4に100μsを設定して非機能要件ベクトル174を生成する。一方、解析部120は、機能DIV5〜DIV7には0を設定する。回路規模制約Athは組込みシステム全体に対する非機能要件であるため、解析部120は、機能DIV0−DIV7のすべてに10,000KGを設定する。また、非機能要件フィードバック情報は性能評価部160にフィードバック入力される情報であるが、初期値は非機能要件情報の値と同一とする。
より具体的には、機能モジュール抽出部130は、機能モデルベクトル173と非機能要件ベクトル174に抽出ルール175を適用して、機能モデルソースコード171に含まれる複数の機能DIVxを複数の機能モジュールにグルーピングする。そして、機能モジュール抽出部130は、グルーピング結果を示す機能モジュール情報176を生成する。
図12に機能モジュール抽出部130によって生成される機能モジュール情報176の例を示す。
図12の例では、機能DIV0、機能DIV1及び機能DIV2は、機能モジュール0に分類されている。機能DIV3は、機能モジュール1に分類されている。機能DIV4及び機能DIV5は、機能モジュール2に分類されている。機能DIV6及び機能DIV7は、機能モジュール3に分類されている。
より具体的には、機能モデルベクトル173に示される機能ごとのデータの入力状況及び出力状況を解析して、機能モジュール情報176に示される機能モジュール間のデータの入出力関係を解析する。
図13の(a)に、データ入出力関係情報の例を示す。また、図13(b)は、図13の(a)のデータ入出力関係情報に示される内容を図式化したものである。
より具体的には、ブロック候補抽出部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に示される機能モジュールごとの入出力関係を解析して、各機能モジュールに対応する全てのブロックをブロック候補として抽出する。
例えば、図13では、機能モジュール0は、外部(AXIスレーブ)からデータが入力されるが、ブロック候補抽出部140は、機能モジュール0に対して、AXIスレーブとのインタフェースを有するデバイスを全てをブロック候補として抽出する。
図14は、機能モジュール0に対してブロック候補抽出部140により抽出されたブロック候補の例を示す。
図14では、ブロック候補0−0、ブロック候補0−1、ブロック候補0−2が抽出されている。
より具体的には、ブロック候補抽出部140は、ステップS140で抽出した複数のブロック候補のうち、処理タイプがH/Wであるブロック候補は、高位合成装置200によって高位合成を行う。ブロック候補抽出部140は、高位合成装置200の高位合成により処理性能や回路規模などのブロック候補の性能を得る。そして、ブロック候補抽出部140は、高位合成により得られた性能が非機能要件情報172の非機能要件を満たすか否かをブロック候補ごとに判定する。ブロック候補抽出部140は、性能が非機能要件を満たすブロック候補を選択し、選択したブロック候補が示されるブロック候補抽出結果179を生成する。
また、ブロック候補抽出部140は、ステップS140で抽出した複数のブロック候補のうち、処理タイプがS/Wであるブロック候補は、ソフトウェアコンパイラ300によって高位合成を行う。ブロック候補抽出部140は、ソフトウェアコンパイラ300の高位合成により、命令実行数とクロック数を得る。そして、ブロック候補抽出部140は、実行命令数×クロック数から処理性能を算出する。ブロック候補抽出部140は、算出した処理性能の非機能要件を満たすか否かをブロック候補ごとに判定する。ブロック候補抽出部140は、性能が非機能要件を満たすブロック候補を選択し、選択したブロック候補が示されるブロック候補抽出結果179を生成する。
より具体的には、アーキテクチャ候補抽出部150は、データ入出力関係情報177に示される入出力関係に従って、ブロック候補抽出結果179に示されるブロック候補を接続する。この際、アーキテクチャ候補抽出部150は、各ブロック候補の通信タイプに矛盾がないようにブロック候補を接続する。アーキテクチャ候補抽出部150は、例えば、通信タイプがバスタイプのブロック候補はバスに接続する。
図15にアーキテクチャ候補の例を示す。
図15の例では、機能モジュール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が選択されている。なお、図15では、作図上の理由から、「ブロック候補」は単に「ブロック」と表記している。
また、図15では、作図上の理由から、アーキテクチャ候補は2つしか図示していないが、アーキテクチャ候補抽出部150は、通信タイプに矛盾が生じないブロック候補の組み合わせの全てに対応するアーキテクチャ候補を抽出する。
このように、アーキテクチャ候補抽出部150は、それぞれのブロック候補の組み合わせが異なる複数のアーキテクチャ候補を抽出する。
より具体的には、性能評価部160は、アーキテクチャ候補抽出結果180の各アーキテクチャ候補においてソフトウェア/ハードウェア協調シミュレーションを実行して、各アーキテクチャ候補の性能(例えば、処理性能及び回路規模)を得る。
そして、アーキテクチャ生成装置100は、処理を終了する。
より具体的には、性能評価部160は、ステップS160で得られた性能と非機能要件情報172の制約値との差の絶対値をアーキテクチャ候補ごとに算出し、算出した絶対値の合計値が最小となるアーキテクチャ候補を近似アーキテクチャ候補として選択する。
ここでは、図9に示すように、非機能要件として処理性能制約Tthと回路規模制約Athが与えられている場合を想定する。また、アーキテクチャ候補抽出結果180に記述されているアーキテクチャ候補がN個(N≧2)あり、アーキテクチャ候補x(xは1からN)の処理性能を処理性能Txとし、アーキテクチャ候補xの回路規模を回路規模Axとする。性能評価部160は、|Tth−Tx|+|Ath−Ax|の値が最小となるアーキテクチャ候補xを近似アーキテクチャ候補として選択する。
つまり、性能評価部160は、ステップS164で選択したアーキテクチャ候補xの前述の|Tth−Tx|と|Ath−Ax|とを機能モジュール抽出部130に通知する。
以降は、新たな機能モジュールに対してステップS131以降の処理が行われる。
なお、以下では、機能モジュール抽出部130が、設計済みの既存アーキテクチャが示される既存アーキテクチャ情報182を用いて機械学習(Deep Learning等)を行って抽出ルール175を生成する手順を示す。
なお、既存アーキテクチャは、例えば設計者が手作業により設計したアーキテクチャである。
ここでは、図19に示すアーキテクチャを既存アーキテクチャとする。
また、既存アーキテクチャが設計されている組込みシステムを既存組込みシステムという。
図19に示すように、既存組込みシステムには、機能DIV0−DIV3が含まれているものとする。
図19の既存アーキテクチャでは、機能DIV0が機能モジュール0に分類されている。また、機能DIV1が機能モジュール1に分類されている。また、機能DIV2と機能DIV3とが機能モジュール2に分類されている。また、機能モジュール0がプロセッサ0により実現され、機能モジュール1が専用ハードウェアで実現され、機能モジュール2がプロセッサ1により実現される。また、プロセッサ0、プロセッサ1、専用ハードウェアはそれぞれバスに接続しており、また、専用ハードウェアとプロセッサ1とは相互に直接接続している。
以下では、機能DIV0−DIV3を区別する必要がない場合は、機能DIV0−DIV3を機能DIVxと総称する。
なお、ステップS111における取得手順は図4のステップS110で説明したものと同じであるため、ステップS111における取得手順についての説明は省略する。
既存アーキテクチャ情報182には、図19に示すように、以下の情報が含まれる。
(1)既存組込みシステムの機能モデルソースコード171に含まれる機能のグルーピング結果を示す情報(機能モジュール情報176に相当する情報)
(2)既存アーキテクチャにおけるブロック構成とブロック間の接続に関する情報(アーキテクチャ候補抽出結果180に相当する情報)
なお、ステップS122における機能モデルベクトル173の生成手順は、図4のステップS120で説明したものと同じであるため、説明を省略する。
図17は、ステップS122で生成される機能モデルベクトル173の例を示す。
なお、ステップS123における非機能要件ベクトル174の生成手順は、図4のステップS121で説明したものと同じであるが、非機能要件フィードバック情報は機械学習では使用しないため、解析部120は、非機能要件フィードバック情報の値は全て0とする。
図18は、ステップS123で生成される非機能要件ベクトル174の例を示す。
そして、グルーピング結果が等しい場合(ステップS133でYES)は、機能モジュール抽出部130は処理を終了する。
例えば、ステップS132において図20に示す得られたグルーピング結果が得られている場合は、図19に示すグルーピング結果と等しいため、機能モジュール抽出部130は処理を終了する。
そして、機能モジュール抽出部130は、一般的な教師つき学習のアルゴリズムまたは回帰分析のアルゴリズムに基づき、計算した誤差を用いて、抽出ルール175を更新する。
図17に示す機能モデルベクトル173からは、機能DIV1と機能DIV2はともに機能DIV0からデータが入力されるため、機能DIV1と機能DIV2が並列に実行可能である。また、演算子の数の差から機能DIV1と機能とDIV2では機能DIV1の方が処理量が多いことが予測される。このため、機能DIV1に単一のデバイスを割当て、機能DIV2と機能DIV3とがデバイスを共有することで、回路規模を小さくすることができる。
機能モジュール抽出部130は、このように、機能モデルベクトル173に記述されるパラメータから読み取れる関係性を解析する。そして、機能モジュール抽出部130は、解析結果から、抽出ルール175により得られるグルーピング結果と正解のグルーピング結果との誤差が小さくなるように機械学習パラメータを制御する。このようにすることで、機能モジュール抽出部130は、設計者が手作業により生成するアーキテクチャと同じアーキテクチャを獲得可能な抽出ルール175を生成することができる。
以上、本実施の形態では、プロセッサとハードウェアデバイスとの組合せを含む複数のアーキテクチャ候補を生成するため、多様なアーキテクチャ候補の中から設計対象の組込みシステムに最適なコンピュータアーキテクチャを選択することができる。
また、本実施の形態によれば、設計者が組み込みシステム全体の処理機能を記述した仕様を基に非機能要件を満たすプラットフォームの検討を行わずとも、アーキテクチャ生成装置100に組込みシステム全体の処理機能を記述した仕様と非機能要件を入力することで、非機能要件を満たす組込みシステムのアーキテクチャを選択することができる。
例えば、アーキテクチャ生成装置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)である。
そして、OSの少なくとも一部がメモリ903にロードされ、プロセッサ901により実行される。
プロセッサ901はOSの少なくとも一部を実行しながら、ソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160及び既存アーキテクチャ情報取得部190の機能を実現するプログラムを実行する。
プロセッサ901がOSを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、ソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160及び既存アーキテクチャ情報取得部190の処理の結果を示す情報やデータや信号値や変数値が、補助記憶装置902、メモリ903、プロセッサ901内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、ソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160及び既存アーキテクチャ情報取得部190の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記憶媒体に記憶されてもよい。
また、アーキテクチャ生成装置100は、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC、FPGAといった電子回路により実現されてもよい。
この場合は、ソースコード取得部110、解析部120、機能モジュール抽出部130、ブロック候補抽出部140、アーキテクチャ候補抽出部150、性能評価部160及び既存アーキテクチャ情報取得部190は、それぞれ電子回路の一部として実現される。
なお、プロセッサ及び上記の電子回路を総称してプロセッシングサーキットリーともいう。
Claims (5)
- プログラムコードから抽出された複数の機能モジュールの各々に、各機能モジュールを実現するデバイスとして、プロセッサ及び前記プロセッサ以外のハードウェアデバイスのうちのいずれかを指定し、前記複数の機能モジュールを実現するデバイスの組み合わせが異なるコンピュータアーキテクチャの候補をアーキテクチャ候補として複数生成するアーキテクチャ候補生成部と、
前記アーキテクチャ候補生成部により生成された複数のアーキテクチャ候補の中に、前記コンピュータアーキテクチャに要求される要求属性を持つアーキテクチャ候補が存在しない場合に、前記要求属性を満たさないが、前記複数のアーキテクチャ候補の中で最も要求属性に近い属性を持つアーキテクチャ候補を近似アーキテクチャ候補として選択するアーキテクチャ候補選択部と、
既定の抽出ルールを用いて前記プログラムコードから前記複数の機能モジュールを抽出する機能モジュール抽出部とを有し、
前記アーキテクチャ候補選択部は、
前記近似アーキテクチャ候補の属性と前記要求属性との差分を前記機能モジュール抽出部に通知し、
前記機能モジュール抽出部は、
前記アーキテクチャ候補選択部から通知された前記差分に基づき、前記抽出ルールを変更し、変更後の抽出ルールを用いて前記プログラムコードから新たな複数の機能モジュールを抽出する情報処理装置。 - 前記アーキテクチャ候補生成部は、
機能モジュールごとに、各機能モジュールに要求される要求属性を持つプロセッサ又はハードウェアデバイスを指定する請求項1に記載の情報処理装置。 - 前記情報処理装置は、更に、
前記プログラムコードに含まれる演算子の数、分岐の数、ループの数、変数の数及びデータの入出力数の少なくともいずれかを処理ごとに解析する解析部を有し、
前記機能モジュール抽出部は、
前記解析部による処理ごとの解析結果に前記抽出ルールを適用して、前記複数の機能モジュールを抽出する請求項1に記載の情報処理装置。 - コンピュータが、プログラムコードから抽出された複数の機能モジュールの各々に、各機能モジュールを実現するデバイスとして、プロセッサ及び前記プロセッサ以外のハードウェアデバイスのうちのいずれかを指定し、前記複数の機能モジュールを実現するデバイスの組み合わせが異なるコンピュータアーキテクチャの候補をアーキテクチャ候補として複数生成し、
前記コンピュータが、生成された複数のアーキテクチャ候補の中に、前記コンピュータアーキテクチャに要求される要求属性を持つアーキテクチャ候補が存在しない場合に、前記要求属性を満たさないが、前記複数のアーキテクチャ候補の中で最も要求属性に近い属性を持つアーキテクチャ候補を近似アーキテクチャ候補として選択し、
前記コンピュータが、前記近似アーキテクチャ候補の属性と前記要求属性との差分に基づき、既定の抽出ルール変更し、変更後の抽出ルールを用いて前記プログラムコードから新たな複数の機能モジュールを抽出する情報処理方法。 - プログラムコードから抽出された複数の機能モジュールの各々に、各機能モジュールを実現するデバイスとして、プロセッサ及び前記プロセッサ以外のハードウェアデバイスのうちのいずれかを指定し、前記複数の機能モジュールを実現するデバイスの組み合わせが異なるコンピュータアーキテクチャの候補をアーキテクチャ候補として複数生成する処理と、
生成された複数のアーキテクチャ候補の中に、前記コンピュータアーキテクチャに要求される要求属性を持つアーキテクチャ候補が存在しない場合に、前記要求属性を満たさないが、前記複数のアーキテクチャ候補の中で最も要求属性に近い属性を持つアーキテクチャ候補を近似アーキテクチャ候補として選択する処理と、
前記近似アーキテクチャ候補の属性と前記要求属性との差分に基づき、既定の抽出ルール変更し、変更後の抽出ルールを用いて前記プログラムコードから新たな複数の機能モジュールを抽出する処理とをコンピュータに実行させる情報処理プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2016/079512 WO2018066073A1 (ja) | 2016-10-04 | 2016-10-04 | 情報処理装置、情報処理方法及び情報処理プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6173644B1 true JP6173644B1 (ja) | 2017-08-02 |
JPWO2018066073A1 JPWO2018066073A1 (ja) | 2018-10-04 |
Family
ID=59505137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017510421A Expired - Fee Related JP6173644B1 (ja) | 2016-10-04 | 2016-10-04 | 情報処理装置、情報処理方法及び情報処理プログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP6173644B1 (ja) |
WO (1) | WO2018066073A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021100122A1 (ja) * | 2019-11-19 | 2021-05-27 | 三菱電機株式会社 | 設計支援システムおよび設計支援プログラム |
JP7528846B2 (ja) | 2021-04-06 | 2024-08-06 | 三菱電機株式会社 | アーキテクチャ設計支援装置およびアーキテクチャ設計支援システム |
WO2023218661A1 (ja) * | 2022-05-13 | 2023-11-16 | 日本電気株式会社 | システム設計学習装置、システム設計学習方法、及びコンピュータ読み取り可能な記録媒体 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006092561A (ja) * | 2005-10-03 | 2006-04-06 | Matsushita Electric Ind Co Ltd | インターフェースの設計方法 |
-
2016
- 2016-10-04 JP JP2017510421A patent/JP6173644B1/ja not_active Expired - Fee Related
- 2016-10-04 WO PCT/JP2016/079512 patent/WO2018066073A1/ja active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006092561A (ja) * | 2005-10-03 | 2006-04-06 | Matsushita Electric Ind Co Ltd | インターフェースの設計方法 |
Non-Patent Citations (4)
Title |
---|
上田恭子、外4名: "IPベース設計におけるバスアーキテクチャ最適化手法の提案", 情報処理学会研究報告, vol. 2004, no. 102, JPN6017012409, 22 October 2004 (2004-10-22), pages 147 - 152, ISSN: 0003535307 * |
城代佳範、外3名: "VHDLで記述されたシステム仕様のプロセスレベルでのHW/SW分割の一手法", 電子情報通信学会技術研究報告, vol. 98, no. 449, JPN6016047315, 11 December 1998 (1998-12-11), pages 63 - 70, ISSN: 0003535306 * |
小島洋平、外4名: "設計ナビゲーション機構を有するシステムLSI設計のためのHW/SW分割システム", 電子情報通信学会技術研究報告, vol. 105, no. 644, JPN6016047314, 2 March 2006 (2006-03-02), pages 19 - 24, ISSN: 0003535305 * |
米岡昇、外4名: "データ流量解析に基づくアーキテクチャレベルでの設計品質見積もり手法", 電子情報通信学会技術研究報告, vol. 105, no. 58, JPN6017012410, 13 May 2005 (2005-05-13), pages 19 - 24, ISSN: 0003535308 * |
Also Published As
Publication number | Publication date |
---|---|
JPWO2018066073A1 (ja) | 2018-10-04 |
WO2018066073A1 (ja) | 2018-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6227195B1 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
WO2019216404A1 (ja) | ニューラルネットワーク構築装置、情報処理装置、ニューラルネットワーク構築方法及びプログラム | |
US10372859B2 (en) | System and method for designing system on chip (SoC) circuits using single instruction multiple agent (SIMA) instructions | |
Rushton | VHDL for logic synthesis | |
US9471470B2 (en) | Automatically recommending test suite from historical data based on randomized evolutionary techniques | |
US8302041B1 (en) | Implementation flow for electronic circuit designs using choice networks | |
US20070168902A1 (en) | Method for high-level synthesis of semiconductor integrated circuit | |
JP6173644B1 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
US9129075B2 (en) | Mesh generation system | |
US9824172B1 (en) | Performance of circuitry generated using high-level synthesis | |
US9710584B1 (en) | Performance of circuitry generated using high-level synthesis | |
CN110020456B (zh) | 利用基于图的相似性搜索逐步生成fpga实现的方法 | |
JP2011253253A (ja) | コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム | |
CN117744548A (zh) | 一种芯片验证方法、装置和存储介质 | |
US10878150B1 (en) | Loop optimization in a circuit design netlist | |
Van Eijk | Formal methods for the verification of digital circuits | |
Conrady et al. | LCS-based automatic configuration of approximate computing parameters for fpga system designs | |
Santos et al. | Automatic selection and insertion of hls directives via a source-to-source compiler | |
US20150082278A1 (en) | Clone detection method and clone function commonalizing method | |
TWI841724B (zh) | 執行模擬基礎物理設計規則以最佳化電路佈局 | |
KR20190059701A (ko) | Devs 기반 시뮬레이션 모델 및 코드 생성 방법 및 장치 | |
JP7234566B2 (ja) | 運転計画方法、運転計画装置およびプログラム | |
JP5328447B2 (ja) | 高位合成装置および高位合成方法、半導体集積回路の製造方法、制御プログラム、可読記憶媒体 | |
Reyes Fernández de Bulnes et al. | High-level synthesis through metaheuristics and LUTs optimization in FPGA devices | |
US20200004503A1 (en) | Information processing device, information processing method, and computer readable medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170523 |
|
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: 20170606 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170704 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6173644 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |