KR102554799B1 - 분기 명령어의 유형에 기초한 사전 분기 예측의 선택적 수행 - Google Patents

분기 명령어의 유형에 기초한 사전 분기 예측의 선택적 수행 Download PDF

Info

Publication number
KR102554799B1
KR102554799B1 KR1020217001130A KR20217001130A KR102554799B1 KR 102554799 B1 KR102554799 B1 KR 102554799B1 KR 1020217001130 A KR1020217001130 A KR 1020217001130A KR 20217001130 A KR20217001130 A KR 20217001130A KR 102554799 B1 KR102554799 B1 KR 102554799B1
Authority
KR
South Korea
Prior art keywords
branch
block
instruction
prediction
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
Application number
KR1020217001130A
Other languages
English (en)
Korean (ko)
Other versions
KR20210011060A (ko
Inventor
마리우스 에버스
아파르나 티아가라얀
아쇼크 티. 벤카타차
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority to KR1020237023028A priority Critical patent/KR20230110649A/ko
Publication of KR20210011060A publication Critical patent/KR20210011060A/ko
Application granted granted Critical
Publication of KR102554799B1 publication Critical patent/KR102554799B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

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)
KR1020217001130A 2018-06-18 2019-06-13 분기 명령어의 유형에 기초한 사전 분기 예측의 선택적 수행 Active KR102554799B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237023028A KR20230110649A (ko) 2018-06-18 2019-06-13 분기 명령어의 유형에 기초한 사전 분기 예측의 선택적수행

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/011,010 US10732979B2 (en) 2018-06-18 2018-06-18 Selectively performing ahead branch prediction based on types of branch instructions
US16/011,010 2018-06-18
PCT/US2019/036967 WO2019245846A1 (en) 2018-06-18 2019-06-13 Selectively performing ahead branch prediction based on types of branch instructions

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237023028A Division KR20230110649A (ko) 2018-06-18 2019-06-13 분기 명령어의 유형에 기초한 사전 분기 예측의 선택적수행

Publications (2)

Publication Number Publication Date
KR20210011060A KR20210011060A (ko) 2021-01-29
KR102554799B1 true KR102554799B1 (ko) 2023-07-13

Family

ID=68839308

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217001130A Active KR102554799B1 (ko) 2018-06-18 2019-06-13 분기 명령어의 유형에 기초한 사전 분기 예측의 선택적 수행
KR1020237023028A Withdrawn KR20230110649A (ko) 2018-06-18 2019-06-13 분기 명령어의 유형에 기초한 사전 분기 예측의 선택적수행

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020237023028A Withdrawn KR20230110649A (ko) 2018-06-18 2019-06-13 분기 명령어의 유형에 기초한 사전 분기 예측의 선택적수행

Country Status (6)

Country Link
US (2) US10732979B2 (https=)
EP (1) EP3807758A4 (https=)
JP (1) JP7160956B2 (https=)
KR (2) KR102554799B1 (https=)
CN (1) CN112368677B (https=)
WO (1) WO2019245846A1 (https=)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11086629B2 (en) * 2018-11-09 2021-08-10 Arm Limited Misprediction of predicted taken branches in a data processing apparatus
US10922082B2 (en) * 2019-03-05 2021-02-16 Arm Limited Branch predictor
US11269642B2 (en) * 2019-09-20 2022-03-08 Microsoft Technology Licensing, Llc Dynamic hammock branch training for branch hammock detection in an instruction stream executing in a processor
US11138014B2 (en) * 2020-01-29 2021-10-05 Arm Limited Branch predictor
US11249764B2 (en) 2020-04-14 2022-02-15 Shanghai Zhaoxin Semiconductor Co., Ltd. Flushing in a microprocessor with multi-step ahead branch predictor and a fetch target queue
US12153927B2 (en) 2020-06-01 2024-11-26 Advanced Micro Devices, Inc. Merged branch target buffer entries
US20220129763A1 (en) * 2020-10-23 2022-04-28 Intel Corporation High confidence multiple branch offset predictor
US12067399B2 (en) 2022-02-01 2024-08-20 Apple Inc. Conditional instructions prediction
CN116737240B (zh) * 2022-03-02 2024-08-06 腾讯科技(深圳)有限公司 分支预测方法、装置、处理器、介质及设备
KR102781288B1 (ko) * 2022-05-11 2025-03-14 서울시립대학교 산학협력단 명령어를 처리하는 방법 및 이를 위한 프로세서 모듈
CN115934171B (zh) * 2023-01-16 2023-05-16 北京微核芯科技有限公司 为多指令调度分支预测器的方法及装置
US12578965B2 (en) 2023-07-25 2026-03-17 Apple Inc. Biased indirect control transfer prediction
US12450068B2 (en) 2023-07-25 2025-10-21 Apple Inc. Biased conditional instruction prediction
WO2026084363A1 (ko) * 2024-10-14 2026-04-23 삼성전자 주식회사 브랜치 예측을 수행하는 전자 장치 및 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060149944A1 (en) 2004-12-02 2006-07-06 International Business Machines Corporation Method, apparatus, and computer program product for selectively prohibiting speculative conditional branch execution
US20140019734A1 (en) 2010-08-05 2014-01-16 Arm Limited Data processing apparatus and method using checkpointing

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5903772A (en) * 1993-10-29 1999-05-11 Advanced Micro Devices, Inc. Plural operand buses of intermediate widths coupling to narrower width integer and wider width floating point superscalar processing core
US5574928A (en) * 1993-10-29 1996-11-12 Advanced Micro Devices, Inc. Mixed integer/floating point processor core for a superscalar microprocessor with a plurality of operand buses for transferring operand segments
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
US5903750A (en) * 1996-11-20 1999-05-11 Institute For The Development Of Emerging Architectures, L.L.P. Dynamic branch prediction for branch instructions with multiple targets
US6957327B1 (en) * 1998-12-31 2005-10-18 Stmicroelectronics, Inc. Block-based branch target buffer
US6385719B1 (en) * 1999-06-30 2002-05-07 International Business Machines Corporation Method and apparatus for synchronizing parallel pipelines in a superscalar microprocessor
US6598152B1 (en) * 1999-11-08 2003-07-22 International Business Machines Corporation Increasing the overall prediction accuracy for multi-cycle branch prediction and apparatus by enabling quick recovery
US6910124B1 (en) * 2000-05-02 2005-06-21 International Business Machines Corporation Apparatus and method for recovering a link stack from mis-speculation
US7844806B2 (en) * 2008-01-31 2010-11-30 Applied Micro Circuits Corporation Global history branch prediction updating responsive to taken branches
US7979675B2 (en) * 2009-02-12 2011-07-12 Via Technologies, Inc. Pipelined microprocessor with fast non-selective correct conditional branch instruction resolution
GB2506462B (en) * 2013-03-13 2014-08-13 Imagination Tech Ltd Indirect branch prediction
US9619230B2 (en) 2013-06-28 2017-04-11 International Business Machines Corporation Predictive fetching and decoding for selected instructions
GB2528676B (en) * 2014-07-25 2016-10-26 Imagination Tech Ltd Conditional Branch Prediction Using A Long History
US9715390B2 (en) * 2015-04-19 2017-07-25 Centipede Semi Ltd. Run-time parallelization of code execution based on an approximate register-access specification
US20160350116A1 (en) * 2015-05-29 2016-12-01 Qualcomm Incorporated Mitigating wrong-path effects in branch prediction
US10437597B2 (en) 2015-09-09 2019-10-08 International Business Machines Corporation Silent mode and resource reassignment in branch prediction logic
US10223090B2 (en) 2015-10-23 2019-03-05 Yong-Kyu Jung Branch look-ahead system apparatus and method for branch look-ahead microprocessors
US10664280B2 (en) * 2015-11-09 2020-05-26 MIPS Tech, LLC Fetch ahead branch target buffer
US10592248B2 (en) * 2016-08-30 2020-03-17 Advanced Micro Devices, Inc. Branch target buffer compression

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060149944A1 (en) 2004-12-02 2006-07-06 International Business Machines Corporation Method, apparatus, and computer program product for selectively prohibiting speculative conditional branch execution
US20140019734A1 (en) 2010-08-05 2014-01-16 Arm Limited Data processing apparatus and method using checkpointing

Also Published As

Publication number Publication date
CN112368677B (zh) 2022-07-15
JP7160956B2 (ja) 2022-10-25
US20210034370A1 (en) 2021-02-04
KR20230110649A (ko) 2023-07-24
EP3807758A1 (en) 2021-04-21
WO2019245846A1 (en) 2019-12-26
US11416256B2 (en) 2022-08-16
US10732979B2 (en) 2020-08-04
EP3807758A4 (en) 2022-02-23
KR20210011060A (ko) 2021-01-29
CN112368677A (zh) 2021-02-12
JP2021527892A (ja) 2021-10-14
US20190384612A1 (en) 2019-12-19

Similar Documents

Publication Publication Date Title
KR102554799B1 (ko) 분기 명령어의 유형에 기초한 사전 분기 예측의 선택적 수행
KR102911257B1 (ko) 예측 실패 복구에 대한 레이턴시를 줄이기 위한 이차적 분기 예측 저장
EP3850480B1 (en) Controlling accesses to a branch prediction unit for sequences of fetch groups
KR20210019584A (ko) 다중 테이블 분기 타겟 버퍼
CN114761922A (zh) 指令高速缓存预取限流
JP7793552B2 (ja) 命令アドレス変換及び命令プリフェッチエンジン
CN114661442B (zh) 处理方法及装置、处理器、电子设备及存储介质
JP2016536665A (ja) 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法
CN116324715A (zh) 用于分支预测重定向的备用路径
CN112470122B (zh) 具有提前返回预测的分支目标缓冲器
US8443174B2 (en) Processor and method of performing speculative load operations of the processor
KR20240067941A (ko) 예비 디렉토리 항목에 특정 데이터 패턴의 표시 저장
KR20240089314A (ko) 이력 기반 선택적 캐시 라인 무효화 요청
KR20240067942A (ko) 캐시 라인 수정 억제

Legal Events

Date Code Title Description
PA0105 International application

St.27 status event code: A-0-1-A10-A15-nap-PA0105

E13-X000 Pre-grant limitation requested

St.27 status event code: A-2-3-E10-E13-lim-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

A201 Request for examination
A302 Request for accelerated examination
P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

PA0302 Request for accelerated examination

St.27 status event code: A-1-2-D10-D17-exm-PA0302

St.27 status event code: A-1-2-D10-D16-exm-PA0302

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

T11-X000 Administrative time limit extension requested

St.27 status event code: U-3-3-T10-T11-oth-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

PA0104 Divisional application for international application

St.27 status event code: A-0-1-A10-A18-div-PA0104

St.27 status event code: A-0-1-A10-A16-div-PA0104

PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U12-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601