KR100244472B1 - Branch prediction circuit - Google Patents

Branch prediction circuit Download PDF

Info

Publication number
KR100244472B1
KR100244472B1 KR1019970018744A KR19970018744A KR100244472B1 KR 100244472 B1 KR100244472 B1 KR 100244472B1 KR 1019970018744 A KR1019970018744 A KR 1019970018744A KR 19970018744 A KR19970018744 A KR 19970018744A KR 100244472 B1 KR100244472 B1 KR 100244472B1
Authority
KR
South Korea
Prior art keywords
branch
instruction
signal
branch prediction
memory
Prior art date
Application number
KR1019970018744A
Other languages
Korean (ko)
Other versions
KR19980083442A (en
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 KR1019970018744A priority Critical patent/KR100244472B1/en
Publication of KR19980083442A publication Critical patent/KR19980083442A/en
Application granted granted Critical
Publication of KR100244472B1 publication Critical patent/KR100244472B1/en

Links

Images

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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 분기예측회로에 관한 것으로, 종래의 분기예측회로에서는 예측된 값이 실행단계의 결과와 상이한 경우 전체 파이프라인을 정지시키고 새로운 어드레스와 명령어를 받아 파이프라인을 구동시키게 되는데, 이때 패치(fetch) 파이프라인 단계에서 실행단계까지의 명령어가 취소됨으로 시스템의 성능이 저하되는 문제점이 있었다. 따라서 본 발명은 상기와 같은 문제점을 해결하기 위하여 창안한 것으로 분기예측의 결과를 하드웨어 뿐만아니라 소프트웨어에서도 수행함으로써 예측오류의 확률을 줄여 시스템의 성능을 개선하는 효과가 있다.The present invention relates to a branch prediction circuit. In the conventional branch prediction circuit, when the predicted value is different from the result of the execution step, the entire pipeline is stopped and the pipeline is driven by receiving a new address and an instruction. ) There is a problem that the performance of the system is degraded because the commands from the pipeline stage to the execution stage are canceled. Therefore, the present invention has been devised to solve the above problems, and the result of branch prediction is performed not only in hardware but also in software, thereby improving the performance of the system by reducing the probability of prediction error.

Description

분기예측회로Branch Prediction Circuit

본 발명은 분기예측회로에 관한 것으로, 특히 마이크로 프로세서의 파이프라인을 이용할때 분기명령어 예측오류의 확률을 줄일 수 있는 분기예측회로에 관한 것이다.The present invention relates to a branch prediction circuit, and more particularly, to a branch prediction circuit that can reduce the probability of branch instruction prediction error when using a microprocessor pipeline.

도1은 종래의 분기예측회로의 구성도로서, 이에 도시한 바와 같이 명령어를 저장하는 메모리(T1)와, 상기 메모리(T1)의 오피코드(OP code)신호를 받음과 아울러 다른 파이프라인 단계로부터 신호를 입력받는 분기예측부(T2)와, 다음 명령어의 주소를 저장하고 있는 프로그램 카운터(T3)와, 상기 프로그램 카운터(T3)의 값과 1의 값을 합하는 인크리먼트(increment)회로(T4)와, 상기 분기예측부(T2)의 출력신호를 선택신호(SEL)로 입력받아 상기 메모리(T1)의 오퍼랜드(operand)신호 또는 상기 인크리먼트(increment) 회로(T4)의 출력신호를 선택하여 다음 어드레스 신호로 전달하는 멀티플랙서(T5)로 구성된다.1 is a block diagram of a conventional branch prediction circuit. As shown in FIG. 1, a memory T1 storing instructions and an OP code signal of the memory T1 are received and other pipeline stages are received. A branch prediction unit T2 that receives a signal, a program counter T3 that stores the address of the next instruction, and an increment circuit T4 that sums the value of the program counter T3 and the value of 1. And an output signal of the branch prediction unit T2 as a selection signal SEL to select an operand signal of the memory T1 or an output signal of the increment circuit T4. And a multiplexer T5 for transferring to the next address signal.

이하, 상기와 같이 구성된 종래의 분기예측회로의 동작을 설명한다.The operation of the conventional branch prediction circuit configured as described above will be described below.

분기예측부(T2)는 오피코드(OP code)를 메모리(T1)의 명령어로부터 입력받고, 파이프라인 실행단계로부터 이 명령어의 과거 히스토리(history)를 저장한 값을 메모리로부터 입력받아 다음 어드레스를 예측하는 자료로 이용되는데, 이 로직의 결과는 최종적으로 명령어의 오퍼랜드(operand)값 (실질적으로 분기 명령어인 경우 어드레스 값)과 프로그램 카운터에 1을 더한 값을 선택하여 다음 어드레스를 구하는데 이용된다. 즉, 분기예측부(T2)의 출력신호에 따라 메모리(T1)의 오퍼랜드값 또는 프로그램 카운터(T3)의 카운터값에 1을 더한 인크리먼트 회로(T2)의 출력신호값이 멀티플렉서(T5)에서 선택되어 다음 어드레스로 출력된다.The branch prediction unit T2 receives an op code from an instruction of the memory T1, and receives a value from the memory that stores a past history of the instruction from the pipeline execution step to predict the next address. The result of this logic is used to finally select the operand value of the instruction (the address value in the case of a branch instruction) and the program counter plus 1 to get the next address. That is, according to the output signal of the branch prediction part T2, the output signal value of the increment circuit T2 which adds 1 to the operand value of the memory T1 or the counter value of the program counter T3 becomes the multiplexer T5. It is selected and output to the next address.

그러나 종래의 분기예측회로에서, 예측된 값이 실행단계의 결과와 상이한 경우 전체 파이프라인을 정지시키고 새로운 어드레스와 명령어를 받아 파이프라인을 구동시키게 되는데 이때 패치(fetch) 파이프라인 단계에서 실행단계까지의 명령어가 취소되므로 시스템의 성능이 저하되는 문제점이 있었다.However, in the conventional branch prediction circuit, if the predicted value is different from the result of the execution step, the entire pipeline is stopped and the pipeline is driven by receiving a new address and command, which is performed from the fetch pipeline step to the execution step. There was a problem that the performance of the system is reduced because the command is canceled.

따라서 본 발명은 상기와 같은 문제점을 해결하기 위하여 창안한 것으로 분기예측의 결과를 하드웨어 뿐만아니라 소프트웨어에서도 수행함으로써 예측오류의 확률을 줄여 시스템의 성능을 개선하는데 그 목적이 있다.Accordingly, the present invention has been made to solve the above problems, and its purpose is to improve the performance of the system by reducing the probability of prediction error by performing the result of branch prediction in software as well as hardware.

도1은 종래의 분기예측회로의 구성블록도.1 is a block diagram of a conventional branch prediction circuit.

도2는 본 발명의 분기예측회로의 구성블록도.2 is a block diagram of a branch prediction circuit of the present invention;

*도면의 주요 부분에 대한 부호의 설명** Description of the symbols for the main parts of the drawings *

T10 : 메모리 T2 : 분기예측부T10: Memory T2: Branch prediction part

T3 : 프로그램 카운터T4 : 인크리먼트(increment)회로T3: Program Counter T4: Increment Circuit

T5 : 멀티플렉서 T6 : 앤드게이트T5: Multiplexer T6: Endgate

이와 같은 목적을 달성하기위한 본 발명 분기예측회로는 그의 구성도인 도2에 도시한 바와 같이 명령어를 저장하고 명령어가 분기 명령인 경우 분기인에이블신호(BEN)를 출력하는 비트(bit)가 있는 메모리(T10)와, 상기 메모리(T10)의 오피코드(OP code)신호를 입력받음과 아울러 파이프라인 단계로부터 신호를 입력받아 분기를 예측하는 분기예측부(T2)와, 상기 분기예측부(T2)의 출력신호와 상기 메모리(T10)의 분기인에이블신호(BEN)를 앤드조합하는 앤드게이트(T6)와, 다음 명령어의 주소를 저장하고 있는 프로그램 카운터(T3)와, 상기 프로그램 카운터(T3)의 값과 1의 값을 합하는 인크리먼트(increment)회로(T4)와, 상기 앤드게이트(T6)의 출력신호를 선택신호(SEL)로 입력받아 상기 메모리(T10)의 오퍼랜드(operand)신호 또는 상기 인크리먼트(increment)회로(T4)의 출력신호를 선택하여 다음 어드레스 신호로 출력하는 멀티플렉서(T5)로 구성된다.The branch prediction circuit of the present invention for achieving the above object has a bit that stores a command and outputs a branch enable signal BEN when the command is a branch command as shown in FIG. A branch predictor T2 for receiving a memory T10, an OP code signal of the memory T10, a signal predicted from a pipeline stage, and a branch predictor T2, and a branch predictor T2. An AND gate T6 for AND-combining the output signal of < RTI ID = 0.0 >) < / RTI > and the branch enable signal BEN of the memory T10, a program counter T3 storing the address of the next instruction, and the program counter T3. Increment circuit T4, which sums a value of 1 and a value of 1, and an output signal of the AND gate T6 as a selection signal SEL, and receives an operand signal of the memory T10 or The output signal of the increment circuit T4 The multiplexer T5 selects and outputs the next address signal.

이하, 이와 같이 구성된 본 발명의 동작을 명령어의 예를 들어 종래의 기술과 비교하여 상세히 설명한다.Hereinafter, the operation of the present invention configured as described above will be described in detail in comparison with the conventional art by way of examples.

1 add c,a,b1 add c, a, b

2 add d,a,b2 add d, a, b

3 JZ codeφ3 JZ codeφ

4 mov e,φ4 mov e, φ

········

codeφ: add f,c,dcodeφ: add f, c, d

········

상기 명령어와 같이 종래에는 3번 라인의 JZ명령어를 수행할때 분기예측부(T2)에 의해서 4 또는 codeφ 라인으로 점프(Jump)하게 되는데, 이때 4 라인으로 점프할 확률은 50%이고 codeφ 라인으로 점프할 확률이 50%가 된다. 그러나 본 발명에서는 메모리(T10)에 분기예측부(T2)의 인에이블(enable)을 두게 되면 JZ명령어가 두종류 즉, 분기예측부(T2)를 인에이블(enable)시키는 JZE명령어와 분기예측부(T2)를 디스에이블(disable)시키는 JZD명령어로 구분되는데 상기 JZD명령어를 이용하는 경우에는 분기명령어의 뒤에 NOOP( No Operation)명령어나 분기명령어에 영향을 주지 않는 다른 명령어를 추가하여 수행시키면 된다. 그리고 상기 명령어의 배치는 컴파일러가 수행하므로 하드웨어를 추가할 필요가 없게 된다. 한편 분기예측과 명령어를 수행하는 것이 파이프라인에서 1클럭이라고 하면 분기명령어가 디스에이블(disable)인 경우 분기명령어 다음에 1개의 명령어만이 분기 명령어와 무관한 것을 배치하면 된다.Conventionally, when executing the JZ instruction of line 3, the branch prediction unit (T2) jumps to the 4 or the codeφ line, where the probability of jumping to the 4th line is 50% and is the codeφ line. There is a 50% chance of jumping. However, in the present invention, when the enable branch of the branch predicting unit T2 is enabled in the memory T10, there are two types of JZ instructions, that is, the JZE instruction and the branch predicting unit enabling the branch predicting unit T2. It is classified as a JZD instruction that disables (T2). In the case of using the JZD instruction, a NOOP (No Operation) instruction or another instruction that does not affect the branch instruction may be added after the branch instruction. And since the instruction is arranged by the compiler, there is no need to add hardware. On the other hand, if the branch prediction and the execution of instructions are one clock in the pipeline, when the branch instruction is disabled, only one instruction after the branch instruction has to be related to the branch instruction.

2 add d,a,b2 add d, a, b

3 JZD codeφ3 JZD codeφ

1 add e,φ1 add e, φ

········

codeφ: add f,c,dcodeφ: add f, c, d

········

또한, 본 발명은 상기 명령어와 같이 JZD명령어를 이용하여 명령어의 순서를 바꿈으로써 분기예측부(T2)를 이용할 필요가 없게된다. 그러나 컴파일러가 명령어의 순서를 바꿈으로써 분기예측부(T2)를 사용하지 않아도 되는 경우가 아닌 경우 종래에는 NOOP명령어를 사용하였으나 본 발명은 JZE명령어를 이용함으로써 NOOP명령어를 사용하지 않아도 된다. 그리고 JZE명령어와 JZD명령어를 구별하기 위해서 오피코드(OP code)에 이를 구별하기 위한 비트를 두며, 최종 어드레스를 구하는 부분에서도 이 비트가 디스에이블인 경우 프로그램 카운터(T3)의 값+1의 값을 다음 어드레스로 선택하도록 한다. 즉, 분기인에이블신호(BEN)가 디스에이블 상태인 저전위 상태인 경우에는 분기 예측부(T2)의 출력신호에 상관없이 엔드게이트(T6)에서 저전위 신호가 출력되어 멀티플렉서(T5)의 선택신호가 인가되고, 이에 따라 프로그램 카운터(T3)의 카운트값에 1을 더한 인크리먼트회로(T4)의 출력신호값이 그 멀티플렉서(T5)에서 선택되어 다음 어드레스로 출력된다.In addition, the present invention eliminates the need to use the branch prediction unit T2 by changing the order of the instructions using the JZD instruction as in the above instruction. However, when the compiler does not need to use the branch prediction unit T2 by changing the order of instructions, conventionally, a NOOP instruction is used, but the present invention does not need to use a NOOP instruction by using a JZE instruction. In order to distinguish between JZE instruction and JZD instruction, an op code has a bit for distinguishing it, and in the part where the final address is obtained, if this bit is disabled, the value of the program counter (T3) + 1 is set. Select the next address. That is, when the branch enable signal BEN is in the low potential state in the disabled state, the low potential signal is output from the end gate T6 regardless of the output signal of the branch predictor T2 to select the multiplexer T5. The signal is applied, and accordingly, the output signal value of the increment circuit T4 obtained by adding 1 to the count value of the program counter T3 is selected by the multiplexer T5 and output to the next address.

이상에서 상세히 설명한 바와 같이 분기예측의 결과를 하드웨어 뿐만아니라 소프트웨어에서도 수행함으로써 예측오류의 확률을 줄여 시스템의 성능을 개선하는 효과가 있다.As described in detail above, the result of the branch prediction is performed not only in hardware but also in software, thereby reducing the probability of prediction error, thereby improving the performance of the system.

Claims (2)

명령어를 저장하고 명령어가 분기 명령인 경우 분기인에이블신호를 츨력하는 비트가 있는 메모리(T10)와, 상기 메모리(T10)의 오피코드(OP code)신호를 입력받음과 아울러 다른 파이프라인 단계로부터 신호를 입력받아 분기를 예측하는 분기예측부(T2)와, 다음 명령어의 주소를 저장하고 있는 프로그램 카운터(T3)와, 상기 프로그램 카운터(T3)의 값과 1의 값을 합하는 인크리먼트회로(T4)와, 상기 분기예측부(T2)의 출력신호와 상기 메모리(T10)의 분기인에이블신호를 엔드조합하는 엔드게이트(T6)와, 상기 엔드게이트(T6)의 출력신호에 따라 상기 메모리(T10)의 오퍼랜드(operand)신호 또는 상기 인크리먼트회로(T4)의 출력신호를 선택하여 다음 어드레스 신호로 출력하는 멀티플렉서(T5)로 구성하여 된 것을 특징으로 하는 분기예측회로.Memory T10 having a bit for storing the instruction and outputting a branch enable signal when the instruction is a branch instruction, and receiving an OP code signal of the memory T10 and a signal from another pipeline stage. A branch prediction unit T2 for predicting a branch by receiving a signal, a program counter T3 for storing an address of a next instruction, and an increment circuit T4 for summing the value of the program counter T3 and a value of 1; ), An end gate T6 for end combining the output signal of the branch prediction unit T2 and the branch enable signal of the memory T10, and the memory T10 according to the output signal of the end gate T6. And a multiplexer (T5) for selecting an operand signal or an output signal of the increment circuit (T4) and outputting the next address signal. 제 1항에 있어서, 메모리(T10)의 분기인에이블 신호를 출력하는 비트는 오피코드(OP code)의 한 비트로 할당하여 구성된 것을 특징으로 하는 분기예측회로.The branch prediction circuit according to claim 1, wherein the bit for outputting the branch enable signal of the memory (T10) is configured by allocating one bit of an op code.
KR1019970018744A 1997-05-15 1997-05-15 Branch prediction circuit KR100244472B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019970018744A KR100244472B1 (en) 1997-05-15 1997-05-15 Branch prediction circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970018744A KR100244472B1 (en) 1997-05-15 1997-05-15 Branch prediction circuit

Publications (2)

Publication Number Publication Date
KR19980083442A KR19980083442A (en) 1998-12-05
KR100244472B1 true KR100244472B1 (en) 2000-08-01

Family

ID=19505910

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970018744A KR100244472B1 (en) 1997-05-15 1997-05-15 Branch prediction circuit

Country Status (1)

Country Link
KR (1) KR100244472B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6728872B1 (en) 2000-02-04 2004-04-27 International Business Machines Corporation Method and apparatus for verifying that instructions are pipelined in correct architectural sequence

Also Published As

Publication number Publication date
KR19980083442A (en) 1998-12-05

Similar Documents

Publication Publication Date Title
KR100395763B1 (en) A branch predictor for microprocessor having multiple processes
US5687360A (en) Branch predictor using multiple prediction heuristics and a heuristic identifier in the branch instruction
US6408385B1 (en) Data processor
US6263427B1 (en) Branch prediction mechanism
US5724563A (en) Pipeline processsor
US8572358B2 (en) Meta predictor restoration upon detecting misprediction
US5522053A (en) Branch target and next instruction address calculation in a pipeline processor
JP2004533695A (en) Method, processor, and compiler for predicting branch target
US20050050372A1 (en) Microcontroller unit controlling plurality of registers in accordance with precision of data to be operated, and compiler thereof
US7017030B2 (en) Prediction of instructions in a data processing apparatus
US5193156A (en) Data processor with pipeline which disables exception processing for non-taken branches
US20040225870A1 (en) Method and apparatus for reducing wrong path execution in a speculative multi-threaded processor
US6725450B1 (en) Program conversion apparatus, processor, and record medium
KR100317240B1 (en) Branch predictor using branch prediction accuracy history
US7010676B2 (en) Last iteration loop branch prediction upon counter threshold and resolution upon counter one
US7765387B2 (en) Program counter control method and processor thereof for controlling simultaneous execution of a plurality of instructions including branch instructions using a branch prediction mechanism and a delay instruction for branching
KR100244472B1 (en) Branch prediction circuit
KR100980076B1 (en) System and method for branch prediction with low-power consumption
US20060095746A1 (en) Branch predictor, processor and branch prediction method
US6862680B2 (en) Microprocessor processing specified instructions as operands
US5630158A (en) Central processing unit including inhibited branch area
JP2883035B2 (en) Pipeline processor
US6266764B1 (en) Program controller for switching between first program and second program
US20040019772A1 (en) Microprocessor
US20020087851A1 (en) Microprocessor and an instruction converter

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: 20051021

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee