KR102151180B1 - 효율적인 가상 캐시 구현을 위한 시스템 및 방법 - Google Patents

효율적인 가상 캐시 구현을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102151180B1
KR102151180B1 KR1020180141959A KR20180141959A KR102151180B1 KR 102151180 B1 KR102151180 B1 KR 102151180B1 KR 1020180141959 A KR1020180141959 A KR 1020180141959A KR 20180141959 A KR20180141959 A KR 20180141959A KR 102151180 B1 KR102151180 B1 KR 102151180B1
Authority
KR
South Korea
Prior art keywords
cache
cache line
location
line
data
Prior art date
Application number
KR1020180141959A
Other languages
English (en)
Other versions
KR20190058317A (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 KR20190058317A publication Critical patent/KR20190058317A/ko
Application granted granted Critical
Publication of KR102151180B1 publication Critical patent/KR102151180B1/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
    • 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/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/0871Allocation or management of cache space
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/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

Abstract

본 개시의 기술적 사상에 따른 멀티 프로세서 시스템은, 각각이 적어도 하나의 프로세서를 포함하는 복수의 노드들 및 하나 이상의 메모리; 상기 복수의 노드들 중 적어도 하나의 노드에 대해 전용이고, 복수의 제1 캐시 라인들을 저장하도록 구성된 제1 캐시; 및 상기 제1 캐시보다 상위 레벨에 있으며, 복수의 제2 캐시 라인들을 저장하도록 구성된 제2 캐시를 포함하고, 상기 제1 캐시 라인들 중 적어도 하나는 상기 제2 캐시 라인 중 하나의 위치를 가리키는 제1 연관 포인터를 포함하고, 상기 제2 캐시 라인들 중 적어도 하나는 상기 제1 캐시 라인 중 하나의 위치를 가리키는 제2 연관 포인터를 포함하는 것을 특징으로 할 수 있다.

Description

효율적인 가상 캐시 구현을 위한 시스템 및 방법{SYSTEM AND METHODS FOR EFFICIENT VIRTUALLY-TAGGED CACHE IMPLEMENTATION}
본 개시의 기술적 사상에 대한 적어도 일부 실시 예는, 일반적으로 컴퓨터 메모리 장치에서 데이터에 액세스하는 방법 및 시스템에 관한 것으로, 보다 상세하게는, 코히런트(coherent) 캐시 계층을 구현하기 위한 메커니즘 및 기술에 관한 것이다.
오늘날의 프로세서는 종종 대용량 메모리(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)을 일관성있게 유지하는 메커니즘이 요구된다.
도 5는 높은 레벨에서 세 가지 캐시 구현 옵션을 도시한다. 상기 L1 캐시(307)에서 데이터를 찾는 기능은 PIPT 캐시(500)에 의해 기술된다. 가상 어드레스(VA)(502)의 일부는 L1 캐시(505)에 액세스하는데 사용되는 INDEX(504)를 형성하는데 부분적으로 사용되는 물리적 페이지 프레임(physical page frame, PPF)을 얻기 위해 TLB(503)에서 검색을 수행하는 데 사용된다. 물리적 페이지 프레임(PPF)의 다른 일부는 INDEX 함수(504)에 의해 식별된 L1(505)의 세트(도시된 2-웨이 연관 캐시)의 물리적 어드레스 태그(PAT)와 비교된다. 비교 결과는 CPU 코어(501)에 의해 액세스 된 가상 어드레스(VA)(502)와 연관된 데이터(DATA)를 선택하는데 사용된다.
VIPT 캐시(510)는 CPU 어드레스에 의해 생성된 가상 어드레스(512)와 연관된 데이터에 더 빠른 액세스 시간을 제공할 수 있는데, 그 이유는 가상 어드레스 비트가 INDEX 함수(514)를 형성하는데 사용되기 때문이다. 대응하는 물리적 페이지 프레임(PPF)을 찾는데 사용되는 TLB(513)에서의 검색은 L1 캐시(515)의 인덱스된 세트로부터 2개의 물리적 어드레스 태그(PAT)를 판독하는 것과 병렬로 수행될 수 있다. TLB 액세스가 PAT 검색과 병행하여 수행됨으로써, 가상 어드레스(512)와 관련된 이러한 방식은 PIPT 캐시(500)보다 더 빠르게 액세스 될 수 있다. VIPT 캐시(510)가 실용적일 수 있도록, 그러한 캐시에 크기 제한이 부과되는 경우가 종종있다. 캐시 크기 및 연관성의 조합은, 가상 어드레스(512)가 TLB(513)에 의해 물리적 어드레스로 변환될 때 인덱스 비트(514) 중 어느 것도 변환되어서는 안된다. 예를 들어, 컴퓨터 시스템의 페이지 크기가 4Kb이면 인덱스 기능에 사용되는 비트는 가상 어드레스의 하위 12비트일 수 있다.
도 5의 가장 상위에 도시된 캐시(520)는 가상으로 인덱싱 된 가상 태그 캐시(Virtually Indexed Virtually Tagged cache, VIVT)이다. VIVT 캐시(520)는 가상 어드레스 비트(522)를 인덱스 비트(524)뿐만 아니라 L1 캐시(525)의 인덱스 어드레스 태그와 비교되는 어드레스 비트(523)에 대해서만 사용한다. 이어서, L1 캐시(525)에 저장된 어드레스 태그는 가상 어드레스 비트를 저장하는 가상 어드레스 태그(VAT)이다. VIVT 캐시(520)는 도 5에 도시된 다른 두 캐시에 비해 몇가지 장점을 갖는다. 첫째, L1에 액세스 하기 위한 TLB 변환이 필요치 않음에 따라, 메모리 계층에서 가장 일반적인 액세스 유형인 L1 히트에 대한 에너지를 절약할 수 있다. 둘째, 인덱스 비트(524)가 TLB 검색을 필요치 않음에 따라, PIPT 캐시(500)보다 빠르게 액세스 될 수 있다. 마지막으로, 사이즈 제한이 없다.
다만, VIVT 캐시(520)에는 해결 되어야 할 문제가 있다. 첫째, 동일한 물리적 캐시 라인이 서로 다른 가상 어드레스를 사용하도록 참조될 수 있다. 동일한 물리적 캐시 라인에 대해 여러 개의 가상 복사본을 저장하면 VIVT 캐시(520)의 동의어 문제(synonym problem)가 발생한다. 상기 문제는 일반적으로 두 개 이상의 동의어 캐시 라인이 VIVT 캐시에 동시에 상주할 수 없음을 보장하는 메커니즘을 통해 처리된다. 둘째, 서로 다른 프로세스에서 사용되는 동일한 가상 어드레스가 서로 다른 물리적 캐시 라인을 나타낼 수 있다. 이를 앨리어싱 문제(aliasing problem)라고 한다. 앨리어싱 문제는 CPU 코어(521)에 의해 생성된 가상 어드레스(522)가 종종 어드레스 공간 식별자로 지칭되는 몇몇 프로세스 식별 정보를 포함하면 처리될 수 있다. 셋째, 도 2에 도시된 바와 같이 다수 개의 전용 캐시가 다중 코어 시스템에 존재할 때 문제가 발생할 수 있다. L2 및 레벨 캐시는 종종 PIPT 유형이며 물리적 어드레스를 사용하여 주소 지정된다. 따라서, 이들 L2 캐시 및 L1 캐시 사이 임의의 통신은 전형적으로 물리적 어드레스를 운반한다. 이러한 통신은, 비제한적인 예시로, 코히런스 프로토콜에 의해 생성된 코히런스 요청(일관성 요청) 및 L1 캐시와 L2 캐시 및 상위 레벨 캐시간 부과된 일부 포함 특성으로 이한 소위 백-무효화 요청(back-invalidate requests)를 포함한다. PIPT 캐시와 VIPT 캐시는 물리적 어드레스를 기반으로 캐시 검색을 수행할 수 있고, 이러한 외부 요청을 대상으로 하는 캐시 라인을 찾을 수 있으나, 물리적 어드레스를 사용하여 VIVT 캐시에 액세스할 수는 없다.
배경 정보로서, 도 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 레벨 수가 동일할 필요는 없다.
도 3 및 도 5와 관련된 논의를 요약하면, 당업자라면 캐시 계층 구조의 동시 구현은 요청된 캐시 라인의 위치가 결정될 수 있기 전에 다른 캐시 레벨뿐 아니라 TLB에서 많은 연관 검색이 수행될 것이 요구됨을 알 수 있을 것이다. 또한, 각 변환 엔트리 및 캐시 된 캐시라인은 어드레스 태그를 수반할 필요가 있고, 복수의 이들 태그는 이들 렙레 각각에서 어드레스의 일부와 비교될 필요가 있다. 전반적으로, 이 구현은 각 연관 검색에 사용되는 동적 에너지 측면에서 엄청난 비용이 든다. 또한, 비교를 수행하는 데 필요한 추가 태그 정보를 저장하기 위해 정적 에너지 및 메모리 용량에 상당한 오버 헤드가 필요하다. 또한, 멀티 프로세서는 다수의 CPU들 및 다수의 노드들을 포함하고, 전용 캐시 계층 구조를 가진 이들 각각은, 비공개 캐시에 있는 데이터를 찾는 데 비용이 많이 드는 검색 메커니즘을 필요로 하고 비용이 많이 드는 코히런스 작업을 필요로 하므로 전용 캐시의 동일 데이터 복제본을 일관되게 유지해야 한다.
따라서, 데이터 및 명령에 대한 TLB 검색과 관련된 전술한 문제점 및 결점을 피하는 시스템 및 방법을 제공함이 바람직하다. 특히, 하위 레벨 캐시(예를 들어, L1 캐시)에 있는 데이터와 명령어가 물리적 어드레스 대신 가상 어드레스를 사용하여 액세스 될 수 있다면 장점이 될 수 있다. 데이터 및 명령 하위 캐시의 어드레스 태그에 가상 어드레스 태그가 포함되어 있으면 구현 효율성을 더 높일 수 있다. 이를 통해, 메모리 계층에 대한 메모리 액세스의 가장 일반적 유형인 L1 히트에서, TLB에 의해 부과된 여분의 대기 시간과 에너지 소비가 개선될 수 있다. 이를 달성하기 위해 물리적으로 태그 된 L2 및 상위 레벨 캐시가 사실상 태그가 지정된 L1 캐시와 상호 작용할 수 있는 방법에 대한 솔루션이 요구된다.
본 출원은 2017년 11월 20일자로 출원된 미국 가출원 제62/588,720에 관련되며, 그 개시 내용은 본 명세서에 참고로 이용되어 있다.
본 개시의 기술적 사상은 캐시 계층 구조를 포함하는 시스템 및 이의 동작 방법에 관한 것으로서, 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일 측면에 따른 멀티 프로세서 시스템은, 각각이 적어도 하나의 프로세서를 포함하는 복수의 노드들 및 하나 이상의 메모리; 상기 복수의 노드들 중 적어도 하나의 노드에 대해 전용이고, 복수의 제1 캐시 라인들을 저장하도록 구성된 제1 캐시; 및 상기 제1 캐시보다 상위 레벨에 있으며, 복수의 제2 캐시 라인들을 저장하도록 구성된 제2 캐시를 포함하고, 상기 제1 캐시 라인들 중 적어도 하나는 상기 제2 캐시 라인 중 하나의 위치를 가리키는 제1 연관 포인터를 포함하고, 상기 제2 캐시 라인들 중 적어도 하나는 상기 제1 캐시 라인 중 하나의 위치를 가리키는 제2 연관 포인터를 포함하는 것을 특징으로 할 수 있다.
본 개시의 기술적 사상의 일 측면에 따라 적어도 하나의 노드를 포함하고, 상기 적어도 하나의 노드는 상기 노드에 전용인 제1 캐시, 상기 제1 캐시 보다 높은 레벨의 제2 캐시 및 메모리가 할당되는 프로세서를 포함하고, 상기 제1 캐시는 복수의 제1 캐시 라인들을 저장하고, 상기 제2 캐시는 복수의 제2 캐시 라인들을 저장하는 시스템의 데이터 관리 방법에 있어서, 상기 제1 캐시 라인들 중 하나에, 상기 제2 캐시 라인들 중 하나의 위치를 가리키는 제1 연관 포인터를 저장하는 단계; 및 상기 제1 연관 포인터에 의해 지시된 제2 캐시 라인에 상기 제1 연관 포인터가 저장된 제1 캐시 라인의 위치를 가리키는 제2 연관 포인터를 저장하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일 측면에 따라 가상 태그 된 캐시, 물리적 태그 된 캐시 및 메모리가 할당되는 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 프로세서로 하여금 동작을 수행하게 하는 컴퓨터 실행 가능 명령을 포함하는 비 일시적 컴퓨터 판독 가능 기록 매체로서, 상기 동작은, 상기 가상 태그 된 캐시에 저장된 복수의 제1 캐시 라인들 중 하나에, 상기 물리적으로 태그 된 캐시에 저장된 복수의 제2 캐시 제2 캐시 라인들 중 하나의 위치를 가리키는 제1 연관 포인터를 저장하는 단계; 및 상기 제2 캐시 라인들 중 하나에서, 상기 제1 캐시 라인 중 하나의 위치를 포인팅 하는 제2 연관 포인터를 저장하는 단계를 포함할 수 있다.
본 개시의 기술적 사상에 따른 예시적 실시 예의 상기 특징 및 다른 특징 및 이점은, 첨부된 도면을 참조하여 본 개시의 기술적 사상에 따른 예시적 실시 예를 상세하게 설명함으로써 더욱 명백해질 것이다. 첨부 도면은 본 개시의 기술적 사상에 따른 예시적 실시 예를 도시하기 위한 것이며, 청구 범위의 의도된 범위를 한정하는 것으로 해석되어서는 안된다. 첨부 도면은 명시적으로 언급되지 않는 한, 축척 된 것으로 간주되지 않아야 한다.
도 1은 멀티 프로세서 시스템의 블록도이다.
도 2는 단일 프로세서 시스템 캐시 계층 구조의 블록도이다.
도 3은 세트-연관 캐시 및 세트-연관 데이터 변환 룩어사이드 버퍼로 구성된 2-레벨 캐시 계층의 구현을 도시한다.
도 4는 제1 레벨 CLB가 가상 액세스되고 제2 레벨 CLB가 물리적 액세스되는 2-레벨 태그리스 캐시 계층 구조 및 2-레벨 CLB 계층 구조를 포함하는 실시 예를 도시하는 블록도이다.
도 5는 캐시를 구현하기 위한 3가지 옵션을 도시하는 블록도이다.
도 6은 2-레벨 캐시 계층 구조를 포함하는 실시 예를 도시한 블록도로서, 제1 레벨은 가상으로 인덱싱 된 가상 태그 된 캐시를, 제2 레벨은 물리적으로 인덱싱 된 물리적 태그 된 캐시를 각각 도시한다.
도 7은 3-레벨 캐시 계층 구조를 포함하는 실시 예를 도시하는 블록도로서, 제1 레벨은 가상 인덱싱 된 가상 태그(즉, VIVT 캐시)를, 제2 및 제3 레벨은 태그가 없는 물리적 인덱싱 된 캐시(즉, PINT 캐시)를 도시한다.
도 8은 3-레벨 캐시 계층 구조를 포함하는 실시 예를 도시하는 블록도로서, 제1 레벨은 태그가 없는 가상 인덱싱 된 캐시(즉, VINT 캐시)를, 제2 및 제3 레벨은 태그가 없는 물리적 인덱싱 된 캐시(즉, PINT 캐시)를 도시한다.
본 개시의 실시 예들은 기능 블록들, 유닛들 및/또는 모듈들의 관점에서 도면들에 기술되고 설명된다. 당업자는 이러한 블록들, 유닛들 및/또는 모듈들이 논리 회로, 이산 소자들, 마이크로 프로세서들, 하드-와이어 회로들, 메모리 소자들, 배선 접속들 등과 같은 전자 (또는 광학) 회로들에 의해 물리적으로 구현된다는 것을 이해할 것이다. 이는 반도체 기반 공정 기술 또는 다른 공정 기술을 이용하여 형성될 수 있다. 블록들, 유닛들 및/또는 모듈들이 마이크로 프로세서들 또는 이와 유사한 구성에 의해 구현되는 경우, 이들은 본 명세서에서 논의된 다양한 기능들을 수행하기 위해 소프트웨어(예를 들어, 마이크로 코드)를 사용하여 프로그래밍 될 수 있고 선택적으로 펌웨어 및/또는 소프트웨어에 의해 구동될 수 있다. 대안적으로, 각각의 블록, 유닛 및/또는 모듈은 전용 하드웨어에 의해, 또는 일부 기능을 수행하기 위한 전용 하드웨어 및 다른 기능을 수행하기 위한 프로세서 (예를 들어, 하나 이상의 프로그램 된 마이크로 프로세서 및 관련 회로)의 조합으로서 구현될 수 있다. 또한, 실시 예들의 각각의 블록, 유닛 및/또는 모듈은 본 개시의 기술적 사상들의 범위를 벗어나지 않으면서 물리적으로 2개 이상의 상호 작용하고 이산적인 블록들, 유닛들 및/또는 모듈들로 분리될 수 있다. 또한, 실시 예들의 블록들, 유닛들 및/또는 모듈들은 본 개시의 기술적 사상의 범위를 벗어나지 않으면서 더 복잡한 블록들, 유닛들 및/또는 모듈들로 물리적으로 결합될 수 있다.
가상으로 태그된(virtually-tagged) 캐시(이하, 가상 캐시(virtual cache))와 물리적으로 태그된(physically-tagged) 캐시(이하, 물리적 캐시(physical cache)) 간의 통신 및 상호 작용의 일반적인 문제는, 동일한 "언어"를 사용하지 않고 가상 이름 또는 실제 이름으로 동일한 캐시 라인을 호출한 다는 것이다. 가상 캐시와 물리적 캐시 간 상호작용이 있을 때마다 가상 어드레스와 물리적 어드레스 공간간에 완전한 변환을 수행하려면 복잡하고 값 비싼 새로운 하드웨어가 요구된다.
도 6은 2-레벨 캐시 계층 구조를 포함하는 실시 예를 도시한 블록도로서, 제1 레벨은 가상으로 인덱싱 된 가상 태그 된 캐시(VIVT 캐시)를, 제2 레벨은 물리적으로 인덱싱 된 물리적 태그 된 캐시(PIPT 캐시)를 각각 도시한다. 본 개시의 기술적 사상에 따른 적어도 일부 실시 예에 따르면, 도 6은 가상 캐시와 물리적 캐시 간의 상호 작용을 지원하는 간단하고 빠른 메커니즘을 제공한다. 도 5에 도시된 표준 VIVT 캐시 및 PIPT 캐시와 비교할 때, L1-VIVT 캐시(625) 내의 캐시 라인(627) 및 L2-PIPT 캐시(605)의 캐시 라인(607)은 모두 새로운 캐시 라인 포인터(Cache line Pointer, CP) 필드로 확장되었음을 유의해야 한다.
도 6의 하부에 도시된 가상 캐시(625)는, 인덱스 비트(624) 및 VAT 비교 비트(623)가 모두 가상 어드레스 비트로 구성됨에 따라, CPU 코어(621)에 의해 생성된 가상 어드레스(622)를 사용하여 빠르고 에너지 효율적인 액세스를 제공할 수 있다. 가상 캐시(625)는, 요청된 캐시 라인이 가상 캐시(625)에 상주하는지 신속히 결정할 수 있고, 상기 캐시 라인이 상주한다면, 요청된 데이터는 CPU 코어(621)에 리턴된다.
요청된 캐시 라인이 가상 캐시(625)에 존재하지 않는다고 판단되면, 희생 캐시 라인 위치가 선택된다. 본 예시에서, L1 캐시에서 선택된 세트(인덱스 비트(624)에 의해 결정된)의 가장 우측 캐시 라인의 위치(627)가 선택되고 그 캐시 라인이 축출된 것으로 가정한다. 동시에, 요청된 가상 어드레스는 가상-물리 어드레스 변환기(virtual-to-physical address translator, 640)(또는, 변환 룩-어사이드 버퍼(translation look-aside buffer, TLB))로 보내짐으로써 L2 캐시(및 상위 레벨 캐시)에서 요청된 캐시 라인을 검색하는데 사용될 수 있는 물리적 어드레스인 L2 요청(602)을 생성한다. 본 개시의 기술적 사상에 따른 일부 실시 예에 따르면, 가상-물리 어드레스 변환기(640)는 CPU 코어(621)에 할당되는 가상-물리 어드레스 변환기(예를 들어, TLB)일 수 있다.
L2 요청(602)은 또한 희생 캐시 라인의 위치, 즉 선택된 L1 세트의 가장 우측 캐시 라인의 위치(627)를 전달한다. 위치 정보는 희생 캐시 라인 위치의 캐시 인덱스 및 캐시 방법을 사용하여 인코딩 될 수 있다. 다만, L1 캐시에 대한 인덱스 비트(624)로서 사용된 일부 어드레스 비트가, 어드레스가 가상 어드레스와 물리적 어드레스 사이에서 변환될 때 변하지 않는다고 가정하면, 위치 정보는 물리적 어드레스로부터 결정될 수 없는 인덱스 부분만을 포함하면 된다. 즉, 시스템의 페이지 크기가 4Kbyte인 경우 12개의 가장 낮은 어드레스 비트는 포함될 필요가 없다. L1 캐시(625)가 직접 매핑되는 경우(즉, 각각의 세트는 하나의 캐시 라인 위치만을 가짐), L2 요청(602)에 의해 전달된 희생 캐시 라인 위치는 단지 선택된 세트를 식별할 필요가 있을 뿐, 임의의 웨이를 식별할 필요는 없다.
L2 캐시의 검색은 L2 캐시(602)의 물리적 주소로부터 인덱스 비트(604)를 선택하여 요청된 캐시 라인이 상주해야 하는 세트를 선택함으로써 수행된다(존재한다면). 본 예시에서, 선택된 L2 세트의 PAT들과 어드레스 비트들(603) 간의 비교는 요청된 캐시 라인이 그 세트의 가장 왼쪽의 캐시 라인 위치(607)에 상주함을 결정한다. 이 위치를 이하에선 "히트 캐시 라인 위치"라고 한다.
이제 몇몇 단계가 수행된다. (1)희생 캐시 라인 위치의 CP는 캐시(605)에서 히트 캐시 라인 위치의 CP에 저장될 것이다; (2)캐시 라인은 물리적 캐시(605)에 의해 CPU 코어(621) 및 L1 가상 캐시(625)로 리턴되어 L1 가상 캐시(625) 내의 희생 캐시 라인 위치에 기록될 것이다. 그리고, (3)히트 캐시 라인 위치의 CP는 희생 캐시 라인 위치의 CP에 저장될 것이다. 요약하면, 요청된 캐시 라인이 L2에서 L1으로 채워진 후, 데이터를 제공하는 L2의 캐시 라인 위치는 캐시 라인이 인스톨되는 (예를 들어, 저장되는) L1 캐시 라인 위치에 CP 포인터를 저장할 것이고, 캐시 라인이 인스톨 된 (예를 들어, 저장된) L1의 캐시 라인 위치는 데이터를 제공한 L2의 캐시 라인 위치에 대한 CP 포인터를 저장할 것이다. 이렇게 하면, L1과 L2의 해당 캐시 라인 위치가 서로를 가리키는 크로스-와이즈(cross-wise) CP 포인터가 저장된다.
본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, 도 6의 가상 L1 캐시(625)와 물리적 L2 캐시(605) 사이에 포함이 강제된다. 이는 캐시 라인이 L1의 위치에 상주하는 경우 캐시 라인이 L2에 상주하는 해당 위치를 가져야 함을 의미한다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, L1 캐시는 연속 기입(write-through) 유형(예를 들어, 연속 기입 캐시)일 수 있다. 즉, L1의 캐시 라인이 기록 될 때, 이에 대응하는 L2의 캐시 라인(L1 캐시에 기입된 캐시라인의 CP에 의해 식별됨) 또한 기록된다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, L1 캐시는 기입 무효화(write-invalidate) 유형(예를 들어, 기입 무효화 캐시)일 수 있다. 즉, L1에 상주하는 캐시 라인(및 이어서 L2에도 있음)은, 캐시 라인에 대해 수행된 기입에서 무효화되고, 대신 이에 대응하는 L2의 캐시 라인이 갱신된다. 이러한 캐시 유형 모두에 대해 L1의 캐시 라인은 L2의 해당 캐시 라인과 다른 오손 데이터(dirty data)를 저장하지 않는다.
본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, L1 캐시는 라이트-백(write-back) 유형(예를 들어, 라이트-백 캐시)일 수 있다. 즉, L1의 캐시 라인은 L2의 캐시 라인을 수정하지 않고 수정될 수 있다. 이로써, L1의 캐시 라인이 오손된다(become dirty). 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, L1으로부터의 오손 캐시 라인의 축출 시, L2 내의 대응하는 캐시 라인이 업데이트 된다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, 오손 캐시 라인을 저장하는 캐시 라인 위치의 CP는 업데이트 할 L2에서 적절한 캐시 라인을 찾는 데 사용된다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, L2 내의 대응하는 캐시 라인의 CP는, 대응하는 L1 캐시 라인의 CP가 오손될 때 판독 가능하지 않다는 것을 반영하도록 그 상태를 변경한다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, L2 내의 대응하는 캐시 라인의 CP는 대응하는 클린(즉, 오손이 아닌) 캐시 라인이 L1으로부터 축출될 때 업데이트되는 CP를 갖는다.
도 6의 L2-PIPT 캐시는 외부 요청(608), 예를 들어 캐시 코히런스 프로토콜(또는, 캐시 일관성 프로토콜)에 의해 생성된 판독 요청 또는 무효화 요청을 수신할 수 있다. 이는 L2-PIPT 캐시 및/또는 L1-VIVT 캐시에 상주하는 캐시 라인을 판독하거나 무효화해야 함을 의미한다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, 외부 요청(608)은 L1-VIVT 캐시에서 검색을 수행하기 위해 직접적으로 사용되지는 않지만, L2-PIPT 캐시에 대한 검색을 수행하는데 사용될 수 있는 물리적 어드레스를 운반한다. 대신에, 대응하는 캐시 라인이 L2-PIPT 캐시에서 먼저 검색되고, 예를 들어, 요청된 캐시 라인이 선택된 세트의 맨 좌측 캐시 라인 위치(607)에 있다고 판단된다. 가장 왼쪽의 캐시 라인 위치(607)의 CP는 CP가 유효한 포인터를 포함하는 경우에 LI-VIVT 캐시에서 캐시 라인의 위치를 판단하는데 사용될 수 있다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, 외부 요청(608)이 무효 요청이면 식별된 캐시 라인 위치 모두가 무효화되고, 외부 요청(608)이 판독 요청이면 식별된 캐시 라인 위치 중 적어도 하나가 판독된다.
본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, L2-PIPT 캐시 내의 식별된 캐시 라인 위치의 CP가 L1-VIVT 캐시 내의 식별된 캐시 라인 위치가 오손(dirty)되었는지를 판단할 수 있다면, L1-VIVT 캐시에서 식별된 캐시 라인 위치는 외부 판독 요청에 대한 응답으로 판독될 것이고, 그렇지 않으면 L2-PIPT 캐시에서 식별된 캐시 라인 위치가 판독될 것이다. 당업자는, L1-VIVT 캐시의 캐시 라인이 선택된 L2-PIPT 캐시의 캐시 라인 위치에 전용 캐시 라인 상태를 저장하는 방법 등, L1-VIVT 캐시의 캐시 라인의 오손 여부를 결정하고 인코딩하는 비제한적인 많은 다른 대안적 방법이 있음을 이해할 것이다.
본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, L2-PIPT 캐시에서 식별된 캐시 라인 위치의 CP가 L1-VIVT 캐시에서 식별된 캐시 라인 위치가 기록 가능한지를 결정할 수 있다면, L1-VIVT 캐시에서 식별된 캐시 라인 위치는 외부 판독 요청에 대한 응답으로 판독될 것이고, 그렇지 않으면 L2-PIPT에서 식별된 캐시 라인 위치가 판독될 것이다. 당업자는, 선택된 L2-PIPT 캐시의 캐시 라인 위치에 전용 캐시 라인 상태를 저장하는 방법 등, L1-VIVT 캐시의 캐시 라인을 인코딩 및 결정하는 비제한적인 많은 다른 대안적 방법이 있음을 이해할 것이다.
당업자는 도 6에 대해 설명된 상기 변호나 스킴이 유익할 수 있는 L1의 많은 가능한 대안 구성이 있음을 이해할 것이다. L1은, 예를 들어, 인덱스 비트들의 일부가 가상 어드레스로부터 물리적 어드레스로의 변환 시에 변환될 수 있는 크기/연관성을 갖는, 가상으로 인덱싱 된 물리적 태그 캐시(Virtually Indexed, Physically Tagged cache, VIPT)(510)일 수 있다. 이러한 구성은 VIPT 캐시에서 어떤 인덱스를 선택할지를 물리적 어드레스에서 결정할 수 없으므로 상기 설명된 메커니즘의 이점을 얻을 수도 있다. 당업자는, 도 6에서 설명된 메커니즘이 캐시 라인의 캐시 라인 위치가 캐시를 목표로 하는 일종의 액세스 요청에 의해 제공되는 어드레스(물리적, 가상 또는 기타)에 의해 결정될 수 없는 임의의 하위 레벨 캐시에 광범위하게 적용 가능함을 이해할 것이다.
이하, 본 개시의 기술적 사상에 따른 적어도 일부 실시 예에 따른 일부 요청에 응답하여 취해진 몇몇 단계들이 개시된다.
본 개시의 기술적 사상에 따른 적어도 일부 실시 예에 따르면, L1-VIVT 캐시에서 누락하고 L2-PIPT 캐시에서 히트하는 가상 어드레스 VA1에 의해 식별된 데이터에 대한 요청을 읽기 위한 요구에 응답하여, 이하의 단계가 수행된다.
1)VA1은 L1 캐시(625)내의 세트를 선택하는데 사용된다.
2)선택된 세트의 VAT가 VA1의 비트 중 일부(623)와 비교된다.
3)비교는 데이터가 VIVT 캐시(625)에 존재하지 않는다고 결정한다.
4)희생 캐시 라인 위치(627)가 선택된다.
5)그 위치에 저장된 이전 캐시 라인이 축출된다.
6)VA1에서 PA1으로의 변환이 수행된다.
7)PA1은 L2-PIPT 캐시에 액세스하는데 사용된다.
8)요청된 데이터가 히트 캐시 라인 위치(607)에 존재하는 것으로 결정된다.
9)히트 캐시 라인 위치(607)의 CP는 희생 캐시 라인 위치(627)에 대한 포인터를 유지하도록 업데이트 된다.
10)요청된 데이터는 CPU 코어(621)로 리턴된다.
11)희생 캐시 라인 위치는 히트 캐시 라인 위치(607)에 대한 포인터를 유지하도록 업데이트 된다.
본 개시의 기술적 사상에 따른 적어도 일부 실시 예에 따르면, L1-VIVT 캐시에서 누락하고 L2-PIPT 캐시에서 누락된 가상 어드레스 V1에 의해 식별된 데이터에 대한 읽기 요청에 응답하여 몇 가지 추가 단계가 수행된다.
· 1)-7) 단계는 상술한 바와 같이 수행된다.
· 8) 단계에서, L2-PIPT 캐시에 요청된 데이터가 존재하지 않음이 판단되고, '상위 레벨 캐시'에 요청을 보내고 L2 희생 캐시라인 위치를 선택하는 추가 단계가 포함된다. 데이터가 '상위 레벨 캐시'에서 반환되면 L2 희생 캐시라인 위치가 캐시 위치의 유일한 위치로 간주되고 9)-11)단계가 계속된다.
본 개시의 기술적 사상에 따른 적어도 일부 실시 예에 따르면, VIVT-L1 캐시의 희생 캐시라인 위치에서의 오손-희생 캐시 라인(dirty victimized cache line)을 축출한 것에 대한 응답으로 이하의 단계가 수행된다.
1)오손 캐시 라인의 L2 캐시에서 목표 위치는 희생된 캐시 라인의 CP에 의해 지시된 위치로 식별된다.
2)오손 캐시 라인이 L2 캐시의 타겟 위치로 전송된다.
3)타겟 위치의 CP는 L1 캐시가 더 이상 희생된 캐시 라인을 포함하지 않는다는 사실을 반영하도록 변경된다.
본 개시의 기술적 사상에 따른 적어도 일부 실시 예에 따르면, 물리적 어드레스(PA1)에 대한 코히런트 읽기 요구가 외부 요청 인터페이스(608) 상에서 수신될 때, 이하의 단계가 수행된다.
1)PA1에 대응하는 캐시 라인이 L2 캐시(605)에 존재하고 캐시 라인 위치를 식별하여 캐시 라인을 유지하는지가 판단된다.
2)위치(607)에 저장된 캐시 라인은 요청에 응답하는데 사용될 수 없다고 판단된다. 이는 예를 들어 위치(607)의 CP가, L1 캐시(625) 내의 대응하는 캐시 라인 위치가 더티 캐시 라인을 가지거나, 기록 가능한 캐시 라인(주기적으로 오손될 수 있음)을 저장하거나 또는 몇몇 일관성 원인으로 L2 캐시 라인이 사용될 수 없는 다른 이유를 인코딩하기 때문일 수 있다.
3)CP에 의해 지시된 L1의 캐시 라인 위치가 판독되고 그 데이터는 코히런스 요청에 대한 응답으로 리턴된다.
4)L1 캐시 라인이 더 이상 쓰기 가능하지 않게 다운 그레이드 된다.
5)L2 캐시 라인의 CP는 L1 캐시 라인이 더 이상 기록 가능하지 않거나 더럽지 않음을 반영하여 변경된다.
본 개시의 기술적 사상에 따른 적어도 일부 실시 예에 따르면, 외부 요청 인터페이스(608)에서, 물리적 어드레스(PA1)에 대한 코히런트한 무효화 요청의 수신에 응답하여, 이하의 단계들이 수행된다.
1)PA1에 대응하는 캐시 라인이 L2 캐시(605)에 존재하고, 캐시 라인 위치(607)가 캐시 라인을 유지하기 위해 식별되는지 여부가 결정된다.
2)캐시 라인 위치(607)에 저장된 캐시 라인은 무효화된다.
3)캐시 라인 위치(607)의 CP는 L1에 저장된 대응하는 캐시 라인이 존재하는지를 결정하기 위해 검사된다(예를 들어, 캐시 라인 위치(607)의 CP가 유효한지 여부를 결정).
4)CP에 의해 지시된 L1 내의 캐시 라인 위치는 무효화되고, CPU 코어(621)에 판독 가능하거나 기입 가능하지 않은 것으로 표시된다.
5)응답 메시지는 코히런스 요청에 대한 응답으로 전송될 수 있다.
도 7은 3-레벨 캐시 계층 구조를 포함하는 실시 예를 도시하는 블록도로서, 제1 레벨은 가상 인덱싱 된 가상 태그(즉, VIVT 캐시)를, 제2 및 제3 레벨은 태그가 없는 물리적 인덱싱 된 캐시(즉, PINT 캐시)를 도시한다. 도 7은 소위 태그가 없는 캐시들로부터 부분적으로 구축된 시스템을 도시한다. 태그리스 캐시(tag-less cache)는 캐시 라인 위치와 연관된 어드레스 태그를 저장하지 않는다. 대신, 특별 메타 데이터 캐시 계층 구조는 캐시 라인 포인터를 저장하여 시스템의 캐시 라인 위치를 추적한다. 본 개시의 기술적 사상에 따른 적어도 일부 실시 예에 따른 태그리스 캐시의 상세한 예는 도 4에서 찾을 수 있다. 도 7은 최저 레벨 메타 데이터 캐시(MD 캐시)(740)만을 도시한다. MD 캐시(740)는 정규 캐시(regular cache)와 유사하게 구성되며, 예를 들어, 도 5의 임의의 캐시 구성이 본 개시의 기술적 사상에 따른 예시적 실시 예에 사용될 수 있다. 이는 세트-연관(set-associative) 캐시 구조, 스큐-연관(skewed-associative) 캐시 구조, 또는 다른 일반적인 캐시 구조일 수 있다. 어드레스(예를 들어, 도 7에 도시된 바와 같은 VA(722))가 제공될 때, 어드레스에 대응하는 메타 데이터가 그 구조(740)에 포함되는지를 결정할 것이다. 본 개시의 기술적 사상에 따른 적어도 일부 실시 예에 따르면, MD 캐시의 메타 데이터는 여러 개의 인접한 캐시 라인으로 구성된 영역을 식별하는 어드레스 태그(도 7의 VAT)를 갖는 영역으로 조직된다. 영역(region)은, 예를 들어 16개의 캐시 라인으로 구성될 수 있지만, 임의의 수의 캐시 라인으로 구성될 수도 있다. VAT 일치 시, 영역 위치는 MD 캐시의 연관 검색에 의해 식별된다. 식별된 영역 위치에 저장된 영역 정보는 대응하는 캐시 라인과 관련된 정보를 포함한다. 예를 들어, 그것은 대응하는 캐시 라인 각각에 대해 캐시 라인 포인터(CP)를 저장할 수 있다. CP는, 예를 들어 캐시 ID(예를 들어, 캐시 레벨)에 관한 정보 및 각각의 대응하는 캐시 라인이 발견될 수 있는 캐시 내의 연관 웨이로 구성될 수 있다. 또한, 해당 캐시에서 검색에 사용할 부분 색인을 저장할 수도 있다. 메타 데이터 위치는 관련된 모든 캐시 라인에 적용 가능한 정보를 저장할 수도 있다. 예를 들어, 메타 데이터 위치는 물리적 어드레스 정보를 저장할 수 있다(도 7의 MD 캐시 내의 PA). 영역에 저장된 다른 영역 전체 정보는 허가 비트 및 영역의 모든 캐시 라인에 적용 가능한 일부 부분 색인 정보를 포함할 수 있다.
캐시 라인 요청(728)은, 예를 들어 MD 캐시에서 룩업을 수행하고 그 대응 CP(741)를 결정할 수 있다. 이러한 CP 정보는 L2 캐시(745) 또는 L3 캐시(750)에서 캐시 라인 위치에서 대응하는 캐시 라인을 발견하기에 충분할 수 있다. 이들 캐시가 물리적으로 인덱싱되면, 식별된 영역 위치로부터의 PA 정보가 인덱스 정보(742 또는 752)를 형성하는데 사용될 수 있다.
도 7은 L2 캐시(745) 및 L3 캐시(750)에서 대응하는 캐시 라인 위치가 어떻게 발견되는지에 대한 로직도를 도시한다. 먼저, 747에서 CP의 캐시 ID 정보와 "L2"를 비교한다. 일치한다면, CP의 방식을 사용하여 L2에서 캐시 라인 위치를 선택한다. 대신 757에서 캐시 ID = "L3"인 경우, CP의 웨이 정보에 대응하는 캐시 라인 위치가 대신에 대응하는 캐시 라인을 찾는 데 사용된다. 당업자는 요청된 캐시 라인에 대한 캐시 ID, 웨이 정보 및 인덱스 정보를 아는 것이 로직 예로서만 도시된 747 비교 또는 746 멀티플렉서를 필요로 하지 않고 그 캐시에 직접 액세스 할 수 있다는 것을 이해할 것이다. 또한, 당업자는 L2 및 L3 캐시가 SRAM, DRAM, NVM 또는 임의의 다른 메모리 기술과 같은 평범한 메모리 어레이를 이용하여 구현될 수 있음을 이해할 것이다. 도 7의 L2 및 L3 캐시는 태그를 포함하지 않고 물리적으로 어드레싱되기 때문에, 이들을 물리적으로 인덱스된 태그 없는(Physically Indexed No Tags, PINT) 캐시라고 지칭한다.
도 7의 "PINT L2 및 상위 캐시"는 각각의 캐시 라인 위치와 관련된 CP 정보를 저장한다. 도 6에 도시된 시스템과 유사하게, L1(725) 및 L2(745)에서의 대응하는 캐시 라인 위치는 서로 포인팅하는 크로스-와이즈 CP 포인터를 저장할 것이다. 외부 요청(760)을 수신하면 L2 내의 대응하는 캐시 라인 위치가 MD 캐시(740) 검색에 의해 식별되어 대응하는 CP 및 PA를 식별하게 된다. 크로스-와이즈 CP 포인터의 초기화 및 외부 요청에 응답하고 L1 캐시로부터 캐시 라인을 제거하는 단계를 설명하는 도 6에서 설명된 단계들은 L2 캐시(745) 및 L1 캐시(725)가 그러한 활동을 구현하기 위해 상호작용하는 방법에도 적용 가능하다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, L1-VIVT 캐시(625)에서 대응하는 캐시 라인을 가리키는 L2 캐시(605)의 CP의 일부로서 저장된 부분 인덱스 정보는 대응하는 영역의 일부로서 도 7에 도시된 시스템에서 MD 캐시(740) 내의 위치를 나타낸다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, 영역의 모든 캐시 라인이 L1-VIVT 캐시(725)로의 인덱싱을 위해 항상 동일한 부분 색인 정보를 갖는다고 판단될 수 있다면, 부분 영역 정보는 영역 범위 정보로서 대응하는 영역 위치에 저장될 수 있으며, 이는 각 캐시 라인에 대한 색인 정보를 개별적으로 저장하는 것보다 효율적이다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예에 따르면, L1-VIVT 캐시(725)는 직접 매핑되고 어떠한 웨이 정보도 L2 캐시(745)의 CP에 저장될 필요가 없다. 그러한 구성에 대해, L1 캐시(725)에 대응 캐시 라인이 존재하는 지를 나타내는 하나의 유효한 비트로서 L2 캐시(745)에서 CP를 구현하는 것만으로 충분할 수 있다. 그 구성에서, MD 캐시(740)에 저장된 영역-전체 색인 정보(region-wide index information)는 L1 캐시(725)에서 대응하는 캐시 라인 위치를 발견하는데 사용될 수 있다.
도 8은 3-레벨 캐시 계층 구조를 포함하는 실시 예를 도시하는 블록도로서, 제1 레벨은 태그가 없는 가상 인덱싱 된 캐시(즉, VINT 캐시)를, 제2 및 제3 레벨은 태그가 없는 물리적 인덱싱 된 캐시(즉, PINT 캐시)를 도시한다. 도 8은 동일한 "PINT L2 캐시 및 그 이상의 캐시"를 도시한다는 점에서 도 7과 유사하다. 다만, L1 캐시(825)는 가상으로 인덱싱되고 태그가 없는(Virtually Indexed Tag-less, VINT) 캐시이다. MD 캐시(840)의 CP는 여기서 L1 캐시(825)에 대한 위치 정보(823)를 저장하도록 확장되었다. 결과적으로, 어떠한 VAT 태그도 L1 캐시(825)에 포함되지 않는다. 대신, MD 캐시(840)의 확장된 위치 정보(823)는 L1-VINT 캐시의 대응하는 캐시 라인을 선택하는데 사용된다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예를 따르면, L1-VINT 캐시는 직접 매핑되므로 L1 캐시에 대한 위치 정보(823)가 단일 비트로 제한될 수 있다.
본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예를 따르면, 도 7 및 도 8의 MD 캐시는 가상 어드레스를 사용하여 액세스된다. 이 경우, 가상-물리적 변환은 L1-VIVT 캐시로부터의 요청(728 및 828)의 경로를 따라 필요하다.
본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예를 따르면, 도 7 및 도 8의 MD 캐시는 728 및 828 경로를 따라 L1-VIVT 캐시로부터의 가상 어드레스를 사용하여 액세스되며, 외부 요청들(760 및 860)은 요청된 캐시 라인과 관련된 MD 캐시(740 및 840) 내의 영역 위치를 식별하는 정보를 운반한다. 본 개시의 기술적 사상에 따른 적어도 하나의 예시적 실시 예를 따르면, 도 4의 CLB2(420)와 유사한 구조는 외부 요청에 의해 운반된 물리적 어드레스를 CLB1 내의 캐시 위치 엔트리 CLE(또한 영역 위치라고도 함)를 식별하는 CLB1 포인터(CIP 423)로 변환하는데 사용된다.
특히 SMT 코어의 가능한 사용 가능성에 비추어, 낮은 연관성을 갖는 직접 매핑된 VIVT 캐시 또는 VIVT 캐시의 결함의 일부를 극복하기 위해, L1은 부분적으로 스크램블 된 인덱스로 인덱싱 될 수 있다. 인덱스 [15-12]는 일부 어드레스 비트와 일부 ASID 비트 사이의 XOR 함수로 구성된다. 이러한 방식으로, SMT 스레드(threads)(예를 들어, SPEC 레이트) 상에서 2개의 동일한 프로그램을 동시에 실행하는 것은 캐시를 스래시(thrash)할 가능성이 적다. 또한, 동일한 프로세스의 두 스레드는 병렬 런타임 시스템이 2의 2 제곱으로 전용 스택/힙을 할당(일부 초기 멀티 스레드 런타임 시스템의 경우)하더라도 상호 스래시할 가능성이 적다. 스크램블 된 인덱스 기능을 사용하기 위한 많은 옵션이 있다. 이는 일부 ASID 비트, 일부 상위 어드레스 비트 및 일부 하위 어드레스 비트 사이의 XOR 기능이 될 수 있다(예를 들어, INDEX[15-12]=VA[15-12] XOR VA{21, 22, 25, 27} XOR ASID[3-0]).
INDEX[15-12]와 VA[15-12] 사이에 더 이상 1:1 매핑이 없기 때문에 이러한 스크램블 된 인덱스 비트를 사용하면 캐시(725)에 대해 4개의 추가 L1 VAT 태그 비트 사용이 촉구된다.
MD 캐시의 새로운 필드 SI(4)(Scrambled Index)는 외부 요청이 L1 캐시의 데이터에 액세스할 수 있도록 각 영역에 대해 스크램블 된 INDEX[15-12]를 저장할 수 있다.
도 6과 관련하여 설명된 단계들은 다양한 순서로 수행될 수 있고, 일부 단계는 병렬로 또는 순차적으로 수행될 수 있다. 이러한 방법 실시 예, 상술한 시스템 실시 예 및 다른 실시 예는 다양한 유익한 결과를 제공할 수 있다. 예를 들어, 본 개시의 기술적 사상에 따른 하나 이상의 예시적 실시 예들에 따라 수행된 상세한 시뮬레이션 연구는, 본 개시의 실시 예들과 관련된 캐시 구현이 종래의 캐시 시스템과 비교하여 상당한 에너지를 절약할 수 있고, 또한 캐시로 하여금 액세스 시간이 상당히 짧아지도록 할 수 있다.
명료함을 위해, 본 명세서의 대부분의 설명은 캐시 라인이 요구되는 CPU에 위치되고 리턴되는 방법에 대한 기술을 일반적으로 기술하나, 당업자라면, 요청된 워드가 캐시 라인을 선택하여 CPU로 되돌릴 수 있다.
명료함을 위해, 여기서는 캐시 계층 구조의 데이터 처리를 기술하는 대부분의 설명이 배타적 캐시 계층 구조를 기술한다. 당업자는 본 개시의 기술적 사상에 따른 하나 이상의 실시 예들이 포괄적 메모리 계층 및 비 배타적 메모리 계층을 또한 커버하도록 확장될 수 있음을 이해할 것이다.
전술한 본 개시의 기술적 사상에 따른 실시 예들 중 하나 이상이 각각 도 1 및 도 2와 관련하여 도시되고 설명된 바와 같이, 단일 프로세서 시스템 및 다중 프로세서 시스템과 관련하여 유용하나, 본 개시의 기술적 사상에 따른 예시적 실시 예들은 주로 유니 프로세서 시스템(uni-processor system)과 관련하여 설명된다. 그러나, 당업자는 단일 프로세서 시스템과 관련하여 예시된 본 개시의 기술적 사상에 따른 하나 이상의 예시적 실시 예가 그러한 구현으로 제한되지 않음을 이해할 것이다. 예를 들어, 도 6 내지 도 8은 간략화를 위해 단일 CPU를 도시하지만, 도 6 내지 도 8에 도시된 컴퓨터 시스템의 일부 또는 전부는 적어도 본 개시의 예시적 실시 예들에 따른 멀티 프로세서 시스템의 일부일 수 있다.
소정의 예시적인 컴퓨터 아키텍쳐와 관련하여 위에서 설명되었으나, 캐싱은 도 6 내지 도 8에 도시된 예시적 컴퓨터 시스템 내부뿐만 아니라 외부의 많은 다른 설정들에 존재하며, 당업자는 컴퓨터 시스템의 상황 내에서 전술한 본 개시의 기술적 사상에 따른 일부 예시적 실시 예가 이러한 다른 상황에서도 적용될 수 있음을 이해할 것이다. 이러한 용도의 예로는 디스크 또는 플래시 메모리와 같은 저속 대용량 저장 장치의 데이터를 DRAM을 사용하여 구현할 수 있는 더 빠르고 작은 대용량 메모리로 캐시하는 가상 메모리 시스템이 있다. 컴퓨터 시스템에서의 캐싱의 다른 비제한적 예시로는, 디스크 캐싱(disk caching), 웹 캐싱(web caching) 및 네임 캐싱(name caching)이 있다. 상기 캐시들의 구성 및 캐싱 메커니즘은, 상술된 캐시들의 구성 및 캐싱 메커니즘들, 예를 들어, 세트의 크기, 세트들의 구현 및 연관성 등과 다를 수 있다. 캐싱 메커니즘 그 자체의 구현에 관계없이, 본 개시의 기술적 사상에 따른 적어도 일부 실시 예들은 다양한 캐싱 방식을 구현하는데 적용 가능하다.
본 출원에 제공된 방법 또는 순서도는 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 컴퓨터 판독 가능 저장 매체에 유형적으로 구체화된 컴퓨터 프로그램, 소프트웨어 또는 펌웨어로 구현될 수 있다.
본 개시의 기술적 사상에 따른 예시적 실시 예가 상술되었으나, 동일한 방식이 많은 방법으로 변형될 수 있음은 명백할 것이다. 그러한 변형은 본 개시의 기술적 사상에 따른 예시적 실시 예의 의도된 사상 및 범위로부터 벗어나는 것으로 간주되어서는 아니되며, 당업자에게 자명한 그러한 모든 변형은 다음의 청구항의 범위 내에 포함되는 것으로 의도된다.

Claims (20)

  1. 각각이 적어도 하나의 프로세서를 포함하는 복수의 노드들 및 하나 이상의 메모리;
    상기 복수의 노드들 중 적어도 하나의 노드에 대해 전용이고, 복수의 제1 캐시 라인들을 저장하도록 구성되고 가상 태그된 캐시인 제1 캐시; 및
    상기 제1 캐시보다 상위 레벨에 있으며, 복수의 제2 캐시 라인들을 저장하도록 구성되고 물리적으로 태그된 캐시인 제2 캐시를 포함하고,
    상기 제1 캐시 라인들 중 적어도 하나는 상기 제2 캐시 라인 중 하나의 위치를 가리키는 제1 연관 포인터를 포함하고,
    상기 제2 캐시 라인들 중 적어도 하나는 상기 제1 캐시 라인 중 하나의 위치를 가리키는 제2 연관 포인터를 포함하고,
    상기 적어도 하나의 프로세서는,
    가상 어드레스를 포함하는 데이터의 요청을 생성하고,
    상기 데이터의 요청에 기초하여 상기 제1 캐시로부터 상기 데이터를 검색하고,
    상기 제1 캐시에서 상기 데이터가 미스되면, 상기 제1 캐시 라인들 중에서 희생 캐시 라인을 선택하고,
    상기 가상 어드레스가 변환된 물리적 어드레스에 기초하여, 상기 제2 캐시 라인들 중 히트 캐시 라인의 위치로부터 상기 제1 캐시의 상기 희생 캐시 라인의 위치로 상기 데이터를 채우고,
    상기 제1 캐시의 상기 희생 캐시 라인의 위치에 상기 제2 캐시의 상기 히트 캐시 라인의 위치를 지시하는 상기 제1 연관 포인터를 저장하고,
    상기 제2 캐시의 상기 히트 캐시 라인의 위치에 상기 제1 캐시의 희생 캐시 라인의 위치를 지시하는 상기 제2 연관 포인터를 저장하는 것을 특징으로 하는 멀티 프로세서 시스템.
  2. 삭제
  3. 삭제
  4. 제1 항에 있어서,
    상기 제1 캐시는 연속 기입 캐시(write-through cache)이고,
    상기 제1 캐시 라인들 중 하나에 데이터가 기입되는 것에 응답하여, 상기 데이터는 상기 데이터가 기록된 제1 캐시 라인에 제공된 포인터에 의해 지시된 제2 캐시 라인 중 하나에 기록되는 것을 특징으로 하는 멀티 프로세서 시스템.
  5. 제1 항에 있어서,
    상기 제1 캐시는 기입 무효화 캐시(write-invalidate cache)이고,
    상기 적어도 하나의 프로세서에 의해 수행된 기입 시에 상기 제1 캐시 라인들 중 하나가 무효화되는 것에 응답하여, 상기 제2 캐시 라인들 중 상기 무효화 된 제1 캐시 라인에 제공된 포인터에 의해 지시된 제2 캐시 라인은 무효화 되는 것을 특징으로 하는 멀티 프로세서 시스템.
  6. 제1 항에 있어서,
    상기 제1 캐시는 라이트-백 캐시(write-back cache)이고,
    상기 제1 캐시 라인들 중 하나가 기입되고 오손(dirty)된 것에 응답하여, 상기 제2 캐시 라인들 중 상기 오손 된 제1 캐시 라인에 제공된 포인터에 의해 지시된 제2 캐시 라인은, 상기 오손 된 제1 캐시 라인의 축출 시에 업데이트 되거나, 상기 오손 된 제1 캐시 라인이 판독 불가 함을 반영하여 상태가 변경되는 것을 특징으로 하는 멀티 프로세서 시스템.
  7. 적어도 하나의 노드를 포함하고, 상기 적어도 하나의 노드는 상기 노드에 전용인 제1 캐시, 상기 제1 캐시 보다 높은 레벨의 제2 캐시, 메모리, 및 가상-물리적 어드레스 변환기가 할당되는 프로세서를 포함하고, 상기 제1 캐시는 복수의 제1 캐시 라인들을 저장하는 가상 태그된 캐시고, 상기 제2 캐시는 복수의 제2 캐시 라인들을 저장하는 물리적으로 태그된 캐시인 시스템의 데이터 관리 방법에 있어서,
    상기 제1 캐시 라인들 중 하나에, 상기 제2 캐시 라인들 중 하나의 위치를 가리키는 제1 연관 포인터를 저장하는 단계; 및
    상기 제1 연관 포인터에 의해 지시된 제2 캐시 라인에 상기 제1 연관 포인터가 저장된 제1 캐시 라인의 위치를 가리키는 제2 연관 포인터를 저장하는 단계를 포함하고,
    상기 데이터 관리 방법은,
    상기 프로세서로부터 생성된 데이터의 요청에 포함된 가상 어드레스에 기반하여 상기 제1 캐시를 검색하는 단계;
    상기 데이터가 상기 제1 캐시에서 미스되었을 때, 상기 제1 캐시 라인들 중 하나를 희생 캐시 라인으로서 선택하는 단계;
    상기 데이터의 요청에 기초하여 상기 가상-물리적 어드레스 변환기로부터 물리적 어드레스를 생성하는 단계;
    상기 물리적 어드레스에 기초하여, 상기 제2 캐시 라인들 중 히트 캐시 라인의 위치로부터 상기 제1 캐시의 상기 희생 캐시 라인의 위치로 상기 데이터를 채우는 단계;
    상기 제1 캐시의 상기 희생 캐시 라인의 위치에 상기 제2 캐시의 상기 히트 캐시 라인의 위치를 지시하는 상기 제1 연관 포인터를 저장하는 단계; 및
    상기 제2 캐시의 상기 히트 캐시 라인의 위치에 상기 제1 캐시의 희생 캐시 라인의 위치를 지시하는 상기 제2 연관 포인터를 저장하는 단계를 더 포함하는 것을 특징으로 하는 데이터 관리 방법.
  8. 제7 항에 있어서,
    상기 제1 캐시 및 상기 제2 캐시에 데이터를 요청하는 단계; 및
    상기 제1 캐시의 캐시 미스 및 상기 제2 캐시의 캐시 히트에 응답하여, 데이터 및 포인터를 상기 제1 캐시 라인의 새로운 캐시 라인에 홀딩하는 단계로서, 상기 새로운 캐시 라인의 포인터는 상기 데이터가 저장된 제2 캐시 라인의 위치를 가리키는, 단계를 더 포함하는 데이터 관리 방법.
  9. 제7 항에 있어서,
    상기 제1 캐시 라인들 중 하나에 데이터가 기입됨에 응답하여, 상기 데이터가 기록되는 제1 캐시 라인에 제공된 포인터에 의해 지시된 제2 캐시 라인에 상기 데이터를 기록하는 단계를 더 포함하는 데이터 관리 방법.
  10. 제7 항에 있어서,
    상기 프로세서에 의해 수행된 기입 동작 시 상기 제1 캐시 라인들 중 하나가 무효화 되는 것에 응답하여, 상기 무효화 된 제1 캐시 라인에 제공된 포인터에 의해 지시된 제2 캐시 라인을 무효화 하는 단계를 더 포함하는 데이터 관리 방법.
  11. 제7 항에 있어서,
    상기 제1 캐시 라인 중 하나에 기입 동작이 수행되고 오손(dirty)된 것에 응답하여, 상기 오손된 제1 캐시 라인에 제공된 포인터에 의해 지시된 제2 캐시 라인의 상태를, 상기 오손된 제1 캐시 라인이 판독 가능하지 않음을 반영함으로써 변경하는 단계를 더 포함하는 데이터 관리 방법.
  12. 제7 항에 있어서,
    캐시 코히런스 프로토콜에 의해 생성된 외부 요청을 수신하는 단계;
    상기 제2 캐시에서 검색을 수행하고 상기 제2 캐시 라인들 중 하나를 선택하는 단계; 및
    상기 선택된 제2 캐시 라인에 제공된 포인터에 의해 지시된 제1 캐시 라인을 액세스하는 단계를 더 포함하는 데이터 관리 방법.
  13. 제12 항에 있어서,
    상기 외부 요청이 무효화 요청일 때, 상기 액세스 된 제1 캐시 라인 및 상기 선택된 제2 캐시 라인 모두를 무효화하는 단계를 더 포함하는 데이터 관리 방법.
  14. 제12 항에 있어서,
    상기 외부 요청이 읽기 요청인 경우, 상기 액세스 된 제1 캐시 라인 및 상기 선택된 제2 캐시 라인 중 적어도 하나에 저장된 데이터를 판독하는 단계를 더 포함하는 데이터 관리 방법.
  15. 삭제
  16. 제7 항에 있어서,
    상기 물리적 어드레스는 상기 희생 캐시 라인의 위치를 포함하는 것을 특징으로 하는 데이터 관리 방법.
  17. 가상 태그 된 캐시, 물리적 태그 된 캐시, 가상-물리적 어드레스 변환기 및 메모리가 할당되는 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 프로세서로 하여금 동작을 수행하게 하는 컴퓨터 실행 가능 명령을 포함하는 비 일시적 컴퓨터 판독 가능 기록 매체로서, 상기 동작은,
    상기 가상 태그 된 캐시에 저장된 복수의 제1 캐시 라인들 중 하나에, 상기 물리적으로 태그 된 캐시에 저장된 복수의 제2 캐시 라인들 중 하나의 위치를 가리키는 제1 연관 포인터를 저장하는 단계; 및
    상기 제2 캐시 라인들 중 하나에서, 상기 제1 캐시 라인 중 하나의 위치를 포인팅 하는 제2 연관 포인터를 저장하는 단계를 포함하고,
    상기 동작은,
    상기 프로세서로부터 생성된 데이터의 요청에 포함된 가상 어드레스에 기반하여 상기 가상 태그 된 캐시를 검색하는 단계;
    상기 데이터가 상기 가상 태그 된 캐시에서 미스되었을 때, 상기 제1 캐시 라인들 중 하나를 희생 캐시 라인으로서 선택하는 단계;
    상기 데이터의 요청에 기초하여 상기 가상-물리적 어드레스 변환기로부터 물리적 어드레스를 생성하는 단계;
    상기 물리적 어드레스에 기초하여, 상기 제2 캐시 라인들 중 히트 캐시 라인의 위치로부터 상기 가상 태그 된 캐시의 상기 희생 캐시 라인의 위치로 상기 데이터를 채우는 단계;
    상기 가상 태그 된 캐시의 상기 희생 캐시 라인의 위치에 상기 물리적 태그 된 캐시의 상기 히트 캐시 라인의 위치를 지시하는 상기 제1 연관 포인터를 저장하는 단계; 및
    상기 물리적 태그 된 캐시의 상기 히트 캐시 라인의 위치에 상기 가상 태그 된 캐시의 희생 캐시 라인의 위치를 지시하는 상기 제2 연관 포인터를 저장하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 판독 가능 기록 매체.
  18. 제17 항에 있어서,
    상기 동작은,
    상기 제1 캐시 라인들 중 하나에 데이터가 기입됨에 응답하여, 상기 데이터가 기입되는 제1 캐시 라인에 제공된 포인터에 의해 지시된 제2 캐시 라인에 상기 데이터를 기입하는 단계를 더 포함하는 컴퓨터 판독 가능 기록 매체.
  19. 제17 항에 있어서,
    상기 동작은,
    상기 제1 캐시 라인들 중 하나가 상기 적어도 하나의 프로세서에 의해 수행된 기입에서 무효화됨에 응답하여, 상기 무효화 된 제1 캐시 라인에 제공된 포인터에 의해 지시된 제2 캐시 라인을 무효화하는 단계를 더 포함하는 컴퓨터 판독 가능 기록 매체.
  20. 제17 항에 있어서,
    상기 동작은,
    상기 제1 캐시 라인들 중 하나가 기입되고 오손된 것에 응답하여, 상기 오손된 제1 캐시 라인에 제공된 포인터에 의해 지시된 제2 캐시 라인의 상태를, 상기 오손된 제1 캐시 라인이 판독 가능하지 않음을 반영함으로써 변경하는 단계를 더 포함하는 컴퓨터 판독 가능 기록 매체.
KR1020180141959A 2017-11-20 2018-11-16 효율적인 가상 캐시 구현을 위한 시스템 및 방법 KR102151180B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201762588720P 2017-11-20 2017-11-20
US62/588,720 2017-11-20

Publications (2)

Publication Number Publication Date
KR20190058317A KR20190058317A (ko) 2019-05-29
KR102151180B1 true KR102151180B1 (ko) 2020-09-02

Family

ID=64402076

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180141959A KR102151180B1 (ko) 2017-11-20 2018-11-16 효율적인 가상 캐시 구현을 위한 시스템 및 방법

Country Status (5)

Country Link
US (1) US11023376B2 (ko)
EP (1) EP3486786B1 (ko)
KR (1) KR102151180B1 (ko)
CN (1) CN109815167A (ko)
TW (1) TWI784085B (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10761988B2 (en) * 2018-07-25 2020-09-01 Arm Limited Methods and apparatus of cache access to a data array with locality-dependent latency characteristics
US11194718B2 (en) * 2019-07-24 2021-12-07 Arm Limited Instruction cache coherence
US11321344B2 (en) * 2019-09-20 2022-05-03 Sap Se Virtual database tables with updatable logical table pointers
KR20220066741A (ko) 2020-11-16 2022-05-24 삼성전자주식회사 스토리지 장치 및 그 동작 방법
TWI774183B (zh) * 2021-01-08 2022-08-11 瑞昱半導體股份有限公司 具有位址打亂機制的記憶體存取裝置及其記憶體存取方法
KR20220132339A (ko) * 2021-03-23 2022-09-30 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR102570030B1 (ko) * 2023-04-19 2023-08-28 메티스엑스 주식회사 멀티프로세서 시스템 및 이의 데이터 관리 방법
KR102641481B1 (ko) * 2023-04-19 2024-02-28 메티스엑스 주식회사 멀티프로세서 시스템 및 이의 데이터 관리 방법
CN117331853B (zh) * 2023-10-11 2024-04-16 上海合芯数字科技有限公司 缓存处理方法、装置、电子设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20160179700A1 (en) * 2014-12-22 2016-06-23 Texas Instruments Incorporated Hiding Page Translation Miss Latency in Program Memory Controller By Selective Page Miss Translation Prefetch
WO2017077502A1 (en) * 2015-11-04 2017-05-11 Green Cache AB Systems and methods for implementing coherent memory in a multiprocessor system

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1021009A (en) * 1910-05-14 1912-03-26 Noah Q Speer Sand-washing apparatus.
JP2839060B2 (ja) * 1992-03-02 1998-12-16 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理システムおよびデータ処理方法
WO2004046932A1 (ja) * 2002-11-21 2004-06-03 Fujitsu Limited キャッシュ制御方法及びプロセッサシステム
US8195890B1 (en) * 2006-08-22 2012-06-05 Sawyer Law Group, P.C. Method for maintaining cache coherence using a distributed directory with event driven updates
US8656083B2 (en) * 2007-12-21 2014-02-18 Spansion Llc Frequency distributed flash memory allocation based on free page tables
US9086973B2 (en) * 2009-06-09 2015-07-21 Hyperion Core, Inc. System and method for a cache in a multi-core processor
WO2013058745A1 (en) * 2011-10-18 2013-04-25 Soft Machines, Inc. Methods and systems for managing synonyms in virtually indexed physically tagged caches
EP2790107A1 (en) * 2011-12-07 2014-10-15 Fujitsu Limited Processing unit and method for controlling processing unit
US9110830B2 (en) * 2012-01-18 2015-08-18 Qualcomm Incorporated Determining cache hit/miss of aliased addresses in virtually-tagged cache(s), and related systems and methods
US9916253B2 (en) * 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9558121B2 (en) * 2012-12-28 2017-01-31 Intel Corporation Two-level cache locking mechanism
US9323774B2 (en) * 2013-05-03 2016-04-26 Nvidia Corporation Compressed pointers for cell structures
US9535700B2 (en) * 2013-06-14 2017-01-03 Arm Limited Data processing systems
GB2516477A (en) * 2013-07-24 2015-01-28 Ibm Method and system for handling virtual memory address synonyms in a multi-level cache hierarchy structure
US9292444B2 (en) * 2013-09-26 2016-03-22 International Business Machines Corporation Multi-granular cache management in multi-processor computing environments
US9229866B2 (en) * 2013-11-25 2016-01-05 Apple Inc. Delaying cache data array updates
CN106201913A (zh) * 2015-04-23 2016-12-07 上海芯豪微电子有限公司 一种基于指令推送的处理器系统和方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20160179700A1 (en) * 2014-12-22 2016-06-23 Texas Instruments Incorporated Hiding Page Translation Miss Latency in Program Memory Controller By Selective Page Miss Translation Prefetch
WO2017077502A1 (en) * 2015-11-04 2017-05-11 Green Cache AB Systems and methods for implementing coherent memory in a multiprocessor system

Also Published As

Publication number Publication date
CN109815167A (zh) 2019-05-28
KR20190058317A (ko) 2019-05-29
US11023376B2 (en) 2021-06-01
TWI784085B (zh) 2022-11-21
EP3486786B1 (en) 2022-01-26
TW201923592A (zh) 2019-06-16
EP3486786A1 (en) 2019-05-22
US20190155733A1 (en) 2019-05-23

Similar Documents

Publication Publication Date Title
KR102151180B1 (ko) 효율적인 가상 캐시 구현을 위한 시스템 및 방법
US10671543B2 (en) Systems and methods for reducing first level cache energy by eliminating cache address tags
US10031849B2 (en) Tracking alternative cacheline placement locations in a cache hierarchy
US11615026B2 (en) Systems and methods for implementing coherent memory in a multiprocessor system
KR102157354B1 (ko) 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법
US11354242B2 (en) Efficient early ordering mechanism
JP6027562B2 (ja) キャッシュメモリシステムおよびプロセッサシステム
EP3486787B1 (en) Systems and methods for tag-less buffer implementation
Goel et al. E-cache memory becoming a boon towards memory management system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant