KR101076815B1 - 분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템 - Google Patents

분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템 Download PDF

Info

Publication number
KR101076815B1
KR101076815B1 KR1020040038710A KR20040038710A KR101076815B1 KR 101076815 B1 KR101076815 B1 KR 101076815B1 KR 1020040038710 A KR1020040038710 A KR 1020040038710A KR 20040038710 A KR20040038710 A KR 20040038710A KR 101076815 B1 KR101076815 B1 KR 101076815B1
Authority
KR
South Korea
Prior art keywords
cache
instruction
cache line
accessed
btac
Prior art date
Application number
KR1020040038710A
Other languages
English (en)
Other versions
KR20050113499A (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 KR1020040038710A priority Critical patent/KR101076815B1/ko
Priority to US11/114,464 priority patent/US7346737B2/en
Publication of KR20050113499A publication Critical patent/KR20050113499A/ko
Application granted granted Critical
Publication of KR101076815B1 publication Critical patent/KR101076815B1/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/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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

분기 타겟 어드레스 캐쉬를 포함하는 본 발명의 캐쉬 시스템은, 각각이 명령 캐쉬의 캐쉬 라인들에 대응하는 분기 타겟 어드레스 캐쉬(BTAC) 액세스 비트들을 저장하기 위한 저장 유닛을 구비한다. BTAC 액세스 비트들은 명령 캐쉬의 대응하는 캐쉬 라인의 다음 캐쉬 라인에 분기 명령이 있는 지의 여부를 나타낸다. 명령 캐쉬의 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인에 대응하는 BTAC 액세스 비트의 값에 따라서 분기 타겟 어드레스 캐쉬는 선택적으로 액세스된다.

Description

분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템{CACHE SYSTEM HAVING BRANCH TARGET ADDRESS CACHE}
도 1은 분기 예측 메커니즘을 채용한 전형적인 컴퓨터 시스템을 보여주는 도면;
도 2는 명령어 페치 유닛 내에 구성되는 분기 타겟 어드레스 캐쉬(BTAC)와 캐쉬 메모리에 구성되는 명령 캐쉬의 종래 기술에 따른 구성을 보여주는 도면;
도 3은 전형적인 컴퓨터 시스템에서의 명령 파이프라인;
도 4a 및 도 4b는 도 3에 도시된 명령 파이프라인을 통하여 일련의 명령들이 수행될 때 분기 타겟 어드레스 캐쉬(BTAC)가 액세스되는 시간을 보여주는 도면;
도 5는 본 발명의 바람직한 실시예에 따른 캐쉬 시스템을 보여주는 도면;
도 6은 제어 로직(260)의 BTAC 액세스 비트 설정 방법을 보여주는 플로우차트;
도 7은 BTAC 액세스 비트 값에 따른 제어 로직(260)의 BTAC 제어 프로세스를 보여주는 플로우차트;
도 8은 세츄레이션 카운터의 스테이트 머신;
도 9a는 명령 캐쉬 태그 램의 (I-1) 번째 및 I 번째 캐쉬 라인들에 저장된 태그 어드레스들이 순차적일 때 BTAC 액세스 타임을 보여주는 도면; 그리고
도 9b는 명령 캐쉬 태그 램의 (I-1) 번째 및 I 번째 캐쉬 라인들에 저장된 태그 어드레스들이 비순차적일 때 BTAC 액세스 타임을 보여주고 있다.
*도면의 주요 부분에 대한 설명
200 : 명령어 페치 유닛 210 : BTAC 태그 램
220 : BTAC 데이터 램 230 : 카운터
250 : 비교기
260 : 제어 로직 300 : 캐쉬 메모리
310 : 명령 캐쉬 태그 램 320 : 명령 캐쉬 데이터 램
330 : BTAC 액세스 램
본 발명은 캐쉬 시스템에 관한 것으로, 좀 더 구체적으로는 분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템에 관한 것이다.
전형적인 컴퓨터들은 하나의 명령(instruction)을 완전히 수행하고 나서 연속된 다음 명령을 시작하였다. 기술의 발전에 따라서 파이프라인(pipeline) 및 수퍼스칼라(superscalar) 구조를 발전시켰다. 이러한 구조들은 설계 복잡도를 높이고, 컴퓨터 프로세서의 값을 높였으나, 파이프라인 및 수퍼스칼라 컴퓨터의 성능 향상에 의해서 충분히 보상될 수 있었다.
또한, 캐쉬의 사용은 컴퓨터 시스템의 성능을 향상시켰다. 캐쉬는 데이터 및 명령들과 같은 정보들을 저장하고, 메인 메모리의 접근 없이 단지 몇 사이클 내에 필요한 정보를 제공할 수 있다. 최근의 캐쉬는 분기 타겟 어드레스를 저장하기 위한 분기 타겟 어드레스 캐쉬를 포함하여 파이프라인 구조를 채용한 프로세서의 성능을 더욱 향상시킨다.
도 1은 분기 예측 메커니즘을 채용한 전형적인 컴퓨터 시스템을 보여준다. 컴퓨터 시스템(100)은, 프로세서(110), 메인 메모리(150) 그리고 입/출력 장치(160)를 포함한다. 프로세서(110)는 명령어 페치 유닛(120), 캐쉬 컨트롤러(130) 그리고 캐쉬 메모리(140)로 구성된 캐쉬 시스템과 단일 칩으로 구현된다. 명령어 페치 유닛(120)은 캐쉬 시스템과 분리되어서 프로세서(110) 내에 구비되는 하나의 회로로 간주될 수 있으나, 본 명세서에서는 명령어 페치 유닛(120)을 캐쉬 시스템에 포함한다. 명령어 페치 유닛(120)은 프로세서(110)를 위한 바람직한 명령 시퀀스를 예측하여 캐쉬 메모리(140) 또는 메인 메모리(150)로부터 명령을 페치한다.
도 2는 명령어 페치 유닛(120) 내에 구성되는 분기 타겟 어드레스 캐쉬(Branch Target Address Cache : BTAC)와 캐쉬 메모리(140)에 구성되는 명령 캐쉬의 종래 기술에 따른 구성을 보여주고 있다.
명령어 페치 유닛(120)은 BTAC 태그 램(121)과 BTAC 데이터 램(122)으로 구성되는 BATC와 세츄레이션(saturation) 카운터(123) 그리고 비교기(125)를 포함한다. 명령 캐쉬(140)는 명령 캐쉬 태그 램(141)과 명령 캐쉬 데이터 램(142)으로 구성되는 명령 캐쉬를 포함한다. BTAC는 명령 캐쉬의 현재 액세스된 캐쉬 라인에 저장된 명령이 분기 명령인 지를 판별하고, 예측된 분기 어드레스를 제공한다.
도 3은 전형적인 컴퓨터 시스템에서 명령 파이프라인을 보여주고 있다. 명령 파이프라인은 8 개의 순차적인 단계들(sequential states) 즉, 명령 캐쉬 페치 단계(FE), 디코딩 단계(DE), 이슈 단계(ISS), 실행 단계(EX) 그리고 기입 단계(WB)를 포함한다. 실행 단계(EX)는 어드레스 발생, 오퍼래드 페치 및 명령 실행을 수행한다.
명령 페치 유닛(120)의 동작은 다음과 같다. 페치 단계(FE)에서 명령 캐쉬의 특정 캐쉬 라인이 액세스될 때 페치 어드레스(PfuAddr:[6:0]=PEFE[6:0])가 BTAC 태그 램(121)의 인덱스로 제공된다. 인덱스에 의해서 액세스된 BTAC 태그 램(121)의 태그 어드레스(BtacTLAddr[31:7])와 BTAC 데이터 램(122)의 예측된 분기 어드레스(BtacTLAddr[31:0])가 출력된다. 비교기(125)는 BTAC 태그 램(121)으로부터의 태그 어드레스(BtacTLAddr[31:7])와 프로세서(110)로부터의 태그 어드레스인 다음 페치 어드레스(PCFE[31:7])를 비교한다. 두 어드레스들(BtacTLAddr[31:7] 및 PCFE[31:7])이 일치하면, 분기 명령 이후 페치할 명령의 어드레스는 BTAC 데이터 램(122)으로부터 독출된 어드레스(BtacTLAddr[31:0])이고, 일치하지 않으면 분기 예측이 이루어지지 않는다.
만일, 비교기(125)의 비교 결과, 두 어드레스들(BtacTLAddr[31:7] 및 PCFE[31:7])이 일치하지 않고, 명령(B1)의 디코딩 결과 분기 명령인 것으로 판별되면 명령(B1)의 기입 단계(WB)까지 수행된 후 BTAC 태그 램(121)의 인덱스(PfuAddr:[6:0]=PCWB[6:0])에는 PCWB[31:7]이 기입되고, BTAC 데이터 램(122)에는 명령(B1)의 수행 결과 분기된 어드레스가 기입된다. PCWB[31:0]은 분기 명령(B1)이 메인 메모리(150)에 저장된 어드레스이다.
이와 같은 종래의 캐쉬 시스템에서는, 분기 어드레스를 예측하기 위하여 명령 캐쉬가 액세스될 때마다 BTAC가 액세스되어야만 했다. 도 4a 및 도 4b는 도 3에 도시된 명령 파이프라인을 통하여 일련의 명령들이 수행될 때 분기 타겟 어드레스 캐쉬(BTAC)가 액세스되는 시간을 보여주고 있다. 캐쉬 명령 태그 램(141)에 저장된 태그 어드레스들이 순차적일 때(도 4a)와 비순차적(도 4b)일 때 모두 명령 캐쉬가 액세스될 때마다 BTAC가 액세스됨을 알 수 있다.
이와 같은 BTAC 액세스 방식은 분기 어드레스를 미리 예측할 수 있어서 파이프라인 스톨을 최소화함으로써 캐쉬 시스템의 속도 향상을 이룰 수 있으나, 매 사이클마다 BTAC를 액세스하므로 전력 소모 면에서는 매우 비효율적이다.
따라서 본 발명의 목적은 분기 타겟 어드레스 캐쉬(BTAC)의 액세스를 최소화하여 전력 소모를 감소시킬 수 있는 캐쉬 시스템을 제공하는데 있다.
상술한 바와 같은 목적을 달성하기 위한 본 발명의 특징에 의하면, 캐쉬 시스템은: 태그 어드레스와 명령을 저장하기 위한 복수의 캐쉬 라인들을 포함하는 명령 캐쉬와, 상기 명령 캐쉬에 저장된 분기 명령의 예측된 타겟 어드레스를 저장하기 위한 분기 타겟 어드레스 캐쉬와, 각각이 상기 캐쉬 라인들에 대응하는 분기 타겟 어드레스 캐쉬(BTAC) 액세스 비트들을 저장하기 위한, 상기 BTAC 액세스 비트들 은 대응하는 캐쉬 라인의 다음 캐쉬 라인에 분기 명령이 저장되어 있는 지의 여부를 나타내는, 저장 유닛, 그리고 상기 BTAC 액세스 비트들의 값들을 설정하고, 상기 명령 캐쉬의 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인에 대응하는 상기 BTAC 액세스 비트의 값에 따라서 상기 분기 타겟 어드레스 캐쉬를 선택적으로 액세스하는 제어 로직을 포함한다.
바람직한 실시예에 있어서, 상기 제어 로직은, 현재 액세스된 I 번째 캐쉬 라인의 태그 어드레스와 이전 액세스된 (I-1) 번째 캐쉬 라인의 태그 어드레스가 순차적이고, 상기 현재 액세스된 I 번째 캐쉬 라인의 명령이 분기 명령이면 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 상기 BTAC 액세스 비트를 제 1 값으로 설정한다.
이 실시예에 있어서, 상기 제어 로직은, 상기 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인의 태그 어드레스와 상기 이전 액세스된 (I-1) 번째 캐쉬 라인의 태그 어드레스가 순차적이고, 상기 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인의 명령이 분기 명령이 아니면 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 상기 BTAC 액세스 비트를 제 2 값으로 설정한다.
이 실시예에 있어서, 상기 제어 로직은, 상기 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인의 태그 어드레스와 상기 이전 액세스된 (I-1) 번째 캐쉬 라인의 태그 어드레스가 비순차적이면 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 상기 BTAC 액세스 비트를 상기 제 2 값으로 설정한다.
이 실시예에 있어서, 상기 제어 로직은, 상기 명령 캐쉬의 상기 현재 액세스 된 I(I는 양의 정수) 번째 캐쉬 라인에 대응하는 BTAC 액세스 비트가 상기 제 1 값일 때 상기 분기 타겟 어드레스 캐쉬를 액세스한다.
이 실시예에 있어서 상기 제어 로직은, 상기 명령 캐쉬의 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 BTAC 액세스 비트가 상기 제 2 값이고 그리고 상기 현재 액세스된 I 번째 캐쉬 라인에 저장된 태그 어드레스와 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 저장된 태그 어드레스가 순차적이면 상기 I 번째 캐쉬 라인을 액세스할 때 상기 분기 타겟 어드레스 캐쉬를 액세스하지 않는다.
이 실시예에 있어서, 상기 제어 로직은, 상기 명령 캐쉬의 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 BTAC 액세스 비트가 상기 제 2 값이고 그리고 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 저장된 태그 어드레스와 상기 현재 액세스된 I 번째 캐쉬 라인에 저장된 태그 어드레스가 비순차적이면 상기 I 번째 캐쉬 라인을 액세스할 때 상기 분기 타겟 어드레스 캐쉬를 액세스한다.
이 실시예에 있어서, 상기 제어 로직은, 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 저장된 태그 어드레스와 상기 현재 액세스된 I 번째 캐쉬 라인에 저장된 태그 어드레스가 비순차적이면 상기 I 번째 캐쉬 라인을 액세스할 때 상기 분기 타겟 어드레스 캐쉬를 액세스한다.
바람직한 실시예에 있어서, 상기 명령 캐쉬의 상기 복수의 캐쉬 라인들 각각은, 태그 어드레스와 복수의 명령들을 저장한다.
이 실시예에 있어서, 상기 제어 로직은, 상기 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인의 태그 어드레스와 이전 액세스된 (I-1) 번째 캐쉬 라인의 태 그 어드레스가 순차적이고, 상기 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인의 명령들 중 적어도 하나가 분기 명령이면 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 상기 BTAC 액세스 비트를 제 1 값으로 설정한다.
이 실시예에 있어서, 상기 제어 로직은, 상기 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인의 태그 어드레스와 상기 이전 액세스된 (I-1) 번째 캐쉬 라인의 태그 어드레스가 순차적이고, 상기 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인의 명령들 모두가 분기 명령이 아니면 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 상기 BTAC 액세스 비트를 제 2 값으로 설정한다.
이 실시예에 있어서, 상기 제어 로직은, 상기 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인의 태그 어드레스와 상기 이전 액세스된 (I-1) 번째 캐쉬 라인의 태그 어드레스가 비순차적이면 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 상기 BTAC 액세스 비트를 상기 제 2 값으로 설정한다.
이 실시예에 있어서, 상기 제어 로직은, 상기 명령 캐쉬의 상기 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인에 대응하는 BTAC 액세스 비트가 상기 제 1 값일 때 상기 분기 타겟 어드레스 캐쉬를 액세스한다.
이 실시예에 있어서, 상기 제어 로직은, 상기 명령 캐쉬의 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 BTAC 액세스 비트가 상기 제 2 값이고 그리고 상기 현재 액세스된 I 번째 캐쉬 라인에 저장된 태그 어드레스와 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 저장된 태그 어드레스가 순차적이면 상기 I 번째 캐쉬 라인을 액세스할 때 상기 분기 타겟 어드레스 캐쉬를 액세스하지 않는다.
이 실시예에 있어서, 상기 제어 로직은, 상기 명령 캐쉬의 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 BTAC 액세스 비트가 상기 제 2 값이고 그리고 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 저장된 태그 어드레스와 상기 현재 액세스된 I 번째 캐쉬 라인에 저장된 태그 어드레스가 비순차적이면 상기 I 번째 캐쉬 라인의 상기 복수의 명령들이 순차적으로 페치될 때마다 상기 분기 타겟 어드레스 캐쉬를 액세스한다.
이 실시예에 있어서, 상기 제어 로직은, 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 저장된 태그 어드레스와 상기 현재 액세스된 I 번째 캐쉬 라인에 저장된 태그 어드레스가 비순차적이면 상기 I 번째 캐쉬 라인의 상기 복수의 명령들이 순차적으로 페치될 때마다 상기 분기 타겟 어드레스 캐쉬를 액세스한다.
이 실시예에 있어서, 상기 명령 캐쉬는, 상기 태그 어드레스를 저장하기 위한 명령 태그 캐쉬, 그리고 상기 명령을 저장하기 위한 명령 데이터 캐쉬를 포함한다. 상기 명령 태그 캐쉬와 상기 명령 데이터 캐쉬는 각각 복수의 캐쉬 라인들을 포함하고, 상기 명령 태그 캐쉬의 캐쉬 라인들과 상기 명령 데이터 캐쉬의 캐쉬 라인들은 각각 대응한다.
이 실시예에 있어서, 상기 분기 타겟 어드레스 캐쉬는, 상기 명령 캐쉬에 저장된 분기 명령의 상기 예측된 타겟 어드레스를 저장하기 위한 복수의 BTAC라인들을 포함한다.
이 실시예에 있어서, 상기 분기 타겟 어드레스 캐쉬의 상기 복수의 BTAC 라인들을 액세스하기 위한 인덱스는 상기 명령 캐쉬의 상기 복수의 캐쉬 라인들을 액 세스하기 위한 인덱스와 일치한다.
이 실시예에 있어서, 상기 제어 로직은, 상기 명령 캐쉬의 상기 복수의 캐쉬 라인들을 액세스하기 위한 인덱스를 이용하여 상기 분기 타겟 어드레스 캐쉬의 상기 BTAC 라인을 액세스한다.
이 실시예에 있어서, 상기 분기 타겟 어드레스 캐쉬의 상기 복수의 BTAC 라인들을 액세스하기 위한 인덱스는 상기 명령 캐쉬의 상기 복수의 캐쉬 라인들을 액세스하기 위한 인덱스의 일부와 일치한다.
이 실시예에 있어서, 상기 제어 로직은, 상기 명령 캐쉬의 상기 복수의 캐쉬 라인들을 액세스하기 위한 인덱스의 일부을 이용하여 상기 분기 타겟 어드레스 캐쉬의 상기 BTAC 라인을 액세스한다.
이 실시예에 있어서, 상기 제어 로직은, 상기 명령 캐쉬의 현재 액세스된 상기 I 번째 캐쉬 라인에 대응하는 BTAC 액세스 비트가 상기 제 1 값일 때 상기 분기 타겟 어드레스 캐쉬의 상기 BTAC 라인을 오직 한 번 액세스한다.
이 실시예에 있어서, 상기 제어 로직은, 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 저장된 태그 어드레스와 상기 현재 액세스된 I 번째 캐쉬 라인에 저장된 태그 어드레스가 비순차적이면 상기 I 번째 캐쉬 라인의 상기 복수의 명령들이 순차적으로 페치될 때마다 상기 분기 타겟 어드레스 캐쉬의 동일한 BTAC 라인을 액세스한다.
본 발명의 다른 특징에 의하면, 태그 어드레스와 명령을 저장하기 위한 복수의 캐쉬 라인들을 포함하는 명령 캐쉬, 상기 명령 캐쉬에 저장된 분기 명령의 예측 된 타겟 어드레스를 저장하기 위한 분기 타겟 어드레스 캐쉬 그리고 상기 캐쉬 라인들에 각각 대응하는 분기 타겟 어드레스 캐쉬(BTAC) 액세스 비트들을 포함하는 캐쉬 시스템의 상기 분기 타겟 어드레스 캐쉬를 액세스하기 위한 캐쉬 시스템 운영 방법은: 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인의 태그 어드레스와 이전 액세스된 (I-1) 번째 캐쉬 라인의 태그 어드레스가 순차적인 지를 판별하는 제 1 판별 단계와, 상기 현재 액세스된 I 번째 캐쉬 라인의 명령이 분기 명령인 지를 판별하는 제 2 판별 단계, 그리고 상기 제 1 및 제 2 판별 단계들의 수행 결과, 상기 현재 액세스된 I 번째 캐쉬 라인의 태그 어드레스와 이전 액세스된 (I-1) 번째 캐쉬 라인의 태그 어드레스가 순차적이고, 상기 현재 액세스된 I 번째 캐쉬 라인의 명령이 분기 명령일 때 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 상기 BTAC 액세스 비트를 제 1 값으로 설정하는 단계를 포함한다.
바람직한 실시예에 있어서, 상기 운영 방법은, 상기 제 1 및 제 2 판별 단계들의 수행 결과, 상기 현재 액세스된 I 번째 캐쉬 라인의 태그 어드레스와 상기 이전 액세스된 (I-1) 번째 캐쉬 라인의 태그 어드레스가 순차적이고, 상기 현재 액세스된 I번째 캐쉬 라인의 명령이 분기 명령이 아니면 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 상기 BTAC 액세스 비트를 제 2 값으로 설정하는 단계를 포함한다.
이 실시예에 있어서, 상기 운영 방법은, 상기 제 1 판별 단계의 수행 결과, 상기 현재 액세스된 I 번째 캐쉬 라인의 태그 어드레스와 이전 액세스된 (I-1) 번째 캐쉬 라인의 태그 어드레스가 비순차적일 때 상기 이전 액세스된 (I-1) 번째 캐 쉬 라인에 대응하는 상기 BTAC 액세스 비트를 상기 제 2 값으로 설정하는 단계를 포함한다.
이 실시예에 있어서, 상기 운영 방법은, 상기 명령 캐쉬의 상기 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인에 대응하는 BTAC 액세스 비트의 값을 판별하는 제 3 판별 단계, 그리고 상기 제 3 판별 단계의 수행 결과, 상기 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인에 대응하는 BTAC 액세스 비트가 상기 제 1 값일 때 상기 분기 타겟 어드레스 캐쉬를 액세스하는 단계를 더 포함한다.
이 실시예에 있어서, 상기 운영 방법은, 상기 현재 액세스된 I 번째 캐쉬 라인에 저장된 태그 어드레스와 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 저장된 태그 어드레스가 순차적인 지를 판별하는 제 4 판별 단계, 그리고 상기 제 3 및 상기 제 4 판별 단계들의 수행 결과, 상기 명령 캐쉬의 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 BTAC 액세스 비트가 상기 제 2 값이고 그리고 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 저장된 태그 어드레스와 상기 현재 액세스된 I 번째 캐쉬 라인에 저장된 태그 어드레스가 비순차적이면 상기 I 번째 캐쉬 라인을 액세스할 때 상기 분기 타겟 어드레스 캐쉬를 액세스하는 단계를 더 포함한다.
이 실시예에 있어서, 상기 운영 방법은, 상기 제 3 및 상기 제 4 판별 단계들의 수행 결과, 상기 명령 캐쉬의 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 BTAC 액세스 비트가 상기 제 2 값이고 그리고 상기 현재 액세스된 I 번째 캐쉬 라인에 저장된 태그 어드레스와 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 저장된 태그 어드레스가 순차적이면 상기 I 번째 캐쉬 라인을 액세스할 때 상기 분 기 타겟 어드레스 캐쉬를 액세스하지 않는 단계를 더 포함한다.
이 실시예에 있어서, 상기 명령 캐쉬의 상기 복수의 캐쉬 라인들 각각은, 태그 어드레스와 복수의 명령들을 저장한다.
이 실시예에 있어서, 상기 운영 방법은, 상기 제 3 및 상기 제 4 판별 단계들의 수행 결과, 상기 명령 캐쉬의 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 BTAC 액세스 비트가 상기 제 2 값이고 그리고 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 저장된 태그 어드레스와 상기 현재 액세스된 I 번째 캐쉬 라인에 저장된 태그 어드레스가 비순차적이면 상기 I 번째 캐쉬 라인의 상기 복수의 명령들이 순차적으로 페치될 때마다 상기 분기 타겟 어드레스 캐쉬를 액세스하는 단계를 더 포함한다.
(실시예)
이하 본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다.
도 5는 본 발명의 바람직한 실시예에 따른 캐쉬 시스템을 보여주고 있다. 앞서 설명한 도 2의 캐쉬 시스템과 유사하게, 명령어 페치 유닛(200)은 분기 타겟 어드레스 캐쉬(BTAC) 태그 램(210)과 BTAC 데이터 램(220)을 포함하는 BTAC, 세츄레이션 카운터(230), 비교기(250) 그리고 제어 로직(260)을 포함한다. 캐쉬 메모리(300)는 명령 캐쉬 태그 램(310), 명령 캐쉬 데이 램(320) 그리고 BTAC 액세스 비트를 저장하기 위한 BTAC 액세스 램(330)을 포함한다. 명령 캐쉬 태그 램(310)과 명령 캐쉬 데이터 램(320)은 복수의 캐쉬 라인들을 포함한다. 본 발명의 바람 직한 실시예에 따른 명령 캐쉬 데이터 램(320)은 각각의 캐쉬 라인에 4 개의 명령들을 저장한다. 그러므로, 프로세서로부터 주어진 어드레스에 의해서 명령 캐쉬 태그 램(310)에서 캐쉬 히트가 발생할 때 데이터 램(320)의 4 개의 명령들이 페치되어서 프로세서에 의해 순차적으로 실행된다.
본 발명의 바람직한 실시예에 따른 BTAC 액세스 램(330)은 명령 캐쉬의 n 개의 캐쉬 라인들에 각각 대응하는 BTAC 액세스 비트들(BP[n])을 저장한다. BTAC 액세스 비트가 '1'이면 대응하는 캐쉬 라인의 다음 캐쉬 라인에 분기 명령이 있음을 나타낸다. BTAC 액세스 비트 값 설정 및 BTAC 액세스 비트 값에 따른 제어 로직(260)의 동작이 추후 상세히 설명된다.
본 발명의 바람직한 실시예에 따른 제어 로직(260)은 BTAC 액세스 비트 램(330)에 저장된 BTAC 액세스 비트에 따라서 BTAC 태그 램(210) 및 데이터 램(220)의 액세스를 제어하고, 분기 어드레스(BTA[31:0])를 출력한다.
제어 로직(260)의 구체적인 동작을 보여주는 플로우차트들이 도 6 및 도 7에 도시되어 있다. 먼저, 도 6을 참조하여, BTAC 액세스 램(330)에 BTAC 액세스 비트들(BP[n])의 값들을 설정하는 방법이 설명된다.
단계 S400에서, 제어 로직(260)은 명령 캐쉬 태그 램(310)의 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인에 저장된 태그 어드레스와 이전 액세스된 (I-1) 번째 캐쉬 라인의 태그 어드레스가 순차적인 지의 여부를 판별한다. 명령 캐쉬 태그 램(310)의 I 번째 및 (I-1) 번째 캐쉬 라인들의 태그 어드레스들이 순차적이면 그 제어는 단계 S410으로 진행한다.
단계 S410에서, 제어 로직(260)은 명령 캐쉬 데이터 램(320)의 현재 액세스된 I 번째 캐쉬 라인에 저장된 명령이 분기 명령인 지의 여부를 판별한다. 본 발명의 바람직한 실시예에 따른 명령 캐쉬 데이터 램(320)은 하나의 캐쉬 라인에 4 개의 명령들을 저장한다. 그러므로, 단계 S410에서, 제어 로직(260)은 명령 캐쉬 데이터 램(320)의 현재 액세스된 I 번째 캐쉬 라인에 저장된 명령들 중 적어도 하나가 분기 명령인 지의 여부를 판별한다. 명령 캐쉬 데이터 램(320)의 현재 액세스된 I 번째 캐쉬 라인에 적어도 하나의 분기 명령이 저장되어 있는 경우, 그 제어는 단계 S420으로 진행한다.
단계 S420에서, 제어 로직(260)은 명령 캐쉬의 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 BTAC 액세스 램(330)의 BTAC 액세스 비트를 '1'로 설정한다.
앞서 단계 S400 및 S410의 판별 결과, 제어 로직(260)은 명령 캐쉬 태그 램(310)의 I 번째 및 (I-1) 번째 캐쉬 라인들의 태그 어드레스들이 순차적이 아니거나 또는 명령 캐쉬 데이터 램(320)의 현재 액세스된 I 번째 캐쉬 라인에 저장된 명령들 모두가 분기 명령이 아니면 그 제어는 단계 S430으로 진행한다.
단계 S420에서, 제어 로직(260)은 명령 캐쉬의 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 BTAC 액세스 램(330)의 BTAC 액세스 비트를 '0'으로 설정한다.
도 5에 도시된 예에서, 명령 캐쉬 태그 램(310)의 캐쉬 라인(Lb)이 액세스될 때, 현재 액세스된 캐쉬 라인(Lb)에 저장된 태그 어드레스(Ox100)와 이전 액세스된 캐쉬 라인(La)에 저장된 태그 어드레스(Ox0ff)는 순차적이다. 그리고, 명령 캐쉬 데이터 램(320)의 현재 액세스된 캐쉬 라인(Lb)에는 분기 명령(B1)이 포함되어 있다. 그러므로, 명령 캐쉬의 이전 액세스된 캐쉬 라인(La)에 대응하는 BTAC 액세스 비트(BP[La])는 '1'로 설정된다. 명령 캐쉬의 캐쉬 라인(Lb)에 대응하는 BTAC 액세스 비트(BP[Lb])는 명령 캐쉬의 캐쉬 라인(Lb)과 인접한 다음 캐쉬 라인을 액세스할 때 설정된다.
명령 캐쉬 태그 램(310)의 캐쉬 라인(Ld)에 저장된 태그 어드레스(Ox212)와 캐쉬 라인(Lc)에 저장된 태그 어드레스(Ox110)는 비순차적이다. 그러므로, 캐쉬 라인(Lc)에 대응하는 BTAC 액세스 비트(BP[Lc])는 '0'으로 설정된다.
명령 캐쉬 태그 램(310)의 캐쉬 라인(Le)에 저장된 태그 어드레스(Ox220)와 캐쉬 라인(Lf)에 저장된 태그 어드레스(Ox221)는 순차적이나, 명령 캐쉬 데이터 램(310)의 캐쉬 라인(Lf)에는 분기 명령이 포함되어 있지 않다. 그러므로, 캐쉬 라인(Le)에 대응하는 BTAC 액세스 비트(BP[Lc])는 '0'으로 설정된다.
계속해서, 도 7을 참조하여, 제어 로직(260)이 BTAC 액세스하는 프로세스가 설명된다.
단계 S500에서, 제어 로직(260)은 명령 캐쉬의 현재 액세스된 I번째 캐쉬 라인에 대응하는 BTAC 액세스 비트가 '1'인 지의 여부를 판별한다. 판별 결과, TAC 액세스 비트가 '1'이면 그 제어는 단계 S510으로 진행한다.
단계 S510에서, 제어 로직(260)은 BTAC를 1 번(즉, 1 사이클동안) 액세스한다. BTAC 태그 램(210) 및 데이터 램(220)을 액세스하는 인덱스 어드레스는 PfuAdDr[6:0]=PCFE[6:0]이다. 비교기(250)는 BTAC 태그램(210)으로부터 독출된 태 그 어드레스(BtacTLAddr[31:7])와 프로세서로부터 제공된 태그 어드레스(PCFE[31:7])의 일치 여부에 따라서 히트 신호(HIT)를 활성화/비활성화한다.
제어 로직(260)은 히트 신호(HIT)가 활성 상태일 때 세츄레이션 카운터(230)의 카운트 값을 참조하여 BTAC 데이터 램(220)의 인덱스 어드레스(PfuAdDr[6:0]=PCFE[6:0])로부터 독출된 어드레스(BtacTaddr[31:0])를 선택적으로 저장한다. 그리고, 명령 캐쉬의 다음 캐쉬 라인인 (I+1) 번째 캐쉬 라인이 액세스될 때 저장된 어드레스(BtacTaddr[31:0])를 분기 어드레스(BTA[31:0])로서 제공한다. 그러므로, 명령 캐쉬 데이터 램(320)의 (I+1) 번째 캐쉬 라인의 명령들 중 분기 명령이 해독되면 분기 어드레스(BTA[31:0])가 다음 페치 어드레스로서 제공된다.
본 발명의 바람직한 실시예에서 세츄레이션 카운터(230)는 BTAC 캐쉬 라인들에 각각 대응하는 m 개의 2-비트 카운터들로 구성된다. 세츄레이션 카운터(230)의 스테이트 머신(state machine)이 도 8에 도시되어 있다.
태그 어드레스가 BTAC 태그 램(210)에서 히트일 때, BTAC 데이터 램(220)에 저장된 분기 어드레스를 다음 페치 어드레스로 설정할 것인 지는 세츄레이션 카운터(230)의 카운트 값에 따라 결정된다. 카운트 값이 00이면 강한 낫테이큰(Strongly Not Taken), 01이면 약한 낫테이큰(Taken), 10이면 약한 테이큰(Weakly Taken) 그리고 11이면 강한 테이큰(Storngly Taken)이다. 세츄레이션 카운터(230)에 관한 설명은 Thang. M. Tran 등에 의해서 "THREE HISTORY BRANCH HISTORY USING ONE BIT IN A BRANCH PREDICTION MECHANISM"이란 제목으로 2001년 6월 26일 취득된 미합중국특허 U.S. Pat. No. 6,253,316에 상세히 개시되어 있다.
다시 도 7을 참조하면, 단계 S500에서, I 번째 캐쉬 라인에 대응하는 BTAC 액세스 비트가 '0'으로 판별되면 그 제어는 단계 S520으로 진행한다.
단계 S520에서, 제어 로직(260)은 캐쉬 명령 태그 램(310)의 현재 액세스된 I 번째 캐쉬 라인의 태그 어드레스와 이전 액세스된 (I-1)번째 캐쉬 라인의 태그 어드레스가 비순차적인 지를 판별한다. 판별 결과, I 및 (I-1) 번째 캐쉬 라인들의 태그 어드레스들이 비순차적이면 그 제어는 단계 S530으로 진행한다.
단계 S530에서, 제어 로직(260)은 명령 캐쉬의 I 번째 캐쉬 라인의 4 개의 명령들을 페치할 때마다 BTAC를 액세스한다.
상기 단계 S520의 판별 결과, 현재 액세스된 I 번째 캐쉬 라인의 태그 어드레스와 이전 액세스된 (I-1)번째 캐쉬 라인의 태그 어드레스가 순차적인 것으로 판별되면, 그 제어는 단계 S540으로 진행한다.
단계 S540에서, 제어 로직(260)은 BTAC를 액세스하지 않는다.
도 5, 도 9a 및 도 9b를 참조하여, BTAC 액세스 램(330)에 저장된 BTAC 액세스 비트들의 예시적인 값들에 따른 제어 로직(260)의 동작이 설명된다.
도 9a는 명령 캐쉬 태그 램(310)의 (I-1) 번째 및 I 번째 캐쉬 라인들에 저장된 태그 어드레스들이 순차적일 때 BTAC 액세스 타임을 보여주고 있다. 명령 캐쉬의 캐쉬 라인(La)이 액세스될 때 캐쉬 라인(La)에 대응하는 BTAC 액세스 비트(BP[La])가 '1'이므로, BTAC는 명령(I11)이 페치될 때(FE) 1번 액세스된다. 도 9a에서는 페치 사이클(FE)에서 BTAC가 액세스되는 것으로 표시하였으나, BTAC는 캐쉬 라인(La)의 명령들이 페치되는 동안 언제든지 1번만 액세스되면 된다. 왜냐하면, BTAC로부터 독출되는 분기 어드레스는 다음 캐쉬 라인(Lb)에서 사용되기 때문이다.
명령 캐쉬의 캐쉬 라인(Lb)이 액세스될 때 BTAC 액세스 비트(BP[Lb])가 '0'이고, 캐쉬 라인(La)에 저장된 태그 어드레스(0x0ff)와 캐쉬 라인(Lb)에 저장된 태그 어드레스(Ox100)가 순차적이므로 BTAC는 액세스되지 않는다.
도 9b는 명령 캐쉬 태그 램(310)의 (I-1) 번째 및 I 번째 캐쉬 라인들에 저장된 태그 어드레스들이 비순차적일 때 BTAC 액세스 타임을 보여주고 있다.
명령 캐쉬의 캐쉬 라인(Ld)이 액세스될 때 BTAC 액세스 비트(BP[Ld])가 '0'이고, 캐쉬 라인(Lc)에 저장된 태그 어드레스(0x110)와 캐쉬 라인(Ld)에 저장된 태그 어드레스(0x212)가 비순차적이므로 캐쉬 라인(Ld)에 저장된 명령들(B2, I41, I42, I43)이 페치될 때마다 BTAC는 액세스되어야 한다.
앞서, 캐쉬 라인(Ld)에는 분기 명령(B2)이 존재하나, 캐쉬 라인(Lc)에 저장된 태그 어드레스(0x110)와 캐쉬 라인(Ld)에 저장된 태그 어드레스(0x212)가 비순차적이므로, BTAC 액세스 비트(BP[Lc])는 '0'으로 설정된 바 있다. 그러므로, 이전 캐쉬 라인(Lc)을 액세스할 때 BTAC가 액세스되지 않았으므로, 분기 명령(B2)을 위해 BTAC는 액세스되어야 한다.
단, 캐쉬 라인(Lf)의 경우에서는, 캐쉬 라인(Lf)에 대응하는 BTA 액세스 비트(330)가 '0'이고, 캐쉬 라인(Le)에 저장된 태그 어드레스(0x220)와 캐쉬 라인(Lf)에 저장된 태그 어드레스(0x221)가 순차적이므로 BTAC를 액세스하지 않아도 된다.
도 4a와 도 9a 그리고 도 4b와 도 9b를 각각 비교하면, 종래에 비해 본 발명의 캐쉬 시스템에서는 BTAC 액세스 타임이 현저히 감소함을 알 수 있다. 즉, 본 발명의 바람직한 실시예에 따른 캐쉬 시스템은, 명령 캐쉬의 현재 액세스된 I 번째 캐쉬 라인에 대응하는 BTAC 액세스 비트가 '1'일 때 BTAC를 1 사이클동안 액세스한다. 이는 매 사이클마다 BTAC를 액세스하는 종래 기술에 비해 BTAC 액세스 횟수를 현저히 감소시켜서 전력 소모를 낮출 수 있다.
더욱이, 현재 액세스된 I 번째 캐쉬 라인의 태그 어드레스와 이전 액세스된 (I-1) 번째 캐쉬 라인의 태그 어드레스가 순차적이고, BTAC 액세스 비트(BP[I])가 '0'이면 I 번째 캐쉬 라인에 저장된 명령이 수행되는 동안 BTAC를 전혀 액세스하지 않음으로써 전력 소모를 최소화할 수 있다.
다만, 본 발명의 캐쉬 시스템은 명령 캐쉬의 현재 액세스된 I 번째 캐쉬 라인의 태그 어드레스와 이전 액세스된 (I-1) 번째 캐쉬 라인의 태그 어드레스가 비순차적일 때에는 종래와 동일하게 현재 액세스된 I 번째 캐쉬 라인에 저장된 명령이 수행되는 사이클들동안 BTAC를 매번 액세스해야만 한다. 이는 현재 액세스된 I 번째 캐쉬 라인의 태그 어드레스와 이전 액세스된 (I-1) 번째 캐쉬 라인의 태그 어드레스가 비순차적이면, 분기 예측이 낫테이큰으로 판정될 때 현재 액세스된 I 번째 캐쉬 라인의 태그 어드레스로부터 다음 액세스될 (I+1) 번째 캐쉬 라인의 태그 어드레스를 예측할 수 없기 때문이다.
예시적인 바람직한 실시예들을 이용하여 본 발명을 설명하였지만, 본 발명의 범위는 개시된 실시예들에 한정되지 않는다는 것이 잘 이해될 것이다. 오히려, 본 발명의 범위에는 다양한 변형 예들 및 그 유사한 구성들을 모두 포함될 수 있도록 하려는 것이다. 따라서, 청구 범위는 그러한 변형 예들 및 그 유사한 구성들 모두를 포함하는 것으로 가능한 폭넓게 해석되어야 한다.

상술한 바와 같은 본 발명에 의하면, 분기 타겟 어드레스 캐쉬(BTAC)의 액세스를 최소화함으로써 불필요한 전력 소모를 줄일 수 있다.

Claims (32)

  1. 태그 어드레스와 명령을 저장하기 위한 복수의 캐쉬 라인들을 포함하는 명령 캐쉬와;
    상기 명령 캐쉬에 저장된 분기 명령의 예측된 타겟 어드레스를 저장하기 위한 분기 타겟 어드레스 캐쉬와;
    각각의 비트가 상기 명령 캐쉬의 상기 복수의 캐쉬 라인들에 대응하는 분기 타겟 어드레스 캐쉬(BTAC) 액세스 비트들을 저장하기 위한 저장 유닛; 그리고
    상기 BTAC 액세스 비트들의 값들을 설정하고, 상기 명령 캐쉬의 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인에 대응하는 상기 BTAC 액세스 비트의 값에 따라서 상기 분기 타겟 어드레스 캐쉬를 선택적으로 액세스하는 제어 로직을 포함하되,
    상기 저장 유닛에 저장된 상기 BTAC 액세스 비트는 상기 명령 캐쉬의 대응하는 캐쉬 라인의 다음 캐쉬 라인에 분기 명령이 저장되어 있는 지의 여부를 나타내는 캐쉬 시스템.
  2. 제 1 항에 있어서,
    상기 제어 로직은,
    상기 명령 캐쉬의 상기 현재 액세스된 I 번째 캐쉬 라인의 태그 어드레스와 상기 명령 캐쉬의 이전 액세스된 (I-1) 번째 캐쉬 라인의 태그 어드레스가 순차적이고, 상기 명령 캐쉬의 상기 현재 액세스된 I 번째 캐쉬 라인의 명령이 분기 명령이면 상기 명령 캐쉬의 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 상기 BTAC 액세스 비트를 제 1 값으로 설정하는 캐쉬 시스템.
  3. 제 2 항에 있어서,
    상기 제어 로직은,
    상기 명령 캐쉬의 상기 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인의 태그 어드레스와 상기 명령 캐쉬의 상기 이전 액세스된 (I-1) 번째 캐쉬 라인의 태그 어드레스가 순차적이고, 상기 명령 캐쉬의 상기 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인의 명령이 분기 명령이 아니면 상기 명령 캐쉬의 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 상기 BTAC 액세스 비트를 제 2 값으로 설정하는 캐쉬 시스템.
  4. 제 3 항에 있어서,
    상기 제어 로직은,
    상기 명령 캐쉬의 상기 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인의 태그 어드레스와 상기 명령 캐쉬의 상기 이전 액세스된 (I-1) 번째 캐쉬 라인의 태그 어드레스가 비순차적이면 상기 명령 캐쉬의 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 상기 BTAC 액세스 비트를 상기 제 2 값으로 설정하는 캐쉬 시스템.
  5. 제 4 항에 있어서,
    상기 제어 로직은,
    상기 명령 캐쉬의 상기 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인에 대응하는 BTAC 액세스 비트가 상기 제 1 값일 때 상기 분기 타겟 어드레스 캐쉬를 액세스하는 캐쉬 시스템.
  6. 제 5 항에 있어서
    상기 제어 로직은,
    상기 명령 캐쉬의 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 BTAC 액세스 비트가 상기 제 2 값이고 그리고 상기 명령 캐쉬의 상기 현재 액세스된 I 번째 캐쉬 라인에 저장된 태그 어드레스와 상기 명령 캐쉬의 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 저장된 태그 어드레스가 순차적이면 상기 I 번째 캐쉬 라인을 액세스할 때 상기 분기 타겟 어드레스 캐쉬를 액세스하지 않는 캐쉬 시스템.
  7. 제 6 항에 있어서,
    상기 제어 로직은,
    상기 명령 캐쉬의 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 BTAC 액세스 비트가 상기 제 2 값이고 그리고 상기 명령 캐쉬의 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 저장된 태그 어드레스와 상기 명령 캐쉬의 상기 현재 액세스된 I 번째 캐쉬 라인에 저장된 태그 어드레스가 비순차적이면 상기 명령 캐쉬의 상기 I 번째 캐쉬 라인을 액세스할 때 상기 분기 타겟 어드레스 캐쉬를 액세스하는 캐쉬 시스템.
  8. 제 6 항에 있어서,
    상기 제어 로직은,
    상기 명령 캐쉬의 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 저장된 태그 어드레스와 상기 명령 캐쉬의 상기 현재 액세스된 I 번째 캐쉬 라인에 저장된 태그 어드레스가 비순차적이면 상기 명령 캐쉬의 상기 I 번째 캐쉬 라인을 액세스할 때 상기 분기 타겟 어드레스 캐쉬를 액세스하는 캐쉬 시스템.
  9. 제 1 항에 있어서,
    상기 명령 캐쉬의 상기 복수의 캐쉬 라인들 각각은,
    태그 어드레스와 복수의 명령들을 저장하는 캐쉬 시스템.
  10. 태그 어드레스와 명령을 저장하기 위한 복수의 캐쉬 라인들을 포함하는 명령 캐쉬 및 상기 명령 캐쉬에 저장된 분기 명령의 예측된 타겟 어드레스를 저장하기 위한 분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템의 상기 분기 타겟 어드레스 캐쉬를 액세스하기 위한 캐쉬 시스템 운영 방법에 있어서:
    상기 캐쉬 시스템은, 상기 명령 캐쉬의 상기 복수의 캐쉬 라인들에 각각 대응하는 분기 타겟 어드레스 캐쉬(BTAC) 액세스 비트들을 포함하고;
    상기 명령 캐쉬의 현재 액세스된 I(I는 양의 정수) 번째 캐쉬 라인의 태그 어드레스와 상기 명령 캐쉬의 이전 액세스된 (I-1) 번째 캐쉬 라인의 태그 어드레스가 순차적인 지를 판별하는 제 1 판별 단계와;
    상기 명령 캐쉬의 상기 현재 액세스된 I 번째 캐쉬 라인의 명령이 분기 명령인 지를 판별하는 제 2 판별 단계; 그리고
    상기 제 1 및 제 2 판별 단계들의 수행 결과, 상기 명령 캐쉬의 상기 현재 액세스된 I 번째 캐쉬 라인의 태그 어드레스와 상기 명령 캐쉬의 상기 이전 액세스된 (I-1) 번째 캐쉬 라인의 태그 어드레스가 순차적이고, 상기 명령 캐쉬의 상기 현재 액세스된 I 번째 캐쉬 라인의 명령이 분기 명령일 때 상기 명령 캐쉬의 상기 이전 액세스된 (I-1) 번째 캐쉬 라인에 대응하는 상기 BTAC 액세스 비트를 제 1 값으로 설정하는 단계를 포함하는 캐쉬 시스템 운영 방법.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
KR1020040038710A 2004-05-29 2004-05-29 분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템 KR101076815B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020040038710A KR101076815B1 (ko) 2004-05-29 2004-05-29 분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템
US11/114,464 US7346737B2 (en) 2004-05-29 2005-04-26 Cache system having branch target address cache

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040038710A KR101076815B1 (ko) 2004-05-29 2004-05-29 분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템

Publications (2)

Publication Number Publication Date
KR20050113499A KR20050113499A (ko) 2005-12-02
KR101076815B1 true KR101076815B1 (ko) 2011-10-25

Family

ID=35426740

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040038710A KR101076815B1 (ko) 2004-05-29 2004-05-29 분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템

Country Status (2)

Country Link
US (1) US7346737B2 (ko)
KR (1) KR101076815B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101258762B1 (ko) 2008-10-30 2013-04-29 인텔 코포레이션 효율적인 명령어 융합을 촉진시키는 기술

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7716460B2 (en) 2006-09-29 2010-05-11 Qualcomm Incorporated Effective use of a BHT in processor having variable length instruction set execution modes
US7873818B2 (en) * 2008-02-22 2011-01-18 International Business Machines Corporation System and method for search area confined branch prediction
CN101763249A (zh) * 2008-12-25 2010-06-30 世意法(北京)半导体研发有限责任公司 对非控制流指令减少分支检验
TWI636362B (zh) * 2011-06-24 2018-09-21 林正浩 高性能快取方法和裝置
US9489204B2 (en) * 2013-03-15 2016-11-08 Qualcomm Incorporated Method and apparatus for precalculating a direct branch partial target address during a misprediction correction process

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5848268A (en) 1992-02-07 1998-12-08 Mitsubishi Denki Kabushiki Kaisha Data processor with branch target address generating unit
US5933850A (en) 1994-08-31 1999-08-03 Hewlett-Packard Company Instruction unit having a partitioned cache
US6247097B1 (en) 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3599409B2 (ja) * 1994-06-14 2004-12-08 株式会社ルネサステクノロジ 分岐予測装置
US6253316B1 (en) 1996-11-19 2001-06-26 Advanced Micro Devices, Inc. Three state branch history using one bit in a branch prediction mechanism
US5822576A (en) 1997-03-26 1998-10-13 International Business Machines Corporation Branch history table with branch pattern field
JP2000132391A (ja) 1998-10-23 2000-05-12 Nec Corp 分岐予測機構

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5848268A (en) 1992-02-07 1998-12-08 Mitsubishi Denki Kabushiki Kaisha Data processor with branch target address generating unit
US5933850A (en) 1994-08-31 1999-08-03 Hewlett-Packard Company Instruction unit having a partitioned cache
US6247097B1 (en) 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101258762B1 (ko) 2008-10-30 2013-04-29 인텔 코포레이션 효율적인 명령어 융합을 촉진시키는 기술

Also Published As

Publication number Publication date
US20050268040A1 (en) 2005-12-01
KR20050113499A (ko) 2005-12-02
US7346737B2 (en) 2008-03-18

Similar Documents

Publication Publication Date Title
US7437537B2 (en) Methods and apparatus for predicting unaligned memory access
US7609582B2 (en) Branch target buffer and method of use
US6401192B1 (en) Apparatus for software initiated prefetch and method therefor
US6351796B1 (en) Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache
US10402200B2 (en) High performance zero bubble conditional branch prediction using micro branch target buffer
JP2006134331A (ja) ブランチ目的アドレスを利用してキャッシュウェイを予測するプロセッサ及びその方法
US7266676B2 (en) Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays
US8195889B2 (en) Hybrid region CAM for region prefetcher and methods thereof
KR20070001081A (ko) 분기 타겟 버퍼에서 엔트리들을 할당하는 방법 및 장치
US7346737B2 (en) Cache system having branch target address cache
US20110161631A1 (en) Arithmetic processing unit, information processing device, and control method
US20060095746A1 (en) Branch predictor, processor and branch prediction method
MX2009001747A (es) Metodos y aparatos para reducir las busquedas en una memoria cache de direccion destino de saltos.
US6823430B2 (en) Directoryless L0 cache for stall reduction
US11327768B2 (en) Arithmetic processing apparatus and memory apparatus
CN117130665A (zh) 一种处理器分支指令执行结果预测方法及系统
KR101306622B1 (ko) 명령어 큐 제어장치
US20050027921A1 (en) Information processing apparatus capable of prefetching instructions
US9135011B2 (en) Next branch table for use with a branch predictor
US20120124349A1 (en) Power efficient pattern history table fetch in branch predictor
JP2002278752A (ja) 命令の実行結果予測装置
US7447884B2 (en) Multi-table branch prediction circuit for predicting a branch's target address based on the branch's delay slot instruction address
GB2416412A (en) Branch target buffer memory array with an associated word line and gating circuit, the circuit storing a word line gating value
KR960015231A (ko) 향상된 어드레스 지정 방법 및 시스템
US6360310B1 (en) Apparatus and method for instruction cache access

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151001

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160930

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180927

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190930

Year of fee payment: 9