JP6992471B2 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP6992471B2
JP6992471B2 JP2017238930A JP2017238930A JP6992471B2 JP 6992471 B2 JP6992471 B2 JP 6992471B2 JP 2017238930 A JP2017238930 A JP 2017238930A JP 2017238930 A JP2017238930 A JP 2017238930A JP 6992471 B2 JP6992471 B2 JP 6992471B2
Authority
JP
Japan
Prior art keywords
cpu
lock
time
determination unit
usage
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.)
Active
Application number
JP2017238930A
Other languages
English (en)
Other versions
JP2019106066A (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.)
Denso Corp
Original Assignee
Denso 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 Denso Corp filed Critical Denso Corp
Priority to JP2017238930A priority Critical patent/JP6992471B2/ja
Publication of JP2019106066A publication Critical patent/JP2019106066A/ja
Application granted granted Critical
Publication of JP6992471B2 publication Critical patent/JP6992471B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)

Description

本開示は、CPUを複数搭載する情報処理装置に関する。
特許文献1には、CPUを複数搭載する情報処理装置において、ロック獲得に失敗した場合に、ロックを獲得した処理の継続時間(以下、ロック継続時間)が判定閾値時間を超えているときにはスピンロックを実行し、ロック継続時間が判定閾値時間以下であるときにはスリープを実行する技術が記載されている。
特開2010-191575号公報
1つのコアの演算で利用される複数の関数が同一の共有データにアクセスする場合には、関数に応じて、ロックを獲得してから解放するまでの時間が異なる。このため、単純に、ロック継続時間が判定閾値時間以下であるか否かにより、スピンロックを実行するか否かを判断すると、ロックを獲得した関数によっては、無駄に長くスピンロックを実行してしまい、CPUの処理効率を低下させる恐れがあった。
本開示は、CPUを複数搭載する情報処理装置においてCPUの処理効率を向上させることを目的とする。
本開示の一態様は、CPU(2,3,4)を複数搭載する情報処理装置(1)であって、情報処理装置は、共有記憶部(9)を備え、複数のCPUはそれぞれ、使用判断部(S10,S20)と、時間記憶部(S30~S70)と、時間判断部(S90~S120)と、判断継続部(S150,S160)と、処理切替部(S130)とを備える。
共有記憶部は、複数のCPUの間で共有する必要があるデータとして予め設定された複数の共有データを記憶するように構成される。
使用判断部は、複数の共有データの何れか一つにアクセスするときに、アクセスする対象となる共有データである対象データが他のCPUによって使用中である使用中状態であるか否かを判断するように構成される。
時間記憶部は、使用中状態において前記対象データにアクセスしている処理である前記対象データ使用処理の開始から終了までに要する使用時間を、前記対象データ使用処理を示す処理識別情報と対応付けて記憶するように構成される。
時間判断部は、使用中状態であると使用判断部が判断した場合に、対象データ使用処理を示す処理識別情報と対応付けられている使用時間と、対象データ使用処理の開始から現時点までの使用経過時間との差が小さいことを示す予め設定された使用判断条件が成立したか否かを判断するように構成される。
判断継続部は、使用判断条件が成立したと時間判断部が判断した場合に、使用中状態ではないと判断するまで使用判断部による判断を繰り返し実行させるように構成される。
処理切替部は、使用判断条件が成立していないと時間判断部が判断した場合に、自身のCPUにおいて対象データにアクセスしようとしている処理であるアクセス対象処理を一旦中断させて、アクセス対象処理とは異なる他処理を実行させるように構成される。
このように構成された本開示の情報処理装置は、複数の対象データ使用処理のそれぞれに対応した使用時間を記憶する。このため、本開示の情報処理装置は、使用中状態において、使用時間と使用経過時間との差が小さいか否かを対象データ使用処理に応じて適切に判断して、使用判断部による判断を繰り返し実行させるか、アクセス対象処理とは異なる他処理を実行させるかを決定することができる。これにより、本開示の情報処理装置は、使用判断部による判断を無駄に長く実行させてしまう事態の発生を抑制し、CPUの処理効率を向上させることができる。
なお、この欄及び特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
第1実施形態のマイコンの構成を示すブロック図である。 第1実施形態のロック取得処理を示すフローチャートである。 第1実施形態のCPUの動作の具体例を示すシーケンス図である。 第2,3,4実施形態のマイコンの構成を示すブロック図である。 第2実施形態のロック取得処理の前半部分を示すフローチャートである。 第2実施形態のロック取得処理の後半部分を示すフローチャートである。 第2実施形態のCPUの動作の具体例を示すシーケンス図である。 第3実施形態のロック取得処理の前半部分を示すフローチャートである。 第3実施形態のロック取得処理の後半部分を示すフローチャートである。 第3実施形態のCPUの動作の具体例を示すシーケンス図である。 第4実施形態のロック取得処理の前半部分を示すフローチャートである。 第4実施形態のロック取得処理の後半部分を示すフローチャートである。 第4実施形態のCPUの動作の具体例を示すシーケンス図である。
(第1実施形態)
以下に本開示の第1実施形態を図面とともに説明する。
本実施形態のマイクロコンピュータ1(以下、マイコン1)は、例えば、車両に搭載されて、エンジンの制御を行う。マイコン1は、図1に示すように、CPU2,3と、ROM5と、ローカルRAM6,7と、共有RAM9と、I/O10,11と、タイマ12とを備える。
CPU2,3は、ROM5に記憶されたプログラムに基づいて、エンジンを制御するための各種制御処理を分散して実行する。ROM5は、不揮発性メモリであり、CPU2,3が実行するプログラムと、プログラムの実行時に参照されるデータとを記憶する。
マイクロコンピュータの各種機能は、CPU2,3が非遷移的実体的記録媒体に格納されたプログラムを実行することにより実現される。この例では、ROM5が、プログラムを格納した非遷移的実体的記録媒体に該当する。また、このプログラムの実行により、プログラムに対応する方法が実行される。なお、CPUが実行する機能の一部または全部を、一つあるいは複数のIC等によりハードウェア的に構成してもよい。
ローカルRAM6は、揮発性メモリであり、CPU2の演算結果等を一時的に記憶する。ローカルRAM7は、揮発性メモリであり、CPU3の演算結果等を一時的に記憶する。
共有RAM9は、揮発性メモリであり、CPU2,3が共有して使用するデータ(以下、共有データ)を一時的に記憶する。
I/O10,11は、マイコン1の外部とマイコン1との間で信号の入出力を行わせるための回路である。タイマ12は、現在時刻を計測する回路である。
次に、CPU2,3が実行するロック取得処理の手順を説明する。ロック取得処理は、CPU2,3が実行しているプロセスが、共有RAM9に記憶されている複数の共有データのそれぞれにアクセスするときに開始される処理である。
このロック取得処理が実行されると、CPU2,3は、図2に示すように、まずS10にて、アクセス対象の共有データのロック(以下、アクセス対象のロック)を取得するための処理を実行する。具体的には、まず、アクセス対象の共有データに対応するロックフラグ(以下、アクセス対象のロックフラグ)がセットされているか否かを判断する。ロックフラグは、共有RAM9に記憶されており、複数の共有データのそれぞれに対応して設けられている。そして、アクセス対象のロックフラグがセットされている場合には、アクセス対象のロックの取得に失敗したと判断する。一方、アクセス対象のロックフラグがクリアされている場合には、アクセス対象のロックの取得に成功したと判断し、アクセス対象のロックフラグをセットする。これにより、CPU2,3は、アクセス対象の共有データを使用した演算を実行することが可能となる。
次にS20にて、S10においてロックの取得に成功したか否かを判断する。ここで、ロックの取得に成功した場合には、S30にて、ロックIDを更新する。具体的には、アクセス対象の共有データのロックID(以下、アクセス対象のロックID)を、ロック取得処理を開始する起因となった関数(すなわち、アクセス対象の共有データにアクセスする関数)を識別するために予め設定された関数識別情報(以下、関数ID)に設定する。ロックIDは、複数の共有データのそれぞれに対応して、共有RAM9に設けられている。
そしてS40にて、現在時刻を示す現在時刻情報をタイマ12から取得して、この現在時刻情報を、アクセス対象のロックIDに設定されている関数IDと対応付けて共有RAM9に記憶する。
さらにS50にて、アクセス対象の共有データを使用した演算が終了したか否かを判断する。ここで、演算が終了していない場合には、S50の処理を繰り返すことにより、演算が終了するまで待機する。一方、演算が終了した場合には、S60にて、ロック時間を算出して記憶する。具体的には、まず、現在時刻情報をタイマ12から取得する。そして、S40にて共有RAM9に記憶した現在時刻情報が示す時刻から、S60にて取得した現在時刻情報が示す時刻までに経過した時間を算出し、この経過時間をロック時間とする。さらに、このロック時間を、アクセス対象のロックIDに設定されている関数IDと対応付けて共有RAM9に記憶する。
またS70にて、アクセス対象のロックIDに設定されている関数IDの平均ロック時間を算出して記憶する。具体的には、まず、共有RAM9に記憶されているデータの中から、アクセス対象のロックIDに設定されている関数IDに対応付けられているロック時間を全て抽出する。そして、抽出した全てのロック時間の平均値を算出し、この平均値を平均ロック時間として、アクセス対象のロックIDに設定されている関数IDと対応付けて共有RAM9に記憶する。なお、抽出されたロック時間が1つである場合には、抽出された1つのロック時間を平均ロック時間とする。
次にS80にて、ロックを開放する。具体的には、アクセス対象の共有データに対応するロックフラグをクリアする。そして、S80の処理が完了した後に、ロック取得処理を終了する。
またS20にて、ロックの取得に成功しなかった場合には、S90にて、アクセス対象のロックIDを取得する。すなわち、アクセス対象のロックIDに設定されている関数IDを抽出する。
そしてS100にて、ロック経過時間を算出する。具体的には、まず、現在時刻情報をタイマ12から取得する。また、共有RAM9から、S90で取得されたロックIDと同じ関数IDが対応付けられている現在時刻情報を抽出する。そして、抽出した現在時刻情報が示す時刻(すなわち、ロック開始時刻)から、タイマ12から取得した現在時刻情報が示す時刻(すなわち、現在時刻)までに経過した時間を算出し、この経過時間をロック経過時間とする。
さらにS110にて、ロック残時間を算出する。具体的には、まず、共有RAM9から、S90で取得されたロックIDと同じ関数IDが対応付けられている平均ロック時間を抽出する。そして、抽出された平均ロック時間から、S100で算出されたロック経過時間を減算した減算値を、ロック残時間とする。
そしてS120にて、S110で算出されたロック残時間が予め設定された切替判定時間より大きいか否かを判断する。ここで、ロック残時間が切替判定時間より大きい場合には、S130にて、実行しているプロセスをスリープさせる。これにより、他のプロセス(以下、切替後プロセス)が実行される。
そしてS140にて、切替後プロセスが終了したか否かを判断する。ここで、切替後プロセスが終了していない場合には、S140の処理を繰り返すことにより、切替後プロセスが終了するまで待機する。そして、切替後プロセスが終了すると、S10に移行する。
またS120にて、ロック残時間が切替判定時間以下である場合には、S150にて、S10と同様にして、アクセス対象のロックを取得するための処理を実行する。さらにS160にて、S20と同様にして、S150においてロックの取得に成功したか否かを判断する。ここで、ロックの取得に成功した場合には、S30に移行する。一方、ロックの取得に成功しなかった場合には、S150に移行する。
次に、CPU2,3の動作の具体例を説明する。
図3に示すように、まず、CPU2は、実行中のプロセスにおいて、関数Aを用いて演算する処理P1を行うために、矢印L1に示すように、アクセス対象のロックを取得する。そして、処理P1が終了すると、CPU2は、矢印L2に示すように、アクセス対象のロックを解放する。
次に、CPU2は、実行中のプロセスにおいて、関数Bを用いて演算する処理P2を行うために、矢印L3に示すように、アクセス対象のロックを取得する。
その後、CPU3は、実行中のプロセスにおいて、矢印L5に示すように、処理P2と同じアクセス対象のロックを取得する処理P3を実行する。しかし、既にアクセス対象のロックが取得されているため、CPU3は、ロックの取得に失敗する。
このため、CPU3は、アクセス対象のロックIDを取得する処理P4を行う。またCPU3は、ロック残時間を算出する処理P5を行う。そしてCPU3は、ロック残時間が切替判定時間より大きいために、実行しているプロセスをスリープさせる処理P6を行う。これにより、CPU3は、他のプロセスの処理P7を実行する。
そして、処理P2が終了すると、CPU2は、矢印L4に示すように、アクセス対象のロックを解放する。
その後、CPU3は、他のプロセスの処理P7が終了すると、矢印L6に示すように、処理P2と同じアクセス対象のロックを取得する処理P8を実行する。この時点で、アクセス対象のロックが解放されているため、CPU3は、ロックの取得に成功する。
このように構成されたマイコン1は、CPU2,3を搭載し、共有RAM9を備える。共有RAM9は、CPU2,3の間で共有する必要がある複数の共有データを記憶する。
CPU2,3は、複数の共有データの何れか一つにアクセスするときに、アクセスする対象となる共有データ(以下、対象データ)に対応するロックフラグ(すなわち、上記のアクセス対象のロックフラグ)がセットされているか否かを判断する。
CPU2,3は、ロックフラグがセットされている状態(以下、使用中状態)において対象データにアクセスしている関数(以下、対象データ使用関数)の開始から終了までに要する平均ロック時間を、対象データ使用関数を示す関数IDと対応付けて記憶する。
CPU2,3は、使用中状態であると判断した場合に、対象データ使用関数を示す関数IDと対応付けられている平均ロック時間と、対象データ使用関数の開始から現時点までのロック経過時間との差(すなわち、ロック残時間)が切替判定時間以下であるか否かを判断する。
CPU2,3は、ロック残時間が切替判定時間以下であると判断した場合に、ロックフラグがクリアされている(すなわち、使用中状態ではない)と判断するまで、アクセス対象のロックフラグがセットされているか否かの判断を繰り返し実行する。
CPU2,3は、ロック残時間が切替判定時間より大きいと判断した場合に、スリープすることにより、自身のCPUにおいて対象データにアクセスしようとしている関数(以下、アクセス対象関数)を一旦中断させて、アクセス対象関数とは異なる他処理を実行する。
このようにマイコン1は、複数の対象データ使用関数のそれぞれに対応した平均ロック時間を記憶する。このため、マイコン1は、使用中状態において、平均ロック時間とロック経過時間との差が小さいか否かを対象データ使用関数に応じて適切に判断して、アクセス対象のロックフラグがセットされているか否かの判断を繰り返し実行させるか、アクセス対象関数とは異なる他処理を実行するかを決定することができる。これにより、マイコン1は、アクセス対象のロックフラグがセットされているか否かの判断を無駄に長く実行させてしまう事態の発生を抑制し、CPUの処理効率を向上させることができる。
以上説明した実施形態において、マイコン1は情報処理装置に相当し、共有RAM9は共有記憶部に相当し、S10,S20は使用判断部としての処理に相当する。
また、S30~S70は時間記憶部としての処理に相当し、S90~S120は時間判断部としての処理に相当し、S150,S160は判断継続部としての処理に相当し、S130は処理切替部としての処理に相当する。
また、平均ロック時間は使用時間に相当し、関数IDは処理識別情報に相当し、ロック経過時間は使用経過時間に相当し、S120の判断条件は使用判断条件に相当する。
(第2実施形態)
以下に本開示の第2実施形態を図面とともに説明する。なお第2実施形態では、第1実施形態と異なる部分を説明する。共通する構成については同一の符号を付す。
第2実施形態のマイコン1は、図4に示すように、CPU4とローカルRAM8とが追加された点が第1実施形態と異なる。
CPU2,3,4は、ROM5に記憶されたプログラムに基づいて、エンジンを制御するための各種制御処理を分散して実行する。ROM5は、不揮発性メモリであり、CPU2,3,4が実行するプログラムと、プログラムの実行時に参照されるデータとを記憶する。
マイクロコンピュータの各種機能は、CPU2,3,4が非遷移的実体的記録媒体に格納されたプログラムを実行することにより実現される。この例では、ROM5が、プログラムを格納した非遷移的実体的記録媒体に該当する。
ローカルRAM8は、揮発性メモリであり、CPU4の演算結果等を一時的に記憶する。共有RAM9は、揮発性メモリであり、CPU2,3,4が共有して使用するデータ(以下、共有データ)を一時的に記憶する。
次に、CPU2,3,4が実行するロック取得処理の手順を説明する。ロック取得処理は、CPU2,3,4が実行しているプロセスが、共有RAM9に記憶されている複数の共有データのそれぞれにアクセスするときに開始される処理である。
第2実施形態のロック取得処理は、S21,S81,S82の処理が追加された点が第1実施形態と異なる。
すなわち、図5に示すように、S20にて、ロックの取得に成功した場合には、S21にて、アクセス対象の共有データに対応するロック待ちフラグをクリアし、S30に移行する。ロック待ちフラグは、共有RAM9に記憶されており、複数の共有データのそれぞれに対応して設けられている。
またS20にて、ロックの取得に成功しなかった場合には、S81にて、アクセス対象の共有データに対応するロック待ちフラグがセットされているか否かを判断する。ここで、ロック待ちフラグがクリアされている場合には、S82にて、アクセス対象の共有データに対応するロック待ちフラグをセットして、S90に移行する。一方、ロック待ちフラグがセットされている場合には、図6に示すように、S130に移行する。
またS160にて、ロックの取得に成功した場合には、S21に移行する。
次に、CPU2,3,4の動作の具体例を説明する。
図7に示すように、まず、CPU2は、実行中のプロセスにおいて、関数Aを用いて演算する処理P11を行うために、矢印L11に示すように、アクセス対象のロックを取得する。
その後、CPU3は、実行中のプロセスにおいて、矢印L12に示すように、処理P11と同じアクセス対象のロックを取得する処理P12を実行する。しかし、既にアクセス対象のロックが取得されているため、CPU3は、ロックの取得に失敗する。この時点で、ロック待ちフラグがクリアされている。このため、CPU3は、ロック待ちフラグをセットする。
そしてCPU3は、アクセス対象のロックIDを取得する処理P13を行う。またCPU3は、ロック残時間を算出する処理P14を行う。そしてCPU3は、ロック残時間が切替判定時間より大きいために、実行しているプロセスをスリープさせる処理P15を行う。これにより、CPU3は、他のプロセスの処理P16を実行する。
またCPU2は、処理P11が終了すると、矢印L13に示すように、アクセス対象のロックを解放する。
その後、CPU3は、他のプロセスの処理P16が終了すると、矢印L14に示すように、処理P11と同じアクセス対象のロックを取得する処理P17を実行する。この時点で、アクセス対象のロックが解放されているため、CPU3は、ロックの取得に成功する。これにより、CPU3は、ロック待ちフラグをクリアし、処理P11と同じアクセス対象の共有データにアクセスする関数Cを用いて演算する処理P18を行う。そして、処理P18が終了すると、CPU3は、矢印L15に示すように、アクセス対象のロックを解放する。
またCPU4は、実行中のプロセスにおいて、矢印L16に示すように、処理P11と同じアクセス対象のロックを取得する処理P19を実行する。しかし、既にアクセス対象のロックが取得されているため、CPU4は、ロックの取得に失敗する。さらに、ロック待ちフラグがセットされている。このため、CPU4は、実行しているプロセスをスリープさせる処理P20を行う。これにより、CPU4は、他のプロセスの処理P21を実行する。
その後、処理P21が終了すると、CPU4は、矢印L17に示すように、処理P11と同じアクセス対象のロックを取得する処理P22を実行する。しかし、既にアクセス対象のロックが取得されているため、CPU4は、ロックの取得に失敗する。この時点で、ロック待ちフラグがクリアされている。このため、CPU4は、ロック待ちフラグをセットする。
そしてCPU4は、アクセス対象のロックIDを取得する処理P23を行う。またCPU4は、ロック残時間を算出する処理P24を行う。そしてCPU4は、ロック残時間が切替判定時間以下であるために、アクセス対象のロックの取得を繰り返すスピンロック処理P25を行う。そして、処理P18の終了後に、アクセス対象のロックを取得する処理P26を実行すると、この時点で、アクセス対象のロックが解放されているため、CPU4は、ロックの取得に成功する。
このようにマイコン1のCPU2,3,4は、アクセス対象のロックフラグがセットされている(すなわち、使用中状態である)と判断した場合に、アクセス対象に対応するロック待ちフラグがセットされているか否か(すなわち、対象データへのアクセスを待機している他のCPUが存在するか否か)を判断する。
CPU2,3,4は、ロックフラグがクリアされていると判断した場合には、ロック残時間が切替判定時間以下であるか否かの判断を実行し、ロックフラグがセットされていると判断した場合には、アクセス対象関数を一旦中断させて、アクセス対象関数とは異なる他処理を実行する。
これにより、マイコン1は、対象データへアクセスするCPUが複数存在する場合において、対象データへアクセスするために先に待機を開始したCPUに対して、このCPUより後に待機を開始したCPUより優先して、対象データへアクセスさせることができる。すなわち、マイコン1は、先に待機を開始したCPUよりも、後に待機を開始したCPUの方が早く対象データへアクセスしてしまう事態の発生を抑制することができる。
以上説明した実施形態において、S81は待機判断部および先着選択部としての処理に相当する。
(第3実施形態)
以下に本開示の第3実施形態を図面とともに説明する。なお第3実施形態では、第2実施形態と異なる部分を説明する。共通する構成については同一の符号を付す。
第3実施形態のマイコン1は、ロック取得処理が変更された点が第2実施形態と異なる。
第3実施形態のロック取得処理は、S21,S81,S82の処理が省略された点と、S2,S23,S84,S85,S141の処理が追加された点が第2実施形態と異なる。
すなわち、ロック取得処理が実行されると、CPU2,3,4は、図8に示すように、まずS2にて、自身のCPUより優先度が高いCPUについて、アクセス対象の共有データに対応する自CPU待ちフラグがセットされているか否かを判断する。自CPU待ちフラグは、共有RAM9に記憶されており、CPU2,3,4毎に設けられるとともに、複数の共有データのそれぞれに対応して設けられている。
ここで、自CPU待ちフラグがクリアされている場合には、S10に移行する。一方、自CPU待ちフラグがセットされている場合には、図9に示すように、S130に移行する。
また図8に示すように、S20にて、ロックの取得に成功した場合には、S23にて、アクセス対象の共有データに対応する自CPU待ちフラグをクリアし、S30に移行する。
またS20にて、ロックの取得に成功しなかった場合には、S84にて、自身のCPUより優先度が高いCPUについて、アクセス対象の共有データに対応する自CPU待ちフラグがセットされているか否かを判断する。ここで、自CPU待ちフラグがクリアされている場合には、S85にて、アクセス対象の共有データに対応する自CPU待ちフラグをセットして、S90に移行する。一方、S84にて、自CPU待ちフラグがセットされている場合には、図9に示すように、S130に移行する。
またS120にて、ロック残時間が切替判定時間以下である場合には、S141にて、S84と同様にして、自身のCPUより優先度が高いCPUについて、アクセス対象の共有データに対応する自CPU待ちフラグがセットされているか否かを判断する。ここで、自CPU待ちフラグがクリアされている場合には、S150に移行する。一方、自CPU待ちフラグがセットされている場合には、S130に移行する。
またS160にて、ロックの取得に成功した場合には、S23に移行する。一方、ロックの取得に失敗した場合には、S141に移行する。
次に、CPU2,3,4の動作の具体例を説明する。
図10に示すように、まず、CPU2は、実行中のプロセスにおいて、関数Aを用いて演算する処理P31を行うために、矢印L31に示すように、アクセス対象のロックを取得する。
その後、CPU3は、実行中のプロセスにおいて、矢印L32に示すように、処理P31と同じアクセス対象のロックを取得する処理P32を実行する。しかし、既にアクセス対象のロックが取得されているため、CPU3は、ロックの取得に失敗する。この時点で、自身のCPUより優先度が高いCPUについて、アクセス対象の共有データに対応する自CPU待ちフラグがセットされていない。このため、CPU3は、アクセス対象の共有データに対応する自CPU待ちフラグをセットする。なお、CPU4の優先度は、CPU3の優先度より高いとする。
そしてCPU3は、アクセス対象のロックIDを取得する処理P33を行う。またCPU3は、ロック残時間を算出する処理P34を行う。そしてCPU3は、ロック残時間が切替判定時間より大きいために、実行しているプロセスをスリープさせる処理P35を行う。これにより、CPU3は、他のプロセスの処理P36を実行する。
またCPU4は、CPU3が処理P32を実行した後に、矢印L33に示すように、実行中のプロセスにおいて処理P31と同じアクセス対象のロックを取得する処理P37を実行する。しかし、既にアクセス対象のロックが取得されているため、CPU4は、ロックの取得に失敗する。この時点で、自身のCPUより優先度が高いCPUについて、アクセス対象の共有データに対応する自CPU待ちフラグがセットされていない。このため、CPU4は、アクセス対象の共有データに対応する自CPU待ちフラグをセットする。
そしてCPU4は、アクセス対象のロックIDを取得する処理P38を行う。またCPU4は、ロック残時間を算出する処理P39を行う。そしてCPU4は、ロック残時間が切替判定時間より大きいために、実行しているプロセスをスリープさせる処理P40を行う。これにより、CPU4は、他のプロセスの処理P41を実行する。
そして、他のプロセスの処理P36が終了した時点で、CPU3より優先度が高いCPU4の自CPU待ちフラグがセットされているため、CPU3は、再度、スリープさせる処理P42を行う。これにより、CPU3は、他のプロセスの処理P43を実行する。
そして、処理P41が終了すると、CPU4は、矢印L35に示すように、処理P31と同じアクセス対象のロックを取得する処理P44を実行する。この時点で、アクセス対象のロックが解放されているため、CPU4は、ロックの取得に成功する。このため、CPU4は、アクセス対象の共有データに対応する自CPU待ちフラグをクリアする。さらにCPU4は、関数Dを用いて演算する処理P45を行う。そして、処理P45が終了すると、CPU4は、矢印L36に示すように、アクセス対象のロックを解放する。
その後、CPU3は、他のプロセスの処理P43が終了すると、CPU3より優先度が高いCPU4の自CPU待ちフラグがセットされていないため、矢印L37に示すように、処理P31と同じアクセス対象のロックを取得する処理P46を実行する。この時点で、アクセス対象のロックが解放されているため、CPU3は、ロックの取得に成功する。これにより、CPU3は、自CPU待ちフラグをクリアし、処理P31と同じアクセス対象の共有データにアクセスする関数Cを用いて演算する処理P47を行う。そして、処理P47が終了すると、CPU3は、矢印L38に示すように、アクセス対象のロックを解放する。
このようにマイコン1のCPU2,3,4は、アクセス対象のロックフラグがセットされている(すなわち、使用中状態である)と判断した場合に、自身のCPUより優先度が高いCPU(以下、高優先度CPU)について、アクセス対象に対応する自CPU待ちフラグがセットされているか否かを判断する。
CPU2,3,4は、高優先度CPUの自CPU待ちフラグがクリアされていると判断した場合には、ロック残時間が切替判定時間以下であるか否かの判断を実行する。またCPU2,3,4は、高優先度CPUの自CPU待ちフラグがセットされていると判断した場合には、アクセス対象関数を一旦中断させて、アクセス対象関数とは異なる他処理を実行する。
これにより、マイコン1は、対象データへアクセスするCPUが複数存在する場合において、優先度が高いCPUに対して、優先度が低いCPUより優先して、対象データへアクセスさせることができる。すなわち、マイコン1は、優先度が高いCPUよりも、優先度が低いCPUの方が早く対象データへアクセスしてしまう事態の発生を抑制することができる。
以上説明した実施形態において、S84は高優先CPU判断部および高優先CPU選択部としての処理に相当する。
(第4実施形態)
以下に本開示の第4実施形態を図面とともに説明する。なお第4実施形態では、第3実施形態と異なる部分を説明する。共通する構成については同一の符号を付す。
第4実施形態のマイコン1は、ロック取得処理が変更された点が第3実施形態と異なる。
第4実施形態のロック取得処理は、S2,S23,S84,S85,S141の処理の代わりに、S4,S25,S87,S88,S143の処理を実行する点が第3実施形態と異なる。
すなわち、ロック取得処理が実行されると、CPU2,3,4は、図11に示すように、まずS2にて、ロック取得処理を開始する起因となった関数(以下、開始起因関数)よりも優先度が高い関数の関数待ちフラグがセットされているか否かを判断する。関数待ちフラグは、共有RAM9に記憶されており、共有データにアクセスする複数の関数のそれぞれに対応して設けられている。
ここで、関数待ちフラグがクリアされている場合には、S10に移行する。一方、関数待ちフラグがセットされている場合には、図12に示すように、S130に移行する。
また図11に示すように、S20にて、ロックの取得に成功した場合には、S25にて、開始起因関数に対応する関数待ちフラグをクリアし、S30に移行する。
またS20にて、ロックの取得に成功しなかった場合には、S87にて、開始起因関数よりも優先度が高い関数の関数待ちフラグがセットされているか否かを判断する。ここで、関数待ちフラグがクリアされている場合には、S88にて、開始起因関数に対応する関数待ちフラグをセットして、S90に移行する。一方、関数待ちフラグがセットされている場合には、図12に示すように、S130に移行する。
またS120にて、ロック残時間が切替判定時間以下である場合には、S143にて、S87と同様にして、開始起因関数よりも優先度が高い関数の関数待ちフラグがセットされているか否かを判断する。ここで、関数待ちフラグがクリアされている場合には、S150に移行する。一方、関数待ちフラグがセットされている場合には、S130に移行する。
またS160にて、ロックの取得に成功した場合には、S25に移行する。一方、ロックの取得に失敗した場合には、S143に移行する。
次に、CPU2,3,4の動作の具体例を説明する。
図13に示すように、まず、CPU2は、実行中のプロセスにおいて、関数Aを用いて演算する処理P61を行うために、矢印L61に示すように、アクセス対象のロックを取得する。
その後、CPU3は、実行中のプロセスにおいて、矢印L62に示すように、処理P61と同じアクセス対象のロックを取得する処理P62を実行する。しかし、既にアクセス対象のロックが取得されているため、CPU3は、ロックの取得に失敗する。この時点で、関数Cより優先度が高い関数に対応する関数待ちフラグがセットされていない。このため、CPU3は、関数Cに対応する関数待ちフラグをセットする。なお、関数Dの優先度は、関数Cの優先度より高いとする。
そしてCPU3は、アクセス対象のロックIDを取得する処理P63を行う。またCPU3は、ロック残時間を算出する処理P64を行う。そしてCPU3は、ロック残時間が切替判定時間より大きいために、実行しているプロセスをスリープさせる処理P65を行う。これにより、CPU3は、他のプロセスの処理P66を実行する。
またCPU4は、CPU3が処理P62を実行した後に、矢印L63に示すように、実行中のプロセスにおいて処理P61と同じアクセス対象のロックを取得する処理P67を実行する。しかし、既にアクセス対象のロックが取得されているため、CPU4は、ロックの取得に失敗する。この時点で、関数Dより優先度が高い関数に対応する関数待ちフラグがセットされていない。このため、CPU4は、関数Dに対応する関数待ちフラグをセットする。
そしてCPU4は、アクセス対象のロックIDを取得する処理P68を行う。またCPU4は、ロック残時間を算出する処理P69を行う。そしてCPU4は、ロック残時間が切替判定時間より大きいために、実行しているプロセスをスリープさせる処理P70を行う。これにより、CPU4は、他のプロセスの処理P71を実行する。
そして、他のプロセスの処理P66が終了した時点で、関数Cより優先度が高い関数Dに対応する関数待ちフラグがセットされているため、CPU3は、再度、スリープさせる処理P72を行う。これにより、CPU3は、他のプロセスの処理P73を実行する。
そして、処理P71が終了すると、CPU4は、矢印L65に示すように、処理P61と同じアクセス対象のロックを取得する処理P74を実行する。この時点で、アクセス対象のロックが解放されているため、CPU4は、ロックの取得に成功する。このため、CPU4は、関数Dに対応する関数待ちフラグをクリアする。さらにCPU4は、関数Dを用いて演算する処理P75を行う。そして、処理P75が終了すると、CPU4は、矢印L66に示すように、アクセス対象のロックを解放する。
その後、CPU3は、他のプロセスの処理P73が終了すると、関数Cより優先度が高い関数に対応する関数待ちフラグがセットされていないため、矢印L67に示すように、処理P61と同じアクセス対象のロックを取得する処理P76を実行する。この時点で、アクセス対象のロックが解放されているため、CPU3は、ロックの取得に成功する。これにより、CPU3は、関数Cに対応する関数待ちフラグをクリアし、処理P61と同じアクセス対象の共有データにアクセスする関数Cを用いて演算する処理P77を行う。そして、処理P77が終了すると、CPU3は、矢印L68に示すように、アクセス対象のロックを解放する。
このようにマイコン1のCPU2,3,4は、アクセス対象のロックフラグがセットされている(すなわち、使用中状態である)と判断した場合に、開始起因関数よりも優先度が高い関数の関数待ちフラグがセットされているか否かを判断する。
CPU2,3,4は、開始起因関数よりも優先度が高い関数の関数待ちフラグがクリアされていると判断した場合には、ロック残時間が切替判定時間以下であるか否かの判断を実行する。またCPU2,3,4は、開始起因関数よりも優先度が高い関数の関数待ちフラグがセットされていると判断した場合には、アクセス対象関数を一旦中断させて、アクセス対象関数とは異なる他処理を実行する。
これにより、マイコン1は、対象データへアクセスするアクセス対象関数が複数存在する場合において、優先度が高いアクセス対象関数に対して、優先度が低いアクセス対象関数より優先して、対象データへアクセスさせることができる。すなわち、マイコン1は、優先度が高いアクセス対象関数よりも、優先度が低いアクセス対象関数の方が早く対象データへアクセスしてしまう事態の発生を抑制することができる。
以上説明した実施形態において、S87は高優先処理判断部および高優先処理選択部としての処理に相当する。
以上、本開示の一実施形態について説明したが、本開示は上記実施形態に限定されるものではなく、種々変形して実施することができる。
[変形例1]
例えば上記実施形態では、平均ロック時間を算出して記憶する形態を示した。しかし、算出された最新のロック時間を記憶し、この最新のロック時間とロック経過時間との差をロック残時間とするようにしてもよい。または、固定値としてのロック時間を予め計算した後に記憶し、この固定値としてのロック時間とロック経過時間との差をロック残時間とするようにしてもよい。
[変形例2]
上記実施形態では、関数が共有データにアクセスする形態を示したが、関数に限定されるものではなく、共有データにアクセスする処理であればよい。共有データにアクセスする処理として、例えば、タスクが挙げられる。
[変形例3]
上記実施形態では、ロックフラグが共有RAM9に記憶される形態を示したが、ロックフラグが記憶されるのは共有RAMに限定されるものではなく、複数のCPUがそれぞれロックの獲得および解放を適切に実行することができればよい。例えば、ロックフラグをマイコンのレジスタに記憶するようにしてもよい。
また、上記実施形態における1つの構成要素が有する機能を複数の構成要素に分担させたり、複数の構成要素が有する機能を1つの構成要素に発揮させたりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加、置換等してもよい。なお、特許請求の範囲に記載の文言から特定される技術思想に含まれるあらゆる態様が本開示の実施形態である。
上述したマイコン1の他、当該マイコン1を構成要素とするシステム、当該マイコン1としてコンピュータを機能させるためのプログラム、このプログラムを記録した媒体、情報処理方法など、種々の形態で本開示を実現することもできる。
1…マイコン、2,3,4…CPU、9…共有RAM

Claims (2)

  1. CPU(2,3,4)を複数搭載する情報処理装置(1)であって、
    前記情報処理装置は、複数の前記CPUの間で共有する必要があるデータとして予め設定された複数の共有データを記憶するように構成された共有記憶部(9)を備え、
    複数の前記CPUはそれぞれ、
    複数の前記共有データの何れか一つにアクセスするときに、アクセスする対象となる前記共有データである対象データが他の前記CPUによって使用中である使用中状態であるか否かを判断するように構成された使用判断部(S10,S20)と、
    前記使用中状態において前記対象データにアクセスしている処理である対象データ使用処理の開始から終了までに要する使用時間を、前記対象データ使用処理を示す処理識別情報と対応付けて記憶するように構成された時間記憶部(S30~S70)と、
    前記使用中状態であると前記使用判断部が判断した場合に、前記対象データ使用処理を示す処理識別情報と対応付けられている前記使用時間と、前記対象データ使用処理の開始から現時点までの使用経過時間との差が小さいことを示す予め設定された使用判断条件が成立したか否かを判断するように構成された時間判断部(S90~S120)と、
    前記使用判断条件が成立したと前記時間判断部が判断した場合に、前記使用中状態ではないと判断するまで前記使用判断部による判断を繰り返し実行させるように構成された判断継続部(S150,S160)と、
    前記使用判断条件が成立していないと前記時間判断部が判断した場合に、自身の前記CPUにおいて前記対象データにアクセスしようとしている処理であるアクセス対象処理を一旦中断させて、前記アクセス対象処理とは異なる他処理を実行させるように構成された処理切替部(S130)と、
    前記使用中状態であると前記使用判断部が判断した場合に、前記対象データへのアクセスを待機しており且つ自身の前記CPUよりも高い優先度が設定されている他の前記CPUである高優先待機CPUが存在するか否かを判断するように構成された高優先CPU判断部(S84)と、
    前記高優先待機CPUが存在しないと前記高優先CPU判断部が判断した場合には、前記時間判断部による判断を実行させ、前記高優先待機CPUが存在すると前記高優先CPU判断部が判断した場合には、前記アクセス対象処理を一旦中断させて前記他処理を実行させるように構成された高優先CPU選択部(S84)と
    を備える情報処理装置。
  2. CPU(2,3,4)を複数搭載する情報処理装置(1)であって、
    前記情報処理装置は、複数の前記CPUの間で共有する必要があるデータとして予め設定された複数の共有データを記憶するように構成された共有記憶部(9)を備え、
    複数の前記CPUはそれぞれ、
    複数の前記共有データの何れか一つにアクセスするときに、アクセスする対象となる前記共有データである対象データが他の前記CPUによって使用中である使用中状態であるか否かを判断するように構成された使用判断部(S10,S20)と、
    前記使用中状態において前記対象データにアクセスしている処理である対象データ使用処理の開始から終了までに要する使用時間を、前記対象データ使用処理を示す処理識別情報と対応付けて記憶するように構成された時間記憶部(S30~S70)と、
    前記使用中状態であると前記使用判断部が判断した場合に、前記対象データ使用処理を示す処理識別情報と対応付けられている前記使用時間と、前記対象データ使用処理の開始から現時点までの使用経過時間との差が小さいことを示す予め設定された使用判断条件が成立したか否かを判断するように構成された時間判断部(S90~S120)と、
    前記使用判断条件が成立したと前記時間判断部が判断した場合に、前記使用中状態ではないと判断するまで前記使用判断部による判断を繰り返し実行させるように構成された判断継続部(S150,S160)と、
    前記使用判断条件が成立していないと前記時間判断部が判断した場合に、自身の前記CPUにおいて前記対象データにアクセスしようとしている処理であるアクセス対象処理を一旦中断させて、前記アクセス対象処理とは異なる他処理を実行させるように構成された処理切替部(S130)と、
    前記使用中状態であると前記使用判断部が判断した場合に、前記対象データへのアクセスを待機しており且つ自身の前記CPUの前記アクセス対象処理よりも高い優先度が設定されている処理である高優先待機処理が存在するか否かを判断するように構成された高優先処理判断部(S87)と、
    前記高優先待機処理が存在しないと前記高優先処理判断部が判断した場合には、前記時間判断部による判断を実行させ、前記高優先待機処理が存在すると前記高優先処理判断部が判断した場合には、前記アクセス対象処理を一旦中断させて前記他処理を実行させるように構成された高優先処理選択部(S87)と
    を備える情報処理装置。
JP2017238930A 2017-12-13 2017-12-13 情報処理装置 Active JP6992471B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017238930A JP6992471B2 (ja) 2017-12-13 2017-12-13 情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017238930A JP6992471B2 (ja) 2017-12-13 2017-12-13 情報処理装置

Publications (2)

Publication Number Publication Date
JP2019106066A JP2019106066A (ja) 2019-06-27
JP6992471B2 true JP6992471B2 (ja) 2022-01-13

Family

ID=67061944

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017238930A Active JP6992471B2 (ja) 2017-12-13 2017-12-13 情報処理装置

Country Status (1)

Country Link
JP (1) JP6992471B2 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010191575A (ja) 2009-02-17 2010-09-02 Panasonic Corp 資源排他制御方法および資源排他制御装置
JP2011175378A (ja) 2010-02-23 2011-09-08 Renesas Electronics Corp マルチプロセッサシステム、及びマルチプロセッサシステムの動作方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0381859A (ja) * 1989-08-25 1991-04-08 Nec Corp マルチプロセッサシステム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010191575A (ja) 2009-02-17 2010-09-02 Panasonic Corp 資源排他制御方法および資源排他制御装置
JP2011175378A (ja) 2010-02-23 2011-09-08 Renesas Electronics Corp マルチプロセッサシステム、及びマルチプロセッサシステムの動作方法

Also Published As

Publication number Publication date
JP2019106066A (ja) 2019-06-27

Similar Documents

Publication Publication Date Title
CN101529383B (zh) 任务处理装置
KR20090005921A (ko) 대칭적 다중 프로세서 시스템에서의 로드 밸런싱 방법 및장치
US20090059951A1 (en) Program control device
US20110107344A1 (en) Multi-core apparatus and load balancing method thereof
US9164799B2 (en) Multiprocessor system
JP2007207026A (ja) Dma転送装置
US10642658B2 (en) Vehicle control apparatus
JP6992471B2 (ja) 情報処理装置
JP2014182507A (ja) 計算機及び排他制御方法及び排他制御プログラム
US20150277973A1 (en) System and method for conditional task switching during ordering scope transitions
CN107924322B (zh) 用于硬件虚拟化支持的设备和方法
CN114490133A (zh) 数据获取方法和装置、电子设备、处理系统
JP2018106472A (ja) 制御装置
JP5676664B2 (ja) リソース管理装置、リソースの管理方法、及びプログラム
JP2012226709A (ja) 排他制御装置、マイコン
JP2007219800A (ja) 並列処理装置及び排他制御方法
TW201926036A (zh) 半導體裝置
JP2010026575A (ja) スケジューリング方法およびスケジューリング装置並びにマルチプロセッサシステム
JP6865707B2 (ja) 車両用制御装置
JPH0644234B2 (ja) タスク管理装置
JP6545399B2 (ja) 情報処理装置、情報処理方法および情報処理プログラム
JP2560620B2 (ja) 時間制限付排他制御装置
US20200327067A1 (en) Packet processing device, packet processing method, and recording medium
JP2003076669A (ja) マルチプロセッサ構成制御装置
JPH03174647A (ja) マルチプロセッサ制御方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210922

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210928

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211027

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211122

R151 Written notification of patent or utility model registration

Ref document number: 6992471

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151