KR100244472B1 - Branch prediction circuit - Google Patents
Branch prediction circuit Download PDFInfo
- 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
Links
- 238000010586 diagram Methods 0.000 description 3
- 230000009191 jumping Effects 0.000 description 2
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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/20—Logic 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
본 발명은 분기예측회로에 관한 것으로, 특히 마이크로 프로세서의 파이프라인을 이용할때 분기명령어 예측오류의 확률을 줄일 수 있는 분기예측회로에 관한 것이다.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)
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)
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 |
-
1997
- 1997-05-15 KR KR1019970018744A patent/KR100244472B1/en not_active IP Right Cessation
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 |