JP2004518183A - マルチスレッド・システムにおける命令のフェッチとディスパッチ - Google Patents
マルチスレッド・システムにおける命令のフェッチとディスパッチ Download PDFInfo
- Publication number
- JP2004518183A JP2004518183A JP2002512805A JP2002512805A JP2004518183A JP 2004518183 A JP2004518183 A JP 2004518183A JP 2002512805 A JP2002512805 A JP 2002512805A JP 2002512805 A JP2002512805 A JP 2002512805A JP 2004518183 A JP2004518183 A JP 2004518183A
- Authority
- JP
- Japan
- Prior art keywords
- branch
- fetch
- instruction
- prediction
- taken
- 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
Links
- 238000000034 method Methods 0.000 claims description 32
- 230000008569 process Effects 0.000 claims description 14
- 230000008859 change Effects 0.000 claims description 10
- 238000013459 approach Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000000593 degrading effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
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
Description
(技術分野)
本発明は、マイクロプロセッサの分野に関し、より具体的には、同時マルチスレッド・プロセッサの構造及び機能に関する。
【0002】
(関連書類への相互参照)
本願は、2000年6月16日に出願された先行同時係属特許出願第09/595,776号の一部継続出願(CIP)であり、前記出願第09/595,776号は、1998年12月16日に出願された先行同時係属特許出願第09/216,017号、1999年1月27日に出願された第09/240,012号、1999年3月22日に出願された第09/273,810号、及び1999年5月14日に出願された第09/312,302号のCIPである。これらの5つの出願は、全て、参照して全体をここに組み込まれる。
【0003】
(発明の背景)
多数のスレッドを処理することのできるマルチストリーミング・プロセッサは技術分野で知られており、多くの研究開発の主題であった。本発明は、この分野における先行研究に注意し、その研究を土台として、装置及び方法の自明でない新規な改善を技術分野にもたらすものである。発明者は、この特許出願と共に、マルチストリーミング・プロセッサの技術分野における多数の既出版文献をリストした情報開示ステートメントを提出した。それらは、ここに開示された本発明の幾つかの態様について、追加の背景及び状況を提供する。
【0004】
定義を目的として、この明細書では、処理システムに関連したストリームとは、命令のスレッドをサポート及び処理するための、プロセッサのハードウェア能力を意味する。スレッドとは、ストリームの中で走行する実際のソフトウェアである。例えば、デスクトップ・コンピュータを作動するCPUとして実現されるマルチストリーミング・プロセッサは、例えば、ワード処理プログラム及びオブジェクト指向描画プログラムなどの2つ以上のアプリケーションからのスレッドを同時に処理することができる。他の例として、マルチストリーミング可能なプロセッサは、例えば、パケット交換ネットワークにおけるルータなどのように、定常的な人間による命令がなくともマシンを作動させることができる。例えば、ルータにおいて、データ・パケットを処理してネットワークへ転送する1つ又は複数のスレッドが存在し、またネットワークへ接続された他のルータ及びサーバとサービス品質(QoS)について交渉する他のスレッドが存在し、またルーティング・テーブルなどを保守する他のスレッドが存在しうる。多数の並列スレッドを処理するマルチストリーミング・プロセッサの最大能力は、プロセッサがサポートするハードウェア・ストリームの数に固定される。
【0005】
単一のスレッドを作動するマルチストリーミング・プロセッサは、シングルストリーム・プロセッサとして動作し、使用されないストリームはアイドルになる。説明の目的のために、ストリームは、スレッドをサポートする全ての時点でアクティブであり、そうでなければイナクティブであると考えられる。相互参照セクションでリストされた様々な関連ケース、及び相互参照特許出願の少なくとも1つに含められたIDSの文献から分かるように、スーパースカラ・プロセッサも技術分野で知られている。スーパースカラ・プロセッサとは、1つ又は複数のタイプの機能ユニットを複数個含み、並列命令を多数の機能ユニットへ出すことができるプロセッサを意味する。今日構築される大部分の中央処理ユニット(CPU)は、各々のタイプの機能ユニットを複数個有し、前記の定義によれば、スーパースカラ・プロセッサである。幾つかのCPUは、例えば、多数の浮動小数点ユニット、整数ユニット、論理ユニット、ロード/ストアユニットなどを含む多くのユニットを有する。マルチストリーミング・スーパースカラ・プロセッサも、技術分野で知られている。
【0006】
従来技術のプロセッサは、シングルストリーミング・プロセッサであれ、ダイナミックなマルチストリーミング・プロセッサであれ、通常、パイプラインを使用する。技術分野で知られるように、パイプラインとは、多数の命令が、実行へ進むステップのキューの中に入れられ、命令の実行をスピードアップする技法である。大部分のプロセッサは、命令の実行をパイプラインで処理し、従って、命令は、実行されるまで数ステップを取る。RISCアーキテクチャにおける典型的な段階の簡単な説明を、以下に記す。
(a)フェッチ段階: 命令はメモリからフェッチされる。
(b)デコード段階: 命令がデコードされる。
(c)読み出し/ディスパッチ段階: ソース・オペランドがレジスタ・ファイルから読み出される。
(d)実行段階: 操作が実行され、アドレスが計算されるか、分岐が解決される。
(e)アクセス段階: データがアクセスされる。
(f)書き込み段階: 結果がレジスタへ書き込まれる。
【0007】
パイプラインの段階は、1つのクロック・サイクルを取り、従って、サイクルは最も遅い操作が可能であるように十分長くなければならない。本発明は、命令を実行することができない状況がパイプラインの中に存在することと関連している。そのような事象は、技術分野でハザードと呼ばれる。通常、3つのタイプのハザードが存在する。
(a)構造的ハザード
(b)データ・ハザード
(c)制御ハザード
【0008】
構造的ハザードとは、同じクロック・サイクルで実行される命令の組み合わせをサポートする適切なリソース(例えば、機能ユニット)が存在しないことを意味する。データ・ハザードは、解決されていない1つ又は複数の先行命令の結果に命令が依存する時に生じる。データ・ハザードの影響を軽減するためには、通常、転送手法又はバイパス手法が使用される。制御ハザードは、プログラム・カウンタ(PC)を変更する分岐及び他の命令のパイプラインから生じる。この場合、パイプラインは、分岐が解決されるまで停止される。
【0009】
分岐における停止は、プロセッサの性能(1サイクル当たりに実行される命令の数、すなわちIPCによって測定される)に劇的な影響を与える。パイプラインが長く、スーパースカラが広ければ、それだけ負の影響が大きくなる。停止のコストは非常に高いので、分岐の結果を予測することが、技術分野で普通に行なわれる。分岐予測手段は、分岐が「取られる」か「取られない」か、及び目標アドレスを予測する。分岐予測手段は静的であっても動的であってよい。動的分岐予測手段は、プログラム実行の間に、所与の分岐の予測を変更することができる。
【0010】
分岐予測の典型的なアプローチは、各々の分岐について履歴を保存し、過去を使用して将来を予測することである。例えば、もし所与の分岐が過去で常に取られたのであれば、同じ分岐が将来で再び取られる高い確率が存在する。他方、もし分岐が2回取られ、5回取られず、再び1回とられた、のように続くなら、予測は低い信頼レベルを有するであろう。予測が違うと、パイプラインはフラッシュされなければならず、パイプラインの制御によって、推測が間違った分岐に続く命令が確実に廃棄され、適切な目標アドレスからパイプラインを再スタートしなければならない。これは、コストのかかる操作である。
【0011】
マルチストリーミング・プロセッサ・アーキテクチャは、微細であるか粗大であってよい。粗大マルチストリーミング・プロセッサは、通常、多数のコンテキストを有する。これらのコンテキストは、例えば、キャッシュ・ミスに起因する長い待ち時間をカバーするために使用される。所与の時間では、ただ1つのスレッドが実行される。対照的に、例えば、本発明者が関係しているXStream Logic社の開発であるダイナミック・マルチストリーミング(DMS)などの微細マルチストリーミング技術は、単一プロセッサでの真のマルチタスキング又はマルチストリーミングを可能にし、多数の個別のスレッド又はタスクからの命令を並列に実行する。DMSプロセッサは、CPUレジスタ又はハードウェア・コンテキストの多数の集合を実装し、このスタイルの実行をサポートする。
【0012】
プロセッサのために命令レベルの並列(instruction level parallelism(ILP))の相対的量を増加することは、データ・ハザード及び制御ハザードを減少させ、従って、アプリケーションは、並列のピークレベルの間、増加する数の機能ユニットを利用することができ、今日の汎用スーパースカラ・プロセッサにおけるダイナミック・マルチストリーミング(DMS)のハードウェア及び手法は、ILPの量を増加してワークロード内で更に均一にILPを配分することによって、性能を著しく改善する。しかし、依然として、DMSプロセッサにおける命令のフェッチ及びディスパッチの選択がまずいために、性能を低下させる場合が存在する。
【0013】
明らかに必要とされるものは、ダイナミック・マルチストリーミング・プロセッサにおいて、特にフェッチ及びディスパッチ操作の時点でパイプラインのヒット/ミス予測を利用する改善された方法及び装置である。
【0014】
(発明の概要)
本発明の好ましい実施形態では、マルチストリーミング・プロセッサにおいて、多数のストリームの中の個々のストリームから命令をパイプラインへフェッチするシステムが、提供される。このシステムは、どのストリームから命令をフェッチするかを選択するフェッチ・アルゴリズム、及び分岐命令の分岐選択が取られるかどうかを予測する分岐予測手段を含む。分岐予測手段による予測は、どのストリームからフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される。
【0015】
幾つかの実施形態において、分岐が取られないだろうという予測は、フェッチ・プロセスに変化を引き起こさない。更に、分岐が取られるだろうという予測は、異なったストリームへフェッチの切り替えを生じる。
【0016】
幾つかの場合には、分岐予測手段は、分岐選択が取られる確率を決定し、その確率は、どこから次の命令をフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される。他の実施形態において、分岐予測手段の予測は、更に、パイプラインから機能ユニットへディスパッチする命令を選択する時にディスパッチ・アルゴリズムによって使用される。
【0017】
本発明の他の態様では、マルチストリーミング・プロセッサにおいて、多数のストリームの中の個々のストリームから命令をパイプラインへフェッチするシステムが、提供される。このシステムは、どのストリームから命令をフェッチするかを選択するフェッチ・アルゴリズム、及び分岐命令の分岐選択が取られるかどうかを予測する分岐予測手段、又は命令がデータ・キャッシュでヒット又はミスするかどうかを予測するヒット/ミス予測手段の一方又は双方を含む。この実施形態において、予測手段のいずれか又は双方による予測は、どのストリームからフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される。
【0018】
幾つかの実施形態において、分岐が取られないだろうという予測、又は命令がデータ・キャッシュでヒットするだろうという予測は、フェッチ・プロセスに変化を引き起こさない。更に、幾つかの実施形態において、分岐が取られるだろうという予測、又は命令はデータ・キャッシュでミスするだろうという予測は、異なったストリームへフェッチの切り替えを生じる。
【0019】
幾つかの場合において、分岐予測手段の一方又は双方は、分岐選択が取られる確率、又は命令がキャッシュでミスする確率を決定し、その確率は、どこから次の命令をフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される。更に、一方又は双方の予測手段の予測は、パイプラインから機能ユニットへディスパッチする命令を選択する時にディスパッチ・アルゴリズムによって使用される。
【0020】
更に、本発明の他の態様において、どのストリームから命令をフェッチするかを選択するフェッチ・アルゴリズム、及び分岐命令によって提案されたジャンプが取られるかどうかを予測する分岐予測手段を含むマルチストリーミング・プロセッサが提供される。分岐予測手段による予測は、どのストリームからフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される。
【0021】
これらの実施形態の幾つかにおいて、分岐が取られないだろうという予測は、フェッチ・プロセスに変化を引き起こさず、分岐が取られるだろうという予測は、異なったストリームへフェッチの切り替えを生じる。分岐予測手段は、分岐が取られる確率を決定することができ、その確率は、どこから次の命令をフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される。幾つかの場合には、分岐予測手段の予測は、更に、パイプラインから機能ユニットへディスパッチする命令を選択する時にディスパッチ・アルゴリズムによって使用される。
【0022】
更に、他の実施形態において、個々のスレッドを走らせる多数の物理ストリーム、データ・キャッシュ、どのストリームから命令をフェッチするかを選択するフェッチ・アルゴリズム、及び分岐命令の分岐選択が取られるかどうかを予測する分岐予測手段、又は命令がデータ・キャッシュでヒット又はミスするかどうかを予測するヒット/ミス予測手段の一方又は双方を含むマルチストリーミング・プロセッサが提供される。予測手段のいずれか又は双方による予測は、どのストリームからフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される。幾つかの実施形態において、分岐が取られないだろうという予測、又は命令がデータ・キャッシュでヒットするだろうという予測は、フェッチ・プロセスに変化を引き起こさず、他の実施形態においては、分岐が取られるだろうという予測、又は命令がデータ・キャッシュでミスするだろうという予測は、異なったストリームへフェッチの切り替えを生じる。
【0023】
幾つかの場合において、分岐予測手段の一方又は双方は、分岐選択が取られる確率、又は命令がキャッシュでミスする確率を決定し、それらの確率は、どこから次の命令をフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される。一方又は双方の予測手段の予測は、パイプラインから機能ユニットへディスパッチする命令を選択する時にディスパッチ・アルゴリズムによって使用される。
【0024】
本発明を実施する方法も教示される。また、この後で詳細に説明される様々な実施形態において、最初に、装置及び方法がマルチストリーミング・プロセッサへ応用されて、それらの性能が著しく改善される。
【0025】
(好ましい実施の形態の説明)
図1aは、本発明の実施形態に従ったダイナミック・マルチストリーミング(DMS)プロセッサにおけるパイプラインの略図である。この略図において、パイプラインは7つの段階を有する。それらの段階は、フェッチ、デコード、読み出し、ディスパッチ、実行、アクセス、及び書き込みである。これらの段階は、前記の背景セクションで説明したものと同じであるが、図1aでは、機能を示すため読み出しとディスパッチが分離されている。本発明がディスパッチへ情報を付加し、プロセッサの性能を改善している点で、ディスパッチは本発明において重要である。パイプライン内のフェッチ段階は、多数のストリームから命令をパイプラインの中へフェッチし、本発明の実施形態では、選択的フェッチの能力を有する。
【0026】
パイプラインの各々の段階に命令が存在することは、動作しているプロセッサの要件ではないが、そのような場合があり、発明者は、説明の混乱を避けるため、各々の段階が単一の命令によって占有されている例を選択した。多くの場合、様々な段階に複数の命令が存在するか、全く存在しないことがある。
【0027】
図1aにおいて、パイプライン内の命令は、任意に、パイプラインの連続した段階の1時点で命令AからGとして示される。図1bは、1サイクル経過した後の図1aのパイプラインを示す。命令Aはフェッチからデコードへ移動し、図1aに示される他の命令は、同様に1段階だけ前方へ移動していることに注意されたい。更に、新しい命令Hが、フェッチ段階でパイプラインへ入っている。
【0028】
図1cは、1サイクル経過した後の同じパイプラインを示す。全ての命令は、更に前方へ1段階移動し、新しい命令Iがフェッチ段階でパイプラインへ入っている。図1dは、更に1サイクル後の同じパイプラインを示す。その時点で、命令は更に前方へ移動しており、更に他の命令Jがパイプラインへ入っている。
【0029】
4番目のサイクルの後で、命令Aはフェッチからディスパッチへ移動したことに注意されたい。この例において、命令Aは、キャッシュからデータ値をロードするロード命令であると仮定する。もしそうであれば、特定のデータがキャッシュの中にあるか否かについて或る確率が存在するであろう。当技術分野において、これはヒット/ミス確率として知られる。もしデータがキャッシュの中にあれば、システムはヒットを記録する。もしなければ、システムはミスを記録する。
【0030】
ロード操作のヒット/ミス確率と、パイプライン・アーキテクチャとの組み合わせは、プロセッサの効率に重要である。なぜなら、従来の場合、パイプライン内の一般的シーケンスは、単一のスレッドからなり、典型的には、ロード命令に続く多くの命令が、ロードされたデータをどの命令が使用するかの結果に依存することに関連するからである。即ち、ロードされたデータをどの命令が使用するかが解決されるまで、多くの後続の命令は実行されることができない。例外は、幾つかの場合に、投機ベースで実行される場合である。
【0031】
従来のプロセッサは、ロード命令がパイプラインに入ると、単純にヒットと仮定する。しかし、もしロードがミスであれば、一度、ロード命令が実行されると、キャッシュの中に存在しない必要なデータをメモリからロードするのに、多数のサイクルを取るかも知れない。都合が悪いことに、ロード命令がディスパッチされて実行されるまで、ミスは明らかにならないだろう。後続の命令は、データがロードされ、そのデータに依存する命令が実行されるまで、停止しなければならない。
【0032】
本発明者は、マルチスレッド・アーキテクチャにおけるデータ・キャッシュ・ミスの影響を減少させる装置及び方法を提供する。この手法は、DMSの多数のストリームで走行するスレッドの各々について、データ・キャッシュへの次のアクセスがミスになるかどうかを予測することからなる。もしミスになれば、(一般的に)次のようになる。
【0033】
フェッチ段階で、どのストリームからフェッチするかを決定する時に、ストリームに低い優先順位を与えることができる。
【0034】
データ・キャッシュにアクセスする命令の従属命令は、ディスパッチ段階で、より効率的に機能ユニット(FU)へディスパッチされることができる。
【0035】
この新規な装置及び手法は、命令をフェッチ及びディスパッチする時に、マルチストリーミング・プロセッサの性能を改善する。
【0036】
(ヒット/ミスの予測によるフェッチ)
新しい手法は次の事実を利用する、すなわち、DMSプロセッサにおいて、命令はストリームの中の個々のストリームからパイプラインへフェッチされるので、どのストリームから命令をフェッチするかをサイクル・ベースで選択するフェッチ方針又はアルゴリズムの選択に自由度が存在するということである。
【0037】
マルチストリーミング・アーキテクチャにおいて、ここで提案される手法を使用しない場合に、スレッドの切り替えを生じる典型的な事象は、データ・キャッシュ・ミスである。必要なデータは、利用可能になるまで数サイクルを取るかも知れないので(正確な数は、実際に、データがプロセッサのメモリ階層のどこに存在するかに依存する)、データ・キャッシュでミスしたスレッドは、他へ切り替えられる。なぜなら、ミスする可能性が最も高い命令の従属命令は、データへの依存性に起因して実行しないからである。従って、他のスレッドからの命令のフェッチと実行によって、より多くの作業を行なうことができる。この場合、ミスした命令の後続命令であって既にフェッチされた命令は、フラッシュにより消去される必要があり、従って、有用な命令がフェッチされる場合と比較して、プロセッサの性能を低下させるだろう。
【0038】
命令がデータ・キャッシュでミスする事実を、プロセスの中で早期に知ることができれば、結局はフラッシュされるかも知れない命令のフェッチを避けて、データ・キャッシュでミスする命令に続く命令の代わりに、他のストリームからの命令をフェッチすることができ、これは、フェッチされた命令が素早く実行される可能性を改善する。従って、本発明の実施形態におけるフェッチ・アルゴリズムは、全てのストリームについて、次のアクセスがデータ・キャッシュでミスするかどうかの予測を考慮に入れ、命令の実行及びコミットの可能性が最も高いスレッドを走行させるストリームからフェッチすることができる。
【0039】
ヒット/ミス予測を実現する様々な技術が既に存在する。しかし、目的は、常に同じであって、データ・キャッシュに対するヒットとミスを最も正確に予測することである。更に、そのような予測手段の望ましい特性は、できるだけ早くデータ・キャッシュへの次のアクセスを予測できることであり、それによって、パイプラインの中に入る命令(結局はフラッシュによって消去される)の数を少なくすることである。
【0040】
ここで教示される手法は、信頼レベルを予測へ関連付けることによって改善されることができる。本発明の1つの実施形態において、フェッチ段階で動作している予測手段は、予測に加えて、この信頼レベルの値を生成する。信頼レベルは、例えば、2つ以上の予測手段がデータ・キャッシュのミスを予測し、1つが切り替えで外されるように選択される場合に、フェッチ・アルゴリズムを支援する。この場合、より高い信頼レベルを有するストリームが選択される。
【0041】
図2は、マルチストリーミング・アーキテクチャにおけるフェッチ・アルゴリズムの略図である。このアルゴリズムは、ストリームの各々に関連づけられたキャッシュ・ヒット/ミス予測手段に基づいて、どのストリームからフェッチするかを決定する。図2において、予測手段は、ストリーム1、ストリーム2、...、ストリームSに関連づけられる。従って、理論的には、各々のサイクルで、S個までのストリーム(Sはマルチストリーミング・アーキテクチャによってサポートできるストリームの最大数である)から命令を同時にフェッチすることができる。しかし、実際には、実現上の制限から(例えば、命令キャッシュ・ポートの利用可能性)、フェッチ・アルゴリズムは、P個のストリーム(P<S)からの命令のフェッチに制限されるかも知れない。更に、フェッチ・アルゴリズムは、他の情報に基づいて(例えば、各々のストリームに対する分岐予測の信頼度、スレッドの優先順位、パイプラインの状態など)、どのストリームからフェッチするかを選択することも考えられる。
【0042】
これまで、データ・キャッシュに対するヒット/ミスの予測手段について説明してきた。データ・キャッシュは、性能の理由から、異なったレベル(第1のレベルL1は、プロセッサ・コアに最も近い)で実現されうることに注意すべきである。本発明の代替実施形態において、異なったヒット/ミス予測手段が、データ・キャッシュ・レベルの各々に対して存在することができる。
【0043】
本発明の代替の実施形態におけるフェッチ・アルゴリズムは、フェッチされる命令の選択を、データ・キャッシュの第2のレベルL2に対する予測をベースとすることができる。なぜなら、大部分のプロセッサ・システムにおいて、キャッシュの第2レベルにおけるミスは、サイクル数の点で非常にコストが高いからである(それに対して、L1におけるミスの不利益は、比較的小さい)。
【0044】
(分岐予測によるフェッチの弁別)
前記の「背景」セクションで幾分詳細に説明したように、制御ハザードは、プログラム・カウンタ(PC)を変更する分岐及び他の命令のパイプラインから生じる。この場合、パイプラインは、分岐が解決されるまで停止される。これまでの説明は、特に、パイプライン内の命令がデータ・キャッシュでヒットするかミスするかの確率、即ち、これらの命令を実行するために必要なデータがキャッシュの中に存在するか否かの確率に関連する。本題の場合には、キャッシュのヒット/ミス予測ではなく、分岐予測によって弁別が達成される。
【0045】
分岐での停止は、プロセッサの性能(1サイクル当たりに実行される命令の数、すなわちIPCによって測定される)に劇的な影響を与える。プロセッサ内のパイプラインが長く、スーパースカラが広くなれば、それだけ負の影響が大きくなる。停止のコストは非常に高いので、シングルストリーミング・プロセッサに関する技術では、分岐の結果を予測することが普通に行なわれる。分岐予測手段は、分岐命令が取られるかどうかを予測し、更に、分岐命令の信頼レベルと、もし分岐が取られるのであれば目標アドレスとを指示することができる。分岐予測手段は、静的であっても動的であってよい。動的分岐予測は、プログラム実行の間に、所与の分岐に対する予測を変更することができる。
【0046】
分岐予測の典型的なアプローチは、各々の分岐の履歴を保存し、過去を使用して将来を予測することである。例えば、もし所与の分岐が、過去において常に取られたのであれば、同じ分岐が将来再び取られる確率は高い。他方、もし分岐が2回取られ、5回取られず、再び1回取られるように続いたのであれば、予測は低い信頼レベルを有するであろう。予測が間違った時に、パイプラインはフラッシュされなければならず、パイプラインに制御によって、間違って推測された分岐に続く命令を確実に廃棄しなければならず、適切な目標アドレスからパイプラインを再スタートさせなければならない。これはコストのかかる操作である。
【0047】
更に、例を挙げると、図5は、特定のスレッドに対するプログラム・カウンタ(PC)シーケンスの一般的な図であり、命令0から命令9までのシーケンスを示している。命令3は分岐命令である。具体的には、もしxが2よりも小さければ命令9へジャンプし、そうでなければ、命令4からスレッドのシーケンスを継続する。パイプライン・プロセッサにおいて、分岐命令3がフェッチされる時に、それが機能ユニットへディスパッチされて解決される前に、少なくとも数サイクルが存在するので、分岐が取られるかどうかの可能性を知ることは良いことであろう。もし、分岐命令をパイプラインの中にフェッチする時点で、分岐予測手段が使用され、分岐が取られる可能性が高いことが分かり、目標アドレスが9であれば、命令9から新しい命令のパイプラインへのフェッチを開始するように決定することができる。もし可能性が低ければ、新しい命令が順次パイプラインの中へフェッチすることができ、プロセッサの性能は分岐予測手段を使用することによって著しく改善される。
【0048】
マルチストリーミング・プロセッサを含む本発明の好ましい実施形態において、本発明者は、分岐が取られるかどうかを最大の可能性で予測するため、分岐予測手段がプロセッサの各々のストリームに関連付けられるシステムを提供し、好ましい実施形態では、予測の信頼レベルを提供する。分岐予測手段の出力は、どのストリームから命令をパイプラインの中へフェッチするかの決定を助けるため、入力としてフェッチ・アルゴリズムへ送られる。
【0049】
ヒット/ミス予測の場合に説明した図2は、分岐予測の例を説明するために使用することができる。再び、S個のストリームが示され、予測手段が各々のストリームと関連付けられる。この場合の予測手段は、前述したヒット/ミス予測手段ではなく、分岐予測手段である。マルチストリーミング・プロセッサにおいて、分岐命令がフェッチされ、パイプラインへ入ると、各々のストリームに関連付けられた分岐予測手段は、分岐がパイプラインへ入る確率を決定する。予測は、示されるようにフェッチ・アルゴリズムへ入力として送られ、フェッチ・アルゴリズムは、重要な決定を行なうため、この入力、及び、恐らく他の入力も使用するように構成される。この場合、分岐が取られる確率が低いので、プロセッサは、現在使用しているフェッチ情報を継続することができる。もし目標アドレスが予測されなければ、分岐が取られる高い確率を使用して、フェッチ・アルゴリズムに、分岐命令が取られたストリームではなく異なったストリームからフェッチを開始させる。もし分岐が取られる確率が高く、目標アドレスが分岐のために予測されるなら、更なる命令を目標アドレスから開始してフェッチすることができる。
【0050】
所与の分岐のために、分岐予測手段は、分岐が取られるか否かを予測し、更に、予測の信頼レベルを生成することができる。好ましい実施形態において、信頼レベル(確率)は、0(回数の約半分が真)から1(確実)までの数pによって与えられる。1に近い値は、予測が真になる可能性が非常に高いことを意味する。好ましい実施形態において、Nビットの信頼レベル・フィールド(CLF)が分岐予測手段へ付加される。Nビットはpをディジタル化したものである。例えば、N=1である時に、もし信頼レベルが低ければCLF=0であり、そうでなければ1である。N=2である時に、確実から最低レベルまで4レベルの信頼度が存在する。フェッチ・アルゴリズムは、CLFの値に基づいて決定を行ない、例えば、最高CLFを有するストリームから分岐命令をフェッチする。低い値のCLFを有する分岐が解決される時に、もしそのストリームからのフェッチが、問題の分岐に続いて起こらないなら、その分岐のCLFは、より高い値へアップグレードされることができる。その間に、他のストリームからの命令が、占拠されたリソースを維持しながらフェッチされ、パイプラインの停止の危険性を防止する。
【0051】
(ヒット/ミス予測によるディスパッチ)
データ・キャッシュ・ヒット/ミス予測手段を使用する手法は、パイプラインのディスパッチ段階で、どの命令を命令キュー(もしあれば)から抽出し、実行のために機能ユニット(FU)へ送るかを決定するプロセスでも有用である。
【0052】
現在の技術では、命令(今後は生成手段と呼ぶ)がデータ・キャッシュへの読み出しアクセスを生成する時に、データ・キャッシュがアクセスされ、ヒット/ミスの結果が決定されるまで、結果の待ち時間を知ることはできない。生成手段によって生成されたデータの従属命令(今後は、消費手段と呼ぶ)のディスパッチは、2つの方針に従うことができる。
(a)データの利用可能性が保証される時にのみ、命令をディスパッチする。
(b)生成手段が、データ・キャッシュの第1のレベルでヒットするものと仮定して、命令をディスパッチする。
【0053】
従って、方針(b)は、消費手段命令を投機的にディスパッチする(キャッシュ内のヒット率は通常非常に高いので、生成手段命令に対してヒットが常に仮定される)。もし消費手段命令がFUへ到着し、データが依然として利用可能でなければ、命令はFUで停止しなければならないか、後のサイクルでディスパッチへ再スケジュールされなければならない(このオプションは、他の非従属命令がFUへディスパッチされることを可能にする)。とにかく、双方のオプションは、プロセッサのパフォーマンスを低下させる。
【0054】
方針(a)は、最低パフォーマンスを提供する。なぜなら、消費手段命令は、ディスパッチされる前に不必要に停止されるかも知れないからである。生成手段命令は、データ・キャッシュ内でヒットするや否や直ちにディスパッチされるか、ミスした場合は、ミスしたデータがメモリ階層の次のレベルから到着する時にディスパッチされる。他方、この方針は、再スケジュールが起こらないので、最も単純な実現形態を提供する。
【0055】
本発明の実施形態において、ヒット/ミス予測手段は、生成手段がデータ・キャッシュでヒットするかどうかを予測することによって、方針(b)の性能を高める。従って、データ・キャッシュでミスするものと予測される生成手段の消費手段命令は、方針(a)に従ってディスパッチされる。もし生成手段命令がヒットするものと予測されるなら、ディスパッチ方針は(b)である。しかし、この場合、予測が不正確である場合に備えて、再スケジュール論理が必要になる。予測がヒットであり、実際の結果がミスである場合にのみ、消費手段命令はFUで停止されるか、再スケジュールされる必要がある。
【0056】
一般的に、ディスパッチ・レベルで動作しているヒット/ミス予測手段は、データの待ち時間を予測することによって、消費手段命令のディスパッチを最適化する。もしL1におけるヒットが予測されるなら、データの待ち時間は、L1キャッシュの待ち時間であると予測される。もしミスが予測されるなら、データの予測待ち時間は、キャッシュの更なるレベルの存在およびヒット/ミス予測手段のこれらレベルの各々での存在に依存する。例えば、もし2レベルのキャッシュが存在し、L2のヒット/ミス結果が予測されるなら、データの予測待ち時間は、図3で示されるようにして計算される(注意:キャッシュの出力から、消費手段が実行される機能ユニットの入力まで、もしあれば、データを送るのに必要なサイクルは、データの予測された待ち時間へ加算される必要がある)。
【0057】
ディスパッチ論理のためにヒット/ミス予測手段が有する利点は、マルチストリーミング・プロセッサのみに限定されないが、この手法は、通常の(シングルストリーミング)プロセッサ・アーキテクチャにおけるよりも、マルチストリーミング・プロセッサにおいて大きな利点を有する。データ・ヒット/ミス予測手段を有する通常のプロセッサにおいて、データ・キャッシュのミスが予測される場合には、命令を実行することはできないか(順序内ディスパッチ・エンジンの場合)、ミスするデータに依存しない命令のみを実行することができる(順序外ディスパッチ・エンジンの場合)。いずれにせよ、プロセッサのリソースは、ミスするデータが利用可能になるまで、数サイクルの間アイドルになるかも知れない。マルチストリーミング・プロセッサにおいては、それらのアイドル・サイクルは、他のスレッドからの他の命令を実行するために使用されることができる。なぜなら、それらの命令はミスするデータに依存しないからである。従って、マルチストリーミング・プロセッサの場合、データ・キャッシュ・ヒット/ミス予測手段の利点は、図3で示されるように2倍になる。
【0058】
(分岐予測によるディスパッチでの弁別)
これまで、ヒット/ミス予測を使用してマルチストリーミング・プロセッサのディスパッチ段階で弁別する方法が説明された。プロセッサ・パフォーマンスを改善するため、同様に分岐予測をディスパッチ段階で使用することができる。前述したように、フェッチ・アルゴリズムへの入力として分岐予測がフェッチ段階で使用される好ましい実施形態では、パイプラインへ入る全ての分岐について、おそらく確率を付加された予測が分岐命令のために存在する。この情報は保持されて、フェッチ・アルゴリズムからディスパッチ・アルゴリズムへ渡され、分岐命令の直後にフェッチされた命令の選択的ディスパッチで使用することができる。例えば、1つの簡単な例では、高い確率の分岐命令に続く命令に、ディスパッチにおいて他の命令よりも優先順位を与えることができる。
【0059】
フェッチの弁別が用いられない代替の実施形態において、ディスパッチ段階での弁別が依然として使用される。一度、ここでの教示が与えられると、パイプライン・プロセッサのフェッチ段階及びディスパッチ段階のいずれか又は双方で、ヒット/ミス及び分岐の予測が単独又は前後して行われうることが当業者に明らかであろう。
【0060】
本発明の代替実施形態において、予測は、フェッチ段階及びディスパッチ段階で異なるように行なわれることができる(即ち、異なった情報を予測の基礎として使用し、および/または、異なった予測アルゴリズムを使用して)。1つの例として、ディスパッチ段階におけるヒット/ミス予測は、消費手段命令のプログラム・カウンタ(PC)アドレスを使用することができ(なぜなら、命令は既にデコードされ、そのPCは知られているから)、分岐予測で使用された予測スキームに類似したアルゴリズムに従うことができる。フェッチ段階における予測は、他のタイプのアドレス(例えば、キャッシュ・ライン)又は他の非アドレス情報を使用してよい。
【0061】
異なった実施形態における予測アルゴリズムは、プロセッサが効率的にサポートしなければならないワークロードに依存して変わってよい。Windows(登録商標)プログラム又はSPECベンチマークのような伝統的アプリケーションのためには、分岐予測で使用されたアルゴリズムに類似したアルゴリズムが、ヒット/ミスの場合に、ヒット及びミスの双方で所望の予測精度を生成する。ネットワーク・プロセッサ内のパケット処理アプリケーションのような他のタイプのワークロードについては、予測手段は、処理されているパケットが所属するフロー番号のような追加的情報を利用することができる(新しいフローの最初のパケットの処理によって実行されたデータ・キャッシュ・アクセスは、ミスの可能性が最も高い)。
【0062】
ここで教示された本発明の実施形態において、本発明の趣旨及び範囲から逸脱することなく、多くの変更がなされることは、当業者に明らかであろう。例えば、予測手段は様々な方法で実現され、割り当てられた確率に基づいて、異なったアクションが取られる。更に、予測は、パイプライン内の異なったレベルで使用される。例えば、予測手段は、デコード段階から入力を得て、フェッチ・アルゴリズムへ出力する。更に、本発明の異なった実施形態を達成するメカニズムは、通常、ハードウェア又はソフトウェアのいずれかで実現される。同様に、本発明の趣旨及び範囲内で行なわれる多くの他の変更が存在する。本発明は、添付のクレイムの範囲に対して許容されるべきである。
【図面の簡単な説明】
【図1a】
本発明の実施形態におけるパイプラインの略図である。
【図1b】
1サイクルを経過した後の図1aのパイプラインを示す図である。
【図1c】
他の1サイクルを経過した後の図1a及び図1bのパイプラインを示す図である。
【図1d】
更に、他の1サイクルを経過した後の図1a、図1b、及び図1cのパイプラインを示す図である。
【図2】
本発明の実施形態において、予測手段をストリームに関連付ける略図である。
【図3】
キャッシュ内の異なったレベルに対する予測手段を示す略図である。
【図4】
本発明の実施形態における手法の利点を示す略図である。
【図5】
プログラム・カウンタのシーケンスを示す図である。
Claims (24)
- マルチストリーミング・プロセッサにおいて、多数のストリームの中の個々のストリームから命令をパイプラインへフェッチするシステムであって、
どのストリームから命令をフェッチするかを選択するフェッチ・アルゴリズムと、
分岐命令の分岐選択が取られるかどうかを予測する分岐予測手段と、
を含み、
分岐予測手段による予測が、どのストリームからフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される、システム。 - 分岐が取られないだろうという予測が、フェッチ・プロセスに変化を引き起こさない、請求項1に記載のシステム。
- 分岐が取られるだろうという予測が、目標アドレスが予測手段によって与えられない場合に、異なったストリームへフェッチの切り替えを生じる、請求項1に記載のシステム。
- 前記分岐予測手段が、分岐選択が取られる確率を決定し、該確率が、どこから次の命令をフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される、請求項1に記載のシステム。
- 前記分岐予測手段の予測が、更に、パイプラインから機能ユニットへディスパッチする命令を選択する時にディスパッチ・アルゴリズムによって使用される、請求項1に記載のシステム。
- マルチストリーミング・プロセッサにおいて、多数のストリームの中の個々のストリームから命令をパイプラインへフェッチするシステムであって、
どのストリームから命令をフェッチするかを選択するフェッチ・アルゴリズムと、
分岐命令の分岐選択が取られるかどうかを予測する分岐予測手段、又は命令がデータ・キャッシュでヒットするかミスするかを予測するヒット/ミス予測手段の一方又は双方と、
を含み、
予測手段のいずれか又は双方による予測が、どのストリームからフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される、システム。 - 分岐が取られないだろうという予測、又は命令がデータ・キャッシュでヒットするだろうという予測が、フェッチ・プロセスに変化を引き起こさない、請求項6に記載のシステム。
- 分岐が取られるだろうという予測、又は命令がデータ・キャッシュでミスするだろうという予測が、目標アドレスが予測手段によって与えられない場合に、異なったストリームへフェッチの切り替えを生じる、請求項6に記載のシステム。
- 前記分岐予測手段の一方又は双方が、分岐選択が取られる確率又は命令がキャッシュでミスする確率を決定し、該確率が、どこから次の命令をフェッチするかを決定する時に前記フェッチ・アルゴリズムによって使用される、請求項6に記載のシステム。
- 一方又は双方の予測手段の予測が、更に、パイプラインから機能ユニットへディスパッチする命令を選択する時にディスパッチ・アルゴリズムによって使用される、請求項6に記載のシステム。
- マルチストリーミング・プロセッサであって、
どのストリームから命令をフェッチするかを選択するフェッチ・アルゴリズムと、
分岐命令によって提案されたジャンプが取られるか否かを予測する分岐予測手段と、
を含み、
前記分岐予測手段による予測が、どのストリームからフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される、プロセッサ。 - 分岐が取られないだろうという予測が、フェッチ・プロセスに変化を引き起こさない、請求項11に記載のプロセッサ。
- 分岐が取られるだろうという予測が、目標アドレスが前記予測手段によって与えられない場合に、異なったストリームへフェッチの切り替えを生じる、請求項11に記載のプロセッサ。
- 前記分岐予測手段が、分岐が取られる確率を決定し、該確率が、どこから次の命令をフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される、請求項11に記載のプロセッサ。
- 前記分岐予測手段の予測が、更に、パイプラインから機能ユニットへディスパッチする命令を選択する時にディスパッチ・アルゴリズムによって使用される、請求項11に記載のプロセッサ。
- マルチストリーミング・プロセッサであって、
個々のスレッドを走らせる多数の物理ストリームと、
データ・キャッシュと、
どのストリームから命令をフェッチするかを選択するフェッチ・アルゴリズムと、
分岐命令の分岐選択が取られるかどうかを予測する分岐予測手段、又は命令がデータ・キャッシュでヒットするかミスするかを予測するヒット/ミス予測手段の一方又は双方と、
を含み、
前記予測手段のいずれか又は双方による予測が、どのストリームからフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される、プロセッサ。 - 分岐が取られないだろうという予測、又は命令がデータ・キャッシュでヒットするだろうという予測が、フェッチ・プロセスに変化を引き起こさない、請求項16に記載のプロセッサ。
- 分岐が取られるだろうという予測、又は命令がデータ・キャッシュでミスするだろうという予測が、目標アドレスが前記予測手段によって与えられない場合に、異なったストリームへフェッチの切り替えを生じる、請求項16に記載のプロセッサ。
- 前記分岐予測手段の一方又は双方が、分岐選択が取られる確率又は命令がキャッシュでミスする確率を決定し、該確率が、どこから次の命令をフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される、請求項16に記載のプロセッサ。
- 一方又は双方の予測手段の予測が、更に、パイプラインから機能ユニットへディスパッチする命令を選択する時にディスパッチ・アルゴリズムによって使用される、請求項16に記載のプロセッサ。
- マルチストリーミング・プロセッサにおいて、命令源としての多数のストリームの中の個々のストリームから命令をパイプラインへフェッチする方法であって、
(a)分岐命令をロードする時に、分岐が取られるか否かを分岐予測手段によって予測し、
(b)もし分岐が取られるだろうと予測されるなら、目標アドレスが予測手段によって与えられない場合に、フェッチ源を変更する
ステップを含む、方法。 - 前記予測手段が確率を決定し、該確率が、フェッチ源を決定する時に使用される、請求項21に記載の方法。
- データ・キャッシュを有するマルチストリーミング・プロセッサにおいて、命令源としての多数のストリームの中の個々のストリームから命令をパイプラインへフェッチする方法であって、
(a)命令をロードする時に、命令が分岐命令である時には分岐が取られるかどうかについての分岐予測手段、又は命令がデータ・キャッシュでヒットするかどうかについてのヒット/ミス予測手段の一方又は双方によって予測し、
(b)なされた予測に従って、どのストリームからフェッチを継続するかを弁別する
ステップを含む、方法。 - 前記1つ又は複数の予測手段が確率を決定し、該確率がフェッチ源を決定する時に使用される、請求項23に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/616,385 US7035997B1 (en) | 1998-12-16 | 2000-07-14 | Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors |
PCT/US2001/021372 WO2002006959A1 (en) | 2000-07-14 | 2001-07-05 | Instruction fetch and dispatch in multithreaded system |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004518183A true JP2004518183A (ja) | 2004-06-17 |
Family
ID=24469213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002512805A Pending JP2004518183A (ja) | 2000-07-14 | 2001-07-05 | マルチスレッド・システムにおける命令のフェッチとディスパッチ |
Country Status (6)
Country | Link |
---|---|
US (1) | US7707391B2 (ja) |
EP (1) | EP1311947B1 (ja) |
JP (1) | JP2004518183A (ja) |
AU (1) | AU2001273211A1 (ja) |
DE (1) | DE60143896D1 (ja) |
WO (1) | WO2002006959A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005182825A (ja) * | 2003-12-18 | 2005-07-07 | Nvidia Corp | マルチスレッド式マイクロプロセッサのスレッドにまたがるアウト・オブ・オーダー命令ディスパッチ |
JP2009512917A (ja) * | 2005-09-26 | 2009-03-26 | イマジネイション テクノロジーズ リミテッド | スケーラブルなマルチスレッド型メディア処理アーキテクチャ |
JP2013069129A (ja) * | 2011-09-22 | 2013-04-18 | Fujitsu Ltd | 演算処理装置及び演算処理装置の制御方法 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7529907B2 (en) | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
US6389449B1 (en) * | 1998-12-16 | 2002-05-14 | Clearwater Networks, Inc. | Interstream control and communications for multi-streaming digital processors |
US7020879B1 (en) * | 1998-12-16 | 2006-03-28 | Mips Technologies, Inc. | Interrupt and exception handling for multi-streaming digital processors |
US7257814B1 (en) * | 1998-12-16 | 2007-08-14 | Mips Technologies, Inc. | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
GB2457341B (en) * | 2008-02-14 | 2010-07-21 | Transitive Ltd | Multiprocessor computing system with multi-mode memory consistency protection |
US8443176B2 (en) * | 2008-02-25 | 2013-05-14 | International Business Machines Corporation | Method, system, and computer program product for reducing cache memory pollution |
US8640133B2 (en) * | 2008-12-19 | 2014-01-28 | International Business Machines Corporation | Equal duration and equal fetch operations sub-context switch interval based fetch operation scheduling utilizing fetch error rate based logic for switching between plurality of sorting algorithms |
US10007523B2 (en) * | 2011-05-02 | 2018-06-26 | International Business Machines Corporation | Predicting cache misses using data access behavior and instruction address |
US9182991B2 (en) * | 2012-02-06 | 2015-11-10 | International Business Machines Corporation | Multi-threaded processor instruction balancing through instruction uncertainty |
JP2014038408A (ja) | 2012-08-13 | 2014-02-27 | International Business Maschines Corporation | 同時マルチスレッディング機能をもったプロセッサのパイプラインにおけるストール削減方法、削減装置及び削減プログラム |
US9619230B2 (en) * | 2013-06-28 | 2017-04-11 | International Business Machines Corporation | Predictive fetching and decoding for selected instructions |
US9652418B2 (en) | 2014-06-30 | 2017-05-16 | Intel Corporation | High throughput register file memory with pipeline of combinational logic |
US10482033B2 (en) | 2016-03-24 | 2019-11-19 | Samsung Electronics Co., Ltd | Method and device for controlling memory |
US20220342672A1 (en) * | 2021-04-27 | 2022-10-27 | Red Hat, Inc. | Rescheduling a load instruction based on past replays |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6076157A (en) * | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
WO2000036487A2 (en) * | 1998-12-16 | 2000-06-22 | Xstream Logic, Inc. | Prioritized instruction scheduling for multi-streaming processors |
Family Cites Families (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4200927A (en) * | 1978-01-03 | 1980-04-29 | International Business Machines Corporation | Multi-instruction stream branch processing mechanism |
US4197579A (en) | 1978-06-06 | 1980-04-08 | Xebec Systems Incorporated | Multi-processor for simultaneously executing a plurality of programs in a time-interlaced manner |
JPS63254530A (ja) | 1987-04-10 | 1988-10-21 | Nec Corp | 情報処理装置 |
US5321823A (en) | 1988-07-20 | 1994-06-14 | Digital Equipment Corporation | Digital processor with bit mask for counting registers for fast register saves |
JPH0748179B2 (ja) | 1988-10-12 | 1995-05-24 | 日本電気株式会社 | データ処理装置 |
US5142676A (en) | 1988-12-28 | 1992-08-25 | Gte Laboratories Incorporated | Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory |
JPH02190930A (ja) * | 1988-12-29 | 1990-07-26 | Internatl Business Mach Corp <Ibm> | ソフトウエア命令実行装置 |
US5093777A (en) | 1989-06-12 | 1992-03-03 | Bull Hn Information Systems Inc. | Method and apparatus for predicting address of a subsequent cache request upon analyzing address patterns stored in separate miss stack |
GB2234613B (en) | 1989-08-03 | 1993-07-07 | Sun Microsystems Inc | Method and apparatus for switching context of state elements in a microprocessor |
US5487156A (en) * | 1989-12-15 | 1996-01-23 | Popescu; Valeri | Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched |
JP2616182B2 (ja) * | 1990-08-29 | 1997-06-04 | 三菱電機株式会社 | データ処理装置 |
JP2845646B2 (ja) * | 1990-09-05 | 1999-01-13 | 株式会社東芝 | 並列演算処理装置 |
JPH04335431A (ja) | 1991-05-13 | 1992-11-24 | Nec Corp | 情報処理装置 |
US5309173A (en) | 1991-06-28 | 1994-05-03 | Texas Instruments Incorporated | Frame buffer, systems and methods |
JP2611065B2 (ja) | 1991-08-19 | 1997-05-21 | 三菱電機株式会社 | データ転送方式 |
US5546593A (en) | 1992-05-18 | 1996-08-13 | Matsushita Electric Industrial Co., Ltd. | Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream |
JP2665111B2 (ja) | 1992-06-18 | 1997-10-22 | 日本電気株式会社 | ベクトル処理装置 |
WO1994027216A1 (en) | 1993-05-14 | 1994-11-24 | Massachusetts Institute Of Technology | Multiprocessor coupling system with integrated compile and run time scheduling for parallelism |
FR2705804B1 (fr) | 1993-05-27 | 1995-08-11 | Sgs Thomson Microelectronics | Architecture de processeur multi-tâches. |
US5454117A (en) * | 1993-08-25 | 1995-09-26 | Nexgen, Inc. | Configurable branch prediction for a processor performing speculative execution |
US5535365A (en) | 1993-10-22 | 1996-07-09 | Cray Research, Inc. | Method and apparatus for locking shared memory locations in multiprocessing systems |
US5572704A (en) | 1993-12-15 | 1996-11-05 | Silicon Graphics, Inc. | System and method for controlling split-level caches in a multi-processor system including data loss and deadlock prevention schemes |
US5604877A (en) | 1994-01-04 | 1997-02-18 | Intel Corporation | Method and apparatus for resolving return from subroutine instructions in a computer processor |
US5745778A (en) | 1994-01-26 | 1998-04-28 | Data General Corporation | Apparatus and method for improved CPU affinity in a multiprocessor system |
US5509123A (en) | 1994-03-22 | 1996-04-16 | Cabletron Systems, Inc. | Distributed autonomous object architectures for network layer routing |
US5542088A (en) | 1994-04-29 | 1996-07-30 | Intergraph Corporation | Method and apparatus for enabling control of task execution |
US5758142A (en) | 1994-05-31 | 1998-05-26 | Digital Equipment Corporation | Trainable apparatus for predicting instruction outcomes in pipelined processors |
US5649144A (en) | 1994-06-13 | 1997-07-15 | Hewlett-Packard Co. | Apparatus, systems and methods for improving data cache hit rates |
JP2677202B2 (ja) | 1994-08-12 | 1997-11-17 | 日本電気株式会社 | マイクロプロセッサ |
US5812811A (en) | 1995-02-03 | 1998-09-22 | International Business Machines Corporation | Executing speculative parallel instructions threads with forking and inter-thread communication |
JP3494736B2 (ja) * | 1995-02-27 | 2004-02-09 | 株式会社ルネサステクノロジ | 分岐先バッファを用いた分岐予測システム |
US5748468A (en) | 1995-05-04 | 1998-05-05 | Microsoft Corporation | Prioritized co-processor resource manager and method |
US5784613A (en) | 1995-09-12 | 1998-07-21 | International Busines Machines Corporation | Exception support mechanism for a threads-based operating system |
JP2889845B2 (ja) | 1995-09-22 | 1999-05-10 | 松下電器産業株式会社 | 情報処理装置 |
US6115802A (en) | 1995-10-13 | 2000-09-05 | Sun Mircrosystems, Inc. | Efficient hash table for use in multi-threaded environments |
US5701432A (en) | 1995-10-13 | 1997-12-23 | Sun Microsystems, Inc. | Multi-threaded processing system having a cache that is commonly accessible to each thread |
US5852726A (en) | 1995-12-19 | 1998-12-22 | Intel Corporation | Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner |
US5815733A (en) | 1996-02-01 | 1998-09-29 | Apple Computer, Inc. | System for handling interrupts in a computer system using asic reset input line coupled to set of status circuits for presetting values in the status circuits |
US5867725A (en) | 1996-03-21 | 1999-02-02 | International Business Machines Corporation | Concurrent multitasking in a uniprocessor |
US5826081A (en) | 1996-05-06 | 1998-10-20 | Sun Microsystems, Inc. | Real time thread dispatcher for multiprocessor applications |
JPH1011301A (ja) | 1996-06-25 | 1998-01-16 | Masaharu Imai | マルチタスク処理装置及びマルチタスク処理制御方法 |
US5860017A (en) | 1996-06-28 | 1999-01-12 | Intel Corporation | Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction |
US5933627A (en) | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
KR100500002B1 (ko) | 1996-08-27 | 2005-09-08 | 마츠시타 덴끼 산교 가부시키가이샤 | 복수의명령흐름을독립적으로처리하고,명령흐름단위로처리성능을유연하게제어하는멀티스레드프로세서 |
JP3760035B2 (ja) | 1996-08-27 | 2006-03-29 | 松下電器産業株式会社 | 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ |
US5913054A (en) | 1996-12-16 | 1999-06-15 | International Business Machines Corporation | Method and system for processing a multiple-register instruction that permit multiple data words to be written in a single processor cycle |
US6029228A (en) * | 1996-12-31 | 2000-02-22 | Texas Instruments Incorporated | Data prefetching of a load target buffer for post-branch instructions based on past prediction accuracy's of branch predictions |
JP3605978B2 (ja) | 1997-01-17 | 2004-12-22 | 松下電器産業株式会社 | マイクロコンピュータ |
US5835705A (en) | 1997-03-11 | 1998-11-10 | International Business Machines Corporation | Method and system for performance per-thread monitoring in a multithreaded processor |
US5946711A (en) | 1997-05-30 | 1999-08-31 | Oracle Corporation | System for locking data in a shared cache |
US5913049A (en) | 1997-07-31 | 1999-06-15 | Texas Instruments Incorporated | Multi-stream complex instruction set microprocessor |
US6212544B1 (en) | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
US6260077B1 (en) | 1997-10-24 | 2001-07-10 | Sun Microsystems, Inc. | Method, apparatus and program product for interfacing a multi-threaded, client-based API to a single-threaded, server-based API |
US6061710A (en) * | 1997-10-29 | 2000-05-09 | International Business Machines Corporation | Multithreaded processor incorporating a thread latch register for interrupt service new pending threads |
US5987492A (en) | 1997-10-31 | 1999-11-16 | Sun Microsystems, Inc. | Method and apparatus for processor sharing |
US6079003A (en) * | 1997-11-20 | 2000-06-20 | Advanced Micro Devices, Inc. | Reverse TLB for providing branch target address in a microprocessor having a physically-tagged cache |
US6018759A (en) | 1997-12-22 | 2000-01-25 | International Business Machines Corporation | Thread switch tuning tool for optimal performance in a computer processor |
US6016542A (en) | 1997-12-31 | 2000-01-18 | Intel Corporation | Detecting long latency pipeline stalls for thread switching |
US6308261B1 (en) | 1998-01-30 | 2001-10-23 | Hewlett-Packard Company | Computer system having an instruction for probing memory latency |
US6430593B1 (en) | 1998-03-10 | 2002-08-06 | Motorola Inc. | Method, device and article of manufacture for efficient task scheduling in a multi-tasking preemptive priority-based real-time operating system |
US6356996B1 (en) | 1998-03-24 | 2002-03-12 | Novell, Inc. | Cache fencing for interpretive environments |
GB9809022D0 (en) | 1998-04-29 | 1998-06-24 | Int Computers Ltd | Semaphore for a computer system |
US6260138B1 (en) * | 1998-07-17 | 2001-07-10 | Sun Microsystems, Inc. | Method and apparatus for branch instruction processing in a processor |
US6119203A (en) | 1998-08-03 | 2000-09-12 | Motorola, Inc. | Mechanism for sharing data cache resources between data prefetch operations and normal load/store operations in a data processing system |
US6493749B2 (en) | 1998-08-17 | 2002-12-10 | International Business Machines Corporation | System and method for an administration server |
US6567849B2 (en) * | 1998-08-17 | 2003-05-20 | International Business Machines Corporation | System and method for configuring and administering multiple instances of web servers |
US6792524B1 (en) * | 1998-08-20 | 2004-09-14 | International Business Machines Corporation | System and method cancelling a speculative branch |
US6192384B1 (en) | 1998-09-14 | 2001-02-20 | The Board Of Trustees Of The Leland Stanford Junior University | System and method for performing compound vector operations |
SE9803632D0 (sv) | 1998-10-22 | 1998-10-22 | Ericsson Telefon Ab L M | A processor |
US6389449B1 (en) * | 1998-12-16 | 2002-05-14 | Clearwater Networks, Inc. | Interstream control and communications for multi-streaming digital processors |
US7237093B1 (en) * | 1998-12-16 | 2007-06-26 | Mips Technologies, Inc. | Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams |
US7529907B2 (en) * | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
US6292888B1 (en) * | 1999-01-27 | 2001-09-18 | Clearwater Networks, Inc. | Register transfer unit for electronic processor |
US7020879B1 (en) * | 1998-12-16 | 2006-03-28 | Mips Technologies, Inc. | Interrupt and exception handling for multi-streaming digital processors |
US7257814B1 (en) * | 1998-12-16 | 2007-08-14 | Mips Technologies, Inc. | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
US7035997B1 (en) | 1998-12-16 | 2006-04-25 | Mips Technologies, Inc. | Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors |
US6272624B1 (en) * | 1999-04-02 | 2001-08-07 | Compaq Computer Corporation | Method and apparatus for predicting multiple conditional branches |
US6535905B1 (en) * | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
US6442675B1 (en) | 1999-07-29 | 2002-08-27 | International Business Machines Corporation | Compressed string and multiple generation engine |
US6487571B1 (en) | 1999-10-07 | 2002-11-26 | International Business Machines Corporation | Method and system for generating actual random numbers within a multiprocessor system |
US6502185B1 (en) * | 2000-01-03 | 2002-12-31 | Advanced Micro Devices, Inc. | Pipeline elements which verify predecode information |
JP4335431B2 (ja) | 2000-12-07 | 2009-09-30 | 株式会社小森コーポレーション | 給紙装置 |
US6976155B2 (en) | 2001-06-12 | 2005-12-13 | Intel Corporation | Method and apparatus for communicating between processing entities in a multi-processor |
-
2001
- 2001-07-05 JP JP2002512805A patent/JP2004518183A/ja active Pending
- 2001-07-05 EP EP01952463A patent/EP1311947B1/en not_active Expired - Lifetime
- 2001-07-05 DE DE60143896T patent/DE60143896D1/de not_active Expired - Lifetime
- 2001-07-05 WO PCT/US2001/021372 patent/WO2002006959A1/en active Application Filing
- 2001-07-05 AU AU2001273211A patent/AU2001273211A1/en not_active Abandoned
-
2006
- 2006-04-06 US US11/278,874 patent/US7707391B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6076157A (en) * | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
WO2000036487A2 (en) * | 1998-12-16 | 2000-06-22 | Xstream Logic, Inc. | Prioritized instruction scheduling for multi-streaming processors |
Non-Patent Citations (4)
Title |
---|
JPN6011023633; Dirk Grunwald et al.: '"Confidence Estimation for Speculation Control"' Proceedings. The 25th AnnualInternational Symposium on Computer Architecture, 1998. , 19980701, pages:122-131, IEEE * |
JPN6011023635; Erik Jacobsen et al.: '"Assigning confidence to conditional branch predictions"' Proceedings of the 29th Annual IEEE/ACM International Symposium on Microarchitecture, 1996. MICRO-29 , 19961204, pages:142-152, IEEE * |
JPN6011023637; Adi Yoaz et al.: '"Speculation techniques for improving load related instruction scheduling"' Proceedings of the 26thInternational Symposium on Computer Architecture, 1999. , 19990504, pages:42-53, IEEE * |
JPN6011023639; Dean M. Tullsen et al.: '"Exploiting Choice: Instruction Fetch and Issue on an Implementable Simultaneous Multithreading Proc' 23rd Annual International Symposium on Computer Architecture, 1996 , 19960524, pages:191-202, IEEE * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005182825A (ja) * | 2003-12-18 | 2005-07-07 | Nvidia Corp | マルチスレッド式マイクロプロセッサのスレッドにまたがるアウト・オブ・オーダー命令ディスパッチ |
JP2009512917A (ja) * | 2005-09-26 | 2009-03-26 | イマジネイション テクノロジーズ リミテッド | スケーラブルなマルチスレッド型メディア処理アーキテクチャ |
JP2013069129A (ja) * | 2011-09-22 | 2013-04-18 | Fujitsu Ltd | 演算処理装置及び演算処理装置の制御方法 |
US9069565B2 (en) | 2011-09-22 | 2015-06-30 | Fujitsu Limited | Processor and control method of processor |
Also Published As
Publication number | Publication date |
---|---|
WO2002006959A1 (en) | 2002-01-24 |
AU2001273211A1 (en) | 2002-01-30 |
EP1311947A4 (en) | 2008-02-27 |
EP1311947B1 (en) | 2011-01-19 |
US20070143580A1 (en) | 2007-06-21 |
EP1311947A1 (en) | 2003-05-21 |
DE60143896D1 (de) | 2011-03-03 |
US7707391B2 (en) | 2010-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7035997B1 (en) | Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors | |
US7707391B2 (en) | Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors | |
JP4642305B2 (ja) | マルチスレッド・プロセッサ内の複数のスレッドに入り、出る方法と装置 | |
US7941654B2 (en) | Local and global branch prediction information storage | |
US6260138B1 (en) | Method and apparatus for branch instruction processing in a processor | |
US7254697B2 (en) | Method and apparatus for dynamic modification of microprocessor instruction group at dispatch | |
US6240502B1 (en) | Apparatus for dynamically reconfiguring a processor | |
JP3797471B2 (ja) | マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置 | |
US6058466A (en) | System for allocation of execution resources amongst multiple executing processes | |
JP3927546B2 (ja) | 同時マルチスレッド化プロセッサ | |
US20080126771A1 (en) | Branch Target Extension for an Instruction Cache | |
JP3716414B2 (ja) | 同時マルチスレッド化プロセッサ | |
US20070288733A1 (en) | Early Conditional Branch Resolution | |
US20070143581A1 (en) | Superscalar data processing apparatus and method | |
US20080005544A1 (en) | Method and apparatus for partitioned pipelined execution of multiple execution threads | |
US8301871B2 (en) | Predicated issue for conditional branch instructions | |
KR20100111700A (ko) | 로킹된 오퍼레이션을 수행하기 위한 방법 및 시스템 | |
US7454596B2 (en) | Method and apparatus for partitioned pipelined fetching of multiple execution threads | |
US20070288732A1 (en) | Hybrid Branch Prediction Scheme | |
US7237093B1 (en) | Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams | |
JP7046087B2 (ja) | キャッシュ・ミス・スレッド・バランシング | |
US11567771B2 (en) | Method and apparatus for back end gather/scatter memory coalescing | |
US7730288B2 (en) | Method and apparatus for multiple load instruction execution | |
US6813704B1 (en) | Changing instruction order by reassigning only tags in order tag field in instruction queue | |
US7469332B2 (en) | Systems and methods for adaptively mapping an instruction cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20040610 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080610 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110502 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110517 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110815 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110822 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111117 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120710 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20121005 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20121015 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130110 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130219 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20130319 |