KR101086457B1 - Processor system having low power trace cache and upcoming instruction set predictor - Google Patents
Processor system having low power trace cache and upcoming instruction set predictor Download PDFInfo
- Publication number
- KR101086457B1 KR101086457B1 KR1020090132139A KR20090132139A KR101086457B1 KR 101086457 B1 KR101086457 B1 KR 101086457B1 KR 1020090132139 A KR1020090132139 A KR 1020090132139A KR 20090132139 A KR20090132139 A KR 20090132139A KR 101086457 B1 KR101086457 B1 KR 101086457B1
- Authority
- KR
- South Korea
- Prior art keywords
- branch
- instruction
- predictor
- counter value
- address
- Prior art date
Links
- 230000000903 blocking effect Effects 0.000 claims description 3
- 230000004069 differentiation Effects 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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
-
- 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
-
- 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Power Sources (AREA)
Abstract
본 발명은 프로세서 시스템에 관한 것으로, 보다 구체적으로는 분기예측기(Branch predictor)를 포함하는 프로세서 시스템에 있어서, 분기가 일어나지 않을 것으로 예측되는 명령어들을 하나의 세트로 하여 복수 개의 명령어 세트를 저장하는 저전력 트레이스 캐쉬 및 다음에 실행될 명령어 세트를 예측하여 하나의 명령어 세트가 인출되는 동안 프로세서 코어에서 분기예측기 및 주 명령어 캐쉬로의 접근을 차단하는 명령어 세트 예측기를 구비하여 상기 분기예측기의 동작에 의해 소비되는 전력을 절감할 수 있는 프로세서 시스템에 관한 것이다.The present invention relates to a processor system, and more particularly, in a processor system including a branch predictor, a low power trace storing a plurality of sets of instructions with one set of instructions for which branching is not expected to occur. An instruction set predictor is provided for predicting the cache and the next instruction set to be executed to block access to the branch predictor and the main instruction cache from the processor core while one instruction set is fetched to provide the power consumed by the operation of the branch predictor. A processor system can be saved.
프로세서 시스템, 프로세서 코어, 분기예측기, 주 명령어 캐쉬 Processor system, processor core, branch predictor, main instruction cache
Description
본 발명은 프로세서 시스템에 관한 것으로, 보다 구체적으로는 분기예측기(Branch predictor)를 포함하는 프로세서 시스템에 있어서, 분기가 일어나지 않을 것으로 예측되는 명령어들을 하나의 세트로 하여 복수 개의 명령어 세트를 저장하는 저전력 트레이스 캐쉬 및 다음에 실행될 명령어 세트를 예측하여 하나의 명령어 세트가 인출되는 동안 프로세서 코어에서 분기예측기 및 주 명령어 캐쉬로의 접근을 차단하는 명령어 세트 예측기를 구비하여 상기 분기예측기의 동작에 의해 소비되는 전력을 절감할 수 있는 프로세서 시스템에 관한 것이다.The present invention relates to a processor system, and more particularly, in a processor system including a branch predictor, a low power trace storing a plurality of sets of instructions with one set of instructions for which branching is not expected to occur. An instruction set predictor is provided for predicting the cache and the next instruction set to be executed to block access to the branch predictor and the main instruction cache from the processor core while one instruction set is fetched to provide the power consumed by the operation of the branch predictor. A processor system can be saved.
일반적으로 프로세서 시스템은, 명령어를 요청하여 인출하는 프로세서 코어 및 주메모리에 저장된 명령어들 중 자주 사용되는 명령어들이 저장되는 주 명령어 캐쉬를 포함하여 이루어진다.Generally, a processor system includes a processor core that requests and fetches instructions, and a main instruction cache, which stores frequently used instructions among instructions stored in main memory.
또한, 상기 프로세서 코어는 중앙처리장치(CPU:Central Processing unit)로도 불리며, 컴퓨터, 휴대전화 등 다양한 전자/정보기기의 중앙처리장치로 사용된다.The processor core is also called a central processing unit (CPU), and is used as a central processing unit for various electronic / information devices such as a computer and a mobile phone.
도 1은 종래의 프로세서 시스템을 보여주는 도면이다.1 is a diagram illustrating a conventional processor system.
도 1을 참조하면, 종래의 프로세서 시스템(10)은 프로세서 코어(11), 분기예측기(12) 및 주 명령어 캐쉬(13)을 포함하여 이루어진다.Referring to FIG. 1, a
상기 프로세서 코어(11)는 전술한 바와 같이 상기 주 명령어 캐쉬(13)에서 명령어를 인출하여 외부기기를 제어하고, 상기 주 명령어 캐쉬(13)에는 자주 사용되는 명령어들이 저장된다.As described above, the
또한, 상기 주 명령어 캐쉬(13)에 저장되는 명령어들은 미 분기 명령어와 분기 명령어로 구분된다.In addition, the instructions stored in the
상기 분기예측기(12)는 주 명령어 캐쉬에서 인출되는 명령어의 미스(miss)를 줄이고, 다음에 수행될 명령어 예측 성공률(hit rate)를 높이기 구비된다.The
또한, 상기 분기예측기(12)는 분기 명령어가 인출될 때, 비순차적인 분기 목적지 주소로 분기하여 명령어를 인출할 것인지, 순차적인 다음 주소로 미 분기하여 명령어를 인출할지 결정하는 역할을 한다.In addition, the
또한, 상기 분기예측기(12)는 임의의 분기 명령어에 대해 과거에 분기가 있었는지 없었는지에 대한 정보가 저장되는 패턴 이력 테이블(12b,Pattern History Table) 및 분기한 목적지의 주소 정보가 저장되는 분기 목적지 버퍼(12a,Branch Target Buffer)를 포함하여 이루어진다.In addition, the
또한, 상기 분기예측기(12)를 이용하여 상기 프로세서 코어(11)가 명령어를 인출하는 과정을 간단히 살펴보면, 먼저, 상기 프로세서 코어(11)로부터 명령어 요청이 발생하면, 상기 주 명령어 캐쉬(13)로 접근하여 명령어를 인출한다. 동시에, 상기 프로세서 코어(11)는 상기 분기예측기(12)에 접근하여 다음에 수행될 명령어의 주소를 요청한다.In addition, when the
다음, 상기 분기예측기(12)는 현재 요청된 명령어의 주소를 이용하여 상기 패턴 이력 테이블(12b)을 통해 상기 현재 요청된 명령어 수행 후에 분기가 있었는지 확인하고, 분기가 있었던 경우 상기 분기 목적지 버퍼(12a)에 저장된 분기 목적지 주소를 인출해준다.Next, the branch predictor 12 checks whether there is a branch after performing the currently requested instruction through the pattern history table 12b using the address of the currently requested instruction, and if the branch exists, the branch destination buffer ( Retrieve the branch destination address stored in 12a).
다음, 상기 프로세서 코어(11)는 상기 분기 목적지 주소에 저장된 명령어를 인출하여 수행한다.Next, the
즉, 종래의 프로세서 시스템(10)은 상기 분기예측기(12)를 이용하여, 상기 프로세서 코어(11)로 하여금 매우 높은 예측 성공률로 빠르게 명령어를 인출할 수 있게 해준다.That is, the
그러나, 종래의 분기예측기(12)를 구비하는 프로세서 시스템(10)은 프로세서 코어(11)가 하나의 명령어를 인출할 때마다 상기 분기예측기(12)로 접근하여, 상기 분기예측기(12)를 활성화시키므로 매우 많은 전력이 소모되는 문제점이 있다.However, the
본 발명자들은 프로세서 시스템의 전력 소모를 최소화하고자 노력한 결과, 프로세서 코어가 매 명령어를 인출할 때마다 분기예측기를 활성화하는 것을 방지하고, 저 전력 트레이스 캐쉬 또는 주 명령어 캐쉬에서 선택적으로 명령어를 인출할 수 있는 기술적 구성을 개발하게 되어 본 발명을 완성하게 되었다.As a result of efforts to minimize power consumption of the processor system, the inventors have prevented the processor core from activating the branch predictor whenever it fetches every instruction, and can selectively withdraw instructions from the low power trace cache or the main instruction cache. The technical construction was developed to complete the present invention.
따라서, 본 발명의 목적은 저 전력 트레이스 캐쉬를 이용하여 명령어 인출시에 소모되는 전력을 최소화할 수 있는 프로세서 시스템을 제공하는 것이다.Accordingly, it is an object of the present invention to provide a processor system capable of minimizing the power consumed during instruction retrieval using a low power trace cache.
또한, 본 발명의 다른 목적은 프로세서 코어가 매 명령어 인출 사이클마다 분기예측기를 활성화하는 것을 방지하여 분기예측기의 작동시에 소모되는 전력을 최소화할 수 있는 프로세서 시스템을 제공하는 것이다.It is another object of the present invention to provide a processor system which can minimize the power consumed during the operation of the branch predictor by preventing the processor core from activating the branch predictor every instruction fetch cycle.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The objects of the present invention are not limited to the above-mentioned objects, and other objects that are not mentioned will be clearly understood by those skilled in the art from the following description.
상기의 목적을 달성하기 위하여 본 발명은 복수 개의 미 분기 명령어 및 분기 명령어가 저장되는 주 명령어 캐쉬, 상기 주 명령어 캐쉬의 명령어들이 인출되게 하는 프로세서 코어 및 상기 명령어가 인출될 때마다, 상기 명령어가 미 분기 명령어인지 분기 명령어인지 확인하고, 상기 명령어가 분기 명령어일 경우, 비순차적인 분기 목적지 주소로 분기하여 명령어를 인출할지, 순차적인 다음 주소로 미 분기하여 명령어를 인출할지를 결정하는 분기예측기(Branch Predictor)를 포함하는 프로세서 시스템에 있어서, 상기 프로세서 코어로 인출되는 명령어들 중, 복수 개의 명령어들을 하나의 명령어 세트로 하는 복수 개의 명령어 세트를 저장하는 저전력 트레이스 캐쉬(Low power trace cache) 및 상기 프로세서 코어에서 요청되는 명령어가 제1 분기 명령어이고, 상기 분기예측기에서 분기로 결정될 경우, 상기 제1 분기 명령어의 분기 목적지 주소에서부터 다음 분기 명령어가 인출되기 전까지의 명령어 주소의 수인 분기 수행 카운터 값을 저장하고, 상기 분기예측기에서 미 분기로 결정될 경우, 상기 제1 분기 명령어의 다음 주소인 미 분기 목적지 주소에서부터 다음 분기 명령어가 인출되기 전까지의 명령어 주소의 수인 분기 미수행 카운터 값을 저장하며, 이후, 상기 제1 분기 명령어의 재인출 요청이 있는 경우 상기 분기 목적지 주소 또는 상기 미 분기 목적지 주소로 시작하는 명령어 세트의 명령어들을 순차적으로 인출하되, 상기 분기 수행 카운터 값 또는 상기 분기 미수행 카운터 값만큼의 개수의 명령어들을 순차적으로 인출되게 하는 명령어 세트 예측기를 포함하는 프로세서 시스템을 제공한다.In order to achieve the above object, the present invention provides a main instruction cache in which a plurality of unbranched instructions and branch instructions are stored, a processor core for causing instructions of the main instruction cache to be fetched, and whenever the instructions are fetched, The branch predictor determines whether the instruction is a branch instruction or a branch instruction. If the instruction is a branch instruction, the branch predictor decides whether to branch out to an out-of-sequence branch destination address or to branch out to an sequential next address. A processor system comprising: a low power trace cache for storing a plurality of instruction sets including a plurality of instructions as one instruction set among instructions fetched to the processor core, and a low power trace cache in the processor core. The requested instruction is a first branch instruction, If the branch predictor determines the branch, the branch execution counter value, which is the number of instruction addresses from the branch destination address of the first branch instruction until the next branch instruction is fetched, is stored. Stores the branch non-execution counter value, which is the number of instruction addresses from the non-branch destination address, which is the next address of the first branch instruction, until the next branch instruction is fetched, and thereafter, when there is a re-fetch request of the first branch instruction A processor including an instruction set predictor for sequentially fetching instructions of an instruction set starting with an address or the non-branched destination address, and sequentially fetching as many instructions as the branch performing counter value or the branch non performing counter value; Provide a system.
바람직한 실시예에 있어서, 상기 저전력 트레이스 캐쉬에 저장되는 각 명령어 세트는 상기 프로세서 코어로 인출되어 수행되는 명령어들 중 미 분기 명령어들의 집합으로 이루어지며, 상기 저전력 트레이스 캐쉬의 한 라인에 하나의 명령어 세트가 저장된다.In a preferred embodiment, each instruction set stored in the low power trace cache consists of a set of unbranched instructions among instructions executed by being fetched to the processor core, with one instruction set per line of the low power trace cache. Stored.
바람직한 실시예에 있어서, 상기 프로세서 코어로 명령어 세트가 인출될 경우, 상기 명령어 세트 예측기는 상기 프로세서 코어의 명령어 요청이 상기 분기예측기로 전달되지 않게 하여, 상기 분기예측기가 동작하지 않게 한다.In a preferred embodiment, when the instruction set is fetched to the processor core, the instruction set predictor prevents the instruction request of the processor core from being passed to the branch predictor, thereby making the branch predictor inoperable.
바람직한 실시예에 있어서, 상기 분기예측기는 임의의 분기 명령어에 대해 다음에 수행될 분기 목적지 주소 정보를 저장하는 분기 목적지 버퍼를 포함하고, 상기 명령어 세트 예측기에 저장되는 분기 수행 카운터 값은 상기 분기 목적지 버퍼에 저장되는 분기 목적지 주소와 일대일로 대응되어 저장되며, 상기 명령어 세트 예측기는 상기 명령어 세트들 중 상기 분기 목적지 버퍼에 저장된 주소로 시작하는 명령어 세트가 인출되게 한다.In a preferred embodiment, the branch predictor includes a branch destination buffer that stores branch destination address information to be performed next for any branch instruction, and the branch execution counter value stored in the instruction set predictor is the branch destination buffer. One-to-one correspondence with the branch destination address stored in the storage unit is stored, and the instruction set predictor causes the instruction set starting with the address stored in the branch destination buffer of the instruction sets to be fetched.
바람직한 실시예에 있어서, 상기 명령어 세트 예측기는 상기 분기 수행 카운터 값 및 상기 분기 미 수행 카운터 값을 계산하여 생성하는 카운터 값 계산기, 상기 분기 수행 카운터 값 및 상기 분기 미 수행 카운터 값이 저장되는 카운터 값 저장 테이블, 상기 카운터 값의 수만큼 제어신호를 발생하는 제어신호 발생기, 상기 제어신호의 발생이 있는 경우, 상기 프로세서 코어의 명령어 요청이 상기 분기예측기로 입력되는 것을 차단하는 분기예측기 접근 제어기 및 상기 제어신호의 발생이 있는 경우, 상기 주 명령어 캐쉬의 명령어들이 인출되지 않게 하고, 상기 저전력 트레이스 캐쉬의 명령어 세트가 인출되게 하는 캐쉬 선택기를 포함한다.In a preferred embodiment, the instruction set predictor is a counter value calculator for calculating and generating the branch performance counter value and the non-branch counter value, and a counter value storing the branch performance counter value and the non-branch counter value. Table, a control signal generator for generating a control signal by the number of the counter value, a branch predictor access controller and a control signal for blocking the command request of the processor core from being input to the branch predictor when the control signal is generated And a cache selector to prevent the instructions of the main instruction cache from being fetched and to cause the instruction set of the low power trace cache to be fetched.
바람직한 실시예에 있어서, 상기 카운터 값 계산기는 이전에 인출된 분기 명령어에서 분기할 경우, 분기할 목적지의 주소인 분기 목적지 주소가 저장되는 분기 목적지 주소 레지스터, 이전에 인출된 분기 명령어에서 미 분기할 경우, 미 분기할 목적지인 다음 주소인 미 분기 목적지 주소가 저장되는 미 분기 목적지 주소 레지스터 및 현재 인출될 분기 명령어의 주소인 현재 분기 명령어 주소가 저장되는 현재 분기 명령어 주소 레지스터를 포함하며, 상기 이전에 인출된 분기 명령어에서 분기할 경우, 상기 현재 분기 명령어 주소의 값에서 상기 분기 목적지 주소의 값을 뺀 값을 상기 분기 수행 카운터 값으로 계산하고, 상기 이전에 인출된 분기 명령어에서 분기하지 않을 경우, 상기 현재 분기 명령어 주소의 값에서 상기 미 분기 목적지 주소의 값을 뺀 값을 상기 분기 미 수행 카운터 값으로 계산한다.In a preferred embodiment, the counter value calculator is a branch destination address register that stores a branch destination address, which is the address of a branching destination, when branching from a previously drawn branch instruction, and unbranches from a previously drawn branch instruction. A branch instruction address register that stores a branch instruction address register that is a branch instruction address that is to be fetched and a branch instruction address register that stores a branch instruction address that is a branch instruction to be fetched. When branching from a branch instruction, the current branch instruction address minus the value of the branch destination address is calculated as the branch execution counter value, and if not branching from the previously drawn branch instruction, the current The value of the branch instruction address minus the value of the unbranched destination address. The value is calculated as the non-branched counter value.
본 발명은 다음과 같은 우수한 효과를 가진다.The present invention has the following excellent effects.
먼저, 본 발명의 프로세서 시스템에 의하면 분기 여부 판단이 필요없는 미분기 명령어가 수행될 때, 명령어 세트 예측기를 이용하여 프로세서 코어가 분기예측기로 접근하는 것을 차단함으로써 프로세서 코어가 분기예측기로 접근할 때, 발생하는 전력소모를 줄일 수 있는 효과가 있다.First, according to the processor system of the present invention, when a different branch instruction that does not require branching is executed, the processor core approaches the branch predictor by blocking the processor core from accessing the branch predictor using the instruction set predictor. This can reduce the power consumption.
또한, 본 발명의 프로세서 시스템에 의하면 한 라인에 하나의 명령어 세트가 저장되는 저전력 트레이스 캐쉬를 이용하여 주 명령어 캐쉬에 우선하여 명령어 세트를 인출하게 함으로써 전력소모를 줄일 수 있는 효과가 있다. In addition, according to the processor system of the present invention, by using a low power trace cache in which one instruction set is stored on one line, the instruction set is drawn out in preference to the main instruction cache, thereby reducing power consumption.
본 발명에서 사용되는 용어는 가능한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 특정한 경우는 출원인이 임의로 선정한 용어도 있는데 이 경우에는 단순한 용어의 명칭이 아닌 발명의 상세한 설명 부분에 기재되거나 사용된 의미를 고려하여 그 의미가 파악되어야 할 것이다.The terms used in the present invention were selected as general terms as widely used as possible, but in some cases, the terms arbitrarily selected by the applicant are included. In this case, the meanings described or used in the detailed description of the present invention are considered, rather than simply the names of the terms. The meaning should be grasped.
이하, 첨부한 도면에 도시된 바람직한 실시예들을 참조하여 본 발명의 기술적 구성을 상세하게 설명한다.Hereinafter, the technical structure of the present invention will be described in detail with reference to preferred embodiments shown in the accompanying drawings.
그러나, 본 발명은 여기서 설명되는 실시예에 한정되지 않고 다른 형태로 구체화 될 수도 있다. 명세서 전체에 걸쳐 동일한 참조번호는 동일한 구성요소를 나타낸다.However, the present invention is not limited to the embodiments described herein but may be embodied in other forms. Like reference numerals designate like elements throughout the specification.
도 2는 본 발명의 일 실시예에 따른 프로세서 시스템을 보여주는 도면, 도 3은 본 발명의 일 실시예에 따른 프로세서 시스템의 명령어 세트 예측기를 보여주는 도면, 도 4는 종래의 트레이스 캐쉬를 설명하기 위한 도면, 도 5는 본 발명의 일 실시예에 따른 프로세서 시스템의 저전력 트레이스 캐쉬를 설명하기 위한 도면, 도 6은 본 발명의 일 실시예에 따른 프로세서 시스템의 동작 예를 설명하기 위한 도면이다.2 illustrates a processor system according to an embodiment of the present invention, FIG. 3 illustrates an instruction set predictor of the processor system according to an embodiment of the present invention, and FIG. 4 illustrates a conventional trace cache. 5 is a view for explaining a low power trace cache of a processor system according to an embodiment of the present invention, Figure 6 is a view for explaining an operation example of a processor system according to an embodiment of the present invention.
도 1을 참조하면, 본 발명의 일 실시예에 따른 프로세서 시스템(100)은 프로세서 코어(110), 주 명령어 캐쉬(140), 저전력 트레이스 캐쉬(150), 분기예측기(120) 및 명령어 세트 예측기(130)를 포함하여 이루어진다.Referring to FIG. 1, a
상기 프로세서 코어(110)는 입력수단에 의해 입력되는 명령신호에 따라 아래에서 설명할 주 명령어 캐쉬(140) 또는 저전력 트레이스 캐쉬(150)에 저장된 명령 어를 인출하고, 인출되는 명령어를 이용하여 외부기기를 동작시킨다.The
예를 들면, 상기 프로세서 코어(110)는 컴퓨터나 휴대전화 등, 다양한 전자/정보기기의 중앙처리장치일 수 있다.For example, the
상기 주 명령어 캐쉬(140)는 외부의 주 메모리(도시하지 않음)에 저장된 명령어들 중 자주 인출되는 명령어들이 저장되는 매체로써, 저장되는 명령어들은 미 분기 명령어 및 분기 명령어로 이루어진다.The
상기 저전력 트레이스 캐쉬(150)는 상기 주 명령어 캐쉬(140)에서 인출되어 수행되는 명령어들의 집합인 복수 개의 명령어 세트가 저장되며, 상기 각 명령어 세트 내의 명령어들은 모두 미 분기 명령어들로 이루어진다.The low
즉, 상기 각 명령어 세트 내의 명령어들 전체가 인출되는 동안 분기 여부를 판단할 필요가 없는 것이다. 자세한 설명은 도 3을 참조하여 하기로 한다.That is, it is not necessary to determine whether to branch while all the instructions in each instruction set are fetched. A detailed description will be given with reference to FIG. 3.
도 4 및 도 5를 참조하여, 상기 저전력 트레이스 캐쉬(150)에 대해 상세하게 설명하면, 종래의 트레이스 캐쉬는 복수 개의 명령어 세트(13a,13b,13c)가 트레이스 캐쉬(130)의 한 라인에 저장된다.4 and 5, the low
즉, 종래의 트레이스 캐쉬의 명령어 세트들(13a,13b,13c)은 명령어 세트의 구분이 없이 순차적으로 인출되어 실행될 뿐이다.That is, the
그러나, 본 발명의 저전력 트레이스 캐쉬(150)에 저장되는 명령어 세트들(151,152,153)은 서로 다른 라인에 저장된다. 다시 말해서, 한 라인의 하나의 명령어 세트가 저장되는 것이다.However, the
따라서, 본 발명의 저전력 트레이스 캐쉬(150)는 명령어 인출시에 하나의 명 령어 세트만을 인출하여 수행할 수 있으므로 소모되는 전력을 크게 줄일 수 있다.Therefore, the low-
상기 분기예측기(120)는 상기 프로세서 코어(110)로부터 다음에 실행될 명령어의 주소를 요청을 받고, 주소 요청이 있을 경우, 현재 인출되는 명령어가 분기 명령어인지 미 분기 명령어인지 판단하며, 분기 명령어일 경우, 분기하여 비순차적인 분기 목적지 주소의 명령어를 인출할지, 미 분기하여 순차적인 다음 주소의 명령어를 인출할지 결정하고, 상기 프로세서 코어(110)로 다음에 실행될 명령어의 주소를 전송한다.The
상기 명령어 세트 예측기(130)는 상기 주 명령어 캐쉬(140)에서 명령어를 인출할지, 상기 저전력 트레이스 캐쉬(150)에서 명령어를 인출할지를 결정하고, 상기 저전력 트레이스 캐쉬(150)에서 명령어가 인출될 경우, 인출될 명령어 세트를 예측한다.The
도 3을 참조하면, 상기 명령어 세트 예측기(130)는 카운터 값 계산기(131), 카운터 값 저장 테이블(132), 제어신호 발생기(133), 분기예측기 접근 제어기(134) 및 캐쉬 선택기(135)를 포함하여 이루어진다.Referring to FIG. 3, the
또한, 상기 카운터 값 계산기(131)는 상기 프로세서 코어(110)로 인출되는 명령어가 제1 분기 명령어이고, 상기 분기예측기(120)가 분기로 판단할 경우, 상기 제1 분기 명령어의 분기 목적지 주소에서부터 다음 분기 명령어가 인출되기 전까지의 명령어 주소의 수인 분기 수행 카운터 값을 생성하고, 상기 분기예측기(120)가 미 분기로 판단할 경우, 상기 제1 분기 목적어의 다음 주소인 미 분기 목적지 주소에서부터 다음 분기 명령어가 인출되기 전까지의 명령어 주소의 수인 분기 미수행 카운터 값을 생성한다. In addition, the
더욱 자세하게는, 상기 카운터 값 계산기(131)는 이전에 상기 제1 분기 명령어의 수행 후에 분기가 있었는지의 정보가 저장되는 분기 결과 레지스터(131d), 이전에 상기 제1 분기 명령어의 수행 후에 분기할 경우, 분기할 목적지의 주소인 분기 목적지 주소가 저장되는 분기 목적지 주소 레지스터(131a), 이전에 상기 제1 분기 명령어의 수행 후에 미 분기할 경우, 미 분기할 목적지인 다음 주소인 미분기 목적지 주소가 저장되는 미 분기 목적지 주소 레이스터(131b) 및 현재 실행되고 있는 분기 명령어의 주소가 저장되는 현재 분기 명령어 주소 레지스터(131c)를 포함하여 이루어진다.More specifically, the
또한, 상기 분기 수행 카운터 값은 상기 현재 분기 명령어 주소 레지스터(131c) 값에서 상기 분기 목적지 주소 레지스터(131a)의 값을 뺀 값으로 생성되고, 상기 분기 미수행 카운터 값은 상기 현재 분기 명령어 주소 레지스터(131c)의 값에서 상기 미 분기 목적지 주소 레지스터(131b)의 값을 뺀 값으로 생성된다.The branch performance counter value is generated by subtracting the value of the branch
또한, 상기 제1 분기 명령어의 수행 후에 분기가 있을 경우, 상기 분기 수행 카운터 값은 상기 제1 분기 명령어가 분기한 분기 목적지 주소와 일대일로 대응하여 아래에서 설명할 카운터 값 저장 테이블(132)에 저장된다.In addition, when there is a branch after the execution of the first branch instruction, the branch execution counter value is stored in the counter value storage table 132 which will be described below in one-to-one correspondence with the branch destination address branched by the first branch instruction. do.
또한, 상기 제1 분기 명령어가 분기한 분기 목적지 주소는 상기 분기예측기(120)의 분기 목적지 버퍼(12a)에 저장되어 있다.The branch destination address branched by the first branch instruction is stored in the
도 6을 참조하여 상기 분기 수행 카운터 값 및 분기 미수행 카운터 값이 계산되는 것을 예를 들어 설명하면, 먼저, 주소 100번의 분기 명령어가 주소 301번으 로 분기하여, 주소 301번에서 주소 379번까지의 미 분기 명령어가 순차로 인출되고(이때, 주소 301번에서 주소 379번까지의 미 분기 명령어들은 하나의 명령어 세트(153)로 상기 저전력 트레이스 캐쉬(150)의 한 라인에 저장된다.), 현재 주소 380번의 분기 명령어가 수행될 경우, 상기 현재 분기 명령어 주소 레지스터(131c)는 현재 주소인 '380'이 저장되고, 상기 분기 목적지 주소 레지스터(131a)에는 이전의 분기 명령어가 분기한 목적지 주소인 '301'이 저장된다. 다음, 상기 현재 분기 명령어 주소 레지스터(131c)의 값과 상기 분기 목적지 주소 레지스터(131a)의 값을 뺀 값인 '79'가 상기 분기 수행 카운터 값으로 계산된다.For example, referring to FIG. 6, the branch execution counter value and the branch non-execution counter value are calculated. First, a branch instruction of
한편, 주소 100번의 분기 명령어가 주소 101번으로 미 분기하여, 주소 101번에서 주소 299번까지의 미 분기 명령어가 순차적으로 인출되고, 현재 주소 300번의 분기 명령어가 수행될 경우, 상기 현재 분기 명령어 주소 레지스터(131c)에는 '300'이 저장되고, 상기 미분기 목적지 주소 레지스터(131b)에는 100번의 분기 명령어의 다음 주소인 '101'이 저장된다. 다음, 상기 현재 분기 명령어 주소 레지스터(131c)의 값과 상기 미 분기 목적지 주소 레지스터(131b)의 값을 뺀 값인 '199'가 상기 분기 미수행 카운터 값으로 계산된다.Meanwhile, if the branch instruction of
즉, 상기 분기 수행 카운터 값 및 상기 분기 미수행 카운터 값은 분기 여부를 판단하지 않아도 되는 미분기 명령어들의 실행 수와 동일한 것이다.That is, the branch performance counter value and the branch non-performance counter value are the same as the number of execution of the different branch instructions that do not need to determine whether to branch.
또한, 상기 카운터 값 저장 테이블(132)은 상기 분기 수행 카운터 값 및 상기 분기 미수행 카운터 값을 저장하고, 상기 분기 수행 카운터 값이 저장되는 분기 수행 카운터 값 저장테이블(132a) 및 상기 분기 미수행 카운터 값이 저장되는 분기 미수행 카운터 값 저장 테이블(132b)를 포함하여 이루어진다.In addition, the counter value storage table 132 stores the branch execution counter value and the branch execution counter value, and the branch execution counter value storage table 132a and the branch execution counter that store the branch execution counter value. And a non-branched counter value storage table 132b in which the values are stored.
또한, 상기 제어신호 발생기(133)는 상기 분기 수행 카운터 값 또는 상기 분기 미수행 카운터 값만큼의 제어신호를 발생한다. In addition, the
또한, 상기 제어신호 발생기(133)는 상기 분기 수행 카운터 값 또는 상기 분기 미수행 카운터 값을 감산하는 카운터(133a) 및 상기 제어신호를 발생하는 제어신호 발생수단(133b)을 포함하여 이루어진다.In addition, the
즉, 상기 제어신호 발생기(133)는 분기 여부를 판단하지 않아도 되는 미분기 명령어들의 실행 수만큼 상기 제어신호를 발생하는 것이다.That is, the
또한, 도 6을 참조하여 상기 저전력 트레이스 캐쉬(150)에 저장된 명령어 세트가 인출되는 것을 예를 들면, 현재 주소 100번의 분기 명령어가 수행되고, 상기 분기 목적지 버퍼에 분기할 목적지 주소인 301번이 저장되어 있으며, 상기 분기 수행 카운터 값 저장 테이블에 상기 분기할 목적지 주소인 301번과 일대일로 대응하여 저장된 분기 수행 카운터 값이 있다면, 79개의 제어신호를 발생시켜, 주소 301번의 미분기 명령어에서 주소 379번까지의 미분기 명령어가 상기 프로세서 코어(110)로 순차적으로 인출되게 한다.Also, referring to FIG. 6, for example, the instruction set stored in the low
또한, 현재 주소 100번의 분기 명령어가 수행되고, 상기 분기 목적지 버퍼에 분기할 목적지 주소가 저장되어 있지 않으며, 상기 분기 미수행 카운터 값 저장 테이블에 상기 현재 주소의 다음 주소인 101과 일대일로 대응되어 저장된 분기 미수행 카운터 값이 있다면, 199개의 제어신호를 발생시켜, 주소 101번의 미분기 명령어에서 주소 299번의 미분기 명령어까지 순차적으로 인출하게 된다.In addition, a branch instruction of the
이때, 인출되는 미분기 명령어들은 상기 명령어 세트(151,152,153)들 중 어느 하나의 세트에서 출력된다.At this time, the differentiator instructions to be fetched are output from any one of the
또한, 상기 분기예측기 접근 제어기(134)는 상기 제어신호 발생기(133)에서 제어신호가 발생할 경우, 상기 프로세서 코어(110)가 상기 분기예측기(120)로 접근하는 것을 차단한다. In addition, the branch
또한, 상기 캐쉬 선택기(135)는 상기 제어신호 발생기(133)에서 제어신호가 발생할 경우, 상기 주 명령어 캐쉬(140)에서 명령어가 인출되지 않게 하고, 상기 저전력 트레이스 캐쉬(150)에 저장된 명령어 세트들(151,152,153) 중 어느 하나의 명령어 세트가 인출되게 한다.In addition, the
따라서, 분기 여부를 판단할 필요가 없는 미분기 명령어들의 실행에 대해서는 상기 분기예측기(120)가 동작하지 않게 하여 전력 소모를 줄일 수 있고, 이때, 상기 주 명령어 캐쉬(140) 대신 상기 저전력 트레이스 캐쉬(150)에서 명령어를 인출하므로 전력소모를 매우 줄일 수 있는 것이다.Therefore, the
이상에서 살펴본 바와 같이 본 발명은 바람직한 실시예를 들어 도시하고 설명하였으나, 상기한 실시예에 한정되지 아니하며 본 발명의 정신을 벗어나지 않는 범위 내에서 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변경과 수정이 가능할 것이다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is clearly understood that the same is by way of illustration and example only and is not to be taken by way of limitation, Various changes and modifications will be possible.
도 1은 종래의 프로세서 시스템을 보여주는 도면,1 illustrates a conventional processor system;
도 2는 본 발명의 일 실시예에 따른 프로세서 시스템을 보여주는 도면, 2 illustrates a processor system according to an embodiment of the present invention;
도 3은 본 발명의 일 실시예에 따른 프로세서 시스템의 명령어 세트 예측기를 보여주는 도면, 3 illustrates an instruction set predictor of a processor system according to an embodiment of the present invention;
도 4는 종래의 트레이스 캐쉬를 설명하기 위한 도면, 4 is a view for explaining a conventional trace cache,
도 5는 본 발명의 일 실시예에 따른 프로세서 시스템의 저전력 트레이스 캐쉬를 설명하기 위한 도면, 5 is a view for explaining a low power trace cache of a processor system according to an embodiment of the present invention;
도 6은 본 발명의 일 실시예에 따른 프로세서 시스템의 동작 예를 설명하기 위한 도면이다.6 is a diagram for describing an example of an operation of a processor system according to an exemplary embodiment.
본 발명에 따른 도면들에서 실질적으로 동일한 구성과 기능을 가진 구성요소들에 대하여는 동일한 참조부호를 사용한다.In the drawings according to the present invention, the same reference numerals are used for components having substantially the same configuration and function.
<도면의 주요부분에 대한 부호의 설명><Description of the symbols for the main parts of the drawings>
100:프로세서 시스템 110:프로세서 코어100: processor system 110: processor core
120:분기예측기 130:명령어 세트 예측기120: branch predictor 130: instruction set predictor
131:카운터 값 계산기 131a:분기 목적지 주소 레지스터131:
131b:미분기 목적지 주소 레지스터 131c:현재 분기 명령어 주소 레지스터131b: Differentiation
131d:분기 결과 레지스터 132:카운터 값 저장 테이블131d: branch result register 132: counter value storage table
132a:분기 수행 카운터 값 저장 테이블 132a: Branch execution counter value storage table
132b:분기 미수행 카운터 값 저장 테이블132b: Store non-branched counter value table
133:제어신호 발생기 133a:카운터133:
133b:제어신호 발생수단 134:분기예측기 접근 제어기133b: control signal generating means 134: branch predictor access controller
135:캐쉬 선택기 140:주 명령어 캐쉬135: cache selector 140: main instruction cache
150:저전력 트레이스 캐쉬 151,152,153:명령어 세트150: low
Claims (6)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090132139A KR101086457B1 (en) | 2009-12-28 | 2009-12-28 | Processor system having low power trace cache and upcoming instruction set predictor |
PCT/KR2010/008233 WO2011081300A2 (en) | 2009-12-28 | 2010-11-22 | Processor system comprising a low-power trace cache and a command set predictor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090132139A KR101086457B1 (en) | 2009-12-28 | 2009-12-28 | Processor system having low power trace cache and upcoming instruction set predictor |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110075638A KR20110075638A (en) | 2011-07-06 |
KR101086457B1 true KR101086457B1 (en) | 2011-11-25 |
Family
ID=44226937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090132139A KR101086457B1 (en) | 2009-12-28 | 2009-12-28 | Processor system having low power trace cache and upcoming instruction set predictor |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR101086457B1 (en) |
WO (1) | WO2011081300A2 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ITMI20110387A1 (en) * | 2011-03-11 | 2012-09-12 | Antonio Sambusseti | HEMISPHERE FOR VESICAL ENLARGEMENT IN PATIENTS WITH LOW COMPLIANCE |
KR101294629B1 (en) * | 2011-08-31 | 2013-08-08 | 전남대학교산학협력단 | Brench predictor replacement method for 3D muticore processors and 3D muticore processors thereof |
US9262163B2 (en) * | 2012-12-29 | 2016-02-16 | Intel Corporation | Real time instruction trace processors, methods, and systems |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6247097B1 (en) * | 1999-01-22 | 2001-06-12 | International Business Machines Corporation | Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions |
KR100347865B1 (en) * | 1999-11-15 | 2002-08-09 | 삼성전자 주식회사 | A branch prediction method using address trace |
US8069336B2 (en) * | 2003-12-03 | 2011-11-29 | Globalfoundries Inc. | Transitioning from instruction cache to trace cache on label boundaries |
-
2009
- 2009-12-28 KR KR1020090132139A patent/KR101086457B1/en active IP Right Grant
-
2010
- 2010-11-22 WO PCT/KR2010/008233 patent/WO2011081300A2/en active Application Filing
Non-Patent Citations (1)
Title |
---|
논문* |
Also Published As
Publication number | Publication date |
---|---|
KR20110075638A (en) | 2011-07-06 |
WO2011081300A3 (en) | 2011-09-15 |
WO2011081300A2 (en) | 2011-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4027620B2 (en) | Branch prediction apparatus, processor, and branch prediction method | |
US8082420B2 (en) | Method and apparatus for executing instructions | |
KR20150056042A (en) | Adaptive prefetching in a data processing apparatus | |
JP2006134331A (en) | Processor with cache way prediction using branch target address and method thereof | |
US20090063777A1 (en) | Cache system | |
JP2004171177A (en) | Cache system and cache memory controller | |
JP6627629B2 (en) | Arithmetic processing device and method of controlling arithmetic processing device | |
CN113407119B (en) | Data prefetching method, data prefetching device and processor | |
KR20090095633A (en) | Methods and apparatus for low-complexity instruction prefetch system | |
US11379239B2 (en) | Apparatus and method for making predictions for instruction flow changing instructions | |
US11249762B2 (en) | Apparatus and method for handling incorrect branch direction predictions | |
KR101086457B1 (en) | Processor system having low power trace cache and upcoming instruction set predictor | |
JP2008186233A (en) | Instruction cache pre-fetch control method and device thereof | |
JP2011065503A (en) | Cache memory system and control method for way prediction of cache memory | |
WO2011151944A1 (en) | Cache memory device, program transformation device, cache memory control method, and program transformation method | |
JP2009116621A (en) | Arithmetic processing apparatus | |
KR20230023801A (en) | Reusing fetched and flushed instructions after an instruction pipeline flush in response to a hazard in the processor to reduce instruction refetching. | |
US9158696B2 (en) | Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses | |
US10922082B2 (en) | Branch predictor | |
US11003581B2 (en) | Arithmetic processing device and arithmetic processing method of controlling prefetch of cache memory | |
CN112612728A (en) | Cache management method, device and equipment | |
US9135011B2 (en) | Next branch table for use with a branch predictor | |
KR101076815B1 (en) | Cache system having branch target address cache | |
US9645825B2 (en) | Instruction cache with access locking | |
US10860324B1 (en) | Apparatus and method for making predictions for branch instructions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20141024 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20151008 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20191023 Year of fee payment: 9 |