(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-02
(45)【発行日】2023-03-10
(54)【発明の名称】情報処理装置
(51)【国際特許分類】
G06F 11/22 20060101AFI20230303BHJP
G06F 15/167 20060101ALI20230303BHJP
【FI】
G06F11/22 675L
G06F15/167 610Z
G06F11/22 636
(21)【出願番号】P 2018068431
(22)【出願日】2018-03-30
【審査請求日】2021-02-15
(73)【特許権者】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(73)【特許権者】
【識別番号】519084397
【氏名又は名称】株式会社エヌエスアイテクス
(74)【代理人】
【識別番号】100140486
【氏名又は名称】鎌田 徹
(74)【代理人】
【識別番号】100170058
【氏名又は名称】津田 拓真
(72)【発明者】
【氏名】大久保 直昭
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開2002-229792(JP,A)
【文献】特開2015-206785(JP,A)
【文献】特開2007-317171(JP,A)
【文献】特開2008-009696(JP,A)
【文献】特開2006-048402(JP,A)
【文献】特開平07-248937(JP,A)
【文献】特開2016-170567(JP,A)
【文献】特開2008-135018(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/22-11/277
G06F 15/167
G06F 9/48
(57)【特許請求の範囲】
【請求項1】
情報処理装置であって、
グラフ構造のプログラムをスレッド単位で実行でき、前記スレッド内の複数種類の命令を処理する複数の処理実行ハードウェア(16)と、
前記命令を複数の前記処理
実行ハードウェアのいずれで実行するのかを割り当てるハードウェアとして構成されるスレッドスケジューラ(14)と、
前記処理実行ハードウェアで実行した診断プログラムの実行結果および期待値を保持するレジスタと、前記実行結果レジスタと前記期待値レジスタの値を比較する比較器と、を備える情報処理装置。
【請求項2】
請求項1に記載の情報処理装置であって、
前記処理実行ハードウェアは、実行コアを構成する演算器である、情報処理装置。
【請求項3】
請求項1又は2に記載の情報処理装置であって、
前記スレッドスケジューラは、
予め格納されている診断用コードを読み込むコード読込部(141)と、
前記診断用コードを複数の前記処理実行ハードウェアに実行させる割当部(142)と、を備える情報処理装置。
【請求項4】
請求項3に記載の情報処理装置であって、
前記コード読込部は、予め格納されている前記診断用コードを実行した結果の期待値も読み込む、情報処理装置。
【請求項5】
請求項3又は4に記載の情報処理装置であって、
前記割当部は、前記複数の処理実行ハードウェアそれぞれにおいて、前記診断用コードが異なるタイミングで実行されるように割り当てる、情報処理装置。
【請求項6】
請求項3から5のいずれか1項に記載の情報処理装置であって、
前記割当部は、前記診断用コードの実行結果が故障を示すものである場合、他の同種の処理実行ハードウェアにて前記診断用コードを再実行させる、情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、グラフ構造のプログラムを処理する複数の処理実行ハードウェアに処理を割り当てるスレッドスケジューラを含む情報処理装置に関する。
【背景技術】
【0002】
複数の処理実行ハードウェアであるプロセッサエレメントの機能安全を担保するための発明として、下記特許文献1に記載のものが開示されている。下記特許文献1では、複数個のプロセッサエレメントに同じデータ処理を実行させてプロセッサエレメントの機能安全を実現する場合に、複数のプロセッサエレメントから発行されたアクセス要求の不一致が確定することをもって安全対策の処理を行い、一致することをもって当該アクセス要求に応答するアクセス処理を開始する制御を行うバスインタフェースユニットを採用している。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
機能安全の要件としては、処理を異なるハードウェアリソースで重複実行し、結果を比較してハードウェア故障の有無を確認するものとしている。重複実行は、実行タイミングや実行ハードウェアリソースを変えることが、故障検出の要件となっている。従来は、同じ構成を有する複数の処理実行ハードウェアに対して、同一のソフトウェアを実行して故障の検出を行っている。
【0005】
しかしながら、従来の故障検出は、処理実行ハードウェアの二重化が前提であるため、処理実行ハードウェアをコンパクトに構成するのには限界があった。
【0006】
本開示は、処理実行ハードウェアの故障検出をハードウェアの二重化によらずに実現することを目的とする。
【課題を解決するための手段】
【0007】
本開示は、グラフ構造のプログラムを処理する複数の処理実行ハードウェアに処理を割り当てるスレッドスケジューラを含む情報処理装置であって、予め格納されている診断用コードを読み込むコード読込部(141)と、平均故障時間内に診断が完了するように診断用コードを複数の処理実行ハードウェアに実行させる割当部(142)と、を備える。
【0008】
平均故障時間内に診断が完了するように診断用コードを複数の処理実行ハードウェアに実行させるので、故障診断用にハードウェアを二重化することなく、処理用に既に設けられている処理実行ハードウェアを活用した故障診断が可能となる。
【0009】
尚、「課題を解決するための手段」及び「特許請求の範囲」に記載した括弧内の符号は、後述する「発明を実施するための形態」との対応関係を示すものであって、「課題を解決するための手段」及び「特許請求の範囲」が、後述する「発明を実施するための形態」に限定されることを示すものではない。
【発明の効果】
【0010】
本開示によれば、処理実行ハードウェアの故障検出をハードウェアの二重化によらずに実現することができる。
【図面の簡単な説明】
【0011】
【
図1】
図1は、本実施形態の前提となる並列処理について説明するための図である。
【
図2】
図2は、
図1に示される並列処理を実行するためのシステム構成例を示す図である。
【
図3】
図3は、
図2に用いられるDFPの構成例を示す図である。
【
図4】
図4は、本実施形態において診断用コードを実行する一態様を説明するための図である。
【
図5】
図5は、本実施形態において診断用コードを実行する一態様を説明するための図である。
【
図6】
図6は、本実施形態において診断用コードを実行する一態様を説明するための図である。
【
図7】
図7は、本実施形態において診断用コードを実行する一態様を説明するための図である。
【
図8】
図8は、本実施形態において診断用コードを実行する一態様を説明するための図である。
【発明を実施するための形態】
【0012】
以下、添付図面を参照しながら本実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
【0013】
図1(A)は、グラフ構造のプログラムコードを示しており、
図1(B)は、スレッドの状態を示しており、
図1(C)は、並列処理の状況を示している。
【0014】
図1(A)に示されるように、本実施形態が処理対象とするプログラムは、データと処理とが分割されているグラフ構造を有している。このグラフ構造は、プログラムのタスク並列性、グラフ並列性を保持している。
【0015】
図1(A)に示されるプログラムコードに対して、コンパイラによる自動ベクトル化とグラフ構造の抽出を行うと、
図1(B)に示されるような大量のスレッドを生成することができる。
【0016】
図1(B)に示される多量のスレッドに対して、ハードウェアによる動的レジスタ配置とスレッド・スケジューリングにより、
図1(C)に示されるような並列実行を行うことができる。実行中にレジスタ資源を動的配置することで、異なる命令ストリームに対しても複数のスレッドを並列実行することができる。
【0017】
続いて
図2を参照しながら、動的レジスタ配置及びスレッド・スケジューリングを行うアクセラレータとしてのDFP(Data Flow Processor)10を含むシステム構成例である、データ処理システム2を説明する。
【0018】
データ処理システム2は、DFP10と、イベントハンドラ20と、ホストCPU21と、ROM22と、RAM23と、外部インターフェイス24と、システムバス25と、を備えている。ホストCPU21は、データ処理を主として行う演算装置である。ホストCPU21は、OSをサポートしている。イベントハンドラ20は、割り込み処理を生成する部分である。
【0019】
ROM22は、読込専用のメモリである。RAM23は、読み書き用のメモリである。外部インターフェイス24は、データ処理システム2外と情報授受を行うためのインターフェイスである。システムバス25は、DFP10と、ホストCPU21と、ROM22と、RAM23と、外部インターフェイス24との間で情報の送受信を行うためのものである。
【0020】
DFP10は、ホストCPU21の重い演算負荷に対処するために設けられている個別のマスタとして位置づけられている。DFP10は、イベントハンドラ20が生成した割り込みをサポートするように構成されている。
【0021】
続いて
図3を参照しながら、DFP10について説明する。
図3に示されるように、DFP10は、コマンドユニット12と、スレッドスケジューラ14と、実行コア16と、メモリサブシステム18と、を備えている。
【0022】
コマンドユニット12は、コンフィグ・インターフェイスとの間で情報通信可能なように構成されている。コマンドユニット12は、コマンドバッファとしても機能している。
【0023】
スレッドスケジューラ14は、
図1(B)に例示されるような多量のスレッドの処理をスケジューリングする部分である。スレッドスケジューラ14は、スレッドを跨いだスケジューリングを行うことが可能である。
【0024】
実行コア16は、4つのプロセッシングエレメントである、PE#0と、PE#1と、PE#2と、PE#3と、を有している。実行コア16は、独立してスケジューリング可能な多数のパイプラインを有している。
【0025】
メモリサブシステム18は、アービタ181と、L1キャッシュ18aと、L2キャッシュ18bと、を有している。メモリサブシステム18は、システム・バス・インターフェイス及びROMインターフェイスとの間で情報通信可能なように構成されている。
【0026】
続いて、
図4及び
図5を参照しながら、本実施形態における診断用コードの実行について説明する。
図4に示される例では、グラフ構造のプログラムにおいて、予め診断用コードが埋め込まれている例を示している。このように診断用コードが埋め込まれたプログラムを実行することで、予め意図したタイミングで診断用コードを実行することができる。
【0027】
図5に示される例では、スレッドスケジューラ14に、コード読込部141及び割当部142を設けることで診断用コードを実行する例である。スレッドスケジューラ14には、タイマー20から時刻情報が出力される。スレッドスケジューラ14は、コード格納部18に格納されている診断用コードや期待値を読み込むことが可能なように構成されている。
【0028】
スレッドスケジューラ14は、通常のスレッド・スケジューリング機能以外の機能的な構成要素として、コード読込部141と、割当部142とが設けられている。
【0029】
コード読込部141は、予め格納されている診断用コードを読み込む部分である。診断用コードは、コード格納部18に格納されている。コード格納部18には、診断用コードを実行した結果の期待値も格納されているので、コード読込部141は、期待値も読み込むことができる。
【0030】
割当部142は、平均故障時間(MTTF:Mean Time To Failures)内に診断が完了するように診断用コードを複数の処理実行ハードウェアに実行させる部分である。割当部142は、タイマー20から出力される時刻情報を用いて、平均故障時間内に診断が完了するように診断用コードの実行を割り当てる。
【0031】
割当部142による診断用コードの割り当ては、
図3に示されるような、実行コア単位で行われても良い。割当部142による診断用コードの割り当ては、実行コアを構成する演算器単位で行われても良い。
【0032】
図6に示されるように、実行コア16は、複数の演算器を含んでいる。具体的には、実行コア16は、スレッド・アービタ51、演算器A521、演算器A522、演算器B523、演算器B524、演算器C525、演算器C526、結果レジスタA531、結果レジスタA532、結果レジスタB533、結果レジスタB534、期待値レジスタC535、期待値レジスタD536、及び比較器54を有している。
【0033】
スレッド・アービタ51は、演算器A521、演算器A522、演算器B523、演算器B524、演算器C525、演算器C526に処理を割り当てる部分である。スレッド・アービタ51は、割当部142による診断用コードの割り当てに応じて、診断用コードの実行を、演算器A521、演算器A522、演算器B523、演算器B524、演算器C525、演算器C526に割り当てる。
【0034】
演算器A521、演算器A522、演算器B523、演算器B524、演算器C525、演算器C526は、割り当てられた処理を実行する部分である。演算器A521と演算器A522とは、同じ構成・機能の演算器である。演算器B523と演算器B524とは、同じ構成・機能の演算器である。演算器C525と演算器C526とは、同じ構成・機能の演算器である。
【0035】
結果レジスタA531は、演算器A521の演算結果を格納する部分である。結果レジスタA532は、演算器A522の演算結果を格納する部分である。結果レジスタB533は、演算器B523の演算結果を格納する部分である。結果レジスタB534は、演算器B524の演算結果を格納する部分である。
【0036】
期待値レジスタC535は、演算器C525が出力する期待値を格納する部分である。演算器C525は、スレッド・アービタ51が割り当てる期待値処理を実行し、期待値を期待値レジスタC535に格納する。期待値レジスタC536は、演算器C526が出力する期待値を格納する部分である。演算器C526は、スレッド・アービタ51が割り当てる期待値処理を実行し、期待値を期待値レジスタC536に格納する。
【0037】
比較器54は、例えば、結果レジスタA531に格納されている値と結果レジスタA532に格納されている値とを比較し、それが診断用コードの実行結果であれば、一致していれば正常であると判断する。比較器54は、例えば、結果レジスタA531に格納されている値と期待値レジスタC536に格納されている値とを比較し、それが診断用コードの実行結果であれば、一致していれば正常であると判断してもよい。
【0038】
図7に示されるように、診断用コードの実行は、タイミングをずらして同種の演算器で行うようにしてもよい。
図8に示されるように、診断用コードの実行は、同じタイミングで同種の演算器で行うようにしてもよい。
【0039】
上記のように本実施形態のDFP10は、本開示の情報処理装置に相当し、グラフ構造のプログラムを処理する複数の処理実行ハードウェアに処理を割り当てるスレッドスケジューラを含む情報処理装置であって、予め格納されている診断用コードを読み込むコード読込部141と、平均故障時間内に診断が完了するように診断用コードを複数の処理実行ハードウェアに実行させる割当部142と、を備えている。
【0040】
割当部142が、平均故障時間内に診断が完了するように診断用コードを複数の処理実行ハードウェアに実行させるので、故障診断用にハードウェアを二重化することなく、処理用に既に設けられている処理実行ハードウェアを活用した故障診断が可能となる。
【0041】
本実施形態において、コード読込部141は、予め格納されている診断用コードを実行した結果の期待値も読み込むことができる。
【0042】
本実施形態において、処理実行ハードウェアは、実行コアを構成する演算器である。
【0043】
本実施形態において、割当部142は、複数の処理実行ハードウェアそれぞれにおいて、前記診断用コードが異なるタイミングで実行されるように割り当てる。
【0044】
本実施形態において、割当部142は、診断用コードの実行結果が故障を示すものである場合、他の同種の処理実行ハードウェアにて診断用コードを再実行させる。
【0045】
以上、具体例を参照しつつ本実施形態について説明した。しかし、本開示はこれらの具体例に限定されるものではない。これら具体例に、当業者が適宜設計変更を加えたものも、本開示の特徴を備えている限り、本開示の範囲に包含される。前述した各具体例が備える各要素およびその配置、条件、形状などは、例示したものに限定されるわけではなく適宜変更することができる。前述した各具体例が備える各要素は、技術的な矛盾が生じない限り、適宜組み合わせを変えることができる。
【符号の説明】
【0046】
141:コード読込部
142:割当部