JP2008293368A - マルチプロセッサシステム、排他制御方法、車両用電子制御ユニット - Google Patents

マルチプロセッサシステム、排他制御方法、車両用電子制御ユニット Download PDF

Info

Publication number
JP2008293368A
JP2008293368A JP2007139555A JP2007139555A JP2008293368A JP 2008293368 A JP2008293368 A JP 2008293368A JP 2007139555 A JP2007139555 A JP 2007139555A JP 2007139555 A JP2007139555 A JP 2007139555A JP 2008293368 A JP2008293368 A JP 2008293368A
Authority
JP
Japan
Prior art keywords
data
register
cpu core
rmw
stored
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.)
Granted
Application number
JP2007139555A
Other languages
English (en)
Other versions
JP4941103B2 (ja
Inventor
Riyuuro Okamura
竜路 岡村
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 JP2007139555A priority Critical patent/JP4941103B2/ja
Publication of JP2008293368A publication Critical patent/JP2008293368A/ja
Application granted granted Critical
Publication of JP4941103B2 publication Critical patent/JP4941103B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】RMW処理のオーバーヘッドを低減し、プログラムの工数増大を抑制して同時性確保の処理を実現するマルチプロセッサシステム等を提供すること。
【解決手段】CPUコア11aがアクセスするデータの第1データIDを格納する第1データIDレジスタ12aと、CPUコア11bがアクセスするデータの第2データIDを格納する第2データIDレジスタ12bと、予め関連する複数のデータに、少なくとも一部が一致するデータIDを対応づけたデータテーブル22を記憶する、複数のCPUコアが共有するデータテーブル記憶手段10と、第1データIDレジスタ12aに格納された第1データIDと第2データIDレジスタ12bに格納された第2データIDを比較するデータID比較手段16と、データID比較手段による比較結果が一致を示す場合、CPUコア11aとCPUコア11bのいずれか一方はデータテーブル22へのアクセスを保留することを特徴とする。
【選択図】図1

Description

本発明は、マルチプロセッサシステム等に関し、特に、複数のCPUが共有メモリにアクセスする場合に排他制御するマルチプロセッサシステム、排他制御方法及び車両用電子制御ユニットに関する。
CPUコアなどの演算部を複数備えたマルチチプロセッサシステム(以下、MPSという)では、RAMなどの共有メモリに各演算部がアクセスする場合があるため、共有メモリへの排他処理が必要となる。
排他処理としてRMW(リード・モディファイ・ライト)命令が知られている。図7(a)はRMW命令による処理の概念図を示す。図7(a)のRMW命令では、a)所定アドレスのデータ204を読み出す、b)該データ204を加工する、c)加工後のデータ204を元のアドレスに書き込む、の一連の処理が実行される。
図7(a)では読み込んだデータ204の所定ビット(例えばフラグ)を書き換えてRAM200の元のアドレスに書き込んでいる。CPUコア100aがb)の処理を実行している間に、CPUコア100bが同じデータ204を書き換えても、その後CPUコア100aがc)の処理によりデータ204を上書きしてしまうので、CPUコア100bが書き込んだはずのデータ204が消失してしまう。このため、RMW命令は割り込み禁止機能を備え、a)〜c)の一連の処理の間、CPUコア100bのRAM200へのアクセルを禁止する。
しかしながら、RMW命令がソースコードに記述されていればコンパイラが自動的に認識し上述の排他処理が実行できるが、RMW命令を用いない広義の(いくつかのステップを経る)RMW処理はコンパイラが認識できない。このため、プログラマがRMW処理の開始から終了まで排他処理を記述する必要がある。
例えばエンジン等の制御ソフトにおいて、エンジンの状態を表すデータを入力値として演算する場合、最初の処理で入力値のデータを取得し、途中の処理でRMW処理に付随する他のデータを演算して、最後の処理で入力値のデータを更新するといった、RMW命令を用いないRMW処理が多いが、このような広義のRMW処理の全てに排他処理を記述する必要がある。
また、RMW処理の間、排他処理のためCPUコア100aがRAM200を1リソースとしてアクセスを禁止すると、その間CPUコア100bはRAM200にアクセスできないためオーバーヘッドが大きくなってしまうという問題がある。
この点について、自CPUが処理対象としたアドレスに対してのみ他CPUのアクセスを禁止する技術が提案されている(例えば、特許文献1参照。)。特許文献1には、自CPUがRMW処理を実行する場合、そのメモリアドレスを保持しておき、システムバスに出力されているアドレスとメモリアドレスが一致するか否かを検出するMPSが記載されており、一致を検出した場合は、他CPUにアクセス中断信号を送出することで、処理対象としたアドレスに対してのみ他CPUのアクセスを禁止している。
特開平7−93259号公報
しかしながら、特許文献1記載の技術では、メモリアドレスの一致に基づきアクセスを禁止するため、読み取りと書き込みのいずれのアクセスの場合も他CPUは共有メモリにアクセスできず、なお、オーバーヘッドが大きいという問題がある。また、自CPUがRMW処理を実行中、別のメモリアドレスにアクセスした場合には、他CPUがRMW処理の対象変数(上記の入力値のデータ)にアクセス可能となるため、入力値のデータを書き換えてしまうおそれがある。
ところで、MPSの排他処理として、RMW(リード・モディファイ・ライト)処理の他に、同時性を確保するための処理が挙げられる。
図7(b)は、2つのCPUコア100a、100bがRAM200を共有する従来のMPSの概念図を示す。同時性の確保は、例えば関連する複数のデータが他の処理に優先して同時に(一連の処理で)更新されることが要求されることをいう。例えばエンジンを制御する制御ソフトではエンジンの状態を複数のデータで表すが、元となるエンジンの状態が変われば複数のデータも同時に更新されなければならない。例えば、データ201〜203が関連するデータであってCPUコア100aがデータ201〜203を更新する場合、CPUコア100bがエンジンの別の制御に関連してデータ203にアクセスする可能性があるため、同時性を確保するためにはプログラム上でデータ201〜203の更新の間はRAM200へのアクセスを禁止する命令を記述する必要がある。しかしながら、制御ソフトには同時性の確保が必要な複数のデータが多く存在するため、RAM200にアクセスする処理全てに禁止命令を記述すると工数が増大してしまうし、プログラマ等の負担が増大するという問題がある。
本発明は、上記課題に鑑み、マルチプロセッサシステムの排他処理において、RMW処理のオーバーヘッドを低減し、プログラムの工数増大を抑制して同時性確保の処理を実現するマルチプロセッサシステム、排他制御方法及び車両用電子制御ユニットを提供することを目的とする。
上記課題を解決するため、本発明は、複数のCPUコアが並行してプログラムを実行するマルチプロセッサシステムにおいて、第1CPUコア(例えば、CPUコア11a)がアクセスするデータの第1データIDを格納する第1データIDレジスタ(例えば、使用IDレジスタ11a)と、第2CPUコア(例えば、CPUコア11b)がアクセスするデータの第2データIDを格納する第2データIDレジスタ(例えば、使用IDレジスタ11b)と、予め関連する複数のデータに、少なくとも一部が一致するデータIDを対応づけたデータテーブルを記憶する、複数のCPUコアが共有するデータテーブル記憶手段(例えば、RAM10)と、第1データIDレジスタに格納された第1データIDと第2データIDレジスタに格納された第2データIDを比較するデータID比較手段(例えば、比較回路16)と、データID比較手段による比較結果が一致を示す場合、第1CPUコアと第2CPUコアのいずれか一方はデータテーブルへのアクセスを保留する、ことを特徴とする。
マルチプロセッサシステムの排他処理において、RMW処理のオーバーヘッドを低減し、プログラムの工数増大を抑制して同時性確保の処理を実現するマルチプロセッサシステム、排他制御方法及び車両用電子制御ユニットを提供することができる。
以下、本発明を実施するための最良の形態について図面を参照しながら説明する。
図1は、本実施形態のマルチプロセッサシステム(以下、MPSという)100の概略構成図を示す。本実施形態のMPS100は、関連する複数のデータを関連づけるようプログラム21に記述し、コンパイラによって関連する複数のデータに少なくとも一部が一致するデータIDが付与されるようにコンパイルする。CPUコア11a、11bがデータにアクセスする時には該データのデータIDを使用IDレジスタ12a、12bに格納しておき、いずれかのCPUコア11a、11bがデータにアクセスする場合、使用IDレジスタ12aのデータIDと使用IDレジスタ12bのデータIDを比較して一致する場合には、CPUコア11a又は11bはアクセスを保留する。CPUコア11a、11bのいずれか一方が同じデータIDのデータを処理している間は、他方が同じデータIDのデータにアクセスできないので、関連する複数のデータの同時性を確保することができる。
また、RMW処理の処理対象のデータIDを格納する使用RMWIDレジスタ13a、13bを備え、いずれかのCPUコア11a(11b)がデータに書き込みのアクセスをする場合、使用IDレジスタ12a(12b)のデータIDと使用RMWIDレジスタ13b(13a)のデータIDを比較し、一致する場合には書き込みを保留することで、RMW処理中の排他処理を実現する。
MPS100は、例えばエンジンECU(電子制御ユニット)、ブレーキECUなど制御系のECU、又は、ボディECU、エアコンECUなどボディ系のECUに組み込まれているコンピュータの一形態である。MPS100はCAN(Controller Area Network)やLIN(Local Interconnect Network)等の車内LANを介して他のECUと接続されており、車載装置の協調制御を実現している。
MPS100は、ROM15、CPUコア11a、11b(区別しない場合、単にCPUコア11という)、RAM10、使用IDレジスタ12a、12b(区別しない場合、単に使用IDレジスタ12という)及び使用RMWIDレジスタ13a、13b(区別しない場合、単に使用RMWIDレジスタ13という)が内部バスに接続して構成されている。なお、車内LANに接続する入出力インターフェースや他のECUとの通信装置を備えていてもよい。CPUコア11a、11bは同一のCPUコアでもよいし、異なる構成のCPUコアであってもよい。
ROM15にはコンパイルにより実行形式に変換されたプログラム(オブジェクトコード)21、制御マップ、設定情報などのファイルが格納されている。プログラム21をCPUコア11a、11bが実行することで、例えばエンジンのスロットル開度、燃料噴射量等が制御される。
CPUコア11a、11bはプログラム21の各スレッドを、予め定められた手順又はイベントの発生を受けて実行する。処理分配回路14は、例えばコンパイル時に対応づけられたスレッドをそのCPUコア11a、11bに分配するか、CPUコア11a、11bの負荷を監視しながら負荷の軽い方にスレッドを分配する。
CPUコア11a、11bはプログラム21の実行時にはプログラム21の一部又は全体をRAM10に展開し、RAM10を作業領域にしてプログラム21を実行する。CPUコア11a、11bは、RAM10の命令やデータをワード単位毎に読み出すフェッチ(読み出し)、命令を解読するデコード、命令に応じた演算、演算結果のRAM10への格納(書き込み)というステップを繰り返す。
本実施形態のMPS100は、CPUコア11aに接続された使用IDレジスタ12a及び使用RMWIDレジスタ13a、CPUコア11bに接続された使用IDレジスタ12b及び使用RMWIDレジスタ13bに、データを識別するデータIDを格納する。これらレジスタは好ましくは専用レジスタであり、後述する手順でデータIDを格納する。
また、MPS100は、使用IDレジスタ12aと使用IDレジスタ12bにそれぞれ格納されたデータIDを比較する比較手段16、使用IDレジスタ12aと使用RMWIDレジスタ13bにそれぞれ格納されたデータIDを比較する比較手段17、使用IDレジスタ12bと使用RMWIDレジスタ13aにそれぞれ格納されたデータIDを比較する比較手段18、使用IDレジスタ12aと使用RMWIDレジスタ13aにそれぞれ格納されたデータIDを比較する比較手段19、使用IDレジスタ12bと使用RMWIDレジスタ13bにそれぞれ格納されたデータIDを比較する比較手段20、を備え、CPUコア11a、11bがそれらの比較結果を検出できるようになっている。
〔データID〕
まず、データIDについて説明する。図2は、RAM10に記憶されたデータテーブル22の一例を示す。データテーブル22は、プログラム21に含まれておりプログラム21をRAM10に展開する際に同時に展開される。なお、データそのものでなくデータのアドレスを記憶していてもよい。
データテーブル22には、構造体st_A、st_B、配列array、変数data_X、data_YにデータIDが対応づけられている。構造体st_A、st_Bはそれぞれ変数a、bを関連付けて扱うための変数の一形態であり、例えばC言語では次のように記述される。
struct {
float a;
float b;
}st_A , st_B;
float a、float bは、C言語では構造体のメンバと呼ばれ、変数st_A.aとst_A.b、st_B.aとst_B.bをそれぞれ関連付けて扱うことを可能にする。
また、配列arrayは、配列で確保される複数の領域に格納される変数を関連付けて扱うための変数の一形態であり、C言語では次のように記述される。
float ary[2]
配列arreyの宣言により、array[0]に格納される変数とarray[1]に格納される変数を関連付けて扱うことが可能となる、
また、構造体や配列に他の変数を関連付けることができる。例えば、構造体st_A、st_B に変数data_Xを関連付ける場合、次のように記述する。
struct {
float a;
float b;
float c;
}st_A ;
float data_X;
int main() {
st_A.c = data_X;
かかる書式を予め定めておき当該書式に対し同じデータID又は一部が一致するデータIDを付与するようにコンパイルルールが設定されたコンパイラを用いてコンパイルすることで、所定の書式で記述された変数に対しては、同じデータID又は一部が一致するデータIDを付与するようにコンパイルすることができる。図2では、変数st_A.aとst_A.b、はいずれもデータIDが等しく(図では10)、st_B.aとst_B.bはいずれもデータIDが等しく(図では20)、array[0]に格納される変数とarray[1]に格納される変数はいずれもデータIDが等しい(図では22)。また、構造体st_Aに関連付けられた変数data_XのデータID「11」はst_AのデータID「10」と一部が一致している。
比較回路16、17、18、19、20は、例えば、ビット毎に一致するか否かを比較するEXNOR回路を有し、全ビットが一致する場合、及び、所定数以上のビットが一致する場合に一致するとの比較結果を出力する。これにより、完全にはデータIDが一致しない複数のデータを一致するとして扱うことができる。
関連する複数のデータとは、例えばMPS100がエンジンを制御する場合、エンジンの状態を表す複数のデータである。ソースコードに複数のデータを関連付けておくことで、コンパイルにより自動的に一致したデータIDを付与することができる。また、データIDはコンパイラが付与するので、プログラム21のソースコードが修正された場合もプログラマが意識してデータIDを修正する必要がない。
〔同時性の確保〕
使用IDレジスタ12a、12bを用いた、関連した複数データの同時性の確保について説明する。図3は、同時性を確保する処理において各レジスタに格納されるデータIDの遷移図を示す。
使用IDレジスタ12aはCPUコア11aの、使用IDレジスタ12bはCPUコア11bの、アクセス要求に基づきデータIDを格納し、比較回路16はデータIDの格納の度に使用IDレジスタ12aと使用IDレジスタ12bのデータIDを比較し、CPUコア11は比較結果が一致を示す場合に、データテーブル22へのアクセスを保留する。
i)CPUコア11aが先に所定のデータIDのデータ(例えば、st_A.a)にアクセスした場合、使用IDレジスタ12aは当該データのデータID(例えば、「10」)を格納する。
ii)ついで、CPUコア11bが所定のデータIDのデータ(例えば、st_A.b)にアクセスした場合、使用IDレジスタ12bは当該データのデータID(例えば、「10」)を格納する。
この間、CPUコア11aは例えば関連するデータであるst_A.a、st_A.bの更新処理を実行している。
iii)比較回路16は、使用IDレジスタ12aと使用IDレジスタ12bのデータIDと比較した比較結果を出力するので、CPUコア11bは比較結果が一致を示す場合、RAM10へのアクセスを保留する。一致を示さない場合、CPUコア11bはRAM10へのアクセスを中断しないので、CPUコア11bは実行中のスレッドを処理できる。
iv)CPUコア11aがデータテーブル22にアクセスする度に、使用IDレジスタ12aはアクセスするデータのデータIDを格納(上書き)するので、CPUコア11aが関連しないデータにアクセスすると使用IDレジスタ12aも書き変わる。
v)比較回路16は所定のサイクル時間毎にデータIDの比較を繰り返し、CPUコア11bは比較結果が一致を示さなくなるとRAM10にアクセスする。
したがって、同時に更新することが必要な関連する複数のデータについて、CPUコア11aが更新処理等している間は、他のCPUコア11bは関連する複数のデータにアクセスできないので、関連する複数のデータの同時性を確保することができる。例えば、CPUコア11bは関連する複数のデータが更新された後に当該データにアクセスできるようになる。
関連する複数データの記述を除きプログラム21に同時性を確保するための記述も必要ないため、プログラム21の工数の増大を抑制できる。また、CPUコア11のアクセスの禁止/許可を使用IDレジスタ12が制御するので、高速に処理でき、同時性確保の処理にかかるオーバーヘッドを最小限に抑制できる。
また、関連するデータであるが構造体や配列にひとまとめにできないデータについては、構造体や配列の宣言に加え文法に従った記述を加えることで、構造体や配列に関連するデータとして扱われ同時性を確保できるので、関連するデータを柔軟に設定することができる。
〔RMW処理〕
使用IDレジスタ12a、12b、及び、使用RMWIDレジスタ13a、13bを用いたRMW処理時の排他処理について説明する。
コンパイラが認識できないRMW処理については、一連の処理がRMW処理であることをMPS100に検出させるため、プログラム21のソースコードにRMW処理であることを示す記述を加える。例えば、RMW処理の直前にRMW処理の開始を意味するRMW_start命令、直後にRMW処理の終了を意味するRMW_end命令、を記述する。
RMW_start
RMW処理(対象変数)
RMW_end
また、CPUコア11a、11bはRMW_start、RMW_end、を検出するRMW検出手段23a、23bをそれぞれ備える。CPUコア11a、11bは、RMW_startを検出すると、RMW処理の対象変数のデータIDを使用IDレジスタ12a、12b、使用RMWIDレジスタ13a、13bに格納する。なお、各RMW処理と対象変数はコンパイル時に対応づけられている。
CPUコア11bがRMW処理を実行する場合では、使用IDレジスタ12bのデータIDはRMW処理の間、RMW処理に付随する処理のため次々と上書きされるが、使用RMWIDレジスタ13のデータIDはRMW_end命令が検出されるまで削除されない。
したがって、RMW処理をしていない例えばCPUコア11aは、CPUコア11bがRMW処理をしている間、使用IDレジスタ12aと12bのデータIDが一致しない限り、データテーブル22へのアクセスできる。
しかし、CPUコア11bがRMW処理を実行している間、他方のCPUコア11aがRMW処理の対象変数に書き込みしてしまうと不整合が生じるので、CPUコア11aは書き込み命令を実行する場合のみ、比較回路17に、使用IDレジスタ12aと使用RMWIDレジスタ13bのデータIDの比較を要求し、CPUコア11aは比較結果が一致を示す場合には書き込みを保留する。この構成により、RMW処理の間、他方のCPUコア11aは書き込み命令以外ではデータテーブル22にアクセスすることができる。なお、比較回路17,18はデータへのアクセスの度に比較結果を出力してもよい。
図4の各レジスタに格納されるデータIDの遷移図を用いて、CPUコア11aがRMW処理する場合に、使用IDレジスタ12a、使用RMWIDレジスタ13aにデータIDが格納される手順を説明する。
i)RMW検出回路23aがRMW_startを検出すると、CPUコア11aは、RMW処理の対象変数(例えば、array[0])のデータID(例えば「22」)を使用IDレジスタ12a、使用RMWIDレジスタ13aのそれぞれに格納する。予めコンパイラは、例えばRMW_startの記述箇所にデータIDの格納命令を生成しておく。
ii)ついで、CPUコア11aは、RMW処理に従い処理するその他のデータのデータIDを使用IDレジスタ12aに次々と格納する。このため、RMW処理の間は使用IDレジスタ12aに格納されるデータIDは変動することが多い。
iii)ついで、CPUコア11bが所定のデータ(例えば、array[1])にアクセスした場合、CPUコア11bは使用IDレジスタ12bに当該データのデータID(例えば、「22」)を格納する。
iv)RMW処理の間は、使用IDレジスタ12aと12bに格納されたデータIDが一致しないことが多いため、使用IDレジスタ12aと12bに格納されるデータIDとが一致せず、CPUコア11bが当該データにアクセスできる。
ただし、CPUコア11bが書き込み命令を実行する場合のみ、CPUコア11bは検出回路18に使用IDレジスタ12bと使用RMWIDレジスタ13aのデータIDの比較を要求する。比較結果が一致を示す場合、CPUコア11bはデータテーブル22へのアクセスを保留する。一致しない場合、CPUコア11bはデータテーブル22へ書き込みでき、CPUコア11bは実行中のスレッドを処理できる。
v)CPUコア11aは、RMW_endの前に必ずRMW処理の対象変数の加工結果をデータテーブル22に格納するため、使用IDレジスタ12aには対象変数のデータIDが格納されることになる。
この結果、CPUコア11bがアクセスを保留していた場合、使用IDレジスタ12aと使用IDレジスタ12bには同じデータIDが格納されることになり、今度はCPUコア11aがデータテーブル22へのアクセスを禁止されてしまう。しかし、RMW処理の結果の格納を優先するため、書き込み命令実行時、CPUコア11aは比較回路19に使用IDレジスタ12aと使用RMWIDレジスタ13aのデータIDの比較を要求し、比較結果が一致を示す場合、CPUコア11aはデータテーブル22の対象変数へアクセスする。
vi)ついで、CPUコア11aがRMW_endを検出すると、CPUコア11aは使用IDレジスタ12a及び使用RMWIDレジスタ13aに格納した対象変数のデータIDを削除する。
これにより、使用IDレジスタ12aと12bに格納されたデータIDが一致しないことになり、CPUコア11bは対象変数に書き込むことができるようになる。
以上の手順により、コンパイラ等で認識できないRMW処理について排他処理を実現することができる。RMW処理の対象変数へのアクセスが発生しても、書き込み命令以外のアクセスは許可されるので、オーバーヘッドを最小限に抑制できるようになっている。また、書き込み命令時でも、RMW処理の対象変数へのアクセスに関してのみ排他処理を実行するため、RAM10全体をアクセス禁止することがなく、オーバーヘッドも低減できる。
ところで、CPUコア11a及び11bが時間的に一部重複して同じRMW処理(すなわち対象変数も同じ)を実行する場合がある。
CPUコア11a CPUコア11b
RMW_start
RMW処理(対象変数) RMW_start
RMW_end RMW処理(対象変数)
RMW_end
この場合、CPUコア11aが先に対象変数を読み込むと共に書き込むが、その後にCPUコア11bが同じ対象変数を読み込みまた最後に書き込むため、対象変数の整合性の確保が困難となる。このため、例えば次のようにアクセスを制限する。
使用RMWIDレジスタ13a又は13bのどちらかに先に対象変数のデータIDが格納されるので、RMW処理をこれから実行するCPUコア11は対象変数のデータIDと他方の使用RMWIDレジスタ13のデータIDを比較し、一致する場合には後からRMW処理するCPUコア11がアクセス(読み込み)を保留すればよい。
以上のRMW処理におけるアクセスルールをまとめると次のように記載できる。ここでは、CPUコア11aがRMW処理を実行する状態を想定している。
A.使用IDレジスタ12aと使用IDレジスタ12bのデータIDが一致する場合は、CPUコア11a、11bのRAM10へのアクセスを禁止する。
B.但し、以下の場合はアクセスを許可する。
b1:CPUコア11aが書き込み命令を実行する場合を想定すると、使用IDレジスタ12aと使用RMWIDレジスタ13aのデータIDが一致する場合。これにより、CPUコア11aはRMW処理の加工結果をデータテーブル22に書き込むことができる。
b2:CPUコア11bが書き込み命令を実行する場合を想定すると、使用IDレジスタ12bに値がないか、使用IDレジスタ12bと使用RMWIDレジスタ13aのデータIDが一致しない場合。これにより、CPUコア11bは、RMW処理の対象変数以外のデータを書き込むことができる。なお、使用IDレジスタ12bに値がないとは、例えばデータID(排他処理の必要ない)のないデータにアクセスする場合である。
b3:CPUコア11aが読み込み命令を実行する場合を想定すると、使用IDレジスタ12aと使用RMDIDレジスタ13aのデータIDが一致し、かつ、使用IDレジスタ12aと使用IDレジスタ12b、使用IDレジスタ12aと使用RMWIDレジスタ13bのデータIDが一致しない場合。これにより、CPUコア11aはCPUコア11bが同じRMW処理を実行していない場合に対象変数を読み出すことができる。
b4:CPUコア11aが読み込み命令を実行する場合を想定すると、使用RMWIDレジスタ13aに値がない場合。使用RMWIDレジスタ13aに値がなければ、新たにRMW処理を実行できる。
〔MPS100の処理手順〕
図5、6は、MPS100が同時性を確保し、また、RMW処理時に排他処理する手順を示すフローチャート図を示す。図5の処理は、例えばイグニッションオン等によりMPS100が起動するとスタートする。
CPUコア11a又は11bは、データテーブル22へのアクセス、又は、RMW_startが検出されたか否かを判定する(S1-1)。いずれも検出されなければ、ステップS1−1の判定を繰り返し、RMW_startが検出された場合、図6のステップS2−1に進む。
CPUコア11aがデータテーブル22へのアクセスを検出したものとすると、CPUコア11aはアクセスするデータのデータIDを使用IDレジスタ12aに格納する(S1-2)。
ついで、CPUコア11aは、使用IDレジスタ12aと使用RMWIDレジスタ13aのデータIDが一致するか否かを判定する(S1-3)。この判定はRMW処理の加工結果の書き込みを可能とするための判定である。
すなわち、一致する場合(S1-3のYes)、CPUコア11aはプログラム21の指示するアクセスが書き込み命令か否かを判定し(S1-10)、書き込み命令である場合(S1-10のYes)は、RMW処理の加工結果を書き込むため、CPUコア11aはデータへアクセス(書き込み)する(S1-7)。なお、書き込み命令でない場合(S1-10のNo)、使用RMWIDレジスタ13aと使用IDレジスタ12aのデータIDが一致しない場合と同様に扱えるのでステップS1−4に進む。
一致しない場合(S1-3のNo)、CPUコア11aは、使用レジスタID12aと使用IDレジスタ12bのデータIDが一致するか否かを判定する(S1-4)。一致する場合(S1-4のYes)、CPUコア11aはデータへのアクセスを保留にして、ステップS1−4の判定を繰り返す(S1-5)。これにより、関連する複数データの同時性を確保できる。
使用レジスタID12aと使用IDレジスタ12bのデータIDが一致しない場合(S1-4のNo)、CPUコア11aはプログラム21の指示するアクセスが書き込み命令か否かを判定する(S1-6)。
書き込み命令でない場合(S1-6のNo)、CPUコア11aはデータテーブル22のデータへのアクセスを実行する(S1-7)。
書き込み命令の場合(S1-6のYes)、CPUコア11aは使用IDレジスタ12aと使用RMWIDレジスタ13bのデータIDが一致するか否かを判定する(S1-8)。この判定により、CPUコア11bがRMW処理を実行中である場合CPUコア11bは対象変数の排他処理を実現できる。
したがって、一致する場合(S1-8のYes)、CPUコア11aはデータへのアクセスを保留にして、ステップS1−8の判定を繰り返す(S1-9)。
一致しない場合(S1-8のNo)、CPUコア11bはRMW処理をしていないか又はしていても対象変数とCPUコア11aがアクセスするデータが異なることになるので、CPUコア11aはデータへアクセスする(S1-7)。
図6のステップS2−1に進み、RMW_startが検出された場合、CPUコア11aは、RMW処理の対象変数のデータIDと使用RMWIDレジスタ13bのデータIDが一致するか否かを判定する(S2-1)。一致する場合(S2-1のYes)、CPUコア11aとCPUコア11bが同じ対象変数に対しRMW処理を実行しようとしていることになるので、CPUコア11aは、CPUコア11bのRMW処理が終了するまで(使用RMWIDレジスタ13bのデータIDが削除されるまで)、CPUコア11aはデータへのアクセスを保留にする(S2-8)。
一致しない場合(S2-1のYes)、CPUコア11aは、RMW処理の対象変数のデータIDを使用IDレジスタ12aに格納し(S2-2)、また、使用RMWIDレジスタ13aに格納する(S2-3)。
ついで、CPUコア11aは、RMW処理の対象変数を読み出し(S2-4)、RMW処理に応じた演算処理を対象変数に施す(S2-5)。
演算処理が終了すると、CPUコア11aは対象変数をデータテーブル22に書き込む(S2-6)。ここでは、使用IDレジスタ12aと使用IDレジスタ12bのデータIDを比較しないので、これらが一致してもCPUコア11aはRMW処理の対象変数を優先的に書き込むことができる。
ついで、CPUコア11aは使用RMWIDレジスタ13aのデータIDを消去する(S2-7)。なお、使用IDレジスタ12aは上書きされるので消去してもしなくてもよい。
以上説明したように、本実施形態のMPS100は、関連する複数のデータに同じデータIDが付与されるようにプログラム21を記述し、使用IDレジスタ12aと12bのデータIDが一致する場合には後から処理するCPUコア11のアクセスを禁止するので、関連する複数のデータの同時性を確保することができる。また、完全にデータIDが一致しなくてもデータIDが一部共通すれば、CPUコア11のアクセスを禁止するので、関連するデータを柔軟に設計することができる。
データの宣言とレジスタにより実現するので、プログラム21にアクセス制御の記述も不要で、かつ、高速に実行することができる。
また、RMW処理については、他方のCPUコア11が書き込む場合にのみ排他処理しRAM10全体へのアクセスは許可されているので、排他処理のオーバーヘッドを低減できる。コンパイラでは認識できないRMW処理についてもRMW処理の開始と終了を記述するだけで排他処理を実現できる。
なお、本実施形態ではCPUコア11を2つとしたが、3以上のCPUコア11を備えている場合はそれぞれのCPUコア11に使用IDレジスタ12、使用RMWIDレジスタ13を設け、他のCPUコア11のレジスタと比較できるように接続することで、本実施形態のMPS100を好適に実現できる。
マルチプロセッサシステムの概略構成図である。 RAMに記憶されたデータテーブルの一例を示す図である。 同時性を確保する処理において各レジスタに格納されるデータIDの遷移図である。 RMW処理において各レジスタに格納されるデータIDの遷移図である。 マルチプロセッサシステムが同時性を確保し、また、RMW処理時に排他処理する手順を示すフローチャート図である。 マルチプロセッサシステムが同時性を確保し、また、RMW処理時に排他処理する手順を示すフローチャート図である。 従来のRMW命令による処理の概念図、処理の同時性の概念図の一例である。
符号の説明
10 RAM
11a、11b CPUコア
12a、12b 使用IDレジスタ
13a、13b 使用RMWIDレジスタ
14 処理分配回路
15 ROM
16、17、18、19、20 比較回路
21 プログラム
22 データテーブル
23a、23b RMW検出手段
100 マルチプロセッサシステム

Claims (6)

  1. 複数のCPUコアが並行してプログラムを実行するマルチプロセッサシステムにおいて、
    第1CPUコアがアクセスするデータの第1データIDを格納する第1データIDレジスタと、第2CPUコアがアクセスする前記データの第2データIDを格納する第2データIDレジスタと、
    予め関連する複数の前記データに、少なくとも一部が一致するデータIDを対応づけたデータテーブルを記憶する、複数の前記CPUコアが共有するデータテーブル記憶手段と、
    第1データIDレジスタに格納された第1データIDと第2データIDレジスタに格納された第2データIDを比較するデータID比較手段と、
    前記データID比較手段による比較結果が一致を示す場合、第1CPUコアと第2CPUコアのいずれか一方は前記データテーブルへのアクセスを保留する、
    ことを特徴とするマルチプロセッサシステム。
  2. 前記データID比較手段は、第1データIDと第2データIDの一部が一致する場合、第1データIDと第2データIDが一致するとの比較結果を出力する、
    ことを特徴とする請求項1記載のマルチプロセッサシステム。
  3. 前記データIDは、前記データが記述されたソースコードをコンパイルするコンパイラにより付与される、
    ことを特徴とする請求項2記載のマルチプロセッサシステム。
  4. CPUコア毎に設けられた、所定処理の開始を検出する検出手段と、
    第1CPUコアの前記検出手段が前記所定処理の開始を検出した場合、第1CPUコアが前記所定処理にてアクセスする対象変数の第1対象データIDを格納する第1所定処理データIDレジスタと、
    第2CPUコアの前記検出手段が前記所定処理の開始を検出した場合、第2CPUコアが前記所定処理にてアクセスする対象変数の第2対象データIDを格納する第2所定処理データIDレジスタと、
    第1データIDレジスタに格納された第1データIDと、第2所定処理データIDレジスタに格納された第2対象データIDとを比較する比較手段Aと、
    第2データIDレジスタに格納された第2データIDと、第1所定処理データIDレジスタに格納された第1対象データIDが一致するか否かを判定する比較手段Bと、を有し、
    第1CPUコアは、第1CPUコアが書き込み命令を実行する場合であって、かつ、比較手段Aによる比較結果が一致を示す場合、前記書き込み命令の実行を保留し、
    第2CPUコアは、第2CPUコアが書き込み命令を実行する場合であって、かつ、判定手段Bによる比較結果が一致を示す場合、前記書き込み命令の実行を保留する、
    ことを特徴とする請求項1記載のマルチプロセッサシステム。
  5. 第1CPUコアがアクセスするデータの第1データIDを格納する第1データIDレジスタと、
    第2CPUコアがアクセスする前記データの第2データIDを格納する第2データIDレジスタと、
    予め関連する複数の前記データに、少なくとも一部が一致するデータIDを対応づけたデータテーブルを記憶するた、複数の前記CPUコアが共有するデータテーブル記憶手段と、を有する、マルチプロセッサシステムの排他制御方法であって、
    データID比較手段が、第1データIDレジスタに格納された第1データIDと第2データIDレジスタに格納された第2データIDを比較するステップと、
    前記ステップの比較結果が一致を示す場合、第1CPUコアと第2CPUコアのいずれか一方は、前記データテーブルへのアクセスを保留するステップと、
    を有することを特徴とするマルチプロセッサシステムの排他制御方法。
  6. 請求項1〜4いずれか記載のマルチプロセッサシステムを搭載した車両用電子制御ユニット。
JP2007139555A 2007-05-25 2007-05-25 マルチプロセッサシステム、排他制御方法、車両用電子制御ユニット Expired - Fee Related JP4941103B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007139555A JP4941103B2 (ja) 2007-05-25 2007-05-25 マルチプロセッサシステム、排他制御方法、車両用電子制御ユニット

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007139555A JP4941103B2 (ja) 2007-05-25 2007-05-25 マルチプロセッサシステム、排他制御方法、車両用電子制御ユニット

Publications (2)

Publication Number Publication Date
JP2008293368A true JP2008293368A (ja) 2008-12-04
JP4941103B2 JP4941103B2 (ja) 2012-05-30

Family

ID=40168012

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007139555A Expired - Fee Related JP4941103B2 (ja) 2007-05-25 2007-05-25 マルチプロセッサシステム、排他制御方法、車両用電子制御ユニット

Country Status (1)

Country Link
JP (1) JP4941103B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016037157A (ja) * 2014-08-07 2016-03-22 本田技研工業株式会社 車両用制御装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10187527A (ja) * 1996-07-01 1998-07-21 Sun Microsyst Inc アクセス競合を防ぐ装置および方法
JPH1115793A (ja) * 1997-05-28 1999-01-22 Internatl Business Mach Corp <Ibm> 資源の保全性を保護する方法
JP2000003302A (ja) * 1998-06-15 2000-01-07 Hitachi Ltd 共有メモリ排他アクセス制御方法
JP2003296128A (ja) * 2002-03-29 2003-10-17 Fujitsu Ltd スレッド実行装置
JP2004054906A (ja) * 2003-05-21 2004-02-19 Hitachi Ltd メモリアクセス方法およびその実施コンピュータシステム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10187527A (ja) * 1996-07-01 1998-07-21 Sun Microsyst Inc アクセス競合を防ぐ装置および方法
JPH1115793A (ja) * 1997-05-28 1999-01-22 Internatl Business Mach Corp <Ibm> 資源の保全性を保護する方法
JP2000003302A (ja) * 1998-06-15 2000-01-07 Hitachi Ltd 共有メモリ排他アクセス制御方法
JP2003296128A (ja) * 2002-03-29 2003-10-17 Fujitsu Ltd スレッド実行装置
JP2004054906A (ja) * 2003-05-21 2004-02-19 Hitachi Ltd メモリアクセス方法およびその実施コンピュータシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016037157A (ja) * 2014-08-07 2016-03-22 本田技研工業株式会社 車両用制御装置

Also Published As

Publication number Publication date
JP4941103B2 (ja) 2012-05-30

Similar Documents

Publication Publication Date Title
US7434032B1 (en) Tracking register usage during multithreaded processing using a scoreboard having separate memory regions and storing sequential register size indicators
JP4888272B2 (ja) ソフトウェアのシミュレーション方法、ソフトウェアのシミュレーションのためのプログラム、及びソフトウェアのシミュレーション装置
JP5044387B2 (ja) 情報処理装置及びそのスタックポインタ更新方法
CN1799030A (zh) 用于确定访问许可的方法和设备
JP2014532221A (ja) 乳幼児のためのインタラクションサービスを提供する装置及び方法、これを利用したシステム
CN103329102A (zh) 多处理器系统
JP2015518605A (ja) 安全アプリケーションのための機能アーキテクチャパターン
JP4941103B2 (ja) マルチプロセッサシステム、排他制御方法、車両用電子制御ユニット
WO2012070137A1 (ja) プロセッサ、電子制御装置、作成プログラム
US7191359B2 (en) Fail-safe controller
JP3965784B2 (ja) 共有メモリ排他アクセス制御方法
JP5999216B2 (ja) データ処理装置
JP6512087B2 (ja) 車両用制御装置
JP3458796B2 (ja) 割込命令チェック装置及び記録媒体
JP7139633B2 (ja) 並列化方法、並列化ツール、及びマルチコアマイコン
JP2009238176A (ja) 情報処理装置およびプログラムの検証方法
JP2009223435A (ja) データ記憶方法及び装置、並びにプログラム
US20120265904A1 (en) Processor system
JPS62168229A (ja) システム構成自動認識処理方法
WO2023171443A1 (ja) 電子制御装置及び認証方法
CN112364600B (zh) 一种处理器微架构设计验证方法
JP2008176731A (ja) マルチプロセッサシステム
JP2023009818A (ja) 車両用電子制御装置及び車両用電子制御装置による制御方法
US20210357285A1 (en) Program Generation Apparatus and Parallel Arithmetic Device
JP2020004448A (ja) 自動車用電子制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090723

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120125

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: 20120131

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: 20120213

R151 Written notification of patent or utility model registration

Ref document number: 4941103

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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

Free format text: PAYMENT UNTIL: 20150309

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees