JPH0696039A - スケジューリング装置及び方法 - Google Patents

スケジューリング装置及び方法

Info

Publication number
JPH0696039A
JPH0696039A JP5103721A JP10372193A JPH0696039A JP H0696039 A JPH0696039 A JP H0696039A JP 5103721 A JP5103721 A JP 5103721A JP 10372193 A JP10372193 A JP 10372193A JP H0696039 A JPH0696039 A JP H0696039A
Authority
JP
Japan
Prior art keywords
processor
cache
scheduling
schedulable
processes
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
JP5103721A
Other languages
English (en)
Other versions
JP3444505B2 (ja
Inventor
Jr Donald J Hejna
ドナルド・ジェイ・ヘジナ,ジュニア
Barry P Medoff
バリー・ピイ・メドフ
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH0696039A publication Critical patent/JPH0696039A/ja
Application granted granted Critical
Publication of JP3444505B2 publication Critical patent/JP3444505B2/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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【目的】 複数のプロセッサの間でプロセスをシャッフ
ルすることによる性能低下を防ぐ。 【構成】 本発明においては、プロセステーブルの各エ
ントリに所定の数のビットを追加する。それらのビット
は、1つのプロセス又はプロセスのスレッドなどの特定
のスケジューリング可能単位に関するキャッシュウオー
ム度を指示するために使用される。そこで、スケジュー
ラは、特定の1つのプロセッサに関して次にスケジュー
リングすべきスケジューリング可能単位を確定するため
に、スケジューリング可能単位の優先順位のみならず、
キャッシュのウオーム度をも検討する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、多重プロセスシステム
におけるプロセススケジューリングの効率を改善する方
法及び装置に関する。
【0002】
【従来の技術】時分割コンピュータシステムでは、CP
Uをタイムスライス又はタイムカンタムと呼ばれる所定
の長さの期間にわたり1つのプロセスに割当てる。その
期間の終了時にプロセスを強制排除し、第1の新たなタ
イムスライスの開始時に第2のプロセスが始まるように
スケジューリングする。その後、強制排除されたプロセ
スが後のタイムスライスで実行を継続するように再びス
ケジューリングする。プロセススケジューリング技法
は、複数のプロセスがCPUに対しアクセスする順序を
確定するために採用される。
【0003】プロセススケジューリング技法は複数CP
Uコンピュータシステムにも拡張されている。利用可能
なCPUに従って、プロセスにタイムスライスを割当て
る。実行すべきそれぞれのプロセスを識別するプロセス
テーブルを維持する。1つのプロセスを識別するプロセ
ステーブルの各エントリは、プロセススケジューリング
のための優先順位フィールドを含む。たとえば、プロセ
スの優先順位はそのプロセスのCPU利用の度合の関数
であっても良く、その場合、最近にCPUを使用したプ
ロセスの優先順位は低くなる。プロセススケジューラは
プロセステーブルの情報をアクセスし、どのプロセスに
CPUの利用を割当てるかを制御する。プロセススケジ
ューリングの詳細については、Maurice J.B
ach著The Design of the UNI
X(登録商標)Operating Systemの2
47〜258ページ(Prentice−Hall,I
nc.,1986年刊)及びSilber Schet
z,Peterson,Galvin共著Operat
ing System Conceptsの97〜12
5ページ(Addison−Wesley,1991年
刊)を参照。
【0004】通常、複数CPUシステムでは、スケジュ
ーラはスケジューリングに際して最も高い優先順位を有
するプロセスに次に利用可能なCPUを割当てる。とこ
ろが、多重プロセスシステムが精巧になるにつれて、プ
ロセスをスケジューリングするときに最良の結果を得る
ために他の要因も考慮しなければならない。すなわち、
複数CPUシステムでは、各CPUにキャッシュメモリ
を割当てることになる。現在知られているスケジューリ
ング技法を適用すると、キャッシュメモリの利用度と効
率はいずれも低くなる。このことを図1に関して説明す
る。図1aに示すように、時間T0では、プロセス待ち
行列には5つのプロセスがあり、それらのプロセスA,
B,C,D及びEの実行準備が完了したことを示してい
る。時間T0では実行済のプロセスがないので、プロセ
ッサごとのキャッシュ内容とプロセス文脈は空である。
【0005】図1bを参照すると、時間T1では、第1
のプロセッサであるプロセッサ1に第1のプロセスを割
当てる。従って、プロセッサ1において現在実行中であ
るプロセス文脈はプロセスAであり、キャッシュの内容
はプロセスAに関連するデータを含む。図1cに移る
と、時間T2では、プロセッサ2で実行するために次に
高い優先順位をもつプロセスを割当てる。従って、プロ
セッサ2のプロセス文脈はプロセスBであり、キャッシ
ュの内容はプロセスBに関連するデータを含む。図1d
に示すように、時間T3では、文脈切替えを実行し、そ
こで、プロセスAはCPUからスワップアウトされ、プ
ロセッサ1により実行するために最高の優先順位のプロ
セスであるプロセスCがスワップインする。従って、プ
ロセッサ1の文脈はプロセスCである。プロセスCの一
部を実行した後、キャッシュの内容はプロセスCに関連
するデータと、先にキャッシュに記憶されていた、プロ
セスAに関連するデータとを含むことになる。図1eを
参照すると、時間T4では、プロセッサ2で文脈切替え
を実行し、そこで、プロセスBがスワップアウトし、次
に実行すべきプロセスであるプロセスDがスワップイン
する。従って、プロセッサ2はプロセスDを実行してお
り、プロセッサ2と関連するキャッシュメモリのキャッ
シュ内容はプロセスBに関連するデータと、プロセスD
に関連するデータとを混合したものである。そのパター
ンを続けてゆくと、プロセスEはプロセッサ1でスケジ
ューリングされ、プロセッサ2が次に実行するためにラ
ン待ち行列からプロセスAを取上げることは明白であ
る。これにより、現在のスケジューリングアルゴリズム
を複数CPUシステムに拡張した場合の重大な欠陥が明
かになる。すなわち、現在のスケジューリングアルゴリ
ズムは、複数のプロセッサの間でプロセスをシャッフル
するときの性能の低下という欠点を考慮していない。こ
の欠陥は新たなプロセッサにおけるキャッシュの「コー
ルドスタート」によって生じるものであるが、当該プロ
セスと関連するデータを既にキャッシュに記憶している
CPUでそのプロセスをスケジューリングすることによ
り、その欠陥を回避できるであろう。スケジューリング
アルゴリズムにおけるこの欠陥を考慮するようなスケジ
ューリングの方法は性能を大きく向上させると考えられ
る。以下の説明の中では、キャッシュが1つの特定のプ
ロセスの実行に際して要求されるデータをほとんど又は
全く記憶しておらず、そのキャッシュへのアクセスがミ
スに終わるとき、説明の便宜上、キャッシュはそのプロ
セスに対してコールドであるという。また、キャッシュ
が特定のプロセスを実行するために必要なデータを記憶
しており、キャッシュへのアクセスがヒットになると
き、キャッシュはそのプロセスに関してウオームである
という。
【0006】図1fを参照すると、時間の経過に従って
それぞれのプロセスを実行してゆくプロセッサの履歴を
確定できるように、プロセッサ割当てのパターンを複数
のプロセッサへ拡張することが可能である。尚、先にプ
ロセッサ0で実行されていたプロセスAはプロセッサ1
で再開され、プロセッサ0において2つのプロセス(C
及びE)が先に実行されてしまうまでプロセッサ0では
実行されないことに注意すべきである。これにより、プ
ロセッサ0のキャッシュにあるプロセスAに属するデー
タの大半はプロセスC及びEに属するデータと確実に置
換えられたことになる。スケジューリング間隔が実行中
のプロセスによってキャッシュの半分を充填するのに要
する時間とほぼ等しい場合、CPUで1つ又は2つ以上
の介在プロセスがランしているときには、各プロセスは
いくら良くても半分充填したキャッシュから実行するこ
とがわかる。再スケジューリングの実行が互いに位相ず
れとなるように、再スケジューリングは1つおきの時間
間隔で起こる。
【0007】
【発明が解決しようとする課題】従って、本発明の目的
は、複数のプロセッサ及び資源の間でプロセスをシャッ
フルすることによる性能低下という欠陥を考慮するスケ
ジューリングアルゴリズムを提供することである。本発
明の目的は、プロセスの優先順位と、特定のプロセスと
関連するキャッシュのキャッシュウオーム度とに従って
プロセスをスケジューリングするシステムを提供するこ
とである。
【0008】
【課題を解決するための手段】本発明では、プロセステ
ーブルの各エントリに所定の数のビットを追加する。そ
れらのビットは、特定の1つのプロセス又はプロセスの
スレッドなどのスケジューリング可能な単位に関するキ
ャッシュなどのプロセッサの資源のウオーム度を指示す
るために使用される。そこで、特定のプロセッサに関し
て次にスケジューリングすべきスケジューリング可能単
位を確定するために、スケジューラはスケジューリング
可能単位の優先順位のみならず、キャッシュのウオーム
度をも検討する。たとえば、特定のプロセッサと関連す
るキャッシュに記憶されているデータ(たとえば、プロ
セス命令及びプロセスデータ)を利用するために、スケ
ジューラがスケジューリング可能単位をプロセッサでラ
ンすべくスケジューリングするのみであるように先にそ
のスケジューリング可能が実行されたプロセッサを識別
するために、それらのキャッシュウオーム度ビットを使
用しても良い。キャッシュウオーム度と、プロセス及び
プロセスのスレッドなどのスケジューリング可能単位の
スケジューリングとを確定するさらに精巧なモデルを構
成するために、システムを拡張しても良い。本発明の目
的、特徴及び利点は以下の詳細な説明から明白になるで
あろう。
【0009】
【実施例】図2は、本発明のプロセスを実現するシステ
ムを示す。複数のプロセスは複数のプロセッサ10,2
0により実行される。それぞれのプロセッサ10,20
には関連するキャッシュ30,40がある。スケジュー
ラ50は、利用可能なプロセッサにどのプロセスを割当
てるべきかを確定する。図3のプロセステーブル60
は、プロセスのシステムレベル文脈と、仮想アドレスメ
モリ管理情報と、本発明に従えば、プロセスが実行され
たプロセッサに関連するキャッシュのウオーム度を示す
状態ビットとを含む各活動プロセスに関するデータを含
んでいる。優先順位情報と、キャッシュウオーム度とを
使用すると、スケジューリング待ち行列70を利用し
て、実行すべきプロセスの順序を識別できるであろう。
キャッシュウオーム度を指示するために要求されるビッ
トの数は、望ましい情報の範囲によって決まる。たとえ
ば、一実施例では、いくつかのビットを使用して、プロ
セスが最前に実行されたプロセッサのプロセッサ番号を
識別する。これは、同様に、プロセスに関連するデータ
を記憶しているキャッシュ又はプロセスに関連するデー
タを記憶している確率が最も高いキャッシュも指示す
る。より効率の良いスケジューリングアルゴリズムを得
るために、キャッシュミスの回数又はウオーム度カウン
トなどの別の情報をさらに表わしても良い。
【0010】図4aは、本発明の一実施例を示す。図4
aを参照して説明すると、先にプロセッサ1でプロセス
Aが実行されていた場合、キャッシュウオーム度ビット
はプロセッサ1を示す値1を表わすであろう。同様に、
プロセッサ2で先にプロセスBが実行されていた場合に
は、プロセスBがプロセッサ2により実行されたことを
2進値10により表わす。そこで、プロセッサ3により
プロセスCが実行された場合、プロセッサ3と関連する
キャッシュのキャッシュウオーム度を値11により表わ
すであろう。従って、キャッシュミスの回数を最小にす
ると共に、既にプロセッサ1のキャッシュに記憶されて
いるプロセスAに関連するデータ −先にプロセスAが
プロセッサ1により実行されていた以前のタイムスライ
スの間にはキャッシュに記憶されていた− の利用度を
最大にするために、スケジューラはプロセッサ1にプロ
セスAをスケジューリングする。
【0011】図4bは、本発明の別の実施例を示す。こ
の場合、キャッシュウオーム度ビットはプロセスを実行
したプロセッサのみならず、特定のプロセッサによりプ
ロセスが実行されたタイムスライスに先立つタイムスラ
イスの数をも識別する。そこで、たとえば、タイムスラ
イス1でプロセスAがプロセッサ1により実行され、タ
イムスライス2でプロセスBがプロセッサ2により実行
され、タイムスライス3でプロセスCがプロセッサ3に
より実行され、タイムスライス4でプロセスDがプロセ
ッサ1により実行された場合、タイムスライス4の終わ
りの時点における状態ビットは図4bに示すような状態
を呈するであろう。詳細にいえば、プロセスDは右側の
2進値00により指示する現在スライスで、左側の2進
値01により指示するプロセッサ1により実行されたこ
とになる。同様に、プロセスAと関連する状態ビット
は、プロセスAが先にプロセッサ1(2進値01により
指示されている)により、先の3つのタイムスライス期
間(2進値11により指示されている)にわたり実行さ
れたことを示す。プロセステーブルに入っているプロセ
スAに関するキャッシュウオーム度状態ビットにより指
示するように、プロセスAは先にプロセッサ1で実行さ
れており、最も長い期間(右側の2進値により指示され
ている)にわたってプロセッサ1が利用可能となるのを
待っていたので、スケジューラはこの情報を利用して、
プロセスAを次のタイムスライスでプロセッサ1にスケ
ジューリングできるであろう。同様に、スケジューラは
この情報を利用して、プロセッサによってプロセスが実
行された時点が近いほど、そのプロセスをより頻繁にス
ケジューリングし、最も使用されないプロセスを所定の
数のタイムスライスが経過した後に始めてスケジューリ
ングすることにより、CPUの利用度とキャッシュウオ
ーム度を最大にできるであろう。そのようなスケジュー
リング方式によれば、実行間隔の間の最大待ち時間が長
くなるので、タイムスライス持続時間を延長することに
も同様の効果を及ぼすと考えられる。
【0012】キャッシュウオーム度ビットは、ある所定
のプロセスについて発生したキャッシュミスの回数を指
示する、スケジューラにより使用されるべき値を示すこ
ともできる。この値はスケジューリング動作を実行する
ために使用されれば良い。たとえば、所定のプロセスに
ついてキャッシュミスの回数が少ないほど、キャッシュ
がそのプロセスに関連するデータを記憶している確率は
高い。従って、キャッシュがプロセス関連データを記憶
している間は、そのプロセスに高い優先順位を与え、実
行時に(プロセス関連データがその時点でキャッシュに
入っていないために)キャッシュミスを招き、その結
果、キャッシュを更新するために長い時間を要するメモ
リ動作を必要とするような他のプロセスには低い優先順
位を与えると、より効率が良くなるであろう。
【0013】さらに、スケジューラは負荷平均化を実行
するためにキャッシュウオーム度情報を利用しても良
い。すなわち、スケジューラは最大のCPU利用度を要
求するプロセスを単一のプロセッサにスケジューリング
し、入出力に集中しているが、CPUには集中しないプ
ロセスを他のプロセッサにグループ分けしても良い。こ
の情報は、たとえば、再スケジューリングが発生したと
きにプロセスが入出力部で強制排除されたか又は閉塞さ
れたかに関するプロセステーブル中の情報と、経過した
タイムスライスと、プロセッサが1つのプロセスに割当
てられた回数とから抽出できる。
【0014】たとえば、プロセスA及びBがプロセッサ
0で実行中であり、プロセスAはCPUに集中しており
(CPU利用度は70%)、プロセスBはCPUに集中
しないが、I/Oに集中している(たとえば、キーボー
ドプログラム、CPU利用度は30%)場合には、プロ
セスBはCPUの時間をほとんど要求しないので、プロ
セスAはプロセッサ0に対するアクセスをより頻繁に許
可される。プロセスCがプロセッサ2に割当てられ、こ
のプロセスCも同様にCPU集中ではなく、I/Oに集
中している(たとえば、CPU利用度は20%)場合に
は、スケジューラはプロセステーブルのキャッシュウオ
ーム度ビットと、CPU利用情報(たとえば、プロセス
が実行されていた時間の量)から、プロセッサ2の利用
が少ないことを判定することができ、そこで、プロセス
Aが単独でプロセッサ1をアクセスできるようにプロセ
スBをプロセッサ2に割当てるとより効率が良くなるで
あろう。
【0015】負荷の大きい多重処理環境において時折生
じる問題は資源のスラッシングである。キャッシュのス
ラッシングは、次のプロセスがプロセッサでランする前
に実行中のプロセスがそのプロセッサのキャッシュの大
部分と置換わったときに起こる。そのプロセッサにスケ
ジューリングされている次のプロセスは多数のキャッシ
ュミスを招き、また、そのプロセス特定データがプロセ
ッサのキャッシュのエントリの大部分と置換わる。その
後に続いて第1のプロセスを同じプロセッサに、従っ
て、同じキャッシュに再びスケジューリングすると、多
数のキャッシュミスが起こり、再び、キャッシュエント
リは第1のプロセスに関連するデータと置換わる。タイ
ムスライス間隔は一定であり、キャッシュミスの結果、
CPUはメモリからのデータを無駄に待機しなければな
らないので、キャッシュスラッシングが起こったときに
はCPUの利用は著しく減少してしまう。従って、スケ
ジューラはプロセスをスケジューリングする場合にスラ
ッシングの問題を考慮に入れるのが好ましい。詳細にい
えば、キャッシュウオーム度ビットを使用してスラッシ
ングの有無を検出しても良い。たとえば、スケジューリ
ングされたプロセスに関わるキャッシュウオーム度を、
スラッシングを示すキャッシュウオーム度閾値と比較す
る。2つの連続するプロセスがその閾値を越えたなら
ば、スラッシングが存在すると考える。スラッシングが
検出されたときには、キャッシュスラッシングの有害な
効果を一部排除するために、プロセスのスケジューリン
グを変更することができる。1例を挙げると、スラッシ
ングを検出した場合、1つのプロセスがある所定のプロ
セッサで実行される持続時間を、再スケジューリング動
作を1つおきの時間間隔で起こるように制限することに
より延長できる。(たとえば、図6のコードを参照。)
【0016】好ましい実施例では、アクセスしやすいよ
うにキャッシュウオーム度ビットをプロセステーブルに
記憶するのであるが、スケジューリングの効率に関する
情報は核の別の領域及びMMUなどのハードウェア、あ
るいは核メモリの別個の一部分又は指定の一部分を取入
れていても良い。たとえば、プロセスごとのキャッシュ
ウオーム度に関する情報はプロセス記述ブロック、すな
わち、プロセステーブルに記憶されても良い。さらに、
その代わりに、共用資源がプロセス特定データを維持す
る仮想メモリシステム又は他の型のシステムにおいて起
こるページ障害を追跡するためにキャッシュウオーム度
の概念を拡張することが可能である。
【0017】キャッシュウオーム度ビットを利用して、
プロセスの優先順位と、特定の1つのプロセスをスケジ
ューリングするときにCPU利用度に関して受けると思
われる影響を判定する論理を含むように、スケジューラ
はわずかに変形されている。この論理はハードウェア又
はソフトウェアで実現されれば良く、あるいは、ハード
ウェアとソフトウェアの組合せにより実現されても良
い。たとえば、ハードウェアの場合、比較器を使用し
て、最前にプロセスを実行したプロセッサのIDを識別
する状態ビットを次にスケジューリングのために利用で
きるプロセッサのプロセッサIDと比較する。IDが一
致しなければ、プロセスはそのプロセッサにはスケジュ
ーリングされず、IDが一致するプロセッサにスケジュ
ーリングされるのを待機する。図6は、スケジューリン
グを効率良く実行し且つ次にどのプロセスをランさせる
べきかを決定するためにキャッシュウオーム度を使用す
るスケジューラコードの1例である。このスケジューラ
は、また、スラッシングが起こっているか否かも判定
し、起こっているならば、CPUの利用を多くするため
に同一のプロセスを続けて2度スケジューリングする。
そのようにしないと、スラッシング発生中にCPUの利
用度は低下してしまうであろう。
【0018】比較器論理の単純な実施例を図5に示す。
キャッシュ500はアドレスタグ510と、データ52
0,525,530,535とを記憶している。CPU
のアドレスから生成したタグ情報をキャッシュのタグと
比較し、それらが等しければ、キャッシュヒットとな
り、キャッシュのデータをマルチプレクサ570,57
5を介して抽出する。タグが等しくない場合には、キャ
ッシュミスが起こり、キャッシュウオーム度を決定する
ミスを追跡しているカウンタ560が増分され、メモリ
(図示せず)から読取ったデータによってキャッシュを
更新する。この論理は、カウンタ560を追加キャッシ
ュとして追跡することにより、カウンタ560を読取る
ための単純な手段をも構成する。カウンタをアドレス指
定するために所定のアドレスを使用する。所定のアドレ
スをキャッシュに供給すると、キャッシュはカウンタの
値を供給する。
【0019】プロセスがそれ自身のデータを置換えてい
るとき、この置換えはキャッシュウオーム度の状態の変
化を示すものではないので、キャッシュウオーム度を追
跡するメカニズム、たとえば、カウンタ560(図5)
はミスを記録せず、従って、キャッシュウオーム度値を
増分しないのが好ましい。そこで、別の実施例では、置
換えるべきキャッシュの行のプロセス文脈を現在実行中
のプロセスの文脈と比較する。それらの文脈が同一のプ
ロセスと関連している(たとえば、文脈が等しい)場
合、カウンタを増分しない。ところが、文脈が異なる場
合には、キャッシュに入ろうとしているメモリの行はキ
ャッシュのウオーム度を変化させる。1つのセグメント
と関連するカウンタを確定したならば、置換えられつつ
ある行の1つのスケジューリング文脈プロセスと、現在
実行中のスケジューリング文脈(たとえば、プロセス実
行)プロセスとを比較する方法を先に概要を示したよう
に採用すれば良い。
【0020】特定の1つのCPUで実行中のプロセスが
そのCPUと関連する資源(キャッシュなど)を変更す
る程度をモデル化する能力は、その資源を追跡するカウ
ンタの実現形態により限定される。カウンタはプロセス
を最も精密な細分のレベル、すなわち、スケジューリン
グアルゴリズムが操作する最小の単位で区別することが
できるのが理想的であろう。たとえば、多重スレッデッ
ドプロセスを実行する複数プロセッサシステムは、カウ
ンタを増分するか否かを判定するために、カウンタは現
在実行スレッドの知識と、キャッシュにおいて置換え中
の行の実行のスレッドに関する情報とを使用するであろ
う。この方式では、キャッシュタグは追加情報として、
実行のスレッド又は行が属しているスレッドのグループ
を指定する一意のIDを含んでいなければならない。
【0021】キャッシュカラリングの技法を利用するた
めに、キャッシュ及びスケジューリングアルゴリズムを
変更することができる。カラリングとは、キャッシュを
複数の領域に区分し、仮想アドレスの所定数のビットを
使用して、1つのプロセスアドレスがマッピングするキ
ャッシュ領域を選択するハッシュ値を生成するというこ
とである。カラリングは様々に異なるプロセスをキャッ
シュの様々に異なるセグメントに限定し、それにより、
様々に異なるプロセスから同一の行へのいくつかのアド
レスのエイリアシングを減少させる。キャッシュカラリ
ングを使用する実施例では、1つのキャッシュセグメン
トにあるキャッシュウオーム度値を追加するために、複
数の別個のカウンタを維持する。ハッシュ値を生成する
ために使用されるビットは、プロセス間でカウンタをも
区別する。1つのセグメントと関連するカウンタを識別
したならば、先に述べたように、置換え中の行と現在実
行中のプロセスの文脈を比較する方法を採用すれば良
い。キャッシュカラリングはキャッシュ内の全データを
破壊する単一のプロセスの影響を、そのアドレスをキャ
ッシュの1つのセグメントのみにマッピングするように
制限することにより最小限に抑える。従って、単一のプ
ロセスはキャッシュ全体ではなく、そのプロセスがマッ
ピングするキャッシュの1領域にのみ影響を及ぼす。
【0022】別の実施例においては、現在プロセスに関
わるウオーム度値を更新するのみならず、同じプロセッ
サで先に実行された他の全てのプロセスに関わるウオー
ム度値をも更新する。これにより、キャッシュウオーム
度の測定の正確さは向上する。この方式は次のように動
作する。プロセスがランした後、現在プロセスのキャッ
シュウオーム度を発生したキャッシュミスの回数と等し
い増分だけ更新する。同じプロセッサでランした他の残
る全てのプロセスに関わるキャッシュウオーム度値は、
それぞれ対応する現在キャッシュウオーム度値に比例す
る量だけ減分される。このことを次の例により示す。
【0023】 T1 T2 T3 A 50 - (70*50/100)= 15 - (90*15/100)= 90 B 10 - (70*10/100)= 3 - (90* 3/100)= 0 C 20 - (70*20/100)= 6 - (90* 6/100)= 1 D 20 - (70*20/100)= 6 - (90* 6/100)= 1 E 70 - (90870/100)= 7 - - - - - - - - 100 100 100
【0024】時間T1では、プロセスA,B,C,Dは
それぞれ50,10,20,20のキャッシュウオーム
度値を有するので、合計キャッシュウオーム度値は10
0となり、プロセスEは現在実行中である。時間T2に
なると、プロセスE(新たなプロセス)はランし終わっ
ているので、キャッシュウオーム度値70を有し、実行
のために新たなプロセスが選択される。キャッシュウオ
ーム度値は、式:新たなキャッシュウオーム度=旧キャ
ッシュウオーム度−(旧キャッシュウオーム度* 現在プ
ロセスキャッシュウオーム度/総キャッシュウオーム
度)に従って比例調整される。ウオーム度に関するこれ
らの新たな値を使用して、次にランさせるべきプロセス
を選択する。全てのプロセスが等しい優先順位を有する
と仮定すると、時間T2でランすべきであると選択され
るのはプロセスAである。
【0025】同様に、時間T3では、プロセスはランを
終了しており、そのときのキャッシュウオーム度値は9
0である。プロセスB,C,D,Eに関わるキャッシュ
ウオーム度値は、プロセス間に配分されるミスの総数が
先に実行したプロセスに割当てられる増分後のウオーム
度と等しくなるような量だけ比例して減分される。従っ
て、キャッシュの最も大きな割合を占めるプロセスEは
同様に最大の量を失うことになるであろう。計算される
キャッシュウオーム度値はこれを正確に反映する。
【0026】本発明を好ましい実施例に関連して説明し
たが、以上の説明に照らして数多くの代替構成,変更,
変形及び用途が当業者には明白になるであろうというこ
とは明らかである。すなわち、資源の利用効率を最大に
するために、ここで説明した発明を多様な型の資源と共
に利用することができる。さらに、多様な型のプロセッ
サを採用できるであろう。加えて、本発明はプロセスの
みならず、どのようなスケジューリング可能単位のスケ
ジューリングにも適用される。別のスケジューリング可
能単位の例はプロセスのスレッドである。
【0027】従来のUNIXプロセスは単一の制御スレ
ッドを含む。このスレッドは実行中命令のシーケンス
と、最小限の量のプログラムカウンタ(PU)及びスタ
ックフレーム(SF)などの状態変数とから構成されて
いる。全てのプロセスがメモリを共用する複数プロセッ
サシステムは複数の異なるプロセス(それぞれが単一の
制御スレッドを伴なう)を並行して実行することができ
る。各プロセスがそれ独自のメモリスペースにおいてラ
ンし、単一の制御スレッドを含むという点に注意するこ
とは重要である。従って、並行プロセス実行は単一スレ
ッド形プロセスを伴なう複数プロセッサ環境で達成しう
る最も微細な並行度のグレインである。
【0028】多重スレッド形UNIXプロセスはいくつ
かの制御スレッドを含む。1つの多重スレッド形プロセ
スの中の各スレッドはその特定のスレッドにより実行さ
れている命令のシーケンスと、そのスレッドに独自のも
のである一連の状態変数とから構成されている。従っ
て、それぞれのスレッドは独自のPC変数とSF変数を
含むことになる。複数のスレッドを含んでいると、2つ
以上のプロセッサが利用可能であるときに、1つのプロ
セスの中で並行性と並行実行が得られる。全てのプロセ
ッサがメモリを共用する複数プロセッサシステムは複数
の異なるスレッド(1つ又は2つ以上のプロセスに属す
る)を並行して実行することができる。先の場合と同様
に各プロセスは独自のメモリスペースの中でランする
が、ここでは複数の実行スレッドが同一のメモリスペー
スを共用しているので、スレッドごとに独自の状態変数
(中でもPC及びSF)が必要になるという点に注意す
ることは重要である。従って、並行スレッド実行は多重
スレッド形プロセスを伴なう複数プロセッサ環境の中で
達成しうる最も微細な並行度のグレインである。その詳
細については、Powell他の「Sunos Mul
ti−Thread Architecture」(U
SENIX,1991年冬)を参照。
【0029】以上の説明から、唯一つの単一スレッド形
プロセスをランする複数プロセッサシステムは、並行実
行のための手段をもたないために、単一プロセッサシス
テムと同じ量の実行時間を要することが明白になるはず
である。ところが、多重スレッド形プロセスは並行スレ
ッド実行を利用することが可能であるので、いくつかの
プロセッサを利用して、プロセスの実行速度を増す。
【0030】従って、本発明は並行して実行される複数
の実行スレッドを伴なうどのようなシステムにも適用可
能である。それらのスレッドはいくつかの単一スレッド
形プロセスから構成されていても良く、あるいは、1つ
又は2つ以上の多重スレッド形プロセスに属するプロセ
ス又は単一スレッド形プロセスと多重スレッド形プロセ
スの組合せから構成されていても良い。
【図面の簡単な説明】
【図1】従来のスケジューリングのプロセスを示す図。
【図2】本発明のシステムの好ましい実施例を示す図。
【図3】複数のプロセス,複数キャッシュシステムにお
いてスケジューラがプロセスをスケジューリングするた
めに使用するウオーム度ビットを含むプロセステーブル
を示す図。
【図4】複数プロセス,複数キャッシュシステムにおい
てスケジューラがプロセスをスケジューリングするため
に使用するキャッシュウオーム度ビットを含むプロセス
テーブルの実施例を示す図。
【図5】本発明の好ましい一実施例を実現する論理の1
例を示す図。
【図6】効率良くスケジューリングするためにキャッシ
ュウオーム度を利用するスケジューリングコードの1例
を示す図。
【符号の説明】
10,20 プロセッサ 30,40 キャッシュ 50 スケジューラ 60 プロセステーブル 70 スケジューリング待ち行列 500 キャッシュ 510 アドレスタグ 520,525,530,535 データ 560 カウンタ 570,575 マルチプレクサ
フロントページの続き (72)発明者 ドナルド・ジェイ・ヘジナ,ジュニア アメリカ合衆国 94086 カリフォルニア 州・サニーヴェイル・アノ ヌーボ アヴ ェニュ・アパートメント ナンバー308・ 395 (72)発明者 バリー・ピイ・メドフ アメリカ合衆国 94043 カリフォルニア 州・パロ アルト・アルカディア プレイ ス・1431

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 複数のプロセッサと、各プロセッサと関
    連する少なくとも1つの資源とを具備し、各プロセッサ
    は別のスケジューリング可能単位の文脈で実行するよう
    に切替わる前にあるタイムスライスだけ1つのスケジュ
    ーリング可能単位の文脈で実行するようなコンピュータ
    システムにあって、それらのプロセッサで実行すべきス
    ケジューリング可能単位を効率良くスケジューリングす
    る装置において,それぞれのスケジューリング可能単位
    に関する情報を含み、先にスケジューリング可能単位が
    実行されたプロセッサを示す情報を含めた資源のウオー
    ム度を示す情報を含むプロセステーブルと;資源のウオ
    ーム度を示す情報を検査するための手段を具備し、資源
    のウオーム度を参照して、各スケジューリング可能単位
    を1つのプロセッサにスケジューリングするプロセスス
    ケジューラとを具備し,それにより、スケジューリング
    可能単位のスケジューリング及び実行の効率が向上する
    装置。
  2. 【請求項2】 複数のプロセッサと、各プロセッサと関
    連する少なくとも1つのキャッシュメモリとを具備し、
    各プロセッサは別のスケジューリング可能単位の文脈で
    実行するように切替わる前にあるタイムスライスにわた
    り1つのスケジューリング可能単位の文脈で実行するコ
    ンピュータシステムにあって、プロセッサで実行すべき
    スケジューリング可能単位を効率良くスケジューリング
    する装置において,それぞれのスケジューリング可能単
    位に関する情報を含み、先にスケジューリング可能単位
    が実行されたプロセッサを示す情報を含めてキャッシュ
    ウオーム度を示す情報を含むプロセステーブルと;キャ
    ッシュウオーム度を示す情報を検査するための手段を具
    備し、キャッシュウオーム度を参照して、各スケジュー
    リング可能単位を1つのプロセッサにスケジューリング
    するプロセススケジューラとを具備し,それにより、プ
    ロセススケジューリング及びスケジューリング可能単位
    の実行の効率が向上する装置。
  3. 【請求項3】 複数のプロセッサと、各プロセッサと関
    連する少なくとも1つのキャッシュメモリとを具備し、
    各プロセッサは別のスケジューリング可能単位の文脈で
    実行するように切替わる前にあるタイムスライスにわた
    り1つのスケジューリング可能単位の文脈で実行するよ
    うなコンピュータシステムにあって、プロセッサで実行
    すべきスケジューリング可能単位を効率良くスケジュー
    リングする方法において,それぞれのスケジューリング
    可能単位に関する情報を維持する過程と;キャッシュウ
    オーム度に従って1つのスケジューリング可能単位を1
    つのプロセッサにスケジューリングする過程とから成
    り,それにより、スケジューリング可能単位のスケジュ
    ーリング及び実行の効率が向上する方法。
JP10372193A 1992-04-07 1993-04-07 スケジューリング装置及び方法 Expired - Fee Related JP3444505B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/864,681 US5287508A (en) 1992-04-07 1992-04-07 Method and apparatus for efficient scheduling in a multiprocessor system
US864681 2001-05-24

Publications (2)

Publication Number Publication Date
JPH0696039A true JPH0696039A (ja) 1994-04-08
JP3444505B2 JP3444505B2 (ja) 2003-09-08

Family

ID=25343825

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10372193A Expired - Fee Related JP3444505B2 (ja) 1992-04-07 1993-04-07 スケジューリング装置及び方法

Country Status (2)

Country Link
US (1) US5287508A (ja)
JP (1) JP3444505B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010205046A (ja) * 2009-03-04 2010-09-16 Toyota Motor Corp 情報処理装置
JP5505501B2 (ja) * 2010-06-22 2014-05-28 富士通株式会社 マルチコアプロセッサシステム、制御プログラム、および制御方法

Families Citing this family (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2699304B1 (fr) * 1992-12-10 1996-03-15 Nec Corp Procede de repartition de processus.
US5379428A (en) * 1993-02-01 1995-01-03 Belobox Systems, Inc. Hardware process scheduler and processor interrupter for parallel processing computer systems
DE69429204T2 (de) * 1993-03-26 2002-07-25 Cabletron Systems Inc Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk
GB9307359D0 (en) * 1993-04-08 1993-06-02 Int Computers Ltd Cache replacement mechanism
US5557747A (en) * 1993-06-22 1996-09-17 Rogers; Lawrence D. Network policy implementation system for performing network control operations in response to changes in network state
US5555392A (en) * 1993-10-01 1996-09-10 Intel Corporation Method and apparatus for a line based non-blocking data cache
US5845310A (en) * 1993-12-15 1998-12-01 Hewlett-Packard Co. System and methods for performing cache latency diagnostics in scalable parallel processing architectures including calculating CPU idle time and counting number of cache misses
CA2186349C (en) * 1994-05-12 2008-09-23 James C. Bunnell Cpu activity monitoring through cache watching
JP3696901B2 (ja) * 1994-07-19 2005-09-21 キヤノン株式会社 負荷分散方法
JPH096633A (ja) * 1995-06-07 1997-01-10 Internatl Business Mach Corp <Ibm> データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム
US5784614A (en) * 1995-07-27 1998-07-21 Ncr Corporation Cache affinity scheduling method for multi-processor nodes in a split transaction bus architecture
US5860138A (en) * 1995-10-02 1999-01-12 International Business Machines Corporation Processor with compiler-allocated, variable length intermediate storage
JPH09101916A (ja) * 1995-10-06 1997-04-15 Fujitsu Ltd マルチプロセス処理装置
JP2940450B2 (ja) * 1995-10-26 1999-08-25 日本電気株式会社 クラスタ型コンピュータのジョブスケジュール方法及び装置
US5809522A (en) * 1995-12-18 1998-09-15 Advanced Micro Devices, Inc. Microprocessor system with process identification tag entries to reduce cache flushing after a context switch
US5826079A (en) * 1996-07-05 1998-10-20 Ncr Corporation Method for improving the execution efficiency of frequently communicating processes utilizing affinity process scheduling by identifying and assigning the frequently communicating processes to the same processor
US6343309B1 (en) * 1996-09-30 2002-01-29 International Business Machines Corporaton Method and apparatus for parallelizing a graphics pipeline
US5724586A (en) * 1996-09-30 1998-03-03 Nec Research Institute, Inc. Method for improving cache locality of a computer program
US6581104B1 (en) * 1996-10-01 2003-06-17 International Business Machines Corporation Load balancing in a distributed computer enterprise environment
US6069705A (en) * 1996-10-07 2000-05-30 Texas Instruments Incorporated Managing interpreter cofunctions on multiprocessor-based printer
JP3139392B2 (ja) * 1996-10-11 2001-02-26 日本電気株式会社 並列処理システム
US5752261A (en) * 1996-11-07 1998-05-12 Ncr Corporation Method and apparatus for detecting thrashing in a cache memory
US5895487A (en) * 1996-11-13 1999-04-20 International Business Machines Corporation Integrated processing and L2 DRAM cache
US6714960B1 (en) * 1996-11-20 2004-03-30 Silicon Graphics, Inc. Earnings-based time-share scheduling
US6269390B1 (en) * 1996-12-17 2001-07-31 Ncr Corporation Affinity scheduling of data within multi-processor computer systems
US6088788A (en) * 1996-12-27 2000-07-11 International Business Machines Corporation Background completion of instruction and associated fetch request in a multithread processor
US6073159A (en) * 1996-12-31 2000-06-06 Compaq Computer Corporation Thread properties attribute vector based thread selection in multithreading processor
US5974438A (en) * 1996-12-31 1999-10-26 Compaq Computer Corporation Scoreboard for cached multi-thread processes
US6078943A (en) * 1997-02-07 2000-06-20 International Business Machines Corporation Method and apparatus for dynamic interval-based load balancing
US6061774A (en) * 1997-05-23 2000-05-09 Compaq Computer Corporation Limited virtual address aliasing and fast context switching with multi-set virtual cache without backmaps
US6035374A (en) * 1997-06-25 2000-03-07 Sun Microsystems, Inc. Method of executing coded instructions in a multiprocessor having shared execution resources including active, nap, and sleep states in accordance with cache miss latency
US6105051A (en) * 1997-10-23 2000-08-15 International Business Machines Corporation Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6061710A (en) * 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US5999963A (en) * 1997-11-07 1999-12-07 Lucent Technologies, Inc. Move-to-rear list scheduling
US6374367B1 (en) 1997-11-26 2002-04-16 Compaq Computer Corporation Apparatus and method for monitoring a computer system to guide optimization
US6442585B1 (en) 1997-11-26 2002-08-27 Compaq Computer Corporation Method for scheduling contexts based on statistics of memory system interactions in a computer system
US6237073B1 (en) * 1997-11-26 2001-05-22 Compaq Computer Corporation Method for providing virtual memory to physical memory page mapping in a computer operating system that randomly samples state information
US6175814B1 (en) 1997-11-26 2001-01-16 Compaq Computer Corporation Apparatus for determining the instantaneous average number of instructions processed
US6195748B1 (en) 1997-11-26 2001-02-27 Compaq Computer Corporation Apparatus for sampling instruction execution information in a processor pipeline
US6332178B1 (en) 1997-11-26 2001-12-18 Compaq Computer Corporation Method for estimating statistics of properties of memory system transactions
US6163840A (en) * 1997-11-26 2000-12-19 Compaq Computer Corporation Method and apparatus for sampling multiple potentially concurrent instructions in a processor pipeline
US6237059B1 (en) 1997-11-26 2001-05-22 Compaq Computer Corporation Method for estimating statistics of properties of memory system interactions among contexts in a computer system
US6549930B1 (en) 1997-11-26 2003-04-15 Compaq Computer Corporation Method for scheduling threads in a multithreaded processor
US6256775B1 (en) 1997-12-11 2001-07-03 International Business Machines Corporation Facilities for detailed software performance analysis in a multithreaded processor
US6018759A (en) * 1997-12-22 2000-01-25 International Business Machines Corporation Thread switch tuning tool for optimal performance in a computer processor
US6457064B1 (en) * 1998-04-27 2002-09-24 Sun Microsystems, Inc. Method and apparatus for detecting input directed to a thread in a multi-threaded process
US6321375B1 (en) * 1998-05-14 2001-11-20 International Business Machines Corporation Method and apparatus for determining most recently used method
US6243788B1 (en) * 1998-06-17 2001-06-05 International Business Machines Corporation Cache architecture to enable accurate cache sensitivity
US6269425B1 (en) * 1998-08-20 2001-07-31 International Business Machines Corporation Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system
US6587865B1 (en) * 1998-09-21 2003-07-01 International Business Machines Corporation Locally made, globally coordinated resource allocation decisions based on information provided by the second-price auction model
US7424712B1 (en) 1999-04-30 2008-09-09 Sun Microsystems Inc System and method for controlling co-scheduling of processes of parallel program
US6449695B1 (en) * 1999-05-27 2002-09-10 Microsoft Corporation Data cache using plural lists to indicate sequence of data storage
US7518993B1 (en) * 1999-11-19 2009-04-14 The United States Of America As Represented By The Secretary Of The Navy Prioritizing resource utilization in multi-thread computing system
US6829763B1 (en) * 2000-05-16 2004-12-07 Litton Systems, Inc. Partitioned executive structure for real-time programs
US7512951B2 (en) * 2000-07-31 2009-03-31 Infineon Technologies Ag Method and apparatus for time-sliced and multi-threaded data processing in a communication system
US6615316B1 (en) * 2000-11-16 2003-09-02 International Business Machines, Corporation Using hardware counters to estimate cache warmth for process/thread schedulers
US7036123B2 (en) * 2001-04-25 2006-04-25 Sun Microsystems, Inc. System using fair-share scheduling technique to schedule processes within each processor set based on the number of shares assigned to each process group
US7310803B2 (en) * 2001-10-19 2007-12-18 419638 Canada Inc. Method and system for executing multiple tasks in a task set
US7178146B1 (en) * 2002-03-26 2007-02-13 Emc Corporation Pizza scheduler
US7558817B2 (en) * 2002-04-29 2009-07-07 Infineon Technologies Ag Apparatus and method for calculating a result of a modular multiplication
US20040095948A1 (en) * 2002-11-18 2004-05-20 Chang-Ming Lin Data return arbitration
US7089548B2 (en) * 2003-01-13 2006-08-08 Taiwan Semiconductor Manufacturing Company, Ltd. Method and system for nondisruptive deployment during upgrading of enterprise systems
US20050210204A1 (en) * 2003-01-27 2005-09-22 Fujitsu Limited Memory control device, data cache control device, central processing device, storage device control method, data cache control method, and cache control method
US7600229B1 (en) * 2003-09-30 2009-10-06 Emc Corporation Methods and apparatus for load balancing processing of management information
US20050210274A1 (en) * 2004-03-22 2005-09-22 Frantz Gene A Apparatus and method for intellectual property protection using the microprocessor serial number
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US20060075404A1 (en) * 2004-10-06 2006-04-06 Daniela Rosu Method and system for scheduling user-level I/O threads
US20060195845A1 (en) * 2005-02-28 2006-08-31 Rhine Scott A System and method for scheduling executables
EP1914632B1 (en) * 2005-08-09 2012-06-27 Fujitsu Ltd. Schedule control program and schedule control method
US8799581B2 (en) * 2007-01-05 2014-08-05 International Business Machines Corporation Cache coherence monitoring and feedback
US8671248B2 (en) * 2007-01-05 2014-03-11 International Business Machines Corporation Architecture support of memory access coloring
US8006077B2 (en) * 2007-03-29 2011-08-23 Intel Corporation Thread migration control based on prediction of migration overhead
US7930574B2 (en) * 2007-12-31 2011-04-19 Intel Corporation Thread migration to improve power efficiency in a parallel processing environment
US8806491B2 (en) 2007-12-31 2014-08-12 Intel Corporation Thread migration to improve power efficiency in a parallel processing environment
US8108867B2 (en) * 2008-06-24 2012-01-31 Intel Corporation Preserving hardware thread cache affinity via procrastination
DE112009001700B4 (de) * 2008-07-22 2019-02-07 Toyota Jidosha Kabushiki Kaisha Multikernsystem, fahrzeugseitige elektronische Steuerungseinheit und Aufgabenumschaltverfahren
US20100194920A1 (en) * 2009-02-03 2010-08-05 Bowei Gai Behaviorally-based software acceleration for digital camera operations
US9465656B2 (en) * 2009-04-01 2016-10-11 International Business Machines Corporation Scheduler penalty for swapping activity
US9547528B1 (en) 2010-03-29 2017-01-17 EMC IP Holding Company LLC Pizza scheduler
US8443376B2 (en) * 2010-06-01 2013-05-14 Microsoft Corporation Hypervisor scheduler
US8898664B2 (en) * 2010-06-01 2014-11-25 Microsoft Corporation Exposure of virtual cache topology to a guest operating system
AU2011213795A1 (en) 2011-08-19 2013-03-07 Canon Kabushiki Kaisha Efficient cache reuse through application determined scheduling
GB2516083A (en) 2013-07-11 2015-01-14 Ibm Virtual Machine Backup
GB2516087A (en) 2013-07-11 2015-01-14 Ibm Virtual Machine Backup

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4394727A (en) * 1981-05-04 1983-07-19 International Business Machines Corporation Multi-processor task dispatching apparatus
JPH0778785B2 (ja) * 1986-03-29 1995-08-23 株式会社東芝 プロセッサ選択方法
US4816989A (en) * 1987-04-15 1989-03-28 Allied-Signal Inc. Synchronizer for a fault tolerant multiple node processing system
US4985831A (en) * 1988-10-31 1991-01-15 Evans & Sutherland Computer Corp. Multiprocessor task scheduling system
US5185861A (en) * 1991-08-19 1993-02-09 Sequent Computer Systems, Inc. Cache affinity scheduler

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010205046A (ja) * 2009-03-04 2010-09-16 Toyota Motor Corp 情報処理装置
JP5505501B2 (ja) * 2010-06-22 2014-05-28 富士通株式会社 マルチコアプロセッサシステム、制御プログラム、および制御方法
US9052993B2 (en) 2010-06-22 2015-06-09 Fujitsu Limited Multi-core processor system, control program, and control method
US9442851B2 (en) 2010-06-22 2016-09-13 Fujitsu Limited Multi-core processor system, control program, and control method

Also Published As

Publication number Publication date
US5287508A (en) 1994-02-15
JP3444505B2 (ja) 2003-09-08

Similar Documents

Publication Publication Date Title
JP3444505B2 (ja) スケジューリング装置及び方法
US6269391B1 (en) Multi-processor scheduling kernel
EP0747816B1 (en) Method and system for high performance multithread operation in a data processing system
EP1027645B1 (en) Thread switch control in a multithreaded processor system
Anderson et al. The performance implications of thread management alternatives for shared-memory multiprocessors
Kirk SMART (strategic memory allocation for real-time) cache design
JP5413001B2 (ja) キャッシュメモリ
US6938252B2 (en) Hardware-assisted method for scheduling threads using data cache locality
US6018759A (en) Thread switch tuning tool for optimal performance in a computer processor
EP1029269B1 (en) Method and apparatus for selecting thread switch events in a multithreaded processor
US6658447B2 (en) Priority based simultaneous multi-threading
US6728959B1 (en) Method and apparatus for strong affinity multiprocessor scheduling
Vaswani et al. The implications of cache affinity on processor scheduling for multiprogrammed, shared memory multiprocessors
US7191272B2 (en) Adaptive reader-writer lock
US6233599B1 (en) Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers
EP1027650B1 (en) Method and apparatus for altering thread priorities in a multithreaded processor
US7430627B2 (en) Adaptive reader-writer lock
KR20000005675A (ko) 정확한캐시감도를가능하게하는캐시구조
US6587865B1 (en) Locally made, globally coordinated resource allocation decisions based on information provided by the second-price auction model
JP2003030050A (ja) マルチスレッド実行方法及び並列プロセッサシステム
JP2004030574A (ja) 動的にキャッシュ・メモリの割り当てを行うプロセッサ集積回路
JPH05224921A (ja) データ処理システム
US6615316B1 (en) Using hardware counters to estimate cache warmth for process/thread schedulers
US20050283783A1 (en) Method for optimizing pipeline use in a multiprocessing system
EP0058846B1 (en) Multiprocessing system with variably shared paging storage

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees