JP7189935B2 - 同時の分岐アドレスの予測およびレジスタの内容の更新 - Google Patents
同時の分岐アドレスの予測およびレジスタの内容の更新 Download PDFInfo
- Publication number
- JP7189935B2 JP7189935B2 JP2020508366A JP2020508366A JP7189935B2 JP 7189935 B2 JP7189935 B2 JP 7189935B2 JP 2020508366 A JP2020508366 A JP 2020508366A JP 2020508366 A JP2020508366 A JP 2020508366A JP 7189935 B2 JP7189935 B2 JP 7189935B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- predicted
- prediction
- predicted value
- instructions
- 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.)
- Active
Links
- 238000012545 processing Methods 0.000 claims description 115
- 238000000034 method Methods 0.000 claims description 86
- 238000011084 recovery Methods 0.000 claims description 41
- 238000004590 computer program Methods 0.000 claims description 16
- 238000011010 flushing procedure Methods 0.000 claims description 5
- 238000004891 communication Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 description 36
- 230000008569 process Effects 0.000 description 34
- 230000004927 fusion Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 12
- 238000012549 training Methods 0.000 description 9
- 230000004044 response Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 101150004071 SRR1 gene Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000007499 fusion processing Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30061—Multi-way branch instructions, e.g. CASE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30116—Shadow registers, e.g. coupled registers, not forming part of the register space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
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)
Description
…
l r15=A(subr) !サブルーチンsubrのアドレスをr15に読み込む
balr r14,r15 !復帰アドレスをr14に保存して、
… !pcをr15の内容に設定する
subr:
stm r14, r12, 12 (r13) !複数のレジスタを呼び出し元の
!保存領域(r14、r15、r0、…、r12)に格納する
balr r12, 0 !ベース・レジスタとして使用するために、アドレスをr12に設定する
using *, r12 !r12を使用することをアセンブラに伝えるための疑似命令
la r11, savearea !自分の保存領域のアドレスを読み込む
st r13, savearea+4 !呼び出し元の保存領域のアドレスを格納する
st r11, 8 (r13) !自分の保存領域のアドレスを呼び出し元の保存領域に格納する
…サブルーチンの本体…
…r0は、存在する場合、復帰コードに使用される…
l r13, savearea+4 !呼び出し元の保存領域のアドレスを読み込む
lm r14, r12, 12 (r13) !複数のレジスタを呼び出し元の保存領域
!(r14、r15、r0、…、r12)から読み込む
br r14 !呼び出し元に戻る
…
lwz r15=A(subr) !サブルーチンsubrのアドレスをr15に読み込む
mtctr r15 !ctr = r15
bctrl !復帰アドレスをlrに保存して、
!pcをctrの内容に設定する
…
subr:
stmw r10,r4,12(r13) !複数のレジスタを呼び出し元の保存領域
!(r14、r15、r0、…、r12)に格納する
mflr r0 !lrを保存する
bl .+4 !PCをLRに取得する
base: mflr r12 !r12内のアドレスをベース・レジスタとして使用する
mtlr r0 !LRを復元する
…サブルーチンの本体…
lwz r11, (savearea-base) @1, r12 !データを
!グローバル・オフセット・テーブル(GOT:Global Offset Table)から読み込む
…r0は、存在する場合、復帰コードに使用される…
blr !呼び出し元に戻る
…
l r12=A(subr) !サブルーチンsubrのアドレスをr12に読み込む
balr r14, r12 !復帰アドレスをr14に保存して、
!pcをr12の内容に設定する
…
subr:
using *, r12 !r12をベースとして使用することをアセンブラに伝えるための疑似命令
stm r14, r12, 12 (r13) !複数のレジスタを呼び出し元の保存領域
!(r14、r15、r0、…、r12)に格納する
la r11, savearea !自分の保存領域のアドレスを読み込む
st r13, savearea+4 !呼び出し元の保存領域のアドレスを格納する
st r11, 8 (r13) !自分の保存領域のアドレスを呼び出し元の保存領域に格納する
…サブルーチンの本体…
…r0は、存在する場合、復帰コードに使用される…
l r13, savearea+4 !呼び出し元の保存領域のアドレスを読み込む
lm r14, r12, 12 (r13) !複数のレジスタを呼び出し元の保存領域
!(r14、r15、r0、…、r12)から読み込む
br r14 !呼び出し元に戻る
…
lwz r15=A(subr) !サブルーチンのアドレスをr15に読み込む
mtctr r15 !ctr=r15
bctrl !復帰アドレスをlrに保存して、
!pcをctrの内容に設定する
…
subr:
base: stmw r10, r4, 12 (r13) !複数のレジスタを呼び出し元の
!保存領域(r14、r15、r0、…、r12)に格納する
mfctr r12 !ctr内のアドレスをベース・レジスタとしてr12に移動する
…サブルーチンの本体…
lwz r11, (savearea-base) @1, r12 !データを
!グローバル・オフセット・テーブル(GOT)から読み込む
…r0は、存在する場合、復帰コードに使用される…
blr !呼び出し元に戻る
mtctr R12
bctrl
mtctr R12
old ctr=ctr
update_lr_from_instruction_address+
predict_indirect_ctr+
update_pc_from_prediction+
update_ctr_from_prediction+
update_affiliated_reg_from_prediction (R12)
check_target_address (old_ctr)
old_affiliated=R12+
update_lr_from_instruction_address+
predict_indirect_ctr+
update_pc_from_prediction+
update_ctr_from_prediction+
update_affiliated_reg_from_prediciton (R12)
check_target_address (old_affiliated)
mtctr R12
<命令…>
Bctrl
mtctr Rx
bctrl
addis Ry, Rx, #higha (_foo - .TOC.)
addi Ry, Ry, #low (_foo - .TOC.)
ターゲット・アドレスを予測する
PC <= 予測されたターゲット・アドレス
CTR <= 予測されたターゲット・アドレス
Rx <= 予測されたターゲット・アドレス
Ry <= 予測されたターゲット・アドレス+オフセット
アドレスを返す
予測されたターゲット・アドレスをRxに対してチェックする
bctrl
callee_ctr_indirect_entry:
mfctr r12 !CTR値を取得する
addis r2, r12, (.TOC.-callee_ctr_indirec_entry)@ha
addi r2.r2, (.TOC.-callee_ctr_indirect_entry)@1
calle_direct_local_entry:
… !サブルーチン本体
blr !呼び出し元に戻る
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間、ネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
幅広いネットワーク・アクセス:能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター)を指定できる場合がある。
迅速な順応性:能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、無制限であるように見え、任意の量をいつでも購入できる。
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した一部の抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、またはさらには個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースをプロビジョニングすることであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、およびデプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
プライベート・クラウド:このクラウド・インフラストラクチャは、ある組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
Claims (22)
- コンピューティング環境内の処理を容易にするためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、処理回路に方法を実行させ、前記方法は、
前記コンピューティング環境のプロセッサを使用して、レジスタ間接分岐において使用される予測値を予測することであって、前記予測値は前記レジスタ間接分岐の予測されたターゲット・アドレスを含む、前記予測することと、
前記予測値を、前記コンピューティング環境の1つまたは複数の命令にアクセスできる選択された位置に格納することであって、前記格納することが前記レジスタ間接分岐の処理と同時に実行され、前記予測されたターゲット・アドレスは、前記選択された位置と命令フェッチを前記予測されたターゲット・アドレスにリダイレクトするためのプログラム・カウンタとに提供される、前記格納することと、
前記予測値を、前記レジスタ間接分岐を含む投機的処理において使用することであって、前記1つまたは複数の命令の一部が前記レジスタ間接分岐の命令であり、前記使用することは、前記1つまたは複数の命令の一部が前記投機的処理の一部として前記選択された位置から前記予測値にアクセスすることを含む、前記使用することと
を含んでいる、コンピュータ・プログラム。 - 前記使用することが、前記命令フェッチを前記予測されたターゲット・アドレスにリダイレクトすることを含んでいる、請求項1に記載のコンピュータ・プログラム。
- 前記選択された位置がハードウェア・レジスタを含んでいる、請求項1に記載のコンピュータ・プログラム。
- 前記方法が、
前記予測値が正確であるかどうかを判定することと、
前記予測値が不正確であるということの決定に基づいて、回復を実行することと
をさらに含んでいる、請求項1に記載のコンピュータ・プログラム。 - 前記回復が、
前記使用の後に実行される1つまたは複数の命令をフラッシュすることと、
前記予測値を予測ではない値に置き換えることと
を含んでいる、請求項4に記載のコンピュータ・プログラム。 - 前記置き換えることが、1つまたは複数の名前変更レジスタを使用して前記予測ではない値を提供することを含んでいる、請求項5に記載のコンピュータ・プログラム。
- 前記格納することが、
前記予測値を保持するためのレジスタを割り当てることと、
前記予測値を、前記予測値を保持するために割り当てられた前記レジスタにコピーすることと
を含んでいる、請求項1に記載のコンピュータ・プログラム。 - 前記レジスタが、前記予測値を保持するために割り当てられた論理レジスタに割り当てられた、名前変更レジスタである、請求項7に記載のコンピュータ・プログラム。
- 前記方法が、前記名前変更レジスタに使用可能としてマーク付けすることをさらに含んでいる、請求項8に記載のコンピュータ・プログラム。
- コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムは、
メモリと、
前記メモリと通信するプロセッサと
を備えており、前記コンピュータ・システムは方法を実行するように構成されており、前記方法は、
レジスタ間接分岐において使用される予測値を予測することであって、前記予測値は前記レジスタ間接分岐の予測されたターゲット・アドレスを含む、前記予測することと、
前記予測値を、前記コンピューティング環境の1つまたは複数の命令にアクセスできる選択された位置に格納することであって、前記格納することが前記レジスタ間接分岐の処理と同時に実行され、前記予測されたターゲット・アドレスは、前記選択された位置と命令フェッチを前記予測されたターゲット・アドレスにリダイレクトするためのプログラム・カウンタとに提供される、前記格納することと、
前記予測値を、前記レジスタ間接分岐を含む投機的処理において使用することであって、前記1つまたは複数の命令の一部が前記レジスタ間接分岐の命令であり、前記使用することは、前記1つまたは複数の命令の一部が前記投機的処理の一部として前記選択された位置から前記予測値にアクセスすることを含む、前記使用することと
を含んでいる、コンピュータ・システム。 - 前記選択された位置がハードウェア・レジスタを含んでいる、請求項10に記載のコンピュータ・システム。
- 前記方法が、
前記予測値が正確であるかどうかを判定することと、
前記予測値が不正確であるということの決定に基づいて、回復を実行することと
をさらに含んでいる、請求項10に記載のコンピュータ・システム。 - 前記格納することが、
前記予測値を保持するためのレジスタを割り当てることと、
前記予測値を、前記予測値を保持するために割り当てられた前記レジスタにコピーすることと
を含んでいる、請求項10に記載のコンピュータ・システム。 - コンピューティング環境内の処理を容易にするコンピュータ実装方法であって、前記コンピュータ実装方法は、
前記コンピューティング環境のプロセッサを使用して、レジスタ間接分岐において使用される予測値を予測することであって、前記予測値は前記レジスタ間接分岐の予測されたターゲット・アドレスを含む、前記予測することと、
前記予測値を、前記コンピューティング環境の1つまたは複数の命令にアクセスできる選択された位置に格納することであって、前記格納することが前記レジスタ間接分岐の処理と同時に実行され、前記予測されたターゲット・アドレスは、前記選択された位置と命令フェッチを前記予測されたターゲット・アドレスにリダイレクトするためのプログラム・カウンタとに提供される、前記格納することと、
前記予測値を、前記レジスタ間接分岐を含む投機的処理において使用することであって、前記1つまたは複数の命令の一部が前記レジスタ間接分岐の命令であり、前記使用することは、前記1つまたは複数の命令の一部が前記投機的処理の一部として前記選択された位置から前記予測値にアクセスすることを含む、前記使用することと
を含んでいる、コンピュータ実装方法。 - 前記使用することが、前記命令フェッチを前記ターゲット・アドレスにリダイレクトすることを含んでいる、請求項14に記載のコンピュータ実装方法。
- 前記選択された位置がハードウェア・レジスタを含んでいる、請求項14に記載のコンピュータ実装方法。
- 前記予測値が正確であるかどうかを判定することと、
前記予測値が不正確であるということの決定に基づいて、回復を実行することと
をさらに含んでいる、請求項14に記載のコンピュータ実装方法。 - 前記回復が、
前記使用の後に実行される1つまたは複数の命令をフラッシュすることと、
前記予測値を予測ではない値に置き換えることと
を含んでいる、請求項17に記載のコンピュータ実装方法。 - 前記置き換えることが、1つまたは複数の名前変更レジスタを使用して前記予測ではない値を提供することを含んでいる、請求項18に記載のコンピュータ実装方法。
- 前記格納することが、
前記予測値を保持するためのレジスタを割り当てることと、
前記予測値を、前記予測値を保持するために割り当てられた前記レジスタにコピーすることと
を含んでいる、請求項14に記載のコンピュータ実装方法。 - 前記レジスタが、前記予測値を保持するために割り当てられた論理レジスタに割り当てられた、名前変更レジスタである、請求項20に記載のコンピュータ実装方法。
- 前記方法が、前記名前変更レジスタに使用可能としてマーク付けすることをさらに含んでいる、請求項21に記載のコンピュータ実装方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/680,779 | 2017-08-18 | ||
US15/680,779 US11150904B2 (en) | 2017-08-18 | 2017-08-18 | Concurrent prediction of branch addresses and update of register contents |
US15/816,401 US11314511B2 (en) | 2017-08-18 | 2017-11-17 | Concurrent prediction of branch addresses and update of register contents |
US15/816,401 | 2017-11-17 | ||
PCT/IB2018/055931 WO2019034964A1 (en) | 2017-08-18 | 2018-08-07 | SIMULTANEOUS PREDICTION OF BRANCH ADDRESSES AND UPDATE OF REGISTER CONTENT |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020531962A JP2020531962A (ja) | 2020-11-05 |
JP7189935B2 true JP7189935B2 (ja) | 2022-12-14 |
Family
ID=65360492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020508366A Active JP7189935B2 (ja) | 2017-08-18 | 2018-08-07 | 同時の分岐アドレスの予測およびレジスタの内容の更新 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11150904B2 (ja) |
JP (1) | JP7189935B2 (ja) |
CN (1) | CN111033467B (ja) |
DE (1) | DE112018003578T5 (ja) |
GB (1) | GB2582451B (ja) |
WO (1) | WO2019034964A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10719328B2 (en) | 2017-08-18 | 2020-07-21 | International Business Machines Corporation | Determining and predicting derived values used in register-indirect branching |
US10534609B2 (en) | 2017-08-18 | 2020-01-14 | International Business Machines Corporation | Code-specific affiliated register prediction |
CN111930428B (zh) * | 2020-09-27 | 2021-01-15 | 南京芯瞳半导体技术有限公司 | 一种条件分支指令的融合方法、装置及计算机存储介质 |
CN112579176B (zh) * | 2020-12-17 | 2023-03-28 | 成都海光微电子技术有限公司 | 记录地址历史的装置和方法 |
Family Cites Families (96)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0337723A (ja) | 1989-07-05 | 1991-02-19 | Hitachi Ltd | 情報処理装置 |
JP2883784B2 (ja) | 1993-04-27 | 1999-04-19 | 株式会社東芝 | マイクロコンピュータ |
US5604877A (en) | 1994-01-04 | 1997-02-18 | Intel Corporation | Method and apparatus for resolving return from subroutine instructions in a computer processor |
US5835743A (en) | 1994-06-30 | 1998-11-10 | Sun Microsystems, Inc. | Application binary interface and method of interfacing binary application program to digital computer |
US5740414A (en) | 1995-02-14 | 1998-04-14 | Hal Computer Systems, Inc. | Method and apparatus for coordinating the use of physical registers in a microprocessor |
JP3494736B2 (ja) | 1995-02-27 | 2004-02-09 | 株式会社ルネサステクノロジ | 分岐先バッファを用いた分岐予測システム |
US5896528A (en) | 1995-03-03 | 1999-04-20 | Fujitsu Limited | Superscalar processor with multiple register windows and speculative return address generation |
US5898864A (en) | 1995-09-25 | 1999-04-27 | International Business Machines Corporation | Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors |
US5892936A (en) | 1995-10-30 | 1999-04-06 | Advanced Micro Devices, Inc. | Speculative register file for storing speculative register states and removing dependencies between instructions utilizing the register |
US5774722A (en) | 1995-12-14 | 1998-06-30 | International Business Machines Corporation | Method for efficient external reference resolution in dynamically linked shared code libraries in single address space operating systems |
US5850543A (en) | 1996-10-30 | 1998-12-15 | Texas Instruments Incorporated | Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return |
US5996092A (en) | 1996-12-05 | 1999-11-30 | International Business Machines Corporation | System and method for tracing program execution within a processor before and after a triggering event |
US5898885A (en) | 1997-03-31 | 1999-04-27 | International Business Machines Corporation | Method and system for executing a non-native stack-based instruction within a computer system |
US6446034B1 (en) | 1998-12-16 | 2002-09-03 | Bull Hn Information Systems Inc. | Processor emulation virtual memory address translation |
US6332191B1 (en) * | 1999-01-19 | 2001-12-18 | Advanced Micro Devices, Inc. | System for canceling speculatively fetched instructions following a branch mis-prediction in a microprocessor |
US6308322B1 (en) | 1999-04-06 | 2001-10-23 | Hewlett-Packard Company | Method and apparatus for reduction of indirect branch instruction overhead through use of target address hints |
US6324643B1 (en) | 1999-10-01 | 2001-11-27 | Hitachi, Ltd. | Branch prediction and target instruction control for processor |
US6446197B1 (en) | 1999-10-01 | 2002-09-03 | Hitachi, Ltd. | Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions |
JP2001142692A (ja) | 1999-10-01 | 2001-05-25 | Hitachi Ltd | 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法 |
US6442707B1 (en) | 1999-10-29 | 2002-08-27 | Advanced Micro Devices, Inc. | Alternate fault handler |
US6609194B1 (en) | 1999-11-12 | 2003-08-19 | Ip-First, Llc | Apparatus for performing branch target address calculation based on branch type |
US6715064B1 (en) | 2000-01-21 | 2004-03-30 | Intel Corporation | Method and apparatus for performing sequential executions of elements in cooperation with a transform |
US6766442B1 (en) | 2000-03-30 | 2004-07-20 | International Business Machines Corporation | Processor and method that predict condition register-dependent conditional branch instructions utilizing a potentially stale condition register value |
US6625660B1 (en) | 2000-06-06 | 2003-09-23 | International Business Machines Corporation | Multiprocessor speculation mechanism for efficiently managing multiple barrier operations |
US6691220B1 (en) | 2000-06-06 | 2004-02-10 | International Business Machines Corporation | Multiprocessor speculation mechanism via a barrier speculation flag |
US6880073B2 (en) | 2000-12-28 | 2005-04-12 | International Business Machines Corporation | Speculative execution of instructions and processes before completion of preceding barrier operations |
EP1405174A1 (en) | 2001-06-29 | 2004-04-07 | Koninklijke Philips Electronics N.V. | Method, apparatus and compiler for predicting indirect branch target addresses |
US7234045B2 (en) | 2001-07-03 | 2007-06-19 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US6845442B1 (en) | 2002-04-30 | 2005-01-18 | Advanced Micro Devices, Inc. | System and method of using speculative operand sources in order to speculatively bypass load-store operations |
US7028166B2 (en) | 2002-04-30 | 2006-04-11 | Advanced Micro Devices, Inc. | System and method for linking speculative results of load operations to register values |
US7089400B1 (en) | 2002-08-29 | 2006-08-08 | Advanced Micro Devices, Inc. | Data speculation based on stack-relative addressing patterns |
US7310799B2 (en) | 2002-12-31 | 2007-12-18 | International Business Machines Corporation | Reducing load instructions via global data reordering |
US7024537B2 (en) | 2003-01-21 | 2006-04-04 | Advanced Micro Devices, Inc. | Data speculation based on addressing patterns identifying dual-purpose register |
US6965983B2 (en) | 2003-02-16 | 2005-11-15 | Faraday Technology Corp. | Simultaneously setting prefetch address and fetch address pipelined stages upon branch |
US20040225866A1 (en) | 2003-05-06 | 2004-11-11 | Williamson David James | Branch prediction in a data processing system |
US7308562B2 (en) | 2003-05-22 | 2007-12-11 | International Business Machines Corporation | System and method for improved branch performance in pipelined computer architectures |
US7263600B2 (en) | 2004-05-05 | 2007-08-28 | Advanced Micro Devices, Inc. | System and method for validating a memory file that links speculative results of load operations to register values |
US7506325B2 (en) | 2004-10-07 | 2009-03-17 | International Business Machines Corporation | Partitioning processor resources based on memory usage |
JP2007041837A (ja) | 2005-08-03 | 2007-02-15 | Nec Electronics Corp | 命令プリフェッチ装置及び命令プリフェッチ方法 |
US7409535B2 (en) | 2005-04-20 | 2008-08-05 | International Business Machines Corporation | Branch target prediction for multi-target branches by identifying a repeated pattern |
US20070088937A1 (en) | 2005-10-13 | 2007-04-19 | International Business Machines Corporation | Computer-implemented method and processing unit for predicting branch target addresses |
US7539851B2 (en) | 2006-05-18 | 2009-05-26 | Sun Microsystems, Inc. | Using register readiness to facilitate value prediction |
US8677104B2 (en) | 2006-05-30 | 2014-03-18 | Arm Limited | System for efficiently tracing data in a data processing system |
US7689806B2 (en) | 2006-07-14 | 2010-03-30 | Q | Method and system to indicate an exception-triggering page within a microprocessor |
US7788473B1 (en) * | 2006-12-26 | 2010-08-31 | Oracle America, Inc. | Prediction of data values read from memory by a microprocessor using the storage destination of a load operation |
US7797521B2 (en) | 2007-04-12 | 2010-09-14 | International Business Machines Corporation | Method, system, and computer program product for path-correlated indirect address predictions |
US7809933B2 (en) * | 2007-06-07 | 2010-10-05 | International Business Machines Corporation | System and method for optimizing branch logic for handling hard to predict indirect branches |
JP2009110209A (ja) | 2007-10-29 | 2009-05-21 | Panasonic Corp | 演算処理装置、プロセッサ、プログラム変換装置およびプログラム |
US8631261B2 (en) | 2007-12-31 | 2014-01-14 | Intel Corporation | Context state management for processor feature sets |
US7737725B1 (en) | 2008-04-04 | 2010-06-15 | Xilinx, Inc. | Device control register for a processor block |
US8639913B2 (en) | 2008-05-21 | 2014-01-28 | Qualcomm Incorporated | Multi-mode register file for use in branch prediction |
CN101763248A (zh) | 2008-12-25 | 2010-06-30 | 世意法(北京)半导体研发有限责任公司 | 用于多模式分支预测器的系统和方法 |
US20110078425A1 (en) | 2009-09-25 | 2011-03-31 | Shah Manish K | Branch prediction mechanism for predicting indirect branch targets |
US8612978B2 (en) | 2009-12-10 | 2013-12-17 | Oracle America, Inc. | Code execution utilizing single or multiple threads |
US8843729B2 (en) | 2010-04-27 | 2014-09-23 | Via Technologies, Inc. | Microprocessor that fuses MOV/ALU instructions |
US20110320787A1 (en) | 2010-06-28 | 2011-12-29 | Qualcomm Incorporated | Indirect Branch Hint |
US20120079255A1 (en) | 2010-09-25 | 2012-03-29 | Combs Jonathan D | Indirect branch prediction based on branch target buffer hysteresis |
US8769539B2 (en) | 2010-11-16 | 2014-07-01 | Advanced Micro Devices, Inc. | Scheduling scheme for load/store operations |
US9176737B2 (en) | 2011-02-07 | 2015-11-03 | Arm Limited | Controlling the execution of adjacent instructions that are dependent upon a same data condition |
US9898291B2 (en) | 2011-04-07 | 2018-02-20 | Via Technologies, Inc. | Microprocessor with arm and X86 instruction length decoders |
US8930657B2 (en) | 2011-07-18 | 2015-01-06 | Infineon Technologies Ag | Method and apparatus for realtime detection of heap memory corruption by buffer overruns |
CN102306093B (zh) | 2011-08-04 | 2014-03-05 | 北京北大众志微系统科技有限责任公司 | 实现现代处理器间接转移预测的装置及方法 |
US8612959B2 (en) | 2011-10-03 | 2013-12-17 | International Business Machines Corporation | Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization |
US9329869B2 (en) | 2011-10-03 | 2016-05-03 | International Business Machines Corporation | Prefix computer instruction for compatibily extending instruction functionality |
WO2013095510A1 (en) | 2011-12-22 | 2013-06-27 | Intel Corporation | Packed data operation mask concatenation processors, methods, systems, and instructions |
US9477834B2 (en) | 2012-02-08 | 2016-10-25 | Arm Limited | Maintaining secure data isolated from non-secure access when switching between domains |
US9063759B2 (en) | 2012-03-28 | 2015-06-23 | International Business Machines Corporation | Optimizing subroutine calls based on architecture level of called subroutine |
US9195466B2 (en) | 2012-05-16 | 2015-11-24 | Qualcomm Incorporated | Fusing conditional write instructions having opposite conditions in instruction processing circuits, and related processor systems, methods, and computer-readable media |
US20130346727A1 (en) * | 2012-06-25 | 2013-12-26 | Qualcomm Incorporated | Methods and Apparatus to Extend Software Branch Target Hints |
US20140006752A1 (en) | 2012-06-27 | 2014-01-02 | Qualcomm Incorporated | Qualifying Software Branch-Target Hints with Hardware-Based Predictions |
US9330017B2 (en) | 2012-11-02 | 2016-05-03 | International Business Machines Corporation | Suppressing virtual address translation utilizing bits and instruction tagging |
US9477476B2 (en) | 2012-11-27 | 2016-10-25 | Qualcomm Incorporated | Fusing immediate value, write-based instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media |
GB201300608D0 (en) | 2013-01-14 | 2013-02-27 | Imagination Tech Ltd | Indirect branch prediction |
US9672037B2 (en) | 2013-01-23 | 2017-06-06 | Apple Inc. | Arithmetic branch fusion |
GB2506462B (en) * | 2013-03-13 | 2014-08-13 | Imagination Tech Ltd | Indirect branch prediction |
US9817666B2 (en) | 2013-03-15 | 2017-11-14 | Intel Corporation | Method for a delayed branch implementation by using a front end track table |
US9858081B2 (en) | 2013-08-12 | 2018-01-02 | International Business Machines Corporation | Global branch prediction using branch and fetch group history |
CN104423929B (zh) | 2013-08-21 | 2017-07-14 | 华为技术有限公司 | 一种分支预测方法及相关装置 |
JP2015049832A (ja) | 2013-09-04 | 2015-03-16 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 定数ロードのオーバーヘッドを削減する方法、装置及びプログラム |
GB2522906B (en) | 2014-02-10 | 2021-07-14 | Advanced Risc Mach Ltd | Region identifying operation for identifying a region of a memory attribute unit corresponding to a target memory address |
US9110675B1 (en) | 2014-03-12 | 2015-08-18 | International Business Machines Corporation | Usage of TOC register as application register |
US9256546B2 (en) | 2014-03-31 | 2016-02-09 | International Business Machines Corporation | Transparent code patching including updating of address translation structures |
US10740105B2 (en) | 2014-04-04 | 2020-08-11 | Texas Instruments Incorporated | Processor subroutine cache |
US9563427B2 (en) | 2014-05-30 | 2017-02-07 | International Business Machines Corporation | Relative offset branching in a fixed-width reduced instruction set computing architecture |
US9329850B2 (en) | 2014-06-24 | 2016-05-03 | International Business Machines Corporation | Relocation of instructions that use relative addressing |
US20160055003A1 (en) | 2014-08-19 | 2016-02-25 | Qualcomm Incorporated | Branch prediction using least-recently-used (lru)-class linked list branch predictors, and related circuits, methods, and computer-readable media |
US9274769B1 (en) | 2014-09-05 | 2016-03-01 | International Business Machines Corporation | Table of contents pointer value save and restore placeholder positioning |
EP3012762A1 (en) | 2014-10-24 | 2016-04-27 | Thomson Licensing | Control flow graph flattening device and method |
US9354947B2 (en) | 2014-10-28 | 2016-05-31 | International Business Machines Corporation | Linking a function with dual entry points |
US9395964B2 (en) | 2014-10-30 | 2016-07-19 | International Business Machines Corporation | Rewriting symbol address initialization sequences |
US9858411B2 (en) | 2014-12-19 | 2018-01-02 | Intel Corporation | Execution profiling mechanism |
US9513832B2 (en) | 2015-03-25 | 2016-12-06 | International Business Machines Corporation | Accessing global data from accelerator devices |
US20170083318A1 (en) | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Configuring modes of processor operation |
GB2543304B (en) | 2015-10-14 | 2020-10-28 | Advanced Risc Mach Ltd | Move prefix instruction |
US10324724B2 (en) | 2015-12-16 | 2019-06-18 | Intel Corporation | Hardware apparatuses and methods to fuse instructions |
US10528355B2 (en) * | 2015-12-24 | 2020-01-07 | Arm Limited | Handling move instructions via register renaming or writing to a different physical register using control flags |
-
2017
- 2017-08-18 US US15/680,779 patent/US11150904B2/en active Active
- 2017-11-17 US US15/816,401 patent/US11314511B2/en active Active
-
2018
- 2018-08-07 GB GB2002829.6A patent/GB2582451B/en active Active
- 2018-08-07 CN CN201880053566.7A patent/CN111033467B/zh active Active
- 2018-08-07 JP JP2020508366A patent/JP7189935B2/ja active Active
- 2018-08-07 WO PCT/IB2018/055931 patent/WO2019034964A1/en active Application Filing
- 2018-08-07 DE DE112018003578.6T patent/DE112018003578T5/de active Pending
Also Published As
Publication number | Publication date |
---|---|
CN111033467A (zh) | 2020-04-17 |
US11150904B2 (en) | 2021-10-19 |
CN111033467B (zh) | 2023-08-01 |
GB2582451B (en) | 2021-12-22 |
US20190056938A1 (en) | 2019-02-21 |
WO2019034964A1 (en) | 2019-02-21 |
US20190056936A1 (en) | 2019-02-21 |
GB2582451A (en) | 2020-09-23 |
GB202002829D0 (en) | 2020-04-15 |
DE112018003578T5 (de) | 2020-04-02 |
JP2020531962A (ja) | 2020-11-05 |
US11314511B2 (en) | 2022-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7059361B2 (ja) | Set Table of Contents(TOC)Register命令 | |
JP7189935B2 (ja) | 同時の分岐アドレスの予測およびレジスタの内容の更新 | |
US10754656B2 (en) | Determining and predicting derived values | |
US10929135B2 (en) | Predicting and storing a predicted target address in a plurality of selected locations | |
JP7082187B2 (ja) | サブルーチン分岐シーケンスにおける導出された値の作成および導出された値の予測の動的融合 | |
US10564974B2 (en) | Determining and predicting affiliated registers based on dynamic runtime control flow analysis | |
US10891133B2 (en) | Code-specific affiliated register prediction | |
US10884748B2 (en) | Providing a predicted target address to multiple locations based on detecting an affiliated relationship | |
US10579385B2 (en) | Prediction of an affiliated register |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210122 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20211125 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20211207 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20211221 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220427 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20220502 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220830 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20221104 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20221122 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20221202 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7189935 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |