JPH07302246A - スケジューリング方式 - Google Patents

スケジューリング方式

Info

Publication number
JPH07302246A
JPH07302246A JP6095146A JP9514694A JPH07302246A JP H07302246 A JPH07302246 A JP H07302246A JP 6095146 A JP6095146 A JP 6095146A JP 9514694 A JP9514694 A JP 9514694A JP H07302246 A JPH07302246 A JP H07302246A
Authority
JP
Japan
Prior art keywords
threads
thread
executable
processor
queue
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
JP6095146A
Other languages
English (en)
Inventor
Keisuke Yasui
啓介 安井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP6095146A priority Critical patent/JPH07302246A/ja
Publication of JPH07302246A publication Critical patent/JPH07302246A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【目的】スレッドをディスパッチする場合に、スレッド
が属しているプロセスと実行するプロセッサを考慮する
ことによってキャッシュを有効利用する。 【構成】プロセス中に複数スレッドを定義可能なOSに
より動作する、各プロセッサがキャッシュを有するマル
チプロセッサコンピュータシステムにおいて、実行可能
スレッドのキューに繋がれた実行可能スレッドの数を認
識する実行可能スレッド認識手段62と、実行可能スレ
ッド認識手段62によって認識された実行可能スレッド
のうち、ディスパッチ対象のスレッドと同じプロセスに
属しているプロセスを認識する所属プロセス認識手段6
3と、所属プロセス認識手段63によって認識されたス
レッドが複数で、かつ実行可能スレッドのキューに繋が
れたスレッドの数が特定の値(N個)より多い場合に、
複数のスレッドをまとめて(M個)プロセッサにディス
パッチするディスパッチ手段66とを具備して構成す
る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、マルチスレッド構造の
オペレーティングシステムにおけるスケジューリング方
式に関する。
【0002】
【従来の技術】現在、多くのマルチプロセッサコンピュ
ータシステムでは、各プロセッサがキャッシュを持つこ
とでメモリへのアクセス回数を減らし処理速度を向上さ
せている。
【0003】ところで、最近では1つのプロセス中に複
数のスレッドを定義することが可能なマルチスレッド構
造のオペレーティングシステムが一般的になってきてい
る。このオペレーティングシステムの長所は、同一プロ
セス中のスレッドが同じアドレス空間を共有することが
できるため、プロセッサで実行するスレッドをスイッチ
する際にアドレス空間をスイッチする必要がなくなり、
キャッシュやTLB(table look-up buffer:アドレス
変換バッファ)を有効に利用できる点にある。
【0004】ところで、あるプロセッサにより処理され
ているスレッドが、プリエンプトやブロックなどによっ
て切替えられる時、オペレーティングシステムのプロセ
ス管理機能であるスケジューラは、実行可能スレッドの
キューの中から一番プライオリティの高いスレッドをプ
ロセッサにディスパッチする。
【0005】ここでもし、実行可能スレッドのキューの
中に、同一プロセスに属する複数のスレッドがある場
合、それらのスレッドが同じプロセッサに割り当てられ
る確率はプロセッサの数が増えるのに伴い低くなる。
【0006】プロセッサにスレッドが割り当てられた
際、先に同一プロセス中のスレッドが同一プロセッサに
割り当てられていると、そのプロセッサのキャッシュの
中に共有データが残っている可能性が高い。この場合、
スレッドを実行する際に、共有データを他のプロセッサ
のキャッシュや共有メモリからキャッシュに持ってくる
必要がない。こうした場合には、処理時間が短縮され、
またバスのトランザクションが低減される等、効率的で
ある。
【0007】一方、同一プロセス中のスレッドが別々の
プロセッサに割り当てられた場合には、共有データをそ
れぞれのプロセッサでキャッシュに取り込まなければな
らないため、同一プロセッサに割り当てられる場合と比
べると非効率的である。
【0008】現在のマルチスレッド構造のオペレーティ
ングシステムでは、プロセッサにスレッドを割り当てる
場合に、スレッドがどのプロセスに属しているかという
ようなことを考慮していない。すなわち、同一プロセス
中のスレッドが同一プロセッサで実行される確率が低い
ため、キャッシュが有効利用されていないということに
なる。
【0009】
【発明が解決しようとする課題】このように従来のマル
チプロセッサコンピュータシステム上で動作する現在の
マルチスレッド構造のオペレーテイングシステムでは、
プロセッサにスレッドを割り当てる場合に、そのスレッ
ドがどのプロセスに属しているかというようなことを考
慮していなかった。このため、同一プロセス中のスレッ
ドが同一プロセッサで実行される確率が低くなってしま
い、各プロセッサでキャッシュへの共有データ読み込み
が発生し、プロセッサに装備されたキャッシュが十分に
有効利用されていないという問題があった。
【0010】本発明は前記のような事情を考慮してなさ
れたもので、スレッドをディスパッチする場合には、そ
のスレッドが属しているプロセスと実行するプロセッサ
を考慮することによってキャッシュを有効利用すること
が可能なスケジューリング方式を提供することを目的と
する。
【0011】
【課題を解決するための手段】本発明は、1つのプロセ
ス中に複数のスレッドを定義することが可能なマルチス
レッド構造のオペレーティングシステムにより動作す
る、プロセッサ毎にキャッシュが設けられたマルチプロ
セッサコンピュータシステムにおいて、実行可能スレッ
ドのキューに繋がれた実行可能スレッドの数を認識する
実行可能スレッド認識手段と、前記実行可能スレッド認
識手段によって認識された実行可能スレッドのうち、最
優先にディスパッチ対象とされるスレッドと同じプロセ
スに属しているスレッドを認識する所属プロセス認識手
段と、前記所属プロセス認識手段によって認識されたス
レッドが複数で、かつ前記実行可能スレッドのキューに
繋がれたスレッドの数が、ある特定の値より多い場合
に、前記所属プロセス認識手段によって認識された複数
のスレッドをまとめて、所定のプロセッサにディスパッ
チするディスパッチ手段とを具備したことを特徴とす
る。
【0012】また、前記ディスパッチ手段によりディス
パッチされる各スレッドが、前回どのプロセッサ上で実
行されたかを認識する前回実行プロセッサ認識手段をさ
らに具備し、前記ディスパッチ手段が前回と同じプロセ
ッサ上にスレッドをディスパッチするように、ディスパ
ッチ時期を調整することを特徴とする。
【0013】
【作用】このような構成によれば、マルチプロセッサコ
ンピュータシステム上で動作する、マルチスレッド構造
のオペレーティングシステムにおいて、スレッドをディ
スパッチする場合には、そのスレッドが属しているプロ
セスを考慮し、複数のスレッドをまとめてディスパッチ
することによって、プロセッサに設けられたキャッシュ
が有効に利用される。
【0014】
【実施例】以下、図面を参照して本発明の一実施例を説
明する。図1は本実施例に係わるマルチプロセッサコン
ピュータシステムの概略構成を示すシステム構成図であ
る。図1に示すように、マルチプロセッサコンピュータ
システムは、複数のCPU31,32,33が設けられ
ている。各CPU31,32,33は、それぞれキャッ
シュ34,35,36を装備している。CPU31,3
2,33は、バス37を介して共有メモリ38と接続さ
れる。
【0015】共有メモリ38は、各CPU31,32,
33が、本発明によるスケジューリング方式を実行する
ためのスケジューラの機能を含むオペレーティングシス
テムを格納している。また、共有メモリ38には、実行
可能なスレッドのキュー(実行可能スレッドキュー3
9)が繋がれて格納され、またスリープキュー40が格
納される。
【0016】図2は本発明によるスケジューリング方式
の機能を実現する構成を示す機能ブロック図である。図
2に示すように、本発明のスケジューラ56は、プロセ
ッサ数認識手段61、実行可能スレッド認識手段62、
スレッド所属プロセス認識手段63、プロセス中スレッ
ド数認識手段64、前回実行プロセッサ認識手段65、
及びディスパッチ手段66の機能が設けられている。
【0017】プロセッサ数認識手段61は、スケジュー
ラ56がスケジューリングを行なう際に、マルチプロセ
ッサコンピュータシステム中に存在するプロセッサの数
(P)を認識するものである。
【0018】実行可能スレッド認識手段62は、現在、
マルチプロセッサコンピュータシステムで同時に実行可
能なスレッドの数(T)を認識するものである。スレッ
ド所属プロセス認識手段63は、実行可能スレッド認識
手段62によって認識された実行可能スレッドキューに
繋がれたスレッドの数(T)が特定の値(N)を越える
ときに、後述するプロセス中スレッド数認識手段64で
認識されたスレッドの数が複数であれば、実行可能スレ
ッドキューの中からプライオリティの最も高いスレッド
と同じプロセスに属するスレッドを認識して実行可能ス
レッドキューからまとめて取り外すものである。
【0019】プロセス中スレッド数認識手段64は、実
行可能スレッド認識手段62によって認識されたスレッ
ド数を認識するものである。前回実行プロセッサ認識手
段65は、実行可能スレッド認識手段62によって認識
されたスレッドが、ディスパッチ手段66により複数の
CPU31,32,33の何れかにディスパッチされる
際に、スレッドを前回実行したプロセッサに再びディス
パッチするようにディスパッチ時期を調整するものであ
る。
【0020】ディスパッチ手段66は、実行可能スレッ
ド認識手段62によって認識され、スレッド所属プロセ
ス認識手段63によって取り外された複数のスレッド
を、前回実行プロセッサ認識手段65の調整に従って、
CPU31,32,33の何れか(前回実行したCP
U)にまとめてディスパッチするものである。
【0021】次に、本実施例のスケジューラ56の動作
について、図3に示すフローチャートを参照しながら説
明する。まず、スケジューラ56は、スケジュール要求
があると、プロセッサ数認識手段11により、マルチプ
ロセッサコンピュータシステム中に存在するプロセッサ
の数(P)を認識する(ステップS1,S2)。
【0022】また同時に、スケジューラ56は、実行可
能スレッド認識手段62により、共有メモリ38の中の
実行可能スレッドキューに繋がれた、現在、実行可能な
スレッドの数(T)を認識する(ステップS3)。
【0023】例えば、ここでは、図4に示すように、シ
ステム中には2つのプロセスP1とP2があり、それぞ
れのプロセスP1,P2に属している複数のスレッド
(プロセスP1にはT11,T12,T13、プロセスP2に
はT21,T22)があるものとして説明する。
【0024】共有メモリ38の中には実行可能状態のス
レッドを繋いでおく実行可能スレッドキュー、スリープ
状態のスレッドを繋いでおくスリープキューがおかれて
いる。各キューには、図1に示すように、異なるプロセ
スに属するスレッドが混在している。
【0025】システムで実行可能なスレッドの数(T)
を認識した結果、マルチプロセッサコンピュータシステ
ムで実行可能なスレッドの数(T)が、ある特定の値
(N)を越えるようならば、スケジューラ56は、実行
可能なスレッドを、複数(M)まとめて実行可能スレッ
ドキューから取り外す。
【0026】すなわち、スケジューラ56は、スレッド
の数(T)がある特定の値(N)より大きければ、最初
にプライオリティ制御に基づき、一番プライオリティの
高いスレッド、すなわち実行可能スレッドキュー17の
先頭に位置するスレッド(T11)を取り外す。
【0027】なお、ある特定の値(N)は、本発明によ
るスケジューリング方式を適用することによって十分に
効果が得られるスレッド数であるかを判別するための基
準値である。すなわち、特定の値(N)よりスレッド数
が少ない場合には、大きな問題とならないため本方式を
用いないこともできるが、特定の値(N)よりスレッド
数が多い場合には、本方式を用いたスケジューリングを
行なうことにより、大きな効果が得られる。
【0028】スケジューラ56は、スレッド所属プロセ
ス認識手段13により、実行可能スレッドキューの中か
らスレッドT11と同じプロセスに所属するスレッド、図
1に示す例ではスレッドT12,T13を認識し、これら同
じプロセスに属するスレッドT11,T12,T13をまとめ
て実行可能スレッドキューからまとめて取り外す(ステ
ップS5,S6)。
【0029】次に、スケジューラ56は、実行可能スレ
ッドキューから取り外したM個(例では3個)のスレッ
ドを、例えばCPU31にディスパッチ(図1中41)
する(ステップS8)。
【0030】この際、スケジューラ56は、スレッドの
前回実行プロセッサ認識手段18によって、できる限り
スレッドが前回実行したプロセッサに再びディスパッチ
されるようにディスパッチ時期を調整する。
【0031】CPU31は、まとめてディスパッチされ
たM個のスレッドを順番に実行していく。この際、ディ
スパッチされたM個のスレッドは、全ての実行が終わる
までキューには戻らず、CPU31に割り当てられたま
まとなる(ステップS9)。この時、キャッシュ34に
は、割り当てられた複数のスレッドで扱われる共有デー
タが1度格納されていれば、各スレッドを実行する毎
に、共有メモリ38や他のCPU32,33のキャッシ
ュ35,36に格納されたデータを読み込む必要がな
い。
【0032】スケジューラ56は、M個のスレッド全て
の実行が終わった所で、M個のスレッドをまとめて実行
可能スレッドキュー、あるいはスリープキューに戻す
(図1中42、ステップS10)。
【0033】このようにして、共有メモリ38中に格納
された実行可能スレッドキューに繋がれた複数のスレッ
ドから、同じプロセスに所属するスレッドをまとめてC
PU31にディスパッチすることにより、各スレッドを
実行する際、キャッシュ34に格納された、複数のスレ
ッドで共有される共有データを利用することができる。
すなわち、キャッシュ34へのデータ読み込みが必要と
なる可能性が低く、処理時間が短縮され、またバス37
のトランザクション量を低減させることができる。
【0034】また、CPU31で実行されたスレッドを
1つづつ戻すのではなく、まとめて戻すことで、同じプ
ロセスに属するスレッドがまとまっているのを再び分散
するのを防ぐことができる。これにより、同じプロセス
に属するスレッドが、1つづつ異なるCPUにスケジュ
ーリングされないようにでき、またコストも低減させる
ことができる。
【0035】また、スレッドをまとめてディスパッチす
る際に、前回と同じCPUにディスパッチするように調
整することで、キャッシュに前回ディスパッチされた際
に格納されたデータが残っている可能性が、不特定のC
PUにディスパッチする場合よりも高いため、各CPU
31,32,33に設けられたキャッシュ34,35,
36を有効に利用することができる。
【0036】
【発明の効果】以上のように本発明によれば、マルチス
レッド構造のオペレーティングシステムにおいて、スレ
ッドをディスパッチする場合には、そのスレッドが属し
ているプロセスと実行するプロセッサを考慮することに
よって、キャッシュを有効利用できるものである。
【図面の簡単な説明】
【図1】本発明の一実施例に係わるマルチプロセッサコ
ンピュータシステムの概略構成を示すシステム構成図。
【図2】本発明によるスケジューリング方式の機能を実
現する構成を示す機能ブロック図。
【図3】本実施例によるスケジューリング方式の動作手
順を説明するためのフローチャート。
【図4】本実施例におけるプロセスの一例を示す図。
【符号の説明】
31,32,33…CPU、34,35,36…キャッ
シュ、37…バス、38…共有メモリ、36…スケジュ
ーラ、61…プロセッサ数認識手段、62…実行可能ス
レッド認識手段、63…スレッド所属プロセス認識手
段、64…プロセス中スレッド数認識手段、65…前回
実行プロセッサ認識手段、66…ディスパッチ手段

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 1つのプロセス中に複数のスレッドを定
    義することが可能なマルチスレッド構造のオペレーティ
    ングシステムにより動作する、プロセッサ毎にキャッシ
    ュが設けられたマルチプロセッサコンピュータシステム
    において、 実行可能スレッドのキューに繋がれた実行可能スレッド
    の数を認識する実行可能スレッド認識手段と、 前記実行可能スレッド認識手段によって認識された実行
    可能スレッドのうち、最優先にディスパッチ対象とされ
    るスレッドと同じプロセスに属しているスレッドを認識
    する所属プロセス認識手段と、 前記所属プロセス認識手段によって認識されたスレッド
    が複数で、かつ前記実行可能スレッドのキューに繋がれ
    たスレッドの数が、ある特定の値より多い場合に、前記
    所属プロセス認識手段によって認識された複数のスレッ
    ドをまとめて、所定のプロセッサにディスパッチするデ
    ィスパッチ手段と、 を具備したことを特徴とするスケジューリング方式。
  2. 【請求項2】 前記ディスパッチ手段によってディスパ
    ッチされた複数のスレッドは、プロセッサでまとめて実
    行された後、まとめて実行可能スレッドのキューに戻さ
    れることを特徴とする請求項1記載のスケジューリング
    方式。
  3. 【請求項3】 前記ディスパッチ手段によりディスパッ
    チされる各スレッドが、前回どのプロセッサ上で実行さ
    れたかを認識する前回実行プロセッサ認識手段をさらに
    具備し、 前記ディスパッチ手段が前回と同じプロセッサ上にスレ
    ッドをディスパッチするように、ディスパッチ時期を調
    整することを特徴とする請求項1記載のスケジューリン
    グ方式。
JP6095146A 1994-05-09 1994-05-09 スケジューリング方式 Pending JPH07302246A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6095146A JPH07302246A (ja) 1994-05-09 1994-05-09 スケジューリング方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6095146A JPH07302246A (ja) 1994-05-09 1994-05-09 スケジューリング方式

Publications (1)

Publication Number Publication Date
JPH07302246A true JPH07302246A (ja) 1995-11-14

Family

ID=14129666

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6095146A Pending JPH07302246A (ja) 1994-05-09 1994-05-09 スケジューリング方式

Country Status (1)

Country Link
JP (1) JPH07302246A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004044745A1 (ja) * 2002-11-13 2004-05-27 Fujitsu Limited マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ
US6751478B1 (en) 2000-01-17 2004-06-15 Fujitsu Limited Mobile-service switch, home memory node, and gateway switch
KR100466726B1 (ko) * 2000-06-20 2005-01-24 인터내셔널 비지네스 머신즈 코포레이션 병렬 처리 방법 및 프로그램 저장 장치
KR100608220B1 (ko) * 2003-06-27 2006-08-08 가부시끼가이샤 도시바 정보처리시스템 및 메모리 관리방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체
US7159216B2 (en) 2001-11-07 2007-01-02 International Business Machines Corporation Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system
KR100732088B1 (ko) * 2005-09-02 2007-06-27 엘지노텔 주식회사 멀티 스레드 환경에서의 호 처리 스케줄링 방법
US7954102B2 (en) 2002-11-13 2011-05-31 Fujitsu Limited Scheduling method in multithreading processor, and multithreading processor
JP2011123494A (ja) * 2009-12-14 2011-06-23 Intel Corp グラフベースのネットワークを横断するための方法及びシステム

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6751478B1 (en) 2000-01-17 2004-06-15 Fujitsu Limited Mobile-service switch, home memory node, and gateway switch
KR100466726B1 (ko) * 2000-06-20 2005-01-24 인터내셔널 비지네스 머신즈 코포레이션 병렬 처리 방법 및 프로그램 저장 장치
US7159216B2 (en) 2001-11-07 2007-01-02 International Business Machines Corporation Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system
US8122451B2 (en) 2001-11-07 2012-02-21 International Business Machines Corporation Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system
WO2004044745A1 (ja) * 2002-11-13 2004-05-27 Fujitsu Limited マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ
US7954102B2 (en) 2002-11-13 2011-05-31 Fujitsu Limited Scheduling method in multithreading processor, and multithreading processor
KR100608220B1 (ko) * 2003-06-27 2006-08-08 가부시끼가이샤 도시바 정보처리시스템 및 메모리 관리방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체
KR100732088B1 (ko) * 2005-09-02 2007-06-27 엘지노텔 주식회사 멀티 스레드 환경에서의 호 처리 스케줄링 방법
JP2011123494A (ja) * 2009-12-14 2011-06-23 Intel Corp グラフベースのネットワークを横断するための方法及びシステム
CN102110437A (zh) * 2009-12-14 2011-06-29 英特尔公司 遍历基于图的网络的方法和系统
US8484154B2 (en) 2009-12-14 2013-07-09 Intel Corporation Methods and systems to traverse graph-based networks
US10229670B2 (en) 2009-12-14 2019-03-12 Intel Corporation Methods and systems to traverse graph-based networks

Similar Documents

Publication Publication Date Title
US6779182B1 (en) Real time thread dispatcher for multiprocessor applications
US7318128B1 (en) Methods and apparatus for selecting processes for execution
US5469571A (en) Operating system architecture using multiple priority light weight kernel task based interrupt handling
US6532509B1 (en) Arbitrating command requests in a parallel multi-threaded processing system
US8132178B2 (en) System and method for delayed priority boost
US20050125793A1 (en) Operating system kernel-assisted, self-balanced, access-protected library framework in a run-to-completion multi-processor environment
US20120260257A1 (en) Scheduling threads in multiprocessor computer
US20040172631A1 (en) Concurrent-multitasking processor
US20030177288A1 (en) Multiprocessor system
EP2187316A1 (en) Gated storage system and synchronization controller and method for multiple multi-threaded processors
EP2131278A1 (en) Scheduling of multiple tasks in a system including multiple computing elements
JP2005517228A (ja) スケジューリングの順序付けられたステージの基準を使用してリクエストをスケジューリングする方法及び装置
US7203823B2 (en) Partial and start-over threads in embedded real-time kernel
US7565659B2 (en) Light weight context switching
CN119248435A (zh) 基于多线程对任务进行处理的方法及系统
JPH07302246A (ja) スケジューリング方式
CN102193828A (zh) 从处理器中的并发物理线程的数目中去耦合逻辑线程的数目
US7711925B2 (en) Information-processing device with transaction processor for executing subset of instruction set where if transaction processor cannot efficiently execute the instruction it is sent to general-purpose processor via interrupt
US7590990B2 (en) Computer system
JPH07160656A (ja) 外部割込み制御方法
CN119248434A (zh) 基于配置队列数据进行任务处理的方法及系统
CN115599508A (zh) Cpu及任务调度方法
CN121077987B (zh) 一种队列切换方法、电子设备及存储介质
JPH0836553A (ja) マルチプロセッサシステムおよび同システムにおけるタスクスケジューリング方法
JPH11249917A (ja) 並列型計算機及びそのバッチ処理方法及び記録媒体