JP2023540036A - 分岐予測リダイレクトのための代替パス - Google Patents

分岐予測リダイレクトのための代替パス Download PDF

Info

Publication number
JP2023540036A
JP2023540036A JP2023513341A JP2023513341A JP2023540036A JP 2023540036 A JP2023540036 A JP 2023540036A JP 2023513341 A JP2023513341 A JP 2023513341A JP 2023513341 A JP2023513341 A JP 2023513341A JP 2023540036 A JP2023540036 A JP 2023540036A
Authority
JP
Japan
Prior art keywords
branch
path
pipeline
instruction
along
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
JP2023513341A
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2023540036A publication Critical patent/JP2023540036A/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, 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, 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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, 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • 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, 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Abstract

Figure 2023540036000001
分岐予測回路[215]は、分岐命令の結果を予測する。パイプライン回路[225、230、235、231、232、233]は、分岐命令の予測された分岐からの第1のパスに沿った命令を処理する。第1のパスに沿った命令は、分岐命令の予測されていない分岐からの第2のパスに沿った命令を処理することと同時に処理される。第2のパスを処理している間の第2の部分の状態を表す情報は、1つ以上のバッファに記憶される。命令は、分岐命令の結果の誤予測に応じて、バッファに記憶された情報を使用して、第2のパスに沿って処理される。場合によっては、分岐予測回路は、予測された結果に対する信頼度レベルを判定し、予測されていない分岐からの第2のパスに沿った命令は、信頼度レベルが閾値信頼度を下回ることに応じて処理される。
【選択図】図7

Description

処理ユニットは、命令を実行するために1つ以上のパイプラインを実装する。パイプラインは、通常、分岐命令の最も可能性の高い結果を予測する分岐予測器を含み(又は関連付けられており)、それにより、パイプラインは、処理ユニットが分岐命令を評価する前に、予測された分岐からのパスに沿って、後続の命令を投機的に実行し始めることができる。本明細書で使用される場合、「パイプライン」という用語は、命令を処理するハードウェアコンポーネントの論理的又は物理的なグルーピングを指し、「パス」という用語は、実行されている命令のシーケンス又はグルーピングを指す。処理ユニットは、分岐予測構造内の情報を使用して、分岐命令の結果を予測する。例えば、処理ユニットは、if-then-else及びcaseステートメント等のソフトウェア構成を実装する条件分岐命令の結果を予測することができる。分岐予測構造の例には、プログラムのフローを以前にアクセスされた命令にリダイレクトする間接分岐予測器、処理ユニット上で実行されるサブルーチンのリターンアドレスを含むリターンアドレススタック、条件分岐の方向(分岐又は非分岐)を予測する条件分岐予測器、並びに、分岐命令の場所、タイプ及びターゲットアドレスを予測する情報を含む分岐ターゲットバッファが含まれる。分岐予測構造のいくつかの実装形態は、予測アルゴリズムの一部として処理ユニット上で以前に実行されていた又は現在実行されているプロセスによって実行された分岐命令の結果の分岐履歴を使用する。例えば、分岐命令が以前にプログラムフローを現在の実行履歴で90%の時間の第1のアドレス及び10%の時間の第2のアドレスに向けていた場合、分岐予測構造内の対応するエントリは、分岐命令がプログラムフローを第1のアドレスに向け、それによってプロセスが、分岐命令の評価を待つことなく、第1のアドレスの命令から始まるパスに沿って命令を投機的に実行することを可能にすることを予測する。
本開示は、添付の図面を参照することによってより良好に理解され、その多くの特徴及び利点が当業者に明らかになる。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
いくつかの実施形態による、処理システムのブロック図である。 いくつかの実施形態による、プロセッサコアを含む処理システムの一部のブロック図である。 いくつかの実施形態による、分岐予測リダイレクトのための分岐命令の予測された分岐からのメインパス及び予測されていない分岐からの代替パスに沿った同時実行をサポートするパイプラインの第1の部分のブロック図である。 いくつかの実施形態による、分岐予測リダイレクトのためのメインパス及び代替パスに沿った実行をサポートするパイプラインの第2の部分のブロック図である。 いくつかの実施形態による、分岐命令の予測された分岐からのメインパスに沿って命令を処理するための第1のパイプライン及び分岐命令の予測されていない分岐からの代替パスに沿って命令を処理するための第2のパイプラインを含む処理ユニットの第1の部分のブロック図である。 いくつかの実施形態による、図5のパイプラインの第2の部分のブロック図である。 いくつかの実施形態による、予測された分岐からのメインパスに沿った命令の同時実行及び予測されていない分岐からの代替パスに沿った命令の実行を使用して、リダイレクトを行う方法のフロー図である。
従来の投機的実行では、分岐命令は、予測されたパスに沿った投機的実行が開始した後に評価される。分岐命令の評価は、分岐命令の実際のターゲットアドレスを示し、これは、予測されたターゲットアドレスと比較されて、予測された結果が正しかったかどうかを判定する。予測された分岐からのパスに沿った命令の投機的実行の結果は、実際のターゲットアドレスが予測されたターゲットアドレスと同じである場合にコミットする。しかしながら、予測された分岐が誤っていることが判明した場合、誤って予測された分岐からのパスに沿った投機的実行が中断され、処理ユニットの状態は、正しいパスに沿って実行を開始するために、分岐命令における状態にロールバックされる。より具体的には、分岐予測ユニット及びフェッチユニットの両方がロールバックされて、分岐の正しいターゲットからの命令又は分岐が行われなかった場合には、分岐後のアドレスを処理する。処理パイプラインにおける主要な性能測定基準は、リダイレクト待ち時間であり、これは、例えば、誤って予測された分岐に続く正しいアドレスから処理するために処理ユニットの状態をロールバックすることによって、誤って予測されたパスから正しいパスにリダイレクトするのに必要なサイクル数として定義される。分岐予測に続いて分岐命令のリタイアメントまで命令を処理する処理パイプラインは、命令/演算キャッシュ、デコード、実行及びリタイアステージ等のいくつかのステージを含む。予測された分岐が正しいことの確認は、処理パイプラインの比較的深いところで行われ、その結果、誤った分岐予測に対するリダイレクト待ち時間が比較的長くなる。
図1~図7は、分岐命令の予測された分岐からの命令のメインパス(又は簡潔にするために「メインパス」)を処理するのと同時に、分岐命令の予測されていない分岐からの命令の代替パス(又は簡潔にするために「代替パス」)を処理することによって、処理ユニットにおける分岐予測に関連付けられたリダイレクト待ち時間を低減するための技術を開示する。パイプラインの第1の部分はメインパスとして処理し、パイプラインの第2の部分は代替パスを処理する。いくつかの実施形態では、パイプラインの第1及び第2の部分は、ハードウェアの異なるセットを使用して実装される。例えば、第1及び第2の部分は、パイプライン回路の一部を使用する個別のパイプラインとして実装することができる。いくつかの実施形態では、第1及び第2の部分は、共有ハードウェア、例えば、時分割多重化方式で異なる命令セットを実行するために第1及び第2の部分によって使用される単一パイプラインを用いて実装される。例えば、ハードウェア回路及びバッファの共有セットを介して、メインパス及び代替パスを処理するために、異なるスレッドを割り当てることができる。誤予測の場合、代替パスに割り振られたスレッドは、以下で説明するように、新しいメインパスになるようにリネーム(renamed)される。
代替パスを処理する結果は、1つ以上のリダイレクトバッファに記憶され、バッファされた結果を使用して、分岐命令に対する誤った予測に応じて、代替パスの実行を継続するようにパイプラインの第1の部分を再構成する。いくつかの実施形態では、パイプラインの第2の部分は、分岐予測器、変換索引バッファ、命令キャッシュ、演算キャッシュ、デコーダ、ディスパッチャ及び実行ステージ又はセクションのうち1つ以上に続くリダイレクトバッファを含む。次いで、1つ以上のマルチプレクサを使用して、誤った分岐予測に応じて、代替結果をバッファからパイプラインの第1の部分に伝達する。例えば、同時マルチスレッディングを実装するプロセッサ(又はプロセッサコア)は、第1の論理又は物理パイプライン(又は第1のハードウェアスレッド)を使用して、メインパスに沿ってソフトウェアスレッドを実行し、第2の論理又は物理パイプライン(又は第2のハードウェアスレッド)を使用して、代替パスを実行する。代替パス(場合によっては、メインパス)の状態情報は、リダイレクトバッファに記憶される。誤予測の検出に応じて、代替パスを実行していた第2のハードウェアスレッドの状態情報が第1のハードウェアスレッドに切り替えられ、プロセッサは、第1のハードウェアスレッドを使用して、代替パスを実行し続ける。いくつかの実施形態では、誤ったパスを保持する第2のハードウェアスレッドの状態情報が破棄され、別のフォークポイントに使用するために解放される。例えば、第2のハードウェアスレッドは、誤ったパスの代わりに使用される正しいパスの確認に応じて、破棄され得る。より多くのバッファをパイプラインのより深いところに含めることは、誤予測に続く命令が従来の実装における他の命令よりも早くリタイアされ得るので、リダイレクト待ち時間を低減するが、これは、代替パスに沿って命令を処理しているパイプラインに割り振られるリソースを増加させる。
パイプラインのいくつかの実施形態は、分岐予測が正しいという信頼度が低い場合、予測されていない分岐からの代替パスをメインパスと同時に選択的に処理する。例えば、代替パスは、分岐予測器によって返された信頼度レベルが閾値信頼度を下回ることに応じて、処理される。分岐予測器は、代替パスを実行するために使用する利用可能なハードウェアスレッドがある場合に、フォークポイントを生成し、状態を代替ハードウェアスレッドに同期させる。次いで、分岐予測器は、代替パス内の命令が別のソフトウェアスレッドの一部であるかのように、代替パスを処理する。分岐予測器によって返された信頼度レベルが閾値信頼度を上回る場合、代替パスが実行されない。タグ付けされた幾何学的(tagged geometric、TAGE)長予測器を使用して分岐予測を実装する実施形態では、分岐予測の信頼度レベルは、TAGE代替カウント、プロバイダカウント及びバイモーダルカウントの重み付けされた値又は正規化された値を加算し、結果を閾値と比較することによって判定される。ハッシュパーセプトロンアルゴリズムを使用して分岐予測を実装する実施形態では、信頼度レベルは、全てのテーブル読取りのカウントを加算し、結果を閾値と比較することによって判定される。分岐予測器のいくつかの実施形態は、分岐信頼度を判定するために使用されるフィードバックを受信する。フィードバックの例は、ヒューリスティック、分岐タイプ、ループ出口(loop exit)及び代替間接アドレスを含むが、これらに限定されない。いくつかの実施形態では、代替パスを実行するパイプラインを実装するために使用されるリソースは、分岐命令に対する分岐予測の信頼度レベルが閾値信頼度を上回る場合、他の命令を処理するために割り振られる。代替パスを実行するために使用されるパイプラインは、追加の変換索引バッファ、命令キャッシュ、演算キャッシュ、デコーダ、ディスパッチャ等の異なる回路を使用して、又は、メインパス及び代替パスによって共有される共通回路の時分割多重化割振りによって、又は、それらの組み合わせによって実装される。
図1は、いくつかの実施形態による、処理システム100のブロック図である。処理システム100は、ダイナミックランダムアクセスメモリ(dynamic random-access memory、DRAM)等の非一時的なコンピュータ可読記憶媒体を使用して実装されるメモリ105又は他の記憶コンポーネントを含むか、又は、それらへのアクセスを有する。しかしながら、場合によっては、メモリ105は、スタティックランダムアクセスメモリ(static random-access memory、SRAM)、不揮発性RAM等を含む他のタイプのメモリを使用して実装することもできる。メモリ105は、処理システム100において実装される処理ユニットの外部に実装されるために外部メモリと呼ばれる。また、処理システム100は、メモリ105等のように、処理システム100において実装されるエンティティ間の通信をサポートするためのバス110を含む。処理システム100のいくつかの実施形態は、他のバス、ブリッジ、スイッチ、ルータ等を含むが、これらは明確にするために図1に示されていない。
処理システム100は、ディスプレイ120上で提示するための画像をレンダリングするグラフィックス処理ユニット(graphics processing unit、GPU)115を含む。例えば、GPU115は、オブジェクトをレンダリングして、ディスプレイ120に提供されるピクセルの値を生成し、ディスプレイ120は、ピクセル値を使用して、レンダリングされたオブジェクトを表す画像を表示する。GPU115は、命令を同時に又は並列に実行する複数のプロセッサコア121、122、123(本明細書ではまとめて「プロセッサコア121~123」と呼ばれる)を実装する。GPU115において実装されるプロセッサコア121~123の数は、設計上の選択の問題であり、GPU115のいくつかの実施形態は、図1に示されるよりも多い又は少ないプロセッサコアを含む。GPU115のいくつかの実施形態は、汎用コンピューティングのために使用される。GPU115は、メモリ105に記憶されたプログラムコード125等の命令を実行し、GPU115は、実行された命令の結果等の情報をメモリ105に記憶する。
また、処理システム100は、バス110に接続され、したがってバス110を介してGPU115及びメモリ105と通信する中央処理装置(CPU)130を含む。CPU130は、命令を同時に又は並列に実行する複数のプロセッサコア131、132、133(本明細書ではまとめて「プロセッサコア131~133」と呼ばれる)を実装する。CPU130において実装されるプロセッサコア131~133の数は、設計上の選択の問題であり、いくつかの実施形態は、図1に示されるよりも多い又は少ないプロセッサコアを含む。プロセッサコア131~133は、メモリ105に記憶されたプログラムコード135等の命令を実行し、CPU130は、実行された命令の結果等の情報をメモリ105に記憶する。また、CPU130は、GPU115にドローコールを発行することによって、グラフィック処理を開始することができる。CPU130のいくつかの実施形態は、同時に又は並列に命令を独立して実行する複数のプロセッサコア(明確化のために図1に示されていない)を含む。
入力/出力(input/output、I/O)エンジン145は、ディスプレイ120と関連付けられた入力又は出力演算、並びに、キーボード、マウス、プリンタ、外部ディスク等の処理システム100の他の要素を扱う。I/Oエンジン145は、I/Oエンジン145がメモリ105、GPU115又はCPU130と通信するようにバス110に結合される。図示した実施形態では、I/Oエンジン145は、コンパクトディスク(compact disc、CD)、デジタルビデオディスク(digital versatile disc、DVD)等の非一時的なコンピュータ可読記憶媒体を使用して実装される、外部記憶コンポーネント150に記憶された情報を読み取る。また、I/Oエンジン145は、GPU115又はCPU130による処理の結果等の情報を外部記憶コンポーネント150に書き込むことができる。
処理システム100は、パイプラインの複数のステージにおいて命令を実行するためのパイプライン回路を実装する。パイプライン回路は、プロセッサコア121~123又はプロセッサコア131~133のいくつかの実施形態において実装される。パイプラインにおいて実行される命令は、分岐命令の条件の結果に応じて、プログラムフローを異なるターゲットアドレスに向ける分岐命令を含む。本明細書で説明されるように、パイプライン回路は、分岐命令の結果を予測する分岐予測回路を含む(又はそれに関連付けられる)。パイプラインは、予測された結果に基づいて投機的実行を行い、例えば、パイプライン回路は、命令のいわゆるメインパス又は簡潔にするために「メインパス」に沿って、分岐命令の予測された分岐を行う。本明細書で説明するように、分岐予測器は、分岐命令の結果を誤って予測することがあり、これは、予測されていない分岐(例えば、分岐命令の予測されていないターゲットアドレス)へのリダイレクトを必要とする。したがって、処理システム100は、第1のパイプラインに沿って予測された分岐からメインパスを実行するのと同時に、第2のパイプラインを使用して、分岐命令の予測されていない分岐から代替パス(又は簡潔にするために「代替パス」)に沿って命令を実行することによって、リダイレクト待ち時間を低減しようと試みる。第1及び第2のパイプラインは、互いに完全に若しくは部分的に物理的に個別であってもよく、又は、いくつかの実施形態では、第1及び第2のパイプラインは、互いに完全に若しくは部分的に論理的に個別であってもよい。第2のパイプライン内の代替パスの状態を表す情報は、1つ以上のバッファに記憶される。代替パスの実行は、分岐命令の結果の誤予測に応じて、1つ以上のバッファに記憶された情報を使用して、第2のパイプラインから第1のパイプラインに切り替えられる。分岐予測回路のいくつかの実施形態は、予測された結果に対する信頼度レベルを判定し、予測されていない分岐からの代替パスは、信頼度レベルが閾値信頼度を下回ることに応じて、第2のパイプラインを使用して処理される。
図2は、いくつかの実施形態による、プロセッサコア205を含むプロセッサシステムの一部(部分)200のブロック図である。プロセッサコア205は、図1に示されるプロセッサコア121~123、131~133のいくつかの実施形態を実装するために使用される。また、処理システムの部分200は、図1に示されるメモリ105のいくつかの実施形態を実装するために使用されるメモリ210を含む。図2に示されるエンティティのいくつかの実施形態は、特定用途向け集積回路(application-specific integrated circuits、ASIC)、フィールドプログラマブルゲートアレイ(field programmable gate arrays、FPGA)、他の回路、又は、それらの組み合わせを含む回路として実装される。プロセッサコア200は、条件分岐予測器記憶装置及び条件分岐予測論理を含む分岐予測ユニット215を含む。条件分岐予測記憶装置は、メモリ210内の場所のアドレスを記憶し、条件分岐予測論理は、分岐命令の結果を予測する。メモリ210に記憶された情報の一部のコピーもキャッシュ220に記憶される。例えば、頻繁にアクセスされる命令は、キャッシュ220のキャッシュライン又はキャッシュブロックに記憶される。
また、分岐予測ユニット215のいくつかの実施形態は、分岐命令の予測された結果に対する信頼度レベルを推定する回路を含む。例えば、分岐予測がタグ付けされた幾何学的(TAGE)長予測器を使用して行われる場合、分岐予測の信頼度レベルは、TAGE代替カウント、プロバイダカウント及びバイモーダルカウントの重み付けされた値又は正規化された値を加算し、結果を閾値と比較することによって判定される。別の例では、分岐予測がハッシュパーセプトロンアルゴリズムを使用して行われる場合、信頼度レベルは、全てのテーブル読取りのカウントを加算し、結果を閾値と比較することによって判定される。
フェッチユニット225は、分岐予測ユニット215から受信したアドレスに基づいて、メモリ210又はキャッシュ220から命令等の情報をフェッチする。フェッチユニット225は、キャッシュ220又はメモリ210から命令を表すバイトを読み出し、命令をデコードユニット230に送信する。デコードユニット230は、命令バイトを検査し、命令の機能を判定する。デコードユニット230は、命令を変換(すなわち、デコード)して、プロセッサコア205によって行われる一連の演算を生成する。デコードされた演算は、スケジューラ235に書き込まれる。スケジューラ235は、演算のためのソース値の準備ができるときを判定し、演算を行うために、本明細書ではまとめて「実行ユニット231~233」と呼ばれる1つ以上の実行ユニット231、232、233にソース値を送信する。結果は、レジスタファイル240に書き戻される。
分岐予測ユニット215のいくつかの実施形態は、現在のプロセス又はプロセッサコア205上で以前に実行されたプロセスによって以前に実行された分岐命令に関連付けられたエントリを含む。分岐予測ユニット215の各エントリに記憶された分岐予測情報は、分岐命令がプログラムフローを命令のアドレスに向ける可能性を示す。分岐予測ユニット215内のエントリは、対応する分岐命令のアドレスに基づいてアクセスされる。例えば、分岐命令の物理アドレス、仮想アドレス又はキャッシュラインアドレスを表すビットの値(又はそのサブセット)が、分岐予測ユニット215へのインデックスとして使用される。別の例では、ビットのハッシュ値(又はそのサブセット)が、分岐予測ユニット215へのインデックスとして使用される。分岐予測構造の例は、間接分岐予測器、リターンアドレススタック、分岐ターゲットバッファ、条件分岐予測器、分岐履歴、又は、分岐予測情報を記憶するために使用される任意の他の予測器構造を含む。
スケジューラ235は、プロセッサコア205による命令の実行をスケジューリングする。スケジューラ235のいくつかの実施形態は、分岐命令によって示されるメモリ210(又は関連するキャッシュ220)内のアドレスにある命令にプログラムフローをリダイレクトする分岐命令に続く命令の投機的実行を行う。分岐命令は、条件が真であるか又は偽であるかに応じて、プログラムフローをアドレスにリダイレクトする条件分岐命令を含む。例えば、条件分岐命令は、if-then-else及びcaseステートメント等のソフトウェア構成を実装するために使用される。また、分岐命令は、命令によって示されるアドレスにプログラムフローを常にリダイレクトする無条件分岐命令を含む。例えば、ジャンプ(jump、JMP)命令は、常に、命令によって示されるアドレスにジャンプする。場合によっては、分岐が実行される度にターゲットが異なり得るように、ターゲットアドレスがレジスタ又はメモリ場所に提供される。このような分岐は間接分岐と呼ばれる。分岐予測器215によって予測されたメモリ210内のアドレスから開始して実行される命令を含むプログラムフローの部分は、投機的実行の「メイン」パスと呼ばれる。スケジューラ235は、プロセッサコア200内に実装された処理パイプラインによって、メインパスに沿って実行される命令をスケジューリングする。
また、スケジューラ235はまた、メモリ210内の別の場所における代替ターゲットアドレス又は分岐命令に続くアドレス等の予測されていないアドレスから開始する命令をスケジューリングする。メモリ210内の予測されていないアドレスから開始して実行される命令を含むプログラムフローの部分は、投機的実行の「代替」パスと呼ばれる。いくつかの実施形態において、スケジューラ235は、予測についての信頼度レベルに基づいて、異なるパイプライン上での同時実行のために代替パスを選択的にスケジューリングする。例えば、スケジューラ235は、信頼度レベルが閾値信頼度レベルを下回ることに応じて、処理のために代替パスをスケジューリングする。スケジューラ235は、例えば、実行ユニット231~233によって実装される個別のパイプライン(又はその部分)を使用して、同時実行のためにメインパス及び代替パスをスケジューリングする。スケジューラ235のいくつかの実施形態は、実行ユニット231~233のうちの1つ又はそれらの組み合わせ等の共有回路の時分割多重化リソースを使用して、異なる回路(例えば、異なる実行ユニット231~233において実装されるパイプライン)上での同時実行のために、メインパス及び代替パスをスケジューリングする。
第1のパイプラインは、誤予測が検出されない限り、メインパスを処理し続ける。処理中に誤予測が検出されない場合、メインパス上の命令がリタイアされる。しかし、代替パスの状態は、第2のパイプラインに沿った代替パスの処理中に1つ以上のバッファに記憶される。誤予測が検出される場合、バッファに記憶された状態情報を使用して、代替パスが新しいメインパスになるように、代替パスを第2のパイプラインから第1のパイプラインに切り替える。本明細書で説明するように、バッファは、第2のパイプラインに沿った場所に実装される。したがって、誤予測に応じて、代替パスの実行を第2のパイプラインから第1のパイプラインに切り替えることは、予測されていない分岐からの代替パスに沿った処理が誤予測の後にのみ開始される場合に必要とされるリダイレクト待ち時間よりも短いリダイレクト待ち時間でリダイレクトを行うことを可能にする。したがって、処理システムの部分200は、リダイレクト待ち時間の低減という利益を伴って、メインパス及び代替パスの同時実行をサポートするために、追加のハードウェア及びリソースのコストをトレードオフする。低い信頼度レベルを有する分岐予測に対してメイン及び代替パスの同時実行を選択的に行うことは、低い信頼度レベルを有する分岐予測が誤予測される可能性がより高いので、コストと利益との間のトレードオフが好ましい可能性を増大させる。
図3は、いくつかの実施形態による、分岐予測リダイレクトのためのメインパス及び代替パスの同時実行をサポートするパイプラインの第1の部分300のブロック図である。パイプラインの第1の部分300は、図1に示される処理システム100及び図2に示される処理システムの部分200のいくつかの実施形態において実装される。第1の部分300は、パイプラインの第1の部分300において処理されている分岐命令の結果を予測する分岐予測器305を含む。また、分岐予測器305のいくつかの実施形態は、予測された結果に対する信頼度レベルを生成する。例えば、分岐予測器305が、タグ付けされた幾何学的(TAGE)長予測器を使用して分岐予測を実装する場合、分岐予測器305は、TAGE代替カウント、プロバイダカウント及びバイモーダルカウントの重み付けされた値又は正規化された値を加算し、その結果を閾値と比較することによって、分岐予測の信頼度レベルを判定する。別の例では、分岐予測器305がハッシュパーセプトロンアルゴリズムを使用して分岐予測を実装する場合、分岐予測器305は、全てのテーブル読取りのカウントを加算し、その結果を閾値と比較することによって、信頼度レベルを判定する。
パイプラインの部分300は、分岐命令の予測された分岐からのメインパス及び分岐命令の予測されていない分岐からの代替パスを同時に処理する。本明細書で説明するように、部分300のいくつかの実施形態は、結果の信頼度レベルと信頼度閾値との比較に基づいて、代替パスを選択的に処理する。代替パスは、信頼度レベルが低い(例えば、信頼度閾値を下回る)場合に処理され、予測された結果における信頼度レベルが高い(例えば、信頼度閾値を上回る)場合には処理されない。メインパス及び代替パスの状態情報は、リダイレクトバッファ310に提供される。
コントローラ315は、リダイレクトバッファ310からの命令にアクセスし、メインパス又は代替パスに沿って命令を選択的に向ける。メインパスに沿って向けられる命令は、バッファ320に伝達され、代替パスに沿って向けられる命令は、バッファ325に伝達される。
命令キャッシュ(instruction cache、IC)330は、バッファ325からの命令にアクセスし、命令は、命令によって必要とされるデータが利用可能になるまで、命令キャッシュ330内に保持される。命令キャッシュ330は、メインパス及び代替パスに沿った同時処理中に、メインパスに沿った命令及び代替パスに沿った命令を保持するために使用される。いくつかの実施形態では、命令キャッシュ330は、異なるハードウェアコンポーネントがメインパスのための命令及び代替パスのための命令を記憶するために割り振られるように、複数のキャッシュ又は区分キャッシュ(partitioned cache)として実装される。いくつかの実施形態では、命令キャッシュ330は、例えば、パイプラインのリソースの時分割多重化をサポートするために、メインパス及び代替パスによって共有される共通リソースである。命令キャッシュ330の後に代替パスを実行しているパイプラインの部分300の状態を示す状態情報が1つ以上のバッファ335に記憶される。
デコードの準備ができている命令は、命令キャッシュ330からデコーダ340に(バッファ335を介して)プッシュされ、デコーダ340は、命令のデコードを行う。デコーダ340は、デコーダ340の異なるハードウェアインスタンスを使用して、又は、デコーダ340の共通インスタンスの共有リソースを時分割多重化して、メインパス及び代替パスに沿って命令をデコードするために使用される。デコーダ340は、デコードされた命令をマルチプレクサ345に提供し、このマルチプレクサは、デコードされた命令を、ノード1に接続されている1つ以上のバッファ350に選択的に提供し、このノード1は、図4に示されるパイプラインの第2の部分400に示される同じノード1に接続される。
いくつかの実施形態では、バッファ350は、図4に示される第1の部分300において行われるフロントエンド作業と第2の部分400において行われるバックエンド作業との間の区分(partition)として機能する。バッファ350は、第1の部分300において行われる状態情報及び作業を記憶する。状態情報は、命令のデコードがバッファ350に記憶された後に代替パスを実行しているパイプラインの部分300の状態を示す。フォークポイントである分岐が評価されることに応じて、例えば、図4に示される分岐確認ブロック435において、バッファ350からフラッシュされるパス及びメインパスとして維持又は確立されるパスが選択される。
また、部分300はまた、以前にデコードされた命令をキャッシュする演算キャッシュ(operation cache、OC)355を含み、命令は、マルチプレクサ345に提供されるまで演算キャッシュ355に保持される。演算キャッシュ355は、メインパス及び代替パスに沿って以前にデコードされた命令をキャッシュするために使用される。いくつかの実施形態において、演算キャッシュ355は、異なるハードウェアコンポーネントがメインパス及び代替パスに沿って以前にデコードされた命令をキャッシュするために割り振られるように、複数のキャッシュ又は区分キャッシュとして実装される。いくつかの実施形態では、演算キャッシュ355は、例えば、パイプラインのリソースの時分割多重化をサポートするために、メインパス及び代替パスによって共有される共通リソースである。
図示した実施形態では、部分300は、分岐予測器305による分岐命令の結果の誤予測に応じて生成されるリダイレクトの要求を保持するリダイレクトキュー360を含む。また、部分300は、分岐命令の結果の誤予測に応じて、メインパスから代替パスへのリダイレクトの要求を保持する代替リダイレクトキュー365を含む。リダイレクト要求は、図4に示されるパイプラインの部分400において、ノード2及び対応するノード2を介して受信される。リダイレクトキュー360及び代替リダイレクトキュー365のいくつかの実施形態は、パイプラインにおいて行われた演算の履歴を表す情報及び誤予測を検出することに応じてパイプライン状態のロールバックのために使用されるパス予測情報を記憶する。
図4は、いくつかの実施形態による、分岐予測リダイレクトのためのメインパス及び代替パスに沿った同時実行をサポートするパイプラインの第2の部分400のブロック図である。パイプラインの第2の部分400は、図1に示される処理システム100及び図2に示される処理システムの部分200のいくつかの実施形態において実装される。図4に示される第2の部分400は、図3に示される第1の部分における対応するノード1及び2に接続するノード1及び2を介して、図3に示される第1の部分300と通信する。
デコードされた命令は、ノード1を介して第2の部分400で受信される。デコードされた命令は、次に、ディスパッチモジュール410に提供され、ディスパッチモジュール410は、1つ以上のバッファ415を介した実行モジュール420における実行のために、デコードされた命令をディスパッチする。命令のディスパッチ後に代替パスを実行しているパイプラインの部分400の状態を示す状態情報は、1つ以上のバッファ415に記憶され、実行後の状態を示す状態情報は、1つ以上のバッファ425に記憶される。実行モジュール420が命令の実行を完了することに応じて、命令は、1つ以上のバッファ425を介して、リタイアモジュール430に提供され、命令をリタイアし、結果をメモリにコミットする。
図示した実施形態では、ディスパッチモジュール410、実行モジュール420及びリタイアモジュール430は、メインパス及び代替パスに沿って同時に命令を実行するパイプラインを実装するために使用される。いくつかの実施形態において、モジュールは、メインパス及び代替パスに沿って命令を実行するために個別に割り振られている異なるハードウェアコンポーネントを使用して実装される。いくつかの実施形態では、モジュールの各々は、例えば、パイプラインのリソースの時分割多重化をサポートするために、メインパス及び代替パスによって共有される共通リソースである。
分岐確認回路435は、分岐予測器(例えば、図3に示される分岐予測器305)が分岐命令の結果を正しく予測したかどうかを判定する。そうである場合、メインパスに沿って予測された分岐を処理した結果がリタイアされる。そうでない場合、分岐確認回路435は、代替パスをメインパスに切り替えるためのリダイレクト要求を生成する。切り替えパスは、図3に示されるバッファ310、320、325、335、350又は図4に示されるバッファ415、425のうち1つ以上に記憶された状態情報を使用する。例えば、バッファ415に記憶された状態情報を使用して、実行モジュール420の前に代替パスを実行していたパイプラインの状態に対応するように、メインパスに以前に割り振られていた実行モジュール420の部分を再構成することができる。次に、再構成メインパスに沿った処理が再開され、その結果、誤って予測されたメインパスから予測されていない代替パスへのリダイレクトが、リダイレクトが図3に示す分岐予測器305で予測された代替パスに沿って処理を開始することを必要とする場合に必要とされるより短いリダイレクト待ち時間で行われる。
パイプラインの図示した実施形態は、図3に示されるバッファ310、320、325、335、350、又は図4に示されるバッファ415、425を含むが、パイプラインのいくつかの実施形態は、パイプライン内の同じ又は異なる場所に実装されるより多くの又はより少ないバッファを含む。バッファの数又は場所は、コストの増加とリダイレクト待ち時間の減少との間のトレードオフに基づいて判定される。例えば、バッファ310、320、325、335、350を実装し、パイプラインからバッファ415、425を省略することによって、比較的長いリダイレクト待ち時間に対してコストがより低くなる。
図5は、いくつかの実施形態による、分岐命令の予測された分岐からのメインパスに沿って命令を処理するための第1のパイプライン501及び分岐命令の予測されていない分岐からの代替パスに沿って命令を処理するための第2のパイプライン502を含む処理ユニットの第1の部分500のブロック図である。処理ユニットの第1の部分500は、図1に示される処理システム100及び図2に示される処理システムの部分200のいくつかの実施形態において実装される。第1の部分500は、パイプラインの第1の部分500において処理されている分岐命令の結果を予測する分岐予測器505を含む。また、分岐予測器505のいくつかの実施形態は、本明細書で説明されるように、予測された結果に対する信頼度レベルを生成する。第1のパイプライン501を使用する予測された分岐からのメインパスの処理を表す状態情報がバッファ510に記憶され、第2のパイプライン502を使用する予測されていない分岐からの代替パスの処理を表す状態情報がバッファ511に記憶される。
パイプラインの第1の部分500は、第1のパイプライン501を使用してメインパスを、第2のパイプライン502を使用して代替パスを同時に処理する。本明細書で説明するように、部分500のいくつかの実施形態は、結果の信頼度レベルと信頼度閾値との比較に基づいて、代替パスを選択的に処理する。第2のパイプライン502は、信頼度レベルが低い(例えば、信頼閾度値を下回る)場合に代替パスを処理し、予測された結果における信頼度レベルが高い(例えば、信頼度閾値を上回る)場合に代替パス502を処理しない。第2のパイプライン502を実装するために使用されるハードウェアは、第2のパイプライン502が、第1のパイプライン501上の予測された分岐からのメインパスを処理することと同時に、予測されていない分岐からの代替パスを処理するために使用されない場合、他の演算を行うために使用され得る。
図示した実施形態において、第1の部分500は、状態情報が第1のパイプライン501と第2のパイプライン502との間で交換されることを可能にするマルチプレクサ515、516を含む。例えば、バッファ510からの状態情報は、マルチプレクサ516を介して第2のパイプライン502に多重化することができ、バッファ511からの状態情報は、マルチプレクサ515を介して第1のパイプライン501に多重化することができる。したがって、マルチプレクサ515は、誤予測に応じてバッファ511に記憶された状態情報を使用して、例えば、代替パスを処理することに関連付けられた状態を第1のパイプライン501に切り替えるために、第1のパイプライン501のいくつかの実施形態を再構成するために使用される。いくつかの実施形態において、マルチプレクサ516は、予測されていない分岐を処理するために第2のパイプライン502が必要とされない場合に、第2のパイプライン502のリソースが他の命令を処理するために利用可能であるように、分岐予測器505からの情報を第2のパイプライン502に多重化するために使用される。
変換索引バッファ(I-TLB)520、521は、それぞれ第1のパイプライン501及び第2のパイプライン502に沿って処理される命令によって頻繁に使用されるアドレスを記憶するために使用される。変換索引バッファ520、521は、矢印525、526によって示されるように、変換索引バッファ520、521によって受信された仮想アドレスのアドレス変換の要求を送信し、仮想アドレスから物理アドレスへの要求された変換を含む応答を受信する。変換索引バッファ520の演算に続く第1のパイプライン501に沿った予測された分岐からのメインパスの処理を表す状態情報がバッファ510に記憶され、変換索引バッファ521の演算に続く第2のパイプライン502に沿った予測されていない分岐からの代替パスの処理を表す状態情報がバッファ511に記憶される。
第1のパイプライン501及び第2のパイプライン502は、バッファ530、531からのアドレス変換を含む状態情報にアクセスする対応する命令キャッシュ(IC)535、536を含む。命令は、命令によって必要とされるデータが利用可能になるまで、命令キャッシュ535、536内に保持される。命令キャッシュ535は、L1キャッシュ540からの情報を要求する。第2のパイプライン502内の命令キャッシュ536も、L1キャッシュ540からの情報を要求することができるが、このパスは、明確にするために矢印によって示されていない。また、第1のパイプライン501及び第2のパイプライン502は、以前にデコードされた命令をキャッシュする対応する演算キャッシュ(OC)545、546を含み、命令は、演算キャッシュ545、546内に保持される。
情報は、マルチプレクサ等の回路を使用して、第1のパイプライン501と第2のパイプライン502との間で交換される。図示した実施形態では、第1のパイプライン501は、バッファ531からの状態情報を第1のパイプライン501内の命令キャッシュ535又は演算キャッシュ545に多重化するマルチプレクサ550、551を含む。したがって、マルチプレクサ550、551は、誤予測に応じてバッファ531に記憶された状態情報を使用して、例えば、代替パスを処理することに関連付けられた状態を、予測されていない分岐から第1のパイプライン501に切り替えるために、第1のパイプライン501のいくつかの実施形態を再構成するために使用される。図示した実施形態では、第2のパイプライン502は、バッファ530からの状態情報を第2のパイプライン502内の命令キャッシュ536又は演算キャッシュ546に多重化するマルチプレクサ552、553を含む。
図示した実施形態において、演算キャッシュ546は、ノード3を介してパイプラインの後続のステージと通信する。命令キャッシュ536は、ノード4を介してパイプラインの後続のステージと通信する。演算キャッシュ545は、ノード5を介してパイプラインの後続のステージと通信する。命令キャッシュ535は、ノード6を介してパイプラインの後続のステージと通信する。
図6は、いくつかの実施形態による、分岐命令の予測された及び予測されていない分岐からのメイン及び代替パスを処理するための第1のパイプライン501及び第2のパイプライン502を含むパイプラインの第2の部分600のブロック図である。パイプラインの第2の部分600は、図1に示される処理システム100及び図2に示される処理システムの部分200のいくつかの実施形態において実装される。第2の部分600は、ノード3~6を介して図5に示される第1の部分500にリンクされる。図示した実施形態では、バッファ601は、ノード3を介して図5に示された演算キャッシュ546に続くパイプラインの状態を表す状態情報を受信及び記憶し、バッファ602は、ノード4を介して図5に示された命令キャッシュ536に続くパイプラインの状態を表す状態情報を受信及び記憶し、バッファ603は、ノード5を介して図5に示された演算キャッシュ545に続くパイプラインの状態を表す状態情報を受信及び記憶し、バッファ604は、ノード6を介して命令キャッシュ535に続くパイプラインの状態を表す状態情報を受信及び記憶する。
第2のパイプライン502は、演算キャッシュ610及びデコーダ615を含む。図示した実施形態では、以前にデコードされた演算は、ノード3を介して演算キャッシュ546から演算キャッシュ610に伝達される。未だデコードされていない命令は、ノード4を介して命令キャッシュ536からデコーダ615に伝達される。デコーダ615は、受信された命令をデコードし、デコードされた命令をマルチプレクサ620に提供し、マルチプレクサ620は、デコーダ615からのデコードされた命令又は演算キャッシュ610からのデコードされた命令をバッファ625に選択的に提供する。バッファ625は、マルチプレクサ620に続くパイプラインの状態を表す状態情報、例えば、演算キャッシュ610又はデコーダ615から受信されたデコードされた命令に関連付けられた状態情報を記憶する。デコードされた命令及び関連付けられた状態情報は、実行のためにデコードされた命令をディスパッチするために、バッファ625からディスパッチ回路630に提供される。第1のパイプライン501は、演算キャッシュ635及びデコーダ640を含む。
第1のパイプライン501及び第2のパイプライン500は、マルチプレクサ等の回路を介して情報を交換する。図示した実施形態では、第1のパイプライン501は、第1のパイプライン501内のバッファ603、604の何れかから又は第2のパイプライン502内のバッファ601、602のうちより多くから、演算キャッシュ635又はデコーダ640への情報を選択的に多重化するマルチプレクサ645、650を含む。いくつかの実施形態では、マルチプレクサ645、650は、本明細書で説明するように、誤予測に応じて、第2のパイプライン502内のバッファ601、602からの情報を演算キャッシュ635又はデコーダ640に多重化する。図示した実施形態では、第2のパイプライン502は、第1のパイプライン501内のバッファ603、604の何れかから又は第2のパイプライン502内のバッファ601、602のうちより多くから、演算キャッシュ610又はデコーダ615への情報を選択的に多重化するマルチプレクサ646、651を含む。
マルチプレクサ655は、デコーダ640からのデコードされた命令又は演算キャッシュ635からのデコードされた命令をバッファ660に選択的に提供し、バッファ660は、マルチプレクサ655に続くパイプラインの状態を表す状態情報、例えば、演算キャッシュ635又はデコーダ640から受信されたデコードされた命令に関連付けられた状態情報を記憶する。デコードされた命令及び関連付けられた状態情報は、バッファ660からマルチプレクサ665に提供され、このマルチプレクサは、第2のパイプライン502内のバッファ660又はバッファ625からの情報を、デコードされた命令を実行のためにディスパッチするためのディスパッチ回路670に選択的に提供する。いくつかの実施形態では、マルチプレクサ665は、本明細書で説明するように、誤予測に応じて、第2のパイプライン502内のバッファ625からディスパッチ回路670に情報を提供する。
図7は、いくつかの実施形態による、予測された分岐からのメインパスに沿った及び予測されていない分岐からの代替パスに沿った同時実行を使用して、リダイレクトを行う方法700のフロー図である。方法700は、図1に示される処理システム100、図3及び図4に示されるパイプライン、並びに、図5及び図6に示されるパイプラインのいくつかの実施形態で実施される。
ブロック705で、分岐予測器は、分岐命令の結果を予測する。また、分岐予測器は、予測の信頼度レベルを予測する。いくつかの実施形態では、分岐予測の信頼度レベルは、TAGE代替カウント、プロバイダカウント及びバイモーダルカウントの重み付けされた値又は正規化された値を加算し、分岐予測器がTAGE長予測器を使用して分岐予測を行う場合、その結果を閾値と比較することによって判定される。分岐予測器がハッシュパーセプトロンアルゴリズムを使用して分岐予測を行う場合、信頼度レベルは、全てのテーブル読取りのカウントを加算し、結果を閾値と比較することによって判定され得る。分岐予測器のいくつかの実施形態は、分岐信頼度を判定するために使用されるフィードバックを受信する。フィードバックの例は、ヒューリスティック、分岐タイプ、ループ出口及び代替間接アドレスを含むが、これらに限定されない。
判定ブロック710で、信頼度レベルは、閾値信頼度と比較される。信頼度レベルが閾値よりも大きく、予測において比較的高い信頼度を示す場合、方法700はブロック715に進む。信頼度レベルが閾値以下であり、予測における信頼度が比較的低いことを示す場合、方法700はブロック720に進む。
ブロック715で、パイプラインは、メインパスに沿って投機的実行を開始する。パイプラインは、予測における比較的高い信頼度のために、代替パスに沿った予測されていない分岐からの代替パスに沿った命令の同時実行を行わない。判定ブロック725で、パイプラインは、メインパスに沿った実行中に誤予測が検出されるかどうかを判定する。誤予測が検出されない場合、方法700はブロック730に進み、メインパスに沿った実行の結果がリタイアされる。誤予測が検出された場合、方法700はブロック735に進み、リダイレクト要求が発行される。リダイレクト要求に応じて、パイプラインがフラッシュされ、パイプラインの状態がロールバックされる。以前に予測されなかった分岐ターゲット又はパスからのパスに沿った命令の実行が開始する。
ブロック720で、パイプラインは、予測された分岐からのメインパスに沿った命令の投機的実行及び予測されていない分岐からの代替パスに沿った命令の同時実行を開始する。判定ブロック740で、パイプラインは、メインパスに沿った実行中に誤予測が検出されるかどうかを判定する。誤予測が検出されない場合、方法700はブロック730に進み、メインパスに沿った実行の結果がリタイアされる。代替パスの同時実行の結果は破棄される。メインパスの実行中に誤予測が検出された場合、方法700はブロック745に進む。ブロック745で、分岐後の現在のメインパスが破棄され、代替パスに関連付けられたバッファに記憶された状態情報が、代替パスをメインパスに切り替えるために使用される。代替分岐パスであったものの実行は、ここで新しいメインパスとして継続する。
本明細書で開示されるように、いくつかの実施形態では、装置は、分岐命令の結果を予測するように構成された分岐予測回路と、分岐命令の予測された分岐からの第1のパスに沿って命令を処理するように構成されたパイプライン回路であって、第1のパスに沿って命令を処理することが、分岐命令の予測されていない分岐からの第2のパスに沿って命令を処理することと時間多重化される、パイプライン回路と、パイプライン回路の少なくとも1つの状態を表す情報を記憶するように構成された少なくとも1つのバッファと、を備え、パイプライン回路は、分岐命令の結果の誤予測に応じて、少なくとも1つのバッファに記憶された情報を使用して、第2のパスに沿って命令を処理するように構成されている。一態様では、パイプライン回路は、第1のパスに沿って命令を処理するように構成されたパイプライン回路の第1の部分及び第2のパスに沿って命令を処理するように構成されたパイプライン回路の第2の部分を含む。別の態様では、少なくとも1つのバッファは、分岐予測回路、変換索引バッファ、命令キャッシュ、演算キャッシュ、デコーダ、ディスパッチャ及びパイプライン回路の実行セクションのうち少なくとも1つによる処理の後にパイプライン回路の第1の部分の状態を表す状態情報を記憶するように構成された少なくとも1つのバッファを含む。
一態様では、装置は、誤予測に応じて、少なくとも1つのバッファに記憶された情報を第2の部分から第1の部分に伝達するように構成された少なくとも1つのマルチプレクサを含む。別の態様では、パイプライン回路は、少なくとも1つのバッファに記憶された情報に基づいて、パイプライン回路の第1の部分を使用して、第1のパスに沿って予測された分岐に関連付けられたスレッドを実行し、第2の部分を使用して、第2のパスに沿って予測されていない分岐に関連付けられたスレッドを実行するように構成された少なくとも1つのプロセッサコアを含む。更に別の態様では、パイプライン回路は、誤予測に応じて、スレッドを第2の部分から第1の部分に切り替えるように構成されている。更に別の態様では、パイプライン回路は、誤予測の確認に応じて、第2の部分上で実行されているスレッドを破棄するように構成されている。
一態様では、分岐予測回路は、予測された結果に対する信頼度レベルを判定するように構成され、パイプライン回路の第2の部分は、信頼度レベルが閾値信頼度を下回ることに応じて、第2のパスに沿って予測されていない分岐を処理するように構成されている。別の態様では、分岐予測回路は、信頼度レベルが閾値信頼度を下回ることに応じて、第2のパスのためのフォークポイントを生成し、第1の部分及び第2の部分上のスレッドを同期させるように構成されている。
いくつかの実施形態では、方法は、分岐命令の結果を予測することと、パイプライン回路において、分岐命令の予測された分岐からの第1のパスに沿って命令を処理することであって、第1のパスに沿って命令を処理することが、分岐命令の予測されていない分岐からの第2のパスに沿って命令を処理することと時間多重化される、ことと、第2のパスを処理しているパイプライン回路の第2の部分の少なくとも1つの状態を表す情報を、少なくとも1つのバッファに記憶することと、分岐命令の結果の誤予測に応じて、少なくとも1つのバッファに記憶された情報を使用して、第2のパスの実行を継続するようにパイプライン回路の第1の部分を再構成することと、を含む。一態様では、パイプライン回路は、第1のパスに沿って命令を処理するように構成されたパイプライン回路の第1の部分及び第2のパスに沿って命令を処理するように構成されたパイプライン回路の第2の部分を含む。別の態様では、第2の部分の少なくとも1つの状態を表す情報を記憶することは、分岐予測器、変換索引バッファ、命令キャッシュ、演算キャッシュ、デコーダ、ディスパッチャ及びパイプライン回路の実行セクションのうち少なくとも1つによって第2のパスを処理した後に、第2の部分の状態を表す状態情報を記憶することを含む。
一態様では、パイプライン回路の第1の部分を再構成することは、誤予測に応じて、少なくとも1つのバッファに記憶された情報を第1の部分に伝達することを含む。別の態様では、予測された分岐から第1のパスに沿って命令を処理することは、予測された分岐に関連付けられたスレッドを実行することを含み、予測されていない分岐から第2のパスに沿って命令を処理することは、少なくとも1つのバッファに記憶された情報に基づいて、予測されていない分岐に関連付けられたスレッドを実行することを含む。更に別の態様では、第1の部分を再構成することは、誤予測に応じて、スレッドを第2の部分から第1の部分に切り替えることを含む。更に別の態様では、方法は、正しい予測の確認に応じて、第2の部分上で実行されているスレッドを破棄することを含む。
一態様では、方法は、予測された結果についての信頼度レベルを判定することと、信頼度レベルが閾値信頼度を下回ることに応じて、第2の部分を使用して、予測されていないものからの第2のパスに沿った命令を処理することと、を含む。別の態様では、方法は、第2のパスのためのフォークポイントを生成することと、信頼度レベルが閾値信頼度を下回ることに応じて、第1の部分及び第2の部分上のスレッドを同期させることと、を含む。
いくつかの実施形態では、方法は、分岐命令の結果及び予測の信頼度レベルを予測することと、パイプライン回路において、分岐命令の予測された分岐からの第1のパスに沿って命令を処理することと、信頼度レベルに基づいて、パイプライン回路を使用して、分岐命令の予測されていない分岐からの第2のパスに沿って命令を選択的に処理することであって、第2のパスに沿って命令を処理することが、第1のパスに沿って命令を処理することと時分割多重化される、ことと、分岐命令の結果の誤予測に応じて、少なくとも1つのバッファに記憶された情報を使用して、第2のパスを第1のパスに切り替えることと、を含む。一態様では、予測されていない分岐を選択的に処理することは、信頼度レベルが閾値信頼度を下回ることに応じて、予測されていない分岐から第2のパスに沿って命令を処理することを含む。別の態様では、予測されていない分岐からの第2のパスに沿って命令を選択的に処理することは、異なる回路及び共有回路の時分割多重化リソースのうち少なくとも1つを使用して、予測された分岐からの第1のパスに沿って命令を処理することと同時に、予測されていない分岐からの第2のパスに沿って命令を処理することを含む。
いくつかの実施形態では、上述の装置及び技術は、図1~図7を参照して上述したプロセッサ等の1つ以上の集積回路(integrated circuit、IC)デバイス(集積回路パッケージ又はマイクロチップとも呼ばれる)を含むシステムに実装される。電子設計自動化(electronic design automation、EDA)及びコンピュータ支援設計(computer aided design、CAD)ソフトウェアツールは、これらのICデバイスの設計及び製造に使用することができる。これらの設計ツールは、典型的には、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計するか又は適応させるためのプロセスの少なくとも一部を実行するために、1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作するための、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含み得る。設計ツール又は製造ツールを表すソフトウェア命令は、典型的には、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上の段階を表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶され、そこからアクセスされる。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装される。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、別の方法で明確に具体化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、命令及び特定のデータを含んでもよく、当該命令及び特定のデータは、1つ以上のプロセッサによって実行されると、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する。非一時的なコンピュータ可読記憶媒体は、例えば、磁気又は光ディスク記憶デバイス、フラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス(単数又は複数)等を含み得る。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは別の方法で実行可能な他の命令形式で実装可能である。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (21)

  1. 装置であって、
    分岐命令の結果を予測するように構成された分岐予測回路と、
    前記分岐命令の予測された分岐からの第1のパスに沿った命令を処理するように構成されたパイプライン回路であって、前記第1のパスに沿った命令を処理することは、前記分岐命令の予測されていない分岐からの第2のパスに沿った命令を処理することと時分割多重化される、パイプライン回路と、
    前記パイプライン回路の少なくとも1つの状態を表す情報を記憶するように構成された少なくとも1つのバッファと、を備え、
    前記パイプライン回路は、前記分岐命令の結果の誤予測に応じて、前記少なくとも1つのバッファに記憶された情報を使用して、前記第2のパスに沿った命令を処理するように構成されている、
    装置。
  2. 前記パイプライン回路は、前記第1のパスに沿った命令を処理するように構成された前記パイプライン回路の第1の部分と、前記第2のパスに沿った命令を処理するように構成された前記パイプライン回路の第2の部分と、を含む、
    請求項1の装置。
  3. 前記少なくとも1つのバッファは、前記分岐予測回路、変換索引バッファ、命令キャッシュ、演算キャッシュ、デコーダ、ディスパッチャ、及び、前記パイプライン回路の実行セクションのうち少なくとも1つによる処理の後に、前記パイプライン回路の前記第1の部分の状態を表す状態情報を記憶するように構成された少なくとも1つのバッファを含む、
    請求項2の装置。
  4. 前記誤予測に応じて、前記少なくとも1つのバッファに記憶された情報を前記第2の部分から前記第1の部分に伝達するように構成された少なくとも1つのマルチプレクサを更に備える、
    請求項2又は3の装置。
  5. 前記パイプライン回路は、前記少なくとも1つのバッファに記憶された情報に基づいて、前記パイプライン回路の前記第1の部分を使用して、前記第1のパスに沿った予測された分岐に関連付けられたスレッドを実行し、前記第2の部分を使用して、前記第2のパスに沿った予測されていない分岐に関連付けられたスレッドを実行するように構成された少なくとも1つのプロセッサコアを含む、
    請求項4の装置。
  6. 前記パイプライン回路は、前記誤予測に応じて、前記スレッドを前記第2の部分から前記第1の部分に切り替えるように構成されている、
    請求項5の装置。
  7. 前記パイプライン回路は、前記誤予測の確認に応じて、前記第2の部分で実行されている前記スレッドを破棄するように構成されている、
    請求項6の装置。
  8. 前記分岐予測回路は、予測された結果に対する信頼度レベルを判定するように構成されており、前記パイプライン回路の前記第2の部分は、前記信頼度レベルが閾値信頼度を下回ることに応じて、前記第2のパスに沿った予測されていない分岐を処理するように構成されている、
    請求項1~7の何れかの装置。
  9. 前記分岐予測回路は、前記第2のパスのフォークポイントを生成し、前記信頼度レベルが前記閾値信頼度を下回ることに応じて、前記第1の部分及び前記第2の部分のスレッドを同期させるように構成されている、
    請求項8の装置。
  10. 方法であって、
    分岐命令の結果を予測することと、
    パイプライン回路において、前記分岐命令の予測された分岐からの第1のパスに沿った命令を処理することであって、前記第1のパスに沿った命令を処理することは、前記分岐命令の予測されていない分岐からの第2のパスに沿った命令を処理することと時間多重化される、ことと、
    前記第2のパスを処理している前記パイプライン回路の前記第2の部分の少なくとも1つの状態を表す情報を、少なくとも1つのバッファに記憶することと、
    前記分岐命令の結果の誤予測に応じて、前記少なくとも1つのバッファに記憶された情報を使用して、前記第2のパスの実行を継続するように前記パイプライン回路の前記第1の部分を再構成することと、を含む、
    方法。
  11. 前記パイプライン回路は、前記第1のパスに沿った命令を処理するように構成された前記パイプライン回路の第1の部分と、前記第2のパスに沿った命令を処理するように構成された前記パイプライン回路の第2の部分と、を含む、
    請求項10の方法。
  12. 前記第2の部分の少なくとも1つの状態を表す情報を記憶することは、分岐予測器、変換索引バッファ、命令キャッシュ、演算キャッシュ、デコーダ、ディスパッチャ、及び、前記パイプライン回路の実行セクションのうち少なくとも1つによって前記第2のパスを処理した後に、前記第2の部分の状態を表す状態情報を記憶することを含む、
    請求項11の方法。
  13. 前記パイプライン回路の前記第1の部分を再構成することは、前記誤予測に応じて、前記少なくとも1つのバッファに記憶された情報を前記第1の部分に伝達することを含む、
    請求項11又は12の方法。
  14. 前記予測された分岐からの第1のパスに沿った命令を処理することは、前記予測された分岐に関連付けられたスレッドを実行することを含み、前記予測されていない分岐からの第2のパスに沿った命令を処理することは、前記少なくとも1つのバッファに記憶された情報に基づいて、前記予測されていない分岐に関連付けられたスレッドを実行することを含む、
    請求項13の方法。
  15. 前記第1の部分を再構成することは、前記誤予測に応じて、前記スレッドを前記第2の部分から前記第1の部分に切り替えることを含む、
    請求項14の方法。
  16. 正しい予測の確認に応じて、前記第2の部分で実行されている前記スレッドを破棄することを更に含む、
    請求項15の方法。
  17. 予測された結果に対する信頼度レベルを判定することと、
    前記信頼度レベルが閾値信頼度を下回ることに応じて、前記第2の部分を使用して、前記予測されていないパスからの前記第2のパスに沿った命令を処理することと、を更に含む、
    請求項10~16の何れかの方法。
  18. 前記第2のパスのフォークポイントを生成することと、
    前記信頼度レベルが前記閾値信頼度を下回ることに応じて、前記第1の部分及び前記第2の部分のスレッドを同期させることと、を更に含む、
    請求項17の方法。
  19. 方法であって、
    分岐命令の結果と予測についての信頼度レベルとを予測することと、
    パイプライン回路において、前記分岐命令の予測された分岐からの第1のパスに沿った命令を処理することと、
    前記信頼度レベルに基づいて、前記パイプライン回路を使用して、前記分岐命令の予測されていない分岐からの第2のパスに沿った命令を選択的に処理することであって、前記第2のパスに沿った命令を処理することは、前記第1のパスに沿った命令を処理することと時分割多重化される、ことと、
    前記分岐命令の結果の誤予測に応じて、少なくとも1つのバッファに記憶された情報を使用して、前記第2のパスを前記第1のパスに切り替えることと、を含む、
    方法。
  20. 前記予測されていない分岐を選択的に処理することは、前記信頼度レベルが閾値信頼度を下回ることに応じて、前記予測されていない分岐からの前記第2のパスに沿った命令を処理することを含む、
    請求項19の方法。
  21. 前記予測されていない分岐からの前記第2のパスに沿った命令を選択的に処理することは、異なる回路及び共有回路の時分割多重化リソースのうち少なくとも1つを使用して、前記予測された分岐からの前記第2のパスに沿った命令を処理することと同時に、前記予測された分岐からの前記第1のパスに沿った命令を処理することを含む、
    請求項19又は20の方法。
JP2023513341A 2020-09-04 2021-08-26 分岐予測リダイレクトのための代替パス Pending JP2023540036A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/012,833 2020-09-04
US17/012,833 US20220075624A1 (en) 2020-09-04 2020-09-04 Alternate path for branch prediction redirect
PCT/US2021/047705 WO2022051161A1 (en) 2020-09-04 2021-08-26 Alternate path for branch prediction redirect

Publications (1)

Publication Number Publication Date
JP2023540036A true JP2023540036A (ja) 2023-09-21

Family

ID=80469265

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023513341A Pending JP2023540036A (ja) 2020-09-04 2021-08-26 分岐予測リダイレクトのための代替パス

Country Status (6)

Country Link
US (1) US20220075624A1 (ja)
EP (1) EP4208783A1 (ja)
JP (1) JP2023540036A (ja)
KR (1) KR20230058523A (ja)
CN (1) CN116324715A (ja)
WO (1) WO2022051161A1 (ja)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6643770B1 (en) * 1999-09-16 2003-11-04 Intel Corporation Branch misprediction recovery using a side memory
US20020073301A1 (en) * 2000-12-07 2002-06-13 International Business Machines Corporation Hardware for use with compiler generated branch information
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US7711934B2 (en) * 2005-10-31 2010-05-04 Mips Technologies, Inc. Processor core and method for managing branch misprediction in an out-of-order processor pipeline
US20080162908A1 (en) * 2006-06-08 2008-07-03 Luick David A structure for early conditional branch resolution
US7779232B2 (en) * 2007-08-28 2010-08-17 International Business Machines Corporation Method and apparatus for dynamically managing instruction buffer depths for non-predicted branches
US8255669B2 (en) * 2008-01-30 2012-08-28 International Business Machines Corporation Method and apparatus for thread priority control in a multi-threaded processor based upon branch issue information including branch confidence information
US9348599B2 (en) * 2013-01-15 2016-05-24 International Business Machines Corporation Confidence threshold-based opposing branch path execution for branch prediction
US10649782B2 (en) * 2018-03-29 2020-05-12 Arm Limited Apparatus and method for controlling branch prediction
US10846097B2 (en) * 2018-12-20 2020-11-24 Samsung Electronics Co., Ltd. Mispredict recovery apparatus and method for branch and fetch pipelines

Also Published As

Publication number Publication date
EP4208783A1 (en) 2023-07-12
US20220075624A1 (en) 2022-03-10
KR20230058523A (ko) 2023-05-03
WO2022051161A1 (en) 2022-03-10
CN116324715A (zh) 2023-06-23

Similar Documents

Publication Publication Date Title
JP5747104B2 (ja) 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体
JP5548037B2 (ja) 命令発行制御装置及び方法
JP3716414B2 (ja) 同時マルチスレッド化プロセッサ
JP5631976B2 (ja) マルチスレッドマイクロプロセッサにおける命令の発行をスケジュールするための方法及び装置
US20070234014A1 (en) Processor apparatus for executing instructions with local slack prediction of instructions and processing method therefor
JP7160956B2 (ja) 分岐命令のタイプに基づく先行分岐予測の選択的実行
JP2014002735A (ja) ゼロサイクルロード
JP2009540412A (ja) ローカル及びグローバル分岐予測情報の格納
KR20120070584A (ko) 데이터 스트림에 대한 저장 인식 프리페치
US9519479B2 (en) Techniques for increasing vector processing utilization and efficiency through vector lane predication prediction
JP2016536665A (ja) 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法
CN112384894A (zh) 存储偶然的分支预测以减少错误预测恢复的时延
US20190079771A1 (en) Lookahead out-of-order instruction fetch apparatus for microprocessors
JP2004518183A (ja) マルチスレッド・システムにおける命令のフェッチとディスパッチ
CN116302106A (zh) 用于促进分支预测单元的改善的带宽的设备、方法和系统
US9778934B2 (en) Power efficient pattern history table fetch in branch predictor
KR100837400B1 (ko) 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치
JP2023540036A (ja) 分岐予測リダイレクトのための代替パス
JP3795055B1 (ja) 値予測装置、マルチプロセッサシステムおよび値予測方法
TWI569207B (zh) 微處理器、微處理器的運作方法、及改善微處理器效能的方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230425