JP4134179B2 - ソフトウエアによる動的予測方法および装置 - Google Patents
ソフトウエアによる動的予測方法および装置 Download PDFInfo
- Publication number
- JP4134179B2 JP4134179B2 JP2006020403A JP2006020403A JP4134179B2 JP 4134179 B2 JP4134179 B2 JP 4134179B2 JP 2006020403 A JP2006020403 A JP 2006020403A JP 2006020403 A JP2006020403 A JP 2006020403A JP 4134179 B2 JP4134179 B2 JP 4134179B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- processor
- branch
- conditional
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 51
- 239000000872 buffer Substances 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 13
- 238000012360 testing method Methods 0.000 claims description 11
- 230000036316 preload Effects 0.000 claims description 2
- 238000011156 evaluation Methods 0.000 claims 2
- 230000001343 mnemonic effect Effects 0.000 description 3
- 235000010354 butylated hydroxytoluene Nutrition 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000761456 Nops Species 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000015654 memory Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 108010020615 nociceptin receptor Proteins 0.000 description 1
- 230000002093 peripheral effect Effects 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3846—Speculative instruction execution using static prediction, e.g. branch taken strategy
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control 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/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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
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
Code: Inst A0
Branch COND, L1
Inst B0
L1: Inst C0
Inst C1
Inst A0 1
L1へ分岐 2
NOP: ペナルティ 3
NOP: ペナルティ 4
.・・・
NOP: ペナルティ 16
NOP: ペナルティ 17
Inst C0 18
Inst C1 19
別の態様では、前記の値が非零のとき、ターゲット命令がプリフェッチされる。
が真の場合は分岐が発生し、CPUは好ましくは「Inst C0」222、「Inst C1」224の順にプログラムを実行する。CPUが「Branch on COND1」命令210を実行するとき、「L1」部分によって与えられるアドレスに置かれた命令、すなわち、「Inst C0」222、「Inst C1」224などの命令のプリフェッチ218が完了していなければ、分岐ペナルティ220が発生する。
Code: Inst A0
CPIF VAL, L1
Inst A1
Inst A2
Inst A3
Branch COND, L1
Inst B0
L1: Inst C0
Inst C1
Inst A0 1
CPIF VAL, L1 2 プリフェッチ開始
Inst A1 3
Inst A2 4
Inst A3 5 プリフェッチ完了
L1へ分岐 6
Inst C0 7
Inst C1 8
for ( i=0; i<n; i++ )
{
命令・・・
} /* 条件付分岐 */
L1: for ( i=0; i<n; i++ )
{
CPIF( ( i != n-1), L1 );
命令・・・
} /* 条件付分岐 */
Claims (24)
- 以下の処理を含むことを特徴とする方法。
(a)プロセッサに分岐動作を実行させる分岐命令と関連づけられた条件付プリフェッチ命令の第1部分に含まれる値を特定する処理、
(b)前記条件付プリフェッチ命令の第2部分に含まれる、ターゲット命令のアドレスを特定する処理、
(c)条件が満たされたか否かを確認するために前記値を評価する処理、および、
(d)前記条件が満たされたとき、前記プロセッサの命令バッファに前記ターゲット命令のアドレスを開始アドレスとして1以上の命令をプリフェッチする処理。 - 請求項1に記載の方法において、前記値が非零のとき条件が満たされたとみなすことを特徴とする方法。
- 請求項1または2に記載の方法において、前記条件付プリフェッチ命令は、前記値に基づいて、前記プロセッサにターゲット命令のプリフェッチを起動せしめることを特徴とする方法。
- 請求項1から3のいずれかに記載の方法において、前記条件付プリフェッチ命令に応じ、前記プロセッサのハードウエアパイプラインに1以上の命令をプリロードする過程をさらに含むことを特徴とする方法。
- 請求項1から4のいずれかに記載の方法において、前記条件付プリフェッチ命令の第1部分に含まれる値は、前記分岐命令を過去反復したときに分岐が発生したか否かを示す情報を含むことを特徴とする方法。
- 請求項1から4のいずれかに記載の方法において、前記条件付プリフェッチ命令の第1部分に含まれる値は、前記分岐命令を過去反復したうちの2回について分岐が発生したか否かを示す情報を含むことを特徴とする方法。
- 命令キャッシュを有し、条件付プリフェッチ命令に関連づけられた分岐制御命令を利用するプロセッサを動作させる方法であって、前記条件付プリフェッチ命令は条件テスト部分および命令アドレス部分を有するものであり、以下の処理を含むことを特徴とする方法。
(a)前記条件付プリフェッチ命令の条件テスト部分が真であると評価できるか否かを確認する処理、および、
(b)前記条件付プリフェッチ命令の条件テスト部分が真であると評価できたとき、前記条件付プリフェッチ命令の命令アドレス部分で示されるアドレスを開始アドレスとして1以上の命令を前記プロセッサの命令キャッシュにプリロードする処理。 - 請求項7に記載の方法において、前記条件テスト部分の値が非零であると評価されたとき、真であることを確認することを特徴とする方法。
- 請求項7または8に記載の方法において、前記条件テストの結果に基づいて1以上の命令のプリフェッチを起動する処理をさらに含むことを特徴とする方法。
- 請求項7から9のいずれかに記載の方法において、前記条件テスト部分は前記分岐制御命令を過去反復したうち直近に反復した際に分岐が発生したか否かも示すことを特徴とする方法。
- 請求項7から9のいずれかに記載の方法において、前記条件テスト部分は前記分岐制御命令を過去反復したうち直近の2回に反復した際に分岐が発生したか否かも示すことを特徴とする方法。
- プロセッサに以下の処理を実行せしめることを特徴とするコンピュータプログラム。
(a)プロセッサに分岐動作を実行させる分岐命令と関連づけられた条件付プリフェッチ命令の第1部分に含まれる値を特定する処理、
(b)前記条件付プリフェッチ命令の第2部分に含まれる、ターゲット命令のアドレスを特定する処理、
(c)条件が満たされたか否かを確認するために前記値を評価する処理、および、
(d)前記条件が満たされたとき、前記プロセッサの命令バッファに前記ターゲット命令のアドレスを開始アドレスとして1以上の命令をプリフェッチする処理。 - 請求項12に記載のコンピュータプログラムにおいて、前記条件付プリフェッチ命令は、前記条件の値に基づいて、前記プロセッサにターゲットとなる特定の命令をプロセッサの命令バッファへプリフェッチすることを起動せしめることを特徴とするコンピュータプログラム。
- 請求項12または13に記載のコンピュータプログラムにおいて、前記条件付プリフェッチ命令の第1部分はプロセッサのレジスタにロード可能な値を含むことを特徴とするコンピュータプログラム。
- 請求項12から14のいずれかに記載のコンピュータプログラムにおいて、前記条件付プリフェッチ命令の第2部分によって特定されたアドレスは、プロセッサキャッシュのオフセットを含むことを特徴とするコンピュータプログラム。
- 請求項12から15のいずれかに記載のコンピュータプログラムにおいて、前記条件付プリフェッチ命令はそれに関連するプログラム分岐命令に先だって置くことが可能であり、その結果、プロセッサが前記プログラム分岐命令を実行する前に前記ターゲットとなるアドレスを導くことを可能としたことを特徴とするコンピュータプログラム。
- 請求項12から16のいずれかに記載のコンピュータプログラムにおいて、前記条件付プリフェッチ命令は、プロセッサのハードウエアパイプラインへの命令のプリロードをソフトウエアから制御することを許可することを特徴とするコンピュータプログラム。
- 請求項12から17のいずれかに記載のコンピュータプログラムにおいて、前記条件付プリフェッチ命令の第1部分に含まれる値は、関連づけられた分岐命令を過去反復したときに分岐が発生したか否かを示す情報を含むことを特徴とするコンピュータプログラム。
- 分岐命令と関連する条件付プリフェッチ命令を含むプログラムによって制御されるプロセッサであって、前記プログラムにより、以下の処理を実行することを特徴とするプロセッサ。
(a)真または偽として評価される値を特定する、前記条件付プリフェッチ命令の第1部分をデコードする処理と、
(b)特定のターゲット命令のアドレスを同定する、前記条件付プリフェッチ命令の第2部分をデコードする処理と、
(c)前記値が真と評価されたとき、前記特定のターゲット命令をキャッシュからプロセッサの命令バッファへ移動させる動作に関連づけられたプリフェッチを実行する処理。 - 請求項19に記載のプロセッサにおいて、前記特定のターゲット命令のプリフェッチ動作は、前記値の評価結果に基づいて、プロセッサにより実行可能であることを特徴とするプロセッサ。
- 請求項19または20に記載のプロセッサにおいて、前記値が非零のとき真と評価され、前記値が零のとき偽と評価されることを特徴とするプロセッサ。
- 請求項19から21のいずれかに記載のプロセッサにおいて、前記条件付プリフェッチ命令は、プロセッサのハードウエアパイプラインへの命令のプリロードをソフトウエアから制御することを許可することを特徴とするプロセッサ。
- 請求項19から22のいずれかに記載のプロセッサにおいて、前記条件付プリフェッチ命令の第1部分に含まれる評価のための前記値は、前記分岐命令を過去反復したときに分岐が発生したか否かを示す情報を含むことを特徴とするプロセッサ。
- 請求項12から18のいずれかに記載のコンピュータプログラムをコンピュータから読み取り可能に格納したことを特徴とする記録媒体。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US65015705P | 2005-02-04 | 2005-02-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006216040A JP2006216040A (ja) | 2006-08-17 |
JP4134179B2 true JP4134179B2 (ja) | 2008-08-13 |
Family
ID=36979187
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006020403A Expired - Fee Related JP4134179B2 (ja) | 2005-02-04 | 2006-01-30 | ソフトウエアによる動的予測方法および装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US7627740B2 (ja) |
JP (1) | JP4134179B2 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8533437B2 (en) * | 2009-06-01 | 2013-09-10 | Via Technologies, Inc. | Guaranteed prefetch instruction |
US8595471B2 (en) * | 2010-01-22 | 2013-11-26 | Via Technologies, Inc. | Executing repeat load string instruction with guaranteed prefetch microcode to prefetch into cache for loading up to the last value in architectural register |
CN102736894B (zh) * | 2011-04-01 | 2017-10-24 | 中兴通讯股份有限公司 | 一种跳转指令编码的方法和系统 |
CA2844034C (en) | 2011-08-04 | 2019-07-16 | Toray Industries, Inc. | Pharmaceutical composition for treatment and/or prophylaxis of cancer |
EP2798470A4 (en) * | 2011-12-29 | 2015-07-15 | Intel Corp | PRE-ACQUISITION OF ANTEMOTE BY MANAGED INSTRUCTION |
US10628163B2 (en) * | 2014-04-17 | 2020-04-21 | Texas Instruments Incorporated | Processor with variable pre-fetch threshold |
US10540180B2 (en) * | 2014-12-07 | 2020-01-21 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Reconfigurable processors and methods for collecting computer program instruction execution statistics |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5848432A (en) * | 1993-08-05 | 1998-12-08 | Hitachi, Ltd. | Data processor with variable types of cache memories |
US5732242A (en) * | 1995-03-24 | 1998-03-24 | Silicon Graphics, Inc. | Consistently specifying way destinations through prefetching hints |
US5742804A (en) * | 1996-07-24 | 1998-04-21 | Institute For The Development Of Emerging Architectures, L.L.C. | Instruction prefetch mechanism utilizing a branch predict instruction |
US5949995A (en) * | 1996-08-02 | 1999-09-07 | Freeman; Jackie Andrew | Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code |
US6282663B1 (en) * | 1997-01-22 | 2001-08-28 | Intel Corporation | Method and apparatus for performing power management by suppressing the speculative execution of instructions within a pipelined microprocessor |
US6092188A (en) * | 1997-12-23 | 2000-07-18 | Intel Corporation | Processor and instruction set with predict instructions |
US6151672A (en) * | 1998-02-23 | 2000-11-21 | Hewlett-Packard Company | Methods and apparatus for reducing interference in a branch history table of a microprocessor |
US6611910B2 (en) * | 1998-10-12 | 2003-08-26 | Idea Corporation | Method for processing branch operations |
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 |
US6560693B1 (en) * | 1999-12-10 | 2003-05-06 | International Business Machines Corporation | Branch history guided instruction/data prefetching |
US6877089B2 (en) * | 2000-12-27 | 2005-04-05 | International Business Machines Corporation | Branch prediction apparatus and process for restoring replaced branch history for use in future branch predictions for an executing program |
US7234040B2 (en) * | 2002-01-24 | 2007-06-19 | University Of Washington | Program-directed cache prefetching for media processors |
-
2006
- 2006-01-30 JP JP2006020403A patent/JP4134179B2/ja not_active Expired - Fee Related
- 2006-01-31 US US11/344,403 patent/US7627740B2/en active Active
-
2009
- 2009-08-13 US US12/540,522 patent/US8250344B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20090313456A1 (en) | 2009-12-17 |
JP2006216040A (ja) | 2006-08-17 |
US8250344B2 (en) | 2012-08-21 |
US7627740B2 (en) | 2009-12-01 |
US20060212680A1 (en) | 2006-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7487340B2 (en) | Local and global branch prediction information storage | |
JP5198879B2 (ja) | ループ末尾に置かれた分岐により分岐履歴レジスタの更新を抑制すること | |
JP5722396B2 (ja) | 明示的サブルーチンコールの分岐予測動作をエミュレートするための方法および装置 | |
US7444501B2 (en) | Methods and apparatus for recognizing a subroutine call | |
US20110320787A1 (en) | Indirect Branch Hint | |
US20070288733A1 (en) | Early Conditional Branch Resolution | |
JP2007515715A (ja) | 命令キャッシュからラベル境界上のトレースキャッシュに遷移させる方法 | |
KR20100132032A (ko) | 실행되는 명령의 결과를 선택적으로 커밋하는 시스템 및 방법 | |
JP2011100466A5 (ja) | ||
JP4134179B2 (ja) | ソフトウエアによる動的予測方法および装置 | |
US8301871B2 (en) | Predicated issue for conditional branch instructions | |
JP2012123810A (ja) | 復帰スタックを管理する方法および装置 | |
US20070288732A1 (en) | Hybrid Branch Prediction Scheme | |
US20190079771A1 (en) | Lookahead out-of-order instruction fetch apparatus for microprocessors | |
US20070288731A1 (en) | Dual Path Issue for Conditional Branch Instructions | |
US20080162908A1 (en) | structure for early conditional branch resolution | |
US20070288734A1 (en) | Double-Width Instruction Queue for Instruction Execution | |
KR20070108936A (ko) | 조건부 명령어가 실행되지 않을 경우 소스 오퍼랜드를대기하는 것을 중지하는 방법 | |
US20080162905A1 (en) | Design structure for double-width instruction queue for instruction execution | |
US20060259752A1 (en) | Stateless Branch Prediction Scheme for VLIW Processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080520 |
|
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: 20080527 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080602 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110606 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4134179 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110606 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120606 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120606 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130606 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |