KR20150110337A - 미스 후 미스의 검색을 가속화하기 위해 레벨2 캐시에서 레벨2 분기 목적지 버퍼를 분리하는 장치 및 그 방법 - Google Patents

미스 후 미스의 검색을 가속화하기 위해 레벨2 캐시에서 레벨2 분기 목적지 버퍼를 분리하는 장치 및 그 방법 Download PDF

Info

Publication number
KR20150110337A
KR20150110337A KR1020150034473A KR20150034473A KR20150110337A KR 20150110337 A KR20150110337 A KR 20150110337A KR 1020150034473 A KR1020150034473 A KR 1020150034473A KR 20150034473 A KR20150034473 A KR 20150034473A KR 20150110337 A KR20150110337 A KR 20150110337A
Authority
KR
South Korea
Prior art keywords
branch
level
cache
sequential
record
Prior art date
Application number
KR1020150034473A
Other languages
English (en)
Inventor
제랄드 디. 주라스키
비카스 케이. 신하
데이빗 엠. 밀케
폴 이. 키친
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20150110337A publication Critical patent/KR20150110337A/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
    • 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
    • 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
    • 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
    • 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
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • 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/6022Using a prefetch buffer or dedicated prefetch cache

Landscapes

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

Abstract

본 발명은 메모리를 관리하는 방법에 관한 것으로 본 발명에 따른 방법은, 캐시 메모리 시스템의 두 번째 티어로부터 제 1 메모리 어드레스에 저장된 명령어를 요청하는 단계와, 분기 목적지 버퍼 시스템의 두 번째 티어로부터 상기 제 1 메모리 어드레스와 관련된 분기 레코드를 요청하는 단계와, 상기 명령어를 제공받기 전에 상기 분기 레코드를 제공받는 단계 및 상기 명령어를 제공받기 전에, 상기 분기 레코드를 제공받으면, 비순차적 메모리 어드레스에 저장된 비순차적 명령어를 프리페치하는 단계를 포함한다.

Description

미스 후 미스의 검색을 가속화하기 위해 레벨2 캐시에서 레벨2 분기 목적지 버퍼를 분리하는 장치 및 그 방법{APPARATUS FOR DECOUPLING L2 BTB FROM L2 CACHE TO ACCELERATE SEARCH FOR MISS AFTER MISS AND METHOD THEREOF}
본 발명은 메모리 관리에 관한 것으로, 더 자세하게는 명령어 캐시 미스 후에 데이터를 검색하는 것에 관한 것이다.
일반적으로, 컴퓨터들 그리고 그 컴퓨터들에 의해 실행되는 프로그램들은 무제한의 고속 메모리를 가지기를 원한다. 하지만, 메모리(특히 고속 메모리)는 가격과 다이 면적 모두의 면에서 일반적으로 비싸다. 무제한의 고속 메모리에 대한 욕구의 전통적인 해결 방법은 메모리 계층(hierarchy) 또는 메모리들의 티어링 또는 레벨링 시스템이다. 일반적으로, 티어링된 메모리 시스템은 각 레벨이 더 느리지만, 이전 티어보다는 더 큰, 복수의 레벨들의 메모리들을 포함한다.
전형적인 컴퓨터 메모리 계층은 3개의 레벨들을 포함한다. 가장 빠르고 가장 작은 메모리(종종 "레벨1(L1) 캐시로 불리는)는 프로세서에 가장 가깝게 위치하며 그리고 스태틱 랜덤 엑세스 메모리(SRAM)를 포함한다. 그 다음 티어 또는 레벨은 종종 레벨2(L2) 캐시로 불리며, 레벨1 캐시보다 더 크지만 더 느리다. 세 번째 레벨은 메인 메모리이며 일반적으로 다이내믹 RAM(DRAM)을 포함하며, 종종 메모리 모듈들에 삽입된다. 그러나, 다른 시스템들은 더 많은 또는 더 적은 메모리 티어들을 가질 수 있다. 또한, 일부 시스템들에서, 프로세서 레지스터들 및 영구 또는 반-영구 저장 장치들(예컨대, 하드 드라이브들, 솔리드-스테이트 드라이브들, 등)이 메모리 시스템의 일부로 고려될 수 있다.
메모리 시스템은 일반적으로 가장 느리지만 가장 큰 티어(예컨대, 메인 메모리, 등)가 이용가능한 모든 데이터를 포함하는, 포괄성의 원리(principle of inclusiveness)를 사용한다. 제 2 티어(예컨대, L2 캐시, 등)는 그 데이터의 하위-세트를 포함하고, 그리고 그 다음 티어(예컨대, L1 캐시, 등)가 제 2 티어의 데이터 서브-세트의 두 번째 하위-세트, 등을 포함한다. 그와 같이, 가장 빠른 티어에 포함된 모든 데이터는 또한 가장 느린 티어에 의해 포함된다.
일반적으로, 캐시들은 지역성의 원리(principle of locality, 예컨대, 시간적 지역성, 공간적 지역성, 등)에 기초하여 어떤 데이터의 하위-세트를 포함할지를 결정한다. 그것은 프로그램이 최근에 액세스되었거나 또는 최근에 액세스된 데이터의 바로 옆의 데이터에 액세스할 것이 추정될 수 있다. 예를 들어, 영화 재생기 프로그램이 데이터에 액세스한다면, 영화 재생기는 그 영화의 그 다음 몇 초에 액세스할 가능성이 높을 것이다.
그러나, 가끔 프로그램이 가장 빠른 캐시(예컨대, 레벨1 캐시, 등)에서 이용할 수 없는 데이터의 조각을 요청할 수 있다. 그것은 일반적으로 "캐시 미스"로 알려져 있으며 가장 빠른 캐시가 그 다음 메모리 티어(예컨대, L2 캐시)로부터 데이터를 요청하도록 만든다. 이것은 캐시 미스가 발생하였는지를 결정하고, 레벨1 캐시에 의해 데이터를 검색하고, 그리고 검색된 데이터를 프로세서에 전달하는 과정에 따른 지연이 발생하기 때문에 프로세서 성능에 대한 손실이 발생한다. 때로는, 메모리의 다음 티어(예컨대, 레벨2 캐시, 등)가 요청된 데이터를 포함하지 않을 수 있으며 이 경우 다음 티어(예컨대, 레벨2 캐시, 등)는 그 다음 티어(예컨대, 메인 메모리, 등)로부터 그 데이터를 요청해야만 한다. 이것은 일반적으로 추가적인 지연들을 발생시킨다.
본 발명의 목적은 캐시 미스 발생 후 미스된 데이터의 검색을 빠르게 하기 위한 방법, 장치 및 시스템을 제공하는 것을 목적으로 한다.
상기 목적을 달성하기 위한 본 발명에 따른 방법은, 캐시 메모리 시스템의 두 번째 티어로부터 제 1 메모리 어드레스에 저장된 명령어를 요청하는 단계; 분기 목적지 버퍼 시스템의 두 번째 티어로부터 상기 제 1 메모리 어드레스와 관련된 분기 레코드를 요청하는 단계; 상기 명령어를 제공받기 전에 상기 분기 레코드를 제공받는 단계; 및 상기 명령어를 제공받기 전에, 상기 분기 레코드를 제공받으면, 비순차적 메모리 어드레스에 저장된 비순차적 명령어를 프리페치하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 방법의 상기 비순차적 명령어를 프리페치하는 단계는, 상기 분기 레코드로부터 상기 비순차적 메모리 어드레스를 검색하는 단계; 및 초기 분기 예측 회로를 통해 비순차적 분기가 발생하였는지 여부를 예측하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 방법은, 상기 명령어를 제공받기 전에, 순차적 메모리 어드레스에 저장된 순차적 명령어를 프리페치하는 단계를 더 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 방법의 상기 순차적 명령어를 프리페치하는 단계는, 상기 순차적 명령어가 실행 유닛에 의해 접근될 가능성이 있는지 여부를 판별하기 위해 순차적 프리페치 정보를 확인하는 단계; 및 상기 순차적 명령어가 상기 실행 유닛에 의해 접근될 가능성이 없는 경우, 상기 순차적 명령어의 요청을 보류하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 방법은, 상기 순차적 명령어가 실행 유닛에 의해 접근되었는지 여부를 판별하는 단계; 및 상기 제 1 메모리 어드레스와 관련된 상기 분기 레코드에 순차적 프리페치 정보를 저장하는 단계를 더 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 방법의 상기 순차적 프리페치 정보를 저장하는 단계는, 상기 분기 레코드와 관련된 캐시 라인 태그에 상기 순차적 프리페치 정보를 저장하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 방법의 상기 분기 레코드를 제공받는 단계는, 상기 분기 목적지 버퍼 시스템의 첫 번째 티어에서, 종래 분기 레코드를 상기 분기 레코드로 교체하는 단계; 및 원하지 않는 분기 레코드에 바이어스 가중치 필드를 저장하는 단계를 포함하되, 상기 바이어스 가중치 필드는 분기 예측 회로가 정확한 예측을 수행할 수 있도록 상기 분기 예측 회로를 학습시키기 위한 분기 예측 값을 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 방법의 상기 분기 레코드를 제공받는 단계는, 상기 분기 레코드가 바이어스 가중치 필드를 포함하는지 여부를 판별하는 단계; 및 상기 분기 레코드가 상기 바이어스 가중치 필드를 포함하는 경우, 상기 바이어스 가중치 필드의 적어도 한 부분에 기초하여 분기 예측 회로를 학습시키는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 장치는, 캐시 미스가 발생한 경우, 레벨2 캐시로부터 명령어를 요청하도록 구성되는 레벨1 캐시; 버퍼 미스가 발생한 경우, 분리된 레벨2 분기 목적지 버퍼로부터 상기 명령어와 관련된 분기 레코드를 요청하도록 구성되는 레벨1 분기 목적지 버퍼; 상기 명령어가 상기 레벨1 캐시로 제공되기 전에 상기 레벨1 분기 목적지 버퍼로 상기 분기 레코드를 제공하도록 구성되는 상기 분리된 레벨2 분기 목적지 버퍼; 및 상기 명령어가 상기 레벨1 캐시로 제공되기 전에, 상기 분기 레코드가 상기 레벨1 분기 목적지 버퍼로 제공되면, 비순차적 명령어를 프리페치하도록 구성되는 분기 예측 회로를 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 장치의 상기 분리된 레벨2 분기 목적지 버퍼는, 상기 레벨2 캐시의 전체 저장 용량의 절반 이하의 전체 저장 용량을 갖고; 상기 레벨2 캐시의 명령어 캐시 라인 저장 용량과 같은 레코드 크기 저장 용량을 갖도록 구성된다.
상기 목적을 달성하기 위한 본 발명에 따른 장치는, 상기 분리된 레벨2 분기 목적지 버퍼는 상기 레벨2 캐시의 응답 레이턴시의 절반 이하의 응답 레이턴시를 갖도록 구성된다.
상기 목적을 달성하기 위한 본 발명에 따른 장치는, 상기 명령어가 상기 레벨1 캐시로 제공되기 전에 순차적 명령어를 프리페치하도록 구성되는 순차적 프리페치 유닛을 더 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 장치의 상기 순차적 프리페치 유닛은, 상기 순차적 명령어가 실행 유닛에 의해 접근될 가능성이 있는지 여부를 판별하기 위해 순차적 프리페치 정보를 확인하고; 상기 순차적 명령어가 상기 실행 유닛에 의해 접근될 가능성이 없는 경우, 상기 순차적 명령어의 프리페치를 보류하도록 구성된다.
상기 목적을 달성하기 위한 본 발명에 따른 장치의 상기 분기 레코드는 캐시 라인 태그와 관련되고, 상기 캐시 라인 태그는 상기 순차적 명령어가 실행 유닛에 의해 접근될 가능성이 있는지 여부를 나타내는 순차적 프리페치 정보를 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 장치의 상기 레벨1 분기 목적지 버퍼는, 상기 분기 레코드를 제공받으면: 방출할 원하지 않는 분기 레코드를 판별하고; 상기 원하지 않는 분기 레코드에 분기 바이어스를 저장하고; 상기 분리된 레벨2 분기 목적지 버퍼에 상기 분기 바이어스와 함께 상기 원하지 않는 분기 레코드를 저장하도록 구성되고, 상기 분기 바이어스는 상기 분기 예측 회로에 의해 상기 원하지 않는 분기 레코드와 관련된 분기 명령어에 할당되는 분기 예측 가중치를 나타낸다.
상기 목적을 달성하기 위한 본 발명에 따른 장치의 상기 분기 예측 회로는, 상기 분기 레코드를 제공받으면: 상기 분기 레코드로부터 분기 바이어스를 검색하고; 상기 검색된 분기 바이어스의 적어도 한 부분에 기초하여 학습되도록 구성되고, 상기 분기 바이어스는 상기 분기 예측 회로에 의해 상기 분기 레코드와 관련된 분기 명령어에 할당되었던 분기 예측 가중치를 나타낸다.
상기 목적을 달성하기 위한 본 발명에 따른 시스템은, 티어링된 메모리 시스템; 명령어 프리페치 유닛; 및 상기 티어링된 메모리 시스템으로부터 명령어를 요청하도록 구성되는 실행 유닛을 포함하되, 상기 실행 유닛이 상기 명령어를 요청하면, 캐시 미스 및 버퍼 미스가 발생하고, 상기 티어링된 메모리 시스템은: 상기 캐시 미스가 발생한 경우, 레벨2 캐시로부터 상기 명령어를 요청하도록 구성되는 레벨1 캐시; 상기 버퍼 미스가 발생한 경우, 레벨2 분기 목적지 버퍼로부터 상기 명령어와 관련된 분기 레코드를 요청하도록 구성되는 레벨1 분기 목적지 버퍼; 상기 명령어가 상기 레벨1 캐시로 제공되기 전에 상기 레벨1 분기 목적지 버퍼로 상기 분기 레코드를 제공하도록 구성되는 상기 레벨2 분기 목적지 버퍼; 및 상기 레벨2 분기 목적지 버퍼를 포함하지 않고, 상기 명령어를 저장하도록 구성되는 상기 레벨2 캐시를 포함하고, 상기 명령어가 상기 레벨1 캐시로 제공되기 전에, 상기 명령어 프리페치 유닛은: 상기 분기 레코드에 기초하여, 최초 분기 예측기 프리페치 회로를 통해, 비순차적 명령어를 프리페치하고; 순차적 프리페치 정보에 기초하여 순차적 명령어를 프리페치하도록 구성된다.
상기 목적을 달성하기 위한 본 발명에 따른 시스템의 상기 레벨2 분기 목적지 버퍼는, 상기 레벨2 캐시의 응답 레이턴시보다 작은 응답 레이턴시를 갖도록 구성된다.
상기 목적을 달성하기 위한 본 발명에 따른 시스템의 상기 명령어 프리페치 유닛은, 상기 분기 레코드가 상기 레벨1 분기 목적지 버퍼로 제공되면, 상기 비순차적 명령어를 프리페치하도록 구성되는 분기 예측 회로; 및 상기 분기 레코드와 관련된 상기 순차적 프리페치 정보에 의한 지시가 있는 경우, 상기 순차적 명령어를 프리페치하도록 구성되는 순차적 프리페치 유닛을 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 시스템은, 분기 예측기 회로를 더 포함하되, 상기 분기 예측기 회로는, 상기 분기 레코드를 제공받으면: 상기 분기 레코드로부터 분기 바이어스를 검색하고; 상기 검색된 분기 바이어스의 적어도 한 부분에 기초하여 학습되도록 구성되고, 상기 분기 바이어스는 상기 분기 예측기 회로에 의해 상기 분기 레코드와 관련된 분기 명령어에 할당되었던 분기 예측 가중치를 나타낸다.
본 발명에 따르면, 캐시 미스 발생 후 캐시 미스가 발생한 데이터를 검색하는 시간을 감소시킬 수 있어 메모리 장치 또는 메모리 시스템의 성능이 향상되는 효과가 있다.
도 1은 본 발명에 따른 시스템의 예시적인 실시 예의 블록도이다.
도 2는 본 발명에 따른 방법의 예시적인 실시 예의 타이밍도이다.
도 3은 본 발명에 따른 방법의 예시적인 실시 예의 흐름도이다.
도 4는 본 발명의 원리에 따라 형성된 장치들을 포함할 수 있는 정보 처리 시스템의 블록도이다.
도면들에서 동일한 참조부호들은 동일한 구성들을 나타낸다.
전술한 특성 및 이하 상세한 설명은 모두 본 발명의 설명 및 이해를 돕기 위한 예시적인 사항이다. 즉, 본 발명은 이와 같은 실시 예에 한정되지 않고 다른 형태로 구체화될 수 있다. 다음 실시 형태들은 단지 본 발명을 완전히 개시하기 위한 예시이며, 본 발명이 속하는 기술 분야의 통상의 기술자들에게 본 발명을 전달하기 위한 설명이다. 따라서, 본 발명의 구성 요소들을 구현하기 위한 방법이 여럿 있는 경우에는, 이들 방법 중 특정한 것 또는 이와 동일성 있는 것 가운데 어떠한 것으로든 본 발명의 구현이 가능함을 분명히 할 필요가 있다.
본 명세서에서 어떤 구성이 특정 요소들을 포함한다는 언급이 있는 경우, 또는 어떤 과정이 특정 단계들을 포함한다는 언급이 있는 경우는, 그 외 다른 요소 또는 다른 단계들이 더 포함될 수 있음을 의미한다. 즉, 본 명세서에서 사용되는 용어들은 특정 실시 형태를 설명하기 위한 것일 뿐이고, 본 발명의 개념을 한정하기 위한 것이 아니다. 나아가, 발명의 이해를 돕기 위해 설명한 예시들은 그것의 상보적인 실시 예도 포함한다.
본 명세서에서 사용되는 용어들은 본 발명이 속하는 기술 분야의 통상의 기술자들이 일반적으로 이해하는 의미를 가진다. 보편적으로 사용되는 용어들은 본 명세서의 맥락에 따라 일관적인 의미로 해석되어야 한다. 또한, 본 명세서에서 사용되는 용어들은, 그 의미가 명확히 정의된 경우가 아니라면, 지나치게 이상적이거나 형식적인 의미로 해석되지 않아야 한다. 이하 첨부된 도면을 통하여 본 발명의 실시 예가 설명된다.
도 1은 본 발명에 따른 시스템(100)의 예시적인 실시 예의 블록도이다. 도 1을 참조하면, 실행 유닛(예컨대, 명령어 페치 유닛(Instruction Fetch Unit, IFU), 명령어 디코드 유닛(IDU), 로드/저장 유닛(Load/Store Unit(LSU)), 등; 미 도시)은 캐시 또는 더 일반적으로는 메모리 시스템(캐시 및 장기 기억(longer-term) 메모리들의 티어링된 시스템을 포함하는)으로부터 명령어를 액세스하기 위한 시도를 할 것이다.
실시 예를 참조하면, 시스템(100)은 레벨1(L1) 캐시(L1-cache, 114)를 포함할 수 있다. 다양한 실시 예들에서, 도시된 레벨1 캐시(114)는 전용 명령어 레벨1 캐시(조합된 데이터 및 명령어 캐시와는 대조적으로)일 수 있다. 다양한 실시 예들에서, 레벨1 캐시(114)는 다양한 실행 유닛들(예컨대, 부동 소수점 유닛(Floating-Point Unit, FPU), 산술 논리 유닛(Arithmetic Logic Unit, ALU), 등)을 위한 명령어들을 나타내는 데이터를 저장하도록 구성될 수 있다. 그와 같은 실시 예들에서, 각 명령어들은 캐시에 저장되거나 또는 메모리 어드레스를 통해 접근가능할 수 있다.
도시된 실시 예에서, 명령어 페치 커맨드(154)는 명령어 또는 주어진 메모리 어드레스에 저장된 데이터로의 접근을 요청할 수 있다. 상술한 바와 같이, 다양한 실시 예들에서, 티어링된 메모리 시스템은 더 높은 티어들이 더 빠르지만 더 적은 데이터를 포함하는 다양한 레벨들의 메모리를 포함할 수 있다. 도시된 실시 예에서, 요청된 데이터가 레벨1 캐시(114)에 포함되어 있지 않을 수 있다. 상술한 바와 같이, 이것은 "캐시 미스"로 불릴 수 있다. 다른 실시 예에서, 데이터는 레벨1 캐시(114)에 포함될 수 있지만, 이와 같은 경우는 본 명세서에서 중요한 초점은 아니다.
상술한 바와 같이, 캐시 미스가 발생하는 경우, 더 빠른 캐시(예컨대, 레벨1 캐시(114))가 일반적으로 다음 메모리 티어(예컨대, 레벨2 캐시(124))로부터 데이터를 요청한다. 도시된 실시 예에서, 시스템(100)은 데이터를 저장하도록 구성된 레벨2 캐시(L2 캐시, 124)를 포함할 수 있다. 다양한 실시 예들에서, 레벨2 캐시(124)는 레벨1 캐시(114)에 저장된 데이터와 레벨1 캐시(114) 내에 현재 저장되어 있지 않은 추가 데이터의 복사본(copy)을 포함할 수 있다. 레벨1 캐시(114)와는 다르게, 다양한 실시 예들에서, 레벨2 캐시(124)는 통합될 수 있고 그리고 데이터 및 명령어들 모두를 포함할 수 있다. 상기의 설명은 개시된 주제에 대한 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
상술한 바와 같이, 캐시 미스가 레벨1 캐시(114)에서 발생하는 경우, 레벨1 캐시(114)는 미스드(missed) 또는 미싱(missing) 데이터를 레벨2 캐시(124)로부터 요청할 수 있다. 일부 실시 예들에서, 레벨2 캐시(124)는 미싱 데이터를 가질 수 있고 그리고 요청하는 레벨1 캐시(114)로 그 데이터를 전달할 수 있다. 또 다른 실시 예에서, 레벨2 캐시(124)가 미싱 데이터를 가지고 있지 않은 경우, 메모리 시스템의 다음 티어 또는 하위 티어(예컨대, 메인 메모리, 등; 미 도시)로부터 미싱 데이터를 요청하도록 요청될 수 있다. 이것은 더 큰 지연을 야기할 수 있다.
도시된 실시 예에서, 시스템(100)은 또한 레벨1 분기 목적지 버퍼(L1 Branch Target Buffer, 112)를 포함할 수 있다. 다양한 실시 예들에서, 레벨1 분기 목적지 버퍼(112)는 예측된(predicted) 분기 목적지 메모리 어드레스들을 저장 또는 포함하도록 구성될 수 있다. 다양한 실시 예들에서, 레벨1 분기 목적지 버퍼(112)는 분기가 발생할지(taken) 또는 발생하지 않을지(not taken)에 관한 예측을 포함하지 않거나 또는 저장하지 않을 수 있다. 상기의 설명은 개시된 주제에 대한 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
본 명세서에서, "분기 명령어"는 프로그램 흐름(flow)이 비순차적 또는 연속적 방식(fashion)으로 점프하거나 또는 변하도록 야기하는 명령어를 포함할 수 있다. 예를 들어, 전형적인 프로그램 흐름은 예컨대, 메모리 어드레스들(120, 121, 122, 및 123 등)에 순차적으로 저장되는 명령어들을 포함한다. 그러나, 분기 명령이 메모리 어드레스(123)에서 발생한다면, 그 분기 명령은 프로그램 흐름을 메모리 어드레스(456)로 점프하도록 변경할 수 있을 것이다(어드레스(124)로 진행하는 것과는 대조적으로). 상기의 설명은 개시된 주제에 대한 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
때때로, 분기 명령어는 그 명령어와 관련된 변수(variable) 또는 인수(argument)에 의존하여 점프하는 곳을 의미하는 조건이다(예컨대, 사용자가 특정 버턴을 클릭하였는가?; 오늘이 화요일인가?; 변수 X가 10보다 더 큰 값을 가지는가?; 등). 이 경우에, 분기는 2 이상의 메모리 어드레스들 중 하나로 진행할 것이다. 현대의 파이프라인 방식의 컴퓨터 구조들에서, 2 이상의 메모리 어드레스들 중 어떤 것이 조건 분기 명령어에 의해 선택될지를 예측하는 것은 중요하다. 이는 만약 잘못 선택된다면 일반적으로 파이프라인은 반드시 플러쉬(flush)되어야 하고 그리고 정확한 선택으로 재시작될 것이기 때문이다. 이와 같은 실시 예에서, 만약 실행된 다음 명령어가 분기 명령어의 인수에 의해 정의된다면 분기는 "발생된(taken)" 것으로 간주 된다. 반면에 실행된 다음 명령어가 프로그램 흐름이 변하지 않도록 메모리의 그 분기 명령어에 바로 이어진 명령어라면 분기는 "발생되지 않은(not taken)" 것으로 간주 된다.
분기문(branch statement)들의 예시들은 "점프", "만약 0이라면 점프(jump if 0)", "만약 오버플로우(overflow)라면 점프(jump if overflow)", "분기", "만약 더 크다면 분기(branch if greater than)", 등을 포함할 수 있다. 이러한 로우-레벨(low-level) 또는 머신-레벨(machine-level) 점프 명령어들은 예를 들어, 조건문(if-statement), 반복문(while-loop), 서브루틴 호출(subroutine call), 고투문(goto statement), 쓰로우-캐치 구조(throw-catch construct), 등과 같은 하이 레벨(high level) 또는 인간이 읽을 수 있는 프로그램어 문장(human-readable programming language statement)들의 결과일 수 있다. 상기의 설명은 개시된 주제에 대한 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
도시된 실시 예에서, 레벨1 분기 목적지 버퍼(112)는 명령어 페치 커맨드(154)에서 참조된 명령어의 메모리 어드레스를 룩업(look up)하기 위한 요청(152)을 받을 수 있고, 그리고 그 메모리 어드레스(예컨대, 예측된 목표 메모리 어드레스, 등)와 관련된 예측 정보를 보고할 수 있다. 다양한 실시 예들에서, 레벨1 분기 목적지 버퍼 요청은 요청된 명령어가 분기 명령어인지 알려지기 전에 발생할 수 있다. 이와 같은 실시 예에서, 요청(152) 및 명령어 페치 커맨드(154)는 거의 동시에 발생할 수 있다. 상기의 설명은 개시된 주제에 대한 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
도시된 실시 예에서, 분기 목적지 버퍼는 캐시 시스템과 유사하게 티어링될 수 있다. 이와 같은 실시 예에서, 레벨1 분기 목적지 버퍼(112)는 상대적으로 작지만 상대적으로 빠르며, 그리고 가능한 모든 인카운터된(encountered) 분기 명령어의 서브-세트만을 포함할 수 있다. 도시된 실시 예에서, 분기 목적지 버퍼 시스템의 두 번째 티어는 레벨2 캐시(124)가 레벨1 분기 목적지 버퍼(122)보다 더 크지만 더 느린 것과 유사한, 레벨2 분기 목적지 버퍼(122)를 포함할 수 있다. 일부 실시 예들에서, 추가적인 분기 목적지 버퍼가 존재할 수 있다. 상기의 설명은 개시된 주제에 대한 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
도시된 실시 예에서, 분기 목적지 버퍼 요청(152)은 레벨1 분기 목적지 버퍼(112)에 현재 저장되어 있지 않으며, 그리고 분기 목적지 미스를 야기하는 메모리 어드레스에 대한 정보를 요청할 수 있다. 이와 같은 실시 예에서, 레벨1 분기 목적지 버퍼(112)는 상술한 캐시 미스의 경우와 유사한 방법으로 레벨2 분기 목적지 버퍼(122)로부터 분기 목적지 정보를 요청할 수 있다. 이러한 맥락에서, 다양한 메모리 어드레스들과 관련된 정보는 분기 레코드로 지칭될 수 있다.
도시된 실시 예에서, 레벨2 분기 목적지 버퍼(122)는 레벨2 캐시(124)와 분리되거나 또는 떨어져 있을 수 있다. 통상적으로, 레벨2 분기 목적지 버퍼들은 레벨2 캐시 구조와 함께 또는 레벨2 캐시 구조의 일부로 통합될 수 있고 따라서 크기나 통합된(즉, 데이터 및 명령어) 캐시 인커(incur)들과 같은 제한들이 발생하기 쉽다. 그러나 도시된 실시 예에서, 레벨2 캐시(124)로부터 레벨2 분기 목적지 버퍼(122)를 분리하는 것에 의해, 레벨2 분기 목적지 버퍼(122)는 그것의 통상적인 구조 대비 상당히 빨라질 수 있다.
예시적으로, 특정한 일 실시 예에서, 레벨2 분기 목적지 버퍼(122)는 레벨2 캐시(124)의 절반보다 더 작을 수 있다. 일 실시 예에서, 개별적인 분기 레코드들의 크기는 명령어 캐시 라인의 크기의 절반보다 더 작을 수 있다. 따라서, 분리된 레벨2 분기 목적지 버퍼(122)를 위해 저장될 필요한 비트 수는 저장된 분기 레코드의 수를 감소시키지 않고도, 상당히 감소할 수 있다. 이와 같은 실시 예에서, 레벨2 분기 목적지 버퍼(122)로 접근할 때의 레이턴시(latency)(예컨대, 분기 레코드를 요청하는 것과 분기 레코드를 수신하는 것 사이의 시간, 등)는 레벨2 캐시(124)로 접근할 때의 레이턴시의 절반(또는 더 작을)일 수 있다. 이와 같은 실시 예에서, 레벨1 분기 목적지 버퍼(112)(및 일반적으로 시스템(100))는 하기에서 기술될 것과 같이, 레벨1 캐시(114)가 레벨1 캐시 미스를 복구하는 것보다 훨씬 빨리 레벨1 분기 목적지 버퍼 미스를 복구할 수 있다. 게다가, 다양한 실시 예들에서, 레벨2 캐시(124)로부터 레벨2 분기 목적지 버퍼(122)를 분리하는 것은 레벨2 분기 목적지 버퍼와 캐시가 통합된 것과 비교할 때, 단지 무시 가능한 면적과 파워 오버헤드를 발생시킬 것이다. 상기의 설명은 개시된 주제에 대한 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
상술한 바와 같이, 분리된 레벨2 분기 목적지 버퍼(122)는 레벨2 캐시(124)가 요청된 명령어(192) 또는 캐시 라인에 응답하는 것보다 상당히 일찍 요청된 분기 레코드(190)에 응답할 수 있다. 도시된 실시 예에서, 이 분기 레코드(190)는 단지 명령들(152 및 154,)에 의해 요청된 정보의 절반 또는 일부일 수 있다(나머지 절반은 명령어(192)이다). 그러나, 이 절반은 시스템(100)이 추가 동작들을 예측하는 것을 시작하기에 충분한 정보를 포함할 수 있고, 그리고 분기 레코드(190)를 처리하는 것에 의해 시스템(100)은 일부 데이터를 프리-컴퓨트(pre-compute)할 수 있고 그리고 다른 데이터를 프리페치할 수 있다. 구체적으로, 도시된 실시 예에서, 이것은 시스템(100)이 요청된 명령어(192)가 리턴(return)되기 전에 데이터 또는 명령어들을 프리페치하는 것을 허용한다. 추가로, 도시된 실시 예에서, 획득된/비-획득된(taken/not-taken) 결정이 요청된 명령어(192)가 리턴되기 전에 계산되거나 또는 예측되는 것을 허용한다. 상기의 설명은 개시된 주제에 대한 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
도시된 실시 예에서, 시스템(100)은 분기 예측 회로 또는 분기 예측기(102)를 포함한다. 다양한 실시 예들에서, 분기 예측기(102)는 분기 명령어가 발생할 것인지 발생하지 않을 것인지를 예측하도록 구성될 수 있다. 일부 실시 예들에서, 분기 예측기(102)는 컴퓨터 또는 프로세서 파이프라인 이상으로 매우 복잡할 수 있기 때문에, 예측이 부정확하다면 더 많은 파이프라인 단계들이 반드시 플러쉬(flush)되어야 하고, 따라서 분기 명령어의 결과를 잘못 예측하면 더 많은 패널티(panelty)가 발생하게 된다. 분기 예측기(102)의 예측 능력의 추가적인 논의는 아래에서 논의될 것이지만, 지금은 일 실시 예의 프리페칭 능력이 논의될 것이다.
다양한 실시 예들에서, 분기 레코드(190)가 레벨1 분기 목적지 버퍼(112)로 리턴되면, 분기 레코드(190)는 분기 예측 정보를 결정하기 위해 검사(examine)될 것이다. 일 실시 예에서, 분기 예측 정보는 분기가 발생하였는지 여부에 사용되는 새로운 메모리 어드레스 또는 목적지 메모리 어드레스를 포함할 수 있다. 이 정보는 분기 예측기(102)를 통과하거나 또는 전달될 수 있다. 다양한 실시 예들에서, 이 예측된 메모리 어드레스는 통상적인 프로그램 흐름과 비교하여 비순차적이거나 또는 비연속적일 수 있다. 상기의 설명은 개시된 주제에 대한 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
이와 같은 실시 예에서, 시스템(100)은 비순차적 메모리 어드레스를 프리패치하도록 구성될 수 있다. 덜 선호되는 일 실시 예에서, 분기 예측기(102)는 레벨1 캐시(114)로부터 비순차적 메모리 어드레스 또는 명령어를 요청하도록 구성될 수 있다. 만약 레벨1 캐시(114)가 현재 메모리 어드레스를 포함하지 않고 있다면 캐시 미스가 발생할 수 있고 그리고 상술한 바와 같이, 그 메모리 어드레스가 레벨2 캐시(124)로부터 요청될 수 있다. 더 선호되는 다른 실시 예에서, 분기 예측기(102)가 비순차적 메모리 어드레스를 미스 버퍼(106)에 바로 위치시키도록 대신 구성될 수 있다.
다양한 실시 예들에서, 시스템(106)은 미스 큐(queue) 또는 미스 버퍼(106)를 포함할 수 있다. 이와 같은 실시 예에서, 미스 버퍼(106)는 명령어 요청들 또는 메모리 어드레스들에 대한 요청들 및 그 안에 저장된 데이터를 대기 행렬에 넣거나 저장하도록 구성될 수 있다. 다양한 실시 예들에서, 미스 버퍼(106)는 캐시 미스들을 대기 행렬에 넣고 그리고 관련된 메모리(예컨대, 레벨1 캐시(114) 등)의 한계로 인해 차단되지 않게 해주는 많은 통상적인 캐시 필 버퍼(cache fill buffer, 미도시)와 유사할 수 있다. 다른 실시 예에서, 미스 버퍼(106)는 필 버퍼에 의해 포함될 수 있다. 상기의 설명은 개시된 주제에 대한 일부 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
도시된 실시 예에서, 미스 버퍼(106)는 비순차적 메모리 어드레스에 저장된 프리페치 데이터(또는 명령어)를 위해 레벨2 캐시(124)에 명령을 내리거나 또는 요청하도록 구성될 수 있다. 다양한 실시 예들, 그리고 도 2에서 더 분명하게 도시된 실시 예에서, 이것은 명령어 페치 커맨드(154) 때문에 발생된 캐시 미스의 결과로서 레벨1 캐시(114)에 의해 요청된 명령어(192)를 레벨2 캐시(124)가 돌려주기 전에 발생할 것이다.
다양한 실시 예들에서, 시스템(100)은 단지 비순차적 명령어를 요청하거나 또는 프리페치하기 위해 분기 예측기(102)를 사용하지는 않을 것이다. 이와 같은 실시 예에서, 시스템(100)은 또한 순차적 명령어를 프리페치할 것이다. 이와 같은 실시 예에서, 시스템(100)은 주어진 분기 명령어에 대해 분기가 발생한 경우 또는 발생하지 않은 경우 모두에 대한 장래(future) 명령어들을 프리페치할 것이다.
도시된 실시 예에서, 시스템(100)은 순차적 프리페치 유닛(104)을 포함할 수 있다. 다양한 실시 예들에서, 순차적 프리페치 유닛(104)은 다음 명령어 또는 순차적 명령어를 요청하도록 구성될 수 있다. 이와 같은 실시 예에서, 요청은 상술한 바와 같이, 미스 버퍼(106) 안으로 위치될 수 있다. 다양한 실시 예들에서, 순차적 프리페치 명령어는 미스 버퍼(106)에 의해 상술한 비순차적으로 프리페치된 명령어와 유사하게 처리될 수 있다.
일부 실시 예들에서, 분기 레코드(190)는 순차적 프리페치 힌트(191)를 포함할 수 있다. 이와 같은 실시 예들에서, 순차적 프리페치 힌트(191)는 순차적 프리페치 데이터 또는 명령어가 프리페치할 가치가 있는지 또는 실행 유닛에 의해 접근되거나 또는 사용될 가능성이 있는지를 나타내도록 구성될 수 있다. 다양한 실시 예들에서, 순차적 프리페치 힌트(191)는 분기가 발생하지 않을 분기 명령어의 가능성에 대한 확신을 나타낼 수 있다. 이와 같은 실시 예에서, 순차적 프리페치 힌트(191)는 필요없는 또는 바람직하지 않은 순차적 프리페치 동작들을 필터링하기 위해 이용될 수 있다.
일부 실시 예들에서, 분기 레코드(190)는 키(key) 또는 캐시 라인 태그에 의해 접근될 수 있다. 이와 같은 실시 예들에서, 분기 레코드(190)는 키(key) 부분(key portion, 예컨대, 캐시 라인 태그)과 밸류 부분(value portion, 예컨대, 만약 분기 명령어가 발생한다면 목적지 메모리 어드레스)을 가지는 점에서 연관 어레이(associative array)의 성분(element)과 유사할 것이다. 다양한 실시 예들에서, 캐시 라인 태그는 관련된 명령어의 메모리 어드레스를 포함할 수 있다. 다른 실시 예에서, 분기 레코드(190)의 밸류 부분은 목적지 메모리 어드레스 및 분기 명령어의 타입 분류를 포함할 수 있다. 또 다른 실시 예에서, 분기 레코드의 밸류 부분은 하기에서 기술할, 바이어스 가중치 필드(193)를 더 포함할 수 있다. 상기의 설명은 개시된 주제에 대한 일부 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
이와 같은 일 실시 예에서, 순차적 프리페치 힌트(191)는 캐시 라인 태그 안에 포함될 것이다. 일부 실시 예들에서, 순차적 프리페치 힌트(191)는 캐시 라인 태그의 메모리 어드레스에 첨부된 및/또는 부가된(prefixed) 하나 이상의 비트들을 포함할 수 있다. 다른 실시 예들에서, 순차적 프리페치 힌트(191)는 캐시 라인 태그 안에 부호화될 수 있다(예컨대, 메모리 어드레스와 함께 XOR 연산된, 등). 상기의 설명은 개시된 주제에 대한 일부 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
이와 같은 실시 예에서, 캐시 라인 태그와 같은, 즉시 접근 가능한 위치 안에 순차적 프리페치 힌트(191)를 위치시키는 것에 의해, 시스템(100)은 순차적 명령어를 프리페치 할지 또는 안 할지에 대한 결정을 빠르게 할 수 있다. 이와 같은 실시 예에서, 다음 명령어 또는 순차적 명령어를 프리페치하거나 또는 요청하는 것은 순차적 프리페치 힌트(191) 또는 그것의 부재(lack thereof)에 기초하여 동적으로 일어날 수 있다. 상기의 설명은 개시된 주제에 대한 단지 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
다양한 실시 예들에서, 레벨2 분기 목적지 버퍼(122)는 캐시 라인 어드레스 태그 그리고 특정 분기 어드레스를 포함하는 캐시 라인 안에 서브 태그를 포함할 수 있다. 일부 실시 예들에서, 캐시 라인 어드레스 구조 안에 순차적 프리페치 힌트(191)를 저장하는 것은 더 빠른 릴로드 레이턴시(reload latency)를 허용할 수 있다. 상기의 설명은 개시된 주제에 대한 단지 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
통상적으로, 제 1 명령어 페치 커맨드(154)는 상술한 캐시 미스를 야기할 수 있다. 일단 제 1 명령어(192)가 레벨2 캐시(124)에 의해 공급되었고 그리고 처리되었다면, 분기 예측기(102)는 제 1 명령어(192) 및 제 2 명령어 페치 커맨드(154)가 발행될지(would be issued)에 기초하여 예측을 결정한다. 제 2 명령어 페치 커맨드(154)는 제 2 캐시 미스를 야기한다(제 1 명령어가 미스였기 때문에). 다시 한번, 파이프라인은 제 2 명령어가 레벨2 캐시(124)로부터 요청될 것이기 때문에 지연될 것이다. 이것은 백-투-백(back-to-back)이 발생하도록 2개의 완전한 캐시 미스 지연들을 야기할 것이다. 비슷하게, 제 3 및 그 다음의 명령어 페치들은 그러한 명령어들이 레벨1 캐시(114)에 있지 않다면 지연들을 야기할 것이다.
그러나, 도시된 실시 예에서, 분기 예측기(102) 및 순차적 프리페치 유닛(104)이 분기 레코드(190)가 레벨2 분기 목적지 버퍼(122)에 의해 리턴되지마자 명령어들을 프리페치하는 것을 시작하도록 하고, 그리고 명령어(192)가 레벨2 캐시(124)에 의해 리턴될때까지 기다리지 않는 것에 의해, 순차적 캐시 미스들에 의해 야기되는 지연이 감소될 수 있다. 다양한 실시 예들에서, 감소는 본질적으로 레벨2 분기 목적지 버퍼(122)가 분기 레코드(190)를 리턴하는 시간과 레벨2 캐시(124)가 명령어(192)를 리턴하는 시간 사이의 차이일 것이다. 다른 실시 예에서, 분리된 레벨2 분기 목적지 버퍼(112)의 속도 이점은 시스템(100)이 다수의 또는 순차적 캐시 미스들을 거의 동시 방식으로 또는 오버랩핑 방법(substantially simultaneous or overlapping manner)으로 처리하는 것을 허용할 수 있다.
특정 실시 예에서, 제 2 캐시 미스(예컨대, 분기 예측기(102)에 의해 발생된 예측된 비순차적 메모리 어드레스에 의해 야기된)는 캐시 미스 지연의 거의 절반을 감추는(hide) 방식으로 런치(launch)될 것이다. 추가로, 다양한 실시 예들에서, 제 3 및 그 다음 캐시 미스들이 추가적인 프리페치된 명령어 요청들에 의해 발생한다면, 그러한 제 3 및 그 다음의 지연들이 실행 유닛으로부터 완전히 또는 대부분 숨겨질 것이다(그것은 실행 유닛이 명령어로의 접근을 시도하기 전에 레벨1 캐시(114)로 로드되었거나 또는 프리페치 되었을 것이기 때문이다). 상기의 설명은 개시된 주제에 대한 단지 몇몇의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
일부 실시 예들에서, 미스 버퍼(106)는 또한 레벨2 분기 목적지 버퍼(122)로부터 예측된 메모리 어드레스와 관련된 분기 레코드(190)를 요청하도록 구성될 수 있다. 이와 같은 실시 예에서, 프리페치된 순차적 및/또는 비순차적 메모리 어드레스들과 관련된 분기 레코드(190)들은 레벨1 분기 목적지 버퍼(112)로 프리페치될 것이다.
다양한 실시 예들에서, 분기 예측기(102), 순차적 프리페치 유닛(104) 및/또는 미스 버퍼(106)는 프리페치된 비순차적 및/또는 순차적 명령어가 레벨1 캐시(114) 또는 레벨1 분기 목적지 버퍼(112) 내에 이미 저장되어 있는지를 확인하도록 구성될 수 있다. 만약 저장되어 있다면, 프리페치된 명령어들/분기 레코드들은 레벨2 캐시(124) 또는 레벨2 분기 목적지 버퍼(122)로부터 재요청되지 않을 것이다. 다양한 실시 예들에서, 이와 같은 확인은 통상 분기 예측기(102), 순차적 프리페치 유닛(104), 및/또는 미스 버퍼(106) 파이프라인의 일부이거나 또는 실행의 순서(order of operations)일 것이다. 상기의 설명은 개시된 주제에 대한 단지 하나의 설명적인 예시이며 이에 한정되는 것은 아닌 것으로 이해되어야 한다.
상술한 다양한 실시 예들에서, 제 1 캐시 미스로부터의 분기 레코드(190)가 레벨2 분기 목적지 버퍼(122)로부터 리턴되는 경우, 분기 예측기(102)는 분기가 발생할지 또는 발생하지 않을지에 대한 예측을 시작할 수 있다. 이와 같은 실시 예에서, 이것은 시스템(100)이 명령어(192)가 레벨2 캐시(124)로부터 리턴되기 전에 순차적 또는 비순차적 명령어들이 추적(pursue)되어야할지 여부를 결정하는 것을 허용한다. 이와 같은 실시 예에서, 명령어(192)를 일부분으로 하는 프로그램의 실행을 진행하기 전에, 시스템(100)은 대기하지 않거나 또는 일반적인 경우보다 더 짧게 대기할 수 있다.
다양한 실시 예들에서, 분기 레코드(190)는 분기 예측 값을 포함하는 바이어스 가중치 필드(193)를 포함할 수 있다. 분기 예측 값은 분기 예측기(102)를 학습시키는데 사용될 수 있다.
상술한 바와 같이, 분기 예측기(102)는 상당히 복잡할 수 있고 그리고 때때로 가중치가 적용된 분기 예측 방법(단순 바이너리 테이크/돈-테이크 방법(simple binary take/don't-take scheme)과는 대조적으로)을 사용한다. 다양한 실시 예들에서, 분기가 여러 번(예컨대, 반복 루프 등에 의해) 처리되기 때문에, 분기 예측기(102)는 분기 명령어가 인카운터된(encountered) 다음 번에 분기가 발생할지 또는 발생하지 않을 지에 대한 예측에 사용된 예측 가중치를 증가 또는 감소할 수 있다. 통상적으로, 분기 레코드(190)가 레벨1 분기 목적지 버퍼(112)에서 이탈되거나(evicted) 또는 제거되는 경우(새로운 분기 레코드를 위한 공간을 만들기 위해) 분기 예측을 위해 사용된 복잡하고 그리고 늬앙스드(nuanced) 가중치는 분실된다(is lost).
도시된 실시 예에서, 분기 레코드(190)는 분기 예측기(102)에 의해 사용된 예측 가중치를 포함하는 바이어스 가중치 필드(193)를 포함할 수 있는 레벨2 분기 목적지 버퍼(122) 내에 저장된다. 이 바이어스 가중치 필드(193) 또는 예측 가중치는 분기 레코드(190)가 레벨2 분기 목적지 버퍼(122)에서 리턴되는 경우 분기 예측기(102)(또는 그것의 상태 머신(state machine)들) 안으로 다시 로드될 수 있다. 이와 같은 실시 예에서, 이것은 분기 예측기(102)가 분기 명령어의 발생/비-발생(taken/not-taken) 상태를 정확하게 예측하는데 큰 도움이 될 수 있다.
다양한 실시 예들에서, 바이어스 가중치 필드(193)는 분기 레코드(190)와 관련된 특정한 분기 명령어 또는 메모리 어드레스에 한정될 수 있다. 일부 실시 예들에서, 바이어스 가중치 필드(193)는 그것이 레벨1 분기 목적지 버퍼(112)에서 이탈(evict)되었기 때문에 분기 레코드(190)에 추가될 수 있고 그리고 레벨2 분기 목적지 버퍼(122)에 쓰여질 수 있다. 이와 같은 실시 예에서, 바이어스 가중치 필드(193)를 레벨2 분기 목적지 버퍼(122) 내에 저장하는 것은 그것 또는 예측 가중치가 오버라이트(overwrite)되거나 또는 이 특정 분기 레코드(190)가 레벨1 분기 목적지 버퍼(112)에서 이탈된 후에 분기 예측기(102)에서 여전히 활성화 상태인 경쟁 분기(competing branch)들에 의해 조정되는 것을 방지할 수 있다.
이와 같은 실시 예에서, 분기 레코드(190)가 레벨1 분기 목적지 버퍼(112)로 리턴되는 경우 바이어스 가중치 필드(193)와 그것의 사용은 분기 예측기(102)가 스크래치(scratch)로부터 리-트레인(re-train)될 필요가 없기 때문에, 분기 레코드(190)의 릴로드(reload)에 따라 즉각적으로 대부분의 분기들을 더 정확하게 예측할 수 있다. 일부 실시 예들에서, 바이어스 가중치 필드(193)와 분기 레코드(190)가 레벨1 분기 목적지 버퍼(112)로 리턴되는 경우 그것의 사용은 더 빠른 분기 예측 리테이닝(retaining)을 허용하고, 그리고 분기 바이어스 또는 가중치가 분기 예측기(102)에 바로 복사될 수 있다.
다양한 실시 예들에서, 순차적 페치 유닛(104)은 분기 예측기(102)에 통합될 수 있다. 다른 실시 예에서, 순차적 페치 유닛(104) 및 분기 예측기(102)는 프리페치 유닛에 통합될 수 있다. 상기의 설명은 개시된 주제에 대한 단지 몇몇의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
도 2는 개시된 주제에 따른 방법(technique)의 예시적인 실시 예의 타이밍도이다. 다양한 실시 예들에서, 방법은 예컨대, 도 1의 시스템(100) 또는 도 4의 시스템과 같은 시스템에 의해 사용되거나 또는 수행될 수 있다. 도시된 실시 예에서, 방법은 14개의 클록 사이클 동안(9개의 클록 사이클이 더 자세하게 도시되었다) 수행될 수 있다. 그러나, 레이턴시 또는 특정 타이밍들은 단지 하나의 설명적인 예시인 것으로 이해되어야 하며 개시된 주제를 한정하는 것은 아니다. 예를 들어, 일부 실시 예들에서, 레벨2 분기 목적지 버퍼 순차적 힌트(S212)는 1 또는 2개의 클록 사이클이, 레벨2 분기 목적지 버퍼 응답(S206)은 5-10 클록 사이클이, 레벨2 캐시 응답(S256)은 10-20 클록 사이클이 소요될 것이다. 이와 같이, 도 2에 도시된 클록 사이클들의 수는 단시 예시적인 목적으로 도시된 것이다. 상기의 설명은 개시된 주제에 대한 단지 몇몇의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
도시된 실시 예에서, 클록 사이클(P1)에서, 레벨1 캐시 접근(S252)이 발생하거나 또는 수신될 수 있다. 상술한 바와 같이, 다양한 실시 예들에서, 이러한 레벨1 캐시 접근(S252)은 명령어 접근 또는 읽기 동작을 포함할 수 있다. 또한, 상술한 바와 같이, 다양한 실시 예들에서, 이러한 레벨1 캐시 접근(S252)은 캐시 미스의 결과를 낳을 수 있다.
결과적으로, 클록 사이클(P2)에서, 레벨2 캐시 요청(S254)이 레벨1 캐시 접근(S252)에 의해 요청된 명령어를 위해 레벨2 캐시에서 만들어질 수 있다. 도시된 실시 예에서, 이러한 레벨2 캐시 요청(S254)이 완료되기 위해 7개의 사이클이 소요될 것이다. 상기의 설명은 개시된 주제에 대한 단지 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
도시된 실시 예에서, 또한 클록 사이클(P1)에서, 레벨1 분기 목적지 버퍼 접근(S202)이 발생하거나 또는 수신될 수 있다. 상술한 바와 같이, 다양한 실시 예들에서, 이러한 레벨1 분기 목적지 버퍼 접근(S202)은 레벨1 캐시 접근(S252)과 같은 동일한 명령어와 연관될 수 있다. 또한, 상술한 바와 같이, 다양한 실시 예들에서, 이러한 레벨1 분기 목적지 버퍼 접근(S202)은 캐시 미스의 결과를 낳을 수 있다.
결과적으로, 또한 클록 사이클(P2)에서, 레벨2 분기 목적지 버퍼 요청(204)이 레벨1 캐시 접근(S252)에 의해 요청된 명령어와 관련된 분기 레코드를 위해 분리된 레벨2 분기 목적지 버퍼에서 만들어질 것이다. 도시된 실시 예에서, 레벨2 분기 목적지 버퍼가 레벨2 캐시로부터 분리되고 따라서 레벨2 캐시와 독립적으로 동작하고 그리고 레벨2 캐시보다 더 작고 더 빠르기 때문에, 이러한 레벨2 분기 목적지 버퍼 요청(204)은 완료되기 위해 단지 2개의 사이클이 소요될 것이다. 상기의 설명은 개시된 주제에 대한 단지 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
도시된 실시 예에서, 클록 사이클(P3)에서, 동작(S212)은 상술한 바와 같이 시스템이 레벨2 분기 목적지 버퍼 순차적 힌트를 검사(examine)하는 것을 보여준다. 이와 같은 일 실시 예에서, 레벨2 분기 목적지 버퍼 순차적 힌트는 레벨2 분기 목적지 버퍼와 관련된 레벨1 분기 목적지 버퍼에서 사용된 또는 레벨1 분기 목적지 버퍼와 관련된 캐시 라인 태그 내에 저장될 수 있고 따라서 레벨2 분기 목적지 버퍼 응답(S206)보다 더 빠르게 획득될 수 있다. 일 실시 예에서, 레벨2 분기 목적지 버퍼 순차적 힌트가 순차적 명령어가 유용(useful)하지 않거나 또는 사용될 개연성이 매우 낮다면, 이벤트들의 이러한 과정에서 추가 동작이 일어나지 않거나 또는 다음 명령어가 프리페치되지 않을 것이다. 반대로, 다른 실시 예에서, 레벨2 분기 목적지 버퍼 순차적 힌트는 그 순차적 명령어가 유용할 것이라거나 또는 미리 정의된 문턱 값 내에서 접근될 가능성이 있다는 것을 나타낼 수 있다.
이와 같은 실시 예에서, 클록 사이클(P4)에서, 레벨2 캐시 요청(S214)이 레벨1 캐시 접근(S252)에 의해 요청된 명령어와 관련된 다음 또는 순차적 명령어를 위해 레벨2 캐시에서 만들어질 수 있다. 상술한 바와 같이, 이것은 순차적 힌트가 유용해야만 하거나 또는 유용할 경우인 일부 실시 예들에서만 발생할 수 있다. 도시된 실시 예에서, 순차적 레벨2 캐시 요청(S214)이 완료되기 위해서 7개의 사이클들이 소요될 것이다. 도시된 실시 예에서, 이것은 클록 사이클(P9+2 또는 P11, 명시적으로 도시되지 않음)에서 발생하는 순차적 레벨2 캐시 응답(S216)으로 도시되었다.
또한 클록 사이클(P4)에서, 레벨2 분기 목적지 버퍼는 레벨2 분기 목적지 버퍼 응답(S206)으로 리턴할 것이다. 다양한 실시 예들에서, 이 레벨2 분기 목적지 버퍼 응답(S206)은 요청된 분기 레코드를 포함할 것이다. 상술한 바와 같이, 다양한 실시 예에서, 분기 레코드는 분기 예측기를 학습하는데 이용될 수 있는 바이어스 가중치 필드를 포함할 수 있다. 상기의 설명은 개시된 주제에 대한 단지 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
도시된 실시 예에서, 새로운 분기 레코드(레벨2 분기 목적지 버퍼 응답(S206)으로부터의)는 결과적으로 레벨1 분기 목적지 버퍼에 현재 저장된 오래된 분기 레코드의 이탈일 것이다. 동작(S232)은 이러한 오래된 분기 레코드가 레벨2 분기 목적지 버퍼에 다시 쓰여질 수 있음을 도시한다. 상술한 바와 같이, 다양한 실시 예들에서, 동작(S232)는 오래된 분기 레코드에 바이어스 가중치 필드 및/또는 순차적 프리페치 힌트를 쓰는 것을 포함할 수 있다. 도시된 실시 예에서, 동작(S232)은 도시된 바와 같이 클록 사이클(P6)에서 발생한다. 그라나, 상기의 설명은 개시된 주제에 대한 단지 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
도시된 실시 예에서, 클록 사이클(P5)에서, 동작(S208)은 분기 예측이 발생할 수 있음을 보여준다. 다양한 실시 예들에서, 이러한 분기 예측은 레벨2 분기 목적지 응답(S206)을 통해 리턴되는 분기 레코드 내에 저장된 바이어스 가중치 필드에 의해 도움을 받을 수 있다. 상술한 바와 같이, 분기 예측 회로는 또한 목적지 또는 순차적 메모리 어드레스를 결정하는 책임이 있을 수 있다. 다양한 실시 예들에서, 목적지 또는 순차적 메모리 어드레스는 레벨2 분기 목적지 버퍼 응답(S206)을 통해 리턴되는 분기 레코드 내에 저장될 수 있다.
클록 사이클(P6)에서, 분기 예측기는 두 개의 동작들을 시작할 수 있다. 첫 번째 동작은 비순차적 레벨1 캐시 접근(S262)을 포함할 수 있다. 다양한 실시 예들에서, 비순차적 레벨1 캐시 접근(S262)은 분기 명령어(레벨1 캐시 접근(S252)로부터의)의 목적지 또는 비순차적 메모리 어드레스가 레벨1 캐시 내에 있는지 여부를 확인하는 것을 포함할 수 있다. 두 번째 동작은 비순차적 레벨1 분기 목적지 버퍼 접근(S242)을 포함할 수 있다. 다양한 실시 예들에서, 비순차적 레벨1 분기 목적지 버퍼 접근(S242)은 목적지 또는 비순차적 메모리 어드레스와 연관된 분기 레코드가 레벨1 분기 목적지 버퍼 내에 있는지 여부를 확인하는 것을 포함할 수 있다. 도시된 실시 예에서, 이러한 요청들 모두는 캐시/분기 목적지 버퍼 미스들을 야기하는 것으로 가정될 것이다. 상기의 설명은 개시된 주제에 대한 단지 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
이러한 두 번째 캐시 미스의 결과로서, 클록 사이클(P7)에서, 비순차적 레벨2 캐시 요청(S264)은 비순차적 레벨1 캐시 접근(S262)에 의해 요청된 명령어를 위해 레벨2 캐시에서 만들어질 것이다. 다시 한번, 도시된 실시 예에서, 이러한 레벨2 캐시 요청(S264)은 완료되기 위해 7개의 사이클들이 소요될 것이다. 도시된 실시 예에서, 이것은 클록 사이클(P9+5 또는 P14, 명시적으로 도시되지 않음)에서 발생하는 비순차적 레벨2 캐시 응답(S266)으로서 도시되었다. 상기의 설명은 개시된 주제에 대한 단지 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
이러한 두 번째 분기 목적지 미스의 결과로서, 또한 클록 사이클(P7)에서, 비순차적 레벨2 분기 목적지 버퍼 요청(S244)은 비순차적 레벨1 캐시 접근(S262)에 의해 요청된 명령어와 연관된 분기 레코드를 위해 분리된 레벨2 분기 목적지 버퍼에서 만들어질 것이다. 도시된 실시 예에서, 이러한 비순차적 레벨2 분기 목적지 버퍼 요청(S244)은 완료되기 위해 단지 2개의 사이클들이 소요될 것이며 그리고 비순차적 레벨2 분기 목적지 버퍼 응답(S246)과 함께 클록 사이클(P9)에서 완료될 것이다. 상기의 설명은 개시된 주제에 대한 단지 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
도시된 실시 예에서, 또한 클록 사이클(P9)에서 첫 번째 레벨2 캐시 요청(S254)이 요청된 명령어와 함께 리턴되는 레벨2 캐시 응답(S256)으로서 완료될 것이다. 상기의 설명은 개시된 주제에 대한 단지 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
상술한 바와 같이, 통상적인 시스템들에서 첫 번째 요청된 명령어가 리턴되면 그 명령어 및 그것의 연관 분기 레코드가 검사될 것이며, 그리고 분기 예측 등을 위해 사용될 것이다. 이와 같은 실시 예에서, 동작들(S208, S242, S244, S262, S264, 및/또는 S214)은 클록 사이클(P9) 이후에 일어날 것이다. 일부 실시 예들에서, 동작(S214)은 프리페치 힌트의 사용 없이 클록 사이클(P3 또는 P4)에서 일어날 것이다.
그러나, 도시된 실시 예에서, 레벨2 분기 목적지 버퍼 응답(S206)이 통상적인 경우보다 훨씬 더 빠르게 일어날 것이기 때문에, 동작들(S208, S242, S244, 및/또는 S212 및 S214)은 클록 사이클(P4)인 순간 시작될 것이다. 이것은 통상적인 시스템이 이용가능한 다음 명령어를 가지기 전에(예컨대, 클록 사이클 301 대(versus) 클록 사이클 309) 비순차적 레벨2 캐시 요청(S264)에서 요청된 명령어들이 8개의 사이클(또는 도 2의 클록 사이클 카운트가 단지 예시적인 것처럼, 실시 예에 의존하는 비슷한 숫자로)까지 이용할 수 있다. 순차적 레벨2 캐시 요청(S214)의 속도가 개선되는 반면에, 도시된 실시 예는 프리페치의 정확도가 통상적인 시스템과 비교하여 개선될 수 있다. 상기의 설명은 개시된 주제에 대한 단지 설명적인 예시들에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
상술한 바와 같이, 도시된 실시 예의 레이턴시들 및 클록 사이클 타이밍들은 개시된 주제에 대한 단지 예시들이며 여기에 제한되는 것은 아니다. 다양한 실시 예들에서, 다른 레이턴시들, 타이밍들, 및 추가적인 이벤트들(예컨대, 레벨2 캐시 미스, 미스 또는 필 버퍼(fill buffer) 때문에 초래되는 지연 등)이 포함되거나 또는 존재할 수 있으며, 그리고 그것들은 개시된 주제의 범위 내에 있다.
도 3은 개시된 주제에 따른 테크닉의 예시적인 실시 예의 흐름도이다. 다양한 실시 예들에서, 테크닉은 도 1 또는 도 5의 시스템들과 같은 시스템들에 의해 사용될 수 있다. 하지만, 상기의 설명은 개시된 주제에 대한 단지 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다. 개시된 주제는 테크닉에 의해 도시된 동작들의 순서 또는 숫자로 제한되는 것이 아닌 것으로 이해되어야 한다.
일 실시 예에서, 블록(S302)은 상술한 바와 같이, 명령어 페치 커맨드가 수신될 수 있음을 도시한다. 일 실시 예에서, 블록들(S350, S310)은 레벨1 캐시와 레벨1 분기 목적지 버퍼 모두가 원하는(desired) 명령어(및 명령어의 연관된 분기 레코드)가 레벨1 메모리들에 포함되어 있는지 여부를 결정하기 위해 확인될 수 있음을 도시한다.
일 실시 예에서, 블록(S351)은 만약 요청된 명령어가 레벨1 캐시에 있다면(캐시 히트(hit)), 그 명령어가 레벨1 캐시로부터 페치될 수 있음을 도시한다. 그러나, 블록(S352)은 본 명세서에서 더 자세하게 논의되는 경우인 캐시 미스가 발생하는 것을 보여준다. 일 실시 예에서, 블록(S352)은 명령어에 대한 미스 요청이 레벨2 캐시에서 발생할 수 있음을 도시한다.
일 실시 예에서, 블록(S354)은 레벨2 캐시가 원하는 명령어가 레벨2 캐시에 있는지 또는 레벨2 캐시에 의해 저장되어 있는지 여부를 결정하기 위해 확인될 수 있음을 도시한다. 일 실시 예에서, 블록(S356)은 만약 요청된 명령어가 레벨2 캐시에 있다면(캐시 히트), 그 명령어는 레벨2 캐시로부터 페치되고 그리고 레벨1 캐시로 공급될 수 있음을 도시한다. 일 실시 예에서, 블록(S358)은 레벨2 캐시 미스가 레벨2 캐시 미스가 발생하고 그리고 원하는 명령어가 메모리 시스템의 더 낮은 또는 더 느린 티어(예컨대, 레벨2 캐시, 메인 메모리 등)로부터 페치될 수 있음을 도시한다. 상기의 설명은 개시된 주제에 대한 단지 몇몇 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
일 실시 예에서, 블록(S330)은 만약 요청된 분기 레코드가 레벨1 분기 목적지 버퍼에 있다면(분기 목적지 히트), 분기 레코드는 레벨1 분기 목적지 버퍼로부터 페치될 수 있음을 도시한다. 분기 레코드는 다음의 프리페치된 명령어(예컨대, 비순차적 명령어 등)를 예측하기 위해 사용될 수 있다. 이러한 예측된 비순차적 명령어는 상술한 방법과 유사한 방법으로 프리페치될 수 있다. 도시된 실시 예에서, 이것은 새로운 비순차적 명령어 페치 요청과 함께 동작(S302)으로 되돌아가는 것과 도 3의 테크닉을 다른 명령어와 함께 다시 시작하는 것을 포함한다.
일 실시 예에서, 블록(S312)은 만약 요청된 분기 레코드가 레벨1 분기 목적지 버퍼에 있지 않으면(분기 목적지 버퍼 미스), 분기 레코드가 상술한 바와 같이, 레벨2 분기 목적지 버퍼로부터 페치될 수 있음을 도시한다. 일 실시 예에서, 블록(S314)은 레벨2 분기 목적지 버퍼가 요청된 분기 레코드에 대해 검색될 수 있음을 도시한다. 만약 요청된 분기 레코드가 레벨2 분기 목적지 버퍼에 있지 않으면, 일부 다른 동작들을 도시하는 동작(S399)이 취해질 것이다. 다양한 실시 예들에서, 다른 동작은 메모리 시스템(예컨대, 레벨3 캐시, 레벨3 분기 목적지 버퍼, 메인 메모리, 등)의 더 낮은 또는 더 느린 티어로부터 분기 레코드를 검색하는 것을 포함하거나, 또는 동작은 그와 같은 분기 레코드가 존재하지 않음을 레벨1 분기 목적지 버퍼로 보고하는 것을 포함할 수 있다. 상기의 설명은 개시된 주제에 대한 단지 몇몇 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
일 실시 예에서, 블록(S316)은 요청된 분기 레코드가 레벨2 분기 목적지 버퍼 내에 존재한다면, 요청된 분기 레코드가 레벨2 분기 목적지 버퍼에서 레벨1 분기 목적지 버퍼로 상술한 바와 같이, 순차적으로 로드될 수 있음을 도시한다. 다양한 실시 예들에서, 레벨1 분기 목적지 버퍼에서 획득 가능하게 되는 분기 레코드에 따라 하나 이상의 일들이 발생할 수 있다. 일 실시 예에서, 동작(S330)은 비순차적 명령어가 상술한 바와 같이, 결정되고 그리고 페치되는 일이 발생할 수 있다.
일 실시 예에서, 동작(S318)은 새로운 분기 레코드(블록(S316)으로부터의)가 또 다른 메모리 어드레스와 연관된 존재하거나 또는 오래된 분기 레코드를 대체할지 여부에 대한 결정이 만들어지는 것을 도시한다. 만약 그렇다면, 일 실시 예에서, 블록(S320)은 오래된 분기 레코드가 이탈되는 것을 도시한다. 다양한 실시 예들에서, 그와 같은 동작이 있기 전에, 분기 바이어스 및/또는 순차적 프리페치 힌트가 상술한 바와 같이, 오래된 분기 레코드에 저장될 수 있다. 일 실시 예에서, 만약 오래된 분기 레코드가 이탈되지 않는다면, 다른 동작들(예컨대, 동작이 전혀 없는)을 도시하는 블록(S399)이 발생될 것이다. 상기의 설명은 개시된 주제에 대한 단지 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
일 실시 예에서, 블록(S322)은 만약 순차적 명령어를 프리페치하는 것이 유용하거나 또는 원하는 것일 가능성이 있다면, 결정이 순차적 프리페치 힌트에 기초하여 적어도 부분적으로 만들어질 수 있다. 상술한 바와 같이, 일부 실시 예들에서, 이러한 확인은 수행되지 않을 수 있고 순차적 명령어가 항상 프리페치될 수 있다. 일 실시 예에서, 블록(S324)은 만약 힌트가 순차적 명령어가 유용할 수 있음을 나타낸다면, 순차적 명령어가 상술한 바와 같이, 프리페치될 수 있음을 도시한다.
다양한 실시 예들에서, 이것은 상술한 바와 같이, 도 3의 방법이 페치하기 위한 새로운 명령어와 함께 블록(S302)으로 리턴되는 것을 야기할 수 있다. 다른 실시 예에서, 순차적 명령어는 상술한 바와 같이, 레벨2 캐시로부터 단순하게 페치될 수 있다. 다른 실시 예에서, 만약 순차적 힌트가 그 순차적 힌트가 유용하지 않음을 나타낸다면, 일 실시 예에서, 블록(S399)은 다른 동작들(예컨대, 순차적 명령어를 프리페치하지 않는 것)이 발생할 수 있음을 도시한다. 상기의 설명은 개시된 주제에 대한 단지 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다. 또 다른 실시 예에서, 블록(S322)의 동작은 블록(S318) 이후 또는 블록(S3312)에 응답하여, 도 2의 그것과 더 유사하게 발생할 수 있다. 다시 한번, 상기의 설명은 개시된 주제에 대한 단지 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
도시된 실시 예에서, 바운드된 박스(S392)에 의해 포함된 동작들 또는 블록들은 레벨1 캐시 및 메모리 시스템의 차후(subsequent)의 티어들에 의한 명령어 페치 요청(블록(S302))에 응답하여 취해지는 동작들을 도시할 수 있다. 반대로, 바운드된 박스(S394)에 포함된 동작들 또는 블록들은 분리된 레벨2 분기 목적지 버퍼에 의해 제공된 더 빠른 검색 시간들에 응답하는 레벨1 분기 목적지 버퍼 및 시스템에 의한 명령어 페치 요청(블록(S302))에 응답하여 취해지는 동작들을 도시할 수 있다. 상기의 설명은 개시된 주제에 대한 단지 하나의 설명적인 예시에 불과하고 이에 제한되는 것이 아님을 이해할 수 있을 것이다.
도 4는 본 발명의 실시 예에 따른 시스템 또는 장치를 포함하는 정보 처리 시스템(400)의 구성을 나타낸 블록도이다. 예로서, 본 발명의 실시 예에 따른 시스템 또는 장치는 반도체 장치의 형태로 구현될 수 있다.
정보 처리 시스템(400)은 본 발명의 실시 예에 따라 구성되는 하나 이상의 장치들을 포함할 수 있다. 또는, 정보 처리 시스템(400)은 본 발명의 실시 예에 따른 작동 방법을 이용하거나 실행할 수 있다.
실시 예로서, 정보 처리 시스템(400)은, 예컨대, 랩톱, 데스크톱, 워크스테이션, 서버, 블레이드 서버, PDA(Personal Digital Assistant), 스마트폰, 태블릿, 및 다른 적절한 컴퓨터 등과 같은 컴퓨팅 장치, 또는 가상 기기 또는 그것의 가상 컴퓨팅 장치 등을 포함할 수 있다. 실시 예로서, 정보 처리 시스템(400)은 사용자에 의해 이용될 수 있다.
본 발명의 실시 예에 따른 정보 처리 시스템(400)은 중앙 처리 유닛(Central Processing Unit), 로직(Logic), 또는 프로세서(Processor; 410)를 더 포함할 수 있다. 실시 예로서, 프로세서(410)는 하나 이상의 기능 유닛 블록(Functional Unit Block)들 또는 조합 논리 블록(Combinational Logic Block; 415)들을 포함할 수 있다. 실시 예로서, 조합 논리 블록(415)은 다양한 부울 논리 연산(Boolean Logic Operation; 예컨대, NAND, NOR, NOT, XOR 등)을 위한 논리 장치, 안정화(Stabilizing) 논리 장치(예컨대, 플립플롭(Flip-flop), 래치(Latch) 등), 다른 논리 장치, 또는 그것들의 조합을 포함할 수 있다. 조합 논리 블록(415)은 단순한 또는 좀 더 복잡한 방식으로 입력 신호를 처리하여 원하는 결과를 얻도록 구성될 수 있다. 동기식의(Synchronous) 조합 논리 연산의 몇 가지 예시가 언급되었으나, 본 발명은 이 예시들로 제한되지 않는다. 본 발명의 실시 예는 비동기식의(Asynchronous) 연산, 또는 동기식의 연산 및 비동기식의 연산의 조합을 이용할 수 있다. 실시 예로서, 조합 논리 블록(415)은 복수의 CMOS(Complementary Metal Oxide Semiconductor) 트랜지스터를 포함할 수 있다. 실시 예로서, CMOS 트랜지스터들은 논리 연산을 수행하는 게이트(Gate)로 배열될 수 있다. 다만, 다른 기술들이 이용될 수 있으며, 그것들 역시 본 발명의 기술 사상의 범위에 포함된다.
본 발명의 실시 예에 따른 정보 처리 시스템(400)은 휘발성 메모리(420; 예컨대, RAM(Random Access Memory) 등)를 더 포함할 수 있다. 본 발명의 실시 예에 따른 정보 처리 시스템(400)은 불휘발성 메모리(430; 예컨대, 하드 드라이브, 광학 메모리, NAND 플래시 메모리 등)를 더 포함할 수 있다. 실시 예로서, 휘발성 메모리(420), 불휘발성 메모리(430), 또는 그것들의 조합 또는 일부는 "저장 매체"로 불릴 수 있다. 실시 예로서, 휘발성 메모리(420) 및/또는 불휘발성 메모리(430)는 반영구적인 또는 실질적으로 영구적인 형태로 데이터를 저장하도록 구성될 수 있다. 휘발성 메모리(420) 및/또는 불휘발성 메모리(430)는 도 1 내지 도 6에 대한 설명에서 언급된 본 발명의 실시 예들에 기초하여 구현될 수 있다.
실시 예로서, 정보 처리 시스템(400)은 하나 이상의 네트워크 인터페이스(440)들을 포함할 수 있다. 네트워크 인터페이스(440)는 정보 처리 시스템(400)이 통신망의 일부로서 통신망을 통해 통신하도록 할 수 있다. 예로서, 네트워크 인터페이스(440)는 IEEE 802.11g, IEEE 802.11n 등을 포함하는 Wi-Fi 규약, Wireless-MAN Advanced로도 알려진 IEEE 802.16m, LTE Advanced, EDGE, HSPA+ 등을 포함하는 셀 통신 규약, 이더넷으로도 알려진 IEEE 802.3, Fibre Channel, Power Line communication(예컨대, HomePlug, IEEE 1901 등) 등을 포함하는 유선 통신 규약 등을 이용할 수 있다. 다만, 이들은 단지 몇 가지의 예시들일 뿐이고, 본 발명을 제한하기 위한 것은 아니다.
본 발명의 실시 예에 따른 정보 처리 시스템(400)은 유저 인터페이스(450; 예컨대, 디스플레이 어댑터(Display Adapter), 햅틱(Haptic) 인터페이스, 휴먼 인터페이스 장치 등)를 더 포함할 수 있다. 실시 예로서, 유저 인터페이스(450)는 사용자로부터 입력을 제공받거나 사용자에게 출력을 제공하도록 구성될 수 있다. 사용자와의 상호 작용을 위해, 다른 종류의 장치들이 이용될 수 있다. 예로서, 사용자에게 제공되는 피드백(Feedback)은 감각적인 피드백(예컨대, 시각적인 피드백, 청각적인 피드백, 또는 촉각적인 피드백)의 형태를 가질 수 있다. 그리고, 사용자로부터의 입력은 음향, 음성, 또는 촉각을 포함하여 어떠한 형태로든 제공될 수 있다.
실시 예로서, 정보 처리 시스템(400)은 하나 이상의 기타 하드웨어 장치들(760; 예컨대, 디스플레이 또는 모니터, 키보드, 마우스, 카메라, 지문 판독기, 비디오 처리기 등)을 포함할 수 있다. 다만, 이들은 단지 몇 가지의 예시들일 뿐이고, 본 발명을 제한하기 위한 것은 아니다.
본 발명의 실시 예에 따른 정보 처리 시스템(400)은 하나 이상의 시스템 버스(405)들을 더 포함할 수 있다. 실시 예로서, 시스템 버스(405)는 프로세서(410), 휘발성 메모리(420), 불휘발성 메모리(430), 네트워크 인터페이스(440), 유저 인터페이스(450), 및 기타 하드웨어 장치들(460)과 통신하도록 연결될 수 있다. 프로세서(410)에 의해 처리된 데이터 또는 불휘발성 메모리(430)의 외부로부터 입력된 데이터는 시스템 버스(405)를 통해 불휘발성 메모리(430) 또는 휘발성 메모리(420)에 저장될 수 있다.
실시 예로서, 정보 처리 시스템(400)은 하나 이상의 소프트웨어(470)들을 저장하거나 실행할 수 있다. 실시 예로서, 소프트웨어(470)는 운영 체제 및/또는 응용 프로그램을 포함할 수 있다. 실시 예로서, 운영 체제는 응용 프로그램에 하나 이상의 서비스들을 제공하고, 응용 프로그램과 정보 처리 시스템(400)의 다양한 하드웨어 장치들(예컨대, 프로세서(710), 네트워크 인터페이스(740) 등) 사이에서 중개 장치의 역할을 수행할 수 있다. 실시 예로서, 정보 처리 시스템(400)은 그 내부(예컨대, 불휘발성 메모리(430) 내부 등)에 설치되어 프로세서(410)에 의해 직접 실행되고 운영 체제와 직접 상호 작용하도록 구성되는 하나 이상의 내장 프로그램들을 포함할 수 있다. 실시 예로서, 내장 프로그램들은 미리 컴파일되어 기계로 실행 가능한 코드를 포함할 수 있다. 실시 예로서, 내장 프로그램들은 프로세서(410)에 의해 실행될 소스 코드 또는 오브젝트 코드를 실행 가능한 코드로 번역하도록 구성되는 스크립트 인터프리터(예컨대, C shell, AppleScript, AutoHotkey 등) 또는 가상 기기(예컨대, Java Virtual Machine, Microsoft Common Language Runtime 등)를 포함할 수 있다.
위에서 언급된 반도체 장치들은 다양한 패키징(Packaging) 방법을 이용하여 실장될 수 있다. 예로서, 본 발명의 실시 예에 따라 구성되는 반도체 장치들은 POP(Package On Package), BGAs(Ball Grid Arrays), CSPs(Chip Scale Packages), PLCC(Plastic Leaded Chip Carrier), PDIP(Plastic Dual In-line Package), Die in waffle pack, Die in wafer form, COB(Chip On Board), CERDIP(Ceramic Dual In-line Package), PMQFP(Plastic Metric Quad Flat Package), PQFP(Plastic Quad Flat Package), SOIC(Small Outline Package), SSOP(Shrink Small Outline Package), TSOP(Thin Small Outline Package), TQFP(Thin Quad Flat Package), SIP(System In Package), MCP(Multi-Chip Package), WFP(Wafer-level Fabricated Package), WSP(Wafer-level processed Stack Package), 또는 그 밖의 다른 패키징 방법들 중 하나 이상을 이용하여 실장될 수 있다.
본 발명의 실시 예에 따른 전자 장치 또는 시스템의 작동 방법은 입력 데이터를 처리하고 출력을 생성하여 고유의 기능을 수행하기 위해 컴퓨터 프로그램을 실행하도록 구성되는 하나 이상의 프로그램 가능한 프로세서들에 의해 수행될 수 있다. 본 발명의 실시 예에 따른 전자 장치 또는 시스템의 작동 방법은 전용 논리 회로(예컨대, FPGA(Field Programmable Gate Array), ASIC(Application Specific Integrated Chip) 등)에 의해 수행될 수 있다. 본 발명의 실시 예에 따른 전자 장치 또는 시스템은 전용 논리 회로(예컨대, FPGA, ASIC 등)로 구현될 수 있다.
실시 예로서, 컴퓨터로 읽을 수 있는 매체는 실행되었을 때 전자 장치가 본 발명의 실시 예에 따른 작동 방법의 적어도 일부분을 수행하도록 만드는 명령들을 포함할 수 있다. 실시 예로서, 컴퓨터로 읽을 수 있는 매체는 자기 매체, 광학 매체, 그 외의 다른 매체, 또는 그것들의 조합(예컨대, CD-ROM, 하드 드라이브, 읽기 전용 메모리, 플래시 드라이브 등)에 포함될 수 있다. 실시 예로서, 컴퓨터로 읽을 수 있는 매체는 유형적이고 비일시적으로 구현되는 물품일 수 있다.
각각의 개념도에 나타낸 구성은 단지 개념적인 관점에서 이해되어야 한다. 본 발명의 이해를 돕기 위해, 개념도에 나타낸 구성 요소 각각의 형태, 구조, 크기 등은 과장 또는 축소되어 표현되었다. 실제로 구현되는 구성은 각각의 개념도에 나타낸 것과 다른 물리적 형상을 가질 수 있다. 각각의 개념도는 구성 요소의 물리적 형상을 제한하기 위한 것이 아니다.
각각의 블록도에 나타낸 장치 구성은 발명의 이해를 돕기 위한 것이다. 각각의 블록은 기능에 따라 더 작은 단위의 블록들로 형성될 수 있다. 또는, 복수의 블록들은 기능에 따라 더 큰 단위의 블록을 형성할 수 있다. 즉, 본 발명의 기술 사상은 블록도에 도시된 구성에 의해 한정되지 않는다.
이상에서 본 발명에 대한 실시 예를 중심으로 본 발명이 설명되었다. 다만, 본 발명이 속하는 기술 분야의 특성상, 본 발명이 이루고자 하는 목적은 본 발명의 요지를 포함하면서도 위 실시 예들과 다른 형태로 달성될 수 있다. 따라서, 위 실시 예들은 한정적인 것이 아니라 설명적인 측면에서 이해되어야 한다. 즉, 본 발명의 요지를 포함하면서 본 발명과 같은 목적을 달성할 수 있는 기술 사상은 본 발명의 기술 사상에 포함되는 것으로 해석되어야 한다.
따라서, 본 발명의 본질적인 특성을 벗어나지 않는 범위 내에서 수정 또는 변형된 기술 사상은 본 발명이 청구하는 보호 범위에 포함되는 것이다. 또한, 본 발명의 보호 범위는 위 실시 예들로 한정되는 것이 아니다.
100: 시스템 102: 분기 예측기
104: 순차적 프리페치 유닛 106: 미스 버퍼
112: 레벨1 분기 목적지 버퍼 114: 레벨1 캐시
122: 레벨2 분기 목적지 버퍼 124: 레벨2 캐시

Claims (10)

  1. 캐시 메모리 시스템의 두 번째 티어로부터 제 1 메모리 어드레스에 저장된 명령어를 요청하는 단계;
    분기 목적지 버퍼 시스템의 두 번째 티어로부터 상기 제 1 메모리 어드레스와 관련된 분기 레코드를 요청하는 단계;
    상기 명령어를 제공받기 전에 상기 분기 레코드를 제공받는 단계; 및
    상기 명령어를 제공받기 전에, 상기 분기 레코드를 제공받으면, 비순차적 메모리 어드레스에 저장된 비순차적 명령어를 프리페치하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 비순차적 명령어를 프리페치하는 단계는:
    상기 분기 레코드로부터 상기 비순차적 메모리 어드레스를 검색하는 단계; 및
    초기 분기 예측 회로를 통해 비순차적 분기가 발생하였는지 여부를 예측하는 단계를 포함하는 방법.
  3. 제 1 항에 있어서,
    상기 명령어를 제공받기 전에, 순차적 메모리 어드레스에 저장된 순차적 명령어를 프리페치하는 단계를 더 포함하는 방법.
  4. 제 3 항에 있어서,
    상기 순차적 명령어를 프리페치하는 단계는:
    상기 순차적 명령어가 실행 유닛에 의해 접근될 가능성이 있는지 여부를 판별하기 위해 순차적 프리페치 정보를 확인하는 단계; 및
    상기 순차적 명령어가 상기 실행 유닛에 의해 접근될 가능성이 없는 경우, 상기 순차적 명령어의 요청을 보류하는 단계를 포함하는 방법.
  5. 제 3 항에 있어서,
    상기 순차적 명령어가 실행 유닛에 의해 접근되었는지 여부를 판별하는 단계; 및
    상기 제 1 메모리 어드레스와 관련된 상기 분기 레코드에 순차적 프리페치 정보를 저장하는 단계를 더 포함하는 방법.
  6. 제 5 항에 있어서,
    상기 순차적 프리페치 정보를 저장하는 단계는:
    상기 분기 레코드와 관련된 캐시 라인 태그에 상기 순차적 프리페치 정보를 저장하는 단계를 포함하는 방법.
  7. 제 1 항에 있어서,
    상기 분기 레코드를 제공받는 단계는:
    상기 분기 목적지 버퍼 시스템의 첫 번째 티어에서, 종래 분기 레코드를 상기 분기 레코드로 교체하는 단계; 및
    원하지 않는 분기 레코드에 바이어스 가중치 필드를 저장하는 단계를 포함하되,
    상기 바이어스 가중치 필드는 분기 예측 회로가 정확한 예측을 수행할 수 있도록 상기 분기 예측 회로를 학습시키기 위한 분기 예측 값을 포함하는 방법.
  8. 캐시 미스가 발생한 경우, 레벨2 캐시로부터 명령어를 요청하도록 구성되는 레벨1 캐시;
    버퍼 미스가 발생한 경우, 분리된 레벨2 분기 목적지 버퍼로부터 상기 명령어와 관련된 분기 레코드를 요청하도록 구성되는 레벨1 분기 목적지 버퍼;
    상기 명령어가 상기 레벨1 캐시로 제공되기 전에 상기 레벨1 분기 목적지 버퍼로 상기 분기 레코드를 제공하도록 구성되는 상기 분리된 레벨2 분기 목적지 버퍼; 및
    상기 명령어가 상기 레벨1 캐시로 제공되기 전에, 상기 분기 레코드가 상기 레벨1 분기 목적지 버퍼로 제공되면, 비순차적 명령어를 프리페치하도록 구성되는 분기 예측 회로를 포함하는 장치.
  9. 제 8 항에 있어서,
    상기 레벨1 분기 목적지 버퍼는, 상기 분기 레코드를 제공받으면:
    방출할 원하지 않는 분기 레코드를 판별하고;
    상기 원하지 않는 분기 레코드에 분기 바이어스를 저장하고;
    상기 분리된 레벨2 분기 목적지 버퍼에 상기 분기 바이어스와 함께 상기 원하지 않는 분기 레코드를 저장하도록 구성되고,
    상기 분기 바이어스는 상기 분기 예측 회로에 의해 상기 원하지 않는 분기 레코드와 관련된 분기 명령어에 할당되는 분기 예측 가중치를 나타내는 장치.
  10. 제 8 항에 있어서,
    상기 분기 예측 회로는, 상기 분기 레코드를 제공받으면:
    상기 분기 레코드로부터 분기 바이어스를 검색하고;
    상기 검색된 분기 바이어스의 적어도 한 부분에 기초하여 학습되도록 구성되고,
    상기 분기 바이어스는 상기 분기 예측 회로에 의해 상기 분기 레코드와 관련된 분기 명령어에 할당되었던 분기 예측 가중치를 나타내는 장치.
KR1020150034473A 2014-03-21 2015-03-12 미스 후 미스의 검색을 가속화하기 위해 레벨2 캐시에서 레벨2 분기 목적지 버퍼를 분리하는 장치 및 그 방법 KR20150110337A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201461969075P 2014-03-21 2014-03-21
US61/969,075 2014-03-21
US14/463,638 2014-08-19
US14/463,638 US20150268961A1 (en) 2014-03-21 2014-08-19 Decoupling l2 btb from l2 cache to accelerate search for miss after miss

Publications (1)

Publication Number Publication Date
KR20150110337A true KR20150110337A (ko) 2015-10-02

Family

ID=54142189

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150034473A KR20150110337A (ko) 2014-03-21 2015-03-12 미스 후 미스의 검색을 가속화하기 위해 레벨2 캐시에서 레벨2 분기 목적지 버퍼를 분리하는 장치 및 그 방법

Country Status (2)

Country Link
US (1) US20150268961A1 (ko)
KR (1) KR20150110337A (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2996034B1 (en) * 2014-09-11 2018-08-15 Nxp B.V. Execution flow protection in microcontrollers
GB201701841D0 (en) * 2017-02-03 2017-03-22 Univ Edinburgh Branch target buffer for a data processing apparatus
US11106466B2 (en) 2018-06-18 2021-08-31 International Business Machines Corporation Decoupling of conditional branches
US11550709B2 (en) * 2019-04-03 2023-01-10 Macronix International Co., Ltd. Memory device and wear leveling method for the same
US11762660B2 (en) * 2020-06-23 2023-09-19 Ampere Computing Llc Virtual 3-way decoupled prediction and fetch
US11687343B2 (en) * 2020-09-29 2023-06-27 Arm Limited Data processing apparatus and method for providing candidate prediction entries
CN112579175B (zh) * 2020-12-14 2023-03-31 成都海光微电子技术有限公司 分支预测方法、分支预测装置和处理器核
US20240095034A1 (en) * 2022-09-21 2024-03-21 Arm Limited Selective control flow predictor insertion

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4679141A (en) * 1985-04-29 1987-07-07 International Business Machines Corporation Pageable branch history table
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
EP0798632B1 (en) * 1996-03-25 2002-09-11 Sun Microsystems, Inc. Branch prediction method in a multi-level cache system
US6553488B2 (en) * 1998-09-08 2003-04-22 Intel Corporation Method and apparatus for branch prediction using first and second level branch prediction tables
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
US7024545B1 (en) * 2001-07-24 2006-04-04 Advanced Micro Devices, Inc. Hybrid branch prediction device with two levels of branch prediction cache
US7493480B2 (en) * 2002-07-18 2009-02-17 International Business Machines Corporation Method and apparatus for prefetching branch history information
US6978361B2 (en) * 2002-09-20 2005-12-20 International Business Machines Corporation Effectively infinite branch prediction table mechanism
US7278012B2 (en) * 2005-06-02 2007-10-02 Qualcomm Incorporated Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions
US7783870B2 (en) * 2007-08-13 2010-08-24 International Business Machines Corporation Branch target address cache
US9280351B2 (en) * 2012-06-15 2016-03-08 International Business Machines Corporation Second-level branch target buffer bulk transfer filtering
US9430241B2 (en) * 2012-06-15 2016-08-30 International Business Machines Corporation Semi-exclusive second-level branch target buffer
US9298465B2 (en) * 2012-06-15 2016-03-29 International Business Machines Corporation Asynchronous lookahead hierarchical branch prediction

Also Published As

Publication number Publication date
US20150268961A1 (en) 2015-09-24

Similar Documents

Publication Publication Date Title
KR20150110337A (ko) 미스 후 미스의 검색을 가속화하기 위해 레벨2 캐시에서 레벨2 분기 목적지 버퍼를 분리하는 장치 및 그 방법
JP5520779B2 (ja) 分岐誤予測バッファを用いるためのシステム及び方法
KR102424121B1 (ko) 프리-페치 유닛, 그것을 포함하는 장치 및 그것의 동작 방법
US8683129B2 (en) Using speculative cache requests to reduce cache miss delays
US8291202B2 (en) Apparatus and methods for speculative interrupt vector prefetching
US10956328B2 (en) Selective downstream cache processing for data access
TW201443645A (zh) 用於減少由資料預擷取引起的快取汙染之方法及裝置
TWI723072B (zh) 由可獲得預取精確度所動態控制的指令預取器及指令預取方法
US20140115294A1 (en) Memory page management
KR20150079429A (ko) 캐시 미시들에 대한 프로세서 읽기 후 쓰기 해저드를 다루기 위한 장치 및 그것의 동작 방법
CN104978284A (zh) 处理器子程序高速缓冲存储器
US9384131B2 (en) Systems and methods for accessing cache memory
WO2022237585A1 (zh) 处理方法及装置、处理器、电子设备及存储介质
KR20210000271A (ko) 낮은 수준의 독점적 캐시 계층 구조에서의 프리페치
CN111065998B (zh) 用于预执行数据相依的负载的切片结构
KR102635965B1 (ko) 마이크로 프로세서의 프론트 엔드 및 이를 이용한 컴퓨터 구현 방법
CN110096129A (zh) 计算设备
US20180253547A1 (en) Control flow integrity
CA2725906C (en) System and method for processing interrupts in a computing system
US20240231887A1 (en) Processing method and apparatus, processor, electronic device, and storage medium
CN117130666A (zh) 配置方法、分支预测器、指令识别器和电子设备