KR20220110219A - 프리페치 레벨 강등 - Google Patents

프리페치 레벨 강등 Download PDF

Info

Publication number
KR20220110219A
KR20220110219A KR1020227020132A KR20227020132A KR20220110219A KR 20220110219 A KR20220110219 A KR 20220110219A KR 1020227020132 A KR1020227020132 A KR 1020227020132A KR 20227020132 A KR20227020132 A KR 20227020132A KR 20220110219 A KR20220110219 A KR 20220110219A
Authority
KR
South Korea
Prior art keywords
cache
prefetch
priority
level
request
Prior art date
Application number
KR1020227020132A
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 KR20220110219A publication Critical patent/KR20220110219A/ko

Links

Images

Classifications

    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/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/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • 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/602Details relating to cache prefetching
    • 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/6026Prefetching based on access pattern detection, e.g. stride based prefetch

Landscapes

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

Abstract

방법은 타겟 캐시에 대한 캐시 성능 메트릭들의 제1 세트를 기록하는 단계, 타겟 캐시에서 수신된 복수의 프리페치 요청들의 각각의 프리페치 요청에 대해, 캐시 성능 메트릭들의 제1 세트에 기초하여 타겟 캐시에 대한 임계 우선순위 레벨에 대한 프리페치 요청의 상대적 우선순위를 결정하는 단계, 복수의 프리페치 요청들의 각각의 낮은 우선순위 프리페치 요청에 대해, 낮은 우선순위 프리페치 요청의 우선순위가 타겟 캐시에 대한 임계 우선순위 레벨보다 작다는 결정에 응답하여 낮은 우선순위 프리페치 요청을 제1 하위 레벨 캐시로 리디렉션하는 단계, 및 복수의 프리페치 요청들의 각각의 높은 우선순위 프리페치 요청에 대해, 높은 우선순위 프리페치 요청의 우선순위가 타겟 캐시에 대한 임계 우선순위 레벨보다 크다는 결정에 응답하여 높은 우선순위 프리페치 요청에 따라 타겟 캐시에 프리페치 데이터를 저장하는 단계를 포함한다.

Description

프리페치 레벨 강등
현대 컴퓨팅 시스템의 프로세서는 일반적으로 프로세서에서 사용하는 명령어나 기타 데이터를 저장하는 메인 메모리보다 훨씬 빠르게 동작할 수 있다. 따라서 많은 경우에 명령어나 데이터에 대한 빠른 액세스를 제공하기 위해 더 작고 빠른 캐시 메모리가 메인 메모리와 함께 사용된다. 캐시에 대한 데이터의 프리페칭은 데이터가 실제로 필요하기 전에 프로세서가 데이터를 캐시에 저장하도록 요청할 때 발생한다. 그 후 데이터가 필요할 때 메인 메모리로부터 데이터를 요청하는 추가 레이턴시 없이 캐시에서 데이터를 검색할 수 있다.
대부분의 프로그램은 순차적으로 실행되거나 다른 규칙적인 실행 패턴을 나타내기 때문에, 명령어 또는 기타 데이터는 프로그램 순서로 또는 메모리 액세스 스트림에서 식별된 다른 패턴에 따라 페칭될 수 있다. 그러나 잘못된 데이터를 페칭하거나 부적절한 시간에 데이터를 페칭하면 프리페칭 구현에 의해 제공되는 전반적인 이점이 줄어들 수 있다.
본 개시는 첨부 도면들의 도면에서 제한이 아니라 예로서 예시된다.
도 1은 일 실시예에 따른 컴퓨팅 시스템을 도시한다.
도 2는 일 실시예에 따른 컴퓨팅 시스템의 메모리 계층을 도시한다.
도 3은 일 실시예에 따른 캐시의 컴포넌트를 도시한다.
도 4는 일 실시예에 따른 캐시 태그들에 저장된 정보를 도시한다.
도 5는 일 실시예에 따른 캐시 계층에서 프리페치들의 강등을 도시한다.
도 6은 일 실시예에 따른 프리페칭 프로세스를 예시하는 흐름도이다.
다음 설명은 실시예에 대한 양호한 이해를 제공하기 위해 특정 시스템, 컴포넌트, 방법 등의 예와 같은 수많은 특정 세부사항을 설명한다. 그러나, 적어도 일부 실시예는 이러한 특정 세부사항 없이 실시될 수 있다는 것이 당업자에게 명백할 것이다. 다른 예에서, 잘 알려진 컴포넌트 또는 방법은 실시예를 불필요하게 모호하게 하는 것을 피하기 위해 상세하게 설명되지 않거나 간단한 블록도 형식으로 제공된다. 따라서, 설명된 특정 세부사항은 단지 예시일 뿐이다. 특정 구현예는 이러한 예시적인 세부사항과 다를 수 있으며 여전히 실시예의 범위 내에 있는 것으로 간주된다.
다수의 레벨의 캐시(예를 들어, L1, L2 및 L3)를 포함하는 컴퓨팅 시스템에서, 데이터 또는 명령어의 프리페치들은 사용자 어플리케이션과 같은 하드웨어 프리페처 또는 소프트웨어에 의해 캐시 레벨 중 특정 레벨을 타겟으로 한다. 예를 들어, 다수의 레벨의 캐시를 포함하는 컴퓨팅 시스템은 메모리 액세스 스트림을 모니터링하고 메인 메모리에서 관련 캐시 레벨 또는 하위 레벨(더 높은 번호) 캐시로 가져올 데이터를 결정하는 각 캐시 레벨에 대한 하드웨어 프리페처를 또한 포함한다. 또한, 주어진 캐시 레벨을 타겟으로 하는 명령에서 프리페치들이 생성될 수 있으며(예를 들어, x86 명령어 세트에 제공된 바와 같이); 이러한 명령어는 런타임에 어떤 항목을 미리 가져와야 하는지 예측하기 위해 경험적 방법을 사용하는 컴파일러에 의해 생성된다. 따라서 하드웨어 및 소프트웨어 프리페치 메커니즘은 모두 타겟 캐시의 리소스 가용성을 고려하지 않고 선택된 특정 레벨의 캐시를 타겟으로 한다.
일부 경우에는 타겟 캐시 레벨의 리소스가 과도하게 사용되어 프리페치가 더 낮은 캐시 레벨로 더 적절하게 타겟팅된다. 또한, 하드웨어 또는 소프트웨어 프리페처가 타겟으로 하는 캐시 레벨로 프리페치를 한다고 해서 항상 낮은 레벨의 캐시 용량이 소모되는 레이턴시가 가장 짧은 것은 아니며; 더 낮은 수준(즉, 더 높은 번호)으로 프리페칭하면 경우에 따라 용량/레이턴시에 더 나은 영향을 미칠 수 있으며, 특히 상당한 수의 프리페치들이 부정확하거나 너무 일찍 수행되는 경우에 그렇다. 타겟 캐시 레벨의 캐시 라인 용량 및 리소스 가용성에 대한 증가된 압력에 기인하여 부적절하게 타겟화된 캐시 레벨로 발송된 프리페치는 프리페칭된 캐시 라인 또는 해당 레벨의 다른 캐시 라인(예를 들어, 조기 또는 부정확한 프리페치로 인해 제거된 캐시 라인)에 대한 지연을 증가시킬 수 있다.
일 실시예에서, 캐시 계층의 각 레벨은 프리페치를 더 낮은(즉, 더 높게 넘버링된 및 더 높은 용량의) 캐시 레벨로 강등시키기 위한 로직을 갖는 캐시 제어기를 포함한다. 예를 들어, 초기에 L2 캐시를 타겟으로 하는 프리페치는 특정 조건이 충족될 때 L3 캐시로 강등되어 프리페치에 초기 타겟 L2 캐시의 기존 데이터보다 낮은 우선순위를 부여해야 함을 표시한다.
일 실시예에서, 타겟 캐시 레벨에 대한 캐시 제어기는 타겟 캐시의 미스 요청 버퍼 및/또는 희생 버퍼가 가득 찼거나 거의 가득 찬 경우, 또는 특정 캐시 인덱스에 대한 미해결 미스들의 수가 임계 수를 초과하는 경우(캐시 미스가 캐시 태그 자체에 의해 추적되는 구현예에서) 프리페치를 더 낮은 캐시 레벨로 강등시킨다.
일 실시예에서, 캐시 제어기는 이전에 프리페칭된 데이터 또는 명령어의 요구 동작에 의한 사용량에 기초하여 프리페치 사용량 메트릭을 추적한다. 이러한 프리페치 메트릭을 기반으로 이전 프리페치가 부정확하거나(즉, 요청되기 전에 캐시에서 제거됨) 시기 적절하지 않은 것으로(즉, 프리페칭된 정보가 너무 늦게 요청됨) 결정하면, 캐시 제어기는 해당 타겟 캐시 레벨로 들어오는 일부 또는 모든 프리페치들의 우선순위를 낮춘다. 따라서 우선순위가 낮은 프리페치는 타겟 캐시에서 우선순위가 높은 캐시 라인의 용량 축출을 야기하지 않는다.
일 실시예에서, 캐시 제어기는 캐시 교체 정책에 따라 높은 우선순위 캐시 라인을 식별한다. 예를 들어, 높은 우선순위 캐시 라인은 자주 재사용되거나 명령어 페치, TLB(translation lookaside buffer) 가져오기, 중요 경로에 있는 로드/저장 등과 같은 다른 것보다 더 중요한 동작에서 재사용된다. 높은 우선순위 캐시 라인의 비율이 임계값을 초과하는 경우 프리페치를 다음 하위 레벨의 캐시로 강등하여 우선순위가 높은 '핫(hot)' 캐시 라인이 타겟 캐시에서 방해받지 않고 유지된다.
도 1은 프리페치 강등 메커니즘을 구현하는 컴퓨팅 시스템(100)의 실시예를 도시한다. 일반적으로, 컴퓨팅 시스템(100)은 랩탑 또는 데스크탑 컴퓨터, 모바일 디바이스, 서버, 네트워크 스위치 또는 라우터 등을 포함하지만 이에 제한되지 않는 다수의 상이한 유형의 디바이스들 중 임의의 것으로 구현된다. 컴퓨팅 시스템(100)은 버스(101)를 통해 서로 통신하는 컴포넌트들(102-108)를 포함하는 다수의 하드웨어 리소스들을 포함한다. 컴퓨팅 시스템(100)에서, 컴포넌트들(102-108) 각각은 버스(101)를 통해 직접적으로 또는 다른 컴포넌트들(102-108) 중 하나 이상을 통해 다른 컴포넌트들(102-108) 중 임의의 것과 통신할 수 있다. 컴퓨팅 시스템(100)의 컴포넌트들(101-108)은 랩톱 또는 데스크탑 섀시 또는 휴대전화 케이스와 같은 단일 물리적 인클로저 내에 포함된다. 대안적인 실시예에서, 컴퓨팅 시스템(100)의 컴포넌트들 중 일부는 전체 컴퓨팅 시스템(100)이 단일 물리적 인클로저 내에 상주하지 않도록 외부 주변 디바이스로서 구현된다.
컴퓨팅 시스템(100)은 또한 사용자로부터 정보를 수신하거나 사용자에게 정보를 제공하기 위한 사용자 인터페이스 디바이스를 포함한다. 구체적으로, 컴퓨팅 시스템(100)은 키보드, 마우스, 터치 스크린, 또는 사용자로부터 정보를 수신하기 위한 다른 디바이스와 같은 입력 디바이스(102)를 포함한다. 컴퓨팅 시스템(100)은 모니터, 발광 다이오드(LED) 디스플레이, 액정 디스플레이, 또는 다른 출력 디바이스와 같은 디스플레이(105)를 통해 사용자에게 정보를 표시한다.
컴퓨팅 시스템(100)은 유선 또는 무선 네트워크를 통해 데이터를 송신 및 수신하기 위한 네트워크 어댑터(107)를 추가로 포함한다. 컴퓨팅 시스템(100)은 또한 하나 이상의 주변 디바이스들(108)을 포함한다. 주변 디바이스들(108)은 대용량 저장 디바이스, 위치 검출 디바이스, 센서, 입력 디바이스, 또는 컴퓨팅 시스템(100)에 의해 사용되는 다른 유형의 디바이스를 포함할 수 있다. 메모리 시스템(106)은 랜덤 액세스 메모리(RAM) 모듈, 판독 전용 메모리(ROM) 모듈, 하드 디스크, 및 기타 비일시적 컴퓨터 판독 가능 매체와 같은 컴퓨팅 시스템(100)에 의해 사용되는 메모리 디바이스를 포함한다.
컴퓨팅 시스템(100)은 처리 유닛(104)을 포함한다. 일 실시예에서, 처리 유닛(104)은 공통 집적 회로 기판 상에 상주하는 다수의 처리 코어들을 포함한다. 처리 유닛(104)은 메모리 시스템(106)에 저장된 명령어들(109)을 수신하고 실행한다. 명령어들(109)의 적어도 일부는 처리 유닛(104)에 의해 실행가능한 명령어를 포함하는 어플리케이션을 정의한다.
컴퓨팅 시스템(100)의 일부 실시예는 도 1에 도시된 실시예보다 더 적거나 더 많은 컴포넌트를 포함할 수 있다. 예를 들어, 특정 실시예는 디스플레이(105) 또는 입력 디바이스(102) 없이 구현된다. 다른 실시예는 하나 이상의 특정 컴포넌트를 갖는다. 예를 들어, 컴퓨팅 시스템(100)의 실시예는 다중 처리 유닛들(104), 버스들(101), 네트워크 어댑터들(107), 메모리 시스템들(106) 등을 가질 수 있다.
도 2는 일 실시예에 따른 처리 유닛의 캐시 계층을 도시한다. 처리 유닛(104)은 L1 캐시(201), L2 캐시(202), 및 L3 캐시(203)를 포함하는 캐시 계층을 포함한다. 프로세서 코어(230)와 같은 다른 디바이스는 캐시들(201-203)을 각각 제어하는 캐시 제어기들(211-213)을 통해 이러한 캐시들(201-203)과 인터페이싱한다. 프로세서 코어(230)는 명령어(109)를 실행함으로써 운영 체제(231) 및 사용자 어플리케이션(232)을 실행한다. 캐시 계층에서 가장 높은 L1 캐시(201)는 계층에서 가장 빠르고 가장 작은 용량의 캐시이다. 연속적인 하위 캐시 L2(202) 및 L3(203)은 점점 더 느려지고(즉, 더 높은 레이턴시) 및/또는 용량이 더 크다.
하드웨어 프리페처들(221-223)은 각각 캐시 레벨들(201-203)과 연관되고, 연관된 캐시 레벨 또는 연관된 캐시 레벨보다 낮은 캐시 레벨에 대한 프리페치 요청들을 생성한다. 프리페치 요청들은 요구되기 전에 어플리케이션(232)에 의해 사용될 데이터 또는 명령어로 타겟 캐시를 로딩함으로써 어플리케이션(232)의 실행을 지원한다. 따라서 하드웨어 프리페처들(221-223)은 어플리케이션(232)에 대한 분기 예측(branch prediction)을 수행함으로써 및/또는 어플리케이션(232)에 의한 이전 메모리 액세스 패턴에 기초하여 어플리케이션(232)에 의한 미래 메모리 액세스를 예측함으로써 프리페칭할 데이터 또는 명령어를 결정한다. 프리페치 요청들은 또한 어플리케이션(232)의 명령어를 실행하는 프로세서 코어(230)에 의해 생성된다. 예를 들어, 어플리케이션(232) 명령어는 특정 지정된 캐시 레벨로 특정 데이터 또는 명령어를 프리페칭하기 위한 명시적 명령어를 포함할 수 있다.
도 3은 일 실시예에 따른 캐시(300)의 회로 컴포넌트들을 도시한다. 캐시들(201-203) 각각은 캐시(300)와 유사한 방식으로 유사한 컴포넌트들 및 기능들을 포함한다. 캐시(300)는 캐시 라인들의 어레이를 저장하는 메모리(310)를 포함하고, 각각은 하나 이상의 태그들(311)을 캐시 라인의 데이터(312)의 일부와 연관시킨다. 태그들(311)은 데이터가 프리페치에서 나온 것인지 여부, 프리페치의 소스(예를 들어, 하드웨어 프리페처, 어플리케이션 등), 데이터의 액세스 빈도, 데이터를 사용하는 작업 유형 등과 같은 그들의 연관된 캐시 라인의 데이터에 대한 정보를 포함한다. 캐시 제어기(320)는 메모리(310)에서 태그들(311) 및 데이터(312)를 판독하고 기록하기 위한 판독/기록 로직(326)을 포함한다.
캐시(300)는 캐시(300)에 대한 성능 메트릭들을 기록하는 프리페치 메트릭들(322), 캐시 엔트리 메트릭들(323), 및 리소스 메트릭들(324) 모듈들을 포함하는 모니터링 회로부를 포함한다. 프리페치 메트릭 모듈(322)은 태그들(311)의 정보에 기초하여 프리페치 정확도 및 적시성(timeliness)을 표시하는 메트릭을 측정한다. 일 실시예에서, 프리페치 요청이 캐시(300)에 의해 수락될 때, 제어기(320)는 캐시 라인이 사용되지 않은 프리페칭된 데이터를 포함한다는 것을 표시하는 캐시 라인과 연관된 태그를 업데이트한다(예를 들어, 비트를 어서션함으로써). 프리페칭된 데이터가 상위 레벨 캐시 또는 프로세서(230)에 의해 후속적으로 요구될 때, 태그는 데이터가 요구되었다는 사실을 반영하기 위해 업데이트된다(예를 들어, 비트를 클리어함으로써). 시간이 지남에 따라, 프리페치 메트릭 모듈(322)은 요구되기 전에 캐시(300)로부터 축출되는 미사용 프리페칭된 캐시 라인에 대한 요구 요청이 수신되는 사용된 프리페칭된 캐시 라인의 비율을 추적한다. 사용하지 않는 프리페치 비율이 높다는 것은 분기 예측이나 기타 요인으로 인해 프리페치가 정확하지 않다는 것을 나타낸다.
일 실시예에서, 원래의 프리페치 요청의 소스는 또한 태그들(311)에서 추적되며; 예를 들어, 태그들(311)은 타겟 캐시의 하드웨어 프리페처, 상위 레벨 캐시의 하드웨어 프리페처 또는 어플리케이션 명령어를 실행하는 프로세서(230)로부터 프리페치 요청이 도착했는지 여부를 표시한다. 일 실시예에서, 스레드 식별자 또는 어플리케이션을 식별하는 다른 정보는 프리페치 요청을 개시한 특정 스레드 또는 프로세스를 식별하기 위해 태그에 추가된다. 일 실시예에서, 시스템(100)은 또한 상이한 프리페치 소스로서 추적되는 상이한 유형의 하드웨어 프리페처들(상이한 유형의 패턴의 관찰에 기초하여 프리페치 요청을 생성함)를 포함한다. 그 다음, 제어기(320)는 상이한 프리페치 소스들 각각으로부터 발생하는 프리페치들에 대한 프리페치 정확도 및 적시성을 독립적으로 추적할 수 있다.
프리페치 메트릭 모듈(322)은 또한 프리페칭된 데이터가 최종적으로 요구되는 때를 추적하지만, 초기에 타겟팅된 캐시 레벨보다는 더 낮은 캐시 레벨에서 추적한다. 이는 데이터가 동일한 캐시를 타겟으로 하는 다른 데이터에 비해 너무 일찍 프리페칭되었음을 표시하는 경향이 있다. 이 경우 프리페치가 처음에 하위 레벨 캐시를 타겟으로 하는 것이 계산 비용이 덜 든다. 따라서 프리페치가 정확하지 않거나 시기 적절하지 않은 경우 프리페치 요청은 해당 캐시 레벨로부터 요구될 가능성이 없는 프리페치 데이터로 초기 타겟 캐시를 오염시키는 것을 피하기 위해 다음으로 낮은 캐시 레벨로 강등된다.
캐시 엔트리 메트릭 모듈(323)은 각 캐시 라인에 대한 액세스 빈도, 캐시 라인과 연관된 동작 시간 등과 같은 메모리(310)의 엔트리들(예를 들어, 캐시 라인)에 대한 메트릭들을 기록한다. 일 실시예에서, 메트릭들은 태그들(311)에 기록된다. 캐시 엔트리 메트릭들은 캐시 엔트리들의 우선순위 레벨을 결정하는 데 사용된다. 자주 액세스되거나 더 높은 우선순위 동작(예를 들어, 명령어 페치, TLB 페치, 중요 경로에 있는 로드/저장 등)에 의해 요구되는 캐시 라인에는 요구될 가능성이 낮은 프리페치들에 비해 더 높은 우선순위가 부여된다.
리소스 메트릭 모듈(324)은 높은 캐시 미스 트래픽과 같은 캐시 리소스 과활용(over-utilization)의 표시에 대해 캐시(300)의 미스 요청 버퍼(331) 및 희생 버퍼(332)를 모니터링한다. 미스 요청 버퍼(331)는 캐시 메모리(310)로 송신될 수 있을 때까지 캐시에서 미싱된 라인들을 저장하는 반면, 희생 버퍼(332)는 캐시 미스의 결과로 캐시 메모리(310)에서 축출된 라인들을 저장한다. 따라서, 캐시(300)가 높은 미스 레이트를 경험하는 경우, 미스 요청 버퍼(331) 및 희생 버퍼(332)의 공간에 대한 요구가 증가한다. 이 경우 캐시 리소스가 과활용되고; 따라서 우선순위가 낮은 프리페치들은 계층에서 더 낮은 레벨의, 대용량 캐시로 강등된다.
결정 로직(321)은 모니터링 회로부에 의해 추적된 캐시 성능 메트릭들에 기초하여 프리페치 요청(341)이 캐시(300)에서 수락될 것인지 또는 하위 레벨 캐시로 강등될 것인지를 결정한다. 프리페치 요청(341)은 캐시 제어기(320)의 결정 로직(321)에서 수신되고, 프리페치 요청(341)을 수신한 것에 응답하여, 결정 로직(321)은 캐시 메모리(310)의 기존 엔트리들의 우선순위에 대한 프리페치의 우선순위를 결정한다. 일 실시예에서, 기존 엔트리들은 현재 캐시 메모리(310)에 있는 엔트리들 뿐만 아니라 캐시에 배치하도록 지정된 엔트리들(예를 들어, 아직 캐시 메모리(310)에 없는 미스 요청 버퍼에 존재하는 엔트리들)을 포함한다. 일 실시예에서, 상대적 우선순위는 프리페치의 우선순위 레벨과 캐시 메모리(310)에 있는 하나 이상의 기존 엔트리들의 우선순위 레벨 사이의 차이다. 즉, 프리페치 요청에 대한 상대적 우선순위는 프리페치 요청의 우선순위가 타겟 캐시에 대한 임계 우선순위 레벨보다 높은지 낮은지를 표시한다. 일 실시예에서, 캐시에 대한 임계 우선순위 레벨은 프리페치에 의한 축출 후보인 기존 캐시 라인의 가장 낮은 우선순위 레벨에 기초하여 결정된다. 들어오는 프리페치의 우선순위가 기존 캐시 엔트리의 우선순위보다 크지 않은 경우, 프리페치는 다음 하위 레벨의 캐시로 강등된다.
결정 로직(321)은 캐시 교체 정책(cache replacement policy)(325) 및 모듈(322-324)에 의해 추적된 다양한 메트릭들에 기초하여 프리페치 요청(341)의 우선순위 및 기존 캐시 라인들의 임계 우선순위 레벨을 결정한다. 따라서 결정 로직(321)은 어떤 캐시 라인이 가장 중요하고 캐시(300)에 유지되어야 하는지를 결정한다.
교체 정책(325)은 새로운 캐시 라인이 캐시 메모리(310)에 기록되고 있을 때 축출할 가장 낮은 우선순위 캐시 라인을 식별하기 위한 규칙들의 세트를 정의한다. 예를 들어, LFU(least frequently used) 교체 정책은 더 자주 사용되는 캐시 라인이 축출되기 전에 캐시(300)에서 축출하기 위해 가장 적게 사용되는 캐시 라인을 지정하는 반면, LRU(least recently used) 교체 정책은 더 최근에 사용된 캐시 라인을 제거하기 전에 덜 최근에 사용된 캐시 라인을 제거한다. 일 실시예에서, 캐시는 가까운 장래에 어떤 캐시 라인이 재사용될 것인지를 예측하는 RRIP(re-reference interval prediction) 교체 정책을 구현한다.
따라서, 결정 로직(321)은 교체 정책에 기초하여 메모리(310)의 기존 캐시 라인들의 우선순위 레벨을 결정한다. 일 실시예에서, 재사용될 가능성이 더 큰 캐시 라인에는 더 높은 우선순위가 할당된다. 들어오는 프리페치 요청의 우선순위 레벨이 임의의 기존 캐시 라인의 우선순위 레벨보다 크지 않은 경우, 프리페치 요청은 우선순위가 더 높은 기존 캐시 라인을 제거하는 것을 방지하기 위해 다음으로 하위 레벨의 캐시로 강등된다. 대안적인 실시예에서, 캐시 교체 정책 이외의 메커니즘은 결정 로직(321)에 의해 기존 캐시 라인들의 상대적 우선순위를 결정하고 들어오는 프리페치 요청을 강등 또는 수락할지 여부를 결정하기 위한 기준으로 사용된다.
재사용의 빈도 또는 최근성 외에도, 기존 캐시 라인의 우선순위는 캐시 라인을 재사용하는 동작의 유형에 따라 결정된다. 일 실시예에서, 캐시 라인을 요구하는 동작의 유형은 캐시 라인의 태그에 기록된다. 프리페치 요청(341)이 수신될 때, 결정 로직(321)은 높은 우선순위 동작에 의해 사용되는 캐시 라인에 높은 우선순위를 할당한다. 예를 들어, TLB(translation lookaside buffer) 워커 또는 어플리케이션(232)의 중요 경로(critical path)에서 로드/저장 동작에 사용되는 캐시 라인에는 예를 들어 중요 경로에 있지 않은 동작에 의해 사용되는 캐시 라인보다 높은 우선순위 레벨이 주어진다. 따라서 들어오는 프리페치는 이러한 높은 우선순위 동작에 사용되는 캐시 라인을 출출하는 것을 방지하기 위해 강등된다.
캐시 엔트리 메트릭들(323)에 추가하여, 결정 로직(321)은 또한 리소스 메트릭들(324)에 기초하여 들어오는 프리페치 요청(341)을 강등할지 여부를 결정한다. 일 실시예에서, 미스 요청 버퍼(331) 및/또는 희생 버퍼(332)가 각각 가득 차거나 점유 임계값(occupancy threshold)을 넘어서 채워지면, 결정 로직(321)은 모든 프리페치들을 다음 하위 레벨 캐시로 강등시킨다. 대안적인 실시예에서, 결정 로직(321)은 모든 프리페치들을 강등시키는 대신에 더 높은 우선순위 프리페치 요청들의 서브세트를 수락한다.
결정 로직(321)은 프리페치 메트릭들(322)에 기초하여 프리페치 요청(341)에 대한 우선순위 레벨을 결정한다. 프리페치 메트릭들(322)은 이전 프리페치들이 정확하고 시기 적절했는지 여부를 표시한다. 이전 프리페치가 정확하지 않거나 시기 적절하지 않은 경우, 결정 로직(321)은 들어오는 프리페치 요청(341)에 더 낮은 우선순위를 할당한다. 일 실시예에서, 프리페치 정확도 및 적시성은 프리페치들의 각각의 소스(예를 들어, 하드웨어 프리페처, 어플리케이션 명령어를 실행하는 프로세서 등)에 대해 별도로 추적되어, 따라서 한 소스에서 발행된 부정확하거나 시기 적절하지 않은 프리페치 요청이 다른 소스에서 발행된 프리페치 요청의 우선순위에 영향을 미치지 않도록 한다. 결정 로직(321)은 더 정확하고 시기 적절한 프리페치를 이전에 생성한 소스로부터 발생하는 프리페치 요청에 더 높은 우선순위를 할당하는 한편, 부정확하고 및/또는 시기 적절하지 않은 프리페치 요청을 생성한 소스로부터 발생하는 프리페치 요청에 더 낮은 우선순위를 할당한다. 일 실시예에서, 결정 로직(321)은 높은 우선순위 동작(예를 들어, 중요 경로에서의 동작 등)에 의해 사용될 데이터 또는 명령어에 대한 프리페치 요청에 보다 높은 우선순위를 할당한다.
프리페치 요청(341)과 같은 캐시(300)에서 수신된 각각의 프리페치 요청에 대해, 결정 로직(321)은 프리페치 요청의 우선순위를 기존 캐시 라인들의 우선순위와 비교함으로써 프리페치 요청에 대한 상대적인 우선순위를 결정한다. 프리페치 요청이 캐시 메모리(310)에 이미 있는 캐시 라인들 중 어느 것보다 낮은 우선순위를 갖는 경우, 결정 로직(321)은 프리페치 요청(342)의 사본(copy)을 더 낮은 캐시 레벨로 리디렉션시킴으로써 프리페치 요청(341)을 더 낮은 캐시 레벨로 강등시킨다. 캐시(300)가 이미 캐시 계층에서 가장 낮은 수준의 캐시라면, 프리페치 요청(342)은 하위 레벨 캐시로 리디렉션되는 대신 폐기된다.
일 실시예에서, 결정 로직(321)은 프리페치 요청(342)을 기본적으로 계층의 다음 하위 레벨 캐시로 리디렉션시킨다(예를 들어, L2 캐시는 낮은 우선순위 프리페치를 L3 캐시로 강등시킨다). 대안적인 실시예에서, 결정 로직(321)은 강등된 프리페치 요청을 수신하기 위해 다수의 하위 캐시 레벨들 중 임의의 것을 선택한다. 하위 레벨 캐시에서 강등된 프리페치 요청(342)을 수신하면, 하위 레벨 캐시의 다른 결정 로직은 프리페치 요청(342)을 수락할지 아니면 요청(342)을 다음 하위 레벨 캐시로 다시 강등시킬지 여부를 자체 프리페치, 캐시 엔트리 및 리소스 메트릭에 기초하여 유사하게 결정한다.
수신하는 캐시(300)(예를 들어, 가장 낮은 우선순위 캐시 라인으로부터)의 임계 우선순위보다 더 높은 우선순위를 갖는 것으로 결정 로직(321)에 의해 결정된 각각의 프리페치 요청(341)에 대해, 결정 로직(321)은 가장 낮은 우선순위 캐시 라인을 축출하고 프리페치 요청(341)에 명시된 대로 프리페칭된 데이터를 메모리(310)에 저장함으로써 프리페치 요청(341)을 수락한다. 들어오는 프리페치의 정확성 및 적시성을 추적하기 위해, 데이터가 프리페치로부터 온 것임을 표시하는 비트가 태그(311)에 설정된다. 프리페치 정확도 및 적시성이 각각의 프리페치 소스에 대해 추적되면, 프리페치 요청(341)의 소스도 태그(311)에 기록된다.
도 4는 일 실시예에 따른 캐시 메모리(310)의 각각의 캐시 라인에 대한 태그들(311)에 저장된 정보를 도시한다. 태그들(311)은 무엇보다도 프리페치 표시(401), 프리페치 소스(402), 액세스 빈도(403), 및 동작 유형(404)을 포함한다. 프리페치 표시(401)는 연관된 캐시 라인이 프리페칭된 데이터를 포함할 때 어서션되고 그렇지 않으면 디어서션된 단일 비트로서 구현된다. 프리페치 소스(402)는 캐시 라인의 데이터가 프리페칭된 데이터인 경우 프리페치 요청의 소스를 표시하며, 스레드 식별자, 디바이스 식별자(예를 들어, 하드웨어 프리페처에 대한) 및/또는 다른 캐시 레벨의 하드웨어 프리페처에서 발생하는 프리페치에 대한 캐시 레벨 식별자와 같은 정보를 포함할 수 있다. 프리페치 소스(402)는 또한 프리페치 요청이 상위 캐시 레벨에서 강등되었는지 여부를 표시한다. 액세스 빈도(403)는 캐시 또는 캐시 인덱스에 대한 액세스의 기간 동안 연관된 캐시 라인의 데이터가 얼마나 자주 요구되었는지를 표시한다. 동작 유형(404)은 연관된 캐시 라인의 데이터를 요구하는 동작 또는 동작들의 유형을 나타낸다. 태그들(401-404)은 캐싱된 데이터가 액세스될 때(즉, 기록되거나 요구될 때) 캐시 제어기(320)에 의해 업데이트되고, 이전에 설명된 바와 같이, 들어오는 프리페치 요청 및 기존 캐시 라인들의 우선순위를 결정하기 위해 결정 로직(321)에 의해 사용된다.
도 5는 일 실시예에 따른 캐시 계층의 상이한 레벨들에서 수신된 다수의 프리페치 요청들에 대해 동작하는 프리페치 강등 메커니즘을 도시한다. 도 5는 프로세서 코어(230) 및 L1 캐시(201), L2 캐시(202), L3 캐시(203), 및 이들 각각의 캐시 제어기들(211-213), 및 프리페처들(221-223)을 포함하는 캐시 계층을 도시한다.
제1 프리페치 요청(501)은 L1 캐시 레벨에서 하드웨어 프리페처(221)에 의해 생성된다. 프리페치 요청(501)은 L1 캐시(201)를 타겟으로 하고 캐시 제어기(211)에서 수신된다. 캐시 제어기(211)의 결정 로직은 프리페치 요청(501)이 그것의 기존 캐시 라인들 중 적어도 하나보다 더 높은 우선순위를 갖고, 따라서 프리페칭된 데이터를 수용하기 위해 가장 낮은 우선순위 캐시 라인을 축출한다고 결정한다.
프리페치 요청(502)은 프로세서 코어(230)가 어플리케이션(232)의 프리페치 명령어를 실행한 결과로서 프로세서 코어(230)로부터 발행된다. L1 캐시 레벨(201)에서, 캐시 제어기(211)의 결정 로직은 프리페치 요청(502)의 우선순위가 캐시(201)의 가장 낮은 우선순위 캐시 라인의 우선순위보다 낮다고 결정하고, 따라서 프리페치(502)를 L2 캐시 레벨(202)로 강등시킨다. 대안적으로, 프리페치(502)는 L1 캐시(201)의 리소스가 높은 미스 레이트 또는 다른 이유로 인해 과활용되는 경우 L2 캐시 레벨(202)로 강등될 수 있다. L2 캐시 제어기(212)의 결정 로직은 프리페치 요청(502)이 L2 캐시(202)의 가장 낮은 우선순위 캐시 라인보다 상대적으로 더 높은 우선순위를 갖는다고 결정하고, 프리페치 요청(502)이 L2 캐시(202)에서 수락된다.
일 실시예에서, 특정 캐시 레벨에 대한 하드웨어 프리페처는 계층에서 더 낮은 캐시 레벨을 타겟으로 하는 프리페치 요청을 생성할 수 있다. 따라서, L1 프리페처(221)는 L2 캐시 레벨(202)에 대한 프리페치 요청(503)을 생성한다. 캐시 제어기(212)의 결정 로직은 프리페치 요청(503)이 L2 캐시(202)의 기존 캐시 라인들 중 어느 것보다 낮은 우선순위를 갖는다고 결정한다. 이에 응답하여, 결정 로직은 프리페치 요청(503)을 다음 하위 캐시 레벨 L3(203)로 강등시킨다. L3 캐시 레벨(203)에서, 캐시 제어기(213)의 결정 로직은 자체 캐시 성능 메트릭을 기초로 프리페치 요청(503)의 우선순위가 또한 기존 캐시 라인들 중 어느 것보다 낮다고 결정한다. L3 캐시(203)가 계층에서 가장 낮은 캐시 레벨이기 때문에, 프리페치 요청(503)은 폐기된다.
일 실시예에서, L3 캐시 제어기(213)는 프리페치 요청(503)이 폐기되었다는 표시(504)를 폐기된 프리페치(503)의 데이터가 상주하는 메인 메모리(106)의 메모리 제어기(520)에 추가로 송신한다. 표시(504)를 수신하는 것에 응답하여, 메모리 제어기(520)는 시도된 프리페치 데이터에 대한 임박한 요구 요청을 예상하여 폐기된 프리페치(503)에 의해 지정된 프리페치 데이터를 판독할 준비를 한다. 예를 들어, 메모리 제어기(520)는 데이터가 필요할 때 더 낮은 레이턴시로 데이터를 판독할 수 있도록 데이터를 포함하는 메모리 페이지를 열어 데이터를 포함하는 메모리에 대한 액세스를 초기화한다.
도 6은 일 실시예에 따른 프리페칭 프로세스(600)를 예시하는 흐름도이다. 프리페칭 프로세스(600)는 캐시들(201-203)(도 3에서 캐시(300)로 표현됨), 캐시 제어기(211-213)(즉, 캐시 제어기(320)), 프로세서 코어(230), 메모리 제어기(520) 등을 포함하는 컴퓨팅 시스템(100)의 컴포넌트들에 의해 수행된다. 블록(601)에서, 캐시 제어기(320)는 태그들(311)을 업데이트하고 프리페치 메트릭(322), 캐시 엔트리 메트릭(323), 및 리소스 메트릭(324)과 같은 캐시 성능 메트릭을 기록한다. 메트릭은 태그들(311) 및/또는 캐시 제어기(320)의 레지스터들 및 카운터들에 기록된다.
캐시(300)의 캐시 제어기(320)는 블록(603)에서 프리페치 요청(341)을 수신한다. 프리페치 요청(341)은 어플리케이션(232)의 명시적 프리페치 명령어에 따라 캐시(300)의 하드웨어 프리페처, 상위 레벨 캐시의 하드웨어 프리페처 또는 프로세서(230)로부터 수신된다.
블록(605)에서, 결정 로직(321)은 사용된 프리페치 엔트리들에 대한 사용되지 않은 프리페치 엔트리들의 비율을 포함하는 프리페치 정확도 메트릭들(322) 중 하나 이상에 기초하여 프리페치 요청(341)의 우선순위를 결정한다. 사용되지 않은 프리페칭된 엔트리들은 요구되기 전에 캐시(300)에서 축출된 프리페칭된 데이터를 포함하는 반면, 사용된 프리페칭된 엔트리들은 캐시(300)로부터 요구된 프리페칭된 데이터를 포함한다. 결정 로직(321)은 사용된 프리페칭된 엔트리들의 더 높은 비율에 대응하는 프리페치 요청(341)에 더 높은 우선순위를 할당하고, 이는 프리페치가 정확하고 시기적절함을 표시한다. 일 실시예에서, 프리페치 정확도 및 적시성은 동일한 레벨 또는 더 높은 레벨 캐시에 대한 하드웨어 프리페처(강등된 프리페치 포함), 어플리케이션 등과 같은 프리페치 요청의 각각의 소스에 대해 독립적으로 추적된다.
블록(607)에서, 결정 로직(321)은 캐시 엔트리 메트릭(323) 및 교체 정책(325)에 기초하여 캐시(300)에 대한 임계 우선순위를 결정한다. 일 실시예에서, 캐시 엔트리의 우선순위 레벨은 엔트리의 액세스 빈도, 엔트리의 액세스 최근성, 엔트리와 연관된 동작 유형, 및/또는 대체 정책(325)에 정의된 바와 같은 다른 인자들에 대응하여 증가된다.
블록(609)에서, 캐시(300)의 리소스가 과활용되지 않으면, 프로세스(600)는 블록(611)에서 계속된다. 블록(611)에서, 결정 로직(321)은, 캐시 성능 메트릭들에 기초하여, 프리페치 요청(341)에 대한 상대적 우선순위를 결정한다. 일 실시예에서, 상대적 우선순위는 프리페치의 우선순위 레벨과 타겟 캐시 레벨에 대한 임계 우선순위 사이의 차이이다. 프리페치 우선순위가 캐시 임계 우선순위(예를 들어, 캐시(300)에서 가장 낮은 우선순위 엔트리)보다 높으면, 블록(613)에서 가장 낮은 우선순위 캐시 엔트리가 축출되고 프리페치 요청(341)에 대한 프리페치 데이터가 캐시 메모리에 저장된다.
태그들(311)은 블록(601)에서 업데이트되고 업데이트된 캐시 성능 메트릭들이 기록된다. 예를 들어, 프리페치 데이터를 포함하는 새로운 캐시 라인이 기록되었기 때문에, 데이터가 프리페칭된 데이터임을 표시하기 위해 새로운 캐시 라인에 대한 태그들에 비트가 어서션된다. 다른 예로서, 블록(613)에서 축출된 데이터가 사용되지 않은 프리페칭된 데이터인 경우, 축출된 데이터의 프리페치를 원래 요청한 소스에 대해 프리페치 정확도 메트릭(예를 들어, 사용되지 않은 프리페치 엔트리에 대한 사용된 것의 비율)이 업데이트된다. 또한, 이전에 프리페칭된 데이터가 요구되었거나 마지막 업데이트(601) 이후에 사용되지 않은 프리페칭된 데이터가 축출된 경우 프리페치 정확도 메트릭들이 업데이트된다. 블록들(603-615)의 동작에 의해, 우선순위가 높은 프리페치 요청 (즉, 캐시 임계 우선순위보다 높은 우선순위를 가짐)인 캐시 제어기에 의해 수신된 프리페치 요청들의 서브세트가 수락되고 프리페칭된 데이터가 캐시 메모리(300)에 저장되게 된다.
블록(609)에서 캐시 리소스가 과활용되면, 프로세스(600)는 블록(617)에서 계속된다. 캐시 리소스들의 과활용은 희생 버퍼 점유 메트릭 및 미스 요청 버퍼 점유 메트릭을 포함하는 캐시 성능 메트릭들에 의해 표시된다. 희생 버퍼 점유 메트릭은 타겟 캐시의 희생 버퍼에서 사용된 용량의 양을 나타낸다. 미스 요청 버퍼 점유 메트릭은 타겟 캐시의 미스 요청 버퍼에서 사용된 용량의 양을 나타낸다. 일 실시예에서, 희생 버퍼 점유 메트릭 또는 미스 요청 버퍼 점유 메트릭 중 어느 하나가 각각의 임계값을 초과할 때, 캐시 리소스는 과활용된 것으로 간주되어 프로세스(600)가 블록(609)에서 블록(617)으로 계속된다.
블록(617)은 블록(611)에서 프리페치 우선순위가 캐시 임계 우선순위보다 높지 않을 때에도 도달된다. 이것은 이미 캐시 메모리(310)에 있는 모든 캐시 라인들이 프리페치 요청(341)보다 더 높은 우선순위를 가질 때 사실(true)이다. 이 경우, 기존의 더 높은 우선순위 캐시 라인들이 제거되지 않고 상대적으로 우선순위가 낮은 프리페치가 대신 강등된다.
블록(617)에서, 타겟 캐시(300)의 캐시 계층에 하나 이상의 더 낮은 캐시 레벨들이 존재하는 경우, 결정 로직(321)은 강등된 프리페치 요청(342)을 수신하기 위해 블록(619)에서 더 낮은 캐시 레벨들 중 하나를 선택한다. 일 실시예에서, 결정 로직(321)은 자동으로 다음 더 낮은 캐시 레벨을 선택한다(예를 들어, L1 캐시(201)의 결정 로직은 강등된 프리페치 요청을 수신하기 위해 L2 캐시(202)를 선택한다). 대안적인 실시예에서, 결정 로직은 바로 다음 하위 캐시를 반드시 선택하지 않아도 된다(예를 들어, L1 캐시(201)는 강등된 프리페치 요청을 수신하기 위해 L3 캐시(203)를 선택한다). 블록(621)에서, 결정 로직(321)은 프리페치 요청(342)을 선택된 하위 레벨 캐시로 리디렉션시킴로써 강등한다. 블록들(609 및 617-621)의 동작들에 의해, 캐시 리소스가 과활용되는 동안 캐시(300)를 타겟으로 하는 프리페치 요청은 하위 레벨 캐시로 강등된다.
대안적인 실시예에서, 캐시 리소스 활용 레벨은 블록(607)에서 캐시의 임계 우선순위 레벨을 설정하는 데 사용되며, 그 다음 프로세스(600)는 블록(607)에서 블록(611)으로 계속된다. 블록(607)에서 결정 로직(321)은 캐시 리소스의 사용 증가에 비례하여 기존 캐시 엔트리들에 대한 임계 우선순위 레벨을 증가시키고, 따라서 리소스 활용도가 높을 때 블록(611)을 통해 캐시(300)에 수용되는 프리페치들의 수를 제한한다.
블록(603)에서, 강등된 프리페치 요청(342)은 하위 레벨 캐시에서 수신된다. 하위 레벨 캐시는 수신된 프리페치 요청에 대해 프로세스(600)를 유사하게 수행하고 자체 캐시 성능 메트릭에 따라 결정된 우선순위에 기초하여 프리페치 요청을 수락하거나 강등한다. 즉, 이전에 강등된 프리페치 요청이 하위 캐시의 캐시 임계 우선순위보다 높은 우선순위를 갖는 경우, 블록(615)에서 제공되는 바와 같이, 프리페치 데이터는 낮은 우선순위 프리페치 요청에 따라 하위 레벨 캐시에서 수락된다.
낮은 우선순위 프리페치 요청(즉, 캐시 임계 우선순위보다 낮은 우선순위를 가짐)은 다음 하위 캐시 레벨로 다시 강등된다. 따라서, 프리페치는 수락되거나 폐기될 때까지 캐시 레벨을 연속적으로 낮추어 여러 번 강등될 수 있다.
블록(617)에서, 계층에 더 낮은 레벨의 캐시가 존재하지 않으면(즉, 프리페치 요청(341)이 초기에 가장 낮은 캐시 레벨을 타겟으로 하거나 이로 강등된 경우), 프로세스(600)는 블록(623)에서 계속된다. 블록(623)에서, 프리페치 요청은 가장 낮은 캐시 레벨(예를 들어, L3 캐시(203))에서 폐기되고(342), 데이터는 요청에 기초하여 프리페칭되지 않는다. 블록(625)에서, 프리페치 요청(342)을 폐기하는 결정 로직(321)은 폐기된 프리페치를 메모리 제어기(520)에 표시한다. 메모리 제어기(520)는 예를 들어 627에 제공된 바와 같이 액세스를 시작하기 위해 메모리 페이지를 열어 폐기된 프리페치 요청에 지정된 데이터를 판독할 준비를 한다. 블록(627)에서, 프로세스(600)는 태그 및 캐시 성능 메트릭을 업데이트하기 위해 블록(601)으로 돌아간다.
캐시(300)의 주어진 레벨에서, 프리페칭 프로세스(600)는 캐시(300)에서 수신된 다수의 프리페치 요청들 각각에 대해 반복된다. 따라서, 캐시 임계 우선순위보다 낮은 우선순위를 갖는 프리페치 요청들의 서브세트는 하나 이상의 더 낮은 캐시 레벨로 강등되고 잠재적으로 가장 낮은 캐시 레벨에서 폐기된다. 캐시 임계 우선순위보다 높은 우선순위를 갖는 프리페치 요청들의 서브세트는 캐시(300)에서 수락되고, 데이터는 수락된 각각의 요청에 따라 캐시로 프리페칭된다. 일 실시예에서, 캐시(300)가 과활용되는 동안 수신된 프리페치 요청은 하위 레벨 캐시로 강등되거나 캐시(300)가 계층에서 가장 낮은 캐시 레벨인 경우 폐기된다. 대안적으로, 캐시 리소스 활용 메트릭을 사용하여 캐시 임계 우선순위 레벨을 결정한다.
방법에 있어서, 타겟 캐시에 대한 캐시 성능 메트릭들의 제1 세트를 기록하는 단계, 상기 타겟 캐시에서 수신된 복수의 프리페치 요청들의 각각의 프리페치 요청에 대해, 상기 캐시 성능 메트릭들의 제1 세트에 기초하여 상기 타겟 캐시에 대한 임계 우선순위 레벨에 대한 상기 프리페치 요청의 상대적 우선순위를 결정하는 단계, 상기 복수의 프리페치 요청들의 제1 서브세트에서 각각의 낮은 우선순위 프리페치 요청에 대해, 상기 낮은 우선순위 프리페치 요청의 상기 우선순위가 상기 임계 우선순위 레벨을 초과하지 않는다는 결정에 응답하여 상기 낮은 우선순위 프리페치 요청을 제1 하위 레벨 캐시로 리디렉션하는 단계, 및 상기 복수의 프리페치 요청들의 제2 서브세트에서 각각의 높은 우선순위 프리페치 요청에 대해, 상기 높은 우선순위 프리페치 요청의 상기 우선순위가 상기 임계 우선순위 레벨을 초과한다는 결정에 응답하여 상기 높은 우선순위 프리페치 요청에 따라 상기 타겟 캐시에 프리페치 데이터를 저장하는 단계를 포함한다.
방법은 또한, 상기 낮은 우선순위 프리페치 요청들 각각에 대해, 상기 타겟 캐시의 캐시 계층으로부터 다른 캐시를 제1 하위 레벨 캐시로 선택하는 단계-여기서, 상기 제1 하위 레벨 캐시는 상기 타겟 캐시보다 더 큰 용량을 가짐-, 및 상기 낮은 우선순위 프리페치 요청에 따라 프리페치 데이터를 상기 제1 하위 레벨 캐시에 저장하는 단계를 포함한다.
방법은 또한, 상기 제1 서브세트의 하나 이상의 프리페치 요청들에 대해, 상기 제1 하위 레벨 캐시의 캐시 성능 메트릭들의 제2 세트에 기초하여 하나 이상의 프리페치 요청들을 상기 제1 하위 레벨 캐시로부터 제2 하위 레벨 캐시로 리디렉션하는 단계를 포함하고, 상기 제2 하위 레벨 캐시는 상기 제1 하위 레벨 캐시보다 더 큰 용량을 갖는다.
방법은 또한, 상기 제1 서브세트의 하나 이상의 프리페치 요청들에 대해, 상기 하나 이상의 프리페치 요청들을 상기 타겟 캐시의 캐시 계층에서 최하위 레벨 캐시로 리디렉션하는 단계, 및 상기 하나 이상의 프리페치 요청들의 상기 우선순위가 상기 최하위 레벨 캐시에 대한 임계 우선순위 레벨보다 작다는 결정에 응답하여 상기 하나 이상의 프리페치 요청을 폐기하는 단계를 포함한다.
방법은 또한, 상기 복수의 프리페치 요청들의 각각의 프리페치 요청에 대해, 프리페치 정확도 메트릭에 기초하여 상기 프리페치 요청의 우선순위를 결정하는 단계를 포함한다. 상기 프리페치 정확도 메트릭은, 상기 타겟 캐시의 프리페칭된 엔트리들의 세트에 대해, 사용된 프리페칭된 엔트리들에 대한 사용되지 않은 프리페칭된 엔트리들의 비율에 기초하여 결정된다.
방법은 또한, 상기 복수의 프리페치 요청들의 각각의 프리페치 요청에 대해, 상기 프리페치 요청의 소스에 기초하여 상기 프리페치 요청의 우선순위를 결정하는 단계를 포함한다. 상기 소스는 하드웨어 프리페처 및 사용자 어플리케이션 중 하나를 포함한다.
방법은 또한, 상기 타겟 캐시에 대한 임계 우선순위 레벨을 캐시 교체 정책, 상기 타겟 캐시의 복수의 캐시 엔트리들의 각각의 캐시 엔트리에 대해, 상기 캐시 엔트리의 액세스 빈도, 및 상기 캐시 엔트리와 연관된 동작 유형에 기초하여 결정하는 단계를 포함한다.
방법에서, 상기 캐시 성능 메트릭들의 제1 세트는 상기 타겟 캐시의 희생 버퍼에 대한 희생 버퍼 점유율 메트릭 및 상기 타겟 캐시의 미스 요청 버퍼에 대한 미스 요청 버퍼 점유율 메트릭을 포함한다.
컴퓨팅 디바이스는 타겟 캐시에 대한 캐시 성능 메트릭들의 제1 세트를 기록하기 위한 모니터링 회로부 및 상기 모니터링 회로부와 결합된 제1 결정 로직 회로를 포함한다. 상기 결정 로직 회로는 상기 타겟 캐시에서 수신된 복수의 프리페치 요청들의 각각의 프리페치 요청에 대해, 상기 캐시 성능 메트릭들의 제1 세트에 기초하여 상기 타겟 캐시에 대한 임계 우선순위 레벨에 대한 상기 프리페치 요청의 상대적 우선순위를 결정하고, 상기 복수의 프리페치 요청들의 제1 서브세트에서 각각의 낮은 우선순위 프리페치 요청에 대해, 상기 낮은 우선순위 프리페치 요청의 상기 우선순위가 상기 임계 우선순위 레벨을 초과하지 않는다는 결정에 응답하여 상기 낮은 우선순위 프리페치 요청을 제1 하위 레벨 캐시로 리디렉션하고, 및 상기 복수의 프리페치 요청들의 제2 서브세트에서 각각의 높은 우선순위 프리페치 요청에 대해, 상기 높은 우선순위 프리페치 요청의 상기 우선순위가 상기 임계 우선순위 레벨을 초과한다는 결정에 응답하여 상기 높은 우선순위 프리페치 요청에 따라 상기 타겟 캐시에 프리페치 데이터를 저장한다.
컴퓨팅 디바이스에서, 상기 제1 결정 로직 회로는 또한, 상기 낮은 우선순위 프리페치 요청들의 각각에 대해, 상기 타겟 캐시의 캐시 계층으로부터의 다른 캐시를 상기 제1 하위 레벨 캐시로 선택한다. 상기 제1 하위 레벨 캐시는 상기 타겟 캐시보다 더 큰 용량을 갖는다. 상기 제1 하위 레벨 캐시는, 상기 낮은 우선순위 프리페치 요청들의 각각에 대해, 상기 낮은 우선순위 프리페치 요청에 따라 프리페치 데이터를 저장한다.
컴퓨팅 디바이스는 상기 제1 하위 레벨 캐시의 제2 결정 로직 회로, 및 상기 제2 결정 로직 회로와 결합되고 상기 제1 하위 레벨 캐시보다 더 큰 용량을 갖는 제2 하위 레벨 캐시를 더 포함한다. 상기 제2 결정 로직 회로는, 상기 제1 서브세트의 하나 이상의 프리페치 요청들에 대해, 상기 제1 하위 레벨 캐시의 캐시 성능 메트릭들의 제2 세트에 기초하여 상기 하나 이상의 프리페치 요청들을 상기 제1 하위 레벨 캐시로부터 상기 제2 하위 레벨 캐시로 리디랙션한다.
컴퓨팅 디바이스는 또한 상기 타겟 캐시의 상기 캐시 계층의 최하위 레벨 캐시, 상기 제1 서브세트의 하나 이상의 프리페치 요청에 대해, 상기 하나 이상의 프리페치 요청들을 상기 최하위 레벨 캐시로 리디랙션하는 제2 결정 로직 회로, 및 상기 하나 이상의 프리페치 요청들의 상기 우선순위가 상기 최하위 레벨 캐시에 대한 임계 우선순위 레벨보다 작다는 결정에 응답하여 상기 하나 이상의 프리페치 요청들을 폐기하는 상기 최하위 레벨 캐시의 제3 결정 로직 회로를 포함한다.
컴퓨팅 디바이스는 또한 상기 제1 결정 로직 회로와 결합되고, 상기 타겟 캐시의 프리페칭된 엔트리들의 세트에 대해, 사용된 프리페칭된 엔트리들에 대한 사용되지 않은 프리페칭된 엔트리들의 비율에 기초하여 프리페치 정확도 메트릭을 결정하는 프리페치 메트릭 모듈을 포함한다. 상기 제1 결정 로직 회로는 또한, 상기 복수의 프리페치 요청들의 각각의 프리페치 요청에 대해, 상기 프리페치 정확도 메트릭에 기초하여 상기 프리페치 요청의 우선순위를 결정한다.
컴퓨팅 디바이스는 또한 하드웨어 프리페처, 및 어플리케이션의 실행 명령어에 기초하여 상기 복수의 프리페치 요청들 중 하나 이상을 생성하는 프로세서를 포함한다. 상기 결정 로직은 또한, 상기 복수의 프리페치 요청들의 각각의 프리페치 요청에 대해, 상기 프리페치 요청의 소스에 기초하여 상기 프리페치 요청의 우선순위를 결정한다. 상기 소스는 상기 하드웨어 프리페처 및 상기 프로세서 중 하나를 포함한다.
컴퓨팅 디바이스는 또한 상기 타겟 캐시의 복수의 캐시 엔트리들의 각각의 캐시 엔트리에 대해, 상기 캐시 엔트리의 액세스 빈도 및 상기 캐시 엔트리와 연관된 동작 유형을 포함하는 캐시 엔트리 메트릭들을 기록하는 캐시 엔트리 메트릭 모듈을 한다. 상기 결정 로직은 또한 캐시 교체 정책 및 상기 캐시 엔트리 메트릭들에 기초하여 상기 임계 우선순위 레벨을 결정한다.
컴퓨팅 시스템은 어플리케이션을 실행하도록 구성된 처리 유닛, 상기 처리 유닛과 결합된 캐시 계층의 복수의 캐시들, 및 상기 복수의 캐시들과 결합된 캐시 제어기를 포함한다. 상기 캐시 제어기는 타겟 캐시에 대한 캐시 성능 메트릭들의 제1 세트를 기록하는 모니터링 회로부, 및 상기 모니터링 회로부와 결합된 결정 로직 회로를 포함한다. 결정 로직 회로는 상기 타겟 캐시에서 수신된 복수의 프리페치 요청들의 각각의 프리페치 요청에 대해, 상기 캐시 성능 메트릭들의 제1 세트에 기초하여 상기 타겟 캐시에 대한 임계 우선순위 레벨에 대한 상기 프리페치 요청의 상대적 우선순위를 결정하고, 상기 복수의 프리페치 요청들의 제1 서브세트에서 각각의 낮은 우선순위 프리페치 요청에 대해, 상기 낮은 우선순위 프리페치 요청의 상기 우선순위가 상기 임계 우선순위 레벨을 초과하지 않는다는 결정에 응답하여 상기 낮은 우선순위 프리페치 요청을 제1 하위 레벨 캐시로 리디렉션하고, 및 상기 복수의 프리페치 요청들의 제2 서브세트에서 각각의 높은 우선순위 프리페치 요청에 대해, 상기 높은 우선순위 프리페치 요청의 상기 우선순위가 상기 임계 우선순위 레벨을 초과한다는 결정에 응답하여 상기 높은 우선순위 프리페치 요청에 따라 상기 타겟 캐시에 프리페치 데이터를 저장한다.
컴퓨팅 시스템은 또한 상기 캐시 제어기와 결합된 메모리 제어기를 포함한다. 결정 로직 회로는 또한, 상기 제1 서브세트의 하나 이상의 프리페치 요청들에 대해, 상기 하나 이상의 프리페치 요청들을 상기 타겟 캐시의 상기 캐시 계층에서 최하위 레벨 캐시로 리디렉션하고, 상기 하나 이상의 프리페치 요청들의 상기 우선순위가 상기 최하위 레벨 캐시에 대한 임계 우선순위 레벨보다 작다는 결정에 응답하여 상기 하나 이상의 프리페치 요청들을 폐기하고, 및 상기 프리페치 요청의 표시를 메모리 제어기에 송신한다. 메모리 제어기는, 상기 표시에 응답하여, 상기 프리페치 데이터를 포함하는 상기 메모리의 액세스를 초기화한다.
컴퓨팅 시스템은 또한 상기 캐시 계층과 결합되는 하드웨어 프리페처를 더 포함하고, 상기 하드웨어 프리페처는 상기 어플리케이션에 대한 분기 예측을 수행하는 것, 및 상기 어플리케이션에 의한 이전 메모리 액세스들의 패턴을 기초로 메모리 액세스들을 예측하는 것에 기초하여 상기 어플리케이션에 대한 상기 복수의 프리페치 요청들 중 하나 이상을 생성한다.
컴퓨팅 시스템에서, 처리 유닛은 또한 상기 어플리케이션의 명령어에 따라 상기 복수의 프리페치 요청들 중 하나 이상을 생성한다.
컴퓨팅 시스템은 또한 상기 캐시 제어기를 포함하는 복수의 캐시 제어기들을 포함한다. 상기 복수의 캐시 제어기들의 각각은 상기 캐시 계층의 상기 복수의 캐시들 중 하나를 제어하고, 및 상기 제1 서브세트의 상기 낮은 우선순위 프리페치 요청들 중 하나 이상을 상기 복수의 캐시들 중 하나와 연관된 하나보다 더 높은 용량을 갖는 상기 캐시 계층의 다른 캐시로 리디렉션한다.
본 명세서에 사용된 바와 같이, "결합된(coupled to)"이라는 용어는 직접적으로 또는 하나 이상의 개재 컴포넌트들을 통해 간접적으로 결합되는 것을 의미할 수 있다. 본 명세서에 설명된 다양한 버스들을 통해 제공되는 임의의 신호는 다른 신호와 시간 다중화되고(time multiplexed) 하나 이상의 공통 버스를 통해 제공될 수 있다. 또한, 회로 컴포넌트들 또는 블록들 간의 상호연결은 버스 또는 단일 신호 라인으로 도시될 수 있다. 버스들 각각은 대안적으로 하나 이상의 단일 신호 라인일 수 있고 각각의 단일 신호 라인은 대안적으로 버스들일 수 있다.
특정 실시예는 비일시적 컴퓨터 판독 가능 매체에 저장된 명령어를 포함할 수 있는 컴퓨터 프로그램 제품으로 구현될 수 있다. 이러한 명령어는 설명된 작업을 수행하기 위해 범용 또는 특수 목적 프로세서를 프로그래밍하는 데 사용될 수 있다. 컴퓨터 판독 가능 매체는 머신(예를 들어, 컴퓨터)에 의해 판독 가능한 형태(예를 들어, 소프트웨어, 처리 어플리케이션)로 정보를 저장하거나 송신하기 위한 임의의 메커니즘을 포함한다. 비일시적 컴퓨터 판독 가능 저장 매체는 자기 저장 매체(예를 들어, 플로피 디스켓); 광학 저장 매체(예를 들어, CD-ROM); 광자기 저장 매체; 판독 전용 메모리(ROM); 랜덤 액세스 메모리(RAM); 소거 가능한 프로그램 가능 메모리(예를 들어, EPROM 및 EEPROM); 플래시 메모리 또는 전자 명령어를 저장하는 데 적합한 또 다른 유형의 매체를 포함할 수 있지만 이에 제한되지 않는다.
추가적으로, 일부 실시예는 컴퓨터 판독가능 매체가 하나 이상의 컴퓨터 시스템에 저장 및/또는 실행되는 분산 컴퓨팅 환경에서 실행될 수 있다. 또한, 컴퓨터 시스템 간에 전송되는 정보는 컴퓨터 시스템을 연결하는 송신 매체를 통해 당겨지거나 푸시될 수 있다.
일반적으로, 컴퓨팅 시스템(100)을 나타내는 데이터 구조 및/또는 컴퓨터 판독 가능 저장 매체에 포함된 그의 부분은 데이터베이스 또는 다른 데이터 구조일 수 있으며, 이는 프로그램에 의해 판독될 수 있고 컴퓨팅 시스템(100)을 포함하는 하드웨어를 제조하기 위해 직간접적으로 사용될 수 있다. 예를 들어, 데이터 구조는 베리로그(Verilog) 또는 VHDL과 같은 고수준 설계 언어(HDL)의 하드웨어 기능에 대한 동작 레벨 설명 또는 레지스터 전송 레벨(RTL) 설명일 수 있다. 설명은 합성 라이브러리로부터 게이트들의 리스트를 포함하는 넷리스트를 생성하기 위해 설명을 합성할 수 있는 합성 툴에 의해 판독될 수 있다. 넷리스트는 컴퓨팅 시스템(100)을 포함하는 하드웨어의 기능을 또한 나타내는 게이트들의 세트를 포함한다. 그런 다음 네트리스트가 배치되고 라우팅되어 마스크에 적용할 기하학적 모양을 설명하는 데이터 세트를 생성할 수 있다. 그 다음, 마스크는 컴퓨팅 시스템(100)에 대응하는 반도체 회로 또는 회로들을 생성하기 위해 다양한 반도체 제조 단계에서 사용될 수 있다. 대안적으로, 컴퓨터 판독 가능한 저장 매체 상의 데이터베이스는 넷리스트(합성 라이브러리가 있거나 없는) 또는 원하는 경우 데이터 세트, 또는 그래픽 데이터 시스템(GDS) II 데이터일 수 있다.
본 명세서의 방법(들)의 동작들이 특정 순서로 도시되고 설명되지만, 각 방법의 동작 순서는 특정 동작이 역순으로 수행되거나 특정 동작이 다른 동작과 적어도 부분적으로 동시에 수행될 수 있도록 변경될 수 있다. 다른 실시예에서, 별개의 동작들의 명령어 또는 하위 동작들은 간헐적 및/또는 교대 방식일 수 있다.
전술한 명세서에서, 실시예는 그 특정 예시적인 실시예를 참조하여 설명되었다. 그러나, 첨부된 청구범위에 기재된 바와 같은 실시예의 더 넓은 범위를 벗어나지 않고 다양한 수정 및 변경이 이루어질 수 있음이 명백할 것이다. 따라서, 본 명세서 및 도면은 제한적인 의미가 아니라 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 방법에 있어서,
    타겟 캐시(target cache)에 대한 캐시 성능 메트릭(cache performance metric)들의 제1 세트를 기록하는 단계;
    상기 타겟 캐시에서 수신된 복수의 프리페치 요청(prefetch request)들의 각각의 프리페치 요청에 대해, 상기 캐시 성능 메트릭들의 제1 세트에 기초하여 상기 타겟 캐시에 대한 임계 우선순위 레벨(threshold priority level)에 대한 상기 프리페치 요청의 상대적 우선순위(relative priority)를 결정하는 단계;
    상기 임계 우선순위 레벨을 초과하지 않는 우선순위를 갖는 상기 복수의 프리페치 요청들의 제1 서브세트에서 각각의 낮은 우선순위 프리페치 요청에 대해, 상기 낮은 우선순위 프리페치 요청의 상기 우선순위가 상기 임계 우선순위 레벨을 초과하지 않는다는 결정에 응답하여 상기 낮은 우선순위 프리페치 요청을 제1 하위 레벨 캐시로 리디렉션하는 단계; 및
    상기 임계 우선순위 레벨을 초과하는 상기 우선순위를 갖는 상기 복수의 프리페치 요청들의 제2 서브세트에서 각각의 높은 우선순위 프리페치 요청에 대해, 상기 높은 우선순위 프리페치 요청의 상기 우선순위가 상기 임계 우선순위 레벨을 초과한다는 결정에 응답하여 상기 높은 우선순위 프리페치 요청에 따라 상기 타겟 캐시에 프리페치 데이터를 저장하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 낮은 우선순위 프리페치 요청들 각각에 대해,
    상기 타겟 캐시의 캐시 계층(cache hierarchy)으로부터 다른 캐시를 제1 하위 레벨 캐시로 선택하는 단계-여기서, 상기 제1 하위 레벨 캐시는 상기 타겟 캐시보다 더 큰 용량을 가짐-; 및
    상기 낮은 우선순위 프리페치 요청에 따라 프리페치 데이터를 상기 제1 하위 레벨 캐시에 저장하는 단계를 더 포함하는, 방법.
  3. 제1항에 있어서,
    상기 제1 서브세트의 하나 이상의 프리페치 요청들에 대해, 상기 제1 하위 레벨 캐시의 캐시 성능 메트릭들의 제2 세트에 기초하여 하나 이상의 프리페치 요청들을 상기 제1 하위 레벨 캐시로부터 제2 하위 레벨 캐시로 리디렉션하는 단계를 더 포함하고, 상기 제2 하위 레벨 캐시는 상기 제1 하위 레벨 캐시보다 더 큰 용량을 갖는, 방법.
  4. 제1항에 있어서, 상기 제1 서브세트의 하나 이상의 프리페치 요청들에 대해,
    상기 하나 이상의 프리페치 요청들을 상기 타겟 캐시의 상기 캐시 계층에서 최하위 레벨 캐시로 리디렉션하는 단계; 및
    상기 하나 이상의 프리페치 요청들의 상기 우선순위가 상기 최하위 레벨 캐시에 대한 임계 우선순위 레벨보다 작다는 결정에 응답하여 상기 하나 이상의 프리페치 요청을 폐기하는 단계를 더 포함하는, 방법.
  5. 제1항에 있어서,
    상기 복수의 프리페치 요청들의 각각의 프리페치 요청에 대해, 프리페치 정확도 메트릭에 기초하여 상기 프리페치 요청의 우선순위를 결정하는 단계를 더 포함하고, 상기 프리페치 정확도 메트릭은, 상기 타겟 캐시의 프리페칭된 엔트리들의 세트에 대해, 사용된 프리페칭된 엔트리들에 대한 사용되지 않은 프리페칭된 엔트리들의 비율에 기초하여 결정되는, 방법.
  6. 제1항에 있어서,
    상기 복수의 프리페치 요청들의 각각의 프리페치 요청에 대해, 상기 프리페치 요청의 소스(source)에 기초하여 상기 프리페치 요청의 우선순위를 결정하는 단계를 더 포함하고, 상기 소스는 하드웨어 프리페처 및 사용자 어플리케이션 중 하나를 포함하는, 방법.
  7. 제1항에 있어서, 상기 타겟 캐시에 대한 임계 우선순위 레벨을:
    캐시 교체 정책(cache replacement policy), 및
    상기 타겟 캐시의 복수의 캐시 엔트리들의 각각의 캐시 엔트리에 대해, 상기 캐시 엔트리의 액세스 빈도(access frequency), 및 상기 캐시 엔트리와 연관된 동작 유형에 기초하여 결정하는 단계를 더 포함하는, 방법.
  8. 제1항에 있어서, 상기 캐시 성능 메트릭들의 제1 세트는 상기 타겟 캐시의 희생 버퍼(victim buffer)에 대한 희생 버퍼 점유율 메트릭 및 상기 타겟 캐시의 미스 요청 버퍼(miss request buffer)에 대한 미스 요청 버퍼 점유율 메트릭을 포함하는, 방법.
  9. 컴퓨팅 디바이스(computing device)에 있어서,
    타겟 캐시에 대한 캐시 성능 메트릭들의 제1 세트를 기록하도록 구성된 모니터링 회로부(monitoring circuitry);
    상기 모니터링 회로부와 결합되고:
    상기 타겟 캐시에서 수신된 복수의 프리페치 요청들의 각각의 프리페치 요청에 대해, 상기 캐시 성능 메트릭들의 제1 세트에 기초하여 상기 타겟 캐시에 대한 임계 우선순위 레벨에 대한 상기 프리페치 요청의 상대적 우선순위를 결정하고;
    상기 임계 우선순위 레벨을 초과하지 않는 우선순위를 갖는 상기 복수의 프리페치 요청들의 제1 서브세트에서 각각의 낮은 우선순위 프리페치 요청에 대해, 상기 낮은 우선순위 프리페치 요청의 상기 우선순위가 상기 임계 우선순위 레벨을 초과하지 않는다는 결정에 응답하여 상기 낮은 우선순위 프리페치 요청을 제1 하위 레벨 캐시로 리디렉션하고; 및
    상기 임계 우선순위 레벨을 초과하는 우선순위를 갖는 상기 복수의 프리페치 요청들의 제2 서브세트에서 각각의 높은 우선순위 프리페치 요청에 대해, 상기 높은 우선순위 프리페치 요청의 상기 우선순위가 상기 임계 우선순위 레벨을 초과한다는 결정에 응답하여 상기 높은 우선순위 프리페치 요청에 따라 상기 타겟 캐시에 프리페치 데이터를 저장하도록 구성된 제1 결정 로직 회로를 포함하는, 컴퓨팅 디바이스.
  10. 제9항에 있어서,
    상기 제1 결정 로직 회로는, 상기 낮은 우선순위 프리페치 요청들의 각각에 대해, 상기 타겟 캐시의 캐시 계층으로부터의 다른 캐시를 상기 제1 하위 레벨 캐시로 선택하도록 더 구성되고,
    상기 제1 하위 레벨 캐시는 상기 타겟 캐시보다 더 큰 용량을 갖고; 및
    상기 제1 하위 레벨 캐시는, 상기 낮은 우선순위 프리페치 요청들의 각각에 대해, 상기 낮은 우선순위 프리페치 요청에 따라 프리페치 데이터를 저장하도록 구성되는, 컴퓨팅 디바이스.
  11. 제9항에 있어서,
    상기 제1 하위 레벨 캐시의 제2 결정 로직 회로; 및
    상기 제2 결정 로직 회로와 결합되고 상기 제1 하위 레벨 캐시보다 더 큰 용량을 갖는 제2 하위 레벨 캐시를 더 포함하고, 여기서:
    상기 제2 결정 로직 회로는, 상기 제1 서브세트의 하나 이상의 프리페치 요청들에 대해, 상기 제1 하위 레벨 캐시의 캐시 성능 메트릭들의 제2 세트에 기초하여 상기 하나 이상의 프리페치 요청들을 상기 제1 하위 레벨 캐시로부터 상기 제2 하위 레벨 캐시로 리디랙션하도록 구성되는, 컴퓨팅 디바이스.
  12. 제9항에 있어서,
    상기 타겟 캐시의 상기 캐시 계층의 최하위 레벨 캐시;
    상기 제1 서브세트의 하나 이상의 프리페치 요청에 대해, 상기 하나 이상의 프리페치 요청들을 상기 최하위 레벨 캐시로 리디랙션하도록 구성된 제2 결정 로직 회로; 및
    상기 하나 이상의 프리페치 요청들의 상기 우선순위가 상기 최하위 레벨 캐시에 대한 임계 우선순위 레벨보다 작다는 결정에 응답하여 상기 하나 이상의 프리페치 요청들을 폐기하도록 구성된 상기 최하위 레벨 캐시의 제3 결정 로직 회로를 더 포함하는, 컴퓨팅 디바이스.
  13. 제9항에 있어서,
    상기 제1 결정 로직 회로와 결합되고, 상기 타겟 캐시의 프리페칭된 엔트리들의 세트에 대해, 사용된 프리페칭된 엔트리들에 대한 사용되지 않은 프리페칭된 엔트리들의 비율에 기초하여 프리페치 정확도 메트릭을 결정하도록 구성된 프리페치 메트릭 모듈을 더 포함하고,
    상기 제1 결정 로직 회로는, 상기 복수의 프리페치 요청들의 각각의 프리페치 요청에 대해, 상기 프리페치 정확도 메트릭에 기초하여 상기 프리페치 요청의 우선순위를 결정하도록 더 구성되는, 컴퓨팅 디바이스.
  14. 제9항에 있어서,
    하드웨어 프리페처; 및
    어플리케이션의 실행 명령어에 기초하여 상기 복수의 프리페치 요청들 중 하나 이상을 생성하도록 구성된 프로세서를 더 포함하고, 상기 결정 로직은, 상기 복수의 프리페치 요청들의 각각의 프리페치 요청에 대해, 상기 프리페치 요청의 소스에 기초하여 상기 프리페치 요청의 우선순위를 결정하도록 더 구성되고, 상기 소스는 상기 하드웨어 프리페처 및 상기 프로세서 중 하나를 포함하는, 컴퓨팅 디바이스.
  15. 제9항에 있어서,
    상기 타겟 캐시의 복수의 캐시 엔트리들의 각각의 캐시 엔트리에 대해, 상기 캐시 엔트리의 액세스 빈도 및 상기 캐시 엔트리와 연관된 동작 유형을 포함하는 캐시 엔트리 메트릭들을 기록하도록 구성된 캐시 엔트리 메트릭 모듈을 더 포함하고, 상기 결정 로직은 캐시 교체 정책 및 상기 캐시 엔트리 메트릭들에 기초하여 상기 임계 우선순위 레벨을 결정하도록 더 구성되는, 컴퓨팅 디바이스.
  16. 컴퓨팅 시스템에 있어서,
    어플리케이션을 실행하도록 구성된 처리 유닛;
    상기 처리 유닛과 결합된 캐시 계층의 복수의 캐시들; 및
    상기 복수의 캐시들과 결합된 캐시 제어기를 포함하고, 상기 캐시 제어기는:
    타겟 캐시에 대한 캐시 성능 메트릭들의 제1 세트를 기록하도록 구성된 모니터링 회로부, 및
    상기 모니터링 회로부와 결합되고:
    상기 타겟 캐시에서 수신된 복수의 프리페치 요청들의 각각의 프리페치 요청에 대해, 상기 캐시 성능 메트릭들의 제1 세트에 기초하여 상기 타겟 캐시에 대한 임계 우선순위 레벨에 대한 상기 프리페치 요청의 상대적 우선순위를 결정하고;
    상기 임계 우선순위 레벨을 초과하지 않는 우선순위를 갖는 상기 복수의 프리페치 요청들의 제1 서브세트에서 각각의 낮은 우선순위 프리페치 요청에 대해, 상기 낮은 우선순위 프리페치 요청의 상기 우선순위가 상기 임계 우선순위 레벨을 초과하지 않는다는 결정에 응답하여 상기 낮은 우선순위 프리페치 요청을 제1 하위 레벨 캐시로 리디렉션하고; 및
    상기 임계 우선순위 레벨을 초과하는 상기 우선순위를 갖는 상기 복수의 프리페치 요청들의 제2 서브세트에서 각각의 높은 우선순위 프리페치 요청에 대해, 상기 높은 우선순위 프리페치 요청의 상기 우선순위가 상기 임계 우선순위 레벨을 초과한다는 결정에 응답하여 상기 높은 우선순위 프리페치 요청에 따라 상기 타겟 캐시에 프리페치 데이터를 저장하도록 구성된 결정 로직 회로를 포함하는, 컴퓨팅 시스템.
  17. 제16항에 있어서,
    상기 캐시 제어기와 결합된 메모리 제어기를 더 포함하고, 결정 로직 회로는:
    상기 제1 서브세트의 하나 이상의 프리페치 요청들에 대해, 상기 하나 이상의 프리페치 요청들을 상기 타겟 캐시의 상기 캐시 계층에서 최하위 레벨 캐시로 리디렉션하고,
    상기 하나 이상의 프리페치 요청들의 상기 우선순위가 상기 최하위 레벨 캐시에 대한 임계 우선순위 레벨보다 작다는 결정에 응답하여 상기 하나 이상의 프리페치 요청들을 폐기하고, 및
    상기 프리페치 요청의 표시(indication)를 메모리 제어기에 송신하도록 구성되고; 및
    상기메모리 제어기는, 상기 표시에 응답하여, 상기 프리페치 데이터를 포함하는 상기 메모리의 액세스를 초기화하도록 구성되는, 컴퓨팅 시스템.
  18. 제16항에 있어서,
    상기 캐시 계층과 결합되는 하드웨어 프리페처를 더 포함하고, 상기 하드웨어 프리페처는:
    상기 어플리케이션에 대한 분기 예측(branch prediction)을 수행하는 것, 및
    상기 어플리케이션에 의한 이전 메모리 액세스들의 패턴을 기초로 메모리 액세스들을 예측하는 것에 기초하여 상기 어플리케이션에 대한 상기 복수의 프리페치 요청들 중 하나 이상을 생성하도록 구성되는, 컴퓨팅 시스템.
  19. 제16항에 있어서,
    처리 유닛은 상기 어플리케이션의 명령어에 따라 상기 복수의 프리페치 요청들 중 하나 이상을 생성하도록 더 구성되는, 컴퓨팅 시스템.
  20. 제16항에 있어서,
    상기 캐시 제어기를 포함하는 복수의 캐시 제어기들을 더 포함하고, 상기 복수의 캐시 제어기들의 각각은:
    상기 캐시 계층의 상기 복수의 캐시들 중 하나를 제어하고, 및
    상기 제1 서브세트의 상기 낮은 우선순위 프리페치 요청들 중 하나 이상을 상기 복수의 캐시들 중 하나와 연관된 하나보다 더 높은 용량을 갖는 상기 캐시 계층의 다른 캐시로 리디렉션하도록 구성되는, 컴퓨팅 시스템.
KR1020227020132A 2019-12-17 2020-11-20 프리페치 레벨 강등 KR20220110219A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/718,162 2019-12-17
US16/718,162 US20210182214A1 (en) 2019-12-17 2019-12-17 Prefetch level demotion
PCT/US2020/061672 WO2021126471A1 (en) 2019-12-17 2020-11-20 Prefetch level demotion

Publications (1)

Publication Number Publication Date
KR20220110219A true KR20220110219A (ko) 2022-08-05

Family

ID=73854926

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227020132A KR20220110219A (ko) 2019-12-17 2020-11-20 프리페치 레벨 강등

Country Status (6)

Country Link
US (1) US20210182214A1 (ko)
EP (1) EP4078384A1 (ko)
JP (1) JP2023507078A (ko)
KR (1) KR20220110219A (ko)
CN (1) CN114830100A (ko)
WO (1) WO2021126471A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6805196B2 (ja) * 2018-02-23 2020-12-23 日本電信電話株式会社 ポリシー競合解消システム及びポリシー競合解消方法
US12050915B2 (en) * 2020-12-22 2024-07-30 Intel Corporation Instruction and logic for code prefetching
US11782637B2 (en) * 2021-01-05 2023-10-10 Red Hat, Inc. Prefetching metadata in a storage system
US11762777B2 (en) * 2021-03-31 2023-09-19 Advanced Micro Devices, Inc. Method and apparatus for a dram cache tag prefetcher
US20230244606A1 (en) * 2022-02-03 2023-08-03 Arm Limited Circuitry and method
US12099447B2 (en) * 2022-10-13 2024-09-24 Arm Limited Setting cache policy information for prefetched cache entry
CN117454832B (zh) * 2023-10-10 2024-06-11 北京市合芯数字科技有限公司 电路芯片中数据通道的布线方法、装置、设备及介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7177985B1 (en) * 2003-05-30 2007-02-13 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US8909866B2 (en) * 2012-11-06 2014-12-09 Advanced Micro Devices, Inc. Prefetching to a cache based on buffer fullness
US10496410B2 (en) * 2014-12-23 2019-12-03 Intel Corporation Instruction and logic for suppression of hardware prefetchers
US10073785B2 (en) * 2016-06-13 2018-09-11 Advanced Micro Devices, Inc. Up/down prefetcher
US20190073305A1 (en) * 2017-09-05 2019-03-07 Qualcomm Incorporated Reuse Aware Cache Line Insertion And Victim Selection In Large Cache Memory

Also Published As

Publication number Publication date
EP4078384A1 (en) 2022-10-26
CN114830100A (zh) 2022-07-29
JP2023507078A (ja) 2023-02-21
US20210182214A1 (en) 2021-06-17
WO2021126471A1 (en) 2021-06-24

Similar Documents

Publication Publication Date Title
KR20220110219A (ko) 프리페치 레벨 강등
US8041897B2 (en) Cache management within a data processing apparatus
US7975107B2 (en) Processor cache management with software input via an intermediary
US8935478B2 (en) Variable cache line size management
US7584327B2 (en) Method and system for proximity caching in a multiple-core system
KR101820223B1 (ko) 모드에 따라 선택적으로 하나 또는 복수의 셋트를 선택하도록 동적으로 구성가능한 멀티 모드 셋트 연관 캐시 메모리
US7669009B2 (en) Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches
JP4829191B2 (ja) キャッシュシステム
US20060248281A1 (en) Prefetching using hashed program counter
US20060248280A1 (en) Prefetch address generation implementing multiple confidence levels
US8595443B2 (en) Varying a data prefetch size based upon data usage
WO2006118667A2 (en) Prefetching across a page boundary
US12111767B2 (en) Method and apparatus for a page-local delta-based prefetcher
GB2468007A (en) Data processing apparatus and method dependent on streaming preload instruction.
US11086777B2 (en) Replacement of cache entries in a set-associative cache
US8266381B2 (en) Varying an amount of data retrieved from memory based upon an instruction hint
US10990543B1 (en) Apparatus and method for arbitrating access to a set of resources
US11853220B2 (en) Prefetcher training
CN115964309A (zh) 预取
US11379377B2 (en) Lookup hint information
CN117120989A (zh) 用于dram高速缓存标签预取器的方法和装置
CN114450668A (zh) 电路和方法
US8176254B2 (en) Specifying an access hint for prefetching limited use data in a cache hierarchy
US12099447B2 (en) Setting cache policy information for prefetched cache entry
US11455253B2 (en) Set indexing for first-level and second-level set-associative cache

Legal Events

Date Code Title Description
A201 Request for examination