(57)【要約】【課題】ＣＰＵコアの態様が切り換わるタイミングがずれることを抑制できる電子装置を提供すること。【解決手段】電子装置は、第１プロセッサ２１ａを備えた第１ＣＰＵコア１１ａと、第２プロセッサ２２ａを備えた第２ＣＰＵコア１２ａと、制御レジスタ５０ａとを備えている。制御レジスタ５０ａは、第１ＣＰＵコア１１ａの態様を割込み禁止状態と割込み許可状態とで切り換える第１コアＩフラグ５１ａと、第２ＣＰＵコア１２ａの態様を割込み禁止状態と割込み許可状態とで切り換える第２コアＩフラグ５２ａを含んでいる。そして、第１ＣＰＵコア１１ａは、複数のＩフラグ５１ａ、５２ａの値を同時に操作することで、複数のＣＰＵコア１１ａ、１２ａの態様を同時に切り換える。【選択図】図１
2020009324.tif 000002
【特許請求の範囲】
【請求項１】
複数のＣＰＵコア（１１ａ〜１１ｆ、１２ａ〜１２ｆ、１３ｄ、１３ｆ、１ｎｅ）と、
各ＣＰＵコアに対応して個別に設けられた各ＣＰＵコアの態様の切り換えを制御する複数の切換フラグ（５１ａ〜５１ｇ、５２ａ〜５２ｇ、５３ｄ、５３ｆ、５３ｇ、５ｎｅ）を含んでいる制御レジスタ（５０ａ〜５０ｆ）と、を備え、
一つの前記ＣＰＵコアは、複数の前記切換フラグの値を同時に操作することで、複数の前記ＣＰＵコアの態様を同時に切り換える電子装置。
【請求項２】
各ＣＰＵコアは、自ＣＰＵコアの態様の切り換えを制御する前記切換フラグを含む、前記制御レジスタの前記切換フラグよりも高速で態様を切り換えることができる高速レジスタを内部に備え、
前記ＣＰＵコアは、自ＣＰＵコアの態様のみを切り換える場合、自ＣＰＵコアの前記高速レジスタにおける前記切換フラグの値を操作し、他ＣＰＵコアも含めて態様を切り換える場合、前記制御レジスタの前記切換フラグの値を同時に操作する請求項１に記載の電子装置。
【請求項３】
前記制御レジスタは、前記切換フラグに加えて、各ＣＰＵコアによって操作され、自ＣＰＵコアの態様の切り換えが許可状態か禁止状態かを設定可能な状態フラグ（９１、９２）を含んでおり、
一つの前記ＣＰＵコアが複数の前記切換フラグの値を同時に操作し、且つ、前記状態フラグに全ＣＰＵコアが許可状態であることが設定されている場合に、複数の前記ＣＰＵコアの態様を同時に切り換え、一つの前記ＣＰＵコアが複数の前記切換フラグの値を同時に操作し、且つ、前記状態フラグに少なくとも一つの前記ＣＰＵコアが禁止状態であることが設定されている場合に、複数の前記ＣＰＵコアの態様の切り換えを保留する切換保留部（８１〜８３）を備えている請求項１または２に記載の電子装置。
【請求項４】
前記ＣＰＵコアが、複数の前記切換フラグの値を同時に操作する際に、操作直前の各切換フラグの値を保存する記憶部（２００）を備え、
前記ＣＰＵコアが、操作した複数の前記切換フラグの値をクリアする際に、前記記憶部に保存されている各切換フラグの値を読み出して前記制御レジスタに設定する請求項１乃至３のいずれか１項に記載の電子装置。
【請求項５】
複数の前記切換フラグに設定する値を設定可能なデータレジスタ（３００）と、
前記データレジスタの値を複数の前記切換フラグに設定することを示すトリガビットを設定可能で、前記トリガビットが設定されると前記データレジスタの値を複数の前記切換フラグに設定するトリガレジスタ（４００）と、を備え、
前記ＣＰＵコアは、複数の前記切換フラグに設定する値を予め前記データレジスタにセットし、前記トリガレジスタに前記トリガビットを設定することで、前記データレジスタから複数の前記切換フラグの値を同時に操作する請求項１乃至４のいずれか１項に記載の電子装置。
【請求項６】
一つの前記ＣＰＵコアは、複数の前記切換フラグの値を同時に操作することで、複数の前記ＣＰＵコアそれぞれを異なる態様に同時に切り換える請求項１乃至５のいずれか１項に記載の電子装置。
【請求項７】
前記制御レジスタは、各ＣＰＵコアの態様として割込み禁止状態と割込み許可状態の切り換えを制御する前記切換フラグを含んでいる請求項１乃至６のいずれか１項に記載の電子装置。
【請求項８】
前記制御レジスタは、各ＣＰＵコアの態様として割込み優先レベルのマスクレベルの切り換えを制御する前記切換フラグを含んでいる請求項１乃至６のいずれか１項に記載の電子装置。
【請求項９】
前記制御レジスタは、各コアの外部に設けられており、各ＣＰＵコアの態様として省電力状態と非省電力状態の切り換えを制御する前記切換フラグを含んでおり、
一つの前記ＣＰＵコアは、複数の前記切換フラグに前記省電力状態を示す値を同時に操作することで、複数の前記ＣＰＵコアの現在の状態にかからず、複数の前記ＣＰＵコアの態様を同時に前記省電力状態に切り換える請求項１乃至６のいずれか１項に記載の電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、電子装置に関する。
【背景技術】
【０００２】
従来、複数のＣＰＵコアを備えた電子装置の一例として、特許文献１に開示されたマイクロコンピュータがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−２９６１３０号公報
【特許文献２】特開２００９−１８７２２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
また、特許文献２のように、複数のＣＰＵコアを備え、ＣＰＵコア毎に独立して、各ＣＰＵコアの態様の切り換えを制御する切換フラグを管理する電子装置が考えられる。この電子装置では、互いの切換フラグを直接操作できないため、共有データ記憶部やコア間割込みを通して、間接的に互いの切換フラグを操作する必要がある。この場合、電子装置は、ＣＰＵコア間でタイミング同期処理を行ない、ＣＰＵコア毎に順次切換フラグを設定することになる。
【０００５】
このため、電子装置は、ＣＰＵコア毎に態様が切り換わるタイミングがずれてしまう。つまり、電子装置は、先に態様が切り換わったＣＰＵコアが別の処理を受け付けてしまうスリットが発生するという問題がある。
【０００６】
本開示は、上記問題点に鑑みなされたものであり、ＣＰＵコアの態様が切り換わるタイミングがずれることを抑制できる電子装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本開示は、
複数のＣＰＵコア（１１ａ〜１１ｆ、１２ａ〜１２ｆ、１３ｄ、１３ｆ、１ｎｅ）と、
各ＣＰＵコアに対応して個別に設けられた各ＣＰＵコアの態様の切り換えを制御する複数の切換フラグ（５１ａ〜５１ｇ、５２ａ〜５２ｇ、５３ｄ、５３ｆ、５３ｇ、５ｎｅ）を含んでいる制御レジスタ（５０ａ〜５０ｆ）と、を備え、
一つのＣＰＵコアは、複数の切換フラグの値を同時に操作することで、複数のＣＰＵコアの態様を同時に切り換えることを特徴とする。
【０００８】
このように、本開示は、一つのＣＰＵコアが、複数の切換フラグの値を同時に操作することで、複数のＣＰＵコアの態様を同時に切り換えるため、ＣＰＵコアの態様が切り換わるタイミングがずれることを抑制できる。よって、本開示は、切り換わるタイミングが遅れたＣＰＵコアが別の処理を受け付けてしまい、意図しない動作となることを抑制できる。
【０００９】
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態における電子装置の概略構成を示すブロック図である。
【図２】第１実施形態における電子装置の処理動作を示すフローチャートである。
【図３】第１実施形態における電子装置の処理動作を示すタイミングチャートである。
【図４】第２実施形態における電子装置の概略構成を示すブロック図である。
【図５】第３実施形態における電子装置の概略構成を示すブロック図である。
【図６】第４実施形態における電子装置の概略構成を示すブロック図である。
【図７】第５実施形態における電子装置の概略構成を示すブロック図である。
【図８】第６実施形態における電子装置の概略構成を示すブロック図である。
【図９】第６実施形態における電子装置の処理動作を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下において、図面を参照しながら、本開示を実施するための複数の形態を説明する。各形態において、先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において、構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を参照し適用することができる。
【００１２】
（第１実施形態）
図１〜図３を用いて、本実施形態の電子装置に関して説明する。電子装置は、主に、複数のＣＰＵコア１１ａ、１２ａと、制御レジスタ５０ａを備えている。さらに、電子装置は、共有データ記憶部３０、クロック供給部４０などを備えていてもよい。
【００１３】
なお、電子装置は、複数のＣＰＵコア１１ａ、１２ａと、制御レジスタ５０ａを備えたマイクロコンピュータとも言える。電子装置は、例えば、車両に搭載され、車載機器を制御する車載制御装置に適用することができる。この場合、電子装置は、電子制御装置（Electronic Control Unit）と言える。
【００１４】
本実施形態では、一例として、第１ＣＰＵコア１１ａと第２ＣＰＵコア１２ａの二つのＣＰＵコアを備えた電子装置を採用している。しかしながら、本開示は、これに限定されず、三つ以上のＣＰＵコアを備えていてもよい。なお、以下においては、第１ＣＰＵコアを第１コアと略称で記載し、第２ＣＰＵコアを第２コアと略称で記載する。
【００１５】
第１コア１１ａは、第１プロセッサ２１ａを備えており、共有データ記憶部３０、クロック供給部４０、及び制御レジスタ５０ａと接続されている。第２コア１２ａは、第２プロセッサ２２ａを備えており、共有データ記憶部３０、クロック供給部４０、及び制御レジスタ５０ａと接続されている。
【００１６】
各コア１１ａ、１２ａは、クロック供給部４０から供給されるクロックに同期して動作する。本実施形態では、同じクロック供給部４０からクロックが供給される各コア１１ａ、１２ａを採用している。
【００１７】
また、各プロセッサ２１ａ、２２ａは、記憶装置に記憶されたプログラムを個別に実行することで、各種演算処理を実行する。例えば、第１プロセッサ２１ａは、記憶装置に記憶された、第１プロセッサ２１ａ用のプログラムを実行することで、各種演算処理を実行する。同様に、第２プロセッサ２２ａは、記憶装置に記憶された、第２プロセッサ２２ａ用のプログラムを実行することで、各種演算処理を実行する。また、各プロセッサ２１ａ、２２ａは、各種演算処理を実行することで、通常処理、割込み処理、異常処理などを実行する。
【００１８】
また、各コア１１ａ、１２ａは、各プロセッサ２１ａ、２２ａがプログラムを実行することで、態様を切り換える。各コア１１ａ、１２ａがとりうる態様は、例えば、割込み禁止状態、割込み許可状態、省電力状態（ＨＡＬＴ）、非省電力状態、異常処理状態、非異常処理状態などである。なお、態様の切り換えは、各コア１１ａ、１２ａの状態や、各プロセッサ２１ａ、２２ａの処理の切り換えを示している。しかしながら、本開示は、これに限定されず、上記以外の態様であっても採用できる。
【００１９】
本実施形態では、各コア１１ａ、１２ａがとりうる態様の一例として、割込み禁止状態と割込み許可状態とを採用する。よって、各コア１１ａ、１２ａは、各プロセッサ２１ａ、２２ａがプログラムを実行することで、割込み禁止状態と割込み許可状態とで態様を切り換えることができる。
【００２０】
また、各コア１１ａ、１２ａは、後程説明する第１コアＩフラグ５１ａと第２コアＩフラグ５２ａの値に応じて態様を切り換えることができる。つまり、第１コア１１ａは、第１コアＩフラグ５１ａの値に応じて態様を切り換えることができる。同様に、第２コア１２ａは、第２コアＩフラグ５２ａの値に応じて態様を切り換えることができる。詳述すると、第１プロセッサ２１ａは、第１コアＩフラグ５１ａの値に応じて、第１コア１１ａの態様を切り換えることができる。同様に、第２プロセッサ２１ａは、第２コアＩフラグ５２ａの値に応じて、第２コア１２ａの態様を切り換えることができる。
【００２１】
制御レジスタ５０ａは、各コア１１ａ、１２ａに対応して個別に設けられた各コア１１ａ、１２ａの態様の切り換えを制御する複数の切換フラグ５１ａ、５２ａを備えている。制御レジスタ５０ａは、一例として、各コア１１ａ、１２ａに対応して、各コア１１ａ、１２ａの態様を割込み禁止状態と割込み許可状態とで切り換える割込み禁止フラグである第１コアＩフラグ５１ａと第２コアＩフラグ５２ａの二つの切換フラグを含んでいる。
【００２２】
第１コアＩフラグ５１ａは、第１コア１１ａに対応して設けられている。一方、第２コアＩフラグ５２ａは、第２コア１２ａに対応して設けられている。言い換えると、第１コアＩフラグ５１ａは、第１プロセッサ２１ａに対応して設けられている。一方、第２コアＩフラグ５２ａは、第２プロセッサ２２ａに対応して設けられている。なお、以下においては、第１コアＩフラグを第１Ｉフラグと略称で記載し、第２コアＩフラグを第２Ｉフラグと略称で記載する。
【００２３】
例えば、第１プロセッサ２１ａは、第１Ｉフラグ５１ａをセットすることで割込み禁止状態を示す値を設定し、第１Ｉフラグ５１ａをクリアすることで割込み許可状態を示す値を設定すると言える。第１プロセッサ２１ａは、第２Ｉフラグ５２ａに関しても同様に設定することができる。
【００２４】
第１Ｉフラグ５１ａは、第１コア１１ａの第１プロセッサ２１ａから参照可能であり、且つ、第１プロセッサ２１ａから操作可能に構成されている。一方、第２Ｉフラグ５２ａは、第２コア１２ａの第２プロセッサ２２ａから参照可能であり、且つ、第１コア１１ａの第１プロセッサ２１ａから操作可能に構成されている。つまり、第１プロセッサ２１ａは、第１Ｉフラグ５１ａだけでなく、第２Ｉフラグ５２ａに関しても操作可能に構成されている。よって、第１プロセッサ２１ａは、第１Ｉフラグ５１ａと第２Ｉフラグ５２ａとを同時に操作することができる。なお、同時とは、同じクロックサイクルや、同じクロックエッジを示している。
【００２５】
このため、第１プロセッサ２１ａは、第１Ｉフラグ５１ａと第２Ｉフラグ５２ａの値を同時に変更することができる。詳述すると、第１プロセッサ２１ａは、第１Ｉフラグ５１ａと第２Ｉフラグ５２ａに対して、同時に割込み禁止状態を示す値を設定したり、同時に割込み許可状態を示す値を設定したりすることができる。言い換えると、第１プロセッサ２１ａは、第１Ｉフラグ５１ａと第２Ｉフラグ５２ａを同時に割込み許可状態を示す値から割込み禁止状態を示す値に切り換えたり、同時に割込み禁止状態を示す値から割込み許可状態を示す値に切り換えたりすることができる。なお、Ｉフラグ５１ａ、５２ａの値は、１ビット、もしくは数ビットなどを採用できる。
【００２６】
電子装置は、例えば、第１プロセッサ２１ａが同一命令で操作可能なメモリ空間（例えば、同一ｗｏｒｄ内）に、全Ｉフラグ５１ａ、５２ａが配置されている。このため、電子装置は、第１プロセッサ２１ａが第１Ｉフラグ５１ａだけでなく、第２Ｉフラグ５２ａに関しても操作することができる。
【００２７】
このように、電子装置は、第１Ｉフラグ５１ａと第２Ｉフラグ５２ａの値を同時に変更することができるため、第１コア１１ａと第２コア１２ａの態様を同時に切り換えることができる。言い換えると、電子装置は、同じクロックエッジに同期して、第１コア１１ａと第２コア１２ａの態様を変えることができる。
【００２８】
なお、制御レジスタ５０ａは、各コア１１ａ、１２ａの外部に設けられている。よって、電子装置は、第１Ｉフラグ５１ａの値を変更してから第１コア１１ａに作用（伝搬）するまでに、回路的な遅延が発生する可能性がある。同様に、第２Ｉフラグ５２ａの値を変更してから第２コア１２ａに作用するまでに、回路的な遅延が発生する可能性がある。また、第１コア１１ａと第２コア１２ａとで、伝達遅延に時間差がついてしまう可能性がある。この回路的な遅延は、例えば、メモリバスやキャッシュを経由することによって発生する。
【００２９】
このため、電子装置は、第１Ｉフラグ５１ａの変化が第１プロセッサ２１ａに伝搬する時間と、第２Ｉフラグ５２ａの変化が第２プロセッサ２２ａに伝搬する時間とのずれにかかわらず、全コア１１ａ、１２ａの態様を同時に切り換える構成を備えていてもよい。つまり、電子装置は、伝搬に要する時間にずれが生じる場合であっても、第１Ｉフラグ５１ａの値が第１プロセッサ２１ａに作用するのと同時に、第２Ｉフラグ５２ａの値が第２プロセッサ２２ａに作用するように構成されていてもよい。この伝搬時間を考慮した同期方法に関しては、後程説明する。
【００３０】
なお、電子装置は、伝搬に要する時間を考慮する必要がない程度短い場合、第１Ｉフラグ５１ａと第２Ｉフラグ５２ａの値を同時に変更することで、第１コア１１ａと第２コア１２ａの態様を同時に切り換えることができる。よって、本開示は、伝搬時間を考慮した同期方法を採用しなくてもよい。また、伝搬する時間は、各Ｉフラグ５１ａ、５２ａの変化から、各コア１１ａ、１２ａに伝搬するまでの遅延と言い換えることができる。
【００３１】
本実施形態では、第１Ｉフラグ５１ａと第２Ｉフラグ５２ａを第１プロセッサ２１ａが直接的に操作できる例を採用している。しかしながら、本開示は、これに限定されず、第１Ｉフラグ５１ａと第２Ｉフラグ５２ａを第１プロセッサ２１ａが間接的に操作できるものであっても採用できる。さらに、本開示は、第１プロセッサ２１ａのかわりに第２プロセッサ２２ａが第１Ｉフラグ５１ａと第２Ｉフラグ５２ａを操作可能に構成されていてもよい。
【００３２】
共有データ記憶部３０は、各コア１１ａ、１２ａで共有するデータが書き込まれる。共有データ記憶部３０は、例えば、第１コア１１ａからＣＰ２が書き込まれ、第２コア１２ａからＣＰ１が書き込まれる。これは、第１コア１１ａと第２コア１２ａとでタイミングを同期させるためである。
【００３３】
なお、ＣＰは、Check Pointの略称である。そして、ＣＰ１やＣＰ２は、ソフト処理の中のある処理部位（Check Point）を通過したことを示すデータである。また、ＣＰ１やＣＰ２は、共有データ記憶部３０に書き込まれる、待ち合わせコードとしてのデータとも言える。
【００３４】
各コア１１ａ、１２ａは、ある処理部位を通過したことを他コアに知らせるために、共有データ記憶部３０にＣＰ１やＣＰ２を書き込む。本実施形態では、図２に示すように、第１コア１１ａは、ＣＰ１が書き込まれるのを待つとともに、ＣＰ２を書き込む。一方、第２コア１２ａは、ＣＰ２が書き込まれるのを待つとともに、ＣＰ１を書き込む。
【００３５】
ここで、図２、図３を用いて、電子装置の処理動作に関して説明する。ここでは、一例として、電子装置を動作状態から、省電力状態に切り替える処理を採用する。この場合、電子装置は、各コア１１ａ、１２ａが割込み許可状態である通常処理が完了したら、割込み受付不可のスリープ処理に入る前に、全コア１１ａ、１２ａを割込み禁止状態にする必要がある。
【００３６】
ステップＳ１０、Ｓ２０では、各プロセッサ２１ａ、２２ａは通常処理を行う。このとき、各コア１１ａ、１２ａは、割込み許可状態である。すなわち、各コア１１ａ、１２ａは、割込み受付可能である。
【００３７】
ステップＳ１１、Ｓ２１では、各プロセッサ２１ａ、２２ａはタイミング同期処理を行う。このとき、各プロセッサ２１ａ、２２ａは、共有データ記憶部３０を介してハンドシェイクする。ステップＳ２２では、第２プロセッサ２２ａは、共有データ記憶部３０にＣＰ１を書き込む。一方、ステップＳ１２では、第１プロセッサ２１ａは、ＣＰ１になるまで、すなわち、第２プロセッサ２２ａがＣＰ１を書き込むまで共有データ記憶部３０をポーリングする。
【００３８】
ステップＳ２３では、第２プロセッサ２２ａは、ＣＰ２になるまで、すなわち、第１プロセッサ２１ａがＣＰ２を書き込むまで共有データ記憶部３０をポーリングする（図３のタイミングｔ１〜ｔ５）。つまり、第２プロセッサ２２ａは、第１プロセッサ２１ａがＣＰ２を書き込むまで待ち状態となる。
【００３９】
一方、ステップＳ１３では、第１プロセッサ２１ａは、ＣＰ１が書き込まれると、両コア１１ａ、１２ａのＩフラグを操作する。つまり、第１プロセッサ２１ａは、タイミングｔ１に示すように、第１Ｉフラグ５１ａと第２Ｉフラグ５２ａに対して、割込み禁止状態を示す値を同時に設定する。また、電子装置は、第２コア１２ａが待ち状態中に、第１コア１１ａから両コア１１ａ、１２ａのＩフラグを同時にマスク操作すると言える。
【００４０】
そして、第１プロセッサ２１ａは、割込み禁止状態を示す値を同時に設定した後に、ステップＳ１４にて共有データ記憶部３０にＣＰ２を書き込む。このとき、第１プロセッサ２１ａは、タイミングｔ２〜ｔ３まで伝搬待ちをして、タイミングｔ３でＣＰ２を書き込む。よって、両コア１１ａ、１２ａは、タイミングｔ３で同時に割込み禁止状態となっている。なお、第２プロセッサ２２ａは、ＣＰ２が書き込まれると、共有データ記憶部３０のポーリングを終了する。
【００４１】
このように、ここでは、伝搬時間を考慮した同期方法の一例として、伝搬待ちをしてからＣＰ２を書き込む例を採用している。つまり、電子装置は、第１Ｉフラグ５１ａの変化が第１プロセッサ２１ａに伝搬するまでの遅延と、第２Ｉフラグ５２ａの変化が第２プロセッサ２２ａに伝搬するまでの遅延とを、第１コア１１ａと第２コア１２ａとで揃えることでタイミングを同期させている。
【００４２】
ステップＳ１５、Ｓ２４では、各プロセッサ２１ａ、２２ａはスリープ処理を行う。例えば、第１プロセッサ２１ａは、タイミングｔ４でスリープ処理を行う。一方、第２プロセッサ２２ａは、タイミングｔ５でスリープ処理を行う。上記のように、各コア１１ａ、１２ａは、タイミングｔ３で割込み禁止状態となっている。このため、電子装置は、各コア１１ａ、１２ａがスリープ処理を行なう前に、割込み禁止状態とすることができる。よって、電子装置は、各コア１１ａ、１２ａがスリープ処理を行なっている際に、割込み受付不可とすることができる。
【００４３】
このように、電子装置は、一つのＣＰＵコアである第１コア１１ａが、複数のＩフラグの値を同時に操作することで、複数のコア１１ａ、１２ａの態様を同時に切り換えるため、各コア１１ａ、１２ａの態様が切り換わるタイミングがずれることを抑制できる。よって、電子装置は、切り換わるタイミングが遅れたＣＰＵコアが別の処理を受け付けてしまい、意図しない動作となることを抑制できる。つまり、電子装置は、コア１１ａ、１２ａ間のフラグ変化のスリットをなくせると言える。
【００４４】
ここで、比較例の電子装置（以下、単に比較例）と対比して、本実施形態の電子装置の効果を説明する。比較例は、ＣＰＵコア毎に独立してＩフラグを管理する。つまり、比較例は、各ＣＰＵコアにＩフラグが設けられている。この場合、各ＣＰＵコアのＩフラグは、互いに直接操作できない。このため、共有データ記憶部やコア間割込みを通して、間接的に操作するしかない。
【００４５】
従って、比較例は、動作状態から省電力状態に切り替える場合、各ＣＰＵコアでハンドシェイクしながら、順次、コア毎にＩフラグを操作する。例えば、比較例は、通常処理が終了すると、一回目のタイミング同期処理を行なってから第１コアのＩフラグを操作する。次に、比較例は、二回目のタイミング同期処理を行なってから第２コアのＩフラグを操作する。なお、ここでのタイミング同期処理は、第１コアがＣＰ１になるまで共有データ記憶部をポーリングし第２コアがＣＰ１を書き込み、その後、第２コアがＣＰ２になるまで共有データ記憶部をポーリングし第１コアがＣＰ２を書き込む。
【００４６】
そして、比較例は、各Ｉフラグが操作されると、三回目のタイミグ同期処理を行なってからスリープ処理を行う。
【００４７】
このように、比較例は、第１コアにおけるＩフラグの操作から、第２コアにおけるＩフラグの操作までに時間差が生じる。この時間差は、第２コアが別の処理（割込み）を受け付けてしまうスリットになってしまう。また、比較例では、スリットの間に第２コアが割込みを受けてしまうと、デッドロックが発生してしまう可能性がある。さらに、比較例では、スリットの間に第２コアが割込みを受けてしまうと、第１コアも含めて一旦通常処理に戻って通常処理完了後、タイミング同期処理をやり直さないといけない可能性がある。これにより、処理が複雑化し、開発工数増や性能低下につながる可能性がある。なお、比較例では、スリットが発生するため、スリット検証の工数も多くなる可能性がある。このスリット検証では、スリットでどのような処理を実行する可能性があるのか、それぞれの処理によって問題を生じないかを検証する。
【００４８】
これに対して、電子装置は、上記のように、一回のタイミング同期処理で、複数のＩフラグの値を同時に操作することができる。このため、電子装置は、スリットが発生することが防止でき、切り換わるタイミングが遅れたＣＰＵコアが別の処理を受け付けてしまい、意図しない動作となることを抑制できる。従って、電子装置は、デッドロックが発生することや割り込み処理を受け付けてしまった場合の処理複雑化を抑制できる。また、電子装置は、スリットの発生を防止できるため、スリット検証の工数を減らす、あるいは、なくすことができる。
【００４９】
さらに、電子装置は、比較例よりもコア１１ａ、１２ａ間のハンドシェイク処理を減らすことができ、比較例よりも早くスリープ処理を実行でき省電力状態に移行することができる。また、電子装置は、比較例よりもコア１１ａ、１２ａ間のハンドシェイク処理を減らすことができるため、処理性能の低下を抑制できるとともに、消費電力を低減することができる。
【００５０】
電子装置は、車載制御装置に適用した場合、車載バッテリによって動作することになる。この場合、電子装置は、消費電力を低減することで、車載バッテリの電力消費を少なくすることができるため好適である。
【００５１】
なお、電子装置は、一つのＣＰＵコアが、複数の切換フラグの値を同時に操作することで、複数のＣＰＵコアの態様を同時に切り換えるものであれば採用できる。電子装置は、このようにすることで、ＣＰＵコアの態様が切り換わるタイミングがずれることを抑制できる。よって、電子装置は、切り換わるタイミングが遅れたＣＰＵコアが別の処理を受け付けてしまい、意図しない動作となることを抑制できる。
【００５２】
本実施形態では、切換フラグとして、割込み禁止状態と割込み許可状態とを切り換えるためのＩフラグ５１ａ、５２ａを含んだ制御レジスタ５０ａを採用した。しかしながら、本開示は、これに限定されない。この点は、他の実施形態でも同様である。
【００５３】
制御レジスタ５０ａは、各コア１１ａ、１２ａの外部に設けられており、各コア１１ａ、１２ａの態様として省電力状態と非省電力状態の切り換えを制御する切換フラグを含んでいてもよい。この場合、一つの第１コア１１ａは、各切換フラグ５１ａ、５２ａに省電力状態を示す値を同時に操作することで、各コア１１ａ、１２ａの現在の状態にかかわらず、全コア１１ａ、１２ａの態様を同時に省電力状態に切り換える。
【００５４】
比較例では、一旦省電力状態に入ってしまうと、コア間ハンドシェイクでは動作状態に戻すためのトリガを入れられないケースがある。例えば、異常動作によって、Ｉフラグで全割込みマスク、あるいはコア間割り込みマスクの状態に入ってしまう場合。また、例えば、省電力状態にしたいだけなのに、ハンドシェイクのために、一旦省電力状態から復帰させて処理する必要があり、電流が増加する。
【００５５】
本実施形態の電子装置は、各コア１１ａ、１２ａの外部に制御レジスタ５０ａが設けられている。つまり、電子装置は、各コア１１ａ、１２ａの外部から直接省電力状態を制御する機構である。このため、電子装置は、相手コアの現在の状態に関わらず、電子装置全体の省電力状態を同じタイミングで切り換えることができる。
【００５６】
さらに、切換フラグとしては、異常処理状態と非異常処理状態の切り換えを制御する切換フラグや、割込み優先レベルのマスクレベルの切り換えを制御する切換フラグなどを採用できる。この点は、他の実施形態でも同様である。なお、異常処理状態と非異常処理状態の切り換えを制御する切換フラグは、異常処理開始フラグと言い換えることもできる。
【００５７】
以上、本開示の好ましい実施形態について説明した。しかしながら、本開示は、上記実施形態に何ら制限されることはなく、本開示の趣旨を逸脱しない範囲において、種々の変形が可能である。以下に、本開示のその他の形態として、第２〜第６実施形態に関して説明する。上記実施形態及び第２〜第６実施形態は、それぞれ単独で実施することも可能であるが、適宜組み合わせて実施することも可能である。本開示は、実施形態において示された組み合わせに限定されることなく、種々の組み合わせによって実施可能である。
【００５８】
（第２実施形態）
図４を用いて、第２実施形態の電子装置に関して説明する。本実施形態では、主に、上記実施形態と異なる点に関して説明する。本実施形態は、各コア１１ｂ、１２ｂが高速レジスタ６１、６２と、ＯＲ回路７１、７２を備えている点が上記実施形態と異なる。本実施形態では、上記実施形態と同様の箇所に同じ符号を付与する。本実施形態で特に断りのない箇所に関しては、上記実施形態を適用することができる。
【００５９】
本実施形態の電子装置は、主に、複数のＣＰＵコア１１ｂ、１２ｂと、制御レジスタ５０ｂを備えている。さらに、電子装置は、共有データ記憶部３０、クロック供給部４０などを備えていてもよい。
【００６０】
なお、制御レジスタ５０ｂは、制御レジスタ５０ａと異なる符号を付与しているものの、制御レジスタ５０ａと同様の構成を有している。第１コアＩフラグ５１ｂ及び第２コアＩフラグ５２ｂに関しても、第１コアＩフラグ５１ａ及び第２コアＩフラグ５２ａと同様である。
【００６１】
第１ＣＰＵコア１１ｂは、第１プロセッサ２１ｂに加えて、第１高速レジスタ６１、第１ＯＲ回路７１などを備えている。第１高速レジスタ６１は、切換フラグとしての第１Ｉフラグ６１ａを含んでいる。第１Ｉフラグ６１ａは、制御レジスタ５０ｂの第１Ｉフラグ５１ｂと同様、第１コア１１ｂの態様の切り換えを制御するものである。第１Ｉフラグ６１ａ、５１ｂは、ともに第１プロセッサ２１ｂによって操作される。
【００６２】
第２ＣＰＵコア１２ｂは、第２プロセッサ２２ｂに加えて、第２高速レジスタ６２、第２ＯＲ回路７２などを備えている。第２高速レジスタ６２は、切換フラグとしての第２コアＩフラグ６２ａを含んでいる。第２Ｉフラグ６２ａは、制御レジスタ５０ｂの第２Ｉフラグ５２ｂと同様、第２コア１２ｂの態様の切り換えを制御するものである。第２Ｉフラグ６２ａ、５２ｂは、ともに第２プロセッサ２２ｂによって操作される。
【００６３】
第１高速レジスタ６１は、第１コア１１ｂ内に設けられている。このため、第１プロセッサ２１ｂは、第１コア１１ｂの外部に設けられた制御レジスタ５０ｂの第１Ｉフラグ５１ｂよりも高速に第１Ｉフラグ６１ａを操作することができる。
【００６４】
さらに、第１Ｉフラグ６１ａは、第１コア１１ｂ内に設けられた第１高速レジスタ６１に含まれているため、第１コア１１ｂの外部に設けられた制御レジスタ５０ｂの第１Ｉフラグ５１ｂよりも高速に第１コア１１ｂの態様を切り換えることができる。つまり、第１Ｉフラグ６１ａは、第１フラグ５１ｂよりも早く、第１プロセッサ２１ｂに値の変化を作用させることができる。また、第１Ｉフラグ６１ａは、第１Ｉフラグ５１ｂよりも、第１プロセッサ２１ｂを高速動作させるとも言える。これは、Ｉフラグ６１ａ、６２ａがコア１１ｂ、１２ｂ内に設けられているため、値の変化がプロセッサ２１ｂ、２２ｂに作用する際に、伝播遅延やバスブリッジを介した操作による影響を受けにくいためである。第２高速レジスタ６２、第２Ｉフラグ６２ａに関しても同様である。
【００６５】
なお、各Ｉフラグ６１ａ、６２ａは、各Ｉフラグ５１ｂ、５２ｂと区別するために、コア内第１フラグ６１ａ、コア内第２フラグ６２ａと言い換えることもできる。
【００６６】
第１高速レジスタ６１及び制御レジスタ５０ｂは、第１ＯＲ回路７１を介して第１プロセッサ２１ｂと接続されている。つまり、第１プロセッサ２１ｂは、第１ＯＲ回路７１を介して、第１Ｉフラグ６１ａ、５１ｂの値が作用すると言える。第１プロセッサ２１ｂは、第１Ｉフラグ６１ａ、５１ｂの少なくとも一方を操作することで、態様を切り換えることができる。
【００６７】
同様に、第２高速レジスタ６２及び制御レジスタ５０ｂは、第２ＯＲ回路７２を介して第２プロセッサ２２ｂと接続されている。つまり、第２プロセッサ２２ｂは、第２ＯＲ回路７２を介して、第２Ｉフラグ６２ａ、５２ｂの値が作用すると言える。第２プロセッサ２２ｂは、第２Ｉフラグ６２ａ、５２ｂの少なくとも一方を操作することで、態様を切り換えることができる。
【００６８】
第１コア１１ｂは、全コア１１ｂ、１２ｂの態様を同時に切り換える場合、上記実施形態と同様に、制御レジスタ５０ｂのＩフラグ５１ｂ、５２ｂを同時に操作する。Ｉフラグ５１ｂ、５２ｂの値の変化は、ＯＲ回路７１、７２を介して、各プロセッサ２１ｂ、２２ｂに作用する。これによって、第１コア１１ｂは、第１コア１１ｂと第２コア１２ｂの態様を同時に切り換えることができる。
【００６９】
さらに、各コア１１ｂ、１２ｂは、自コア１１ｂ、１２ｂの態様のみを切り換える場合、自ＣＰＵコア１１ｂ、１２ｂの高速レジスタ６１、６２における切換フラグ６１ａ、６２ａの値を操作する。詳述すると、第１プロセッサ２１ｂは、第１コア１１ｂの態様のみを切り換える場合、第１フラグ６１ａのみを操作する。第１フラグ６１ａの値の変化は、第１コア１１ｂ内において、第１ＯＲ回路７１を介して、第１プロセッサ２１ｂに作用する。同様に、第２プロセッサ２２ｂは、第２コア１２ｂの態様のみを切り換える場合、第２フラグ６２ａのみを操作する。
【００７０】
上記のように、各Ｉフラグ６１ａ、６２ａは、各Ｉフラグ５１ｂ、５２ｂよりも早く、各プロセッサ２１ｂ、２２ｂに値の変化を作用させることができる。このため、各コア１１ｂ、１２ｂは、自コア１１ｂ、１２ｂの態様のみを切り換える場合、第１コア１１ｂと第２コア１２ｂの態様を同時に切り換える場合よりも高速に、第１コア１１ｂや第２コア１２ｂの態様を切り換えることができる。なお、本実施形態の電子装置は、第１実施形態と同様の効果を奏することができる。
【００７１】
（第３実施形態）
図５を用いて、第３実施形態の電子装置に関して説明する。本実施形態では、主に、第１実施形態と異なる点に関して説明する。本実施形態は、制御レジスタ５０ｃが状態切換許可フラグ９１、９２を含んでいる点が上記実施形態と異なる。本実施形態では、上記実施形態と同様の箇所に同じ符号を付与する。本実施形態で特に断りのない箇所に関しては、上記実施形態を適用することができる。
【００７２】
本実施形態の電子装置は、主に、複数のＣＰＵコア１１ｃ、１２ｃと、制御レジスタ５０ｃと、ＡＮＤ回路８１〜８３を備えている。さらに、電子装置は、共有データ記憶部３０、クロック供給部４０などを備えていてもよい。なお、第１コアＩフラグ５１ｃ及び第２コアＩフラグ５２ｃは、第１実施形態と異なる符号を付与しているものの、第１コアＩフラグ５１ａ及び第２コアＩフラグ５２ａと同様である。
【００７３】
第１ＣＰＵコア１１ｃは、第１プロセッサ２１ｃなどを備えている。第２ＣＰＵコア１２ｃは、第２プロセッサ２２ｃなどを備えている。
【００７４】
制御レジスタ５０ｃは、Ｉフラグ５１ｃ、５２ｃに加えて、第１コア状態切換許可フラグ９１、第２コア状態切換許可フラグ９２を含んでいる。以下においては、第１コア状態切換許可フラグを第１許可フラグと略称で記載し、第２コア状態切換許可フラグを第２許可フラグと略称で記載する。許可フラグ９１、９２は、状態フラグに相当する。
【００７５】
第１許可フラグ９１は、第１コア１１ｃ（第１プロセッサ２１ｃ）によって操作され、第１コア１１ａの態様の切り換えが許可状態か禁止状態かを設定可能なフラグである。つまり、第１コア１１ｃは、第１許可フラグ９１に、切り換えが許可状態であることを示す値の設定と、この値をクリアすることができる。この場合、第１許可フラグ９１は、値がクリアされることで、切り換えが禁止状態であることを示している。同様に、第２許可フラグ９２は、第２コア１２ｃ（第２プロセッサ２２ｃ）によって操作され、第２コア１２ａの態様の切り換えが許可状態か禁止状態かを設定可能なフラグである。
【００７６】
第１ＡＮＤ回路８１は、入力端子に第３ＡＮＤ回路８３と第１Ｉフラグ５１ｃとが接続され、出力端子が第１プロセッサ２１ｃに接続されている。第２ＡＮＤ回路８２は、入力端子に第３ＡＮＤ回路８３と第２Ｉフラグ５２ｃとが接続され、出力端子が第２プロセッサ２２ｃに接続されている。そして、第３ＡＮＤ回路８３は、入力端子に第１許可フラグ９１と第２許可フラグ９２とが接続され、出力端子が第１ＡＮＤ回路８１と第２ＡＮＤ回路８２に接続されている。ＡＮＤ回路８１〜８３は、切換保留部に相当する。
【００７７】
また、第１ＡＮＤ回路８１と第２ＡＮＤ回路８２は、全コア１１ｃ、１２ｃが態様を切り換え可能になるまで、先に切り換え可能になったＣＰＵコアを待たせておく機構と言える。つまり、第１ＡＮＤ回路８１と第２ＡＮＤ回路８２は、全コア１１ｃ、１２ｃが切り換え許可状態になるまで、先に切り換え許可状態になったＣＰＵコアを待たせておく機構とも言える。一方、第３ＡＮＤ回路８３は、第１プロセッサ２１ｃからの態様の切り換え要求（指示）をキューイングする機構と言える。
【００７８】
各コア１１ｃ、１２ｃは、態様を切り換えられると困る処理を開始する場合、許可フラグ９１、９２をクリア、すなわち、許可フラグ９１、９２に切り換え禁止状態を示す値を設定する。また、各コア１１ｃ、１２ｃは、態様を切り換えられても困らない場合、許可フラグ９１、９２をセット、すなわち、許可フラグ９１、９２に切り換え許可状態を示す値を設定する。
【００７９】
ここで、電子装置の処理動作の一例を説明する。初期状態として、第１Ｉフラグ５１ｃと第２Ｉフラグ５２ｃの両方がセットされ、割込み禁止状態を示す値が設定されているものとする。
【００８０】
まず、第２コア１２ｃは、切り換え禁止状態、すなわち、態様を切り替えられては困る処理（割込み禁止処理）を開始するので、第２プロセッサ２２ｃが第２許可フラグ９２をクリアする（ステップＳ１）。一方、第１コア１１ｃは、切り換え許可状態なので、第１許可フラグ９１をセットする（ステップＳ２）。
【００８１】
次に、第１プロセッサ２１ｃは、第１Ｉフラグ５１ｃと第２Ｉフラグ５２ｃの両方をクリアして、割込み許可状態を示す値を設定する（ステップＳ３）。この時点では、第２許可フラグ９２がクリアされているので、コア１１ｃ、１２ｃの態様は切り替わらない。
【００８２】
そして、第２プロセッサ２２ｃは、ステップＳ１で開始した処理が終了し、態様の切り換えが可能となったので、第２許可フラグ９２をセットする（ステップＳ４）。
【００８３】
電子装置は、この時点で、全コア１１ｃ、１２ｃが切り換え許可状態となったので、全コア１１ｃ、１２ｃが同時に割込み許可状態に切り換わる。
【００８４】
このように、電子装置は、第１コア１１ｃが複数のＩフラグ５１ｃ、５２ｃの値を同時に操作し、且つ、許可フラグ９１、９２に全コア１１ｃ、１２ｃが許可状態であることが設定されている場合に、複数のコア１１ｃ、１２ｃの態様を同時に切り換える。さらに、電子装置は、第１コア１１ｃが複数のＩフラグ５１ｃ、５２ｃの値を同時に操作し、且つ、許可フラグ９１、９２に少なくとも一つのＣＰＵコアが切り換え禁止状態であることが設定されている場合に、複数のコア１１ｃ、１２ｃの態様の切り換えを保留する。つまり、電子装置は、態様の切り換えをペンディングする機能を備えていると言える。
【００８５】
電子装置は、第１プロセッサ２１ｃがＩフラグ５１ｃ、５２ｃの値を同時に切り換えたとしても、態様の切り換えが禁止状態のＣＰＵコアが一つでもあれば、態様の切り換えをペンディングすることができる。本実施形態では、第１コア１１ｃと第２コア１２ｃの少なくとも一方が、態様の切り換えが禁止状態であれば、態様の切り換えをペンディングすることができる。よって、電子装置は、態様の切り換えが禁止状態であるにもかかわらず、ＣＰＵコアの態様を切り換えてしまうことを抑制できる。また、電子装置は、態様の切り換えが禁止状態であるＣＰＵコアの態様が切り換わってしまい、意図しない動作をしてしまうことを抑制できる。
【００８６】
さらに、電子装置は、第１コア１１ｃがＩフラグ５１ｃ、５２ｃの値を同時に切り換え、且つ、全てのコア１１ｃ、１２ｃにおいて態様の切り換えが許可状態になっていた場合、複数のコア１１ａ、１２ａの態様を同時に切り換えることができる。なお、本実施形態の電子装置は、第１実施形態と同様の効果を奏することができる。
【００８７】
（第４実施形態）
図６を用いて、第４実施形態の電子装置に関して説明する。本実施形態では、主に、第１実施形態と異なる点に関して説明する。本実施形態は、第３ＣＰＵコア１３ｄ及び記憶装置２００を備えている点が上記実施形態と異なる。本実施形態では、上記実施形態と同様の箇所に同じ符号を付与する。本実施形態で特に断りのない箇所に関しては、上記実施形態を適用することができる。
【００８８】
本実施形態の電子装置は、主に、複数のＣＰＵコア１１ｄ〜１３ｄと、制御レジスタ５０ｄと、記憶装置２００を備えている。さらに、電子装置は、クロック供給部４０などを備えていてもよい。なお、第１コアＩフラグ５１ｄ及び第２コアＩフラグ５２ｄは、第１実施形態と異なる符号を付与しているものの、第１コアＩフラグ５１ａ及び第２コアＩフラグ５２ａと同様である。
【００８９】
第１ＣＰＵコア１１ｄは、第１プロセッサ２１ｄなどを備えている。第２ＣＰＵコア１２ｄは、第２プロセッサ２２ｄなどを備えている。そして、第３ＣＰＵコア１３ｄは、第３プロセッサ２３ｄなどを備えている。制御レジスタ５０ｄは、Ｉフラグ５１ｄ、５２ｄに加えて、第３コア１３ｄ（第３プロセッサ２３ｄ）に対応して設けられた第３Ｉフラグ５３ｄを含んでいる。
【００９０】
第１プロセッサ２１ｄは、制御レジスタ５０ｄのＩフラグ５１ｄ、５２ｄに加えて、第３Ｉフラグ５３ｄを同時に操作することができる。また、第３プロセッサ２３ｄは、第１プロセッサ２１ｄと同様、制御レジスタ５０ｄのＩフラグ５１ｄ〜５３ｄを同時に操作することができる。
【００９１】
記憶装置２００は、Ｉフラグ５１ｄ〜５３ｄの値を記憶（保持）可能に構成されている。つまり、記憶装置２００は、第１コア１１ｄあるいは第３コア１３ｄが、複数のＩフラグ５１ｄ〜５３ｄの値を同時に操作する際に、操作直前の各Ｉフラグ５１ｄ〜５３ｄの値を保存する記憶装置２００は、記憶部に相当する。
【００９２】
記憶装置２００は、第１制御データ値２１１、第２制御データ値２１２、第ｎ制御データ値２１３を記憶可能に構成されている。例えば、記憶装置２００は、あるタイミングで、第１コア１１ｄあるいは第３コア１３ｄが、複数のＩフラグ５１ｄ〜５３ｄの値を同時に操作する際に、操作直前の各Ｉフラグ５１ｄ〜５３ｄの値が第１制御データ値２１１として記憶される。また、記憶装置２００は、別のあるタイミングで、第１コア１１ｄあるいは第３コア１３ｄが、複数のＩフラグ５１ｄ〜５３ｄの値を同時に操作する際に、操作直前の各Ｉフラグ５１ｄ〜５３ｄの値が第２制御データ値２１２として記憶される。第ｎ制御データ値２１３に関しても同様である。
【００９３】
また、電子装置は、第１コア１１ｄあるいは第３コア１３ｄが、操作したＩフラグ５１ｄ〜５３ｄの値をクリアする際に、記憶装置２００に制御データ値として保存されている各Ｉフラグ５１ｄ〜５３ｄの値を読み出して制御レジスタに設定する。なお、第１コア１１ｄ、第３コア１３ｄは、Ｉフラグ５１ｄ〜５３ｄのセットとクリアをワンセットで行う。
【００９４】
ここで、電子装置の処理動作の一例を説明する。初期状態として、第１Ｉフラグ５１ｄと第２Ｉフラグ５２ｄの両方がクリアされ、割込み許可状態を示す値が設定されているものとする。
【００９５】
まず、第１コア１１ｄがＩフラグ５１ｄ〜５３ｄをセットし、割込み禁止状態を示す値を設定する（ステップＳ１ａ）。このとき、電子装置は、セット直前の制御レジスタ５０ｄの値、すなわちＩフラグ５１ｄ〜５３ｄの値が、第１制御レジスタ値として記憶装置２００に保存される。ここでは、割込み許可状態を示す値が第１制御レジスタ値として記憶装置２００に保存される。
【００９６】
次に、第３コア１３ｄがＩフラグ５１ｄ〜５３ｄをセットし、割込み禁止状態を示す値を設定する（ステップＳ２ａ）。このとき、電子装置は、セット直前の制御レジスタ５０ｄの値、すなわちＩフラグ５１ｄ〜５３ｄの値が、第２制御レジスタ値として記憶装置２００に保存される。ここでは、割込み禁止状態を示す値が第２制御レジスタ値として記憶装置２００に保存される。
【００９７】
次に、第１コア１１ｄがＩフラグ５１ｄ〜５３ｄをクリアし、割込み許可状態を示す値を設定する（ステップＳ３ａ）。このとき、電子装置は、セット直前の制御レジスタ５０ｄの値である第２制御レジスタ値が記憶装置２００から取り出されて、制御レジスタ５０ｄのＩフラグ５１ｄ〜５３ｄに設定される。つまり、Ｉフラグ５１ｄ〜５３ｄには、割込み禁止状態を示す値が設定される。
【００９８】
このとき、第１コア１１ｄがＩフラグ５１ｄ〜５３ｄをクリアしているものの、第３コア１３ｄは、ステップＳ２ａでＩフラグ５１ｄ〜５３ｄをセットしているため、割込み禁止状態を維持したいものとみなせる。そこで、電子装置は、割込み禁止状態を示す値である第２制御レジスタ値が記憶装置２００から取り出されて、Ｉフラグ５１ｄ〜５３ｄに設定されるため、各コア１１ｄ〜１３ｄの割込み禁止状態を維持することができる。
【００９９】
次に、第３コア１３ｄがＩフラグ５１ｄ〜５３ｄをクリアし、割込み許可状態を示す値を設定する（ステップＳ４ａ）。このとき、電子装置は、セット直前の制御レジスタ５０ｄの値である第１制御レジスタ値が記憶装置２００から取り出されて、制御レジスタ５０ｄのＩフラグ５１ｄ〜５３ｄに設定される。このとき、電子装置は、各コア１１ｄ〜１３ｄの割込み許可状態となる。
【０１００】
このように、電子装置は、Ｉフラグ５１ｄ〜５３ｄを切り換える直前のＩフラグ５１ｄ〜５３ｄの値を保管しておいて、処理後、Ｉフラグ５１ｄ〜５３ｄの値を切り換える直前の値に戻せる機能を備えていると言える。言い換えると、電子装置は、ネスト機能を備えている。
【０１０１】
電子装置は、割込み禁止状態をネストすることで、排他を保つことができる。つまり、電子装置は、ステップＳ３ａにおいて、各コア１１ｄ〜１３ｄの割込み禁止状態を維持することができる。また、電子装置は、第１実施形態と同様の効果を奏することができる。
【０１０２】
制御レジスタ５０ｄは、各コア１１ｄ〜１３ｄの態様として割込み優先レベルのマスクレベル（多ビット）の切り換えを制御する切換フラグを含んでいてもよい。また、電子装置は、このような構成で、且つ、ネスト機能を備えていてもよい。この場合であっても、電子装置は、上記と同様の効果を奏することができる。
【０１０３】
（第５実施形態）
図７を用いて、第５実施形態の電子装置に関して説明する。本実施形態では、主に、第１実施形態と異なる点に関して説明する。本実施形態は、ＣＰＵコアの数と、データレジスタ３００及びトリガレジスタ４００を備えている点が上記実施形態と異なる。本実施形態では、上記実施形態と同様の箇所に同じ符号を付与する。本実施形態で特に断りのない箇所に関しては、上記実施形態を適用することができる。
【０１０４】
本実施形態の電子装置は、主に、複数のＣＰＵコア１１ｅ〜１ｎｅと、制御レジスタ５０ｅと、データレジスタ３００と、トリガレジスタ４００を備えている。さらに、電子装置は、クロック供給部４０などを備えていてもよい。
【０１０５】
なお、第１コアＩフラグ５１ｅ及び第２コアＩフラグ５２ｅは、第１実施形態と異なる符号を付与しているものの、第１コアＩフラグ５１ａ及び第２コアＩフラグ５２ａと同様である。
【０１０６】
第１ＣＰＵコア１１ｅは、第１プロセッサ２１ｅなどを備えている。第２ＣＰＵコア１２ｅは、第２プロセッサ２２ｅなどを備えている。そして、第ｎＣＰＵコア１ｎｅは、第ｎプロセッサ２ｎｅなどを備えている。ｎは、例えば、４以上の自然数などを採用できる。つまり、電子装置は、上記実施形態よりも、十分にＣＰＵコアの数が多いものとする。
【０１０７】
制御レジスタ５０ｅは、Ｉフラグ５１ｅ、５２ｅに加えて、第ｎコア１ｎｅ（第ｎプロセッサ２ｎｅ）に対応して設けられた第ｎＩフラグ５ｎｅを含んでいる。
【０１０８】
第１プロセッサ２１ｅは、制御レジスタ５０ｅのＩフラグ５１ｅ、５２ｅに加えて、第ｎＩフラグ５ｎｅを同時に操作することができる。つまり、第１プロセッサ２１ｅは、制御レジスタ５０ｅの全てのＩフラグ５１ｅ〜５ｎｅを同時に操作することができる。
【０１０９】
電子装置は、ＣＰＵコア数が多い場合、または、Ｉフラグが多ビットの場合、ｗｏｒｄサイズに収まらず、アトミック操作できない可能性がある。つまり、電子装置は、ＣＰＵコアの数が増加することに伴って、制御レジスタ５０ｅのＩフラグの数も増加し、制御レジスタ５０ｅへの書き込み量が増加する。Ｉフラグのビット数が増える場合も同様である。電子装置は、書き込み量が１命令で制御レジスタ５０ｅに書き込めるサイズ（例えば、４Ｂｙｔｅ）を超えてしまうと、複数の命令で制御レジスタ５０ｅに書き込む必要がある。
【０１１０】
よって、電子装置は、同じクロックサイクルで複数コア１１ｅ〜１ｎｅの態様を切り換えることができない。また、電子装置は、命令間に別の処理が割り込まれる可能性が生じるためスリットが発生する可能性がある。
【０１１１】
そこで、本実施形態では、ＣＰＵコア数が多い場合、または、Ｉフラグが多ビットの場合であっても、同じクロックサイクルで複数コア１１ｅ〜１ｎｅの態様を切り換えられる構成を備えている。
【０１１２】
データレジスタ３００は、第１プロセッサ２１ｅによって操作される第１コアＩフラグ３１１、第２コアＩフラグ３１２、第ｎコアＩフラグ３１ｎを含んでいる。データレジスタ３００には、コア１１ｅ〜１ｎｅの数に対応して、Ｉフラグ３１１〜３１ｎが設けられている。また、Ｉフラグ３１１〜３１ｎのそれぞれは、Ｉフラグ５１ｅ〜５ｎｅのそれぞれに対応している。データレジスタ３００は、制御レジスタ５０ｅにおける複数のＩフラグ５１ｅ〜５ｎｅに設定する値を設定可能に構成されている。例えば、第１Ｉフラグ３１１には、第１Ｉフラグ５１ｅに設定される値が設定される。
【０１１３】
トリガレジスタ４００は、トリガビット４１０を含んでいる。トリガビット４１０は、第１コア１１ｅによって操作可能である。トリガレジスタ４００は、データレジスタ３００の値、すなわち、データレジスタ３００におけるＩフラグ３１１〜３１ｎの値を、制御レジスタ５０ｅにおける複数のＩフラグ５１ｅ〜５ｎｅにセットすることを示すトリガビット４１０をセット可能である。また、トリガレジスタ４００は、トリガビット４１０がセットされると、データレジスタ３００におけるＩフラグ３１１〜３１ｎの値を、制御レジスタ５０ｅにおける複数のＩフラグ５１ｅ〜５ｎｅにセットする。
【０１１４】
ここで、電子装置の処理動作の一例を説明する。まず、第１プロセッサ２１ｅは、制御レジスタ５０ｅに書き込みたいデータを、データレジスタ３００に設定する（ステップＳ１ｂ）。つまり、第１プロセッサ２１ｅは、制御レジスタ５０ｅのＩフラグ５１ｅ〜５ｎｅに設定したい値を、データレジスタ３００のＩフラグ３１１〜３１ｎに設定する。詳述すると、第１プロセッサ２１ｅは、Ｉフラグ５１ｅに設定したい値をＩフラグ３１１に設定し、Ｉフラグ５２ｅに設定したい値をＩフラグ３１２に設定し、Ｉフラグ５ｎｅに設定したい値をＩフラグ３１ｎに設定する。このとき、第１プロセッサ２１ｅは、複数命令サイクルに分けて、データレジスタ３００に設定しても良い。
【０１１５】
次に、第１プロセッサ２１ｅは、トリガレジスタ４００のトリガビット４１０をセットする（ステップＳ２ｂ）。電子装置は、例えば、トリガレジスタ４００のトリガビット４１０がセットされると、データレジスタ３００に設定されている値が制御レジスタ５０ｅに反映されるようにハードウェア回路が設けられている。
【０１１６】
これによって、電子装置は、トリガビット４１０をセットした次の命令サイクルで、データレジスタ３００に設定されている値を制御レジスタ５０ｅに反映させる。つまり、電子装置は、データレジスタ３００のＩフラグ３１１〜３１ｎに設定されている値を、制御レジスタ５０ｅのＩフラグ５１ｅ〜５ｎｅに設定する。
【０１１７】
よって、電子装置は、データレジスタ３００から複数のＩフラグ５１ｅ〜５ｎｅの値を同時に操作することができる。このため、電子装置は、同じクロックサイクルで複数コア１１ｅ〜１ｎｅの態様を切り換えられる。つまり、第１プロセッサ２１ｅは、Ｉフラグ５１ｅ〜５ｎｅの値を直接的に設定するのではなく、データレジスタ３００を介して間接的に設定する。
【０１１８】
このように、電子装置では、ＣＰＵコア数が多い場合、または、Ｉフラグが多ビットの場合であっても、同じクロックサイクルで複数コア１１ｅ〜１ｎｅの態様を切り換えることができる。また、電子装置は、上記実施形態と同様の効果を奏することがきる。
【０１１９】
（第６実施形態）
図８、図９を用いて、第６実施形態の電子装置に関して説明する。本実施形態では、主に、第１実施形態と異なる点に関して説明する。本実施形態は、ＣＰＵコアの数と、制御レジスタ５０ｆの構成が上記実施形態と異なる。本実施形態では、上記実施形態と同様の箇所に同じ符号を付与する。本実施形態で特に断りのない箇所に関しては、上記実施形態を適用することができる。
【０１２０】
本実施形態の電子装置は、主に、複数のＣＰＵコア１１ｆ〜１３ｆと、制御レジスタ５０ｆを備えている。さらに、電子装置は、クロック供給部４０などを備えていてもよい。
【０１２１】
第１ＣＰＵコア１１ｆは、第１プロセッサ２１ｆなどを備えている。第２ＣＰＵコア１２ｆは、第２プロセッサ２２ｆなどを備えている。そして、第３ＣＰＵコア１３ｆは、第３プロセッサ２３ｆなどを備えている。第１プロセッサ２１ｆ〜２３ｆは、異常を検出する機能を備えている。
【０１２２】
制御レジスタ５０ｆは、各コア１１ｆ〜１３ｆに対応して個別に設けられた各コア１１ｆ〜１３ｆの態様の切り換えを制御する複数の切換フラグ５１ｆ〜５３ｆ、５１ｇ〜５３ｇを含んでいる。詳述すると、制御レジスタ５０ｆは、各コア１１ｆ〜１３ｆの態様を省電力状態と非省電力状態とで切り換える第１コアＨＡＬＴ状態フラグ５１ｆ、第２コアＨＡＬＴ状態フラグ５２ｆ、第３コアＨＡＬＴ状態フラグ５３ｆを含んでいる。さらに、制御レジスタ５０ｆは、各コア１１ｆ〜１３ｆの態様を異常処理状態と非異常処理状態とで切り換える第１コア異常処理開始フラグ５１ｇ、第２コア異常処理開始フラグ５２ｇ、第３コア異常処理開始フラグ５３ｇを含んでいる。
【０１２３】
なお、以下においては、第１コアＨＡＬＴ状態フラグを第１省電力フラグ、第２コアＨＡＬＴ状態フラグを第２省電力フラグ、第３コアＨＡＬＴ状態フラグを第３省電力フラグと略称で記載する。また、以下においては、第１コア異常処理開始フラグを第１異常処理フラグ、第２コア異常処理開始フラグを第２異常処理フラグ、第３コア異常処理開始フラグを第３異常処理フラグと略称で記載する。
【０１２４】
第１省電力フラグ５１ｆと第１異常処理フラグ５１ｇは、第１コア１１ｆ（第１プロセッサ２１ｆ）に対応して設けられている。第２省電力フラグ５２ｆと第２異常処理フラグ５２ｇは、第１コア１２ｆ（第２プロセッサ２２ｆ）に対応して設けられている。第３省電力フラグ５３ｆと第３異常処理フラグ５３ｇは、第１コア１３ｆ（第３プロセッサ２３ｆ）に対応して設けられている。
【０１２５】
なお、制御レジスタ５０ｆは、フラグ間に優先順位が決められるように構成されていてもよい。本実施形態では、一例として、Ｉフラグよりも省電力フラグ５１ｆ〜５３ｆ及び異常処理フラグ５１ｇ〜５３ｇの方が、優先度が高い例を採用する。
【０１２６】
第１プロセッサ２１ｆは、例えば、第１省電力フラグ５１ｆをセットすることで省電力状態を示す値を設定し、第１省電力フラグ５１ｆをクリアすることで非省電力状態を示す値を設定すると言える。また、第１プロセッサ２１ｆは、第１異常処理フラグ５１ｇをセットすることで異常処理状態を示す値を設定し、第１異常処理フラグ５１ｇをクリアすることで非異常処理状態を示す値を設定すると言える。言い換えると、第１プロセッサ２１ｆは、第１異常処理フラグ５１ｇをセットすることで異常処理の開始を示す値を設定すると言える。
【０１２７】
他の省電力フラグ５２ｆ、５３ｆ、他の異常処理フラグ５２ｇ、５３ｇに関しても同様に設定することができる。また、電子装置は、第３プロセッサ２３ｆも各フラグ５１ｆ〜５３ｆ、５１ｇ〜５３ｇを設定することができる。
【０１２８】
このように、電子装置は、第１プロセッサ２１ｆまたは第３プロセッサ２３ｆが同一命令で操作可能なメモリ空間(例えば、同一ｗｏｒｄ内）に省電力フラグ５１ｆ〜５３ｆ、異常処理フラグ５１ｇ〜５３ｇが配置されている。これによって、第１プロセッサ２１ｆまたは第３プロセッサ２３ｆは、全ての切換フラグ５１ｆ〜５３ｆ、５１ｇ〜５３ｇを同時に操作できる。
【０１２９】
また、第１省電力フラグ５１ｆと第１異常処理フラグ５１ｇは、第１プロセッサ２１ｆから参照可能であり、且つ、第１プロセッサ２１ｆまたは第３プロセッサ２３ｆから操作可能に構成されている。一方、第２省電力フラグ５２ｆと第２異常処理フラグ５２ｇは、第２プロセッサ２２ｆから参照可能であり、且つ、第１プロセッサ２１ｆまたは第３プロセッサ２３ｆから操作可能に構成されている。同様に、第３省電力フラグ５３ｆと第３異常処理フラグ５３ｇは、第３プロセッサ２３ｆから参照可能であり、且つ、第１プロセッサ２１ｆまたは第３プロセッサ２３ｆから操作可能に構成されている。
【０１３０】
つまり、第１プロセッサ２１ｆは、第１省電力フラグ５１ｆだけでなく、第２省電力フラグ５２ｆ、第３省電力フラグ５３ｆに関しても操作可能に構成されている。よって、第１プロセッサ２１ｆは、第１省電力フラグ５１ｆ、第２省電力フラグ５２ｆ、第３省電力フラグ５３ｆを同時に操作することができる。また、第１プロセッサ２１ｆは、異常処理フラグ５１ｇ〜５３ｇに関しても、同時に操作することができる。なお、第３プロセッサ２３ｆは、第１プロセッサ２１ｆと同様に操作できる。このように、第１プロセッサ２１ｆ及び第３プロセッサ２３ｆは、第１プロセッサ２１ａと同様に切換フラグの値を設定することができる。
【０１３１】
ここで、図９を用いて、電子装置の処理動作に関して説明する。ここでは、一例として、第３ＣＰＵコア１３ｆが異常を検出した場合の処理を採用する。
【０１３２】
ステップＳ１０ｂ、Ｓ２０ｂ、Ｓ３０ｂでは、各プロセッサ２１ｆ〜２３ｆは通常処理を行う。このとき、各コア１１ｆ〜１３ｆは、通常動作状態であり、割込み許可状態である。
【０１３３】
第１プロセッサ２１ｆと第２プロセッサ２２ｆは、通常処理が終了すると、割込み禁止状態とする（ステップＳ１１ｂ、Ｓ２１ｂ）。一方、第３プロセッサ２３ｆは、通常処理が終了すると、異常を検出する（ステップＳ３１ｂ）。
【０１３４】
ステップＳ３２ｂでは、第３プロセッサ２３ｆは、フラグ操作を行う。具体的には、第１異常処理フラグ５１ｇ、第２省電力フラグ５２ｆ、第３省電力フラグ５３ｆを同時にセットする。
【０１３５】
これによって、第１コア１１ｆは、異常時処理を実施する（ステップＳ１２ｂ）。第２コア１２ｆと第３コア１３ｆは、ＨＡＬＴ状態に遷移し、命令の実行停止状態となる（ステップＳ２２ｂ、Ｓ３３ｂ）。
【０１３６】
このように、電子装置は、一つのＣＰＵコアが、複数の切換フラグの値を同時に操作することで、複数のコア１１ｆ〜１３ｆそれぞれを異なる態様に同時に切り換えることができる。本実施形態では、一例として、第３プロセッサ２３ｆが、第１異常処理フラグ５１ｇ、第２省電力フラグ５２ｆ、第３省電力フラグ５３ｆを同時にセットする例を採用している。このようにして、第３プロセッサ２３ｆは、各コア１１ｆ〜１３ｆそれぞれを異なる態様に同時に切り換えることができる。
【０１３７】
また、本実施形態では、Ｉフラグよりも省電力フラグ５１ｆ〜５３ｆ及び異常処理フラグ５１ｇ〜５３ｇの方が、優先度が高い例を採用している。このため、電子装置は、一つのＣＰＵコアが、複数の切換フラグに省電力状態を示す値を同時に操作することで、複数のＣＰＵコアの現在の状態にかからず、複数のＣＰＵコアの態様を同時に省電力状態に切り換えることができる。本実施形態では、一例として、第３プロセッサ２３ｆが、第２コア１２ｆ、第３コア１３ｆの態様を、同時にＨＡＬＴ状態に切り換える例を採用している。なお、電子装置は、一つのＣＰＵコアが、割込み禁止状態のＣＰＵコアに対応する異常処理フラグをセットすることで、そのＣＰＵコアに異常処理を行なわせることができる。
【０１３８】
このように、電子装置は、コア１１ｆ〜１３ｆ毎に異なる状態に切り換えて、異なる処理を実施させることができる。電子装置は、切換フラグの優先順位を制御することで、通常動作の割込み禁止状態を解除して、異常時処理に切り替えることができる。また、電子装置は、第１実施形態と同様の効果を奏することができる。
【０１３９】
なお、同様の状況の場合、共有データ記憶部を介して態様を切り換える第２比較例の電子装置（以下、単に第２比較例）が考えられる。第２比較例では、第３コアが異常を検出した場合、第２コア、第３コアは命令実行を停止（ＨＡＬＴ状態）にし、第１コアは異常時処理を実行させる。この場合、第３コアは、共有データ記憶部に異常発生したことを示す異常発生コードを書き込む。また、第３コアは、コア間割込みで、第１コアと第２コアに通知する。そして、第３コアは、ＨＡＬＴ状態に遷移する。
【０１４０】
一方、第１コア、第２コアは、割込み禁止状態であるため、第３コアからのコア間割込みをペンディングして通常動作を継続する。その後、第１コア、第２コアは、それぞれ、割込み禁止状態が解除されたタイミングで、第３コアからのコア間割込みを受け付けて、共有データ記憶部を参照し、異常発生コードを読み取り、異常時処理を開始する。
【０１４１】
このように、第２比較例は、異常時処理を開始するタイミング、ＨＡＬＴ状態へ遷移するタイミングがコアによって異なる。第２比較例は、このように時間差がつくことで、別の処理が割り込むスリットとなり、別の処理が割り込まれた場合の制御が必要になる。また、第２比較例は、異常が発生していないコアが通常処理を継続している場合の設計が必要となる。さらに、第２比較例は、異常が発生しているコアに、複数の命令ステップを実行させないと、異常時処理に移れない。しかも、すでに異常が発生しているコアは、この複数の命令ステップを正しく実行できない可能性がある。
【０１４２】
これに対して、本実施形態の電子装置は、異常時処理の開始、ＨＡＬＴ状態への遷移を同時とすることができるため、このような課題を解決することができる。さらに、本実施形態の電子装置は、コアに異常が発生していたとしても、制御レジスタの値を操作するだけで、複数のコアの態様を切り換えることができる。
【０１４３】
なお、制御レジスタ５０ｆは、省電力フラグ５１ｆ〜５３ｆ、異常処理フラグ５１ｇ〜５３ｇの他に、第４実施形態と同様、各コア１１ｆ〜１３ｆに対応したＩフラグを含んでいてもよい。この場合、第１プロセッサ２１ｆまたは第３プロセッサ２３ｆは、切換フラグ５１ｆ〜５３ｆ、５１ｇ〜５３ｇに加えて、各コア１１ｆ〜１３ｆに対応したＩフラグを同時に操作できる。
【符号の説明】
【０１４４】
１１ａ〜１１ｆ…第１ＣＰＵコア、１２ａ〜１２ｆ…第２ＣＰＵコア、１３ｄ、１３ｆ…第３ＣＰＵコア、１ｎｅ…第ｎＣＰＵコア、２１ａ〜２１ｆ…第１プロセッサ、２２ａ〜２２ｆ…第２プロセッサ、２３ｄ、２３ｆ…第３プロセッサ、２ｎｅ…第ｎプロセッサ、３０…共有データ記憶部、４０…クロック供給部、５０ａ〜５０ｆ…制御レジスタ、５１ａ〜５１ｅ…第１コアＩフラグ、５２ａ〜５２ｅ…第２コアＩフラグ、５３ｄ…第３コアＩフラグ、５ｎｅ…第ｎコアＩフラグ、５１ｆ…第１コアＨＡＬＴ状態フラグ、５２ｆ…第２コアＨＡＬＴ状態フラグ、５３ｆ…第３コアＨＡＬＴ状態フラグ、５１ｇ…第１コア異常処理開始フラグ、５２ｇ…第２コア異常処理開始フラグ、５３ｇ…第３コア異常処理開始フラグ、６１…第１高速レジスタ、６２…第２高速レジスタ、６１ａ…第１コアＩフラグ、６２ａ…第２コアＩフラグ、７１…第１ＯＲ回路、７２…第２ＯＲ回路、８１…第１ＡＮＤ回路、８２…第２ＡＮＤ回路、８３…第３ＡＮＤ回路、９１…第１コア状態切換許可フラグ、９２…第２コア状態切換許可フラグ、２００…記憶装置、２１１…第１制御データ値、２１２…第２制御データ値、２１３…第ｎ制御データ値、３００…データレジスタ、３１１…第１コアＩフラグ、３１２…第２コアＩフラグ、３１ｎ…第ｎコアＩフラグ、４００…トリガレジスタ、４１０…トリガビット
【図１】
2020009324.tif 000003
【図２】
2020009324.tif 000004
【図３】
2020009324.tif 000005
【図４】
2020009324.tif 000006
【図５】
2020009324.tif 000007
【図６】
2020009324.tif 000008
【図７】
2020009324.tif 000009
【図８】
2020009324.tif 000010
【図９】
2020009324.tif 000011