(57)【特許請求の範囲】
【請求項１】
複数のコア（２）と、
これら複数のコアによりアクセスされ、当該複数のコア間で行われるコア間通信により転送されるデータが先入れ先出し制御で格納されるバッファ（７），及び前記コア間通信を制御するためコアに対して割り込み信号を送信する割り込み送信部（６，１３）を有するコア間通信部（４，１２）と、
前記バッファに格納されているデータの状態に応じて、前記割り込み送信部による割込み信号の送信先を切り換えるための設定レジスタ（８）と、
前記バッファにおけるデータの格納状態を示す状態レジスタと、
を備えるマイクロコンピュータ。
【請求項２】
前記設定レジスタは、前記バッファにデータが書き込み可能な状態である時に割り込み信号を送信するコアを指定するための送信元設定レジスタ（ＳＮＤ）と、
前記バッファに対するデータの書き込みが完了した時に割り込み信号を送信するコアを指定するための受信元設定レジスタ（ＲＣＶ）と、
を備える請求項１記載のマイクロコンピュータ。
【請求項３】
前記設定レジスタ及び前記状態レジスタを複数組備える請求項１又は２記載のマイクロコンピュータ。
【請求項４】
データの送信側となるコアは、前記バッファにデータを書き込み可能な空き領域が存在しなければ、前記空き領域が発生するまで前記バッファに対する書き込み処理を待機する請求項１から３の何れか一項に記載のマイクロコンピュータ。
【請求項５】
前記割り込み送信部は、前記バッファに空き領域が発生すると、データの書き込み待ち状態にあるコアに対して割り込み信号を送信し、
前記送信側となるコアは、前記割り込み信号により前記空き領域の発生を確認する請求項４記載のマイクロコンピュータ。
【請求項６】
前記送信側となるコアは、前記状態レジスタを参照することで前記空き領域の発生の有無を判断する請求項４記載のマイクロコンピュータ。
【請求項７】
データの受信側となるコアは、前記バッファに読み込み可能なデータが存在しなければ、前記バッファにデータが書き込まれるまで前記バッファに対する読み込み処理を待機する請求項１から６の何れか一項に記載のマイクロコンピュータ。
【請求項８】
前記割り込み送信部は、前記バッファに対するデータの書き込みが完了すると、データの読み込み待ち状態にあるコアに対して割り込み信号を送信し、
前記受信側となるコアは、前記割り込み信号により前記書き込み完了を確認する請求項７記載のマイクロコンピュータ。
【請求項９】
前記受信側となるコアは、前記状態レジスタを参照することで前記バッファに対する書き込み完了の有無を判断する請求項７記載のマイクロコンピュータ。
【請求項１０】
請求項１から９の何れか一項に記載のマイクロコンピュータ（１，１１）を備える電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコア間で通信を行うマイクロコンピュータ，及びそのマイクロコンピュータを備えて構成される電子制御装置に関する。
【背景技術】
【０００２】
複数のコアを備えたマイクロコンピュータでは、一般にそれらのコア間で通信を行う必要がある。以下、マイクロコンピュータを「マイコン」と略称する。コア間で通信を行う場合、複数のコアからアクセス可能な共有メモリを設けたり、例えば特許文献１に開示されているように、２つのプロセッサ間で通信するための通信チャネルを用いることが一般に行われている。
【０００３】
この構成では、データを送信するコアは通信チャネルを介して他のコアの記憶領域にアクセスし、データを受信するコアは、対応する記憶領域へアクセスし、記憶されたデータを読み込むことでコア間通信を行う。この場合、送信側のコアがデータを書き込んだり受信側のコアがデータ読み込んでいる間は、他のコアが別の処理を実行することが可能であるからデータ転送を効率良く行うことができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００５−５３４０９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の構成では、効率的な通信が可能である一方で、通信可能なコアの組み合わせが予め決定されてしまう。そのため、複数のコアを含むマイコンで通信するコアの組み合わせを柔軟に変更することができない。
【０００６】
ところで、複数のコア間での通信を柔軟且つ効率的に行う手段の１つとして、共通記憶領域にＦＩＦＯ（Fast In First Out）を用いることが想定される。特許文献１の構成を採用する場合、送信側のコアから直接受信側の記憶領域にアクセス可能なため、共通記憶領域にＦＩＦＯを用いる通信と同様のデータ通信を実現するにはプログラムによる管理が必要となる。したがって、プログラムの処理時間が増加する問題が生じる。
【０００７】
本発明は上記事情に鑑みてなされたものであり、その目的は、プログラムによる管理を不要にして任意のコア間でのＦＩＦＯ通信を実現できるマイクロコンピュータ及びそのマイクロコンピュータを備えている電子制御装置を提供することにある。
【課題を解決するための手段】
【０００８】
請求項１記載のマイクロコンピュータによれば、コア間通信部が備えるバッファは、複数のコアによりアクセスされ、これらの間で行われるコア間通信により転送されるデータが先入れ先出し制御で格納される。そして、割り込み送信部は、コア間通信を制御するためコアに対して割り込み信号を送信する。このように構成すれば、複数のコア間で行う通信により転送されるデータを、先入れ先出し制御でバッファに格納することができ、且つそのバッファを介して行うコア間の転送を割り込みで制御できるので、各コアによる前記転送に関するプログラムでの管理が不要になり、ＦＩＦＯ通信を容易に実現できる。
【０００９】
また、請求項１記載のマイクロコンピュータによれば、設定レジスタにより指定を行うことで、バッファに格納されているデータの状態に応じて割り込み送信部による割込み信号の送信先を切り換える。したがって、前記送信先のコアは、受信するべきデータがバッファに格納されたことを割り込みによって認識できる。また、状態レジスタは、バッファにおけるデータの格納状態を示すので、コアは、バッファに対するデータの読み書きが完了しなかった際に、状態レジスタを参照することでバッファの状態を認識できる。
【００１０】
請求項２記載のマイクロコンピュータによれば、設定レジスタとして、バッファにデータが書き込み可能な状態である時に割り込み信号を送信するコアを指定するための送信元設定レジスタと、バッファに対するデータの書き込みが完了した時に割り込み信号を送信するコアを指定するための受信元設定レジスタとを備える。このように構成すれば、コア間通信においてデータの送信元及び送信先となるコアを任意に設定して、それぞれに対して割り込みを発生させることができる。
【図面の簡単な説明】
【００１１】
【図１】第１実施形態であり、マイクロコンピュータ及び電子制御装置の構成を示す機能ブロック図
【図２】コア間通信の準備に関する処理を示すフローチャート
【図３】送信側のコアによる処理を示すフローチャート
【図４】受信側のコアによる処理を示すフローチャート
【図５】コア間通信の一例を示すタイミングチャート
【図６】第２実施形態であり、マイクロコンピュータ及び電子制御装置の構成を示す機能ブロック図
【発明を実施するための形態】
【００１２】
（第１実施形態）
以下、第１実施形態について説明する。図１に示すように、本実施形態のマイコン１は、複数のコア２（１），２（２），…２（ｎ）と、これらのコア２と共有バス３を介して接続されているＦＩＦＯ通信装置４とを備えている。ＦＩＦＯ通信装置４は、バッファ・レジスタ部５と割り込み送信部６とを備えている。バッファ・レジスタ部５は、ＦＩＦＯバッファ７，割り込み送信先設定レジスタ８及び状態レジスタ９で構成される。また、割り込み送信部６は、各コア２（１）〜２（ｎ）のそれぞれに対して割り込み信号ＩＮＴ‘（１）〜ＩＮＴ（ｎ）を入力する。ＦＩＦＯ通信装置４はコア間通信部に相当する。
【００１３】
ＦＩＦＯバッファ７は、先入れ先出し順でデータを管理する記憶領域である。ＦＩＦＯバッファ７に対するコア２からの書き込み及び読み出しは排他制御され、複数のコア２によって同時にデータが読み書きされることはない。ＦＩＦＯバッファ７には、予め決められた記憶容量に達するまでデータの書き込みが可能である。また、ＦＩＦＯバッファ７に書き込まれた有効なデータがある場合には、ＦＩＦＯバッファ７からデータの読み出しが可能である。
【００１４】
ＦＩＦＯバッファ７からデータを読み出す際には、書き込まれた順に読み出される。そして、一度読み出されたデータは削除され、そのデータが記憶されていた領域は再度書き込み可能な領域となる。そのため、ＦＩＦＯバッファ７の記憶容量が上限に達するとデータの書き込みはできず、書き込みを行うコア２は、記憶領域に空きが生じるのを待つ必要がある。同様に、ＦＩＦＯバッファ７に有効なデータが無い場合、読み込みを行うコア２は有効なデータがＦＩＦＯバッファ７に保存されるまで待つ必要がある。
【００１５】
割り込み送信先設定レジスタ８は、２つの設定領域ＳＮＤ及びＲＣＶを持つ。これらの領域には、割り込み信号を送信する先のコア２を指定する。領域ＳＮＤに指定したコア２には、ＦＩＦＯバッファ７の記憶領域にデータを書き込み可能な場合に割り込み信号ＩＮＴが送信される。また、領域ＲＣＶに指定したコア２には、ＦＩＦＯバッファ７の記憶領域に有効なデータが存在する場合に割り込み信号ＩＮＴが送信される。つまり、領域ＳＮＤにはデータを送信する側のコア２を指定し、領域ＲＣＶにはデータを受信する側のコア２を指定する。
【００１６】
これらの領域ＳＮＤ，ＲＣＶで指定されたコア２には、割り込み送信部６より割り込み信号ＩＮＴが送信される。尚、領域ＳＮＤにコア２が指定されていなければ、割り込み信号ＩＮＴは何れのコア２にも送信されない。また、領域ＲＣＶも同様に、コア２も指定されていなければ、何れのコア２にも割り込み信号ＩＮＴは送信されない。領域ＳＮＤは送信元設定レジスタに相当し、領域ＲＣＶは受信元設定レジスタに相当する。
【００１７】
状態レジスタ９は、ＦＩＦＯバッファ７の状態を示すレジスタであり、コア２はそのレジスタ値を読み出すことで、ＦＩＦＯバッファ７の状態を知ることができる。具体的には、状態レジスタ９は（１）ＦＩＦＯバッファ７の記憶領域に有効なデータが無い状態，（２）ＦＩＦＯバッファ７の記憶領域に空きがない状態，（３）ＦＩＦＯバッファ７にデータを追加可能な状態，及び（４）ＦＩＦＯバッファ７からのデータ読み出しが可能な状態を示す。そして、例えば車両制御用の電子制御装置１０は、マイコン１に図示しない周辺回路等を加えて構成されている。
【００１８】
次に、本実施形態の作用について説明する。図２に示すように、ＦＩＦＯ通信装置４を用いたコア間通信の準備においては、主に３つの処理が必要となる。その１つはＦＩＦＯバッファ７の初期化であり（Ｓ１）、他の１つは割り込み送信先設定レジスタ８の領域ＲＣＶの設定である（Ｓ２）。領域ＲＣＶには、前述したように通信を行うコア２の内、受信側のコア２を指定する。残りの１つは、同レジスタ８の領域ＳＮＤの設定である（Ｓ３）。領域ＳＮＤには、通信を行うコア２の内、送信側のコア２を指定する。なお、送信側の処理で割り込みを用いない場合には、この設定を省略することもできる。
【００１９】
尚、上記３つの処理は、本実施形態のようにバッファ・レジスタ部５が１つの場合である。後述する第２実施形態のように、複数のバッファ・レジスタ部５を備えるＦＩＦＯ通信装置を用いる場合には、通信に利用する全てのバッファ・レジスタ部５について上記３つの処理を行う必要がある（Ｓ４）。
【００２０】
図３に示すように、ＦＩＦＯ通信装置４を用いてコア２からデータを書き込む場合は、先ずＦＩＦＯバッファ７へのデータ書き込みを試行する（Ｓ１１）。この際、ＦＩＦＯバッファ７へのアクセスは、当該バッファ７側のロジックにより排他制御されているので、従来技術のような排他制御機構を用いたロック取得は不要である。それから、ＦＩＦＯバッファ７への書き込みが完了したか否かを判定する（Ｓ１２）。この判定は、書き込み先に「書き込み完了」か「書き込みエラー」かを示す値が設定されているので、その値に基づいて行う。ＦＩＦＯバッファ７への書き込みが完了した場合は（ＹＥＳ）、そのまま書き込み処理を終了する。一方、書き込みが完了しなかった場合には（ＮＯ）、書き込み可能な状態となるまで待機する必要がある（Ｓ１３，Ｓ１４）。
【００２１】
ここで、上記の待機処理には２つの方法があり、その１つは割り込みを用いるものである。図２に示す準備処理において、割り込み送信先設定レジスタ８の領域ＳＮＤが設定済みである場合は、対応するコア２の割り込み受付可能に設定し、割り込み信号ＩＮＴの入力があるまで待機する。領域ＳＮＤが未設定の場合は、送信側のコア２を指定した後に割り込みの受付を可能に設定し、割り込み信号ＩＮＴの入力があるまで待機する。待機中に、前記コア２に対して割り込み信号ＩＮＴの入力があればＦＩＦＯバッファ７への書き込みが可能となっているので、再びＦＩＦＯバッファ７への書き込みを試行する。
【００２２】
他の１つは、バッファ・レジスタ部５の状態レジスタ９を用いる方法である。状態レジスタ９のレジスタ値には、前述したように（１）〜（４）の４つの状態が反映されている。したがって、コア２が状態レジスタ９の値を参照し、その値がＦＩＦＯバッファ７にデータを追加可能な状態かを確認すれば良い。書き込み可能な状態であれば、再びＦＩＦＯバッファへ７の書き込みを試行する。書き込み可能な状態でなければ再び状態レジスタ９の値を読み込み、ＦＩＦＯバッファ７の状態を確認することを繰り返す。
【００２３】
図４に示すように、コア２がデータを受信する場合には、先ずＦＩＦＯバッファ７に対するデータの読み込みを試行する（Ｓ２１）。この際、書き込みと同様に、排他制御機構を用いたロック取得は不要である。ＦＩＦＯバッファ７からの読み込みができた場合（Ｓ２２で「ＹＥＳ」）そのまま読み込み処理を終了する。読み込みできなかった場合は（Ｓ２２で「ＮＯ」）読み込みができるまで待機する（Ｓ２３，Ｓ２４）。ＦＩＦＯバッファ７からの読み込み可否の判定は読み込んだ値で判断可能であり、その値がエラー値であれば読み込みができておらず、エラー値でなければ読み込みができていることを示す。
【００２４】
ＦＩＦＯバッファ７からの読み込みができず、読み込み可能になるまで待つ処理は、書き込みのケースと同様に２つの方法がある。第１の割り込みを用いる方法では、図２に示した準備フローにて、設定レジスタ８の領域ＲＣＶを設定していればその直後に、未設定であれば受信側のコア２を設定した後、割り込みの受付を可能にしてから割り込みによる通知があるまで待機する。待機中に割り込みによる通知があればＦＩＦＯバッファ７からの読み込みが可能となったことを示すので、コア２は読み込みを再試行する。
【００２５】
第２の状態レジスタ９を用いる方法では、状態レジスタ９の値を取得し、その値によりＦＩＦＯバッファ７からデータを読み出し可能な状態かを確認する。読み出し可能な状態であれば、再びＦＩＦＯバッファ７からの読み込みを試行し、読み込み可能な状態でなければ再び状態レジスタ９の値を読み込んで状態を確認することを繰り返す。
【００２６】
例えば図５に示す一例では、コア２（１）が送信側であり、コア２（２）が受信側となっている。コア２（１）は、図２に示す初期化処理において設定レジスタ８の領域ＲＣＶ及びＳＮＤの設定を行うと（Ａ）処理を開始する（Ｂ）。ここで、図３に示す送信側の処理である、ＦＩＦＯバッファ７に対する書き込み１が行われる。この書き込み１が完了すると、ＦＩＦＯバッファ７の状態は前述の（１）から（２）の空きが無い状態である「Ｆｕｌｌ」になる（Ｃ）。
【００２７】
尚、図２に示す初期化処理を行うコア２は、例えば複数のコア２の内でマスタとなるものが、本ケースではコア２（１）が、予め例えば制御プログラムにおいて指定されており、そのマスタとなるコア２のみが行う。
【００２８】
一方、コア２（２）も同様に、予め例えば制御プログラムにおいて受信側に設定されていることを認識しており、コア２（２）について行う初期化処理などを行った後に、受信側の処理を開始する。ＦＩＦＯバッファ７が初期化されており、有効なデータが存在しない「Ｅｍｐｔｙ」の状態ではコア２（２）はデータを読み出せない。但し、このケースでは、ＦＩＦＯバッファ７が「Ｅｍｐｔｙ」の期間にコア２（２）はデータの読み出しを開始しておらず、読み出しを待機する状態は発生していない。
【００２９】
続いて、コア２（１）は、次に送信するデータの書き込み２を行うが（Ｄ）、コア２（２）による読み込み１が完了しておらず、ＦＩＦＯバッファ７が「Ｆｕｌｌ」の状態である間は待機する。ここでは、割込み送信部６からの割り込みによる通知を待つ（Ｅ）。そして、コア２（２）による読み込み１が完了すると（Ｆ）コア２（１）に対する割り込みが発生する。これによりコア２（１）は、ＦＩＦＯバッファ７が状態（３）である「Ｅｍｐｔｙ」になったことを認識し（Ｇ）書き込み２を行う。一方、コア２（２）は次の処理を開始するが（Ｈ）、ここでもＦＩＦＯバッファ７が「Ｅｍｐｔｙ」の期間にデータの読み込み２を開始しておらず、待機状態は発生していない。
【００３０】
そして、コア２（１）による書き込み２が完了した時点（Ｉ）以降に、コア２（２）は読み込み２を開始する。コア２（１）は、書き込み２の完了後に次の処理を開始するが（Ｊ）、ＦＩＦＯバッファ７が「Ｆｕｌｌ」の状態である間は次のデータの書き込み３を開始しておらず、待機状態は発生していない。
【００３１】
読み込み２が完了すると（Ｋ）、コア２（２）は次の読み込み３を開始するが（Ｌ）、コア２（１）による書き込み３が完了しておらずＦＩＦＯバッファ７は「Ｅｍｐｔｙ」の
状態にある。したがって、コア２（２）は読み込み３を実行できず、割込み待ちとなる（Ｍ）。そして、コア２（１）による書き込み３が完了すると（Ｎ）、コア２（２）は割り込み信号による通知を受信して（Ｏ）読み込み３を実行し、その後、読み込み３が完了する（Ｐ）。
【００３２】
尚、図５に示す例では、コア２が書き込みや読み込みを待機している状態から、書き込みや読み込みが可能になったことを割り込み信号による通知で認識している。これを、図３及び図４に示したように、コア２がポーリングにより状態レジスタ９を参照することで認識するようにしても良い。
【００３３】
以上のように本実施形態によれば、ＦＩＦＯ通信装置４が備えるＦＩＦＯバッファ７は、複数のコア２によりアクセスされ、これらの間で行われるコア間通信により転送されるデータが先入れ先出し制御で格納される。割り込み送信部６は、コア間通信を制御するためコア２に対して割り込み信号を送信する。このように構成すれば、複数のコア２間で行う通信により転送されるデータを、先入れ先出し制御でＦＩＦＯバッファ７に格納することができる。
【００３４】
そして、ＦＩＦＯバッファ７を介して行うコア２間のデータ転送を割り込みで制御できるので、各コア２による前記転送に関するプログラムでの管理が不要になり、ＦＩＦＯ通信を容易に実現できる。すなわち、コア２間での効率的なＦＩＦＯ通信が従来技術よりも少ない工程で可能となり、プログラムの処理負荷削減できる共にＦＩＦＯ通信に関するプログラムの作成が容易になる。
【００３５】
また、設定レジスタ８に指定を行うことで、ＦＩＦＯバッファ７に格納されているデータの状態に応じて割り込み送信部６による割込み信号の送信先を切り換えるので、送信先のコア２は、受信するべきデータがＦＩＦＯバッファ７に格納されたことを割り込みの通知により認識できる。また、状態レジスタ９は、ＦＩＦＯバッファ７におけるデータの格納状態を示すので、コア２は、ＦＩＦＯバッファ７に対するデータの読み書きが完了しなかった際に、状態レジスタ９を参照することでその状態を認識できる。
【００３６】
更に、設定レジスタ８として、ＦＩＦＯバッファ７にデータが書き込み可能な状態である時に割り込み信号を送信するコア２を指定するための領域ＳＮＤと、ＦＩＦＯバッファ７に対するデータの書き込みが完了した時に割り込み信号を送信するコア２を指定するための領域ＲＣＶとを備える。このように構成すれば、コア間通信においてデータの送信元及び送信先となるコア２を任意に設定して、それぞれに対して割り込みを発生させることができる。
【００３７】
また、送信側となるコア２は、ＦＩＦＯバッファ７にデータを書き込み可能な空き領域が存在しなければ、空き領域が発生するまで書き込み処理を待機する。その際に、割り込み送信部６は、ＦＩＦＯバッファ７に空き領域が発生すると、データの書き込み待ち状態にあるコア２に対して割り込み信号を送信するので、送信側となるコア２は、その割り込み信号により空き領域の発生を確認できる。また、送信側となるコア２は、状態レジスタ９を参照することによっても、空き領域の発生の有無を判断できる。
【００３８】
また、受信側となるコア２は、ＦＩＦＯバッファ７に読み込み可能なデータが存在しなければ、ＦＩＦＯバッファ７にデータが書き込まれるまで読み込み処理を待機する。その際に、割り込み送信部６は、ＦＩＦＯバッファ７に対するデータの書き込みが完了すると、データの読み込み待ち状態にあるコア２に対して割り込み信号を送信するので、受信側となるコア２は、その割り込み信号によりデータの書き込み完了を確認できる。また、受信側となるコア２は、状態レジスタ９を参照することによっても、書き込み完了の有無を判断できる。
【００３９】
（第２実施形態）
以下、第１実施形態と同一部分には同一符号を付して説明を省略し、異なる部分について説明する。図６に示す第２実施形態のマイコン１１は、ＦＩＦＯ通信装置４に替わるＦＩＦＯ通信装置１２を備えている。ＦＩＦＯ通信装置１２は、複数のバッファ・レジスタ部５（１），５（２），…，５（ｎ）を有し、これらによって共通の割り込み送信部１３が制御される。そして、電子制御装置１４は、マイコン１１を備えて構成されている。
【００４０】
各コア２は、共有バス３を介して何れのバッファ・レジスタ部５（１），５（２），…，５（ｎ）にもアクセスが可能である。したがって、同じコア２による送信，受信の組み合わせに対して、任意の数のバッファ・レジスタ部５を用いたコア間通信が可能である。
【００４１】
本発明は上記した、又は図面に記載した実施形態にのみ限定されるものではなく、以下のような変形又は拡張が可能である。
書込み及び読み出しの可否を判断する際に状態レジスタ９を参照する処理は、必要に応じて行えば良い。
車両制御用の電子制御装置に限ることなく、その他の電子制御装置や、その他の装置を構成するマイクロコンピュータに適用しても良い。
【符号の説明】
【００４２】
１  マイクロコンピュータ、２  コア、４  ＦＩＦＯ通信装置、５  バッファ・レジスタ部、６  割り込み送信部、７  ＦＩＦＯバッファ、８  割り込み送信先設定レジスタ、９  状態レジスタ、１０  電子制御装置。
【図１】
0006631370.tif 000002
【図２】
0006631370.tif 000003
【図３】
0006631370.tif 000004
【図４】
0006631370.tif 000005
【図５】
0006631370.tif 000006
【図６】
0006631370.tif 000007