KR20200040294A - 트랜잭션 지원을 가진 선점형 캐시 후기록 - Google Patents

트랜잭션 지원을 가진 선점형 캐시 후기록 Download PDF

Info

Publication number
KR20200040294A
KR20200040294A KR1020207008109A KR20207008109A KR20200040294A KR 20200040294 A KR20200040294 A KR 20200040294A KR 1020207008109 A KR1020207008109 A KR 1020207008109A KR 20207008109 A KR20207008109 A KR 20207008109A KR 20200040294 A KR20200040294 A KR 20200040294A
Authority
KR
South Korea
Prior art keywords
cache
shared
dedicated
controller
line
Prior art date
Application number
KR1020207008109A
Other languages
English (en)
Other versions
KR102220468B1 (ko
Inventor
데이비드 에이. 로버츠
엘리어트 에이치. 메드닉
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20200040294A publication Critical patent/KR20200040294A/ko
Application granted granted Critical
Publication of KR102220468B1 publication Critical patent/KR102220468B1/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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • 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/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

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

Abstract

선점형 캐시 후기록의 방법은, 제 1 캐시(118)의 제 1 캐시 제어기(120)로부터, 제 2 캐시(122)의 제 2 캐시 제어기(124)로, 제 1 사이클 동안 제 1 캐시와 제 2 캐시 사이의 미사용 대역폭을 나타내는 미사용 대역폭 메시지를 송신하는 것을 포함한다. 제 2 사이클 동안, 오손 데이터를 포함한 캐시 라인은 미사용 대역폭 메시지에 기초하여 제 2 캐시로부터 제 1 캐시로 선점적으로 후 기록된다. 뿐만 아니라, 제 2 캐시에서의 캐시 라인은 제 2 캐시에 대한 캐시 미스에 응답하여 다시 쓰여진다.

Description

트랜잭션 지원을 가진 선점형 캐시 후기록
정부 라이선스 권한
본 발명은 DOE에 의해 부여된 Lawrence Livermore National Security(본 계약 번호 DE-AC52-07NA27344, 하청 번호 B620717)을 가진 PathForward Project 하에 정부 지원을 갖고 이루어졌다. 정부는 본 발명에 특정한 권한을 가진다.
프로세싱 시스템들은 통상적으로 하나 이상의 컴퓨팅 집합체들을 구현하며, 각각의 컴퓨팅 집합체는 다수의 프로세서 코어들 및 둘 이상의 레벨들의 캐시들을 가진 캐시 계층을 갖는다. 지연시간 기간은 프로세서 코어가 데이터를 요청할 때와 요청된 데이터가 수신되는 시간 사이의 시간과 연관된다. 프로세서 코어들이 데이터에 대한 유휴 및 대기를 소비하는 시간을 최소화하기 위해, 많은 프로세싱 시스템들은 프로그램 지시들 및 데이터의 임시 사본들을 저장하기 위해 캐시 계층에서의 캐시 메모리를 사용한다. 캐시 계층에서, 각각의 프로세서 코어는 대응하는 코어에 전용인 하나 이상의 레벨들의 캐시들(이후, "전용 캐시들")과 연관된다. 프로세싱 시스템은 또한 캐시 계층의 또 다른 레벨에서 공유 캐시를 구현하며, 여기에서 공유 캐시는 컴퓨팅 집합체의 프로세싱 코어들 간에 공유된다(이후, "공유 캐시").
본 개시는 수반된 도면들을 참조함으로써 더 잘 이해되며, 그것의 다수의 특징들 및 이점들이 이 기술분야의 숙련자들에게 명백해진다. 상이한 도면들에서 동일한 참조 심볼들의 사용은 유사한 또는 동일한 아이템들을 나타낸다.
도 1은 몇몇 실시예들에 따른 선점형 캐시 후기록을 이용한 프로세싱 시스템의 블록도이다.
도 2는 몇몇 실시예들에 따른 예시적인 선점형 캐시 후기록 동작을 예시한 블록도이다.
도 3은 몇몇 실시예들에 따른 또 다른 예시적인 선점형 캐시 후기록 동작을 예시한 블록도이다.
도 4는 몇몇 실시예들에 따른 또 다른 예시적인 선점형 캐시 후기록 동작을 예시한 블록도이다.
도 5는 몇몇 실시예들에 따른 선점형 캐시 후기록의 방법을 예시한 흐름도이다.
도 1 내지 도 5는 캐시들 내에서 오손 라인들의 수를 감소시키기 위해 선점형 캐시 후기록을 이용하고, 그에 의해 "오손" 라인들(즉, 캐시에서 수정되었으며 하위 레벨 캐시로 아직 기록되지 않은 캐시 라인들)의 후기록으로 인한 미래 캐시 미스들의 지연시간을 감소시키기 위한 기술들을 예시한다. 예시를 위해, 각각의 코어가 하나 이상의 레벨들의 전용 캐시들과 연관되며 코어들이 또 다른, 비-전용, 레벨의 캐시 계층에서의 공유 캐시를 공유하는 다중-코어 프로세싱 시스템에서, 대응하는 캐시 제어기는 "미싱된" 데이터(즉, 캐시 미시를 야기한 메모리 어드레스와 연관된 데이터)에 대한 공간을 만들기 위해 캐시 라인을 내보낼 필요가 있을 수 있다. 종래에, 축출될 캐시 라인이 오손 캐시 라인이면, 캐시 제어기는 캐시 라인을 축출하기 전에 오손 캐시 라인을 하위 레벨 캐시로 또는 메인 메모리로 기록함으로써("후기록"으로 불리우는) 메모리 일관성(memory coherence)을 보존한다. 그러므로 후기록은 오손 캐시 라인의 후기록을 야기하는 각각의 캐시 미스에 대한 성능 페널티를 도입한다.
이러한 성능 페널티를 개선하기 위해, 다양한 실시예들에서, 프로세싱 시스템은 제 1 캐시의 캐시 제어기 및 제 2 캐시의 캐시 제어기로부터, 제 1 사이클 동안 제 1 및 제 2 캐시 사이의 미사용 대역폭을 나타내는 미사용 대역폭 메시지를 주기적으로 송신함으로써, 선점형 캐시 후기록을 이용한다. 미사용 대역폭 메시지에 기초하여 미사용 대역폭을 초과하지 않고 제 2 캐시로부터 제 1 캐시로 선점적으로 기록될 수 있는 캐시 라인들의 수가, 제 2 캐시의 제어기에서 산출된다. 제 2 사이클 동안, 캐시 라인들의 산출된 수는 제 2 캐시로부터 제 1 캐시로, 선점적으로 후기록된다. 캐시 라인들의 산출된 수의 이러한 선점형 캐시 후기록은 제 2 캐시로부터 오손 캐시 라인들의 축출을 요구할 캐시 미스들을 마주하기 전에 제 2 캐시에서 오손 캐시 라인들의 수를 감소시킨다. 따라서, 제 2 캐시로의 미래 캐시 미스들과 연관된 데이터는 하위 레벨 캐시들 및/또는 시스템 메모리로의 후기록들에 대해 기다리지 않고 다시 쓰여 질 수 있으며, 그에 의해 시스템 리소스들(예컨대, 캐시들간의 대역폭)의 낭비를 감소시키고 성능을 개선한다.
도 1은 적어도 몇몇 실시예들에 따른 선점형 캐시 후기록을 이용한 프로세싱 시스템(100)을 예시한다. 묘사된 예에서, 프로세싱 시스템(100)은 두 개의 프로세서 코어들(102 및 104)과 같은, 복수의 프로세서 코어들, 캐시 계층(106), 메모리 제어기(108), 및 시스템 메모리(110)를 포함한다. 프로세서 코어들(102, 104)은, 예를 들어, 중앙 프로세싱 유닛(CPU) 코어들, 그래픽 프로세싱 유닛(GPU) 코어들, 디지털 신호 프로세서(DSP) 코어들, 또는 그것의 조합을 포함한다. 프로세싱 시스템의 프로세서 코어들의 수는 2보다 적거나 또는 많을 수 있다는 것이 이해될 것이다.
메모리 제어기(108)는 캐시 계층(106)과 시스템 메모리(110) 사이의 인터페이스로서 동작한다. 따라서, 캐시 계층(106)에 캐싱될 데이터는 통상적으로, "캐시 라인들"로서 불리우는 데이터의 블록들로서 조작되며, 이것은 시스템 메모리(110)와 연관된 가상 또는 물리적 어드레스를 사용하여 어드레싱되거나 또는 그 외 메모리 계층에 위치된다. 몇몇 실시예들에서, 각각의 캐시 라인은 또한 다른 캐시들과 또는 시스템 메모리(110)와 캐시 라인에서의 데이터를 동기화하기 위해 사용된 캐시 라인 및/또는 캐시 일관성 데이터와 연관된 메모리 어드레스를 식별하기 위한 캐시 라인 태그와 같은, 캐시 라인을 관리하기 위해 사용된 부가적인 데이터를 저장한다. 다양한 실시예들에서, 캐시 태그는 캐시 라인과 연관된 메모리 어드레스 중 모두 또는 일 부분으로부터 형성될 수 있다. 캐시 라인들은 캐시 계층(106)으로부터의 메모리 요청들에 응답하여 메모리 제어기(108)에 의해 시스템 메모리(110)로부터 액세스된다. 마찬가지로, 수정된 데이터를 포함한 캐시 라인이 캐시 계층(106)으로부터 축출되고 따라서 시스템 메모리(110)에서 업데이트될 필요가 있을 때, 메모리 제어기(108)는 이러한 후-기록 프로세스를 관리한다.
캐시 계층(106)은 둘 이상의 레벨들의 캐시들을 포함한다. 예시된 예에서, 캐시 계층(106)은 3개의 캐시 레벨들: 레벨 1(L1), 레벨 2(L2), 및 레벨 3(L3)을 포함한다. L1에 대해, 프로세싱 시스템(100)은 각각의 프로세싱 코어에 대해 작은 전용 캐시들을 구현하며, 이것은 각각이 프로세서 코어들(102, 104) 중 대응하는 것과 연관된 L1 캐시들(112, 114)로서 묘사된다. L1 캐시들(112, 114)의 각각은 프로세서 코어들(102, 104)로부터의 메모리 액세스 요청들을 프로세싱하는 L1 캐시 제어기(116)를 구현한다. 이 실시예에서, L1 캐시들(112, 114)의 각각은 그것들 각각의 프로세서 코어들(102, 104)에 의해 잠재적으로 요구되는 임의의 유형의 데이터를 저장할 수 있는 단일 캐시 메모리로서 예시된다. 그러나, 다른 실시예들은 프로그램 지시 캐시들, 프로그램 데이터 캐시들, 및 변환 색인 버퍼 데이터 캐시들과 같은, 상이한 유형들의 데이터를 별도로 저장하기 위한 각각의 프로세서 코어(102, 104)와 연관된 별개의 L1 캐시 유닛들을 포함할 수 있다.
L2에 대해, 프로세싱 시스템(100)은 더 큰(저장 크기에서 L1 캐시들(112, 114)에 대하여) L2 캐시(118)를 구현한다. 예시된 대로, L2 캐시(118)는 프로세서 코어들(102, 104)에 의해 공유된다. 몇몇 실시예들에서, 프로세싱 시스템(100)은 L1 캐시(들)(112, 114) 내에 저장된 데이터가 또한 L2 캐시(118)에 복제되는 포괄적 캐시 설계를 사용한다. 다른 실시예들에서, 프로세싱 시스템(100)은 캐시들이 결코 데이터를 공유할 수 없는 배타적 캐시 설계를 사용한다. L2 캐시(118)는 공유 L2 캐시(118)를 관리하며 다양한 일관성 기법들을 통해 온-칩 데이터의 일관성을 유지하도록 돕는 L2 캐시 제어기(120)를 구현한다. 캐시 미스들은 프로세서 코어들(102, 104)이 요구하는 데이터 또는 지시들이 캐시(들)에 있지 않을 때 발생한다. 예를 들어, L1 캐시 미스들은 L2 캐시 제어기(120)로 전송되며, 그 후 히트(즉, 원하는 데이터 또는 지시가 L2 캐시에 있다)를 위해 L2 캐시(118)를 확인한다.
L3에 대해, 프로세싱 시스템(100)은 일반적으로 L2 캐시(118) 및 L1 캐시들(112, 114)에 대해 저장 크기가 더 큰 L3 캐시(122)를 구현한다. L3 캐시(122)는 프로세서 코어들(102, 104)에 의해 공유되며, 따라서 적어도 L1 캐시들(112, 114) 및 L2 캐시(118)에 의해 공유된다. L3 캐시(122)는 L3 캐시(122)를 관리하며 다양한 일관성 기법들을 통해 온-칩 데이터의 일관성을 유지하도록 돕는 L3 캐시 제어기(124)를 구현한다. L2 캐시 미스들은 L3 캐시 제어기(124)로 전송되며, 그 후 히트를 위해(즉, 원하는 데이터 또는 지시가 L3 캐시에 있다) L3 캐시(122)를 확인한다.
L1 캐시들(112, 114)의 각각은 그것의 대응하는 프로세서 코어에 전용이지만, 캐시 계층(104)은 L1 캐시들(112, 114), L2 캐시(118), 및 L3 캐시(122) 사이에서 일관성을 유지하도록 동작한다. 특히, L1 캐시들(112, 114), L2 캐시(118), 및 L3 캐시(122)는 메모리 일관성 프로토콜(여기에서 간단히 "일관성 프로토콜"로 불리운다)을 구현한다. 각각의 캐시 라인은, 캐시 라인의 일관성 상태, 뿐만 아니라 캐시 라인이 어떻게 일관성 프로토콜의 규칙들하에서 핸들링될 수 있는지를 나타내기 위해, 일관성 프로토콜에 의해 통제된 바와 같이, 대응하는 일관성 정보와 연관된다.
예를 들어, 일관성 프로토콜은 캐시 라인이 대응하는 캐시에서 수정될 수 있음을 나타내는 "수정됨", 대응하는 캐시 라인이 다른 프로세서 코어들과 연관된 캐시들에서 수정될 수 없음을 나타내는 "배타적", 및 캐시 라인이 캐시 계층(104)의 다수의 캐시들에 의해 공유됨을 나타내며, 그러므로 수정되지 않아야 하는, "공유됨"과 같은 일관성 상태들을 수립할 수 있다. 특정된 이벤트들에 대해, 프로세싱 시스템에 의해 구현된 특정한 일관성 프로토콜에 의해 정의된 바와 같이, 캐시 계층(104)의 캐시는 다른 캐시들에서 주어진 캐시 라인의 일관성 상황을 식별하기 위해 캐시 프로브를 발행할 수 있다. 예를 들어, 공유됨에서 배타적으로 캐시 라인의 일관성 상황을 변경하기 전에, 캐시는 캐시 라인이 임의의 다른 캐시에 저장되는지를 식별하기 위해 캐시 프로브를 발행할 수 있으며, 그렇다면 캐시 라인의 일관성 상황은 캐시 라인을 저장하는 캐시들에서 저장된다. 프로브에 대한 응답들에 기초하여, 프로브를 발행한 캐시는 일관성 프로토콜의 규칙들하에 요구되는 바와 같이, 적절한 동작을 취할 수 있다. 예를 들어, 어떤 다른 캐시들이 캐시 라인을 저장하지 않는다면, 캐시는 캐시 라인의 상태를 "공유됨"에서 "배타적"으로 변경할 수 있다.
상기 표시된 바와 같이, 캐시 계층(106)의 캐시 메모리들은 통상적으로, 캐시 라인들로서 불리우는, 고정된 수의 캐시 메모리 위치들로 분할된다. 통상적으로, 각각의 캐시 라인은 시스템 메모리 어드레스들의 세트와 연관된다. 각각의 캐시 라인은 그것의 연관된 시스템 메모리 어드레스들 중 하나로부터 프로그램 지시들 및/또는 데이터의 사본을 저장하도록 적응된다. 프로세서 코어들(102, 104) 중 하나가 캐시 메모리 위치에 저장된 데이터를 수정하거나 또는 업데이트할 때, 이 데이터는 결국 시스템 메모리로 다시 복사될 필요가 있을 것이다. 캐시 라인에 저장된 데이터가 캐시 계층(106)의 캐시 메모리들(예컨대, L1 캐시들(112, 114), L2 캐시(118), 및/또는 L3 캐시(122)) 중 하나 내에서 수정되지만 시스템 메모리(110)에 반영되도록 수정되지 않는다면, 캐시 메모리에서의 데이터는 "오손 데이터"로서 불리운다. 통상적으로, 프로세서 또는 프로세서 코어는 시스템 메모리(110)로부터 상이한 데이터의 사본을 저장하기 위해 프로세서 코어가 캐시 라인을 요구할 때까지 오손 데이터로 시스템 메모리(110)를 업데이트하는 것을 미룬다.
일 실시예에서, L1 캐시들(112, 114)의 각각은 제한된 수의 캐시 라인들을 저장할 수 있다. L1 캐시의 용량이 초과될 때, 캐시 라인들 중 하나는 새로운 캐시 라인을 위한 공간을 만들기 위해 L1 캐시로부터 제거된다. 제거된 캐시 라인은 희생자 라인으로서 불리운다. 희생자 캐시 라인들은, 최소 최근 사용된 캐시 라인을 선택하는 것과 같은, 캐시 교체 정책에 따라, 및/또는 프로그램과 연관된 캐싱 지시들에 따라 선택될 수 있다. 희생자 라인에서의 데이터가 연관된 프로세서 코어에 의해 수정되지 않았다면, 희생자 라인에서의 데이터는 폐기되거나 또는 겹쳐 쓰여 질 수 있다. 그러나, 희생자 라인에서의 데이터가 연관된 프로세서 코어(예컨대, 프로세서 코어들(102, 104) 중 하나)에 의해 수정되었다면, 오손 데이터(즉, 캐시 메모리에서 수정되었지만 시스템 메모리(110)에서 수정되지 않은)는 프로그램들의 정확한 동작을 보장하기 위해 시스템 메모리(110)(또는 상이한 캐시 레벨 메모리)로 다시 복사되어야 한다. 캐시 메모리로부터 하위-레벨 캐시 메모리 또는 시스템 메모리로의 수정된 캐시 데이터의 복사는 후기록 동작으로 불리운다.
성능 페널티는 오손 캐시 라인들의 후기록으로 인한 캐시 미스들에서 기인한 지연시간과 연관된다는 것이 이해될 것이다. 예를 들어, 프로세서 코어(102)가 요구하는 데이터 또는 지시들이 L1 캐시(112)에서 발견되지 않을 때, 요청된 데이터는 다른 캐시 레벨들(예컨대, L2 캐시(118) 또는 L3 캐시(122))로부터 또는 시스템 메모리(110)로부터 인출된다. 그러나, L1 캐시(112)가 이미 가득 찼다면, 기존의 캐시 라인들 중 적어도 하나가 프로세서 코어(102)에 의해 요청된 새로운 캐시 라인(들)을 위한 공간을 만들기 위해 L1 캐시(112)로부터 제거되어야 한다. L1 캐시(112)에 클린 캐시 라인들이 없는 경우, 지연시간은 프로세서 코어(102)에 의해 요청된 데이터가 L1 캐시(112)로 기록될 수 있기 전에 오손 캐시 라인들의 후기록을 대기하는 것으로 인해 발생한다.
이하에서 보다 상세하게 설명되는 바와 같은, 다양한 실시예들에서, 상이한 캐시 및/또는 메모리 레벨들 간의 미사용 대역폭(여기에서 "사이클"로 불리우는, 미리 결정된 단위 시간당)은 메모리 계층(106)에서 하나의 캐시로부터 다음 레벨 캐시로 보고된다. 예로서, L2 캐시 제어기(120)는 사이클 당 L1 캐시(112)와 L2 캐시(118) 사이의 대역폭 이용을 나타내는 미사용 대역폭 메시지를 L1 캐시 제어기(116)로 전송한다. 미사용 대역폭 메시지에 응답하여, L1 캐시 제어기(116)는 사이클 당 이용 가능한 미사용 대역폭을 이용하지만 이를 초과하지 않도록 L1 캐시(112)로부터 L2 캐시(118)로 기록될 수 있는 오손 캐시 라인들의 수를 산출한다. 다음 사이클 동안, 오손 캐시 라인들의 산출된 수는 메모리 계층(106)에서 더 낮은 다음 캐시 레벨로(예컨대, L1 캐시(112)로부터 L2 캐시(118)로) 선점적으로 기록된다. L2 캐시(118)로 후기록된 캐시 라인들은 L1 캐시(112)에서 클린(clean)으로 표시될 수 있다.
여기에서 사용된 바와 같이, "선점적으로(preemptively)"는 데이터가 전체 캐시로 기록될 수 있기 전에 적어도 하나의 오손 캐시 라인의 축출을 요구할 전체 캐시에 대한 캐시 미스를 마주하기 전에 캐시로부터 더 낮은 다음 캐시 레벨로 오손 캐시 라인을 후 기록하는 것을 나타낸다. 그 다음에, 캐시 미스에 응답하여, 이전에 선점적으로 후 기록되었지만, 여전히 오손 데이터를 포함하는, 캐시 라인은 캐시로부터 임의의 데이터를 내보내지 않고 다시 기록될 수 있다. 따라서, L1 캐시(112)에서의 오손 캐시 라인들의 수는 감소되며 L1 캐시(112)에 대한 미래 캐시 미스들과 연관된 데이터는 하위 레벨 캐시들로 및/또는 시스템 메모리(110)로의 후기록들을 기다리지 않고 클린 캐시 라인들에 다시 쓰여 질 수 있으며, 그에 의해 시스템 리소스들(예컨대, 캐시들간의 대역폭)의 낭비를 감소시키고 성능을 개선한다.
도 2는 몇몇 실시예들에 따른 예시적인 선점형 캐시 후기록 동작을 예시한 다이어그램이다. 통상적인 메모리는 캐시 라인들의 세트로 조직된 메모리 어레이를 포함한다. 도 2의 예에서, 메모리 어레이(202)에서의 각각의 캐시 라인은 상기 캐시 라인에 저장된 데이터와 연관된 메인 메모리 위치를 식별하는 대응 어드레스 태그를 포함한다. 뿐만 아니라, 각각의 캐시 라인은, 특정한 캐시 라인에서의 데이터가 시스템 메모리(110)에 저장되는 것과 상이한지를 나타내기 위해 오손 비트와 같은, 캐시 라인 상황 식별자들을 포함한다. 예시된 바와 같이, 1의 비트 값은 캐시 라인에서의 데이터가 오손임을 나타내며 0의 비트 값은 캐시 라인에서의 데이터가 클린임을 나타낸다. 다양한 실시예들에서, 각각의 캐시 라인은 또한 블록에서의 데이터가 유효한지 여부를 나타내기 위해 유효 비트를 포함한다.
제 1 사이클 동안, L2 캐시 제어기(120)는 사이클 당 L1 캐시(112)와 L2 캐시(118) 사이의 대역폭 이용을 나타내는 미사용 대역폭 메시지를 L1 캐시 제어기(116)로 전달한다. 도 2의 예에서 예시된 바와 같이, L1 캐시 제어기(116)는, 미사용 대역폭 메시지에 기초하여, 이용하지만 이용 가능한 미사용 대역폭을 초과하지 않도록 하나의 오손 캐시 라인이 L1 캐시(112)로부터 L2 캐시(118)로 기록될 수 있음을 산출한다. 따라서, 제 2 사이클 동안, L1 캐시(112)의 오손 캐시 라인(202)에서의 데이터는 L2 캐시(118)의 캐시 라인(206)으로 후 기록된다. 이러한 예시적인 실시예에서, L2 캐시(118)로 후 기록된 캐시 라인(들)은 L1 캐시(112)에서 클린으로 표시된다. 따라서, L1 캐시(112)에서 오손 캐시 라인들의 수는 감소되며 L1 캐시(112)에 대한 미래 캐시 미스들과 연관된 데이터는 하위 레벨 캐시(들)로 및/또는 시스템 메모리(110)로의 데이터 A의 후기록을 기다리지 않고 캐시 라인(204)에 다시 쓰여 질 수 있다.
도 2의 예에서, 캐시 계층은 상위-레벨 캐시(즉, L1 캐시(112))에서의 모든 캐시 라인들이 또한 하위-레벨 캐시(즉, L2 캐시(118))에 존재하는 계층(캐시 라인들이 다수의 캐시들에 존재하도록 허용되지만 그것을 요구하지 않는다는 점에서 엄격하게 배타적이지 않은)을 이용한다. 데이터 A를 포함한 캐시 라인의 사본들은, 캐시 라인(204)이 클린으로 표시되고 캐시 라인(206)이 오손으로 표시될지라도, 선점형 캐시 라인 후 기록 후 L1 캐시(112) 및 L2 캐시(118) 양쪽 모두에 존재한다. 뿐만 아니라, 이 예에서, 캐스 미스 시 캐시 라인이 먼저 L1 캐시(112)에 할당되는 할당 정책이 사용된다. L2 캐시(118)는 그것이 후 기록 동작 후 캐시 라인의 사본을 수신한다는 점에서 희생자 캐시로서 동작한다. 다른 실시예들에서, 캐시 계층은 하위-레벨 캐시(즉, L2 캐시(118))가 상위-레벨 캐시(즉, L1 캐시(112))에 존재하지 않는 캐시 라인들을 포함하는 엄격하게 배타적인 계층을 이용할 수 있다. 이러한 실시예들(도시되지 않음)에서, 캐시 라인의 사본은 선험적 캐시 라인 후기록 후 상위-레벨 캐시로부터 축출된다. 다른 실시예들에서, 캐시 계층은 대안적으로 L1 캐시(112) 및 L2 캐시(118) 양쪽 모두가 캐시 미스에 응답하여 기록 시 캐시 라인의 사본을 얻는 엄격하게 포괄적 계층을 이용할 수 있다.
단지 L1 캐시(112) 및 L2 캐시(118)만이 도 2의 예에서 예시되지만, 여기에서 설명된, 설명된 선점형 캐시 라인 후기록은 메모리 계층(예컨대, 도 1의 캐시 계층(106))에서 임의의 캐시 메모리들 사이에서 수행될 수 있다는 것이 이해될 것이다. 예를 들어, L3 제어기(124)는 사이클 당 L3 캐시(122) 및 L2 캐시(118) 사이의 대역폭 이용을 나타내는 미사용 대역폭 메시지를 L2 캐시 제어기(120)로 전달할 수 있다. 다양한 실시예들에서, 이러한 선점형 캐시 라인 후기록은 임의의 레벨의 캐시 계층(106)에 적용될 수 있거나 또는 캐시 계층(106)의 모든 캐시들 사이(예컨대, 각각의 사이클에 대해, L1 캐시(112)/L2 캐시(118) 사이 및 추가로 L2 캐시(118)/L3 캐시(122) 사이)에서 사이클마다 동시에 수행될 수 있다.
뿐만 아니라, 여기에서 설명된, 설명된 선점형 캐시 라인 후기록은 캐시들 사이의 미사용 대역폭에 제한되지 않으며 또한 메모리 계층에서의 임의의 메모리에 적용될 수 있다는 것이 이해될 것이다. 몇몇 실시예들에서, 여기에서 설명된 선점형 캐시 라인 후기록 동작들은 시스템 메모리(110) 및 캐시 계층의 마지막-레벨 캐시 사이에서 적용될 수 있다. 예를 들어, 도 1의 맥락에서, 메모리 제어기(108)는 사이클마다 L3 캐시(122)와 시스템 메모리(110) 사이의 대역폭 이용을 나타내는 미사용 대역폭 메시지를 L3 캐시 제어기(124)로 전달할 수 있다.
여기에서 사용된 바와 같이 다양한 실시예들에서, 선험적 후기록을 위한 오손 캐시 라인들의 선택은, 예를 들어, 캐시들이 일반적으로 알려진 바와 같이 먼저 최소 최근 사용된 아이템들을 후기록하는 최소 최근 사용(LRU) 정책과 같은, 표준 캐시 교체 정책들에 따라 수행될 수 있다. 다른 실시예들에서, 선점형 캐시 후기록은 각각의 캐시 라인에 대한 카운터들을 제공함으로써 최적화될 수 있다. 도 3은 몇몇 실시예들에 따른 또 다른 예시적인 선점형 캐시 후기록 동작을 예시한 다이어그램이다.
도 3의 예에서, 메모리 어레이(302)에서의 각각의 캐시 라인은 상기 캐시 라인에 저장된 데이터와 연관된 메인 메모리 위치를 식별하는 대응하는 어드레스 태그를 포함한다. 각각의 캐시 라인은 특정한 캐시 라인에서의 데이터가 시스템 메모리(110)에 저장되는 것과 상이한지를 나타내기 위해 오손 비트와 같은, 캐시 라인 상황 식별자들을 포함한다. 예시된 바와 같이, 1의 비트 값은 캐시 라인에서의 데이터가 오손임을 나타내며 0의 비트 값은 캐시 라인에서의 데이터가 클린임을 나타낸다. 다양한 실시예들에서, 각각의 캐시 라인은 또한 블록에서의 데이터가 유효한지 여부를 나타내기 위해 유효 비트를 포함한다. 뿐만 아니라, 각각의 캐시 라인은 또한 캐시 라인에서의 데이터가 기록될 때마다 증분하는 카운터 비트를 포함하며, 이것은 미리 결정된 스케줄에 기초하여 주기적으로 리셋한다. 예를 들어, L1 캐시(112)의 캐시 라인(304)에서의 데이터 A는 가장 최근 카운터가 리셋한 이래 한 번 기록되거나 또는 그 외 수정되었다. L1 캐시(112)의 캐시 라인(306)에서의 데이터 B는 가장 최근 카운터가 리셋한 이래 한 번 기록되거나 또는 그 외 수정되었다. L1 캐시(112)의 캐시 라인(308)에서의 데이터 C는 가장 최근 카운터가 리셋한 이래 7회 기록되거나 또는 그 외 수정되었으며, L1 캐시(112)의 캐시 라인(310)에서의 데이터 D는 가장 최근 카운터가 리셋한 이래 2번 기록되거나 또는 그 외 수정되었다.
제 1 사이클 동안, L2 캐시 제어기(120)는 사이클마다 L1 캐시(112)와 L2 캐시(118) 사이의 대역폭 이용을 나타내는 미사용 대역폭 메시지를 L1 캐시 제어기(116)로 전달한다. 도 3의 예에서 예시된 바와 같이, L1 캐시 제어기(116)는, 미사용 대역폭 메시지에 기초하여, 이용 가능한 미사용 대역폭을 이용하지만 이를 초과하지 않도록 3개의 오손 캐시 라인들이 L1 캐시(112)로부터 L2 캐시(118)로 기록될 수 있음을 산출한다. 따라서, 제 2 사이클 동안, L1 캐시(112)의 3개의 오손 캐시 라인들에서의 데이터는 L2 캐시(118)로 후 기록된다. 이러한 예시적인 실시예에서, L1 캐시 제어기(116)는 높은 값들을 가진 것들 전에 후기록을 위해 낮은 카운터 값들을 가진 캐시 라인들을 선택함으로써 어떤 캐시 라인들이 후 기록될지를 결정한다. 더 높은 카운터 값들을 가진 캐시 라인들이 가까운 미래에 기록 히트를 야기하며, 그러므로 오손 데이터를 포함하도록 기록될 가능성이 높으므로, 낮은 카운터 캐시 라인들의 선험적 후기록을 우선화하는 것은 후기록 트래픽을 감소시키며 선험적 후기록 프로세스의 효율을 증가시킨다. 뿐만 아니라, 후기록 트래픽에서의 감소는 메모리 계층의 하위 레벨들에서 비-휘발성 메모리의 마모를 감소시킨다.
따라서, 도 3에 예시된 바와 같이, L1 캐시 제어기(116)는 캐시 라인들(304, 306, 및 310)은 가장 낮은 3개의 카운터 값들을 가지며 제 2 사이클 동안, L1 캐시(112)의 3개의 오손 캐시 라인들에서의 데이터가 L2 캐시(118)로 후 기록된다고 결정한다. 따라서, 이러한 예시적인 실시예에서, L2 캐시(118)로 후 기록된 캐시 라인들(304, 306, 및 310)은 L1 캐시(112)에서 클린으로 표시된다. L1 캐시(112)에서의 오손 캐시 라인들의 수는 감소되며 L1 캐시(112)에 대한 미래 캐시 미스들과 연관된 데이터는 하위 레벨 캐시(들)로 및/또는 시스템 메모리(110)로의 데이터 A, B, 및 D의 후기록을 기다리지 않고 캐시 라인들(304, 306, 및 310)에 다시 쓰여 질 수 있다. L1 캐시(112)에 대한 미래 캐시 미스들은 L1 캐시 제어기(116)가 여전히 오손으로 표시된 채로 있는 캐시 라인(308)에 대해 클린 캐시 라인들(304, 306, 및 310)로 기록하는 것을 우선화하는 것을 야기할 것임이 추가로 이해될 것이다.
도 2의 예와 유사하게, 도 3의 캐시 계층은 상위-레벨 캐시(즉, L1 캐시(112))에서의 모든 캐시 라인들이 또한 하위-레벨 캐시(즉, L2 캐시(118))에 존재하는 계층(캐시 라인들이 다수의 캐시들에 존재하도록 허용되지만 그것을 요구하지는 않는다는 점에서 엄격하게 배타적이지 않은)이다. 따라서, 데이터 A, B, 및 D를 포함한 캐시 라인의 사본들은, 캐시 라인들이 L1 캐시(112)에서 클린으로 표시되며 캐시 라인들이 L2 캐시(118)에서 오손으로 표시될지라도, 선점형 캐시 라인 후기록 후 L1 캐시(112) 및 L2 캐시(118) 양쪽 모두에 존재한다. 뿐만 아니라, 이 예에서, 캐시 미스 시 캐시 라인이 먼저 L1 캐시(112)에 할당되는 할당 정책이 사용된다. L2 캐시(118)는 후기록 동작 후 그것이 캐시 라인의 사본을 수신한다는 점에서 희생자 캐시로서 동작한다. 다른 실시예들에서, 캐시 계층은 하위-레벨 캐시(즉, L2 캐시(118))가 상위-레벨 캐시(즉, L1 캐시(112))에 존재하지 않는 캐시 라인들을 포함하는 엄격하게 배타적 계층을 이용할 수 있다. 이러한 실시예들(도시되지 않음)에서, 캐시 라인의 사본은 선점형 캐시 라인 후기록 후 상위-레벨 캐시로부터 축출된다. 다른 실시예들에서, 캐시 계층은 대안적으로 캐시 미스에 응답하여 L1 캐시(112) 및 L2 캐시(118) 양쪽 모두가 기록 시 캐시 라인의 사본을 얻는 엄격하게 포괄적 계층을 이용할 수 있다.
L1 캐시(112) 및 L2 캐시(118)만이 도 3의 예에서 예시되지만, 여기에서 설명된, 설명된 선점형 캐시 라인 후기록은 메모리 계층(예컨대, 도 1의 캐시 계층(106))에서 임의의 캐시 메모리들 사이에서 수행될 수 있다는 것이 이해될 것이다. 예를 들어, L3 제어기(124)는 사이클마다 L3 캐시(122)와 L2 캐시(118) 사이의 대역폭 이용을 나타내는 미사용 대역폭 메시지를 L2 캐시 제어기(120)로 전달할 수 있다. 다양한 실시예들에서, 이러한 선점형 캐시 라인 후기록은 임의의 레벨의 캐시 계층(106)에 적용될 수 있거나 또는 캐시 계층(106)의 모든 캐시들 사이(예컨대, 각각의 사이클에 대해, L1 캐시(112)/L2 캐시(118) 사이 및 추가로 L2 캐시(118)/L3 캐시(122) 사이)에서 사이클마다 동시에 수행될 수 있다.
뿐만 아니라, 여기에서 설명된, 설명된 선점형 캐시 라인 후기록은 캐시들 사이의 미사용 대역폭에 제한되지 않으며 또한 메모리 계층에서의 임의의 메모리에 적용될 수 있다는 것이 이해될 것이다. 몇몇 실시예들에서, 여기에서 설명된 선점형 캐시 라인 후기록 동작들은 시스템 메모리(110) 및 캐시 계층의 마지막-레벨 캐시 사이에서 적용될 수 있다. 예를 들어, 도 1의 맥락에서, 메모리 제어기(108)는 사이클마다 L3 캐시(122)와 시스템 메모리(110) 사이의 대역폭 이용을 나타내는 미사용 대역폭 메시지를 L3 캐시 제어기(124)로 전달할 수 있다.
도 4는 몇몇 실시예들에 따른 또 다른 예시적인 선점형 캐시 후기록 동작을 예시한 다이어그램이다. 도 4의 예에서, 각각의 캐시 라인은 특정한 캐시 라인에서의 데이터가 시스템 메모리(110)에 저장되는 것과 상이한지를 나타내기 위해 오손 비트와 같은, 캐시 라인 상황 식별자들을 포함한다. 예시된 바와 같이, 1의 비트 값은 캐시 라인에서의 데이터가 오손임을 나타내며 0의 비트 값은 캐시 라인에서의 데이터가 클린임을 나타낸다. 다양한 실시예들에서, 각각의 캐시 라인은 또한 블록에서의 데이터가 유효한지 여부를 나타내기 위해 유효 비트를 포함한다. 뿐만 아니라, 메모리 어레이(402)에서의 각각의 캐시 라인은 각각의 수요 요청에 대해 캐시 라인에 할당된 트랜잭션 ID를 식별하는 대응하는 트랜잭션 식별(ID) 태그를 포함한다.
제 1 사이클 동안, L2 캐시 제어기(120)는 사이클 당 L1 캐시(112)와 L2 캐시(118) 사이의 대역폭 이용을 나타내는 미사용 대역폭 메시지를 L1 캐시 제어기(116)로 전달한다. 도 4의 예에서 예시된 바와 같이, L1 캐시 제어기(116)는, 미사용 대역폭 메시지에 기초하여, 이용 가능한 미사용 대역폭을 이용하지만 이를 초과하지 않도록 3개의 오손 캐시 라인들이 L1 캐시(112)로부터 L2 캐시(118)로 기록될 수 있음을 산출한다. 따라서, 제 2 사이클 동안, L1 캐시(112)의 3개의 오손 캐시 라인들에서의 데이터는 L2 캐시(118)로 후 기록된다. 이러한 예시적인 실시예에서, L1 캐시 제어기(116)는 동일한 트랜잭션 ID를 가진 캐시 라인들을 우선화함으로써 어떤 캐시 라인들이 후 기록될지를 결정한다. 따라서, 도 4에 예시된 바와 같이, L1 캐시 제어기(116)는 캐시 라인들(404, 406, 및 408)이 모두 트랜잭션 ID A를 갖고 태깅된다고 결정한다. 따라서, 제 1 사이클로부터의 3 캐시 라인 대역폭에 기초하여, 캐시 라인(408)이 클린으로서 표시될지라도 캐시 라인들(404, 406, 및 408)에서의 데이터는 모두 제 2 사이클 동안 L2 캐시(118)로 기록된다. 따라서, 동일한 트랜잭션과 연관된 데이터의 무결성 및 지속성이 개선된다.
도 2 내지 도 3의 예들과 유사하게, 도 4의 캐시 계층은 상위-레벨 캐시(즉, L1 캐시(112))에서의 모든 캐시 라인들이 또한 하위-레벨 캐시(즉, L2 캐시(118))에 존재하는 계층(캐시 라인들이 다수의 캐시들에 존재하도록 허용되지만 그것을 요구하지는 않는다는 점에서 엄격하게 배타적이지 않은)을 이용한다. 따라서, 캐시 라인(404, 406, 및 408)의 사본들은, 캐시 라인들이 L1 캐시(112)에서 클린으로서 표시되며 캐시 라인들이 L2 캐시(118)에서 오손으로 표시될지라도, 선점형 캐시 라인 후기록 후 L1 캐시(112) 및 L2 캐시(118) 양쪽 모두에 존재한다. 뿐만 아니라, 이 예에서, 캐시 미스 시 캐시 라인이 먼저 L1 캐시(112)에 할당되는 할당 정책이 사용된다. L2 캐시(118)는 그것이 후 기록 동작 후 캐시 라인의 사본을 수신한다는 점에서 희생자 캐시로서 동작한다. 다른 실시예들에서, 캐시 계층은 하위-레벨 캐시(즉, L2 캐시(118))가 상위-레벨 캐시(즉, L1 캐시(112))에 존재하지 않는 캐시 라인들을 포함하는 엄격하게 배타적인 계층을 이용할 수 있다. 이러한 실시예들(도시되지 않음)에서, 캐시 라인의 사본은 선험적 캐리 라인 후기록 후 상위-레벨 캐시로부터 축출된다. 다른 실시예들에서, 캐시 계층은 대안적으로 L1 캐시(112) 및 L2 캐시(118) 양쪽 모두가 캐시 미스에 응답하여 기록 시 캐시 라인의 사본을 얻는 엄격하게 포괄적 계층을 이용할 수 있다.
단지 L1 캐시(112) 및 L2 캐시(118)만이 도 4의 예에서 예시되지만, 여기에서 설명된, 설명된 선점형 캐시 라인 후기록은 메모리 계층(예컨대, 도 1의 캐시 계층(106))에서 임의의 캐시 메모리들 사이에서 수행될 수 있다는 것이 이해될 것이다. 예를 들어, L3 제어기(124)는 사이클마다 L3 캐시(122)와 L2 캐시(118) 사이의 대역폭 이용을 나타내는 미사용 대역폭 메시지를 L2 캐시 제어기(120)로 전달할 수 있다. 다양한 실시예들에서, 이러한 선점형 캐시 라인 후기록은 임의의 레벨의 캐시 계층(106)에 적용될 수 있거나 또는 캐시 계층(106)의 모든 캐시들 사이(예컨대, 각각의 사이클에 대해, L1 캐시(112)/L2 캐시(118) 사이 및 추가로 L2 캐시(118)/L3 캐시(122) 사이)에서 사이클마다 동시에 수행될 수 있다.
뿐만 아니라, 여기에서 설명된, 설명된 선점형 캐시 라인 후기록은 캐시들 사이의 미사용 대역폭에 제한되지 않으며 또한 메모리 계층에서의 임의의 메모리에 적용될 수 있다는 것이 이해될 것이다. 몇몇 실시예들에서, 여기에서 설명된 선점형 캐시 라인 후기록 동작들은 시스템 메모리(110) 및 캐시 계층의 마지막-레벨 캐시 사이에서 적용될 수 있다. 예를 들어, 도 1의 맥락에서, 메모리 제어기(108)는 사이클마다 L3 캐시(122)와 시스템 메모리(110) 사이의 대역폭 이용을 나타내는 미사용 대역폭 메시지를 L3 캐시 제어기(124)로 전달할 수 있다.
도 5는 몇몇 실시예들에 따른 선점형 캐시 후기록을 수행하는 방법(500)을 예시한다. 단계 502에서, 프로세서 코어(도 1의 프로세서 코어(102)와 같은)는 로드 및/또는 저장 요청들을 그것의 L1 캐시(즉, L1 캐시(112))로 전송한다. 단계 504에서, L1 제어기는 로드 및/또는 저장 요청이 캐시 미스를 야기하는지 및 L1 캐시(112)가 이미 가득 찼는지를 결정한다. 그렇지 않다면, 방법(500)은 다음 로드 및/또는 저장 요청을 프로세싱하기 위해 단계 502로 돌아간다. 그러나, 단계 504의 조건들 양쪽 모두가 충족된다면, 방법(500)은 단계 506으로 진행한다.
단계 506에서, 캐시 계층의 하나 이상의 캐시 제어기들은 대역폭 이용에 관한 피드백을 제공한다. 예를 들어, 도 2에 관해 논의된 바와 같이, L2 캐시 제어기(120)는 사이클마다 L1 캐시(112)와 L2 캐시(118) 사이의 대역폭 이용을 나타내는 미사용 대역폭 메시지를 L1 캐시 제어기(116)로 전달한다. 즉, 미사용 대역폭 메시지는 하위-레벨 캐시 제어기(예컨대, L2 캐시 제어기(120))로부터 상위-레벨 캐시의 캐시 제어기(예컨대, L1 캐시 제어기(116))로 전달된다.
단계 508에서, 상위-레벨 캐시 제어기(예컨대, L1 캐시 제어기(116))는, 미사용 대역폭 메시지에 기초하여, 이용 가능한 미사용 대역폭을 이용하지만 이를 초과하지 않도록 하위 레벨 캐시(예컨대, L2 캐시(118))로 기록될 수 있는 오손 캐시 라인들의 수를 산출한다. 따라서, 단계 510에서 다음 사이클 동안, 산출된 오손 캐시 라인들의 수에서의 데이터는 하위-레벨 캐시로 후 기록된다. 따라서, 각각의 사이클 동안, L1 캐시(112)에서 오손 캐시 라인들의 수는 감소되며 L1 캐시(112)에 대한 미래 캐시 미스들과 연관된 데이터는 하위 레벨 캐시(들)로 및/또는 시스템 메모리로의 오손 데이터의 후기록을 기다리지 않고 다시 쓰여 질 수 있으며, 그에 의해 시스템 리소스들(예컨대, 캐시들간의 대역폭)의 낭비를 감소시키고 성능을 개선한다. 뿐만 아니라, 몇몇 실시예들에서, 여기에서 설명된 본 개시의 양상들을 실행하는 사용자 또는 운영 시스템(OS)은, 그것으로 또는 그로부터 기록되는 캐시가 메모리 마모(예컨대, 마모가 저장의 무결성을 악화시키기 시작하기 전에 한정된 수의 프로그램-소거 사이클들에 제한된)를 겪는 비-휘발성 메모리에 있을 때와 같은, 후기록들의 레이트를 스로틀링할 수 있다. 예를 들어, 사용자-정의 선험적 후기록 대역폭 제한이 설정될 수 있거나 또는 선험적 후기록은 하나 이상의 레벨들의 캐시 사이에서 완전히 불능될 수 있다.
제 1 양상에서, 방법은, 제 1 캐시의 제 1 캐시 제어기로부터 제 2 캐시의 제 2 캐시 제어기로, 제 1 사이클 동안 제 1 캐시와 제 2 캐시 사이의 미사용 대역폭을 나타내는 미사용 대역폭 메시지를 송신하는 것, 제 2 사이클 동안, 상기 미사용 대역폭 메시지에 기초하여 제 2 캐시로부터 제 1 캐시로 오손 데이터를 포함한 캐시 라인을 선점적으로 후기록하는 것, 및 제 2 캐시에 대한 캐시 미스에 응답하여, 제 2 캐시에서 캐시 라인을 다시 쓰는 것을 포함한다.
제 1 양상의 일 실시예에서, 방법은, 제 2 캐시의 제 2 캐시 제어기에서, 미사용 대역폭을 초과하지 않고 제 2 캐시로부터 제 1 캐시로 선점적으로 기록될 수 있는 다수의 캐시 라인들을 산출하는 것을 포함한다. 또 다른 실시예에서, 상기 방법은 제 3 캐시의 제 3 캐시 제어기 및 제 1 캐시의 제 1 캐시 제어기로부터, 제 1 사이클 동안 제 3 캐시와 제 1 캐시 사이의 미사용 대역폭을 나타내는 부가적인 미사용 대역폭 메시지를 송신하는 것을 포함한다. 상기 방법은 또한 제 2 사이클 동안, 상기 부가적인 미사용 대역폭 메시지에 기초하여 제 1 캐시로부터 제 3 캐시로 오손 데이터를 포함한 제 2 캐시 라인을 선점적으로 후기록하며, 제 1 캐시에 대한 캐시 미스에 응답하여, 제 1 캐시로부터 임의의 데이터를 축출하지 않고 제 2 캐시 라인을 다시 쓰는 것을 포함한다.
제 1 양상의 추가 실시예에서, 제 1 캐시는 제 2 캐시에 비해 하위 레벨 캐시이다. 또 다른 실시예에서, 방법은 캐시 라인을 선점적으로 후기록하는 것이 또한 제 2 캐시에서 제 2 캐시 라인의 제 2 후기록 카운터 값보다 낮은 제 1 후기록 카운터 값과 연관된 제 2 캐시에서의 제 1 캐시 라인의 후기록을 우선화하는 것을 추가로 포함한다는 것을 포함하며, 여기에서 제 1 후기록 카운터 값 및 제 2 후기록 카운터 값은 제 1 캐시 라인 및 제 2 캐시 라인의 각각이 수정되는 횟수들을 추적한다. 추가 실시예에서, 방법은 캐시 라인을 선점적으로 후기록하는 것이, 제 1 트랜잭션 식별 태그와 연관된 제 2 캐시에서의 제 1 캐시 라인을 후기록하는 것에 응답하여, 제 2 트랜잭션 식별 태그와 연관된 제 2 캐시에서의 오손 캐시 라인의 후기록에 비해 제 1 트랜잭션 식별 태그와 연관된 제 2 캐시에서의 클린 캐시 라인의 후기록을 우선화하는 것을 추가로 포함한다는 것을 포함한다.
제 1 양상의 또 다른 실시예에서, 제 1 캐시는 캐시 계층에서 캐시의 마지막 레벨이다. 특정한 실시예에서, 상기 방법은, 시스템 메모리의 메모리 제어기 및 제 1 캐시의 제 1 캐시 제어기로부터, 제 1 사이클 동안 시스템 메모리와 제 1 캐시 사이의 미사용 대역폭을 나타내는 부가적인 미사용 대역폭 메시지를 송신하는 것, 제 2 사이클 동안, 상기 부가적인 미사용 대역폭 메시지에 기초하여 제 1 캐시로부터 시스템 메모리로 오손 데이터를 포함한 제 2 캐시 라인을 선점적으로 후기록하는 것, 및 제 1 캐시에 대한 캐시 미스에 응답하여, 제 2 캐시 라인을 다시 쓰는 것을 포함한다.
제 2 양상에서, 프로세싱 시스템은 복수의 프로세서 코어들 중 프로세서 코어와 연관된 전용 캐시로서, 상기 전용 캐시는 전용 캐시 제어기 및 대응되는 캐시 라인 세트를 포함하는, 상기 전용 캐시, 및 상기 복수의 프로세서 코어들에 의해 공유된 공유 캐시로서, 상기 공유 캐시는 공유 캐시 제어기 및 공유 캐시 라인 세트를 포함한, 상기 공유 캐시를 포함하며, 여기에서 상기 공유 캐시 제어기는 제 1 사이클 동안 공유 캐시와 전용 캐시 사이의 미사용 대역폭을 나타내는 미사용 대역폭 메시지를 전용 캐시에서의 전용 캐시 제어기로 전달하도록 구성된다.
제 2 양상의 일 실시예에서, 전용 캐시에서의 전용 캐시 제어기는 미사용 대역폭을 초과하지 않고 전용 캐시로부터 공유 캐시로 선점적으로 기록될 수 있는 다수의 캐시 라인들을 산출하도록 구성된다. 추가 실시예에서, 전용 캐시에서의 전용 캐시 제어기는, 캐시 미스에 응답하여, 전용 캐시로부터 임의의 데이터를 축출하지 않고 캐시 라인을 선점적으로 다시 쓰도록 구성된다.
제 2 양상의 또 다른 실시예에서, 프로세싱 시스템은 부가적인 공유 캐시를 포함하며, 상기 부가적인 공유 캐시는 부가적인 공유 캐시 제어기 및 부가적인 공유 캐시 라인 세트를 포함하고, 여기에서 부가적인 공유 캐시 제어기는 제 1 사이클 동안 공유 캐시와 부가적인 공유 캐시 사이의 미사용 대역폭을 나타내는 미사용 대역폭 메시지를 공유 캐시 제어기로 전달하도록 구성된다. 특정한 실시예에서, 부가적인 공유 캐시는 캐시 계층에서 마지막 레벨의 캐시이다. 또 다른 특정한 실시예에서, 프로세싱 시스템은 복수의 프로세서 코어들에 의해 공유된 시스템 메모리를 포함하며, 상기 시스템 메모리는 메모리 제어기를 포함하고, 여기에서 메모리 제어기는 제 1 사이클 동안 시스템 메모리와 마지막 레벨 캐시 사이의 미사용 대역폭을 나타내는 미사용 대역폭 메시지를 마지막 레벨 캐시로 전달하도록 구성된다.
제 2 양상의 또 다른 실시예에서, 공유 캐시는 전용 캐시에 비해 하위 레벨 캐시이다. 추가 실시예에서, 전용 캐시의 전용 캐시 제어기는 전용 캐시에서의 제 2 캐시 라인의 제 2 후기록 카운터 값보다 낮은 제 1 후기록 카운터 값과 연관된 전용 캐시에서의 제 1 캐시 라인의 후기록을 우선화하도록 구성되며, 여기에서 제 1 후기록 카운터 값 및 제 2 후기록 카운터 값은 제 1 캐시 라인 및 제 2 캐시 라인의 각각이 수정된 횟수들을 추적한다. 또 다른 실시예에서, 전용 캐시의 전용 캐시 제어기는, 제 1 트랜잭션 식별 태그와 연관된 전용 캐시에서의 제 1 캐시 라인을 후기록하는 것에 응답하여, 제 2 트랜잭션 식별 태그와 연관된 전용 캐시에서의 오손 캐시 라인의 후기록에 대해 제 1 트랜잭션 식별 태그와 연관된 전용 캐시에서의 클린 캐시 라인의 후기록을 우선화하도록 구성된다.
제 3 양상에서, 프로세서는 복수의 프로세서 코어들 중 프로세서 코어와 연관된 전용 캐시로서, 상기 전용 캐시는 전용 캐시 제어기 및 대응되는 캐시 라인 세트를 포함하는, 상기 전용 캐시, 및 복수의 프로세서 코어들에 의해 공유된 공유 캐시로서, 상기 공유 캐시는 공유 캐시 제어기 및 공유 캐시 라인 세트를 포함하는, 상기 공유 캐시를 포함하고, 여기에서 공유 캐시 제어기는 제 1 사이클 동안 공유 캐시와 전용 캐시 사이의 미사용 대역폭을 나타내는 미사용 대역폭 메시지를 전용 캐시에서의 전용 캐시 제어기로 전달하도록 구성된다.
제 3 양상의 일 실시예에서, 전용 캐시의 전용 캐시 제어기는 미사용 대역폭을 초과하지 않고 전용 캐시로부터 공유 캐시로 선점적으로 기록될 수 있는 다수의 캐시 라인들을 산출하도록 구성된다. 또 다른 실시예에서, 프로세서는 부가적인 공유 캐시를 포함하며, 상기 부가적인 공유 캐시는 부가적인 공유 캐시 제어기 및 부가적인 공유 캐시 라인 세트를 포함하고, 여기에서 부가적인 공유 캐시 제어기는 제 1 사이클 동안 공유 캐시와 부가적인 공유 캐시 사이의 미사용 대역폭을 나타내는 부가적인 미사용 대역폭 메시지를 공유 캐시 제어기로 전달하도록 구성된다.
몇몇 실시예들에서, 상기 설명된 기술들의 특정한 양상들은 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서들에 의해 구현될 수 있다. 소프트웨어는 비-일시적 컴퓨터 판독 가능한 저장 매체상에 저장되거나 또는 그 외 유형으로 구체화된 실행 가능한 지시들의 하나 이상의 세트들을 포함한다. 소프트웨어는, 하나 이상의 프로세서들에 의해 실행될 때, 상기 설명된 기술들의 하나 이상의 양상들을 수행하도록 하나 이상의 프로세서들을 조작하는 지시들 및 특정한 데이터를 포함할 수 있다. 비-일시적 컴퓨터 판독 가능한 저장 매체는, 예를 들어, 자기 또는 광학 디스크 저장 디바이스, 플래시 메모리와 같은 고체 상태 저장 디바이스들, 캐시, 랜덤 액세스 메모리(RAM) 또는 다른 비-휘발성 메모리 디바이스 또는 디바이스들 등을 포함할 수 있다. 비-일시적 컴퓨터 판독 가능한 저장 매체상에 저장된 실행 가능한 지시들은, 하나 이상의 프로세서들에 의해 해석되거나 또는 그 외 실행 가능한 소스 코드, 어셈블리어 코드, 오브젝트 코드, 또는 다른 지시 포맷으로 있을 수 있다.
컴퓨터 판독 가능한 저장 매체는 지시들 및/또는 데이터를 컴퓨터 시스템에 제공하기 위해 사용 동안 컴퓨터 시스템에 의해 액세스 가능한 임의의 저장 매체, 또는 저장 미디어의 조합을 포함할 수 있다. 이러한 저장 미디어는, 이에 제한되지 않지만, 광학 미디어(예컨대, 컴팩트 디스크(CD), 디지털 다목적 디스크(DVD), 블루-레이 디스크), 자기 미디어(예컨대, 플로피 디스크, 자기 테이프, 또는 자기 하드 드라이브), 휘발성 메모리(예컨대, 랜덤 액세스 메모리(RAM) 또는 캐시), 비-휘발성 메모리(예컨대, 판독-전용 메모리(ROM) 또는 플래시 메모리), 또는 미세전자기계 시스템들(MEMS)-기반 저장 미디어를 포함할 수 있다. 컴퓨터 판독 가능한 저장 매체는 컴퓨팅 시스템에 내장되고(예컨대, 시스템 RAM 또는 ROM), 컴퓨팅 시스템에 고정 부착되고(예컨대, 자기 하드 드라이브), 컴퓨팅 시스템에 착탈 가능하게 부착되거나(예컨대, 광학 디스크 또는 범용 직렬 버스(USB)-기반 플래시 메모리), 또는 유선 또는 무선 네트워크(예컨대, 네트워크 액세스 가능한 저장 장치(NAS))를 통해 컴퓨터 시스템에 결합될 수 있다.
상기 일반적인 설명에서 설명된 활동들 또는 요소들 모두가 요구되는 것은 아니고, 특정 활동 또는 디바이스의 일 부분은 요구되지 않을 수 있으며, 하나 이상의 추가 활동들이 수행될 수 있거나, 또는 설명된 것들 외에 요소들이 포함된다는 것을 주의하자. 더 나아가, 활동들이 나열되는 순서는 반드시 그것들이 수행되는 순서는 아니다. 또한, 개념들은 특정 실시예들을 참조하여 설명되었다. 그러나, 이 기술분야에서의 통상의 기술자는 다양한 수정들 및 변화들이 이하에서의 청구항들에서 제시된 바와 같이 본 개시의 범위로부터 벗어나지 않고 이루어질 수 있다는 것을 이해한다. 따라서, 명세서 및 도면들은 제한적인 의미보다는 예시적인 것으로 간주될 것이며, 모든 이러한 수정들은 본 개시의 범위 내에 포함되도록 의도된다.
이익들, 다른 이점들, 및 문제들에 대한 해법들은 특정 실시예들에 관하여 상기 설명되었다. 그러나, 이익들, 이점들, 문제들에 대한 해법들, 및 임의의 이익, 이점, 또는 해법이 발생하거나 또는 보다 두드러지게 할 수 있는 임의의 특징(들)은 임의의 또는 모든 청구항들의 중대한, 필수적인, 또는 본질적 특징으로서 해석되지 않을 것이다. 게다가, 상기 개시된 특정한 실시예들은, 개시된 주제가 여기에서의 교시들의 이익을 가진 이 기술분야의 숙련자들에게 명백한 상이하지만 동등한 방식들로 수정되고 실시될 수 있으므로, 단지 예시적이다. 어떤 제한들도 이하에서의 청구항들에서 설명된 것 외에, 여기에서 도시된 구성 또는 설계의 세부사항들에 대해 의도되지 않는다. 그러므로, 상기 개시된 특정한 실시예들은 변경되거나 또는 수정될 수 있으며 모든 이러한 변화들은 개시된 주제의 범위 내에서 고려된다는 것이 명백하다. 따라서, 여기에서 추구된 보호는 이하의 청구항들에서 제시된 바와 같다.

Claims (20)

  1. 방법에 있어서,
    제 1 캐시의 제 1 캐시 제어기로부터 제 2 캐시의 제 2 캐시 제어기로, 제 1 사이클 동안 상기 제 1 캐시와 상기 제 2 캐시 사이의 미사용 대역폭을 나타내는 미사용 대역폭 메시지를 송신하는 단계;
    제 2 사이클 동안, 상기 미사용 대역폭 메시지에 기초하여 상기 제 2 캐시로부터 상기 제 1 캐시로 오손 데이터를 포함한 캐시 라인을 선점적으로 후 기록하는 단계; 및
    상기 제 2 캐시에 대한 캐시 미스에 응답하여, 상기 제 2 캐시에서 상기 캐시 라인을 다시 쓰는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서,
    상기 제 2 캐시의 상기 제 2 캐시 제어기에서, 상기 미사용 대역폭을 초과하지 않고 상기 제 2 캐시로부터 상기 제 1 캐시로 선점적으로 기록될 수 있는 다수의 캐시 라인들을 산출하는 단계를 더 포함하는, 방법.
  3. 청구항 1에 있어서,
    제 3 캐시의 제 3 캐시 제어기 및 상기 제 1 캐시의 상기 제 1 캐시 제어기로부터, 상기 제 1 사이클 동안 상기 제 3 캐시와 상기 제 1 캐시 사이의 미사용 대역폭을 나타내는 부가적인 미사용 대역폭 메시지를 송신하는 단계;
    상기 제 2 사이클 동안, 상기 부가적인 미사용 대역폭 메시지에 기초하여 상기 제 1 캐시로부터 상기 제 3 캐시로 오손 데이터를 포함한 제 2 캐시 라인을 선점적으로 후 기록하는 단계; 및
    상기 제 1 캐시에 대한 캐시 미스에 응답하여, 상기 제 1 캐시로부터 임의의 데이터를 축출하지 않고 상기 제 2 캐시 라인을 다시 쓰는 단계를 더 포함하는, 방법.
  4. 청구항 1에 있어서,
    상기 제 1 캐시는 상기 제 2 캐시에 비해 하위 레벨 캐시인, 방법.
  5. 청구항 1에 있어서,
    상기 캐시 라인을 선점적으로 후 기록하는 단계는,
    상기 제 2 캐시에서의 제 2 캐시 라인의 제 2 후기록 카운터 값보다 낮은 제 1 후기록 카운터 값과 연관된 상기 제 2 캐시에서의 제 1 캐시 라인의 후기록을 우선화하는 단계로서, 상기 제 1 후기록 카운터 값 및 상기 제 2 후기록 카운터 값은 상기 제 1 캐시 라인 및 상기 제 2 캐시 라인의 각각이 수정된 횟수들을 추적하는, 상기 우선화 단계를 더 포함하는, 방법.
  6. 청구항 1에 있어서,
    상기 캐시 라인을 선점적으로 후 기록하는 단계는,
    제 1 트랜잭션 식별 태그와 연관된 상기 제 2 캐시에서의 제 1 캐시 라인을 후 기록하는 것에 응답하여, 제 2 트랜잭션 식별 태그와 연관된 상기 제 2 캐시에서의 오손 캐시 라인의 후기록에 대하여 상기 제 1 트랜잭션 식별 태그와 연관된 상기 제 2 캐시에서의 클린 캐시 라인의 후기록을 우선화하는 단계를 더 포함하는, 방법.
  7. 청구항 1에 있어서,
    상기 제 1 캐시는 캐시 계층에서 캐시의 마지막 레벨인, 방법.
  8. 청구항 7에 있어서,
    시스템 메모리의 메모리 제어기 및 상기 제 1 캐시의 상기 제 1 캐시 제어기로부터, 상기 제 1 사이클 동안 상기 시스템 메모리와 상기 제 1 캐시 사이의 미사용 대역폭을 나타내는 부가적인 미사용 대역폭 메시지를 송신하는 단계;
    제 2 사이클 동안, 상기 부가적인 미사용 대역폭 메시지에 기초하여 상기 제 1 캐시로부터 상기 시스템 메모리로 오손 데이터를 포함한 제 2 캐시 라인을 선점적으로 후 기록하는 단계; 및
    상기 제 1 캐시에 대한 캐시 미스에 응답하여, 상기 제 2 캐시 라인을 다시 쓰는 단계를 더 포함하는, 방법.
  9. 프로세싱 시스템에 있어서,
    복수의 프로세서 코어들 중 프로세서 코어와 연관된 전용 캐시로서, 상기 전용 캐시는 전용 캐시 제어기 및 대응되는 캐시 라인 세트를 포함하는, 상기 전용 캐시; 및
    상기 복수의 프로세서 코어들에 의해 공유된 공유 캐시로서, 상기 공유 캐시는 공유 캐시 제어기 및 공유 캐시 라인 세트를 포함하고, 상기 공유 캐시 제어기는 제 1 사이클 동안 상기 공유 캐시와 상기 전용 캐시 사이의 미사용 대역폭을 나타내는 미사용 대역폭 메시지를 상기 전용 캐시에서의 상기 전용 캐시 제어기로 전달하도록 구성되는, 상기 공유 캐시를 포함하는, 프로세싱 시스템.
  10. 청구항 9에 있어서,
    상기 전용 캐시에서의 상기 전용 캐시 제어기는 상기 미사용 대역폭을 초과하지 않고 상기 전용 캐시로부터 상기 공유 캐시로 선점적으로 기록될 수 있는 다수의 캐시 라인들을 산출하도록 구성되는, 프로세싱 시스템.
  11. 청구항 9에 있어서,
    상기 전용 캐시에서의 상기 전용 캐시 제어기는, 캐시 미스에 응답하여, 상기 전용 캐시로부터 임의의 데이터를 축출하지 않고 캐시 라인을 선점적으로 다시 쓰도록 구성되는, 프로세싱 시스템.
  12. 청구항 9에 있어서,
    부가적인 공유 캐시를 더 포함하며, 상기 부가적인 공유 캐시는 부가적인 공유 캐시 제어기 및 부가적인 공유 캐시 라인 세트를 포함하며, 상기 부가적인 공유 캐시 제어기는 상기 제 1 사이클 동안 상기 공유 캐시와 상기 부가적인 공유 캐시 사이의 미사용 대역폭을 나타내는 미사용 대역폭 메시지를 상기 공유 캐시 제어기로 전달하도록 구성되는, 프로세싱 시스템.
  13. 청구항 12에 있어서,
    상기 부가적인 공유 캐시는 캐시 계층에서 캐시의 마지막 레벨인, 프로세싱 시스템.
  14. 청구항 13에 있어서,
    상기 복수의 프로세서 코어들에 의해 공유된 시스템 메모리를 더 포함하며, 상기 시스템 메모리는 메모리 제어기를 포함하고, 상기 메모리 제어기는 상기 제 1 사이클 동안 상기 시스템 메모리와 상기 마지막 레벨 캐시 사이의 미사용 대역폭을 나타내는 미사용 대역폭 메시지를 상기 마지막 레벨 캐시로 전달하도록 구성되는, 프로세싱 시스템.
  15. 청구항 9에 있어서,
    상기 공유 캐시는 상기 전용 캐시에 비해 하위 레벨 캐시인, 프로세싱 시스템.
  16. 청구항 9에 있어서,
    상기 전용 캐시의 상기 전용 캐시 제어기는 상기 전용 캐시에서의 제 2 캐시 라인의 제 2 후기록 카운터 값보다 낮은 제 1 후기록 카운터 값과 연관된 상기 전용 캐시에서의 제 1 캐시 라인의 후기록을 우선화하도록 구성되며, 상기 제 1 후기록 카운터 값 및 상기 제 2 후기록 카운터 값은 상기 제 1 캐시 라인 및 상기 제 2 캐시 라인의 각각이 수정된 횟수를 추적하는, 프로세싱 시스템.
  17. 청구항 9에 있어서,
    상기 전용 캐시의 상기 전용 캐시 제어기는, 제 1 트랜잭션 식별 태그와 연관된 상기 전용 캐시에서의 제 1 캐시 라인을 후기록하는 것에 응답하여, 제 2 트랜잭션 식별 태그와 연관된 상기 전용 캐시에서의 오손 캐시 라인의 후기록에 대하여 제 1 트랜잭션 식별 태그와 연관된 상기 전용 캐시에서의 클린 캐시 라인의 후기록을 우선화하도록 구성되는, 프로세싱 시스템.
  18. 프로세서에 있어서,
    복수의 프로세서 코어들 중 프로세서 코어와 연관된 전용 캐시로서, 상기 전용 캐시는 전용 캐시 제어기 및 대응되는 캐시 라인 세트를 포함하는, 상기 전용 캐시; 및
    상기 복수의 프로세서 코어들에 의해 공유된 공유 캐시로서, 상기 공유 캐시는 공유 캐시 제어기 및 공유 캐시 라인 세트를 포함하고, 상기 공유 캐시 제어기는 제 1 사이클 동안 상기 공유 캐시와 상기 전용 캐시 사이의 미사용 대역폭을 나타내는 미사용 대역폭 메시지를 상기 전용 캐시에서의 상기 전용 캐시 제어기로 전달하도록 구성되는, 상기 공유 캐시를 포함하는, 프로세서.
  19. 청구항 18에 있어서,
    상기 전용 캐시에서의 상기 전용 캐시 제어기는 상기 미사용 대역폭을 초과하지 않고 상기 전용 캐시로부터 상기 공유 캐시로 선점적으로 기록될 수 있는 다수의 캐시 라인들을 산출하도록 구성되는, 프로세서.
  20. 청구항 18에 있어서,
    부가적인 공유 캐시를 더 포함하며, 상기 부가적인 공유 캐시는 부가적인 공유 캐시 제어기 및 부가적인 공유 캐시 라인 세트를 포함하고, 상기 부가적인 공유 캐시 제어기는 상기 제 1 사이클 동안 상기 공유 캐시와 상기 부가적인 공유 캐시 사이의 미사용 대역폭을 나타내는 부가적인 미사용 대역폭 메시지를 상기 공유 캐시 제어기로 전달하도록 구성되는, 프로세서.
KR1020207008109A 2017-09-28 2018-09-17 트랜잭션 지원을 가진 선점형 캐시 후기록 KR102220468B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/718,564 US10452548B2 (en) 2017-09-28 2017-09-28 Preemptive cache writeback with transaction support
US15/718,564 2017-09-28
PCT/US2018/051390 WO2019067254A1 (en) 2017-09-28 2018-09-17 PREEMPTIVE CACHE MEMORY WRITING WITH TRANSACTION MEDIA

Publications (2)

Publication Number Publication Date
KR20200040294A true KR20200040294A (ko) 2020-04-17
KR102220468B1 KR102220468B1 (ko) 2021-02-25

Family

ID=65806666

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207008109A KR102220468B1 (ko) 2017-09-28 2018-09-17 트랜잭션 지원을 가진 선점형 캐시 후기록

Country Status (6)

Country Link
US (1) US10452548B2 (ko)
EP (1) EP3688597B1 (ko)
JP (1) JP6820449B2 (ko)
KR (1) KR102220468B1 (ko)
CN (1) CN111133423B (ko)
WO (1) WO2019067254A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10705962B2 (en) * 2017-12-21 2020-07-07 Intel Corporation Supporting adaptive shared cache management
US11106594B2 (en) * 2019-09-05 2021-08-31 Advanced Micro Devices, Inc. Quality of service dirty line tracking
KR102579320B1 (ko) 2023-04-19 2023-09-18 메티스엑스 주식회사 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030056062A1 (en) * 2001-09-14 2003-03-20 Prabhu Manohar K. Preemptive write back controller
US6976131B2 (en) * 2002-08-23 2005-12-13 Intel Corporation Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system
KR20090079961A (ko) * 2006-10-20 2009-07-22 에보니크 데구사 게엠베하 안정한 수성 실리카 분산액
US20110087843A1 (en) * 2009-10-09 2011-04-14 Li Zhao Monitoring cache usage in a distributed shared cache
US20130151778A1 (en) * 2011-12-09 2013-06-13 International Business Machines Corporation Dynamic Inclusive Policy in a Hybrid Cache Hierarchy Using Bandwidth
US20160070651A1 (en) * 2014-09-09 2016-03-10 Intel Corporation Instruction and logic for a cache prefetcher and dataless fill buffer
US20170364262A1 (en) * 2016-06-16 2017-12-21 Advanced Micro Devices, Inc. Write buffer design for high-latency memories

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9767041B2 (en) 2015-05-26 2017-09-19 Intel Corporation Managing sectored cache

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030056062A1 (en) * 2001-09-14 2003-03-20 Prabhu Manohar K. Preemptive write back controller
US6976131B2 (en) * 2002-08-23 2005-12-13 Intel Corporation Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system
KR20090079961A (ko) * 2006-10-20 2009-07-22 에보니크 데구사 게엠베하 안정한 수성 실리카 분산액
US20110087843A1 (en) * 2009-10-09 2011-04-14 Li Zhao Monitoring cache usage in a distributed shared cache
US20130151778A1 (en) * 2011-12-09 2013-06-13 International Business Machines Corporation Dynamic Inclusive Policy in a Hybrid Cache Hierarchy Using Bandwidth
US20160070651A1 (en) * 2014-09-09 2016-03-10 Intel Corporation Instruction and logic for a cache prefetcher and dataless fill buffer
US20170364262A1 (en) * 2016-06-16 2017-12-21 Advanced Micro Devices, Inc. Write buffer design for high-latency memories

Also Published As

Publication number Publication date
EP3688597A1 (en) 2020-08-05
EP3688597A4 (en) 2021-08-18
JP6820449B2 (ja) 2021-01-27
CN111133423B (zh) 2021-10-15
CN111133423A (zh) 2020-05-08
WO2019067254A1 (en) 2019-04-04
EP3688597B1 (en) 2023-04-05
JP2020535507A (ja) 2020-12-03
US10452548B2 (en) 2019-10-22
KR102220468B1 (ko) 2021-02-25
US20190095330A1 (en) 2019-03-28

Similar Documents

Publication Publication Date Title
CN103714015B (zh) 减少来自侦听过滤器的后无效事务的方法、装置和系统
CN109154911B (zh) 用于监视高速缓存行在不同的高速缓存级下的状态的阴影标签存储器
EP3414665B1 (en) Profiling cache replacement
KR100978156B1 (ko) 스누프 필터에서의 실효를 감소시키기 위한 라인 스와핑 스킴을 위한 방법, 장치, 시스템 및 컴퓨터 판독 가능 기록 매체
US20040199727A1 (en) Cache allocation
KR20170098187A (ko) 저장 서브시스템을 위한 연관적 및 원자적 라이트-백 캐싱 시스템 및 방법
JP6630449B2 (ja) 他のキャッシュでのエントリの可用性に基づくキャッシュエントリの置換
KR102220468B1 (ko) 트랜잭션 지원을 가진 선점형 캐시 후기록
US20180113815A1 (en) Cache entry replacement based on penalty of memory access
US10705977B2 (en) Method of dirty cache line eviction
CN110036376B (zh) 无分配高速缓存策略
CN111344685A (zh) 在断电状态期间保留处理器内核的高速缓存条目
JP5977430B2 (ja) ストレージシステム、ストレージシステムの制御方法及びストレージコントローラ
US20220066940A1 (en) Limited propagation of unnecessary memory updates
EP3724774B1 (en) Rinsing cache lines from a common memory page to memory
US10503640B2 (en) Selective data retrieval based on access latency
US20160041916A1 (en) Systems and Methods to Manage Cache Data Storage
US11960399B2 (en) Relaxed invalidation for cache coherence
EP4033346B1 (en) Affinity-based cache operation for a persistent storage device
CN112955877A (zh) 修改存储数据的装置和方法

Legal Events

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