JP2011175378A - マルチプロセッサシステム、及びマルチプロセッサシステムの動作方法 - Google Patents
マルチプロセッサシステム、及びマルチプロセッサシステムの動作方法 Download PDFInfo
- Publication number
- JP2011175378A JP2011175378A JP2010037852A JP2010037852A JP2011175378A JP 2011175378 A JP2011175378 A JP 2011175378A JP 2010037852 A JP2010037852 A JP 2010037852A JP 2010037852 A JP2010037852 A JP 2010037852A JP 2011175378 A JP2011175378 A JP 2011175378A
- Authority
- JP
- Japan
- Prior art keywords
- lock
- period
- waiting
- acquisition
- holding period
- 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.)
- Withdrawn
Links
Images
Landscapes
- Power Sources (AREA)
Abstract
【課題】CPU資源が浪費され続けてしまうことの防止できる、マルチプロセッサシステムを提供する。
【解決手段】ロック取得要求を受け付け、前記ロック取得要求に応じて、取得対象資源に対応するロックの取得を試みる、ロック取得手段と、前記ロック取得手段がロックの取得に失敗した場合に、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定する、待ち方式決定手段と、コンテキストスイッチ期間と、ロック保持期間とを比較するロック保持期間判別手段とを具備する。前記待ち方式決定手段は、前記ロック保持期間判別手段による比較結果に基づいて、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定する。
【選択図】図1
【解決手段】ロック取得要求を受け付け、前記ロック取得要求に応じて、取得対象資源に対応するロックの取得を試みる、ロック取得手段と、前記ロック取得手段がロックの取得に失敗した場合に、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定する、待ち方式決定手段と、コンテキストスイッチ期間と、ロック保持期間とを比較するロック保持期間判別手段とを具備する。前記待ち方式決定手段は、前記ロック保持期間判別手段による比較結果に基づいて、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定する。
【選択図】図1
Description
本発明は、マルチプロセッサシステム、及びマルチプロセッサシステムの動作方法に関する。
共有メモリを有したマルチプロセッサシステムにおいて、排他制御のために、ロック方式が提案されている。ロック方式としては、大別して、スピンロック方式とスリープロック方式とが知られている。スピンロック方式では、プロセスがロックを取れるまで、ロック変数にアクセスをし続ける。スリープロック方式では、ロックが取得できなかった場合にプロセスがスリープし、ロックが解放された時にプロセスが起床してロックを取得する。
スピンロック方式では、プロセッサがビジーウェイトしている期間が長くなり、プロセッサが浪費されることになる。一方、スリープロック方式では、プロセッサの浪費が抑えられる。しかし、スリープ時及び起床時において、プロセスがレジスタに退避させられたり、レジスタからプロセスが復帰させられる。そのため、プロセッサ実行時間を要する。
従って、状況に応じて、ロック方式を使い分けることが望まれる。
関連技術が、特許文献1(特開平7−319716)に記載されている。特許文献1には、ロックの取得に失敗した場合、ロックを取得しているプロセスの実行状態を調べ、実行状態であればビジーウェイトによってロックが開放されるのを待ち、実行状態でなければスリープさせる点が記載されている。また、特許文献1には、ロックの取得に失敗した場合に、ロックの開放を待っている他のスリーププロセスの数を調べ、これが0であればビジーウェイトによって待機し、1以上であればスリープさせる点が記載されている。
しかしながら、特許文献1に記載された技術では、CPU資源が浪費され続ける場合がある。
具体的には、ロックを取得しているプロセスの実行状態に基づいてビジーウェイトとするかスリープとするかを決定した場合には、ロックを取得しているプロセスが実行状態であれば、ビジーウェイトに設定されてしまう。従って、ロックを取得しているプロセスが長期間ロックを保持し続けた場合、ビジーウェイト状態が長期間続いてしまう。そのため、CPU資源が浪費され続けてしまう。
また、他のスリーププロセスの数に基づいてビジーウェイトとするかスリープとするかを決定した場合、他のスリーププロセスの数が0であれば、ビジーウェイトに設定されてしまう。そのため、ロックを取得しているプロセスが長期間ロックを保持し続けた場合、ビジーウェイト状態が長期間続いてしまう。その結果、CPU資源が浪費され続けてしまう、という問題点があった。
本発明に係るマルチプロセッサシステムは、複数のCPUのいずれかにより実行される処理対象プロセスからロック取得要求を受け付け、前記ロック取得要求に応じて、取得対象資源に対応するロックの取得を試みる、ロック取得手段と、前記ロック取得手段がロックの取得に失敗した場合に、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定する、待ち方式決定手段と、コンテキストスイッチ期間を示す情報を、コンテキストスイッチ期間情報として格納する、コンテキストスイッチ期間格納手段と、前記取得対象資源に対応するロックがプロセスによって保持される期間を示す情報を、ロック保持期間情報として格納する、ロック保持期間格納手段と、前記コンテキストスイッチ期間と、前記ロック保持期間とを比較するロック保持期間判別手段とを具備する。前記待ち方式決定手段は、前記ロック保持期間判別手段による比較結果に基づいて、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定する。
本発明に係るマルチプロセッサシステムの動作方法は、複数のCPUのいずれかにより実行される処理対象プロセスからロック取得要求を受け付け、前記ロック取得要求に応じて、取得対象資源に対応するロックの取得を試みるステップと、前記ロック取得手段がロックの取得に失敗した場合に、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定するステップと、コンテキストスイッチ期間を示す情報を、コンテキストスイッチ期間情報として格納するステップと、前記取得対象資源に対応するロックがプロセスによって保持される期間を示す情報を、ロック保持期間情報として格納するステップと、前記コンテキストスイッチ期間と、前記ロック保持期間とを比較するステップとを具備する。前記決定するステップは、前記比較するステップにおける比較結果に基づいて、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定するステップを備えている。
本発明によれば、CPU資源の浪費を防止することのできる、マルチプロセッサシステム及びマルチプロセッサシステムの動作方法が提供される。
以下に、図面を参照しつつ、本発明の実施形態について説明する。
(第1の実施形態)
図1は、本実施形態に係るマルチプロセッサシステム1を示すブロック図である。図1に示されるように、マルチプロセッサシステム1は、複数のCPU2(2−1〜2−4)、及びメモリ4を備えている。複数のCPU2は、メモリ4とアクセス可能に接続されている。
図1は、本実施形態に係るマルチプロセッサシステム1を示すブロック図である。図1に示されるように、マルチプロセッサシステム1は、複数のCPU2(2−1〜2−4)、及びメモリ4を備えている。複数のCPU2は、メモリ4とアクセス可能に接続されている。
複数のCPU2の各々は、フリーランカウンタ3(3−1〜3−4)を備えている。フリーランカウンタ3は、カウント値を保持するタイマー機能を有している。フリーランカウンタ3は、メモリに格納されたソフトウェアの動作と関係なく動作し、CPU2の動作クロック等に応じてカウント値を一定速度で増減させる。フリーランカウンタ3が保持するカウント値は、ソフトウェアから任意のタイミングで読み出すことができる。
メモリ4は、複数の資源10、排他処理コンポーネント5、プロセススケジューラ6、プロセッサ待ち行列制御部7、ロックオブジェクト管理テーブル11、及びロック待ち行列制御部9を備えている。排他処理コンポーネント5、プロセススケジューラ6、プロセッサ待ち行列制御部7、及びロック待ち行列制御部9は、メモリに格納されたソフトウェアが各CPU2によって実行されることにより、実現される。
ロックオブジェクト管理テーブル11は、複数の資源10に対応する、複数のロックオブジェクト12を有している。各ロックオブジェクト12は、対応する資源10のロックを管理している。各ロックオブジェクト12は、ロック保持期間情報13を含んでいる。ロック保持期間情報13は、各資源10に対応するロックがプロセスによって保持される期間の予測値を示す情報である。本実施形態では、ロック保持期間情報13として、前回においてロックがプロセスに保持されていた期間を示す情報が用いられる。
ロック待ち行列制御部9は、ロックオブジェクト12に対応して設けられている。ロック待ち行列制御部9は、ロックが開放されるのをスリープ状態で待機しているプロセス群8の行列を管理している。
プロセッサ待ち行列制御部7は、各CPU2が開放されるのを待機しているプロセス群8の行列を管理している。
プロセススケジューラ6は、プロセッサ待ち行列制御部7を制御する機能を有している。プロセススケジューラ6は、CPU2が開放されると、プロセッサ待ち行列制御部7によって管理されるプロセス群8の中から次のプロセス8を選択し、選択したプロセス8を開放されたCPU2によって実行させる。
排他処理コンポーネント5は、プロセス8がロック取得要求を発行すると、ロックオブジェクト管理テーブル11にアクセスして、ロックを取得する。また、排他処理コンポーネント5は、プロセスがロック開放要求を発行すると、ロックオブジェクト管理テーブル11にアクセスして、ロックを開放する。また、排他処理コンポーネント5は、ロックの取得に失敗した場合に、プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定する。
排他処理コンポーネント5は、ロック取得ルーチン14、ロック開放ルーチン15、ロック保持プロセス実行状態判別部16、ロック保持期間判別部18、待ち方式決定部20、及びコンテキストスイッチ期間格納部19を有している。
ロック取得ルーチン14は、ロック取得要求が発行された場合に、ロックの取得を試みる機能を有している。
ロック開放ルーチン15は、ロックを保持しているプロセスがロック開放要求を発行した場合に、ロックを開放する機能を有している。
ロック保持プロセス実行状態判別部16は、ロックを保持しているプロセス(ロック保持プロセス)が、実行状態にあるのか否かを判別する機能を有している。
コンテキストスイッチ期間格納部19は、コンテキストスイッチ期間情報を格納する部分である。コンテキストスイッチ期間情報は、コンテキストスイッチ期間を示す情報である。コンテキストスイッチ期間は、CPUを占有するプロセスを別のプロセスに切り替えるために必要な期間である。
ロック保持期間判別部18は、ロック保持期間情報13に示されるロック保持期間と、コンテキストスイッチ期間情報に示されるコンテキストスイッチ期間とを比較する機能を有している。
待ち方式決定部20は、ロックの取得が失敗した場合に、プロセスの待ち方式を決定する機能を有している。待ち方式決定部20は、ロック保持プロセス実行状態判別部16による判別結果、及びロック保持期間判別部18による比較結果に基づいて、プロセスの待ち方式を決定する。
続いて、本実施形態に係るマルチプロセッサシステム1の動作方法について説明する。図2A及び図2Bは、マルチプロセッサシステム1の動作方法を示すフローチャートである。
ステップS1;ロック取得
プロセス8は、各CPU2によって実行されると、資源10(取得対象資源)に対応するロックを取得する旨を示すロック取得要求を、排他処理コンポーネント5に対して発行する。排他処理コンポーネント5では、ロック取得要求に応じて、ロック取得ルーチン14が動作する。ロック取得ルーチン14は、ロックオブジェクト管理テーブル11にアクセスし、ロック取得要求を発行したプロセス8(以下、処理対象プロセスと称す)のために、ロックの取得を試みる。
プロセス8は、各CPU2によって実行されると、資源10(取得対象資源)に対応するロックを取得する旨を示すロック取得要求を、排他処理コンポーネント5に対して発行する。排他処理コンポーネント5では、ロック取得要求に応じて、ロック取得ルーチン14が動作する。ロック取得ルーチン14は、ロックオブジェクト管理テーブル11にアクセスし、ロック取得要求を発行したプロセス8(以下、処理対象プロセスと称す)のために、ロックの取得を試みる。
ここで、ロックの取得に失敗した場合には、ステップS10−1以降の処理が実行され、ロックの取得に成功した場合には、ステップS2以降の処理が実行される。
まず、ロックの取得に成功した場合の動作について説明する。
ステップS2;ロック保持時間計測開始
ロックの取得に成功した場合、ロック取得ルーチン14は、ロック保持期間の計測を開始する。具体的には、ロック取得ルーチン14は、各CPU2からフリーランカウンタ3に記されるカウント値を読み込む。
ロックの取得に成功した場合、ロック取得ルーチン14は、ロック保持期間の計測を開始する。具体的には、ロック取得ルーチン14は、各CPU2からフリーランカウンタ3に記されるカウント値を読み込む。
ステップS3;ロック確保
ロック取得ルーチン14は、ロックを確保する。処理対象プロセスは、ロックを確保し、対応する資源10を用いて処理を行う。
ロック取得ルーチン14は、ロックを確保する。処理対象プロセスは、ロックを確保し、対応する資源10を用いて処理を行う。
ステップS4;ロック開放要求
その後、処理対象プロセスは、資源10を用いた処理が終了すると、排他処理コンポーネント5に対して、ロック開放要求を発行する。
その後、処理対象プロセスは、資源10を用いた処理が終了すると、排他処理コンポーネント5に対して、ロック開放要求を発行する。
ステップS5;ロック保持期間計測終了
排他処理コンポーネント5は、ロック開放要求を受け付けると、ロック開放ルーチン15を実行する。ロック開放ルーチン15は、各CPU2からフリーランカウンタ3に記されるカウント値を読み込む。そして、ロック開放ルーチン15は、読み込んだカウント値と、ステップS2で取得された計測開始時のカウント値との差分を計算する。
排他処理コンポーネント5は、ロック開放要求を受け付けると、ロック開放ルーチン15を実行する。ロック開放ルーチン15は、各CPU2からフリーランカウンタ3に記されるカウント値を読み込む。そして、ロック開放ルーチン15は、読み込んだカウント値と、ステップS2で取得された計測開始時のカウント値との差分を計算する。
ステップS6;ロック保持期間計測保存
ロック開放ルーチン15は、ステップS5で計算した差分値を、ロック保持期間情報13として、対応するロックオブジェクト12に書き込む。これにより、ロック保持期間情報13としては、前回において対応する資源10がプロセスにより保持されていた期間が、格納されることになる。
ロック開放ルーチン15は、ステップS5で計算した差分値を、ロック保持期間情報13として、対応するロックオブジェクト12に書き込む。これにより、ロック保持期間情報13としては、前回において対応する資源10がプロセスにより保持されていた期間が、格納されることになる。
ステップS7;ロック開放
更に、ロック開放ルーチン15は、処理対象プロセスから、ロックを開放する。
更に、ロック開放ルーチン15は、処理対象プロセスから、ロックを開放する。
ステップS8;スリープしているプロセスを起こす
その後、ロック開放ルーチン15は、ロック待ち行列制御部9にアクセスし、対応するロックが開放されるのを待機しているプロセス8を起床させる。これにより、起床したプロセス8が、CPU2によって実行され、開放されたロックを取得する。
その後、ロック開放ルーチン15は、ロック待ち行列制御部9にアクセスし、対応するロックが開放されるのを待機しているプロセス8を起床させる。これにより、起床したプロセス8が、CPU2によって実行され、開放されたロックを取得する。
次いで、ステップS1において、ロックの取得が失敗した場合の動作について説明する。
ステップS10−1;ロック保持プロセスの状態を判別
一方、ステップS1において、ロックの取得が失敗した場合には、ロック保持プロセス実行状態判別部16が、取得対象のロックを保持しているプロセス(ロック保持プロセス)の実行状態を判別する。すなわち、ロック保持プロセスの状態が実行中であるか否かが判別される。そして、判別結果が待ち方式決定部20に通知される。ロック保持プロセスが実行中であれば、次のステップS11の処理が行われ、実行中でなければステップS12の処理が行われる。
一方、ステップS1において、ロックの取得が失敗した場合には、ロック保持プロセス実行状態判別部16が、取得対象のロックを保持しているプロセス(ロック保持プロセス)の実行状態を判別する。すなわち、ロック保持プロセスの状態が実行中であるか否かが判別される。そして、判別結果が待ち方式決定部20に通知される。ロック保持プロセスが実行中であれば、次のステップS11の処理が行われ、実行中でなければステップS12の処理が行われる。
ステップS11;ロック保持期間とコンテキストスイッチ期間との比較
ロック保持プロセスの状態が実行中である場合には、ロック保持期間判別部18が、取得対象のロックに対応するロック保持期間情報12と、コンテキストスイッチ期間格納部19に格納されたコンテキストスイッチ期間情報とを取得する。そして、ロック保持期間判別部18は、ロック保持期間とコンテキストスイッチ期間とを比較する。比較結果は、待ち方式決定部20に通知される。ロック保持期間がコンテキストスイッチ期間よりも短い場合、ステップS13の処理が行われる。ロック保持期間がコンテキストスイッチ期間よりも長い場合、ステップS12の処理が行われる。
ロック保持プロセスの状態が実行中である場合には、ロック保持期間判別部18が、取得対象のロックに対応するロック保持期間情報12と、コンテキストスイッチ期間格納部19に格納されたコンテキストスイッチ期間情報とを取得する。そして、ロック保持期間判別部18は、ロック保持期間とコンテキストスイッチ期間とを比較する。比較結果は、待ち方式決定部20に通知される。ロック保持期間がコンテキストスイッチ期間よりも短い場合、ステップS13の処理が行われる。ロック保持期間がコンテキストスイッチ期間よりも長い場合、ステップS12の処理が行われる。
ステップS12;スリープロック方式で待機
ステップS10−1においてロック保持プロセスが実行中でない場合、若しくは、ステップS11においてロック保持期間がコンテキストスイッチ期間よりも長かった場合、待ち方式決定部20は、処理対象プロセスをスリープロック方式で待機させることを決定する。すなわち、待ち方式決定部20は、処理対象プロセスをスリープ状態に設定する。処理対象プロセスは、スリープ状態に設定され、ロック待ち行列制御部9によって管理される。処理対象プロセスを実行していたCPU2は開放され、プロセッサ待ち行列制御部7によって管理されているプロセス8群のうちの先頭のプロセスを実行する。
ステップS10−1においてロック保持プロセスが実行中でない場合、若しくは、ステップS11においてロック保持期間がコンテキストスイッチ期間よりも長かった場合、待ち方式決定部20は、処理対象プロセスをスリープロック方式で待機させることを決定する。すなわち、待ち方式決定部20は、処理対象プロセスをスリープ状態に設定する。処理対象プロセスは、スリープ状態に設定され、ロック待ち行列制御部9によって管理される。処理対象プロセスを実行していたCPU2は開放され、プロセッサ待ち行列制御部7によって管理されているプロセス8群のうちの先頭のプロセスを実行する。
ステップS13;ビジーウェイトにより待機
一方、ステップS11において、ロック保持期間がコンテキストスイッチ期間よりも短い場合、待ち方式決定部20は、スピンロック方式によって、処理対象プロセスを待機させる。すなわち、処理対象プロセスは、ビジーウェイトに設定される。処理対象プロセスは、CPU2を占有したまま、ロックの取得を繰り返す。そして、ロック取得が成功すると、ステップS2以降の処理が実行される。
一方、ステップS11において、ロック保持期間がコンテキストスイッチ期間よりも短い場合、待ち方式決定部20は、スピンロック方式によって、処理対象プロセスを待機させる。すなわち、処理対象プロセスは、ビジーウェイトに設定される。処理対象プロセスは、CPU2を占有したまま、ロックの取得を繰り返す。そして、ロック取得が成功すると、ステップS2以降の処理が実行される。
以上説明したように、本実施形態によれば、ロック保持プロセスが実行中であり、ロック保持期間がコンテキストスイッチ期間よりも短い場合に、ロックの取得に失敗した処理対象プロセスがスピンロック方式で待機させられる。一方、ロック保持プロセスが実行中でない場合、及びロック保持期間がコンテキストスイッチ期間よりも長い場合には、処理対象プロセスがスリープロック方式で待機させられる。ロック保持期間がコンテキストスイッチ期間よりも長い場合、処理対象プロセスが占有するCPU2を別のプロセスに明け渡した方が、CPU資源の浪費を抑えることができると考えられる。一方、ロック保持期間がコンテキストスイッチ期間よりも短ければ、CPU2を別のプロセスに明け渡すよりも、ビジーウェイトによりロックが開放されるのを待つ方が、CPU2の浪費を抑えることができると考えられる。本実施形態によれば、ロック保持期間とコンテキストスイッチ期間との比較結果に基づいて、スピンロック方式を採用するかスリープロック方式を採用するかが決定される。従って、ロックが開放される見込みがないのにもかかわらず、処理対象プロセスがビジーウェイトに設定され続けるのを防止することができ、CPU資源が浪費されることを防止できる。
組み込みシステム等においては、マルチプロセッサのCPU総数が少ないほど、全体に対する1つのCPUの価値は大きい。そのため、CPUがビジーウェイト状態に設定され続けてしまう重みは大きい。本実施形態によれば、CPU資源の浪費が抑えられるため、マルチプロセッサシステムに含まれるCPUの総数が少ない場合において、特に有効な効果を奏する。
尚、本実施形態では、ロック保持期間情報13として、前回においてロックがプロセスによって保持されていた期間を示す情報が採用される場合について説明した。但し、ロック保持期間情報13としては、ロックがプロセスによって保持される期間の予測値を示す情報であれば、これに限定されない。例えば、ロックが過去に複数回保持されていた場合、ロック保持期間情報13として、ロックが過去に保持されていた複数の期間の平均値が採用されてもよい。また、ロックが過去に複数回保持されていた場合、ロック保持期間情報として、古い期間よりも新しい期間が重視されるような重み付けを用いて求められた値が、採用されてもよい。
(第2の実施形態)
続いて、第2の実施形態について説明する。図3は、本実施形態に係るマルチプロセッサシステムを概略的に示すブロック図である。本実施形態では、第1の実施形態におけるロック保持プロセス実行判定部16の代わりに、ロック待ちプロセス数判別部17が用いられる。その他の点については、第1の実施形態と同様の構成を採用することができるので、詳細な説明は省略する。
続いて、第2の実施形態について説明する。図3は、本実施形態に係るマルチプロセッサシステムを概略的に示すブロック図である。本実施形態では、第1の実施形態におけるロック保持プロセス実行判定部16の代わりに、ロック待ちプロセス数判別部17が用いられる。その他の点については、第1の実施形態と同様の構成を採用することができるので、詳細な説明は省略する。
ロック待ちプロセス数判別部17は、ロック待ち行列制御部9にアクセスして、取得対象のロックが開放されるのをスリープ状態で待機しているプロセスの数を判別する機能を有している。
図4は、本実施形態に係るマルチプロセッサシステム1の動作方法を示すフローチャートである。本実施形態では、ロック取得要求が発行された場合に、ロック取得ルーチン14が、ロックの取得を試みる(ステップS1)。ロックの取得が成功した場合には、第1の実施形態と同様の処理が行われる。
ステップS1においてロックの取得が失敗した場合には、ロック待ちプロセス数判別部17が、取得対象のロックが開放されるのをスリープ状態で待機しているプロセス8の数を判別する。ロック待ちプロセス数判別部17は、ロック待ち行列制御部9にアクセスすることにより、待機中のプロセス8の数を判別する(ステップS10−2)。そして、待機中のプロセス8の数が1以上であった場合には、処理対象プロセスがスリープ状態に設定される(ステップS12)。一方、待機中のプロセス8の数がゼロであった場合には、ロック保持期間とコンテキストスイッチ期間とが比較される(ステップS11)。以降の処理は、第1の実施形態と同様である。
本実施形態によれば、待機中のプロセス8の数が1以上である場合には、スリープ状態に設定される。待機中のプロセス8が存在する場合には、取得対象のロックが処理対象プロセスによって使用可能な状態になるまでに、長い時間を要すると考えられる。従って、待機中のプロセス8の数が1以上である場合にスリープ状態に設定することによって、CPUを別のプロセスに明け渡し、CPU資源の浪費を抑えることができる。
以上、本発明について、第1および第2の実施形態を用いて説明した。尚、これらの実施形態は互いに矛盾するものではなく、互いに組み合わせて用いることも可能である。すなわち、マルチプロセッサシステム1が、第1の実施形態におけるロック保持プロセス実行状態判別部16と、第2の実施形態におけるロック待ちプロセス数判別部17との両方を備えていてもよい。
1 マルチプロセッサシステム
2(2−1〜2−4) CPU
3(3−1〜3−4) フリーランカウンタ
4 メモリ
5 排他処理コンポーネント
6 プロセススケジューラ
7 プロセッサ待ち行列制御部
8 プロセス
9 ロック待ち行列制御部
10 資源
11 ロックオブジェクト管理テーブル
12 ロックオブジェクト
13 ロック保持期間格納部
14 ロック取得ルーチン(ロック取得手段)
15 ロック開放ルーチン
16 ロック保持プロセス実行状態判別部
17 ロック待ちプロセス数判別部
18 ロック保持期間判別部
19 コンテキストスイッチ期間格納部
20 待ち方式決定部
2(2−1〜2−4) CPU
3(3−1〜3−4) フリーランカウンタ
4 メモリ
5 排他処理コンポーネント
6 プロセススケジューラ
7 プロセッサ待ち行列制御部
8 プロセス
9 ロック待ち行列制御部
10 資源
11 ロックオブジェクト管理テーブル
12 ロックオブジェクト
13 ロック保持期間格納部
14 ロック取得ルーチン(ロック取得手段)
15 ロック開放ルーチン
16 ロック保持プロセス実行状態判別部
17 ロック待ちプロセス数判別部
18 ロック保持期間判別部
19 コンテキストスイッチ期間格納部
20 待ち方式決定部
Claims (7)
- 複数のCPUのいずれかにより実行される処理対象プロセスからロック取得要求を受け付け、前記ロック取得要求に応じて、取得対象資源に対応するロックの取得を試みる、ロック取得手段と、
前記ロック取得手段がロックの取得に失敗した場合に、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定する、待ち方式決定手段と、
コンテキストスイッチ期間を示す情報を、コンテキストスイッチ期間情報として格納する、コンテキストスイッチ期間格納手段と、
前記取得対象資源に対応するロックがプロセスによって保持される期間を示す情報を、ロック保持期間情報として格納する、ロック保持期間格納手段と、
前記コンテキストスイッチ期間と、前記ロック保持期間とを比較するロック保持期間判別手段と、
を具備し、
前記待ち方式決定手段は、前記ロック保持期間判別手段による比較結果に基づいて、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定する
マルチプロセッサシステム。 - 請求項1に記載されたマルチプロセッサシステムであって、
前記ロック保持期間格納手段は、前記ロック保持期間情報として、前記取得対象資源に対応するロックが前回に保持されていた期間を示す情報を格納する
マルチプロセッサシステム。 - 請求項1に記載されたマルチプロセッサシステムであって、
前記取得対象資源に対応するロックが過去に複数回保持されていた場合、前記ロック保持期間格納手段は、ロックが過去に保持されていた複数の期間の平均値を、前記ロック保持期間情報として格納する
マルチプロセッサシステム。 - 請求項1に記載されたマルチプロセッサシステムであって、
前記取得対象資源に対応するロックが過去に複数回保持されていた場合、前記ロック保持期間格納手段は、ロックが過去に保持されていた複数の過去期間に基づいて求められた値を、前記ロック保持期間情報として格納し、
前期ロック保持期間格納手段は、前記複数の過去期間のうち、古い期間よりも新しい期間を重視する重み付けを用いて求められた値を、前記ロック保持期間情報として格納する
マルチプロセッサシステム。 - 請求項1乃至4のいずれかに記載されたマルチプロセッサシステムであって、
更に、
前記取得対象資源に対応するロックを取得している保持プロセスが実行中であるか否かを判別し、判別結果を前記待ち方式決定手段に通知する、実行状態判別手段、
を具備し、
前記待ち方式決定手段は、前記保持プロセスが実行中ではない場合に、前記処理対象プロセスをスピンロック方式で待機させる
マルチプロセッサシステム。 - 請求項1乃至5のいずれかに記載されたマルチプロセッサシステムであって、
更に、
前記取得対象資源に対応するロックが開放されるのを待機している待機プロセスの数を、予め設定された基準値と比較し、比較結果を前記待ち方式決定手段に通知する、ロック待ちプロセス数判別手段、
を具備し、
前記待ち方式決定手段は、前記待機プロセスの数が前記基準値よりも大きい場合に、前記処理対象プロセスをスリープロック方式で待機させる
マルチプロセッサシステム。 - 複数のCPUのいずれかにより実行される処理対象プロセスからロック取得要求を受け付け、前記ロック取得要求に応じて、取得対象資源に対応するロックの取得を試みるステップと、
前記ロック取得手段がロックの取得に失敗した場合に、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定するステップと、
コンテキストスイッチ期間を示す情報を、コンテキストスイッチ期間情報として格納するステップと、
前記取得対象資源に対応するロックがプロセスによって保持される期間を示す情報を、ロック保持期間情報として格納するステップと、
前記コンテキストスイッチ期間と、前記ロック保持期間とを比較するステップと、
を具備し、
前記決定するステップは、前記比較するステップにおける比較結果に基づいて、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定するステップを備えている
マルチプロセッサシステムの動作方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010037852A JP2011175378A (ja) | 2010-02-23 | 2010-02-23 | マルチプロセッサシステム、及びマルチプロセッサシステムの動作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010037852A JP2011175378A (ja) | 2010-02-23 | 2010-02-23 | マルチプロセッサシステム、及びマルチプロセッサシステムの動作方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011175378A true JP2011175378A (ja) | 2011-09-08 |
Family
ID=44688186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010037852A Withdrawn JP2011175378A (ja) | 2010-02-23 | 2010-02-23 | マルチプロセッサシステム、及びマルチプロセッサシステムの動作方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011175378A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016062388A (ja) * | 2014-09-19 | 2016-04-25 | 日本電気株式会社 | 情報処理装置、情報処理方法及びそのプログラム |
JP2017504887A (ja) * | 2013-12-18 | 2017-02-09 | オラクル・インターナショナル・コーポレイション | コンピューティング環境においてアダプティブビジーウェイトをサポートするためのシステムおよび方法 |
JP2017527025A (ja) * | 2014-08-05 | 2017-09-14 | クアルコム,インコーポレイテッド | マルチプロセッサシステムのための指向性イベントシグナリング |
JP2019106066A (ja) * | 2017-12-13 | 2019-06-27 | 株式会社デンソー | 情報処理装置 |
DE102022213686A1 (de) | 2021-12-20 | 2023-06-22 | Renesas Electronics Corporation | Halbleitervorrichtung, steuerverfahren für diese, und programm |
-
2010
- 2010-02-23 JP JP2010037852A patent/JP2011175378A/ja not_active Withdrawn
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017504887A (ja) * | 2013-12-18 | 2017-02-09 | オラクル・インターナショナル・コーポレイション | コンピューティング環境においてアダプティブビジーウェイトをサポートするためのシステムおよび方法 |
JP2017527025A (ja) * | 2014-08-05 | 2017-09-14 | クアルコム,インコーポレイテッド | マルチプロセッサシステムのための指向性イベントシグナリング |
JP2016062388A (ja) * | 2014-09-19 | 2016-04-25 | 日本電気株式会社 | 情報処理装置、情報処理方法及びそのプログラム |
JP2019106066A (ja) * | 2017-12-13 | 2019-06-27 | 株式会社デンソー | 情報処理装置 |
JP6992471B2 (ja) | 2017-12-13 | 2022-01-13 | 株式会社デンソー | 情報処理装置 |
DE102022213686A1 (de) | 2021-12-20 | 2023-06-22 | Renesas Electronics Corporation | Halbleitervorrichtung, steuerverfahren für diese, und programm |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5349072B2 (ja) | 資源排他制御方法および資源排他制御装置 | |
US8839253B2 (en) | System and method for load-adaptive mutual exclusion with waiting process counts | |
CN101529383B (zh) | 任务处理装置 | |
US8938631B2 (en) | Energy efficient implementation of read-copy update for light workloads running on systems with many processors | |
US9389925B2 (en) | Achieving low grace period latencies despite energy efficiency | |
US8607239B2 (en) | Lock mechanism to reduce waiting of threads to access a shared resource by selectively granting access to a thread before an enqueued highest priority thread | |
US7472214B2 (en) | Real-time embedded simple monitor method and computer product | |
US20090307707A1 (en) | System and method for dynamically adaptive mutual exclusion in multi-threaded computing environment | |
US20070118838A1 (en) | Task execution controller, task execution control method, and program | |
KR101686082B1 (ko) | 결정적 프로그레스 인덱스 기반 락 제어 및 스레드 스케줄링 방법 및 장치 | |
WO2012132017A1 (ja) | 排他制御方法、および排他制御プログラム | |
JP5347451B2 (ja) | マルチプロセッサシステム、競合回避プログラム及び競合回避方法 | |
JP2011175378A (ja) | マルチプロセッサシステム、及びマルチプロセッサシステムの動作方法 | |
US9411660B2 (en) | Lock control apparatus and lock control method | |
US20080155546A1 (en) | Method of controlling thread access to a synchronization object | |
CN102436393B (zh) | 任务处理装置 | |
US6567873B1 (en) | Spinlock with adaptive delay | |
JPWO2011096163A1 (ja) | 情報処理システム、排他制御方法および排他制御用プログラム | |
JP2001084235A (ja) | ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体 | |
CN117707798A (zh) | 多线程并发状态下的死锁消除方法、装置、设备及介质 | |
JP5300005B2 (ja) | スレッド実行制御方法、およびシステム | |
JP2010140239A (ja) | 割り込みレイテンシーを短縮する装置及び方法 | |
JP2017201486A (ja) | 情報処理装置、情報処理プログラム、及び情報処理方法 | |
JP2010044699A (ja) | 情報処理装置 | |
JP5621896B2 (ja) | マルチプロセッサシステム、制御プログラム、および制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20130507 |