JP2004518183A - マルチスレッド・システムにおける命令のフェッチとディスパッチ - Google Patents

マルチスレッド・システムにおける命令のフェッチとディスパッチ Download PDF

Info

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
Application number
JP2002512805A
Other languages
English (en)
Inventor
ムソル,エンリケ
ネミロフスキイ,マリオ・デイ
Original Assignee
クリアウオーター・ネツトワークス・インコーポレイテツド
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
Priority claimed from US09/616,385 external-priority patent/US7035997B1/en
Application filed by クリアウオーター・ネツトワークス・インコーポレイテツド filed Critical クリアウオーター・ネツトワークス・インコーポレイテツド
Publication of JP2004518183A publication Critical patent/JP2004518183A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent 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

マルチストリーミング・プロセッサにおいて、多数のストリーム(ストリーム1、ストリーム2、ストリームs)の中の個々のストリームから、命令を命令パイプラインへフェッチするシステムが提供される。このシステムは、どのストリーム(ストリーム1、ストリーム2、ストリームs)から命令をフェッチするかを選択するフェッチ・アルゴリズム、及びロード命令がキャッシュでヒット又はミスするかどうか、又は分岐が取られるかどうかを予測する1つ又は複数の予測手段を含む。予測は、どのストリームからフェッチするかを決定する時にフェッチ・アルゴリズムによって使用され、或る場合には、確率が決定され、意思決定においても使用される。予測手段は、フェッチ段階及びディスパッチ段階のいずれか又は双方で使用される。

Description

【0001】
(技術分野)
本発明は、マイクロプロセッサの分野に関し、より具体的には、同時マルチスレッド・プロセッサの構造及び機能に関する。
【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. マルチストリーミング・プロセッサにおいて、多数のストリームの中の個々のストリームから命令をパイプラインへフェッチするシステムであって、
    どのストリームから命令をフェッチするかを選択するフェッチ・アルゴリズムと、
    分岐命令の分岐選択が取られるかどうかを予測する分岐予測手段と、
    を含み、
    分岐予測手段による予測が、どのストリームからフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される、システム。
  2. 分岐が取られないだろうという予測が、フェッチ・プロセスに変化を引き起こさない、請求項1に記載のシステム。
  3. 分岐が取られるだろうという予測が、目標アドレスが予測手段によって与えられない場合に、異なったストリームへフェッチの切り替えを生じる、請求項1に記載のシステム。
  4. 前記分岐予測手段が、分岐選択が取られる確率を決定し、該確率が、どこから次の命令をフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される、請求項1に記載のシステム。
  5. 前記分岐予測手段の予測が、更に、パイプラインから機能ユニットへディスパッチする命令を選択する時にディスパッチ・アルゴリズムによって使用される、請求項1に記載のシステム。
  6. マルチストリーミング・プロセッサにおいて、多数のストリームの中の個々のストリームから命令をパイプラインへフェッチするシステムであって、
    どのストリームから命令をフェッチするかを選択するフェッチ・アルゴリズムと、
    分岐命令の分岐選択が取られるかどうかを予測する分岐予測手段、又は命令がデータ・キャッシュでヒットするかミスするかを予測するヒット/ミス予測手段の一方又は双方と、
    を含み、
    予測手段のいずれか又は双方による予測が、どのストリームからフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される、システム。
  7. 分岐が取られないだろうという予測、又は命令がデータ・キャッシュでヒットするだろうという予測が、フェッチ・プロセスに変化を引き起こさない、請求項6に記載のシステム。
  8. 分岐が取られるだろうという予測、又は命令がデータ・キャッシュでミスするだろうという予測が、目標アドレスが予測手段によって与えられない場合に、異なったストリームへフェッチの切り替えを生じる、請求項6に記載のシステム。
  9. 前記分岐予測手段の一方又は双方が、分岐選択が取られる確率又は命令がキャッシュでミスする確率を決定し、該確率が、どこから次の命令をフェッチするかを決定する時に前記フェッチ・アルゴリズムによって使用される、請求項6に記載のシステム。
  10. 一方又は双方の予測手段の予測が、更に、パイプラインから機能ユニットへディスパッチする命令を選択する時にディスパッチ・アルゴリズムによって使用される、請求項6に記載のシステム。
  11. マルチストリーミング・プロセッサであって、
    どのストリームから命令をフェッチするかを選択するフェッチ・アルゴリズムと、
    分岐命令によって提案されたジャンプが取られるか否かを予測する分岐予測手段と、
    を含み、
    前記分岐予測手段による予測が、どのストリームからフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される、プロセッサ。
  12. 分岐が取られないだろうという予測が、フェッチ・プロセスに変化を引き起こさない、請求項11に記載のプロセッサ。
  13. 分岐が取られるだろうという予測が、目標アドレスが前記予測手段によって与えられない場合に、異なったストリームへフェッチの切り替えを生じる、請求項11に記載のプロセッサ。
  14. 前記分岐予測手段が、分岐が取られる確率を決定し、該確率が、どこから次の命令をフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される、請求項11に記載のプロセッサ。
  15. 前記分岐予測手段の予測が、更に、パイプラインから機能ユニットへディスパッチする命令を選択する時にディスパッチ・アルゴリズムによって使用される、請求項11に記載のプロセッサ。
  16. マルチストリーミング・プロセッサであって、
    個々のスレッドを走らせる多数の物理ストリームと、
    データ・キャッシュと、
    どのストリームから命令をフェッチするかを選択するフェッチ・アルゴリズムと、
    分岐命令の分岐選択が取られるかどうかを予測する分岐予測手段、又は命令がデータ・キャッシュでヒットするかミスするかを予測するヒット/ミス予測手段の一方又は双方と、
    を含み、
    前記予測手段のいずれか又は双方による予測が、どのストリームからフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される、プロセッサ。
  17. 分岐が取られないだろうという予測、又は命令がデータ・キャッシュでヒットするだろうという予測が、フェッチ・プロセスに変化を引き起こさない、請求項16に記載のプロセッサ。
  18. 分岐が取られるだろうという予測、又は命令がデータ・キャッシュでミスするだろうという予測が、目標アドレスが前記予測手段によって与えられない場合に、異なったストリームへフェッチの切り替えを生じる、請求項16に記載のプロセッサ。
  19. 前記分岐予測手段の一方又は双方が、分岐選択が取られる確率又は命令がキャッシュでミスする確率を決定し、該確率が、どこから次の命令をフェッチするかを決定する時にフェッチ・アルゴリズムによって使用される、請求項16に記載のプロセッサ。
  20. 一方又は双方の予測手段の予測が、更に、パイプラインから機能ユニットへディスパッチする命令を選択する時にディスパッチ・アルゴリズムによって使用される、請求項16に記載のプロセッサ。
  21. マルチストリーミング・プロセッサにおいて、命令源としての多数のストリームの中の個々のストリームから命令をパイプラインへフェッチする方法であって、
    (a)分岐命令をロードする時に、分岐が取られるか否かを分岐予測手段によって予測し、
    (b)もし分岐が取られるだろうと予測されるなら、目標アドレスが予測手段によって与えられない場合に、フェッチ源を変更する
    ステップを含む、方法。
  22. 前記予測手段が確率を決定し、該確率が、フェッチ源を決定する時に使用される、請求項21に記載の方法。
  23. データ・キャッシュを有するマルチストリーミング・プロセッサにおいて、命令源としての多数のストリームの中の個々のストリームから命令をパイプラインへフェッチする方法であって、
    (a)命令をロードする時に、命令が分岐命令である時には分岐が取られるかどうかについての分岐予測手段、又は命令がデータ・キャッシュでヒットするかどうかについてのヒット/ミス予測手段の一方又は双方によって予測し、
    (b)なされた予測に従って、どのストリームからフェッチを継続するかを弁別する
    ステップを含む、方法。
  24. 前記1つ又は複数の予測手段が確率を決定し、該確率がフェッチ源を決定する時に使用される、請求項23に記載の方法。
JP2002512805A 2000-07-14 2001-07-05 マルチスレッド・システムにおける命令のフェッチとディスパッチ Pending JP2004518183A (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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