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