JP2003511754A - 投機的なかつ順不同(out−of−order)のロードの場合に正確なトラップ処理をするための方法 - Google Patents

投機的なかつ順不同(out−of−order)のロードの場合に正確なトラップ処理をするための方法

Info

Publication number
JP2003511754A
JP2003511754A JP2001528796A JP2001528796A JP2003511754A JP 2003511754 A JP2003511754 A JP 2003511754A JP 2001528796 A JP2001528796 A JP 2001528796A JP 2001528796 A JP2001528796 A JP 2001528796A JP 2003511754 A JP2003511754 A JP 2003511754A
Authority
JP
Japan
Prior art keywords
stage
load
instruction
pipeline
load instruction
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
JP2001528796A
Other languages
English (en)
Inventor
トレンブレイ、マーク
チャン、ジェフリー・メング・ウォー
パン、ビユ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2003511754A publication Critical patent/JP2003511754A/ja
Pending legal-status Critical Current

Links

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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

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

Abstract

(57)【要約】 プロセッサが、順不同(out-of-order)かつ投機的なロード命令のための正確なトラップ処理を実行する。プロセッサは、ロードバッファおよびロードアネックスを含む共用構造(shared scheme)においてロード命令の年齢の追跡を続ける。全ての正確な例外が、ロードパイプラインのTステージで検出される。キャッシュにヒットするロード命令に関するデータおよび制御情報は、同じ或いは先の命令パケットにおける全ての例外が検出されるまで、A1、A2、A3、およびTパイプラインステージの間、ロードアネックスにステージされる。他の全てのロード命令からのデータおよび制御情報は、ロードデータが回収された後にロードアネックスにステージされる。例外が生じると、例外を引き起こした命令と同じ命令パケットの全てのロードがキャンセルされる。例外を引き起こした命令より若いロード命令も全てキャンセルされる。ロード命令の年齢は、命令のパイプラインステージを追跡して決定される。トラップが起こると、非ゼロの年齢インジケーターをもつ全てのロード命令がキャンセルされる。

Description

【発明の詳細な説明】
【0001】 クロスリファレンス 本明細書は、1998年12月12日に出願された米国特許出願第09/204,480
号(名称:「A Multiple-Thread Processor for Threaded Software Applicatio
ns」、発明者:Marc TremblayおよびWilliam Joy)に関連し、言及することをも
って本明細書の一部とする。
【0002】 発明の背景 発明の分野 本発明は、正確なトラップ処理を実行するプロセッサにおける順不同(out-of
-order)かつ投機的なロード命令の処理、追跡、および管理に関連する。
【0003】 関連分野の説明 マルチスレッド処理において、様々な処理アプリケーションのための自動化さ
れたシステムは、複数の事象を同時に対処する或いは同時に処理し得る。1つの
処理は制御のスレッドまたは「スレッド」と呼び、システム内の独立した動的動
作における処理の基本的な単位である。プログラムは少なくとも1つのスレッド
を有する。同時処理を実行するシステムは、通常は多くのスレッドを有し、その
内のあるものは一過性であり、またあるものは持続性である。マルチプロセッサ
間で実行するシステムは真の同時スレッドを可能にする。単一プロセッサシステ
ムは、通常はプロセッサの実行のタイムスライシングによって得られ、複数のス
レッド間で共用される仮想の同時スレッドを有するだけである。
【0004】 マルチスレッドをサポートするために特別に設計されたプログラム言語がある
。このような言語には、抽象演算装置であるJava仮想マシン(商標)を用いて有
利に実行するJava(商標)プログラム言語がある。Java仮想マシンは、一度に複
数のスレッドを実行することができる。マルチスレッドは、共用メインメモリに
存在するJava値およびオブジェクトにおいて動作するJavaコードを独立して実行
する。マルチスレッドは、1つのハードウエアプロセッサのタイムスライシング
或いは多くのハードウエアプロセッサのタイムスライシングによって、複数のハ
ードウエアプロセッサを用いてサポートされ得る。1990年に、サン・マイク
ロシステムズ社のプログラマーが汎用プログラム言語を開発した。このプログラ
ム言語は、「Java(商標)プログラム言語」として知られる。「Java(商標)」
、「Sun」、「Sun Microsystems」、および「Sun Logo」は米国およびその他の
国に所在するサン・マイクロシステムズ社の登録商標である。「UltraSPARC I」
および「UltraSPARC II」を含む「All SPARC(商標)」はライセンス許可の下で
使用され、米国およびその他の国に所在するSPARC International社の商標であ
る。商標「SPARC」を付した製品は、サン・マイクロシステムズ社によって開発
されたアーキテクチャに基づいている。
【0005】 発明の要約 out-of-orderかつ投機的なロード命令のための正確なトラップ処理を容易にす
るための方法がロード命令の年齢(age)を追跡する。ロード命令の年齢は、連
続したパイプラインステージにおいてロード命令が実行されているステージによ
って決定される。年齢は年齢インジケータで追跡される。一実施例では、年齢イ
ンジケータは、追跡する各パイプラインステージに対して1ビットを含む。この
方法は、正確なトラップが起こった時に決定する。正確なトラップが起こると、
ロード命令がトラッピング命令の前に発行されたかどうかを決定する。ロード命
令がトラッピング命令の前に発行されたか否かは、年齢インジケータを調べて決
定する。年齢インジケータが、全パイプラインステージにおいてロード命令の実
行が完了する前にトラッピング命令がトラップされたと示す場合は、ロード命令
はトラッピング命令と同じか或いはそれより若いかのいずれかであり、ロード命
令は無効にされる。無効は、有効ビットのリセットによって実施される。無効に
よって効果的にロード命令がキャンセルされる。
【0006】 一実施例では、年齢インジケータおよび有効ビットは、ロードストアユニット
によって保持される。別の実施例では、年齢インジケータおよび有効ビットはロ
ードアネックス(load annex)によって保持される。
【0007】 一実施例では、上記したようにプロセッサがout-of-orderかつ投機的なロード
命令のための正確なトラップ処理をするための方法を実行するように構成されて
いる。このプロセッサは、メインメモリおよび複数のプロセシングユニットを含
む。このプロセッサは、ロードバッファおよびロードアネックスを含む共用構造
において、ロード命令の年齢の追跡を続ける。全ての正確な例外がロードパイプ
ラインのTステージにおいて検出される。キャッシュにヒットするロード命令に
関するデータおよび制御情報は、同じ或いはそれより先の命令パケットにおける
全ての例外が検出されるまで、A2、A3、およびTパイプラインステージの間
、ロードアネックスにステージされる。他の全てのロード命令からのデータおよ
び制御情報は、ロードデータが回収された後にロードアネックスにステージされ
る。例外が起こると、例外を引き起こした命令と同じ命令パケットの全てのロー
ド命令がキャンセルされる。例外を引き起こした命令より若い全てのロード命令
もキャンセルされる。ロード命令の年齢は、その命令のパイプラインステージを
追跡して決定する。トラップが起こると、非ゼロの年齢インジケータを有する全
てのロード命令がキャンセルされる。
【0008】 好適な実施例の説明 添付の図面を用いた説明によって、当業者には本発明、本発明の目的、特徴、
および利点が明らかになるであろう。異なった図面における同じ参照符号は、同
一或いは類似の要素を表すものとする。
【0009】 図1を参照すると、プロセッサ100の模式的なブロック図の例が示されてい
る。このプロセッサ100は、この図では2つのメディアプロセシングユニット
110および112として示される、複数の独立した並列実行経路を含む、高度
並列構造に基づいてマルチスレッド処理するための改良したアーキテクチャを有
する。実行経路は、各スレッドに渡って並列に実行し、スレッド内に複数命令パ
ラレル経路を含む。複数の独立した並列実行経路は、マルチスレッド環境に有利
な特殊なデータ処理命令を含む命令のセットを実行する機能ユニットを含む。
【0010】 プロセッサ100のマルチスレッディングアーキテクチャは、マルチスレッド
JAVA(登録商標)仮想マシンにおいてマルチスレッド処理システムの下で動
作するJAVA言語などの言語を用いるマルチスレッド化アプリケーションの実
行において使用するのに好都合である。例示したプロセッサ100は、2つの独
立した並列実行経路を成すメディアプロセシングユニット110および112の
2つの独立したプロセッシングユニットを含む。JAVAプログラム言語などの
マルチスレッドをサポートする言語は2つのスレッドを生成し、ほとんどオーバ
ーヘッドを負うことなくそれぞれを2つの並列な実行経路において実行する。マ
ルチスレッド化プロセッサによって実行される特殊な命令には、アレイへのアク
セスのための命令および不要部分の整理をサポートするための命令が含まれる。
【0011】 1つの集積回路チップによって具現されるプロセッサ100は、メインメモリ
とインターフェースをとるためのメモリインターフェース102と、ジオメトリ
解凍部104と、2つのメディアプロセシングユニット110および112と、
共用データキャッシュ106と、いくつかのコントローラとを含む。インターフ
ェースコントローラは、1つのダイ上にメモリ機能、グラフィックス機能、およ
び入出力ブリッジ機能の基本要素を集積することによってリアルタイム制約条件
で相互的なグラフィックス環境をサポートする。各要素は相互に接続され、また
広帯域幅の低い待ち時間の通信チャネルでプロセッサコアと接続され、複数の広
帯域幅データストリームを効率的かつ短い応答時間で管理する。インターフェー
スコントローラは、UltraPort Architecture Interconnect (UPA)コントロー
ラ116と周辺要素相互接続(PCI)コントローラ120とを含む。図示され
ているメモリインターフェース102は、ダイレクトランバスDRAM(DRD
RAM)コントローラである。共用データキャッシュ106は、メディアプロセ
シングユニット110および112の間で共用されるデュアルポート記憶装置で
あって、各ポートがそれぞれメディアプロセシングユニット110および112
に割り当てられている。データキャッシュ106は、4ウエイセットアソシエイ
ティブであって、ライトバックプロトコルに従い、フィルバッファ(図示せず)
におけるヒットをサポートする。データキャッシュ106によって迅速なデータ
の共用が可能となり、それによって両メディアプロセシングユニット110およ
び112間の複雑でエラーが発生し易いキャッシュコヒーレンスプロトコルが必
要なくなる。
【0012】 プロセッサ100は順番に命令を出しそれを回収する。しかしながら、プロセ
ッサ100は、命令がout-of-order実行して完了することが可能となる、動的な
命令リスケジューリングおよびロード命令の投機的な実行を実施する。オペレー
ションがout-of-order命令実行を終了し、out-of-order命令実行で例外(except
ion)がたとえ生成されたとしても、プロセッサ100は正確なトラップ処理を
実施し、トラップ後のin-order実行の外観を維持する。
【0013】 図2を参照すると、プロセッサ100のコアを示す模式的なブロック図である
。メディアプロセシングユニット110および112はそれぞれ、命令キャッシ
ュ210と、命令アライナー(instruction aligner)212と、命令バッファ
214と、パイプライン制御ユニット(PCU)226と、分割レジスタファイ
ル216と、複数の機能ユニットと、ロード/ストアユニット218とを含む。
例示したプロセッサ100では、メディアプロセシングユニット110および1
12は、命令を実行するために複数の機能ユニットを用いている。メディアプロ
セシングユニット110のための機能ユニットは、3つのメディア機能ユニット
(MFU)220と、1つの一般的な機能ユニット(GFU)222とを含む。
【0014】 それぞれ独立した並列実行経路110または112は、命令供給ブロックおよ
び命令準備ブロックを含む処理ユニットと、機能ユニット220および222と
、レジスタファイル216とを有する。このレジスタファイル216は、複数の
独立した並列実行経路の他の経路の処理ユニットから分離独立している。命令供
給ブロックは個々の独立した並列実行経路のための個別の命令キャッシュ210
を含むが、複数の独立した並列実行経路は、マルチスレッドがデータを時々共有
するため、1つのデータキャッシュ106を共用する。データキャッシュ106
はデュアルポートであるため、1サイクルで実行経路110および112の両方
におけるデータアクセスが可能である。独立したプロセッサ要素110および1
12がデータキャッシュ106を共用することによって、データ処理が簡潔化し
、キャッシュ協調プロトコルの必要性およびプロトコルの制御におけるオーバー
ヘッドが回避できるという利点がある。
【0015】 命令キャッシュ210に加えて、実行経路における命令供給ブロックは、命令
アライナー212と命令バッファ214とを含み、それらによってレジスタファ
イル216へのアクセスを準備するべく、4つの命令からなる完全な命令グルー
プが正確にフォーマットされ整列される。個々の実行経路は、複数のレジスタフ
ァイルセグメント224に物理的に分割された1つのレジスタファイル216を
含む。それぞれのレジスタファイルセグメント224は、複数の機能ユニットの
特定の機能ユニットと対応する。常に、各機能ユニットに割り当てられたレジス
タファイルセグメントはそれぞれ同じ内容を含む。マルチポートレジスタファイ
ルは、ポートの数の二乗に比例する回路によって占有される領域部分のみが通常
は金属である。プロセッサ100は、複数の分離独立したレジスタファイルに分
割されたレジスタファイル構造を有し、改良されたレイアウト効率を有するレイ
アウト構造を形成している。全てのレジスタファイル構造216の読み出しポー
トは、別個のレジスタファイルに割り当てられている。個々のレジスタファイル
のそれぞれは、全レジスタファイル構造の書き込みポートの合計数に応じた書き
込みポートを有する。書き込みは完全にブロードキャストされるため、各レジス
タファイルは全てコヒーレンスを有する。
【0016】 メディア機能ユニット220は、複数の単一命令マルチデータ(MSIMD)
メディア機能ユニットである。メディア機能ユニット220はそれぞれ、並列1
6ビットデータを処理する能力がある。様々な並列16ビット演算は、加算、乗
算−加算、桁送り、比較などを含むプロセッサ100のための単一命令マルチデ
ータ能力を実現する。メディア機能ユニット120は、デジタル信号プロセッサ
(DSP)に接続され、それと共に動作する。各メディア機能ユニット220は
、個別のサブ命令ストリームを有するが、3つ全てのメディア機能ユニット22
0が同期して実行するため、サブ命令はパイプラインステージを経てロックステ
ップ(lock-step)に進む。
【0017】 プロセッサ100の動作中にトラップが起こり得る。トラップは、所定の条件
の発生に応答してプロセッサ100によって行われる特権ソフトウエア(privil
eged software)への制御のベクトル転送である。トラップは内部の事象または
外部の事象によって起こり得る。トラップを引き起こす外部条件は割り込みであ
る。割り込みは、機能ユニットの外部の装置によって機能ユニットに送られたサ
ービスのための要求である。割り込みは、割り込みを受け取る機能ユニットの命
令ストリームに同期していない。内部的なトラップは例外によって起こり得る。
例外は、機能ユニット内の命令の実行によって引き起こされる。例外は、ソフト
ウエアの介入なしで機能ユニットが現在の命令ストリームの実行を継続できなく
なるような状態である。機能ユニットはある種の例外を無視するようにセットす
ることが可能である。しかしながら、機能ユニットは、例外が無視できないタイ
プの例外のような場合、その例外を無視するようにはセットできず、その例外に
よってトラップが引き起こされる。
【0018】 トラップの種類の中には、命令を実行しようとして生成される特殊なタイプの
「正確なトラップ」がある。通常の実行を不可能にするような条件が発生すると
、命令が例外を生成する場合がある。このような例外によって正確なトラップを
生成される場合がある。正確なトラップは、特定の命令によって誘導され、トラ
ップ誘導性の命令によってプロセッサ100のプログラム管理下の状態が変わる
前に生成される。ロード命令の場合、トラップ誘導性のロードの結果がレジスタ
ファイルに書き込まれる前にトラップが起こるという意味である。
【0019】 手動或いはコンパイラのいずれかによってプロセッサ100に対する命令が生
成される場合、命令は命令のパケットに編成される。この命令パケットは、1か
らN個の命令を含み得る。このNは、メディアプロセシングユニット110およ
び112に含まれる機能ユニットの数である。少なくとも一実施例では、命令パ
ケットは4つの命令を含む。各命令パケットは、実行を完了するか或いは例外を
引き起こす。
【0020】 任意の命令が修復可能なエラーを生成する場合、プロセッサ100は例外が発
生したときの装置の状態に戻して、正確なトラップ処理を実施して動作を再開す
る。正確なトラップが起こった場合、トラップを誘導した命令パケットの前に出
された全ての命令パケットの実行を完了して正確な状態にする。さらに、プロセ
ッサ100は、たとえトラップ誘導命令の前にout-of-order実行を終了していた
としても、トラップを誘導した命令パケットの後に出された全ての命令パケット
を実行しないようにする。従って、例外の時にプロセッサ100はそれ自体をそ
の状態に復元する。このような復元の後に実行が再開され得る。動作は、トラッ
ピング命令から或いはトラッピング命令の後の命令から再開され得る。このよう
な方式では、プロセッサ100は、他のパケット命令或いはその他のパケットに
対するout-of-order命令実行を終了してから例外を生成するが、エラーが修正可
能なエラーである場合(すなわち、エラーが例外時の装置の状態の復元を妨害し
ない場合)は、プロセッサ100が正確な状態で動作を再開することを可能にす
る命令を供給する。
【0021】 ところが、プロセッサ100は、破局的なエラーに対しては正確なトラップ処
理を実行することができない。破局的なエラーとは、ハードウエアの誤作動によ
って生じ、エラーの特性によって例外時の装置の状態に復元することができない
エラーである。装置の状態が復元できないため、破局的なエラーによって引き起
こされた例外の後の実行は再開されない可能性がある。このような破局的なエラ
ーの例には、修正不可能なバスのパリティーエラーがある。
【0022】 図3はロード命令に対する正確なトラップ処理の説明に適しており、ロード命
令が投機的にスケジュールされ、かつout-of-order命令を実行するようにスケジ
ュールされ得ることを理解できるであろう。プロセッサ100は、ロードおよび
ストアメモリの演算を処理するための専用のロード/ストアパイプ300を保持
する。図3は、専用のロード/ストアパイプ300の一実施例を例示する模式的
なタイミングダイアグラムである。ロード/ストアパイプ300は、3つの開始
ステージと、複数の実行ステージと、2つの終了ステージを含む9つの連続する
ステージを含む。
【0023】 図2および図3を参照すると、GFUロード/ストアパイプ300の動作は、
パイプ制御ユニット(PCU)226によって制御されている。ロード/ストア
パイプライン300の開始ステージの第1は、フェッチステージ310(Fステ
ージ)である。Fステージ310で、プロセッサ100は命令キャッシュ210
から命令を取り出す。取り出された命令は、命令アライナー212において整列
され、整列ステージ312(Aステージ)すなわち開始ステージの第2のステー
ジで命令バッファ214に送られる。
【0024】 開始ステージの第3のステージである解読ステージ314(Dステージ)では
、PCU226は命令パケットから取り出して整列した命令を解読する。Dステ
ージ314で、PCU226は現在のロード命令に関する情報をLSU219に
送る。4つのレジスタファイルセグメント224はそれぞれ、浮動小数点データ
或いは整数データのいずれかを保持する。レジスタファイル216は解読ステー
ジ314で読み出される。
【0025】 Dステージ314ではまた、スコアボード(図示せず)が読み出されて更新さ
れる。スコアボードは、終了していないロードについての情報を備えた構造であ
る。スコアボードは、任意の終了していないロード処理と若い命令との間のハー
ドウエアインターロックを実現する。この若い命令は、その終了していないロー
ド処理に従属性のデータ/出力を含む。新しい命令がDステージ314に入ると
、新しい命令の元および宛先レジスタのオペランドと全てのスコアボードエント
リとを比較する。終了していないロードに対して割り当てられたスコアボードに
おけるエントリの数は、後述するLSUのロードバッファ400(図4)におけ
るエントリの数に等しい。少なくとも一実施例では、スコアボードは少なくとも
5つのロード命令エントリを含む。ロード命令に対するそれぞれのスコアボード
エントリは、終了していない命令がどの程度古いかを示す5ビットのステージフ
ィールドを有する。このステージフィールドは以下に記載するロードバッファ状
態語410(図4)に類似している。このステージビットは、パイプラインステ
ージが実行される度に右に1つシフトする。ロード命令のステージフィールドが
WBステージ(1B'0000')を示す前にトラップが検出される場合は、スコアボー
ドエントリが無効になる。
【0026】 解読ステージ314の後、実行ステージが実行される。実行ステージの第1の
ステージであるEステージ332では、GFU222が各ロード命令およびスト
ア命令のアドレスを計算する。Eステージ332ではまた、命令パケットにおけ
る全てのロード命令およびストア命令が、実行のためにロード/ストアユニット
(LSU)218に送られる。
【0027】 図3および図4を参照すると、残っているパイプラインステージ334、33
6、338、360、および362でのロード命令の処理が以下に記載するよう
に行なわれる。Eステージ332からTステージ360まで、LSU218はロ
ード命令の年齢(age)の追跡を続ける。EステージでLSU218に送られる
と、ロード命令はLSUのロードバッファ400の中に配置される。少なくとも
一実施例では、ロードバッファ400は5つのエントリを有するため、最大5つ
のロード命令を維持することができる。少なくとも一実施例では、以下に記載す
るようにプロセッサ100は4つのヒットミスの下で1つのヒットを許容するた
め、5つのエントリが必要である。これを達成するために、上記したように、5
つのロードエントリがロードバッファ400にサポートされ、5つのロードエン
トリがスコアボードによってサポートされている。
【0028】 「ヒットアンダーヒットミス(hit under miss)」は図2に示されている。L
SU218がロード処理で要求された情報のアイテムにアクセスしようとすると
、このアイテムがデータキャッシュ106にすでに存在しているか、或いは存在
していないかの何れかである。存在する場合は、キャッシュのヒットが起こる。
LSU218によって要求された時にデータキャッシュ106にアイテムが存在
しない場合は、キャッシュミスが起こる。キャッシュミスが起こると、LSU2
18によって要求された情報は、LSU218がアクセスできるように、メモリ
から取り出してデータキャッシュ106に入れなければならない。キャッシュミ
スの後のデータキャッシュ106にストアされていない情報のアイテムの探索は
、比較的時間がかかるプロセスである。プロセッサ100は、先に提示されたロ
ード命令がキャッシュミスする前に、後で提示されたロード命令がヒットし、デ
ータキャッシュ106から情報を得ることを許容する。この状態を、「ヒットア
ンダーヒットミス」と呼ぶ。
【0029】 図3および図4を参照し、ロード/ストアパイプ300の実行ステージでのロ
ード命令処理の説明に戻る。各ロード命令に沿って、LSU218が、命令が無
効であるか否かおよびロード命令のパイプラインの年齢の追跡を続ける。有効ビ
ット420は、ロード命令がトラップによってキャンセルされていないことを示
す。言い換えれば、有効ビットのリセットによって効果的にロード命令がキャン
セルされる。年齢の情報は状態語410に保持される。それぞれの状態語410
A、410B、410C、410D、および410Eは4つのステージビットを
含み、それぞれが、C/A1、A2、A3、またはTパイプラインステージの1
つに対応する。LSUはあるパイプラインステージから次のパイプラインステー
ジへの移行を検出し、それぞれの移行時にステージビットを1つ右の位置にシフ
トする。ロード命令の年齢は以下の表1に示されているように状態語410にお
いて追跡される。
【0030】
【表1】
【0031】 LSU218は、ロード/ストアパイプライン300のC/A1ステージ334
におけるデータキャッシュ106にアクセスする。ロードがデータキャッシュ1
06にヒットする場合、データはデータキャッシュ106から戻されて同じサイ
クルでPCU226に送られる。LSU218はまた、ロードの年齢を有する状
態語410をPCU226に送る。ロードがC/A1ステージ334のデータキ
ャッシュ106にヒットすると、状態語はC/A1パイプラインステージ334
に対応するロードの年齢を示す値1B'1000'を反映する。このようにキャッシュに
ヒットすると、LSU218がデータキャッシュ106にアクセスするC/A1
ステージ334で、ロードデータがPCU226に戻される。しかしながら、正
確なトラップ処理を確実にするために、ヒットからの結果は、命令パケットにお
けるその他全ての命令が完了するまでレジスタファイル216に書き込むことが
できない。ロードがC/A1ステージ334でヒットすると、得られるデータは
、残っている実行ステージが完了するまでレジスタファイル216に書き込むこ
とができない。
【0032】 ロードがデータキャッシュ106でキャッシュミスすると、LSU218がメ
インメモリインターフェース102(図1)からデータを得た後にのみ、データ
がLSU218からPCU226に戻される。従って、ロード命令は、データを
回収するまでLSU218のロードバッファに保持される。これとは対照的に、
全てのヒットはLDX500に送られる。この方式では、ロードバッファ400
およびLDX500は、ロード命令の年齢を追跡し、古い命令がトラックされた
時に若い命令を無効にする機能を共用できる。以下に説明するが、一般にこの機
能は、Tステージ360における、トラッピング命令と同じ命令パケットの全て
のロード命令に関連する有効ビットのリセット、トラッピング命令より若いその
他全てのロード命令に対する有効ビットのリセットを含む。
【0033】 図5を参照すると、PCU226によってロードデータが受け取られた後、そ
のロードデータはすぐにはレジスタファイル224に書き込まれない。すぐに書
込まれると、投機的かつout-of-orderにロード命令を実行する装置のデータがコ
ヒーレンスでなくなる可能性がある。その代わりに、ロードデータおよび関連す
るロード情報がロードアネックス(LDX)500に入る。ロードデータが十分
なサイクル数の間、LDX500にステージされ、それによってロード命令が、
そのデータがレジスタファイル224にブロードキャストされる前にTパイプラ
インステージに到達できるようなる。ロードデータがLDDX500にステージ
されている間、データを別の機能ユニットにバイパスすることができる。トラッ
プが検出されなかった場合は、ロードデータをTステージ360でレジスタファ
イルにブロードキャストする。トラップがTパイプラインステージ360(図3
)で検出される。
【0034】 少なくとも一実施例では、ロードデータはレジスタファイル224にブロード
キャストされる前に3つのステージの間、LDX500にステージされる。3サ
イクルの間、LDX500にロードデータをステージすることによって、ロード
命令自体か、或いはロード命令と同じ或いは古い命令パケットのその他の命令の
いずれかによって引き起こされた全ての正確な例外が、ロード命令のキャンセル
を引き起こす。すなわち、ロード命令がWBステージ362に到達する前にトラ
ップが検出されると、ロード命令に対する有効ビットがリセットされる。ロード
データがレジスタファイル224にブロードキャストされると、レジスタファイ
ル224は局所的にデータを保持し、次のクロックサイクルでレジスタを更新す
る。
【0035】 図5は、ldx1、ldx2、ldx3、およびldx4の名称がつけられた
4つのエントリを含むLDX500を例示する。これらのLDXエントリはFI
FOキューとして働き、LSU218からの新しいロードデータはldx1に配
置され、古いロードデータはldx4からレジスタファイル224に書き込まれ
る。レジスタファイル224はロード命令のための専用の書き込みポートを有す
るため、ロードデータは各クロックサイクル毎にFIFOLDX500において
1エントリー下にシフトする。
【0036】 図5には、ロードデータがステージされのは3サイクルの間であるが、ldx
1、ldx2、ldx3、およびldx4の4つのエントリを含むLDX500
が例示されている。4番目のエントリldx4を用いて、レジスタファイル22
4にロードデータを書き込む。ロードデータがレジスタファイル224に書き込
まれたサイクルと同じサイクルではそのデータにアクセスすることができないた
め、追加のldx4エントリが、ロードデータが書き込まれている間そのロード
データを保持する。
【0037】 それぞれのLDXエントリldx1、ldx2、ldx3、およびldx4は
、ステージフィールド510を含む。このステージフィールド510は、それが
PCU226に入る時にLDXエントリに関連するロードバッファ状態語410
の値から得られる。ステージフィールド510の値は、LDXエントリにおける
ロード命令の年齢を示す。特定のロード命令に対する状態語410がLDX50
0に送られると、C/A1ステージは適切でなくなる。その代わりに、ロードデ
ータはC/A1ステージの早い時期にLDX500によって受け取られるため、
データキャッシュ106にヒットしないロード命令からのデータが、特定のロー
ド命令がTステージを完了するまでレジスタファイル224に書き込まれないよ
うにするために、LDX500は、A2、A3、およびTステージの間の特定の
ロード命令の年齢の追跡のみが必要である。従って、特定のロード命令に対する
4ビット状態語410におけるステージビットは、1ビット右にシフトし、A2
、A3、およびTステージに対応するステージビットは、特定のロード命令に関
連するLDXエントリの3ビットステージフィールド510に配置される。PC
U226は、あるパイプラインステージから次のステージへの移行を検出する。
このような移行の度に、PCU226はステージフィールド510におけるステ
ージビットを1ビット右にシフトする。最大でも1回に1ビットのみがロード命
令に対してセットされるため、右へのシフトによって効果的に最後のステージに
対するステージビットをリセットし、現在のステージに対するステージビットを
セットする。LDXが追跡する各パイプラインステージに対するステージフィー
ルド510の値を以下の表2に示す。
【0038】
【表2】
【0039】 表2に例示されているように、あるパイプラインステージから別のパイプライ
ンステージへのそれぞれの逐次的な移行のための連続的な右シフト方式は、WB
ステージ362およびロード命令がWBステージ362に到達した後に起こる全
てのステージに対して全てのステージビットがリセットされるという効果がある
。ロード命令がWBステージ362に到達する前にトラップが検出されると、そ
のロード命令は無効となる。少なくとも一実施例では、LDXエントリにおける
有効ビット520は、PCU226がトラップを検出したことを示すpcu_trap信
号によってリセットされる。
【0040】 それぞれのLDXエントリldx1、ldx2、ldx3、およびldx4は
また、dsizeフィールドを含む。このdsizeフィールドは、ロード命令に関連する
データが64ビットのデータワードであるか或いは32ビットのデータワードで
あるかを示す。
【0041】 C/A1ステージ334、A2ステージ336、およびA3ステージ338の
後の次の2つの実行ステージは、追加の実行ステージである。C/A1ステージ
334で、キャッシュデータ106にアクセスしてそれらのデータを戻したロー
ド命令の場合、データがA2ステージ336およびA3ステージ338でLDX
500にステージされる。トラップ状態が、ロード/ストアパイプライン300
のTステージ360でPCU226によって検出される。
【0042】 図3に例示されているように、ロード/ストアパイプ300の2つの終了ステ
ージは、トラップ処理ステージ360(Tステージ)と、得られたデータがレジ
スタファイル216にライトバックされるライトバックステージ362(WBス
テージ)とを含む。これらのステージの各ステージにおけるロード命令の処理を
後述する。
【0043】 図5に例示されているように、PCU226がトラップを検出すると、トラッ
プ信号pcu_trapを生成する。Tステージ360でこの信号を用いて、トラッピン
グ命令より若いロード命令に対するLDXエントリの有効ビットをリセットする
。さらに、PCU226がpcu_trap信号をLSU218に送り、次にLSU21
8が、トラッピング命令より若いロードバッファ400の全てのロード命令に対
する有効ビット420A、420B、420C、420D、および420Eをリ
セットする。LDX500では、トラップが検出された時にロード命令がWB3
62ステージに到達していない場合にのみロード命令が無効となる。言い換えれ
ば、WB362ステージに到達した全てのロード命令は、そのパイプラインのト
ラップステージ或いはその前のステージでロード命令がにキャンセルされていな
いのが明らかなため、ロード命令の年齢にかかわらずレジスタファイル224に
書き込むことができる。
【0044】 LSU218およびPCU226は、以下のように、ロード命令がトラッピン
グ命令より若いか否かを決定する。LDXステージフィールド510およびロー
ドバッファ状態語410はそれぞれ、ロード命令の年齢の追跡を続ける。LDX
500は、最も早くてもLSU218がロード命令を受け取った1サイクル後に
ロード命令を受け取り、ステージフィールド510は、PCU226が1つ少な
いステージの追跡を続けるため、状態語410より1ビット少ない。上記した表
1および表2に示されているように、状態語410およびステージフィールド5
10はロード命令がWBステージ362に到達するまで常に非ゼロの値を有する
。従って、PCU226およびLSU218は、トラップがT360ステージで
検出されているため、ロード命令の年齢が非ゼロの場合、ロード命令がトラッピ
ング命令より若いと決定する。
【0045】 LDX500では、ステージフィールド510が非ゼロの全てのLDXエント
リldx1、ldx2、およびldx3に対する有効ビット520をリセットす
る。少なくとも一実施例では、トラップがサイクルNで発生すると、LDXエン
トリldx1、ldx2、およびldx3が1つ下のサイクルN+1にシフトす
る前に、有効ビット520がリセットされる。次に、PCU226では、ステー
ジフィールド510における全てゼロの値は、ロードデータがTステージ360
を過ぎて少なくともWBステージ362に到達しているため、ロードデータをレ
ジスタファイル224にブロードキャストしても安全であることを示す。
【0046】 LSU218において、状態語410の値が全てゼロということは、比較的長
時間に渡ってキャッシュミスが起こっていることを意味する。キャッシュミスし
たまたは別の方法でそれらのデータが回収されなかったロード命令のみがロード
バッファに保持され、キャッシュにヒットしたロード命令およびメモリインター
フェース102から回収したデータを有するロード命令は上記したようにLDX
500に送られる。ロードバッファ400におけるロード命令に対する状態語4
10における全てゼロは、ロード命令のパイプラインステージが完了してWBス
テージ362に移行した或いはWBステージ362を過ぎた時にキャッシュミス
が起こったことを意味する。この場合、ロード命令はトラッピング命令より古い
ため、ロード命令をキャンセルする必要がない。これとは対照的に、LSU21
8は、PCU226からpcu_trap信号を受け取った時に、状態語410に非ゼロ
の値を有する全てのロード命令をキャンセルする。
【0047】 WBステージ362で、ロード/ストアパイプライン300のTステージ36
0からのデータが、レジスタファイル224にブロードキャストされる。レジス
タファイル224は、そのデータを書き込む前に、WBステージフリップフロッ
プラッチ(図示せず)にデータを保持する。
【0048】 本発明の特定の実施例を用いて説明してきたが、当業者であれば、本発明から
逸脱することなく本明細書の開示に基づいて更なる変更や変形が可能であり、請
求の範囲が本発明の範囲内であるそのような全ての変更や変形を含むことを理解
できよう。
【0049】
【図面の簡単な説明】
【図1】 マルチスレッドプロセッサの一実施例を例示する模式的なブロック図である。
【図2】 マルチスレッドプロセッサの一実施例の要部を示す模式的なブロック図である
【図3】 専用のロード/ストアパイプラインの一実施例を例示する模式的なタイミング
ダイアグラムである。
【図4】 ロード/ストアユニットの少なくとも1つの実施例のブロック図である。
【図5】 ロード命令に関する情報を共用するパイプ制御ユニットおよびロード/ストア
ユニットを例示する模式的なダイアグラムである。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,MZ,SD,SL,SZ,TZ,UG ,ZW),EA(AM,AZ,BY,KG,KZ,MD, RU,TJ,TM),AE,AL,AM,AT,AU, AZ,BA,BB,BG,BR,BY,CA,CH,C N,CR,CU,CZ,DE,DK,DM,EE,ES ,FI,GB,GD,GE,GH,GM,HR,HU, ID,IL,IN,IS,JP,KE,KG,KP,K R,KZ,LC,LK,LR,LS,LT,LU,LV ,MA,MD,MG,MK,MN,MW,MX,NO, NZ,PL,PT,RO,RU,SD,SE,SG,S I,SK,SL,TJ,TM,TR,TT,TZ,UA ,UG,UZ,VN,YU,ZA,ZW (72)発明者 チャン、ジェフリー・メング・ウォー アメリカ合衆国カリフォルニア州94040・ マウンテンビュー・#10・ラザムストリー ト 1984 (72)発明者 パン、ビユ アメリカ合衆国カリフォルニア州95014・ クーペルティーノ・メリットドライブ 19961 Fターム(参考) 5B013 AA12 AA18 EE02

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 out-of-orderかつ投機的なロード命令のための正確な例外
    処理を容易にするための方法であって、 年齢インジケータでロード命令の年齢を追跡するステップと、 正確なトラップを引き起こした第2の命令を検出するステップと、 前記正確なトラップが起こった時、前記ロード命令が前記第2の命令の前に発
    行されたかどうかを決定するステップと、 前記正確なトラップが起こった時に、前記年齢インジケータの値が、前記ロー
    ド命令が前記第2の命令の前に発行されていないことを示す場合に、前記ロード
    命令を無効にするステップとを含むことを特徴とする方法。
  2. 【請求項2】 前記ロード命令が、複数の連続したパイプラインステージ
    で実行され、 前記年齢インジケータが、複数のステージビットを含み、前記複数のステージ
    ビットのそれぞれが前記連続したパイプラインステージの異なった1つに対応す
    ることを特徴とする請求項1に記載の方法。
  3. 【請求項3】 前記複数のパイプラインステージが、第1のパイプライン
    ステージ、第2のパイプラインステージ、第3のパイプラインステージ、および
    第4のパイプラインステージを含み、 前記複数のステージビットが、前記第1のパイプラインステージに対応する第
    1のステージビット、前記第2のパイプラインステージに対応する第2のステー
    ジビット、前記第3のパイプラインステージに対応する第3のステージビット、
    および前記第4のパイプラインステージに対応する第4のステージビットを含む
    ことを特徴とする請求項2に記載の方法。
  4. 【請求項4】 前記追跡するステップが、 前記ロード命令の実行が前記第1のパイプラインステージに入った時に前記第
    1のステージビットをセットするステップと、 前記ロード命令の実行が前記第1のパイプラインステージから前記第2のパイ
    プラインステージに移行する時に第1の移行を検出するステップと、 前記第1の移行が検出された時に前記第1のステージビットをリセットし、前
    記第2のステージビットをセットするステップと、 前記ロード命令の実行が前記第2のパイプラインステージから前記第3のパイ
    プラインステージに移行する時に第2の移行を検出するステップと、 前記第2の移行を検出した時に前記第2のステージビットをリセットし、前記
    第3のステージビットをセットするステップと、 前記ロード命令の実行が前記第3のパイプラインステージから前記第4のパイ
    プラインステージに移行する時に第3の移行を検出するステップと、 前記第3の移行を検出した時に前記第3のステージビットをリセットし、前記
    第4のステージビットをセットするステップと、 前記ロード命令の実行が前記第4のパイプラインステージから移行する時に第
    4の移行を検出するステップと、 前記第4の移行を検出した時に複数のステージビットを含む全てのビットをリ
    セットするステップとを含むことを特徴とする請求項3に記載の方法。
  5. 【請求項5】 前記決定するステップが、前記年齢インジケータが非ゼロ
    の値を含むか否か決定するステップを更に含むことを特徴とする請求項1に記載
    の方法。
  6. 【請求項6】 前記無効にするステップが、前記ロード命令に関連する有
    効ビットをリセットするステップを更に含むことを特徴とする請求項1に記載の
    方法。
  7. 【請求項7】 前記追跡するステップ、前記検出するステップ、前記決定
    するステップ、および前記無効にするステップがロードストアユニットによって
    実行されることを特徴とする請求項1に記載の方法。
  8. 【請求項8】 前記追跡するステップ、前記検出するステップ、前記決定
    するステップ、および前記無効にするステップがロードアネックスによって実行
    されることを特徴とする請求項1に記載の方法。
  9. 【請求項9】 out-of-orderかつ投機的なロード命令のための正確な例外
    処理を実現するためのコンピュータシステムであって、 メインメモリと、 前記メインメモリに接続された複数のプロセシングユニットと、 前記複数のプロセシングユニットに接続された、年齢インジケータでロード命
    令の年齢を追跡する手段と、 前記複数のプロセシングユニットに接続された、前記第2の命令が正確なトラ
    ップを引き起こしたことを検出する手段と、 前記複数のプロセシングユニットに接続された、前記正確なトラップが起こっ
    た時に前記ロード命令が前記第2の命令の前に発行されたか否かを決定する手段
    と、 前記複数のプロセシングユニットに接続された、前記正確なトラップが起こっ
    た時に前記年齢決定論理が、前記ロード命令が前記第2の命令の前に発行されて
    いないと決定すると、前記ロード命令を無効にする手段とを含むことを特徴とす
    るコンピュータシステム。
  10. 【請求項10】 前記ロード命令が、複数の連続したパイプラインステー
    ジで実行され、 前記年齢インジケータが複数のステージビットを含み、前記複数のステージビ
    ットのそれぞれが、前記複数のパイプラインステージに含まれる連続したパイプ
    ラインステージの異なった1つに対応することを特徴とする請求項9に記載のコ
    ンピュータシステム。
  11. 【請求項11】 前記複数の連続したパイプラインステージが、第1のパ
    イプラインステージ、第2のパイプラインステージ、第3のパイプラインステー
    ジ、および第4のパイプラインステージを含み、 前記複数のステージビットが、前記第1のパイプラインステージに対応する第
    1のステージビット、前記第2のパイプラインステージに対応する第2のステー
    ジビット、前記第3のパイプラインステージに対応する第3のステージビット、
    および前記第4のパイプラインステージに対応する第4のステージビットを含む
    ことを特徴とする請求項10に記載のコンピュータシステム。
  12. 【請求項12】 前記追跡する手段が更に、 前記ロード命令の実行が前記第1のパイプラインステージに入った時に、前記
    第1のステージビットをセットする手段と、 前記ロード命令の実行が前記第1のパイプラインステージから前記第2のパイ
    プラインステージに移行する時に第1の移行を検出する手段と、 前記第1の移行を検出した時に前記第1のステージビットをリセットし、前記
    第2のステージビットをセットする手段と、 前記ロード命令の実行が前記第2のパイプラインステージから前記第3のパイ
    プラインステージに移行する時に第2の移行を検出する手段と、 前記第2の移行を検出した時に前記第2のステージビットをリセットし、前記
    第3のステージビットをセットする手段と、 前記ロード命令の実行が前記第3のパイプラインステージから前記第4のパイ
    プラインステージに移行する時に第3の移行を検出する手段と、 前記第3の移行を検出した時に前記第3のステージビットをリセットし、前記
    第4のステージビットをセットする手段と、 前記ロード命令の実行が前記第4のパイプラインステージから移行する時に第
    4の移行を検出する手段と、 前記第4の移行を検出した時に、前記複数のステージビットを含む全てのビッ
    トをリセットする手段とを含むことを特徴とする請求項11に記載のコンピュー
    タシステム。
  13. 【請求項13】 前記決定するための手段が、前記年齢インジケータが非
    ゼロの値を含むか否かを決定する手段を含むことを特徴とする請求項9に記載の
    コンピュータシステム。
  14. 【請求項14】 前記無効にする手段が更に、前記ロード命令に関連する
    有効ビットをリセットする手段を含むことを特徴とする請求項9に記載の方法。
  15. 【請求項15】 前記追跡するための手段、前記検出するための手段、前
    記決定するための手段、および前記無効にするための手段がロードストアユニッ
    トに含まれていることを特徴とする請求項9に記載のコンピュータシステム。
  16. 【請求項16】 前記追跡するための手段、前記検出するための手段、前
    記決定するための手段、および前記無効にするための手段がロードアネックスに
    含まれていることを特徴とする請求項9に記載のコンピュータシステム。
JP2001528796A 1999-10-01 2000-09-29 投機的なかつ順不同(out−of−order)のロードの場合に正確なトラップ処理をするための方法 Pending JP2003511754A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US41182499A 1999-10-01 1999-10-01
US09/411,824 1999-10-01
PCT/US2000/026815 WO2001025903A1 (en) 1999-10-01 2000-09-29 A method for precise trap handling in case of speculative and out-of-order loads

Publications (1)

Publication Number Publication Date
JP2003511754A true JP2003511754A (ja) 2003-03-25

Family

ID=23630480

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001528796A Pending JP2003511754A (ja) 1999-10-01 2000-09-29 投機的なかつ順不同(out−of−order)のロードの場合に正確なトラップ処理をするための方法

Country Status (4)

Country Link
EP (1) EP1221087A1 (ja)
JP (1) JP2003511754A (ja)
AU (1) AU7622400A (ja)
WO (1) WO2001025903A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6542988B1 (en) 1999-10-01 2003-04-01 Sun Microsystems, Inc. Sending both a load instruction and retrieved data from a load buffer to an annex prior to forwarding the load data to register file
WO2004068361A1 (ja) * 2003-01-27 2004-08-12 Fujitsu Limited 記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法
US7634639B2 (en) * 2005-08-23 2009-12-15 Sun Microsystems, Inc. Avoiding live-lock in a processor that supports speculative execution
US9792252B2 (en) 2013-05-31 2017-10-17 Microsoft Technology Licensing, Llc Incorporating a spatial array into one or more programmable processor cores
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US9720693B2 (en) 2015-06-26 2017-08-01 Microsoft Technology Licensing, Llc Bulk allocation of instruction blocks to a processor instruction window
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5903918A (en) * 1995-08-23 1999-05-11 Sun Microsystems, Inc. Program counter age bits
US5930491A (en) * 1997-06-18 1999-07-27 International Business Machines Corporation Identification of related instructions resulting from external to internal translation by use of common ID field for each group

Also Published As

Publication number Publication date
AU7622400A (en) 2001-05-10
EP1221087A1 (en) 2002-07-10
WO2001025903A1 (en) 2001-04-12

Similar Documents

Publication Publication Date Title
US8180967B2 (en) Transactional memory virtualization
US8180977B2 (en) Transactional memory in out-of-order processors
US6021485A (en) Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching
US8301849B2 (en) Transactional memory in out-of-order processors with XABORT having immediate argument
US8627044B2 (en) Issuing instructions with unresolved data dependencies
US5931957A (en) Support for out-of-order execution of loads and stores in a processor
US7620799B2 (en) Using a modified value GPR to enhance lookahead prefetch
US6282637B1 (en) Partially executing a pending atomic instruction to unlock resources when cancellation of the instruction occurs
US9501284B2 (en) Mechanism for allowing speculative execution of loads beyond a wait for event instruction
US5913048A (en) Dispatching instructions in a processor supporting out-of-order execution
US20080077776A1 (en) Load Lookahead Prefetch for Microprocessors
EP1221088B1 (en) Method and apparatus for processing load instructions
US6098167A (en) Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
JPH0659887A (ja) 高性能プロセッサ用の分岐予測
JPH0675747A (ja) 浮動小数点装置を有する高性能多重プロセッサ
JPH0695963A (ja) 高性能プロセッサ用のバス・プロトコール
JPH06103167A (ja) 多重プロセッサ・システムにおけるインヴァリデート及び戻りデータのための組合せキュー
WO2000033162A9 (en) Execution of instructions that lock and unlock computer resources
JPH06119243A (ja) 内部プロセッサレジスターコマンドのi/o空間アドレスへの変換
JP2002508564A (ja) 実行パイプラインの外部に複数のプログラム・カウンタとトレース・バッファを有するプロセッサ
JPH10283181A (ja) プロセッサ内で命令を発行するための方法および装置
JP2003511754A (ja) 投機的なかつ順不同(out−of−order)のロードの場合に正確なトラップ処理をするための方法
US6928534B2 (en) Forwarding load data to younger instructions in annex
JPH0659979A (ja) 高性能プロセッサ用のキャッシュ・セット選択
US7089405B2 (en) Index-based scoreboarding system and method