JP2000330807A - 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体 - Google Patents

複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体

Info

Publication number
JP2000330807A
JP2000330807A JP11142881A JP14288199A JP2000330807A JP 2000330807 A JP2000330807 A JP 2000330807A JP 11142881 A JP11142881 A JP 11142881A JP 14288199 A JP14288199 A JP 14288199A JP 2000330807 A JP2000330807 A JP 2000330807A
Authority
JP
Japan
Prior art keywords
processor
context
thread
exception
processors
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.)
Granted
Application number
JP11142881A
Other languages
English (en)
Other versions
JP3557947B2 (ja
Inventor
Yoshiyuki Ito
義行 伊藤
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP14288199A priority Critical patent/JP3557947B2/ja
Priority to US09/573,008 priority patent/US6675191B1/en
Publication of JP2000330807A publication Critical patent/JP2000330807A/ja
Application granted granted Critical
Publication of JP3557947B2 publication Critical patent/JP3557947B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

Landscapes

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

Abstract

(57)【要約】 【課題】 複数のスレッドを1単位として管理し、同じ
単位のスレッドは複数のプロセッサで同時に実行を開始
させる。 【解決手段】 プロセッサ21,22 で同時に実行を開始す
べき2つのスレッドを1つのスレッド集合とし、主記憶
3上のコンテキスト退避領域32内のコンテキスト領域に
格納して管理する。各プロセッサ21〜2nはコンテキスト
スイッチ時、単一のプロセッサのみがカーネルスケジュ
ーラ実行権限を取得できるよう例外処理中に排他制御変
数31による排他調停を行う。カーネルスケジューラ実行
権限を取得したプロセッサ21は、次に実行すべきスレッ
ド集合を選択し、退避先アドレス指定変数36によってプ
ロセッサ22に対してコンテキストの退避先アドレス、復
帰コンテキストの読み込み先アドレスを指定し、プロセ
ッサ21の主導の下にプロセッサ22と協調してコンテキス
トスイッチを行い、次に実行すべきスレッド集合中の2
つのスレッドの実行を同時に開始する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はマルチプロセッサシ
ステムにおけるスレッドコンテキストスイッチ時に複数
のプロセッサで同時にスレッドの実行を開始させる技術
に関し、特に複数のプロセッサにおける複数のスレッド
実行状態、すなわち複数のスレッドコンテキストを単一
の単位として扱うことができる技術に関する。
【0002】
【従来の技術】従来の複数プロセッサにおけるカーネル
スケジューラの一例として、ソラリス(Solaris) でのス
レッドの扱いがユニックスインターナルズ・ザニューフ
ロンティアーズ、プレンティスホール社、ウレシュバハ
リア著、1996年(UNIX Internals The new frontier
s 、Prentice Hall 、Uresh Vahalia)の第130頁ない
し第139頁、および、マルチスレッドプログラミング
入門、アスキー出版局、ビルルイス、ダニエルベルク原
著1996年9月の第73頁ないし第77頁に記載され
ている。また、複数プロセッサ間の排他制御の手段につ
いては、OSの基礎と応用、プレンティスホール・トッ
パン社、A.S.タネンバウム原著の第2章第2節等に説明
されている。また、生成された複数のタスクを並列実行
するマルチプロセッサシステムの例が特開平9−319
653号公報に記載されている。
【0003】図9に示すように、この従来のカーネルス
ケジューラにおけるプロセッサ数最小とした場合の構成
は、入力装置1と、第1のプロセッサ27と、第2のプ
ロセッサ28と、プロセッサ間割り込み通知装置29
と、主記憶3と、出力装置4とを備える。
【0004】また、第1のプロセッサ27内に例外管理
装置271と、第1のプロセッサ27が実行する割り込
み処理手段272及びカーネルスケジューラ手段273
とを備え、第2のプロセッサ28内に例外管理装置28
1と、第2のプロセッサ28が実行する割り込み処理手
段282及びカーネルスケジューラ手段283とを備
え、主記憶3上に排他制御変数31、コンテキスト退避
領域32、ディスパッチキュー33、優先度リスト38
を備える。
【0005】図10は、図9の割り込み処理手段27
2,282、および、カーネルスケジューラ手段27
3,283の動作を示す流れ図である。
【0006】このような構成を有する従来のカーネルス
ケジューラの動作を図9、図10を用いて、以下説明す
る。
【0007】仮に入力装置1からの入力による例外を受
けるプロセッサを第1のプロセッサ27とすると、第1
の例外要因11が第1のプロセッサ27の例外管理装置
271に受理され、割り込み処理手段272が起動され
る(ステップS1)。
【0008】割り込み処理手段272内でコンテキスト
退避手段2723が呼び出され、第1のプロセッサ27
の実行状態すなわちコンテキストを、現実行中のスレッ
ドが第1のスレッドとすると、コンテキスト退避領域3
2にある第1のスレッドのコンテキスト321として退
避する(ステップ2)。
【0009】割り込み処理手段272は、次にカーネル
スケジューラ手段273を起動し、カーネルスケジュー
ラ手段273では、まず排他調停手段2731が実行さ
れる。第2のプロセッサ28が排他制御変数31を変更
している場合は待機し(ステップS3)、変更していな
ければ排他制御変数31を置き換えて、以降の操作に必
要なディスパッチキュー33等の領域を、他のプロセッ
サがアクセスするのを防止する(ステップS4,S
5)。
【0010】引続き、カーネルスケジューラ手段273
内部のディスパッチキュー操作手段2732が、第1の
例外要因11および割り込み処理手段272の処理によ
り新規に実行可能となったスレッドが存在するか判断し
(ステップS6)、存在する場合にはそのスレッドを示
す構造体もしくはID番号をディスパッチキュー33に
登録する(ステップS7)。図9の例では第1のプロセ
ッサ27が第3のスレッドを示す構造体333を優先度
「115」で登録した状態を示している。なお、優先度
はその数値が大きいほど高い優先度を示すものとする。
【0011】さらに、起動対象選択手段2733が、デ
ィスパッチキュー33に待機するスレッドの内、優先度
が最高位のスレッドを検索し(ステップS8)、また優
先度リスト38から実行中スレッドの優先度が最低のプ
ロセッサを検索する(ステップS9)。図9の例では、
この検索により、ディスパッチキュー33から優先度
「115」の第3のスレッドが得られ、優先度リスト3
8から優先度「100」を実行中の第2のプロセッサが
得られる。
【0012】次に起動対象選択手段2733は、ディス
パッチキュー33に待機するスレッドの内の最高優先度
である第3のスレッドを示す構造体333の優先度「1
15」が、優先度リスト38中、最低優先度である第2
のプロセッサで実行中のスレッドの優先度「100」を
上回っているかを調べる(ステップS10)。今の場
合、上回っているので、更に、自プロセッサが優先度最
低のスレッドを実行中かを調べる(ステップS11)。
今の場合、実行中でない。この例のように、ディスパッ
チキュー33で待機中のスレッドの優先度が他プロセッ
サで現在実行中の優先度よりも上位の場合、プロセッサ
間割り込み手段2734は、最低優先度スレッドを実行
中のプロセッサに対してプロセッサ間割り込みを用いて
通知を行う(ステップS12)。図9の例では、第2の
プロセッサ28が通知の対象となる。
【0013】第1のプロセッサ27は、プロセッサ間割
り込みを用いた通知の後、排他制御変数31を元の状態
に戻すことで排他条件を解除し(ステップS15)、コ
ンテキストを復帰して第1の例外要因11の発生前の状
態に移る。図9の例では、元の第1のスレッドに戻るこ
とになる。
【0014】一方、プロセッサ間割り込みの通知対象と
なったプロセッサ28では、プロセッサ間割り込み通知
装置29により第2のプロセッサ28の例外管理装置2
81にプロセッサ間割り込みが通知されることで、割り
込み処理手段282が起動される。
【0015】割り込み処理手段282内では、第1の例
外要因11を処理した割り込み処理手段272と同様
に、コンテキスト退避手段2823が呼び出され、第2
のプロセッサの実行状態すなわち第2のスレッドのコン
テキストを、コンテキスト退避領域32にある第2のス
レッドのコンテキスト322として退避する(ステップ
S2)。
【0016】割り込み処理手段282はカーネルスケジ
ューラ手段283を起動し、カーネルスケジューラ手段
283では、まず排他調停手段2831が実行される。
第1のプロセッサ27のカーネルスケジューラ手段27
3の処理が完了していないなど、他のプロセッサが排他
制御変数31を変更している場合は待機し(ステップS
3)、いなければ排他制御変数31を置き換えて、以降
の操作に必要なディスパッチキュー33等の領域を、他
のプロセッサがアクセスするのを防止する(ステップS
4,S5)。
【0017】引続き、カーネルスケジューラ手段283
内部のディスパッチキュー操作手段2832が、プロセ
ッサ間割り込み通知装置29および割り込み処理手段2
82の処理により新規に実行可能となったスレッドが存
在するか判断し(ステップS6)、存在する場合にはコ
ンテキスト退避領域32からコンテキストをディスパッ
チキュー33に追加登録する(ステップS7)。
【0018】図9の例では第3のスレッドを示す構造体
333を第1のプロセッサ27によって登録した以降に
は、新規に実行可能となったスレッドが存在していない
としている。
【0019】さらに、起動対象選択手段2833が、デ
ィスパッチキュー33に待機するスレッドの内、優先度
が最高位のスレッドを検索し(ステップS8)、また優
先度リスト38から実行中スレッドの優先度が最低のプ
ロセッサを検索する(ステップS9)。図9の例では、
この検索により、ディスパッチキュー33から優先度
「115」の第3のスレッドが得られ、優先度リスト3
8から優先度「100」を実行中の第2のプロセッサが
得られる。
【0020】次に起動対象選択手段2833は、ディス
パッチキュー33に待機するスレッドの内の最高優先度
である第3のスレッドを示す構造体333の優先度「1
15」が、優先度リスト38中、最低優先度である第2
のプロセッサで実行中のスレッドの優先度「100」を
上回っているかを調べる(ステップS10)。今の場
合、上回っているので、更に、自プロセッサが優先度最
低のスレッドを実行中かを調べる(ステップS11)。
今の場合、実行中である。この例のように、ディスパッ
チキュー33で待機中のスレッドの優先度が自プロセッ
サで現在実行中の優先度よりも上位の場合、起動対象選
択手段2833は、ディスパッチキュー33に待機する
最高優先度の第3のスレッドを次に実行するスレッドの
コンテキストとして選択し(ステップS13)、優先度
リスト38内の自プロセッサが実行するスレッドの優先
度を次コンテキストの優先度に更新する(ステップS1
4)。
【0021】最後に第2のプロセッサ28は、排他制御
変数31を元の状態に戻すことで排他条件を解除し(ス
テップS15)、次コンテキストを読み込んで新しいス
レッド、即ち第3のスレッドの実行に移る。
【0022】
【発明が解決しようとする課題】上記したように、従来
においては、各プロセッサでのカーネルスケジューラ手
段がそれぞれ次に実行すべきスレッドを優先度を基に検
出し、相互にプロセッサ間割り込み通知装置を用いてカ
ーネルスケジューラ手段を起動することで、複数のプロ
セッサ間での複数のスレッドの起動処理を実現してい
る。しかし、このような従来方法では、次のような問題
が生じる。
【0023】第1の問題点は、プロセッサ間で相互のプ
ロセッサが実行するスレッドがいつどのスレッドに切り
替わるか、カーネルスケジューラ手段以外に同期手段を
設けない限り厳密に判定できないということである。
【0024】つまり、従来では、各プロセッサで動作す
るカーネルスケジューラ手段は、基本的には独立して動
作している。カーネルスケジューラ手段は、ディスパッ
チキュー上のスレッド構造体に収められた優先度が実行
中のスレッドの優先度よりも上位であるならば、実行を
移すという基本的な機能に、他に実行中のスレッドの優
先度が低いプロセッサが存在するならば、プロセッサ間
割り込み通知装置を使って新規スレッドの実行を依頼す
る機能を加え、さらにディスパッチキュー等の操作が競
合しないよう排他調停手段を加えることで、複数プロセ
ッサへの対応としているのである。そのため、あるプロ
セッサにおいてカーネルスケジューラ手段が、他のプロ
セッサに新規スレッドの実行を依頼したとしても、依頼
先のプロセッサにおいて別の高優先度スレッドがディス
パッチキューに登録される可能性があり、依頼元側のプ
ロセッサは依頼の後、依頼先で実際にどのスレッドが起
動されるか、カーネルスケジューラ手段以外に同期手段
を設けて、監視する必要が発生する。
【0025】なお、依頼元のプロセッサが依頼先のプロ
セッサを監視している最中に、逆に他のプロセッサから
依頼元のプロセッサに対して、別のスレッドの起動が要
求された場合、依頼元側プロセッサが要求を受理できな
いと、実行されるべき優先を持つスレッドが長期間待た
される可能性がある。そのため、従来では依頼先プロセ
ッサの監視の際には、依頼元プロセッサにおけるカーネ
ルスケジューラ手段を完了させて、プロセッサ間割り込
み要求が受理できる状態であるカーネルスケジューラ手
段とは別の手段で改めて監視をしなければならない。
【0026】第2の問題点として、各プロセッサで実行
されるスレッドの間で相互に同期的に動作しようとした
場合、同期処理によるオーバーヘッドが大きくなること
である。
【0027】その理由は、第1の問題点から同期相手と
なるスレッドを起動する際、カーネルスケジューラ手段
によるスレッドの起動に加え、上記の監視機構を利用せ
ねばならないためである。
【0028】そこで、本発明の目的は、各プロセッサ間
で実行されるスレッドの切り替えに際し、複数のプロセ
ッサで指定されたスレッドが同時に実行が開始されるよ
うにすることにある。
【0029】また本発明の別の目的は、複数のスレッド
を1つの単位として管理し、同じ単位のスレッドは複数
のプロセッサで同時に実行が開始されるようにすること
にある。
【0030】
【課題を解決するための手段】本発明は上記目的を達成
するため、同時に実行すべき複数のスレッドを1つのス
レッド集合とし、スレッド集合中の各スレッドのコンテ
キストを主記憶上のコンテキスト退避領域にスレッド集
合に1対1に対応して設けたコンテキスト領域に格納
し、マルチプロセッサシステムを構成する複数のプロセ
ッサのうち一時には単一のプロセッサのみがカーネルス
ケジューラ実行権限を取得可能となるよう例外処理中に
排他調停を行い、カーネルスケジューラ実行権限を取得
したプロセッサが、次に実行すべきスレッド集合を選択
して該スレッド集合中の複数のスレッドを自プロセッサ
を含む複数のプロセッサで同時に実行させる制御を行
う。また、前記排他調停の際、カーネルスケジューラ実
行権限の取得に失敗したプロセッサは、カーネルスケジ
ューラ実行権限を取得したプロセッサから、プロセッサ
間割り込みを受理できるよう準備をして待機し、プロセ
ッサ間割り込みを受理したならば待機中であった例外の
発生条件を例外受理前の状態に戻すことで、スレッド切
り替え後に例外が再発生するよう設定する。また、スレ
ッド集合中の複数のスレッドのコンテキストを、各プロ
セッサで読み込んだ後、同期手段を用いて、各プロセッ
サが同時にスレッドの実行を開始するよう調停を行う。
【0031】より具体的には、本発明は、マルチプロセ
ッサシステムにおいて複数のプロセッサで同時にスレッ
ドの実行を開始させる方法において、(a)一時には単
一のプロセッサのみがカーネルスケジューラ実行権限を
取得可能となるよう各プロセッサの例外処理中で排他調
停を行うステップ、(b)カーネルスケジューラ実行権
限を取得したプロセッサが、自プロセッサで実行中のス
レッドのコンテキストを主記憶上のコンテキスト退避領
域に退避すると共に、当該スレッドが属するスレッド集
合中の他のスレッドの実行先プロセッサに対して主記憶
上のコンテキスト退避領域内の場所を指定してコンテキ
スト退避要求にかかるプロセッサ間割り込みを発行する
ステップ、(c)前記コンテキスト退避要求にかかるプ
ロセッサ間割り込みを受信したプロセッサが、指定され
た主記憶上のコンテキスト退避領域の場所に自プロセッ
サで実行中のスレッドのコンテキストを退避し、その完
了を要求元プロセッサに通知するステップ、(d)コン
テキスト退避要求を出したプロセッサが、要求先の全て
のプロセッサにおけるコンテキスト退避の完了を確認
後、次に実行すべきスレッド集合中の他プロセッサで実
行すべきスレッドのコンテキストを記憶している主記憶
上のコンテキスト退避領域の場所を指定してそのスレッ
ドの実行先プロセッサに対してコンテキスト読み込み要
求を出すと共に、次に実行すべきスレッド集合中の自プ
ロセッサで実行すべきスレッドのコンテキストを主記憶
上のコンテキスト退避領域から読み込んでコンテキスト
の復帰を行うステップ、(e)前記コンテキスト読み込
み要求を受けたプロセッサが、指定された主記憶上のコ
ンテキスト退避領域の場所からスレッドのコンテキスト
を読み込んでコンテキストの復帰を行い、その完了を当
該スレッドが属するスレッド集合中のスレッドの全実行
先プロセッサに通知するステップ、(f)前記スレッド
集合中のスレッドを実行する全てのプロセッサにおける
コンテキストの復帰が完了した時点で、当該全てのプロ
セッサが同時にスレッドの実行を開始するステップ、と
を含み、複数のプロセッサで同時に実行すべき複数のス
レッドを1つのスレッド集合として主記憶上のコンテキ
スト退避領域内のスレッド集合に1対1に対応するコン
テキスト領域に格納している。
【0032】このように複数のプロセッサで同時に実行
すべき複数のスレッドを1つのスレッド集合として扱
い、カーネルスケジューラ実行権限を排他的に取得した
プロセッサの制御の下に、複数のプロセッサが協調して
スレッド集合単位でのコンテキストの退避および復帰を
行うため、カーネルスケジューラの手順が完了した時点
において、複数のプロセッサで同時にスレッドの実行が
開始されることになる。
【0033】
【発明の実施の形態】次に本発明の実施の形態について
図面を参照して詳細に説明する。
【0034】図1は本発明を適用したマルチプロセッサ
システムの一例を示すブロック図であり、第1〜第nの
プロセッサ21〜2nと、これら複数のプロセッサ21
〜2nで共有される主記憶3,入力装置1,出力装置4
およびプロセッサ間割り込み通知装置29とを含む。
【0035】主記憶3は、第1〜第nのプロセッサ21
〜2nの全てからアクセス可能であり、排他制御変数3
1と、コンテキスト退避領域32と、ディスパッチキュ
ー33と、同期変数34と、完了同期変数35と、退避
先アドレス指定変数36とが設けられている。
【0036】排他制御変数31は、各プロセッサ21〜
2nの各々でカーネルスケジューラが動作し得る当該マ
ルチプロセッサシステムにおいて、一時には単一のプロ
セッサのみがカーネルスケジューラ実行権限を取得でき
るよう排他調停を行うための変数である。この変数31
を使った排他調停により、カーネルスケジューラ実行権
限を取得したプロセッサは主位側プロセッサ、他のプロ
セッサは従位側プロセッサとなって、協調してコンテキ
ストスイッチ等の処理を実行する。つまり、コンテキス
トの退避先や復帰するコンテキストの格納位置などは全
て主位側プロセッサから従位側プロセッサに通知され、
主位側プロセッサの主導の下にコンテキストスイッチが
実行される。なお、従位側プロセッサには、一般のユー
ザレベルのスレッドを実行中のプロセッサと、主位側プ
ロセッサになろうとしたが、変数31による排他調停で
実行権限の取得に失敗した例外処理中のプロセッサとが
あり、後者のプロセッサを本明細書では劣位のプロセッ
サと呼んでいる。
【0037】コンテキスト退避領域32は、当該マルチ
プロセッサシステムで実行されるスレッドのコンテキス
トを格納する領域であり、複数のプロセッサで同時に実
行を開始すべきスレッドについては、それら複数のスレ
ッドを1つのスレッド集合として管理し、そのスレッド
集合に含まれる全スレッドのコンテキストを単一のコン
テキスト領域に格納している。
【0038】図2にコンテキスト退避領域32の構成例
を示す。コンテキスト退避領域32は、スレッド集合に
1対1に対応するコンテキスト領域321を1以上含
み、1つのコンテキスト領域321は、1つの主位側コ
ンテキスト退避領域3211と、1つ以上の従位側コン
テキスト退避領域3212とを含む。主位側コンテキス
ト退避領域3211は、主位側プロセッサの実行状態を
退避する領域であり、従位側コンテキスト退避領域32
12は、従位側プロセッサの実行状態を退避する領域で
ある。例えば、主位側プロセッサにおいてスレッドA1
が、従位側プロセッサにおいてスレッドA2がそれぞれ
実行されている状態において、コンテキストスイッチが
行われた場合、スレッドA1のコンテキストが主位側コ
ンテキスト退避領域3211に退避され、スレッドA2
のコンテキストが従位側コンテキスト退避領域3212
に退避される。そして、当該スレッド集合の再開時に
は、主位側コンテキスト退避領域3211中のスレッド
A1のコンテキストが主位側プロセッサに設定され、従
位側コンテキスト退避領域3212中のスレッドA2の
コンテキストが従位側プロセッサに設定され、スレッド
A1およびスレッドA2の実行が同時に再開される。
【0039】ディスパッチキュー33は、スレッドを示
す構造体もしくはID番号をスレッド集合毎に登録する
キューである。図3にディスパッチキュー33の内容例
を示す。この例では、第1のスレッド集合を示す構造体
331と第2のスレッド集合を示す構造体332との2
つが登録されている。また、各スレッド集合の優先度も
併せて登録されている。つまり、本実施の形態では、複
数のプロセッサで同時に実行を開始すべきスレッドにつ
いては、それらのスレッドを示す構造体を1つのスレッ
ド集合として管理し、そのスレッド集合単位に優先度を
付けてディスパッチキュー33に登録するようにしてい
る。
【0040】同期変数34および完了同期変数35は、
主位側プロセッサと従位側プロセッサとの間で処理の同
期をとるための変数である。このうち、同期変数34
は、従位側プロセッサがコンテキストの退避の完了を主
位側プロセッサに通知するために使用され、完了同期変
数35は、従位側プロセッサがコンテキストの復帰の完
了を主位側プロセッサを含めた他プロセッサに通知する
ために使用される。各変数34,35とも、各プロセッ
サ21〜2nに1対1に対応するビットを持ち、自プロ
セッサに対応するビットの値を所定値とすることで、所
定の処理の完了を通知する。
【0041】退避先アドレス指定変数36は、主位側プ
ロセッサが従位側プロセッサに対して、スレッドのコン
テキストを退避する場所のアドレスや、復帰すべきコン
テキストが格納されている場所のアドレスを通知するた
めの変数である。退避先アドレス指定変数36は任意の
構成とすることができるが、本実施の形態では、各プロ
セッサ21〜2nに1対1に対応するビット列を持ち、
主位側プロセッサは、コンテキストの退避や復帰を要求
する従位側プロセッサに対応するビット列にアドレスを
設定する方法を採用している。
【0042】次に各プロセッサ21〜2nの内部構成に
ついて説明する。
【0043】第1のプロセッサ21から第nのプロセッ
サ2nまでの全プロセッサは、何れも主位側プロセッサ
或いは従位側プロセッサとして動作し得るように同じ内
部構成を有している。図1では、第1のプロセッサ21
のブロック内にのみ構成要素を描き、残りのプロセッサ
22〜2nのブロック内は図示を省略してある。
【0044】図1を参照すると、各プロセッサ21〜2
nは、例外管理装置201と、例外処理手段202と、
劣位待機時プロセッサ間割り込み処理手段203と、プ
ロセッサ間割り込み処理手段204と、従位側プロセッ
サ起動処理手段205と、カーネルスケジューラ手段2
06とを備える。以下、各々の部分について、その機能
を説明する。
【0045】○例外管理装置201 例外管理装置201は、入力装置1からの外部割り込み
要求信号およびプロセッサ間割り込み通知装置29経由
の他プロセッサからのプロセッサ間割り込みを外部から
の入力とし、外部または内部で発生もしくは要求された
例外について対応する手段を起動するなどの例外管理機
能に加え、プロセッサ間割り込み通知装置29を経由し
て任意のプロセッサに対して、プロセッサ間割り込みを
通知する機能などを有している。例外管理装置201の
構成例を図4に示す。
【0046】図4を参照すると、例外管理装置201
は、例外認識装置2011と、優先順位判定装置201
2と、非優先側例外保持装置2013と、許可例外優先
順位保持装置2014と、起動対象判定装置2015
と、例外禁止状態保持装置2016と、例外転送装置2
018とを主要部として有する。
【0047】例外認識装置2011は、外部割り込み要
求信号12およびプロセッサ間割り込み通知装置29経
由で他プロセッサから送られてきたプロセッサ間割り込
みにかかる例外、およびプロセッサ内部で発生した例外
を認識する部分であり、認識した例外は優先順位判定装
置2012に送られる。
【0048】許可例外優先順位保持装置2014は、ど
の優先順位までの例外が現在許可されているかの情報を
保持する部分、例外禁止状態保持装置2016は、自プ
ロセッサが例外を禁止している状態であるかどうかの情
報を保持する部分であり、これらの装置2014,20
16に保持された情報は優先順位判定装置2012によ
って参照される。
【0049】非優先側例外保持装置2013は、禁止さ
れている例外および優先順位が低いために保留にすべき
と判定された例外を保持する部分である。
【0050】優先順位判定装置2012は、例外認識装
置2011において認識された例外および非優先側例外
保持装置2013に保留されている例外について、その
時点の許可例外優先順位保持装置2014および例外禁
止状態保持装置2016の情報に基づいて、その例外を
自プロセッサで実行するか、実行する場合にはどの例外
を実行するか、或いは保留にするかを判定する部分であ
る。保留にすると判定された例外は非優先側例外保持装
置2013に保存される。また、実行すると判定された
例外は、起動対象判定装置2015に渡される。
【0051】起動対象判定装置2015は、優先順位判
定装置2012から渡された例外の種別に応じて、起動
すべき処理に応じた手段を選定し、その手段を起動する
部分である。また、起動対象判定装置2015は、起動
対象となる処理に応じた手段を決定しプロセッサに実行
を開始させる際、処理を開始する例外の優先度よりも劣
位にある例外を保留するよう許可例外優先順位保持装置
2014に情報を設定し、同時にプロセッサ間割り込み
も保留するよう例外禁止状態保持装置2016に情報を
設定する。
【0052】例外転送装置2018は、自プロセッサの
例外処理手段202等からの要求に従ってプロセッサ間
割り込み通知装置29経由で他のプロセッサにプロセッ
サ間割り込みの転送を行う部分である。
【0053】また、例外管理装置201の各部は、自プ
ロセッサで実行されるカーネルレベルの各手段、すなわ
ち例外処理手段202、劣位待機時プロセッサ間割り込
み処理手段203、プロセッサ間割り込み処理手段20
4、カーネルスケジューラ手段206、従位側プロセッ
サ起動処理手段205の、それぞれから操作ならびに設
定が可能である。操作の種類としては、前述した例外転
送装置2018に対して、プロセッサ間割り込み通知装
置29経由で他のプロセッサにプロセッサ間割り込みの
転送を要求する操作や、例外管理装置201の例外状態
を解除する操作などがある。また、設定の種類として
は、例外禁止状態保持装置2016にプロセッサ間割り
込みを禁止しないよう設定することや、非優先側例外保
持装置2013に所定の例外(後述する例外状態巻き戻
し手段2031によって巻き戻された例外)を登録して
後刻に再度発生するように設定することなどが含まれ
る。
【0054】○例外処理手段202 例外処理手段202は、外部割り込み要求信号12およ
びプロセッサ内部から要求される例外に対応する例外処
理を実行する手段であり、例外管理装置201の起動対
象判定装置2015によって起動される。内部には、排
他調停手段2021、プロセッサ間例外許可手段202
2、劣位待機手段2023、コンテキスト退避手段20
24、プロセッサ間割り込み通知手段2025、従位側
コンテキスト退避完了待機手段2029が含まれる。
【0055】排他調停手段2021は、当該例外処理の
開始時に、排他制御変数31を用いてプロセッサ間の排
他的な処理を行うための手段である。排他制御変数31
を使った排他調停により、カーネルスケジューラの実行
権限を取得できた場合、当該プロセッサは主位側プロセ
ッサとなって、コンテキスト退避手段2024、プロセ
ッサ間割り込み通知手段2025および従位側コンテキ
スト退避完了待機手段2029を実行し、カーネルスケ
ジューラ手段206へと進む。他方、排他調停手段20
21でカーネルスケジューラの実行権限を取得できなか
った場合、当該プロセッサは劣位のプロセッサとなり、
従位側プロセッサとしての動作に備えて、プロセッサ間
例外許可手段2022、劣位待機手段2023へと進
む。
【0056】コンテキスト退避手段2024は、自プロ
セッサ(主位側プロセッサ)の実行状態(コンテキス
ト)を、コンテキスト退避領域32に退避する部分であ
る。主位側プロセッサであるため、退避先は、図2に示
したコンテキスト退避領域32中の現実行中スレッド集
合に対応するコンテキスト領域321における主位側コ
ンテキスト退避領域3211である。
【0057】プロセッサ間割り込み通知手段2025
は、退避先アドレス指定変数36に従位側プロセッサの
コンテキストを退避する退避先アドレスを設定した後
に、例外管理装置201の例外転送装置2018を操作
して、プロセッサ間割り込み通知装置29経由で、従位
側プロセッサに対してコンテキストの退避を要求するプ
ロセッサ間割り込みを通知する部分である。指定する退
避先アドレスは、図2に示したコンテキスト退避領域3
2中の現実行中スレッド集合に対応するコンテキスト領
域321における従位側コンテキスト退避領域3212
である。プロセッサ間割り込みを通知するプロセッサ
は、スレッド集合を自プロセッサと共に並行して実行し
ているプロセッサである。通知先のプロセッサが複数存
在する場合、つまり、3つ以上のスレッドを含むスレッ
ド集合の場合、退避先アドレスを個別に通知する。
【0058】従位側コンテキスト退避完了待機手段20
29は、プロセッサ間割り込み通知手段2025によっ
てコンテキストの退避を要求した従位側プロセッサの全
てが、コンテキストの退避を完了するまで待機し、その
後にカーネルスケジューラ手段206を起動する部分で
ある。後述するように、従位側プロセッサはコンテキス
トの退避を完了すると、同期変数34の自プロセッサに
対応するビットを操作するので、従位側コンテキスト退
避完了待機手段2029は同期変数34の該当ビットの
変化を監視することで、従位側プロセッサの全てがコン
テキストの退避を完了したかどうか判定することができ
る。なお、従位側コンテキスト退避完了待機手段202
9は、従位側プロセッサの全てがコンテキストの退避を
完了したことを確認した時点で、同期変数34を初期化
する。
【0059】他方、劣位のプロセッサとなった場合に実
行されるプロセッサ間例外許可手段2022は、例外管
理装置201の例外禁止状態保持装置2016の設定を
変更することにより、例外処理手段202の開始時に例
外管理装置201により禁止されていたプロセッサ間割
り込みを許可し、従位側プロセッサとして主位側プロセ
ッサからのコンテキスト退避要求にかかるプロセッサ間
割り込みを受理できるようにする部分である。処理完了
後は、次の劣位待機手段2023に実行が移る。
【0060】劣位待機手段2023は、排他制御変数3
1が排他条件を取得した主位側プロセッサにより元の値
に戻されるのを待ち、主位側プロセッサが自プロセッサ
に対してコンテキスト退避要求にかかるプロセッサ間割
り込みを発行することなく排他処理を完了した場合に、
自手段2023を完了し、排他調停手段2021に処理
を戻す部分である。主位側プロセッサが自プロセッサに
対してコンテキスト退避要求にかかるプロセッサ間割り
込みを発行しない状況としては、主位側プロセッサがコ
ンテキストスイッチを行おうとしているスレッド集合中
のスレッドを自プロセッサが実行していない場合などが
ある。なお、劣位待機手段2023の実行中に、自プロ
セッサに対してコンテキスト退避要求にかかるプロセッ
サ間割り込みが発行された場合は、後述するように例外
管理装置201から劣位待機時プロセッサ間割り込み処
理手段203が起動される。
【0061】○カーネルスケジューラ手段206 カーネルスケジューラ手段206は、起動するスレッド
集合を選択しコンテキストとして読み込む部分であり、
ディスパッチキュー操作手段2062と、従位側プロセ
ッサ起動手段2063と、コンテキスト復帰手段206
4と、従位側プロセッサ起動完了待機手段2065とを
有する。
【0062】ディスパッチキュー操作手段2062は、
ディスパッチキュー33に実行可能なスレッド集合を登
録し、また、ディスパッチキュー33から優先順位に応
じて次に起動するスレッド集合を取得する部分である。
【0063】従位側プロセッサ起動手段2063は、デ
ィスパッチキュー操作手段2062で次に起動すべきと
されたスレッド集合に含まれるスレッドのうち、従位側
プロセッサで実行するスレッドについて、そのスレッド
のコンテキストが格納されているコンテキスト退避領域
32の場所のアドレスを退避先アドレス指定変数36に
設定した後に、例外管理装置201の例外転送装置20
18を操作して、プロセッサ間割り込み通知装置29経
由で、従位側プロセッサに対してコンテキストの読み込
みを要求するプロセッサ間割り込みを通知する部分であ
る。指定するアドレスは、図2に示したコンテキスト退
避領域32中のコンテキスト領域321が次に起動すべ
きスレッド集合に対応するとすれば、従位側コンテキス
ト退避領域3212である。プロセッサ間割り込みを通
知するプロセッサは、スレッド集合を自プロセッサと共
に並行して実行させるプロセッサである。通知先のプロ
セッサが複数存在する場合、つまり、3つ以上のスレッ
ドを含むスレッド集合の場合、コンテキストの読み込み
先アドレスは個別に通知する。
【0064】コンテキスト復帰手段2064は、ディス
パッチキュー操作手段2062が選択した次に起動する
スレッド集合中の自プロセッサで実行するスレッドに関
するコンテキストを、コンテキスト退避領域32から読
み込むことでスレッド起動の準備を行う部分である。つ
まり、コンテキスト退避領域32中のコンテキスト領域
321が次に起動すべきスレッド集合に対応するとすれ
ば、主位側コンテキスト退避領域3211からコンテキ
ストを読み込む。
【0065】従位側プロセッサ起動完了待機手段206
5は、従位側プロセッサ起動手段2063によってコン
テキストの読み込みを要求した従位側プロセッサの全て
が、その処理を完了するまで待機し、しかる後に、カー
ネルスケジューラ手段206を終え、スレッドの実行を
開始する部分である。後述するように、従位側プロセッ
サはコンテキストの読み込みを完了すると、完了同期変
数35の自プロセッサに対応するビットを操作するの
で、従位側コンテキスト起動完了待機手段2065は完
了同期変数35の該当ビットの変化を監視することで、
従位側プロセッサの全てがコンテキストの読み込みを完
了したかどうか判定することができる。なお、後述する
従位側プロセッサ起動完了通知手段の処理に備えて、従
位側プロセッサ起動完了待機手段2065は、完了同期
変数35の自プロセッサに対応するビットをコンテキス
トの復帰が完了した値に設定しておく。なお、完了同期
変数35は複数のプロセッサでスレッド集合中のスレッ
ドが同時に実行を開始した時点で、従位側プロセッサ起
動完了待機手段2065によって初期化される。
【0066】○劣位待機時プロセッサ間割り込み処理手
段203 劣位待機時プロセッサ間割り込み処理手段203は、劣
位となったプロセッサが劣位待機手段2023の実行中
に、プロセッサ間割り込み通知装置29経由でコンテキ
スト退避要求にかかるプロセッサ間割り込みが到着した
場合に、例外管理装置201が呼び出す手段であり、例
外状態巻戻し手段2031を有する。
【0067】例外状態巻戻し手段2031は、劣位待機
の際に処理をしていた例外処理手段202の原因となっ
た例外による状態を、一度例外管理装置201に受理さ
れる前、すなわち例外発生前の状態に戻す手段である。
例外状態巻戻し手段2031は、例外処理を仕掛かり中
であったプロセッサのレジスタなどのプロセッサの構成
要素、および例外管理装置201の状態を操作すること
で、それらを例外発生前の状態に戻す。例外状態巻戻し
手段2031の次には、プロセッサ間割り込み処理手段
204が実行される。
【0068】○プロセッサ間割り込み処理手段204 プロセッサ間割り込み処理手段204は、例外処理手段
202等のカーネル処理以外のユーザレベルの処理を行
っている場合に、プロセッサ間割り込み通知装置29経
由で主位側プロセッサからコンテキスト退避要求にかか
るプロセッサ間割り込みが到着した場合に、例外管理装
置201から呼び出される。また、ユーザレベルの処理
でなくカーネルレベルの例外処理中に、プロセッサ間割
り込み通知装置29経由でコンテキスト退避要求にかか
るプロセッサ間割り込みが到着した場合には、前述した
ように、劣位待機時プロセッサ間割り込み処理手段20
3による処理を完了した後に、起動される。
【0069】プロセッサ間割り込み処理手段204は、
主位側プロセッサからの要求に従って、自プロセッサに
おけるコンテキストの退避を行い、その完了を主位側プ
ロセッサに通知する部分であり、従位側コンテキスト退
避手段2041と従位側コンテキスト退避完了通知手段
2042とを有する。
【0070】従位側コンテキスト退避手段2041は、
自プロセッサの実行状態(コンテキスト)をコンテキス
ト退避領域32に退避する部分である。従位側コンテキ
スト退避手段2041は、退避先アドレス指定変数36
を参照して、コンテキスト退避領域32の中で、自プロ
セッサがコンテキストを退避すべき領域を取得する。
【0071】従位側コンテキスト退避完了通知手段20
42は、コンテキストの退避が完了したことを同期変数
34を用いて主位側プロセッサに通知する部分である。
【0072】○従位側プロセッサ起動処理手段205 従位側プロセッサ起動処理手段205は、従位側コンテ
キスト退避完了通知手段2042によりコンテキストの
退避完了を同期変数34を用いて主位側プロセッサに通
知した後、例外管理装置201およびプロセッサ間割り
込み通知装置29経由で、主位側プロセッサからコンテ
キストの読み込み要求にかかるプロセッサ間割り込みを
受けたとき、例外管理装置201によって起動される。
【0073】従位側プロセッサ起動処理手段205は、
自プロセッサにおけるコンテキストの読み込みを行い、
その完了を主位側プロセッサを含めスレッド集合を同時
に実行する全てのプロセッサに通知し、スレッド集合の
全スレッドにかかるコンテキストの読み込みが各プロセ
ッサで完了したことを検出した時点で、前記読み込んだ
コンテキストでスレッドの実行を開始する部分であり、
従位側コンテキスト復帰手段2051と従位側プロセッ
サ起動完了通知手段2052とを有する。
【0074】従位側コンテキスト復帰手段2051は、
退避先アドレス指定変数36の自プロセッサに対応する
ビット列から復帰対象となるコンテキストの読み込み先
アドレスを取得し、コンテキスト退避領域32における
該当箇所からコンテキストを読み込んで自プロセッサの
実行状態の復帰を行う。
【0075】従位側プロセッサ起動完了通知手段205
2は、従位側コンテキスト復帰手段2051の処理が完
了した時点で、完了同期変数35の自プロセッサに対応
するビットを復帰完了を示す値に設定することにより、
スレッド集合を同時に実行する全てのプロセッサに自プ
ロセッサのコンテキスト復帰の完了を通知する。そし
て、従位側プロセッサ起動完了通知手段2052は、完
了同期変数35を監視し、スレッド集合を同時に実行す
る全てのプロセッサがコンテキストの復帰を完了したこ
とを確認した時点で、例外管理装置201を制御して例
外状態を解除し、読み込んだコンテキストでスレッドの
実行を開始する。
【0076】なお、図1においてKは、ディスク,半導
体メモリ,その他の機械読み取り可能な記録媒体であ
り、制御プログラムが記録されている。記録媒体Kに記
録された制御プログラムは、第1のプロセッサ21〜第
nのプロセッサ2nに読み取られ、各プロセッサ上に、
例外処理手段202、劣位待機時プロセッサ間割り込み
処理手段203、プロセッサ間割り込み処理手段20
4、カーネルスケジューラ手段206、および従位側プ
ロセッサ起動処理手段205を実現すると共に、主記憶
3上に、排他制御変数31、コンテキスト退避領域3
2、ディスパッチキュー33、同期変数34、完了同期
変数35、退避先アドレス指定変数36を初期生成す
る。
【0077】図5および図6は、本実施の形態の動作例
を示す流れ図であり、以下、各図を参照して本実施の形
態の動作について詳細に説明する。
【0078】ここで説明の便宜上、当該マルチプロセッ
サシステムで生成,実行される全てのスレッド集合は2
つのスレッドを含むものとする。1つのスレッド集合に
含まれる2つのスレッドの各々は、一般的には或るプロ
グラムの別々のルーチンに対応する。なお、本来1つの
スレッドで済む場合でも、本実施の形態ではスレッド数
が2のスレッド集合を生成する。その方法としては、一
方のスレッドのみを特定のルーチンに対応させ、他方の
スレッドは実質的な処理を行わないダミー的なスレッド
とする方法などがある。
【0079】また、第1〜第nのプロセッサ21〜2n
は、2台ずつがグループとなり、各グループでスレッド
集合を同時に実行する。どのプロセッサをどのグループ
に含めるかは、例えばマルチプロセッサシステムの起動
時にパラメータで設定し、各プロセッサに通知する。勿
論、稼働中に全てのプロセッサを一時的に停止させ、再
グループ化するようにしても良い。以下では、第1のプ
ロセッサ21と第2のプロセッサ22とが同じグループ
に属するものとして説明する。
【0080】今、入力装置1から入力された外部割り込
み要求信号12が要求を行う先を例えば第1のプロセッ
サ21とすると、外部割り込み要求信号12は第1のプ
ロセッサ21の例外管理装置201に受信され、例外認
識装置2011で認識される。その後、優先順位判定装
置2012は、外部割り込み要求信号12の優先順位と
許可例外優先順位保持装置2014が保持する優先順位
を比較し、さらに例外禁止状態保持装置2016で例外
が禁止されていないかどうかを調査した上で、場合によ
っては非優先例外保持装置2013で保留した上で、起
動対象判定装置2015に通知する。
【0081】起動対象判定装置2015は、例外の要求
原因が外部割り込み要求信号12であることから事前に
登録された例外処理手段202を呼び出す(図5のステ
ップA20201)。なお、起動対象判定装置2015
は、この時点で例外禁止状態保持装置2016の設定を
変更してプロセッサ間割り込み禁止状態にする等の処理
を行っている。
【0082】例外処理手段202は、排他調停手段20
21により排他制御変数31が他のプロセッサにより書
き換えられているか確認し(ステップA20211)、
置き換えられていなければ排他制御変数31を置き換え
て(ステップA20212)、さらにその置き換え処理
が他のプロセッサと競合していなかったか確認を行う
(ステップA20213)。
【0083】ここまでの処理で、排他制御変数31の置
き換えが成功した場合、第1のプロセッサ21は主位側
プロセッサとしての動作を行うべくステップA2024
以降の処理へと進み、置き換えに失敗した場合は、他の
何れかのプロセッサが主位側プロセッサとして動作を開
始しているため、主位側プロセッサになるのを保留して
ステップA20221以降の処理へと進む。ここでは、
置き換えに成功したために第1のプロセッサ21が主位
側プロセッサになったものとする。
【0084】第1のプロセッサ21は、次にコンテキス
ト退避手段2024を実行し、自プロセッサの実行状態
すなわちコンテキストをコンテキスト退避領域32に退
避する(ステップA2024)。即ち、第1のプロセッ
サ21が図2のコンテキスト領域321に対応するスレ
ッド集合中のスレッドを実行中であった場合、当該スレ
ッドのコンテキストを主位側コンテキスト退避領域32
11に退避する。さらに、プロセッサ間割り込み通知手
段2025において、退避先アドレス指定変数36を設
定することで、スレッドの切り替えを同時に行う第2の
プロセッサ22がコンテキストを退避する領域を指定し
(ステップA20251)、例外管理装置201を経由
してプロセッサ間割り込み通知装置29に依頼を行い、
第2のプロセッサ22に対してコンテキスト退避要求に
かかるプロセッサ間割り込みを通知する(ステップA2
0252)。
【0085】次に第1のプロセッサ21は、第2のプロ
セッサ22がコンテキスト退避処理を完了するのを待つ
ため、同期変数34を参照し(ステップA2029
1)、同期変数34の該当ビットがコンテキスト退避処
理の完了を示しているかチェックし(ステップA202
92)、完了していることを確認した時点で、カーネル
スケジューラ手段206へ処理を進める。
【0086】カーネルスケジューラ手段206では、ま
ずディスパッチキュー操作手段2062が実行され、例
外処理手段202で新規に実行可能なスレッド集合が生
じたか否かを判断し(ステップA20621)、生じて
いればディスパッチキュー33に登録する( ステップA
20622) 。引き続いてディスパッチキュー33から
優先度が最高位にあるスレッド集合を検索し(ステップ
A20623)、例外発生前に実行中であったスレッド
集合の優先度と比較する(ステップA20624)。デ
ィスパッチキュー33に登録されている実行可能なスレ
ッド集合の方が優先度が高い場合には、そのディスパッ
チキュー33に登録されているスレッド集合を次に実行
するスレッド集合として選択し(ステップA2062
5)、そうでない場合には、実行中であったスレッド集
合を次に実行するスレッド集合として選択する(ステッ
プA20626)。
【0087】次に実行するスレッド集合を決定したなら
ば、そのスレッド集合中の従位側プロセッサに実行させ
るスレッドの実行状態すなわちコンテキストを読み込ん
でくるコンテキスト退避領域32中での位置を、退避先
アドレス指定変数36に設定し(ステップA2063
1)、第2のプロセッサ22に対して、例外管理装置2
01を経由してプロセッサ間割り込み通知装置29によ
りコンテキスト読み込み要求にかかるプロセッサ間割り
込みを通知する(ステップA20632)。
【0088】第1のプロセッサ21は、その後、自プロ
セッサのコンテキストもコンテキスト退避領域33から
読み込んだ後(ステップA2064)、第2のプロセッ
サ22がコンテキストの読み込みが完了するのを完了同
期変数36を用いて監視する(ステップA2065
1)。
【0089】第1のプロセッサ21は、第2のプロセッ
サ22でのコンテキスト読み込み完了を確認したなら
ば、例外管理装置201を操作して例外状態を解除し、
読み込んだコンテキストで実行を開始することでカーネ
ルスケジューラの起動およびカーネルスケジューラ手段
206の実行を完了する(ステップA20652、A2
069)。
【0090】次に、第2のプロセッサ22を例に、従位
側プロセッサの動作を説明する。
【0091】第2のプロセッサ22の例外管理装置20
1がプロセッサ間割り込み通知装置29から第1のプロ
セッサ21が発行したコンテキスト退避要求にかかるプ
ロセッサ間割り込みを受信した時点では、第2のプロセ
ッサ22は一般のユーザレベルのスレッドを実行中であ
るか、または、排他調停手段2021により排他条件を
取得できなかった劣位のプロセッサとして動作中であ
る。何故ならば、プロセッサ間割り込みを発行した第1
のプロセッサ21は、排他調停手段2021で排他条件
を取得しているからこそ、プロセッサ間割り込みが発行
可能なのであり、第1のプロセッサ21以外の、第2の
プロセッサ22を含む全てのプロセッサは、例外処理手
段202を実行している場合、排他調停手段2021で
は必ず劣位に位置しているためである。
【0092】第2のプロセッサ22がユーザレベルのス
レッドを実行中であった場合、例外管理装置201の例
外認識装置2011、優先順位判定装置2012は、受
信したコンテキスト退避要求にかかるプロセッサ間割り
込みにかかる例外を処理すべく起動対象判定装置201
5に伝え、起動対象判定装置2015は、プロセッサ間
割り込みの処理手段としてプロセッサ間割り込み処理手
段204を選択する。これにより、第2のプロセッサ2
2はプロセッサ間割り込み処理手段204の実行を開始
する(図6のステップA20401)。プロセッサ間割
り込み処理手段204の実行を開始した後の動作は後述
する。
【0093】他方、第2のプロセッサ22が排他調停手
段2021により排他条件を取得できなかった劣位のプ
ロセッサであった場合、第2のプロセッサ22がプロセ
ッサ間例外許可手段2022の処理を完了する以前に第
1のプロセッサ21からのコンテキスト退避要求にかか
るプロセッサ間割り込みを受信したときは、当該プロセ
ッサ間割り込みは例外管理装置201において保留され
る。何故ならば、第2のプロセッサ22が何らかの例外
要因により例外処理手段202を起動する際、例外管理
装置201の起動対象判定装置2015がプロセッサ間
割り込みを留保するよう設定するためである。
【0094】しかし、この留保は、第2のプロセッサ2
2がプロセッサ間例外許可手段2022の処理を完了し
た時点で解除され、留保された前記プロセッサ間割り込
みが処理されることになる。何故なら、第2のプロセッ
サ22は、プロセッサ間例外許可手段2022におい
て、プロセッサ間割り込みにより従位のプロセッサとし
て動作する場合に備えて処理中の例外を一度例外管理装
置201に受理される前の発生前の状態に戻せるように
プロセッサ内部のレジスタ値等に設定を行ってから(ス
テップA20221)、例外禁止状態保持装置2016
に設定を行うことでプロセッサ間割り込みを許可するか
らである(ステップA20222)。
【0095】また、第1のプロセッサ21からのコンテ
キスト退避要求にかかるプロセッサ間割り込みが、第2
のプロセッサ22がプロセッサ間例外許可手段2022
の処理を完了した時点以後、つまり第2のプロセッサ2
2が劣位待機手段2023を実行中に受信された場合に
は、既にプロセッサ間割り込みの禁止が解かれているの
で、当該プロセッサ間割り込みが保留されることなく直
ちに処理される。
【0096】以上のようにして、第2のプロセッサ22
が劣位のプロセッサとして動作している最中に、第1の
プロセッサ21からのコンテキスト退避要求にかかるプ
ロセッサ間割り込みにかかる例外の処理が開始される
と、例外管理装置201の起動対象判定装置2015に
より劣位待機時プロセッサ間割り込み処理手段203が
起動される(図6のステップA20301)。
【0097】劣位待機時プロセッサ間割り込み処理手段
203は、例外状態巻戻し手段2031により劣位待機
していた際の例外要因を取得してから(ステップA20
311)、一度例外を受理し例外処理手段202を実行
していたことを示すプロセッサのレジスタ値等を破棄し
(ステップA20312)、待機していた際の例外がス
レッドの実行を再開した時に再度発生するよう例外管理
装置201および第2のプロセッサのレジスタ値等を操
作し(ステップA20313)、プロセッサ間割り込み
処理手段204に実行を移す(ステップA2031
4)。
【0098】さて、プロセッサ間割り込み処理手段20
4では、従位側コンテキスト退避手段2041におい
て、退避先アドレス指定変数36を参照して自プロセッ
サのコンテキストの退避先を取得し(ステップA204
11)、自プロセッサの実行状態すなわちコンテキスト
を従位側コンテキストとして退避する(ステップA20
412)。
【0099】退避が完了したならば、従位側コンテキス
ト退避完了通知手段2042により、同期変数34の自
プロセッサに対応するビットの値を書き換えてプロセッ
サ間割り込みの通知元である第1のプロセッサ21に対
してコンテキスト退避の完了を通知する(ステップA2
0421)。
【0100】その後、第1のプロセッサ21からプロセ
ッサ間割り込み通知装置29経由でコンテキスト復帰要
求にかかるプロセッサ間割り込みが第2のプロセッサ2
2の例外管理装置201で受信されると、起動対象判定
装置2015により、従位側プロセッサ起動処理手段2
05が起動される。
【0101】従位側プロセッサ起動処理手段205で
は、従位側コンテキスト復帰手段2051により、退避
先アドレス指定変数36から復帰対象となるコンテキス
トの読み込み元を取得し(ステップA20511)、自
プロセッサの実行状態すなわち従位側コンテキストの復
帰を行う(ステップA20512)。その後、従位側プ
ロセッサ起動完了通知手段2052により、完了同期変
数35の自プロセッサに対応するビットの値を書き換え
て第1のプロセッサ21に対してコンテキスト復帰の完
了を通知する(ステップA20521)。
【0102】さらに、第2のプロセッサは完了同期変数
35を監視し、スレッド集合を同時に実行する全プロセ
ッサ(今の場合は自プロセッサ以外の第1のプロセッサ
21だけ)のコンテキスト復帰が完了したことを確認し
た時点で(ステップA20522)、例外管理装置20
1を制御して例外状態を解除し、読み込んだコンテキス
トで実行を開始することでカーネルスケジューラの起動
および従位側プロセッサ起動処理手段205の実行を完
了する(ステップA20523、A2059)。
【0103】以上のようにして、第1のプロセッサ21
の主導の下で、第1のプロセッサ21および第2のプロ
セッサ22で実行されていたスレッド集合のコンテキス
トスイッチが同期して実行され、第1のプロセッサ21
および第2のプロセッサ22に復帰したスレッド集合の
各スレッドが同時に実行を開始する。
【0104】なお、主位側プロセッサとなった第1のプ
ロセッサ21からプロセッサ間割り込みを受けない第3
ないし第nのプロセッサでは、ユーザレベルのスレッド
を実行中の場合は、支障なくスレッドの実行を継続する
ことができ、また、別のスレッド集合のコンテキストス
イッチを行うべく主位側プロセッサになろうとして劣位
のプロセッサとなった場合は、劣位待機手段2023に
おいて自プロセッサ宛のプロセッサ間割り込みを受信す
ることなく排他制御変数31が第1のプロセッサ21に
よって書き換えられたことを検出して排他調停手段20
21に戻ることになる。
【0105】以上説明したように本実施の形態では、複
数のプロセッサにおいて例外処理を行っている場合でも
排他調停手段2021によりカーネルスケジューラ手段
206を実行するプロセッサを一つに絞り込め、またカ
ーネルスケジューラ実行権限の取得に失敗したプロセッ
サを、カーネルスケジューラ実行権限を取得したプロセ
ッサからプロセッサ間割り込みを受理できるよう準備を
して待機させることができるため、複数のプロセッサで
同時に別個な例外処理を実行していても、各プロセッサ
でスレッドの切り替え処理を完全に同時に行うことが可
能である。また、劣位のプロセッサは、プロセッサ間割
り込みを受理したならば待機中であった例外の発生条件
を例外受理前の状態に戻すことで、スレッド切り替え後
に例外が再発生するよう設定するため、スレッド切り替
え後に例外を処理することが可能となる。このようにス
レッド切り替え時点で既に同期がとれているので、結果
的に、低オーバヘッドに複数のスレッドを同時に起動す
ることを保障するカーネルスケジューラを実現可能であ
る。
【0106】次に、具体例をあげて本実施の形態の動作
を説明する。
【0107】図7に示すように、第1のプロセッサ21
および第2のプロセッサ22が存在し、第1のプロセッ
サ21および第2のプロセッサ22が、第1のスレッド
集合を実行している場合に、外部割り込み要求信号12
が第1のプロセッサ21に受理され、例外管理装置20
1によって例外処理手段202が起動され、第1のプロ
セッサ21が主位側プロセッサになったとする。
【0108】第1のプロセッサ21のコンテキスト退避
手段2024は、コンテキスト退避領域32の中の第1
のスレッド集合のコンテキスト321に位置する主位側
コンテキスト退避領域3211に、自プロセッサの実行
状態を退避する。第1のプロセッサ21のプロセッサ間
割り込み通知手段2025は、退避先アドレス指定変数
36に第1のスレッド集合のコンテキスト321におけ
る従位側コンテキスト退避領域3212を指定する値を
書き込み、第2のプロセッサ22にコンテキスト退避要
求にかかるプロセッサ間割り込みを発行する。
【0109】第2のプロセッサ22の例外管理装置20
1では、従位側コンテキスト退避手段2041が退避先
アドレス指定変数36を参照して取得した、第1のスレ
ッド集合のコンテキスト321における従位側コンテキ
スト退避領域3212にコンテキストを退避する。
【0110】第1のプロセッサ21のディスパッチキュ
ー操作手段2062は、ディスパッチキュー33に収め
られた各スレッド集合の優先順位を参照し、図7の例で
は、第2のスレッド集合を次に実行するスレッド集合と
して選択する。
【0111】第2のスレッド集合を次スレッド集合とし
て選択した第1のプロセッサ21は、従位側プロセッサ
起動手段2063により、退避先アドレス指定変数36
を設定し、第2のスレッド集合のコンテキスト322中
の従位側コンテキスト退避領域3222を従位側プロセ
ッサに対して指示し、コンテキスト読み込み要求にかか
るプロセッサ間割り込みを第2のプロセッサ22に発行
する。
【0112】第2のプロセッサ22は、従位側コンテキ
スト復帰手段2051により退避先アドレス指定変数3
6を参照し、第2のスレッド集合のコンテキスト322
に位置する従位側コンテキスト退避領域3222をコン
テキストの読み込み元としてコンテキストの復帰処理を
行う。
【0113】その後、第1のプロセッサ21は第2のプ
ロセッサ22のコンテキスト読み込み完了を確認し、ま
た、第2のプロセッサ22は第1のプロセッサ21のコ
ンテキスト読み込み完了を確認し、同時に第2のスレッ
ド集合の実行を開始する。
【0114】図8は各グループ単位で同時にスレッド集
合を実行している様子を示すタイミングチャートであ
る。グループG1に属する第1及び第2のプロセッサ2
1,22でスレッド集合A中のスレッドA1,A2が実
行されており、グループG2に属する第3及び第4のプ
ロセッサ23,24でスレッド集合B中のスレッドB
1,B2が実行されている状況において、第1のプロセ
ッサ21に外部割り込み要求信号X1が入力されると、
第1のプロセッサ21が主位側プロセッサとなり、第2
のプロセッサ22と協調してコンテキストスイッチを行
い、第1及び第2のプロセッサ21,22でスレッド集
合C中のスレッドC1,C2が同時に実行を開始してい
る。
【0115】また、図8では、その後に第1のプロセッ
サ21に外部割り込み要求信号X2が、第2のプロセッ
サ22に外部割り込み要求信号X3がほぼ同時期に入力
された状況が示されている。この場合、排他制御変数3
1による排他調停でカーネルスケジューラ権限を早く取
得した方が先に主位側プロセッサとなり、コンテキスト
スイッチを主導する。図8では、第2のプロセッサ22
が先に主位側プロセッサとなったため、第2のプロセッ
サ22の主導の下でコンテキストスイッチが行われ、新
たなスレッド集合D中のスレッドD1,D2が第1及び
第2のプロセッサ21,22で同時に実行を開始してい
る。そして、第1のプロセッサ21では、スレッド切り
替え後に外部割り込み要求信号X2にかかる例外が再度
発生し、今度は第1のプロセッサ21が主位側プロセッ
サとなってコンテキストスイッチが制御され、スレッド
集合Dと新たに発生したスレッド集合Eとの優先度の関
係で、スレッド集合Dに代わりスレッド集合E中のスレ
ッドE1,E2が第1及び第2のプロセッサ21,22
で同時に実行が開始されている。
【0116】さらに、第3のプロセッサ23は、自プロ
セッサに発生した外部割り込み要求信号X4により例外
処理手段202を実行して主位側プロセッサになろうと
したタイミングで、第1のプロセッサ21が既に主位側
プロセッサになっていたため、劣位待機状態となり、自
プロセッサ23に対するプロセッサ間割り込みが発行さ
れることなく排他制御変数31による排他が解除される
ことにより、主位側プロセッサとなって、第4のプロセ
ッサ24と協調し、スレッド集合Bをスレッド集合Fに
コンテキストスイッチしている。
【0117】以上本発明の実施の形態について説明した
が、本発明は以上の実施の形態にのみ限定されず、その
他各種の付加変更が可能である。以下、幾つかの変形例
を列挙する。
【0118】前記実施の形態では、ディスパッチキュー
33にスレッド集合単位での優先度を付与していたが、
明示的な優先度ではなく、キュー上の配置等によって暗
黙的に優先度を保持する方法とする。前記実施の形態で
は、例外処理手段202において排他調停手段2021
の完了後コンテキスト退避手段2024に処理を進めて
いる。これに加え、排他調停手段2021の完了後(ス
テップA20213)、例外管理装置201が保持する
例外要因等を調べ、例外の内容によっては即座に例外要
因に応じた処理を完了させ、排他制御変数31を初期化
し、直接ステップA20652へと進み、例外状態を解
除し元の実行状態(コンテキスト)のまま実行を再開する
処理を追加する。この場合、劣位待機手段2023にお
いて、主位側プロセッサが自プロセッサに対してコンテ
キスト退避要求にかかるプロセッサ間割り込みを発行し
ない状況として、主位側プロセッサがカーネルスケジュ
ーラ手順206を起動せずに即座に例外処理手段202
を完了させる場合が新たに発生するが、劣位待機手段2
023からの復帰手順などに影響は無い。前記実施の形
態では、主位側プロセッサの従位側プロセッサ起動手段
2063からコンテキスト読み込み要求にかかるプロセ
ッサ間割り込みを従位側プロセッサに発行することで、
従位側プロセッサにおける従位側プロセッサ起動処理手
段205を起動したが、同期変数34を利用して起動す
る。つまり、従位側プロセッサにおける従位側コンテキ
スト退避完了通知手段2042は、同期変数34の自プ
ロセッサに対応するビットをコンテキスト退避完了を示
す値に変更した後、そのビットの値の監視を続け、値が
変化したら、コンテキスト読み込み要求があったものと
して従位側プロセッサ起動処理手段205を起動する。
従って、主位側プロセッサでは、従位側プロセッサ起動
手段2063においてコンテキストの復帰を要求する先
のプロセッサに対応する同期変数34のビットの値を変
化させることで、コンテキスト読み込み要求を行うこと
になる。
【0119】前記実施の形態では、コンテキストの退避
を完了したことを同期変数34を使って従位側プロセッ
サから主位側プロセッサに通知したが、従位側プロセッ
サの従位側コンテキスト退避完了通知手段2042から
例外管理装置201およびプロセッサ間割り込み通知装
置29経由で、主位側プロセッサにプロセッサ間割り込
みを発行して、コンテキストの退避が完了したことを通
知する。
【0120】前記実施の形態では、従位側プロセッサ起
動完了通知手段2052において完了同期変数35を使
ってコンテキストの読み込み完了を他プロセッサに通知
したが、プロセッサ間割り込み通知装置29を用いて同
期処理を行う構成とする。その場合、コンテキスト読み
込みを要求した主位側プロセッサも含めた、スレッド集
合を起動する全てのプロセッサが、プロセッサ間割り込
み通知装置29を用いて同期処理を行うことも可能であ
る。前記実施の形態では、排他調停手段2021におい
て排他制御変数31を明示的に操作し、プロセッサ間割
り込み通知手段2025において例外転送装置2018
を明示的に操作し、従位側コンテキスト退避完了通知手
段2042および従位側コンテキスト退避完了待機手段
2029で同期変数34を明示的に操作し、さらに、従
位側プロセッサ起動完了通知手段2052および従位側
プロセッサ起動完了待機手段2065で完了同期変数3
5を明示的に操作している。であるが、全てあるいはい
ずれかの、明示的な変数操作や装置操作の代わりに、プ
ロセッサの同期用命令によって装置を各手段からは暗黙
の内にプロセッサが操作をして、同期を行う構成とす
る。
【0121】前記実施の形態では、各スレッド集合に含
まれるスレッドの数を2としたが、一般的には2以上の
任意の整数値nにすることができる。その場合、n台ず
つのプロセッサを同一グループとすれば良い。
【0122】
【発明の効果】以上説明したように本発明によれば、以
下のような効果が得られる。
【0123】一時には単一のプロセッサのみがカーネル
スケジューラ実行権限を取得可能となるよう排他調停を
行い、カーネルスケジューラ実行権限を取得したプロセ
ッサが、次に同時に実行すべき複数のスレッドを選択し
て自プロセッサを含む複数のプロセッサで同時に実行さ
せる制御を行うため、カーネルスケジューラの手順が完
了した時点で、複数のプロセッサで同時に所定のスレッ
ドの実行を開始させることができる。
【0124】複数のスレッドを1つの単位として管理で
き、同じ単位のスレッドは複数のプロセッサで同時に実
行を開始させることができる。その理由は、同時に実行
すべき複数のスレッドを1つのスレッド集合とし、スレ
ッド集合中の各スレッドのコンテキストを主記憶上のコ
ンテキスト退避領域にスレッド集合に1対1に対応して
設けたコンテキスト領域に格納し、スレッド集合単位で
のコンテキストスイッチを行うからである。
【0125】複数のプロセッサで同時に別個な例外処理
を実行していても、各プロセッサでスレッドの切り替え
処理を完全に同時に行うことができ、また、例外処理も
その後に実行することができる。その理由は、カーネル
スケジューラ実行権限の取得に失敗したプロセッサは、
カーネルスケジューラ実行権限を取得したプロセッサか
ら、プロセッサ間割り込みを受理できるよう準備をして
待機し、プロセッサ間割り込みを受理したならば待機中
であった例外の発生条件を例外受理前の状態に戻すこと
で、スレッド切り替え後に例外が再発生するよう設定す
るからである。
【図面の簡単な説明】
【図1】本発明を適用したマルチプロセッサシステムの
一実施の形態のブロック図である。
【図2】コンテキスト退避領域の構成例を示す図であ
る。
【図3】ディスパッチキューの内容例を示す図である。
【図4】例外管理装置の構成例を示すブロック図であ
る。
【図5】本発明の実施の形態の動作例を示す流れ図であ
る。
【図6】本発明の実施の形態の動作例を示す流れ図であ
る。
【図7】本発明の実施の形態の動作の具体例を示す図で
ある。
【図8】本発明の実施の形態においてプロセッサの各グ
ループ単位で同時にスレッド集合を実行している様子を
示すタイミングチャートである。
【図9】従来の技術の一構成例を示すブロック図であ
る。
【図10】従来の技術の動作を説明するための流れ図で
ある。
【符号の説明】
1…入力装置 11…第1の例外要因 12…外部割り込み要求信号 21〜2n…第1〜第nのプロセッサ 201…例外管理装置 2011…例外認識装置 2012…優先順位判定装置 2013…非優先側例外保持装置 2014…許可例外優先順位保持装置 2015…起動対象判定装置 2016…例外禁止状態保持装置 202…例外処理手段 2021…排他調停手段 2022…プロセッサ間例外許可手段 2023…劣位待機手段 2024…コンテキスト退避手段 2025…プロセッサ間割り込み通知手段 2019…従位側コンテキスト退避完了待機手段 203…劣位待機時プロセッサ間割り込み処理手段 2031…例外状態巻戻し手段 204…プロセッサ間割り込み処理手段 2041…従位側コンテキスト退避手段 2042…従位側コンテキスト退避完了通知手段 205…従位側プロセッサ起動処理手段 2051…従位側コンテキスト復帰手段 2052…従位側プロセッサ起動完了通知手段 206…カーネルスケジューラ手段 2062…ディスパッチキュー操作手段 2063…従位側プロセッサ起動手段 2064…コンテキスト復帰手段 2065…従位側プロセッサ起動完了待機手段 29…プロセッサ間割り込み通知装置 3 …主記憶 31…排他制御変数 32…コンテキスト退避領域 321…第1のスレッド集合のコンテキスト領域 3211…主位側コンテキスト退避領域 3212…従位側コンテキスト退避領域 322…第2のスレッド集合のコンテキスト領域 3221…主位側コンテキスト退避領域 3222…従位側コンテキスト退避領域 33…ディスパッチキュー 331…第1のスレッド集合を示す構造体 332…第2のスレッド集合を示す構造体 34…同期変数 35…完了同期変数 36…退避先アドレス指定変数 4…出力装置 K…記憶媒体

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 同時に実行すべき複数のスレッドを1つ
    のスレッド集合とし、スレッド集合中の各スレッドのコ
    ンテキストを主記憶上のコンテキスト退避領域にスレッ
    ド集合に1対1に対応して設けたコンテキスト領域に格
    納し、マルチプロセッサシステムを構成する複数のプロ
    セッサのうち一時には単一のプロセッサのみがカーネル
    スケジューラ実行権限を取得可能となるよう例外処理中
    に排他調停を行い、カーネルスケジューラ実行権限を取
    得したプロセッサが、次に実行すべきスレッド集合を選
    択して該スレッド集合中の複数のスレッドを自プロセッ
    サを含む複数のプロセッサで同時に実行させる制御を行
    うことを特徴とする、複数のプロセッサで同時にスレッ
    ドの実行を開始させる方法。
  2. 【請求項2】 前記排他調停の際、カーネルスケジュー
    ラ実行権限の取得に失敗したプロセッサは、カーネルス
    ケジューラ実行権限を取得したプロセッサから、プロセ
    ッサ間割り込みを受理できるよう準備をして待機し、プ
    ロセッサ間割り込みを受理したならば待機中であった例
    外の発生条件を例外受理前の状態に戻すことで、スレッ
    ド切り替え後に例外が再発生するよう設定することを特
    徴とする請求項1記載の、複数のプロセッサで同時にス
    レッドの実行を開始させる方法。
  3. 【請求項3】 スレッド集合中の複数のスレッドのコン
    テキストを、各プロセッサで読み込んだ後、同期手段を
    用いて、各プロセッサが同時にスレッドの実行を開始す
    るよう調停を行うことを特徴とする請求項2記載の、複
    数のプロセッサで同時にスレッドの実行を開始させる方
    法。
  4. 【請求項4】 マルチプロセッサシステムにおいて複数
    のプロセッサで同時にスレッドの実行を開始させる方法
    において、(a)一時には単一のプロセッサのみがカー
    ネルスケジューラ実行権限を取得可能となるよう各プロ
    セッサの例外処理中で排他調停を行うステップ、(b)
    カーネルスケジューラ実行権限を取得したプロセッサ
    が、自プロセッサで実行中のスレッドのコンテキストを
    主記憶上のコンテキスト退避領域に退避すると共に、当
    該スレッドが属するスレッド集合中の他のスレッドの実
    行先プロセッサに対して主記憶上のコンテキスト退避領
    域内の場所を指定してコンテキスト退避要求にかかるプ
    ロセッサ間割り込みを発行するステップ、(c)前記コ
    ンテキスト退避要求にかかるプロセッサ間割り込みを受
    信したプロセッサが、指定された主記憶上のコンテキス
    ト退避領域の場所に自プロセッサで実行中のスレッドの
    コンテキストを退避し、その完了を要求元プロセッサに
    通知するステップ、(d)コンテキスト退避要求を出し
    たプロセッサが、要求先の全てのプロセッサにおけるコ
    ンテキスト退避の完了を確認後、次に実行すべきスレッ
    ド集合中の他プロセッサで実行すべきスレッドのコンテ
    キストを記憶している主記憶上のコンテキスト退避領域
    の場所を指定してそのスレッドの実行先プロセッサに対
    してコンテキスト読み込み要求を出すと共に、次に実行
    すべきスレッド集合中の自プロセッサで実行すべきスレ
    ッドのコンテキストを主記憶上のコンテキスト退避領域
    から読み込んでコンテキストの復帰を行うステップ、
    (e)前記コンテキスト読み込み要求を受けたプロセッ
    サが、指定された主記憶上のコンテキスト退避領域の場
    所からスレッドのコンテキストを読み込んでコンテキス
    トの復帰を行い、その完了を当該スレッドが属するスレ
    ッド集合中のスレッドの全実行先プロセッサに通知する
    ステップ、(f)前記スレッド集合中のスレッドを実行
    する全てのプロセッサにおけるコンテキストの復帰が完
    了した時点で、当該全てのプロセッサが同時にスレッド
    の実行を開始するステップ、とを含み、 複数のプロセッサで同時に実行すべき複数のスレッドを
    1つのスレッド集合として主記憶上のコンテキスト退避
    領域内のスレッド集合に1対1に対応するコンテキスト
    領域に格納することを特徴とする、複数のプロセッサで
    同時にスレッドの実行を開始させる方法。
  5. 【請求項5】 前記ステップaにおける排他調停でカー
    ネルスケジューラ実行権限の取得に失敗したプロセッサ
    は、カーネルスケジューラ実行権限を取得したプロセッ
    サから、プロセッサ間割り込みを受理できるよう準備を
    して待機し、プロセッサ間割り込みを受理したならば待
    機中であった例外の発生条件を例外受理前の状態に戻す
    ことで、スレッド切り替え後に例外が再発生するよう設
    定するステップを、更に含むことを特徴とする請求項4
    記載の、複数のプロセッサで同時にスレッドの実行を開
    始させる方法。
  6. 【請求項6】 同時に実行すべき複数のスレッドを1つ
    のスレッド集合とし、スレッド集合中の各スレッドのコ
    ンテキストを主記憶上のコンテキスト退避領域にスレッ
    ド集合に1対1に対応して設けたコンテキスト領域に格
    納する手段と、マルチプロセッサシステムを構成する複
    数のプロセッサのうち一時には単一のプロセッサのみが
    カーネルスケジューラ実行権限を取得可能となるよう例
    外処理中に排他調停を行う手段とを備え、カーネルスケ
    ジューラ実行権限を取得したプロセッサが、次に実行す
    べきスレッド集合を選択して該スレッド集合中の複数の
    スレッドを自プロセッサを含む複数のプロセッサで同時
    に実行させる制御を行うことを特徴とする、複数のプロ
    セッサで同時にスレッドの実行を開始させる装置。
  7. 【請求項7】 複数のプロセッサで同時に実行すべき複
    数のスレッドを1つのスレッド集合として主記憶上のコ
    ンテキスト退避領域内のスレッド集合に1対1に対応す
    るコンテキスト領域に格納するようにしたマルチプロセ
    ッサシステムにおける各プロセッサに、(a)一時には
    単一のプロセッサのみがカーネルスケジューラ実行権限
    を取得可能となるよう各プロセッサの例外処理中で排他
    調停を行うステップ、(b)カーネルスケジューラ実行
    権限を取得したプロセッサが、自プロセッサで実行中の
    スレッドのコンテキストを主記憶上のコンテキスト退避
    領域に退避すると共に、当該スレッドが属するスレッド
    集合中の他のスレッドの実行先プロセッサに対して主記
    憶上のコンテキスト退避領域内の場所を指定してコンテ
    キスト退避要求にかかるプロセッサ間割り込みを発行す
    るステップ、(c)前記コンテキスト退避要求にかかる
    プロセッサ間割り込みを受信したプロセッサが、指定さ
    れた主記憶上のコンテキスト退避領域の場所に自プロセ
    ッサで実行中のスレッドのコンテキストを退避し、その
    完了を要求元プロセッサに通知するステップ、(d)コ
    ンテキスト退避要求を出したプロセッサが、要求先の全
    てのプロセッサにおけるコンテキスト退避の完了を確認
    後、次に実行すべきスレッド集合中の他プロセッサで実
    行すべきスレッドのコンテキストを記憶している主記憶
    上のコンテキスト退避領域の場所を指定してそのスレッ
    ドの実行先プロセッサに対してコンテキスト読み込み要
    求を出すと共に、次に実行すべきスレッド集合中の自プ
    ロセッサで実行すべきスレッドのコンテキストを主記憶
    上のコンテキスト退避領域から読み込んでコンテキスト
    の復帰を行うステップ、(e)前記コンテキスト読み込
    み要求を受けたプロセッサが、指定された主記憶上のコ
    ンテキスト退避領域の場所からスレッドのコンテキスト
    を読み込んでコンテキストの復帰を行い、その完了を当
    該スレッドが属するスレッド集合中のスレッドの全実行
    先プロセッサに通知するステップ、(f)前記スレッド
    集合中のスレッドを実行する全てのプロセッサにおける
    コンテキストの復帰が完了した時点で、当該全てのプロ
    セッサが同時にスレッドの実行を開始するステップ、を
    実行させるプログラムを記録したコンピュータ可読記録
    媒体。
JP14288199A 1999-05-24 1999-05-24 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体 Expired - Fee Related JP3557947B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP14288199A JP3557947B2 (ja) 1999-05-24 1999-05-24 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体
US09/573,008 US6675191B1 (en) 1999-05-24 2000-05-18 Method of starting execution of threads simultaneously at a plurality of processors and device therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP14288199A JP3557947B2 (ja) 1999-05-24 1999-05-24 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体

Publications (2)

Publication Number Publication Date
JP2000330807A true JP2000330807A (ja) 2000-11-30
JP3557947B2 JP3557947B2 (ja) 2004-08-25

Family

ID=15325775

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14288199A Expired - Fee Related JP3557947B2 (ja) 1999-05-24 1999-05-24 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体

Country Status (2)

Country Link
US (1) US6675191B1 (ja)
JP (1) JP3557947B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006155480A (ja) * 2004-12-01 2006-06-15 Sony Computer Entertainment Inc スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム
KR100608220B1 (ko) 2003-06-27 2006-08-08 가부시끼가이샤 도시바 정보처리시스템 및 메모리 관리방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체
KR100623217B1 (ko) 2003-06-27 2006-09-18 가부시끼가이샤 도시바 스케줄링 방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체 및 실시간 처리시스템
CN101382911A (zh) * 2007-09-03 2009-03-11 松下电器产业株式会社 程序控制装置
US8117425B2 (en) 2007-04-18 2012-02-14 Nec Corporation Multithread processor and method of synchronization operations among threads to be used in same
US8661440B2 (en) 2007-06-26 2014-02-25 Samsung Electronics Co., Ltd. Method and apparatus for performing related tasks on multi-core processor
JP2014191468A (ja) * 2013-03-26 2014-10-06 Hitachi Ltd プロセスの待ち行列を共有する複数のプロセッサを有する計算機、及び、プロセスディスパッチ処理方法

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001046804A1 (en) * 1999-08-16 2001-06-28 Z-Force Corporation System of reusable software parts for implementing concurrency and hardware access, and methods of use
JP2001256062A (ja) * 2000-03-09 2001-09-21 Omron Corp 割込処理方法およびその方法を用いた演算処理装置
JP3975703B2 (ja) * 2001-08-16 2007-09-12 日本電気株式会社 情報処理システムにおける優先実行制御方法及びその装置並びにプログラム
JP4658606B2 (ja) * 2002-10-04 2011-03-23 スターレント・ネットワークス・エルエルシー Ipネットワーク接続のための資源管理
US8194660B2 (en) * 2004-09-09 2012-06-05 Amx Llc System, method, and computer-readable medium for dynamic device discovery for servers binding to multiple masters
US20060075404A1 (en) * 2004-10-06 2006-04-06 Daniela Rosu Method and system for scheduling user-level I/O threads
US7793293B2 (en) * 2004-11-01 2010-09-07 Hewlett-Packard Development Company, L.P. Per processor set scheduling
JP3914230B2 (ja) * 2004-11-04 2007-05-16 株式会社東芝 プロセッサシステム及びその制御方法
US20060123423A1 (en) * 2004-12-07 2006-06-08 International Business Machines Corporation Borrowing threads as a form of load balancing in a multiprocessor data processing system
US7430643B2 (en) * 2004-12-30 2008-09-30 Sun Microsystems, Inc. Multiple contexts for efficient use of translation lookaside buffer
US7877629B2 (en) * 2005-06-01 2011-01-25 Sanmina-Sci Facilitating handling of exceptions in a program implementing a M-on-N threading model
US8028295B2 (en) 2005-09-30 2011-09-27 Intel Corporation Apparatus, system, and method for persistent user-level thread
US8595747B2 (en) * 2005-12-29 2013-11-26 Sony Computer Entertainment Inc. Efficient task scheduling by assigning fixed registers to scheduler
JP4557949B2 (ja) * 2006-04-10 2010-10-06 富士通株式会社 資源ブローカリングプログラム、該プログラムを記録した記録媒体、資源ブローカリング装置、および資源ブローカリング方法
US8156493B2 (en) * 2006-04-12 2012-04-10 The Mathworks, Inc. Exception handling in a concurrent computing process
JPWO2008155849A1 (ja) * 2007-06-20 2010-08-26 富士通株式会社 演算処理装置、tlb制御方法、tlb制御プログラムおよび情報処理装置
US8352711B2 (en) * 2008-01-22 2013-01-08 Microsoft Corporation Coordinating chores in a multiprocessing environment using a compiler generated exception table
US8725992B2 (en) 2008-02-01 2014-05-13 International Business Machines Corporation Programming language exposing idiom calls to a programming idiom accelerator
US8171476B2 (en) * 2008-02-01 2012-05-01 International Business Machines Corporation Wake-and-go mechanism with prioritization of threads
US8880853B2 (en) * 2008-02-01 2014-11-04 International Business Machines Corporation CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock
US8516484B2 (en) * 2008-02-01 2013-08-20 International Business Machines Corporation Wake-and-go mechanism for a data processing system
US8612977B2 (en) 2008-02-01 2013-12-17 International Business Machines Corporation Wake-and-go mechanism with software save of thread state
US8250396B2 (en) 2008-02-01 2012-08-21 International Business Machines Corporation Hardware wake-and-go mechanism for a data processing system
US8127080B2 (en) * 2008-02-01 2012-02-28 International Business Machines Corporation Wake-and-go mechanism with system address bus transaction master
US8225120B2 (en) * 2008-02-01 2012-07-17 International Business Machines Corporation Wake-and-go mechanism with data exclusivity
US8386822B2 (en) * 2008-02-01 2013-02-26 International Business Machines Corporation Wake-and-go mechanism with data monitoring
US7865705B2 (en) * 2008-02-01 2011-01-04 International Business Machines Corporation Branch target address cache including address type tag bit
US8341635B2 (en) 2008-02-01 2012-12-25 International Business Machines Corporation Hardware wake-and-go mechanism with look-ahead polling
US8788795B2 (en) * 2008-02-01 2014-07-22 International Business Machines Corporation Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors
US8640141B2 (en) * 2008-02-01 2014-01-28 International Business Machines Corporation Wake-and-go mechanism with hardware private array
US8316218B2 (en) * 2008-02-01 2012-11-20 International Business Machines Corporation Look-ahead wake-and-go engine with speculative execution
US8145849B2 (en) * 2008-02-01 2012-03-27 International Business Machines Corporation Wake-and-go mechanism with system bus response
US8312458B2 (en) * 2008-02-01 2012-11-13 International Business Machines Corporation Central repository for wake-and-go mechanism
US8732683B2 (en) * 2008-02-01 2014-05-20 International Business Machines Corporation Compiler providing idiom to idiom accelerator
US8452947B2 (en) * 2008-02-01 2013-05-28 International Business Machines Corporation Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms
US8386753B2 (en) * 2009-04-14 2013-02-26 International Business Machines Corporation Completion arbitration for more than two threads based on resource limitations
US8886919B2 (en) * 2009-04-16 2014-11-11 International Business Machines Corporation Remote update programming idiom accelerator with allocated processor resources
US8082315B2 (en) 2009-04-16 2011-12-20 International Business Machines Corporation Programming idiom accelerator for remote update
US8145723B2 (en) * 2009-04-16 2012-03-27 International Business Machines Corporation Complex remote update programming idiom accelerator
US8230201B2 (en) * 2009-04-16 2012-07-24 International Business Machines Corporation Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system
KR101636377B1 (ko) * 2009-10-23 2016-07-06 삼성전자주식회사 재구성 프로세서, 재구성 제어 장치 및 방법, 그리고, 스레드 모델링 방법
US9979589B2 (en) 2009-12-10 2018-05-22 Royal Bank Of Canada Coordinated processing of data by networked computing resources
CA3109739A1 (en) 2009-12-10 2011-01-11 Royal Bank Of Canada Synchronized processing of data by networked computing resources
US9940670B2 (en) 2009-12-10 2018-04-10 Royal Bank Of Canada Synchronized processing of data by networked computing resources
US9959572B2 (en) 2009-12-10 2018-05-01 Royal Bank Of Canada Coordinated processing of data by networked computing resources
US10057333B2 (en) 2009-12-10 2018-08-21 Royal Bank Of Canada Coordinated processing of data by networked computing resources
US8397958B2 (en) 2010-08-05 2013-03-19 Ds Smith Plastics Limited Closure valve assembly for a container
US9298504B1 (en) * 2012-06-11 2016-03-29 Amazon Technologies, Inc. Systems, devices, and techniques for preempting and reassigning tasks within a multiprocessor system
US9619386B2 (en) 2015-01-29 2017-04-11 Kabushiki Kaisha Toshiba Synchronization variable monitoring device, processor, and semiconductor apparatus
DE102016200777A1 (de) * 2016-01-21 2017-07-27 Robert Bosch Gmbh Verfahren und Vorrichtung zum Überwachen und Kontrollieren quasi-paralleler Ausführungsstränge in einem ereignisorientierten Betriebssystem
CN115543343B (zh) * 2022-11-28 2023-04-07 北京大学 变量跨线程操作方法及装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
US5339415A (en) * 1990-06-11 1994-08-16 Cray Research, Inc. Dual level scheduling of processes to multiple parallel regions of a multi-threaded program on a tightly coupled multiprocessor computer system
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US6035321A (en) * 1994-06-29 2000-03-07 Acis, Inc. Method for enforcing a hierarchical invocation structure in real time asynchronous software applications
US5481719A (en) * 1994-09-09 1996-01-02 International Business Machines Corporation Exception handling method and apparatus for a microkernel data processing system
JPH09319653A (ja) 1996-05-31 1997-12-12 Canon Inc 情報処理装置、情報処理システム及びその制御方法
US6513057B1 (en) * 1996-10-28 2003-01-28 Unisys Corporation Heterogeneous symmetric multi-processing system
US6269391B1 (en) * 1997-02-24 2001-07-31 Novell, Inc. Multi-processor scheduling kernel

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100608220B1 (ko) 2003-06-27 2006-08-08 가부시끼가이샤 도시바 정보처리시스템 및 메모리 관리방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체
KR100623217B1 (ko) 2003-06-27 2006-09-18 가부시끼가이샤 도시바 스케줄링 방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체 및 실시간 처리시스템
JP2006155480A (ja) * 2004-12-01 2006-06-15 Sony Computer Entertainment Inc スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム
JP4606142B2 (ja) * 2004-12-01 2011-01-05 株式会社ソニー・コンピュータエンタテインメント スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム
US7913257B2 (en) 2004-12-01 2011-03-22 Sony Computer Entertainment Inc. Scheduling method, scheduling apparatus and multiprocessor system
US8166482B2 (en) 2004-12-01 2012-04-24 Sony Computer Entertainment Inc. Scheduling method, scheduling apparatus and multiprocessor system
US8117425B2 (en) 2007-04-18 2012-02-14 Nec Corporation Multithread processor and method of synchronization operations among threads to be used in same
US8661440B2 (en) 2007-06-26 2014-02-25 Samsung Electronics Co., Ltd. Method and apparatus for performing related tasks on multi-core processor
CN101382911A (zh) * 2007-09-03 2009-03-11 松下电器产业株式会社 程序控制装置
JP2009059310A (ja) * 2007-09-03 2009-03-19 Panasonic Corp プログラム制御装置
US8413163B2 (en) 2007-09-03 2013-04-02 Panasonic Corporation Program control device including per-timeslot switching of thread execution
JP2014191468A (ja) * 2013-03-26 2014-10-06 Hitachi Ltd プロセスの待ち行列を共有する複数のプロセッサを有する計算機、及び、プロセスディスパッチ処理方法

Also Published As

Publication number Publication date
US6675191B1 (en) 2004-01-06
JP3557947B2 (ja) 2004-08-25

Similar Documents

Publication Publication Date Title
JP3557947B2 (ja) 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体
US6715016B1 (en) Multiple operating system control method
KR100759280B1 (ko) 복수의 오퍼레이팅 시스템을 실행하는 계산기
JPH09128252A (ja) 優先度付きタスク実行制御方法及びデータ処理装置
JPH0533410B2 (ja)
KR101150661B1 (ko) 정보 처리 장치 및 메모리 영역 관리 방법
GB2381336A (en) Object-orientated heterogeneous multiprocessor platform
US11392407B2 (en) Semiconductor device
JP2001306341A (ja) コンピュータシステムおよびコンピュータ読み取り可能な記録媒体
JP3644042B2 (ja) マルチタスク処理装置
JPWO2008114415A1 (ja) マルチプロセッシングシステム
JPH08297581A (ja) リアルタイム・オペレーティングシステムにおける割り込み管理方式
JPH05108380A (ja) データ処理システム
JP2010026575A (ja) スケジューリング方法およびスケジューリング装置並びにマルチプロセッサシステム
JPH0895803A (ja) タスクスケジュール方法
JPH0644234B2 (ja) タスク管理装置
JP2023091314A (ja) 半導体装置、半導体装置の制御方法及びプログラム
JPH01206446A (ja) 共通バス制御方式
JP2973480B2 (ja) 通信レジスタ多重化方式
JPH0981526A (ja) マルチプロセッサシステム
JP2932547B2 (ja) 通信レジスタ仮想化方式
JPH02129724A (ja) プログラム実行方式
JPH03182945A (ja) 主記憶内データ転送方式
JPH0381856A (ja) データ転送制御方式
JPS6248871B2 (ja)

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040401

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040427

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040510

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090528

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100528

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110528

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110528

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120528

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120528

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130528

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140528

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees