JP2000148518A - 正確なキャッシュ感応性を可能にするキャッシュ・ア―キテクチャ - Google Patents
正確なキャッシュ感応性を可能にするキャッシュ・ア―キテクチャInfo
- Publication number
- JP2000148518A JP2000148518A JP11141208A JP14120899A JP2000148518A JP 2000148518 A JP2000148518 A JP 2000148518A JP 11141208 A JP11141208 A JP 11141208A JP 14120899 A JP14120899 A JP 14120899A JP 2000148518 A JP2000148518 A JP 2000148518A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- thread
- threads
- affinity
- processors
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5033—Allocation 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】
【課題】 所与のプロセッサおよびそれに関連するキャ
ッシュでの関連スレッドのキャッシュ・フットプリント
を監視し、したがって、オペレーティング・システムが
よりよいキャッシュ感応型スケジューリングを実行でき
るようにする技法を提供すること。 【解決手段】 キャッシュ内のスレッドのフットプリン
トの関数を、そのキャッシュのプロセッサに対するその
スレッドの類縁性の表示として使用することができる。
たとえば、キャッシュ内にすでに存在するキャッシュラ
インの数が多いほど、そのプロセッサにスケジューリン
グされた時にスレッドが経験するキャッシュ・ミスの数
が少なくなり、したがって、そのプロセッサに対するス
レッドの類縁性が高くなる。スレッドの優先順位および
他のシステム定義のパラメータのほかに、スケジューリ
ング・アルゴリズムは、スレッドの実行を特定のプロセ
ッサに割り当てる時に、キャッシュ類縁性を考慮に入れ
ることができる。
ッシュでの関連スレッドのキャッシュ・フットプリント
を監視し、したがって、オペレーティング・システムが
よりよいキャッシュ感応型スケジューリングを実行でき
るようにする技法を提供すること。 【解決手段】 キャッシュ内のスレッドのフットプリン
トの関数を、そのキャッシュのプロセッサに対するその
スレッドの類縁性の表示として使用することができる。
たとえば、キャッシュ内にすでに存在するキャッシュラ
インの数が多いほど、そのプロセッサにスケジューリン
グされた時にスレッドが経験するキャッシュ・ミスの数
が少なくなり、したがって、そのプロセッサに対するス
レッドの類縁性が高くなる。スレッドの優先順位および
他のシステム定義のパラメータのほかに、スケジューリ
ング・アルゴリズムは、スレッドの実行を特定のプロセ
ッサに割り当てる時に、キャッシュ類縁性を考慮に入れ
ることができる。
Description
【0001】
【発明の属する技術分野】本発明は、コンピュータ・シ
ステムのスレッドのスケジューリングに関する。具体的
に言うと、本発明は、キャッシュ感応型スケジューリン
グのために、スレッドのキャッシュ・フットプリントの
追跡を容易にするための方法およびシステムに関する。
ステムのスレッドのスケジューリングに関する。具体的
に言うと、本発明は、キャッシュ感応型スケジューリン
グのために、スレッドのキャッシュ・フットプリントの
追跡を容易にするための方法およびシステムに関する。
【0002】
【従来の技術】現代のコンピュータ・アーキテクチャで
は、CPUの速度が、メモリ・アクセス速度よりはるか
に速いテンポでスケール・アップしつつある。したがっ
て、メモリ待ち時間の影響に対処することがますます重
要になってきた。相対的に長いメモリ・アクセス時間を
緩和するために、コンピュータ・システムでは、図1に
示されているように、マイクロプロセッサ(図ではμ
P)(12aおよび12b)とメモリ(13)の間にま
すます大容量になるキャッシュ(14aおよび14b)
が挿入され、複数レベルのキャッシュ(14a、14
b、15aおよび15b)が使用されることもしばしば
である[1]。それにもかかわらず、メモリ・アクセス
速度の向上に対するCPU速度の向上の不一致が、キャ
ッシュ・ミスの発生時に、CPUサイクルに関するより
大きいキャッシュ再ロード時間をもたらす。命令依存性
分析、投機実行、アウトオブオーダ実行および事前取出
しなど、キャッシュ・ミスを隠蔽するためのさまざまな
技法が既知である[1]。キャッシュ・アクセス時間と
メモリ待ち時間の間の不一致が増加するにつれて、これ
らの技法を使用してキャッシュ・ミスを隠蔽することが
ますます困難になる。その結果、マイクロプロセッサ
は、より多くのストールを経験し、したがって、1つの
命令を実行するのに必要なサイクル数(cpi)の平均値
が増加する。したがって、コンピュータ・システムのcp
iを低く保つために、マイクロプロセッサが被るキャッ
シュ・ミスの数を減らすことが重要である。
は、CPUの速度が、メモリ・アクセス速度よりはるか
に速いテンポでスケール・アップしつつある。したがっ
て、メモリ待ち時間の影響に対処することがますます重
要になってきた。相対的に長いメモリ・アクセス時間を
緩和するために、コンピュータ・システムでは、図1に
示されているように、マイクロプロセッサ(図ではμ
P)(12aおよび12b)とメモリ(13)の間にま
すます大容量になるキャッシュ(14aおよび14b)
が挿入され、複数レベルのキャッシュ(14a、14
b、15aおよび15b)が使用されることもしばしば
である[1]。それにもかかわらず、メモリ・アクセス
速度の向上に対するCPU速度の向上の不一致が、キャ
ッシュ・ミスの発生時に、CPUサイクルに関するより
大きいキャッシュ再ロード時間をもたらす。命令依存性
分析、投機実行、アウトオブオーダ実行および事前取出
しなど、キャッシュ・ミスを隠蔽するためのさまざまな
技法が既知である[1]。キャッシュ・アクセス時間と
メモリ待ち時間の間の不一致が増加するにつれて、これ
らの技法を使用してキャッシュ・ミスを隠蔽することが
ますます困難になる。その結果、マイクロプロセッサ
は、より多くのストールを経験し、したがって、1つの
命令を実行するのに必要なサイクル数(cpi)の平均値
が増加する。したがって、コンピュータ・システムのcp
iを低く保つために、マイクロプロセッサが被るキャッ
シュ・ミスの数を減らすことが重要である。
【0003】キャッシュ・ミスは、通常は限られたキャ
ッシュ資源に起因し、プロセッサ上の活動状態のスレッ
ドの作業セット全体をキャッシュ内に提示できない場合
に発生する。この場合、あるスレッドによってアクセス
されるメモリが他のスレッドのキャッシュ内容を追い出
すので、スレッド間の切替えがキャッシュ・ミスを引き
起こす。この問題を軽減するための明白な方法の1つ
は、実行中のスレッドのタイム・スライスを増やし、し
たがって、その長い期間中にキャッシュが再利用される
確率を高めることである。しかし、タイム・スライスの
増加は、応答時間などの他のシステム・パラメータに関
する悪影響を及ぼし、したがって、これは一般的には選
択されない。
ッシュ資源に起因し、プロセッサ上の活動状態のスレッ
ドの作業セット全体をキャッシュ内に提示できない場合
に発生する。この場合、あるスレッドによってアクセス
されるメモリが他のスレッドのキャッシュ内容を追い出
すので、スレッド間の切替えがキャッシュ・ミスを引き
起こす。この問題を軽減するための明白な方法の1つ
は、実行中のスレッドのタイム・スライスを増やし、し
たがって、その長い期間中にキャッシュが再利用される
確率を高めることである。しかし、タイム・スライスの
増加は、応答時間などの他のシステム・パラメータに関
する悪影響を及ぼし、したがって、これは一般的には選
択されない。
【0004】現在、多数というよりほとんどの近代的サ
ーバ・システムは、キャッシュ・コヒーレント共用メモ
リ型の多重プロセッサ・システム(MP)(11)であ
り、複数のマイクロプロセッサ(12aおよび12b)
が、1つまたは複数のメモリ(13)にリンクされてい
る[1]。これらのシステムでは、スレッドの実行があ
るプロセッサから別のプロセッサに移され、そのスレッ
ドがアクセスするメモリの一部が、まだ前のプロセッサ
のキャッシュにキャッシュ記憶されている時に、キャッ
シュ・ミスが発生する。これらのメモリ位置のアクセス
の際に、キャッシュ・ミスが発生し、新しいプロセッサ
へのキャッシュラインの転送をもたらす。このようなシ
ステムのスケジューラは、スケジューリングされるスレ
ッドの優先順位だけでなく、異なるプロセッサに対する
スレッドの類縁性も考慮することによって、スループッ
トと応答性の両方を改善できる[2、4、5、6]。ス
レッドが、通常は高い類縁性を有するプロセッサにスケ
ジューリングされる場合には、キャッシュ・ミスの総数
が減り、したがって、スループットが高まる。スレッド
が類縁性を有するプロセッサにスレッドをスケジューリ
ングするためのスレッド・スケジューリングのわずかな
遅延は、実際にはスレッドの応答性を高めることができ
る。というのは、スレッドが実際に走行する時に、プロ
セッサがキャッシュ内容を再確立するのに費やす時間が
減るからである。多数の多重プロセッサ・スケジューラ
が、なんらかの形の類縁性に基づくスケジューリングを
試みているが、スケジューラがキャッシュ類縁性を正確
に推定する方法が存在しないので、このスケジューリン
グの有効性は限られている。
ーバ・システムは、キャッシュ・コヒーレント共用メモ
リ型の多重プロセッサ・システム(MP)(11)であ
り、複数のマイクロプロセッサ(12aおよび12b)
が、1つまたは複数のメモリ(13)にリンクされてい
る[1]。これらのシステムでは、スレッドの実行があ
るプロセッサから別のプロセッサに移され、そのスレッ
ドがアクセスするメモリの一部が、まだ前のプロセッサ
のキャッシュにキャッシュ記憶されている時に、キャッ
シュ・ミスが発生する。これらのメモリ位置のアクセス
の際に、キャッシュ・ミスが発生し、新しいプロセッサ
へのキャッシュラインの転送をもたらす。このようなシ
ステムのスケジューラは、スケジューリングされるスレ
ッドの優先順位だけでなく、異なるプロセッサに対する
スレッドの類縁性も考慮することによって、スループッ
トと応答性の両方を改善できる[2、4、5、6]。ス
レッドが、通常は高い類縁性を有するプロセッサにスケ
ジューリングされる場合には、キャッシュ・ミスの総数
が減り、したがって、スループットが高まる。スレッド
が類縁性を有するプロセッサにスレッドをスケジューリ
ングするためのスレッド・スケジューリングのわずかな
遅延は、実際にはスレッドの応答性を高めることができ
る。というのは、スレッドが実際に走行する時に、プロ
セッサがキャッシュ内容を再確立するのに費やす時間が
減るからである。多数の多重プロセッサ・スケジューラ
が、なんらかの形の類縁性に基づくスケジューリングを
試みているが、スケジューラがキャッシュ類縁性を正確
に推定する方法が存在しないので、このスケジューリン
グの有効性は限られている。
【0005】オペレーティング・システムでの最初の試
みであり、多重プロセッサ・システムのための商用オペ
レーティング・システムで最も広範囲に使用されている
のが、「仮想タイム・スタンプ」である。この場合、プ
ロセッサPiでのスレッドTの実行時に、プロセッサご
とのタイム・スタンプがスレッドに割り当てられる。所
与のプロセッサに関して最高のタイム・スタンプを有す
るスレッドに、より高い類縁性値が割り当てられる。こ
の概念に関しては、非常に単純な実装すなわち、スレッ
ドがそのプロセッサで最後に走行した場合に値「1」、
そうでない場合に値「0」という実装が設けられること
がしばしばである。この方法では、スレッドのキャッシ
ュ・フットプリントを考慮に入れていない。この方法で
は、しばしば誤って、あるプロセッサ上で最も最近に走
行したスレッドが、そのプロセッサに対する最も高い類
縁性を有すると仮定される。
みであり、多重プロセッサ・システムのための商用オペ
レーティング・システムで最も広範囲に使用されている
のが、「仮想タイム・スタンプ」である。この場合、プ
ロセッサPiでのスレッドTの実行時に、プロセッサご
とのタイム・スタンプがスレッドに割り当てられる。所
与のプロセッサに関して最高のタイム・スタンプを有す
るスレッドに、より高い類縁性値が割り当てられる。こ
の概念に関しては、非常に単純な実装すなわち、スレッ
ドがそのプロセッサで最後に走行した場合に値「1」、
そうでない場合に値「0」という実装が設けられること
がしばしばである。この方法では、スレッドのキャッシ
ュ・フットプリントを考慮に入れていない。この方法で
は、しばしば誤って、あるプロセッサ上で最も最近に走
行したスレッドが、そのプロセッサに対する最も高い類
縁性を有すると仮定される。
【0006】多数のプロセッサに、セット・インターバ
ル中のキャッシュ・ミスの回数を考慮に入れるための機
構が導入されており、オペレーティング・システムは、
この情報を利用し始めている[3、4、5、6]。「最
少ミス」戦略では、スレッドが最後の走行中にこうむっ
たキャッシュ・ミスの回数をスケジューラが記憶する。
所与のスレッドに関するキャッシュ・ミスの回数が少な
いほど、それに割り当てられたキャッシュの類縁性が高
くなる。より精巧な戦略は、「キャッシュ再ロード遷移
モデル」に基づくものである。再ロード遷移は、スレッ
ドを再始動した後にスレッドのフットプリントを再確立
するコストとして定義される。マルコフ連鎖モデルを使
用して、所与の時刻のスレッドのフットプリントを推定
することができる[3、5、6]。具体的に言うと、マ
ルコフ連鎖では、スレッドの実行中のキャッシュ・ミス
の結果として活動状態のキャッシュラインの数が増える
確率をモデル化する。たとえば、N個のキャッシュライ
ンを有し、現在M個のキャッシュラインを保持するスレ
ッドTが走行するシステムがあると仮定すると、キャッ
シュ・ミスによってTのキャッシュ・フットプリントが
増える(すなわち、Tのキャッシュラインがミスによっ
て置換されない)確率は、(N−M)/Nである。複数
のキャッシュ・ミスに対して同一の論理を適用すること
によって、連鎖を構成する。同様に、同一のモデルを使
用して、スレッドの最後の実行以降のキャッシュ・ミス
の回数に対するスレッドのキャッシュ・フットプリント
の減少を推定することができる。スケジューリングの時
点では、最低の再ロード遷移を有するスレッドを選択す
ることが意味をなす。というのは、そのスレッドが、前
の状態を復元するために最少のキャッシュ・ミスをこう
むると期待されるからである。この戦略では、システム
がマルコフ連鎖的である、すなわち、履歴がないと仮定
されるが、これは、スレッドの振る舞いを正確に反映し
ておらず、キャッシュ・アソシアティビティなどのキャ
ッシュ・ハードウェアの制約を反映してもいない
[1]。さらに、キャッシュ・フットプリントは、スレ
ッドの寿命に対して増分的に推定されるので、このモデ
ルは同期がとれなくなり、劣悪なスケジューリング決定
をもたらす可能性がある。
ル中のキャッシュ・ミスの回数を考慮に入れるための機
構が導入されており、オペレーティング・システムは、
この情報を利用し始めている[3、4、5、6]。「最
少ミス」戦略では、スレッドが最後の走行中にこうむっ
たキャッシュ・ミスの回数をスケジューラが記憶する。
所与のスレッドに関するキャッシュ・ミスの回数が少な
いほど、それに割り当てられたキャッシュの類縁性が高
くなる。より精巧な戦略は、「キャッシュ再ロード遷移
モデル」に基づくものである。再ロード遷移は、スレッ
ドを再始動した後にスレッドのフットプリントを再確立
するコストとして定義される。マルコフ連鎖モデルを使
用して、所与の時刻のスレッドのフットプリントを推定
することができる[3、5、6]。具体的に言うと、マ
ルコフ連鎖では、スレッドの実行中のキャッシュ・ミス
の結果として活動状態のキャッシュラインの数が増える
確率をモデル化する。たとえば、N個のキャッシュライ
ンを有し、現在M個のキャッシュラインを保持するスレ
ッドTが走行するシステムがあると仮定すると、キャッ
シュ・ミスによってTのキャッシュ・フットプリントが
増える(すなわち、Tのキャッシュラインがミスによっ
て置換されない)確率は、(N−M)/Nである。複数
のキャッシュ・ミスに対して同一の論理を適用すること
によって、連鎖を構成する。同様に、同一のモデルを使
用して、スレッドの最後の実行以降のキャッシュ・ミス
の回数に対するスレッドのキャッシュ・フットプリント
の減少を推定することができる。スケジューリングの時
点では、最低の再ロード遷移を有するスレッドを選択す
ることが意味をなす。というのは、そのスレッドが、前
の状態を復元するために最少のキャッシュ・ミスをこう
むると期待されるからである。この戦略では、システム
がマルコフ連鎖的である、すなわち、履歴がないと仮定
されるが、これは、スレッドの振る舞いを正確に反映し
ておらず、キャッシュ・アソシアティビティなどのキャ
ッシュ・ハードウェアの制約を反映してもいない
[1]。さらに、キャッシュ・フットプリントは、スレ
ッドの寿命に対して増分的に推定されるので、このモデ
ルは同期がとれなくなり、劣悪なスケジューリング決定
をもたらす可能性がある。
【0007】上で述べた現在の類縁性(affinity)に基
づくスケジューリング方式の主な障害は、キャッシュ類
縁性機能が、たとえば仮想タイム・スタンプなどの非常
に単純なヒューリスティックに基づくか、たとえばマル
コフ連鎖などの統計モデルなどのキャッシュ・フットプ
リント推定に基づくことである。
づくスケジューリング方式の主な障害は、キャッシュ類
縁性機能が、たとえば仮想タイム・スタンプなどの非常
に単純なヒューリスティックに基づくか、たとえばマル
コフ連鎖などの統計モデルなどのキャッシュ・フットプ
リント推定に基づくことである。
【0008】したがって、正確なキャッシュ・フットプ
リント測定に基づく改良されたキャッシュ類縁性(アフ
ィニティ)に基づくスケジューリングを備えたオペレー
ティング・システムが必要である。
リント測定に基づく改良されたキャッシュ類縁性(アフ
ィニティ)に基づくスケジューリングを備えたオペレー
ティング・システムが必要である。
【0009】参考文献 1.ヘネシー(J. L. Hennessy)およびパターソン(D.
A. Patterson)共著、「Computer Architecture: A Qu
antitative Approach」、Morgan Kaufmann Publishers
刊、ISBN 1-55860-329-8、1996年。 2.バハラ(U. Vahalla)著、「UNIX Internals: The
New Frontier」、Prentice Hall刊、ISBN 0-13-101908-
2、1996年。 3.シーボウ(D. Thiebaut)およびストーン(H. Ston
e)共著、「Footprintsin the Cache」、ACM Transacti
ons on Computer Systems, 5(4)、1987年11月、
第305ないし329ページ。 4.スキランテ(M. Squillante)およびラゾフスカ
(E. Lazowska)共著、「Using Processor Cache Affin
ity in Shared-Memory Multiprocessor Scheduling」、
IEEE Transactions on Parallel and Distributed Syst
ems, 4(2)、1993年2月、第131ないし143ペ
ージ。 5.タッカー(A. Tucker)著、「Efficient Schedulin
g on Multiprogrammed Shared Memory Multiprocessor
s」、Ph.D. Thesis, Department of Computer Science,
Stanford University, CX-TN-94-4、1993年12
月。 6.ベロッサ(F. Belossa)、「Locality-Information
-Based Scheduling in Shared-Memory Multiprocessor
s」、IPPS'96 Workshop on Job Scheduling Strategies
for Parallel Processing, Honolulu, Hawaii、199
6年4月。
A. Patterson)共著、「Computer Architecture: A Qu
antitative Approach」、Morgan Kaufmann Publishers
刊、ISBN 1-55860-329-8、1996年。 2.バハラ(U. Vahalla)著、「UNIX Internals: The
New Frontier」、Prentice Hall刊、ISBN 0-13-101908-
2、1996年。 3.シーボウ(D. Thiebaut)およびストーン(H. Ston
e)共著、「Footprintsin the Cache」、ACM Transacti
ons on Computer Systems, 5(4)、1987年11月、
第305ないし329ページ。 4.スキランテ(M. Squillante)およびラゾフスカ
(E. Lazowska)共著、「Using Processor Cache Affin
ity in Shared-Memory Multiprocessor Scheduling」、
IEEE Transactions on Parallel and Distributed Syst
ems, 4(2)、1993年2月、第131ないし143ペ
ージ。 5.タッカー(A. Tucker)著、「Efficient Schedulin
g on Multiprogrammed Shared Memory Multiprocessor
s」、Ph.D. Thesis, Department of Computer Science,
Stanford University, CX-TN-94-4、1993年12
月。 6.ベロッサ(F. Belossa)、「Locality-Information
-Based Scheduling in Shared-Memory Multiprocessor
s」、IPPS'96 Workshop on Job Scheduling Strategies
for Parallel Processing, Honolulu, Hawaii、199
6年4月。
【0010】
【発明が解決しようとする課題】本発明の目的は、キャ
ッシュ類縁性に基づく改良されたスケジューリングを提
供することである。
ッシュ類縁性に基づく改良されたスケジューリングを提
供することである。
【0011】
【課題を解決するための手段】本発明は、プロセッサの
それぞれについてスレッドのそれぞれのキャッシュ・フ
ットプリントを測定することによって多重プロセッサ・
システムのスレッドをスケジューリングするための方法
および装置を提供する。プロセッサのそれぞれに関する
スレッドのそれぞれの類縁性は、上で判定されたキャッ
シュ・フットプリントを使用して判定される。プロセッ
サのそれぞれでのスレッドのそれぞれの実行は、その類
縁性に従ってスケジューリングされる。本発明のより具
体的な実施例では、キャッシュのそれぞれのスレッドの
それぞれのキャッシュ・フットプリントが、各スレッド
によって特定のキャッシュから取り出される活動状態の
キャッシュラインの数によって測定される。
それぞれについてスレッドのそれぞれのキャッシュ・フ
ットプリントを測定することによって多重プロセッサ・
システムのスレッドをスケジューリングするための方法
および装置を提供する。プロセッサのそれぞれに関する
スレッドのそれぞれの類縁性は、上で判定されたキャッ
シュ・フットプリントを使用して判定される。プロセッ
サのそれぞれでのスレッドのそれぞれの実行は、その類
縁性に従ってスケジューリングされる。本発明のより具
体的な実施例では、キャッシュのそれぞれのスレッドの
それぞれのキャッシュ・フットプリントが、各スレッド
によって特定のキャッシュから取り出される活動状態の
キャッシュラインの数によって測定される。
【0012】
【発明の実施の形態】上で述べたように、図1には、複
数のマイクロプロセッサ(12aおよび12b)を有す
る多重プロセッサシステム(11)が示されている。各
プロセッサは、アプリケーションおよびオペレーティン
グ・システム・ソフトウェアを保持またはサポートする
短期記憶媒体であるメモリ(13)に接続される。プロ
セッサとそれに関連するメモリの通信経路には、少なく
とも1つのキャッシュ(14aまたは14b)が挿入さ
れる。ただし、複数レベルのキャッシュ(14a、14
b、15aおよび15b)が可能である。前記キャッシ
ュの目的は、高速のメモリ・アクセスを実現するため
に、前記メモリの頻繁にアクセスされる内容を一時的に
記憶し、前記キャッシュ記憶されたメモリ内容への高速
の通信経路を提供することである。
数のマイクロプロセッサ(12aおよび12b)を有す
る多重プロセッサシステム(11)が示されている。各
プロセッサは、アプリケーションおよびオペレーティン
グ・システム・ソフトウェアを保持またはサポートする
短期記憶媒体であるメモリ(13)に接続される。プロ
セッサとそれに関連するメモリの通信経路には、少なく
とも1つのキャッシュ(14aまたは14b)が挿入さ
れる。ただし、複数レベルのキャッシュ(14a、14
b、15aおよび15b)が可能である。前記キャッシ
ュの目的は、高速のメモリ・アクセスを実現するため
に、前記メモリの頻繁にアクセスされる内容を一時的に
記憶し、前記キャッシュ記憶されたメモリ内容への高速
の通信経路を提供することである。
【0013】本発明によれば、図2に示されているよう
に、キャッシュ監視ユニット(CMU)(20)によっ
て標準キャッシュ・アーキテクチャが拡張される。名前
からわかるように、この拡張の目的は、計算単位(プロ
セス、スレッド)のキャッシュ・フットプリントを測定
するために、キャッシュの所有権と使用法を監視し、そ
れを行う計算単位を特定することである。図2に、CM
Uと、他の標準システム構成要素すなわち、キャッシュ
(21)、CPU(22)およびメモリとの統合および
対話の高水準の概要を示す。CPU上で命令ストリーム
を実行している現行スレッドが、ロード動作またはスト
ア動作であるld(A)/st(A)(24)を介して
メモリ位置A(M[A])の内容にアクセスする時に、
CPUは、これらの要求を、CPUキャッシュ・インタ
ーフェース(28)を介してそのCPUに関連するキャ
ッシュ(21)に発行する。キャッシュの仕事は、M
[A]がすでにキャッシュの記憶域にあるかどうかを識
別し、(a)そのデータをCPUに返すか、(b)前記
仕事(a)を実行する前に、M[A]を主記憶から取り
出さなければならないかどうかを識別することである。
M[A]がすでにキャッシュのメモリにある場合には、
主記憶へのアクセスなしにM[A]がCPUに返され
る。この時点では、CMUとの対話は不要である。しか
し、M[A]がキャッシュのメモリで使用可能でない場
合には、キャッシュは、まずキャッシュ・メモリ・イン
ターフェース(23)を介して主記憶からデータを取り
出さなければならない。キャッシュのメモリは主記憶よ
りかなり小さいので、キャッシュは、M[A]を格納す
るために、スペースを作るすなわち、他のキャッシュ記
憶されたメモリを「追い出」さなければならない。キャ
ッシュは、有限の個数(NUM_CL)のキャッシュラインに
編成され、各キャッシュラインは、キャッシュライン・
サイズ(CLS)と称する特定の数の連続したメモリの
バイトを保持する。キャッシュは、通常、単純なマッピ
ング関数F(A)(たとえばアドレス・ビット・ハッシ
ング)に基づいて、複数のキャッシュラインをグループ
に編成する。言い換えると、M[A]は、それに関連す
るキャッシュライン・グループCG[A]に含まれるキ
ャッシュラインに格納することしかできない。CG
[A]に使用可能なキャッシュラインがない場合には、
キャッシュは、CG[A]からキャッシュラインを追い
出さなければならない。キャッシュラインの追出しに
は、そのキャッシュラインが変更済みの状態である場
合、すなわち、主記憶とキャッシュの内容が同期してい
ない場合の主記憶へのライトバックが組み込まれてい
る。その後になって、初めてM[A]を新たに解放され
たキャッシュラインに取り出すことができる。編成と追
出しの機構は、現在のキャッシュ開発で標準的に実践さ
れている[1]。
に、キャッシュ監視ユニット(CMU)(20)によっ
て標準キャッシュ・アーキテクチャが拡張される。名前
からわかるように、この拡張の目的は、計算単位(プロ
セス、スレッド)のキャッシュ・フットプリントを測定
するために、キャッシュの所有権と使用法を監視し、そ
れを行う計算単位を特定することである。図2に、CM
Uと、他の標準システム構成要素すなわち、キャッシュ
(21)、CPU(22)およびメモリとの統合および
対話の高水準の概要を示す。CPU上で命令ストリーム
を実行している現行スレッドが、ロード動作またはスト
ア動作であるld(A)/st(A)(24)を介して
メモリ位置A(M[A])の内容にアクセスする時に、
CPUは、これらの要求を、CPUキャッシュ・インタ
ーフェース(28)を介してそのCPUに関連するキャ
ッシュ(21)に発行する。キャッシュの仕事は、M
[A]がすでにキャッシュの記憶域にあるかどうかを識
別し、(a)そのデータをCPUに返すか、(b)前記
仕事(a)を実行する前に、M[A]を主記憶から取り
出さなければならないかどうかを識別することである。
M[A]がすでにキャッシュのメモリにある場合には、
主記憶へのアクセスなしにM[A]がCPUに返され
る。この時点では、CMUとの対話は不要である。しか
し、M[A]がキャッシュのメモリで使用可能でない場
合には、キャッシュは、まずキャッシュ・メモリ・イン
ターフェース(23)を介して主記憶からデータを取り
出さなければならない。キャッシュのメモリは主記憶よ
りかなり小さいので、キャッシュは、M[A]を格納す
るために、スペースを作るすなわち、他のキャッシュ記
憶されたメモリを「追い出」さなければならない。キャ
ッシュは、有限の個数(NUM_CL)のキャッシュラインに
編成され、各キャッシュラインは、キャッシュライン・
サイズ(CLS)と称する特定の数の連続したメモリの
バイトを保持する。キャッシュは、通常、単純なマッピ
ング関数F(A)(たとえばアドレス・ビット・ハッシ
ング)に基づいて、複数のキャッシュラインをグループ
に編成する。言い換えると、M[A]は、それに関連す
るキャッシュライン・グループCG[A]に含まれるキ
ャッシュラインに格納することしかできない。CG
[A]に使用可能なキャッシュラインがない場合には、
キャッシュは、CG[A]からキャッシュラインを追い
出さなければならない。キャッシュラインの追出しに
は、そのキャッシュラインが変更済みの状態である場
合、すなわち、主記憶とキャッシュの内容が同期してい
ない場合の主記憶へのライトバックが組み込まれてい
る。その後になって、初めてM[A]を新たに解放され
たキャッシュラインに取り出すことができる。編成と追
出しの機構は、現在のキャッシュ開発で標準的に実践さ
れている[1]。
【0014】しかし、本発明のもう1つの態様によれ
ば、どのラインが追い出され、どのラインにメモリ内容
が書き込まれたかの通知が、キャッシュに要求される。
CMUが所与の時刻での正確なキャッシュ・フットプリ
ント測定を実現できるようにするために、これらの通知
は、追出しイベントまたは書込イベントが発生した時に
即座に行われなければならない。これらの追加動作は、
並列に実行することができ、キャッシュ・アクセスのク
リティカル・パスには追加のオーバーヘッドが全く導入
されない。具体的に言うと、キャッシュは、キャッシュ
ラインLiを追い出すことを決定した後に、キャッシュ
CMU通信バス(C3バス)(27)上で「evict
(Li)」通知を発行し、キャッシュラインに書き込ん
だ後には、「filled(Li)」通知をCMUに送る。実
用上の目的のために、キャッシュライン無効化と初期C
MU状態を除いて、すべての追出しの後に、同一のキャ
ッシュラインの書込が行われる。したがって、「evict
(Li)」と「filled(Li)」を、1つの要求にまとめ
ることができる。無効化命令は、要求に対する追加パラ
メータINV(ハードウェアでは、これは、キャッシュ
無効化命令が発行された時に立てられる追加の信号線に
なる)によって包含することができる。したがって、キ
ャッシュからCMUに対して発行される要求のそれぞれ
は、Req<L,Inv>という形式を有し、このL
は、影響を受けるラインを識別し、Invは、この要求
が無効化命令の結果であるか、キャッシュラインの書込
(追出しを暗示する)の結果であるかを識別する。
ば、どのラインが追い出され、どのラインにメモリ内容
が書き込まれたかの通知が、キャッシュに要求される。
CMUが所与の時刻での正確なキャッシュ・フットプリ
ント測定を実現できるようにするために、これらの通知
は、追出しイベントまたは書込イベントが発生した時に
即座に行われなければならない。これらの追加動作は、
並列に実行することができ、キャッシュ・アクセスのク
リティカル・パスには追加のオーバーヘッドが全く導入
されない。具体的に言うと、キャッシュは、キャッシュ
ラインLiを追い出すことを決定した後に、キャッシュ
CMU通信バス(C3バス)(27)上で「evict
(Li)」通知を発行し、キャッシュラインに書き込ん
だ後には、「filled(Li)」通知をCMUに送る。実
用上の目的のために、キャッシュライン無効化と初期C
MU状態を除いて、すべての追出しの後に、同一のキャ
ッシュラインの書込が行われる。したがって、「evict
(Li)」と「filled(Li)」を、1つの要求にまとめ
ることができる。無効化命令は、要求に対する追加パラ
メータINV(ハードウェアでは、これは、キャッシュ
無効化命令が発行された時に立てられる追加の信号線に
なる)によって包含することができる。したがって、キ
ャッシュからCMUに対して発行される要求のそれぞれ
は、Req<L,Inv>という形式を有し、このL
は、影響を受けるラインを識別し、Invは、この要求
が無効化命令の結果であるか、キャッシュラインの書込
(追出しを暗示する)の結果であるかを識別する。
【0015】キャッシュからの通知要求を利用し、前記
スレッドのそれぞれによって取り出されたキャッシュラ
インのうちの何個がキャッシュ内でまだ活動状態である
かの測定を前記スレッドのそれぞれにCMUが供給でき
るようにする方法を、これから説明する。
スレッドのそれぞれによって取り出されたキャッシュラ
インのうちの何個がキャッシュ内でまだ活動状態である
かの測定を前記スレッドのそれぞれにCMUが供給でき
るようにする方法を、これから説明する。
【0016】CMUは、通知要求Req<L,Inv>
のそれぞれを取り上げ、肯定応答を送る(たとえば、C
3バスの特定の信号線をロウにすることによって)。C
MUキャッシュ・インターフェースのほかに、CMU
は、CMUの状態を変更または問い合わせるために下の
2つの「命令」を公開するCPUへのインターフェース
(29)を提供する。 1)setowner (oid) 別の「setowner (oid)」が発行さ
れるまで、ここから取り出されるすべてのキャッシュラ
インの所有者を識別する。oidは、有効なIDでなけれ
ばならない(下を参照)。 2)getusage (oid) 有効なoidが所有するキャッシュ
ラインの数を取り出す。
のそれぞれを取り上げ、肯定応答を送る(たとえば、C
3バスの特定の信号線をロウにすることによって)。C
MUキャッシュ・インターフェースのほかに、CMU
は、CMUの状態を変更または問い合わせるために下の
2つの「命令」を公開するCPUへのインターフェース
(29)を提供する。 1)setowner (oid) 別の「setowner (oid)」が発行さ
れるまで、ここから取り出されるすべてのキャッシュラ
インの所有者を識別する。oidは、有効なIDでなけれ
ばならない(下を参照)。 2)getusage (oid) 有効なoidが所有するキャッシュ
ラインの数を取り出す。
【0017】有効なoidとして、次の制約を仮定する。
[0 < oid < MAX_OID]、ただし、MAX_OIDは、なんらかの
システム定数であり、0は、INVの場合とCMUの初
期状態の処理のために予約済みである。この時点でのこ
の実施例の説明を簡単にするために、可能な所有者の数
(たとえばスレッド、プロセス)は、MAX_OIDを超えな
いと仮定する。可能な所有者の数がMAX_OIDを超える場
合については、後で説明する。
[0 < oid < MAX_OID]、ただし、MAX_OIDは、なんらかの
システム定数であり、0は、INVの場合とCMUの初
期状態の処理のために予約済みである。この時点でのこ
の実施例の説明を簡単にするために、可能な所有者の数
(たとえばスレッド、プロセス)は、MAX_OIDを超えな
いと仮定する。可能な所有者の数がMAX_OIDを超える場
合については、後で説明する。
【0018】現在の所有者だけではなく、有効なoidの
それぞれについて、CMUは、OC (oid)と称する、この
oidによって「所有」されるキャッシュラインの数を維
持しなければならない。この数を維持できるようにする
ために、CMUは、キャッシュラインLiのそれぞれに
ついて、キャッシュライン所有者CLO(Li)を維持
しなければならない。具体的に言うと、キャッシュから
受け取る要求<L,Inv>のそれぞれについて、CM
Uは、キャッシュラインLの現所有者に関連するカウン
タをデクリメントし、最後の「setowner」命令によって
示されるキャッシュラインLの新しい所有者に関連する
カウンタをインクリメントする。通常、オペレーティン
グ・システムは、コンテキスト切替えの時に、CMUに
「setowner」命令を発行する。Inv信号がこの要求で
立てられる場合、新しい所有者として「0」が選択さ
れ、そのキャッシュラインに関連する所有者がないこと
が示される(「0」は有効なoidでないことに留意され
たい)。同様に、システム始動時には、すべてのキャッ
シュラインにoid「0」が与えられる。
それぞれについて、CMUは、OC (oid)と称する、この
oidによって「所有」されるキャッシュラインの数を維
持しなければならない。この数を維持できるようにする
ために、CMUは、キャッシュラインLiのそれぞれに
ついて、キャッシュライン所有者CLO(Li)を維持
しなければならない。具体的に言うと、キャッシュから
受け取る要求<L,Inv>のそれぞれについて、CM
Uは、キャッシュラインLの現所有者に関連するカウン
タをデクリメントし、最後の「setowner」命令によって
示されるキャッシュラインLの新しい所有者に関連する
カウンタをインクリメントする。通常、オペレーティン
グ・システムは、コンテキスト切替えの時に、CMUに
「setowner」命令を発行する。Inv信号がこの要求で
立てられる場合、新しい所有者として「0」が選択さ
れ、そのキャッシュラインに関連する所有者がないこと
が示される(「0」は有効なoidでないことに留意され
たい)。同様に、システム始動時には、すべてのキャッ
シュラインにoid「0」が与えられる。
【0019】図3は、CMUの内部アーキテクチャを詳
細に示し、以下に一覧を示すさまざまなCMU構成要素
に対して上記の要件を示す図である。 1.現在走行中の所有者(スレッド、プロセス)を識別
するoid(31)を含む所有者識別子レジスタoid-reg
(30)。 2.キャッシュラインL[0...NUM_CL-1](32aないし
32z)ごとにキャッシュラインの所有者のoidすなわ
ちCLO(Li)を保持する、サイズがNUM_CLのcacheli
ne_oidベクトル(32)。 3.可能な有効なoid値ごとに、前記oidによって所有さ
れるキャッシュラインの数を維持する、counter_vector
(33)。 4.キャッシュ・ユニットと対話するC3バス・インタ
ーフェース(34)。 5.「追出し」通知および「書込」通知に基づいてCM
U状態を変更するCMU更新ユニット(35)。 6.CPUによって発行されるsetowner命令およびgetu
sage命令で動作するCPUインターフェース(36)。
副作用は、CMUが、そうでなければキャッシュ・コア
・ハードウェア自体に束縛される他の情報を簡単に記憶
できることである。たとえば、単に通知要求を数えるこ
とによって、CMUは、実際のキャッシュ・ミス会計情
報を提供できる。
細に示し、以下に一覧を示すさまざまなCMU構成要素
に対して上記の要件を示す図である。 1.現在走行中の所有者(スレッド、プロセス)を識別
するoid(31)を含む所有者識別子レジスタoid-reg
(30)。 2.キャッシュラインL[0...NUM_CL-1](32aないし
32z)ごとにキャッシュラインの所有者のoidすなわ
ちCLO(Li)を保持する、サイズがNUM_CLのcacheli
ne_oidベクトル(32)。 3.可能な有効なoid値ごとに、前記oidによって所有さ
れるキャッシュラインの数を維持する、counter_vector
(33)。 4.キャッシュ・ユニットと対話するC3バス・インタ
ーフェース(34)。 5.「追出し」通知および「書込」通知に基づいてCM
U状態を変更するCMU更新ユニット(35)。 6.CPUによって発行されるsetowner命令およびgetu
sage命令で動作するCPUインターフェース(36)。
副作用は、CMUが、そうでなければキャッシュ・コア
・ハードウェア自体に束縛される他の情報を簡単に記憶
できることである。たとえば、単に通知要求を数えるこ
とによって、CMUは、実際のキャッシュ・ミス会計情
報を提供できる。
【0020】CMU更新ユニット(35)の動作は、キ
ャッシュラインの正しいカウントと所有権を維持するこ
とである。図4の流れ図からわかるように、CMU更新
ユニットは以下の動作の流れに従う。 ・(41) C3バス・インターフェース(34)から
次の通知要求<L,Inv>を取り出す。 ・(42) cacheline_oidベクトル(32)からキャ
ッシュラインLの現所有者を取り出す。 ・(43) counter_vector(33)の、上で判定され
た所有者の項目をデクリメントする。 ・(44) Inv信号が立っている場合には、new_ow
nerに「0」をセットし、無効化を示す(46)。そう
でない場合には、oid-regの内容によってnew_ownerを決
定する(45)。 ・(47) キャッシュラインの所有者CLO(L)に
new_ownerをセットする。 ・(48) new_ownerのcounter_vector(33)をイ
ンクリメントする。
ャッシュラインの正しいカウントと所有権を維持するこ
とである。図4の流れ図からわかるように、CMU更新
ユニットは以下の動作の流れに従う。 ・(41) C3バス・インターフェース(34)から
次の通知要求<L,Inv>を取り出す。 ・(42) cacheline_oidベクトル(32)からキャ
ッシュラインLの現所有者を取り出す。 ・(43) counter_vector(33)の、上で判定され
た所有者の項目をデクリメントする。 ・(44) Inv信号が立っている場合には、new_ow
nerに「0」をセットし、無効化を示す(46)。そう
でない場合には、oid-regの内容によってnew_ownerを決
定する(45)。 ・(47) キャッシュラインの所有者CLO(L)に
new_ownerをセットする。 ・(48) new_ownerのcounter_vector(33)をイ
ンクリメントする。
【0021】MAX_OIDの選択は、キャッシュライン数NUM
_CL、キャッシュ・サイズCLS、スレッド数、プロセ
ス数などのさまざまなシステム・パラメータに依存す
る。以下で、最新技術のキャッシュ・アーキテクチャと
オペレーティング・システム・パラメータに基づく推定
を示す。キャッシュ内のキャッシュライン数NUM_CLは、
1000000ではなく1000から10000程度で
ある。たとえば、キャッシュライン・サイズが128バ
イト(27)、サイズが4メガバイト(222)のキャッ
シュを仮定すると、32768キャッシュライン
(215)がもたらされる。さらに、作成できるスレッド
数が4096(212)までに制限されているオペレーテ
ィング・システムを仮定する。多数の市販オペレーティ
ング・システムは、これよりかなり少ない数に制限され
ていることに留意されたい。しかし、2バイトの記憶域
でoidを表現することによって、216個の異なるoidを発
行できる。上の数値の場合、cacheline_oidベクトルの
ために64キロバイト、MAX_OID=4096なのでcounter_ve
ctorのために8キロバイト、合計72キロバイトの追加
記憶域を提供するキャッシュ設計が必要になる。これ
は、元の記憶域の約1.75%である。キャッシュ・サ
イズは増加し続けているが、CMU拡張に必要な総キャ
ッシュ・サイズの実効比率は、キャッシュライン・サイ
ズが同様に増加するので低下すると思われる。したがっ
て、キャッシュライン数は、キャッシュサイズ自体の比
率では増加せず、最終的に、キャッシュ・チップの総面
積に対して、CMUに必要なチップ面積が相対的に減
る。
_CL、キャッシュ・サイズCLS、スレッド数、プロセ
ス数などのさまざまなシステム・パラメータに依存す
る。以下で、最新技術のキャッシュ・アーキテクチャと
オペレーティング・システム・パラメータに基づく推定
を示す。キャッシュ内のキャッシュライン数NUM_CLは、
1000000ではなく1000から10000程度で
ある。たとえば、キャッシュライン・サイズが128バ
イト(27)、サイズが4メガバイト(222)のキャッ
シュを仮定すると、32768キャッシュライン
(215)がもたらされる。さらに、作成できるスレッド
数が4096(212)までに制限されているオペレーテ
ィング・システムを仮定する。多数の市販オペレーティ
ング・システムは、これよりかなり少ない数に制限され
ていることに留意されたい。しかし、2バイトの記憶域
でoidを表現することによって、216個の異なるoidを発
行できる。上の数値の場合、cacheline_oidベクトルの
ために64キロバイト、MAX_OID=4096なのでcounter_ve
ctorのために8キロバイト、合計72キロバイトの追加
記憶域を提供するキャッシュ設計が必要になる。これ
は、元の記憶域の約1.75%である。キャッシュ・サ
イズは増加し続けているが、CMU拡張に必要な総キャ
ッシュ・サイズの実効比率は、キャッシュライン・サイ
ズが同様に増加するので低下すると思われる。したがっ
て、キャッシュライン数は、キャッシュサイズ自体の比
率では増加せず、最終的に、キャッシュ・チップの総面
積に対して、CMUに必要なチップ面積が相対的に減
る。
【0022】それでも、OSは、oidがクリティカルな
資源になる可能性があるという事実に対処する準備をし
なければならない。本発明は、MAX_OID個を超えるスレ
ッドを処理する方法を提供する。静的でスレッドをグル
ープにまとめるアプローチと、より動的であり、OSが
時間方向でoidの割り当てを能動的に管理する必要があ
るアプローチという2つの全般的なアプローチが意味を
なす。
資源になる可能性があるという事実に対処する準備をし
なければならない。本発明は、MAX_OID個を超えるスレ
ッドを処理する方法を提供する。静的でスレッドをグル
ープにまとめるアプローチと、より動的であり、OSが
時間方向でoidの割り当てを能動的に管理する必要があ
るアプローチという2つの全般的なアプローチが意味を
なす。
【0023】静的oid割当アプローチでは、同一のアド
レス空間またはプロセスに属するスレッドに、共通のoi
dを割り当てなければならない。これは、同一プロセス
に属するスレッドがデータまたはコードすなわちメモリ
を共有することがしばしばであるから、ランダムなスレ
ッドのグループ化より有利である。また、あるプロセス
のすべてのスレッドを複数のスレッド・グループに分割
し、各グループに別々のoidを割り当てることも可能で
ある。具体的に言うと、スレッドのメモリ共有に関する
知識があるならば、アドレッシングするメモリの大半を
共有するスレッド群を、別個のoidを有するスレッド・
グループに割り当てなければならない。これによって、
プロセスまたはスレッド・グループの最大個数をMAX_OI
Dに制限する。
レス空間またはプロセスに属するスレッドに、共通のoi
dを割り当てなければならない。これは、同一プロセス
に属するスレッドがデータまたはコードすなわちメモリ
を共有することがしばしばであるから、ランダムなスレ
ッドのグループ化より有利である。また、あるプロセス
のすべてのスレッドを複数のスレッド・グループに分割
し、各グループに別々のoidを割り当てることも可能で
ある。具体的に言うと、スレッドのメモリ共有に関する
知識があるならば、アドレッシングするメモリの大半を
共有するスレッド群を、別個のoidを有するスレッド・
グループに割り当てなければならない。これによって、
プロセスまたはスレッド・グループの最大個数をMAX_OI
Dに制限する。
【0024】動的oid割当アプローチでは、キャッシュ
類縁性スケジューリングにおいて、限られた数のスレッ
ドすなわち、走行可能にされるスレッドだけが利益を得
ることができるという事実が認識されている。通常、多
数のスレッドは、動作不能状態であり、時間が経つにつ
れてそのスレッドのキャッシュ・フットプリントが減少
する。したがって、オペレーティング・システムが、
(i)動作不能にされているスレッドまたはスレッド・
グループがあるならばそのoidを再利用し、(ii)そ
のoidを異なる実体に再割り当てし、(iii)スレッ
ドまたはスレッド・グループが再び動作可能にされたな
らば、新しいoidを割り当てることが、有効なアプロー
チである。この場合、MAX_OIDによって、スレッドの総
数ではなく、システム内で走行の準備ができている動作
可能にされるスレッドの数が制限されるが、これは、内
部資源の制約からほとんどの多重プロセッサ・オペレー
ティング・システムが実行しなければならないことであ
る。
類縁性スケジューリングにおいて、限られた数のスレッ
ドすなわち、走行可能にされるスレッドだけが利益を得
ることができるという事実が認識されている。通常、多
数のスレッドは、動作不能状態であり、時間が経つにつ
れてそのスレッドのキャッシュ・フットプリントが減少
する。したがって、オペレーティング・システムが、
(i)動作不能にされているスレッドまたはスレッド・
グループがあるならばそのoidを再利用し、(ii)そ
のoidを異なる実体に再割り当てし、(iii)スレッ
ドまたはスレッド・グループが再び動作可能にされたな
らば、新しいoidを割り当てることが、有効なアプロー
チである。この場合、MAX_OIDによって、スレッドの総
数ではなく、システム内で走行の準備ができている動作
可能にされるスレッドの数が制限されるが、これは、内
部資源の制約からほとんどの多重プロセッサ・オペレー
ティング・システムが実行しなければならないことであ
る。
【0025】どちらのアプローチにも長所と短所がある
が、その多くは、これらのシステムで実行される作業負
荷に依存し、したがって、静的方式または動的方式のい
ずれかに向かう選択は、この実施例では直交している。
が、その多くは、これらのシステムで実行される作業負
荷に依存し、したがって、静的方式または動的方式のい
ずれかに向かう選択は、この実施例では直交している。
【0026】下記に制限されるわけではないが、ほとん
どのプロセッサ設計では、「setowner」命令と「getusa
ge」命令が、専用レジスタ命令(たとえばキャッシュ・
ミスの回数を取り出すなど、キャッシュ状態の取出また
はリセット、リアルタイム・クロック読取、キャッシュ
ライン無効化などの命令に類似の)またはロード/スト
ア命令のいずれかとして提供され、CMUレジスタは、
プロセッサの物理アドレス範囲の一部にマッピングされ
る。
どのプロセッサ設計では、「setowner」命令と「getusa
ge」命令が、専用レジスタ命令(たとえばキャッシュ・
ミスの回数を取り出すなど、キャッシュ状態の取出また
はリセット、リアルタイム・クロック読取、キャッシュ
ライン無効化などの命令に類似の)またはロード/スト
ア命令のいずれかとして提供され、CMUレジスタは、
プロセッサの物理アドレス範囲の一部にマッピングされ
る。
【0027】1例として、レジスタ・ベースの命令セッ
ト用のCPU−CMUインターフェースとメモリ・マッ
ピング式CMUレジスタをオペレーティング・システム
で使用するための簡単な命令シーケンスを示す。当業者
は、この例を他の命令セットまたは専用レジスタに簡単
にマッピングできる。一般性を失うことなく、この例で
は、レジスタr4が、スレッド記述子ブロックのアドレ
スを保持し、OID_OFFSETが、このスレッドのoidが格納
される、このブロック内の固定されたオフセットを表
し、CMU_OIDが、CMUのoidレジスタがマッピングされ
る物理アドレスを表し、CMU_VECが、CMUカウンタ・
ベクトルの最初の項目(1項目あたり2バイト)がマッ
ピングされる物理アドレスを表すと仮定することができ
る。
ト用のCPU−CMUインターフェースとメモリ・マッ
ピング式CMUレジスタをオペレーティング・システム
で使用するための簡単な命令シーケンスを示す。当業者
は、この例を他の命令セットまたは専用レジスタに簡単
にマッピングできる。一般性を失うことなく、この例で
は、レジスタr4が、スレッド記述子ブロックのアドレ
スを保持し、OID_OFFSETが、このスレッドのoidが格納
される、このブロック内の固定されたオフセットを表
し、CMU_OIDが、CMUのoidレジスタがマッピングされ
る物理アドレスを表し、CMU_VECが、CMUカウンタ・
ベクトルの最初の項目(1項目あたり2バイト)がマッ
ピングされる物理アドレスを表すと仮定することができ
る。
【0028】前に述べたように、スケジューラは、下記
に類似のコードを使用して、選択されたタスクに実行を
切り替える直前のスケジューリング決定の時に、oid-re
gをセットすることが好ましい。 lds r3,r4(OID_OFFSET) // 16ビット値のスレッド<oid>をレジスタr3にロード する ldw r5,@CMU_OID // CMU_OIDレジスタのアドレスをロードする stsx r3,0(r5) // CMU_OIDレジスタのオフセット0に16ビット値をス トアする
に類似のコードを使用して、選択されたタスクに実行を
切り替える直前のスケジューリング決定の時に、oid-re
gをセットすることが好ましい。 lds r3,r4(OID_OFFSET) // 16ビット値のスレッド<oid>をレジスタr3にロード する ldw r5,@CMU_OID // CMU_OIDレジスタのアドレスをロードする stsx r3,0(r5) // CMU_OIDレジスタのオフセット0に16ビット値をス トアする
【0029】キャッシュ類縁性スケジューリングを実行
するために、スケジューラは、キャッシュ・フットプリ
ントの関数としてキャッシュ類縁性を確立しなければな
らず、したがって、CMUからキャッシュ・フットプリ
ントを取り出さなければならない。 lds r3,r4(OID_OFFSET) // 16ビット値のスレッド<oid>をレジスタr3にロード する ldw r5,@CMU_VEC // CMU_OIDレジスタのアドレスをロードする shl r3,r3,1 // 正しいベクトル・オフセットを得るために左に1ビ ットだけシフトする ldsx r6,r3(r5) // counter_vector[oid]の16ビット内容をr6にロード する
するために、スケジューラは、キャッシュ・フットプリ
ントの関数としてキャッシュ類縁性を確立しなければな
らず、したがって、CMUからキャッシュ・フットプリ
ントを取り出さなければならない。 lds r3,r4(OID_OFFSET) // 16ビット値のスレッド<oid>をレジスタr3にロード する ldw r5,@CMU_VEC // CMU_OIDレジスタのアドレスをロードする shl r3,r3,1 // 正しいベクトル・オフセットを得るために左に1ビ ットだけシフトする ldsx r6,r3(r5) // counter_vector[oid]の16ビット内容をr6にロード する
【0030】これで、キャッシュ・フットプリント測定
値が、レジスタr6に格納され、他のスケジューリング
優先順位と組み合わせて総合的な実行優先順位を導出で
きるようになった。これを以下で説明する。
値が、レジスタr6に格納され、他のスケジューリング
優先順位と組み合わせて総合的な実行優先順位を導出で
きるようになった。これを以下で説明する。
【0031】ここで、キャッシュ監視装置の使用をオペ
レーティング・システムのスケジューラに統合化する方
法の例を示す。まず、図5に示された一般的で抽象的な
アルゴリズムを説明し、次に、図6に示されたUNIX
スケジューラなどの標準的な公平なスケジューラの統合
を詳細に説明する。しかし、本発明はこれらの説明に制
限されないことに留意されたい。当業者は、本発明のキ
ャッシュ監視装置および基本アルゴリズムを他のスケジ
ューリング・アルゴリズムに統合する処理を導出できる
はずである。
レーティング・システムのスケジューラに統合化する方
法の例を示す。まず、図5に示された一般的で抽象的な
アルゴリズムを説明し、次に、図6に示されたUNIX
スケジューラなどの標準的な公平なスケジューラの統合
を詳細に説明する。しかし、本発明はこれらの説明に制
限されないことに留意されたい。当業者は、本発明のキ
ャッシュ監視装置および基本アルゴリズムを他のスケジ
ューリング・アルゴリズムに統合する処理を導出できる
はずである。
【0032】最終的に、スケジューリング・パラメータ
の組に対して、すべてのスケジューラは、次に実行する
のに適したスレッドを選択するためにスケジューラが比
較することのできる、本明細書で実行優先順位と称する
正規化された数をスレッドごとに導出する。一般性を失
うことなく、大きい数が選択順序に関連すると仮定する
ことができる。図5は、実行優先順位ep(50)の計
算全体に寄与するさまざまなパラメータを示す図であ
る。スレッドTjは、ある基本優先順位bp(Tj)(5
1)を用いて作成される。ある程度の公平さをもたらす
ために、スレッドTjは、常に基本優先順位bp(Tj)
でスケジューリングされるのではなく、すべてのタイム
・スライスについて、時刻tでの現優先順位cp
(Tj,t)(52)が、時刻tに依存する量0≦ζ
(t)≦bp(Tj)(53)によってスレッドの基本
優先順位bp(Tj)を下げることによって計算され
る。したがって、現優先順位cp(Tj,t)は、ある
優先順位区間≦bp(Tj)に含まれる。通常、ζ
(t)は、簡単な低下方式を使用して実施される。キャ
ッシュ類縁性に基づかないスケジューリングでは、実行
優先順位は、次式の現優先順位に等しい。 ep(Tj,t)=cp(Tj,t)=bp(Tj)−ζ(Tj,t) (式1)
の組に対して、すべてのスケジューラは、次に実行する
のに適したスレッドを選択するためにスケジューラが比
較することのできる、本明細書で実行優先順位と称する
正規化された数をスレッドごとに導出する。一般性を失
うことなく、大きい数が選択順序に関連すると仮定する
ことができる。図5は、実行優先順位ep(50)の計
算全体に寄与するさまざまなパラメータを示す図であ
る。スレッドTjは、ある基本優先順位bp(Tj)(5
1)を用いて作成される。ある程度の公平さをもたらす
ために、スレッドTjは、常に基本優先順位bp(Tj)
でスケジューリングされるのではなく、すべてのタイム
・スライスについて、時刻tでの現優先順位cp
(Tj,t)(52)が、時刻tに依存する量0≦ζ
(t)≦bp(Tj)(53)によってスレッドの基本
優先順位bp(Tj)を下げることによって計算され
る。したがって、現優先順位cp(Tj,t)は、ある
優先順位区間≦bp(Tj)に含まれる。通常、ζ
(t)は、簡単な低下方式を使用して実施される。キャ
ッシュ類縁性に基づかないスケジューリングでは、実行
優先順位は、次式の現優先順位に等しい。 ep(Tj,t)=cp(Tj,t)=bp(Tj)−ζ(Tj,t) (式1)
【0033】本発明の下では、プロセッサPiに対する
スレッドTjのキャッシュ類縁性CA(Tj,Pi)が、
所与のプロセッサPiでのスレッドTjの実行優先順位を
計算する時に考慮されるので、同一時刻の同一スレッド
の実行優先順位の計算が、異なるプロセッサで異なる値
を生じる可能性があることが暗示される。具体的に言う
と、スレッドの現優先順位cp(Tj,t)(52)は
プロセッサ依存であり、各スケジューリング・ポイント
でΔp(55)(0≦Δp<ΔP)だけ増やされる(5
4)。ΔPは、この形でスレッドが増やすことのできる
優先順位レベルの最大値である。Δpは、単調関数Ψ
(CA(Tj,Pi))(56)を介してキャッシュ類縁
性CA(Tj,Pi)(57)から計算される。CA(T
j,Pi)自体は、単調関数Θ(CFP(Tj,Pi))
(58)を介して、本発明の装置によって測定されるス
レッドTjのキャッシュ・フットプリントCFP(Tj,
Pi)(59)から計算される。したがって、この実行
優先順位は、スレッドの基本優先順位、時刻およびプロ
セッサの関数であり、後者は、プロセッサに対する類縁
性によって表現される。 ep(Pi,Tj,t)=cp(Tj,t)+Δp (式2) cp(Tj,t)=bp(Tj)−ζ(Tj,t) Δp=Ψ(Θ(CFP(Pi,Tj))
スレッドTjのキャッシュ類縁性CA(Tj,Pi)が、
所与のプロセッサPiでのスレッドTjの実行優先順位を
計算する時に考慮されるので、同一時刻の同一スレッド
の実行優先順位の計算が、異なるプロセッサで異なる値
を生じる可能性があることが暗示される。具体的に言う
と、スレッドの現優先順位cp(Tj,t)(52)は
プロセッサ依存であり、各スケジューリング・ポイント
でΔp(55)(0≦Δp<ΔP)だけ増やされる(5
4)。ΔPは、この形でスレッドが増やすことのできる
優先順位レベルの最大値である。Δpは、単調関数Ψ
(CA(Tj,Pi))(56)を介してキャッシュ類縁
性CA(Tj,Pi)(57)から計算される。CA(T
j,Pi)自体は、単調関数Θ(CFP(Tj,Pi))
(58)を介して、本発明の装置によって測定されるス
レッドTjのキャッシュ・フットプリントCFP(Tj,
Pi)(59)から計算される。したがって、この実行
優先順位は、スレッドの基本優先順位、時刻およびプロ
セッサの関数であり、後者は、プロセッサに対する類縁
性によって表現される。 ep(Pi,Tj,t)=cp(Tj,t)+Δp (式2) cp(Tj,t)=bp(Tj)−ζ(Tj,t) Δp=Ψ(Θ(CFP(Pi,Tj))
【0034】これを具体的な文脈に移すために、本発明
の装置を一般的な公平なUNIXベースのスケジューラ
に統合する方法を例によって示す。本発明は、本明細書
で説明する統合に制限されるものではないことに留意さ
れたい。そうではなくて、当業者は、他のスケジューリ
ング・アルゴリズムにこの戦略を組み込むことができる
はずである。これによって、参考文献[2]が、参照に
よって本明細書に組み込まれる。図6に示されているの
は、スケジューリング状態の主要部分である中央ディス
パッチ・ベクトルまたはディスパッチ待ち行列(60)
である。スケジューリング状態は、すべてのプロセッサ
によって共用され、スケジューリング状態へのアクセス
は、ロックまたは他の既知の機構を使用して適宜調整さ
れる。これが必要になるのは、現在走行中のスレッドが
自主的に別のスレッドにプロセッサを明け渡す時か、こ
のプロセッサで現在走行中のスレッドのタイム・スライ
スが満了した時のいずれかに、スケジューラのコードが
すべてのプロセッサで実行されるからである。ディスパ
ッチ待ち行列(60)は、概念上は、待ち行列Qiの待
ち行列として編成され、効果的には、待ち行列Qi(6
1aないし61z)の配列として編成され、各待ち行列
Qiは、それぞれがスレッドの優先順位や保存されたレ
ジスタなどの状態を保持するスレッド制御ブロック(T
CB)(62aないし62z)の組をリンクする。この
ベクトルにはmax個の優先順位があり、したがって、max
個の待ち行列がある。スレッドTjに関連するTCB
jは、Tjの走行の準備ができており、現時刻tにその現
優先順位cp(Tj,t)がPRIOi(ただし、0≦i
<max)である場合に、Qiに待ち行列化される。TCB
jによって表されるスレッドTjは、基本優先順位bp
(Tj)を用いて作成され、PRIOmax/2≦bp(T
j)<PRIOmax−ΔPである。スレッドのcp
(Tj,t)は、0または(bp(Tj)−PRIOmax
/2)のいずれかになるまで、タイム・スライスごとに
デクリメントされ、0または(bp(Tj)−PRIO
max/2)になった時点で、もう一度bp(Tj)にリセ
ットされる。
の装置を一般的な公平なUNIXベースのスケジューラ
に統合する方法を例によって示す。本発明は、本明細書
で説明する統合に制限されるものではないことに留意さ
れたい。そうではなくて、当業者は、他のスケジューリ
ング・アルゴリズムにこの戦略を組み込むことができる
はずである。これによって、参考文献[2]が、参照に
よって本明細書に組み込まれる。図6に示されているの
は、スケジューリング状態の主要部分である中央ディス
パッチ・ベクトルまたはディスパッチ待ち行列(60)
である。スケジューリング状態は、すべてのプロセッサ
によって共用され、スケジューリング状態へのアクセス
は、ロックまたは他の既知の機構を使用して適宜調整さ
れる。これが必要になるのは、現在走行中のスレッドが
自主的に別のスレッドにプロセッサを明け渡す時か、こ
のプロセッサで現在走行中のスレッドのタイム・スライ
スが満了した時のいずれかに、スケジューラのコードが
すべてのプロセッサで実行されるからである。ディスパ
ッチ待ち行列(60)は、概念上は、待ち行列Qiの待
ち行列として編成され、効果的には、待ち行列Qi(6
1aないし61z)の配列として編成され、各待ち行列
Qiは、それぞれがスレッドの優先順位や保存されたレ
ジスタなどの状態を保持するスレッド制御ブロック(T
CB)(62aないし62z)の組をリンクする。この
ベクトルにはmax個の優先順位があり、したがって、max
個の待ち行列がある。スレッドTjに関連するTCB
jは、Tjの走行の準備ができており、現時刻tにその現
優先順位cp(Tj,t)がPRIOi(ただし、0≦i
<max)である場合に、Qiに待ち行列化される。TCB
jによって表されるスレッドTjは、基本優先順位bp
(Tj)を用いて作成され、PRIOmax/2≦bp(T
j)<PRIOmax−ΔPである。スレッドのcp
(Tj,t)は、0または(bp(Tj)−PRIOmax
/2)のいずれかになるまで、タイム・スライスごとに
デクリメントされ、0または(bp(Tj)−PRIO
max/2)になった時点で、もう一度bp(Tj)にリセ
ットされる。
【0035】図6には、スケジューラがスレッドのキャ
ッシュ類縁性に基づいてスレッドの実行優先順位を高め
る量を示す優先順位間隔ΔP(63)が示されている。
たとえば、キャッシュ類縁性を判定するために再ロード
遷移モデルを仮定する。前の状態を確立するために再取
出が必要になるキャッシュラインの数で測定される再ロ
ード遷移が非常に小さい場合には、スケジューラは、Δ
P(63)に近いΔp(54)を与える。再ロード遷移
がクリティカルな閾値未満になる場合には、スケジュー
ラは、優先順位昇格についてそのスレッドを検討しな
い。Θ(CFP(Tj,Pi))(58)によって決定さ
れるCA(Tj,Pi)は、単に、スレッドのキャッシュ
・フットプリントCFP(Tj,Pi)とそのスレッドの
最後の実行後のキャッシュ・フットプリントCFP(T
j,Pi)stopの差すなわち、再ロード遷移になる。Ψ
(CA(Tj,Pi))(56)は、どちらかといえば単
純な関数(たとえば、シフト演算とビット・マスク演算
か、スレッドのCA値に対するテーブル索引)にするこ
とができる。
ッシュ類縁性に基づいてスレッドの実行優先順位を高め
る量を示す優先順位間隔ΔP(63)が示されている。
たとえば、キャッシュ類縁性を判定するために再ロード
遷移モデルを仮定する。前の状態を確立するために再取
出が必要になるキャッシュラインの数で測定される再ロ
ード遷移が非常に小さい場合には、スケジューラは、Δ
P(63)に近いΔp(54)を与える。再ロード遷移
がクリティカルな閾値未満になる場合には、スケジュー
ラは、優先順位昇格についてそのスレッドを検討しな
い。Θ(CFP(Tj,Pi))(58)によって決定さ
れるCA(Tj,Pi)は、単に、スレッドのキャッシュ
・フットプリントCFP(Tj,Pi)とそのスレッドの
最後の実行後のキャッシュ・フットプリントCFP(T
j,Pi)stopの差すなわち、再ロード遷移になる。Ψ
(CA(Tj,Pi))(56)は、どちらかといえば単
純な関数(たとえば、シフト演算とビット・マスク演算
か、スレッドのCA値に対するテーブル索引)にするこ
とができる。
【0036】スレッドの優先順位は、多くともΔP63
だけ増やすことができるので、スケジューラは、待ち行
列Qcur61bのTCB62aのスレッドから待ち行列
Qcur -(ΔP-1P-1)61dのTCB62fのスレッドまで
のキャッシュ類縁性を検査および/または計算するだけ
でよい。CA(Tj,Pi)値を導出するために、キャッ
シュ・フットプリントまたはキャッシュ類縁性に関連す
る情報の一部を、プロセッサごとに記憶しなければなら
ない。このプロセッサごとの値のベクトルを、類縁性ユ
ーティリティ・ベクトル(AUV)(64)と呼ぶ。o
id割当方法(独自またはグループ)に応じて、AUV
を、異なるデータ構造に関連付けなければならない。独
自割当方法では、AUVは、スレッド制御ブロック(T
CB)(65)自体に関連付けなければならない。グル
ープoid割当方法では、AUVは、たとえば1プロセス
のすべてのスレッドが同一のoidを共用する場合にはプ
ロセス制御ブロックなど、スレッドのグループに関連す
る共用データ構造(66)であるシーケンス番号66に
関連付けなければならない。AUV(64)は、下で説
明するようにさまざまなセマンティックスを仮定するこ
とができる。従来技術の節で説明したタイムスタンプ・
ベースのアルゴリズムでは、スレッドが最後に走行した
プロセッサのビットを立てるか、最後の実行が古すぎる
場合にはビット・ベクトルを0にするという形のビット
・ベクトルがAUVとして十分である。この場合、AU
Vベクトルの各項目AUV[i]は、ビットiとして表
現され、2進キャッシュ類縁性値が格納される。再ロー
ド遷移モデルの場合には、AUV[i]に、プロセッサ
Pi上での最後の実行を停止した時のスレッドのキャッ
シュ・フットプリントが格納される。
だけ増やすことができるので、スケジューラは、待ち行
列Qcur61bのTCB62aのスレッドから待ち行列
Qcur -(ΔP-1P-1)61dのTCB62fのスレッドまで
のキャッシュ類縁性を検査および/または計算するだけ
でよい。CA(Tj,Pi)値を導出するために、キャッ
シュ・フットプリントまたはキャッシュ類縁性に関連す
る情報の一部を、プロセッサごとに記憶しなければなら
ない。このプロセッサごとの値のベクトルを、類縁性ユ
ーティリティ・ベクトル(AUV)(64)と呼ぶ。o
id割当方法(独自またはグループ)に応じて、AUV
を、異なるデータ構造に関連付けなければならない。独
自割当方法では、AUVは、スレッド制御ブロック(T
CB)(65)自体に関連付けなければならない。グル
ープoid割当方法では、AUVは、たとえば1プロセス
のすべてのスレッドが同一のoidを共用する場合にはプ
ロセス制御ブロックなど、スレッドのグループに関連す
る共用データ構造(66)であるシーケンス番号66に
関連付けなければならない。AUV(64)は、下で説
明するようにさまざまなセマンティックスを仮定するこ
とができる。従来技術の節で説明したタイムスタンプ・
ベースのアルゴリズムでは、スレッドが最後に走行した
プロセッサのビットを立てるか、最後の実行が古すぎる
場合にはビット・ベクトルを0にするという形のビット
・ベクトルがAUVとして十分である。この場合、AU
Vベクトルの各項目AUV[i]は、ビットiとして表
現され、2進キャッシュ類縁性値が格納される。再ロー
ド遷移モデルの場合には、AUV[i]に、プロセッサ
Pi上での最後の実行を停止した時のスレッドのキャッ
シュ・フットプリントが格納される。
【0037】スケジューリング・アルゴリズムがプロセ
ッサPi上で実行される(たとえば、現在走行中のスレ
ッドによる自主的な明渡しに起因するか、タイマ割込み
に起因して)時には、スケジューラは、待ち行列Qcur
からQcur-ΔpまでのすべてのスレッドTjを検査し、そ
のcp(Tj,Pi)をΨ(Θ(CFP(Tj,Pi)))
だけ増やし、最大値を判定しなければならない。すべて
のスレッドのCA(Tj,Pi)値を得るために、スケジ
ューラは、まず、スレッドごとに「getusage(Tj.oi
d)」を呼び出すことによって、各スレッドTjのキャッ
シュ・フットプリントを取り出さなければならない。
ッサPi上で実行される(たとえば、現在走行中のスレ
ッドによる自主的な明渡しに起因するか、タイマ割込み
に起因して)時には、スケジューラは、待ち行列Qcur
からQcur-ΔpまでのすべてのスレッドTjを検査し、そ
のcp(Tj,Pi)をΨ(Θ(CFP(Tj,Pi)))
だけ増やし、最大値を判定しなければならない。すべて
のスレッドのCA(Tj,Pi)値を得るために、スケジ
ューラは、まず、スレッドごとに「getusage(Tj.oi
d)」を呼び出すことによって、各スレッドTjのキャッ
シュ・フットプリントを取り出さなければならない。
【0038】したがって、ほぼ同一の現優先順位を有す
る複数のスレッドが、以前に走行したのと同一のプロセ
ッサで反復してスケジューリングされる傾向を有し、性
能の改善がもたらされる。現優先順位cp(Tj,t)の
ζ(Tj,t)だけの低下は、非常に高い類縁性を有する
同等のスレッドの実行優先順位が、最終的にはキャッシ
ュ類縁性の低いスレッドの実行優先順位より低くなり、
プロセッサの公平で応答性のよいスケジューリングが保
証されることを意味する。
る複数のスレッドが、以前に走行したのと同一のプロセ
ッサで反復してスケジューリングされる傾向を有し、性
能の改善がもたらされる。現優先順位cp(Tj,t)の
ζ(Tj,t)だけの低下は、非常に高い類縁性を有する
同等のスレッドの実行優先順位が、最終的にはキャッシ
ュ類縁性の低いスレッドの実行優先順位より低くなり、
プロセッサの公平で応答性のよいスケジューリングが保
証されることを意味する。
【0039】これから、キャッシュ監視ユニットとの対
話の数を減らすために、キャッシュ類縁性ユーティリテ
ィ状態を維持し、この状態を検査する方法を説明する。
このような減少は、CMU照会のオーバーヘッドが大き
い場合に重要になる。これらの方法は、どれもが例外な
く適用可能ではなく、選択されたoid割当アルゴリズム
に依存する。
話の数を減らすために、キャッシュ類縁性ユーティリテ
ィ状態を維持し、この状態を検査する方法を説明する。
このような減少は、CMU照会のオーバーヘッドが大き
い場合に重要になる。これらの方法は、どれもが例外な
く適用可能ではなく、選択されたoid割当アルゴリズム
に依存する。
【0040】各スレッドが独自のoidを維持する場合に
は、以下の最適化を適用することができる。この場合に
関連するデータ構造を、図6の符号(65)に示す。独
自oidを有するスレッドの場合、プロセッサPiに対する
そのスレッドのキャッシュ・フットプリントCFP(T
j,Pi)およびキャッシュ類縁性CA(Tj,Pi)は、
そのスレッドがPi上で走行しない場合に増加する可能
性がないことは当業者にとって明白である。したがっ
て、スケジューラは、(a)最後に走行したスレッドT
jのタイム・スライスの終りにCA(Tj,Pi)lastを
計算し、(b)epmaxがこれまでに見つかった最大
の実行優先順位であるものとして、 cp(Vj)+Ψ(CA(Tj,Pi)last)>epmax (式3) である場合に限って、スレッド選択フェーズ中にCA
(Tj,Pi)を再計算すれば十分である。この方式で
は、新しいスレッドが、CA(Tj,Pi)lastを最大値
に格納されなければならない。このアルゴリズムは、類
縁性の低いスレッドの場合に、各再取出によって新たに
計算されるCA(Tj,Pi)lastが小さくなることが保
証されるので、CFPが限られた回数(通常は1回)だ
け再取出(「getusage」)されるという振る舞いをもた
らす。キャッシュ類縁性の高いスレッドの場合、CFP
は、スケジューリング処理中により頻繁に再取出され
る。
は、以下の最適化を適用することができる。この場合に
関連するデータ構造を、図6の符号(65)に示す。独
自oidを有するスレッドの場合、プロセッサPiに対する
そのスレッドのキャッシュ・フットプリントCFP(T
j,Pi)およびキャッシュ類縁性CA(Tj,Pi)は、
そのスレッドがPi上で走行しない場合に増加する可能
性がないことは当業者にとって明白である。したがっ
て、スケジューラは、(a)最後に走行したスレッドT
jのタイム・スライスの終りにCA(Tj,Pi)lastを
計算し、(b)epmaxがこれまでに見つかった最大
の実行優先順位であるものとして、 cp(Vj)+Ψ(CA(Tj,Pi)last)>epmax (式3) である場合に限って、スレッド選択フェーズ中にCA
(Tj,Pi)を再計算すれば十分である。この方式で
は、新しいスレッドが、CA(Tj,Pi)lastを最大値
に格納されなければならない。このアルゴリズムは、類
縁性の低いスレッドの場合に、各再取出によって新たに
計算されるCA(Tj,Pi)lastが小さくなることが保
証されるので、CFPが限られた回数(通常は1回)だ
け再取出(「getusage」)されるという振る舞いをもた
らす。キャッシュ類縁性の高いスレッドの場合、CFP
は、スケジューリング処理中により頻繁に再取出され
る。
【0041】シーケンス番号(66)を使用するスレッ
ド・グループ化の場合には、上の前提があてはまらな
い。しかし、スケジューリング時点でのCMU要求の数
は、待ち行列Qcur61bから待ち行列Qcur-(ΔP-1)
61dまでの組で表されるスレッド・グループの数まで
減らすことができる。プロセッサごとのベクトルAUV
は、同一スレッド・グループのすべてのスレッドに共通
の別のデータ構造(67)、たとえばプロセス記述子ブ
ロックに格納される。さらに、好ましくはスケジューリ
ングの試みのたびにインクリメントされるプロセッサご
とのシーケンス番号(66)であるタイム・スタンプ
は、oidによって識別されるグループ記述子ブロックに
ついて所与のプロセッサ上でCFPが最後に読み取られ
た時を示す。各スケジューリング・サイクルで、所与の
スレッド・グループのCFPは、1回だけすなわち、そ
のシーケンス番号(66)がスケジューリング・サイク
ルの現シーケンス番号と一致しない時に、読み取られな
ければならない。
ド・グループ化の場合には、上の前提があてはまらな
い。しかし、スケジューリング時点でのCMU要求の数
は、待ち行列Qcur61bから待ち行列Qcur-(ΔP-1)
61dまでの組で表されるスレッド・グループの数まで
減らすことができる。プロセッサごとのベクトルAUV
は、同一スレッド・グループのすべてのスレッドに共通
の別のデータ構造(67)、たとえばプロセス記述子ブ
ロックに格納される。さらに、好ましくはスケジューリ
ングの試みのたびにインクリメントされるプロセッサご
とのシーケンス番号(66)であるタイム・スタンプ
は、oidによって識別されるグループ記述子ブロックに
ついて所与のプロセッサ上でCFPが最後に読み取られ
た時を示す。各スケジューリング・サイクルで、所与の
スレッド・グループのCFPは、1回だけすなわち、そ
のシーケンス番号(66)がスケジューリング・サイク
ルの現シーケンス番号と一致しない時に、読み取られな
ければならない。
【0042】上の最適化がどれも所望されない場合に
は、以下の近似を使用することができる。これは、独自
oid方法とグループ化oid割当方法のどちらにも適用可能
である。すべての単一のスケジューリング・サイクル
で、選ばれる資格のあるスレッドまたはスレッド・グル
ープのキャッシュ・フットプリントにアクセスするので
はなく、スケジューラは、所与のスレッドまたはスレッ
ド・グループTjについて、周期的(たとえばnスケジ
ューリング・サイクルごと)にCFP(Tj,Pi)を取
得することができる。それ以外のすべてのスケジューリ
ング・サイクルでは、スケジューラは、従来技術の節で
説明したCFPの近似を使用することができる。たとえ
ば、再ロード遷移方法では、スケジューラは、1スケジ
ューリング・サイクルあたり1回だけ読み取る必要があ
るキャッシュ・ミス情報を使用し、マルコフ連鎖を使用
して、最後にCFP(Tj,Pi)を読み取った後のキャ
ッシュ・ミスの数に基づいてCFP(Tj,Pi)の変化
を推定することができる。これによって、スケジューラ
・アルゴリズムに推定要因が導入されるが、従来技術の
節で説明したスケジューリングの実践と比較して、この
方法は、従来技術の節で導入されたものと同一の問題を
こうむらない。まず、CFP(Tj,Pi)は、ごくわず
かな潜在的なΔpにマッピングされるので、互に近いC
FP値は、同一のΔpにマッピングされる可能性が非常
に高い。したがって、CFP(Tj,Pi)の推定のわず
かな誤差は、なんの結果ももたらさない。推定されたC
FP(Tj,Pi)の値は、実際に測定されたCFP(T
j,Pi)に周期的にリセットされるので、わずかな御差
が累算されて大きな誤差になる可能性はなく、Δp計算
の結果に実際には影響しない。
は、以下の近似を使用することができる。これは、独自
oid方法とグループ化oid割当方法のどちらにも適用可能
である。すべての単一のスケジューリング・サイクル
で、選ばれる資格のあるスレッドまたはスレッド・グル
ープのキャッシュ・フットプリントにアクセスするので
はなく、スケジューラは、所与のスレッドまたはスレッ
ド・グループTjについて、周期的(たとえばnスケジ
ューリング・サイクルごと)にCFP(Tj,Pi)を取
得することができる。それ以外のすべてのスケジューリ
ング・サイクルでは、スケジューラは、従来技術の節で
説明したCFPの近似を使用することができる。たとえ
ば、再ロード遷移方法では、スケジューラは、1スケジ
ューリング・サイクルあたり1回だけ読み取る必要があ
るキャッシュ・ミス情報を使用し、マルコフ連鎖を使用
して、最後にCFP(Tj,Pi)を読み取った後のキャ
ッシュ・ミスの数に基づいてCFP(Tj,Pi)の変化
を推定することができる。これによって、スケジューラ
・アルゴリズムに推定要因が導入されるが、従来技術の
節で説明したスケジューリングの実践と比較して、この
方法は、従来技術の節で導入されたものと同一の問題を
こうむらない。まず、CFP(Tj,Pi)は、ごくわず
かな潜在的なΔpにマッピングされるので、互に近いC
FP値は、同一のΔpにマッピングされる可能性が非常
に高い。したがって、CFP(Tj,Pi)の推定のわず
かな誤差は、なんの結果ももたらさない。推定されたC
FP(Tj,Pi)の値は、実際に測定されたCFP(T
j,Pi)に周期的にリセットされるので、わずかな御差
が累算されて大きな誤差になる可能性はなく、Δp計算
の結果に実際には影響しない。
【0043】まとめとして、本発明の構成に関して以下
の事項を開示する。
の事項を開示する。
【0044】(1)各プロセッサが少なくとも1つの関
連キャッシュを有する、複数のプロセッサを有するコン
ピュータ・システムにおいて、 a.前記プロセッサのそれぞれのスレッドのそれぞれに
ついてキャッシュ・フットプリントを測定するステップ
と、 b.ステップaで判定されたそれぞれのキャッシュ・フ
ットプリントを使用することによって、前記プロセッサ
のそれぞれに関する前記スレッドのそれぞれの類縁性を
判定するステップとを含み、前記プロセッサのそれぞれ
での前記スレッドのそれぞれの実行が、少なくともその
類縁性に従って実行のためにスケジューリングされる、
前記プロセッサのそれぞれでの前記スレッドのスケジュ
ーリングの方法。 (2)前記キャッシュ・フットプリント測定が、キャッ
シュ・ミスのたびに更新される、上記(1)に記載の方
法。 (3)前記キャッシュのそれぞれの各スレッドの前記キ
ャッシュ・フットプリントが、前記各キャッシュから前
記各スレッドによって取り出される活動状態のキャッシ
ュラインの数によって測定される、上記(1)に記載の
方法。 (4)スレッドによって取り出される活動状態のキャッ
シュの前記数が、 a.前記キャッシュに取り出されるキャッシュラインを
所有するスレッドを識別する、キャッシュごとの所有権
識別子レジスタと、 b.前記キャッシュラインのそれぞれを所有するスレッ
ドを示す、キャッシュラインごとの所有者識別子と、 c.前記スレッドのうちの1つが前記キャッシュのうち
の対応する1つに関して有する前記キャッシュ・フット
プリントをベクトルの各要素が示す、キャッシュごとの
カウンタ・ベクトルと、 d.前記スレッドのそれぞれの上記カウンタ・ベクトル
の内容を取り出すためのキャッシュごとの方法とを維持
することによって測定される、上記(3)に記載の方
法。 (5)前記スレッドの数が、上記カウンタ・ベクトルの
サイズを超えることができる、上記(4)に記載の方
法。 (6)前記スレッドのそれぞれが、プロセッサに対する
類縁性の関数である実行優先順位を割り当てることによ
って、前記プロセッサに実行のためにスケジューリング
される、上記(1)に記載の方法。 (7)前記スレッドのそれぞれについて、前記実行優先
順位が、スレッドごとにユーザが割り当てる基本優先順
位、時刻およびキャッシュ類縁性の組み合わせである、
上記(1)に記載の方法。 (8)前記プロセッサのうちの1つで実行中のスケジュ
ーラが、前記スレッドのうちの1つが最も高い実行優先
順位を生ずるかどうかの判定を、すべてのスケジューリ
ング・サイクルに前記スレッドの実行優先順位を再計算
するのではなく、前記1つのスレッドの前に計算された
類縁性に基づいて行うことができる、上記(1)に記載
の方法。 (9)a.プロセッサのそれぞれに関するスレッドのそ
れぞれのキャッシュ・フットプリントを測定するステッ
プと、 b.ステップaで判定されたそれぞれのキャッシュ・フ
ットプリントを使用することによって、前記プロセッサ
のそれぞれに関する前記スレッドのそれぞれの類縁性を
判定するステップとを含み、前記プロセッサのそれぞれ
での前記スレッドのそれぞれの実行が、少なくともその
類縁性に従って実行のためにスケジューリングされる、
複数のプロセッサを有するコンピュータ・システムでス
レッドをスケジューリングするための方法ステップを実
行するために計算機によって実行可能な命令のプログラ
ムを具体的に実施する、計算機によって読み取ることの
できるプログラム記憶装置。
連キャッシュを有する、複数のプロセッサを有するコン
ピュータ・システムにおいて、 a.前記プロセッサのそれぞれのスレッドのそれぞれに
ついてキャッシュ・フットプリントを測定するステップ
と、 b.ステップaで判定されたそれぞれのキャッシュ・フ
ットプリントを使用することによって、前記プロセッサ
のそれぞれに関する前記スレッドのそれぞれの類縁性を
判定するステップとを含み、前記プロセッサのそれぞれ
での前記スレッドのそれぞれの実行が、少なくともその
類縁性に従って実行のためにスケジューリングされる、
前記プロセッサのそれぞれでの前記スレッドのスケジュ
ーリングの方法。 (2)前記キャッシュ・フットプリント測定が、キャッ
シュ・ミスのたびに更新される、上記(1)に記載の方
法。 (3)前記キャッシュのそれぞれの各スレッドの前記キ
ャッシュ・フットプリントが、前記各キャッシュから前
記各スレッドによって取り出される活動状態のキャッシ
ュラインの数によって測定される、上記(1)に記載の
方法。 (4)スレッドによって取り出される活動状態のキャッ
シュの前記数が、 a.前記キャッシュに取り出されるキャッシュラインを
所有するスレッドを識別する、キャッシュごとの所有権
識別子レジスタと、 b.前記キャッシュラインのそれぞれを所有するスレッ
ドを示す、キャッシュラインごとの所有者識別子と、 c.前記スレッドのうちの1つが前記キャッシュのうち
の対応する1つに関して有する前記キャッシュ・フット
プリントをベクトルの各要素が示す、キャッシュごとの
カウンタ・ベクトルと、 d.前記スレッドのそれぞれの上記カウンタ・ベクトル
の内容を取り出すためのキャッシュごとの方法とを維持
することによって測定される、上記(3)に記載の方
法。 (5)前記スレッドの数が、上記カウンタ・ベクトルの
サイズを超えることができる、上記(4)に記載の方
法。 (6)前記スレッドのそれぞれが、プロセッサに対する
類縁性の関数である実行優先順位を割り当てることによ
って、前記プロセッサに実行のためにスケジューリング
される、上記(1)に記載の方法。 (7)前記スレッドのそれぞれについて、前記実行優先
順位が、スレッドごとにユーザが割り当てる基本優先順
位、時刻およびキャッシュ類縁性の組み合わせである、
上記(1)に記載の方法。 (8)前記プロセッサのうちの1つで実行中のスケジュ
ーラが、前記スレッドのうちの1つが最も高い実行優先
順位を生ずるかどうかの判定を、すべてのスケジューリ
ング・サイクルに前記スレッドの実行優先順位を再計算
するのではなく、前記1つのスレッドの前に計算された
類縁性に基づいて行うことができる、上記(1)に記載
の方法。 (9)a.プロセッサのそれぞれに関するスレッドのそ
れぞれのキャッシュ・フットプリントを測定するステッ
プと、 b.ステップaで判定されたそれぞれのキャッシュ・フ
ットプリントを使用することによって、前記プロセッサ
のそれぞれに関する前記スレッドのそれぞれの類縁性を
判定するステップとを含み、前記プロセッサのそれぞれ
での前記スレッドのそれぞれの実行が、少なくともその
類縁性に従って実行のためにスケジューリングされる、
複数のプロセッサを有するコンピュータ・システムでス
レッドをスケジューリングするための方法ステップを実
行するために計算機によって実行可能な命令のプログラ
ムを具体的に実施する、計算機によって読み取ることの
できるプログラム記憶装置。
【図1】統合キャッシュ・アーキテクチャを有する共有
メモリ型多重プロセッサの概略を示す図である。
メモリ型多重プロセッサの概略を示す図である。
【図2】本発明の多重プロセッサに統合化されたキャッ
シュ・アーキテクチャの高水準の概略を示す図である。
シュ・アーキテクチャの高水準の概略を示す図である。
【図3】本発明のキャッシュ監視ユニットの内部構造の
概略を示す図である。
概略を示す図である。
【図4】本発明によるキャッシュ監視ユニットの更新動
作の概略を示す図である。
作の概略を示す図である。
【図5】次に実行するスレッドを選択するために、所与
のプロセッサ上のスレッドの実行優先順位を判定するの
に使用される一般的なアルゴリズムを示す図である。
のプロセッサ上のスレッドの実行優先順位を判定するの
に使用される一般的なアルゴリズムを示す図である。
【図6】スレッドのうちの1つのためのディスパッチ待
ち行列と類縁性ベクトルを含み、スケジューラの概略を
示す図である。
ち行列と類縁性ベクトルを含み、スケジューラの概略を
示す図である。
【符号の説明】 20 キャッシュ監視ユニット(CMU) 21 キャッシュ 22 CPU 23 キャッシュ・メモリ・インターフェース 27 キャッシュCMU通信バス(C3バス) 28 CPUキャッシュ・インターフェース 29 CPUへのインターフェース 30 oid-reg 31 oid 32 cacheline_oidベクトル 33 counter_vector 34 C3バス・インターフェース 35 CMU更新ユニット 36 CPUインターフェース
───────────────────────────────────────────────────── フロントページの続き (72)発明者 フベルトゥス・フランケ アメリカ合衆国10567 ニューヨーク州コ ートランド・マナー グリーンローン・ロ ード 27 (72)発明者 プラタプ・チャンドラ・パットナイク アメリカ合衆国10562 ニューヨーク州オ シニング バーンズ・ストリート 213 (72)発明者 オラン・ヤコフ・クリーガー アメリカ合衆国02146 マサチューセッツ 州ブルックライン グリーンオート・スト リート 50 (72)発明者 ユーリー・アンドリー・バランスキ アメリカ合衆国10548 ニューヨーク州モ ントローズ キングズ・フェリー・ロード 63
Claims (9)
- 【請求項1】各プロセッサが少なくとも1つの関連キャ
ッシュを有する、複数のプロセッサを有するコンピュー
タ・システムにおいて、 a.前記プロセッサのそれぞれのスレッドのそれぞれに
ついてキャッシュ・フットプリントを測定するステップ
と、 b.ステップaで判定されたそれぞれのキャッシュ・フ
ットプリントを使用することによって、前記プロセッサ
のそれぞれに関する前記スレッドのそれぞれの類縁性を
判定するステップとを含み、前記プロセッサのそれぞれ
での前記スレッドのそれぞれの実行が、少なくともその
類縁性に従って実行のためにスケジューリングされる、
前記プロセッサのそれぞれでの前記スレッドのスケジュ
ーリングの方法。 - 【請求項2】前記キャッシュ・フットプリント測定が、
キャッシュ・ミスのたびに更新される、請求項1に記載
の方法。 - 【請求項3】前記キャッシュのそれぞれの各スレッドの
前記キャッシュ・フットプリントが、前記各キャッシュ
から前記各スレッドによって取り出される活動状態のキ
ャッシュラインの数によって測定される、請求項1に記
載の方法。 - 【請求項4】スレッドによって取り出される活動状態の
キャッシュの前記数が、 a.前記キャッシュに取り出されるキャッシュラインを
所有するスレッドを識別する、キャッシュごとの所有権
識別子レジスタと、 b.前記キャッシュラインのそれぞれを所有するスレッ
ドを示す、キャッシュラインごとの所有者識別子と、 c.前記スレッドのうちの1つが前記キャッシュのうち
の対応する1つに関して有する前記キャッシュ・フット
プリントをベクトルの各要素が示す、キャッシュごとの
カウンタ・ベクトルと、 d.前記スレッドのそれぞれの上記カウンタ・ベクトル
の内容を取り出すためのキャッシュごとの方法とを維持
することによって測定される、請求項3に記載の方法。 - 【請求項5】前記スレッドの数が、上記カウンタ・ベク
トルのサイズを超えることができる、請求項4に記載の
方法。 - 【請求項6】前記スレッドのそれぞれが、プロセッサに
対する類縁性の関数である実行優先順位を割り当てるこ
とによって、前記プロセッサに実行のためにスケジュー
リングされる、請求項1に記載の方法。 - 【請求項7】前記スレッドのそれぞれについて、前記実
行優先順位が、スレッドごとにユーザが割り当てる基本
優先順位、時刻およびキャッシュ類縁性の組み合わせで
ある、請求項1に記載の方法。 - 【請求項8】前記プロセッサのうちの1つで実行中のス
ケジューラが、前記スレッドのうちの1つが最も高い実
行優先順位を生ずるかどうかの判定を、すべてのスケジ
ューリング・サイクルに前記スレッドの実行優先順位を
再計算するのではなく、前記1つのスレッドの前に計算
された類縁性に基づいて行うことができる、請求項1に
記載の方法。 - 【請求項9】a.プロセッサのそれぞれに関するスレッ
ドのそれぞれのキャッシュ・フットプリントを測定する
ステップと、 b.ステップaで判定されたそれぞれのキャッシュ・フ
ットプリントを使用することによって、前記プロセッサ
のそれぞれに関する前記スレッドのそれぞれの類縁性を
判定するステップとを含み、前記プロセッサのそれぞれ
での前記スレッドのそれぞれの実行が、少なくともその
類縁性に従って実行のためにスケジューリングされる、
複数のプロセッサを有するコンピュータ・システムでス
レッドをスケジューリングするための方法ステップを実
行するために計算機によって実行可能な命令のプログラ
ムを具体的に実施する、計算機によって読み取ることの
できるプログラム記憶装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/098988 | 1998-06-17 | ||
US09/098,988 US6243788B1 (en) | 1998-06-17 | 1998-06-17 | Cache architecture to enable accurate cache sensitivity |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2000148518A true JP2000148518A (ja) | 2000-05-30 |
Family
ID=22271873
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11141208A Pending JP2000148518A (ja) | 1998-06-17 | 1999-05-21 | 正確なキャッシュ感応性を可能にするキャッシュ・ア―キテクチャ |
Country Status (6)
Country | Link |
---|---|
US (1) | US6243788B1 (ja) |
EP (1) | EP0965918A3 (ja) |
JP (1) | JP2000148518A (ja) |
KR (1) | KR100337219B1 (ja) |
CN (1) | CN1133942C (ja) |
TW (1) | TW508533B (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009277243A (ja) * | 2009-07-21 | 2009-11-26 | Panasonic Corp | コンパイラ装置およびオペレーティングシステム |
WO2012029149A1 (ja) * | 2010-09-01 | 2012-03-08 | 富士通株式会社 | 情報処理プログラム、情報処理装置及び情報処理方法 |
JP2013501296A (ja) * | 2009-09-11 | 2013-01-10 | エンパイア テクノロジー ディベロップメント エルエルシー | スレッド移送におけるキャッシュのプレフィル |
US8881157B2 (en) | 2009-09-11 | 2014-11-04 | Empire Technology Development Llc | Allocating threads to cores based on threads falling behind thread completion target deadline |
US9189282B2 (en) | 2009-04-21 | 2015-11-17 | Empire Technology Development Llc | Thread-to-core mapping based on thread deadline, thread demand, and hardware characteristics data collected by a performance counter |
US9569270B2 (en) | 2009-04-21 | 2017-02-14 | Empire Technology Development Llc | Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6216178B1 (en) * | 1998-11-16 | 2001-04-10 | Infineon Technologies Ag | Methods and apparatus for detecting the collision of data on a data bus in case of out-of-order memory accesses of different times of memory access execution |
JP3601677B2 (ja) * | 1999-06-09 | 2004-12-15 | 日本電気株式会社 | タスク処理システム |
US7086053B2 (en) * | 2000-06-12 | 2006-08-01 | Sun Microsystems, Inc. | Method and apparatus for enabling threads to reach a consistent state without explicit thread suspension |
US6826754B1 (en) * | 2000-09-29 | 2004-11-30 | International Business Machines Corporation | Method for eliminating or reducing hang conditions in computer systems |
US6615316B1 (en) * | 2000-11-16 | 2003-09-02 | International Business Machines, Corporation | Using hardware counters to estimate cache warmth for process/thread schedulers |
US7069424B2 (en) * | 2002-01-02 | 2006-06-27 | Intel Corporation | Placing front instruction in replay loop to front to place side instruction into execution stream upon determination of criticality |
CA2474477C (en) | 2002-01-30 | 2011-04-12 | Real Enterprise Solutions Development B.V. | Method of setting priority levels in a multiprogramming computer system with priority scheduling, multiprogramming computer system and program therefor |
US8032891B2 (en) * | 2002-05-20 | 2011-10-04 | Texas Instruments Incorporated | Energy-aware scheduling of application execution |
US6920514B2 (en) * | 2002-10-10 | 2005-07-19 | International Business Machines Corporation | Method, apparatus and system that cache promotion information within a processor separate from instructions and data |
US6901483B2 (en) * | 2002-10-24 | 2005-05-31 | International Business Machines Corporation | Prioritizing and locking removed and subsequently reloaded cache lines |
US6928526B1 (en) | 2002-12-20 | 2005-08-09 | Datadomain, Inc. | Efficient data storage system |
US7496928B2 (en) * | 2003-08-28 | 2009-02-24 | Microsoft Corporation | Method and system for moderating thread priority boost for I/O completion |
US7437538B1 (en) | 2004-06-30 | 2008-10-14 | Sun Microsystems, Inc. | Apparatus and method for reducing execution latency of floating point operations having special case operands |
US7401206B2 (en) * | 2004-06-30 | 2008-07-15 | Sun Microsystems, Inc. | Apparatus and method for fine-grained multithreading in a multipipelined processor core |
US7373489B1 (en) | 2004-06-30 | 2008-05-13 | Sun Microsystems, Inc. | Apparatus and method for floating-point exception prediction and recovery |
US7890734B2 (en) | 2004-06-30 | 2011-02-15 | Open Computing Trust I & II | Mechanism for selecting instructions for execution in a multithreaded processor |
US7631144B1 (en) * | 2004-09-13 | 2009-12-08 | Datadomain, Inc. | Write latency efficient storage system |
US8490101B1 (en) * | 2004-11-29 | 2013-07-16 | Oracle America, Inc. | Thread scheduling in chip multithreading processors |
US8145870B2 (en) | 2004-12-07 | 2012-03-27 | International Business Machines Corporation | System, method and computer program product for application-level cache-mapping awareness and reallocation |
US7721047B2 (en) * | 2004-12-07 | 2010-05-18 | International Business Machines Corporation | System, method and computer program product for application-level cache-mapping awareness and reallocation requests |
US7937709B2 (en) * | 2004-12-29 | 2011-05-03 | Intel Corporation | Synchronizing multiple threads efficiently |
US20070061805A1 (en) * | 2005-09-15 | 2007-03-15 | Brenner Larry B | Method and apparatus for improving thread posting efficiency in a multiprocessor data processing system |
US7818747B1 (en) * | 2005-11-03 | 2010-10-19 | Oracle America, Inc. | Cache-aware scheduling for a chip multithreading processor |
US7870551B2 (en) * | 2006-05-18 | 2011-01-11 | International Business Machines Corporation | Optimization of thread wake up for shared processor partitions |
US7865895B2 (en) * | 2006-05-18 | 2011-01-04 | International Business Machines Corporation | Heuristic based affinity dispatching for shared processor partition dispatching |
US8533710B1 (en) * | 2006-08-31 | 2013-09-10 | Oracle America, Inc. | Using observed thread activity to dynamically tune a virtual machine for responsiveness |
US8356284B2 (en) * | 2006-12-28 | 2013-01-15 | International Business Machines Corporation | Threading model analysis system and method |
US7617375B2 (en) * | 2007-03-28 | 2009-11-10 | International Business Machines Corporation | Workload management in virtualized data processing environment |
US8219995B2 (en) * | 2007-03-28 | 2012-07-10 | International Business Machins Corporation | Capturing hardware statistics for partitions to enable dispatching and scheduling efficiency |
US7698531B2 (en) * | 2007-03-28 | 2010-04-13 | International Business Machines Corporation | Workload management in virtualized data processing environment |
US7698530B2 (en) * | 2007-03-28 | 2010-04-13 | International Business Machines Corporation | Workload management in virtualized data processing environment |
US8438003B2 (en) * | 2007-04-12 | 2013-05-07 | Cadence Design Systems, Inc. | Methods for improved simulation of integrated circuit designs |
US20080271027A1 (en) * | 2007-04-27 | 2008-10-30 | Norton Scott J | Fair share scheduling with hardware multithreading |
US8544014B2 (en) * | 2007-07-24 | 2013-09-24 | Microsoft Corporation | Scheduling threads in multi-core systems |
US8327363B2 (en) * | 2007-07-24 | 2012-12-04 | Microsoft Corporation | Application compatibility in multi-core systems |
US9588810B2 (en) * | 2007-08-08 | 2017-03-07 | Microsoft Technology Licensing, Llc | Parallelism-aware memory request scheduling in shared memory controllers |
US7958313B2 (en) * | 2007-12-18 | 2011-06-07 | International Business Machines Corporation | Target computer processor unit (CPU) determination during cache injection using input/output (I/O) adapter resources |
US8510509B2 (en) * | 2007-12-18 | 2013-08-13 | International Business Machines Corporation | Data transfer to memory over an input/output (I/O) interconnect |
US20090165004A1 (en) * | 2007-12-21 | 2009-06-25 | Jaideep Moses | Resource-aware application scheduling |
US8739165B2 (en) * | 2008-01-22 | 2014-05-27 | Freescale Semiconductor, Inc. | Shared resource based thread scheduling with affinity and/or selectable criteria |
JP5012628B2 (ja) * | 2008-04-04 | 2012-08-29 | 日本電気株式会社 | メモリデータベース、メモリデータベースシステム及びメモリデータベース更新方法 |
US8429665B2 (en) * | 2010-03-19 | 2013-04-23 | Vmware, Inc. | Cache performance prediction, partitioning and scheduling based on cache pressure of threads |
US8799912B2 (en) * | 2009-07-22 | 2014-08-05 | Empire Technology Development Llc | Application selection of memory request scheduling |
US8607234B2 (en) * | 2009-07-22 | 2013-12-10 | Empire Technology Development, Llc | Batch scheduling with thread segregation and per thread type marking caps |
US8839255B2 (en) * | 2009-07-23 | 2014-09-16 | Empire Technology Development Llc | Scheduling of threads by batch scheduling |
US8438574B1 (en) * | 2009-08-14 | 2013-05-07 | Translattice, Inc. | Generating monotone hash preferences |
US8959525B2 (en) * | 2009-10-28 | 2015-02-17 | International Business Machines Corporation | Systems and methods for affinity driven distributed scheduling of parallel computations |
US8904154B2 (en) * | 2010-04-16 | 2014-12-02 | Massachusetts Institute Of Technology | Execution migration |
US8935248B2 (en) | 2010-05-17 | 2015-01-13 | United States Postal Service | Localized data affinity system and hybrid method |
US9015449B2 (en) | 2011-03-27 | 2015-04-21 | International Business Machines Corporation | Region-weighted accounting of multi-threaded processor core according to dispatch state |
US9262181B2 (en) | 2011-05-10 | 2016-02-16 | International Business Machines Corporation | Process grouping for improved cache and memory affinity |
KR20130093995A (ko) * | 2012-02-15 | 2013-08-23 | 한국전자통신연구원 | 계층적 멀티코어 프로세서의 성능 최적화 방법 및 이를 수행하는 멀티코어 프로세서 시스템 |
JP6459784B2 (ja) * | 2015-06-03 | 2019-01-30 | 富士通株式会社 | 並列計算機、マイグレーションプログラム、及び、マイグレーション方法 |
US10282707B2 (en) * | 2015-07-02 | 2019-05-07 | International Business Machines Corporation | Scheduling business process |
GB2540761B (en) * | 2015-07-23 | 2017-12-06 | Advanced Risc Mach Ltd | Cache usage estimation |
US10452397B2 (en) * | 2017-04-01 | 2019-10-22 | Intel Corporation | Efficient multi-context thread distribution |
US10691621B2 (en) * | 2018-04-12 | 2020-06-23 | Sony Interactive Entertainment Inc. | Data cache segregation for spectre mitigation |
US10698737B2 (en) * | 2018-04-26 | 2020-06-30 | Hewlett Packard Enterprise Development Lp | Interoperable neural network operation scheduler |
US11593167B2 (en) | 2019-05-09 | 2023-02-28 | International Business Machines Corporation | Thread embedded cache management |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
JPH05204875A (ja) * | 1992-01-27 | 1993-08-13 | Mitsubishi Electric Corp | スレッドのスケジュール方式 |
US5317738A (en) * | 1992-02-18 | 1994-05-31 | Ncr Corporation | Process affinity scheduling method and apparatus |
US5287508A (en) * | 1992-04-07 | 1994-02-15 | Sun Microsystems, Inc. | Method and apparatus for efficient scheduling in a multiprocessor system |
US5553305A (en) * | 1992-04-14 | 1996-09-03 | International Business Machines Corporation | System for synchronizing execution by a processing element of threads within a process using a state indicator |
US5745778A (en) * | 1994-01-26 | 1998-04-28 | Data General Corporation | Apparatus and method for improved CPU affinity in a multiprocessor system |
US5826081A (en) * | 1996-05-06 | 1998-10-20 | Sun Microsystems, Inc. | Real time thread dispatcher for multiprocessor applications |
US5724586A (en) * | 1996-09-30 | 1998-03-03 | Nec Research Institute, Inc. | Method for improving cache locality of a computer program |
US5974438A (en) * | 1996-12-31 | 1999-10-26 | Compaq Computer Corporation | Scoreboard for cached multi-thread processes |
-
1998
- 1998-06-17 US US09/098,988 patent/US6243788B1/en not_active Expired - Fee Related
-
1999
- 1999-05-17 KR KR1019990017613A patent/KR100337219B1/ko not_active IP Right Cessation
- 1999-05-19 EP EP99303893A patent/EP0965918A3/en not_active Withdrawn
- 1999-05-21 JP JP11141208A patent/JP2000148518A/ja active Pending
- 1999-05-28 TW TW088108865A patent/TW508533B/zh not_active IP Right Cessation
- 1999-05-31 CN CNB991069501A patent/CN1133942C/zh not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9189282B2 (en) | 2009-04-21 | 2015-11-17 | Empire Technology Development Llc | Thread-to-core mapping based on thread deadline, thread demand, and hardware characteristics data collected by a performance counter |
US9569270B2 (en) | 2009-04-21 | 2017-02-14 | Empire Technology Development Llc | Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts |
JP2009277243A (ja) * | 2009-07-21 | 2009-11-26 | Panasonic Corp | コンパイラ装置およびオペレーティングシステム |
JP2013501296A (ja) * | 2009-09-11 | 2013-01-10 | エンパイア テクノロジー ディベロップメント エルエルシー | スレッド移送におけるキャッシュのプレフィル |
US8881157B2 (en) | 2009-09-11 | 2014-11-04 | Empire Technology Development Llc | Allocating threads to cores based on threads falling behind thread completion target deadline |
WO2012029149A1 (ja) * | 2010-09-01 | 2012-03-08 | 富士通株式会社 | 情報処理プログラム、情報処理装置及び情報処理方法 |
JP5354108B2 (ja) * | 2010-09-01 | 2013-11-27 | 富士通株式会社 | 情報処理プログラム、情報処理装置及び情報処理方法 |
US9075721B2 (en) | 2010-09-01 | 2015-07-07 | Fujitsu Limited | Computer readable recording medium having stored therein information processing program, information processing apparatus and information processing method |
Also Published As
Publication number | Publication date |
---|---|
US6243788B1 (en) | 2001-06-05 |
KR20000005675A (ko) | 2000-01-25 |
CN1133942C (zh) | 2004-01-07 |
EP0965918A2 (en) | 1999-12-22 |
EP0965918A3 (en) | 2004-01-21 |
TW508533B (en) | 2002-11-01 |
CN1239249A (zh) | 1999-12-22 |
KR100337219B1 (ko) | 2002-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2000148518A (ja) | 正確なキャッシュ感応性を可能にするキャッシュ・ア―キテクチャ | |
US5287508A (en) | Method and apparatus for efficient scheduling in a multiprocessor system | |
US7177985B1 (en) | Microprocessor with improved data stream prefetching | |
US7991956B2 (en) | Providing application-level information for use in cache management | |
US7213248B2 (en) | High speed promotion mechanism suitable for lock acquisition in a multiprocessor data processing system | |
US7194582B1 (en) | Microprocessor with improved data stream prefetching | |
US7774522B2 (en) | Cache stashing processor control messages | |
Xiao et al. | Dynamic cluster resource allocations for jobs with known and unknown memory demands | |
US20110055479A1 (en) | Thread Compensation For Microarchitectural Contention | |
US20040073759A1 (en) | Method, apparatus and system for acquiring a global promotion facitily utilizing a data-less transaction | |
US20040073766A1 (en) | Method, apparatus and system for allocating and accessing memory-mapped facilities within a data processing system | |
JPH02193248A (ja) | 実記憶管理方法 | |
Soundararajan et al. | Flexible use of memory for replication/migration in cache-coherent DSM multiprocessors | |
CN113874845A (zh) | 多请求者存储器存取管线和仲裁器 | |
US8954969B2 (en) | File system object node management | |
Tabbakh et al. | G-TSC: Timestamp based coherence for GPUs | |
US20040073760A1 (en) | Method, apparatus and system that cache promotion information within a processor separate from instructions and data | |
Jung et al. | DeepUM: Tensor migration and prefetching in unified memory | |
US20040073734A1 (en) | Method, apparatus and system for accessing a global promotion facility through execution of a branch-type instruction | |
US20090320036A1 (en) | File System Object Node Management | |
Awasthi et al. | Managing data placement in memory systems with multiple memory controllers | |
US6842847B2 (en) | Method, apparatus and system for acquiring a plurality of global promotion facilities through execution of an instruction | |
US6430659B1 (en) | Method and means for increasing performance of multiprocessor computer systems by reducing accesses to global memory locations through the use of quanta | |
Boyd-Wickizer et al. | A software approach to unifying multicore caches | |
Liu et al. | Hermes: Improving Server Utilization by Colocation-Aware Runtime Systems |