KR102357246B1 - 캐시 교체 정책을 위한 스케일링된 세트 듀얼링 - Google Patents

캐시 교체 정책을 위한 스케일링된 세트 듀얼링 Download PDF

Info

Publication number
KR102357246B1
KR102357246B1 KR1020187033474A KR20187033474A KR102357246B1 KR 102357246 B1 KR102357246 B1 KR 102357246B1 KR 1020187033474 A KR1020187033474 A KR 1020187033474A KR 20187033474 A KR20187033474 A KR 20187033474A KR 102357246 B1 KR102357246 B1 KR 102357246B1
Authority
KR
South Korea
Prior art keywords
cache
counter
subsets
subset
response
Prior art date
Application number
KR1020187033474A
Other languages
English (en)
Other versions
KR20190008249A (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 KR20190008249A publication Critical patent/KR20190008249A/ko
Application granted granted Critical
Publication of KR102357246B1 publication Critical patent/KR102357246B1/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/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/281Single cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • 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

Abstract

처리 시스템(100, 300)은, 캐시 라인들의 제1서브세트(320)와 캐시 라인들의 제2서브세트들(320)로 분할되는 캐시 라인들(315)을 포함하는 캐시(300)를 포함한다. 처리 시스템은, 또한, 캐시 라인들의 제2서브세트들에 연관된 하나 이상의 카운터(330)를 포함한다. 처리 시스템은, 제2서브세트들에 연관된 캐시 미스 또는 캐시 히트에 응답하여 하나 이상의 카운터를 수정하도록 구성된 프로세서(305)를 더 포함한다. 하나 이상의 카운터는, 캐시 히트 또는 캐시 미스를 생성한 메모리 액세스 요청의 하나 이상의 특성에 의해 결정되는 양만큼 수정된다.

Description

캐시 교체 정책을 위한 스케일링된 세트 듀얼링
본 개시내용은, 일반적으로 처리 시스템에 관한 것으로서, 더욱 구체적으로는 처리 시스템에서의 캐시 교체 정책의 구성에 관한 것이다.
처리 시스템은, 처리 시스템의 처리 유닛들에 의해 더욱 신속하게(예를 들어, 레이턴시가 더욱 짧게) 액세스될 수 있는 캐시에 DRAM과 같은 메모리 요소로부터의 정보의 복사본을 저장한다. 캐시 내의 엔트리는, 연관 캐시에서의 인덱스(index)와 웨이(way)에 의해 표시될 수 있는 캐시 라인이라고 한다. 캐시들은, L1 캐시와 같이 빠르지만 비교적 작은 하위 레벨 캐시 및 L2 캐시와 같이 느리지만 비교적 큰 상위 레벨 캐시를 포함하는 캐시들의 계층 구조로 조직될 수 있다. 캐시는, 또한, 포괄적이어서 하위 레벨 캐시에 저장된 모든 데이터가 상위 레벨 캐시에도 저장될 수 있다. 메모리 액세스 요청은 초기에 최하위 레벨 캐시로 전달된다. 요청이 최하위 레벨 캐시의 캐시 라인에서 히트(hit)되면, 캐시 라인의 데이터가 요청 처리 유닛으로 리턴된다. 요청이 하위 레벨 캐시에서 미스(miss)되면, 요청은 다음 상위 레벨 캐시로 전송된다. 요청이 상위 레벨 캐시의 캐시 라인에서 히트하면, 상위 레벨 캐시 라인의 데이터가 요청 처리 유닛으로 리턴된다. 그렇지 않은 경우, 요청은 다음 상위 레벨 캐시 또는 메인 메모리로 전송된다. 하위 레벨 캐시의 캐시 미스에 응답하여 상위 레벨 캐시(또는 메인 메모리)로부터 검색되는 데이터는 하위 레벨 캐시의 캐시 라인에도 저장된다. 하위 레벨 캐시가 가득 차 있다면, 하위 레벨 캐시의 캐시 라인들 중 하나를 축출하여 새로운 데이터를 위한 공간을 만든다.
본 개시내용은 통상의 기술자가 첨부 도면을 참조하여 더욱 잘 이해할 수 있고, 그 많은 특징과 이점이 명백해질 수 있다. 상이한 도면에서 동일한 참조 부호를 사용하는 것은 유사하거나 동일한 항목을 나타낸다.
도 1은 일부 실시예에 따른 처리 시스템의 블록도이다.
도 2는 일부 실시예에 따른 포괄적 캐시의 블록도이다.
도 3은 일부 실시예에 따라 캐시 교체 정책을 구성하도록 세트 듀얼링(set dueling)을 구현하는 처리 시스템의 블록도이다.
도 4는 일부 실시예에 따라 캐시의 서브세트에서 캐시 히트를 생성한 메모리 액세스 요청의 유형에 기초하여 증분값을 선택하는 방법의 흐름도이다.
도 5는 일부 실시예에 따라 캐시에서 캐시 라인들의 서브세트에 연관된 캐시 미스에 대한 레이턴시에 기초하여 증분값을 선택하는 방법의 흐름도이다.
도 6은 일부 실시예에 따라 메모리 액세스 요청 유형 및 레이턴시에 기초하여 세트 듀얼링 카운터에 대한 증분값을 찾기 위한 카운터 수정 룩업 테이블(LUT)의 도이다.
도 7은 일부 실시예에 따라 세트 듀얼링 카운터의 값에 기초하여 캐시 교체 정책을 구성하는 방법의 흐름도이다.
도 8은 일부 실시예에 따라 메모리 액세스 요청의 특성에 기초하여 결정되는 세트 대 듀얼링 카운터(set to dueling counter)에 대한 증분값을 사용하여 스케일링된 세트 듀얼링을 선택적으로 활성화하는 방법의 흐름도이다.
캐시 교체 정책은 축출되어야 하는 캐시 라인을 결정하는 데 사용된다. 예를 들어 최저 사용 빈도(Least Recently Used: LRU) 캐시 교체 정책은, 각 캐시 라인이 사용된 시점을 추적하고, 캐시 미스가 발생하는 경우 저 사용 빈도 캐시 라인을 축출하여 새로운 데이터를 위한 공간을 만든다. 다른 일례로, 재참조 간격 예측(re-reference interval prediction: RRIP)은, 캐시 라인의 데이터가 미래에 사용될 가능성을 예측하는 데 사용된다. RRIP를 구현하는 캐시는 N비트값을 각 캐시 라인과 연관짓는다. 캐시 라인에 대한 N비트값은, 새로운 데이터가 캐시 라인에 삽입될 때 초기값(예를 들어, 1 또는 2)으로 설정된다. 이어서, 캐시 라인에 대한 N비트값은 히트에 응답하여 감분(또는 0으로 설정)될 수 있고, 나머지 캐시 라인들에 대한 N비트값들은 히트에 응답하여 증분된다. 높은 N비트값을 갖는 캐시 라인은, 낮은 N비트값을 갖는 캐시 라인보다 미래에 사용될 가능성이 작다. 따라서, 최고 N비트값을 갖는 캐시 라인은, 캐시가 가득 찬 경우 캐시 미스에 응답하여 축출될 수 있다. 상이한 애플리케이션들에 대해 상이한 캐시 교체 정책들이 더욱 효과적일 수 있다(예를 들어, 높은 히트 레이트 또는 낮은 미스 레이트를 생성할 수 있다). 예를 들어, LRU 교체 정책은 한 애플리케이션에 대하여 (RRIP에 비해) 높은 히트 레이트를 초래할 수 있고, RRIP 교체 정책은 다른 애플리케이션에 대하여 (LRU에 비해) 높은 히트 레이트를 초래할 수 있다. 또 다른 일례로, RRIP 교체 정책은, 애플리케이션에 따라, 초기 N비트값 1 또는 초기 N비트값 2를 사용하도록 구성된 경우 더 높은 히트 레이트를 생성할 수 있다.
세트 듀얼링은, 다른 캐시 교체 정책을 사용하도록 구성된 캐시의 서브세트에 대해 감시되는 히트 레이트 또는 미스 레이트에 기초하여 캐시 교체 정책을 동적으로 선택하는 데 사용될 수 있다. 예를 들어, 제1서브세트의 캐시 히트에 응답하여 카운터를 증분하고 제2서브세트의 캐시 히트에 응답하여 카운터를 감분함으로써, 2개의 서브세트의 성능을 감시한다. 이어서, 카운터의 값을 사용하여, 제1서브세트 또는 제2서브세트에 연관된 정책을 선택하고, 선택된 정책을 사용하여 캐시를 구성한다. 예를 들어, RRIP 교체 정책을 구현하는 캐시의 캐시 라인들의 제1서브세트는 새롭게 삽입된 캐시 라인들의 N비트값을 1로 초기화하고, 캐시 라인들의 제2서브세트는 새롭게 삽입된 캐시 라인들의 N비트값을 2로 초기화한다. 시스템은, 제1 및 제2서브세트의 캐시 히트에 응답하여 카운터를 수정하고, 이어서 소정의 시간 간격 후에 카운터의 값에 기초하여 N비트값인 1 또는 2를 선택적으로 사용하여 캐시에 대하여 새롭게 삽입된 캐시 라인의 N비트값을 초기화한다. 그러나, 기존의 세트 듀얼링 알고리즘은, 상이한 유형의 동작들에 의한 미스에 대한 상이한 레이턴시 페널티 또는 전체 성능에 미치는 상이한 유형의 동작들의 상이한 영향을 고려하지 않는다.
캐시의 성능은, 상이한 캐시 교체 정책들을 구현하는 캐시의 캐시 라인들의 서브세트들 간에 세트 듀얼링을 수행함으로써 개선될 수 있다. 상이한 서브세트들에 연관된 캐시 히트 또는 캐시 미스에 응답하여, 캐시 히트 또는 캐시 미스를 생성한 메모리 액세스 요청을 발행한 동작의 유형에 기초하여 결정된 값에 의해 하나 이상의 카운터가 수정된다. 예를 들어, 제1서브세트에 연관된 모든 캐시 히트에 대해 카운터를 1만큼 증분하는 것 대신(또는 제2서브세트에 연관된 모든 캐시 히트에 대해 카운터를 1만큼 감분하는 것 대신),프리페치와 같은 더욱 많은 추측 동작에 의해 생성되는 캐시 히트는 카운터를 1만큼 증분 또는 감분하고, 명령어 캐시 또는 데이터 캐시의 히트와 같은 더 적은 추측 동작에 의한 캐시 히트는 카운터를 2만큼 증분 또는 감분하고, 페이지 테이블 워크를 트리거하는 변환 색인 버퍼(translation lookaside buffer)에 대한 캐시 히트는 카운터를 3만큼 증분 또는 감분한다.
일부 실시예에서, 카운터를 수정하는 데 사용되는 값도 캐시 미스에 대한 레이턴시 패널티에 기초하여 결정된다. 예를 들어, 카운터는, 메모리 액세스 요청이 캐시의 다음 레벨에서 히트하면 캐시의 현재 레벨에서 제1서브세트에 연관된 캐시 미스에 응답하여 1만큼 감분될 수 있다(그리고 현재 레벨의 제2서브세트에 연관된 캐시 미스에 응답하여 1만큼 증분될 수 있다). 카운터는, 메모리 액세스 요청이 캐시의 다음 레벨에서 미스되고 원격 캐시에서 히트하면 캐시의 현재 레벨에서 제1서브세트에 연관된 캐시 미스에 응답하여 2만큼 감분될 수 있다(그리고 제2서브세트에 연관된 캐시 미스에 응답하여 2만큼 증분될 수 있다). 카운터는, 메모리 액세스 요청이 원격 캐시에서 미스되고 메모리에서 판독되면 제1서브세트에 연관된 캐시 미스에 응답하여 3만큼 감분될 수 있다(그리고 제2서브세트에 연관된 캐시 미스에 응답하여 3만큼 증분될 수 있다).
레이턴시에 기초하여 증분값을 수정함으로써, 레이턴시 증가가 성능에 큰 영향을 미치는 경우 캐시 성능을 크게 개선한다. 그러나, 일부 경우에는, 시스템 대역폭이 제한되고, 상위 레벨 캐시(또는 메모리)로부터 미스가 발생한 하위 레벨 캐시로 데이터를 이동시키도록 각 캐시 미스가 추가 대역폭을 소비하기 때문에, 캐시 미스의 절대 개수가 최소화되어야 한다. 따라서, 일부 실시예에서는, 시스템이 대역폭 제한되는 경우 하위 레벨 캐시 및 메모리 대역폭 피드백을 사용하여 증분값을 스케일링하는 것과 모든 캐시 미스를 동등하게 처리하는 것 간에 선택하여 캐시 미스의 전체 개수를 최소화한다.
도 1은 일부 실시예에 따른 처리 시스템(100)의 블록도이다. 처리 시스템(100)은, 독립형 장치로서 또는 시스템-온-칩(SOC)의 일부로서 구현될 수 있다. 처리 시스템(100)은 처리 유닛(105)을 포함한다. 처리 유닛(105)의 예는, 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 가속 처리 유닛(APU), 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 등을 포함한다. 처리 유닛(105)은, 독립적으로, 동시에, 또는 병렬로 데이터를 조작하거나 명령어를 실행하도록 구성된 복수의 프로세서 코어(110, 111, 112)(본 명세서에서는 "코어(110 내지 112)"로 통칭함)를 포함한다. 코어(110 내지 112)는, 또한, 연산 유닛으로서 또는 유사한 용어를 사용하여 지칭될 수 있다.
처리 시스템(100)은, DRAM으로서 구현될 수 있는 메인 메모리를 포함한다. 도시된 실시예에서, 메인 메모리는 처리 시스템(100)의 다수의 소켓에 걸쳐 분산된다. 로컬 DRAM(115)은 처리 유닛(105)과 동일한 소켓에 구현되고, 하나 이상의 원격 DRAM(120)은 처리 유닛(105)과는 다른 소켓에 구현된다. 따라서, 로컬 DRAM(115)에 대한 메모리 액세스의 레이턴시는, 통상적으로 원격 DRAM(120)에 대한 메모리 액세스 요청에 대한 레이턴시보다 짧다.
처리 시스템(100)은, 또한, 명령어 또는 데이터의 복사본을 캐시에 저장함으로써 로컬 DRAM(115) 또는 원격 DRAM(120)에 저장된 명령어 또는 데이터에 대한 액세스 레이트를 높이도록 사용되는 계층적(또는 멀티레벨) 캐시 시스템을 구현한다. 도 1에 도시된 계층적 캐시 시스템은, 본 명세서에서 설명하는 세트 듀얼링 기술의 일부 실시예를 구현하는 계층적 캐시 시스템의 일례로서 의도된 것이다. 그러나, 처리 시스템(100)에서 구현되는 계층적 캐시 시스템의 일부 실시예는 도 1에 도시된 계층적 캐시 시스템과 상이하다. 예를 들어, 본 명세서에서 설명하는 세트 듀얼링 기술의 일부 실시예를 구현하는 다른 계층적 캐시 시스템은, 더 많거나 적은 개수의 캐시, 더 많거나 적은 캐시 계층, 또는 캐시의 다른 계층적 배열을 포함할 수 있다. 또한, 캐시들은, 처리 유닛(105)과 동일한 기판, 웨이퍼, 또는 다이 상에 구현될 수 있고 또는 구현되지 않을 수 있다.
계층적 캐시 시스템은, 처리 유닛(105) 및 로컬 DRAM(115)과 동일한 소켓 상에 구현되지만 처리 유닛(105)과 동일한 기판, 웨이퍼, 또는 다이 상에는 있지 않는 원격 캐시(125)를 포함한다. 원격 캐시(125)는, 또한, 계층 4(L4) 캐시라고 칭할 수 있다. 캐시 라인은 인덱스와 웨이의 조합으로 식별된다. 원격 캐시(125)의 일부 실시예는, 로컬 DRAM(115) 또는 원격 DRAM(120)의 각 라인이 원격 캐시(125)의 하나보다 많은 캐시 라인(또는 웨이)에 잠재적으로 복사될 수 있도록 로컬 DRAM(115) 또는 원격 DRAM(120)에 연관된다. 원격 캐시(125)의 연관성의 예는, 2-웨이 연관성, 4-웨이 연관성, 8-웨이 연관성, 16-웨이 연관성, 직접 맵핑, 완전 연관 캐시 등을 포함한다. 로컬 DRAM(115) 또는 원격 DRAM(120)에 비해, 원격 캐시(125)는 고속 메모리 요소를 사용하여 구현된다. 원격 캐시(125)는, 또한, 정보가 코어(110 내지 112)와 원격 캐시(125) 간에 더욱 신속하게 또는 더욱 짧은 레이턴시로 교환되도록 (DRAM(115,120)에 비해) 코어(110 내지 112)에 더 가깝게 논리적으로 또는 물리적으로 배치될 수 있다.
처리 유닛(105)은, 원격 캐시(125)에 저장된 명령어 또는 데이터의 복사본을 저장하기 위한 레벨 3(L3) 캐시(130)를 구현한다. 캐시 라인들은 인덱스와 웨이의 조합에 의해 식별된다. L3 캐시(130)의 일부 실시예는, 원격 캐시(125)의 각 라인이 L3 캐시(130)의 각 인덱스에 연관된 하나보다 많은 웨이로 및 이러한 웨이로부터 잠재적으로 복사될 수 있도록 원격 캐시(125)와 연관된다. 원격 캐시(125)에 비해, L3 캐시(130)는 고속 메모리 요소를 사용하여 구현된다. L3 캐시(130)는, 또한, 정보가 코어(110 내지 112)와 L3 캐시(130) 간에 더욱 신속하게 또는 더욱 짧은 레이턴시로 교환되도록 (원격 캐시(125)에 비해) 코어(110 내지 112)에 더 가깝게 논리적으로 또는 물리적으로 배치될 수 있다.
계층적 캐시 시스템은, 또한, L3 캐시(130)에 저장된 명령어 또는 데이터의 복사본을 저장하기 위한 레벨 2(L2) 캐시(135)를 포함한다. 캐시 라인들은 인덱스와 웨이의 조합에 의해 식별된다. L2 캐시(135)의 일부 실시예는, L3 캐시(130)의 각 라인이 L2 캐시(135)의 각 인덱스에 연관된 하나보다 많은 웨이로 및 이러한 웨이로부터 잠재적으로 복사될 수 있도록 L3 캐시(130)에 연관된다. L3 캐시(130)에 비해, L2 캐시(135)는 고속 메모리 요소를 사용하여 구현된다. L2 캐시(135)는, 또한, 정보가 코어(110 내지 112)와 L2 캐시(135) 간에 더욱 신속하게 또는 더욱 짧은 레이턴시로 교환되도록 (L3 캐시(130)에 비해) 코어(110 내지 112)에 더욱 가깝게 논리적으로 또는 물리적으로 배치될 수 있다.
계층적 캐시 시스템은 레벨 1(L1) 캐시들(140, 141, 142)을 또한 포함하며, 이들 캐시는 본 명세서에서 총괄적으로 "L1 캐시들(140 내지 142)"이라고 칭한다. L1 캐시들(140 내지 142)의 각각은, 코어들(110 내지 112) 중 대응하는 코어에 연관되고, 코어들(110 내지 112) 중 그 대응하는 코어에 의해 사용하기 위한 명령어 또는 데이터의 복사본을 저장한다. L2 캐시(135)와 관련하여, L1 캐시들(140 내지 142)은, L1 캐시들(140 내지 142)의 캐시 라인들에 저장된 정보가 대응하는 코어들(110 내지 112)에 의해 더욱 신속하게 검색될 수 있도록 고속 메모리 요소들을 사용하여 구현된다. L1 캐시들(140 내지 142)은, 또한, 정보가 코어들(110 내지 112)과 L1 캐시들(140 내지 142) 간에 (L2 캐시(135)와의 통신에 비해) 더욱 신속하게 또는 더욱 짧은 레이턴시로 교환되도록 (L2 캐시(135)에 비해) 대응하는 코어들(110 내지 112)에 더 가깝게 논리적으로 또는 물리적으로 배치될 수 있다. L1 캐시들(140 내지 142)의 일부 실시예는, 명령어의 복사본을 저장하는 명령어 캐시들(145) 및 데이터의 복사본을 저장하는 데이터 캐시들(150)로 분할된다. 명료하도록, 명령어 캐시(145)와 데이터 캐시(150)는 L1 캐시(140)에만 도시되어 있다. 그러나, L1 캐시들(141, 142)도 명령어 캐시와 데이터 캐시를 포함할 수 있다.
상위 레벨 캐시의 일부 실시예는 하위 레벨 캐시들 중 하나 이상을 포함한다. 예를 들어, L2 캐시(135)는, L1 캐시들(140 내지 142)에 저장된 캐시 라인들이 L2 캐시(135)에도 저장되도록 L1 캐시들(140 내지 142)을 포함할 수 있다.
동작시, 프로세서 코어들(110 내지 112)은, 메모리 액세스 요청을 대응하는 L1 캐시들(140 내지 142)에 전송하여 L1 캐시들(140 내지 142)에 저장된 명령어 또는 데이터의 복사본에 대한 액세스를 요청한다. 예를 들어, 메모리 액세스 요청 내의 어드레스 또는 어드레스의 일부와 캐시 내의 캐시 라인에 연관된 캐시 태그 간의 매칭에 의해 표시되는 바와 같이, 요청된 정보가 대응 캐시에 저장되어 있다면, 프로세서 코어에는 캐시 라인에 대한 액세스가 주어진다. 이것을 통상적으로 캐시 히트(cache hit)라고 한다. 통상적으로 캐시 미스라고 하는, 요청된 정보가 대응 캐시의 임의의 캐시 라인에 저장되어 있지 않으면, 메모리 액세스 요청은 L2 캐시(135)로 포워딩된다. 메모리 액세스 요청이 L2 캐시(135)에서 히트하면, 프로세서 코어는 L2 캐시(135)의 캐시 라인에 대한 액세스를 제공받는다. 메모리 액세스 요청이 L2 캐시(135)에서 미스되면, 메모리 액세스 요청은 L3 캐시(130)로 포워딩된다. 이 프로세스는, 캐시 히트가 발생하거나 요청된 정보가 DRAM(115, 120)에서 액세스될 때까지 캐시의 점진적으로 높은 레벨에서 반복된다.
원격 캐시(125), L3 캐시(130), L2 캐시(135), 또는 L1 캐시들(140 내지 142) 내의 캐시 라인들은 캐시 미스에 응답하여 교체될 수 있다. 예를 들어, 메모리 액세스 요청이 L1 캐시(140)에서 미스되고 L2 캐시(135)에서 히트되면, L2 캐시(135)의 액세스된 캐시 라인에 저장된 명령어 또는 데이터는, L1 캐시(140)의 캐시 라인에 복사되어, 대응하는 코어(110)에 의한 후속 메모리 액세스 요청을 위해 이용 가능하다. 이어서, 요청 코어(110)는 대응하는 L1 캐시(140)의 캐시 라인에 액세스한다. 캐시 라인들 중 하나에 미리 저장된 정보는, 모든 캐시 라인들이 현재 정보를 저장하고 있다면 새로운 정보를 위한 공간을 만들도록 축출된다. 캐시 라인들은 교체 정책에 기초하여 축출되도록 선택된다. L2 캐시(135)와 L1 캐시들(140 내지 142)의 일부 실시예는 재참조 간격 예측(RRIP)에 기초하는 교체 정책을 구현한다. 예를 들어, L2 캐시(135)와 L1 캐시들(140 내지 142)의 각 캐시 라인은, 새로운 데이터가 캐시 라인에 삽입될 때 초기값(예를 들어, 1 또는 2)으로 설정된 N비트값에 연관된다. 캐시 라인에 대한 N비트값은 히트에 응답하여 감분(또는 0으로 설정)되고, 나머지 캐시 라인들에 대한 N비트값들은 히트에 응답하여 증분된다. 최고 N비트값을 갖는 캐시 라인은, 캐시가 가득 찬 경우 캐시 미스에 응답하여 축출된다.
또한, 처리 유닛(105)은, 처리 시스템(100)에서 가상 메모리를 구현하는 데 사용되는 페이지 테이블(155)과 변환 색인 버퍼(TLB)(160)를 포함한다. 페이지 테이블(155)은, 가상 어드레스와 물리적 어드레스 간의 맵핑을 저장하는 데이터 구조이다. 가상 어드레스는, 물리적 어드레스에 의해 표시되는 메모리 위치에 액세스하도록 코어들(110 내지 112)에 의해 사용된다. TLB(160)는, 가상 어드레스들의 서브세트의 맵핑의 복사본을 대응하는 물리적 어드레스들에 저장하는 캐시이다. 코어들(110 내지 112)은, 가상 어드레스의 물리적 어드레스로의 맵핑에 액세스하기 위한 요청을 TLB(160)에 전송한다. 가상 대 물리적 어드레스 맵핑이 TLB(160)에 저장되는 경우, TLB 히트가 발생한다. 그렇지 않다면, TLB 미스가 발생하고, 그 요청은 페이지 테이블(155)로 향한다. 페이지 테이블 워크를 수행하여, 페이지 테이블(155)의 물리적 어드레스에 대한 가상 물리적 어드레스의 요청된 맵핑을 위치파악한다.
상이한 캐시 교체 정책들을 사용하여, 원격 캐시(125), L3 캐시(130), L2 캐시(135), L1 캐시들(140 내지 142), 명령어 캐시(145), 데이터 캐시(150), 또는 TLB(160)를 포함하는 캐시들로부터 축출할 캐시 라인을 선택할 수 있다. 예를 들어, 캐시는 LRU 캐시 교체 정책 또는 RRIP 캐시 교체 정책을 사용할 수 있다. 다른 일례로, 캐시는, 새로운 캐시 라인, 상이한 최대 N비트값 등에 대해 상이한 초기 N비트값을 사용하도록 구성된 RRIP 캐시 교체 정책을 사용할 수 있다. 캐시가 사용하는 캐시 교체 정책은 세트 듀얼링 기술을 사용하여 동적으로 결정된다. 캐시의 일부 실시예는, 메인 부분과, 캐시 라인들의 두 개 이상의 서브세트로 분할된다. 캐시 라인들의 서브세트들은 상이한 캐시 교체 정책들에 따라 동작한다. 코어들(110 내지 112) 중 하나는, 서브세트들에 연관된 캐시 히트 또는 캐시 미스에 응답하여 서브세트들에 연관된 하나 이상의 카운터를 수정할 수 있다. 예를 들어, 제1서브세트 및 제2서브세트에 연관된 카운터는, 제1서브세트에 대한 캐시 히트에 응답하여 증분될 수 있고, 제2서브세트에 대한 캐시 히트에 응답하여 감분될 수 있다. 각 캐시 히트 또는 캐시 미스에 대한 카운터에 대한 수정량은, 캐시 히트 또는 캐시 미스를 생성한 메모리 액세스 요청의 특성에 의해 결정된다. 메모리 액세스 요청의 특성의 예는, 메모리 액세스 요청의 유형, 메모리 액세스 요청의 유형에 연관된 추측의 정도, 캐시 미스에 연관된 레이턴시 등을 포함한다. 이어서, 캐시의 메인 부분에 의해 사용되는 캐시 교체 정책은, 본 명세서에서 설명하는 바와 같이, 카운터의 값에 기초하여 제1서브세트 및 제2서브세트에 의해 구현되는 정책들 중 하나에 따라 동작하도록 동적으로 구성될 수 있다.
도 2는 일부 실시예에 따른 포괄적 캐시(200)의 블록도이다. 포괄적 캐시(200)는, 도 1에 도시된 원격 캐시(125), L3 캐시(130), 또는 L2 캐시(135)의 일부 실시예를 구현하는 데 사용된다. 포괄적 캐시(200)는, 캐시 라인들(210)의 세트(205)를 포함한다(명료하도록 하나의 캐시 라인만이 참조 번호로 표시되어 있다). 포괄적 캐시(200)를 예시한 실시예는, 캐시 라인들이 인덱스(0, N-1)와 웨이(0, 3)에 의해 표시되도록 4-웨이 연관성을 갖는다. 그러나, 포괄적 캐시(200)의 다른 실시예는 다른 연관성을 가질 수 있다.
포괄적 캐시(200)는, 또한, 각 캐시 라인(210)에 연관된 N비트값들(220)의 어레이(215)를 포함한다. 명료함을 위해 N비트값들(220) 중 하나만이 참조 번호에 의해 표시되어 있다. 도 2에 도시된 N비트값들(220)은 0 내지 3 범위의 값을 나타내도록 2비트를 포함하지만, 다른 실시예에서는 값들의 더 크거나 작은 범위를 나타내도록 더 많거나 적은 비트를 사용할 수 있다. 캐시 라인(210)에 대한 N비트값(220)은, 새로운 데이터가 캐시 라인에 삽입될 때 초기값으로 설정된다. 예를 들어, 인덱스 0과 웨이 1에 의해 표시되는 캐시 라인(210)에 대한 N비트값(220)은, 제1비트를 0으로 설정하고 제2비트를 1로 설정함으로써, 값 1로 초기화된다. 캐시 라인(210)에 대한 N비트값(220)은 캐시 라인(210)에서의 히트에 응답하여 감분된다. 예를 들어, 인덱스 N-1과 웨이 3에 의해 표시되는 캐시 라인(210)에 대한 N비트값(220)은, 제1비트를 0으로 설정하고 제2비트를 0으로 설정함으로써, 값 0으로 설정된다. 나머지 캐시 라인들에 대한 N비트값은 히트에 응답하여 증분된다. 본 명세서에서 설명하는 바와 같이, N비트값(220)이 증분 또는 감분되는 양은, N비트값(220)이 증분 또는 감분되게 하는 캐시 히트 또는 캐시 미스를 생성하는 메모리 액세스 요청의 특성에 기초하여 결정된다.
포괄적 캐시(200)는, 또한, 캐시 라인들(210)의 각각이 도 1에 도시된 L1 캐시들(140 내지 142)과 같은 하나 이상의 하위 레벨 캐시에 포함되는지 여부를 나타내는 상태 정보(225)를 유지한다. 상태 정보(225)는, 대응 캐시 라인이 하위 레벨 캐시에 포함됨을 나타내기 위한 하나의 값(예를 들어, 값 1) 및 대응 캐시 라인이 하위 레벨 캐시에 포함되지 않음을 나타내기 위한 다른 값(예를 들어, 값 0)으로 설정되는 비트들(230)을 포함한다. 예를 들어, 인덱스 0과 웨이 0에 의해 표시되는 캐시 라인(210)에 연관된 비트(230)의 값은, 대응 캐시 라인이 하나 이상의 하위 레벨 캐시에 포함됨을 나타내기 위한 값 1로 설정된다. 다른 일례로, 인덱스 0과 웨이 1에 의해 표시되는 캐시 라인(210)에 연관된 비트(230)의 값은, 대응 캐시 라인이 하나 이상의 하위 레벨 캐시에 포함되지 않음을 나타내기 위한 값 0으로 설정된다.
캐시 라인들(210)은, 어레이(215)의 N비트값들(230)에 기초하여 (예를 들어, 캐시(200)에 대한 캐시 미스에 응답하여) 축출되도록 선택된다. 예를 들어, 최대 N비트값 3을 갖는 캐시 라인들은 캐시 미스에 응답하여 캐시(200)로부터 축출되도록 선택될 수 있다. 그러나, 캐시 라인(210)이 하위 레벨 캐시들 중 하나 이상 내에 캐시 라인을 포함하는 경우, 캐시(200)로부터 캐시 라인(210)을 축출하려면, 하나 이상의 하위 레벨 캐시로부터 하나 이상의 캐시 라인을 축출해야 한다. 따라서, 일부 실시예에서는, 최대 N비트값을 갖는 캐시 라인들 모두가 하나 이상의 하위 레벨 캐시에 캐시 라인들을 포함하는 경우, 축출을 위해 더 낮은 N비트값을 갖는 캐시 라인들을 고려한다. 예를 들어, 인덱스/웨이 조합 (0, 0), (0, 3), 및 (1, 0)에 의해 표시되는 캐시 라인들(210)은, 최대 N비트값과 동일한 N비트값(220)을 갖지만, 이들 캐시 라인(210) 모두는, 상태 정보(225)의 대응하는 비트(230)에 1의 값으로 표시되는 바와 같이 하나 이상의 하위 레벨 캐시 라인을 포함한다. 따라서, 축출을 위해 더 낮은 N비트값(220)을 갖는 캐시 라인을 고려한다. 예를 들어, 인덱스/웨이 조합 (0, 2)에 의해 표시되는 캐시 라인(210)은, 2의 임계값과 동일한 N비트값을 가지며, 따라서 화살표(235)로 표시되는 바와 같이 캐시(200)로부터 축출될 수 있다. 축출을 위한 캐시 라인을 고려하기 위한 임계 N비트값은, 예를 들어, 본 명세서에서 설명하는 바와 같이 세트 듀얼링 기술을 사용하여 동적으로 설정될 수 있다.
도 3은 일부 실시예에 따라 캐시 교체 정책을 구성하도록 세트 듀얼링을 구현하는 처리 시스템(300)의 블록도이다. 처리 시스템(300)은, 도 1에 도시된 처리 시스템(100)의 일부 실시예의 일부를 구현하는 데 사용된다. 처리 시스템은 코어(305) 및 캐시(310)를 포함한다. 코어(305)는 코어들(110 내지 112)의 일부 실시예를 구현하는 데 사용되고, 캐시(310)는, 도 1에 도시한 원격 캐시(125), L3 캐시(130), L2 캐시(135), L1 캐시들(140 내지 142), 명령어 캐시(145), 또는 데이터 캐시(150)의 일부 실시예를 구현하는 데 사용된다. 예시한 캐시(310)의 실시예는, 개별 캐시 라인들(315)(명료함을 위해 하나의 캐시 라인만이 참조 번호로 표시되어 있음)의 식별자들이 (0, 0) 내지 (N-1, 3) 범위에 있도록 N개의 인덱스를 포함하고 4-웨이 연관성을 갖는다. 그러나, 캐시(310)의 다른 실시 예들에서는 다른 연관성을 사용할 수 있다.
캐시(310)는, 제1서브세트(320), 제2서브세트(325), 및 캐시(310)의 메인 부분이라고 칭하는 캐시 라인들의 나머지 부분으로 분할된다. 일부 실시예에서, 제1서브세트(320)와 제2서브세트(325) 내의 캐시 라인들은 대응하는 캐시 라인들의 인덱스에 의해 식별된다. 예를 들어, 제1서브세트(320)는 인덱스 J에 연관된 캐시 라인들을 포함하고, 제2서브세트(325)는 인덱스 K에 연관된 캐시 라인들을 포함한다. 그러나, 제1서브세트와 제2서브세트 내의 캐시 라인들은, 또한, 캐시 라인들(315)의 다른 식별자에 기초하여 분할될 수 있다. 또한, 캐시(310)의 일부 실시예는 추가 서브세트들로 분할될 수 있다.
카운터(330)는 제1서브세트(320) 및 제2서브세트(325)에 연관된다. 카운터(330)의 값은, 제1서브세트(320) 또는 제2서브세트(325)에 대한 캐시 히트에 응답하여 코어(305)에 의해 수정된다. 예를 들어, 코어(305)는, 제1서브세트(320)의 캐시 히트에 응답하여 카운터(330)를 증분하고, 제2서브세트(325)의 캐시 히트에 응답하여 카운터(330)를 감분한다. 따라서, 카운터(330)의 값은, 제1서브세트(320)의 캐시 히트에 응답하여 증가하고 제2서브세트(325)의 캐시 히트에 응답하여 감소한다. 캐시 히트의 수는 서브세트들(320, 325)에 의해 구현되는 캐시 교체 정책의 상대적 유효성을 측정한 것이다. 따라서, 카운터(330)의 값을 감시함으로써, 코어(305)는 처리 시스템(300)의 현재 동작 상태 하에서 캐시 교체 정책들 중 어느 것이 더 효과적인지를 결정할 수 있다. 이어서, 코어(305)는 가장 효과적인 캐시 교체 정책에 따라 동작하도록 캐시(310)의 메인 부분을 구성한다.
코어(305)의 일부 실시예는, 제1서브세트(320) 또는 제2서브세트(325)에 연관된 캐시 미스에 응답하여 카운터(330)의 값을 수정한다. 캐시 미스가 그 자체로 특정 캐시 라인에 연관되지는 않지만, 캐시 미스는, DRAM 등의 메인 메모리 내의 위치 또는 상위 레벨 캐시의 캐시 히트에 기초하여 제1서브세트(320) 또는 제2서브세트(325)에 연관될 수 있다. 예를 들어, 하위 레벨 캐시의 각 인덱스는 상위 레벨 캐시(또는 메인 메모리 내의 위치)에 있는 인덱스들의 특정 세트에 맵핑된다. 따라서, 제1서브세트(320)와 제2서브세트(325)는 메인 메모리의 상이한 위치 또는 상위 레벨 캐시에 있는 인덱스들의 상이한 세트들에 맵핑된다. 상위 레벨 캐시들 중 하나의 상위 레벨 캐시에서의 캐시 히트(또는 메인 메모리에 대한 액세스)는, 캐시 히트 위치에서의 정보가, 상위 레벨 캐시의 캐시 히트의 인덱스에 맵핑되는 하위 레벨 캐시의 인덱스의 웨이로 복사되게 한다. 코어(305)는, 정보가 제1서브세트(320) 또는 제2서브세트(325)의 웨이로 복사되는 것에 응답하여 캐시 미스를 제1서브세트(320) 또는 제2서브세트(325)와 연관짓는다. 코어(305)는, 제1서브세트(320)에 연관된 캐시 미스에 응답하여 카운터(330)를 감분하고, 제2서브세트(325)에 연관된 캐시 미스에 응답하여 카운터(330)를 증분한다. 코어(305)의 일부 실시예는, 제1서브세트(320) 및 제2서브세트(325)에 연관된 캐시 히트와 캐시 미스 모두에 응답하여 카운터(330)를 증분 또는 감분할 수 있다.
도 3에 도시된 카운터(330)의 일부 실시예는 하나보다 많은 카운터를 나타낸다. 예를 들어, 단일 카운터(330)를 증분 또는 감분하는 것 대신, 코어(305)는 제1서브세트(320) 및 제2서브세트(325)에 대하여 개별적인 카운터들을 유지한다. 개별 카운터들은, 각각의 제1서브세트(320) 또는 제2서브세트(325)에 연관된 캐시 히트 또는 캐시 미스에 응답하여 증분 또는 감분된다. 이어서, 개별 카운터들의 값들을 비교하여 가장 효과적인 캐시 교체 정책을 식별할 수 있다. 다른 일례로, 캐시(310)는, 두 개보다 많은 상이한 캐시 교체 정책에 따라 동작하도록 구성된 두 개보다 많은 서브세트로 분할된다. 따라서, 카운터들의 대응 세트는, 코어(305)가 카운터들의 세트에 연관된 캐시 히트 또는 캐시 미스에 기초하여 가장 효과적인 캐시 교체 정책을 식별할 수 있도록 정의된다.
코어(305)는, 캐시 히트 또는 캐시 미스를 생성한 메모리 액세스 요청의 특성에 따라 상이한 양만큼 카운터(330)의 값을 수정한다. 메모리 액세스 요청의 특성은, 프리페치 요청, 요구 요청, 명령어 캐시 요청, 데이터 캐시 요청, 테이블 워크 요청, 로드 요청, 저장소 요청, 요청에 연관된 권한 레벨 등의 요청의 유형을 포함한다. 상이한 유형의 동작들에는 상이한 정도의 추측이 있을 수 있다. 캐시(310)의 라인을 히트하는 프리페치 요청은, 상대적으로 높은 정도의 추측을 가지며, 요구 요청은 낮은 정도의 추측을 갖고, 명령어 캐시에 대한 캐시 미스로부터 발생한 캐시의 히트는 더 낮은 정도의 추측을 갖고, 데이터 캐시에 대한 캐시 미스로부터 발생한 캐시의 히트는 더 낮은 정도의 추측을 갖고, 처리 시스템이 메모리 액세스 요청을 사용하여 하드웨어 페이지 테이블 워크를 수행하게 하는 TLB 페이지 테이블 워커에 의한 미스는, 더 낮은 정도의 추측을 갖는다. 더 높은 정도의 추측을 갖는 요청에 연관된 히트 또는 미스는, 카운터(330)의 값에 대한 더 작은 변화를 초래한다. 메모리 액세스 요청의 특성은, 또한, 캐시 미스에 후속하여 메모리 액세스 요청을 수행하는 데 있어서 상이한 레이턴시를 포함한다. 예를 들어, 하위 레벨에서 미스되고 다음 상위 레벨 캐시에서 히트되는 메모리 액세스 요청에 연관된 레이턴시는, 메모리 액세스 요청이 하위 레벨 캐시에서 미스되고, 다음 상위 레벨 캐시에서 미스되는 경우 발생하는 레이턴시보다 짧고, 이어서, 메모리 액세스 요청을 수행하도록 외부 DRAM으로 향한다. 더 긴 레이턴시를 생성하는 요청에 연관된 캐시 미스는 카운터(330)의 값을 더 작게 변경할 수 있다.
도 4는 일부 실시예에 따라 캐시의 서브세트에서 캐시 히트를 생성한 메모리 액세스 요청의 유형에 기초하여 증분값을 선택하는 방법(400)의 흐름도이다. 방법(400)은, 도 1에 도시한 처리 시스템(100) 또는 도 3에 도시한 처리 시스템(300)의 일부 실시예에서 구현된다. 방법(400)에서 예시한 메모리 액세스 요청의 특정 유형 및 대응하는 증분값은, 세트 듀얼링 알고리즘에서 카운터를 수정하도록 상이한 증분값들의 사용을 예로서 나타내고자 하는 것이다. 방법(400)의 일부 실시예는 상이한 유형의 메모리 액세스 요청 또는 상이한 증분값을 사용한다. 또한, 방법(400)의 일부 실시예는, 캐시의 다른 서브세트들에서의 캐시 히트에 응답하여 카운터를 감분하기 위한 값을 결정하는 데 사용된다. 예를 들어, 캐시의 하나의 서브세트에 대해 방법(400)에 의해 결정되는 증분값은, 캐시의 다른 서브세트들에서의 캐시 히트에 응답하여 카운터를 감분하는 데 사용되는 값에 대응한다.
블록(405)에서, 프로세서 코어는 캐시의 제1서브세트에서 캐시 히트를 검출한다. 캐시 히트는 메모리 액세스 요청에 응답하여 생성되며, 프로세서 코어는, 메모리 액세스 요청이 제공된 정보 또는 처리 시스템으로부터 이용 가능한 다른 정보를 사용하여 메모리 액세스 요청의 유형을 결정한다. 프로세서 코어는, 도 3에 도시된 카운터(330)와 같은 카운터의 값을, 메모리 액세스 요청의 유형에 기초하여 결정되는 양만큼 증분한다.
결정 블록(410)에서, 프로세서 코어는, 메모리 액세스 요청이 프로세서 코어에 의한 후속 명령어들의 실행에 필요할 것으로 예상되는 정보에 대한 프리페치 요청인지 여부를 결정한다. 프리페치 요청은 높은 정도의 추측을 갖는다. 메모리 액세스 요청이 프리페치 요청이면, 프로세서 코어는 블록(415)에서 증분값 1만큼 카운터를 증분한다. 메모리 액세스 요청이 프리페치 요청이 아닌 경우, 방법(400)은 결정 블록(420)으로 진행한다.
결정 블록(420)에서, 프로세서 코어는 메모리 액세스 요청이 명령어 캐시 또는 데이터 캐시에 대한 요청인지 여부를 결정한다. 명령어 캐시 또는 데이터 캐시에 대한 요청은 프리페치 요청보다 낮은 정도의 추측을 갖는다. 메모리 액세스 요청이 명령어 캐시 또는 데이터 캐시에 대한 것이면, 프로세서 코어는 블록(425)에서 증분값 2만큼 카운터를 증분한다. 메모리 액세스 요청이 명령어 캐시 또는 데이터 캐시에 대한 것이 아닌 경우, 방법(400)은 결정 블록(430)으로 진행한다.
결정 블록(430)에서, 프로세서 코어는, 메모리 액세스 요청이 TLB 페이지 테이블 워커에 의한 TLB에 대한 미스에 의해 야기된 것인지 여부를 결정한다. TLB 페이지 테이블 워커에 의한 미스로부터 발생하는 요청은, 프리페치 요청 또는 명령어/데이터 캐시에 대한 요청에 비해 낮은 정도의 추측을 갖는다. 요청이 TLB 페이지 테이블 워커에 의한 캐시 미스를 생성한 경우, 프로세서 코어는 블록(435)에서 증분값 3만큼 카운터를 증분한다. 캐시 히트가 TLB 페이지 테이블 워커 미스에 의해 생성되지 않았다면, 프로세서 코어는 카운터를 디폴트값만큼 증분한다. 분류되지 않은 유형이 높은 정도의 추측을 가질 것으로 예상되거나 상대적으로 높은 레벨의 분류되지 않은 유형이 낮은 정도의 추측을 가질 것으로 예상되는 경우에는, 디폴트값이 상대적으로 낮은 레벨로 설정된다.
도 5는, 일부 실시예에 따라 캐시의 캐시 라인들의 서브세트에 연관된 캐시 미스에 대한 레이턴시에 기초하여 증분값을 선택하는 방법(500)의 흐름도이다. 방법(500)은, 도 1에 도시된 처리 시스템(100) 또는 도 3에 도시된 처리 시스템(300)의 일부 실시예에서 구현된다. 방법(500)에서 예시한 특정 레이턴시 및 대응하는 증분값은, 세트 듀얼링 알고리즘에서 카운터를 수정하도록 상이한 증분값들의 사용을 설명하기 위한 예로서 의도된 것이다. 방법(500)의 일부 실시예는 상이한 레이턴시, 레이턴시 카테고리, 또는 상이한 증분값을 고려한다. 또한, 방법(500)의 일부 실시예는, 캐시의 다른 서브세트들에 연관된 캐시 미스에 응답하여 카운터를 감분하기 위한 값을 결정하는 데 사용된다. 예를 들어, 방법(500)에 의해 결정되는 증분값은, 캐시의 다른 서브세트들의 캐시 히트에 응답하여 카운터를 감분하는 데 사용되는 값에 대응한다.
블록(505)에서, 프로세서 코어는 캐시의 라인들의 서브세트에 연관된 캐시 미스를 검출한다. 이어서, 프로세서 코어는 캐시 미스에 연관된 레이턴시를 결정한다. 예를 들어, 프로세서 코어는, 캐시 미스에 대한 응답으로 캐시로 반환되는 정보에 대한 데이터 소스를 식별하는 인코딩과 같은 정보를 수신한다. 인코딩은, L1 캐시 히트, L2 캐시 히트, L3 캐시 히트, 로컬 DRAM으로부터의 응답, 원격 DRAM으로부터의 응답 원격 캐시로부터의 응답 등을 나타낸다. 따라서, 인코딩은 레이턴시를 추정하거나 캐시 미스에 대한 레이턴시를 분류하는 데 사용된다.
결정 블록(510)에서, 프로세서 코어는 반환된 정보에 대한 데이터 소스가 원격 DRAM인지 여부를 결정한다. 원격 DRAM에 연관된 레이턴시는 비교적 길다. 데이터 소스가 원격 DRAM이면, 프로세서 코어는 블록(515)에서 비교적 작은 값인 1만큼 카운터를 증분한다. 데이터 소스가 원격 DRAM이 아닌 경우, 방법(500)은 결정 블록(520)으로 진행한다.
결정 블록(520)에서, 프로세서 코어는 반환된 정보에 대한 데이터 소스가 로컬 DRAM인지 여부를 결정한다. 로컬 DRAM에 연관된 레이턴시는 원격 DRAM에 연관된 레이턴시보다 짧다. 데이터 소스가 로컬 DRAM인 경우, 프로세서 코어는 블록(515)에서 카운터를 값 2만큼 증분한다. 데이터 소스가 로컬 DRAM이 아니면, 방법(500)은 결정 블록(530)으로 진행한다.
결정 블록(530)에서, 프로세서 코어는 반환된 정보에 대한 데이터 소스가 원격 캐시인지 여부를 결정한다. 원격 캐시에 연관된 레이턴시는 로컬 DRAM에 연관된 레이턴시보다 짧다. 데이터 소스가 원격 캐시인 경우, 프로세서 코어는 블록(535)에서 값 3만큼 카운터를 증분한다. 데이터 소스가 원격 캐시가 아닌 경우, 방법(500)은 결정 블록(540)으로 진행한다.
결정 블록(540)에서, 프로세서 코어는 반환된 정보에 대한 데이터 소스가 상위 레벨 로컬 캐시인지 여부를 결정한다. 상위 레벨 로컬 캐시에 연관된 레이턴시는 원격 캐시에 연관된 레이턴시보다 짧다. 데이터 소스가 상위 레벨 로컬 캐시인 경우, 프로세서 코어는 블록(545)에서 값 4만큼 카운터를 증분한다. 데이터 소스가 상위 레벨 로컬 캐시가 아닌 경우, 프로세서 코어는, 레이턴시가 상위 레벨 로컬 캐시에 연관된 레이턴시보다 짧다고 가정하고, 블록(550)에서 카운터를 값 5만큼 증분한다.
도 6은 일부 실시예에 따라 메모리 액세스 요청 유형과 레이턴시에 기초하여 세트 듀얼링 카운터에 대한 증분값을 찾기 위한 카운터 수정 룩업 테이블(LUT)(600)의 도이다. 카운터 수정 LUT(600)는, 도 1에 도시된 처리 시스템(100) 또는 도 3에 도시된 처리 시스템(300)의 일부 실시예에서 세트 듀얼링 카운터에 대한 증분값을 식별하는 데 사용된다. 카운터 수정 LUT(600)는, 메모리 액세스 요청 유형과 메모리 액세스 요청에 대한 레이턴시의 조합을 나타내는 값을 보유하는 필드를 포함하는 제1컬럼(605)을 포함한다. 카운터 수정 LUT(600)는, 또한, 본 명세서에서 설명하는 바와 같이, 세트 듀얼링 카운터의 값을 수정하는 데 사용되는 대응 증분(또는 감분)값을 나타내는 값을 보유하는 필드를 포함하는 제2컬럼(610)을 포함한다.
도 1에 도시된 코어들(110 내지 112)과 같은 프로세서 코어는, 카운터 수정 LUT(600)를 사용하여, 예를 들어 상이한 캐시 교체 정책들의 효율성을 비교하도록 세트 듀얼링에 사용되는 캐시의 서브세트에 연관된 캐시 히트 또는 캐시 미스를 생성하는 메모리 액세스 요청에 연관된 요청 유형과 레이턴시에 기초하여 증분값을 식별한다. 예를 들어, 레이턴시가 1인 유형 1의 메모리 요청에 의해 생성되는 제1서브세트에 대한 캐시 히트를 프로세서 코어가 검출하면, 프로세서 코어는, 카운터 수정 LUT(600)에 표시된 바와 같이 값 1만큼 적절한 카운터를 증분한다. 다른 일례로, 레이턴시가 1인 유형 1의 메모리 요청에 의해 생성되는 제2서브세트에 대한 캐시 히트를 프로세서 코어가 검출하면, 프로세서 코어는 적절한 카운터를 값 1만큼 감분한다.
도 7은 일부 실시예에 따라 세트 듀얼링 카운터의 값에 기초하여 캐시 교체 정책을 구성하는 방법(700)의 흐름도이다. 방법(700)은, 도 1에 도시된 처리 시스템(100) 또는 도 3에 도시된 처리 시스템(3)의 일부 실시예에서 구현된다.
블록(705)에서, 프로세서 코어는, 제1캐시 교체 정책을 사용하여 동작하도록 구성된 캐시의 제1서브세트 및 제2캐시 교체 정책을 사용하여 동작하도록 구성된 캐시의 제2서브세트를 감시한다. 프로세서 코어는 소정의 시간 간격 동안 캐시 히트 또는 캐시 미스에 응답하여 카운터를 수정한다. 카운터에 대한 수정량은, 본 명세서에서 설명하는 바와 같이 캐시 히트 또는 캐시 미스를 야기하는 메모리 액세스 요청의 특성에 기초하여 결정된다.
결정 블록(710)에서, 프로세서 코어는 카운터의 값을 임계값과 비교한다. 카운터의 값이 제1캐시 교체 정책이 미리 결정된 시간 간격에 걸쳐 더 효과적이었음을 나타내는 임계값보다 크면, 프로세서 코어는 (블록(715)에서) 제1캐시 교체 정책에 따라 동작하도록 캐시의 메인 부분을 구성한다. 카운터의 값이 제2캐시 교체 정책이 미리 결정된 시간 간격에 걸쳐 더 효과적이었음을 나타내는 임계값보다 작은 경우, 프로세서 코어는 (블록(720)에서) 캐시의 메인 부분을 제2캐시 교체 정책에 따라 동작하도록 구성한다. 일부 실시예에서, 프로세서 코어는, 카운터의 값에 적용되는 다른 기준에 기초하여 (결정 블록(710)에서) 제1캐시 교체 정책과 제2캐시 교체 정책의 상대적 유효성을 평가한다.
도 8은, 일부 실시예에 따라 메모리 액세스 요청의 특성에 기초하여 결정되는 세트 결투 카운터에 대한 증분값을 사용하여 스케일링된 세트 듀얼링을 선택적으로 활성화하는 방법(800)의 흐름도이다. 방법(800)은, 도 1에 도시된 처리 시스템(100) 또는 도 3에 도시된 처리 시스템(300)의 일부 실시예에서 구현된다.
블록(805)에서, 프로세서 코어는, 처리 시스템의 캐시 계층에 있는 캐시들과 같은 처리 시스템 내의 다른 엔티티들로부터의 대역폭 피드백을 감시한다. 예를 들어, 도 1에 도시된 프로세서 코어(110)는, 로컬 DRAM(115), 원격 DRAM(120), 원격 캐시(125), L3 캐시(130), L2 캐시(135), L1 캐시들(140 내지 142), 명령어 캐시(145), 데이터 캐시(150), TLB(160), 또는 도 1에 도시된 처리 시스템(100)의 다른 엔티티들에 연관된 현재 대역폭 사용량을 나타내는 피드백을 감시한다.
결정 블록(810)에서, 프로세서 코어는 처리 시스템(또는 그 일부)이 대역폭 제한되는지 여부를 결정한다. 처리 시스템(또는 그 일부분)이 대역폭 제한되면, 프로세서 코어는 블록(815)에서 캐시 미스에 대한 스케일링된 세트 듀얼링을 비활성화한다. 스케일링된 세트 듀얼링을 비활성화함으로써, 메모리 액세스 요청의 유형 또는 캐시 미스에 연관된 레이턴시에 관계없이 모든 캐시 미스에 대해 세트 듀얼링 카운터가 동일한 값만큼 증분된다. 처리 시스템이 대역폭 제한되지 않으면, 프로세서 코어는 블록(820)에서 캐시 미스에 대한 스케일링된 세트 듀얼링을 활성화한다. 스케일링된 세트 듀얼링을 활성화함으로써, 프로세서 코어가 처리 시스템의 캐시에서의 캐시 히트 또는 캐시 미스를 발생시키는 메모리 액세스 요청의 특성에 따라 상이한 값만큼 세트 듀얼링 카운터를 증분할 수 있다.
일부 실시예에서, 전술한 장치와 기술은, 도 1 내지 도 8을 참조하여 상술한 처리 시스템과 같은 하나 이상의 집적 회로(IC) 장치(집적 회로 패키지 또는 마이크로칩이라고도 함)를 포함하는 시스템에서 구현된다. 이들 IC 장치의 설계 및 제조에는, 전자 설계 자동화(EDA) 및 컴퓨터 지원 설계(CAD) 소프트웨어 도구가 사용될 수 있다. 이들 설계 도구는 통상적으로 하나 이상의 소프트웨어 프로그램으로서 표현된다. 하나 이상의 소프트웨어 프로그램은, 하나 이상의 IC 장치의 회로를 나타내는 코드 상에서 동작하게끔 컴퓨터 시스템을 조작하여 회로를 제조하는 제조 시스템을 설계 또는 적응시키기 위한 프로세스의 적어도 일부를 수행하도록 컴퓨터 시스템에 의해 실행가능한 코드를 포함한다. 이 코드는 명령어, 데이터, 또는 명령어와 데이터의 조합을 포함할 수 있다. 설계 도구 또는 제조 도구를 나타내는 소프트웨어 명령어는, 통상적으로 연산 시스템에 대하여 액세스가능한 컴퓨터 판독가능 저장 매체에 저장된다. 마찬가지로, IC 장치의 설계 또는 제조의 하나 이상의 단계를 나타내는 코드는, 동일한 컴퓨터 판독가능 저장 매체 또는 상이한 컴퓨터 판독가능 저장 매체에 저장되고 액세스될 수 있다.
컴퓨터 판독가능 저장 매체는, 명령어 및/또는 데이터를 컴퓨터 시스템에 제공하도록 사용 중에 컴퓨터 시스템에 의해 액세스가능한 임의의 비일시적 저장 매체 또는 비일시적 저장 매체들의 조합을 포함할 수 있다. 이러한 저장 매체는, 광학 매체(예를 들어, CD, DVD, 블루레이 디스크), 자기 매체(예를 들어, 플로피 디스크, 자기 테이프, 또는 자기 하드 드라이브), 휘발성 메모리(예를 들어, RAM 또는 캐시), 비휘발성 메모리(예를 들어, ROM 또는 플래시 메모리), 또는 미세 전자 기계 시스템(MEMS) 기반 저장 매체를 포함할 수 있지만, 이에 한정되지 않는다. 컴퓨터 판독가능 저장 매체는, 연산 시스템(예를 들어, 시스템 RAM 또는 ROM)에 내장될 수 있고, 연산 시스템(예를 들어, 자기 하드 드라이브)에 고정 부착될 수 있고, 연산 시스템(예를 들어, 광학 디스크 또는 USB 기반 플래시 메모리)에 탈착가능하게 부착될 수 있고, 또는 유선 또는 무선 네트워크(예를 들어, 네트워크 액세스가능 저장소(NAS))를 통해 컴퓨터 시스템에 결합될 수 있다.
일부 실시예에서, 전술한 기술들의 소정의 양태는, 소프트웨어를 실행하는 처리 시스템의 하나 이상의 프로세서에 의해 구현될 수 있다. 소프트웨어는, 비일시적 컴퓨터 판독가능 저장 매체 상에 저장되거나 그 외에는 유형으로 구체화된 실행가능 명령어들의 하나 이상의 세트를 포함한다. 소프트웨어는, 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서를 조작하여 전술한 기술들의 하나 이상의 양태를 수행하게 하는 명령어와 소정의 데이터를 포함할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체는, 예를 들어, 자기 또는 광학 디스크 저장 장치, 플래시 메모리와 같은 솔리드 스테이트 저장 장치, 캐시, RAM, 또는 다른 비휘발성 메모리 장치나 장치들 등을 포함할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체에 저장된 실행가능 명령어들은, 소스 코드, 어셈블리 언어 코드, 오브젝트 코드, 또는 하나 이상의 프로세서에 의해 해석되거나 그 외에는 실행가능한 다른 명령어 포맷으로 될 수 있다.
위 설명에 있어서 전술한 활동이나 요소 모두가 필요한 것은 아니며, 특정 활동이나 장치의 일부가 필요하지 않을 수 있으며, 전술한 활동 또는 요소 외에도, 하나 이상의 추가 활동이 수행될 수 있고, 또는 요소들이 포함될 수 있다는 점에 주목한다. 또한, 활동들이 나열되는 순서가 반드시 이들 활동이 수행되는 순서는 아니다. 또한, 개념은 특정 실시예를 참조하여 설명되었다. 그러나, 통상의 기술자는, 이하의 청구범위에 설명된 바와 같이 본 개시내용의 범위를 벗어나지 않으면서 다양한 수정 및 변경을 행할 수 있음을 이해할 것이다. 이에 따라, 명세서와 도면은 제한적인 의미라기보다는 예시적인 것으로 간주해야 하며, 이러한 모든 수정은 본 발명의 범위 내에 포함되도록 의도된 것이다.
이점, 다른 장점, 및 문제에 대한 해결책을 특정 실시예들과 관련하여 상술하였다. 그러나, 이점, 장점, 문제에 대한 해결책, 및 이점, 장점 또는 해결책을 발생시킬 수 있거나 더욱 강조할 수 있는 임의의 기능부(들)를 임의의 청구항 또는 모든 청구항의 중요하고 요구되고 필수적인 기능부로서 해석해서는 안 된다. 또한, 전술한 특정 실시예들은, 본 명세서의 교시의 이점을 갖는 통상의 기술자에게 명백하게, 개시된 주제가 상이하지만 균등한 방식으로 수정 및 실시될 수 있으므로, 예시일 뿐이다. 이하의 청구범위에 기재된 것과는 다르게, 본 명세서에 도시된 구조 또는 설계의 세부 사항은 제한되지 않는다. 따라서, 전술한 특정 실시예들은 변경되거나 수정될 수 있으며, 이러한 모든 변형은 개시된 주제의 범위 내에 있는 것으로 고려된다는 점은 명백하다. 이에 따라, 본 명세서에서 요구되는 보호는 이하의 청구범위에서 설명되는 바와 같다.

Claims (16)

  1. 캐시 교체 정책을 구성하도록 세트 듀얼링(set dueling)을 구현하기 위한 장치(100, 300)로서,
    캐시 라인들(315)의 제1서브세트(320)와 상기 캐시 라인들(315)의 복수의 제2서브세트들(325)로 분할되는 상기 캐시 라인들(315)을 포함하는 캐시(310);
    상기 캐시 라인들(315)의 상기 제2서브세트들(325)에 연관된 적어도 하나의 카운터(330); 및
    상기 제2서브세트들(325)에 연관된 캐시 히트에 응답하여 상기 적어도 하나의 카운터를 수정하도록 구성된 프로세서(305)로서, 상기 적어도 하나의 카운터는, 상기 캐시 히트를 생성한 메모리 액세스 요청의 추측 정도에 기초하는 양만큼 수정되는, 상기 프로세서를 포함하는, 캐시 교체 정책을 구성하도록 세트 듀얼링을 구현하기 위한 장치.
  2. 삭제
  3. 제1항에 있어서, 상기 프로세서는, 상기 제2서브세트들 중 제1의 제2서브세트에 대한 캐시 히트에 응답하여 상기 적어도 하나의 카운터를 증분하고 상기 제2서브세트들 중 제2의 제2서브세트에 대한 캐시 히트에 응답하여 상기 적어도 하나의 카운터를 감분하도록 더 구성된, 캐시 교체 정책을 구성하도록 세트 듀얼링을 구현하기 위한 장치.
  4. 제3항에 있어서, 상기 프로세서는,
    상기 제2서브세트들 중 상기 제1의 제2서브세트에 대한 캐시 히트를 생성한 상기 메모리 액세스 요청의 추측 정도에 기초하여 결정되는 양만큼 상기 적어도 하나의 카운터를 증분하고, 그리고
    상기 제2서브세트들 중 상기 제2의 제2서브세트에 대한 캐시 히트를 생성한 상기 메모리 액세스 요청의 추측 정도에 기초하여 결정되는 양만큼 상기 적어도 하나의 카운터를 감분하도록 더 구성된, 캐시 교체 정책을 구성하도록 세트 듀얼링을 구현하기 위한 장치.
  5. 제1항에 있어서, 상기 프로세서는,
    상기 제2서브세트들 중 제1의 제2서브세트에 연관된 캐시 미스에 응답하여 상기 적어도 하나의 카운터를 감분하고; 그리고
    상기 제2서브세트들 중 제2의 제2서브세트에 대한 캐시 미스에 응답하여 상기 적어도 하나의 카운터를 증분하도록 더 구성된, 캐시 교체 정책을 구성하도록 세트 듀얼링을 구현하기 위한 장치.
  6. 제5항에 있어서, 상기 프로세서는,
    상기 제2서브세트들 중 제1의 제2서브세트에 연관된 캐시 미스에 연관된 레이턴시에 기초하여 결정되는 양만큼 상기 적어도 하나의 카운터를 감분하고; 그리고
    상기 제2서브세트들 중 제2의 제2서브세트에 연관된 캐시 미스에 연관된 레이턴시에 기초하여 결정되는 양만큼 상기 적어도 하나의 카운터를 증분하도록 더 구성된, 캐시 교체 정책을 구성하도록 세트 듀얼링을 구현하기 위한 장치.
  7. 제6항에 있어서, 상기 프로세서는,
    대역폭 소비를 나타내는 피드백에 기초하는 대역폭 제한 동작의 검출에 응답하여 상기 제2서브세트들 중 제1의 제2서브세트에 연관된 모든 캐시 미스에 대하여 동일한 양만큼 상기 적어도 하나의 카운터를 감분하고, 그리고
    상기 대역폭 제한 동작의 검출에 응답하여 상기 제2서브세트들 중 제2의 제2서브세트에 연관된 캐시 미스에 대하여 동일한 양만큼 상기 적어도 하나의 카운터를 증분하도록 더 구성된, 캐시 교체 정책을 구성하도록 세트 듀얼링을 구현하기 위한 장치.
  8. 제1항에 있어서,
    상기 제2서브세트들은 대응하는 복수의 캐시 교체 정책을 사용하고; 그리고
    상기 프로세서는,
    상기 적어도 하나의 카운터의 적어도 하나의 값에 기초하여 상기 복수의 캐시 교체 정책 중 하나를 선택하고; 그리고
    상기 제1서브세트를 구성하여 상기 복수의 캐시 교체 정책 중 선택된 상기 하나를 사용하도록 더 구성된, 캐시 교체 정책을 구성하도록 세트 듀얼링을 구현하기 위한 장치.
  9. 캐시 교체 정책을 구성하도록 세트 듀얼링을 구현하기 위한 방법으로서,
    캐시(330)를 캐시 라인들(315)의 제1서브세트(320)와 상기 캐시 라인들(315)의 복수의 제2서브세트들(325)로 분할하는 단계;
    상기 제2서브세트들(325)에 연관된 캐시 히트를 검출하는 단계; 및
    상기 캐시 히트에 응답하여 상기 캐시 라인들(315)의 상기 제2서브세트들(325)에 연관된 적어도 하나의 카운터(330)를 수정하는 단계로서, 상기 적어도 하나의 카운터는, 상기 캐시 히트를 생성한 메모리 액세스 요청의 추측 정도에 의해 결정되는 양만큼 수정되는, 상기 수정하는 단계를 포함하는, 캐시 교체 정책을 구성하도록 세트 듀얼링을 구현하기 위한 방법.
  10. 삭제
  11. 제9항에 있어서, 상기 적어도 하나의 카운터를 수정하는 단계는,
    상기 제2서브세트들 중 제1의 제2서브세트에 대한 캐시 히트에 응답하여 상기 적어도 하나의 카운터를 증분하는 단계; 및
    상기 제2서브세트들 중 제2의 제2서브세트에 대한 캐시 히트에 응답하여 상기 적어도 하나의 카운터를 감분하는 단계를 포함하는, 캐시 교체 정책을 구성하도록 세트 듀얼링을 구현하기 위한 방법.
  12. 제11항에 있어서,
    상기 적어도 하나의 카운터를 증분하는 단계는, 상기 제2서브세트들 중 제1의 제2서브세트에 대한 캐시 히트를 생성한 상기 메모리 액세스 요청의 추측 정도에 기초하여 결정되는 양만큼 상기 적어도 하나의 카운터를 증분하는 단계를 포함하고; 그리고
    상기 적어도 하나의 카운터를 감분하는 단계는, 상기 제2서브세트들 중 제2의 제2서브세트에 대한 캐시 히트를 생성한 상기 메모리 액세스 요청의 추측 정도에 기초하여 결정되는 양만큼 상기 적어도 하나의 카운터를 감분하는 단계를 포함하는, 캐시 교체 정책을 구성하도록 세트 듀얼링을 구현하기 위한 방법.
  13. 제9항에 있어서, 상기 적어도 하나의 카운터를 수정하는 단계는,
    상기 제2서브세트들 중 제1의 제2서브세트에 연관된 캐시 미스에 응답하여 상기 적어도 하나의 카운터를 감분하는 단계; 및
    상기 제2서브세트들 중 제2의 제2서브세트에 대한 캐시 미스에 응답하여 상기 적어도 하나의 카운터를 증분하는 단계를 포함하는, 캐시 교체 정책을 구성하도록 세트 듀얼링을 구현하기 위한 방법.
  14. 제13항에 있어서,
    상기 적어도 하나의 카운터를 감분하는 단계는, 상기 제2서브세트들 중 제1의 제2서브세트에 연관된 캐시 미스에 연관된 레이턴시에 기초하여 결정되는 양만큼 상기 적어도 하나의 카운터를 감분하는 단계를 포함하고; 그리고
    상기 적어도 하나의 카운터를 증분하는 단계는, 상기 제2서브세트들 중 제2의 제2서브세트에 연관된 캐시 미스에 연관된 레이턴시에 기초하여 결정되는 양만큼 상기 적어도 하나의 카운터를 증분하는 단계를 포함하는, 캐시 교체 정책을 구성하도록 세트 듀얼링을 구현하기 위한 방법.
  15. 제9항에 있어서, 상기 제2서브세트들은 대응하는 복수의 캐시 교체 정책을 사용하고, 상기 방법은,
    상기 적어도 하나의 카운터의 적어도 하나의 값에 기초하여 상기 복수의 캐시 교체 정책 중 하나를 선택하는 단계; 및
    상기 제1서브세트를 구성하여 상기 복수의 캐시 교체 정책 중 선택된 상기 하나를 사용하는 단계를 더 포함하는, 캐시 교체 정책을 구성하도록 세트 듀얼링을 구현하기 위한 방법.
  16. 캐시 교체 정책을 구성하도록 세트 듀얼링을 구현하기 위한 장치(100, 300)로서,
    메모리(115, 120);
    상기 메모리로부터의 정보를 저장하도록 제1서브세트(320)와 복수의 제2서브세트들(325)로 분할되는 캐시 라인들(315)을 포함하는 캐시(310);
    상기 제2서브세트들(325)에 연관된 적어도 하나의 카운터(330); 및
    상기 메모리 또는 상기 캐시 중 적어도 하나의 동작이 대역폭 제한되는지 여부를 나타내는 피드백에 기초하여 상기 캐시를 위한 캐시 교체 정책을 결정하기 위해 세트 듀얼링(set dueling)을 선택적으로 활성화 또는 비활성화하도록 구성된 프로세서(110, 305)로서, 상기 세트 듀얼링은, 상기 적어도 하나의 카운터에 기초하여 상기 제1서브세트(320)와 상기 제2서브세트들(325)에 의해 각각 구현되는 제1캐시 교체 정책과 제2캐시 교체 정책 간에 선택하는, 상기 프로세서를 포함하는, 캐시 교체 정책을 구성하도록 세트 듀얼링을 구현하기 위한 장치.
KR1020187033474A 2016-06-13 2016-09-20 캐시 교체 정책을 위한 스케일링된 세트 듀얼링 KR102357246B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/180,995 2016-06-13
US15/180,995 US10430349B2 (en) 2016-06-13 2016-06-13 Scaled set dueling for cache replacement policies
PCT/US2016/052605 WO2017218026A1 (en) 2016-06-13 2016-09-20 Scaled set dueling for cache replacement policies

Publications (2)

Publication Number Publication Date
KR20190008249A KR20190008249A (ko) 2019-01-23
KR102357246B1 true KR102357246B1 (ko) 2022-01-28

Family

ID=60572771

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187033474A KR102357246B1 (ko) 2016-06-13 2016-09-20 캐시 교체 정책을 위한 스케일링된 세트 듀얼링

Country Status (6)

Country Link
US (1) US10430349B2 (ko)
EP (1) EP3433745B1 (ko)
JP (1) JP6752292B2 (ko)
KR (1) KR102357246B1 (ko)
CN (1) CN109313610B (ko)
WO (1) WO2017218026A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10229161B2 (en) 2013-09-20 2019-03-12 Oracle International Corporation Automatic caching of scan and random access data in computing systems
US10853267B2 (en) * 2016-06-14 2020-12-01 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Adaptive method for selecting a cache line replacement algorithm in a direct-mapped cache
US10331573B2 (en) 2016-11-04 2019-06-25 Oracle International Corporation Detection of avoidable cache thrashing for OLTP and DW workloads
US11182306B2 (en) * 2016-11-23 2021-11-23 Advanced Micro Devices, Inc. Dynamic application of software data caching hints based on cache test regions
US10409728B2 (en) * 2017-05-09 2019-09-10 Futurewei Technologies, Inc. File access predication using counter based eviction policies at the file and page level
US10613983B2 (en) * 2018-03-20 2020-04-07 Advanced Micro Devices, Inc. Prefetcher based speculative dynamic random-access memory read request technique
US10983922B2 (en) * 2018-05-18 2021-04-20 International Business Machines Corporation Selecting one of multiple cache eviction algorithms to use to evict a track from the cache using a machine learning module
US10810126B2 (en) * 2018-09-24 2020-10-20 Arm Limited Cache storage techniques
US11106600B2 (en) * 2019-01-24 2021-08-31 Advanced Micro Devices, Inc. Cache replacement based on translation lookaside buffer evictions
US10725923B1 (en) * 2019-02-05 2020-07-28 Arm Limited Cache access detection and prediction
US11636040B2 (en) * 2019-05-24 2023-04-25 Texas Instruments Incorporated Methods and apparatus for inflight data forwarding and invalidation of pending writes in store queue
US11561895B2 (en) 2019-09-05 2023-01-24 Advanced Micro Devices, Inc. Oldest operation wait time indication input into set-dueling
US11210234B2 (en) 2019-10-31 2021-12-28 Advanced Micro Devices, Inc. Cache access measurement deskew
CN112860600A (zh) * 2019-11-28 2021-05-28 深圳市海思半导体有限公司 一种加速硬件页表遍历的方法及装置
CN111143244B (zh) * 2019-12-30 2022-11-15 海光信息技术股份有限公司 计算机设备的内存访问方法和计算机设备
KR20210097345A (ko) 2020-01-30 2021-08-09 삼성전자주식회사 캐시 메모리 장치, 이를 포함하는 시스템 및 캐시 메모리 장치의 동작 방법
US11704250B2 (en) * 2021-09-28 2023-07-18 Advanced Micro Devices, Inc. Using request class and reuse recording in one cache for insertion policies of another cache
US11768778B2 (en) * 2021-09-30 2023-09-26 Advanced Micro Devices, Inc. Re-reference indicator for re-reference interval prediction cache replacement policy
US11886354B1 (en) 2022-05-20 2024-01-30 Apple Inc. Cache thrash detection
US20230418765A1 (en) * 2022-06-27 2023-12-28 Arm Limited Cache replacement control

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100030970A1 (en) * 2008-08-01 2010-02-04 International Business Machines Corporation Adaptive Spill-Receive Mechanism for Lateral Caches
US20130151778A1 (en) * 2011-12-09 2013-06-13 International Business Machines Corporation Dynamic Inclusive Policy in a Hybrid Cache Hierarchy Using Bandwidth

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4206569C2 (de) * 1992-03-02 1994-12-22 Siemens Ag Verfahren zur Ermittlung von Verdrängungs-Misses bei einem von einer Reihenfolge von Programmteilen gebildeten Programm
US6510493B1 (en) 1999-07-15 2003-01-21 International Business Machines Corporation Method and apparatus for managing cache line replacement within a computer system
JP4072665B2 (ja) * 2000-05-22 2008-04-09 富士ゼロックス株式会社 画像処理装置及びキャッシュメモリ
US7133971B2 (en) 2003-11-21 2006-11-07 International Business Machines Corporation Cache with selective least frequently used or most frequently used cache line replacement
US7457922B2 (en) * 2004-11-20 2008-11-25 International Business Machines Corporation Cache line placement prediction for multiprocessor non-uniform cache architecture systems
CN102057359A (zh) * 2009-04-10 2011-05-11 松下电器产业株式会社 高速缓冲存储器装置、高速缓冲存储器控制方法、程序及集成电路
US8683129B2 (en) 2010-10-21 2014-03-25 Oracle International Corporation Using speculative cache requests to reduce cache miss delays
US8661202B2 (en) * 2010-12-10 2014-02-25 International Business Machines Corporation Systems and methods for destaging storage tracks from cache
US8806137B2 (en) 2011-06-17 2014-08-12 Lsi Corporation Cache replacement using active cache line counters
US8688915B2 (en) * 2011-12-09 2014-04-01 International Business Machines Corporation Weighted history allocation predictor algorithm in a hybrid cache
US20150286571A1 (en) * 2014-04-04 2015-10-08 Qualcomm Incorporated Adaptive cache prefetching based on competing dedicated prefetch policies in dedicated cache sets to reduce cache pollution
US10223278B2 (en) * 2016-04-08 2019-03-05 Qualcomm Incorporated Selective bypassing of allocation in a cache

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100030970A1 (en) * 2008-08-01 2010-02-04 International Business Machines Corporation Adaptive Spill-Receive Mechanism for Lateral Caches
US20130151778A1 (en) * 2011-12-09 2013-06-13 International Business Machines Corporation Dynamic Inclusive Policy in a Hybrid Cache Hierarchy Using Bandwidth

Also Published As

Publication number Publication date
EP3433745A4 (en) 2019-12-04
KR20190008249A (ko) 2019-01-23
JP6752292B2 (ja) 2020-09-09
WO2017218026A1 (en) 2017-12-21
US20170357588A1 (en) 2017-12-14
CN109313610B (zh) 2023-10-03
JP2019517690A (ja) 2019-06-24
US10430349B2 (en) 2019-10-01
EP3433745B1 (en) 2022-07-27
CN109313610A (zh) 2019-02-05
EP3433745A1 (en) 2019-01-30

Similar Documents

Publication Publication Date Title
KR102357246B1 (ko) 캐시 교체 정책을 위한 스케일링된 세트 듀얼링
US10019365B2 (en) Adaptive value range profiling for enhanced system performance
US10409725B2 (en) Management of shared pipeline resource usage based on level information
US10552339B2 (en) Dynamically adapting mechanism for translation lookaside buffer shootdowns
US7844778B2 (en) Intelligent cache replacement mechanism with varying and adaptive temporal residency requirements
US9405702B2 (en) Caching TLB translations using a unified page table walker cache
US9552294B2 (en) Dynamically configuring regions of a main memory in a write-back mode or a write-through mode
US9098417B2 (en) Partitioning caches for sub-entities in computing devices
US7363433B2 (en) Cache member protection with partial make MRU allocation
US20170235681A1 (en) Memory system and control method of the same
KR102423713B1 (ko) 가상 어드레스를 물리적 어드레스로 번역을 수행하기 위해 입력-출력 메모리 관리 유닛내 다수의 메모리 소자들 사용
US20130007373A1 (en) Region based cache replacement policy utilizing usage information
US20130097387A1 (en) Memory-based apparatus and method
US10007614B2 (en) Method and apparatus for determining metric for selective caching
US20170357596A1 (en) Dynamically adjustable inclusion bias for inclusive caches
US20200250098A1 (en) Cache access detection and prediction
US20140101388A1 (en) Controlling prefetch aggressiveness based on thrash events
US9946646B2 (en) Systems and method for delayed cache utilization
US20170083444A1 (en) Configuring fast memory as cache for slow memory
JP2019528532A (ja) データキャッシュ領域プリフェッチャ
KR102540752B1 (ko) 비할당 캐시 정책
US20170046278A1 (en) Method and apparatus for updating replacement policy information for a fully associative buffer cache
US11526449B2 (en) Limited propagation of unnecessary memory updates
EP3258383A1 (en) Dynamically adjustable inclusion bias for inclusive caches

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