JP2008165834A - 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置 - Google Patents

指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置 Download PDF

Info

Publication number
JP2008165834A
JP2008165834A JP2008081180A JP2008081180A JP2008165834A JP 2008165834 A JP2008165834 A JP 2008165834A JP 2008081180 A JP2008081180 A JP 2008081180A JP 2008081180 A JP2008081180 A JP 2008081180A JP 2008165834 A JP2008165834 A JP 2008165834A
Authority
JP
Japan
Prior art keywords
processor
thread
monitor
address
instruction
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
JP2008081180A
Other languages
English (en)
Other versions
JP4990829B2 (ja
Inventor
Deborah Marr
マー,デボラ
Scott Rogers
ロジャース,スコット
David Hill
ヒル,デイヴィッド
Shivnandan Kaushik
カウシック,シヴナンダン
James Crossland
クロスランド,ジェイムズ
David Koufaty
コウファティ,デイヴィッド
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 JP2008165834A publication Critical patent/JP2008165834A/ja
Application granted granted Critical
Publication of JP4990829B2 publication Critical patent/JP4990829B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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/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/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/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/30079Pipeline control instructions, e.g. multicycle NOP
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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

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)
  • Debugging And Monitoring (AREA)
  • Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)

Abstract

【課題】 本発明の課題は、効果的にマルチスレッドプロセッサ及びマルチスレッドプロセッサの1つのスレッドの処理を一時的にサスペンドするプロセッサ、装置、方法、システム及びコンピュータ可読媒体を提供することである。
【解決手段】 本発明は、モニタアドレスを示す関連するアドレスオペランドを有する第1命令を有する第1スレッドを含む複数のスレッドの実行を可能にする複数の実行ユニットと、前記第1スレッドの実行をサスペンドするサスペンド論理と、前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させるモニタとを有することを特徴とするプロセッサからなる。
【選択図】 図1

Description

本開示は、プロセッサの技術分野に関する。より詳細には、本開示は、マルチスレッドプロセッサ及びマルチスレッドプロセッサの1つのスレッドの処理を一時的にサスペンドする技術に関する。
マルチスレッドプロセッサは、複数の異なる命令シーケンスを同時処理することができる。1つのプロセッサにおいて複数の命令ストリームを実行する主要な動機的要因は、それによるプロセッサの利用効率の向上である。何年もの間、高度なパラレルアーキテクチャが開発されてきたが、複数の実行ユニットを利用する1つの命令ストリームから十分な並列性を抽出することはしばしば困難である。同時マルチスレッドプロセッサにより、複数の命令ストリームが異なる実行リソースにおいてこれらリソースのさらなる利用のため同時に実行されるとことを可能にする。マルチスレッド処理は、長い待ち時間による遅延が発生したり、あるいはイベントの発生を頻繁に待つプログラムに対して特に効果的である。あるスレッドが長い待ち時間を要するタスクが終了するのを待機したり、あるいは特定のイベントのため待機しているとき、他のスレッドが処理される。
プロセッサによるスレッド間のスイッチ時における制御のための様々な技術が提案されてきた。例えば、プロセッサの中には、L2キャッシュミスのような長い待ち時間のイベントを検出し、この検出された長い待ち時間のイベントに応答してスレッドをスイッチするというものがある。このような長い待ち時間のイベントの検出はある状況では効果的かもしれないが、このようなイベントの検出により、スレッドをスイッチすることが効果的なすべてのポイントが検出されるわけではない。特に、イベントベースのスレッドスイッチ処理では、遅延がプログラマーにより意図されているようなプログラムにおいてポイントを検出することは不可能であろう。
実際、プログラマーは、無駄なスピンウェイトループまたは他のリソース消費遅延技術を回避するため、どの時点でスレッドのスイッチングを行うことが効率的かを判断するのにベストなポジションにいる。従って、プログラムによりスレッドのスイッチ処理の制御を可能にすることは、プログラムがより効率的に動作することを可能にするかもしれない。スレッドの選択に影響を与える明示的なプログラム命令はこの目的に関して効果的であるかもしれない。例えば、2000年1月21日に出願された米国特許出願09/489,130号では、「ポーズ(Pause)」命令が説明されている。ポーズ命令は、あるカウントに達するまで、あるいはある命令がプロセッサパイプラインを通過するまで、スレッドの実行を一時的にサスペンドすることを可能にする。しかしながら、上記参照された出願で説明されているポーズ命令はスレッド分割可能なリソースが放棄されるべきであるということを特定するものではない。プログラマーによるマルチスレッドプロセッサのリソースのより効率的な利用を可能にする様々なテクニックが有益かもしれない。
米国特許出願09/489,130号
上記問題点に鑑み、本発明の課題は、効果的にマルチスレッドプロセッサ及びマルチスレッドプロセッサの1つのスレッドの処理を一時的にサスペンドするプロセッサ、装置、方法、システム及びコンピュータ可読媒体を提供することである。
一特徴によると、本発明は、モニタアドレスを示す関連するアドレスオペランドを有する第1命令を有する第1スレッドを含む複数のスレッドの実行を可能にする複数の実行ユニットと、前記第1スレッドの実行をサスペンドするサスペンド論理と、前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させるモニタとを有することを特徴とするプロセッサからなる。
他の特徴によると、本発明は、第1スレッドからモニタアドレスを示す第1命令と第2命令とを受信するフロントエンドと、前記第1命令と前記第2命令とを実行し、前記第2命令に応答して前記第1スレッドの実行をサスペンドする実行リソースと、前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させるモニタとを有することを特徴とするプロセッサからなる。
さらなる他の特徴によると、本発明は、第1スレッドから関連するモニタアドレスを有する第1命令を受信するフロントエンド論理と、前記モニタアドレスを受信するよう接続され、前記第1命令に応答して前記モニタアドレスへのメモリアクセスを監視し、前記モニタアドレスへのアクセスが発生するとイベントを通知するモニタとを有することを特徴とするプロセッサからなる。
さらなる他の特徴によると、本発明は、複数のスレッドを実行する複数の実行ユニットと、前記複数のスレッドの第1スレッドから命令を受信するフロントエンド論理と、保留中のモニタイベントがない場合、前記命令に応答して前記第1スレッドをサスペンドし、前記複数のスレッドの他のスレッドの実行を可能にするサスペンド論理とを有することを特徴とするプロセッサからなる。
さらなる他の特徴によると、本発明は、命令を受信する複数のスレッド分割可能リソースと、前記複数のスレッド分割可能リソースと協調して命令を実行する複数の共有リソースと、第1スレッドの命令に応答して前記第1スレッドをサスペンドし、該第1スレッドのサスペンドに加えて、前記第1スレッドに係る前記複数のスレッド分割可能リソースのリソースを放棄するスレッドサスペンド論理と、当該プロセッサに前記複数のスレッド分割可能リソースを再分割させ、前記第1スレッドにより示されるメモリアドレスへのアクセスに応答して、前記第1スレッドの実行を再開させるモニタとを有することを特徴とするプロセッサからなる。
さらなる他の特徴によると、本発明は、実行の複数のスレッドの第1スレッドをサスペンドする手段と、メモリ領域へのアクセスを検出する手段と、前記検出する手段が前記メモリ領域へのアクセスを検出することに応答して、前記第1スレッドを再開する手段とを有することを特徴とする装置からなる。
さらなる他の特徴によると、本発明は、実行の第1スレッドにおいて実行される第1オペコードを受信するステップと、前記第1オペコードに係るリニアアドレスを物理的アドレスに変換するステップと、監視バスエージェントに通知することなく他のバスエージェントが前記物理的アドレスに係るデータを変更することを可能にするのに十分なオーナー権限を他の何れのバスエージェントが有しないことを保証するため、前記関しバスエージェントによってバス処理を実行するステップと、前記物理的アドレスへのライトアクセスを監視するステップと、他のバスエージェントが前記物理的アドレスを読み出す場合、ヒットを通知するステップと、前記実行の第1スレッドにおいて第2オペコードを受信するステップと、前記第2オペコードに応答して、前記実行の第1スレッドをサスペンドし、モニタイベントの認識をイネーブル状態にするステップと、前記ライトアクセスが発生する場合、前記第1スレッドを再開するステップと、第1イベント群の何れかに応答して前記第1スレッドの実行を再開するステップと、第2イベント群を無視するステップとを有することを特徴とする方法からなる。
さらなる他の特徴によると、本発明は、第1スレッドからのモニタアドレスを示す関連するアドレスオペランドを有する第1命令を格納するメモリと、前記メモリに接続され、前記第1命令に応答してメモリ処理を監視するモニタによる前記モニタアドレスへのメモリアクセスの検出をイネーブル状態にし、前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させる第1プロセッサとを有するシステムからなる。
さらなる他の特徴によると、本発明は、モニタアドレスを示す関連するアドレスオペランドを有する第1命令を有する第1スレッドを含む複数のスレッドの実行を可能にする複数の実行ユニットと、前記第1スレッドの実行をサスペンドするサスペンド論理と、前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させるモニタとを有するプロセッサを実現するプログラムを有するコンピュータ可読媒体からなる。
本発明によると、効果的にマルチスレッドプロセッサ及びマルチスレッドプロセッサの1つのスレッドの処理を一時的にサスペンドするプロセッサ、装置、方法、システム及びコンピュータ可読媒体を提供することが可能となる。
本発明は、例を用いて示されるが、添付された図面に制限されるものではない。以下の説明では、マルチスレッドプロセッサのスレッドの実行をサスペンドする技術が示される。以下の説明では、本発明のより完全な理解を提供するため、論理実施形態、オペコード、オペランド指定手段、リソース分割/共有/重複実施形態、システム構成要素のタイプ及び相互関係、及び論理分割/統合選択などの様々な具体的詳細が与えられる。しかしながら、本発明はそのような具体的詳細なしに実践されうるということを当業者は認識するであろう。他の例では、本発明を不明瞭にしないように、制御構造、ゲートレベル回路及び完全なスフとウェア命令シーケンスは詳細には示されていない。当業者は与えられた説明により、過度の実験を行うことなく適切に機能の実現が可能であろう。
開示されるテクニックは、プログラマーが他のスレッドに処理リソースを利用させながら、あるスレッドにおいてサスペンド機構を実現することを可能にするかもしれない。このため、サスペンドされたスレッドに以前に提供された区画が、当該スレッドのサスペンド中放棄されるかもしれない。上記及び/または他の開示されたテクニックは効果的にプロセッサのトータルのスループットを向上させるかもしれない。
図1は、メモリアクセスを監視するメモリアクセスモニタ110を有するマルチスレッドプロセッサ100の一実施例を示す。「プロセッサ」という用語は、いくつかの実施例では単一の集積回路として構成されるかもしれない。他の実施例では、複数の集積回路がまとまって1つのプロセッサを構成するかもしれないし、さらなる他の実施例では、ハードウェア及びソフトウェアルーチン(例えば、バイナリ変換ルーチン)が一緒になってプロセッサを構成するかもしれない。図1の実施例では、バス/メモリコントローラ120が実行命令をフロントエンド130に提供する。フロントエンド130は、命令ポインタ170に従って様々なスレッドからの命令の抽出を指示する。命令ポインタ論理は複数のスレッドをサポートするよう複製される。
フロントエンド130は、さらなる処理のため命令をスレッド分割可能リソース140に供給する。スレッド分割可能リソース140は、複数のスレッドがプロセッサ100内でアクティブであるとき、特定のスレッドに専用の論理的に分離された区画を有する。一実施例では、各分離した区画は、当該区画用のスレッドからの命令のみを有する。スレッド分割可能リソース140は、例えば、命令キューを含んでいてもよい。シングルスレッドモードでは、スレッド分割可能リソース140の複数の区画が、この1つのスレッドに専用のより大きな1つの区画を形成するよう合成される。
プロセッサ100はまた複製状態180を有する。複製状態180は、論理プロセッサのためのコンテクストを維持するのに十分な状態変数を有する。複製状態180では、状態変数の格納の競合なく複数のスレッドを実行することができる。さらに、各スレッドにレジスタ割当て論理が複製されてもよい。複製された状態関連の論理は、入力される実行命令のための適切なリソース区画により動作する。
スレッド分割可能リソース140は、共有リソース150に命令をわたす。共有リソース150は、それらのソースに関係なく命令に応じて動作する。例えば、スケジューラと実行ユニットはスレッドに関しない共有リソースであってもよい。分割可能リソース140は、各アクティブスレッドでの持続的な継続によりスレッド間での切り替えにより複数のスレッドから共有リソース150への命令を供給するかもしれない。これにより、共有リソースは、スレッドの混合を考慮することなく適切な状態で与えられた命令を実行することができる。
共有リソース150は他のスレッド分割可能リソース160に続いてもよい。スレッド分割可能リソース160は、リオーダーバッファ(re−order buffer)などのリタイアメントリソース(retirement resource)を含んでいてもよい。これにより、スレッド分割可能リソース160は、各スレッドからの命令の実行が適切に完了し、当該スレッドの適切な状態が適切に更新されることを保証するかもしれない。
上述のように、プログラマーにメモリ配置の定期的なポーリング(polling)や命令の実行さえも求めることなく、スピンウェイトループ(spin−wait loop)機能を実現するテクニックを与えることが望ましいかもしれない。従って、図1のプロセッサ100はメモリアクセスモニタ110を有する。メモリアクセスモニタ110は、モニタ110による監視が可能なメモリアクセスサイクルについての情報によりプログラム可能である。従って、モニタ110は、比較論理114によりバス/メモリコントローラ120から受信されるバスサイクル情報と比較されるモニタサイクル情報レジスタ112を有する。一致した場合には、再開スレッド信号が生成され、サスペンドしていたスレッドが再開される。プロセッサの内部及び/または外部バスからメモリアクセス情報が取得されてもよい。
モニタサイクル情報レジスタ112は、スレッドの再開をトリガーするサイクルタイプ及び/またはアドレスを指定する詳細を含んでもよい。一実施例では、モニタサイクル情報レジスタ112は物理的アドレスを格納し、モニタは当該物理的アドレスへの実際または潜在的な書き込みを示すバスサイクルを監視する。そのようなサイクルは、明示的なライト(write)サイクルの形式であってもよいし、及び/またはオーナー権限でのリード(read)あるいは、外部バス処理なしの当該ラインへの書き込みが可能となるキャッシュ可能ラインの排他的なオーナー権限を取得しようとする他のエージェントによる無効サイクルであってもよい。何れの場合でも、モニタは異なる実施例での様々な処理に関するトリガーとなるようプログラムされるかもしれない。
図2のフロー図を参照して、図1の実施例の動作がさらに説明される。一実施例では、プロセッサ100の命令セットはモニタ処理情報を設定するMONITORオペコード(命令)を有する。ブロック200において、MONITORオペコードは第1スレッド(T1)の命令シーケンスの一部として受信される。ブロック210に示されるように、MONITORオペコードに応答して、プロセッサ100はモニタ110が指定されたメモリアクセスに対するメモリアクセスを監視することが可能である。メモリアクセスのトリガーは明示的または非明示的オペランドにより指定されてもよい。従って、MONITORオペコードの実行は、モニタアドレスが非明示的オペランドとしてレジスタまたは他の領域に予め格納することが可能であるため、当該モニタアドレスの指定が可能であるかもしれない。ブロック215に示されるように、モニタはこの指定されたサイクルが検出されるかどうかチェックする。もし検出されなければ、モニタはメモリアクセスの監視を継続する。トリガーとなるサイクルが検出されれば、モニタイベント保留指標がブロック220で示されるように設定される。
MONITORオペコードの実行はモニタ110の起動をトリガーする。モニタ110はプロセッサの他の処理とパラレルに動作を開始するかもしれない。一実施例では、MONITOR命令が適切なメモリサイクル情報によりモニタ110を設定し、モニタイベントを表面化することなくも似た110を起動する。言い換えると、本実施例では、MONITORオペコードの実行後、モニタイベントが発生するかもしれないが、それらが明示的に表面化されなければ、認識されることはないであろう。
従って、ブロック225において、メモリ待機のトリガーは別のイベントとして示される。いくつかの実施例では、メモリ待機(MWAIT)オペコードはモニタイベントの認識及びT1のサスペンドをトリガーするのに利用されるかもしれない。異なる2つの命令を利用して、スレッドサスペンドの設定及びトリガーを行うことは、プログラマーに付加的なフレキシビリティを提供し、より効率的なプログラミングを可能にするかもしれない。しかしながら、他の実施例では、モニタ110を設定する第1オペコードからメモリ待機がトリガーされる。何れの場合も、1以上の命令によりモニタは準備され、モニタイベントの認識を可能にする。
異なるオペコードがモニタ110の準備とモニタイベントの認識をトリガーするのに利用される実施例では、ブロック230に示されるようなスレッドのサスペンド前にモニタが起動されるのを保証するためのチェックが行われることが効果的であるかもしれない。さらに、モニタイベントがすでに保留されているかどうかチェックすることにより(図示せず)、T1のサスペンドが回避され、ブロック250において動作が継続される。モニタ110がイネーブル状態にあり、かつモニタイベントの保留がないと仮定すると、T1はブロック235に示されるようにサスペンドされるかもしれない。
T1のサスペンドにより、プロセッサは他のスレッドがプロセッサリソースをより完全に利用することが可能な実施形態に依存した状態に入る。いくつかの実施例では、プロセッサはT1専用の分割可能リソース140及び160の区画の一部またはすべてを放棄するかもしれない。他の実施例では、MONITORオペコードの異なる置換あるいはそれに関する設定により、もしあるとすれば、どのリソースが放棄されるべきか示されるかもしれない。例えば、プログラマーがより短い待機を予想する場合、スレッドはサスペンドされるが、それのリソース区画を維持するかもしれない。共有リソースはスレッドサスペンド期間中の他のスレッドにより排他的に利用されるため、スループットは依然として向上する。より長い待機が予想される場合、サスペンドされているスレッドに関するするすべての区画の放棄は他のスレッドが追加的なリソースを有することを可能とするため、潜在的にその他のスレッドのスループットを増大させる。しかしながら、各スレッドがサスペンド及び再開されるとき、区画の削除及び追加に関するオーバヘッドを犠牲にして追加的なスループットが可能となる。
モニタイベントの保留中、T1はサスペンド状態を維持する。前述のように、モニタ110はモニタイベント(ブロック215−220)の検出及び合図を行うよう独立に動作する。プロセッサによりブロック240において保留中のモニタイベントが検出されると、ブロック250に示されるようにT1が再開される。モニタイベントがT1を覚醒させるT1での命令のアクティブな処理の発生が必要である。むしろT1はサスペンド状態のままであり、イネーブル状態のモニタ110はプロセッサにイベントを合図する。プロセッサは当該イベントを処理し、このイベントがT1の再開を示していると認識し、T1を再開するための適切なアクションを実行する。
従って、図1及び2の実施例では、プログラムによりサスペンドされたスレッドが指定されたメモリアクセスの発生により再開されることを可能にするテクニックが提供される。一実施例では、他のイベントがまたT1を再開させる。例えば、割込みによりT1が再開されるかもしれない。そのような実現形態では、モニタが特定のメモリアクセスや、スレッドの再開を引き起こす他の状態を見逃す(検出しない)という点で完全なものとしないことが効果的である。その結果、T1はときどき不必要に覚醒されるかもしれない。しかしながら、そのような実現形態では、見逃されたイベントによりT1が永遠に凍結される可能性が低減され、ハードウェア設計及び検証を簡素化する。T1が覚醒する状態が真に発生したかT1に二重にチェックさせ、そうでない場合再びT1をサスペンドするようループが構成されるため、T1の不必要な覚醒は軽視できるほどの不便さであるかもしれない。
いくつかの実施例では、スレッド分割可能リソース、複製リソース及び共有リソースが異なって構成されるかもしれない。いくつかの実施例では、共有リソースの両端に分割可能リソースは存在しないかもしれない。いくつかの実施例では、分割可能リソースは厳密には分割されず、むしろある命令により区画の重複が可能となるようにされるか、あるいは当該区画で実行されるスレッドまたは実行される区画の総数に依存して、区画サイズが可変となるようにされるかもしれない。さらに、異なるリソースの組み合わせが共有、複製及び分割リソースとして指定されるかもしれない。
図3は、マルチスレッドプロセッサの一実施例のさらなる詳細を示す。図3の実施例は、コヒーレンシー関連論理350と、モニタ310の一実施形態と、スレッドサスペンド再開論理377の特定の一実施形態とを有する。図3の実施例では、バスインタフェース300は、バスコントローラ340と、イベント検出論理345と、モニタ310と、コヒーレンシー関連論理350とを有する。
バスインタフェース300は、マイクロ命令からマイクロオペランド(uOP)を生成するuOPを生成する命令をフロントエンド365に提供する。実行リソース370はフロントエンド365からuOPを受け取り、バックエンド論理380は実行後様々なuOPをリタイヤする。一実施例では、アウトオブオーダー(out−of−order)実行が、フロントエンド、バックエンド及び実行リソースによりサポートされる。
図5から9に関して様々な動作の詳細がさらに説明される。しかしながら、簡単には、MONITORオペコードがバスインタフェース300を介しプロセッサに入力され、フロントエンド365による実行のため準備されてもよい。一実施例では、実行リソース370による実行のため、特別なMONITOR uOPが生成される。MONITOR uOPは実行ユニットによるストア処理と同様に処理されてもよく、モニタアドレスがアドレス変換論理375により物理的アドレスに変換され、モニタ310に提供される。モニタ310は、スレッドを再開させるため、スレッドサスペンド再開論理377と通信する。スレッドサスペンド再開論理は、アクティブ状態のスレッド数が変化するに従って、分割及びアニール(anneal)リソースを実行してもよい。
例えば、図4は、一実施例によるリソースの分割、複製及び共有を示す。分割リソースは、マシーンのアクティブ状態のスレッドの消長に従って、分割及びアニールされてもよい(他のスレッドによる再利用のためヒューズバックされる)。図4の実施例では、複製リソースは、パイプラインの命令フェッチ部分の命令ポインタ論理、パイプラインのリネーム部分のレジスタリネーム論理、状態変数(図示しないが、パイプラインの様々な段階で参照される)、及び割込みコントローラ(図示しないが、一般にパイプラインに非同期)を有する。図4の実施例における共有リソースは、パイプラインのスケジュール段階のスケジューラ、パイプラインのレジスタリード及びライト部分のレジスタプール、及びパイプラインの実行部分の実行リソースを有する。さらに、トレースキャッシュ及びL1データキャッシュは、スレッドのコンテクストに関係なくメモリアクセスに従い配備された共有リソースであってもよい。他の実施例では、スレッドコンテクストがキャッシュ処理の決定において考慮されてもよい。図4の実施例の分割リソースは、パイプラインのキュー処理段階の2つのキュー、パイプラインのリタイアメント段階でのリオーダーバッファ、及びストアバッファを有する。スレッド選択多重化論理は、両方のスレッドへの適切なアクセスを提供する様々な複製及び分割リソース間で交替にする。
例示のため、図4に示される分割、共有及び複製は、図3のプロセッサの一実施例による動作のさらなる説明において、図3の実施例に関して利用される。特に、図3の実施例による動作のさらなる詳細は、図5のフロー図に関して説明される。プロセッサは、アクティブ状態の少なくとも2つのスレッドを有するマルチスレッドモードで実行すると仮定される。
ブロック500において、第1スレッド(T1)の実行中、フロントエンド365はMONITORオペコードを受信する。一実施例では、特別なモニタuOPがフロントエンド365により生成される。このMONITOR uOPは実行リソース370にわたされる。モニタuOPは監視対象のアドレスを示す関連付けされたアドレス(モニタアドレス)を有する。この関連付けされたアドレスは、明示的オペランドまたは非明示的オペランドの形式であるかもしれない(すなわち、関連付けされたアドレスは所定のレジスタまたは他の格納領域から取得される)。この関連付けされたアドレスは、モニタアドレスの決定に十分な情報を伝達するという点で、モニタアドレスを「示している」(おそらく他のレジスタまたは情報に関連して)。例えば、関連付けされたアドレスは、適切なモニタアドレスである対応する物理的アドレスを有するリニアアドレス(linear address)であるかもしれない。あるいは、モニタアドレスはバーチャルなアドレスフォーマットで与えられるかもしれないし、あるいは相対アドレスとして示されるかもしれないし、あるいは他の既知または便利なアドレス指定方法により指定されるかもしれない。バーチャルなアドレスオペランドが利用される場合、一般的保護エラーがブレークイベントとして認識されることを可能にすることが望ましいかもしれない。
モニタアドレスは、監視のための任意の便利なメモリユニットを示すかもしれない。例えば、一実施例では、モニタアドレスはキャッシュラインを示すかもしれない。しかしながら、他の実施例では、モニタアドレスは、キャッシュラインの一部、異なるプロセッサのキャッシュラインサイズに対して異なる関係を生み出す指定/選択されたサイズのメモリ部分またはユニット、あるいは1つのアドレスを示すかもしれない。従って、モニタアドレスは、オペランドにより指定されるデータ(及び複数のデータ)を有するユニットを示すものであってもよいし、あるいは所望のデータユニットのアドレスを具体的に示すものであってもよい。
図3の実施例では、モニタアドレスは、アドレス変換論理375に与えられ、モニタ310にわたされ、モニタアドレスレジスタ335に格納される。MONITORオペコードに応答して、ブロック510に示され、図6においてさらに詳述されるように、実行リソース370はイネーブル状態とされ、モニタ310を起動する。図6に関してさらに以下で後述されるように、スレッドサスペンド処理の発生前にストアが処理及び検出されることを保証するため、MONITORオペコード後に発生する任意のストア処理を制限することが効果的であるかもしれない。従って、本実施例において以降の任意の命令が開始される前に、モニタ310の起動の結果として、いくつかの処理が発生する必要があるかもしれない。しかしながら、本実施例では、モニタ310がMONITORオペコードにより起動されると、モニタ310はブレークイベントが発生するまで他の処理とパラレルに動作を継続するため、ブロック510はブロック505とパラレルに発生するよう示される。
ブロック505において、メモリ待機(MWAIT)オペコードがスレッド1で受信され、実行にわたされる。図5の実施例では、MWAITオペコードの実行はモニタイベントを表面化する。MWAITオペコードに応答して、ブロック515に示されるように、モニタイベントが保留中であるかチェックされる。モニタイベントが保留中でない場合、ブロック520においてモニタがアクティブ状態であることを保証するため、チェックが行われる。例えば、以前にMONITORを実行することなくMWAITが実行される場合、モニタ310はアクティブ状態ではないであろう。モニタがアクティブ上体でない場合、あるいはモニタイベントが保留中である場合、スレッド1の実行がブロック580において継続される。
モニタ310がアクティブ状態であり、かつモニタイベントが保留中でない場合、ブロック525に示されるように、スレッド1の実行はサスペンドされる。スレッドサスペンド/再開論理377は、ブロック530に示されるように、すべての命令をクリアするため、プロセッサのパイプラインを排出するパイプラインフラッシュ論理382を有する。パイプラインが排出されると、分割/アニール論理385は、ブロック535に示されるように、スレッド1と排他的に関連付けされている任意の分割リソースを他のスレッドによる利用のため放棄させる。これら放棄されたリソースは、残りのアクティブ状態のスレッドが利用するより大きなリソースを形成するようアニールされる。例えば、図4の2つのスレッドの例を参照するに、スレッド1に関するすべての命令は両方のキューから排出される。その後、キューの各ペアがより大きなキューを第2スレッドに提供するため合成される。同様に、レジスタプールからより多くのレジスタが第2スレッドに利用可能となり、ストアバッファからより多くのエントリが第2スレッドに提供され、リオーダーバッファのより多くのエントリが第2スレッドに利用可能となる。本質的に、これらの構成は2倍のサイズの1つの専用構成に返される。もちろん、異なるスレッド数を使った実施形態からは異なる比率のものが生成される。
ブロック540、545及び550において、スレッド1が再開されるべきか決定する様々なイベントがチェックされる。特に、これらのチェックは他のスレッドの処理とパラレルに実行される。図6に関してさらに詳述されるように、モニタはモニタライトイベントが発生したかチェックし、設定によりイベント保留指標を示す。イベント保留指標は、EVENT信号を介してサスペンド/再開論理377(すなわち、マイクロコード)に提供される。モニタイベントはブロック505においてMWAITオペコードにより表面化されていたため、一実施例(ブロック540)では、マイクロコードは適切な命令境界においてモニタイベントを認識するかもしれない。イベント検出論理345は、割込みのようなブレークイベント(ブロック545)として指定される他のイベントを検出するかもしれない。さらに、プロセッサが特定のイベントシーケンスにより凍結されることを保証するため、オプショナルなタイマーがメモリ待機状態から定期的に抜け出すように利用されるかもしれない(ブロック550)。これらイベントのどれもがメモリ待機状態への脱出を合図しなければ、スレッド1はサスペンドのままである。
スレッド1が再開されれば、スレッド/サスペンド再開論理377が適切なイベントの検出に応じて再び起動される。再び、ブロック560に示されるように、間もなく覚醒されるスレッド1を収容するようリソースが再び分割可能となるように、パイプラインから命令を排出するためパイプラインがフラッシュされる。ブロック570において、適切なリソースが再分割され、スレッド1がブロック580において再開される。
図6aは、モニタ310の起動と動作のさらなる詳細を示す。ブロック600において、スレッド1のフロントエンドフェッチ処理が、さらなるスレッド1の処理がマシーンに入るのを回避するよう中断される。ブロック605において、アドレス変換論理375により、関連付けされたアドレスオペランドはリニアアドレスから物理的アドレスに変換される。ブロック610において、監視されているアドレスへの書き込みの観察可能性が向上される。一般に、この処理の目的は、モニタ310が閲覧可能なモニタアドレスに格納されている情報に影響を与えるライト処理をキャッシュエージェントに実行させることである。図6bに関して一実施例のさらなる詳細が説明される。ブロック615において、物理的アドレスがこのシーケンスの前後に格納されてもよいが、監視のため格納される。
次にブロック620に示されるように、モニタがイネーブル状態にされる。モニタは、モニタアドレスレジスタ335に格納されるモニタアドレスである物理的アドレスへの書き込みのためバスサイクルを監視する。図7を参照して、監視処理のさらなる詳細が後述される。モニタがイネーブル状態となった後、ストア制限処理がブロック625に示されるように実行される。このストア制限は、マシーンのすべてのストアがMONITORオペコードの実行完了時に処理されることを保証するのに役立つ。すべてのストアがMONITORの前にマシーンから排出されることにより、メモリ待機状態が誤って入力される可能性が低減される。しかしながら、このストア制限処理は予防的措置であり、時間のかかる処理となりうる。
このストア制限はオプション的なものである。なぜなら、本実施例のMONITOR/MWAIT機構は複数のエグジット機構(exit mechanism)として設計されているためである。言い換えると、割込み、システムまたは搭載タイマーなどの様々なイベントは、メモリ待機状態から抜け出させるかもしれない。従って、本実施例では、スレッドが覚醒される唯一の理由は、監視されるデータ値の変更によるものであるということは保証されない。従って、本実施形態では、メモリに格納されている特定の値が変更されたかソフトウェアにより二重にチェックされる(以下の図9aから9cを参照せよ)。一実施例では、INTR、NMI及びSMI割込み、マシーンチェック割込み及びエラーのアサーションを含むイベントがブレークイベントであり、パワーダウンイベントを含む他のものはブレークイベントではない。一実施例では、A20Mピンのアサーションはまたブレークイベントである。
ブロック630に示されるように、モニタはバスサイクルの発生がモニタアドレスへの書き込みを示すか、あるいは示しているらしいかをチェックし続ける。そのようなバスサイクルが検出されると、ブロック635に示されるように、モニタイベント保留指標が設定される。MWAITオペコードの実行後(図5のブロック505)、このイベント保留指標はイベントとして機能し、図5のブロック560−580においてスレッドを再開させる。さらに、アドレス変換を変更するイベントがスレッド1を再開させるかもしれない。例えば、変換ルックアサイドバッファ(translation look−aside buffer)をフラッシュさせるイベントがスレッド1の再開をトリガーするかもしれない。なぜなら、リニアアドレスから物理的アドレスへのモニタアドレスの生成で行われる変換はもはや有効でないかもしれないためである。例えば、x86インテルアーキテクチャコンパチブルプロセッサにおいて、制御レジスタCR0、CR3及びCR4と特定のマシーンに特有のレジスタへの書き込みは、メモリ待機状態の脱出を引き起こすかもしれない。
上述のように、図6bは、モニタアドレスへの書き込みの観察可能性の拡張のさらなる詳細を示す(図6aのブロック610)。一実施例では、ブロック650に示されるように、プロセッサはモニタアドレスに関連付けされたキャッシュラインをプロセッサのすべての内部キャッシュからフラッシュする。このフラッシュ処理の結果として、モニタアドレスへの以降の任意の書き込みがバスインタフェース300に届き、バスインタフェース300に含まれるモニタ310による検出を可能にする。一実施例では、MONITOR uOPがモデル化され、x86命令セットの既存の命令であるキャッシュラインフラッシュCLFLUSH命令と同じエラーモデルを有する。モニタuOPは、リニアを介してアドレスの物理的変換に進み、CLFLUSHと同様の内部キャッシュのフラッシュ処理が行われる。しかしながら、バスインタフェースはMONITORとCLFLUSHとの差異を認識し、適切にMONITOR uOPを処理する。
次にブロック655に示されるように、バスインタフェース300のコヒーレンシー関連論理350は、プロセッサバス上でリードライン処理を生成するためリードライン生成論理355を起動する。モニタアドレスへのリードライン処理は、バス上のプロセッサの他のキャッシュが、共有状態または排他的状態の何れかでモニタアドレスのデータを格納することを保証する(周知のMESIプロトコルに従って)。他のプロトコルでは、他の状態が利用されるかもしれない。しかしながら、この処理はモニタ310による閲覧可能でなくとも他のエージェントがモニタアドレスに書き込みを行うことができる可能性を低減するよう設計されている。言い換えると、ライトまたは書き込みを示す処理がモニタにより検出することができるように、以降において配信される。リードライン処理が実行されると、モニタ310はバス上の処理の監視を開始する。
バス上で追加的な処理が発生すると、コヒーレンシー関連論理は、バスエージェントが監視されているアドレスに関連付けされたキャッシュラインのオーナー権限を取得することを回避しようとすることにより、モニタアドレスの閲覧可能性を保持し続ける。1つのバスプロトコルによると、これは、ブロック660に示されるように、モニタアドレスのリードの探索段階においてHIT#信号をアサートするヒット生成論理360により達成されるかもしれない。HIT#のアサート処理は、他のキャッシュがMESIプロトコルにおける共有状態を越えて、排他的及び潜在的には変更
状態に移行するのを回避する。その結果、ブロック665に示されるように、選ばれたコヒーレンシー領域(コヒーレンシーを維持するメモリ部分)のどのエージェントも変更または排他的状態(またはそれらと等価なもの)でデータを有することが可能である。本実施例では内部キャッシュからフラッシュされたとしても、プロセッサはモニタキャッシュのキャッシュラインを効果的にキャッシュするようである。
図7を参照するに、図6aのブロック620に関する処理のさらなる詳細が説明される。特に図7は、モニタ310の処理のさらなる詳細を示す。ブロック700において、モニタ310はバス処理のためバスコントローラ340からリクエストとアドレス情報を受信する。ブロック710に示されるように、モニタ310はバスサイクルタイプと影響を得けるアドレスを調べる。特に、サイクル比較論理320はバスサイクルが指定されたサイクルであるか判断する。一実施例では、アドレス比較回路330は、バス処理アドレスとモニタアドレスレジスタ335に格納されているモニタアドレスとを比較し、ライト検出論理325は書き込みが発生したか検出するため、バスコントローラ340からサイクルタイプ情報を復号する。モニタアドレスへの書き込みが発生すると、ブロック720に示されるように、モニタイベント保留指標が設定される。イベントを合図するため、信号(WRITE DETECTED)がスレッドサスペンド/再開論理377に提供される(そして、MWAITを実行することによりイネーブル状態になったと仮定して提供される)。最後に、モニタ310がブロック730に示されるように停止される。モニタの停止は電力を節約するが、エラーモニタイベントが隠されている限り、そうでなければ生成されない限り、それは重要ではない。モニタイベント指標はまたこの時点でリセットされてもよい。典型的には、モニタイベントの提供は、MWAITが再び実行されるまで、さらなるモニタイベントの認識を隠す。
モニタアドレスへのリードの場合、コヒーレンシー関連論理350が起動される。ブロック740に示されるように、コヒーレンシー配信を行うことなく以降の書き込みを可能にするオーナー権限を他のエージェントが取得することを防ぐため、信号(HIT#のような)がアサートされる。モニタ310は、アクティブ状態を維持し、ブロック700に戻って、モニタアドレスの読み出しにより影響を受けない。さらに、処理がモニタアドレスに対する読み出し及び書き込みのどちらでもなければ、モニタはアクティブ状態を維持し、ブロック700に戻る。
いくつかの実施例では、あるアクセスタイプのみが監視されるようにMONITOR命令が制限される。これらのアクセスは効率的なプログラミングテクニックを示すものとして選ばれたものであってもよいし、あるいは他の理由により選ばれたものであってもよい。例えば、一実施例では、メモリアクセスは自然と揃えられたライトバックメモリ(write−back memory)のキャッシュ可能なストアでなければならない。自然に揃えられた要素は、Nで割り切れるアドレスから始まるNビットの要素である。自然に揃えられた要素を利用した結果、監視されているアドレスに書き込みため、1つのキャッシュラインがアクセスされる必要がある(データが2つのキャッシュラインに分割される場合に必要とされる2つのキャッシュラインではなく)。その結果、自然に揃えられたメモリアドレスを利用することはバスの観察を簡素化するであろう。
図8は、開示されたマルチスレッドメモリ待機テクニックを利用するシステムの一実施例を示す。図8の実施例では、プロセッサ805−1から805−NまでのN個のマルチスレッドプロセッサ群がバス802に接続される。他の実施例では、シングルプロセッサ、またはマルチスレッドプロセッサとシングルスレッドプロセッサとを組み合わせたものが利用されてもよい。さらに、他の既知のシステム構成または利用可能なシステム構成が利用されてもよい。例えば、これらのプロセッサはポイント・ツー・ポイント形式で接続され、メモリインタフェースのようなパーツが各プロセッサに統合されてもよい。
図8の実施例では、バスに接続されたメモリインタフェース815はメモリ830とメディアインタフェース820に接続される。メモリ830は、マルチプロセッシングレディ(multi−processing ready)オペレーティングシステム835と、第1スレッド840に対する命令と、第2スレッド845に対する命令とを含む。命令830は、開示された技術に従ったアイドルループを有し、その様々な変形が図9aから9cに示される。
これら様々な機能を実行する適切なソフトウェアが、様々なマシーン読み出し可能媒体の何れかにより提供されるかもしれない。メディアインタフェース820は、そのようなソフトウェアへのインタフェースを提供する。メディアインタフェース820は、記憶媒体(例えば、ディスクドライブ、光ドライブ、テープドライブ、揮発性メモリ、不揮発性メモリなど)とのインタフェース、または送信媒体インタフェース(例えば、ネットワークインタフェースまたは他のデジタルあるいはアナログ通信インタフェース)であってもよい。メディアインタフェース820は媒体(例えば、記憶媒体792あるいは送信媒体795)からソフトウェアルーチンを読み出すかもしれない。マシーン読み出し可能媒体は、マシーンインタフェースによる読み出しのため、少なくとも一時的に情報を格納することができる任意の媒体である。これには、信号送信(媒体として有線、光、空気を介し)、及び/または様々なタイプのディスク及びメモリ記憶装置のような物理的記憶媒体792が含まれる。
図9aは、一実施例によるアイドルループを示す。ブロック905において、MONITORコマンドがそれのオペランドであるモニタアドレスとしてアドレス1により実行される。同様のスレッドにおいて、ブロック910でMWAITコマンドが実行される。前述のように、MWAIT命令により、他の状態が適切に満たされると仮定して、スレッドがサスペンドされる。ブロック915においてブレークイベントが発生すると、当該ルーチンはモニタアドレスに格納されている値が変更されたかどうか判断するためブロック920に移行する。モニタアドレスの値が変更している場合、ブロック922に示されるように、スレッドの実行が継続される。値が変更されていない場合、エラー覚醒イベントが発生したことになる。当該覚醒イベントは、MWAITがモニタアドレスへのメモリ書き込みの発生なく終了されたという意味でエラーである。値が変更されていない場合、モニタが再び設定されるブロック905にループは戻る。このループソフトウェアの実施形態では、モニタがエラー覚醒イベントを可能とするよう設計されている。
図9bは、他のアイドルループを示す。図9bの実施例は、MWAIT命令が監視されているメモリアドレスへの書き込みを捉えることができない可能性をさらに低減するため、追加的な1つのチェックを加える。再び、図9bのフローは、ブロック925に示されるように、MONITOR命令がそれのオペランドとしてアドレス1により実行されることから開始される。さらに、ブロック930において、ソフトウェアルーチンは、モニタアドレスにおけるメモリ値を読み出す。ブロック935において、ソフトウェアはメモリ値がスレッドをアイドル状態にすべきであると示す値から変更されていないことを保証するため二重チェックする。値が変更されている場合、ブロック952に示されるように、スレッドの実行が継続される。値が変更されていない場合、ブロック940に示されるように、MWAIT命令が実行される。前述のように、ブロック945でブレークイベントが発生するまで、スレッドはサスペンドされる。しかしながら、再び、エラーブレークイベントが可能であるため、値が変更されたかブロック950でチェックされる。値が変更されていない場合、ブロック925に戻ることにより、モニタによるアドレス1の追跡を可能にするためループが戻る。値が変更されている場合、ブロック952においてスレッドの実行が継続される。いくつかの実施例では、MWAIT命令がスレッドを再びサスペンドするよう実行される前のエラー覚醒イベント後、MONITOR命令が再び実行される必要はないかもしれない。
図9cは、MONITOR命令とMWAIT命令を利用したソフトウェアシーケンスの他の例を示す。図9cの例では、スレッド内の2つの異なるタスクがすべき作業を有する場合、ループはアイドルとはされない。第1ルーチンにより行われるべき作業がある場合には、定数CV1が作業領域WL1に格納される。同様に、第2ルーチンにより行われるべき作業がある場合には、定数CV2が作業領域WL2に格納される。1つのモニタアドレスを利用するため、WL1とWL2が同じキャッシュラインのメモリ領域となるよう選ばれる。あるいは、複数のタスクのための状態指標を格納するのに1つの作業領域が利用されてもよい。例えば、1バイトあるいは他の単位において1以上のビットがそれぞれ異なるタスクを表してもよい。
ブロック955に示されるように、W1を監視するためモニタが設定される。ブロック960において、WL1が実行すべき作業を有する定数を格納しているかどうかチェックされる。格納している場合、ブロック965に示されるように、WL1に関する作業が実行される。格納されていない場合、ブロック970において、WL2に関して実行されるべき作業があることを示すCV2をWL2が格納しているかチェックされる。格納されている場合、ブロック975に示されるように、WL2に関する作業が実行される。格納されていない場合、ブロック980において電力管理ハンドラを呼び出すことが適当であるか決定するためループが進むかもしれない。例えば、決められた時間が経過すると、論理プロセッサが低減された電力消費状態に置かれてもよい(例えば、本出願の出願と同様にwww.acpi.infoで利用可能な1999年2月8日に発行されたACPI(Advanced Configuration and Power Interface)仕様バージョン1.0b(あるいはそれ以降)により定義された「C」状態群の1つ)。時間が経過している場合、ブロック985において電力管理ハンドラが呼び出される。行うべき作業がある965、975及び985の何れの場合においても、スレッドは当該作業を行い、ブロック955においてモニタの設定後再び同一の決定を行うためループバックする。他の実施例では、モニタがアクティブ状態を維持する限り、ブロック965、975及び985からのループバックはブロック960となるかもしれない。
ブロック965、975及び985を通じて行うべき作業がなければ、ブロック990に示されるように、MWAIT命令が実行される。ブロック995に示されるように、ブレークイベントが発生するとき、MWAITにより生じるスレッドサスペンド状態が最終的に終了される。この時点で、モニタの設定のためループはブロック955に戻り、その後WL1またはWL2が行うべき作業が存在することを示している決定する。行うべき作業が存在しない場合(すなわち、エラー覚醒イベントの場合には)、ブロック990においてループはMWAITに戻り、ブレークイベントが発生するまで再びスレッドをサスペンドする。
図10は、モニタ値がL1キャッシュにキャッシュされた状態を維持することを可能にするプロセッサの他の実施例を示す。図10のプロセッサは、実行ユニット1005と、L1キャッシュ1010と、L1キャッシュと包括されたL2キャッシュ1030との間のライト合成バッファとを有する。ライト合成バッファ1020は、バスインタフェース1040によりバス1045から受信された処理を介して他のメモリとの内部キャッシュのコヒーレンシーを保証する探索ポート1044を有する。コヒーレンシーに影響を及ぼす処理がライト合成バッファ1020に探索ポート1044を介し届くため、モニタはL1キャッシュレベルに置かれ、メモリライトイベントがバス1045で発生するときを決定するのに十分な情報を受信する。従って、モニタアドレスに対応するメモリラインがL1キャッシュに保持されてもよい。モニタは、実行ユニットからL1キャッシュへの書き込みと、探索ポート1044を介したバス1045からの書き込みの両方を検出することができる。
他の実施例では、2オペランドモニタ命令がサポートされている。1つのオペランドは前述のようにメモリアドレスを示す。第2オペランドは、メモリ待機状態からブレークしない様々なイベントのどれがこの特定のメモリ待機からブレークさせるかを示すマスクである。例えば、1つのマスクビットは、隠された割込みが当該割込みが隠されているという事実にもかかわらずメモリ待機をブレークすることを可能にすべきということを示すかもしれない(すなわち、EFLAGSビットIFが割込みを隠すよう設定されているときでさえ、覚醒イベントを可能にする)。前提として、メモリ待機状態後に実行される命令の1つが、提供されるように割込むブレークされた表面化処理である。メモリ待機状態をブレークしない他のイベントは、メモリ待機のブレークをイネーブルとすることが可能であり、あるいは逆にメモリ待機状態を通常ブレークするイベントはイネーブル解除されうる。第1オペランドに関して説明したように、第2オペランドは明示的あるいは非明示的であってもよい。
図11は、開示された技術を利用した設計のシミュレーション、エミュレーション及び製造のための様々な設計表現または形式を示す。設計を表すデータは当該設計を様々な方法により表せるかもしれない。まず、シミュレーションに有益なものとして、ハードウェアはハードウェア記述言語または設計されたハードウェアの期待される実行方法のコンピュータ化されたモデルを実質的に提供する他の機能記述言語を利用して表現されるかもしれない。ハードウェアモデル1110は、当該モデルが意図した通りの機能を行うか決定するため、特定のテストスーツ1130をハードウェアモデル1110に適用するシミュレーションソフトウェア1120を利用することによりシミュレートできるように、ハードウェアモデル1110はコンピュータメモリのような記憶媒体に格納されてもよい。いくつかの実施例では、シミュレーションソフトウェアは、記録、キャプチャあるいは媒体に含まれない。
さらに、論理及び/またはトランジスタゲートを有する回路レベルモデルが設計プロセスのいくつかの段階において生成されるかもしれない。このモデルは、ときにはプログラム可能な論理を利用したモデルを構成する専用ハードウェアシミュレータにより同様にシミュレートされるかもしれない。さらに進んだこのタイプのシミュレーションはエミュレーション技術であるかもしれない。どの場合でも、再構成可能なハードウェアは、開示された技術を利用したモデルを格納するマシーン読み出し可能媒体に関する他の実施例である。
さらに、大部分の設計は、ある段階において、ハードウェアモデルでの様々なデバイスの物理的配置を表すデータレベルに達する。従来の半導体製造技術が利用される場合には、ハードウェアモデルを表すデータは集積回路の製造に利用されるマスクの異なるマスクレイヤに関する様々な特徴の有無を特定するデータであるかもしれない。再び、集積回路を表すこのデータは、データにおける回路または論理が開示された技術を実行するためシミュレートまたは製造されうるという点でこれら技術を実現する。
設計の任意の表現において、データは任意の形式のコンピュータ読み出し可能媒体に格納されるかもしれない。情報を送信するため変調あるいは生成される光あるいは電子波1160、メモリ1150、ディスクのような磁気または光記憶装置1140は媒体であるかもしれない。設計または当該設計の一部を記述するビット群は、それ自体が販売される物品であるかもしれないし、あるいはさらなる設計または製造のため他に利用される物品であるかもしれない。
指定されたメモリアクセスが発生するまで、スレッドの実行をサスペンドする技術が開示された。例示された実施例は添付された図面において説明及び例示されたが、このような実施例は単なる例示であり、広範な本発明を限定するものではなく、本開示を研究することにより当業者には様々な他の変更が想起されるため、本発明は例示及び説明された特定の攻勢及び配置に限定されるものではないということは理解されるであろう。
図1は、メモリアクセスを監視するモニタを有するマルチスレッドプロセッサの一実施例を示す。 図2は、一実施例による図1のマルチスレッドプロセッサの動作を示すフロー図である。 図3は、マルチスレッドプロセッサの一実施例のさらなる詳細を示す。 図4は、一実施例によるリソース分割、共有及び複製を示す。 図5は、一実施例によるスレッドの実行をサスペンド及び再開処理を示すフロー図である。 図6aは、一実施例による論理の起動及び関し処理を示すフロー図である。 図6bは、一実施例による書き込みの視認性の拡張を示すフロー図である。 図7は、一実施例による監視処理を示すフロー図である。 図8は、一実施例によるシステムを示す。 図9aは、開示されたプロセッサ命令及び技術を利用したソフトウェアシーケンスの様々な実施例を示す。 図9bは、開示されたプロセッサ命令及び技術を利用したソフトウェアシーケンスの様々な実施例を示す。 図9cは、開示されたプロセッサ命令及び技術を利用したソフトウェアシーケンスの様々な実施例を示す。 図10は、監視されているアドレスがキャッシュに残されることを可能にする他の実施例を示す。 図11は、開示された技術を利用した設計のシミュレーション、エミュレーション及び製造のための様々な設計表現または形式を示す。
符号の説明
100、805 マルチスレッドプロセッサ
110 メモリアクセスモニタ
120 バス/メモリコントローラ
130 フロントエンド
140、160 スレッド分割可能リソース
150 共有リソース
300 バスインタフェース
310 モニタ
320 サイクル比較論理
325 ライト検出論理
330 アドレス比較回路
335 アドレス
350 コヒーレンシー関連論理
355 リードライン生成論理
360 HIT生成論理
365 フロントエンド/UOP生成論理
370 実行リソース
375 アドレス変換論理
380 バックエンド
377 スレッドサスペンド/再開論理
382 パイプラインフラッシュ論理
385 分割/アニール論理
815 メモリインタフェース
820 メディアインタフェース
830 メモリ

Claims (60)

  1. モニタアドレスを示す関連するアドレスオペランドを有する第1命令を有する第1スレッドを含む複数のスレッドの実行を可能にする複数の実行ユニットと、
    前記第1スレッドの実行をサスペンドするサスペンド論理と、
    前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させるモニタとを有することを特徴とするプロセッサ。
  2. 請求項1記載のプロセッサであって、
    前記メモリアクセスが前記モニタアドレスへの実際の書き込みまたは潜在的な書き込みを示す場合にのみ、前記モニタは前記メモリアクセスに応答して再開させることを特徴とするプロセッサ。
  3. 請求項1記載のプロセッサであって、
    前記第1スレッドがサスペンドされ、かつモニタイベントが明示されている場合、前記モニタは前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させることを特徴とするプロセッサ。
  4. 請求項3記載のプロセッサであって、さらに、
    前記メモリアクセス以外の何れかのイベントに応答して前記第1スレッドを再開させるイベント検出論理を有することを特徴とするプロセッサ。
  5. 請求項4記載のプロセッサであって、
    前記イベントは割込みであることを特徴とするプロセッサ。
  6. 請求項1記載のプロセッサであって、
    前記関連するアドレスオペランドは非明示的オペランドであることを特徴とするプロセッサ。
  7. 請求項6記載のプロセッサであって、
    前記関連するアドレスオペランドは所定のレジスタに格納されることを特徴とするプロセッサ。
  8. 請求項1記載のプロセッサであって、
    前記サスペンド論理は第2命令に応答して前記第1スレッドの実行をサスペンドし、
    前記第1命令は前記モニタをイネーブル状態にし、前記第2命令は前記モニタにより合図されるイベントを明示することを特徴とするプロセッサ。
  9. 請求項8記載のプロセッサであって、
    前記第1命令の実行が完了した場合に限って、前記第2命令は前記モニタをイネーブル状態にすることを特徴とするプロセッサ。
  10. 請求項1記載のプロセッサであって、
    前記サスペンド論理は前記第1命令に応答して前記第1スレッドの実行をサスペンドすることを特徴とするプロセッサ。
  11. 請求項8記載のプロセッサであって、さらに、
    前記モニタアドレスへのストアの視認性を向上させるコヒーレンシー論理を有することを特徴とするプロセッサ。
  12. 請求項11記載のプロセッサであって、
    前記コヒーレンシー論理は、コヒーレンシー領域内の何れのキャッシュも、変更または排他的状態において前記モニタアドレスに情報を格納しないことを保証することを特徴とするプロセッサ。
  13. 請求項12記載のプロセッサであって、
    前記コヒーレンシー論理は、前記モニタアドレスに係るキャッシュラインを内部キャッシュからフラッシュし、当該プロセッサに接続された他のプロセッサに対し前記モニタアドレスに係るキャッシュラインのバスリードライン処理を生成し、
    前記バスリードライン処理はパイプラインバスプロトコルに従って提供された複数段階処理であることを特徴とするプロセッサ。
  14. 請求項11記載のプロセッサであって、
    前記コヒーレンシー論理は、前記モニタアドレスへの書き込み処理を、該書き込み処理の実行を通知することなく他の何れかのバスエージェントが実行することを回避するため、当該プロセッサにバスサイクルを生成させることを特徴とするプロセッサ。
  15. 請求項14記載のプロセッサであって、さらに、
    他のバスエージェントによる前記モニタアドレスの情報の読み出しに応答して、ヒット信号をアサートするバス制御論理を有することを特徴とするプロセッサ。
  16. 請求項1記載のプロセッサであって、
    前記関連するアドレスオペランドにより示される前記モニタアドレスは、前記関連するアドレスオペランドにより示されるアドレスにおけるデータに対するキャッシュライン、キャッシュラインの一部あるいは他のサイズのユニットの1つを示すことを特徴とするプロセッサ。
  17. 請求項1記載のプロセッサであって、さらに、
    前記関連するアドレスオペランドを物理的アドレスである前記モニタアドレスに変換するアドレス変換論理を有することを特徴とするプロセッサ。
  18. 請求項1記載のプロセッサであって、
    前記モニタアドレスは、物理的アドレスと、バーチャルアドレスと、相対アドレスと、リニアアドレスとからなる集合から選ばれることを特徴とするプロセッサ。
  19. 請求項1記載のプロセッサであって、さらに、
    複数のスレッドがアクティブ状態であるとき、前記複数のスレッドの各アクティブ状態のスレッドに各分割可能リソースの一部を割り当てるよう分割される複数の分割可能リソースを有し、
    前記サスペンド論理は、前記第1スレッドの実行のサスペンドに応答して、前記第1スレッドに割当てられた前記複数のリソースの何れかを放棄することを特徴とするプロセッサ。
  20. 請求項19記載のプロセッサであって、
    前記モニタは、前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドの実行を受け入れるため、前記複数の分割可能リソースを再分割させることを特徴とするプロセッサ。
  21. 請求項20記載のプロセッサであって、
    前記複数の分割可能リソースは、命令キューと、リオーダーバッファと、レジスタプールと、複数のストアバッファとを有することを特徴とするプロセッサ。
  22. 請求項21記載のプロセッサであって、さらに、
    前記複数のスレッドのそれぞれに対して複製された複数の複製リソースを有し、
    該複数の複製リソースは、複数のプロセッサ状態変数と、命令ポインタと、レジスタリネーム論理とを有することを特徴とするプロセッサ。
  23. 請求項22記載のプロセッサであって、さらに、
    前記複数のスレッドの何れかにより利用可能な複数の共有リソースを有し、
    該複数の共有リソースは、複数の実行ユニットと、キャッシュと、スケジューラとを有することを特徴とするプロセッサ。
  24. 第1スレッドからモニタアドレスを示す第1命令と第2命令とを受信するフロントエンドと、
    前記第1命令と前記第2命令とを実行し、前記第2命令に応答して前記第1スレッドの実行をサスペンドする実行リソースと、
    前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させるモニタとを有することを特徴とするプロセッサ。
  25. 請求項24記載のプロセッサであって、
    前記第1命令はリニアアドレスを示すオペランドを有し、
    当該プロセッサはさらに、物理的アドレスである前記モニタアドレスを取得するため、前記リニアアドレスを変換するアドレス変換論理を有することを特徴とするプロセッサ。
  26. 請求項25記載のプロセッサであって、さらに、
    当該プロセッサに接続された他のプロセッサの何れのキャッシュも、変更または排他的状態において前記モニタアドレスに情報を格納しないことを保証するコヒーレンシー論理を有することを特徴とするプロセッサ。
  27. 請求項26記載のプロセッサであって、
    前記コヒーレンシー論理は、他のプロセッサによる前記モニタアドレスの探索に応答して、ヒット信号をアサートすることを特徴とするプロセッサ。
  28. 第1スレッドから関連するモニタアドレスを有する第1命令を受信するフロントエンド論理と、
    前記モニタアドレスを受信するよう接続され、前記第1命令に応答して前記モニタアドレスへのメモリアクセスを監視し、前記モニタアドレスへのアクセスが発生するとイベントを通知するモニタとを有することを特徴とするプロセッサ。
  29. 請求項28記載のプロセッサであって、
    前記モニタは、前記モニタアドレスに書き込むライトメモリアクセスに応答して、前記イベントを通知することを特徴とするプロセッサ。
  30. 請求項28記載のプロセッサであって、
    前記モニタは、ライン無効処理に応答して、前記イベントを通知することを特徴とするプロセッサ。
  31. 請求項28記載のプロセッサであって、さらに、
    当該プロセッサに接続された他のプロセッサの何れのキャッシュも、変更または排他的状態において前記モニタアドレスに情報を格納しないことを保証するコヒーレンシー論理を有することを特徴とするプロセッサ。
  32. 請求項31記載のプロセッサであって、
    前記コヒーレンシー論理は、内部キャッシュフラッシュサイクルと外部リードライン処理を生成する論理を有することを特徴とするプロセッサ。
  33. 請求項28記載のプロセッサであって、さらに、
    前記モニタからモニタイベントを明示し、第2命令に応答して前記第1スレッドをサスペンドする論理を有することを特徴とするプロセッサ。
  34. 複数のスレッドを実行する複数の実行ユニットと、
    前記複数のスレッドの第1スレッドから命令を受信するフロントエンド論理と、
    保留中のモニタイベントがない場合、前記命令に応答して前記第1スレッドをサスペンドし、前記複数のスレッドの他のスレッドの実行を可能にするサスペンド論理とを有することを特徴とするプロセッサ。
  35. 請求項34記載のプロセッサであって、
    前記サスペンド論理は、すでに保留中のモニタイベントを含むモニタイベントの認識を可能にすることを特徴とするプロセッサ。
  36. 請求項35記載のプロセッサであって、さらに、
    複数の分割可能リソースを有し、
    前記サスペンド論理は、前記命令に応答して前記第1スレッドをサスペンドすることに加えて、前記第1スレッドに係る前記複数の分割可能リソースの各リソースを放棄することを特徴とするプロセッサ。
  37. 命令を受信する複数のスレッド分割可能リソースと、
    前記複数のスレッド分割可能リソースと協調して命令を実行する複数の共有リソースと、
    第1スレッドの命令に応答して前記第1スレッドをサスペンドし、該第1スレッドのサスペンドに加えて、前記第1スレッドに係る前記複数のスレッド分割可能リソースのリソースを放棄するスレッドサスペンド論理と、
    当該プロセッサに前記複数のスレッド分割可能リソースを再分割させ、前記第1スレッドにより示されるメモリアドレスへのアクセスに応答して、前記第1スレッドの実行を再開させるモニタとを有することを特徴とするプロセッサ。
  38. 請求項37記載のプロセッサであって、
    前記メモリアドレスへのアクセスは、前記第1スレッドで実行される第1命令により指定され、
    前記モニタは、前記スレッドサスペンド論理が前記第1スレッドをサスペンドするのに応答して、前記命令によりスレッドを再開させるため、モニタイベントを通知するよう明示されることを特徴とするプロセッサ。
  39. 実行の複数のスレッドの第1スレッドをサスペンドする手段と、
    メモリ領域へのアクセスを検出する手段と、
    前記検出する手段が前記メモリ領域へのアクセスを検出することに応答して、前記第1スレッドを再開する手段とを有することを特徴とする装置。
  40. 請求項39記載の装置であって、
    前記メモリ領域へのアクセスを検出する手段は、前記第1スレッドにおいて実行される第1命令に応答してイネーブル状態とされ、
    前記第1スレッドをサスペンドする手段は、前記第1スレッドにおいて実行される第2命令に応答して前記第1スレッドをサスペンドすることを特徴とする装置。
  41. 請求項40記載の装置であって、さらに、
    前記メモリ領域へのアクセスの検出を簡素化するコヒーレンシー手段を有することを特徴とする装置。
  42. 請求項41記載の装置であって、
    前記メモリ領域へのアクセスは、ライトまたは無効アクセスであることを特徴とする装置。
  43. 請求項41記載の装置であって、さらに、
    前記サスペンドする手段が前記第1スレッドの実行をサスペンドすることに応答して、リソースをアニールし、前記複数のスレッドの他のスレッドによる利用のため前記第1スレッドに係る分割リソースを解放する手段と、
    前記第1スレッドの再開を受け入れるため、リソースを再分割するためにリソースを分割する手段とを有することを特徴とする装置。
  44. 実行の第1スレッドにおいて実行される第1オペコードを受信するステップと、
    前記第1オペコードに係るリニアアドレスを物理的アドレスに変換するステップと、
    監視バスエージェントに通知することなく他のバスエージェントが前記物理的アドレスに係るデータを変更することを可能にするのに十分なオーナー権限を他の何れのバスエージェントが有しないことを保証するため、前記関しバスエージェントによってバス処理を実行するステップと、
    前記物理的アドレスへのライトアクセスを監視するステップと、
    他のバスエージェントが前記物理的アドレスを読み出す場合、ヒットを通知するステップと、
    前記実行の第1スレッドにおいて第2オペコードを受信するステップと、
    前記第2オペコードに応答して、前記実行の第1スレッドをサスペンドし、モニタイベントの認識をイネーブル状態にするステップと、
    前記ライトアクセスが発生する場合、前記第1スレッドを再開するステップと、
    第1イベント群の何れかに応答して前記第1スレッドの実行を再開するステップと、
    第2イベント群を無視するステップとを有することを特徴とする方法。
  45. 請求項44記載の方法であって、
    前記第2オペコードに応答して前記実行の第1スレッドをサスペンドするステップは、
    前記モニタイベントが保留中であるかチェックし、
    モニタがアクティブ状態であるかチェックし、
    前記モニタがアクティブ状態であり、かつ保留中のモニタイベントが存在しない場合、第1スレッドサをスペンド状態にすることを特徴とする方法。
  46. 請求項45記載の方法であって、
    前記第1スレッドをサスペンド状態にすることは、
    レジスタプールの複数のレジスタを放棄し、
    命令キューの複数の命令キューエントリを放棄し、
    ストアバッファの複数のストアバッファエントリを放棄し、
    リオーダーバッファの複数のリオーダーバッファエントリを放棄することからなることを特徴とする方法。
  47. 第1スレッドからのモニタアドレスを示す関連するアドレスオペランドを有する第1命令を格納するメモリと、
    前記メモリに接続され、前記第1命令に応答してメモリ処理を監視するモニタによる前記モニタアドレスへのメモリアクセスの検出をイネーブル状態にし、前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させる第1プロセッサとを有するシステム。
  48. 請求項47記載のシステムであって、
    前記メモリは、前記第1スレッドからの第2命令を格納し、
    前記第1プロセッサは、前記第2命令に応答して前記第1スレッドをサスペンドすることを特徴とするシステム。
  49. 請求項48記載のシステムであって、
    前記モニタは、前記メモリアクセスの発生に応答して、前記第2命令により明示されると、前記第1プロセッサにスレッドを再開させるモニタイベント保留指標を設定することを特徴とするシステム。
  50. 請求項47記載のシステムであって、
    前記第1プロセッサは、第1キャッシュを有し、
    当該システムはさらに、第2キャッシュを有する第2プロセッサを有し、
    前記第1プロセッサは、前記第2プロセッサに前記第2キャッシュのモニタアドレスに格納されているデータの変更を可能にする処理を前記第1プロセッサに通知させるため、前記第2プロセッサに対するバス処理を駆動することを特徴とするシステム。
  51. 請求項47記載のシステムであって、
    前記第1プロセッサは、変更が行われていることを通知することなく前記第2プロセッサが前記第2キャッシュのモニタアドレスに格納されているデータの変更を可能にする状態において、前記モニタアドレスのデータを前記第2プロセッサがキャッシュすることを禁止する信号をアサートすることを特徴とするシステム。
  52. 請求項51記載のシステムであって、
    前記信号は、キャッシュヒットを示し、前記第2キャッシュが排他的状態で前記モニタアドレスにデータを格納することを禁止することを特徴とするシステム。
  53. 請求項49記載のシステムであって、
    前記第1プロセッサはさらに、他のイベントが発生した場合、前記第1スレッドを再開することを特徴とするシステム。
  54. 請求項53記載のシステムであって、
    前記他のイベントは、割込みであることを特徴とするシステム。
  55. 請求項53記載のシステムであって、
    前記メモリに格納されている第1スレッドは、前記第1命令と前記第2命令とを有するループと、前記モニタアドレスにおけるデータが変更されたか決定し、前記モニタアドレスにおけるデータが変更されていなければ前記ループを再開するテストとを有することを特徴とするシステム。
  56. モニタアドレスを示す関連するアドレスオペランドを有する第1命令を有する第1スレッドを含む複数のスレッドの実行を可能にする複数の実行ユニットと、
    前記第1スレッドの実行をサスペンドするサスペンド論理と、
    前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させるモニタと、
    を有するプロセッサを実現するプログラムを有するコンピュータ可読媒体。
  57. 請求項56記載のコンピュータ可読媒体であって、
    前記メモリアクセスが前記メモリアドレスへの実際の書き込みまたは潜在的書き込みを示す場合に限って、前記モニタは、前記メモリアクセスに応答して再開させることを特徴とするコンピュータ可読媒体。
  58. 請求項56記載のコンピュータ可読媒体であって、
    前記第1スレッドがサスペンドされ、かつモニタイベントが明示される場合、前記モニタは、前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させることを特徴とするコンピュータ可読媒体。
  59. 請求項56記載のコンピュータ可読媒体であって、
    前記プロセッサはさらに、前記メモリアクセス以外の何れかのイベントに応答して前記第1スレッドを再開させるイベント検出論理を有することを特徴とするコンピュータ可読媒体。
  60. 請求項59記載のコンピュータ可読媒体であって、
    前記プロセッサはさらに、複数のスレッドがアクティブ状態であるとき、前記複数のスレッドの各アクティブ状態のスレッドに各分割可能リソースの一部を割り当てるよう分割される複数の分割可能リソースを有し、
    前記サスペンド論理は、前記第1スレッドの実行のサスペンドに応答して、前記第1スレッドに割り当てられた前記複数のリソースの何れかを放棄することを特徴とするコンピュータ可読媒体。
JP2008081180A 2001-12-31 2008-03-26 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置 Expired - Lifetime JP4990829B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/039,579 2001-12-31
US10/039,579 US7363474B2 (en) 2001-12-31 2001-12-31 Method and apparatus for suspending execution of a thread until a specified memory access occurs

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2003558691A Division JP4601958B2 (ja) 2001-12-31 2002-12-11 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置

Publications (2)

Publication Number Publication Date
JP2008165834A true JP2008165834A (ja) 2008-07-17
JP4990829B2 JP4990829B2 (ja) 2012-08-01

Family

ID=21906217

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2003558691A Expired - Lifetime JP4601958B2 (ja) 2001-12-31 2002-12-11 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置
JP2008081180A Expired - Lifetime JP4990829B2 (ja) 2001-12-31 2008-03-26 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2003558691A Expired - Lifetime JP4601958B2 (ja) 2001-12-31 2002-12-11 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置

Country Status (11)

Country Link
US (2) US7363474B2 (ja)
JP (2) JP4601958B2 (ja)
KR (1) KR100814993B1 (ja)
CN (1) CN100383740C (ja)
AU (1) AU2002364557A1 (ja)
DE (2) DE10297856B4 (ja)
GB (1) GB2400947B (ja)
HK (1) HK1066883A1 (ja)
RU (1) RU2308754C2 (ja)
TW (2) TWI590153B (ja)
WO (1) WO2003058447A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012004990A1 (ja) * 2010-07-07 2012-01-12 パナソニック株式会社 プロセッサ
WO2016088220A1 (ja) * 2014-12-03 2016-06-09 株式会社日立製作所 計算機及び論理プロセッサの制御方法

Families Citing this family (135)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7127561B2 (en) * 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs
US7653912B2 (en) * 2003-05-30 2010-01-26 Steven Frank Virtual processor methods and apparatus with unified event notification and consumer-producer memory operations
US7213093B2 (en) * 2003-06-27 2007-05-01 Intel Corporation Queued locks using monitor-memory wait
US8984199B2 (en) * 2003-07-31 2015-03-17 Intel Corporation Inter-processor interrupts
US20050108711A1 (en) * 2003-11-13 2005-05-19 Infineon Technologies North America Corporation Machine instruction for enhanced control of multiple virtual processor systems
US7310722B2 (en) * 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US7490218B2 (en) * 2004-01-22 2009-02-10 University Of Washington Building a wavecache
US7657882B2 (en) 2004-01-22 2010-02-02 University Of Washington Wavescalar architecture having a wave order memory
US7770179B1 (en) * 2004-01-30 2010-08-03 Xilinx, Inc. Method and apparatus for multithreading on a programmable logic device
US7552042B1 (en) 2004-01-30 2009-06-23 Xilinx, Inc. Method for message processing on a programmable logic device
US7823162B1 (en) 2004-01-30 2010-10-26 Xilinx, Inc. Thread circuits and a broadcast channel in programmable logic
US8984517B2 (en) * 2004-02-04 2015-03-17 Intel Corporation Sharing idled processor execution resources
US7581214B2 (en) * 2004-04-15 2009-08-25 Intel Corporation Live set transmission in pipelining applications
JP4376692B2 (ja) * 2004-04-30 2009-12-02 富士通株式会社 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
US8607241B2 (en) * 2004-06-30 2013-12-10 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
US8074030B1 (en) 2004-07-20 2011-12-06 Oracle America, Inc. Using transactional memory with early release to implement non-blocking dynamic-sized data structure
US7703098B1 (en) 2004-07-20 2010-04-20 Sun Microsystems, Inc. Technique to allow a first transaction to wait on condition that affects its working set
US7206903B1 (en) * 2004-07-20 2007-04-17 Sun Microsystems, Inc. Method and apparatus for releasing memory locations during transactional execution
KR101051703B1 (ko) 2004-08-09 2011-07-25 삼성전자주식회사 서스펜드/리쥼 기능을 갖는 집적 회로 카드 및 집적 회로카드 시스템
US7434009B2 (en) * 2004-09-30 2008-10-07 Freescale Semiconductor, Inc. Apparatus and method for providing information to a cache module using fetch bursts
US7257679B2 (en) 2004-10-01 2007-08-14 Advanced Micro Devices, Inc. Sharing monitored cache lines across multiple cores
US7313673B2 (en) * 2005-06-16 2007-12-25 International Business Machines Corporation Fine grained multi-thread dispatch block mechanism
US9003421B2 (en) * 2005-11-28 2015-04-07 Intel Corporation Acceleration threads on idle OS-visible thread execution units
KR100763200B1 (ko) 2006-02-24 2007-10-04 삼성전자주식회사 인터럽트 가능한 스레드 동기화 방법 및 장치
KR100771877B1 (ko) 2006-07-21 2007-11-01 삼성전자주식회사 오동작 방지용 커맨드 세트 프로토콜 처리 방법 및 장치
US20080022079A1 (en) * 2006-07-24 2008-01-24 Archer Charles J Executing an allgather operation with an alltoallv operation in a parallel computer
US8443341B2 (en) * 2006-11-09 2013-05-14 Rogue Wave Software, Inc. System for and method of capturing application characteristics data from a computer system and modeling target system
US8239657B2 (en) 2007-02-07 2012-08-07 Qualcomm Incorporated Address translation method and apparatus
US8898438B2 (en) * 2007-03-14 2014-11-25 XMOS Ltd. Processor architecture for use in scheduling threads in response to communication activity
US7937532B2 (en) * 2007-03-30 2011-05-03 Intel Corporation Method and apparatus for speculative prefetching in a multi-processor/multi-core message-passing machine
JP4420055B2 (ja) 2007-04-18 2010-02-24 日本電気株式会社 マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法
US8161480B2 (en) 2007-05-29 2012-04-17 International Business Machines Corporation Performing an allreduce operation using shared memory
WO2008155797A1 (ja) 2007-06-20 2008-12-24 Fujitsu Limited 演算装置
US20090006663A1 (en) * 2007-06-27 2009-01-01 Archer Charles J Direct Memory Access ('DMA') Engine Assisted Local Reduction
JP2009110209A (ja) * 2007-10-29 2009-05-21 Panasonic Corp 演算処理装置、プロセッサ、プログラム変換装置およびプログラム
US8725992B2 (en) 2008-02-01 2014-05-13 International Business Machines Corporation Programming language exposing idiom calls to a programming idiom accelerator
US8732683B2 (en) * 2008-02-01 2014-05-20 International Business Machines Corporation Compiler providing idiom to idiom accelerator
US8316218B2 (en) 2008-02-01 2012-11-20 International Business Machines Corporation Look-ahead wake-and-go engine with speculative execution
US8386822B2 (en) * 2008-02-01 2013-02-26 International Business Machines Corporation Wake-and-go mechanism with data monitoring
US8250396B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Hardware wake-and-go mechanism for a data processing system
US8127080B2 (en) 2008-02-01 2012-02-28 International Business Machines Corporation Wake-and-go mechanism with system address bus transaction master
US8612977B2 (en) * 2008-02-01 2013-12-17 International Business Machines Corporation Wake-and-go mechanism with software save of thread state
US8640141B2 (en) * 2008-02-01 2014-01-28 International Business Machines Corporation Wake-and-go mechanism with hardware private array
US8171476B2 (en) * 2008-02-01 2012-05-01 International Business Machines Corporation Wake-and-go mechanism with prioritization of threads
US8516484B2 (en) * 2008-02-01 2013-08-20 International Business Machines Corporation Wake-and-go mechanism for a data processing system
US8145849B2 (en) 2008-02-01 2012-03-27 International Business Machines Corporation Wake-and-go mechanism with system bus response
US8880853B2 (en) * 2008-02-01 2014-11-04 International Business Machines Corporation CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock
US8225120B2 (en) * 2008-02-01 2012-07-17 International Business Machines Corporation Wake-and-go mechanism with data exclusivity
US8788795B2 (en) * 2008-02-01 2014-07-22 International Business Machines Corporation Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors
US8341635B2 (en) 2008-02-01 2012-12-25 International Business Machines Corporation Hardware wake-and-go mechanism with look-ahead polling
US8452947B2 (en) * 2008-02-01 2013-05-28 International Business Machines Corporation Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms
US8312458B2 (en) * 2008-02-01 2012-11-13 International Business Machines Corporation Central repository for wake-and-go mechanism
US8422402B2 (en) 2008-04-01 2013-04-16 International Business Machines Corporation Broadcasting a message in a parallel computer
US8281053B2 (en) 2008-07-21 2012-10-02 International Business Machines Corporation Performing an all-to-all data exchange on a plurality of data buffers by performing swap operations
CN101788922B (zh) * 2009-01-22 2013-12-25 国际商业机器公司 基于辅助线程实现事务存储系统的方法和装置
KR101581311B1 (ko) * 2009-03-11 2015-12-31 삼성전자주식회사 플래시 메모리 장치 및 그 제어 방법
US8230201B2 (en) * 2009-04-16 2012-07-24 International Business Machines Corporation Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system
US8886919B2 (en) 2009-04-16 2014-11-11 International Business Machines Corporation Remote update programming idiom accelerator with allocated processor resources
US8145723B2 (en) * 2009-04-16 2012-03-27 International Business Machines Corporation Complex remote update programming idiom accelerator
US8082315B2 (en) * 2009-04-16 2011-12-20 International Business Machines Corporation Programming idiom accelerator for remote update
US8156275B2 (en) * 2009-05-13 2012-04-10 Apple Inc. Power managed lock optimization
US8364862B2 (en) * 2009-06-11 2013-01-29 Intel Corporation Delegating a poll operation to another device
GB2484416B (en) * 2009-06-26 2015-02-25 Intel Corp Optimizations for an unbounded transactional memory (utm) system
EP2284693A1 (en) 2009-08-03 2011-02-16 C.R.F. Società Consortile per Azioni Wait instruction
US8695002B2 (en) * 2009-10-20 2014-04-08 Lantiq Deutschland Gmbh Multi-threaded processors and multi-processor systems comprising shared resources
US8447960B2 (en) * 2010-01-08 2013-05-21 International Business Machines Corporation Pausing and activating thread state upon pin assertion by external logic monitoring polling loop exit time condition
US20110173420A1 (en) * 2010-01-08 2011-07-14 International Business Machines Corporation Processor resume unit
US8464035B2 (en) 2009-12-18 2013-06-11 Intel Corporation Instruction for enabling a processor wait state
US9424087B2 (en) 2010-04-29 2016-08-23 International Business Machines Corporation Optimizing collective operations
US8949577B2 (en) 2010-05-28 2015-02-03 International Business Machines Corporation Performing a deterministic reduction operation in a parallel computer
US8776081B2 (en) 2010-09-14 2014-07-08 International Business Machines Corporation Send-side matching of data communications messages
US8566841B2 (en) 2010-11-10 2013-10-22 International Business Machines Corporation Processing communications events in parallel active messaging interface by awakening thread from wait state
US8713362B2 (en) 2010-12-01 2014-04-29 International Business Machines Corporation Obviation of recovery of data store consistency for application I/O errors
US8694821B2 (en) * 2010-12-03 2014-04-08 International Business Machines Corporation Generation of standby images of applications
CN102736945B (zh) * 2011-03-31 2016-05-18 国际商业机器公司 一种运行应用程序的多个实例的方法和系统
CN102760176B (zh) * 2011-04-29 2015-02-11 无锡江南计算技术研究所 硬件事务级仿真方法、引擎及系统
US8893083B2 (en) 2011-08-09 2014-11-18 International Business Machines Coporation Collective operation protocol selection in a parallel computer
US8667501B2 (en) 2011-08-10 2014-03-04 International Business Machines Corporation Performing a local barrier operation
US8910178B2 (en) 2011-08-10 2014-12-09 International Business Machines Corporation Performing a global barrier operation in a parallel computer
US8868843B2 (en) 2011-11-30 2014-10-21 Advanced Micro Devices, Inc. Hardware filter for tracking block presence in large caches
US9798548B2 (en) * 2011-12-21 2017-10-24 Nvidia Corporation Methods and apparatus for scheduling instructions using pre-decode data
US9310875B2 (en) 2011-12-22 2016-04-12 Intel Corporation Instruction that specifies an application thread performance state
JP5819184B2 (ja) 2011-12-28 2015-11-18 富士通株式会社 情報処理装置及び情報処理装置の制御方法
WO2013101188A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Memory event notification
US9495135B2 (en) 2012-02-09 2016-11-15 International Business Machines Corporation Developing collective operations for a parallel computer
US8706847B2 (en) 2012-02-09 2014-04-22 International Business Machines Corporation Initiating a collective operation in a parallel computer
US9396020B2 (en) 2012-03-30 2016-07-19 Intel Corporation Context switching mechanism for a processing core having a general purpose CPU core and a tightly coupled accelerator
US9218288B2 (en) 2012-06-15 2015-12-22 International Business Machines Corporation Monitoring a value in storage without repeated storage access
US9256455B2 (en) * 2012-11-20 2016-02-09 Red Hat Isreal, Ltd. Delivery of events from a virtual machine to host CPU using memory monitoring instructions
US9563425B2 (en) * 2012-11-28 2017-02-07 Intel Corporation Instruction and logic to provide pushing buffer copy and store functionality
US9141454B2 (en) * 2012-12-27 2015-09-22 Intel Corporation Signaling software recoverable errors
US10705961B2 (en) 2013-09-27 2020-07-07 Intel Corporation Scalably mechanism to implement an instruction that monitors for writes to an address
EP3074860A4 (en) * 2013-11-25 2017-10-11 Marvell World Trade Ltd. Systems and methods for loop suspension in java programming
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US9218185B2 (en) 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US9804846B2 (en) 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US9354883B2 (en) 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US9552033B2 (en) * 2014-04-22 2017-01-24 Qualcomm Incorporated Latency-based power mode units for controlling power modes of processor cores, and related methods and systems
US9778949B2 (en) * 2014-05-05 2017-10-03 Google Inc. Thread waiting in a multithreaded processor architecture
US9256477B2 (en) * 2014-05-29 2016-02-09 Netapp, Inc. Lockless waterfall thread communication
US9477521B2 (en) 2014-05-29 2016-10-25 Netapp, Inc. Method and system for scheduling repetitive tasks in O(1)
US9304702B2 (en) 2014-05-29 2016-04-05 Netapp, Inc. System and method for parallelized performance data collection in a computing system
GB2529899B (en) * 2014-09-08 2021-06-23 Advanced Risc Mach Ltd Shared Resources in a Data Processing Apparatus for Executing a Plurality of Threads
KR101979697B1 (ko) * 2014-10-03 2019-05-17 인텔 코포레이션 어드레스로의 기입들을 모니터링하는 명령어를 구현하는 스케일가능형 메커니즘
US11080064B2 (en) 2014-10-28 2021-08-03 International Business Machines Corporation Instructions controlling access to shared registers of a multi-threaded processor
US9575802B2 (en) 2014-10-28 2017-02-21 International Business Machines Corporation Controlling execution of threads in a multi-threaded processor
CN107111523B (zh) * 2014-11-11 2020-10-20 瑞萨电子株式会社 命令执行控制系统和命令执行控制方法
CN105843592A (zh) * 2015-01-12 2016-08-10 芋头科技(杭州)有限公司 一种在预设嵌入式系统中实现脚本操作的系统
GB2537115B (en) * 2015-04-02 2021-08-25 Advanced Risc Mach Ltd Event monitoring in a multi-threaded data processing apparatus
US10908909B2 (en) * 2015-06-09 2021-02-02 Optimum Semiconductor Technologies Inc. Processor with mode support
KR102476357B1 (ko) 2015-08-06 2022-12-09 삼성전자주식회사 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법
US9916178B2 (en) * 2015-09-25 2018-03-13 Intel Corporation Technologies for integrated thread scheduling
GB2544994A (en) * 2015-12-02 2017-06-07 Swarm64 As Data processing
CN105677487B (zh) * 2016-01-12 2019-02-15 浪潮通用软件有限公司 一种控制资源占用的方法及装置
US11023233B2 (en) 2016-02-09 2021-06-01 Intel Corporation Methods, apparatus, and instructions for user level thread suspension
US11061730B2 (en) * 2016-11-18 2021-07-13 Red Hat Israel, Ltd. Efficient scheduling for hyper-threaded CPUs using memory monitoring
CN108255587B (zh) * 2016-12-29 2021-08-24 展讯通信(上海)有限公司 一种同步多线程处理器
US10353817B2 (en) * 2017-03-07 2019-07-16 International Business Machines Corporation Cache miss thread balancing
US10275254B2 (en) 2017-03-08 2019-04-30 International Business Machines Corporation Spin loop delay instruction
TWI648620B (zh) * 2017-08-07 2019-01-21 慧榮科技股份有限公司 記憶體裝置以及操作指令錯誤處理方法
KR102043538B1 (ko) * 2018-01-18 2019-11-11 주식회사 알티스트 파티셔닝을 적용하여 프로세스를 모니터링하는 컴퓨팅 시스템
CN109508229A (zh) * 2018-09-19 2019-03-22 安徽慧视金瞳科技有限公司 一种多点同时绘制的匹配方法
US11068407B2 (en) 2018-10-26 2021-07-20 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction
US10884740B2 (en) 2018-11-08 2021-01-05 International Business Machines Corporation Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads
US11119781B2 (en) 2018-12-11 2021-09-14 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a fronting load
US11086672B2 (en) 2019-05-07 2021-08-10 International Business Machines Corporation Low latency management of processor core wait state
US11231881B2 (en) 2020-04-02 2022-01-25 Dell Products L.P. Raid data storage device multi-step command coordination system
US11106608B1 (en) 2020-06-22 2021-08-31 International Business Machines Corporation Synchronizing access to shared memory by extending protection for a target address of a store-conditional request
CN111857591A (zh) * 2020-07-20 2020-10-30 北京百度网讯科技有限公司 用于执行指令的方法、装置、设备和计算机可读存储介质
CN114489792B (zh) * 2021-03-25 2022-10-11 沐曦集成电路(上海)有限公司 处理器装置及其指令执行方法
US11693776B2 (en) 2021-06-18 2023-07-04 International Business Machines Corporation Variable protection window extension for a target address of a store-conditional request
CN116185891B (zh) * 2023-04-27 2023-07-21 珠海妙存科技有限公司 描述符管理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0982658A2 (en) * 1998-08-03 2000-03-01 Rational Software Corporation Detecting and causing unsafe latent accesses to a resource in multi-threaded programs
JP2001519579A (ja) * 1997-10-07 2001-10-23 カナル プラス ソシエテ アノニム マルチスレッドデータ処理装置
US6493741B1 (en) * 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4491910A (en) * 1982-02-22 1985-01-01 Texas Instruments Incorporated Microcomputer having data shift within memory
JPS59111526A (ja) 1982-12-16 1984-06-27 Fujitsu Ltd 信号処理方式
JPH06105460B2 (ja) 1988-06-07 1994-12-21 富士通株式会社 マルチプロセッサのプロセッサ切換え装置
GB8817911D0 (en) 1988-07-27 1988-09-01 Int Computers Ltd Data processing apparatus
US4965718A (en) 1988-09-29 1990-10-23 International Business Machines Corporation Data processing system incorporating a memory resident directive for synchronizing multiple tasks among plurality of processing elements by monitoring alternation of semaphore data
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
JP2866241B2 (ja) * 1992-01-30 1999-03-08 株式会社東芝 コンピュータシステムおよびスケジューリング方法
US5428757A (en) * 1992-04-29 1995-06-27 International Business Machines Corporation Method for reducing translation look aside buffer purges in a multitasking system
US5546593A (en) * 1992-05-18 1996-08-13 Matsushita Electric Industrial Co., Ltd. Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream
JP3678759B2 (ja) * 1992-07-21 2005-08-03 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 割込を発生するための装置および割込を発生するための方法
US5493660A (en) * 1992-10-06 1996-02-20 Hewlett-Packard Company Software assisted hardware TLB miss handler
US5584031A (en) * 1993-11-09 1996-12-10 Motorola Inc. System and method for executing a low power delay instruction
US5546037A (en) 1993-11-15 1996-08-13 Cirrus Logic, Inc. NAPNOP circuit for conserving power in computer systems
US5584014A (en) * 1994-12-20 1996-12-10 Sun Microsystems, Inc. Apparatus and method to preserve data in a set associative memory device
JPH08212512A (ja) * 1995-02-03 1996-08-20 Hitachi Ltd 磁気記憶装置及びそれに用いる薄膜磁気ヘッドとその製造方法
JPH08320797A (ja) * 1995-05-24 1996-12-03 Fuji Xerox Co Ltd プログラム制御システム
JPH096633A (ja) 1995-06-07 1997-01-10 Internatl Business Mach Corp <Ibm> データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
CN1280714C (zh) 1996-08-27 2006-10-18 松下电器产业株式会社 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器
US5961639A (en) * 1996-12-16 1999-10-05 International Business Machines Corporation Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
WO1998043193A2 (en) 1997-03-21 1998-10-01 University Of Maryland Spawn-join instruction set architecture for providing explicit multithreading
US6076157A (en) 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6016542A (en) * 1997-12-31 2000-01-18 Intel Corporation Detecting long latency pipeline stalls for thread switching
JP2000010910A (ja) * 1998-06-22 2000-01-14 Nec Corp データ転送制御装置およびデータ転送制御方法ならびに記録媒体
US6505229B1 (en) * 1998-09-25 2003-01-07 Intelect Communications, Inc. Method for allowing multiple processing threads and tasks to execute on one or more processor units for embedded real-time processor systems
US6401155B1 (en) * 1998-12-22 2002-06-04 Philips Electronics North America Corporation Interrupt/software-controlled thread processing
SG65097A1 (en) * 1998-12-28 2001-08-21 Compaq Computer Corp Break event generation during transitions between modes of operation in a computer system
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6351808B1 (en) * 1999-05-11 2002-02-26 Sun Microsystems, Inc. Vertically and horizontally threaded processor with multidimensional storage for storing thread data
US6496925B1 (en) * 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US6357016B1 (en) * 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6671795B1 (en) * 2000-01-21 2003-12-30 Intel Corporation Method and apparatus for pausing execution in a processor or the like
US7856633B1 (en) 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US6931639B1 (en) * 2000-08-24 2005-08-16 International Business Machines Corporation Method for implementing a variable-partitioned queue for simultaneous multithreaded processors
TW461627U (en) * 2000-12-21 2001-10-21 Hon Hai Prec Ind Co Ltd Electrical connector
US6625698B2 (en) * 2000-12-28 2003-09-23 Unisys Corporation Method and apparatus for controlling memory storage locks based on cache line ownership
US6463511B2 (en) * 2000-12-29 2002-10-08 Intel Corporation System and method for high performance execution of locked memory instructions in a system with distributed memory and a restrictive memory model
US7120762B2 (en) * 2001-10-19 2006-10-10 Wisconsin Alumni Research Foundation Concurrent execution of critical sections by eliding ownership of locks
US20030126416A1 (en) * 2001-12-31 2003-07-03 Marr Deborah T. Suspending execution of a thread in a multi-threaded processor
US7127561B2 (en) * 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs
US20030126379A1 (en) * 2001-12-31 2003-07-03 Shiv Kaushik Instruction sequences for suspending execution of a thread until a specified memory access occurs

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001519579A (ja) * 1997-10-07 2001-10-23 カナル プラス ソシエテ アノニム マルチスレッドデータ処理装置
EP0982658A2 (en) * 1998-08-03 2000-03-01 Rational Software Corporation Detecting and causing unsafe latent accesses to a resource in multi-threaded programs
US6493741B1 (en) * 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012004990A1 (ja) * 2010-07-07 2012-01-12 パナソニック株式会社 プロセッサ
JPWO2012004990A1 (ja) * 2010-07-07 2013-09-02 パナソニック株式会社 プロセッサ
US8898671B2 (en) 2010-07-07 2014-11-25 Panasonic Corporation Processor that executes a plurality of threads by promoting efficiency of transfer of data that is shared with the plurality of threads
WO2016088220A1 (ja) * 2014-12-03 2016-06-09 株式会社日立製作所 計算機及び論理プロセッサの制御方法

Also Published As

Publication number Publication date
DE10297596B4 (de) 2017-09-07
GB0412867D0 (en) 2004-07-14
AU2002364557A8 (en) 2003-07-24
JP4990829B2 (ja) 2012-08-01
US20030126186A1 (en) 2003-07-03
KR100814993B1 (ko) 2008-03-18
TWI590153B (zh) 2017-07-01
KR20040068993A (ko) 2004-08-02
TW200305820A (en) 2003-11-01
DE10297596T5 (de) 2004-12-02
GB2400947A (en) 2004-10-27
CN100383740C (zh) 2008-04-23
AU2002364557A1 (en) 2003-07-24
HK1066883A1 (en) 2005-04-01
CN1688974A (zh) 2005-10-26
RU2004123622A (ru) 2005-03-27
WO2003058447A2 (en) 2003-07-17
GB2400947B (en) 2005-08-24
JP2006500639A (ja) 2006-01-05
US7363474B2 (en) 2008-04-22
WO2003058447A3 (en) 2004-12-16
RU2308754C2 (ru) 2007-10-20
TWI322959B (en) 2010-04-01
DE10297856B4 (de) 2014-07-17
US20080034190A1 (en) 2008-02-07
TW200941340A (en) 2009-10-01
JP4601958B2 (ja) 2010-12-22

Similar Documents

Publication Publication Date Title
JP4990829B2 (ja) 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置
US7127561B2 (en) Coherency techniques for suspending execution of a thread until a specified memory access occurs
KR100864747B1 (ko) 모니터-메모리 대기를 사용하여 큐잉된 로크들
US8539485B2 (en) Polling using reservation mechanism
JP5795820B2 (ja) プロセッサ、方法、システム、及び、プログラム
US20030126379A1 (en) Instruction sequences for suspending execution of a thread until a specified memory access occurs
US8607241B2 (en) Compare and exchange operation using sleep-wakeup mechanism
US7404041B2 (en) Low complexity speculative multithreading system based on unmodified microprocessor core
US8694976B2 (en) Sleep state mechanism for virtual multithreading
TW201510860A (zh) 多核心同步機制
GB2457181A (en) Suspending other threads to prevent access conflicts
KR20040069352A (ko) 멀티-스레딩 프로세서에서 스레드의 실행을 정지시키기위한 시스템 및 방법
GB2441903A (en) Resuming control of resources by a processor on exiting a sleep mode and disabling an associated monitor.

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080425

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110531

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110831

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4990829

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150511

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term