マルチコア・プロセッサ
【課題】共有アクセス対象へのアクセスに関する調停を確実に行うことが可能なマルチコア・プロセッサを提供すること。
【解決手段】複数のプロセッサコアによって読み書き可能なメモリ上に、特定の共有アクセス対象に対するアクセスの内容及び順序を規定するためのメッセージキューが設定され、複数のプロセッサコアは、メッセージキューに対する所定の書き込み制御に応じて自己が実行すべきタスクに含まれる処理のうち特定の共有アクセス対象に対するアクセスを含む処理に関するジョブ情報を排他的にメッセージキューに書き込み、複数のプロセッサコアのうち少なくとも一の特定対象アクセス実行用プロセッサコアは、メッセージキューに書き込まれたジョブ情報に従って特定の共有アクセス対象に対するアクセスを含む処理を実行することを特徴とする、マルチコア・プロセッサ。
【解決手段】複数のプロセッサコアによって読み書き可能なメモリ上に、特定の共有アクセス対象に対するアクセスの内容及び順序を規定するためのメッセージキューが設定され、複数のプロセッサコアは、メッセージキューに対する所定の書き込み制御に応じて自己が実行すべきタスクに含まれる処理のうち特定の共有アクセス対象に対するアクセスを含む処理に関するジョブ情報を排他的にメッセージキューに書き込み、複数のプロセッサコアのうち少なくとも一の特定対象アクセス実行用プロセッサコアは、メッセージキューに書き込まれたジョブ情報に従って特定の共有アクセス対象に対するアクセスを含む処理を実行することを特徴とする、マルチコア・プロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のプロセッサコアが独立して処理を行うことが可能なマルチコア・プロセッサに関する。
【背景技術】
【0002】
従来、一個のパッケージ内に複数のプロセッサコア(CPUコア)を備えるマルチコア・プロセッサについて実用化が図られている。マルチコア・プロセッサにおいて、各コアは独立して演算処理等を行うことが可能である。従って、特に複数の機能が統合された車載制御装置のように、複数のタスクを同時実行する装置に適用された場合に、高速処理を実現することができる。
【0003】
これに関連した移動体用マルチコアCPUの制御装置についての発明が開示されている(例えば、特許文献1参照)。この制御装置では、処理能力を低下させる異常が発生したことを検出する異常検出手段と、複数のCPUコアに割り当てられた処理の優先度を格納する処理優先度格納手段と、複数のCPUコアの各々の処理能力を調整するための処理能力調整手段とを備え、異常検出手段によって異常が検出されたときに、処理優先度格納手段に格納された処理の優先度が最も高い処理が割り当てられたCPUコア以外のCPUコアの処理能力を低減させるように制御している。
【0004】
ところで、マルチコア・プロセッサでは、不揮発性メモリ等の共有アクセス対象が存在するのが通常である。このため、複数のプロセッサコアが同時にこうした共有アクセス対象にアクセスしないように制御する必要がある。
【0005】
特許文献2に記載のマルチコア・プロセッサでは、回路情報に基づいて動的に回路構成を再構成可能な複数のリコンフィギュラブルデバイスを備え、複数のプロセッサコアのいずれかがリコンフィギュラブルデバイスを使用している際には、当該リコンフィギュラブルデバイスがいずれかのプロセッサコアにロックされていることを示すロック情報をメモリに記憶させることによって、排他制御を行っている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2008−097280号公報
【特許文献2】特開2010−044578号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、上記従来の特許文献2に記載のマルチコア・プロセッサのような排他制御を共有アクセス対象について行う場合、各プロセッサコアがロック情報を参照しなければならず、処理が遅延するおそれがある。また、ロック情報が記憶されるメモリへのアクセスに関しても、排他制御を行う必要がある。
【0008】
更に、いずれかのプロセッサコアが共有アクセス対象を占有する結果、プロセッサコア間のスループットが偏ってしまう可能性がある。
【0009】
本発明はこのような課題を解決するためのものであり、共有アクセス対象へのアクセスに関する調停を確実に行うことが可能なマルチコア・プロセッサを提供することを、主たる目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するための本発明の一態様は、
複数のプロセッサコアが独立して処理を行うことが可能なマルチコア・プロセッサであって、
前記複数のプロセッサコアによってアクセス可能なメモリ上に、特定の共有アクセス対象に対するアクセスの内容及び順序を規定するためのメッセージキューが設定され、
前記複数のプロセッサコアは、前記メッセージキューに対する所定の書き込み制御に応じて、前記特定の共有アクセス対象に対するアクセスに関するジョブ情報を排他的に前記メッセージキューに書き込み、
前記複数のプロセッサコアのうち少なくとも一の特定対象アクセス実行用プロセッサコアは、前記メッセージキューに書き込まれたジョブ情報に従って、前記特定の共有アクセス対象に対するアクセスを含む処理を実行することを特徴とする、
マルチコア・プロセッサである。
【0011】
この本発明の一態様によれば、複数のプロセッサコアが、所定の書き込み制御に応じて特定の共有アクセス対象に対するアクセスに関するジョブ情報を排他的にメッセージキューに書き込み、特定対象アクセス実行用プロセッサコアが、メッセージキューに書き込まれたジョブ情報に従って特定の共有アクセス対象に対するアクセスを、当該ジョブ情報を書き込んだプロセッサコアに代わって実行するため、共有アクセス対象へのアクセスに関する調停を確実に行うことができる。
【0012】
本発明の一態様において、
前記ジョブ情報は、処理の優先度に関する情報を含んでおり、
前記特定対象アクセス実行用プロセッサコアは、前記ジョブ情報に含まれる処理の優先度に関する情報に基づいて、前記処理を代行する順序を変更することを特徴とするものとすると、好適である。
【0013】
こうすれば、優先度に応じた処理順序で、ジョブ情報に含まれる処理を実行することができる。
【0014】
また、本発明の一態様において、
前記メッセージキューに対する所定の書き込み制御は、所定の順序に従って、前記メッセージキューにジョブ情報の書き込みを終了したプロセッサコアから、次に前記メッセージキューにジョブ情報の書き込むプロセッサコアに、順次書き込み可能通知を行うことによって排他制御が実現されるものとしてもよい。
【0015】
また、本発明の一態様において、
前記メッセージキューに対する所定の書き込み制御は、前記複数のプロセッサコアのうち少なくとも一の書込制御用プロセッサコアにおいて保持されている所定の順序に従って、該書込制御用プロセッサコアから各プロセッサコアに順次書き込み可能通知を行うことによって排他制御が実現されるものとしてもよい。
【0016】
また、本発明の一態様において、
前記書き込み可能通知は、ソフトウエア割り込みによって行われるものとしてもよいし、前記複数のプロセッサコアによってアクセス可能なメモリ上において、次に前記メッセージキューにジョブ情報の書き込むプロセッサコアを指定することによって行われるものとしてもよい。
【0017】
また、本発明の一態様は、
車両に搭載され、前記各プロセッサコアは、車両制御のための処理を行うことを特徴とするものとしてもよい。
【発明の効果】
【0018】
本発明によれば、共有アクセス対象へのアクセスに関する調停を確実に行うことが可能なマルチコア・プロセッサを提供することができる。
【図面の簡単な説明】
【0019】
【図1】本発明の第1実施例に係るマルチコア・プロセッサ1のシステム構成例である。
【図2】メッセージキュー42の概念を、格納されるジョブの状態や処理主体の変化と共に示す概念図である。
【図3】要求受付部から入力されるメッセージ情報、及び、これにジョブIDが付与されてメッセージキュー42に格納されたジョブ情報のデータ構造を示す図である。
【図4】本実施例に係るメッセージキュー42を実現可能なキューバッファの構造を示す図である。
【図5】図4に示した状態から、ジョブソート部36がジョブ情報を並べ替えた結果を示す図である。
【図6】各プロセッサコアの要求受付部によりメッセージキュー42にメッセージ情報が書き込まれる際の処理の流れを示すタイミングチャートである。
【図7】各プロセッサコアの要求受付部が実行する要求受付処理の流れを示すフローチャートである。
【図8】マルチコア・プロセッサ1の起動時やエラーからの回復時等に実行される初期化処理の流れを示すフローチャートである。
【図9】ジョブ実行部37により実行されるジョブ実行処理の流れを示すフローチャートである。本フローは、例えば周期的に繰り返し実行される。
【図10】ジョブ実行部37により実行されるジョブ開始処理の流れを示すフローチャートである。
【図11】ジョブ実行部37により実行されるジョブ終了処理の流れを示すフローチャートである。
【図12】従来のマルチコア・プロセッサにおいて、複数のプロセッサコアが同時に特定の共有アクセス対象にアクセスすることによって干渉が生じる様子を示す図である。
【図13】第1実施例のマルチコア・プロセッサ1において、干渉が生じるのが回避される様子を示す図である。
【図14】各コア間でメッセージキュー42に対する書き込みの制御が行われる様子を示すシーケンス図である。
【図15】プロセッサコア10のスケジューラ12によって実行されるリソースアクセス待ち処理の流れを示すフローチャートである。
【図16】プロセッサコア10のスケジューラ12によって実行されるリソースアクセス振り分け処理の流れを示すフローチャートである。
【図17】プロセッサコア20、30のスケジューラ22、32によって実行されるリソース占有開始処理の流れを示すフローチャートである。
【図18】プロセッサコア20、30のスケジューラ22、32によって実行されるリソース占有終了処理の流れを示すフローチャートである。
【図19】プロセッサコア10のスケジューラ12によって実行されるリソースアクセス終了処理の流れを示すフローチャートである。
【図20】第1実施例及び第2実施例に付加機能として追加され得る部分構成図である。
【図21】各プロセッサコアがI/Oポートにアクセスする際の処理の流れを示すタイミングチャートである。
【図22】第1実施例及び第2実施例に付加機能として追加され得る部分構成図である。
【発明を実施するための形態】
【0020】
以下、本発明を実施するための形態について、添付図面を参照しながら実施例を挙げて説明する。
【実施例】
【0021】
<第1実施例>
以下、図面を参照し、本発明の第1実施例に係るマルチコア・プロセッサについて説明する。本実施例のマルチコア・プロセッサは、複数のプロセッサコアが独立して処理を行うことが可能なものであり、例えば複数の機能が統合された車載制御装置のように、複数のタスクを同時実行する装置に好適に適用される。
【0022】
[構成]
図1は、本発明の第1実施例に係るマルチコア・プロセッサ1のシステム構成例である。マルチコア・プロセッサ1は、複数のプロセッサコア(個数に特段の制限はないが、本明細書においては3個とする)10、20、30と、共有メモリ40と、特定の共有アクセス対象の一例としての不揮発性メモリ50と、を備える。不揮発性メモリ50は、例えばEEPROM(Electrically Erasable and Programmable Read Only Memory)やフラッシュメモリである。
【0023】
各プロセッサコアは、図示しないプログラムメモリに格納された命令列をフェッチして一時的に格納する命令バッファ、命令列に格納された命令列をデコード(復号)する命令デコーダ、命令デコーダによりデコードされた命令を実行するための演算器、演算器による演算結果等が格納されるレジスタ、一次キャッシュメモリ等を有しており、それぞれが特定のタスクに係る処理を実行する。
【0024】
本実施例では、プロセッサコア10は、上記のように命令を実行することにより機能する機能ブロックとして、タイミング生成部11、スケジューラ12、機能モジュール13、14、要求受付部15を備える。ここで、機能モジュールとは、マルチコア・プロセッサ1が本来実行すべき種々のタスクを構成する処理単位である。
【0025】
また、プロセッサコア20は、機能ブロックとして、スケジューラ22、機能モジュール23、24、要求受付部25を備える。
【0026】
また、プロセッサコア30は、機能ブロックとして、スケジューラ32、機能モジュール33、34、要求受付部35、ジョブソート部36、ジョブ実行部37、メモリドライバ38を備える。
【0027】
共有メモリ40は、例えばRAM(Random Access Memory)であり、各プロセッサコアにより読み書き可能となっている。共有メモリ40には、例えば機能モジュール毎に、ワーク領域と当該機能モジュールの処理状況を示すジョブ状態を示す領域が設定されている。なお、図1では機能モジュール13、23、33についてのワーク領域の図示を省略した。
【0028】
また、共有メモリ40には、特定の共有アクセス対象(本実施例では不揮発性メモリ50)に対するアクセスの内容及び順序を規定するためのメッセージキュー42が設定されている。
【0029】
図2は、メッセージキュー42の概念を、格納されるジョブの状態や処理主体の変化と共に示す概念図である。図示するように、メッセージキュー42には、複数のジョブ情報が、入力順ないし処理順に格納されている。
【0030】
ジョブの状態は、ジョブ情報として格納される前の「登録待ち」状態から、ジョブ情報として格納された後の「実行待ち」状態、キュー先頭に至って実行順が回ってきた後の「実行中」状態、処理が完了した後の「完了」状態の順に推移する。「登録待ち」状態は、いずれかの要求受付部から入力された状態であり、「実行待ち」状態においてはジョブソート部36によって並べ替えが行われる。そして、「実行中」状態ではジョブ実行部37によって処理が実行される。
【0031】
図3は、要求受付部から入力されるメッセージ情報、及び、これにジョブIDが付与されてメッセージキュー42に格納されたジョブ情報のデータ構造を示す図である。本実施例におけるジョブ情報は、いずれかの要求受付部から入力されたメッセージ情報にジョブIDが付与されたものである。
【0032】
メッセージキュー42は、例えばキューバッファによって実現される。図4は、本実施例に係るメッセージキュー42を実現可能なキューバッファの構造を示す図である。図示するように、キューバッファは、ジョブIC、及び優先度等を含むメッセージ情報からなるマトリクスデータに配列インデクスが付与され、更に、ポインタ44A、44Bによってキューの先頭と末尾がそれぞれ指定されている。ポインタ44A、44Bは、ジョブの実行に応じて移動する構成となっている。図4は、配列インデクス[3]に格納されたジョブが完了した後の状態を示しており、次に実行されるジョブは、配列インデクス[4]に格納された、ジョブIDが「01」のジョブである。この配列インデクス[4]に格納されたジョブの実行が完了すると、ポインタ44Aが一段下に移動する。
【0033】
ジョブソート部36は、例えばジョブ情報に含まれる優先度に従って、メッセージキュー42に格納されたジョブ情報を並べ替える。図5は、図4に示した状態から、ジョブソート部36がジョブ情報を並べ替えた結果を示す図である。
【0034】
そして、前述のように、メッセージキュー42にジョブ情報が格納されたジョブは、プロセッサコア30のジョブ実行部37によって実行される。例えば、プロセッサコア10の要求受付部15によって書き込まれた、不揮発性メモリ50の所定アドレスからデータを読み込むジョブを実行する場合、プロセッサコア30のジョブ実行部37は、不揮発性メモリ50の所定アドレスからデータを読み込んで共有メモリ40におけるプロセッサコア10の、該当する機能モジュールのためのワーク領域にデータを格納する。プロセッサコア30は、不揮発性メモリ50にアクセスするための機能として、メモリドライバ38を備えている。
【0035】
このように、本実施例のマルチコア・プロセッサ1では、不揮発性メモリ50へのアクセスに係る処理をプロセッサコア30に一本化して実行させているため、複数のプロセッサコアが同時に不揮発性メモリ50にアクセスすることによって干渉が生じるのを、確実に回避することができる。
【0036】
[メッセージキュー42に対する書き込みの制御]
図6は、各プロセッサコアの要求受付部によりメッセージキュー42にメッセージ情報が書き込まれる際の処理の流れを示すタイミングチャートである。プロセッサコア10のタイミング生成部11は、所定周期毎に要求受付開始のための基準タイミング通知を行う。なお、この所定周期は、例えば、各プロセッサコアの機能モジュールの全てが不揮発性メモリ50へのアクセスを行った際の処理時間の合計よりも、十分余裕のある時間に設定される。
【0037】
プロセッサコア10のスケジューラ12は、基準タイミング通知を検知すると、要求受付部15に要求受付許可通知を行う(時刻t1)。要求受付部15は、メッセージキュー42に空きがある場合、ジョブ情報をメッセージキュー42に書き込む(時刻t1〜t2)。スケジューラ12は、メッセージ情報の出力が完了すると、要求受付許可通知をプロセッサコア20のスケジューラ22に対して行う(時刻t3)。ここで、要求受付許可通知は、例えばソフトウエア/ハードウエア割り込みによって行われるが、スケジューラ12が共有メモリ40にフラグ等を設定し、スケジューラ22がポーリングすることによって行われても構わない。他のスケジューラ間でも同様である。
【0038】
プロセッサコア20のスケジューラ22は、要求受付許可通知を検知すると、要求受付部25に起動信号を出力する(時刻t3)。要求受付部25は、メッセージキュー42に空きがある場合、ジョブ情報をメッセージキュー42に書き込む(時刻t3〜t4)。スケジューラ22は、メッセージ情報の出力が完了すると、要求受付許可通知をプロセッサコア30のスケジューラ32に対して行う(時刻t5)。
【0039】
プロセッサコア30のスケジューラ32は、要求受付許可通知を検知すると要求受付部35に起動信号を出力する(時刻t5)。要求受付部35は、メッセージキュー42に空きがある場合、ジョブ情報をメッセージキュー42に書き込む(時刻t5〜t6)。スケジューラ32は、メッセージ情報の出力が完了すると、ジョブソート部36にジョブ情報の並べ替えを指示する(時刻t7)。ジョブソート部36がジョブ情報の並べ替えを終了すると、ジョブ実行部37によって、メッセージキュー42に格納されたジョブ情報に基づいて、ジョブが実行される(時刻t8)。
【0040】
このように、プロセッサコア10のタイミング生成部11によって開始信号が出力され、これに応じて各プロセッサコアの要求受付部が順次メッセージ情報の出力を行うように制御される。これによって、ジョブ情報の書き込みに関してプロセッサコア間で干渉が生じるのを回避することができる。
【0041】
[各種処理フロー]
以下、各機能ブロックの動作について、それぞれフローチャートに即して説明する。
【0042】
図7は、各プロセッサコアの要求受付部が実行する要求受付処理の流れを示すフローチャートである。本フローは、前述のように要求受付許可通知が検知されたときに、当該プロセッサコアにおいて実行中の機能モジュール毎に実行される。
【0043】
まず、要求受付部は、共有メモリ40における、当該処理に対応するジョブ状態を示す記憶領域に「登録待ち」を書き込む(S100)。
【0044】
次に、要求受付部は、メッセージキュー42に空きが存在するか否かを判定する(S102)。本判定は、例えば、外部変数として保持されているポインタ44A、44Bの位置(先頭及び末尾の位置)を参照することにより行う。メッセージキュー42に空きが存在しない場合は、本フローを終了する。
【0045】
メッセージキュー42に空きが存在する場合は、ポインタ44Bの位置を1つインクリメントしてキューの末尾の位置を繰り下げ(S104)、今回登録するメッセージ情報にジョブIDを付与してキューの末尾に登録する(S106)。
【0046】
そして、共有メモリ40における、当該処理に対応するジョブ状態を示す記憶領域に「実行待ち」を書き込み(S108)、本フローを終了する。
【0047】
図8は、マルチコア・プロセッサ1の起動時やエラーからの回復時等に実行される初期化処理の流れを示すフローチャートである。本フローは、マルチコア・プロセッサ1の図示しないOS(Operating System)等によって実行される。
【0048】
初期化処理においては、外部変数として保持されている実行状態をアイドル状態とし(S200)、ポインタ44A、44Bの位置をゼロ位置とする(S202、S204)。ここで、「実行状態」とは、メモリドライバ38による不揮発性メモリ50へのアクセス処理の実行状態を示すデータである。
【0049】
図9は、ジョブ実行部37により実行されるジョブ実行処理の流れを示すフローチャートである。本フローは、例えば周期的に繰り返し実行される。
【0050】
まず、ジョブ実行部37は、外部変数として保持されている実行状態がアイドル状態であるか否かを判定する(S300)。
【0051】
実行状態がアイドル状態である場合は、メッセージキュー42に実行待ちのジョブ情報が存在するか否かを判定する(S302)。本判定は、例えばポインタ44A、44Bの位置を参照することによって行うことができる。メッセージキュー42に実行待ちのジョブ情報が存在しない場合は、本フローの1ルーチンを終了する。
【0052】
メッセージキュー42に実行待ちのジョブ情報が存在する場合は、図10に示すジョブ開始処理を実行する(S304)。
【0053】
一方、実行状態がアイドル状態でない場合は、メモリドライバ38がアイドル状態であるか否かを判定する(S306)。メモリドライバ38がアイドル状態でない場合は、本フローの1ルーチンを終了する。メモリドライバ38がアイドル状態でないと判定されるのは、実行状態、メモリドライバ38共にアイドル状態でない場合、すなわち、不揮発性メモリ50へのアクセスが実行中の場合である。
【0054】
メモリドライバ38がアイドル状態である場合は、図11に示すジョブ終了処理を実行する(S308)。
【0055】
図10は、ジョブ実行部37により実行されるジョブ開始処理の流れを示すフローチャートである。
【0056】
まず、ジョブ実行部37は、キュー先頭のジョブ情報からメッセージ情報を取り出す(S400)。そして、メッセージ情報に含まれる各データに従って、メモリドライバ38に対してアクセス指示を発行する(S402)。
【0057】
次に、実行状態を実行中とし(S404)、当該処理に対応するジョブ状態を示す共有メモリ40の記憶領域に「実行中」を書き込む(S406)。この記憶領域は、前述のように、要求受付部から入力されたメッセージ情報に含まれている。
【0058】
そして、ポインタ44Aの位置を1つインクリメントしてキューの先頭の位置を繰り下げ(S408)、本フローを終了する。
【0059】
図11は、ジョブ実行部37により実行されるジョブ終了処理の流れを示すフローチャートである。
【0060】
ジョブ終了処理において、ジョブ実行部37は、ジョブ実行部37は、実行状態をアイドル状態とし(S500)、次に当該処理に対応するジョブ状態を示す共有メモリ40の記憶領域に「完了」を書き込み(S502)、本フローを終了する。
【0061】
[まとめ]
以上説明した本実施例のマルチコア・プロセッサ1によれば、不揮発性メモリ50へのアクセスに係る処理をプロセッサコア30に一本化して実行させているため、複数のプロセッサコアが同時に不揮発性メモリ50にアクセスすることによって干渉が生じるのを、確実に回避することができる。
【0062】
また、プロセッサコア10のタイミング生成部11によって基準タイミング通知が行われ、これに応じて各プロセッサコアの要求受付部が順次メッセージ情報の出力を行うように制御されるため、ジョブ情報の書き込みに関してプロセッサコア間で干渉が生じるのを回避することができる。
【0063】
なお、図12は、従来のマルチコア・プロセッサにおいて、複数のプロセッサコアが同時に特定の共有アクセス対象にアクセスすることによって干渉が生じる様子を示す図である。これに対し、図13は、本実施例のマルチコア・プロセッサ1において、干渉が生じるのが回避される様子を示す図である。
【0064】
<第2実施例>
以下、図面を参照し、本発明の第2実施例に係るマルチコア・プロセッサについて説明する。本実施例のマルチコア・プロセッサは、複数のプロセッサコアが独立して処理を行うことが可能なものであり、例えば複数の機能が統合された車載制御装置のように、複数のタスクを同時実行する装置に好適に適用される。
【0065】
[構成]
本実施例のマルチコア・プロセッサ2は、構成、及び各構成要素の基本的機能において第1実施例と共通するため、図1を援用することとし、各構成要素について同一の符号を付し、第1実施例との相違点を中心に説明する。
【0066】
本実施例のマルチコア・プロセッサ2においても、不揮発性メモリ50へのアクセスに係る処理をプロセッサコア30に一本化して実行させているため、複数のプロセッサコアが同時に不揮発性メモリ50にアクセスすることによって干渉が生じるのを、確実に回避することができる。
【0067】
[メッセージキュー42に対する書き込みの制御、各種処理フロー]
各プロセッサコアの要求受付部によりメッセージキュー42にメッセージ情報が書き込まれる際の処理の流れについても、第1実施例と同様であり、図6を援用する。
【0068】
但し、本実施例では、メッセージキュー42に対する書き込みの制御において、スケジューラ間の通知の流れが第1実施例と異なっている。
【0069】
図14は、各コア間でメッセージキュー42に対する書き込みの制御が行われる様子を示すシーケンス図である。
【0070】
まず、プロセッサコア10は、図15に示すようなリソースアクセス待ち処理を実行する(S600)。なお、本図における「リソース」とは、共有メモリ40を指している。
【0071】
リソースアクセス待ち処理が終了すると、プロセッサコア10は、第1実施例において図7で説明した要求受付処理を、機能モジュール13、14のそれぞれについて実行する(S602、S604)。
【0072】
要求受付処理が終了すると、プロセッサコア10は、図16に示すようなリソース振り分け処理を実行する(S606)。ここでは、対象コアはプロセッサコア20となる。
【0073】
リソース振り分け処理においてプロセッサコア10からプロセッサ20に対して要求受付許可通知が行われると、プロセッサ20は図17に示すようなリソース占有開始処理を実行する(S610)。
【0074】
リソースアクセス待ち処理が終了すると、プロセッサコア20は、第1実施例において図7で説明した要求受付処理を、機能モジュール23、24のそれぞれについて実行する(S612、S614)。
【0075】
要求受付処理が終了すると、プロセッサコア20は、図18に示すようなリソース占有終了処理を実行する(S616)。
【0076】
リソース占有終了処理においてプロセッサコア20からプロセッサ10に対してリソース占有終了通知が行われると、プロセッサ10は、図16に示すようなリソース振り分け処理を実行する(S618)。ここでは、対象コアはプロセッサコア30となる。
【0077】
リソース振り分け処理においてプロセッサコア10からプロセッサ30に対して要求受付許可通知が行われると、プロセッサ30は図17に示すようなリソース占有開始処理を実行する(S620)。
【0078】
リソースアクセス待ち処理が終了すると、プロセッサコア30は、第1実施例において図7で説明した要求受付処理を、機能モジュール33、34のそれぞれについて実行する(S622、S624)。
【0079】
要求受付処理が終了すると、ジョブソート部36がジョブソートを実行し(S626)、ジョブ実行部37がジョブを実行する(S628)。
【0080】
そして、プロセッサコア30のスケジューラ32は、図18に示すようなリソース占有終了処理を実行する(S630)。
【0081】
リソース占有終了処理においてプロセッサコア30からプロセッサ10に対してリソース占有終了通知が行われると、プロセッサ10は、図19に示すようなリソースアクセス終了処理を実行する(S640)。
【0082】
図15は、プロセッサコア10のスケジューラ12によって実行されるリソースアクセス待ち処理の流れを示すフローチャートである。
【0083】
まず、スケジューラ12は、タイミング生成部11によって基準タイミング通知がなされるまで待機する(S700)。
【0084】
基準タイミング通知がなされると、リソースアクセスが終了状態であるか否かを判定する(S702)。リソースアクセスが終了状態でなければエラー処理を行い(S704)、S700に戻る。
【0085】
リソースアクセスが終了状態である場合は、リソースアクセスを開始状態とする(S706)。
【0086】
図16は、プロセッサコア10のスケジューラ12によって実行されるリソースアクセス振り分け処理の流れを示すフローチャートである。
【0087】
リソースアクセス振り分け処理において、スケジューラ12は、スケジュール(本実施例の場合は、プロセッサコア10→プロセッサコア20→プロセッサコア30と規定されている)に従って、対象プロセッサコアに要求受付許可通知を行う(S800)。
【0088】
図17は、プロセッサコア20、30のスケジューラ22、32によって実行されるリソース占有開始処理の流れを示すフローチャートである。
【0089】
リソース占有開始処理において、プロセッサコア20、30のスケジューラ22、32は、自コアのアクセルタスクを起床する(S900)。
【0090】
図18は、プロセッサコア20、30のスケジューラ22、32によって実行されるリソース占有終了処理の流れを示すフローチャートである。
【0091】
リソース占有終了処理において、プロセッサコア20、30のスケジューラ22、32は、プロセッサコア10に対して自コアの占有終了を通知し(S1000)、自コアのアクセスタスクを終了する(S1002)。
【0092】
図19は、プロセッサコア10のスケジューラ12によって実行されるリソースアクセス終了処理の流れを示すフローチャートである。
【0093】
リソースアクセス振り分け処理において、スケジューラ12は、リソースアクセスを終了状態とする(S1100)。
【0094】
このように、プロセッサコア10のタイミング生成部11によって開始信号が出力され、これに応じて各プロセッサコアの要求受付部が順次メッセージ情報の出力を行うように制御される。これによって、ジョブ情報の書き込みに関してプロセッサコア間で干渉が生じるのを回避することができる。
【0095】
[まとめ]
以上説明した本実施例のマルチコア・プロセッサ2によれば、不揮発性メモリ50へのアクセスに係る処理をプロセッサコア30に一本化して実行させているため、複数のプロセッサコアが同時に不揮発性メモリ50にアクセスすることによって干渉が生じるのを、確実に回避することができる。
【0096】
また、プロセッサコア20のタイミング生成部11によって基準タイミング通知が行われ、これに応じて各プロセッサコアの要求受付部が順次メッセージ情報の出力を行うように制御されるため、ジョブ情報の書き込みに関してプロセッサコア間で干渉が生じるのを回避することができる。
【0097】
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【0098】
例えば、特定の共有アクセス対象の例として不揮発性メモリ50を挙げたが、これに限らず、ソークタイマIC等、他の機器が特定の共有アクセス対象に該当するものとしてもよい。ソークタイマICとは、車載制御装置において、キーをオフしている時間を計測したり、キーオフ中の所定時刻に車載制御装置の電源をオン状態としたりする機能を有するものである。
【0099】
また、各プロセッサコアが要求受付部に相当する機能を有する構成としたが、プロセッサ間の共通関数として保持されるものとしてもよい。
【0100】
また、特定の共有アクセス対象以外の共有アクセス対象について、各プロセッサコアが独立してアクセス可能としてもよい。図20は、第1実施例及び第2実施例に付加機能として追加され得る部分構成図である。図示するように、外部I/Oポート等、レイテンシの短い機器については、各プロセッサコアがドライバを備え、独立してアクセス可能であってもよい。図21は、各プロセッサコアがI/Oポートにアクセスする際の処理の流れを示すタイミングチャートである。係る変形は、スタンバイRAMについても同様である。図22は、第1実施例及び第2実施例に付加機能として追加され得る部分構成図である。
【符号の説明】
【0101】
1、2 マルチコア・プロセッサ
10、20、30 プロセッサコア
11 タイミング生成部
12、22、32 スケジューラ
13、14、23、24、33、34 機能モジュール
15、25、35 要求受付部
40 共有メモリ
50 不揮発性メモリ
【技術分野】
【0001】
本発明は、複数のプロセッサコアが独立して処理を行うことが可能なマルチコア・プロセッサに関する。
【背景技術】
【0002】
従来、一個のパッケージ内に複数のプロセッサコア(CPUコア)を備えるマルチコア・プロセッサについて実用化が図られている。マルチコア・プロセッサにおいて、各コアは独立して演算処理等を行うことが可能である。従って、特に複数の機能が統合された車載制御装置のように、複数のタスクを同時実行する装置に適用された場合に、高速処理を実現することができる。
【0003】
これに関連した移動体用マルチコアCPUの制御装置についての発明が開示されている(例えば、特許文献1参照)。この制御装置では、処理能力を低下させる異常が発生したことを検出する異常検出手段と、複数のCPUコアに割り当てられた処理の優先度を格納する処理優先度格納手段と、複数のCPUコアの各々の処理能力を調整するための処理能力調整手段とを備え、異常検出手段によって異常が検出されたときに、処理優先度格納手段に格納された処理の優先度が最も高い処理が割り当てられたCPUコア以外のCPUコアの処理能力を低減させるように制御している。
【0004】
ところで、マルチコア・プロセッサでは、不揮発性メモリ等の共有アクセス対象が存在するのが通常である。このため、複数のプロセッサコアが同時にこうした共有アクセス対象にアクセスしないように制御する必要がある。
【0005】
特許文献2に記載のマルチコア・プロセッサでは、回路情報に基づいて動的に回路構成を再構成可能な複数のリコンフィギュラブルデバイスを備え、複数のプロセッサコアのいずれかがリコンフィギュラブルデバイスを使用している際には、当該リコンフィギュラブルデバイスがいずれかのプロセッサコアにロックされていることを示すロック情報をメモリに記憶させることによって、排他制御を行っている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2008−097280号公報
【特許文献2】特開2010−044578号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、上記従来の特許文献2に記載のマルチコア・プロセッサのような排他制御を共有アクセス対象について行う場合、各プロセッサコアがロック情報を参照しなければならず、処理が遅延するおそれがある。また、ロック情報が記憶されるメモリへのアクセスに関しても、排他制御を行う必要がある。
【0008】
更に、いずれかのプロセッサコアが共有アクセス対象を占有する結果、プロセッサコア間のスループットが偏ってしまう可能性がある。
【0009】
本発明はこのような課題を解決するためのものであり、共有アクセス対象へのアクセスに関する調停を確実に行うことが可能なマルチコア・プロセッサを提供することを、主たる目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するための本発明の一態様は、
複数のプロセッサコアが独立して処理を行うことが可能なマルチコア・プロセッサであって、
前記複数のプロセッサコアによってアクセス可能なメモリ上に、特定の共有アクセス対象に対するアクセスの内容及び順序を規定するためのメッセージキューが設定され、
前記複数のプロセッサコアは、前記メッセージキューに対する所定の書き込み制御に応じて、前記特定の共有アクセス対象に対するアクセスに関するジョブ情報を排他的に前記メッセージキューに書き込み、
前記複数のプロセッサコアのうち少なくとも一の特定対象アクセス実行用プロセッサコアは、前記メッセージキューに書き込まれたジョブ情報に従って、前記特定の共有アクセス対象に対するアクセスを含む処理を実行することを特徴とする、
マルチコア・プロセッサである。
【0011】
この本発明の一態様によれば、複数のプロセッサコアが、所定の書き込み制御に応じて特定の共有アクセス対象に対するアクセスに関するジョブ情報を排他的にメッセージキューに書き込み、特定対象アクセス実行用プロセッサコアが、メッセージキューに書き込まれたジョブ情報に従って特定の共有アクセス対象に対するアクセスを、当該ジョブ情報を書き込んだプロセッサコアに代わって実行するため、共有アクセス対象へのアクセスに関する調停を確実に行うことができる。
【0012】
本発明の一態様において、
前記ジョブ情報は、処理の優先度に関する情報を含んでおり、
前記特定対象アクセス実行用プロセッサコアは、前記ジョブ情報に含まれる処理の優先度に関する情報に基づいて、前記処理を代行する順序を変更することを特徴とするものとすると、好適である。
【0013】
こうすれば、優先度に応じた処理順序で、ジョブ情報に含まれる処理を実行することができる。
【0014】
また、本発明の一態様において、
前記メッセージキューに対する所定の書き込み制御は、所定の順序に従って、前記メッセージキューにジョブ情報の書き込みを終了したプロセッサコアから、次に前記メッセージキューにジョブ情報の書き込むプロセッサコアに、順次書き込み可能通知を行うことによって排他制御が実現されるものとしてもよい。
【0015】
また、本発明の一態様において、
前記メッセージキューに対する所定の書き込み制御は、前記複数のプロセッサコアのうち少なくとも一の書込制御用プロセッサコアにおいて保持されている所定の順序に従って、該書込制御用プロセッサコアから各プロセッサコアに順次書き込み可能通知を行うことによって排他制御が実現されるものとしてもよい。
【0016】
また、本発明の一態様において、
前記書き込み可能通知は、ソフトウエア割り込みによって行われるものとしてもよいし、前記複数のプロセッサコアによってアクセス可能なメモリ上において、次に前記メッセージキューにジョブ情報の書き込むプロセッサコアを指定することによって行われるものとしてもよい。
【0017】
また、本発明の一態様は、
車両に搭載され、前記各プロセッサコアは、車両制御のための処理を行うことを特徴とするものとしてもよい。
【発明の効果】
【0018】
本発明によれば、共有アクセス対象へのアクセスに関する調停を確実に行うことが可能なマルチコア・プロセッサを提供することができる。
【図面の簡単な説明】
【0019】
【図1】本発明の第1実施例に係るマルチコア・プロセッサ1のシステム構成例である。
【図2】メッセージキュー42の概念を、格納されるジョブの状態や処理主体の変化と共に示す概念図である。
【図3】要求受付部から入力されるメッセージ情報、及び、これにジョブIDが付与されてメッセージキュー42に格納されたジョブ情報のデータ構造を示す図である。
【図4】本実施例に係るメッセージキュー42を実現可能なキューバッファの構造を示す図である。
【図5】図4に示した状態から、ジョブソート部36がジョブ情報を並べ替えた結果を示す図である。
【図6】各プロセッサコアの要求受付部によりメッセージキュー42にメッセージ情報が書き込まれる際の処理の流れを示すタイミングチャートである。
【図7】各プロセッサコアの要求受付部が実行する要求受付処理の流れを示すフローチャートである。
【図8】マルチコア・プロセッサ1の起動時やエラーからの回復時等に実行される初期化処理の流れを示すフローチャートである。
【図9】ジョブ実行部37により実行されるジョブ実行処理の流れを示すフローチャートである。本フローは、例えば周期的に繰り返し実行される。
【図10】ジョブ実行部37により実行されるジョブ開始処理の流れを示すフローチャートである。
【図11】ジョブ実行部37により実行されるジョブ終了処理の流れを示すフローチャートである。
【図12】従来のマルチコア・プロセッサにおいて、複数のプロセッサコアが同時に特定の共有アクセス対象にアクセスすることによって干渉が生じる様子を示す図である。
【図13】第1実施例のマルチコア・プロセッサ1において、干渉が生じるのが回避される様子を示す図である。
【図14】各コア間でメッセージキュー42に対する書き込みの制御が行われる様子を示すシーケンス図である。
【図15】プロセッサコア10のスケジューラ12によって実行されるリソースアクセス待ち処理の流れを示すフローチャートである。
【図16】プロセッサコア10のスケジューラ12によって実行されるリソースアクセス振り分け処理の流れを示すフローチャートである。
【図17】プロセッサコア20、30のスケジューラ22、32によって実行されるリソース占有開始処理の流れを示すフローチャートである。
【図18】プロセッサコア20、30のスケジューラ22、32によって実行されるリソース占有終了処理の流れを示すフローチャートである。
【図19】プロセッサコア10のスケジューラ12によって実行されるリソースアクセス終了処理の流れを示すフローチャートである。
【図20】第1実施例及び第2実施例に付加機能として追加され得る部分構成図である。
【図21】各プロセッサコアがI/Oポートにアクセスする際の処理の流れを示すタイミングチャートである。
【図22】第1実施例及び第2実施例に付加機能として追加され得る部分構成図である。
【発明を実施するための形態】
【0020】
以下、本発明を実施するための形態について、添付図面を参照しながら実施例を挙げて説明する。
【実施例】
【0021】
<第1実施例>
以下、図面を参照し、本発明の第1実施例に係るマルチコア・プロセッサについて説明する。本実施例のマルチコア・プロセッサは、複数のプロセッサコアが独立して処理を行うことが可能なものであり、例えば複数の機能が統合された車載制御装置のように、複数のタスクを同時実行する装置に好適に適用される。
【0022】
[構成]
図1は、本発明の第1実施例に係るマルチコア・プロセッサ1のシステム構成例である。マルチコア・プロセッサ1は、複数のプロセッサコア(個数に特段の制限はないが、本明細書においては3個とする)10、20、30と、共有メモリ40と、特定の共有アクセス対象の一例としての不揮発性メモリ50と、を備える。不揮発性メモリ50は、例えばEEPROM(Electrically Erasable and Programmable Read Only Memory)やフラッシュメモリである。
【0023】
各プロセッサコアは、図示しないプログラムメモリに格納された命令列をフェッチして一時的に格納する命令バッファ、命令列に格納された命令列をデコード(復号)する命令デコーダ、命令デコーダによりデコードされた命令を実行するための演算器、演算器による演算結果等が格納されるレジスタ、一次キャッシュメモリ等を有しており、それぞれが特定のタスクに係る処理を実行する。
【0024】
本実施例では、プロセッサコア10は、上記のように命令を実行することにより機能する機能ブロックとして、タイミング生成部11、スケジューラ12、機能モジュール13、14、要求受付部15を備える。ここで、機能モジュールとは、マルチコア・プロセッサ1が本来実行すべき種々のタスクを構成する処理単位である。
【0025】
また、プロセッサコア20は、機能ブロックとして、スケジューラ22、機能モジュール23、24、要求受付部25を備える。
【0026】
また、プロセッサコア30は、機能ブロックとして、スケジューラ32、機能モジュール33、34、要求受付部35、ジョブソート部36、ジョブ実行部37、メモリドライバ38を備える。
【0027】
共有メモリ40は、例えばRAM(Random Access Memory)であり、各プロセッサコアにより読み書き可能となっている。共有メモリ40には、例えば機能モジュール毎に、ワーク領域と当該機能モジュールの処理状況を示すジョブ状態を示す領域が設定されている。なお、図1では機能モジュール13、23、33についてのワーク領域の図示を省略した。
【0028】
また、共有メモリ40には、特定の共有アクセス対象(本実施例では不揮発性メモリ50)に対するアクセスの内容及び順序を規定するためのメッセージキュー42が設定されている。
【0029】
図2は、メッセージキュー42の概念を、格納されるジョブの状態や処理主体の変化と共に示す概念図である。図示するように、メッセージキュー42には、複数のジョブ情報が、入力順ないし処理順に格納されている。
【0030】
ジョブの状態は、ジョブ情報として格納される前の「登録待ち」状態から、ジョブ情報として格納された後の「実行待ち」状態、キュー先頭に至って実行順が回ってきた後の「実行中」状態、処理が完了した後の「完了」状態の順に推移する。「登録待ち」状態は、いずれかの要求受付部から入力された状態であり、「実行待ち」状態においてはジョブソート部36によって並べ替えが行われる。そして、「実行中」状態ではジョブ実行部37によって処理が実行される。
【0031】
図3は、要求受付部から入力されるメッセージ情報、及び、これにジョブIDが付与されてメッセージキュー42に格納されたジョブ情報のデータ構造を示す図である。本実施例におけるジョブ情報は、いずれかの要求受付部から入力されたメッセージ情報にジョブIDが付与されたものである。
【0032】
メッセージキュー42は、例えばキューバッファによって実現される。図4は、本実施例に係るメッセージキュー42を実現可能なキューバッファの構造を示す図である。図示するように、キューバッファは、ジョブIC、及び優先度等を含むメッセージ情報からなるマトリクスデータに配列インデクスが付与され、更に、ポインタ44A、44Bによってキューの先頭と末尾がそれぞれ指定されている。ポインタ44A、44Bは、ジョブの実行に応じて移動する構成となっている。図4は、配列インデクス[3]に格納されたジョブが完了した後の状態を示しており、次に実行されるジョブは、配列インデクス[4]に格納された、ジョブIDが「01」のジョブである。この配列インデクス[4]に格納されたジョブの実行が完了すると、ポインタ44Aが一段下に移動する。
【0033】
ジョブソート部36は、例えばジョブ情報に含まれる優先度に従って、メッセージキュー42に格納されたジョブ情報を並べ替える。図5は、図4に示した状態から、ジョブソート部36がジョブ情報を並べ替えた結果を示す図である。
【0034】
そして、前述のように、メッセージキュー42にジョブ情報が格納されたジョブは、プロセッサコア30のジョブ実行部37によって実行される。例えば、プロセッサコア10の要求受付部15によって書き込まれた、不揮発性メモリ50の所定アドレスからデータを読み込むジョブを実行する場合、プロセッサコア30のジョブ実行部37は、不揮発性メモリ50の所定アドレスからデータを読み込んで共有メモリ40におけるプロセッサコア10の、該当する機能モジュールのためのワーク領域にデータを格納する。プロセッサコア30は、不揮発性メモリ50にアクセスするための機能として、メモリドライバ38を備えている。
【0035】
このように、本実施例のマルチコア・プロセッサ1では、不揮発性メモリ50へのアクセスに係る処理をプロセッサコア30に一本化して実行させているため、複数のプロセッサコアが同時に不揮発性メモリ50にアクセスすることによって干渉が生じるのを、確実に回避することができる。
【0036】
[メッセージキュー42に対する書き込みの制御]
図6は、各プロセッサコアの要求受付部によりメッセージキュー42にメッセージ情報が書き込まれる際の処理の流れを示すタイミングチャートである。プロセッサコア10のタイミング生成部11は、所定周期毎に要求受付開始のための基準タイミング通知を行う。なお、この所定周期は、例えば、各プロセッサコアの機能モジュールの全てが不揮発性メモリ50へのアクセスを行った際の処理時間の合計よりも、十分余裕のある時間に設定される。
【0037】
プロセッサコア10のスケジューラ12は、基準タイミング通知を検知すると、要求受付部15に要求受付許可通知を行う(時刻t1)。要求受付部15は、メッセージキュー42に空きがある場合、ジョブ情報をメッセージキュー42に書き込む(時刻t1〜t2)。スケジューラ12は、メッセージ情報の出力が完了すると、要求受付許可通知をプロセッサコア20のスケジューラ22に対して行う(時刻t3)。ここで、要求受付許可通知は、例えばソフトウエア/ハードウエア割り込みによって行われるが、スケジューラ12が共有メモリ40にフラグ等を設定し、スケジューラ22がポーリングすることによって行われても構わない。他のスケジューラ間でも同様である。
【0038】
プロセッサコア20のスケジューラ22は、要求受付許可通知を検知すると、要求受付部25に起動信号を出力する(時刻t3)。要求受付部25は、メッセージキュー42に空きがある場合、ジョブ情報をメッセージキュー42に書き込む(時刻t3〜t4)。スケジューラ22は、メッセージ情報の出力が完了すると、要求受付許可通知をプロセッサコア30のスケジューラ32に対して行う(時刻t5)。
【0039】
プロセッサコア30のスケジューラ32は、要求受付許可通知を検知すると要求受付部35に起動信号を出力する(時刻t5)。要求受付部35は、メッセージキュー42に空きがある場合、ジョブ情報をメッセージキュー42に書き込む(時刻t5〜t6)。スケジューラ32は、メッセージ情報の出力が完了すると、ジョブソート部36にジョブ情報の並べ替えを指示する(時刻t7)。ジョブソート部36がジョブ情報の並べ替えを終了すると、ジョブ実行部37によって、メッセージキュー42に格納されたジョブ情報に基づいて、ジョブが実行される(時刻t8)。
【0040】
このように、プロセッサコア10のタイミング生成部11によって開始信号が出力され、これに応じて各プロセッサコアの要求受付部が順次メッセージ情報の出力を行うように制御される。これによって、ジョブ情報の書き込みに関してプロセッサコア間で干渉が生じるのを回避することができる。
【0041】
[各種処理フロー]
以下、各機能ブロックの動作について、それぞれフローチャートに即して説明する。
【0042】
図7は、各プロセッサコアの要求受付部が実行する要求受付処理の流れを示すフローチャートである。本フローは、前述のように要求受付許可通知が検知されたときに、当該プロセッサコアにおいて実行中の機能モジュール毎に実行される。
【0043】
まず、要求受付部は、共有メモリ40における、当該処理に対応するジョブ状態を示す記憶領域に「登録待ち」を書き込む(S100)。
【0044】
次に、要求受付部は、メッセージキュー42に空きが存在するか否かを判定する(S102)。本判定は、例えば、外部変数として保持されているポインタ44A、44Bの位置(先頭及び末尾の位置)を参照することにより行う。メッセージキュー42に空きが存在しない場合は、本フローを終了する。
【0045】
メッセージキュー42に空きが存在する場合は、ポインタ44Bの位置を1つインクリメントしてキューの末尾の位置を繰り下げ(S104)、今回登録するメッセージ情報にジョブIDを付与してキューの末尾に登録する(S106)。
【0046】
そして、共有メモリ40における、当該処理に対応するジョブ状態を示す記憶領域に「実行待ち」を書き込み(S108)、本フローを終了する。
【0047】
図8は、マルチコア・プロセッサ1の起動時やエラーからの回復時等に実行される初期化処理の流れを示すフローチャートである。本フローは、マルチコア・プロセッサ1の図示しないOS(Operating System)等によって実行される。
【0048】
初期化処理においては、外部変数として保持されている実行状態をアイドル状態とし(S200)、ポインタ44A、44Bの位置をゼロ位置とする(S202、S204)。ここで、「実行状態」とは、メモリドライバ38による不揮発性メモリ50へのアクセス処理の実行状態を示すデータである。
【0049】
図9は、ジョブ実行部37により実行されるジョブ実行処理の流れを示すフローチャートである。本フローは、例えば周期的に繰り返し実行される。
【0050】
まず、ジョブ実行部37は、外部変数として保持されている実行状態がアイドル状態であるか否かを判定する(S300)。
【0051】
実行状態がアイドル状態である場合は、メッセージキュー42に実行待ちのジョブ情報が存在するか否かを判定する(S302)。本判定は、例えばポインタ44A、44Bの位置を参照することによって行うことができる。メッセージキュー42に実行待ちのジョブ情報が存在しない場合は、本フローの1ルーチンを終了する。
【0052】
メッセージキュー42に実行待ちのジョブ情報が存在する場合は、図10に示すジョブ開始処理を実行する(S304)。
【0053】
一方、実行状態がアイドル状態でない場合は、メモリドライバ38がアイドル状態であるか否かを判定する(S306)。メモリドライバ38がアイドル状態でない場合は、本フローの1ルーチンを終了する。メモリドライバ38がアイドル状態でないと判定されるのは、実行状態、メモリドライバ38共にアイドル状態でない場合、すなわち、不揮発性メモリ50へのアクセスが実行中の場合である。
【0054】
メモリドライバ38がアイドル状態である場合は、図11に示すジョブ終了処理を実行する(S308)。
【0055】
図10は、ジョブ実行部37により実行されるジョブ開始処理の流れを示すフローチャートである。
【0056】
まず、ジョブ実行部37は、キュー先頭のジョブ情報からメッセージ情報を取り出す(S400)。そして、メッセージ情報に含まれる各データに従って、メモリドライバ38に対してアクセス指示を発行する(S402)。
【0057】
次に、実行状態を実行中とし(S404)、当該処理に対応するジョブ状態を示す共有メモリ40の記憶領域に「実行中」を書き込む(S406)。この記憶領域は、前述のように、要求受付部から入力されたメッセージ情報に含まれている。
【0058】
そして、ポインタ44Aの位置を1つインクリメントしてキューの先頭の位置を繰り下げ(S408)、本フローを終了する。
【0059】
図11は、ジョブ実行部37により実行されるジョブ終了処理の流れを示すフローチャートである。
【0060】
ジョブ終了処理において、ジョブ実行部37は、ジョブ実行部37は、実行状態をアイドル状態とし(S500)、次に当該処理に対応するジョブ状態を示す共有メモリ40の記憶領域に「完了」を書き込み(S502)、本フローを終了する。
【0061】
[まとめ]
以上説明した本実施例のマルチコア・プロセッサ1によれば、不揮発性メモリ50へのアクセスに係る処理をプロセッサコア30に一本化して実行させているため、複数のプロセッサコアが同時に不揮発性メモリ50にアクセスすることによって干渉が生じるのを、確実に回避することができる。
【0062】
また、プロセッサコア10のタイミング生成部11によって基準タイミング通知が行われ、これに応じて各プロセッサコアの要求受付部が順次メッセージ情報の出力を行うように制御されるため、ジョブ情報の書き込みに関してプロセッサコア間で干渉が生じるのを回避することができる。
【0063】
なお、図12は、従来のマルチコア・プロセッサにおいて、複数のプロセッサコアが同時に特定の共有アクセス対象にアクセスすることによって干渉が生じる様子を示す図である。これに対し、図13は、本実施例のマルチコア・プロセッサ1において、干渉が生じるのが回避される様子を示す図である。
【0064】
<第2実施例>
以下、図面を参照し、本発明の第2実施例に係るマルチコア・プロセッサについて説明する。本実施例のマルチコア・プロセッサは、複数のプロセッサコアが独立して処理を行うことが可能なものであり、例えば複数の機能が統合された車載制御装置のように、複数のタスクを同時実行する装置に好適に適用される。
【0065】
[構成]
本実施例のマルチコア・プロセッサ2は、構成、及び各構成要素の基本的機能において第1実施例と共通するため、図1を援用することとし、各構成要素について同一の符号を付し、第1実施例との相違点を中心に説明する。
【0066】
本実施例のマルチコア・プロセッサ2においても、不揮発性メモリ50へのアクセスに係る処理をプロセッサコア30に一本化して実行させているため、複数のプロセッサコアが同時に不揮発性メモリ50にアクセスすることによって干渉が生じるのを、確実に回避することができる。
【0067】
[メッセージキュー42に対する書き込みの制御、各種処理フロー]
各プロセッサコアの要求受付部によりメッセージキュー42にメッセージ情報が書き込まれる際の処理の流れについても、第1実施例と同様であり、図6を援用する。
【0068】
但し、本実施例では、メッセージキュー42に対する書き込みの制御において、スケジューラ間の通知の流れが第1実施例と異なっている。
【0069】
図14は、各コア間でメッセージキュー42に対する書き込みの制御が行われる様子を示すシーケンス図である。
【0070】
まず、プロセッサコア10は、図15に示すようなリソースアクセス待ち処理を実行する(S600)。なお、本図における「リソース」とは、共有メモリ40を指している。
【0071】
リソースアクセス待ち処理が終了すると、プロセッサコア10は、第1実施例において図7で説明した要求受付処理を、機能モジュール13、14のそれぞれについて実行する(S602、S604)。
【0072】
要求受付処理が終了すると、プロセッサコア10は、図16に示すようなリソース振り分け処理を実行する(S606)。ここでは、対象コアはプロセッサコア20となる。
【0073】
リソース振り分け処理においてプロセッサコア10からプロセッサ20に対して要求受付許可通知が行われると、プロセッサ20は図17に示すようなリソース占有開始処理を実行する(S610)。
【0074】
リソースアクセス待ち処理が終了すると、プロセッサコア20は、第1実施例において図7で説明した要求受付処理を、機能モジュール23、24のそれぞれについて実行する(S612、S614)。
【0075】
要求受付処理が終了すると、プロセッサコア20は、図18に示すようなリソース占有終了処理を実行する(S616)。
【0076】
リソース占有終了処理においてプロセッサコア20からプロセッサ10に対してリソース占有終了通知が行われると、プロセッサ10は、図16に示すようなリソース振り分け処理を実行する(S618)。ここでは、対象コアはプロセッサコア30となる。
【0077】
リソース振り分け処理においてプロセッサコア10からプロセッサ30に対して要求受付許可通知が行われると、プロセッサ30は図17に示すようなリソース占有開始処理を実行する(S620)。
【0078】
リソースアクセス待ち処理が終了すると、プロセッサコア30は、第1実施例において図7で説明した要求受付処理を、機能モジュール33、34のそれぞれについて実行する(S622、S624)。
【0079】
要求受付処理が終了すると、ジョブソート部36がジョブソートを実行し(S626)、ジョブ実行部37がジョブを実行する(S628)。
【0080】
そして、プロセッサコア30のスケジューラ32は、図18に示すようなリソース占有終了処理を実行する(S630)。
【0081】
リソース占有終了処理においてプロセッサコア30からプロセッサ10に対してリソース占有終了通知が行われると、プロセッサ10は、図19に示すようなリソースアクセス終了処理を実行する(S640)。
【0082】
図15は、プロセッサコア10のスケジューラ12によって実行されるリソースアクセス待ち処理の流れを示すフローチャートである。
【0083】
まず、スケジューラ12は、タイミング生成部11によって基準タイミング通知がなされるまで待機する(S700)。
【0084】
基準タイミング通知がなされると、リソースアクセスが終了状態であるか否かを判定する(S702)。リソースアクセスが終了状態でなければエラー処理を行い(S704)、S700に戻る。
【0085】
リソースアクセスが終了状態である場合は、リソースアクセスを開始状態とする(S706)。
【0086】
図16は、プロセッサコア10のスケジューラ12によって実行されるリソースアクセス振り分け処理の流れを示すフローチャートである。
【0087】
リソースアクセス振り分け処理において、スケジューラ12は、スケジュール(本実施例の場合は、プロセッサコア10→プロセッサコア20→プロセッサコア30と規定されている)に従って、対象プロセッサコアに要求受付許可通知を行う(S800)。
【0088】
図17は、プロセッサコア20、30のスケジューラ22、32によって実行されるリソース占有開始処理の流れを示すフローチャートである。
【0089】
リソース占有開始処理において、プロセッサコア20、30のスケジューラ22、32は、自コアのアクセルタスクを起床する(S900)。
【0090】
図18は、プロセッサコア20、30のスケジューラ22、32によって実行されるリソース占有終了処理の流れを示すフローチャートである。
【0091】
リソース占有終了処理において、プロセッサコア20、30のスケジューラ22、32は、プロセッサコア10に対して自コアの占有終了を通知し(S1000)、自コアのアクセスタスクを終了する(S1002)。
【0092】
図19は、プロセッサコア10のスケジューラ12によって実行されるリソースアクセス終了処理の流れを示すフローチャートである。
【0093】
リソースアクセス振り分け処理において、スケジューラ12は、リソースアクセスを終了状態とする(S1100)。
【0094】
このように、プロセッサコア10のタイミング生成部11によって開始信号が出力され、これに応じて各プロセッサコアの要求受付部が順次メッセージ情報の出力を行うように制御される。これによって、ジョブ情報の書き込みに関してプロセッサコア間で干渉が生じるのを回避することができる。
【0095】
[まとめ]
以上説明した本実施例のマルチコア・プロセッサ2によれば、不揮発性メモリ50へのアクセスに係る処理をプロセッサコア30に一本化して実行させているため、複数のプロセッサコアが同時に不揮発性メモリ50にアクセスすることによって干渉が生じるのを、確実に回避することができる。
【0096】
また、プロセッサコア20のタイミング生成部11によって基準タイミング通知が行われ、これに応じて各プロセッサコアの要求受付部が順次メッセージ情報の出力を行うように制御されるため、ジョブ情報の書き込みに関してプロセッサコア間で干渉が生じるのを回避することができる。
【0097】
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【0098】
例えば、特定の共有アクセス対象の例として不揮発性メモリ50を挙げたが、これに限らず、ソークタイマIC等、他の機器が特定の共有アクセス対象に該当するものとしてもよい。ソークタイマICとは、車載制御装置において、キーをオフしている時間を計測したり、キーオフ中の所定時刻に車載制御装置の電源をオン状態としたりする機能を有するものである。
【0099】
また、各プロセッサコアが要求受付部に相当する機能を有する構成としたが、プロセッサ間の共通関数として保持されるものとしてもよい。
【0100】
また、特定の共有アクセス対象以外の共有アクセス対象について、各プロセッサコアが独立してアクセス可能としてもよい。図20は、第1実施例及び第2実施例に付加機能として追加され得る部分構成図である。図示するように、外部I/Oポート等、レイテンシの短い機器については、各プロセッサコアがドライバを備え、独立してアクセス可能であってもよい。図21は、各プロセッサコアがI/Oポートにアクセスする際の処理の流れを示すタイミングチャートである。係る変形は、スタンバイRAMについても同様である。図22は、第1実施例及び第2実施例に付加機能として追加され得る部分構成図である。
【符号の説明】
【0101】
1、2 マルチコア・プロセッサ
10、20、30 プロセッサコア
11 タイミング生成部
12、22、32 スケジューラ
13、14、23、24、33、34 機能モジュール
15、25、35 要求受付部
40 共有メモリ
50 不揮発性メモリ
【特許請求の範囲】
【請求項1】
複数のプロセッサコアが独立して処理を行うことが可能なマルチコア・プロセッサであって、
前記複数のプロセッサコアによって読み書き可能なメモリ上に、特定の共有アクセス対象に対するアクセスの内容及び順序を規定するためのメッセージキューが設定され、
前記複数のプロセッサコアは、前記メッセージキューに対する所定の書き込み制御に応じて、前記特定の共有アクセス対象に対するアクセスに関するジョブ情報を排他的に前記メッセージキューに書き込み、
前記複数のプロセッサコアのうち少なくとも一の特定対象アクセス実行用プロセッサコアは、前記メッセージキューに書き込まれたジョブ情報に従って、前記特定の共有アクセス対象に対するアクセスを実行することを特徴とする、
マルチコア・プロセッサ。
【請求項2】
請求項1に記載のマルチコア・プロセッサであって、
前記ジョブ情報は、処理の優先度に関する情報を含んでおり、
前記特定対象アクセス実行用プロセッサコアは、前記ジョブ情報に含まれる処理の優先度に関する情報に基づいて、前記処理を代行する順序を変更することを特徴とする、
マルチコア・プロセッサ。
【請求項3】
請求項1又は2に記載のマルチコア・プロセッサであって、
前記メッセージキューに対する所定の書き込み制御は、所定の順序に従って、前記メッセージキューにジョブ情報の書き込みを終了したプロセッサコアから、次に前記メッセージキューにジョブ情報の書き込むプロセッサコアに、順次書き込み可能通知を行うことによって実現される、
マルチコア・プロセッサ。
【請求項4】
請求項1又は2に記載のマルチコア・プロセッサであって、
前記メッセージキューに対する所定の書き込み制御は、前記複数のプロセッサコアのうち少なくとも一の書込制御用プロセッサコアにおいて保持されている所定の順序に従って、該書込制御用プロセッサコアから各プロセッサコアに順次書き込み可能通知を行うことによって実現される、
【請求項5】
請求項3又は4に記載のマルチコア・プロセッサであって、
前記書き込み可能通知は、ソフトウエア割り込みによって行われる、
マルチコア・プロセッサ。
【請求項6】
請求項3又は4に記載のマルチコア・プロセッサであって、
前記書き込み可能通知は、前記複数のプロセッサコアによってアクセス可能なメモリ上において、次に前記メッセージキューにジョブ情報の書き込むプロセッサコアを指定することによって行われる、
マルチコア・プロセッサ。
【請求項7】
車両に搭載され、前記各プロセッサコアは、車両制御のための処理を行うことを特徴とする、請求項1ないし6のいずれか1項に記載のマルチコア・プロセッサ。
【請求項1】
複数のプロセッサコアが独立して処理を行うことが可能なマルチコア・プロセッサであって、
前記複数のプロセッサコアによって読み書き可能なメモリ上に、特定の共有アクセス対象に対するアクセスの内容及び順序を規定するためのメッセージキューが設定され、
前記複数のプロセッサコアは、前記メッセージキューに対する所定の書き込み制御に応じて、前記特定の共有アクセス対象に対するアクセスに関するジョブ情報を排他的に前記メッセージキューに書き込み、
前記複数のプロセッサコアのうち少なくとも一の特定対象アクセス実行用プロセッサコアは、前記メッセージキューに書き込まれたジョブ情報に従って、前記特定の共有アクセス対象に対するアクセスを実行することを特徴とする、
マルチコア・プロセッサ。
【請求項2】
請求項1に記載のマルチコア・プロセッサであって、
前記ジョブ情報は、処理の優先度に関する情報を含んでおり、
前記特定対象アクセス実行用プロセッサコアは、前記ジョブ情報に含まれる処理の優先度に関する情報に基づいて、前記処理を代行する順序を変更することを特徴とする、
マルチコア・プロセッサ。
【請求項3】
請求項1又は2に記載のマルチコア・プロセッサであって、
前記メッセージキューに対する所定の書き込み制御は、所定の順序に従って、前記メッセージキューにジョブ情報の書き込みを終了したプロセッサコアから、次に前記メッセージキューにジョブ情報の書き込むプロセッサコアに、順次書き込み可能通知を行うことによって実現される、
マルチコア・プロセッサ。
【請求項4】
請求項1又は2に記載のマルチコア・プロセッサであって、
前記メッセージキューに対する所定の書き込み制御は、前記複数のプロセッサコアのうち少なくとも一の書込制御用プロセッサコアにおいて保持されている所定の順序に従って、該書込制御用プロセッサコアから各プロセッサコアに順次書き込み可能通知を行うことによって実現される、
【請求項5】
請求項3又は4に記載のマルチコア・プロセッサであって、
前記書き込み可能通知は、ソフトウエア割り込みによって行われる、
マルチコア・プロセッサ。
【請求項6】
請求項3又は4に記載のマルチコア・プロセッサであって、
前記書き込み可能通知は、前記複数のプロセッサコアによってアクセス可能なメモリ上において、次に前記メッセージキューにジョブ情報の書き込むプロセッサコアを指定することによって行われる、
マルチコア・プロセッサ。
【請求項7】
車両に搭載され、前記各プロセッサコアは、車両制御のための処理を行うことを特徴とする、請求項1ないし6のいずれか1項に記載のマルチコア・プロセッサ。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【公開番号】特開2011−237929(P2011−237929A)
【公開日】平成23年11月24日(2011.11.24)
【国際特許分類】
【出願番号】特願2010−107384(P2010−107384)
【出願日】平成22年5月7日(2010.5.7)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【出願人】(000004260)株式会社デンソー (27,639)
【Fターム(参考)】
【公開日】平成23年11月24日(2011.11.24)
【国際特許分類】
【出願日】平成22年5月7日(2010.5.7)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【出願人】(000004260)株式会社デンソー (27,639)
【Fターム(参考)】
[ Back to top ]