JP2016512908A - コンテキスト依存性命令のための性能最適化 - Google Patents

コンテキスト依存性命令のための性能最適化 Download PDF

Info

Publication number
JP2016512908A
JP2016512908A JP2016503240A JP2016503240A JP2016512908A JP 2016512908 A JP2016512908 A JP 2016512908A JP 2016503240 A JP2016503240 A JP 2016503240A JP 2016503240 A JP2016503240 A JP 2016503240A JP 2016512908 A JP2016512908 A JP 2016512908A
Authority
JP
Japan
Prior art keywords
instruction
entry
current value
write
value
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
JP2016503240A
Other languages
English (en)
Other versions
JP2016512908A5 (ja
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
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2016512908A publication Critical patent/JP2016512908A/ja
Publication of JP2016512908A5 publication Critical patent/JP2016512908A5/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/30098Register arrangements
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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
    • 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
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

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)
  • Executing Machine-Instructions (AREA)

Abstract

プロセッサは、レジスタフィールドの現在値のコンテキスト内で処理される命令を記憶するための待ち行列を含み、いくつかの実施形態では、命令は、処理の時におけるレジスタフィールドに依存して、未定義または定義済みである。書込み命令(レジスタフィールドに書き込む命令)の後、待ち行列は、実行された書込み命令に依存する命令を含む任意のエントリを求めて検索される。そのような各エントリは、エントリ中の命令が処理された時におけるレジスタフィールドの値を記憶する。そのようなエントリが待ち行列中に見出され、その記憶されたレジスタフィールドの値が、書込み命令がレジスタフィールドに書き込んだ値と一致しない場合、プロセッサは、命令を正しく実行するために、パイプラインをフラッシュし、リスタートする。

Description

本発明はマイクロプロセッサに関し、より詳細には、その挙動がコンテキスト依存性である命令を処理するときの、マイクロプロセッサの性能を最適化することに関する。
いくつかの現代のマイクロプロセッサアーキテクチャのための命令の組は、その挙動がコンテキスト依存性である命令(たとえば、浮動小数点ベクトル命令)を含む。ベクトル命令(または演算)は、1つまたは複数のデータベクトルに作用して結果をもたらし、結果がやはりベクトルである場合がある。ベクトル命令は、SIMD(Single Instruction Multiple Data)演算と呼ぶ場合もある。
パイプライン化され、アウトオブオーダ実行アーキテクチャを有するマイクロプロセッサが、コンテキスト依存性命令を高性能で実装することが望ましい。
本発明の実施形態は、ベクトル化された浮動小数点命令の性能最適化、より一般的には、1つまたは複数のレジスタフィールドへの書込み命令に依存する命令の性能を最適化するシステムおよび方法を対象とし、ここで、1つまたは複数のレジスタフィールドが、命令についてのコンテキストを決定する。
実施形態では、方法は、レジスタフィールドの現在値により決定されるコンテキスト内で命令を処理するステップであって、命令が書込み命令に依存し、書込み命令がレジスタフィールドに設定値を書き込むためのものであり、書込み命令を実行する前に命令が処理される、ステップと、命令を待ち行列の中のエントリに記憶するステップと、レジスタフィールドの現在値をエントリに記憶するステップと、書込み命令を実行した後で、エントリを求めて待ち行列を検索するステップと、書込み命令を実行した後で、エントリに記憶された現在値を設定値と比較するステップとを含む。
別の実施形態では、プロセッサは、フィールドを有するレジスタ、待ち行列、パイプライン、およびコントローラを含む。コントローラは、パイプラインに、レジスタフィールドの現在値により決定されるコンテキスト内で命令を処理することであって、命令は書込み命令に依存し、書込み命令はレジスタフィールドに設定値を書き込むためのものである、処理することと、ベクトル命令を待ち行列中のエントリに記憶することと、レジスタフィールドの現在値をエントリに記憶することと、パイプラインが書込み命令を実行した後で、エントリを求めて待ち行列を検索することと、パイプラインが書込み命令を実行した後で、エントリに記憶された現在値を設定値と比較することとを行わせるように構成される。
別の実施形態では、方法は、レジスタフィールドの現在値により決定されるコンテキスト内で命令を処理するための手段であって、書込み命令がレジスタフィールドに設定値を書き込むためのものであり、書込み命令を実行する前に命令が処理される、手段と、命令を待ち行列の中のエントリに記憶するための手段と、レジスタフィールドの現在値をエントリに記憶するための手段と、書込み命令を実行した後で、エントリを求めて待ち行列を検索するための手段と、書込み命令を実行した後で、エントリに記憶された現在値を設定値と比較するための手段とを含む。
別の実施形態では、非一時的なコンピュータ可読媒体が命令を記憶しており、命令を実行すると、命令は、コントローラに、レジスタフィールドの現在値により決定されるコンテキスト内で命令を処理するステップであって、命令が書込み命令に依存し、書込み命令がレジスタフィールドに設定値を書き込むためのものであり、書込み命令を実行する前に命令が処理される、ステップと、命令を待ち行列の中のエントリに記憶するステップと、レジスタフィールドの現在値をエントリに記憶するステップと、書込み命令を実行した後で、エントリを求めて待ち行列を検索するステップと、書込み命令を実行した後で、エントリに記憶された現在値を設定値と比較するステップと含む方法を実施させる。
添付図面は、本発明の実施形態の記載を支援するために提示され、実施形態の例示のためにのみ提供されており、それを制限するものではない。
実施形態に従うプロセッサの抽象概念図である。 実施形態に従う、コンテキストを検査し、修復する方法を図示する図である。 別の実施形態に従う、コンテキストを検査し、修復する方法を図示する図である。 実施形態が応用され得る、通信システムを図示する図である。
本発明の態様は、本発明の特定の実施形態を対象とする以下の記載および関連する図に開示される。代替実施形態は、本発明の範囲から逸脱することなく考案することができる。加えて、本発明のよく知られる要素は、本発明の関連する詳細を不明瞭にしないように、詳細には記載しない、または省略することとする。
「例示的な」という用語は、本明細書では、「例、事例、または説明として働く」ということを意味するように使用される。本明細書で「例示的な」と記載される任意の実施形態は、必ずしも、他の実施形態よりも好ましいまたは有利であると解釈されるべきでない。同様に、「本発明の実施形態」という用語は、本発明のすべての実施形態が議論される特徴、利点または動作モードを含むことを必要としない。
本明細書で使用される用語法は、特定の実施形態を記載することのみのためであり、本発明の実施形態を制限することを意図していない。本明細書で使用するとき、単数形「a」、「an」、および「the」は、文脈がそうでないと明らかに示さない限り、複数形を同様に含むことを意図している。「備える、含む(comprises)」、「備えている、含んでいる(comprising)」、「含む(includes)」および/または「含んでいる(including)」という用語は、本明細書で使用するとき、明記される特徴、整数、ステップ、動作、要素、および/または構成要素の存在を指定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことをさらに理解されよう。
さらに、多くの実施形態は、たとえばコンピューティングデバイスの要素によって実施されるアクションのシーケンスの観点から記載される。本明細書で記載される様々なアクションは、専用回路(たとえば、特定用途向け集積回路(ASIC))、1つまたは複数のプロセッサにより実行されるプログラム命令、または両方の組合せにより実施できることが認識されよう。加えて、本明細書に記載されるこれらのアクションのシーケンスは、実行の際に関連するプロセッサに本明細書に記載される機能性を実施させることになる、コンピュータ命令の対応する組をその中に記憶させた、コンピュータ可読記憶媒体の任意の形式で完全に具現化されると考えることができる。したがって、本発明の様々な態様は、そのすべてが特許請求される主題の範囲内であることが企図された、いくつかの異なる形式で具現化することができる。加えて、本明細書に記載される実施形態の各々について、任意のそのような実施形態の対応する形式は、たとえば、記載されるアクションを実施する「ように構成されるロジック」として本明細書に記載することができる。
実施形態を記載することを容易にするため、図1に図示されるプロセッサ100の抽象概念図が最初に参照され、そこでは、簡潔にするため、プロセッサ中に従来見出される機能ユニットすべては示されない。実施形態が応用されるプロセッサ100は、スーパースカラ、アウトオブオーダアーキテクチャを有する場合があるが、これは必要条件ではない。しかし、図1に図示されるプロセッサ100が、命令を投機的に実行または処理し、投機的な実行または処理が正しくないことが見出された場合に適切に回復する能力を有することが仮定される。たとえば、多くのプロセッサは、分岐命令の目標アドレスを予測することにより分岐命令を投機的に実行し、予測した目標アドレスが正しくないことが後に見出された場合に、正しい命令フローを適切に回復および実行する能力を有する。
命令フェッチステージ104、命令デコードステージ106、レジスタリネームステージ108、および命令待ち行列およびディスパッチステージ110を含むパイプライン102が図1に示される。実際には、たとえば、命令がコミット(リタイア)するときに、メモリ位置またはアーキテクチャ上のレジスタに結果を書き込むための様々なステージなど、より多くのステージがパイプライン中に存在してよいが、簡単のために4つのステージのみがパイプライン102に図示される。コントローラ112が、パイプライン102中のアクションを制御する。(ここで、コミットおよびリタイアという用語は同義語として使用され、いわば、命令がコミットすることとは、命令がリタイアすることを意味するとも受け取ることができる。)
命令およびデータは、メモリ階層の部分と考えることができる、様々なキャッシュおよびオフチップメモリを備えるメモリ記憶装置から取り出され、また、メモリ記憶装置に書き込まれる。114と標示される機能ブロックは、このメモリ階層を要約しており、議論しやすくするため、1つまたは複数のメモリ機能ユニットは、簡単に、メモリ階層114と呼ぶ場合がある。メモリ階層114を作るメモリのうちのいくつかは、コントローラ112または他の機能ユニットと一体化してよく、非一時的なコンピュータ可読記憶媒体と呼ぶ場合がある。いくつかの実施形態では、メモリ階層114は、コントローラ112または他の機能ユニットが本明細書に記載されるような様々なアクションを実行できる、記憶された命令を含むことができる。
図1に図示される他の機能ユニットは、物理的なレジスタファイル116、実行ユニット118の組、およびリオーダバッファ120である。リオーダバッファ120は、アウトオブオーダ実行を容易にし、いくつかの実施形態ではサーキュラバッファとして実装することができる。そこでは、命令が命令待ち行列およびディスパッチステージ110に入ると、命令がバッファに入り、命令がコミット(リタイア)すると、リオーダバッファ120を出る。命令は、命令がリオーダバッファ120に入る順番でコミットする。
投機的命令情報待ち行列(SIIQ: speculative instruction information queue)122と標示される別のバッファが使用されて、投機的に予測されるコンテキスト内のパイプライン102中で早期に処理される命令、ならびに、投機的に処理されたインフライト(in-flight)命令が正しい命令フローの部分でないことが後に見出され、したがってコミットするべきでない場合、プロセッサ100の状態を復元するために必要な可能性がある、様々なレジスタ値および場合によっては状態情報を記憶する。このバッファは、投機的命令情報待ち行列と呼ばれ、後でより詳細に議論される。
ベクトル処理は、音声または画像処理など、多くの信号処理用途で重要な能力である。ベクトル処理命令は、時々、SIMD(Single Instruction Multiple Data、単一命令複数データ)命令と呼ばれ、ここで、単一の命令が複数のデータに作用する。ベクトルは、連続する要素間に一定の刻み幅を有するメモリ位置の範囲と考えることができる。別の観点では、ベクトルは、連続する要素間に一定の刻み幅を有するレジスタ位置の範囲と考えることができる。たとえば、物理的なレジスタの配列{Ri、i=0, 1, 2, …, 15}について、ベクトルは、刻み幅が2である、レジスタ位置R{(i)、i=0, 2, 4, …, 14}からなってよい。
ロード-ストアアーキテクチャのプロセッサでは、ベクトルの要素は、ロード命令でレジスタの中にロードされ、その後、ベクトル命令に従って操作される。たとえば、ベクトル加算命令は、第1の組のソースレジスタ中の値を、第2の組のソースレジスタ中の値に加算し、結果を宛先レジスタの組に書き込むことができる。具体的な例として、第1の組のソースレジスタ中の値{RX(i) i=0, 1, 2, 3}が、第2の組のソースレジスタ中の値{RY(i) i=0, 1, 2, 3}に加算され、結果が、宛先レジスタの組{RZ(i) i=0, 1, 2, 3}の中に書き込まれる場合があり、各i=0, 1, 2, 3について、レジスタRZ(i)の値は、レジスタRX(i)およびRY(i)中の値の合計である。この具体例では、ベクトルの長さは4であり、刻み幅は1である。
ベクトル処理で利用されるソースレジスタおよび宛先レジスタのファイルは、機能ユニット116により包含される物理的なレジスタとして、または図1に明示的には示されない他の物理的なレジスタファイルとして考えることができる。
ベクトル命令により消費されるベクトル長、刻み幅、および様々な他のパラメータは、1つまたは複数の制御レジスタ中に記憶される。そのような制御レジスタの例は、図1で124と標示され、FPSCR(Floating Point Status and Control Register、浮動小数点状態制御レジスタ)124と呼ばれる。パラメータをFPSCR124に書き込む(コピーする)命令は、(プログラムの順番で)必要なパラメータに依存するベクトル命令の前に、コードのブロックに挿入される。この場合、FPSCR124への書込み命令に対し、これらのベクトル命令の依存性が存在する。
具体的には、ベクトル対応プロセッサ用のいくつかの命令の組は、FPSCR124中の1つまたは複数のフィールドへ書き込む書込み命令であって、これらのフィールド中の値に基づいてベクトル命令の挙動を設定する書込み命令を含む。刻み幅または長さフィールドは、FPSCR124中に含まれ得る例示的なフィールドであるが、他のフィールドも含まれ得る。これら1つまたは複数のフィールドは、図1で125と標示される。議論しやすくし、普遍性を失わないため、125をフィールドと呼ぶが、FPSCR124の、2つ以上のビット、また2つ以上のフィールドに及んでよい。
たとえば、フィールド125に書き込まれる非ゼロ値は、ベクトル命令実行が未定義の命令であり、その結果ベクトル命令実行が試みられる場合にプロセッサ100が割込ハンドラを実行するコンテキストを規定することができる。いくつかの実施形態では、フィールド125が非ゼロ値に設定される場合、ベクトル命令の組の適切なサブセットのみが未定義となる。すなわち、いくつかの実施形態では、FPSCR124中のフィールド125を無視するいくつかのベクトル命令が存在する場合がある。
議論しやすくするため、書込み命令とは、FPSCR124中のフィールド125に書き込む命令のことを言うことにし、フィールド125は、設定フィールドまたは設定値と呼ばれる。
書込み命令およびベクトル命令などの依存性命令が両方ともパイプライン102中にあるとき、書込み命令が設定フィールド125に書き込むことができる前に、ベクトル命令のためのオペランドが利用可能であることが生じ得る。たとえば、書込み命令が設定フィールド125に書き込むべき値は、依存性ベクトル命令が実行する準備ができたときに、実行がまだ完了していない別の命令の結果である可能性がある。依存性障害を回避するため、いくつかの従来技術のプロセッサはコンテキスト同期を実装する場合があり、これにより、(プログラムの順番で)書込み命令に続くすべてのベクトル命令は、書込み命令がコミットするまで実行されない。いくつかの他の従来技術のプロセッサは、ベクトル命令をデコードするとき、(プログラムの順番で)すべての前の書込み命令がコミットされるまで、ホールドを導入する場合がある。しかし、そのような方法は、性能を劣化させ、パイプラインをあふれさせる可能性がある。
性能を改善するため、実施形態は、依存性命令の投機的な処理および実行を実施する。この実施形態では、依存性命令はベクトル命令であるが、当業者なら、限定するものではないが、設定可能特権またはセキュリティ依存性を有する命令、または特定アーキテクチャのレジスタにアクセスする命令を含む、他のタイプの依存性命令が本開示の範囲内であることを理解するであろう。より具体的には、実施形態は、FPSCR124の現在値により決定されるコンテキスト内でベクトル命令を処理することを開始する。書込み命令がまだコミットされておらずin-flight状態であるが、(プログラムの順番で)後の依存性ベクトル命令が処理を開始することが可能である場合、その依存性ベクトル命令は、その処理の時におけるFPSCR124の現在の状態に基づいて処理される。
書込み命令に依存するベクトル命令が処理されると、ベクトル命令を処理する時におけるFPSCR124の提示するコンテキスト(すなわち、設定フィールド125の値)が正しいコンテキストでないことが生じ得る。たとえば、提示するコンテキストはベクトル命令が未定義として処理されるようなものであるが、実際には、現在のコンテキストが正しかった場合に定義済みとしてベクトル命令が処理されなければならない場合があり得る。代替的に、ベクトル命令を処理する時におけるFPSCR124の提示するコンテキストは、ベクトル命令が定義済みであるようなものであるが、それにもかかわらず、正しいコンテキストで処理されるときにベクトル命令が未定義であるべき場合が生じ得る。
したがって、ベクトル命令が正しくないコンテキストで処理されたことが決定される場合(ここで、コンテキストは、パイプライン102がベクトル命令を処理することを開始するときの設定フィールド125の値のことを言う)、実施形態は、最終的にベクトル命令が正しいコンテキストで処理および実行されるように回復手順を実施するべきである。
回復プロセスを容易にするため、実施形態は、投機的命令情報待ち行列122を使用する。この待ち行列は、分岐命令待ち行列(BIQ: branch instruction queue)と同じ構造を有してよく、いくつかの実施形態では、投機的命令情報待ち行列122は、BIQ自体であってよいが、分岐命令に加えてベクトル命令がやはり待ち行列に入れられる。いくつかの実施形態では、限定するものではないが、命令のアドレスVopp127、および所望のフェッチアドレスにおける実行を再開するために必要な、任意の他のコンテキスト非依存性情報を含む状態情報も含まれて、回復プロセス期間にプロセッサ100が正しい状態にすることを助けることができる。実施形態は、機能ユニット122をBIQと呼ぶことで記載することができたが、構造をBIQに制限しないように異なる用語を使用することが有用であり、したがって、待ち行列は、投機的命令情報待ち行列と呼ばれる。
図1に図示される例示的な実施形態では、リオーダバッファ120中の126と標示される命令VMSRは、FPSCR124中の設定フィールド125に値を書き込む命令を示す。(VMSRという用語法は、ARM命令の組から取られており、そこでは、VMSRは、システムレジスタからFPSCRに内容を伝達するための命令を表すことができる。この用語法は、単に便宜上借用され、本実施形態は、多くの異なるアーキテクチャおよび命令の組において応用され得る。)127と標示される、リオーダバッファ120中の後続の命令Voppは、命令VMSR126に依存するベクトル命令を示す。128と標示される矢印は、この依存性を表す。
パイプライン102が命令Vopp127を処理することを開始すると、命令Vopp127は、投機的命令情報待ち行列122中に配置される。130と標示される矢印は、132と標示されるエントリとして示される、投機的命令情報待ち行列122中への配置を示す。エントリ132は、2つの部分を含み、132aと標示される部分は、ベクトル命令およびコンテキストフィールド133を含み、132bと標示される部分は、状態情報を含む。いくつかの実施形態は、状態情報を含まない場合がある。たとえばエントリ132などのエントリ中に状態情報を記憶するいくつかの実施形態では、状態情報は、ベクトル命令が正しくないコンテキストで処理されたと決定されるとき、回復プロセス期間にプロセッサ100を正しい状態に戻すために使用される。エントリ132中のコンテキストフィールド133は、エントリ132について関連する命令Vopp127が処理されたコンテキストを示す。エントリに関連するベクトル命令がコミットする、またはフラッシュされると、そのエントリは、投機的命令情報待ち行列122から除外される。
書込み命令(「書込み」とはFPSCR124への書込みのことを言う)がin-flight状態である時間のいくつかの時点において、何らかの依存性ベクトル命令が正しくないコンテキストで処理されたかどうかについて、決定される。たとえば、命令VMSR126と命令Vopp127との間に介在する書込み命令がない場合、命令Vopp127は、命令VMSR126に依存する場合があり、命令Vopp127がリタイアする前に命令Vopp127が正しいコンテキストで処理されたことを確認するための配慮をするべきである。
いくつかの実施形態では、正しいコンテキストについての決定は、書込み命令がコミットするときに行われる。図1に図示される例で続けると、命令VMSR126がリオーダバッファ120のトップ(または先頭)であり、コミットする用意ができているとき、命令VMSR126が設定フィールド125に書き込んだ値は、依存性のin-flightなベクトル命令を有する投機的命令情報待ち行列122中の各エントリについてのコンテキストフィールドと比較される。たとえば、コンテキストフィールド133の値が、命令VMSR126からの結果である設定フィールド125についての値と比較され、エントリ132中の命令Vopp127が正しいコンテキストで処理されたかどうかを決定する。投機的命令情報待ち行列122中のベクトル命令は、介在する書込み命令がない場合、命令VMSR126に依存する。
いくつかの実施形態では、命令VMSR126がコミットする用意ができているが、投機的命令情報待ち行列122中の依存性ベクトル命令が正しくないコンテキストで処理されたことが見出された場合、命令VMSR126がリタイアされ(これは、命令VMSR126の前のすべての命令もリタイアされたことを暗示する)、すべての命令がパイプラインおよびリオーダバッファ120からフラッシュされ、プログラムカウンタ134は、プログラムの順番で命令VMSR126に対して直後の命令のアドレスでロードされる。この場合、状態情報は、投機的命令情報待ち行列122中に記憶する必要がない。というのは、命令VMSR126がリタイアするときアーキテクチャレジスタのすべてが正しい状態であり、プログラム制御が次の順番の命令で開始するからである。
いくつかの実施形態は、正しくないコンテキストで処理された可能性がある依存性ベクトル命令を求めて投機的命令情報待ち行列122を検索する前に、命令VMSR126がリオーダバッファ120のトップに到達するのを待たない場合がある。たとえば、いくつかの実施形態では、命令VMSR126が実行する(ここで、命令VMSR126の実行とは、FPSCR124へ書き込むべき値が知られていることを意味する)と、命令VMSR126がコミットする用意ができていない可能性がある場合でさえ、投機的命令情報待ち行列122が、不正に処理された依存性ベクトル命令を求めて検索される。
別の実施形態では、命令Vopp127などのSIIQ122中の命令がリタイアする用意ができている(たとえば、コミットする用意ができている、または未定義割込をする用意ができているのいずれかである)とき、命令Vopp127はコンテキストフィールド133を、設定フィールド125中のアーキテクチャコンテキストに対して比較する。コンテキストフィールド133と設定フィールド125が一致する場合、命令Vopp127は、従来のやり方でリタイアする。しかし、コンテキストフィールド133と設定フィールド125が一致しない場合、回復手順が実施される。たとえば、パイプラインおよびリオーダバッファが依存性命令Vopp127および依存性命令に続くすべての命令の両方をフラッシュし、プログラムカウンタ134が依存性命令Vopp127をフェッチするように設定され、状態情報132bが正しい状態を復元するために使用される。
いくつかの実施形態では、記載される検査を実施するため、命令Vopp127がリタイアする用意ができるまで待つ必要がない場合がある。命令Vopp127がリタイアする用意ができる前に(命令VMSR126などの命令によろうとその他によろうと)設定フィールド125への未解決の可能な更新がない場合、命令Vopp127は、設定フィールド125をコンテキストフィールド133と比較して、必要な場合、命令Vopp127がリタイアする用意ができるまで待つことなく回復手順を実施することができる。
投機的命令情報待ち行列122は、プロセッサ100が不正に実行された分岐命令から回復することができるように、分岐命令および関連する状態情報を記憶するためにも使用することができる。これが、図1にエントリ136を含む理由である。(エントリ136は、状態情報以外の情報を含み得るが、議論しやすくするためエントリ136を、詳細には記載しない。というのは、当技術分野でよく知られているからである。)この場合、投機的命令情報待ち行列122は、前に議論したように、BIQの機能性を含む。しかし、実施形態は、投機的命令情報待ち行列122中にBIQの機能性を含まない場合があるが、投機的命令情報待ち行列122を実装するために使用される物理的バッファとは別個の、BIQのための別の物理的バッファを採用することができる。
図2Aは、上で議論した1つまたは複数の実施形態により採用される方法を図示する。ボックス202で示されるように、コンテキスト依存性命令(ベクトル命令など)が処理され、投機的命令情報待ち行列122中に配置される。コンテキスト依存性命令は、(プログラムの順番で)前の書込み命令が実行していないにもかかわらず処理される。ここで、書込み命令は、設定フィールド125に値を書き込む命令である。命令は、命令が処理される時に、設定フィールド125の値により決定されるコンテキスト内で処理される。
命令は、エントリの部分として、投機的命令情報待ち行列122中に記憶される。ここで、エントリは、命令が処理されたときの設定フィールド125の値に等しい値を有するコンテキストフィールドも含む。
設定フィールド125に書き込む書込み命令の実行後(ボックス204)、投機的命令情報待ち行列122は、その書込み命令に依存する命令を有するエントリを求めて検索される(ボックス206)。この検索は、書込み命令がリオーダバッファ120の先頭となる前に実施することができ、または書込み命令は、書込み命令がリオーダバッファ120の先頭に到達してコミットするときに実施することができる。
そのようなエントリが見出されない場合、特殊なアクションは行わず、図2A中の決定208および楕円210に示されるように、パイプラインは従来のやり方で進む。しかし、書込み命令に依存する命令を含むエントリが見出される場合、決定211において、命令が正しいコンテキストで処理されたかどうかを決定するために、コンテキストフィールド133の値が、書込み命令に関連する設定フィールド値と比較される。命令が正しいコンテキストで処理された場合、プロセスフローは楕円210に戻り、特殊なアクションを行わないことを示す。
しかし、命令が正しくないコンテキストで処理された場合、ボックス212に示されるように、正しくないコンテキスト中で命令を処理したことからプロセッサ100を適切に回復するため、様々なアクションを行う。ボックス212では、すべてのインフライト命令は、パイプライン102およびリオーダバッファ120からフラッシュされ、プログラムカウンタ134は、書込み命令の(プログラムの順番で)直後の命令がフェッチされるように設定される。
図2Bは、上で議論した実施形態と別の実施形態により採用される方法を図示する。ボックス202で示されるように、コンテキスト依存性命令(ベクトル命令など)が処理され、投機的命令情報待ち行列122中に配置される。コンテキスト依存性命令は、(プログラムの順番で)前の書込み命令が実行していないにもかかわらず処理される。ここで、書込み命令は、設定フィールド125に値を書き込む命令である。命令は、命令が処理される時に、設定フィールド125の値により決定されるコンテキスト内で処理される。
命令は、エントリの部分として、投機的命令情報待ち行列122中に記憶される。ここで、エントリは、命令が処理されたときの設定フィールド125の値に等しい値を有するコンテキストフィールドも含む。
コンテキスト依存性命令が実行されたコンテキストが正しいかどうかの検査は、2つの異なるやり方で実施することができる。一実施形態では、ボックス224において、コンテキスト依存性命令がリタイアする用意ができているとき、方法は、ボックス211へ進み、検査を実施する。別の実施形態では、ボックス226において、コンテキスト依存性命令は、(命令VMSR126などの命令によろうとその他によろうと)設定値125に何らかの可能な未解決の更新があるかどうかを検査して決定する。未解決の可能な更新がある場合、方法は、ボックス226に戻って待機する。未解決の可能な更新がない場合、方法は、ボックス211に進み、検査を実施する。
ボックス211では、命令が正しいコンテキストで処理されたかどうかを決定するために、コンテキストフィールド133の値が、書込み命令に関連する設定フィールド値と比較される。命令が正しいコンテキストで処理された場合、プロセスフローは楕円210に戻り、特殊なアクションを行わないことを示す。
しかし、命令が正しくないコンテキストで処理された場合、ボックス214に示されるように、正しくないコンテキスト中で命令を処理したことからプロセッサ100を適切に回復するため、様々なアクションを行う。ボックス214では、命令および(プログラムの順番で)命令の直後のすべてのインフライト命令は、パイプライン102およびリオーダバッファ120からフラッシュされ、プログラムカウンタ134は、命令がフェッチされるべき次の命令であり、命令でエントリに記憶される状態情報が、命令を処理するためプロセッサ100の状態を正しい状態に回復させるために使用されるように設定される。
いくつかの実施形態では、コントローラ112は、ファームウェア、またはメモリ階層114などの非一時的なコンピュータ可読媒体に記憶される命令を実行することにより、図2Aまたは図2Bの方法を実行することができる。
図3は、実施形態が応用され得る、ワイヤレス通信システムを図示する。図3は、基地局304A、304B、および304Cを備えるワイヤレス通信ネットワーク302を図示する。図3は、306と標示される通信デバイスを示し、通信デバイスは、いわゆるスマートフォン、タブレット、またはコンピュータもしくはコンピュータシステムなどのセルラーフォンネットワークに好適な何らかの他の種類の通信デバイスなどのモバイルセルラー通信デバイスであってよい。通信デバイス306はモバイルである必要はない。図3の特定の例では、通信デバイス306は、基地局304Cと関連するセル内に配置される。矢印308および310は、それぞれアップリンクチャネルおよびダウンリンクチャネルを図式的に表し、それにより、通信デバイス306が基地局304Cと通信する。
実施形態は、たとえば、通信デバイス306と、または基地局304Cと、または両方と関連するデータ処理システム中で使用することができる。図3は、本明細書に記載される実施形態が採用され得る多数の応用例の中の単に1つの応用例を図示する。
実施形態は、ベクトル命令、およびFPSCR124中の1つまたは複数のフィールドへのベクトル命令の依存性の文脈で記載されてきた。しかし、実施形態は、ベクトル命令に限定されず、それらの文脈について、レジスタ中の1つまたは複数のフィールドに依存する、他のタイプの命令において応用され得る。たとえば、実施形態は、リソースの生成とリソースに依存する消費との間のパイプラインに大きい広がりがあり、依存性が生成する状態へ比較的まれに更新があり、依存性を消費する命令について高い性能需要がある可能性がある、プロセッサアーキテクチャにおいて応用され得る。そのため、記載される実施形態は、予測方式のタイプとして見ることができ、ここで、依存性命令のコンテキストを規定する状態は、依存性命令により消費される状態である時と依存性命令がコミットする時との間で変化しないと予測される。ここで、状態の変化は、誤った予測をもたらす。これは、依存性が条件制限または目標のいずれかを含まず、非分岐命令を含む点で、分岐予測技法と類似しているが別個である。
様々な異なる技術および技法をいずれかを使用して、情報および信号を表すことができることを、当業者は了解するであろう。たとえば、上の記載を通して参照され得る、データ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは粒子、光場もしくは粒子、またはそれらの任意の組合せにより表すことができる。
さらに、本明細書に開示される実施形態に関して記載される、様々な例示の論理的ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェアまたは両方の組合せとして実装できることを、当業者は了解するであろう。ハードウェアとソフトウェアのこの互換性を明確に示すため、様々な例示の構成要素、ブロック、モジュール、回路、およびステップが、一般的にそれらの機能性の点で上に記載されてきた。そのような機能性がハードウェアまたはソフトウェアとして実装されるかどうかは、特定の用途および全体的なシステムに課せられる設計制約に依存する。当業者は、各特定の用途について様々な様式で記載された機能性を実装することができるが、そのような実装判断は、本発明の範囲からの逸脱を引き起こすと解釈するべきでない。
本明細書に開示される実施形態に関して記載される方法、シーケンス、および/またはアルゴリズムは、ハードウェア中で直接、プロセッサにより実行されるソフトウェアモジュール中で、または2つの組合せで具現化することができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている記憶媒体の任意の他の形で常駐することができる。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み込み、記憶媒体へ情報を書き込むことができるように、プロセッサと結合される。代替として、記憶媒体は、プロセッサと一体であってよい。
したがって、本発明の実施形態は、上に記載されたような方法を具現化するコンピュータ可読媒体を含むことができる。したがって、本発明は例示の例に制限されず、本明細書に記載される機能性を実施するための任意の手段は、本発明の実施形態に含まれる。
上記の開示が本発明の例示の実施形態を示す一方で、添付される請求項により規定されるような、本発明の範囲から逸脱することなく、本明細書に様々な変形および変更を行うことができることに留意されたい。本明細書に記載される本発明の実施形態に従う方法クレームの機能、ステップ、および/またはアクションは、任意の特定の順序で実施される必要はない。さらに、本発明の要素は、単数形で記載され、特許請求される場合があるが、単数形への制限が明示的に言及されない限り、複数形が意図される。
100 プロセッサ
102 パイプライン
104 命令フェッチステージ
106 命令デコードステージ
108 レジスタリネームステージ
110 命令待ち行列およびディスパッチステージ
112 コントローラ
114 メモリ階層
116 物理的なレジスタファイル、機能ユニット
118 実行ユニット
120 リオーダバッファ
122 投機的命令情報待ち行列、SIIQ
124 FPSCR
125 フィールド、設定フィールド
126 命令VMSR
127 命令Vopp
128 矢印
130 矢印
132 エントリ
133 コンテキストフィールド
134 プログラムカウンタ
136 エントリ
302 ワイヤレス通信ネットワーク
304A 基地局
304B 基地局
304C 基地局
306 通信デバイス
308 矢印
310 矢印

Claims (35)

  1. レジスタフィールドの現在値により決定されるコンテキスト内で命令を処理するステップであって、前記命令が書込み命令に依存し、前記書込み命令が前記レジスタフィールドに設定値を書き込むためのものであり、前記書込み命令を実行する前に前記命令が処理される、ステップと、
    前記命令を待ち行列の中のエントリに記憶するステップと、
    前記レジスタフィールドの前記現在値を前記エントリに記憶するステップと、
    前記書込み命令を実行した後で、前記エントリを求めて前記待ち行列を検索するステップと、
    前記書込み命令を実行した後で、前記エントリに記憶された前記現在値を前記設定値と比較するステップと
    を含む、方法。
  2. 前記エントリに記憶された前記現在値が前記設定値と一致しない場合に、すべてのインフライト命令のパイプラインをフラッシュするステップと、プログラムカウンタを、プログラムの順番で前記書込み命令後の次の命令のアドレスに設定するステップと
    をさらに含む、請求項1に記載の方法。
  3. 前記命令を処理するステップが
    前記現在値が第1の値である場合、前記命令を定義済みとして処理するステップと、
    前記現在値が前記第1の値でない場合、前記命令を未定義として処理するステップと
    をさらに含む、請求項2に記載の方法。
  4. 前記エントリに記憶された前記現在値が前記設定値と一致しない場合に、前記命令およびプログラムの順番で前記命令に続くすべてのインフライト命令のパイプラインをフラッシュするステップと、プログラムカウンタを前記命令のアドレスに設定するステップと
    をさらに含む、請求項1に記載の方法。
  5. プロセッサの状態情報を前記エントリに記憶するステップであって、前記状態情報が前記命令が処理される時点のものである、ステップと、
    前記エントリに記憶される前記現在値が前記設定値と一致しない場合、前記エントリから前記状態情報を取り出して、前記状態情報により示される状態に前記プロセッサを回復するステップと
    をさらに含む、請求項4に記載の方法。
  6. 前記命令がベクトル命令である、請求項1に記載の方法。
  7. 前記レジスタフィールドが1つまたは複数のフィールドを含む、請求項1に記載の方法。
  8. 前記命令を処理するステップが
    前記現在値が第1の値である場合、前記命令を定義済みとして処理するステップと、
    前記現在値が前記第1の値でない場合、前記命令を未定義として処理するステップと
    をさらに含む、請求項1に記載の方法。
  9. 前記命令がコミットするとき、前記エントリを前記待ち行列から除去するステップ
    をさらに含む、請求項1に記載の方法。
  10. フィールドを有するレジスタと、
    待ち行列と、
    パイプラインと、
    前記パイプラインに、前記パイプラインが書込み命令を実行する前に、レジスタフィールドの現在値により決定されるコンテキスト内で命令を処理させることであって、前記命令が前記書込み命令に依存し、前記書込み命令が前記レジスタフィールドに設定値を書き込むためのものである、処理させることと、
    前記命令を前記待ち行列中のエントリに記憶することと、
    前記レジスタフィールドの前記現在値を前記エントリに記憶することと、
    前記パイプラインが前記書込み命令を実行した後で、前記エントリを求めて前記待ち行列を検索することと、
    前記パイプラインが前記書込み命令を実行した後で、前記エントリに記憶された前記現在値を前記設定値と比較することと
    を行うようにに構成されるコントローラと
    を備える、プロセッサ。
  11. プログラムカウンタをさらに備え、
    前記コントローラが、前記エントリに記憶された前記現在値が前記設定値と一致しない場合に、
    すべてのインフライト命令の前記パイプラインをフラッシュし、
    前記プログラムカウンタを、プログラムの順番で前記書込み命令後の次の命令のアドレスに設定する
    ようにさらに構成される、請求項10に記載のプロセッサ。
  12. 前記コントローラが、前記パイプラインに
    前記現在値が第1の値である場合、前記命令を定義済みとして実行し、
    前記現在値が前記第1の値でない場合、前記命令を未定義として実行する
    ようにさらに構成される、請求項11に記載のプロセッサ。
  13. プログラムカウンタをさらに備え、前記コントローラが、前記エントリに記憶された前記現在値が前記設定値と一致しない場合に、
    前記命令およびプログラムの順番で前記命令に続くすべてのインフライト命令の前記パイプラインをフラッシュし、
    前記プログラムカウンタを前記命令のアドレスに設定する
    ように構成される、請求項10に記載のプロセッサ。
  14. 前記コントローラが、
    プロセッサの状態情報を前記エントリに記憶することであって、前記状態情報が前記パイプラインが前記命令を処理する時点のものである、記憶することと、
    前記エントリに記憶される前記現在値が前記設定値と一致しない場合、前記エントリから前記状態情報を取り出して、前記状態情報により示される状態に前記プロセッサを回復することとを行うように構成される、請求項13に記載のプロセッサ。
  15. 前記コントローラが、前記パイプラインに
    前記現在値が第1の値である場合、前記命令を定義済みとして実行させ、
    前記現在値が前記第1の値でない場合、前記命令を未定義として実行させる
    ように構成される、請求項13に記載のプロセッサ。
  16. 前記コントローラが、前記パイプラインに
    前記現在値が第1の値である場合、前記命令を定義済みとして実行させ、
    前記現在値が前記第1の値でない場合、前記命令を未定義として実行させる
    ように構成される、請求項10に記載のプロセッサ。
  17. 前記パイプラインが前記命令をコミットするとき、前記エントリを前記待ち行列から除去するように前記コントローラが構成される、請求項10に記載のプロセッサ。
  18. 前記命令がベクトル命令である、請求項10に記載のプロセッサ。
  19. 前記レジスタフィールドが1つまたは複数のフィールドを含む、請求項10に記載のプロセッサ。
  20. レジスタフィールドの現在値により決定されるコンテキスト内で命令を処理するための手段であって、前記命令が書込み命令に依存し、前記書込み命令が前記レジスタフィールドに設定値を書き込むためのものであり、前記書込み命令を実行する前に前記命令が処理される手段と、
    前記命令を待ち行列の中のエントリに記憶するための手段と、
    前記レジスタフィールドの前記現在値を前記エントリに記憶するための手段と、
    前記書込み命令を実行した後で、前記エントリを求めて前記待ち行列を検索するための手段と、
    前記書込み命令を実行した後で、前記エントリに記憶された前記現在値を前記設定値と比較するための手段と
    を備える、方法。
  21. 前記エントリに記憶された前記現在値が前記設定値と一致しない場合に、すべてのインフライト命令のパイプラインをフラッシュするための手段と、プログラムカウンタを、プログラムの順番で前記書込み命令後の次の命令のアドレスに設定するための手段と
    をさらに備える、請求項20に記載の方法。
  22. 前記エントリに記憶された前記現在値が前記設定値と一致しない場合に、前記命令およびプログラムの順番で前記命令に続くすべてのインフライト命令のパイプラインをフラッシュするための手段と、プログラムカウンタを前記命令のアドレスに設定するための手段と
    をさらに備える、請求項20に記載の方法。
  23. プロセッサの状態情報を前記エントリに記憶するための手段であって、前記状態情報が前記命令が処理される時点のものである、手段と、
    前記エントリに記憶される前記現在値が前記設定値と一致しない場合、前記エントリから前記状態情報を取り出すための手段と、前記状態情報により示される状態に前記プロセッサを回復するための手段と
    をさらに備える、請求項22に記載の方法。
  24. 前記命令を処理するための前記手段が
    前記現在値が第1の値である場合、前記命令を定義済みとして処理するための手段と、
    前記現在値が前記第1の値でない場合、前記命令を未定義として処理するための手段と
    をさらに備える、請求項20に記載の方法。
  25. 前記命令がコミットするとき、前記エントリを前記待ち行列から除去するための手段
    をさらに備える、請求項20に記載の方法。
  26. 前記レジスタフィールドが1つまたは複数のフィールドを含む、請求項20に記載の方法。
  27. 前記命令がベクトル命令である、請求項20に記載の方法。
  28. コントローラに以下の方法を実施させる命令を記憶した非一時的なコンピュータ可読記録媒体であって、前記方法が、
    レジスタフィールドの現在値により決定されるコンテキスト内で命令を処理するステップであって、前記命令が書込み命令に依存し、前記書込み命令が前記レジスタフィールドに設定値を書き込むためのものであり、前記書込み命令を実行する前に前記命令が処理される、ステップと、
    前記命令を待ち行列の中のエントリに記憶するステップと、
    前記レジスタフィールドの前記現在値を前記エントリに記憶するステップと、
    前記書込み命令を実行した後で、前記エントリを求めて前記待ち行列を検索するステップと、
    前記書込み命令を実行した後で、前記エントリに記憶された前記現在値を前記設定値と比較するステップと
    を含む、非一時的なコンピュータ可読記録媒体。
  29. 前記方法が、
    前記エントリに記憶された前記現在値が前記設定値と一致しない場合に、すべてのインフライト命令のパイプラインをフラッシュするステップと、プログラムカウンタを、プログラムの順番で前記書込み命令後の次の命令のアドレスに設定するステップと
    をさらに含む、請求項28に記載の非一時的なコンピュータ可読記録媒体。
  30. 前記処理が、
    前記エントリに記憶された前記現在値が前記設定値と一致しない場合に、前記命令およびプログラムの順番で前記命令に続くすべてのインフライト命令のパイプラインをフラッシュするステップと、プログラムカウンタを前記命令のアドレスに設定するステップと
    をさらに含む、請求項28に記載の非一時的なコンピュータ可読記録媒体。
  31. 前記方法が、
    プロセッサの状態情報を前記エントリに記憶するステップであって、前記状態情報が前記命令が処理される時点のものである、ステップと、
    前記エントリに記憶される前記現在値が前記設定値と一致しない場合、前記エントリから前記状態情報を取り出すステップと、前記状態情報により示される状態に前記プロセッサを回復するステップと
    をさらに含む、請求項30に記載の非一時的なコンピュータ可読記録媒体。
  32. 前記命令を処理するステップが、
    前記現在値が第1の値である場合、前記命令を定義済みとして処理するステップと、
    前記現在値が前記第1の値でない場合、前記命令を未定義として処理するステップと
    をさらに含む、請求項28に記載の非一時的なコンピュータ可読記録媒体。
  33. 前記方法が、
    前記命令がコミットするとき、前記エントリを前記待ち行列から除去するステップ
    をさらに含む、請求項28に記載の非一時的なコンピュータ可読記録媒体。
  34. 前記レジスタフィールドが1つまたは複数のフィールドを含む、請求項28に記載の非一時的なコンピュータ可読記録媒体。
  35. 前記命令がベクトル命令である、請求項28に記載の非一時的なコンピュータ可読記録媒体。
JP2016503240A 2013-03-15 2014-03-14 コンテキスト依存性命令のための性能最適化 Pending JP2016512908A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/841,576 2013-03-15
US13/841,576 US9823929B2 (en) 2013-03-15 2013-03-15 Optimizing performance for context-dependent instructions
PCT/US2014/029876 WO2014145160A1 (en) 2013-03-15 2014-03-14 Optimizing performance for context-dependent instructions

Publications (2)

Publication Number Publication Date
JP2016512908A true JP2016512908A (ja) 2016-05-09
JP2016512908A5 JP2016512908A5 (ja) 2017-03-30

Family

ID=50629006

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016503240A Pending JP2016512908A (ja) 2013-03-15 2014-03-14 コンテキスト依存性命令のための性能最適化

Country Status (6)

Country Link
US (1) US9823929B2 (ja)
EP (1) EP2972790A1 (ja)
JP (1) JP2016512908A (ja)
KR (1) KR20150132242A (ja)
CN (1) CN105190540B (ja)
WO (1) WO2014145160A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9298456B2 (en) * 2012-08-21 2016-03-29 Apple Inc. Mechanism for performing speculative predicated instructions
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
US10684859B2 (en) * 2016-09-19 2020-06-16 Qualcomm Incorporated Providing memory dependence prediction in block-atomic dataflow architectures
US10592246B2 (en) 2017-07-12 2020-03-17 International Business Machines Corporation Low latency execution of floating-point record form instructions
US10360036B2 (en) 2017-07-12 2019-07-23 International Business Machines Corporation Cracked execution of move-to-FPSCR instructions
US11068612B2 (en) 2018-08-01 2021-07-20 International Business Machines Corporation Microarchitectural techniques to mitigate cache-based data security vulnerabilities
US20220206855A1 (en) * 2020-12-29 2022-06-30 Advanced Micro Devices, Inc. Offloading computations from a processor to remote execution logic

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050033946A1 (en) * 2003-08-06 2005-02-10 Abadallah Mohammad A. Virtual prediction for control registers in a speculatively executing machine
US20100205406A1 (en) * 2009-02-11 2010-08-12 Via Technologies, Inc.. Out-of-order execution microprocessor that speculatively executes dependent memory access instructions by predicting no value change by older instructions that load a segment register

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0649086B1 (en) 1993-10-18 2000-07-19 National Semiconductor Corporation Microprocessor with speculative execution
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US5854921A (en) 1995-08-31 1998-12-29 Advanced Micro Devices, Inc. Stride-based data address prediction structure
US6405305B1 (en) 1999-09-10 2002-06-11 Advanced Micro Devices, Inc. Rapid execution of floating point load control word instructions
US6983358B2 (en) * 2001-10-23 2006-01-03 Ip-First, Llc Method and apparatus for maintaining status coherency between queue-separated functional units
US7093111B2 (en) 2003-07-31 2006-08-15 International Business Machines Corporation Recovery of global history vector in the event of a non-branch flush
US7500087B2 (en) 2004-03-09 2009-03-03 Intel Corporation Synchronization of parallel processes using speculative execution of synchronization instructions
JP5326374B2 (ja) * 2008-06-19 2013-10-30 富士通セミコンダクター株式会社 プロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法
JP5526626B2 (ja) * 2009-06-30 2014-06-18 富士通株式会社 演算処理装置およびアドレス変換方法
US20110047358A1 (en) 2009-08-19 2011-02-24 International Business Machines Corporation In-Data Path Tracking of Floating Point Exceptions and Store-Based Exception Indication
US8819397B2 (en) 2011-03-01 2014-08-26 Advanced Micro Devices, Inc. Processor with increased efficiency via control word prediction

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050033946A1 (en) * 2003-08-06 2005-02-10 Abadallah Mohammad A. Virtual prediction for control registers in a speculatively executing machine
US20100205406A1 (en) * 2009-02-11 2010-08-12 Via Technologies, Inc.. Out-of-order execution microprocessor that speculatively executes dependent memory access instructions by predicting no value change by older instructions that load a segment register

Also Published As

Publication number Publication date
WO2014145160A1 (en) 2014-09-18
CN105190540B (zh) 2018-04-03
CN105190540A (zh) 2015-12-23
KR20150132242A (ko) 2015-11-25
US9823929B2 (en) 2017-11-21
US20140281405A1 (en) 2014-09-18
EP2972790A1 (en) 2016-01-20

Similar Documents

Publication Publication Date Title
US9823929B2 (en) Optimizing performance for context-dependent instructions
US9436470B2 (en) Restoring a register renaming map
US9672044B2 (en) Space efficient checkpoint facility and technique for processor with integrally indexed register mapping and free-list arrays
US9678758B2 (en) Coprocessor for out-of-order loads
US20160350116A1 (en) Mitigating wrong-path effects in branch prediction
US20140006752A1 (en) Qualifying Software Branch-Target Hints with Hardware-Based Predictions
US20170123798A1 (en) Hardware-based run-time mitigation of blocks having multiple conditional branches
US11861365B2 (en) Macro-op fusion
CN108920190B (zh) 用于确定从其恢复指令执行的恢复点的装置和方法
US11803388B2 (en) Apparatus and method for predicting source operand values and optimized processing of instructions
JP6352386B2 (ja) 定数キャッシュを使用してより効率的にリテラル生成データを従属命令に転送するための方法および装置
US9268575B2 (en) Flush operations in a processor
CN107209662B (zh) 指令的相依性预测
WO2016093975A1 (en) Providing early instruction execution in an out-of-order (ooo) processor, and related apparatuses, methods, and computer-readable media
US9588769B2 (en) Processor that leapfrogs MOV instructions
US20190004805A1 (en) Multi-tagged branch prediction table
US11086626B2 (en) Circuitry and methods
US10963253B2 (en) Varying micro-operation composition based on estimated value of predicate value for predicated vector instruction
CN113703842B (zh) 一种基于分支预测的值预测方法、装置及介质
US10310862B2 (en) Data processing
KR20140070308A (ko) 병렬 처리를 위한 재구성형 프로세서 및 재구성형 프로세서의 동작 방법
WO2017072615A1 (en) Hardware-based run-time mitigation of conditional branches

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170224

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180329

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180409

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20181105