(57)【要約】      （修正有）【課題】周期的に起動するタスクを実行する際に、適切なタイミングでキャッシュ同期を行うマルチプロセッサ装置を提供する。【解決手段】第１のプロセッサ１０と第２のプロセッサ２０のうち少なくとも一方は、周期的に起動される定周期タスクのうち予め定められた特定の定周期タスクの組を連続して実行する際に、特定の定周期タスクの組のうち先に実行される定周期タスクに関する処理結果を自己の専用キャッシュメモリから共有メモリにコピーし、第１のプロセッサ１０と第２のプロセッサ２０のうち少なくとも他方は、定周期タスクを実行する際に、実行する定周期タスクの前回の処理が自己により行われなかった場合に、自己の専用キャッシュメモリに代えて共有メモリに格納された処理結果を用いて処理を行うように切り替えるマルチプロセッサ装置。【選択図】図２
2013125305.tif 000002
【特許請求の範囲】
【請求項１】
専用キャッシュメモリを有し、タスクを実行する第１のプロセッサと、
専用キャッシュメモリを有し、タスクを実行する第２のプロセッサと、
前記第１及び第２のプロセッサによって読み書き可能な共有メモリと、
前記第１及び第２のプロセッサが実行するタスクのうち少なくとも周期的に起動される定周期タスクについて、前記第１及び第２のプロセッサの処理負荷に応じて割り振り先を決定するタスク制御手段と、を備え、
前記第１及び第２のプロセッサのうち少なくとも一方は、前記定周期タスクのうち予め定められた特定の定周期タスクの組を連続して実行する際に、該特定の定周期タスクの組のうち先に実行される定周期タスクに関する処理結果を自己の専用キャッシュメモリから前記共有メモリにコピーし、
前記第１及び第２のプロセッサのうち少なくとも他方は、前記定周期タスクを実行する際に、該実行する定周期タスクの前回の処理が自己により行われなかった場合に、自己の専用キャッシュメモリに代えて前記共有メモリに格納された処理結果を用いて処理を行うように切り替えることを特徴とする、
マルチプロセッサ装置。
【請求項２】
請求項１に記載のマルチプロセッサ装置であって、
前記特定の定周期タスクの組は、起動周期と処理所要時間の関係により、後に実行される定周期タスクの処理が終了するまでに、先に実行される定周期タスクが起動することが予め判明している定周期タスクの組である、
マルチプロセッサ装置。
【請求項３】
請求項１又は２に記載のマルチプロセッサ装置であって、
前記第１及び第２のプロセッサのうち少なくとも一方は、前記特定の定周期タスクの組を連続して実行する際に、前記特定の定周期タスクの組のうち先に実行される定周期タスクの処理が終了した時点で、該先に実行される定周期タスクに関する処理結果を自己の専用キャッシュメモリから前記共有メモリにコピーすることを特徴とする、
マルチプロセッサ装置。
【請求項４】
請求項１ないし３のいずれか１項に記載のマルチプロセッサ装置であって、
前記定周期タスクのうち少なくとも一部は、起動される周期が変動することを特徴とする、
マルチプロセッサ装置。
【請求項５】
請求項１ないし４のいずれか１項に記載のマルチプロセッサ装置であって、
前記タスク制御手段は、前記定周期タスクを起動する際に、前記第１及び第２のプロセッサの双方が前記タスクを実行中であり、前記第１及び第２のプロセッサのいずれかが非周期的に起動される非定周期タスクを実行している場合には、該非定周期タスクを一時停止すると共に該非定周期タスクを実行していたプロセッサにより前記定周期タスクを起動する手段である、
マルチプロセッサ装置。
【請求項６】
請求項１ないし５のいずれか１項に記載のマルチプロセッサ装置であって、
前記共有メモリは、前記第１及び第２のプロセッサによって読み書き可能な共有キャッシュメモリである、
マルチプロセッサ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサが独立して処理を行うことが可能なマルチプロセッサ装置に関する。
【背景技術】
【０００２】
従来、複数のプロセッサを備えるマルチプロセッサ装置が実用化されている。マルチプロセッサ装置では、プロセッサ間で共有される共有メモリ（共有ＲＡＭ、共有キャッシュメモリ等）の他、各プロセッサに専用キャッシュメモリを付随させる場合がある。
【０００３】
通常、専用キャッシュメモリへのアクセスは、共有メモリへのアクセスに比して高速に行うことが可能であるため、プロセッサ内で完結した処理の結果については専用キャッシュメモリに格納する処理方式が採用される。
【０００４】
一方、複数のプロセッサで構成されるＳＭＰ（Symmetric  Multiprocessing）環境下で処理が行われる場合等、プロセッサ間で共通したタスクを実行する可能性がある場合には、プロセッサが処理を行った結果を、必要に応じて専用キャッシュメモリから共有キャッシュメモリ等の下位メモリに移す処理（キャッシュ同期）が必要となる。
【０００５】
キャッシュ同期の手法としては、ライトスルー方式と、ライトバック方式が知られている。ライトスルー方式とは、キャッシュメモリに書き込むと同時に下位メモリにも書き込む方式である。また、ライトバック方式とは、原則としてキャッシュメモリに対してのみ書き込みを行い、キャッシュの追い出しが必要になった時点でキャッシュメモリの内容を下位メモリに書き込む方式である。
【０００６】
ライトバック方式に関連し、特許文献１には、複数のプロセッサと、各プロセッサに付随する複数のキャッシュメモリと、記憶装置と、キャッシュメモリと記憶装置間を相互に接続する結合網から成る情報処理装置について記載されている。この情報処理装置では、各プロセッサの処理が予め定めた段階に達した時点でのみ、付随するキャッシュメモリ中に存在するデータ・ブロックを記憶装置に同期させている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平０９−０６２５７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記ライトスルー方式を採用した場合、書き込みの度に下位メモリにアクセスする必要があるため、処理全体が遅延するという不都合が生じ得る。
【０００９】
また、上記ライトバック方式を採用した場合、下位メモリにキャッシュメモリの内容が書き込まれるタイミングが、必ずしもキャッシュ同期が必要なタイミングとなるとは限らないという課題が存在する。この点は、上記特許文献１に記載の装置でも同様である。特に、上記ＳＭＰ環境下では、タスクの割り振りを制御するＲＴＯＳ（Real‐Time  Operating  System）が、プロセッサの負荷状態を考慮してタスクを割り振るため、予め定められたキャッシュ同期のタイミングとタスクの割り振りが協調するとは限らない。
【００１０】
本発明は、一側面によれば、周期的に起動するタスクを実行するマルチプロセッサ装置において、適切なタイミングでキャッシュ同期を行うことを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するための本発明の一態様は、
専用キャッシュメモリを有し、タスクを実行する第１のプロセッサと、
専用キャッシュメモリを有し、タスクを実行する第２のプロセッサと、
前記第１及び第２のプロセッサによって読み書き可能な共有メモリと、
前記第１及び第２のプロセッサが実行するタスクのうち少なくとも周期的に起動される定周期タスクについて、前記第１及び第２のプロセッサの処理負荷に応じて割り振り先を決定するタスク制御手段と、を備え、
前記第１及び第２のプロセッサのうち少なくとも一方は、前記定周期タスクのうち予め定められた特定の定周期タスクの組を連続して実行する際に、該特定の定周期タスクの組のうち先に実行される定周期タスクに関する処理結果を自己の専用キャッシュメモリから前記共有メモリにコピーし、
前記第１及び第２のプロセッサのうち少なくとも他方は、前記定周期タスクを実行する際に、該実行する定周期タスクの前回の処理が自己により行われなかった場合に、自己の専用キャッシュメモリに代えて前記共有メモリに格納された処理結果を用いて処理を行うように切り替えることを特徴とする、
マルチプロセッサ装置である。
【００１２】
この本発明の一態様によれば、第１及び第２のプロセッサのうち少なくとも一方は、周期的に起動される定周期タスクのうち予め定められた特定の定周期タスクの組を連続して実行する際に、特定の定周期タスクの組のうち先に実行される定周期タスクに関する処理結果を自己の専用キャッシュメモリから共有メモリにコピーし、第１及び第２のプロセッサのうち少なくとも他方は、定周期タスクを実行する際に、実行する定周期タスクの前回の処理が自己により行われなかった場合に、自己の専用キャッシュメモリに代えて共有メモリに格納された処理結果を用いて処理を行うように切り替えるため、周期的に起動するタスクを実行する際に、適切なタイミングでキャッシュ同期を行うことができる。
【００１３】
本発明の一態様において、
前記特定の定周期タスクの組は、起動周期と処理所要時間の関係により、後に実行される定周期タスクの処理が終了するまでに、先に実行される定周期タスクが起動することが予め判明している定周期タスクの組であるものとしてもよい。
【００１４】
また、本発明の一態様において、
前記第１及び第２のプロセッサのうち少なくとも一方は、前記特定の定周期タスクの組を連続して実行する際に、前記特定の定周期タスクの組のうち先に実行される定周期タスクの処理が終了した時点で、該先に実行される定周期タスクに関する処理結果を自己の専用キャッシュメモリから前記共有メモリにコピーすることを特徴とするものとしてもよい。
【００１５】
また、本発明の一態様において、
前記定周期タスクのうち少なくとも一部は、起動される周期が変動することを特徴とするものとしてもよい。
【００１６】
また、本発明の一態様において、
前記タスク制御手段は、前記定周期タスクを起動する際に、前記第１及び第２のプロセッサの双方が前記タスクを実行中であり、前記第１及び第２のプロセッサのいずれかが非周期的に起動される非定周期タスクを実行している場合には、該非定周期タスクを一時停止すると共に該非定周期タスクを実行していたプロセッサにより前記定周期タスクを起動する手段であるものとしてもよい。
【００１７】
また、本発明の一態様において、
前記共有メモリは、前記第１及び第２のプロセッサによって読み書き可能な共有キャッシュメモリであるものとしてもよい。
【発明の効果】
【００１８】
本発明は、一側面によれば、周期的に起動するタスクを実行するマルチプロセッサ装置において、適切なタイミングでキャッシュ同期を行うことができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施例に係るマルチプロセッサ装置１のシステム構成例である。
【図２】本実施例のマルチプロセッサ装置１によってタスクＡ、Ｂ、Ｃ、Ｄ、Ｅが実行される様子を示す図である。
【図３】Ｌ１キャッシュ１２に格納されたデータがＬ２キャッシュ３０にコピーされた時点におけるＬ１キャッシュ１２、Ｌ２キャッシュ３０、Ｌ１キャッシュ２２に格納されたデータの一部を示す図である。
【図４】Ｌ１キャッシュ２２ではなく、Ｌ２キャッシュ３０に格納されたデータを用いて処理を行うように切り替えられたことを模式的に示す図である。
【図５】トリガ管理部１０Ｂａ、２０Ｂａによって保持される制御条件テーブルの一例である。
【図６】図２に示される状態から、タスクＢ、Ｃの起動周期が短くなった場合に、タスクＡ、Ｂ、Ｃ、Ｄ、Ｅが実行される様子を示す図である。
【図７】Ｌ１キャッシュ２２に格納されたデータがＬ２キャッシュ３０にコピーされた時点におけるＬ１キャッシュ１２、Ｌ２キャッシュ３０、Ｌ１キャッシュ２２に格納されたデータの一部を示す図である。
【図８】Ｌ１キャッシュ１２ではなく、Ｌ２キャッシュ３０に格納されたデータを用いて処理を行うように切り替えられたことを模式的に示す図である。
【図９】キャッシュ制御部１０Ｂａ、２０Ｂａが実行する処理の流れを示すフローチャートである。
【図１０】タスクＥを一時停止してタスクＡを実行させる様子を示す図である。
【発明を実施するための形態】
【００２０】
以下、本発明を実施するための形態について、添付図面を参照しながら実施例を挙げて説明する。
【実施例】
【００２１】
以下、図面を参照し、本発明の一実施例に係るマルチプロセッサ装置１について説明する。マルチプロセッサ装置１は、例えば複数のプロセッサコアが一チップ上に搭載されたマルチコア・プロセッサである。また、これに限らず、マルチプロセッサ装置１は、複数のプロセッサコアが別々のチップ上に搭載されたマルチプロセッサ装置であってもよい。以下の説明では、マルチプロセッサ装置１がマルチコア・プロセッサであるものとして説明する。
【００２２】
［ハードウエア構成］
図１は、本発明の一実施例に係るマルチプロセッサ装置１のシステム構成例である。マルチプロセッサ装置１は、主要な構成として、プロセッサコア１０と、プロセッサコア２０と、Ｌ２キャッシュ３０と、プロセッサ間バス４０と、バス４５に接続されたセンサ群５０、ＲＯＭ（Read  Only  Memory）５２、ＲＡＭ（Random  Access  Memory）５４、Ｉ／Ｏ５６、ＤＭＡ（Direct  Memory  Access）コントローラ５８と、を備える。
【００２３】
プロセッサコア１０は、例えば、ＡＬＵ（Arithmetic  Logic  Unit）、ＭＵＬ（乗算器）、ＤＩＶ（除算器）、ＬＳＵ（Load  Store  Unit）その他を含む演算ユニット、レジスタ、プログラムカウンタ、プロセッサ間バス４０を介したプロセッサコア２０との通信を制御するローカル割り込みコントローラ等の他、専用キャッシュメモリであるＬ１（レベル１）キャッシュ１２を備える。
【００２４】
また、プロセッサコア１０は、ＲＯＭ５２等のプログラムメモリに格納されたプログラムを実行することにより機能する機能ブロックとして、タスク処理部１０Ａと、キャッシュ制御部１０Ｂと、を備える。キャッシュ制御部１０Ｂは、トリガ管理部１０Ｂａ、キャッシュ同期制御部１０Ｂｂ、参照方向切替制御部１０Ｂｃ、キャッシュ切替制御部１０Ｂｄを含む。これらの機能ブロックの機能については、後述する。
【００２５】
同様に、プロセッサコア２０は、例えば、ＡＬＵ、ＭＵＬ、ＤＩＶ、ＬＳＵその他を含む演算ユニット、レジスタ、プログラムカウンタ、プロセッサ間バス４０を介したプロセッサコア１０との通信を制御するローカル割り込みコントローラ等の他、専用キャッシュメモリであるＬ１キャッシュ２２を備える。
【００２６】
また、プロセッサコア２０は、ＲＯＭ５２等のプログラムメモリに格納されたプログラムを実行することにより機能する機能ブロックとして、タスク処理部２０Ａと、キャッシュ制御部２０Ｂと、を備える。キャッシュ制御部２０Ｂは、トリガ管理部２０Ｂａ、参照方向切替制御部２０Ｂｃ、キャッシュ切替制御部２０Ｂｄを含む。これらの機能ブロックの機能については、後述する。
【００２７】
Ｌ２（レベル２）キャッシュ３０は、プロセッサコア１０とプロセッサ２０の双方によって読み書き可能な共有キャッシュメモリである。Ｌ２キャッシュ３０としては、例えばＬ１キャッシュ１２、２２よりも低速アクセス且つ大容量のものが採用される。
【００２８】
外部バス４５に接続されたセンサ群５０は、マルチプロセッサ装置１が例えば車両に搭載された制御装置である場合、車速センサ、アクセル開度センサ、ブレーキスイッチ、ステアリング操舵角センサ、エンジンのクランク角センサ、スロットルバルブセンサ等が該当する。これらのセンサ群５０は、センサ出力値を例えば所定周期で割り込み信号としてプロセッサコア１０、２０に出力する。
【００２９】
ＲＯＭ５２は、例えばＢＩＯＳ（Basic  Input／Output  System）をはじめとするオペレーティングシステム、各種プログラム等を格納している。ＲＡＭ５４は、マルチプロセッサ装置１のメインメモリとして機能する。Ｉ／Ｏ５６は、入出力装置や他のコンピュータ等との間で情報の送受信を行う際のインターフェースとして機能する。ＤＭＡコントローラ５８は、バス４５を介したデータの直接転送を制御する。
【００３０】
［機能ブロック］
以下、プロセッサコア１０、２０の各機能ブロックの機能について説明する。タスク処理部１０Ａ、２０Ａは、マルチプロセッサ装置１が実行するタスクを分担して実行する。タスクは、マルチプロセッサ装置１のＲＴＯＳ５によって、いずれかのプロセッサコアに割り振られる。ＲＴＯＳ５は、図１ではプロセッサコア１０が実行するものとして表現したが、いずれのプロセッサコアが実行してもよく、ＲＴＯＳ５を実行する専用のプロセッサコアが存在してもよい。
【００３１】
以下、タスクＡ、Ｂ、Ｃ、Ｄ、Ｅをマルチプロセッサ装置１が実行するものとする。タスクＡ、Ｂ、Ｃは周期的に起動される定周期タスクであり、原則としてプロセッサコア１０に割り振られるが、プロセッサコア１０が他のタスクを実行している場合には、プロセッサコア２０に割り振られるように、ＲＴＯＳ５が制御する。
【００３２】
タスクＡは、基本的には最も短い周期で（高頻度に）実行されるタスクである。タスクＢ、Ｃは通常時にはタスクＡよりも長い周期で実行されるが、状態変化に応じてタスクＡと同程度に短い周期で実行されるものとする。
【００３３】
一方、タスクＤ、Ｅは、例えばユーザーの操作等の不定期なイベントに対応して起動される非定周期タスクである。タスクＤ、Ｅは、プロセッサコア２０に割り振られる。
【００３４】
このようなタスクの性質は、マルチプロセッサ装置１が例えば車両に搭載された制御装置である場合に、現実に実行されるタスクの性質に近いものである。この場合、タスクＡ、Ｂ、Ｃはエンジン制御のための周期的演算だとすると、タスクＡとしては周期的に入力されるアクセル開度等に応じたトルク演算等が該当し、タスクＢ、Ｃとしてはエンジン回転数の増加に応じて短い周期となる点火時期制御演算等が該当する。一方、タスクＤ、Ｅとしては、エンジンの運転モード変更制御演算、スタータモータ制御演算等が該当する。本実施例のマルチプロセッサ装置１は、このように周期の変動するものと変動しないものを含む定周期タスク、非定周期タスクが混在するような環境において、迅速な処理を実現することができる。
【００３５】
図２は、本実施例のマルチプロセッサ装置１によってタスクＡ、Ｂ、Ｃ、Ｄ、Ｅが実行される様子を示す図である。図中、細実線矢印はセンサ群５０等からの割り込み信号に応じて立ち上がるＩＳＲ（Interrupt  Service  Routine；割り込みハンドラ）を示し、細線矢印はユーザーアクション（ユーザによる指示）を示し、太実線矢印はキャッシュ同期が行われるタイミングを示し、白抜き矢印は参照キャッシュ切替が行われるタイミングを示す。以下、図示する時刻（１）〜（５）において実行される処理について説明する。
【００３６】
時刻（ｔ１）において、ＩＳＲが立ち上がると、ＲＴＯＳ５はタスクＡをプロセッサコア１０のタスク処理部１０Ａに実行させる。タスク処理部１０Ａは、続いてタスクＣを実行する。
【００３７】
時刻（ｔ２）において、ユーザーが入出力装置に対して何らかの指示を行うと、ＲＴＯＳ５はタスクＤ及びタスクＥをプロセッサコア２０のタスク処理部２０Ａに実行させる。
【００３８】
時刻（ｔ３）において、ＩＳＲが立ち上がると、ＲＴＯＳ５はタスクＡをプロセッサコア１０のタスク処理部１０Ａに実行させる。
【００３９】
時刻（ｔ４）において、ＲＴＯＳ５がタスクＢをプロセッサコア１０に割り振ると、プロセッサコア１０のトリガ管理部１０Ｂａがこれを検知し（例えばタスク処理部１０Ａから入力されるタスク処理状況を参照する）、Ｌ１キャッシュ１２に格納されたデータをＬ２キャッシュ３０にコピーするように、キャッシュ同期制御部１０Ｂｂに指示する（以下、係る動作を「キャッシュ同期」と称する）。図３は、Ｌ１キャッシュ１２に格納されたデータがＬ２キャッシュ３０にコピーされた時点におけるＬ１キャッシュ１２、Ｌ２キャッシュ３０、Ｌ１キャッシュ２２に格納されたデータの一部を示す図である。なお、Ｌ２キャッシュ３０にコピーされたデータのうち直近に書き込まれたデータには、最新のデータであることを示すポインタ等が付されている。
【００４０】
時刻（ｔ５）において、ＩＳＲが立ち上がると、ＲＴＯＳ５はタスクＡをプロセッサコア２０のタスク処理部２０Ａに実行させる。プロセッサコア１０のタスク処理部１０Ａが他のタスクＢを実行しており、処理負荷が高い状態だからである（上記参照）。ＲＴＯＳ５がタスクＡをプロセッサコア２０に割り振ると、プロセッサコア２０のトリガ管理部２０Ｂａがこれを検知し（例えばタスク処理部２０Ａから入力されるタスク処理状況を参照する）、当該タスクＡの処理において、Ｌ１キャッシュ２２ではなく、Ｌ２キャッシュ３０に格納されたデータを用いて処理を行うようにキャッシュ切替制御部２０Ｂｄに指示する（以下、係る動作を「キャッシュ切替」と称する）。この際に、Ｌ２キャッシュ３０におけるデータ参照方向がＬ１キャッシュ２２の参照方向と異なっている場合には、参照方向切替制御部２０Ｂｃがデータ参照方向の切替をタスク処理部２０Ａに指示する（図３、４の場合は参照方向の相違が無いため、何も処理を行わない）。図４は、Ｌ１キャッシュ２２ではなく、Ｌ２キャッシュ３０に格納されたデータを用いて処理を行うように切り替えられたことを模式的に示す図である。
【００４１】
上記説明したキャッシュ同期、及びキャッシュ切替の指示を行うか否かは、トリガ管理部１０Ｂａ、２０Ｂａがタスク処理部１０Ａ、２０Ａから入力されるタスク処理状況に、制御条件を適用することによって決定される。トリガ管理部１０Ｂａ、２０Ｂａは、係る制御条件をテーブルデータとして、専用レジスタ、或いはＬ１キャッシュ１２、２２上に保持している。
【００４２】
図５は、トリガ管理部１０Ｂａ、２０Ｂａによって保持される制御条件テーブルの一例である。図５に示す制御条件テーブルは、定周期タスクのうち予め定められた特定の定周期タスクの組（本実施例ではＡ→Ｂ）を連続して実行する際に、タスクＡ、Ｂのうち先に実行される定周期タスクＡに関する処理結果を自己の専用キャッシュメモリからＬ２キャッシュ３０にコピーすることを規定する。例えば図５のテーブルデータの上段には、トリガとしてタスクＢの開始が格納され、更に、条件として直前にタスクＡが実行完了したことが格納される。そして、トリガと条件の双方を満たす際のアクションとして、キャッシュ同期が格納される。
【００４３】
ここで、上記「特定の定周期タスクの組」は、起動周期と処理所要時間の関係により、後に実行される定周期タスクの処理が終了するまでに、先に実行される定周期タスクが起動することが予め判明している定周期タスクの組である。本実施例では、特定の定周期タスクの組はＡ→Ｂのみであるが、他の定周期タスクの組が特定の定周期タスクの組に該当してもよい。また、「連続して実行する」、とは、間隔を置かずに実行されることのみを指すものではなく、「一定の時間間隔以内で連続して実行する」と定義してもよい。
【００４４】
また、図５に示す制御条件テーブルは、定周期タスクを実行する際に、実行する定周期タスクの前回の処理が他のプロセッサコアで行われた（すなわち自己により行われなかった）場合に、自己の専用キャッシュメモリに代えてＬ２キャッシュ３０に格納されたデータを用いて処理を行うように切り替えることを規定する。例えば図５のテーブルデータの下段には、トリガとしてタスクＡの開始が格納され、条件として前回のタスクＡの実行が他のプロセッサコアで行われたことが格納される。そして、トリガと条件の双方を満たす際のアクションとして、キャッシュ切替が格納される。
【００４５】
「実行する定周期タスクの前回の処理が他のプロセッサコアで行われたこと」は、例えば、ＲＴＯＳ５によってタスク処理部１０Ａ、２０Ａに割り振られた実行するタスクに連番のタスクＩＤが付与されており、タスク処理部１０Ａ、２０Ａは実行したタスクのタスクＩＤをプロセッサコア内に保持し、前回のタスクＩＤが自プロセッサコア内に保持されていない場合に前回の処理が他のプロセッサコアで行われたと判断することができる。また、ＲＴＯＳ５によって、タスク割り振り時に、前回の処理が他のプロセッサコアで行われたことを示す信号が送信されてもよい。
【００４６】
なお、トリガ管理部１０Ｂａ、２０Ｂａは、このようなテーブルデータを用いて処理を行う手法に代えて、同様の機能を実現可能な関数等を用いて処理を行っても構わない。
【００４７】
本実施例のマルチプロセッサ装置１は、時刻（１）〜（５）において行われた処理を繰り返し実行する。
【００４８】
係る制御によって、後に実行される定周期タスクの処理が終了するまでに、先に実行される定周期タスクが起動することが予め判明している定周期タスクの組が連続して実行される場合には、当該組の定周期タスクのうち先に実行される定周期タスクの処理結果がＬ２キャッシュ３０に格納され、プロセッサコアを跨いで定周期タスクが実行される場合には、自己のＬ１キャッシュ１２又は２２に代えてＬ２キャッシュに格納された処理結果を用いて処理を行うことになる。
【００４９】
この結果、周期的に起動するタスクを実行するマルチプロセッサ装置において、適切なタイミングでキャッシュ同期を行うことができる。この結果、キャッシュ制御を含む処理を円滑に行うことができる。
【００５０】
次に、図２に示される状態から、タスクＢ、Ｃの起動周期が短くなった場合の制御態様について説明する。図６は、図２に示される状態から、タスクＢ、Ｃの起動周期が短くなった場合に、タスクＡ、Ｂ、Ｃ、Ｄ、Ｅが実行される様子を示す図である。本図に示すように、タスクＢ、Ｃの起動周期が短くなった場合であっても、図５に示す制御条件テーブルに従うことにより、キャッシュ制御を含む処理を円滑に行うことができる。
【００５１】
本実施例のマルチプロセッサ装置１がエンジン制御を行う制御装置に適用された場合、タスクＢ、Ｃとしてはエンジン回転数の増加に応じて短い周期となる点火時期制御演算等が該当する。従って、図６に示す状態は、車速が増加してエンジン回転数が増加した状態を示している。
【００５２】
図６においても、図２と同様、細実線矢印はセンサ群５０等からの割り込み信号に応じて立ち上がるＩＳＲを示し、細線矢印はユーザーアクションを示し、太実線矢印はキャッシュ同期が行われるタイミングを示し、白抜き矢印は参照キャッシュ切替が行われるタイミングを示す。以下、図６における処理について部分的に説明する。
【００５３】
図６における時刻（ｔ６）において、ＲＴＯＳ５がタスクＢをプロセッサコア２０に割り振ると、プロセッサコア２０のトリガ管理部２０Ｂａがこれを検知し、Ｌ１キャッシュ２２に格納されたデータをＬ２キャッシュ３０にコピーするように、キャッシュ同期制御部２０Ｂｂに指示する（キャッシュ同期）。図７は、Ｌ１キャッシュ２２に格納されたデータがＬ２キャッシュ３０にコピーされた時点におけるＬ１キャッシュ１２、Ｌ２キャッシュ３０、Ｌ１キャッシュ２２に格納されたデータの一部を示す図である。
【００５４】
時刻（ｔ７）において、ＩＳＲが立ち上がると、ＲＴＯＳ５はタスクＡをプロセッサコア１０のタスク処理部１０Ａに実行させる。プロセッサコア２０のタスク処理部２０Ａが他のタスクＢを実行しており、処理負荷が高い状態だからである。ＲＴＯＳ５がタスクＡをプロセッサコア１０に割り振ると、プロセッサコア１０のトリガ管理部１０Ｂａがこれを検知し、当該タスクＡの処理において、Ｌ１キャッシュ１２ではなく、Ｌ２キャッシュ３０に格納されたデータを用いて処理を行うようにキャッシュ切替制御部１０Ｂｄに指示する（キャッシュ切替）。この際に、Ｌ２キャッシュ３０におけるデータ参照方向がＬ１キャッシュ１２の参照方向と異なっている場合には、参照方向切替制御部１０Ｂｃがデータ参照方向の切替をタスク処理部２０Ａに指示する（図７、８の場合は参照方向の相違が無いため、何も処理を行わない）。図８は、Ｌ１キャッシュ１２ではなく、Ｌ２キャッシュ３０に格納されたデータを用いて処理を行うように切り替えられたことを模式的に示す図である。
【００５５】
［処理フロー］
以下、キャッシュ制御部１０Ｂａ、２０Ｂａが実行する処理の流れについて説明する。図９は、キャッシュ制御部１０Ｂａ、２０Ｂａが実行する処理の流れを示すフローチャートである。本フローチャートは、例えばマルチプロセッサ１が起動されている間、繰り返し実行される。
【００５６】
まず、キャッシュ制御部１０Ｂａ、２０Ｂａは、タスク処理部１０Ａ、２０Ａから最新のタスク処理状況が入力されるまで待機する（Ｓ１００）。
【００５７】
最新のタスク処理状況が入力されると、最新のタスク処理状況が制御条件テーブルにおけるトリガを満たすか否かを判定する（Ｓ１０２）。最新のタスク処理状況が制御条件テーブルにおけるトリガを満たさない場合、キャッシュ制御部１０Ｂａ、２０Ｂａは、本フローチャートを終了する。
【００５８】
最新のタスク処理状況が制御条件テーブルにおけるトリガを満たす場合、キャッシュ制御部１０Ｂａ、２０Ｂａは、最新のタスク処理状況が制御条件テーブルにおける条件を満たすか否かを判定する（Ｓ１０４）。最新のタスク処理状況が制御条件テーブルにおける条件を満たさない場合、キャッシュ制御部１０Ｂａ、２０Ｂａは、本フローチャートを終了する。
【００５９】
最新のタスク処理状況が制御条件テーブルにおける条件を満たす場合、キャッシュ制御部１０Ｂａ、２０Ｂａは、制御条件テーブルにおけるアクションを実行するように、キャッシュ同期制御部１０Ｂｂ、参照方向切替制御部１０Ｂｃ、キャッシュ切替制御部１０Ｂｄ、或いはキャッシュ同期制御部２０Ｂｂ、参照方向切替制御部２０Ｂｃ、キャッシュ切替制御部２０Ｂｄに指示する（Ｓ１０６）。
【００６０】
［まとめ］
以上説明した本実施例のマルチプロセッサ装置１によれば、周期的に起動するタスクを実行する際に、適切なタイミングでキャッシュ同期を行うことができる。
【００６１】
なお、上記実施例において、ＩＳＲが立ち上がった場合に、いずれのプロセッサコアもタスクを実行中である場合について言及していないが、この場合、例えば定周期タスクを優先して実行するように制御するものとしてよい。すなわち、一方のプロセッサコアがタスクＢ又はＣを実行し、他方のプロセッサコアがタスクＤ又はＥを実行しているタイミングでＩＳＲが立ち上がった場合には、タスクＤ又はＥを一時停止してタスクＡを実行させる。
【００６２】
図１０は、タスクＥを一時停止してタスクＡを実行させる様子を示す図である。本図における時刻（ｔ８）においてＩＳＲが立ち上がると、ＲＴＯＳ５は、プロセッサコア２０のタスク処理部２０Ａが実行しているタスクＥを一時停止させ、タスクＡをプロセッサコア２０のタスク処理部２０Ａに実行させる。プロセッサコア１０のタスク処理部１０Ａが他のタスクＢを実行しており、定周期タスクであるタスクＢの方が、優先度が高いからである。
【００６３】
図１０における時刻（ｔ９）において、プロセッサコア２０のタスク処理部２０ＡがタスクＡの処理を完了すると、ＲＴＯＳ５は、一時停止していたタスクＥの処理をプロセッサコア２０のタスク処理部２０Ａに再開させる。
【００６４】
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【符号の説明】
【００６５】
１                  マルチプロセッサ装置
１０、２０          プロセッサコア
１０Ａ、２０Ａ      タスク処理部
１０Ｂ、２０Ｂ      キャッシュ制御部
１０Ｂａ、２０Ｂａ  トリガ管理部
１０Ｂｂ、２０Ｂｂ  キャッシュ同期制御部
１０Ｂｃ、２０Ｂｃ  参照方向切替制御部
１０Ｂｄ、２０Ｂｄ  キャッシュ切替制御部
１２、２２          Ｌ１キャッシュ
３０                Ｌ２キャッシュ
４０                プロセッサ間バス
４５                バス
５０                センサ群
５２                ＲＯＭ
５４                ＲＡＭ
５６                Ｉ／Ｏ
５８                ＤＭＡ
【図１】
2013125305.tif 000003
【図２】
2013125305.tif 000004
【図３】
2013125305.tif 000005
【図４】
2013125305.tif 000006
【図５】
2013125305.tif 000007
【図６】
2013125305.tif 000008
【図７】
2013125305.tif 000009
【図８】
2013125305.tif 000010
【図９】
2013125305.tif 000011
【図１０】
2013125305.tif 000012