(57)【要約】【課題】共有アクセス対象へのアクセスに関する調停を確実に行うことが可能なマルチコア・プロセッサを提供すること。【解決手段】複数のプロセッサコアによって読み書き可能なメモリ上に、特定の共有アクセス対象に対するアクセスの内容及び順序を規定するためのメッセージキューが設定され、複数のプロセッサコアは、メッセージキューに対する所定の書き込み制御に応じて自己が実行すべきタスクに含まれる処理のうち特定の共有アクセス対象に対するアクセスを含む処理に関するジョブ情報を排他的にメッセージキューに書き込み、複数のプロセッサコアのうち少なくとも一の特定対象アクセス実行用プロセッサコアは、メッセージキューに書き込まれたジョブ情報に従って特定の共有アクセス対象に対するアクセスを含む処理を実行することを特徴とする、マルチコア・プロセッサ。【選択図】図１
2011237929.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサコアが独立して処理を行うことが可能なマルチコア・プロセッサであって、
前記複数のプロセッサコアによって読み書き可能なメモリ上に、特定の共有アクセス対象に対するアクセスの内容及び順序を規定するためのメッセージキューが設定され、
前記複数のプロセッサコアは、前記メッセージキューに対する所定の書き込み制御に応じて、前記特定の共有アクセス対象に対するアクセスに関するジョブ情報を排他的に前記メッセージキューに書き込み、
前記複数のプロセッサコアのうち少なくとも一の特定対象アクセス実行用プロセッサコアは、前記メッセージキューに書き込まれたジョブ情報に従って、前記特定の共有アクセス対象に対するアクセスを実行することを特徴とする、
マルチコア・プロセッサ。
【請求項２】
請求項１に記載のマルチコア・プロセッサであって、
前記ジョブ情報は、処理の優先度に関する情報を含んでおり、
前記特定対象アクセス実行用プロセッサコアは、前記ジョブ情報に含まれる処理の優先度に関する情報に基づいて、前記処理を代行する順序を変更することを特徴とする、
マルチコア・プロセッサ。
【請求項３】
請求項１又は２に記載のマルチコア・プロセッサであって、
前記メッセージキューに対する所定の書き込み制御は、所定の順序に従って、前記メッセージキューにジョブ情報の書き込みを終了したプロセッサコアから、次に前記メッセージキューにジョブ情報の書き込むプロセッサコアに、順次書き込み可能通知を行うことによって実現される、
マルチコア・プロセッサ。
【請求項４】
請求項１又は２に記載のマルチコア・プロセッサであって、
前記メッセージキューに対する所定の書き込み制御は、前記複数のプロセッサコアのうち少なくとも一の書込制御用プロセッサコアにおいて保持されている所定の順序に従って、該書込制御用プロセッサコアから各プロセッサコアに順次書き込み可能通知を行うことによって実現される、
【請求項５】
請求項３又は４に記載のマルチコア・プロセッサであって、
前記書き込み可能通知は、ソフトウエア割り込みによって行われる、
マルチコア・プロセッサ。
【請求項６】
請求項３又は４に記載のマルチコア・プロセッサであって、
前記書き込み可能通知は、前記複数のプロセッサコアによってアクセス可能なメモリ上において、次に前記メッセージキューにジョブ情報の書き込むプロセッサコアを指定することによって行われる、
マルチコア・プロセッサ。
【請求項７】
車両に搭載され、前記各プロセッサコアは、車両制御のための処理を行うことを特徴とする、請求項１ないし６のいずれか１項に記載のマルチコア・プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサコアが独立して処理を行うことが可能なマルチコア・プロセッサに関する。
【背景技術】
【０００２】
従来、一個のパッケージ内に複数のプロセッサコア（ＣＰＵコア）を備えるマルチコア・プロセッサについて実用化が図られている。マルチコア・プロセッサにおいて、各コアは独立して演算処理等を行うことが可能である。従って、特に複数の機能が統合された車載制御装置のように、複数のタスクを同時実行する装置に適用された場合に、高速処理を実現することができる。
【０００３】
これに関連した移動体用マルチコアＣＰＵの制御装置についての発明が開示されている（例えば、特許文献１参照）。この制御装置では、処理能力を低下させる異常が発生したことを検出する異常検出手段と、複数のＣＰＵコアに割り当てられた処理の優先度を格納する処理優先度格納手段と、複数のＣＰＵコアの各々の処理能力を調整するための処理能力調整手段とを備え、異常検出手段によって異常が検出されたときに、処理優先度格納手段に格納された処理の優先度が最も高い処理が割り当てられたＣＰＵコア以外のＣＰＵコアの処理能力を低減させるように制御している。
【０００４】
ところで、マルチコア・プロセッサでは、不揮発性メモリ等の共有アクセス対象が存在するのが通常である。このため、複数のプロセッサコアが同時にこうした共有アクセス対象にアクセスしないように制御する必要がある。
【０００５】
特許文献２に記載のマルチコア・プロセッサでは、回路情報に基づいて動的に回路構成を再構成可能な複数のリコンフィギュラブルデバイスを備え、複数のプロセッサコアのいずれかがリコンフィギュラブルデバイスを使用している際には、当該リコンフィギュラブルデバイスがいずれかのプロセッサコアにロックされていることを示すロック情報をメモリに記憶させることによって、排他制御を行っている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−０９７２８０号公報
【特許文献２】特開２０１０−０４４５７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記従来の特許文献２に記載のマルチコア・プロセッサのような排他制御を共有アクセス対象について行う場合、各プロセッサコアがロック情報を参照しなければならず、処理が遅延するおそれがある。また、ロック情報が記憶されるメモリへのアクセスに関しても、排他制御を行う必要がある。
【０００８】
更に、いずれかのプロセッサコアが共有アクセス対象を占有する結果、プロセッサコア間のスループットが偏ってしまう可能性がある。
【０００９】
本発明はこのような課題を解決するためのものであり、共有アクセス対象へのアクセスに関する調停を確実に行うことが可能なマルチコア・プロセッサを提供することを、主たる目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するための本発明の一態様は、
複数のプロセッサコアが独立して処理を行うことが可能なマルチコア・プロセッサであって、
前記複数のプロセッサコアによってアクセス可能なメモリ上に、特定の共有アクセス対象に対するアクセスの内容及び順序を規定するためのメッセージキューが設定され、
前記複数のプロセッサコアは、前記メッセージキューに対する所定の書き込み制御に応じて、前記特定の共有アクセス対象に対するアクセスに関するジョブ情報を排他的に前記メッセージキューに書き込み、
前記複数のプロセッサコアのうち少なくとも一の特定対象アクセス実行用プロセッサコアは、前記メッセージキューに書き込まれたジョブ情報に従って、前記特定の共有アクセス対象に対するアクセスを含む処理を実行することを特徴とする、
マルチコア・プロセッサである。
【００１１】
この本発明の一態様によれば、複数のプロセッサコアが、所定の書き込み制御に応じて特定の共有アクセス対象に対するアクセスに関するジョブ情報を排他的にメッセージキューに書き込み、特定対象アクセス実行用プロセッサコアが、メッセージキューに書き込まれたジョブ情報に従って特定の共有アクセス対象に対するアクセスを、当該ジョブ情報を書き込んだプロセッサコアに代わって実行するため、共有アクセス対象へのアクセスに関する調停を確実に行うことができる。
【００１２】
本発明の一態様において、
前記ジョブ情報は、処理の優先度に関する情報を含んでおり、
前記特定対象アクセス実行用プロセッサコアは、前記ジョブ情報に含まれる処理の優先度に関する情報に基づいて、前記処理を代行する順序を変更することを特徴とするものとすると、好適である。
【００１３】
こうすれば、優先度に応じた処理順序で、ジョブ情報に含まれる処理を実行することができる。
【００１４】
また、本発明の一態様において、
前記メッセージキューに対する所定の書き込み制御は、所定の順序に従って、前記メッセージキューにジョブ情報の書き込みを終了したプロセッサコアから、次に前記メッセージキューにジョブ情報の書き込むプロセッサコアに、順次書き込み可能通知を行うことによって排他制御が実現されるものとしてもよい。
【００１５】
また、本発明の一態様において、
前記メッセージキューに対する所定の書き込み制御は、前記複数のプロセッサコアのうち少なくとも一の書込制御用プロセッサコアにおいて保持されている所定の順序に従って、該書込制御用プロセッサコアから各プロセッサコアに順次書き込み可能通知を行うことによって排他制御が実現されるものとしてもよい。
【００１６】
また、本発明の一態様において、
前記書き込み可能通知は、ソフトウエア割り込みによって行われるものとしてもよいし、前記複数のプロセッサコアによってアクセス可能なメモリ上において、次に前記メッセージキューにジョブ情報の書き込むプロセッサコアを指定することによって行われるものとしてもよい。
【００１７】
また、本発明の一態様は、
車両に搭載され、前記各プロセッサコアは、車両制御のための処理を行うことを特徴とするものとしてもよい。
【発明の効果】
【００１８】
本発明によれば、共有アクセス対象へのアクセスに関する調停を確実に行うことが可能なマルチコア・プロセッサを提供することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１実施例に係るマルチコア・プロセッサ１のシステム構成例である。
【図２】メッセージキュー４２の概念を、格納されるジョブの状態や処理主体の変化と共に示す概念図である。
【図３】要求受付部から入力されるメッセージ情報、及び、これにジョブＩＤが付与されてメッセージキュー４２に格納されたジョブ情報のデータ構造を示す図である。
【図４】本実施例に係るメッセージキュー４２を実現可能なキューバッファの構造を示す図である。
【図５】図４に示した状態から、ジョブソート部３６がジョブ情報を並べ替えた結果を示す図である。
【図６】各プロセッサコアの要求受付部によりメッセージキュー４２にメッセージ情報が書き込まれる際の処理の流れを示すタイミングチャートである。
【図７】各プロセッサコアの要求受付部が実行する要求受付処理の流れを示すフローチャートである。
【図８】マルチコア・プロセッサ１の起動時やエラーからの回復時等に実行される初期化処理の流れを示すフローチャートである。
【図９】ジョブ実行部３７により実行されるジョブ実行処理の流れを示すフローチャートである。本フローは、例えば周期的に繰り返し実行される。
【図１０】ジョブ実行部３７により実行されるジョブ開始処理の流れを示すフローチャートである。
【図１１】ジョブ実行部３７により実行されるジョブ終了処理の流れを示すフローチャートである。
【図１２】従来のマルチコア・プロセッサにおいて、複数のプロセッサコアが同時に特定の共有アクセス対象にアクセスすることによって干渉が生じる様子を示す図である。
【図１３】第１実施例のマルチコア・プロセッサ１において、干渉が生じるのが回避される様子を示す図である。
【図１４】各コア間でメッセージキュー４２に対する書き込みの制御が行われる様子を示すシーケンス図である。
【図１５】プロセッサコア１０のスケジューラ１２によって実行されるリソースアクセス待ち処理の流れを示すフローチャートである。
【図１６】プロセッサコア１０のスケジューラ１２によって実行されるリソースアクセス振り分け処理の流れを示すフローチャートである。
【図１７】プロセッサコア２０、３０のスケジューラ２２、３２によって実行されるリソース占有開始処理の流れを示すフローチャートである。
【図１８】プロセッサコア２０、３０のスケジューラ２２、３２によって実行されるリソース占有終了処理の流れを示すフローチャートである。
【図１９】プロセッサコア１０のスケジューラ１２によって実行されるリソースアクセス終了処理の流れを示すフローチャートである。
【図２０】第１実施例及び第２実施例に付加機能として追加され得る部分構成図である。
【図２１】各プロセッサコアがＩ／Ｏポートにアクセスする際の処理の流れを示すタイミングチャートである。
【図２２】第１実施例及び第２実施例に付加機能として追加され得る部分構成図である。
【発明を実施するための形態】
【００２０】
以下、本発明を実施するための形態について、添付図面を参照しながら実施例を挙げて説明する。
【実施例】
【００２１】
＜第１実施例＞
以下、図面を参照し、本発明の第１実施例に係るマルチコア・プロセッサについて説明する。本実施例のマルチコア・プロセッサは、複数のプロセッサコアが独立して処理を行うことが可能なものであり、例えば複数の機能が統合された車載制御装置のように、複数のタスクを同時実行する装置に好適に適用される。
【００２２】
［構成］
図１は、本発明の第１実施例に係るマルチコア・プロセッサ１のシステム構成例である。マルチコア・プロセッサ１は、複数のプロセッサコア（個数に特段の制限はないが、本明細書においては３個とする）１０、２０、３０と、共有メモリ４０と、特定の共有アクセス対象の一例としての不揮発性メモリ５０と、を備える。不揮発性メモリ５０は、例えばＥＥＰＲＯＭ（Electrically  Erasable  and  Programmable  Read  Only  Memory）やフラッシュメモリである。
【００２３】
各プロセッサコアは、図示しないプログラムメモリに格納された命令列をフェッチして一時的に格納する命令バッファ、命令列に格納された命令列をデコード（復号）する命令デコーダ、命令デコーダによりデコードされた命令を実行するための演算器、演算器による演算結果等が格納されるレジスタ、一次キャッシュメモリ等を有しており、それぞれが特定のタスクに係る処理を実行する。
【００２４】
本実施例では、プロセッサコア１０は、上記のように命令を実行することにより機能する機能ブロックとして、タイミング生成部１１、スケジューラ１２、機能モジュール１３、１４、要求受付部１５を備える。ここで、機能モジュールとは、マルチコア・プロセッサ１が本来実行すべき種々のタスクを構成する処理単位である。
【００２５】
また、プロセッサコア２０は、機能ブロックとして、スケジューラ２２、機能モジュール２３、２４、要求受付部２５を備える。
【００２６】
また、プロセッサコア３０は、機能ブロックとして、スケジューラ３２、機能モジュール３３、３４、要求受付部３５、ジョブソート部３６、ジョブ実行部３７、メモリドライバ３８を備える。
【００２７】
共有メモリ４０は、例えばＲＡＭ（Random  Access  Memory）であり、各プロセッサコアにより読み書き可能となっている。共有メモリ４０には、例えば機能モジュール毎に、ワーク領域と当該機能モジュールの処理状況を示すジョブ状態を示す領域が設定されている。なお、図１では機能モジュール１３、２３、３３についてのワーク領域の図示を省略した。
【００２８】
また、共有メモリ４０には、特定の共有アクセス対象（本実施例では不揮発性メモリ５０）に対するアクセスの内容及び順序を規定するためのメッセージキュー４２が設定されている。
【００２９】
図２は、メッセージキュー４２の概念を、格納されるジョブの状態や処理主体の変化と共に示す概念図である。図示するように、メッセージキュー４２には、複数のジョブ情報が、入力順ないし処理順に格納されている。
【００３０】
ジョブの状態は、ジョブ情報として格納される前の「登録待ち」状態から、ジョブ情報として格納された後の「実行待ち」状態、キュー先頭に至って実行順が回ってきた後の「実行中」状態、処理が完了した後の「完了」状態の順に推移する。「登録待ち」状態は、いずれかの要求受付部から入力された状態であり、「実行待ち」状態においてはジョブソート部３６によって並べ替えが行われる。そして、「実行中」状態ではジョブ実行部３７によって処理が実行される。
【００３１】
図３は、要求受付部から入力されるメッセージ情報、及び、これにジョブＩＤが付与されてメッセージキュー４２に格納されたジョブ情報のデータ構造を示す図である。本実施例におけるジョブ情報は、いずれかの要求受付部から入力されたメッセージ情報にジョブＩＤが付与されたものである。
【００３２】
メッセージキュー４２は、例えばキューバッファによって実現される。図４は、本実施例に係るメッセージキュー４２を実現可能なキューバッファの構造を示す図である。図示するように、キューバッファは、ジョブＩＣ、及び優先度等を含むメッセージ情報からなるマトリクスデータに配列インデクスが付与され、更に、ポインタ４４Ａ、４４Ｂによってキューの先頭と末尾がそれぞれ指定されている。ポインタ４４Ａ、４４Ｂは、ジョブの実行に応じて移動する構成となっている。図４は、配列インデクス［３］に格納されたジョブが完了した後の状態を示しており、次に実行されるジョブは、配列インデクス［４］に格納された、ジョブＩＤが「０１」のジョブである。この配列インデクス［４］に格納されたジョブの実行が完了すると、ポインタ４４Ａが一段下に移動する。
【００３３】
ジョブソート部３６は、例えばジョブ情報に含まれる優先度に従って、メッセージキュー４２に格納されたジョブ情報を並べ替える。図５は、図４に示した状態から、ジョブソート部３６がジョブ情報を並べ替えた結果を示す図である。
【００３４】
そして、前述のように、メッセージキュー４２にジョブ情報が格納されたジョブは、プロセッサコア３０のジョブ実行部３７によって実行される。例えば、プロセッサコア１０の要求受付部１５によって書き込まれた、不揮発性メモリ５０の所定アドレスからデータを読み込むジョブを実行する場合、プロセッサコア３０のジョブ実行部３７は、不揮発性メモリ５０の所定アドレスからデータを読み込んで共有メモリ４０におけるプロセッサコア１０の、該当する機能モジュールのためのワーク領域にデータを格納する。プロセッサコア３０は、不揮発性メモリ５０にアクセスするための機能として、メモリドライバ３８を備えている。
【００３５】
このように、本実施例のマルチコア・プロセッサ１では、不揮発性メモリ５０へのアクセスに係る処理をプロセッサコア３０に一本化して実行させているため、複数のプロセッサコアが同時に不揮発性メモリ５０にアクセスすることによって干渉が生じるのを、確実に回避することができる。
【００３６】
［メッセージキュー４２に対する書き込みの制御］
図６は、各プロセッサコアの要求受付部によりメッセージキュー４２にメッセージ情報が書き込まれる際の処理の流れを示すタイミングチャートである。プロセッサコア１０のタイミング生成部１１は、所定周期毎に要求受付開始のための基準タイミング通知を行う。なお、この所定周期は、例えば、各プロセッサコアの機能モジュールの全てが不揮発性メモリ５０へのアクセスを行った際の処理時間の合計よりも、十分余裕のある時間に設定される。
【００３７】
プロセッサコア１０のスケジューラ１２は、基準タイミング通知を検知すると、要求受付部１５に要求受付許可通知を行う（時刻ｔ１）。要求受付部１５は、メッセージキュー４２に空きがある場合、ジョブ情報をメッセージキュー４２に書き込む（時刻ｔ１〜ｔ２）。スケジューラ１２は、メッセージ情報の出力が完了すると、要求受付許可通知をプロセッサコア２０のスケジューラ２２に対して行う（時刻ｔ３）。ここで、要求受付許可通知は、例えばソフトウエア／ハードウエア割り込みによって行われるが、スケジューラ１２が共有メモリ４０にフラグ等を設定し、スケジューラ２２がポーリングすることによって行われても構わない。他のスケジューラ間でも同様である。
【００３８】
プロセッサコア２０のスケジューラ２２は、要求受付許可通知を検知すると、要求受付部２５に起動信号を出力する（時刻ｔ３）。要求受付部２５は、メッセージキュー４２に空きがある場合、ジョブ情報をメッセージキュー４２に書き込む（時刻ｔ３〜ｔ４）。スケジューラ２２は、メッセージ情報の出力が完了すると、要求受付許可通知をプロセッサコア３０のスケジューラ３２に対して行う（時刻ｔ５）。
【００３９】
プロセッサコア３０のスケジューラ３２は、要求受付許可通知を検知すると要求受付部３５に起動信号を出力する（時刻ｔ５）。要求受付部３５は、メッセージキュー４２に空きがある場合、ジョブ情報をメッセージキュー４２に書き込む（時刻ｔ５〜ｔ６）。スケジューラ３２は、メッセージ情報の出力が完了すると、ジョブソート部３６にジョブ情報の並べ替えを指示する（時刻ｔ７）。ジョブソート部３６がジョブ情報の並べ替えを終了すると、ジョブ実行部３７によって、メッセージキュー４２に格納されたジョブ情報に基づいて、ジョブが実行される（時刻ｔ８）。
【００４０】
このように、プロセッサコア１０のタイミング生成部１１によって開始信号が出力され、これに応じて各プロセッサコアの要求受付部が順次メッセージ情報の出力を行うように制御される。これによって、ジョブ情報の書き込みに関してプロセッサコア間で干渉が生じるのを回避することができる。
【００４１】
［各種処理フロー］
以下、各機能ブロックの動作について、それぞれフローチャートに即して説明する。
【００４２】
図７は、各プロセッサコアの要求受付部が実行する要求受付処理の流れを示すフローチャートである。本フローは、前述のように要求受付許可通知が検知されたときに、当該プロセッサコアにおいて実行中の機能モジュール毎に実行される。
【００４３】
まず、要求受付部は、共有メモリ４０における、当該処理に対応するジョブ状態を示す記憶領域に「登録待ち」を書き込む（Ｓ１００）。
【００４４】
次に、要求受付部は、メッセージキュー４２に空きが存在するか否かを判定する（Ｓ１０２）。本判定は、例えば、外部変数として保持されているポインタ４４Ａ、４４Ｂの位置（先頭及び末尾の位置）を参照することにより行う。メッセージキュー４２に空きが存在しない場合は、本フローを終了する。
【００４５】
メッセージキュー４２に空きが存在する場合は、ポインタ４４Ｂの位置を１つインクリメントしてキューの末尾の位置を繰り下げ（Ｓ１０４）、今回登録するメッセージ情報にジョブＩＤを付与してキューの末尾に登録する（Ｓ１０６）。
【００４６】
そして、共有メモリ４０における、当該処理に対応するジョブ状態を示す記憶領域に「実行待ち」を書き込み（Ｓ１０８）、本フローを終了する。
【００４７】
図８は、マルチコア・プロセッサ１の起動時やエラーからの回復時等に実行される初期化処理の流れを示すフローチャートである。本フローは、マルチコア・プロセッサ１の図示しないＯＳ（Operating  System）等によって実行される。
【００４８】
初期化処理においては、外部変数として保持されている実行状態をアイドル状態とし（Ｓ２００）、ポインタ４４Ａ、４４Ｂの位置をゼロ位置とする（Ｓ２０２、Ｓ２０４）。ここで、「実行状態」とは、メモリドライバ３８による不揮発性メモリ５０へのアクセス処理の実行状態を示すデータである。
【００４９】
図９は、ジョブ実行部３７により実行されるジョブ実行処理の流れを示すフローチャートである。本フローは、例えば周期的に繰り返し実行される。
【００５０】
まず、ジョブ実行部３７は、外部変数として保持されている実行状態がアイドル状態であるか否かを判定する（Ｓ３００）。
【００５１】
実行状態がアイドル状態である場合は、メッセージキュー４２に実行待ちのジョブ情報が存在するか否かを判定する（Ｓ３０２）。本判定は、例えばポインタ４４Ａ、４４Ｂの位置を参照することによって行うことができる。メッセージキュー４２に実行待ちのジョブ情報が存在しない場合は、本フローの１ルーチンを終了する。
【００５２】
メッセージキュー４２に実行待ちのジョブ情報が存在する場合は、図１０に示すジョブ開始処理を実行する（Ｓ３０４）。
【００５３】
一方、実行状態がアイドル状態でない場合は、メモリドライバ３８がアイドル状態であるか否かを判定する（Ｓ３０６）。メモリドライバ３８がアイドル状態でない場合は、本フローの１ルーチンを終了する。メモリドライバ３８がアイドル状態でないと判定されるのは、実行状態、メモリドライバ３８共にアイドル状態でない場合、すなわち、不揮発性メモリ５０へのアクセスが実行中の場合である。
【００５４】
メモリドライバ３８がアイドル状態である場合は、図１１に示すジョブ終了処理を実行する（Ｓ３０８）。
【００５５】
図１０は、ジョブ実行部３７により実行されるジョブ開始処理の流れを示すフローチャートである。
【００５６】
まず、ジョブ実行部３７は、キュー先頭のジョブ情報からメッセージ情報を取り出す（Ｓ４００）。そして、メッセージ情報に含まれる各データに従って、メモリドライバ３８に対してアクセス指示を発行する（Ｓ４０２）。
【００５７】
次に、実行状態を実行中とし（Ｓ４０４）、当該処理に対応するジョブ状態を示す共有メモリ４０の記憶領域に「実行中」を書き込む（Ｓ４０６）。この記憶領域は、前述のように、要求受付部から入力されたメッセージ情報に含まれている。
【００５８】
そして、ポインタ４４Ａの位置を１つインクリメントしてキューの先頭の位置を繰り下げ（Ｓ４０８）、本フローを終了する。
【００５９】
図１１は、ジョブ実行部３７により実行されるジョブ終了処理の流れを示すフローチャートである。
【００６０】
ジョブ終了処理において、ジョブ実行部３７は、ジョブ実行部３７は、実行状態をアイドル状態とし（Ｓ５００）、次に当該処理に対応するジョブ状態を示す共有メモリ４０の記憶領域に「完了」を書き込み（Ｓ５０２）、本フローを終了する。
【００６１】
［まとめ］
以上説明した本実施例のマルチコア・プロセッサ１によれば、不揮発性メモリ５０へのアクセスに係る処理をプロセッサコア３０に一本化して実行させているため、複数のプロセッサコアが同時に不揮発性メモリ５０にアクセスすることによって干渉が生じるのを、確実に回避することができる。
【００６２】
また、プロセッサコア１０のタイミング生成部１１によって基準タイミング通知が行われ、これに応じて各プロセッサコアの要求受付部が順次メッセージ情報の出力を行うように制御されるため、ジョブ情報の書き込みに関してプロセッサコア間で干渉が生じるのを回避することができる。
【００６３】
なお、図１２は、従来のマルチコア・プロセッサにおいて、複数のプロセッサコアが同時に特定の共有アクセス対象にアクセスすることによって干渉が生じる様子を示す図である。これに対し、図１３は、本実施例のマルチコア・プロセッサ１において、干渉が生じるのが回避される様子を示す図である。
【００６４】
＜第２実施例＞
以下、図面を参照し、本発明の第２実施例に係るマルチコア・プロセッサについて説明する。本実施例のマルチコア・プロセッサは、複数のプロセッサコアが独立して処理を行うことが可能なものであり、例えば複数の機能が統合された車載制御装置のように、複数のタスクを同時実行する装置に好適に適用される。
【００６５】
［構成］
本実施例のマルチコア・プロセッサ２は、構成、及び各構成要素の基本的機能において第１実施例と共通するため、図１を援用することとし、各構成要素について同一の符号を付し、第１実施例との相違点を中心に説明する。
【００６６】
本実施例のマルチコア・プロセッサ２においても、不揮発性メモリ５０へのアクセスに係る処理をプロセッサコア３０に一本化して実行させているため、複数のプロセッサコアが同時に不揮発性メモリ５０にアクセスすることによって干渉が生じるのを、確実に回避することができる。
【００６７】
［メッセージキュー４２に対する書き込みの制御、各種処理フロー］
各プロセッサコアの要求受付部によりメッセージキュー４２にメッセージ情報が書き込まれる際の処理の流れについても、第１実施例と同様であり、図６を援用する。
【００６８】
但し、本実施例では、メッセージキュー４２に対する書き込みの制御において、スケジューラ間の通知の流れが第１実施例と異なっている。
【００６９】
図１４は、各コア間でメッセージキュー４２に対する書き込みの制御が行われる様子を示すシーケンス図である。
【００７０】
まず、プロセッサコア１０は、図１５に示すようなリソースアクセス待ち処理を実行する（Ｓ６００）。なお、本図における「リソース」とは、共有メモリ４０を指している。
【００７１】
リソースアクセス待ち処理が終了すると、プロセッサコア１０は、第１実施例において図７で説明した要求受付処理を、機能モジュール１３、１４のそれぞれについて実行する（Ｓ６０２、Ｓ６０４）。
【００７２】
要求受付処理が終了すると、プロセッサコア１０は、図１６に示すようなリソース振り分け処理を実行する（Ｓ６０６）。ここでは、対象コアはプロセッサコア２０となる。
【００７３】
リソース振り分け処理においてプロセッサコア１０からプロセッサ２０に対して要求受付許可通知が行われると、プロセッサ２０は図１７に示すようなリソース占有開始処理を実行する（Ｓ６１０）。
【００７４】
リソースアクセス待ち処理が終了すると、プロセッサコア２０は、第１実施例において図７で説明した要求受付処理を、機能モジュール２３、２４のそれぞれについて実行する（Ｓ６１２、Ｓ６１４）。
【００７５】
要求受付処理が終了すると、プロセッサコア２０は、図１８に示すようなリソース占有終了処理を実行する（Ｓ６１６）。
【００７６】
リソース占有終了処理においてプロセッサコア２０からプロセッサ１０に対してリソース占有終了通知が行われると、プロセッサ１０は、図１６に示すようなリソース振り分け処理を実行する（Ｓ６１８）。ここでは、対象コアはプロセッサコア３０となる。
【００７７】
リソース振り分け処理においてプロセッサコア１０からプロセッサ３０に対して要求受付許可通知が行われると、プロセッサ３０は図１７に示すようなリソース占有開始処理を実行する（Ｓ６２０）。
【００７８】
リソースアクセス待ち処理が終了すると、プロセッサコア３０は、第１実施例において図７で説明した要求受付処理を、機能モジュール３３、３４のそれぞれについて実行する（Ｓ６２２、Ｓ６２４）。
【００７９】
要求受付処理が終了すると、ジョブソート部３６がジョブソートを実行し（Ｓ６２６）、ジョブ実行部３７がジョブを実行する（Ｓ６２８）。
【００８０】
そして、プロセッサコア３０のスケジューラ３２は、図１８に示すようなリソース占有終了処理を実行する（Ｓ６３０）。
【００８１】
リソース占有終了処理においてプロセッサコア３０からプロセッサ１０に対してリソース占有終了通知が行われると、プロセッサ１０は、図１９に示すようなリソースアクセス終了処理を実行する（Ｓ６４０）。
【００８２】
図１５は、プロセッサコア１０のスケジューラ１２によって実行されるリソースアクセス待ち処理の流れを示すフローチャートである。
【００８３】
まず、スケジューラ１２は、タイミング生成部１１によって基準タイミング通知がなされるまで待機する（Ｓ７００）。
【００８４】
基準タイミング通知がなされると、リソースアクセスが終了状態であるか否かを判定する（Ｓ７０２）。リソースアクセスが終了状態でなければエラー処理を行い（Ｓ７０４）、Ｓ７００に戻る。
【００８５】
リソースアクセスが終了状態である場合は、リソースアクセスを開始状態とする（Ｓ７０６）。
【００８６】
図１６は、プロセッサコア１０のスケジューラ１２によって実行されるリソースアクセス振り分け処理の流れを示すフローチャートである。
【００８７】
リソースアクセス振り分け処理において、スケジューラ１２は、スケジュール（本実施例の場合は、プロセッサコア１０→プロセッサコア２０→プロセッサコア３０と規定されている）に従って、対象プロセッサコアに要求受付許可通知を行う（Ｓ８００）。
【００８８】
図１７は、プロセッサコア２０、３０のスケジューラ２２、３２によって実行されるリソース占有開始処理の流れを示すフローチャートである。
【００８９】
リソース占有開始処理において、プロセッサコア２０、３０のスケジューラ２２、３２は、自コアのアクセルタスクを起床する（Ｓ９００）。
【００９０】
図１８は、プロセッサコア２０、３０のスケジューラ２２、３２によって実行されるリソース占有終了処理の流れを示すフローチャートである。
【００９１】
リソース占有終了処理において、プロセッサコア２０、３０のスケジューラ２２、３２は、プロセッサコア１０に対して自コアの占有終了を通知し（Ｓ１０００）、自コアのアクセスタスクを終了する（Ｓ１００２）。
【００９２】
図１９は、プロセッサコア１０のスケジューラ１２によって実行されるリソースアクセス終了処理の流れを示すフローチャートである。
【００９３】
リソースアクセス振り分け処理において、スケジューラ１２は、リソースアクセスを終了状態とする（Ｓ１１００）。
【００９４】
このように、プロセッサコア１０のタイミング生成部１１によって開始信号が出力され、これに応じて各プロセッサコアの要求受付部が順次メッセージ情報の出力を行うように制御される。これによって、ジョブ情報の書き込みに関してプロセッサコア間で干渉が生じるのを回避することができる。
【００９５】
［まとめ］
以上説明した本実施例のマルチコア・プロセッサ２によれば、不揮発性メモリ５０へのアクセスに係る処理をプロセッサコア３０に一本化して実行させているため、複数のプロセッサコアが同時に不揮発性メモリ５０にアクセスすることによって干渉が生じるのを、確実に回避することができる。
【００９６】
また、プロセッサコア２０のタイミング生成部１１によって基準タイミング通知が行われ、これに応じて各プロセッサコアの要求受付部が順次メッセージ情報の出力を行うように制御されるため、ジョブ情報の書き込みに関してプロセッサコア間で干渉が生じるのを回避することができる。
【００９７】
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【００９８】
例えば、特定の共有アクセス対象の例として不揮発性メモリ５０を挙げたが、これに限らず、ソークタイマＩＣ等、他の機器が特定の共有アクセス対象に該当するものとしてもよい。ソークタイマＩＣとは、車載制御装置において、キーをオフしている時間を計測したり、キーオフ中の所定時刻に車載制御装置の電源をオン状態としたりする機能を有するものである。
【００９９】
また、各プロセッサコアが要求受付部に相当する機能を有する構成としたが、プロセッサ間の共通関数として保持されるものとしてもよい。
【０１００】
また、特定の共有アクセス対象以外の共有アクセス対象について、各プロセッサコアが独立してアクセス可能としてもよい。図２０は、第１実施例及び第２実施例に付加機能として追加され得る部分構成図である。図示するように、外部Ｉ／Ｏポート等、レイテンシの短い機器については、各プロセッサコアがドライバを備え、独立してアクセス可能であってもよい。図２１は、各プロセッサコアがＩ／Ｏポートにアクセスする際の処理の流れを示すタイミングチャートである。係る変形は、スタンバイＲＡＭについても同様である。図２２は、第１実施例及び第２実施例に付加機能として追加され得る部分構成図である。
【符号の説明】
【０１０１】
１、２            マルチコア・プロセッサ
１０、２０、３０  プロセッサコア
１１              タイミング生成部
１２、２２、３２  スケジューラ
１３、１４、２３、２４、３３、３４  機能モジュール
１５、２５、３５  要求受付部
４０              共有メモリ
５０              不揮発性メモリ
【図１】
2011237929.tif 000003
【図２】
2011237929.tif 000004
【図３】
2011237929.tif 000005
【図４】
2011237929.tif 000006
【図５】
2011237929.tif 000007
【図６】
2011237929.tif 000008
【図７】
2011237929.tif 000009
【図８】
2011237929.tif 000010
【図９】
2011237929.tif 000011
【図１０】
2011237929.tif 000012
【図１１】
2011237929.tif 000013
【図１２】
2011237929.tif 000014
【図１３】
2011237929.tif 000015
【図１４】
2011237929.tif 000016
【図１５】
2011237929.tif 000017
【図１６】
2011237929.tif 000018
【図１７】
2011237929.tif 000019
【図１８】
2011237929.tif 000020
【図１９】
2011237929.tif 000021
【図２０】
2011237929.tif 000022
【図２１】
2011237929.tif 000023
【図２２】
2011237929.tif 000024