(57)【要約】【課題】マイコンに搭載された並列演算処理器が有する複数の演算器のいずれかが故障したことを検出した場合に、並列演算処理器を停止させることなく演算を継続する。【解決手段】コアは、演算器のいずれかが故障していると判断した場合は（Ｓ２１：ＹＥＳ）、故障した演算器の種類と異なる演算器を使用する処理を並列演算処理器に要求する（Ｓ２０２）。これにより、一部の演算器１９が故障したとしても、コア１２ａ〜１２ｃから要求された処理を代替え処理によって実行することが可能となる。【選択図】図７
2020181569.tif 000002
【特許請求の範囲】
【請求項１】
演算命令の集合体である演算命令群を処理することを要求する制御部（１２ａ〜１２ｃ）と、前記制御部から要求された演算命令群から演算命令を抽出して対応する演算器（１９）に割振ることで複数の演算命令を並列処理可能な並列演算処理部（１３）と、を有したマイクロコンピュータを備え、
前記制御部は、前記演算器のいずれかが故障していることを検出した場合は、故障した前記演算器を使用しない故障回避処理を実行する電子制御装置。
【請求項２】
前記制御部は、前記演算器のいずれかが故障していることを検出する故障検出部（１２ａ１）を備え、
前記故障検出部は、前記演算器の故障を検出した場合は、前記故障回避処理を実行する請求項１に記載の電子制御装置。
【請求項３】
前記制御部は、故障した前記演算器に対応する演算命令を使用しないことで前記故障回避処理を実行する請求項１または２に記載の電子制御装置。
【請求項４】
前記制御部は、故障した前記演算器の種類と異なる演算器を使用する処理を要求することで前記故障回避処理を実行する請求項３に記載の電子制御装置。
【請求項５】
前記制御部は、故障した前記演算器に対する演算命令を使用する処理要求を停止することで前記故障回避処理を実行する請求項１または２に記載の電子制御装置。
【請求項６】
前記制御部は、故障した前記演算器に対する故障処理要求と同等の処理を制御側にて実行することで前記故障回避処理を実行する請求項１または２に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は電子制御装置に関する。
【背景技術】
【０００２】
例えば車両に搭載される電子制御装置では、車両の制御の複雑化によりマイクロコンピュータ（以下、マイコンと略す）の処理能力の向上が図られている。このような技術として、特許文献１に示すようにマルチコアマイコンにより演算処理を並列実行させることが行われている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−１２６４２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、マイコンによる演算処理をさらに高めるためにマイコンに並列演算処理器を搭載することが提案されている。この並列演算処理器はハードウェアから構成されており、マイコンのコアから複数の演算命令の集合体である演算命令群を処理することが要求された場合は、演算命令を当該演算命令に対応する演算器に対して自動的に割振って演算処理するものである。このような並列演算処理器をマイコンに搭載することにより高速な演算処理が可能となる。
【０００５】
しかしながら、並列演算処理器は、コアから要求された処理集合体に対して複数ある演算器のどれをどの順に使用するかをハードウェアが自動的に割振っているため、演算器のいずれかが故障したことを検出した場合であっても故障した演算器までは特定ができないことから、並列演算処理器による全ての演算処理を停止させる必要がある。
【０００６】
本発明は上記事情に鑑みてなされたもので、その目的は、マイコンに搭載された並列演算処理器が有する複数の演算器のいずれかが故障したことを検出した場合に、並列演算処理器を停止させることなく演算を継続することができる電子制御装置を提供することにある。
【課題を解決するための手段】
【０００７】
請求項１の発明によれば、制御部（１２ａ〜１２ｃ）は、並列演算処理部（１３）の演算器（１９）のいずれかが故障していることを検出した場合は、故障した演算器（１９）に対応する演算命令を使用しない故障回避処理を実行する。これにより、並列演算処理器（１３）を停止することなく演算を継続することができる。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態におけるマイコンの構成を概略的に示すブロック図
【図２】各ＥＣＵの接続関係を概略的に示すブロック図
【図３】並列演算処理器の構成を概略的に示すブロック図
【図４】並列演算処理器による並列演算を概念的に示す図
【図５】故障診断処理時の並列演算処理器による並列演算を概念的に示す図
【図６】故障診断処理を示すフローチャート
【図７】故障回避処理を示すフローチャート
【図８】第２実施形態における故障回避処理を示すフローチャート
【図９】第３実施形態における故障回避処理を示すフローチャート
【発明を実施するための形態】
【０００９】
以下、エンジンＥＣＵに適用した複数の実施形態について図面を参照して説明する。複数の実施形態において、機能的または構造的に対応する部分には同一の参照符号を付与する。
【００１０】
（第１実施形態）
図２に示すように、車両にはエンジンＥＣＵ（Electronic Control Unit）１（電子制御装置に相当）が搭載されている。このエンジンＥＣＵ１は、車載ＬＡＮ２を介して自動変速ＥＣＵ３、メータＥＣＵ４、空調ＥＣＵ５などの他のＥＣＵに通信可能に接続されている。車載ＬＡＮ２のプロトコルは、例えばＣＡＮ（Controller Area Network）である。ＣＡＮは登録商標である。
【００１１】
図１に示すようにＥＣＵ１は、マイコン１１を主体として構成されている。マイコン１１は、複数のコア１２ａ〜１２ｃ（制御部に相当）や並列演算処理器１３（並列演算処理部に相当）を備えて構成されており、それらのコア１２ａ〜１２ｃや並列演算処理器１３が複数の演算処理を並列処理することで高速処理を実現している。
【００１２】
コア１２ａ〜１２ｃ及び並列演算処理器１３は内部バス１４を介して互いに接続されていると共に、ＲＯＭ及びＲＡＭなどのメモリ１５やＡＤ変換器及びＣＡＮインターフェースなどの周辺回路１６とも接続されている。
【００１３】
コア１２ａ〜１２ｃは、エンジンを制御するためのアクチュエータの動作やエンジンの運転状態を検出するための各種センサからの検出信号をＡＤ変換器によりデジタル変換したデジタル値を入力し、そのデジタル値を処理して所定の物理値を求める演算処理が必要となった場合は演算命令の集合体である演算命令群を並列演算処理器１３に与えることで演算処理を要求する。
【００１４】
図３に示すように並列演算処理器１３は、メモリ１７と、制御回路１８と、複数の演算器１９とから構成されている。メモリ１７にはコア１２ａ〜１２ｃから与えられた演算命令群が順に記憶される。
【００１５】
制御回路１８はハードウェアから構成されており、メモリ１７に記憶された演算命令群を演算器１９と連携して演算処理する。つまり、制御回路１８はスケジューラ機能を有しており、メモリ１７に記憶された演算命令群から演算命令を抽出して対応する演算器１９に自動的に割振る。
【００１６】
演算器１９はＦＩＦＯ（First-In First-Out）型であり、後述するように制御回路１８により割振られた演算命令を順に演算処理する。演算器１９は同一種類や異なる種類の演算器であり、同一種類や異なる種類の演算命令を並列処理可能である。演算器１９は、演算処理結果をメモリ１７に記憶する。
【００１７】
コア１２ａ〜１２ｃは、演算命令群を処理することを並列演算処理器１３に要求した場合はメモリ１７を介して演算結果を取得し、その演算結果に基づいて以後の処理を実行する。
【００１８】
演算器１９の代表例としては、ＳＩＭＤ（Single Instruction Multiple Data）、ＡＬＵ（Arithmetic Logic Unit）、ＳＰＭＴ（Special Math）を挙げることができるが、これに限定されるものではない。ＳＩＭＤは配列演算器で、一つのＳＩＭＤ命令で複数のデータを並列処理可能な演算器である。
【００１９】
ＡＬＵは算術論理演算器で、ＡＬＵ命令としては論理積ＡＮＤ、論理和ＯＲ、否定ＮＯＴ、加算ＡＤＤ、乗算ＭＵＬ、減算ＳＵＢが代表例であるが、これに限定されるものではない。
【００２０】
ＳＰＭＴは特殊演算器で、ＳＰＭＴ命令としては逆数ＲＣＰ、平方根ＳＱＲＴ、指数関数ＥＸＰ、平方根ＳＱＲＴ、除算ＤＩＶが代表例であるが、これに限定されるものではない。
【００２１】
並列演算処理器１３は、階層毎に並列化することにより高速化を実現できるように構成されている。つまり、演算命令群の並列化、演算命令の並列化、ＳＩＭＤによる並列化である。
【００２２】
演算命令群の並列化はメモリ１７が有する機能であり、各コア１２ａ〜１２ｃから与えられた演算命令群を並列化して記憶する。
演算命令の並列化は制御回路１８が有する機能であり、メモリ１７において並列化された演算命令群を入力し、その演算命令群から演算命令を抽出して対応する複数の演算器１９に割振ることで並列化する。
【００２３】
ＳＩＭＤによる並列化はＳＩＭＤが有する機能であり、ＳＩＭＤにより一つの命令で複数のデータを並列化して演算処理する。つまり、ＳＩＭＤはデータを一括して演算処理するのに適した演算器であり、ＳＩＭＤを用いた場合に並列演算処理器１３の並列化による演算処理時間の短縮を期待することができる。
【００２４】
ここで、コア１２ａ〜１２ｃの内、コア１２ａは故障検出部１２ａ１に相当する。この故障検出部１２ａ１は、コアが非遷移的実体的記憶媒体に格納されているプログラムを実行して対応する処理を実行することにより実現される。故障検出部１２ａ１は、並列演算処理器１３の演算器１９が故障しているか否かを判断する故障診断処理の機能を有する。この故障診断処理は、同一種類の演算器１９に対して同一の演算命令を演算処理させ、同一種類の演算器１９の演算結果を一致確認することでいずれの種類の演算器１９が故障しているかを特定するものである。
【００２５】
以下、故障検出部１２ａ１による故障診断処理について説明する。図４に示すように並列演算処理器１３が有する演算器１９としてＳＩＭＤ、ＡＬＵ、ＳＰＭＴがそれぞれ２個ずつ設けられている例を説明するが、演算器１９の種類や数は限定されるものではない。
【００２６】
通常時においては、上述したようにメモリ１７においてコア１２ａ〜１２ｃから与えられた演算命令群が並列化された状態で記憶される。制御回路１８は、所定タイミングとなるとメモリ１７から演算命令群を入力し、入力した演算命令群から演算命令を抽出して対応する演算器１９に割振る。
【００２７】
図４に示す例では、ＳＩＭＤ命令をＳＩＭＤに割振り、ＡＬＵ命令をＡＬＵに割振り、ＳＰＭＴ命令をＳＰＭＴに割振ることを示している。各演算器１９は、割振られた演算命令を順に実行し、その演算結果をメモリ１７に記憶する。
以上のようにして、コア１２ａ〜１２ｃは、演算命令群の演算結果を取得することができる。
【００２８】
さて、コア１２ａは、所定タイミングで故障診断処理を実行する。即ち、図６に示すように故障診断タイミングとなると（Ｓ１０１：ＹＥＳ）、並列演算処理器１３への処理要求を停止してから（Ｓ１０２）、一定時間経過するまで待機する（Ｓ１０３：ＮＯ）。この一定時間とは、全ての演算器１９が割振られた演算命令の全てを演算処理してアイドル状態に復帰するのに要する時間よりも十分に長い時間である。
【００２９】
コア１２ａは、一定時間が経過すると（Ｓ１０３：ＹＥＳ）、コア１２ａ〜１２ｃから指示がなく各演算器１９が動いていないアイドル状態となったと判断する。このアイドル状態は、演算器１９が割振られた演算命令を直ちに実行可能な状態である。
【００３０】
次にコア１２ａは、故障診断処理することを並列演算処理器１３に要求する（Ｓ１０４）。この故障診断処理の要求では、同一種類の演算器１９の数だけ同一の演算命令を処理することを要求する。これにより、同一種類の演算器１９の全ては同一の演算命令を同時に実行するようになるので、コア１２ａは、その演算結果を取得し、同一種類の演算器１９の演算結果が一致するかを確認する（Ｓ１０５）。
【００３１】
図５に示す例では、コア１２ａが２個の同一のＳＩＭＤ命令、２個の同一のＡＬＵ命令、２個の同一のＳＰＭＴからなる演算命令群を処理することを並列演算処理器１３に要求した状態を示している。この場合、制御回路１８は、同一のＳＩＭＤ命令を各ＳＩＭＤに割振り、同一のＡＬＵ命令を各ＡＬＵに割振り、同一のＳＰＭＴ命令を各ＳＰＭＴに割振る。
【００３２】
各演算器１９は、制御回路１８により割振られた演算命令を演算処理し、その演算結果をメモリ１７に記憶する。この場合、同一種類の演算器１９の全てが正常の場合は演算結果が一致し、同一種類の演算器１９のいずれかが故障した場合は演算結果が不一致となる。
そこで、コア１２ａは、演算結果が不一致の演算器１９がある場合は（Ｓ１０６：ＹＥＳ）、故障した演算器１９を特定する（Ｓ１０７）。
【００３３】
このように故障した演算器１９を特定した場合に以後の処理を継続したときは、誤った演算結果に基づいて以後の処理を行うことになってしまうことから、コア１２ａは、次のように故障回避処理を実行する。
【００３４】
図７に示す故障回避処理において、コア１２ａは、演算器Ａが故障したと判断した場合は（Ｓ２０１：ＹＥＳ）、並列演算処理器１３への処理要求を演算器Ａを使用しない処理Ｙに切り替える。例えば配列演算を行うＳＩＭＤが故障したことを特定した場合は、ＳＩＭＤで並列ベクトル演算を行う処理を、ベクトル演算要素数を減らした処理に切り替えてＡＬＵにてシリアル演算させる。また、ＳＰＭＴが故障したことを特定した場合は、ＡＬＵのみで演算できる方式に切り替える。
【００３５】
このような実施形態によれば、次のような効果を奏することができる。
コア１２ａは、演算器１９のいずれかが故障していると判断した場合は、故障した演算器１９の種類と異なる演算器１９を使用する処理を並列演算処理器１３に要求する故障回避処理を実行するので、演算器１９のいずれかが故障したとしても、コア１２ａ〜１２ｃから要求された処理を代替え処理によって実行することにより演算を継続することが可能となる。
【００３６】
（第２実施形態）
第２実施形態について図８を参照して説明する。この第２実施形態は、並列演算処理器１３の演算器１９が故障した場合の処理負荷を低減することを特徴とする。
【００３７】
第１実施形態の構成では代替え処理によって処理を継続することはできるが、例えば代替え処理が非常に時間のかかる処理になる場合、そのまま演算をし続けると処理負荷が悪化するデメリットがある。
【００３８】
そこで、図８に示すようにコア１２ａは、演算器Ａが故障した場合は（Ｓ３０１：ＹＥＳ）、並列演算処理器１３への要求処理Ｘに故障した演算器Ａを使用する処理が含まれるかを判断し（Ｓ３０２）、演算器Ａを使用する処理が含まれていた場合は（Ｓ３０２：ＹＥＳ）、並列演算処理器１３への要求処理Ｘ自体を停止する（Ｓ３０３）。
【００３９】
このような実施形態によれば、コア１２ａは、故障した演算器１９に対する演算命令を使用する処理要求を停止することで故障回避処理を実行するので、並列演算処理器１３の処理負荷の悪化を防ぐことができる。
【００４０】
（第３実施形態）
第３実施形態について図９を参照して説明する。この第３実施形態は、並列演算処理器１３の演算器１９が故障した場合に演算器１９を使用することなく演算可能としたことを特徴とする。
【００４１】
第２実施形態では、故障した演算器１９での演算処理自体を停止したが、処理を停止させることができない必須処理である場合も想定できる。
そこで、図９に示すようにコア１２ａは、並列演算処理器１３への要求処理Ｘに故障した演算器Ａの処理が含まれている場合は（Ｓ４０２：ＹＥＳ）、並列演算処理器１３への要求処理Ｘを停止し（Ｓ４０３）、要求処理Ｘを自分自身や他のコア１２ｂ〜１２ｄで実行する。
【００４２】
例えば並列演算処理器１３にて高サンプリングレートで所定の物理値を演算していた処理を、サンプリングレートを落としてコア１２ａ〜１２ｃで実行させたり、並列演算処理器１３にてセンサ値から物理値を算出する処理をそのままコア１２ａ〜１２ｃで実行したりする。
尚、要求処理Ｘ自体ではなく、代替え処理Ｙをコア１２ａ〜１２ｃで実行するようにしても良い。
【００４３】
このような実施形態によれば、コア１２ａは、故障した演算器１９に対する故障処理要求と同等の処理をコア側にて実行することで故障回避処理を実行するので、必須処理を実行することができる。
【００４４】
（その他の実施形態）
エンジンＥＣＵに限定されることなく、自動運転システムの画像処理装置や高速処理が要求される他の電子制御装置に適用するようにしても良い。
マルチコアマイコンに限定されることなく、並列演算処理器を備えたシングルコアマイコンを用いるようにしても良い。
【００４５】
本開示は、実施形態に準拠して記述されたが、本開示は当該実施形態や構造に限定されるものではないと理解される。本開示は、様々な変形例や均等範囲内の変形をも包含する。加えて、様々な組み合わせや形態、さらには、それらに一要素のみ、それ以上、あるいはそれ以下、を含む他の組み合わせや形態をも、本開示の範疇や思想範囲に入るものである。
【符号の説明】
【００４６】
図面中、１はエンジンＥＣＵ（電子制御装置）、１１はマイコン、１２ａ１は故障検出部、１２ａ〜１２ｃはコア（制御部）、１３は並列演算処理器（並列演算処理部）、１９は演算器である。
【図１】
2020181569.tif 000003
【図２】
2020181569.tif 000004
【図３】
2020181569.tif 000005
【図４】
2020181569.tif 000006
【図５】
2020181569.tif 000007
【図６】
2020181569.tif 000008
【図７】
2020181569.tif 000009
【図８】
2020181569.tif 000010
【図９】
2020181569.tif 000011