(57)【要約】      （修正有）【課題】割込み要求された処理のうち一部のプロセッサコアに割当てられた処理が実行されない場合でも処理を完遂することができる情報処理装置および情報処理方法を提供する。【解決手段】情報処理装置１は、外部から割込み要求される処理を分担して実行する複数のプロセッサコア１０、２０、３０を備える。各プロセッサコアは、処理部１１、２１、３１と、監視部１２、２２、３２と、割込み要求部１３、２３、３３とを備える。処理部は、プロセッサコアに割り当てられた処理を実行する。監視部は、他のプロセッサコアに割り当てられた処理が他のプロセッサコアによって実行されているか否かを監視する。割込み要求部は、処理が他のプロセッサコアによって実行されていないと監視部によって判定される場合に、外部からの割込み要求とは別の割込み要求によって、他のプロセッサコアに実行されなかった処理を実行させる。【選択図】図１
2020013335.tif 000002
【特許請求の範囲】
【請求項１】
割込み要求される処理を分担して実行する複数のプロセッサコアを備え、
各前記プロセッサコアは、
当該プロセッサコアに割り当てられた処理を実行する処理部と、
他の前記プロセッサコアに割り当てられた処理が前記他のプロセッサコアによって実行されるか否かを監視する監視部と、
前記処理が前記他のプロセッサコアによって実行されないと前記監視部によって判定される場合に、前記割込み要求とは別の割込み要求によって、前記他のプロセッサコアに実行されなかった処理を実行させる割込み要求部と
を備えることを特徴とする情報処理装置。
【請求項２】
前記割込み要求部は、
前記別の割込み要求によって、前記監視部および前記割込み要求部と同様の処理を前記他のプロセッサコアの監視部および割込み要求部に実行させる
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
各前記監視部は、
監視対象の前記プロセッサコアを互いに重複することなく監視する
ことを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項４】
各前記プロセッサコアは、
当該プロセッサコアの前記処理部によって前記処理が実行される場合に更新される情報を記憶する記憶部
を備え、
前記監視部は、
前記他のプロセッサコアの前記記憶部に記憶された情報が更新されていない場合に、前記処理が前記他のプロセッサコアによって実行されないと判定する
ことを特徴とする請求項１〜３のいずれか一つに記載の情報処理装置。
【請求項５】
割込み要求される処理を分担して実行する複数のプロセッサコアを備える情報処理装置の各前記プロセッサコアが実行する情報処理方法であって、
当該プロセッサコアに割り当てられた処理を実行する処理工程と、
他の前記プロセッサコアに割り当てられた処理が前記他のプロセッサコアによって実行されるか否かを監視する監視工程と、
前記処理が前記他のプロセッサコアによって実行されないと前記監視工程によって判定される場合に、前記割込み要求とは別の割込み要求によって、前記他のプロセッサコアに実行されなかった処理を実行させる割込み要求工程と
を含むことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の実施形態は、情報処理装置および情報処理方法に関する。
【背景技術】
【０００２】
従来、車両制御のための処理を分担して行う複数のプロセッサコアを備える情報処理装置がある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２７４５６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の情報処理装置は、例えば、処理の割込み要求を受け付けた場合に、各プロセッサコアが正常であっても、何らかの原因で一部のプロセッサコアに割当てられた処理が実行されず、割込み要求された処理を完遂できないことがある。
【０００５】
実施形態の一態様は、上記に鑑みてなされたものであって、割込み要求された処理のうち一部のプロセッサコアに割当てられた処理が実行されない場合でも処理を完遂することができる情報処理装置および情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
実施形態の一態様に係る情報処理装置は、割込み要求される処理を分担して実行する複数のプロセッサコアを備える。各前記プロセッサコアは、処理部と、監視部と、割込み要求部とを備える。処理部は、当該プロセッサコアに割り当てられた処理を実行する。監視部は、他の前記プロセッサコアに割り当てられた処理が前記他のプロセッサコアによって実行されているか否かを監視する。割込み要求部は、前記処理が前記他のプロセッサコアによって実行されていないと前記監視部によって判定される場合に、前記割込み要求とは別の割込み要求によって、前記他のプロセッサコアに実行されなかった処理を実行させる。
【発明の効果】
【０００７】
実施形態の一態様に係る情報処理装置および情報処理方法によれば、割込み要求された処理のうち一部のプロセッサコアに割当てられた処理が実行されない場合でも処理を完遂することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態に係る情報処理装置の構成の一例を示すブロック図である。
【図２】図２は、実施形態に係る情報処理装置の動作の一例を示す説明図である。
【図３】図３は、実施形態に係る情報処理装置の動作の一例を示す説明図である。
【図４】図４は、実施形態に係る情報処理装置の各コアが実行する処理の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照して、情報処理装置および情報処理方法の実施形態を詳細に説明する。なお、以下に示す実施形態によりこの発明が限定されるものではない。図１は、実施形態に係る情報処理装置の構成の一例を示すブロック図である。
【００１０】
図１に示すように、情報処理装置１は、第１コア１０、第２コア２０、および第３コア３０という３つのプロセッサコアを備えるマルチコアプロセッサである。以下では、第１コア１０、第２コア２０、および第３コア３０のうち、任意のプロセッサコアを指す場合には、符号を付することなく、単にコアと記載する。
【００１１】
また、ここでは、情報処理装置１が３つのコアを備える場合を例に挙げて説明するが、情報処理装置１が備えるコアの数は、３に限定されるものではなく、２以上であればよい。
【００１２】
第１コア１０、第２コア２０、および第３コア３０は、ＣＰＵ（Central  Processing  Unit）、ＲＯＭ（Read  Only  Memory）、ＲＡＭ（Random  Access  Memory）などを有するマイクロコンピュータや各種の回路を含む。
【００１３】
第１コア１０は、ＣＰＵがＲＯＭに記憶されたプログラムを、ＲＡＭを作業領域として使用して実行することにより機能する処理部１１と、監視部１２と、割込み要求部１３とを備える。同じく、第２コア２０は、処理部２１と、監視部２２と、割込み要求部２３とを備える。第３コア３０は、処理部３１と、監視部３２と、割込み要求部３３とを備える。
【００１４】
なお、上記した処理部１１，２１，３１、監視部１２，２２，３２、および割込み要求部１３，２３，３３は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等のハードウェアで構成されてもよい。
【００１５】
各処理部１１，２１，３１は、外部からの割込み要求がない場合、予め定められた通常の情報処理（以下、「通常処理」と記載する）を実行し、割込み要求がある場合には、割込み要求される処理を分担して実行する。
【００１６】
第１コア１０の監視部１２は、情報処理装置１に対して外部から割込み要求がある場合に、第２コア２０に割り当てられた処理が第２コア２０の処理部２１によって実行されるか否かを監視する。
【００１７】
また、第２コア２０の監視部２２は、第３コア３０に割り当てられた処理が第３コア３０の処理部３１によって実行されるか否かを監視する。また、第３コア３０の監視部３２は、第１コア１０に割り当てられた処理が第１コア１０の処理部１１によって実行されるか否かを監視する。
【００１８】
このように、各コアは、監視対象のコアを互いに重複することなく監視する。これにより、情報処理装置１は、各コアにおける監視処理の処理負荷が増大することを抑制しつつ、全コアの監視をコア同士で行うことができる。
【００１９】
そして、第１コア１０の監視部１２は、第２コア２０に割り当てられた処理が第２コア２０の処理部２１によって実行されないと判定した場合に、その旨を示す情報を割込み要求部１３へ出力する。
【００２０】
割込み要求部１３は、監視部１２から第２コア２０で処理が実行されないことを示す情報が入力されると、第２コア２０に対して外部からの割込み要求とは別の通信経路を使用するソフトウェア割込み要求を行い第２コア２０に実行されなかった処理を実行させる。
【００２１】
また、第２コア２０の監視部２２は、第３コア３０に割り当てられた処理が第３コア３０の処理部３１によって実行されないと判定した場合に、その旨を示す情報を割込み要求部２３へ出力する。
【００２２】
割込み要求部２３は、監視部２２から第３コア３０で処理が実行されないことを示す情報が入力されると、第３コア３０に対して外部からの割込み要求とは別の通信経路を使用するソフトウェア割込み要求を行い第３コア３０に実行されなかった処理を実行させる。
【００２３】
また、第３コア３０の監視部３２は、第１コア１０に割り当てられた処理が第１コア１０の処理部１１によって実行されないと判定した場合に、その旨を示す情報を割込み要求部３３へ出力する。
【００２４】
割込み要求部３３は、監視部３２から第１コア１０で処理が実行されないことを示す情報が入力されると、第１コア１０に対して外部からの割込み要求とは別の通信経路を使用するソフトウェア割込み要求を行い第１コア１０に実行されなかった処理を実行させる。
【００２５】
これにより、情報処理装置１は、例えば、コアに接続される複数の通信経路の何れかが異常をきたしてコアへ割込み要求が伝達されない要求伝達異常が発生し、そのコアで処理が実行されない割込み抜けが発生しても割込み要求された処理を完遂することができる。
【００２６】
次に、図２および図３を参照し、情報処理装置１の動作の一例について説明する。図２および図３は、情報処理装置１の動作の一例を示す説明図である。図３に示すように、情報処理装置１は、外部から割込み要求が入力される場合がある。かかる場合、第１コア１０、第２コア２０、および第３コア３０に、それぞれ割込み要求が入力され、割込み要求される処理が分担される。
【００２７】
第１コア１０は、割込み要求が入力されると、図２に示す第１コア１０の枠内に記載された（１）〜（４）の処理を行う。第２コア２０および第３コア３０も同様に、図２に示す第２コア２０および第３コア３０の枠内に記載された（１）〜（４）の処理を行う。
【００２８】
具体的には、第１コア１０は、まず、（１）ＲＡＭ＿Ｃｏｒｅ１＋＋を実行することによって、第１コア１０のＲＡＭの所定領域に初期値として記憶されている値を０からインクリメントして１に更新する。つまり、（１）では第１コアのＲＡＭ，つまり記憶部における所定の領域を、割込み処理が実施されていることを示す所定の状態に更新する処理を行う。
【００２９】
その後、第１コア１０は、（２）ＲＡＭ＿Ｃｏｒｅ２＝「１」？を実行することによって、第２コア２０のＲＡＭの所定領域に記憶されている値が期待値の１に更新されているか否かを判定する。
【００３０】
つまり、（２）では第１コアが監視を行っている第２コアにおいて、割込み処理が実施されていることを示す状態に記憶部が更新されているか否かを確認する処理を行う。なお、この際コア間での割込み処理の同時性が確保できない場合などにおいては、ＲＡＭ＿Ｃｏｒｅ２を確認するまでに所定のウェイトを置くなどの同期手段を用いてもよい。
【００３１】
これにより、第２コア２０の処理は正常に実施されているが、割込み処理開始タイミングが遅れたせいで値が更新される前に第１コア１０がＲＡＭ＿Ｃｏｒｅ２を確認し、割込み抜けと誤判定することを防ぐことができる。
【００３２】
第１コア１０は、（２）の処理の結果がＹｅｓの場合、（４）第１コアハンドラ処理を実行することにより、割込み要求によって第１コア１０に割り当てられた処理を実行する。また、第１コア１０は、（２）の処理の結果がＮｏの場合、（３）第２コア２０に対してソフトウェア割込み要求を実行する。つまり、（３）では割込み抜けが起こっている監視対象のコアに対して、別の経路から割込み要求を発生させる処理を行う。
【００３３】
図２に示す例では、第２コア２０は、正常に（１）ＲＡＭ＿Ｃｏｒｅ２＋＋を行って、第２コア２０のＲＡＭの所定領域に初期値として記憶されている値を０からインクリメントして１に更新している。
【００３４】
このため、第１コア１０は、（３）の処理を行わず、通常処理を中断して（４）の処理を行うことになる。なお、第１コア１０は、第２コア２０のＲＡＭの所定領域に記憶されている値が１に更新されていることを確認した場合には、その値をリセットして０に戻す。
【００３５】
また、第２コア２０は、まず、（１）ＲＡＭ＿Ｃｏｒｅ２＋＋を実行することによって、第２コア２０のＲＡＭの所定領域に初期値として記憶されている値を０からインクリメントして１に更新する。
【００３６】
その後、第２コア２０は、（２）ＲＡＭ＿Ｃｏｒｅ３＝「１」？を実行することによって、第３コア３０のＲＡＭの所定領域に記憶されている値が期待値の１に更新されているか否かを判定する。
【００３７】
第２コア２０は、（２）の処理の結果がＹｅｓの場合、（４）第２コアハンドラ処理を実行することにより、割込み要求によって第２コア２０に割り当てられた処理を実行する。また、第２コア２０は、（２）の処理の結果がＮｏの場合、（３）第３コアに対してソフトウェア割込み要求を実行する。
【００３８】
図２に示す例では、第３コア３０は、正常に（１）ＲＡＭ＿Ｃｏｒｅ３＋＋を行って、第３コア３０のＲＡＭの所定領域に初期値として記憶されている値を０からインクリメントして１に更新している。
【００３９】
このため、第２コア２０は、（３）の処理を行わず、通常処理を中断して（４）の処理を行うことになる。なお、第２コア２０は、第３コア３０のＲＡＭの所定領域に記憶されている値が１に更新されていることを確認した場合には、その値をリセットして０に戻す。
【００４０】
第３コア３０は、まず、（１）ＲＡＭ＿Ｃｏｒｅ３＋＋を行うことによって、第３コア３０のＲＡＭの所定領域に初期値として記憶されている値を０からインクリメントして１に更新する。
【００４１】
その後、第３コア３０は、（２）ＲＡＭ＿Ｃｏｒｅ１＝「１」？を行うことによって、第１コア１０のＲＡＭの所定領域に記憶されている値が期待値の１に更新されているか否かを判定する。
【００４２】
第３コア３０は、（２）の処理の結果がＹｅｓの場合、（４）第３コアハンドラ処理を実行することにより、割込み要求によって第３コア３０に割り当てられた処理を実行する。また、第３コア３０は、（２）の処理の結果がＮｏの場合、（３）第１コアに対してソフトウェア割込み要求を実行する。
【００４３】
図２に示す例では、第１コア１０は、正常に（１）ＲＡＭ＿Ｃｏｒｅ１＋＋を行って、第１コア１０のＲＡＭの所定領域に初期値として記憶されている値を０からインクリメントして１に更新している。
【００４４】
このため、第３コア３０は、（３）の処理を行わず、通常処理を中断して（４）の処理を行うことになる。なお、第３コア３０は、第１コア１０のＲＡＭの所定領域に記憶されている値が１に更新されていることを確認した場合には、その値をリセットして０に戻す。
【００４５】
このように、情報処理装置１は、全てのコアへ正常に割込み要求が入力される場合、割込み要求された処理を各コアによって分担し、並行して実行することにより、通常処理の中断時間を最短時間に抑えて処理を完遂することができる。
【００４６】
しかしながら、情報処理装置１は、何等かの原因で何れかのコアへ割込み要求が入力されない要求伝達異常が発生することがある。例えば、図３に示すように、第２コア２０に接続される通信経路が異常をきたして第２コア２０へ割込み要求が伝達されない要求伝達異常が発生する場合がある。
【００４７】
かかる場合、割込み抜けが発生するため、第２コア２０は、前述した（１）〜（４）の処理を実行しない。このため、第２コア２０のＲＡＭの所定領域に記憶されている値が初期値の０のままとなる。
【００４８】
第１コア１０は、このことを（２）ＲＡＭ＿Ｃｏｒｅ２＝「１」？を実行することで検出することができる。つまり、第１コア１０は、第２コア２０のＲＡＭの所定領域に記憶された値が１に更新されていない場合に、第２コア２０によって処理が実行されないと判定することができる。
【００４９】
このように、情報処理装置１によれば、各コアが監視対象のコアのＲＡＭの値を参照するという簡易な手順によって、各コアが割り当てられた処理を正常に実行するか否かを確認することができる。
【００５０】
そして、第１コア１０は、（２）の処理結果がＮｏである場合、前述したように、（４）第２コア２０に対してソフトウェア割込み要求を実行することによって、当初第２コア２０が実行することになっていた（２）〜（４）の処理を第２コア２０に実行させる。
【００５１】
このとき、第１コア１０は、当初第２コア２０へ割込み要求が入力されるはずの通信経路とは別の通信経路を使用して、第２コア２０に対するソフトウェア割込みを行うので、第２コア２０に（２）〜（４）の処理を正常に実行させることができる。
【００５２】
このように、第１コア１０は、第２コア２０に（２）〜（４）の処理を実行させることによって、第２コア２０に実行されなかった処理を実行させるだけでなく、第１コア１０の監視部１２および割込み要求部１３と同様の処理を実行させる。
【００５３】
このため、第２コア２０の監視部２２は、第３コア３０に割り当てられた処理が第３コア３０によって実行されるか否かを監視し、実行されない場合に、第３コア３０に対してソフトウェア割込み要求を行う。これにより、情報処理装置１は、第３コア３０で割込み抜けが発生していた場合に、第３コア３０によって実行されなかった処理を実行させることができる。
【００５４】
なお、ここでは、第２コア２０で割込み抜けが発生した場合について説明したが、情報処理装置１は、第１コア１０で割込み抜けが発生した場合、および第３コア３０で割込み抜けが発生した場合にも同様の処理を行う。
【００５５】
第１コア１０で割込み抜けが発生した場合には、第３コア３０が第１コア１０へソフトウェア割込み要求を行うことで、第１コア１０で実行されなかった処理を第１コア１０に実行させることがきる。
【００５６】
また、第３コア３０で割込み抜けが発生した場合には、前述したように、第２コア２０が第３コア３０へソフトウェア割込み要求を行うことで、第３コア３０で実行されなかった処理を第３コア３０に実行させることがきる。このように、情報処理装置１は、いずれかのコアに割込み抜けが発生しても、割込み要求される処理を正常に完遂することができる。
【００５７】
したがって、情報処理装置１は、例えば、車両を制御するＥＣＵ（Electronic  Control  Unit）として採用された場合に、割込み抜けの発生による車両の安全性侵害を軽減することができる。
【００５８】
また、情報処理装置１は、上記のように割込み要求される処理を複数のコアで分担して実行することにより、例えば、車両の自動運転制御等のようなリアルタイム性が要求される割込み処理を短時間で迅速に処理することができる。
【００５９】
次に、図４を参照し、実施形態に係るコアが実行する処理の一例について説明する。図４は、実施形態に係るコアが実行する処理の一例を示すフローチャートである。コアは、電源が投入されている間、図４に示す処理を所定周期で繰り返し実行する。
【００６０】
図７に示すように、コアは、まず、割込み要求があるか否かを判定する（ステップＳ１０１）。そして、コアは、割込み要求がないと判定した場合（ステップＳ１０１，Ｎｏ）、他のコアからのソフトウェア割込み要求があるか否かを判定する（ステップＳ１０８）。
【００６１】
そして、コアは、ソフトウェア割込み要求がないと判定した場合（ステップＳ１０８，Ｎｏ）、通常処理を行い（ステップＳ１０６）、処理を終了する。その後、コアは、再度ステップＳ１０１から処理を開始する。
【００６２】
また、コアは、ソフトウェア割込み要求があると判定した場合（ステップＳ１０８，Ｙｅｓ）、通常処理を中断し（ステップＳ１０９）、処理をステップＳ１０４へ移す。また、コアは、ステップＳ１０１で割込み要求があると判定した場合（ステップＳ１０１，Ｙｅｓ）、通常処理を中断し（ステップＳ１０２）、その後、ＲＡＭを更新し（ステップＳ１０３）、処理をステップＳ１０４へ移す。
【００６３】
ステップＳ１０４において、コアは、監視対象コアのＲＡＭに記憶されている値が期待値か否かを判定する。そして、コアは、期待値でないと判定した場合（ステップＳ１０４，Ｎｏ）、監視対象コアへソフトウェア割込み要求を行い（ステップＳ１０７）、処理をステップＳ１０５へ移す。
【００６４】
また、コアは、監視対象コアのＲＡＭに記憶されている値が期待値であると判定した場合（ステップＳ１０４，Ｙｅｓ）、割り当てられたハンドラ処理を実行し（ステップＳ１０５）、その後、通常処理を実行して（ステップＳ１０６）、処理を終了する。その後、コアは、再度ステップＳ１０１から処理を開始する。
【００６５】
なお、ここでは、図示を省略しているが、コアは、監視対象コアのＲＡＭに記憶されている値が期待値であることを確認した後に、監視対象コアのＲＡＭに記憶されている値をリセットする。続いて、コアは、ハンドラ処理１０５が終了すると、通常処理を行い（ステップＳ１０６）、処理を終了する。その後、コアは、再度ステップＳ１０１から処理を開始する。
【００６６】
さらなる効果や変形例は、当業者によって容易に導き出すことができる。このため、本発明のより広範な態様は、以上のように表しかつ記述した特定の詳細および代表的な実施形態に限定されるものではない。したがって、添付の特許請求の範囲およびその均等物によって定義される総括的な発明の概念の精神または範囲から逸脱することなく、様々な変更が可能である。
【符号の説明】
【００６７】
１  情報処理装置
１０  第１コア
２０  第２コア
３０  第３コア
１１，２１，３１  処理部
１２，２２，３２  監視部
１３，２３，３３  割込み要求部
【図１】
2020013335.tif 000003
【図２】
2020013335.tif 000004
【図３】
2020013335.tif 000005
【図４】
2020013335.tif 000006