JP2006509282A - マルチスレッディング・リサイクルおよびディスパッチ機構 - Google Patents

マルチスレッディング・リサイクルおよびディスパッチ機構 Download PDF

Info

Publication number
JP2006509282A
JP2006509282A JP2004556462A JP2004556462A JP2006509282A JP 2006509282 A JP2006509282 A JP 2006509282A JP 2004556462 A JP2004556462 A JP 2004556462A JP 2004556462 A JP2004556462 A JP 2004556462A JP 2006509282 A JP2006509282 A JP 2006509282A
Authority
JP
Japan
Prior art keywords
instruction
dependent
instructions
thread
long latency
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004556462A
Other languages
English (en)
Inventor
フェイスト、カート、アラン
シッピー、デイヴィッド
ヴァン、ノーストランド、ジュニア、アルバート、ジェイムズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2006509282A publication Critical patent/JP2006509282A/ja
Pending 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/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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

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)

Abstract

【課題】 アウトオブオーダー設計技法を用いることなくインオーダー・マルチスレッディング・プロセッサのスループットを改善するためのシステムおよび方法を提供する。
【解決手段】 インオーダー・マルチスレッディング・プロセッサのスループットを向上させるためのシステムおよび方法を提供する。第1のスレッドからのレジスタ依存によって少なくとも1つの長いレイテンシ命令の後の依存命令を識別する。依存命令をもっと前のパイプライン・ステージに供給することによって、それをリサイクルする。依存命令をディスパッチにおいて遅延させる。第1のスレッドから少なくとも1つの長いレイテンシ命令の完了を検出する。長いレイテンシ命令を実行している間に、代替的なスレッドが1つ以上の命令を発行することを可能とする。

Description

本発明は、一般に、インオーダー(in-order)・プロセッサのスループットの改善に関し、更に具体的には、インオーダー・プロセッサにおけるマルチスレッディング技法に関する。
「マルチスレッディング」は、コンピュータ・システムにおいて用いられる一般的な技法であり、多数のスレッドが共有データフロー上で実行することを可能とする。単一プロセッサ・システムにおいて用いられる場合、マルチスレッディングによって、単一プロセッサ・システムのオペレーティング・システム・ソフトウエアは、マルチプロセッサ・システムの様相を呈する。
従来技術において、いくつかのマルチスレッディング技法が用いられている。例えば、コース・グレイン・マルチスレッディング(coarse-grain multithreading)は、1度に1つのみのスレッドがアクティブになることを可能とし、スレッド・スワップがある場合はいつでも全パイプラインをフラッシュする。この技法では、単一のスレッドがキャッシュ・ミス等のイベントに遭遇するまで実行し、次いでパイプラインを空にし、代替的なスレッドがアクティブになる(すなわちスワップインされる)。
別の例では、同時マルチスレッディング(SMT:simultaneous multithreading)によって、多数のスレッドが同時にアクティブになることができ、レジスタ名変更、および完了順序付けバッファ等のアウトオブオーダー(out-of-order)設計のリソースを用いて、多数のアクティブなスレッドを追跡する。SMTは、ハードウエア実施では相当に高価である可能性がある。
従って、アウトオブオーダー設計技法を用いることなく、インオーダー・マルチスレッディング・プロセッサのスループットを改善するためのシステムおよび方法に対する要望がある。
本発明は、インオーダー・マルチスレッディング・プロセッサのスループットを向上させるためのシステムおよび方法を提供する。第1のスレッドからのレジスタ依存によって少なくとも1つの長いレイテンシ命令の後の依存命令を識別する。依存命令をもっと前のパイプライン・ステージに供給することによって、それをリサイクルする。依存命令をディスパッチにおいて遅延させる。第1のスレッドから少なくとも1つの長いレイテンシ命令の完了を検出する。長いレイテンシ命令を実行している間に、代替的なスレッドが1つ以上の命令を発行することを可能とする。
本発明およびその利点のいっそう完全な理解のため、ここで、添付図面に関連付けられた以下の説明を参照する。
以下の考察では、多数の特定の詳細事項を述べて、本発明の完全な理解を与える。しかしながら、当業者には、かかる特定の詳細事項がなくても本発明を実施可能であることは明らかであろう。他の例では、本発明を必要以上に詳細にしてかえってあいまいにすることのないように、概略図またはブロック図の形態で周知の要素を図示している。
更に、特に指示しない限り、本明細書中に記載する全ての機能は、ハードウエアまたはソフトウエア、またはそれらの何らかの組み合わせで実行可能であることに留意すべきである。しかしながら、好適な実施形態では、それらの機能は、特に指示しない限り、コンピュータまたは電子データ・プロセッサ等のプロセッサによって、コンピュータ・プログラム・コード、ソフトウエア、もしくはかかる機能を実行するように符号化された集積回路またはそれら全てに従って、実行される。
図面の図1を参照すると、参照番号100は、マルチスレッディング命令フローを有するプロセッサ100の大体をブロック図で示す。好ましくは、プロセッサ100は、インオーダー・マルチスレッディング・プロセッサである。プロセッサ100は、2つのスレッド(AおよびB)を有するが、3つ以上のスレッドを有する場合もある。
プロセッサ100は、それぞれスレッドAおよびBのための命令フェッチ・アドレス・レジスタ(IFAR)102および104を含む。IFAR102および104は、IC1、IC2、およびIC3を有する命令キャッシュ(ICACHE)106に結合されている。また、プロセッサ100は、それぞれスレッドAおよびBのための命令バッファ(IBUF)108および110を含む。IBUF108および110の各々は、2エントリの深さおよび4命令の広さである。具体的には、IBUF108は、IBUF A(0)およびIBUF A(1)を含む。同様に、IBUF110は、IBUF B(0)およびIBUF B(1)を含む。プロセッサ100は、更に、命令ディスパッチ・ブロックID1 112およびID2 114を含む。ID1 112は、マルチプレクサ116を含み、これはICACHE106ならびにIBUF108および110に結合されている。マルチプレクサ116は、スレッド・ディスパッチ要求信号118を制御信号として受信するように構成されている。また、ID1 112は、ID2 114にも結合されている。
プロセッサ100は、更に、命令発行ブロックIS1 120およびIS2 122を含む。IS1 120は、ID2 114に結合されて、命令を受信する。また、IS1 120は、IS2 122に結合されて、命令をIS2 122に送信する。プロセッサ100は、更に、命令を処理するために実行ユニットに結合された様々なレジスタ・ファイルを含む。具体的には、プロセッサ100は、ベクトル/SIMDマルチメディア拡張(VMX)126に結合されたベクトル・レジスタ・ファイル(VRF)124を含む。また、プロセッサ100は、浮動小数点ユニット(FPU)130に結合された浮動小数点レジスタ・ファイル(FPR)128を含む。更に、プロセッサ100は、固定小数点ユニット/ロード保存ユニット(FXU/LSU)134およびデータ・キャッシュ(DCACHE)136に結合された汎用レジスタ・ファイル(GPR)132を含む。また、プロセッサ100は、条件レジスタ・ファイル/リンク・レジスタ・ファイル/カウント・レジスタ・ファイル(CR/LNK/CNT)138およびブランチ140を含む。IS2 122は、VRF124、FPR128、GPR132、およびCR/LNK/CNT138に結合されている。また、プロセッサ100は、依存チェック論理142を含み、これはIS2 122に結合されていると好ましい。
命令フェッチは、スレッドごとに別個のIFAR102および104を維持する。フェッチは、スレッド間でサイクルごとに交番する。命令フェッチは、パイプライン型であり、この実施において3サイクルを要する。3サイクルの終了時に、4つの命令がICACHE106からフェッチされ、ID1 112に転送される。4つの命令は、IBUF108もしくは110またはその双方にディスパッチされるかまたは挿入される。
ID1 112において、スレッド切り替えのための選択が決定される。この決定は、スレッド・ディスパッチ要求信号118およびそのスレッドに利用可能な命令に基づいている。好ましくは、スレッド・ディスパッチ要求信号118は、スレッドごとに毎サイクル、トグルする(toggle)。所与のスレッドに利用可能な命令があり、そのスレッドについてアクティブなスレッドである場合、そのスレッドのために命令がディスパッチされる。アクティブ・スレッド・サイクルの間にスレッドに利用できる命令が存在しない場合、代替的なスレッドが利用可能な命令を有するならばこのディスパッチ・スロットを用いることができる。
従来技術のシステムでは、長いレイテンシ命令の後に第1のスレッド(例えばスレッドA)における依存命令がある場合、長いレイテンシ命令が処理されるまで、依存命令を実行することができない。従って、長いレイテンシ命令が処理されるまで、依存命令はIS2 122に保存される。しかしながら、本発明では、依存チェック論理142が、長いレイテンシ命令の後の依存命令を識別する。好ましくは、依存命令は、依存チェック論理がこれを識別することができるように標示される。依存命令をもっと前のパイプライン・ステージ(例えばフェッチ・ステージ)に供給することによって、依存命令をリサイクルする。依存命令は、ディスパッチにおいて遅延される。長いレイテンシ命令を実行している間に、代替的なスレッドが1つ以上の命令を発行することができる。長いレイテンシ命令が完了すると、第1のスレッドの依存命令が実行される。
ここで、図2を参照すると、タイミング図200が、通常のスレッド切り替えを示す。タイミング図200は、通常のフェッチ、ディスパッチ、および発行プロセスを示し、ブランチ・リダイレクトもパイプライン・ストールもない。好ましくは、フェッチ、ディスパッチ、および発行プロセスは、サイクルごとにスレッド間で交番する。具体的には、A(0:3)は、スレッドAのためにフェッチされる4つの命令から成る群である。同様に、B(0:3)は、スレッドBのためにフェッチされる4つの命令から成る群である。ブランチがないので、フェッチおよびディスパッチは双方とも、サイクルごとにスレッドをトグルする。
ここで、図3を参照すると、タイミング図300は、スレッドA上のDCACHEロード・ミスの後にスレッドA上の依存命令が来ることを示す。サイクル1では、ロード302は、パイプライン・ステージEX2にある。サイクル1では、スレッドAの依存命令304は、パイプライン・ステージIS2にある。サイクル4で、DCACHEミス信号306が活性化される。次いで、これによって、スレッドAのためのライトバック・イネーブル信号308が無効になる。サイクル7では、スレッドAの依存命令304は、FLUSH(A)信号310によってフラッシュされる。次いで、依存命令304は、リサイクルされ、DCACHEをミスしたロードからデータが戻るまでディスパッチに保持される。フラッシュが起こった後、スレッドBには、サイクル21で開始するディスパッチ・スロットが全て与えられる。これは、DCACHEロード・データが戻るまで継続する。
ロード302が完全に実行された後、スレッドAは、実行のため、パイプラインを介して依存命令304を送信することに留意すべきである。
長いレイテンシ命令は、多くの異なる形態を取ることができる。図3に示すようなロード・ミスは、長いレイテンシ命令の1例である。更に、(1)アドレス変換ミス、(2)固定小数点複合命令、(3)浮動小数点複合命令、および(4)浮動小数点非正規化命令を含むがこれらには限定されない、他のタイプの長いレイテンシ命令がある。図3はロード・ミスの場合を示すが、本発明は他のタイプの長いレイテンシ命令にも適用可能であることは、当業者には一般に理解されよう。
前述の記載から、本発明の真の精神から逸脱することなく、本発明の好適な実施形態に様々な変更および変形を行い得ることは理解されよう。この記載は、例示の目的のためのみであり、限定の意味で解釈すべきではない。本発明の範囲は、特許請求の範囲の文言によってのみ限定されるものとする。
プロセッサにおけるマルチスレッディング命令フローを示すブロック図である。 通常のスレッド切り替えを示すタイミング図である。 スレッドにおいてロード・ミスの後に依存命令が続く場合のスレッド切り替えを示すタイミング図である。

Claims (23)

  1. インオーダー・マルチスレッディング・プロセッサのスループットを向上させるための方法であって、
    第1のスレッドからのレジスタ依存によって少なくとも1つの長いレイテンシ命令の後の依存命令を識別するステップと、
    前記依存命令をもっと前のパイプライン・ステージに供給することによって前記依存命令をリサイクルするステップと、
    前記依存命令をディスパッチにおいて遅延させるステップと、
    前記第1のスレッドから前記少なくとも1つの長いレイテンシ命令の完了を検出するステップと、
    前記少なくとも1つの長いレイテンシ命令を実行している間に、代替的なスレッドが1つ以上の命令を発行することを可能とするステップと、
    を含む、前記の方法。
  2. 前記依存命令をディスパッチにおいて遅延させるステップが、前記依存命令を命令バッファに保持することを有する、請求項1に記載の方法。
  3. ディスパッチ・ブロック・マークによって、前記依存命令を前記命令バッファに保持することを示す、請求項2に記載の方法。
  4. 前記ディスパッチ・ブロック・マークをリセットして、前記依存命令を前記命令バッファから解放することを示す、請求項3に記載の方法。
  5. 前記少なくとも1つの長いレイテンシ命令がロード・ミスである、請求項1に記載の方法。
  6. ロード/保存命令を発行するステップと、
    前記ロード/保存命令のターゲット依存を追跡するステップと、
    前記ロード/保存命令をミス・キューにセーブするステップと、
    前記ロード/保存命令を実行するステップと、
    ロード・ミスを通知するステップと、
    後続の依存命令をフラッシュするステップと、
    前記依存命令をディスパッチに保持しながら、代替的なスレッドのための他の命令をディスパッチするステップと、
    前記依存命令をディスパッチするステップと、
    を更に有する、請求項5に記載の方法。
  7. 前記少なくとも1つの長いレイテンシ命令がアドレス変換ミスである、請求項1に記載の方法。
  8. 前記少なくとも1つの長いレイテンシ命令が固定小数点複合命令である、請求項1に記載の方法。
  9. 前記少なくとも1つの長いレイテンシ命令が浮動小数点複合命令である、請求項1に記載の方法。
  10. 前記少なくとも1つの長いレイテンシ命令が浮動小数点非正規化命令である、請求項1に記載の方法。
  11. 2つ以上のスレッドを有するインオーダー・マルチスレッディング・プロセッサであって、
    複数の命令フェッチ・アドレス・レジスタであって、該命令フェッチ・アドレス・レジスタの少なくとも1つが前記2つ以上のスレッドの各々に割り当てられた、複数の命令フェッチ・アドレス・レジスタと、
    前記複数の命令フェッチ・アドレス・レジスタに結合された命令キャッシュと、
    複数の命令バッファであって、該命令バッファの少なくとも1つが各スレッドに割り当てられ、前記複数の命令バッファが前記命令キャッシュに結合されて前記命令キャッシュから1つ以上の命令を受信する、複数の命令バッファと、
    前記命令キャッシュおよび前記複数の命令バッファの双方に結合された命令ディスパッチ・ステージと、
    前記命令ディスパッチ・ステージに結合された命令発行ステージと、
    前記命令発行ステージに結合され、前記第1のスレッドからのレジスタ依存によって少なくとも1つの長いレイテンシ命令の後の依存命令を識別する依存チェック論理と、
    を含み、前記依存チェック論理が、前記依存命令をもっと前のパイプラン・ステージに供給することによって前記依存命令をリサイクルし、
    前記依存チェック論理が、前記依存命令をディスパッチにおいて遅延させ、
    前記依存チェック論理が、前記第1のスレッドから前記少なくとも1つの長いレイテンシ命令の完了を検出し、
    前記依存チェック論理が、前記少なくとも1つの長いレイテンシ命令を実行している間に、代替的なスレッドが1つ以上の命令を発行することを可能とする、インオーダー・マルチスレッディング・プロセッサ。
  12. 前記発行ステージが、少なくとも1つのレジスタ・ファイルおよび該レジスタ・ファイルに結合された少なくとも1つの実行ユニットを有する、請求項11に記載のインオーダー・マルチスレッディング・プロセッサ。
  13. 前記少なくとも1つのレジスタ・ファイルがベクトル・レジスタ・ファイル(VRF)を有し、前記少なくとも1つの実行ユニットがベクトル/SIMDマルチメディア拡張(VMX)を有する、請求項12に記載のインオーダー・マルチスレッディング・プロセッサ。
  14. 前記少なくとも1つのレジスタ・ファイルが浮動小数点レジスタ・ファイル(VPR)を有し、前記少なくとも1つの実行ユニットが浮動小数点ユニット(FPU)を有する、請求項12に記載のインオーダー・マルチスレッディング・プロセッサ。
  15. 前記少なくとも1つのレジスタ・ファイルが汎用レジスタ・ファイル(GPR)を有し、前記少なくとも1つの実行ユニットが固定小数点ユニット(FXU)およびロード/保存ユニット(LSU)を有する、請求項12に記載のインオーダー・マルチスレッディング・プロセッサ。
  16. 前記少なくとも1つのレジスタ・ファイルが、条件レジスタ・ファイル(CR)、リンク・レジスタ・ファイル(LNK)、およびカウント・レジスタ・ファイル(CNT)を有し、前記少なくとも1つの実行ユニットがブランチを有する、請求項12に記載のインオーダー・マルチスレッディング・プロセッサ。
  17. 2つ以上のスレッドを有するインオーダー・マルチスレッディング・プロセッサであって、
    第1のスレッドからのレジスタ依存によって少なくとも1つの長いレイテンシ命令の後の依存命令を識別するための手段と、
    前記依存命令をもっと前のパイプライン・ステージに供給することによって前記依存命令をリサイクルするための手段と、
    前記依存命令をディスパッチにおいて遅延させるための手段と、
    前記第1のスレッドから前記少なくとも1つの長いレイテンシ命令の完了を検出するための手段と、
    前記少なくとも1つの長いレイテンシ命令を実行している間に、代替的なスレッドが1つ以上の命令を発行することを可能とするための手段と、
    を含む、インオーダー・マルチスレッディング・プロセッサ。
  18. 前記依存命令をディスパッチにおいて遅延させるための手段が、前記依存命令を命令バッファに保持するための手段を有する、請求項17に記載のインオーダー・マルチスレッディング・プロセッサ。
  19. ディスパッチ・ブロック・マークによって、前記依存命令を前記命令バッファに保持することを示す、請求項18に記載のインオーダー・マルチスレッディング・プロセッサ。
  20. 前記ディスパッチ・マークをリセットして、前記依存命令を前記命令バッファから解放することを示す、請求項19に記載のインオーダー・マルチスレッディング・プロセッサ。
  21. 前記少なくとも1つの長いレイテンシ命令がロード・ミスである、請求項17に記載のインオーダー・マルチスレッディング・プロセッサ。
  22. ロード/保存命令を発行するための手段と、
    前記ロード/保存命令のターゲット依存を追跡するための手段と、
    前記ロード/保存命令をミス・キューにセーブするための手段と、
    前記ロード/保存命令を実行するための手段と、
    ロード・ミスを通知するための手段と、
    後続の依存命令をフラッシュするための手段と、
    前記依存命令をディスパッチに保持しながら、代替的なスレッドのための他の命令をディスパッチするための手段と、
    前記依存命令をディスパッチするための手段と、
    を更に含む、請求項21に記載のインオーダー・マルチスレッディング・プロセッサ。
  23. インオーダー・マルチスレッディング・プロセッサのスループットを向上させるためのコンピュータ・プログラムであって、媒体において具現化され、前記コンピュータ・プログラムが、
    第1のスレッドからのレジスタ依存によって少なくとも1つの長いレイテンシ命令の後の依存命令を識別するためのコンピュータ・プログラム・コードと、
    前記依存命令をもっと前のパイプライン・ステージに供給することによって前記依存命令をリサイクルするためのコンピュータ・プログラム・コードと、
    前記依存命令をディスパッチにおいて遅延させるためのコンピュータ・プログラム・コードと、
    前記第1のスレッドから前記少なくとも1つの長いレイテンシ命令の完了を検出するためのコンピュータ・プログラム・コードと、
    前記少なくとも1つの長いレイテンシ命令を実行している間に、代替的なスレッドが1つ以上の命令を発行することを可能とするためのコンピュータ・プログラム・コードと、
    を含む、コンピュータ・プログラム。
JP2004556462A 2002-12-05 2003-10-22 マルチスレッディング・リサイクルおよびディスパッチ機構 Pending JP2006509282A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/313,705 US20040111594A1 (en) 2002-12-05 2002-12-05 Multithreading recycle and dispatch mechanism
PCT/GB2003/004583 WO2004051464A1 (en) 2002-12-05 2003-10-22 In order multithreading recycle and dispatch mechanism

Publications (1)

Publication Number Publication Date
JP2006509282A true JP2006509282A (ja) 2006-03-16

Family

ID=32468318

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004556462A Pending JP2006509282A (ja) 2002-12-05 2003-10-22 マルチスレッディング・リサイクルおよびディスパッチ機構

Country Status (8)

Country Link
US (1) US20040111594A1 (ja)
EP (1) EP1576464A1 (ja)
JP (1) JP2006509282A (ja)
KR (1) KR100819232B1 (ja)
CN (1) CN1271512C (ja)
AU (1) AU2003278329A1 (ja)
CA (1) CA2503079A1 (ja)
WO (1) WO2004051464A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010515161A (ja) * 2006-12-30 2010-05-06 インテル コーポレイション スレッドをキューに供給する方法及び装置

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7703076B1 (en) * 2003-07-30 2010-04-20 Lsi Corporation User interface software development tool and method for enhancing the sequencing of instructions within a superscalar microprocessor pipeline by displaying and manipulating instructions in the pipeline
US7284102B2 (en) * 2005-02-09 2007-10-16 International Business Machines Corporation System and method of re-ordering store operations within a processor
US7313673B2 (en) * 2005-06-16 2007-12-25 International Business Machines Corporation Fine grained multi-thread dispatch block mechanism
US8001540B2 (en) * 2006-08-08 2011-08-16 International Business Machines Corporation System, method and program product for control of sequencing of data processing by different programs
US7596668B2 (en) * 2007-02-20 2009-09-29 International Business Machines Corporation Method, system and program product for associating threads within non-related processes based on memory paging behaviors
GB2447907B (en) * 2007-03-26 2009-02-18 Imagination Tech Ltd Processing long-latency instructions in a pipelined processor
US20080263379A1 (en) * 2007-04-17 2008-10-23 Advanced Micro Devices, Inc. Watchdog timer device and methods thereof
US20090125706A1 (en) * 2007-11-08 2009-05-14 Hoover Russell D Software Pipelining on a Network on Chip
US8261025B2 (en) 2007-11-12 2012-09-04 International Business Machines Corporation Software pipelining on a network on chip
US8302098B2 (en) * 2007-12-06 2012-10-30 Oracle America, Inc. Hardware utilization-aware thread management in multithreaded computer systems
US20090260013A1 (en) * 2008-04-14 2009-10-15 International Business Machines Corporation Computer Processors With Plural, Pipelined Hardware Threads Of Execution
US8423715B2 (en) 2008-05-01 2013-04-16 International Business Machines Corporation Memory management among levels of cache in a memory hierarchy
US8521982B2 (en) * 2009-04-15 2013-08-27 International Business Machines Corporation Load request scheduling in a cache hierarchy
US8762657B2 (en) * 2009-07-28 2014-06-24 Rambus Inc. Method and system for synchronizing address and control signals in threaded memory modules
US9361116B2 (en) 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
US9697005B2 (en) 2013-12-04 2017-07-04 Analog Devices, Inc. Thread offset counter
CN105378652B (zh) * 2013-12-24 2018-02-06 华为技术有限公司 线程共享资源分配方法及装置
US9665372B2 (en) 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9760375B2 (en) 2014-09-09 2017-09-12 International Business Machines Corporation Register files for storing data operated on by instructions of multiple widths
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
CN106537331B (zh) * 2015-06-19 2019-07-09 华为技术有限公司 指令处理方法及设备
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US10275250B2 (en) * 2017-03-06 2019-04-30 Arm Limited Defer buffer
US11443044B2 (en) 2019-09-23 2022-09-13 International Business Machines Corporation Targeted very long delay for increasing speculative execution progression
US11205005B2 (en) 2019-09-23 2021-12-21 International Business Machines Corporation Identifying microarchitectural security vulnerabilities using simulation comparison with modified secret data
JP7378262B2 (ja) * 2019-10-11 2023-11-13 スリーエム イノベイティブ プロパティズ カンパニー インクジェットプリント方法、及びインクジェットプリント装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4635194A (en) * 1983-05-02 1987-01-06 International Business Machines Corporation Instruction buffer bypass apparatus
US5604909A (en) * 1993-12-15 1997-02-18 Silicon Graphics Computer Systems, Inc. Apparatus for processing instructions in a computing system
US5737562A (en) * 1995-10-06 1998-04-07 Lsi Logic Corporation CPU pipeline having queuing stage to facilitate branch instructions
US5966544A (en) * 1996-11-13 1999-10-12 Intel Corporation Data speculatable processor having reply architecture
US6088788A (en) * 1996-12-27 2000-07-11 International Business Machines Corporation Background completion of instruction and associated fetch request in a multithread processor
US6079002A (en) * 1997-09-23 2000-06-20 International Business Machines Corporation Dynamic expansion of execution pipeline stages
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010515161A (ja) * 2006-12-30 2010-05-06 インテル コーポレイション スレッドをキューに供給する方法及び装置

Also Published As

Publication number Publication date
AU2003278329A1 (en) 2004-06-23
CA2503079A1 (en) 2004-06-17
CN1271512C (zh) 2006-08-23
WO2004051464A1 (en) 2004-06-17
EP1576464A1 (en) 2005-09-21
KR20050084661A (ko) 2005-08-26
US20040111594A1 (en) 2004-06-10
KR100819232B1 (ko) 2008-04-02
CN1504873A (zh) 2004-06-16

Similar Documents

Publication Publication Date Title
JP2006509282A (ja) マルチスレッディング・リサイクルおよびディスパッチ機構
US7721071B2 (en) System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor
US10296346B2 (en) Parallelized execution of instruction sequences based on pre-monitoring
JP4642305B2 (ja) マルチスレッド・プロセッサ内の複数のスレッドに入り、出る方法と装置
US8627044B2 (en) Issuing instructions with unresolved data dependencies
US8145887B2 (en) Enhanced load lookahead prefetch in single threaded mode for a simultaneous multithreaded microprocessor
US7603543B2 (en) Method, apparatus and program product for enhancing performance of an in-order processor with long stalls
US8074060B2 (en) Out-of-order execution microprocessor that selectively initiates instruction retirement early
US20160328237A1 (en) System and method to reduce load-store collision penalty in speculative out of order engine
US7000233B2 (en) Simultaneous multithread processor with result data delay path to adjust pipeline length for input to respective thread
EP1296230A2 (en) Instruction issuing in the presence of load misses
US20020087840A1 (en) Method for converting pipeline stalls to pipeline flushes in a multithreaded processor
US20060149931A1 (en) Runahead execution in a central processing unit
JP3611304B2 (ja) 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法
US7779234B2 (en) System and method for implementing a hardware-supported thread assist under load lookahead mechanism for a microprocessor
EP1296228B1 (en) Instruction Issue and retirement in processor having mismatched pipeline depths
US7251721B1 (en) Conditional link pointer register sets marking the beginning and end of a conditional instruction block where each set corresponds to a single stage of a pipeline that moves link pointers through each corresponding register of said register sets as instructions move through the pipeline
EP3278212A1 (en) Parallelized execution of instruction sequences based on premonitoring
US10296350B2 (en) Parallelized execution of instruction sequences
US6857062B2 (en) Broadcast state renaming in a microprocessor
US6697933B1 (en) Method and apparatus for fast, speculative floating point register renaming
US20090210656A1 (en) Method and system for overlapping execution of instructions through non-uniform execution pipelines in an in-order processor
US20080313422A1 (en) Enhanced Single Threaded Execution in a Simultaneous Multithreaded Microprocessor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060404

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070411

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20070411

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070411

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080401

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080508

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20080530

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20100714