KR20230070034A - 스케일러블 영역 기반 디렉토리 - Google Patents

스케일러블 영역 기반 디렉토리 Download PDF

Info

Publication number
KR20230070034A
KR20230070034A KR1020237013352A KR20237013352A KR20230070034A KR 20230070034 A KR20230070034 A KR 20230070034A KR 1020237013352 A KR1020237013352 A KR 1020237013352A KR 20237013352 A KR20237013352 A KR 20237013352A KR 20230070034 A KR20230070034 A KR 20230070034A
Authority
KR
South Korea
Prior art keywords
cache
field
bit
region
region size
Prior art date
Application number
KR1020237013352A
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 KR20230070034A publication Critical patent/KR20230070034A/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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/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/0817Cache consistency protocols using directory methods
    • G06F12/0826Limited pointers directories; State-only directories without pointers
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory

Landscapes

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

Abstract

표현된 메모리 영역의 크기 및 캐시 서브시스템에서 추적된 캐시 라인들의 수를 변경하기 위해 제1 필드와 제2 필드 사이의 적어도 하나의 비트를 각각의 캐시 디렉토리 엔트리 내에서 교환하도록 구성가능한 하나 이상의 캐시 디렉토리들을 포함하는 캐시 디렉토리가 개시된다.

Description

스케일러블 영역 기반 디렉토리
최신 컴퓨팅 시스템들은 프로세서 및 메모리 성능을 향상시키기 위해 캐시 계층구조(cache hierarchy)에서 다수의 캐시들을 통상적으로 포함하고 이에 의존하는 다수의 중앙 프로세싱 유닛들(CPU)을 갖는다. 메인 메모리에 비해, 캐시는 자주 액세스되는 데이터를 저장하는 더 작고 빠른 메모리 디바이스로, 낮은 레이턴시로 데이터에 액세스할 수 있다. 이러한 캐시 디바이스들은 종종 정적 랜덤 액세스 메모리 (SRAM)에서 구현되고, 전형적으로 메모리 요청들을 발행하는 프로세싱 유닛과 메인 메모리 디바이스 사이에 위치된다. 메모리 측 캐시는 다른 디바이스들에 의해 메모리 디바이스에 기록되고 메모리 디바이스로부터 판독되는 데이터를 캐싱(cache)하는 메모리의 파티션 또는 특정 메모리 디바이스에 부착된 전용 캐시이다.
다중 노드 컴퓨터 시스템들에서는, 서로 다른 프로세싱 노드들에서 사용 중인 데이터의 코히어런시(coherency)를 유지하기 위해 특별한 주의가 취해져야 하다. 예를 들어, 프로세서가 특정 메모리 어드레스에서 데이터에 액세스하려고 시도하면, 먼저 메모리가 다른 캐시에 저장되어 수정되었는지 여부를 확인해야 한다. 이러한 캐시 코히어런시 프로토콜을 구현하기 위해, 캐시들은 전형적으로 시스템 전체에 걸쳐 데이터 코히어런시를 유지하기 위해 캐시 라인의 상황을 표시하는 다수의 상황 비트(status bit)들을 포함한다. 하나의 공통 코히어런시 프로토콜은, 예를 들어, "MOESI" 프로토콜이며, 여기서 각각의 문자는 캐시 라인의 상태(state)를 나타낸다. 이러한 상태들은 다음과 같다: 캐시 라인이 수정되었거나(M), 캐시 라인이 배타적이거나(E) 공유되거나(S), 캐시 라인이 유효하지 않다(I). 소유(owned, O) 상태는 하나의 캐시에서 라인이 수정되고, 다른 캐시들에서 공유 사본이 있을 수 있으며 메모리의 데이터가 스테일 상태(stale)임을 표시한다. 각각의 캐시 라인은 캐시 디렉토리에 상황 비트들을 포함하며, 이는 라인이 어느 MOESI 상태에 있는지를 표시하기 위해 시스템에 의해 현재 사용 중인 캐시 라인들을 추적한다.
멀티프로세서 시스템에서 캐쉬 디렉토리 체계(scheme)의 관리는 여러 가지 유형들의 프로세싱 요구와 캐쉬 및 메인 메모리 크기의 증가에 따라 어려워지고 있다.
본 명세서의 첨부 도면들의 도면들에 예시된 실시예들은 제한이 아닌 예로서 이루어진다. 도면들에서:
도 1은 컴퓨팅 시스템의 일 실시예의 블록도이다.
도 2는 코어 컴플렉스의 일 실시예의 블록도이다.
도 3은 다중 CPU 프로세서 시스템의 일 실시예의 블록도이다.
도 4는 캐시 디렉토리의 일 실시예의 블록도이다.
도 5는 프로세서 시스템에서 추적된 캐시 라인들의 영역 크기를 변경하기 위한 방법의 일 실시예를 예시하는 프로세스의 흐름도이다.
도 6은 영역 크기를 증가 또는 감소시키고 필요에 따라 영역을 재할당하기 위한 방법의 일 실시예를 예시하는 프로세스의 흐름도이다.
다음의 설명은 실시예들의 양호한 이해를 제공하기 위해 특정 시스템들, 컴포넌트들, 방법들 등의 예들과 같은 다수의 특정 세부사항들을 설명한다. 그러나, 적어도 일부 실시예가 이러한 특정 세부 사항 없이 실시될 수 있다는 것이 당업자에게 명백할 것이다. 다른 예들에서, 잘 알려진 컴포넌트들 또는 방법들은 상세히 설명되지 않거나, 실시예들을 불필요하게 모호하게 하는 것을 피하기 위해 간단한 블록도 형식으로 제시된다. 따라서, 제시된 특정 세부사항은 단지 예시적인 것이다. 특정 구현예들은 이러한 예시적인 세부사항들과 달라질 수 있고, 실시예들의 범위 내에 있는 것으로 여전히 고려될 수 있다.
CPU들의 수, 각각의 캐시들 및 캐시 크기가 커질수록, 캐시 디렉토리들은 또한 더 많은 수의 엔트리들을 커버하도록 스케일 업 된다. 전형적으로, 캐시 디렉토리는 요청들이 수신될 때 스누프(snoop)들을 올바르게 필터링하기 위해 시스템에서 라인이 정확히 캐싱된 위치 및 라인의 현재 상태를 파악하기 위해 캐시 라인 단위로 액세스된다. 일 실시예에서, 칩 영역의 양을 감소시키기 위해, 디렉토리는 캐시 디렉토리를 소비하며, 단일 캐시 라인 대신에 시스템 내의 캐시 라인들의 그룹들에 대응하는 메모리의 영역들을 추적한다. 이러한 방식으로, 결정들은 캐시 라인들의 그 전체 그룹에 대해 집합적으로 이루어질 수 있다.
캐시 디렉토리 체계의 일 실시예는 메모리의 영역의 크기 및 각각의 캐시 디렉토리 엔트리에서 추적된 캐시 라인들의 수를 정적으로 또는 동적으로 재구성할 수 있다. 도 1은 메모리의 영역의 크기 및 캐시 디렉토리 엔트리 당 추적된 캐시 라인들의 수를 변경하도록 구성될 수 있는 다수의 코어 컴플렉스들(core complexes)(105A-N) 및 다수의 홈 노드들(130A-N)을 포함하는 컴퓨팅 시스템(100)의 일 실시예의 블록도이다. 컴퓨팅 시스템(100)은 또한 입력/출력(I/O) 인터페이스들(120), 데이터 패브릭/버스(125) 및 네트워크 인터페이스(135)를 포함한다. 다른 실시예들에서, 컴퓨팅 시스템(100)은 다른 컴포넌트들을 포함할 수 있고 및/또는 다른 구성들로 배열될 수 있다.
일 실시예에서, 각각의 코어 컴플렉스(105A-N)는 하나 이상의 프로세서 코어들 또는 다른 특수화된 프로세싱 컴포넌트들과 같은 프로세싱 컴포넌트들을 포함한다. 코어 컴플렉스(105A-N) 내의 각각의 프로세서 코어는 하나 이상의 레벨의 캐시들을 갖는 캐시 서브시스템을 포함한다. 일 실시예에서, 캐시 서브시스템은 각각의 코어 컴플렉스(105A-N)에 연결된 공유 캐시(예를 들어, 도 2의 L3 캐시(230))를 포함한다. 일부 실시예들에서, 하나 이상의 코어 컴플렉스들(105A-N)은 그래픽 프로세싱 유닛들(GPU들), 디지털 신호 프로세서들(DSP들), 필드 프로그래머블 게이트 어레이들(FPGA들), 주문형 집적 회로들(ASIC들) 등 중 하나 이상과 같은 고도의 병렬 아키텍처를 갖는 데이터 병렬 프로세서를 포함할 수 있다. 본 명세서에서 사용되는 바와 같이, "코어 컴플렉스"는 또한 "프로세싱 노드" 또는 "CPU" 또는 "CPU 컴플렉스"로 지칭될 수 있다.
일 실시예에서, 홈 노드(들)(130)는 코히어런트 슬레이브(coherent slave), 캐시 디렉토리(cache directory), 및 임의의 수 및 유형의 메모리 디바이스들(도시되지 않음)에 결합된 메모리 제어기 중 하나 이상을 포함할 수 있다. 예를 들어, 홈 노드(들)(130)에 결합된 메모리 디바이스(들)는 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), NAND 플래시 메모리, NOR 플래시 메모리, 강유전성 랜덤 액세스 메모리(FeRAM) 등을 포함할 수 있다.
I/O(입력/출력) 인터페이스들(120)은 임의의 수 및 유형의 I/O 인터페이스들, 예를 들어, 다양한 유형들의 PCI(peripheral component interconnect) 버스들, GBE(gigabit ethernet) 버스, USB(universal serial bus), 특수 프로세서들(예를 들어, 플랫폼 보안 프로세서들, 그래픽 프로세서들) 및 시스템 관리 로직을 나타내지만, 이에 제한되지 않는다. 다양한 유형들의 주변 디바이스들이 I/O 인터페이스들(120)에 결합될 수 있다. 이러한 주변 장치는 디스플레이, 키보드, 마우스, 프린터, 스캐너, 조이스틱 또는 다른 유형의 게임 제어기, 매체 기록 장치, 외부 저장 장치, 네트워크 인터페이스 카드 등을 포함한다(그러나 이것에 국한되지 않는다).
다양한 실시예들에서, 컴퓨팅 시스템(100)은 서버, 데스크탑 컴퓨터, 랩탑, 모바일 디바이스, 게임 콘솔, 스트리밍 디바이스, 웨어러블 디바이스, 또는 다양한 다른 유형들의 컴퓨팅 시스템들 또는 디바이스들 중 임의의 것일 수 있다. 컴퓨팅 시스템(100)에 예시된 컴포넌트들의 수, 배향, 및 유형은 단지 예시적이며, 애플리케이션 및 시스템 아키텍처에 기초하여 실시예마다 달라질 수 있다.
도 2는 코어 컴플렉스(200), 예를 들어, 도 1의 코어 컴플렉스들(105A-N)의 일 실시예의 블록도이다.일 실시예에서, 코어 컴플렉스(200)는 4개의 프로세서 코어들(210A-D) 및 L1 캐시(215A-D), L2 캐시(220A-D) 및 L3 캐시(230)를 포함하는 캐시 서브시스템을 포함할 수 있다.캐시 서브시스템은 데이터 블록들(미도시)을 저장하도록 구성된 고속 캐시 메모리들(예를 들어, L1 캐시(215A-D), L2 캐시(220A-D), 및 L3 캐시(230))을 포함할 수 있다. 본 명세서에서 사용되는 바와 같이, "블록"은 캐시 메모리들 내의 연속한(contiguous) 메모리 위치들에 저장된 바이트들의 세트이며, 이는 코히어런시 목적들을 위한 유닛으로서 취급된다. 또한, 용어 "캐시 블록", "블록", "캐시 라인" 및 "라인"의 각각은 본 명세서에서 상호 교환 가능하다. 일부 실시예들에서, 블록은 또한 캐시 내의 할당 및 할당해제의 단위일 수 있다.블록은 시스템 내의 다른 캐시들로부터, 예컨대 다른 코어 컴플렉스들(예를 들어, 도 1의 코어 컴플렉스들(105A-N))로부터, 또는 예를 들어 도 1의 홈 노드(130A)를 통해 검색될 수 있는 바와 같은 메인 메모리로부터 검색될 수 있다.
추가적으로, 일 실시예에서, L3 캐시(230)는 프로세서 코어들(210A-D) 각각에 의해 공유된다.L3 캐시(230)는 데이터 패브릭(예를 들어, 도 1의 데이터 패브릭/버스(125)) 및 메모리 서브시스템(도시되지 않음)에 대한 액세스를 위해 코히어런트 마스터에 결합된다. 다른 실시예들에서, 코어 컴플렉스(200)는 더 적거나 더 많은 프로세서 코어들(예를 들어, 프로세서 코어(210A)) 및 대응하는 L2 캐시들(예를 들어, L2 캐시(220A))을 포함할 수 있다. 또 다른 실시예들에서, 코어 컴플렉스(200)는 본 개시의 범위를 벗어나지 않고 상이한 수들, 유형들, 및 레벨들의 캐시 메모리들을 포함할 수 있는 다른 유형들의 어드레싱가능한 캐시 서브시스템들을 포함할 수 있다.
도 3은 프로세서 시스템(300)의 일 실시예의 블록도이다. 일 실시예에서, 프로세서 시스템(300)은 CPU들(305A-N)에 의해 예시된 바와 같은 다수의 코어 컴플렉스들을 포함한다. 다양한 실시예들에서, CPU들(예를 들어, CPU(305A))의 수 및 CPU당 코어들(예를 들어, 코어들(308A-N))의 수는 설계 선택에 따라 변할 수 있다. 각각의 CPU(305A-N)는 또한 캐시 서브시스템들(310A-N) 중 대응하는 캐시 서브시스템을 포함한다.다양한 실시예들에서, 캐시 서브시스템들(310A-N)은 도 2를 참조하여 위에서 설명한 바와 같이 크기 및 구조가 변할 수 있다.
일 실시예에서, 각각의 CPU(305A-N)는 데이터패브릭/버스(318)에 추가로 연결되는 대응하는 코히어런트 마스터(315A-N)에 연결된다. 본 명세서에서 사용되는 바와 같이, "코히어런트 마스터"는 상호접속부(예를 들어, 데이터 패브릭/버스(318))를 통해 흐르는 트래픽을 프로세싱하고 캐시 코히어런시를 관리하는 에이전트로서 정의되며, 이는 프로세서 시스템(300) 내에서 공유된 캐시 데이터의 사본들을 동기화하기 위한 코히어런시 관련 메시지들 및 프로브들을 생성, 수신 및 프로세싱하기 위해 협력하여 작동하는 각각의 코히어런트 마스터(예를 들어, 코히어런트 마스터들(315A-N))를 포함한다.
다양한 실시예들에서, 각각의 CPU(305A-N)는 대응하는 코히어런트 마스터(315A-N) 및 데이터 패브릭/버스(318)에 의해 하나 이상의 코히어런트 슬레이브들에 연결될 수 있다.예를 들어, CPU(305A)는 코히어런트 마스터(315A) 및 데이터 패브릭/버스(318)를 통해 각각 연결된 코히어런트 슬레이브(CS)(320A-D) 및 코히어런트 슬레이브(321A-D)와 같은 서로의 캐시 디렉토리들에 대한 액세스를 갖는 다수의 코히어런트 슬레이브들에 연결될 수 있다.코히어런트 슬레이브(320A)는 메모리 제어기(MC)(330A) 및 캐시 디렉토리(CD)(325A)에 연결되는 반면, 코히어런트 슬레이브(321A)는 메모리 제어기(331A) 및 캐시 디렉토리(326A)에 결합된다.각각의 메모리 제어기(330A-N 및 331A-N)는 메모리 디바이스들(340A-N 및 341A-N) 중 각각의 하나에 연결된다.메모리 제어기(330A)와 같은 각각의 메모리 제어기의 기능들 중 하나는 프로세서 시스템(300)의 요소들에 메모리 디바이스들(340A-N 및 341A-N)에 대한 액세스를 제공하는 것이다.다양한 실시예들에서, 하나의 블록으로서 도시되어 있지만, 메모리 디바이스들(340A-N 및 341A-N) 각각은 하나 이상의 물리적 메모리들로 구성될 수 있고, 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM) 등과 같은 데이터를 저장하기에 적합한 임의의 유형일 수 있다.
일 실시예에서, 각각의 캐시 디렉토리, 예를 들어, 캐시 디렉토리(325A)는 하나 이상의 엔트리들을 포함하고, 각각의 엔트리는 메모리(340A) 내의 영역에 대응한다. 각각의 엔트리는 메모리(340A)의 영역 내의 데이터에 대응하는 프로세서 시스템(300) 내의 캐싱된 데이터를 추적하기 위한 정보(예를 들어, 도 4 참조)를 포함한다. 때때로 페이지 크기로 지칭되는 영역 크기는 메모리(340A) 내의 어드레스들의 블록에 의해 정의될 수 있고, 어드레스들은 메모리가 구성되는 방법, 예를 들어, 메모리가 채널들에 걸쳐 인터리빙되는지 여부 및 메모리 어드레스 맵 베이스에 따라 실시예들 사이에서 변할 수 있다. 일 실시예에서, 엔트리의 하나 이상의 필드는 캐시 디렉토리에 의해 추적되고 있는 메모리(340A) 내의 영역의 페이지 크기를 변경하도록 구성 가능하다.
일 실시예에서, 디바이스들(340A-N 및 341A-N) 내의 메모리는 각각의 메모리 제어기들(330A-N 및 331A-N) 간에 동등하게 분할되고, 각각의 코히어런트 슬레이브(예를 들어, 코히어런트 슬레이브들(320A-N 및 321A-N)) 및 그들 각각의 캐시 디렉토리들(예를 들어, 캐시 디렉토리들(325A-N 및 326A-N))은 메모리의 각각의 동등하고 연속한 부분을 관리한다. 대안적으로, 메모리 디바이스들(340A-N 및 341A-N)의 일부 또는 전부는 상이한 메모리 용량을 갖는다. 다양한 실시예들에서, 코히어런트 슬레이브는 하나 이상의 다른 코히어런트 슬레이브의 캐시 디렉토리들에 대한 액세스를 가질 수 있다. 예를 들어, 코히어런트 슬레이브(320A)는 326A-N 및 325B-N과 같은 프로세서 시스템(300) 내의 다수의 다른 캐시 디렉토리들에 액세스할 수 있다.
일 실시예에서, 코히어런트 슬레이브(320A)가 그것의 대응하는 메모리 제어기(330A)를 타겟으로 하는 메모리 요청을 수신할 때, 코히어런트 슬레이브(320A)는 그것의 대응하는 캐시 디렉토리(325A)에서 룩업(lookup)을 수행하여 요청이 캐시 디렉토리(325A)에서의 엔트리에 의해 추적되는 메모리(340A)의 영역 내에 포함되는 메모리 위치에서의 데이터를 타겟으로 하는지, 및 메모리 요청이 캐시 히트(cache hit)를 초래하는지 - 이는 요청된 데이터가 영역과 연관된 캐시 서브시스템(310A-N)에 저장된 캐시 라인들에서 발견될 수 있음을 의미함 - 를 결정한다. 일 실시예에서, 룩업이 히트를 초래하면, 코히어런트 슬레이브(320A)는 캐시 디렉토리의 히트 엔트리에서 식별되는 CPU(들)(예를 들어, CPU들(305A-N))에 프로브를 발송한다.코히어런트 슬레이브(320A)에 의해 생성되는 프로브의 유형은 히트 엔트리에 의해 특정된 코히어런시 상태에 의존한다.
일 실시예에서, 코히어런트 슬레이브(320A)는 캐시 디렉토리(325A)를 재구성하여 캐시 디렉토리(325A) 내의 각각의 엔트리의 태그 필드와 참조 카운트 필드(reference count field) 사이에 적어도 하나의 비트를 교환함으로써 캐시 서브시스템들(310A-N) 내에서 추적되는 캐시 라인들의 영역 크기 및 따라서 수를 변경할 수 있다.
영역 크기 및 따라서 캐시 디렉토리 엔트리 당 추적되는 캐시 라인들의 수를 증가시키는 것은 프로세싱 시스템에서 캐시 라인 추적의 세분화(granularity)를 감소시킨다. 그 결과, 캐시 디렉토리는 더 큰 캐시 시스템 크기를 수용할 수 있다.
도 3에 도시되지 않았지만, 다른 실시예들에서, 도면을 모호하게 하는 것을 피하기 위해 데이터 패브릭/버스(318)로부터 도시되지 않은 다른 컴포넌트들로의 다른 연결들이 있을 수 있다. 예를 들어, 다른 실시예에서, 데이터 패브릭/버스(318)는 도 1에 도시된 바와 같은 하나 이상의 I/O 인터페이스들 및 하나 이상의 I/O 디바이스들에 대한 연결들을 포함한다.
도 4는 캐시 디렉토리(400)의 일 실시예의 블록도이다. 일 실시예에서, 캐시 디렉토리(400)는 캐시 디렉토리 제어기(402), 캐시 디렉토리 엔트리(406) 및 캐시 디렉토리 엔트리(408)를 포함하는 캐시 디렉토리 어레이(404)를 포함한다. 캐시 디렉토리(400)는 또한 캐시 디렉토리 엔트리(412)를 포함하는 캐시 디렉토리 어레이(410)를 포함하고, 영역 크기를 증가시키기 위해 프로그래밍된 비트 재할당 후에 예시되며, 이는 아래에서 더 설명된다. 일 실시예에서, 어레이(404) 및 어레이(410)의 각각의 엔트리는 상태 필드(415), 섹터 유효 필드(420), 클러스터 유효 필드(425), 참조 카운트 필드(430), 및 태그 필드(435)를 포함한다. 다른 실시예들에서, 어레이(404) 및 어레이(410)의 엔트리들은 다른 필드들을 포함할 수 있고 설계 선택에 따라 배열될 수 있다.
영역 크기의 변화를 예시하는 일 실시예에서, 각각의 캐시 디렉토리 엔트리의 영역 크기를 증가시키기 위해 비트 재할당이 개시된다. 이는 프로세서 시스템 내의 각각의 CPU 컴플렉스(예를 들어, 도 3의 프로세서 시스템(300) 내의 CPU(A-N))에 대한 참조 카운트 필드(430)의 캐시 라인 사용 추적 용량을 증가시킨다. 다양한 실시예들에서, 참조 카운트 필드(430)의 폭은 프로세서 시스템 내의 CPU 컴플렉스들의 수에 의존하는데, 이는 각각의 CPU 컴플렉스가 추적될 캐시 라인들을 포함하기 때문이다.
참조 카운트 필드(430)는 프로세서 시스템 내의 어딘가에서 캐싱되는 영역의 캐시 라인들의 수를 추적하기 위해 사용된다. 이 영역으로부터의 캐시 라인에 대한 각각의 새로운 가입(subscription)에 대해, 참조 카운트 필드(430)가 증가된다. 캐시들로부터 축출(evict)되는 이 영역으로부터의 각각의 캐시 라인에 대해, 참조 카운트 필드(430)는 감소한다. 결국, 참조 카운트 필드(430)가 0에 도달하면, 캐시 디렉토리 엔트리(예를 들어, 엔트리(406))는 무효(invalid)로 마킹되고 엔트리는 메모리 내의 다른 영역에 대해 재사용될 수 있다. 참조 카운트 필드(430)를 이용함으로써, 영역 무효화 프로브들의 발생률이 감소될 수 있다. 참조 카운트 필드(430)는 캐시 디렉토리 엔트리가 프로세서 시스템의 캐시들에서 활성 캐시 라인들을 더 이상 갖지 않는 영역과 연관될 때 캐시 디렉토리 엔트리가 회수될 수 있게 한다.
예를 들어, 도 4로 돌아가서, 각각의 엔트리의 비트 폭이 고정된다고 가정하면, 각각의 캐시 디렉토리 엔트리의 영역 크기를 2배로 하기 위해, 태그 필드(435)로부터의 태그 비트는 참조 카운트 필드(430)로 시프트된다. 2K 영역 및 48비트 어드레스 폭의 경우, 처음 11 [10-0] 비트들이 오프셋에 사용되고 영역 크기를 정의한다(2^11 = 2048(2K)). 64바이트 캐시 라인 크기를 가정하면, 2킬로바이트(K) 영역 크기, 영역당 캐시 라인들의 수는 영역당 2K/64 또는 32개의 캐시 라인일 것이다. 태그 필드(435)는 어드레스의 [47-11]로부터 최상위 36 비트일 것이고, 어드레스의 11개의 최하위 비트들은 위에서 설명한 바와 같이 2K 영역 크기에 대응한다. 따라서, 캐시 디렉토리 엔트리들(406 및 408)에 도시된 바와 같이, 참조 카운트 필드(430)는 CPU 클러스터 당 캐시 라인들의 수 및 CPU 클러스터들의 총 수에 의해 결정되는 바와 같이 추적할 캐시 라인들의 총 수에 대응하는 Z 비트들을 가질 것이다.
이제 영역 크기를 4K로 증가시키기 위해, 일 실시예에 따르면, 비트가 태그 필드(435)로부터 참조 카운트 필드(430)로 재할당되어, 태그 필드(435)는 이제 [47-12]로부터의 최상위 35 비트들을 포함하고, 최하위 비트들 [11-0]은 4k(2^12) 영역 크기에 대한 오프셋이다. 이제 동일한 64바이트 캐시 라인 크기에 대해, 4K 영역은 영역 당 4K/64 또는 64 개의 캐시 라인들을 포함할 것이다. 캐시 엔트리(412)에 도시된 바와 같은 참조 카운트 필드(430)는 태그 필드(435)로부터 비트를 시프트한 후에 Z+1 비트이며, 이는 이진수로 추적되는 라인들의 수를 2배로 한다. 다른 실시예들에서, 영역은 참조 카운트 필드(430)로부터 태그 필드(435)로 비트를 재할당함으로써 감소될 수 있거나, 하나 초과의 비트가 태그 필드(435) 및 참조 카운트 필드(430)로 그리고 그로부터 재할당되어 더 크거나 더 작은 영역 크기들을 생성할 수 있다.
클러스터 유효(valid) 필드(425)는 캐시 디렉토리 엔트리에 의해 표현되는 정의된 영역과 연관된 코어 컴플렉스들(예를 들어, 도 3의 CPU들(305A-N)) 내의 캐시 라인들의 존재를 추적하기 위한 비트 벡터를 포함한다. 예를 들어, 각각 2개의 CPU 코어들의 4개의 CPU 클러스터들로 함께 그룹화된 8개의 CPU 코어들이 있을 수 있다. 이 예에서, 클러스터 유효 필드(425)는 4 비트를 가질 것이며, 각각은 프로세서 시스템에서 8개의 CPU 코어들 중 2개의 CPU 코어들을 나타낸다.예를 들어, 클러스터 유효 필드(425) 벡터가 [1001]이면, 첫 번째 및 네 번째 CPU 클러스터들만이 영역에 의해 표현된 캐시 라인들 중 임의의 캐시 라인과 상호 작용하였다. 일 실시예에서, 섹터 유효 필드(420)는 영역 내의 미세 세분화된 추적(fine grained tracking)을 제공하기 위해 영역 내의 캐시 라인들의 서브그룹들 또는 섹터들에 대응하는 비트 벡터를 저장한다. 예를 들어, 위에서 설명한 바와 같이, 64 바이트 캐시 라인 및 2 킬로바이트(K) 영역 크기의 경우, 영역당 캐시 라인들의 수는 영역당 2K/64 또는 32 캐시 라인들일 것이다. 8비트 섹터 유효 필드(420)에 대해, 각각의 비트는 섹터당 32/8, 또는 4 캐시 라인들을 추적해야 할 것이다. 예를 들어, 영역 크기가 위에서 설명한 바와 같이 동일한 64 바이트 캐시 라인 크기로 4K로 증가되었다면, 추적된 캐시 라인들의 수는 영역당 4K/64, 또는 64 라인일 것이다. 그런 다음, 동일한 8비트 섹터 유효 필드(420)에 대해, 각각의 비트는 섹터 당 64/8, 또는 8개의 캐시 라인들을 추적해야 할 것이다. 세분화의 감소는, 예를 들어, 영역 크기를 증가시킴으로써 획득되는 추가적인 캐시 시스템 커버리지의 이점을 갖는 다수의 캐시 컴플렉스들에 걸쳐 광범위하게 공유되지 않는 특정 애플리케이션들에 의해 허용될 수 있다.
일 실시예에서, 상태 필드(415)는 영역과 연관된 캐시 라인 서브시스템 내의 복수의 캐시 라인들의 집계 상태(aggregate state)를 특정하는 상태 비트들을 포함한다. 캐시 라인들에 대한 집계 상태는 각 영역에 대해 가장 제한적인 캐시 라인 상태에 의해 정의된다. 예를 들어, 영역과 연관된 캐시 디렉토리 엔트리에 대한 상태 필드(415)는 복수의 캐시 라인들로 구성된 전체 영역에 대한 적어도 하나의 캐시 라인이 더티(dirty)이면 "더티"로 설정된다. 유사하게, 주어진 영역 전체의 적어도 하나의 캐시 라인이 공유되면, 주어진 영역에 대한 상태는 "공유"로 설정된다. 다양한 실시예들에서, 유사한 방식으로 전체 영역에 기인하는 영역의 단일 캐시 라인 엔트리의 다른 상태들이 있을 수 있다.
서브 그룹들 또는 섹터들의 구성 및 섹터 유효 필드(420) 내의 비트들의 수는 상이한 실시예들 사이에서 변할 수 있다. 위에서 설명된 일 실시예에서, 섹터 유효 필드는 8 비트들을 갖지만, 다른 실시예들에서, 섹터 유효 필드는 세분화를 증가시키기 위한 추가적인 비트들 또는 세분화를 감소시키기 위한 더 적은 비트들을 가질 수 있다. 추가적으로, 일 실시예에서, 파티션(partition)들은 섹터 유효 필드(420)에 저장되는 오프셋들을 사용하여 식별될 수 있다. 각각의 오프셋은 주어진 영역 내의 주어진 파티션의 위치를 식별한다. 다른 실시예에서, 섹터 유효 필드(420)는 또한 주어진 영역 내의 각각의 파티션에 대한 별개의 소유자들 및 별개의 상태들을 표시할 수 있다.
도 5는 프로세서 시스템의 각각의 캐시 디렉토리 엔트리에서 추적되는 캐시 라인들의 수 및 메모리의 영역의 크기를 변경하기 위한 방법의 일 실시예를 예시하는 프로세스(500)의 흐름도이다. 일 실시예에서, 프로세스(500)는 시스템 시작 시에 구성 설정들 및 명령어들을 판독하고 실행함으로써 개시된다. 다른 실시예들에서, 하나 이상의 프로그램들 또는 애플리케이션들은 캐시 이용(cache utilization)을 자동으로 모니터링하고 프로세스(500)를 동적으로 개시하도록 구성될 수 있거나, 또는 프로세스(500)를 개시하기 위해 사용자 입력과 같은 입력을 수락하도록 구성될 수 있다. 다른 실시예들에서, 캐시 이용은 하나 이상의 컴퓨팅 시스템들에 대해 원격으로 모니터링될 수 있고, 각각의 시스템은 원격 커맨드에 기초하여 프로세스(500)를 개시하도록 구성될 수 있다.
블록(502)에서, 프로세서 시스템은 제1 영역 크기를 추적하는 것으로부터 제2 영역 크기로 캐시 디렉토리를 재구성하고, 영역 크기는 메모리(예를 들어, 도 3의 메모리(340A-N 및 341A-N))의 시작 어드레스 및 페이지 크기에 대응하는 태그 필드(예를 들어, 도 4의 태그 필드(435))의 어드레스로부터 제거된 오프셋 비트들의 수에 의해 정의된다.프로세스는 블록(504)에서 계속되며, 여기서 캐시 디렉토리 엔트리 어레이 필드들은 태그 필드와 참조 카운트 필드 사이에서 적어도 하나의 비트를 교환함으로써 재구성된다(도 4 참조).위에서 설명한 바와 같이, 이러한 재할당은 비트 재할당의 방향에 따라 프로세서 시스템에서 추적되는 캐시 라인들의 수 및 메모리 페이지 크기에 대응하는 영역을 증가 또는 감소시킨다.재구성이 완료되면, 블록(506)에서, 캐시 디렉토리는 이제 비트 재할당에 기초하여 재구성된 영역 크기에 기초하여 캐시 서브시스템에서 캐시 라인들을 추적할 수 있다.
도 6은 영역 크기를 증가 또는 감소시키고 이용에 기초하여 영역을 재할당하기 위한 방법의 일 실시예를 예시하는 프로세스(600)의 흐름도이다. 블록(602)에서 시작하여, 프로세서 시스템(예를 들어, 도 3의 프로세서 시스템(300)) 내의 홈 노드는 메모리 내의 시작 어드레스 및 페이지 크기에 대응하는 태그 필드 내의 어드레스로부터 제거된 오프셋 비트들의 수에 의해 정의된 바와 같이 제1 영역 크기로부터 제2 영역 크기로 하나 이상의 캐시 디렉토리들을 재구성하기 위한 신호를 수신한다.
결정 블록(604)에서, 영역 크기는 블록(602)에서 수신된 신호에 기초하여 증가되거나 감소된다.블록(606)에서, 증가되면, 일 실시예에서, 캐시 디렉토리 내의 캐시 디렉토리 제어기(예를 들어, 도 4의 캐시 디렉토리 제어기(402))는 태그 필드의 최하위 비트들로부터 참조 카운트 필드에 하나 이상의 비트들을 재할당함으로써 캐시 디렉토리 엔트리 어레이(예를 들어, 도 4의 캐시 디렉토리 어레이(404))를 구성한다. 재할당된 각각의 비트는 태그 필드 내의 어드레스 오프셋에 의해 정의된 영역 크기를 2배로 하고, 참조 필드에 추가된 각각의 비트는 필드가 프로세서 시스템의 하나 이상의 캐시 서브시스템들(예를 들어, 도 3의 캐시 서브시스템들(310A-N))에서 추적할 수 있는 캐시 라인들의 수를 2배로 한다. 일 실시예에서, 블록(608)에서, 추적될 증가된 캐시 라인들은 섹터 유효 필드 내의 각각의 비트가 더 큰 영역 크기 및 확장된 참조 카운트 필드에 기초하여 더 많은 캐시 라인들을 추적한다는 것을 의미한다(도 4의 섹터 유효 필드(420)를 참조하여 위에서 예시된 2K/4K 예 참조).
유사하게, 영역 크기가 감소되면, 블록(610)에서, 캐시 디렉토리의 캐시 디렉토리 제어기는 참조 카운트 필드로부터 태그 필드에 하나 이상의 비트들을 재할당함으로써 캐시 디렉토리 엔트리 어레이를 구성한다. 재할당된 각각의 비트는 태그 필드 내의 어드레스 오프셋에 의해 정의된 영역 크기를 절반으로 줄이고, 참조 필드로부터 취해진 각각의 비트는 필드가 프로세서 시스템의 하나 이상의 캐시 서브시스템들에서 추적할 수 있는 캐시 라인들의 수를 절반으로 줄인다. 일 실시예에서, 블록(612)에서, 추적될 감소된 캐시 라인들은 섹터 유효 필드 내의 각각의 비트가 더 작은 영역 크기 및 감소된 참조 카운트 필드에 기초하여 더 적은 캐시 라인들을 추적한다는 것을 의미한다.
일 실시예에서, 블록(614)에서, 프로세서 시스템의 캐시 서브시스템(들) 내의 얼마나 많은 캐시 라인들이 가입되거나 이용되는지를 결정하기 위해 참조 카운트가 모니터링될 수 있다. 예를 들어, 참조 카운트는 축출되는 영역과 연관된 각각의 캐시 라인에 대해 감소하거나, 추가되는 각각의 캐시 라인에 대해 증가될 수 있다. 일 실시예에서, 참조 카운트가 임계값 미만으로 감소할 때 영역 크기의 변화가 트리거된다. 도 6의 블록들이 직렬로 실행되는 것으로 도시되어 있지만, 다른 실시예들에서, 블록들, 예를 들어 블록들(606-614) 또는 블록들(610-614)은 서로 병렬로 또는 동시에 실행될 수 있다.
제1 영역 크기에 대한 캐시 라인들을 추적하기 위한 하나 이상의 캐시 디렉토리 엔트리들을 포함하는 캐시 디렉토리를 유지하고 제2 영역 크기에 대한 캐시 라인들을 추적하기 위한 이들 하나 이상의 캐시 디렉토리 엔트리들을 구성하는 방법이 개시된다. 하나 이상의 캐시 디렉토리 엔트리 각각은 제1 필드 및 제2 필드를 포함한다. 제1 필드는 제1 페이지 크기를 갖는 메모리 내의 제1 영역에 대응하고, 제2 필드는 제1 영역과 연관된 캐시 서브시스템에 저장된 제1 수의 캐시 라인들을 추적한다.
제2 영역 크기에 대한 캐시 라인들을 추적하기 위해 하나 이상의 캐시 디렉토리 엔트리들을 구성하는 단계는 제1 영역을 메모리의 제2 페이지 크기에 대응하는 제2 영역으로 변경하고 하나 이상의 캐시 디렉토리 엔트리들 각각에 의해 추적되는 캐시 라인들의 최대 수를 변경하기 위해 캐시 디렉토리의 제1 필드와 제2 필드 사이에 적어도 하나의 비트를 교환하는 단계를 포함한다. 적어도 하나의 비트를 교환하는 단계는 제1 필드의 최하위 비트들로부터 제2 필드로 적어도 하나의 비트를 재할당하여 오프셋 비트들의 수를 증가시킴으로써 영역 크기를 증가시키는 단계를 포함한다. 일 실시예에서, 제2 영역 크기는 제1 영역 크기보다 크고, 적어도 하나의 비트를 제2 필드에 재할당하는 것은 증가된 영역 크기에 대응하도록 캐시 서브시스템에서 추적되는 캐시 라인들의 최대 수를 증가시킨다.
영역 크기에 따라, 제1 페이지 크기는 캐시 서브시스템에 캐싱된 2개 이상의 캐시 라인들의 배수와 동일한 데이터 양을 포함할 수 있다. 다른 실시예에서, 프로세스는 제1 영역 크기에 대한 캐시 라인들을 추적하는 것으로부터 제2 영역 크기에 대한 캐시 라인들을 추적하는 것으로 제2 캐시 디렉토리를 구성하는 것을 포함하고, 제2 캐시 디렉토리는 데이터 패브릭에 의해 홈 노드에 결합된다. 또 다른 실시예에서, 프로세스는 제2 영역 크기에 대한 캐시 라인들을 추적하기 위해 하나 이상의 캐시 디렉토리 엔트리들을 구성하는 것에 기초하여 하나 이상의 캐시 엔트리들의 제3 필드에서 비트당 추적되는 캐시 라인들의 수를 변경하는 것을 포함한다. 프로세스는 하나 이상의 캐시 디렉토리 엔트리들의 각각의 엔트리에 대해, 엔트리 내의 제2 필드의 값이 임계 값에 도달할 때 메모리의 다른 부분을 추적하기 위해 엔트리를 재할당하는 것을 포함할 수 있다.
일 실시예에서, 프로세싱 시스템은 하나 이상의 캐시 디렉토리들에 결합된 하나 이상의 홈 노드들을 포함하고, 각각의 캐시 디렉토리는 캐시 라인 엔트리 당 제1 영역 크기에 대한 캐시 라인을 추적하는 것으로부터 캐시 라인 엔트리 당 제2 영역 크기에 대한 캐시 라인을 추적하는 것으로 변경될 수 있고, 제1 영역 크기는 메모리의 제1 페이지 크기와 연관되고, 제2 영역 크기는 메모리의 제2 페이지 크기와 연관된다. 프로세싱 시스템은 하나 이상의 홈 노드들에 결합된 복수의 프로세싱 노드들을 더 포함할 수 있고, 각각의 프로세싱 노드는 하나 이상의 프로세서들, 및 하나 이상의 캐시 디렉토리들에 의해 추적되는 캐시 라인들을 포함하는 캐시 서브시스템을 포함한다.
캐시 라인 엔트리당 제1 영역 크기에 대한 캐시 라인들을 추적하는 것으로부터 캐시 라인 엔트리당 제2 영역 크기에 대한 캐시 라인들을 추적하는 것으로 변경하기 위한 프로세싱 시스템은 각각의 캐시 라인 엔트리의 제1 필드와 제2 필드 사이에서 적어도 하나의 비트를 교환하기 위해 하나 이상의 캐시 디렉토리들을 포함할 수 있다. 일 실시예에서, 하나 이상의 홈 노드들 각각은 제1 필드와 제2 필드 사이의 적어도 하나의 비트의 하나 이상의 캐시 디렉토리들에서 교환을 개시하기 위한 신호를 수신할 수 있다. 적어도 하나의 비트를 교환하기 위한 프로세싱 시스템은 제1 필드의 최하위 비트들로부터 제2 필드에 적어도 하나의 비트를 재할당할 수 있고, 제1 필드 내의 적어도 하나의 비트의 손실은 제1 영역 크기에 비해 제2 영역 크기를 증가시키고, 제2 필드 내의 적어도 하나의 비트의 추가는 하나 이상의 캐시 디렉토리 엔트리들 각각에 의해 추적되는 캐시 라인들의 최대 수를 증가시킨다.
일 실시예에서, 제2 페이지 크기는 캐시 서브시스템에 캐싱된 2개 이상의 캐시 라인들의 짝수 배수를 포함한다. 다른 실시예에서, 하나 이상의 홈 노드들 중 적어도 하나는 제1 영역 크기에 대한 캐시 라인들을 추적하는 것으로부터 제2 영역 크기에 대한 캐시 라인들을 추적하는 것까지 제2 캐시 디렉토리를 구성할 수 있고, 제2 캐시 디렉토리는 데이터 패브릭에 의해 코히어런트 슬레이브에 결합된다. 하나 이상의 홈 노드들 중 적어도 하나는, 하나 이상의 캐시 디렉토리들 중 적어도 하나에서, 제2 영역 크기에 대한 캐시 라인들을 추적하기 위해 하나 이상의 캐시 디렉토리 엔트리들의 제3 필드 내의 비트당 추적되는 캐시 라인들의 수를 변경할 수 있다.
일 실시예에서, 캐시 디렉토리는 하나 이상의 캐시 엔트리들을 포함하고, 캐시 라인 엔트리 당 제1 영역 크기에 대한 캐시 라인들을 추적하는 것으로부터 캐시 라인 엔트리 당 제2 영역 크기에 대한 캐시 라인들을 추적하는 것으로 변경할 수 있다. 제1 영역 크기는 메모리의 제1 페이지 크기와 연관되고, 제2 영역 크기는 메모리의 제2 페이지 크기와 연관된다. 캐시 디렉토리 제어기는 캐시 디렉토리에 결합될 수 있고, 하나 이상의 캐시 엔트리들에서, 각각의 캐시 엔트리의 제1 필드와 제2 필드 사이의 적어도 하나의 비트를 교환하여 제1 영역 크기로부터 제2 영역 크기로 변경할 수 있다. 일 실시예에서, 캐시 디렉토리 제어기가 적어도 하나의 비트를 교환하기 위해, 제1 필드의 최하위 비트로부터 제2 필드로의 적어도 하나의 비트의 재할당이 있고, 제1 필드 내의 적어도 하나의 비트의 손실은 제1 영역 크기와 비교하여 제2 영역 크기를 증가시키고, 제2 필드 내의 적어도 하나의 비트의 추가는 하나 이상의 캐시 디렉토리 엔트리들 각각에 의해 추적되는 캐시 라인들의 최대 수를 증가시킨다. 일 실시예에서, 제2 페이지 크기는 캐시 서브시스템에 캐싱된 2개 이상의 캐시 라인들의 짝수 배수를 포함한다.
본 명세서에서 설명되는 실시예들은 다양한 동작들을 포함할 수 있다. 이들 동작들은 하드웨어 컴포넌트들, 소프트웨어, 펌웨어, 또는 이들의 조합에 의해 수행될 수 있다. 본 명세서에 사용된 바와 같이, 용어 "~에 결합된"은 하나 이상의 개재 컴포넌트를 통해 직접적으로 또는 간접적으로 결합된 것을 의미할 수 있다. 본 명세서에 설명된 다양한 버스들에 걸쳐 제공되는 임의의 신호들은 다른 신호들과 시간 다중화되고 하나 이상의 공통 버스들을 통해 제공될 수 있다. 추가적으로, 회로 컴포넌트들 또는 블록들 사이의 상호연결은 버스들로서 또는 단일 신호 라인들로서 도시될 수 있다. 각각의 버스는 대안적으로 하나 이상의 단일 신호 라인일 수 있고, 각각의 단일 신호 라인은 대안적으로 버스일 수 있다.
특정 실시예들은 컴퓨터 판독가능 매체 상에 저장된 명령어들을 포함할 수 있는 컴퓨터 프로그램 제품으로 구현될 수 있다. 이러한 명령들은 설명된 동작들을 수행하기 위해 범용 또는 특수 목적 프로세서를 프로그래밍하는 데 사용될 수 있다. 컴퓨터 판독 가능 매체는 기계(예를 들어, 컴퓨터)에 의해 판독가능한 형태(예를 들어, 소프트웨어, 처리 애플리케이션)로 정보를 저장하거나 전송하기 위한 임의의 메커니즘을 포함한다. 컴퓨터 판독가능 저장 매체는 자기 저장 매체(예를 들어, 플로피 디스켓); 광학 저장 매체(예를 들어, CD-ROM); 자기-광학 저장 매체; 판독 전용 메모리(ROM); 랜덤 액세스 메모리(RAM); 소거가능한 프로그래밍 가능 메모리(예를 들어, EPROM 및 EEPROM); 플래시 메모리, 또는 전자 명령어를 저장하기에 적합한 다른 유형의 매체를 포함할 수 있지만, 이에 제한되지 않는다.
또한, 일부 실시예들은 컴퓨터 판독 가능 매체가 하나 초과의 컴퓨터 시스템에 저장되고/되거나 이에 의해 실행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 또한, 컴퓨터 시스템들 사이에서 전달되는 정보는 컴퓨터 시스템들을 연결하는 전송 매체를 통해 풀링되거나 푸시될 수 있다.
본 명세서에서 방법(들)의 동작들이 특정 순서로 도시되고 설명되지만, 각각의 방법의 동작들의 순서는 특정 동작들이 역 순서로 수행될 수 있도록 또는 특정 동작이 적어도 부분적으로 다른 동작들과 동시에 수행될 수 있도록 변경될 수 있다. 다른 실시예에서, 별개의 동작들의 명령들 또는 하위 동작들은 간헐적 및/또는 교번 방식으로 있을 수 있다.
전술한 명세서에서, 실시예는 이의 특정 예시적인 실시예를 참조하여 설명되었다. 그러나, 첨부된 청구항들에 제시된 실시예들의 더 넓은 사상 및 범위를 벗어나지 않고 그에 대해 다양한 수정들 및 변경들이 이루어질 수 있다는 것이 명백할 것이다. 따라서, 명세서 및 도면은 제한적인 의미보다는 예시적인 것으로 간주되어야 한다.

Claims (20)

  1. 방법으로서,
    제1 영역 크기에 대한 캐시 라인들을 추적하기 위해 하나 이상의 캐시 디렉토리 엔트리들을 포함하는 캐시 디렉토리를 유지하는 단계; 및
    제2 영역 크기에 대한 캐시 라인들을 추적하기 위해 상기 하나 이상의 캐시 디렉토리 엔트리들을 구성하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 하나 이상의 캐시 디렉토리 엔트리들 각각은 제1 필드 및 제2 필드를 포함하고, 상기 제1 필드는 제1 페이지 크기를 갖는 메모리 내의 제1 영역에 대응하고, 그리고 상기 제2 필드는 상기 제1 영역과 연관된 캐시 서브시스템에 저장된 제1 수의 캐시 라인들을 추적하는, 방법.
  3. 제2항에 있어서, 제2 영역 크기에 대한 캐시 라인들을 추적하기 위해 상기 하나 이상의 캐시 디렉토리 엔트리들을 구성하는 상기 단계는, 상기 제1 영역을 상기 메모리 내의 제2 페이지 크기에 대응하는 제2 영역으로 변경하고 그리고 상기 하나 이상의 캐시 디렉토리 엔트리들 각각에 의해 추적되는 캐시 라인들의 최대 수를 변경하기 위해 상기 캐시 디렉토리에서 상기 제1 필드와 상기 제2 필드 사이에 적어도 하나의 비트를 교환하는 단계를 포함하는, 방법.
  4. 제3항에 있어서, 상기 적어도 하나의 비트를 교환하는 단계는 상기 제1 필드의 최하위 비트들부터 상기 제2 필드로 상기 적어도 하나의 비트를 재할당하여 오프셋 비트들의 수를 증가시켜 상기 영역 크기를 증가시키는 단계를 포함하는, 방법.
  5. 제4항에 있어서,
    상기 제2 영역 크기는 상기 제1 영역 크기보다 크고;
    상기 적어도 하나의 비트를 상기 제2 필드에 상기 재할당하는 것은 증가된 영역 크기에 대응하도록 상기 캐시 서브시스템에서 추적되는 캐시 라인들의 상기 최대 수를 증가시키는, 방법.
  6. 제2항에 있어서, 상기 제1 페이지 크기는 상기 캐시 서브시스템에 캐싱된 2개 이상의 캐시 라인들의 배수와 동일한 데이터 양을 포함하는, 방법.
  7. 제1항에 있어서, 상기 방법은,
    상기 제1 영역 크기에 대한 캐시 라인들을 추적하는 것으로부터 상기 제2 영역 크기에 대한 캐시 라인들을 추적하는 것으로 제2 캐시 디렉토리를 구성하는 단계를 더 포함하고, 상기 제2 캐시 디렉토리는 데이터 패브릭에 의해 홈 노드에 결합되는, 방법.
  8. 제1항에 있어서, 상기 방법은,
    상기 제2 영역 크기에 대한 캐시 라인들을 추적하기 위해 상기 하나 이상의 캐시 디렉토리 엔트리들을 구성하는 것에 기초하여 상기 하나 이상의 캐시 엔트리들의 제3 필드에서 비트당 추적되는 캐시 라인들의 수를 변경하는 단계를 더 포함하는, 방법.
  9. 제1항에 있어서, 상기 방법은,
    상기 하나 이상의 캐시 디렉토리 엔트리들의 각각의 엔트리에 대해, 상기 엔트리의 제2 필드의 값이 임계값에 도달할 때 메모리의 다른 부분을 추적하기 위해 상기 엔트리를 재할당하는 단계를 더 포함하는, 방법.
  10. 시스템으로서,
    하나 이상의 캐시 디렉토리들에 결합된 하나 이상의 홈 노드들 - 각각의 캐시 디렉토리는 캐시 라인 엔트리 당 제1 영역 크기에 대한 캐시 라인들을 추적하는 것으로부터 캐시 라인 엔트리 당 제2 영역 크기에 대한 캐시 라인들을 추적하는 것으로 변경되도록 구성됨 - 을 포함하며, 상기 제1 영역 크기는 메모리의 제1 페이지 크기와 연관되고, 그리고 상기 제2 영역 크기는 상기 메모리의 제2 페이지 크기와 연관되는, 시스템.
  11. 제10항에 있어서,
    상기 하나 이상의 홈 노드들에 결합된 복수의 프로세싱 노드들을 더 포함하고, 각각의 프로세싱 노드는 하나 이상의 프로세서들 및 상기 하나 이상의 캐시 디렉토리들에 의해 추적되는 캐시 라인들을 포함하는 캐시 서브시스템을 포함하는, 시스템.
  12. 제10항에 있어서, 캐시 라인 엔트리 당 제1 영역 크기에 대한 캐시 라인들을 추적하는 것으로부터 캐시 라인 엔트리 당 제2 영역 크기에 대한 캐시 라인들을 추적하는 것으로 변경하는 것은 각각의 캐시 라인 엔트리의 제1 필드와 제2 필드 사이에서 적어도 하나의 비트를 교환하기 위해 상기 하나 이상의 캐시 디렉토리들을 포함하는, 시스템.
  13. 제12항에 있어서, 상기 하나 이상의 홈 노드들 각각은 상기 제1 필드와 상기 제2 필드 사이의 상기 적어도 하나의 비트의 상기 하나 이상의 캐시 디렉토리들에서 상기 교환을 개시하기 위한 신호를 수신하도록 구성되는, 시스템.
  14. 제12항에 있어서, 상기 적어도 하나의 비트를 교환하는 것은 상기 제1 필드의 최하위 비트들로부터 상기 제2 필드로 적어도 하나의 비트를 재할당하는 것을 포함하고, 상기 제1 필드 내의 상기 적어도 하나의 비트의 손실은 상기 제1 영역 크기와 비교하여 상기 제2 영역 크기를 증가시키고, 그리고 상기 제2 필드 내의 상기 적어도 하나의 비트의 추가는 하나 이상의 캐시 디렉토리 엔트리들 각각에 의해 추적되는 캐시 라인들의 최대 수를 증가시키는, 시스템.
    [청구항 14]
    제10항에 있어서, 상기 제2 페이지 크기는 캐시 서브시스템에 캐싱된 2개 이상의 캐시 라인들의 짝수 배수를 포함하는, 시스템.
  15. 제10항에 있어서,
    상기 하나 이상의 홈 노드들 중 적어도 하나는 상기 제1 영역 크기에 대한 캐시 라인들을 추적하는 것으로부터 상기 제2 영역 크기에 대한 캐시 라인들을 추적하는 것으로 제2 캐시 디렉토리를 구성하도록 구성되고,
    상기 제2 캐시 디렉토리는 데이터 패브릭에 의해 코히어런트 슬레이브에 결합되는, 시스템.
  16. 제10항에 있어서, 상기 하나 이상의 홈 노드들 중 적어도 하나는, 상기 하나 이상의 캐시 디렉토리들 중 적어도 하나에서, 상기 제2 영역 크기에 대한 캐시 라인들을 추적하기 위해 하나 이상의 캐시 디렉토리 엔트리들의 제3 필드 내의 비트당 추적된 캐시 라인들의 수를 변경하도록 구성되는, 시스템.
  17. 컴퓨팅 디바이스로서,
    하나 이상의 캐시 엔트리들을 포함하고 캐시 라인 엔트리 당 제1 영역 크기에 대한 캐시 라인들을 추적하는 것으로부터 캐시 라인 엔트리 당 제2 영역 크기에 대한 캐시 라인들을 추적하는 것으로 변경하도록 구성된 캐시 디렉토리를 포함하고, 상기 제1 영역 크기는 메모리의 제1 페이지 크기와 연관되고 그리고 상기 제2 영역 크기는 상기 메모리의 제2 페이지 크기와 연관되는, 컴퓨팅 디바이스.
  18. 제17항에 있어서,
    상기 캐시 디렉토리에 결합되고, 상기 제1 영역 크기로부터 상기 제2 영역 크기로 변경하기 위해 각각의 캐시 엔트리의 제1 필드와 제2 필드 사이의 적어도 하나의 비트를 상기 하나 이상의 캐시 엔트리들에서 교환하도록 구성된 캐시 디렉토리 제어기를 더 포함하는, 컴퓨팅 디바이스.
  19. 제17항에 있어서, 적어도 하나의 비트를 교환하기 위한 캐시 디렉토리 제어기는 제1 필드의 최하위 비트들로부터 제2 필드로 상기 적어도 하나의 비트를 재할당하는 것을 포함하고, 상기 제1 필드 내의 상기 적어도 하나의 비트의 손실은 상기 제1 영역 크기와 비교하여 상기 제2 영역 크기를 증가시키고, 그리고 상기 제2 필드 내의 상기 적어도 하나의 비트의 추가는 상기 하나 이상의 캐시 디렉토리 엔트리들 각각에 의해 추적되는 캐시 라인들의 최대 수를 증가시키는, 컴퓨팅 디바이스.
  20. 제16항에 있어서, 상기 제2 페이지 크기는 상기 캐시 서브시스템에 캐싱된 2개 이상의 캐시 라인들의 짝수 배수를 포함하는, 컴퓨팅 디바이스.
KR1020237013352A 2020-09-25 2021-09-19 스케일러블 영역 기반 디렉토리 KR20230070034A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/033,212 2020-09-25
US17/033,212 US11507517B2 (en) 2020-09-25 2020-09-25 Scalable region-based directory
PCT/US2021/051010 WO2022066543A1 (en) 2020-09-25 2021-09-19 Scalable region-based directory

Publications (1)

Publication Number Publication Date
KR20230070034A true KR20230070034A (ko) 2023-05-19

Family

ID=78086146

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237013352A KR20230070034A (ko) 2020-09-25 2021-09-19 스케일러블 영역 기반 디렉토리

Country Status (6)

Country Link
US (1) US11507517B2 (ko)
EP (1) EP4200708A1 (ko)
JP (1) JP2023543231A (ko)
KR (1) KR20230070034A (ko)
CN (1) CN116249970A (ko)
WO (1) WO2022066543A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11531620B2 (en) * 2021-03-25 2022-12-20 Arm Limited Distributed virtual memory management for data processing network
GB2605577A (en) * 2021-03-31 2022-10-12 Advanced Risc Mach Ltd Accessing Encoded Blocks of Data

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69330768T2 (de) 1992-04-24 2002-07-04 Compaq Computer Corp Verfahren und Vorrichtung zum Betrieb eines Multiprozessor-Rechnersystems mit Cachespeichern
US6192458B1 (en) * 1998-03-23 2001-02-20 International Business Machines Corporation High performance cache directory addressing scheme for variable cache sizes utilizing associativity
US7467280B2 (en) * 2006-07-05 2008-12-16 International Business Machines Corporation Method for reconfiguring cache memory based on at least analysis of heat generated during runtime, at least by associating an access bit with a cache line and associating a granularity bit with a cache line in level-2 cache
US9678878B2 (en) * 2008-09-30 2017-06-13 Intel Corporation Disabling cache portions during low voltage operations
US8635428B2 (en) * 2009-12-09 2014-01-21 Oracle America, Inc. Preventing duplicate entries in a non-blocking TLB structure that supports multiple page sizes
US20130205088A1 (en) * 2012-02-06 2013-08-08 International Business Machines Corporation Multi-stage cache directory and variable cache-line size for tiered storage architectures
US9292444B2 (en) * 2013-09-26 2016-03-22 International Business Machines Corporation Multi-granular cache management in multi-processor computing environments
US9507731B1 (en) * 2013-10-11 2016-11-29 Rambus Inc. Virtualized cache memory
US10515049B1 (en) * 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US11119926B2 (en) * 2017-12-18 2021-09-14 Advanced Micro Devices, Inc. Region based directory scheme to adapt to large cache sizes
US10691602B2 (en) 2018-06-29 2020-06-23 Intel Corporation Adaptive granularity for reducing cache coherence overhead
US11232039B2 (en) * 2018-12-10 2022-01-25 Advanced Micro Devices, Inc. Cache for storing regions of data
US11593273B2 (en) * 2019-01-30 2023-02-28 Intel Corporation Management of cache use requests sent to remote cache devices
US11656995B2 (en) * 2019-11-26 2023-05-23 Micron Technology, Inc. Dynamic access granularity in a cache media

Also Published As

Publication number Publication date
JP2023543231A (ja) 2023-10-13
US20220100672A1 (en) 2022-03-31
US11507517B2 (en) 2022-11-22
CN116249970A (zh) 2023-06-09
WO2022066543A1 (en) 2022-03-31
EP4200708A1 (en) 2023-06-28

Similar Documents

Publication Publication Date Title
EP3140749B1 (en) In-memory lightweight coherency
US7552288B2 (en) Selectively inclusive cache architecture
CN102804152B (zh) 对存储器层次结构中的闪存的高速缓存一致性支持
US7827357B2 (en) Providing an inclusive shared cache among multiple core-cache clusters
US6018791A (en) Apparatus and method of maintaining cache coherency in a multi-processor computer system with global and local recently read states
US6345342B1 (en) Cache coherency protocol employing a read operation including a programmable flag to indicate deallocation of an intervened cache line
US7774551B2 (en) Hierarchical cache coherence directory structure
US11809322B2 (en) Region based directory scheme to adapt to large cache sizes
US20120102273A1 (en) Memory agent to access memory blade as part of the cache coherency domain
US11314646B2 (en) Region based split-directory scheme to adapt to large cache sizes
KR20230070034A (ko) 스케일러블 영역 기반 디렉토리
CN115203071A (zh) 默认共享状态缓存一致性协议的应用
JP7036988B2 (ja) 領域ベースのキャッシュディレクトリスキームにおけるプライベート領域へのアクセスの加速
US6442653B1 (en) Data processing system, cache, and method that utilize a coherency state to indicate the latency of cached data
US6374333B1 (en) Cache coherency protocol in which a load instruction hint bit is employed to indicate deallocation of a modified cache line supplied by intervention
US20240111683A1 (en) Dynamically altering tracking granularity in a region-based cache directory
US20240134795A1 (en) Page rinsing scheme to keep a directory page in an exclusive state in a single complex
US6345343B1 (en) Multiprocessor system bus protocol with command and snoop responses for modified-unsolicited cache state