KR920001321A - 고속 프로세서에서의 브랜치 처리 방법 및 장치 - Google Patents

고속 프로세서에서의 브랜치 처리 방법 및 장치 Download PDF

Info

Publication number
KR920001321A
KR920001321A KR1019910010880A KR910010880A KR920001321A KR 920001321 A KR920001321 A KR 920001321A KR 1019910010880 A KR1019910010880 A KR 1019910010880A KR 910010880 A KR910010880 A KR 910010880A KR 920001321 A KR920001321 A KR 920001321A
Authority
KR
South Korea
Prior art keywords
instruction
jump instruction
address
jump
executing
Prior art date
Application number
KR1019910010880A
Other languages
English (en)
Other versions
KR100190252B1 (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 원본미기재
Publication of KR920001321A publication Critical patent/KR920001321A/ko
Application granted granted Critical
Publication of KR100190252B1 publication Critical patent/KR100190252B1/ko

Links

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
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/3846Speculative instruction execution using static prediction, e.g. branch taken strategy

Abstract

내용 없음

Description

고속 프로세서에서의 브랜치 처리 방법 및 장치
본 내용은 요부공개 건이므로 전문내용을 수록하지 않았음
제1도는 본 발명의 특징을 이용할 수 있는 cpu를 채용한 컴퓨터 시스템의 전기 블록도,
제2도는 제1도의 프로세서에 사용되는 데이타 형태에 관한 도면.

Claims (20)

  1. 순차 어드레스로부터의 명령을 메모리에 추출하고 상기 명령을 실행하기 이전에 상기 명령을 디코드하는 단계와; 상기 추출된 명령의 점프 명령을 검출하고, 상기 점프 명령으로부터 상기 점프 명령의 어드레스와 예상 타켓 어드레스를 포함하는 레지스터의 어드레스를 추출한는 단계와; 상기 점프 명령이 실행되긴 전에, 상기 순차 명령이라기 보다는 상기 예상된 타켓 어드레스로부터 명령을 미리 추출하는 단계를 포함한 것을 특징으로 하는 파이프 라인 프로세서의 동작 방법.
  2. 제1항에 있어서, 상기 명령들은 고정된 길이로 구성되고, 상기 점프 명령은 op코드와, 점프명령이 실행될때 프로그램 카운터를 기억하는 제1레지스터의 어드레스와, 점프 명령이 실행될때 프로그램 카운터를 로드하는 타켓의 상기 어드레스에 기억된 제2레지스터의 어드레스와, 실행시 부분적으로 사용된 변위 필드를 포함한 것을 특징으로 하는 파이프 라인 프로세서의 동작 방법.
  3. 제1항에 있어서, 상기 예상된 타켓 어드레스는 상기 순차 명령을 컴파일 할때 상기 명령에 기억되는 것을 특징으로 하는 파이프 라인 프로세서의 동작 방법.
  4. 제2항에 있어서, 상기 변위 필드는 점프 명령, 서브 루틴으로의 점프 명령 혹은 복귀 명령으로서 상기 점프 명령을 지시하는 인디케이터를 포함한 것을 특징으로 하는 파이프 라인 프로세서의 동작 방법.
  5. 제1항에 있어서, 상기 점프 명령의 실행시 예상된 스택에 프로그램 카운터를 기억하는 단계를 포함한 것을 특징으로 하는 파이프 라인 프로세서의 동작 방법.
  6. 제4항에 있어서, 복귀 명령을 서브 루틴 명령으로부터 실행하기 이전에 상기 예상스택으로부터의 어드레스를 사용한 명령을 미리 추출하는 단계를 포함한 것을 특징으로 하는 파이프 라인 프로세서의 동작방법.
  7. 제4항에 있어서, 서브 루틴 명령으로 점프명령을 실행할때 예상 스택으로 프로그램 카운터를 푸시한는 단계를 포함한 것을 특징으로 하는 파이프 라인 프로세서의 동작 방법.
  8. op코드와, 점프 명령이 실행될때 프로그램 카운터를 기억하는 제1 레시스터의 어드레스와, 점프 명령이 실행될때 프로그램 카운터를 로드하는 타켓 어드레스에 기억된 제2레지스터의 어드레스와, 실행히 부분적으로 사용된 변위 필드를 갖는 점프 명령을 생성하는 단계와; 상기 점프 명령이 실행되기이전에 상기 프로세서에 의해 선택적으로 미리 추출된 예상 타켓 어드레스를 상기 변위 필드에 기억시키는 단계를 포함한 것을 특징으로 하는 고정된 길이의 명령을 갖는 프로세서의 동작 방법.
  9. 제8항에 있어서, 상기 기억 단계는 상기 점프 명령을 포함하는 프로그램을 컴파일할때 수행되는 것을 특징으로 하는 프로세서의 동작 방법.
  10. 제8항에 있어서, 상기 기억 단계는 점프 명령 서브 루틴으로의 점프명령 혹은 복귀명령으로서의 상기 점프 명령을 지시하는 인디케이터를 상기 변위 필드에 기억하는 단계를 포함한 것을 특징으로 하는 프로세서의 동작 방법.
  11. 제8항에 있어서, 상기 점프 명령을 실행할때 예상 스택에 프로그램 카운터를 기억하는 단계를 포함한 것을 특징으로 하는 프로세서의 동작 방법.
  12. 제11항에 있어서, 서브 루틴 명령으로부터의 복귀 명령을 실행하기 이전에 상기 예상 스택으로부터의 어드레스를 사용하는 명령을 미리 추출하는 단계를 포함한 것을 특징으로 하는 프로세서의 동작 방법.
  13. 제10항에 있어서, 서브 루틴 명령으로 점프 명령을 실행할때 예상스택으로 프로그램 카운터를 푸시하는 단계를 포함한 것을 특징으로 하는 프로세서의 동작 방법.
  14. 순차 어드레서로부터의 명령을 메모리에 추출하고 상기 명령을 실행하기 이전에 상기 명령을 디코드하는 수단과; 상기 추출된 명령에서 점프 명령을 검출하고, 상기 점프 명령의 타켓 어드레스를 포함하는 레지스터의 어드레스를 상기 점프 명령으로 부터 추출하여, 예상된 타켓 어드레스를 추출하는 수단과; 상기 점프 명령이 실행되기 전에, 상기 순차 어드레스라기 보다는 상기 예상된 타켓 어드레스에서의 명령을 메모리로부터 미리 추출하는 수단을 포함한 것을 특징으로 하는 프로세서.
  15. 제14항에 있어서, 상기 명령들은 고정된 길이로 구성되고, 상기 점프 명령은 op코드와, 점프 명령이 실행될 때 프로그램 카운터를 기억하는 제1레지스터의 어드레스와, 점프 명령이 실행될때 프로그램 카운터를 로드하는 타켓의 상기 어드레스에 기억된 제2레지스터의 어드레스와, 점프 명령의 실행시 부분적으로 사용된 변위 필드를 포함한 것을 특징으로 하는 프로세서.
  16. 제14항에 있어서, 상기 예상된 타켓 어드레스는 상기 순차 명령을 컴파일할때 상기 점프 명령에 기억된 것을 특징으로 하는 프로세서.
  17. 제15항에 있어서, 상기 변위 필드는 점프 명령, 서브 루틴으로의 점프 명령 혹은 복귀 명령으로서 상기 점프 명령을 지시한 인디케이터를 포함한 것을 특징으로 하는 프로세서.
  18. 제14항에 있어서, 상기 점프 명령의 실행시 예상 스택에 프로그램 카운터를 기억한 수단을 포함한 것을 특징으로 하는 프로세서.
  19. 제18항에 있어서, 서브 루틴 명령으로부터의 복귀 명령을 실행하기 이전에 상기 예상 스택으로부터의 어드레스를 사용하는 명령을 미리 추출하는 수단을 포함한 것을 특징으로 하는 프로세서.
  20. 제14항에 있어서, 서브 루틴 명령으로 점프 명령을 실행할때 예상 스택으로 프로그램 카운터를 푸시하는 수단을 포함한 것을 특징으로 하는 프로세서.
    ※ 참고사항 : 최초출원 내용에 의하여 공개하는 것임.
KR1019910010880A 1990-06-29 1991-06-28 고속 프로세서에서의 브랜치 처리 방법 및 장치 KR100190252B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US54762990A 1990-06-29 1990-06-29
US547,629 1990-06-29

Publications (2)

Publication Number Publication Date
KR920001321A true KR920001321A (ko) 1992-01-30
KR100190252B1 KR100190252B1 (ko) 1999-06-01

Family

ID=24185458

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019910010880A KR100190252B1 (ko) 1990-06-29 1991-06-28 고속 프로세서에서의 브랜치 처리 방법 및 장치

Country Status (7)

Country Link
US (1) US6167509A (ko)
EP (1) EP0463977B1 (ko)
JP (1) JP2951064B2 (ko)
KR (1) KR100190252B1 (ko)
CA (1) CA2045791A1 (ko)
DE (1) DE69129881T2 (ko)
TW (1) TW198109B (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732242A (en) * 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
US5951678A (en) * 1997-07-25 1999-09-14 Motorola, Inc. Method and apparatus for controlling conditional branch execution in a data processor
US6449713B1 (en) * 1998-11-18 2002-09-10 Compaq Information Technologies Group, L.P. Implementation of a conditional move instruction in an out-of-order processor
US6205544B1 (en) 1998-12-21 2001-03-20 Intel Corporation Decomposition of instructions into branch and sequential code sections
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
US6453389B1 (en) * 1999-06-25 2002-09-17 Hewlett-Packard Company Optimizing computer performance by using data compression principles to minimize a loss function
US6449706B1 (en) * 1999-12-22 2002-09-10 Intel Corporation Method and apparatus for accessing unaligned data
JP3940539B2 (ja) * 2000-02-03 2007-07-04 株式会社日立製作所 半導体集積回路
US6782469B1 (en) 2000-09-29 2004-08-24 Intel Corporation Runtime critical load/data ordering
US6662273B1 (en) 2000-09-29 2003-12-09 Intel Corporation Least critical used replacement with critical cache
US6760816B1 (en) * 2000-09-29 2004-07-06 Intel Corporation Critical loads guided data prefetching
US6785687B2 (en) 2001-06-04 2004-08-31 Hewlett-Packard Development Company, L.P. System for and method of efficient, expandable storage and retrieval of small datasets
US6907511B2 (en) * 2001-06-11 2005-06-14 Fujitsu Limited Reducing transitions on address buses using instruction-set-aware system and method
US7051168B2 (en) * 2001-08-28 2006-05-23 International Business Machines Corporation Method and apparatus for aligning memory write data in a microprocessor
US7203817B2 (en) 2001-09-24 2007-04-10 Broadcom Corporation Power consumption reduction in a pipeline by stalling instruction issue on a load miss
KR20040045467A (ko) * 2001-10-02 2004-06-01 코닌클리케 필립스 일렉트로닉스 엔.브이. 자바 하드웨어 가속기에 대한 추론적 실행
US7013382B1 (en) * 2001-11-02 2006-03-14 Lsi Logic Corporation Mechanism and method for reducing pipeline stalls between nested calls and digital signal processor incorporating the same
US7075462B2 (en) * 2002-08-07 2006-07-11 Lsi Logic Corporation Speeding up variable length code decoding on general purpose processors
US7017031B2 (en) * 2002-10-10 2006-03-21 International Business Machines Corporation Method, apparatus and system for managing released promotion bits
US6925551B2 (en) * 2002-10-10 2005-08-02 International Business Machines Corporation Method, apparatus and system for accessing a global promotion facility through execution of a branch-type instruction
US7483167B2 (en) * 2003-08-27 2009-01-27 Marvell International Ltd. Image forming apparatus for identifying undesirable toner placement
US7697169B2 (en) * 2004-10-29 2010-04-13 Marvell International Technology Ltd. Laser print apparatus with toner explosion compensation
US7694286B2 (en) * 2005-02-10 2010-04-06 International Business Machines Corporation Apparatus and method for detecting base-register usage conflicts in computer code
JP2007041837A (ja) * 2005-08-03 2007-02-15 Nec Electronics Corp 命令プリフェッチ装置及び命令プリフェッチ方法
US7243210B2 (en) * 2005-05-31 2007-07-10 Atmel Corporation Extracted-index addressing of byte-addressable memories
WO2007025112A1 (en) * 2005-08-23 2007-03-01 Advanced Micro Devices, Inc. Method for proactive synchronization within a computer system
CN102077195A (zh) * 2008-05-08 2011-05-25 Mips技术公司 具有紧凑指令集架构的微处理器
US20100312991A1 (en) * 2008-05-08 2010-12-09 Mips Technologies, Inc. Microprocessor with Compact Instruction Set Architecture
US9158701B2 (en) 2012-07-03 2015-10-13 International Business Machines Corporation Process-specific views of large frame pages with variable granularity
US9110657B2 (en) 2013-01-21 2015-08-18 Tom Yap Flowchart compiler for a compound complex instruction set computer (CCISC) processor architecture
US9405534B2 (en) 2013-01-21 2016-08-02 Tom Yap Compound complex instruction set computer (CCISC) processor architecture
GB2519801A (en) * 2013-10-31 2015-05-06 Ibm Computing architecture and method for processing data
US9772824B2 (en) * 2015-03-25 2017-09-26 International Business Machines Corporation Program structure-based blocking
US9934041B2 (en) 2015-07-01 2018-04-03 International Business Machines Corporation Pattern based branch prediction
CN114035850A (zh) * 2021-12-08 2022-02-11 苏州睿芯集成电路科技有限公司 一种基于risc-v的用于直接跳转的预编码设计方法及系统

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4777587A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
US4991080A (en) * 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
JPH081602B2 (ja) * 1988-02-23 1996-01-10 三菱電機株式会社 データ処理装置
US5228131A (en) * 1988-02-24 1993-07-13 Mitsubishi Denki Kabushiki Kaisha Data processor with selectively enabled and disabled branch prediction operation
US5193205A (en) * 1988-03-01 1993-03-09 Mitsubishi Denki Kabushiki Kaisha Pipeline processor, with return address stack storing only pre-return processed address for judging validity and correction of unprocessed address
JPH0769814B2 (ja) * 1988-04-07 1995-07-31 三菱電機株式会社 パイプライン処理機構を持つデータ処理装置
US5136696A (en) * 1988-06-27 1992-08-04 Prime Computer, Inc. High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
US5131086A (en) * 1988-08-25 1992-07-14 Edgcore Technology, Inc. Method and system for executing pipelined three operand construct
JPH0259822A (ja) * 1988-08-25 1990-02-28 Mitsubishi Electric Corp 命令先取り方式
US5050068A (en) * 1988-10-03 1991-09-17 Duke University Method and apparatus for using extracted program flow information to prepare for execution multiple instruction streams
US5113515A (en) * 1989-02-03 1992-05-12 Digital Equipment Corporation Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache

Also Published As

Publication number Publication date
EP0463977B1 (en) 1998-07-29
KR100190252B1 (ko) 1999-06-01
US6167509A (en) 2000-12-26
TW198109B (ko) 1993-01-11
DE69129881D1 (de) 1998-09-03
JPH06103067A (ja) 1994-04-15
EP0463977A3 (en) 1993-09-22
DE69129881T2 (de) 1999-04-01
CA2045791A1 (en) 1991-12-30
JP2951064B2 (ja) 1999-09-20
EP0463977A2 (en) 1992-01-02

Similar Documents

Publication Publication Date Title
KR920001321A (ko) 고속 프로세서에서의 브랜치 처리 방법 및 장치
KR100463810B1 (ko) 어드레스되는 구성요소의 물리적 특성에 관한 추측 실패를 검출하는 마이크로프로세서용 메모리 제어기
US8024555B2 (en) Condition code flag emulation for program code conversion
US7331040B2 (en) Condition code flag emulation for program code conversion
KR920001332A (ko) 고성능 프로세서의 브랜치 예상 동작 방법 및 장치
KR100816781B1 (ko) 다중 명령어 세트를 사용한 데이터 처리
KR970703561A (ko) 초장 명령어 워드 프로그램의 오브젝트-코드 호환가능 표현(Object-Code Com-patible Representation of Very Long Instruction Word Programs)
KR920006845A (ko) 파이프 라인 컴퓨터 시스템
KR870000643A (ko) 쌍방향성 분기 예상 및 최적화방법 및 장치
US8196120B2 (en) Computer emulator employing direct execution of compiled functions
US7823140B2 (en) Java bytecode translation method and Java interpreter performing the same
KR920001320A (ko) 감소된 명령 세트 프로세서에서 내부 레지스터의 데이타를 조정하는 방법 및 장치
EP0375364A3 (en) Data processor with zero execution clock count for one or both of branch and compare instructions
KR910012914A (ko) 서브 루틴 복귀 예상 메카니즘
KR920001323A (ko) 브랜치를 제거하여 컴퓨터 성능을 개선하는 프로세서 동작방법
KR950027561A (ko) 처리 시스템 및 그의 동작 방법
US6553426B2 (en) Method apparatus for implementing multiple return sites
KR960042340A (ko) 프로그램변환장치 및 프로세서
KR960706124A (ko) 워드 정렬 브랜치 타겟을 가지는 처리 시스템(Processing system with word aligned branch target)
KR100864891B1 (ko) 다중 명령 세트 시스템에서의 미처리된 연산 처리
KR890008685A (ko) 브랜칭 방법
KR900015003A (ko) 데이타 프로세서
KR100421687B1 (ko) 개선된 마이크로프로세서를 위한 변환 메모리 보호 장치
KR100522468B1 (ko) 타겟 프로세서의 상태를 일시적으로 홀딩하는 장치를 갖는 호스트 마이크로프로세서
JPH0668724B2 (ja) シミユレーシヨン方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20070208

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee