JP5045307B2 - マルチコアシステム、電子制御ユニット、モータecu、制御システム、命令実行方法 - Google Patents

マルチコアシステム、電子制御ユニット、モータecu、制御システム、命令実行方法 Download PDF

Info

Publication number
JP5045307B2
JP5045307B2 JP2007219876A JP2007219876A JP5045307B2 JP 5045307 B2 JP5045307 B2 JP 5045307B2 JP 2007219876 A JP2007219876 A JP 2007219876A JP 2007219876 A JP2007219876 A JP 2007219876A JP 5045307 B2 JP5045307 B2 JP 5045307B2
Authority
JP
Japan
Prior art keywords
central processing
address
dedicated
instruction
processing unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007219876A
Other languages
English (en)
Other versions
JP2009053918A (ja
Inventor
竜路 岡村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toyota Motor Corp
Original Assignee
Toyota Motor Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toyota Motor Corp filed Critical Toyota Motor Corp
Priority to JP2007219876A priority Critical patent/JP5045307B2/ja
Publication of JP2009053918A publication Critical patent/JP2009053918A/ja
Application granted granted Critical
Publication of JP5045307B2 publication Critical patent/JP5045307B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、複数の中央処理装置を搭載したマルチコアシステム等に関し、特に、複数の中央処理装置が共通のオブジェクトコードを実行するマルチコアシステム、電子制御ユニット、モータECU、制御システム及び命令実行方法に関する。
1つの機能単位を実行するプログラムであっても、それをCPUで実行する段階ではいくつかのスレッドに分解して実行することが多い。また、マルチコアシステム又はマルチCPUシステム(以下、単にマルチコアシステムという)と呼ばれる技術が知られており、各スレッドを複数のCPUコアのそれぞれで実行することで処理効率を上げる工夫が成されている。このマルチコアシステムでは、各スレッドの処理やスループットの要請から複数のCPUコアがメモリを共有する場合が多い。
しかしながら、複数のCPUコアが各スレッドを並列に実行すると、同じスレッドが時間的に重複して実行されることがあり、スレッドに指定されるアドレスのメモリ領域やレジスタの内容を破壊するおそれがあることが知られている。
このような問題を回避するため、リエントラントなプログラミング手法が提案されている(例えば、特許文献1参照。)。特許文献1には、プログラムのうち一部をリエントラントに構成し、複数のマルチコアの負荷状態に応じて、プログラムのうちリエントラントな部分の配分を制御するマルチプロセッサ処理方法が記載されている。
また、各CPUコア毎にアクセス可能なメモリ領域のアドレスを生成する技術が提案されている(例えば、特許文献2参照。)。特許文献2には、CPUコア毎にアクセス可能なアドレス領域を予め定めておき、メモリへのアクセスを要求したCPUコアの識別情報に応じてアドレスを変換して、CPUコア毎に定められたメモリ領域にアクセスさせるマルチプロセッサシステムが記載されている。
特開平05−28120号公報 特開2002−32352号公報
しかしながら、プログラムによってはリエントラント可能でない処理が少なくない場合もあり、特許文献1記載のマルチプロセッサ処理方法のようにリエントラント可能なプログラムのみを配分したのでは、処理効率を十分に向上させることは困難である。
また、特許文献2記載のマルチプロセッサシステムのようにCPUコア毎にメモリ領域を確保することは、CPUコアの数だけメモリ領域が必要となることを意味し、コストやメモリの搭載スペースの要請から実現が困難な場合が多い。また、各CPUコアがどのくらいメモリを消費するかはスレッドの処理内容等に依存するため、負荷の軽いスレッドを実行する間はその区分されたメモリ領域の使用効率が低下してしまう。
本発明は、上記課題に鑑み、メモリ容量の増大を抑制して、また、リエントラントな処理か否かに関わらず、各コアが並行に命令を実行可能なマルチコアシステム、電子制御ユニット、モータECU、制御システム及び命令実行方法を提供することを目的とする。
上記課題に鑑み、本発明は、複数の中央処理装置を搭載したマルチコアシステムにおいて、複数の中央処理装置が共用するオブジェクトコードを記憶する共用部と、中央処理装置毎に異なるオブジェクトコードを記憶する複数の専用部と、を有するメモリと、読み出した命令に中央処理装置毎に異なるデータを使用する専用データ命令が検出された場合、当該命令を実行する中央処理装置に応じて前記データのアドレスを、当該中央処理装置の前記専用部のアドレスに変換するアドレス分配器と、を有し、前記アドレス分配器は、
中央処理装置が読み出した命令が分岐命令であってその分岐先が、当該中央処理装置の前記専用部又は前記共用部である場合は分岐を許可し、前記分岐先が当該中央処理装置の前記専用部でなく、かつ、前記共用部でもない場合、分岐を禁止して次の命令を中央処理装置に読み出させる、ことを特徴とする。
本発明によれば、複数のCPUコアの処理対象として異なるデータはそれぞれのデータを専用部に格納し、それ以外のデータは共用エリアに格納するのでメモリの容量を低減することができる。
また、本発明によれば、CPUコア100Aと100Bで別々のロジックを実行する場合はそれぞれの専用部のロジックを実行し、それ以外は共用部のロジックを実行するのでメモリの容量を低減することができる
メモリ容量の増大を抑制して、また、リエントラントな処理か否かに関わらず、各コアが並行に命令を実行可能なマルチコアシステム、電子制御ユニット、モータECU、制御システム及び命令実行方法を提供することができる。
本実施形態の概略を説明する。例えば、電気モータで走行する車両(ハイブリッドカー、電気自動車)は複数のモータを有する場合があるが、その複数のモータの制御アルゴリズムは同じといってよい。各モータは特性値及び適合値が異なるが、これにそれぞれのモータで異なるプラスαの処理を加えても、大部分の制御アルゴリズムは共通である。
例えば、モータが2つの場合に、マルチコアシステムで当該制御アルゴリズムのプログラムを実行して2つのモータを制御する場合を考えると、制御アルゴリズムの大部分が共通でもリエントラントな設計でない限り、各CPUコアがモータ毎に、大部分が共通するプログラムをそれぞれ実行することになる。
図1(a)は2つのCPUコア100A,100Bが、それぞれ大部分が共通するプログラムを実行するマルチコアシステムの概念図を示す(従来図)。図1(a)では、CPUコア100Aはメモリ200Aを作業領域に、CPUコア100Bはメモリ200Bを作業領域にする。
オブジェクトコード(プログラム)がロジック部とデータ部から構成されているとすると、CPUコア100Aのためにメモリ200Aに共通ロジック、モータA用ロジック、共通データ及びモータA用データが配置され、CPUコア100Bのために、メモリ200Bに共通ロジック、モータB用ロジック、共通データ及びモータB用データが配置される。なお、データ部とは、変数、定数、マップ等などを格納する領域をいう。
図1(a)に示すように、CPUコア100Aと100Bが実行するプログラムは、共通ロジック及び共通データで共通に有する。したがって、共通ロジックと共通データをCPUコア100Aと100Bが共有して実行できれば、メモリ200の容量を低減できることになる。
図1(b)は、共通ロジックと共通データをCPUコア100Aと100Bが共用して実行するマルチコアシステム50の概念図を示す。本実施形態のマルチコアシステム50は、図1(b)のように共通ロジックと共通データを共用すると共に、ロジック又はデータの異なる部分はコンパイル時に自動的に検出して、専用のメモリ領域に配置することで、メモリ領域200の低減を可能にする。そして、CPUコア100A又は100Bのどちらが命令を実行しているかにより、アドレス変換等の所定の制御を実行する。
図2はマルチコアシステム50の構成図を、図3はマルチコアボード11のブロック図をそれぞれ示す。マルチコアシステム50は、バスを介して接続されたマルチコアボード11及び記憶装置12を有する。記憶装置12は、例えば、ROM、HDD(ハードディスクドライブ)等の不揮発性のメモリであり、マルチコアボード11のCPUコア100A及び100Bが実行するオブジェクトコード13が記憶されている。このオブジェクトコード13は後述するようにコンパイラ14がソースコードをコンパイルし、必要に応じリンケージされることで生成される。
なお、図2ではマルチコアボード11と記憶装置12を別体に示したが、記憶装置12をマルチコアボード11に組み込んでもよい。
マルチコアボード11は、時間的に少なくとも一部が重複して制御されるデバイスA、Bに接続されており、マルチコアボード11が有するCPUコア100Aがオブジェクトコード13を実行してデバイスAを制御し、CPUコア100Bのオブジェクトコード13を実行してデバイスBを制御する。したがって、CPUコア100A、100Bの数とデバイスA,Bの数は等しいことが好ましいが、CPUコア100A、100Bの数は3以上であってもよく、数が多いほどメモリ200の容量の低減効果を奏しやすくできる。
マルチコアボード11は、CPUコア100A、100Bと共に、メモリ200、アドレス分配器20、IO(Input Output)部21A、21Bを有する。オブジェクトコード13を実行する際は、このメモリ200にオブジェクトコード13が配置される。CPUコア100AとCPUコア100Bは、共通のオブジェクトコード13から命令をフェッチし、CPUコア100Aはモータ22A(図2のデバイスA)を制御し、CPUコア100Bはモータ22B(図2のデバイスB)を制御する。
なお、メモリ200は例えばDRAM(Dynamic RAM)、SRAM(Static RAM)、FeRAM(Ferroelectric RAM)、など高速な記憶素子である。また、IO部21A、21BはCPUコア100A、100Bの演算結果に基づきモータ22A、22Bを駆動する駆動回路である。
図1で説明したように、オブジェクトコード13はモータA用ロジック、モータA用データ、モータB用ロジック、モータB用データを有するが、オブジェクトコード13を共用する場合、選択的に、CPUコア100AにはモータA用ロジック及びモータA用データへのアクセスを可能とし、CPUコア100BにはモータB用ロジック及びモータB用データへのアクセスを可能とする必要がある。
そこで、本実施形態では、メモリ200を、共用エリア、CPUコア100A用エリア、CPUコア100B用エリア、に区分し、共用エリアには共通のロジック及びデータを、CPUコア100A用エリアにはCPUコア100A用ロジック及びCPUコア100A用データを、CPUコア100B用エリアにはCPUコア100B用ロジック及びCPUコア100Bデータを、それぞれ格納する。
実行時、CPUコア100AのPC(プログラムカウンタ)には共用エリア又はCPUコア100A用エリアのアドレスを格納し、CPUコア100BのPCに共用エリア又はCPUコア100B用エリアのアドレスを格納する。なお、本実施形態の「データアドレス」はデータ部のアドレスを格納するが、ここには共用エリア(共通データ)のアドレスが格納され、そのアドレスはアドレス分配器20でCPUコア100A用エリアのアドレス又はCPUコア100B用エリアのアドレスに変換される。
図3では、メモリ200のアドレス0x00000〜0x0FFFFまでが共用エリア、アドレス0x10000〜0x1FFFFまでがCPUコア100A用エリア、アドレス0x20000〜0x2FFFFまでがCPUコア100B用エリアである。なお、これらのアドレスは固定値である必要はなく、オブジェクトコード13をメモリ200に配置するときに動的に決定してもよい。いずれにしても、アドレス分配器20にとって、共用エリア、CPUコア100A用エリア、CPUコア100B用エリアのアドレスは既知であって、メモリ領域テーブル30に登録されている。
そして、CPUコア100A又は100Bが、メモリ200にアクセスする際は必ずアドレス分配器20を介してメモリ200にアクセスする。アドレス分配器20は、その命令がCPUコア100A又は100Bに専用のデータを使用する命令である場合は、CPUコア100A又は100Bのいずれがその命令を実行しているかによりデータのアドレスを変換する。また、その命令が専用のロジックを実行するための分岐命令である場合、分岐先のアドレスとCPUコア100A又は100Bのいずれがその命令を実行しているかにより分岐を許可し、また、禁止する。
図3のように区分されたメモリ200に、共通ロジック及び共通データ、モータA用ロジック及びモータA用データ、モータB用ロジック及びモータB用データ、をそれぞれ格納するには、オブジェクトコード13のどのロジック又はデータが、共通ロジック及び共通データ、モータA用ロジック及びモータA用データ、モータB用ロジック及びモータB用データ、に相当するかわかっていなければならない。
そこで、本実施形態のマルチコアシステム50では、ソースコードにCPUコア100A又は100Bで別々(それぞれで専用)のロジック又はデータであることをその処理部分に宣言しておく(以下、データについてCPUコア100A又は100Bで別々であることを明記した宣言を専用データ宣言、ロジックについてCPUコア100A又は100Bで別々であることを明記した宣言を専用ロジック宣言、という。)。そして、コンパイラ14が専用データ宣言、専用ロジック宣言に応じて、データやロジックがCPUコア100A用エリア又はCPUコア100B用エリアに配置されるように、ソースコードからオブジェクトコード13を生成する。
専用データ宣言と専用ロジック宣言について分けて説明する。
<専用データ宣言>
ソースコードに専用データ宣言がある場合、コンパイラ14は当該宣言が指定するデータ(変数、定数、マップ等)については、アドレス変換を要することを表すオペコード(以下、専用データオペコードという)を生成すると共に、専用データオペコードのオペランド (以下、変換前アドレスという)に、CPUコア100AがアクセスするアドレスAとCPUコア100BがアクセスするアドレスBを対応づける(以下、アドレスA又はアドレスBを変換後アドレスという)。
変換後アドレスは、必ず、CPUコア100A用エリア及びCPUコア100B用エリアにあるため、変換前アドレスの上位だけを変える(例えば、0x10000、0x20000)ように変換後アドレスを決定すれば、簡単な演算で変換前アドレスから2つの変換後アドレスにそれぞれ変換できる。例えば、2つの変換後アドレスを0x10502、0x20502とすれば、変換前アドレスは0x00502とすればよい。
アドレス分配器20は、専用データオペコードを検出すると、CPUコア100A又はCPUコア100Bのいずれのアクセスかに応じて、変換前アドレスを変換後アドレスに変換する。
図4は、専用データ宣言とオブジェクトコード13の対応を説明する図である。図4(a)はソースコード(C言語)を、図4(b)はオブジェクトコード(アセンブラ)13のうちロジック部の一例を、図4(c)はオブジェクトコード(アセンブラ)13のうちデータ部を示す。
例えば、ソースコードでは「DBL 変数名」を専用データ宣言と定める。図4(a)では、DBLの変数名にdata_bとmap1[12]が指定されているので、data_bとmap1[12]は、CPUコア100AとCPUコア100Bで別々であることになる。一方、専用データ宣言のないdata_Aは、CPUコア100AとCPUコア100Bに共通の変数である。
コンパイラ14は、専用データ宣言を検出すると、共用エリアのアドレスに対応づけて専用データオペコードを生成する。図4(b)では、アドレス0x00104に「load_DBL」の専用データオペコードが生成されている。また、専用データオペコードには変換前アドレス「0x00502」が与えられる。変換前アドレスは、data_bの2つの変換後アドレスからそれぞれ所定数(例えば、0x10000、0x20000)を減じた値である。
したがって、図4(c)に示すように、CPUコア100Aが実行した場合の変換後アドレスは、変換前アドレス「0x00502」に「0x10000」を足した「0x10502」になり、CPUコア100Bが実行した場合の変換後アドレスは変換前アドレス「0x00502」に「0x20000」を足した「0x20502」になる。
同様に、図4(b)のアドレス0x0010Aにはmap1に対応した「load_DBL」の専用データオペコードが生成され、変換前アドレスとして「0x00504」が与えられている。したがって、図4(c)に示すように、CPUコア100Aが実行した場合の変換後アドレスは「0x10504」になり、CPUコア100Bが実行した場合の変換後アドレスは「0x20504」になる。
一方、専用データ宣言に指定されていないdata_Aに対応したオペランドは専用データオペコードでない「load」であり、分岐前オペランドは共用エリアのアドレス「0x00500」を指定するだけとなる。
図4(b)及び(c)のオブジェクトコード13を実行する際、アドレス分配器20は専用データオペコード「load_DBL」を検出すると、その実行要求がCPUコア100Aからであれば変換前アドレスに「0x10000」を加えてアドレスを変換しCPUコア100A用エリアからデータを読み出し、その実行要求がCPUコア100Bからであれば変換前アドレスに「0x20000」を加えてアドレスを変換しCPUコア100B用エリアからデータを読み出す。なお、CPUコア100AとCPUコア100Bのどちらか実行要求があるかはアドレス分配器20への信号線にHi(1)又はLow(0)のいずれが入力されるかで判定される。
また、アドレス分配器20は専用データオペコード「load_DBL」を検出しない限り、アドレスを変換せず、共用エリアから共通のデータを読み出す。
以上のように、CPUコア100Aと100Bで別々のデータを使用する処理に関してはそれぞれのデータを専用エリアに格納し、それ以外のデータは共用エリアに格納するのでメモリ200の容量を低減することができる。
<専用ロジック宣言>
続いて、専用ロジック宣言について説明する。ソースコードに専用ロジック宣言がある場合、コンパイラ14は当該宣言が指定する処理を、CPUコア100A又は100Bのいずれを指定した専用ロジック宣言かに応じて、CPUコア100A用エリア又はCPUコア100B用エリアのいずれかのアドレスを付与してオペランドを生成する。専用ロジック宣言の場合、オペランドのアドレス(分岐先のアドレス)によりCPUコア100A又は100Bどちらの専用のロジックわかるので、変換前アドレスに相当するオペランドはない。
オブジェクトコード13の実行時は、アドレス順に命令を実行すればよく、例えば、共通のロジックからCPUコア100A又はCPUコア100Bの専用のロジックに移行する場合は、オブジェクトコード13に分岐命令が生成される。分岐先はCPUコア100A用エリア又はCPUコア100B用エリアとなる。
しかしながら、オブジェクトコード13はCPUコア100Aと100Bに共通なので、CPUコア100Aがオブジェクトコード13を実行中もCPUコア100B用エリアに分岐する分岐命令、又は、CPUコア100Bがオブジェクトコード13を実行中もCPUコア100A用エリアに分岐する分岐命令、が読み出されることになる。
CPUコア100AがCPUコア100Bのロジックを実行することは好ましくなく、CPUコア100BがCPUコア100Aのロジックを実行することは好ましくない。そこで、本実施形態のマルチコアシステム50では、CPUコア100Aが実行中の命令であって共用エリア又はCPUコア100A用エリアに分岐する命令はそのまま実行し、CPUコア100Bが実行中の命令であって共用エリア又はCPUコア100B用エリアに分岐する命令はそのまま実行する。
これに対し、CPUコア100Aが実行中の命令であってCPUコア100B用エリアに分岐する命令は無視し、CPUコア100Bが実行中の命令であってCPUコア100A用エリアに分岐する命令は無視する。本実施形態のマルチコアシステム50は、全ての命令をアドレス分配器20を介して実行するので、ここでいう無視とはアドレス分配器20から何らアドレスを出力しないかダミーのアドレスを出力して、次の命令の実行をすることをいう。
CPUコア100A用エリアのアドレスとCPUコア100B用エリアのアドレスは、アドレス分配器20のメモリ領域テーブル30に予め登録されているので、アドレス分配器20は分岐先のアドレスに基づき分岐を許可するか禁止するかを判定できる。
図5は、専用ロジック宣言とオブジェクトコード13の対応を説明する図である。図5(a)はソースコード(C言語)を、図5(b)はオブジェクトコード(アセンブラ)13のうちロジック部を示す。
例えば、ソースコードでは「#pragma CPUxs」及び「#pragma CPUxe」を専用ロジック宣言と定める。なお、CPUxsとCPUxeの「x」にCPUコア100A又は100Bのいずれかを指定し、「s」はスタートを「e」がエンドを意味する。したがって、「#pragma CPUAs」及び「#pragma CPUAe」と記述すれば、この範囲のソースコードはCPUコア100A専用のロジックとなる。図5(a)では、「a = a * d 」が CPUコア100A専用のロジックである。
コンパイラ14は、専用ロジック宣言を検出すると、それがCPUコア100Aを指定する専用ロジック宣言の場合は、CPUコア100A用エリアのアドレスをオペランドにしてオペコードを生成する。
CPUコア100A用エリアは「0x10000」以降なので、図5(b)では、アドレス0x10100以降に「a = a * d 」に対応するオペコードが生成されている。また、共用エリアからCPUコア100A用エリアに分岐するため、専用ロジック宣言の直前の共用エリアのロジックに続くアドレス「0x00106」に、分岐命令「jmp 0x10100」が記述されている。
なお、CPUコア100A用エリアの分岐後の最後のアドレスに、共用エリアに戻るための分岐命令「jmp 0x00108」が記述される。
CPUコア100Aが図5(b)のオブジェクトコード13を実行する際、アドレス分配器20が「0x00106」の分岐命令を検出すると、分岐先がCPUコア100A用エリアなので、そのまま「0x10100」に分岐し処理が実行される。これに対し、CPUコア100Bが図5(b)のオブジェクトコード13を実行する際、アドレス分配器20が「0x00106」の分岐命令を検出すると、分岐先がCPUコア100A用エリアなので、分岐命令は無視され、次のアドレス「0x00108」の共用エリアの処理が実行される。
以上のように、CPUコア100Aと100Bで別々のロジックを実行する場合はそれぞれの専用エリアのロジックを実行し、それ以外は共用エリアのロジックを実行するのでメモリ200の容量を低減することができる。
なお、本実施形態ではC言語を例にしたが、いわゆるコンパイラ型のプログラム言語であれば本実施形態のオブジェクトコード13を生成でき、また、Java(登録商標)のような中間コードを生成するコンパイル型言語であっても好適に適用できる。
<処理手順>
以上のようにして生成されたオブジェクトコード13をマルチコアシステム50が実行する手順を図6のフローチャート図に基づき説明する。図6のフローチャート図は例えばモータ22A、22Bの電源がオンになるとスタートする。この手順はCPUコア100A及びCPUコア100Bに共通であるが、ここではCPUコア100Aがオブジェクトコード13を実行するものとして説明する。
まず、CPUコア100Aは命令を命令レジスタに格納(フェッチ)する(S10)。なお、この時、PCの値がインクリメントされる。起動直後に格納する命令は共用のロジックである。
CPUコア100Aはデコーダで命令を解読し、その命令がjmp命令又はメモリアクセス命令(Read or Write)以外か否かを判定する(S20)。jmp命令又はメモリアクセス以外の場合(S20のYes)、本実施形態のマルチコアシステム50ではアドレス分配器20が特定の処理をしないので(S70)、当該命令を実行して(S80)ステップS10に戻る。
CPUコア100Aは、フェッチした命令がjmp命令又はメモリアクセス命令と一致する場合、割り込みを発生させる。
まず、jmp命令又はメモリアクセス命令以外でない場合(S20のNo)、そのどちらかを調べるため、CPUコア100Aはその命令がjmp命令か否かを判定する(S30)。
jmp命令の場合(S30のYes)、CPUコア100Aはアドレス分配器20に命令を送出し、アドレス分配器20はjmp命令の分岐先が他のCPUコアのエリアか否かを判定する(S40)。他のCPUコアのエリアはここではCPUコア100B用エリアである。
CPUコア100B用エリアへの分岐命令である場合(S40のYes)、アドレス分配器20はそのjmp命令の実行を禁止する。(S50)。jmp命令はどのように禁止してもよいが、例えば、PCにjmp命令の指定する分岐先のアドレスでなく次の命令のアドレスを格納する。これにより、CPUコア100AはステップS10に戻り次の命令を命令レジスタに格納できる。
ステップS40の判定にて、CPUコア100B用エリアへの分岐命令でない場合(S40のNo)、アドレス分配器20はなにもせず(S70)、jmp命令を実行する(S60)。すなわち、jmp命令の分岐先のアドレスをPCに格納する。このアドレスは共用エリア又はCPUコア100A用エリアであるので、CPUコア100Aは分岐先の処理を実行できる。特に、CPUコア100A用エリアに分岐する場合は、CPUコア100Aに専用のロジックを実行できる。
ステップS30に戻り、jmp命令でない場合(S30のNo)、メモリアクセス命令であることになるので、CPUコア100Aは命令をアドレス分配器20に送出し、アドレス分配器20はその命令が専用データオペコードか否かを判定する(S80)。
専用データオペコードでない場合(S80のNo)、アドレス分配器20はオペランドのアドレスを変換することなく(S70)、メモリアクセス命令を実行する(S60)。
専用データオペコードの場合(S80のYes)、アドレス分配器20はオペランドのアドレス(変換前アドレス)を変換する(S90)。上述のとおり、変換前アドレスと変換後アドレスには所定の関係があるので、所定のビットを1(CPUコア100Aの場合)又は2(CPUコア100Bの場合)にすればよい。そして、CPUコア100Aは命令を実行する(S60)。ここでの命令の実行は、変換後アドレスのデータを読み出すことになる。マルチコアシステム50は以上の処理を繰り返す。
本実施形態のマルチコアシステム50は、CPUコア100Aと100Bに共通のロジック及びデータを共用できるので、メモリ200の容量を低減できる。リエントラントな設計が困難なロジックも実装しやすいので、リエントラントな設計が困難なロジックも共用してメモリ200の容量を低減できる。
<車載装置への適用>
上述したように、本実施形態のマルチコアシステム50は同様なロジックで制御できるが一部に異なるロジックやデータを用いる複数のデバイスの制御に好適となる。例えば、車両には対称に搭載される車載装置(例えば、車輪、ブレーキ、ドアミラー、ドア、ドアウィンド、パワーシート等)が数多く搭載されているので、このような車載装置を制御する上でメモリ200の容量低減による低コスト化や小型化が可能になる。
図7は、マルチコアシステム50が搭載されたECU(electronic control unit:電子制御ユニット)により車載装置を制御する制御システム300の一例を示す。図7では、ハイブリッドシステムにおけるモータECU40にマルチコアシステム50を搭載した。
モータ22A、22B(モータジェネレータを含む)は、モータECU40によりインバータのスイッチング素子をオンオフ制御することにより駆動制御されている。モータECU40には、スイッチング素子を駆動制御するために必要な信号、例えばモータ22A、22Bの回転子の回転位置やモータ22A、22Bに印加される相電流の値などが入力されている。
モータECU40は、ハイブリッドECU60と通信しており、ハイブリッドECU60からの制御信号によってモータ22A、22Bを駆動制御すると共に、必要に応じてモータ22A、22Bの回転数などの運転状態に関するデータをハイブリッドECU60に出力する。
ハイブリッドECU60には、シフトポジション、アクセル開度,ブレーキペダル操作量、車速、バッテリ残量等が入力されている。ハイブリッドECU60は、これらの入力値に基づいて要求トルクを計算すると共に、この要求トルクに対応するトルクが出力されるようにエンジンの目標回転数やモータ22A、22Bの目標トルクを設定し、エンジンECU70及びモータECU40に送信する。
目標回転数を受信したエンジンECU70は、エンジンが目標回転数で回転するようスロットル開度制御や燃料噴射制御,点火制御などを行なう。また、目標トルクを受信したモータECU40は、モータ22A、22Bに相当するトルクが出力されるようインバータのスイッチング素子をスイッチング制御する。
本実施形態のマルチコアシステム50は、インバータのスイッチング素子をオンオフするタイミングやデューティ比等を演算しモータ22A、22Bを制御する。モータ22A、22Bは前輪又は後輪の左右輪を駆動するものなので、マルチコアシステム50はこのように制御アルゴリズムが共通で処理や特性が一部のみ異なる複数のデバイスを制御するプログラムを実行する上でメモリ容量を削減できる。
共通したロジック部とデータ部を2つのCPUコアが共用して実行するマルチコアシステムの概念図である。 マルチコアシステムの構成図の一例である。 マルチコアボードのブロック図の一例である。 専用データ宣言とオブジェクトコードの対応を説明する図である。 専用ロジック宣言とオブジェクトコードの対応を説明する図である。 オブジェクトコードをマルチコアシステムが実行する手順を示すフローチャート図である。 マルチコアシステムが搭載されたECUにより車載装置を制御する制御システムの一例である。
符号の説明
11 マルチコアボード
12 記憶装置
13 オブジェクトコード
14 コンパイラ
20 アドレス分配器
21A、21B IO部
22A、22B モータ
30 メモリ領域テーブル
40 モータECU
50 マルチコアシステム
60 ハイブリッドECU
70 エンジンECU
100A、100B CPUコア
200 メモリ
300 制御システム

Claims (7)

  1. 複数の中央処理装置を搭載したマルチコアシステムにおいて、
    複数の中央処理装置が共用するオブジェクトコードを記憶する共用部と、中央処理装置毎に異なるオブジェクトコードを記憶する複数の専用部と、を有するメモリと、
    読み出した命令に中央処理装置毎に異なるデータを使用する専用データ命令が検出された場合、当該命令を実行する中央処理装置に応じて前記データのアドレスを、当該中央処理装置の前記専用部のアドレスに変換するアドレス分配器と、を有し、
    前記アドレス分配器は、
    中央処理装置が読み出した命令が分岐命令であってその分岐先が、当該中央処理装置の前記専用部又は前記共用部である場合は分岐を許可し、
    前記分岐先が当該中央処理装置の前記専用部でなく、かつ、前記共用部でもない場合、分岐を禁止して次の命令を中央処理装置に読み出させる、
    ことを特徴とするマルチコアシステム。
  2. 前記オブジェクトコードは、前記専用データ命令が指定するアドレスに第1変換値を加えたアドレスに、第1の中央処理装置が使用する第1データを記憶し、
    前記専用データ命令が指定するアドレスに第2変換値を加えたアドレスに、第2の中央処理装置が使用する第2データを記憶する、
    ことを特徴とする請求項1記載のマルチコアシステム。
  3. 前記専用データ命令はソースコードの所定の宣言に基づきコンパイラが生成する、
    ことを特徴とする請求項1記載のマルチコアシステム。
  4. 請求項1〜3いずれか記載のマルチコアシステムを搭載した電子制御ユニット。
  5. 請求項1〜3いずれか記載のマルチコアシステムを搭載し、複数のモータを制御することを特徴とするモータECU。
  6. 請求項1〜3いずれか記載のマルチコアシステムを搭載した電子制御ユニットと、
    前記電子制御ユニットにより回転駆動される複数のモータと、
    を有することを特徴とする制御システム。
  7. 複数の中央処理装置を搭載したマルチコアシステムの命令実行方法において、
    複数の中央処理装置が共用するオブジェクトコードを記憶する共用部と、中央処理装置毎に異なるオブジェクトコードを記憶する複数の専用部と、を有するメモリ、から命令を読み出すステップと、
    読み出した命令に中央処理装置毎に異なるデータを使用する専用データ命令が検出されるか否かを判定するステップと、
    アドレス分配器が、前記専用データ命令が検出された場合、当該命令を実行する中央処理装置に応じて前記データのアドレスを、当該中央処理装置の前記専用部のアドレスに変換するステップと、
    前記アドレス分配器が、中央処理装置が読み出した命令が分岐命令であってその分岐先が、当該中央処理装置の前記専用部又は前記共用部である場合は分岐を許可し、
    前記分岐先が当該中央処理装置の前記専用部でなく、かつ、前記共用部でもない場合、分岐を禁止して次の命令を中央処理装置に読み出させるステップと、
    を有することを特徴とするマルチコアシステムの命令実行方法。
JP2007219876A 2007-08-27 2007-08-27 マルチコアシステム、電子制御ユニット、モータecu、制御システム、命令実行方法 Expired - Fee Related JP5045307B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007219876A JP5045307B2 (ja) 2007-08-27 2007-08-27 マルチコアシステム、電子制御ユニット、モータecu、制御システム、命令実行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007219876A JP5045307B2 (ja) 2007-08-27 2007-08-27 マルチコアシステム、電子制御ユニット、モータecu、制御システム、命令実行方法

Publications (2)

Publication Number Publication Date
JP2009053918A JP2009053918A (ja) 2009-03-12
JP5045307B2 true JP5045307B2 (ja) 2012-10-10

Family

ID=40504951

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007219876A Expired - Fee Related JP5045307B2 (ja) 2007-08-27 2007-08-27 マルチコアシステム、電子制御ユニット、モータecu、制御システム、命令実行方法

Country Status (1)

Country Link
JP (1) JP5045307B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101749743B1 (ko) 2016-08-29 2017-06-22 주식회사 노아닉스 의료보조기구 친수성 코팅용 딥 코터

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0911099D0 (en) * 2009-06-26 2009-08-12 Codeplay Software Ltd Processing method
JP2011180840A (ja) * 2010-03-01 2011-09-15 Toshiba Corp プロセッサ、マルチプロセッサシステム、及びメモリアクセス不正検出方法
JP2015109071A (ja) * 2013-10-25 2015-06-11 トヨタ自動車株式会社 制御装置
KR101603547B1 (ko) 2014-11-06 2016-03-15 현대자동차주식회사 차량제어기 캘리브레이션 메모리 제어 방법 및 장치

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5334442A (en) * 1976-09-10 1978-03-31 Oki Electric Ind Co Ltd Multi-processor system
US4564903A (en) * 1983-10-05 1986-01-14 International Business Machines Corporation Partitioned multiprocessor programming system
JPH0410159A (ja) * 1990-04-27 1992-01-14 Omron Corp マルチcpuシステム
JP4894228B2 (ja) * 2005-11-02 2012-03-14 トヨタ自動車株式会社 車両用電子制御装置の電源管理システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101749743B1 (ko) 2016-08-29 2017-06-22 주식회사 노아닉스 의료보조기구 친수성 코팅용 딥 코터

Also Published As

Publication number Publication date
JP2009053918A (ja) 2009-03-12

Similar Documents

Publication Publication Date Title
US5991858A (en) Multi-user data processing system with storage protection
JP3330378B2 (ja) リアルタイムプログラム言語アクセラレータ
JP5045307B2 (ja) マルチコアシステム、電子制御ユニット、モータecu、制御システム、命令実行方法
US9626303B2 (en) Data processing apparatus and address space protection method
US8234476B2 (en) Information processing apparatus and method of updating stack pointer
US7725677B1 (en) Method and apparatus for improving segmented memory addressing
JPH11161547A (ja) データ処理装置用記憶装置、および記憶場所にアクセスする方法
US9235456B2 (en) Configuration technique for an electronic control unit with intercommunicating applications
JP4520466B2 (ja) 駆動シーケンスを制御するための関数を適合させる方法および装置
GB2302604A (en) Data memory allocation
JPH07311740A (ja) コンピュータ
KR19990037571A (ko) 단일 주기 내에 간접 어드레싱 모드 어드레스를 출력하는 데이터 포인터 및 그 제공방법
US8122192B2 (en) Data processing apparatus and data processing method
JP2020159344A (ja) 制御装置および制御方法
US20080077912A1 (en) Software development methods, systems, and storage media storing software developed thereby
JPH0695875A (ja) マイクロコンピュータのメモリアクセス方法
US20070038817A1 (en) Memory access control in a multiprocessor system
JP5245848B2 (ja) 制御装置
US20020026561A1 (en) Cache management system
US20240184579A1 (en) Multi-core system for providing a communication function between software components and a method therefor
JPH0246970B2 (ja) Memorikakuchohoshiki
JP2000029508A (ja) プログラマブルコントローラ
JP2023009818A (ja) 車両用電子制御装置及び車両用電子制御装置による制御方法
JPH07210463A (ja) キャッシュメモリシステム及びデータプロセッサ
KR19990037395A (ko) 두개의 워드 명령을 단일 주기 동안 실행하는 시스템 및 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100119

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111003

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111018

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111213

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120619

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120702

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150727

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees