KR102617154B1 - 저장된 교체 정보를 갖는 스누프 필터, 이에 대한 방법 및 희생자 전용 캐시와 스누프 필터 공유 교체 정책을 포함하는 시스템 - Google Patents

저장된 교체 정보를 갖는 스누프 필터, 이에 대한 방법 및 희생자 전용 캐시와 스누프 필터 공유 교체 정책을 포함하는 시스템 Download PDF

Info

Publication number
KR102617154B1
KR102617154B1 KR1020180013997A KR20180013997A KR102617154B1 KR 102617154 B1 KR102617154 B1 KR 102617154B1 KR 1020180013997 A KR1020180013997 A KR 1020180013997A KR 20180013997 A KR20180013997 A KR 20180013997A KR 102617154 B1 KR102617154 B1 KR 102617154B1
Authority
KR
South Korea
Prior art keywords
cache
victim
snoop filter
replacement
level cache
Prior art date
Application number
KR1020180013997A
Other languages
English (en)
Other versions
KR20180109675A (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 KR20180109675A publication Critical patent/KR20180109675A/ko
Application granted granted Critical
Publication of KR102617154B1 publication Critical patent/KR102617154B1/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/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/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/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • 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
    • 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/0815Cache consistency protocols
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared 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/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/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
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • 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/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

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

개시된 일 실시 예에 따라, 스누프 필터를 사용하여 희생자 전용 캐시에서의 캐시 교체를 제공하는데, 교체 정보는 CPU 로 다시 참조되는 동안 손실되지 않는다. 교체 정보는 스누프 필터에 저장되므로 이전의 액세스 데이터가 완전히 보존될 수 있으며, L2 캐시에 저장되는 추가적인 비트들 없이, LLC 재-삽입 지점에 더 많은 유연성을 제공할 수 있다. 시스템 및 방법은 스누프 필터 교체 기술을 제공할 수 있다. 시스템 및 방법은 트랜잭션(transaction)이 캐시 라인을 마스터 CPU로 및 마스터 CPU로부터 이동시킬 때, 스누프 필터와 희생자 전용캐시(예를 들어, LLC) 사이에 교체 정보를 전달할 수 있다. 이는 스누프 필터의 캐시 라인을 지능적으로 교체하고 에이징(age)시킬 뿐 아니라 읽기 상의 희생자 전용 캐시로부터 제거된 캐시 라인에 대한 기존의 교체 정보를 유지 관리하고 향상시킬 수 있다.

Description

저장된 교체 정보를 갖는 스누프 필터, 이에 대한 방법 및 희생자 전용 캐시와 스누프 필터 공유 교체 정책을 포함하는 시스템{ SNOOP FILTER WITH STORED REPLACEMENT INFORMATION, METHOD FOR SAME, AND SYSTEM INCLUDING VICTIM EXCLUSIVE CACHE AND SNOOP FILTER SHARED REPLACEMENT POLICIES }
본 발명은 디지털 캐시에 관한 것으로, 보다 상세하게는 저장된 교체 정보를 갖는 스누프 필터(snoop filter), 이와 관련된 방법 및 희생자 전용캐시(victim exclusive cache)와 스누프 필터 공유 교체 정책을 포함하는 관련된 시스템에 관한 것이다.
중앙 처리 장치(CPU)의 마지막 레벨 캐시(last level cache, LLC)는 일반적으로, 최근 메모리 액세스의 수 메가 바이트(MB)의 데이터 또는 명령어 라인들을 홀드(hold)하기 위해 크기가 정해지며, 동적 랜덤 억세스 메모리(DRAM)과 비교하여 CPU 자체의 요청들의 레이턴시를 감소시킬 수 있다. 이러한 캐시는 CPU 내부의 레벨1(L1) 캐시 또는 레벨 2(L2) 캐시보다 상대적으로 크지만, LLC -특히 여러 CPU에서 공유되는 경우에는- 는 캐시를 빠르게 채울 수 있는 여러 스레드들로부터 모든 메모리 트래픽을 수신/전송할 수 있다. 캐시 교체 정책(cache replacement policy) 또는 방법은, 캐시의 용량이 가득 차서, 최대 성능을 위해 희생할 데이터와 유지할 데이터를 선택해야 할 때 일반적으로 적용될 수 있다.
LLC 또는 공유 캐시는 범용적이거나 전용적일 수 있다. 전용 공유 캐시는 때로는 희생자 캐시(victim cache)라고도 한다. 범용적 캐시는 마스터 CPU가 보유한 각 데이터 또는 명령어 라인이 캐시 자체에 중복적으로 복사될 수 있는 캐시이다. 태그 상태뿐 아니라 캐시 라인의 중복 복사(redundant copy)를 추적하면, 외부 메모리 요청이나 스누프 및/또는 프로브가 LLC 자체에서 필터링되고 처리되어 마스터 CPU에 대한 메모리 트래픽이 감소하는 암시적이며 비용이 들지 않는 스누프 필터가 허용될 수 있다. 캐시 라인은 캐시 엔트리와 관련된 데이터의 그룹이다.
범용적 캐시와 대조적으로, 희생자 전용 캐시는 마스터 CPU가 캐시 라인을 희생(즉, 배출)시킨 후에만 데이터 저장이 발생하는 캐시이다. 희생자 전용캐시는 마스터 CPU의 데이터 라인을 보유하지 않는다. 이는 증가된 메모리 스누프 및/또는 프로브 및 더 큰 일관성 흐름 복잡성(coherence flow complexity)을 희생시키면서, 중복 데이터로 LLC 엔트리를 오염시키지 않음으로써 보다 효율적이고 고유한 로컬 캐시 스토리지를 제공할 수 있다. 희생자 전용캐시는, 마스터 CPU에는 존재하지만 캐시에는 없는 캐시 라인들의 일관성(coherence) 상태를 추적하기 위한 전용 스누프 필터를 추가하여, 마스터 CPU에 대한 메모리 트래픽 감소를 다시 획득할 수 있다. 스누프 필터는 캐시 라인들의 메타-상태(meta-state)는 추적하지만 데이터 페이로드(data payload)는 추적하지 않는 LLC 스토리지이다. 이는 희생자 LLC 또는 로컬 캐시가 없는 패브릭(fabric)의 트래픽 문제를 줄이는 데 도움이 될 수 있다.
일반적으로 캐시 교체 정책은 범용적 캐시에 적용되며, 희생자 전용캐시에는 거의 적용되지 않는다. 마스터 CPU에 의해 캐시 라인이 재참조 될 때, 희생자 전용캐시는 캐시 라인을 할당 해제하는 정의를 가지며, 이는 캐시 교체 정책이 히스토리를 추적하려고 시도할 때 유용하지 않다.
저장된 교체 정보를 갖는 스누프 필터가 제공될 수 있다.
본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 실시 예에 따라 공유 교체 정책 컴퓨터 캐시 시스템이 개시된다. 시스템은 마스터 프로세서, 마스터 프로세서와 통신적으로 결합된 희생자 전용 마지막 레벨 캐시(LLC), 및 희생자 전용 LLC 와 마스터 프로세서에 통신적으로 결합된 스누프 필터를 포함할 수 있다. 스누프 필터는 교체 정보를 저장하도록 구성된다. 시스템은 저장된 교체 정보로 희생자 전용 LLC 및 스누프 필터 간의 교체 동작을 관리하도록 구성된 교체 상태 머신을 포함할 수 있다.
일 실시 예에 따른 시스템 및 방법은 스누프(snoop) 필터를 사용하여 희생자 전용 캐시에서 캐시 교체를 제공하는데, 여기서 교체 정보는 CPU로 다시 참조하는 동안 손실되지 않는다. 교체 정보는 스누프 필터에 저장되므로 이전의 액세스 데이터가 완전히 보존될 수 있다. 본 시스템 및 방법은 스누프 필터 교체 기술을 더 포함한다. 본 시스템 및 방법은 트랜잭션(transaction)이 캐시 라인을 마스터 CPU로 또는 마스터 CPU로부터 이동시킬 때, 스누프 필터와 희생자 전용캐시(예 : LLC) 사이에 교체 정보를 전달한다. 이는 스누프 필터의 캐시 라인을 지능적으로 교체하고 캐시 라인을 에이징(age)시킬 뿐만 아니라 읽기 상의 희생자 전용캐시로부터 제거된 캐시라인에 대한 기존 교체 정보를 유지 관리하고 향상시킬 수 있다.
본 발명의 원리의 상술한 및 부가적인 특징 및 이점은 첨부된 도면을 참조하여 다음의 상세한 설명으로부터 더욱 명백해질 것이다.
도1a 는 일 실시 예에 따라, 마스터 CPU, 저장된 교체 정보를 갖는 스누프 필터, 및 관련된 희생자 전용 마지막 레벨 캐시(last level cache, LLC)의 블록도를 나타낸다.
도1b 는 일 실시 예에 따라, 저장된 교체 정보 및 관련된 희생자 전용 LLC 를 갖는 스누프 필터의 상태 다이어그램을 나타낸다.
도2는 일 실시 예에 따라, CPU 읽기를 관리하기 위해 저장된 교체 정보 및 관련된 희생자 전용 LLC를 갖는 스누프 필터의 예시적인 블록 및 흐름도이다.
도3은 일 실시 예에 따라, CPU 읽기를 위한 저장된 교체 정보 및 관련된 희생자 전용 LLC 를 갖는 스누프 필터를 관리하기 위한 기술의 흐름도를 나타낸다.
도4는 일 실시 예에 따라, CPU 쓰기를 관리하기 위해 저장된 교체 정보 및 관련된 희생자 전용 LLC 를 갖는 스누프 필터의 예시적인 블록 및 흐름도이다.
도5는 일 실시 예에 따라, CPU 의 쓰기 백(write back)을 위한 저장된 교체 정보 및 관련된 희생자 전용 LLC 를 갖는 스누프 필터를 관리하기 위한 기술의 흐름도를 나타낸다.
도6은 일 실시 예에 따라 저장된 교체 정보 및 관련된 희생자 전용 LLC를 갖는 스누프 필터의 상태 다이어그램의 또 다른 예이다.
도7은 일 실시 예에 따라 저장된 교체 정보 및 관련된 희생자 전용 LLC를 갖는 스누프 필터의 상태 다이어그램의 또 다른 예이다.
도8은 일부 실시 예에 따라 저장된 교체 정보 및 관련된 희생자 전용 LLC를 갖는 스누프 필터를 포함하는 컴퓨터 시스템의 예시적인 블록도이다.
도9는 일 실시 예에 따라 저장된 교체 정보 및 관련된 희생자 전용 LLC 를 갖는 스누프 필터를 포함하는 스마트 폰의 예를 나타낸다.
도10은 일 실시 예에 따라, 저장된 교체 정보 및 관련된 희생자 전용 LLC 를 갖는 스누프 필터를 포함하는 스마트 태블릿의 예를 나타낸다.
도11은 일 실시 예에 따라, 저장된 교체 정보 및 관련된 희생자 전용 LLC 를 갖는 스누프 필터를 포함하는 노트북 컴퓨터의 예를 나타낸다.
도12는 일 실시 예에 따라, 저장된 교체 정보 및 관련된 희생자 전용 LLC 를 갖는 스누프 필터를 포함하는 데스크탑 컴퓨터의 예를 나타낸다.
이하 첨부된 도면을 참조하여 본 발명의 다양한 실시 예를 상세히 설명한다. 다음의 상세한 설명에서, 다수의 특정 세부 사항들이 실시 예들의 완전한 이해를 가능하게 하기 위해 제시된다. 그러나, 당업자는 이러한 특정 세부 사항 없이 실시 예를 실행할 수 있음을 알아야 한다. 다른 예들에서, 잘 알려진 방법, 절차, 구성 요소, 회로 및 네트워크는 실시 예들의 측면을 불필요하게 불명료하지 않도록 하기 위해, 상세하게 설명되지 않았다.
제 1, 제 2 등의 용어는 다양한 요소를 설명하기 위해 본 명세서에서 사용될 수 있지만, 이들 요소는 이들 용어에 의해 제한되어서는 안됨을 이해할 것이다. 이러한 용어는 하나의 요소를 다른 요소와 구별하기 위해서만 사용될 수 있다. 예를 들어, 제 1 캐시는 제 2 캐시로 지칭 될 수 있고, 유사하게, 제 2 캐시는 실시 예의 범위를 벗어나지 않고 제 1 캐시로 지칭될 수 있다.
본 명세서의 실시 예의 설명에 사용된 용어는 특정 실시 예만을 설명하기 위한 것이며, 실시 예를 제한하려는 것은 아니다. 실시 예 및 첨부된 청구 범위의 설명에 사용되는 바와 같이, 단수 형태는 문맥에 달리 명시되지 않는 한 복수 형태를 포함하는 것으로 의도된다. 본 명세서에서 사용되는 "및/는"이라는 용어는 하나 이상의 관련 열거된 항목의 임의의 그리고 모든 가능한 조합을 가리키거나 포함할 수 있다. 본 명세서에서 사용되는 "포함한다" 및/또는 "포함하는"이라는 용어는 명시된 특징, 정수, 단계, 동작, 엘리먼트(element) 및/또는 컴포넌트의 존재를 나타내지만, 하나 이상의 다른 특징, 정수, 단계, 동작, 엘리먼트, 컴포넌트 및/또는 그룹의 존재 또는 추가를 배제하지는 않는 것으로 더 이해될 수 있다. 도면의 구성 요소 및 특징은 반드시 일정한 비율로 그려지는 것은 아니다.
본 시스템 및 방법의 실시 예는 스누프(snoop) 필터를 사용한 희생자 전용캐시에서의 캐시 교체를 제공하는데, 여기서 교체 정보는 CPU로 다시 참조되는 동안에는 손실되지 않는다. 이것은 히트 우선 순위(hit priority), 빈도 우선 순위 및/또는 pseudo-inclusive 또는 weak-exclusive 에 대한 지원을 포함하여 여러 가지 형태로 존재할 수 있다. 교체 정보는 스누프(snoop) 필터에 저장되는데, 이것은 즉, 이전의 액세스 데이터가 완전히 보존될 수 있으며, L2 캐시에 저장되는 추가적인 비트들 없이, LLC 재-삽입 지점(points)에 더 많은 유연성을 허용하는 것을 의미한다. 본 시스템 및 방법은 스누프 필터 교체 기술을 더 포함할 수 있다. 본 시스템 및 방법은 트랜잭션(transaction)이 캐시 라인을 마스터 CPU로 및 마스터 CPU로부터 이동시킬 때, 스누프 필터와 희생자 전용캐시(예를 들어, LLC) 사이에 교체 정보를 전달할 수 있다. 이는 스누프 필터의 캐시 라인을 지능적으로 교체하고 에이징(age)시킬 뿐 아니라 읽기 상의 희생자 전용 캐시로부터 제거된 캐시 라인에 대한 기존의 교체 정보를 유지 관리하고 향상시킬 수 있다.
도 1a는 일 실시 예에 따라, 마스터 CPU(103), 저장된 교체 정보를 갖는 스누프 필터(105), 관련된 희생자 전용 마지막 레벨 캐시(last level cache, LLC)(110), 및 교체 상태 머신(112)을 포함하는 시스템(100)의 예시적인 블록도이다. 도 1b는 일 실시 예에 따라 저장된 교체 정보(105) 및 관련된 희생자 전용 LLC(110)를 갖는 스누프 필터의 예시적인 상태 다이어그램(102)이다. 도 1a 및 도1b를 참조한다.
캐시 교체 정책은 저장된 교체 정보(105) 및 관련된 희생자 전용 LLC(110)를 갖는 스누프 필터를 사용하여 구현될 수 있다. 도 1b는 교체 상태 머신(112)의 빈도 우선 순위 형태로 지칭될 수 있는 특정 캐시 교체 정책을 도시하며, 여기서 LLC에서의 임의의 판독 히트는 교체 추적 값을 1만큼 증가시킬 수 있다.
예를 들어, LRU(least recently used) + 1을 추적하는 LLC에 대한 읽기 동작은 라인(115)에 의해 도시된 바와 같이 가장 최근에 사용된(most recently used, MRU) - 1 교체 상태로 촉진시킬 수 있다. 정의에 따르면, LLC(110)와 같은 희생자 전용캐시(110)로부터의 읽기는 캐쉬 자체로부터 캐시 라인을 제거하고 그것을 요구하는 마스터 CPU(103)에 전달할 수 있다. 이러한 스킴(scheme)에서, 캐시 라인 데이터 자체를 전달하는 대신 태그(125) 및/또는 교체 정보(130)가 스누프 필터(105)로 전달될 수 있다. 태그(125)는 어드레스, MOESI(a modified-owned-exclusive-shared-invalid) 등과 같은 캐시 라인의 메타 데이터를 포함할 수 있다. 교체 정보(130)는 저장된 상태의 메타 데이터 및 LRU 상태와 같은 교체 순서를 포함할 수 있다. 또한, 스누프 필터(105)에 의해 추적되는 마스터 CPU(103)으로부터의 쓰기는 LCC(110)에 할당할 수 있다. 일 실시 예에 따르면, 스누프 필터(105)는 태그(125) 및/또는 교체 정보(130)를 LLC 스토리지 매커니즘(예를 들어, LCC(110))에 기록되는 데이터로서 저장할 수 있다.
도2는 일 실시 예에 따라 CPU 읽기를 관리하기 위한 저장된 교체 정보(105) 및 관련된 희생자 전용 LLC(110)를 갖는 스누프 필터의 예시적인 블록 및 흐름도(200)이다. 이제 도 1a, 1b 및 도 2를 참조한다.
일 실시 예에 따르면, 현재 교체 상태 머신(112)은 스누프 필터(105)의 스토리지 또는 LLC(110)의 스토리지가 가득 찼을 때 관련이 있을 수 있다. 범용적 캐시와 달리, 희생자 전용 캐시(110) 및 전용 스누프 필터(105)는, 읽기 또는 쓰기가 캐시 라인을 희생자 전용 캐시(예컨대, 110)와 스누프 필터(예컨대, 105) 사이를 이동시킬 때, 그들의 엔트리를 무효화시킬 수 있다.
이러한 경우, 캐시 라인 'A'에 대한 요청은 LLC(110)에 저장된다. LLC(110)는 캐시 히트에서 분해되고, 후속적으로, LLC 엔트리(205)를 남겨둔 채 요청중인 마스터 CPU(103)로부터 데이터를 읽을 수 있다. 이 때, 캐시라인 'A'는 전용/희생자 캐시의 정의에 따라 무효화되었다. 태그(125) 및/또는 교체 정보(130)를 포함하는 메타 정보는 전용 스누프 필터(105)로 전달되어 캐시 라인에 대한 현재의 교체 우선 순위 정보를 유지할 뿐만 아니라 캐시 라인에 대한 미래의 스누프/프로브를 필터링할 수 있다.
스누프 필터(105)의 용량이 가득 차지 않은 경우, 이동하는 캐시 라인 'A' 는 스누프 필터(105)의 유효하지 않은 공간(도시되지 않음)에 진입하고 트랜잭션은 완료된다. 그러나, 스누프 필터(105)가 추적된 캐시 라인 정보로 가득 차면, 스누프 필터(105)는 교체 결정을 내려야 한다.
일 실시 예에 따르면, 스누프 필터(105)는 교체 상태 머신(112)을 사용하여 희생자 선택(예를 들어, 엔트리 'Y')을 결정하고, 스누프 필터(105)로부터 엔트리를 희생시키고, 엔트리를 전달된 읽기 'A.'에 대한 새로운 정보로 교체할 수 있다. 희생자가 LLC 캐시(110)가 아닌 스누프 필터(105)로부터 왔기 때문에, 시스템 로직은 마스터 CPU(103)로부터 희생자된 추적 캐시 라인 'Y'를 스누핑/프로브하고, 도1b의 140에 도시된 바와 같이 LLC(110)에 정보를 할당할 수 있다.
도3은 일 실시 예에 따라 CPU 읽기를 위해 저장된 교체 정보(105) 및 관련된 희생자 전용 LLC(110)를 갖는 스누프 필터를 관리하기 위한 기술을 도시하는 예시적인 흐름도(300)이다.
단계305에서, CPU 읽기가 개시된다. 단계 315에서, 시스템은 LLC(110)에서 캐시 히트가 있는지를 판별할 수 있다. LLC(110)에서 캐시 히트가 있으면, 단계320에서 캐시 라인 및 태그 정보(125)가 LLC(110)로부터 판독될 수 있다. 단계325에서, 교체 정보(130)는 업데이트되거나 또는 스누프 필터(105)에 의해 전송되어 저장될 수 있다. 단계315에서 LLC 캐시 히트가 없다면, 단계 330에서, 캐시 라인이 DRAM으로부터 페치(fetch)되고, 교체 정보로 할당된 대응하는 스누프 필터 엔트리(예를 들어, LRU +1)를 DRAM으로부터 채운다.
단계335에서, 시스템은 스누프 필터(105)의 슬롯이 유효하지 않은지 를 판별한다. 단계 335에서 유효하지 않은 슬롯이 없다면(예를 들어, 유효하지 않은 엔트리가 없다면), 단계340에서 스누프 필터(105)의 미리 선택된 엔트리가 희생된다. 단계345에서, 시스템은 클린(clean) 무효화 스누프/프로브를 마스터 CPU(103)로 전송할 수 있다. 단계 350에서, CPU 스누프/프로브가 캐시 라인과 함께 반환될 수 있다. 단계355에서, 본 시스템은 LLC(110)에 엔트리를 할당하고 엔트리를 가장 적게 최근에 사용된(to least recently used, LRU) 것으로 세팅할 수 있다.
단계335에서, 스누프 필터에 유효하지 않은 슬롯이 있으면, 시스템은 단계 360에서 캐시 라인을 마스터 CPU(103)에 전달할 수 있다. 단계365에서, 시스템은 태그(125) 및/또는 교체 정보(130)를 스누프 필터(105)에 할당할 수 있다. 단계370에서, 시스템은 스누프 필터(105)의 슬롯이 유효하지 않은지 를 판별할 수 있다. 단계370에서, 스누프 필터(105)의 슬롯이 유효하지 않은 경우, 시스템은 단계375에서 다음 스누프 필터 희생자 슬롯을 선택하여 저장할 수 있다. 단계370에서 스누프 필터(105)에 유효하지 않은 슬롯이 존재하지 않으면, 단계 380에서 시스템은 단계 380에서 LRU가 발견될 때까지, 스누프 필터 교체 정보(130)를 에이징(age) 할 수 있다.
도 4는 일 실시 예에 따라 CPU 쓰기를 관리하기 위한 저장된 교체 정보(105) 및 관련된 희생자 전용 LLC(110)를 갖는 스누프 필터의 예시적인 블록 및 흐름도(400)이다.
캐시라인 'X' 로 쓰기 백(write-back) 되는 풀 데이터(full data)는 추적된 CPU(103) 로부터 온다. 스누프 필터(105) 내의 제어 로직은 캐시 라인 정보를 결정할 수 있고, 이어서 스누프 필터(105)의 엔트리(405)를 유효하지 않은 것으로 남겨둔 채, LLC(110)로 전달될 태그(125) 및 교체 정보(130)를 포함하는 메타 정보를 판독할 수 있다. 바꾸어 말하면, 스누프 필터(105)는 태그(125) 및 교체 정보(130)를 LLC(110)에 전달할 수 있다. 도 2를 참조하여 상술한 CPU 읽기 요청과 유사하게, LLC(110)가 유효하지 않은 사용 가능한 엔트리(도시되지 않음)를 갖는다면, CPU 쓰기 트랜잭션은 데이터, 태그(125) 및 교체 정보(130)를 사용 가능한 슬롯에 할당할 수 있다. 그러나, LLC(110)의 용량이 가득찬 경우, 도 4에 도시된 바와 같이, LLC(110)는 새로운 캐시 라인 'X'를 할당하기 전에 희생자(예컨대, 트랜잭션 'D')를 선택하여 판독(read out)할 필요가 있다.
도 5는 일 실시 예에 따라 CPU write back을 위해 저장된 교체 정보(110) 및 관련된 희생자 전용 LLC(110)를 갖는 스누프 필터를 관리하기 위한 기술을 나타내는 흐름도(500)이다.
단계505에서, CPU write back이 개시될 수 있다. 단계 510에서, 시스템은 스누프 필터(105)로부터 캐시 라인(예를 들어, 'A'), 태그(예를 들어, 125), 및 교체 정보(예를 들어, 130)를 판독할 수 있다. 단계 515에서, 본 시스템은 LLC(110)에 유효하지 않은 슬롯이 있는지 여부를 결정할 수 있다. 만약, 단계515에서 LLC(110)에 유효한 슬롯이 존재한다면, 시스템은 단계520에서 DRAM으로 사전 선택된 LLC 희생자를 희생시킬 수 있다. 단계515에서 LLC(110)에 유효하지 않은 슬롯이 존재하면, 단계 525에서 시스템은 캐시 라인, 태그, 및 교체 정보를 LLC(110)에 쓰도록 할 수 있다.
단계 530에서, 시스템은 슬롯(예를 들어, 엔트리)이 LLC(110)에서 유효하지 않은지 여부를 결정할 수 있다. 단계530에서 슬롯이 LLC(110)에서 무효하지 않으면, 시스템은 단계535에서 LRU가 발견될 때까지 LLC 교체 정보를 에이징(age)할 수 있다. 단계530에서 LLC(110)에서 슬롯이 유효하지 않으면, 시스템은 단계 540에서 다음 LLC 희생자 슬롯을 선택하여 저장할 수 있다. 상술한 빈도 우선 교체 상태 머신에 대한 삽입 포인트(insertion points), 값(values), 및 프로모션 벡터(promotion vectors)는 본 시스템의 발명의 범위를 벗어나지 않고 조정될 수 있다.
도6은 일 실시 예에 따라 저장된 교체 정보(105) 및 관련된 희생자 전용 LLC(110)를 갖는 스누프 필터의 상태 다이어 그램(600)의 또 다른 예이다.
일부 실시 예들에서, 히트 우선 교체를 사용하는 LLC는 라인들(605, 610 및 615)로 도시된 바와 같이, LLC(110)로부터의 임의의 판독을 스누프 필터(105)의 MRU 엔트리로 직접적으로 업데이트(또는, 촉진한다. 일 실시 예에서 태그(125) 및/또는 교체 정보(130)는 상술한 바와 같이, LLC(110)로부터 스누프 필터(105)로 업데이트될 수 있으나, 이러한 경우에 스누프 필터(105)의 MRU로 업데이트될 수 있다. 필요에 따라, 필(fill, 620), 스누프 필터 희생자(625), 프리페치(prefetch, 630), 및 심지어 명령어 대비 데이터 캐시에 대한 명령어의 삽입 값에 대한 조정이 이동되거나 수행될 수 있다.
도7은 일 실시 예에 따라 저장된 교체 정보(105) 및 관련된 희생자 전용 LLC(110)를 갖는 스누프 필터의 또 다른 상태 다이어그램(700)이다.
희생자 전용 LLC(110)에서의 캐시 라인 및 상태 추적의 성질은 도 7에 도시된 바와 같이 보다 복잡한 상태 머신을 초래할 수 있다. 일 실시 예에 따르면, 희생자 전용 LLC(110)에 있는 선택적인 범용적 캐시 라인이 사용됨으로써, 다수의 CPU 또는 마스터 CPU(예 : 103)들 사이에서 공유되는 라인들에 대한 이점이 가능할 수 있다. 기술은 특정 상황에서 더 나은 수행능력을 가지고 마스터 CPU(103)로부터의 캐시 라인을 무효로 하지 않는 CPU 쓰기에서 유리하다. 그러한 수정된 정의를 사용하는 시스템은, 히트 또는 빈도 우선 순위에서 증가하도록 교체 상태 머신(112)을 조정할 수 있다.
일 실시 예에 따르면, 시스템 및 방법은, 희생자 전용 LLC(110)에 상주하지 않는 캐시 라인을 추적하는 스누프 필터(105)로(또는 로부터) 정보를 전달함으로써 완전 재-참조 히스토리를 유지하는 희생자 전용 LLC(110)를 위한 캐시 교체 정책을 제공할 수 있다. 캐시 교체 정책은 히트 또는 빈도 측정 항목에 기초하여 촉진의 우선 순위를 지정할 수 있도록 변형될 수 있다. 캐시 교체 정책은 희생자 전용 LLC(110) 또는 스누프 필터(105) 내에서의 촉진에 의해 pseudo-inclusive 또는 weak-exclusive 캐시 지원을 가능하도록 변형될 수 있다.
일 실시 예에 따르면, 시스템 및 방법은 저장된 교체 정보(105)를 갖는 스누프 필터를 사용하여 희생자 전용 LLC(110)에서 캐시 교체를 제공할 수 있다. 캐시 라인에 대한 요청이 전용/희생자LLC(110)에 저장되는CPU 읽기 요청에 대해, 시스템은 스누프 필터(105)의 용량이 가득찼을 때, 단계715에 도시된 바와 같이 스누프 필터(105)로부터 엔트리를 희생시킬 수 있다. 또한, 본 시스템은 캐시 라인에 대한 태그(125) 및 교체 정보(130)를 스누프 필터(105)에 할당하고, 캐시 라인을 CPU(103)에 전달할 수 있다.
캐시 라인으로의 데이터 쓰기가CPU(103)로부터 수신되는 CPU 쓰기 요청에 대해, 시스템은 (i) 스누프 필터(105), 태그(125) 및 캐시 라인의 교체 정보(130)를 판독; (ii) 태그(125) 및 교체 정보(130)를 스누프 필터(105)로부터 전용/희생자 LLC(110)로 이동시키고; (iii) 전용/희생자 LLC(110)가 가득 찼다면, 캐시 라인을 할당하기 전에 단계720에 나타나는 바와 같이 전용/희생자 LLC(110)로부터의 희생자를 전용/희생자 LLC(110)에 의해 판독할 수 있다.
도7에 도시된 파선 화살표는, 전용 읽기(즉, 고유하고 CPU_ID = 0 일 때)를 나타낸다. 도 7에 도시된 파선/점선의 화살표는, 범용적 읽기(즉, 멀티 CPU 시스템에서 공유 또는 CPU_ID = 1 또는 1보다 큰 경우)를 나타낸다. 즉, 스누프 필터(105)로부터 의사 전용(pseudo exclusive) LLC(110) 내의 MRU 엔트리로의 읽기들은 복수의 프로세서에 대해 범용적일 수 있다. 캐시 라인이 LLC(110)에 포함되는 경우, 이는 마스터 CPU(103)로부터 축출될 수 있으며, 이 경우에, LLC에 포함되는 것은 캐시 라인 데이터가 이미 LLC(110)에 있음을 의미하기 때문에 LLC(110)로의 쓰기는 필요하지 않을 수 있다.
도8은 일 실시 예에 따라 시스템(100)의 저장된 교체 정보(105), 관련된 희생자 전용 LLC(110), 마스터 CPU(103) 및 교체 상태 머신(112)을 갖는 스누프 필터를 포함하는 컴퓨터 시스템(800)의 예시적인 블록도이다.
도8에 도시된 바와 같이, 컴퓨팅 시스템(800)은 또한 클록(810), 랜덤 액세스 메모리(RAM)(815), 사용자 인터페이스(820), 베이스 밴드 칩셋(baseband chipset)과 같은 모뎀(825), SSD(solid state drive/disk)(840), 메모리 컨트롤러(845), 및/또는 배터리(835)를 포함할 수 있으며, 이들 중 일부 또는 전부는 시스템 버스(805)에 전기적으로 결합될 수 있다. 저장된 교체 정보(105) 및 관련된 희생자 전용 LLC(110)를 갖는 스누프 필터를 포함하는 시스템(100)은 세부적으로 상술한 실시 예에 대응할 수 있으며, 또한 시스템 버스(805)에 전기적으로 결합될 수 있다.
컴퓨팅 시스템(800)이 모바일 장치인 경우, 배터리(835)는 컴퓨팅 시스템(800)에 전력을 공급할 수 있다. 도 8에 도시되어 있지는 않으나, 컴퓨팅 시스템(800)은 애플리케이션 칩셋, 카메라 이미지 프로세서(CIS), 모바일 DRAM, 등을 더 포함할 수 있다.
일 실시 예에서, 컴퓨팅 시스템(800)은 컴퓨터, 컴퓨터 서버, 서버 랙(server rack), 휴대용 컴퓨터, UMPC(Ultra Mobile PC), 워크 스테이션, 넷북, PDA, 웹 태블릿, 무선 전화, 이동 전화, 스마트 폰, 전자 책, PMP(휴대용 멀티미디어 플레이어), 디지털 카메라, 디지털 오디오 레코더/플레이어, 디지털 영상/비디오 레코더/플레이어, 휴대용 게임기, 네비게이션 시스템, 블랙 박스, 3 차원 텔레비전, 홈 네트워크를 구성하는 다양한 전자 장치 중 어느 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치 중 어느 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치 중 어느 하나, RFID 또는 컴퓨팅 시스템을 구성하는 다양한 전자 장치 중 어느 하나로서 사용될 수 있다.
도9는 일 실시 예에 따른 시스템(100)을 포함하는 예시적인 스마트 폰(905)이다.
도10은 일 실시 예에 따른 시스템(100)을 포함하는 예시적인 스마트 태블릿(1005)이다.
도11은 일 실시 예에 따른 시스템(100)을 포함하는 예시적인 노트북 컴퓨터(1105)이다.
도12는 일 실시 예에 따른 시스템(100)을 포함하는 예시적인 데스크탑 컴퓨터(1205)이다.
일 실시 예는 기능 블록, 유닛 및/또는 모듈의 관점에서 본 명세서에 설명되고 도면에 도시된다. 당업자는 이러한 블록들, 유닛들 및/또는 모듈들이 논리 회로, 개별 구성요소들, 마이크로 프로세서들, 하드-와이어드 회로들, 메모리 소자들, 배선 연결들 및 그와 같은 전자(또는 광학) 회로들에 의해 물리적으로 구현될 수 있으며 그것은 반도체 기반의 제조 기술 또는 다른 제조 기술을 사용하여 구성될 수 있음을 인식할 것이다.
블록들, 유닛들 및/또는 모듈들이 마이크로 프로세서들 또는 이와 유사한 것들에 의해 구현되는 경우, 이들은 본 명세서에서 설명된 다양한 기능들을 수행하기 위한 소프트웨어(예를 들어, 마이크로 코드)를 사용하여 프로그래밍 될 수 있고 선택적으로 펌웨어 및/또는 소프트웨어에 의해 구동될 수 있다. 대안적으로, 각각의 블록, 유닛 및/또는 모듈은 전용 하드웨어에 의해, 또는 일부 기능을 수행하기 위한 전용 하드웨어 및 다른 기능을 수행하기 위한 프로세서(예를 들어, 하나 이상의 프로그램 된 마이크로 프로세서 및 관련 회로)의 조합으로서 구현될 수 있다. 또한, 실시 예들의 각각의 블록, 유닛 및/또는 모듈은 본 발명의 개념들의 범위를 벗어나지 않고 2 개 이상의 상호 작용하는 개별적인 블록들, 유닛들 및/또는 모듈들로 물리적으로 분리될 수 있다. 또한, 실시 예들의 블록들, 유닛들 및/또는 모듈들은 본 발명의 개념들의 범위를 벗어나지 않으면서 더 복잡한 블록들, 유닛들 및/또는 모듈들로 물리적으로 결합될 수 있다.
다음의 설명은 본 발명의 개념의 특정 양상이 구현될 수 있는 적절한 기계 또는 장치의 간략하고 일반적인 설명을 제공하기 위한 것이다. 전형적으로, 기계 또는 기계들은 프로세서, 메모리, 예를 들어 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 또는 다른 상태 보존 매체, 저장 장치, 비디오 인터페이스 및 입력/출력 인터페이스 포트가 부착된 시스템 버스를 포함할 수 있다.
기계 또는 기계들은 적어도 부분적으로 키보드, 마우스 등과 같은 종래의 입력 디바이스로부터의 입력 뿐만 아니라 다른 기계로부터 수신된 지시, 가상 현실(VR) 환경과의 상호 작용, 생체 인식 피드백, 또는 다른 입력 신호에 의해 제어될 수 있다.
본 명세서에 사용된 바와 같이, "기계"라는 용어는 단일 기계, 가상 기계, 또는 통신적으로 결합된 머신들, 가상 머신들, 또는 함께 동작하는 디바이스들을 광범위하게 포함하도록 의도된다. 예시적인 머신은 퍼스널 컴퓨터, 워크 스테이션, 서버, 휴대용 컴퓨터, 핸드 헬드 디바이스, 전화기, 태블릿 등과 같은 컴퓨팅 디바이스뿐만 아니라 자동차, 기차, 택시 등과 같은 사적 또는 공적인 교통과 같은 운송 디바이스를 포함한다.
기계(들)은 프로그램 가능 또는 비 프로그래머블 로직 디바이스 또는 어레이, ASIC(Application Specific Integrated Circuit), 임베디드 컴퓨터, 스마트 카드 등과 같은 내장형 컨트롤러를 포함할 수 있다. 기계(들)은 네트워크 인터페이스, 모뎀 또는 다른 통신 커플링과 같은 하나 이상의 원격 기계에 대한 하나 이상의 연결을 사용할 수 있다. 기계들은 인트라넷, 인터넷, 로컬 영역 네트워크, 광역 네트워크 등과 같은 물리적 및/또는 논리적 네트워크를 통해 상호 연결될 수 있다. 당업자는 네트워크 통신이 무선 주파수(RF), 위성, 마이크로파, Institute of Electrical and Electronics Engineers(IEEE) 545.11, Bluetooth®, 광학, 적외선, 케이블, 레이저 등을 포함한 다양한 유선 및/또는 무선의 근거리 또는 원거리 캐리어 및 프로토콜을 사용할 수 있음을 이해할 수 있을 것이다.
실시 예들은 기계에 의해 액세스 될 때 기계가 태스크를 수행하거나 추상적인 데이터 타입 또는 저-레벨의 하드웨어 컨텍스트를 정의하도록 하는 기능, 절차, 데이터 구조, 애플리케이션 프로그램 등을 포함하는 관련 데이터를 참조하거나 그와 관련하여 설명될 수 있다.
관련 데이터는 예를 들어, RAM, ROM 등과 같은 휘발성 및/또는 비 휘발성 메모리, 또는 하드 드라이브, 플로피 디스크, 광학 스토리지, 테이프, 플래시 메모리, 메모리 스틱, 디지털 비디오 디스크, 생물학적 스토리지 등을 포함하는 다른 저장 장치 및 관련 저장 매체에 저장될 수 있다.
관련된 데이터는 물리적 및/또는 논리적 네트워크를 포함한 전송 환경을 통해 패킷, 직렬 데이터, 병렬 데이터, 전파되는 신호 등의 형태로 전달될 수 있으며, 압축 또는 암호화 된 포맷으로 사용될 수 있다. 관련된 데이터는 분산 환경에서 사용될 수 있으며 머신 액세스를 위해 로컬 및/또는 원격으로 저장될 수 있다.
예시된 실시 예를 참조하여 본 발명의 개념의 원리를 설명하고 예시하였으나, 도시된 실시 예는 이러한 원리를 벗어나지 않고 배열 및 세부 사항을 수정할 수 있으며 임의의 원하는 방식으로 조합될 수 있음을 알 수 있을 것이다. 상술한 설명은 특정 실시 예에 초점을 맞추었지만, 다른 구성이 고려될 수 있다. 특히, "본 발명의 실시 예에 따른" 등과 같은 표현이 본 명세서에서 사용되는 경우에도, 이러한 문구는 일반적으로 실시 예의 가능성을 나타내기 위한 것이고, 본 발명의 개념을 특정 실시 예의 구성으로 제한하는 것은 아니다. 본 명세서에서 사용 된 바와 같이, 이들 용어는 다른 실시 예와 조합 가능한 동일하거나 상이한 실시 예를 나타낼 수 있다.
본 발명의 실시 예는 하나 이상의 프로세서에 의해 실행 가능한 명령어를 포함하는 비 일시적 기계-판독 가능한 매체를 포함할 수 있으며, 명령어는 본 명세서에서 설명 된 실시 예의 요소들을 수행하기 위한 명령어를 포함할 수 있다.
결론적으로, 본 명세서에 설명된 실시 예에 대한 다양한 변경의 관점에서, 이 상세한 설명 및 첨부된 자료는 단지 예시적인 것으로 의도되며, 실시 예들의 범위를 제한하는 것으로 간주되지 않는다. 그러므로, 본 발명으로서 청구되는 것은 이하의 청구 범위 및 그 균등물의 범위 및 사상 내에서 가능한 모든 변형이다.

Claims (20)

  1. 마스터 프로세서;
    상기 마스터 프로세서에 통신적으로 결합된 희생자 전용 마지막 레벨 캐시(a victim exclusive last level cache(LLC));
    상기 희생자 전용 마지막 레벨 캐시 및 상기 마스터 프로세서에 통신적으로 결합되고, 캐시라인들에 대한 저장 상태 및 교체 순서를 포함하는 교체 정보를 저장하도록 구성되는 스누프 필터; 및
    상기 희생자 전용 마지막 레벨 캐시와 상기 저장된 교체 정보를 가진 스누프 필터 사이의 교체 동작들을 관리하기 위해 구성되는 교체 상태 머신을 포함하고,
    상기 마스터 프로세서로부터의 읽기 동작에 응답하여,
    상기 희생자 전용 마지막 레벨 캐시는 상기 교체 정보를 상기 스누프 필터에 전달하고, 제1 캐시라인을 제거하고, 그리고 상기 제1 캐시라인을 상기 마스터 프로세서에 전달하도록 구성되고,
    상기 마스터 프로세서로부터의 상기 읽기 동작에 응답하여,
    상기 희생자 전용 마지막 레벨 캐시는 태그를 상기 스누프 필터에 전달하도록 구성되고,
    상기 스누프 필터는 상기 제1 캐시라인 자체 대신에, 상기 교체 정보와 상기 태그를 수신하도록 구성되는 공유 교체 정책 컴퓨터 캐시 시스템.
  2. 삭제
  3. 제1항에 있어서,
    상기 교체 상태 머신은 상기 스누프 필터에 저장된 상기 교체 정보에 종속적인 상기 교체 동작들을 관리하기 위해 구성되는 공유 교체 정책 컴퓨터 캐시 시스템.
  4. 삭제
  5. 삭제
  6. 제1항에 있어서,
    상기 교체 상태 머신은 상기 스누프 필터에서 희생시킬 엔트리를 선택하고,
    상기 선택된 엔트리를 상기 스누프 필터로부터 희생되게 하고, 그리고 상기 스누프 필터는 상기 교체 정보와 상기 태그를 상기 엔트리 내에 저장하도록 구성되는 공유 교체 정책 컴퓨터 캐시 시스템.
  7. 제6항에 있어서,
    상기 선택된 엔트리는 추적 캐시라인을 포함하고,
    상기 교체 상태 머신은 상기 추적 캐시라인을 희생시키기 위해 구성되고,
    상기 마스터 프로세서는 상기 희생자된 캐시라인을 프로브(probe) 하기 위해 구성되고, 및
    상기 교체 상태 머신은 상기 추적 캐시라인이 상기 희생자 전용 마지막 레벨 캐시로 할당되도록 하기 위해 구성되는 공유 교체 정책 컴퓨터 캐시 시스템.
  8. 제1항에 있어서,
    상기 마스터 프로세서로부터의 쓰기 동작에 응답하여, 상기 스누프 필터는 상기 태그와 상기 교체 정보를 상기 희생자 전용 마지막 레벨 캐시로 전달하기 위해 구성되는 공유 교체 정책 컴퓨터 캐시 시스템.
  9. 제8항에 있어서,
    상기 교체 상태 머신은, 상기 희생자 전용 마지막 레벨 캐시에서 희생시킬 엔트리를 선택하고,
    상기 선택된 엔트리를 상기 희생자 전용 마지막 레벨 캐시로부터 희생되게 하고,
    상기 희생자 전용 마지막 레벨 캐시가 상기 교체 정보와 상기 태그를 상기 희생자 전용 마지막 레벨 캐시의 상기 엔트리 내에 저장하게 하고, 그리고
    상기 희생자 전용 마지막 레벨 캐시의 상기 엔트리 내에 새로운 캐시라인을 할당하도록 구성되는 공유 교체 정책 컴퓨터 캐시 시스템.
  10. 제8항에 있어서,
    상기 교체 상태 머신은 상기 희생자 전용 마지막 레벨 캐시로부터의 임의의 읽기들을 상기 스누프 필터의 가장 최근에 사용된(MRU) 엔트리에 프로모팅(promoting)하도록 구성된 공유 교체 정책 컴퓨터 캐시 시스템.
  11. 제10항에 있어서,
    상기 희생자 전용 마지막 레벨 캐시로부터 상기 스누프 필터의 상기 가장 최근에 사용된 엔트리로의 상기 읽기들은, 상기 마스터 프로세서에 국한되는 공유 교체 정책 컴퓨터 캐시 시스템.
  12. 제9항에 있어서,
    상기 희생자 전용 마지막 레벨 캐시는 의사(pseudo) 전용 마지막 레벨 캐시이고,
    상기 스누프 필터로부터 상기 의사 전용 마지막 레벨 캐시 내의 가장 최근에 사용된 엔트리로의 읽기들은 상기 마스터 프로세서를 포함하는 복수의 프로세서들을 포함하는 공유 교체 정책 컴퓨터 캐시 시스템.
  13. 읽기 연산 동안 컴퓨터 캐시에서 공유되는 교체를 관리하는 방법에 있어서,
    중앙 처리 유닛(CPU) 읽기 연산을 시작하는 단계;
    희생자 전용 마지막 레벨 캐시(LLC)에서 캐시 히트가 발생하였는지를 판별하는 단계;
    상기 캐시 히트가 발생한 것으로 판별하는 것에 응답하여,
    상기 희생자 전용 마지막 레벨 캐시로부터 제1캐시라인과 태그를 독출하는 단계; 및
    상기 제1캐시라인에 대한 저장 상태 및 교체 순서를 포함하는 교체 정보를 상기 희생자 전용 마지막 레벨 캐시로부터 스누프 필터로 프로모팅(promoting)하는 단계; 그리고,
    상기 캐시 히트가 발생하지 않다고 판별하는 것에 응답하여, 시스템 메모리로부터 제2캐시라인을 패치(fetch)하는 단계를 포함하고,
    상기 태그는 제1태그로서 지칭되고, 상기 교체 정보는 제1교체 정보로서 지칭되고, 상기 방법은,
    상기 스누프 필터의 슬롯이 유효하지 않은지를 판별하는 단계;
    상기 스누프 필터의 슬롯이 유효하지 않다고 판별하는 것에 응답하여,
    선택된 스누프 필터 희생자를 희생시키는 단계;
    무효화 프로브(probe)를 상기 중앙 처리 유닛으로 전송하는 단계;
    제3캐시라인을 수신하는 단계;
    상기 제3캐시라인을 상기 희생자 전용 마지막 레벨 캐시의 엔트리에 할당하는 단계; 및
    상기 희생자 전용 마지막 레벨 캐시의 상기 엔트리를 가장 적게 최근에 사용된(LRU) 엔트리로 설정하는 단계;
    상기 스누프 필터의 상기 슬롯이 유효하다고 판별하는 것에 응답하여,
    제4캐시라인을 상기 중앙 처리 유닛에 전달하는 단계; 및
    제2태그와 제2교체 정보를 상기 스누프 필터에 할당하는 단계를 더 포함하는 방법.
  14. 제13항에 있어서, 상기 시스템 메모리는 DRAM(dynamic random access memory)을 포함하는 방법.
  15. 삭제
  16. 제13항에 있어서,
    상기 슬롯은 제1슬롯으로 지칭되고, 상기 방법은,
    상기 스누프 필터 내의 제2슬롯이 유효하지 않은지를 판별하는 단계;
    상기 스누프 필터 내의 상기 제2슬롯이 유효하지 않다고 판별하는 것에 응답하여, 다음 스누프 필터 희생자 슬롯을 선택하고 저장하는 단계; 및
    상기 스누프 필터 내의 상기 제2슬롯이 유효하다고 판별하는 것에 응답하여, 상기 가장 적게 최근에 사용된 엔트리가 탐색될 때까지 상기 제2교체 정보를 에이징(aging)하는 단계를 더 포함하는 방법.
  17. 쓰기 연산 동안에 컴퓨터 캐시 내에서 공유되는 교체를 관리하기 위한 방법에 있어서,
    중앙 처리 유닛(CPU) 쓰기 연산을 시작하는 단계;
    제1캐시라인, 제1태그, 및 제1교체 정보를 스누피 필터로부터 독출하는 단계;
    희생자 전용 마지막 레벨 캐시(LLC) 내의 슬롯이 무효한지를 판별하는 단계;
    상기 희생자 전용 마지막 레벨 캐시가 유효하다고 판별하는 것에 응답하여, 상기 희생자 전용 마지막 레벨 캐시 내의 선택된 엔트리를 시스템 메모리로 희생시키는 단계; 및
    제2캐시라인, 제2태그, 제2교체 정보를 상기 희생자 전용 마지막 레벨 캐시로 기록하는 단계를 포함하고,
    상기 제1교체 정보는 상기 제1캐시라인에 대한 저장 상태 및 교체 순서를 포함하고,
    상기 제2교체 정보는 상기 제2캐시라인에 대한 저장 상태 및 교체 순서를 포고,
    상기 희생자 전용 마지막 레벨 캐시 내의 제2슬롯이 무효한지를 판별하는 단계; 및
    상기 희생자 전용 마지막 레벨 캐시 내의 상기 제2슬롯이 유효하다고 판별하는 것에 응답하여, 가장 적게 최근에 사용된(LRU) 엔트리가 탐색될 때까지 상기 제2교체 정보를 에이징(aging)시키는 단계를 더 포함하는 방법.
  18. 제17항에 있어서,
    상기 시스템 메모리는 DRAM(dynamic random access memory)을 포함하는 방법.
  19. 삭제
  20. 제17항에 있어서,
    다음 희생자 전용 마지막 레벨 캐시 희생자 슬롯을 선택하고 저장하는 단계를 더 포함하는 방법.
KR1020180013997A 2017-03-27 2018-02-05 저장된 교체 정보를 갖는 스누프 필터, 이에 대한 방법 및 희생자 전용 캐시와 스누프 필터 공유 교체 정책을 포함하는 시스템 KR102617154B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762477412P 2017-03-27 2017-03-27
US62/477,412 2017-03-27
US15/616,917 2017-06-07
US15/616,917 US10360158B2 (en) 2017-03-27 2017-06-07 Snoop filter with stored replacement information, method for same, and system including victim exclusive cache and snoop filter shared replacement policies

Publications (2)

Publication Number Publication Date
KR20180109675A KR20180109675A (ko) 2018-10-08
KR102617154B1 true KR102617154B1 (ko) 2023-12-26

Family

ID=63583423

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180013997A KR102617154B1 (ko) 2017-03-27 2018-02-05 저장된 교체 정보를 갖는 스누프 필터, 이에 대한 방법 및 희생자 전용 캐시와 스누프 필터 공유 교체 정책을 포함하는 시스템

Country Status (4)

Country Link
US (1) US10360158B2 (ko)
KR (1) KR102617154B1 (ko)
CN (1) CN108664415B (ko)
TW (1) TWI754727B (ko)

Families Citing this family (4)

* 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
US11113207B2 (en) * 2018-12-26 2021-09-07 Samsung Electronics Co., Ltd. Bypass predictor for an exclusive last-level cache
CN112612727B (zh) * 2020-12-08 2023-07-07 成都海光微电子技术有限公司 一种高速缓存行替换方法、装置及电子设备
US11921640B2 (en) * 2021-08-31 2024-03-05 Apple Inc. Mitigating retention of previously-critical cache lines

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100268895A1 (en) * 2009-04-15 2010-10-21 International Business Machines Corporation Information handling system with immediate scheduling of load operations
US20150186275A1 (en) * 2013-12-27 2015-07-02 Adrian C. Moga Inclusive/Non Inclusive Tracking of Local Cache Lines To Avoid Near Memory Reads On Cache Line Memory Writes Into A Two Level System Memory

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6598123B1 (en) * 2000-06-28 2003-07-22 Intel Corporation Snoop filter line replacement for reduction of back invalidates in multi-node architectures
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
US6823409B2 (en) 2001-09-28 2004-11-23 Hewlett-Packard Development Company, L.P. Coherency control module for maintaining cache coherency in a multi-processor-bus system
US6857048B2 (en) 2002-01-17 2005-02-15 Intel Corporation Pseudo least-recently-used (PLRU) replacement method for a multi-node snoop filter
US7325102B1 (en) 2003-11-17 2008-01-29 Sun Microsystems, Inc. Mechanism and method for cache snoop filtering
US7590804B2 (en) * 2005-06-28 2009-09-15 Intel Corporation Pseudo least recently used replacement/allocation scheme in request agent affinitive set-associative snoop filter
US7581068B2 (en) * 2006-06-29 2009-08-25 Intel Corporation Exclusive ownership snoop filter
US20080183972A1 (en) 2007-01-26 2008-07-31 James Norris Dieffenderfer Snoop Filtering Using a Snoop Request Cache
US8856456B2 (en) * 2011-06-09 2014-10-07 Apple Inc. Systems, methods, and devices for cache block coherence
US8935485B2 (en) * 2011-08-08 2015-01-13 Arm Limited Snoop filter and non-inclusive shared cache memory
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
US20140095806A1 (en) 2012-09-29 2014-04-03 Carlos A. Flores Fajardo Configurable snoop filter architecture
US9495312B2 (en) 2013-12-20 2016-11-15 International Business Machines Corporation Determining command rate based on dropped commands
US9507716B2 (en) 2014-08-26 2016-11-29 Arm Limited Coherency checking of invalidate transactions caused by snoop filter eviction in an integrated circuit
US9990289B2 (en) * 2014-09-19 2018-06-05 Advanced Micro Devices, Inc. System and method for repurposing dead cache blocks
US9367477B2 (en) 2014-09-24 2016-06-14 Intel Corporation Instruction and logic for support of code modification in translation lookaside buffers
US9405706B2 (en) 2014-09-25 2016-08-02 Intel Corporation Instruction and logic for adaptive dataset priorities in processor caches
US9727475B2 (en) 2014-09-26 2017-08-08 Intel Corporation Method and apparatus for distributed snoop filtering
US9811468B2 (en) * 2014-12-14 2017-11-07 Via Alliance Semiconductor Co., Ltd. Set associative cache memory with heterogeneous replacement policy
US11237965B2 (en) * 2014-12-31 2022-02-01 Arteris, Inc. Configurable snoop filters for cache coherent systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100268895A1 (en) * 2009-04-15 2010-10-21 International Business Machines Corporation Information handling system with immediate scheduling of load operations
US20150186275A1 (en) * 2013-12-27 2015-07-02 Adrian C. Moga Inclusive/Non Inclusive Tracking of Local Cache Lines To Avoid Near Memory Reads On Cache Line Memory Writes Into A Two Level System Memory

Also Published As

Publication number Publication date
KR20180109675A (ko) 2018-10-08
US20180276140A1 (en) 2018-09-27
TWI754727B (zh) 2022-02-11
CN108664415B (zh) 2023-07-21
US10360158B2 (en) 2019-07-23
TW201837715A (zh) 2018-10-16
CN108664415A (zh) 2018-10-16

Similar Documents

Publication Publication Date Title
KR102137761B1 (ko) 이종 통합 메모리부 및 그것의 확장 통합 메모리 스페이스 관리 방법
TWI627536B (zh) 用於具有調適分割之一共用快取之系統及方法
KR102617154B1 (ko) 저장된 교체 정보를 갖는 스누프 필터, 이에 대한 방법 및 희생자 전용 캐시와 스누프 필터 공유 교체 정책을 포함하는 시스템
US8943272B2 (en) Variable cache line size management
EP2478441B1 (en) Read and write aware cache
US9652384B2 (en) Apparatus, system and method for caching compressed data
US8533397B2 (en) Improving performance in a cache mechanism by way of destaging data in partial strides
US9244619B2 (en) Method of managing data storage device and data storage device
US20100042776A1 (en) Method and apparatus for providing enhanced write performance using a buffer cache management scheme based on a buffer replacement rule
US9824009B2 (en) Information coherency maintenance systems and methods
US20120102273A1 (en) Memory agent to access memory blade as part of the cache coherency domain
KR102575913B1 (ko) 비대칭 세트 결합된 캐시
US9195579B2 (en) Page replacement method and memory system using the same
CN102841854A (zh) 根据动态分级存储器缓存认知执行数据读取的方法和系统
KR101845371B1 (ko) 오프-다이 캐시 메모리의 태그들의 세트들을 캐시하기 위한 방법, 장치, 및 시스템
US10353829B2 (en) System and method to account for I/O read latency in processor caching algorithms
EP2901287B1 (en) System cache with sticky removal engine
US10606752B2 (en) Coordinated cache management policy for an exclusive cache hierarchy
US9563363B2 (en) Flexible storage block for a solid state drive (SSD)-based file system
US7757046B2 (en) Method and apparatus for optimizing line writes in cache coherent systems
KR102683696B1 (ko) 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법
US9304918B2 (en) Computer system and cache control method

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant