JP3548132B2 - マルチスレッド・プロセッサ内でのパイプライン・ステージのフラッシュ方法および装置 - Google Patents

マルチスレッド・プロセッサ内でのパイプライン・ステージのフラッシュ方法および装置 Download PDF

Info

Publication number
JP3548132B2
JP3548132B2 JP2001126630A JP2001126630A JP3548132B2 JP 3548132 B2 JP3548132 B2 JP 3548132B2 JP 2001126630 A JP2001126630 A JP 2001126630A JP 2001126630 A JP2001126630 A JP 2001126630A JP 3548132 B2 JP3548132 B2 JP 3548132B2
Authority
JP
Japan
Prior art keywords
instruction
processor
threads
stage
pipeline
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.)
Expired - Fee Related
Application number
JP2001126630A
Other languages
English (en)
Other versions
JP2001356903A (ja
Inventor
リチャード・ジェームズ・エイケマイヤー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2001356903A publication Critical patent/JP2001356903A/ja
Application granted granted Critical
Publication of JP3548132B2 publication Critical patent/JP3548132B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、全般的には改良されたデータ処理システムに関し、具体的には、スレッドの実行がマルチスレッド・パイプライン式プロセッサのディスパッチ・ステージでストールした時の実行のスレッドの切替およびパイプラインの前のステージからのストールしたスレッドのフラッシュのための改良されたシステムおよび方法に関する。
【0002】
【従来の技術】
コンピュータのハードウェアの観点から、ほとんどのシステムは、基本的に同一の形で動作する。コンピュータ・プロセッサは、実際には、算術演算、論理比較、ある位置から別の位置へのデータの移動など、非常に単純な動作をすばやく実行する。しかし、コンピュータ・システムの新しい機能または改良された機能としてユーザによって知覚されるものは、実際には、同一の単純な動作を超高速で実行する計算機である場合がある。コンピュータ・システムに対する改良の継続は、これらのプロセッサ・システムをさらに高速にすることを必要とする。
【0003】
コンピュータ・システムの総合速度の尺度の1つをスループットとも称するが、これは、単位時間あたりに実行される動作の数として測定される。概念上、システム速度に対するすべての可能な改良のうちで最も単純なものは、さまざまな構成要素のクロック速度、特にプロセッサのクロック速度を高めることである。したがって、すべてが2倍の速度で走行するが、それ以外は正確に同一の形で機能する場合、そのシステムは、所与のタスクを半分の時間で実行することになる。以前に別個の構成要素から構成されていたコンピュータ・プロセッサは、構成要素のサイズの縮小と個数の減少とによって大幅に高速に動作するようになり、最終的には、プロセッサ全体が、単一チップ上の集積回路としてパッケージされるようになった。サイズの縮小によって、プロセッサのクロック速度を高めることが可能になり、したがって、システム速度を高めることが可能になった。
【0004】
集積回路から得られる速度の大幅な向上にもかかわらず、さらに高速のコンピュータ・システムに対する需要がいまだに存在する。ハードウェア設計者は、より大規模の集積、回路のサイズのさらなる縮小および他の技法によって、さらなる速度の向上を得ることができた。しかし、設計者は、物理的なサイズの縮小を際限なく継続することは不可能であり、継続的にプロセッサ・クロック速度を高めることに限界があると考えている。したがって、コンピュータ・システムの総合スループットをさらに改善するために、他の手法に注意が向けられた。
【0005】
クロック速度を変更しなくても、複数のプロセッサを使用することによってシステム速度を改善することが可能である。集積回路チップにパッケージされた個々のプロセッサのコストが適度であるので、これが実用的になった。スレーブ・プロセッサを使用すると、作業を中央処理装置(CPU)からスレーブ・プロセッサにオフロードすることによって、システム速度がかなり改善される。たとえば、スレーブ・プロセッサは、通常は、入出力装置の通信および制御など、反復的で単純な特殊目的プログラムを実行する。複数のCPUを単一のコンピュータ・システム、通常は複数のユーザを同時にサービスするホストベース・システム内に配置することも可能である。異なるCPUのそれぞれが、異なるユーザのために異なるタスクを別々に実行することができ、したがって、複数のタスクを同時に実行するシステムの総合速度が高まる。
【0006】
複数のCPUの間でさまざまな機能の実行および結果の配布を調整することは、注意を要する作業である。スレーブ入出力プロセッサの場合、機能が事前に定義され、制限されているので、これはそれほど困難ではないが、汎用アプリケーション・プログラムを実行する複数のCPUの場合、機能を調整することがはるかに困難になる。システム設計者が、プログラムの詳細を事前に知らないことがしばしばである。ほとんどのアプリケーション・プログラムは、プロセッサによって実行されるステップの単一の経路または流れに従う。この単一の経路を複数の並列経路に分割することが可能である場合もあるが、それを行うための万能のアプリケーションは、まだ研究中である。一般に、複数のプロセッサによる並列処理のために長いタスクを小さいタスクに分割することは、コードを記述するソフトウェア・エンジニアによって、ケースバイケースで行われる。この、その場限りの手法は、必ずしも反復的でなく、予測可能でもない商業トランザクションを実行する場合に特に問題がある。
【0007】
したがって、複数のプロセッサによって総合的なシステム性能は改善されるが、アプリケーション・プログラムなどの単一のタスクが実行される速度を改善することは、はるかに困難である。CPUクロック速度が与えられた場合、1クロック・サイクルあたりに実行される動作の「平均」数を増やすことによって、CPUの速度すなわち1秒あたりに実行される動作の数をさらに増やすことが可能である。高性能単一チップ・マイクロプロセッサのための一般的なアーキテクチャが、高速実行のために頻繁に使用される命令の小さい簡略されたセットを特徴とする縮小命令セット・コンピュータ(RISC)アーキテクチャであり、これらの単純な動作は、前に述べたものより高速に実行される。半導体技術が進歩するにつれて、RISCアーキテクチャの目標は、計算機の各クロック・サイクルに1つまたは複数の命令を実行できるプロセッサの開発になってきた。1クロック・サイクルあたりに実行される動作の「平均」数を増やすためのもう1つの手法が、CPU内のハードウェアを変更することである。この命令あたりのクロック・サイクル数というスループット尺度は、高性能プロセッサのアーキテクチャの特徴を表すのに一般的に使用されている。
【0008】
CDC−6600およびCray−1などの1970年代の高性能ベクトル・プロセッサおよびメインフレーム・コンピュータで開拓されたプロセッサ・アーキテクチャ上の諸概念が、RISCマイクロプロセッサに現れつつある。初期のRISC計算機は、非常に単純な単一チップ・プロセッサであった。超大規模集積回路(VLSI)技術が進歩するにつれて、追加のスペースが半導体チップ上で使用可能になる。プロセッサ・アーキテクチャの複雑さを増やすのではなく、ほとんどの開発者は、追加スペースを使用して単一CPUの実行を改善する技法を実施することを決定した。使用された2つの主要な技法が、オンチップ・キャッシュおよび命令パイプラインである。キャッシュ・メモリには、頻繁に使用されるデータがプロセッサの近くで保管され、キャッシュ・メモリを用いて、ほとんどの場合に、主記憶のフル・アクセス・タイムを待つことなしに、命令実行を継続できるようになる。並列に実行される命令を見つけるために投機的にルック・アヘッドを行うハードウェアを有する複数の実行ユニットを用いるいくつかの改良も実証された。パイプライン命令実行を用いると、前に発行された命令が完了する前に、後続の命令の実行を開始できるようになる。
【0009】
スーパースカラ・プロセッサが、パイプライン・プロセッサの例である。従来のRISCプロセッサの性能を、スーパースカラ・コンピュータおよびVery Long Instruction Word(VLIW)コンピュータでさらに高めることができ、これらの両方が、1プロセッサ・サイクルあたりに複数の命令を並列に実行する。これらのアーキテクチャでは、複数の機能ユニットまたは実行ユニットが、並列に接続されて、複数のパイプラインを稼動させる。その名前から、これらのプロセッサが、各サイクルに複数の命令を実行することのできるスカラ・プロセッサであることが暗示される。スーパースカラ・パイプライン式実行の要素には、キャッシュ・メモリから1時に複数の命令を取り出す命令取出ユニット、命令が独立であり、同時に実行可能であるかどうかを判定する命令デコード・ロジック、および1時に複数の命令を実行するのに十分な数の実行ユニットが含まれる。実行ユニットは、パイプライン式とすることもでき、たとえば、浮動小数点加算器または浮動小数点乗算器が、取出ステージおよびデコード・ステージのサイクル・タイムと一致する、各実行ステージのサイクル・タイムを有することができる。
【0010】
スーパースカラ・アーキテクチャでは、命令は、インオーダー(in−order)またはアウトオブオーダー(out−of−order)で完了することができる。インオーダー完了とは、ある命令の前にディスパッチされたすべての命令が完了するまでは、その命令を完了できないことを意味する。アウトオブオーダー完了とは、事前に定義された規則が満たされる限り、ある命令の前のすべての命令が完了する前に、その命令が完了することを許可されることを意味する。パイプライン・スーパースカラ・プロセッサ内では、命令は、まず取り出され、デコードされ、その後、バッファリングされる。リソースおよびオペランドが使用可能である時に、命令を実行ユニットにディスパッチすることができる。さらに、採用される分岐に関する予測に基づいて、命令を投機的に取り出し、ディスパッチすることができる。その結果が、どれもが最終結果を書き込むことによって完了されていない、さまざまな実行のステージの命令のプールである。リソースが使用可能になり、分岐が解決された時に、命令をプログラム順で「退却」させ、したがって、命令をプログラム順で実行する計算機の外見を保つ。
【0011】
スーパースカラ・プロセッサは、通常は完了バッファを使用して、投機的に実行された命令を追跡または管理する。バッファ内の実行された命令のそれぞれが、一般にリネームされたレジスタおよび例外フラグに保管される結果と関連する。しかし、命令がアウト・オブ・オーダーで実行された時、具体的には、命令の1つがエラー状態に遭遇した時に、問題が生じる。その命令が後続命令および計算機状態に影響する可能性があるので、プロセッサは、エラーを有する命令で停止しなければならない。
【0012】
スーパースカラ・システムでの命令のインオーダー完了およびアウトオブオーダー完了の両方について、これらのパイプラインが、ある情況の下で停止し、ストールする。まだ完了していない、前にディスパッチされた命令の結果に依存する命令が、パイプラインのストールを引き起こす可能性がある。たとえば、必要なデータがキャッシュ内にないすなわちキャッシュ・ミスがあるロード/ストア命令に依存する命令は、そのデータがキャッシュ内で使用可能になるまでは完了することができない。
【0013】
ハードウェア・マルチスレッディングと称するもう1つの技法は、スレッドまたはコンテキストと称する命令のより小さいシーケンスを単一プロセッサ内で独立に実行することである。CPUが、多数の理由のいずれかのために、ストールし、これらのスレッドの1つの処理または実行を継続できない時に、CPUは、別のスレッドに切り替え、そのスレッドを実行する。コンピュータ・アーキテクチャ界で定義される用語「マルチスレッディング」は、1つのタスクを複数の関連するスレッドに分割するというソフトウェアでのこの用語の使用法と同一ではない。ソフトウェア・マルチスレッディングには、実質的に、スレッド切替が発生する前にデータを操作し、レジスタから主記憶に保管し、関係する命令および依存する命令のプログラム順を維持するオペレーティング・システムが伴う。ソフトウェア・マルチスレッディングは、ハードウェア・マルチスレッディングを必要とせず、関係もなく、逆も同様である。ハードウェア・マルチスレッディングでは、ハードウェア設計済みのレジスタおよび実行ユニットとパイプライン式プロセッサを操作して、1つまたは複数の、スレッドと称する命令の独立に実行される組の状態を、プロセッサ・ハードウェア内で維持する。スレッドは、たとえば、マルチタスク・システム内の異なるタスク、ソフトウェア・マルチスレッディング・システムからコンパイルされた異なるスレッド、または異なる入出力プロセッサから、導出することができる。しかし、ハードウェア・マルチスレッディングを、すべてのこれらのシステムと異なる、独自のものにしているのは、複数のスレッドを、プロセッサのレジスタ内で独立に維持することである。
【0014】
ハードウェア・マルチスレッディングは、無数の形態をとることができる。マルチスレッディングによって、プロセッサが、プロセッサのレジスタ内で複数のスレッドに対して有用な作業を行うために非パイプライン・アーキテクチャまたはパイプライン式アーキテクチャのいずれかを有することができるようになる。粗粒度マルチスレッディングと称する場合もあるマルチスレッディングの1形態は、実行中のスレッドが、メモリからのデータまたは命令の取出、またはプロセッサ割込みなどの、長い待ち時間のイベントを経験するまで、1つのスレッドを実行することである。その一方で、細粒度マルチスレッディングでは、サイクル単位でスレッドをインターリーブするか切り替える。同時ハードウェア・マルチスレッディングでは、プロセッサ内でN個のスレッドまたはN個の状態が並列に維持され、同時にN個のスレッドが並列に実行される。N個のスレッドのそれぞれについてプロセッサ・レジスタを複製することによって、下記のレジスタの一部がN回複製される結果になる:汎用レジスタ、浮動小数点レジスタ、条件レジスタ、浮動小数点状況および制御レジスタ、カウント・レジスタ、リンク・レジスタ、例外レジスタ、保管/復元レジスタ、特殊目的レジスタなど。セグメント・ルックアサイド・バッファなどの特殊なバッファを、複製することができるが、複製されない場合には、各項目に、スレッド番号を用いてタグを付け、スレッド切替のたびにフラッシュすることができる。また、たとえば相関レジスタおよびリターン・スタックなどの一部の分岐予測機構も、複製することができる。マルチスレッディングは、特定の属性のための特定の機能をとりあげ、選択することによって、1つまたはすべての形態の特徴を有することもでき、たとえば、プロセッサの特徴のすべてをスレッドごとに複製する必要はなく、いくつかの共用されるレジスタといくつかの複製されるレジスタを有することができ、パイプライン内にいくつかの別々の並列ステージを有することができ、パイプラインの他の共用されるステージを有することができる。幸い、レベル1命令キャッシュ、レベル1データ・キャッシュ、命令バッファ、ストア・キュー、命令ディスパッチャ、機能ユニットまたは実行ユニット、パイプライン、変換索引緩衝機構(TLB)、および分岐ヒストリ・テーブルなどの、プロセッサのより大きい機能の一部を複製する必要はない。しかし、別のキューまたは私用キューもしくは他のリソースがあり、プロセッサがいくつかの共用されるパイプライン・ステージを有する時に、問題が存在し、したがって、共用されるステージで命令がストールする時に、そのスレッドがその共用されるステージでストールするだけではなく、その共用されるステージ内またはそのステージの後の他のスレッドも、ストールし、実行できなくなる。
【0015】
【発明が解決しようとする課題】
したがって、マルチスレッド・プロセッサの共用されるパイプライン・ステージおよびその前のパイプライン・ステージ内のストールしたスレッドを効率的にフラッシュすることによって、同時マルチスレッディングを機能強化する必要が、当業界に存在する。
【0016】
【課題を解決するための手段】
これらの必要および当業者に明白になる他の必要は、マルチスレッド式コンピュータ・プロセッサのプロセッサ・パイプライン内で複数のスレッドの1つをフラッシュする方法であって、(a)少なくとも1つの共用されるパイプライン・ステージを有するマルチスレッド・プロセッサ内での同時処理のために複数のスレッドを取り出すステップと、(b)共用されるパイプライン・ステージ内でストールした命令を認識するステップであって、ストールした命令が、プロセッサ・パイプラインに存在する少なくとも2つのスレッドのそれ以上の処理を妨げ、ストールした命令がプロセッサ・パイプラインに存在するスレッドの1つに属するステップと、(c)共用されるパイプライン・ステージおよび共用されるパイプライン・ステージの前のプロセッサ・パイプライン内のすべてのステージから、ストールした命令を有する1つのスレッドのすべての命令をフラッシュするステップと、(d)プロセッサ・パイプライン内のもう1つのスレッドを処理するステップとを含む方法によって満足される。ストールした命令は、ストールしたスレッドが必要とする私用リソースがブロックされているのでストールした可能性がある。命令は、ストールした命令が必要とする非リネームド・レジスタがブロックされているのでストールした可能性がある。ストールした命令は、同期化されたロード動作/ストレージ動作を必要とする命令であり、その動作が遅延された可能性がある。ストールした命令は、マイクロコード化された命令のグループの最初の命令である可能性がある。
【0017】
この方法には、さらに、ストールした命令を有するスレッドに関連する他の命令が、他の関連するフラッシュ条件を有するかどうかを判定するステップを含めることができる。この方法には、さらに、複数のスレッドの1つのストールした命令または関連するフラッシュ条件を有する他の命令を、まずフラッシュしなければならないかどうかを判定するステップと、他の命令の方が古いので、関連するフラッシュ条件に従って、関連するフラッシュ条件を有する他の命令をまずフラッシュするステップとを含めることができる。
【0018】
この方法には、共用されるパイプライン・ステージがディスパッチ・ステージであることも含まれる。これらの情況の下で、この方法に、ストールした命令に関連するスレッドの命令をデコード・パイプラインから除去するステップも含めることができる。この方法には、ストールした命令に関連するスレッドの命令を命令バッファから除去するステップも含めることができる。この方法には、命令がディスパッチ・ステージおよびディスパッチ・ステージの前のプロセッサ・パイプライン内のすべてのステージからフラッシュされたスレッドを再始動するステップも含めることができる。再始動のステップは、ストールした命令をディスパッチ・ステージでストールさせた条件が解決されるまで遅延することができる。フラッシュされたスレッドを再始動するステップは、複数のプロセッサ・サイクルが過ぎるまで遅延することもできる。
【0019】
本発明は、さらに、ハードウェア・マルチスレッド・パイプライン・プロセッサ内のディスパッチ・フラッシュ機構であって、パイプライン・プロセッサが、複数のスレッドを同時に処理し、ディスパッチ・フラッシュ機構が、パイプライン・プロセッサの取出ステージと、取出ステージに接続されたパイプライン・プロセッサのデコード・ステージと、デコード・ステージに接続されたパイプライン・プロセッサのディスパッチ・ステージと、パイプライン・プロセッサの取出ステージ、デコード・ステージ、およびディスパッチ・ステージに接続されたフラッシュ優先順位付けロジックと、ディスパッチ・ステージに接続されたパイプライン・プロセッサの発行キューと、発行キューに接続されたスレッドのそれぞれに専用の複数の私用リソースと、パイプライン・プロセッサ内のスレッド選択ロジックとを含み、複数のスレッドの1つの複数の命令の1つが、複数の私用リソースの1つが使用不能なので発行キューにディスパッチされず、スレッド選択ロジックが、複数のスレッドの1つに属する、ディスパッチ・ステージ、デコード・ステージ、および取出ステージのすべての命令を選択し、フラッシュ優先順位付けロジックが、すべての命令を除去する信号を発行する、ディスパッチ・フラッシュ機構と見なすことができる。
【0020】
本発明は、プロセッサ効率を高める装置であって、複数のスレッドからハードウェア・マルチスレッド式パイプライン・プロセッサに命令を取り出す手段と、命令を複数のスレッドの1つに区別する手段と、命令をデコードする手段と、命令が、命令のディスパッチに十分な私用リソースおよび共用されるリソースを有するかどうかを判定する手段と、命令をディスパッチする手段と、判定手段が、複数のスレッドの内の1つのスレッドの命令の1つが、ディスパッチ手段が命令をディスパッチするのに十分な私用リソースを有しないと判定する時に、複数のスレッドの1つの命令のすべてを、取出手段、デコード手段、およびディスパッチ手段から除去する手段とを含む、プロセッサ効率を高める装置とも見なされる。
【0021】
本発明は、コンピュータ処理システムであって、中央処理装置と、中央処理装置に接続された半導体メモリ・ユニットと、取外し可能メモリを有することができる少なくとも1つのメモリ・ドライブと、ユーザがコンピュータ処理システムと対話するためのキーボードまたはポインティング・デバイスもしくはその両方への接続のために中央処理装置に接続されるキーボード/ポインティング・デバイス・コントローラと、他のコンピュータ、ネットワーク、周辺装置、およびディスプレイ装置との通信のために少なくとも1つの入出力装置に接続するために中央処理装置に接続される複数のアダプタと、少なくとも2つの独立の実行のスレッドを処理するための、中央処理装置内のハードウェア・マルチスレッディング・パイプライン式プロセッサであって、取出ステージ、デコード・ステージ、およびディスパッチ・ステージを含むハードウェア・マルチスレッディング・パイプライン式プロセッサと、ディスパッチ・ステージでスレッドの1つの命令によって要求されるリソースが使用不能であり、したがって、命令がディスパッチ・ステージでストールする時を検出する命令ストール検出器と、ストールした命令を有するスレッドが前のフラッシュ条件を有するかどうかを判定するフラッシュ・デコード・ロジックと、他の前のフラッシュ条件が存在しない場合、または前のフラッシュ条件がストールした命令より低い優先順位を有し、その結果、プロセッサが、プロセッサ・パイプライン内のもう1つの独立の実行のスレッドを処理することができる場合に、取出ステージ、デコード・ステージ、およびディスパッチ・ステージからストールした命令を有するスレッドをフラッシュするディスパッチ・フラッシュ機構とを含むコンピュータ処理システムでもある。
【0022】
【発明の実施の形態】
ここで図面を参照すると、図では、同様の符号が図面全体を通じて同一または類似の要素を指すが、図1を参照すると、処理装置112の主要な構成要素のブロック図が示されており、中央処理装置(CPU)126が、システム・バス134を介してRAM158、ディスケット・ドライブ122、ハード・ディスク123、CDドライブ124、キーボード/ポインティング・デバイス・コントローラ184、パラレル・ポート・アダプタ176、ネットワーク・アダプタ185、ディスプレイ・アダプタ170、およびメディア通信インターフェース187に接続される。システム・バス134は、異なる装置の間でのデータ、コマンド、および他の情報の転送をサポートし、単一のバスとして簡略化された形で図示されているが、通常は、複数のバスとして構成され、階層的な形で配置することができる。
【0023】
CPU126は、RAM158に保管された命令を実行する、汎用プログラム可能マルチスレッド・プロセッサである。マルチスレッド機能を有する単一のCPUが図1に示されているが、いくつかがマルチスレッド機能を有しないものとすることができる複数のCPUを有するコンピュータ・システムが、サーバで一般的であり、1つのCPUがマルチスレッディング機能を有する限り、本発明の原理に従って使用できることを理解されたい。図1の他のさまざまな構成要素は、単一の実体として図示されているが、これらのそれぞれが、複数の実体からなり、複数のレベルに存在することも一般的である。CPU126には、適当なマルチスレッド・プロセッサのどれであっても使用することができるが、マルチスレッディング性能を有するIBM社から入手可能なPowerPC系列のマイクロプロセッサの1つであることが好ましい。CPU126は、揮発性のランダム・アクセス・メモリであるRAM158との間でデータおよび命令にアクセスし、これらを保管する。CPUは、図面の流れ図で詳細に説明される好ましい実施形態を実行するようにプログラムされることが好ましい。
【0024】
RAM158は、データおよびプログラムを保管するランダム・アクセス半導体メモリ(RAM)であり、概念上単一のモノリシックな実体として図示されているが、メモリは、しばしばキャッシュおよび他のメモリ・デバイスの階層に配置されることを理解されたい。RAM158には、通常は、電力が処理装置112に供給されている間にオペレーティング・システムおよびアプリケーション・ソフトウェアのセグメントを記憶する複数の個々の揮発性メモリ・モジュールが含まれる。ソフトウェア・セグメントは、1つまたは複数の仮想メモリ・ページに区分することができ、各仮想メモリ・ページに、均一な数の仮想メモリ・アドレスが含まれる。ソフトウェアの実行が、RAM158内に記憶できるもの以上の仮想メモリのページを必要とする時には、現在必要ではないページが、必要なページとスワップされ、そのページは、不揮発性記憶装置であるディスケット・ドライブ122、ハード・ディスク123、またはCDドライブ124に保管される。他のタイプのデータ記憶装置を使用することができるが、ハード・ディスク123およびCDドライブ124に、1つまたは複数の回転式磁気ハード・ディスク・ドライブ装置または光学ハード・ディスク・ドライブ装置が含まれることが好ましい。
【0025】
キーボード/ポインティング・デバイス・コントローラ184は、処理装置112をキーボードおよびグラフィカル・ポインティング・デバイスにインターフェースする。代替実施形態では、キーボード用とグラフィカル・ポインティング・デバイス用の別々のコントローラを設けることができる。ディスプレイ・アダプタ170は、CPU126からのグラフィックス・データを、ディスプレイ装置の駆動に使用されるビデオ信号に変換する。ディスプレイ・アダプタ170は、単一または複数の端末の接続をサポートすることができ、1つまたは複数の電子回路カードまたは他のユニットとして実施することができる。
【0026】
処理装置112には、ネットワーク・アダプタ185、メディア通信インターフェース187、およびパラレル・ポート・アダプタ176を含めることができ、これらのすべてが、処理装置112と周辺装置または他のデータ処理システムとの間の通信を促進する。パラレル・ポート・アダプタ176は、パラレル・ポートを介してプリンタにプリンタ制御信号を送ることができる。ネットワーク・アダプタ185は、処理装置112をローカル・エリア・ネットワーク(LAN)に接続することができる。LANは、処理装置112のユーザに、ソフトウェアを含む情報を、リモート・コンピュータまたはネットワーク論理記憶装置と電子的に通信する手段を提供する。さらに、LANは、分散処理をサポートし、これによって、処理装置112が、LANにリンクされた他のデータ処理システムとタスクを共用することが可能になる。たとえば、処理装置112を、イーサネット(R)、トークン・リング、または他のプロトコルを使用するLANを介してローカル・サーバ・コンピュータ・システムに接続することができ、そのサーバが、インターネットに接続される。メディア通信インターフェース187には、電話回線に接続されたモデムを含めることができ、これを介して、インターネット・アクセス・プロバイダまたはオンライン・サービス・プロバイダに到達する。しかし、ますます、他のより高帯域幅のインターフェースが実施され、したがって、メディア通信インターフェース187は、ケーブル・テレビジョン、無線通信、または高帯域幅通信回線および他のタイプの接続とインターフェースすることもできる。オンライン・サービスは、メディア通信インターフェース187を介して処理装置112にダウンロードできるソフトウェアを提供することができる。さらに、メディア通信インターフェース187を介して、処理装置112は、サーバ、電子メール、または電子掲示板、およびインターネットまたはワールド・ワイド・ウェブなどの他のソフトウェアの供給源にアクセスすることができる。
【0027】
図2および図3には、本発明の好ましい実施形態によるマルチスレッド・コンピュータ・プロセッサ・アーキテクチャ210が示されている。図示されているのは、米国特許出願第108160号明細書、米国特許出願第213323号明細書、米国特許出願第213331号明細書、米国特許出願第332413号明細書、および米国特許出願第434095号明細書で開示されているものなどのアウトオブオーダー・パイプライン式プロセッサである。
【0028】
上の特許出願に開示されたプロセッサは、同時ハードウェア・マルチスレッディング動作を可能にするために、下で説明するように変更された。本発明の文脈でのマルチスレッディング動作は、命令のシーケンスすなわちスレッドが、他のスレッドから独立に実行され、ハードウェア設計済みレジスタ、実行ユニット、およびパイプライン式プロセッサが、スレッドと称する1つまたは複数の独立に実行される命令の組の状態をプロセッサ・ハードウェア内で維持する、ハードウェア・マルチスレッディングを意味する。同時マルチスレッディングでは、複数のスレッドが、プロセッサのパイプライン内で同時にアクティブになる。したがって、プロセッサのパイプラインは、あるスレッドについてパイプライン・ストール条件が検出される時に、異なるスレッドに対して有用な作業を実行することができる。さらに、本発明の1実施形態を、1時に2つのスレッドだけがプロセッサのパイプライン内およびレジスタ内にあるデュアル・マルチスレッディング動作に関して説明するが、本発明のディスパッチ・フラッシュ機能の原理および文脈は、プロセッサのパイプラインの異なるステージ内および設計済みレジスタ内に3つ以上のスレッドを有することに適する。さらに、当業者は、上記特許出願に記載のアウトオブオーダー実行またはレジスタおよびキューの特定の組を有しないマルチスレッド・パイプライン式プロセッサ・アーキテクチャも、本発明のディスパッチ・フラッシュ機構を利用できることを諒解するであろう。
【0029】
図2および図3のマルチスレッド・パイプライン・プロセッサのブロック図は、非常に簡略化されており、さまざまな要素の間の多数の接続および制御信号線が、本発明の原理によるディスパッチ・フラッシュ機能の理解を容易にするために省略されている。図2および3を参照すると、図の上部中央に命令キャッシュ214があり、パイプライン内のスレッドの命令が、L2キャッシュまたは主記憶212から命令キャッシュ214に取り出される。L2キャッシュまたは主記憶212は、単一のユニットとして簡略化されているが、実際には、これらは、システム・バスによってそれぞれから分離されており、L2キャッシュと主記憶の間またはL2キャッシュと命令キャッシュ214の間に中間キャッシュがある場合がある。アドレス追跡および命令キャッシュ214への制御は、1スレッドごとに少なくとも1つのアドレス、おそらくは複数のアドレスを有する命令取出アドレス・レジスタ270によって供給される。スレッド選択280aを、特定のアドレスに関係する特定のスレッドの選択のために、命令取出アドレス・レジスタ270と命令キャッシュ214の間に入れることができる。命令キャッシュ214から、命令は、命令バッファ216に転送され、命令バッファ216では、分岐条件の評価が、分岐予測ロジック276と共に行われる。命令バッファ216は、フラッシュ優先順位付けロジック260からの入力制御信号も受け取って、本発明のディスパッチ・フラッシュ機能に従ってフラッシュされるスレッドに関連する命令が存在する場合に、どの命令がそれであるかを判定する。命令バッファ216の好ましい実施形態では、各スレッドの命令が、他のスレッドの命令から区別可能である。第2のスレッド選択280bが、デコード・ユニット218に出力される特定のスレッドの命令を選択することができる。本発明のディスパッチ・フラッシュ機能に従って、命令が、命令バッファ216からフラッシュされ、フラッシュされた命令に関連する分岐予測ロジック276内のすべての条件および命令取出アドレス・レジスタ270内のアドレスも、フラッシュされる。
【0030】
デコード・ユニット218は、その機能を完了するのに複数のサイクルを必要とする場合があり、したがって、複数のパイプライン・ステージ218a、218bなどを有する場合がある。各パイプライン・ステージ218aおよび218bが、別個のスレッドを有することが好ましい。デコード・ユニット218内では、後続のプロセッサ・パイプライン・ステージによる処理を簡単にするために、複雑な命令を簡略化するか異なる形で表現することができる。デコード・ユニット218内で発生する可能性がある他のイベントには、命令フィールド内のビットの再シャフリングまたは拡張、たとえば分岐予測または命令グループ作成のための、さまざまなフィールドからの情報の抽出が含まれる。load multiple命令またはstore multiple命令などの一部の命令は、非常に複雑であり、命令を、一連の、マイクロコードと称するより単純な動作または命令に分割することによって、より多く処理される。デコード中に、これらの複雑な命令が、マイクロコードにデコードされ、複雑な命令を含むより単純な命令のすべてが、グループとして追跡される。デコード・ユニット218は、フラッシュ優先順位付けロジック260から制御信号を受け取って、同一のスレッドの複数のフラッシュがパイプラインの異なるステージで示される場合に、どこでフラッシュを行うかを判定する。本発明のディスパッチ・フラッシュ機能によれば、下で説明するように、ストールしたスレッドに関連する命令が、デコード・ユニット218からフラッシュされる。
【0031】
デコード・ユニット218から、命令が、ディスパッチ・ユニット220に転送される。ディスパッチ・ユニット220は、参照された特許出願によるディスパッチ制御240から、およびフラッシュ優先順位付けロジック260から、制御信号を受け取ることができる。プロセッサ・パイプラインのディスパッチ・ユニット220では、すべてのリソース、キュー、およびリネームド・プールを検査して、それらがディスパッチ・ユニット220内の命令のために使用可能であるかどうかを判定する。異なる命令は、異なる要件を有し、命令をディスパッチ・ユニット220を超えてディスパッチする前に、これらの要件のすべてを満たさなければならない。ディスパッチ制御240およびディスパッチ・ユニット220は、マイクロコード化された命令または、上で説明したように複数のより単純な命令にデコードされた他の複雑な命令のディスパッチを制御する。1実施形態のプロセッサ・パイプラインは、通常は、マイクロコード化された命令グループの途中でディスパッチせず、マイクロコードの最初の命令を、成功裡にディスパッチしなければならず、後続の命令は、順番にディスパッチされる。本発明のマルチスレッド実施形態では、所与のプロセッサ・クロック・サイクル中に、1つのスレッドだけからの命令が、ディスパッチ・ユニット220から発行キュー222にディスパッチされると仮定することができる。本発明のディスパッチ・フラッシュ機構によれば、ストールしたスレッドの命令は、ディスパッチ・ユニット220からフラッシュされる。
【0032】
ディスパッチ・ユニット220から、命令は、発行キュー222に入る。複数の発行キュー222aおよび222bを設けることができ、アーキテクチャの選択に応じて、発行キュー222aおよび222bのそれぞれに複数のスレッドが存在するか、スレッドごと1つの発行キューがあるものとすることができる。発行キュー222は、完了制御ロジック236から、ディスパッチ制御240から、および、非リネームド・レジスタ追跡機構242、ロード・リオーダ・キュー(LRQ)244、ストア・リオーダ・キュー(SRQ)246、グローバル完了テーブル(GCT)248、およびリネームド・プール250を含めることができるがこれに制限されないさまざまなキューの組合せから、制御信号を受け取ることができる。LRQ244、SRQ246、またはGCT248は、スレッドの間で分割することができ、スレッドの間で共用することができ、別々のリソースまたは共用されるリソースに関して下で説明するように、スレッドごとに別のキューが存在することができる。追跡について、命令の順序を維持するために、命令をGCT248内で単独でまたはグループで追跡することができる。LRQ244およびSRQ246は、それぞれロード命令およびストア命令の順序を維持することができ、プログラム順に関するアドレスを維持することができる。非リネームド・レジスタ追跡機構242は、特殊目的レジスタなどのレジスタ内の命令を追跡することができる。命令は、もう1つのマシン・サイクルに、指定された実行ユニットにディスパッチされ、この実行ユニットは、1つまたは複数の条件レジスタ・ユニット224、分岐ユニット226、固定小数点ユニット228、浮動小数点ユニット230、または、データ・キャッシュ234との間でデータをロードまたはストアするロード/ストア・ユニット232とすることができる。
【0033】
命令の実行の成功裡の完了、または、その一方での、誤予測された分岐または実行ユニット内で発生した可能性があるエラーの通知は、完了制御ロジック236に転送され、この完了制御ロジック236は、flush/refetch(フラッシュ/再取出)信号238を生成し、フラッシュ優先順位付けロジック260、複数のキューのいずれか、非リネームド・レジスタ追跡機構242、LRQ244、SRQ246、GCT248、またはリネームド・プール250に送る。
【0034】
命令がディスパッチ・ユニット220でストールする理由には、満杯または他の理由で命令に使用不能であるなど、命令追跡キューがブロックされている、同期命令を実行できない、満杯または他の理由で使用不能であるなど、命令が必要とするリソースがブロックされている、非リネームド・レジスタとの間でのスレッド状態の移動などが含まれる。専用のLRQ244または専用のSRQ246または専用のGCT248のいずれかがブロックされている場合には、これらのキューの後でパイプラインがストールする。使用可能なリネームド・プール250が不十分である場合には、パイプラインがストールする。あるプロセスが、データまたはリネームされない必要なリソースに対して直列化される、たとえば、Q1がQ2の前に発生しなければならない場合に、非リネームド・レジスタもプロセッサ・パイプラインをストールさせることができる。場合によっては、発行キュー222が満杯または進行のためにオペランドを待っており、パイプラインがストールする。複数の命令または複雑な命令から導出されたグループのより単純な命令の1つが、ディスパッチ・ステージでストールする可能性がある。同期命令またはアウトオブオーダー・プロセッサ内で記憶を同期化させる他の命令が、追加の情報を必要とするので、または、LRQ244またはSRQ246をクリアするなどのそれ自体のスレッドのダウンストリーム・アクティビティが原因でディスパッチ・ステージで待たなければならないので、パイプラインをストールさせる可能性がある。本発明のディスパッチ・フラッシュ態様は、ストールを引き起こす条件がスレッドに固有である時の、ディスパッチでプロセッサのパイプラインをストールさせるすべての条件に適用される。
【0035】
スレッドに関して、私用リソースまたは別のリソース、または共用されるリソースが存在する可能性がある。私用リソースの一部が、特定のスレッドの排他的使用に専用のレジスタまたはキューである。スレッドごとに1つのキューが存在するか、各キューを分割してスレッドごとに予約済みのスペースを有することができる。私用リソースの例には、非リネームド・レジスタ追跡機構242、発行キュー222、LRQ244、SRQ246、GCT248、およびリネームド・プール250を含めることができる。私用リソースは、異なるスレッドからのポインタが、異なるデータ構造をアドレッシングし、チップの異なる部分でのキューの有利な配置を可能にするという点で、管理を単純にする。いくつかの特殊目的レジスタなどのいくつかの設計済み非リネームド・レジスタに関する命令の正しい順序付けを保証するための方法の1つが、命令をディスパッチ・ステージでストールさせて、ストールした命令が後に必要とするデータを前の命令が非リネームド・レジスタに書き込むのを待つことである。いくつかの実施形態では、複数の非リネームド・レジスタの読取/書込を単一の実体として追跡することを選択することができる。この場合には、非リネームド・レジスタ追跡機構242を、私用リソースとみなすことが好ましい。同様に、パイプライン内のそれ自体スレッドのダウンストリームのアクティビティを待っているのでディスパッチ・ユニット220でストールした時の特定のスレッドの同期命令も、私用リソースとみなすことができる。
【0036】
しかし、その一方で、別のデータ構造は、さまざまなレジスタに関する必要が動的であるのに構造間の区分が固定されているので、共用される構造ほど効率的ではない。したがって、本発明では、さらに、データ構造およびレジスタを、共用されるリソースとして設計することもできるようにすることが企図されている。共用されるリソースとは、別々にまたは同時にのいずれかでスレッドによって共用することができるプロセッサ・レジスタおよびキューである。情況によっては、非リネームド・レジスタ追跡機構242、LRQ244、SRQ246、GCT248、リネームド・プール250、および発行キュー222を、スレッドの間で共用することができる。一部のリソースを共用し、それ以外のリソースを私用にすることができ、たとえば、GCT248を共用し、LRQ244およびSRQ246を私用にすることができる。
【0037】
本発明の好ましい実施形態によれば、私用リソースおよび「ディスパッチ・フラッシュ」と称する新しい機構を使用することによって、共用されるキューの場合に対してチップ面積を増やさずに、共用されるキュー構造に類似する性能の利益がもたらされる。命令がストールし、私用リソースがブロックされているのでその命令がパイプラインの先に進行できないことと、その命令がそのリソースにアクセスできないことが示される時に、必ず、その命令を有するスレッドのディスパッチ・フラッシュが、本発明に従って行われる。ディスパッチ・フラッシュは、ディスパッチ・ユニット220でストールした命令を有するスレッドを、パイプラインの命令取出部分およびデコード部分と、ディスパッチ・ユニット220を含めてそこまでのプロセッサのパイプラインの他のすべての部分からフラッシュさせる。フラッシュ制御信号262が、dispatch flush(ディスパッチ・フラッシュ)および通常のflush/refetch信号238の両方に、特定のスレッドの命令をディスパッチ・ユニット220およびその前のパイプライン・ステージからフラッシュさせる。しかし、dispatch flushによって、他のスレッドが進行できるようになり、通常のflush/refetchと異なって、発行キュー222内での命令の継続実行が可能になる。本発明のフラッシュ機能が、バイパス・キューまたは他のバイパス機構を備えないパイプライン内でスレッドの間で共用されるマルチスレッド・パイプライン・プロセス内のすべてのステージに適用されることを、当業者は理解するであろう。共用されるステージが、好ましい実施形態でディスパッチ・ステージであることは、例としてのみ解釈されなければならず、制限とみなしてはならない。
【0038】
しかし、レジスタ・リネームド・プールが満杯または他の理由でブロックされているなど、共用されるリソースが原因でスレッドがストールした場合には、ディスパッチ・フラッシュは実行されない。これらの情況の下では、すべてのスレッドがブロックされ、通常のフラッシュが行われるか、ストール条件が解決されるまでプロセッサが待機するかのいずれかなる。ストールした命令が、デコードされた複数の命令または複雑な命令から生成された命令のグループの命令であるが、ストールした命令がグループの最初の命令でない時には、ディスパッチ・フラッシュは実行されない。
【0039】
図4および図5は、ディスパッチ制御240内で実施されることが好ましい、ディスパッチ・フラッシュ機構および方法の簡略化された流れ図である。ステップ310で、命令がディスパッチ・ユニット220内にあり、ステップ312で、ディスパッチの必要条件が検査される。これらの必要条件の1つが、ステップ314にさらに示されており、ステップ314では、すべての必要な私用リソースが使用可能であるかどうかが判定される。図2および図3のプロセッサ・アーキテクチャでは、これらの私用リソースに、専用のまたは分離されたLRQ244、専用のまたは分離されたSRQ246、専用のまたは分離されたGCT248、またはスレッドに一意に割り振られる他のレジスタおよびリソースを含めることができる。私用リソースが使用可能である場合には、ステップ316で、計算機の状態を問い合わせて、同期命令がブロックされているかどうかを判定する。同期命令がブロックされていない場合には、ステップ318で、ディスパッチ制御240が、特殊目的レジスタまたは他の頻繁には使用されないレジスタなどの非リネームド・レジスタがブロックされているかどうかを調べる。
【0040】
しかし、ステップ314で私用リソースまたは専用リソースが使用可能でない場合、またはステップ316で同期命令がブロックされている場合、またはステップ318で特殊目的レジスタまたは他の非リネームド・レジスタがブロックされている場合には、この処理は、ストール条件が存在するかどうかを判定する。その場合に、この処理は、ステップ322で、ストールした命令がマイクロコードの1つであるかどうかを問い合わせる。そうである場合には、好ましくは、ステップ332で他のディスパッチ・フラッシュ条件をフラッシュ優先順位付けロジック260内で評価する前に、ステップ324で、その命令がマイクロコード化された命令または複数の命令のグループの最初の命令でなければならない。しかし、ステップ322および324の判定で、命令が、マイクロコードの一部であるが、グループの先頭ではない場合には、ステップ326で、プロセッサ・パイプラインがディスパッチ・ステージでストールする。
【0041】
プロセッサのハードウェア・アーキテクチャが必要とするすべての私用リソースが使用可能であり、ステップ320で、共用されるキューなどのすべての他の条件によって、命令が実行の準備ができていると判定される場合には、ステップ338で、命令を発行キューにディスパッチする。しかし、上の条件のどれかが満足されない、すなわち、私用リソースが使用可能でない(ステップ314)か、同期命令がブロックされている(ステップ316)か、非リネームド・レジスタがブロックされている(ステップ318)か、別の条件が満足されない(ステップ320)場合には、ストール条件が存在し、その条件自体が解決されるまで、スレッドのそれ以上の実行が、ステップ326でブロックされる。
【0042】
フラッシュ優先順位付けロジック260は、ステップ332で、flush/refetch信号、分岐誤予測、または他の設計済みフラッシュ機構などの他のフラッシュ条件が、ストールした命令を有するスレッドについてイネーブルされているかどうかを判定する。他のフラッシュ条件が存在する場合には、ステップ334で、フラッシュ優先順位付けロジック260による優先順位付けも加えて、同一のスレッドの前の命令について他のフラッシュ条件が存在するかどうかを判定する。そのスレッドを保留したもう1つのフラッシュ条件がある場合には、ステップ336で、フラッシュ条件について確立された優先順位方式に従って、同一のスレッドの命令をフラッシュする。ステップ334で、前の命令がフラッシュ条件を有しない場合、または、他の優先順位方式から、同一のスレッドの別の命令が優先順位を有しないと判定される場合、または、ステップ332でスレッドに関連する他のフラッシュ条件がない場合には、ステップ330のディスパッチ・フラッシュを実行する。
【0043】
前に述べたように、ディスパッチ・フラッシュでは、ストールした命令および同一スレッドの後続命令が、ディスパッチ・ステージ、および、プロセッサのパイプラインの前のステージからのすべてのレジスタとプロセッサ・ステージから、除去またはフラッシュされる。たとえば、ストールしたスレッドの命令および後続命令が、ディスパッチ・ユニット220、デコード・ユニット218、命令バッファ216、および分岐予測ロジック276から除去され、アドレスが、命令取出アドレス・レジスタ270からクリアされる。そのスレッドは、フラッシュされた最も古い命令の位置から再取出されなければならず、命令取出アドレス・レジスタ内のアドレス、分岐予測レジスタ内のアドレス、およびそのスレッドの他の関連する設計済みレジスタの状態が、復元されなければならない。
【0044】
スレッドは、ディスパッチ・フラッシュされ、復元された後に、通常通りにパイプラインに再入する。そのスレッドが、ディスパッチ・ブロックまたは異なるブロックにもう一度遭遇する場合には、ディスパッチ・フラッシュをもう一度行うことができる。同期命令、L2キャッシュ・ミス、またはスレッドの他の長い待ち時間イベントによって引き起こされるディスパッチ・ブロックは、長時間存続する可能性があり、したがって、ストールしたスレッドの再始動を遅延させることができ、これによって、他のスレッドにより多くのサイクルが与えられる。どの場合でも、たとえばストールした条件自体が解決されるまで、または所定の数のマシン・サイクルが過ぎるまで、スレッド選択280aおよび280bでストールしたスレッドをもう一度取り出すかデコードすることをしないことが好ましい。
【0045】
下の表で、ディスパッチ・フラッシュ機能の使用と共に分離されたキューまたは私用キューを有する同時マルチスレッド(SMT)プロセッサで得られる性能を比較する。
【0046】
【表1】
Figure 0003548132
【0047】
最初のケースでは、共用されるキューを用い、単一スレッド式設計に対して2スレッドを用いて35%の性能向上がある。面積コストは、L2キャッシュおよびL3キャッシュを除いたプロセッサ・コアの10%である。キューが、スレッド間で単純に分割され、その結果、面積が一定に保たれる場合には、キューの柔軟でない区分のために性能が劇的に低下する。元の性能向上は、より大きいキューを用いて達成することができるが、面積が増加する。より多くのキュー項目によって、スレッドを識別するデータ構造にいくつかのビットが追加されるが、線形より大きい面積増加がもたらされる。ディスパッチ・フラッシュを追加することによって、性能が適度に高くなるが、重要なことに、コア面積が大幅に減少する。
【0048】
不正な分岐予測からの回復に使用されるものなどの既存のフラッシュ機構とは異なって、ディスパッチ・フラッシュでは、ストールしたスレッドが、発行キューに入らなくなり、したがって、フラッシュしなければならないリソースが減り、回復が高速になる。ディスパッチ・フラッシュとは異なって、所与の分岐命令に対して、分岐では、ターゲットが予測され、ターゲットが取り出されて、デコード・パイプライン内の次の命令になる。したがって、分岐命令および予測された命令は、結局は発行キューにパイプライン化される。しかし、分岐が実行され、誤った経路であると判定されたので、信号が生成され、GCTまたは他の命令追跡キューに送られ、その結果、グループ全体のすべての命令がフラッシュされる、すなわち、発行キュー、LRQ、SRQ、GCTまたは他の命令追跡および完了テーブル、リネームド・プール、命令バッファ、デコード・パイプライン、およびディスパッチ・パイプラインの、そのスレッドに関連するすべての命令が、フラッシュされ、新しい命令が取り出される。ディスパッチ・フラッシュと通常のフラッシュのもう1つの相違は、ディスパッチ・ステージの命令が、GCT項目を有しておらず、したがって、GCTをフラッシュする必要がないことである。さらに、ディスパッチ・フラッシュは、パイプラインの取出/デコード/ディスパッチ部分だけがフラッシュされるという点で、より安価である。
【0049】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0050】
(1)マルチスレッド・コンピュータ・プロセッサのプロセッサ・パイプライン内の複数のスレッドの1つをフラッシュする方法であって、
(a)前記マルチスレッド・コンピュータ・プロセッサ内での同時処理のために前記複数のスレッドを取り出すステップであって、前記マルチスレッド・コンピュータ・プロセッサが、少なくとも1つの共用されるパイプライン・ステージを有するステップと、
(b)前記共用されるパイプライン・ステージ内でストールした命令を認識するステップであって、前記ストールした命令が、前記共用されるパイプライン・ステージの前の前記プロセッサ・パイプラインに存在する少なくとも2つのスレッドのそれ以上の処理を妨げ、前記ストールした命令が前記少なくとも2つのスレッドの1つに属するステップと、
(c)前記共用されるパイプライン・ステージおよび前記共用されるパイプライン・ステージの前の前記プロセッサ・パイプライン内のすべてのステージから、前記少なくとも2つのスレッドの前記1つのすべての命令をフラッシュするステップと、
(d)前記プロセッサ・パイプライン内の前記少なくとも2つのスレッドのもう1つを処理するステップと
を含む方法。
(2)前記ストールした命令が、複数のスレッドの前記1つによって要求される私用リソースがブロックされるのでストールする、上記(1)に記載の方法。
(3)前記ストールした命令が、前記ストールした命令によって要求される非リネームド・レジスタがブロックされるのでストールする、上記(1)に記載の方法。
(4)前記ストールした命令が、同期化されたロード/ストア動作を必要とする命令であり、前記動作が遅延される、上記(1)に記載の方法。
(5)(a)前記ストールした命令が、マイクロコード化された命令のグループの最初であることを判定するステップ
をさらに含む、上記(1)に記載の方法。
(6)(a)前記少なくとも2つのスレッドの前記1つに関連する他の命令が、他の関連するフラッシュ条件を有するかどうかを判定するステップ
をさらに含む、上記(1)に記載の方法。
(7)(a)前記少なくとも2つのスレッドの前記1つの前記ストールした命令または関連するフラッシュ条件を有する前記他の命令が、まずフラッシュされなければならないかどうかを判定するステップと、
(b)前記他の命令がより古いので、前記関連するフラッシュ条件に従って、前記関連するフラッシュ条件を有する前記他の命令をまずフラッシュするステップと
をさらに含む、上記(6)に記載の方法。
(8)前記共用されるパイプライン・ステージが、ディスパッチ・ステージである、上記(1)に記載の方法。
(9)(a)前記ストールした命令に関連する前記少なくとも2つのスレッドの前記1つの前記命令をデコード・パイプラインから除去するステップ
をさらに含む、上記(8)に記載の方法。
(10)(a)前記ストールした命令に関連する前記少なくとも2つのスレッドの前記1つの前記命令を命令バッファから除去するステップ
をさらに含む、上記(8)に記載の方法。
(11)(a)その命令が前記ディスパッチ・ステージおよび前記ディスパッチ・ステージの前の前記プロセッサ・パイプライン内のすべてのステージからフラッシュされた前記少なくとも2つのスレッドの前記1つを再始動するステップ
をさらに含む、上記(8)に記載の方法。
(12)(a)その命令が前記ディスパッチ・ステージおよび前記ディスパッチ・ステージの前の前記プロセッサ・パイプライン内のすべてのステージからフラッシュされた前記少なくとも2つのスレッドの前記1つを再始動する前記ステップの前に、前記ストールした命令を前記ディスパッチ・ステージでストールさせた条件が解決されるまで待つステップ
をさらに含む、上記(11)に記載の方法。
(13)(a)その命令が前記ディスパッチ・ステージおよび前記ディスパッチ・ステージの前の前記プロセッサ・パイプライン内のすべてのステージからフラッシュされた前記少なくとも2つのスレッドの前記1つを再始動する前記ステップの前に、ある個数の前記プロセッサ・サイクルだけ待つステップ
をさらに含む、上記(11)に記載の方法。
(14)ハードウェア・マルチスレッド・パイプライン・プロセッサ内のディスパッチ・フラッシュ機構であって、前記パイプライン・プロセッサが、複数のスレッドを同時に処理し、前記ディスパッチ・フラッシュ機構が、
(a)前記パイプライン・プロセッサの取出ステージと、
(b)前記取出ステージに接続された、前記パイプライン・プロセッサのデコード・ステージと、
(c)前記デコード・ステージに接続された、前記パイプライン・プロセッサのディスパッチ・ステージと、
(d)前記パイプライン・プロセッサの前記取出ステージ、前記デコード・ステージ、および前記ディスパッチ・ステージに接続された、フラッシュ優先順位付けロジックと、
(e)前記ディスパッチ・ステージに接続された、前記パイプライン・プロセッサの発行キューと、
(f)前記発行キューに接続された、前記スレッドのそれぞれに専用の複数の私用リソースと、
(g)前記パイプライン・プロセッサ内のスレッド選択ロジックと
を含み、前記複数のスレッドの1つの前記複数の命令の1つが、前記複数の私用リソースの1つが使用不能なので前記発行キューに渡されなくなり、前記スレッド選択ロジックが、前記複数のスレッドの前記1つに属する、前記ディスパッチ・ステージ、前記デコード・ステージ、および前記取出ステージ内のすべての命令を選択し、前記フラッシュ優先順位付けロジックが、前記すべての命令を除去する信号を発行する、ディスパッチ・フラッシュ機構。
(15)プロセッサ効率を高める装置であって、
(a)複数のスレッドからハードウェア・マルチスレッド式パイプライン・プロセッサに命令を取り出す手段と、
(b)前記命令を複数のスレッドの1つに区別する手段と、
(c)前記命令をデコードする手段と、
(d)前記命令が、前記命令のディスパッチに十分な私用リソースおよび共用されるリソースを有するかどうかを判定する手段と、
(e)前記命令をディスパッチする手段と、
(f)前記判定手段が、前記複数のスレッドの前記1つの前記命令の1つが、前記命令をディスパッチするために十分な前記ディスパッチ手段用の私用リソースを有しないと判定する時に、前記複数のスレッドの前記1つの前記命令のすべてを、前記取出手段、前記デコード手段、および前記ディスパッチ手段から除去する手段と
を含む装置。
(16)コンピュータ処理システムであって、
(a)中央処理装置と、
(b)前記中央処理装置に接続された半導体メモリ・ユニットと、
(c)取外し可能メモリを有することができる少なくとも1つのメモリ・ドライブと、
(d)ユーザが前記コンピュータ処理システムと対話するためにキーボードまたはポインティング・デバイスもしくはその両方への接続のために前記中央処理装置に接続されるキーボード/ポインティング・デバイス・コントローラと、
(e)他のコンピュータ、ネットワーク、周辺装置、およびディスプレイ装置との通信のために少なくとも1つの入出力装置に接続するために前記中央処理装置に接続される複数のアダプタと、
(f)少なくとも2つの独立の実行のスレッドを処理するための、前記中央処理装置内のハードウェア・マルチスレッディング・パイプライン式プロセッサであって、取出ステージ、デコード・ステージ、およびディスパッチ・ステージを含むハードウェア・マルチスレッディング・パイプライン式プロセッサと、
(g)前記ディスパッチ・ステージで前記スレッドの1つの命令によって要求されるリソースが使用不能であり、したがって、前記命令が前記ディスパッチ・ステージでストールされる時を検出する命令ストール検出器と、
(h)前記ストールした命令を有する前記スレッドが前のフラッシュ条件を有するかどうかを判定するフラッシュ・デコード・ロジックと、
(i)他の前のフラッシュ条件が存在しない場合、または前記前のフラッシュ条件が前記ストールした命令より低い優先順位を有し、その結果、前記プロセッサが、前記プロセッサ・パイプラインを用いて前記独立の実行のスレッドのもう1つを処理することができる場合に、前記取出ステージ、前記デコード・ステージ、および前記ディスパッチ・ステージから前記ストールした命令を有する前記スレッドをフラッシュするディスパッチ・フラッシュ機構と
を含むコンピュータ処理システム。
【図面の簡単な説明】
【図1】本発明の実施形態に従って使用することができるコンピュータの簡略化されたブロック図である。
【図2】本発明の好ましい実施形態のディスパッチ・フラッシュ機能を使用することができる、さまざまなパイプライン、レジスタ、および実行ユニットを有するコンピュータ処理装置の簡略化されたブロック図である。
【図3】本発明の好ましい実施形態のディスパッチ・フラッシュ機能を使用することができる、さまざまなパイプライン、レジスタ、および実行ユニットを有するコンピュータ処理装置の簡略化されたブロック図である。
【図4】本発明の実施形態のディスパッチ・フラッシュ機能の簡略化された流れ図である。
【図5】本発明の実施形態のディスパッチ・フラッシュ機能の簡略化された流れ図である。
【符号の説明】
312 ディスパッチ必要条件を検査するステップ
314 必要な専用リソースが使用可能かどうかを判定するステップ
316 同期命令がブロックされているかどうかを判定するステップ
318 非リネームド・レジスタがブロックされているかどうかを判定するステップ
320 すべての条件がOKかどうかを判定するステップ
322 命令がマイクロコードの一部かどうかを判定するステップ
324 マイクロコード・グループの最初の命令かどうかを判定するステップ
326 ストール、ブロック、およびディスパッチのステップ
330 このスレッドをディスパッチ・フラッシュするステップ
332 このスレッドの他のフラッシュ条件があるかどうかを判定するステップ
334 このスレッドの前の命令の他のフラッシュ条件があるかどうかを判定するステップ
336 他のフラッシュを実行するステップ
338 ディスパッチするステップ

Claims (16)

  1. マルチスレッド・コンピュータ・プロセッサのプロセッサ・パイプライン内の複数のスレッドの1つをフラッシュする方法であって、
    (a)前記マルチスレッド・コンピュータ・プロセッサ内での同時処理のために前記複数のスレッドを取り出すステップであって、前記マルチスレッド・コンピュータ・プロセッサが、少なくとも1つの共用されるパイプライン・ステージを有するステップと、
    (b)前記共用されるパイプライン・ステージ内でストールした命令を認識するステップであって、前記ストールした命令が、前記共用されるパイプライン・ステージの前の前記プロセッサ・パイプラインに存在する少なくとも2つのスレッドのそれ以上の処理を妨げ、前記ストールした命令が前記少なくとも2つのスレッドの1つに属するステップと、
    (c)前記共用されるパイプライン・ステージおよび前記共用されるパイプライン・ステージの前の前記プロセッサ・パイプライン内のすべてのステージから、前記少なくとも2つのスレッドの前記1つのすべての命令をフラッシュするステップと、
    (d)前記プロセッサ・パイプライン内の前記少なくとも2つのスレッドのもう1つを処理するステップと
    を含む方法。
  2. 前記ストールした命令が、複数のスレッドの前記1つによって要求される私用リソースがブロックされるのでストールする、請求項1に記載の方法。
  3. 前記ストールした命令が、前記ストールした命令によって要求される非リネームド・レジスタがブロックされるのでストールする、請求項1に記載の方法。
  4. 前記ストールした命令が、同期化されたロード/ストア動作を必要とする命令であり、前記動作が遅延される、請求項1に記載の方法。
  5. (a)前記ストールした命令が、マイクロコード化された命令のグループの最初であることを判定するステップ
    をさらに含む、請求項1に記載の方法。
  6. (a)前記少なくとも2つのスレッドの前記1つに関連する他の命令が、他の関連するフラッシュ条件を有するかどうかを判定するステップ
    をさらに含む、請求項1に記載の方法。
  7. (a)前記少なくとも2つのスレッドの前記1つの前記ストールした命令または関連するフラッシュ条件を有する前記他の命令が、まずフラッシュされなければならないかどうかを判定するステップと、
    (b)前記他の命令がより古いので、前記関連するフラッシュ条件に従って、前記関連するフラッシュ条件を有する前記他の命令をまずフラッシュするステップと
    をさらに含む、請求項6に記載の方法。
  8. 前記共用されるパイプライン・ステージが、ディスパッチ・ステージである、請求項1に記載の方法。
  9. (a)前記ストールした命令に関連する前記少なくとも2つのスレッドの前記1つの前記命令をデコード・パイプラインから除去するステップ
    をさらに含む、請求項8に記載の方法。
  10. (a)前記ストールした命令に関連する前記少なくとも2つのスレッドの前記1つの前記命令を命令バッファから除去するステップ
    をさらに含む、請求項8に記載の方法。
  11. (a)その命令が前記ディスパッチ・ステージおよび前記ディスパッチ・ステージの前の前記プロセッサ・パイプライン内のすべてのステージからフラッシュされた前記少なくとも2つのスレッドの前記1つを再始動するステップ
    をさらに含む、請求項8に記載の方法。
  12. (a)その命令が前記ディスパッチ・ステージおよび前記ディスパッチ・ステージの前の前記プロセッサ・パイプライン内のすべてのステージからフラッシュされた前記少なくとも2つのスレッドの前記1つを再始動する前記ステップの前に、前記ストールした命令を前記ディスパッチ・ステージでストールさせた条件が解決されるまで待つステップ
    をさらに含む、請求項11に記載の方法。
  13. (a)その命令が前記ディスパッチ・ステージおよび前記ディスパッチ・ステージの前の前記プロセッサ・パイプライン内のすべてのステージからフラッシュされた前記少なくとも2つのスレッドの前記1つを再始動する前記ステップの前に、ある個数の前記プロセッサ・サイクルだけ待つステップ
    をさらに含む、請求項11に記載の方法。
  14. ハードウェア・マルチスレッド・パイプライン・プロセッサ内のディスパッチ・フラッシュ機構であって、前記パイプライン・プロセッサが、複数のスレッドを同時に処理し、前記ディスパッチ・フラッシュ機構が、
    (a)前記パイプライン・プロセッサの取出ステージと、
    (b)前記取出ステージに接続された、前記パイプライン・プロセッサのデコード・ステージと、
    (c)前記デコード・ステージに接続された、前記パイプライン・プロセッサのディスパッチ・ステージと、
    (d)前記パイプライン・プロセッサの前記取出ステージ、前記デコード・ステージ、および前記ディスパッチ・ステージに接続された、フラッシュ優先順位付けロジックと、
    (e)前記ディスパッチ・ステージに接続された、前記パイプライン・プロセッサの発行キューと、
    (f)前記発行キューに接続された、前記スレッドのそれぞれに専用の複数の私用リソースと、
    (g)前記パイプライン・プロセッサ内のスレッド選択ロジックと
    を含み、前記複数のスレッドの1つの前記複数の命令の1つが、前記複数の私用リソースの1つが使用不能なので前記発行キューに渡されなくなり、前記スレッド選択ロジックが、前記複数のスレッドの前記1つに属する、前記ディスパッチ・ステージ、前記デコード・ステージ、および前記取出ステージ内のすべての命令を選択し、前記フラッシュ優先順位付けロジックが、前記すべての命令を除去する信号を発行する、ディスパッチ・フラッシュ機構。
  15. プロセッサ効率を高める装置であって、
    (a)複数のスレッドからハードウェア・マルチスレッド式パイプライン・プロセッサに命令を取り出す手段と、
    (b)前記命令を複数のスレッドの1つに区別する手段と、
    (c)前記命令をデコードする手段と、
    (d)前記命令が、前記命令のディスパッチに十分な私用リソースおよび共用されるリソースを有するかどうかを判定する手段と、
    (e)前記命令をディスパッチする手段と、
    (f)前記判定手段が、前記複数のスレッドの前記1つの前記命令の1つが、前記命令をディスパッチするために十分な前記ディスパッチ手段用の私用リソースを有しないと判定する時に、前記複数のスレッドの前記1つの前記命令のすべてを、前記取出手段、前記デコード手段、および前記ディスパッチ手段から除去する手段と
    を含む装置。
  16. コンピュータ処理システムであって、
    (a)中央処理装置と、
    (b)前記中央処理装置に接続された半導体メモリ・ユニットと、
    (c)取外し可能メモリを有することができる少なくとも1つのメモリ・ドライブと、
    (d)ユーザが前記コンピュータ処理システムと対話するためにキーボードまたはポインティング・デバイスもしくはその両方への接続のために前記中央処理装置に接続されるキーボード/ポインティング・デバイス・コントローラと、
    (e)他のコンピュータ、ネットワーク、周辺装置、およびディスプレイ装置との通信のために少なくとも1つの入出力装置に接続するために前記中央処理装置に接続される複数のアダプタと、
    (f)少なくとも2つの独立の実行のスレッドを処理するための、前記中央処理装置内のハードウェア・マルチスレッディング・パイプライン式プロセッサであって、取出ステージ、デコード・ステージ、およびディスパッチ・ステージを含むハードウェア・マルチスレッディング・パイプライン式プロセッサと、
    (g)前記ディスパッチ・ステージで前記スレッドの1つの命令によって要求されるリソースが使用不能であり、したがって、前記命令が前記ディスパッチ・ステージでストールされる時を検出する命令ストール検出器と、
    (h)前記ストールした命令を有する前記スレッドが前のフラッシュ条件を有するかどうかを判定するフラッシュ・デコード・ロジックと、
    (i)他の前のフラッシュ条件が存在しない場合、または前記前のフラッシュ条件が前記ストールした命令より低い優先順位を有し、その結果、前記プロセッサが、前記プロセッサ・パイプラインを用いて前記独立の実行のスレッドのもう1つを処理することができる場合に、前記取出ステージ、前記デコード・ステージ、および前記ディスパッチ・ステージから前記ストールした命令を有する前記スレッドをフラッシュするディスパッチ・フラッシュ機構と
    を含むコンピュータ処理システム。
JP2001126630A 2000-05-04 2001-04-24 マルチスレッド・プロセッサ内でのパイプライン・ステージのフラッシュ方法および装置 Expired - Fee Related JP3548132B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/564930 2000-05-04
US09/564,930 US6694425B1 (en) 2000-05-04 2000-05-04 Selective flush of shared and other pipeline stages in a multithread processor

Publications (2)

Publication Number Publication Date
JP2001356903A JP2001356903A (ja) 2001-12-26
JP3548132B2 true JP3548132B2 (ja) 2004-07-28

Family

ID=24256480

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001126630A Expired - Fee Related JP3548132B2 (ja) 2000-05-04 2001-04-24 マルチスレッド・プロセッサ内でのパイプライン・ステージのフラッシュ方法および装置

Country Status (5)

Country Link
US (1) US6694425B1 (ja)
JP (1) JP3548132B2 (ja)
KR (1) KR100436675B1 (ja)
IL (1) IL138177A0 (ja)
TW (1) TW508530B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008155840A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 命令制御装置及び命令制御方法

Families Citing this family (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1247195A4 (en) * 1999-12-22 2005-01-05 Ubicom Inc SYSTEM AND METHOD FOR MULTITHREADING WORKING ON COMMAND LEVEL IN AN EMBEDDED PROCESSOR WITH ZERO-TIME CONTEXT SWITCHING
US20030188141A1 (en) * 2002-03-29 2003-10-02 Shailender Chaudhry Time-multiplexed speculative multi-threading to support single-threaded applications
US8762581B2 (en) * 2000-12-22 2014-06-24 Avaya Inc. Multi-thread packet processor
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
US20030041175A2 (en) * 2001-05-03 2003-02-27 Singhal Sandeep K Method and System for Adapting Short-Range Wireless Access Points for Participation in a Coordinated Networked Environment
JP3632635B2 (ja) * 2001-07-18 2005-03-23 日本電気株式会社 マルチスレッド実行方法及び並列プロセッサシステム
US7366884B2 (en) * 2002-02-25 2008-04-29 Agere Systems Inc. Context switching system for a multi-thread execution pipeline loop and method of operation thereof
US7822950B1 (en) * 2003-01-22 2010-10-26 Ubicom, Inc. Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls
US7194603B2 (en) * 2003-04-23 2007-03-20 International Business Machines Corporation SMT flush arbitration
US7469407B2 (en) * 2003-04-24 2008-12-23 International Business Machines Corporation Method for resource balancing using dispatch flush in a simultaneous multithread processor
US7213135B2 (en) * 2003-04-24 2007-05-01 International Business Machines Corporation Method using a dispatch flush in a simultaneous multithread processor to resolve exception conditions
US7134000B2 (en) * 2003-05-21 2006-11-07 Analog Devices, Inc. Methods and apparatus for instruction alignment including current instruction pointer logic responsive to instruction length information
US7198108B2 (en) * 2003-08-05 2007-04-03 Single Buoy Moorings, Inc. Changing the temperature of offshore produced water
US7472390B2 (en) * 2003-10-01 2008-12-30 Intel Corporation Method and apparatus to enable execution of a thread in a multi-threaded computer system
US7430737B2 (en) * 2003-12-04 2008-09-30 Sun Microsystems, Inc. Processor and method for supporting compiler directed multithreading management
US8074051B2 (en) 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
JP4327008B2 (ja) * 2004-04-21 2009-09-09 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US7702887B1 (en) 2004-06-30 2010-04-20 Sun Microsystems, Inc. Performance instrumentation in a fine grain multithreaded multicore processor
US7370243B1 (en) 2004-06-30 2008-05-06 Sun Microsystems, Inc. Precise error handling in a fine grain multithreaded multicore processor
US7523330B2 (en) * 2004-06-30 2009-04-21 Sun Microsystems, Inc. Thread-based clock enabling in a multi-threaded processor
US8095778B1 (en) 2004-06-30 2012-01-10 Open Computing Trust I & II Method and system for sharing functional units of a multithreaded processor
US7383403B1 (en) 2004-06-30 2008-06-03 Sun Microsystems, Inc. Concurrent bypass to instruction buffers in a fine grain multithreaded processor
US7941642B1 (en) 2004-06-30 2011-05-10 Oracle America, Inc. Method for selecting between divide instructions associated with respective threads in a multi-threaded processor
US7178005B1 (en) 2004-06-30 2007-02-13 Sun Microsystems, Inc. Efficient implementation of timers in a multithreaded processor
US7676655B2 (en) * 2004-06-30 2010-03-09 Sun Microsystems, Inc. Single bit control of threads in a multithreaded multicore processor
US7426630B1 (en) 2004-06-30 2008-09-16 Sun Microsystems, Inc. Arbitration of window swap operations
US7353364B1 (en) 2004-06-30 2008-04-01 Sun Microsystems, Inc. Apparatus and method for sharing a functional unit execution resource among a plurality of functional units
US7343474B1 (en) 2004-06-30 2008-03-11 Sun Microsystems, Inc. Minimal address state in a fine grain multithreaded processor
US8640114B2 (en) 2006-09-07 2014-01-28 Oracle America, Inc. Method and apparatus for specification and application of a user-specified filter in a data space profiler
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor
US7779238B2 (en) * 2004-06-30 2010-08-17 Oracle America, Inc. Method and apparatus for precisely identifying effective addresses associated with hardware events
US7533248B1 (en) 2004-06-30 2009-05-12 Sun Microsystems, Inc. Multithreaded processor including a functional unit shared between multiple requestors and arbitration therefor
US7434000B1 (en) 2004-06-30 2008-10-07 Sun Microsystems, Inc. Handling duplicate cache misses in a multithreaded/multi-core processor
US7185178B1 (en) 2004-06-30 2007-02-27 Sun Microsystems, Inc. Fetch speculation in a multithreaded processor
US7216216B1 (en) 2004-06-30 2007-05-08 Sun Microsystems, Inc. Register window management using first pipeline to change current window and second pipeline to read operand from old window and write operand to new window
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US7437538B1 (en) 2004-06-30 2008-10-14 Sun Microsystems, Inc. Apparatus and method for reducing execution latency of floating point operations having special case operands
US7373489B1 (en) 2004-06-30 2008-05-13 Sun Microsystems, Inc. Apparatus and method for floating-point exception prediction and recovery
US8225034B1 (en) 2004-06-30 2012-07-17 Oracle America, Inc. Hybrid instruction buffer
US7747771B1 (en) 2004-06-30 2010-06-29 Oracle America, Inc. Register access protocol in a multihreaded multi-core processor
US7478225B1 (en) 2004-06-30 2009-01-13 Sun Microsystems, Inc. Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor
US7774393B1 (en) 2004-06-30 2010-08-10 Oracle America, Inc. Apparatus and method for integer to floating-point format conversion
US7890734B2 (en) * 2004-06-30 2011-02-15 Open Computing Trust I & II Mechanism for selecting instructions for execution in a multithreaded processor
US7861063B1 (en) 2004-06-30 2010-12-28 Oracle America, Inc. Delay slot handling in a processor
GB0415851D0 (en) * 2004-07-15 2004-08-18 Imagination Tech Ltd Microprocessor output ports and control of instructions provided therefrom
US8037250B1 (en) 2004-12-09 2011-10-11 Oracle America, Inc. Arbitrating cache misses in a multithreaded/multi-core processor
US7657883B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor
US7664936B2 (en) * 2005-02-04 2010-02-16 Mips Technologies, Inc. Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages
US7490230B2 (en) * 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor
US7657891B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7853777B2 (en) * 2005-02-04 2010-12-14 Mips Technologies, Inc. Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
US7752627B2 (en) * 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor
US7681014B2 (en) 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
US7613904B2 (en) * 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
US7631130B2 (en) * 2005-02-04 2009-12-08 Mips Technologies, Inc Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor
US7506140B2 (en) * 2005-02-04 2009-03-17 Mips Technologies, Inc. Return data selector employing barrel-incrementer-based round-robin apparatus
US7266674B2 (en) * 2005-02-24 2007-09-04 Microsoft Corporation Programmable delayed dispatch in a multi-threaded pipeline
US7313673B2 (en) * 2005-06-16 2007-12-25 International Business Machines Corporation Fine grained multi-thread dispatch block mechanism
US7490224B2 (en) * 2005-10-07 2009-02-10 International Business Machines Corporation Time-of-life counter design for handling instruction flushes from a queue
US8813055B2 (en) * 2006-11-08 2014-08-19 Oracle America, Inc. Method and apparatus for associating user-specified data with events in a data space profiler
JP2008191856A (ja) * 2007-02-02 2008-08-21 Nec Computertechno Ltd 情報処理システム
US8762951B1 (en) 2007-03-21 2014-06-24 Oracle America, Inc. Apparatus and method for profiling system events in a fine grain multi-threaded multi-core processor
GB2448118B (en) * 2007-04-03 2011-08-24 Advanced Risc Mach Ltd Error recovery following erroneous execution with an instruction processing pipeline
JP5093237B2 (ja) * 2007-06-20 2012-12-12 富士通株式会社 命令処理装置
JP4759026B2 (ja) * 2008-07-15 2011-08-31 公立大学法人広島市立大学 プロセッサ
US20100115494A1 (en) * 2008-11-03 2010-05-06 Gorton Jr Richard C System for dynamic program profiling
US8024719B2 (en) 2008-11-03 2011-09-20 Advanced Micro Devices, Inc. Bounded hash table sorting in a dynamic program profiling system
US8478948B2 (en) * 2008-12-04 2013-07-02 Oracle America, Inc. Method and system for efficient tracing and profiling of memory accesses during program execution
KR101640848B1 (ko) * 2009-12-28 2016-07-29 삼성전자주식회사 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
KR101669989B1 (ko) 2010-05-27 2016-10-28 삼성전자주식회사 파이프라인 프로세서 및 이퀄 모델 보존 방법
US9201654B2 (en) 2011-06-28 2015-12-01 International Business Machines Corporation Processor and data processing method incorporating an instruction pipeline with conditional branch direction prediction for fast access to branch target instructions
US9665375B2 (en) * 2012-04-26 2017-05-30 Oracle International Corporation Mitigation of thread hogs on a threaded processor and prevention of allocation of resources to one or more instructions following a load miss
US20130297910A1 (en) * 2012-05-03 2013-11-07 Jared C. Smolens Mitigation of thread hogs on a threaded processor using a general load/store timeout counter
US9558003B2 (en) 2012-11-29 2017-01-31 Samsung Electronics Co., Ltd. Reconfigurable processor for parallel processing and operation method of the reconfigurable processor
US9304848B2 (en) 2013-01-15 2016-04-05 International Business Machines Corporation Dynamic accessing of execution elements through modification of issue rules
US9361204B2 (en) * 2013-02-19 2016-06-07 Arm Limited Generating trace data including a lockup identifier indicating occurrence of a lockup state
US20170139716A1 (en) * 2015-11-18 2017-05-18 Arm Limited Handling stalling event for multiple thread pipeline, and triggering action based on information access delay
US10706101B2 (en) 2016-04-14 2020-07-07 Advanced Micro Devices, Inc. Bucketized hash tables with remap entries
CN108255587B (zh) * 2016-12-29 2021-08-24 展讯通信(上海)有限公司 一种同步多线程处理器
US10275254B2 (en) * 2017-03-08 2019-04-30 International Business Machines Corporation Spin loop delay instruction
GB2563587B (en) * 2017-06-16 2021-01-06 Imagination Tech Ltd Scheduling tasks
DE112018004006B4 (de) * 2017-10-06 2021-03-25 International Business Machines Corporation Verarbeiten von synonymen von effektiven adressen in einer lade-speicher-einheit, die ohne adressumsetzung arbeitet
US10394558B2 (en) 2017-10-06 2019-08-27 International Business Machines Corporation Executing load-store operations without address translation hardware per load-store unit port
US10606591B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
US11175924B2 (en) * 2017-10-06 2021-11-16 International Business Machines Corporation Load-store unit with partitioned reorder queues with single cam port
JP2019101543A (ja) * 2017-11-29 2019-06-24 サンケン電気株式会社 プロセッサ及びパイプライン処理方法
US10552162B2 (en) * 2018-01-22 2020-02-04 International Business Machines Corporation Variable latency flush filtering
US10990403B1 (en) * 2020-01-27 2021-04-27 Arm Limited Predicting an outcome of an instruction following a flush
US11334361B2 (en) 2020-03-02 2022-05-17 Arm Limited Shared pointer for local history records used by prediction circuitry
US11520591B2 (en) 2020-03-27 2022-12-06 International Business Machines Corporation Flushing of instructions based upon a finish ratio and/or moving a flush point in a processor
US11157284B1 (en) 2020-06-03 2021-10-26 Arm Limited Predicting an outcome of an instruction following a flush
US11360773B2 (en) 2020-06-22 2022-06-14 Microsoft Technology Licensing, Llc Reusing fetched, flushed instructions after an instruction pipeline flush in response to a hazard in a processor to reduce instruction re-fetching
US11983533B2 (en) 2022-06-28 2024-05-14 Arm Limited Control flow prediction using pointers

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649225A (en) * 1994-06-01 1997-07-15 Advanced Micro Devices, Inc. Resynchronization of a superscalar processor
US6058466A (en) * 1997-06-24 2000-05-02 Sun Microsystems, Inc. System for allocation of execution resources amongst multiple executing processes
US6292860B1 (en) * 1997-12-16 2001-09-18 Ncr Corporation Method for preventing deadlock by suspending operation of processors, bridges, and devices
US6272520B1 (en) * 1997-12-31 2001-08-07 Intel Corporation Method for detecting thread switch events
US6317821B1 (en) * 1998-05-18 2001-11-13 Lucent Technologies Inc. Virtual single-cycle execution in pipelined processors
US6230251B1 (en) * 1999-03-22 2001-05-08 Agere Systems Guardian Corp. File replication methods and apparatus for reducing port pressure in a clustered processor
US6542991B1 (en) * 1999-05-11 2003-04-01 Sun Microsystems, Inc. Multiple-thread processor with single-thread interface shared among threads
US6484254B1 (en) * 1999-12-30 2002-11-19 Intel Corporation Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008155840A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 命令制御装置及び命令制御方法
KR101122180B1 (ko) 2007-06-20 2012-03-20 후지쯔 가부시끼가이샤 명령 제어 장치 및 명령 제어 방법

Also Published As

Publication number Publication date
KR20010100879A (ko) 2001-11-14
TW508530B (en) 2002-11-01
JP2001356903A (ja) 2001-12-26
KR100436675B1 (ko) 2004-06-22
US6694425B1 (en) 2004-02-17
IL138177A0 (en) 2001-10-31

Similar Documents

Publication Publication Date Title
JP3548132B2 (ja) マルチスレッド・プロセッサ内でのパイプライン・ステージのフラッシュ方法および装置
US6988186B2 (en) Shared resource queue for simultaneous multithreading processing wherein entries allocated to different threads are capable of being interspersed among each other and a head pointer for one thread is capable of wrapping around its own tail in order to access a free entry
US6256775B1 (en) Facilities for detailed software performance analysis in a multithreaded processor
US7254697B2 (en) Method and apparatus for dynamic modification of microprocessor instruction group at dispatch
US6061710A (en) Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
JP4642305B2 (ja) マルチスレッド・プロセッサ内の複数のスレッドに入り、出る方法と装置
Chaudhry et al. Rock: A high-performance sparc cmt processor
US7676808B2 (en) System and method for CPI load balancing in SMT processors
US10061588B2 (en) Tracking operand liveness information in a computer system and performing function based on the liveness information
US6857064B2 (en) Method and apparatus for processing events in a multithreaded processor
US7698707B2 (en) Scheduling compatible threads in a simultaneous multi-threading processor using cycle per instruction value occurred during identified time interval
EP0751458B1 (en) Method and system for tracking resource allocation within a processor
US7237094B2 (en) Instruction group formation and mechanism for SMT dispatch
US6138230A (en) Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline
JP3678444B2 (ja) パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ
US7603543B2 (en) Method, apparatus and program product for enhancing performance of an in-order processor with long stalls
KR100745904B1 (ko) 동시적 멀티스레드 프로세서에서 파이프라인 길이를변경하기 위한 방법 및 회로
US8635621B2 (en) Method and apparatus to implement software to hardware thread priority
JPH08147165A (ja) マルチコンテキストをサポートするプロセッサおよび処理方法
JP2002508564A (ja) 実行パイプラインの外部に複数のプログラム・カウンタとトレース・バッファを有するプロセッサ
US6073231A (en) Pipelined processor with microcontrol of register translation hardware
JP2004326748A (ja) 例外条件を解消するために同時マルチスレッド・プロセッサでディスパッチ・フラッシュを使用する方法
JP2001142699A (ja) パイプラインプロセッサにおける命令データの転送メカニズム
JP2001142701A (ja) プロセッサにおけるパイプライン制御用メカニズムおよび方法
US7328327B2 (en) Technique for reducing traffic in an instruction fetch unit of a chip multiprocessor

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040331

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040415

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080423

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20080423

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090423

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090423

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100423

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees