KR20190058318A - 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법 - Google Patents

효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20190058318A
KR20190058318A KR1020180141960A KR20180141960A KR20190058318A KR 20190058318 A KR20190058318 A KR 20190058318A KR 1020180141960 A KR1020180141960 A KR 1020180141960A KR 20180141960 A KR20180141960 A KR 20180141960A KR 20190058318 A KR20190058318 A KR 20190058318A
Authority
KR
South Korea
Prior art keywords
cache
location
node
data unit
value
Prior art date
Application number
KR1020180141960A
Other languages
English (en)
Other versions
KR102157354B1 (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 KR20190058318A publication Critical patent/KR20190058318A/ko
Application granted granted Critical
Publication of KR102157354B1 publication Critical patent/KR102157354B1/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/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/0806Multiuser, multiprocessor or multiprocessing cache 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/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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F2015/761Indexing scheme relating to architectures of general purpose stored programme computers
    • G06F2015/765Cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • 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
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 개시의 기술적 사상에 따른 멀티 프로세서 시스템은, 복수의 노드들 및 하나 이상의 메모리를 포함하고, 상기 노드들 각각은 적어도 하나의 프로세서, 각 노드에 전용인 제1 캐시, 상기 제1 캐시보다 높은 레벨에 있는 제2 캐시 및 각 노드에 전용인 캐시 위치 버퍼(Cache Location Buffer, CLB)를 포함하고, 상기 복수의 노드들 중 적어도 하나의 노드에 대해, 상기 적어도 하나의 노드에 포함된 상기 제1 캐시 및 상기 제2 캐시 중 적어도 하나는 가변 크기의 압축 데이터 유닛을 저장할 수 있는 적어도 하나의 캐시 위치를 포함하고, 적어도 하나의 노드에 포함된 캐시 위치 버퍼는 복수의 캐시 위치 버퍼 엔트리를 저장하도록 구성되고, 캐시 위치 버퍼 엔트리 각각은 복수의 위치 정보 값을 포함하고, 각각의 위치 정보 값은 각각의 데이터 유닛과 관련된 위치의 시작을 가리키고, 상기 각각의 위치 정보 값은, 상기 적어도 하나의 노드에 포함된 제1 캐시 내의 위치, 상기 적어도 하나의 노드에 포함된 제2 캐시 내의 위치 또는 상기 하나 이상의 메모리의 위치를 가리키고, 상기 복수의 위치 정보 값들 중 적어도 하나는 비 압축 데이터 유닛의 크기보다 미세한 입도(granularity) 각각의 데이터 유닛에 대응하는 위치를 식별할 수 있다.

Description

효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법{SYSTEMS AND METHODS FOR EFFICIENT COMPRESESED CACHE LINE STORAGE AND HANDLING}
본 개시의 기술적 사상에 대한 적어도 일부 실시 예는, 일반적으로 컴퓨터 메모리 장치에서 데이터에 액세스하는 방법 및 시스템에 관한 것으로, 보다 상세하게는, 압축된 데이터를 표현하고 처리하기 위한 메커니즘 및 기술에 관한 것이다.
오늘날의 프로세서는 종종 대용량 메모리(high-capacity memory)에 저장된 데이터 및 명령어의 사본을 저장할 수 있는 캐시를 구비하고 있다. 이러한 대용량 메모리의 통상적인 예로 DRAM(Dynamic Random Access Memory)을 들 수 있다. 여기서, "메모리" 라는 용어는 기존 및 미래의 모든 메모리 구현을 집합적으로 지칭하는 데 사용될 것이다. 캐시 메모리, 즉 간략하게 "캐시" 는 다른 메모리 구현보다 훨씬 작고 훨씬 빠른 메모리로 만들어지며, 이후에는 메인 메모리 또는 보조 저장 장치(secondary storage devices)에 저장된 데이터의 일부만을 특정 시점에 저장할 수 있다. 오늘날 캐시는 SRAM을 사용하여 구현되고, 대용량 캐시는 DRAM을 사용하여 구현될 수 있다. 여기에 설명된 캐시는 기존 및 미래의 임의적 메모리 기술을 사용하여 구현될 수 있다.
종종 컴퓨터 시스템의 메모리 시스템은, 메인 메모리에 가까운 더 크고 더 느린 캐시(여기서는 더 높은-레벨(higher-level)의 캐시로 명명함) 및 프로세서에 가까운 더 작고 더 빠른 캐시(여기서는 더 낮은-레벨(lower-level)의 캐시로 명명함)가 있는 범위의 캐시들을 포함할 수 있다. 이 구성은 일반적으로 캐시 계층(cache hierarchy), 메모리 계층(memory hierarchy) 또는 메모리 시스템으로 명명될 수 있다. 캐시 계층의 각 레벨은 캐시 레벨(cache level)로 명명될 수 있다. 도 1은 컴퓨터 시스템의 일부를 나타내는 블록도이다. 도 1에 도시된 예에서, 컴퓨터 시스템은 각각의 CPU(101)가 자신의 제1 레벨 프라이빗 캐시(102)(L1 캐시)를 할당 받는 멀티 프로세서 시스템이다. 이하, 도 2를 참조하여 CPU(101) 및 L1 캐시(102)의 보다 상세한 예시를 설명한다. 프라이빗 캐시는 데이터 유닛(data unit)을 위한 공간이 캐시에 있는 CPU(또는 캐시와 동일한 노드에 있는 CPU, 이 때 캐시는 해당 노드에 대해 전용임)의 활동에 대해서만 응답할 수 있는 캐시이다. 본 예시에서, 제2 레벨 캐시(103)는 모든 CPU들(101)에 의해 공유되고, 모든 CPU들(101)에 의해 액세스되는 데이터 및 명령들을 포함할 수 있다. 캐시(103)는, 데이터 유닛을 위한 공간이 임의의 CPU들(101)의 활동에 응답하여 형성될 수 있으므로, 글로벌 캐시(global cache)일 수 있다. 또한, 캐시(103)는, 각 데이터 유닛이 하나의 공유 사본으로만 존재할 수 있으므로(각 프라이빗 캐시가 자체의 복제 사본을 가질 수 있는 반면), 공유 캐시(shared cache)일 수 있다. 메모리(105)는 또한 모든 CPU들(101)에 의해 액세스 되는 명령 및 데이터를 저장할 수 있다. (메인) 메모리(105)는 일반적으로 물리적 어드레스(physical address)(또는 줄여서 PA)를 사용하여 액세스되는 반면, CPU에 의해 생성되는 어드레스는 통상적으로 가상 어드레스(virtual addresses)일 수 있다. 도 1에 도시된 시스템과 같이, 다수의 CPU 및 다수의 프라이빗 캐시를 구비하는 컴퓨터 시스템은, 캐시들 중 하나에서 요청된 데이터 유닛을 찾고, 상이한 노드들에 저장된 데이터에 대한 다수의 복사본들을 일관성있게 유지하기 위한 효율적인 메커니즘을 필요로 할 수 있다.
또한, 이러한 컴퓨터 시스템은 통상적으로, 메인 메모리 및 캐시 메모리 외에도 하나 이상의 보조 기억 장치(secondary storage devices)를 포함할 수 있다. 이들 보조 기억 장치는 디스크(104)에 의해 총괄하여 대표되는 하나 이상의 하드 드라이브(hard drives), 광 드라이브(optical drives), 플래시 드라이브(flash drives) 등을 포함할 수 있다. 디스크(또는 보조 기억 장치)(104)는 메모리(105)보다 몇 배 더 많은 데이터를 저장할 수 있지만, 물리적 어드레스를 사용하여 직접 액세스할 수는 없다. CPU(101)가 디스크(104)에 저장된 데이터에 액세스하기를 원할 경우, 가상 메모리 시스템(virtual memory system)(도 1에 도시되지 않음)은, 일반적으로 페이지라 불리는 데이터 청크(data chunk)를 디스크(104)에서 메모리(105)로 이동시키고, 상기 페이지에 대응하는 가상 어드레스로부터 상기 페이지의 물리적 어드레스로의 변환(translation)을 생성할 수 있다. 일반적으로 "변환 색인 버퍼(translation look-aside buffer)"(또는 줄여서 TLB)라고 하는 특별한 종류의 변환 캐시(translation cache)(도 1에 도시되지 않음)는 가상 페이지에서 물리적 페이지로의 변환 매핑을 캐시할 수 있다. 가상 메모리 시스템은 디스크(104)에 위치한 데이터의 일부를 메모리(105)에 저장하는 캐싱 시스템(caching system)으로 간주될 수 있다.
도 2는 컴퓨터 시스템의 예시적인 캐시 계층 구조를 설명하기 위한 블록도이다. 도 2는, CPU(204)가 명령 TLB (ITLB, 201) 및 데이터 TLB (DTLB, 205)와 같은 몇몇 캐시형 구조(cache-like structures) 및 CPU 코어(202)를 포함하는 캐시 구성에 대해, 도 1에 도시된 캐시 구성보다 더욱 상세한 도면을 도시한다. 제1 레벨 캐시(102)는 CPU(204)와 제2 레벨(및 잠재적으로 더 높은 레벨의) 캐시들(207) 사이에 개재된 명령 캐시(instruction cache)(200) 및 데이터 캐시(data cache)(206)를 포함하는 것으로 도시된다. 도 2는 또한 캐시 계층(cache hierarchy)에 접속된 대용량 메모리(208)를 도시한다. 도 2에 도시된 컴퓨터 시스템은 유니 프로세서(uni-processor)(예컨대, 하나의 프로세서) 시스템으로서 도시되어 있으나, 도 2의 컴퓨터 시스템은 멀티 프로세서 시스템의 일부일 수 있다.
CPU(204)가, 캐시 히트(cache hit)라고 명명되는, 캐시에 존재하는 데이터를 데이터를 요청할 때, 상기 요청은 캐시 미스라고 명명되는, 캐시에 존재하지 않는 데이터에 대한 액세스보다 훨씬 빠르게 처리될 수 있다. 통상적으로, 캐시 미스를 더 적게 경험하며 CPU(204) 상에서 실행되는 어플리케이션(application)은, 더 많은 캐시 미스를 경험하는 동일한 어플리케이션에 비해(두 어플리케이션이 유사한 특성을 갖는 것으로 가정할 때) 더 빠르고 적은 에너지를 소비하며 실행될 것이다. 따라서, 캐시 미스를 피하는 기술에 대한 상당한 노력이 투자되었고, 액세스 레이턴시(access latency) 및 이러한 메모리 트랜잭션이 소비하는 에너지 모두를 고려하여 캐시 히트 및 캐시 미스를 효율적으로 만드는 구현을 설계함에 있어서도 많은 노력이 투자되었다.
이러한 캐시 히트/미스 문제에 대한 솔루션을 개발하는 방법을 이해하기 위해, 캐시 구성 및 용어(cache organization and terminology)에 대한 이해가 유용할 수 있다. 일반적으로, 데이터는 캐시 라인(cachelines)으로 알려진 프로세서의 워드 크기(word size)보다 큰 고정 청크(fixed chuncks)로 캐시에 설치될 수 있다. 오늘날의 일반적인 캐시 라인의 크기는, 예를 들어 32, 64 및 128 바이트이지만, 당업자라면 이해할 수 있듯이, 보다 많은 캐시 라인 크기 및 더 작은 캐시 라인 크기가 다양한 캐시 구현을 위해 존재할 수 있다. 캐시 라인 크기는 또한 일부 캐시 구현에 대해 가변적일 수 있다.
메모리(208)에서 데이터 배치(the data placement)를 구성하는 일반적인 방법은, 각 데이터 워드가 하나의 특정 캐시 라인에 상주하도록 정적으로(statically) 매핑하는 방식이다. 각 캐시는, 세트(set)로도 알려진, 각 캐시 라인이 상주할 수 있는 캐시의 일부를 식별하는 색인 기능(index function)을 일반적으로 가질 수 있다. 상기 세트는 동시에 하나 이상의 캐시 라인을 보유할 수 있는 공간이 있을 수 있다. 상기 세트가 보유할 수 있는 캐시 라인의 수를 세트의 연관성(associativity)으로 명명할 수 있다. 대개, 캐시의 모든 세트들에 대한 연관성은 동일할 수 있다. 이러한 캐시는 종종 세트-연관 캐시(set-associative caches)로 명명될 수 있다. 연관성은 세트마다 다를 수도 있다. 캐시 라인을 보유할 수 있는 세트의 각 공간을 하나의 웨이(way)로 명명할 수 있다.
각 세트에 저장된 각 캐시라인의 식별정보(identity)를 결정하기 위해, 캐시의 캐시라인들에는 각각 연관된 일부 식별자(identifier)가 있다. 이러한 식별자의 실시 예로는 어드레스 태그(address tag)가 있다. 캐시에서 특정 캐시 라인을 찾을 때 캐시의 어드레스를 사용하여 캐시 세트를 결정할 수 있다. 대응하는 세트의 캐시 라인들의 어드레스 태그들은, 원하는 캐시 라인이 캐시에 상주하는 지, 그렇다면 어떤 방식으로 상주하는지, 즉, 캐시 라인을 보유할 수 있는 세트의 공간 중 어느 공간에 있는지를 판단하기 위해, 캐시 라인을 식별하는 데 사용된 어드레스 태그 부분(예를 들어, 도 3에 도시되고 하기에 설명된 TAG 및 ATAG를 참조)과 비교된다. 일반적으로 이러한 어드레스 태그의 크기는 상당히 크고, 예를 들어 30-40 비트의 범위일 수 있으며, 이는 일반적인 캐시 라인 크기의 6-10% 일 수 있다.
종종 각 캐시에는, 세트에 유지할 캐시라인 및 세트로 가져올 새 캐시 라인을 위한 공간을 만들기 위해 내보낼(대체라고도 함) 캐시라인을 결정하기 위한 빌트-인 전략을 가질 수 있고, 이는 캐시의 대체 전략(replacement policy)이라고 명명된다. 대체된 캐시 라인은 희생된 또는 교체된 캐시 라인으로 알려져 있다. 캐시 메모리와 함께 사용되는 보편적인 대체 정책에는 LRU (least-recently used), 의사 LRU(pseudo-LRU) 및 랜덤 대체 정책(random replacement policies)이 포함되지만 이에 국한되지 않는다.
포괄적인 캐시 계층 구조(inclusive cache hierarchies)는 하나의 캐시 레벨에 있는 데이터 블록(예를 들어, 캐시 라인)의 사본, 예를 들어 L1 캐시에 있는 데이터 블록이 더 높은 캐시 레벨(여기서, 더 높은 캐시 레벨은 1보다 높은 수의 캐시 레벨들을 의미), 예를 들어 L2 및 L3 캐시에도 존재함을 요구한다. 배타적 캐시 계층(Exclusive cache hierarchies)은 전체 캐시 계층에 존재하는 데이트 블록(예를 들어, 캐시 라인)의 복사본을 하나만 가지며 비 포괄적 계층 구조(non-inclusive hierarchies)는 두 가지 전략을 혼합할 수 있다. 배타적이고 비 포괄적인 캐시 계층 구조에서는, 주어진 캐시 레벨에서 내보내질 때 다음으로 높은 캐시 레벨에 캐시 라인이 인스톨되는 것이 일반적이다.
이러한 캐시 및 캐시 라인에 관한 배경을 염두에 두고, 이 논의는 이제 도 1 및 도 2에 도시된 바와 같은 캐시 계층 내의 특정 캐시 위치를 식별하는 하나의 종래 기술을 설명하기 위해 진행된다. 도 3은 세트-연관 캐시 및 세트-연관 데이터 변환 색인 버퍼(TLB)를 포함하는 2 레벨의 캐시 계층 구조의 종래 구현을 설명하기 위한 블록도이다. 도 3은 CPU(301), DTLB(303), L1 캐시(307) 및 L2 캐시(311)를 포함하는 컴퓨터 시스템 노드의 구성 예를 도시한다. CPU(301)는 DTLB(303)에서 연관 검색을 수행하기 위해 사용되는 가상 어드레스(302) (VADDR)를 포함하는 메모리 요청을 생성한다. 본 예시에서, 가상 어드레스(302)는 P-OFFSET(페이지 오프셋, 예를 들어 로우-레벨 비트로 구성됨), TAG 및 INDEX의 세 부분으로 분할된다. 가상 어드레스(302)의 인덱스 부분은 어드레스 변환이 저장될 수 있는 DTLB(303) 내의 세트를 식별하는 데 사용된다.
본 예시에서 설명된 DTLB(303)는 식별 된 세트의 2 개의 엔트리를 나타내는 양방향 연관 구성을 갖는다. 각 엔트리는 어드레스 태그(ATAG) (304) 및 물리적 페이지 프레임(PPF)(305)으로 구성된다. 가상 어드레스(302)의 TAG 부분은 식별 된 세트의 각 엔트리의 ATAG(304)와 비교된다. 로직(318)은 엔트리들 중 임의의 것에 대해 매칭이 존재하는지를 판정하고, 일치하는 경우, 대응하는 PPF(305)를 선택하도록 MUX(306)를 제어한다. 물리 어드레스(PADDR)(316)는 MUX(306)에 의해 선택된 PPF(305)를 가상 어드레스(302)의 P-OFFSET 부분과 연결함으로써 구성된다. 대안으로, 식별 된 세트의 엔트리 중 어느 것도 가상 어드레스(302)의 TAG 부분과 일치하지 않으면, TLB 채움 동작이 수행되고 필요환 변환 엔트리가 DTLB(303)로 제공된다.
PADDR(316)은 L1 캐시(307)에서 검색(lookup)을 수행하는데 사용된다. 보다 구체적으로, PADDR(316)의 IDEX 부분은 요청된 데이터를 포함하는 캐시 라인이 저장될 수 있는 세트를 식별하는데 사용된다. (이 L1 INDEX에는 DTLB INDEX와 다른 비트가 포함될 수 있다.) 도시된 L1 캐시(307)는 식별된 세트 내의 2개의 엔트리를 갖는 2-웨이 연관 구조(2-way associative organization)를 갖는다. 각각의 엔트리는 어드레스 태그(ATAG)(308) 및 대응하는 캐시 라인의 데이터(309)로 구성된다. PADDR(316)의 TAG 부분은 식별 된 세트의 각 엔트리의 ATAG와 비교된다. 로직(319)은 엔트리들 중 임의의 것에 대한 매칭이 있는지를 결정하고, 대응하는 데이터를 선택하도록 MUX(310)를 제어한다. 엔트리들 중 어느 것도 일치하지 않으면 (L1 MISS(317)로 묘사됨), L2 캐시(311)에서 검색이 필요하다. L2 캐시 색인을 위한 INDEX 및 TAG 부분으로의 PADDR(316) 분할은 L1 캐시 색인을 위한 분할과 다를 수 있으나, L2 캐시 색인의 나머지 단계는 일반적으로 L1 캐시의 검색을 위해 수행된 것과 유사하다. L2 캐시의 미스가 결정되면 상위 캐시 또는 메모리 액세스에 대한 새로운 조회가 요구될 수 있다. L1 캐시에 의해 사용되는 PADDR(316)의 INDEX 부분이 P_OFFSET 비트들로 전체적으로 구성되면, MUX(306)로부터 오는 PPF 정보가 이용 가능하기 전에 L1 캐시(307)에 대한 액세스가 시작될 수 있음을 알 수 있다. 이를 종종 가상적으로 인덱싱 된 물리적 태그 캐시(VIPT)라고 한다.
당업자는 도 3에 도시된 바와 유사한 메모리 계층 각각에서의 몇몇 "노드"가 함께 접속되어 코히런트 다중 프로세서 시스템(coherent multiprocessor system)을 형성할 수 있음을 알 것이다. 다중 프로세서의 또 다른 예시가 도 1에 도시되어 있으며, 각 CPU에는 자체 L1 캐시가 있다. 이것은 더 높은 다음 캐시 레벨에서 항상 데이터를 검색하는 것이 더 이상 충분하지 않기 때문에 요청된 데이터가 상주하는 위치를 찾는 작업을 더욱 복잡하게 만든다. 다른 노드의 캐시를 검색하고 다른 노드에 저장된 데이터의 다중 사본(multiple copies)을 일관성있게 유지하는 메커니즘이 요구된다.
도 4는 태그리스 캐시의 예시적인 구현을 나타내는 블록도이다. 이러한 캐시는 위치 정보(LI)에 의존할 수 있다. 위치 정보(LI)는 캐시 라인 포인터(CP)로 지칭될 수 있고, 일치하는 캐시 테이블 엔트리(CTE)의 요청된 캐시 라인에 대응할 수 있다. 예를 들어, 일치하는 캐시 테이블 엔트리(CTE)(때로는, 영역 위치(region location)로 명명됨)의 요청된 캐시 라인에 대응하는 위치 정보(LI)는 요구된 캐시 라인이 어느 캐시에 상주하는 지를 나타낼 수 있다. 이를 통해 컴퓨터 시스템은 적절한 캐시에서 직접 캐시 검색을 수행할 수 있다. 도 4에 도시된 태그리스 캐시의 예시적인 실시 예는 2 레벨 캐시 계층 구조와 2 레벨 캐시 위치 버퍼(CLB) 계층 구조를 포함하며, 여기서 첫 번째 레벨은 가상으로 액세스 되고 두 번째 레벨은 물리적으로 액세스 될 수 있다.
예를 들어, 도 4에 도시된 시스템(다중 프로세서 시스템의 노드 일 수 있음)에서 위치 정보는 L1 CACHE와 L2 CACHE를 구별 할 수 있다. 또한 본 도면에 도시되지 않는 나머지 다중 프로세서 시스템에 있는 다른 캐시를 구별할 수도 있다. 도 4는 CPU(401)가 어드레스 (ADDR)(402)를 생성하는 세트-연관 캐시 및 CPU(여기에는 L0로 표시된 하나 이상의 많은 종래의 캐시를 포함할 수 있음)의 2-레벨 캐시 계층을 갖는 다중 프로세서 시스템의 다른 노드에 접속될 수 있는 태그리스 노드(tag-less node)를 도시한다. 도 4는 CLB1(410) 및 CLB인 CLB2(420)가 ADDR로 인덱싱되는, 세트-연관 CLB의 2-레벨 CLB 계층을 도시한다. 본 명세서에서 사용되는 용어 "CLB1"은 제1 레벨 CLB를 지칭할 수 있고, 용어 "CLB2"는 제2 레벨 CLB를 지칭할 수 있다. CLB1(410) 내의 각 엔트리는 적어도 하나의 어드레스 태그(AT)(411) 및 캐시 위치 테이블(CLT)(412)를 포함한다. 이는 영역 정보(region information, RI)(413)와 같은 추가적인 정보를 저장할 수 있다. CLT는 대응 영역(마이크로 페이지로도 명명됨)의 캐시 라인에 대한 위치 정보(LI)를 저장한다. 도 4는 일 예로서 영역 당 4개의 LI를 도시한다. 발명자에 의한 경험적 연구에 따르면, 영역 당 8 내지 16개의 LI (즉, 영역 당 8 내지 16 데이터 유닛 (캐시 라인))가 비용 효과적이고 효율적이다. 위치 정보는 다중 프로세서 시스템에서 해당 캐시 라인을 찾을 수 있는 위치를 인코딩(또는 부호화)한다. 위치 정보는, 예를 들어, 데이터 유닛이 발견될 수 있는 캐시의 식별정보를 포함할 수 있다. 위치 정보는 또한 데이터 유닛이 발견될 수 있는 캐시 내의 위치를 포함할 수 있다. 대안적으로, 위치 정보는 데이터 유닛이 발견될 수 있는 노드의 식별정보를 포함하거나 그 위치에 관한 정보를 제공하는 심볼을 포함할 수 있다. 예를 들어, 심볼 "MEM"은 데이터 유닛이 메모리에서 발견될 수 있음을 나타낸다. 일 실시 예에서, "모름(don't know)"라는 심볼은 해당 데이터 유닛의 위치가 그 영역에 대응하는 CLT에 기록되어 있지 않음을 나타낸다.
MUX(416)는 ADDR(402)의 TAG 부분과 매칭하는 AT(411)를 갖는 CLT를 선택하고, MUX(415)는 ADDR(402)의 LI-OFFSET 부분에 기초하여 요청된 캐시 라인에 대응하는 LI(414)를 선택한다. 선택된 LI에 저장된 캐시 아이디가 L2 캐시(440)에 대응하면, L2 캐시(440) 내의 요청된 데이터 유닛에 액세스하기 위한 어드레스(417)는 어드레스(402)의 인덱스 부분 및 위치 정보(414)의 일부를 사용하여 형성된다. 세트-연관 L2 CACHE(440)의 예에서, 그 부분은 요청된 데이터 유닛이 저장되는 연관 방법에 대응하는 정보를 포함한다. 선택된 LI에 저장된 캐시 식별정보가 L1 캐시(430)에 대응하면, L1 캐시(430)에서 요청된 데이터 유닛에 액세스 하기 위한 어드레스(418)가 유사한 방식으로 형성된다.
동일한 연관성을 갖는 세트-연관 캐시로 구성된 캐시 계층에 대해, 각각의 LI 내 비트들의 수는 CLB에 의해 커버되는 캐시 계층의 캐시들의 수 및 웨이의 수에 의존한다. 하나의 LI 값은 유효하지 않은 패턴("MEM")으로 보유될 수 있다. 본 실시 예에서, LI 비트의 수는 CLB에 의해 커버되는 캐시 레벨의 수의 로그베이스 2 + 웨이의 로그 베이스 2 + 1 (즉, (log2(웨이) + log2(레벨) + 1)) 와 동일하다. 상이한 캐시 레벨의 웨이 수가 변하는 경우 또는 세트-연관 캐시 이외의 캐시가 사용되는 경우, 당업자는 다른 LI 표현이 가능하다는 것을 이해할 것이다. 일반적으로 LI의 크기는 일반적 어드레스 태그의 크기보다 작을 수 있다. 각 레벨에서 16 웨이 연관 캐시를 갖는 2-레벨 캐시 계층 구조는, 6개의 LI 비트를 이용하여 인코딩 될 수 있다.
도 4에 도시된 실시 예에서, L1 캐시(430) 및 L2 캐시(440)의 각 엔트리는, 각각 자신의 캐시 라인(DATA)(431, 441)과 연관된 역방향 포인터(backwards pointer, BP)(432, 442)를 갖는다. 본 예시에서, 역방향 포인터들(BP)은 CLB2(420) 내의 각각의 관련 CTE를 지시한다. CLB2(420) 내의 각각의 CTE는 어드레스 태그(AT)(421), CLT(422) 및 CLB1 포인터(C1P)(423)를 포함한다. CLB2 엔트리가 CLB1(410)에 대응하는 CLT를 갖는다면, 상기 C1P는 상기 엔트리를 지시할 것이다. 이 경우, CLB1(410)은 이 영역에 대한 최신 정보(up-to-date information)를 포함할 것이다. 이 경우, CLB1(420)의 영역에 대한 CLB 엔트리는 패시브 엔트리를 포함하는 반 면, CLB1의 CLE는 액티브 CLB 엔트리라고 한다. 일 실시 예에서, CLB1(410)이 영역에 대한 활성 엔트리를 포함한다면 CLB2(420)는 영역에 대한 수동 엔트리를 포함할 필요가 있다.
일 실시 예에서, CLB1(410)에서 매칭되는 CTE가 발견되지 않으면, 대응하는 CTE가 CLB2(420)에서 검색되어 CLB1에 복사되고, CLB1 내의 구 엔트리는 CLB2(420)에 복사된다. 이를 spill and fill 또는 단순히 spill/fill(도 4의 SPILL 및 FILL) 이라고 한다. 또한 Spill은, 예를 들어 기존의 포괄적인 캐시가 다음 레벨로 데이터 유닛을 제거하여, 다음 캐시 레벨에서 가져올 수 있는(fill) 새 데이터 유닛을 위한 공간을 만들 때 수행된다. CLB 레벨이 포괄적인 계층 구조를 형성하기 때문에, CLB 엔트리가 그 사이를 이동하는 다른 CLB 레벨간에 유사한 spill/fill 동작이 수행된다. 디렉토리 DIR은 CLB 계층 구조의 루트에 있으며 최상위 레벨 CLB로 spill/fill한다.
Spill/fill 동작과 병렬로 요청된 데이터 유닛에 대한 액세스를 개시하는 것이 가능하다.
일 실시 예에서, 다중-레벨 CLB 구현의 CLB들의 내용은 그들이 관리하는 다중-레벨 캐시 시스템의 데이터 유닛들의 위치들과 일관되게 유지된다. 캐시 계층 구조에서 이동된 데이터 유닛 (CPU에서 데이터 유닛에 대한 요청, 데이터 유닛의 제거(eviction), 프리 페치(prefetching) 동작 및 코히어런스(coherence) 동작을 포함하되 이에 한정되지 않음)은 하나 이상의 CLB에서 해당 위치 정보를 업데이트한다. 예를 들어, 도 4에서, 캐시(440)로부터 데이터 유닛(441)을 제거하는 것은 그것의 대응하는 CTE(본 예시에서 CLB2(420)에 있는)를 찾고 데이터 유닛의 새로운 위치를 가리키기 위해 그 대응하는 위치 정보를 업데이트 하기 위해 연관된 BP(442) 포인터를 따르는 단계를 포함할 수 있다(예를 들어, MEM 심볼 저장). 그리고, 대응하는 CLB2의 CLE의 C1P 포인터가 유효하면, C1P에 이어서 CLB1(410)에서 대응하는 CTE를 찾아 캐시 라인과 관련된 위치 정보를 갱신한다. 일 실시 예에서, 유효한 C1P 포인터가 존재하면 CLB2의 엔트리는 업데이트되지 않는다. 일 실시 예에서, 활성 CLT(active CLT)만이 업데이트 된다.
전술한 내용으로부터 알 수 있는 바와 같이, 이들 실시 예에 따른 태그리스 캐시 시스템(즉, 캐시에 저장된 데이터 유닛이 그 캐시와 연관된 어드레스 태그를 가지지 않는 캐시 시스템)을 사용하면, 상이한 저장 장치에 위치 된 다양한 캐시 라인이 CPU(401)에 의해 요청될 때 발생할 수 있는 다수의 상이한 타입의 트랜잭션이 발생하게 될 것이다. 도 4에 도시된 노드는 몇몇 그러한 캐시 노드들로 구성된 더 큰 다중 프로세서 시스템의 서브 시스템(또는 노드)일 수 있다. 많은 노드에서 캐시의 데이터를 일관성 있게 유지하는 것은 코히어런스 프로토콜(cache coherence protocol)을 요구한다(예를 들어, 스누핑(snooping) 또는 디렉토리 기반 코히어런스(directory-based coherence) 구현). 코히어런스 프로토콜은 도 4(EXTERNAL REQUESTS)의 노드에 코히어런스 요청을 전송한다. 이러한 요청은 통상적으로 CLB2(420)로 우선 전환될 것이고, 이는 이 키시 시스템이 요청된 캐시 라인을 갖지 않는다고 결정할 수 있다(CLB2 미스 또는, CLB2가 비활성인 C1P를 갖는 엔트리를 히트하고 요청된 캐시 라인의 위치 정보가 메모리 패턴을 유지). 그렇다면, L1 및 L2 데이터 캐시(코히어런스 필터링)에 대해서는 더 이상의 조치가 필요하지 않지만, 그럼에도 불구하고 액티브 CLT(active CLT)의 대응하는 LI는 데이터 유닛과 관련된 새로운 위치를 추적하기 위해 업데이트 될 필요가 있다. 그렇지 않으면, CLB2 검색은 요청된 위치 정보를 제공하거나(CLB2 히트 및 캐시 라인의 위치를 저장하는 요청 된 캐시 라인의 위치 정보), CLB1(410)이 연관된 위치 정보를 저장하는 것으로 결정할 수 있다(CLB2 히트와 유효한 C1P). 후자의 경우, 요청된 캐시 라인의 위치 또는 캐시 라인이 캐시 서브 시스템에 존재하지 않는지를 결정하기 위해 CLB1(410)에서 검색이 필요하다(CLB1의 해당 위치 정보는 메모리 패턴을 포함한다). 무효화 요청(invalidation request), 읽기 요청 또는 독점적 읽기 요청(exclusive read request)과 같은 코히어런스 요청의 성격에 따라, 코히어런스 프로토콜은 요청된 데이터 유닛에 대해 일부 작업을 수행하고 상태를 변경할 수 있다. 액티브 CLT 내의 대응하는 LI는 또한 데이터 유닛과 관련된 새로운 위치를 추적하기 위해 업데이트 될 필요가 있다.
비록 도 4에 도시된 노드가 2개의 캐시 레벨로 구성되더라도, 당업자는 노드가 다른 수의 레벨을 사용하여 어셈블링 될 수 있고 하나 이상의 CPU를 포함할 수 있음을 이해할 것이다. 또한, 노드의 캐시 레벨 수와 CLB 레벨 수가 동일할 필요는 없다.
도 5는 2 레벨 캐시 계층 구조 및 2 레벨 캐시 위치 버퍼(CLB) 계층 구조에 연결된 2개의 CPU를 포함하는 컴퓨터 시스템의 일부를 도시하는 블록도이다. 예를 들어, 도 5는 두 개의 CPU 노드(580 및 590)로 구축된 시스템을 도시하고, 상기 각 CPU 노드는 일 실시 예에 따라 각각 하나의 CLB1(503 및 513) 및 프라이빗 캐시(L1 CACHE, 504 및 514)를 갖는 그들 자신의 제1 레벨 캐시 계층 내에 있다. 시스템은 또한 2개의 CPU(501, 511) 사이에서 공유되는 글로벌 공유 L2 캐시(523)(때로는 최종 레벨 캐시 LLC라 명명됨)를 포함한다.
CLB1(513 또는 503)에서 검색은 예를 들어 CLB1(410)과 유사한 기술을 사용하여 그들 각각의 CPU(501, 511)에 의해 생성된 어드레스에 기초하여 단일 LI를 선택한다. CLB1A(503) 및 CLB1B(513)에 도시된 2개의 CLT 엔트리에 의해 개시된 3개의 화살표에 의해 표시된 바와 같이, 선택된 L1은 대응하는 L1 캐시(각각 504 및 514), L2 캐시(523) 또는 다른 노드(각각 570 및 571로 도시됨) 중 어느 하나가 될 위치를 식별할 수 있다. 본 예시에서, CLB1A(503)는 액세스 된 데이터가 공유된 L2(523)에서 505가 되도록 식별하는 반면, CLB1A(503)는 자신의 액세스 된 데이터가 자신의 L1(514)에서 505가 되도록 식별한다(실선 화살표로 표시).
도 6은 단일 모놀리식 최종 레벨 캐시를 갖는 태그리스 캐시 계층을 포함하는 컴퓨터 시스템의 일부를 나타내는 블록도이다. 도 6은 태그리스 다중 프로세서 메모리 시스템의 일반화 된 그림을 도시한다. 본 예시는 제1 노드(Node-1, 601)에서 제N 노드(Node-N, 699)까지의 N 노드로 구성된다. 각 노드는 X 레벨의 CLB 및 Y 레벨의 프라이빗 캐시, 즉 노드에 전용인 캐시를 갖는다. 노드들은 네트워크 온 칩(network on chip, NoC)(605) 회로를 통해 서로 연결되어 있다. 또한, NoC(650)는 노드를 디렉토리(DIR)(660), 글로벌 최종 레벨 캐시(global last level cache, LLC)(670) 및 메모리(680)에 접속한다. DIR(660)은 CLB와 유사하게 구성되고 적어도 하나의 어드레스 태그(AT)(661) 및 캐시 위치 테이블(CLT)(662)로 구성된 엔트리를 갖는다. 엔트리는 또한 보다 상세히 후술될 영역 정보(region information, RI)(663)와 같은 추가 정보를 포함할 수 있다. 노드의 최상위 레벨 CLB(CLB-X 630, 693)는 DIR로, 또는 DIR 에서, spill/fill 을 수행한다. DIR은 또한 캐시와 CLB의 내용을 일관성있고 일관되게 유지하는 코히어런스 프로토콜에서 핵심적인 역할을 한다.
CLB 및 DIR은 하나의 포괄적 "캐시 계층 구조"를 형성하여 데이터 캐시 계층 구조의 내용에 관한 정보로 메타 데이터를 캐싱하는 것으로 볼 수 있다. L-1에서 L-Ys까지의 L-1과 LLC를 포함하는 데이터 계층구조는 포괄-속성(inclusion properties)이 없는 개별 캐시 계층으로 볼 수 있다. 예를 들면, 비 포괄적일 수 있다.
도 6에서 도시된 실시 예에서, 각각의 노드는 L0-D 및 L0-I로 도시된, 가능하게는 제로, 하나 또는 다수의 종래 태그 기반 캐시를 포함하는 하나의 CPU를 갖는다. 임의의 종래 L0 캐시에 의해 충족될 수 없는 메모리 요청은 가능하게는 도 4의 CLB-1(410)과 유사한 방식을 사용하여 대응하는 CLB 엔트리 CLT를 검색하여 노드 CLB-1(예를 들어, 610)에서 검색을 생성할 것이다. 대응하는 엔트리가 CLB-1에서 발견되면, 요청된 데이터 유닛에 대응하는 위치 정보(LI)는 CLT 필드(612)에 위치될 수 있다. LI는 요청된 데이터 유닛을 찾을 수 있는 위치를 식별한다. 일 실시 예에서, 제1 노드(601)의 CLB(610)에 있는 LI는 노드 자신의 캐시(L-1(620) 내지 LY(640)), LLC(670), 메모리(680) 또는 임의의 다른 노드(제2 노드(690) 내지 제N 노드(699)를 추적하는 데이터 유닛의 위치로서 식별할 수 있다. 일 실시 예에서, LI는 또한 식별된 캐시 내의 데이터 유닛의 위치를 식별할 수 있다. 일 실시 예에서, LI는 데이터 유닛이 노드에 접속된 CPU(610)의 임의의 종래 캐시 L0-D 또는 L0-I에 상주하는지 여부를 나타낼 수 있다.
캐시 위치(또는 메모리)가 데이터가 발견될 수 있는 위치로서 식별되면, 요청은 디렉토리(DIR)(660)를 참조하지 않고 직접 그 캐시를 판독함으로써 만족될 수 있다. 노드가 요청된 데이터를 찾을 수 있는 위치로 식별되면 해당 노드의 CLB-X로 요청이 전송되고 도 4에 대해 논의된 "외부 요청들(EXTERNAL REQUESTS)"과 마찬가지로 요청이 충족된다. 그러나 데이터를 찾으려면 디렉토리를 참조할 필요가 없다. 이것은 디렉토리가 노드 외부로 나가는 액세스를 위해 참조되고 업데이트되는 대부분의 종래의 디렉토리 기반 일관성 체계와 상이하다.
비록 도 6은 각각의 노드에서 하나의 CPU를 도시하지만, 당업자는 노드가 임의의 수(0을 포함)의 CPU, GPU, 가속기(accelerators) 또는 I/O 장치와 같이 메모리에 액세스할 수 있는 다른 장치를 포함할 수 있음을 인식할 것이다. 또한 CLB와 캐시의 구성과 크기는 노드간에 크게 다를 수 있다.
포괄적인 CLB/DIR 계층 구조에서 레벨 별 엄격한 계층 검색이 있을 수 있다. 위치 정보가 레벨 CLB-i에서 발견되지 않으면, 검색은 다음 레벨인 CLB-(i+1)에서 수행된다. 노드의 최상위 레벨(CLB-X)에서 위치 정보를 찾을 수 없는 경우 DIR에서 검색이 수행된다. 위치 정보가 CLB 레벨 또는 DIR에서 발견되면 해당 레벨의 해당 위치 정보로 식별된 데이터 위치로 읽기 요청을 전송할 수 있으며 요청된 영역에 해당하는 새 CLE 항목이 CLB-1에서 작성된다. 일 실시 예에서, CLB/DIR 계층 구조는 포괄적이다. 이는 CLB-L 레벨에서 CLB 항목을 사용할 수 있는 경우 레벨 CLB-(L+1)에 항목이 설치되어 있어야 함을 의미한다. CPU에 가장 가까운 CLB 항목이 활성화된다. 일 실시 예에서, 캐시 레벨 K(뿐만 아니라 하위 캐시, 즉 도 6의 상위 캐시)와 특정 CLB 레벨 C (뿐만 아니라 모든 상위 CLB 레벨, 즉, 도 6보다 더 하위)사이에 강제가 포함될 수 있다. 예를 들어, 데이터가 캐시 L-1(620) 내지 LY(640) 중 어느 하나에서 이용 가능하기 위해서는, 대응하는 CLB-X(630)의 해당 엔트리가 제거되면 해당 영역의 모든 데이터가 캐시 L-1(620)에서 LY(640)으로 제거되어야 한다. 이를 강제 제거라고 명명한다. 또한, CLB-1(610)까지의 동일한 노드의 모든 CLB 항목도 제거해야 한다.
노드(예를 들어, 캐시 L-1(620) 내지 L-Y(640)) 내의 캐시 레벨들, 또는 LLC(660)와 노드 내의 캐시(예를 들어, 캐시 L-1(620) 내지 L-Y(640)) 사이의 캐시 레벨들 사이에 포함 요건은 없다는 것을 알아야 한다. 예를 들어, 특정 어드레스에 대응하는 유효한 데이터는 L1 캐시(620)에는 존재할 수 있으나, 캐시 L-Y(640) 및 LLC 캐시(670) 모두에는 존재할 수 없다. 이것은 예를 들어 스트리밍 데이터가 L1(실제로는 L0에만 존재)에 설치되고 다른 레벨에서는 설치되지 않아야 하는 캐시 바이패스 최적화(cache bypass optimizations)를 위한 것이다. 그러나 해당 CLB 항목(일반적으로 해당 데이터 영역의 50배 더 작음)은 모든 수준에서 설치해야 한다.
디렉토리(DIR)(660)는 어드레스 태그(AT)(661), 캐시 위치 테이블(CLT) 및 영역 정보(RI)와 같은 CLB와 유사한 정보를 포함한다. 이러한 필드(fields)는 CLB의 필드(예를 들어 CLB-X(630))와 명칭이 같지만 필드의 내용은 해당 CLB 필드와 다를 수 있다. 일 실시 예에서, DIR(660)의 RI 필드(663)는 어느 노드가 영역을 추적하고 있는지를 나타내는 N개의 소위 존재 비트(presence bits, PB)를 포함하며, N은 시스템 내의 노드의 수에 대응한다. PB의 비트 K가 설정되면 이는 노드 K의 CLB-X에 해당하는 항목이 있음을 의미한다. 이는 또한 노드 K의 임의의 캐시 레벨 L1 내지 LY에 캐시된 데이터가 있을 수 있음을 의미하고, 또한, 노드 K의 CLB-1에 대응하는 엔트리가 있을 수 있음을 의미하며, 이는 노드 K의 CPU가 대응하는 영역의 임의의 캐시 라인에 액세스 할 수 있게 한다. 본 설명이 PB 정보의 N 비트 구현을 언급하지만, 당업자라면, 제한된 포인터, 링크 된 목록을 포함하여 디렉토리 구현에 사용되는 많은 확장 가능한 기술을 사용하여 유사한 기능을 구현할 수 있다.
PB 비트는 영역(region)을 분류하는데 사용될 수 있다. 영역은 디렉토리(660) 내의 대응하는 엔트리의 PB 비트 중 하나가 설정되면 프라이빗 영역(private region, PR)으로 분류된다. 경험적 연구에 따르면 모든 액세스 된 지역의 평균 약 80%가 광범위한 벤치 마크에서 PR 영역으로 나타난다. 영역 분류 PR은 해당 지역의 데이터가 해당 PB 비트 세트가 있는 하나의 노드에만 존재할 수 있으며, 이 시점에서 다른 노드가 해당 영역의 데이터에 액세스할 수 없다는 것을 의미한다. DIR에서 유일하게 설정된 비트 인 PB 비트를 갖는 노드(601)는 해당 영역이 프라이빗 영역(PR)임을 통지받을 수 있고, 그 CLB 내의 대응하는 영역 정보(RI)에 영역 분류를 기록할 수 있다(예를 들어, CLB-1(610) 내지 CLB-X(630)). PR영역은 많은 면에서 효율적으로 액세스될 수 있다. 예를 들어, 노드가 현재 읽기 권한(데이터 유닛을 상태 S에서 상태 E로 업그레이드하기 위함)만 가진 노드에 있는 데이터 유닛에 대해 쓰기 권한을 얻으려면 글로벌 코히어런스(global coherence)를 필요로 하지 않는다. 이는 단지 하나의 노드 만이 데이터의 캐시 사본을 가질 수 있고 다른 노드는 그 영역의 데이터 유닛 중 임의의 것에 액세스 할 수 없기 때문이다. 또한, 노드 외부의 임의의 구조를 알릴 필요 없이 데이터가 캐시 계층 전체를 위 아래로 움직일 수 있기 때문에(예를 들어, L-X에서 LLC로의 제거 또는 LLC에서 L-1으로의 데이터 이동), PR 영역의 데이터 유닛의 이동이 효율적으로 구현될 수 있다. 또한 이동은 노드(610~630)의 로컬 CLB에 기록되어야 한다. 이는 노드(610 내지 630)의 CLB에 저장된 PR 영역의 CLT 정보가 DIR(660)에 저장된 영역의 CLT 정보와 다를 수 있음을 의미한다(예를 들어, 최신 정보일 수 있음).
제2 노드(예를 들어, 690)가 PR 영역에 액세스할 때(경험적 연구에 따르면, 이는 비교적 드문 이벤트이다), 그것은 모든 CLB(691 내지 693)에서 미스(miss)할 것이고, DIR(660)에 요청하여 데이터에 액세스하고 또한 CLB(691 내지 693)에서 자신의 CLB 엔트리의 생성을 허용하기 위해 필요한 적절한 위치 정보를 얻을 것이다. 이 요구가 PR 영역에 대한 것이고, DIR(660)은 최신 정보를 가질 수 없기 때문에, 노드(601)로부터의 최신 위치 정보를 얻을 필요가 있고, 노드(601)의 CLB가 더 이상 그 영역을 PR로서 더 이상 마크하지 않으며, 그 영역에 대한 자신의 CLT 정보를 갱신하고, 제2 노드(690)에 대응하는 PB 비트를 설정하고 영역에 대한 적절한 CLB 정보를 노드(690)에 전송할 필요가 있다. 제2 노드(690)는 이제 그 영역과 관련된 자신의 로컬 CLB 엔트리를 생성할 수 있다. 일 실시 예에서, 노드(601)는 최신 위치 정보를 DIR(660)에 보내기 전에 영역에 대한 모든 진행중인 데이터-직접 메모리 요청(direct-to-data memory requests)을 완료해야 한다.
또 다른 노드(예를 들어, 제 N 노드(Node-N, 699)가 그 영역에 액세스하는 경우, 그 노드는 또한 그 CLB 모두에서 미스될 것이고, 또한 DIR(660)에 요청을 보낼 것이고, DIR(660)은 이제 그 영역에 대한 최신 정보를 가지며 적절한 정보를 제N 노드(699)에 전송하고 또한 요청 노드(예를 들어, 노드(699))에 대한 영역의 PB 비트를 설정할 것이다.
하나 이상의 PB 비트 세트를 갖는 영역은 공유 영역(shared regions, SR)으로 분류된다. 이는 하나 이상의 노드가 이 영역의 위치 정보를 추적하는 CLB를 가짐을 의미한다. 또한, 대응하는 PB 비트 세트를 갖는 노드가 그들의 캐시(예를 들어, 620 내지 640) 중 임의의 영역에 데이터 유닛을 저장할 수 있음을 의미한다. 노드 내에서 국부적으로 충족될 수 없는 데이터 유닛에 액세스 하기 위한 CPU(예를 들어, 610)로부터의 요청은(예를 들어, 캐시 L-1(620) 내지 LY(640)에 의하여), 상기 영역이 SR로 분류된다면 글로벌 코히어런스 트랜잭션(global coherence transaction)을 개시할 필요가 있을 수 있다.
SR 또는 PR 영역에 대한 글로벌 코히어런스 읽기 트랜잭션(로컬 캐시(예를 들어, 캐시 L-1(620) 내지 LY(640)로부터 만족될 수 없는 읽기)은 DIR(660)을 수반하지 않거나 또는 위치 정보에 의해 식별될 수 있는 노드 이외의 임의의 노드와 통신하지 않고 직접적으로 데이터에 액세스하기 위해 로컬 CLB(예를 들어, CLB-1(610) 내지 CLB-X(630))로부터 검색된 위치 정보를 이용할 수 있다. 이는 여기서 다이렉트-투-마스터 액세스(direct-to-master access)라고 명명된다. 경험적 연구에 따르면 SR 영역에 대한 모든 글로벌 코히어런트 트랜잭션의 75%는 다이렉트-투-마스터 읽기 트랜잭션 액세스 이다. 따라서, CPU에서 개시된 글로벌 트랜잭션의 20%가 SR 페이지에 있고 그 중 75%가 DIR에 액세스 할 필요가 없는 경우, 종래의 디렉토리 기반 프로토콜에서는 모든 글로벌 코히어런트 트랜잭션이 DIR에 액세스해야 하나, 상기 언급된 캐시 구조들 및 기법들 중 적어도 일부에 따른 캐시 구조 및 기법을 사용할 때 글로벌 코히어런스 트랜잭션의 95%는 DIR에 액세스할 필요가 없다.
SR 영역은 데이터 유닛의 위치를 추적하는 여러 노드를 가지므로, 그들의 데이터 유닛 이동은 영역을 추적하는 모든 노드에 반영될 필요가 있고(예를 들어, 영역에 대한 액티브 CLB 엔트리를 갖는 노드), 이동된 데이터 유닛의 위치 정보는 노드에서 업데이트 된다. 일 실시 예에서, 데이터 유닛을 추적하는 상이한 노드들의 CLB들의 위치 정보는 CLB 들이 데이터가 상주하는 위치 (마스터 위치라 명명됨) 일치하도록 일관된 방식으로 업데이트 되어야 한다. 일 실시 예에서, CLB로부터 검색된 위치 정보에 기초하여 액세스 된 데이터 유닛 위치가 정확한 데이터를 포함한 다는 것이 보장된다(결정론(determinism)이라 명명됨).
이러한 데이터 유닛 이동에 대한 하나의 공통적인 이유는 글로벌 코히어런트 쓰기 요청(write request), 즉 현재 데이터 유닛에 대한 쓰기 허가(write permission)를 갖지 않는 요청 노드(requesting node)가 글로벌 코히어런트 요청(global coherent request), 예를 들어 무효화 요청 또는 독점적 읽기 요청을 통해 쓰기 허가를 요청하는 것이다. 요청이 완료된 후 데이터 유닛은 요청 노드에만 상주한다.
글로벌 코히어런트 쓰기 요청은 요청 노드(예를 들어, 601)에 의해 디렉토리(660)로 보내지고, 디렉토리(660)는 대응하는 디렉토리 엔트리를 찾고, 영역에 대응하는 PB 비트를 검색하고, 대응 PB 비트 세트를 갖는 모든 노드(요청 노드 제외)에 요청을 전송하고, 노드는 슬레이브 노드(slave node)(예를 들어, 노드들(690 및 699))로 명명된다. 슬레이브 노드는 슬레이브 노드에서 시작된 데이터 유닛에 대한 향후 요청이 요청 노드로 전달되도록 할 때 ACK 메시지를 보낸다. 이는 예를 들어 CLB 내의 데이터 유닛에 대한 그들의 위치 정보를 새로운 마스터 노드가 될 요청 노드(601)를 가리키도록 변경함으로써 달성될 수 있다. ACK 메시지는 DIR(660)에 전송될 수 있으며, DIR(660)은 DIR(660)을 수집하고 모든 ACK가 일단 수신되면 요청 노드에 ACK를 전송하거나 직접 요청 노드(601)로 전송할 수 있다. 요청 노드는 모든 ACK가 수신되었다는 것을 알고 나면 캐시 라인에 대한 배타적 쓰기 권한을 획득하고 요청을 완료한다. 일 실시 예에서, 완료 메시지는 요청 완료 시 DIR(660)에 전송된다.
데이터의 이동의 또 다른 일반적인 이유는 제거(대체라고도 명명함)이다. 노드의 로컬 제거, 예를 들어 L-1(620)에서 L-Y(640)로의 제거, 는 로컬로 처리되고, 로컬 CLB 항목에 의해 추적되며 노드 외부에서는 표시되지 않는다. 그러나, 예를 들어 L-Y(640)에서의 위치(641)에서 LLC(670)의 새로운 위치(671)로의 마스터 데이터 유닛의 글로벌 제거는 그 영역을 추적하는 모든 노드들에 반영 되어야 한다(즉, 영역에 대한 CLB 엔트리를 갖는 모든 노드). 일 실시 예에서, 글로벌 제거는 먼저 이전 위치(641)에 저장된 데이터를 유효하게 유지하면서 이전 위치(641)에 저장된 데이터 유닛의 값을 새로운 위치(671)에 복사함으로써 구현된다. 그 다음, 새로운 위치(671)에 관한 정보를 갖는 글로벌 코히런트 제거 요구가 요청 노드(예를 들어, 601)로부터 DIR(660)로 보내지며, DIR(660)은 슬레이브 노드(예를 들어, 690 및 699)에 요청을 전송한다. 슬레이브 노드가 대응 위치 정보를 새로운 위치(671)로 업데이트하면, 그들은 ACK 메시지를 전송한다. 요청 노드는 모든 ACK가 전송되었다는 것을 알고 나면 데이터 유닛에 대한 제거 권한을 획득하고 이전 위치를 다시 요구할 수 있으며 요청이 완료된다. 일 실시 예에서, 완료 메시지는 요청 완료 시 DIR(660)에 전송된다.
슬레이브 노드는 요청된 캐시 라인에 대한 미해결 요청(예를 들어, 모든 다이렉트-투-마스터 요청)이 완료될 때 까지 ACK 메시지를 전송하지 않는다.
디렉토리(660)는 각 데이터 유닛에 대해 특정 유형의 미해결 글로벌 요청이 최대 하나가 될 수 있음을 보장하는 차단 메커니즘을 구현한다. 이러한 요청 유형의 예로 전역 코히런트 쓰기 요청(global coherent write request) 및 전역 코히런트 제거 요청(global coherent eviction request)을 들 수 있다. 캐시 라인에 대한 블로킹은 요청이 완료된 후 또는 코히런스 프로토콜에 의해 달리 지정된 경우 종료된다. 차단 메커니즘은 어드레스가 제한된 잠금 풀(limited pool of locks)에 해시(hash)되고 데이터 유닛의 차단이 동일한 잠금에 해싱하는 다른 모든 데이터 유닛에 대한 액세스를 차단한다는 점에서 정확하거나, 극도로 근사(over-approximation) 할 수 있다.
차단은 데이터 유닛 세분성(granularity) 대신에 영역 세분성(granularity)으로 행해지고, CLB/디렉토리 spill/fill 요청의 일부는 또한 그들의 업데이트가 완료될 때까지 차단할 필요가 있다. 이는 노드 및 디렉토리가 CLB 정보를 spill/fill 하는 동안 글로벌 코히어런트 쓰기 요청이 진행되지 않음을 보장한다.
또 다른 유용한 영역 분류는 DIR(660)에 설정되는 영역과 관련된 PB 비트가 없는 영역이다. 이는 영역 데이터 유닛이 노드의 캐시 L-1 내지 L-Y 중 임의의 노드에 존재할 수 없고 노드 중 어느 것도 현재 자신의 데이터 유닛에 액세스 할 수 없다는 것을 의미한다. 이를 비 추적 영역(untracked region, UR)이라고 한다. UR 지역의 데이터는 여전히 LLC에 캐시될 수 있다. 일 실시 예에서, UR 영역의 데이터 유닛은 임의의 글로벌 코히어런스 요청 없이 LLC(670)로부터 제거될 수 있다. DIR(660)에 대응 엔트리가 없ㅂ는 영역은 메모리 영역(MR)으로 분류된다. MR 영역의 데이터 유닛은 노드나 LLC에서 캐시될 수 없다. DIR(660)에서 CLT 항목을 대체하면 해당 영역의 모든 데이터 통합이 LLC에서 강제로 제거되어야 함을 나타낸다.
도 6의 캐시 시스템은 태그리스 캐시 시스템, 즉 캐시에 저장된 데이터 유닛(예를 들어, 노드의 캐시 L-1 내지 LY 및 LLC)은 어드레스 태그를 가지고 있지 않다. 대신에, 연관된 어드레스 태그가 있는 위치 정보는 데이터 유닛이 저장된 위치를 식별한다. 도 6(L0-I 및 L0-D)에 포함된 기존의 캐시에는 여전히 캐시 데이터 유닛과 연관된 어드레스 태그가 있을 수 있다.
도 7은 최종 레벨 캐시의 다수 슬라이스를 갖는 일반화된 태그리스 캐시 계층을 나타내는 블록도이다. 도 7은 LLC가 LLC 슬라이스들(LLC-1(771), LLC-2(772) 및 LLC-N(779))로 절단되어 노드들에 가까운 네트워크 온 칩(NoC)(750)의 다른 측에 배치된다는 점에서 도 6과 상이하다. 각 슬라이스는 대체 카운터(RC)(775, 776 및 777)로 각각 구성된다. 이 카운터는 각 LLC 슬라이스의 캐시 교체 횟수를 계산한다. 도 7의 실시 예는 LLC 슬라이스를 각 노드(점선 박스로 표시됨)의 외부에 배치한다. 각각의 LLC 슬라이스(예를 들어, 771)는 각 노드에 인접하고 노드의 CPU(710)로부터 매우 짧은 레이턴시로 액세스 될 수 있으나, 이들은 여전히 대형 글로벌 LLC의 조각으로 간주될 수 있다. CLB-X(예를 들어, 730)로부터의 영역 엔트리를 제거하는 것은 강제적으로 제거되도록 노드(예를 들어, 771)에 가까운 LLC 슬라이스에 상응하는 영역 데이터를 반드시 요구할 필요는 없다. 또한, 노드(예를 들어, 노드(701))는 자신의 CLB(예를 들어, 710)에 위치 정보를 원격 노드(예를 들어, 772에서의 위치)에 인접한 원격 LLC 슬라이스 내의 위치로 곧바로 향하게 할 수 있고, DIR(760)이나 그 노드의 CLB들(790)을 경유하지 않고 그 데이터를 액세스할 수 있다.
오늘날 도 7과 같은 LLC 구현이 존재한다(LLC가 실제로 물리적으로 노드에 가깝게 배치되고 도 7의 다른 요소와 관련이 없는 뱅크로 분리된다는 의미에서만). 그러나 오늘날의 솔루션(예를 들어, Intel의 서버 칩)은 어드레스에 따라 LLC 뱅크에 데이터 유닛을 배치하므로, 노드가 4개인 경우, LLC 뱅크에 액세스 하는 액세스의 25%가 노드 가까이에 있는 뱅크에서 발생한다. 실시 예들에 따라 기술된, 예를 들어, 위치 정보 포인터에 기초한 캐시 액세스 기술은 데이터 유닛의 배치에 대한 완전한 유연성(full flexibility)을 허용하고 잠재적으로 LLC 히트의 로컬 부분을 증가시킬 수 있는 데이터 유닛의 어드레스에 의존하지 않는다. 하나의 옵션은 액세스되는 모든 LLC 슬라이스의 모든 공유 데이터를 복제하는 것이다. 그러나 모든 LLC 슬라이스의 모든 공유 데이터를 복제하면 LLC 용량이 소비된다. 전술하였듯이 영역의 20%는 일반적으로 공유된다. 모든 공유 영역을 모든 노드에서 복제해야 한다고 가정하면 4-노드 시스템은 복제된 LLC 데이터를 저장하는 LLC 용량의 80%를 사용한다. 이것은 분명히 차선책이어서 보다 효율적인 LLC 할당 / 복제 결정의 필요성을 촉구한다.
데이터 유닛이 처음으로 LLC 슬라이스에 할당되면 항상 액세스하는 CPU에 인접한 LLC 슬라이스에 데이터 유닛을 배치하는 것이 유리할 수 있다. 그러나 서로 다른 CPU에서 실행되는 스레드(threads)는 서로 다른 LLC 용량 요구 사항을 가질 수 있으므로 때때로 데이터 유닛을 원격 LLC 슬라이스에 배치하여 로컬 LLC 용량의 일부를 "훔칠"("steal") 수 있다. 일 실시 예에서, 할당 결정은 LLC 슬라이스 캐시 압력(cache pressure)에 기초하여 이루어진다. 각각의 LLC 슬라이스는 슬라이스에서 일어나는 대체 횟수를 등록하는 대체 카운터(RC 775, 776, 777)를 갖는다. 일 실시 예에서, 이들 카운터는 주기적으로 모니터링되어 각각의 LLC 슬라이스에 대한 캐시 압력을 결정하는데, 여기서 더 높은 카운트는 더 높은 압 력을 나타낸다. 데이터 유닛에 LLC 공간을 할당할 때, 공간은 항상 캐시 압력이 가장 낮으면 로컬 LLC 슬라이스에 할당된다. 그렇지 않은 경우, 할당의 구성 가능한 부분은 현재 가장 낮은 압력을 갖는 원격 LLC 슬라이스로 이루어지며 나머지 할당은 로컬 LLC 슬라이스에서 수행된다. 일 실시 예에서, 원격 LLC 슬라이스에서 공간의 할당은, 예를 들어 로컬 LLC 슬라이스의 캐시 압력이 특정 임계 값 이상인 경우에만 발생한다.
하나의 마지막 레벨 캐시가 여러 노드(예를 들어, 도 1의 L2(103) 또는 도 6의 LLC(670))에 의해 공유되는 종래의 캐시 토폴로지에서는, 일반적으로 LLC(공유 캐시라고 명명됨)에 상주하는 각 데이터 유닛의 사본이 하나만 존재하지만, 도 1의 L1 캐시(102)와 같은 노드에 전용인 캐시(프라이빗 캐시라고도 명명됨)는 각각 동일한 데이터 유닛의 사본을 저장할 수 있다. 도 7의 LLC 슬라이스는 LLC 슬라이스 중 하나에 데이터 유닛의 단일 복사본을 저장하고 모든 노드가 동일한 위치 정보를 사용하여 액세스하거나, 또는 몇몇의 LLC 슬라이스들에 있는 데이터 유닛의 소위 복제된 사본을 저장하는 옵션을 갖는다.
예를 들어, 데이터 유닛(774)은 데이터 유닛에 대한 유일한 LLC 사본일 수 있고, CLB-1(710)의 CLT(712) 및 CLB-1(791)의 CLT는 위치 정보(774)를 가리키는 관련 위치 정보를 갖는다. 데이터를 복제하기로 결정한 후에, 데이터의 복사본은 위치(773)에 놓일 수 있고 CLT(712)의 연관된 위치 정보는 위치(773)를 가리키도록 변경될 수 있다. 위치(773)에 저장된 데이터 유닛은 로컬 LLC 데이터 유닛으로 명명된다. 위치(773)에 저장된 로컬 데이터는 제1 노드(701)에 로컬인 CLB의 검색을 통해서 간접적으로만 액세스 될 수 있는 반면, 위치(774)에 저장된 글로벌 데이터는 위치(774)를 가리키는 위치 정보를 사용함으로써, 예를 들어 노드 N(799)에 의해 직접 액세스 될 수 있다.
적어도 하나의 예에서, 도 7의 캐시 시스템은 태그리스 캐시 시스템, 즉, 캐시(예를 들어, 노드들 및 LLC의 캐시들 L-1 내지 L-Y)에 저장된 데이터 유닛이 연관된 어드레스 태그를 가지지 않는 캐시 시스템이다. 대신 연관된 어드레스 태그가 있는 위치 정보는 데이터 유닛이 저장된 위치를 식별한다. 도 7 L0-I and L0-D)에 포함된 기존의 캐시에는 여전히 캐시 데이터 유닛과 연관된 어드레스 태그가 있을 수 있다.
도 3 내지 도 7과 관련된 논의를 요약하면, 캐시 계층 구조의 동시 구현은, 요청된 캐시 라인의 위치가 결정될 수 있기 전에 TLB들에서뿐만 아니라 상이한 캐시 레벨들에서도 많은 연관 검색이 수행될 것이 요구됨을 당업자는 이해할 것이다. 또한, 각각의 변환 엔트리 및 캐시된 캐시 라인은 어드레스 태그를 수반할 필요가 있고, 복수의 태그들은 이들 레벨의 레벨 각각에서 어드레스의 일부와 비교될 필요가 있다. 전반적으로, 이러한 구현은 각 연관 검색에 사용되는 동적 에너지(dynamic energy) 측면에서 엄청난 비용이 든다. 또한 비교를 수행하는 데 필요한 추가 태그 정보를 저장하기 위해 정적 에너지 및 메모리 용량에 상당한 오버 헤드가 요구된다.
따라서, 캐시 계층 구조에서 압축된 데이터의 효율적인 표현 및 처리를 지원함으로써, 데이터에 대한 캐시 검색과 관련된 전술한 문제점들 및 결점들 모두를 피하면서 동시에 캐시 라인 스토리지와 관련된 용량, 정적 전력 비용의 일부를 제거하는 시스템 및 방법을 제공하는 것이 바람직하다.
본 출원은 2017년 11월 20일자로 출원된 미국 가출원 제62/588,717에 관련되며, 그 개시 내용은 본 명세서에 참고로 이용되어 있다.
본 개시의 기술적 사상은 캐시 계층 구조를 포함하는 시스템 및 이의 동작 방법에 관한 것으로서, 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일 측면에 따른 멀티 프로세서 시스템은, 복수의 노드들 및 하나 이상의 메모리를 포함하고, 상기 노드들 각각은 적어도 하나의 프로세서, 각 노드에 전용인 제1 캐시, 상기 제1 캐시보다 높은 레벨에 있는 제2 캐시 및 각 노드에 전용인 캐시 위치 버퍼(Cache Location Buffer, CLB)를 포함하고, 상기 복수의 노드들 중 적어도 하나의 노드에 대해, 상기 적어도 하나의 노드에 포함된 상기 제1 캐시 및 상기 제2 캐시 중 적어도 하나는 가변 크기의 압축 데이터 유닛을 저장할 수 있는 적어도 하나의 캐시 위치를 포함하고, 적어도 하나의 노드에 포함된 캐시 위치 버퍼는 복수의 캐시 위치 버퍼 엔트리를 저장하도록 구성되고, 캐시 위치 버퍼 엔트리 각각은 복수의 위치 정보 값을 포함하고, 각각의 위치 정보 값은 각각의 데이터 유닛과 관련된 위치의 시작을 가리키고, 상기 각각의 위치 정보 값은, 상기 적어도 하나의 노드에 포함된 제1 캐시 내의 위치, 상기 적어도 하나의 노드에 포함된 제2 캐시 내의 위치 또는 상기 하나 이상의 메모리의 위치를 가리키고, 상기 복수의 위치 정보 값들 중 적어도 하나는 비 압축 데이터 유닛의 크기보다 미세한 입도(granularity) 각각의 데이터 유닛에 대응하는 위치를 식별할 수 있다.
본 개시의 기술적 사상의 일 측면에 따른 데이터 관리 방법은, 멀티 프로세서 시스템의 복수의 노드들로서, 상기 복수의 노드들 각각은 하나 이상의 프로세서, 상기 각 노드에 전용인 하나 이상의 전용 캐시(private cache) 및 상기 각 노드에 전용인 하나 이상의 캐시 위치 버퍼(CLB)를 포함하고, 상기 하나 이상의 전용 캐시에 데이터 유닛을 저장하는 단계; 상기 멀티 프로세서 시스템의 노드들 중 적어도 하나의 노드에 대해, 상기 하나 이상의 캐시 위치 버퍼에 복수의 위치 정보 값들을 저장하는 단계로서, 상기 위치 정보 값들 각각은 데이터 유닛과 연관된 위치를 나타내고, 상기 각 위치 정보 값은 상기 데이터 유닛 각각과 연관되는 위치로서, 상기 적어도 하나의 전용 캐시 내의 위치, 상기 복수의 노드들 중 하나의 노드 내의 위치, 또는 메인 메모리 내의 위치를 가리키는, 단계; 및 상기 복수의 위치 정보 값들 중 적어도 하나의 위치 정보 값을, 데이터 유닛이 제1 값을 저장함을 나타내는 심볼로 부호화하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일 측면에 따른 프로세스를 수행하기 위해 컴퓨터에 의해 실행되는 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체로서, 상기 프로세스는, 글로벌 캐시들, 메모리 및 복수의 노드들에 구비된 복수의 전용 캐시들에 데이터 유닛을 저장하는 단계로서, 상기 노드들 각각은 하나 이상의 프로세서 및 각 노드에 전용인 하나 이상의 전용 캐시를 포함하는, 단계; 상기 복수의 노드들은 네트워크를 통해 접속되고, 상기 복수의 노드들 중 적어도 하나의 노드에 대하여, 상기 적어도 하나의 노드에 전용인 캐시 위치 버퍼에 복수의 위치 정보 값들을 저장하는 단계; 및 상기 데이터 유닛이 제1 값을 저장함을 나타내는 심볼과 함께 상기 복수의 위치 정보 값들 중 적어도 하나의 위치 정보 값을 부호화하는 단계를 포함할 수 있다.
본 개시의 기술적 사상에 따른 예시적 실시 예의 상기 특징 및 다른 특징 및 이점은, 첨부된 도면을 참조하여 본 개시의 기술적 사상에 따른 예시적 실시 예를 상세하게 설명함으로써 더욱 명백해질 것이다. 첨부 도면은 본 개시의 기술적 사상에 따른 예시적 실시 예를 도시하기 위한 것이며, 청구 범위의 의도된 범위를 한정하는 것으로 해석되어서는 안된다. 첨부 도면은 명시적으로 언급되지 않는 한, 축척 된 것으로 간주되지 않아야 한다.
도 1은 컴퓨터 시스템의 일부를 나타내는 블록도이다.
도 2는 컴퓨터 시스템의 예시적인 캐시 계층 구조를 설명하기 위한 블록도이다.
도 3은 세트-연관 캐시 및 세트-연관 데이터 변환 색인 버퍼(TLB)를 포함하는 2 레벨의 캐시 계층 구조의 종래 구현을 설명하기 위한 블록도이다.
도 4는 태그리스 캐시의 예시적인 구현을 나타내는 블록도이다.
도 5는 2 레벨 캐시 계층 구조 및 2 레벨 캐시 위치 버퍼(CLB) 계층 구조에 연결된 2개의 CPU를 포함하는 컴퓨터 시스템의 일부를 도시하는 블록도이다.
도 6은 단일 모놀리식 최종 레벨 캐시를 갖는 태그리스 캐시 계층을 포함하는 컴퓨터 시스템의 일부를 나타내는 블록도이다.
도 7은 최종 레벨 캐시의 다수 슬라이스를 갖는 일반화된 태그리스 캐시 계층을 나타내는 블록도이다.
도 8은 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따라 다양한 정도의 데이터 압축을 갖는 3개의 태그-기반 캐시 계층구조를 나타내는 블록도이다.
도 9는 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따라 태그리스 캐시 시스템을 간략하게 표현하는 블록도이다.
도 10은 본 개시의 기술적 사상에 따른 적어도 하나의 실시 예에 따라 압축된 데이터 저장 및 취급을 위한 효율적 지원을 갖는 태그리스 캐시 시스템의 단순화된 표현을 나타내는 블록도이다.
본 개시의 실시 예들은 기능 블록들, 유닛들 및/또는 모듈들의 관점에서 도면들에 기술되고 설명된다. 당업자는 이러한 블록들, 유닛들 및/또는 모듈들이 논리 회로, 이산 소자들, 마이크로 프로세서들, 하드-와이어 회로들, 메모리 소자들, 배선 접속들 등과 같은 전자 (또는 광학) 회로들에 의해 물리적으로 구현된다는 것을 이해할 것이다. 이는 반도체 기반 공정 기술 또는 다른 공정 기술을 이용하여 형성될 수 있다. 블록들, 유닛들 및/또는 모듈들이 마이크로 프로세서들 또는 이와 유사한 구성에 의해 구현되는 경우, 이들은 본 명세서에서 논의된 다양한 기능들을 수행하기 위해 소프트웨어(예를 들어, 마이크로 코드)를 사용하여 프로그래밍 될 수 있고 선택적으로 펌웨어 및/또는 소프트웨어에 의해 구동될 수 있다. 대안적으로, 각각의 블록, 유닛 및/또는 모듈은 전용 하드웨어에 의해, 또는 일부 기능을 수행하기 위한 전용 하드웨어 및 다른 기능을 수행하기 위한 프로세서 (예를 들어, 하나 이상의 프로그램 된 마이크로 프로세서 및 관련 회로)의 조합으로서 구현될 수 있다. 또한, 실시 예들의 각각의 블록, 유닛 및/또는 모듈은 본 개시의 기술적 사상들의 범위를 벗어나지 않으면서 물리적으로 2개 이상의 상호 작용하고 이산적인 블록들, 유닛들 및/또는 모듈들로 분리될 수 있다. 또한, 실시 예들의 블록들, 유닛들 및/또는 모듈들은 본 개시의 기술적 사상의 범위를 벗어나지 않으면서 더 복잡한 블록들, 유닛들 및/또는 모듈들로 물리적으로 결합될 수 있다.
이하의 설명에서, 본 개시의 기술적 사상에 따른 일부 예시적 실시 예들에 따라 종래의 캐시 태깅 방식에 대한 효율적인 대안을 구현하기 위한 기능 블록들 및 예시적인 캐시 위치 테이블(CLB)을 포함하는 세부 사항들이 제공된다. 또한, 본 개시의 기술적 사상에 따른 적어도 일부 예시적 실시 예들에 따라 CLB 방식들이 특정 캐시 및 컴퓨터 아키텍처를 참조하여 기술되었으나, 당업자는 본 개시의 기술적 사상에 따른 하나 이상의 예시적 실시 예가 광범위한 메모리 및 시스템 아키텍처에 적용 가능하다는 것을 이해할 것이다. 몇몇 경우에, 단순화를 위해, 공지된 회로 및 구조는 상세히 설명되지 않는다.
본 개시의 기술적 사상에 따른 적어도 일부 예시적 실시 예에 따르면, 캐시 라인이 계층 구조 내의 레벨들 사이 및 노드들 사이에서 이동될 때마다 알려진 유용한 위치 정보를 폐기하는 대신, 위치 정보가 저장(예를 들어, 갱신)되고, 캐시 처리 스킴(cache handling scheme)(CHS)에서 처리되고 나중에 캐시 액세스에 이용된다. 본 명세서에서, "위치 정보(location information)"라는 용어는 때때로 "LI" 또는 "위치 정보(LI)"와 동의어로서 명명될 수 있다. 또한, 특정 위치 정보의 값은 "위치 정보 값"으로 지칭될 수 있다. CLB는 연관 방식으로 구성된다. 따라서, 각 CLB 엔트리는 어드레스 태그 필드 및 어드레스 태그 필드와 관련된 복수의 LI를 포함하지만, 본 개시의 기술적 사상에 따른 일부 실시 예에 따라 위치 정보를 저장하는 다른 기술이 가능하다. 결과적으로 CLB에 저장된 정보를 이용하여 추가 연관 검색을 수행하지 않고도 요청된 데이터의 위치에 신속하게 액세스할 수 있다. 보다 정확하게는, CLB는 캐시 내의 임의의 어드레스 태그에 액세스 할 필요 없이 올바른 캐시 식별 정보뿐만 아니라 캐시 내의 정확한 위치가 결정될 수 있는 위치정보(LI)를 제공한다. LI는 원격 노드를 관련 데이터의 위치로 식별할 수도 있다. 따라서, 본 개시의 기술적 사상에 따른 일부 예시적 실시 예에 따른 기술을 사용하여, 요청된 데이터는 캐시 계층 구조에서 더 적은 에너지를 소비하는 방식으로 보다 빨리 발견될 수 있다. 설명된 기술을 사용하면 보다 유연하고 계층적이지 않은 캐시 토폴로지를 효율적으로 구현할 수 있다.
따라서, 도 1 및 도 2에 도시된 시스템은, 본 개시의 기술적 사상에 따른 적어도 일부 예시적 실시 예에 따르면, 여기에 설명된 캐시 처리 기법(CHS)을 포함할 수도 있다. 이 방식에는 캐시 계층 버퍼에 저장된 데이터 유닛의 위치를 추적하는 캐시 위치 버퍼(CLB) 또는 CLB 계층 구조가 포함된다. 데이터 유닛이 캐시 계층에서 이동할 때마다 새 위치가 CLB에 기록된다.
본 개시의 기술적 사상에 따른 적어도 몇몇 예시적 실시 예들에 따른 CLB는 복수의 캐시 위치 엔트리(CLE)를 저장하는 연관 조직으로서 구현될 수 있다. 각각의 CLE는 연관 룩업에 사용되는 어드레스 태그, 및 복수의 위치 정보(LI)를 저장하는 캐시 위치 테이블(CLT)과 같은 일부 페이로드(payload)를 포함한다. 실제로, CLB 자체는 위치 정보를 저장하는 캐시로 볼 수 있다.
본 개시의 기술적 사상에 따른 적어도 일부 예시적 실시 예들의 특징이 이하 도 8 내지 도 10을 참조하여 설명될 것이다. 명료함을 위해, 당업자들은 이들 도면들이 실제 물리적 구현보다는 본 개시의 기술적 사상에 따른 일부 예시적 실시 예들의 논리적 구현을 도시함을 이해할 것이다. 따라서 당업자는 이러한 다이어그램이 실시 예의 논리적 표현을 나타내며, 물리적 구현이 세부 구성에서 실질적으로 다를 수 있음을 이해할 것이다.
캐시 계층구조에서 데이터 압축에 대한 다양한 제안이 있다. 일부 데이터 값은 중요한 응용 프로그램에서 자주 발생하는 것으로 알려져 있다. 64 비트 워드를 사용하여 상기 빈번한 데이터 값을 나타내는 것은 중복될 수 있으며 캐시 용량 및 정적 전력을 낭비할 수 있다. 대신, 많은 제안은 잦은 데이터 값을 표현하는 보다 효율적인 방법을 제안하였다. 다양한 압축 알고리즘이 있으나, 우선적인 원리는 매우 간단하다. 자주 사용되는 데이터 값이 감지되고 이러한 값에 대한 새로운 효율적인 인코딩이 도입되었다. 이러한 인코딩은 정적 또는 동적일 수 있다. 간단한 예로, 세 개의 16 진수 값 0x0, 0x1 및 0xFFFFFFFF가 응용 프로그램에서 자주 발생한다고 가정한다. 압축되지 않은 64 비트 정보(8 바이트) 대신 2 비트 정보만 사용하여 이러한 값을 저장하는 64 비트 워드를 표현할 수 있다. 이제 캐시 라인 내의 각 64 비트 값은 추가된 2 비트 압축 태그로 시작한다고 가정한다. 압축 태그의 값이 1, 2 또는 3이면 해당 워드가 각각 자주 발생하는 값 0x0, 0x1 및 0xFFFFFFFF를 저장하고 그 워드의 값을 저장하는 데 더 이상 비트가 필요하지 않음을 의미한다. 압축된 값은 압축 태그만 저장하여 나타낼 수 있다. 캐시 라인의 다음 부분은 다음 64 비트 워드의 압축 태그를 저장한다. 압축 태그가 0 값을 저장하면, 이는 압축 태그 다음의 64 비트 정보가 비압축 값을 저장함을 의미한다. 64 바이트 캐시 라인의 8개의 64 비트 워드가 4개의 상기 압축된 값 및 4개의 비 압축된 값을 포함하면, 캐시 라인은 종래의 비 압축 캐시 라인에 비해 약 절반의 비트로 표현될 수 있다.
제안된 압축 기술은 전형적으로 상기 예보다 정교하지만 압축 효과는 동일하다. 즉, 일부 캐시라인은 64 비트 캐시 라인에 512 비트를 사용하는 일반 표현보다 적은 수의 비트로 나타낼 수 있다. 다만, 캐시 라인의 데이터 값에 대한 압축된 표현을 찾는 것만으로는 전통적 태그 기반 캐시를 사용하는 보다 컴팩트한 표현이 가능하지 않다. 또한 압축을 이용하기 위해 다양한 크기의 캐시 라인에 액세스할 수 있도록 캐시 구조 자체를 변경해야 한다.
도 8은 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따라 다양한 정도의 데이터 압축을 갖는 3개의 태그-기반 캐시 계층구조를 나타내는 블록도이다. 도 8을 참조하면, 3개의 상이한 세트 연관 캐시가 도시된다. 도 2에는 단지 2 웨이 연관 캐시가 도시되어 있으나, 도 8에 도시된 바와 같이, 이들 캐시 구현은 보다 많거나 적은 수의 웨이와의 연관성으로 일반화 될 수 있다. (A)에 개시된 캐시는 어드레스 태그(AT) 어레이(810) 및 데이터 어레이(815)를 포함할 수 있다. 캐시에 대한 액세스 요청에서 INDEX 함수는 요청된 캐시 라인이 존재할 수 있는 하나의 세트를 선택한다. 어드레스 태그들(811 및 812)은 요청된 어드레스와 비교되어 데이터 어레이(816 및 817) 내 각각의 캐시 라인이 요청된 캐시 라인을 저장하는지 여부를 결정한다. 요청된 어드레스와 일치하는 태그가 없는 경우 캐시 미스가 결정된다.
(A)의 캐시는 상술한 단순화된 예시와 같이 캐시 라인 압축 스키마를 활용할 수 없다. 각 캐시라인은 두 세트의 캐시 라인만을 저장할 수 있기 때문이다. 도 8의 (B) 캐시는 캐시 압축으로부터 이익을 얻을 수 있는 설계를 도시한다. 각 세트는 현재 데이터 배열에 세트 당 두 개의 비 압축 캐시 라인을 보유하고 있으나, 해당 태그 배열은 세트 당 8개의 태그를 보유하도록 설계된다. 각 태그는 다소 크고(약 30-40 비트) 보통 비트 당 더 많은 영역을 사용하기 때문에 (B) 캐시에서처럼 압축된 캐시 라인이 거의 없는 응용 프로그램의 경우 상당히 비싼 솔루션이다. 도 8을 참조하면, 2개의 비 압축 캐시 라인(826 및 827)이 데이터 어레이(825)에 도시되어 있다. 태그 어레이 내의 각 비 압축 캐시 라인의 시작에 대응하는 어드레스 태그들(821 및 822)만이 대응하는 어드레스 태그를 유지하도록 초기화된다. 세트의 나머지 6개 어드레스 태그는 유효하지 않은 것으로 표시된다. 따라서, 캐시 (B)는 동일한 수의 비 압축 캐시 라인을 저장하기 위해 (A) 캐시보다 4배 많은 어드레스 태그 용량이 필요하다.
그러나, 도 8에 도시된 캐시 계층 구조가 압축 가능한 캐시 라인이 많은 응용 프로그램 실행에 사용되면, (C)의 캐시가 사용될 수 있다. 여기서, 압축도 4를 지원하는 압축 방식, 즉 압축된 캐시 라인을 비 압축 캐시 라인 크기의 25%, 50% 또는 75%로 나타낼 수 있다고 가정한다. (압축도 8은 압축되지 않은 크기의 12.5%까지 캐시 라인을 압축할 수 있다.) 모든 캐시 라인이 비 압축 캐시 라인 크기의 25%로 압축되면, 각 세트는 8개의 압축된 캐시 라인을 보유할 수 있다. 그 상황에서, 태그 어레이(830)의 어드레스 태그들 각각은 유효할 것이고 각각 하나의 압축된 캐시 라인에 대응할 것이다.
(C)의 캐시는 대신 25%, 50% 또는 100%의 압축도가 혼합된 캐시 라인을 저장하는 것으로 표시된다. 총 4개의 캐시 라인(836, 837, 838 및 839)이 세트에 포함된다. 이용될 수 없는, 즉, 조각화(fragmentation)로 알려진 캐시 라인(837 및 838) 사이의 갭으로 보여지는 캐시 세트의 일부가 존재한다. 4개의 캐시 라인 각각은 대응하는 유효한 어드레스 태그(831, 832, 833 및 834)를 가지며, 이는 시작 포인트와 정렬된다. 나머지 어드레스 태그는 사용되지 않고 유효하지 않은 것으로 표시된다. 이는 (A) 캐시와 (B) 캐시에 비해 세트의 캐시 라인 수가 두 배 늘어난 이러한 유익한 압축 스키마에서도 어드레스 태그의 절반이 여전히 사용되지 않고 정적 전력 및 면적에 기여할 것임을 의미한다. (요청된 어드레스와 비교될 가능성이 있으므로 동적 전력도 마찬가지일 수 있다.)
도 9는 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따라 태그리스 캐시 시스템을 간략하게 표현하는 블록도이다. 도 9는 도 4-7에 도시된 태그리그 기술의 일부를 이용하는 캐시 시스템을 도시한다. 본 예시에서는 CLB-1(911) 및 CLB-2(912)의 두 가지 레벨이 포함된다. 비록 CLB들이 도 9에서 다이렉트-매핑 구조(1-웨이)로 도시되어 있으나, 이들의 구현은 전형적으로 보다 높은 수준의 세트-연관성 또는 스큐된(skewed) 연관성 조직을 갖는다. 각각의 캐시 위치 엔트리(CLE)는 하나의 어드레스 태그, 및 캐시 레벨 L1(901), L2(902) 및 L3(903) 중 어느 하나에 위치하는 캐시 라인을 가리키는 임의 개수의 위치 정보(LI) 포인터를 가질 수 있다. 상술하였듯이 각 LI는, '캐시 레벨의 수의 로그 베이스 2 + 이들의 연관성의 로그 베이스 2 + 소정의 "심볼"을 위한 공간의 로그 베이스 2' 에 대응하는 다수의 비트에 의해 인코딩 될 수 있다(예컨대, log2(levels) + log2(ways) + 1). 레벨의 수와 웨이의 수에 대해 2의 2승을 가정하고, "MEM" 및 "모름"과 같은 더 많은 "심볼"을 인코딩 해야 한다. 각 레벨마다 16 웨이 연관 캐시가 있는 3 레벨 캐시 계층 구조를 가정하면, 7비트의 LI로도 "MEM" 및 "모름"을 인코딩하는 "심볼"에 대한 인코딩을 포함하기에 충분하다.
단순화를 위해, 도 9의 계층 구조에서 3 레벨의 캐시 각각은, 압축되지 않은 캐시 라인을 저장하는 2-웨이 연관 캐시(two-way associative cache)인 것으로 도시된다. 도 9는 3개의 L1 포인터(931, 932, 933)가 각각 캐시 레벨 L1(901), L2(902) 및 L3(903)에서 각각 대응하는 캐시 라인의 시작을 가리키는 방법을 도시한다.
도 10은 본 개시의 기술적 사상에 따른 적어도 하 나의 예시적 실시 예에 따라 압축된 데이터 저장 및 취급을 위한 효율적 지원을 갖는 태그리스 캐시 시스템의 단순화된 표현을 나타내는 블록도이다. 도 10은 비 압축 캐시 라인을 저장함에 있어 도 9와 동일한 능력(capability)을 갖는 캐시 계층 구조를 도시한다(본 예시에서, 세트당 2개의 캐시 라인). 본 개시의 기술적 사상에 따른 일부 실시 예에 따르면, 압축된 캐시 라인은 특정 압축 정도, 예를 들어 도 10에 도시된 바와 같은 압축도 4로 저장될 수 있다. 각 LI 포인터(1031, 1032, 1033)는 3개의 캐시 레벨들(1001, 1002 및 1003) 각각에서 압축된 캐시 라인의 시작을 지시한다. 이는 LI 인코딩이 각 캐시 세트에서 최대 4개의 위치를 식별할 수 있어야 함을 의미한다. 도 8의 캐시를 압축도 4를 지원하는 캐시로 전환하는 비용은 선형 비용을 의미하나, 세트 당 3개의 어드레스 태그로부터 세트 당 8개의 어드레스 태그로 진행하는데, 여기서 각 어드레스 태그는 30-40비트이고, 도 10에서 동일한 압 축 정도를 지원하는 비용은 대수적이며, LI 크기를 2비트씩 증가시킨다(예: 6에서 8). 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, 임의의 압축도 D의 압축된 캐시 라인을 지원하기 때문에, 압축을 지원하지 않는 시스템과 비교하여 필요한 여분의 비트 수는 log2(D)이다. 일 예로, 각각의 LI를 인코딩하는 비트들의 수는 log2(ways + levels + 1) 에서 log2(ways + level + compression_degree + 1)로 간다.
본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, LI는 LI가 가리키는 압축된 캐시 라인의 크기를 인코딩하도록 더 확장된다. 가장 높은 압축도 D를 갖는 시스템의 경우, 추가로 log2(D) 비트가 더해진다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, 이는 LI 비트 카운트를 log2(ways + level +
Figure pat00001
+ 1)로 만든다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, LI는 압축 유형을 인코딩하도록, 즉 캐시라인을 압축 해제하기 위한 압축 해제 방법을 추가로 확장한다. 따라서, 본 개시의 기술적 사상에 따른 적어도 일부 실시 예는 LI가 비 압축 데이터 유닛의 크기보다 미세한 입도(granularity)를 갖는 데이터 위치를 식별할 수 있게 한다.
도 8에 도시된 시스템 (C)와 반대로, 도 10의 하드웨어에 압축 정도가 동일한 방식으로 내장될 필요는 없다. 도 8의 시스템 (A)에서 시스템 (C)로 가는데 필요한 변경과 유사한 구조적 변화는 없다.
도 10은 또 다른 압축 특징, 즉 1034에 의해 도시된 바와 같이 LI에 의해 인코딩 된 심볼 "제로(ZERO)"를 개시한다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, 심볼 제로(ZERO)를 저장하는 LI는, LI에 의해 참조되는 전체 캐시 라인이 제로 값을 저장함을 의미한다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, LI가 심볼 제로(ZERO)를 포함한다면, 캐시들 중 어느 하나에서 대응하는 캐시 라인을 위해 할당된 공간이 없다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, 코어가 심볼 제로(ZERO)를 저장하는 CLB-1에 대응하는 LI를 갖는 캐시 라인으로부터 워드를 판독하면, 캐시 계층 구조는 값 "0"을 코어로 리턴할 것이나, 이를 달성하기 위해 캐시 라인이 계층에 할당되거나 이동되지 않는다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, 캐시 라인이 심볼을 0으로 저장하는 CLB-1에 대응하는 LI를 갖는 캐시 라인에 워드를 저장하려고 시도 할 때, 0(제로)으로 채워진 캐시 라인은 L1 캐시에 할당될 것이고, 최종적으로 그것에 대한 쓰기 권한이 주어질 것이다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, LI는 마스터 캐시 라인이 L1 캐시에 저장된다는 사실을 반영하도록 업데이트 될 것이다.
다중 프로세서 시스템에서, 물리적 어드레스에 대응하는 캐시 라인은 몇몇 CLB-1에서 연관된 LI를 가질 수 있다. 이 경우, 상기 LI들 모두는 심볼 제로(ZERO)를 가리키거나, 상기 LI들 모두는 심볼 제로(ZERO)를 가리키지 않을 수 있다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, 하나의 코어가 ZERO LI 포인터에서 L1(도 6 및 도 7에 상술된 구성과 유사한 캐시 코히런스 프로토콜)의 0으로 채우고 쓸 수 있는 캐시 라인으로의 캐시 라인 전환을 허용하기 전에, 동일한 물리적 캐시 라인과 관련된 다른 LI = ZERO 포인터가 변경되었는지 여부를 확인해야 한다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, 이들 다른 LI = ZERO 포인터는 무효 상태의 코히런스 상태에 대응하는 표현으로 변경되어야 한다. 본 개시의 기술적 사상에 따른 적어도 하나의 예씨적 실시 예에 따르면, 상기 변경은 도 6 및 도 7에서 논의된 프로토콜을 준수해야 하고, 상기 다른 LI=ZERO 포인터들은 새로운 '제로로 채워진(zero-filled)' 기입 가능 캐시 라인을 저장하는 L1 위치를 가리키도록 변경되어야 한다.
실제로, 많은 캐시 라인은 "0"값을 포함한다. 새로운 메모리 영역이 런타임 시스템에 할당될 때마다 전체 메모리 영역은 "0"값을 유지하도록 초기화된다. 이것은 일반적으로 새롭게 할당된 가상 페이지를 특별한 물리적 페이지, 즉 제로 페이지로 지정함으로써 달성된다. 종래의 캐시 시스템에서, 제로 페이지는 "0"값을 저장하는 캐시 라인만을 포함한다. 페이지를 읽는 코어는 "0"값을 리턴한다. 이는 전통적으로 계층 구조에서 "0"을 포함하는 캐시 라인을 할당하도 이동함으로써 성취된다. 코어가 제로 페이지에 매핑하는 페이지에 처음으로 기록하려고 하면, 트랩이 생성되고, "0" 캐시 라인만 저장하도록 새로운 물리적 페이지가 할당 및 초기화되며, 가상 페이지의 매핑은 새로운 물리적 페이지를 가리키도록 변경된다.
본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, 제로 페이지는 모든 LI가 제로(ZERO) 값을 저장하는 페이지로 표시된다. 제로 페이지에 대한 판독 시도는 캐시 계층 구조 또는 임의의 캐시 라인 움직임에서 어떠한 캐시 라인 할당도 야기하지 않는다. 대신, 제로 페이지를 읽는 코어는 "0"값을 리턴한다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, 제로 페이지에 대한 기입 시도에서, 트랩이 생성되고, 액세스 된 가상 페이지(제로 페이지에 매핑)와 연관된 CLB-1 영역은 그들의 새로운 물리적 어드레스와 대신 연관될 것이다. 이는 예를 들어 RI(413, 633 또는 733)과 같이 각 CLE(또는 영역(region)으로도 명명됨)와 관련된 영역별 물리적 어드레스 필드를 변경하여 수행할 수 있다. 이러한 스킴은 계층 구조의 캐시 용량을 보다 효율적으로 사용하고(LI=ZERO 캐시 라인을 위해 할당된 캐시 라인이 없음), 시스템의 대역폭을 덜 소비하며("0"값을 포함하는 캐시 라인의 움직임이 적음), 불필요한 CPU 작업(예를 들어,"0"값을 새로운 캐시 라인에 복사)을 방지한다.
본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, LI는 "0" 이외의 다른 기 정의된 값, 예를 들어 "1" 값 및 캐시 라인의 모든 비트에 "1"의 이진 값을 저장하는 값을 인코딩 할 수 있다. 당업자는 임의의 값이 상기 방식으로 표현되도록 선택될 수 있고, 선택된 값이 실행 중에 동적으로 선택될 수 있다는 것을 이해할 것이다.
상기 도면들(예를 들어, 도 8-10)로서 기술된 단계들은 다양한 순서로 수행될 수 있고, 일부 단계는 병렬로, 또는 순차적으로 수행될 수 있다. 본 개시의 기술적 사상에 따른 적어도 일부 실시 예는 다양한 유익한 결과를 제공할 수 있다. 예를 들어, 본 개시의 기술적 사상에 따른 적어도 일부 예시적 실시 예에 따라 수행된 상세한 시뮬레이션 연구는, 본 개시의 기술적 사상에 따른 캐시 구현이 종래 캐시 시스템과 비교하여 상당한 에너지를 절약할 수 있고 캐시 액세스 시간이 상당히 짧아짐을 보여준다.
명료함을 위해, 본 명세서의 대부분의 설명은 일반적으로 캐시 라인이 위치하는 방법 및 요구하는 CPU로 캐시 라인이 리턴되는 기술을 상술한다. 상기 설명은 캐시 라인에 포함된 요청 워드가 선택되어 CPU로 리턴되는 다양한 방법을 자세히 설명하지는 않는다. 그러나, 캐시 라인 내에 포함된 요청 워드를 선택하고, CPU로 요청된 캐시 라인을 리턴시키는 다양한 방법은 당업자에게 공지되어 있다.
명료함을 위해, 본 명세서에서 캐시 계층 구조의 데이터 처리를 기술하는 대부분의 설명은 배타적 캐시 계층 구조를 기반하여 상술된다. 당업자는 본 개시의 기술적 사상에 따른 하나 이상의 예시적 실시 예들이 포괄적 메모리 계층 구조 및 비 배타적 메모리 계층 구조를 또한 커버하도록 확장될 수 있음을 이해할 것이다.
전술한 본 개시의 기술적 사상에 따른 실시 예들 중 하나 이상이 각각 도 1 및 도 2와 관련하여 도시되고 설명된 바와 같이, 단일 프로세서 시스템 및 다중 프로세서 시스템과 관련하여 유용하나, 본 개시의 기술적 사상에 따른 예시적 실시 예들은 주로 유니 프로세서 시스템(uni-processor system)과 관련하여 설명된다. 그러나, 당업자는 단일 프로세서 시스템과 관련하여 예시된 본 개시의 기술적 사상에 따른 하나 이상의 예시적 실시 예가 그러한 구현으로 제한되지 않음을 이해할 것이다. 소정의 예시적인 컴퓨터 아키텍처와 관련하여 위에서 설명되었으나, 캐싱은 도 8 내지 도 10에 도시된 예시적 컴퓨터 시스템 내부뿐만 아니라 외부의 많은 다른 설정에도 존재하며, 당업자는 컴퓨터 시스템의 컨텍스트 내에서 전술한 본 개시의 기술적 사상에 따른 일부 예시적 실시 예가 이러한 다른 컨텍스트에도 적용될 수 있음을 이해할 것이다. 이러한 용도의 예로는 디스크 또는 플래시 메모리와 같은 저속 대용량 저장 장치의 데이터를 DRAM을 사용하여 구현할 수 있는 더 빠르고 작은 대용량 메모리로 캐시하는 가상 메모리 시스템이 있다. 컴퓨터 시스템에서의 캐싱의 다른 비제한적 예시로는, 디스크 캐싱(disk caching), 웹 캐싱(web caching) 및 네임 캐싱(name caching)이 있다. 상기 캐시들의 구성 및 캐싱 메커니즘은, 상술된 캐시들의 구성 및 캐싱 메커니즘들, 예를 들어, 세트의 크기, 세트들의 구현 및 연관성 등과 다를 수 있다. 캐싱 메커니즘 그 자체의 구현에 관계없이, 본 개시의 기술적 사상에 따른 적어도 일부 실시 예들은 다양한 캐싱 방식을 구현하는데 적용 가능하다.
본 출원에 제공된 방법 또는 순서도는 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 컴퓨터 판독 가능 저장 매체에 유형적으로 구체화된 컴퓨터 프로그램, 소프트웨어 또는 펌웨어로 구현될 수 있다.
본 개시의 기술적 사상에 따른 예시적 실시 예가 상술되었으나, 동일한 방식이 많은 방법으로 변형될 수 있음은 명백할 것이다. 그러한 변형은 본 개시의 기술적 사상에 따른 예시적 실시 예의 의도된 사상 및 범위로부터 벗어나는 것으로 간주되어서는 아니되며, 당업자에게 자명한 그러한 모든 변형은 다음의 청구항의 범위 내에 포함되는 것으로 의도된다.

Claims (20)

  1. 복수의 노드들 및 하나 이상의 메모리를 포함하고, 상기 노드들 각각은 적어도 하나의 프로세서, 각 노드에 전용인 제1 캐시, 상기 제1 캐시보다 높은 레벨에 있는 제2 캐시 및 각 노드에 전용인 캐시 위치 버퍼(Cache Location Buffer, CLB)를 포함하고,
    상기 복수의 노드들 중 적어도 하나의 노드에 대해,
    상기 적어도 하나의 노드에 포함된 상기 제1 캐시 및 상기 제2 캐시 중 적어도 하나는 가변 크기의 압축 데이터 유닛을 저장할 수 있는 적어도 하나의 캐시 위치를 포함하고,
    적어도 하나의 노드에 포함된 캐시 위치 버퍼는 복수의 캐시 위치 버퍼 엔트리를 저장하도록 구성되고, 캐시 위치 버퍼 엔트리 각각은 복수의 위치 정보 값을 포함하고, 각각의 위치 정보 값은 각각의 데이터 유닛과 관련된 위치의 시작을 가리키고,
    상기 각각의 위치 정보 값은, 상기 적어도 하나의 노드에 포함된 제1 캐시 내의 위치, 상기 적어도 하나의 노드에 포함된 제2 캐시 내의 위치 또는 상기 하나 이상의 메모리의 위치를 가리키고,
    상기 복수의 위치 정보 값들 중 적어도 하나는 비 압축 데이터 유닛의 크기보다 미세한 입도(granularity) 각각의 데이터 유닛에 대응하는 위치를 식별하는 멀티 프로세서 시스템.
  2. 제1 항에 있어서,
    상기 복수의 위치 정보 값들 중 적어도 하나의 위치 정보 값은,
    상기 적어도 하나의 위치 정보 값이 가리키는 압축 데이터 유닛의 크기를 부호화하는 것을 특징으로 하는 멀티 프로세서 시스템.
  3. 제1 항에 있어서,
    상기 복수의 위치 정보 값들 중 적어도 하나의 위치 정보 값은,
    상기 적어도 하나의 위치 정보 값이 가리키는 압축 데이터 유닛의 압축 타입을 부호화하는 것을 특징으로 하는 멀티 프로세서 시스템.
  4. 제1 항에 있어서,
    상기 복수의 위치 정보 값들 중 적어도 하나의 위치 정보 값은,
    데이터 유닛이 제1 값을 저장함을 나타내는 심볼(symbol)을 부호화하는 것을 특징으로 하는 멀티 프로세서 시스템.
  5. 제4 항에 있어서,
    상기 적어도 하나의 프로세서가 상기 심볼을 부호화하는 상기 적어도 하나의 위치 정보 값에 의해 지시된 데이터 유닛에 대한 판독 동작을 수행함에 응답하여, 상기 제1 값은 상기 적어도 하나의 프로세서로 리턴되는 것을 특징으로 하는 멀티 프로세서 시스템.
  6. 제5 항에 있어서,
    상기 판독 동작에 응답하여, 상기 적어도 하나의 노드에 포함된 상기 제1 및 제2 캐시에서 상기 제1 값에 대한 어떠한 위치도 할당되지 않거나 또는 상기 제1 및 제2 캐시에서 상기 제1 값이 이동되지 않는 것을 특징으로 하는 멀티 프로세서 시스템.
  7. 제4 항에 있어서,
    상기 제1 값은 "0"인 것을 특징으로 하는 멀티 프로세서 시스템.
  8. 제4 항에 있어서,
    상기 제1 값은 "1"인 것을 특징으로 하는 멀티 프로세서 시스템.
  9. 멀티 프로세서 시스템의 복수의 노드들로서, 상기 복수의 노드들 각각은 하나 이상의 프로세서, 상기 각 노드에 전용인 하나 이상의 전용 캐시(private cache) 및 상기 각 노드에 전용인 하나 이상의 캐시 위치 버퍼(CLB)를 포함하고, 상기 하나 이상의 전용 캐시에 데이터 유닛을 저장하는 단계;
    상기 멀티 프로세서 시스템의 노드들 중 적어도 하나의 노드에 대해, 상기 하나 이상의 캐시 위치 버퍼에 복수의 위치 정보 값들을 저장하는 단계로서, 상기 위치 정보 값들 각각은 데이터 유닛과 연관된 위치를 나타내고, 상기 각 위치 정보 값은 상기 데이터 유닛 각각과 연관되는 위치로서, 상기 적어도 하나의 전용 캐시 내의 위치, 상기 복수의 노드들 중 하나의 노드 내의 위치, 또는 메인 메모리 내의 위치를 가리키는, 단계; 및
    상기 복수의 위치 정보 값들 중 적어도 하나의 위치 정보 값을, 데이터 유닛이 제1 값을 저장함을 나타내는 심볼로 부호화하는 단계를 포함하는 데이터 관리 방법.
  10. 제9 항에 있어서,
    상기 하나 이상의 전용 캐시에 데이터 유닛을 저장하는 단계는,
    상기 전용 캐시에 제공된 적어도 하나의 캐시 위치에 가변 크기의 압축된 데이터 유닛 및 비 압축된 데이터 유닛 중 적어도 하나를 저장하는 단계를 포함하는 것을 특징으로 하는 데이터 관리 방법.
  11. 제10 항에 있어서,
    상기 하나 이상의 캐시 위치 버퍼에 저장된 상기 복수의 위치 정보 값들 중 적어도 하나의 위치 정보에 기반하여, 상기 비 압축 데이터의 크기보다 미세한 입도로 각 데이터 유닛에 대응하는 위치를 식별하는 단계를 더 포함하는 데이터 관리 방법.
  12. 제10 항에 있어서,
    상기 복수의 위치 정보 값들 중 적어도 하나의 위치 정보 값을 상기 압축된 데이터 유닛의 크기로 부호화하는 단계를 더 포함하는 데이터 관리 방법.
  13. 제10 항에 있어서,
    상기 복수의 위치 정보 값들 중 적어도 하나의 위치 정보 값을 상기 압축 데이터 유닛의 압축 방식으로 부호화하는 단계를 더 포함하는 데이터 관리 방법.
  14. 제9 항에 있어서,
    상기 하나 이상의 프로세서로서, 상기 심볼로 부호화 된 적어도 하나의 위치 정보 값에 의해 지시된 데이터 유닛에 대해 판독 동작을 수행하는 단계; 및
    상기 프로세서로 상기 제1 값을 리턴하는 단계를 더 포함하는 데이터 관리 방법.
  15. 제14 항에 있어서,
    상기 프로세서로 상기 제1 값을 리턴하는 단계는,
    상기 적어도 하나의 노드에 포함된 상기 적어도 하나의 전용 캐시에서 상기 제1 값에 대한 위치를 할당하지 않고 상기 제1 값을 리턴하는 단계를 포함하는 것을 특징으로 하는 데이터 관리 방법.
  16. 제9 항에 있어서,
    상기 제1 값은 "0"인 것을 특징으로 하는 데이터 관리 방법.
  17. 프로세스를 수행하기 위해 컴퓨터에 의해 실행되는 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체로서, 상기 프로세스는,
    글로벌 캐시들, 메모리 및 복수의 노드들에 구비된 복수의 전용 캐시들에 데이터 유닛을 저장하는 단계로서, 상기 노드들 각각은 하나 이상의 프로세서 및 각 노드에 전용인 하나 이상의 전용 캐시를 포함하는, 단계;
    상기 복수의 노드들은 네트워크를 통해 접속되고, 상기 복수의 노드들 중 적어도 하나의 노드에 대하여,
    상기 적어도 하나의 노드에 전용인 캐시 위치 버퍼에 복수의 위치 정보 값들을 저장하는 단계; 및
    상기 데이터 유닛이 제1 값을 저장함을 나타내는 심볼과 함께 상기 복수의 위치 정보 값들 중 적어도 하나의 위치 정보 값을 부호화하는 단계를 포함하는 컴퓨터 판독 가능한 기록 매체.
  18. 제17 항에 있어서,
    상기 프로세스는,
    상기 심볼로 부호화된 위치 정보 값에 의해 지시된 데이터 유닛에 대한 판독 동작을 수행하는 단계; 및
    상기 적어도 하나의 노드에 포함된 상기 적어도 하나의 프로세서로, 상기 제1 값을 위한 위치를 상기 전용 캐시에 할당하지 않으며 상기 제1 값을 리턴하는 단계를 더 포함하는 컴퓨터 판독 가능한 기록 매체.
  19. 제18 항에 있어서,
    상기 프로세스는,
    상기 적어도 하나의 노드에 포함된 상기 전용 캐시에 제공된 적어도 하나의 캐시 위치에 가변 크기의 압축 데이터 유닛 및 비 압축 데이터 유닛 중 적어도 하나를 저장하는 단계; 및
    상기 비 압축 데이터 유닛의 크기보다 미세한 입도로, 상기 복수의 위치 정보 값들 중 적어도 하나의 위치 정보 값에 기초하여 각각의 데이터 유닛에 대응하는 위치를 식별하는 단계를 더 포함하는 컴퓨터 판독 가능한 기록 매체.
  20. 제19 항에 있어서,
    상기 프로세스는,
    상기 복수의 위치 정보 값들 중 적어도 하나의 위치 정보 값을 상기 압축 데이터 유닛의 크기로 부호화하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 판독 가능한 기록 매체.
KR1020180141960A 2017-11-20 2018-11-16 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법 KR102157354B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201762588717P 2017-11-20 2017-11-20
US62/588,717 2017-11-20

Publications (2)

Publication Number Publication Date
KR20190058318A true KR20190058318A (ko) 2019-05-29
KR102157354B1 KR102157354B1 (ko) 2020-09-17

Family

ID=64402025

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180141960A KR102157354B1 (ko) 2017-11-20 2018-11-16 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법

Country Status (5)

Country Link
US (1) US10866891B2 (ko)
EP (1) EP3486784B1 (ko)
KR (1) KR102157354B1 (ko)
CN (1) CN109815165A (ko)
TW (1) TWI800560B (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10831669B2 (en) * 2018-12-03 2020-11-10 International Business Machines Corporation Systems, methods and computer program products using multi-tag storage for efficient data compression in caches
US20210191865A1 (en) * 2019-12-20 2021-06-24 Advanced Micro Devices, Inc. Zero value memory compression
CN111143244B (zh) * 2019-12-30 2022-11-15 海光信息技术股份有限公司 计算机设备的内存访问方法和计算机设备
US11262938B2 (en) * 2020-05-05 2022-03-01 Silicon Motion, Inc. Method and apparatus for performing access management of a memory device with aid of dedicated bit information
CN112953853A (zh) * 2021-02-05 2021-06-11 井芯微电子技术(天津)有限公司 共享缓存系统及方法、电子设备及存储介质
US11573899B1 (en) 2021-10-21 2023-02-07 International Business Machines Corporation Transparent interleaving of compressed cache lines
GB2614069A (en) * 2021-12-21 2023-06-28 Advanced Risc Mach Ltd Cache systems
GB2614073B (en) * 2021-12-21 2024-06-05 Advanced Risc Mach Ltd Cache systems
GB2614071A (en) * 2021-12-21 2023-06-28 Advanced Risc Mach Ltd Cache systems
US20230359556A1 (en) * 2022-05-03 2023-11-09 Advanced Micro Devices, Inc. Performing Operations for Handling Data using Processor in Memory Circuitry in a High Bandwidth Memory

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060047916A1 (en) * 2004-08-31 2006-03-02 Zhiwei Ying Compressing data in a cache memory
US20110271055A1 (en) * 2010-04-29 2011-11-03 O'connor James Michael System and method for low-latency data compression/decompression
US20130332652A1 (en) * 2012-06-11 2013-12-12 Hitachi, Ltd. Computer system and method for controlling computer system
KR20140047916A (ko) * 2012-10-15 2014-04-23 삼성전자주식회사 데이터 압축 장치 및 방법, 데이터 압축 장치를 포함하는 메모리 시스템
US20150347297A1 (en) * 2014-05-29 2015-12-03 Green Cache AB Systems and methods for implementing a tag-less shared cache and a larger backing cache
US20150372910A1 (en) * 2014-06-20 2015-12-24 Niara, Inc. System, Apparatus and Method for Managing Redundancy Elimination in Packet Storage During Observation of Data Movement
US20160170878A1 (en) * 2014-12-16 2016-06-16 Sanjeev N. Trika Apparatus, system and method for caching compressed data
WO2017077502A1 (en) * 2015-11-04 2017-05-11 Green Cache AB Systems and methods for implementing coherent memory in a multiprocessor system
US20170255561A1 (en) * 2016-03-07 2017-09-07 Intel Corporation Technologies for increasing associativity of a direct-mapped cache using compression

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304924B2 (en) * 2012-08-17 2016-04-05 Futurewei Technologies, Inc. Cache coherent handshake protocol for in-order and out-of-order networks
TW201423402A (zh) * 2012-12-12 2014-06-16 Paneve Llc 通用目的數位資料處理器、系統及方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060047916A1 (en) * 2004-08-31 2006-03-02 Zhiwei Ying Compressing data in a cache memory
US20110271055A1 (en) * 2010-04-29 2011-11-03 O'connor James Michael System and method for low-latency data compression/decompression
US20130332652A1 (en) * 2012-06-11 2013-12-12 Hitachi, Ltd. Computer system and method for controlling computer system
KR20140047916A (ko) * 2012-10-15 2014-04-23 삼성전자주식회사 데이터 압축 장치 및 방법, 데이터 압축 장치를 포함하는 메모리 시스템
US20150347297A1 (en) * 2014-05-29 2015-12-03 Green Cache AB Systems and methods for implementing a tag-less shared cache and a larger backing cache
US20150372910A1 (en) * 2014-06-20 2015-12-24 Niara, Inc. System, Apparatus and Method for Managing Redundancy Elimination in Packet Storage During Observation of Data Movement
US20160170878A1 (en) * 2014-12-16 2016-06-16 Sanjeev N. Trika Apparatus, system and method for caching compressed data
WO2017077502A1 (en) * 2015-11-04 2017-05-11 Green Cache AB Systems and methods for implementing coherent memory in a multiprocessor system
US20170255561A1 (en) * 2016-03-07 2017-09-07 Intel Corporation Technologies for increasing associativity of a direct-mapped cache using compression

Also Published As

Publication number Publication date
EP3486784B1 (en) 2020-11-18
TW201937372A (zh) 2019-09-16
US20190155731A1 (en) 2019-05-23
CN109815165A (zh) 2019-05-28
KR102157354B1 (ko) 2020-09-17
EP3486784A1 (en) 2019-05-22
TWI800560B (zh) 2023-05-01
US10866891B2 (en) 2020-12-15

Similar Documents

Publication Publication Date Title
KR102157354B1 (ko) 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법
TWI784084B (zh) 資料管理方法、多處理器系統以及非暫態電腦可讀取儲存媒體
US11615026B2 (en) Systems and methods for implementing coherent memory in a multiprocessor system
US10031849B2 (en) Tracking alternative cacheline placement locations in a cache hierarchy
EP3486786B1 (en) System and methods for efficient virtually-tagged cache implementation
US11354242B2 (en) Efficient early ordering mechanism
EP3486787B1 (en) Systems and methods for tag-less buffer implementation

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