KR20060030402A - 명령어 캐쉬와 명령어 변환 참조 버퍼의 제어기, 및 그제어방법 - Google Patents

명령어 캐쉬와 명령어 변환 참조 버퍼의 제어기, 및 그제어방법 Download PDF

Info

Publication number
KR20060030402A
KR20060030402A KR1020040079246A KR20040079246A KR20060030402A KR 20060030402 A KR20060030402 A KR 20060030402A KR 1020040079246 A KR1020040079246 A KR 1020040079246A KR 20040079246 A KR20040079246 A KR 20040079246A KR 20060030402 A KR20060030402 A KR 20060030402A
Authority
KR
South Korea
Prior art keywords
address
instruction
branch
prediction
target
Prior art date
Application number
KR1020040079246A
Other languages
English (en)
Other versions
KR100630702B1 (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 KR1020040079246A priority Critical patent/KR100630702B1/ko
Priority to TW094131273A priority patent/TWI275102B/zh
Priority to CNA2005101069414A priority patent/CN1758214A/zh
Priority to JP2005290385A priority patent/JP2006107507A/ja
Priority to US11/242,729 priority patent/US20060101299A1/en
Priority to GB0520272A priority patent/GB2419010B/en
Publication of KR20060030402A publication Critical patent/KR20060030402A/ko
Application granted granted Critical
Publication of KR100630702B1 publication Critical patent/KR100630702B1/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
    • 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
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

명령어 캐쉬와 명령어 변환 참조 버퍼의 제어기, 및 그 제어 방법이 제공된다. 명령어 캐쉬 및 명령어 변환 참조 버퍼(명령어 TLB)의 제어기는 프로세서 코어, 분기 예측기, 분기 타겟 버퍼, 및 어드레스 선택 유닛을 포함한다. 분기 예측기는 프로세서 코어로부터 출력되는 현재 명령어에 대한 어드레스의 분기 예측을 수행하여 최종 분기 예측값을 출력한다. 분기 타겟 버퍼는 분기 예측기에 의한 분기 예측과 동시에 프로세서 코어로부터 출력되는 현재 명령어에 대한 어드레스의 분기 타겟 어드레스를 예측하여 예측 타겟 어드레스를 출력한다. 어드레스 선택 유닛은 분기 예측의 결과가 테이큰이 아닌 현재 명령어의 어드레스 및 예측 타겟 어드레스 중 하나를 선택하여 출력한다. 현재 명령어의 어드레스에 대한 분기 예측 및 분기 타겟 어드레스 예측은 현재 명령어의 직전 명령어는 분기 명령어가 아니라는 가정 하에 직전 명령어의 어드레스에 대한 분기 예측 및 분기 타겟 어드레스 예측이 종료되기 전에 시작되고, 어드레스 선택 유닛으로부터 출력되는 어드레스는 다이내믹 전압 스케일링을 사용하는 명령어 캐쉬 및 명령어 TLB의 대응되는 캐쉬 라인들을 웨이크-업한다. 명령어 캐쉬와 명령어 TLB의 제어기, 및 그 제어 방법은 다이내믹 전압 스케일링을 사용하는 명령어 캐쉬 및 명령어 TLB의 웨이크-업 페널티를 방지할 수 있다.

Description

명령어 캐쉬와 명령어 변환 참조 버퍼의 제어기, 및 그 제어방법{Controller for instruction cache and instruction translation look-aside buffer, and method of controlling the same}
본 발명의 상세한 설명에서 사용되는 도면을 보다 충분히 이해하기 위하여, 각 도면의 간단한 설명이 제공된다.
도 1은 다이내믹 전압 스케일링(Dynamic Voltage Scaling; DVS)을 사용하는 드라우지 캐쉬를 나타낸다.
도 2는 일반 캐쉬의 전력 소비와 드라우지 캐쉬의 전력 소비를 비교하는 그래프(graph)를 나타낸다.
도 3은 본 발명의 일 실시예에 따른 명령어 캐쉬 및 명령어 TLB의 제어기를 나타낸다.
도 4는 도 3에 도시된 프로세서 코어의 페취 사이클과 종래의 프로세서 코어의 페취 사이클들을 비교하는 도면이다.
도 5는 도 3에 도시된 분기 예측기를 보다 상세히 나타낸다.
도 6은 도 3에 도시된 분기 타겟 버퍼를 보다 상세히 나타낸다.
도 7은 본 발명의 일 실시예에 따른 명령어 캐쉬 및 명령어 TLB의 제어 방법을 나타내는 흐름도(flow chart)이다.
< 도면의 주요 부분에 대한 부호의 설명>
110: 프로세서 코어 120: 분기 예측기
140: 분기 타겟 버퍼 160: 어드레스 선택 유닛
124: 분기 예측 테이블 142: 분기 타겟 테이블
본 발명은 마이크로프로세서(microprocessor)에 관한 것으로, 보다 상세하게는, 다이내믹 전압 스케일링을 사용하는 명령어 캐쉬 및 명령어 변환 참조 버퍼(이하, 명령어 TLB(Translation Look-aside Buffer)라 한다.)를 제어하는 제어기 및 그 제어 방법에 관한 것이다.
온-칩(on-chip) 캐쉬는 마이크로프로세서의 전체 전력 소비(power consumption)의 많은 부분을 차지한다. 배선 폭(feature size)이 감소함에 따라, 온-칩 캐쉬에서 소비되는 전력의 많은 부분은 누설 전력(leakage power)이다. 누설 전력을 감소시키기 위한 온-칩 캐쉬로서 드라우지 캐쉬(drowsy cache)가 제안되었다.
도 1은 다이내믹 전압 스케일링(Dynamic Voltage Scaling; DVS)을 사용하는 드라우지 캐쉬를 나타낸다. 도 1에 도시된 드라우지 캐쉬는 ISCA(International Symposium on Computer Architecture) 2002에 발표된 "drowsy caches" 논문(paper)에 기재되어 있다.
드라우지 캐쉬는 각각의 캐시 라인(cache line)에 두 개의 다른 공급 전압들(supply voltages)을 공급하는 다이내믹 전압 스케일링 기술(technique)을 사용한다. 이러한 다이내믹 전압 스케일링 기술은 온-칩 캐쉬의 누설 전력 소비를 감소시킬 수 있다.
도 2는 일반 캐쉬의 전력 소비와 드라우지 캐쉬의 전력 소비를 비교하는 그래프(graph)를 나타낸다.
도 2를 참조하면, 일반 캐쉬(regular cache)의 전체 전력 소비에서 누설 전력은 다이내믹 전력(dynamic power) 보다 상대적으로 많은 부분을 차지한다. 반면에, 드라우지 캐쉬의 누설 전력은 캐쉬 라인에 공급되는 동작 전압(operating voltage)의 감소에 따라 감소되고 전체 전력 소비의 적은 부분을 차지한다.
다시 도 1을 참조하면, 드라우지 캐쉬는, 다이내믹 전압 스케일링의 구현(implementation)을 위해, 드라우지 비트(drowsy bit), 전압 제어기(voltage controller), 및 워드라인 게이팅 회로(wordline gating circuit)를 별도로 포함한다.
드라우지 비트는 에스램(SRAMs)에 포함된 메모리 셀(memory cell)에 공급되는 전압을 제어한다. 전압 제어기는 드라우지 비트의 상태(state)에 근거하여 캐쉬 라인에 연결된 메모리 셀 어레이(memory cell array)에 공급되는 높은 공급 전압(1(Volt)) 및 낮은 공급 전압(0.3(V))을 결정한다. 워드라인 게이팅 회로는 메모리의 내용(content)을 파괴(destruction)할 수 있는 캐쉬 라인으로의 접근(access)을 차단하기 위해 사용된다.
드라우지 캐쉬는 노멀 모드(normal mode)에서 1(V)로 동작하고, 드라우지 모드(drowsy mode)에서는 0.3(V)로 동작한다. 드라우지 캐쉬는 드라우지 모드에서 캐쉬 라인의 상태(state)를 유지(maintenance)하지만 안정적으로 리드 동작(read operation) 및 라이트 동작(write operation)을 수행할 수 없다. 따라서, 드라우지 캐쉬는 리드 동작 및 라이트 동작을 수행하기 위하여, 드라우지 모드에서 노멀 모드로 모드 전환(mode switching)이 필요하다. 이러한 모드 전환에 필요한 시간은 웨이크-업 시간(wake-up time)(또는 웨이크-업 천이 레이턴시(wake-up transition latency))으로서 1 사이클(cycle)이다. 따라서, 웨이크-업될 드라우지 캐쉬의 캐쉬 라인을 잘못 예측(prediction)하는 경우, 1 사이클의 성능 페널티(performance penalty)(또는 웨이크-업 페널티(wake-up penalty))가 발생한다.
따라서, 본 발명이 이루고자 하는 기술적 과제는 1 사이클의 페널티를 방지(또는 제거)할 수 있는 명령어 캐쉬와 명령어 TLB의 제어기, 및 그 제어 방법을 제공하는 데 있다.
상기 기술적 과제를 달성하기 위하여 본 발명에 따른 반도체 장치의 명령어 캐쉬 및 명령어 TLB의 제어기는 프로세서 코어; 상기 프로세서 코어로부터 출력되는 현재 명령어에 대한 어드레스의 분기 예측을 수행하여 최종 분기 예측값을 출력하는 분기 예측기; 상기 분기 예측기에 의한 분기 예측과 동시에 상기 프로세서 코어로부터 출력되는 현재 명령어에 대한 어드레스의 분기 타겟 어드레스를 예측하여 예측 타겟 어드레스를 출력하는 분기 타겟 버퍼; 및 상기 분기 예측의 결과가 테이큰이 아닌 현재 명령어의 어드레스 및 상기 예측 타겟 어드레스 중 하나를 선택하여 출력하는 어드레스 선택 유닛을 구비하며, 상기 현재 명령어의 어드레스에 대한 분기 예측 및 분기 타겟 어드레스 예측은 상기 현재 명령어의 직전 명령어는 분기 명령어가 아니라는 가정 하에 상기 직전 명령어의 어드레스에 대한 분기 예측 및 분기 타겟 어드레스 예측이 종료되기 전에 시작되고, 상기 어드레스 선택 유닛으로부터 출력되는 어드레스는 다이내믹 전압 스케일링을 사용하는 명령어 캐쉬 및 명령어 TLB의 대응되는 캐쉬 라인들을 웨이크-업하는 것을 특징으로 한다.
바람직한 실시예에 따르면, 상기 어드레스 선택 유닛으로부터 출력되는 어드레스는 상기 다이내믹 전압 스케일링을 사용하는 명령어 캐쉬 및 명령어 TLB의 대응되는 서브-뱅크들을 웨이크-업한다.
바람직한 실시예에 따르면, 상기 어드레스 선택 유닛은 상기 현재 명령어 어드레스의 최하위 비트 및 상기 최종 분기 예측값에 응답하여 동작한다.
바람직한 실시예에 따르면, 상기 분기 선택기는 이전 분기 명령어들의 어드레스들에 대한 과거 분기 예측값들을 저장하는 글로벌 히스토리 레지스터; 상기 현재 명령어의 어드레스와 상기 글로벌 히스토리 레지스터에 저장된 어드레스에 대해 배타적 논리합 연산을 수행하여 인덱스 값을 출력하는 제1 배타적 논리합 게이트; 상기 이전 분기 명령어들의 어드레스들에 대한 분기 예측값들을 저장하고, 상기 인덱스 값이 지정하는 현재 명령어의 어드레스에 대한 분기 예측값들을 출력하는 분기 예측 테이블; 상기 현재 명령어 어드레스의 최하위 비트와 상기 글로벌 히스토 리 레지스터에 저장된 어드레스의 최하위 비트에 대해 배타적 논리합 연산을 수행하여 선택값을 출력하는 제2 배타적 논리합 게이트; 및 상기 선택값에 응답하여 상기 분기 예측값들 중 하나를 상기 최종 분기 예측값으로서 출력하는 멀티플렉서를 구비한다.
바람직한 실시예에 따르면, 상기 분기 예측 테이블의 하나의 라인에 포함된 두 개의 순차적인 엔트리들은 상기 인덱스 값에 의해 지정된다.
바람직한 실시예에 따르면, 상기 분기 타겟 버퍼는 상기 현재 명령어에 대한 어드레스의 가상 인덱스 비트들에 의해 지정되는 이전 분기 명령어들의 어드레스들에 대한 타겟 어드레스들 및 상기 타겟 어드레스들에 대응하는 타겟 태그들을 저장하는 분기 타겟 테이블; 상기 현재 명령어에 대한 어드레스의 최하위 비트에 응답하여 상기 가상 인덱스 비트들에 의해 지정되는 타겟 태그들 중 하나를 출력하는 제1 멀티플렉서; 상기 현재 명령어에 대한 어드레스의 물리 태그 비트들과 상기 제1 멀티플렉서로부터 출력되는 타겟 태그를 비교하여 인에이블 신호를 출력하는 비교기; 상기 현재 명령어에 대한 어드레스의 최하위 비트에 응답하여 상기 가상 인덱스 비트들에 의해 지정되는 타겟 어드레스들 중 하나를 출력하는 제2 멀티플렉서; 및 상기 인에이블 신호의 활성화에 응답하여 상기 제2 멀티플렉서로부터 출력되는 타겟 어드레스를 버퍼링하여 상기 예측 타겟 어드레스로서 출력하는 버퍼를 구비한다.
바람직한 실시예에 따르면, 상기 분기 타겟 테이블의 하나의 라인에 포함된 두 개의 순차적인 엔트리들은 상기 가상 인덱스 비트들에 의해 지정된다.
상기 기술적 과제를 달성하기 위하여 본 발명에 따른 반도체 장치의 명령어 캐쉬 및 명령어 TLB의 제어 방법은 (a) 현재 명령어의 직전 명령어를 분기 명령어가 아니라고 가정하는 단계; (b) 상기 현재 명령어의 어드레스에 대한 분기 예측 및 분기 타겟 어드레스 예측을 동시에 수행하는 단계; (c) 상기 (b) 단계의 분기 예측의 결과가 테이큰인 지 여부를 판단하는 단계; (d) 상기 (c) 단계에서 테이큰으로 판단되면, 상기 (b) 단계에서의 분기 타겟 어드레스 예측의 결과인 예측 타겟 어드레스가 지정하는 명령어 캐쉬의 캐쉬 라인 및 명령어 TLB의 캐쉬 라인을 웨이크-업하는 단계; 및 (e) 상기 (c) 단계에서 테이큰이 아닌 것으로 판단되면, 순차적인 현재 명령어의 어드레스가 지정하는 명령어 캐쉬의 캐쉬 라인 및 명령어 TLB의 캐쉬 라인을 웨이크-업하는 단계를 구비하며, 상기 현재 명령어의 어드레스에 대한 분기 예측 및 분기 타겟 어드레스 예측은 상기 직전 명령어의 어드레스에 대한 분기 예측 및 분기 타겟 어드레스 예측이 종료되기 전에 시작되고, 상기 명령어 캐쉬와 명령어 TLB는 다이내믹 전압 스케일링을 사용하는 것을 특징으로 한다.
바람직한 실시예에 따르면, 상기 (d) 단계는 상기 예측 타겟 어드레스가 지정하는 명령어 캐쉬의 서브-뱅크 및 명령어 TLB의 서브-뱅크를 웨이크-업하고, 상기 (e) 단계는 상기 순차적인 현재 명령어의 어드레스가 지정하는 명령어 캐쉬의 서브-뱅크 및 명령어 TLB의 서브-뱅크를 웨이크-업한다.
바람직한 실시예에 따르면, 상기 (b) 단계의 분기 예측에 사용되는 분기 예측 테이블의 하나의 라인에 포함된 두 개의 순차적인 엔트리들은 하나의 인덱스 값에 의해 지정된다.
바람직한 실시예에 따르면, 상기 (b) 단계의 분기 타겟 어드레스 예측에 사용되는 분기 타겟 테이블의 하나의 라인에 포함된 두 개의 순차적인 엔트리들은 상기 현재 명령어에 대한 어드레스의 가상 인덱스 비트들에 의해 지정된다.
이러한 본 발명에 따른 명령어 캐쉬와 명령어 TLB의 제어기, 및 그 제어 방법은 분기 예측 및 분기 타겟 어드레스 예측을 1 사이클 먼저 수행하므로 다이내믹 전압 스케일링을 사용하는 명령어 캐쉬 및 명령어 TLB의 웨이크-업 페널티를 방지할 수 있다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 3은 본 발명의 일 실시예에 따른 명령어 캐쉬 및 명령어 TLB의 제어기를 나타낸다. 본 발명에 따른 명령어 캐쉬 및 명령어 TLB의 제어기(100)는 프로세서 코어(processor core)(110), 분기 예측기(branch predictor)(120), 분기 타겟 버퍼(Branch Target Buffer; BTB)(140), 및 어드레스 선택 유닛(address selection unit)(160)을 구비한다. 프로세서 코어(110)는 중앙 처리 장치(Central Processing Unit; CPU)라고도 한다.
프로세서 코어(110)는 분기 예측기(120)로 현재 명령어(current instruction)에 대한 어드레스(ADDR)를 전달하고, 동시에 분기 타겟 버퍼(140)로 현재 명령어에 대한 어드레스(ADDR)를 전달한다. 이 때, 현재 명령어의 직전 명령어(previous instruction)는 분기 명령어(branch instruction)가 아니라고 가정한다. 왜냐하면, 응용 프로그램(application program)이 프로세서 코어(110)에 의해 실제로 실행(execution)될 때, 분기 명령어가 있을 확률 보다 없을 확률이 10배 이상 높기 때문이다.
분기 예측기(120)는 현재 명령어의 어드레스(ADDR)에 대한 분기 예측(branch prediction)을 수행하여 최종 분기 예측값(final branch prediction value)(PRED)을 출력한다. 분기 예측기(120)는 1 사이클 미리 분기 예측을 수행할 수 있다. 왜냐하면, 현재 명령어의 직전 명령어가 분기 명령어가 아니므로, 분기 예측기(120)에 포함된 글로벌 히스토리 레지스터(global history register)에 저장된 어드레스들 및 분기 예측 테이블(branch prediction table)의 엔트리들(entries)이 업데이트(update)되지 않고 하나의 인덱스 값(index value)에 의해 분기 예측 테이블의 하나의 라인(line)에 포함된 두 개의 순차적인(sequential) 엔트리들이 지정(index)되기 때문이다.
분기 타겟 버퍼(140)는 현재 명령어의 어드레스(ADDR)에 대한 분기 타겟 어드레스 예측을 수행하여 예측 타겟 어드레스(T_ADDR)를 출력한다. 분기 타겟 버퍼(140)는 1 사이클 미리 분기 타겟 어드레스 예측을 수행할 수 있다. 왜냐하면, 현재 명령어의 직전 명령어가 분기 명령어가 아니므로, 분기 타겟 버퍼(140)에 포함된 분기 타겟 테이블(branch target table)에 저장된 타겟 어드레스들이 업데이트 되지 않고 하나의 명령어에 대한 어드레스의 가상 인덱스 비트들(virtual index bits)에 의해 분기 타겟 테이블의 하나의 라인(line)에 포함된 두 개의 순차적인 엔트리들이 지정되기 때문이다.
어드레스 선택 유닛(160)은 배타적 논리합 게이트(exclusive OR gate)(XOR, 170) 및 멀티플렉서(multiplexer)(180)를 구비한다. 어드레스 선택 유닛(160)은 최종 분기 예측값(PRED) 및 분기 예측기에 의한 분기 예측 결과가 테이큰(taken)이 아닌 현재 명령어에 대한 어드레스(ADDR)의 최하위 비트(Least Significant Bit; LSB)에 응답하여 예측 타겟 어드레스(T_ADDR) 및 순차적인(sequential) 현재 명령어의 어드레스(ADDR) 중 하나를 선택하여 출력한다.
XOR(170)은 최종 분기 예측값(PRED)과 현재 명령어에 대한 어드레스(ADDR)의 최하위 비트에 대해 배타적 논리합 연산(operation)을 수행하여 선택값(SEL1)을 출력한다.
멀티플렉서(180)는 선택값(SEL1)에 응답하여 예측 타겟 어드레스(T_ADDR) 및 순차적인 현재 명령어의 어드레스(ADDR) 중 하나를 출력한다. 멀티플렉서(180)로부터 출력되는 어드레스는 명령어 TLB(200)의 대응되는 캐쉬 라인 및 명령어 캐쉬(300)의 대응되는 캐쉬 라인을 웨이크-업한다. 한편, 멀티플렉서(180)로부터 출력되는 어드레스는 명령어 TLB(200)의 대응되는 서브-뱅크(sub-bank) 및 명령어 캐쉬(300)의 대응되는 서브-뱅크를 웨이크-업할 수도 있다. 상기 서브-뱅크는 캐쉬 라인들의 집합(set)을 말한다.
명령어 TLB(200)와 명령어 캐쉬(300)는 도 1에 대한 설명에서 언급한 다이내 믹 전압 스케일링을 사용한다. 프로세서 코어(110)는, 웨이크-업된 명령어 TLB(200)의 캐쉬 라인 및 명령어 캐쉬(300)의 캐쉬 라인으로부터 각각 출력되는 명령어가 태그-매칭(tag-matching)될 때, 명령어를 페취(fetch)한다.
따라서, 본 발명에 따른 명령어 캐쉬 및 명령어 TLB의 제어기는 1 사이클 미리 분기 예측 및 분기 타겟 어드레스 예측을 수행하므로 다이내믹 전압 스케일링을 사용하는 명령어 캐쉬 및 명령어 TLB의 웨이크-업 페널티를 방지할 수 있다.
도 4는 도 3에 도시된 프로세서 코어의 페취 사이클과 종래의 프로세서 코어의 페취 사이클들을 비교하는 도면이다.
도 4를 참조하면, 첫 번째 경우는 다이내믹 전압 스케일링을 사용하지 않는 명령어 캐쉬 및 명령어 TLB에 대한 프로세서 코어의 페취 사이클(fetch cycle)을 나타낸다. 두 번째 경우는 명령어 캐쉬 및 명령어 TLB가 다이내믹 전압 스케일링을 사용하지만 본 발명의 제어기가 적용되지 않을 때의 프로세서 코어의 페취 사이클을 나타낸다. 세 번째 경우는 명령어 캐쉬 및 명령어 TLB가 다이내믹 전압 스케일링을 사용하고 본 발명의 제어기가 적용될 때의 프로세서 코어의 페취 사이클을 나타낸다.
두 번째 경우는 1 사이클의 웨이크-업 페널티가 발생하지만, 세 번째 경우는 분기 예측기 참조(look-up) 및 분기 타겟 버퍼 참조가 1 사이클 미리 수행되므로, 1 사이클의 웨이크-업 페널티가 발생하지 않는다.
도 5는 도 3에 도시된 분기 예측기를 보다 상세히 나타낸다.
도 5를 참조하면, 분기 예측기(120)는 어드레스 레지스터(address register)(121), 글로벌 히스토리 레지스터(122), 제1 XOR(123), 분기 예측 테이블(124), 제2 XOR(125), 및 멀티플렉서(126)를 구비한다.
제1 XOR(123)는 어드레스 레지스터(121)에 저장된 현재 명령어의 어드레스(ADDR)와 글로벌 히스토리 레지스터(122)에 저장된 어드레스에 대해 배타적 논리합 연산을 수행하여 인덱스 값(IND)을 출력한다. 인덱스 값(IND)은 분기 예측 테이블(124)의 특정 엔트리들(예를 들어, K 및 K+1)을 지정(index)한다. 글로벌 히스토리 레지스터(122)에 저장된 어드레스들은 이전 분기 명령어들에 대한 과거 분기 예측값들이다.
분기 예측 테이블(124)은 하나의 인덱스 값(IND)에 의해 두 개의 엔트리들(K, K+1)이 선택될 수 있도록 두 개의 순차적인 엔트리들이 하나의 라인(line)에 배치되어 있다. 따라서, 현재 명령어의 직전 명령어가 분기 명령어가 아니고 순차적인 명령어인 경우(즉, 현재 명령어의 직전 명령어의 어드레스가 현재 명령어의 어드레스(ADDR)와 비교하여 최하위 비트만 다른 경우), 글로벌 히스토리 레지스터(122)에 저장된 어드레스들 및 분기 예측 테이블(124)의 엔트리들이 업데이트되지 않으므로, 현재 명령어의 어드레스에 대한 분기 예측에 사용되는 글로벌 히스토리 및 분기 예측 테이블(124)의 엔트리들과, 직전 명령어의 어드레스에 대한 분기 예측에 사용되는 글로벌 히스토리 및 분기 예측 테이블(124)의 엔트리들은 동일하다. 그 결과, 각각의 명령어의 어드레스와 글로벌 히스토리의 조합(combination)에 의해 지정되는 엔트리들은 분기 예측 테이블(124)의 한 라인 상에 존재하고, 이는 하나의 인덱스 값(IND)에 의해 동시에 지정될 수 있다. 따라서, 직전 명령어의 어드 레스에 대한 분기 예측이 종료되기 전에 1 사이클 빨리 현재 명령어의 어드레스에 대한 분기 예측이 시작될 수 있다. 현재 명령어의 다음 명령어(next instruction)의 경우에도 상기 직전 명령어와 현재 명령어의 관계에 대한 설명이 적용될 수 있다.
따라서, 분기 예측기(120)는 1 사이클 먼저 현재 명령어의 어드레스(ADDR)에 대해 분기 예측을 수행할 수 있다.
한편, 분기 예측 테이블(124)에서 선택된 엔트리들(K, K+1)의 최하위 비트가 현재 명령어의 어드레스(ADDR)에 대한 분기 예측값들(PRED1, PRED2)로 출력된다. 예를 들어, 분기 예측값들(PRED1, PRED2) 중 하나는 현재 명령어의 어드레스를 위한 분기 예측값으로, 나머지 하나는 다음 명령어의 어드레스를 위한 분기 예측값으로 사용할 수 있다.
제2 XOR(125)는 어드레스 레지스터(121)에 저장된 현재 명령어에 대한 어드레스(ADDR)의 최하위 비트와 글로벌 히스토리 레지스터(122)에 저장된 어드레스의 최하위 비트에 대해 배타적 논리합 연산을 수행하여 선택값(SEL2)을 출력한다.
멀티플렉서(126)는 선택값(SEL2)에 응답하여 분기 예측값들(PRED1, PRED2) 중 하나를 최종 분기 예측값(PRED)으로 출력한다. 예를 들어, 최종 분기 예측값(PRED)이 "1"인 경우 현재 명령어의 어드레스에 대한 분기 예측이 테이큰(taken)되고, "0"인 경우 현재 명령어의 어드레스에 대한 분기 예측이 언테이큰(untaken)된다. 최종 분기 예측값(PRED)은 다음 분기 예측을 위해 글로벌 히스토리 레지스터(122)에 저장된 어드레스들 및 분기 예측 테이블(124)의 엔트리들을 업데이트하는 데 사용된다.
도 6은 도 3에 도시된 분기 타겟 버퍼를 보다 상세히 나타낸다.
도 6을 참조하면, 분기 타겟 버퍼(140)는 어드레스 레지스터(141), 분기 타겟 테이블(142), 제1 멀티플렉서(143), 비교기(comparator)(144), 제2 멀티플렉서(145), 및 버퍼(buffer)(146)를 구비한다.
분기 타겟 테이블(142)은 이전 분기 명령어들의 어드레스들에 대한 타겟 어드레스들(예를 들어, B, D) 및 타겟 어드레스들에 대응하는 타겟 태그들(예를 들어, A, C)을 저장한다.
어드레스 레지스터(141)에 저장된 현재 명령어 어드레스(ADDR)의 가상 인덱스 비트들(virtual index bits)(1412)은 분기 타겟 테이블(142)의 하나의 라인(line)에 포함된 두 개의 순차적인 엔트리들(예를 들어, [A, B], [C, D])을 지정한다. 따라서, 현재 명령어의 직전 명령어가 분기 명령어가 아니고 순차적인 명령어인 경우(즉, 현재 명령어의 직전 명령어의 어드레스가 현재 명령어의 어드레스(ADDR)와 비교하여 최하위 비트만 다른 경우), 분기 타겟 테이블(142)의 엔트리들이 업데이트되지 않으므로, 현재 명령어의 어드레스에 대한 분기 타겟 어드레스 예측에 사용되는 분기 타겟 테이블(142)의 엔트리들과, 직전 명령어의 어드레스에 대한 분기 타겟 어드레스 예측에 사용되는 분기 타겟 테이블(142)의 엔트리들은 동일하다. 그 결과, 각각의 명령어에 대한 어드레스의 가상 인덱스 비트들(1412)에 의해 지정되는 엔트리들은 분기 타겟 테이블(142)의 한 라인 상에 존재하고, 이는 하나의 가상 인덱스 비트들(1412)에 의해 동시에 지정될 수 있다. 따라서, 직전 명령 어의 어드레스에 대한 분기 타겟 어드레스 예측이 종료되기 전에 1 사이클 빨리 현재 명령어의 어드레스에 대한 분기 타겟 어드레스 예측이 시작될 수 있다. 현재 명령어의 다음 명령어(next instruction)의 경우에도 상기 직전 명령어와 현재 명령어의 관계에 대한 설명이 적용될 수 있다.
따라서, 분기 타겟 버퍼(140)는 1 사이클 먼저 분기 타겟 어드레스 예측을 수행할 수 있다.
제1 멀티플렉서(143)는 어드레스 레지스터(141)에 저장된 현재 명령어 어드레스(ADDR)의 최하위 비트(1413)에 응답하여 분기 타겟 테이블(142)로부터 출력되는 타겟 태그들(A, C) 중 하나를 출력한다.
비교기(144)는 어드레스 레지스터(141)에 저장된 현재 명령어 어드레스(ADDR)의 물리 태그 비트들(physical tag bits)(1411)과 제1 멀티플렉서(143)로부터 출력되는 타겟 태그를 비교하여 인에이블(enable) 신호(EN)를 출력한다. 상기 비교한 값이 일치하면, 인에이블 신호(EN)는 활성화(activation)된다.
제2 멀티플렉서(145)는 어드레스 레지스터(141)에 저장된 현재 명령어 어드레스(ADDR)의 최하위 비트(1413)에 응답하여 분기 타겟 테이블(142)로부터 출력되는 타겟 어드레스들(B, D) 중 하나를 출력한다.
버퍼(146)는 활성화된 인에이블 신호(EN)에 응답하여 제2 멀티플렉서(145)로부터 출력되는 타겟 어드레스를 버퍼링(buffering)하여 예측 타겟 어드레스(T_ADDR)를 출력한다.
도 7은 본 발명의 일 실시예에 따른 명령어 캐쉬 및 명령어 TLB의 제어 방법 을 나타내는 흐름도(flow chart)이다. 도 7에 도시된 명령어 캐쉬 및 명령어 TLB의 제어 방법은 도 3에 도시된 명령어 캐쉬 및 명령어 TLB의 제어기에 적용될 수 있다.
가정 단계(S105)에 따르면, 현재 명령어의 직전 명령어를 분기 명령어가 아니라고 가정한다.
전달 단계(S110)에 따르면, 현재 명령어의 어드레스를 프로세서 코어로부터 분기 예측기와 분기 타겟 버퍼로 동시에 전달한다.
예측 단계(S115)에 따르면, 현재 명령어의 어드레스에 대한 분기 예측 및 분기 타겟 어드레스 예측을 동시에 수행한다. 예측 단계(S115)는 1 사이클 미리 수행될 수 있다. 왜냐하면, 현재 명령어의 직전 명령어가 분기 명령어가 아니므로, 분기 예측기에 포함된 글로벌 히스토리 레지스터에 저장된 어드레스들 및 분기 예측 테이블의 엔트리들이 업데이트되지 않으며 하나의 인덱스 값에 의해 분기 예측 테이블의 하나의 라인에 포함된 두 개의 순차적인 엔트리들이 지정되고, 분기 타겟 버퍼에 포함된 분기 타겟 테이블의 엔트리들이 업데이트되지 않으며 하나의 명령어에 대한 어드레스의 가상 인덱스 비트들에 의해 분기 타겟 테이블의 하나의 라인에 포함된 두 개의 순차적인 엔트리들이 지정되기 때문이다.
판단 단계(S120)에 따르면, 분기 예측 결과가 "테이큰(taken)" 인 지 여부를 판단한다. 판단 단계(S120)에서 분기 예측 결과가 "테이큰"으로 판단되면, 제1 웨이크-업 단계(S125)가 진행된다. 판단 단계에서 분기 예측 결과가 "테이큰"이 아닌 것으로 판단되면(즉, 현재 명령어의 어드레스가 분기 명령어의 어드레스가 아니거 나 또는 현재 명령어의 어드레스에 대한 분기 예측 결과가 "언테이큰(untaken)(또는 낫-테이큰(not-taken))"인 것으로 판단되면), 제2 웨이크-업 단계(S130)로 진행된다.
제1 웨이크-업 단계(S125)에 따르면, 예측 타겟 어드레스가 지정(index)하는 명령어 캐쉬의 캐쉬 라인 및 명령어 TLB의 캐쉬 라인을 웨이크-업한다. 한편, 제1 웨이크-업 단계(S125)는 예측 타겟 어드레스가 지정하는 명령어 캐쉬의 서브-뱅크 및 명령어 TLB의 서브-뱅크를 웨이크-업할 수도 있다. 상기 서브-뱅크는 캐쉬 라인들의 집합을 말한다.
제2 웨이크-업 단계(S130)에 따르면, 순차적인(sequential) 현재 명령어의 어드레스가 지정하는 명령어 캐쉬의 캐쉬 라인 및 명령어 TLB의 캐쉬 라인을 웨이크-업한다. 한편, 제2 웨이크-업 단계(S130)는 순차적인 현재 명령어의 어드레스가 지정하는 명령어 캐쉬의 서브-뱅크 및 명령어 TLB의 서브-뱅크를 웨이크-업할 수도 있다.
이상에서와 같이 도면과 명세서에서 최적의 실시예들이 개시되었다. 여기서, 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명에 따른 명령어 캐쉬와 명령어 TLB의 제어기, 및 그 제어 방법은 분기 예측 및 분기 타겟 어드레스 예측을 1 사이클 먼저 수행하므로 다이내믹 전압 스케일링을 사용하는 명령어 캐쉬 및 명령어 TLB의 웨이크-업 페널티를 방지할 수 있다.

Claims (15)

  1. 프로세서 코어;
    상기 프로세서 코어로부터 출력되는 현재 명령어에 대한 어드레스의 분기 예측을 수행하여 최종 분기 예측값을 출력하는 분기 예측기;
    상기 분기 예측기에 의한 분기 예측과 동시에 상기 프로세서 코어로부터 출력되는 현재 명령어에 대한 어드레스의 분기 타겟 어드레스를 예측하여 예측 타겟 어드레스를 출력하는 분기 타겟 버퍼; 및
    상기 분기 예측의 결과가 테이큰이 아닌 현재 명령어의 어드레스 및 상기 예측 타겟 어드레스 중 하나를 선택하여 출력하는 어드레스 선택 유닛을 구비하며,
    상기 현재 명령어의 어드레스에 대한 분기 예측 및 분기 타겟 어드레스 예측은 상기 현재 명령어의 직전 명령어는 분기 명령어가 아니라는 가정 하에 상기 직전 명령어의 어드레스에 대한 분기 예측 및 분기 타겟 어드레스 예측이 종료되기 전에 시작되고,
    상기 어드레스 선택 유닛으로부터 출력되는 어드레스는 다이내믹 전압 스케 일링을 사용하는 명령어 캐쉬 및 명령어 TLB의 대응되는 캐쉬 라인들을 웨이크-업하는 것을 특징으로 하는 명령어 캐쉬 및 명령어 TLB의 제어기.
  2. 제1항에 있어서,
    상기 어드레스 선택 유닛으로부터 출력되는 어드레스는 상기 다이내믹 전압 스케일링을 사용하는 명령어 캐쉬 및 명령어 TLB의 대응되는 서브-뱅크들을 웨이크-업하는 것을 특징으로 하는 명령어 캐쉬 및 명령어 TLB의 제어기.
  3. 제1항에 있어서, 상기 어드레스 선택 유닛은
    상기 현재 명령어 어드레스의 최하위 비트 및 상기 최종 분기 예측값에 응답하여 동작하는 것을 특징으로 하는 명령어 캐쉬 및 명령어 TLB의 제어기.
  4. 제3항에 있어서, 상기 어드레스 선택 유닛은
    상기 현재 명령어에 대한 어드레스의 최하위 비트와 상기 최종 예측값에 대해 배타적 논리합 연산을 수행하여 선택값을 출력하는 배타적 논리합 게이트; 및
    상기 선택값에 응답하여 상기 분기 예측의 결과가 테이큰이 아닌 현재 명령어의 어드레스 및 상기 예측 타겟 어드레스 중 하나를 선택하여 출력하는 멀티플렉서를 구비하는 것을 특징으로 하는 명령어 캐쉬 및 명령어 TLB의 제어기.
  5. 제1항에 있어서, 상기 분기 선택기는
    이전 분기 명령어들의 어드레스들에 대한 과거 분기 예측값들을 저장하는 글로벌 히스토리 레지스터;
    상기 현재 명령어의 어드레스와 상기 글로벌 히스토리 레지스터에 저장된 어드레스에 대해 배타적 논리합 연산을 수행하여 인덱스 값을 출력하는 제1 배타적 논리합 게이트;
    상기 이전 분기 명령어들의 어드레스들에 대한 분기 예측값들을 저장하고, 상기 인덱스 값이 지정하는 현재 명령어의 어드레스에 대한 분기 예측값들을 출력하는 분기 예측 테이블;
    상기 현재 명령어 어드레스의 최하위 비트와 상기 글로벌 히스토리 레지스터에 저장된 어드레스의 최하위 비트에 대해 배타적 논리합 연산을 수행하여 선택값을 출력하는 제2 배타적 논리합 게이트; 및
    상기 선택값에 응답하여 상기 분기 예측값들 중 하나를 상기 최종 분기 예측값으로서 출력하는 멀티플렉서를 구비하는 것을 특징으로 하는 명령어 캐쉬 및 명령어 TLB의 제어기.
  6. 제5항에 있어서, 상기 분기 선택기는
    상기 현재 명령어의 어드레스를 저장하는 어드레스 레지스터를 더 구비하는 것을 특징으로 하는 명령어 캐쉬 및 명령어 TLB의 제어기.
  7. 제5항에 있어서,
    상기 분기 예측 테이블의 하나의 라인에 포함된 두 개의 순차적인 엔트리들은 상기 인덱스 값에 의해 지정되는 것을 특징으로 하는 명령어 캐쉬 및 명령어 TLB의 제어기.
  8. 제1항에 있어서, 상기 분기 타겟 버퍼는
    상기 현재 명령어에 대한 어드레스의 가상 인덱스 비트들에 의해 지정되는 이전 분기 명령어들의 어드레스들에 대한 타겟 어드레스들 및 상기 타겟 어드레스들에 대응하는 타겟 태그들을 저장하는 분기 타겟 테이블;
    상기 현재 명령어에 대한 어드레스의 최하위 비트에 응답하여 상기 가상 인덱스 비트들에 의해 지정되는 타겟 태그들 중 하나를 출력하는 제1 멀티플렉서;
    상기 현재 명령어에 대한 어드레스의 물리 태그 비트들과 상기 제1 멀티플렉서로부터 출력되는 타겟 태그를 비교하여 인에이블 신호를 출력하는 비교기;
    상기 현재 명령어에 대한 어드레스의 최하위 비트에 응답하여 상기 가상 인덱스 비트들에 의해 지정되는 타겟 어드레스들 중 하나를 출력하는 제2 멀티플렉서; 및
    상기 인에이블 신호의 활성화에 응답하여 상기 제2 멀티플렉서로부터 출력되는 타겟 어드레스를 버퍼링하여 상기 예측 타겟 어드레스로서 출력하는 버퍼를 구비하는 것을 특징을 하는 명령어 캐쉬 및 명령어 TLB의 제어기.
  9. 제8항에 있어서, 상기 분기 타겟 버퍼는
    상기 현재 명령어의 어드레스를 저장하는 어드레스 레지스터를 더 구비하는 것을 특징으로 하는 명령어 캐쉬 및 명령어 TLB의 제어기.
  10. 제8항에 있어서,
    상기 분기 타겟 테이블의 하나의 라인에 포함된 두 개의 순차적인 엔트리들은 상기 가상 인덱스 비트들에 의해 지정되는 것을 특징으로 하는 명령어 캐쉬 및 명령어 TLB의 제어기.
  11. (a) 현재 명령어의 직전 명령어를 분기 명령어가 아니라고 가정하는 단계;
    (b) 상기 현재 명령어의 어드레스에 대한 분기 예측 및 분기 타겟 어드레스 예측을 동시에 수행하는 단계;
    (c) 상기 (b) 단계의 분기 예측의 결과가 테이큰인 지 여부를 판단하는 단계;
    (d) 상기 (c) 단계에서 테이큰으로 판단되면, 상기 (b) 단계에서의 분기 타겟 어드레스 예측의 결과인 예측 타겟 어드레스가 지정하는 명령어 캐쉬의 캐쉬 라인 및 명령어 TLB의 캐쉬 라인을 웨이크-업하는 단계; 및
    (e) 상기 (c) 단계에서 테이큰이 아닌 것으로 판단되면, 순차적인 현재 명령어의 어드레스가 지정하는 명령어 캐쉬의 캐쉬 라인 및 명령어 TLB의 캐쉬 라인을 웨이크-업하는 단계를 구비하며,
    상기 현재 명령어의 어드레스에 대한 분기 예측 및 분기 타겟 어드레스 예측 은 상기 직전 명령어의 어드레스에 대한 분기 예측 및 분기 타겟 어드레스 예측이 종료되기 전에 시작되고,
    상기 명령어 캐쉬와 명령어 TLB는 다이내믹 전압 스케일링을 사용하는 것을 특징으로 하는 명령어 캐쉬 및 명령어 TLB의 제어 방법.
  12. 제11항에 있어서, 상기 명령어 캐쉬 및 명령어 TLB의 제어 방법은
    상기 현재 명령어의 어드레스를 프로세서 코어로부터 상기 분기 예측을 수행하는 분기 예측기와 상기 분기 타겟 어드레스 예측을 수행하는 분기 타겟 버퍼로 동시에 전달하는 단계를 더 구비하는 것을 특징으로 하는 명령어 캐쉬 및 명령어 TLB의 제어 방법.
  13. 제11항에 있어서,
    상기 (d) 단계는 상기 예측 타겟 어드레스가 지정하는 명령어 캐쉬의 서브-뱅크 및 명령어 TLB의 서브-뱅크를 웨이크-업하고,
    상기 (e) 단계는 상기 순차적인 현재 명령어의 어드레스가 지정하는 명령어 캐쉬의 서브-뱅크 및 명령어 TLB의 서브-뱅크를 웨이크-업하는 것을 특징으로 하는 명령어 캐쉬 및 명령어 TLB의 제어 방법.
  14. 제11항에 있어서,
    상기 (b) 단계의 분기 예측에 사용되는 분기 예측 테이블의 하나의 라인에 포함된 두 개의 순차적인 엔트리들은 하나의 인덱스 값에 의해 지정되는 것을 특징으로 하는 명령어 캐쉬 및 명령어 TLB의 제어 방법.
  15. 제11항에 있어서,
    상기 (b) 단계의 분기 타겟 어드레스 예측에 사용되는 분기 타겟 테이블의 하나의 라인에 포함된 두 개의 순차적인 엔트리들은 상기 현재 명령어에 대한 어드레스의 가상 인덱스 비트들에 의해 지정되는 것을 특징으로 하는 명령어 캐쉬 및 명령어 TLB의 제어 방법.
KR1020040079246A 2004-10-05 2004-10-05 명령어 캐쉬와 명령어 변환 참조 버퍼의 제어기, 및 그제어방법 KR100630702B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020040079246A KR100630702B1 (ko) 2004-10-05 2004-10-05 명령어 캐쉬와 명령어 변환 참조 버퍼의 제어기, 및 그제어방법
TW094131273A TWI275102B (en) 2004-10-05 2005-09-12 Controller for instruction cache and instruction translation look-aside buffer, and method of controlling the same
CNA2005101069414A CN1758214A (zh) 2004-10-05 2005-09-22 指令高速缓存和指令翻译后备缓冲器的控制器及控制方法
JP2005290385A JP2006107507A (ja) 2004-10-05 2005-10-03 命令語キャッシュと命令語変換参照バッファの制御器、及びその制御方法
US11/242,729 US20060101299A1 (en) 2004-10-05 2005-10-04 Controller for instruction cache and instruction translation look-aside buffer, and method of controlling the same
GB0520272A GB2419010B (en) 2004-10-05 2005-10-05 Controller for instruction cache and instruction translation look-aside buffer, and method of controlling the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040079246A KR100630702B1 (ko) 2004-10-05 2004-10-05 명령어 캐쉬와 명령어 변환 참조 버퍼의 제어기, 및 그제어방법

Publications (2)

Publication Number Publication Date
KR20060030402A true KR20060030402A (ko) 2006-04-10
KR100630702B1 KR100630702B1 (ko) 2006-10-02

Family

ID=35429869

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040079246A KR100630702B1 (ko) 2004-10-05 2004-10-05 명령어 캐쉬와 명령어 변환 참조 버퍼의 제어기, 및 그제어방법

Country Status (6)

Country Link
US (1) US20060101299A1 (ko)
JP (1) JP2006107507A (ko)
KR (1) KR100630702B1 (ko)
CN (1) CN1758214A (ko)
GB (1) GB2419010B (ko)
TW (1) TWI275102B (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7900019B2 (en) * 2006-05-01 2011-03-01 Arm Limited Data access target predictions in a data processing system
US7523298B2 (en) * 2006-05-04 2009-04-21 International Business Machines Corporation Polymorphic branch predictor and method with selectable mode of prediction
US7827392B2 (en) * 2006-06-05 2010-11-02 Qualcomm Incorporated Sliding-window, block-based branch target address cache
US7640422B2 (en) * 2006-08-16 2009-12-29 Qualcomm Incorporated System for reducing number of lookups in a branch target address cache by storing retrieved BTAC addresses into instruction cache
US8028180B2 (en) * 2008-02-20 2011-09-27 International Business Machines Corporation Method and system for power conservation in a hierarchical branch predictor
US8667258B2 (en) 2010-06-23 2014-03-04 International Business Machines Corporation High performance cache translation look-aside buffer (TLB) lookups using multiple page size prediction
US8514611B2 (en) 2010-08-04 2013-08-20 Freescale Semiconductor, Inc. Memory with low voltage mode operation
WO2012103359A2 (en) * 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
US9377830B2 (en) 2011-12-30 2016-06-28 Samsung Electronics Co., Ltd. Data processing device with power management unit and portable device having the same
US9330026B2 (en) 2013-03-05 2016-05-03 Qualcomm Incorporated Method and apparatus for preventing unauthorized access to contents of a register under certain conditions when performing a hardware table walk (HWTW)
CN104424129B (zh) 2013-08-19 2019-07-26 上海芯豪微电子有限公司 基于指令读缓冲的缓存系统和方法
US9213532B2 (en) 2013-09-26 2015-12-15 Oracle International Corporation Method for ordering text in a binary
JP6523274B2 (ja) * 2013-10-25 2019-05-29 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 分岐予測ユニット及びレベル1命令キャッシュにおける帯域幅の増加
US9183896B1 (en) 2014-06-30 2015-11-10 International Business Machines Corporation Deep sleep wakeup of multi-bank memory
CN115114190B (zh) * 2022-07-20 2023-02-07 上海合见工业软件集团有限公司 基于预测逻辑的sram数据读取系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6272623B1 (en) * 1999-01-25 2001-08-07 Sun Microsystems, Inc. Methods and apparatus for branch prediction using hybrid history with index sharing
US6678815B1 (en) * 2000-06-27 2004-01-13 Intel Corporation Apparatus and method for reducing power consumption due to cache and TLB accesses in a processor front-end
JP2002259118A (ja) 2000-12-28 2002-09-13 Matsushita Electric Ind Co Ltd マイクロプロセッサ及び命令列変換装置
US20020194462A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Apparatus and method for selecting one of multiple target addresses stored in a speculative branch target address cache per instruction cache line
JP3795449B2 (ja) 2002-11-20 2006-07-12 独立行政法人科学技術振興機構 制御フローコードの分離によるプロセッサの実現方法及びそれを用いたマイクロプロセッサ
KR100528479B1 (ko) * 2003-09-24 2005-11-15 삼성전자주식회사 전력 소모를 감소시키기 위한 분기 예측기 및 구현방법
JP3593123B2 (ja) * 2004-04-05 2004-11-24 株式会社ルネサステクノロジ セットアソシアティブ方式のメモリ装置

Also Published As

Publication number Publication date
US20060101299A1 (en) 2006-05-11
KR100630702B1 (ko) 2006-10-02
JP2006107507A (ja) 2006-04-20
GB2419010A (en) 2006-04-12
CN1758214A (zh) 2006-04-12
GB0520272D0 (en) 2005-11-16
TW200627475A (en) 2006-08-01
TWI275102B (en) 2007-03-01
GB2419010B (en) 2008-06-18

Similar Documents

Publication Publication Date Title
US20060101299A1 (en) Controller for instruction cache and instruction translation look-aside buffer, and method of controlling the same
JP6030987B2 (ja) メモリ制御回路
US7904658B2 (en) Structure for power-efficient cache memory
JP4764026B2 (ja) ダイナミック電圧スケーリングによる低消費電力集積回路装置
US5901103A (en) Integrated circuit having standby control for memory and method thereof
US7836320B2 (en) Power management in a data processing apparatus having a plurality of domains in which devices of the data processing apparatus can operate
US5893142A (en) Data processing system having a cache and method therefor
US20050108480A1 (en) Method and system for providing cache set selection which is power optimized
KR100806284B1 (ko) 동적 전압 스케일링을 적용한 고효율 프로세서
KR100351504B1 (ko) 캐쉬 메모리, 그의 전력 소비 절감 방법 그리고 캐쉬메모리를 구비하는 데이터 처리 시스템
US7523331B2 (en) Power saving operation of an apparatus with a cache memory
KR102594288B1 (ko) 성능 또는 에너지 소모 특성이 상이한 제1 및 제2 처리 모드를 갖는 처리 파이프라인
WO2005069148A2 (en) Memory management method and related system
US20070124538A1 (en) Power-efficient cache memory system and method therefor
JP4111760B2 (ja) データ処理装置のメモリ・ユニットに対するアクセス
US6898671B2 (en) Data processor for reducing set-associative cache energy via selective way prediction
CN101727160B (zh) 协处理器系统工作模式的切换方法和装置及处理器系统
JP4421390B2 (ja) 半導体集積回路
Nicolaescu et al. Fast speculative address generation and way caching for reducing L1 data cache energy
US20070094454A1 (en) Program memory source switching for high speed and/or low power program execution in a digital processor
US11281473B2 (en) Dual wakeup interrupt controllers
JP3893463B2 (ja) キャッシュメモリ、及びキャッシュメモリの電力削減方法
CN110121688B (zh) 判断加载程序的方法以及电子系统
JPH10143274A (ja) Cpuのクロック制御装置
US7093148B2 (en) Microcontroller Operable in normal and low speed modes utilizing control signals for executing commands in a read-only memory during the low speed modes

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: 20120831

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20130902

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee