KR20180078253A - 다중 프로세서 시스템에서 코히어런트 메모리를 구현하기 위한 시스템 및 방법 - Google Patents

다중 프로세서 시스템에서 코히어런트 메모리를 구현하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20180078253A
KR20180078253A KR1020187012983A KR20187012983A KR20180078253A KR 20180078253 A KR20180078253 A KR 20180078253A KR 1020187012983 A KR1020187012983 A KR 1020187012983A KR 20187012983 A KR20187012983 A KR 20187012983A KR 20180078253 A KR20180078253 A KR 20180078253A
Authority
KR
South Korea
Prior art keywords
cache
node
location
clb
data unit
Prior art date
Application number
KR1020187012983A
Other languages
English (en)
Inventor
에릭 하거스테인
안드레아 셈브란트
다비드 블랙스카퍼
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20180078253A publication Critical patent/KR20180078253A/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
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/082Associative directories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed directories, e.g. linked lists of caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/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/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • 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/1063Address 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 virtually addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • 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
    • Y02D10/13

Landscapes

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

Abstract

데이터 유닛은 다중 프로세서 시스템의 노드에 있는 프라이빗 캐시에 저장되고, 각 노드는 적어도 하나의 프로세서(CPU), 노드에 전용인 적어도 하나의 캐시 및 노드에 전용인 적어도 하나의 캐시 위치 버퍼(CLB)를 포함한다. 각각의 CLB 위치에는 정보 값들이 저장되고, 각각의 위치 정보 값은 각각의 데이터 유닛과 관련된 위치를 나타내고, 주어진 CLB에 저장된 각 위치 정보 값은 주어진 CLB와 동일한 노드에 배치된 프라이빗 캐시 내의 위치, 다른 노드들 중 하나의 위치 또는 메인 메모리가 됨을 나타낸다. 데이터 유닛에 대한 값의 일관성은 캐시 코히어런스 프로토콜을 사용하여 유지된다. CLB에 저장된 위치 정보 값은 각각의 데이터 유닛의 움직임에 따라 캐시 코히어런스 프로토콜에 의해 갱신된다.

Description

다중 프로세서 시스템에서 코히어런트 메모리를 구현하기 위한 시스템 및 방법
본 명세서에 개시된 소재의 실시 예는 일반적으로 컴퓨터 메모리 장치에서 데이터에 엑세스 하는 방법 및 시스템에 관한 것으로서, 보다 상세하게는 코히어런트 캐시 계층(coherent cache hierarchy)을 구현하기 위한 메커니즘 및 기술에 관한 것이다.
오늘날의 프로세서는 종종 대용량 메모리(high-capacity memory)에 저장된 데이터 및 명령어의 사본을 저장할 수 있는 캐시를 구비하고 있다. 이러한 대용량 메모리의 통상적인 예로 DRAM(Dynamic Random Access Memory)을 들 수 있다. 여기서, "메모리"라는 용어는 기존 및 미래의 모든 메모리 구현을 집합적으로 지칭하는데 사용된다. 캐시 메모리, 즉 간략하게 "캐시"는 다른 메모리 구현보다 훨씬 작고 훨씬 빠른 메모리로 만들어지며, 이후에는 주 메모리 또는 보조 저장 장치(secondary storage devices)에 저장된 데이터의 일부만을 특정 시점에 저장할 수 있다. 오늘날 캐시는 SRAM을 사용하여 구현되고, 대용량 캐시는 DRAM을 사용하여 구현될 수 있다. 여기에 설명된 캐시는 기존 및 미래의 임의적 메모리 기술을 사용하여 구현될 수 있다.
종종 컴퓨터 시스템의 메모리 시스템은, 주 메모리에 가까운 더 크고 더 느린 캐시(여기서는 더 높은-레벨(higher level)의 캐쉬로 명명함) 및 프로세서에 가까운 더 작고 더 빠른 캐시(여기서는 더 낮은-레벨(lower-level)의 캐쉬로 명명함)가 있는 캐시 범위(range of caches)를 포함할 수 있다. 이 구성은 일반적으로 캐시 계층(cache hierarchy), 메모리 계층(memory hierarchy) 또는 메모리 시스템으로 명명될 수 있다. 캐시 계층의 각 레벨은 캐시 레벨(cache level)로 명명될 수 있다. 도 1은, 각각의 CPU(101)가 자신의 제1-레벨 프라이빗 캐시(first-level private cache)(102)(L1 캐시)를 할당받는 컴퓨터 시스템을 도시한다. 프라이빗 캐시는 데이터 유닛(data unit)를 위한 공간이 캐시에 있는 CPU(또는 캐시와 동일한 노드에 있는 CPU, 이 때 캐시는 해당 노드에 대해 전용임)의 활동(CPU local to the cache)에 대해서만 응답할 수 있는 캐시일 수 있다. 본 예시에서, 제2-레벨 캐시(second-level cache)(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)에 의해 총괄하여 대표되는(collectively represented) 하나 이상의 하드 드라이브(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는, 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)를 도시한다.
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를 참조)과 비교된다.
종종 각 캐시에는, 세트에 유지할 캐시라인 및 세트로 가져올 새 캐시 라인을 위한 공간을 만들기 위해 내보낼(대체라고도 함) 캐시라인을 결정하기 위한 빌트-인 전략을 가질 수 있고, 이는 캐시의 대체 전략(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은 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)을 일관성있게 유지하는 메커니즘이 요구된다.
도 3과 관련된 설명을 요약하면, 당업자라면 캐시 계층의 동시 구현이, 요청된 캐시 라인의 위치가 결정될 수 있기 전에 다른 캐시 레벨 뿐만 아니라 TLB에서 많은 연관 검색이 수행될 것을 요구할 수 있음을 알 것이다. 또한, 각각의 변환 엔트리 및 캐시 된 캐시 라인은 어드레스 태그를 수반할 필요가 있고 이들 복수의 태그는 이들 레벨의 각각에서 어드레스의 일부와 비교될 필요가 있다. 전반적으로, 이러한 구현은 각 연관 검색에 사용되는 동적 에너지(dynamic energy) 측면에서 엄청난 비용이 든다. 또한 비교를 수행하는 데 필요한 추가 태그 정보를 저장하기 위해 정적 에너지 및 메모리 용량에 상당한 오버 헤드가 요구된다. 또한, 다수의 CPU 또는 다수의 노드가 포함된 다중 프로세서는 각각 자체 프라이빗 캐시 계층을 가지고 있기 때문에 비공개 캐시에 있는 데이터를 찾는 데 비용이 많이 드는 검색 메커니즘을 필요로 하며, 비싼 일관성 작업(coherence activities)을 수행하여 프라이빗 캐시에서 동일한 날짜의 복제된 복사본을 일관성 있게 유지해야 한다.
따라서, 데이터에 대한 캐시 검색과 관련된 전술한 문제점 및 결점을 피하는 시스템 및 방법을 제공하는 것이 바람직하다.
본 출원은 Erik Hargersten 등의 "ENERGY SAVING TECHNIQUES FOR CACHE MEMORY SYSTEMS"라는 명칭을 갖는, 2015년 11월 4일자로 출원된 미국 가출원 제62/250,653호 및, Erik Hargersten 등의 "DIRECT-2-MASTER (D2M): A UNIFIED METHOD FOR TRACKING, EVICTING AND KEEPING DATA COHERENT"라는 명칭을 갖는, 2015년 11월 23일자로 출원된 미국 가출원 제62/258,692호에 관련된다. 이들의 개시 내용은 본원에 참고로 인용되어 있다.
로컬 정보(locality information)에 기반한 계층적 메모리 구현을 위한 시스템 및 방법
일 실시 예에 따르면, 데이터 유닛은 다중 프로세서 시스템의 노드 내의 프라이빗 캐시에 저장되고, 각 노드는 적어도 하나의 프로세서(CPU), 상기 노드에 전용인 적어도 하나의 캐시 및 상기 노드에 전용인 적어도 하나의 캐시 위치 버퍼(cache location buffer)(CLB)를 포함한다. 각각의 CLB 위치 정보 값이 저장되고, 각각의 위치 정보 값은 각각의 데이터 유닛과 관련된 위치를 나타내며, 주어진 CLB에 저장된 각 위치 정보 값은, 주어진 CLB와 동일한 노드에 배치된 프라이빗 캐시 내의 위치, 다른 노드 중 하나의 위치 또는 메인 메모리의 위치를 나타낸다. 데이터 유닛의 값의 일관성은 캐시 코히어런스 프로토콜(cache coherence protocol)을 사용하여 유지된다. CLB에 저장된 위치 정보 값은 각각의 데이터 유닛의 움직임에 따라 캐시 코히어런스 프로토콜에 의해 갱신된다.
일 실시 예에 따르면, 상술된 방법을 구현하기 위한 시스템이 고려되고 아래에서 설명된다.
주변 캐시를 촉진시키는 코히어런스 메모리 구현을 위한 시스템 및 방법
일 실시 예에 따르면, 방법은 다중 프로세서 시스템의 노드들 및 글로벌 캐시들 및 메모리 내의 프라이빗 캐시들에 데이터 유닛들을 저장하고, 각각의 노드는 적어도 하나의 프로세서(CPU), 노드에 전용인 적어도 하나의 캐시를 포함한다. 프라이빗 및 글로벌 캐시에 저장된 데이터 유닛의 값의 일관성은 데이터 유닛에 대한 영역 정보를 저장하는 디렉토리에서 검색을 수행하는 캐시 코히어런스 프로토콜을 사용하여 유지된다. 위치이 정보는 데이터 유닛이 상주하는 위치를 노드, 글로벌 캐시 또는 메모리 중 하나인 것으로 식별한다.
일 실시 예에 따르면, 상술된 방법을 구현하기 위한 시스템이 고려되고 아래에서 설명된다.
일관성을 차단함으로써 코히어런트 메모리를 구현하는 시스템 및 방법
일 실시 예에 따르면, 데이터 유닛은 다중 프로세서 시스템의 노드 내의 프라이빗 캐시 및 글로벌 캐시 및 메모리에 저장되고, 각각의 노드는 적어도 하나의 프로세서(CPU), 노드에 전용인 적어도 하나의 캐시를 포함한다. 노드는 네트워크를 통해 연결된다. 캐시에 저장된 데이터 유닛의 일관성은 네트워크에서 코히어런스 메시지를 전송하는 분산 캐시 코히어런스 프로토콜에 의해 유지된다. 일부 코히어런스 메시지는 네트워크에서 전송되지 못하도록 차단된다. 전송된 코히어런스 메시지는, 다른 코히어런스 메시지가 코히어런스 메시지와 동일한 어드레스 영역을 위한 것인 경우, 다른 코히어런스 메시지를 차단하기 위해 차단 기능을 활성화한다.
일 실시 예에 따르면, 상술된 방법을 구현하기 위한 시스템이 고려되고 아래에서 설명된다.
명세서에 통합되어 그 일부를 구성하는 첨부 도면은 하나 이상의 실시 예를 도시하고, 설명과 함께 이들 실시 예를 설명한다. 도면에서:
도 1은 다중 프로세서 시스템의 블록도이다.
도 2는 단일 프로세서 시스템 캐시 계층 구조의 블록도이다.
도 3은 세트 연관 캐시들 및 세트 연관 데이터 번역 룩-어사이드 버퍼로 구성된 2-레벨 캐시 계층 구조에 대한 종래 구현을 도시한다.
도 4는 2-레벨 캐시 계층 구조 및 2-레벨 CLB 계층 구조를 포함하는 실시 예를 도시하는 블록도로서, 제1 레벨은 가상 액세스되고 제2 레벨은 물리적으로 액세스 된다.
도 5는 2-레벨 캐시 계층 구조 및 2-레벨 CLB 계층 구조에 연결된 두 개의 CPU를 포함하는 일 실시 예를 도시하는 블록도이다.
도 6은 일 실시 예에 따른 단일 모놀리식 마지막 레벨 캐시를 갖는 일반화된 태그리스 캐시 계층 구조를 나타내는 블록도이다.
도 7은 일 실시 예에 따른 최종 레벨 캐시의 다수의 슬라이스를 갖는 일반화된 태그리스 캐시 계층을 도시한 블록도이다.
도 8은 방법 실시 예를 나타내는 플로우차트이다.
도 9 내지 도 13은 본 발명에 따른 데이터 일관성 및 CLB 일관성을 위한 통합된 코히어런스 프로토콜을 함께 구현하는 로컬 및 글로벌 액티비티의 시퀀스를 도시한다.
도 14 내지 도 15는 방법 실시 예를 도시하는 플로우차트이다.
하기 실시 예는 첨부 도면을 참조한다. 상이한 도면에서 동일한 참조 번호는 동일하거나 유사한 요소를 식별한다. 다음의 상세한 설명은 본 발명을 제한하지 않는다. 대신에, 본 발명의 범위는 첨부된 청구 범위에 의해 한정된다. 특정 캐시 계층 구조의 용어 및 구조 및 이러한 계층 구조에서 검색을 수행하는 방법과 관련하여 이하의 실시 예들 중 일부가 간략하게 설명된다. 그러나, 다음에 논의 될 실시 예는 이들 구성에 한정되지 않고, 후술하는 다른 구성으로 확장 될 수도 있다.
명세서 전체에 걸쳐 "일 실시 예" 또는 "실시 예"는 하나의 실시 예와 관련하여 설명된 특정 특징, 구조 또는 특성이 개시된 주제의 적어도 하나의 실시 예에 포함되는 것을 의미한다. 따라서, 명세서 전반에 걸쳐 다양한 곳에서 "일 실시 예에서" 또는 "실시 예에서"라는 문구가 출현하는 것은 반드시 동일한 실시 예를 지칭하는 것은 아니다. 또한, 특정 특징, 구조 또는 특성은 하나 이상의 실시 예에서 임의의 적합한 방식으로 결합될 수 있다.
이하의 설명에서 많은 세부 사항들이 실시 예들의 완전한 이해를 제공한다. 이러한 세부 사항은 종래의 캐시 태깅 방식의 효율적인 대안을 구현하기 위한 기능 블록 및 예시적인 캐시 위치 테이블(cache location table, CLB)을 포함한다. 또한, 실시 예의 CLB 스킴이 특정 캐시 및 컴퓨터 아키텍처(computer architectures)를 참조하여 설명되었지만, 실시 예는 광범위한 메모리 및 시스템 아키텍처에 적용 가능하다. 다른 예들에서, 공지된 회로들 및 구조들은 실시 예들을 불필요하게 모호하게 하지 않기 위해 상세히 설명되지 않는다.
여기에 설명된 다양한 실시 예들에 따라, 방법들 및 시스템들은 다른 것들 중에서, 위치 정보(location information, LI)를 명시적으로 저장하는 캐시 처리 스킴(cache handling schemes, CHS)을 제공한다. 위치 정보(LI)는 메인 메모리 및 하나 이상의 프로세서를 갖는 컴퓨터 시스템의 다중 방향 캐시에(multi way cache)에 효율적으로 액세스하는데 이용된다. 캐시 처리 스킴(CHS)은 소위 캐시 계층 구조의 내용을 추적하지만 여기에 설명된 일부 기능의 특성으로 인해 메모리 시스템의 토폴로지는 반드시 계층 구조일 필요는 없다. 추적은 캐시 위치 버퍼(cache location buffer, CLB) 또는 CLB의 일부 계층에 의해 수행된다. 캐시는 웨이 수에 대응하는 다수의 세그먼트로 분할 된 복수의 캐시 라인을 포함한다.
실시 예들에 따르면, 캐시 라인이 계층 내의 레벨들 사이 및 노드들 사이에서 이동될 때마다 알려진 유용한 위치 정보를 폐기하는 대신에, 위치 정보는 CHS에 저장(즉, 업데이트)되고 이후의 캐시 엑세스에 이용된다. CLB는 결합 방식(associative way)으로 구성된다. 따라서, 각 CLB 엔트리는 어드레스 태그 필드 및 어드레스 태그 필드와 관련된 복수의 LI를 포함하지만, 다른 실시 예에 따르면 위치 정보를 저장하는 다른 기술이 가능하다. 결과적으로 CLB에 저장된 정보를 사용하여 추가 연관 검색을 수행하지 않고도 요청된 데이터의 위치에 신속하게 액세스 할 수 있다. 보다 정확하게는, CLB는 캐시 내의 임의의 어드레스 태그에 액세스 할 필요 없이 올바른 캐시 식별 정보뿐 만 아니라 캐시 내의 정확한 위치가 결정될 수 있는 위치 정보(LI)를 제공한다. LI는 원격 노드(remote node)를 관련 데이터의 위치로 식별할 수도 있다. 따라서, 이러한 실시 예에 따른 기술을 사용하여, 요청된 데이터는 캐시 계층에서 더 적은 에너지를 소비하는 방식으로 보다 빨리 발견될 수 있다. 설명된 기술을 사용하면 보다 유연하고 계층적이지 않은 캐시 토폴로지를 효율적으로 구현할 수 있다.
동일한 연관성(associativity)을 갖는 세트-연관 캐시로 구성된 캐시 계층에 대해, 각각의 LI 내 비트들의 수는 웨이 수, 상이한 캐시들의 수 및 CLB에 의해 커버되는 노드들의 수에 의존한다. 일부 LI 값은 하드 코딩(hard coded) 된 특정 의미의 특정 패턴을 저장하도록 예약될 수 있다. 예를 들어, 메모리 패턴에 대해 하나의 LI 값을 예약할 수 있고, 이는 데이터가 CHS로 처리되는 메모리 계층 구조의 부분에 없음을 의미한다. 일 실시 예에서, 노드의 수가 식별된 캐시의 수와 웨이의 수를 곱한 것보다 작은 것으로 가정하면, LI 비트의 수는 CLB에 의해 커버된 캐시의 수 + 1 + 웨이의 수를 더한 값의 로그 베이스 2와 동일하다. 상이한 캐시 레벨의 웨이의 수가 변하는 경우 또는 세트 연관 캐시 이외의 캐시가 사용되는 경우, 당업자는 다른 LI 표현이 가능하다는 것을 이해할 것이다.
CHS에 의한 CLB를 통한 캐시 엑세스는, 예를 들어, 일 실시 예에 따라 일반적으로 다음과 같이 수행될 수 있다. 타겟 캐시 라인의 어드레스를 수신하면, CLB는 자신이 저장한 캐시 위치 엔트리(cache location entries, CLE) 중 하나의 어드레스 필드를 어드레스의 TAG 부분과 일치 시키려고 시도한다. 일치하는 것이 있으면, 어드레스의 LI 오프셋 부분을 사용하여 CLB 항목의 LI가 검색된다. CHS는 LI 값과 어드레스의 색인 부분을 사용하여 캐시의 단일 캐시 라인으로 직접 색인한다. 따라서 캐시는 어드레스 태그 정보를 저장할 필요가 없다.
따라서, 실시 예들에 따라, 도 1 및 도 2에 도시된 것과 같은 시스템은 또한 여기에 설명된 캐시 처리 기법(cache handling scheme, CHS)을 포함할 수 있다. 이 방식에는 캐시 계층 구조에 저장된 데이터 유닛의 위치를 추적하는 캐시 위치 버퍼(CLB) 또는 CLB 계층 구조가 포함된다. 데이터 유닛이 캐시 계층 구조에서 이동할 때마다 새 위치가 CLB에 기록된다.
이러한 실시 예에 따른 CLB는 복수의 캐시 위치 엔트리(CLE)를 저장하는 연관 구조(associative organization)로서 구현될 수 있다. 각각의 CLE는 연관 검색을 위해 사용되는 어드레스 태그와, 복수의 위치 정보(LI)를 저장하는 캐시 위치 테이블(cache location table, CLT)와 같은 일부 페이로드를 포함한다. 실제로, CLB 자체는 위치 정보를 저장하는 캐시로 볼 수 있다.
다양한 실시 예들의 이들 및 다른 특징들을 설명하기 위해, 이러한 실시 예들은 도 4 내지 도 15를 참조하여 설명될 것이다. 명료성을 위해, 당업자들은 이들 도면들이 실제 물리적 구현보다는 실시 예들의 논리적 구현을 도시함을 인식할 것이다. 따라서 당업자는 이러한 다이어그램이 구현의 논리적인 표현을 나타내며 물리적 구현이 그 구현의 세부 사항에서 실질적으로 다를 수 있다는 것을 이해할 것이다.
일 실시 예에서, 추적되는 데이터 유닛은 캐시 라인에 대응하고, 이들 데이터 유닛을 저장하는 캐시는 세트-연관 방식(set associative manner)으로 구성된다.
일 실시 예에서, 일치하는 CTE의 요청된 캐시 라인에 대응하는 위치 정보(LI)는 요구된 캐시 라인이 어느 캐시에 상주하는 지를 나타낼 수 있다. 이것은 실시 예가 적절한 캐시에서 직접 캐시 검색을 수행하게 할 것이다. 예를 들어, 도 4에 도시된 시스템(다중 프로세서 시스템의 노드 일 수 있음)에서 위치 정보는 L1 CACHE와 L2 CACHE를 구별 할 수 있다. 또한 본 도면에 도시되지 않는 나머지 다중 프로세서 시스템에 있는 다른 캐시를 구별할 수도 있다. 도 4는 CPU(401)가 어드레스 (ADDR)(402)를 생성하는 세트-연관 캐시 및 CPU(여기에는 L0로 표시된 하나 이상의 많은 종래의 캐시를 포함할 수 있음)의 2-레벨 캐시 계층을 갖는 다중 프로세서 시스템의 다른 노드에 접속될 수 있는 태그리스 노드(tag-less node)를 도시한다. 도 4는 CLB1(410) 및 CLB2(420)가 ADDR로 인덱싱되는, 세트-연관 CLB의 2-레벨 CLB 계층을 도시한다. CLB1 내의 각각의 엔트리는 적어도 하나의 어드레스 태그(AT)(411), 캐시 위치 테이블(CLT)(412)로 구성된다. 이는 영역 정보(region information, RI)(413)와 같은 추가적인 정보를 저장할 수 있다. CLT는 대응 영역(마이크로 페이지로도 명명됨)의 캐시 라인에 대한 위치 정보(LI)를 저장한다. 도 4는 일 예로서 영역 당 4개의 LI를 도시한다. 발명자에 의한 경험적 연구에 따르면, 영역 당 8 내지 16개의 LI (즉, 영역 당 8 내지 16 데이터 유닛 (캐시 라인))가 비용 효과적이고 효율적이다. 위치 정보는 다중 프로세서 시스템에서 해당 캐시 라인을 찾을 수 있는 위치를 인코딩한다. 위치 정보는, 예를 들어, 데이터 유닛이 발견될 수 있는 캐시의 식별정보를 포함할 수 있다. 위치 정보는 또한 데이터 유닛이 발견될 수 있는 캐시 내의 위치를 포함할 수 있다. 대안적으로, 위치 정보는 데이터 유닛이 발견될 수 있는 노드의 식별정보를 포함하거나 그 위치에 관한 정보를 제공하는 심볼을 포함할 수 있다. 예를 들어, 심볼 "MEM"은 데이터 유닛이 메모리에서 발견될 수 있음을 나타낸다. 일 실시 예에서, "모른다"라는 심볼은 해당 데이터 유닛의 위치가 그 영역에 대응하는 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)가 유사한 방식으로 형성된다.
도 4는 L1 캐시(430) 및 L2 캐시(440)의 각 엔트리가 그 캐시 라인과 관련된 역방향 포인터(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은, 예를 들어 기존의 포괄적인 캐시가 다음 레벨로 데이터 유닛을 제거하여, 다음 캐시 레벨에서 가져올 수 있는 새 데이터 유닛을 위한 공간을 만들 때 수행된다. 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 레벨 수가 동일할 필요는 없다.
실시 예는 CLB에 의해 관리되는 캐시를 공유하는 여러 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가 되도록 식별한다(실선 화살표로 표시).
도 5은 태그리스 다중 프로세서 메모리 시스템의 일반화 된 그림을 도시한다. 본 예시는 제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에 대해 논의된 외부 요청과 마찬가지로 요청이 충족된다. 그러나 데이터를 찾으려면 디렉토리를 참조할 필요가 없다. 이것은 디렉토리가 노드 외부로 나가는 액세스를 위해 참조되고 업데이트되는 대부분의 종래의 디렉토리 기반 일관성 체계와 상이하다.
비록 도 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은 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)에 의해 직접 액세스 될 수 있다.
일 실시 예에서, 명령 미스(예를 들어, 명령 캐시(L0-I)에서의 미스)에 의한 원격 LLC 슬라이스로의 액세스는 데이터 유닛이 복제되고, 또한 요청중인 CPU의 노드에 인접한 LLC 슬라이스에 상주할 수 있다. 이는 명령어에 대한 캐시 미스가 일반적으로 데이터 손실보다 성능 저하를 초래한다는 사실에 기인한다.
일 실시 예에서, 원격 LLC 슬라이스 내의 소위 "핫(hot)" 데이터 유닛에 대한 액세스는 데이터 유닛이 복제되고 또한 요청중인 CPU의 노드에 인접한 LLC 슬라이스에 상주할 수 있다. 핫 데이터 유닛은 자주 액세스되는 데이터 유닛이다. 최신 데이터는 예를 들어, 데이터에 마지막으로 액세스한 이후의 지속 시간을 측정함으로써 검출될 수 있다. 이는 예를 들어, 데이터 유닛과 연관된 또는 위치 정보와 연관된 "액세스 타임 스탬프"를 제공함으로써 구현될 수 있다. 최근 데이터 유닛에 액세스 했는지 여부를 탐지할 수 있는 LRU 또는 의사 LRU 알고리즘과 같은 캐시 교체 알고리즘(cache replacement algorithm)에 의해 최신 데이터가 감지될 수도 있다. 일 실시 예에서, 세트의 가장 최근에 사용된 (MRU) 데이터 유닛으로 표시된 액세스 된 데이터 유닛은 핫 데이터 유닛으로 분류되어 복제를 유발한다. 본 발명자의 경험적 연구에 따르면, 전술한 바와 같은 지능형 할당 및 복제 결정은 로컬 LLC 슬라이스에서 적중된 LLC 액세스의 평균 80%를 만들 수 있다.
일 실시 예에서, 원격 LLC 슬라이스에 대한 액세스는 데이터 유닛이 요청중인 CPU의 노드에 인접한 LLC 슬라이스로 이동하게 할 수 있다. 마이그레이션 결정(migration decision)은 해당 영역의 카테고리를 기반으로 할 수 있다. 예를 들어, 프라이빗 영역에 액세스하면 날짜 단위가 요청한 CPU 노드 옆에 있는 LLC 슬라이스로 마이그레이션 될 수 있다. 보다 구체적으로, 액세스 된 영역이 개인 영역(PR)으로 분류되면 명령 액세스 또는 핫 데이터에 대한 액세스로 인해 마이그레이션이 발생할 수 있다.
일 실시 예에서, 도 7의 캐시 시스템은 태그리스 캐시 시스템, 즉, 캐시(예를 들어, 노드들 및 LLC의 캐시들 L-1 내지 L-Y)에 저장된 데이터 유닛이 연관된 어드레스 태그를 가지지 않는 캐시 시스템이다. 대신 연관된 어드레스 태그가 있는 위치 정보는 데이터 유닛이 저장된 위치를 식별한다. 도 7 L0-I and L0-D)에 포함된 기존의 캐시에는 여전히 캐시 데이터 유닛과 연관된 어드레스 태그가 있을 수 있다.
도 8은 방법 실시 예를 도시하며, 다른 방법 실시 예와 함께 아래에서 상세히 설명될 것이다.
전술한 실시 예의 동작은 그러한 실시 예를 채용하는 다중 프로세서 시스템에서 발생할 실제 메모리 액세스 트랜잭션을 참조함으로써 더 잘 이해될 수 있다. 예를 들어, 도 9 내지 도 13은 도 6에 도시된 데이터 캐시 계층 구조와 CLB 계층 구조 사이에서 일정한 일관성 및 결정론을 유지하기 위해 실시 예에 의해 사용될 수 있는 시퀀스를 설명한다. 도 7에서 설명한 다중 프로세서 시스템의 일관성과 결정성을 유지하기 위해 비슷한 시퀀스를 사용할 수도 있다.
도 9 내지 도 13은 도 6에서 식별된 4개의 다른 요소들 사이의 통신 단계를 포함하여 번호가 매겨진 단계들을 도시하며, 이들은 도 9-13의 상단에 있는 블록들에 의해 표현된다: 특히, 이 네 가지 요소는 다음과 같다: 1)예를 들어, 그 노드 내에서 국부적으로 충족될 수 없는 노드 내부에서 시작된 요청에 의해, 동작이 시작되는 노드인 요청자 노드(requestor node)(예를 들어, 601), 2) 제1 노드 내지 제 N 노드에 저장된 CLB 정보에 대한 배킹 스토어(backing store)(spill/fill)로서 작용하며 또한 데이터 유닛을 일관성있게 유지하기 위한 글로벌 코히어런스 동작에 참여하는 DIR(660), 3)데이터 유닛에 대한 마스터 위치, 예를 들어 LLC(670)에서의 위치(671), 및 4)"PB 노드"를 집합적으로 나타내는 요소(즉, DIR(660)에 설정되고 대응하는 요청된 데이터 노드 이외의 데이터 유닛에 대응하는 PB 비트를 갖는 노드), 또는 슬레이브 노드로 명명됨.
당업자는 단계들의 일부가 병렬로 수행될 수 있고 단계들 사이에 다른 가능한 순서들이 있을 수 있음을 알지만, 채택된 단계들은 하나의 번호가 붙여진 시퀀스로서 이들 실시예들에서 설명된다.
도 9를 참조하면, 본 도면은 실시 예에 따라 요청 노드(601)에서 CLB 히트와 조합하여 글로벌 코히어런트 "읽기 미스(read miss)" (예를 들어, 노드(601)에 존재하지 않는 데이터 유닛에 대해 제1 노드(601)에서 개시된 읽기 요청 수신)를 해결하는데 필요한 글로벌 및 로컬 단계를 도시한다. 데이터 유닛의 마스터 위치는 LLC(670) 내에서 위치(671)에 있다. 본 예시는 PR 및 SR 영역 모두에 적용할 수 있다. 이하의 단계들이 수행된다:
901 단계) 노드(601)는 자신의 CLB 중 하나를 히트하고, LI로부터 글로벌 읽기 요청이 필요한지를 결정하고, LI 정보를 이용하여 데이터 유닛의 마스터 위치(671)를 목표로 하는 읽기 요청(ReadReq)을 형성한다.
902 단계) ReadReq 요청에 제공되는 정보는 캐시(LLC(670)) 및 데이터 유닛이 상주하는 위치(671)를 찾기에 충분하다. 그 결과, 데이터 응답(Data)이 제1 노드(601)로 되돌려 보내진다.
903 단계) 노드(601)는 노드 내의 적절한 로컬 위치(LL), 예를 들어 자유로운 위치, 자유롭게 할 수 있는 위치 또는 다른 방법으로 이용 가능한 위치를 찾고, 데이터 유닛과 연관된 대응하는 로컬 CLB 엔트리의 위치 정보(LI)를 그 로컬 위치를 가리키도록 변경한다.
904 단계) 로컬 위치는 상태 공유(S) 상태로 표시되어 복사본이 판독 가능하지만 기록 가능하지 않음을 나타낸다.
이 데이터 유닛에 대한 마스터 사본은 위치(671)로 유지되기 때문에 DIR(660)이나 슬레이브 노드가 없는 통신이 필요하지 않다(또는 위치(671)와 "PB노드들(690 및 699)" 블록 사이의 신호를 통해 표시된다).
도 10을 참조하면, 본 도면은 일 실시 예에 따른 요청 노드에서 CLB 미스와 함께 글로벌 코히어런트 "읽기 미스"를 해결하는 데 필요한 글로벌 및 로컬 단계를 도시한다. 본 예시는 SR 및 UR 영역 모두에 적용할 수 있다(요청된 데이터 유닛에 해당하는 DIR에 설정된 PB 비트수는 1이 아니다). 이하의 단계들이 수행된다:
1001 단계) 노드(601)는 자신의 로컬 CLB에서 대응하는 엔트리를 찾을 수 없고, DIR(660)을 목표로 읽기 요청 CLB 미스(Read Request CLB Miss)(ReadReqCM)를 형성한다.
1002 단계) DIR(660)은 이 영역을 차단된 것으로 표시한다(가능하다면 제한된 해시-잠금 풀에서 잠금을 취함으로써).
1003 단계) DIR(660)은 노드(601)에 대응하는 PB 비트를 1과 동일하게 설정한다.
1004 단계) DIR(660)은 마스터 위치가 위치(671)임을 결정하고 그 위치에 읽기 요청을 전송한다.
1005 단계) 병렬로, DIR(660)은 CLB 정보를 노드(601)로 전송하여 데이터 유닛과 관련된 로컬 CLB 엔트리를 생성할 수 있게 한다.
1006 단계) 데이터는 마스터 위치(671)로부터 요청 노드(601)로 전송된다.
1007 단계) 노드(601)는 노드 내에서 적절한 로컬 위치(LL)를 찾고 그 로컬 위치를 가리키도록 CLB 엔트리를 변경한다.
1008 단계) 로컬 위치는 상태 공유(S)로 표시되어 복사본이 판독 가능하지만 기록 가능하지 않음을 나타낸다.
1009 단계) 요청 노드(601)는 DIR(660)에 완료 메시지(Cmp)를 전송한다.
1010 단계) DIR(660)은 영역을 차단 해제한다.
도 11을 참조하면, 본 도면은 일 실시 예에 따른 요청 노드에서의 CLB 미스와 함께 글로벌 코히어런트 "읽기 미스"를 해결하는 데 필요한 글로벌 및 로컬 단계를 도시한다. 본 예시는 PR 영역에 적용 가능하다(요청된 데이터 유닛에 대응하는 DIR에 설정된 PB 비트의 수는 1이다). 본 예시에서는 PB 비트가 노드(690)에서만 설정되어 있다고 가정한다. 이하의 단계들이 수행된다:
1101 단계) 노드(601)는 자신의 로컬 CLB에서 대응하는 엔트리를 발견할 수 없고 DIR(660)을 목표로 하는 읽기 요청 CLB-미스(ReadReqCM)를 형성한다.
1102 단계) DIR(660)은 이 영역을 차단 된 것으로 표시한다.
1103 단계) DIR(660)은 노드(601)dp 대응하는 PB 비트를 설정한다.
1104 단계) DIR(660)은 그 영역이 PR이고 그것이 최신 CLB 정보를 갖고 있지 않다고 결정한다. 그 CLB는 DIR의 RI필드 (663)에 대응하는 PB 비트가 설정되어 있기 때문에 CLBReq가 노드(690)로 보내진다.
1105 단계) 노드(690)의 CLB는 영역에 대한 분류 PR을 나타내는 영역 정보(RI)를 소거한다.
1106 단계) 노드(690)는 미해결 다이렉트-투-데이터 읽기 요청을 완료하면 CLB 정보를 DIR(660)에 다시 응답한다.
1107 단계) DIR(660)은 CLB 정보를 요청 노드(601)에 전달하여 데이터 유닛과 관련된 로컬 CLB 엔트리를 생성할 수 있게 한다.
1108 단계) 노드(690)는 요청된 데이터에 대한 마스터 위치가 위치(671)임을 결정하고 그 위치에 읽기 요청을 보낸다.
1109 단계) 데이터는 요청 노드(601)로 전송된다.
1110 단계) 노드(601)는 노드(LL) 내의 로컬 위치를 찾고 그 로컬 위치를 가리키도록 로컬 CLB 엔트리를 변경한다.
1111 단계) 로컬 위치는 상태 공유(S)로 표시되어 복사본이 판독 가능하지만 기록 가능하지 않음을 나타낸다.
1112 단계) 노드(601)는 DIR(660)에 완료 메시지(Cmp)를 보낸다.
1113 단계) DIR(660)은 영역을 차단 해제한다.
도 12를 참조하면, 본 도면은 일 실시 예에 따른 요청 노드에서의 CLB 히트의 조합에서 글로벌 코히어런트 "쓰기 업그레이드 미스"를 해결하는 데 필요한 글로벌 및 로컬 단계를 도시한다. 본 예시는 SR 영역에 적용 가능하다(해당 데이터 유닛의 DIR에 설정된 PB 비트 수는 1보다 크다). 본 예시에서는 PB 비트가 노드(690) 및 노드(699)에 대해 설정되어 있다고 가정한다. 이하의 단계들이 수행된다.
1201 단계) 노드(601)는 자신의 로컬 CLB에서 대응하는 엔트리를 찾아 공유 상태(S)에서 데이터 유닛의 로컬 사본을 가지며 DIR(660)을 타겟으로 하는 무효화 요청(InvReg)을 형성한다.
1202 단계) DIR(660)은 이 영역을 차단 된 것으로 표시한다.
1203 단계) DIR(660)은 노드(601)를 가리키도록 요청된 데이터 유닛에 대응하는 LI를 설정한다.
1204 단계) DIR(660)은 DIR(660), 즉 노드(690 및 699)에 설정된 그들의 대응하는 PB 비트와 함께, 양쪽 슬레이브에 무효화 요청(Inv)을 전송한다.
1205 단계) 양쪽 슬레이브 노드들(690 및 699)은 노드(601)를 가리키도록 요청된 데이터 유닛에 대응하는 그들의 LI를 설정한다.
1206 단계) 양쪽 슬레이브 노드(690 및 699)는 자신이 가질 수 있는 데이터 유닛의 로컬 복사본이 더 이상 액세스 될 수 없음을 확인한다(무효 상태(상태:= I)로의 상태 변경에 의해 도시 됨).
1207 단계)양 슬레이브 노드들(690 및 699) 모두는 응답 메시지(acknowledge messages)를 요청 노드(601)에 보낸다.
1208 단계) 요청 노드가 모든 확인 응답 메시지(수신할 메시지의 수는 메시지 자체에 의해 운반될 수 있다)를 수신한 다음, 노드(601)에서 데이터 유닛의 복사본은 복사본이 판독 가능하고 기입 가능함을 표시하는 상태 배타적(state exclusive)(E)으로 표시된다.
1209 단계) 노드(601)는 DIR(660)에 완료 메시지(CMP)를 전송한다.
1210 단계) DIR(660)은 영역의 차단을 해제한다.
도 13을 참조하면, 본 도면은 일 실시 형태에 따른 노드(601)로부터의 글로벌 코히런트 제거 요청을 해결하기 위해 필요한 글로벌 및 로컬 단계를 도시한다. 예를 들어, 노드(601)는 LLC(670)에서 위치(671)로 제거되어야 하는 캐쉬LY(640)에 데이터 유닛의 더티 복사본을 저장할 수 있다. 본 예시는 DIR(660)의 관련 데이터 유닛에 대응하는 PB 비트가 노드(690) 및 노드(699)에 대해 설정되는 것으로 가정한다. 이하의 단계들이 수행된다:
1301 단계) 노드(601)는 데이터 유닛의 데이터 값을 새로운 위치(671)로 복사한다(CopyData).
1302 단계) 본 단계 동안 CopyData 연산이 이 데이터 유닛을 대상으로 하는 임의의 ReadReq가 데이터 유닛의 업데이트 된 복사본을 반환하도록 보장될 수 있는 지점에 도달했다고 판단된다. 이것은 예를 들어 네트워크 주문 속성(network ordering properties), 네트워크로부터 내부적으로 생성된 신호, 또는 CopyData 신호가 수신된 후에 복사된 신호를 노드(601)로 다시 전송함으로써 도 13의 실시 예에 도시된 바와 같이 달성될 수 있다.
1303 단계) 요청 노드(601)는 DIR(660)에 데이터를 제거하라는 요구(EvictReq)를 전송한다.
1304 단계) DIR(660)은 영역을 차단한다.
1305 단계) DIR(660)은 목표 위치(671)를 데이터 유닛에 대한 LI로 표시한다.
1306 단계) DIR(660)은 새로운 위치 정보(NewLI)를 DIR(660)에 설정된 그들의 대응하는 PB 비트, 즉 노드(690 및 699)와 함께 양 슬레이브에 전송한다.
1307 단계) 양쪽 슬레이브 노드들(690 및 699)은 타겟 위치(671)에 대응하는 그들의 LI를 설정한다.
1308 단계) 양 슬레이브 노드들(690 및 699) 모두는 요청 노드(601)에 확인 응답 메시지를 보낸다.
1309 단계) 요청 노드가 모든 확인 응답 메시지를 수신한 다음, 제거된 데이터 유닛에 의해 보유된 공간을 자유롭게 할 수 있다(상태:=1로 도시됨).
1310 단계) 노드(601)는 완료 메시지(Cmp)를 DIR(660)에 보낸다.
1311 단계) DIR(660)은 영역을 차단 해제한다.
DIR(660)은 도 12의 단계(1204)에서 유효한 CLB 엔트리를 갖는 모든 노드에 Inv 메시지를 전송한다는 것을 알 수 있다. 이로 인해 요청된 데이터 유닛을 읽은 것으로 알려진 노드에만 Inv 메시지를 보내는 일반적인 디렉토리 기반 코히어런스 프로토콜(directory-based coherence protocols)에 비해 더 많은 Inv 메시지가 전송될 수 있다. 일 실시 예에서, 이러한 효과는 노드가 불필요한 Inv 메시지들을 수신하는 것으로 검출되는 경우에 일부 CLB 엔트리들이 제거되는 CLB 제거(weeding)로서 공지된 기술에 의해 설명된다. 예를 들어, CLB 엔트리는 해당 영역의 데이터 유닛이 노드의 캐시가 없으며 영역에 대한 Inv 메시지가 수신되면 제거될 수 있다. 더 많은 Inv 메시지들을 전송할 잠재성에도 불구하고, 본 실시 예에서 제안된 시스템에 의해 전송된 메시지들의 전체 개수는 종래의 디렉토리-베이스 코히어런트 시스템들에 의해 전송된 메시지들의 수의 절반보다 적다는 것이 발명자들에 의해 경험적으로 밝혀졌다.
일 실시 예에서, DIR에서 PB 비트 표현으로 인해 너무 많은 코히어런트 메시지를 생성하기 위해 영역이 여전히 검출되는 경우, 영역은 미세 입자 영역(fine grain regions, FR)으로 알려진 특수 분류로 변환될 수 있다. FR 영역(매우 적은 것으로 예상됨)은 디렉토리 표현 기술(예를 들어, fully mapped, DirN-B, DirN-NB 또는 coarse-graind 표현)을 사용하여 각 캐시 라인과 연관된 공유 사본이 있는 노드 세트를 추적할 수 있는 특수 항목을 DIR에 가지고 있다. 영역의 CLB 항목은 FR 지역으로 표시되며 처음에는 위치 항목을 "알 수 없는"(DK) 기호로 설정한다. DIR이 요청된 데이터 유닛과 관련된 공유 사본을 가지고 있는 것으로 노드를 추적할 수 있게 하는 데이터 유닛의 위치를 찾기 위해 DIR을 참조하는 글로벌 코히어런스 읽기 요청을 프롬프트한다. 이 정보는 DIR이 캐시 라인을 요청하는 노드에만 Inv 메시지를 보낼 수 있게 한다.
일 실시 예에서, 노드는 자신의 CLB 엔트리(예를 들어, 610 내지 630)에 영역 정보(RI)의 일부로서 PB 비트를 저장한다. 이것은 일관된 쓰기 권한을 요구하는 노드가 디렉토리를 통해 간접적인 액세스를 하기보다는 슬레이브에 직접 무효화 요청을 전송할 수 있게 한다.
다중 프로세서 시스템의 캐시 코히어런스 프로토콜은 DIR 660과 관련하여 설명된 메커니즘과 같은 차단 메커니즘이 제공되면 크게 단순화될 수 있다. 그러나, 노드를 통한 다이렉트 통신이 디렉토리를 통한 회귀(indirections)보다 선호되는 상황이 있다. 예를 들어, PB 비트가 노드 CLB의 영역 정보(RI)의 일부로서 저장되어, 디렉토리 검색을 필요로 하지 않고 무효화 메시지가 노드들 사이에서 직접 전송되도록 하는 몇몇 실시 예가 있다. 차단 메커니즘을 디렉토리에서 분리하는 것이 유익하다. 이렇게 하면 여분의 디렉토리 검색 대기 시간과 에너지를 절약할 수 있다. 전송된 NoC 트랜잭션이 줄어들고 클록 도메인이 교차하지 않을 수 있다.
일 실시 예에서, 네트워크는 특정 메시지가 네트워크를 통해 전송되는 것을 차단하는 차단 기능을 구현한다. 이는 네트워크에 통합된 잠금 배열(array of locks)로 구현될 수 있는데, 여기서 메시지와 연관된 어드레스의 일부는 메시지에 해당하는 잠금을 선택하는 데 사용된다. 특정 유형의 메시지가 네트워크에서 전송되면 해당 잠금이 획득될 수 있다(잠금이 설정됨). 잠금이 유지되는 동안 특정 유형의 다른 메시지는 네트워크에서 전송되지 않는다. 잠금은 이전에 코히어런스 프로토콜에 의해 지정된 이벤트에 의해 해제될 필요가 있고, 잠금과 관련된 차단 된 메시지가 전송될 수 있다.
잠금을 획득하는 메시지는 브로드 캐스트 타입(broadcast type)일 수 있으며, 이는 하나 이상의 노드가 메시지를 수신할 수 있음을 의미한다. 일 실시 예에서, 메시지를 수신하는 하나 이상의 노드는 차단된 메시지가 전송되기 전에 연관된 잠금을 해제하기 위해(코히어런스 프로토콜에 의해 지정된 바와 같이) 동작을 취할 필요가 있다. 일 실시 예에서, 송신 노드는 로크가 해제될 때 통지를 받는다.
일 실시 예에서, 요청 노드에 의해 개시된 단일 쓰기 요청은 여러 슬레이브 노드에 전송된 무효화 브로드캐스트 메시지를 생성할 수 있으며, 이는 잠금을 획득하게 할 것이다. 각각의 슬레이브 노드는 데이터 유닛을 무효화하고 잠금 장치에 잠금 메커니즘을 적용한다. 모든 슬레이브 노드가 해제 메커니즘을 적용하면 잠금이 해제되고 요청 노드는 알림을 받고 쓰기 권한이 부여된다. 이는 노드에서 시작된 쓰기 요청에 다음 단계가 포함되는 기존의 디렉토리 기반 코히어런스 시스템과 비교되어야 한다: 쓰기 요청이 디렉토리로 전송; 디렉토리는 잠그고 슬레이브 노드에 무효화 메시지를 보냄; 슬레이브 노드는 데이터 유닛을 무효화하고 Ack 메시지를 전송; 요청 노드는 모든 Ack가 수신되고 쓰기 허가를 얻는지를 검출; 디렉토리에서 잠금이 해제.
여기에 설명된 메커니즘은 종래의 태그 기반 캐시로 구축된 종래의 디렉토리 기반 코히어런트 캐시 메모리 시스템과 비교하여 많은 중요한 차이점을 갖는다. 다음의 고유한 특성들 중 하나 이상을 갖는 실시 예가 설명된다:
1)데이터 위치의 읽기 가능한 사본을 찾을 수 있는 위치를 식별하는 캐시 위치 정보는 CPU에 가까운 이른바 캐시 된 위치 버퍼(CLB)에 캐시된다.
2)CLB는 별도의 "데이터 캐시 계층 구조"에 데이터 유닛이 저장되는 위치에 대한 "메타 데이터" 정보를 저장하는 루트에 DIR 디렉토리가 있는 분리된 "CLB 캐시 계층 구조"를 형성한다. 이는 각 캐시 라인과 연관된 어드레스 태그 "메타 데이터"를 저장하여 그 식별 정보를 식별하고 요청된 데이터 유닛에 대한 각 레벨을 검색해야 하는 기존의 캐시와는 다르다. CLBs + DIR 은 계층적 방식으로 구성되고 검색된다.
3)"데이터 캐시 계층 구조"의 데이터 캐시는 기존 캐시에서 일반적으로 사용되는 것처럼 계층적 방식으로 구성 및 검색할 필요가 없다.
4)디렉토리는 "PB 비트"를 사용하여 영역의 캐시 라인 사본을 가질 수 있는 (또는 영역에 액세스 할 수 있는) 노드를 추적한다. 이 정보는, 예를 들어 무효화 메시지(Inv)와 같은 일부 일관된 메시지를 조정하는 데 사용된다. 이것은 각 캐시라인과 연관된 공유 사본을 가질 수 있는 노드 집합을 추적하는 것보다 일반 디렉토리와 다르다.
5)오직 하나의 노드만 접근할 수 있고 로컬 데이터 유닛의 사본을 캐시할 수 있는 프라이빗 영역이 탐지된다.
이러한 기능을 통해 기존 디렉토리 기반 코히어런트 메모리 시스템에는 없는 몇 가지 고유한 속성을 사용할 수 있다.
●글로벌 코히어런트 요청의 80%는 하나의 노드만 데이터에 엑세스 할 수 있으며, 예를 들어 위의 특성 (5)로 인해 액세스 된 데이터의 캐시 복사본을 가질 수 있으므로 일관성을 고려할 필요가 없다.
●로컬 캐시 된 위치 정보는 데이터가 어디에 위치하는 지를 알려줄 수 있고(예를 들어, 위의 특성 (1)로 인해), 각 캐시 라인과 관련된 공유된 복사본을 가질 수 있는 노드 세트를 추적하기 때문에(위의 특성 (4)로 인해), 전역 일관된 읽기 요청은 디렉토리를 참조할 필요가 없다.
●LLC는 LLC 슬라이스로 분할되며, 여기서 LLC 슬라이스로의 데이터 유닛의 할당은 자유롭게 행해질 수 있고, 예를 들어, 상기 특성 (1)로 인하여 데이터 유닛의 어드레스에 의존하지 않는다. LLC 슬라이스는 노드 가까이에 배치되며 스마트 휴리스틱은 노드가 LLC 슬라이스에서 데이터 유닛에 액세스 할 가능성을 높이기 위해 사용된다.
●읽기 액세스는, 예를 들어 상기 특성 (1)로 인해 그러한 로컬 LLC 에서 요청된 데이터 유닛을 찾을 수 있고, 예를 들어 상기 특성 (4)로 인해 디렉토리를 참조할 필요없이 슬라이스 할 수 있다.
본 발명자에 의해 수행된 경험적 연구에 따르면, 제안된 기술은, L1 미스의 평균 대기 시간을 평균 30% 줄이면서, 광범위한 NoC 메시지의 수, NoC를 통해 전송되는 데이터의 양 및 사용된 총 에너지를 모두 광범위한 애플리케이션 세트를 통해 평균 50% 이상 감소시킨다는 것을 보여주었다.
전술한 실시 예들로부터, 실시 예의 다양한 일반적인 특징들이 주목될 수 있다. 이러한 특징들은 일부 실시 예들에서 또는 다른 실시 예들에서 다양한 조합 및 서브 조합으로 함께 사용될 수 있다. 예를 들어, 캐시 위치 버퍼(CLB)는 다중 프로세서 캐시 계층 구조에서 캐시 라인의 위치를 추적하는 데 사용된다. 캐시 계층 구조는 상이한 크기 및/또는 액세스 시간의 하나 또는 다수의 캐시를 포함할 수 있다. 각각의 캐시는 연관 방법으로 저장된 복수의 캐시 라인을 저장할 수 있으며, 예를 들어, 다수의 세트로 분할되고, 각각은 다수의 방법을 포함한다. 캐시 라인을 식별하는 어드레스가 캐시 라인이 상주 해야하는 캐시 내의 세트를 식별하는 데 사용될 수 있지만, 그 위치 어드레스의 식별정보는 검색없이 그 어드레스에 의해 결정될 수 없다.
일부 실시 예에 따른 CLB의 하나의 태스크(task)는, 특정 캐시 라인을 저장하는 캐시 레벨, 그 캐시 라인을 저장하는 노드 또는 캐시 라인이 캐시 계층 구조에 전혀 존재하지 않는다고 효율적으로 결정하는 캐시 레벨 내의 캐시 및 위치를 효율적으로 찾는 것이다. 이와 관련하여, "효율적으로"란 적은 에너지 사용, 보다 신속한 운영, 적은 저장 공간 사용, 일부 조합 또는 기타 유익한 결과를 의미할 수 있다.
CLB는 몇몇 실시 예에 따라 복수의 캐시 테이블 엔트리(CTE)를 저장하는 연관 구조로서 구현될 수 있다. 이러한 각 엔트리는 예를 들어 어드레스 태그 및 그 CTE에 의해 식별되는 캐시 라인 그룹에 대한 위치 정보를 저장한다. CLB는 크고 느린 CLB를 바탕으로 보다 작고 빠른 CLB를 계층적으로 구현할 수 있다. 서로 다른 CLB 레벨은 가상 또는 물리적 어드레스를 사용하여 액세스하도록 설계될 수 있다.
요청된 캐시 라인의 위치는 CLB의 검색에 의해 결정되고, 그 후에 캐시 라인은 임의의 다른 연관 검색(associative lookups)을 필요로하지 않고 그 결정된 레벨 및 위치에서 액세스 될 수 있다. 이렇게 하면 캐시 계층 구조에 추가 어드레스 태그를 저장해야 할 필요가 없다.
상기 실시 예들의 다양한 변형 및 치환이 고려된다. 예를 들어, 일 실시 예에서, CTE와 관련된 위치 정보 비트들의 수는 상이한 CLB 레벨들에 대해 상이할 수 있고, CLB 레벨들 간의 LI 정보의 복사는 부분적인 복사 동작들일 수 있다. 다른 실시 예에서, 제1 레벨 CLB의 기능은 TLB의 기능과 통합되거나 TLB에서 공통적으로 발견되는 기능의 일부를 포함한다. 이러한 구현 예에서 CLB 항목에는 가상 어드레스 태그(VAT), 캐시 위치 테이블(CLT), 액세스 권한 인코딩 및 실제 어드레스 변환과 TLB 구현에서 흔히 볼 수 있는 기타 메타 데이터가 포함될 수 있다. 더욱이, 비록 상기 예들이 최대 2개의 캐시 레벨 및 2개의 CLB 레벨을 포함하나, 당업자라면 더 많은 레벨의 캐시 및 CLB 레벨에 적용하도록 일반화 될 수 있다는 것을 이해할 것이다. 캐시 레벨의 수와 CLB 레벨의 수는 동일해야 한다는 요구 사항은 없다. 또한, CLB의 마지막 레벨이 종래 (메인) 메모리의 전용 영역으로 유출되어 채워져 CLB 캐시로 작동할 수 있음을 이해할 수 있다.
일 실시 예에 있어서, CTE의 정보는 그와 관련된 캐시 라인들과 관련된 다른 메타 데이터를 포함할 수 있고, 상기 다른 메타 데이터는, 그들의 액세스 패턴 및 과거의 사용법, 캐시 라인 상태, TLB에 정상적으로 저장된 보호 정보 및 물리적 어드레스를 생성하는데 필요한 물리적 어드레스 부분에 관한 정보를 포함한다(이에 제한되지는 않음). 이 데이터 중 일부는, 예를 들어 413 및 425의 영역 정보(RI) 필드에 저장될 수 있다.
실시 예들은 또한 방법들로서 표현될 수 있으며, 그 예가 도 8의 흐름도에서 방법(800)으로서 제공된다. 여기서, 단계 802에서, 데이터 유닛은 다중 프로세서 시스템의 노드 내의 프라이빗 캐시에 저장되고, 각각의 노드는 적어도 하나의 프로세서(CPU), 노드에 전용인 적어도 하나의 캐시 및 노드에 전용인 적어도 하나의 캐시 위치 버퍼(CLB)를 포함한다. 단계 804에서, 각각의 CLB 에서, 위치 정보 값들이 저장되고, 각각의 위치 정보 값은 각각의 데이터 유닛과 관련된 위치를 나타내며, 주어진 CLB에 저장된 각 위치 정보 값은, 주어진 CLB와 동일한 노드에 배치된 프라이빗 캐시 내의 위치, 다른 노드 중 하나의 위치, 또는 메인 메모리의 위치 중 어느 위치가 될 지 지시한다. 데이터 유닛의 값들의 일관성은 단계 806에서 캐시 코히런스 프로토콜을 사용하여 유지된다. CLB에 저장된 위치 정보 값은 각각의 데이터 유닛의 움직임에 따라 캐시 일관성 프로토콜에 의해 갱신된다.
도 14의 흐름도에 도시된 또 다른 방법 실시 예에 따르면, 방법(1400)은 다중 프로세서 시스템의 노드들 및 글로벌 캐시들 및 메모리에 있는 프라이빗 캐시에 데이터 유닛을 저장하는 단계를 포함하고, 각 노드는 적어도 하나의 프로세서(CPU), 단계 1402에서 노드에 전용인 적어도 하나의 캐시를 포함한다. 프라이빗 및 글로벌 캐시에 저장된 데이터 유닛의 일관성은 단계 1404에서 데이터 유닛에 대한 영역 정보를 저장하는 디렉토리에서 검색을 수행하는 캐시 코히어런스 프로토콜을 사용하여 유지된다. 위치 정보는, 단계 1406에 의해, 노드, 글로벌 캐시 또는 메모리 중 데이터 유닛이 상주하는 위치를 식별한다.
도 15에 도시된 또 다른 방법 실시 예에 따르면, 방법(1500)은 단계 1502에서 다중 프로세서 시스템의 노드 및 글로벌 캐시 및 메모리의 프라이빗 캐시에 저장되는 데이터 유닛을 포함하며, 각각의 노드는 적어도 하나의 프로세서(CPU), 상기 노드에 전용인 적어도 하나의 캐시를 포함하고, 상기 노드는 네트워크를 통해 접속된다. 캐시에 저장된 데이터 유닛의 값의 일관성은 단계 1504에서 네트워크상의 코히어런스 메시지를 전송하는 분산 캐시 코히어런스 프로토콜(distributed cache coherence protocol)에 의해 유지된다. 일부 코히어런스 메시지는, 단계 1506에서, 네트워크 상에서 전송되는 것이 차단되고, 상기 코히어런스 메시지를 송신하는 단계는 상기 다른 코히어런스 메시지들이 상기 코히어런스 메시지와 동일한 어드레스 영역에 대한 것이면 다른 코히어런스 메시지들을 차단하도록 상기 차단 기능을 활성화한다(단계 1508로 도시됨).
도 8, 도 14 및 도 15에 도시된 단계들은 다양한 순서로 수행될 수 있고, 일부 단계는 병렬로 또는 순차적으로 수행될 수 있다. 이러한 방법 실시 예, 상술한 시스템 실시 예 및 다른 실시 예는 다양한 유익한 결과를 제공할 수 있다. 예를 들어, 출원인은 본 명세서에 기술된 실시 예와 관련된 캐시 구현이 종래의 캐시 시스템과 비교하여 상당한 에너지를 절약할 수 있고 또한 액세스 시간이 상당히 짧은 캐시가 될 수 있다는 것을 보여준 상세한 시뮬레이션 연구를 수행했다.
명료함을 위해, 본 명세서의 대부분의 설명은 일반적으로 캐시 라인이 어떻게 요구되고 요청된 CPU에 리턴되는지에 대한 설명을 기술한다. 이 설명은 캐시 라인 내에 포함된 요청된 워드가 선택되어 CPU로 리턴되는 다양한 방식을 상세하게 기술하지 않으며, 이는 당업자에게 명백할 것이며 본 발명을 불필요하게 불명료하게 할 것이다.
특정 예시적인 컴퓨터 아키텍쳐와 관련하여 위에서 설명되었지만, 캐싱은 컴퓨터 시스템 내부뿐만 아니라 외부의 많은 다른 설정들에 존재하며, 상기 실시 예들은 이러한 다른 상황들에 동등하게 적용 가능하다. 이러한 용도의 예로는 디스크 또는 플래시 메모리와 같은 저속 대용량 저장 장치의 데이터를 동적 RAM을 사용하여 구현할 수 있는 더 빠르고 작은 대용량 메모리로 캐시하는 가상 메모리 시스템이 있다. 컴퓨터 시스템에서의 캐싱의 다른 예로는 디스크 캐싱(disk caching), 웹 캐싱(web caching) 및 이름 캐싱(name caching)이 있으나 이에 한정되는 것은 아니다. 그러한 캐시들의 구성 및 캐싱 메커니즘은 상술된 캐시들의 구성 및 캐싱 메커니즘들, 예를 들어, 세트의 크기, 세트들의 구현 및 연관성 들과 다를 수 있다. 캐싱 메커니즘 그 자체의 구현에 무관하게, 여기에 기술된 실시 예들은 다양한 캐싱 방식을 구현하는 데 동등하게 적용 가능하다.
개시된 실시 예들은, 예를 들어 다양한 캐시 계층 구조와 관련된 시스템 및 방법을 설명한다. 이 설명은 본 발명을 제한하려는 것이 아니라는 것을 이해해야 한다. 반대로, 예시적인 실시 예들은 본 발명의 사상 및 범위에 포함되는 대안, 수정 및 등가물을 포함하도록 의도된다. 또한, 예시적인 실시 예들의 상세한 설명에서, 본 발명의 포괄적인 이해를 제공하기 위해 다수의 특정 세부 사항들이 설명된다. 그러나, 당업자는 다양한 실시 예가 그러한 특정 세부 사항 없이 실시 될 수 있음을 이해할 것이다.
비록 본 실시 예의 특징 및 요소가 실시 예에서 특정 조합으로 설명되었으나, 각 특징 또는 요소는 실시 예의 다른 특징 및 요소 없이 단독으로 사용될 수 있고, 또는 본 명세서에 개시된 다른 특징 및 요소를 갖거나 가지지 않는 다양한 조합으로 사용될 수 있다. 본 출원에 제공된 방법 또는 흐름도는 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 컴퓨터 판독 가능 저장 매체(computer readable storage medium)에 명백히(tangibly) 구체화 된 컴퓨터 프로그램, 소프트웨어 또는 펌웨어로 구현될 수 있다.
이러한 서술된 설명은 임의의 장치 또는 시스템을 제작 및 사용하고 임의의 통합된 방법을 수행하는 것을 포함하여 당업자가 동일한 것을 실시할 수 있게 하기 위해 개시된 주제의 예를 사용한다. 주제의 특허 가능한 범위는 청구 범위에 의해 규정되며, 당업자에게 가능한 다른 예를 포함할 수 있다. 이러한 다른 예들은 청구 범위의 범주 내에 있는 것으로 의도된다.

Claims (20)

  1. 다중 프로세서 시스템에 있어서,
    복수의 노드들 및 적어도 하나의 메모리를 포함하고,
    각각의 노드는 적어도 하나의 프로세서(CPU), 상기 노드에 전용인 적어도 하나의 캐시 및 상기 노드에 전용인 적어도 하나의 캐시 위치 버퍼(cache location buffer, CLB)를 포함하고,
    각각의 CLB는 위치 정보 값들을 저장하고, 각각의 위치 정보 값은 각각의 데이터 유닛과 관련된 위치를 나타내고,
    주어진 CLB에 저장된 각 위치 정보 값은 주어진 CLB와 동일한 노드에 배치된 프라이빗 캐시 내의 위치, 다른 노드들 중 하나의 위치 또는 메모리 내의 위치가 될 위치를 가리키고,
    상기 데이터 유닛의 값은 캐시 코히런스 프로토콜(cache coherence protocol)에 의해 일관성을 유지하고, 상기 캐시 코히런스 프로토콜은 각각의 데이터 유닛의 움직임에 따라 상기 위치 정보 값을 업데이트하는 것을 특징으로 하는 다중 프로세서 시스템.
  2. 제1 항에 있어서, 상기 다중 프로세서 시스템은,
    상기 노드들 중 임의의 노드에 상주하지 않는 적어도 하나의 글로벌 캐시를 포함하고, 상기 위치 정보 값은 또한 상기 적어도 하나의 글로벌 캐시 내의 위치를 식별할 수 있는 다중 프로세서 시스템.
  3. 제1 항 또는 제2 항에 있어서, 상기 코히런스 프로토콜은, 상기 데이터 유닛이 하나 이상의 동일한 노드에 대해 전용인 하나 이상의 CLB에 저장된 각각의 위치 정보 값만을 갖는 경우, 상기 데이터 유닛의 연속 영역을 프라이빗 영역으로 분류하는 것을 특징으로 하는 다중 프로세서 시스템.
  4. 제1 항에 있어서, 상기 데이터 유닛들에 관한 위치 정보를 저장하는 적어도 하나의 글로벌 디렉토리를 더 포함하고, 상기 글로벌 디렉토리는 상기 코히어런스 프로토콜을 구현함에 사용되고, 상기 노드들은 상기 글로벌 디렉토리로, 및 상기 글로벌 디렉토리로부터 위치 정보를 스필 및 필(spill and fill) 할 수 있는 다중 프로세서 시스템.
  5. 제1 항에 있어서, 상기 연속 영역은 어느 노드가 상기 노드에 전용인 CLB에 저장된 상기 연속 영역과 연관된 데이터 유닛에 대한 위치 정보를 갖는 지와 관련된 정보를 갖는 다중 프로세서 시스템.
  6. 제5 항에 있어서, 상기 노드에 전용인 CLB에 저장된 상기 연속 영역과 연관된 상기 데이터 유닛들에 대한 위치 정보를 갖는 것으로 표시된 노드들만이 각각의 프라이빗 캐시들에 저장된 상기 관련 데이터 유닛들의 사본(copy)을 가질 수 있는 다중 프로세서 시스템.
  7. 제4 항에 있어서, 요청 노드로부터 상기 디렉토리로 전송된 데이터 유닛에 대한 글로벌 무효화 요청을 처리하는 단계는:
    상기 데이터 유닛 및 그 영역과 연관된 정보를 찾기 위해 상기 디렉토리에서 검색(lookup)을 수행하는 단계;
    요청 노드를 제외한 노드에서, 자신의 프라이빗 캐시에 복사본이 있을 가능성이 있는 것으로 표시된 노드에서 데이터 노드의 복사본을 무효화 하는 단계; 및
    상기 데이터 유닛에 대한 위치 정보를 갖도록 지시된 노드들과 관련된 상기 프라이빗 CLB들 내의 위치 정보를 업데이트하는 단계를 더 포함하는 다중 프로세서 시스템.
  8. 제4 항에 있어서, 노드로부터 새로운 위치로 데이터 유닛의 제거를 처리하는 단계는:
    데이터 유닛의 값을 새로운 위치로 복사하는 단계; 및
    상기 데이터 유닛에 대한 위치 정보를 저장하는 노드들과 관련된 상기 개인 CLB들에서 상기 데이터 유닛의 위치 정보를 업데이트하는 단계를 포함하는 다중 프로세서 시스템.
  9. 제4 항에 있어서, 상기 디렉토리는 특정 코히어런스 요청이 상기 디렉토리에 의해 서비스되는 것을 차단하는 차단 기능을 구현하는 것을 특징으로 하는 다중 프로세서 시스템.
  10. 제4 항에 있어서, 상기 프라이빗 CLB 및 상기 디렉토리는 모두 위치 정보를 저장하고, 개별적 포괄 캐시 계층 구조(separate inclusive cache)를 형성하고, 상기 데이터 유닛을 저장하는 상기 로컬 및 글로벌 캐시는 비-포괄 계층(non-inclusive hierarchy)을 형성하는 것을 특징으로 하는 다중 프로세서 시스템.
  11. 다중 프로세서 시스템에 있어서,
    복수의 노드들, 하나 이상의 글로벌 캐시 및 적어도 하나의 메모리를 포함하고,
    각각의 노드는 적어도 하나의 프로세서 (CPU) 및 상기 노드에 전용인 적어도 하나의 캐시를 포함하고,
    상기 캐시들에 저장된 데이터 유닛의 값들은 상기 데이터 유닛들에 대한 위치 저보를 저장하는 디렉토리에서 검색(lookup)을 수행하는 캐시 코히어런스 프로토콜에 의해 일관성이 유지되고,
    상기 위치 정보는 상기 데이터 유닛이 상주하는 위치를 노드, 글로벌 캐시 또는 메모리 중 하나 인 것으로 식별하는 것을 특징으로 하는 다중 프로세서 시스템.
  12. 제11 항에 있어서, 글로벌 캐시를 식별하는 상기 위치 정보는 또한 상기 캐시 내의 위치를 상기 데이터 유닛에 대한 위치로서 식별하는 다중 프로세서 시스템.
  13. 제11 항에 있어서,
    하나 이상의 노드가 요청된 데이터 유닛들에 대해 공간을 할당할 수 있는 복수의 글로벌 캐시들을 더 포함하고, 하나 이상의 노드는 다른 글로벌 캐시보다 그들에 더 가깝게 배치된 복수의 글로벌 캐시 중 하나를 가지고, 데이터 유닛 배치를 글로벌 캐시에 매핑하는 것은 데이터 유닛의 어드레스와 독립적으로 행해지는 것을 특징으로 하는 다중 프로세서 시스템.
  14. 제11 항에 있어서, 어느 글로벌 캐시에 데이터 유닛이 할당되어야 하는지를 결정함에 사용되는 글로벌 캐시와 관련된 대체 카운터들(replacement counters)을 더 포함하는 다중 프로세서 시스템.
  15. 제11 항에 있어서, 상기 글로벌 캐시는 하나의 글로벌 캐시에 저장된 데이터 유닛의 하나의 공통 복사본에 모든 노드가 액세스하도록 구성되거나, 특정 글로벌 캐시에 데이터 유닛의 추가 복제된 복사본을 생성하도록 동적으로 결정되는 것을 특징으로 하는 다중 프로세서 시스템.
  16. 제11 항에 있어서, 데이터 유닛의 연속 영역은 디렉토리 내의 대응하는 위치 정보와 연관된 어드레스 태그를 가지고, 상기 어드레스 태그는 상기 영역을 식별하는 것을 특징으로 하는 다중 프로세서 시스템.
  17. 방법에 있어서,
    각각의 노드는 적어도 하나의 프로세서(CPU), 상기 노드에 전용인 적어도 하나의 캐시 및 상기 노드에 전용인 적어도 하나의 캐시 위치 버퍼(CLB)를 포함하는 다중 프로세서 시스템의 노드에서 프라이빗 캐시에 데이터 유닛을 저장하는 단계;
    각각의 CLB에 위치 정보 값들을 저장하고, 위치 정보값들 각각은 데이터 유닛 각각과 관련된 위치를 나타내고, 주어진 CLB에 저장된 각 위치 정보 값은 상기 위치가, 주어진 CLB와 동일한 노드에 배치된 프라이빗 캐시 내의 위치, 다른 노드 중 하나의 위치 또는 메인 메모리의 위치 중 어느 하나인지를 지시하는 단계;
    캐시 코히어런스 프로토콜을 사용하여 상기 데이터 유닛들의 값들의 일관성을 유지하는 단계; 및
    캐시 코히어런스 프로토콜에 의해, 각각의 데이터 유닛들의 움직임들에 따라 CLB들에 저장된 위치 정보 값들을 업데이트 하는 단계를 포함하는 방법.
  18. 제17 항에 있어서,
    상기 노드들 중 임의의 노드에 상주하지 않는 적어도 하나의 글로벌 캐시에 데이터 유닛들을 저장하고, 상기 위치 정보 값은 또한 상기 적어도 하나의 글로벌 캐시 내의 위치를 식별할 수 있는 것을 특징으로 하는 방법.
  19. 제17 항에 있어서, 상기 코히어런스 프로토콜은, 데이터 유닛이 하나 이상의 동일한 노드에 대해 전용인 하나 이상의 CLB에 저장된 각각의 위치 정보 값만을 갖는 경우, 데이터 유닛들의 연속 영역을 프라이빗 영역으로 분류하는 것을 특징으로 하는 방법.
  20. 제17 항에 있어서, 적어도 하나의 글로벌 디렉토리에 상기 데이터 유닛들에 대한 위치 정보를 저장하는 단계로서, 상기 글로벌 디렉토리는 상기 일관성 프로토콜을 구현하는 데 사용되고, 상기 노드들은, 상기 글로벌 디렉토리로 및 상기 글로벌 디렉토리로부터(to and from the global directory) 위치 정보를 스필 및 필(spill and fill) 할 수 있는 방법.
KR1020187012983A 2015-11-04 2016-11-04 다중 프로세서 시스템에서 코히어런트 메모리를 구현하기 위한 시스템 및 방법 KR20180078253A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562250653P 2015-11-04 2015-11-04
US62/250,653 2015-11-04
US201562258692P 2015-11-23 2015-11-23
US62/258,692 2015-11-23
PCT/IB2016/056655 WO2017077502A1 (en) 2015-11-04 2016-11-04 Systems and methods for implementing coherent memory in a multiprocessor system

Publications (1)

Publication Number Publication Date
KR20180078253A true KR20180078253A (ko) 2018-07-09

Family

ID=57286762

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187012983A KR20180078253A (ko) 2015-11-04 2016-11-04 다중 프로세서 시스템에서 코히어런트 메모리를 구현하기 위한 시스템 및 방법

Country Status (6)

Country Link
US (3) US10754777B2 (ko)
EP (1) EP3371707B1 (ko)
KR (1) KR20180078253A (ko)
CN (1) CN108475234B (ko)
SG (1) SG11201803730TA (ko)
WO (1) WO2017077502A1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200012277A (ko) * 2018-07-26 2020-02-05 고려대학교 산학협력단 멀티코어 기반의 단말 장치에 적용되는 잠금 패턴의 보안 강도를 측정하는 장치 및 방법
WO2020176832A1 (en) * 2019-02-28 2020-09-03 Micron Technology, Inc. Eviction of a cache line based on a modification of a sector of the cache line
US10908821B2 (en) 2019-02-28 2021-02-02 Micron Technology, Inc. Use of outstanding command queues for separate read-only cache and write-read cache in a memory sub-system
US11106609B2 (en) 2019-02-28 2021-08-31 Micron Technology, Inc. Priority scheduling in queues to access cache data in a memory sub-system
US11288199B2 (en) 2019-02-28 2022-03-29 Micron Technology, Inc. Separate read-only cache and write-read cache in a memory sub-system

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2560336B (en) * 2017-03-07 2020-05-06 Imagination Tech Ltd Address generators for verifying integrated circuit hardware designs for cache memory
KR102157354B1 (ko) 2017-11-20 2020-09-17 삼성전자 주식회사 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법
KR102151180B1 (ko) * 2017-11-20 2020-09-02 삼성전자주식회사 효율적인 가상 캐시 구현을 위한 시스템 및 방법
TWI795470B (zh) * 2017-11-20 2023-03-11 南韓商三星電子股份有限公司 資料管理方法、多處理器系統和非暫態計算機可讀儲存媒體
US11714753B2 (en) 2018-12-13 2023-08-01 Telefonaktiebolaget Lm Ericsson (Publ) Methods and nodes for handling memory
US11782835B2 (en) * 2020-11-30 2023-10-10 Electronics And Telecommunications Research Institute Host apparatus, heterogeneous system architecture device, and heterogeneous system based on unified virtual memory
US20230325316A1 (en) * 2022-04-11 2023-10-12 Arteris, Inc. System and method to enter and exit a cache coherent interconnect

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265232A (en) * 1991-04-03 1993-11-23 International Business Machines Corporation Coherence control by data invalidation in selected processor caches without broadcasting to processor caches not having the data
US6560681B1 (en) * 1998-05-08 2003-05-06 Fujitsu Limited Split sparse directory for a distributed shared memory multiprocessor system
US6108764A (en) 1998-12-17 2000-08-22 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system with multiple caches concurrently holding data in a recent state from which data can be sourced by shared intervention
US6266743B1 (en) 1999-02-26 2001-07-24 International Business Machines Corporation Method and system for providing an eviction protocol within a non-uniform memory access system
US7398304B2 (en) 2003-06-23 2008-07-08 Microsoft Corporation General dependency model for invalidating cache entries
US20060143384A1 (en) * 2004-12-27 2006-06-29 Hughes Christopher J System and method for non-uniform cache in a multi-core processor
US7454576B2 (en) 2004-12-27 2008-11-18 Intel Corporation System and method for cache coherency in a cache with different cache location lengths
US9026742B2 (en) * 2007-12-21 2015-05-05 Freescale Semiconductor, Inc. System and method for processing potentially self-inconsistent memory transactions
US8706982B2 (en) * 2007-12-30 2014-04-22 Intel Corporation Mechanisms for strong atomicity in a transactional memory system
US8327101B2 (en) * 2008-02-01 2012-12-04 International Business Machines Corporation Cache management during asynchronous memory move operations
US8806101B2 (en) * 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
WO2010142432A2 (en) 2009-06-09 2010-12-16 Martin Vorbach System and method for a cache in a multi-core processor
US8812796B2 (en) 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
EP2668565B1 (en) * 2011-01-27 2019-11-06 Intel Corporation Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor
US8891535B2 (en) * 2012-01-18 2014-11-18 International Business Machines Corporation Managing a global forwarding table in a distributed switch
CN103049422B (zh) * 2012-12-17 2013-11-27 浪潮电子信息产业股份有限公司 一种具有多cache一致性域的多处理器节点系统构建方法
US9514044B2 (en) * 2013-05-24 2016-12-06 Hewlett Packard Enterprise Development Lp Multi-level cache tracking table
WO2015075673A1 (en) * 2013-11-21 2015-05-28 Green Cache AB Systems and methods for reducing first level cache energy by eliminating cache address tags
JP2016004461A (ja) * 2014-06-18 2016-01-12 富士通株式会社 情報処理装置、入出力制御装置および情報処理装置の制御方法
US10437479B2 (en) * 2014-08-19 2019-10-08 Samsung Electronics Co., Ltd. Unified addressing and hierarchical heterogeneous storage and memory
US10146690B2 (en) * 2016-06-13 2018-12-04 Intel Corporation Synchronization logic for memory requests
US10579527B2 (en) * 2018-01-17 2020-03-03 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200012277A (ko) * 2018-07-26 2020-02-05 고려대학교 산학협력단 멀티코어 기반의 단말 장치에 적용되는 잠금 패턴의 보안 강도를 측정하는 장치 및 방법
WO2020176832A1 (en) * 2019-02-28 2020-09-03 Micron Technology, Inc. Eviction of a cache line based on a modification of a sector of the cache line
US10908821B2 (en) 2019-02-28 2021-02-02 Micron Technology, Inc. Use of outstanding command queues for separate read-only cache and write-read cache in a memory sub-system
US10970222B2 (en) 2019-02-28 2021-04-06 Micron Technology, Inc. Eviction of a cache line based on a modification of a sector of the cache line
US11106609B2 (en) 2019-02-28 2021-08-31 Micron Technology, Inc. Priority scheduling in queues to access cache data in a memory sub-system
US11288199B2 (en) 2019-02-28 2022-03-29 Micron Technology, Inc. Separate read-only cache and write-read cache in a memory sub-system
US11675705B2 (en) 2019-02-28 2023-06-13 Micron Technology, Inc. Eviction of a cache line based on a modification of a sector of the cache line
US11914520B2 (en) 2019-02-28 2024-02-27 Micron Technology, Inc. Separate read-only cache and write-read cache in a memory sub-system
US12007917B2 (en) 2019-02-28 2024-06-11 Micron Technology, Inc. Priority scheduling in queues to access cache data in a memory sub-system

Also Published As

Publication number Publication date
US11237969B2 (en) 2022-02-01
US20220156191A1 (en) 2022-05-19
EP3371707B1 (en) 2021-10-27
US20200364144A1 (en) 2020-11-19
CN108475234B (zh) 2022-07-12
EP3371707A1 (en) 2018-09-12
SG11201803730TA (en) 2018-06-28
US11615026B2 (en) 2023-03-28
US20180329819A1 (en) 2018-11-15
CN108475234A (zh) 2018-08-31
US10754777B2 (en) 2020-08-25
WO2017077502A1 (en) 2017-05-11

Similar Documents

Publication Publication Date Title
US11615026B2 (en) Systems and methods for implementing coherent memory in a multiprocessor system
KR102193689B1 (ko) 예측에 기초하여 효율적으로 캐시 라인을 관리하는 시스템 및 방법
US10031849B2 (en) Tracking alternative cacheline placement locations in a cache hierarchy
KR102157354B1 (ko) 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법
US11023376B2 (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
CN108804349B (en) Multiprocessor system, data management method, and non-transitory computer readable medium

Legal Events

Date Code Title Description
E902 Notification of reason for refusal