KR20060034998A - Apparatus and method for controling an access of branch predictor - Google Patents

Apparatus and method for controling an access of branch predictor Download PDF

Info

Publication number
KR20060034998A
KR20060034998A KR1020040084061A KR20040084061A KR20060034998A KR 20060034998 A KR20060034998 A KR 20060034998A KR 1020040084061 A KR1020040084061 A KR 1020040084061A KR 20040084061 A KR20040084061 A KR 20040084061A KR 20060034998 A KR20060034998 A KR 20060034998A
Authority
KR
South Korea
Prior art keywords
instruction
branch
command
unit
information
Prior art date
Application number
KR1020040084061A
Other languages
Korean (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 KR1020040084061A priority Critical patent/KR20060034998A/en
Publication of KR20060034998A publication Critical patent/KR20060034998A/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/32Address formation of the next instruction, e.g. by incrementing the instruction counter

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 프로그램 컴파일 시 각각의 명령어의 연속한 다음 명령어들이 분기명령어인지 여부에 관한 추가 정보를 생성하여 메모리에 저장하고, 상기 각각의 명령어를 디코딩할 때 상기 추가 정보를 함께 해석하여 다음 명령어들의 분기 예측부 접근 여부를 미리 판단하는 장치를 포함하는 시스템 및 그 방법에 관한 것이다. 본 발명에 따른 시스템은 컴파일된 명령어 및 각각의 명령어의 연속한 다음 명령어들이 분기 명령어인지 여부에 관한 추가 정보를 메모리에 저장하여, 상기 명령어를 디코딩할 때 상기 명령어의 다음 명령어들이 분기 명령어인지 여부를 미리 해석하여 다음 명령어들이 분기 명령어가 아닌 경우 프로세서의 분기 예측부 접근을 막아 전력 소모를 줄일 수 있다.The present invention generates and stores in the memory additional information on whether successive next instructions of each instruction are branch instructions when compiling a program, and interprets the additional information together when decoding each instruction to branch the next instruction. The present invention relates to a system and a method including an apparatus for determining in advance whether to access a predictor. The system according to the present invention stores in the memory additional information as to whether the compiled instruction and subsequent instructions of each instruction are branch instructions to determine whether the next instruction of the instruction is a branch instruction when decoding the instruction. If the next instruction is not a branch instruction, the processor can reduce the power consumption by preventing the processor from accessing the branch predictor.

Description

분기 예측부 접근을 제어하기 위한 장치 및 방법 {APPARATUS AND METHOD FOR CONTROLING AN ACCESS OF BRANCH PREDICTOR}Apparatus and method for controlling branch predictor access {APPARATUS AND METHOD FOR CONTROLING AN ACCESS OF BRANCH PREDICTOR}

도 1은 본 발명의 일 실시예에 의한 시스템의 주요 구성요소를 보여주는 블록도이다1 is a block diagram showing main components of a system according to an embodiment of the present invention.

도 2는 본 발명의 일 실시예에 의한 명령어 분기 정보 비트를 포함하는 프로그램 메모리의 구조를 보여주는 블록도이다.2 is a block diagram illustrating a structure of a program memory including the instruction branch information bits according to an embodiment of the present invention.

도 3은 본 발명의 일 실시예에 의한 명령어의 분기예측부 접근 인에이블 동작의 예를 나타낸 도면이다.3 is a diagram illustrating an example of a branch prediction access enable operation of an instruction according to an embodiment of the present invention.

도 4는 본 발명의 일 실시예에 의한 명령어의 분기예측부 접근 디스에이블 동작의 예를 나타낸 도면이다.FIG. 4 is a diagram illustrating an example of an operation of disabling branch prediction access of an instruction according to an embodiment of the present invention.

도 5는 본 발명의 또 다른 실시예에 따른 명령어 분기 정보 비트를 포함하는 프로그램 메모리의 구조를 보여주는 블록도이다.5 is a block diagram illustrating a structure of a program memory including instruction branch information bits according to another embodiment of the present invention.

도 6은 본 발명의 또 다른 실시예에 따른 명령어의 분기예측부 접근 인에이블 동작의 예를 나타낸 도면이다.6 is a diagram illustrating an example of a branch predictor access enable operation of an instruction according to another embodiment of the present invention.

도 7은 본 발명의 또 다른 실시예에 따른 명령어의 분기예측부 접근 디스에이블 동작의 예를 나타낸 도면이다.7 is a diagram illustrating an example of a branch predictor access disable operation of an instruction according to another embodiment of the present invention.

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

10 : 프로그램 메모리 11 : 시스템 버스10: program memory 11: system bus

12 : 중앙처리장치 13 : 명령어 패치부 12: central processing unit 13: command patch

14 : 명령어 캐쉬부 15 : 명령어 분기정보 저장부14: instruction cache unit 15: instruction branch information storage unit

16 : 분기 판단부 17 : 명령어 디코더16: branch determination unit 17: instruction decoder

18 : 실행부 19 : 분기 예측부18: execution unit 19: branch prediction unit

21 : 명령어 저장영역 22: 명령어 분기정보 저장영역(1비트)21: Instruction storage area 22: Instruction branch information storage area (1 bit)

23 : 명령어 분기정보 저장영역(2비트)23: instruction branch information storage area (2 bits)

본 발명은 중앙처리장치 및 이를 포함한 시스템에 관한 것으로, 더욱 상세하게는 분기 예측부(Branch Predictor and Branch Target Buffer) 접근을 제어하는 중앙처리장치 및 이를 포함한 시스템에 관한 것이다.The present invention relates to a central processing unit and a system including the same, and more particularly, to a central processing unit and a system including the same to control the access to the branch predictor (Branch Predictor and Branch Target Buffer).

중앙처리장치에서 처리해야 할 일이 증가함에 띠라 프로세싱 구조도 발달하고 있다. 이러한 프로세서 구조 설계 방법 중 하나의 기법이 파이프라이닝(pipelining) 기법이다. 파이프라인 동작은 명령어 패치(Instruction fetch) 단계, 명령어 디코드(Instruction decode) /단계, 실행(execute) 단계 등 여러 개의 단계들로 이루어진다. 파이프라인 프로세서에서, 명령어(instruction)들은 겹쳐진 형태로 파이프의 각 단계들을 순차적으로 지나가면서 수행된다.As more work needs to be done in the central processing unit, processing structures are also developing. One technique of such a processor structure design method is a pipelining technique. The pipeline operation consists of several stages, including the instruction fetch stage, the instruction decode / stage, and the execute stage. In a pipeline processor, instructions are executed by sequentially passing each step of the pipe in an overlapped form.

파이프라인 프로세서들의 성능은 분기(branch) 동작에 많은 부분을 의존한 다. 분기 동작은 프로그램 실행 도중에 명령어의 흐름 예측을 변경시키므로 파이프라인 프로세서의 성능을 저하시키는 주요한 원인이 된다. 이는 분기 명령어(branch instruction)가 패치될 때 다음 실행(패치)될 명령어의 어드레스를 즉시 알 수 없기 때문이다. The performance of pipeline processors depends a lot on branch operation. Branching operations change the instruction's flow predictions during program execution, and are a major cause of poor pipeline processor performance. This is because when a branch instruction is fetched, the address of the next instruction to be executed (patched) is not immediately known.

분기 명령어는 실행 단계에서 분기 명령어에 포함된 조건이 만족되는지를 검사한 후 다음 수행될 명령어의 어드레스를 결정한다. 분기 명령어가 조건을 만족한 경우를 그 분기 명령어가 테이큰(taken)되었다고 말하며, 분기 명령어가 조건을 만족하지 못하였을 경우를 그 분기 명령어가 낫-테이큰(not-taken) 되었다고 말한다. The branch instruction checks whether a condition included in the branch instruction is satisfied at the execution stage and determines the address of the next instruction to be executed. When a branch instruction satisfies a condition, it is said that the branch instruction is taken, and when the branch instruction does not satisfy the condition, the branch instruction is said to be not-taken.

분기 예측(branch prediction)은 분기 명령어의 조건이 참인지 또는 거짓인지의 여부를 판별하여 분기될 어드레스가 계산되고 있는 동안 연속적으로 다음 명령어를 실행하기 위해 분기될 어드레스를 예측하고 임의로 실행하는 것이다. 분기 예측이 맞으면 임의로 실행한 명령어들이 옳게 실행된 것이고, 파이프라인의 정지는 발생되지 않는다. 반면에, 분기 예측이 잘못되었으면 올바른 프로그램 수행 경로가 수행되도록 보정(correction)을 해야 한다. 이때에는 잘못 실행된 명령어들의 결과들을 제거(flush)하고, 올바로 분기된 명령어들을 재실행하기 위해 추가적인 지연이 발생한다. Branch prediction is to determine whether the condition of a branch instruction is true or false and to predict and arbitrarily execute the address to be branched to execute the next instruction continuously while the address to be branched is being calculated. If the branch prediction is correct, the instructions executed arbitrarily are executed correctly, and no stoppage of the pipeline occurs. On the other hand, if the branch prediction is wrong, it must be corrected so that the correct program execution path is performed. At this point, additional delays occur in order to flush the results of incorrectly executed instructions and to re-execute correctly branched instructions.

분기 명령어에 의한 성능 저하를 감소하기 위해 분기 타겟 버퍼(Branch Target Buffer; BTB)를 사용한다. 분기 타겟 버퍼에는 분기 명령어의 어드레스(이하, 분기 어드레스라 한다)와 분기될 타겟 어드레스가 저장되어 있다. 분기 타겟 버퍼는 분기 방향이 테이큰으로 예측되는 경우에 저장되어 있는 타겟 어드레스를 읽어내고 해당 타겟 어드레스의 명령어를 패치하게 된다. Branch Target Buffer (BTB) is used to reduce performance degradation caused by branch instructions. The branch target buffer stores addresses of branch instructions (hereinafter referred to as branch addresses) and target addresses to be branched. The branch target buffer reads the stored target address and patches the instruction of the target address when the branch direction is predicted to be taken.

많은 프로세서에서 분기 예측의 결과와 다음 명령어의 주소가 한 사이클에 판별되어야 하므로 각각의 명령어가 분기 명령인지 아닌지를 판별하기 전에 모든 명령어에 대하여 분기 예측기와 분기 타겟 버퍼를 룩업(lookup)해야 한다.In many processors, the result of branch prediction and the address of the next instruction must be determined in one cycle, so it is necessary to look up the branch predictor and branch target buffer for every instruction before determining whether each instruction is a branch instruction or not.

이러한 분기 타겟 버퍼를 통한 분기 예측은 ARM 프로세서 등 내장 프로세서(embedded processor)의 경우 모든 명령어에 대하여 항상 분기 타겟 버퍼를 룩업하며, 분기 명령어가 아닌 명령어에 대하여도 분기 예측기와 분기 타겟 버퍼에 대한 접근을 하게되어 불필요한 전력이 소모된다. The branch prediction through the branch target buffer always looks up the branch target buffer for all instructions in the case of an embedded processor such as an ARM processor, and provides access to the branch predictor and the branch target buffer for non-branch instructions. As a result, unnecessary power is consumed.

본 발명은 상술한 문제점을 해결하기 위하여 제안된 것으로, 본 발명의 목적은 컴파일 시 해당 명령어의 다음 명령어들이 분기명령어 인지 여부에 관한 정보를 미리 판단하여 메모리에 저장한 후 해당 명령어를 디코딩할 때 그 명령어의 다음 명령어들이 분기 명령어인지를 함께 해석하여 분기 명령어인 경우에만 분기 예측기 및 분기 타겟 버퍼를 접근하고, 분기 명령어가 아닌 경우 상기 분기 예측기 및 분기 타겟 버퍼를 접근하지 않도록 하여 소모전력을 감소시키는데 있다.The present invention has been proposed to solve the above-described problems, and an object of the present invention is to determine in advance information about whether the next instruction of a corresponding instruction is a branch instruction and to store the information in a memory after decoding the instruction when the instruction is decoded. By analyzing whether the next instruction of the instruction is a branch instruction together, the branch predictor and the branch target buffer are accessed only in the case of the branch instruction, and if the branch instruction is not the branch instruction, the branch predictor and the branch target buffer are not accessed. .

상술한 바와 같은 본 발명의 목적을 달성하기 위한 본 발명의 특징에 의한 중앙처리장치(CPU)는 제1 명령어, 제2 명령어, 및 제3 명령어와, 상기 제3 명령어의 분기정보를 수신하는 명령어 패치부, 상기 명령어 패치부에 저장된 상기 제1 명령어, 제2 명령어, 및 제3 명령어에 따라 분기 예측을 수행하는 분기 예측부, 상기 명령어 패치부에 저장된 상기 제1 명령어, 제2 명령어, 및 제3 명령어를 디코딩하는 명령어 디코딩부 및 상기 디코딩부에서 디코딩된 명령어에 따라 명령을 실행하는 실행부를 포함하되, 상기 명령어 패치부는 상기 제1 명령어, 제2 명령어, 제3 명령어를 저장하는 명령어 캐쉬부, 상기 제1 명령어, 제2 명령어, 제3 명령어의 분기정보를 저장하는 분기정보 저장부 및 상기 제3 명령어의 분기정보에 따라, 분기 예측부의 동작여부를 제어하는 분기 판단부를 포함한다.In order to achieve the object of the present invention as described above, the central processing unit (CPU) includes a first instruction, a second instruction, and a third instruction, and instructions for receiving branch information of the third instruction. A branch predictor for performing branch prediction according to a patch unit, the first instruction, the second instruction, and the third instruction stored in the instruction patch unit, the first instruction, the second instruction, and the first stored in the instruction patch unit. Including a command decoding unit for decoding a command 3 and an execution unit for executing the command in accordance with the command decoded by the decoding unit, wherein the command patch unit instruction cache unit for storing the first instruction, the second instruction, the third instruction, The branch information storage unit stores branch information of the first command, the second command, and the third command, and controls whether the branch predictor operates according to the branch information of the third command. It includes group determining part.

상기 중앙처리장치는 상기 분기 예측부에서 예측된 분기 예측 어드레스와 상기 실행부에서 계산된 실제 분기 어드레스를 비교하여 상기 분기 예측의 정확도 여부를 판단하며, 상기 분기 판단부가 상기 제3 명령어를 분기명령어로 판단하면, 명령어 패치부가 상기 제2 명령어를 수신하는 동안 상기 분기 예측부는 상기 제3 명령어의 분기 예측을 수행한다.The CPU determines whether the branch prediction is accurate by comparing the branch prediction address predicted by the branch predictor with the actual branch address calculated by the execution unit, and the branch determiner determines the third instruction as a branch instruction. If it is determined, the branch predictor performs branch prediction of the third instruction while the instruction patch unit receives the second instruction.

상기 제2 명령어는 상기 제1 명령어의 이후, 상기 제3 명령어는 상기 제2 명령어 이후의 명령인 것을 특징으로 한다.The second command may be a command after the first command, and the third command may be a command after the second command.

상기 분기 판단부가 상기 제3 명령어를 분기명령어가 아닌 것으로 판단하면, 명령어 패치부가 상기 제2 명령어를 수신하는 동안 상기 분기 예측부는 상기 제3 명령어의 분기 예측을 수행하지 않으며, 반대로 분기명령어로 판단하면 상기 제3 명령어의 분기 예측을 수행한다.If the branch determiner determines that the third instruction is not a branch instruction, the branch predictor does not perform the branch prediction of the third instruction while the instruction patch receives the second instruction. Branch prediction of the third instruction is performed.

본 발명의 목적을 달성하기 위한 본 발명의 특징에 의한 시스템은 제1 명령어, 제2 명령어, 및 제3 명령어와, 상기 제3 명령어의 분기 정보를 저장하고 있는 메모리 및 상기 메모리에 저장된 제1 명령어, 제2 명령어, 및 제3 명령어에 따라 명령을 수행하는 중앙처리장치를 포함하되, 상기 중앙처리장치는 제1 명령어, 제2 명령어, 및 제3 명령어와, 상기 제3 명령어의 분기정보를 수신하는 명령어 패치부, 상기 명령어 패치부에 저장된 상기 제1 명령어, 제2 명령어, 및 제3 명령어에 따라 분기 예측을 수행하는 분기 예측부, 상기 명령어 패치부에 저장된 상기 제1 명령어, 제2 명령어, 및 제3 명령어를 디코딩하는 명령어 디코딩부 및 상기 디코딩부에서 디코딩된 명령어에 따라 명령을 실행하는 실행부를 포함하되, 상기 명령어 패치부는 상기 제1 명령어, 제2 명령어, 제3 명령어를 저장하는 명령어 캐쉬부, 상기 제1 명령어, 제2 명령어, 제3 명령어의 분기정보를 저장하는 분기정보 저장부, 상기 제3 명령어의 분기정보에 따라, 분기 예측부의 동작여부를 제어하는 분기 판단부를 포함하는 것을 특징으로 한다.A system according to a feature of the present invention for achieving the object of the present invention is a memory for storing a first instruction, a second instruction, and a third instruction, branch information of the third instruction, and a first instruction stored in the memory. And a central processing unit performing a command according to a second command and a third command, wherein the central processing unit receives a first command, a second command, and a third command, and branch information of the third command. A branch predictor for performing branch prediction according to the instruction patch unit, the first instruction, the second instruction, and the third instruction stored in the instruction patch unit, the first instruction, the second instruction, stored in the instruction patch unit, And an instruction decoding unit for decoding a third instruction and an execution unit executing an instruction according to the instruction decoded by the decoding unit, wherein the instruction patch unit comprises the first instruction and the second name. For example, an instruction cache unit for storing a third instruction, a branch information storage unit for storing branch information of the first instruction, a second instruction, and a third instruction, and whether the branch predictor is operated according to the branch information of the third instruction. It characterized in that it comprises a branch determination unit for controlling.

이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부된 도면을 참조하여 설명하기로 한다.DETAILED DESCRIPTION Hereinafter, exemplary embodiments of the present invention will be described with reference to the accompanying drawings so that those skilled in the art may easily implement the technical idea of the present invention. do.

도 1은 본 발명의 일 실시예에 의한 중앙처리장치(CPU)(12)를 포함한 컴퓨터 시스템(100)의 주요 구성요소를 보여주는 블록도이다. 본 발명의 일 실시예에 의한 상기 컴퓨터 시스템(100)은 프로그램 메모리(10), 시스템 버스(11), 중앙처리장치(12)를 포함한다. 상기 프로그램 메모리(10)에는 컴파일된 명령어들과 각각의 명령어의 연속한 다음 다음 명령어가 분기명령어인지 여부를 담고있는 명령어 분기정보 비트를 저장하고 있다. 예를 들면 N(N은 자연수)번째 명령어에 대하여 N+2번째 명령어의 분기 명령 여부가 기록된 N+2번째 명령어 분기 정보비트, N+1번째 명령어에 대하여 N+3번째 명령어 분기 정보비트가 쌍으로 저장되어 있다(도2 참조). 상기 프로그램 메모리(10)는 상기 명령어 패치부(13)로부터 제공되는 어드레스, 즉 프로그램 카운터(Program Counter; PC)에 응답하여 매 사이클마다 상기 컴파일된 명령어(Instruction)와 상기 명령어 분기정보 비트를 상기 시스템 버스(11)를 통하여 상기 중앙처리장치(12) 내의 상기 명령어 패치부(13)로 제공한다. 1 is a block diagram showing the major components of a computer system 100 including a central processing unit (CPU) 12 according to one embodiment of the invention. The computer system 100 according to an embodiment of the present invention includes a program memory 10, a system bus 11, and a central processing unit 12. The program memory 10 stores the instruction branch information bit that contains the compiled instructions and whether the next instruction following each instruction is a branch instruction. For example, the N + 2th instruction branch information bit in which N + 2th instruction branch information is recorded for N (N is a natural number) instruction, and the N + 3th instruction branch information bit is recorded for N + 1th instruction. It is stored in pairs (see Figure 2). The program memory 10 stores the compiled instruction and the instruction branch information bit every cycle in response to an address provided from the instruction patch unit 13, that is, a program counter (PC). The bus 11 is provided to the command patch unit 13 in the CPU 12.

본 발명의 일 실시예에 의한 상기 중앙처리장치(12)는 명령어 패치부(13), 명령어 디코더(17), 실행부(18), 그리고 분기 예측부(19)를 포함한다. 상기 명령어 패치부(13)는 명령어 캐쉬부(14), 명령어 분기 정보 저장부(15), 분기 판단부(16)를 포함한다. 상기 명령어 패치부(13)는 상기 시스템 버스(11)로부터 상기 컴파일된 명령어(N)를 패치하여 상기 명령어 캐쉬부(14)에 저장한다. 동시에 상기 명령어(N+2) 분기정보 비트를 상기 명령어 분기정보 저장부(15)에 저장한다.The CPU 12 according to an embodiment of the present invention includes an instruction patch unit 13, an instruction decoder 17, an execution unit 18, and a branch predictor 19. The instruction patch unit 13 includes an instruction cache unit 14, an instruction branch information storage unit 15, and a branch determination unit 16. The instruction patch unit 13 patches the compiled instruction N from the system bus 11 and stores the compiled instruction N in the instruction cache unit 14. At the same time, the instruction (N + 2) branch information bit is stored in the instruction branch information storage unit 15.

상기 분기 판단부(16)는 상기 명령어 분기정보 저장부(15)에 저장된 명령어 분기 정보를 룩업하여, 현재 패치된 명령어(N)의 연속한 다음 다음 명령어(N+2)가 분기 명령어인지 여부를 해석한다. 만약 분기 명령어가 아닌 경우 현재 패치된 명령어의 연속한 다음 명령어(N+1)가 패치 될 때 상기 분기 예측부(19)를 접근(Access)하지 않는다. 반대로 분기 명령어 인 경우, 현재 패치된 명령어의 연속한 다음 명령어(N+1)가 패치 될 때 상기 분기 예측부(19)에 접근한다.The branch determination unit 16 looks up the instruction branch information stored in the instruction branch information storage unit 15 to determine whether the next subsequent instruction N + 2 of the currently patched instruction N is the branch instruction. Interpret If it is not a branch instruction, the branch predicting unit 19 is not accessed when the next consecutive instruction N + 1 of the currently patched instruction is patched. On the contrary, in the case of a branch instruction, the branch predicting unit 19 is approached when the next consecutive instruction N + 1 of the currently patched instruction is patched.

상기 분기 예측부(19)는 상기 명령어 패치부(13)로부터 제공되는 분기 명령어의 어드레스(PC)(이하, 패치 어드레스라 한다.)를 받아들여 분기 예측 어드레스(PREADDR)를 발생한다. 상기 분기 예측 어드레스(PREADDR)는 상기 명령어 패치부 (13)로 제공된다. The branch prediction unit 19 receives the address PC (hereinafter referred to as a patch address) of the branch instruction provided from the instruction patch unit 13 and generates a branch prediction address PREADDR. The branch prediction address PREADDR is provided to the instruction patch unit 13.

상기 명령어 디코더(17)는 상기 명령어 패치부(13)에서 패치된 명령어를 받아들여 디코드하고, 디코드된 코드를 상기 실행부(18)로 제공한다. The command decoder 17 receives and decodes the command patched by the command patch unit 13, and provides the decoded code to the execution unit 18.

상기 실행 부(18)는 상기 명령어 디코더(17)에서 디코드된 분기 명령어의 조건이 참 또는 거짓인지를 판별하고, 판별 결과에 따라 실제적인 분기 어드레스(NEXTADDR)를 발생한다. 상기 분기 예측부(19)는 자신이 예측한 어드레스(PREADDR)와 상기 실행 부(18)에서 발생된 실제적인 분기 어드레스(NEXTADDR)가 서로 일치하는지의 여부를 판별한다. 이 두 가지 어드레스(PREADDR, NEXTADDR)가 서로 일치하는 경우에는 분기 예측이 적중(hit)한 것이므로 아무런 문제가 발생되지 않으나, 서로 일치하지 않는 경우에는 분기 예측이 실패(miss)한 것이므로 실제적인 분기 어드레스(NEXTADDR)로 재분기하기 위해 상기 분기 예측 어드레스(PREADDR)를 상기 실제적인 분기 어드레스(NEXTADDR)로 변경하여 출력한다. The execution unit 18 determines whether the condition of the branch instruction decoded by the instruction decoder 17 is true or false, and generates the actual branch address NEXTADDR according to the determination result. The branch predictor 19 determines whether the address PREADDR predicted by the branch predictor 19 and the actual branch address NEXTADDR generated by the execution unit 18 coincide with each other. If these two addresses (PREADDR and NEXTADDR) match, the branch prediction is a hit, so no problem occurs. If the two addresses do not match, the branch prediction fails, so the actual branch address In order to re-branch to (NEXTADDR), the branch prediction address PREADDR is changed to the actual branch address NEXTADDR and output.

도 2는 본 발명의 일 실시예에 의한 명령어 분기 정보 비트를 포함하는 프로그램 메모리의 구조를 보여주는 블록도이다. 도 2를 참조하면 중앙처리장치(12)가 프로그램의 컴파일을 수행할 때 각각의 명령어의 연속한 다음 다음 명령어가 분기 명령어인지 아닌지 여부를 기록한 비트를 상기 프로그램 메모리(10)에 추가한다. 예를 들자면 컴파일된 명령어들 중 N번째 명령어를 상기 프로그램 메모리(10)의 명령어 저장영역(21)에 저장할 때 상기 N번째 명령어의 연속한 다음 다음 명령어인 N+2번째 명령어가 분기 명령어인지 아닌지를 기록한 명령어 분기정보 비트를 분기정보 저장영역(22)에 함께 저장한다. 마찬가지로 N+1번째 명령어와 N+3번째 명령어 의 분기정보 비트도 같은 방법으로 저장한다. 2 is a block diagram illustrating a structure of a program memory including the instruction branch information bits according to an embodiment of the present invention. Referring to FIG. 2, when the central processing unit 12 compiles a program, it adds to the program memory 10 a bit that records whether a subsequent next instruction of each instruction is a branch instruction or not. For example, when storing the Nth instruction among the compiled instructions in the instruction storage area 21 of the program memory 10, whether the N + 2th instruction, which is the next consecutive instruction of the Nth instruction, is the branch instruction or not. The recorded instruction branch information bits are stored together in the branch information storage area 22. Likewise, the branch information bits of the N + 1 and N + 3 instructions are stored in the same way.

도 3은 본 발명의 일 실시예에 의한 명령어의 분기예측부(19) 접근 인에이블 동작의 예를 나타낸 도면이다. 도 1에 설명된 바와 같이, 프로그램 메모리(10)로부터 패치된 N번째 명령어는 명령어 패치부(13)내의 명령어 캐쉬부(14)에 저장되며 동시에 상기 N번째 명령어의 연속한 다음 다음 명령어인 N+2번째 명령어의 분기정보가 상기 명령어 패치부(13) 내의 명령어 분기정보 저장부(15)에 저장된다. 중앙처리장치(CPU)의 m(m은 자연수)번째 클럭 동안에 상기 N번째 명령어의 캐쉬 룩업(Cache Lookup)동작이 발생하며(화살표 11 참조), 동시에 상기 명령어 분기정보 저장부(15) 내의 상기 N+2번째 명령어의 분기정보가 해석된다(화살표 12 참조). 상기 N+2번째 명령어의 분기정보에 따라 상기 N+2번째 명령어가 분기 명령어인 것으로 해석되면, 상기 N+2 명령어의 분기 예측부(19)의 접근이 인에이블 되어 다음 m+1번째 클럭 동안에 중앙처리장치에 의하여 상기 N+1번째 명령어의 캐쉬 룩업 동작이 발생하며(화살표 21 참조), 동시에 상기 N+2번째 명령어에 대하여 분기 예측부(19)내의 분기 예측기(미도시)와 분기 타겟 버퍼(미도시) 룩업이 이루어진다(화살표 22 및 23 참조). 이어서, N+1번째 명령어(분기 명령어)에 대한 캐쉬 룩업 동작과, 상기 분기 명령어에 대한 분기 예측이 수행된다(화살표 31 및 32 참조). 이 때, 만약 상기 N+2번째 명령어가 분기 예측기 내의 분기 예측 동작에 의하여 테이큰 되지 않았을 경우 상기 N+2번째 명령어에 의하여 분기가 발생하지 않는다. 그러나 상기 N+2번째 명령어가 분기 예측 동작에 의하여 분기 명령어로 테이큰 된 경우 도 1에 설명된 명령어 패치부(13)는 타겟 어드레스(PREADDR)로 분기하여 상기 타겟 어드레 스에 있는 명령어(P번째 명령어)를 패치한다. 이후 P번째 명령어의 캐쉬 룩업 동작이 발생하며(화살표 41 참조), 동시에 상술한 상기 N번째 명령어와 마찬가지로 P+2번째 명령어에 대한 분기 정보를 해석한다(화살표 42 참조). 그러나 P+1번째 명령어에 대한 분기 예측정보가 없으므로 상술한 분기 정보 해석 동작 없이 바로 P+1번째 명령어에 대한 분기 예측기(미도시) 룩업과 분기 타겟 버퍼(미도시) 룩업이 발생하게 된다(화살표 43 및 44 참조).3 is a diagram illustrating an example of an access enable operation of the branch predicting unit 19 of an instruction according to an embodiment of the present invention. As illustrated in FIG. 1, the N-th instruction fetched from the program memory 10 is stored in the instruction cache unit 14 in the instruction patch unit 13 and at the same time N +, which is a subsequent next instruction of the Nth instruction. The branch information of the second instruction is stored in the instruction branch information storage section 15 in the instruction patch section 13. The cache lookup operation of the Nth instruction occurs during the m (m is a natural number) clock of the CPU (see arrow 11), and at the same time, the N in the instruction branch information storage unit 15. Branch information of the second instruction is interpreted (see arrow 12). When the N + 2th instruction is interpreted as a branch instruction according to the branch information of the N + 2th instruction, the access of the branch predictor 19 of the N + 2 instruction is enabled and during the next m + 1th clock. A cache lookup operation of the N + 1th instruction is generated by the central processing unit (see arrow 21), and at the same time, a branch predictor (not shown) and a branch target buffer in the branch predictor 19 for the N + 2th instruction. Lookups are made (not shown) (see arrows 22 and 23). Then, a cache lookup operation for the N + 1 th instruction (branch instruction) and branch prediction for the branch instruction are performed (see arrows 31 and 32). At this time, if the N + 2th instruction is not taken by the branch prediction operation in the branch predictor, the branch does not occur by the N + 2th instruction. However, when the N + 2th instruction is taken as the branch instruction by the branch prediction operation, the instruction patch unit 13 illustrated in FIG. 1 branches to the target address PREADDR and the instruction (P th instruction) in the target address. Patch). Thereafter, a cache lookup operation of the P-th instruction occurs (see arrow 41), and at the same time, branch information for the P + 2th instruction is interpreted (see arrow 42), similarly to the aforementioned N-th instruction. However, since there is no branch prediction information for the P + 1 instruction, the branch predictor (not shown) lookup and the branch target buffer (not shown) lookup for the P + 1 instruction occur immediately without the aforementioned branch information interpretation operation (arrow). 43 and 44).

본 발명에 의한 도 4는 명령어의 분기예측부(19) 접근 디스에이블 동작의 예를 나타낸 도면이다. 도 1에 설명된 바와 같이, 프로그램 메모리(10)로부터 패치된 N번째 명령어는 명령어 패치부(13)내의 명령어 캐쉬부(14)에 저장되며 동시에 상기 N번째 명령어의 연속한 다음 다음 명령어인 N+2번째 명령어의 분기정보가 상기 명령어 패치부(13) 내의 명령어 분기정보 저장부(15)에 저장된다. 중앙처리장치의 m번째 클럭 동안에 상기 중앙처리장치에 의하여 상기 N번째 명령어의 캐쉬 룩업 동작이 발생하며(화살표 11 참조), 동시에 상기 명령어 분기정보 저장부(15) 내의 상기 N+2번째 명령어의 분기정보가 해석된다(화살표 12 참조). 상기 N+2번째 명령어의 분기정보에 따라 상기 N+2번째 명령어가 분기 명령어가 아닌 것으로 해석되면, 다음 m+1번째 클럭 동안에 N+2 명령어의 분기 예측부(19)의 접근이 디스에이블 되어 N+2번째 명령어에 대하여 분기 예측부(19)내의 분기 예측기(미도시)와 분기 타겟 버퍼(미도시)에 대한 룩업이 이루어지지 않는다. 동시에 상기 m+1번째 클럭동안 상기 중앙처리장치에 의하여 N+1번째 명령어의 캐쉬 룩업 동작이 발생하며(화살표 51 참조), 동시에 상기 명령어 분기 정보장치(15) 내의 N+3번째 명령어의 분기 정 보가 해석된다(화살표 52 참조). 그리고 나서, m+2번째 클럭에서는 N+2번째 명령어(분기 명령어)에 대한 캐쉬 룩업이 수행된다(화살표 61 참조). FIG. 4 according to the present invention is a diagram showing an example of an operation disable operation of the branch prediction unit 19 of the instruction. As illustrated in FIG. 1, the N-th instruction fetched from the program memory 10 is stored in the instruction cache unit 14 in the instruction patch unit 13 and at the same time N +, which is a subsequent next instruction of the Nth instruction. The branch information of the second instruction is stored in the instruction branch information storage section 15 in the instruction patch section 13. During the mth clock of the central processing unit, the cache lookup operation of the Nth instruction is generated by the central processing unit (see arrow 11), and at the same time, the branch of the N + 2th instruction in the instruction branch information storage unit 15 is performed. The information is interpreted (see arrow 12). If the N + 2th instruction is interpreted as not a branch instruction according to the branch information of the N + 2th instruction, access of the branch predictor 19 of the N + 2 instruction is disabled during the next m + 1th clock. A lookup of the branch predictor (not shown) and the branch target buffer (not shown) in the branch predictor 19 is not performed for the N + 2th instruction. At the same time, the cache lookup operation of the N + 1th instruction occurs by the central processing unit during the m + 1th clock (see arrow 51), and at the same time, the branching of the N + 3th instruction in the instruction branch information device 15 is performed. The beam is interpreted (see arrow 52). Then, at the m + 2 th clock, a cache lookup is performed for the N + 2 th instruction (branch instruction) (see arrow 61).

앞에서 설명한 바와 같이, 종래에 모든 명령어에 대하여 분기 예측부 내의 분기 예측기(미도시)와 분기 타겟버퍼(미도시)에 접근하던 시스템과는 달리, 본 발명에 따른 중앙처리장치(12) 및 프로그램 메모리(10)를 구비한 시스템(100)은 상기 명령어 분기정보에 따라 선택적으로 분기예측기(미도시)와 분기 타겟 버퍼(미도시)에 접근하므로 불필요한 전력의 소모를 줄일 수 있다. As described above, unlike the system which has conventionally approached the branch predictor (not shown) and the branch target buffer (not shown) in the branch predictor for all instructions, the CPU 12 and the program memory according to the present invention. The system 100 having 10 may selectively access a branch predictor (not shown) and a branch target buffer (not shown) according to the instruction branch information, thereby reducing unnecessary power consumption.

도 5는 본 발명의 또 다른 실시예에 따른 명령어 분기 정보 비트들을 포함하는 프로그램 메모리의 구조를 보여주는 블록도이다. 본 발명에 의하여 도 5를 참조하면 중앙처리장치가 프로그램의 컴파일을 수행할 때 각각의 명령어의 연속한 다음 명령어와 다음 다음 명령어가 분기 명령어인지 아닌지 여부를 기록한 비트를 상기 프로그램 메모리(10)에 추가한다. 예를 들자면 컴파일된 명령어들 중 N번째 명령어를 상기 프로그램 메모리의 명령어 저장영역(21)에 저장할 때 상기 N번째 명령어의 연속한 다음 명령어인 N+1번째 명령어와 다음 다음 명령어인 N+2번째 명령어가 분기 명령어인지 아닌지를 기록한 명령어 분기정보 비트들 분기정보 저장영역(23)에 함께 저장한다. 마찬가지로 계속하여 N+1번째 명령어와 N+2번째, N+3번째 명령어의 분기정보 비트들을 같은 방법으로 저장한다.5 is a block diagram illustrating a structure of a program memory including instruction branch information bits according to another embodiment of the present invention. Referring to FIG. 5 according to the present invention, when the central processing unit compiles a program, a bit is recorded in the program memory 10 that records whether a subsequent next instruction of each instruction and a next next instruction are branch instructions. do. For example, when the Nth instruction of the compiled instructions is stored in the instruction storage area 21 of the program memory, the N + 1th instruction, which is the next consecutive instruction of the Nth instruction, and the N + 2th instruction, which is the next next instruction, are stored. Is stored together in the branch information storage area 23, which records whether or not is a branch instruction. Likewise, the branch information bits of the N + 1 th instruction, the N + 2 th and N + 3 th instructions are stored in the same way.

도 6은 본 발명의 또 다른 실시예에 따른 도 5에 상술된 분기정보 비트들을 이용하여 명령어의 분기예측부(19) 접근 인에이블 동작의 예를 나타낸 도면이다. 도 5에 설명된 바와 같이, 프로그램 메모리(10)로부터 패치된 N번째 명령어는 명령 어 패치부(13)내의 명령어 캐쉬부(14)에 저장되며 동시에 상기 N번째 명령어의 연속한 다음 명령어인 N+1번째 명령어와 다음 다음 명령어인 N+2번째 명령어의 분기정보가 상기 명령어 패치부(13) 내의 명령어 분기정보 저장부(15)에 저장된다. 중앙처리장치의 m번째 클럭 동안에 상기 중앙처리장치에 의하여 상기 N번째 명령어의 캐쉬 룩업 동작이 발생하며(화살표 11 참조), 동시에 상기 명령어 분기정보 저장부(15) 내의 상기 N+1번째 명령어와, 상기 N+2번째 명령어의 분기정보가 해석된다(화살표 13 및 12 참조). 상기 N+2번째 명령어의 분기정보에 따라 상기 N+2번째 명령어가 분기 명령어인 것으로 해석되면, 상기 N+2 명령어의 분기 예측부(19)의 접근이 인에이블 되어 다음 m+1번째 클럭 동안에 중앙처리장치에 의하여 상기 N+1번째 명령어의 캐쉬 룩업 동작이 발생하며(화살표 21 참조), 동시에 상기 N+2번째 명령어에 대하여 분기 예측부(19)내의 분기 예측기(미도시)와 분기 타겟 버퍼(미도시) 룩업이 이루어진다(화살표 22 및 23 참조). 이어서, N+1번째 명령어(분기 명령어)에 대한 캐쉬 룩업 동작과, 상기 분기 명령어에 대한 분기 예측이 수행된다(화살표 31 및 32 참조). 이 때, 만약 상기 N+2번째 명령어가 상술한 바와 같이 분기 예측 동작에 의하여 테이큰 되지 않았을 경우 상기 N+2번째 명령어에 의하여 분기가 발생하지 않는다. 그러나 상기 N+2번째 명령어가 분기 예측 동작에 의하여 분기 명령어로 테이큰 된 경우 도 1에 설명된 명령어 패치부(13)는 타겟 어드레스(PREADDR)로 분기하여 상기 타겟 어드레스에 있는 명령어(P번째 명령어)를 패치한다. 이후 P번째 명령어의 캐쉬 룩업 동작이 발생하며(화살표 41 참조), 동시에 상술한 상기 N번째 명령어와 마찬가지로 P+2번째 명령어에 대한 분기 정보를 해석한다(화살표 42 참조). 그리고 P+1번째 명령어에 대한 분기 예측정보를 해석하여(화살표 45 참조), 상기 P+1번째 명령어가 분기 명령어 일 경우 상기 분기 예측부(19)내의 상기 분기 예측기(미도시)와 상기 분기 타겟 버퍼 룩업이 이루어진다(화살표 46 참조). FIG. 6 is a diagram illustrating an example of an access enable operation of the branch predicting unit 19 of an instruction using the branch information bits described above with reference to FIG. 5 according to another exemplary embodiment of the present invention. As illustrated in FIG. 5, the Nth instruction fetched from the program memory 10 is stored in the instruction cache unit 14 in the instruction patch unit 13 and at the same time N +, which is the next consecutive instruction of the Nth instruction. The branch information of the first instruction and the next next instruction, the N + second instruction, is stored in the instruction branch information storage section 15 in the instruction patch section 13. During the mth clock of the central processing unit, the cache lookup operation of the Nth instruction is generated by the central processing unit (see arrow 11), and at the same time, the N + 1th instruction in the instruction branch information storage unit 15, Branch information of the N + 2th instruction is interpreted (see arrows 13 and 12). When the N + 2th instruction is interpreted as a branch instruction according to the branch information of the N + 2th instruction, the access of the branch predictor 19 of the N + 2 instruction is enabled and during the next m + 1th clock. A cache lookup operation of the N + 1th instruction is generated by the central processing unit (see arrow 21), and at the same time, a branch predictor (not shown) and a branch target buffer in the branch predictor 19 for the N + 2th instruction. Lookups are made (not shown) (see arrows 22 and 23). Then, a cache lookup operation for the N + 1 th instruction (branch instruction) and branch prediction for the branch instruction are performed (see arrows 31 and 32). At this time, if the N + 2 th instruction is not taken by the branch prediction operation as described above, no branch occurs due to the N + 2 th instruction. However, when the N + 2th instruction is taken as the branch instruction by the branch prediction operation, the instruction patch unit 13 illustrated in FIG. 1 branches to the target address PREADDR and the instruction (P th instruction) at the target address. Patch Thereafter, a cache lookup operation of the P-th instruction occurs (see arrow 41), and at the same time, branch information for the P + 2th instruction is interpreted (see arrow 42), similarly to the aforementioned N-th instruction. Then, branch prediction information for the P + 1 th instruction is interpreted (see arrow 45). When the P + 1 th instruction is a branch instruction, the branch predictor (not shown) and the branch target in the branch predictor 19 are analyzed. A buffer lookup is made (see arrow 46).

도 7은 본 발명의 또 다른 실시예에 따른 도 5에 상술된 분기정보 비트들을 이용하여 명령어의 분기예측부(19) 접근 디스에이블 동작의 예를 나타낸 도면이다. 도 1에 설명된 바와 같이, 프로그램 메모리(10)로부터 패치된 N번째 명령어는 명령어 패치부(13)내의 명령어 캐쉬부(14)에 저장되며 동시에 상기 N번째 명령어의 연속한 다음 명령어인 N+1번째 명령어와 다음 다음 명령어인 N+2번째 명령어의 분기정보가 상기 명령어 패치부(13) 내의 명령어 분기정보 저장부(15)에 저장된다. 중앙처리장치의 m번째 클럭 동안에 상기 중앙처리장치에 의하여 상기 N번째 명령어의 캐쉬 룩업 동작이 발생하며(화살표 11 참조), 동시에 상기 명령어 분기정보 저장부(15) 내의 상기 N+1번째 명령어와 N+2번째 명령어의 분기정보가 해석된다(화살표 13 및 12 참조). 상기 N+2번째 명령어의 분기정보에 따라 상기 N+2번째 명령어가 분기 명령어가 아닌 것으로 해석되면, 다음 m+1번째 클럭 동안에 N+2 명령어의 분기 예측부(19)의 접근이 디스에이블 되어 N+2번째 명령어에 대하여 분기 예측부(19)내의 분기 예측기(미도시)와 분기 타겟 버퍼(미도시)에 대한 룩업이 이루어지지 않는다. 동시에 상기 m+1번째 클럭동안 상기 중앙처리장치에 의하여 N+1번째 명령어의 캐쉬 룩업 동작이 발생하며(화살표 51 참조), 동시에 상기 명령어 분기 정보장치(15) 내의 N+2번째 명령어와 N+3번째 명령어의 분기 정보가 해석된다(화살표 53 및 52 참조). 그리고 나서, m+2번째 클럭에서는 N+2번째 명령어(분기 명령어)에 대한 캐쉬 룩업이 수행된다(화살표 61 참조). FIG. 7 is a diagram illustrating an example of an operation of disabling a branch prediction unit 19 access disable of an instruction using the branch information bits described above with reference to FIG. 5 according to another exemplary embodiment of the present invention. As illustrated in FIG. 1, the N-th instruction fetched from the program memory 10 is stored in the instruction cache unit 14 in the instruction patch unit 13 and at the same time N + 1, which is the next consecutive instruction of the N-th instruction. The branch information of the first command and the next next command, the N + 2th command, is stored in the command branch information storage unit 15 in the command patch unit 13. During the mth clock of the central processing unit, the cache lookup operation of the Nth instruction is generated by the central processing unit (see arrow 11), and at the same time, the N + 1th instruction and N in the instruction branch information storage unit 15 are executed. The branch information of the second instruction is interpreted (see arrows 13 and 12). If the N + 2th instruction is interpreted as not a branch instruction according to the branch information of the N + 2th instruction, access of the branch predictor 19 of the N + 2 instruction is disabled during the next m + 1th clock. A lookup of the branch predictor (not shown) and the branch target buffer (not shown) in the branch predictor 19 is not performed for the N + 2th instruction. At the same time, the cache lookup operation of the N + 1th instruction occurs by the central processing unit during the m + 1th clock (see arrow 51), and at the same time the N + 2th instruction and the N + in the instruction branch information device 15. The branch information of the third instruction is interpreted (see arrows 53 and 52). Then, at the m + 2 th clock, a cache lookup is performed for the N + 2 th instruction (branch instruction) (see arrow 61).

명령어 분기 정보를 해석할 때 하나의 비트를 해석하는 것과, 두개의 비트들을 해석하는 것은 중앙처리장치의 성능에 거의 영향을 미치지 않는 것으로 알려져 있다. 따라서 상술한 바와 같이 각각의 명령어의 다음 명령어의 분기 정보는 분기 타겟 어드레스에 위치한 첫 번째 명령어의 다음 명령어가 분기 명령어인지 여부를 판단하는데 사용된다. When interpreting instruction branch information, interpreting one bit and interpreting two bits are known to have little effect on the performance of the central processing unit. Therefore, as described above, the branch information of the next instruction of each instruction is used to determine whether the next instruction of the first instruction located at the branch target address is the branch instruction.

종래에 모든 명령어에 대하여 분기예측기(미도시)와 분기 타겟버퍼(미도시)에 접근하던 시스템과는 달리 본 발명에 따른 중앙처리장치(12) 및 프로그램 메모리(10)를 구비한 시스템(100)은 상기 명령어 분기정보에 따라 선택적으로 분기예측기(미도시)와 분기 타겟 버퍼(미도시)에 접근하므로 불필요한 전력의 소모를 줄일 수 있다.Unlike the system which has conventionally approached the branch predictor (not shown) and the branch target buffer (not shown) for all instructions, the system 100 having the central processing unit 12 and the program memory 10 according to the present invention is provided. According to the instruction branch information, the branch predictor (not shown) and the branch target buffer (not shown) may be selectively accessed, thereby reducing unnecessary power consumption.

본 발명의 상술한 일 실시예들에서 프로그램 메모리에 저장된 명령어들은 도 1의 중앙처리장치(12)에 의하여 컴파일링 될 수도 있고, 제2의 또 다른 중앙처리장치에 의하여 컴파일링 될 수도 있다.In the above-described embodiments of the present invention, the instructions stored in the program memory may be compiled by the central processing unit 12 of FIG. 1 or may be compiled by another second central processing unit.

한편, 본 발명의 상세한 설명에서는 구체적인 실시예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위 뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.On the other hand, in the detailed description of the present invention has been described with respect to specific embodiments, various modifications are of course possible without departing from the scope of the invention. Therefore, the scope of the present invention should not be limited to the above-described embodiments, but should be defined by the equivalents of the claims of the present invention as well as the following claims.

상술한 바와 같이 본 발명에 의하면, 컴파일 시 해당 명령어의 다음 명령어들이 분기명령어 인지 여부에 관한 정보를 미리 판단하여 메모리에 저장한 후 해당 명령어를 디코딩할 때 그 명령어의 다음 명령어들이 분기 명령어인지를 함께 해석하여 분기 명령어인 경우에만 분기 예측기 및 분기 타겟 버퍼를 접근하고, 분기 명령어가 아닌 경우 상기 분기 예측기 및 분기 타겟 버퍼를 접근하지 않도록 한다. 그 결과, 소모전력이 효과적으로 감소된다. As described above, according to the present invention, when compiling, information about whether the next instruction of the instruction is a branch instruction is pre-determined and stored in a memory, and when the next instruction of the instruction is a branch instruction when decoding the instruction together, The branch predictor and the branch target buffer are accessed only in the case of the branch instruction, and the branch predictor and the branch target buffer are not accessed in the case of the branch instruction. As a result, power consumption is effectively reduced.

Claims (20)

제1 명령어, 제2 명령어, 및 제3 명령어와, 상기 제3 명령어의 분기정보를 수신하는 명령어 패치부;An instruction patch unit configured to receive a first instruction, a second instruction, a third instruction, and branch information of the third instruction; 상기 명령어 패치부에 저장된 상기 제1 명령어, 제2 명령어, 및 제3 명령어에 따라 분기 예측을 수행하는 분기 예측부;A branch prediction unit configured to perform branch prediction according to the first instruction, the second instruction, and the third instruction stored in the instruction patch unit; 상기 명령어 패치부에 저장된 상기 제1 명령어, 제2 명령어, 및 제3 명령어를 디코딩하는 명령어 디코딩부; 및An instruction decoding unit to decode the first instruction, the second instruction, and the third instruction stored in the instruction patch unit; And 상기 디코딩부에서 디코딩된 명령어에 따라 명령을 실행하는 실행부를 포함하며,An execution unit for executing the command in accordance with the command decoded by the decoding unit, 상기 명령어 패치부는,The command patch unit, 상기 제1 명령어, 제2 명령어, 제3 명령어를 저장하는 명령어 캐쉬부; 상기 제1 명령어, 제2 명령어, 제3 명령어의 분기정보를 저장하는 분기정보 저장부; 상기 제3 명령어의 분기정보에 따라 분기 예측부의 동작여부를 제어하는 분기 판단부를 포함하는 것을 특징으로 하는 중앙처리장치.An instruction cache unit configured to store the first instruction, the second instruction, and the third instruction; A branch information storage unit for storing branch information of the first command, the second command, and the third command; And a branch determination unit controlling whether a branch prediction unit is operated according to branch information of the third command. 제1 항에 있어서,According to claim 1, 상기 분기 예측부에서 예측된 분기 예측 어드레스와 상기 실행부에서 계산된 실제 분기 어드레스를 비교하여 상기 분기 예측의 정확도 여부를 판단하는 것을 특징으로 하는 중앙처리장치.And comparing the branch prediction address predicted by the branch predictor with the actual branch address calculated by the execution unit to determine whether the branch prediction is accurate. 제1 항에 있어서,According to claim 1, 상기 제2 명령어는 상기 제1 명령어의 이후, 상기 제3 명령어는 상기 제2 명령어 이후의 명령인 것을 특징으로 하는 중앙처리장치.And wherein the second command is after the first command and the third command is after the second command. 제1 항에 있어서, According to claim 1, 상기 분기 판단부가 상기 제3 명령어를 분기명령어로 판단하면, 명령어 패치부가 상기 제2 명령어를 수신하는 동안 상기 분기 예측부는 상기 제3 명령어의 분기 예측을 수행하는 것을 특징으로 하는 중앙처리장치.And if the branch determining unit determines the third instruction as a branch instruction, the branch predicting unit performs branch prediction of the third instruction while the instruction patch unit receives the second instruction. 제1 항에 있어서, According to claim 1, 상기 분기 판단부가 상기 제3 명령어를 분기명령어가 아닌 것으로 판단하면, 명령어 패치부가 상기 제2 명령어를 수신하는 동안 상기 분기 예측부는 상기 제3 명령어의 분기 예측을 수행하지 않는 것을 특징으로 하는 중앙처리장치.And if the branch determiner determines that the third instruction is not a branch instruction, the branch predictor does not perform branch prediction of the third instruction while the instruction patch receives the second instruction. . 제 1 항에 있어서,The method of claim 1, 상기 제3 명령어의 분기 정보는 상기 프로그램의 컴파일링시 생성되는 것을 특징으로 하는 중앙처리장치.And the branch information of the third instruction is generated when the program is compiled. 제1 명령어, 제2 명령어, 및 제3 명령어와, 상기 제3 명령어의 분기 정보를 저장하고 있는 메모리; 및A memory that stores first instructions, second instructions, and third instructions, and branch information of the third instructions; And 상기 메모리에 저장된 제1 명령어, 제2 명령어, 및 제3 명령어에 따라 명령을 수행하는 중앙처리장치를 포함하며,A central processing unit configured to perform a command according to a first command, a second command, and a third command stored in the memory; 상기 중앙처리장치는, 제1 명령어, 제2 명령어, 및 제3 명령어와, 상기 제3 명령어의 분기정보를 수신하는 명령어 패치부; 상기 명령어 패치부에 저장된 상기 제1 명령어, 제2 명령어, 및 제3 명령어에 따라 분기 예측을 수행하는 분기 예측부; 상기 명령어 패치부에 저장된 상기 제1 명령어, 제2 명령어, 및 제3 명령어를 디코딩하는 명령어 디코딩부; 및 상기 디코딩부에서 디코딩된 명령어에 따라 명령을 실행하는 실행부를 포함하고,The CPU includes: a command patch unit configured to receive a first command, a second command, a third command, and branch information of the third command; A branch prediction unit configured to perform branch prediction according to the first instruction, the second instruction, and the third instruction stored in the instruction patch unit; An instruction decoding unit to decode the first instruction, the second instruction, and the third instruction stored in the instruction patch unit; And an execution unit executing an instruction according to the instruction decoded by the decoding unit. 상기 명령어 패치부는, 상기 제1 명령어, 제2 명령어, 제3 명령어를 저장하는 명령어 캐쉬부; 상기 제1 명령어, 제2 명령어, 제3 명령어의 분기정보를 저장하는 분기정보 저장부; 상기 제3 명령어의 분기정보에 따라, 분기 예측부의 동작여부를 제어하는 분기 판단부를 포함하는 것을 특징으로 하는 시스템.The instruction patch unit may include an instruction cache unit configured to store the first instruction, the second instruction, and the third instruction; A branch information storage unit for storing branch information of the first command, the second command, and the third command; And a branch determination unit controlling whether the branch prediction unit is operated according to the branch information of the third command. 제7 항에 있어서,The method of claim 7, wherein 상기 제2 명령어는 상기 제1 명령어의 이후, 상기 제3 명령어는 상기 제2 명령어 이후의 명령인 것을 특징으로 하는 시스템.And wherein the second instruction is after the first instruction and the third instruction is after the second instruction. 제7 항에 있어서, The method of claim 7, wherein 상기 분기 판단부가 상기 제3 명령어를 분기명령어로 판단하면, 명령어 패치 부가 상기 제2 명령어를 수신하는 동안 상기 분기 예측부는 상기 제3 명령어의 분기 예측을 수행하는 것을 특징으로 하는 시스템.And if the branch determiner determines the third instruction as a branch instruction, the branch predictor performs branch prediction of the third instruction while the instruction patch unit receives the second instruction. 제7 항에 있어서, The method of claim 7, wherein 상기 분기 판단부가 상기 제3 명령어를 분기명령어가 아닌 것으로 판단하면, 명령어 패치부가 상기 제2 명령어를 수신하는 동안 상기 분기 예측부는 상기 제3 명령어의 분기 예측을 수행하지 않는 것을 특징으로 하는 시스템.And if the branch determiner determines that the third instruction is not a branch instruction, the branch predictor does not perform branch prediction of the third instruction while the instruction patch receives the second instruction. 제 7항에 있어서,The method of claim 7, wherein 상기 메모리의 상기 제3 명령어의 분기 정보는 상기 프로그램의 컴파일링시 생성되는 것을 특징으로 하는 시스템.The branch information of the third instruction of the memory is generated when compiling the program. 제1 명령어, 제2 명령어, 및 제3 명령어와 제3 명령어의 분기정보를 메모리에 저장하는 단계;.Storing the first instruction, the second instruction, and branch information of the third instruction and the third instruction in a memory; 상기 메모리로부터 제1 명령어, 제2 명령어, 및 제3 명령어를 순차적으로 수신하는 하는 단계;Sequentially receiving a first command, a second command, and a third command from the memory; 상기 메모리로부터 제3 명령어의 분기정보를 순차적으로 수신하여 저장하는 단계;Sequentially receiving and storing branch information of a third command from the memory; 상기 제3 명령어가 분기된 정보인지를 판단하는 단계;Determining whether the third instruction is branched information; 상기 제2 명령어를 수신하는 동안, 상기 제3 명령어의 분기 예측을 수행하는 단계; While receiving the second instruction, performing branch prediction of the third instruction; 상기 제1 명령어, 제2 명령어, 및 제3 명령어를 디코딩하는 단계; 및Decoding the first instruction, second instruction, and third instruction; And 상기 디코딩된 명령어에 따라 명령을 실행하는 단계를 포함하는 것을 특징으로 하는 데이터 프로세싱 방법.Executing a command in accordance with the decoded command. 제12 항에 있어서,The method of claim 12, 상기 제2 명령어는 상기 제1 명령어의 이후, 상기 제3 명령어는 상기제2 명령어 이후의 명령인 것을 특징으로 하는 데이터 프로세싱 방법.And wherein the second instruction is after the first instruction and the third instruction is after the second instruction. 제12 항에 있어서, The method of claim 12, 상기 제3 명령어가 분기 명령어로 판단되면 상기 제2 명령어를 수신하는 동안 상기 제3 명령어의 분기 예측을 수행하는 것을 특징으로 하는 데이터 프로세싱 방법.And if it is determined that the third instruction is a branch instruction, branch prediction of the third instruction is performed while receiving the second instruction. 제12 항에 있어서, The method of claim 12, 상기 제3 명령어가 분기 명령어가 아닌 것으로 판단되면 상기 제2 명령어를 수신하는 동안 상기 제3 명령어의 분기 예측을 수행하지 않는 것을 특징으로 하는 데이터 프로세싱 방법.And if it is determined that the third instruction is not a branch instruction, branch prediction of the third instruction is not performed while receiving the second instruction. 제 12항에 있어서,The method of claim 12, 상기 제3 명령어의 분기 정보는 상기 프로그램의 컴파일링 단계에서 생성되는 것을 특징으로 하는 데이터 프로세싱 방법.The branch information of the third instruction is generated in the compilation step of the program. 컴파일되는 명령어의 연속된 다음 명령어들이 분기 명령어인지에 대한 정보를 메모리에 저장하는 단계; 및Storing information in memory as to whether successive subsequent instructions of the instruction being compiled are branch instructions; And 상기 메모리에 저장된 정보를 근거로 하여, 디코딩되는 명령어의 다음 명령어에 대한 분기 예측을 선택적으로 수행하는 단계를 포함하는 것을 특징으로 하는 데이터 프로세싱 방법.Selectively performing branch prediction for the next instruction of the instruction to be decoded based on the information stored in the memory. 프로그램 컴파일시, 각 명령어와, 상기 각 명령어의 연속된 다음 명령어들이 분기 명령어인지에 대한 정보를 메모리에 저장하는 단계;When compiling a program, storing in the memory each instruction and information as to whether subsequent consecutive instructions of each instruction are branch instructions; 디코딩을 위해 상기 명령어들이 프로세서로 수신되는 동안, 상기 메모리에 저장된 정보를 근거로 하여 상기 다음 명령어들에 대한 분기 예측 여부를 분석하는 단계; 및Analyzing the branch prediction for the next instructions based on information stored in the memory while the instructions are received by the processor for decoding; And 상기 분석 결과에 따라 상기 다음 명령어에 대한 분기 예측이 선택적으로 수행되는 단계를 포함하는 것을 특징으로 하는 데이터 프로세싱 방법.And selectively performing branch prediction on the next instruction according to the analysis result. 제 18 항에 있어서,The method of claim 18, 상기 분석 결과, 상기 다음 명령어가 분기 명령어이면 상기 명령어가 수신되는 동안 상기 다음 명령어에 대한 분기 예측이 수행되는 것을 특징으로 하는 데이 터 프로세싱 방법.And if the next instruction is a branch instruction, branch prediction is performed on the next instruction while the instruction is received. 제 18 항에 있어서,The method of claim 18, 상기 분석 결과, 상기 다음 명령어가 분기 명령어가 아니면 상기 명령어가 수신되는 동안 상기 다음 명령어에 대한 분기 예측이 생략되는 것을 특징으로 하는 데이터 프로세싱 방법.If the next instruction is not a branch instruction, branch prediction for the next instruction is omitted while the instruction is received.
KR1020040084061A 2004-10-20 2004-10-20 Apparatus and method for controling an access of branch predictor KR20060034998A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020040084061A KR20060034998A (en) 2004-10-20 2004-10-20 Apparatus and method for controling an access of branch predictor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040084061A KR20060034998A (en) 2004-10-20 2004-10-20 Apparatus and method for controling an access of branch predictor

Publications (1)

Publication Number Publication Date
KR20060034998A true KR20060034998A (en) 2006-04-26

Family

ID=37143634

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040084061A KR20060034998A (en) 2004-10-20 2004-10-20 Apparatus and method for controling an access of branch predictor

Country Status (1)

Country Link
KR (1) KR20060034998A (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101306622B1 (en) * 2011-06-22 2013-09-11 주식회사 에이디칩스 instructin queue control apparatus
KR101538425B1 (en) * 2011-09-23 2015-07-22 한국전자통신연구원 Processor and instruction processing method in processor
US9274794B2 (en) 2011-09-23 2016-03-01 Electronics And Telecommunications Research Institute Processor and instruction processing method in processor

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101306622B1 (en) * 2011-06-22 2013-09-11 주식회사 에이디칩스 instructin queue control apparatus
KR101538425B1 (en) * 2011-09-23 2015-07-22 한국전자통신연구원 Processor and instruction processing method in processor
US9274794B2 (en) 2011-09-23 2016-03-01 Electronics And Telecommunications Research Institute Processor and instruction processing method in processor

Similar Documents

Publication Publication Date Title
US10268480B2 (en) Energy-focused compiler-assisted branch prediction
JP5917616B2 (en) Method and apparatus for changing the sequential flow of a program using prior notification technology
US7478228B2 (en) Apparatus for generating return address predictions for implicit and explicit subroutine calls
KR100938367B1 (en) System and method of correcting a branch misprediction
US6263427B1 (en) Branch prediction mechanism
EP2864868B1 (en) Methods and apparatus to extend software branch target hints
KR20090031751A (en) Methods and apparatus for proactive branch target address cache management
JP5231403B2 (en) Sliding window block based branch target address cache
KR20090094335A (en) Methods and apparatus for recognizing a subroutine call
US20030159019A1 (en) Prediction of instructions in a data processing apparatus
US20100287358A1 (en) Branch Prediction Path Instruction
US7640422B2 (en) System for reducing number of lookups in a branch target address cache by storing retrieved BTAC addresses into instruction cache
US20060212680A1 (en) Methods and apparatus for dynamic prediction by software
US20040225866A1 (en) Branch prediction in a data processing system
KR20060034998A (en) Apparatus and method for controling an access of branch predictor
JP4728877B2 (en) Microprocessor and pipeline control method
US7343481B2 (en) Branch prediction in a data processing system utilizing a cache of previous static predictions
JP2006048258A (en) Data processor

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination