KR20090042318A - 분기 타겟 어드레스 캐시에서 룩업들을 감소시키는 방법 및장치 - Google Patents

분기 타겟 어드레스 캐시에서 룩업들을 감소시키는 방법 및장치 Download PDF

Info

Publication number
KR20090042318A
KR20090042318A KR1020097005401A KR20097005401A KR20090042318A KR 20090042318 A KR20090042318 A KR 20090042318A KR 1020097005401 A KR1020097005401 A KR 1020097005401A KR 20097005401 A KR20097005401 A KR 20097005401A KR 20090042318 A KR20090042318 A KR 20090042318A
Authority
KR
South Korea
Prior art keywords
cache
target address
branch
instruction
branch target
Prior art date
Application number
KR1020097005401A
Other languages
English (en)
Other versions
KR101049319B1 (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 콸콤 인코포레이티드
Publication of KR20090042318A publication Critical patent/KR20090042318A/ko
Application granted granted Critical
Publication of KR101049319B1 publication Critical patent/KR101049319B1/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
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30061Multi-way branch instructions, e.g. CASE
    • 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/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
    • 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/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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

Landscapes

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

Abstract

본 발명은 분기 타겟 어드레스 캐시(BTAC)에 대한 룩업들을 감소시키기 위한 기술에 대한 것이다. 이러한 기술에서, 분기 타겟 어드레스 명령은 캐시(I-캐시)에서 명령 어드레스의 룩업에서 미스에 응답하여 BTAC로부터 검색된다. 분기 타겟 어드레스는 명령 어드레스와 관련된다. BTAC로부터 검색된 분기 타겟 어드레스는 I-캐시에 저장된다. 본원 발명을 이용하여, BTAC와 비동시적으로 연속한 명령 어드레스가 I-캐시에서 룩업되며, 결국 불필요한 BTAC 룩업들을 감소시킴으로써 전력을 절약한다.

Description

분기 타겟 어드레스 캐시에서 룩업들을 감소시키는 방법 및 장치{METHODS AND APPARATUS FOR REDUCING LOOKUPS IN A BRANCH TARGET ADDRESS CACHE}
본 출원은 일반적으로 프로세서들의 영역에 관한 것이며, 특히 분기 타겟 어드레스 캐시에서 룩업들을 감소시킴으로써 분기 예측을 향상시키는 방법에 관한 것이다.
마이크로프로세서들은 다양한 애플리케이션에서 계산 작업을 실행한다. 향상된 프로세서 성능은 소프트웨어 변화들을 통한 고속 연산 및/또는 증가된 기능에 대처하기 위해 언제나 요구되고 있다. 휴대용 전자 장치들과 같은 많은 내장형 애플리케이션에서, 전력 절약 및 고속 처리는 프로세서 설계 및 실행에서 또한 목표이다.
많은 현대의 프로세서들은 파이프라이닝 구조를 사용하는데, 여기서, 각각의 다수의 실행 단계들을 갖는 연속한 명령들은 실행시 중첩된다. 향상된 성능을 위해, 명령들은 파이프라인을 통해 연속적으로 흘러야 한다. 파이프라인에서 명령을 멈추게 하는 임의의 상황은 성능에 악영향을 줄 수 있다. 만일 명령들이 파이프라인으로부터 플러싱되고, 연속적으로 재인출되면, 성능 및 전력 소모에 부정적인 영향을 미친다.
대부분의 프로그램들은 직접 분기 명령들을 포함하는데, 여기서 실제 분기 동작은 간접 분기 명령이 파이프라인에서 자세히 평가될 때까지 알려지지 않는다. 간접 분기 명령의 실제 평가의 대기로부터 초래되는 멈춤을 방지하기 위해, 현대의 프로세서들은 소정 형태의 분기 예측을 사용할 수도 있으며, 그로 인해 간접 분기 명령들의 분기 동작이 파이프라인에서 조기에 예측된다. 예측 분기 평가에 기초하여, 프로세서는 불확실하게 인출(사전 인출)하고, 예측된 어드레스-(만일 분기가 선택될 것으로 예측되는 경우) 분기 타겟 어드레스 또는 (만일 분기가 선택되지 않을 것으로 예측되는 경우) 분기 명령 이후의 다음 연속한 어드레스 중 하나-로부터 명령들을 프로세싱한다. 간접 분기 명령이 선택되는지의 여부는 분기의 방향 결정으로 참조된다.
통상의 분기 예측 기술들은 프로세서 분기 예측 로직 및 파이프라인의 인출 스테이지에 위치한 분기 타겟 액세스 캐시(BTAC)를 포함한다. BTAC는 앞서 인출된 명령의 타겟 어드레스를 저장하고 명령의 어드레스에 의해 색인(index)된다. I-캐시는 상위 캐시 또는 메모리로부터 검색된 다양한 명령 타입들의 명령들로 통상적으로 점유된다. BTAC들은 통상적으로 간접 분기 명령이 프로세서 파이프라인에서 더욱 상세히 실질적으로 분석(resolve)된 후 점유된다.
연산시, 통상의 분기 예측 기술들은 동시에 BTAC 및 I-캐시에서 사전 인출된 명령들에 대한 어드레스 룩업을 실행한다. 만일 BTAC에서 미스(miss)가 존재하면, 이러한 통상의 분기 기술들은 부합을 검색하지 않고, BTAC 룩업에서 소비된 전력을 소비한다. 만일 BTAC에서 히트(hit)가 존재하면, 룩업된 어드레스는 간접 분기 명 령으로 간주될 수도 있다. BTAC 룩업 후, 통상의 기술들은 BTAC로부터 검색된 분가 타겟 어드레스가 예측 선택되는 지의 여부를 결정하기 위해 분기 예측 로직을 호출한다. 만일 분기 예측 로직이 선택을 예측하면, 분기 예측 로직은 분기 타겟 어드레스로부터 시작하는 명령들을 검색함으로써 명령 흐름을 다시 지향시킨다.
분기 명령 이후에 프로세서 파이프라인으로 진입하는 임의의 연속한 명령들은 통상적으로 파이프라인으로부터 플러싱된다. BTAC 룩업 및 연속한 분기 예측에 의해 한정된 경로는 통상적으로 임계 속도 경로(critical speed path)인데, 그 이유는 이러한 경로의 시간이 짧을수록 명령 흐름을 재지향하기에 앞서 프로세서 파이프라인으로부터 플러싱될 필요가 있는 명령들의 양이 적어지기 때문이다. 결론적으로, 이러한 경로는 명령을 플러싱하는데 있어서 소비되는 전력을 최소화하기 위해 가능한 한 짧은 것이 바람직하다.
임계 경로의 시간을 감소시키는 통상의 기술들은 BTAC의 크기를 감소시키고, 및/또는 다중 경로 방식으로 BTAC를 구성하는 것을 포함한다. 그러나 BTAC의 크기를 감소시킴으로써, 잠재 히트들의 수 및, 결국 BTAC에서 분기 타겟 어드레스를 검색할 확률은 감소되어, 전체적으로 BTAC의 효율성을 저하시킨다. 더욱이, BTAC를 다중 경로 방식으로 구성함으로써, BTAC로의 색인은 더욱 신속하게 될 수도 있지만, 비교에 소비된 시간은 증가할 수도 있다. 이러한 상황에서, BTAC는 I-캐시보다 더 늦을 수도 있으며, 결국, 임계 경로의 병렬 룩업 부분에서 제한 요인이 된다. 따라서, 간접 분기 명령이 분기 예측의 효율을 감소시키지 않고 프로세서 파이프라인에서 검색될 때, 명령을 재지향하기 위한 시간을 감소시키는 장치 및 방법 이 요구된다.
본 발명은 룩업이 I-캐시 및 BTAC에서 동시에 행해지고 룩업이 BTAC에서 실패할 때 통상의 분기 예측 기술들이 종종 전력을 불필요하게 소비한다는 것을 인식한다. 이러한 인식은 I-캐시에 히트가 존재하고 BTAC에 미스가 존재할 때 더욱 명백한데, 이는 I-캐시가 전형적으로 모든 타입의 명령들을 저장하고, BATC가 전형적으로 분기 명령 어드레스들을 저장함으로 인해 발생하기 쉽다.
일 실시예에 따라, 분기 타겟 어드레스 캐시(BTAC)에 대한 룩업들을 감소시키는 방법이 개시된다. 이러한 방법에서, 분기 타겟 어드레스는 명령 캐시(I-캐시)에서 명령 어드레스를 룩업에서 미스에 응답하여 BTAC로부터 검색된다. 분기 타겟 어드레스는 명령 어드레스와 관련된다. BTAC로부터 검색된 분기 타겟 어드레스는 I-캐시에 저장된다. 개시된 기술들을 이용하여, 연속한 명령 어드레스들이 BTAC와 비동시적인 I-캐시에 유리하게 룩업되며, 결국 불필요한 BTAC 룩업들을 감소시킴으로써 전력을 절약한다.
다른 실시예에 따라, 분기 명령들을 명렬 캐시로 저장하는 방법이 개시된다. 이러한 방법은 명령 캐시(I-캐시)에서 분기 명령 어드레스를 룩업하는 단계, I-캐시 미스에 응답하여 분기 타겟 어드레스 캐시(BTAC)로부터 분기 타겟 어드레스를 검색하는 단계, 및 분기 타겟 어드레스를 I-캐시의 엔트리로 저장하는 단계를 포함한다.
다른 실시예는 분기 타겟 어드레스 캐시(BTAC)에 대한 룩업들을 감소시키는 시스템과 관련된다. 시스템은 제1 분기 명령 어드레스를 룩업할 때, 캐시 미스에 응답하여 BTAC로부터 분기 타겟 어드레스를 검색하도록 구성된 명령 캐시(I-캐시) 및 BTAC를 포함한다. I-캐시는 분기 타겟 어드레스를 저장하도록 추가로 구성된다.
본 발명의 다른 실시예가 이하의 상세한 설명으로부터 기술 분야의 당업자에게 명확하게 될 것이며, 본 발명의 다양한 실시예는 설명의 예로써 설명된다. 이해하듯이, 본 발명은 다른 그리고 상이한 실시예들을 이용할 수 있으며, 본 발명을 벗어나지 않고, 몇몇 구체적인 특징은 다양한 다른 특징에서 변경될 수 있다. 결론적으로, 도면 및 상세한 설명은 특성상 설명을 위한 것이며 제한하려는 것은 아니다.
도1은 프로세서의 기능적 블록도이다.
도2A-2C(통합적으로 도2)는 I-캐시가 코드 세그먼트로부터 분기 명령을 포함하지 않을 때 I-캐시 및 BTAC의 콘텐츠 및 코드 세그먼트의 리스트의 예를 도시한다.
도3은 I-캐시가 BTAC로부터의 명령 데이터로 점유된 후, 도1의 I-캐시의 콘텐츠의 예를 도시한다.
도4는 간접 분기 명령을 I-캐시로 저장하고, 도1의 I-캐시로부터 명령을 검색하는 방법을 설명한 흐름도이다.
도5는 실제 분기 분석에 대해 I-캐시를 유지하는 방법을 설명한 흐름도이다.
도6은 공통 BTAC를 공유하는 두 개의 프로세서의 기능 블록도이다.
도1은 예로든 프로세서(100)의 기능적 블록도를 도시한다. 프로세서(100)는 제어 로직(114)에 따라 명령 실행 파이프라인(112)에서 명령들을 실행한다. 소정의 실시예들에서, 파이프라인(112)은 도6과 관련하여 더욱 상세하게 설명될 다수의 병렬 파이프라인을 갖는 수퍼스칼라 구조일 수도 있다. 파이프라인(112)은 파이프 스테이지들로 구성된 다양한 레지스터들 또는 래치들(116A-D), 및 산술 로직 유닛(ALU)(118)과 같은 하나 이상의 실행 유닛을 포함한다. 범용 레지스터(GPR) 파일(120)은 메모리 계층 구조의 최상부를 포함하는 레지스터들을 제공한다.
데이터는 데이터 캐시(D-캐시)(140)로부터 액세스되는데, 메모리 어드레스 변환 및 허가는 메인 변환 참조 버퍼(TLB)(142)에 의해 관리된다. 다양한 실시예들에서, ITLB(124)는 TLB(142)의 일부의 사본을 포함할 수도 있다. 택일적으로, ITLB(124) 및 TLB(142)는 통합될 수도 있다. 마찬가지로, 프로세서(100)의 다양한 실시예에서, I-캐시(122) 및 D-캐시(140)는 통합되거나, 단일화될 수도 있다. I-캐시(122) 및/또는 D-캐시(140)에서의 미스들은 메모리 인터페이스(146)의 제어하에, 메인(오프 칩) 메모리(144)로의 액세스를 유발한다. I-캐시(122)에서의 미스들은 도4의 설명과 관련하여 더욱 상세하게 설명될 것이다.
프로세서(100)는 다양한 주변 장치들(150)에 대한 액세스를 제어하는, 입력/출력(I/O) 인터페이스(148)를 포함할 수도 있다. 기술 분야의 당업자는 프로세서(100)의 다양한 변화가 가능하다는 것을 인식할 것이다. 예를 들어, 프로세 서(100)는 I 및 D 캐시들(122, 140) 모두 또는 둘 중 하나에 대해 제2 레벨(L2) 캐시를 포함할 수도 있다. 게다가, 프로세서(100)에 도시된 하나 이상의 기능적 블록은 특정 실시예로부터 생략될 수도 있다.
프로세서(100)는 분기 예측 시스템(143)을 포함한다. 분기 예측 시스템(143)은 BTAC(141), 분기 예측(BP) 회로(126), 업데이트 로직 회로(160), 및 선택적 사전디코딩 회로(156)를 포함한다. BTAC(141)는 하나 이상의 엔트리를 저장하도록 구성되는데, 여기서 각각의 엔트리는 인출 어드레스에 대응하는 분기 타겟 어드레스 및 분기 명령 어드레스를 포함한다. BTAC(141)는 직접 및 간접 분기 명령 어드레스의 결합을 저장할 수도 있다.
I-캐시(122) 및 BTAC(141)는, 명령 어드레스가 I-캐시(122)에서 미스이고, 메모리 인터페이스(146)를 통해 상위 레벨 메모리로부터 대응하는 명령을 검색하기 위한 요청이 행해진 때, I-캐시(122) 및 BTAC(141)는 채움 경로(fill path(152))를 통해 점유된다. 제1 실시예에서, 일단 명령이 메모리 인터페이스(146)로부터 수신되면, 선택적 사전디코딩 로직 회로(156)는 수신된 명령이 간접 분기 명령인지를 결정하도록 구성된다. 만일 그렇다면, 수신된 명령의 어드레스는 수신된 명령의 어드레스와 관련된 타겟 어드레스가 존재하는 지를 알기 위해 경로(152)를 통해 BTAC(141)에서 룩업된다. 만일 BTAC(141)에서 히트가 존재하면, 수신된 명령 및 대응하는 타겟 어드레스는 I-캐시(122)에 기록된다. I-캐시(122)에서의 미스 및 BTAC(141)에서의 히트가, 간접 분기 명령이 잘못 예측되어 된 상황에서 발생할 수도 있으며, 그 결과 소정 타입의 무효화가 I-캐시(122)에서 발생한다. I-캐시 무 효화의 타입들은 도5의 논의와 관련하여 더욱 상세하게 논의될 것이다. 만일 수신된 명령의 어드레스가 BTAC(141)에 있지 않으면(예를 들어, 미스), 수신된 명령은 I-캐시(122)에 기록된다.
제2 실시예는 사전디코딩 로직 회로(156)를 제거한다. 소정의 실시예에서, 메모리 인터페이스(146)를 통해 수신된 명령들은 수신된 명령이 간접 분기 명령인지에 무관하게 BTAC(141)에서 룩업될 것이다. 이러한 제2 실시예에서, 제1 실시예와 같은 명령들은 저장을 위해 I-캐시(122)로 전달된다. 그러나 제1 실시예에서, BTAC 룩업들은 간접 분기 명령들로 제한된다. 어떤 실시예든, 만일 분기 타겟 어드레스가 BTAC(141)에 저장되면, 이는 또한 I-캐시(122)에 저장될 것이다.
실제 분기 레졸루션이 경로(162)를 통해 파이프라인(112)의 이후 스테이지들에서 발생한 후, 업데이트 제어 로직(160)은 타겟 어드레스를 BTAC(141)의 엔트리에 부가한다. BTAC(141)는 간접 분기 명령 및 대응하는 타겟 어드레스 모두를 포함하기 위해 경로(154)를 통해 I-캐시(122)를 업데이트한다. "예측이 선택되지 않음"이란 용어는 BP 회로(126)가 분기 타겟 어드레스에 따라 파이프라인(112)을 재지향하지 않도록 예측하는 것을 의미한다.
명령측 변환 참조 버퍼(ITLB)(124)에 의해 관리된 메모리 어드레스 변환 및 허가에 따라, 명령 사전인출 유닛(128)은 경로(125)를 통해 명령 캐시(I-캐시 또는 I$)(122)로부터 명령들을 인출한다. 만일 인출된 명령이 I-캐시(132)에서 발견(예를 들어, 히트)되고, 인출된 명령이 대응하는 분기 타겟 명령과 관련되면, BP 회로(126)는 타겟 어드레스에서 시작하는 코드 경로를 선택할 지의 여부를 예측한다. 만일 BP 회로(126)가 타겟 어드레스가 선택될 것을 예측하면, 명령 인출 회로(128)는 타겟 어드레스로부터 인출 명령을 시작하기 위해 자신의 프로그램 카운터를 조정하여, 분기 타겟 어드레스에 따라 파이프라인(112)을 재지향한다. 만일 BP 회로(126)가 타겟 어드레스가 선택될 것이라고 예측하면, 프로그램 카운터는 다음 연속한 어드레스로부터 인출 명령을 시작하기 위해 증가된다. 분기 예측 시스템(143)의 동작은 도4 및 5의 논의에 따라 더욱 상세하게 설명될 것이다.
개시된 설명은 BTAC(141) 및 I-캐시(122)를 통합 컴포넌트로 결합하는 실시예이다. 그러나 BTAC와 I-캐시를 개별 컴포넌트로 분리하는 몇 가지 이유가 있다. 개시된 외부 BTAC는 I-캐시로의 채움(fill) 동안 단지 조회 또는 판독된다. I-캐시와 병렬로 위치된 통상의 BTAC는 I-캐시가 액세스될 때마다 액세스된다. 앞서 설명된 바와 같이, BTAC를 참조하는 것을 제한함으로써, 본 발명은 BTAC에서 활성도를 감소시킴으로써 전력을 절약한다. 더욱이, BTAC의 이러한 간헐적인 액세스는 BTAC(141)가 단일 포트 장치가 되게 하여, 설계 복잡도를 감소시킨다.
도2A는 어드레스 0x000B에서 간접 분기 명령(212)을 포함하는 코드 세그먼트의 예의 리스트(210)를 도시한다. 도시된 바와 같이, 간접 분기 명령(212)의 타겟은 레지스터1(R1)의 콘텐츠에 의해 한정된다. R1의 콘텐츠들이 간접 분기 명령(212)이 실행될 때마다 변화할 수도 있기 때문에, 분기 예측 시스템(143)은 R1의 콘텐츠에 의해 한정된 바와 같은 어드레스로 시작하는 프로세스 파이프라인(112)을 재지향시킬 지를 결정하기 위해 사용된다.
도2B는 I-캐시(230)의 예로든 콘텐츠를 설명한다. I-캐시(230)는 I-캐 시(122)와 상당히 유사할 수도 있다. I-캐시(230)는 명령 열(232), 유효 비트 열(234) 및 분기 타겟 어드레스 열(236)을 포함한다. 열(232)의 엔트리는 명령을 나타낸다. 규칙에 따라, 열(234)의 "0" 값은, 만일 존재하면, 열(236)의 분기 타겟이 무효임을 나타내고, 반면에 열(234)의 "1" 값은 동일한 행에서 단지 열(236)의 분기 타겟이 유효함을 나타낸다. 설명된 바와 같이, 프로그램 카운터가 어드레스 0x000B를 가리키는 시간의 포인트에서 I-캐시(230)는 어드레스 0x000B에서 간접 분기 명령(212)에 대한 엔트리를 포함하지 않는다.
도2C는 BTAC(250)의 콘텐츠의 예를 도시한다. BTAC(250)는 BTAC(141)와 상당히 유사하다. BTAC(250)는 분기 명령 어드레스 열(252) 및 타겟 어드레스 열(254)을 포함한다. 열(252)은 직접 분기 명령 어드레스들, 간접 분기 명령 어드레스들, 또는 소정의 이들 결합을 포함할 수도 있다. 프로그램 카운터가 0x000B를 가리키는 시간의 포인트에서, BTAC(250)는 간접 분기 명령 어드레스(256) 및 대응하는 타겟 어드레스를 포함한다. 결론적으로, 제어 로직(114)은 분기 명령(256) 및 BTAC(250)에서 대응하는 타겟 어드레스가 I-캐시 미스시, I-캐시(230)를 저장하게 할 것이다. 다른 정보가 I-캐시(230) 및 BTAC(250)에 저장될 수도 있으며, I-캐시(230) 및 BTAC(250)의 다양한 구조들이 본 발명에 의해 고려될 수 있음이 이해될 것이다.
도3은 간접 분기 명령 어드레스(256) 및 대응하는 타겟 어드레스 0x2000와 관련된 간접 분기 명령이 어드레스 Ox000B에서 I-캐시(230)에 저장된 후 I-캐시(230)를 도시한다. 결론적으로, 프로세서의 프로그램 카운터가 어드레스 0x000B 를 가리킨 다음, I-캐시 룩업은 히트할 것이며, 타겟 어드레스 0x2000은 어드레스 0x2000에서의 명령들로 파이프라인(112)의 재지향을 시작하기 위해 프로세서의 프로그램 카운터로 할당될 것이다. 통상의 BTAC들과 비교하면, 본 발명의 I-캐시 룩업은 BTAC에서 룩업을 실행하지 않고 사전인출된 명령에 대해 실행되어, BTAC 룩업들의 수를 감소시킴으로써 전력 소비를 절약한다. 설명된 바와 같이, BTAC(250)에서의 룩업은 특정한 간접 분기 명령이 I-캐시(230)에서 발견되지 않는 상황에 한정된다.
도4는 I-캐시로 간접 분기 명령을 저장하고, 도1의 I-캐시로부터 분기 타겟 어드레스를 검색하는 방법을 설명한 흐름도이다. 블록들(410, 420, 450, 455, 460, 465, 470 및 480)은 간접 분기 명령 및 분기 타겟 어드레스를 도1의 I-캐시(122)와 같은 I-캐시로 저장하기 위한 프로세스를 한정한다. 블록들(410, 420, 425, 435, 438, 440, 및 445)은 I-캐시로부터 분기 타겟 어드레스를 검색하는 프로세스를 한정한다. 블록(410)에서, 명령의 어드레스에 기초한 명령에 대해 I-캐시가 요구된다. 예를 들어, 프로세서의 프로그램 카운터에 저장된 명령 어드레스는 I-캐시를 조회하기 위해 사용될 수도 있다. 블록(420)에서, 방법(400)은 I-캐시에 히트가 존재하는 지의 여부를 결정한다. 만일 존재하지 않으면(캐시 미스), 방법(400)은 블록(450)으로 진행하여, 상위 레벨 메모리로부터 대응하는 명령 데이터를 검색하다. 블록(450)에서, 명령 데이터는 계층2(L2) 캐시 또는 오프 칩 메모리와 같은 상위 레벨 메모리로부터 요청된다. 블록(455)에서, 상위 레벨 메모리로부터 검색된 명령 데이터가 수신된다. 블록(460)에서, 명령 어드레스는 BTAC에서 룩 업된다. 블록(465)에서, 방법(400)은 명령 어드레스가 BTAC에서 히트하는지, 다시 말해, BTAC에 저장된 명령 어드레스에 부합되는 지를 결정한다. 만일 명령 어드레스가 BTAC에서 히트하면, 방법(400)은 블록(470)으로 진행하고, 여기서, 만일 존재한다면, BTAC에 저장된 예측 분기 타겟은 명령 데이터에 부가된다. BTAC에서 히트시, 간접 분기 명령의 앞선 인스턴스의 분기 타겟 어드레스가 사전에 분석되는 한, 예측 분기 타겟은 BTAC에 저장될 가능성이 높다. 방법(400)은 블록(480)으로 진행하며, 여기서 명령 데이터는 I-캐시에 저장된다.
블록(465)으로 돌아가서, 만일 명령 어드레스가 BTAC에서 미스하면, 방법(400)은 블록(480)으로 진행한다. 블록(465)으로부터 블록(480)으로의 전이는 요구된 명령 어드레스가 I-캐시 또는 BTAC 어디에도 없는 상황을 나타낸다. 이러한 상황에서, 분기 타겟 어드레스는, 도6과 관련하여 더욱 상세하게 논의되듯이 프로세서 파이프라인에서 이후에 발행하는 검색된 명령 데이터에 대한 실제 분기 타겟의 레졸루션 이후 BTAC에 저장될 것이다. 실제 분기 타겟이 분석될 때, 예를 들어, 업데이트 논리 회로(160)는 BTAC 및 I-캐시 모두가 분석된 분기 타겟을 저장하게 할 것이다.
블록들(465 및 475)은 블록(480)으로 진행하며, 여기서 명령 데이터는 I-캐시에 저장된다. 그렇지 않으면, 프로그램 카운터는 연속적으로 증가된다. 이어 방법(400)은 블록(410)으로 진행하여 프로그램 카운터에 의해 특정된 바와 같이 다음 어드레스를 조회한다.
블록(420)으로 돌아가서, 만일 I-캐시에 대응하는 엔트리가 존재하는 것을 의미하는, I-캐시에 히트가 존재한다면, 방법(400)은 블록(425)으로 진행한다. 블록(425)에서, 방법(400)은 I-캐시의 대응하는 엔트리가 분기 타겟 어드레스를 갖는 지를 결정한다. 일 실시예에서, 블록(425)은 도2의 유효 비트 열(234)에 저장된 비트처럼 대응하는 유효 비트를 질의함으로써 달성된다. 만일 I-캐시 히트와 관련된 어떠한 유효한 분기 타겟 어드레스가 존재하지 않는다면, 명령 어드레스는 간접 분기 명령이 아니다. 따라서, 방법(400)은 블록(445)으로 진행하고, 여기서, 비분기 명령은 I-캐시로부터 검색되고 통상의 방식으로 프로세싱된다. 방법(400)은 프로그램 카운터에 의해 특정된 대로 I-캐시로부터 다음 어드레스를 조회하기 위해 블록(410)으로 진행한다.
만일 엔트리에 대응하는 유효 분기 타겟 어드레스가 존재하면, 방법(400)은 블록(435)으로 진행한다. 블록(435)에서, 방법(400)은 대응하는 엔트리에 저장된 분기 타겟 어드레스가 선택되는 지를 예측한다. 일 실시예에서, 분기 예측 회로(126)는 이러한 예측을 실행한다. 당업자는 분기 예측 기술들이 통계, 발견, 미리 결정된 파라미터들 등을 이용할 수도 있음을 이해해야 한다. 블록(438)에서, 방법(400)은 예측이 선택될 지를 테스트한다. 만일 그렇다면, 방법(400)은 블록(440)으로 진행하며, 여기서 분기 타겟 어드레스는 명령들이 분기 타겟 어드레스로부터 인출될 수 있도록 명령 인출 유닛(128)과 같은 프로그램 카운터로 전송된다. 방법(400)은 블록(410)으로 진행하여, 프로그램 카운터에 의해 특정된 대로 흐름도에서 이러한 경로의 분기 타겟 어드레스인, 다음 어드레스를 조회한다.
블록(438)으로 돌아가서, 만일 경로가 선택되지 않는 것으로 예측되면, 방 법(400)은 블록(445)으로 진행하여 통상의 방식으로 캐시에 저장된 명령을 프로세싱한다. 블록(445) 이후, 방법(400)은 흐름도를 통해 이러한 경로에서, 예를 들어, 도2A에서 어드레스 0x000C와 같은 간접 분기 명령 이후의 연속한 어드레스인 프로그램 카운터에서 다음 어드레스를 조회하기 위해 블록(410)으로 진행한다.
도5는 실제 분기 레졸루션에 대해 I-캐시를 관리하는 방법(500)을 설명하는 흐름도이다. 방법(500)은 간접 분기 명령의 실제 분기 타겟이 제1 시간에 대해 계산되고, 분기 예측 회로(126)와 같은 예측 메카니즘이 간접 분기 명령의 타겟을 예측하지 못한 경우에 대해 실행된다. 블록(510)에서, 간접 분기 명령의 실제 타겟이 분석된다. 이러한 분기 레졸루션은 간접 분기 명령이 프로세서 파이프라인에서 이후에 프로세싱되면서 실행될 수도 있다.
블록(520)에서, 방법(500)은 실제 타겟이 예측된 타겟에 부합하는지, 또는 실제 타겟이 처음으로 계산된 경우, 어떠한 예측된 타겟도 없는지를 결정한다. 만일 실제 분기 타겟이 예측된 분기 타겟에 부합하면, BTAC 또는 I-캐시 중 어느 것도 업데이트될 필요가 없다. 방법(500)은 블록(525)으로 진행하며, 여기서 블록(510)으로 다시 진행하기 전에 다음 분기 명령을 대기한다.
만일 실제 분기 타겟이 예측된 타겟과 부합하지 않으면, 방법(500)은 착오 예측을 검출하고 블록(530)으로 진행한다. 적어도 두 개의 상황이 착오 예측이 될 수도 있다. 첫 번째 상황은 분기 타겟 없이 BATC 및 I-캐시에서 앞서 저장된 후 간접 분기 명령이 실행되면 발생할 수도 있다. 첫 번째 상황에서, 간접 분기 명령 이후의 다음 연속한 명령이 프로세서 파이프라인에 로딩될 수도 있다. 두 번째 상 황은 예측된 타겟 어드레스가 실제 분석된 타겟 어드레스와 상이한 경우 발생할 수도 있다. 두 번째 상황에서, 예측된 타겟 어드레스에서 표시된 것처럼 다음 명령은 프로세서 파이프라인에서 로딩될 수도 있다.
블록(530)에서, 어떤 상황이든, 프로세서 파이프라인은 파이프라인을 이 경우 간접 분기 명령의 어드레스인 분기 포인트로 재저장하기 위해 파이프라인으로부터 플러싱된 자신의 명령들을 갖는다. 결론적으로, 이러한 명령들이 간접 분기 명령 이후 다음 연속한 어드레스 또는 예측된 타겟 어드레스로부터 시작하여 로딩되는 지에 무관하게 간접 분기 명령 이후의 프로세서 파이프라인에 로딩된 명령들은 프로세서 파이프라인으로부터 플러싱될 것이다. 블록(540)에서, BTAC는 열(254)과 같이 자신의 분기 타겟 어드레스 필드에 실제 분기 타겟 어드레스를 저장하기 위해 업데이트된다.
블록(550)에서, I-캐시가 관리된다. 예를 들어, 제어 로직 회로(114)는 블록들(550A-550C)을 구현하기 위해 로직을 포함할 수도 있다. 블록들(550A-550C)은 블록(550)의 택일적 실시예들이다. 블록(550A)에서, 예측된 타겟 어드레스에 대응하는 캐시 라인은 무효화된다. 블록(550B)에서, 예측된 타겟 어드레스에 대응하는 캐시 라인의 분기 타겟은 무효화된다. 블록(550C)에서, 예측된 타겟 어드레스에 대응하는 캐시 라인의 분기 타겟 어드레스는 실제 타겟 어드레스를 반영하기 위해 업데이트된다. 블록(550C)은 우선 간접 분기 명령이 분기 타겟 없는 I-캐시 및 BTAC에 앞서 저장된 후 처음 실행될 때 바람직하다.
도6은 공통 BTAC(611)를 공유하는 두 개의 프로세서들(601 및 602)의 기능적 블록도이다. 공유된 BTAC(611) 및 프로세서들(601 및 602)은 바람직하게 단일 집적 회로 칩에서 내장된다. 프로세서(601)는 자신 고유의 다중 스테이지 프로세서 파이프라인(620), I-캐시(610) 및 분기 예측 회로(615)를 포함한다. 스테이지(625)에서, 실제 분기 레졸루션은 각각 도4 및 5에 앞서 개시된 바와 같이 간접 분기 명령 및 분기 타겟 어드레스로 BTAC(611) 및 I-캐시(610)를 업데이트하기 위해 발생한다. 프로세서(602)는 자신 고유의 다중 스테이지 프로세서 파이프라인(640), I-캐시(630) 및 분기 예측 회로(635)를 포함한다. 스테이지(645)에서, 실제 분기 레졸루션은 각각 도4 및 5에서 앞서 개시된 대로 간접 분기 명령 및 분기 타겟 어드레스로 BTAC(611) 및 I-캐시(630)를 업데이트하기 위해 발생한다. 도시된 바와 같이, 실제 분기 레졸루션은 프로세서들의 파이프라인에서 상이한 스테이지들에서 실행될 수도 있다. 비록 도6은 두 개의 프로세서들 사이에서 공유된 공통 BTAC를 도시하지만, 본 발명은 3개 또는 그 이상의 프로세서들 사이에서 공통 BTAC의 공유를 고려하고 있다. 동작 동안, 어드레스가 유효 분기 타겟 어드레스를 포함하는 I-캐시(630) 또는 I-캐시(610) 중 하나로부터 인출될 때, 각각의 파이프라인(620 및 640)은 분기 타겟 어드레스로부터 시작하는 명령들의 인출을 시작한다.
본 명세서에서 개시된 실시예와 관련하여 다양하게 설명되는 논리 블럭들, 모듈들, 및 회로들은 범용 프로세서, 디지털 신호 처리기(DSP), 응용 집적 회로(ASIC), 현장 프로그램가능한 게이트 어레이(FPGA), 또는 다른 프로그램가능한 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 요소들, 또는 본 명세서에 개시된 기능을 수행하도록 설계된 그들의 임의의 조합을 사용하여 실행되거나 수행될 수 있다. 범용 프로세서는 마이크로프로세서가 될 수 있지만, 선택적으로 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 기계가 될 수 있다. 프로세서는 또한 예를 들어, DSP 및 마이크로프로세서의 조합, 복수의 마이크로프로세서, DSP 코어와 결합된 하나 또는 그 이상의 마이크로프로세서, 또는 임의의 다른 구성과 같은 컴퓨팅 장치들의 조합으로서 실행될 수 있다.
본 명세서에 개시된 실시예와 관련하여 설명되는 방법은 하드웨어에서, 프로세서에 의해 실행되는 소프트웨어 모듈에서, 또는 이 둘의 조합에서 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드디스크, 제거가능한 디스크, CD-ROM 또는 임의의 다른 저장 매체 형태로 당업자에게 공지된다. 저장 매체는 프로세서가 저장 매체로부터 정보를 판독하고 저장 매체로 정보를 기록할 수 있도록 프로세서에 결합될 수도 있다. 택일적으로, 저장 매체는 프로세서에 통합될 수도 있다.
본 발명은 실시예로 설명되었지만, 다양한 구현이 본 발명의 전술한 사항 및 청구항과 조화되어 실행될 수도 있음을 이해해야 한다.

Claims (20)

  1. 분기 타겟 어드레스 캐시(BTAC)에 대한 룩업들을 감소시키는 방법으로서,
    명령 캐시(I-캐시)에서 제1 명령 어드레스의 룩업에서 미스에 응답하여 상기 BTAC로부터 분기 타겟 어드레스를 검색하는 단계; 및
    상기 BTAC로부터의 상기 분기 타겟 어드레스를 상기 I-캐시에 저장하는 단계를 포함하며, 상기 분기 타겟 어드레스는 상기 I-캐시의 상기 제1 명령 어드레스와 관련된,
    룩업들을 감소시키는 방법.
  2. 제1항에 있어서,
    상기 I-캐시에서 상기 제1 명령 어드레스를 룩업하는 단계; 및
    상기 I-캐시의 상기 제1 명령 어드레스와 관련된 상기 분기 타겟 어드레스를 검색하는 단계를 더 포함하는, 룩업들을 감소시키는 방법.
  3. 제2항에 있어서,
    상기 제1 명령 어드레스와 관련된 상기 제1 명령을 인출하는 단계; 및
    인출될 제2 명령이 상기 분기 타겟 어드레스와 관련된 것을 예측하는 단계를 더 포함하는, 룩업들을 감소시키는 방법.
  4. 제3항에 있어서,
    상기 분기 타겟 어드레스에 기초하여 상기 제2 명령을 인출하는 단계를 더 포함하는, 룩업들을 감소시키는 방법.
  5. 제4항에 있어서,
    상기 제1 명령에 대한 착오 예측을 검출하는 단계를 더 포함하는, 룩업들을 감소시키는 방법.
  6. 제5항에 있어서,
    I-캐시 라인을 무효화, 상기 I-캐시 라인에서 상기 분기 타겟 어드레스의 무효화, 및 상기 I-캐시에서 상기 분기 타겟 어드레스의 업데이트 중 적어도 하나에 의해 상기 I-캐시를 관리하는 단계를 더 포함하는, 룩업들을 감소시키는 방법.
  7. 제5항에 있어서, 상기 제1 명령에 대한 착오 예측을 검출하는 단계는,
    상기 제1 명령에 대해 실제 분기 타겟 어드레스를 계산하는 단계; 및
    상기 실제 분기 타겟 어드레스를 상기 I-캐시의 상기 분기 타겟 어드레스와 비교하는 단계를 포함하며, 상기 실제 분기 타겟 어드레스는 상기 분기 타겟 어드레스에 부합하지 않는, 룩업들을 감소시키는 방법.
  8. 분기 명령들을 명령 캐시(I-캐시)에 저장하는 방법으로서,
    상기 명령 캐시(I-캐시)에서 분기 명령 어드레스를 룩업하는 단계;
    I-캐시 미스에 응답하여 분기 타겟 어드레스 캐시(BTAC)로부터 분기 타겟 어드레스를 검색하는 단계; 및
    상기 분기 타겟 어드레스를 상기 I-캐시의 엔트리로 저장하는 단계를 포함하는,
    분기 명령들을 명령 캐시(I-캐시)에 저장하는 방법.
  9. 제8항에 있어서,
    I-캐시 히트에 응답하여 상기 I-캐시로부터 상기 분기 타겟 어드레스를 검색하는 단계를 더 포함하는, 분기 명령들을 명령 캐시(I-캐시)에 저장하는 방법.
  10. 제9항에 있어서,
    인출될 다음 명령이 상기 분기 타겟 어드레스와 관련된 것을 예측하는 단계를 더 포함하는, 분기 명령들을 명령 캐시(I-캐시)에 저장하는 방법.
  11. 제8항에 있어서,
    착오 예측시 상기 I-캐시에서 상기 분기 타겟 어드레스를 업데이트하는 단계를 더 포함하는, 분기 명령들을 명령 캐시(I-캐시)에 저장하는 방법.
  12. 제11항에 있어서,
    착오 예측시 상기 엔트리에서 상기 분기 타겟 어드레스를 업데이트하는 단계는,
    상기 분기 명령의 실제 분기 어드레스를 결정하는 단계; 및
    상기 실제 분기 어드레스를 상기 분기 타겟 어드레스와 비교하는 단계를 더 포함하며, 상기 실제 분기 레졸루션은 상기 예측된 타겟 어드레스와 부합하지 않는, 분기 명령들을 명령 캐시(I-캐시)에 저장하는 방법.
  13. 제9항에 있어서,
    인출될 상기 분기 타겟 어드레스를 전송할지를 예측하는 단계를 더 포함하는, 분기 명령들을 명령 캐시(I-캐시)에 저장하는 방법.
  14. 제13항에 있어서,
    인출될 상기 분기 타겟 어드레스를 전송하는 단계를 더 포함하는, 분기 명령들을 명령 캐시(I-캐시)에 저장하는 방법.
  15. 분기 타겟 어드레스 캐시(BTAC)에 대한 룩업들을 감소시키는 시스템으로서,
    분기 타겟 액세스 캐시(BTAC); 및
    제1 분기 명령 어드레스를 룩업할 때 캐시 미스에 응답하여 상기 BTAC로부터 분기 타겟 어드레스를 검색하도록 구성된 명령 캐시(I-캐시)를 포함하며, 상기 I-캐시는 상기 분기 타겟 어드레스를 저장하도록 추가로 구성된,
    룩업들을 감소시키는 시스템.
  16. 제15항에 있어서,
    상기 I-캐시는 룩업된 상기 I-캐시에 상기 제1 분기 명령 어드레스를 갖고, 상기 I-캐시로부터 검색된 상기 제1 분기 명령 어드레스와 관련된 상기 분기 타겟 어드레스를 갖도록 추가로 구성되는, 룩업들을 감소시키는 시스템.
  17. 제15항에 있어서,
    상기 I-캐시는 인출된 상기 제1 명령 어드레스와 관련된 상기 제1 명령을 갖도록 구성되며, 상기 시스템은,
    인출될 제2 명령이 상기 분기 타겟 어드레스와 관련된 것을 예측하도록 구성된 분기 예측 회로를 더 포함하는, 룩업들을 감소시키는 시스템.
  18. 제17항에 있어서,
    상기 I-캐시는 상기 I-캐시로부터 인출된 상기 분기 타겟 어드레스에 기초하여 상기 제2 명령을 갖도록 구성된, 룩업들을 감소시키는 시스템.
  19. 제18항에 있어서,
    인출될 상기 제2 명령을 착오 예측하도록 구성된 업데이트 로직 회로를 더 포함하는, 룩업들을 감소시키는 시스템.
  20. 제19항에 있어서,
    I-캐시 라인의 무효화, 상기 I-캐시 라인의 상기 분기 타겟 어드레스의 무효화, 및 상기 I-캐시의 상기 분기 타겟 어드레스의 업데이트 중 적어도 하나에 의해 상기 I-캐시를 관리하도록 구성된 제어 로직 회로를 더 포함하는, 룩업들을 감소시키는 시스템.
KR1020097005401A 2006-08-16 2007-08-15 분기 타겟 어드레스 캐시에서 룩업들을 감소시키는 방법 및장치 KR101049319B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/464,996 US7640422B2 (en) 2006-08-16 2006-08-16 System for reducing number of lookups in a branch target address cache by storing retrieved BTAC addresses into instruction cache
US11/464,996 2006-08-16
PCT/US2007/075996 WO2008022190A1 (en) 2006-08-16 2007-08-15 Methods and apparatus for reducing lookups in a branch target address cache

Publications (2)

Publication Number Publication Date
KR20090042318A true KR20090042318A (ko) 2009-04-29
KR101049319B1 KR101049319B1 (ko) 2011-07-13

Family

ID=38799335

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097005401A KR101049319B1 (ko) 2006-08-16 2007-08-15 분기 타겟 어드레스 캐시에서 룩업들을 감소시키는 방법 및장치

Country Status (13)

Country Link
US (1) US7640422B2 (ko)
EP (1) EP2057536B1 (ko)
JP (1) JP5415268B2 (ko)
KR (1) KR101049319B1 (ko)
CN (1) CN101501635B (ko)
BR (1) BRPI0715899A2 (ko)
CA (1) CA2659310C (ko)
ES (1) ES2676303T3 (ko)
HU (1) HUE039149T2 (ko)
MX (1) MX2009001747A (ko)
RU (1) RU2419835C2 (ko)
TW (1) TWI397816B (ko)
WO (1) WO2008022190A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7844807B2 (en) * 2008-02-01 2010-11-30 International Business Machines Corporation Branch target address cache storing direct predictions
US7865705B2 (en) * 2008-02-01 2011-01-04 International Business Machines Corporation Branch target address cache including address type tag bit
CN101763249A (zh) * 2008-12-25 2010-06-30 世意法(北京)半导体研发有限责任公司 对非控制流指令减少分支检验
WO2013101121A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Managed instruction cache prefetching
CN104252334B (zh) * 2013-06-29 2017-07-07 华为技术有限公司 分支目标地址获取方法和装置
CN106776367B (zh) * 2016-12-13 2020-05-12 上海高性能集成电路设计中心 基于位置对应关系的指令Cache一致性的实现方法
CN110825442B (zh) * 2019-04-30 2021-08-06 成都海光微电子技术有限公司 一种指令预取方法及处理器

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2534662B2 (ja) * 1986-03-25 1996-09-18 日本電気株式会社 命令キヤツシユ制御方法
US4722050A (en) * 1986-03-27 1988-01-26 Hewlett-Packard Company Method and apparatus for facilitating instruction processing of a digital computer
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5093778A (en) * 1990-02-26 1992-03-03 Nexgen Microsystems Integrated single structure branch prediction cache
US5774710A (en) * 1996-09-19 1998-06-30 Advanced Micro Devices, Inc. Cache line branch prediction scheme that shares among sets of a set associative cache
US6427192B1 (en) * 1998-09-21 2002-07-30 Advanced Micro Devices, Inc. Method and apparatus for caching victimized branch predictions
US6324643B1 (en) * 1999-10-01 2001-11-27 Hitachi, Ltd. Branch prediction and target instruction control for processor
US6651162B1 (en) * 1999-11-04 2003-11-18 International Business Machines Corporation Recursively accessing a branch target address cache using a target address previously accessed from the branch target address cache
TW564369B (en) * 2001-07-16 2003-12-01 Ip First Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7096348B2 (en) * 2003-12-15 2006-08-22 Freescale Semiconductor, Inc. Method and apparatus for allocating entries in a branch target buffer
KR100630702B1 (ko) * 2004-10-05 2006-10-02 삼성전자주식회사 명령어 캐쉬와 명령어 변환 참조 버퍼의 제어기, 및 그제어방법
US7418676B2 (en) * 2005-01-19 2008-08-26 Seiko Epson Corporation Asynchronous circuit design tool and computer program product

Also Published As

Publication number Publication date
RU2009109226A (ru) 2010-09-27
KR101049319B1 (ko) 2011-07-13
JP5415268B2 (ja) 2014-02-12
EP2057536A1 (en) 2009-05-13
RU2419835C2 (ru) 2011-05-27
EP2057536B1 (en) 2018-04-11
ES2676303T3 (es) 2018-07-18
BRPI0715899A2 (pt) 2013-07-30
CN101501635B (zh) 2013-10-16
JP2010501101A (ja) 2010-01-14
TWI397816B (zh) 2013-06-01
WO2008022190A1 (en) 2008-02-21
CA2659310C (en) 2011-11-15
MX2009001747A (es) 2009-02-25
US7640422B2 (en) 2009-12-29
HUE039149T2 (hu) 2018-12-28
CA2659310A1 (en) 2008-02-21
CN101501635A (zh) 2009-08-05
US20080046702A1 (en) 2008-02-21
TW200815981A (en) 2008-04-01

Similar Documents

Publication Publication Date Title
KR101074621B1 (ko) 프로액티브 브랜치 타겟 어드레스 캐시 관리를 위한 방법들 및 장치
KR101081662B1 (ko) 비순차적 명령 어드레스들을 프리패치하기 위한 방법 및 장치
KR100974384B1 (ko) 분기 명령들을 예측하기 위한 방법 및 장치
US7783869B2 (en) Accessing branch predictions ahead of instruction fetching
US11687343B2 (en) Data processing apparatus and method for providing candidate prediction entries
JP5734945B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
US7797520B2 (en) Early branch instruction prediction
KR101049319B1 (ko) 분기 타겟 어드레스 캐시에서 룩업들을 감소시키는 방법 및장치
KR20090094335A (ko) 서브루틴 호를 인지하기 위한 방법들 및 장치
US20040225866A1 (en) Branch prediction in a data processing system
US7085916B1 (en) Efficient instruction prefetch mechanism employing selective validity of cached instructions for digital signal processor and method of operation thereof
US7343481B2 (en) Branch prediction in a data processing system utilizing a cache of previous static predictions
KR100265332B1 (ko) 분기예측방법

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170629

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190624

Year of fee payment: 9