KR20060034998A - Apparatus and method for controling an access of branch predictor - Google Patents
Apparatus and method for controling an access of branch predictor Download PDFInfo
- 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
Links
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/32—Address 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
도 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
상기 중앙처리장치는 상기 분기 예측부에서 예측된 분기 예측 어드레스와 상기 실행부에서 계산된 실제 분기 어드레스를 비교하여 상기 분기 예측의 정확도 여부를 판단하며, 상기 분기 판단부가 상기 제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
본 발명의 일 실시예에 의한 상기 중앙처리장치(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
상기 분기 판단부(16)는 상기 명령어 분기정보 저장부(15)에 저장된 명령어 분기 정보를 룩업하여, 현재 패치된 명령어(N)의 연속한 다음 다음 명령어(N+2)가 분기 명령어인지 여부를 해석한다. 만약 분기 명령어가 아닌 경우 현재 패치된 명령어의 연속한 다음 명령어(N+1)가 패치 될 때 상기 분기 예측부(19)를 접근(Access)하지 않는다. 반대로 분기 명령어 인 경우, 현재 패치된 명령어의 연속한 다음 명령어(N+1)가 패치 될 때 상기 분기 예측부(19)에 접근한다.The
상기 분기 예측부(19)는 상기 명령어 패치부(13)로부터 제공되는 분기 명령어의 어드레스(PC)(이하, 패치 어드레스라 한다.)를 받아들여 분기 예측 어드레스(PREADDR)를 발생한다. 상기 분기 예측 어드레스(PREADDR)는 상기 명령어 패치부 (13)로 제공된다. The
상기 명령어 디코더(17)는 상기 명령어 패치부(13)에서 패치된 명령어를 받아들여 디코드하고, 디코드된 코드를 상기 실행부(18)로 제공한다. The
상기 실행 부(18)는 상기 명령어 디코더(17)에서 디코드된 분기 명령어의 조건이 참 또는 거짓인지를 판별하고, 판별 결과에 따라 실제적인 분기 어드레스(NEXTADDR)를 발생한다. 상기 분기 예측부(19)는 자신이 예측한 어드레스(PREADDR)와 상기 실행 부(18)에서 발생된 실제적인 분기 어드레스(NEXTADDR)가 서로 일치하는지의 여부를 판별한다. 이 두 가지 어드레스(PREADDR, NEXTADDR)가 서로 일치하는 경우에는 분기 예측이 적중(hit)한 것이므로 아무런 문제가 발생되지 않으나, 서로 일치하지 않는 경우에는 분기 예측이 실패(miss)한 것이므로 실제적인 분기 어드레스(NEXTADDR)로 재분기하기 위해 상기 분기 예측 어드레스(PREADDR)를 상기 실제적인 분기 어드레스(NEXTADDR)로 변경하여 출력한다. The
도 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
도 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
본 발명에 의한 도 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
앞에서 설명한 바와 같이, 종래에 모든 명령어에 대하여 분기 예측부 내의 분기 예측기(미도시)와 분기 타겟버퍼(미도시)에 접근하던 시스템과는 달리, 본 발명에 따른 중앙처리장치(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
도 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
도 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
도 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
명령어 분기 정보를 해석할 때 하나의 비트를 해석하는 것과, 두개의 비트들을 해석하는 것은 중앙처리장치의 성능에 거의 영향을 미치지 않는 것으로 알려져 있다. 따라서 상술한 바와 같이 각각의 명령어의 다음 명령어의 분기 정보는 분기 타겟 어드레스에 위치한 첫 번째 명령어의 다음 명령어가 분기 명령어인지 여부를 판단하는데 사용된다. 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
본 발명의 상술한 일 실시예들에서 프로그램 메모리에 저장된 명령어들은 도 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)
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)
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 |
-
2004
- 2004-10-20 KR KR1020040084061A patent/KR20060034998A/en not_active Application Discontinuation
Cited By (3)
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 |