JP2001521216A - マルチスレッド式プロセッサ・システムでのスレッド切替え制御 - Google Patents

マルチスレッド式プロセッサ・システムでのスレッド切替え制御

Info

Publication number
JP2001521216A
JP2001521216A JP2000517336A JP2000517336A JP2001521216A JP 2001521216 A JP2001521216 A JP 2001521216A JP 2000517336 A JP2000517336 A JP 2000517336A JP 2000517336 A JP2000517336 A JP 2000517336A JP 2001521216 A JP2001521216 A JP 2001521216A
Authority
JP
Japan
Prior art keywords
thread
switch
state
execution
active
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
JP2000517336A
Other languages
English (en)
Other versions
JP3595504B2 (ja
Inventor
ボルケンハーゲン、ジョン、マイケル
アイケマイヤー、リチャード、ジェームズ
フリン、ウィリアム、・トーマス
レヴィンステイン、シェルダン、ベマード
ウォットレング、アンドリュー、ヘンリー
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2001521216A publication Critical patent/JP2001521216A/ja
Application granted granted Critical
Publication of JP3595504B2 publication Critical patent/JP3595504B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 マルチスレッド式プロセッサ(110)とスレッド切替え論理(400)とを含むデータ処理システムで、コンピュータ処理動作を実行するためのシステムおよび方法。 【解決手段】 マルチスレッド式プロセッサ(110)は、独立に実行することのできる命令の複数のスレッドの間で切り替える能力を有する。各スレッドは、その実行状態に依存する状態を、スレッド状態レジスタ(440)内に有する。スレッド切替え論理には、スレッド切替えが発生する可能性がある条件を格納するためのスレッド切替え制御レジスタ(410)が含まれる。スレッド切替えイベントが発生した際に、すべてのスレッドの状態および優先順位が、動的に問い合わされて、どのスレッドをプロセッサで実行されるアクティブ・スレッドにしなければならないかが判定される。スレッド切替え論理は、タイムアウト・レジスタ(430)を有し、これによって、マルチスレッド式プロセッサ内のアクティブ・スレッドの実行がプログラム可能な時間期間を超える時にスレッド切替えが強制される。スレッド切替え論理は、マルチスレッド式プロセッサ内のスレッドの間のスレッド切替えの非生産的な反復を防ぐために、フォワード・プログレス・カウンタ・レジスタ(420)も有する。スレッド切替え論理は、異なるスレッドの優先順位を変更でき、したがって、スレッド切替えイベントを取り替えることができるスレッド切替えマネージャ(460)にも応答する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
関連特許出願データ 本発明は、下記の米国特許出願に関連する:(1)米国特許出願第08/95
8716号明細書、(2)米国特許出願第08/956875号明細書、(3)
米国特許出願第08/958718号明細書、(4)米国特許出願第08/95
6577号明細書、(5)米国特許出願第773572号明細書、(6)米国特
許出願第761378号明細書、(7)米国特許出願第761380号明細書、
(8)米国特許出願第761379号明細書、(9)米国特許出願第47369
2号明細書、(10)米国特許第5778243号明細書。
【0002】
【従来の技術】
本発明は、全般的にはコンピュータ・データ処理システムのための改良された
方法およびその装置に関し、具体的には、改良された高性能マルチスレッド式コ
ンピュータ・データ処理システムと、そのプロセッサのハードウェア内で実施さ
れる方法に関する。
【0003】 現代のコンピュータの基本構造には、外部の世界との間で情報を通信するため
の周辺装置が含まれ、そのような周辺装置は、キーボード、モニタ、テープ駆動
装置、ネットワークに接続された通信回線などとすることができる。やはりコン
ピュータの基本構造に含まれるのが、外部の世界との間でこの情報を受け取り、
処理し、配送するのに必要なハードウェアであり、これには、バス、メモリ・ユ
ニット、入出力コントローラ、記憶装置、少なくとも1つの中央処理装置(CP
U)などが含まれる。CPUは、システムの頭脳である。CPUは、コンピュー
タ・プログラムを含む命令を実行し、他のシステム構成要素の動作を指示する。
【0004】 コンピュータのハードウェアの観点から、ほとんどのシステムは、基本的に同
一の形で動作する。プロセッサは、実際には、算術演算、論理比較、ある位置か
ら別の位置へのデータの移動など、非常に単純な動作をすばやく実行する。これ
らの単純な動作を大量に実行するようにコンピュータに指示するプログラムが、
コンピュータが洗練されたことを行っているという錯覚をもたらす。しかし、コ
ンピュータの新機能または改良された機能としてユーザに知覚されるものは、実
際には、同一の単純な動作をはるかに高速に実行する計算機である場合がある。
したがって、コンピュータ・システムに対する改良を継続するためには、これら
のシステムをさらに高速にする必要がある。
【0005】 コンピュータ・システムの総合速度の尺度の1つをスループットとも称するが
、これは、単位時間あたりに実行される動作の数として測定される。概念上、シ
ステム速度に対するすべての可能な改良のうちで最も単純なものは、さまざまな
構成要素のクロック速度、特にプロセッサのクロック速度を高めることである。
したがって、すべてが2倍の速度で走行するが、それ以外は正確に同一の形で機
能する場合、そのシステムは、所与のタスクを半分の時間で実行することになる
。以前に別個の構成要素から構成されていたコンピュータ・プロセッサは、構成
要素のサイズの縮小と個数の減少とによって大幅に高速に動作するようになり、
最終的には、プロセッサ全体が、単一チップ上の集積回路としてパッケージされ
るようになった。サイズの縮小によって、プロセッサのクロック速度を高めるこ
とが可能になり、したがって、システム速度を高めることが可能になった。
【0006】 集積回路から得られる速度の大幅な向上にもかかわらず、さらに高速のコンピ
ュータ・システムに対する需要がいまだに存在する。ハードウェア設計者は、よ
り大規模の集積、回路のサイズのさらなる縮小および他の技法によって、さらな
る速度の向上を得ることができた。しかし、設計者は、物理的なサイズの縮小を
際限なく継続することは不可能であり、継続的にプロセッサ・クロック速度を高
めることに限界があると考えている。したがって、コンピュータ・システムの総
合速度をさらに改善するために、他の手法に注意が向けられた。
【0007】 クロック速度を変更しなくても、複数のプロセッサを使用することによってシ
ステム速度を改善することが可能である。集積回路チップにパッケージされた個
々のプロセッサのコストが適度であるので、これが実用的になった。スレーブ・
プロセッサを使用すると、作業をCPUからスレーブ・プロセッサにオフロード
することによって、システム速度がかなり改善される。たとえば、スレーブ・プ
ロセッサは、通常は、入出力装置の通信および制御など、反復的で単純な専用プ
ログラムを実行する。複数のCPUを単一のコンピュータ・システム、通常は複
数のユーザを同時にサービスするホストベース・システム内に配置することも可
能である。異なるCPUのそれぞれが、異なるユーザのために異なるタスクを別
々に実行することができ、したがって、複数のタスクを同時に実行するシステム
の総合速度が高まる。しかし、アプリケーション・プログラムなどの単独のタス
クが実行される速度を改善することは、はるかに困難である。複数のCPUの間
でさまざまな機能の実行および結果の配布を調整することは、注意を要する作業
である。スレーブ入出力プロセッサの場合、機能が事前に定義され、制限されて
いるので、これはそれほど困難ではないが、汎用アプリケーション・プログラム
を実行する複数のCPUの場合、システム設計者がプログラムの詳細を事前に知
らないことが一因となって、機能を調整することがより困難になる。ほとんどの
アプリケーション・プログラムは、プロセッサによって実行されるステップの単
一の経路または流れに従う。この単一の経路を複数の並列経路に分割することが
可能である場合もあるが、それを行うための万能のアプリケーションは、まだ研
究中である。一般に、複数のプロセッサによる並列処理のために長いタスクを小
さいタスクに分割することは、コードを記述するソフトウェア・エンジニアによ
って、ケースバイケースで行われる。この、その場限りの手法は、必ずしも反復
的でなく、予測可能でもない商業トランザクションを実行する場合に特に問題が
ある。
【0008】 したがって、複数のプロセッサによって総合的なシステム性能は改善されるが
、個々のCPUの速度を改善する理由はまだ多数存在する。CPUクロック速度
が与えられた場合、1クロック・サイクルあたりに実行される命令の「平均」数
を増やすことによって、CPUの速度すなわち1秒あたりに実行される命令の数
をさらに増やすことが可能である。高性能単一チップ・マイクロプロセッサのた
めの一般的なアーキテクチャが、高速実行のために頻繁に使用される命令の小さ
い簡略されたセットを特徴とする縮小命令セット・コンピュータ(RISC)ア
ーキテクチャであり、これらの単純な動作は、前に述べたものより高速に実行さ
れる。半導体技術が進歩するにつれて、RISCアーキテクチャの目標は、計算
機の各クロック・サイクルに1つまたは複数の命令を実行できるプロセッサの開
発になってきた。1クロック・サイクルあたりに実行される命令の「平均」数を
増やすためのもう1つの手法が、CPU内のハードウェアを変更することである
。この命令あたりのクロック数というスループット尺度は、高性能プロセッサの
アーキテクチャの特徴を表すのに一般的に使用されている。命令パイプライン化
とキャッシュ・メモリが、これを達成することを可能にしたコンピュータ・アー
キテクチャの特徴である。パイプライン命令実行を用いると、前に発行された命
令が完了する前に、後続の命令の実行を開始できるようになる。キャッシュ・メ
モリは、頻繁に使用されるデータおよび他のデータをプロセッサの近くに格納し
、これによって、ほとんどの場合に主記憶のフル・アクセス・タイムを待つこと
なしに、命令実行を継続できるようにするものである。並列に実行する命令を見
つけるためのルック・アヘッド・ハードウェアを有する複数の実行ユニットを用
いるいくつかの改良も示されてきた。
【0009】 通常のRISCプロセッサの性能は、スーパースカラ・コンピュータおよびV
LIW(Very Long Instruction Word)コンピュータでさらに高めることができ
、これらのコンピュータの両方が、1プロセッサ・サイクルあたりに複数の命令
を並列に実行する。これらのアーキテクチャでは、複数の機能ユニットまたは実
行ユニットを設けて、複数のパイプラインを並列に走行させる。スーパースカラ
・アーキテクチャでは、命令は、インオーダー(in-order)またはアウトオブオ
ーダー(out-of-order)で完了できる。インオーダー完了とは、ある命令の前に
ディスパッチされたすべての命令が完了するまでは、その命令を完了できないこ
とを意味する。アウトオブオーダー完了とは、事前に定義された規則が満たされ
る限り、ある命令の前のすべての命令が完了する前に、その命令が完了すること
を許可されることを意味する。
【0010】 スーパースカラ・システムでの命令のインオーダー完了とアウトオブオーダー
完了の両方について、パイプラインは、ある状況の下でストールする。前にディ
スパッチされ、まだ完了していない命令の結果に依存する命令が、パイプライン
のストールを引き起こす可能性がある。たとえば、必要なデータがキャッシュ内
にない、すなわち、キャッシュ・ミスを引き起こすロード/ストア命令に依存す
る命令は、そのデータがキャッシュ内で使用可能になるまでは実行できない。継
続実行のため、また、高いヒット率すなわちデータがキャッシュ内ですぐに使用
可能である回数と比較したデータに対する要求の回数を維持するために必要な、
キャッシュ内の必要不可欠なデータを維持することは、特に大きいデータ構造を
伴う計算の場合には簡単ではない。キャッシュ・ミスは、数サイクルにわたるパ
イプラインのストールを引き起こす可能性があり、データがほとんどの時間に使
用可能でない場合には、メモリ待ち時間の総量が厳しくなる。主記憶に使用され
る記憶装置は、高速になりつつあるが、そのようなメモリ・チップとハイエンド
・プロセッサの間の速度ギャップは、ますます大きくなりつつある。したがって
、現在のハイエンド・プロセッサ設計での実行時間のかなりの量が、キャッシュ
・ミスの解決を待つのに費やされ、これらのメモリ・アクセスの遅れが、プロセ
ッサ実行時間のうちで占める比率がますます大きくなっている。
【0011】 CPU内のハードウェアの効率を改善するためのもう1つの技法が、処理タス
クを、スレッドと称する独立に実行可能な命令のシーケンスに分割することであ
る。この技法は、スレッドが同一のプロセッサによって実行される点を除いて、
異なるプロセッサによる独立実行のために大きいタスクを小さいタスクに分割す
ることに関連する。CPUが、複数の理由のいずれかのために、これらのスレッ
ドのうちの1つの処理または実行を継続できない時には、CPUは、別のスレッ
ドに切り替え、そのスレッドを実行する。コンピュータ・アーキテクチャ界で定
義される用語「マルチスレッディング」は、複数の関連するスレッドに分割され
た1つのタスクを意味するソフトウェアでのこの用語の使用と同一ではない。ア
ーキテクチャ的定義では、スレッドは、独立とすることができる。したがって、
この2つの用語の使用を区別するために、「ハードウェア・マルチスレッディン
グ」が使用されることがしばしばである。本発明の文脈では、用語「マルチスレ
ッディング」は、メモリ待ち時間を許容するためのハードウェア・マルチスレッ
ディングを含む。
【0012】 マルチスレッディングを用いると、プロセッサのパイプラインが、現在のスレ
ッドに関してパイプライン・ストール状態が検出された時に、異なるスレッド上
の有用な作業を行えるようになる。マルチスレッディングを用いると、非パイプ
ライン・アーキテクチャを実施するプロセッサが、現在のスレッドに関してスト
ール状態が検出された時に、別のスレッドに関して有用な作業を行えるようにも
なる。マルチスレッディングには、2つの基本形態がある。従来の形態では、プ
ロセッサ内でN個のスレッドまたは状態を保ち、サイクル単位でスレッドをイン
ターリーブする。これによって、単一のスレッド内の命令が分離されるので、す
べてのパイプライン依存性が除去される。本発明によって考慮される、マルチス
レッディングのもう1つの形態では、いくつかの長い待ち時間のイベントの際に
スレッドをインターリーブする。
【0013】 マルチスレッディングの従来の形態では、スレッドごとのプロセッサ・レジス
タの複製が用いられる。たとえば、商品名PowerPC(商標)の下で販売されるア ーキテクチャを実施するプロセッサがマルチスレッディングを実行するためには
、プロセッサは、N個のスレッドを走行させるためにN個の状態を維持しなけれ
ばならない。したがって、汎用レジスタ、浮動小数点レジスタ、条件レジスタ、
浮動小数点状態および制御レジスタ、カウント・レジスタ、リンク・レジスタ、
例外レジスタ、セーブ/リストア・レジスタおよび特殊目的レジスタが、N回複
製される。さらに、セグメント・ルックアサイド・バッファなどの特殊バッファ
を複製することができ、また、各項目にスレッド番号のタグを付けることができ
、タグを付けない場合にはスレッド切り替えのたびにフラッシュしなければなら
ない。また、一部の分岐予測機構、たとえば相関レジスタとリターン・スタック
なども、複製しなければならない。幸い、レベル1命令キャッシュ(L1 I−
キャッシュ)、レベル1データ・キャッシュ(L1 D−キャッシュ)、命令バ
ッファ、ストア待ち行列、命令ディスパッチャ、機能ユニットまたは実行ユニッ
ト、パイプライン、変換ルックアサイド・バッファ(TLB)および分岐履歴テ
ーブルなどのプロセッサのより大きい機能のうちのいくつかは、複製する必要が
ない。あるスレッドが遅延に遭遇した時に、プロセッサは、すばやく別のスレッ
ドに切り替える。このスレッドの実行は、第1のスレッドでのメモリ遅延とオー
バーラップする。
【0014】 既存のマルチスレッディング技法では、キャッシュ・ミスまたはメモリ参照の
際のスレッド切り替えが説明される。この技法の主な例は、アガーワル(Agarwa
l)他著、「Sparcle: An Evolutionary Design for Large-Scale Multiprocesso
rs」、IEEE Micro Volume 13、No.3、pp.48-60、1993年6月に記載されている。R
ISCアーキテクチャで適用される際には、通常は関数呼出しのサポートに使用
される複数のレジスタ・セットが、複数のスレッドを維持するように変更される
。8つのオーバーラップするレジスタ・ウィンドウが、4つのオーバーラップし
ないレジスタ・セットになるように変更され、各レジスタ・セットは、トラップ
およびメッセージ処理のために予約される。このシステムでは、リモート・メモ
リ要求をもたらす第1レベルのキャッシュ・ミスのそれぞれで発生するスレッド
切替えが開示される。このシステムは、当技術分野での進歩を表すが、現代のプ
ロセッサ設計では、プロセッサに付加される複数のレベルのキャッシュ・メモリ
または高速メモリが使用されることがしばしばである。
【0015】 プロセッサ・システムは、周知のアルゴリズムを使用して、その主メモリ記憶
域のどの部分がキャッシュの各レベルにロードされるかを決定し、したがって、
第1レベルのキャッシュ内に存在しないメモリ参照が発生するたびに、プロセッ
サは、第2レベルまたはさらに上位のレベルのキャッシュからのそのメモリ参照
の取得を試みなければならない。
【0016】 欧州特許EP 0 747 816 A2号明細書に、メモリ待ち時間に起因
する遅延を減らす、改良された高性能マルチスレッド式データ処理システムが記
載されている。このシステムでは、初期スレッド内の少なくとも1つの命令が実
行される。その後、レベル2またはそれより上位のキャッシュ・ミスに応答して
のみ、第1スレッド内の選択された点でのプロセッサの状態が記憶され、第1ス
レッドの実行が打ち切られ、実行のために第2スレッドが選択され、これによっ
て、メモリ待ち時間に起因するプロセッサ遅延が最小になる。
【0017】 IEEE Micro誌、vol.17, no.5, 1997年9月、第12〜19ページに掲載の論文「Sim
ultaneous Multithreading: A Platform for Next-Generation Processors」、 (以下では「Eggers」論文と呼称する)に、同時マルチスレッディングが、同一
サイクル内に異なるスレッドから命令を発行することによって、命令レベルとス
レッド・レベルの両方の並列性を活用する方法に関する一般的な議論が記載され
ている。
【0018】 欧州特許EP 0 527 392 A2号明細書によれば、マルチタスキン
グ・オペレーティング・システム内のアプリケーション・プログラムが、プログ
ラム・スレッドのパラメータを指定することによって、プログラム・スレッドの
実行のスケジュールに影響を及ぼすことが可能になる。このパラメータでは、各
スレッドの優先順位レベルと、そのスレッドが常駐するディスパッチ・クラスが
示される。オペレーティング・システムは、各ディスパッチ・クラスから実行の
ために使用可能な最高の優先順位のスレッドを、プロセッサによる実行のための
走行リスト上に待ち行列化する。走行リスト上の最高の優先順位のスレッドが、
最初に実行される。
【0019】 このスレッドは、ディスパッチ可能であり、実行中であるが、同一のディスパ
ッチ・クラスからの他のスレッドは、他のスレッドがより高い優先順位を有する
場合であっても、この実行中のスレッドが自発的にプロセッサの制御を放棄しな
い限り、そのスレッドに対する優先使用を行うことができない。
【0020】
【発明が解決しようとする課題】
したがって、本発明の目的は、マルチスレッド式データ処理システムで実施さ
れるハードウェア論理およびレジスタを使用する、マルチレベル・キャッシュ・
システムでのメモリ待ち時間に起因する遅延を減らすことのできる、改良された
データ処理システムを提供することである。
【0021】
【課題を解決するための手段】
本発明は、命令の2つのスレッドの間で実行を切り替える能力を有するマルチ
スレッド式プロセッサと、任意選択のスレッド切替え条件のソフトウェア・オー
バーライドを有するハードウェア・レジスタで実施されるスレッド切替え論理と
を提供することによって、この目的に対処する。命令のさまざまなスレッドのさ
まざまな状態を処理することによって、スレッドの間でのプロセッサの使用を最
適化できるようになる。プロセッサが命令の第2のスレッドを実行できるように
することによって、キャッシュ、メモリ、外部入出力、直接アクセス記憶装置な
どのさまざまな記憶要素から第1スレッドのために必要なデータまたは命令を取
り出している時に、そうでなければ遊休状態になるプロセッサ利用度が高まる。
スレッド切替えの条件は、スレッドごとに異なるものとすることができ、また、
ソフトウェア・スレッド制御マネージャの使用によって処理中に変更することが
できる。
【0022】 第1スレッドが、キャッシュ・ミスなどの完了に多数のサイクルを必要とする
待ち時間イベントを有する時に、第2スレッドを処理することができるが、この
待ち時間イベント中に、第2スレッドも、同一のキャッシュ・レベルまたは異な
るキャッシュ・レベルで、ただしはるかに短い時間で完了できるキャッシュ・ミ
スを、経験する可能性がある。
【0023】 命令実行なしでスレッドを切り替えるサイクルの反復で各スレッドがロックす
るスラッシングは、本発明によって、プログレス・カウント・レジスタを実施し
、プログラム可能な最大回数までのスレッド切替えを許容し、それを超えた時点
であるスレッドが実行可能になるまでプロセッサがスレッドの切替えを停止する
ようにする方法を実施することによって解決される。フォワード・プログレス・
レジスタとその閾値によって、命令が実行されずに発生したスレッド切替えの回
数が監視され、その回数が閾値と等しくなった時には、命令が実行されない限り
スレッド切替えがそれ以上発生しなくなる。フォワード・プログレス・カウント
・レジスタの追加の長所は、外部コンピュータ・ネットワークへのアクセスなど
の非常に長い待ち時間イベント用の閾値と、キャッシュ・ミスなどの短い待ち時
間イベント用の別のフォワード・プログレス閾値など、待ち時間イベントに合わ
せてレジスタと閾値をカストマイズできることである。
【0024】 スレッド切替えタイムアウト・レジスタで指定されたサイクル数を待った後に
スレッド切替えを強制することによって、あるスレッドに対するコンピュータ処
理が、長すぎる時間にわたって非アクティブになることが防止される。コンピュ
ータ処理システムは、共用資源の競合から生じるハングを経験しなくなる。スレ
ッド間のプロセッサ・サイクル割当の公平さが達成され、外部割込みおよび他の
プロセッサ外部のイベントに対する最大応答待ち時間が制限される。
【0025】 すばやいスレッド切替えは、スレッドの状態、スレッドの優先順位およびスレ
ッド切替え条件を記憶するハードウェア・レジスタによって達成される。
【0026】 プロセッサ内の1つまたは複数のスレッドの優先順位を、スレッド切替えハー
ドウェア・レジスタを使用して変更することができる。割込み要求からの信号ま
たはソフトウェア命令のいずれかを使用して、状態レジスタの、各スレッドの優
先順位を表すビットを変更する。その後、各スレッドの優先順位に応じて、スレ
ッド切替えを行って、高い優先順のスレッドがより多くの処理サイクルを得られ
るようにすることができる。優先順位変更の長所は、スレッド切替えの頻度を変
更でき、クリティカルなタスクの実行サイクルを増やすことができ、スレッド切
替え待ち時間のために高い優先順位のスレッドが失う処理サイクル数を減らすこ
とができることである。
【0027】 本発明のもう1つの態様は、マルチスレッド式プロセッサ内で実行中のアクテ
ィブ・スレッドであれ、実行のために待機中のバックグラウンド・グラウンドで
あれ、すべてのスレッドの状態を、対応するハードウェア・レジスタに格納する
ことと、マルチスレッド式プロセッサ内で少なくとも1つのアクティブ・スレッ
ドを実行し、アクティブ・スレッドの状態を変更することとを含む、コンピュー
タ処理のための方法である。アクティブ・スレッドの状態の変更は、マルチスレ
ッド式プロセッサに、バックグラウンド・スレッドへ実行を切り替えさせる可能
性がある。
【0028】 マルチプロセッサ複合体でスレッドのいずれかまたはすべての状態を変更する
方法は、複数存在する。スレッドの状態は、そのスレッドが、マルチスレッド式
プロセッサ内のそのスレッドの実行をストールさせる待ち時間イベントを経験す
る時に変更される。スレッドの状態は、そのスレッドまたは別のスレッドの優先
順位が変更された時にも変更される可能性がある。
【0029】 複数のイベントのいずれかまたはそれらの組合せの結果として、マルチスレッ
ド式プロセッサは、別のスレッドに切り替えることができる。たとえば、本明細
書に記載の発明的方法には、少なくとも1つのアクティブ・スレッドが実行され
たマルチプロセッサ・サイクル数をカウントすることと、その実行サイクル数が
タイムアウト値と等しい時に、少なくとも1つのバックグラウンド・スレッドに
実行を切り替えることも含まれる。マルチスレッド式プロセッサのスレッド切替
えをもたらすことのできる、この発明的方法のもう1つのステップは、プロセッ
サ内のスレッドのいずれかのデータまたは命令もしくはその両方が外部供給源か
ら受け取られたことを示す外部割込み信号の受取であり、この外部割込み信号は
、その割込み信号が関係するスレッドの優先順位を変更するものであってもそう
でなくてもよい。
【0030】 この発明的方法には、なかんずく、マルチスレッド式プロセッサ内のスレッド
のいずれかの状態の変更が待ち時間イベントから生じたかどうかを検査すること
と、その待ち時間イベントがスレッド切替えイベントであるかどうかを判定する
ことと、そのスレッド切替えイベントがイネーブルされているかどうかを判定す
ることによって、スレッドの状態の変更が少なくとも1つのバックグラウンド・
スレッドへの実行の切替えを引き起こすかどうかを判定することも含まれる。ス
レッド切替えイベントは、そのスレッド切替えイベントに対応するスレッド切替
え制御レジスタの少なくとも1つのビットがイネーブルされている時にイネーブ
ルされる。
【0031】 マルチスレッド式プロセッサ内のスレッドの状態が変化する場合であっても、
マルチスレッド式プロセッサは、待ち時間イベントがスレッド切替えイベントで
ない時または、スレッド切替えイベントがスレッド切替え制御レジスタでイネー
ブルされていない時または、優先順位の変更が当面の問題に関連しない時には、
別のスレッドに実行を切り替えない場合がある。フォワード・プログレス・カウ
ントも、少なくとも1つのアクティブ・スレッドからのスレッド切替えが発生し
た回数をカウントし、その数とカウント閾値を比較し、その数がカウント閾値と
等しい時に信号を送り、それに応答して実行を切り替えないことによって、スレ
ッド切替えを阻止する。
【0032】 本発明は、少なくとも1つのアクティブ・スレッドの第1状態を少なくとも1
つのハードウェア・レジスタに格納し、少なくとも1つのバックグラウンド・ス
レッドの第2状態を少なくとも1つのハードウェア・レジスタに格納することと
、少なくとも1つのアクティブ・スレッドをマルチスレッド式プロセッサ内で実
行することとを含む、コンピュータ処理の方法でもある。この方法では、(i)
待ち時間イベントのためにアクティブ・スレッドの実行がストールするか、(i
i)アクティブ・スレッドの優先順位がバックグラウンド・スレッドの優先順位
以下に変更されるかという条件のいずれかが発生する場合に、アクティブ・スレ
ッドの第1状態を変更する。その後、この方法では、まずその待ち時間イベント
がスレッド切替えイベントであるかどうかを判定し、次にそのスレッド切替えイ
ベントがイネーブルされているがどうかを判定することによって、アクティブ・
スレッドの第1状態の変更が、マルチスレッド式プロセッサにバックグラウンド
・スレッドへ実行を切り替えさせるかどうかを判定する。この方法では、(i)
アクティブ・スレッドが実行されたプロセッサ・サイクル数をカウントし、実行
サイクル数がタイムアウト値と等しい時に、実行をバックグランド・スレッドに
切り替えること、(ii)外部割込み信号を受け取り、その後、バックグラウン
ド・スレッドに切り替えること、(iii)スレッド切替えイベントに対応する
スレッド切替え制御レジスタの少なくとも1つのビットがイネーブルされている
、または(iv)バックグラウンド・スレッドの優先順位を、アクティブ・スレ
ッドの優先順以上の優先順位に変更すること、という条件のうちの1つの下で、
マルチスレッド式プロセッサが、少なくとも1つのバックグラウンド・スレッド
に実行を切り替えることができることを想定している。マルチスレッド式プロセ
ッサは、(i)待ち時間イベントがスレッド切替えイベントでないか、(ii)
スレッド切替えイベントがイネーブルされていないか、(iii)アクティブ・
スレッドから発生したスレッド切替えの数をカウントし、その後、その数をカウ
ント閾値と比較し、その数がカウント閾値と等しい時にスレッド切替え制御レジ
スタに信号を送ることによるという条件のうちの1つの下で、バックグラウンド
・スレッドに実行を切り替えない可能性がある。
【0033】 本発明は、少なくとも1つのアクティブ・スレッドの状態と少なくとも1つの
バックグラウンド・スレッドの状態とを記憶するための複数のビットを含み、複
数のビットのうちのいくつかが、待ち時間イベントと、それぞれの状態への遷移
が別のスレッドへの実行の切替えをもたらす場合にスレッドの優先順位とを示す
、スレッド状態レジスタでもある。
【0034】 本発明は、少なくとも1つのアクティブ・スレッドを実行することと少なくと
も1つのバックグラウンド・スレッドの状態を記憶することができるマルチスレ
ッド式プロセッサを有する中央処理装置と、複数の実行ユニットと、複数のレジ
スタと、複数のキャッシュ・メモリと、主記憶と、命令ユニットとを含み、実行
ユニット、レジスタ、メモリおよび命令ユニットが機能的に相互接続され、前記
中央処理装置が、さらに、前記マルチスレッド式プロセッサに機能的に接続され
るスレッド切替え論理ユニットおよび記憶域制御ユニットを含む、データ処理シ
ステムでもある。このデータ処理システムには、いずれもがバスを介して中央処
理装置にデータおよび命令を送ることができる、テープ駆動装置、データ記憶装
置、コンピュータ・ネットワーク、光ファイバ通信、ワークステーション、周辺
装置、情報ネットワークのうちの少なくとも1つに接続された少なくとも1つの
入出力プロセッサと、バス・インターフェースと、バスとを含む複数の外部接続
も含まれる。本発明のデータ処理システムでは、少なくとも1つのアクティブ・
スレッドの実行がストールする時に、イベントとその理由が、記憶域制御装置に
通信され、記憶域制御装置が、対応する信号をスレッド切替え論理ユニットに送
り、スレッド切替え論理ユニットが、少なくとも1つのアクティブ・スレッドの
状態を変更し、マルチスレッド式プロセッサがスレッドを切り替え、前記複数の
バックグラウンド・スレッドのうちの1つを実行するかどうかを判定する。
【0035】 本発明は、マルチスレッド式プロセッサ・ユニットと、機能的にマルチスレッ
ド式プロセッサに接続されたスレッド切替え論理ユニットと、機能的にマルチス
レッド式プロセッサおよびスレッド切替え論理ユニットに接続された記憶域制御
ユニットとを含むコンピュータ処理システムでもある。記憶域制御ユニットは、
マルチスレッド式プロセッサのためのデータ、命令および入力を受け取り、デー
タ、命令および入力に従って、スレッド切替え論理ユニットおよびマルチスレッ
ド式プロセッサに信号を送る。これに応答して、スレッド切替え論理は、マルチ
スレッド式プロセッサに信号を出力する。記憶域制御ユニットには、さらに、遷
移キャッシュと、実行用の命令をマルチスレッド式プロセッサ・ユニットに供給
するために少なくとも1つの命令ユニットに接続された少なくとも1つの第1マ
ルチプレクサと、少なくとも1つの実行ユニットにデータを供給するための少な
くとも1つの第2マルチプレクサが含まれる。マルチスレッド式プロセッサ・ユ
ニットには、少なくとも1つのデータ・キャッシュ、少なくとも1つのメモリ、
少なくとも1つの命令ユニットおよび少なくとも1つの実行ユニットが含まれる
。スレッド切替え論理には、さらに、スレッド状態レジスタおよびスレッド切替
え制御レジスタが含まれる。スレッド切替え論理には、さらに、フォワード・プ
ログレス・カウント・レジスタ、スレッド切替えタイムアウト・レジスタおよび
スレッド切替えマネージャを含めることができる。
【0036】 本発明のコンピュータ処理システムには、命令の複数のスレッドのうちの少な
くとも1つのアクティブ・スレッドを実行でき、少なくとも1つのバックグラウ
ンド・スレッドを記憶することのできる少なくとも1つのマルチスレッド式プロ
セッサと、マルチスレッド式プロセッサにデータを供給するための1つのデータ
・キャッシュと、命令キャッシュを有する少なくとも1つの命令ユニットと、キ
ャッシュおよびマルチスレッド式プロセッサにデータおよび命令を供給するため
の少なくとも1つのメモリと、データおよび命令がそこで実行される少なくとも
1つの実行ユニットとを有するマルチスレッド式プロセッサ複合体も含めること
ができる。このコンピュータ処理システムには、さらに、機能的にマルチスレッ
ド式プロセッサに接続された記憶域制御ユニットであって、遷移キャッシュと、
遷移キャッシュまたは命令キャッシュまたはメモリから命令ユニットへ命令を送
るための少なくとも1つの第1マルチプレクサと、データ・キャッシュまたは遷
移キャッシュまたはメモリから少なくとも1つの実行ユニットへデータを送るた
めの少なくとも1つの第2マルチプレクサとを含む記憶域制御ユニットと、少な
くともメモリ、キャッシュ、マルチプレクサおよび実行ユニットへ制御信号を供
給するための少なくとも1つのシーケンサ・ユニットとが含まれる。このコンピ
ュータ処理システムには、機能的にマルチスレッド式プロセッサおよび記憶域制
御ユニットに接続されたスレッド切替え論理ユニットも含まれ、このスレッド切
替え論理ユニットは、シーケンサ・ユニットとの間で制御信号を送受し、このス
レッド切替え論理ユニットには、少なくとも1つのアクティブ・スレッドおよび
バックグラウンド・スレッドの状態を記憶するためのスレッド状態レジスタと、
複数のスレッド切替えイベントを記憶し、イネーブルするためのスレッド切替え
制御レジスタとが含まれる。コンピュータ処理システムのこの配置では、スレッ
ド切替え論理ユニットは、マルチスレッド式プロセッサ内の複数のスレッドの特
徴を表す信号を記憶域制御ユニットから受け取り、これに応答して、マルチスレ
ッド式プロセッサ内の少なくとも1つのアクティブ・スレッドから実行を切り替
えるかどうかを決定する。
【0037】 この発明的コンピュータ処理システムのもう1つの実施例には、命令の少なく
とも1つのアクティブ・スレッドを処理するための手段と、少なくとも1つのア
クティブ・スレッドの状態を記憶するための手段と、命令の少なくとも1つのバ
ックグラウンド・スレッドの状態を記憶するための手段と、少なくとも1つのア
クティブ・スレッドおよび少なくとも1つのバックグラウンド・スレッドの状態
を変更するための手段と、状態を変更する手段に応答して、処理手段が少なくと
も1つのバックグラウンド・スレッドを処理するようにスレッドを切り替えるた
めの手段が含まれる。少なくとも1つのアクティブ・スレッドおよび少なくとも
1つのバックグラウンド・スレッドの状態を変更するための手段には、外部ハー
ドウェア割込み信号またはスレッド切替えマネージャが含まれる。少なくとも1
つのアクティブ・スレッドおよび少なくとも1つのバックグラウンド・スレッド
の状態を変更するための手段には、処理手段が経験する、処理手段による少なく
とも1つのアクティブ・スレッドの処理の継続をストールさせる複数の待ち時間
イベントのうちの1つを知らせるための手段が含まれる。スレッドを切り替える
ための手段には、スレッド切替えイベントになるように複数の待ち時間イベント
のうちの1つをイネーブルするための手段か、スレッドのうちのいずれかの優先
順位を変更するための手段か、処理するための手段をタイムアウトさせる手段が
含まれる。さらに、本発明は、スレッドを切り替えるための手段を無視するため
の手段を提供する。
【0038】 簡単に言うと、本発明は、命令の複数のスレッドのうちの少なくとも1つを実
行することのできるマルチスレッド式プロセッサと、命令の複数のスレッドのそ
れぞれの状態を記憶するための第1の複数のハードウェア・レジスタと、それが
発生した時にマルチスレッド式プロセッサがスレッドの実行を切り替える複数の
第1イベントを記憶するための第2の複数のハードウェア・レジスタとを含み、
第1の複数のハードウェア・レジスタ内の命令の複数のスレッドのうちのいずれ
かの状態を変更する第2イベントが、第2の複数のハードウェア・レジスタでイ
ネーブルされている場合に、コンピュータ処理システムがスレッドを切り替える
、コンピュータ・プロセッサでもある。
【0039】 本発明は、マルチスレッド・データ処理システムで実施されるハードウェア論
理およびレジスタを使用するマルチレベル・キャッシュ・システムでのメモリ待
ち時間から生じる遅延の問題を、スレッドごとに異なるスレッド状態を設け、維
持することによって解決する。本発明では、これらのスレッド状態を互いに比較
すると共に、スレッド切替えの決定を行う。対照的に、前述の従来技術の欧州特
許EP 0 747 816 A号明細書では、予想される待ち時間と固定され
た閾値を比較して、スレッドを切り替えるかどうかを決定する。従来技術の「Eg
gers」論文では、全般的に、「同時マルチスレッディング」の概念が説明されて
いるが、これは、本発明で提示されるスレッド切替えの問題に対処していない。
前述の従来技術の欧州特許EP 0 527 392 A号明細書には、スレッ
ドの優先順位を調節するための機能が記載されているが、スレッド切替えをサポ
ートするためにスレッドごとに異なるスレッド状態を設け、維持するための本発
明の方法およびシステムを予期していない。
【0040】 本発明の他の目的、特徴および特性と、構造の関連する要素の方法、動作およ
び機能と、部分の組合せと、製造の経済性とは、好ましい実施例の以下の詳細な
説明および添付図面から明らかになる。添付図面は、すべてが本明細書の一部を
形成し、同様の符号は、さまざまな図面の対応する部分を示す。
【0041】 本発明自体、ならびにその使用の好ましい態様、さらなる目的および長所は、
下記の添付図面と共に例の実施例の詳細な説明を参照することによって最もよく
理解される。
【0042】
【発明の実施の形態】
ここで図面、具体的には図1を参照すると、本発明の方法およびシステムの実
施に使用することのできる、コンピュータ・データ処理システム10の高水準ブ
ロック図が示されている。本発明を使用することのできるコンピュータ・データ
処理システム10の主要なハードウェア構成要素および相互接続が、図1に示さ
れている。命令を処理するための中央処理装置(CPU)100は、キャッシュ
120、130および150に結合される。命令キャッシュ150には、CPU
100による実行のための命令が格納される。データ・キャッシュ120には、
CPU100によって使用されるデータが格納され、キャッシュ130には、C
PU100によって使用されるデータおよび命令の両方を格納することができ、
たとえば、キャッシュ130は、L2キャッシュとすることができる。キャッシ
ュは、主記憶140内のランダム・アクセス・メモリと通信する。CPU100
および主記憶140も、バス・インターフェース152を介してシステム・バス
155と通信する。さまざまな入出力プロセッサ(IOP)160ないし168
が、システム・バス155に付加され、直接アクセス記憶装置(DASD)17
0、テープ駆動装置172、遠隔通信回線174、ワークステーション176お
よびプリンタ178などのさまざまな記憶装置および入出力装置との通信をサポ
ートする。図1は、高水準でコンピュータ・データ処理システム10の代表的な
構成要素を示す目的のものであり、そのような構成要素の数と種類を変更できる
ことを理解されたい。
【0043】 CPU100内では、プロセッサ・コア110に、特化した機能ユニットが含
まれ、これらの機能ユニットのそれぞれが、命令のシーケンシング、整数を用い
る演算の実行、実数を用いる演算の実行、アドレス可能記憶域と論理レジスタ・
アレイの間の値の転送などのプリミティブ動作を実行する。図2は、コンピュー
タ・データ処理システム10の他の構成要素に関連するプロセッサ・コア110
の詳細を示す図である。好ましい実施例では、データ処理システム10のプロセ
ッサ・コア110は、単一集積回路のパイプライン式スーパースカラ・マイクロ
プロセッサであり、これは、たとえばIBM社によって販売されるPowerPC(商 標)604マイクロプロセッサ・チップなど、商品名PowerPC(商標)の下で販 売されるRISCプロセッサの系列などのコンピュータ・アーキテクチャを使用
して実施できる。
【0044】 下で述べるように、データ処理システム10には、さまざまなユニット、レジ
スタ、バッファ、メモリおよび他のセクションが含まれることが好ましく、これ
らのすべてが集積回路によって形成されることが好ましい。図では、さまざまな
データ経路が簡略化されていることを理解されたい。実際には、さまざまな構成
要素から出入りする多数の別々の並列のデータ経路がある。さらに、本明細書に
記載の発明に密接に関係しないさまざまな構成要素が省略されているが、追加機
能のためにプロセッサに追加ユニットが含まれることを理解されたい。データ処
理システム10は、縮小命令セット・コンピューティング(RISC)技法また
は他のコンピューティング技法に従って動作することができる。
【0045】 図2からわかるように、データ処理システム10には、プロセッサ・コア11
0、レベル1データ・キャッシュ(L1 D−キャッシュ)120、レベル2(
L2)キャッシュ130、遷移キャッシュ210、主記憶140およびレベル1
命令キャッシュ(L1 I−キャッシュ)150が含まれることが好ましく、こ
れらのすべてが、記憶域制御ユニット200へのさまざまなバス接続を使用して
機能的に相互接続される。図1からわかるように、記憶域制御ユニット200に
は、L1 D−キャッシュ120およびL2キャッシュ130と、主記憶140
と、複数の実行ユニットとを相互接続するための遷移キャッシュ210が含まれ
る。L1 D−キャッシュ120とL1 I−キャッシュ150は、プロセッサ
100の一部としてチップ上に設けられることが好ましく、主記憶140とL2
キャッシュ130は、チップ外に設けられる。メモリ・システム140は、プロ
セッサ・コア100の内部または外部とすることのできるランダム・アクセス・
メイン・メモリ、プロセッサ・コア100の外部の他のデータ・バッファおよび
キャッシュ(存在する場合)、および、たとえば図1に示されたDASD170
、テープ駆動装置172、ワークステーション176などの他の外部メモリを表
す目的のものである。L2キャッシュ130は、主記憶140より高速のメモリ
・システムであることが好ましく、選択されたデータをL2キャッシュ130に
格納することによって、主記憶140への参照の結果として発生するメモリ待ち
時間を最小にすることができる。図1からわかるように、L2キャッシュ130
および主記憶140は、L1 I−キャッシュ150に直接に、また記憶域制御
ユニット200を介して命令ユニット220に接続される。
【0046】 図2からわかるように、L1 I−キャッシュ150からの命令は、命令ユニ
ット220に出力されることが好ましく、命令ユニット220は、本発明の方法
およびシステムに従って、さまざまなサブプロセッサ・ユニット、たとえば分岐
ユニット260、固定小数点ユニット270、記憶域制御ユニット200、浮動
小数点ユニット280および、データ処理システム10のアーキテクチャによっ
て指定される他のユニットによる複数のスレッドの実行を制御する。当業者は、
図2に示されたさまざまな実行ユニットのほかに、現代のスーパースカラ・マイ
クロプロセッサ・システムに、本発明の趣旨および範囲から逸脱せずに追加する
ことのできるそのような実行ユニットのそれぞれの複数の版が含まれることがし
ばしばであることを了解するであろう。これらのユニットのほとんどは、入力と
して、汎用レジスタ(GPR)272および浮動小数点レジスタ(FPR)28
2などのさまざまなレジスタからのソース・オペランド情報を有する。さらに、
複数の特殊目的レジスタ(SPR)274を使用することができる。図2からわ
かるように、記憶域制御ユニット200と遷移キャッシュ210は、汎用レジス
タ272および浮動小数点レジスタ282に直接に接続される。汎用レジスタ2
72は、特殊目的レジスタ274に接続される。
【0047】 このマルチスレッド式プロセッサ100に固有の機能ハードウェア・ユニット
の中に、スレッド切替え論理400と遷移キャッシュ210がある。スレッド切
替え論理400には、どのスレッドをアクティブ・スレッドまたは実行中のスレ
ッドにするかを決定するさまざまなレジスタが含まれる。スレッド切替え論理4
00は、機能的に、記憶域制御ユニット200と、実行ユニット260、270
および280と、命令ユニット220に接続される。記憶域制御ユニット200
内の遷移キャッシュ210は、マルチスレッディングを実施できなければならな
い。記憶域制御ユニット200と遷移キャッシュ210は、1スレッドあたり少
なくとも1つの未処理のデータ要求を許容することが好ましい。したがって、た
とえばL1 D−キャッシュ・ミスの発生に応答して、第1スレッドが延期され
る時に、第2スレッドが、そこに存在するデータについてL1 D−キャッシュ
120にアクセスできるようになる。第2スレッドも、L1 D−キャッシュ・
ミスをもたらす場合には、別のデータ要求が発行され、したがって、複数のデー
タ要求を、記憶域制御ユニット200および遷移キャッシュ210内で維持しな
ければならない。遷移キャッシュ210は、米国特許出願第08/761378
号明細書の遷移キャッシュであることが好ましい。記憶域制御ユニット200と
、実行ユニット260、270および280と、命令ユニット220は、すべて
が機能的にスレッド切替え論理400に接続され、スレッド切替え論理400は
、どのスレッドを実行するかを決定する。
【0048】 図2からわかるように、バス205は、たとえば記憶域制御ユニット200へ
のデータ要求および命令ユニット220へのL2キャッシュ130ミスなどの通
信のために、記憶域制御ユニット200と命令ユニット220の間に設けられる
。さらに、変換ルックアサイド・バッファ(TLB)250が設けられ、これに
は、仮想アドレスから実アドレスへのマッピングが格納される。図示されてはい
ないが、本発明では、変換ルックアサイド・バッファ250に類似の形で動作す
るセグメント・ルックアサイド・バッファなどの追加の高水準メモリ・マッピン
グ・バッファを設けることができる。
【0049】 図3は、記憶域制御ユニット200を詳細に示す図であり、名前から暗示され
るように、このユニットは、さまざまなキャッシュ、バッファおよび主記憶を含
むさまざまな記憶ユニットからのデータおよび命令の入出力を制御する。図3か
らわかるように、記憶域制御ユニット200には、機能的にL1 D−キャッシ
ュ120、マルチプレクサ360、L2キャッシュ130および主記憶140に
接続された遷移キャッシュ210が含まれる。さらに、遷移キャッシュ210は
、シーケンサ350から制御信号を受け取る。シーケンサ350には、命令また
はデータの取出要求を処理するために、複数、好ましくは3つのシーケンサが含
まれる。シーケンサ350は、遷移キャッシュ210およびL2キャッシュ13
0に制御信号を出力し、主記憶140との間で制御信号を送受する。
【0050】 図3に示された記憶域制御ユニット200内のマルチプレクサ360は、L1
D−キャッシュ120、遷移キャッシュ210、L2キャッシュ130および
主記憶140からデータを受け取り、データをメモリに格納する場合には、実行
ユニット270および280からデータを受け取る。これらの供給源のうちの1
つからのデータは、マルチプレクサ360によって選択され、シーケンサ350
から受け取った選択制御信号に応答して、L1 D−キャッシュ120または実
行ユニットに出力される。さらに、図3からわかるように、シーケンサ350は
、第2のマルチプレクサ370を制御する選択信号を出力する。シーケンサ35
0からのこの選択信号に基づいて、マルチプレクサ370は、L2キャッシュ1
30または主記憶140からのデータを、L1 I−キャッシュ150または命
令ユニット220に出力する。上で述べた制御信号および選択信号を作る際に、
シーケンサ350は、L1 D−キャッシュ120用のL1ディレクトリ320
とL2キャッシュ130用のL2ディレクトリ330にアクセスし、これらを更
新する。
【0051】 本明細書に記載のプロセッサのマルチスレッディング能力に関して、記憶域制
御ユニット200のシーケンサ350は、スレッド切替え論理400にも信号を
出力して、データ要求および命令要求の状態を示す。したがって、キャッシュ1
20、130および150と、主記憶140と、変換ルックアサイド・バッファ
250からのフィードバックが、シーケンサ350に送られ、その後、スレッド
切替え論理400に通信され、スレッド切替え論理400は、下で述べるように
スレッド切替えをもたらすことができる。マルチスレッド式プロセッサ内でのス
レッド切替えを引き起こすように設計されたイベントが発生する装置は、機能的
にスレッド切替え論理400に接続されることに留意されたい。
【0052】 図4は、スレッドを切り替えるかどうかを判定し、切り替える場合にはどのス
レッドに切り替えるかを判定するスレッド切替え論理ハードウェア400の論理
表現およびブロック図である。記憶域制御ユニット200と命令ユニット220
は、スレッド切替え論理400と相互接続される。スレッド切替え論理400は
、命令ユニット220に組み込まれることが好ましいが、多数のスレッドがある
場合には、スレッド切替え論理400の複雑さが増し、その結果、スレッド切替
え論理が命令ユニット220の外部になる場合がある。説明を簡単にするために
、スレッド切替え論理400は、記憶域制御ユニット200の外部にあるものと
して図示した。
【0053】 この実施例でスレッドの切替えをもたらすいくつかのイベントは、記憶域制御
ユニット200のシーケンサ350からスレッド切替え論理400へ、信号線4
70、472、474、476、478、480、482、484および486
を介して通信される。他の待ち時間イベントが、スレッド切替えを引き起こす可
能性があるが、このリストは、網羅的であることを意図したものではなく、スレ
ッド切替えを実施できる方法を代表するものにすぎない。命令ユニット220内
にない第1スレッドT0または第2スレッドT1のいずれかによる命令の要求は
、それぞれ図4の符号470または472によって示されるスレッド切替えをも
たらす可能性があるイベントである。信号線474は、T0またはT1のいずれ
かであるアクティブ・スレッドが、L1 D−キャッシュ120ミスを経験する
時を示す。スレッドT0またはT1のいずれかに関するL2キャッシュ130の
キャッシュ・ミスは、それぞれ信号線476または478によって知らされる。
信号線480および482は、それぞれT0スレッドまたはT1スレッドの継続
実行のためにデータが返される時にアクティブになる。変換ルックアサイド・バ
ッファ・ミスおよびテーブル・ウォークの完了は、それぞれ信号線484または
486によって示される。
【0054】 これらのイベントは、すべてがスレッド切替え論理400に供給され、具体的
には、スレッド状態レジスタ440およびスレッド切替えコントローラ450に
供給される。スレッド切替え論理400は、スレッドごとに1つのスレッド状態
レジスタを有する。本明細書に記載の実施例では、2つのスレッドが表現される
ので、第1スレッド用T0のT0状態レジスタ442と、第2スレッドT1用の
T1状態レジスタ444があり、これらを本明細書で説明する。スレッド切替え
論理400には、どのイベントがスレッド切替えをもたらすかを制御するスレッ
ド切替え制御レジスタ410が含まれる。たとえば、スレッド切替え制御レジス
タ410は、状態変化がスレッド切替えコントローラ450によって見られるよ
うにするイベントをブロックし、その結果、ブロックされたイベントの結果とし
てスレッドが切り替えられなくすることができる。スレッド切替え制御レジスタ
410は、米国特許出願第08/958716号明細書の主題である。フォワー
ド・プログレス・カウント・レジスタ420は、スラッシングの防止に使用され
、スレッド切替え制御レジスタ410に含めることができる。フォワード・プロ
グレス・カウント・レジスタ420は、米国特許出願第08/956875号明
細書の主題である。スレッド切替えタイムアウト・レジスタ430は、米国特許
出願第08/956577号明細書の主題であり、これによって、公平さとライ
ブロック発行が割り振られる。またスレッド優先順位は、米国特許出願第08/
958718号明細書の主題であるソフトウェア460を使用して変更すること
ができる。制限的ではないが、最後に、スレッド切替えコントローラ450には
、スレッドを切り替えるかどうかと、どのスレッドにどの状況の下で切り替える
のかを実際に判定するすべての論理の頂点を表す無数の論理ゲートが含まれる。
これらの論理構成要素とその機能のそれぞれを、さらに詳細に説明する。
【0055】 スレッド状態レジスタ スレッド状態レジスタ440には、各スレッドの状態レジスタが含まれ、名前
からわかるように、対応するスレッドの状態が格納される。この例では、T0ス
レッド状態レジスタ442とT1スレッド状態レジスタ444がある。ビットの
数と、各スレッドの状態を記述するための特定のビットの割振りは、特定のアー
キテクチャおよびスレッド切替え優先順位方式に合わせてカスタマイズすること
ができる。2つのスレッドを有するマルチスレッド式プロセッサのスレッド状態
レジスタ442および444のビットの割振りの例を、下の表に示す。 スレッド状態レジスタのビット割振り (0) 命令/データ 0=命令 1=データ (1:2) ミス・タイプ・シーケンサ 00=なし 01=変換ルックアサイド・バッファ・ミス(I/Dのビット0を検査) 10=L1キャッシュ・ミス 11=L2キャッシュ・ミス (3) 遷移 0=現在の状態への遷移はスレッド切替えをもたらさない 1=現在の状態への遷移はスレッド切替えをもたらす (4:7) 予約済み (8) 0=ロード 1=ストア (9:14) 予約済み (15:17) フォワード・プログレス・カウンタ 111=リセット(このスレッド中に命令が完了した) 000=命令完了なしでのこのスレッドの1回目の実行 001=命令完了なしでのこのスレッドの2回目の実行 010=命令完了なしでのこのスレッドの3回目の実行 011=命令完了なしでのこのスレッドの4回目の実行 100=命令完了なしでのこのスレッドの5回目の実行 (18:19) 優先順位(ソフトウェアによって設定可能) 00=中 01=低 10=高 11=<不正> (20:31) 予約済み (32:63) 64ビット実施形態の場合に予約済み
【0056】 上で説明した実施例では、ビット0によって、ミスまたはプロセッサが実行を
ストールした理由が、命令のロードと、データのロードまたはストアとのどちら
の要求の結果であるかが識別される。ビット1および2は、図5の説明でさらに
説明するように、要求された情報が使用可能でなかったかどうかと、使用可能で
なかった場合に、どのハードウェアから使用可能でなかったか、すなわち、デー
タまたは命令の変換されたアドレスが変換ルックアサイド・バッファ250にな
かったのか、データまたは命令自体がL1 D−キャッシュ120またはL2キ
ャッシュ130になかったのかを示す。ビット3は、スレッドの状態の変化が、
スレッド切替えをもたらすかどうかを示す。スレッドは、スレッド切替えをもた
らさずに状態を変更することができる。たとえば、スレッドT1がL1キャッシ
ュ・ミスを経験する時にスレッド切替えが発生する場合に、スレッドT1がL2
キャッシュ・ミスを経験する場合、L1キャッシュ・ミスの際にすでにスレッド
が切り替えられているので、スレッド切替えはない。しかし、T1の状態は、ま
だ変化する。その代わりに、選択によって、スレッド切替え論理400が、L1
キャッシュ・ミスの際に切り替えないように構成またはプログラミングされる場
合には、スレッドがL1キャッシュ・ミスを経験した時に、スレッドの状態が変
化してもスレッド切替えはない。スレッド状態レジスタ442および444のビ
ット8は、特定のスレッドによって要求された情報が、プロセッサ・コアにロー
ドされるのか、プロセッサ・コアからキャッシュまたは主記憶にストアされるの
かに割り当てられる。ビット15ないし17は、フォワード・プログレス・カウ
ント・レジスタ420に関して後で説明するように、スラッシングの防止に割り
振られる。ビット18および19は、スレッドの優先順位を示すために、ハード
ウェアで設定するか、ソフトウェアによって設定することができる。
【0057】 図5は、データ処理システム10によって処理されるスレッドの現在の実施例
での4つの状態を表し、これらの状態は、スレッド状態レジスタ440のビット
位置1:2に格納される。状態00は、「実行可能」状態すなわち、必要なすべ
てのデータおよび命令が使用可能であるので、スレッドの処理の準備ができてい
ることを表す。状態10は、スレッドがL1 D−キャッシュ120にデータが
返されるかL1 I−キャッシュ150に命令が返されるかのいずれかを待って
いるので、プロセッサ内でのスレッドの実行がストールしているスレッド状態を
表す。状態11は、スレッドがL2キャッシュ130にデータが返されるのを待
っていることを表す。状態01は、テーブル・ウォークと称する、変換ルックア
サイド・バッファ250でのミスがある、すなわち、仮想アドレスがエラー状態
であったか、使用可能でなかったことを示す。図5には、スレッド状態の階層も
示されており、スレッドの実行の準備ができていることを示す状態00が、最も
高い優先順位を有する。短い待ち時間イベントには、高い優先順位を割り当てる
ことが好ましい。
【0058】 図5には、データがさまざまな供給源から取り出される時の状態の変化も示さ
れている。スレッドT0の正常に割り込まれない実行は、ブロック510で状態
00として表されている。L1 D−キャッシュまたはI−キャッシュのミスが
発生した場合、スレッドの状態は、記憶域制御ユニット200からの信号線47
4(図4)または命令ユニット220からの信号線470(図4)で送られる信
号に従って、ブロック512に示されている状態10に変化する。要求されたデ
ータまたは命令が、L2キャッシュ130内にあり、取り出される場合には、ブ
ロック510のT0の正常実行が再開される。同様に、図5のブロック514は
、L2キャッシュ・ミスを表し、これによって、T0またはT1のいずれかのス
レッドの状態が、記憶域制御ユニット200が信号線476または478(図4
)でミスの信号を送る時に、状態11に変化する。信号線480および482(
図4)に示されているように、L2キャッシュ内の命令またはデータが、主記憶
140から取り出され、プロセッサ・コア100にロードされる時には、状態は
、やはりブロック510の状態00に戻る。要求された情報の仮想アドレスが変
換ルックアサイド・バッファ250内で使用可能でない時には、ブロック516
に示されるように、TLBミスまたは状態01として、記憶域制御ユニット20
0が、信号線484(図4)を介してスレッド・レジスタ440に通信する。そ
のアドレスが使用可能になる時または、信号線486(図4)上で記憶域制御ユ
ニット200によって送られるデータ記憶域割り込み命令がある場合には、スレ
ッドの状態は、状態00に戻り、実行の準備ができる。
【0059】 状態の数と、各状態が表すものは、コンピュータ設計者が自由に選択できる。
たとえば、あるスレッドが、L1 I−キャッシュ・ミスとL1 D−キャッシ
ュ・ミスなど、複数のL1キャッシュ・ミスを有する場合には、キャッシュ・ミ
スのタイプのそれぞれに別々の状態を割り当てることができる。その代わりに、
単一のスレッド状態を割り当てて、複数のイベントまたはできごとを表すことが
できる。
【0060】 等しい優先順位を有する2つのスレッドについて、スレッドを切り替えるかど
うかを判定するスレッド切替えアルゴリズムの例を示す。このアルゴリズムは、
本発明の教示に従って、より多くのスレッドおよびスレッド切替え条件のために
それ相応に拡張し、変更することができる。スレッド切替えアルゴリズムによる
、スレッド状態レジスタ440(図4)に格納された各スレッドの状態と各スレ
ッドの優先順位との間の相互作用は、各サイクルに動的に問い合わされる。アク
ティブ・スレッドT0がL1ミスを有する場合に、このアルゴリズムは、休止ス
レッドT1がL2ミスの解決を待っている場合を除いて、休止スレッドT1への
スレッド切替えを引き起こす。切替えが発生せず、アクティブ・スレッドT0の
L1キャッシュ・ミスがL2キャッシュ・ミスになった場合には、このアルゴリ
ズムは、プロセッサに、T1の状態に無関係に休止スレッドT1に切り替えるよ
うに指示する。両方のスレッドがL2キャッシュ・ミスの解決を待っている場合
には、最初にL2ミスを解決されたスレッドが、アクティブ・スレッドになる。
すべての切替え決定時に、行われる処置は、最も可能性の高い事例に合わせて最
適化され、最良の性能をもたらす。L2キャッシュ・ミスから生じるスレッド切
替えは、性能の低下をもたらす余分なスレッド切替えが発生しない場合に、他方
のスレッドの状態次第である。
【0061】 スレッド切替え制御レジスタ どのマルチスレッド式プロセッサにも、スレッド切替えに関連する待ち時間と
性能のペナルティが存在する。本明細書で説明する好ましい実施例のマルチスレ
ッド式プロセッサでは、この待ち時間に、現在のスレッドに割り込むことができ
、現在のスレッドが次に呼び出された時に正しく再始動できる点まで現在のスレ
ッドの実行を完了するのに必要な時間と、スレッド固有のハードウェア機能を現
在のスレッドの状態から新しいスレッドの状態に切り替えるのに必要な時間と、
新しいスレッドを再始動し、その実行を開始するのに必要な時間が含まれる。本
発明と共に動作可能なスレッド固有のハードウェア機能には、上で説明したスレ
ッド状態レジスタと、米国特許第5778243号明細書に記載のメモリ・セル
が含まれることが好ましい。粒度の粗いマルチスレッド式データ処理システムで
最適の性能を達成するために、スレッド切替えを生成するイベントの待ち時間は
、通常の単一スレッド・モードに対して、マルチスレッド・モードでのスレッド
切替えに関連する性能コストより大きくなければならない。
【0062】 スレッド切替えを生成するのに使用されるイベントの待ち時間は、ハードウェ
アとソフトウェアの両方に依存する。たとえば、マルチスレッド式プロセッサの
特定のハードウェア検討事項には、プロセッサ・チップの外部のL2キャッシュ
の実施に使用される外部SRAMの速度が含まれる。L2キャッシュのSRAM
が高速になると、L1ミスの平均待ち時間が減るが、SRAMが低速になると、
L1ミスの平均待ち時間が増える。したがって、あるスレッド切替えイベントが
、スレッド切替えのペナルティより大きい外部L2キャッシュ・データ・アクセ
ス待ち時間を有するハードウェアのL1キャッシュ・ミスとして定義される場合
に、高性能が得られる。特定のソフトウェア・コードの特性が、スレッド切替え
イベントの待ち時間にどのように影響するかの例として、コードのL2キャッシ
ュのヒット対ミス比すなわち、データがL2キャッシュにないので主記憶から取
り出さなければならない回数と比較した、データが実際にL2キャッシュ内で使
用可能である回数を検討されたい。L2ヒット対ミス比が高いと、L1キャッシ
ュ・ミスが、より長い待ち時間のL2ミスをほとんどもたらさないので、L1キ
ャッシュ・ミスの平均待ち時間が減る。L2ヒット対ミス比が低いと、より長い
待ち時間のL2ミスをもたらすL1ミスが増えるので、L1ミスの平均待ち時間
が増える。したがって、実行中のコードが高いL2ヒット対ミス比を有する場合
には、L2キャッシュ・データ・アクセス待ち時間がスレッド切替えペナルティ
より小さいので、スレッド切替えイベントとしてのL1ミスを使用不能にするこ
とができる。低いL2ヒット対ミス比を有するソフトウェア・コードを実行する
時には、L1キャッシュ・ミスが、より長い待ち時間のL2キャッシュ・ミスに
なる可能性が高いので、L1キャッシュ・ミスをスレッド切替えイベントとして
使用可能にすることになる。
【0063】 いくつかのタイプの待ち時間イベントは、簡単には検出できない。たとえば、
いくつかのシステムでは、キャッシュ・ミスが発生した時に、L2キャッシュが
、命令ユニットに信号を出力する。しかし、他のL2キャッシュは、たとえばL
2キャッシュ・コントローラがプロセッサとは別のチップ上にあり、したがって
、プロセッサが状態変化を簡単に判定できない場合に、そのような信号を出力し
ない。これらのアーキテクチャでは、プロセッサに、未処理のL1キャッシュ・
ミスごとに1つのサイクル・カウンタを含めることができる。所定のサイクル数
の前にミス・データがL2キャッシュから返されない場合には、プロセッサは、
L2キャッシュ・ミスがあったかのように動作し、スレッドの状態をそれ相応に
変更する。このアルゴリズムは、複数の別個のタイプの待ち時間が存在する他の
場合にも適用可能である。例のみとして、プロセッサでのL2キャッシュ・ミス
の場合、主記憶からのデータの待ち時間は、別のプロセッサからのデータの待ち
時間と大きく異なる場合がある。これらの2つのイベントに、スレッド状態レジ
スタ内で異なる状態を割り当てることができる。これらの状態を区別する信号が
存在しない場合には、カウンタを使用して、スレッドがL2キャッシュ・ミスに
遭遇した後に、スレッドがどの状態にならなければならないかを推定することが
できる。
【0064】 スレッド切替え制御レジスタ410は、スレッド切替えを生成するイベントを
選択するソフトウェア・プログラム可能レジスタであり、定義されたスレッド切
替え制御イベントのそれぞれについて別々のイネーブル・ビットを有する。本明
細書で説明する実施例では、スレッドごとに別々のスレッド切替え制御レジスタ
410は実施されないが、スレッドごとに別々のスレッド切替え制御レジスタ4
10を実施して、より多くのハードウェアおよび複雑さという犠牲と引き換えに
より高い柔軟性と性能をもたらすことができる。さらに、あるスレッド切替え制
御レジスタ内のスレッド切替え制御イベントは、他のスレッド切替え制御レジス
タのスレッド切替え制御イベントと同一である必要はない。
【0065】 スレッド切替え制御レジスタ410は、米国特許第5079725号明細書に
開示された動的走査通信インターフェースなどのソフトウェアを用いるサービス
・プロセッサによるか、ソフトウェア・システム・コードを用いてプロセッサ自
体によって、書き込むことができる。スレッド切替え制御レジスタ410の内容
は、スレッド切替えの生成を使用可能または使用不能にするために、スレッド切
替えコントローラ450によって使用される。レジスタ410内の1の値によっ
て、そのビットに関連するスレッド切替え制御イベントが使用可能にされて、ス
レッド切替えが生成される。スレッド切替え制御レジスタ410内の0の値によ
って、そのビットに関連するスレッド切替え制御イベントが、スレッド切替えの
生成を禁止される。もちろん、実行中のスレッド内の命令によって、その特定の
スレッドまたは他のスレッドのスレッド切替え条件のうちのいくつかまたはすべ
てを使用不能にすることができる。下の表に、スレッド切替えイベントと、レジ
スタ410内のイネーブル・ビットの間の関連を示す。 スレッド切替え制御レジスタのビット割当 (0) L1データ・キャッシュ取出ミスに対するスイッチ (1) L1データ・キャッシュ・ストア・ミスに対するスイッチ (2) L1命令キャッシュ・ミスに対するスイッチ (3) 命令TLBミスに対するスイッチ (4) L2キャッシュ取出ミスに対するスイッチ (5) L2キャッシュ・ストア・ミスに対するスイッチ (6) L2命令キャッシュ・ミスに対するスイッチ (7) データTLB/セグメント・ルックアサイド・バッファ・ミスに対す るスイッチ (8) L2キャッシュ・ミスおよび休止スレッド非L2キャッシュ・ミスに 対するスイッチ (9) スレッド切替えタイムアウト値到達時のスイッチ (10) L2キャッシュ・データが返された時のスイッチ (11) 入出力外部アクセスに対するスイッチ (12) ダブルXストア:2つのうちの1番目でのミスに対するスイッチ* (13) ダブルXストア:2つのうちの2番目でのミスに対するスイッチ* (14) 複数/列ストア:すべてのアクセスでのミスに対するスイッチ (15) 複数/列ロード:すべてのアクセスでのミスに対するスイッチ (16) 予約済み (17) ダブルXロード:2つのうちの1番目でのミスに対するスイッチ* (18) ダブルXロード:2つのうちの2番目でのミスに対するスイッチ* (19) 計算機状態レジスタ(問題状態)ビット、msr(pr)=1の場合のor 1,1,1
命令に対するスイッチ。msr(pr)と独立のソフトウェア優先順位変更を可能にす る。ビット19が1の場合、or 1,1,1命令によって低優先順位が設定される。ビ
ット19が0の場合、or 1,1,1命令が実行される時にmsr(pr)=0の場合に限って 優先順位が低に設定される。後で説明する、ソフトウェアによる優先順位の変更
を参照されたい。 (20) 予約済み (21) スレッド切替え優先順位イネーブル (22:29) 予約済み (30:31) フォワード・プログレス・カウント (32:63) 64ビット・レジスタ実施形態で予約済み *ダブルXロード/ストアとは、基本ハーフワード、ワードまたはダブル・ワ
ードの、ダブルワード境界をまたぐロードまたはストアを指す。この文脈でのダ
ブルXロード/ストアは、複数ワードまたはワードの列のロードまたはストアで
はない。
【0066】 スレッド切替えタイムアウト・レジスタ 上で述べたように、粒度の粗いマルチスレッド式プロセッサは、スレッド切替
えをトリガするために、長い待ち時間のイベントに頼る。実行中に、多重プロセ
ッサ環境内のプロセッサまたはマルチスレッド式アーキテクチャのバックグラウ
ンド・スレッドが、単独の所有者だけを有することのできる資源の所有権を有し
、別のプロセッサまたはアクティブ・スレッドが、フォワード・プログレスを行
う前にその資源へのアクセスを必要とする場合がある。その例には、メモリ・ペ
ージ・テーブルの更新またはタスク・ディスパッチャからのタスクの取得が含ま
れる。アクティブ・スレッドが資源の所有権を得ることができなくても、スレッ
ド切替えイベントはもたらされないが、スレッドは、有用な作業を行うことがで
きないループを回り続ける。この場合、資源を保持しているバックグラウンド・
スレッドは、プロセッサへのアクセスを得ず、その結果、スレッド切替えイベン
トに遭遇せず、アクティブ・スレッドにならないので、資源を解放することがで
きない。
【0067】 スレッドの間での処理サイクルの割振りが、もう1つの問題である。あるスレ
ッド上で走行するソフトウェア・コードが、同一のプロセッサ内の他のスレッド
上で走行するソフトウェア・コードと比較して長い待ち時間の切替えイベントに
ほとんど遭遇しない場合には、そのスレッドは、処理サイクルの公平な割当分以
上の処理サイクルを得る。最大の許容可能な時間を超える可能性があるもう1つ
の過度な遅延が、限られた時間期間内に外部割込みをサービスするために待機す
るかプロセッサの外部の他のイベントを待機する非アクティブ・スレッドの待ち
時間である。したがって、有用な処理が達成されていない場合に、システムがハ
ングしないようにするために、ある時間の後に休止スレッドへのスレッド切替え
を強制的に行うことが好ましくなる。
【0068】 ある時間期間の後にスレッド切替えを強制するための論理が、スレッド切替え
タイムアウト・レジスタ430(図4)、デクリメンタおよび、減分された値を
保持する減分レジスタである。スレッド切替えタイムアウト・レジスタ430は
、スレッド切替えタイムアウト値を保持する。この実施例で使用されるスレッド
切替えタイムアウト・レジスタ430の実施形態を、次の表に示す。 スレッド切替えタイムアウト・レジスタのビット (0:21) 予約済み (22:31) スレッド切替えタイムアウト値
【0069】 本明細書で説明する本発明の実施例では、スレッドごとに別々のスレッド切替
えタイムアウト・レジスタ430が実施されないが、柔軟性を高めるためにそれ
を行うことは可能である。同様に、複数のスレッドがある場合に、各スレッドが
同一のスレッド切替えタイムアウト値を有する必要はない。スレッド切替えが発
生するたびに、スレッド切替えタイムアウト・レジスタ430からのスレッド切
替えタイムアウト値が、ハードウェアによって減分レジスタにロードされる。減
分レジスタは、減分レジスタ値が0に等しくなるまで各サイクルに1回減分され
、0になった時に、スレッド切替えコントローラ450に信号が送られ、スレッ
ド切替えコントローラ450は、命令を処理する準備ができている他のスレッド
がない場合を除いて、スレッド切替えを強制する。たとえば、システム内の他の
すべてのスレッドが、キャッシュ・ミスで待機状態になっており、命令を実行す
る準備ができていない場合には、スレッド切替えコントローラ450は、スレッ
ド切替えを強制しない。減分レジスタの値が0に達した時に、命令を処理する準
備ができている他のスレッドが存在しない場合には、別のスレッドが命令を処理
する準備ができるまで、減分された値は0で凍結され、準備ができた時点で、ス
レッド切替えが発生し、減分レジスタに、そのスレッドのスレッド切替えタイム
アウト値が再ロードされる。同様に、減分レジスタは、簡単に増分レジスタと命
名することができ、スレッドが実行中である時に、そのレジスタをある所定の値
まで増分することができ、その値に達した時にスレッド切替えが強制される。
【0070】 スレッド切替えタイムアウト・レジスタ430は、上で述べたようにサービス
・プロセッサによって書き込むか、ソフトウェア・コードを用いてプロセッサ自
体によって書き込むことができる。スレッド切替えタイムアウト・レジスタ43
0にロードされるスレッド切替えタイムアウト値は、特定のハードウェア構成ま
たは特定のソフトウェア・コードに従って、不要なスレッド切替えから生じる浪
費サイクルを最小にするためにカスタマイズすることができる。スレッド切替え
タイムアウト・レジスタ430の値が大きすぎると、アクティブ・スレッドが別
のスレッドによって保持されている資源を待っている場合と、外部割込み290
または他のプロセッサ外部のイベントの応答待ち時間が長すぎる場合に、性能低
下がもたらされる可能性がある。また、値が大きすぎると、一方のスレッドが多
数のスレッド切替えイベントを経験し、もう一方のスレッドがそうでない場合に
、公平さが損なわれる可能性がある。スレッド切替えを引き起こす、最も頻繁な
最長の待ち時間イベント、たとえば主記憶へのアクセスより2倍ないし数倍長い
スレッド切替えタイムアウト値が、推奨される。スレッド切替えタイムアウト・
レジスタ430で指定されたサイクル数だけ待った後にスレッド切替えを強制す
ることによって、共用資源の競合に起因するシステム・ハングが防止され、スレ
ッド間のプロセッサ・サイクル割振りの公平さが実施され、外部割り込みおよび
他のプロセッサ外部のイベントに対する最大応答待ち時間が制限される。
【0071】 フォワード・プログレスの保証 スレッド切替えが発生し、新しいスレッドがアクティブになるたびに、少なく
とも1つの命令が実行されなければならないことは、単一の命令によって複数の
キャッシュ・アクセスまたは複数のキャッシュ・ミスが発生する時など、いくつ
かの状況では制限が強すぎる。たとえば、取出命令は、要求された命令がキャッ
シュ内にない場合にL1 I−キャッシュ150ミスを引き起こす可能性がある
が、その命令が返された時に、必要なデータがL1 D−キャッシュ120内で
使用可能でない可能性がある。同様に、変換ルックアサイド・バッファ250で
のミスが、データ・キャッシュ・ミスをももたらす可能性がある。したがって、
フォワード・プログレスを厳密に実施する場合には、後続アクセスでのミスは、
スレッド切替えをもたらさない。第2の問題は、一部のキャッシュ・ミスが、完
了に大量のサイクルを必要とする可能性があり、その時間の間に、別のスレッド
が、同一のキャッシュ・レベルで、はるかに短い時間で完了できるキャッシュ・
ミスを経験する可能性があることである。第1のスレッドに戻る時に、厳密なフ
ォワード・プログレスが実施される場合には、プロセッサは、より短いキャッシ
ュ・ミスを有するスレッドに切り替えることができない。
【0072】 各スレッドが、命令実行を伴わないスレッド切替えの反復サイクルでロックさ
れるスラッシングの問題を救済するために、フォワード・プログレス・カウント
・レジスタ420(図4)が存在し、これによって、フォワード・プログレス閾
値と称するプログラム可能な最大回数までのスレッド切替えが許容される。その
スレッド切替えの最大回数の後は、命令を完了しなければ切替えは発生しない。
この形で、スラッシングが防止される。フォワード・プログレス・カウント・レ
ジスタ420は、実際には、スレッド切替え制御レジスタ410のビット30:
31とするか、プロセッサのためのソフトウェア・プログラム可能フォワード・
プログレス閾値レジスタとすることができる。フォワード・プログレス・カウン
ト論理は、スレッドの状態を示し、命令実行なしでスレッドが経験したスレッド
切替えの回数のために割り振られる、スレッド状態レジスタ442および444
のビット15:17を使用する。これらのビットは、フォワード・プログレス・
カウンタを含むことが好ましい。
【0073】 スレッドの状態が変化し、スレッド切替えアルゴリズムが呼び出される時に、
アクティブ・スレッド内で少なくとも1つの命令が完了している場合、アクティ
ブ・スレッドのフォワード・プログレス・カウンタは、リセットされ、スレッド
切替えアルゴリズムは、プロセッサ内のスレッドの間でのスレッド状態の比較を
継続する。完了した命令がない場合、アクティブ・スレッドのスレッド状態レジ
スタ内のフォワード・プログレス・カウンタ値が、フォワード・プログレス閾値
と比較される。カウンタ値が、閾値と等しくない場合には、スレッド切替えアル
ゴリズムは、プロセッサ内のスレッドのスレッド状態の評価を継続する。その後
、スレッド切替えが発生した場合に、フォワード・プログレス・カウンタが増分
される。しかし、カウンタ値が閾値または状態と等しい場合には、命令を実行で
きるまで、すなわち、フォワード・プログレスが発生するまで、スレッド切替え
は発生しない。閾値レジスタが値0を有する場合には、別のスレッドに切り替え
る前に、アクティブ・スレッド内で少なくとも1つの命令が完了しなければなら
ないことに留意されたい。各スレッド切替えが、3プロセッサ・サイクルを必要
とし、2つのスレッドが存在し、スレッド切替え論理が、5回の試行の値にスレ
ッド切替えの試行を停止するようにプログラミングされている場合、プロセッサ
のスラッシングが発生する最大サイクル数は、30サイクルである。当業者は、
一方でフォワード・プログレスが行われないのでスレッド切替えを禁止すること
と、他方でタイムアウト・カウントを超えたのでスレッド切替えを強制すること
の間に潜在的な衝突が存在することを了解するであろう。このような衝突は、ア
ーキテクチャおよびソフトウェアに従って簡単に解決することができる。
【0074】 図6は、スラッシングを防止する、スレッド切替え論理400のフォワード・
プログレス・カウント機能の流れ図である。ブロック610で、スレッドT0に
関係するスレッド状態レジスタ442のビット15:17が、状態111にリセ
ットされる。ブロック620で、このスレッドの実行を試み、状態が000に変
化する。スレッドT0で命令が成功裡に実行された場合、スレッドT0の状態は
、111に戻り、そのままにとどまる。しかし、スレッドT0が命令を実行でき
ない場合には、スレッドT1または、プロセッサ・アーキテクチャで3つ以上の
スレッドが許容される場合には別のバックグラウンド・スレッドへのスレッド切
替えが発生する。T1または他のバックグラウンド・スレッドからのスレッド切
替えが発生し、実行がスレッドT0に戻った時に、ブロック630で、スレッド
T0を実行する2回目の試みが行われ、スレッドT0の状態は001になる。や
はり、スレッドT0がスレッド切替えイベントに遭遇した場合に、プロセッサの
制御は、スレッドT0から別のスレッドに切り替えられる。同様に、たとえばT
1などの他のスレッドからスレッドT0へのスレッド切替えが発生した時に、T
0の状態は、T0実行の3回目の試みでは010に変化し(ブロック640)、
T0実行の4回目の試みでは011に変化し(ブロック650)、T0実行の5
回目の試みでは状態100に変化する(ブロック660)。
【0075】 この実施形態では、スレッドT0への切替えの試みが5回ある。5回目の試み
の後と、スレッド状態レジスタ(TSR)442のビット15:17の値が、ス
レッド切替え制御レジスタ(TSC)410のビット30:31の値+1に等し
い時すなわち、TSC(30:31)+1=TSR(15:17)の時に必ず、
スレッドT0からのスレッド切替えが発生しなくなる。5回の試みは、任意の数
であり、不成功の実行を伴う切替えの許容可能な最大回数すなわち、フォワード
・プログレス閾値は、プログラム可能であることが了解されよう。また、あるア
ーキテクチャでは、5回の切替えが多すぎ、他のアーキテクチャでは5回が少な
すぎることが理解されよう。どの場合でも、命令実行なしでスレッドに切り替え
る試みの回数の間の関係を閾値と比較しなければならず、その閾値に達した後に
は、そのスレッドからのスレッド切替えが発生せず、プロセッサは、そのスレッ
ドに関連する待ち時間が解決されるまで待機する。本明細書で説明する実施例で
は、スレッド状態レジスタ442のビット15:17によって表されるスレッド
の状態が、スレッド切替え制御レジスタ410のビット30:31と比較される
。フォワード・プログレス論理による早すぎるスレッド切替えのブロックを防ぐ
ための、入出力装置との相互作用などの極端に長い待ち時間を有する特定のイベ
ントのための特別な処理によって、プロセッサ性能が改善される。これらの極端
に長い待ち時間のイベントを処理する方法の1つが、フォワード・プログレス・
カウンタの増分をブロックするか、データが返されなかった場合のフォワード・
プログレス・カウンタと閾値の間の比較の出力信号を無視することである。極端
に長い待ち時間のイベントを処理するもう1つの方法は、これらの特定のイベン
トについて、別のより大きいフォワード・プログレス・カウントを使用すること
である。
【0076】 スレッド切替えマネージャ プロセッサにディスパッチされたすべてのソフトウェア・スレッドのスレッド
状態は、前に説明したように図4のスレッド状態レジスタ442および444で
維持されることが好ましい。単一のプロセッサでは、一時に1つのスレッドがそ
の命令を実行し、他のすべてのスレッドは、休止状態になる。実行がアクティブ
・スレッドから休止スレッドに切り替えられるのは、アクティブ・スレッドが、
フォワード・プログレス・レジスタ420、スレッド切替え制御レジスタ410
またはスレッド切替えタイムアウト・レジスタ430に関して上で説明した長い
待ち時間のイベントに出会った時である。どのスレッドがアクティブであるかに
無関係に、これらのハードウェア・レジスタでは、実行の過程の間に動的に変化
しない状態が使用される。
【0077】 スレッド切替えマネージャによってスレッド切替え条件を変更する柔軟性によ
って、総合的なシステム性能が改善される。ソフトウェア・スレッド切替えマネ
ージャは、スレッド切替えの頻度を変更でき、クリティカルなタスクが使用でき
る実行サイクルを増やすことができ、スレッド切替え待ち時間のために失われる
総合サイクルを減らすことができる。スレッド切替えマネージャは、コンパイル
時または、オペレーティング・システムによる実行中のいずれかにプログラミン
グすることができ、たとえば、ロックしているループからスレッド切替えの頻度
を変更でき、また、低い優先順位状態の休止スレッドが外部割込みを待っている
か他の形で作動可能であるのでオペレーティング・システム・タスクをディスパ
ッチすることができる。アクティブ・スレッドからのスレッド切替えを許容しな
いか、その頻度を減らし、その結果、現在の命令ストリームの性能が、そこから
の切替えとそこに戻る切替えから生じる待ち時間を被らなくすることが有利であ
る場合がある。その代わりに、スレッドが、総合的なシステム性能を強化するた
めに、本質的にその優先順位を下げ、その結果として、それへの切替えの頻度を
下げるか、そのスレッドからの切替えの頻度を高めることによって、その実行サ
イクルの一部またはすべてを捨てることができる。スレッド切替えマネージャは
、スレッド切替えを無条件で強制または禁止することもでき、どのスレッドが次
に実行のために選択されるかに影響することもできる。
【0078】 複数優先順位スレッド切替え方式では、各スレッドに優先順位値を割り当てて
、切替えを引き起こす条件を制限する。場合によっては、ハードウェアにスレッ
ド優先順位を変更させることが望ましい可能性もある。たとえば、低優先順位ス
レッドが、あるイベントを待っており、そのイベントが発生した時に、ハードウ
ェアが、そのスレッドの優先順位を引き上げて、外部割込み290などのイベン
トに対するそのスレッドの応答時間に影響することができる。スレッド間の相対
優先順位またはあるスレッドの優先順位は、そのようなイベントの処理に影響す
る。スレッドの優先順位は、イベントに応答してハードウェアによって、または
、1つまたは複数の命令の使用を介してスレッド切替えマネージャソフトウェア
によって、調節することができる。スレッド切替えマネージャは、ハードウェア
・スレッド切替え論理によって実行される処置を変更して、効果的にスレッドの
相対優先順位を変更する。
【0079】 3つの優先順位が、本明細書で説明する2スレッドの実施例と共に使用され、
これによって、システム性能に悪影響を及ぼさずに、性能のチューニングを可能
にするのに十分な、スレッドの間の区別がもたらされる。3つの優先順位を用い
ると、2つのスレッドが、中優先順位の同等の状況を有することができる。2つ
のスレッドに関する3つの優先順位の選択は、制限的であることを目的とするも
のではない。いくつかのアーキテクチャでは、「通常」状態が、一方のスレッド
が必ず他方のスレッドより高い優先順位を有する状態であるものとすることがで
きる。ハードウェアで設定するかソフトウェアによってプログラミングすること
のできる1つまたは複数の優先順位を有する3つ以上の実行のスレッドを含むこ
とが、本発明の範囲内であることが意図されている。
【0080】 各スレッドの3つの優先順位は、高、中および低である。スレッドT0の優先
順位がスレッドT1と同一である時には、スレッド切替え論理に対する影響はな
い。両方のスレッドが等しい優先順位を有するので、優先的に実行時間を与えら
れるスレッドは存在しない。スレッドT0の優先順位が、スレッドT1の優先順
位より高い時には、T0からT1へのスレッド切替えイベントは、あるスレッド
切替えイベントすなわち、すべてのL1キャッシュ・ミスすなわち、データ・ロ
ード、データ・ストアおよび命令取出について使用不能にされる。というのは、
L1キャッシュ・ミスが、L2ミスおよび変換などの他の条件よりはるかに高速
に解決されるからである。どのスレッド切替えイベントでも、使用不能にし、そ
の結果、スレッドT0に、スレッドT1より多数の実行サイクルを受け取る機会
を与えることができ、これによって、スレッドT0が、過剰な数の実行サイクル
を浪費しない限り、実行を継続できるようになる。しかし、プロセッサは、スレ
ッドT0が比較的長い実行待ち時間、たとえば、L2キャッシュ・ミスまたはコ
ンピュータ・システムの外部の供給源からのデータの取出などを経験する場合に
、スレッドT1に制御を譲る。T1からT0へのスレッド切替えは、休止スレッ
ドT0がスレッドT1をプリエンプトした場合にスレッドT0が作動可能になっ
た時に切替えが発生する点を除いて、影響を受けない。この事例は、L2キャッ
シュ・ミスまたは変換要求が原因でスレッドT0からの切替えが発生し、その条
件が、スレッドT1の実行中にバックグラウンドで解決された時に発生すると予
想される。スレッドT0がスレッドT1より低い優先順位を有する場合は、上の
場合でスレッドの指定を逆転したものに類似する。
【0081】 スレッド優先順位の変更によるスレッド切替えの管理を実装することができる
異なる手法が存在する。新しい命令をプロセッサ・アーキテクチャに追加するこ
とができる。所望の動作を有する副作用を有する既存のプロセッサ命令を使用す
ることもできる。ソフトウェア制御を可能にする方法の間での選択に影響する要
因には、以下が含まれる。(a)新規命令を含めるためのアーキテクチャ再定義
の容易さと、既存プロセッサに対するアーキテクチャ変更の影響、(b)異なる
版のプロセッサ上で同一のソフトウェアを走行させることの望ましさ、(c)新
規の専用命令の使用と、既存命令を再利用し結果の副作用を定義することとの間
の性能トレードオフ、(d)たとえば、特定のロードまたはストアなどの一部の
既存命令のすべての実行によって効果が生じるか、特にその効果を生じさせるた
めにストリームに命令を追加することによるさらなる制御を必要とするか、など
、ソフトウェアによる制御の所望のレベル。
【0082】 本明細書で説明するアーキテクチャは、その値によってプロセッサのアーキテ
クチャ的汎用レジスタが変更されない、未使用命令を活用する。この機能は、プ
ロセッサ・アーキテクチャを更新してマルチスレッディング機能を組み込むのに
非常に重要である。そうでなければ、特殊命令をコーディングすることができる
。命令は、「好ましいノー・オペレーション」or 0,0,0であるが、他の命令が、
効果的にノー・オペレーションとして働くことができる。ノー・オペレーション
またはnopは、その実行が、コンピュータに、動作を実行せずに次の命令の実行 に進行させる命令である。好ましいアーキテクチャの実施例では、or命令の異な
る版、or 0,0,0または1,1,1か、スレッド優先順位を変更するために追加の優先 順位切替えの意味を付加することのできる既存命令を使用することによって、同
一の命令ストリームを、不正命令割込みなどの悪影響なしにプロセッサ上で実行
することができる。不正命令割込みは、不正命令の実行が試みられる時または、
実施形態によって提供されない予約済みまたは任意選択の命令の実行が試みられ
る時に生成される。機能拡張では、計算機状態レジスタの状態を使用して、これ
らの命令の意味を変更する。たとえば、ユーザがこれらのスレッド優先順位命令
の一部またはすべてをコーディングし、それらが提供する機能にアクセスできる
ようにすることは、望ましくない場合がある。それらが提供する特殊機能は、実
行のあるモードだけで発生するように定義することができ、それらの命令は、他
のモードでは効果がなく、通常通りノー・オペレーションとして実行される。
【0083】 二重スレッド・マルチスレッド式プロセッサを使用する可能な実施形態の1つ
では、実行中のソフトウェア自体の一部になる下記の3つの優先順位切替え命令
を使用して、それ自体の優先順位を変更する。 tsop 1 or 1,1,1 休止スレッドへの切替え tsop 2 or 1,1,1 アクティブ・スレッドを「低」優先順位に設定する 休止スレッドに切り替える 注:TSC[19]=1でなければ特権モードでのみ有効 tsop 3 or 2,2,2 アクティブ・スレッドを「中」優先順位に設定する tsop 4 or 3,3,3 アクティブ・スレッドを「高」優先順位に設定する 注:特権モードでのみ有効
【0084】 優先順位切替え命令tsop 1およびtsop 2は、本明細書でor 1,1,1として実施さ
れるものと同一の命令とすることができるが、これらを別々の命令とすることも
できる。これらの命令は、スレッド切替え制御レジスタ410のビット19およ
び21と、本明細書で説明した計算機状態レジスタの問題/優先順位ビットとに
相互作用する。スレッド切替え制御レジスタ410のビット21が1の値を有す
る場合には、スレッド切替えマネージャは、そのスレッドの優先順位に、スレッ
ド状態レジスタのビット18:19で表される3つの優先順位のうちの1つをセ
ットすることができる。スレッド切替え制御レジスタ410のビット19が値0
を有する場合には、命令tsop 2のスレッド切替えおよびスレッド優先順位の設定
は、計算機状態レジスタの問題/優先順位ビットによって制御される。その一方
で、スレッド切替え制御レジスタ410のビット19が値1を有する場合または
、計算機状態レジスタの問題/優先順位ビットが値0を有し、命令or 1,1,1がコ
ードに存在する場合には、アクティブ・スレッドの優先順位は、低に設定され、
実行は、休止スレッドがイネーブルされる場合に即座に休止スレッドまたはバッ
クグラウンド・スレッドに切り替えられる。命令or 2,2,2では、アクティブ・ス
レッドの優先順位が、計算機状態レジスタの問題/優先順位ビットの値に無関係
に中に設定される。命令or 3,3,3では、計算機状態レジスタの問題/優先順位ビ
ットが0の値を有する時に、アクティブ・スレッドの優先順位に高がセットされ
る。スレッド切替え制御レジスタ410のビット21が0の場合、両方のスレッ
ドの優先順位に、中がセットされ、優先順位に対するor x,x,xの影響がブロック
される。外部割込み要求がアクティブであり、対応するスレッドの優先順位が低
の場合、そのスレッドの優先順位は、中に設定される。
【0085】 スレッド優先順位によって変更されるイベントは、(1)データをロードする
際のL1 D−キャッシュ・ミスに対するスイッチと、(2)データをストアす
る際のL1 D−キャッシュ・ミスに対するスイッチと、(3)命令を取り出す
際のL1 I−キャッシュ・ミスに対するスイッチと、(4)休止スレッドが作
動可能状態である場合のスイッチである。さらに、外部割込みの活動化によって
、対応するスレッドの優先順位を変更することができる。下の表に、スレッド切
替えを引き起こす条件に対する優先順位の影響を示す。列3および4の「TSC
」だけの項目は、スレッド切替えを開始するためにスレッド切替え制御(TSC
)レジスタ410に示された条件を使用することを意味する。「0として扱われ
るTSC[0:2]」の項目は、スレッド切替え制御レジスタ410のビット0
:2が、そのスレッドに関してこれらのビットの値が0であるかのように扱われ
、スレッド切替え制御レジスタ410の他のビットが、スレッド切替えを引き起
こす条件の定義にそのまま使われることを意味する。列4の「スレッドT0作動
可能時」は、スレッドT0が、それからのスレッド切替えを引き起こしたミス・
イベントの待機を終えると同時に、スレッドT0への切替えが発生することを意
味する。列3の「スレッドT1作動可能時」は、スレッドT1が、それからのス
レッド切替えを引き起こしたミス・イベントの待機を終えると同時に、スレッド
T1への切替えが発生することを意味する。ミス・イベントが、スレッド切替え
タイムアウトである場合には、より高い優先順位のスレッドに切り替えられる前
に、より低い優先順位のスレッドが命令を完了するという保証はない。
【表1】
【0086】 生産的な作業を行わないスレッドには、遊休ループ内のすべての命令がスレッ
ド切替えを引き起こす場合であっても、性能の損失を避けるために、低優先順位
を与えることが推奨される。それでも、低優先順位に設定されたスレッドに対し
て外部割込みが要求された場合に、ハードウェアがスレッド優先順位を変更でき
るようにすることが重要である。この場合、そのスレッドは、割込みに対するす
ばやい応答を可能にするために、中優先順位に引き上げられる。これによって、
外部イベントを待っているスレッドが、それ自体を低優先順位に設定し、イベン
トがシグナリングされるまでその状態にとどまることが可能になる。
【図面の簡単な説明】
【図1】 本明細書に記載の発明を実施することのできるコンピュータ・システムのブロ
ック図である。
【図2】 本発明によるマルチスレッド式データ処理システムの高水準ブロック図である
【図3】 図2の記憶域制御ユニットのブロック図である。
【図4】 図2のスレッド切替え論理、記憶域制御ユニットおよび命令ユニットのブロッ
ク図である。
【図5】 図4に示されたスレッドが異なるスレッド切替えイベントを経験する際のスレ
ッドの状態の変化を示す図である。
【図6】 本発明のフォワード・プログレス・カウントの流れ図である
───────────────────────────────────────────────────── フロントページの続き (72)発明者 アイケマイヤー、リチャード、ジェームズ アメリカ合衆国55901 ミネソタ州ロチェ スター ハワード・ストリート ノースウ ェスト 5277 (72)発明者 フリン、ウィリアム、・トーマス アメリカ合衆国55902 ミネソタ州ロチェ スター フォーティーンス・アベニュー サウスウェスト 2516 (72)発明者 レヴィンステイン、シェルダン、ベマード アメリカ合衆国55906 ミネソタ州ロチェ スター 7ストリート エヌ・イー 1608 (72)発明者 ウォットレング、アンドリュー、ヘンリー アメリカ合衆国55901 ミネソタ州ロチェ スター マナー・ビュー・ドライブ ノー スウェスト 4224 Fターム(参考) 5B005 JJ13 MM02 MM03 SS12 UU31 5B098 GA05 GC03 GC05 GD05 GD24 【要約の続き】 理は、マルチスレッド式プロセッサ内のスレッドの間の スレッド切替えの非生産的な反復を防ぐために、フォワ ード・プログレス・カウンタ・レジスタ(420)も有 する。スレッド切替え論理は、異なるスレッドの優先順 位を変更でき、したがって、スレッド切替えイベントを 取り替えることができるスレッド切替えマネージャ(4 60)にも応答する。

Claims (38)

    【特許請求の範囲】
  1. 【請求項1】 マルチスレッド式プロセッサ(110)におけるコンピュータ処理方法であっ
    て、アクティブ・スレッド状態が、少なくとも1つのハードウェア・レジスタ(
    440)に記憶され、 少なくとも1つのバックグラウンド・スレッドの実行状況を表すバックグラウ
    ンド・スレッド状態を、少なくとも1つのハードウェア・レジスタ(440)に
    格納することと、 マルチスレッド式プロセッサ(110)で少なくとも1つのアクティブ・スレ
    ッドを実行することと、 前記少なくとも1つのアクティブ・スレッドのアクティブ・スレッド状態を、
    前記マルチスレッド式プロセッサ(110)で前記少なくとも1つのアクティブ
    ・スレッドを実行することによって生成される後の状態で置換することと、 前記アクティブ・スレッドの前記置換されたアクティブ・スレッド状態を、少
    なくとも1つのバックグラウンド・スレッドの前記バックグラウンド・スレッド
    状態と比較することによって、前記少なくとも1つのアクティブ・スレッドの前
    記アクティブ・スレッド状態の前記後の状態による置換が、前記マルチスレッド
    式プロセッサ(110)に、前記少なくとも1つのバックグラウンド・スレッド
    に実行を切り替えさせるかどうかを判定することと を含む改良を有する方法。
  2. 【請求項2】 前記少なくとも1つのアクティブ・スレッドの前記アクティブ・スレッド状態
    を置換する前記ステップが、前記マルチスレッド式プロセッサ(110)の実行
    をストールさせるアクティブ・スレッド待ち時間イベントを記述することを含む
    、請求項1に記載の方法。
  3. 【請求項3】 前記少なくとも1つのアクティブ・スレッドの前記アクティブ・スレッド状態
    を置換する前記ステップが、前記アクティブ・スレッドの優先順位を変更するこ
    とを含む、請求項1に記載の方法。
  4. 【請求項4】 前記少なくとも1つのバックグラウンド・スレッドに実行を切り替えること をさらに含む、請求項1ないし3のいずれか一項に記載の方法。
  5. 【請求項5】 前記少なくとも1つのアクティブ・スレッドが実行されていたプロセッサ・サ
    イクルの数をカウントすることと、実行サイクルの前記数がタイムアウト値と等
    しい時に、前記少なくとも1つのバックグラウンド・スレッドに実行を切り替え
    ること をさらに含む、請求項1ないし4のいずれか一項に記載の方法。
  6. 【請求項6】 外部割込み信号を受け取ることと、その後、前記少なくとも1つのバックグラ
    ウンド・スレッドに実行を切り替えること をさらに含む、請求項1ないし5のいずれか一項に記載の方法。
  7. 【請求項7】 前記少なくとも1つのアクティブ・スレッドの前記アクティブ・スレッド状態
    の置換が、前記マルチスレッド・プロセッサ(110)に前記少なくとも1つの
    バックグラウンド・スレッドに実行を切り替えさせるかどうかを判定するステッ
    プが、さらに、 前記アクティブ・スレッド状態の前記変更が、アクティブ・スレッド待ち時間
    イベントから生じたかどうかを検査することと、 前記待ち時間イベントがスレッド切替えイベントであるかどうかを判定するこ
    とと、 前記スレッド切替えイベントがイネーブルされているかどうかを判定すること
    と を含む、請求項1ないし6のいずれか一項に記載の方法。
  8. 【請求項8】 前記スレッド切替えイベントが、前記スレッド切替えイベントに対応するスレ
    ッド切替え制御レジスタ(410)内の少なくとも1つのビットがイネーブルさ
    れている時にイネーブルされる、請求項7に記載の方法。
  9. 【請求項9】 前記少なくとも1つのアクティブ・スレッドの前記アクティブ・スレッド状態
    の置換が、前記マルチスレッド式プロセッサ(100)に前記少なくとも1つの
    バックグラウンド・スレッドに実行を切り替えさせるかどうかを判定するステッ
    プが、さらに、 前記少なくとも1つのアクティブ・スレッドの優先順位を、前記少なくとも1
    つのバックグラウンド・スレッドの優先順位以下に変更すること を含む、請求項1ないし8のいずれか一項に記載の方法。
  10. 【請求項10】 前記少なくとも1つのバックグラウンド・スレッドの優先順位を、前記少なく
    とも1つのアクティブ・スレッドの優先順位以上になるように変更することと、 前記少なくとも1つのバックグラウンド・スレッドの前記バックグラウンド・
    スレッド状態の変更が、マルチスレッド式プロセッサ(110)に、前記少なく
    とも1つのバックグラウンド・スレッドに実行を切り替えさせるかどうかを判定
    することと をさらに含む、請求項1ないし9のいずれか一項に記載の方法。
  11. 【請求項11】 前記少なくとも1つのバックグラウンド・スレッドに実行を切り替えること をさらに含む、請求項10に記載の方法。
  12. 【請求項12】 前記少なくとも1つのバックグラウンド・スレッドに実行を切り替えないこと をさらに含む、請求項10に記載の方法。
  13. 【請求項13】 前記少なくとも1つのアクティブ・スレッドの前記アクティブ・スレッド状態
    の置換が、前記マルチスレッド式プロセッサ(110)に前記少なくとも1つの
    バックグラウンド・スレッドに実行を切り替えさせるかどうかを判定する前記ス
    テップが、さらに、 前記アクティブ・スレッド状態の前記置換が、待ち時間イベントから生じたか
    どうかを判定することと、 前記待ち時間イベントが、スレッド切替えイベントであるかどうかを判定する
    ことと、 前記スレッド切替えイベントが、イネーブルされていないかどうかを判定する
    ことと を含む、請求項1ないし6、9、10または12のいずれか一項に記載の方法
  14. 【請求項14】 前記少なくとも1つのアクティブ・スレッドからのスレッド切替えが発生した
    回数をカウントすることと、 前記回数をカウント閾値と比較することと、 前記回数が前記カウント閾値と等しい時に信号を送り、それに応答して、実行
    を切り替えないことと をさらに含む、請求項1、2、3または7ないし10のいずれか一項に記載の
    方法。
  15. 【請求項15】 前記少なくとも1つのアクティブ・スレッドの前記アクティブ・スレッド状態
    の置換が、前記マルチスレッド式プロセッサ(110)に前記少なくとも1つの
    バックグラウンド・スレッドに実行を切り替えさせるかどうかを判定する前記ス
    テップが、さらに、 前記マルチスレッド式プロセッサ(100)での実行に関して最低の期待され
    る持続時間の待ち時間イベントを有するスレッドを選択すること を含む、請求項1ないし11、13または14のいずれか一項に記載の方法。
  16. 【請求項16】 前記バックグラウンド・スレッド状態が、作動可能であるか、前記バックグラ
    ウンド・スレッドが、前記アクティブ・スレッド待ち時間イベント以下の期待さ
    れる持続時間のバックグラウンド待ち時間イベントを待っている時に、前記少な
    くとも1つのバックグラウンド・スレッドに実行を切り替えること をさらに含む、請求項15に記載の方法。
  17. 【請求項17】 前記アクティブ・スレッド待ち時間イベントが、L2キャッシュ・ミスまたは
    テーブル・ルックアサイド・バッファ・ミスであり、前記バックグラウンド待ち
    時間イベントが、L1キャッシュ・ミスである、請求項2ないし16のいずれか
    一項に記載の方法。
  18. 【請求項18】 前記少なくとも1つのバックグラウンド・スレッドの前記バックグラウンド・
    スレッド状態を変更することと、 前記アクティブ・スレッド待ち時間イベントが、バックグラウンド待ち時間イ
    ベントより長い期待される持続時間を有する時、または、前記少なくとも1つの
    バックグラウンド・スレッドの前記バックグラウンド状態が、作動可能である時
    に、前記少なくとも1つのバックグラウンド・スレッドに実行を切り替えること をさらに含む、請求項2ないし11または13ないし17のいずれか一項に記
    載の方法。
  19. 【請求項19】 少なくとも1つのアクティブ・スレッドの状態と少なくとも1つのバックグラ
    ウンド・スレッドの状態とを記憶するための複数のビットを含み、前記複数のビ
    ットのうちのいくつかが、 待ち時間イベントと、 各めいめいの状態への遷移が前記スレッドのうちのもう1つへの実行の切替え
    をもたらす場合に、前記スレッドの優先順位と を示す、スレッド状態レジスタ(440)。
  20. 【請求項20】 [取消]
  21. 【請求項21】 [取消]
  22. 【請求項22】 [取消]
  23. 【請求項23】 [取消]
  24. 【請求項24】 [取消]
  25. 【請求項25】 [取消]
  26. 【請求項26】 [取消]
  27. 【請求項27】 [取消]
  28. 【請求項28】 [取消]
  29. 【請求項29】 [取消]
  30. 【請求項30】 [取消]
  31. 【請求項31】 [取消]
  32. 【請求項32】 [取消]
  33. 【請求項33】 [取消]
  34. 【請求項34】 [取消]
  35. 【請求項35】 [取消]
  36. 【請求項36】 [取消]
  37. 【請求項37】 [取消]
  38. 【請求項38】 [取消]
JP2000517336A 1997-10-23 1998-10-14 マルチスレッド式プロセッサにおけるコンピュータ処理方法 Expired - Fee Related JP3595504B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/957,002 US6567839B1 (en) 1997-10-23 1997-10-23 Thread switch control in a multithreaded processor system
US08/957,002 1997-10-23
PCT/US1998/021742 WO1999021083A1 (en) 1997-10-23 1998-10-14 Thread switch control in a multithreaded processor system

Publications (2)

Publication Number Publication Date
JP2001521216A true JP2001521216A (ja) 2001-11-06
JP3595504B2 JP3595504B2 (ja) 2004-12-02

Family

ID=25498946

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000517336A Expired - Fee Related JP3595504B2 (ja) 1997-10-23 1998-10-14 マルチスレッド式プロセッサにおけるコンピュータ処理方法

Country Status (8)

Country Link
US (1) US6567839B1 (ja)
EP (1) EP1027645B1 (ja)
JP (1) JP3595504B2 (ja)
CN (1) CN1127017C (ja)
DE (1) DE69807729T2 (ja)
IL (1) IL135459A (ja)
TW (1) TW406241B (ja)
WO (1) WO1999021083A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004326749A (ja) * 2003-04-24 2004-11-18 Internatl Business Mach Corp <Ibm> マルチスレッド・プロセッサを単一スレッド・モード及び同時マルチスレッド・モードの間で動的に切り替える装置及び方法
JP2007519101A (ja) * 2003-12-30 2007-07-12 インテル コーポレイション 投機的メモリサポートを利用した冗長なマルチスレッディングシステムにおける故障検出のための外部メモリの更新管理
US8108859B2 (en) 2004-04-21 2012-01-31 Fujitsu Limited Processor for controlling tread switching
JP2016212639A (ja) * 2015-05-08 2016-12-15 富士通株式会社 演算装置、スレッド切替方法、及びマルチスレッドプログラム
US9965283B2 (en) 2015-05-22 2018-05-08 Fujitsu Limited Multi-threaded processor interrupting and saving execution states of complex instructions of a first thread to allow execution of an oldest ready instruction of a second thread

Families Citing this family (226)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW511034B (en) * 1998-11-09 2002-11-21 Intel Corp Scheduling requests in a system
US6952827B1 (en) * 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US20010032307A1 (en) * 1998-12-30 2001-10-18 Joseph Rohlman Micro-instruction queue for a microprocessor instruction pipeline
JP3780732B2 (ja) * 1999-03-10 2006-05-31 株式会社日立製作所 分散制御システム
US8762691B2 (en) * 1999-04-09 2014-06-24 Rambus Inc. Memory access consolidation for SIMD processing elements using transaction identifiers
US20080184017A1 (en) * 1999-04-09 2008-07-31 Dave Stuttard Parallel data processing apparatus
US6542991B1 (en) * 1999-05-11 2003-04-01 Sun Microsystems, Inc. Multiple-thread processor with single-thread interface shared among threads
US6834386B1 (en) * 1999-07-16 2004-12-21 Microsoft Corporation Method and system for regulating background tasks using performance measurements
EP1236092A4 (en) * 1999-09-01 2006-07-26 Intel Corp BRANCH COMMAND FOR A PROCESSOR
US7318090B1 (en) * 1999-10-20 2008-01-08 Sony Corporation Method for utilizing concurrent context switching to support isochronous processes
DE19955776C1 (de) 1999-11-19 2001-07-19 Infineon Technologies Ag Multitasking-Prozessorsystem
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
US6889319B1 (en) * 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US7120783B2 (en) * 1999-12-22 2006-10-10 Ubicom, Inc. System and method for reading and writing a thread state in a multithreaded central processing unit
JP4693326B2 (ja) * 1999-12-22 2011-06-01 ウビコム インコーポレイテッド 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法
US7308686B1 (en) 1999-12-22 2007-12-11 Ubicom Inc. Software input/output using hard real time threads
US6832265B1 (en) * 2000-01-07 2004-12-14 Cisco Technology, Inc. Methods and apparatus for moving data elements within a data communications device
US8041754B1 (en) * 2000-01-22 2011-10-18 Intel Corporation Establishing thread priority in a processor or the like
US7165257B2 (en) * 2000-02-08 2007-01-16 Mips Technologies, Inc. Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts
US7058064B2 (en) * 2000-02-08 2006-06-06 Mips Technologies, Inc. Queueing system for processors in packet routing operations
US7139901B2 (en) * 2000-02-08 2006-11-21 Mips Technologies, Inc. Extended instruction set for packet processing applications
US7155516B2 (en) * 2000-02-08 2006-12-26 Mips Technologies, Inc. Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory
US7649901B2 (en) * 2000-02-08 2010-01-19 Mips Technologies, Inc. Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing
US7032226B1 (en) * 2000-06-30 2006-04-18 Mips Technologies, Inc. Methods and apparatus for managing a buffer of events in the background
US7082552B2 (en) * 2000-02-08 2006-07-25 Mips Tech Inc Functional validation of a packet management unit
US6807620B1 (en) * 2000-02-11 2004-10-19 Sony Computer Entertainment Inc. Game system with graphics processor
US7162615B1 (en) * 2000-06-12 2007-01-09 Mips Technologies, Inc. Data transfer bus communication using single request to perform command and return data to destination indicated in context to allow thread context switch
US7047396B1 (en) 2000-06-22 2006-05-16 Ubicom, Inc. Fixed length memory to memory arithmetic and architecture for a communications embedded processor system
US7010612B1 (en) 2000-06-22 2006-03-07 Ubicom, Inc. Universal serializer/deserializer
US6968392B1 (en) * 2000-06-29 2005-11-22 Cisco Technology, Inc. Method and apparatus providing improved statistics collection for high bandwidth interfaces supporting multiple connections
US6681345B1 (en) * 2000-08-15 2004-01-20 International Business Machines Corporation Field protection against thread loss in a multithreaded computer processor
US20020087844A1 (en) * 2000-12-29 2002-07-04 Udo Walterscheidt Apparatus and method for concealing switch latency
US7225361B2 (en) * 2001-02-28 2007-05-29 Wily Technology, Inc. Detecting a stalled routine
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US6526491B2 (en) * 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
US7516334B2 (en) * 2001-03-22 2009-04-07 Sony Computer Entertainment Inc. Power management for processing modules
US7231500B2 (en) * 2001-03-22 2007-06-12 Sony Computer Entertainment Inc. External data interface in a computer architecture for broadband networks
US7093104B2 (en) * 2001-03-22 2006-08-15 Sony Computer Entertainment Inc. Processing modules for computer architecture for broadband networks
US20030014474A1 (en) * 2001-05-30 2003-01-16 Mckaig Ray S. Alternate zero overhead task change circuit
US6976155B2 (en) * 2001-06-12 2005-12-13 Intel Corporation Method and apparatus for communicating between processing entities in a multi-processor
US6880002B2 (en) * 2001-09-05 2005-04-12 Surgient, Inc. Virtualized logical server cloud providing non-deterministic allocation of logical attributes of logical servers to physical resources
US20030069917A1 (en) * 2001-10-04 2003-04-10 Miller Larry J. Balanced client/server mechanism in a time-partitioned real-time operting system
US7248585B2 (en) 2001-10-22 2007-07-24 Sun Microsystems, Inc. Method and apparatus for a packet classifier
US7117497B2 (en) 2001-11-08 2006-10-03 Honeywell International, Inc. Budget transfer mechanism for time-partitioned real-time operating systems
US6957287B2 (en) * 2001-11-09 2005-10-18 Aten International Co., Ltd. Asynchronous/synchronous KVMP switch for console and peripheral devices
US8176226B2 (en) * 2001-11-09 2012-05-08 Aten International Co., Ltd. KVMP switch allowing asynchronous and synchronous switching for console devices and peripheral devices among different computers
US7574496B2 (en) 2001-11-30 2009-08-11 Surgient, Inc. Virtual server cloud interfacing
US6963342B2 (en) * 2002-02-28 2005-11-08 Sun Microsystems, Inc. Arbitration scheme for efficient parallel processing
US7257584B2 (en) 2002-03-18 2007-08-14 Surgient, Inc. Server file management
US6990666B2 (en) * 2002-03-18 2006-01-24 Surgient Inc. Near on-line server
US8024735B2 (en) * 2002-06-14 2011-09-20 Intel Corporation Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
US7155721B2 (en) * 2002-06-28 2006-12-26 Hewlett-Packard Development Company, L.P. Method and apparatus for communicating information between lock stepped processors
US7296259B2 (en) * 2002-09-11 2007-11-13 Agere Systems Inc. Processor system with cache-based software breakpoints
US7096470B2 (en) * 2002-09-19 2006-08-22 International Business Machines Corporation Method and apparatus for implementing thread replacement for optimal performance in a two-tiered multithreading structure
SE524606C2 (sv) * 2002-09-20 2004-08-31 Saab Ab En digital signalprocessor som är händelsestyrd
US20050033889A1 (en) * 2002-10-08 2005-02-10 Hass David T. Advanced processor with interrupt delivery mechanism for multi-threaded multi-CPU system on a chip
US7346757B2 (en) 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US7984268B2 (en) * 2002-10-08 2011-07-19 Netlogic Microsystems, Inc. Advanced processor scheduling in a multithreaded system
US8478811B2 (en) * 2002-10-08 2013-07-02 Netlogic Microsystems, Inc. Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip
US7961723B2 (en) * 2002-10-08 2011-06-14 Netlogic Microsystems, Inc. Advanced processor with mechanism for enforcing ordering between information sent on two independent networks
US7924828B2 (en) * 2002-10-08 2011-04-12 Netlogic Microsystems, Inc. Advanced processor with mechanism for fast packet queuing operations
US7627721B2 (en) 2002-10-08 2009-12-01 Rmi Corporation Advanced processor with cache coherency
US8176298B2 (en) * 2002-10-08 2012-05-08 Netlogic Microsystems, Inc. Multi-core multi-threaded processing systems with instruction reordering in an in-order pipeline
US8037224B2 (en) * 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US9088474B2 (en) * 2002-10-08 2015-07-21 Broadcom Corporation Advanced processor with interfacing messaging network to a CPU
US7334086B2 (en) 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
US8015567B2 (en) * 2002-10-08 2011-09-06 Netlogic Microsystems, Inc. Advanced processor with mechanism for packet distribution at high line rate
US6971103B2 (en) * 2002-10-15 2005-11-29 Sandbridge Technologies, Inc. Inter-thread communications using shared interrupt register
US7398518B2 (en) * 2002-12-17 2008-07-08 Intel Corporation Method and apparatus for measuring thread wait time
US7822950B1 (en) 2003-01-22 2010-10-26 Ubicom, Inc. Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls
US7181741B2 (en) * 2003-01-30 2007-02-20 Hewlett-Packard Development Company, L.P. Apparatus and method to minimize blocking overhead in upcall based MxN threads
US7152170B2 (en) * 2003-02-20 2006-12-19 Samsung Electronics Co., Ltd. Simultaneous multi-threading processor circuits and computer program products configured to operate at different performance levels based on a number of operating threads and methods of operating
US7000047B2 (en) * 2003-04-23 2006-02-14 International Business Machines Corporation Mechanism for effectively handling livelocks in a simultaneous multithreading processor
US7363625B2 (en) * 2003-04-24 2008-04-22 International Business Machines Corporation Method for changing a thread priority in a simultaneous multithread processor
US7360062B2 (en) * 2003-04-25 2008-04-15 International Business Machines Corporation Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
US7401208B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor
US7401207B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Apparatus and method for adjusting instruction thread priority in a multi-thread processor
US7318222B2 (en) * 2003-08-27 2008-01-08 Sun Microsystems, Inc. Methods for execution control acquistion of a program and for executing an optimized version of a program
US7496921B2 (en) * 2003-08-29 2009-02-24 Intel Corporation Processing block with integrated light weight multi-threading support
US7269830B2 (en) * 2003-09-16 2007-09-11 Sun Microsystems, Inc. Methods and hardware for safe memory allocation in arbitrary program environments
US7769004B2 (en) * 2003-09-26 2010-08-03 Surgient, Inc. Network abstraction and isolation layer for masquerading machine identity of a computer
US7643484B2 (en) * 2003-09-26 2010-01-05 Surgient, Inc. Network abstraction and isolation layer rules-based federation and masquerading
US20050071841A1 (en) * 2003-09-30 2005-03-31 Hoflehner Gerolf F. Methods and apparatuses for thread management of mult-threading
WO2005055058A1 (en) * 2003-12-04 2005-06-16 Matsushita Electric Industrial Co., Ltd. Task scheduling device, method, program, recording medium, and transmission medium for priority-driven periodic process scheduling
US7360064B1 (en) 2003-12-10 2008-04-15 Cisco Technology, Inc. Thread interleaving in a multithreaded embedded processor
US7441101B1 (en) 2003-12-10 2008-10-21 Cisco Technology, Inc. Thread-aware instruction fetching in a multithreaded embedded processor
US20060212874A1 (en) * 2003-12-12 2006-09-21 Johnson Erik J Inserting instructions
US20050132363A1 (en) * 2003-12-16 2005-06-16 Vijay Tewari Method, apparatus and system for optimizing context switching between virtual machines
US20050132367A1 (en) * 2003-12-16 2005-06-16 Vijay Tewari Method, apparatus and system for proxying, aggregating and optimizing virtual machine information for network-based management
US20050132364A1 (en) * 2003-12-16 2005-06-16 Vijay Tewari Method, apparatus and system for optimizing context switching between virtual machines
US7669203B2 (en) * 2003-12-19 2010-02-23 Intel Corporation Virtual multithreading translation mechanism including retrofit capability
US8694976B2 (en) * 2003-12-19 2014-04-08 Intel Corporation Sleep state mechanism for virtual multithreading
US7206922B1 (en) 2003-12-30 2007-04-17 Cisco Systems, Inc. Instruction memory hierarchy for an embedded processor
US20050166177A1 (en) * 2004-01-27 2005-07-28 Ylian Saint-Hilaire Thread module chaining
US20050198475A1 (en) * 2004-02-06 2005-09-08 Infineon Technologies, Inc. Thread selection unit and method to fairly allocate processor cycles in a block multithreaded processor
US8224639B2 (en) 2004-03-29 2012-07-17 Sony Computer Entertainment Inc. Methods and apparatus for achieving thermal management using processing task scheduling
US7478225B1 (en) 2004-06-30 2009-01-13 Sun Microsystems, Inc. Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor
US7373489B1 (en) 2004-06-30 2008-05-13 Sun Microsystems, Inc. Apparatus and method for floating-point exception prediction and recovery
US7383403B1 (en) 2004-06-30 2008-06-03 Sun Microsystems, Inc. Concurrent bypass to instruction buffers in a fine grain multithreaded processor
US7343474B1 (en) 2004-06-30 2008-03-11 Sun Microsystems, Inc. Minimal address state in a fine grain multithreaded processor
US7523330B2 (en) * 2004-06-30 2009-04-21 Sun Microsystems, Inc. Thread-based clock enabling in a multi-threaded processor
US7747771B1 (en) 2004-06-30 2010-06-29 Oracle America, Inc. Register access protocol in a multihreaded multi-core processor
US7941642B1 (en) 2004-06-30 2011-05-10 Oracle America, Inc. Method for selecting between divide instructions associated with respective threads in a multi-threaded processor
US7434000B1 (en) 2004-06-30 2008-10-07 Sun Microsystems, Inc. Handling duplicate cache misses in a multithreaded/multi-core processor
US7676655B2 (en) * 2004-06-30 2010-03-09 Sun Microsystems, Inc. Single bit control of threads in a multithreaded multicore processor
US7861063B1 (en) 2004-06-30 2010-12-28 Oracle America, Inc. Delay slot handling in a processor
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
US7890734B2 (en) * 2004-06-30 2011-02-15 Open Computing Trust I & II Mechanism for selecting instructions for execution in a multithreaded processor
US7216216B1 (en) 2004-06-30 2007-05-08 Sun Microsystems, Inc. Register window management using first pipeline to change current window and second pipeline to read operand from old window and write operand to new window
US7185178B1 (en) 2004-06-30 2007-02-27 Sun Microsystems, Inc. Fetch speculation in a multithreaded processor
US7426630B1 (en) 2004-06-30 2008-09-16 Sun Microsystems, Inc. Arbitration of window swap operations
US7533248B1 (en) 2004-06-30 2009-05-12 Sun Microsystems, Inc. Multithreaded processor including a functional unit shared between multiple requestors and arbitration therefor
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor
US8225034B1 (en) 2004-06-30 2012-07-17 Oracle America, Inc. Hybrid instruction buffer
US7774393B1 (en) 2004-06-30 2010-08-10 Oracle America, Inc. Apparatus and method for integer to floating-point format conversion
US7353364B1 (en) 2004-06-30 2008-04-01 Sun Microsystems, Inc. Apparatus and method for sharing a functional unit execution resource among a plurality of functional units
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US8095778B1 (en) 2004-06-30 2012-01-10 Open Computing Trust I & II Method and system for sharing functional units of a multithreaded processor
US7178005B1 (en) 2004-06-30 2007-02-13 Sun Microsystems, Inc. Efficient implementation of timers in a multithreaded processor
US7702887B1 (en) 2004-06-30 2010-04-20 Sun Microsystems, Inc. Performance instrumentation in a fine grain multithreaded multicore processor
US7370243B1 (en) 2004-06-30 2008-05-06 Sun Microsystems, Inc. Precise error handling in a fine grain multithreaded multicore processor
US20060031837A1 (en) * 2004-08-05 2006-02-09 International Business Machines Corporation Thread starvation profiler
US7392366B2 (en) * 2004-09-17 2008-06-24 International Business Machines Corp. Adaptive fetch gating in multithreaded processors, fetch control and method of controlling fetches
US20060095730A1 (en) * 2004-09-30 2006-05-04 Gilbert Wolrich Expansion of compute engine code space by sharing adjacent control stores using interleaved program addresses
US8453157B2 (en) * 2004-11-16 2013-05-28 International Business Machines Corporation Thread synchronization in simultaneous multi-threaded processor machines
US7418576B1 (en) 2004-11-17 2008-08-26 Nvidia Corporation Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations
US8789051B2 (en) 2004-11-18 2014-07-22 Hamilton Sundstrand Corporation Operating system and architecture for embedded system
US8037250B1 (en) 2004-12-09 2011-10-11 Oracle America, Inc. Arbitrating cache misses in a multithreaded/multi-core processor
US9606821B2 (en) 2004-12-17 2017-03-28 Intel Corporation Virtual environment manager for creating and managing virtual machine environments
US7735081B2 (en) * 2004-12-17 2010-06-08 Intel Corporation Method, apparatus and system for transparent unification of virtual machines
US20060143617A1 (en) * 2004-12-29 2006-06-29 Knauerhase Robert C Method, apparatus and system for dynamic allocation of virtual platform resources
US7752627B2 (en) 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor
US7681014B2 (en) * 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
US7664936B2 (en) * 2005-02-04 2010-02-16 Mips Technologies, Inc. Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages
US7657883B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor
US7657891B2 (en) 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7490230B2 (en) * 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor
US7853777B2 (en) * 2005-02-04 2010-12-14 Mips Technologies, Inc. Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
US7613904B2 (en) * 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
US7631130B2 (en) * 2005-02-04 2009-12-08 Mips Technologies, Inc Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor
US7506140B2 (en) * 2005-02-04 2009-03-17 Mips Technologies, Inc. Return data selector employing barrel-incrementer-based round-robin apparatus
US7492718B2 (en) * 2005-02-10 2009-02-17 Wind River Systems, Inc. Serial protocol controller that supports subroutine calls
US7921365B2 (en) 2005-02-15 2011-04-05 Microsoft Corporation System and method for browsing tabbed-heterogeneous windows
US7870311B2 (en) * 2005-02-24 2011-01-11 Wind River Systems, Inc. Preemptive packet flow controller
US7917907B2 (en) * 2005-03-23 2011-03-29 Qualcomm Incorporated Method and system for variable thread allocation and switching in a multithreaded processor
US8230423B2 (en) * 2005-04-07 2012-07-24 International Business Machines Corporation Multithreaded processor architecture with operational latency hiding
CN100530105C (zh) * 2005-06-30 2009-08-19 华为技术有限公司 多任务软件系统中并发事件的处理装置和方法
GB0516474D0 (en) * 2005-08-10 2005-09-14 Symbian Software Ltd Pre-emptible context switching in a computing device
US7823158B2 (en) * 2005-08-18 2010-10-26 International Business Machines Corporation Adaptive scheduling and management of work processing in a target context in resource contention
US20070055852A1 (en) * 2005-09-06 2007-03-08 Alcatel Processing operation management systems and methods
US20070088680A1 (en) * 2005-10-14 2007-04-19 Microsoft Corporation Simultaneously spawning multiple searches across multiple providers
US7913255B2 (en) * 2005-10-20 2011-03-22 Qualcomm Incorporated Background thread processing in a multithread digital signal processor
US7661115B2 (en) * 2006-01-30 2010-02-09 International Business Machines Corporation Method, apparatus and program storage device for preserving locked pages in memory when in user mode
US8078728B1 (en) 2006-03-31 2011-12-13 Quest Software, Inc. Capacity pooling for application reservation and delivery
CN102684988B (zh) * 2006-04-26 2015-02-11 日本电信电话株式会社 负荷控制装置及其方法
US8001549B2 (en) * 2006-04-27 2011-08-16 Panasonic Corporation Multithreaded computer system and multithread execution control method
US7565624B2 (en) 2006-06-30 2009-07-21 Research In Motion Limited Method of learning character segments during text input, and associated handheld electronic device
US7665037B2 (en) 2006-06-30 2010-02-16 Research In Motion Limited Method of learning character segments from received text, and associated handheld electronic device
US8395586B2 (en) 2006-06-30 2013-03-12 Research In Motion Limited Method of learning a context of a segment of text, and associated handheld electronic device
US20080263324A1 (en) * 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
US7961745B2 (en) * 2006-09-16 2011-06-14 Mips Technologies, Inc. Bifurcated transaction selector supporting dynamic priorities in multi-port switch
US7990989B2 (en) * 2006-09-16 2011-08-02 Mips Technologies, Inc. Transaction selector employing transaction queue group priorities in multi-port switch
US7760748B2 (en) * 2006-09-16 2010-07-20 Mips Technologies, Inc. Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch
US7773621B2 (en) * 2006-09-16 2010-08-10 Mips Technologies, Inc. Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch
US7859548B1 (en) 2006-10-19 2010-12-28 Nvidia Corporation Offloading cube map calculations to a shader
US8370806B2 (en) 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US8380966B2 (en) * 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8341604B2 (en) * 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US8533530B2 (en) * 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
US8020166B2 (en) * 2007-01-25 2011-09-13 Hewlett-Packard Development Company, L.P. Dynamically controlling the number of busy waiters in a synchronization object
US8347068B2 (en) * 2007-04-04 2013-01-01 International Business Machines Corporation Multi-mode register rename mechanism that augments logical registers by switching a physical register from the register rename buffer when switching between in-order and out-of-order instruction processing in a simultaneous multi-threaded microprocessor
US8799902B2 (en) * 2007-04-09 2014-08-05 Intel Corporation Priority based throttling for power/performance quality of service
US8484516B2 (en) * 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
US8219996B1 (en) * 2007-05-09 2012-07-10 Hewlett-Packard Development Company, L.P. Computer processor with fairness monitor
US8832702B2 (en) 2007-05-10 2014-09-09 Freescale Semiconductor, Inc. Thread de-emphasis instruction for multithreaded processor
GB2451845B (en) * 2007-08-14 2010-03-17 Imagination Tech Ltd Compound instructions in a multi-threaded processor
US8095932B2 (en) * 2007-08-14 2012-01-10 Intel Corporation Providing quality of service via thread priority in a hyper-threaded microprocessor
US8341641B2 (en) 2007-08-16 2012-12-25 Kernelon Silicon Inc. Task processor
US8117618B2 (en) 2007-10-12 2012-02-14 Freescale Semiconductor, Inc. Forward progress mechanism for a multithreaded processor
US7779234B2 (en) * 2007-10-23 2010-08-17 International Business Machines Corporation System and method for implementing a hardware-supported thread assist under load lookahead mechanism for a microprocessor
US8194674B1 (en) 2007-12-20 2012-06-05 Quest Software, Inc. System and method for aggregating communications and for translating between overlapping internal network addresses and unique external network addresses
US7941646B2 (en) 2007-12-31 2011-05-10 Freescale Semicondoctor, Inc. Completion continue on thread switch based on instruction progress metric mechanism for a microprocessor
US9596324B2 (en) * 2008-02-08 2017-03-14 Broadcom Corporation System and method for parsing and allocating a plurality of packets to processor core threads
US8615647B2 (en) 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US8151008B2 (en) * 2008-07-02 2012-04-03 Cradle Ip, Llc Method and system for performing DMA in a multi-core system-on-chip using deadline-based scheduling
US8656145B2 (en) * 2008-09-19 2014-02-18 Qualcomm Incorporated Methods and systems for allocating interrupts in a multithreaded processor
US8429658B2 (en) * 2008-10-16 2013-04-23 International Business Machines Corporation Lock deferral for real-time garbage collection
US8205203B2 (en) * 2008-10-16 2012-06-19 International Business Machines Corporation Scheduling for real-time garbage collection
US8024719B2 (en) 2008-11-03 2011-09-20 Advanced Micro Devices, Inc. Bounded hash table sorting in a dynamic program profiling system
US20100115494A1 (en) * 2008-11-03 2010-05-06 Gorton Jr Richard C System for dynamic program profiling
US8478948B2 (en) * 2008-12-04 2013-07-02 Oracle America, Inc. Method and system for efficient tracing and profiling of memory accesses during program execution
JP5463076B2 (ja) * 2009-05-28 2014-04-09 パナソニック株式会社 マルチスレッドプロセッサ
CN101661386B (zh) * 2009-09-24 2013-03-20 成都市华为赛门铁克科技有限公司 多硬件线程处理器的业务处理装置及其业务处理方法
CN101673223B (zh) * 2009-10-22 2012-03-21 同济大学 基于片上多处理器的线程调度实现方法
US20110179303A1 (en) 2010-01-15 2011-07-21 Microsoft Corporation Persistent application activation and timer notifications
JP5376042B2 (ja) * 2010-03-18 2013-12-25 富士通株式会社 マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム
JP2012033001A (ja) 2010-07-30 2012-02-16 Toshiba Corp 情報処理装置および情報処理方法
US9652234B2 (en) * 2011-09-30 2017-05-16 Intel Corporation Instruction and logic to control transfer in a partial binary translation system
GB2497736A (en) * 2011-12-16 2013-06-26 St Microelectronics Ltd Hardware monitor with context selector for selecting from multiple contexts
US9570124B2 (en) * 2012-01-11 2017-02-14 Viavi Solutions Inc. High speed logging system
US9110717B2 (en) 2012-07-05 2015-08-18 International Business Machines Corporation Managing use of lease resources allocated on fallover in a high availability computing environment
US20140181484A1 (en) * 2012-12-21 2014-06-26 James Callister Mechanism to provide high performance and fairness in a multi-threading computer system
US9569260B2 (en) 2013-05-31 2017-02-14 Microsoft Technology Licensing, Llc Efficient priority-aware thread scheduling
KR102148948B1 (ko) * 2013-12-06 2020-08-27 삼성전자주식회사 전자 장치의 멀티 태스킹 방법 및 그 전자 장치
US9323574B2 (en) * 2014-02-21 2016-04-26 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Processor power optimization with response time assurance
US9817693B2 (en) * 2014-03-14 2017-11-14 International Business Machines Corporation Coherence protocol augmentation to indicate transaction status
US9772867B2 (en) * 2014-03-27 2017-09-26 International Business Machines Corporation Control area for managing multiple threads in a computer
US9734033B2 (en) 2014-12-08 2017-08-15 International Business Machines Corporation Implementing processor functional verification by generating and running constrained random irritator tests for multiple processor system and processor core with multiple threads
CN104750561B (zh) * 2015-04-15 2019-09-10 苏州中晟宏芯信息科技有限公司 寄存器堆缓存资源的动态释放方法、系统及一种处理器
US10908909B2 (en) 2015-06-09 2021-02-02 Optimum Semiconductor Technologies Inc. Processor with mode support
US10706101B2 (en) 2016-04-14 2020-07-07 Advanced Micro Devices, Inc. Bucketized hash tables with remap entries
GB2565338B (en) * 2017-08-10 2020-06-03 Mips Tech Llc Fault detecting and fault tolerant multi-threaded processors
US10503550B2 (en) 2017-09-30 2019-12-10 Intel Corporation Dynamic performance biasing in a processor
US11068274B2 (en) * 2017-12-15 2021-07-20 International Business Machines Corporation Prioritized instructions in an instruction completion table of a simultaneous multithreading processor
US10705843B2 (en) * 2017-12-21 2020-07-07 International Business Machines Corporation Method and system for detection of thread stall
WO2019129389A1 (en) * 2017-12-26 2019-07-04 Silicon Mobility Sas Flexible logic unit adapted for real-time task switching
KR102407106B1 (ko) * 2018-01-29 2022-06-10 마이크론 테크놀로지, 인크. 프로그래밍 가능한 원자적 동작을 하는 메모리 컨트롤러
CN110647357B (zh) * 2018-06-27 2021-12-03 展讯通信(上海)有限公司 同步多线程处理器
US10691490B2 (en) * 2018-07-06 2020-06-23 Apple Inc. System for scheduling threads for execution
CN111625322B (zh) * 2019-02-27 2024-03-29 阿里巴巴集团控股有限公司 数据处理方法、系统及设备
CN110987742B (zh) * 2019-11-26 2022-11-18 杨建才 一种污水处理中悬浮物含量的控制检测方法、装置及计算机设备
CN111459544B (zh) * 2020-03-03 2022-10-28 北京和利时系统工程有限公司 安全计算机板卡中多对线程数据表决方法、介质和装置
CN114461353A (zh) * 2020-11-09 2022-05-10 中兴通讯股份有限公司 调整线程优先级的方法、终端及计算机可读存储介质
CN112395064A (zh) * 2020-11-18 2021-02-23 中国联合网络通信集团有限公司 一种线程调度方法及装置
CN114327606B (zh) * 2022-03-11 2022-07-05 武汉中科通达高新技术股份有限公司 配置管理方法、装置、电子设备及计算机可读存储介质
CN115225633B (zh) * 2022-06-24 2024-04-12 浪潮软件集团有限公司 基于对端网络信号的状态机状态转换方法及系统

Family Cites Families (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3373408A (en) 1965-04-16 1968-03-12 Rca Corp Computer capable of switching between programs without storage and retrieval of the contents of operation registers
US3566357A (en) 1966-07-05 1971-02-23 Rca Corp Multi-processor multi-programed computer system
DE1549531A1 (de) 1966-08-16 1971-04-01 Scient Data Systems Inc Digitale Rechenanlage
US3568173A (en) 1968-08-19 1971-03-02 Scient Data Systems Inc Memory stroage element drive circuit
US3728692A (en) 1971-08-31 1973-04-17 Ibm Instruction selection in a two-program counter instruction unit
US3771138A (en) 1971-08-31 1973-11-06 Ibm Apparatus and method for serializing instructions from two independent instruction streams
US3916383A (en) 1973-02-20 1975-10-28 Memorex Corp Multi-processor data processing system
FR2253428A5 (ja) 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
IT1000638B (it) 1973-12-28 1976-04-10 Olivetti & Co Spa Calcolatore elettronico con dispo sitivo di deviazione dei micropro grammi
US3980992A (en) 1974-11-26 1976-09-14 Burroughs Corporation Multi-microprocessing unit on a single semiconductor chip
US4047161A (en) 1976-04-30 1977-09-06 International Business Machines Corporation Task management apparatus
US4296466A (en) * 1978-01-23 1981-10-20 Data General Corporation Data processing system including a separate input/output processor with micro-interrupt request apparatus
US4229790A (en) 1978-10-16 1980-10-21 Denelcor, Inc. Concurrent task and instruction processor and method
US4320453A (en) 1978-11-02 1982-03-16 Digital House, Ltd. Dual sequencer microprocessor
FR2471631B1 (fr) 1979-12-11 1986-02-21 Cii Honeywell Bull Dispositif de synchronisation et d'affectation de processus entre plusieurs processeurs dans un systeme de traitement de l'information
US4384324A (en) 1980-05-06 1983-05-17 Burroughs Corporation Microprogrammed digital data processing system employing tasking at a microinstruction level
US4493020A (en) 1980-05-06 1985-01-08 Burroughs Corporation Microprogrammed digital data processor employing microinstruction tasking and dynamic register allocation
US4532587A (en) 1981-08-26 1985-07-30 Texas Instruments Incorporated Single chip processor connected to an external memory chip
US5694603A (en) 1982-09-28 1997-12-02 Reiffin; Martin G. Computer memory product with preemptive multithreading software
US4704678A (en) 1982-11-26 1987-11-03 Inmos Limited Function set for a microcomputer
GB8309770D0 (en) 1983-04-11 1983-05-18 Inmos Ltd Microcomputer
US5103394A (en) 1984-04-30 1992-04-07 Hewlett-Packard Company Software performance analyzer
US4914570A (en) * 1986-09-15 1990-04-03 Counterpoint Computers, Inc. Process distribution and sharing system for multiple processor computer system
US4829425A (en) 1986-10-21 1989-05-09 Intel Corporation Memory-based interagent communication mechanism
JPS63123218A (ja) 1986-11-12 1988-05-27 Nec Corp タイマ/カウンタ回路
US4853849A (en) 1986-12-17 1989-08-01 Intel Corporation Multi-tasking register set mapping system which changes a register set pointer block bit during access instruction
DE68909426T2 (de) 1988-01-15 1994-01-27 Quantel Ltd Datenverarbeitung und -übertragung.
US5159686A (en) 1988-02-29 1992-10-27 Convex Computer Corporation Multi-processor computer system having process-independent communication register addressing
US5050070A (en) 1988-02-29 1991-09-17 Convex Computer Corporation Multi-processor computer system having self-allocating processors
US5148536A (en) 1988-07-25 1992-09-15 Digital Equipment Corporation Pipeline having an integral cache which processes cache misses and loads data in parallel
US5353418A (en) 1989-05-26 1994-10-04 Massachusetts Institute Of Technology System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread
WO1990014629A2 (en) 1989-05-26 1990-11-29 Massachusetts Institute Of Technology Parallel multithreaded data processing system
GB2234613B (en) 1989-08-03 1993-07-07 Sun Microsystems Inc Method and apparatus for switching context of state elements in a microprocessor
US5079725A (en) 1989-11-17 1992-01-07 Ibm Corporation Chip identification method for use with scan design systems and scan testing techniques
US5471593A (en) 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5197138A (en) 1989-12-26 1993-03-23 Digital Equipment Corporation Reporting delayed coprocessor exceptions to code threads having caused the exceptions by saving and restoring exception state during code thread switching
US5179702A (en) 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
US5339415A (en) 1990-06-11 1994-08-16 Cray Research, Inc. Dual level scheduling of processes to multiple parallel regions of a multi-threaded program on a tightly coupled multiprocessor computer system
EP0474297B1 (en) 1990-09-05 1998-06-10 Koninklijke Philips Electronics N.V. Very long instruction word machine for efficient execution of programs with conditional branches
DE69130723T2 (de) 1990-10-05 1999-07-22 Koninkl Philips Electronics Nv Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten
JP2743608B2 (ja) 1991-03-27 1998-04-22 日本電気株式会社 共有レジスタ制御方式
US5430850A (en) 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US5530866A (en) 1991-07-30 1996-06-25 Tera Computer Company Register allocation methods having upward pass for determining and propagating variable usage information and downward pass for binding; both passes utilizing interference graphs via coloring
US5247675A (en) 1991-08-09 1993-09-21 International Business Machines Corporation Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system
US5630128A (en) 1991-08-09 1997-05-13 International Business Machines Corporation Controlled scheduling of program threads in a multitasking operating system
US5524250A (en) 1991-08-23 1996-06-04 Silicon Graphics, Inc. Central processing unit for processing a plurality of threads using dedicated general purpose registers and masque register for providing access to the registers
US5357617A (en) 1991-11-22 1994-10-18 International Business Machines Corporation Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
US5404469A (en) 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US6021425A (en) * 1992-04-03 2000-02-01 International Business Machines Corporation System and method for optimizing dispatch latency of tasks in a data processing system
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
JP3309425B2 (ja) 1992-05-22 2002-07-29 松下電器産業株式会社 キャッシュ制御装置
US5515538A (en) 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US5423008A (en) 1992-08-03 1995-06-06 Silicon Graphics, Inc. Apparatus and method for detecting the activities of a plurality of processors on a shared bus
CA2128393C (en) * 1992-12-23 2001-10-02 Jean-Felix Perotto Multi-tasking low-power controller
DE69325785T2 (de) 1992-12-29 2000-02-17 Koninkl Philips Electronics Nv Verbesserte Architektur für Prozessor mit sehr langem Befehlswort
EP0617361B1 (en) 1993-03-26 2001-11-28 Cabletron Systems, Inc. Scheduling method and apparatus for a communication network
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
US5490272A (en) 1994-01-28 1996-02-06 International Business Machines Corporation Method and apparatus for creating multithreaded time slices in a multitasking operating system
US5613114A (en) 1994-04-15 1997-03-18 Apple Computer, Inc System and method for custom context switching
US5752031A (en) * 1995-04-24 1998-05-12 Microsoft Corporation Queue object for controlling concurrency in a computer system
JPH096633A (ja) 1995-06-07 1997-01-10 Internatl Business Mach Corp <Ibm> データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム
US5630136A (en) 1995-06-09 1997-05-13 Sun Microsystems, Inc. Method and apparatus for serializing access to multithreading unsafe resources
US5826081A (en) 1996-05-06 1998-10-20 Sun Microsystems, Inc. Real time thread dispatcher for multiprocessor applications
US5933627A (en) 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US6088788A (en) * 1996-12-27 2000-07-11 International Business Machines Corporation Background completion of instruction and associated fetch request in a multithread processor
US5864701A (en) * 1997-02-14 1999-01-26 Integrated Device Technology, Inc. Apparatus and method for managing interrupt delay associated with mask flag transition
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
US6341347B1 (en) 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004326749A (ja) * 2003-04-24 2004-11-18 Internatl Business Mach Corp <Ibm> マルチスレッド・プロセッサを単一スレッド・モード及び同時マルチスレッド・モードの間で動的に切り替える装置及び方法
US7496915B2 (en) 2003-04-24 2009-02-24 International Business Machines Corporation Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes
US8458709B2 (en) 2003-04-24 2013-06-04 International Business Machines Corporation Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes
JP2007519101A (ja) * 2003-12-30 2007-07-12 インテル コーポレイション 投機的メモリサポートを利用した冗長なマルチスレッディングシステムにおける故障検出のための外部メモリの更新管理
US8108859B2 (en) 2004-04-21 2012-01-31 Fujitsu Limited Processor for controlling tread switching
JP2016212639A (ja) * 2015-05-08 2016-12-15 富士通株式会社 演算装置、スレッド切替方法、及びマルチスレッドプログラム
US10387190B2 (en) 2015-05-08 2019-08-20 Fujitsu Limited System and method of executing a plurality of threads using thread switching on execution time-out using instruction re-write
US9965283B2 (en) 2015-05-22 2018-05-08 Fujitsu Limited Multi-threaded processor interrupting and saving execution states of complex instructions of a first thread to allow execution of an oldest ready instruction of a second thread

Also Published As

Publication number Publication date
TW406241B (en) 2000-09-21
EP1027645B1 (en) 2002-09-04
CN1276887A (zh) 2000-12-13
DE69807729D1 (de) 2002-10-10
EP1027645A1 (en) 2000-08-16
JP3595504B2 (ja) 2004-12-02
IL135459A (en) 2004-02-19
CN1127017C (zh) 2003-11-05
IL135459A0 (en) 2001-05-20
WO1999021083A1 (en) 1999-04-29
DE69807729T2 (de) 2003-06-05
US6567839B1 (en) 2003-05-20

Similar Documents

Publication Publication Date Title
JP3595504B2 (ja) マルチスレッド式プロセッサにおけるコンピュータ処理方法
JP3714598B2 (ja) マルチスレッド式プロセッサでのスレッド優先順位の変更
JP4006180B2 (ja) マルチスレッド式プロセッサでスレッド切替えイベントを選択するための方法および装置
US6105051A (en) Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6076157A (en) Method and apparatus to force a thread switch in a multithreaded processor
US6018759A (en) Thread switch tuning tool for optimal performance in a computer processor
US6061710A (en) Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US8996761B2 (en) Virtual queue processing circuit and task processor
US7676808B2 (en) System and method for CPI load balancing in SMT processors
US8539485B2 (en) Polling using reservation mechanism
US20170357536A1 (en) Task processing device
US20040216101A1 (en) Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor
US20040215932A1 (en) Method and logical apparatus for managing thread execution in a simultaneous multi-threaded (SMT) processor
US8635621B2 (en) Method and apparatus to implement software to hardware thread priority
CZ20001437A3 (cs) Způsob a zařízení pro výběr událostí přepínání vláken ve vícevláknovém procesoru

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040302

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040531

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040831

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040903

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080910

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20080910

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090910

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090910

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100910

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100910

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110910

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120910

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130910

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees