KR100347865B1 - 어드레스 트레이스를 이용한 분기 예측 방법 - Google Patents
어드레스 트레이스를 이용한 분기 예측 방법 Download PDFInfo
- Publication number
- KR100347865B1 KR100347865B1 KR1019990050627A KR19990050627A KR100347865B1 KR 100347865 B1 KR100347865 B1 KR 100347865B1 KR 1019990050627 A KR1019990050627 A KR 1019990050627A KR 19990050627 A KR19990050627 A KR 19990050627A KR 100347865 B1 KR100347865 B1 KR 100347865B1
- Authority
- KR
- South Korea
- Prior art keywords
- routine
- address
- branch prediction
- instructions
- trace
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000013500 data storage Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000004519 manufacturing process Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000003252 repetitive effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000002902 bimodal effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
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/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- 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
-
- 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/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- 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/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
Description
Claims (4)
- 트레이스 캐쉬를 사용하는 분기 예측 방법에 있어서:반복되지 않는 명령어들로 이루어진 루틴이 실행되는 경우, 실행되는 명령의 순서에 따라 각각의 명령어에 대응되는 어드레스를 상기 트레이스 캐쉬에 저장하는 단계;반복되는 명령어들로 이루어진 루틴이 실행되는 경우, 상기 루틴이 시작되는 어드레스, 상기 루틴이 종료되는 어드레스, 그리고 상기 루틴의 현재 억세스 횟수 및 상기 루틴의 전체 억세스 횟수를 카운트하여 저장하되, 상기 루틴의 현재 억세스 횟수 및 상기 루틴의 전체 억세스 횟수는 상기 트레이스 캐쉬의 루프 카운터들에 의해서 카운트되는 단계; 그리고상기 루프 카운터들에 의해 카운트된 계수들을 비교하여, 상기 두 계수가 서로 같을 때 상기 루틴 다음에 실행될 루틴의 시작 어드레스를 어드레싱하는 단계를 포함하는 것을 특징으로 하는 어드레스 트레이스를 이용한 분기 예측 방법.
- 삭제
- 삭제
- 제 1 항에 있어서,상기 분기 예측 방법은,잘못된 분기 예측이 발생된 경우, 상기 루프 카운터를 재구성하는 단계를 포함하되, 상기 루프 카운터는 가장 최근에 업데이트 된 루프 카운트를 사용하는 것을 특징으로 하는 어드레스 트레이스를 이용한 분기 예측 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019990050627A KR100347865B1 (ko) | 1999-11-15 | 1999-11-15 | 어드레스 트레이스를 이용한 분기 예측 방법 |
US09/714,325 US6988190B1 (en) | 1999-11-15 | 2000-11-15 | Method of an address trace cache storing loop control information to conserve trace cache area |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019990050627A KR100347865B1 (ko) | 1999-11-15 | 1999-11-15 | 어드레스 트레이스를 이용한 분기 예측 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20010046738A KR20010046738A (ko) | 2001-06-15 |
KR100347865B1 true KR100347865B1 (ko) | 2002-08-09 |
Family
ID=19620140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019990050627A KR100347865B1 (ko) | 1999-11-15 | 1999-11-15 | 어드레스 트레이스를 이용한 분기 예측 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6988190B1 (ko) |
KR (1) | KR100347865B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7363428B2 (en) | 2003-07-01 | 2008-04-22 | Samsung Electronics Co., Ltd. | Microprocessor with hot routine memory and method of operation |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7302557B1 (en) * | 1999-12-27 | 2007-11-27 | Impact Technologies, Inc. | Method and apparatus for modulo scheduled loop execution in a processor architecture |
US7251721B1 (en) * | 2001-11-05 | 2007-07-31 | Verisilicon Holdings (Cayman Islands) Co. Ltd. | Conditional link pointer register sets marking the beginning and end of a conditional instruction block where each set corresponds to a single stage of a pipeline that moves link pointers through each corresponding register of said register sets as instructions move through the pipeline |
US7363467B2 (en) * | 2002-01-03 | 2008-04-22 | Intel Corporation | Dependence-chain processing using trace descriptors having dependency descriptors |
JP3804941B2 (ja) * | 2002-06-28 | 2006-08-02 | 富士通株式会社 | 命令フェッチ制御装置 |
US7260705B2 (en) * | 2003-06-26 | 2007-08-21 | Intel Corporation | Apparatus to implement mesocode |
US7366885B1 (en) * | 2004-06-02 | 2008-04-29 | Advanced Micro Devices, Inc. | Method for optimizing loop control of microcoded instructions |
US20060036834A1 (en) * | 2004-08-13 | 2006-02-16 | Subramaniam Maiyuran | Trace reuse |
US7953933B1 (en) | 2005-09-28 | 2011-05-31 | Oracle America, Inc. | Instruction cache, decoder circuit, basic block cache circuit and multi-block cache circuit |
US8032710B1 (en) | 2005-09-28 | 2011-10-04 | Oracle America, Inc. | System and method for ensuring coherency in trace execution |
US8051247B1 (en) | 2005-09-28 | 2011-11-01 | Oracle America, Inc. | Trace based deallocation of entries in a versioning cache circuit |
US7849292B1 (en) | 2005-09-28 | 2010-12-07 | Oracle America, Inc. | Flag optimization of a trace |
US8024522B1 (en) | 2005-09-28 | 2011-09-20 | Oracle America, Inc. | Memory ordering queue/versioning cache circuit |
US7949854B1 (en) | 2005-09-28 | 2011-05-24 | Oracle America, Inc. | Trace unit with a trace builder |
US8037285B1 (en) | 2005-09-28 | 2011-10-11 | Oracle America, Inc. | Trace unit |
US8015359B1 (en) | 2005-09-28 | 2011-09-06 | Oracle America, Inc. | Method and system for utilizing a common structure for trace verification and maintaining coherency in an instruction processing circuit |
US7953961B1 (en) | 2005-09-28 | 2011-05-31 | Oracle America, Inc. | Trace unit with an op path from a decoder (bypass mode) and from a basic-block builder |
US8499293B1 (en) | 2005-09-28 | 2013-07-30 | Oracle America, Inc. | Symbolic renaming optimization of a trace |
US7937564B1 (en) | 2005-09-28 | 2011-05-03 | Oracle America, Inc. | Emit vector optimization of a trace |
US7783863B1 (en) * | 2005-09-28 | 2010-08-24 | Oracle America, Inc. | Graceful degradation in a trace-based processor |
US7987342B1 (en) | 2005-09-28 | 2011-07-26 | Oracle America, Inc. | Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer |
US7966479B1 (en) * | 2005-09-28 | 2011-06-21 | Oracle America, Inc. | Concurrent vs. low power branch prediction |
US7870369B1 (en) * | 2005-09-28 | 2011-01-11 | Oracle America, Inc. | Abort prioritization in a trace-based processor |
US8019944B1 (en) | 2005-09-28 | 2011-09-13 | Oracle America, Inc. | Checking for a memory ordering violation after a speculative cache write |
US7877630B1 (en) | 2005-09-28 | 2011-01-25 | Oracle America, Inc. | Trace based rollback of a speculatively updated cache |
US8370576B1 (en) | 2005-09-28 | 2013-02-05 | Oracle America, Inc. | Cache rollback acceleration via a bank based versioning cache ciruit |
US7606975B1 (en) | 2005-09-28 | 2009-10-20 | Sun Microsystems, Inc. | Trace cache for efficient self-modifying code processing |
US20070094663A1 (en) * | 2005-10-25 | 2007-04-26 | Anbarani Hossein A | Flexible ordered execution mechanism for multi-threaded processors |
US7797517B1 (en) | 2005-11-18 | 2010-09-14 | Oracle America, Inc. | Trace optimization via fusing operations of a target architecture operation set |
EP1870787B1 (de) * | 2006-06-20 | 2010-04-14 | Siemens Aktiengesellschaft | Verfahren zur Überwachung eines zyklischen Steuerungsprogramms |
US8010745B1 (en) | 2006-09-27 | 2011-08-30 | Oracle America, Inc. | Rolling back a speculative update of a non-modifiable cache line |
US8370609B1 (en) | 2006-09-27 | 2013-02-05 | Oracle America, Inc. | Data cache rollbacks for failed speculative traces with memory operations |
WO2008155847A1 (ja) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 処理装置 |
US9110683B2 (en) * | 2008-08-15 | 2015-08-18 | Apple Inc. | Predicting branches for vector partitioning loops when processing vector instructions |
KR101086457B1 (ko) * | 2009-12-28 | 2011-11-25 | 전남대학교산학협력단 | 저 전력 트레이스 캐쉬 및 명령어 세트 예측기를 구비한 프로세서 시스템 |
US8762783B2 (en) * | 2010-06-24 | 2014-06-24 | International Business Machines Corporation | Error identification |
US9792224B2 (en) * | 2015-10-23 | 2017-10-17 | Intel Corporation | Reducing latency by persisting data relationships in relation to corresponding data in persistent memory |
US11099995B2 (en) | 2018-03-28 | 2021-08-24 | Intel Corporation | Techniques for prefetching data to a first level of memory of a hierarchical arrangement of memory |
US11169810B2 (en) | 2018-12-28 | 2021-11-09 | Samsung Electronics Co., Ltd. | Micro-operation cache using predictive allocation |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07262006A (ja) * | 1994-02-04 | 1995-10-13 | Motorola Inc | 分岐ターゲットアドレスキャッシュを備えたデータプロセッサ |
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 |
KR19990016837A (ko) * | 1997-08-20 | 1999-03-15 | 윤종용 | 어드레스 저장 및 트레이스 회로 |
KR19990069108A (ko) * | 1998-02-04 | 1999-09-06 | 윤종용 | 분기 예측 장치 |
US5978906A (en) * | 1996-11-19 | 1999-11-02 | Advanced Micro Devices, Inc. | Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1993017385A1 (en) | 1992-02-27 | 1993-09-02 | Intel Corporation | Dynamic flow instruction cache memory |
JPH07160585A (ja) * | 1993-12-13 | 1995-06-23 | Hitachi Ltd | 低電力データ処理装置 |
GB2323190B (en) * | 1997-03-14 | 2001-09-19 | Nokia Mobile Phones Ltd | Executing nested loops |
US6347383B1 (en) * | 1999-03-31 | 2002-02-12 | International Business Machines Corporation | Method and system for address trace compression through loop detection and reduction |
US6304962B1 (en) * | 1999-06-02 | 2001-10-16 | International Business Machines Corporation | Method and apparatus for prefetching superblocks in a computer processing system |
US6598155B1 (en) * | 2000-01-31 | 2003-07-22 | Intel Corporation | Method and apparatus for loop buffering digital signal processing instructions |
-
1999
- 1999-11-15 KR KR1019990050627A patent/KR100347865B1/ko active IP Right Grant
-
2000
- 2000-11-15 US US09/714,325 patent/US6988190B1/en not_active Expired - Lifetime
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07262006A (ja) * | 1994-02-04 | 1995-10-13 | Motorola Inc | 分岐ターゲットアドレスキャッシュを備えたデータプロセッサ |
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 |
US5978906A (en) * | 1996-11-19 | 1999-11-02 | Advanced Micro Devices, Inc. | Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions |
KR19990016837A (ko) * | 1997-08-20 | 1999-03-15 | 윤종용 | 어드레스 저장 및 트레이스 회로 |
KR19990069108A (ko) * | 1998-02-04 | 1999-09-06 | 윤종용 | 분기 예측 장치 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7363428B2 (en) | 2003-07-01 | 2008-04-22 | Samsung Electronics Co., Ltd. | Microprocessor with hot routine memory and method of operation |
Also Published As
Publication number | Publication date |
---|---|
US6988190B1 (en) | 2006-01-17 |
KR20010046738A (ko) | 2001-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100347865B1 (ko) | 어드레스 트레이스를 이용한 분기 예측 방법 | |
McFarling et al. | Reducing the cost of branches | |
KR100411529B1 (ko) | 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치 | |
US7437537B2 (en) | Methods and apparatus for predicting unaligned memory access | |
US7594102B2 (en) | Method and apparatus for vector execution on a scalar machine | |
EP0450658B1 (en) | Parallel pipelined instruction processing system for very long instruction word | |
US6263427B1 (en) | Branch prediction mechanism | |
JP3602542B2 (ja) | スーパースカラマイクロプロセッサにおける分岐予測正確度向上のための装置および方法 | |
JPH0628184A (ja) | ブランチ予測方法及びブランチプロセッサ | |
US5187793A (en) | Processor with hierarchal memory and using meta-instructions for software control of loading, unloading and execution of machine instructions stored in the cache | |
US7971040B2 (en) | Method and device for saving and restoring a set of registers of a microprocessor in an interruptible manner | |
US9747216B2 (en) | Computer processor employing byte-addressable dedicated memory for operand storage | |
JP2009536770A (ja) | ブロックに基づく分岐先アドレスキャッシュ | |
US7290255B2 (en) | Autonomic method and apparatus for local program code reorganization using branch count per instruction hardware | |
EP1974254B1 (en) | Early conditional selection of an operand | |
Wallace et al. | Modeled and measured instruction fetching performance for superscalar microprocessors | |
KR19990013383A (ko) | 파이프라인 기계에서의 어드레스 파이프라인을 위한 방법 및장치 | |
JP2001273138A (ja) | プログラム変換装置および方法 | |
US20070022279A1 (en) | Compressing and accessing a microcode ROM | |
US7346737B2 (en) | Cache system having branch target address cache | |
US20020087852A1 (en) | Method and apparatus for predicting branches using a meta predictor | |
US9747238B2 (en) | Computer processor employing split crossbar circuit for operand routing and slot-based organization of functional units | |
KR100888675B1 (ko) | 임베디드 코어에서 멀티 쓰레드 실행을 위해 확장된프로세서 및 임베디드 코어에서 멀티 쓰레드 실행 방법 | |
de Alba et al. | Characterization and evaluation of hardware loop unrolling | |
Huang et al. | Improving Instruction-Level Parallelism by Exploiting Global Value Locality |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130701 Year of fee payment: 12 |
|
FPAY | Annual fee payment |
Payment date: 20140630 Year of fee payment: 13 |
|
FPAY | Annual fee payment |
Payment date: 20150630 Year of fee payment: 14 |
|
FPAY | Annual fee payment |
Payment date: 20160630 Year of fee payment: 15 |
|
FPAY | Annual fee payment |
Payment date: 20170630 Year of fee payment: 16 |
|
FPAY | Annual fee payment |
Payment date: 20180629 Year of fee payment: 17 |