KR20200080142A - 배타적 마지막 레벨 캐시를 위한 바이패스 예측기 - Google Patents

배타적 마지막 레벨 캐시를 위한 바이패스 예측기 Download PDF

Info

Publication number
KR20200080142A
KR20200080142A KR1020190159413A KR20190159413A KR20200080142A KR 20200080142 A KR20200080142 A KR 20200080142A KR 1020190159413 A KR1020190159413 A KR 1020190159413A KR 20190159413 A KR20190159413 A KR 20190159413A KR 20200080142 A KR20200080142 A KR 20200080142A
Authority
KR
South Korea
Prior art keywords
data
cache
block
counter
reused
Prior art date
Application number
KR1020190159413A
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 KR20200080142A publication Critical patent/KR20200080142A/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/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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/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
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the 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/10Providing a specific technical effect
    • G06F2212/1016Performance 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/1028Power efficiency
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency 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/60Details of cache memory
    • G06F2212/6032Way prediction in set-associative cache
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

본 발명의 실시 예에 따른 제1 캐시로부터 제2 캐시로 항목 제거된 데이터를 할당하는 방법은 데이터의 블록에 대한 재사용 지시자가 제2 캐시보다 더 높은 레벨의 캐시인 제1 캐시로부터 데이터의 블록의 항목 제거에서 데이터의 블록이 재사용될 가능성이 있는지를 가리키는지를 판별하는 단계, 데이터의 블록에 대한 재사용 지시자가 데이터의 블록이 재사용될 가능성이 있음 가리키는 경우, 제1 카운터를 증가시키는 단계, 데이터의 블록에 대한 재사용 지시자가 데이터의 블록의 재사용될 가능성이 없음을 가리키는 경우, 제1 카운터를 감소시키는 단계, 제1 캐시로부터 데이터의 블록의 항목 제거시, 제2 카운터를 증가시키는 단계, 제1 카운터의 값 및 제1 미리 정해진 임계치를 비교하는 단계, 제2 카운터의 값이 0과 동일한지 판별하는 단계, 제1 카운터의 값이 제1 미리 정해진 임계치 이상이거나 또는 제2 카운터의 값이 0과 동일한 경우, 제2 캐시로 데이터의 블록을 저장하는 단계, 및 제1 카운터의 값이 제1 미리 정해진 임계치보다 작고 제2 카운터의 값이 0과 같지 않은 경우, 제2 캐시를 바이패싱(bypassing)하면서, 데이터의 블록을 시스템 메모리에 기입하는 단계를 포함한다.

Description

배타적 마지막 레벨 캐시를 위한 바이패스 예측기{BYPASS PREDICTOR FOR AN EXCLUSIVE LAST-LEVEL CACHE}
본 발명은 일반적으로 프로세싱 시스템들에 관한 것이다. 좀 더 상세하게는 본 발명은 배타적 마지막 레벨의 캐시(exclusive last-level cache)에서 퇴거된 데이터의 블록의 할당을 선택적으로 바이패스하는 캐시 시스템 및 방법에 관한 것이다.
마지막 레벨의 캐시들(LLCs; last-level caches)은 가능한 향후의 참조들을 위해 더 높은 레벨의 교체 빅팀들(higher-level replacement victims)을 보존하기 위해 상위 레벨의 캐시로부터 나가는 데이터를 저장함으로써 배타적 캐시들(exclusive caches)이 되도록 설계된다. 상위 레벨의 캐시로부터의 캐스트 아웃 데이터 전체가 LLC에 캐싱되는 것이 유용한 것은 아니다. 예를 들어, 캐스트 아웃 데이터는, 비-임시적(non-temporal) 데이터 및/또는 대드 코드 및 데이터와 같은 불필요한 블록들을 포함할 수 있다. 이러한 불필요한 캐스트 아웃들에 대해 LLC를 바이패싱하고, 유용한 캐스트 아웃들을 LLC로 허용하는 것은 연결 대역폭 및 전력을 절약하고, 캐시 성능을 향상시킬 수 있다. 하이-레벨의 항목 제거들이 프로그램 동작 정보를 갖기 않음에 따라, 캐시 액세스가 더 높은 레벨의 캐시들을 통해 필터링되고, 이에 따라, LLC가 프로그램 동작을 인식하지 못하지 때문에, 배타적 마지막 레벨 캐시들(LLC; last-level caches)로부터 바이패싱하는 것은 아직 어려울 수 있다. 더욱이, 감소된 캐시 라인들이 추적할 최신 정보를 남기지 않고 상위 레벨의 캐시들로 스왑될 수 있기 때문에, 배타적 캐시의 지역적 정보의 부재가 존재한다.
일부 배타적 캐시 관리 기법들은 배타적 LLC에서의 데이터의 재사용 거리(reuse distance)의 추적을 유지할 수 있고, 최근 사용(LRU; Least-Recently-Used) 스택의 다른 위치들에서 데이터를 각각 할당할 수 있다. 동일한 캐시 세트로 이후의 채우기(subsequent fill) 상의 라인의 항목 제거를 방지하기 위하여, 스택에서의 삽입 위치(insertion position)는 가장 낮은 LRU 위치(the lowest LRU position)보다 높을 것, 예를 들어, LRU+1 또는 MRU 위치를 필요로 한다. 그러나, 워크로드들이 스트리밍 또는 비일시적인 패턴들을 포함하는 경우, 이러한 캐시 관리 기법은 배타적 캐시를 스래싱(thrash)할 것이다. 예를 들어, 데이터의 요청된 블록에 대한 재사용 거리가 상위-레벨의 캐시들 및 LLC의 용량보다 큰 경우, DRAM으로부터 획득된 데이터의 블록은 LLC에 삽입되고, 결국 재사용 전에 항목 제거(evict)될 것이다. 스트리밍 데이터의 블록이 LRU+1 또는 LLC보다 더 높은 위치에 할당된 경우, 할당된 스트리밍 데이터는 LLC에서 유지된다면 재-참조될 수 있는 데이터의 다른 블록들을 교체한다.
본 발명의 목적은 캐시 용량 및 전력을 절약하고, 성능을 향상시킬 수 있는 제1 캐시로부터 제2 캐시로 항목 제거된 데이터를 할당하는 방법 및 캐시 시스템을 제공하는데 있다.
예시적인 실시 예는 제1 캐시로부터 제2 캐시로 항목 제거된 데이터를 할당하는 방법을 제공한다. 상기 방법은 상기 데이터의 블록에 대한 재사용 지시자가 상기 제2 캐시보다 더 높은 레벨의 캐시인 상기 제1 캐시로부터 상기 데이터의 블록의 항목 제거에서 상기 데이터의 블록이 재사용될 가능성이 있는지를 가리키는지를 판별하는 단계, 상기 데이터의 블록에 대한 상기 재사용 지시자가 상기 데이터의 블록이 재사용될 가능성이 있음 가리키는 경우, 제1 카운터를 증가시키는 단계, 상기 데이터의 블록에 대한 상기 재사용 지시자가 상기 데이터의 블록의 재사용될 가능성이 없음을 가리키는 경우, 상기 제1 카운터를 감소시키는 단계, 상기 제1 캐시로부터 상기 데이터의 블록의 항목 제거시, 제2 카운터를 증가시키는 단계, 상기 제1 카운터의 값 및 제1 미리 정해진 임계치를 비교하는 단계, 상기 제2 카운터의 값이 0과 동일한지 판별하는 단계, 상기 제1 카운터의 상기 값이 상기 제1 미리 정해진 임계치 이상이거나 또는 상기 제2 카운터의 상기 값이 0과 동일한 경우, 상기 제2 캐시로 상기 데이터의 블록을 저장하는 단계, 및 상기 제1 카운터의 상기 값이 상기 제1 미리 정해진 임계치보다 작고 상기 제2 카운터의 값이 0과 같지 않은 경우, 상기 제2 캐시를 바이패싱(bypassing)하면서, 상기 데이터의 블록을 시스템 메모리에 기입하는 단계를 포함한다.
다른 예시적인 실시 예는 제1 캐시로부터 제2 캐시로 항목 제거된 데이터를 할당하는 방법을 제공한다. 상기 방법은 데이터의 블록에 대한 재사용 지시자가, 상기 제2 캐시보다 높은 레벨의 캐시인 상기 제1 캐시로부터 상기 데이터의 블록의 항목 제거에서, 상기 데이터의 블록이 재사용될 가능성이 있는지를 가리키는지 판별하는 단계, 상기 데이터의 블록에 대한 상기 재사용 지시자가 상기 데이터의 블록이 재사용될 가능성이 있음을 가리키는 경우, 제1 카운터를 증가시키는 단계, 상기 데이터의 블록에 대한 상기 재사용 지시자가 상기 데이터의 블록이 재사용될 가능성이 없음을 가리키는 경우, 상기 제1 카운터를 감소시키는 단계, 상기 제2 캐시로부터 상기 데이터의 블록의 항목 제거시 제2 카운터를 증가시키는 단계, 상기 제1 카운터의 값이 제1 미리 정해진 임계치보다 작은지 판별하는 단계, 상기 제2 카운터의 값이 0과 같은지 판별하는 단계, 상기 제1 카운터의 상기 값이 상기 제1 미리 정해진 임계치 이상이거나 또는 상기 제1 카운터의 상기 값이 0과 같은 경우, 상기 제2 캐시에서 가장 최근에 사용된 위치 상위인 상기 제2 캐시의 위치에 상기 데이터의 블록을 할당하는 단계, 및 상기 제1 카운터의 상기 값이 상기 제1 미리 정해진 임계치보다 작고, 상기 제2 카운터의 상기 값이 0이 아닌 경우, 상기 제2 캐시의 상기 가장 최근에 사용된 위치에 상기 데이터의 블록을 할당하는 단계를 포함한다.
또 다른 예시적인 실시 예는 캐시 시스템을 제공한다. 상기 캐시 시스템은 적어도 하나의 데이터의 블록을 포함하는 제1 캐시, 상기 제1 캐시보다 낮은 레벨 캐시인 제2 캐시, 및 제1 카운터 및 제2 카운터를 포함하고, 상기 제1 캐시 및 상기 제2 캐시와 연결된 캐시 컨트롤러를 포함한다. 상기 적어도 하나의 데이터 블록 각각은 복수의 비트들을 포함하는 태그를 포함하고, 상기 태그 각각의 적어도 하나의 비트는 상기 데이터의 블록이 재사용될 가능성에 대한 재사용 지시자를 제공하고, 상기 캐시 컨트롤러는, 제1 데이터의 블록에 대한 상기 재사용 지시자가 상기 제1 데이터의 블록이 상기 제1 캐시로부터의 항목 제거에서 재사용될 가능성이 있음을 가리키는 경우, 상기 제1 카운터를 증가시키고, 상기 제1 데이터의 블록에 대한 상기 재사용 지시자가 상기 제1 데이터의 블록이 상기 제1 캐시로부터의 항목 제거에서 재사용될 가능성이 없음을 가리키는 경우, 상기 제1 카운터를 감소시키고, 상기 제1 캐시로부터의 상기 제1 데이터의 블록의 항목 제거시 상기 제2 카운터를 증가시키고, 상기 제1 카운터의 값이 제1 미리 정해진 임계치 이상이거나 또는 상기 제2 카운터의 값이 0과 같은 경우, 상기 제1 데이터의 블록을 상기 제2 캐시로 할당하는 지시를 제공하고, 상기 제1 카운터의 상기 값이 상기 제1 미리 정해진 임계치보다 작고, 상기 제2 카운터의 상기 값이 0이 아닌 경우, 상기 제1 데이터의 블록이 상기 제2 캐시를 바이패스하는 지시를 제공한다.
또 다른 예시적인 실시 예는 캐시 시스템을 제공한다. 적어도 하나의 데이터의 블록을 포함하는 제1 캐시, 상기 제1 캐시보다 낮은 레벨의 캐시인 제2 캐시, 및 제1 카운터 및 제2 카운터를 포함하고, 상기 제1 캐시 및 상기 제2 캐시와 연결된 캐시 컨트롤러를 포함한다. 상기 적어도 하나의 데이터의 블록 각각은 복수의 비트들을 포함하는 태그를 포함한다. 상기 태그 각각의 적어도 하나의 비트는 상기 데이터의 블록이 재사용될 가능성에 대한 재사용 지시자를 제공한다. 상기 캐시 컨트롤러는 제1 데이터의 블록에 대한 상기 재사용 지시자가 상기 제1 캐시로부터의 항목 제거시 상기 제1 데이터의 블록이 재사용될 가능성이 있음을 가리키는 경우, 상기 제1 카운터를 증가시키고, 상기 제1 데이터의 블록에 대한 상기 재사용 지시자가 상기 제1 캐시로부터의 항목 제거시 상기 제1 데이터의 블록이 재사용될 가능성이 없음을 가리키는 경우, 상기 제1 카운터를 감소시키고, 상기 제1 캐시로부터 상기 제1 데이터의 블록의 항목 제거시 상기 제2 카운터를 증가시키고, 상기 제1 카운터의 값이 제1 미리 정해진 임계치 이상이거나 또는 상기 제2 카운터의 값이 0과 같은 경우, LRU(least recently used) 위치 상의 위치에 상기 제1 데이터의 블록을 상기 제2 캐시로 할당하는 지시를 제공하고, 상기 제1 카운터의 상기 값이 상기 제1 미리 정해진 임계치보다 작고, 상기 제2 카운터의 값이 0이 아닌 경우, 상기 제2 캐시의 최근 사용된 위치에 상기 제1 데이터의 블록을 할당하는 지시를 제공한다.
본 발명의 실시 예들에 따르면, 캐시 용량 및 전력을 절약하고, 성능을 향상시킬 수 있는 제1 캐시로부터 제2 캐시로 항목 제거된 데이터를 할당하는 방법 및 캐시 시스템이 제공된다.
이하에서, 본 발명의 기술적 사상이 도면들에 도시된 예시적인 실시 예들을 참조하여 설명될 것이다.
도 1은 본 발명의 실시 예에 따른 바이패스 예측기를 포함하는 캐시 컨트롤러의 예시적인 실시 예의 기능적인 블록도를 보여준다.
도 2는 본 발명의 실시 예에 따라, 블록 A의 데이터가 LLC에서 검색된 경우 바이패스 예측기에 의해 사용되는 절차의 예시적인 실시 예의 순서도를 보여준다.
도 3은 본 발명의 실시 예에 따라, L2 캐시로부터 데이터의 블록 B의 항목 제거에서 발생할 수 있는 바이패스 예측기에 의해 사용되는 프로세스의 예시적인 실시 예의 순서도를 보여준다.
도 4는 본 발명의 실시 예에 따라, 블록 A에 대한 LLC_reuse_hint 비트가 L2 캐시의 블록 A의 캐시 히트를 기반으로 구성 가능한 경우, 발생할 수 있는 바이패스 예측기에 의해 사용되는 프로세스의 예시적인 순서도를 보여준다.
도 5는 본 발명의 실시 예에 따라, L2 캐시로부터의 데이터의 블록 B의 항목 제거에서 발생할 수 있는 바이패스 예측기에 의해 사용되는 프로세스의 다른 예시적인 실시 예의 순서도를 보여준다.
도 6은 본 발명의 실시 예에 따라, L2 캐시로부터의 데이터의 블록 B의 항목 제거에서 발생할 수 잇는 바이패스 예측기에 의해 사용되는 프로세스의 다른 예시적인 실시 예의 순서도를 보여준다.
이하의 상세한 설명에서, 다양한 상세한 설명들은 본 발명의 전반적인 이해를 돕기 위해 제공된다. 그러나, 본 발명이 이러한 상세한 설명 없이 당업자에 의해 구현될 수 있음이 이해될 것이다. 다른 예들에서, 잘 알려진 방법들, 절차들, 구성들, 및 회로들에 대한 상세한 설명은 본 발명을 모호하게 하지 않기 위하여 생략된다.
상세한 설명 전반에 걸친 "하나의 실시 예" 또는 "일 실시 예"의 용어들은 실시 예와 연관되어 설명된 특정 특징, 구조, 또는 특성이 본문의 적어도 하나의 실시 예에 포함될 수 있음을 의미한다. 즉, 상세한 설명 전반의 다른 위치에서의 "하나의 실시 예에서" 또는 "일 실시 예에서" 또는 "일 실시 예에 따라" (또는 유사한 의미를 갖는 다른 표현들)의 표현은 동일한 실시 예 전체를 필수적으로 참조하지 않을 수 있다. 더욱이, 특정 특징들, 구조들, 또는 특성들은 하나 또는 그 이상의 실시 예들에서 적절한 방식으로 조합될 수 있다. 이에 대하여, 본문에서 사용되는 바와 같이, "예시적인"은 실시 예, 예, 또는 설명을 제공하는 것"을 의미한다. "예시적인(exemplary)"로서 본문에 기재된 일부 실시 예는 다른 실시 예들보다 반드시 바람직하거나 또는 유리한 것으로 해석되지 않는다. 또한, 본문에 기재된 내용의 맥락에 따라, 단수 용어는 대응하는 복수 형태들을 포함할 수 있고, 복수 용어는 대응하는 단수 형태를 포함할 수 있다. 본문에 도시되고 언급되는 다양한 도면들(구성 도면들을 포함함)은 오직 도시의 편의를 위한 것이며, 계측되어 도시되지 않는다. 유사하게, 다양한 파형들 및 타이밍도들은 오직 도시의 편의를 위해 도시된다. 예를 들어, 요소들의 일수의 치수는 명확성을 위해 다른 요소들과 비교하여 과장될 수 있다. 더욱이, 적절하게 고려되는 경우, 참조 번호들은 대응하는 및/또는 유사한 요소들을 나타내기 위해 도면들에서 반복된다.
본문에서 사용되는 용어들은 일부 실시 예들을 설명하는 목적을 위한 것이며, 본 발명이 이에 한정되는 것으로 의도되지 않는다. 본문에서 사용되는 바와 같이, 맥락에서 명확히 다르게 지칭되지 않는 한, 단수 용어들은 복수의 형태들을 포함하는 것으로 의도된다. "포함하다(comprises, comprising)"의 용어들은, 본문에서 사용될 때, 열거된 특징들(features), 정수들(integers), 단계들(steps), 동작들(operations), 요소들(elements), 및/또는 구성들(components)의 존재를 가리키나, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 구성들, 및/또는 그것들의 그룹들의 존재 또는 추가를 불가능하게 하지 않는다. 본문에서 사용되는 바와 같이, "제1(first)," "제2(second)" 등의 용어들은 그것들에 앞선 명사들에 대한 라벨로서 사용되며, 명시적으로 정의되지 않는 한, 어떤 타입의 순서(예를 들어, 공간적(spatial), 시간적(temporal), 논리적(logical) 등)를 암시하지 않는다. 더욱이, 동일한 참조 번호들은 둘 또는 그 이상의 도면들에서 사용되어, 동일한거나 또는 유사한 기능을 갖는 부분들, 구성들, 블록들, 회로들, 유닛들, 또는 모듈들을 지칭할 수 있다. 그러나 이러한 사용은 도면의 간결성 및 설명의 편의를 위한 것이며, 이러한 구성들 또는 유닛들의 구성적이거나 또는 구조적인 세부 사항들이 모든 실시 예들에서 동일하거나 또는 공통적으로 참조되는 부분들/모듈들이 본문에 기재된 일부 예시적인 실시 예들을 구현하는 유일한 방법임을 암시하지 않는다.
다르게 정의되지 않는 한, 본문에서 사용되는 모든 용어들(기술적 또는 과학적 용어들을 포함함)은 본 발명이 속하는 기술 분야에서의 통상의 기술자에 의해 공통적으로 이해되는 바와 같이 동일한 의미를 갖는다. 공용 사전들에서 정의되는 용어들과 같은 용어들은 연관된 기술 분야의 맥락에서의 그것들의 의미와 동일한 의미를 갖는 것으로 해석되며, 본문에서 명시적으로 정의되지 않는 한 이상적이거나 또는 과도하게 형식적인 의미로 해석되지 않을 것이다.
본문에서 사용되는 바와 같이, "모듈(module)"의 용어는 모듈과 연관되어 본문에서 설명된 기능을 제공하도록 구성된 소프트웨어, 펌웨어, 및/또는 하드웨어의 어떤 조합을 지칭한다. 소프트웨어는 소프트웨어 패키지, 코드, 및/또는 명령어 세트 또는 명령어들로 구현될 수 있고, 본문에서 기재된 어떤 구현에서 사용되는 바와 같은 "하드웨어(hardware)"의 용어는, 예를 들어, 고정 배선 회로(hardwired circuitry), 프로그램 가능한 회로(programmable circuirity), 상태 머신 회로(state machine circuirity), 및 또는 프로그램 가능한 회로에 의해 실행되는 명령어들을 저장하는 펌웨어 중 하나 또는 그것들의 조합을 포함할 수 있다. 모듈들은 집적 회로(IC; integrated circuit), 시스템-온-칩(SoC; system on-chip) 등과 같은, 그러나 이에 한정되지 않는 더 큰 시스템의 일부를 형성하는 회로로서 종합적으로 또는 개별적으로 구현될 수 있다.
본 발명은 LLC(last level cache)와 같은 배타적 캐시들을 위한 바이패스 예측기(bypass predictor)를 포함하는 캐시 컨트롤러를 제공한다. 바이패스 예측기는 더 높은 레벨의 캐시로 데이터가 스왑되는 배타적 LLC에서의 데이터의 참조들(references)뿐만 아니라 데이터의 재사용 정보를 포함한다. 캐시 컨트롤러는, 예측이 바이패스 아님(not bypass)(즉, 재사용의 높은 가능성)을 가리키는 경우, 더 높은 레벨의 캐시로부터 배타적 LLC로 빅팀(victim)을 캐스트 아웃할 수 있고, 예측이 바이패스(bypass)(즉, 재사용의 낮은 가능성)을 가리키는 경우, 빅팀을 드롭(drop)하거나 또는 라이트-쓰루(write-through)할 수 있다. 캐시 컨트롤러는 배타적 LLC의 전체 재사용 패턴을 추적함으로써 하나 또는 그 이상의 더 높은 레벨의 캐시들에 의해 구동될 수 있고, 이러한 예측의 신뢰성이 높은 경우, 바이패스 예측기를 사용할 수 있다.
본 발명은 배타적 캐시들을 위한 조직화된 캐시 관리 기법(coordinated cache management technique)을 제공한다. 예를 들어, 본문에서와 같이 3-레벨 캐시 계층(3-level cache hierarchy)(L1, L2, and LLC)를 사용하는 경우, L2 캐시는 캐시 재사용을 추적하고, 캐시 컨트롤러의 일부인 바이패스 예측기는 L2 항목 제거들(evictions)로 할당된 LLC에서의 위치들을 가리키는 재사용 정보를 사용할 수 있다. 재사용을 추적하기 위해, 바이패스 예측기는 워킹 세트가 LLC를 스래싱(thrashing)하는지 동적으로 검출할 수 있다. 만약 바이패스 예측기가 스래싱을 예측하거나 또는 가리키는 경우, 캐시 컨트롤러는 LRU에 블록들을 할당하도록 또는 내?i기를 바이패스하여 재사용의 높은 가능성을 가질 수 있는 LLC에서 블록들을 유지하도록 LLC를 제어할 수 있다.
본 발명의 캐시 컨트롤러를 위한 바이패스 예측기는 최소의 오버헤드를 사용하고, 배타적 LLC들에 대한 스래싱 저항(thrash resistance)을 제공할 수 있다. 더 높은 레벨의 캐시는 배타적 LLC를 스래싱하는 캐시 라인들을 검출할 수 있고, 이러한 캐시 라인들을 필터링하여 배타적 LLC로 재사용 가능한 블록들만 할당하여 캐시 용량, 전력을 절약하고 성능을 향상시킬 수 있다.
일 실시 예에서, 캐시 시스템은 L1캐시, 포괄적인 L2 캐시, 및 배타적 LLC 캐시를 포함하는 3-레벨 캐시 계층으로 구성될 수 있다. L2 캐시의 태그들은 L2 캐시의 라인들의 LLC 히트/미스 정보(LLC 메타데이터)를 저장한다. L2 캐시로 할당된 채우기 데이터(Fill data)는 데이터의 소스(즉, DRAM, 또는 LLC)를 가리킨다. 캐시 컨트롤러의 바이패스 예측기는 L2 캐시로부터 항목 제거된 라인들의 LLC 메타 데이터를 기반으로 학습하거나 또는 적응된다. 만약 LLC 메타 데이터가 낮은 LLC 히트율(hit ratio)를 가리키는 경우, 바이패스 예측기는 다름 L2 캐스트 아웃이 LLC 바이패스 가능한 캐스트 아웃인 것으로 예측한다. LLC-바이패스 가능한 것으로 예측된 L2 캐시로부터의 캐스트 아웃들은 더티(dirty)일 수 있고, 이 경우, 캐스 아웃 데이터가 DRAM으로 직접 전송되고, 그로 인하여, LLC 스필 및 필 상황(spill and pill situation)이 방지된다. 또는, L2 캐시로부터의 캐스트 아웃이 클린(clean)일 수 있고, 이 경우, 데이터가 캐스트 아웃되지 않는다. 일 실시 예에서, 캐스트 아웃의 어드레스는 다운스트림 스눕 필터를 업데이트하는데 사용될 수 있다. LLC 재사용 이력을 사용하는 것에 추가적으로, 본 발명의 바이패스 예측기는 L2 캐시의 재사용 정보를 예측의 기반의 일부로서 사용할 수 있으며, 이는 라인들이 L2 캐시 또는 LLC 캐시에서 재사용되지 않는 경우 더 많은 신뢰성을 추가할 수 있다.
본 발명의 캐시 컨트롤러에 대한 바이패스 예측기는 LLC에 대한 스래싱-저항 메커니즘을 제공한다. 메커니즘의 일부로서, 애플리케이션이 LLC를 스래싱하는 상황이라도, 바이패스 예측기는 LLC로 캐스트-아웃들을 주기적으로 전송하도록 구성될 수 있다. 예를 들어, 모든 L2 항목 제거들(evictions)이 LLC-바이패스 가능한 것으로 예측된 경우, 애플리케이션이 더욱 캐시-친화적인 상태로 이동한 것을 검출하는 것이 쉽지 않을 수 있다. 이를 극복하기 위하여, 본 발명의 바이패스 예측기는 극단적인 바이패스 모드라 하더라도, 캐스트 아웃들이 LLC로 전송되는 것을 주기적으로 지칭할 수 있다. 캐스트 아웃들의 주기적인 전송은 예측기를 트레이닝 또는 적응시키기 위한 LLC 히트율을 샘플링하는데 바이패스 예측기에 의해 사용될 수 있다. 큰 워킹 세트들에 대하여, 샘플링은 서브셋이 LLC에서 유지되는 것을 허용하고, 스래싱 저항을 제공한다. 일 실시 예에서, 샘플링 레이트(sampling rate)는 2의 제곱으로 설정될 수 있다. 예를 들어, 하나의 캐스트 아웃은 매 32 캐스트 아웃들에 대한 LLC로 할당된다. 워킹 세트≤LLC 크기*샘플링 레이트(working set < LLC size * Sample Rate)인 경우, 스래싱 저항이 제공된다.
도 1은 본 발명의 실시 예에 따른, 바이패스 예측기(101)를 포함하는 캐시 컨트롤러(100)의 예시적인 실시 예의 기능적 블록도를 보여준다. 캐시 컨트롤러(100)는 L1 캐시(102), 포괄적 L2 캐시(103), 및 배타적 LLC(104)를 포함하는 3-레벨 캐시 계층을 제어할 수 있다. 캐시들(102~104)은 하나 또는 그 이상의 프로세서들(104) 및 메인 메모리(106)와 연결될 수 있다. 도면에서는 하나의 프로세서만 도시된다. L2 캐시(103)로부터 LLC(104) 또는 메인 메모리(106) 중 하나로 빅팀들의 바이패싱 또는 할당을 제어하거나 또는 관리하는 것과 연관된 기능들 및/또는 로직을 전달하기 위해, 캐시 컨트롤러(100)가 L2 캐시(103) 및 LLC 캐시(104)를 포함하는 것으로 도시된다. 도 1에 도시된 전체 시스템은 컴퓨터, 휴대 장치, 스마트폰, PDA(personal digital assistant), 네이게이션 장치, 통신 장치, 또는 엔터테인먼트 장치 중 일부일 수 있으나, 이에 한정되지 않는 컴퓨팅 장치일 수 있다. 더욱이, 도 1에 도시된 전체 시스템은 디스플레이 장치, 입력 장치, 대용량 저장 장치, 및 통신 인터페이스, 그러나 이에 한정되지 않는 도시되지 않은 다른 구성들 또는 장치들을 포함할 수 있다.
다른 구현들로 본 발명의 기능들이 가능하기 때문에, 캐시 컨트롤러(100) 및 바이패스 예측기(101)의 표현들은 제한으로서 의도되지 않음이 이해되어야 한다. 일 실시 예에서, 캐시 컨트롤러(100) 및/또는 바이패스 예측기(101)는 본 발명의 기능을 제공하도록 구성된 소프트웨어, 펌웨어, 및/또는 하드웨어의 조합들로서 구현된 모듈들일 수 있다.
바이패스 예측기(101)는 힌트 비트(107), 및 제1 카운터(108)를 포함할 수 있다. 일 실시 예에서, 바이패스 예측기는 제2 카운터(109)를 더 포함할 수 있다. 비록 힌트 비트(107), 제1 카운터(108), 및 제2 카운터(109)에 대하여 이하에서, 예시적인 비트 크기들이 지칭되나, 비트 크기들은 설명된 예시적인 크기들과 다르게 사용될 수 있음이 이해될 것이다.
힌트 비트(107)는 1-비트 지시자일 수 있고, 본문에서, LLC_reuse_hint bit(107)라 칭한다. L2 태그당 하나의 힌트 비트(107)가 존재할 수 있다. 일 실시 예에서, LLC_resue_hint bit(107)는 요청들이 LLC에서 히트일 때, 설정될 수 있다.
제1 카운터(108)는 L2 뱅크당 12-비트의 포화 카운터(saturating counter)일 수 있고, 본문에서 LLC_hit_cnt 카운터(108) 또는 글로벌 LLC_hit_cnt 카운터(108)라 칭한다. LLC_hit_cnt(108)는 요청들을 추적하는데 사용될 수 있다. 초기화(initialization)에서, LLC_hit_cnt 카운터(108)는 0xfff로 설정될 수 있다. L2 캐시 빅팀에서, LLC_hit_cnt 카운터는 빅팀인 라인의 태그와 연관된 LLC_reuse_hint bit를 기반으로 증가 또는 감소된다. LLC_hit_cnt의 값이 low_hit_threshold의 값보다 작은 경우, 바이패스 예측기(101)는 L2 빅팀이 LLC(104)를 바이패스하고, 그렇지 않다면, L2 빅팀이 LLC(104)에 캐싱되도록 지시한다.
제2 카운터(109)는 5-비트 포화 카운터이고, 본문에서, LLC_victim_sample_cnt 카운터(109)라 칭한다. L2 뱅크당 하나의 LLC_victim_sample_cnt 카운터(109)가 존재할 수 있다. LLC_victim_sample_cnt 카운터(109)는 매 L2 캐시 빅팀마다 증가할 수 있다. (0~31, 31에서 0으로 옮겨짐) 만약 LLC_victim_sample_cnt가 0과 같은 경우, 빅팀은 예측기 결정과 무관하게 LLC로 할당된다. 이는 예측기가 바이패스 모드인 경우, 트레이닝을 계속하게 한다.
도 2는 본 발명의 실시 예에 따른, 블록 A의 데이터가 LLC에서 검색된 경우, 바이패스 예측기(101)에 의해 사용되는 프로세스(200)의 예시적인 실시 예의 순서도를 보여준다. 201에서, 블록 A가 LLC(104)에 있는지 판별된다. 히트가 발생한 경우, 흐름은 블록 A가 L2 캐시(103)로 반환되고 LLC_reuse_hint[A] 비트가 1로 설정되는 202로 진행한다. 만약, 201에서, 미스가 발생한 경우, 흐름은 블록 A를 DRAM(메모리(106))로부터 획득하는 203으로 진행한다. 흐름은 블록 A를 L2 캐시(103)로 반환하고, LLC_reuse_hint[A] 비트를 0으로 설정하는 204로 진행한다.
도 3은 본 발명의 실시 예에 따른, L2 캐시(103)로부터 블록 B의 데이터의 항목 제거(eviction)에서, 발생할 수 있는 바이패스 예측기(101)에 의해 사용되는 프로세스(300)의 예시적인 실시 예의 순서도이다. 301에서, LLC_reuse_hint[B]가 1과 동일한지 판별된다. 만약 그렇다면, 흐름은 LLC(104)에서 바이패스가 없음을 지시하는 글로벌 카운터 LLC_hit_cnt가 증가되는 302로 진행한다. 추가적으로, LLC_victim_sample_cnt가 증가된다. 흐름은 303으로 진행한다.
만약, 301에서, LLC_reuse_hint[B]가 0과 같은 경우, 흐름은 빅팀 블록 B가 LLC(104)를 바이패스함을 지시하는 글로벌 카운터 LLC_hint_cnt가 감소되는 304로 진행한다. 추가적으로, LLC_victim_sample_cnt는 증가된다. 흐름은 303으로 진행한다.
303에서, (1) LLC_reuse_hit[B]가 0과 같은지, (2) LLC_hit_cnt가 low_hit_threshold보다 낮은지, 그리고 (3) LLC_victim_sample_cnt가 0과 같지 않은지 판별된다. 3가지 조건들이 만족하지 않은 경우, 흐름은 예측기가 빅팀 블록 B에 대한 LLC(104)의 바이패스가 없어야 하고, LLC(104)가 블록 B에 대한 공간을 할당하는 것을 지시하는 305로 진행한다.
303에서, 3가지 조건들이 모두 만족된 경우, 흐름은 B가 클린 데이터인지 판별되는 306으로 진행한다. 만약 그렇다면, 흐름은 바이패스 예측기(101)가 빅팀 블록 B이 LLC(104)를 바이패스하여야 하고, L2 캐시(103)가 블록 B를 드롭하는 것을 지시하는 307로 진행한다.
306에서, 블록 B가 클린 데이터가 아닌 것으로 판별된 경우, 흐름은 비록 바이패스 예측기(101)가 블록 B를 LLC를 바이패스할 수 있다고 지시할 수 있더라도, 데이터가 더티이므로 블록 B가 LLC(104)로부터 바이패스되지 않는 308로 진행한다.
LLC_reuse_hint 비트는, 다른 조건들을 기반으로, 바이패스 예측기(101)에 의해 제공되는 예측의 신뢰서의 향상을 제공하도록 구성될 수 있다. 예를 들어, 블록 A에 대하여 L2 캐시(103) 상에서 히트가 발생한 경우, 액세스된 블록 A에 대한 LLC_reuse_hint 비트는 LLC(104)에서 히트인지 또는 아닌지와 무관하게 설정될 수 있다. 즉, 바이패스 예측기(101)는 no-LLC-reuse로부터 LLC-reuse로의 프로그램 상태 변화에 신속하게 반응할 수 있다.
도 4는 본 발명의 실시 예에 따라, 블록 A에 대한 LLC_resue_hint 비트가 L2 캐시(103)의 블록 A에서의 캐시 히트를 기반으로 구성된 경우, 발생될 수 있는 바이패스 예측기에 의해 사용되는 프로세스(400)의 예시적인 실시 예의 순서도를 보여준다. 특히, 프로세스(400)는 바이패스 예측기를 좀 더 보수적이게 한다. 401에서, L2 캐시(103)에서 블록 A에 대한 캐시 히트가 발생한 경우, 바이패스를 수행하지 않음을 지시하는 402에서 블록 A에 대한 LLC_reuse_hint[A] 비트를 1과 동일하게 설정한다. 만약 401에서 블록 A에 대한 캐시 히트가 없는 경우, 흐름은 블록 A에 대한 LLC_resue_hint[A] 비트가 1과 동일한지 판별되는 403으로 진행한다. 만약 그렇다면, 흐름은 블록 A에 대한 LLC_reuse_hint[A]를 1로 유지하는 404로 진행한다. 만약 403에서, 블록 A에 대한 LLC_reuse_hint[A]가 1과 동일하지 않은 경우, 흐름은 블록 A에 대한 LLC_reuse_hint[A]를 0으로 설정하는 405로 진행한다. 즉, 401에서, 블록 A가 L2 캐시에서 히트를 갖지 않는 경우, 403에서의 결정은 LLC_reuse_hint[A] 비트의 값을 변경하지 않고 유지시킨다.
도 3에 도시된 예시적인 프로세스(300)의 다른 실시 예로서, 예측과 무관하게 LLC(104)에 더티 데이터를 할당하는 것 대신에, 바이패스될 것으로 예측된 더티 블록들이 LLC(104)로 할당하는 것 없이 DRAM(메모리(106))로 직접 라이트-백(write back)될 수 있으며, 이에 따라 캐시 용량 및 전력을 절약할 수 있다.
도 5는 본 발명의 실시 예에 따른, L2 캐시(103)로부터 블록 B의 데이터의 항목 제거에서 발생할 수 잇는 바이패스 예측기(101)에 의해 사용되는 프로세스(500)의 다른 예시적인 실시 예의 순서도를 보여준다. 501ㅇ에서, L2 캐시(103)로부터의 블록 B의 데이터의 항목 제거(eviction)에서, LLC_resuse_hint[B]가 1과 같은지 판별된다. 만약 그렇다면, 흐름은 LLC에서 바이패스가 없음을 지시하는 글로벌 카운터 LLC_hint_cnt가 증가되는 503로 진행한다. 추가적으로, LLC_victim_sample_cnt가 증가된다. 흐름은 503으로 진행한다.
501에서, LLC_reuse_hint[B]가 0과 같은 경우, 흐름은 빅팀 블록 B가 LLC(104)를 바이패스하는 것을 지시하는 글로벌 카운터 LLC_hit_cnt가 감소되는 504로 진행한다. 추가적으로, LLC_victim_sample_cnt가 증가된다. 흐름은 503으로 진행한다.
503에서, (1) LLC_reuse_hit[B]가 0과 같은지, (2) LLC_hit_cnt가 low_hit_threshold보다 작은지, 그리고 (3) LLC_victim_sample_cnt가 0과 같지 않은지 판별된다. 이러한 3개의 조건들이 만족되지 않은 경우, 흐름은 바이패스 예측기(101)가 빅팀 블록 B에 대하여 LLC(104)의 바이패스가 없어야 하고, LLC(104)가 블록 B에 대한 공간을 할당하는 것을 지시하는 505로 진행한다.
만약 503에서, 3개의 조건들이 모두 만족한 경우, 흐름은 B가 클린 데이터인지 판별되는 506으로 진행한다. 만약 그렇다면, 흐름은 바이패스 예측기(101)가 빅팀 블록 B이 LLC(104)를 바이패스하여야 하고, L2 캐시(103)가 블록 B를 드롭하는 것을 지시하는 507로 진행한다.
만약 506에서, 블록 B가 클린 데이터가 아닌 것으로 판별된 경우, 흐름은 블록 B의 데이터에 대한 예측이 LLC(104)를 바이패스하는 것인 508로 진행한다. 데이터가 더티이므로, L2 캐시(103)는 블록 B의 데이터를 DRAM(메모리(106))에 직접 기입하고, 이에 따라 LLC(104)를 바이패싱한다.
하나의 예시적인 실시 예에서, L2 캐시(103)로부터의 블록 B의 데이터의 항목 제거(evictiom)시, 바이패스 예측기(101)는 LLC(104)를 완전히 바이패싱하는 것과는 대조적으로 LLC(104)내의 블록 B의 데이터를 적어도 최근에 사용된 위치로 다운그레이드할 수 있다.
도 6은 본 발명의 실시 예에 따른, L2 캐시(103)로부터 블록 B의 데이터의 항목 제거시 발생할 수 있는 바이패스 예측기(104)에 의해 사용되는 프로세스(600)의 다른 예시적인 실시 예의 순서도를 보여준다. 601에서, L2 캐시(103)로부터의 블록 B의 데이터의 항목 제거시, LLC_reuse_hint[B]가 1과 동일한지 판별된다. 만약 그렇다면, 흐름은 LLC(104)에서 바이패스가 없음을 지시하는 글로벌 카운터 LLC_hit_cnt가 증가되는 602로 진행한다. 추가적으로, LLC_victim_sample_cnt가 증가된다. 흐름은 603으로 진행한다.
만약, 601에서, LLC_reuse_hint[B]가 0과 같은 경우, 흐름은 빅팀 블록 B가 LLC(104)에서 바이패스되는 것을 지시하는 글로벌 카운터 LLC_hit_cnt가 감소되는 604로 진행한다. 추가적으로, LLC_victim_sample_cnt가 증가된다. 흐름은 603으로 진행한다.
603에서, (1) LLC_reuse_hit[B]가 0과 동일한지, (2) LLC_hit_cnt가 low_hit_threshold보다 작은지, 그리고 (3) LLC_victim_sample_cnt가 0과 같지 않은지 판별된다. 3가지의 조건들이 만족되지 않은 경우, 흐름은 바이패스 예측기(101)가 블록 B의 데이터가 LLC(104)에서 가장 최근에 사용된 (LRU) 위치 상의 위치에 할당되어야 함을 지시하는 605로 진행한다.
만약, 603에서, 3가지의 조건들이 모두 만족된 경우, 흐름은 예측기가 블록 B의 데이터를 다운그레이드하고, LLC(104)가 블록 B의 데이터를 LLC(104)의 LRU 위치에 할당하는 606으로 진행한다.
당업자에 의해 인식되는 바와 같이, 본문에 기재된 본 발명의 기술적 사상은 애플리케이션들의 넓은 범위에서 변경되거나 또는 변형될 수 있다. 따라서, 특허청구범위는 상술된 상세한 예시적인 실시 예들에 국한되어서는 안되며, 대신에 이하의 특허청구범위에 의해 정의된다.

Claims (20)

  1. 제1 캐시로부터 제2 캐시로 항목 제거된 데이터를 할당하는 방법에 있어서,
    상기 데이터의 블록에 대한 재사용 지시자가 상기 제2 캐시보다 더 높은 레벨의 캐시인 상기 제1 캐시로부터 상기 데이터의 블록의 항목 제거에서 상기 데이터의 블록이 재사용될 가능성이 있는지를 가리키는지를 판별하는 단계;
    상기 데이터의 블록에 대한 상기 재사용 지시자가 상기 데이터의 블록이 재사용될 가능성이 있음 가리키는 경우, 제1 카운터를 증가시키는 단계;
    상기 데이터의 블록에 대한 상기 재사용 지시자가 상기 데이터의 블록의 재사용될 가능성이 없음을 가리키는 경우, 상기 제1 카운터를 감소시키는 단계;
    상기 제1 캐시로부터 상기 데이터의 블록의 항목 제거시, 제2 카운터를 증가시키는 단계;
    상기 제1 카운터의 값 및 제1 미리 정해진 임계치를 비교하는 단계;
    상기 제2 카운터의 값이 0과 동일한지 판별하는 단계;
    상기 제1 카운터의 상기 값이 상기 제1 미리 정해진 임계치 이상이거나 또는 상기 제2 카운터의 상기 값이 0과 동일한 경우, 상기 제2 캐시로 상기 데이터의 블록을 저장하는 단계; 및
    상기 제1 카운터의 상기 값이 상기 제1 미리 정해진 임계치보다 작고 상기 제2 카운터의 값이 0과 같지 않은 경우, 상기 제2 캐시를 바이패싱(bypassing)하면서, 상기 데이터의 블록을 시스템 메모리에 기입하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 제1 캐시의 상기 데이터의 블록에 대한 요청을 수신하는 단계;
    상기 데이터의 블록에 대한 상기 요청이 상기 제2 캐시에서 히트인 경우, 상기 데이터의 블록이 재사용될 가능성이 있음을 가리키도록 상기 제1 캐시의 상기 재사용 지시자를 설정하는 단계; 및
    상기 데이터의 블록에 대한 상기 요청이 상기 제2 캐시에서 미스인 경우, 상기 데이터의 블록이 재사용될 가능성이 없음을 가리키도록 상기 제1 캐시의 상기 재사용 지시자를 설정하는 단계를 더 포함하는 방법.
  3. 제 1 항에 있어서,
    상기 제1 캐시의 상기 데이터의 블록에 대한 요청을 수신하는 단계;
    상기 데이터의 블록에 대한 상기 요청이 상기 제2 캐시에서 히트이고, 상기 재사용 지시자가 상기 데이터의 블록에 대한 상기 요청에 응답하여 구성 가능한 경우, 상기 데이터의 블록이 재사용될 가능성이 있음을 가리키도록 상기 제1 캐시의 상기 재사용 지시자를 설정하는 단계; 및
    상기 데이터의 블록에 대한 상기 요청이 상기 제2 캐시에서 미스이고, 상기 재사용 지시자가 상기 데이터의 블록에 대한 상기 요청에 응답하여 구성 가능한 경우, 상기 데이터의 블록이 재사용될 가능성이 없음을 가리키도록 상기 제1 캐시의 상기 재사용 지시자를 설정하는 단계를 더 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 제1 카운터의 상기 값이 상기 제1 미리 정해진 임계치보다 작고 상기 제2 카운터의 값이 0과 같지 않은 경우, 상기 제2 캐시를 바이패싱(bypassing)하는 것은:
    상기 데이터의 블록이 클린 데이터인 경우 상기 제2 캐시로부터 상기 데이터의 블록을 바이패싱하는 단계; 및
    상기 데이터의 블록이 더티 데이터인 경우, 상기 제2 캐시로 상기 데이터의 블록을 할당하는 단계를 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 제1 카운터의 상기 값이 상기 제1 미리 정해진 임계치보다 작고 상기 제2 카운터의 값이 0과 같지 않은 경우, 상기 제2 캐시를 바이패싱(bypassing)하는 것은:
    상기 데이터의 블록이 클린 데이터인 경우, 상기 제1 캐시로부터 상기 데이터의 블록을 드롭하는 단계; 및
    상기 데이터의 블록이 더티 데이터인 경우, 상기 데이터의 블록을 상기 시스템 메모리로 기입하는 단계를 포함하는 방법.
  6. 제 1 항에 있어서,
    상기 제2 캐시는 마지막 레벨 캐시(LLC; last-level cache)인 방법.
  7. 제1 캐시로부터 제2 캐시로 항목 제거된 데이터를 할당하는 방법에 있어서,
    데이터의 블록에 대한 재사용 지시자가, 상기 제2 캐시보다 높은 레벨의 캐시인 상기 제1 캐시로부터 상기 데이터의 블록의 항목 제거에서, 상기 데이터의 블록이 재사용될 가능성이 있는지를 가리키는지 판별하는 단계;
    상기 데이터의 블록에 대한 상기 재사용 지시자가 상기 데이터의 블록이 재사용될 가능성이 있음을 가리키는 경우, 제1 카운터를 증가시키는 단계;
    상기 데이터의 블록에 대한 상기 재사용 지시자가 상기 데이터의 블록이 재사용될 가능성이 없음을 가리키는 경우, 상기 제1 카운터를 감소시키는 단계;
    상기 제2 캐시로부터 상기 데이터의 블록의 항목 제거시 제2 카운터를 증가시키는 단계;
    상기 제1 카운터의 값이 제1 미리 정해진 임계치보다 작은지 판별하는 단계;
    상기 제2 카운터의 값이 0과 같은지 판별하는 단계;
    상기 제1 카운터의 상기 값이 상기 제1 미리 정해진 임계치 이상이거나 또는 상기 제1 카운터의 상기 값이 0과 같은 경우, 상기 제2 캐시에서 가장 최근에 사용된 위치 상위인 상기 제2 캐시의 위치에 상기 데이터의 블록을 할당하는 단계; 및
    상기 제1 카운터의 상기 값이 상기 제1 미리 정해진 임계치보다 작고, 상기 제2 카운터의 상기 값이 0이 아닌 경우, 상기 제2 캐시의 상기 가장 최근에 사용된 위치에 상기 데이터의 블록을 할당하는 단계를 포함하는 방법.
  8. 제 7 항에 있어서,
    상기 제1 캐시내의 상기 데이터의 블록에 대한 요청을 수신하는 단계;
    상기 데이터의 블록에 대한 상기 요청이 상기 제2 캐시에서 히트인 경우, 상기 데이터의 블록이 재사용될 가능성이 있음을 가리키도록 상기 제1 캐시의 상기 재사용 지시자를 설정하는 단계; 및
    상기 데이터의 블록이 상기 제2 캐시에서 미스인 경우, 상기 데이터의 블록이 재사용될 가능성이 없음을 가리키도록 상기 제1 캐시의 상기 재사용 지시자를 설정하는 단계를 더 포함하는 방법.
  9. 제 7 항에 있어서,
    상기 제2 캐시내의 상기 데이터의 블록에 대한 요청을 수신하는 단계;
    상기 데이터의 블록에 대한 상기 요청이 상기 제2 캐시에서 히트이고, 상기 재사용 지시자가 상기 데이터의 블록에 대한 상기 요청에 응답하여 구성 가능한 경우, 상기 데이터의 블록이 재사용될 가능성이 있음을 가리키도록 상기 제1 캐시의 상기 재사용 지시자를 설정하는 단계; 및
    상기 데이터의 블록에 대한 상기 요청이 상기 제2 캐시에서 미스이고, 상기 재사용 지시자가 상기 데이터의 블록에 대한 상기 요청에 응답하여 구성 가능한 경우, 상기 데이터의 블록이 재사용될 가능성이 없음을 가리키도록 상기 제1 캐시의 상기 재사용 지시자를 설정하는 단계를 더 포함하는 방법.
  10. 제 7 항에 있어서,
    상기 제2 캐시는 마지막 레벨 캐시(LLC; last-level cache)인 방법.
  11. 캐시 시스템에 있어서,
    적어도 하나의 데이터의 블록을 포함하는 제1 캐시;
    상기 제1 캐시보다 낮은 레벨 캐시인 제2 캐시; 및
    제1 카운터 및 제2 카운터를 포함하고, 상기 제1 캐시 및 상기 제2 캐시와 연결된 캐시 컨트롤러를 포함하고,
    상기 적어도 하나의 데이터 블록 각각은 복수의 비트들을 포함하는 태그를 포함하고,
    상기 태그 각각의 적어도 하나의 비트는 상기 데이터의 블록이 재사용될 가능성에 대한 재사용 지시자를 제공하고,
    상기 캐시 컨트롤러는:
    제1 데이터의 블록에 대한 상기 재사용 지시자가 상기 제1 데이터의 블록이 상기 제1 캐시로부터의 항목 제거에서 재사용될 가능성이 있음을 가리키는 경우, 상기 제1 카운터를 증가시키고;
    상기 제1 데이터의 블록에 대한 상기 재사용 지시자가 상기 제1 데이터의 블록이 상기 제1 캐시로부터의 항목 제거에서 재사용될 가능성이 없음을 가리키는 경우, 상기 제1 카운터를 감소시키고;
    상기 제1 캐시로부터의 상기 제1 데이터의 블록의 항목 제거시 상기 제2 카운터를 증가시키고;
    상기 제1 카운터의 값이 제1 미리 정해진 임계치 이상이거나 또는 상기 제2 카운터의 값이 0과 같은 경우, 상기 제1 데이터의 블록을 상기 제2 캐시로 할당하는 지시를 제공하고;
    상기 제1 카운터의 상기 값이 상기 제1 미리 정해진 임계치보다 작고, 상기 제2 카운터의 상기 값이 0이 아닌 경우, 상기 제1 데이터의 블록이 상기 제2 캐시를 바이패스하는 지시를 제공하는 캐시 시스템.
  12. 제 11 항에 있어서,
    상기 캐시 컨트롤러는:
    상기 제1 캐시의 상기 제1 데이터의 블록에 대한 요청이 히트인 경우, 상기 제1 데이터의 블록이 재사용될 가능성이 있음을 가리키도록 상기 제1 데이터의 블록에 대한 상기 재사용 지시자를 설정하고;
    상기 제1 캐시의 상기 제1 데이터의 블록에 대한 요청이 미스인 경우, 상기 제1 데이터의 블록이 재사용될 가능성이 없음을 가리키도록 상기 제1 데이터의 블록에 대한 상기 재사용 지시자를 설정하는 캐시 시스템.
  13. 제 11 항에 있어서,
    상기 캐시 컨트롤러는:
    상기 제1 캐시의 상기 제1 데이터의 블록에 대한 요청이 히트이고, 상기 재사용 지시자가 상기 제1 데이터 블록에 대한 상기 요청에 응답하여 구성 가능한 경우, 상기 제1 데이터의 블록이 재사용될 가능성이 있음을 가리키도록 상기 제1 데이터의 블록에 대한 상기 재사용 지시자를 설정하고;
    상기 제1 캐시의 상기 제1 데이터의 블록에 대한 요청이 미스이고, 상기 재사용 지시자가 상기 제1 데이터 블록에 대한 상기 요청에 응답하여 구성 가능한 경우, 상기 제1 데이터의 블록이 재사용될 가능성이 없음을 가리키도록 상기 제1 데이터의 블록에 대한 상기 재사용 지시자를 설정하는 캐시 시스템.
  14. 제 11 항에 있어서,
    상기 캐시 컨트롤러는:
    상기 제1 데이터의 블록이 클린 데이터인 경우, 상기 제1 데이터의 블록이 상기 제2 캐시를 바이패스하는 지시를 제공하고,
    상기 제1 데이터의 블록이 더티 데이터인 경우, 상기 제1 데이터의 블록이 상기 제2 캐시에 할당되는 지시를 제공하는 캐시 시스템.
  15. 제 11 항에 있어서,
    상기 캐시 컨트롤러는:
    상기 제1 데이터의 블록이 클린 데이터인 경우, 상기 제1 캐시로부터 상기 제1 데이터의 블록을 드롭하는 지시를 제공하고,
    상기 제1 데이터의 블록이 더티 데이터인 경우, 상기 제1 데이터의 블록을 메모리로 기입하는 지시를 제공하는 캐시 시스템.
  16. 제 11 항에 있어서,
    상기 제2 캐시는 마지막 레벨 캐시(LLC; last-level cache)인 캐시 시스템.
  17. 캐시 시스템에 있어서,
    적어도 하나의 데이터의 블록을 포함하는 제1 캐시;
    상기 제1 캐시보다 낮은 레벨의 캐시인 제2 캐시; 및
    제1 카운터 및 제2 카운터를 포함하고, 상기 제1 캐시 및 상기 제2 캐시와 연결된 캐시 컨트롤러를 포함하고,
    상기 적어도 하나의 데이터의 블록 각각은 복수의 비트들을 포함하는 태그를 포함하고,
    상기 태그 각각의 적어도 하나의 비트는 상기 데이터의 블록이 재사용될 가능성에 대한 재사용 지시자를 제공하고,
    상기 캐시 컨트롤러는:
    제1 데이터의 블록에 대한 상기 재사용 지시자가 상기 제1 캐시로부터의 항목 제거시 상기 제1 데이터의 블록이 재사용될 가능성이 있음을 가리키는 경우, 상기 제1 카운터를 증가시키고;
    상기 제1 데이터의 블록에 대한 상기 재사용 지시자가 상기 제1 캐시로부터의 항목 제거시 상기 제1 데이터의 블록이 재사용될 가능성이 없음을 가리키는 경우, 상기 제1 카운터를 감소시키고;
    상기 제1 캐시로부터 상기 제1 데이터의 블록의 항목 제거시 상기 제2 카운터를 증가시키고;
    상기 제1 카운터의 값이 제1 미리 정해진 임계치 이상이거나 또는 상기 제2 카운터의 값이 0과 같은 경우, LRU(least recently used) 위치 상의 위치에 상기 제1 데이터의 블록을 상기 제2 캐시로 할당하는 지시를 제공하고;
    상기 제1 카운터의 상기 값이 상기 제1 미리 정해진 임계치보다 작고, 상기 제2 카운터의 값이 0이 아닌 경우, 상기 제2 캐시의 최근 사용된 위치에 상기 제1 데이터의 블록을 할당하는 지시를 제공하는 캐시 시스템.
  18. 제 17 항에 있어서,
    상기 캐시 컨트롤러는:
    상기 제1 캐시의 상기 제1 데이터의 블록에 대한 요청이 히트인 경우, 상기 제1 데이터의 블록이 재사용될 가능성이 있음을 가리키도록 상기 제1 데이터의 블록에 대한 상기 재사용 지시자를 설정하고;
    상기 제1 캐시의 상기 제1 데이터의 블록에 대한 요청이 미스인 경우, 상기 제1 데이터의 블록이 재사용될 가능성이 없음을 가리키도록 상기 제1 데이터의 블록에 대한 상기 재사용 지시자를 설정하는 캐시 시스템.
  19. 제 17 항에 있어서,
    상기 캐시 컨트롤러는:
    상기 제1 캐시의 상기 제1 데이터의 블록에 대한 요청이 히트이고, 상기 재사용 지시자가 상기 제1 데이터 블록에 대한 상기 요청에 응답하여 구성 가능한 경우, 상기 제1 데이터의 블록이 재사용될 가능성이 있음을 가리키도록 상기 제1 데이터의 블록에 대한 상기 재사용 지시자를 설정하고;
    상기 제1 캐시의 상기 제1 데이터의 블록에 대한 요청이 미스이고, 상기 재사용 지시자가 상기 제1 데이터 블록에 대한 상기 요청에 응답하여 구성 가능한 경우, 상기 제1 데이터의 블록이 재사용될 가능성이 없음을 가리키도록 상기 제1 데이터의 블록에 대한 상기 재사용 지시자를 설정하는 캐시 시스템.
  20. 제 17 항에 있어서,
    상기 제2 캐시는 마지막 레벨 캐시(LLC; last-level cache)인 캐시 시스템.

KR1020190159413A 2018-12-26 2019-12-03 배타적 마지막 레벨 캐시를 위한 바이패스 예측기 KR20200080142A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862785213P 2018-12-26 2018-12-26
US62/785,213 2018-12-26
US16/289,645 US11113207B2 (en) 2018-12-26 2019-02-28 Bypass predictor for an exclusive last-level cache
US16/289,645 2019-02-28

Publications (1)

Publication Number Publication Date
KR20200080142A true KR20200080142A (ko) 2020-07-06

Family

ID=71122799

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190159413A KR20200080142A (ko) 2018-12-26 2019-12-03 배타적 마지막 레벨 캐시를 위한 바이패스 예측기

Country Status (4)

Country Link
US (1) US11113207B2 (ko)
KR (1) KR20200080142A (ko)
CN (1) CN111382089B (ko)
TW (1) TWI811484B (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11609858B2 (en) * 2018-12-26 2023-03-21 Samsung Electronics Co., Ltd. Bypass predictor for an exclusive last-level cache
JP7367470B2 (ja) * 2019-11-05 2023-10-24 富士通株式会社 情報処理装置およびキャッシュ制御プログラム
US11372764B2 (en) * 2019-11-14 2022-06-28 International Business Machines Corporation Single-copy cache using heterogeneous memory types
US11467972B2 (en) * 2020-12-01 2022-10-11 Centaur Technology, Inc. L1D to L2 eviction
US20220197798A1 (en) * 2020-12-22 2022-06-23 Intel Corporation Single re-use processor cache policy
US11886342B2 (en) * 2021-12-01 2024-01-30 International Business Machines Corporation Augmenting cache replacement operations
CN117389630B (zh) * 2023-12-11 2024-03-05 北京开源芯片研究院 一种数据缓存方法、装置、电子设备及可读存储介质

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06348595A (ja) * 1993-06-07 1994-12-22 Hitachi Ltd キャッシュ装置
US5564035A (en) * 1994-03-23 1996-10-08 Intel Corporation Exclusive and/or partially inclusive extension cache system and method to minimize swapping therein
US5636359A (en) * 1994-06-20 1997-06-03 International Business Machines Corporation Performance enhancement system and method for a hierarchical data cache using a RAID parity scheme
US5533189A (en) * 1994-11-28 1996-07-02 International Business Machines Corporation System and method for error correction code generation
US5915262A (en) * 1996-07-22 1999-06-22 Advanced Micro Devices, Inc. Cache system and method using tagged cache lines for matching cache strategy to I/O application
US6647466B2 (en) * 2001-01-25 2003-11-11 Hewlett-Packard Development Company, L.P. Method and apparatus for adaptively bypassing one or more levels of a cache hierarchy
US7096320B2 (en) * 2001-10-31 2006-08-22 Hewlett-Packard Development Company, Lp. Computer performance improvement by adjusting a time used for preemptive eviction of cache entries
US7467377B2 (en) * 2002-10-22 2008-12-16 Intel Corporation Methods and apparatus for compiler managed first cache bypassing
US7296121B2 (en) * 2002-11-04 2007-11-13 Newisys, Inc. Reducing probe traffic in multiprocessor systems
US6920532B2 (en) * 2002-11-05 2005-07-19 Newisys, Inc. Cache coherence directory eviction mechanisms for modified copies of memory lines in multiprocessor systems
US6928522B2 (en) * 2003-01-07 2005-08-09 Hewlett-Packard Development Company, L.P. Unbalanced inclusive tags
US7228388B2 (en) * 2004-11-19 2007-06-05 International Business Machines Corporation Enabling and disabling cache bypass using predicted cache line usage
US7380065B2 (en) * 2005-03-30 2008-05-27 International Business Machines Corporation Performance of a cache by detecting cache lines that have been reused
US20070094450A1 (en) * 2005-10-26 2007-04-26 International Business Machines Corporation Multi-level cache architecture having a selective victim cache
US7506119B2 (en) * 2006-05-04 2009-03-17 International Business Machines Corporation Complier assisted victim cache bypassing
US7596662B2 (en) * 2006-08-31 2009-09-29 Intel Corporation Selective storage of data in levels of a cache memory
US7793044B1 (en) * 2007-01-16 2010-09-07 Oracle America, Inc. Efficient caching of stores in scalable chip multi-threaded systems
US7975107B2 (en) * 2007-06-22 2011-07-05 Microsoft Corporation Processor cache management with software input via an intermediary
US8464002B2 (en) * 2009-10-14 2013-06-11 Board Of Regents Of The University Of Texas System Burst-based cache dead block prediction
US8769209B2 (en) * 2010-12-20 2014-07-01 Intel Corporation Method and apparatus for achieving non-inclusive cache performance with inclusive caches
US8667222B2 (en) * 2011-04-01 2014-03-04 Intel Corporation Bypass and insertion algorithms for exclusive last-level caches
US8935485B2 (en) * 2011-08-08 2015-01-13 Arm Limited Snoop filter and non-inclusive shared cache memory
US10152423B2 (en) * 2011-10-31 2018-12-11 International Business Machines Corporation Selective population of secondary cache employing heat metrics
US8972661B2 (en) * 2011-10-31 2015-03-03 International Business Machines Corporation Dynamically adjusted threshold for population of secondary cache
US20130166846A1 (en) * 2011-12-26 2013-06-27 Jayesh Gaur Hierarchy-aware Replacement Policy
US9479552B2 (en) * 2012-05-30 2016-10-25 Verizon Patent And Licensing, Inc. Recommender system for content delivery networks
US9058269B2 (en) * 2012-06-25 2015-06-16 Advanced Micro Devices, Inc. Method and apparatus including a probe filter for shared caches utilizing inclusion bits and a victim probe bit
US9110718B2 (en) * 2012-09-24 2015-08-18 Oracle International Corporation Supporting targeted stores in a shared-memory multiprocessor system
WO2014143053A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Dead block predictors for cooperative execution in the last level cache
US9317448B2 (en) * 2013-07-30 2016-04-19 Advanced Micro Devices, Inc. Methods and apparatus related to data processors and caches incorporated in data processors
US9418009B2 (en) * 2013-12-27 2016-08-16 Intel Corporation Inclusive and non-inclusive tracking of local cache lines to avoid near memory reads on cache line memory writes into a two level system memory
US9660650B1 (en) * 2014-03-13 2017-05-23 Altera Corporation Integrated circuits with improved register circuitry
US9600442B2 (en) * 2014-07-18 2017-03-21 Intel Corporation No-locality hint vector memory access processors, methods, systems, and instructions
US9501411B2 (en) * 2014-08-29 2016-11-22 International Business Machines Corporation Cache backing store for transactional memory
US9990289B2 (en) * 2014-09-19 2018-06-05 Advanced Micro Devices, Inc. System and method for repurposing dead cache blocks
US10255182B2 (en) 2015-02-11 2019-04-09 Samsung Electronics Co., Ltd. Computing apparatus and method for cache management
CN105988730B (zh) * 2015-03-02 2019-03-08 华为技术有限公司 一种读取缓存数据的方法、旁路装置及缓存系统
US9720773B2 (en) * 2015-03-04 2017-08-01 Cavium, Inc. Managing reuse information in caches
US10223278B2 (en) * 2016-04-08 2019-03-05 Qualcomm Incorporated Selective bypassing of allocation in a cache
US10169240B2 (en) * 2016-04-08 2019-01-01 Qualcomm Incorporated Reducing memory access bandwidth based on prediction of memory request size
KR102589298B1 (ko) * 2016-05-11 2023-10-13 삼성전자주식회사 그래픽스 프로세싱 장치 및, 그래픽스 프로세싱 장치에서 캐시 바이패스를 제어하는 방법
US10037173B2 (en) * 2016-08-12 2018-07-31 Google Llc Hybrid memory management
US10417134B2 (en) 2016-11-10 2019-09-17 Oracle International Corporation Cache memory architecture and policies for accelerating graph algorithms
US10331582B2 (en) * 2017-02-13 2019-06-25 Intel Corporation Write congestion aware bypass for non-volatile memory, last level cache (LLC) dropping from write queue responsive to write queue being full and read queue threshold wherein the threshold is derived from latency of write to LLC and main memory retrieval time
US10360158B2 (en) * 2017-03-27 2019-07-23 Samsung Electronics Co., Ltd. Snoop filter with stored replacement information, method for same, and system including victim exclusive cache and snoop filter shared replacement policies
US20180285268A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Method and apparatus for reducing write congestion in non-volatile memory based last level caches
US20190034354A1 (en) * 2017-07-26 2019-01-31 Qualcomm Incorporated Filtering insertion of evicted cache entries predicted as dead-on-arrival (doa) into a last level cache (llc) memory of a cache memory system
US10268600B2 (en) * 2017-09-12 2019-04-23 Intel Corporation System, apparatus and method for prefetch-aware replacement in a cache memory hierarchy of a processor
US10831678B2 (en) * 2017-11-21 2020-11-10 Arm Limited Multi-tier cache placement mechanism

Also Published As

Publication number Publication date
CN111382089B (zh) 2024-05-07
US11113207B2 (en) 2021-09-07
CN111382089A (zh) 2020-07-07
TWI811484B (zh) 2023-08-11
US20200210347A1 (en) 2020-07-02
TW202038102A (zh) 2020-10-16

Similar Documents

Publication Publication Date Title
US11113207B2 (en) Bypass predictor for an exclusive last-level cache
US7552286B2 (en) Performance of a cache by detecting cache lines that have been reused
US7711902B2 (en) Area effective cache with pseudo associative memory
US10133678B2 (en) Method and apparatus for memory management
US8473689B2 (en) Predictive sequential prefetching for data caching
US6901483B2 (en) Prioritizing and locking removed and subsequently reloaded cache lines
US8095734B2 (en) Managing cache line allocations for multiple issue processors
US10223278B2 (en) Selective bypassing of allocation in a cache
US7669009B2 (en) Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches
US10007614B2 (en) Method and apparatus for determining metric for selective caching
US20060155934A1 (en) System and method for reducing unnecessary cache operations
US20110320720A1 (en) Cache Line Replacement In A Symmetric Multiprocessing Computer
US10496550B2 (en) Multi-port shared cache apparatus
JP6630449B2 (ja) 他のキャッシュでのエントリの可用性に基づくキャッシュエントリの置換
US20210182214A1 (en) Prefetch level demotion
EP2926257A1 (en) Memory management using dynamically allocated dirty mask space
CN114830101A (zh) 基于访问类型优先级的高速缓存管理
US8473686B2 (en) Computer cache system with stratified replacement
US9218292B2 (en) Least-recently-used (LRU) to first-dirty-member distance-maintaining cache cleaning scheduler
WO2006053334A1 (en) Method and apparatus for handling non-temporal memory accesses in a cache
US11609858B2 (en) Bypass predictor for an exclusive last-level cache
CN113778693B (zh) 缓存操作方法、缓存操作装置、电子设备及处理器

Legal Events

Date Code Title Description
A201 Request for examination