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