KR20080015529A - 명령어 페치 시스템 - Google Patents

명령어 페치 시스템 Download PDF

Info

Publication number
KR20080015529A
KR20080015529A KR1020060076933A KR20060076933A KR20080015529A KR 20080015529 A KR20080015529 A KR 20080015529A KR 1020060076933 A KR1020060076933 A KR 1020060076933A KR 20060076933 A KR20060076933 A KR 20060076933A KR 20080015529 A KR20080015529 A KR 20080015529A
Authority
KR
South Korea
Prior art keywords
basic block
instruction
cache
hit
buffer
Prior art date
Application number
KR1020060076933A
Other languages
English (en)
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 KR1020060076933A priority Critical patent/KR20080015529A/ko
Publication of KR20080015529A publication Critical patent/KR20080015529A/ko

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/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
    • 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
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/328Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for runtime instruction patching
    • 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/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

명령어 페치 시스템은 필링 회로, 기본 블록 기반 캐시, 패스트 적중 버퍼 및 멀티플렉서를 포함한다. 상기 필링 회로는 프로세서로부터 입력받은 명령어들로 트레이스(trace)를 구성하며, 상기 트레이스의 순서에 따라 상기 명령어들을 가지고 기본 블록들을 구성한다. 상기 기본 블록 기반 캐시는 기본 블록 내의 태그에 따라 상기 기본 블록들을 저장한다. 상기 패스트 적중 버퍼는 상기 기본 블록 기반 캐시에서 이전에 사용된 기본 블록들에 대한 정보를 저장한다. 상기 멀티플렉서는 상기 기본 블록 기반 캐시, 상기 패스트 적중 버퍼 및 메인 메모리로부터 각각 입력받은 명령어들 중 적중(hit)된 명령어를 선택하여 출력한다.

Description

명령어 페치 시스템{Instruction Fetch System}
도 1은 본 발명의 일 실시예에 따른 프로세스 시스템(process system)의 구조를 나타내는 블록도이다.
도 2는 본 발명의 일 실시예에 따른 필링 회로의 동작을 나타내는 상태도(state diagram)이다.
도 3은 본 발명의 일 실시예에 따른 패스트 적중 버퍼(fast hit buffer)를 나타내는 블록도이다.
* 도면의 주요 부분에 대한 부호의 설명 *
31 : 필링 회로
32 : 라인 채움 버퍼
33 : 기본 블록 리네임 테이블
34 : 3B 캐시
35 : 패스트 적중 버퍼
36 : 명령어 버퍼
본 발명은 컴퓨터 시스템에 관한 것으로서, 특히 명령어 캐시 기술 분야에 관한 것이다.
마이크로프로세서(microprocessor)는 1971년 인텔(Intel)의 4004가 출현한 이래로 지난 30여 년간 꾸준히 놀라운 성능 향상을 계속하여 현재 정보화의 발전을 가져왔으며 IT 발전에 핵심적인 역할을 하고 있다. 유비쿼터스 환경 요구와 디지털 컨버젼스를 위한 시스템-온-칩(System-on-chip, SOC) 기술의 발전으로 대용량 디지털 콘텐츠를 처리할 수 있는 포터블 내장형 시스템 시장은 점점 커지고 있다. 이러한 내장형 시스템은 점점 더 높은 성능과 기능의 프로세서를 요구하고 있고 또한 더욱더 많은 배터리 용량을 필요로 하고 있다. 하지만 내장형 시스템에 집적될 수 있는 조그만 연료전지가 상용화되기까지는 내장형 프로세스의 설계에 있어서 저전력 방법에 대한 지속적인 연구가 필요하다. 내장형 프로세서의 저전력을 위해 여러 가지 추상적 계층에서 많은 연구가 진행되고 있는데, 그중에서 캐시 구조에서의 저전력화는 매우 효과적이다.
일반적인 명령어 캐시(Instruction cache)에서는 컴파일된 순서로 캐시 메모리의 라인(line)을 채우게 된다. 하지만, 캐시 메모리 라인을 페치(fetch)하여 순차적으로 수행하다가 분기명령어를 만나면 해당 주소로 분기하게 되고, 분기된 주소가 현재 라인이 아니면 새로운 라인을 페치하게 된다. 이러한 새로운 라인의 페 치로 전력 소모가 증가한다. 이렇게 새로운 라인의 페치를 최소화하여 명령어 페치 대역폭을 늘릴 수 있게 하여 수퍼스칼라(superscalar) 프로세서의 ILP(Instruction Level Parallelism)를 증가시켜 IPC(Instructions Per Cycle)를 향상시키기 위한 방법으로 트레이스 캐시(trace cache)가 제안되었다.
트레이스 캐시(trace cache)는 같은 명령어 궤적을 반복하여 사용하는 프로그램의 특성을 이용한다. 자주 수행하는 불연속적인 명령어 블록을 트레이스라고 하는 연속적인 명령어 블록으로 바꾸어 캐시에 저장한다.
일반적인 트레인스 캐시에서, 동적인 명령어 스트림은 파이프라인의 컴플리션 단(completion stage)에서 분기명령어에 의해 트레이스를 구성하고 이를 필 유닛(fill unit)에 채우게 되면 필 유닛의 트레이스는 트레이스 캐시에 저장된다. 또한, 페치 단에서 분기 예측기에 의한 분기 궤적을 저장하고 이를 이용하여 다음에 사용될 트레이스를 예측한다. 하지만 일반적은 트레이스 캐시는 고성능 마이크로프로세서에는 적합하지만 저전력에는 적합하지 않다. 트레이스 캐시는 명령어 캐시에 비해 매우 크며 전력도 많이 소비된다. 이를 보완하기 위해 순차적 접근 트레이스 캐시가 제안되었다.
순차적 접근 트레이스 캐시는 명령어 캐시와 트레이스 캐시의 접근을 순찾거으로 진행하여 전력을 줄이는 방법으로 사용한다. 이는 트레이스 캐시의 접근을 먼저 하여 접근 실패가 이루어졌을 경우 명령어 캐시를 접근하는 방법이다. 순차적 접근 트레이스 캐시의 페치 방식은 트레이스 캐시에서 접근할지 아니면 명령어 캐시에서 접근할지를 미리 결정해주는 회로가 있어 상기 회로에서 결정된 캐시만 접 근하게 된다. 그러나, 순차적 접근 트레이스 캐시의 경우 명령어 캐시의 불필요한 접근을 하지 않지만 트레이스 캐시의 접근 실패의 경우 지연시간이 늘어나고, 메모리의 사용 효율이 낮아지게 되므로 전체적으로 성능이 저하된다. 이를 보완하기 위해 블록 기반 트레이스 캐시가 제안되었다.
블록 기반 트레이스 캐시는 트레이스의 명령어들을 바로 저장하지 않고, 각 블록으로 쪼개어 블록 캐시에 저장하고, 트레이스를 구성하는 블록의 포인터를 트레이스 테이블에 저장을 하며 트레이스의 페치 주소들은 블록 수준에서 리네이밍되어 블록 ID로 각 블록들의 주소를 가리켜서 접근할 수 있게 한다. 하지만, 블록 기반 트레이스 캐시는 메모리의 사용 효율이 낮을 뿐 아니라, 블록 캐시의 각 블록들을 모으는 회로가 필요하여 전체 성능이 감소된다.
상술하였듯이, 전통적인 캐시는 프로그램의 컴파일된 순서로 캐시 메모리의 라인을 채우게 된다. 하지만 캐시 메모리 라인 페치를 하여 순차적으로 수행하다가 분기명령어를 만나면 해당 주소로 분기를 하게 되고 분기된 주소가 현재 라인이 아니면 새로운 라인을 페치하게 된다. 일반적인 트레이스 캐시는 불연속적인 캐시 라인들을 연속적으로 만들어줌으로써 캐시 라인 접근 횟수를 줄여준다. 하지만 트레이스 캐시는 별도의 캐시 메모리가 필요하므로 비용이 많이 들고, 또한 많은 메모리, 분기예측회로와 라인을 채우는 회로 등이 필요하므로 더욱 많은 전력을 소비하게 된다. 그러므로 트레이스 캐시는 고성능 수퍼스칼라(superscalar) 프로세서에는 적합하지만, 내장형 프로세서에는 적합하지 않다.
본 발명의 목적은 캐시 메모리의 라인 페치 과정에서 새로운 라인의 페치를 최소화하여 전력 소모를 줄일 수 있는 기본 블록 기반 캐시(basic block based cache)를 제공하는데 있다.
본 발명의 일 실시예에 따른 명령어 페치 시스템은 필링 회로(filling circuit), 기본 블록 기반 캐시(basic block based cache), 패스트 적중 버퍼(fast hit buffer) 및 멀티플렉서를 포함한다. 상기 필링 회로는 프로세서로부터 입력받은 명령어들로 트레이스(trace)를 구성하며, 상기 트레이스의 순서에 따라 상기 명령어들을 가지고 기본 블록들을 구성한다. 상기 기본 블록 기반 캐시는 상기 기본 블록 내의 태그에 따라 상기 기본 블록들을 저장한다. 상기 패스트 적중 버퍼는 상기 기본 블록 기반 캐시에서 이전에 사용된 기본 블록들에 대한 정보를 저장한다. 상기 멀티플렉서는 상기 기본 블록 기반 캐시, 상기 패스트 적중 버퍼 및 메인 메모리로부터 각각 입력받은 명령어들 중 적중(hit)된 명령어를 선택하여 출력한다.
상기 명령어 페치 시스템은 상기 필링 회로로부터 상기 기본 블록을 입력받아 임시로 저장하고, 상기 기본 블록 리네임 테이블로 상기 태그 및 상기 명령어를 제공하는 라인 채움 버퍼를 더 포함할 수 있다.
상기 명령어 페치 시스템은 상기 기본 블록 내의 태그를 입력받아 저장하는 기본 블록 리네임 테이블(basic block rename table)을 더 포함할 수 있다.
상기 명령어 페치 시스템은 상기 메인 메모리로부터 입력받은 명령어를 버퍼링하는 명령어 버퍼(instruction buffer)를 더 포함할 수 있다.
상기 필링 회로는 상기 페치 제어신호가 활성화될 경우 새로운 기본 블록을 만들고, 무조건 분기 명령어가 인가될 경우 기존의 기본 블록을 확장할 수 있다.
상기 기본 블록은 분기 명령어를 포함하지 않는 최소 단위일 수 있다.
상기 패스트 적중 버퍼는 시작 주소의 정합이 이루어진 이후에 프로그램 카운터가 블록 사이즈보다 작으면 태그 정합이 이루어질 수 있다. 상기 패스트 적중 버퍼는 복수의 캐시 라인; 상기 복수의 캐시 라인의 시작 주소와 프로그램 카운터를 비교하여 적중 시작 신호를 출력하는 제1 비교기; 및 상기 적중 시작 신호를 입력받고, 상기 프로그램 카운터와 블록 사이즈를 비교하여 패스트 적중 신호를 출력하는 제2 비교기를 포함할 수 있다.
상기 멀티플렉서는 상기 패스트 적중 버퍼에서 캐시 적중이 발생하면 상기 패스트 적중 버퍼로부터 수신한 명령어를 출력할 수 있다. 상기 멀티플렉서는 상기 패스트 적중 버퍼에서 캐시 미스가 발생하고 상기 기본 블록 기반 캐시에서 캐시 적중이 발생하면, 상기 기본 블록 기반 캐시로부터 수신한 명령어를 출력할 수 있다. 상기 멀티플렉서는 상기 패스트 적중 버퍼 및 상기 기본 블록 기반 캐시에서 캐시 미스가 발생하고 상기 명령어 버퍼에서 캐시 적중이 발생하면, 상기 명령어 버퍼로부터 수신한 명령어를 출력할 수 있다.
본 발명의 일 실시예에 따른 프로세스 시스템은 메모리, 프로세서 및 명령어 페치 시스템을 포함한다. 상기 명령어 페치 시스템은 상기 프로세서로부터 입력받 은 명령어들로 트레이스(trace)를 구성하며, 상기 트레이스의 순서에 따라 상기 명령어들을 가지고 기본 블록들을 구성하는 필링 회로(filling circuit); 상기 기본 블록 내의 태그에 따라 상기 기본 블록들을 저장하는 기본 블록 기반 캐시(basic block based cache); 상기 기본 블록 기반 캐시에서 이전에 사용된 기본 블록들에 대한 정보를 저장하는 패스트 적중 버퍼(fast hit buffer); 및 상기 기본 블록 기반 캐시, 패스트 적중 버퍼 및 상기 메모리로부터 각각 입력받은 명령어들 중 적중(hit)된 명령어를 선택하여 출력하는 멀티플렉서를 포함한다.
본 발명의 일 실시예에 따른 명령어 페치 방법은 프로세서로부터 입력받은 명령어들로 트레이스(trace)를 구성하며, 상기 트레이스의 순서에 따라 상기 명령어들을 가지고 기본 블록들을 구성하는 단계; 상기 기본 블록 내의 태그에 따라 상기 기본 블록들을 저장하는 단계; 상기 기본 블록 기반 캐시에서 이전에 사용된 기본 블록들에 대한 정보를 저장하는 단계; 및 상기 기본 블록 기반 캐시, 패스트 적중 버퍼 및 메인 메모리로부터 각각 입력받은 명령어들 중 적중(hit)된 명령어를 선택하여 출력하는 단계를 포함한다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 구성요소에 대해 사용하였다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 프로세스 시스템(process system)의 구조를 나타내는 블록도이다.
도 1을 참조하면, 프로세스 시스템은 메모리(memory, 10), 프로세서(processor, 20), 및 명령어 페치 시스템(instruction fetch system, 30)을 포함할 수 있다. 상기 명령어 페치 시스템(30)은 필링 회로(filling circuit, 31), 라인 채움 버퍼(line fill buffer, 32), 기본 블록 리네임 테이블(basic block rename table, 이하 '3B' 캐시라 한다. 33), 패스트 적중 버퍼(fast hit buffer, 35), 기본 블록 기반 캐시(basic block based cache, 34), 명령어 버 퍼(instruction buffer, 36) 및 멀티플렉서(mux, 37)를 포함할 수 있다.
상기 메모리(10)는 상기 명령어 버퍼(36)에 명령어를 제공할 수 있다.
상기 프로세서(20)는 본 발명의 일 실시예에서 정수 연산기(integer unit)일 수 있으나, 이에 한정하지 않는다.
상기 필링 회로(31)는 상기 프로세서(20)로부터 제1 명령어(INS1) 및 페치 제어신호(F_CTRL)를 입력받는다. 상기 페치 제어신호(F_CTRL)는 분기 명령어(branch)의 발생을 나타내는 신호이다. 상기 프로세서(20)의 파이프라인 중 커밋 단(commit stage)에서 프로그램 수행 중에 분기 명령어를 만나면, 즉, 상기 페치 제어신호(F_CTRL)가 활성화되면, 트레이스(trace)를 시작하며 상기 제1 명령어들(INS1)로 상기 트레이스의 순서에 따라 기본 블록을 구성한다.
상기 라인 채움 버퍼(32)는 상기 필링 회로(31)로부터 상기 기본 블록을 입력받아 버퍼링한다. 상기 라인 채움 버퍼(32)의 상기 기본 블록은 태그(TAG) 및 명령어 스트림(instruction stream, IS)을 포함하고, 이를 각각 상기 기본 블록 리네임 테이블(33) 및 상기 3B 캐시(34)에 출력한다.
상기 태그(TAG)는 시작 주소(start address) 정보를 가지고 있으며, 상기 기본 블록 리네임 테이블(33)에 입력된다. 상기 명령어 스트림(IS)은 상기 3B 캐시(34)에 입력된다. 일정 길이의 기본 블록이 구성되면 상기 3B 캐시(34)는 해당 태그를 가진 기본 블록으로 재구성된다.
상기 3B 캐시(34)는 기본 블록을 기본 단위로 하여 트레이스를 구성하는 캐시이다. 기본 블록(basic block)이란 중간에 분기 명령어를 포함하지 않는 최소 단 위를 말하며, 기본 블록의 처음 명령어로 분기되어 기본 블록의 마지막 명령에서 블록을 빠져나가는 코드 순서를 가진다. 종래의 캐시의 경우 컴파일러에서 기본 블록 단위의 스케쥴링을 하여 컴파일이 된다고 하더라도 실제 프로그램이 실행하면서 생기는 궤적과는 많은 차이를 보이므로, 기본 블록이 캐시의 여러 라인에 걸쳐 있을 수도 있다. 그러나, 본 발명의 일 실시예에 따른 3B 캐시는 트레이스를 프로그램 수행 순서에 맞게 구성하고, 이 기본 블록 단위를 캐시의 라인에 저장한다.
상기 패스트 적중 버퍼(35)는 상기 3B 캐시(34)에서 이전에 사용된 트레이스에 대한 정보를 저장한다. 이로써 비교적 긴 명령어를 갖고 있는 상기 3B 캐시(34)의 라인에서 소비되는 전력의 상당 부분을 절약해준다. 상기 패스트 적중 버퍼(35)의 태그 정합에 대해서는 도 3을 참조하여 설명하기로 한다.
상기 명령어 버퍼(36)는 상기 메모리(10)로부터 입력받은 명령어를 버퍼링한다. 상기 프로세서(20)에서 필요로 하는 명령어를 메모리(10)로부터 읽어 들여 저장하고, 상기 프로세서(20)로부터 요구하는 명령어의 적중(hit)이 발생되면 해당 명령어를 상기 프로세서로 제공한다.
상기 멀티플렉서(37)는 상기 패스트 적중 버퍼(35)로부터 수신한 제1 선택신호(S1) 및 상기 3B 캐시(34)로부터 수신한 제2 선택신호(S2)에 따라, 상기 패스트 적중 버퍼(35), 상기 3B 캐시(34) 및 상기 명령어 버퍼(36)로부터 입력받은 각각의 명령어들(INS2, INS3, INS4) 중 하나를 선택하여 출력한다.
상기 패스트 적중 버퍼(35)에서 캐시 적중(hit)이 발생하면(즉, 특정한 데이터에 대한 메모리 액세스 요청이 캐시 메모리에 액세스함으로 충족될 수 있을 때), 상기 제1 선택신호(S1)는 '1'이고 상기 제2 선택신호(S2)는 '0'이다. 이 경우에 상기 멀티플렉서(37)는 상기 패스트 적중 버퍼(35)로부터 수신한 명령어(INS2)를 선택하여 출력한다.
상기 패스트 적중 버퍼(35)에서 캐시 미스(miss)가 발생하고(즉, 특정한 데이터에 대한 메모리 액세스 요청이 캐시 메모리에 액세스함으로 충족될 수 없을 때), 상기 3B 캐시(34)에서 캐시 적중(hit)이 발생하면, 상기 제1 선택신호(S1)은 '0'이고 상기 제2 선택신호(S2)는 '0'이다. 이 경우에 상기 멀티플렉서(37)는 상기 3B 캐시(34)로부터 수신한 명령어(INS3)를 선택하여 출력한다.
상기 패스트 적중 버퍼(35) 및 상기 3B 캐시(34)에서 캐시 미스(miss)가 발생하고, 상기 명령어 버퍼(36)에서 캐시 적중(hit)이 발생하면, 상기 제1 및 제2 선택신호(S1, S2)가 모두 '0'이다. 이 경우에 상기 멀티플렉서(37)는 상기 명령어 버퍼(36)로부터 수신한 명령어(INS4)를 선택하여 출력한다.
도 2는 본 발명의 일 실시예에 따른 필링 회로의 동작을 나타내는 상태도(state diagram)이다.
프로세서의 커밋 단(commit stage)에서 분기 명령어를 만나서 현재 기본 블록 구성이 이루어지고 있지 않으면 새로운 기본 블록을 구성하게 된다. 기본 블록은 분기 명령어 다음 명령어의 시작 주소로 시작되며 명령어들은 차례대로 라인 채움 버퍼에 채워지게 된다.
라인 채움 버퍼에서 오버플로가 발생하거나 분기 명령어를 만나게 되면 END_BB(311) 상태로 들어가게 되고 3B 캐시를 라인 채움 버퍼의 내용으로 갱신하게 된다.
분기 명령어 중 무조건 분기 명령어(unconditional branch, COND_ALL)를 만나게 되면 기본 블록은 확장이 되어 기존 기본 블록의 끝에 연속해서 추가하게 된다(EXTEND_BB, 314). 기본 블록의 확장은 연속적인 명령어 스트림을 확장하게 됨으로써 다른 캐시 라인의 불필요한 접근을 하지 않으므로 그만큼 접근 성공률이 높아지며 또한 소비 전력도 줄일 수 있다. 도 2에서 '&&'는 앤드(AND) 동작을 나타낸다.
상기 무조건 분기 명령어(COND_ALL)를 만나지 않은 경우에는 START_BB(312) 상태가 된다. 이때 트레이스 생성 플래그(MAKE_TRACE)가 '0'이고 페치 제어신호(F_CTRL)가 '1'일 때, MAKE_BB(313) 상태가 된다. 기본 블록 완성 신호(FULL_BB)가 '1'이거나 페치 제어신호(F_CTRL)가 '1'일 때, END_BB(311) 상태가 되어 종료된다. 도 2에서 '!'는 반전(NOT) 동작을 나타내고, '||'는 오아(OR) 동작을 나타낸다.
도 3은 본 발명의 일 실시예에 따른 패스트 적중 버퍼(fast hit buffer)를 나타내는 블록도이다.
패스트 적중 버퍼는 제1 라인(351a), 제2 라인(351b), 제3 라인(351c), 제4 라인(351d), 시작 주소 매칭부(Start Address Matching, 352), 블록 사이즈부(Block Size, 353), 제1 비교기(Comparator, 354) 및 제2 비교기(Comparator, 355)를 포함할 수 있다.
패스트 적중 버퍼의 태그 정합은 지연 시간을 최소화하기 위해 시작 주 소(Start Address)와 정합이 이루어진 이후에는 블록 사이즈(Block size) 보다 작으면 무조건 정합(Matching)이 이루어진다. 이는 다음과 같이 나타낼 수 있다.
Start Address ≤ PC ≤ Start Address + Block Size
여기에서, PC는 프로그램 카운터를 나타낸다.
상술한 바와 같이, 무조건 분기(COND_ALL)의 경우에는 기본 블록의 확장(EXTEND_BB)이 일어나는데 분기 명령어 감추기 기법에 의해 분기 명령어는 사라지고 그 다음 주소부터 트레이스의 새로운 라인이 할당되어 채워지게 된다. 이후에 3B 캐시의 정합이 이루어졌을 경우 확장된 트레이스 라인을 동시에 가져오기 위해 상기 제1 내지 제4 라인들(351a, 351b, 351c, 351d)이 패스트 적중 버퍼로 할당된다.
상기 시작 주소 매칭부(352)는 상기 제1 내지 제4 라인들(351a, 351b, 351c, 351d)의 시작 주소(SA)들을 정합시킨다.
상기 제1 비교기(354)는 상기 시작 주소 매칭부(352)로부터 출력된 시작 주소(SA)와 프로그램 카운터(PC)를 입력받아, 프로그램 카운터(PC)가 시작 주소(SA)보다 크거나 같은 경우에는 적중 시작 신호(START_HIT)를 출력한다.
상기 블록 사이즈부(353)는 상기 제1 내지 제4 라인들(351a, 351b, 351c, 351d)로부터 블록 사이즈를 입력받는다.
상기 제2 비교기(355)는 상기 적중 시작 신호(START_HIT)가 활성화될 때, 상기 프로그램 카운터(PC)와 블록 사이즈(BS)를 입력받아, 상기 블록 사이즈(BS)가 상기 프로그램 카운터(PC)보다 크거나 같을 때는 패스트 적중 신호(FAST_HIT)를 출 력한다.
상술한 바와 같이, 본 발명의 일 실시예에 따른 3B 캐시는 프로그램 수행 순서에 맞게 트레이스를 구성하고 이 기본 블록 단위를 캐시 라인에 저장함으로써, 명령어 캐시를 대신하여 사용할 수 있고, 동적인 명령어 순서를 유지시켜줄 수 있다.
또한, 본 발명의 일 실시예에 따른 3B 캐시는 새로운 라인의 페치를 최소화하여 전력 소모를 줄일 수 있다. 구체적으로 전통적인 캐시와 비교하면, 약 50%정도의 전력 소비를 줄일 수 있다.
실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (13)

  1. 프로세서로부터 입력받은 명령어들로 트레이스(trace)를 구성하며, 상기 트레이스의 순서에 따라 상기 명령어들을 가지고 기본 블록들을 구성하는 필링 회로(filling circuit);
    상기 기본 블록 내의 태그에 따라 상기 기본 블록들을 저장하는 기본 블록 기반 캐시(basic block based cache);
    상기 기본 블록 기반 캐시에서 이전에 사용된 기본 블록들에 대한 정보를 저장하는 패스트 적중 버퍼(fast hit buffer); 및
    메인 메모리, 상기 기본 블록 기반 캐시 및 패스트 적중 버퍼로부터 각각 입력받은 명령어들 중 적중(hit)된 명령어를 선택하여 출력하는 멀티플렉서를 포함하는 것을 특징으로 하는 명령어 페치 시스템(instruction fetch system).
  2. 제1항에 있어서, 상기 필링 회로로부터 상기 기본 블록을 입력받아 임시로 저장하고, 상기 기본 블록 리네임 테이블로 상기 태그 및 상기 명령어를 제공하는 라인 채움 버퍼를 더 포함하는 것을 특징으로 하는 명령어 페치 시스템.
  3. 제1항에 있어서, 상기 기본 블록 내의 태그를 입력받아 저장하는 기본 블록 리네임 테이블(basic block rename table)을 더 포함하는 것을 특징으로 하는 명령어 페치 시스템.
  4. 제1항에 있어서, 상기 메인 메모리로부터 입력받은 명령어를 버퍼링하는 명령어 버퍼(instruction buffer)를 더 포함하는 것을 특징으로 하는 명령어 페치 시스템.
  5. 제1항에 있어서, 상기 필링 회로는 상기 페치 제어신호가 활성화될 경우 새로운 기본 블록을 만들고, 무조건 분기 명령어가 인가될 경우 기존의 기본 블록을 확장하는 것을 특징으로 하는 명령어 페치 시스템.
  6. 제1항에 있어서, 상기 기본 블록은 분기 명령어를 포함하지 않는 최소 단위인 것을 특징으로 하는 명령어 페치 시스템.
  7. 제1항에 있어서, 상기 패스트 적중 버퍼는 시작 주소의 정합이 이루어진 이후에 프로그램 카운터가 블록 사이즈보다 작으면 태그 정합이 이루어지는 것을 특징으로 하는 명령어 페치 시스템.
  8. 제4항에 있어서, 상기 패스트 적중 버퍼는
    복수의 캐시 라인;
    상기 복수의 캐시 라인의 시작 주소와 프로그램 카운터를 비교하여 적중 시작 신호를 출력하는 제1 비교기; 및
    상기 적중 시작 신호를 입력받고, 상기 프로그램 카운터와 블록 사이즈를 비교하여 패스트 적중 신호를 출력하는 제2 비교기를 포함하는 것을 특징으로 하는 명령어 페치 시스템.
  9. 제1항에 있어서, 상기 멀티플렉서는 상기 패스트 적중 버퍼에서 캐시 적중이 발생하면 상기 패스트 적중 버퍼로부터 수신한 명령어를 출력하는 것을 특징으로 하는 명령어 페치 시스템.
  10. 제1항에 있어서, 상기 멀티플렉서는 상기 패스트 적중 버퍼에서 캐시 미스가 발생하고 상기 기본 블록 기반 캐시에서 캐시 적중이 발생하면, 상기 기본 블록 기반 캐시로부터 수신한 명령어를 출력하는 것을 특징으로 하는 명령어 페치 시스템.
  11. 제1항에 있어서, 상기 멀티플렉서는 상기 패스트 적중 버퍼 및 상기 기본 블록 기반 캐시에서 캐시 미스가 발생하고 상기 명령어 버퍼에서 캐시 적중이 발생하면, 상기 명령어 버퍼로부터 수신한 명령어를 출력하는 것을 특징으로 하는 명령어 페치 시스템.
  12. 메모리;
    프로세서; 및
    명령어 페치 시스템을 포함하며,
    상기 명령어 페치 시스템은
    상기 프로세서로부터 입력받은 명령어들로 트레이스(trace)를 구성하며, 상기 트레이스의 순서에 따라 상기 명령어들을 가지고 기본 블록들을 구성하는 필링 회로(filling circuit);
    상기 기본 블록 내의 태그에 따라 상기 기본 블록들을 저장하는 기본 블록 기반 캐시(basic block based cache);
    상기 기본 블록 기반 캐시에서 이전에 사용된 기본 블록들에 대한 정보를 저장하는 패스트 적중 버퍼(fast hit buffer); 및
    상기 기본 블록 기반 캐시, 상기 패스트 적중 버퍼 및 상기 메모리로부터 각각 입력받은 명령어들 중 적중(hit)된 명령어를 선택하여 출력하는 멀티플렉서를 포함하는 것을 특징으로 하는 프로세스 시스템.
  13. 프로세서로부터 입력받은 명령어들로 트레이스(trace)를 구성하며, 상기 트레이스의 순서에 따라 상기 명령어들을 가지고 기본 블록들을 구성하는 단계;
    상기 기본 블록 내의 태그에 따라 상기 기본 블록들을 저장하는 단계;
    상기 기본 블록 기반 캐시에서 이전에 사용된 기본 블록들에 대한 정보를 저장하는 단계; 및
    상기 기본 블록 기반 캐시, 상기 패스트 적중 버퍼 및 메인 메모리로부터 각각 입력받은 명령어들 중 적중(hit)된 명령어를 선택하여 출력하는 단계를 포함하는 것을 특징으로 하는 명령어 페치 방법.
KR1020060076933A 2006-08-16 2006-08-16 명령어 페치 시스템 KR20080015529A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060076933A KR20080015529A (ko) 2006-08-16 2006-08-16 명령어 페치 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060076933A KR20080015529A (ko) 2006-08-16 2006-08-16 명령어 페치 시스템

Publications (1)

Publication Number Publication Date
KR20080015529A true KR20080015529A (ko) 2008-02-20

Family

ID=39383962

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060076933A KR20080015529A (ko) 2006-08-16 2006-08-16 명령어 페치 시스템

Country Status (1)

Country Link
KR (1) KR20080015529A (ko)

Similar Documents

Publication Publication Date Title
CN109960398B (zh) 用于异构多核心系统的动态核心选择
JP5722396B2 (ja) 明示的サブルーチンコールの分岐予測動作をエミュレートするための方法および装置
US20030005266A1 (en) Multithreaded processor capable of implicit multithreaded execution of a single-thread program
KR101496009B1 (ko) 루프 버퍼 패킹
US9396117B2 (en) Instruction cache power reduction
KR20180021812A (ko) 연속하는 블록을 병렬 실행하는 블록 기반의 아키텍쳐
US20110022821A1 (en) System and Methods to Improve Efficiency of VLIW Processors
US11836498B1 (en) Single cycle predictor
US9753855B2 (en) High-performance instruction cache system and method
US11816489B1 (en) Microprocessor with prediction unit pipeline that provides a next fetch address at a rate of one per clock cycle
US20240045610A1 (en) Prediction unit with first predictor that provides a hashed fetch address of a current fetch block to its own input and to a second predictor that uses it to predict the fetch address of a next fetch block
Benini et al. Cached-code compression for energy minimization in embedded processors
US12020032B2 (en) Prediction unit that provides a fetch block descriptor each clock cycle
JP2004164622A (ja) Dspカーネルの性能/パワー比を改善する方法
CN110806900B (zh) 一种访存指令处理方法及处理器
US7769954B2 (en) Data processing system and method for processing data
CN116302106A (zh) 用于促进分支预测单元的改善的带宽的设备、方法和系统
KR102635965B1 (ko) 마이크로 프로세서의 프론트 엔드 및 이를 이용한 컴퓨터 구현 방법
US20080244224A1 (en) Scheduling a direct dependent instruction
Rengasamy et al. Critics critiquing criticality in mobile apps
US6119220A (en) Method of and apparatus for supplying multiple instruction strings whose addresses are discontinued by branch instructions
JP5122277B2 (ja) データ処理方法、処理装置、多重命令ワードセット生成方法、コンパイラプログラム
KR20080015529A (ko) 명령어 페치 시스템
JP2003263313A (ja) デジタルプロセッサおよび命令の選択方法
CN108845832B (zh) 一种提高处理器主频的流水线细分装置

Legal Events

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