KR20110075638A - 저 전력 트레이스 캐쉬 및 명령어 세트 예측기를 구비한 프로세서 시스템 - Google Patents

저 전력 트레이스 캐쉬 및 명령어 세트 예측기를 구비한 프로세서 시스템 Download PDF

Info

Publication number
KR20110075638A
KR20110075638A KR1020090132139A KR20090132139A KR20110075638A KR 20110075638 A KR20110075638 A KR 20110075638A KR 1020090132139 A KR1020090132139 A KR 1020090132139A KR 20090132139 A KR20090132139 A KR 20090132139A KR 20110075638 A KR20110075638 A KR 20110075638A
Authority
KR
South Korea
Prior art keywords
branch
instruction
predictor
counter value
address
Prior art date
Application number
KR1020090132139A
Other languages
English (en)
Other versions
KR101086457B1 (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 KR1020090132139A priority Critical patent/KR101086457B1/ko
Priority to PCT/KR2010/008233 priority patent/WO2011081300A2/ko
Publication of KR20110075638A publication Critical patent/KR20110075638A/ko
Application granted granted Critical
Publication of KR101086457B1 publication Critical patent/KR101086457B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction 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)를 포함하는 프로세서 시스템에 있어서, 분기가 일어나지 않을 것으로 예측되는 명령어들을 하나의 세트로 하여 복수 개의 명령어 세트를 저장하는 저전력 트레이스 캐쉬 및 다음에 실행될 명령어 세트를 예측하여 하나의 명령어 세트가 인출되는 동안 프로세서 코어에서 분기예측기 및 주 명령어 캐쉬로의 접근을 차단하는 명령어 세트 예측기를 구비하여 상기 분기예측기의 동작에 의해 소비되는 전력을 절감할 수 있는 프로세서 시스템에 관한 것이다.
프로세서 시스템, 프로세서 코어, 분기예측기, 주 명령어 캐쉬

Description

저 전력 트레이스 캐쉬 및 명령어 세트 예측기를 구비한 프로세서 시스템{Processor system having low power trace cache and upcoming instruction set predictor}
본 발명은 프로세서 시스템에 관한 것으로, 보다 구체적으로는 분기예측기(Branch predictor)를 포함하는 프로세서 시스템에 있어서, 분기가 일어나지 않을 것으로 예측되는 명령어들을 하나의 세트로 하여 복수 개의 명령어 세트를 저장하는 저전력 트레이스 캐쉬 및 다음에 실행될 명령어 세트를 예측하여 하나의 명령어 세트가 인출되는 동안 프로세서 코어에서 분기예측기 및 주 명령어 캐쉬로의 접근을 차단하는 명령어 세트 예측기를 구비하여 상기 분기예측기의 동작에 의해 소비되는 전력을 절감할 수 있는 프로세서 시스템에 관한 것이다.
일반적으로 프로세서 시스템은, 명령어를 요청하여 인출하는 프로세서 코어 및 주메모리에 저장된 명령어들 중 자주 사용되는 명령어들이 저장되는 주 명령어 캐쉬를 포함하여 이루어진다.
또한, 상기 프로세서 코어는 중앙처리장치(CPU:Central Processing unit)로도 불리며, 컴퓨터, 휴대전화 등 다양한 전자/정보기기의 중앙처리장치로 사용된다.
도 1은 종래의 프로세서 시스템을 보여주는 도면이다.
도 1을 참조하면, 종래의 프로세서 시스템(10)은 프로세서 코어(11), 분기예측기(12) 및 주 명령어 캐쉬(13)을 포함하여 이루어진다.
상기 프로세서 코어(11)는 전술한 바와 같이 상기 주 명령어 캐쉬(13)에서 명령어를 인출하여 외부기기를 제어하고, 상기 주 명령어 캐쉬(13)에는 자주 사용되는 명령어들이 저장된다.
또한, 상기 주 명령어 캐쉬(13)에 저장되는 명령어들은 미 분기 명령어와 분기 명령어로 구분된다.
상기 분기예측기(12)는 주 명령어 캐쉬에서 인출되는 명령어의 미스(miss)를 줄이고, 다음에 수행될 명령어 예측 성공률(hit rate)를 높이기 구비된다.
또한, 상기 분기예측기(12)는 분기 명령어가 인출될 때, 비순차적인 분기 목적지 주소로 분기하여 명령어를 인출할 것인지, 순차적인 다음 주소로 미 분기하여 명령어를 인출할지 결정하는 역할을 한다.
또한, 상기 분기예측기(12)는 임의의 분기 명령어에 대해 과거에 분기가 있었는지 없었는지에 대한 정보가 저장되는 패턴 이력 테이블(12b,Pattern History Table) 및 분기한 목적지의 주소 정보가 저장되는 분기 목적지 버퍼(12a,Branch Target Buffer)를 포함하여 이루어진다.
또한, 상기 분기예측기(12)를 이용하여 상기 프로세서 코어(11)가 명령어를 인출하는 과정을 간단히 살펴보면, 먼저, 상기 프로세서 코어(11)로부터 명령어 요청이 발생하면, 상기 주 명령어 캐쉬(13)로 접근하여 명령어를 인출한다. 동시에, 상기 프로세서 코어(11)는 상기 분기예측기(12)에 접근하여 다음에 수행될 명령어의 주소를 요청한다.
다음, 상기 분기예측기(12)는 현재 요청된 명령어의 주소를 이용하여 상기 패턴 이력 테이블(12b)을 통해 상기 현재 요청된 명령어 수행 후에 분기가 있었는지 확인하고, 분기가 있었던 경우 상기 분기 목적지 버퍼(12a)에 저장된 분기 목적지 주소를 인출해준다.
다음, 상기 프로세서 코어(11)는 상기 분기 목적지 주소에 저장된 명령어를 인출하여 수행한다.
즉, 종래의 프로세서 시스템(10)은 상기 분기예측기(12)를 이용하여, 상기 프로세서 코어(11)로 하여금 매우 높은 예측 성공률로 빠르게 명령어를 인출할 수 있게 해준다.
그러나, 종래의 분기예측기(12)를 구비하는 프로세서 시스템(10)은 프로세서 코어(11)가 하나의 명령어를 인출할 때마다 상기 분기예측기(12)로 접근하여, 상기 분기예측기(12)를 활성화시키므로 매우 많은 전력이 소모되는 문제점이 있다.
본 발명자들은 프로세서 시스템의 전력 소모를 최소화하고자 노력한 결과, 프로세서 코어가 매 명령어를 인출할 때마다 분기예측기를 활성화하는 것을 방지하고, 저 전력 트레이스 캐쉬 또는 주 명령어 캐쉬에서 선택적으로 명령어를 인출할 수 있는 기술적 구성을 개발하게 되어 본 발명을 완성하게 되었다.
따라서, 본 발명의 목적은 저 전력 트레이스 캐쉬를 이용하여 명령어 인출시에 소모되는 전력을 최소화할 수 있는 프로세서 시스템을 제공하는 것이다.
또한, 본 발명의 다른 목적은 프로세서 코어가 매 명령어 인출 사이클마다 분기예측기를 활성화하는 것을 방지하여 분기예측기의 작동시에 소모되는 전력을 최소화할 수 있는 프로세서 시스템을 제공하는 것이다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기의 목적을 달성하기 위하여 본 발명은 복수 개의 미 분기 명령어 및 분기 명령어가 저장되는 주 명령어 캐쉬, 상기 주 명령어 캐쉬의 명령어들이 인출되게 하는 프로세서 코어 및 상기 명령어가 인출될 때마다, 상기 명령어가 미 분기 명령어인지 분기 명령어인지 확인하고, 상기 명령어가 분기 명령어일 경우, 비순차적인 분기 목적지 주소로 분기하여 명령어를 인출할지, 순차적인 다음 주소로 미 분기하여 명령어를 인출할지를 결정하는 분기예측기(Branch Predictor)를 포함하는 프로세서 시스템에 있어서, 상기 프로세서 코어로 인출되는 명령어들 중, 복수 개의 명령어들을 하나의 명령어 세트로 하는 복수 개의 명령어 세트를 저장하는 저전력 트레이스 캐쉬(Low power trace cache) 및 상기 프로세서 코어에서 요청되는 명령어가 제1 분기 명령어이고, 상기 분기예측기에서 분기로 결정될 경우, 상기 제1 분기 명령어의 분기 목적지 주소에서부터 다음 분기 명령어가 인출되기 전까지의 명령어 주소의 수인 분기 수행 카운터 값을 저장하고, 상기 분기예측기에서 미 분기로 결정될 경우, 상기 제1 분기 명령어의 다음 주소인 미 분기 목적지 주소에서부터 다음 분기 명령어가 인출되기 전까지의 명령어 주소의 수인 분기 미수행 카운터 값을 저장하며, 이후, 상기 제1 분기 명령어의 재인출 요청이 있는 경우 상기 분기 목적지 주소 또는 상기 미 분기 목적지 주소로 시작하는 명령어 세트의 명령어들을 순차적으로 인출하되, 상기 분기 수행 카운터 값 또는 상기 분기 미수행 카운터 값만큼의 개수의 명령어들을 순차적으로 인출되게 하는 명령어 세트 예측기를 포함하는 프로세서 시스템을 제공한다.
바람직한 실시예에 있어서, 상기 저전력 트레이스 캐쉬에 저장되는 각 명령어 세트는 상기 프로세서 코어로 인출되어 수행되는 명령어들 중 미 분기 명령어들의 집합으로 이루어지며, 상기 저전력 트레이스 캐쉬의 한 라인에 하나의 명령어 세트가 저장된다.
바람직한 실시예에 있어서, 상기 프로세서 코어로 명령어 세트가 인출될 경우, 상기 명령어 세트 예측기는 상기 프로세서 코어의 명령어 요청이 상기 분기예측기로 전달되지 않게 하여, 상기 분기예측기가 동작하지 않게 한다.
바람직한 실시예에 있어서, 상기 분기예측기는 임의의 분기 명령어에 대해 다음에 수행될 분기 목적지 주소 정보를 저장하는 분기 목적지 버퍼를 포함하고, 상기 명령어 세트 예측기에 저장되는 분기 수행 카운터 값은 상기 분기 목적지 버퍼에 저장되는 분기 목적지 주소와 일대일로 대응되어 저장되며, 상기 명령어 세트 예측기는 상기 명령어 세트들 중 상기 분기 목적지 버퍼에 저장된 주소로 시작하는 명령어 세트가 인출되게 한다.
바람직한 실시예에 있어서, 상기 명령어 세트 예측기는 상기 분기 수행 카운터 값 및 상기 분기 미 수행 카운터 값을 계산하여 생성하는 카운터 값 계산기, 상기 분기 수행 카운터 값 및 상기 분기 미 수행 카운터 값이 저장되는 카운터 값 저장 테이블, 상기 카운터 값의 수만큼 제어신호를 발생하는 제어신호 발생기, 상기 제어신호의 발생이 있는 경우, 상기 프로세서 코어의 명령어 요청이 상기 분기예측기로 입력되는 것을 차단하는 분기예측기 접근 제어기 및 상기 제어신호의 발생이 있는 경우, 상기 주 명령어 캐쉬의 명령어들이 인출되지 않게 하고, 상기 저전력 트레이스 캐쉬의 명령어 세트가 인출되게 하는 캐쉬 선택기를 포함한다.
바람직한 실시예에 있어서, 상기 카운터 값 계산기는 이전에 인출된 분기 명령어에서 분기할 경우, 분기할 목적지의 주소인 분기 목적지 주소가 저장되는 분기 목적지 주소 레지스터, 이전에 인출된 분기 명령어에서 미 분기할 경우, 미 분기할 목적지인 다음 주소인 미 분기 목적지 주소가 저장되는 미 분기 목적지 주소 레지스터 및 현재 인출될 분기 명령어의 주소인 현재 분기 명령어 주소가 저장되는 현재 분기 명령어 주소 레지스터를 포함하며, 상기 이전에 인출된 분기 명령어에서 분기할 경우, 상기 현재 분기 명령어 주소의 값에서 상기 분기 목적지 주소의 값을 뺀 값을 상기 분기 수행 카운터 값으로 계산하고, 상기 이전에 인출된 분기 명령어에서 분기하지 않을 경우, 상기 현재 분기 명령어 주소의 값에서 상기 미 분기 목적지 주소의 값을 뺀 값을 상기 분기 미 수행 카운터 값으로 계산한다.
본 발명은 다음과 같은 우수한 효과를 가진다.
먼저, 본 발명의 프로세서 시스템에 의하면 분기 여부 판단이 필요없는 미분기 명령어가 수행될 때, 명령어 세트 예측기를 이용하여 프로세서 코어가 분기예측기로 접근하는 것을 차단함으로써 프로세서 코어가 분기예측기로 접근할 때, 발생하는 전력소모를 줄일 수 있는 효과가 있다.
또한, 본 발명의 프로세서 시스템에 의하면 한 라인에 하나의 명령어 세트가 저장되는 저전력 트레이스 캐쉬를 이용하여 주 명령어 캐쉬에 우선하여 명령어 세트를 인출하게 함으로써 전력소모를 줄일 수 있는 효과가 있다.
본 발명에서 사용되는 용어는 가능한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 특정한 경우는 출원인이 임의로 선정한 용어도 있는데 이 경우에는 단순한 용어의 명칭이 아닌 발명의 상세한 설명 부분에 기재되거나 사용된 의미를 고려하여 그 의미가 파악되어야 할 것이다.
이하, 첨부한 도면에 도시된 바람직한 실시예들을 참조하여 본 발명의 기술적 구성을 상세하게 설명한다.
그러나, 본 발명은 여기서 설명되는 실시예에 한정되지 않고 다른 형태로 구체화 될 수도 있다. 명세서 전체에 걸쳐 동일한 참조번호는 동일한 구성요소를 나타낸다.
도 2는 본 발명의 일 실시예에 따른 프로세서 시스템을 보여주는 도면, 도 3은 본 발명의 일 실시예에 따른 프로세서 시스템의 명령어 세트 예측기를 보여주는 도면, 도 4는 종래의 트레이스 캐쉬를 설명하기 위한 도면, 도 5는 본 발명의 일 실시예에 따른 프로세서 시스템의 저전력 트레이스 캐쉬를 설명하기 위한 도면, 도 6은 본 발명의 일 실시예에 따른 프로세서 시스템의 동작 예를 설명하기 위한 도면이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 프로세서 시스템(100)은 프로세서 코어(110), 주 명령어 캐쉬(140), 저전력 트레이스 캐쉬(150), 분기예측기(120) 및 명령어 세트 예측기(130)를 포함하여 이루어진다.
상기 프로세서 코어(110)는 입력수단에 의해 입력되는 명령신호에 따라 아래에서 설명할 주 명령어 캐쉬(140) 또는 저전력 트레이스 캐쉬(150)에 저장된 명령 어를 인출하고, 인출되는 명령어를 이용하여 외부기기를 동작시킨다.
예를 들면, 상기 프로세서 코어(110)는 컴퓨터나 휴대전화 등, 다양한 전자/정보기기의 중앙처리장치일 수 있다.
상기 주 명령어 캐쉬(140)는 외부의 주 메모리(도시하지 않음)에 저장된 명령어들 중 자주 인출되는 명령어들이 저장되는 매체로써, 저장되는 명령어들은 미 분기 명령어 및 분기 명령어로 이루어진다.
상기 저전력 트레이스 캐쉬(150)는 상기 주 명령어 캐쉬(140)에서 인출되어 수행되는 명령어들의 집합인 복수 개의 명령어 세트가 저장되며, 상기 각 명령어 세트 내의 명령어들은 모두 미 분기 명령어들로 이루어진다.
즉, 상기 각 명령어 세트 내의 명령어들 전체가 인출되는 동안 분기 여부를 판단할 필요가 없는 것이다. 자세한 설명은 도 3을 참조하여 하기로 한다.
도 4 및 도 5를 참조하여, 상기 저전력 트레이스 캐쉬(150)에 대해 상세하게 설명하면, 종래의 트레이스 캐쉬는 복수 개의 명령어 세트(13a,13b,13c)가 트레이스 캐쉬(130)의 한 라인에 저장된다.
즉, 종래의 트레이스 캐쉬의 명령어 세트들(13a,13b,13c)은 명령어 세트의 구분이 없이 순차적으로 인출되어 실행될 뿐이다.
그러나, 본 발명의 저전력 트레이스 캐쉬(150)에 저장되는 명령어 세트들(151,152,153)은 서로 다른 라인에 저장된다. 다시 말해서, 한 라인의 하나의 명령어 세트가 저장되는 것이다.
따라서, 본 발명의 저전력 트레이스 캐쉬(150)는 명령어 인출시에 하나의 명 령어 세트만을 인출하여 수행할 수 있으므로 소모되는 전력을 크게 줄일 수 있다.
상기 분기예측기(120)는 상기 프로세서 코어(110)로부터 다음에 실행될 명령어의 주소를 요청을 받고, 주소 요청이 있을 경우, 현재 인출되는 명령어가 분기 명령어인지 미 분기 명령어인지 판단하며, 분기 명령어일 경우, 분기하여 비순차적인 분기 목적지 주소의 명령어를 인출할지, 미 분기하여 순차적인 다음 주소의 명령어를 인출할지 결정하고, 상기 프로세서 코어(110)로 다음에 실행될 명령어의 주소를 전송한다.
상기 명령어 세트 예측기(130)는 상기 주 명령어 캐쉬(140)에서 명령어를 인출할지, 상기 저전력 트레이스 캐쉬(150)에서 명령어를 인출할지를 결정하고, 상기 저전력 트레이스 캐쉬(150)에서 명령어가 인출될 경우, 인출될 명령어 세트를 예측한다.
도 3을 참조하면, 상기 명령어 세트 예측기(130)는 카운터 값 계산기(131), 카운터 값 저장 테이블(132), 제어신호 발생기(133), 분기예측기 접근 제어기(134) 및 캐쉬 선택기(135)를 포함하여 이루어진다.
또한, 상기 카운터 값 계산기(131)는 상기 프로세서 코어(110)로 인출되는 명령어가 제1 분기 명령어이고, 상기 분기예측기(120)가 분기로 판단할 경우, 상기 제1 분기 명령어의 분기 목적지 주소에서부터 다음 분기 명령어가 인출되기 전까지의 명령어 주소의 수인 분기 수행 카운터 값을 생성하고, 상기 분기예측기(120)가 미 분기로 판단할 경우, 상기 제1 분기 목적어의 다음 주소인 미 분기 목적지 주소에서부터 다음 분기 명령어가 인출되기 전까지의 명령어 주소의 수인 분기 미수행 카운터 값을 생성한다.
더욱 자세하게는, 상기 카운터 값 계산기(131)는 이전에 상기 제1 분기 명령어의 수행 후에 분기가 있었는지의 정보가 저장되는 분기 결과 레지스터(131d), 이전에 상기 제1 분기 명령어의 수행 후에 분기할 경우, 분기할 목적지의 주소인 분기 목적지 주소가 저장되는 분기 목적지 주소 레지스터(131a), 이전에 상기 제1 분기 명령어의 수행 후에 미 분기할 경우, 미 분기할 목적지인 다음 주소인 미분기 목적지 주소가 저장되는 미 분기 목적지 주소 레이스터(131b) 및 현재 실행되고 있는 분기 명령어의 주소가 저장되는 현재 분기 명령어 주소 레지스터(131c)를 포함하여 이루어진다.
또한, 상기 분기 수행 카운터 값은 상기 현재 분기 명령어 주소 레지스터(131c) 값에서 상기 분기 목적지 주소 레지스터(131a)의 값을 뺀 값으로 생성되고, 상기 분기 미수행 카운터 값은 상기 현재 분기 명령어 주소 레지스터(131c)의 값에서 상기 미 분기 목적지 주소 레지스터(131b)의 값을 뺀 값으로 생성된다.
또한, 상기 제1 분기 명령어의 수행 후에 분기가 있을 경우, 상기 분기 수행 카운터 값은 상기 제1 분기 명령어가 분기한 분기 목적지 주소와 일대일로 대응하여 아래에서 설명할 카운터 값 저장 테이블(132)에 저장된다.
또한, 상기 제1 분기 명령어가 분기한 분기 목적지 주소는 상기 분기예측기(120)의 분기 목적지 버퍼(12a)에 저장되어 있다.
도 6을 참조하여 상기 분기 수행 카운터 값 및 분기 미수행 카운터 값이 계산되는 것을 예를 들어 설명하면, 먼저, 주소 100번의 분기 명령어가 주소 301번으 로 분기하여, 주소 301번에서 주소 379번까지의 미 분기 명령어가 순차로 인출되고(이때, 주소 301번에서 주소 379번까지의 미 분기 명령어들은 하나의 명령어 세트(153)로 상기 저전력 트레이스 캐쉬(150)의 한 라인에 저장된다.), 현재 주소 380번의 분기 명령어가 수행될 경우, 상기 현재 분기 명령어 주소 레지스터(131c)는 현재 주소인 '380'이 저장되고, 상기 분기 목적지 주소 레지스터(131a)에는 이전의 분기 명령어가 분기한 목적지 주소인 '301'이 저장된다. 다음, 상기 현재 분기 명령어 주소 레지스터(131c)의 값과 상기 분기 목적지 주소 레지스터(131a)의 값을 뺀 값인 '79'가 상기 분기 수행 카운터 값으로 계산된다.
한편, 주소 100번의 분기 명령어가 주소 101번으로 미 분기하여, 주소 101번에서 주소 299번까지의 미 분기 명령어가 순차적으로 인출되고, 현재 주소 300번의 분기 명령어가 수행될 경우, 상기 현재 분기 명령어 주소 레지스터(131c)에는 '300'이 저장되고, 상기 미분기 목적지 주소 레지스터(131b)에는 100번의 분기 명령어의 다음 주소인 '101'이 저장된다. 다음, 상기 현재 분기 명령어 주소 레지스터(131c)의 값과 상기 미 분기 목적지 주소 레지스터(131b)의 값을 뺀 값인 '199'가 상기 분기 미수행 카운터 값으로 계산된다.
즉, 상기 분기 수행 카운터 값 및 상기 분기 미수행 카운터 값은 분기 여부를 판단하지 않아도 되는 미분기 명령어들의 실행 수와 동일한 것이다.
또한, 상기 카운터 값 저장 테이블(132)은 상기 분기 수행 카운터 값 및 상기 분기 미수행 카운터 값을 저장하고, 상기 분기 수행 카운터 값이 저장되는 분기 수행 카운터 값 저장테이블(132a) 및 상기 분기 미수행 카운터 값이 저장되는 분기 미수행 카운터 값 저장 테이블(132b)를 포함하여 이루어진다.
또한, 상기 제어신호 발생기(133)는 상기 분기 수행 카운터 값 또는 상기 분기 미수행 카운터 값만큼의 제어신호를 발생한다.
또한, 상기 제어신호 발생기(133)는 상기 분기 수행 카운터 값 또는 상기 분기 미수행 카운터 값을 감산하는 카운터(133a) 및 상기 제어신호를 발생하는 제어신호 발생수단(133b)을 포함하여 이루어진다.
즉, 상기 제어신호 발생기(133)는 분기 여부를 판단하지 않아도 되는 미분기 명령어들의 실행 수만큼 상기 제어신호를 발생하는 것이다.
또한, 도 6을 참조하여 상기 저전력 트레이스 캐쉬(150)에 저장된 명령어 세트가 인출되는 것을 예를 들면, 현재 주소 100번의 분기 명령어가 수행되고, 상기 분기 목적지 버퍼에 분기할 목적지 주소인 301번이 저장되어 있으며, 상기 분기 수행 카운터 값 저장 테이블에 상기 분기할 목적지 주소인 301번과 일대일로 대응하여 저장된 분기 수행 카운터 값이 있다면, 79개의 제어신호를 발생시켜, 주소 301번의 미분기 명령어에서 주소 379번까지의 미분기 명령어가 상기 프로세서 코어(110)로 순차적으로 인출되게 한다.
또한, 현재 주소 100번의 분기 명령어가 수행되고, 상기 분기 목적지 버퍼에 분기할 목적지 주소가 저장되어 있지 않으며, 상기 분기 미수행 카운터 값 저장 테이블에 상기 현재 주소의 다음 주소인 101과 일대일로 대응되어 저장된 분기 미수행 카운터 값이 있다면, 199개의 제어신호를 발생시켜, 주소 101번의 미분기 명령어에서 주소 299번의 미분기 명령어까지 순차적으로 인출하게 된다.
이때, 인출되는 미분기 명령어들은 상기 명령어 세트(151,152,153)들 중 어느 하나의 세트에서 출력된다.
또한, 상기 분기예측기 접근 제어기(134)는 상기 제어신호 발생기(133)에서 제어신호가 발생할 경우, 상기 프로세서 코어(110)가 상기 분기예측기(120)로 접근하는 것을 차단한다.
또한, 상기 캐쉬 선택기(135)는 상기 제어신호 발생기(133)에서 제어신호가 발생할 경우, 상기 주 명령어 캐쉬(140)에서 명령어가 인출되지 않게 하고, 상기 저전력 트레이스 캐쉬(150)에 저장된 명령어 세트들(151,152,153) 중 어느 하나의 명령어 세트가 인출되게 한다.
따라서, 분기 여부를 판단할 필요가 없는 미분기 명령어들의 실행에 대해서는 상기 분기예측기(120)가 동작하지 않게 하여 전력 소모를 줄일 수 있고, 이때, 상기 주 명령어 캐쉬(140) 대신 상기 저전력 트레이스 캐쉬(150)에서 명령어를 인출하므로 전력소모를 매우 줄일 수 있는 것이다.
이상에서 살펴본 바와 같이 본 발명은 바람직한 실시예를 들어 도시하고 설명하였으나, 상기한 실시예에 한정되지 아니하며 본 발명의 정신을 벗어나지 않는 범위 내에서 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변경과 수정이 가능할 것이다.
도 1은 종래의 프로세서 시스템을 보여주는 도면,
도 2는 본 발명의 일 실시예에 따른 프로세서 시스템을 보여주는 도면,
도 3은 본 발명의 일 실시예에 따른 프로세서 시스템의 명령어 세트 예측기를 보여주는 도면,
도 4는 종래의 트레이스 캐쉬를 설명하기 위한 도면,
도 5는 본 발명의 일 실시예에 따른 프로세서 시스템의 저전력 트레이스 캐쉬를 설명하기 위한 도면,
도 6은 본 발명의 일 실시예에 따른 프로세서 시스템의 동작 예를 설명하기 위한 도면이다.
본 발명에 따른 도면들에서 실질적으로 동일한 구성과 기능을 가진 구성요소들에 대하여는 동일한 참조부호를 사용한다.
<도면의 주요부분에 대한 부호의 설명>
100:프로세서 시스템 110:프로세서 코어
120:분기예측기 130:명령어 세트 예측기
131:카운터 값 계산기 131a:분기 목적지 주소 레지스터
131b:미분기 목적지 주소 레지스터 131c:현재 분기 명령어 주소 레지스터
131d:분기 결과 레지스터 132:카운터 값 저장 테이블
132a:분기 수행 카운터 값 저장 테이블
132b:분기 미수행 카운터 값 저장 테이블
133:제어신호 발생기 133a:카운터
133b:제어신호 발생수단 134:분기예측기 접근 제어기
135:캐쉬 선택기 140:주 명령어 캐쉬
150:저전력 트레이스 캐쉬 151,152,153:명령어 세트

Claims (6)

  1. 복수 개의 미 분기 명령어 및 분기 명령어가 저장되는 주 명령어 캐쉬, 상기 주 명령어 캐쉬의 명령어들이 인출되게 하는 프로세서 코어 및 상기 명령어가 인출될 때마다, 상기 명령어가 미 분기 명령어인지 분기 명령어인지 확인하고, 상기 명령어가 분기 명령어일 경우, 비순차적인 분기 목적지 주소로 분기하여 명령어를 인출할지, 순차적인 다음 주소로 미 분기하여 명령어를 인출할지를 결정하는 분기예측기(Branch Predictor)를 포함하는 프로세서 시스템에 있어서,
    상기 프로세서 코어로 인출되는 명령어들 중, 복수 개의 명령어들을 하나의 명령어 세트로 하는 복수 개의 명령어 세트를 저장하는 저전력 트레이스 캐쉬(Low power trace cache); 및
    상기 프로세서 코어에서 요청되는 명령어가 제1 분기 명령어이고, 상기 분기예측기에서 분기로 결정될 경우, 상기 제1 분기 명령어의 분기 목적지 주소에서부터 다음 분기 명령어가 인출되기 전까지의 명령어 주소의 수인 분기 수행 카운터 값을 저장하고, 상기 분기예측기에서 미 분기로 결정될 경우, 상기 제1 분기 명령어의 다음 주소인 미 분기 목적지 주소에서부터 다음 분기 명령어가 인출되기 전까지의 명령어 주소의 수인 분기 미수행 카운터 값을 저장하며, 이후, 상기 제1 분기 명령어의 재인출 요청이 있는 경우 상기 분기 목적지 주소 또는 상기 미 분기 목적지 주소로 시작하는 명령어 세트의 명령어들을 순차적으로 인출하되, 상기 분기 수행 카운터 값 또는 상기 분기 미수행 카운터 값만큼의 개수의 명령어들을 순차적으 로 인출되게 하는 명령어 세트 예측기;를 포함하는 프로세서 시스템.
  2. 제 1 항에 있어서,
    상기 저전력 트레이스 캐쉬에 저장되는 각 명령어 세트는 상기 프로세서 코어로 인출되어 수행되는 명령어들 중 미 분기 명령어들의 집합으로 이루어지며,
    상기 저전력 트레이스 캐쉬의 한 라인에 하나의 명령어 세트가 저장되는 것을 특징으로 하는 프로세서 시스템.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 프로세서 코어로 명령어 세트가 인출될 경우, 상기 명령어 세트 예측기는 상기 프로세서 코어의 명령어 요청이 상기 분기예측기로 전달되지 않게 하여, 상기 분기예측기가 동작하지 않게 하는 것을 특징으로 하는 프로세서 시스템.
  4. 제 3 항에 있어서,
    상기 분기예측기는 임의의 분기 명령어에 대해 다음에 수행될 분기 목적지 주소 정보를 저장하는 분기 목적지 버퍼를 포함하고,
    상기 명령어 세트 예측기에 저장되는 분기 수행 카운터 값은 상기 분기 목적 지 버퍼에 저장되는 분기 목적지 주소와 일대일로 대응되어 저장되며,
    상기 명령어 세트 예측기는 상기 명령어 세트들 중 상기 분기 목적지 버퍼에 저장된 주소로 시작하는 명령어 세트가 인출되게 하는 것을 특징으로 하는 이용한 프로세서 시스템.
  5. 제 4 항에 있어서,
    상기 명령어 세트 예측기:는
    상기 분기 수행 카운터 값 및 상기 분기 미 수행 카운터 값을 계산하여 생성하는 카운터 값 계산기;
    상기 분기 수행 카운터 값 및 상기 분기 미 수행 카운터 값이 저장되는 카운터 값 저장 테이블;
    상기 카운터 값의 수만큼 제어신호를 발생하는 제어신호 발생기;
    상기 제어신호의 발생이 있는 경우, 상기 프로세서 코어의 명령어 요청이 상기 분기예측기로 입력되는 것을 차단하는 분기예측기 접근 제어기; 및
    상기 제어신호의 발생이 있는 경우, 상기 주 명령어 캐쉬의 명령어들이 인출되지 않게 하고, 상기 저전력 트레이스 캐쉬의 명령어 세트가 인출되게 하는 캐쉬 선택기;를 포함하는 것을 특징으로 하는 이용한 프로세서 시스템.
  6. 제 5 항에 있어서,
    상기 카운터 값 계산기:는
    이전에 인출된 분기 명령어에서 분기할 경우, 분기할 목적지의 주소인 분기 목적지 주소가 저장되는 분기 목적지 주소 레지스터;
    이전에 인출된 분기 명령어에서 미 분기할 경우, 미 분기할 목적지인 다음 주소인 미 분기 목적지 주소가 저장되는 미 분기 목적지 주소 레지스터; 및
    현재 인출될 분기 명령어의 주소인 현재 분기 명령어 주소가 저장되는 현재 분기 명령어 주소 레지스터;를 포함하며,
    상기 이전에 인출된 분기 명령어에서 분기할 경우, 상기 현재 분기 명령어 주소의 값에서 상기 분기 목적지 주소의 값을 뺀 값을 상기 분기 수행 카운터 값으로 계산하고,
    상기 이전에 인출된 분기 명령어에서 분기하지 않을 경우, 상기 현재 분기 명령어 주소의 값에서 상기 미 분기 목적지 주소의 값을 뺀 값을 상기 분기 미 수행 카운터 값으로 계산하는 것을 특징으로 하는 이용한 프로세서 시스템,
KR1020090132139A 2009-12-28 2009-12-28 저 전력 트레이스 캐쉬 및 명령어 세트 예측기를 구비한 프로세서 시스템 KR101086457B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090132139A KR101086457B1 (ko) 2009-12-28 2009-12-28 저 전력 트레이스 캐쉬 및 명령어 세트 예측기를 구비한 프로세서 시스템
PCT/KR2010/008233 WO2011081300A2 (ko) 2009-12-28 2010-11-22 저 전력 트레이스 캐쉬 및 명령어 세트 예측기를 구비한 프로세서 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090132139A KR101086457B1 (ko) 2009-12-28 2009-12-28 저 전력 트레이스 캐쉬 및 명령어 세트 예측기를 구비한 프로세서 시스템

Publications (2)

Publication Number Publication Date
KR20110075638A true KR20110075638A (ko) 2011-07-06
KR101086457B1 KR101086457B1 (ko) 2011-11-25

Family

ID=44226937

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090132139A KR101086457B1 (ko) 2009-12-28 2009-12-28 저 전력 트레이스 캐쉬 및 명령어 세트 예측기를 구비한 프로세서 시스템

Country Status (2)

Country Link
KR (1) KR101086457B1 (ko)
WO (1) WO2011081300A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013032169A2 (ko) * 2011-08-31 2013-03-07 전남대학교산학협력단 3차원 멀티코어 프로세서의 분기예측기 배치방법 및 3차원 멀티코어 프로세서
WO2014105168A1 (en) * 2012-12-29 2014-07-03 Intel Corporation Real time instruction trace processors, methods, and systems

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ITMI20110387A1 (it) * 2011-03-11 2012-09-12 Antonio Sambusseti Emisfera per l'ampliamento vescicale in pazienti con bassa compliance

Family Cites Families (3)

* Cited by examiner, † Cited by third party
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 (ko) * 1999-11-15 2002-08-09 삼성전자 주식회사 어드레스 트레이스를 이용한 분기 예측 방법
US8069336B2 (en) * 2003-12-03 2011-11-29 Globalfoundries Inc. Transitioning from instruction cache to trace cache on label boundaries

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013032169A2 (ko) * 2011-08-31 2013-03-07 전남대학교산학협력단 3차원 멀티코어 프로세서의 분기예측기 배치방법 및 3차원 멀티코어 프로세서
WO2013032169A3 (ko) * 2011-08-31 2013-04-25 전남대학교산학협력단 3차원 멀티코어 프로세서의 분기예측기 배치방법 및 3차원 멀티코어 프로세서
KR101294629B1 (ko) * 2011-08-31 2013-08-08 전남대학교산학협력단 3차원 멀티코어 프로세서의 분기예측기 배치방법 및 3차원 멀티코어 프로세서
WO2014105168A1 (en) * 2012-12-29 2014-07-03 Intel Corporation Real time instruction trace processors, methods, and systems
US9262163B2 (en) 2012-12-29 2016-02-16 Intel Corporation Real time instruction trace processors, methods, and systems
US9696997B2 (en) 2012-12-29 2017-07-04 Intel Corporation Real time instruction trace processors, methods, and systems

Also Published As

Publication number Publication date
WO2011081300A2 (ko) 2011-07-07
KR101086457B1 (ko) 2011-11-25
WO2011081300A3 (ko) 2011-09-15

Similar Documents

Publication Publication Date Title
US8082420B2 (en) Method and apparatus for executing instructions
JP4027620B2 (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
US9477479B2 (en) Instruction prefetch throttling using instruction count and branch prediction
US10884739B2 (en) Systems and methods for load canceling in a processor that is connected to an external interconnect fabric
KR20150056042A (ko) 데이터 처리장치에서의 적응형 예비 인출
US9043806B2 (en) Information processing device and task switching method
JP6627629B2 (ja) 演算処理装置、および演算処理装置の制御方法
JP2004171177A (ja) キャッシュシステムおよびキャッシュメモリ制御装置
KR20090095633A (ko) 낮은-복잡도 명령 프리패치 시스템을 위한 방법 및 장치
CN113407119A (zh) 数据预取方法、数据预取装置、处理器
US11249762B2 (en) Apparatus and method for handling incorrect branch direction predictions
KR101086457B1 (ko) 저 전력 트레이스 캐쉬 및 명령어 세트 예측기를 구비한 프로세서 시스템
US11379239B2 (en) Apparatus and method for making predictions for instruction flow changing instructions
JP5159258B2 (ja) 演算処理装置
WO2011151944A1 (ja) キャッシュメモリ装置、プログラム変換装置、キャッシュメモリ制御方法及びプログラム変換方法
US9158696B2 (en) Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses
US11003581B2 (en) Arithmetic processing device and arithmetic processing method of controlling prefetch of cache memory
US10922082B2 (en) Branch predictor
US9135011B2 (en) Next branch table for use with a branch predictor
KR101076815B1 (ko) 분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템
US20110083030A1 (en) Cache memory control device, cache memory device, processor, and controlling method for storage device
US10860324B1 (en) Apparatus and method for making predictions for branch instructions
CN114430821A (zh) 用于在处理器中执行的指令流中的分支集合活动检测的动态集合活动分支训练
US8966221B2 (en) Translating translation requests having associated priorities
US11099852B2 (en) Apparatus and method for maintaining prediction performance metrics for prediction components for each of a plurality of execution regions and implementing a prediction adjustment action based thereon

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