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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/458—Synchronisation, e.g. post-wait, barriers, locks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/167—Interprocessor 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の管理の下で実
プロセッサの割当てを受け処理を実行する。この割当て
をプロセススケジューリング(以下単にスケジューリン
グという)と呼び、一つのプロセスに対し一つの実プロ
セッサが割当てられる。並列処理では協調して動作する
複数のプロセスを用意して、プロセス間で同期を取りな
がら処理を進める。この同期の方法には一般には次の二
つの方法が用いられている。一つはOSを介して同期を
行う方法で、もう一つはプロセス間の共有メモリを介し
て同期を行う方法である。同期のためには同期を取り合
うプロセス間で同期情報を交換するための共有の実体が
必要になる。前者はその実体としてOSを後者はメモリ
を用いている。
次に従来の同期法における問題点について述べる。
OSを介して同期を実行する場合は、同期が成立しなか
ったプロセスはプロセッサの割り当てを外され休止状態
になり、空いたプロセッサには他のプロセスが割付られ
る。よって、プロセッサ資源は効率的に使われる。しか
し、OSを介しての同期はオーバーヘッドが大きく、こ
のため休止状態になったり、再びプロセッサに割付られ
たりということを繰返すと著しく効率が低減する。プロ
グラムの粒度(同期から次の同期までの間隔)が十分に
大きければ、このオーバーヘッドは無視できるが、通常
は無視できない。オーバーヘッドを少なくするためのO
Sを介しての同期ではなく共有メモリを介してのビジー
・ウェイトで同期を行うときにはこのような問題はなく
なるが、他の問題が生じる場合がある。前述のようにO
Sは一つの実プロセッサに一つのプロセスを割付ける。
このスケジューリング時に、複数の特定のプロセスを同
時に複数のプロセッサに割付るといった指定が通常でき
ない。そこで、ある並列処理のために複数のプロセスを
生成し、それらがお互に同期しながら動くようなプログ
ラムを考える。スケジューリングの都合で、そのプロセ
ス群の内のいくつかはプロセッサの割当てを受け、残り
はプロセッサの割当て待ちの状態になっているとする
と、同期を取るべき時に相手のプロセスがプロセッサに
スケジューリングされておらず、同期がすぐには成立さ
せられずプロセッサが無駄なビジー・ウェイトを行うと
いった事態が起こる。つまり、第1図のようにプロセス
がプロセッサに割当てられており、A1、A2、A3の
プロセスがA4のプロセスの処理結果を使うためにビジ
ー・ウェイトの同期でループしているといった事態であ
る。この場合、CPU時間は消費するが、タイム・スラ
イスか何かで再スケジューリングが起こって、A4のプ
ロセスが実プロセッサに割当てられるまで、プログラム
は何も進展しない。また、共有メモリを介してのビジー
・ウェイトで複数のプロセスが同時に一点で待ち合わせ
を行うバリア同期を行うと、スケジューリングの問題の
他にも、マルチプロセッサ上で同期のための排他的メモ
リ・アクセスが集中して、データ通信路の競合等のオー
バーヘッドを引き起こすといった問題もある。
ったプロセスはプロセッサの割り当てを外され休止状態
になり、空いたプロセッサには他のプロセスが割付られ
る。よって、プロセッサ資源は効率的に使われる。しか
し、OSを介しての同期はオーバーヘッドが大きく、こ
のため休止状態になったり、再びプロセッサに割付られ
たりということを繰返すと著しく効率が低減する。プロ
グラムの粒度(同期から次の同期までの間隔)が十分に
大きければ、このオーバーヘッドは無視できるが、通常
は無視できない。オーバーヘッドを少なくするためのO
Sを介しての同期ではなく共有メモリを介してのビジー
・ウェイトで同期を行うときにはこのような問題はなく
なるが、他の問題が生じる場合がある。前述のようにO
Sは一つの実プロセッサに一つのプロセスを割付ける。
このスケジューリング時に、複数の特定のプロセスを同
時に複数のプロセッサに割付るといった指定が通常でき
ない。そこで、ある並列処理のために複数のプロセスを
生成し、それらがお互に同期しながら動くようなプログ
ラムを考える。スケジューリングの都合で、そのプロセ
ス群の内のいくつかはプロセッサの割当てを受け、残り
はプロセッサの割当て待ちの状態になっているとする
と、同期を取るべき時に相手のプロセスがプロセッサに
スケジューリングされておらず、同期がすぐには成立さ
せられずプロセッサが無駄なビジー・ウェイトを行うと
いった事態が起こる。つまり、第1図のようにプロセス
がプロセッサに割当てられており、A1、A2、A3の
プロセスがA4のプロセスの処理結果を使うためにビジ
ー・ウェイトの同期でループしているといった事態であ
る。この場合、CPU時間は消費するが、タイム・スラ
イスか何かで再スケジューリングが起こって、A4のプ
ロセスが実プロセッサに割当てられるまで、プログラム
は何も進展しない。また、共有メモリを介してのビジー
・ウェイトで複数のプロセスが同時に一点で待ち合わせ
を行うバリア同期を行うと、スケジューリングの問題の
他にも、マルチプロセッサ上で同期のための排他的メモ
リ・アクセスが集中して、データ通信路の競合等のオー
バーヘッドを引き起こすといった問題もある。
上述からも示唆されるように、プロセスの同期とスケジ
ューリングは密接な関係を持っている。アプリケーショ
ンや特定の並列処理プログラムにおいては、スケジュー
リングを調節することによって効率を上げることができ
る。しかし、現状のOSでは総てのプロセスを同じアル
ゴリズムに基づいてスケジューリングを行っているので
アプリケーション毎のスケジューリングの調節といった
ことができない。
ューリングは密接な関係を持っている。アプリケーショ
ンや特定の並列処理プログラムにおいては、スケジュー
リングを調節することによって効率を上げることができ
る。しかし、現状の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 この文献には同期用の特別なインストラクション列によ
り同期をとるときに、すべてのプロセスが同期待ち状態
なら、フォールト信号をハードウェアが生成することを
開示している。しかしこの文献では共有メモリのプロセ
ッサ情報(後述のようにプロセッサへのプロセスの割り
当て、プロセスのグループ分けおよびプロセスの同期に
関する情報)を用いてプロセスが所定の条件をチェック
して自らが再スケジュール要求を行って効率のよいプロ
セス同期を実現できるようにすることについてはなんら
示唆していない。
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)の文献にはバリア同期を集中的にハード
ウェアで実行する構成が開示されているが、同期待ちに
対する工夫は示唆されていない。
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 この文献にはバリア同期に関する一般的解説がなされて
いる。
ture,Addison-Wesley,Reading,Massachusetts,1987 この文献にはバリア同期に関する一般的解説がなされて
いる。
C.発明が解決しようとする問題点 この発明は以上の事情を考慮してなされたものであり、
プロセッサ間の同期に伴うオーバーヘッドと無意味なス
ケジューリングを極力抑えた高性能なマルチプロセッサ
・システムを提供することを目的としている。
プロセッサ間の同期に伴うオーバーヘッドと無意味なス
ケジューリングを極力抑えた高性能なマルチプロセッサ
・システムを提供することを目的としている。
D.問題を解決するための手段 この発明では、以上の目的を達成するために、オーバー
ヘッドを減らすため共有メモリを介しての同期を採用
し、システムのプロセッサ資源に関する情報(プロセッ
サへのプロセスの割り当て、プロセスのグループ分けお
よびプロセスの同期に関する情報)をユーザーからアク
セスできるようにしておき、ビジー・ウェイトの同期待
ちのループで同期変数のチェックだけではなく、プロセ
ッサ資源に関する情報もチェックし、そのチェックの結
果、同期が暫く成立しない状況と判断されるときはビジ
ー・ウェイト中のプロセスは自らプロセスの実行を中断
し、スケジューラに制御を移し、再スケジューリングを
行わせプロセッサへのプロセスの割当てを変更する。
ヘッドを減らすため共有メモリを介しての同期を採用
し、システムのプロセッサ資源に関する情報(プロセッ
サへのプロセスの割り当て、プロセスのグループ分けお
よびプロセスの同期に関する情報)をユーザーからアク
セスできるようにしておき、ビジー・ウェイトの同期待
ちのループで同期変数のチェックだけではなく、プロセ
ッサ資源に関する情報もチェックし、そのチェックの結
果、同期が暫く成立しない状況と判断されるときはビジ
ー・ウェイト中のプロセスは自らプロセスの実行を中断
し、スケジューラに制御を移し、再スケジューリングを
行わせプロセッサへのプロセスの割当てを変更する。
またこの発明ではプロセッサ間の同期が複数のプロセッ
サが一斉に待ち合わせを行うバリア同期用に、プロセッ
サ毎に専用レジスタを設け、そのレジスタ間の情報を交
換する専用の通信路を用意して、バリア同期のオーバー
ヘッドを軽くする。
サが一斉に待ち合わせを行うバリア同期用に、プロセッ
サ毎に専用レジスタを設け、そのレジスタ間の情報を交
換する専用の通信路を用意して、バリア同期のオーバー
ヘッドを軽くする。
また、プロセッサ資源に関する情報をチェックするため
に生ずるオーバーヘッドを軽くするために支援ハードウ
ェアを設け、再スケジューリングの開始は割り込みで通
知されるようにしてもよい。
に生ずるオーバーヘッドを軽くするために支援ハードウ
ェアを設け、再スケジューリングの開始は割り込みで通
知されるようにしてもよい。
さらに再スケジューリングの際に最適なスケジューリン
グが行えるように、スケジューラのユーザーによるカス
タマイズを可能にしてもよい。また、これをOSの管理
下で可能にするためスケジューラを階層化してもよい。
すなわちアプリケーションを実行するために並列に動く
プロセス群はそのアプリケーションのためのユーザーの
スケジューラの直接の管理下に置かれる。さらに、再ス
ケジューリングを指示する割り込みのオーバーヘッドを
減らすためとユーザーのスケジューラが複数のプロセッ
サに対してなるべく小さなオーバーヘッドで非同期通信
を可能にするために、プロセッサの割り込みを階層化し
てその内の優先度の低いものはユーザーに解放された割
り込みとする。つまり、その割り込みがユーザーのプロ
グラムを実行中(ユーザー・モード中)に起こった場
合、ユーザーが予め設定した割り込みプログラムに制御
を移すだけでOS(カーネル・モード)には制御を移さ
ないようにするのである。
グが行えるように、スケジューラのユーザーによるカス
タマイズを可能にしてもよい。また、これをOSの管理
下で可能にするためスケジューラを階層化してもよい。
すなわちアプリケーションを実行するために並列に動く
プロセス群はそのアプリケーションのためのユーザーの
スケジューラの直接の管理下に置かれる。さらに、再ス
ケジューリングを指示する割り込みのオーバーヘッドを
減らすためとユーザーのスケジューラが複数のプロセッ
サに対してなるべく小さなオーバーヘッドで非同期通信
を可能にするために、プロセッサの割り込みを階層化し
てその内の優先度の低いものはユーザーに解放された割
り込みとする。つまり、その割り込みがユーザーのプロ
グラムを実行中(ユーザー・モード中)に起こった場
合、ユーザーが予め設定した割り込みプログラムに制御
を移すだけでOS(カーネル・モード)には制御を移さ
ないようにするのである。
E.実施例 以下、この発明の実施例について図面を参照して説明を
行う。
行う。
E.1.原理的な説明 E.1.1.発明の背景 同期処理を軽くすることを目的の一つとしているので、
共有メモリ等を介してのビジー・ウェイトで同期を行う
ことを前提にする(OSを介してでは上述のとおりオー
バーヘッドが増大する)。この際、従来技術でも述べた
ように以下の二点が問題である。
共有メモリ等を介してのビジー・ウェイトで同期を行う
ことを前提にする(OSを介してでは上述のとおりオー
バーヘッドが増大する)。この際、従来技術でも述べた
ように以下の二点が問題である。
(1)無駄に同期待ちを行うプロセスがプロセッサに割
り付けられて、プロセッサ資源を浪費する。
り付けられて、プロセッサ資源を浪費する。
(2)バリア同期の際に、同期のための排他的メモリ・
アクセスが集中して、データ通信路が競合してオーバー
ヘッドを生じる。
アクセスが集中して、データ通信路が競合してオーバー
ヘッドを生じる。
まず、(1)の問題について述べて、解決の方針を示
す。ある処理を複数のプロセスが協調して実行している
場合(並列処理)を想定する。この処理の途中で一つの
プロセスを除いて他のプロセスは同期待ちになったとす
る。例えばその同期待ちでないプロセスが計算結果を出
すのを今後その値が必要となるので他のプロセスすべて
が待っているといった状況である。また、プロセスの数
がプロセッサ数よりも多く、すべてのプロセスをプロセ
ッサに同時に割り付けることはできないとする。この状
況で、共有メモリを介しての同期を行っているので、O
Sはプロセスが同期待ちであるかどうか区別できない。
そのため、スケジューリングの結果、同期待ちのプロセ
スばかりがプロセッサに割り付けられて、同期待ちでな
い本来最優先のプロセスが実行待ちになってしまう可能
性がある。この場合、一定時間毎のタイマ割り込み時の
再スケジューリングの機会に同期待ちでないプロセスが
プロセッサに割り付けられるまで、プロセッサ資源を無
駄に浪費し続けることになる。この浪費を回避するため
には、プロセッサに同期待ちのプロセスばかりが割り当
てられていることが認識できなければならない。そこ
で、ビジー・ウェイトの同期待ちのループでは同期変数
のチェックだけではなく、同期待ちの場合はシステムの
プロセッサ資源に関する情報もチェックする。そのチェ
ックの結果、状況によってはプロセスを中断し、OSに
制御を移し、再スケジューリングを実行しプロセッサへ
のプロセスの割り当てを変更する。この方式により無駄
に同期待ちを行うプロセッサを減らすことができ、シス
テムのプロセッサ資源を有効に使えるようになる。状況
判断の方法と利用するデータについてはE.1.2.節
で述べる。再スケジューリングの方法についてはE.
1.3.節で述べる。
す。ある処理を複数のプロセスが協調して実行している
場合(並列処理)を想定する。この処理の途中で一つの
プロセスを除いて他のプロセスは同期待ちになったとす
る。例えばその同期待ちでないプロセスが計算結果を出
すのを今後その値が必要となるので他のプロセスすべて
が待っているといった状況である。また、プロセスの数
がプロセッサ数よりも多く、すべてのプロセスをプロセ
ッサに同時に割り付けることはできないとする。この状
況で、共有メモリを介しての同期を行っているので、O
Sはプロセスが同期待ちであるかどうか区別できない。
そのため、スケジューリングの結果、同期待ちのプロセ
スばかりがプロセッサに割り付けられて、同期待ちでな
い本来最優先のプロセスが実行待ちになってしまう可能
性がある。この場合、一定時間毎のタイマ割り込み時の
再スケジューリングの機会に同期待ちでないプロセスが
プロセッサに割り付けられるまで、プロセッサ資源を無
駄に浪費し続けることになる。この浪費を回避するため
には、プロセッサに同期待ちのプロセスばかりが割り当
てられていることが認識できなければならない。そこ
で、ビジー・ウェイトの同期待ちのループでは同期変数
のチェックだけではなく、同期待ちの場合はシステムの
プロセッサ資源に関する情報もチェックする。そのチェ
ックの結果、状況によってはプロセスを中断し、OSに
制御を移し、再スケジューリングを実行しプロセッサへ
のプロセスの割り当てを変更する。この方式により無駄
に同期待ちを行うプロセッサを減らすことができ、シス
テムのプロセッサ資源を有効に使えるようになる。状況
判断の方法と利用するデータについてはE.1.2.節
で述べる。再スケジューリングの方法についてはE.
1.3.節で述べる。
次に、(2)のバリア同期における排他的メモリ・アク
セスの集中の問題について解説し、その解決の方針を示
す。一つの同期変数を用いたN台のプロセッサによるバ
リア同期の場合、少なくともN回の同期変数への排他的
な操作が必要である。この部分のメモリ処理は直列化さ
れるのでNが大きくなるとオーバーヘッドも増大する。
特に、バリア同期を取るプロセス間の粒度が揃ってお
り、それらのプロセスが総て同時にプロセッサに割り当
てられている(つまり、プロセッサの割当て待ちのプロ
セスがいない)状況で、このオーバーヘッドが問題とな
る。このオーバーヘッドを避けるためにバリア同期専用
の同期変数を専用レジスタ(本発明ではフラグ)として
プロセッサ毎に設け、レジスタ間の値の更新は同期情報
のための専用通信路(本発明ではブロード・キャスト型
の信号線)で行うことにする。この機構により通常のデ
ータ通信路の通信量を増やすことなしにバリア同期が行
える。当然、プロセッサへの割当てを待っているプロセ
スが存在する時には、(1)の問題の解決方針に基づい
た動作を行う。具体的な機構についてはE.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図ではA1、A2、A3、A4がプロセスのグルー
プを形成しており、図のようなプロセッサの割当ての場
合はCPU1、CPU2、CPU3が一つのグループであり、CPU4は別
のグループである。UNIX(米国AT&T社の商標)
系のOSの場合、PPID(親プロセス識別子)をこのグル
ープの識別子として流用できる。なお説明を補助する目
的で図を用いるが、今後の図中での記法を説明してお
く。プロセスA2wとあれば、最初のAはグループ名を
次の2はグループ内でのプロセス名を最後のwはそのプ
ロセスが同期待ちであることを示す。同期待ちでないプ
ロセスではwの代りにrが用いられる。図の左端で長方
形の破線で囲まれたプロセスは実プロセッサの割当てを
待っているプロセスである。
同期待ち時に、実行中のプロセスが自らプロセスを中断
し、プロセスの交代を要求する条件の例として以下のよ
うなものが挙げられる。
し、プロセスの交代を要求する条件の例として以下のよ
うなものが挙げられる。
[1]自分と同じグループに属するプロセッサが総て同
期待ちになり、実行待ちのプロセスが存在する時(第2
図(a)参照)。
期待ちになり、実行待ちのプロセスが存在する時(第2
図(a)参照)。
[2]自分と同じグループに属するプロセスが総て同時
にプロセッサに割り付けられており、それら総てが同期
待ちになった時。但し、これはプログラミング・エラー
(デッド・ロック)と考えられる(第3図参照)。
にプロセッサに割り付けられており、それら総てが同期
待ちになった時。但し、これはプログラミング・エラー
(デッド・ロック)と考えられる(第3図参照)。
[3]バリア同期を行うプロセス群で一つのグループを
形成しており、自分がそのグループの一員の場合、自分
のグループに属する実行待ちかつ同期待ちでないプロセ
スが存在する時(第4図(a)参照)。
形成しており、自分がそのグループの一員の場合、自分
のグループに属する実行待ちかつ同期待ちでないプロセ
スが存在する時(第4図(a)参照)。
[4]自分と同じグループに属する同期待ちのプロセッ
サの数がnを越え、実行待ちのプロセスが存在する時。
但し、nはOSまたはユーザーによって設定された値で
ある。
サの数がnを越え、実行待ちのプロセスが存在する時。
但し、nはOSまたはユーザーによって設定された値で
ある。
[5]自分と同じグループに属する同期待ちのプロセッ
サの数がnを越え、実行待ちの自分と同じグループのプ
ロセスが存在する時(第5図(a)参照)。
サの数がnを越え、実行待ちの自分と同じグループのプ
ロセスが存在する時(第5図(a)参照)。
[1]、[2]、[3]の条件はプロセスを交代する方
が確実に効率が向上する条件で、[4]、[5]の条件
は発見法的で経験則からnの値を決めて効率の向上を狙
うものである。処理しているアプリケーションによって
nの値を調節して効率を上げるべきである。[4]、
[5]の条件については、同期待ちの絶対数で判断する
のではなく、同じグループに属するプロセッサ数とその
内の同期待ちの数の比率を基準にしてもよい。
が確実に効率が向上する条件で、[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のみ同期を行う
ユーザーのアプリケーションのプロセスからも書き込み
可能で、他はスケジューラ側のみから書き込める。スケ
ジューラはこれらの値をスケジューリング毎に必要に応
じて更新する。
するプロセスの内のプロセッサに割り付けられているも
のの数) #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図の一つのフローチャートで待
ち合わせ処理の内容を示し、細かい差には言及しない。
第7図は従来の待ち合わせのためのループを示す。最良
の条件、つまり同期変数を初めてチェックするまえに同
期が成立し同期変数に同期成立の値がセットされている
場合において、第6図の方式のオーバーヘッドを従来の
方式と同じに抑えるために処理の頭で同期変数のチェッ
クを一度行っている(S1)。同期完了であれば当然す
ぐに待ち合わせ処理を終了する。一回目の同期変数のチ
ェックで同期未了の場合に限り、プロセッサが同期待ち
状態に入り(S2)、これにより影響を受ける変数(#M
WC等)を更新する(S3)。そして、システムのプロセ
ッサ資源に関する情報を読出して(S4)、前出の条件
によってプロセスを中断しスケジューラによるプロセス
の再スケジューリングを要求するかどうか判断する(S
5)。条件が成立すれば、影響を受ける変数(#MWC等)
を更新し(S6)、プロセッサの制御権を放棄するシス
テム呼出し等を行ってスケジューラを呼び出す(S
7)。条件が成立しなければ、新たに同期変数のチェッ
クを行なう(S11)。同期が成立していなければ、プ
ロセッサ資源に関する情報の読出しに戻って繰返す。同
期が成立していれば、プロセッサが同期待ち状態を抜
け、これにより影響を受ける変数(#MWC等)を更新し
(S12)、待ち合わせの処理を終了する(S9)。制
御権を放棄して、再びプロセッサに割り付けられた時
は、プロセス切り換えの条件判断が非成立の場合のフロ
ーに合流する(S8、S10)。
第6図で点線で囲まれた処理の部分は共有メモリへのア
クセスを不可分で排他的に行うべき部分(#MWCの更新)
を示す。つまり、共有バスのシステムではロックを掛け
てアクセスする部分を示す。以下の図でも同様である。
クセスを不可分で排他的に行うべき部分(#MWCの更新)
を示す。つまり、共有バスのシステムではロックを掛け
てアクセスする部分を示す。以下の図でも同様である。
ハードウェア構成によっては共有変数へのアクセスの集
中の問題が存在する。それは同期待ちの処理の一番内側
のループでプロセッサ間で共有されるプロセッサ資源に
関する変数をアクセスしていることに起因する。内容の
コンシステンシを保つキャッシュ(スヌープ・キャッシ
ュ)等のハードウェアを持たないシステムでは頻繁にコ
ストの掛かる共有メモリへのアクセスが発生し、データ
通信路の通信の競合をまねく可能性がある。しかし、従
来の方法でも共有変数である同期変数へのアクセスを同
期待ちの処理の一番内側のループで行っているので事情
は同じである。よって、以下はシステムが内容のコンシ
ステンシを保つキャッシュ等のハードウェアを持ってい
ることを前提とする。
中の問題が存在する。それは同期待ちの処理の一番内側
のループでプロセッサ間で共有されるプロセッサ資源に
関する変数をアクセスしていることに起因する。内容の
コンシステンシを保つキャッシュ(スヌープ・キャッシ
ュ)等のハードウェアを持たないシステムでは頻繁にコ
ストの掛かる共有メモリへのアクセスが発生し、データ
通信路の通信の競合をまねく可能性がある。しかし、従
来の方法でも共有変数である同期変数へのアクセスを同
期待ちの処理の一番内側のループで行っているので事情
は同じである。よって、以下はシステムが内容のコンシ
ステンシを保つキャッシュ等のハードウェアを持ってい
ることを前提とする。
スヌープ・キャッシュ等を持ったシステムでは第8図の
ようにスピン・ロックを行えばオーバーヘッドを増やさ
ずに無駄なプロセス切り換えの要求を抑えられる。つま
り、第6図の方式では複数のプロセスで同時にプロセス
切り換えの条件が成立し、プロセス切り換え要求が集中
する可能性がある。そこで、第8図のように実際にプロ
セス切り換えを要求する部分をクリティカル領域として
排他制御することにより、その要求の集中を防いでい
る。ただし、ビジー・ウェイトの最内側ループにクリテ
ィカル領域の排他制御のための共有メモリへの排他アク
セス(バス・ロック等)が入ると、共有メモリへのアク
セスが集中してオーバーヘッドが大きくなる。そこで、
最内側ループではクリティカル領域とせずにプロセス切
り換えの条件判断を行ない、条件が成立したときに限
り、クリティカル領域に入り条件判断をし直す(スピン
・ロック、S4′、S5′)。なお、第8図の方式の場
合、スケジューラがプロセスを切り換えてシステムのプ
ロセッサ資源に関する変数を更新する際も、アクセスは
排他制御される。また第8図において第6図と対応する
個所には対応する符号を付して詳細な説明は省略する。
ようにスピン・ロックを行えばオーバーヘッドを増やさ
ずに無駄なプロセス切り換えの要求を抑えられる。つま
り、第6図の方式では複数のプロセスで同時にプロセス
切り換えの条件が成立し、プロセス切り換え要求が集中
する可能性がある。そこで、第8図のように実際にプロ
セス切り換えを要求する部分をクリティカル領域として
排他制御することにより、その要求の集中を防いでい
る。ただし、ビジー・ウェイトの最内側ループにクリテ
ィカル領域の排他制御のための共有メモリへの排他アク
セス(バス・ロック等)が入ると、共有メモリへのアク
セスが集中してオーバーヘッドが大きくなる。そこで、
最内側ループではクリティカル領域とせずにプロセス切
り換えの条件判断を行ない、条件が成立したときに限
り、クリティカル領域に入り条件判断をし直す(スピン
・ロック、S4′、S5′)。なお、第8図の方式の場
合、スケジューラがプロセスを切り換えてシステムのプ
ロセッサ資源に関する変数を更新する際も、アクセスは
排他制御される。また第8図において第6図と対応する
個所には対応する符号を付して詳細な説明は省略する。
第6図に書かれている待ち状態フラグ(PWF:Process Wa
iting state Flag)と待ち状態カウンタ(PWC:Process W
aiting states Counter)はプロセス毎に設けられ、スケ
ジューラが#MNWRを計算するデータとなり、またスケジ
ューリングにヒントを与えることができる。詳しくは次
のE.1.3.節で述べる。
iting state Flag)と待ち状態カウンタ(PWC:Process W
aiting states Counter)はプロセス毎に設けられ、スケ
ジューラが#MNWRを計算するデータとなり、またスケジ
ューリングにヒントを与えることができる。詳しくは次
のE.1.3.節で述べる。
粒度が比較的小さいプログラムでは新しい方式のオーバ
ーヘッドが従来方式に比べて目立ってくる。例えば、数
十命令毎に同期を必要とするプロセス群があり、それら
が同時に総てプロセッサに割り当てられて実行されてい
る場合、同期待ち状態に入ったとしても同期はすぐ成立
するので同期待ちのループを1〜2回程度しか回らない
と考えられる。同期待ち状態でのループの繰返し毎の処
理量は第7図と第8図から比べても判るように、新しい
方式は従来に比べてかなり重たい。そのため、ループを
1〜2回しか回らない場合は、同期が成立した(同期変
数を誰かが書き替えた)時点から実際に成立を検出して
待ち合わせ処理を終了するまでのオーバーヘッドが目立
つようになる。そこで、プロセッサ外部からハードウェ
ア的にプロセッサが同期待ち状態にいるかどうか検知で
きる機構を用意して、同期待ち状態のプロセスを切り換
えるべきかどうかのチェックを専用ハードウェアに行わ
せ、割り込みで条件成立を通知すれば、プロセッサは第
9図のような待ち合わせ処理で済む。これにより前出の
場合でも従来方式と遜色がなくなる。
ーヘッドが従来方式に比べて目立ってくる。例えば、数
十命令毎に同期を必要とするプロセス群があり、それら
が同時に総てプロセッサに割り当てられて実行されてい
る場合、同期待ち状態に入ったとしても同期はすぐ成立
するので同期待ちのループを1〜2回程度しか回らない
と考えられる。同期待ち状態でのループの繰返し毎の処
理量は第7図と第8図から比べても判るように、新しい
方式は従来に比べてかなり重たい。そのため、ループを
1〜2回しか回らない場合は、同期が成立した(同期変
数を誰かが書き替えた)時点から実際に成立を検出して
待ち合わせ処理を終了するまでのオーバーヘッドが目立
つようになる。そこで、プロセッサ外部からハードウェ
ア的にプロセッサが同期待ち状態にいるかどうか検知で
きる機構を用意して、同期待ち状態のプロセスを切り換
えるべきかどうかのチェックを専用ハードウェアに行わ
せ、割り込みで条件成立を通知すれば、プロセッサは第
9図のような待ち合わせ処理で済む。これにより前出の
場合でも従来方式と遜色がなくなる。
E.1.3.再スケジューリングの改善 第2図に条件[1]が成立した場合、第4図に条件
[3]が成立した場合、第5図に条件[5]が成立した
場合の再スケジューリングの進行の例を図示してある。
プロセッサの割当て待ちのプロセスが複数ある場合、ど
のプロセスをプロセス切り換え時にプロセッサに割り付
けるかが効率上問題である。また、第3図ではグループ
Aはデッド・ロックを起こしているので、再スケジュー
リングでAのグループのプロセスの実行をすべて止める
べきである。ここではスケジューラがどのように再スケ
ジューリングを実行すべきかについて述べる。また、プ
ロセッサ台数以上のプロセスで並列処理を行う場合は必
ず再スケジューリングが起こり、プロセスの粒度が細か
いときにはその頻度が非常に大きい。そこで、そのよう
な並列処理にも対応できるように再スケジューリングの
オーバーヘッドを極力削減する必要がある。オーバーヘ
ッドの少ない階層化されたスケジューラについても述べ
る。
[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を更新する必要がある。
スケジューラが#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図参照)。ユーザー・スケジューラ
は同一のアプリケーションを協調して処理するプロセス
・グループ毎に設けられ、スケジューリング方式はユー
ザーが処理に応じて決定できる。カーネル・スケジュー
ラは実プロセッサ全体の管理を行ない、プロセス・グル
ープ毎にまとめて実プロセッサを割り付ける。ユーザー
・スケジューラはグループに割当てられたプロセッサ内
でのスケジューリングを実行する。また、ユーザー・ス
ケジューラはカーネル側(カーネル・モード)ではなく
ユーザー側(ユーザー・モード)で走る。そこで、プロ
セス切り換えの際、システム呼出し等のオーバーヘッド
がなく、効率が向上する。
る。よって、ユーザーのプロセスが再スケジューリング
を行ってもらうためにはカーネルへのシステム呼出しを
行う必要がある。しかし、OS側のスケジューラではユ
ーザーのアプリケーション毎の木目細かなスケジューリ
ングは不可能である。また、OSのカーネルとユーザー
のプロセスが多くのデータを共有すると、それを通知し
あう手順が複雑になり、オーバーヘッドも増大する。さ
らに、システム呼出しそれ自身のオーバーヘッドがかな
り重たいので、軽くプロセスの切り換えを行うのは難し
い。そこで、スケジューラを階層化して、従来の実プロ
セッサを割り付けるためのスケジューラをカーネル・ス
ケジューラと呼び、その制御下にユーザー・スケジュー
ラを設ける(第10図参照)。ユーザー・スケジューラ
は同一のアプリケーションを協調して処理するプロセス
・グループ毎に設けられ、スケジューリング方式はユー
ザーが処理に応じて決定できる。カーネル・スケジュー
ラは実プロセッサ全体の管理を行ない、プロセス・グル
ープ毎にまとめて実プロセッサを割り付ける。ユーザー
・スケジューラはグループに割当てられたプロセッサ内
でのスケジューリングを実行する。また、ユーザー・ス
ケジューラはカーネル側(カーネル・モード)ではなく
ユーザー側(ユーザー・モード)で走る。そこで、プロ
セス切り換えの際、システム呼出し等のオーバーヘッド
がなく、効率が向上する。
プロセス切り換えの条件が成立した場合、ユーザー・ス
ケジューラに制御を渡し、そのプロセス・グループに適
したスケジューリング・アルゴリズムで次に割当てるべ
きプロセスを選び、そのプロセスに制御を渡す。これに
より、システム呼出しのオーバーヘッドなしにプロセス
をグループ内で切り換える。第11図はグループAが条
件[3]でユーザー・スケジューラ使ってプロセス切り
換えを行う例を示している。
ケジューラに制御を渡し、そのプロセス・グループに適
したスケジューリング・アルゴリズムで次に割当てるべ
きプロセスを選び、そのプロセスに制御を渡す。これに
より、システム呼出しのオーバーヘッドなしにプロセス
をグループ内で切り換える。第11図はグループAが条
件[3]でユーザー・スケジューラ使ってプロセス切り
換えを行う例を示している。
カーネル・スケジューラは各プロセス・グループからプ
ロセッサの要求台数を受け取り、なるべく要求を満たす
ようにスケジューリングを行う。カーネル・スケジュー
ラはタイム・シェアリングのためのタイマ割り込み時ま
たは周辺装置の入出力を伴うシステム呼出し時またはユ
ーザー・スケジューラからのプロセッサ資源の追加要求
・返還時に起動する。カーネル・スケジューラによるス
ケジューリングの結果、空きプロセッサが必要になった
場合は優先度の低いプロセス・グループのプロセッサを
取り上げる(プリエンプトする)。
ロセッサの要求台数を受け取り、なるべく要求を満たす
ようにスケジューリングを行う。カーネル・スケジュー
ラはタイム・シェアリングのためのタイマ割り込み時ま
たは周辺装置の入出力を伴うシステム呼出し時またはユ
ーザー・スケジューラからのプロセッサ資源の追加要求
・返還時に起動する。カーネル・スケジューラによるス
ケジューリングの結果、空きプロセッサが必要になった
場合は優先度の低いプロセス・グループのプロセッサを
取り上げる(プリエンプトする)。
同期におけるプロセス切り換えの条件判断をハードウェ
ア化して、割り込みで条件成立をプロセッサに通知する
場合、この割り込みでユーザー・スケジューラが起動す
るようにしておく。実行モードにカーネル側とユーザー
側の区別があるプロセッサでは割り込み後はカーネル側
に制御が切り替わる。このような従来型のプロセッサを
使う時は、この割り込み時にはなるべくオーバーヘッド
なしにユーザー側に制御を返す必要がある。この点に関
し、積極的に以下のように割り込み機能を階層化したプ
ロセッサを用意すれば、オーバーヘッドの少ないユーザ
ー・モード内の割り込みが行える。優先度の違う外部割
り込みをプロセッサに用意し、優先度の低い外部割り込
みの内のいくつかにユーザー・モードの割り込みを設け
る。つまり、割り込みが発生したらユーザーが設定した
ルーチンにユーザー・モード内で制御を移す。残りの外
部割り込みは従来通りカーネル・モードへの割り込みで
ある。また、ユーザー・モードの割り込みは割り込みの
マスクの切り換え(割り込み許可・不許可の切り換え)
でユーザー側で自由にできる。このユーザー・モードの
割り込みを同期機構からの割り込みや同じグループ内の
プロセッサへの非同期の通信に使うと、カーネルに制御
が移行しないのでオーバーヘッドを減らすことができ
る。同期機構からの割り込みでは直接ユーザー・スケジ
ューラに制御が移るようにしておく。
ア化して、割り込みで条件成立をプロセッサに通知する
場合、この割り込みでユーザー・スケジューラが起動す
るようにしておく。実行モードにカーネル側とユーザー
側の区別があるプロセッサでは割り込み後はカーネル側
に制御が切り替わる。このような従来型のプロセッサを
使う時は、この割り込み時にはなるべくオーバーヘッド
なしにユーザー側に制御を返す必要がある。この点に関
し、積極的に以下のように割り込み機能を階層化したプ
ロセッサを用意すれば、オーバーヘッドの少ないユーザ
ー・モード内の割り込みが行える。優先度の違う外部割
り込みをプロセッサに用意し、優先度の低い外部割り込
みの内のいくつかにユーザー・モードの割り込みを設け
る。つまり、割り込みが発生したらユーザーが設定した
ルーチンにユーザー・モード内で制御を移す。残りの外
部割り込みは従来通りカーネル・モードへの割り込みで
ある。また、ユーザー・モードの割り込みは割り込みの
マスクの切り換え(割り込み許可・不許可の切り換え)
でユーザー側で自由にできる。このユーザー・モードの
割り込みを同期機構からの割り込みや同じグループ内の
プロセッサへの非同期の通信に使うと、カーネルに制御
が移行しないのでオーバーヘッドを減らすことができ
る。同期機構からの割り込みでは直接ユーザー・スケジ
ューラに制御が移るようにしておく。
E.2.具体的構成例 つぎに同期機構の具体的構成例について述べる。なおビ
ジー・ウェイトの処理のオーバーヘッドを減らすため、
プロセス切り換えの条件判断はハードウェアで行う。ス
ケジューラはE.1.3.節に従って階層化されたもの
がソフトウェアで実現されているとする。ここでは主に
同期機構のハードウェア側とこれを用いるビジー・ウェ
イトの処理について述べる。
ジー・ウェイトの処理のオーバーヘッドを減らすため、
プロセス切り換えの条件判断はハードウェアで行う。ス
ケジューラはE.1.3.節に従って階層化されたもの
がソフトウェアで実現されているとする。ここでは主に
同期機構のハードウェア側とこれを用いるビジー・ウェ
イトの処理について述べる。
第12図に全体構成を示す。この図においてデータ通信
路は共有バス1とした。プロセッサCPU1、CPU
2、・・CPUn毎に同期コントローラSC1、CS
2、・・SCnが設けられ、同期コントローラ間はプロ
セッサ台数分の信号線を持つ同期信号バス(ブロード・
キャスト型の信号線)2で結合されている。各プロセッ
サと同期コントローラの間はコントローラ内のレジスタ
やフラグを読み書きするためのデータ線とコントローラ
からプロセッサへの割り込み線(前出のユーザー・モー
ドの割り込み)で結合している。
路は共有バス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)で行なわれる。
他の同期コントローラの構成も同様である。この図にお
いて同期コントローラ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だけカウント・ア
ップを行ない、ユーザー・スケジューラがプリエンプト
に対する処理が済むとカウント・ダウンさせる。これに
より、プリエンプトの発生をコントローラが把握し誤動
作を防ぐ。
同時に書き替えることができる。つまり、スケジューラ
が共有バスにグループを特定した同期コントローラへの
命令を出力でき、それによってグループ内のコントロー
ラのレジスタが書き替わる。同様にしてスケジューラは
自分が動作しているプロセッサ以外に接続しているコン
トローラのレジスタも変更できる。このようにスケジュ
ーラによって設定されるレジスタ類は第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によるプロセスの再スケジューリングを要求
する。
は前述のようにプロセッサ資源に関する情報を格納する
レジスタ類があり、スケジューラにより値がセットして
ある。#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でない場合と同じに扱
い、誤動作を防ぐ。
ラ内に前出のレジスタやフラグの他に読出し専用のバリ
ア同期成立フラグ(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はスケ
ジューラからは自動セット・リセット等の副作用動作を
伴わずに読み書き出来る)等は入替え前の値が退避さ
れ、再びそのプロセスが割り付けられた際に、再設定さ
れる。
毎に適宜更新され、プロセス入替えられるプロセッサの
同期コントローラの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……同期コントロー
ラ。
する図、第2図ないし第5図はこの発明の一実施例で採
用する再スケジュール要求の条件を説明する図、第6図
は上述一実施例を説明するフローチャート、第7図は第
6図例に対応する従来の動作を説明するフローチャー
ト、第8図、第9図および第10図は第6図例の変形例
を示す図、第11図は第10図変形例を説明する図、第
12図および第13図は第6図例の具体的な構成例を示
すブロック図、第14図は第13図を説明するフローチ
ャートである。 1……共有バス、2……同期信号バス、4……共有メモ
リ、CPU……プロセッサ、SC……同期コントロー
ラ。
Claims (9)
- 【請求項1】複数のプロセッサおよび共有メモリを具備
するマルチプロセッサ・システムにおいて各プロセスが
同期待ち状態に進むときに、上記共有メモリに記憶され
た同期変数をチェックし、同期が成立しているときには
同期待ち状態を終了し、同期が未成立のときには同期待
ち状態を継続するマルチプロセッサ・システムのプロセ
ス同期方法において、 上記プロセスの各々が同期待ち状態に進むときに、さら
に、 上記共有メモリに記憶されているプロセス同期に関連す
る所定の情報をチェックし、同期の成立の可能性に関す
る所定の条件が成立しているかどうかを判別するステッ
プと、 上記条件が未成立であると判別されたときに同期待ち状
態を継続するステップと、 上記条件が成立すると判別されたときに再スケジュール
を要求するステップを実行することを特徴とするマルチ
プロセッサ・システムのプロセス同期方法。 - 【請求項2】複数のプロセッサでそれぞれ実行されてい
るプロセスの間の同期を、共有メモリに記憶されている
同期変数を上記プロセスの各々がチェックして実行する
マルチプロセッサ・システムにおいて、 上記プロセッサの各々に、当該プロセッサで実行されて
いるプロセスが同期待ち状態に進むときに、上記共有メ
モリに記憶されているプロセス同期に関連する所定の情
報をチェックし、同期の成立の可能性に関する所定の条
件が成立しているときに再スケジュール要求を送出する
手段を設け、さらに、 上記再スケジュールの要求に基づいてプロセスの再スケ
ジュールを実行するスケジュール手段を有することを特
徴とするマルチプロセッサ・システム。 - 【請求項3】複数のプロセッサでそれぞれ実行されてい
るプロセスの間の同期を共有メモリに記憶されている同
期変数を各プロセスがチェックして実行するマルチプロ
セッサ・システムにおいて、 上記プロセッサの各々に、 上記共有メモリに記憶されているプロセス同期に関連す
る所定の情報を受け取って記憶する記憶手段と、 当該プロセッサで実行されているプロセスが同期待ち状
態に進むときに、上記記憶手段に記憶されている上記情
報をチェックし、同期の成立の可能性に関する所定の条
件が成立しているときに再スケジュール要求を送出する
手段とを設け、さらに、 上記再スケジュールの要求に基づいてプロセスの再スケ
ジュールを実行する手段を有することを特徴とするマル
チプロセッサ・システム。 - 【請求項4】上記所定の情報はプロセスのプロセッサへ
の割り当てに関する情報、プロセスのグループ分けに関
する情報およびプロセスの同期に関する情報とした特許
請求の範囲第2項または第3項記載のマルチプロセッサ
・システム。 - 【請求項5】上記スケジュール手段はオペレーティング
・システムとは別個にアプリケーションごとに設けら
れ、再スケジュールの要求時に制御をオペレーション・
システムに移行させないようにした特許請求の範囲第3
項記載のマルチプロセッサ・システム。 - 【請求項6】上記再スケジュール要求を送出する手段
は、対応するプロセッサに対して優先度の低い外部割り
込み信号を送出し、この優先度の低い外部割り込み信号
に基づいて、上記オペレーティング・システムとは別個
にアプリケーションごとに設けられた対応するスケジュ
ール手段が再スケジュールを実行し、より高い優先度の
外部割り込み信号で上記オペレーティング・システムへ
制御を移管するようにした特許請求の範囲第5項記載の
マルチプロセッサ・システム。 - 【請求項7】上記プロセッサはそれぞれプライベート・
キャッシュを有し、それぞれのプライベート・キャッシ
ュを介して共有メモリの内容をアクセスする特許請求の
範囲第2項ないし第6項記載のマルチプロセッサ・シス
テム。 - 【請求項8】複数のプロセッサで実行されているプロセ
スの間のバリア同期を実行するマルチプロセッサ・シス
テムにおいて、 上記プロセッサの各々に、 上記共有メモリに記憶されているプロセス同期に関連す
る所定の情報を受け取って記憶する第1の記憶手段と、 当該プロセッサとバリア同期される他のプロセッサを指
定する第2の記憶手段と、 他のプロセッサの各々から同期待ちに関する信号を受け
取る同期待ち状態信号受信手段と、 当該プロセッサで実行されているプロセスが同期待ち状
態に進むときに、上記第1および第2の記憶手段に記憶
されている情報および上記同期待ち状態信号受信手段の
出力に基づいて、当該プロセッサとバリア同期される他
のプロセッサの中に同期待ちでなく、かつ実行待ちであ
るものがあり、そのままではバリア同期が成立しない場
合であるかどうかを判別し、成立しないときは再スケジ
ュール要求を送出する手段とを設け、さらに、 上記プロセッサの各々の同期待ち状態信号受信手段を相
互に接続する同期信号バスと、 上記再スケジュールの要求に基づいてプロセスの再スケ
ジュールを実行する手段を有することを特徴とするマル
チプロセッサ・システム。 - 【請求項9】複数のプロセッサでそれぞれ実行されてい
るプロセスの間の同期を共有メモリに記憶されている同
期変数を各プロセスがチェックして実行するマルチプロ
セッサ・システムにおいて、 上記プロセッサの各々に、 上記共有メモリに記憶されているプロセス同期に関連す
る所定の情報を受け取って記憶する第1の記憶手段と、 当該プロセッサとバリア同期される他のプロセッサを指
定する第2の記憶手段と、 他のプロセッサの各々から同期待ちに関する信号を受け
取る同期待ち状態信号受信手段と、 当該プロセッサで実行されているプロセスが同期待ち状
態に進むときに、上記第1および第2の記憶手段に記憶
されている情報および上記同期待ち状態信号受信手段の
出力に基づいて、当該プロセッサとバリア同期される他
のプロセッサの中に同期待ちでなく、かつ実行待ちであ
るものがあり、そのままではバリア同期が成立しないと
いう条件および他の同期の成立の可能性に関する所定の
条件が成立しているときに再スケジュール要求を送出す
る手段とを設け、さらに、 上記プロセッサの各々の同期待ち状態信号受信手段を相
互に接続する同期信号バスと、 上記再スケジュールの要求に基づいてプロセスの再スケ
ジュールを実行する手段を有することを特徴とするマル
チプロセッサ・システム。
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)
| 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)
| 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 |
-
1989
- 1989-10-26 JP JP1277334A patent/JPH0640324B2/ja not_active Expired - Lifetime
-
1990
- 1990-10-26 EP EP19900311794 patent/EP0425320A3/en not_active Withdrawn
-
1992
- 1992-09-14 US US07/944,803 patent/US5448732A/en not_active Expired - Fee Related
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) | プロセッサの制御方法 |