JPH0640324B2 - マルチプロセッサ・システムおよびそのプロセス同期方法 - Google Patents

マルチプロセッサ・システムおよびそのプロセス同期方法

Info

Publication number
JPH0640324B2
JPH0640324B2 JP1277334A JP27733489A JPH0640324B2 JP H0640324 B2 JPH0640324 B2 JP H0640324B2 JP 1277334 A JP1277334 A JP 1277334A JP 27733489 A JP27733489 A JP 27733489A JP H0640324 B2 JPH0640324 B2 JP H0640324B2
Authority
JP
Japan
Prior art keywords
synchronization
processor
processors
processes
waiting
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 - Lifetime
Application number
JP1277334A
Other languages
English (en)
Other versions
JPH03144847A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP1277334A priority Critical patent/JPH0640324B2/ja
Priority to EP19900311794 priority patent/EP0425320A3/en
Publication of JPH03144847A publication Critical patent/JPH03144847A/ja
Priority to US07/944,803 priority patent/US5448732A/en
Publication of JPH0640324B2 publication Critical patent/JPH0640324B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/458Synchronisation, e.g. post-wait, barriers, locks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)

Description

【発明の詳細な説明】 A.産業上の利用分野 この発明はマルチプロセッサ・システムに関し、特に、
プロセッサ間の同期に伴うオーバーヘッドと無意味なス
ケジューリングを極力抑えて、システムの性能とプロセ
ッサ資源の使用効率を向上できるようにしたものであ
る。
B.従来技術 VLSI技術の大きな進歩により、多数のプロセッサを
搭載したマルチプロセッサ・システムが実現されるよう
になった。そして、複数のプロセッサを用いて仕事を高
速に処理する並列処理が重要になってきている。あるプ
ロセッサが他のプロセッサの処理結果を用いる際は、そ
の処理の完了を確認する動作つまり同期が必要である。
このように、複数のプロセッサが協調して処理を行うよ
うにするにはプロセッサ間の同期が不可欠である。
従来の同期の方法について説明する。
コンピュータシステムにおいて、現実のハードウェア資
源の管理はオペレーティングシステム(以下OSとい
う)によって行われている。よって、ユーザーやプログ
ラマは実プロセッサを仮想化したプロセスという概念を
用いて処理を記述する。プロセスはOSの管理の下で実
プロセッサの割当てを受け処理を実行する。この割当て
をプロセススケジューリング(以下単にスケジューリン
グという)と呼び、一つのプロセスに対し一つの実プロ
セッサが割当てられる。並列処理では協調して動作する
複数のプロセスを用意して、プロセス間で同期を取りな
がら処理を進める。この同期の方法には一般には次の二
つの方法が用いられている。一つはOSを介して同期を
行う方法で、もう一つはプロセス間の共有メモリを介し
て同期を行う方法である。同期のためには同期を取り合
うプロセス間で同期情報を交換するための共有の実体が
必要になる。前者はその実体としてOSを後者はメモリ
を用いている。
次に従来の同期法における問題点について述べる。
OSを介して同期を実行する場合は、同期が成立しなか
ったプロセスはプロセッサの割り当てを外され休止状態
になり、空いたプロセッサには他のプロセスが割付られ
る。よって、プロセッサ資源は効率的に使われる。しか
し、OSを介しての同期はオーバーヘッドが大きく、こ
のため休止状態になったり、再びプロセッサに割付られ
たりということを繰返すと著しく効率が低減する。プロ
グラムの粒度(同期から次の同期までの間隔)が十分に
大きければ、このオーバーヘッドは無視できるが、通常
は無視できない。オーバーヘッドを少なくするためのO
Sを介しての同期ではなく共有メモリを介してのビジー
・ウェイトで同期を行うときにはこのような問題はなく
なるが、他の問題が生じる場合がある。前述のようにO
Sは一つの実プロセッサに一つのプロセスを割付ける。
このスケジューリング時に、複数の特定のプロセスを同
時に複数のプロセッサに割付るといった指定が通常でき
ない。そこで、ある並列処理のために複数のプロセスを
生成し、それらがお互に同期しながら動くようなプログ
ラムを考える。スケジューリングの都合で、そのプロセ
ス群の内のいくつかはプロセッサの割当てを受け、残り
はプロセッサの割当て待ちの状態になっているとする
と、同期を取るべき時に相手のプロセスがプロセッサに
スケジューリングされておらず、同期がすぐには成立さ
せられずプロセッサが無駄なビジー・ウェイトを行うと
いった事態が起こる。つまり、第1図のようにプロセス
がプロセッサに割当てられており、A1、A2、A3の
プロセスがA4のプロセスの処理結果を使うためにビジ
ー・ウェイトの同期でループしているといった事態であ
る。この場合、CPU時間は消費するが、タイム・スラ
イスか何かで再スケジューリングが起こって、A4のプ
ロセスが実プロセッサに割当てられるまで、プログラム
は何も進展しない。また、共有メモリを介してのビジー
・ウェイトで複数のプロセスが同時に一点で待ち合わせ
を行うバリア同期を行うと、スケジューリングの問題の
他にも、マルチプロセッサ上で同期のための排他的メモ
リ・アクセスが集中して、データ通信路の競合等のオー
バーヘッドを引き起こすといった問題もある。
上述からも示唆されるように、プロセスの同期とスケジ
ューリングは密接な関係を持っている。アプリケーショ
ンや特定の並列処理プログラムにおいては、スケジュー
リングを調節することによって効率を上げることができ
る。しかし、現状のOSでは総てのプロセスを同じアル
ゴリズムに基づいてスケジューリングを行っているので
アプリケーション毎のスケジューリングの調節といった
ことができない。
なおこの発明に関連する先行技術の文献としてはつぎの
ものがある。
(1)“Stellix:UNIX for a Graphics Supercompute
r",Proceedings of the Summer 1988 USENIX Conferenc
e,June 20-24,1988,San frascisco California USA,USE
NIX Association,pp321-330,Thomas J.Teixeira &Rober
t F.Gurwitz この文献には同期用の特別なインストラクション列によ
り同期をとるときに、すべてのプロセスが同期待ち状態
なら、フォールト信号をハードウェアが生成することを
開示している。しかしこの文献では共有メモリのプロセ
ッサ情報(後述のようにプロセッサへのプロセスの割り
当て、プロセスのグループ分けおよびプロセスの同期に
関する情報)を用いてプロセスが所定の条件をチェック
して自らが再スケジュール要求を行って効率のよいプロ
セス同期を実現できるようにすることについてはなんら
示唆していない。
(2)IBM Technical Disclosure Bulletin Vol.32 NO.
1 June 1989 pp260-262,“DEVICE THAT PROVIDES FOR C
ONTENTION-FREE BARRIER SYNCHRONIZATION IN A MULTIP
ROCESSOR" (3)IBM Technical Disclosure Bulletin Vol.31 NO.
11 Aprol 1989 pp382389,“LOW-COST DEVICE FOR CONTE
NTION-FREE BARRIER SYNCHRONIZATION" (2)、(3)の文献にはバリア同期を集中的にハード
ウェアで実行する構成が開示されているが、同期待ちに
対する工夫は示唆されていない。
(4)H.S.Stone High-Performance Computer Architec
ture,Addison-Wesley,Reading,Massachusetts,1987 この文献にはバリア同期に関する一般的解説がなされて
いる。
C.発明が解決しようとする問題点 この発明は以上の事情を考慮してなされたものであり、
プロセッサ間の同期に伴うオーバーヘッドと無意味なス
ケジューリングを極力抑えた高性能なマルチプロセッサ
・システムを提供することを目的としている。
D.問題を解決するための手段 この発明では、以上の目的を達成するために、オーバー
ヘッドを減らすため共有メモリを介しての同期を採用
し、システムのプロセッサ資源に関する情報(プロセッ
サへのプロセスの割り当て、プロセスのグループ分けお
よびプロセスの同期に関する情報)をユーザーからアク
セスできるようにしておき、ビジー・ウェイトの同期待
ちのループで同期変数のチェックだけではなく、プロセ
ッサ資源に関する情報もチェックし、そのチェックの結
果、同期が暫く成立しない状況と判断されるときはビジ
ー・ウェイト中のプロセスは自らプロセスの実行を中断
し、スケジューラに制御を移し、再スケジューリングを
行わせプロセッサへのプロセスの割当てを変更する。
またこの発明ではプロセッサ間の同期が複数のプロセッ
サが一斉に待ち合わせを行うバリア同期用に、プロセッ
サ毎に専用レジスタを設け、そのレジスタ間の情報を交
換する専用の通信路を用意して、バリア同期のオーバー
ヘッドを軽くする。
また、プロセッサ資源に関する情報をチェックするため
に生ずるオーバーヘッドを軽くするために支援ハードウ
ェアを設け、再スケジューリングの開始は割り込みで通
知されるようにしてもよい。
さらに再スケジューリングの際に最適なスケジューリン
グが行えるように、スケジューラのユーザーによるカス
タマイズを可能にしてもよい。また、これをOSの管理
下で可能にするためスケジューラを階層化してもよい。
すなわちアプリケーションを実行するために並列に動く
プロセス群はそのアプリケーションのためのユーザーの
スケジューラの直接の管理下に置かれる。さらに、再ス
ケジューリングを指示する割り込みのオーバーヘッドを
減らすためとユーザーのスケジューラが複数のプロセッ
サに対してなるべく小さなオーバーヘッドで非同期通信
を可能にするために、プロセッサの割り込みを階層化し
てその内の優先度の低いものはユーザーに解放された割
り込みとする。つまり、その割り込みがユーザーのプロ
グラムを実行中(ユーザー・モード中)に起こった場
合、ユーザーが予め設定した割り込みプログラムに制御
を移すだけでOS(カーネル・モード)には制御を移さ
ないようにするのである。
E.実施例 以下、この発明の実施例について図面を参照して説明を
行う。
E.1.原理的な説明 E.1.1.発明の背景 同期処理を軽くすることを目的の一つとしているので、
共有メモリ等を介してのビジー・ウェイトで同期を行う
ことを前提にする(OSを介してでは上述のとおりオー
バーヘッドが増大する)。この際、従来技術でも述べた
ように以下の二点が問題である。
(1)無駄に同期待ちを行うプロセスがプロセッサに割
り付けられて、プロセッサ資源を浪費する。
(2)バリア同期の際に、同期のための排他的メモリ・
アクセスが集中して、データ通信路が競合してオーバー
ヘッドを生じる。
まず、(1)の問題について述べて、解決の方針を示
す。ある処理を複数のプロセスが協調して実行している
場合(並列処理)を想定する。この処理の途中で一つの
プロセスを除いて他のプロセスは同期待ちになったとす
る。例えばその同期待ちでないプロセスが計算結果を出
すのを今後その値が必要となるので他のプロセスすべて
が待っているといった状況である。また、プロセスの数
がプロセッサ数よりも多く、すべてのプロセスをプロセ
ッサに同時に割り付けることはできないとする。この状
況で、共有メモリを介しての同期を行っているので、O
Sはプロセスが同期待ちであるかどうか区別できない。
そのため、スケジューリングの結果、同期待ちのプロセ
スばかりがプロセッサに割り付けられて、同期待ちでな
い本来最優先のプロセスが実行待ちになってしまう可能
性がある。この場合、一定時間毎のタイマ割り込み時の
再スケジューリングの機会に同期待ちでないプロセスが
プロセッサに割り付けられるまで、プロセッサ資源を無
駄に浪費し続けることになる。この浪費を回避するため
には、プロセッサに同期待ちのプロセスばかりが割り当
てられていることが認識できなければならない。そこ
で、ビジー・ウェイトの同期待ちのループでは同期変数
のチェックだけではなく、同期待ちの場合はシステムの
プロセッサ資源に関する情報もチェックする。そのチェ
ックの結果、状況によってはプロセスを中断し、OSに
制御を移し、再スケジューリングを実行しプロセッサへ
のプロセスの割り当てを変更する。この方式により無駄
に同期待ちを行うプロセッサを減らすことができ、シス
テムのプロセッサ資源を有効に使えるようになる。状況
判断の方法と利用するデータについてはE.1.2.節
で述べる。再スケジューリングの方法についてはE.
1.3.節で述べる。
次に、(2)のバリア同期における排他的メモリ・アク
セスの集中の問題について解説し、その解決の方針を示
す。一つの同期変数を用いたN台のプロセッサによるバ
リア同期の場合、少なくともN回の同期変数への排他的
な操作が必要である。この部分のメモリ処理は直列化さ
れるのでNが大きくなるとオーバーヘッドも増大する。
特に、バリア同期を取るプロセス間の粒度が揃ってお
り、それらのプロセスが総て同時にプロセッサに割り当
てられている(つまり、プロセッサの割当て待ちのプロ
セスがいない)状況で、このオーバーヘッドが問題とな
る。このオーバーヘッドを避けるためにバリア同期専用
の同期変数を専用レジスタ(本発明ではフラグ)として
プロセッサ毎に設け、レジスタ間の値の更新は同期情報
のための専用通信路(本発明ではブロード・キャスト型
の信号線)で行うことにする。この機構により通常のデ
ータ通信路の通信量を増やすことなしにバリア同期が行
える。当然、プロセッサへの割当てを待っているプロセ
スが存在する時には、(1)の問題の解決方針に基づい
た動作を行う。具体的な機構についてはE.2.節の中
で述べる。
E.1.2.プロセス切り換えの状況判断と状況の検出
法 プロセスが同期待ち時にプロセッサの割当てを自ら放棄
する条件とその状況判断に必要になるシステムのプロセ
ッサ資源に関する情報について述べる。ここで、プロセ
ッサ資源を有効に管理するためにプロセッサのグループ
という考え方を導入する。基本的にはプロセスのうち共
有メモリを介した同期を行うもの同士を一つのグループ
とする。つまり、グループが異なれば、共有メモリを介
したビジー・ウェイトの同期を行わない。プロセッサは
自分の上で現在実行されているプロセスのグループに属
する。同じグループのプロセスが同時に割り付けられて
いるプロセッサ群がプロセッサのグループを形成する。
第1図ではA1、A2、A3、A4がプロセスのグルー
プを形成しており、図のようなプロセッサの割当ての場
合はCPU1、CPU2、CPU3が一つのグループであり、CPU4は別
のグループである。UNIX(米国AT&T社の商標)
系のOSの場合、PPID(親プロセス識別子)をこのグル
ープの識別子として流用できる。なお説明を補助する目
的で図を用いるが、今後の図中での記法を説明してお
く。プロセスA2wとあれば、最初のAはグループ名を
次の2はグループ内でのプロセス名を最後のwはそのプ
ロセスが同期待ちであることを示す。同期待ちでないプ
ロセスではwの代りにrが用いられる。図の左端で長方
形の破線で囲まれたプロセスは実プロセッサの割当てを
待っているプロセスである。
同期待ち時に、実行中のプロセスが自らプロセスを中断
し、プロセスの交代を要求する条件の例として以下のよ
うなものが挙げられる。
[1]自分と同じグループに属するプロセッサが総て同
期待ちになり、実行待ちのプロセスが存在する時(第2
図(a)参照)。
[2]自分と同じグループに属するプロセスが総て同時
にプロセッサに割り付けられており、それら総てが同期
待ちになった時。但し、これはプログラミング・エラー
(デッド・ロック)と考えられる(第3図参照)。
[3]バリア同期を行うプロセス群で一つのグループを
形成しており、自分がそのグループの一員の場合、自分
のグループに属する実行待ちかつ同期待ちでないプロセ
スが存在する時(第4図(a)参照)。
[4]自分と同じグループに属する同期待ちのプロセッ
サの数がnを越え、実行待ちのプロセスが存在する時。
但し、nはOSまたはユーザーによって設定された値で
ある。
[5]自分と同じグループに属する同期待ちのプロセッ
サの数がnを越え、実行待ちの自分と同じグループのプ
ロセスが存在する時(第5図(a)参照)。
[1]、[2]、[3]の条件はプロセスを交代する方
が確実に効率が向上する条件で、[4]、[5]の条件
は発見法的で経験則からnの値を決めて効率の向上を狙
うものである。処理しているアプリケーションによって
nの値を調節して効率を上げるべきである。[4]、
[5]の条件については、同期待ちの絶対数で判断する
のではなく、同じグループに属するプロセッサ数とその
内の同期待ちの数の比率を基準にしてもよい。
これらの条件を満たすかどうかチェックするのに必要な
システムのプロセッサ資源に関する情報は、以下のよう
なものである。
#MGC (the number of My Group Cpus): 自分のグループに属するプロセッサの数(グループに属
するプロセスの内のプロセッサに割り付けられているも
のの数) #MWC (the number of My group Waiting Cpus): 自分のグループに属するプロセッサの内、同期待ちのプ
ロセッサの数 #MGP (the number of My Group Processes): 自分のグループに属するプロセスの総数 #PRQ (the number of Processes in Run Queue): 実行待ちのプロセスの数 #MPRQ (the number of My group Processes in Run Que
ue): 自分のグループに属する実行待ちのプロセスの数 #MNWR (the number of My group Not Waiting processe
s in Run queue): 自分のグループに属する実行待ちだが同期待ちでないプ
ロセスの数 TVPS (Threshold Value for Process Switch): 上述のn これらの値がユーザーのプロセスから低コストで参照で
きる必要があり、共有メモリ上にカーネル(OS)側か
らもユーザー側からもアクセスできる変数として置かれ
る。アクセス権の保護に関しては、#MWCのみ同期を行う
ユーザーのアプリケーションのプロセスからも書き込み
可能で、他はスケジューラ側のみから書き込める。スケ
ジューラはこれらの値をスケジューリング毎に必要に応
じて更新する。
上記で述べたプロセス切り換えのための条件判断を含む
効率のよいビジー・ウェイト同期方式についてフローチ
ャートに沿って説明する。同期変数のチェックやプロセ
ス切り換えの条件判断の具体的な方法等は、待ち合わせ
を行うプロセスの数や同期の種類によって異なる。しか
し便宜上、ここでは第6図の一つのフローチャートで待
ち合わせ処理の内容を示し、細かい差には言及しない。
第7図は従来の待ち合わせのためのループを示す。最良
の条件、つまり同期変数を初めてチェックするまえに同
期が成立し同期変数に同期成立の値がセットされている
場合において、第6図の方式のオーバーヘッドを従来の
方式と同じに抑えるために処理の頭で同期変数のチェッ
クを一度行っている(S1)。同期完了であれば当然す
ぐに待ち合わせ処理を終了する。一回目の同期変数のチ
ェックで同期未了の場合に限り、プロセッサが同期待ち
状態に入り(S2)、これにより影響を受ける変数(#M
WC等)を更新する(S3)。そして、システムのプロセ
ッサ資源に関する情報を読出して(S4)、前出の条件
によってプロセスを中断しスケジューラによるプロセス
の再スケジューリングを要求するかどうか判断する(S
5)。条件が成立すれば、影響を受ける変数(#MWC等)
を更新し(S6)、プロセッサの制御権を放棄するシス
テム呼出し等を行ってスケジューラを呼び出す(S
7)。条件が成立しなければ、新たに同期変数のチェッ
クを行なう(S11)。同期が成立していなければ、プ
ロセッサ資源に関する情報の読出しに戻って繰返す。同
期が成立していれば、プロセッサが同期待ち状態を抜
け、これにより影響を受ける変数(#MWC等)を更新し
(S12)、待ち合わせの処理を終了する(S9)。制
御権を放棄して、再びプロセッサに割り付けられた時
は、プロセス切り換えの条件判断が非成立の場合のフロ
ーに合流する(S8、S10)。
第6図で点線で囲まれた処理の部分は共有メモリへのア
クセスを不可分で排他的に行うべき部分(#MWCの更新)
を示す。つまり、共有バスのシステムではロックを掛け
てアクセスする部分を示す。以下の図でも同様である。
ハードウェア構成によっては共有変数へのアクセスの集
中の問題が存在する。それは同期待ちの処理の一番内側
のループでプロセッサ間で共有されるプロセッサ資源に
関する変数をアクセスしていることに起因する。内容の
コンシステンシを保つキャッシュ(スヌープ・キャッシ
ュ)等のハードウェアを持たないシステムでは頻繁にコ
ストの掛かる共有メモリへのアクセスが発生し、データ
通信路の通信の競合をまねく可能性がある。しかし、従
来の方法でも共有変数である同期変数へのアクセスを同
期待ちの処理の一番内側のループで行っているので事情
は同じである。よって、以下はシステムが内容のコンシ
ステンシを保つキャッシュ等のハードウェアを持ってい
ることを前提とする。
スヌープ・キャッシュ等を持ったシステムでは第8図の
ようにスピン・ロックを行えばオーバーヘッドを増やさ
ずに無駄なプロセス切り換えの要求を抑えられる。つま
り、第6図の方式では複数のプロセスで同時にプロセス
切り換えの条件が成立し、プロセス切り換え要求が集中
する可能性がある。そこで、第8図のように実際にプロ
セス切り換えを要求する部分をクリティカル領域として
排他制御することにより、その要求の集中を防いでい
る。ただし、ビジー・ウェイトの最内側ループにクリテ
ィカル領域の排他制御のための共有メモリへの排他アク
セス(バス・ロック等)が入ると、共有メモリへのアク
セスが集中してオーバーヘッドが大きくなる。そこで、
最内側ループではクリティカル領域とせずにプロセス切
り換えの条件判断を行ない、条件が成立したときに限
り、クリティカル領域に入り条件判断をし直す(スピン
・ロック、S4′、S5′)。なお、第8図の方式の場
合、スケジューラがプロセスを切り換えてシステムのプ
ロセッサ資源に関する変数を更新する際も、アクセスは
排他制御される。また第8図において第6図と対応する
個所には対応する符号を付して詳細な説明は省略する。
第6図に書かれている待ち状態フラグ(PWF:Process Wa
iting state Flag)と待ち状態カウンタ(PWC:Process W
aiting states Counter)はプロセス毎に設けられ、スケ
ジューラが#MNWRを計算するデータとなり、またスケジ
ューリングにヒントを与えることができる。詳しくは次
のE.1.3.節で述べる。
粒度が比較的小さいプログラムでは新しい方式のオーバ
ーヘッドが従来方式に比べて目立ってくる。例えば、数
十命令毎に同期を必要とするプロセス群があり、それら
が同時に総てプロセッサに割り当てられて実行されてい
る場合、同期待ち状態に入ったとしても同期はすぐ成立
するので同期待ちのループを1〜2回程度しか回らない
と考えられる。同期待ち状態でのループの繰返し毎の処
理量は第7図と第8図から比べても判るように、新しい
方式は従来に比べてかなり重たい。そのため、ループを
1〜2回しか回らない場合は、同期が成立した(同期変
数を誰かが書き替えた)時点から実際に成立を検出して
待ち合わせ処理を終了するまでのオーバーヘッドが目立
つようになる。そこで、プロセッサ外部からハードウェ
ア的にプロセッサが同期待ち状態にいるかどうか検知で
きる機構を用意して、同期待ち状態のプロセスを切り換
えるべきかどうかのチェックを専用ハードウェアに行わ
せ、割り込みで条件成立を通知すれば、プロセッサは第
9図のような待ち合わせ処理で済む。これにより前出の
場合でも従来方式と遜色がなくなる。
E.1.3.再スケジューリングの改善 第2図に条件[1]が成立した場合、第4図に条件
[3]が成立した場合、第5図に条件[5]が成立した
場合の再スケジューリングの進行の例を図示してある。
プロセッサの割当て待ちのプロセスが複数ある場合、ど
のプロセスをプロセス切り換え時にプロセッサに割り付
けるかが効率上問題である。また、第3図ではグループ
Aはデッド・ロックを起こしているので、再スケジュー
リングでAのグループのプロセスの実行をすべて止める
べきである。ここではスケジューラがどのように再スケ
ジューリングを実行すべきかについて述べる。また、プ
ロセッサ台数以上のプロセスで並列処理を行う場合は必
ず再スケジューリングが起こり、プロセスの粒度が細か
いときにはその頻度が非常に大きい。そこで、そのよう
な並列処理にも対応できるように再スケジューリングの
オーバーヘッドを極力削減する必要がある。オーバーヘ
ッドの少ない階層化されたスケジューラについても述べ
る。
前出の待ち状態フラグ(PWF)と待ち状態カウンタ(PWC)は
スケジューラが#MNWRを計算するデータとなり、またス
ケジューリングにヒントを与える。共に初期値は“O”
で、PWFはプロセスが同期待ち状態にあることを“1”
で示し、PWCは同期待ち状態になった回数を示す。PWF、P
WCによりスケジューラはプロセスが同じ同期待ち状態に
いるかどうか知ることができる。これにより、条件
[2]が成立していなくても、デッド・ロックが検出で
きる場合がある。あるグループのプロセス総てが同期待
ち状態の時、さらに総てのプロセスを1回ずつプロセッ
サに割り付けた後も、総てのプロセスが前と同じ同期待
ち状態にあるとすれば、それはデッド・ロックを意味し
処理を中止すべきである。また、同期待ち状態にないプ
ロセスに優先権を与えるというスケジューリング法が採
用できる。バリア同期では、バリア同期専用のPWCB(Pro
sess Waiting Counter for Barrier)を設ける。但し、
これはPWCとは異なり待ち合わせ処理を行った回数を示
す。つまり、第6図の頭の同期変数チェックの前に更新
する。同じグループ内のプロセスが全員でバリア同期を
行う場合は、同期毎にPWCBの値が揃うので、次にスケジ
ューリングすべきプロセスが判る。ただし、第4図(c)、
(d)のようにプロセッサの割当て待ちでかつ同期待ちの
プロセスは同期の成立時に同期待ちではなくなる。そこ
で、同期成立時に#MNWRを更新する必要がある。
この他にも、アプリケーションによっては同期を取り合
う頻度の高いプロセスの組み合わせといったことに関す
る情報が事前に得られる。そういったアプリケーション
毎の情報に基づいてスケジューリングを行えば、より良
いスケジューリングが行える。
つぎにスケジューラの階層化について説明する。
通常スケジューリングはOSのカーネル内で行なわれ
る。よって、ユーザーのプロセスが再スケジューリング
を行ってもらうためにはカーネルへのシステム呼出しを
行う必要がある。しかし、OS側のスケジューラではユ
ーザーのアプリケーション毎の木目細かなスケジューリ
ングは不可能である。また、OSのカーネルとユーザー
のプロセスが多くのデータを共有すると、それを通知し
あう手順が複雑になり、オーバーヘッドも増大する。さ
らに、システム呼出しそれ自身のオーバーヘッドがかな
り重たいので、軽くプロセスの切り換えを行うのは難し
い。そこで、スケジューラを階層化して、従来の実プロ
セッサを割り付けるためのスケジューラをカーネル・ス
ケジューラと呼び、その制御下にユーザー・スケジュー
ラを設ける(第10図参照)。ユーザー・スケジューラ
は同一のアプリケーションを協調して処理するプロセス
・グループ毎に設けられ、スケジューリング方式はユー
ザーが処理に応じて決定できる。カーネル・スケジュー
ラは実プロセッサ全体の管理を行ない、プロセス・グル
ープ毎にまとめて実プロセッサを割り付ける。ユーザー
・スケジューラはグループに割当てられたプロセッサ内
でのスケジューリングを実行する。また、ユーザー・ス
ケジューラはカーネル側(カーネル・モード)ではなく
ユーザー側(ユーザー・モード)で走る。そこで、プロ
セス切り換えの際、システム呼出し等のオーバーヘッド
がなく、効率が向上する。
プロセス切り換えの条件が成立した場合、ユーザー・ス
ケジューラに制御を渡し、そのプロセス・グループに適
したスケジューリング・アルゴリズムで次に割当てるべ
きプロセスを選び、そのプロセスに制御を渡す。これに
より、システム呼出しのオーバーヘッドなしにプロセス
をグループ内で切り換える。第11図はグループAが条
件[3]でユーザー・スケジューラ使ってプロセス切り
換えを行う例を示している。
カーネル・スケジューラは各プロセス・グループからプ
ロセッサの要求台数を受け取り、なるべく要求を満たす
ようにスケジューリングを行う。カーネル・スケジュー
ラはタイム・シェアリングのためのタイマ割り込み時ま
たは周辺装置の入出力を伴うシステム呼出し時またはユ
ーザー・スケジューラからのプロセッサ資源の追加要求
・返還時に起動する。カーネル・スケジューラによるス
ケジューリングの結果、空きプロセッサが必要になった
場合は優先度の低いプロセス・グループのプロセッサを
取り上げる(プリエンプトする)。
同期におけるプロセス切り換えの条件判断をハードウェ
ア化して、割り込みで条件成立をプロセッサに通知する
場合、この割り込みでユーザー・スケジューラが起動す
るようにしておく。実行モードにカーネル側とユーザー
側の区別があるプロセッサでは割り込み後はカーネル側
に制御が切り替わる。このような従来型のプロセッサを
使う時は、この割り込み時にはなるべくオーバーヘッド
なしにユーザー側に制御を返す必要がある。この点に関
し、積極的に以下のように割り込み機能を階層化したプ
ロセッサを用意すれば、オーバーヘッドの少ないユーザ
ー・モード内の割り込みが行える。優先度の違う外部割
り込みをプロセッサに用意し、優先度の低い外部割り込
みの内のいくつかにユーザー・モードの割り込みを設け
る。つまり、割り込みが発生したらユーザーが設定した
ルーチンにユーザー・モード内で制御を移す。残りの外
部割り込みは従来通りカーネル・モードへの割り込みで
ある。また、ユーザー・モードの割り込みは割り込みの
マスクの切り換え(割り込み許可・不許可の切り換え)
でユーザー側で自由にできる。このユーザー・モードの
割り込みを同期機構からの割り込みや同じグループ内の
プロセッサへの非同期の通信に使うと、カーネルに制御
が移行しないのでオーバーヘッドを減らすことができ
る。同期機構からの割り込みでは直接ユーザー・スケジ
ューラに制御が移るようにしておく。
E.2.具体的構成例 つぎに同期機構の具体的構成例について述べる。なおビ
ジー・ウェイトの処理のオーバーヘッドを減らすため、
プロセス切り換えの条件判断はハードウェアで行う。ス
ケジューラはE.1.3.節に従って階層化されたもの
がソフトウェアで実現されているとする。ここでは主に
同期機構のハードウェア側とこれを用いるビジー・ウェ
イトの処理について述べる。
第12図に全体構成を示す。この図においてデータ通信
路は共有バス1とした。プロセッサCPU1、CPU
2、・・CPUn毎に同期コントローラSC1、CS
2、・・SCnが設けられ、同期コントローラ間はプロ
セッサ台数分の信号線を持つ同期信号バス(ブロード・
キャスト型の信号線)2で結合されている。各プロセッ
サと同期コントローラの間はコントローラ内のレジスタ
やフラグを読み書きするためのデータ線とコントローラ
からプロセッサへの割り込み線(前出のユーザー・モー
ドの割り込み)で結合している。
第13図に同期コントローラSC1の構成を示す。なお
他の同期コントローラの構成も同様である。この図にお
いて同期コントローラSC1、SC2、・・SCn毎に
同期信号バス上の特定の一本の信号線が割り当てられて
おり、その信号線に対してのみ信号(“0”か“1”の
2値)を出力できる。この出力はコントローラ内の同期
待ち出力フラグ(SOF)またはバリア同期用同期待ち出力
フラグ(BSOF)に対応しており、SOF(またはBSOF)がセ
ットされると信号線に“1”が出力され、SOF(BSOF)が
リセットされると“0”が出力される。初期状態として
SWF、BSWFはリセットされており、プロセッサが共有メモ
リ4を介しての同期待ちのループに入るまえにSOF(BSO
F)をセットし、ループを抜けるとリセットするようにプ
ログラミングする(第9図参照)。これにより、同期待
ち状態のプロセッサに対応する同期信号バスの信号線は
総て1になる。また、同期コントローラ内には各同期信
号線に各ビットが対応するグループ・レジスタ3があ
り、自分と同じグループに属するコントローラの対応す
るビットに“1”がスケジューラによってセットされて
いる。これにより、同期コントローラは自分の属するグ
ループのプロセッサが同期待ち状態にあるかどうか区別
できる。本同期コントローラは2つの動作モードを持っ
ており、モード1は(1)の問題に対応し、モード2は
(2)の問題とバリア同期における(1)の問題(条件
[3])に対応している。同じグループ内では一時点には
どちらか一方のモードしか選択できないが、グループが
異なればモードは異なっても構わない。モードの切り換
えはコントローラ内のレジスタ(MODE)で行なわれる。
グループで共通なレジスタやフラグは共有バスを通して
同時に書き替えることができる。つまり、スケジューラ
が共有バスにグループを特定した同期コントローラへの
命令を出力でき、それによってグループ内のコントロー
ラのレジスタが書き替わる。同様にしてスケジューラは
自分が動作しているプロセッサ以外に接続しているコン
トローラのレジスタも変更できる。このようにスケジュ
ーラによって設定されるレジスタ類は第13図ではグル
ープ・レジスタ3、MODE、UM、KM、PRQフラグ、TVPS1、
TVPS2、MPRQフラグ、MNWRフラグ、PCOUNTである。この
内UM、KMはユーザー・スケジューラとカーネル・スケジ
ューラのための割り込みマスクで、これが一方でもセッ
トされるとプロセッサへの割り込みが禁止される。ユー
ザー・スケジューラはUMだけを変更できる。当然、カー
ネル・スケジューラは総てのレジスタとフラグを変更で
きる。PRQフラグ、TVPS1、TVPS2、MPRQフラグ、MNWRフ
ラグはプロセッサ資源に関する情報を格納するレジスタ
類である。PRQフラグ、MPRQフラグ、MNWRフラグはそれ
ぞれE.1.2.節の#PQR、#MPRQ、#MNWRに対応してお
り、計数が0であればフラグはリセット、計数が0以外
ではフラグがセットされる。TVPS1、(またはTVPS2)は
条件[1]、[2]、[4]、[5]で#MWCの数と比較
すべき数を設定するためのレジスタである。例えば、条
件[1]、[2]の検出にはこれを#MGCに設定する。PC
OUNTはカーネルによるグループ内のプロセスのプリエン
プトの発生回数を計数するカウンタである。カーネル・
スケジューラがプリエンプトの際に1だけカウント・ア
ップを行ない、ユーザー・スケジューラがプリエンプト
に対する処理が済むとカウント・ダウンさせる。これに
より、プリエンプトの発生をコントローラが把握し誤動
作を防ぐ。
まず、モード1の動作をのべる。同期コントローラ内に
は前述のようにプロセッサ資源に関する情報を格納する
レジスタ類があり、スケジューラにより値がセットして
ある。#MWCについては同期コントローラが同期信号バス
を監視して常時把握している。システムの状態について
前出の[1]〜[5]条件のチェックをハードウェアで
行ない、条件を満たすとプロセッサに割り込み信号を出
力し、OSによるプロセスの再スケジューリングを要求
する。
次に、モード2の動作について述べる。同期コントロー
ラ内に前出のレジスタやフラグの他に読出し専用のバリ
ア同期成立フラグ(BF)が存在する。但し、スケジューラ
からは副作用なしに読み書きが可能である。このBFフラ
グはMNWRフラグがリセット(“0”)で、PCOUNTが0
で、且つ自分の属するグループの総てのプロセッサが同
期待ち状態のときに“1”にセットされる。そして、こ
のフラグが値“1”としてプロセッサから読み出される
と、コントローラは以下の動作後BFフラグを自動的にリ
セットする。まず、自分の同期信号線とBSOFを“0”に
して、MPRQフラグが“0”でない場合コントローラ内の
MNWRフラグを“1”にセットする。この後、BFフラグを
リセットする。プログラムはこのBFフラグを使って待ち
合わせを行う。また、モード1ではBSOFをセットして同
期信号線を“1”にしているが、このモードではBSOFの
自動リセット同様にBFフラグの同期成立後最初の読出し
で自動的にセットできるのでビジー・ウェイト処理内で
セットする必要はない。同様に、PWCBのカウント・アッ
プも自動化できる。結局、待ち合わせの処理は第14図
のフローチャートのようになる。スケジューラによるプ
ロセスの生成削除の際の誤動作を防ぐため以下のように
制御する。例えば、バリア同期に参加するプロセスの生
成時はコントローラ内のMNWRフラグに“1”を設定して
おき、割り込みは禁止しておく、そしてプロセスが総て
生成された後に正しいMNWRフラグを設定し、割り込みを
許可する。また、同期コントローラは[3]の条件のチ
ェックを行う。条件が成立するとプロセスを切り換えさ
せるためプロセッサに割り込みを発生させる。但し、PC
OUNTが0以外のときも#MNWRが0でない場合と同じに扱
い、誤動作を防ぐ。
同期コントローラ内のレジスタはプロセス切り換え発生
毎に適宜更新され、プロセス入替えられるプロセッサの
同期コントローラのSOF、BSOF、BF、MNWRフラグ(BFはスケ
ジューラからは自動セット・リセット等の副作用動作を
伴わずに読み書き出来る)等は入替え前の値が退避さ
れ、再びそのプロセスが割り付けられた際に、再設定さ
れる。
F.発明の効果 以上説明したようにこの発明によれば、マルチプロセッ
サ・システム上で同期を取りながら走るプロセスが同時
に実プロセッサに割り付けられている場合は非常に軽
く、プロセッサ資源の台数の制限とスケジューリングの
都合で同時に割り付けられない場合でも効率よくプロセ
ッサ資源を使える同期が実現できる。
【図面の簡単な説明】
第1図は従来のプロセスのプロセッサへの割当てを説明
する図、第2図ないし第5図はこの発明の一実施例で採
用する再スケジュール要求の条件を説明する図、第6図
は上述一実施例を説明するフローチャート、第7図は第
6図例に対応する従来の動作を説明するフローチャー
ト、第8図、第9図および第10図は第6図例の変形例
を示す図、第11図は第10図変形例を説明する図、第
12図および第13図は第6図例の具体的な構成例を示
すブロック図、第14図は第13図を説明するフローチ
ャートである。 1……共有バス、2……同期信号バス、4……共有メモ
リ、CPU……プロセッサ、SC……同期コントロー
ラ。

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】複数のプロセッサおよび共有メモリを具備
    するマルチプロセッサ・システムにおいて各プロセスが
    同期待ち状態に進むときに、上記共有メモリに記憶され
    た同期変数をチェックし、同期が成立しているときには
    同期待ち状態を終了し、同期が未成立のときには同期待
    ち状態を継続するマルチプロセッサ・システムのプロセ
    ス同期方法において、 上記プロセスの各々が同期待ち状態に進むときに、さら
    に、 上記共有メモリに記憶されているプロセス同期に関連す
    る所定の情報をチェックし、同期の成立の可能性に関す
    る所定の条件が成立しているかどうかを判別するステッ
    プと、 上記条件が未成立であると判別されたときに同期待ち状
    態を継続するステップと、 上記条件が成立すると判別されたときに再スケジュール
    を要求するステップを実行することを特徴とするマルチ
    プロセッサ・システムのプロセス同期方法。
  2. 【請求項2】複数のプロセッサでそれぞれ実行されてい
    るプロセスの間の同期を、共有メモリに記憶されている
    同期変数を上記プロセスの各々がチェックして実行する
    マルチプロセッサ・システムにおいて、 上記プロセッサの各々に、当該プロセッサで実行されて
    いるプロセスが同期待ち状態に進むときに、上記共有メ
    モリに記憶されているプロセス同期に関連する所定の情
    報をチェックし、同期の成立の可能性に関する所定の条
    件が成立しているときに再スケジュール要求を送出する
    手段を設け、さらに、 上記再スケジュールの要求に基づいてプロセスの再スケ
    ジュールを実行するスケジュール手段を有することを特
    徴とするマルチプロセッサ・システム。
  3. 【請求項3】複数のプロセッサでそれぞれ実行されてい
    るプロセスの間の同期を共有メモリに記憶されている同
    期変数を各プロセスがチェックして実行するマルチプロ
    セッサ・システムにおいて、 上記プロセッサの各々に、 上記共有メモリに記憶されているプロセス同期に関連す
    る所定の情報を受け取って記憶する記憶手段と、 当該プロセッサで実行されているプロセスが同期待ち状
    態に進むときに、上記記憶手段に記憶されている上記情
    報をチェックし、同期の成立の可能性に関する所定の条
    件が成立しているときに再スケジュール要求を送出する
    手段とを設け、さらに、 上記再スケジュールの要求に基づいてプロセスの再スケ
    ジュールを実行する手段を有することを特徴とするマル
    チプロセッサ・システム。
  4. 【請求項4】上記所定の情報はプロセスのプロセッサへ
    の割り当てに関する情報、プロセスのグループ分けに関
    する情報およびプロセスの同期に関する情報とした特許
    請求の範囲第2項または第3項記載のマルチプロセッサ
    ・システム。
  5. 【請求項5】上記スケジュール手段はオペレーティング
    ・システムとは別個にアプリケーションごとに設けら
    れ、再スケジュールの要求時に制御をオペレーション・
    システムに移行させないようにした特許請求の範囲第3
    項記載のマルチプロセッサ・システム。
  6. 【請求項6】上記再スケジュール要求を送出する手段
    は、対応するプロセッサに対して優先度の低い外部割り
    込み信号を送出し、この優先度の低い外部割り込み信号
    に基づいて、上記オペレーティング・システムとは別個
    にアプリケーションごとに設けられた対応するスケジュ
    ール手段が再スケジュールを実行し、より高い優先度の
    外部割り込み信号で上記オペレーティング・システムへ
    制御を移管するようにした特許請求の範囲第5項記載の
    マルチプロセッサ・システム。
  7. 【請求項7】上記プロセッサはそれぞれプライベート・
    キャッシュを有し、それぞれのプライベート・キャッシ
    ュを介して共有メモリの内容をアクセスする特許請求の
    範囲第2項ないし第6項記載のマルチプロセッサ・シス
    テム。
  8. 【請求項8】複数のプロセッサで実行されているプロセ
    スの間のバリア同期を実行するマルチプロセッサ・シス
    テムにおいて、 上記プロセッサの各々に、 上記共有メモリに記憶されているプロセス同期に関連す
    る所定の情報を受け取って記憶する第1の記憶手段と、 当該プロセッサとバリア同期される他のプロセッサを指
    定する第2の記憶手段と、 他のプロセッサの各々から同期待ちに関する信号を受け
    取る同期待ち状態信号受信手段と、 当該プロセッサで実行されているプロセスが同期待ち状
    態に進むときに、上記第1および第2の記憶手段に記憶
    されている情報および上記同期待ち状態信号受信手段の
    出力に基づいて、当該プロセッサとバリア同期される他
    のプロセッサの中に同期待ちでなく、かつ実行待ちであ
    るものがあり、そのままではバリア同期が成立しない場
    合であるかどうかを判別し、成立しないときは再スケジ
    ュール要求を送出する手段とを設け、さらに、 上記プロセッサの各々の同期待ち状態信号受信手段を相
    互に接続する同期信号バスと、 上記再スケジュールの要求に基づいてプロセスの再スケ
    ジュールを実行する手段を有することを特徴とするマル
    チプロセッサ・システム。
  9. 【請求項9】複数のプロセッサでそれぞれ実行されてい
    るプロセスの間の同期を共有メモリに記憶されている同
    期変数を各プロセスがチェックして実行するマルチプロ
    セッサ・システムにおいて、 上記プロセッサの各々に、 上記共有メモリに記憶されているプロセス同期に関連す
    る所定の情報を受け取って記憶する第1の記憶手段と、 当該プロセッサとバリア同期される他のプロセッサを指
    定する第2の記憶手段と、 他のプロセッサの各々から同期待ちに関する信号を受け
    取る同期待ち状態信号受信手段と、 当該プロセッサで実行されているプロセスが同期待ち状
    態に進むときに、上記第1および第2の記憶手段に記憶
    されている情報および上記同期待ち状態信号受信手段の
    出力に基づいて、当該プロセッサとバリア同期される他
    のプロセッサの中に同期待ちでなく、かつ実行待ちであ
    るものがあり、そのままではバリア同期が成立しないと
    いう条件および他の同期の成立の可能性に関する所定の
    条件が成立しているときに再スケジュール要求を送出す
    る手段とを設け、さらに、 上記プロセッサの各々の同期待ち状態信号受信手段を相
    互に接続する同期信号バスと、 上記再スケジュールの要求に基づいてプロセスの再スケ
    ジュールを実行する手段を有することを特徴とするマル
    チプロセッサ・システム。
JP1277334A 1989-10-26 1989-10-26 マルチプロセッサ・システムおよびそのプロセス同期方法 Expired - Lifetime JPH0640324B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP1277334A JPH0640324B2 (ja) 1989-10-26 1989-10-26 マルチプロセッサ・システムおよびそのプロセス同期方法
EP19900311794 EP0425320A3 (en) 1989-10-26 1990-10-26 Multiprocessor system and process synchronisation method therefor
US07/944,803 US5448732A (en) 1989-10-26 1992-09-14 Multiprocessor system and process synchronization method therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1277334A JPH0640324B2 (ja) 1989-10-26 1989-10-26 マルチプロセッサ・システムおよびそのプロセス同期方法

Publications (2)

Publication Number Publication Date
JPH03144847A JPH03144847A (ja) 1991-06-20
JPH0640324B2 true JPH0640324B2 (ja) 1994-05-25

Family

ID=17582080

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1277334A Expired - Lifetime JPH0640324B2 (ja) 1989-10-26 1989-10-26 マルチプロセッサ・システムおよびそのプロセス同期方法

Country Status (3)

Country Link
US (1) US5448732A (ja)
EP (1) EP0425320A3 (ja)
JP (1) JPH0640324B2 (ja)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282583B1 (en) * 1991-06-04 2001-08-28 Silicon Graphics, Inc. Method and apparatus for memory access in a matrix processor computer
DE4497320T1 (de) * 1993-09-27 1996-11-21 Oracle Corp Verfahren und Vorrichtung zur parallelen Verarbeitung in einem Datenbanksystem
JP2550897B2 (ja) * 1993-11-29 1996-11-06 日本電気株式会社 マルチプロセッサシステムのバリア同期装置
US5600822A (en) * 1994-04-05 1997-02-04 International Business Machines Corporation Resource allocation synchronization in a parallel processing system
US5560018A (en) * 1994-12-16 1996-09-24 International Business Machines Corporation Providing external interrupt serialization compatibility in a multiprocessing environment for software written to run in a uniprocessor environment
US6105053A (en) * 1995-06-23 2000-08-15 Emc Corporation Operating system for a non-uniform memory access multiprocessor system
US6487580B1 (en) * 1995-09-25 2002-11-26 International Business Machines Corporation Method and system for managing concurrently executable computer processes
DE19620622A1 (de) * 1996-05-22 1997-11-27 Siemens Ag Verfahren zur Synchronisation von Programmen auf unterschiedlichen Computern eines Verbundes
JP3532037B2 (ja) * 1996-07-31 2004-05-31 富士通株式会社 並列計算機
US6330619B1 (en) * 1996-09-04 2001-12-11 Siemens Nixdorf Informationssysteme Aktiengesellschaft Method of synchronization
JPH10149285A (ja) * 1996-11-18 1998-06-02 Hitachi Ltd 命令実行制御方法および情報処理装置
US6029204A (en) * 1997-03-13 2000-02-22 International Business Machines Corporation Precise synchronization mechanism for SMP system buses using tagged snoop operations to avoid retries
US5875320A (en) * 1997-03-24 1999-02-23 International Business Machines Corporation System and method for synchronizing plural processor clocks in a multiprocessor system
US6763519B1 (en) * 1999-05-05 2004-07-13 Sychron Inc. Multiprogrammed multiprocessor system with lobally controlled communication and signature controlled scheduling
US7165252B1 (en) * 1999-06-21 2007-01-16 Jia Xu Method of scheduling executions of processes with various types of timing properties and constraints
US6615281B1 (en) * 2000-05-05 2003-09-02 International Business Machines Corporation Multi-node synchronization using global timing source and interrupts following anticipatory wait state
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
EP1459202A2 (en) * 2001-10-31 2004-09-22 Thermo CRS Ltd. A backtracking resources planning algorithm
JP2003263331A (ja) * 2002-03-07 2003-09-19 Toshiba Corp マルチプロセッサシステム
CA2419340A1 (en) * 2003-02-20 2004-08-20 Ibm Canada Limited - Ibm Canada Limitee Software barrier synchronization
US7418706B1 (en) * 2003-05-08 2008-08-26 Teradota Us, Inc. Rescheduling table scan transactions
US20040267897A1 (en) * 2003-06-24 2004-12-30 Sychron Inc. Distributed System Providing Scalable Methodology for Real-Time Control of Server Pools and Data Centers
US7496917B2 (en) * 2003-09-25 2009-02-24 International Business Machines Corporation Virtual devices using a pluarlity of processors
US7523157B2 (en) * 2003-09-25 2009-04-21 International Business Machines Corporation Managing a plurality of processors as devices
US7415703B2 (en) * 2003-09-25 2008-08-19 International Business Machines Corporation Loading software on a plurality of processors
US7444632B2 (en) * 2003-09-25 2008-10-28 International Business Machines Corporation Balancing computational load across a plurality of processors
US7478390B2 (en) * 2003-09-25 2009-01-13 International Business Machines Corporation Task queue management of virtual devices using a plurality of processors
US7389508B2 (en) * 2003-09-25 2008-06-17 International Business Machines Corporation System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment
US7549145B2 (en) * 2003-09-25 2009-06-16 International Business Machines Corporation Processor dedicated code handling in a multi-processor environment
US20050149940A1 (en) * 2003-12-31 2005-07-07 Sychron Inc. System Providing Methodology for Policy-Based Resource Allocation
US7937709B2 (en) 2004-12-29 2011-05-03 Intel Corporation Synchronizing multiple threads efficiently
US7735089B2 (en) * 2005-03-08 2010-06-08 Oracle International Corporation Method and system for deadlock detection in a distributed environment
US7895596B2 (en) * 2005-09-13 2011-02-22 Hewlett-Packard Development Company, L.P. Processor assignment in multi-processor systems
US20070234033A1 (en) * 2006-03-28 2007-10-04 Bade Steven A Method for establishing secure distributed cryptographic objects
US8065681B2 (en) * 2007-10-12 2011-11-22 International Business Machines Corporation Generic shared memory barrier
JP2009251802A (ja) * 2008-04-03 2009-10-29 Panasonic Corp マルチプロセッサシステムおよびマルチプロセッサシステムの割込み制御方法
JP5447807B2 (ja) * 2009-08-07 2014-03-19 株式会社日立製作所 バリア同期方法及び計算機
JP2013210853A (ja) * 2012-03-30 2013-10-10 Fujitsu Ltd 情報処理装置、同期処理実行管理方法、及びプログラム
CN103377086A (zh) * 2012-04-27 2013-10-30 华为技术有限公司 用于异步多核系统操作共享资源的方法、装置及系统
US9652300B2 (en) * 2012-06-28 2017-05-16 Intel Corporation Systems, methods, and computer program products for preemption of threads at a synchronization barrier
JP6074932B2 (ja) * 2012-07-19 2017-02-08 富士通株式会社 演算処理装置及び演算処理方法
KR101501129B1 (ko) * 2013-08-23 2015-03-12 주식회사 고영테크놀러지 기판 검사 장치
JP6164046B2 (ja) * 2013-10-31 2017-07-19 富士通株式会社 情報処理システム、管理装置、管理方法
EP2937783B1 (en) * 2014-04-24 2018-08-15 Fujitsu Limited A synchronisation method
JP7095620B2 (ja) * 2019-02-21 2022-07-05 株式会社デンソー 演算装置
CN112052099B (zh) * 2020-09-03 2025-01-28 上海兆芯集成电路股份有限公司 微处理器及其处理核心的同步方法
CN112291029B (zh) * 2020-11-02 2024-05-28 温州大学 一种系统同步方法
CN112395095A (zh) * 2020-11-09 2021-02-23 王志平 一种基于cpoc的进程同步方法
CN112379981B (zh) * 2020-11-12 2024-08-16 中国人民解放军海军工程大学 面向分布式实时仿真任务的无锁同步方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4387427A (en) * 1978-12-21 1983-06-07 Intel Corporation Hardware scheduler/dispatcher for data processing system
FR2471631B1 (fr) * 1979-12-11 1986-02-21 Cii Honeywell Bull Dispositif de synchronisation et d'affectation de processus entre plusieurs processeurs dans un systeme de traitement de l'information
US4318173A (en) * 1980-02-05 1982-03-02 The Bendix Corporation Scheduler for a multiple computer system
GB8309770D0 (en) * 1983-04-11 1983-05-18 Inmos Ltd Microcomputer
WO1989000734A1 (en) * 1987-07-21 1989-01-26 Stellar Computer Inc. Detecting multiple processor deadlock
US5050070A (en) * 1988-02-29 1991-09-17 Convex Computer Corporation Multi-processor computer system having self-allocating processors

Also Published As

Publication number Publication date
EP0425320A2 (en) 1991-05-02
EP0425320A3 (en) 1991-07-03
JPH03144847A (ja) 1991-06-20
US5448732A (en) 1995-09-05

Similar Documents

Publication Publication Date Title
JPH0640324B2 (ja) マルチプロセッサ・システムおよびそのプロセス同期方法
Lampson A scheduling philosophy for multiprocessing systems
EP1839146B1 (en) Mechanism to schedule threads on os-sequestered without operating system intervention
EP1027650B1 (en) Method and apparatus for altering thread priorities in a multithreaded processor
US7325148B2 (en) Power supply management system in parallel processing system by OS for single processors and power supply management program therefor
US7526673B2 (en) Parallel processing system by OS for single processors and parallel processing program
JP2005284749A (ja) 並列処理コンピュータ
CN115964150A (zh) 一种基于双实时内核的业务处理方法、系统、设备及介质
US7565659B2 (en) Light weight context switching
WO2005048009A2 (en) Method and system for multithreaded processing using errands
Yu et al. Colab: a collaborative multi-factor scheduler for asymmetric multicore processors
JP3546694B2 (ja) マルチスレッド計算機システム及びマルチスレッド実行制御方法
WO2006124750A1 (en) Transparent support for operating system services
Manner Hardware task/processor scheduling in a polyprocessor environment
Molesky et al. Implementing a predictable real-time multiprocessor kernel-the Spring kernel
US11243800B2 (en) Efficient virtual machine memory monitoring with hyper-threading
WO2003040948A1 (en) Computer and control method
CN120216124A (zh) 一种用户中断事件回调机制实现方法
US20240231867A9 (en) Paravirtual pause loops in guest user space
Betti et al. Hard real-time performances in multiprocessor-embedded systems using asmp-linux
US12411704B2 (en) Efficient central processing unit overcommit for virtual machines with symmetric multi-processing
JPH04283849A (ja) マルチプロセッサシステム
JP2010026575A (ja) スケジューリング方法およびスケジューリング装置並びにマルチプロセッサシステム
JP4127354B2 (ja) マルチプロセッサ制御プログラム及びマルチプロセッサ制御方法
JPH01137359A (ja) プロセッサの制御方法