JP2008513894A - スレッドライブロックユニット - Google Patents

スレッドライブロックユニット Download PDF

Info

Publication number
JP2008513894A
JP2008513894A JP2007532620A JP2007532620A JP2008513894A JP 2008513894 A JP2008513894 A JP 2008513894A JP 2007532620 A JP2007532620 A JP 2007532620A JP 2007532620 A JP2007532620 A JP 2007532620A JP 2008513894 A JP2008513894 A JP 2008513894A
Authority
JP
Japan
Prior art keywords
processor
thread
logical processor
live block
logical
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
JP2007532620A
Other languages
English (en)
Other versions
JP4603583B2 (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 JP2008513894A publication Critical patent/JP2008513894A/ja
Application granted granted Critical
Publication of JP4603583B2 publication Critical patent/JP4603583B2/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/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
    • 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

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)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Power Sources (AREA)

Abstract

スレッドがそのままでは命令リタイアに進むことができない場合に、優先度をスレッドに割り当てる方法、装置、及びシステムの実施形態。少なくとも1つの実施形態では、スレッドは、メモリライブロックブレーカロジック及び/又は飢餓回避ロジックを備えるマルチプロセッサシステムでの複数のアクティブスレッドのうちの1つである。他の実施形態についても説明し、権利主張する。
【選択図】なし

Description

本開示は、包括的には情報処理システムに関し、特にマルチスレッド処理システムでの複数の同時スレッドの間でのライブロックを検出して修正することに関する。
マイクロプロセッサを含むもの等の情報処理システムの性能を上げるために、ハードウェア技法及びソフトウェア技法の両方が採用されている。ハードウェア側では、マイクロプロセッサの性能を向上させるマイクロプロセッサ設計手法として、クロック速度の増大、パイプライン化、分岐予測、スーパースカラー実行、アウトオブオーダー実行、及びキャッシュがある。このような多くの手法はトランジスタ個数の増大に繋がり、場合によっては性能の向上率よりも高率でトランジスタ個数が増大することになることさえある。
あくまでトランジスタの追加により性能を増大させようとするのではなく、他の性能増強はソフトウェア技法を含む。プロセッサ性能を向上させるために採用されてきた1つのソフトウェア手法は「マルチスレッド化」として知られている。ソフトウェアマルチスレッド化では、命令ストリームが、並列実行できる複数の命令ストリームに分けることができる。別法として、複数の独立したソフトウェアストリームを並列に実行することができる。
タイムスライスマルチスレッド化又は時分割多重(「TMUX」)マルチスレッド化として知られる一手法では、単一のプロセッサが、一定の時間期間後にスレッドを切り替える。さらに別の手法では、単一のプロセッサが、長待ち時間キャッシュミス等のトリガイベントが発生するとスレッドを切り替える。スイッチオンイベントマルチスレッド化(「SoEMT」)として知られるこの後者の手法では、一時に多くとも1つだけのスレッドがアクティブである。
ますます、マルチスレッド化はハードウェアでサポートされている。たとえば、一手法では、チップマルチプロセッサ(「CMP」)システム等のマルチプロセッサシステムでのプロセッサはそれぞれ、複数のソフトウェアスレッドの1つに対して同時に動作することができる。同時マルチスレッド化(「SMT」)と呼ばれる別の手法では、単一の物理プロセッサが、オペレーティングシステム及びユーザプログラムから複数の論理プロセッサに見えるようにする。SMTの場合、複数のソフトウェアスレッドが、単一のプロセッサ上で切り替えなしで同時にアクティブであり実行することができる。すなわち、各論理プロセッサは完全なアーキテクチャ状態セットを保持するが、キャッシュ、実行ユニット、分岐予測器、制御ロジック、及びバス等の物理プロセッサの他の多くの資源は共有される。SMTの場合ではしたがって、複数のソフトウェアスレッドからの命令は各論理プロセッサ上で同時に実行される。
SMTシステム及び/又はCMPシステム等の、ソフトウェアスレッドの同時実行をサポートするシステムの場合、2つ以上の同時アクティブスレッド間での共有資源の競合により、スレッドの少なくとも1つが前進できなくなる危険性がある。スレッドが、別のアクティブスレッドとの資源競合により前進できなくなることは、「ライブロック」と呼ばれることがある。
本発明の実施の形態は、同様の要素が同様の符号で示される添付の図面を参照しつつ理解することができる。これらの図面は限定を意図せず、マルチスレッド処理システムでの複数の同時スレッド間でのライブロックを検出して修正する装置、システム、及び方法の選択された実施形態を例示するために提供される。
以下の説明において、プロセッサタイプ、マルチスレッド化環境、及びマイクロアーキテクチャ構造等の多くの特定の詳細について述べて、本発明のより完全な理解を提供する。しかし、本発明はこのような特定の詳細なしでも実施可能なことが当業者により理解されよう。さらに、いくつかの既知の構造、回路等については、本発明を不必要に曖昧にするのを避けるために詳細に示していない。
本明細書において開示する方法、装置、及びシステムの実施形態は、マルチスレッド処理システムでのライブロックの検出及び回避を可能にする。開示する少なくとも1つの実施形態では、スレッドライブロックユニットは、論理プロセッサのソフトウェアスレッド命令のリタイアを追跡するメカニズムを含む。リタイアの追跡は、スレッドが前進しているか否かを追跡する単に1つの手法にすぎない。本明細書において考察する実施形態は、前進インジケータとして命令のリタイアに注目するが、他の実施形態は異なるインジケータ又は追加のインジケータを利用して、スレッドが前進しているか否かを判断できることを当業者は認めよう。たとえば、スレッド進行信号又はレジスタを評価してもよく、命令ポインタの進行を追跡してもよく、又は他の任意の進行表示信号又はインジケータを評価してもよい。
図1は、マルチスレッド化を行うプロセッサ104及びアービトレータ180の少なくとも1つの実施形態を示す。プロセッサ104及びアービトレータ180は単一のチップパッケージ103に存在してもよい。プロセッサ104は、複数の論理プロセッサ150a〜150nを備え、同時マルチスレッド化をサポートすることができる。少なくとも1つの実施形態では、プロセッサ104は複数の論理プロセッサ150a〜150nを利用してSMT処理性能を提供する。このような実施形態では、各論理プロセッサ150a〜150nはそれぞれの命令シーケンサ(たとえば、図3の340を参照)を有する。このような実施形態では、論理プロセッサ150は各自バージョンのアーキテクチャ状態を保持するが、単一のプロセッサコア104の実行資源はすべての同時SMTソフトウェアスレッドで共有することができる。
SMTの場合、複数のマルチソフトウェアスレッドを、それぞれ複数の論理プロセッサ150のうちの1つで同時に実行することができる。論理プロセッサ150a〜150nは、本明細書では「物理スレッド」とも同義で使用され得る。特に別記しない限り、本明細書において使用する「スレッド」という語は、「物理」又は「ソフトウェア」が前に付いていない場合、アクティブ論理プロセッサ及び論理プロセッサが実行中の関連するソフトウェア命令ストリームをまとめて指すことを意味する。
図1は、スレッドライブロックユニット(「TLU」)165a〜165nに各論理プロセッサ150a〜150nのそれぞれを関連付けることができることを示す。少なくとも1つの実施形態では、TLU165はしたがって、プロセッサ104の各物理スレッド150a〜150nについてスレッド単位で複製される。特定の物理スレッド150のTLU165は、本明細書では単に物理スレッドの「TLU」と呼ばれることもある。
図1は、プロセッサ104がメモリライブロックユニット(「MLU」)166も備えることができることを示す。メモリライブロックユニット166は、1)メモリライブロックインジケータに基づいて単一のプロセッサ104の同時スレッドからのメモリ動作間のライブロックを検出し、2)アクションをとってこのようなライブロックを解決することができる。
TLU165の動作については図5〜図7に関連してさらに詳細に後述する。一般に、スレッドライブロックユニット165は、1)特定のスレッドライブロックインジケータに基づいて、関連する論理プロセッサのソフトウェアスレッドが前進に失敗した(「ライブロックされた」)ことを判断し、2)アクションをとってこのようなライブロックを解決することができる。少なくとも1つの実施形態では、スレッドライブロックユニット165は、論理プロセッサが命令をリタイアさせてから、又は他の様式で潜在的な前進を実行してからのサイクル数をカウントすることによって前進がないことを判断する。スレッドライブロックユニット165が検出することができる、数ある中でも1つの特定の状況は「命令飢餓」と呼ばれる。命令飢餓とは、第1のスレッドが、他方の別のスレッドの命令フェッチを阻止又は不当に遅らせ得る状況である。その結果として、本明細書では他方のスレッドを「命令に飢えている」又はI飢餓状態にあると言う。命令飢餓を受けているスレッドは、実行に利用可能な命令がなく、リタイアさせる命令がないために前進することができない。
スレッドライブロックユニット165がライブロックを解決しようとしてアクションをとるとき、そのスレッドライブロックユニット165は本明細書では「アクティブ」と呼ばれる。スレッドライブロックユニット165は「アクティブ」になって、いくつかのライブロックブレーカアクションのうちの任意のアクションを実行することができ、ライブロックブレーカアクションは、TLU165が関連付けられたスレッドの前進を刺激しようとして行われる。たとえば、第1の論理プロセッサ150のTLU165は、関連する論理プロセッサ150が前進できないことに応答して、1つ又は複数の他の論理プロセッサ150をストールさせるか、又は1つ又は複数の他の論理プロセッサ150のマイクロアーキテクチャ状態をリセットさせる(本明細書において「削除(nuked)」と呼ばれることがある)ことを要求するというアクションをとることができる。またたとえば、アクティブTLU165はライブロックブレーカ(たとえば、以下の図9に関連しての共有ライブロックブレーカ950の考察を参照)を呼び出して、アクションをとって命令飢餓を軽減することができる。また、アクティブTLU165は、長待ち時間キャッシュミスが検出される場合にアービトレータ180から優先度を要求することができる。このようなアクションをとるいくつかの実施形態を図5〜図7に関連してさらに詳細に後述する。
したがって、一実施形態によれば、TLU165a〜165nはアービトレータ180と共に、プロセッサ104の論理プロセッサ150a〜150n及びMLU166に優先度を付与して、SMTソフトウェアスレッドの実行中にライブロック状況を検出して軽減する。さらに、TLU165a〜165nはそれ自体、論理プロセッサ150a〜150nに優先度を付与して、特定のライブロック状況を検出して軽減することができる。最後に、マルチコア処理システムでは、アービトレータ180は複数のコアに優先度を付与してスレッドライブロックを軽減することもできる。しかし、様々な異なる実施形態では、これらの特徴のいくつか又はすべてが存在してもしなくてもよい。
図2は、開示する技法を実行して複数の同時スレッド間のライブロックを検出して軽減することができるマルチコアマルチスレッドコンピューティングシステム200の少なくとも1つの実施形態を示すブロック図である。図1及び図2中の同様の要素は同様の参照符号を有する。
図2は、コンピューティングシステム200が少なくとも1つのプロセッサコア104a及びメモリ202を含むことを示す。メモリ202は、データ240及びプロセッサ104a〜104nの動作を制御する命令241を記憶することができる。少なくとも1つの実施形態では、プロセッサ104aは、単一のチップパッケージ103に存在する複数のプロセッサコア104a〜104nの1つであってもよい。追加のプロセッサは、104nを含め、オプションである。追加のプロセッサがオプションであることを図2では楕円及び破線で示す。
図2は、処理コア104a〜104nの他に、追加のロジック280がチップパッケージ103に存在することを示す。このような追加のロジック280は本明細書において「アンコア(uncore)」と呼ばれることがある。追加のロジック280は、キャッシュ251及び調停・制御ロジック252のうちの1つ又は複数を含み得る。キャッシュ251は、プロセッサ104a〜104n間で共有される最終レベル共有統一データ・命令キャッシュであることができる。調停・制御ロジック252は、ポイントツーポイント通信コントローラ、グローバル通信キュー、及び/又は調停ロジック180(図1を参照)を含むことができる。
追加のロジック280はオプションとして、集積メモリコントローラ253を備えることもできる。集積メモリコントローラ253は、オフチップメモリ202へのインタフェースを提供することができる。このような実施形態では、チップセット255が主にグラフィックス関連機能をサポートする。チップセット255は、1つ又は複数の入/出力(I/O)装置290との接続性を提供することもできる。少なくとも1つの実施形態では、チップセット255は1つ又は複数のチップセット装置を含むことができ、各チップセット装置は別個のインタフェース機能を提供する。たとえば、チップセット装置の1つはグラフィックス機能をサポートし、別のチップセット装置はI/O接続性及び/又はファームウェアハブ(図示せず)とのインタフェースをサポートすることができる。
集積メモリコントローラ253をチップパッケージ103に備えない実施形態では、チップセット255はオフチップメモリ202へのインタフェースを提供することができる。このような実施形態では、チップセット255は、メモリ制御機能の他に、上述したグラフィックス機能、I/O機能、及び/又はファームウェア機能を提供することもできる。
システム200の実施形態について、ポイントツーポイント通信コントローラを調停・制御ロジック252の一部として有するものとして本明細書では考察するが、このようなコントローラはすべての実施形態に必要なわけではない。実際には、本明細書において考察するライブロック検出及び修正メカニズムの実施形態が、マルチドロップバス又は他の通信トポロジを利用するシステムでも実行可能なことを当業者は認めよう。
図2は、図1に示すように、システム200の1つ又は複数のプロセッサコア104a〜104nの少なくとも1つの実施形態が、各論理プロセッサ150a〜150nのTLU165を含むとともに、メモリライブロックユニット166も含むマルチスレッド化コアであり得ることを示す。
複数のプロセッサコア104a〜104nを含む処理システム200の実施形態では、プロセッサコア104a〜104n上の物理プロセッサ150a〜150nのうちの1つのTLUが、修正アクションをとったが、関連する物理スレッド150が依然として関連するソフトウェアスレッドの命令の実行において前進を実現することができない場合、調停ロジック180に通知することができる。このような場合、別のプロセッサコア104のアクションが、第1のプロセッサコア104aの前進させる能力を妨げていることがあり得る。さらに詳細に後述するように、調停ロジック180は要求を行っているコア104に優先度を認め、且つ/又はアクションをとって他のコアを「削除」することができる。
したがって、各コアのMLU166と共に各プロセッサコア104のTLU165a〜165n及びアービトレータ180は共に、連係ライブロックレデューサを形成することができる。ライブロックレデューサはしたがって、各コア104のライブロック回路を含むことができ、ライブロック回路はコアのTLU165a〜165n及びMLU166を含み得る。さらに詳細に後述するように、ライブロックレデューサは、第1のプロセッサ104aコアからスレッドについてのスレッド進行情報を受け取り、第1のプロセッサコア104aからの第1のスレッドについてのスレッド進行情報に応答して、第2のプロセッサコア104nのスレッドのアクティビティを調整することができる。
さらに詳細に後述するように、プロセッサ104の少なくとも1つの実施形態は、TLU165が、物理スレッド150が現在の命令ストリームを前進させることができないことを検出したことに応答して、MLU166のアクションロジックを呼び出すように設計することができる。MLU166ロジックは、たとえば、TLU165がアクションをとって命令側(I側)飢餓を軽減する場合に呼び出すことができる(図6の状態604についての以下の考察を参照)。
図3は、開示する技法を実行して複数の同時スレッド間のライブロック状況を検出して軽減することができるプロセッサ104の少なくとも1つの実施形態のさらなる詳細を示すブロック図である。プロセッサ104は、実行される可能性が高い命令をプリフェッチするフロントエンド320を含むことができる。
少なくとも1つの実施形態では、フロントエンド320は、1つ又は複数の論理プロセッサ150a〜150nのそれぞれに論理的に独立したシーケンサ340a〜340nを含むフェッチ/デコードユニット322を含む。フェッチデコードユニット322は、適切な命令を命令キャッシュ(たとえば、図4のIキャッシュ444を参照)からフェッチすることができる。フェッチ/デコードユニット322は、命令をデコードして最終フォーマット又は中間フォーマットにするデコードロジックを含むこともできる。
したがって、物理フェッチ/デコードユニット322は、物理スレッド150にそれぞれ対応する複数の論理的に独立したシーケンサ340a〜340nを備える。物理スレッド150のシーケンサ140は、物理スレッド150が実行すべき、関連するソフトウェア命令ストリーム(本明細書では「ソフトウェアスレッド」とも呼ばれる)の次の命令を決定する。シーケンサ140a〜140nは分岐予測器(図4の432を参照)からの情報を利用して、どの命令を次に実行すべきかを決定することができる。
図3は、プロセッサ104の少なくとも1つの実施形態が、命令を実行に向けて準備し、命令を実行し、実行された命令をリタイアさせる実行コア330を備えることを示す。実行コア330は、アウトオブオーダーロジックを備え、アウトオブオーダー実行に向けて命令をスケジュールすることができる。実行コア330は、命令が実行パイプラインを通って流れ、実行に向けてスケジュールされるときに、命令の流れを滑らかにするとともに並び替えるために利用する1つ又は複数の資源362を備えることができる。これらの資源362は、スケジュールされていない命令を保持する命令キュー、メモリ順序付けバッファ(memory ordering buffer)、未完了ロード命令のエントリを保持するロード要求バッファ、未完了記憶命令のエントリを保持する記憶要求バッファ、MLU(図1の166を参照)等のうちの1つ又は複数を備えることができる。
実行コア330は、アウトオブオーダーに実行された命令を再び元のプログラム順に並び替えるリタイアロジックを備えることができる。このようなリタイアロジックは、少なくとも1つのリタイアキュー364を備え、実行パイプライン中の命令についての情報を、このような命令がリタイアするまで保持することができる。少なくとも1つの実施形態では、リタイアキュー364を、リタイアキューの一部が各論理プロセッサ150a〜150nに割り振られるように論理プロセッサ150a〜150nに分けることができる。別法として、別個のリタイアキュー364を各論理プロセッサ150a〜150nに利用してもよい。
リタイアロジックは、実行ユニット360から実行済み命令の完了状態を受け取り、適切なアーキテクチャ状態がプログラム順に従ってコミット(又はリタイア)されるようにその結果を処理することができる。リタイアロジックはスレッドライブロックユニット165a〜165nを備えることもできる。少なくとも1つの実施形態では、プロセッサ104は、各論理プロセッサ150a〜150nに別個のTLU165a〜165nを備える。
もちろん、実行コア330は命令をプログラム順に処理してもよく、必ずしもアウトオブオーダー処理を提供する必要がないことを当業者は認めよう。このような場合、リタイアキュー364は並べ替えバッファではなく、単に、命令を、このような命令がリタイアするまでプログラム順に保持するバッファである。同様に、このような順序通りのプロセッサの実行資源362は、機能がアウトオブオーダー処理に向けて命令を並べ替えて追跡することである構造を備えない。
図4は、開示する技法を実施可能なマルチスレッドアウトオブオーダー処理システム400の少なくとも1つの実施形態を示すブロック図である。図4並びに図1、図2、及び/又は図3中の同様の要素は同様の参照符号を有する。図4は、処理システムがメモリサブシステム490、プロセッサ404、及びメモリコントローラ453を備えることができることを示す。
図4は、プロセッサ404が、図3に関連して上述したフロントエンド320と同様にフロントエンド420を備えることができることを示す。フロントエンド420は、命令情報を実行コア430に供給する。少なくとも1つの実施形態では、フロントエンド420は、命令情報を実行コア430にプログラム順に供給することができる。
フロントエンド420は、複数の論理プロセッサ150a〜150nのそれぞれに1つずつ、複数の独立した論理シーケンサ340a〜340nを有するフェッチ/デコードユニット322を備えることができる。少なくとも1つの実施形態では、フロントエンド420は、実行される可能性の高い命令をプリフェッチする。分岐予測ユニット432が、分岐予測情報を供給して、フロントエンド420がどの命令が実行される可能性が高いかを判断するのを助けることができる。
少なくとも1つの実施形態では、実行コア430はアウトオブオーダー実行に向けて命令を準備し、命令を実行し、実行済みの命令をリタイアさせる。実行コア430はTLU165を含むことができる。プロセッサ404の実行資源462は、MLU166、命令キュー、ロード要求バッファ、及び記憶要求バッファを備えることができる。
MLU166は、以下の設計特徴:論理プロセッサ150a〜150nがメモリシステム490の資源を共有することができる、に関連するライブロックを軽減するように設計される。したがって、或る論理プロセッサ150からの(プログラム順において)より古いメモリ命令が、別の論理プロセッサ150からのより若いメモリ命令により阻止される場合がある。MEU166は、この状況を検出して修正するように設計される。MEUは、別の論理プロセッサが1つ又は複数のメモリ動作を完了できるように、或る論理プロセッサをストールさせることができる。
実行コア430は、アウトオブオーダーで実行された命令を、並べ換えバッファ(「ROB」)と呼ばれるリタイアキュー464において再び元のプログラム順に並べ替えるリタイアロジックを備えることができる。このリタイアロジックは、実行ユニット360から実行済み命令の完了状態を受け取る。実行コア430は2つ以上の並べ替えバッファ464を備えてもよい。すなわち、単一の分割された並べ換えバッファ464の一部が、すべての論理プロセッサ150a〜150nについての未リタイア命令情報を保持することができる。別法として、別個の並べ替えバッファ464を各論理プロセッサ150に保持してもよい。
実行コア430は、分岐履歴情報をプロセッサ404のフロントエンド420にある分岐予測器432に分岐履歴情報を報告して、分かっている最新の優良分岐履歴情報を付与することもできる。
本明細書において使用される場合「命令情報」という語は、実行コア430が理解し実行することのできる最終フォーマットでの作業の基本単位を指すことを意味する。命令情報はキャッシュ425に記憶することができる。キャッシュ425は、実行命令キャッシュ又は実行トレースキャッシュとして実施することができる。実行命令キャッシュを利用する実施形態では、「命令情報」は、命令キャッシュ444からフェッチされた命令を含む。このようなフェッチされた命令は、実行命令キャッシュに記憶される前にマイクロ操作にデコードされてもされなくてもよい。トレースキャッシュを利用する実施形態では、「命令情報」という語は、マイクロ命令からデコードされたマイクロ操作のトレースを含むことができる。実行命令キャッシュもトレースキャッシュも利用しない実施形態では、「命令情報」は、命令キャッシュ(Iキャッシュ444等)に記憶することができる命令の未処理バイトを含むこともできる。
処理システム400は、メモリ202と共に1つ又は複数のキャッシュ442、444を備えることができるメモリサブシステム490を備える。図4には図示していないが、キャッシュ442、444のうちの一方又は両方のすべて又は部分が、プロセッサ404に対してローカルなダイ上キャッシュとして物理的に実装されてもよいことを当業者は認識しよう。メモリサブシステム490はメモリ階層として実装することができ、相互接続453も備えて、データ240及び/又は命令241等の情報のメモリ202から階層レベルへの転送を容易にすることができる。メモリ階層に、非包含階層構成を含む、様々な構成を利用してもよいことを当業者は認めよう。
アウトオブオーダー処理システム400のみを図4に示すが、本明細書で考察する実施形態はインオーダー処理システムにも同様に等しく適用可能なことを当業者に理解されよう。このようなインオーダー処理システムは通常、ROB464を備えない。それにもかかわらず、このようなインオーダーシステムはそれでもリタイアキュー(図3の364を参照)を備え、未リタイア命令を追跡することができる。
図5、図6、及び図7は共に、ライブロック状況が複数の同時スレッド間に存在すると判断し、アクションをとってライブロック状況を軽減する方法500の少なくとも1つの実施形態を示す状態図を提示する。少なくとも1つの実施形態では、図1〜図4に示すTLU165等のスレッドライブロックユニットが方法500を実行することができる。TLU165は、方法500を状態機械として実装するハードウェアユニットであってもよい。
図5について図3及び図4を参照してこれより考察する。図5の背景として、図3及び図4にそれぞれ示すプロセッサ104及び404等のSMTプロセッサの少なくとも1つの実施形態では、各論理プロセッサ150が、完全なアーキテクチャ状態セットを保持することを理解することが有用である。さらに、リタイアキュー364又はROB464等のプロセッサの特定の特徴及び実行資源362、462は、現在アクティブなソフトウェアスレッドのそれぞれのマイクロアーキテクチャ状態情報を保持することができる。特定の状況において、アクティブスレッドをストールさせ、そのスレッドのマイクロアーキテクチャ状態を、SMT論理プロセッサ150からフラッシュ又は「削除」することができる。選択されない論理プロセッサ(おそらく前進している)のマイクロアーキテクチャ状態をストールさせて「削除」することにより、選択された論理プロセッサに、現在のビートパターンからの解放を提供することができ、選択されない論理プロセッサからの妨げなく前進できるようにすることができる。
図5は、方法500がアイドル状態502を含むことを示す。図5は、1つ又は複数のリセット条件501が満たされたときにアイドル状態502になることができる(551)ことをさらに示す。図5及び図6を簡易化するために、ブロック501と状態502との間の矢印551は、任意のリセット条件501が満たされることを示す。リセット条件の1つ又は複数について、状態502への遷移は図5及び図6に示す他の状態504、506、508、602、604、606のうちの1つから行われてもよいことを当業者は認めよう。しかし、簡易化のために、このような遷移を示す矢印は図5及び図6に示されない。
図7を参照して、1つ又は複数のリセット条件501の少なくとも1つの実施形態を見ることができる。図7は、図4及び図5を参照して本明細書において考察される。少なくとも1つの実施形態では、リセット条件501は単一コア処理システム又はマルチコア処理システムに適用することができる。以下の考察では、「現在の論理プロセッサ」という語は、方法500を実行して、リセット条件501が真であるか否かを判断するTLU165に関連する論理プロセッサ150を指すことを意味する。したがって、プロセッサ104内の他のTLU165a〜165nのうちの1つ又は複数も方法500を同時に実行することが可能であるが、「現在の論理プロセッサ」は、プロセッサ104の他の論理プロセッサ150とは対照的に、対象の論理プロセッサである。
図7は、TLU165が、状態502、504、506、508、602、606、及び604を含め、図5及び図6に示す任意の他の状態であるときに、リセット条件501のうちの1つ又は複数が真になり得ることを示す。リセット条件501のうちの1つ又は複数が真になった場合、状態502への遷移がトリガされる。上述したように、他の任意の状態から状態502への遷移は、他の任意の状態からアイドル状態502への遷移を示す矢印551に含まれる。
図7は、リセット条件501のうちの条件Aにより、TLU165がディセーブルされている場合にアイドル状態502に留まる/アイドル状態502に戻るべきであることが示されることを示す。このような条件Aは、少なくとも1つの実施形態において、TLU165がディセーブルされ得るという仮定を反映している。少なくとも1つの実施形態では、たとえば、TLU165は例外処理ルーチンの実行中にディセーブルされ得る。マイクロコード又は他のファームウェアによって実行され得るこのようなルーチン中、ライブロック検出がディセーブルされ得る。TLU15をディセーブルさせる可能性のある例外の一例は、チップセット(たとえば、図2の255を参照)が、プロセッサ104が低電力状態に遷移することを要求したことを示す、ストップクロック信号等の信号のアサーションである。
図7は、リセット条件501のうちの条件Bにより、リセットトリガが検出されている場合にTLU165がアイドル状態502に留まる/アイドル状態502に戻るべきであることが示されることを示す。このようなリセットトリガが検出されると、TLU165は、アイドル状態502に留まる/アイドル状態502に戻ることによってライブロック判断アクティビティを事実上リセットする。少なくとも1つの実施形態では、リセットトリガは、init pin又はパワーダウンリセットの起動等のユーザ開始イベントによって起動することができる。
図7は、リセット条件501のうちの条件Cにより、TLU165に関連する論理プロセッサ150がアイドルであり、したがってソフトウェアスレッドの実行を現在試みていない場合、TLU165がアイドル状態502に留まる/アイドル状態502に戻るべきことが示されることを示す。このような条件は、少なくとも1つの実施形態では、TLU165により、TLU165の「スレッドアクティブ」インジケータを保持するよりもレジスタを調べることによって検出することができる。
図7は、リセット条件501のうちの条件Dにより、プロセッサコア104の別の論理プロセッサ150が排他的アクセスモードにある場合、TLU165がアイドル状態502に留まる/アイドル状態502に戻るべきことが示されることを示す。排他的アクセスモード中、或る論理プロセッサが、他のすべての論理プロセッサが認識する必要のあるアクションをとっている可能性がある。たとえば、或る論理プロセッサが、ROB464等の共有資源の再分割に影響する命令を実行しているときがあり得る。又はたとえば、或る論理プロセッサが、制御レジスタ中のキャッシュディセーブルビットの設定等、大域的な変更を行う命令を実行し得る。このような状況では、他のすべての論理プロセッサが、排他的アクセス動作が完了するまで実行をストールすべきである。このようなときの間、ストールされたTLU165は、論理プロセッサが前進するものと予想すべきではなく、したがってアイドル状態502に留まる/アイドル状態502に戻るべきである。少なくとも1つの実施形態では、TLU165は、共有信号(たとえば、マイクロアーキテクチャレジスタにおいて反映することができる)を調べて、プロセッサ104の別の論理プロセッサ150が排他的アクセスモードであるか否かを判断することによって条件Dが満たされるか否かを判断することができる。
図7は、リセット条件501のうちの条件Eにより、TLU165の論理プロセッサ150がI側飢餓アクション状態604(図6)から遷移した場合、TLU165がアイドル状態502に留まる/アイドル状態502に戻るべきことが示されることを示す。このような遷移は、現在の論理プロセッサ150でのI側飢餓を軽減しようとして首尾良いアクション(状態604に関連して後述)がとられたことを示し、したがって、TLU165はアイドル状態502に戻って新たなライブロック検出シーケンスを開始し、飢餓回避アクションをとる時間を与えるべきである。
図7はさらに、リセット条件501のうちの条件Fにより、メモリライブロックユニット166が現在アクティブである場合、TLU165がアイドル状態502に留まる/アイドル状態502に戻るべきことが示されることも示す。この条件Fを介して、TLU165はメモリライブロックユニット166に優先度を譲る。このような優先度付与方式は、TLU165とMLU166との間の競合により発生するライブロックを回避するために有用である。すなわち、上述したように、MLU166は或る論理プロセッサ150のメモリ動作(複数可)をストールさせて、別の論理プロセッサが1つ又は複数のメモリ動作を完了できるようにする。リセット条件Fがなければ、ストールされた論理プロセッサは、望ましくないライブロック状況によって前進することができないと誤って判断する恐れがある。条件Fは、このような状況で、TLU165がMLU166に優先度を与えることを保証する。したがって、リセット条件Fは、各TLU165及びMLU166が互いを認識するとともに互いに協働することを保証する。
図7はさらに、リセット条件501のうちの条件Gにより、「削除」アクションが論理プロセッサにアサートされた場合、TLU165がアイドル状態502に留まる/アイドル状態502に戻るべきことが示されることも示す。論理プロセッサ150への削除アクションは以下の結果を有する。すなわち、現在の命令及び、現在のマクロ操作を完全に実行完了するために必要な他のあらゆる命令が完了する。さらなる命令実行はすべてストールされ、論理プロセッサ150のすべてのパイプライン及び関連するマイクロアーキテクチャ状態はフラッシュされる。このようにして、スレスレッドの処理がストールされるのみならず、マイクロアーキテクチャ状態がフラッシュされる。
現在の論理プロセッサに対して条件Gは、たとえば、すべての「削除」アクションが別の論理プロセッサ150a〜150nによって開始された場合に真であり得る。このような条件は、たとえば、別の論理プロセッサが、状態606を完了した結果として全「削除」アクションを開始した場合に満たされ得る。このような場合、現在の論理プロセッサは、少なくとも1つの実施形態ではストールし、そのマイクロアーキテクチャ状態はフラッシュされ、したがって、現在の論理プロセッサのTLU165はアイドル状態502に戻るべきである。
別法として、条件Gは、別の論理プロセッサが状態606を完了していない場合であっても特定の論理プロセッサに対して満たされ得る。その代わり、現在の論理プロセッサ150の「削除」アクションは、方法500の状態に他の形で関連しないプロセッサでのいくつかの他のイベントのいずれかによって開始することができる。たとえば、「削除」イベントは、現在の論理プロセッサ150での割り込みの結果としてアサートされて、アウトオブオーダープロセッサ104に対して厳密な例外処理を可能にすることができる。
図7はさらに、リセット条件501のうちの条件Hにより、別の論理プロセッサのTLU165が「アクティブ」になり、ライブロックブレーカアクションをとるプロセス中である場合、TLU165がアイドル状態502に留まる/アイドル状態502に戻るべきことが示されることも示す。条件Hにより、第2のTLU165は、第1のTLU165が検出段階(502、504、506を参照)から、第1のTLU165が、ライブロック状況を軽減しようとして或る種の修正アクションをとるという意味で「アクティブ」である段階(508、602、606、604を参照)に遷移した場合に、第1のTLU165に譲るように設計される。条件Hを満たすには、各TLU165がプロセッサ上の他のTLU165の状態を認識する必要がある(図3は、少なくとも1つの実施形態において、すべてのTLU165a〜165nが互いに通信することを示す)。
2つ以上のTLU165が同じクロックサイクル中にアクティブ状態に遷移しようとする「タイ(tie)」状況が発生し得る。このような場合、優先度を要求するTLU165のうちの1つのみに与えることができる。たとえば、優先度を最小番号のTLUに割り当てることができる(すなわち、165aが165bよりも高い優先度を有し、したがって165bはアイドル状態502に戻る)。別法として、他の多くの優先度選択メカニズムを利用することができる。少なくとも1つの実施形態では、優先度メカニズムはアービトレータ(たとえば、図1の180を参照)によって実行される。このような場合において優先度の割り当てに利用されるアービトレーションポリシーは、図8に関連して後述するブロック806において利用されるポリシーと同じであってもよいが、かならずしも同じである必要はない。
図7はさらに、リセット条件501のうちの条件Iにより、TLU165が欲張り挙動を示し、したがって別の論理プロセッサ150でのライブロック状況の一因となる可能性が高い場合、TLU165がアイドル状態502に留まる/アイドル状態502に戻るべきことが示されることも示す。このような欲張り挙動はいくつかの方法のいずれかで識別することができる。すなわち、TLU165は、実行資源の1つが満杯であるためROB364部分が空であるプロセッサ150等、論理プロセッサ150のROB364部分がI側飢餓以外の理由で空である場合、非アイドル状態に必ずしも留まる必要があるわけではない。
たとえば、論理プロセッサ150は、システムのメモリ帯域幅を占有して現在の論理プロセッサ150の記憶バッファを記憶命令で満杯にさせる一連の記憶命令を発することによって欲張り挙動を示し得る。少なくとも1つの実施形態では、論理プロセッサ150の命令処理は、実行資源(たとえば、記憶バッファ等)がもはや満杯でなくなるまでストールすることができる。そうして論理プロセッサ150がストールしている間、現在の論理プロセッサのROB364部分は空であり得るが、別の実行資源(すなわち、記憶バッファ)は満杯である。したがって、条件Iについて、欲張り挙動は、ROB364の現在の論理プロセッサ150に割り当てられた部分が空であるが、記憶バッファ(又は他の任意の指定された実行資源)が、データがまだキャッシュ又はメモリにコミットされていない、リタイアした記憶命令で満杯のときに識別することができる。このような場合、現在の論理プロセッサ150はアイドル状態502に戻り、別の論理プロセッサのTLU165がアクティブになる必要に備えて暗黙的に優先度を譲る。
図7はさらに、リセット条件501のうちの条件Jにより、TLU165の論理プロセッサが実行に利用可能な命令を有し、別の論理プロセッサが高優先度ロックシーケンスを実行している場合、TLU165がアイドル状態502に留まる/アイドル状態502に戻るべきことが示されることも示す。高優先度ロックシーケンスはたとえば、原子命令であり得る。原子命令の場合、プロセッサのメモリロジックは、ロックされた動作が完了するまで、この完了までにどのくらい時間がかかるかに関わりなく、ロックされたスレッドに対してのみ働く。この種の高優先度ロックシーケンスは、プロセッサでの最高優先度を表し得る。したがって、リセット条件Jは、別の論理プロセッサが現在この種の高優先度ロック動作を処理中である場合にアイドル状態502に留まる/アイドル状態502に戻ることによってこの優先度を付与する。他のプロセッサが一連の高優先度ロック動作を実行中であり、現在の論理プロセッサ150がそれ自体のメモリ命令の1つを長い時間期間にわたって実行することができない場合、MLU166がおそらく呼び出されて、現在の論理プロセッサがメモリ命令を実行できるようにする。したがって、2つの論理プロセッサ間で競合するメモリ命令に鑑みて、MLU166は、一方の論理プロセッサでの一連の高優先度ロックによる許容できない長時間にわたってのストールから他方の論理プロセッサを保護することができる。
しかし、リセット条件Jは、現在の論理プロセッサに実行する命令がない(すなわち、現在の論理プロセッサのROB464部分が空である)場合に満たされない。すなわち、別の論理プロセッサが高優先度ロック動作を現在処理中であるが、現在の論理プロセッサのROB464部分が空である場合、TLU165はアイドル状態5012に戻らない。ROB部分464が空である場合、現在の論理プロセッサには処理する命令がない。従って、MLU166に頼って、現在の論理プロセッサを、別の論理プロセッサが実行中の一連の高優先度ロック動作の影響を受けることから保護することができない。このような場合、TLU165は、このような一連の高優先度ロック動作に直面して長すぎる時間にわたってストールすることから現在の論理プロセッサを保護する責任を負う。したがって、現在のTLU165は、現在の論理プロセッサ150が空のROB464部分を有し、高優先度ロックが別のスレッドで進行中である場合、段階506においてI側飢餓回避アクションを実行すべきか否かの判断に進むべきである。
図7はさらに、リセット条件501のうちの条件Kにより、現在の論理プロセッサ150が長待ち時間データを受け取った場合、TLU165がアイドル状態502に留まる/アイドル状態502に戻るべきことが示されることも示す。少なくとも1つの実施形態では、条件Kは、キャッシュミスによりデータ又は命令を待っていた論理プロセッサがついにデータ又は命令を受け取った場合に満たされる。このようなとき、現在の論理プロセッサはアイドル状態502に戻るべきである。これは、現在の論理プロセッサ150が条件Kが満たされたことに応答してアイドル状態502に戻らない場合に、論理プロセッサ150が誤ってキャッシュミス関連の優先度要求530をアービトレータ180(図1及び図2)に送ることに進む恐れがあるためである(状態506についての以下の考察を参照)。
図7はさらに、リセット条件501のうちの条件Lにより、現在の論理プロセッサ150が妥当な時間枠中に少なくとも1つの最終フォーマット命令をリタイアさせた場合、TLU165がアイドル状態502に留まる/アイドル状態502に戻るべきことが示されることも示す。少なくとも1つの実施形態では、最終フォーマット命令はマイクロ動作であり、妥当な時間枠は単一のクロックサイクルである。条件Lが満たされる場合、本明細書では、現在の論理プロセッサ150が、スレッド命令ストリームの実行において前進したと言う。したがって、ライブロック状況は存在せず、TLU165はアイドル状態502に戻るか又はアイドル状態502に留まるべきである。
図7はさらに、リセット条件501のうちの条件Mにより、論理プロセッサの優先度要求530をアービトレータ(図1及び図2の180)に送る能力(状態506についての以下の考察を参照)がディセーブルされている場合、TLU165がアイドル状態502に留まる/アイドル状態502に戻るべきことが示されることも示す。論理プロセッサ150の優先度要求530をアービトレータ180(図1及び図2)に送る能力がディセーブルされている場合、本明細書では「デフィーチャ(defeature)」が真であると言う。条件Mは、1)普通ならば状態506からの優先度要求530の送信に繋がり得る任意の条件が真であり、且つ2)デフィーチャが真である場合に満たすことができる。このような場合では、優先度要求530を状態506から送る諸条件が真である場合であっても、論理プロセッサ150は要求を送ることができない。したがって、論理プロセッサ150は、特殊ケース状態506(後述)に遷移する/留まるのではなく、アイドル状態502に留まる/アイドル状態502に戻るべきである。
少なくとも1つの実施形態では、条件Mの最初の部分(すなわち、「1)普通ならば状態506からの優先度要求530の送信に繋がり得る任意の条件が真である」)は、論理プロセッサ150がオンコアキャッシュミス(データ又は命令)を受けており、オフコアソース(たとえば、オフコア共有キャッシュ251又はオフチップメモリ202等)から命令又はデータを待っている場合に満たすことができる。このようなミスはたとえば、1)キャッシュミスがロード命令で発生し、ロード命令が、リタイアするときであるが、ロードデータがプロセッサコア104で利用可能ではないためリタイアできない(すなわち、いずれのオンコアキャッシュでもロードバッファ(「LDRB」)でも利用可能ではない)場合に発生し得る。このようなミスはたとえば、2)論理プロセッサ150が命令フェッチでオンコアミスを受けており、オフコアソース(たとえば、オフコア共有キャッシュ251若しくはオフチップメモリ202等)から命令情報を待っている場合、又は3)論理プロセッサ150がSTAマイクロ操作(記憶マクロ命令に関連する最終フォーマットのストア−アドレスマイクロ操作であり得る)でオンコアミスを受けており、したがってストア−アドレスマイクロ操作によって示されるメモリロケーションのオフコア検索を待っている場合にも発生し得る。
ここでも、このような第3の条件は、STAマイクロ操作がリタイアするときであるが、ストア命令に関連するデータを書き込むべきメモリロケーション(ストア−アドレス)がプロセッサコア104のキャッシュ又はストアバッファ(「STRB」)にないためリタイアできない場合に満たされる。通常、これらの3つの条件はいずれも、TLU165を特殊ケース状態506に遷移させる。しかし、デフィーチャが真の場合、リセット条件Mは、論理プロセッサ150のこのような条件下で優先度要求530を送る能力がディセーブルされているため、このような遷移が発生すべきではないことを示す。
図5に戻ると、TLU165がライブロック状況が存在するか否かを判断するためになり得る他の状態504、506を見ることができる。このような状態504、506は、アイドル状態502と共に、本明細書では「検出」状態と呼ばれる。TLU165は、このような検出状態502、504、506にある間、単に特定の条件について監視しているだけであり、ライブロックを解消しようとするいずれの肯定的なアクションもとっていないため「アクティブ」であるとはみなされない。したがって、論理プロセッサ150は、検出状態502、504、506の1つにある間、図7に関連して考察したリセット条件501のリセット条件Hをトリガすることはなく、したがって他の論理プロセッサ(150a〜150nを参照)に現在の論理プロセッサ150に対して優先度を付与させることがない。
残りの2つの検出状態504及び506になることは、論理プロセッサ150をアイドル状態502から遷移させた状況が、1)最終的に優先度要求530をアービトレータ180(図1及び図2)に送ることから最終的に恩恵を受け得るものであるか、又は2)論理プロセッサ150がI側飢餓を受けている可能性があるが、別のスレッドの高優先度ロックによってアクションをとることからブロックされている(このような状況は本明細書では「特殊ケース」と呼ばれる)場合であるか否かによって差別化される。特殊ケースの場合、TLU165はアイドル状態502から特殊ケース状態506に遷移する(552)。他の場合、TLU165はアイドル状態502から初期カウント状態504に遷移する(553)。これらの状態504、506のそれぞれについてさらに詳細に別個に以下考察する。
特殊ケース状態506には、1)リセット条件501のいずれも真ではなく、且つ2)
a.論理プロセッサ150がオンコアキャッシュミスを受けているか、又は
b.論理プロセッサ150が空のROB464を有するが、高優先度(「HP」)ロックが別の論理プロセッサで進行中である
場合にアイドル状態502から入る(552)。
後者の場合(条件2b)では、現在の論理プロセッサ150はI側飢餓を受けている可能性がある。しかし、現在の論理プロセッサ150は、別のスレッドが高優先度ロック動作を実行中であることからストールも受けている。したがって、高優先度ロック動作が外されるまで、現在の論理プロセッサ150はいかなる「アクティブ」状態にも進むべきではない。
前者の場合(2a)では、論理プロセッサ150はオンコアキャッシュミスを受けている。少なくとも1つの実施形態では、このようなオンコアキャッシュミスは、リセット条件501のうちの条件Mに関連して上述した3つの条件、すなわち完了できないリタイア時のロード命令、STA命令、又は命令フェッチを調べることによって判断することができる。もちろん、このような実施形態を限定として解釈すべきではなく、他の実施形態では、オンコアキャッシュミスの検出を他の条件又は追加の条件を調べることによって判断することができることを当業者は認識しよう。いずれにしても、論理プロセッサ150がオンコアキャッシュミスを受けている(且つデフィーチャが真ではない)場合、TLU165は特殊ケース状態506に遷移して(552)、優先度要求信号530をアービトレータ180に送れるようにし、これは、他の論理プロセッサの処理に明示的に干渉する、ストールアサーション状態508等のより厳しいアクション状態に直接遷移するよりも他の論理プロセッサに対する妨害が最小である。
特殊ケース状態506中、TLU165はカウンタを利用して、特殊ケース状態506になってから経過したクロックサイクル数をカウントすることができる。代替の実施形態では、クロックサイクルのカウントに代えて、又はこれに加えて、経過時間を測定する他の任意の手法を利用してもよい。所定数のクロックサイクル(X)が経過した後、TLU165は優先度要求530をアサートすることができる。優先度要求530は、1)現在の論理プロセッサ150がキャッシュミスを受けている場合、且つ2)TLU165がこの特殊ケース状態506の発生になってから所定量の時間(X)が経過した場合に発せられる。
優先度要求530はアービトレータ180(図1及び図2)に行き、現在の論理プロセッサ150のメモリ要求に他の論理プロセッサ(150a〜150nを参照)からのメモリ要求よりも高い優先度を与えるようにアービトレータ180に要求する。別法として、マルチコア実施形態(図2の104a〜104nを参照)では、優先度要求530は、アービトレータ180が現在のプロセッサコア104に他のプロセッサコアよりも高い優先度のメモリ要求を与えることを要求することができる。後者の実施形態では、優先度要求530は単一コアシステム(図1を参照)では有用でない。したがって、単一コア実施形態の場合にコア固有の優先度要求530がオプションであることを図5に破線で示す。優先度要求530を発した後、TLU165は、後述する退出条件のうちの1つが真になるまで特殊ケース状態506に留まることができる。
論理プロセッサは、ROB464の、TLU165の論理プロセッサ150に関連する部分が空であり、プロセッサコア104の他の任意の論理プロセッサ(150a〜150nを参照)が高優先度ロック動作を実行中である限り特殊ケース状態506に留まる(555)。しかし、TLU165が特殊ケース状態506中に、別の論理プロセッサのHPロック進行中インジケータが真から偽に遷移したと判断する場合、TLU165は特殊ケース状態506を出て、「アクティブ」状態であるストールアサーション状態508に入り(554)、ストールアサーション状態508中、現在の論理プロセッサ150は他の論理プロセッサへのストールをアサートすることができる。したがって、初期カウント状態504は、ROB464部分が空の場合に迂回される。状態506から状態508への遷移554は、ROB464部分が空である場合、初期カウントダウン状態504の実行に時間がかからないため高優先度処理を実施する。カウントダウンは、ROB464が空である場合に時間がかかりすぎ、論理プロセッサはこの場合にいかなる命令も有さず、TLU165はしたがって、可能な限り速くより多くの命令をROB464に入れるように設計される。
図5は、TLU165が、コア104のメモリライブロックユニット166がトリガされたと判断する場合にも特殊ケース状態506から遷移し得る(556)ことを示す。このような場合では、TLU165は、特殊ケース状態506から初期カウント状態504に遷移する(556)。このような動作の下で、TLU165は一時的な優先度をMLU166に付与して、MLU166ロジックが、論理プロセッサ150が受けている可能性のある長待ち時間オンコアキャッシュミス(上述した、特殊ケース状態506に入るための条件2aを参照)の結果として出現しつつある潜在的なライブロックな解消を試みられるようにする。その処理中、MLU166は優先度を特定のスレッドに割り当てることができる。遷移556時に優先度をMLU166に付与することにより、TLU165は、TLU166が優先度を異なる論理プロセッサ150に割り当てている間に優先度を現在の論理プロセッサに割り当てることを事実上回避する。このようにして、TLU165及びMLU166は協働して、優先度を一度に1つのみのスレッドに割り当てる。TLU165はしたがって、初期カウント状態504に遷移して(556)、メモリライブロックを軽減することができておらず、現在の論理プロセッサ150が許容できる時間量後であっても依然として前進できないと判断する前に、MLU166に対して所定の全時間期間Y(状態504についてのさらなる後述を参照)を許す。
図7に関連して後述したリセット条件Kに従い、TLU165は、MLU166が、ミスしたキャッシュ情報(データ又は命令)が最終的に受け取られるようにメモリライブロックの解消に成功できる場合に初期カウント状態504から元のアイドル状態502に遷移する(551)ことに留意されたい。
また、リセット条件Kに従い、特殊ケース状態506から元のアイドル状態502への遷移551は、通常のプロセッサ動作の一環として、要求されたデータ又はフェッチされた命令が最終的に受け取られる場合に、MLU166からの助けなしでも行えることにも留意されたい。
上述したように、特殊ケースのいずれの条件も存在せず(オンコアキャッシュミス又は空のROB+HPロック)、且つリセット条件501のいずれも真ではない場合、TLU165はアイドル状態502から初期カウント状態504に遷移する(553)。初期カウント状態中、TLU165はタイマを維持して、TLU165が所定の時間量Yにわたって初期カウント状態504であったか否かを判断する。この所定の時間量Yは、この時間量Y後に、現在の論理プロセッサ150が前進できていない場合に、現在の論理プロセッサ150がライブロック状況を受けていると仮定される時間量を反映するように決定することができる。
少なくとも1つの実施形態では、TLU165は、初期カウント状態504中にカウントダウンタイマを維持し、ここでタイマは所定の時間量Yにセットされ、次いでカウンタをクロックサイクル毎に減分する。カウンタが0(又は他の或る所定の最小値)に達すると、論理プロセッサ150はライブロック状況にある可能性があり、「アクティブ」状態への遷移を是認することができる。所定の時間値Yから所定の最小値までのタイマのカウントダウンはしたがって、少なくとも1つの実施形態では、前進のないことを許容できる所定のクロックサイクル数を表す。
任意のリセット条件501が初期カウント状態504中に真になった場合、TLU165はアイドル状態502に遷移し、初期カウント状態504中に利用されたカウンタを再初期化できることに留意されたい。このような1つのリセット条件である条件Lは、最終フォーマット命令のリタイアである。このようなリタイアが初期カウント段階504中に発生しない場合、現在の論理プロセッサは命令の実行において前進していない。他のリセット条件A〜K及びMは、前進の可能性についての他の或る表示を提供し得る。リセット条件のいずれも所定のクロックサイクル数中に発生しない場合、TLU165は初期カウント状態504からストールアサーション状態508に遷移する(557)。
図5はしたがって、ストールアサーション状態508に、初期カウント状態504(遷移557を参照)又は特殊ケース状態506(遷移554を参照)のいずれからでも入ることができることを示す。ストールアサーション状態508中、TLU165は、それ自体の論理プロセッサ(すなわち、現在の論理プロセッサ)を除き、プロセッサ104のあらゆる論理プロセッサ150a〜150nに対してストール信号をアサートする。このようなアクションは、プロセッサ104のすべての論理プロセッサ150a〜150nに優先度を付与する。少なくとも1つの実施形態では、ストールアサーション状態508中にアサートされるストール信号は、ストール信号がアサートされている間、他の論理プロセッサ(150a〜150nを参照)が実行ユニット360に命令を出せないようにする。TLU165は、以下の退出条件のうちの1つが満たされるまで、ストールアサーション状態に留まり、プロセッサ104の他のあらゆる論理プロセッサ150に対してストール信号をアサートし続ける。
図5は、クロックサイクル数Zとして反映できる所定の時間期間が経過し、且つROB464の現在の論理プロセッサに関連する部分が空ではない場合に、TLU165の少なくとも1つの実施形態がストールアサーション状態508を退出(558)できることを示す。このような場合、適切なROB464部分が空ではないため、現在の論理プロセッサ150は命令飢餓を受けていない。それにもかかわらず、現在の論理プロセッサ150は、Zクロックサイクルの期間にわたって他のすべての論理プロセッサにストール信号をアサートしており、依然として前進することができないでいる。他の論理プロセッサをストールさせても現在の論理プロセッサ150は前進できないため、ライブロック状況を軽減するために追加のアクションが求められる。したがってTLU165は、このような退出条件が真の場合に図6の状態602に遷移する(558)。
一方、現在の論理プロセッサ150のROB464の指定部分が空である場合、すぐ上で考察した状態508の第1の退出条件は真ではない。ROB464部分が空であるため、現在の論理プロセッサ150は命令飢餓を受けている可能性がある。したがって、ROB464部分が空である場合、TLU165は、所定の時間量Z待ってから、論理プロセッサ150がアクションをとって命令飢餓を軽減できる図6の状態604に遷移する(559)。
図4を参照して本明細書において考察する図6を参照すると、I側飢餓アクション状態604に、ROB464部分が少なくとも所定の時間量Zにわたって空であることに応答して、ストールアサーション状態508から入ることができることが分かる。I側飢餓アクション状態604中、TLU165は1つ又は複数のアクションをとって、現在の論理プロセッサのROB464部分により多くの命令を入れようとする。これらのアクションは本明細書では飢餓回避アクションと呼ばれる。状態604中、TLU165は、状態508中にアサートされた、他の論理プロセッサ(複数可)150a〜150nに対するストール信号をデアサートする。このようなアサーション中、現在の論理プロセッサ150は前進に失敗し、ストールは助けにならず、現在の論理プロセッサ150は依然として命令の欠如を経験している(すなわち、ROB464が依然として空である)。実際に、状態604に入るときに、状態508中にアサートされたストール信号が、別の論理プロセッサによるマクロ命令の実行完了を妨げ、これが現在の論理プロセッサ150が必要とする資源の解放を妨げていた可能性がある場合があり得る。
状態604に入るときに、現在の論理プロセッサが実際に命令側飢餓を受けている(すなわち、実行に利用可能な命令がない)ものと仮定する。このような飢餓は、いくつかの要因のうちのいずれかを原因とし得る。少なくとも1つの実施形態では、このような要因には、命令フェッチ要求がメモリ命令調停ロジック(図示せず)においてブロックされていること、1つ若しくは複数の他の論理プロセッサが一連の高優先度ロック動作を実行していたこと、又は現在の論理プロセッサ150の命令フェッチが繰り返し「否定」応答を、メモリシステムへの要求の処理に利用される任意の構造から受け取っていたことが含まれ得る。
I側飢餓状態604中、TLU165は以下のアクションをとることができる。すなわち、1)プロセッサコア104の他のすべての論理プロセッサ150a〜150nへのストール信号をデアサートすること、及び2)現在の論理プロセッサに「スレッド優先度」を与えることを要求することである。「スレッド優先度」要求はスレッド優先度ロジック(図示せず)に対して行うことができる。現在の論理プロセッサがスレッド優先度を有する場合、MLU166を呼び出すことができる。
図9を手短に参照しI側飢餓アクション状態604(図6)の少なくとも1つの実施形態中に協働することができるTLU165及びMLU166の特定の特徴を示す。図9について図3、図5、及び図6を参照して本明細書において考察する。図9は、各TLU165a〜165nがライブロック検出器920及びライブロックブレーカ930を備えることができることを示す。少なくとも1つの実施形態では、ライブロック検出器920はリセット条件501を監視して、検出段階502、504、506を実行する。ライブロックブレーカ930は、少なくとも1つの実施形態では、「アクティブ」状態508、602、604、及び606のアクションを実行する責任を負う。
図9は、MLU166がメモリライブロックブレーカ940を備えることを示す。メモリライブロックブレーカ940は、少なくとも1つの実施形態では、上述したような長引くオンコアキャッシュミス状況等のメモリライブロック状況を軽減するアクションをとる責任を負う。
図9は、MLU166のメモリライブロックブレーカ940が共有ライブロックブレーカロジック950を備えることができることを示す。共有ライブロックブレーカロジック950は、現在の論理プロセッサが「スレッド優先度」を取得していることに応答してI側飢餓アクション状態604中に呼び出すことができる。共有ライブロックブレーカロジック950は、プロセッサコア104上の任意の論理プロセッサ150a〜150nのTLU165によって呼び出すことができる。
図6を再び参照すると、I側飢餓を受けている論理プロセッサ150が、現在の論理プロセッサに最初に「スレッド優先度」が与えられたときから連続した所定の時間N(クロックサイクル数を反映することができる)にわたってスレッド優先度を割り当てられている場合、I側飢餓アクション状態604を退出できることが分かる。このような場合、TLU165は削除状態606に遷移する(651)。
遷移651は、I側飢餓アクション状態604中にとられたアクションが成功しない場合のみ行われることに留意されたい。たとえば、別の論理プロセッサによって開始される自己書き換えコード(SMC)が繰り返し検出されることにより、飢えたスレッドに強制的に絶えず命令を破棄及びリフェッチさせ、そうしてROB464部分を空の状態に保つことができる。しかし、状態604中にとられるI側飢餓回避アクションはおそらく、命令飢餓状況の軽減に成功するであろう。その場合、命令がフェッチされ、現在の論理プロセッサ150のROB464の割り当てられた部分に送られる。このような場合、現在の論理プロセッサ150は、少なくとも1つの実施形態では、命令飢餓状況から遷移しているであろう。したがって、リセット条件E(図7の501を参照)が真になり、TLU165はI側飢餓アクション状態604からアイドル状態502(図5を参照)に遷移する(501)。
図6は、削除カウントダウン状態602にストールアサーション状態508から入る(558)ことができることを示す。削除カウントダウン状態602中、ここでもTLU165は、他の論理プロセッサ(複数可)150a〜150nに対して状態508中にアサートされたストール信号をデアサートする。このようなアサーション中、現在の論理プロセッサ150は前進に失敗しており、ストールは助けにならなかった。実際に、状態602に入るときに、状態508中にアサートされたストール信号が、別の論理プロセッサ150によるマクロ命令の実行完了を妨げ、これが現在の論理プロセッサ150が必要とする資源の解放が妨げられていた場合があり得る。しかし、ストールは他の論理プロセッサのタイミングを乱した可能性があり、これは現在の論理プロセッサ150の前進を助けるのに有益であることを示し得る。
削除カウントダウン状態602に入ると、現在の論理プロセッサ150は、最終的に前進に繋がる状態にあり得る。たとえば、現在の論理プロセッサ150は、MLU166が現在アクティブであるが、ライブロックブレーカ処理の完了にさらなる時間が必要であるメモリライブロックを受けている可能性がある。削除カウントダウン状態602中、TLU165は、現在の論理プロセッサ150がリセット条件501のうちの1つを実現することを期待して所定の時間量(たとえば、Mサイクルカウントとして反映することができる)待つ。少なくとも1つの実施形態では、図6に示すMカウント及びNカウントは同じ数であってもよいが、このような同一性はすべての実施形態に求められるわけではない。
図6は、少なくとも1つの実施形態において、TLU165が以下の条件で、すなわち、現在の論理プロセッサに「スレッド優先度」が割り当てられており、スレッド優先度を連続した時間枠Mにわたって保持している場合に削除カウントダウン状態602から削除状態606に遷移する(652)ことを示す。この時間中、現在の論理プロセッサ150は、スレッド優先度にもかかわらず、スレッド前進を行うことができていない。上述したように、TLU165はまた、現在の論理プロセッサが命令飢餓状態にある場合、すなわち状態604中にとられたI側飢餓アクションが成功しなかった場合にも削除状態606に遷移する(651)ことができる。
状態606中、TLU165はコア内部「削除」信号を、プロセッサコア104の他の各論理プロセッサ(150a〜150nを参照)に発する。このようなアクションの結果、現在の論理プロセッサ150が前進できるようになることが期待される。図1に示すもの等の単一コアの実施形態では、方法500を処理することは、状態606からアイドル状態502への遷移(654)であり得る(コネクタ「C」を参照)。
図6は、上述した状態遷移のうちの1つの結果としてではなく外部イベントに応答しても、削除状態606になり得る(655)ことを示す。このような外部イベントはたとえば、オプション状態608(後述)にある別のコア上のTLU165により生成された全スレッド削除要求の受信であり得る。
状態606から、状態606中に発せられたコア内部全スレッド「削除」信号が、所定の時間量P以内に現在の論理プロセッサ150の前進に繋がらなかった場合にオプションの状態遷移653が発生し得る。状態608が図6では破線で示されることに留意されたい。これは、遷移653及び状態608が、図2に示す実施形態200等のマルチコアの実施形態にのみ当てはまるという意味でオプションであるためである。状態608において、全コア削除要求がアービトレータ180(図1及び図2)に送られる。状態608において生成される要求に応答して、アービトレータ180の少なくとも1つの実施形態は以下のアクションを開始する。すなわち、アービトレータ180が保持しているすべてのキューが、すべてのコア104a〜104n上のすべてのスレッド150a〜150n(現在の論理プロセッサを除く)について空になる。また、すべての新しい全コア削除要求は、現在の論理プロセッサ150から発せられるもの以外はブロックされる(図8のブロック806を参照)。最後に、全スレッド削除要求(状態508の上記考察を参照)は他のあらゆるプロセッサコア104a〜104nに発せられるとともに、現在の論理プロセッサ150に関連するプロセッサコア104上の他のあらゆるスレッド150a〜150n(現在の論理プロセッサを除く)にも発せられる(上述したように、このような削除要求は、他のプロセッサコアの論理プロセッサによって受け取られた場合、そのような論理プロセッサのTLU165を状態606にさせることができる−ブロック620の上記考察を参照)。状態608から、TLU165はアイドル状態に戻る(コネクタ「D」を参照)。
図8は、マルチコアの実施形態の場合に状態608中に発せられるもの等の全コア削除要求を処理する方法800を示すフローチャートである。少なくとも1つの実施形態では、方法800は、図1及び図2に示すアービトレータ180等のアービトレータによって実行することができる。アービトレータは、少なくとも1つの実施形態では、本明細書では「アンコア」と呼ばれるロジックのオフコア部分280(図2)の一部として備えることができる。
図8は、方法800がブロック802において始まり、ブロック804に進むことを示す。単一の全コア削除要求が(すなわち、第1のプロセッサコア104a上のTLU165から)生成された場合、処理はブロック806に進む。状態608に関連する処理に関連して上述したように、要求するコア104aにはブロック806において優先度が割り当てられ、残りのコア104a〜104nからの後続するすべての全コア削除要求は無視される。
処理はブロック806からブロック808に進む。ブロック808において、全スレッド削除要求が、元々の全コア削除要求が発せられたコアを除き、他のすべてのコア104a〜104nに対して開始される。このような要求は他のコアによって受け取られ、他のコアを削除状態606(図6のブロック620を参照)に遷移させる。次いで、処理はブロック814において終了する。
しかし、2つ以上の同時の全コア削除要求が複数のコアから受け取られる場合、処理はブロック804からブロック810に進む。ブロック810において、方法800はアービトレーションポリシーを適用して、複数の要求するコアのうちの1つを優先コアとして選択する。少なくとも1つの実施形態では、要求するコアは、削除要求と共にコアIDをアービトレータに供給することができる。次いで、アービトレータ180は、最高ID又は最低IDを有するコアを優先コアとして選択する等の単純な選択アルゴリズムを適用することができる。ブロック810から、処理は、前の段落において述べたようにブロック808に進み、次いでブロック814に進む。
上記考察は、複数のスレッド間でスレッド優先度を調整して、ライブロックブレーカロジック、I側飢餓回避ロジック、及び高優先度ロック処理の間の優先度も保持しながらスレッド命令の実行を前進できるようにする方法、システム、及び装置の選択された実施形態を説明する。本明細書において説明したメカニズムは、単一コア又はマルチコアのマルチスレッド化システムと併せて利用することができる。上記説明では、方法、システム、及び装置の各種態様について説明した。説明のために、特定の数、例、システム、及び構成についてはより完全な理解を提供するために記さなかった。しかし、説明した方法及び装置を特定の詳細なしで実施可能なことが当業者には明らかである。他の場合では、本方法及び本装置を曖昧にしないように既知の特徴を省くか、又は簡易化した。
本明細書において説明した方法の実施形態は、ハードウェア、ハードウェアエミュレーションソフトウェア若しくは他のソフトウェア、ファームウェア、又はこのような実施手法の組み合わせで実施することができる。本発明の実施形態は、少なくとも1つのプロセッサ、データ記憶システム(揮発性メモリ及び不揮発性メモリ、並びに/又は記憶素子を含む)、少なくとも1つの入力装置、及び少なくとも1つの出力装置を備えるプログラマブルシステムに対して実施することができる。本願では、処理システムは、プロセッサ、たとえば、デジタル信号プロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、又はマイクロプロセッサ等を有する任意のシステムを含む。
プログラムは、汎用プログラマブル処理システム又は特定用途向けプログラマブル処理システムにより可読の記憶媒体又は記憶装置(たとえば、ハードディスクドライブ、フロッピーディスクドライブ、読み取り専用メモリ(ROM)、CD−ROM装置、フラッシュメモリ装置、デジタル多用途ディスク(DVD)、又は他の記憶装置)に記憶することができる。処理システムのプロセッサがアクセス可能な命令は、記憶媒体又は記憶装置が処理システムに読み取られて本明細書に述べた手続きを実行するときに処理システムの構成及び動作を可能にする。本発明の実施形態は、処理システムと併せて使用するように構成された機械可読記憶媒体として実施されるものとして考えることもでき、この場合、記憶媒体は、処理システムに本明細書に述べた機能を特定の規定された様式で実行するように動作させるように構成される。
このような処理システムの例の少なくとも1つの実施形態を図4に示す。サンプルシステム400を使用して、たとえば、ライブロック状況を検出し、このような状況を軽減するために修正アクションをとることができる。サンプルシステム400は、Intel Corporationから入手可能なPentium(登録商標)マイクロプロセッサ、Pentium(登録商標)Proマイクロプロセッサ、Pentium(登録商標)IIマイクロプロセッサ、Pentium(登録商標)IIIマイクロプロセッサ、Pentium(登録商標)4マイクロプロセッサ、Itanium(登録商標)マイクロプロセッサ、及びItanium(登録商標)2マイクロプロセッサに基づく処理システムを表すが、他のシステム(他のマイクロプロセッサを有するパーソナルコンピュータ(PC)、エンジニアリングワークステーション、個人情報端末、及び他のハンドヘルド装置、セットトップボックス等を含む)を使用することも可能である。一実施形態では、サンプルシステムはMicrosoft Corporationから入手可能な、或るバージョンのWindows(商標)オペレーティングシステムを実行することができるが、たとえば、他のオペレーティングシステム及びグラフィカルユーザインタフェースを使用することも可能である。
図4を参照すると、サンプル処理システム400はメモリシステム490及びプロセッサ404を備えることができる。メモリシステム490は、プロセッサ404の動作を制御するための命令241及びデータ240を記憶することができる。
メモリシステム490はメモリの一般化された表現として意図され、ハードドライブ、CD−ROM、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、フラッシュメモリ、及び関連回路等の様々な形態のメモリを含むことができる。メモリシステム490は、プロセッサ404が実行可能なデータ信号で表される命令241及び/又はデータ240を記憶することができる。命令241及び/又はデータ240は、本明細書において考察した技法の任意のもの又はすべてを実行するコードを含むことができる。
本発明の特定の実施形態を図示し説明したが、変更及び変形を本発明の広義の態様において本発明から逸脱することなく行えることが当業者には明らかであろう。たとえば、上述したカウンタ値X、Y、Z1、Z2、M、N、Pはカウントアップカウンタ値として利用してもカウントダウンカウンタ値として利用してもよい。このような各カウンタ値は異なる値であってもよいが、そうである必要はない。たとえば、少なくとも1つの実施形態では、P>>M、P>>N、Z1>Y、Z2>Y、P>Z1、P>Z2、且つX>Z1である。このようなカウンタ値のデフォルトをハードウェアにセットすることができる。いくつかの実施形態では、デフォルトカウンタ値は、たとえば、マイクロコード、他のファームウェアコード又はソフトウェアコードで変更可能なようにプログラム可能であり得る。
したがって、変更及び変形を本発明の広義の態様で本発明から逸脱することなく行えることを当業者は認めよう。添付の特許請求の範囲はその範囲内に、本発明の真の範囲内にあるこのような変更及び変形をすべて包含するものである。
複数の論理プロセッサの1つのスレッド前進をそれぞれ判断する複数のスレッドライブロックユニットを含むプロセッサの少なくとも1つの実施形態のブロック図である。 開示する技法を実行可能なマルチスレッド化システムの少なくとも1つの実施形態を示すブロック図である。 複数の論理プロセッサのそれぞれにスレッドライブロックユニットを含むプロセッサの少なくとも1つの実施形態のフロントエンド及び実行コアを示すブロック図である。 複数の論理プロセッサのそれぞれにスレッドライブロックユニットを含む処理システムの少なくとも1つの実施形態のメモリ階層を示すブロック図である。 複数の同時スレッド間でのライブロックを検出して軽減する方法の少なくとも1つの実施形態を示す状態図である。 複数の同時スレッド間でのライブロックを検出して軽減する方法の少なくとも1つの実施形態を示す状態図である。 図5及び図6に示す方法のアイドル状態に入るためのリセット条件を示すブロック図である。 複数のプロセッサ間でのライブロック優先要求を調停する方法の少なくともオン実施形態を示すフローチャートである。 スレッドライブロックユニットとメモリライブロックユニットの間で共有されるライブロックブレーカロジックの少なくとも1つの実施形態を示すブロック図である。

Claims (39)

  1. 第1の論理プロセッサ及び第2の論理プロセッサを備えるプロセッサコアと、
    前記第1の論理プロセッサに結合される第1のスレッドライブロックユニットと、
    前記第2の論理プロセッサに結合される第2のスレッドライブロックユニットであって、
    なお、前記第1のライブロックユニットは、該第1のライブロックユニットによって実行に利用可能な命令の欠如に応答して該第2のライブロックユニットのストールを要求し、
    アービトレータと
    を備え、
    前記第1のスレッドライブロックユニット、前記第2のスレッドライブロックユニット、及び前記アービトレータはさらに、前記第1の論理プロセッサと前記第2の論理プロセッサとに優先度を付与する、プロセッサ。
  2. 前記第1のスレッドライブロック検出器はさらに、前記第1の論理プロセッサが、第1のソフトウェアスレッドの命令実行中に前進できないか否かを判断し、
    前記第2のスレッドライブロック検出器は、前記第2の論理プロセッサが、第2のソフトウェアスレッドの命令実行中に前進できないか否かを判断する、請求項1に記載のプロセッサ。
  3. 前記第1の論理プロセッサ及び前記第2の論理プロセッサに結合されるメモリライブロックユニットをさらに備える、請求項1に記載のプロセッサ。
  4. 前記メモリライブロックユニットはさらに、メモリライブロック回避アクションを開始する、請求項3に記載のプロセッサ。
  5. 前記アービトレータは、前記第1の論理プロセッサと前記第2の論理プロセッサとに優先度を付与して長待ち時間キャッシュミスを解決する、請求項1に記載のプロセッサ。
  6. 前記第1のライブロックユニット及び前記第2のライブロックユニットはさらに、前記メモリライブロックユニットに優先度を譲る、請求項3に記載のプロセッサ。
  7. 前記ライブロックユニットはさらに、実行に利用可能な命令の欠如に応答して飢餓回避アクションを開始する、請求項1に記載のプロセッサ。
  8. 前記第1のライブロックユニットはさらに、前記第1の論理プロセッサに関連する第1のソフトウェアスレッドに、前記利用可能な命令の欠如が示されるか否かを判断し、
    前記第2のライブロックユニットはさらに、前記第2の論理プロセッサに関連する第2のソフトウェアスレッドに、前記利用可能な命令の欠如が示されるか否かを判断する、請求項6に記載のプロセッサ。
  9. 前記第1のライブロックユニットはさらに、前記第1の論理プロセッサが、前記第1のソフトウェアスレッドの命令実行中に前進できないとの判断に応答してアクティブになる、請求項2に記載のプロセッサ。
  10. 前記第2のライブロックユニットは、前記第1の論理プロセッサがアクティブである場合、該第1の論理プロセッサに優先度を譲る、請求項9に記載のプロセッサ。
  11. 前記第2のライブロックユニットはさらに、前記第2の論理プロセッサが、第2のソフトウェアスレッドの命令実行中に前進できないとの判断に応答してアクティブになる、請求項2に記載のプロセッサ。
  12. 前記第1のライブロックユニットは、前記第2の論理プロセッサがアクティブである場合、前記第1の論理プロセッサに優先度を譲る、請求項11に記載のプロセッサ。
  13. 前記第1のライブロックユニットは、前記第2の論理プロセッサにより実行される高優先度ロック動作中、該第2の論理プロセッサに優先度を譲る、請求項12に記載のプロセッサ。
  14. 前記プロセッサコアは、追加のライブロックユニットにそれぞれ結合される少なくとも1つの追加の論理プロセッサを備え、
    前記少なくとも1つの追加のライブロックユニットは、前記第1のライブロックユニット、前記第2のライブロックユニット、及び前記アービトレータと共に、前記第1の論理プロセッサ、前記第2の論理プロセッサ、及び前記少なくとも1つの追加の論理プロセッサに優先度を付与する、請求項1に記載のプロセッサ。
  15. メモリシステムと、
    少なくとも第1の論理プロセッサを有する第1のプロセッサコアと、
    第2のプロセッサコアと
    を備え、
    前記第1のプロセッサコアは、複数の条件が前記第1の論理プロセッサに存在するか否かを判断し、該複数の条件を満たすことに基づいて前記第1の論理プロセッサがライブロックされているか否かを判断する第1のライブロックユニットをさらに備え、
    前記第1のライブロックユニットはさらに、前記第1の論理プロセッサがライブロックされているとの判断に応答して、前記第2のプロセッサコアのストールを要求する、システム。
  16. 前記第1のライブロックユニットはさらに、前記第1の論理プロセッサがライブロックされているとの判断に応答して、前記第2のプロセッサコアに関連する少なくとも1つのマイクロアーキテクチャ構造のフラッシュを要求する、請求項15に記載のシステム。
  17. 前記第1のライブロックユニットはさらに、前記第1の論理プロセッサが命令に飢えているか否かを、前記複数の条件が満たされていることに基づいて判断する、請求項15に記載のシステム。
  18. 前記第1のライブロックユニットはさらに、前記第1の論理プロセッサが命令に飢えているとの判断に応答して飢餓回避アクションを開始する、請求項17に記載のシステム。
  19. 前記第1のプロセッサ及び前記第2のプロセッサからの優先度要求を調整するアービトレータであって、前記優先度要求はライブロック判断に基づく、アービトレータをさらに備える、請求項15に記載のシステム。
  20. 前記メモリシステムはダイナミックランダムアクセスメモリをさらに備える、請求項15に記載のシステム。
  21. 第1のプロセッサの第1の論理プロセッサが、少なくとも1つの命令の実行において前進できないか否かを判断すること、
    前進できない場合、第2の論理プロセッサのストール動作をアサートすること、
    前記ストールが前記第1の論理プロセッサの前進に繋がったか否かを判断すること、
    繋がらない場合、前記第1の論理プロセッサが命令に飢えているか否かを判断し、飢えている場合、飢餓回避アクションをとること、及び
    前記第2の論理プロセッサのストールを要求すること
    を含む方法。
  22. 前記第2の論理プロセッサに関連するパイプラインのフラッシュを要求することをさらに含む、請求項21に記載の方法。
  23. 第2のプロセッサのストールを要求することをさらに含む、請求項21に記載の方法。
  24. 前記第2の論理プロセッサのストール動作は、
    前記第2の論理プロセッサがアクティブライブロック回避状態にない限り、前記ストールをアサートすること
    をさらに含む、請求項21に記載の方法。
  25. 前記第2の論理プロセッサのストール動作は、
    前記第2の論理プロセッサが高優先度ロック動作を実行中でない限り前記ストールをアサートすること
    をさらに含む、請求項21に記載の方法。
  26. 前記第2の論理プロセッサのストール動作は、
    前記第1の論理プロセッサが、少なくとも所定の時間量にわたって前進を行うことができなかったとの判断に応答して前記ストールをアサートすること
    をさらに含む、請求項21に記載の方法。
  27. マルチスレッドプロセッサにおいて複数のスレッド及びメモリライブロックユニットにスレッド優先度を割り当てる方法であって、
    複数の条件が前記メモリライブロックユニット及び前記プロセッサの少なくとも2つのスレッドに存在するか否かを判断することであって、前記少なくとも2つのスレッドは第1のスレッド及び残りのスレッドのセットを含む、判断すること、
    前記複数の条件を満たすことに基づいて、前記第1のスレッドがライブロックされているか否かを判断すること、並びに
    ライブロックされている場合、前記第1のスレッドに優先度を割り当て、前記残りのスレッドのセットのいずれにも優先度を割り当てないこと
    を含む、マルチスレッドプロセッサにおいて複数のスレッド及びメモリライブロックユニットにスレッド優先度を割り当てる方法。
  28. 前記第1のスレッドが少なくとも所定の時間長にわたってライブロックされていると判断することをさらに含む、請求項27に記載のマルチスレッドプロセッサにおいて複数のスレッド及びメモリライブロックユニットにスレッド優先度を割り当てる方法。
  29. アクションをとることであって、それによって、前記第1のスレッドの前進を刺激する、アクションをとることをさらに含む、請求項27に記載のマルチスレッドプロセッサにおいて複数のスレッド及びメモリライブロックユニットにスレッド優先度を割り当てる方法。
  30. アクションをとることは、
    前記残りのスレッドのうちの少なくとも1つへのストールを発すること
    をさらに含む、請求項29に記載のマルチスレッドプロセッサにおいて複数のスレッド及びメモリライブロックユニットにスレッド優先度を割り当てる方法。
  31. アクションをとることは、
    命令側飢餓との判断に応答してライブロックブレーカを呼び出すこと
    をさらに含む、請求項29に記載のマルチスレッドプロセッサにおいて複数のスレッド及びメモリライブロックユニットにスレッド優先度を割り当てる方法。
  32. リタイアキューの部分が空であるか否かを調べることをさらに含む、請求項31に記載のマルチスレッドプロセッサにおいて複数のスレッド及びメモリライブロックユニットにスレッド優先度を割り当てる方法。
  33. アクションをとることは、
    キャッシュミスに応答してアービトレータに対して優先度要求を発すること
    をさらに含む、請求項29に記載のマルチスレッドプロセッサにおいて複数のスレッド及びメモリライブロックユニットにスレッド優先度を割り当てる方法。
  34. アクションをとることは、
    別のプロセッサに対してストール要求を発すること
    をさらに含む、請求項29に記載のマルチスレッドプロセッサにおいて複数のスレッド及びメモリライブロックユニットにスレッド優先度を割り当てる方法。
  35. マルチコアマルチスレッドプロセッサであって、
    それぞれ、複数のスレッドを実行可能なマルチスレッドプロセッサである複数のプロセッサコアと、
    該複数のプロセッサコアのそれぞれに結合して通信するライブロックレデューサであって、第1のプロセッサコアから第1のスレッドについてのスレッド進行情報を受け取り、該第1のプロセッサコアからの該第1のスレッドについての該スレッド進行情報に応答して、前記複数のプロセッサコアのうちの第2のプロセッサコアの第2のスレッドのアクティビティを調整するライブロックレデューサと
    を備える、マルチコアマルチスレッドプロセッサ。
  36. 前記ライブロックレデューサは複数のライブロック回路を備え、少なくとも1つのライブロック回路には前記複数のプロセッサコアのうちの1つが関連付けられる、請求項35に記載のマルチコアマルチスレッドプロセッサ。
  37. 前記ライブロックレデューサは、
    前記複数のプロセッサコアに結合されるアービトレーション制御ロジックであって、前記複数のコアからスレッド進行情報を受け取って優先度を調停し、どのスレッドを支援すべきかを判断するアービトレーション制御ロジック
    を備える、請求項35に記載のマルチコアマルチスレッドプロセッサ。
  38. 各プロセッサコアは、
    前記コアに結合されてスレッドライブロックインジケータを測定するスレッドライブロックユニットと、
    前記コアに結合されてメモリライブロックインジケータを測定するメモリライブロックユニットと
    を備える、請求項35に記載のマルチコアマルチスレッドプロセッサ。
  39. 前記複数のコアのそれぞれの前記スレッドライブロックユニット及び/又は前記メモリライブロックユニットからライブロック情報を受け取り、前記ライブロック情報に応答して1つのスレッドに他のスレッドに対する優先度を付与するアービトレータをさらに備える、請求項38に記載のマルチコアマルチスレッドプロセッサ。
JP2007532620A 2004-09-23 2005-09-13 プロセッサ、装置、及び方法 Expired - Fee Related JP4603583B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/948,878 US7748001B2 (en) 2004-09-23 2004-09-23 Multi-thread processing system for detecting and handling live-lock conditions by arbitrating livelock priority of logical processors based on a predertermined amount of time
PCT/US2005/033699 WO2006034288A2 (en) 2004-09-23 2005-09-13 Thread livelock unit

Publications (2)

Publication Number Publication Date
JP2008513894A true JP2008513894A (ja) 2008-05-01
JP4603583B2 JP4603583B2 (ja) 2010-12-22

Family

ID=35997071

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007532620A Expired - Fee Related JP4603583B2 (ja) 2004-09-23 2005-09-13 プロセッサ、装置、及び方法

Country Status (7)

Country Link
US (2) US7748001B2 (ja)
JP (1) JP4603583B2 (ja)
KR (1) KR100880470B1 (ja)
CN (2) CN101031877B (ja)
DE (1) DE112005002305B4 (ja)
TW (1) TWI298458B (ja)
WO (1) WO2006034288A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007287141A (ja) * 2006-04-14 2007-11-01 Internatl Business Mach Corp <Ibm> プロセッサの動作を徐々に低速モードにするためのシステムおよび方法
JP2009533738A (ja) * 2006-04-14 2009-09-17 インターナショナル・ビジネス・マシーンズ・コーポレーション プロセッサを段階的減速動作モードに移行させる発行ユニット
JP2010140146A (ja) * 2008-12-10 2010-06-24 Fujitsu Ltd マルチコアプロセッサ,制御方法および情報処理装置

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7748001B2 (en) 2004-09-23 2010-06-29 Intel Corporation Multi-thread processing system for detecting and handling live-lock conditions by arbitrating livelock priority of logical processors based on a predertermined amount of time
US9626194B2 (en) * 2004-09-23 2017-04-18 Intel Corporation Thread livelock unit
US7525986B2 (en) * 2004-10-28 2009-04-28 Intel Corporation Starvation prevention scheme for a fixed priority PCI-Express arbiter with grant counters using arbitration pools
US7810083B2 (en) * 2004-12-30 2010-10-05 Intel Corporation Mechanism to emulate user-level multithreading on an OS-sequestered sequencer
US7380038B2 (en) * 2005-02-04 2008-05-27 Microsoft Corporation Priority registers for biasing access to shared resources
WO2007031696A1 (en) * 2005-09-13 2007-03-22 Arm Limited Cache miss detection in a data processing apparatus
US7558946B2 (en) * 2005-12-12 2009-07-07 Intel Corporation Breaking a lock situation in a processor without detection of the lock situation using a multi-level approach
WO2007099273A1 (en) * 2006-03-03 2007-09-07 Arm Limited Monitoring values of signals within an integrated circuit
WO2007101969A1 (en) * 2006-03-06 2007-09-13 Arm Limited Accessing a cache in a data processing apparatus
JP4557949B2 (ja) * 2006-04-10 2010-10-06 富士通株式会社 資源ブローカリングプログラム、該プログラムを記録した記録媒体、資源ブローカリング装置、および資源ブローカリング方法
WO2007132424A2 (en) * 2006-05-17 2007-11-22 Nxp B.V. Multi-processing system and a method of executing a plurality of data processing tasks
US20080046684A1 (en) * 2006-08-17 2008-02-21 International Business Machines Corporation Multithreaded multicore uniprocessor and a heterogeneous multiprocessor incorporating the same
JP4841358B2 (ja) 2006-08-18 2011-12-21 富士通株式会社 リクエスト送信制御装置およびリクエスト送信制御方法
US7590784B2 (en) * 2006-08-31 2009-09-15 Intel Corporation Detecting and resolving locks in a memory unit
US8276151B2 (en) 2006-09-06 2012-09-25 International Business Machines Corporation Determination of running status of logical processor
CN100458751C (zh) * 2007-05-10 2009-02-04 忆正存储技术(深圳)有限公司 并行闪存控制器
US8117618B2 (en) * 2007-10-12 2012-02-14 Freescale Semiconductor, Inc. Forward progress mechanism for a multithreaded processor
US8392667B2 (en) * 2008-12-12 2013-03-05 Nvidia Corporation Deadlock avoidance by marking CPU traffic as special
JP5035469B2 (ja) * 2009-03-31 2012-09-26 富士通株式会社 データ転送回路及びデータ転送方法
US8352561B1 (en) 2009-07-24 2013-01-08 Google Inc. Electronic communication reminder technology
US8516577B2 (en) 2010-09-22 2013-08-20 Intel Corporation Regulating atomic memory operations to prevent denial of service attack
US8898434B2 (en) 2011-11-11 2014-11-25 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Optimizing system throughput by automatically altering thread co-execution based on operating system directives
WO2013101138A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Identifying and prioritizing critical instructions within processor circuitry
US20130332910A1 (en) * 2012-05-22 2013-12-12 Nec Laboratories America, Inc. Dynamic livelock analysis of multi-threaded programs
US9336357B2 (en) * 2012-09-28 2016-05-10 Intel Corporation Secure access management of devices
JP6201591B2 (ja) * 2013-09-30 2017-09-27 富士通株式会社 情報処理装置および情報処理装置の制御方法
US9575916B2 (en) 2014-01-06 2017-02-21 International Business Machines Corporation Apparatus and method for identifying performance bottlenecks in pipeline parallel processing environment
US9501377B2 (en) 2014-03-18 2016-11-22 International Business Machines Corporation Generating and implementing data integration job execution design recommendations
US9424160B2 (en) 2014-03-18 2016-08-23 International Business Machines Corporation Detection of data flow bottlenecks and disruptions based on operator timing profiles in a parallel processing environment
US9642787B2 (en) 2014-04-25 2017-05-09 The Procter & Gamble Company Method of inhibiting copper deposition on hair
US9626749B2 (en) 2014-12-10 2017-04-18 Intel Corporation Sub-pixel modification of digital images by locally shifting to an arbitrarily dense supergrid
US10248463B2 (en) * 2015-02-13 2019-04-02 Honeywell International Inc. Apparatus and method for managing a plurality of threads in an operating system
WO2016178658A1 (en) * 2015-05-01 2016-11-10 Hewlett Packard Enterprise Development Lp Throttled data memory access
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US10191747B2 (en) * 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US9766946B2 (en) * 2015-11-11 2017-09-19 International Business Machines Corporation Selecting processor micro-threading mode
TWI597666B (zh) * 2015-12-28 2017-09-01 緯創資通股份有限公司 共享裝置的使用方法及資源共享系統
GB2558076B (en) * 2016-06-20 2019-02-20 Imagination Tech Ltd Livelock detection in a hardware design using formal verification
US10069949B2 (en) 2016-10-14 2018-09-04 Honeywell International Inc. System and method for enabling detection of messages having previously transited network devices in support of loop detection
US9798549B1 (en) 2016-10-31 2017-10-24 International Business Machines Corporation Out-of-order processor that avoids deadlock in processing queues by designating a most favored instruction
US10740102B2 (en) 2017-02-24 2020-08-11 Oracle International Corporation Hardware mechanism to mitigate stalling of a processor core
US10810086B2 (en) 2017-10-19 2020-10-20 Honeywell International Inc. System and method for emulation of enhanced application module redundancy (EAM-R)
US10783026B2 (en) 2018-02-15 2020-09-22 Honeywell International Inc. Apparatus and method for detecting network problems on redundant token bus control network using traffic sensor
EP3818440A4 (en) 2018-07-02 2021-08-18 Drivenets Ltd. SYSTEM FOR IMPLEMENTATION OF MULTIPLE APPLICATIONS
US10831563B2 (en) * 2019-03-19 2020-11-10 International Business Machines Corporation Deadlock resolution between distributed processes using process and aggregated information
CN110058931B (zh) * 2019-04-19 2022-03-22 上海兆芯集成电路有限公司 用以任务调度的处理系统及其加速方法
CN110032453B (zh) 2019-04-19 2022-05-03 上海兆芯集成电路有限公司 用以任务调度与分配的处理系统及其加速方法
CN110083387B (zh) 2019-04-19 2021-11-12 上海兆芯集成电路有限公司 使用轮询机制的处理系统及其访存方法
CN110046053B (zh) 2019-04-19 2021-11-12 上海兆芯集成电路有限公司 用以分配任务的处理系统及其访存方法
US11422849B2 (en) * 2019-08-22 2022-08-23 Intel Corporation Technology for dynamically grouping threads for energy efficiency
CN112187581B (zh) * 2020-09-29 2022-08-02 北京百度网讯科技有限公司 服务信息处理方法、装置、设备及计算机存储介质
CN115408153B (zh) * 2022-08-26 2023-06-30 海光信息技术股份有限公司 多线程处理器的指令分发方法、装置和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10124316A (ja) * 1996-08-27 1998-05-15 Matsushita Electric Ind Co Ltd 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ
US20020199089A1 (en) * 2001-06-22 2002-12-26 Burns David W. Method and apparatus for resolving instruction starvation in a processor or the like

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US621254A (en) 1899-03-14 Track-sight
JPH10111828A (ja) * 1996-09-27 1998-04-28 Internatl Business Mach Corp <Ibm> メモリシステム、データ転送方法
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
US6343352B1 (en) * 1997-10-10 2002-01-29 Rambus Inc. Method and apparatus for two step memory write operations
US6212544B1 (en) * 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6216178B1 (en) * 1998-11-16 2001-04-10 Infineon Technologies Ag Methods and apparatus for detecting the collision of data on a data bus in case of out-of-order memory accesses of different times of memory access execution
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6542921B1 (en) 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US6543002B1 (en) * 1999-11-04 2003-04-01 International Business Machines Corporation Recovery from hang condition in a microprocessor
US6898617B2 (en) * 1999-11-18 2005-05-24 International Business Machines Corporation Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations by dynamically altering eligible thread pools
US6618825B1 (en) * 2000-04-20 2003-09-09 Hewlett Packard Development Company, L.P. Hierarchy of fault isolation timers
US6920516B2 (en) * 2000-08-31 2005-07-19 Hewlett-Packard Development Company, L.P. Anti-starvation interrupt protocol
US6880073B2 (en) * 2000-12-28 2005-04-12 International Business Machines Corporation Speculative execution of instructions and processes before completion of preceding barrier operations
US7401211B2 (en) * 2000-12-29 2008-07-15 Intel Corporation Method for converting pipeline stalls caused by instructions with long latency memory accesses to pipeline flushes in a multithreaded processor
US7454600B2 (en) * 2001-06-22 2008-11-18 Intel Corporation Method and apparatus for assigning thread priority in a processor or the like
US7248585B2 (en) * 2001-10-22 2007-07-24 Sun Microsystems, Inc. Method and apparatus for a packet classifier
US6968431B2 (en) * 2001-11-15 2005-11-22 International Business Machines Corporation Method and apparatus for livelock prevention in a multiprocessor system
US7065596B2 (en) * 2002-09-19 2006-06-20 Intel Corporation Method and apparatus to resolve instruction starvation
US7000047B2 (en) * 2003-04-23 2006-02-14 International Business Machines Corporation Mechanism for effectively handling livelocks in a simultaneous multithreading processor
US20040216103A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Mechanism for detecting and handling a starvation of a thread in a multithreading processor environment
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
US7748001B2 (en) 2004-09-23 2010-06-29 Intel Corporation Multi-thread processing system for detecting and handling live-lock conditions by arbitrating livelock priority of logical processors based on a predertermined amount of time
US7437539B2 (en) * 2006-04-14 2008-10-14 International Business Machines Corporation Issue unit for placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline
US7434033B2 (en) * 2006-04-14 2008-10-07 International Business Machines Corporation Placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10124316A (ja) * 1996-08-27 1998-05-15 Matsushita Electric Ind Co Ltd 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ
US20020199089A1 (en) * 2001-06-22 2002-12-26 Burns David W. Method and apparatus for resolving instruction starvation in a processor or the like

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007287141A (ja) * 2006-04-14 2007-11-01 Internatl Business Mach Corp <Ibm> プロセッサの動作を徐々に低速モードにするためのシステムおよび方法
JP2009533738A (ja) * 2006-04-14 2009-09-17 インターナショナル・ビジネス・マシーンズ・コーポレーション プロセッサを段階的減速動作モードに移行させる発行ユニット
JP4677422B2 (ja) * 2006-04-14 2011-04-27 インターナショナル・ビジネス・マシーンズ・コーポレーション プロセッサの動作を徐々に低速モードにするためのシステムおよび方法
JP2010140146A (ja) * 2008-12-10 2010-06-24 Fujitsu Ltd マルチコアプロセッサ,制御方法および情報処理装置
JP4691153B2 (ja) * 2008-12-10 2011-06-01 富士通株式会社 マルチコアプロセッサ,制御方法および情報処理装置

Also Published As

Publication number Publication date
DE112005002305B4 (de) 2011-03-17
KR20070055554A (ko) 2007-05-30
TWI298458B (en) 2008-07-01
DE112005002305T5 (de) 2007-09-06
WO2006034288A2 (en) 2006-03-30
US20100229172A1 (en) 2010-09-09
CN101334721B (zh) 2013-06-19
KR100880470B1 (ko) 2009-01-28
WO2006034288A3 (en) 2006-11-23
JP4603583B2 (ja) 2010-12-22
CN101031877A (zh) 2007-09-05
US20060064695A1 (en) 2006-03-23
CN101334721A (zh) 2008-12-31
US7748001B2 (en) 2010-06-29
US8276149B2 (en) 2012-09-25
CN101031877B (zh) 2010-05-05
TW200632740A (en) 2006-09-16

Similar Documents

Publication Publication Date Title
JP4603583B2 (ja) プロセッサ、装置、及び方法
US10552160B2 (en) Handling stalling event for multiple thread pipeline, and triggering action based on information access delay
US8694976B2 (en) Sleep state mechanism for virtual multithreading
US6542921B1 (en) Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US8584138B2 (en) Direct switching of software threads by selectively bypassing run queue based on selection criteria
US7318128B1 (en) Methods and apparatus for selecting processes for execution
US9733937B2 (en) Compare and exchange operation using sleep-wakeup mechanism
JP5415069B2 (ja) スレッドレベルの投機実行を拡張するためのプリミティブ
US9003421B2 (en) Acceleration threads on idle OS-visible thread execution units
JP2001521215A (ja) マルチスレッド式プロセッサでスレッド切替えイベントを選択するための方法および装置
US20150074676A1 (en) Task processng device
JP2001521219A (ja) マルチスレッド式プロセッサでのスレッド優先順位の変更
WO2003001368A1 (en) Method and apparatus for resolving instruction starvation in a multithreaded processor
US8516577B2 (en) Regulating atomic memory operations to prevent denial of service attack
US9626194B2 (en) Thread livelock unit
US11194574B2 (en) Merging memory ordering tracking information for issued load instructions
US7669203B2 (en) Virtual multithreading translation mechanism including retrofit capability
US20050138333A1 (en) Thread switching mechanism
US7328327B2 (en) Technique for reducing traffic in an instruction fetch unit of a chip multiprocessor

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100209

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100507

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100514

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100608

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100615

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100708

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100715

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100806

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

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

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

Free format text: PAYMENT UNTIL: 20131008

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4603583

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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