JPH05225149A - ロック方式 - Google Patents

ロック方式

Info

Publication number
JPH05225149A
JPH05225149A JP2561992A JP2561992A JPH05225149A JP H05225149 A JPH05225149 A JP H05225149A JP 2561992 A JP2561992 A JP 2561992A JP 2561992 A JP2561992 A JP 2561992A JP H05225149 A JPH05225149 A JP H05225149A
Authority
JP
Japan
Prior art keywords
lock
time
spin
acquired
sleep
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.)
Pending
Application number
JP2561992A
Other languages
English (en)
Inventor
Toshiki Kitsu
俊樹 岐津
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2561992A priority Critical patent/JPH05225149A/ja
Publication of JPH05225149A publication Critical patent/JPH05225149A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】ロック獲得の際のプロセッサの浪費を少なく
し、プロセス実行の効率化の向上を図る。 【構成】ロック変数13aのロックを獲得できない場合
には、そのプロセスはスピンロック機構16によってス
ピンロック状態に設定され、そして所定のスピンロック
時間スピンしてもロックを獲得できない場合にスリープ
ロック機構17によってスリープ状態に設定される。こ
のため、スピン時間指示フィールドに設定された所定の
スピンロック時間を越える長い時間ロックが取れない時
にはスリープとなって、プロセッサを他のプロセスに渡
すことができ、また、ロックが他のプロセスから比較的
早く解放された場合にはスピンロック状態にあるので直
ぐにそのロックを獲得して実行することができる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は高性能な並列処理を実
現するための共有メモリを有したマルチプロセッサシス
テムの排他制御におけるロック方式に関するものであ
る。
【0002】
【従来の技術】近年、共有メモリを有したマルチプロセ
ッサシステムにおいては、排他制御のための種々のロッ
ク方式が提案されている。ロック方式には、大別してプ
ロセスがロックを取れるまで共有変数(ロック変数)に
アクセスをし続けるスピンロック方式と、ロックが取れ
なかった場合スリープし、ロックが解放された時に起こ
されてからロックを取りに行くスリープロック(サスペ
ンドロックと称する場合もある)方式とがある。
【0003】スピンロック方式では、スピンしている期
間はプロセッサは浪費されることになる。一方、スリー
プロック方式では、プロセスのスリープとそのスリープ
からの復帰(ウェイクアップ)の際にレジスタ退避やレ
ジスタ復帰が必要になるため、プロセッサ(CPU)実
行時間が余分にかかりその分だけコストが大きくなる
が、プロセスがスリープしている間はプロセッサは他の
プロセスの実行に使用でき、プロセッサが浪費されるこ
とはない。
【0004】従来のロック方式では、資源がロックされ
ている時間がわからないため、予めスピンするかスリー
プするかが決められており、長い時間ロックが取れない
時にスピンしたり、ロックがすぐ取れる時にスリープす
るなど、プロセッサを浪費してしまうという問題があっ
た。
【0005】
【発明が解決しようとする課題】従来のロック方式にお
いては、ロックを取得する際に予めスピンするかスリー
プするかを決定しておくが、資源がロックされる時間が
わからないために無駄にスピンしたりスリープしてしま
うという問題があった。
【0006】この発明はこのような点に鑑みてなされた
ものであり、ロック獲得の際のプロセッサの浪費を少な
くし、効率の良いプロセスの実行の実現することができ
るマルチプロセッサシステアムのロック方式を提供する
ことを目的とする。
【0007】
【課題を解決するための手段および作用】この発明のロ
ック方式は、共有変数を用いてプロセス間の排他制御を
実現するメモリ共有型マルチプロセッサシステムにおい
て、前記各共有変数毎にロック待ちプロセスがスピンす
るスピンロック時間を規定し、ロックを獲得できなかっ
たロック待ちプロセスを前記規定されたスピンロック時
間だけスピンさせ、そのスピンロック時間内にロックを
獲得できないときにそのプロセスをスリープさせること
を特徴とする。
【0008】このロック方式においては、ロックを獲得
できない場合には、そのプロセスはまずスピンロック状
態に設定され、そして、所定のスピンロック時間スピン
してもロックを獲得できない場合にスリープ状態に設定
される。このため、所定のスピンロック時間を越える長
い時間ロックが取れない時にはスリープとなって、プロ
セッサを他のプロセスに渡すことができ、また、ロック
が他のプロセスから比較的早く解放された場合にはスピ
ンロック状態にあるのですぐにそのロックを獲得して実
行することができる。したがって、不必要に長い時間ス
ピンしたり、短い時間スピンすればロックが獲得できる
のにスリープするといったプロセッサの浪費が避けら
れ、プロセスの効率的な実行が可能となる。
【0009】
【実施例】以下、図面を参照してこの発明の実施例を説
明する。
【0010】図1にはこの発明の一実施例に係わるマル
チプロセッサシステムのシステム構成が示されている。
このマルチプロセッサシステムは、メモリ共有型のマル
チプロセッサであり、共有変数を用いて排他制御を実現
している。
【0011】このマルチプロセッサシステムは、複数の
プロセッサ11a,11b,…と、共有メモリ12とか
ら構成されている。複数のプロセッサ11a,11b上
で並列動作される複数のプロセスは、共有メモリ12上
の共有データを同時に操作しないように、その共有デー
タをロックして排他的に使用する。この排他制御のため
の同期は、共有変数(ロック変数)を用いて実現されて
いる。
【0012】ロック変数はあるリソースの使用状態を示
すものであり、例えば、ロック変数の値が1の時は、あ
る1つのプロセスが排他的な処理を実行中であること
(ロック状態)を示し、他のプロセスはその処理を実行
することができない。
【0013】ロック確保時のロック変数の参照、更新
は、例えば、テストアンドセット命令(test &
set)のように参照と変更が不可分に行われるプロセ
ッサ命令で行なわれる。テストアンドセット命令は、基
本的には不可分の単一機会命令として、指定されたロッ
ク変数から値“0”を読み出した後、“1”の値をロッ
ク変数に書き戻すものであり、最初に“0”(ロックが
オフ)を受け取るプロセスだけがロックを確保して処理
を実行でき、それ以外のプロセスはすべて“1”(ロッ
クがオン)を受け取ることにより実行を待たされる。
【0014】この場合、スピンロック方式においては、
“1”を受け取った各プロセスは、ロック変数が“0”
になるまで繰り返しテストを行い、ロック解除されまで
待つ。この状態は、スピンループと称されている。一
方、スリープロック方式においては、“1”を受け取っ
た各プロセスは、プロセッサを解放するスリープ状態と
なり、ロック解除の合図を待ってウェイクアップされ
る。
【0015】ロック変数13a、13b…は、共有メモ
リ12上の共有データの排他制御のためにそれら共有デ
ータ毎に生成されるものであって、各ロック変数13
a,13b,…にはスピン時間指示フィールド14a,
14b,…が割り当てられている。
【0016】各スピン時間指示フィールド14a,14
bには、対応するロック変数によってロック待ちとなっ
たプロセスに対してスピンすべき時間を指示するための
スピン時間が設定される。このスピン時間の初期値は、
スピンし続けるコストと、スリープし、ウェイクアップ
するコストとが等しくなるような値に設定される。
【0017】この場合、スリープし、ウェイクアップす
るコストとは、プロセスのスリープおよびウェイクアッ
プのために必要なレジスタ退避および復帰に要するプロ
セッサ実行時間(実行サイクル数)を示す。このため、
スピン時間は、プロセスのスリープおよびウェイクアッ
プのために必要なプロセッサ実行時間と実質的に同じ値
に予め設定される。これにより、スピンしている間にロ
ックが獲得できた場合には、スリープするよりも低コス
トになることが保証される。
【0018】また、各プロセッサ11A,11b,…に
は、ロック変数13a、13b,…を用いたロック方式
を実現するための機構として、スピン時間読取り・減算
機構15、スピンロック機構16、スリープロック機構
17、スピン時間再設定機構18が設けられている。
【0019】次に、図2のフローチャートを参照して、
これらスピン時間読取り・減算機構15、スピンロック
機構16、スリープロック機構17、およびスピン時間
再設定機構18の機能、およびこれらを利用したロック
動作を説明する。
【0020】プロセスが資源を確保する際には、まず、
該当するロック変数13aおよびそのロック変数に対応
するスピン時間フィールド14aが参照され、スピン時
間読取り・減算機構15によって上記フィールドの値を
記憶した上で(ステップa1)そのフィールドの値が減
少される(ステップa2)。
【0021】減少される値は任意の値で良く、ここでは
d1とする。これは次にロックを取りに来るプロセスは
ロックを取りにくくなっており、スピンする時間を短く
することによってスピンによるプロセッサの浪費を減少
させるためである。
【0022】次に、ロック変数の値が“0”か“1”か
によってロックを確保できるか否かを判断し(ステップ
a3)、ロック変数の値が“1”の場合には、そのプロ
セスはロックを確保できない。このロックを確保できな
かったプロセスはスピンロック機構16によってスピン
され、ステップa1で読み取ったスピン時間だけスピン
してその間、繰り返しロックを獲得しに行く(ステップ
a3,a4)。
【0023】スピン時間内にロックが獲得できなかった
場合には、さらに上記スピン時間指定フィールドの値が
スリープロック機構17によって減少され(ステップa
5)、そして、ロックが獲得できなかったプロセスがス
リープロック機構17によってスリープされる(ステッ
プa6)。この時に減少させる値も任意の値で良く、こ
こではd2 とする。
【0024】この場合に、上記フィールドの値を再び減
らすのは、スピン時間中にロックが取れないほどロック
が獲得しにくくなっているため、さらにスピンする時間
を短くすることによってスピンによる他のプロセッサの
浪費を減少させるためである。
【0025】スリープされたプロセスはロックが解放さ
れたときに通知等によってウェイクアップされ(ステッ
プa7)、ロックを確保しに行く。ここでロックを確保
できた場合には、そのプロセスによって所定の作業が実
行される(ステップa9)。この後、スピン時間再設定
機構18によって、ロックを獲得するまでに減じた値分
だけ上記フィールドの値が増加される(ステップa1
0)。
【0026】この例では、スピンしている間にロックが
獲得できた場合には、d1 を、スピンしている間にロッ
クが獲得できずスリープした後に獲得した場合には、d
1 +d2 を、上記フィールドの値に加算して初期値に戻
す。
【0027】このように上記フィールドの値を増加させ
るのは、ロックが解放されたことによりロックが解放さ
れる前に比べ獲得しやすくなるため、スピンする時間を
長くしてスピンによりロックを獲得しやすくするためで
ある。その後、プロセスは、ロックを解放する(ステッ
プa11)。次いで、図3のフローチャートを参照し
て、図1のシステムにおける別のロック動作を説明す
る。
【0028】プロセスが資源を確保する際には、まず、
該当するロック変数13aおよびそのロック変数に対応
するスピン時間フィールド14aが参照され、スピン時
間読取り・減算機構15によって上記フィールドの値を
記憶した上で(ステップb1)そのフィールドの値が減
少される(ステップb2)。
【0029】減少される値は任意の値で良く、ここでは
d1とする。これは次にロックを取りに来るプロセスは
ロックを取りにくくなっており、スピンする時間を短く
することによってスピンによるプロセッサの浪費を減少
させるためである。
【0030】また、同時に時刻を記録するフィールドに
現在の時刻を、スピン時間読取り・減算機構15によっ
て記録しておく(ステップb3)。次に、ロック変数の
値が“0”か“1”かによってロックを確保できるか否
かを判断し(ステップb4)、ロック変数の値が“1”
の場合には、そのプロセスはロックを確保できず、スピ
ンロック機構16によってスピンされ、ステップb1で
読み取ったスピン時間だけスピンしてその間、繰り返し
ロックを獲得しに行く(ステップb4,b5)。
【0031】スピン時間内にロックが獲得できなかった
場合には、さらに上記スピン時間指定フィールドの値が
スリープロック機構17によって減少され(ステップb
6)、そして、ロックが獲得できなかったプロセスがス
リープロック機構17によってスリープされる(ステッ
プb7)。この時に減少させる値も任意の値で良く、こ
こではd2 とする。
【0032】この場合に、上記フィールドの値を再び減
らすのは、スピン時間中ではロックが取れないほどロッ
クが獲得しにくくなっているため、さらにスピンする時
間を短くすることによってスピンによる他のプロセッサ
の浪費を減少させるためである。
【0033】スリープされたプロセスはロックが解放さ
れたときに通知等によってウェイクアップされ(ステッ
プb8)、ロックを確保しに行く。ここでロックを確保
できた場合には(ステップb9)、スピン時間再設定機
構18によって、ロックをとれた時刻とスピンを開始し
た時刻との差により、ロック獲得に要した時間が求めら
れる(ステップb10)。また、そのロックを獲得した
プロセスによって所定の作業が実行される(ステップb
11)。
【0034】この後、スピン時間再設定機構18によっ
て、ロックを獲得するまでに減じた値(d1,またはd
1+d2)と、ロック獲得に要した時間と、ステップb
1で記憶したもとのスピン時間とから、新たなスピン時
間が求められ、それがスピン時間指示フィールドに再設
定される(ステップb12)。そして、その後、ロック
が解放される(ステップb13)。この再設定される新
たなスピン時間x´は、例えば、次のように求められ
る。
【0035】x′を新しいスピン時間、xを読み取った
スピン時間、x0 をスピン時間の初期値、yをロックを
獲得するまでにかかった時間、dをロックを獲得するま
でに減算した値、nを任意の正数とすると、 x´={(n+1)/n}x−(y/n)+d …(1) で与えられる。しかし、この(1)式で求めたx´は、
求めたx´が0<x´<x0 の範囲にある場合のみ有効
とし、(1)式で求めたx´がx´≧x0 の場合には、 x´=x0 …(2) とし、また、(1)式で求めたx´がx´≦0の場合に
は、 x´=0 …(3) とすることが好ましい。
【0036】これにより、スピンする時間は上記のnの
大小によって振れ幅が変化するが、徐々にその資源を獲
得するまでの時間の平均値に収束していく。これにより
資源を獲得する際には、実際にロック獲得までに要した
平均的な時間分だけスピンするようになり、プロセッサ
の浪費が減少することになる。
【0037】以上のように、この実施例のロック方式に
おいては、ロックを獲得できない場合には、そのプロセ
スはまずスピンロック状態に設定され、そして、所定の
スピンロック時間スピンしてもロックを獲得できない場
合にスリープ状態に設定される。このため、所定のスピ
ンロック時間を越える長い時間ロックが取れない時には
スリープとなって、プロセッサを他のプロセスに渡すこ
とができ、また、ロックが他のプロセスから比較的早く
解放された場合にはスピンロック状態にあるのですぐに
そのロックを獲得して実行することができる。
【0038】したがって、不必要に長い時間スピンした
り、短い時間スピンすればロックが獲得できるのにスリ
ープするといったプロセッサの浪費が避けられ、プロセ
スの効率的な実行が可能となる。
【0039】また、スピンする時間を静的、あるいは動
的に変更することにより、ロックされている時間の変動
に柔軟に対処でき、効率の良いプロセスの実行が可能と
なるなど多大なる効果が得られる。
【0040】
【発明の効果】以上説明したようにこの発明によれば、
ロック獲得の際のプロセッサの浪費を少なくでき、効率
の良いプロセスの実行の実現することが可能となる。
【図面の簡単な説明】
【図1】この発明の一実施例に係わるシステム構成を示
すブロック図。
【図2】同実施例のロック動作の一例を説明するフロー
チャート。
【図3】同実施例のロック動作の他の例を説明するフロ
ーチャート。
【符号の説明】
11a,11b…プロセッサ、12…共有メモリ、13
a,13b…ロック変数、14a,14b…スピン時間
指示フィールド、15…スピン時間読取り・減算機構、
16…スピンロック機構、17…スリープロック機構、
18…スピン時間再設定機構。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 共有変数を用いてプロセス間の排他制御
    を実現するメモリ共有型マルチプロセッサシステムにお
    いて、 前記各共有変数毎にロック待ちプロセスがスピンするス
    ピンロック時間を規定し、 ロックを獲得できなかったロック待ちプロセスを前記規
    定されたスピンロック時間だけスピンさせ、そのスピン
    ロック時間内にロックを獲得できないときにそのプロセ
    スをスリープさせることを特徴とするマルチプロセッサ
    システムのロック方式。
  2. 【請求項2】 前記スピンロック時間は、プロセスのス
    リープおよびそのスリープ状態からの復帰のために要す
    るプロセッサの実行時間と実質的に等しい値に初期設定
    されていることを特徴とする請求項1記載のマルチプロ
    セッサシステムのロック方式。
  3. 【請求項3】 共有変数を用いてプロセス間の排他制御
    を実現するメモリ共有型マルチプロセッサシステムにお
    いて、 前記各共有変数毎にロック待ちプロセスがスピンするス
    ピンロック時間を割り当てる手段と、 ロックを獲得できなかったプロセスを前記スピンロック
    時間だけスピンさせる手段と、 ロック解除待ちプロセスを有する共有変数に対応した前
    記スピンロック時間の値を減少する手段と、 前記スピンロック時間内にロックを獲得できないときに
    そのプロセスをスリープさせる手段と、 ロック獲得後そのロックを解放する際に前記スピン時間
    を再設定する手段とを具備したことを特徴とするマルチ
    プロセッサシステムのロック方式。
JP2561992A 1992-02-13 1992-02-13 ロック方式 Pending JPH05225149A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2561992A JPH05225149A (ja) 1992-02-13 1992-02-13 ロック方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2561992A JPH05225149A (ja) 1992-02-13 1992-02-13 ロック方式

Publications (1)

Publication Number Publication Date
JPH05225149A true JPH05225149A (ja) 1993-09-03

Family

ID=12170901

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2561992A Pending JPH05225149A (ja) 1992-02-13 1992-02-13 ロック方式

Country Status (1)

Country Link
JP (1) JPH05225149A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003536118A (ja) * 1999-02-25 2003-12-02 サン・マイクロシステムズ・インコーポレイテッド マルチスレッドコンピュータシステムにおけるモニタ変換
CN100407136C (zh) * 2004-06-30 2008-07-30 英特尔公司 使用睡眠-唤醒机制来执行指令的方法和装置
US7500036B2 (en) 2000-12-28 2009-03-03 International Business Machines Corporation Quad aware locking primitive
JP2010044770A (ja) * 2003-06-27 2010-02-25 Intel Corp モニタメモリ待機を用いたキューされたロック
WO2010095198A1 (ja) * 2009-02-17 2010-08-26 パナソニック株式会社 資源排他制御方法および資源排他制御装置
US7853756B2 (en) 2004-04-30 2010-12-14 Fujitsu Limited Information processing device, processor, processor control method, information processing device control method and cache memory
WO2011096163A1 (ja) * 2010-02-03 2011-08-11 日本電気株式会社 情報処理システム、排他制御方法および排他制御用プログラム
WO2011104823A1 (ja) * 2010-02-23 2011-09-01 富士通株式会社 マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003536118A (ja) * 1999-02-25 2003-12-02 サン・マイクロシステムズ・インコーポレイテッド マルチスレッドコンピュータシステムにおけるモニタ変換
US7979617B2 (en) 2000-12-28 2011-07-12 International Business Machines Corporation Quad aware locking primitive
US7500036B2 (en) 2000-12-28 2009-03-03 International Business Machines Corporation Quad aware locking primitive
JP2010044770A (ja) * 2003-06-27 2010-02-25 Intel Corp モニタメモリ待機を用いたキューされたロック
US7853756B2 (en) 2004-04-30 2010-12-14 Fujitsu Limited Information processing device, processor, processor control method, information processing device control method and cache memory
CN100407136C (zh) * 2004-06-30 2008-07-30 英特尔公司 使用睡眠-唤醒机制来执行指令的方法和装置
US8607241B2 (en) 2004-06-30 2013-12-10 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
JP2010191575A (ja) * 2009-02-17 2010-09-02 Panasonic Corp 資源排他制御方法および資源排他制御装置
WO2010095198A1 (ja) * 2009-02-17 2010-08-26 パナソニック株式会社 資源排他制御方法および資源排他制御装置
US8463911B2 (en) 2009-02-17 2013-06-11 Panasonic Corporation Exclusive control method of resource and exclusive controller of resource
US9135085B2 (en) 2009-02-17 2015-09-15 Socionext Inc. Exclusive control method of resource and exclusive controller of resource
WO2011096163A1 (ja) * 2010-02-03 2011-08-11 日本電気株式会社 情報処理システム、排他制御方法および排他制御用プログラム
WO2011104823A1 (ja) * 2010-02-23 2011-09-01 富士通株式会社 マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
JP5408330B2 (ja) * 2010-02-23 2014-02-05 富士通株式会社 マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
US9311142B2 (en) 2010-02-23 2016-04-12 Fujitsu Limited Controlling memory access conflict of threads on multi-core processor with set of highest priority processor cores based on a threshold value of issued-instruction efficiency

Similar Documents

Publication Publication Date Title
US7577823B2 (en) Wake-up and sleep conditions of processors in a multi-processor system
US9389925B2 (en) Achieving low grace period latencies despite energy efficiency
US8108696B2 (en) Optimizing non-preemptible read-copy update for low-power usage by avoiding unnecessary wakeups
KR101529018B1 (ko) 멀티코어 컴퓨팅 디바이스들에 대한 다이나믹 슬립
JP2531881B2 (ja) 並行制御方法
US6910212B2 (en) System and method for improved complex storage locks
US20170329629A1 (en) System for selecting a task to be executed according to an output from a task control circuit
JP4051703B2 (ja) シングルプロセッサ向けosによる並列処理システム、並列処理プログラム
US8793697B2 (en) Method and system for scheduling requests in a portable computing device
US8327379B2 (en) Method for switching a selected task to be executed according with an output from task selecting circuit
JP2005339500A (ja) データ処理装置及び共用資源へのアクセス制御方法
CN1983193A (zh) 用于信息处理的系统和方法
JP4418752B2 (ja) データ処理システムにおいてスレッドを管理する方法と装置
US8132171B2 (en) Method of controlling thread access to a synchronization object
JP2001084235A (ja) ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体
JPH05225149A (ja) ロック方式
CN111225434B (zh) 一种应用程序响应方法、系统、存储介质及通信模块
JP4482275B2 (ja) オペレーティングシステムサポートのために一定の時間基準を用いるマルチモード電力管理システムのハードウェアアーキテクチャ
KR0146551B1 (ko) 임계영역을 지원하는 래치 관리방법
JPH11282815A (ja) マルチスレッド計算機システム及びマルチスレッド実行制御方法
Love Kernel korner: Kernel locking techniques
KR101285665B1 (ko) 수면 모드를 지원하는 멀티 코어 시스템 온 칩
JP2018049406A (ja) 複数プロセッサ間のタスク連携装置
JPH0355657A (ja) マルチタスク・マルチプロセッサシステムにおける共有メモリアクセス方式
KR950014165B1 (ko) Unix 운영체제에서의 임계영역 지원방법