JP3919764B2 - 例外条件を解消するために同時マルチスレッド・プロセッサでディスパッチ・フラッシュを使用する方法 - Google Patents

例外条件を解消するために同時マルチスレッド・プロセッサでディスパッチ・フラッシュを使用する方法 Download PDF

Info

Publication number
JP3919764B2
JP3919764B2 JP2004105227A JP2004105227A JP3919764B2 JP 3919764 B2 JP3919764 B2 JP 3919764B2 JP 2004105227 A JP2004105227 A JP 2004105227A JP 2004105227 A JP2004105227 A JP 2004105227A JP 3919764 B2 JP3919764 B2 JP 3919764B2
Authority
JP
Japan
Prior art keywords
instruction
dispatch
thread
shared
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
JP2004105227A
Other languages
English (en)
Other versions
JP2004326748A (ja
Inventor
ウィリアム・イー・バーキー
ロナルド・エヌ・カッラ
バララム・シンハロイ
ジョン・ダブリュ・ワードIii
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 JP2004326748A publication Critical patent/JP2004326748A/ja
Application granted granted Critical
Publication of JP3919764B2 publication Critical patent/JP3919764B2/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
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、一般に、同時マルチスレッド(SMT)モードおよび単一スレッド・オペレーション・モードを有するプロセッサのための方法および回路に関する。
長い間、パフォーマンスを向上させる秘訣は、普通であれば命令レベル並列性(ILP/Instruction Level Parallelism)として知られる、1サイクルについてより多くの命令を実行させること、または命令の待ち時間を減らすことであった。各サイクルに、より多くの命令を実行させるには、より多くの機能ユニット(たとえば、整数、浮動小数点、ロード/ストア・ユニットなど)を追加しなければならない。複数の命令をより一貫して実行するためには、アウトオブオーダ(out−of−order)処理(OOP)と呼ばれる処理パラダイムを使用することが可能であり、実際、このタイプの処理が主流になりつつある。
OOPは、多くの命令が、すでに処理パイプラインへ送信された他の命令の結果に依存していることから生じる。この問題の改善を助けるように、即時実行を可能にするために多数の命令が格納される。これが実行される理由は、互いに依存していない、より多くの命令を見つけることである。即時実行する準備の整った命令を格納するために使用される記憶域は、レコーダ・バッファと呼ばれる。126もの命令を格納できるようなシステムを備えた最新の市販コンピュータ・アーキテクチャでは、このレコーダ・バッファのサイズが大きくなってきている。レコーダ・バッファのサイズが大きくなる理由は単純であり、空間的に関連するコードは、(複雑なストラクチャおよびリンクされたリストのアレイを除いたとしても)実行の面で時間的にも関連する傾向があるためである。唯一の問題は、これらの命令が以前の命令の結果に依存する傾向も有することである。CPUが必要とするコードの量が増え続けていることから、依存していない命令をより多く見つけるための現時点での唯一の方法は、レコーダ・バッファのサイズを大きくすることである。
ただし、この技法を使用することで、パフォーマンス向上率が著しく下落する印象を与えてしまい、実際に利益の減少を示している。現在では、同じパフォーマンス向上率を達成するために、さらに多くのトランジスタが使用されている。単一プロセッサILP抽出のみに照準を合わせるのではなく、マルチスレッド(マルチプロセッシング)を介するが主な制約としてのシステム・バスは使用せずに、命令またはスレッド・レベルでより粗い形でのパフォーマンス抽出に照準を合わせることができる。
単一チップ上により多くのトランジスタが配置できるようになり、オンチップ・マルチプロセッシング(CMP/on−chip multiprocessing)が可能になった。このアーキテクチャでは、潜在的なパフォーマンスの向上を利用するために、これら複数のプロセッサを単一プロセッサとして使用することはできず、むしろ命令を並列方式で実行することに依拠したマルチプロセッシングを使用しなければならない。そのためには、CMP上で実行されるプログラムを、単に直列または逐次方式で実行するのではなく、並列方式で実行するように作成する必要もある。アプリケーションが並列方式(マルチスレッド方式)で実行するように作成されると想定すると、この様式で作成されたプログラムを、追加されるプロセッサの数に比例してより高速に実行させようとするのに付き物の難しさがある。
複数のコアを1つのダイ上で使用することの背景にある一般的な概念は、2つのスレッドを同時に実行することによってより高いパフォーマンスを引き出すことである。そうすることによって、2つのCPUが共に、機能ユニットのうち、より高い割合の集合数に常時有用な作業を実行させておくことができる。プロセッサがより多くの機能ユニットを有する場合、それらのユニットのうち一度に有用な作業を実行できる割合は低くなる。オンチップ・マルチプロセッサは、プロセッサあたりの機能ユニットの数を少なくし、各プロセッサに別々のタスク(またはスレッド)を分配する。このようにして、組み合わせられた両方のタスク上でより高いスループットを達成することができる。比較した場合の単一プロセッサは、1つのスレッドまたはタスクをCMPチップよりも速く終えることが可能であるが、これは、無駄な機能ユニットはあるが、プロセッサが複数のデータを同時に計算し、使用可能なすべての機能ユニットを使用するときに、アクティビティの「バースト」も生成されるためである。マルチプロセッサの背景にある考え方の1つは、個々のプロセッサにこうしたバースト・アクティビティの時間を経験させないようにし、代わりに各プロセッサに、それが使用できるリソースをより頻繁に、したがって効率的に使用させるようにすることである。クロック・サイクル中に機能ユニットの一部を使用しないことは、「水平浪費(horizontal waste)」として知られており、CMPはこれを避けるように努める。
ただし、CMPには問題がある。従来のCMPチップは、2つまたはそれ以上のスレッドの完了を促進するために、単一スレッドのパフォーマンスを犠牲にするものである。このようにして、スレッドが1つしかない場合、(従来のマルチプロセッサ(MP)システムにおいて、個々にスレッド化されたプログラムを使用するシステムで他のプロセッサを追加しても無用であるのとまったく同様に)割り当てられたリソースの半分がアイドル状態であり、完全に無用であることから、CMPチップは一般的な用途では比較的柔軟性に乏しい。CMPにおいて機能ユニットをより効率的にする方法の1つは、粗粒度マルチスレッディング(CMT/coarse−grained multithreading)を使用することである。CMTは、一定数のクロック・サイクルに対して1つのスレッドを実行することによって、機能ユニットの使用率に関して効率を上げるものである。効率は、「垂直浪費(vertical waste)」の減少によって向上する。垂直浪費とは、1つのスレッドが機能停止(stall)しているために、どの機能ユニットも動作していない状況を表す。
他のスレッドに切り替える場合、プロセッサはそのスレッドの状態(すなわち、どこで命令がパイプラインに入るか、どのユニットが使用中であるか)を保存した後、他のスレッドに切り替える。これは、複数のレジスタ・セットを使用することで実行される。このように実行することの利点は、スレッドはキャッシュ・ミス(cache miss)になるまで、または実行する独立した命令がなくなるまでに、長い時間がかかることが多い、という事実によるものである。このようにしてCMTプロセッサは、サポートしている異なるスレッドだけを実行できる。したがって、これらスレッドのそれぞれについて、それらの実行状態を格納するための物理位置があるスレッドだけを格納することができる。したがって、NウェイのCMTプロセッサは、N個のスレッドの状態を格納する機能を有する必要がある。
この概念の変形は、その時点でシステムが他のスレッドに切り替えるキャッシュ・ミス(通常、L2(2次)キャッシュ・ミス)になるまで、1つのスレッドを実行することである。これは、前のスレッドが機能停止するとすぐに他のスレッドに切り替えるだけであるため、プロセッサを介してスレッドを循環(rotate)させるのに必要な論理を簡略化する利点がある。要求されたブロックがキャッシュに返送されてくるまで待機するという不利な点が緩和される。これは、一部のプロセッサによって使用されるヒット・アンダー・ミス(hit under miss)(またはヒット・アンダー・マルチプル・ミス(hit under multiple miss))キャッシュ方式と同様であるが、命令ではなくスレッドに対して動作する点が異なる。CMPを介したCMTの利点は、CMTが単一スレッドのパフォーマンスを犠牲にしないこと、およびハードウェアの重複が少ない(2つのプロセッサを同等のCMTと「等しく」するために、半分にされるハードウェアが少ない)ことである。
より積極的なマルチスレッド方法は、細粒度(fine−grained)マルチスレッディング(FMT)と呼ばれる。CMTと同様に、FMTの基本は、スレッドを迅速に切り替えることである。ただしCMTとは異なり、その考え方は、サイクルごとおよびあらゆるサイクルで切り替えることである。CMTおよびFMTはどちらも実際に1つのスレッドの完了を遅くさせるが、FMTは動作中のすべてのスレッドの完了を促進するものであって、これが一般に最も重要な全体スループットである。
CMPは、元来およびそれ自体の水平浪費の一部を除去することができる。CMTおよびFMTは、一部(またはすべて)の垂直浪費を除去することができる。ただし、同時マルチスレッディング(SMT)と呼ばれる高度な形のマルチスレッディングを含むアーキテクチャを使用して、水平および垂直の両方の浪費を減らすことができる。SMTの第1の目標は、所与の時間に、および所与の機能ユニットで、異なるスレッドからの命令を実行する機能を持つことである。SMTアーキテクチャは、スレッドを循環することによってFMTプロセッサと同様に働き、異なるスレッドからの命令を同時に実行することによってCMPと同様に働く。そのため設計者達は、利益の減少を心配することなく、より広いコアを設計することができる。SMTには、「未使用」の機能ユニットを異なるスレッド間で共用する機能があるため、FMTよりも高い効率を達成することは妥当であり、このようにして、SMTはCMPマシンの効率を達成する。ただし、CMPシステムとは異なり、SMTシステムは単一スレッドのパフォーマンスについて、ほとんど、またはまったく犠牲を払うことはない(わずかな犠牲については後述する)。その理由は簡単である。CMPプロセッサの多くは、単一スレッドの実行中にアイドル状態のままであり、CMPチップ上のプロセッサが多いほどこの問題は顕著であるが、SMTプロセッサはすべての機能ユニットを単一スレッドに専念させることができる。これは、複数スレッドを実行できることほど明らかに重要ではないが、単一スレッド環境とマルチスレッド環境とのバランスをとることができるのは、非常に有用な機能である。すなわちこれは、SMTプロセッサが、スレッド・レベル並列性(TLP)が存在する場合にはこれを活用することが可能であり、存在しない場合には命令レベル並列性(ILP)だけに留意することになることを意味する。
SMTプロセッサは、複数スレッドをサポートするために、従来のスーパースカラ(superscalar)プロセッサよりも多くのレジスタを必要とする。一般的な目標は、サポートしているスレッドそれぞれについて、単一プロセッサ用と同じだけのレジスタを提供することである。従来の縮小命令セット・コンピュータ(RISC)チップの場合、これは、32×N個のレジスタ(Nは、SMTプロセッサが1サイクルで処理できるスレッド数)に、必要な名前変更レジスタ(renaming register)をすべて加えたものを示唆する。4ウェイSMTプロセッサのRISCプロセッサの場合、これは、128レジスタに必要な名前変更レジスタを加えたものを意味する。
ほとんどのSMTモデルは、従来のアウトオブオーダ・プロセッサを単純に拡張したものである。実際のスループットが増加すると、命令発行の幅に対する需要も多くなり、したがってこれも増加するはずである。前述のレジスタ・ファイル・サイズの増加により、SMTパイプラインの長さは、クロック・サイクルの長さを減速させないように、2段階(1つはレジスタ・バンクの選択、1つは読取りまたは書込みの実行)増加する可能性がある。したがって、レジスタ読取りおよびレジスタ書込みの段階は、どちらも2つのパイプライン段階に分けられる。
いずれか1つのスレッドにパイプラインを支配させないようにするために、他のスレッドが実行時間およびリソースの現実的なスライスを確実に取得するように努めなければならない。機能ユニットが実行する作業を要求すると、フェッチ・メカニズムは、すでにパイプライン内にある最も少ない命令を有するスレッドに、高い優先順位を与える。もちろん、他のスレッドが実行できる命令をほとんど持たない場合は、そのスレッドからのより多くの命令がすでにパイプラインを支配していることになる。
SMTは、可能なものはほぼすべて共用している。ただし、場合によっては、これが従来のデータ編成、ならびに命令流れを混乱させる。分岐予測ユニットは、共用されると効率が悪くなるが、これはより多くの命令によってより多くのスレッドを追跡しなければならないためであり、その結果、正確な予測をするという点で効率が悪くなる。これは、予測ミスによってより頻繁にパイプラインをフラッシュする必要が生じることを意味するが、複数スレッドを実行する機能はこの欠点を十二分に補うものである。
SMTアーキテクチャが(2段階で)使用するパイプラインが長いほど、必要なレジスタ・ファイルが大きくなるために、予測ミスに関する損失は大きくなる。ただし、SMTアーキテクチャでは、スレッドあたりの必要なレジスタ数を最小限にするための技法が開発されてきた。これは、レジスタのより適切な割振り解除のための、より効率的なオペレーティング・システム(OS)およびハードウェア・サポート、ならびに他のスレッドがどのレジスタも使用していない場合は、他のスレッドのコンテキストからレジスタを共用する機能によって実行される。
他の問題は、キャッシュのサイズ、キャッシュのライン・サイズ、およびそれらによって与えられる帯域幅に関連した、スレッドの数である。単一スレッド・プログラムの場合と同様に、キャッシュのライン・サイズが増加すると、ミスの割合は減少するが、ミスによる損失は増加する。この問題は、より様々なデータを使用するより多くのスレッドをサポートすることによって悪化するため、それぞれのスレッドにとっては、キャッシュが少ないほど事実上有用である。キャッシュに関するこの競合は、マルチスレッドの作業負荷を介してマルチプログラムの作業負荷を処理する場合に、より顕著である。したがって、より多くのスレッドが使用中であれば、キャッシュも大きくなければならない。これは、共用L2キャッシュを備えたCMPプロセッサにも当てはまる。
使用中のスレッドが多いほど、結果として全体のパフォーマンスが高くなり、メモリ・データの連係における相違点がより容易に明らかになる。L1(1次)キャッシュ・サイズが一定に保たれている場合、最高レベルのパフォーマンスは、より連係しやすいキャッシュを使用して達成されるが、アクセス時間は長くなる。スレッドの数が変化する間、連係して変わるブロック・サイズの変化に伴うパフォーマンスを決定するためのテストが行われている。以前と同様に、ブロックの連係レベルが上がると、必ずパフォーマンスも上がったが、2つより多くのスレッドが使用中であった場合、ブロック・サイズが大きくなるとパフォーマンスは下がった。これは、ブロックの連係度が上がっても、ブロック・サイズが大きくなりミスの損失が大きくなることによって生じた欠点を補うことができないほど大きなものであった。
SMTプロセッサは、広くリソースと呼ばれる様々な要素を有する。リソースは実行ユニット、レジスタ名前変更アレイ、完了テーブルなどであってよい。リソースの一部はスレッド特有のものであり、たとえば各スレッドは、各スレッドに対する命令がバッファに入れられるそれ自体の命令待ち行列を有することができる。実行ユニットは、各スレッドからの命令が実行される共用リソースである。同様に、完了ユニットのレジスタ名前変更アレイおよび完了テーブルも共用リソースであってよい。共用レジスタ名前変更アレイ内のエントリの大部分が1つのスレッドに割り当てられている場合、そのスレッドは、この共用リソースを使用し過ぎている可能性がある。他のスレッドが名前変更レジスタを処理する必要がある場合、リソース要件のためにブロックされ、ディスパッチできない場合がある。SMTプロセッサを備えたシステム内の他の要素はリソースと呼ばれる場合があり、それらのリソースが複数のスレッドからの命令の実行を遅くしない場合、本発明によって対処される問題には当てはまらない場合がある。
SMTプロセッサには、複数の実行ユニットでアウトオブオーダ命令実行を実行するためのより大きなパイプライン・プロセスの一部である、インオーダ(in−order)共用パイプラインがある場合がある。たとえば、2つのスレッドからの命令は、命令フェッチ・ユニット(IFU)および命令ディスパッチ・ユニット(IDU)を備える共用パイプラインに、交互にロードすることができる。命令・アドレスは、IFU内の命令フェッチ・アドレス・レジスタ(IFAR)に交互にロードされる。この場合、共用パイプライン内の1つのスレッドが「機能停止」されると、その結果、他方のスレッドがパイプラインを介して進むのをブロックする可能性がある。第1のスレッドの第1の命令が、ディスパッチに達していない同じ第1のスレッドの次に続く第2の命令からの例外アドレスが例外条件を解消する必要のある例外条件を、実行中に生成するという、追加の条件がある。例外条件を生成している第1の命令が、第2の命令がディスパッチに進む前に、第2のスレッドからのブロック命令をディスパッチできるようにするために解放する必要のある共用リソースを有する場合、共用パイプラインをさらにブロックすることができる。
さらに、第2の命令がディスパッチに進まないようにする第2のスレッドからのブロック命令が、待ち時間の長いリソース要件を有し、非常に長い間潜在的にブロックできるタイプのものである場合もある。これによって、例外条件の解消も妨げられる。第2のスレッドのブロック命令が単にフラッシュおよび再フェッチされるだけの場合、第2の命令が進むのを機能停止しているブロックの除去はほとんど進まない。したがって、進むための例外条件を備えた他のスレッドのための場所を空けるために、パイプラインからのブロック命令を使用して、この条件を検出し、スレッドをフラッシュするための方法および回路が求められている。さらに、長いリソース待ち時間ブロック命令が、そのリソース要件が解消されるか、またはブロックされている例外条件が解消されるまで、再フェッチされないようにする、ホールドオフ・メカニズムが求められている。
したがって、リソースの使用による例外条件の機能停止を検出し対処するための方法および回路が求められている。さらに、長い待ち時間のリソース要件を備えた命令が再フェッチされる時点を制御し、ディスパッチ・パイプラインに再入する、ホールドオフ・メカニズムが求められている。
ディスパッチ・フラッシュ・オペレーションは、通常、パイプラインの機能停止を発生させている共用ディスパッチ・パイプライン内のスレッドの命令をフラッシュするのが望ましい場合に発行される。ディスパッチ・フラッシュは、SMTプロセッサのより小さな部分に影響を与えるため、一般のフラッシュよりも効果的である。第1のスレッドの第1の命令は、例外を解消するために第1のスレッドの第2の命令のアドレスを必要とする例外条件を発生させることができる。この場合、第2の命令は、それを、獲得されるアドレスのためのパイプラインのディスパッチ段階に実行しなければならない。単一のスレッド・モードでは、数サイクル内に必要な命令がディスパッチ段階に現われ、例外が解消できるため、これは問題ではない。第1の命令が、完了するまで解放されないリソースを使用している場合、これらのリソースを同様に必要とする第2のスレッドのブロック命令は、共用パイプラインをブロックして、第1のスレッドの第2の命令がディスパッチ・パイプラインに達するのを妨げることができる。この条件が、第1のスレッドをフラッシュすること、またはブロックを解消できる何らかのタイプの例外ハンドラを使用することによって解消できる、パイプラインの機能停止を発生させる。
第1のスレッドの第1の命令が、例外を解消するために第1のスレッドの第2の命令のアドレスを必要とする例外条件を発生させると、本発明の実施形態は、ディスパッチ・フラッシュ・オペレーションを使用してこの条件を解消する。ディスパッチ・フラッシュは、第2のスレッドの命令に対して発行される。これによって、第1のスレッドの命令が進めるようになり、第1のスレッドの第2の命令は、例外を解消するためにディスパッチできるようになる。
第2のスレッドのブロック命令が、長い待ち時間を有するリソース要件を備えているという理由で共用パイプラインをブロックしている場合、第1のスレッドに対する第2の命令は長い間発行することができないため、例外の解消も妨げる。この場合、フラッシュされる第2のスレッドの命令が再フェッチされ、リソースの待ち時間を満たすことのできるようにパイプラインに再入する時点を制御する、ホールドを発行することができる。
以上、以下の本発明の詳細な説明をより良く理解できるように、本発明の特徴および技術的な利点について、おおまかに概説してきた。次に、本発明の特許請求の範囲の主題となる本発明の追加の特徴および利点について説明する。
本発明およびその利点をより完全に理解するために、添付の図面と共に以下の説明を参照する。
以下の説明では、本発明を完全に理解するために、多数の特定の細部が示される。ただし、当分野の技術者であれば、本発明がこうした特定の細部なしでも実施可能であることが明らかであろう。その他の場合には、不必要に詳細に示して本発明を不明瞭にしないために、良く知られた回路をブロック図の形で示すことができる。ほとんどの部分について、タイミング、通信プロトコル内のデータ・フォーマットなどに関する細部は、こうした細部が本発明を完全に理解するために必要ではなく、関連分野の通常の技術者の技術範囲内であるため、省略されている。
次に図を参照すると、記載された要素は必ずしも一定の縮尺で示されておらず、同じかまたは同様の要素にはいくつかの図面を通じて同じ参照番号が指定されている。
図1を参照すると、CPU 410が詳細に示されている。CPU 410は、クロック・サイクルごとに複数の命令を実行するように設計されている。したがって、複数の命令は、任意の1クロック・サイクル中に、実行ユニット、固定小数点ユニット(FXU)114、浮動小数点ユニット(FPU)118、およびロード/ストア・ユニット(LSU)116のうちのいずれかで実行中であってよい。同様に、CPU 410は、SMTモードで複数のスレッドからの命令を同時に実行することができる。
プログラム・カウンタ(PC)134は、実行に関する命令を有するスレッド・ゼロ(T0)およびスレッド1(T1)に対応する。スレッド・セレクタ133は、命令アドレスを命令フェッチ・ユニット(IFU)108に結合するために、T0とT1を交互に選択する。命令アドレスは、命令フェッチ・アドレス・レジスタ(IFAR)103にロードされる。IFAR 103は、命令キャッシュ(I−Cache)104から各スレッドに関する命令を交互にフェッチする。命令は、T0用の命令待ち行列(IQ)135およびT1用のIQ 136にバッファリングされる。IQ 135およびIQ 136は、命令ディスパッチ・ユニット(IDU)132に結合される。スレッド優先順位セレクタ137の制御の下で、命令が選択され、IQ 135およびIQ 136から読み取られる。通常、スレッド優先順位セレクタ137は、各スレッドのプログラム制御優先順位にほぼ比例して、IQ 135およびIQ 136から命令を読み取る。
命令は、IDU 132の復号器(図示せず)で復号される。次に命令シーケンサ113は、命令を様々なアルゴリズムによって決定された順にグループ単位で配置することができる。命令のグループは、ディスパッチ段階140によって、命令発行待ち行列(IIQ)131にディスパッチされる。命令シーケンサ113は、両方のスレッドからプログラム順に命令を受け取るが、命令は、どちらかのスレッドからプログラム順ではなくIIQ131から発行される場合がある。汎用レジスタ(GPR)ファイル115および浮動小数点レジスタ(FPR)ファイル117は、複数の実行ユニットによって使用され、システムのプログラム状態を表す。これらのハードウェア・レジスタは、「設計済み(architected)」レジスタと呼ばれることがある。命令が発行待ち行列にディスパッチされると、各設計済みレジスタは名前変更される。修正中の各設計済みレジスタには物理レジスタが割り当てられ、対応するルックアップ・テーブルが、設計済みレジスタに関連付けられた物理レジスタを識別する。したがって、発行待ち行列では、設計済みレジスタの複数のコピーが同時に存在可能なように、設計済みレジスタが名前変更される。これによって、ソース・オペランドが使用可能な限り、命令をアウトオブオーダで実行することができる。レジスタ名前変更ユニット150は、特定の物理レジスタを参照しているすべての命令が完了し、物理レジスタが最新の設計済み状態を含んでいない場合に、未使用の物理レジスタを再割当て可能なように、レジスタを名前変更およびマッピングする。
命令は、該当する実行ユニット内で実行するために、IIQ 131の待ち行列に入れられる。命令が固定小数点オペレーションを含む場合、複数の固定小数点ユニット(FXU)114のうちのいずれかを使用することができる。実行ユニット、FXU 114、FPU 118、およびLSU 116のすべてが、発行済命令のうちのいずれが完了したか、および他の状況情報を示す、完了テーブル(図示せず)を有する完了ユニット119に結合される。完了ユニット119からの情報はIFU 108に転送される。IDU 132も、完了ユニット119に情報を送ることができる。LSU 116からのストア・オペレーションからのデータは、データ・キャッシュ(D−Cache)102に結合される。このデータは、近いうちに使用するためにD−Cache 102に格納することができ、かつ/または、バス412を介してメモリ139にデータを送信するバス・インターフェース・ユニット(BIU)101に転送することができる。LSU 116は、実行ユニット(たとえばFXU 114)が使用するために、D−Cache 102からのデータをロードすることができる。
SMTプロセッサ410は、IFU 108の回路と、2つのスレッド間で共用されるIDU 132の回路とを含む、パイプライン段階を有する。命令は、プログラム順に各スレッドから交互にパイプライン段階にロードされる。命令はI−Cache 104からアクセスされると、T0待ち行列135およびT1待ち行列137に入れられる。命令は、等しく、またはスレッドの優先順位にほぼ比例して各スレッドから選択するスレッド優先順位セレクタ137に従って、これらの待ち行列から選択される。IDU 132中の命令シーケンサ113は、各スレッドからの命令を、1グループにつき命令が5つまでの命令グループに組み合わせる。スレッド・グループからの命令は、複数の実行ユニット(たとえば114、116、および118)に送り込む命令発行待ち行列131に対して発行される。命令グループ中の命令は、命令発行待ち行列131、および完了ユニット119内の完了テーブル(図示せず)にディスパッチされる場合、プログラム順である。ただし、命令は、実行ユニットに対してアウトオブオーダで発行される場合もある。
命令が実行ユニット(たとえばFPU 118)で実行中の場合、命令が完了するのを妨げることになる、例外条件(たとえばFPU 118でゼロで割る)が存在する場合がある。命令が完了しないと、共用リソース(たとえばグループ完了テーブル・エントリ)を解放しない。ディスパッチ段階140からのディスパッチを待っている命令がこのリソースを必要とする場合、その命令は、共用リソース要件が原因でディスパッチできないことになる。
図2は、本発明の実施形態を使用するSMTプロセッサ410において、スレッドからの命令グループのディスパッチに使用される方法ステップを示す流れ図である。ステップ201では、IDU 132内の共用パイプラインのディスパッチ段階140に命令グループがあるかどうかを判定するためのテストが実行される。ステップ201でテストの結果が「いいえ」である場合、分岐はステップ201の入力に戻される。ステップ201でテストの結果が「はい」である場合、ステップ202で、(IDU 132の)ディスパッチ段階で命令グループに関する特定のスレッドを識別するために、スレッド識別(ID)がチェックされる。ステップ203では、適宜IDU 132から投機的にディスパッチするためにグループが待ち行列に入れられる。ステップ204では、命令グループに必要な共用リソースが使用可能であるかどうかを判定するためのテストが実行される。共用リソースが使用可能でない場合、ステップ209で、IDU 132からの命令グループのディスパッチが拒否される。共用リソースが使用可能な場合、ステップ205で、スレッド特有のリソースが使用可能であるかどうかを判定するためのテストが実行される。必要なスレッド特有のリソースが使用可能でない場合、ステップ209が実行され、ディスパッチは拒否される。ステップ206では、IDU 132内のいずれかのディスパッチ・フラッシュがすでに進行中であるかどうかを判定するためのテストが実行される。ディスパッチ・フラッシュがすでに進行中である場合、ステップ209でディスパッチは拒否される。進行中のディスパッチ・フラッシュがない場合、ステップ207で、ディスパッチ段階の命令グループに対応するスレッドのいずれかのフラッシュが進行中であるかどうかを判定するためのテストが実行される。ステップ207のテストの結果が「はい」である場合、ステップ209でディスパッチは拒否される。ステップ207のテストの結果が「いいえ」である場合、ステップ208で、ディスパッチ段階140から命令グループがディスパッチされる。
図3は、スレッド間での共用リソース内の矛盾によって、ディスパッチ・フラッシュを使用する命令流れを管理するために、本発明の実施形態で使用される方法ステップを示す流れ図である。ステップ301では、IDU 132でディスパッチ段階140に達していない第1のスレッドの第2の命令からの例外アドレスを必要とする、第1のスレッドに対する第1の命令を実行する間、実行ユニット(たとえばFXU 114、LSU 116、またはFPU 118)で例外条件が検出される。ステップ302では、第1のスレッドに対する第2の命令のディスパッチが、第2のスレッドのブロック命令によって、ディスパッチ段階140で機能停止されているかどうかを判定するためのテストが実行される。ステップ302のテストの結果が「いいえ」である場合、分岐はステップ303で、ディスパッチ段階140からの第2の命令のディスパッチが例外アドレスをディスパッチできるようになる、ステップ308に渡される。ステップ302のテストの結果が「はい」である場合、ステップ304で、ブロック命令が、例外条件を伴う第1のスレッドの第1の命令によって保持されているリソースを必要とするかどうかを判定するためのテストが実行される。ステップ304のテストの結果が「はい」である場合、ステップ309で、第2のスレッドのディスパッチ・フラッシュがIDU 132に対して発行され、次いでステップ308で、IDU 132からの命令のディスパッチが続行される。ステップ304のテストの結果が「いいえ」である場合、ステップ305では、ブロック命令が長い待ち時間のリソース要件を有するかどうかを判定するためのテストが実行される。ステップ305のテストの結果が「いいえ」である場合、ステップ308に戻る。ステップ305のテストの結果が「はい」である場合、ステップ306で、ブロック命令を含む第2のスレッドに関するIDU 132に対するディスパッチ・フラッシュが発行される。ステップ307では、ホールド・オペレーションが発行され、第2のスレッドのフラッシュ済み命令が再フェッチされる時点、およびSMT 410の共用パイプラインに再入する時点を制御するホールドが生成される。次にステップ308で、IDU 132からの命令のディスパッチが続行される。
図5は、本発明の実施形態を使用するSMTプロセッサ410において、ディスパッチ・フラッシュ・オペレーションを処理する際に使用される方法ステップを示す流れ図である。ステップ500では、選択されたスレッドに関するディスパッチ・フラッシュ要求が、IDU 132に対して発行される。ステップ501では、要求されたディスパッチ・フラッシュで選択されたスレッドがIDU 132からの命令グループをディスパッチしているかどうかのテストが実行される。選択されたスレッドが命令グループをディスパッチしていない場合、ディスパッチ・フラッシュは発行されず、分岐はステップ501の入力に戻される。選択されたスレッドが命令グループをディスパッチしている場合、ステップ502で、選択されたスレッド内のいずれかのグループ命令がマイクロ・コードであるか、スレッドが例外アドレスを必要とするか、またはSMTモードが選択されていないかを判定するためのテストが実行される。ステップ502のテストの結果が「はい」の場合、ステップ504で、ディスパッチ・フラッシュは発行されない。ステップ502のテストの結果が「いいえ」の場合、ステップ503で、選択されたスレッドが進行中のいずれかのフラッシュを有するかどうかを判定するためのテストが実行される。ステップ503のテストの結果が「はい」の場合、ステップ504が再度実行される。ステップ503のテストの結果が「いいえ」の場合、ステップ505で、選択されたスレッドに関していずれかのタイプのフラッシュが起動されたかどうかを判定するためのテストが実行される。この時点で、何のフラッシュも起動されていない場合、ステップ506で、選択されたスレッドに関するディスパッチ・フラッシュがIDU 132に対して発行される。ステップ505のテストの結果が「はい」の場合、ステップ504が再度実行され、選択されたスレッドに関するIDU 132に対するディスパッチ・フラッシュは発行されない。
本発明を実施するための代表的なハードウェア環境が図4に示されており、これは、同時マルチスレッド(SMT)処理を備えた中央処理ユニット(CPU)410およびシステム・バス412を介して相互接続された他のいくつかのユニットを有する、本発明に従ったワークステーションの典型的なハードウェア構成を示すものである。図4に示されたワークステーションは、ランダム・アクセス・メモリ(RAM)414と、読取り専用メモリ(ROM)416と、ディスク・ユニット420およびテープ・ドライブ440などの周辺デバイスをバス412に接続するための入力/出力(I/O)アダプタ418と、キーボード424、マウス426、スピーカ428、マイクロフォン432、および/またはタッチ・スクリーン・デバイス(図示せず)などの他のユーザ・インターフェース・デバイスをバス412に接続するためのユーザ・インターフェース・アダプタ422と、ワークステーションをデータ処理ネットワークに接続するための通信アダプタ434と、バス412をディスプレイ・デバイス438に接続するためのディスプレイ・アダプタ436とを含む。
以上、本発明およびその利点について詳細に説明してきたが、本明細書では、添付の特許請求の範囲に定義された本発明の精神および範囲を逸脱することなく、様々な変更、置換、および修正が可能であることを理解されたい。
まとめとして、本発明の構成に関して以下の事項を開示する。
(1)共用ディスパッチ・パイプラインを有するSMTプロセッサにおいて命令流れを管理するための方法であって、前記方法は
第1のスレッドの第1の命令において例外条件を検出するステップを含み、前記第1の命令は、前記第1の命令に続く前記第1のスレッドの第2の命令のディスパッチを必要とするものであって、
さらに前記方法は、前記共用ディスパッチ・パイプライン内の前記第2のスレッドの命令に関してディスパッチ・フラッシュ・オペレーションを発行するステップを含み、前記第2の命令は、前記共用ディスパッチ・パイプライン内の前記第2のスレッドのブロック命令によってディスパッチをブロックされる方法。
(2)前記ブロック命令は、前記第1の命令が完了するまで解放されない前記第1の命令によって使用されるリソース要件を有することを理由に、前記第2の命令をブロックしている、請求項1に記載の方法。
(3)前記ブロック命令が、いずれかの命令が前記共用ディスパッチ・パイプラインからディスパッチされる前に合致しなければならない長い待ち時間の共用リソース要件を有するかどうかを判定するステップと、
前記第2のスレッドのフラッシュ済み命令が再フェッチされる時点、および前記フラッシュ済み命令中で選択された命令に応答して共用ディスパッチ・パイプラインに再入する時点を制御する、選択済みホールドを設定するホールド・コマンドを発行するステップとを含む、請求項1に記載の方法。
(4)前記選択済みホールドは、前記第2のスレッドの命令が、前記ディスパッチ・パイプライン内のディスパッチ待ち行列からフラッシュし、前記ディスパッチ待ち行列に入るが、前記CLBホールドが除去されるまでディスパッチされないことを可能にする、キャッシュ・ライン・バッファ(CLB)ホールドである、請求項3に記載の方法。
(5)前記ブロック命令は、変換索引バッファ例外無効化(Translation Look Aside Buffer Invalidate Exception)命令またはSync命令を含む、請求項3に記載の方法。
(6)共用ディスパッチ・パイプラインを有する同時マルチスレッド(SMT)プロセッサであって、前記プロセッサは、
第1のスレッドの第1の命令において例外条件を検出するための回路を含み、前記第1の命令は、前記第1の命令に続く前記第1のスレッドの第2の命令のディスパッチを必要とするものであって、
さらに前記プロセッサは、前記共用ディスパッチ・パイプライン内の前記第2のスレッドの命令に関してディスパッチ・フラッシュ・オペレーションを発行する回路を含み、前記第2の命令は、前記共用ディスパッチ・パイプライン内の前記第2のスレッドのブロック命令によってディスパッチをブロックされるプロセッサ。
(7)前記ブロック命令は、前記第1の命令が完了するまで解放されない前記第1の命令によって使用されるリソース要件を有することを理由に、前記第2の命令をブロックしている、請求項6に記載のプロセッサ。
(8)前記ブロック命令が、いずれかの命令が前記共用ディスパッチ・パイプラインからディスパッチされる前に合致しなければならない長い待ち時間の共用リソース要件を有するかどうかを判定するための回路と、
前記第2のスレッドのフラッシュ済み命令が再フェッチされる時点、および前記フラッシュ済み命令中で選択された命令に応答して共用ディスパッチ・パイプラインに再入する時点を制御する、選択済みホールドを設定するホールド・コマンドを発行するための回路とを含む、請求項6に記載のプロセッサ。
(9)前記選択済みホールドは、前記第2のスレッドの命令が、前記ディスパッチ・パイプライン内のディスパッチ待ち行列からフラッシュし、前記ディスパッチ待ち行列に入るが、前記CLBホールドが除去されるまでディスパッチされないことを可能にする、キャッシュ・ライン・バッファ(CLB)ホールドである、請求項8に記載のプロセッサ。
(10)前記ブロック命令は、変換索引バッファ例外無効化命令またはSync命令を含む、請求項8に記載のプロセッサ。
(11)1つまたは複数の同時マルチスレッド(SMT)プロセッサを有する中央処理ユニット(CPU)と、
ランダム・アクセス・メモリ(RAM)と、
入力出力(I/O)アダプタと、
通信アダプタと、
前記CPU、RAM、I/Oアダプタ、および前記通信アダプタを結合するバスと、
第1のスレッドの第1の命令において例外条件を検出するための回路とを含む、データ処理システムであって、前記第1の命令は、前記第1の命令に続く前記第1のスレッドの第2の命令のディスパッチを必要とするものであって、
さらに前記データ処理システムは、前記共用ディスパッチ・パイプライン内の前記第2のスレッドの命令に関してディスパッチ・フラッシュ・オペレーションを発行する回路を含み、前記第2の命令は、前記共用ディスパッチ・パイプライン内の前記第2のスレッドのブロック命令によってディスパッチをブロックされるデータ処理システム。
(12)前記ブロック命令は、前記第1の命令が完了するまで解放されない前記第1の命令によって使用されるリソース要件を有することを理由に、前記第2の命令をブロックしている、請求項11に記載のデータ処理システム。
(13)前記ブロック命令が、いずれかの命令が前記共用ディスパッチ・パイプラインからディスパッチされる前に合致しなければならない長い待ち時間の共用リソース要件を有するかどうかを判定するための回路と、
前記第2のスレッドのフラッシュ済み命令が再フェッチされる時点、および前記フラッシュ済み命令中で選択された命令に応答して共用ディスパッチ・パイプラインに再入する時点を制御する、選択済みホールドを設定するホールド・コマンドを発行するための回路とを含む、請求項11に記載のデータ処理システム。
(14)前記選択済みホールドは、前記第2のスレッドの命令が、前記ディスパッチ・パイプライン内のディスパッチ待ち行列からフラッシュし、前記ディスパッチ待ち行列に入るが、前記CLBホールドが除去されるまでディスパッチされないことを可能にする、キャッシュ・ライン・バッファ(CLB)ホールドである、請求項13に記載のデータ処理システム。
(15)前記ブロック命令は、変換索引バッファ例外無効化命令またはSync命令を含む、請求項13に記載のデータ処理システム。
本発明の実施形態に従ったSMTプロセッサの機能ユニットを示すブロック図である。 SMTプロセッサにおいて、命令グループをディスパッチする際に使用される方法のステップを示す流れ図である。 本発明の実施形態に従った方法のステップを示す流れ図である。 本発明を実施するための代表的なハードウェア環境を示す図である。 SMTプロセッサにおいて、ディスパッチ・フラッシュ・オペレーションに使用される方法のステップを示す流れ図である。
符号の説明
101 バス・インターフェース・ユニット BIU
102 D−Cache
103 IFAR
104 I−Cache
108 IFU
113 命令シーケンサ
114 FXU
115 GPRファイル
GP名前変更バッファ
116 LSU
117 FPRファイル
FP名前変更バッファ
118 FPU
119 完了ユニット
131 命令発行待ち行列
132 IDU
133 スレッド・セレクタ
134 プログラム・カウンタ
135 待ち行列T0
136 待ち行列T1
137 スレッド優先順位セレクタ
139 メモリ
140 ディスパッチ段階
150 レジスタ名前変更
410 CPU(SMTプロセッサ)
412 バス

Claims (12)

  1. 共用ディスパッチ・パイプラインを有し、複数のスレッドが共用リソース要件を共用するSMTプロセッサにおいて命令流れを管理するための方法であって、前記方法は、
    第1のスレッドの第1の命令において例外条件を検出するステップを含み、前記第1の命令は、前記第1の命令に続く前記第1のスレッドの第2の命令のディスパッチを必要とするものであって、
    さらに前記方法は、前記共用ディスパッチ・パイプライン内の前記第2のスレッドの命令に関してディスパッチ・フラッシュ・オペレーションを発行するステップを含み、前記第2の命令は、前記共用ディスパッチ・パイプライン内の前記第2のスレッドが前記共用リソース要件を使用するために発行するブロック命令によってディスパッチをブロックされており、命令ディスパッチ・ユニット(IDU)に対して前記ディスパッチ・フラッシュ・オペレーションを発行して前記第2のスレッドの命令をフラッシュすることにより、前記第1のスレッドの前記第2の命令をディスパッチする方法。
  2. 前記ブロック命令が、いずれかの命令が前記共用ディスパッチ・パイプラインからディスパッチされる前に合致しなければならない長い待ち時間の共用リソース要件を有するかどうかを判定するステップと、
    前記第2のスレッドのフラッシュ済み命令が再フェッチされる時点、および前記フラッシュ済み命令中で選択された命令に応答して共用ディスパッチ・パイプラインに再入する時点を制御する、選択済みホールドを設定するホールド・コマンドを発行するステップとを含む、請求項1に記載の方法。
  3. 前記選択済みホールドは、前記第2のスレッドの命令が、前記ディスパッチ・パイプライン内のディスパッチ待ち行列からフラッシュし、前記ディスパッチ待ち行列に入るが、前記CLBホールドが除去されるまでディスパッチされないことを可能にする、キャッシュ・ライン・バッファ(CLB)ホールドである、請求項2に記載の方法。
  4. 前記ブロック命令は、変換索引バッファ例外無効化(Translation Look Aside Buffer Invalidate Exception)命令またはSync命令を含む、請求項2に記載の方法。
  5. 共用ディスパッチ・パイプラインを有し、複数のスレッドが共用リソース要件を共用する同時マルチスレッド(SMT)プロセッサであって、前記プロセッサは、
    第1のスレッドの第1の命令において例外条件を検出するための回路を含み、前記第1の命令は、前記第1の命令に続く前記第1のスレッドの第2の命令のディスパッチを必要とするものであって、
    さらに前記プロセッサは、前記共用ディスパッチ・パイプライン内の前記第2のスレッドの命令に関してディスパッチ・フラッシュ・オペレーションを発行する回路を含み、前記第2の命令は、前記共用ディスパッチ・パイプライン内の前記第2のスレッドが前記共用リソース要件を使用するために発行するブロック命令によってディスパッチをブロックされており、命令ディスパッチ・ユニット(IDU)に対して前記ディスパッチ・フラッシュ・オペレーションを発行して前記第2のスレッドの命令をフラッシュすることにより、前記第1のスレッドの前記第2の命令をディスパッチするプロセッサ。
  6. 前記ブロック命令が、いずれかの命令が前記共用ディスパッチ・パイプラインからディスパッチされる前に合致しなければならない長い待ち時間の共用リソース要件を有するかどうかを判定するための回路と、
    前記第2のスレッドのフラッシュ済み命令が再フェッチされる時点、および前記フラッシュ済み命令中で選択された命令に応答して共用ディスパッチ・パイプラインに再入する時点を制御する、選択済みホールドを設定するホールド・コマンドを発行するための回路とを含む、請求項5に記載のプロセッサ。
  7. 前記選択済みホールドは、前記第2のスレッドの命令が、前記ディスパッチ・パイプライン内のディスパッチ待ち行列からフラッシュし、前記ディスパッチ待ち行列に入るが、前記CLBホールドが除去されるまでディスパッチされないことを可能にする、キャッシュ・ライン・バッファ(CLB)ホールドである、請求項6に記載のプロセッサ。
  8. 前記ブロック命令は、変換索引バッファ例外無効化命令またはSync命令を含む、請求項6に記載のプロセッサ。
  9. 1つまたは複数の同時マルチスレッド(SMT)プロセッサを有する中央処理ユニット(CPU)と、
    ランダム・アクセス・メモリ(RAM)と、
    入力出力(I/O)アダプタと、
    通信アダプタと、
    前記CPU、RAM、I/Oアダプタ、および前記通信アダプタを結合するバスと、
    第1のスレッドの第1の命令において例外条件を検出するための回路とを含む、データ処理システムであって、前記第1の命令は、前記第1の命令に続く前記第1のスレッドの第2の命令のディスパッチを必要とするものであって、
    さらに前記データ処理システムは、前記共用ディスパッチ・パイプライン内の前記第2のスレッドの命令に関してディスパッチ・フラッシュ・オペレーションを発行する回路を含み、前記第2の命令は、前記共用ディスパッチ・パイプライン内の前記第2のスレッドが共用リソース要件を使用するために発行するブロック命令によってディスパッチをブロックされており、命令ディスパッチ・ユニット(IDU)に対して前記ディスパッチ・フラッシュ・オペレーションを発行して前記第2のスレッドの命令をフラッシュすることにより、前記第1のスレッドの前記第2の命令をディスパッチするデータ処理システム。
  10. 前記ブロック命令が、いずれかの命令が前記共用ディスパッチ・パイプラインからディスパッチされる前に合致しなければならない長い待ち時間の共用リソース要件を有するかどうかを判定するための回路と、
    前記第2のスレッドのフラッシュ済み命令が再フェッチされる時点、および前記フラッシュ済み命令中で選択された命令に応答して共用ディスパッチ・パイプラインに再入する時点を制御する、選択済みホールドを設定するホールド・コマンドを発行するための回路とを含む、請求項9に記載のデータ処理システム。
  11. 前記選択済みホールドは、前記第2のスレッドの命令が、前記ディスパッチ・パイプライン内のディスパッチ待ち行列からフラッシュし、前記ディスパッチ待ち行列に入るが、前記CLBホールドが除去されるまでディスパッチされないことを可能にする、キャッシュ・ライン・バッファ(CLB)ホールドである、請求項10に記載のデータ処理システム。
  12. 前記ブロック命令は、変換索引バッファ例外無効化命令またはSync命令を含む、請求項10に記載のデータ処理システム。
JP2004105227A 2003-04-24 2004-03-31 例外条件を解消するために同時マルチスレッド・プロセッサでディスパッチ・フラッシュを使用する方法 Expired - Fee Related JP3919764B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/422,676 US7213135B2 (en) 2003-04-24 2003-04-24 Method using a dispatch flush in a simultaneous multithread processor to resolve exception conditions

Publications (2)

Publication Number Publication Date
JP2004326748A JP2004326748A (ja) 2004-11-18
JP3919764B2 true JP3919764B2 (ja) 2007-05-30

Family

ID=33298952

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004105227A Expired - Fee Related JP3919764B2 (ja) 2003-04-24 2004-03-31 例外条件を解消するために同時マルチスレッド・プロセッサでディスパッチ・フラッシュを使用する方法

Country Status (2)

Country Link
US (1) US7213135B2 (ja)
JP (1) JP3919764B2 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7653906B2 (en) * 2002-10-23 2010-01-26 Intel Corporation Apparatus and method for reducing power consumption on simultaneous multi-threading systems
US9323571B2 (en) * 2004-02-06 2016-04-26 Intel Corporation Methods for reducing energy consumption of buffered applications using simultaneous multi-threading processor
US7370243B1 (en) * 2004-06-30 2008-05-06 Sun Microsystems, Inc. Precise error handling in a fine grain multithreaded multicore 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
US7603544B2 (en) 2004-12-23 2009-10-13 Intel Corporation Dynamic allocation of a buffer across multiple clients in multi-threaded processor without performing a complete flush of data associated with allocation
US7657891B2 (en) 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7506140B2 (en) * 2005-02-04 2009-03-17 Mips Technologies, Inc. Return data selector employing barrel-incrementer-based round-robin apparatus
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
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
US7752627B2 (en) * 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor
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
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
US7681014B2 (en) * 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
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
US7478276B2 (en) * 2005-02-10 2009-01-13 International Business Machines Corporation Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor
US7266674B2 (en) * 2005-02-24 2007-09-04 Microsoft Corporation Programmable delayed dispatch in a multi-threaded pipeline
US7409589B2 (en) 2005-05-27 2008-08-05 International Business Machines Corporation Method and apparatus for reducing number of cycles required to checkpoint instructions in a multi-threaded processor
US7805712B2 (en) * 2005-07-29 2010-09-28 Bea Systems, Inc. System and method for multi-threaded resolver with versioning
US20070038981A1 (en) * 2005-07-29 2007-02-15 Timothy Hanson System and method for multi-threaded resolver with deadlock detection
US7523264B1 (en) * 2005-12-15 2009-04-21 Nvidia Corporation Apparatus, system, and method for dependent computations of streaming multiprocessors
US7492368B1 (en) 2006-01-24 2009-02-17 Nvidia Corporation Apparatus, system, and method for coalescing parallel memory requests
US9606800B1 (en) * 2012-03-15 2017-03-28 Marvell International Ltd. Method and apparatus for sharing instruction scheduling resources among a plurality of execution threads in a multi-threaded processor architecture
US9621633B2 (en) 2013-03-15 2017-04-11 Intel Corporation Flow director-based low latency networking
US10599431B2 (en) 2017-07-17 2020-03-24 International Business Machines Corporation Managing backend resources via frontend steering or stalls
US10365928B2 (en) 2017-11-01 2019-07-30 International Business Machines Corporation Suppress unnecessary mapping for scratch register

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4200912A (en) * 1978-07-31 1980-04-29 Motorola, Inc. Processor interrupt system
DE4434895C2 (de) * 1993-12-23 1998-12-24 Hewlett Packard Co Verfahren und Vorrichtung zur Behandlung von Ausnahmebedingungen
US6055650A (en) * 1998-04-06 2000-04-25 Advanced Micro Devices, Inc. Processor configured to detect program phase changes and to adapt thereto
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
US6694425B1 (en) 2000-05-04 2004-02-17 International Business Machines Corporation Selective flush of shared and other pipeline stages in a multithread 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

Also Published As

Publication number Publication date
JP2004326748A (ja) 2004-11-18
US7213135B2 (en) 2007-05-01
US20040215944A1 (en) 2004-10-28

Similar Documents

Publication Publication Date Title
JP3919764B2 (ja) 例外条件を解消するために同時マルチスレッド・プロセッサでディスパッチ・フラッシュを使用する方法
US7469407B2 (en) Method for resource balancing using dispatch flush in a simultaneous multithread processor
JP3927546B2 (ja) 同時マルチスレッド化プロセッサ
JP3716414B2 (ja) 同時マルチスレッド化プロセッサ
US10061588B2 (en) Tracking operand liveness information in a computer system and performing function based on the liveness information
US7363625B2 (en) Method for changing a thread priority in a simultaneous multithread processor
US7093106B2 (en) Register rename array with individual thread bits set upon allocation and cleared upon instruction completion
US8335911B2 (en) Dynamic allocation of resources in a threaded, heterogeneous processor
US7254697B2 (en) Method and apparatus for dynamic modification of microprocessor instruction group at dispatch
US20080126771A1 (en) Branch Target Extension for an Instruction Cache
US6981128B2 (en) Atomic quad word storage in a simultaneous multithreaded system
JP2006114036A (ja) Smtディスパッチのための命令グループ形成およびメカニズム
US7194603B2 (en) SMT flush arbitration
US11829187B2 (en) Microprocessor with time counter for statically dispatching instructions
US7013400B2 (en) Method for managing power in a simultaneous multithread processor by loading instructions into pipeline circuit during select times based on clock signal frequency and selected power mode
US11829767B2 (en) Register scoreboard for a microprocessor with a time counter for statically dispatching instructions
JP2020091751A (ja) 演算処理装置および演算処理装置の制御方法
US6119220A (en) Method of and apparatus for supplying multiple instruction strings whose addresses are discontinued by branch instructions
US20230315474A1 (en) Microprocessor with apparatus and method for replaying instructions
US20240311156A1 (en) Microprocessor with apparatus and method for replaying load instructions
US20240311157A1 (en) Microprocessor with apparatus and method for handling of instructions with long throughput
US20230342153A1 (en) Microprocessor with a time counter for statically dispatching extended instructions
EP4453720A1 (en) Microprocessor with time counter for statically dispatching instructions

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051004

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20051031

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20051031

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051221

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060516

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060811

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20060920

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20070206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070213

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110223

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120223

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees