JPH11259318A - ディスパッチ方式 - Google Patents

ディスパッチ方式

Info

Publication number
JPH11259318A
JPH11259318A JP10062482A JP6248298A JPH11259318A JP H11259318 A JPH11259318 A JP H11259318A JP 10062482 A JP10062482 A JP 10062482A JP 6248298 A JP6248298 A JP 6248298A JP H11259318 A JPH11259318 A JP H11259318A
Authority
JP
Japan
Prior art keywords
processors
processor
group
thread
available
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP10062482A
Other languages
English (en)
Inventor
Yutaka Enko
豊 円光
Toshiaki Arai
利明 新井
Koichi Higure
浩一 日暮
Hidenori Umeno
英典 梅野
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP10062482A priority Critical patent/JPH11259318A/ja
Publication of JPH11259318A publication Critical patent/JPH11259318A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】従来のスレッド・プロセッサ間のアフィニティ
付けが失敗し、スレッドをキャッシュを共有しないプロ
セッサへディスパッチした場合、キャッシュ間データ転
送のオーバヘッドが生じる。 【構成】同一のキャッシュメモリを使用するプロセッサ
をグルーピングして管理する手段(144,145)と、スレッ
ドがどのプロセッサグループへディスパッチされたかを
記憶する手段(171〜174)を備えることにより、同一キャ
ッシュメモリを使用するプロセッサをグループ化し、ス
レッドをグループ内の複数のプロセッサへアフィニティ
付けする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、複数のプロセッ
サと複数のキャッシュメモリで構成され、各々のキャッ
シュメモリは概プロセッサのなかの複数の特定のプロセ
ッサのみが使用するデータをキャッシングするために使
用される構成となっているマルチプロセッサシステムで
あって、ディスパッチャが実行可能なスレッドを概プロ
セッサ群の利用可能なプロセッサに割り付けるディスパ
ッチ方法に関する。
【0002】
【従来の技術】図2は、従来型の共有メモリ型マルチプ
ロセッサシステム(SMP:Shared-memoryMulti Processor
system)の例を示している。ただし、カーネルデータ構
造(143)の詳細は、別図9に示している。図2のSMPの特
徴は、各々のプロセッサPE1,PE2,PE3,PE4(101,102,103,
104)(PEはProcessor Elementの略)が、自分自身のみが
アクセス可能なキャッシュ(プライベートキャッシュPC
1,PC2,PC3,PC4(111,112,113,114)(PCはPrivate Cacheの
略)を有していることである。各々のキャッシュは特定
のひとつのプロセッサが使用するデータをキャッシュす
ることができ、他のプロセッサが使用するデータをキャ
ッシュすることはない。(PC1(111)はPE1(101)が使用す
るデータのみを、PC2(112)はPE2(102)が使用するデータ
のみを、PC3(113)はPE3(103)が使用するデータのみを、
PC4(114)はPE4(104)が使用するデータのみを、キャッシ
ュ可能である。)このようなプライベートキャッシュを
有するSMPにおいて、キャッシュメモリを有効に使用す
る(ヒット率を向上させる)従来の方式として、スレッ
ド(あるいはプロセス)とプロセッサとの間にアフィニ
ティを付ける方式がある。(マルチスレッドシステムで
は、プロセス(別名タスク)はプログラム実行のための
論理的な単位。スレッドはプロセッサへのディスパッチ
の単位である。各プロセスはひとつ以上のスレッドを含
む。マルチスレッドでないシステムは、プロセス中にス
レッドが一つしかないマルチスレッドシステムに相当
し、プロセスがプログラム実行のための単位であり、か
つディスパッチの単位である。プロセスおよびスレッド
についての詳細は、例えば「マルチスレッドプログラミ
ング入門 Bil Lewis, Daniel J. Berg 共著, 岩本信一
訳 アスキー出版局 ISBN 4-7561-1682-5」や、「ISO/IE
C 9945-1 ANSI/IEEE Std 1003.1 POSIX 1003.1 規格
書」を参照のこと。) これは、スレッドをディスパッチするプロセッサを特定
のプロセッサに限定、もしくは、利用可能なプロセッサ
が複数存在した場合にディスパッチ先プロセッサに優先
順位をつける方式で、具体的には、例えば、カーネル
が、スレッド(181〜188)が前回ディスパッチされた際に
どのプロセッサに割り付けられたかを記憶(本例では、
図9のアフィニティ管理ポインタ(171〜174)(プロセッ
サ管理テーブル(151〜154)内にあり、プロセッサに1対
1に対応している。)を先頭とするアフィニティ管理リ
ストに各スレッドをチェーンすることによって記憶して
いる。)し、ディスパッチャ(142)(マルチプロセス
(マルチスレッドを含む)制御をおこなうOSの一部で、
実行可能なスレッドをプロセッサに割り当てるプログラ
ムのこと。詳細、および「ディスパッチ」については、
「岩波・情報科学辞典」を参照のこと。)が、概スレッ
ドが実行可能となった際に、概スレッドを前回割り付け
たプロセッサに割り付ける、もしくは、プロセッサが利
用可能となったとき、前回ディスパッチしたスレッドの
中の実行可能なものをディスパッチする方式がある。
【0003】このような従来のアフィニティ方式の例と
しては、HP-UXのmpctlシステムコールや、AIXのbindpro
cessシステムコールによるアフィニティ付けの例があ
る。これらのシステムコールを用いると、特定のスレッ
ドを特定のプロセッサで実行するよう、OSのディスパッ
チャに対して推奨もしくは、強制的に指示することがで
きる。
【0004】また、特許における公知例としては、特開
平2-33650「マルチプロセッサシステムのタスクスケジ
ュール方式」などがある。
【0005】次に、従来型のSMPの他の例を図3に示
す。ただし、カーネルデータ構造(143)の詳細は別図9
に示している。本SMPの特徴は、図の如く共有キャッシ
ュ(121,122)を有している点にある。共有キャッシュ(S
C:Shared Cache)は、システム中の複数の特定のプロセ
ッサのみが使用するデータをキャッシュすることがで
き、その他のプロセッサが使用するデータをキャッシュ
することはない。(SC1(121)はPE1(101)とPE2(102)が使
用するデータのみを、SC2(122)はPE3(103)とPE4(104)が
使用するデータのみをキャッシュ可能である。前記プラ
イベートキャッシュとの違いは、共有キャッシュが複数
のプロセッサからアクセス可能な点にある。) 一般的なSMPでは、プライベートキャッシュは1次キャ
ッシュとして、共有キャッシュは2次キャッシュとして
用いられる場合が多い。(プライベートキャッシュを設
けない構成もありうる。)2次キャッシュは1次キャッ
シュにヒットしなかったデータをキャッシングする目的
で用いられ、通常、2次キャッシュへのアクセス時間は
メモリよりも高速で、1次キャッシュよりも遅い。ま
た、通常、2次キャッシュは1次キャッシュよりも大容
量である。
【0006】
【発明が解決しようとする課題】図3の如く、共有キャ
ッシュを有するSMPにおいて、共有キャッシュを有効に
使用する(ヒット率を向上させる)ために、図1で用い
た従来のスレッド/プロセッサ・アフィニティ方式を採
用した場合、アフィニティ付けがうまく行かなかったと
き、次のような問題が生じる。
【0007】すなわち、第1に、あるスレッドが実行可
能となったとき、前回ディスパッチしたプロセッサが利
用不可能(ビジー)である場合には、空いている(アイ
ドルしている)プロセッサを利用するが、このとき、同
一の共有キャッシュを共有しないプロセッサへディスパ
ッチした場合には、それまでに共有キャッシュにキャッ
シュされていたデータをキャッシュ間で転送しなければ
ならない。
【0008】例えば、前回PE1(図3の101)にディスパッ
チされたスレッド(例えば図11の181)が事象待ち状態か
ら実行可能状態になったとする。アフィニティ付けによ
り、スレッド(181)はプロセッサPE1(101)へディスパッ
チすべきだが、プロセッサPE1(101)がビジーで、プロセ
ッサPE2,3,4(102,103,104)が利用可能(アイドル)状態だ
ったとする。通常、共有キャッシュSC1(121)中には、ス
レッド(181)実行時にキャッシュされたデータが残って
いる。スレッド(181)がPE2(102)へディスパッチされた
場合、同プロセス(181)実行にあたりPE2(102)は同キャ
ッシュに残っているデータを高速にアクセスすることが
できる。しかし、PE3(102)もしくはPE4(104)へディスパ
ッチされた場合、これらのプロセッサがSC1(121)内部に
残存するデータをアクセスした場合、同データがSC1(12
1)からSC2(122)へキャッシュ間転送されなければならな
い。(公知の方式では、アフィニティ付けされていない
場合、どのプロセッサへディスパッチされるかはわから
ない。) 第2に、システム中のいずれかのプロセッサが利用可能
になったとき、キャッシュを共有しない別のプロセッサ
にディスパッチされたことのあるスレッドをディスパッ
チすると、同スレッドが、別のプロセッサの共有キャッ
シュ上にデータを残していた場合、当該キャッシュから
データを転送しなければならないため、ハードウェア・
オーバヘッドが発生する。
【0009】例えば、プロセッサPE3(図3の103)が利用
可能(アイドル)状態になったとする。アフィニティ付け
により、プロセッサは前回ディスパッチしたことのある
スレッドをディスパッチすべきであるが、アフィニティ
管理リスト(173)には実行可能なスレッドが無い。ここ
で、仮に、PE1またはPE2のアフィニティ管理リスト(171
または172)から実行可能状態のスレッド(仮に184とす
る。)をディスパッチすると、通常、共有メモリSC1(12
1)中には、スレッド(184)実行時にキャッシュされたデ
ータが残っている。このため、スレッド(184)がプロセ
ッサPE3(103)へディスパッチされた後、SC1(121)内部に
残存するデータをアクセスした場合、同データをSC1(12
1)からSC2(122)へキャッシュ間転送しなければならな
い。(公知の方式では、自分自身へアフィニティ付けさ
れていないスレッドをディスパッチする場合、どのスレ
ッドをディスパッチするかはわからない。) 一般に、キャッシュ/キャッシュ間の転送時間は、メモ
リ/キャッシュ間の転送時間よりも大きく、データ転送
のためのオーバヘッドは甚大であり、CPI(Cycle Per In
struction:命令あたりの所要サイクル数)性能の低下は
免れない。
【0010】
【課題を解決するための手段】本発明では、上記の課題
を解決するために、プロセッサ群の中で同一のキャッシ
ュメモリを使用するプロセッサをグルーピングして管理
する手段(プロセッサグループ管理手段)と、スレッド
が前回ディスパッチされた際にどのプロセッサに割り付
けられたかを記憶する手段(割付記憶手段)を有する。
【0011】さらに別の手段としては、前記プロセッサ
グループ管理手段と、前記割付記憶手段を備え、プロセ
スまたはスレッド毎に特定のプロセッサグループを指定
する手段(プロセッサグループ指定手段)を有する。
【0012】さらに別の手段としては、前記プロセッサ
グループ管理手段と、前記割付記憶手段と、システム中
に存在するスレッドをグルーピングして管理する手段
(スレッドグループ管理手段)を備え、スレッドグルー
プ毎にプロセッサグループ指定手段を有する。
【0013】本発明では、OS内のカーネルプログラム
の一部であるディスパッチャが、上記手段を用いて、以
下の処理を実行する。(ディスパッチャが実行するアル
ゴリズムのフローチャートを図10〜17に示す。) ディスパッチャは、システム中のいずれかのスレッドが
実行可能となった際に、概スレッドを前回割り付けたプ
ロセッサ(前記割付記憶手段により記憶)が利用可能で
なかった場合には、前回割り付けられたプロセッサが属
するグループの中の利用可能なプロセッサ(前記グルー
プ管理手段により記憶)に概スレッドを割り付ける。
【0014】さらに、別の作用としては、ディスパッチ
ャは、プロセッサが利用可能でかつ概プロセッサが前回
ディスパッチしたスレッド(前記割付記憶手段により記
憶)の中で実行可能なものがない場合には、概プロセッ
サが属する概グループ内のプロセッサが前回ディスパッ
チしたスレッド(前記グループ管理手段により記憶)の
うち実行可能なものをディスパッチする。
【0015】さらに別の作用としては、ディスパッチャ
は、前記プロセッサグループ指定手段によりグループを
指定するスレッドを、前記指定グループ内のプロセッサ
へのみディスパッチする。
【0016】さらに別の作用としては、ディスパッチャ
は、前記プロセッサグループ指定手段によりグループを
指定するプロセスに含まれるスレッドを、前記指定グル
ープ内のプロセッサへのみディスパッチする。
【0017】さらに別の作用としては、ディスパッチャ
は、システム中のいずれかのスレッドが実行可能となっ
たとき、前記プロセッサグループ指定手段による指定グ
ループ内のプロセッサと前記指定グループ外のプロセッ
サが利用可能であった場合、前記指定グループ内のプロ
セッサへ当該スレッドをディスパッチする。
【0018】さらに別の作用としては、ディスパッチャ
は、システム中のいずれかのプロセッサが利用可能にな
ったとき、前記プロセッサグループ指定手段により当該
プロセッサを指定するスレッドと、当該プロセッサを指
定しないスレッドが実行可能であった場合、当該プロセ
ッサを指定するスレッドをディスパッチする。
【0019】さらに別の作用としては、ディスパッチャ
は、システム中のいずれかのスレッドが実行可能となっ
たとき、当該スレッドが属するプロセスが、前記プロセ
ッサグループ指定手段により指定するグループ内のプロ
セッサと前記指定グループ外のプロセッサが利用可能で
あった場合、前記指定グループ内のプロセッサへ当該ス
レッドをディスパッチする。
【0020】さらに別の作用としては、ディスパッチャ
は、システム中のいずれかのプロセッサが利用可能にな
ったとき、前記プロセッサグループ指定手段により当該
プロセッサを指定するプロセスに含まれるスレッドと、
当該プロセッサを指定しないプロセスに含まれるスレッ
ドが実行可能であった場合、当該プロセッサを指定する
プロセスに含まれるスレッドをディスパッチする。
【0021】さらに別の作用としては、ディスパッチャ
は、いづれかのスレッドが実行可能となったとき、当該
スレッドの属するスレッドグループ(前記スレッドグル
ープ管理手段により記憶)が前記プロセッサグループ指
定手段により指定するプロセッサグループ内のプロセッ
サと同グループ外のプロセッサが利用可能であった場
合、同グループ内のプロセッサへ当該スレッドをディス
パッチする。
【0022】さらに別の作用としては、ディスパッチャ
は、いずれかのプロセッサが利用可能となったとき、当
該プロセッサを指定するスレッドグループ内のスレッド
と、同グループ外のスレッドが実行可能であった場合、
同グループ内のスレッドをディスパッチする。
【0023】
【発明の実施の形態】(1)実施例1 図1は、本発明の実施例の全体図である。図4は、図1
のカーネルデータ構造(143)のうち、プロセッサおよび
プロセス、スレッドを管理するデータ構造の詳細図であ
る。図12は、本実施例のディスパッチャ(142)のフロー
チャートである。
【0024】本実施例のSMPは図1の如く、複数のプロ
セッサPE1〜4(101〜104)と、複数のプライベートキャッ
シュPC1〜4(111〜114)と、複数の共有キャッシュSC1,SC
2(121,122)と、共有メモリ(131)を備えている。なお、
本実施例では4つのプロセッサ(4way)のSMPの例を示し
たが、実際のプロセッサ数はいくつでもよい。16ないし
32以上のプロセッサを備える場合がある。
【0025】プライベートキャッシュPC1,PC2,PC3,PC4
(111〜114)は、それぞれ、プロセッサPE1,PE2,PE3,PE4
(101〜104)が使用するデータのみをキャッシングするこ
とができる。
【0026】共有キャッシュSC1(121)はPE1,PE2(101,10
2)が使用するデータのみをキャッシングすることがで
き、共有キャッシュSC2(122)はPE3,PE4(103,104)が使用
するデータのみをキャッシングすることができる。
【0027】本SMPでは、プライベートキャッシュPC1,P
C2,PC3,PC4は、1次キャッシュとして、共有キャッシュ
SC1,SC2は、2次キャッシュとして設けられている。な
お、本実施例ではすべての2次キャッシュが2つのプロ
セッサからアクセスされる例を示したが、実際には、キ
ャッシュが3つ以上のプロセッサにより共有される場合
がある。また、各共有キャッシュのキャッシングするプ
ロセッサの数が異なっていてもよい。(例えば、ある共
有キャッシュは2つのプロセッサのデータをキャッシュ
し、他の共有キャッシュは4つのプロセッサのデータを
キャッシュする構成が考えられる。) さらに、共有メモリ(131)中には、カーネルプログラム
(141)とカーネルデータ構造(143)が格納されている(カ
ーネルプログラムとカーネルデータ構造は、オペレーテ
ィングシステムの一部である。)。カーネルプログラム
(141)は、ディスパッチャ(142)を含んでいる。カーネル
データ構造(143)中には、プロセッサグループ管理テー
ブル(144,145)および、プロセス・スレッド管理テーブ
ル(146)を含んでいる。(詳細は図4。) プロセス・スレッド管理テーブル(146)はシステム中の
すべてのスレッドの情報を保持するテーブルであり、各
スレッドのスレッド構造体(181〜188)を含んでいる。ス
レッド構造体はスレッド毎に生成され、各スレッドの情
報(スレッドの実行状態(「実行中/実行可能/事象待ち
/...など)、コンテクストなど)を格納している。
【0028】本実施例では、複数のプロセッサが同一の
2次キャッシュを共有している。ここでは、2次キャッ
シュを共有するプロセッサをメンバーとしてグループを
定義し、プロセッサグループと呼ぶことにする。(図1
のSMPでは、PE1とPE2がSC1を共有しており、これらが一
つのプロセッサグループ(PG1とする)を形成してい
る。また、PE3とPE4がSC2を共有しており、これらがも
うひとつのプロセッサグループ(PG2とする)を形成し
ている。) 2次キャッシュを共有するプロセッサどうしをグルーピ
ングしてアフィニティ管理するために、カーネルデータ
構造体中に、プロセッサグループ管理テーブルを備え、
さらに、同テーブル中にプロセッサ管理テーブルを備え
る。
【0029】プロセッサグループ管理テーブル(144,14
5)は、プロセッサグループに1対1に対応して存在して
いる。(図1では、プロセッサグループ管理テーブルGT
1(144)がプロセッサグループ(メンバPE1,PE2)に対応し
ており、プロセッサグループ管理テーブルGT2(145)がプ
ロセッサグループPG2(メンバPE2,PE3)に対応してい
る。) プロセッサ管理テーブル(151,152,153,154)はプロセッ
サグループ管理テーブル(144,145)中にあり、プロセッ
サに1対1に対応して存在している。(図1では、PT1
がPE1に、PT2がPE2に、...対応している。) 各プロセッサ管理テーブルとそれを包含するプロセッサ
グループ管理テーブルとの関係は、対応するプロセッサ
とそれに含まれるプロセッサグループとの関係と一致し
ている。プロセッサ管理テーブルは、それに対応するプ
ロセッサが所属するグループに対応するグループアフィ
ニティ管理テーブルに格納されている。(PT1とPT2はGT
1に、PT3とPT4はGT2に格納されている。) 各々のプロセッサ管理テーブル(151〜154)は、スレッド
構造体(181〜188)のうち、前回概プロセッサへディスパ
ッチしたものをリスト管理している。(本例では、プロ
セッサアフィニティ管理ポインタ(171)を先頭とするチ
ェーンをたどることにより、該当するスレッドがすべて
検索できるデータ構造となっている。ポインタチェーン
によるデータ構造(リスト構造)は、一般的なプログラ
ミングのモデルとして使用されるので、文献「アルゴリ
ズム+データ構造=プログラム」(N.Wirth著)等の文献
を参照されたい。)システム中のすべてのスレッド構造
体はいづれかのプロセッサアフィニティ管理リストに属
している。本実施例では、これにより、スレッドが前回
ディスパッチされた際にどのプロセッサに割り付けられ
たかを記憶している。
【0030】次に、本実施例のディスパッチャの動作を
説明する。システム中の各プロセッサは、レベル2キャ
ッシュに合せてグルーピングされており、ディスパッチ
ャは、レベル2キャッシュを活用するために、プロセッ
サアフィニティが失敗した場合にはグループアフィニテ
ィを使用する。以下にその詳細を説明する。
【0031】まず、スレッド生成時、当該スレッドのス
レッド構造体は、生成されたプロセッサのプロセッサ管
理テーブルのアフィニティ管理リストのメンバーとなる
(アフィニティ管理ポインタを先頭とするポインタのチ
ェーンへリンクされる。)。
【0032】図12は、本発明の第1の実施例のディスパ
ッチャ(142)のフローチャートである。
【0033】本フローチャートに示されたアルゴリズム
は、システム中のあるスレッドが実行可能状態になった
とき、システム中のいずれかのプロセッサにより実行さ
れる。
【0034】まず、ディスパッチャは、実行可能になっ
たスレッドを前回割り付けたプロセッサが現在利用可能
(アイドル状態)かどうか検査する(1201)。(各プロセ
ッサの状態(利用可能かどうか)の検査は、各プロセッ
サ管理テーブル中のプロセッサ状態を表す変数(161〜16
4)(これは、一般的なオペレーティングシステムが有し
ており、カーネルがスレッドディスパッチを実行するた
びに更新する。プロセッサ状態を表す変数は、共有メモ
リ中にあり、どのプロセッサも、すべてのプロセッサ状
態を検査することが可能である。)を参照することによ
って行なう。) もしも、同プロセッサが利用可能ならば、同プロセッサ
へディスパッチする。(1202) もしも、同プロセッサが利用可能でないならば、次に、
前回ディスパッチしたプロセッサと同一グループ内に利
用可能なプロセッサがあるかどうか検査する。(1203)
(同一グループ内のプロセッサは、次のように検索す
る。例えば、PE1(101)と同一グループ内のプロセッサ
は、PE1(101)に対応するプロセッサ管理テーブルPT1(14
7)が格納されているグループ管理テーブルGT1(144)に格
納されている他のプロセッサ管理テーブル、ここでは、
PT2(152)に対応するプロセッサPE2(102)である。PE2プ
ロセッサの状態(利用可能かどうか)の検査はプロセッ
サ状態変数(162)によっておこなう。) もしも、同一グループ内に利用可能なプロセッサがあれ
ば、同プロセッサに当該スレッドをディスパッチする。
(1204)(ディスパッチの際、ディスパッチャは、プロセ
ッサアフィニティ管理リスト(171〜174)の更新を行な
う。すなわち、当該スレッド構造体を旧来のプロセッサ
アフィニティ管理ポインタのチェーンから外し、ディス
パッチ先のプロセッサアフィニティ管理ポインタのチェ
ーンへつなぐ。リスト操作のアルゴリズムは前記文献等
を参照のこと。) もしも、同一グループ内に利用可能なプロセッサがなけ
れば、グループ外の利用可能なプロセッサが存在するか
どうか検査する。(1205)(グループ外のプロセッサにつ
いては、自分自身を除く全てのプロセッサグループ管理
テーブル内の、全てのプロセッサ管理テーブルのプロセ
ッサ状態記憶変数を検査すればよい。) もしも、グループ外の利用可能なプロセッサが存在すれ
ば、同プロセッサにディスパッチし(406)、存在しなけ
れば、システム中のいづれかのプロセッサが利用可能に
なるのを待つ。(407) (2)実施例2 次に、本発明の別の実施例を示す。本実施例の全体図は
図1、カーネルデータ構造の詳細図は図4であり、ディ
スパッチャのアルゴリズム以外は、実施例1と同一であ
る。
【0035】本実施例のディスパッチャ(142)のアルゴ
リズムを示すフローチャートを図13に示す。
【0036】本フローチャートに示されたアルゴリズム
は、システム中のプロセッサのいずれかが利用可能(ア
イドル状態)になったとき、同プロセッサにより実行さ
れる。
【0037】まず、前回同プロセッサへディスパッチさ
れたスレッドのうち、実行可能なものが存在するかどう
か検査する。(1301)(実行可能なスレッドの検索は、当
該プロセッサに対応するプロセッサ管理テーブル(151〜
154)中のアフィニティ管理ポインタ(171〜174)からアフ
ィニティ管理リストをたどり、各スレッド構造体(181〜
188)中に格納されているスレッド状態変数(図4の401)が
「READY(実行可能)」であるものを検索する。以下同
じ。) もしも、そのようなスレッドが存在すれば、同スレッド
をディスパッチする(1302)。
【0038】もしも、そのようなスレッドが存在しなけ
れば、同プロセッサと同一グループ内のプロセッサにア
フィニティ付けされた実行可能なスレッドが存在するか
どうか検査する。(1303)(これは、次のように行なう。
例えば、プロセッサPE1(101)と同一グループのプロセッ
サにアフィニティ付けされたスレッドは、PT1と同一の
プロセッサグループ管理テーブルGT1(144)内のプロセッ
サ管理テーブルPT2(152)内のアフィニティ管理ポインタ
(172)にリンクされているスレッド構造体(184,185)のス
レッド状態変数(404,405)を検査する。) もしも、そのようなスレッドが存在すれば、同スレッド
をディスパッチする(1304) もしも、そのようなスレッドが存在しなければ、他のグ
ループに実行可能なスレッドが存在するかどうか検査す
る。(1305) もしも、グループ外に実行可能なスレッドが存在すれ
ば、同スレッドをディスパッチし(1306)、存在しなけれ
ばシステム中のいずれかのスレッドが実行可能な状態に
なるのを待つ(アイドル状態で待つ)。(1307) なお、実施例1,2のアフィニティ方式を実現するため
には、カーネル管理データ構造(143)が図5のデータ構
造であってもよい。(図1のカーネルデータ構造(143)
中のプロセッサグループ管理テーブル(144)が、プロセ
ッサ情報テーブル(501)に置き換わる。) 図5のプロセッサ情報テーブル(501)の各行の項目は、
プロセッサ番号(511),グループ内の次のプロセッサ番号
(512)、プロセッサ状態(513)、アフィニティ管理ポイン
タ(514)、その他である。同テーブルの列数はプロセッ
サ数であり、各プロセッサに関する各項目毎の情報が同
一列に格納される。
【0039】「プロセッサ番号」(511)の行には、シス
テム中のプロセッサのID(通し番号)が格納される。「グ
ループ内の次のプロセッサ番号」(512)の行には、次に
ようにプロセッサIDを格納する。すなわち、同一グルー
プ(前述)に属するプロセッサをすべて集めて順になら
べ、各プロセッサの次の(ただし、最後のプロセッサに
は最初の)順番のプロセッサの番号を格納する。例え
ば、図7のように、プロセッサ3と同じグループのプロ
セッサを順にならべると、(3,4)であり、プロセッ
サ3の次のプロセッサは4。プロセッサ3の次のプロセ
ッサは4である。こうしておけば、各々のプロセッサに
ついて、同一グループに属するプロセッサを検索するに
は、同プロセッサに対応する列の「グループ内の次のプ
ロセッサ番号」(512)の項目を(自分自身のプロセッサ
番号が出現するまで)順にたどればよい。
【0040】「アフィニティ管理ポインタ」(514)の行
には、前回概プロセッサへディスパッチしたスレッドの
スレッド構造体リストの先頭アドレスが格納されてい
る。(図1のアフィニティ管理ポインタ(171〜174)と同
様の内容が格納される。) 第2の実施例のプロセッサ情報テーブル(501)を用いた
場合のディスパッチャの動作は、第1の実施例と同様で
ある。(図10,11のフローチャート参照。) ただし、同一グループ内の利用可能なプロセッサの検索
は次のように行う。まず、各々のプロセッサに対応する
列の「グループ内の次のプロセッサ番号」(512)の項目
をみる。そして、同「プロセッサ番号」(511)の列の
「プロセッサ状態」(513)の行を検査し「IDLE」であれ
ば、当該プロセッサは利用可能である。もしも「RUN」
であれば、当該プロセッサは利用できないので、次に、
当該プロセッサの「グループ内の次のプロセッサ番号」
(512)の項目をみる。そして、同番号の「プロセッサ番
号」(511)の列の「プロセッサ状態」(513)の行を検査す
る。これを、「グループ内の次のプロセッサ番号」(51
2)に自分自身のプロセッサ番号が出現するまで繰り返
す。
【0041】また、同一グループ内の実行可能なスレッ
ドの検索は次のように行う。上記の方法で、検索した同
一グループのプロセッサへアフィニティ付けされたスレ
ッドは、当該プロセッサの「プロセッサ番号」(511)の
列の「アフィニティ管理ポインタ」(514)を先頭とした
リストをたどることによって、検索できる。同リストの
メンバーのスレッド構造体中にあるの「スレッド状態変
数」(401)を参照することによって、同スレッドが実行
可能か判別できる。
【0042】(3)実施例3 次に、本発明の別の実施例を示す。本実施例の全体図は
図1であるが、カーネルデータ構造の詳細が図6に示す
データ構造に置き換わっている。ディスパッチャのアル
ゴリズムを図14のフローチャートによって示す。
【0043】本実施例のプロセッサグループ管理テーブ
ル(144,145)は、実施例1と同様、各プロセッサに対応
したプロセッサ管理テーブル(151〜154)を格納してい
る。プロセッサ管理テーブル(151〜154)は、プロセッサ
状態記憶変数(161〜164)を含んでおり、各プロセッサへ
スレッドをディスパッチ可能かどうかを表わしている。
【0044】プロセス管理テーブル(146)中には、シス
テム中に存在するすべてのプロセスのプロセス構造体(6
01〜603)が格納されており、各プロセス構造体中には、
当該プロセス中に生成されたすべてのスレッドのスレッ
ド構造体(611〜618)が格納されている。
【0045】各スレッド構造体中(611〜618)には、スレ
ッド実行状態変数(631〜638)とプロセッサグループ指定
変数(631〜638)が格納されている。スレッド実行状態変
数(631〜638)には、各スレッドの実行状態(実行可能/
事象待ち/...)が格納されている。プロセッサグループ
指定変数(631〜638)には、特定のプロセッサグループを
指定するデータ(プロセッサグループ管理テーブルへの
ポインタもしくはプロセッサグループID。ここではプロ
セッサグループIDとする。)が格納される。
【0046】プロセッサグループ指定変数(631〜638)へ
のグループIDのセット方法としては、OSが同変数設定の
ためのシステムコールを用意し、システム中で動作する
スレッドが実行するプログラムもしくは、ユーザコマン
ドから、同システムコールを介してカーネルプログラム
に設定させる方法が考えられる。
【0047】本実施例では、上記プロセッサグループ指
定変数(631〜638)によって、スレッド毎に特定のプロセ
ッサグループを指定する。
【0048】次に、本実施例のディスパッチャ(142)の
アルゴリズムを図14のフローチャートに示す。本フロー
チャートに示されたアルゴリズムは、システム中のいず
れかのスレッドが実行可能状態になったとき、当該スレ
ッドが指定したプロセッサグループ内のプロセッサによ
り実行される。(指定したグループ以外のプロセッサは
実行しない。) まず、実行可能になった当該スレッドが指定するプロセ
ッサグループ内のいずれかのプロセッサが利用可能かど
うか検査する(1401)。これは、図6のカーネルデータ構
造において次のように行う。すなわち、例えば、スレッ
ド(614)が実行可能になったとする。同スレッドのプロ
セッサグループ(PG)指定変数(634)を参照し(ここでは
「1」。)、当該プロセッサグループ管理テーブルPG1
(144)中のプロセッサ管理テーブルPT1(151)とPT2(152)
のプロセッサ状態変数(161と162)を参照する。これらの
いずれかが「利用可能(IDLE)」を表わしていれば、当該
プロセッサへディスパッチを行う(1402)。(この場合、
前回ディスパッチしたプロセッサへディスパッチするこ
とが好ましい。前回ディスパッチしたプロセッサを選択
する手段とアルゴリズムは実施例1、2と同様。)いず
れも「利用不可(BUSY)」であった場合には、当該スレッ
ドは実行可能状態のまま、指定グループ内のいずれかの
プロセッサが利用可能になるのを待って休眠(sleep)す
る(1403)。(グループ外のプロセッサが利用可能であっ
ても、それらへはディスパッチしない。) 上記方式によって、当該スレッドを、スレッドが指定す
るグループ内のプロセッサへのみディスパッチすること
が出来る。
【0049】(4)実施例4 次に、本発明の別の実施例を示す。本実施例の全体図は
図1であるが、カーネルデータ構造の詳細が図7に示す
データ構造に置き換わっている。ディスパッチャのアル
ゴリズムは図15のフローチャートである。
【0050】本実施例のプロセッサグループ管理テーブ
ル(144,145)は、実施例1と同様、各プロセッサに対応
したプロセッサ管理テーブル(151〜154)を格納してい
る。プロセッサ管理テーブル(151〜154)は、プロセッサ
状態記憶変数(161〜164)を含んでおり、各プロセッサへ
スレッドをディスパッチ可能かどうかを表わしている。
【0051】プロセス管理テーブル(146)中には、シス
テム中に存在するすべてのプロセスのプロセス構造体(6
01〜603)が格納されており、各プロセス構造体中には、
当該プロセス中に生成されたすべてのスレッドのスレッ
ド構造体(611〜618)と、プロセッサグループ指定変数(7
01〜703)が格納されている。プロセッサグループ指定変
数(701〜703)には、特定のプロセッサグループを指定す
るデータ(プロセッサグループ管理テーブルへのポイン
タもしくはプロセッサグループID。ここではプロセッサ
グループIDとする。)が格納される。
【0052】各スレッド構造体中(611〜618)には、スレ
ッド実行状態変数(631〜638)が格納されている。スレッ
ド実行状態変数(631〜638)には、各スレッドの実行状態
(実行可能(READY)/事象待ち(WAIT)/実行中(RUN)/...の
いずれか)が格納されている。
【0053】プロセッサグループ指定変数(701〜703)へ
のグループIDのセット方法としては、OSが同変数設定の
ためのシステムコールを用意し、システム中で動作する
スレッドが実行するプログラムもしくは、ユーザコマン
ドから、同システムコールを介してカーネルプログラム
に設定させる方法が考えられる。
【0054】本実施例では、上記プロセッサグループ指
定変数(701〜703)によって、プロセス毎に特定のプロセ
ッサグループを指定する。
【0055】次に、本実施例のディスパッチャ(142)の
アルゴリズムを図15のフローチャートに示す。本フロー
チャートに示されたアルゴリズムは、システム中のいず
れかのスレッドが実行可能状態になったとき、当該スレ
ッドが指定したプロセッサグループ内のプロセッサによ
り実行される。(指定したグループ以外のプロセッサは
実行しない。) まず、実行可能になった当該スレッドの属するプロセス
が指定するプロセッサグループ内のいずれかのプロセッ
サが利用可能かどうか検査する(1501)。これは、図7の
カーネルデータ構造において次のように行う。すなわ
ち、例えば、スレッド(614)が実行可能になったとす
る。同スレッドが所属するプロセス(602)のプロセッサ
グループ(PG)指定変数(702)を参照し(ここでは
「1」。)、当該プロセッサグループ管理テーブルPG1
(144)中のプロセッサ管理テーブルPT1(151)とPT2(152)
のプロセッサ状態変数(161と162)を参照する。これらの
いずれかが「利用可能(IDLE)」を表わしていれば、当該
プロセッサへディスパッチを行う(1502)。(複数のプロ
セッサが利用可能であった場合には前回ディスパッチし
たプロセッサへディスパッチするのが望ましい。)いず
れも「利用不可(BUSY)」であった場合には、当該スレッ
ドは実行可能状態のまま、指定グループ内のいずれかの
プロセッサが利用可能になるのを待って休眠(sleep)す
る(1503)。(グループ外のプロセッサが利用可能であっ
ても、それらへはディスパッチしない。) (5)実施例5 次に、本発明の別の実施例を示す。本実施例の全体図は
図1であるが、カーネルデータ構造の詳細が図6に示す
データ構造に置き換わっている。ディスパッチャのアル
ゴリズムは図16のフローチャートである。
【0056】本実施例のカーネルデータ構造について
は、実施例3の説明を参照されたい。
【0057】本実施例のディスパッチャのアルゴリズム
(図13)は、システム中のいずれかのスレッドが実行可能
状態になったとき、システム中のいずれかのプロセッサ
により実行される。
【0058】まず、実行可能になった当該スレッドが指
定するプロセッサグループ内のいずれかのプロセッサが
利用可能かどうか検査する(1601)。これは、図6のカー
ネルデータ構造において次のように行う。すなわち、例
えば、スレッド(614)が実行可能になったとする。同ス
レッドのプロセッサグループ(PG)指定変数(634)を参照
し(ここでは「1」。)、当該プロセッサグループ管理
テーブルPG1(144)中のプロセッサ管理テーブルPT1(151)
とPT2(152)のプロセッサ状態変数(161と162)を参照す
る。
【0059】これらのいずれかが「利用可能(IDLE)」を
表わしていれば、当該プロセッサへディスパッチを行
う。(複数のプロセッサが利用可能であった場合には、
前回ディスパッチしたプロセッサへディスパッチするの
が好ましい。本手段とアルゴリズムは前記実施例と同
様。)(1602) いずれも「利用不可(BUSY)」であった場合には、指定プ
ロセッサグループ外のいずれかのプロセッサが利用可能
かどうか検査する(1603)。これは、図6のカーネルデー
タ構造において次のように行う。すなわち、プロセッサ
グループ管理テーブルGT1(144)以外のすべてのプロセッ
サグループ管理テーブル(ここでは、GT2)に含まれる
すべてのプロセッサ管理テーブル(ここでは、PT3とPT
4)中のプロセッサ状態記憶変数(ここでは、163,164)
を参照する。
【0060】これらのいずれかが「利用可能(IDLE)」を
表わしていれば、当該プロセッサへディスパッチを行
う。(1604) いずれも「利用不可(BUSY)」であった場合には、当該ス
レッドは実行可能状態のまま、システム中のいずれかの
プロセッサが利用可能になるのを待って休眠(sleep)す
る(1605)。
【0061】(6)実施例6 次に、本発明の別の実施例を示す。本実施例の全体図は
図1であるが、カーネルデータ構造の詳細が図6に示す
データ構造に置き換わっている。ディスパッチャのアル
ゴリズムは図17のフローチャートである。
【0062】本実施例のカーネルデータ構造について
は、実施例3の説明を参照されたい。
【0063】本実施例のディスパッチャのアルゴリズム
(図17)は、システム中のいずれかのプロセッサが利用可
能になったとき、同プロセッサにより実行される。
【0064】まず、利用可能になったプロセッサを含む
プロセッサグループを指定するスレッドが存在するかど
うか検査する(1701)。これは、図6のカーネルデータ構
造において次のように行う。すなわち、例えば、プロセ
ッサPE2を指定するスレッドを検索するには、プロセス
管理テーブル(146)中のすべてのプロセス構造体(601〜6
03)の全スレッド構造体(611〜618)中のプロセッサグル
ープ指定変数(631〜638)を参照し、同変数がプロセッサ
PE2を指定するスレッドのスレッド実行状態変数(621〜6
28)を参照する。
【0065】これらのいずれかが「実行可能(READY)」
であれば、それらのスレッドの一つを同プロセッサへデ
ィスパッチする(1402)。
【0066】これらのいずれもが「実行可能(READY)」
でなければ、システム中のすべてのスレッドのうち、実
行可能なものが存在するかどうか検査する(1703)。これ
は、図6のカーネルデータ構造において次のように行
う。すなわち、プロセス管理テーブル(146)中のすべて
のプロセス構造体(601〜603)の全スレッド構造体(611〜
618)中のプロセッサグループ指定変数(631〜638)を参照
し、同変数がプロセッサPE2を指定しないスレッド(PE2
を指定するスレッドは検査済みなので。)のスレッド実
行状態変数(621〜628)を参照する。
【0067】これらのいずれかが「実行可能(READY)」
であれば、それらのスレッドの一つを同プロセッサへデ
ィスパッチする(1704)。
【0068】これらのいずれもが「実行可能(READY)」
でなければ、当該プロセッサは、プロセッサ管理テーブ
ルのプロセッサ状態変数を「利用可能(idle)」にして、
システム中のいずれかのスレッドが実行可能になるのを
待つ(1705)。
【0069】(7)実施例7 次に、本発明の別の実施例を示す。本実施例の全体図は
図1であるが、カーネルデータ構造の詳細が図7に示す
データ構造に置き換わっている。ディスパッチャのアル
ゴリズムは図16のフローチャートである。
【0070】本実施例のカーネルデータ構造について
は、実施例4の説明を参照されたい。
【0071】本実施例のディスパッチャのアルゴリズム
(図16)は、システム中のいずれかのスレッドが実行可能
状態になったとき、システム中のいずれかのプロセッサ
により実行される。
【0072】まず、実行可能になった当該スレッドが含
まれるプロセスが指定するプロセッサグループ内のいず
れかのプロセッサが利用可能かどうか検査する(1601)。
これは、図6のカーネルデータ構造において次のように
行う。すなわち、例えば、スレッド(614)が実行可能に
なったとする。同スレッドのスレッド構造体(614)が含
まれるプロセス構造体(602)のプロセッサグループ(PG)
指定変数(702)を参照し(ここでは「1」。)、当該プ
ロセッサグループ管理テーブルPG1(144)中のプロセッサ
管理テーブルPT1(151)とPT2(152)のプロセッサ状態変数
(161と162)を参照する。
【0073】これらのいずれかが「利用可能(IDLE)」を
表わしていれば、当該プロセッサへディスパッチを行
う。(1602) いずれも「利用不可(BUSY)」であった場合には、指定プ
ロセッサグループ外のいずれかのプロセッサが利用可能
かどうか検査する(1603)。これは、図6のカーネルデー
タ構造において次のように行う。すなわち、プロセッサ
グループ管理テーブルGT1(144)以外のすべてのプロセッ
サグループ管理テーブル(ここでは、GT2)に含まれる
すべてのプロセッサ管理テーブル(ここでは、PT3とPT
4)中のプロセッサ状態記憶変数(ここでは、163,164)
を参照する。
【0074】これらのいずれかが「利用可能(IDLE)」を
表わしていれば、当該プロセッサへディスパッチを行
う。(1604) いずれも「利用不可(BUSY)」であった場合には、当該ス
レッドは実行可能状態のまま、システム中のいずれかの
プロセッサが利用可能になるのを待って休眠(sleep)す
る(1605)。
【0075】(8)実施例8 次に、本発明の別の実施例を示す。本実施例の全体図は
図1であるが、カーネルデータ構造の詳細が図7に示す
データ構造に置き換わっている。ディスパッチャのアル
ゴリズムは図18のフローチャートである。
【0076】本実施例のカーネルデータ構造について
は、実施例4の説明を参照されたい。
【0077】本実施例のディスパッチャのアルゴリズム
(図18)は、システム中のいずれかのプロセッサが利用可
能になったとき、同プロセッサにより実行される。
【0078】まず、利用可能になったプロセッサを含む
プロセッサグループを指定するプロセス中に実行可能な
スレッドが存在するかどうか検査する(1801)。これは、
図7のカーネルデータ構造において次のように行う。す
なわち、例えば、プロセッサPE2を指定するプロセスを
検索するには、プロセス管理テーブル(146)中のすべて
のプロセス構造体(601〜603)のプロセッサグループ指定
変数(701〜703)を参照し、同変数がプロセッサPE2を指
定するプロセス(図7では、602)のスレッド構造体のスレ
ッド実行状態変数(614,615)を参照する。
【0079】これらのいずれかが「実行可能(READY)」
であれば、それらのスレッドの一つを同プロセッサへデ
ィスパッチする(1802)。
【0080】これらのいずれもが「実行可能(READY)」
でなければ、システム中のすべてのスレッドのうち、実
行可能なものが存在するかどうか検査する(1803)。これ
は、図7のカーネルデータ構造において次のように行
う。すなわち、プロセス管理テーブル(146)中のすべて
のプロセス構造体(601〜603)の全スレッド構造体(611〜
618)中のプロセッサグループ指定変数(631〜638)を参照
し、同変数がプロセッサPE2を指定しないスレッド(PE2
を指定するスレッドは検査済みなので。)のスレッド実
行状態変数(621〜628)を参照する。
【0081】これらのいずれかが「実行可能(READY)」
であれば、それらのスレッドの一つを同プロセッサへデ
ィスパッチする(1804)。
【0082】これらのいずれもが「実行可能(READY)」
でなければ、当該プロセッサは、プロセッサ管理テーブ
ルのプロセッサ状態変数を「利用可能(idle)」にして、
システム中のいずれかのスレッドが実行可能になるのを
待つ(1805)。
【0083】(9)実施例9 次に、本発明の別の実施例を示す。本実施例の全体図は
図1であるが、カーネルデータ構造の詳細が図8に示す
データ構造に置き換わっている。ディスパッチャのアル
ゴリズムは図19のフローチャートである。
【0084】本実施例のプロセッサグループ管理テーブ
ル(144,145)は、実施例1と同様、各プロセッサに対応
したプロセッサ管理テーブル(151〜154)を格納してい
る。プロセッサ管理テーブル(151〜154)は、プロセッサ
状態変数(161〜164)を含んでおり、各プロセッサへスレ
ッドをディスパッチ可能かどうかを表わしている。
【0085】プロセス管理テーブル(146)中には、シス
テム中に存在するすべてのプロセスのプロセス構造体(6
01〜603)と、スレッドグループ管理構造体(801〜803)が
格納されている。各プロセス構造体中(601〜603)には、
当該プロセス中に生成されたすべてのスレッドのスレッ
ド構造体(611〜618)が格納されている。スレッド構造体
(611〜618)にはスレッド実行状態変数(621〜628)とスレ
ッドグループリンクポインタ(831〜838)が格納されてい
る。
【0086】スレッドグループ管理構造体(801〜803)に
は、プロセッサグループ指定変数(811〜813)とスレッド
グループ管理ポインタ(821〜823)が格納されている。ス
レッドグループ管理ポインタ(821〜823)を先頭とするポ
インタチェーンリストには、0個〜複数個のスレッド構
造体がスレッドグループリンクポインタ(831〜838)によ
ってチェーンリンクされており、スレッドグループを作
っている。各スレッドグループに属する0個〜複数個の
スレッドは、グループに対応する各プロセッサグループ
指定変数(811〜813)により特定のプロセッサグループを
指定している。(図8では、例えば、スレッド611,612,
614が同一のスレッドメンバーに属しており、これら
は、プロセッサグループ1を指定(811による)してい
る。) スレッドグループの生成(スレッドグループ管理構造体
の追加)、各スレッドグループへのスレッドの追加、削
除、プロセッサグループ指定変数(811〜813)へのグルー
プIDのセット方法としては、OSが同実施のためのシステ
ムコール・インターフェースを用意し、システム中で動
作するスレッドが実行するプログラムもしくは、ユーザ
コマンドから、同システムコールを介してカーネルプロ
グラムに実施させる方法が考えられる。
【0087】各スレッド構造体中(611〜618)には、スレ
ッド実行状態変数(631〜638)が格納されている。スレッ
ド実行状態変数(631〜638)には、各スレッドの実行状態
(実行可能(READY)/事象待ち(WAIT)/実行中(RUN)/...の
いずれか)が格納されている。
【0088】本実施例のディスパッチャのアルゴリズム
(図19)は、システム中のいずれかのスレッドが実行可能
状態になったとき、システム中のいずれかのプロセッサ
により実行される。
【0089】まず、実行可能になった当該スレッドが含
まれるグループが指定するプロセッサグループ内のいず
れかのプロセッサが利用可能かどうか検査する(1901)。
これは、図8のカーネルデータ構造において次のように
行う。すなわち、例えば、スレッド(614)が実行可能に
なったとする。同スレッドのスレッド構造体(614)が含
まれるリスト構造体のスレッドグループ管理構造体(80
1)のプロセッサグループ(PG)指定変数(811)を参照し
(ここでは「1」。)、当該プロセッサグループ管理テ
ーブルPG1(144)中のプロセッサ管理テーブルPT1(151)と
PT2(152)のプロセッサ状態変数(161と162)を参照する。
【0090】これらのいずれかが「利用可能(IDLE)」を
表わしていれば、当該プロセッサへディスパッチを行
う。(1902) いずれも「利用不可(BUSY)」であった場合には、指定プ
ロセッサグループ外のいずれかのプロセッサが利用可能
かどうか検査する(1903)。これは、図8のカーネルデー
タ構造において次のように行う。すなわち、プロセッサ
グループ管理テーブルGT1(144)以外のすべてのプロセッ
サグループ管理テーブル(ここでは、GT2)に含まれる
すべてのプロセッサ管理テーブル(ここでは、PT3とPT
4)中のプロセッサ状態記憶変数(ここでは、163,164)
を参照する。
【0091】これらのいずれかが「利用可能(IDLE)」を
表わしていれば、当該プロセッサへディスパッチを行
う。(1904) いずれも「利用不可(BUSY)」であった場合には、当該ス
レッドは実行可能状態のまま、システム中のいずれかの
プロセッサが利用可能になるのを待って休眠(sleep)す
る(1905)。
【0092】(10)実施例10 次に、本発明の別の実施例を示す。本実施例の全体図は
図1であるが、カーネルデータ構造の詳細が図8に示す
データ構造に置き換わっている。ディスパッチャのアル
ゴリズムは図20のフローチャートである。
【0093】本実施例のカーネルデータ構造について
は、実施例9の説明を参照されたい。
【0094】本実施例のディスパッチャのアルゴリズム
(図20)は、システム中のいずれかのプロセッサが利用可
能になったとき、同プロセッサにより実行される。
【0095】まず、利用可能になったプロセッサを含む
プロセッサグループを指定するスレッドグループ中に実
行可能なスレッドが存在するかどうか検査する(2001)。
これは、図8のカーネルデータ構造において次のように
行う。すなわち、例えば、プロセッサPE2を指定するプ
ロセスを検索するには、プロセス管理テーブル(146)中
のすべてのスレッドグループ管理構造体(801〜803)のプ
ロセッサグループ指定変数(811〜813)を参照し、同変数
がプロセッサPE2を指定するすべてのスレッドグループ
(801と803で管理されるグループ)のスレッド構造体(61
1,612,614および、616,617,618)のスレッド実行状態変
数(621,622,624および、626,627,628)を参照する。
【0096】これらのいずれかが「実行可能(READY)」
であれば、それらのスレッドの一つを同プロセッサへデ
ィスパッチする(2002)。
【0097】これらのいずれもが「実行可能(READY)」
でなければ、システム中のすべてのスレッドのうち、実
行可能なものが存在するかどうか検査する(2003)。これ
は、図7のカーネルデータ構造において次のように行
う。すなわち、プロセス管理テーブル(146)中のすべて
のスレッドグループ管理構造体(801〜803)のプロセッサ
グループ指定変数(811〜813)を参照し、同変数がプロセ
ッサPE2を指定しない(PE2を指定するスレッドは検査済
みなので。)すべてのスレッドグループ(802で管理され
るグループ)のスレッド構造体(613,615)のスレッド実行
状態変数(623,625)を参照する。
【0098】これらのいずれかが「実行可能(READY)」
であれば、それらのスレッドの一つを同プロセッサへデ
ィスパッチする(2004)。
【0099】これらのいずれもが「実行可能(READY)」
でなければ、当該プロセッサは、プロセッサ管理テーブ
ルのプロセッサ状態変数を「利用可能(idle)」にして、
システム中のいずれかのスレッドが実行可能になるのを
待つ(2005)。
【0100】(11)実施例11 次に、本発明の別の実施例を示す。本実施例の全体図は
図1であるが、カーネルデータ構造の詳細が図9に示す
データ構造に置き換わっている。ディスパッチャのアル
ゴリズムは図21のフローチャートである。
【0101】本実施例のカーネルデータ構造(図9)
は、図6のプロセッサグループ指定変数(631〜638)が、
プロセッサ指定変数(931〜938)に置き換わった以外は図
6と同一である。本図の各プロセッサ指定変数(931〜93
8)は、プロセッサIDを格納することによっていずれかの
プロセッサを指定する。
【0102】本実施例のディスパッチャのアルゴリズム
(図21)は、システム中のいずれかのスレッドが実行可能
状態になったとき、システム中のいずれかのプロセッサ
により実行される。
【0103】まず、実行可能なスレッドが指定するプロ
セッサが利用可能かどうか検査する(2101)。もし、同プ
ロセッサが利用可能ならば、同プロセッサへディスパッ
チする(2102)。
【0104】もし、同プロセッサが利用可能でないなら
ば、同プロセッサと同一グループ内のいずれかのプロセ
ッサが利用可能かどうか調査する(2103)。(調査の方法
は、実施例5を参照のこと。) もし、同一グループ内のいずれかのプロセッサが利用可
能ならば、それらの一つにディスパッチする(2104)。
(利用可能なプロセッサが複数あり、それらのうち前回
ディスパッチしたプロセッサがあれば、同プロセッサへ
ディスパッチするのが望ましい。) もし、いずれのプロセッサも利用可能でないならば、シ
ステム中のいずれかのプロセッサが利用可能になるのを
待つ(2105)。
【0105】(12)実施例12 次に、本発明の別の実施例を示す。本実施例の全体図お
よびカーネルデータ構造の詳細は、図1と図9であり、
実施例11と同一である。ただし、ディスパッチャのアル
ゴリズムは図22のフローチャートである。
【0106】本実施例のディスパッチャのアルゴリズム
(図22)は、システム中のいずれかのプロセッサが利用可
能になったとき、同プロセッサにより実行される。
【0107】まず、利用可能になったプロセッサを指定
する実行可能なスレッドが存在するかどうか検査する(2
201)。(検査方法は実施例6と同様。) これらスレッドのいずれかが実行可能(READY)であれ
ば、それらのスレッドの一つを同プロセッサへディスパ
ッチする(2202)。(条件に該当するスレッドが複数の場
合には前回当該プロセッサへディスパッチしたスレッド
をへディスパッチするのが望ましい。) これらのいずれもが実行可能でなければ、当該利用可能
なプロセッサと同一グループに属するプロセッサを含む
プロセッサグループを指定する実行可能なスレッドが存
在するか検査する。
【0108】いずれかが実行可能(READY)であれば、そ
れらのスレッドの一つを同プロセッサへディスパッチす
る(2204)。(条件に該当するスレッドが複数の場合には
前回当該プロセッサへディスパッチしたスレッドをへデ
ィスパッチするのが望ましい。) これらのいずれもが「実行可能(READY)」でなければ、
当該プロセッサは、プロセッサ管理テーブルのプロセッ
サ状態変数を「利用可能(idle)」にして、システム中の
いずれかのスレッドが実行可能になるのを待つ(2205)。
【0109】(13)実施例13 次に、本発明の別の実施例を示す。本実施例の全体図は
図1であるが、カーネルデータ構造の詳細が図10に示す
データ構造に置き換わっている。ディスパッチャのアル
ゴリズムは図21のフローチャートである。
【0110】本実施例のカーネルデータ構造(図10)
は、図7のプロセッサグループ指定変数(701〜703)が、
プロセッサ指定変数(1001〜1003)に置き換わった以外は
図7と同一である。本図の各プロセッサ指定変数(1001
〜1003)は、プロセッサIDを格納することによっていず
れかのプロセッサを指定する。
【0111】本実施例のディスパッチャのアルゴリズム
(図21)は、システム中のいずれかのスレッドが実行可能
状態になったとき、システム中のいずれかのプロセッサ
により実行される。
【0112】まず、実行可能なスレッドが属するプロセ
スが指定するプロセッサが利用可能かどうか検査する(2
101)。もし、同プロセッサが利用可能ならば、同プロセ
ッサへディスパッチする(2102)。
【0113】もし、同プロセッサが利用可能でないなら
ば、同プロセッサと同一グループ内のいずれかのプロセ
ッサが利用可能かどうか調査する(2103)。(調査の方法
は、実施例5を参照のこと。) もし、同一グループ内のいずれかのプロセッサが利用可
能ならば、それらの一つにディスパッチする(2104)。
(利用可能なプロセッサが複数あり、それらのうち前回
ディスパッチしたプロセッサがあれば、同プロセッサへ
ディスパッチするのが望ましい。) もし、いずれのプロセッサも利用可能でないならば、シ
ステム中のいずれかのプロセッサが利用可能になるのを
待つ(2105)。
【0114】(14)実施例14 次に、本発明の別の実施例を示す。本実施例の全体図お
よびカーネルデータ構造の詳細は、図1と図10であり、
実施例13と同一である。ただし、ディスパッチャのアル
ゴリズムは図22のフローチャートである。
【0115】本実施例のディスパッチャのアルゴリズム
(図22)は、システム中のいずれかのプロセッサが利用可
能になったとき、同プロセッサにより実行される。
【0116】まず、利用可能になったプロセッサを指定
するプロセス内に実行可能なスレッドが存在するかどう
か検査する(2201)。(検査方法は実施例7と同様。) これらスレッドのいずれかが実行可能(READY)であれ
ば、それらのスレッドの一つを同プロセッサへディスパ
ッチする(2202)。(条件に該当するスレッドが複数の場
合には前回当該プロセッサへディスパッチしたスレッド
をへディスパッチするのが望ましい。) これらのいずれもが実行可能でなければ、当該利用可能
なプロセッサと同一グループに属するプロセッサを含む
プロセッサグループを指定するプロセス内の実行可能な
スレッドが存在するか検査する。
【0117】いずれかが実行可能(READY)であれば、そ
れらのスレッドの一つを同プロセッサへディスパッチす
る(2204)。(条件に該当するスレッドが複数の場合には
前回当該プロセッサへディスパッチしたスレッドをへデ
ィスパッチするのが望ましい。) これらのいずれもが「実行可能(READY)」でなければ、
当該プロセッサは、プロセッサ管理テーブルのプロセッ
サ状態変数を「利用可能(idle)」にして、システム中の
いずれかのスレッドが実行可能になるのを待つ(2205)。
【0118】
【発明の効果】本発明によれば、スレッドのプロセッサ
アフィニティが失敗した場合でも、グループアフィニテ
ィを使用することにより、キャッシュを共有しないプロ
セッサ間でのスレッドの移動頻度が削減され、これによ
りキャッシュを有効に使用する(ヒット率を向上させ
る)ことができる。
【0119】さらに、本発明によれば、スレッドあるい
はプロセス毎にプロセッサグループを指定することが出
来るため、例えば、データ・ワーキングセットが一致
し、かつ、並列度の高い(複数のプロセッサにより実行
した場合、並列に処理される可能性の高い)複数のスレ
ッドを、キャッシュを共有する複数のプロセッサへアフ
ィニティ付け、あるいは、動作が異なり関連性の無いプ
ロセスを互いに異なるプロセッサグループにアフィニテ
ィ付けすることが出来る。具体的には、例えば、データ
ベース・システムのように、システムに共通なテーブル
を頻繁にアクセスするプロセス・スレッド群と、ディス
クI/Oを専門に担当するデーモンプロセスを、システム
中の適当なプロセッサへアフィニティ付けすることによ
り、キャッシュを有効に使用することができる。
【図面の簡単な説明】
【図1】本発明による計算機システムの全体図
【図2】従来の計算機システム(共有キャッシュなし)
の全体図
【図3】従来の計算機システム(共有キャッシュあり)
の全体図
【図4】本発明による計算機システムの実施例1,2のカ
ーネルデータ構造
【図5】本発明による計算機システムの実施例1,2の別
のカーネルデータ構造
【図6】本発明による計算機システムの実施例3,5,6の
カーネルデータ構造
【図7】本発明による計算機システムの実施例4,7,8の
カーネルデータ構造
【図8】本発明による計算機システムの実施例9,10のカ
ーネルデータ構造
【図9】本発明による計算機システムの実施例11,12の
カーネルデータ構造
【図10】本発明による計算機システムの実施例13,14
のカーネルデータ構造
【図11】従来の計算機システムのカーネルデータ構造
【図12】本発明による計算機システムの実施例1のデ
ィスパッチャのアルゴリズム
【図13】本発明による計算機システムの実施例2のデ
ィスパッチャのアルゴリズム
【図14】本発明による計算機システムの実施例3のデ
ィスパッチャのアルゴリズム
【図15】本発明による計算機システムの実施例4のデ
ィスパッチャのアルゴリズム
【図16】本発明による計算機システムの実施例5,7の
ディスパッチャのアルゴリズム
【図17】本発明による計算機システムの実施例6のデ
ィスパッチャのアルゴリズム
【図18】本発明による計算機システムの実施例8のデ
ィスパッチャのアルゴリズム
【図19】本発明による計算機システムの実施例9のデ
ィスパッチャのアルゴリズム
【図20】本発明による計算機システムの実施例10のデ
ィスパッチャのアルゴリズム
【図21】本発明による計算機システムの実施例11,13
のディスパッチャのアルゴリズム
【図22】本発明による計算機システムの実施例12,14
のディスパッチャのアルゴリズム
【符号の説明】
101,102,103,104…プロセッサ、111,112,113,114…プラ
イベートキャッシュ、121,122…共有キャッシュ、131…
共有メモリ、141…カーネルプログラム、142…ディスパ
ッチャ、143…カーネルデータ構造、144,145…プロセッ
サグループ管理テーブル、146…プロセス管理テーブ
ル、151,152,153,154…プロセッサ管理テーブル、161,1
62,163,164…プロセッサ状態変数、171,172,173,174…
アフィニティ管理ポインタ、181〜188…スレッド構造
体、401〜408…スレッド実行状態変数、601〜603…プロ
セス構造体、611〜618…スレッド構造体、621〜628…ス
レッド実行状態変数、631〜638…プロセッサグループ指
定変数、701〜703…プロセッサグループ指定変数、801
〜803…スレッドグループ管理構造体、811〜813…プロ
セッサグループ指定変数、821〜823…スレッドグループ
管理ポインタ、831〜838…スレッドグループリンクポイ
ンタ、931〜938…プロセッサ指定変数、1001〜1003…プ
ロセッサグループ指定変数。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 梅野 英典 神奈川県海老名市下今泉810番地 株式会 社日立製作所オフィスシステム事業部内

Claims (27)

    【特許請求の範囲】
  1. 【請求項1】複数のプロセッサと複数のキャッシュメモ
    リで構成され、各々のキャッシュメモリは概プロセッサ
    のなかの複数の特定のプロセッサのみが使用するデータ
    をキャッシングするために使用される構成となっている
    マルチプロセッサシステムであって、ディスパッチャ
    が、システム中のプロセスに含まれる実行可能なスレッ
    ドを概プロセッサ群の利用可能なプロセッサに割り付け
    るディスパッチ方法において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理する手段と、ス
    レッドが前回ディスパッチされた際にどのプロセッサに
    割り付けられたかを記憶する手段を持ち、概スレッドが
    実行可能となった際に、概スレッドを前回割り付けたプ
    ロセッサが利用可能でなかった場合には、前回割り付け
    られたプロセッサが属するグループの中の利用可能なプ
    ロセッサに概スレッドを割り付けることを特徴とするデ
    ィスパッチ方法。
  2. 【請求項2】複数のプロセッサと複数のキャッシュメモ
    リで構成され、各々のキャッシュメモリは概プロセッサ
    のなかの複数の特定のプロセッサのみが使用するデータ
    をキャッシングするために使用される構成となっている
    マルチプロセッサシステムであって、ディスパッチャ
    が、システム中のプロセスに含まれる実行可能なスレッ
    ドを概プロセッサ群の利用可能なプロセッサに割り付け
    るディスパッチ方法において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理する手段と、ス
    レッドが前回ディスパッチされた際にどのプロセッサに
    割り付けられたかを記憶する手段を持ち、プロセッサが
    利用可能でかつ概プロセッサが前回ディスパッチしたス
    レッドの中で実行可能なものがない場合には、概プロセ
    ッサが属する概グループ内のプロセッサが前回ディスパ
    ッチしたスレッドの中の実行可能なものをディスパッチ
    することを特徴とするディスパッチ方法。
  3. 【請求項3】複数のプロセッサと複数のキャッシュメモ
    リで構成され、各々のキャッシュメモリは概プロセッサ
    のなかの複数の特定のプロセッサのみが使用するデータ
    をキャッシングするために使用される構成となっている
    マルチプロセッサシステムであって、ディスパッチャ
    が、システム中のプロセスに含まれる実行可能なスレッ
    ドを概プロセッサ群の利用可能なプロセッサに割り付け
    るディスパッチ方法において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理する手段を備
    え、スレッド毎に特定のプロセッサグループを指定する
    手段を備え、当該スレッドを前記指定のグループ内のプ
    ロセッサへのみディスパッチすることを特徴とするディ
    スパッチ方式。
  4. 【請求項4】複数のプロセッサと複数のキャッシュメモ
    リで構成され、各々のキャッシュメモリは概プロセッサ
    のなかの複数の特定のプロセッサのみが使用するデータ
    をキャッシングするために使用される構成となっている
    マルチプロセッサシステムであって、ディスパッチャ
    が、システム中のプロセスに含まれる実行可能なスレッ
    ドを概プロセッサ群の利用可能なプロセッサに割り付け
    るディスパッチ方法において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理する手段を備
    え、プロセス毎に特定のプロセッサグループを指定する
    手段を備え、当該プロセスに含まれるスレッドを前記指
    定のグループ内のプロセッサへのみディスパッチするこ
    とを特徴とするディスパッチ方式。
  5. 【請求項5】複数のプロセッサと複数のキャッシュメモ
    リで構成され、各々のキャッシュメモリは概プロセッサ
    のなかの複数の特定のプロセッサのみが使用するデータ
    をキャッシングするために使用される構成となっている
    マルチプロセッサシステムであって、ディスパッチャ
    が、システム中のプロセスに含まれる実行可能なスレッ
    ドを概プロセッサ群の利用可能なプロセッサに割り付け
    るディスパッチ方法において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理する手段を備
    え、スレッド毎に特定のプロセッサグループを指定する
    手段を備え、システム中のいずれかのスレッドが実行可
    能となったとき、前記指定グループ内のプロセッサと前
    記指定グループ外のプロセッサが利用可能であった場
    合、前記指定グループ内のプロセッサへ当該スレッドを
    ディスパッチすることを特徴とするディスパッチ方式。
  6. 【請求項6】複数のプロセッサと複数のキャッシュメモ
    リで構成され、各々のキャッシュメモリは概プロセッサ
    のなかの複数の特定のプロセッサのみが使用するデータ
    をキャッシングするために使用される構成となっている
    マルチプロセッサシステムであって、ディスパッチャ
    が、システム中のプロセスに含まれる実行可能なスレッ
    ドを概プロセッサ群の利用可能なプロセッサに割り付け
    るディスパッチ方法において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理する手段を備
    え、スレッド毎に特定のプロセッサグループを指定する
    手段を備え、システム中のいずれかのプロセッサが利用
    可能になったとき、当該プロセッサグループを指定する
    スレッドと、当該プロセッサグループを指定しないスレ
    ッドが実行可能であった場合、当該プロセッサグループ
    を指定するスレッドをディスパッチすることを特徴とす
    るディスパッチ方式。
  7. 【請求項7】複数のプロセッサと複数のキャッシュメモ
    リで構成され、各々のキャッシュメモリは概プロセッサ
    のなかの複数の特定のプロセッサのみが使用するデータ
    をキャッシングするために使用される構成となっている
    マルチプロセッサシステムであって、ディスパッチャ
    が、システム中のプロセスに含まれる実行可能なスレッ
    ドを概プロセッサ群の利用可能なプロセッサに割り付け
    るディスパッチ方法において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理する手段を備
    え、プロセス毎に特定のプロセッサグループを指定する
    手段を備え、システム中のいずれかのスレッドが実行可
    能となったとき、前記指定グループ内のプロセッサと前
    記指定グループ外のプロセッサが利用可能であった場
    合、前記指定グループ内のプロセッサへ当該スレッドを
    ディスパッチすることを特徴とするディスパッチ方式。
  8. 【請求項8】複数のプロセッサと複数のキャッシュメモ
    リで構成され、各々のキャッシュメモリは概プロセッサ
    のなかの複数の特定のプロセッサのみが使用するデータ
    をキャッシングするために使用される構成となっている
    マルチプロセッサシステムであって、ディスパッチャ
    が、システム中のプロセスに含まれる実行可能なスレッ
    ドを概プロセッサ群の利用可能なプロセッサに割り付け
    るディスパッチ方法において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理する手段を備
    え、プロセス毎に特定のプロセッサグループを指定する
    手段を備え、システム中のいずれかのプロセッサが利用
    可能になったとき、当該プロセッサが属するプロセッサ
    グループを指定するプロセスに含まれるスレッドと、同
    プロセッサグループを指定しないプロセスに含まれるス
    レッドが実行可能であった場合、同プロセッサグループ
    を指定するプロセスに含まれるスレッドをディスパッチ
    することを特徴とするディスパッチ方式。
  9. 【請求項9】複数のプロセッサと複数のキャッシュメモ
    リで構成され、各々のキャッシュメモリは概プロセッサ
    のなかの複数の特定のプロセッサのみが使用するデータ
    をキャッシングするために使用される構成となっている
    マルチプロセッサシステムであって、ディスパッチャ
    が、システム中のプロセスに含まれる実行可能なスレッ
    ドを概プロセッサ群の利用可能なプロセッサに割り付け
    るディスパッチ方法において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理するプロセッサ
    グループ管理手段と、システム中に存在するスレッドを
    グルーピングして管理するスレッドグループ管理手段を
    備え、スレッドグループ毎に特定のプロセッサグループ
    を指定する手段を備え、いづれかのスレッドが実行可能
    となったとき、当該スレッドの属するスレッドグループ
    が指定するプロセッサグループ内のプロセッサと同プロ
    セッサグループ外のプロセッサが利用可能であった場
    合、同プロセッサグループ内のプロセッサへ当該スレッ
    ドをディスパッチすることを特徴とするディスパッチ方
    式。
  10. 【請求項10】複数のプロセッサと複数のキャッシュメ
    モリで構成され、各々のキャッシュメモリは概プロセッ
    サのなかの複数の特定のプロセッサのみが使用するデー
    タをキャッシングするために使用される構成となってい
    るマルチプロセッサシステムであって、ディスパッチャ
    が、システム中のプロセスに含まれる実行可能なスレッ
    ドを概プロセッサ群の利用可能なプロセッサに割り付け
    るディスパッチ方法において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理するプロセッサ
    グループ管理手段と、システム中に存在するスレッドを
    グルーピングして管理するスレッドグループ管理手段を
    備え、スレッドグループ毎に特定のプロセッサグループ
    を指定する手段を備え、いずれかのプロセッサが利用可
    能となったとき、当該プロセッサを指定するスレッドグ
    ループ内のスレッドと、当該プロセッサを指定しないス
    レッドグループ内のスレッドが実行可能であった場合、
    当該プロセッサを指定するスレッドグループ内のスレッ
    ドをディスパッチすることを特徴とするディスパッチ方
    式。
  11. 【請求項11】複数のプロセッサと複数のキャッシュメ
    モリで構成され、各々のキャッシュメモリは概プロセッ
    サのなかの複数の特定のプロセッサのみが使用するデー
    タをキャッシングするために使用される構成となってい
    るマルチプロセッサシステムであって、ディスパッチャ
    が、システム中のプロセスに含まれる実行可能なスレッ
    ドを概プロセッサ群の利用可能なプロセッサに割り付け
    るディスパッチ方法において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理するプロセッサ
    グループ管理手段と、スレッド毎に特定のプロセッサを
    指定する手段を備え、システム中のいずれかのスレッド
    が実行可能となった際に、同スレッドが指定するプロセ
    ッサが利用可能でなかった場合には、同プロセッサが属
    するグループ内の利用可能なプロセッサへ概スレッドを
    割り付けることを特徴とするディスパッチ方式。
  12. 【請求項12】複数のプロセッサと複数のキャッシュメ
    モリで構成され、各々のキャッシュメモリは概プロセッ
    サのなかの複数の特定のプロセッサのみが使用するデー
    タをキャッシングするために使用される構成となってい
    るマルチプロセッサシステムであって、ディスパッチャ
    が、システム中のプロセスに含まれる実行可能なスレッ
    ドを概プロセッサ群の利用可能なプロセッサに割り付け
    るディスパッチ方法において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理するプロセッサ
    グループ管理手段と、スレッド毎に特定のプロセッサを
    指定する手段を備え、システム中のいずれかのプロセッ
    サが利用可能となった際に、同プロセッサを指定するス
    レッドの中で実行可能なものがない場合、同プロセッサ
    が属するプロセッサグループの他のプロセッサを指定す
    るスレッドの中で実行可能なものを割り付けることを特
    徴とするディスパッチ方式。
  13. 【請求項13】複数のプロセッサと複数のキャッシュメ
    モリで構成され、各々のキャッシュメモリは概プロセッ
    サのなかの複数の特定のプロセッサのみが使用するデー
    タをキャッシングするために使用される構成となってい
    るマルチプロセッサシステムであって、ディスパッチャ
    が、システム中のプロセスに含まれる実行可能なスレッ
    ドを概プロセッサ群の利用可能なプロセッサに割り付け
    るディスパッチ方法において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理するプロセッサ
    グループ管理手段と、プロセス毎に特定のプロセッサを
    指定する手段を備え、システム中のいずれかのスレッド
    が実行可能となった際に、当該スレッドの属するプロセ
    スが指定するプロセッサが利用可能でなかった場合に
    は、同プロセッサが属するグループ内の利用可能なプロ
    セッサへ概スレッドを割り付けることを特徴とするディ
    スパッチ方式。
  14. 【請求項14】複数のプロセッサと複数のキャッシュメ
    モリで構成され、各々のキャッシュメモリは概プロセッ
    サのなかの複数の特定のプロセッサのみが使用するデー
    タをキャッシングするために使用される構成となってい
    るマルチプロセッサシステムであって、ディスパッチャ
    が、システム中のプロセスに含まれる実行可能なスレッ
    ドを概プロセッサ群の利用可能なプロセッサに割り付け
    るディスパッチ方法において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理するプロセッサ
    グループ管理手段と、プロセス毎に特定のプロセッサを
    指定する手段を備え、システム中のいずれかのプロセッ
    サが利用可能となった際に、同プロセッサを指定するプ
    ロセス内のスレッドの中で実行可能なものがない場合、
    同プロセッサが属するプロセッサグループの他のプロセ
    ッサを指定するプロセス内のスレッドの中で実行可能な
    ものを割り付けることを特徴とするディスパッチ方式。
  15. 【請求項15】複数のプロセッサと複数のキャッシュメ
    モリで構成され、各々のキャッシュメモリは概プロセッ
    サのなかの複数の特定のプロセッサのみが使用するデー
    タをキャッシングするために使用される構成となってい
    るマルチプロセッサシステムであって、ディスパッチャ
    が、システム中の実行可能なプロセスを概プロセッサ群
    の利用可能なプロセッサに割り付けるディスパッチ方法
    において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理する手段と、プ
    ロセスが前回ディスパッチされた際にどのプロセッサに
    割り付けられたかを記憶する手段を持ち、概プロセスが
    実行可能となった際に、概プロセスを前回割り付けたプ
    ロセッサが利用可能でなかった場合には、前回割り付け
    られたプロセッサが属するグループの中の利用可能なプ
    ロセッサに概プロセスを割り付けることを特徴とするデ
    ィスパッチ方法。
  16. 【請求項16】複数のプロセッサと複数のキャッシュメ
    モリで構成され、各々のキャッシュメモリは概プロセッ
    サのなかの複数の特定のプロセッサのみが使用するデー
    タをキャッシングするために使用される構成となってい
    るマルチプロセッサシステムであって、ディスパッチャ
    が、システム中の実行可能なプロセスを概プロセッサ群
    の利用可能なプロセッサに割り付けるディスパッチ方法
    において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理する手段と、プ
    ロセスが前回ディスパッチされた際にどのプロセッサに
    割り付けられたかを記憶する手段を持ち、プロセッサが
    利用可能でかつ概プロセッサが前回ディスパッチしたプ
    ロセスの中で実行可能なものがない場合には、概プロセ
    ッサが属する概グループ内のプロセッサが前回ディスパ
    ッチしたプロセスの中の実行可能なものをディスパッチ
    することを特徴とするディスパッチ方法。
  17. 【請求項17】複数のプロセッサと複数のキャッシュメ
    モリで構成され、各々のキャッシュメモリは概プロセッ
    サのなかの複数の特定のプロセッサのみが使用するデー
    タをキャッシングするために使用される構成となってい
    るマルチプロセッサシステムであって、ディスパッチャ
    が、システム中の実行可能なプロセスを概プロセッサ群
    の利用可能なプロセッサに割り付けるディスパッチ方法
    において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理する手段を備
    え、プロセス毎に特定のプロセッサグループを指定する
    手段を備え、当該プロセスを前記指定のグループ内のプ
    ロセッサへのみディスパッチすることを特徴とするディ
    スパッチ方式。
  18. 【請求項18】複数のプロセッサと複数のキャッシュメ
    モリで構成され、各々のキャッシュメモリは概プロセッ
    サのなかの複数の特定のプロセッサのみが使用するデー
    タをキャッシングするために使用される構成となってい
    るマルチプロセッサシステムであって、ディスパッチャ
    が、システム中の実行可能なプロセスを概プロセッサ群
    の利用可能なプロセッサに割り付けるディスパッチ方法
    において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理する手段を備
    え、プロセス毎に特定のプロセッサグループを指定する
    手段を備え、システム中のいずれかのプロセスが実行可
    能となったとき、前記指定グループ内のプロセッサと前
    記指定グループ外のプロセッサが利用可能であった場
    合、前記指定グループ内のプロセッサへ当該プロセスを
    ディスパッチすることを特徴とするディスパッチ方式。
  19. 【請求項19】複数のプロセッサと複数のキャッシュメ
    モリで構成され、各々のキャッシュメモリは概プロセッ
    サのなかの複数の特定のプロセッサのみが使用するデー
    タをキャッシングするために使用される構成となってい
    るマルチプロセッサシステムであって、ディスパッチャ
    が、システム中の実行可能なプロセスを概プロセッサ群
    の利用可能なプロセッサに割り付けるディスパッチ方法
    において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理する手段を備
    え、プロセス毎に特定のプロセッサグループを指定する
    手段を備え、システム中のいずれかのプロセッサが利用
    可能になったとき、当該プロセッサグループを指定する
    プロセスと、当該プロセッサグループを指定しないプロ
    セスが実行可能であった場合、当該プロセッサグループ
    を指定するプロセスをディスパッチすることを特徴とす
    るディスパッチ方式。
  20. 【請求項20】複数のプロセッサと複数のキャッシュメ
    モリで構成され、各々のキャッシュメモリは概プロセッ
    サのなかの複数の特定のプロセッサのみが使用するデー
    タをキャッシングするために使用される構成となってい
    るマルチプロセッサシステムであって、ディスパッチャ
    が、システム中の実行可能なプロセスを概プロセッサ群
    の利用可能なプロセッサに割り付けるディスパッチ方法
    において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理するプロセッサ
    グループ管理手段と、システム中に存在するプロセスを
    グルーピングして管理するプロセスグループ管理手段を
    備え、プロセスグループ毎に特定のプロセッサグループ
    を指定する手段を備え、いづれかのプロセスが実行可能
    となったとき、当該プロセスの属するプロセスグループ
    が指定するプロセッサグループ内のプロセッサと同プロ
    セッサグループ外のプロセッサが利用可能であった場
    合、同プロセッサグループ内のプロセッサへ当該プロセ
    スをディスパッチすることを特徴とするディスパッチ方
    式。
  21. 【請求項21】複数のプロセッサと複数のキャッシュメ
    モリで構成され、各々のキャッシュメモリは概プロセッ
    サのなかの複数の特定のプロセッサのみが使用するデー
    タをキャッシングするために使用される構成となってい
    るマルチプロセッサシステムであって、ディスパッチャ
    が、システム中の実行可能なプロセスを概プロセッサ群
    の利用可能なプロセッサに割り付けるディスパッチ方法
    において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理するプロセッサ
    グループ管理手段と、システム中に存在するプロセスを
    グルーピングして管理するプロセスグループ管理手段を
    備え、プロセスグループ毎に特定のプロセッサグループ
    を指定する手段を備え、いずれかのプロセッサが利用可
    能となったとき、当該プロセッサが属するプロセッサグ
    ループを指定するプロセスグループ内のプロセスと、同
    プロセッサグループを指定しないプロセスグループ内の
    プロセスが実行可能であった場合、同プロセッサグルー
    プを指定するプロセスグループ内のプロセスをディスパ
    ッチすることを特徴とするディスパッチ方式。
  22. 【請求項22】複数のプロセッサと複数のキャッシュメ
    モリで構成され、各々のキャッシュメモリは概プロセッ
    サのなかの複数の特定のプロセッサのみが使用するデー
    タをキャッシングするために使用される構成となってい
    るマルチプロセッサシステムであって、ディスパッチャ
    が、システム中の実行可能なプロセスを概プロセッサ群
    の利用可能なプロセッサに割り付けるディスパッチ方法
    において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理するプロセッサ
    グループ管理手段と、プロセス毎に特定のプロセッサを
    指定する手段を備え、システム中のいずれかのプロセス
    が実行可能となった際に、同プロセスが指定するプロセ
    ッサが利用可能でなかった場合には、同プロセッサが属
    するグループ内の利用可能なプロセッサへ概プロセスを
    割り付けることを特徴とするディスパッチ方式。
  23. 【請求項23】複数のプロセッサと複数のキャッシュメ
    モリで構成され、各々のキャッシュメモリは概プロセッ
    サのなかの複数の特定のプロセッサのみが使用するデー
    タをキャッシングするために使用される構成となってい
    るマルチプロセッサシステムであって、ディスパッチャ
    が、システム中の実行可能なプロセスを概プロセッサ群
    の利用可能なプロセッサに割り付けるディスパッチ方法
    において、 前記プロセッサ群の中で同一のキャッシュメモリを使用
    するプロセッサをグルーピングして管理するプロセッサ
    グループ管理手段と、プロセス毎に特定のプロセッサを
    指定する手段を備え、システム中のいずれかのプロセッ
    サが利用可能となった際に、同プロセッサを指定するプ
    ロセスの中で実行可能なものがない場合、同プロセッサ
    が属するプロセッサグループの他のプロセッサを指定す
    るプロセスの中で実行可能なものを割り付けることを特
    徴とするディスパッチ方式。
  24. 【請求項24】請求項5または7または9または11また
    は13のディスパッチ方式において、当該指定されたプロ
    セッサグループ内に利用可能なプロセッサが複数存在
    し、かつ、同プロセッサのいずれかが前回概スレッドを
    ディスパッチしたプロセッサである場合、当該スレッド
    を当該プロセッサへディスパッチすることを特徴とする
    ディスパッチ方式。
  25. 【請求項25】請求項6または8または10または12また
    は14のディスパッチ方式において、当該プロセッサを指
    定する実行可能なスレッドが複数存在し、かつ、同スレ
    ッドのいずれかが概プロセッサへ前回ディスパッチされ
    たスレッドである場合、当該スレッドを当該プロセッサ
    へディスパッチすることを特徴とするディスパッチ方
    式。
  26. 【請求項26】請求項18または20のディスパッチ方式に
    おいて、当該指定されたプロセッサグループ内に利用可
    能なプロセッサが複数存在し、かつ、同プロセッサのい
    ずれかが前回概プロセスをディスパッチしたプロセッサ
    である場合、当該プロセスを当該プロセッサへディスパ
    ッチすることを特徴とするディスパッチ方式。
  27. 【請求項27】請求項19または21のディスパッチ方式に
    おいて、当該プロセッサを指定する実行可能なスレッド
    が複数存在し、かつ、同プロセスのいずれかが概プロセ
    ッサへ前回ディスパッチされたプロセスである場合、当
    該プロセスを当該プロセッサへディスパッチすることを
    特徴とするディスパッチ方式。
JP10062482A 1998-03-13 1998-03-13 ディスパッチ方式 Pending JPH11259318A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10062482A JPH11259318A (ja) 1998-03-13 1998-03-13 ディスパッチ方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10062482A JPH11259318A (ja) 1998-03-13 1998-03-13 ディスパッチ方式

Publications (1)

Publication Number Publication Date
JPH11259318A true JPH11259318A (ja) 1999-09-24

Family

ID=13201455

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10062482A Pending JPH11259318A (ja) 1998-03-13 1998-03-13 ディスパッチ方式

Country Status (1)

Country Link
JP (1) JPH11259318A (ja)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001222469A (ja) * 1999-11-05 2001-08-17 Emc Corp 変化するサービスレベルを提供するためのキャッシュのセグメント化
JP2002055966A (ja) * 2000-08-04 2002-02-20 Internatl Business Mach Corp <Ibm> マルチプロセッサ・システム、マルチプロセッサ・システムに用いるプロセッサ・モジュール及びマルチプロセッシングでのタスクの割り当て方法
JP2003241980A (ja) * 2002-02-06 2003-08-29 Internatl Business Mach Corp <Ibm> マルチプロセッサ・コンピュータ・システムのためのスレッド・ディスパッチ機構及び方法
JP2004220608A (ja) * 2003-01-16 2004-08-05 Internatl Business Mach Corp <Ibm> スレッド型に基づくコンピュータ・リソースの動的割り付け
WO2007017932A1 (ja) * 2005-08-09 2007-02-15 Fujitsu Limited スケジュール制御プログラム及びスケジュール制御方法
JP2007156824A (ja) * 2005-12-05 2007-06-21 Nec Electronics Corp プロセッサシステム、タスク制御方法
JP2007280397A (ja) * 2006-04-06 2007-10-25 Internatl Business Mach Corp <Ibm> 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム
JP2009020692A (ja) * 2007-07-11 2009-01-29 Toshiba Corp タスク管理装置、タスク管理方法及びタスク管理プログラム
US7574708B2 (en) 2004-03-04 2009-08-11 International Business Machines Corporation Mechanism for enabling the distribution of operating system resources in a multi-node computer system
JP2011521353A (ja) * 2008-05-16 2011-07-21 マイクロソフト コーポレーション スケジューラーにおけるスケジューリングコレクション
JP2011521354A (ja) * 2008-05-16 2011-07-21 マイクロソフト コーポレーション スケジューラにおけるタスクの局所的集合
US8312462B2 (en) 2004-03-04 2012-11-13 International Business Machines Corporation Reducing remote memory accesses to shared data in a multi-nodal computer system
JP2013047950A (ja) * 2011-08-19 2013-03-07 Canon Inc アプリケーションが決定したスケジューリングによる効率的なキャッシュの再利用
JP2017058738A (ja) * 2015-09-14 2017-03-23 富士ゼロックス株式会社 情報処理装置および画像形成装置
JP2018067135A (ja) * 2016-10-19 2018-04-26 日立オートモティブシステムズ株式会社 車両制御装置

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001222469A (ja) * 1999-11-05 2001-08-17 Emc Corp 変化するサービスレベルを提供するためのキャッシュのセグメント化
JP2002055966A (ja) * 2000-08-04 2002-02-20 Internatl Business Mach Corp <Ibm> マルチプロセッサ・システム、マルチプロセッサ・システムに用いるプロセッサ・モジュール及びマルチプロセッシングでのタスクの割り当て方法
US7487504B2 (en) 2002-02-06 2009-02-03 International Business Machines Corporation Thread dispatch for multiprocessor computer systems
JP2003241980A (ja) * 2002-02-06 2003-08-29 Internatl Business Mach Corp <Ibm> マルチプロセッサ・コンピュータ・システムのためのスレッド・ディスパッチ機構及び方法
JP2004220608A (ja) * 2003-01-16 2004-08-05 Internatl Business Mach Corp <Ibm> スレッド型に基づくコンピュータ・リソースの動的割り付け
US7222343B2 (en) 2003-01-16 2007-05-22 International Business Machines Corporation Dynamic allocation of computer resources based on thread type
US8312462B2 (en) 2004-03-04 2012-11-13 International Business Machines Corporation Reducing remote memory accesses to shared data in a multi-nodal computer system
US7574708B2 (en) 2004-03-04 2009-08-11 International Business Machines Corporation Mechanism for enabling the distribution of operating system resources in a multi-node computer system
US8479205B2 (en) 2005-08-09 2013-07-02 Fujitsu Limited Schedule control program and schedule control method
WO2007017932A1 (ja) * 2005-08-09 2007-02-15 Fujitsu Limited スケジュール制御プログラム及びスケジュール制御方法
JPWO2007017932A1 (ja) * 2005-08-09 2009-02-19 富士通株式会社 スケジュール制御プログラム及びスケジュール制御方法
JP4651671B2 (ja) * 2005-08-09 2011-03-16 富士通株式会社 スケジュール制御プログラム及びスケジュール制御方法
KR100942740B1 (ko) 2005-08-09 2010-02-17 후지쯔 가부시끼가이샤 스케줄 제어 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 및 스케줄 제어 방법
JP2007156824A (ja) * 2005-12-05 2007-06-21 Nec Electronics Corp プロセッサシステム、タスク制御方法
JP2007280397A (ja) * 2006-04-06 2007-10-25 Internatl Business Mach Corp <Ibm> 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム
JP2009020692A (ja) * 2007-07-11 2009-01-29 Toshiba Corp タスク管理装置、タスク管理方法及びタスク管理プログラム
JP2011521353A (ja) * 2008-05-16 2011-07-21 マイクロソフト コーポレーション スケジューラーにおけるスケジューリングコレクション
JP2011521354A (ja) * 2008-05-16 2011-07-21 マイクロソフト コーポレーション スケジューラにおけるタスクの局所的集合
US8561072B2 (en) 2008-05-16 2013-10-15 Microsoft Corporation Scheduling collections in a scheduler
US8566830B2 (en) 2008-05-16 2013-10-22 Microsoft Corporation Local collections of tasks in a scheduler
JP2013047950A (ja) * 2011-08-19 2013-03-07 Canon Inc アプリケーションが決定したスケジューリングによる効率的なキャッシュの再利用
JP2017058738A (ja) * 2015-09-14 2017-03-23 富士ゼロックス株式会社 情報処理装置および画像形成装置
JP2018067135A (ja) * 2016-10-19 2018-04-26 日立オートモティブシステムズ株式会社 車両制御装置
WO2018074187A1 (ja) * 2016-10-19 2018-04-26 日立オートモティブシステムズ株式会社 車両制御装置

Similar Documents

Publication Publication Date Title
Daley et al. Virtual memory, processes, and sharing in Multics
US7137116B2 (en) Method and system for performing a task on a computer
JP2866241B2 (ja) コンピュータシステムおよびスケジューリング方法
US9250979B2 (en) Asynchronous grace-period primitives for user-space applications
US20050022173A1 (en) Method and system for allocation of special purpose computing resources in a multiprocessor system
JP3155537B2 (ja) 実記憶管理方法
JPH11259318A (ja) ディスパッチ方式
US7398376B2 (en) Instructions for ordering execution in pipelined processes
US6973650B1 (en) Method of pipelined processing of program data
JPH02188833A (ja) アプリケーションとデータベース管理システム間の相互通信システム及び方法
US5671405A (en) Apparatus and method for adaptive logical partitioning of workfile disks for multiple concurrent mergesorts
Paul et al. Revisiting hash join on graphics processors: A decade later
Chen et al. Benchmarking Harp-DAAL: High performance hadoop on KNL clusters
JP2000047887A (ja) 投機的マルチスレッド処理方法および投機的マルチスレッド処理装置
US20120174108A1 (en) Intelligent pre-started job affinity for non-uniform memory access computer system
CN108845969B (zh) 适用于不完全对称多处理微控制器的操作控制方法及操作系统
Wen et al. Runtime support for portable distributed data structures
Liao et al. A structure-aware storage optimization for out-of-core concurrent graph processing
Oancea et al. A new approach to parallelising tracing algorithms
JP2002163121A (ja) 仮想マルチスレッドプロセッサ及びスレッド実行方法
CN114880104A (zh) 便于OpenCL工作组乱序执行的方法、系统及存储介质
Hippold et al. Task pool teams for implementing irregular algorithms on clusters of SMPs
CN111949687B (zh) 基于共享内存和多进程的分布式数据库架构及其实现方法
Hurson et al. Cache memories for dataflow systems
Zhou et al. Thread scheduling for out-of-core applications with memory server on multicomputers