(57)【要約】【課題】機能安全処理を簡便に組み込むことができるコード生成装置を提供する。【解決手段】機能安全処理に関するコード生成を指示する生成指示情報を認識する認識部（５０１）と、生成指示情報に応じて機能安全処理を実行する命令コードを生成する生成部（５０２）と、を設ける。【選択図】図４
2019179408.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理ノードで構成されるグラフ構造のプログラムにおけるコード生成方法であって、
機能安全処理に関するコード生成を指示する生成指示情報を認識する認識ステップと、
前記生成指示情報に応じて機能安全処理を実行する命令コードを生成する生成ステップと、を備える、コード生成方法。
【請求項２】
複数の処理ノードで構成されるグラフ構造のプログラムにおけるコード生成装置であって、
機能安全処理に関するコード生成を指示する生成指示情報を認識する認識部（５０１）と、
前記生成指示情報に応じて機能安全処理を実行する命令コードを生成する生成部（５０２）と、を備える、コード生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、複数の処理ノードで構成されるグラフ構造のプログラムにおけるコード生成方法及びコード生成装置に関する。
【背景技術】
【０００２】
プログラムの機能安全を評価する手法として、下記特許文献１に記載のものが提案されている。下記特許文献１では、評価システムであって、安全プログラムを取得する取得手段と、安全プログラムに含まれる命令のうち、対象機器を安全が保たれるように動作させるための演算処理に向けられた命令を抽出する命令抽出手段と、安全プログラムから抽出された命令に関連付けられている入力信号および出力信号を抽出する信号抽出手段と、抽出された入力信号と出力信号とを対応付けて表示するとともに、表示された出力信号について、対象機器を安全が保たれるように動作させるための値である出力期待値の設定を受付ける設定手段と、抽出された入力信号の値を変化させるとともに、当該入力信号の値の変化に応じて、安全プログラムに従う演算により算出される出力信号の値が、設定された出力期待値と一致するか否かを判断する評価手段とを含む。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−１６７６５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記従来技術のような機能安全評価手法は、プログラマーが機能安全処理を取り込んだプログラムを構築し、指示コードを生成する必要がある。複数の処理ノードで構成されるグラフ構造のプログラムにおいてこの手法を適用しようとすると、膨大な負荷がかかるおそれがある。
【０００５】
本開示は、複数の処理ノードで構成されるグラフ構造のプログラムにおけるコード生成方法及びコード生成装置であって、機能安全処理を簡便に組み込むことができるコード生成方法及びコード生成装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本開示は、複数の処理ノードで構成されるグラフ構造のプログラムにおけるコード生成方法であって、機能安全処理に関するコード生成を指示する生成指示情報を認識する認識ステップと、生成指示情報に応じて機能安全処理を実行する命令を生成する生成ステップと、を備える。
【０００７】
本開示は、複数の処理ノードで構成されるグラフ構造のプログラムにおけるコード生成装置であって、機能安全処理に関するコード生成を指示する生成指示情報を認識する認識部（５０１）と、生成指示情報に応じて機能安全処理を実行する命令を生成する生成部（５０２）と、を備える。
【０００８】
本開示によれば、機能安全処理に関するコード生成を指示する生成指示情報を認識し、認識した生成指示情報に応じて機能安全処理を実行する命令を生成するので、機能安全処理を簡便に組み込むことができる。
【０００９】
尚、「課題を解決するための手段」及び「特許請求の範囲」に記載した括弧内の符号は、後述する「発明を実施するための形態」との対応関係を示すものであって、「課題を解決するための手段」及び「特許請求の範囲」が、後述する「発明を実施するための形態」に限定されることを示すものではない。
【発明の効果】
【００１０】
本開示によれば、機能安全処理を簡便に組み込むことができるコード生成方法及びコード生成装置を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本実施形態の前提となる並列処理について説明するための図である。
【図２】図２は、図１に示される並列処理を実行するためのシステム構成例を示す図である。
【図３】図３は、図２に用いられるＤＦＰの構成例を示す図である。
【図４】図４は、コンパイラの機能的な構成例を説明するための図である。
【図５】図５は、コンパイラの処理を説明するための図である。
【図６】図６は、コンパイラの処理を説明するための図である。
【図７】図７は、生成されたＡＳＩＬ実行コードを実行する態様を説明するための図である。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照しながら本実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
【００１３】
図１（Ａ）は、グラフ構造のプログラムコードを示しており、図１（Ｂ）は、スレッドの状態を示しており、図１（Ｃ）は、並列処理の状況を示している。
【００１４】
図１（Ａ）に示されるように、本実施形態が処理対象とするプログラムは、データと処理とが分割されているグラフ構造を有している。このグラフ構造は、プログラムのタスク並列性、グラフ並列性を保持している。
【００１５】
図１（Ａ）に示されるプログラムコードに対して、コンパイラによる自動ベクトル化とグラフ構造の抽出を行うと、図１（Ｂ）に示されるような大量のスレッドを生成することができる。
【００１６】
図１（Ｂ）に示される多量のスレッドに対して、ハードウェアによる動的レジスタ配置とスレッド・スケジューリングにより、図１（Ｃ）に示されるような並列実行を行うことができる。実行中にレジスタ資源を動的配置することで、異なる命令ストリームに対しても複数のスレッドを並列実行することができる。
【００１７】
続いて図２を参照しながら、動的レジスタ配置及びスレッド・スケジューリングを行うアクセラレータとしてのＤＦＰ（Ｄａｔａ  Ｆｌｏｗ  Ｐｒｏｃｅｓｓｏｒ）１０を含むシステム構成例である、データ処理システム２を説明する。
【００１８】
データ処理システム２は、ＤＦＰ１０と、イベントハンドラ２０と、ホストＣＰＵ２１と、ＲＯＭ２２と、ＲＡＭ２３と、外部インターフェイス２４と、システムバス２５と、を備えている。ホストＣＰＵ２１は、データ処理を主として行う演算装置である。ホストＣＰＵ２１は、ＯＳをサポートしている。イベントハンドラ２０は、割り込み処理を生成する部分である。
【００１９】
ＲＯＭ２２は、読込専用のメモリである。ＲＡＭ２３は、読み書き用のメモリである。外部インターフェイス２４は、データ処理システム２外と情報授受を行うためのインターフェイスである。システムバス２５は、ＤＦＰ１０と、ホストＣＰＵ２１と、ＲＯＭ２２と、ＲＡＭ２３と、外部インターフェイス２４との間で情報の送受信を行うためのものである。
【００２０】
ＤＦＰ１０は、ホストＣＰＵ２１の重い演算負荷に対処するために設けられている個別のマスタとして位置づけられている。ＤＦＰ１０は、イベントハンドラ２０が生成した割り込みをサポートするように構成されている。
【００２１】
続いて図３を参照しながら、ＤＦＰ１０について説明する。図３に示されるように、ＤＦＰ１０は、コマンドユニット１２と、スレッドスケジューラ１４と、実行コア１６と、メモリサブシステム１８と、を備えている。
【００２２】
コマンドユニット１２は、コンフィグ・インターフェイスとの間で情報通信可能なように構成されている。コマンドユニット１２は、コマンドバッファとしても機能している。
【００２３】
スレッドスケジューラ１４は、図１（Ｂ）に例示されるような多量のスレッドの処理をスケジューリングする部分である。スレッドスケジューラ１４は、スレッドを跨いだスケジューリングを行うことが可能である。
【００２４】
実行コア１６は、４つのプロセッシングエレメントである、ＰＥ＃０と、ＰＥ＃１と、ＰＥ＃２と、ＰＥ＃３と、を有している。実行コア１６は、独立してスケジューリング可能な多数のパイプラインを有している。
【００２５】
メモリサブシステム１８は、アービタ１８１と、Ｌ１キャッシュ１８ａと、Ｌ２キャッシュ１８ｂと、を有している。メモリサブシステム１８は、システム・バス・インターフェイス及びＲＯＭインターフェイスとの間で情報通信可能なように構成されている。
【００２６】
続いて、図４を参照しながら、コンパイラ５０について説明する。コンパイラ５０は、機能的な構成要素として、ＡＳＩＬ（Ａｕｔｏｍｏｔｉｖｅ  Ｓａｆｅｔｙ  Ｉｎｔｅｇｒｉｔｙ  Ｌｅｂｅｌ）認識部５０１と、ＡＳＩｌ指示コード生成部５０２と、を備える。ＡＳＩＬ認識部５０１は、本開示の認識部に相当する。ＡＳＩＬ指示コード生成部５０２は、本開示の生成部に相当する。
【００２７】
ＡＳＩＬ認識部５０１は、機能安全処理に関するコード生成を指示する生成指示情報を認識する認識ステップを実行する部分である。ＡＳＩＬ指示コード生成部５０２は、生成指示情報に応じて機能安全処理を実行する命令コードを生成する生成ステップを実行する部分である。
【００２８】
図５及び図６を参照しながら、ＡＳＩＬ認識部５０１及びＡＳＩｌ指示コード生成部５０２の処理について説明する。図５は、生成指示情報を含まない場合のコード生成態様を示すものである。図５（Ａ）のようなプログラムがコンパイラ５０に入力されると、コンパイラ５０は、図５（Ｂ）のようなオブジェクトコードを生成する。図５（Ｃ）に示されるように、オブジェクトコードはオブジェクトコード実行エンジン（図３の実行コア１６）によって実行される。
【００２９】
図６は、生成指示情報を含む場合のコード生成態様を示すものである。図６（Ａ）に示されるように、生成指示情報として「＃ｐｒａｇｍａ  ＡＳＩＬ−Ｄ」を含むプログラムがコンパイラに入力される。ＡＳＩＬ認識部５０１によって生成指示情報としての「＃ｐｒａｇｍａ  ＡＳＩＬ−Ｄ」が認識される。図６（Ｂ）に示されるように、ＡＳＩｌ指示コード生成部５０２によって、オブジェクトコード及び指示コードが生成される。指示コードは、機能安全処理を実行する命令コードに相当する。
【００３０】
図６（Ｃ）に示されるように、オブジェクトコードはオブジェクトコード実行エンジン（図３の実行コア１６に含まれる演算器）によって実行され、指示コードはＡＳＩＬ実行エンジン（図３の実行コア１６に含まれる演算器）によって実行される。
【００３１】
図７を参照しながら、オブジェクトコード実行エンジン及びＡＳＩＬ実行エンジンについて説明する。
【００３２】
図７に示されるように、実行コア１６は、複数の演算器を含んでいる。具体的には、実行コア１６は、スレッド・アービタ５１、演算器Ａ５２１、演算器ａ５２２、演算器Ｂ５２３、演算器ｂ５２４、演算器Ｃ５２５、演算器ｃ５２６、結果レジスタＡ５３１、結果レジスタａ５３２、結果レジスタＢ５３３、結果レジスタｂ５３４、結果レジスタＣ５３５、結果レジスタｃ５３６、及び比較器５４を有している。
【００３３】
スレッド・アービタ５１は、演算器Ａ５２１、演算器ａ５２２、演算器Ｂ５２３、演算器ｂ５２４、演算器Ｃ５２５、演算器ｃ５２６に処理を割り当てる部分である。
【００３４】
演算器Ａ５２１、演算器ａ５２２、演算器Ｂ５２３、演算器ｂ５２４、演算器Ｃ５２５、演算器ｃ５２６は、割り当てられた処理を実行する部分である。演算器Ａ５２１と演算器ａ５２２とは、対応する演算器である。演算器Ａ５２１は、オブジェクトコード実行エンジンして機能する。演算器ａ５２２は、ＡＳＩＬ実行エンジンとして機能する。演算器Ａ５２１に対して演算器ａ５２２は、コンパクトな構成となっている。演算器Ｂ５２３と演算器ｂ５２４及び演算器Ｃ５２５と演算器ｃ５２６は、演算器Ａ５２１と演算器ａ５２２との関係と同様の関係となるように構成されている。
【００３５】
結果レジスタＡ５３１は、演算器Ａ５２１の演算結果を格納する部分である。結果レジスタａ５３２は、演算器ａ５２２の演算結果を格納する部分である。結果レジスタＢ５３３は、演算器Ｂ５２３の演算結果を格納する部分である。結果レジスタｂ５３４は、演算器ｂ５２４の演算結果を格納する部分である。結果レジスタＣ５３５は、演算器Ｃ５２５の演算結果を格納する部分である。結果レジスタｃ５３６は、演算器ｃ５２６の演算結果を格納する部分である。
【００３６】
比較器５４は、結果レジスタＡ５３１、結果レジスタａ５３２、結果レジスタＢ５３３、結果レジスタｂ５３４、結果レジスタＣ５３５、及び結果レジスタｃ５３６から出力される演算結果を比較して判断する部分である。
【００３７】
上記したように本実施形態では、複数の処理ノードで構成されるグラフ構造のプログラムにおけるコード生成装置を実現するためのコンパイラ５０であって、機能安全処理に関するコード生成を指示する生成指示情報を認識するＡＳＩＬ認識部（（５０１）と、生成指示情報に応じて機能安全処理を実行する命令を生成するＡＳＩｌ指示コード生成部（５０２）と、を備える。
【００３８】
本実施形態を方法として捉えれば、複数の処理ノードで構成されるグラフ構造のプログラムにおけるコード生成方法であって、機能安全処理に関するコード生成を指示する生成指示情報を認識する認識ステップと、生成指示情報に応じて機能安全処理を実行する命令を生成する生成ステップと、を備える。
【００３９】
本実施形態によれば、機能安全処理に関するコード生成を指示する生成指示情報を認識し、認識した生成指示情報に応じて機能安全処理を実行する命令を生成するので、機能安全処理を簡便に組み込むことができる。
【００４０】
以上、具体例を参照しつつ本実施形態について説明した。しかし、本開示はこれらの具体例に限定されるものではない。これら具体例に、当業者が適宜設計変更を加えたものも、本開示の特徴を備えている限り、本開示の範囲に包含される。前述した各具体例が備える各要素およびその配置、条件、形状などは、例示したものに限定されるわけではなく適宜変更することができる。前述した各具体例が備える各要素は、技術的な矛盾が生じない限り、適宜組み合わせを変えることができる。
【符号の説明】
【００４１】
５０１：ＡＳＩＬ認識部（認識部）
５０２：ＡＳＩｌ指示コード生成部（生成部）
【図１】
2019179408.tif 000003
【図２】
2019179408.tif 000004
【図３】
2019179408.tif 000005
【図４】
2019179408.tif 000006
【図５】
2019179408.tif 000007
【図６】
2019179408.tif 000008
【図７】
2019179408.tif 000009