IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社デンソーの特許一覧

<>
  • 特許-マルチプロセッサシステム 図1
  • 特許-マルチプロセッサシステム 図2
  • 特許-マルチプロセッサシステム 図3
  • 特許-マルチプロセッサシステム 図4
  • 特許-マルチプロセッサシステム 図5
  • 特許-マルチプロセッサシステム 図6
  • 特許-マルチプロセッサシステム 図7
  • 特許-マルチプロセッサシステム 図8
  • 特許-マルチプロセッサシステム 図9
  • 特許-マルチプロセッサシステム 図10
  • 特許-マルチプロセッサシステム 図11
  • 特許-マルチプロセッサシステム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-22
(45)【発行日】2024-05-01
(54)【発明の名称】マルチプロセッサシステム
(51)【国際特許分類】
   G06F 12/0862 20160101AFI20240423BHJP
   G06F 9/34 20180101ALI20240423BHJP
   G06F 12/0806 20160101ALI20240423BHJP
   G06F 12/084 20160101ALI20240423BHJP
【FI】
G06F12/0862
G06F9/34 350A
G06F12/0806 100
G06F12/084
【請求項の数】 12
(21)【出願番号】P 2020073050
(22)【出願日】2020-04-15
(65)【公開番号】P2021170234
(43)【公開日】2021-10-28
【審査請求日】2023-02-15
(73)【特許権者】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【氏名又は名称】矢作 和行
(74)【代理人】
【識別番号】100121991
【弁理士】
【氏名又は名称】野々部 泰平
(74)【代理人】
【識別番号】100145595
【弁理士】
【氏名又は名称】久保 貴則
(72)【発明者】
【氏名】楠本 崇人
【審査官】北村 学
(56)【参考文献】
【文献】特開2018-106472(JP,A)
【文献】特開2009-003946(JP,A)
【文献】特開平11-282815(JP,A)
【文献】特開2014-146366(JP,A)
【文献】特開2015-151883(JP,A)
【文献】特開2016-091305(JP,A)
【文献】国際公開第2008/108129(WO,A1)
【文献】特開2014-191663(JP,A)
【文献】特開2007-200277(JP,A)
【文献】特開2017-062843(JP,A)
【文献】特表2007-506199(JP,A)
【文献】特開2006-259821(JP,A)
【文献】特開2018-055244(JP,A)
【文献】特開2019-114244(JP,A)
【文献】特開2016-165912(JP,A)
【文献】米国特許出願公開第2020/0089228(US,A1)
【文献】福本 尚人 ほか,並列処理性能向上を目的としたマルチコア向けヘルパースレッド実行法,情報処理学会論文誌,日本,一般社団法人情報処理学会,2012年10月15日,pp. 101-111
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 12/08 - 12/128
G06F 9/34
(57)【特許請求の範囲】
【請求項1】
複数のプロセッサ(40a~40n)と、
前記複数のプロセッサの各々に対して、割り当てられたタスクの実行開始を指示するスケジューラ(48)と、
前記複数のプロセッサが前記タスクを実行する際に用いられる命令およびデータを保存するメモリ(22,24)と、
前記複数のプロセッサと前記メモリとの間に設けられ、前記複数のプロセッサによって共用されるキャッシュ(44)と、を備え、
前記スケジューラは、実行予定の処理に関する情報を取得し、その実行予定の処理が、前記複数のプロセッサに、同期して実行されるタスクである並列処理であるか否かを判定し、前記並列処理であると判定した場合、前記並列処理の実行開始を指示する前に、待機状態にあるプロセッサに対して、前記並列処理で使用される命令およびデータの少なくとも一部を前記メモリから読み出して前記キャッシュに格納するためのキャッシュ更新処理(S140、S160、S340、S360、S410)を割り当てて、その実行開始を指示し、
前記スケジューラは、前記キャッシュ更新処理として、前記待機状態にあるプロセッサに対し前記並列処理の少なくとも一部の処理の実行開始を指示して、前記待機状態にあるプロセッサに前記並列処理の少なくとも一部の処理を予備実行させることにより、前記並列処理で使用される命令およびデータの少なくとも一部を前記メモリから読み出して前記キャッシュに格納させるマルチプロセッサシステム。
【請求項2】
前記マルチプロセッサシステムは、車両に搭載されて、車載機器の制御のために用いられるものであり、
前記車載機器を制御するために必要な信号を入力するための入力回路(14)と、
前記車載機器を制御するための制御信号を出力する出力回路(32)と、
を備える請求項1に記載のマルチプロセッサシステム。
【請求項3】
前記並列処理の少なくとも一部の処理を予備実行するプロセッサからの書き込み要求出力を遮断する遮断部(S150、S195、S350、S400)を備える請求項1又は2に記載のマルチプロセッサシステム。
【請求項4】
前記遮断部(S195)は、前記スケジューラにより、前記複数のプロセッサに前記並列処理の実行開始が指示されるまでに、前記並列処理の少なくとも一部の処理を予備実行するプロセッサからの書き込み要求出力の遮断を解除する請求項に記載のマルチプロセッサシステム。
【請求項5】
前記待機状態にあるプロセッサは、前記並列処理が前記複数のプロセッサに割り当てられたときに、前記複数のプロセッサがそれぞれ実行する処理の中で、前記メモリからの命令およびデータの読み出しに最も時間がかかる処理を含む、前記並列処理の少なくとも一部の処理を予備実行する請求項1乃至4のいずれか1項に記載のマルチプロセッサシステム。
【請求項6】
前記待機状態にあるプロセッサは、前記並列処理が前記複数のプロセッサに割り当てられたときに、自身が実行する処理を含む、前記並列処理の少なくとも一部の処理を予備実行する請求項1乃至4のいずれか1項に記載のマルチプロセッサシステム。
【請求項7】
前記複数のプロセッサへの割り当てが予定されている前記並列処理の前に、別の並列処理が前記複数のプロセッサに割り当てられて、前記別の並列処理が前記複数のプロセッサにより実行される場合に、前記スケジューラは、前記別の並列処理の実行時に待機状態となるプロセッサに、前記キャッシュ更新処理を割り当てて、実行開始を指示する請求項1乃至のいずれか1項に記載のマルチプロセッサシステム。
【請求項8】
前記別の並列処理は、前記複数のプロセッサへの割り当てが予定されている前記並列処理の直前に実行されるものである請求項に記載のマルチプロセッサシステム。
【請求項9】
前記別の並列処理の実行時に待機状態となるプロセッサは、前記別の並列処理が割り当てられなかったプロセッサである請求項7又は8に記載のマルチプロセッサシステム。
【請求項10】
前記別の並列処理の実行時に待機状態となるプロセッサは、前記別の並列処理の少なくとも一部の処理が割り当てられ、その割り当てられた処理が他のプロセッサよりも早く完了したプロセッサである請求項7乃至9のいずれか1項に記載のマルチプロセッサシステム。
【請求項11】
前記スケジューラは、前記待機状態にあるプロセッサに対して前記キャッシュ更新処理の割り当てを行わない場合、前記待機状態にあるプロセッサを省電力状態とする請求項1乃至10のいずれか1項に記載のマルチプロセッサシステム。
【請求項12】
前記待機状態にあるプロセッサは、供給されるクロックと電源との少なくとも一方が遮断されることにより、前記省電力状態とされる請求項11に記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、複数のプロセッサを備えるマルチプロセッサシステムに関する。
【背景技術】
【0002】
たとえば、特許文献1には、複数のプロセッサコアを内蔵するCPUを有する情報処理装置が開示されている。この特許文献1の情報処理装置は、紙などの媒体に画像を形成する処理に利用される、主記憶装置に保存されたルックアップテーブルをキャッシュにプリロードする時間を短縮するための手法を開示している。具体的には、ルックアップテーブルをN個のデータに分割し、分割したN個の部分データをN個のプロセッサコアのいずれかに割り当てる。各プロセッサコアは、割り当てられた部分データの読み出しを、共用されるL2キャッシュメモリに要求する。L2キャッシュメモリは、読み出し手段を有し、この読み出し手段が、各プロセッサコアからの要求に応じて、主記憶装置から該当する部分データを読み出す。これにより、主記憶装置からL2キャッシュメモリに、それぞれの部分データがプリロードされる(つまり、ルックアップテーブルがL2キャッシュメモリにコピーされる)。各プロセッサコアによるプリロードは並列的に行われるので、ルックアップテーブルのコピーに要する時間が短縮される。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2017-58738号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
主記憶装置へのアクセスには比較的長い時間を要するため、特許文献1の情報処理装置のように、複数のプロセッサコアと主記憶装置との間に、高速にアクセス可能なキャッシュを設けることが一般的である。
【0005】
しかしながら、車載機器制御に代表されるような様々な処理を周期的に実行するシステムにおいては、ある特定の処理の実行によって、その特定の処理で使用される命令およびデータがキャッシュに格納されても、同じ特定の処理が再び実行されるまでの間に、他のいくつかの処理が実行されることにより、特定の処理で使用される命令およびデータが上書きされてしまう場合がある。このような場合、同じ特定の処理が再び実行されるとき、その特定の処理で使用される命令およびデータは、キャッシュに残っていないことが起こり得る。このため、キャッシュを搭載していても、期待する性能向上効果が得られない虞がある。
【0006】
本開示は、上述した点に鑑みてなされたものであり、複数のプロセッサにて共用されるキャッシュに、特定の処理を実行するために必要な命令およびデータが存在する確率を高めることが可能なマルチプロセッサシステムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するために、本開示によるマルチプロセッサシステムは、
複数のプロセッサ(40a~40n)と、
複数のプロセッサの各々に対して、割り当てられたタスクの実行開始を指示するスケジューラ(48)と、
複数のプロセッサがタスクを実行する際に用いられる命令およびデータを保存するメモリ(22,24)と、
複数のプロセッサとメモリとの間に設けられ、複数のプロセッサによって共用されるキャッシュ(44)と、を備え、
スケジューラは、実行予定の処理に関する情報を取得し、その実行予定の処理が、複数のプロセッサに、同期して実行されるタスクである並列処理であるか否かを判定し、並列処理であると判定した場合、並列処理の実行開始を指示する前に、待機状態にあるプロセッサに対して、並列処理で使用される命令およびデータの少なくとも一部をメモリから読み出してキャッシュに格納するためのキャッシュ更新処理(S140、S160、S340、S360、S410)を割り当てて、その実行開始を指示し、
スケジューラは、キャッシュ更新処理として、待機状態にあるプロセッサに対し並列処理の少なくとも一部の処理の実行開始を指示して、待機状態にあるプロセッサに並列処理の少なくとも一部の処理を予備実行させることにより、並列処理で使用される命令およびデータの少なくとも一部をメモリから読み出してキャッシュに格納させるように構成される。
【0008】
上述したように、本開示のマルチプロセッサシステムによれば、複数のプロセッサに、同期して実行される並列処理の割り当てが予定されているときに、待機状態にあるプロセッサを利用して、並列処理で使用される命令およびデータの少なくとも一部をメモリから読み出してキャッシュに格納するためのキャッシュ更新処理が実行される。このため、複数のプロセッサが並列処理を実行する際には、その並列処理で使用される命令およびデータの少なくとも一部がキャッシュに格納された状態とすることができる。この結果、本開示のマルチプロセッサシステムは、並列処理を実行する時点で、その並列処理に必要な命令やデータがキャッシュに存在する確率を高めることができる。
【0009】
上記括弧内の参照番号は、本開示の理解を容易にすべく、後述する実施形態における具体的な構成との対応関係の一例を示すものにすぎず、なんら本開示の範囲を制限することを意図したものではない。
【0010】
また、上述した特徴以外の、特許請求の範囲の各請求項に記載した技術的特徴に関しては、後述する実施形態の説明および添付図面から明らかになる。
【図面の簡単な説明】
【0011】
図1】マルチプロセッサシステムが適用される車両用電子制御装置の構成の一例を示す構成図である。
図2】マルチプロセッサシステムの構成の一例を示す構成図である。
図3】第1実施形態による、キャッシュ更新処理を含む、スケジューラによって実行される処理の一例を示すフローチャートである。
図4】メモリプロテクションユニットの設定を解除するために、スケジューラによって実行される処理の一例を示すフローチャートである。
図5図3のフローチャートに示す処理により、予定されている並列処理(n+1)の実行前に待機状態となるプロセッサエレメントに、その並列処理(n+1)の一部の処理を予備実行させた場合の、各プロセッサエレメントの動作状態の一例を示す動作図である。
図6】第2実施形態による、キャッシュ更新処理を含む、スケジューラによって実行される処理の一例を示すフローチャートである。
図7図6のフローチャートに示す処理により、予定されている並列処理(n+1)の実行前に待機状態となるプロセッサエレメントに、その並列処理(n+1)で使用される命令およびデータのメモリからの読み出しと、キャッシュへの書き込みのための処理を実行させた場合の、各プロセッサエレメントの動作状態の一例を示す動作図である。
図8】第3実施形態による、キャッシュ更新処理を含む、スケジューラによって実行される処理の一例を示すフローチャートである。
図9図8のフローチャートに示す処理により、予定されている並列処理(n+1)の実行前に待機状態となる複数のプロセッサエレメントに、その並列処理(n+1)の一部の処理を予備実行させた場合の、各プロセッサエレメントの動作状態の一例を示す動作図である。
図10】第4実施形態による、予定されている並列処理(n+1)の実行前に待機状態となる複数のプロセッサエレメントに、その並列処理(n+1)の一部の処理を予備実行させた場合の、各プロセッサエレメントの動作状態の一例を示す動作図である。
図11】第5実施形態による、予定されている並列処理(n+1)の実行前に待機状態となるプロセッサエレメントに、その並列処理(n+1)の一部の処理を予備実行させた場合の、各プロセッサエレメントの動作状態の一例を示す動作図である。
図12】第6実施形態による、マルチプロセッサシステムの構成の一例を示す構成図である。
【発明を実施するための形態】
【0012】
(第1実施形態)
以下、本開示によるマルチプロセッサシステムの第1実施形態が、図面を参照しつつ詳細に説明される。図1は、本実施形態のマルチプロセッサシステムが適用される車両用電子制御装置の構成の一例を示す構成図である。車両用電子制御装置は、様々な処理を高速かつ周期的に実行する。本開示によるマルチプロセッサシステムは、このような、様々な処理を高速かつ周期的に実行する制御装置に適用すると、特に有効である。ただし、本開示によるマルチプロセッサシステムは、同じ処理が周期的に実行されない制御装置に適用されてもよい。また、本開示によるマルチプロセッサシステムの適用例は、車両用電子制御装置に限られず、たとえば、通信機器、工作機器、建設機器などの他の用途に用いられる各種の機器の電子制御装置に適用することもできる。
【0013】
図1に示す車両用電子制御装置10は、たとえば、車両に搭載されたエンジンを制御するエンジン制御装置として用いることができる。以下、車両用電子制御装置をエンジン制御装置として用いた例について説明する。
【0014】
エンジン制御装置10は、車両に搭載されたバッテリ1からの電源供給を受けて動作する。このエンジン制御装置10は、図1に示すように、主として、電源回路12、入力回路14、マイコン16、および出力回路32を備えている。
【0015】
電源回路12は、バッテリ1から供給される電源の電圧を、入力回路14、マイコン16、出力回路32のそれぞれに適した電圧に変換して提供する。入力回路14は、エンジンを制御するために必要な各種センサの検出信号や各種スイッチの入力信号を入力し、マイコン16において取り扱うことができるように、波形整形、増幅等の信号処理を行う。たとえば、入力回路14には、エンジン回転数、燃料圧力、アクセル開度、吸入空気量、エンジン冷却水温などを検出する各種のセンサからの検出信号や、スタータスイッチ,アイドルスイッチ等の各スイッチからの入力信号が入力される。
【0016】
マイコン16は、I/O回路18、CPU20、ROM22、RAM24、AD変換器26、タイマ28、およびこれらの構成を接続するシステムバス30などを備えている。CPU20は、ROM22に記憶されたエンジン制御プログラムをRAM24の一時記憶機能を利用しつつ実行する。このエンジン制御プログラムの実行により、CPU20は、I/O回路18を介してマイコン16に取り込まれた、入力回路14から入力されたセンサ検出信号やスイッチ入力信号を取得する。なお、アナログ信号として入力回路14に入力された信号は、マイコン16に取り込まれる時点で、AD変換器26により、デジタル信号に変換される。CPU20は、取得したセンサ信号やスイッチ入力信号に基づいて、エンジンの各気筒の最適な点火時期、燃料噴射時期および燃料噴射量などを演算する。
【0017】
そして、マイコン16は、演算した点火時期に従って、各気筒のイグナイタに出力回路32を介して点火信号を出力し、各気筒内で圧縮された燃料と空気の混合気に点火する。また、マイコン16は、演算した燃料噴射量と、燃料噴射時期の直前にインジェクタに供給されている燃料圧力とに基づいて燃料噴射期間を算出する。マイコン16は、演算した燃料噴射時期が到来すると、対応するインジェクタに出力回路32を介して駆動信号を出力する。この駆動信号によってインジェクタが開弁され、インジェクタから燃料の噴射が開始される。燃料噴射の開始から、算出した燃料噴射期間が経過したことが、たとえばタイマ28によってカウントされると、マイコン16は、駆動信号の出力を停止して、インジェクタを閉弁する。さらに、マイコン16は、出力回路32を介して他のECUへ、エンジンの制御状態を示す信号や、異常が発生した際にその異常状態を示す信号などを出力する。
【0018】
上述したエンジン制御プログラムは、エンジンの省燃費性能の向上や排ガス規制への対応などのために、複雑化および高度化される傾向にある。本実施形態では、CPU20がそのようなエンジン制御プログラムを適切に処理できるようにするため、CPU20は、後述するように複数のプロセッサエレメントを有している。そして、エンジン制御プログラムは、複数のプロセッサエレメントにて同期して並列的に実行される並列処理を含むように構成されている。換言すれば、複雑で高負荷な演算処理は、並列処理として、複数のプロセッサエレメントで分担して実行される。このように、本実施形態におけるマイコン16は、マルチプロセッサシステムとして構成されている。
【0019】
以下、図2を参照して、マイコン(マルチプロセッサシステム)16における、CPU20に関する構成について説明する。図2に示すように、CPU20は、複数のプロセッサエレメント40a~40nを有する。これら複数のプロセッサエレメント40a~40nには、それぞれのプロセッサエレメント40a~40nを識別するためのPE番号#1~#nが付与されている。また複数のプロセッサエレメント40a~40nには、それぞれ、L1キャッシュ42a~42nが個別に設けられている。ただし、本実施形態では、L1キャッシュ42a~42nは省略されても良い。さらに、CPU20には、複数のプロセッサエレメント40a~40nで共用されるL2キャッシュ44が設けられている。L1キャッシュ42a~42nおよびL2キャッシュ44は、プロセッサエレメント40a~40nと、メモリとしてのROM22、RAM24との間に設けられている。L1キャッシュ42a~42nおよびL2キャッシュ44は、プロセッサエレメント40a~40nに割り当てられた処理(タスク)が実行されるとき、その処理に使用される命令またはデータがROM22(またはRAM24)から読み出されると、その読み出された命令またはデータを、ROM22の記憶場所を示すアドレスとともに格納して保持する。
【0020】
各々のプロセッサエレメント40a~40nは、後述するスケジューラ48から、割り当てられた処理の実行要求を受けると、その処理を実行するために必要な命令やデータを、アドレスを指定した読み出し要求により、ROM22(またはRAM24)から読み出そうとする。このプロセッサエレメント40a~40nからの読み出し要求は、最初にL1キャッシュ42a~42nに入力される。L1キャッシュ42a~42nは、入力された読み出し要求に該当する命令やデータを自身が保持しているかを検索する。自身が保持している場合、L1キャッシュ42a~42nは、該当する命令やデータをプロセッサエレメント40a~40nに提供する。自身が保持していない場合には、L1キャッシュ42a~42nは、プロセッサエレメント40a~40nからの読み出し要求をL2キャッシュ44に転送する。L2キャッシュ44も、L1キャッシュ42a~42nと同様に、入力された読み出し要求に該当する命令やデータを自身が保持しているか高速に検索する。自身が保持している場合、L2キャッシュ44は、該当する命令やデータを、L1キャッシュ42a~42nを介して、プロセッサエレメント40a~40nに提供する。自身が保持していない場合には、L2キャッシュ44は、プロセッサエレメント40a~40nからの読み出し要求をメモリ(ROM22および/またはRAM24)に転送する。
【0021】
メモリプロテクションユニット46は、プロセッサエレメント40a~40nごとに、読み出し要求や、書き込み要求の許可、禁止を設定可能なものである。本実施形態では、メモリプロテクションユニット46は、後述するスケジューラ48によって、並列処理のサブ処理を予備実行するプロセッサエレメント40a~40nからの、メモリ(ROM22、RAM24)や、AD変換器26やタイマ28などの周辺機器のレジスタなどに対する書き込み要求を遮断するように設定される。
【0022】
スケジューラ48は、複数のプロセッサエレメント40a~40nの各々に対して処理実行要求を出力することにより、それぞれに割り当てられた処理の実行を開始させる。また、スケジューラ48は、詳しくは後述するが、待機状態にあるプロセッサエレメント40a~40nに対して、実行予定の並列処理の少なくとも一部のサブ処理を予備実行するように処理実行要求を出力することにより、待機状態にあるプロセッサエレメント40a~40nに、実行予定の並列処理の少なくとも一部のサブ処理を予備実行させる。さらに、スケジューラ48は、各プロセッサエレメント40a~40nにて割り当てられた処理が完了すると、各プロセッサエレメント40a~40nから処理完了通知を受信する。
【0023】
なお、複数のプロセッサエレメント40a~40nに割り当てられる処理(タスク)は、ROM22またはRAM24に格納されている情報に基づいて決定される。たとえば、RAM24は、実行要求のあった処理を示すタスクIDを格納する処理待ち領域を有することができる。たとえば、CPU20においてある処理が実行されたとき、その処理が、少なくとも1つの別の処理の実行を要求する命令を含んでいた場合、別の処理のタスクIDが、上記の処理待ち領域に格納される。また、センサによって所定の信号が検出されたとき、タイマによって所定時間がカウントされたとき、他のECUからの所定の信号が入力されたときなどにも、処理の実行要求が発生して、該当する処理のタスクIDが上記の処理待ち領域に格納される場合がある。複数の処理のタスクIDが、同時期に上記の処理待ち領域に格納された場合には、所定のルール(例えば、先着順、優先度順、処理時間順、または、それらの任意の組み合わせなど)に従って、処理の実行順序が決定されればよい。あるいは、CPU20にて実行される処理の順序は、エンジン制御プログラムにおいて予め定められ、その定められた処理の順序に従って、それぞれの処理を示すタスクIDが上記の処理待ち領域に格納されてもよい。
【0024】
さらに、ROM22(またはRAM24)には、プロセッサエレメント情報(以下、PE情報)として、処理毎に、それぞれの処理がいずれのプロセッサエレメント40a~40nに割り当てられるかを示すPE番号#1~#nと、それぞれの処理を実行するための命令やデータが格納された領域のアドレスとが予め格納されている。スケジューラ48は、PE情報を参照して、該当する処理に対応するPE番号#1~#nから、実行予定の処理が割り当てられるプロセッサエレメント40a~40nを把握する。そして、スケジューラ48は、該当するプロセッサエレメント40a~40nに、実行する処理のアドレスを指定しつつ、処理実行要求を出力する。これにより、各プロセッサエレメント40a~40nにおいて、割り当てられた処理の実行が開始される。また、処理が、複数のプロセッサエレメント40a~40nに割り当てられるサブ処理を含み、それらサブ処理が複数のプロセッサエレメント40a~40nによって同期して実行される並列処理である場合、スケジューラ48は、並列処理に含まれる各サブ処理を実行する複数のプロセッサエレメント40a~40nに対して、実質的に同時に処理実行要求を出力する。
【0025】
なお、図2においては、スケジューラ48は、CPU20の外部に設けられているが、たとえば、CPU20としてデータフロープロセッサを用いた場合などには、スケジューラ48がCPU20に内蔵されてもよい。
【0026】
次に、図3のフローチャートを参照して、複数のプロセッサエレメント40a~40nによって共用されるL2キャッシュ44に、並列処理を実行するために必要な命令およびデータが存在する確率を高めるために、すなわち、キャッシュヒット率を高めるために、スケジューラ48によって実行される処理の一例について説明する。図3のフローチャートに示す処理は、マイコン16のパワーオンリセットの解除をトリガとして開始される。ただし、マイコン16は、タイマ、I/O、他のECUなどからトリガ信号を受け取って、処理を開始するように構成してもよい。
【0027】
最初のステップS100において、スケジューラ48は、次に実行予定の処理(n)に関する情報を取得する。具体的には、スケジューラ48は、処理待ち領域を参照して、次に実行予定の処理(n)を把握する。さらに、スケジューラ48は、ROM22(またはRAM24)に格納されたPE情報を参照して、処理(n)が割り当てられるプロセッサエレメント40a~40nを示すPE番号#1~#nと、その処理(n)が保存されたアドレス(処理(n)が並列処理である場合、処理(n)に含まれる各サブ処理のPE番号#1~#nとアドレス)を取得する。ステップS110では、スケジューラ48は、次に実行予定の処理(n)が、並列処理であるか否かを判定する。並列処理と判定した場合、スケジューラ48は、ステップS120の処理に進む。並列処理ではないと判定した場合、スケジューラは、ステップS100の処理に戻る。
【0028】
ステップS120では、スケジューラ48は、処理(n)の次に実行予定の処理(n+1)に関する情報を、ステップS100と同様に取得する。そして、ステップS130において、処理(n+1)は並列処理であるか否かを判定する。並列処理と判定した場合、スケジューラ48は、ステップS140の処理に進む。並列処理ではないと判定した場合、スケジューラは、ステップS100の処理に戻る。なお、ステップS110またはステップS130において否定判定された場合であって、実行予定の処理(n)または次に実行予定の処理(n)が存在するが、それが並列処理ではない場合、スケジューラ48は、図示しない別ルーチンにて、処理(n)が割り当てられたプロセッサエレメント40a~40nに、適切なタイミングで、その処理(n)の実行開始要求を出力する。
【0029】
ステップS140において、スケジューラ48は、並列処理(n)のサブ処理が割り当てられていないプロセッサエレメント40a~40nの中から、並列処理(n+1)の少なくとも一部のサブ処理を予備実行するプロセッサエレメント40a~40nを選択する。たとえば、スケジューラ48は、並列処理(n)のサブ処理が割り当てられていないプロセッサエレメント40a~40nの中で、最も小さいPE番号のプロセッサエレメント40a~40nを、並列処理(n+1)の少なくとも一部のサブ処理を予備実行するプロセッサエレメント40a~40nとして選択することができる。もしくは、別の算出方法にて、並列処理(n+1)の少なくとも一部のサブ処理を予備実行するプロセッサエレメント40a~40nを選択してもよい。また、並列処理(n+1)の少なくとも一部のサブ処理を予備実行するプロセッサエレメント40a~40nの数は、単数であってもよいし、複数であってもよい。さらに、スケジューラ48は、選択したプロセッサエレメント40a~40nによって予備実行させるサブ処理も決定する。
【0030】
たとえば、図5は、CPU20が3つのプロセッサエレメント40a~40cを有し、それら3つのプロセッサエレメント40a~40cにより、並列処理(n)としての並列処理Aと、次の並列処理(n+1)としての並列処理Bが実行される場合の、各プロセッサエレメント40a~40cが実行する各並列処理A、Bのサブ処理の一例を示している。具体的には、並列処理Aは、サブ処理A1、A2を含む。サブ処理A1は、プロセッサエレメント40aに割り当てられる。サブ処理A2は、プロセッサエレメント40bに割り当てられる。また、並列処理Bは、サブ処理B1、B2、B3を含む。サブ処理B1は、プロセッサエレメント40aに割り当てられる。サブ処理B2は、プロセッサエレメント40bに割り当てられる。サブ処理B3は、プロセッサエレメント40cに割り当てられる。図5に示す例では、並列処理Aが実行されるとき、プロセッサエレメント40cが待機状態(Idle状態)となる。このため、並列処理Bの少なくとも一部のサブ処理を予備実行するプロセッサエレメントとして、プロセッサエレメント40cが選択される。さらに、図5に示す例では、並列処理Bの少なくとも一部のサブ処理として、サブ処理B1、B2がプロセッサエレメント40cによって予備実行される。
【0031】
待機状態となるプロセッサエレメント40cに、いずれのサブ処理を予備実行させるかに関して、たとえば、スケジューラ48は、並列処理Bのサブ処理B1、B2、B3の中で、ROM22(またはRAM24)からの命令およびデータの読み出しに最も時間がかかる処理(たとえば、サブ処理B1)を含む少なくとも一部のサブ処理を、予備実行するサブ処理として決定してもよい。これにより、並列処理Bを完了するまでに要する時間を効果的に短縮することができる。この場合、たとえば、上述したPE情報が、各サブ処理の命令およびデータの読み出しにかかる時間情報、または最も時間のかかるサブ処理を示す情報を含むように構成することにより、スケジューラ48は、容易に予備実行するサブ処理を決定することができる。あるいは、各並列処理のPE情報が、予備実行の対象となるサブ処理を直接的に示す情報を含んでいてもよい。
【0032】
または、スケジューラ48は、待機状態となるプロセッサエレメント40cが実行する予定のサブ処理B3を含む、並列処理Bの少なくとも一部のサブ処理を、予備実行するサブ処理として決定してもよい。これにより、L2キャッシュ44よりもさらに高速にアクセス可能なL1キャッシュ42cにサブ処理B3の命令やデータを格納することができるので、プロセッサエレメント40cは、サブ処理B3をより早期に完了させることができるようになる。さらに、スケジューラ48は、並列処理Bに含まれるすべてのサブ処理B1~B3を予備実行の対象として決定してもよい。
【0033】
図3のフローチャートのステップS150では、スケジューラ48は、メモリプロテクションユニット46に対して、並列処理(n)のサブ処理を実行するプロセッサエレメント40a~40nの出力の通過を許可し、並列処理(n+1)のサブ処理を予備実行するプロセッサエレメント40a~40nの書き込み要求出力を遮断する設定を行う。図5に示す例では、スケジューラ48は、並列処理Aのサブ処理A1、A2を実行するプロセッサエレメント40a、40bの出力の通過を許可し、並列処理Bのサブ処理B1、B2を予備実行するプロセッサエレメント40cの書き込み要求出力を遮断するように、メモリプロテクションユニット46を設定する。本実施形態では、並列処理(n+1)のサブ処理の予備実行は、制御仕様上、意図しないタイミングで実行されることになる。そこで、サブ処理の予備実行がエンジン制御に影響を及ぼさないようにするために、サブ処理を予備実行するプロセッサエレメント40a~40nから、メモリ(ROM22、RAM24)や、AD変換器26、タイマ28などの周辺機器のレジスタなどに対する書き込み要求出力を遮断するのである。
【0034】
なお、書き込み要求出力の遮断は、メモリプロテクションユニット46のようなハードウエアを利用する方法以外に、ソフトウェアを利用して実施することも可能である。たとえば、ソフトウェア上で、予備実行であるか否かを判定し、予備実行と判定した場合には、書き込み要求を出力しないように設定すればよい。
【0035】
ステップS160では、スケジューラ48は、並列処理(n)のサブ処理を実行するすべてのプロセッサエレメント40a~40nと、並列処理(n+1)のサブ処理を予備実行するすべてのプロセッサエレメント40a~40nとに対して、実質的に同時に処理実行要求を送信する。図5に示す例では、スケジューラ48は、並列処理Aのサブ処理A1、A2をそれぞれ実行するプロセッサエレメント40a、40bと、並列処理Bのサブ処理B1、B2を予備実行するプロセッサエレメント40cとに対して、実質的に同時に処理実行要求を送信している。これにより、プロセッサエレメント40cによって、並列処理Aの次に実行予定の並列処理Bのサブ処理B1、B2の予備実行が開始される。その結果、並列処理Bが開始される前に、並列処理Bのサブ処理B1、B2で使用される命令およびデータをROM22(またはRAM24)から読み出して、L2キャッシュ44に格納させることができる。
【0036】
ステップS170では、スケジューラ48は、並列処理(n)のサブ処理を実行するすべてのプロセッサエレメント40a~40nから処理完了通知を受信したか否かを判定する。この判定処理において、すべてのプロセッサエレメント40a~40nから処理完了通知を受信したと判定した場合、ステップS180の処理に進む。一方、すべてのプロセッサエレメント40a~40nから処理完了通知を受信していないと判定した場合、処理完了通知を受信するまで、ステップS170の処理を繰り返す。ステップS180では、判定対象とする処理を1つ進めるため、判定対象となる処理を指定する変数nをインクリメントする。その後、スケジューラ48は、ステップS100の処理に戻り、上述したS100からS180の処理を繰り返し実行する。
【0037】
図4のフローチャートに示す処理は、図3のフローチャートのステップS150によってメモリプロテクションユニット46の設定が行われると、その設定を解除するために、スケジューラ48において実行されるものである。
【0038】
ステップS190では、スケジューラ48は、並列処理(n+1)のサブ処理の少なくとも一部を割り当てたすべてのプロセッサエレメント40a~40nから予備実行完了通知を受信したか、または、並列処理(n+1)の処理実行要求を送信したか否かを判定する。予備実行が完了するか、または並列処理(n+1)の実行要求が送信された場合、もはやメモリプロテクションユニット46によって、並列処理(n+1)のサブ処理の少なくとも一部を割り当てたプロセッサエレメント40a~40nからの書き込み要求出力を遮断しておく必要はない。そのため、ステップS195の処理に進み、スケジューラ48は、メモリプロテクションユニットの出力遮断設定を解除する。ただし、並列処理(n+1)が実行されるときに、次の並列処理(n+2)のサブ処理の少なくとも一部の予備実行を行うプロセッサエレメント40a~40nがある場合には、そのプロセッサエレメント40a~40nからの書き込み要求出力を遮断する設定は維持される。
【0039】
なお、スケジューラ48は、たとえば、図5に示すように、並列処理Aのサブ処理A1、A2が完了すると、次の並列処理Bの処理実行要求を送信する準備が整い次第、各プロセッサエレメント40a~40cに処理実行要求を送信する。この際、スケジューラ48は、並列処理Bのサブ処理B1、B2を予備実行しているプロセッサエレメント40cが、サブ処理B1、B2の予備実行を完了したか否かを考慮しなくてもよい。たとえサブ処理B1、B2が途中で中断されたとしても、エンジン処理にはなんら悪影響は生じず、また、それまでに予備実行されたサブ処理B1、B2に関する命令およびデータはL2キャッシュ44に格納されているので、その後実行される並列処理Bにおけるキャッシュヒット率の向上効果は十分に見込めるためである。
【0040】
上述した第1実施形態のマルチプロセッサシステム16によれば、複数のプロセッサエレメント40a~40nに、同期して実行される並列処理(n+1)の割り当てが予定されているときに、その並列処理(n+1)の実行前に待機状態となるプロセッサエレメント40a~40nを利用して、並列処理(n+1)で使用される命令およびデータの少なくとも一部をROM22またはRAM24から読み出してL2キャッシュ44に格納するため、並列処理(n+1)のサブ処理の少なくとも一部が予備実行される。これにより、複数のプロセッサエレメント40a~40nが並列処理(n+1)を実行する際には、その並列処理(n+1)で使用される命令およびデータの少なくとも一部がL2キャッシュ44に格納された状態とすることができる。この結果、本実施形態のマルチプロセッサシステム16は、並列処理(n+1)を実行する時点で、その並列処理(n+1)に必要な命令やデータの少なくとも一部がL2キャッシュ44に存在する確率、すなわち、キャッシュヒット率を高めることができる。
【0041】
なお、上述した第1実施形態では、複数のプロセッサエレメント40Aa~40nにより、並列処理(n+1)の前に、並列処理(n)が実行される場合に、並列処理(n)の実行期間中、待機状態となるプロセッサエレメント40a~40nに、並列処理(n+1)のサブ処理の少なくとも一部を予備実行させる例について説明した。これは、並列処理(n+1)の前に、別の並列処理(n)が実行される場合、並列処理(n)の実行中に待機状態となるプロセッサエレメント40a~40nの把握が容易であったり、予備実行の開始を、別の並列処理(n)の開始と揃えたりすることができたりして、比較的、容易に待機状態となるプロセッサエレメント40a~40nに、並列処理(n+1)のサブ処理の予備実行を行わせることができるためである。
【0042】
しかしながら、並列処理(n+1)の前に実行される処理が並列処理(n)ではない場合であっても、並列処理(n+1)の前に、すべてのプロセッサエレメント40a~40nに処理が割り当てられておらず、待機状態となるプロセッサエレメント40a~40nが存在する場合には、その待機状態となるプロセッサエレメント40a~40nに並列処理(n+1)のサブ処理の少なくとも一部を予備実行させることが可能である。
【0043】
(第2実施形態)
次に、本開示によるマルチプロセッサシステムの第2実施形態が、図面を参照して説明される。本実施形態のマルチプロセッサシステム16の基本的な構成は、第1実施形態に係るマルチプロセッサシステム16と同様であるため説明を省略する。
【0044】
上述した第1実施形態のマルチプロセッサシステム16では、並列処理(n+1)のサブ処理の少なくとも一部を、その並列処理(n+1)の前に待機状態となるプロセッサエレメント40a~40nに実際に予備実行させることにより、並列処理(n+1)で使用される命令およびデータの少なくとも一部をROM22またはRAM24から読み出して、L2キャッシュ44に格納させるものであった。
【0045】
それに対して、本実施形態のマルチプロセッサシステム16では、並列処理(n+1)の前に待機状態となるプロセッサエレメント40a~40nに、並列処理(n+1)で使用される命令およびデータの少なくとも一部のROM22またはRAM24からの読み出しと、その読み出した命令およびデータのL2キャッシュ44への書き込みを行う処理を実行させることにより、並列処理(n+1)で使用される命令およびデータの少なくとも一部をROM22またはRAM24から読み出して、L2キャッシュ44に格納させるものである。
【0046】
本実施形態では、各並列処理に対して、その並列処理で使用される命令およびデータの少なくとも一部のROM22またはRAM24からの読み出しと、その読み出した命令およびデータのL2キャッシュ44への書き込み処理を行うプログラムが用意され、ROM22またはRAM24に保存されている。この際、メモリから読み出して、L2キャッシュ44への書き込み処理の対象とする命令およびデータは、たとえば、並列処理Bのサブ処理B1、B2、B3単位で決定されてもよいし、すべてのサブ処理B1、B2、B3の一部もしくは全部の命令およびデータとしてもよい。なお、本実施形態を採用するためには、L2キャッシュ44が、プロセッサエレメント40a~40nから直接的な書き込みを受け付けるハードウエア機能を有していることが必要である。
【0047】
図6のフローチャートは、本実施形態のマルチプロセッサシステム16のスケジューラ48が実行する処理の一例を示している。図6のフローチャートのステップS200~S230の処理は、図3のフローチャートのステップS100~S130の処理と同様であるため、説明を省略する。
【0048】
ステップS240において、スケジューラ48は、並列処理(n)のサブ処理が割り当てられていないプロセッサエレメント40a~40nの中から、並列処理(n+1)で使用される命令およびデータの少なくとも一部のメモリからの読み出しと、L2キャッシュ44への書き込み処理を実行するプロセッサエレメント40a~40nを選択する。このプロセッサエレメント40a~40nの選択手法は、第1実施形態と同様とすることができる。たとえば、図7に示す例では、並列処理Aが実行されるとき、プロセッサエレメント40cが待機状態(Idle状態)となる。このため、メモリからの命令およびデータの読み出しと、読みだした命令およびデータのL2キャッシュ44への書き込み処理は、プロセッサエレメント40cによって実行される。
【0049】
ステップS260では、図3のフローチャートのステップS160と同様に、スケジューラ48は、並列処理(n)のサブ処理を実行するすべてのプロセッサエレメント40a~40nと、並列処理(n+1)で使用される命令およびデータの少なくとも一部のメモリからの読み出しと、L2キャッシュ44への書き込み処理を実行するすべてのプロセッサエレメント40a~40nとに対して、実質的に同時に処理実行要求を送信する。なお、図6のフローチャートのステップS270~S280の処理は、図3のフローチャートのステップS170~S180の処理と同様であるため、説明を省略する。
【0050】
本実施形態では、上述したように、待機状態となるプロセッサエレメント40a~40nは、メモリからの命令およびデータの読み出しと、L2キャッシュ44への命令およびデータの書き込みだけを行い、メモリや周辺機器への書き込みは行わないので、第1実施形態とは異なり、メモリプロテクションユニット46の設定処理は不要である。従って、本実施形態では、メモリプロテクションユニット46は省略されてもよい。
【0051】
上述した第2実施形態のマルチプロセッサシステム16によっても、第1実施形態のマルチプロセッサシステム16と同様に、複数のプロセッサエレメント40a~40nが並列処理(n+1)を実行する際には、その並列処理(n+1)で使用される命令およびデータの少なくとも一部がL2キャッシュ44に格納された状態とすることができる。そのため、本実施形態のマルチプロセッサシステム16は、並列処理(n+1)を実行する時点で、その並列処理(n+1)に必要な命令やデータの少なくとも一部がL2キャッシュ44に存在する確率、すなわち、キャッシュヒット率を高めることができる。
【0052】
(第3実施形態)
次に、本開示によるマルチプロセッサシステムの第3実施形態が、図面を参照して説明される。本実施形態のマルチプロセッサシステム16の基本的な構成は、第1実施形態に係るマルチプロセッサシステム16と同様であるため説明を省略する。
【0053】
上述した第1実施形態のマルチプロセッサシステム16では、並列処理(n+1)のサブ処理の少なくとも一部を、その並列処理(n+1)の前に実行される並列処理(n)のサブ処理が割り当てられないプロセッサエレメント40a~40nだけに予備実行させるものであった。
【0054】
それに対して、本実施形態のマルチプロセッサシステム16では、並列処理(n)のサブ処理が割り当てられないプロセッサエレメント40a~40nに加えて、並列処理(n)のサブ処理が割り当てられたが、そのサブ処理が、他のサブ処理よりも早く完了したプロセッサエレメント40a~40nにも、並列処理(n+1)のサブ処理の少なくとも一部を予備実行させるものである。
【0055】
図8のフローチャートは、本実施形態のマルチプロセッサシステム16のスケジューラ48が実行する処理の一例を示している。図8のフローチャートのステップS300~S380の処理は、図3のフローチャートのステップS100~S180の処理と同様であるため、説明を省略する。
【0056】
ステップS370において、スケジューラ48が、並列処理(n)のサブ処理を実行するすべてのプロセッサエレメント40a~40nから処理完了通知を受信していないと判定したときに実行されるステップS390では、各プロセッサエレメント40a~40nから受信する処理完了通知に基づいて、割り当てられたサブ処理を完了し、待機状態(Idle状態)となっているプロセッサエレメント40a~40nが存在するか否かを判定する。この判定処理において、待機状態となっているプロセッサエレメント40a~40nが存在すると判定した場合、ステップS400の処理に進む。一方、待機状態となっているプロセッサエレメント40a~40cは存在しないと判定した場合、ステップS370の処理に戻る。
【0057】
ステップS400では、スケジューラ48は、待機状態のプロセッサエレメント40a~40nからの書き込み要求出力を遮断するように、メモリプロテクションユニット46を設定する。そして、S410において、スケジューラ48は、並列処理(n+1)のサブ処理の中で未実行のサブ処理を選択し、その選択したサブ処理を予備実行させるべく、待機状態のプロセッサエレメント40a~40nに対して、処理実行要求を送信する。
【0058】
たとえば、図9には、並列処理Aのサブ処理A1、A2が割り当てられないプロセッサエレメント40cが、並列処理Bのサブ処理B1を予備実行することに加え、並列処理Aのサブ処理A2が割り当てられたプロセッサエレメント40bが、そのサブ処理A2の完了後に、並列処理Bのサブ処理B2を予備実行する例が示されている。図9に示すように、プロセッサエレメント40bは、並列処理Aのサブ処理A2が完了した時点で、スケジューラ48に処理完了通知を送信する。これにより、スケジューラ48は、プロセッサエレメント40bが待機状態となることを把握する。このとき、スケジューラ48は、プロセッサエレメント40aから処理完了通知を受信していないので、待機状態となるプロセッサエレメント40bに、並列処理Bのサブ処理B1、B2、B3の中で、未実行のサブ処理B2を予備実行させることを決定する。スケジューラ48は、メモリプロテクションユニット46の設定などの必要な処理を行った後、プロセッサエレメント40bに対して処理実行要求を送信して、並列処理Bのサブ処理B2を予備実行させる。
【0059】
このように、並列処理Aのサブ処理A2が完了し、待機状態となるプロセッサエレメント40a~40nも活用して、並列処理Bのサブ処理B1、B2を予備実行させることにより、並列処理Bで使用される、より多くの命令およびデータをL2キャッシュ44に格納することが可能となる。
【0060】
(第4実施形態)
次に、本開示によるマルチプロセッサシステムの第4実施形態が、図面を参照して説明される。本実施形態のマルチプロセッサシステム16の基本的な構成は、第1実施形態に係るマルチプロセッサシステム16と同様であるため説明を省略する。
【0061】
本実施形態に係るマルチプロセッサシステム16は、並列処理(n+1)の前に実行される並列処理(n)のサブ処理が、複数のプロセッサエレメント40a~40nのすべてに割り当てられた場合であっても、次の並列処理(n+1)のサブ処理の少なくとも一部を予備実行できるようにしたものである。具体的には、本実施形態のマルチプロセッサシステム16では、スケジューラ48が、他のプロセッサエレメント40a~40nよりも先に、割り当てられた並列処理(n)のサブ処理が完了したプロセッサエレメント40aに、次の並列処理(n+1)のサブ処理の予備実行を命じる。
【0062】
たとえば、図10に示す例では、プロセッサエレメント40bが最も早く並列処理Aのサブ処理A2を完了している。このため、スケジューラ48は、プロセッサエレメント40bからの処理完了通知の受信に応じて、プロセッサエレメント40bに、次の並列処理Bのサブ処理B2の予備実行を要求する。その後、プロセッサエレメント40cが並列処理Aのサブ処理A3を完了し、スケジューラ48に処理完了通知を送信する。その時点で、プロセッサエレメント40aは、まだ並列処理Aのサブ処理A1を完了しておらず、スケジューラ48は、プロセッサエレメント40aから処理完了通知を受信していない。このように、まだ並列処理Aのサブ処理A1、A2、A3が割り当てられたすべてのプロセッサエレメント40a~40cから処理完了通知を受信していないので、スケジューラ48は、処理完了通知を受信したプロセッサエレメント40cに対して、次の並列処理Bのサブ処理B3の予備実行を要求する。
【0063】
そして、並列処理Aのサブ処理A1、A2、A3が割り当てられたすべてのプロセッサエレメント40a~40cから処理完了通知を受信すると、スケジューラ48は、各々のプロセッサエレメント40a~40cに対して、それぞれに割り当てられた次の並列処理Bのサブ処理B1~B3の実行を要求する。
【0064】
(第5実施形態)
次に、本開示によるマルチプロセッサシステムの第4実施形態が、図面を参照して説明される。本実施形態のマルチプロセッサシステム16の基本的な構成は、第1実施形態に係るマルチプロセッサシステム16と同様であるため説明を省略する。
【0065】
本実施形態に係るマルチプロセッサシステム16は、スケジューラ48が、待機状態にあるプロセッサエレメント40a~40nに対して、第1実施形態で説明した次の並列処理のサブ処理の予備実行や、第2実施形態で説明したメモリからの命令およびデータの読み出し、および読み出した命令およびデータのL2キャッシュ44への書き込み処理などのキャッシュ更新処理の割り当てを行わない場合、待機状態にあるプロセッサエレメント40a~40nを省電力状態とするものである。
【0066】
たとえば、図11に示す例では、プロセッサエレメント40cは、並列処理Aのサブ処理A1、A2が割り当てられず、かつ、次の並列処理Bのサブ処理の予備実行などのキャッシュ更新処理も割り当てられていない。このような場合に、スケジューラ48は、プロセッサエレメント40cを低消費電力モードに設定して、省電力状態とすることができる。たとえば、スケジューラ48は、プロセッサエレメント40cに供給されるクロックと電源との少なくとも一方を遮断することで、プロセッサエレメント40cを低消費電力モードに設定してもよい。
【0067】
以上、本開示の好ましい実施形態について説明したが、本開示は、上述した実施形態になんら制限されることなく、本開示の主旨を逸脱しない範囲において、種々、変形して実施することができる。
【0068】
たとえば、上述した各実施形態では、1つのCPU20が、複数のプロセッサエレメント40a~40nを内蔵するとともに、それら複数のプロセッサエレメント40a~40nによって共用されるL2キャッシュ44を内蔵するマルチプロセッサシステムの例について説明した。しかしながら、少なくとも1つのプロセッサエレメントを内蔵するCPUを複数用意し、それら複数のCPUによって共用されるL2キャッシュを設けて、マルチプロセッサシステムを構成してもよい。
【0069】
また、図12に示されるように、マルチプロセッサシステムは、複数のCPU20a、20bを備えるが、L2キャッシュ44は、すべてのプロセッサエレメント40a~40n、50によって共用されず、一部のプロセッサエレメント40a~40nのみによって共用されるように構成されてもよい。
【0070】
さらに、たとえば第1実施形態では、並列処理(n+1)の直前に実施される並列処理(n)において、待機状態となるプロセッサエレメント40a~40nに、並列処理(n+1)のサブ処理の少なくとも一部を予備実行させた。しかしながら、並列処理(n+1)のサブ処理の少なくとも一部の予備実行は、直前の並列処理(n)に限られず、それ以前に実行される(並列)処理において実行されてもよい。
【符号の説明】
【0071】
1:バッテリ、10:車両用電子制御装置、12:電源回路、14:入力回路、16:マイコン、18:I/O回路、20:CPU、22:ROM、24:RAM、26:AD変換器、28:タイマ、30:システムバス、32:出力回路、40a~40n:プロセッサエレメント、42a~42n:L1キャッシュ、44:L2キャッシュ、46:メモリプロテクションユニット、48:スケジューラ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12