JP2007517322A - プロセッサにおける同時物理スレッド数からの論理スレッド数のデカップリング - Google Patents

プロセッサにおける同時物理スレッド数からの論理スレッド数のデカップリング Download PDF

Info

Publication number
JP2007517322A
JP2007517322A JP2006547293A JP2006547293A JP2007517322A JP 2007517322 A JP2007517322 A JP 2007517322A JP 2006547293 A JP2006547293 A JP 2006547293A JP 2006547293 A JP2006547293 A JP 2006547293A JP 2007517322 A JP2007517322 A JP 2007517322A
Authority
JP
Japan
Prior art keywords
thread
logical
state
threads
triggering event
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
JP2006547293A
Other languages
English (en)
Other versions
JP4599365B2 (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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2007517322A publication Critical patent/JP2007517322A/ja
Application granted granted Critical
Publication of JP4599365B2 publication Critical patent/JP4599365B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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
    • 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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

論理スレッドの数が、物理スレッドの数よりも多い場合、または、少ない場合において、複数の論理スレッドを、複数の同時物理スレッドによりサポートするスレッドの管理システム及び管理方法。一例として、複数の論理スレッドの各々が、ウエイト状態、アクティブ状態、ドレイン状態、及びストール状態の1つにおいて維持され、また、ステートマシン及びハードウエアシーケンサが、トリガリングイベントに応じた状態と、割り込み可能なポイントが論理スレッドにあるか否かの状態との間に、論理スレッドを移行するために使用される。論理スレッドが、優先度、性能、公平度などにより、物理スレッドに適合されるが各論理スレッドに対し利用可能なリソースを特定することも可能である。一例として、1つの論理スレッドが、未使用である1つ以上の物理スレッドを故意的に使用してもよい。

Description

本発明の複数の実施形態は、コンピュータシステムに関する。具体的には、複数の実施形態は、同時スレッドを実行するコンピュータ・アーキテクチャの改良に関する。
近年、コンピュータの機能を高めることの需要性が増加するに伴い、プロセッサ・デザイナー及びメーカーにて、数多くの試みが実施されている。例えば、インターネットの利用、及びマルチメディアの適用が着実に増えるにつれ、処理量の増大、あるいは複数のスレッドの実行、また、同時に、プロセッサ及びメモリ資源へのアクセスが必要となる。1台のプロセッサで、複数のスレッドを同時に機能させることが可能なハイパー・スレッドなどにより、プロセッサの処理量は増大しているが、全ての問題点が解決しているわけではない。特に、スレッドの論理要素と物理要素をカップリングすることが、従来の試みとして実施されていたが、このような試みにおいては、処理量及び投機性に伴う問題が付随していた。一例として、処理量を増やすためには、同時スレッドの数を増やすことが考えられるが、スレッドの設計及び構築に伴うコストが増大するため、規定のプロセッサの物理的資源においては限界がある。このため、スレッドの数を増やすことによりプロセッサの処理量を増大させるには、実用上、限界があった。よって、実際に使用するスレッドの数を増やすことを必要とせずに、同時スレッドの有効数を増やすことが可能なマルチ・スレッド・アプローチ(Multi-threading approach)を提供することを目的とする。
また、1つ以上のスレッド物理要素において、論理要素を実行させる投機は、各スレッドの論理要素を各スレッドの物理要素にカップリングする従来の手段においては達成できないことより、プロセッサの処理量の増大に係わる改良においても限界があった。よって、投機実行が可能なマルチ・スレッド・アプローチ(Multi-threading approach)を提供することを目的とする。
本発明の複数の実施形態による様々な作用効果は、当業者が、後述の明細書、及び添付の請求項、及び図面を参照して実施可能である。
本発明の1つの実施形態に係わるステートマシンの一例を示す図である。
本発明の1つの実施形態に係わるアクティブ状態において、論理スレッドを維持するプロセスの一例を示すフローチャートである。
本発明の1つの実施形態に係わるドレイン状態において、論理スレッドを維持するプロセスの一例を示すフローチャートである。
本発明の1つの実施形態に係わるストール状態において、論理スレッドを維持するプロセスの一例を示すフローチャートである。
本発明の1つの実施形態に係わるウェイト状態において、論理スレッドを維持するプロセスの一例を示すフローチャートである。
本発明の1つの実施形態に係わるスレッド管理テーブルを示す図である。
本発明の1つの実施形態に係わる処理モード操作の一例を示す図である。
本発明の他の実施形態に係わる投機モード操作の一例を示す図である。
本発明の1つの実施形態に係わるコンピュータシステムの一例を示す図である。
発明の詳細な説明
複数の同時物理スレッドで、複数の論理スレッドをサポートすることにより、スレッドの構築及び設計に係わる従来の問題点を生じることなく、効率的な効果を達成することが可能なスレッドの管理システム及び管理方法を説明する。図1は、ウェイト状態12、アクティブ状態14、ドレイン状態16、及びストール状態18のうちの1つにおいて、複数の論理スレッドのそれぞれを維持する手段を示す構成図10である。各論理スレッドは、1つ以上のトリガリング・イベントが現れるまで、アクティブ状態14にて待機する。尚、トリガリング・イベントは、待ち時間、公正、及び優先順位などのさまざまな要因に関連する。トリガリング・イベントが有る場合には、論理スレッドはドレイン状態16に入力され、このドレイン状態16にて、プロセッサは、論理スレッドにおける割り込み可能なポイントを探す。尚、割り込み可能なポイントとは、ドレイン状態16に入力された論理スレッドが保存されているポイントである。割り込み可能なポイントが現れると、トリガリング・イベントが無くなるまで、あるいは、第一のトリガリング・イベントよりも優先順位の高いトリガリング・イベントが現れるまでの間は、論理スレッドは、ストール状態18に置かれる。これらのうちのいずれかの場合において、論理スレッドがウェイト状態12へと切り換えられる。例えば、トリガリング・イベントがキャッシュミスである場合には、キャッシュミスが、メモリにて使用可能になるまで、論理スレッドは、ストール状態18に待機する。次に、利用可能な物理スレッドが現れ、論理スレッドがアクティブ状態14に切り替わるまで、論理スレッドは、ウェイト状態にて待機する。よって、論理スレッドがアクティブ状態14から退去するとき、他の論理スレッドがアクティブ状態14に、絶えず切り替えられる。このため、論理スレッドと同時物理スレッドの間で、特有のデカップリング効果が得られる。
図2は、アクティブ状態にて、論理スレッドを維持するためのアクセスの一例を、より詳細に示す図である。処理ブロック20において、物理スレッドの次期命令ポインタ(NIP)に対し、論理スレッドに関連するマクロ命令がマッピングされる。尚、論理スレッドは、マクロ操作(あるいはUOP)において復号化されるマクロ命令の手順として観測される。例えば、マクロ命令の「Call」が、UOPの「Store」、「Test」、及び「Jump」に復号化される。この時、各々の同時物理スレッドは、それぞれ対応するNIPを有する。ここで、NIPとは、処理すべきマクロ命令のアドレスを効率的に示す時期命令ポインタである。このようにして、所定の論理スレッドのマクロ命令が、NIPに対しマッピングされるため、これらのマクロ命令は、フェッチされ、UOPに対し復号化された後、パイプライン処理装置の剰余演算子へ伝送される。
このような方法は、縮小命令セット・コンピュータ(RISC)アーキテクチャ、及び複数命令セット・コンピュータ(CISC)においても同様に適用される。尚、マクロ命令を、ミクロ動作シーケンスに変換することは、必ずしも必要ではない。
ブロック22において、1つ以上のトリガリング・イベントを処理するプロセッサが監視される。トリガリング・イベントは、メモリ待ち時間イベント、スリープ要求、及びスレッド優先イベントを有するが、これらに限定されるものではない。例えば、メモリ待ち時間イベントは、キャッシュミスとなりうる。キャッシュミスは、比較的長い待ち時間を有するメモリから、データを読み取ることを必要とするため、この場合、トリガリング・イベントを、パイプライン処理装置からスレッド管理ロジックへと連通させる。また、他の例として、メモリ待ち時間イベントにより、キャッシュミスを予測することが可能である。この場合、待ち時間のより長いメモリ階層のメモリからフェッチされるデータあるいは命令が必要とされる。尚、キャッシュミスは、さまざまな方法にて予測することが可能である。一例としては、スレッドが復号化される際に、ロードマイクロ操作が、未解決分岐よりも若い分岐である場合に、1つのアルゴニズムが、キャッシュミスとなる頻度の高いロードマイクロ操作を指定してもよい。尚、キャッシュミスを予測する方法は、本発明の主題ではないため、前述の例は、あくまでもトリガリングイベントを発生させるための一例にすぎない。また、トリガリングイベントにおいては、ある条件、すなわち、ウエイト状態にて利用可能な論理スレッドがある場合、これらの論理スレッドを実行したほうが、投機モードにおける現在の論理スレッドを実行するよりも、より効率がよいとの条件だけで、条件分岐が予測される。さらにまた、条件分岐は、現在の論理スレッドの優先順位によっても、確実に予測することが可能である。
他の種類のトリガリングイベントであるスリープ要求について説明する。例えば、「HALT」あるいは「MONITOR/MWAIT」命令を実行することにより、論理スレッドが所定のアドレスに保存されるまで、あるいは、入力信号(割り込み信号など)を受信するまでは、スレッド管理アーキテクチャに、論理スレッドの処理を停止させることが可能となる。また、トリガリング・イベントは、アクティブ論理スレッドよりも高い優先順位を有する他の論理スレッドからの割り込み指令であってもよい。一例として、優先順位の高い論理スレッドとは、物理スレッドへのアクセスができない場合には、「画面のちらつき」を表示する画面更新用スレッドであってもよい。さらにまた、スレッド優先イベントは、論理スレッドにより、同時物理スレッドへの均等なまたはどちらかへのアクセスが可能となる公平性ルールに基づいて発生させてもよい。
いずれにせよ、ブロック24において、1つ以上のトリガリングイベントがあると判断された場合には、ブロック26にて、マッピングが中断され、ブロック28にて、論理スレッドがドレイン状態に切り替えられる。また、ブロック30においては、1つ以上のトリガリングイベントが現れるまで、論理スレッドはアクティブ状態に保持される。
図3は、ドレイン状態にて、論理スレッドを維持するためのアクセスの一例を、より詳細に示す図である。ブロック32において、割り込み可能なポイントを検出するための論理スレッドが監視される。前述のごとく、論理スレッドが処理される際に、マクロ命令が1つ以上のUOPに復号化される。UOPは、マクロ命令(BOM)の始まり、あるいはマクロ命令(EOM)の終わりのいずれか1つとして表示される。この場合、割り込み可能なポイントとは、EOMとして表示されるUOPに相当する。このようなアクセスにより、マクロ命令(BOM)の始まりと、マクロ命令(EOM)の終わりが、共依存関係になる問題を、未然に防ぐことが可能となる。割り込み可能なポイントは、単に、問い合わせの論理スレッドから退出する最後のUOPに相当する。ブロック34において、割り込み可能なポイントがあれば、ブロック36において、論理スレッドが、ストール状態に切り換えられる。また、ブロック38においては、割り込み可能なポイントが現れるまで、論理スレッドはドレイン状態に保持される。
図4は、ストール状態にて、論理スレッドを維持するためのアクセスの一例を、より詳細に示す図である。ブロック40において、1つ以上のトリガリングイベントを処理するプロセッサが監視される。前述のごとく、トリガリング・イベントは、メモリ待ち時間イベント、スリープ要求、及びスレッド優先イベントなどを有するが、これらに限定されるものではない。ブロック42において、トリガリングイベントが無いと判断された場合は、ブロック44において、論理スレッドは、ウエイト状態に切り替えられる。ブロック46においては、トリガリングイベントが無い状態となるまで、論理スレッドがストール状態に保持される。例えば、キャッシュミス・トリガリングイベントが機能し、データが現れるまでは、論理スレッドはストール状態に保持される。
論理スレッドをドレイン状態に切り替えるトリガリングイベントは、論理スレッドをストール状態から退去させるトリガリングイベントと同一場合と、異なる場合がある。例えば、論理スレッドは、「HALT」命令により、ストール状態にして、割り込み信号を受信するまで、ストール状態に保持させてもよい。また、他の例としては、割り込み信号を機能させることは、キャッシュミスの予測が完了することを待つことよりも重要であるため、論理スレッドを、キャッシュミスのロード命令により、ストール状態にするか、また、割り込み信号を受信することにより、ストール状態から退出させてもよい。
図5は、ウェイト状態にて、論理スレッドを維持するためのアクセスの一例を、より詳細に示す図である。ブロック48において、利用可能な物理スレッドを検出するための複数の同時物理スレッドが監視される。ブロック52において、利用可能な物理スレッドが有ると判断された場合、ブロック52において、論理スレッドは、アクティブ状態への切り替えられる。ブロック54においては、利用可能な物理スレッドが現れるまで、論理スレッドがウエイト状態に保持される。このため、ウエイト状態にある全ての論理スレッドが、物理スレッドにおいて、実行される段階となる。物理スレッドが、利用可能となる時に、論理スレッドが選択され、アクティブ状態へと移動する。尚、物理スレッドは、上述の例に応じて利用可能である。論理スレッドの選択は、論理スレッドにおける優先順位、および/または、公平要件に応じて決定することが可能であるが、これらに限定されるものではない。
図6は、スレッド管理テーブル56を示す。スレッド管理テーブル56は、状態、及び複数の論理スレッドのそれぞれに対応する1つまたは複数のトリガリングイベントを認識可能な論理スレッド情報を保存する。例えば、図中のスレッドTは、アクティブ状態にあり、特定のメモリ要求、あるいは、モニタアドレスAF09に対する外部記憶装置において、トリガリングを行う。これに対し、スレッドTはストール状態にあり、モニタアドレスAF09に対する外部記憶装置、及びMWAITコマンドに対する外部記憶装置において、トリガリングを行う。アクティブ状態にて使用されるIP、及び論理スレッドをサポートするために必要とされるハードウェア資源プロファイルなどのその他の情報は、スレッド管理表56においても保存することが可能である。但し、この場合、ハードウェア資源を、全ての論理スレッドに対して、均一に指定する必要はない。尚、より迅速に実行することが一般的であるため、ハードウェア資源は、迅速な投機実行を行うために、プロセッサに一時レジスタを備えているが、これに限定されるものではない。実際、システムにおけるプラットフォーム・リソースは、ハードウェア資源プロファイルに備えられた状態にて制御される。例えば、論理スレッドの指定が必要になるにつれ、論理スレッドを必要としない資源が増大する。リソースの指定においては、優先順位、パフォーマンス・フィードバック、及び公平性入力が使用されるが、これらに限定はされるものではない。但し、スレッド管理テーブル56の構成要素は、実用上、実施可能であれば、他のプロセッサから提供されてもよい。
図7は、複数の論理スレッド58の数が、複数の同時スレッド60の数よりも多い例を示す図である。この場合、処理準備が整った論理スレッドを、連続的に機能させることにより、同時物理スレッド60が、可能な限りビィジー状態に保たれるため、スレッド管理アーキテクチャは、処理モードで機能する。これに対し、図8は、投機モードを得るために、複数の論理スレッド62の数が、複数の同時物理スレッド64の数よりも少ない例を示す図である。尚、投機モードは、プログラムコール、あるいは、他の間接プログラム構成が現れたときに、余分な同時物理スレッドを、同等の論理スレッドに指定することにより達成される。例えば、プログラムコールの場合、コール命令を有する適切な書き込みプログラムが、結果的に、コールポイントに戻ることが予測される。よって、予測されるリターンポイントにて、余分な物理スレッドをスタートさせ、実際のリターンが発生した時に、この実際のリターンにて、余分な同時物理スレッドから処理されるUOPが適用される。但し、前述の処理モード及び予測スレッドが、同時に実施される「ハイブリッド」モードにて、スレッド管理アーキテクチャが着実に構成される。
次に、図9にて、コンピュータシステム66を示す。コンピュータシステム66は、マクロ命令を保存するためのシステムメモリ68を有する。システムメモリは、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、及びフラッシュメモリなどを有する。システムバス70は、マクロ命令を取り出すために、システムメモリ68及びプロセッサ72に連結されている。プロセッサ72は、ステートマシン76、及びハードシーケンサ78を備えるスレッド管理アーキテクチャ74を有する。尚、ステートマシン76は、図1の構成図10に示すステートマシンと同一の方法にて機能する。ステートマシン76は、ウェイト状態、アクティブ状態、ドレイン状態、及びストール状態のいずれか1つにおける複数の論理スレッドのそれぞれを維持することにより、前記マクロ命令に対応する複数の論理スレッドを、複数の同時物理スレッドでサポートする。ハードウェアシーケンサ78は、論理スレッドに対応する利用可能な物理スレッドに対する複数の同時物理スレッドを監視する。ステートマシン76は、利用可能な物理スレッドが現れるまでは、ウエイト状態における論理スレッドを保持する。但し、図においては、複数の論理スレッドに対応するマクロ命令が、システムメモリに保存されるが、命令及び対応のUPOは、トレース・キャッシュ、命令キャッシュなどの「オン・チップ」メモリから取り出されてもよい。
また、論理スレッドが存在する状態の実際の数は、周囲の環境により変更してもよい。例えば、実際の操作を容易にするために、ドレイン状態は、様々な状態、すなわち、各々のサブ状態が、「ドレイン」操作の一部に変わる様々な状態に分散してもよい。
本発明の実施形態は、当業者にとって、様々な形態で実施可能である。よって、本発明は、その特定の複数の実施形態を参照して説明したが、これらの実施形態に限定されるものではなく、当業者が、本願の図面、明細書、及び後述の請求項を参照して、修正及び変更することは可能である。

Claims (36)

  1. 複数の論理スレッドを、複数の同時物理スレッドによりサポートするスレッドの管理方法。
  2. ウエイト状態、アクティブ状態、ドレイン状態、及びストール状態のうちの1つにおいて、複数の論理スレッドの各々を維持する請求項1に記載のスレッドの管理方法。
  3. 前記アクティブ状態において、第一の論理スレッドを維持するスレッドの管理方法であって、物理スレッドの次期命令ポインタに対し、第一の論理スレッドに関連したマクロ命令をマッピングし、トリガリングイベントを処理するプロセッサを監視し、また、前記トリガリングイベントが現れるまで、前記アクティブ状態において、前記第一の論理スレッドを保持する請求項2に記載のスレッドの管理方法。
  4. 前記トリガリングイベントが現れた場合、前記マッピングを中断し、前記第一の論理スレッドを前記ドレイン状態に切り替える請求項3に記載のスレッドの管理方法。
  5. 前記トリガリングイベントは、メモリ時間待ちイベント、スリープ要求、及びスレッド優先度イベントの少なくともいずれか1つを含む請求項3に記載のスレッドの管理方法。
  6. 第一の論理スレッドが、前記ドレイン状態にて維持されるスレッドの管理方法であって、割り込み可能なポイントに対する前記第一の論理スレッドを監視し、前記割り込み可能なポイントが現れるまで、前記第一の論理スレッドを前記ドレイン状態に保持する請求項2に記載のスレッドの管理方法。
  7. 前記割り込み可能なポイントが現れた場合に、前記第一の論理スレッドを、前記ストールスレッドに切り替える請求項6に記載のスレッドの管理方法。
  8. 前記割り込み可能なポイントが、前記第一の論理スレッドにおけるマクロ命令の終わり、または、前記第一の論理スレッドに関連する最後のマイクロ操作のリタイアメントのいずれかに相当する請求項6に記載のスレッドの管理方法。
  9. 第一の論理スレッドが、前記ストール状態において維持されるスレッドの管理方法であって、トリガリングイベントの処理を監視し、前記トリガリングイベントが無くなるまで、前記第一の論理スレッドを前記ストール状態に保持する請求項2に記載のスレッドの管理方法。
  10. 前記トリガリングイベントが無くなった場合に、前記第一論理スレッドを、前記ウエイト状態に切り替える請求項9に記載のスレッドの管理方法。
  11. 前記トリガリングイベントよりも高い優先順位を有する他のイベントが信号化される場合に、前記第一の論理スレッドを待ち状態に切り替える請求項9に記載のスレッドの管理方法。
  12. 前記トリガリングイベントが、メモリ時間待ちイベント、スリープ要求、及びスレッド優先イベントの少なくともいずれか1つを含む請求項9に記載のスレッドの管理方法。
  13. 第一のスレッドが前記ウエイト状態に保持されるスレッドの管理方法であって、利用可能な物理スレッドに対する複数の同時物理スレッドを監視し、前記利用可能な物理スレッドが現れるまで、前記ウェイト状態において前記第一の論理スレッドを保持する請求項2に記載のスレッドの管理方法。
  14. 前記利用可能な物理スレッドが現れた場合に、前記第一論理スレッドを前記アクティブスレッドに切り替える請求項13に記載のスレッドの管理方法。
  15. 論理管理テーブルにおけるスレッド情報、状態を認識するスレッド情報、1つ以上のトリガリングイベント、及び複数の論理スレッドの各々に対するリニア命令ポイントをさらに含む請求項1に記載のスレッドの管理方法。
  16. 前記スレッド情報は、複数の論理スレッドの各々に対し、リソース要求プロフィールをさらに含む請求項15に記載のスレッドの管理方法。
  17. 前記複数の論理スレッドの数は、前記複数の同時物理スレッドの数よりも多い請求項1に記載のスレッドの管理方法。
  18. 前記複数の論理スレッドの数は、前記複数の同時物理スレッドの数よりも少ない請求項1に記載のスレッドの管理方法。
  19. 複数の論理スレッドを、複数の同時物理スレッドによりサポートする方法であり、
    物理スレッドの次期命令ポインタに対し、第一の論理スレッドに関連したマクロ命令をマッピングし、
    第一の時間にてトリガリングイベントを処理するプロセッサを監視し、
    前記トリガリングイベントが現れるまで、アクティブ状態において第一の論理スレッドを保持し、
    前記トリガリングイベントが有る場合に、前記マッピングを中断し、前記第一の論理スレッドをドレイン状態に切り替え、
    割り込み可能なポイントに対する第一の論理スレッドを監視し、
    割り込み可能なポイントが現れるまで、前記第一の論理スレッドを前記ドレイン状態に保持し、
    前記割り込み可能なポイントが現れた場合に、前記第一の論理スレッドをストール状態に切り替え、
    第二の時間にてトリガリングイベントを処理するプロセッサを監視し、
    前記トリガリングイベントが無くなるまで、前記第一の論理スレッドをストール状態に保持し、
    前記トリガリングイベントが無い場合に、前記第一の論理スレッドをウエイト状態に切り替え、
    利用可能な物理スレッドに対する前記複数の同時物理スレッドを監視し、
    前記利用可能なスレッドが現れるまで、前記第一の論理スレッドをウエイト状態において保持し、また、
    前記利用可能なスレッドが現れた場合に、前記論理スレッドを前記アクティブ状態に切り替える論理レッドのサポート方法。
  20. 前記トリガリングイベントは、メモリ時間待ちイベント、スリープ要求、及びスレッド優先度イベントの少なくともいずれか1つを含む請求項19に記載の論理スレッドのサポート方法。
  21. 前記割り込み可能なポイントが、前記第一の論理スレッドにおけるマクロ命令の終わり、または、第一の論理スレッドに関連する最後のマイクロ操作のリタイアメントのいずれかに相当する請求項19に記載の論理スレッドのサポート方法。
  22. 論理管理テーブルにおけるスレッド情報、状態を認識するスレッド情報、1つ以上のトリガリングイベント、及び複数の論理スレッドの各々に対するリニア命令ポインタをさらに含む請求項19に記載の論理スレッドのサポート方法。
  23. ウエイト状態、アクティブ状態、ドレイン状態、及びストール状態のいずれか1つにおいて、複数の論理スレッドの各々を維持することにより、複数の論理スレッドを、複数の同時論理スレッドでサポートするステートマシンを含むスレッドの管理アーキテクチャ。
  24. 前記ステートマシンが、物理スレッドの次期命令ポインタに対し、第一の論理スレッドに関連したマクロ命令をマッピングし、トリガリングイベントを処理するプロセッサを監視し、また、前記トリガリングイベントが現れるまで、アクティブ状態において第一の論理スレッドを保持する請求項23に記載のスレッドの管理アーキテクチャ。
  25. 前記ステートマシンが、割り込み可能な第一の論理スレッドを監視し、前記割り込みポイントが現れるまで、前記第一理スレッドを前記ドレイン状態に保持する請求項23に記載のスレッドの管理アーキテクチャ。
  26. 前記ステートマシンは、トリガリングイベントを処理するプロセッサを監視し、前記トリガリングイベントが無くなるまで、前記第一の論理スレッドを前記ストール状態に保持することを特徴とする請求項23に記載のスレッドの管理アーキテクチャ。
  27. ハードウェアシーケンサをさらに含み、前記ハードウェアシーケンサは、利用可能な物理スレッドに対する複数の同時物理スレッドを監視し、前記ステートマシンは、前記物理スレッドが現れるまで、前記第一の論理スレッドを、ウエイト状態に保持する請求項23に記載のスレッドの管理アーキテクチャ。
  28. マクロ命令を保存するランダムアクセスメモリ、前記メモリにカップリングされたシステムバス、及びシステムにカップリングされ、前記マクロ命令を取り出すプロセッサを含み、前記プロセッサは、ウェイト状態、アクティブ状態、ドレイン状態、及びストール状態のいずれか1つにおける複数の論理スレッドのそれぞれを維持することにより、前記マクロ命令に対応する複数の論理スレッドを、複数の同時物理スレッドでサポートするステートマシンを有するスレッド管理アーキテクチャを含むことを特徴とするコンピュータシステム。
  29. 前記ステートマシンは、物理スレッドの次期命令ポインタに対し、第一の論理スレッドに関連したマクロ命令をマッピングし、トリガリングイベントを処理するプロセッサを監視し、また、前記トリガリングイベントが現れるまで、アクティブ状態において第一の論理スレッドを保持することを特徴とする請求項28に記載のコンピュータシステム。
  30. 前記ステートマシンが、割り込み可能な第一の論理スレッドを監視し、前記割り込みポイントが現れるまで、前記第一論理スレッドを前記ドレイン状態に保持することを特徴とする請求項28に記載のコンピュータシステム。
  31. 前記ステートマシンが、トリガリングイベントを処理するプロセッサを監視し、前記トリガリングイベントが無くなるまで、第一の論理スレッドを前記ストール状態に保持することを特徴とする請求項28に記載のコンピュータシステム。
  32. 前記スレッド管理アーキテクチャは、ハードウェアシーケンサをさらに含み、前記ハードウェアシーケンサは、利用可能な物理スレッドに対する複数の同時物理スレッドを監視し、前記ステートマシンは、前記物理スレッドが現れるまで、前記第一論理スレッドを、ウエイト状態に保持することを特徴とする請求項28に記載のコンピュータシステム。
  33. スレッド情報、状態を識別するスレッド情報、1つ以上のトリガリングイベント、及び前記複数の論理スレッドの各々に対するリニア命令ポインタを有するスレッド管理テーブルをさらに含む請求項28に記載のコンピュータシステム。
  34. 前記スレッド情報は、前記複数の論理スレッドの各々に対するリソース要求プロフィールを認識すること請求項33に記載のコンピュータシステム。
  35. 前記複数の論理スレッドの数は、前記複数の同時物理スレッドの数よりも多い請求項28に記載のコンピュータシステム。
  36. 前記複数の論理スレッドの数は、前記複数の同時物理スレッドの数よりも少ない請求項28に記載のコンピュータシステム。
JP2006547293A 2003-12-29 2004-12-20 プロセッサにおける同時物理スレッド数からの論理スレッド数のデカップリング Expired - Fee Related JP4599365B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/745,527 US7797683B2 (en) 2003-12-29 2003-12-29 Decoupling the number of logical threads from the number of simultaneous physical threads in a processor
PCT/US2004/043036 WO2006057647A2 (en) 2003-12-29 2004-12-20 Decoupling the number of logical threads from the number of simultaneous physical threads in a processor

Publications (2)

Publication Number Publication Date
JP2007517322A true JP2007517322A (ja) 2007-06-28
JP4599365B2 JP4599365B2 (ja) 2010-12-15

Family

ID=34886484

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006547293A Expired - Fee Related JP4599365B2 (ja) 2003-12-29 2004-12-20 プロセッサにおける同時物理スレッド数からの論理スレッド数のデカップリング

Country Status (6)

Country Link
US (1) US7797683B2 (ja)
JP (1) JP4599365B2 (ja)
KR (1) KR100856144B1 (ja)
CN (2) CN1926514B (ja)
DE (2) DE112004003142A5 (ja)
WO (1) WO2006057647A2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7765547B2 (en) * 2004-11-24 2010-07-27 Maxim Integrated Products, Inc. Hardware multithreading systems with state registers having thread profiling data
US7793291B2 (en) * 2004-12-22 2010-09-07 International Business Machines Corporation Thermal management of a multi-processor computer system
US7454596B2 (en) * 2006-06-29 2008-11-18 Intel Corporation Method and apparatus for partitioned pipelined fetching of multiple execution threads
US9146745B2 (en) * 2006-06-29 2015-09-29 Intel Corporation Method and apparatus for partitioned pipelined execution of multiple execution threads
US7698540B2 (en) * 2006-10-31 2010-04-13 Hewlett-Packard Development Company, L.P. Dynamic hardware multithreading and partitioned hardware multithreading
US9032254B2 (en) 2008-10-29 2015-05-12 Aternity Information Systems Ltd. Real time monitoring of computer for determining speed and energy consumption of various processes
US8307246B2 (en) * 2008-10-29 2012-11-06 Aternity Information Systems Ltd. Real time monitoring of computer for determining speed of various processes
US8487909B2 (en) * 2011-07-27 2013-07-16 Cypress Semiconductor Corporation Method and apparatus for parallel scanning and data processing for touch sense arrays
US9542236B2 (en) 2011-12-29 2017-01-10 Oracle International Corporation Efficiency sequencer for multiple concurrently-executing threads of execution
US9715411B2 (en) 2014-02-05 2017-07-25 International Business Machines Corporation Techniques for mapping logical threads to physical threads in a simultaneous multithreading data processing system
US9213569B2 (en) * 2014-03-27 2015-12-15 International Business Machines Corporation Exiting multiple threads in a computer
US9898351B2 (en) * 2015-12-24 2018-02-20 Intel Corporation Method and apparatus for user-level thread synchronization with a monitor and MWAIT architecture
CN106325512A (zh) * 2016-08-24 2017-01-11 韩龙潇 一种使用状态下监测周围环境的终端

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05181670A (ja) * 1992-01-06 1993-07-23 Fujitsu Ltd マイクロプログラム方式計算機
JPH08227364A (ja) * 1994-12-20 1996-09-03 Nec Corp 順序付きマルチスレッド実行方法とその実行装置
WO2001042914A1 (en) * 1999-12-09 2001-06-14 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US20030018680A1 (en) * 2001-07-18 2003-01-23 Lino Iglesias Smart internetworking operating system for low computational power microprocessors
JP2003241980A (ja) * 2002-02-06 2003-08-29 Internatl Business Mach Corp <Ibm> マルチプロセッサ・コンピュータ・システムのためのスレッド・ディスパッチ機構及び方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2078315A1 (en) * 1991-09-20 1993-03-21 Christopher L. Reeve Parallel processing apparatus and method for utilizing tiling
US5442797A (en) * 1991-12-04 1995-08-15 Casavant; Thomas L. Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging
JP2991598B2 (ja) * 1993-09-09 1999-12-20 富士通株式会社 Lsi設計装置及びlsi設計方法
US5913925A (en) * 1996-12-16 1999-06-22 International Business Machines Corporation Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order
US6192514B1 (en) * 1997-02-19 2001-02-20 Unisys Corporation Multicomputer system
US5999734A (en) * 1997-10-21 1999-12-07 Ftl Systems, Inc. Compiler-oriented apparatus for parallel compilation, simulation and execution of computer programs and hardware models
US7085670B2 (en) * 1998-02-17 2006-08-01 National Instruments Corporation Reconfigurable measurement system utilizing a programmable hardware element and fixed hardware resources
US6557064B1 (en) * 1999-02-19 2003-04-29 Hewlett-Packard Development Company Set up time adjust
US6708269B1 (en) * 1999-12-30 2004-03-16 Intel Corporation Method and apparatus for multi-mode fencing in a microprocessor system
US7103586B2 (en) * 2001-03-16 2006-09-05 Gravic, Inc. Collision avoidance in database replication systems
US7127561B2 (en) * 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs
US7155708B2 (en) * 2002-10-31 2006-12-26 Src Computers, Inc. Debugging and performance profiling using control-dataflow graph representations with reconfigurable hardware emulation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05181670A (ja) * 1992-01-06 1993-07-23 Fujitsu Ltd マイクロプログラム方式計算機
JPH08227364A (ja) * 1994-12-20 1996-09-03 Nec Corp 順序付きマルチスレッド実行方法とその実行装置
WO2001042914A1 (en) * 1999-12-09 2001-06-14 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US20030018680A1 (en) * 2001-07-18 2003-01-23 Lino Iglesias Smart internetworking operating system for low computational power microprocessors
JP2003241980A (ja) * 2002-02-06 2003-08-29 Internatl Business Mach Corp <Ibm> マルチプロセッサ・コンピュータ・システムのためのスレッド・ディスパッチ機構及び方法

Also Published As

Publication number Publication date
DE112004003142A5 (de) 2013-03-21
WO2006057647A3 (en) 2006-07-20
US20050193278A1 (en) 2005-09-01
US7797683B2 (en) 2010-09-14
WO2006057647A2 (en) 2006-06-01
KR100856144B1 (ko) 2008-09-03
JP4599365B2 (ja) 2010-12-15
DE112004002505T5 (de) 2006-11-23
CN102193828A (zh) 2011-09-21
KR20060111626A (ko) 2006-10-27
CN102193828B (zh) 2013-06-12
CN1926514A (zh) 2007-03-07
CN1926514B (zh) 2011-06-08

Similar Documents

Publication Publication Date Title
JP4610593B2 (ja) デュアルスレッドプロセッサ
JP4837305B2 (ja) マイクロプロセッサ及びマイクロプロセッサの制御方法
US8291431B2 (en) Dependent instruction thread scheduling
US8756605B2 (en) Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
US7290261B2 (en) Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor
JP5263844B2 (ja) パイプラインプロセッサにおける長い待ち時間命令の処理
JP3919764B2 (ja) 例外条件を解消するために同時マルチスレッド・プロセッサでディスパッチ・フラッシュを使用する方法
JP4599365B2 (ja) プロセッサにおける同時物理スレッド数からの論理スレッド数のデカップリング
US20080046689A1 (en) Method and apparatus for cooperative multithreading
WO2015024452A1 (zh) 一种分支预测方法及相关装置
US20120284720A1 (en) Hardware assisted scheduling in computer system
WO2011155097A1 (ja) 命令発行制御装置及び方法
US20170315806A1 (en) Method for managing software threads dependent on condition variables
WO1994016385A1 (en) System and method for assigning tags to instructions to control instruction execution
JP2004518183A (ja) マルチスレッド・システムにおける命令のフェッチとディスパッチ
EP2159691B1 (en) Simultaneous multithreaded instruction completion controller
US20150370568A1 (en) Integrated circuit processor and method of operating a integrated circuit processor
JP3981238B2 (ja) 情報処理装置
JP5316407B2 (ja) 演算処理装置および演算処理装置の制御方法
JP2002014868A (ja) メモリ参照動作検出機構を有するマイクロプロセッサおよびコンパイル方法
JP2007286990A (ja) キャッシュメモリ装置及びそれに用いるキャッシュメモリ制御方法並びにそのプログラム
JP2006139495A (ja) 演算処理装置
US20040128488A1 (en) Strand switching algorithm to avoid strand starvation
JP2006195705A (ja) プロセッサ
CN118170439A (zh) 异常处理方法及装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090609

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090904

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091013

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100112

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100119

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100212

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100219

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100312

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100319

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100412

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100518

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100805

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: 20100831

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100927

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: 20131001

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees