KR20190008269A - Replacing cache entries based on the availability of entries in other caches - Google Patents

Replacing cache entries based on the availability of entries in other caches Download PDF

Info

Publication number
KR20190008269A
KR20190008269A KR1020187035192A KR20187035192A KR20190008269A KR 20190008269 A KR20190008269 A KR 20190008269A KR 1020187035192 A KR1020187035192 A KR 1020187035192A KR 20187035192 A KR20187035192 A KR 20187035192A KR 20190008269 A KR20190008269 A KR 20190008269A
Authority
KR
South Korea
Prior art keywords
cache
entry
data
controller
selecting
Prior art date
Application number
KR1020187035192A
Other languages
Korean (ko)
Other versions
KR102453192B1 (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 KR20190008269A publication Critical patent/KR20190008269A/en
Application granted granted Critical
Publication of KR102453192B1 publication Critical patent/KR102453192B1/en

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/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/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/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance 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/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

프로세싱 시스템(100)은 상이한 캐시(140)에서 대응하는 엔트리들의 유효성 상태에 적어도 부분적으로 기반하여 한 캐시(130)에서 퇴거를 위한 엔트리들을 선택한다. 프로세싱 시스템은 적어도 2개의 캐시들,상위 레벨 캐시(140) 및 하위 레벨 캐시(130), 을 갖는 메모리 계층을 포함한다. 하위 레벨 캐시는 상위 레벨 캐시의 어느 위치가 무효인 것으로 나타나는지를 모니터링하고, 상위 레벨 캐시로의 퇴거를 위해 하위 레벨 캐시의 엔트리를 선택할 때, 선택된 캐시 엔트리가 상위 레벨 캐시의 무효인 캐시 라인에 저장될 지 여부에 적어도 부분적으로 기반하여 엔트리를 선택한다. The processing system 100 selects entries for eviction from one cache 130 based at least in part on the validity status of the corresponding entries in the different cache 140. [ The processing system includes a memory layer having at least two caches, a high-level cache 140 and a low-level cache 130. The lower-level cache monitors which locations in the higher-level cache appear to be invalid and, when selecting an entry in the lower-level cache for eviction to the higher-level cache, the selected cache entry is stored in an invalid cache line in the upper- Based on at least partly whether or not it is to be < / RTI >

Description

다른 캐시에서의 엔트리들의 가용성을 기반으로 한 캐시 엔트리 교체Replacing cache entries based on the availability of entries in other caches

본 개시는 일반적으로 프로세서들에 관한 것이며, 보다 구체적으로는 프로세서에서의 캐시 관리에 관한 것이다. This disclosure relates generally to processors, and more specifically to cache management in a processor.

명령들의 실행을 지원하기 위해, 프로세싱 시스템은 실행하는 명령들에 의해 액세스될 데이터를 저장하기 위한 메모리 모듈들을 갖는 메모리 서브시스템을 전형적으로 포함한다. 메모리 서브시스템은 실행하는 명령들에 의해 액세스될 수 있는 데이터들의 더 많은 양을 저장하기 위해 계층의 최상위에 주 메모리를 갖고, 그리고 주 메모리에 저장되는 데이터들의 서브셋들을 저장하기 위한 메모리 계층의 낮은 레벨에서 하나 이상의 캐시들을 갖는 메모리 계층으로 구조화될 수 있다. 전형적으로, 메모리 계층 내에 데이터가 더 하위에 저장될수록 더 빠르게 프로세서에 의해 액세스될 수 있다. 프로세싱 효율을 더욱 향상시키기 위해, 프로세싱 시스템은 메모리 계층의 각 레벨에 저장되는 데이터들의 특정 세트를 통제하는 메모리 관리 프로토콜을 시행할 수 있다. 예를 들어, 프로세싱 시스템은 최근에 액세스가 요청되었던 데이터를, 가까운 미래에 프로세서에 의해 다시 데이터가 액세스될 것이라는 기대를 갖고, 메모리 계층의 하위 레벨로 옮기고, 최근에 액세스되지 않았던 데이터를 메모리 계층의 상위 레벨로 옮기는 메모리 관리 프로토콜을 시행할 수 있다. 하지만, 이러한 일반적인 메모리 관리 프로토콜은 프로세싱 시스템의 프로세싱 효율 및 전력 소비 모두에 영향을 미치는, 메모리 계층의 레벨들 사이에서 데이터의 빈번한 이동을 야기할 수 있다. To support the execution of instructions, the processing system typically includes a memory subsystem having memory modules for storing data to be accessed by instructions to be executed. The memory subsystem has a main memory at the top of the hierarchy to store a greater amount of data that can be accessed by the executing instructions and a lower level of memory hierarchy for storing subsets of data stored in main memory RTI ID = 0.0 > a < / RTI > memory layer having one or more caches. Typically, the lower the data is stored in the memory hierarchy, the faster the processor can access it. To further improve processing efficiency, the processing system may implement a memory management protocol that controls a particular set of data stored at each level of the memory hierarchy. For example, the processing system may move data that has recently been requested to be accessed at a lower level in the memory hierarchy, with the expectation that the data will be accessed again by the processor in the near future, You can implement a memory management protocol that moves you to a higher level. However, this generic memory management protocol can cause frequent movement of data between levels of the memory layer, which affects both the processing efficiency and power consumption of the processing system.

본 개시는 첨부 도면을 참조하여 당업자에게 보다 잘 이해될 수 있고, 그 많은 특징들 및 이점들이 명백해질 수 있다. 상이한 도면들에서 동일한 참조 부호들을 사용하는 것은 유사하거나 동일한 항목들을 나타낸다.
도 1은 일부 실시예들에 따라 하나의 캐시가 다른 캐시에서 엔트리들의 유효성 상태에 기초하여 교체를 위한 엔트리들을 선택하는 메모리 계층을 사용하는 프로세싱 시스템의 블록도이다.
도 2는 일부 실시예들에 따라 상위 레벨의 캐시로부터 하위 레벨의 캐시로 데이터를 전달하는 도 1의 프로세싱 시스템의 일 예의 블록도이다.
도 3은 일부 실시예들에 따라 하위 레벨의 캐시에서, 상위 레벨의 캐시로부터 하위 레벨의 캐시로 어떤 데이터가 전달되었는지를 추적하는 도 1의 프로세싱 시스템의 일 예의 블록도이다.
도 4는 일부 실시예들에 따라 도 1의 캐시에서 사용된 무효 테이블의 블록도이다.
도 5는 일부 실시예들에 따라 상이한 레벨의 캐시에서 퇴거(eviction) 데이터에 대한 엔트리들을 선택하기 위해 한 레벨의 캐시에서 엔트리들의 유효성 상태를 추적하는 방법의 흐름도이다.
The present disclosure may be better understood by those skilled in the art with reference to the accompanying drawings, and many of its features and advantages may become apparent. Use of the same reference numerals in different drawings represents similar or identical items.
1 is a block diagram of a processing system that uses a memory hierarchy in which one cache selects entries for replacement based on the validity status of entries in another cache, in accordance with some embodiments.
FIG. 2 is a block diagram of an example of the processing system of FIG. 1 for transferring data from a higher level cache to a lower level cache in accordance with some embodiments.
3 is a block diagram of an example of the processing system of FIG. 1 that tracks what data has been transferred from a higher level cache to a lower level cache, in a lower level cache, in accordance with some embodiments.
Figure 4 is a block diagram of an invalidation table used in the cache of Figure 1 in accordance with some embodiments.
5 is a flow diagram of a method for tracking the validity status of entries in a level of cache to select entries for eviction data from different levels of cache in accordance with some embodiments.

도 1-5는 상이한 캐시에서 대응하는 엔트리들의 유효성 상태들에 적어도 부분적으로 기반하여 한 캐시에서 퇴거를 위한 엔트리들을 선택함으로써 프로세싱 시스템에서 메모리 관리 효율성을 향상시키기 위한 테크닉들을 도시한다. 예시를 위해, 프로세싱 시스템은 적어도 두 개의 캐시, 상위 레벨 캐시(메모리 계층에서 주 메모리에 더 가까운) 및 하위 레벨 캐시(프로세싱 시스템의 프로세서 코어에 더 가까운), 를 갖는 메모리 계층을 포함할 수 있다. 상위 레벨 캐시의 엔트리에서의 데이터가 하위 레벨 캐시의 엔트리로 이동할 때, 상위 레벨 캐시의 엔트리는 유효성 상태가 "무효"를 갖는 것으로 표시되고, 그렇게 함으로써 엔트리가 상위 레벨 캐시에서 들어오는 데이터를 저장할 수 있다는 것을 나타낸다. 하위 레벨 캐시는 무효로 나타나는 상위 레벨 캐시의 위치를 모니터링하고, 상위 레벨 캐시로의 퇴거를 위한 하위 레벨 캐시의 엔트리를 선택할 때, 선택된 캐시 엔트리가 그 시점에서 상위 레벨 캐시의 무효인 캐시 라인에 저장되는지 여부에 적어도 부분적으로 기반하여 엔트리를 선택한다. 프로세싱 시스템은 그렇게 함으로써 상위 레벨 캐시에서의 퇴거의 수를 감소시키고, 이는 감소된 전력 소비 및 개선된 메모리 효율을 야기한다. 1-5 illustrate techniques for improving memory management efficiency in a processing system by selecting entries for eviction from a cache based at least in part on validity states of corresponding entries in different caches. For purposes of illustration, a processing system may include a memory layer having at least two caches, a higher level cache (closer to the main memory in the memory layer), and a lower level cache (closer to the processor core of the processing system). When data in an entry in a higher-level cache moves to an entry in a lower-level cache, an entry in the higher-level cache is marked as having a validity status of "invalid ", so that an entry can store data coming in from a higher- . The low-level cache monitors the location of the high-level cache that appears to be invalid and, when selecting an entry in the low-level cache for eviction to the high-level cache, the selected cache entry is stored at that point in the invalid cache line of the high- Based on at least in part, whether or not the entry is valid. The processing system thereby reduces the number of evictions in the upper level cache, which results in reduced power consumption and improved memory efficiency.

도 1은 일부 실시예들에 따라 주어진 캐시 레벨에서 캐시 교체 정책에서의 사용을 위해 상이한 레벨의 캐시에서 무효인 캐시 엔트리들을 주어진 캐시 레벨에서 추적하도록 구성된 프로세싱 시스템(100)의 예를 도시한다. 프로세싱 시스템(100)은 퍼스널 컴퓨터, 워크스테이션, 스마트폰, 비디오 게임 콘솔, 스마트 TV 등과 같은 모바일 디바이스와 같은 다수의 디바이스들 중 임의의 것에 사용될 수 있다. 프로세싱 시스템(100)은 프로세서 코어(110), 다수의 레벨의 캐시(예컨대, L1 캐시(120), L2 캐시(130), L3 캐시(140)) 및 주 메모리(150)를 포함한다. 일부 실시예들에서, 프로세서 코어(110) 및 다수의 레벨의 캐시, 그들의 연관된 캐시 컨트롤러들을 포함하여, 는 별개의 반도체 다이 상에 포함된 주 메모리(150)가 있는, 단일 반도체 다이 상에 포함된 프로세서를 구성한다. Figure 1 illustrates an example of a processing system 100 configured to track invalid cache entries at a given cache level at different levels of cache for use in a cache replacement policy at a given cache level according to some embodiments. The processing system 100 may be used in any of a number of devices, such as a mobile device, such as a personal computer, a workstation, a smart phone, a video game console, a smart TV, The processing system 100 includes a processor core 110, multiple levels of cache (e.g., L1 cache 120, L2 cache 130, L3 cache 140) and main memory 150. In some embodiments, processor core 110 and a plurality of levels of cache, including their associated cache controllers, are included on a single semiconductor die, with main memory 150 included on a separate semiconductor die Configure the processor.

프로세서 코어(110)는 명령들을 실행하기 위한 하나 이상의 명령 파이프라인들을 포함하고, 그렇게 함으로써 전자 디바이스를 위한 임무들을 수행한다. 프로세서 코어(110)는 예컨대 레지스터 파일의 형태로 일정량의 통합 메모리(integral memory)를 가질 수 있지만, 그러한 메모리는 통상적으로 저장 용량이 제한된다. 따라서, 명령들을 실행하기 위해, 프로세서 코어(110)는 L1 캐시(120), L2 캐시(130), L3 캐시(140) 및 주 메모리(150)를 포함하는, 프로세싱 시스템(100)의 메모리 계층으로부터 데이터를 저장 및 검색한다. 특히, 명령들을 실행하는 과정에서, 프로세서 코어(110)는 메모리 계층에 데이터를 저장(저장 동작) 또는 이로부터 로드(판독 동작)하기 위해 메모리 액세스 요청들로 지칭되는 동작들을 생성한다. L1 캐시(120), L2 캐시(130), L3 캐시(140) 및 주 메모리(150)는 여기에서 더 기술되는 바와 같이 메모리 액세스 요청들을 만족시키기 위해 함께 동작한다. The processor core 110 includes one or more instruction pipelines for executing instructions, thereby performing tasks for the electronic device. The processor core 110 may have a certain amount of integral memory, e.g., in the form of a register file, but such memory is typically limited in storage capacity. Thus, to execute the instructions, the processor core 110 may be coupled to the memory layer of the processing system 100, including the L1 cache 120, the L2 cache 130, the L3 cache 140 and the main memory 150 Store and retrieve data. In particular, in the course of executing instructions, the processor core 110 generates operations referred to as memory access requests to store (store operations) or load (read operations) the data in the memory hierarchy. The L1 cache 120, L2 cache 130, L3 cache 140, and main memory 150 work together to satisfy memory access requests as described further herein.

L1 캐시(120)는 프로세서 코어(110)에 의한 액세스를 위해 데이터를 저장하는 메모리 모듈이다. 적어도 일 실시예에서, L1 캐시(120)는 그 각각이 캐시 라인으로 지칭되는 데이터의 연관된 유닛을 저장할 수 있는 엔트리들의 세트로 구성된다. L1 캐시 컨트롤러(122)는 프로세서 코어(110)로부터 데이터에 대한 메모리 액세스 요청들을 수신하고 캐시 엔트리들 중 하나가 메모리 액세스 요청에 의해 목표로 되는 메모리 주소와 연관된 캐시 라인을 저장하고 있는지를 결정하기 위해 L1 캐시(120)를 검색한다. 요청된 캐시 라인이 L1 캐시(120)에서 찾아지면, 캐시 히트가 발생한다. 캐시 히트의 경우, L1 캐시 컨트롤러(122)는 판독(read) 동작의 경우에 L1 캐시(120)로부터 요청된 캐시 라인을 프로세서 코어(110)에 제공하거나, 기록(write) 동작의 경우 데이터를 캐시 엔트리에 기록함으로써 메모리 액세스 요청을 만족시킨다. 요청된 캐시 라인이 L1 캐시(120)에서 찾아지지 않으면, 캐시 미스가 발생한다. L1 캐시(120)에서의 캐시 미스의 경우 L1 캐시 컨트롤러(122)는 메모리 액세스 요청을 L2 캐시(130)으로 제공한다. The L1 cache 120 is a memory module that stores data for access by the processor core 110. In at least one embodiment, the L1 cache 120 is comprised of a set of entries, each of which may store an associated unit of data referred to as a cache line. The L1 cache controller 122 receives memory access requests for data from the processor core 110 and determines if one of the cache entries is storing a cache line associated with the memory address targeted by the memory access request The L1 cache 120 is searched. If the requested cache line is found in the L1 cache 120, a cache hit occurs. In the case of a cache hit, the L1 cache controller 122 provides the requested cache line from the L1 cache 120 to the processor core 110 in the case of a read operation, or, in the case of a write operation, Thereby satisfying the memory access request. If the requested cache line is not found in the L1 cache 120, a cache miss occurs. In the case of a cache miss in the L1 cache 120, the L1 cache controller 122 provides a memory access request to the L2 cache 130.

L1 캐시(120)와 유사하게, L2 캐시(130)는 그 각각이 연관된 캐시 라인을 저장할 수 있는 엔트리들의 세트를 포함하는 메모리이다. L2 캐시 컨트롤러(132)는 L1 캐시(120)에서의 캐시 미스들에 응답하여 L1 캐시 컨트롤러(122)로부터 메모리 액세스 요청들을 수신하도록 구성된 모듈이다. 메모리 액세스 요청을 수신하는 것에 응답하여, L2 캐시 컨트롤러(132)는 L2 캐시(130)의 캐시 엔트리들 중 하나가 메모리 액세스 요청에 의해 목표로 되는 메모리 주소와 연관된 데이터를 저장하는지를 확인한다. 그렇다면, L2 캐시 컨트롤러(132)는 캐시 히트를 확인하고, 요청된 데이터를 L2 캐시(130)로부터 L1 캐시(120)로 제공한다. 요청된 데이터가 L2 캐시(130)에서 찾아지지 않으면, L2 캐시 컨트롤러는 캐시 미스를 확인하고 메모리 액세스 요청을 L3 캐시(140)로 제공한다. Similar to the L1 cache 120, the L2 cache 130 is a memory that contains a set of entries, each of which can store an associated cache line. The L2 cache controller 132 is a module configured to receive memory access requests from the L1 cache controller 122 in response to cache misses in the L1 cache 120. [ In response to receiving the memory access request, the L2 cache controller 132 confirms that one of the cache entries in the L2 cache 130 stores data associated with the memory address targeted by the memory access request. If so, the L2 cache controller 132 acknowledges the cache hit and provides the requested data from the L2 cache 130 to the L1 cache 120. If the requested data is not found in the L2 cache 130, the L2 cache controller identifies the cache miss and provides a memory access request to the L3 cache 140. [

L1 캐시(120) 및 L2 캐시(130)에서처럼, L3 캐시(140)는 캐시 라인을 저장하도록 구성된 각각의 엔트리를 갖는 엔트리들의 세트를 포함하는 메모리이다. L3 캐시 컨트롤러(142)는 L2 캐시 컨트롤러(132)로부터 메모리 액세스 요청들을 수신하도록 구성된다. 메모리 액세스 요청을 수신하는 것에 응답하여, L3 캐시 컨트롤러(142)는 L3 캐시(140)의 엔트리가 메모리 액세스 요청에 의해 목표로 되는 메모리 주소와 연관된 데이터를 저장하는지 여부를 확인한다. 캐시 히트의 경우, L3 캐시 컨트롤러(142)는 요청된 데이터를 L3 캐시(140)로부터 L2 캐시(130)로 제공하고, L2 캐시(130)는 데이터를 저장하고 차례차례 데이터를 L1 캐시(120)로 제공하며, 이것은 전술한 바와 같이 메모리 액세스 요청을 만족시킨다. L3 캐시(140)에서의 캐시 미스의 경우, L3 캐시 컨트롤러(142)는 메모리 액세스 요청을 주 메모리(150)로 제공한다. 주 메모리(150)는 요청에 의해 목표로 되는 메모리 주소에서의 캐시 라인을 검색하고 캐시 라인을 L3 캐시(140)로 제공하며, 이는 차례차레 캐시 라인을 메모리 액세스 요청이 만족되는 L1 캐시(120)로의 제공을 위해 L2 캐시(130)로 제공한다. 그러므로, 전술한 바와 같이, 메모리 액세스 요청은 요청된 데이터가 찾아질 때까지 메모리 계층을 가로지른다. 요청된 데이터는 그리고는 L1 캐시(120)로 전달되고, 여기서 메모리 액세스 요청은 만족된다. As with the L1 cache 120 and the L2 cache 130, the L3 cache 140 is a memory that contains a set of entries with each entry configured to store a cache line. The L3 cache controller 142 is configured to receive memory access requests from the L2 cache controller 132. [ In response to receiving the memory access request, the L3 cache controller 142 determines whether the entry in the L3 cache 140 stores data associated with the memory address targeted by the memory access request. In the case of a cache hit, the L3 cache controller 142 provides the requested data from the L3 cache 140 to the L2 cache 130, the L2 cache 130 stores the data, , Which satisfies the memory access request as described above. In case of a cache miss in the L3 cache 140, the L3 cache controller 142 provides a memory access request to the main memory 150. [ The main memory 150 retrieves the cache line at the target memory address and provides the cache line to the L3 cache 140 upon request, which in turn transfers the cache line to the L1 cache 120 where the memory access request is satisfied, To the L2 cache 130 for provision to the L2 cache 130. Thus, as described above, the memory access request traverses the memory layer until the requested data is found. The requested data is then passed to the L1 cache 120, where the memory access request is satisfied.

일부 실시예들에서, L1 캐시(120), L2 캐시(130) 및 L3 캐시(140) 각각은 세트 연관 캐시(set associative cache)이고, 여기서 각각의 캐시는 다수의 세트들로 분할된다. 각각의 세트는 다수의 웨이(way)들을 포함하고, 각각의 웨이는캐시 라인을 저장할 수 있는 캐시 엔트리에 대응한다. 각각의 세트는 메모리 주소들의 서브셋들과 연관된 캐시 라인만을 저장하고, 여기서 세트와 연관된 서브셋은 인덱스로 지칭되는 메모리 주소의 부분에 기반하여 대응하는 캐시 컨트롤러에 의해 확인된다. 세트 연관성을 사용함으로써, 캐시들(120, 130, 140)은 캐시 미스들 및 캐시 히트들의 비교적 빠른 확인을 용이하게 한다. 또한, 일부 실시예들에서 L3 캐시(140)는 L2 캐시(130)보다 커서 그 세트들의 각각에 대한 더 큰 인덱스 크기를 사용할 수 있다. In some embodiments, each of the L1 cache 120, L2 cache 130 and L3 cache 140 is a set associative cache, where each cache is divided into a plurality of sets. Each set includes a number of ways, each way corresponding to a cache entry capable of storing a cache line. Each set stores only the cache line associated with the subset of memory addresses, where the subset associated with the set is identified by the corresponding cache controller based on the portion of the memory address referred to as the index. By using set associations, caches 120,130, 140 facilitate a relatively quick identification of cache misses and cache hits. Also, in some embodiments, the L3 cache 140 may be larger than the L2 cache 130 to use a larger index size for each of the sets.

일부 실시예들에서, 캐시들(120, 130, 140)은 일반적으로 그들이 주어진 시점에서 프로세서 코어(110)에 의해 요청되거나 요청될 수 있는 모든 데이터를 저장할 수 없어서, 전술한 메모리 계층을 통해 데이터가 전달되도록요청하도록 크기지어진다. 데이터 일관성(coherency) 및 메모리 계층을 통한 데이터의 효율적인 전달을 보장하기 위해, 캐시 컨트롤러들(122, 132, 142) 각각은 세트 내에수신된 캐시 라인을 저장하는 것이 가능한 엔트리가 있는지 확인하고, 그렇지 않으면 교체를 위해 세트 내의 엔트리들 중 하나를 선택하는 교체 정책을 실행한다. 캐시 엔트리의 가용성은 엔트리의 유효 상태로 지칭되는, 엔트리와 연관된 상태 정보에 의해 나타내진다. 특히, 무효인 유효성 상태를 갖는 캐시 라인(여기에서 무효인 캐시 라인으로 지칭되는)은 데이터를 저장하는데 이용 가능하고 유효인 유효성 상태를 갖는 캐시 라인 (본 문서에서 유효인 캐시 라인으로 지칭됨)은 교체되지 않는다면 데이터를 저장하는데 이용 가능하지 않은 것이다. 들어오는 캐시 라인으로 엔트리에서 유효인 캐시 라인을 교체하기 위해, 캐시에 대한 캐시 컨트롤러는 먼저 유효인 캐시 라인을 메모리 계층의 하나 이상의 다른 레벨로 전달함으로써 퇴거시키고, 그리고는 들어오는 캐시 라인을 엔트리에 저장한다. In some embodiments, the caches 120, 130, 140 are typically unable to store all the data that may be requested or requested by the processor core 110 at a given point in time, To be delivered. To ensure data coherency and efficient delivery of data through the memory layer, each of the cache controllers 122, 132, 142 checks to see if there is an entry capable of storing the received cache line in the set, And executes a replacement policy that selects one of the entries in the set for replacement. The availability of the cache entry is indicated by the state information associated with the entry, referred to as the valid state of the entry. In particular, a cache line (referred to herein as an invalid cache line) having an invalid validity state is a cache line (referred to as a valid cache line in this document) that is available for storing data and has a valid validity state If not, it is not available for storing data. To replace the cache line that is valid in the entry with the incoming cache line, the cache controller for the cache first evicts by passing the valid cache line to one or more other levels of the memory hierarchy, and then stores the incoming cache line in the entry .

예시를 위해, 프로세싱 시스템(100)의 리셋에 응답하여, L1 캐시(120), L2 캐시(130) 및 L3 캐시(140) 각각의 모든 캐시 라인들은 그들의 각각의 캐시 컨트롤러에 의해 무효인 상태로 설정된다. 캐시 엔트리가 주 메모리(150)로부터 검색된 캐시 라인으로 채워질 때, 대응하는 캐시 컨트롤러는 캐시 엔트리를 유효인 상태로 설정한다. 무효인 상태로 설정된 캐시 라인을 포함하는 캐시 웨이는 들어오는 캐시 라인을 수신할 수도 있으며, 이것은 무효인 캐시 라인을 옮겨놓거나(displace) 또는 겹쳐쓸 것이다(overwrite). 캐시가 저장될 캐시 라인을 수신하면, 캐시 라인이 저장될 캐시 웨이를 선택해야 한다. 들어오는 캐시 라인과 연관된 캐시 세트가 이용 가능한 공간이 있으면 (즉, 무효인 캐시 라인들을 포함하는 것으로 나타나는 하나 이상의 캐시 웨이들을 갖는다면), 들어오는 캐시 라인은 무효인 웨이들 중 하나에 저장될 것이다. 하지만, 들어오는 캐시 라인과 연관된 세트 내의 모든 캐시 웨이들이 유효로 나타나면, 캐시 컨트롤러는 들어오는 캐시 라인을 위한 공간을 만들기 위해 퇴거될 새로운 캐시 라인과 연관된 세트의 캐시 라인을 선택한다. For example, in response to a reset of the processing system 100, all cache lines of each of the L1 cache 120, the L2 cache 130 and the L3 cache 140 are set to an invalid state by their respective cache controllers do. When the cache entry is filled with the cache line retrieved from the main memory 150, the corresponding cache controller sets the cache entry to a valid state. A cache way that includes a cache line set to an invalid state may receive an incoming cache line, which will overwrite or overwrite the invalid cache line. When the cache receives the cache line to be stored, it must select the cache way in which the cache line is to be stored. If the cache set associated with the incoming cache line has available space (i. E. Has more than one cache way that appears to contain invalid cache lines), the incoming cache line will be stored in one of the invalid ways. However, if all the cache ways in the set associated with the incoming cache line are valid, the cache controller selects the set of cache lines associated with the new cache line to be evicted to make room for the incoming cache line.

교체를 위한 캐시 라인을 선택하기 위해 캐시 컨트롤러에 의해 사용되는 특정 기준은 교체 정책으로 지칭된다. 예를 들어, 캐시 컨트롤러(122)는 들어오는 캐시 라인과 연관된 캐시 세트에서 최근에 가장 적게 사용된 캐시 라인(즉, 최근에 메모리 액세스 동작의 목표가 가장 적게 된 캐시 라인)을 퇴거를 위해 선택하는 교체 정책을 캐시(120)에서 실행할 수 있다. The specific criteria used by the cache controller to select a cache line for replacement is referred to as a replacement policy. For example, the cache controller 122 may use a replacement policy that selects the least recently used cache line in the cache set associated with the incoming cache line (i. E., The cache line with the least recent recently targeted memory access operation) May be executed in the cache 120.

일부 실시예들에서, L2 캐시 컨트롤러(132)는 L3 캐시(140)에서의 무효인 캐시 라인들의 위치에 기반하여 교체 정책을 실행할 수 있다. 특히, L2 캐시 컨트롤러(132)는 퇴거를 위해 L3 캐시(140)로 전달된 때, 무효인 캐시 웨이에서 저장될 거 같은 캐시 라인을 퇴거를 위한 캐시 라인으로 선택할 수 있다. L3 캐시(140)는 그러므로 L2 캐시(130)으로부터 들어오는 캐시 라인을 위한 공간을 만들기 위해 유효인 캐시 라인을 퇴거할 필요가 없다. 따라서, L3 캐시(140)에서 무효인 캐시 라인들의 위치에 적어도 부분적으로 기반하여 퇴거를 위한 캐시 라인을 선택함으로써, L2캐시 컨트롤러(132)는 L3 캐시에서의 퇴거들의 수를 감소시킬 수 있어, 전력을 보전하고 메모리 효율성을 향상시킨다. In some embodiments, the L2 cache controller 132 may implement a replacement policy based on the location of invalid cache lines in the L3 cache 140. [ In particular, when the L2 cache controller 132 is passed to the L3 cache 140 for eviction, it may select a cache line to be stored in the invalid cache way as a cache line for eviction. The L3 cache 140 therefore does not need to evict the cache line that is valid to make room for the incoming cache line from the L2 cache 130. [ Thus, by selecting a cache line for eviction based at least in part on the location of invalid cache lines in the L3 cache 140, the L2 cache controller 132 can reduce the number of evictions in the L3 cache, And improves memory efficiency.

예시를 위해, 동작시 프로세서 코어(110)는 메모리 액세스 동작을 실행한다. 프로세서 코어(110)는 데이터(캐시 라인)를 L1 캐시 컨트롤러(122)로부터 요청하고, L1 캐시 컨트롤러는 요청된 캐시 라인에 대해 L1 캐시(120)를 검색한다. 요청된 캐시 라인이 L1 캐시(120)에서 찾아지면, 요청된 캐시 라인은 프로세서 코어(110)로 읽혀진다. 요청된 캐시 라인이 L1 캐시(120)에서 찾아지지 않으면, L1 캐시 컨트롤러(122)는 L2 캐시 컨트롤러(132)로부터 캐시 라인을 요청한다. L2 캐시 컨트롤러(132)는 요청된 캐시 라인에 대해 L2 캐시(130)를 검색한다. 요청된 캐시 라인이 L2 캐시(130)에서 찾아지면, L2 캐시 컨트롤러(132)는 요청된 캐시 라인을 L1 캐시(120)에 복사하고, 이로부터 L1 캐시 컨트롤러(122)는 요청된 캐시 라인을 프로세서 코어(110)로 읽게 한다. For illustrative purposes, in operation, the processor core 110 performs a memory access operation. Processor core 110 requests data (cache line) from Ll cache controller 122 and Ll cache controller searches L1 cache 120 for the requested cache line. If the requested cache line is found in the L1 cache 120, the requested cache line is read by the processor core 110. [ If the requested cache line is not found in the Ll cache 120, the Ll cache controller 122 requests a cache line from the L2 cache controller 132. The L2 cache controller 132 searches the L2 cache 130 for the requested cache line. If the requested cache line is found in the L2 cache 130, the L2 cache controller 132 copies the requested cache line to the L1 cache 120 from which the L1 cache controller 122 transfers the requested cache line to the processor And read it to the core 110.

요청된 캐시 라인이 L2 캐시(130)에서 찾아지지 않으면, L2 캐시 컨트롤러(132)는 캐시 라인을 L3 캐시 컨트롤러(142)로부터 요청한다. L3 캐시 컨트롤러(142)는 요청된 캐시 라인에 대해 L3 캐시(140)를 검색한다. 요청된 캐시 라인이 L3 캐시(140)에서 찾아지면, L3 캐시 컨트롤러(142)는 요청된 캐시 라인을 L2 캐시(130)로 복사하고 L3 캐시(140) 내에 거주하는 요청된 캐시 라인의 유지된 복사본의 상태 비트를 무효인 상태로 설정한다. L2캐시 컨트롤러(132)는 L3캐시(140) 내의 요청된 캐시 라인이 무효인 상태로 설정되었음을 나타내기 위해 L3무효 테이블(134)을 업데이트한다.L2 캐시 컨트롤러(132)는 L3 캐시(140)로부터 복사된 요청된 캐시 라인을 복사할 수 있는 캐시 세트에 대해 L2 캐시(130)를 검색한다. If the requested cache line is not found in the L2 cache 130, the L2 cache controller 132 requests the cache line from the L3 cache controller 142. The L3 cache controller 142 searches the L3 cache 140 for the requested cache line. If the requested cache line is found in the L3 cache 140, the L3 cache controller 142 copies the requested cache line to the L2 cache 130 and copies the maintained copy of the requested cache line residing in the L3 cache 140 And sets the status bit of " 0 " The L2 cache controller 132 updates the L3 invalidation table 134 to indicate that the requested cache line in the L3 cache 140 is set to an invalid state. The L2 cache 130 is searched for the cache set that can copy the copied requested cache line.

L2 캐시(130) 내의 어떤 캐시 세트들도 요청된 캐시 라인을 저장하는데 이용할 수 없으면, L2 캐시 컨트롤러(132)는 퇴거 및 교체를 위해 캐시 세트로부터 캐시 라인을 선택할 것이다. 그 선택을 하는데 있어, L2 캐시 컨트롤러(132)는 무효인 캐시 라인들을 포함하는 L3 캐시(140) 내의 캐시 세트들과 연관된 들어오는 캐시 라인들을 갖는 캐시 세트들 내에 거주하는 임의의 캐시 라인인지 여부를 결정하기 위해 L3 무효 테이블(134)을 참고할 것이다. 그렇다면, 그러한 캐시 라인들은 L2 캐시(130)로부터 L3 캐시(140)로의 퇴거를 위해 선호될 것인데, L3 캐시(140)로의 이들의 퇴거가 L3 캐시(140) 내의 무효인 캐시 라인의 대체(displacement)를초래할 것이고 따라서 L3 캐시(140)로부터의 유효한 데이터의 퇴거를 요구하지 않을 것이기 때문이다. 그러한 선호는 L2 캐시(130) 내에 거주하는 가장 최근에 적게 사용된 캐시 라인과 같이, 다른 요소들 중에서 L2 캐시 컨트롤러(132)에 의해 고려될 수 있다. 예를 들어, L2 캐시 컨트롤러(132)는 에이지(age) 값을 각 캐시 라인에 할당할 수 있고, 다수의 기준들, 캐시 라인이 L3 캐시(140)에서의 무효인 캐시 라인과 연관되었는지 여부나 캐시 라인이 메모리 액세스 동작의 목표인지 여부 등을 포함하여, 에 기반하여 에이지 값을 조정한다. 주어진 캐시라인에 대한 에이지 값은 그러므로 해당 캐시 라인에 대해 모든 상이한 교체 정책 기준들의 조합을 반영한다. 퇴거를 위한 세트의 캐시 라인을 선택할 때, L2 캐시 컨트롤러(132)는 세트 내의 캐시 라인들에 대한 에이지 값들의 비교에 기반하여 캐시 라인을 선택할 수 있다. If no cache sets in the L2 cache 130 are available to store the requested cache line, the L2 cache controller 132 will select a cache line from the cache set for eviction and replacement. In making that choice, the L2 cache controller 132 determines whether it is any cache line residing in cache sets having incoming cache lines associated with cache sets in the L3 cache 140 that contain invalid cache lines The L3 invalidation table 134 will be referred to. Such cache lines would then be preferred for eviction from the L2 cache 130 to the L3 cache 140 where their retirement to the L3 cache 140 would result in displacement of the invalid cache line in the L3 cache 140, And thus will not require eviction of valid data from the L3 cache 140. [ Such a preference may be taken into account by the L2 cache controller 132 among other factors, such as the least recently used cache line residing in the L2 cache 130. For example, the L2 cache controller 132 may assign an age value to each cache line and determine whether a plurality of criteria, whether the cache line is associated with an invalid cache line in the L3 cache 140, And adjusts the age value based on, including whether the cache line is the target of a memory access operation or the like. The age value for a given cache line therefore reflects a combination of all the different replacement policy criteria for that cache line. When selecting a set of cache lines for eviction, the L2 cache controller 132 may select a cache line based on a comparison of age values for the cache lines in the set.

캐시 라인이 L2 캐시(130)로부터 L3 캐시(140)로 퇴거되면, L2 캐시 컨트롤러(132)는 L3 캐시(140)로부터 들어오는 요청된 캐시 라인을 L2 캐시(130)로 복사한다. 요청된 캐시 라인이 L2 캐시(130)로 복사되면, L2 캐시 컨트롤러(132)는 요청된 캐시 라인을 L1 캐시(120)로 복사한다. L1 캐시 컨트롤러(122)는 그리고는 요청된 캐시 라인을 프로세서 코어(110)로 제공한다. When the cache line is evacuated from the L2 cache 130 to the L3 cache 140, the L2 cache controller 132 copies the requested cache line incoming from the L3 cache 140 to the L2 cache 130. [ When the requested cache line is copied to the L2 cache 130, the L2 cache controller 132 copies the requested cache line to the L1 cache 120. [ The L1 cache controller 122 then provides the requested cache line to the processor core 110. [

프로세싱 시스템(100)의 상이한 캐시 컨트롤러들은 그들 각각의 캐시들에서 상이한 교체 계획을 실행할 수 있음은 이해될 것이다. 예를 들어, L2 캐시 컨트롤러(132)는 전술한 바와 같이 L3 캐시(140)의 엔트리들의 유효성 상태에 적어도 부분적으로 기반하여 L2 캐시(130)에서 교체를 위한 엔트리들을 선택할 수 있다. 대조적으로, L1 캐시 컨트롤러(122)는 L2 캐시(130)에서의 엔트리들의 유효성 상태 또는 L3 캐시(140)에서의 엔트리들의 유효성 상태를 고려하지 않고 L1 캐시(120)에서 교체를 위한 엔트리들을 선택할 수 있다. 상이한 캐시 컨트롤러들에서 이렇게 상이한 교체 계획을 실행하는 것은 프로세싱 시스템(100)에서의 전체적인 메모리 액세스 효율성을 향상시킬 수 있다. It will be appreciated that different cache controllers of the processing system 100 may implement different replacement schemes in their respective caches. For example, the L2 cache controller 132 may select entries for replacement in the L2 cache 130 based at least in part on the validity status of the entries in the L3 cache 140, as described above. In contrast, the L1 cache controller 122 may select entries for replacement in the L1 cache 120 without considering the validity state of the entries in the L2 cache 130 or the validity state of the entries in the L3 cache 140 have. Implementing such a different replacement scheme in different cache controllers may improve the overall memory access efficiency in the processing system 100.

도 2는 일부 실시예들에 따라 퇴거될 L3 캐시 라인의 유효성 상태에 기반하여 교체를 위해 선택되는 L2 캐시(130)에서의 캐시 라인의 예를 도시한다. 도시된 예에서, L3 캐시(140)는 캐시 엔트리(243)에 저장된 캐시 라인(235)을 요청하는 메모리 액세스 요청(221)을 수신한다. 메모리 액세스 요청(221)에 응답하여, L3 캐시(140)는 캐시 라인(235)을 엔트리(231)에 캐시 라인(235)를 저장하는 L2 캐시(130)로 제공한다. 추가로, 메모리 액세스 요청(221)에 응답하여, L3 캐시(240)는 캐시 엔트리(243)에 대한 유효성 비트(244)를 캐시 엔트리(243)에 저장된 데이터가 무효이고 교체 가능하다는 것을 가리키는 무효인 상태로 설정한다. Figure 2 illustrates an example of a cache line in the L2 cache 130 that is selected for replacement based on the validity state of the L3 cache line to be evicted in accordance with some embodiments. In the illustrated example, the L3 cache 140 receives a memory access request 221 requesting a cache line 235 stored in a cache entry 243. In response to the memory access request 221, the L3 cache 140 provides the cache line 235 to the L2 cache 130, which stores the cache line 235 in the entry 231. [ Additionally, in response to the memory access request 221, the L3 cache 240 updates the validity bit 244 for the cache entry 243 to an invalid value indicating that the data stored in the cache entry 243 is invalid and replaceable State.

메모리 액세스 요청(221) 및 유효성 비트(224)가 무효인 상태로 설정된 후에, L2 캐시 컨트롤러(132)는 퇴거(222)를 확인한다 - 즉, L2 캐시 컨트롤러(132)는 L3 캐시(140), L1 캐시(120) 등과 같은 다른 캐시로부터 수신되는 데이터를 수용하기 위해 그 엔트리들 중 하나로부터 데이터를 퇴거해야만 한다고 결정한다. 퇴거(222) 확인에 응답하여, L2 캐시 컨트롤러(132)는 확인된 엔트리가 무효인 상태에 있는 L3 캐시(140)의 엔트리에 저장될지 여부에 적어도 부분적으로 기반하여 교체를 위한 엔트리를 확인한다. 도시된 예에서, L2 캐시(130)는 엔트리(133)를 포함하여 그 데이터가 퇴거될 때 데이터는 L3 캐시(140)에 의해 캐시 엔트리(243)에저장될 것이다. 즉, 엔트리(133)에서의 데이터와 연관된 메모리 주소는 그러하여, 데이터가 L2 캐시(130)에 의해 L3 캐시(140)로 제공되면 L3 캐시(140)는 데이터를 캐시 세트(243)에 저장할 것이다. 또한, 위에서 설명된 바와 같이, 캐시 엔트리(243)에 대한 유효성 비트(244)는 메모리 액세스 요청(221)에 응답하여 이전에 무효인 상태로 설정되었다. 따라서, 캐시 엔트리(243)가 유효성 비트(244)에 의해 무효인 데이터를 저장하는 것으로 나타난 것을 확인하는 것에 응답하여, L2 캐시 컨트롤러(132)는 교체를 위해 엔트리(133)를 선택하고, 그리고 엔트리(133)에 저장된 데이터를 L3 캐시(140)로 제공한다.   After the memory access request 221 and the validity bit 224 are set to the invalid state, the L2 cache controller 132 acknowledges the eviction 222 - that is, the L2 cache controller 132 checks the L3 cache 140, It must decide to evict the data from one of its entries to accommodate data received from another cache, such as the L1 cache 120, and so on. In response to the eviction 222 confirmation, the L2 cache controller 132 identifies an entry for replacement based at least in part on whether the identified entry is to be stored in an entry in the L3 cache 140 that is in an invalid state. In the example shown, the L2 cache 130 includes an entry 133 and data will be stored in the cache entry 243 by the L3 cache 140 when the data is evicted. That is, the memory address associated with the data in the entry 133 will thus store the data in the cache set 243 if the data is provided to the L3 cache 140 by the L2 cache 130 . Also, as described above, the validity bit 244 for the cache entry 243 has been previously set to the invalid state in response to the memory access request 221. Thus, in response to confirming that the cache entry 243 appears to be storing invalid data by the validity bit 244, the L2 cache controller 132 selects the entry 133 for replacement, And provides the data stored in the cache memory 133 to the L3 cache 140.

L2 캐시(130)로부터 데이터를 수신하는 것에 응답하여, L3 캐시 컨트롤러(142)는 데이터를 저장하기 위해 캐시 엔트리(243)를 선택한다. 캐시 엔트리(243)가 무효인 상태에 있는 것으로 나타나므로, L3 캐시(140)는 들어오는 데이터를 수용하기 위해 어느 유효한 데이터를 퇴거할 필요가 없다. 그러므로, 데이터가 무효인 것으로 나타나는 L3 캐시(140)의 엔트리에 저장될 것인지 여부에 기초하여 퇴거를 위한 데이터를 선택함으로써, L2 캐시(130)는 L3 캐시(140)에서의 퇴거들의 수를 감소시키고 프로세싱 시스템(100)에서의 전체적인 메모리 효율성을 향상시킨다. In response to receiving data from the L2 cache 130, the L3 cache controller 142 selects the cache entry 243 to store the data. Since the cache entry 243 appears to be in an invalid state, the L3 cache 140 does not need to evict any valid data to accommodate the incoming data. Thus, by selecting data for retirement based on whether or not data will be stored in an entry in the L3 cache 140 that appears to be invalid, the L2 cache 130 reduces the number of evictions in the L3 cache 140 Thereby improving the overall memory efficiency in the processing system 100.

도 1과 관련하여 전술한 바와 같이, 일부 실시예들에서 L2 캐시 컨트롤러(132)는 L3 무효 테이블(134) 내의 L3 캐시(140)의 엔트리들의 유효성 상태를 지속적으로 추적한다. 도 3은 일부 실시예들에 따라 L3 캐시(140)의 엔트리의 유효성 상태의 변화에 응답하여 L3 무효 테이블(134)을 업데이트하는 L2 캐시 컨트롤러(132)의 예를 도시한다. 도시된 예에서, L3 캐시(140)는 L3캐시(140)가 캐시 라인(335)을 L2 캐시(130)로 전달하라는 요청을 나타내는 메모리 액세스 요청(321)을 수신한다. 이에 응답하여, L3 캐시 컨트롤러(142)는 캐시 라인(335)이 엔트리(343)에 저장된 것을 확인하고, 엔트리(343)에 저장된 데이터를 L2캐시(130)로 전달하고,L2캐시는 엔트리(331)에 데이터를 저장한다. 추가적으로, L3 캐시 컨트롤러(142)는 엔트리(343)에 저장된 데이터가 유효하지 않다는 것을 나타내기 위해 엔트리(343)에 대한 유효성 비트(344)를 무효인 상태로 설정한다. As described above with respect to FIG. 1, in some embodiments, the L2 cache controller 132 continuously tracks the validity status of the entries of the L3 cache 140 in the L3 invalidation table 134. [ FIG. 3 illustrates an example of an L2 cache controller 132 that updates the L3 invalidation table 134 in response to a change in the validity state of an entry in the L3 cache 140, in accordance with some embodiments. In the illustrated example, the L3 cache 140 receives a memory access request 321 indicating that the L3 cache 140 is requesting to forward the cache line 335 to the L2 cache 130. In response, the L3 cache controller 142 confirms that the cache line 335 is stored in the entry 343, transfers the data stored in the entry 343 to the L2 cache 130, and the L2 cache stores the entry 331 ). Additionally, the L3 cache controller 142 sets the validity bit 344 for entry 343 to an invalid state to indicate that the data stored in entry 343 is not valid.

엔트리(343)에 대한 유효성 비트(344)를 무효인 상태로 설정하는 것에 응답하여, L3 캐시 컨트롤러(142)는 엔트리(343)가 무효라는 것을 나타내는 메시지(도 3에 도시되지 않음)를 L2 캐시 컨트롤러(132)로 보낸다. 이에 응답하여, L2 캐시 컨트롤러(132)는 L3 캐시(140)의 엔트리(343)에 대응하는 것으로서 L3 무효 테이블(134)의 엔트리(333)를 확인한다. L2 캐시 컨트롤러(132)는 엔트리(343)가 무효라는 것을 나타내도록 엔트리(333)를 업데이트하고, 그러므로 엔트리(343)에 저장될 것 같은 데이터는 L2 캐시(130)로부터 퇴거를 위해 우선적으로 처리되어야 한다. L2 캐시 컨트롤러(132)는 엔트리(343)에 저장된 데이터의 유효성에의 이후의 변화들에 응답하여 엔트리(333)를 계속적으로 업데이트할 수 있다. L3 무효 테이블(134)에서 L3 캐시(140)의 엔트리들의 유효성 상태를 저장함으로써, L2 캐시 컨트롤러는 L2 캐시(130)에서 교체를 위한 데이터를 확인할 때 빠르게 유효성 상태를 포함할 수 있다. In response to setting the validity bit 344 for the entry 343 to an invalid state, the L3 cache controller 142 sends a message (not shown in FIG. 3) indicating that the entry 343 is invalid to the L2 cache And sends it to the controller 132. In response, the L2 cache controller 132 acknowledges the entry 333 of the L3 invalidation table 134 as corresponding to the entry 343 of the L3 cache 140. The L2 cache controller 132 updates the entry 333 to indicate that the entry 343 is invalid and therefore data that is likely to be stored in the entry 343 should be preferentially processed for eviction from the L2 cache 130 do. The L2 cache controller 132 may continuously update the entry 333 in response to subsequent changes to the validity of the data stored in the entry 343. [ By storing the validity state of the entries of the L3 cache 140 in the L3 invalidation table 134, the L2 cache controller can quickly include a validity state when verifying data for replacement in the L2 cache 130. [

도 4는 일부 실시예들에 따른 도 1의 무효 테이블(134)의 예를 도시한다. 도시된 예에서, 무효 테이블(134)은 각각의 엔트리들이 L3 캐시(140)에서 엔트리의 태그를 저장하는 태그 필드(437)를 포함하는, 복수의 엔트리들(예컨대, 엔트리(435))을 포함한다. 무효 테이블(134)의 각각의 엔트리는 태그에 대응하는 엔트리의 유효성 상태를 나타내는 상태 필드(438)를 또한 포함한다. 적어도 한 실시예에서, 태그에 대응하는 캐시 엔트리가 L3 캐시(140)로부터 L2 캐시(130)로 전달되는 것에 응답하여 태그 값이 태그 필드에 저장될 때 엔트리에 대한 상태 필드는 무효인 상태로 설정된다. L2 캐시 컨트롤러(132)는 새로운 캐시 라인이 태그 값에 대응하는 L3 캐시(140)의 캐시 라인에서 저장되어 있다는 것을 나타내는 것과 같은 특정 이벤트들에 응답하여 상태 필드를 유효인 상태로 업데이트할 수 있다. L3 무효 테이블(134)은 그렇게 함으로써 L3 캐시(140)의 캐시 라인들의 유효성 상태의 최신 기록을 유지하고, 그리고 전술한 바와 같이 퇴거를 위한 L2 캐시(130)의 캐시 라인들을 선택하기 위해 L2 캐시 컨트롤러(132)에 의해 사용될 수 있다. FIG. 4 illustrates an example of the invalidation table 134 of FIG. 1 in accordance with some embodiments. In the illustrated example, the invalidation table 134 includes a plurality of entries (e.g., entry 435), each entry including a tag field 437 that stores the tag of the entry in the L3 cache 140 do. Each entry in the invalidation table 134 also includes a status field 438 that indicates the validity status of the entry corresponding to the tag. In at least one embodiment, in response to a cache entry corresponding to a tag being passed from the L3 cache 140 to the L2 cache 130, the status field for the entry is set to the invalid state when the tag value is stored in the tag field do. The L2 cache controller 132 may update the status field to a valid state in response to certain events such as indicating that a new cache line is stored in the cache line of the L3 cache 140 corresponding to the tag value. The L3 invalidation table 134 thus maintains the latest record of the validity status of the cache lines of the L3 cache 140 and is used by the L2 cache controller 130 to select the cache lines of the L2 cache 130 for eviction, Gt; 132 < / RTI >

도 5는 퇴거를 위해 선택된 캐시 라인과 연관된 제2 캐시의 캐시 세트 내에서 캐시 라인의 무효인 상태에 기반하여 제1 캐시로부터 제2 캐시로의 퇴거를 위한 캐시 라인의 선택 방법(500)을 도시한다. 블록(502)에서, L3 캐시 컨트롤러는 데이터에 대한 요청을 수신한다. 요청된 캐시 라인이 L3 캐시에서 찾아지면, 블록(504)에서 L3 캐시 컨트롤러는 요청된 캐시 라인을 L2 캐시로 복사한다. 블록(506)에서, L3 캐시 컨트롤러는 L3 캐시 내의 캐시 라인의 유지된 복사본을 무효인 상태로 설정한다. 블록(508)에서, L2 캐시 컨트롤러는 L3 캐시 내의 캐시 라인의 유지된 복사본이 무효라는 것을 나타내기 위해 L3 무효 테이블을 업데이트한다. 블록(510)에서, L2 캐시 컨트롤러가 들어오는 데이터를 위한 공간을 만들기 위해 L2 캐시로부터 캐시 라인을 퇴거를 위해 선택할 때, L2 캐시 컨트롤러는 L3 캐시 내의 캐시 라인의 무효인 상태에 부분적으로 기반하여 L2 캐시로부터 캐시 라인을 퇴거를 위해 선택한다. 방법(500)은 L3 캐시 및 L2 캐시 사이의 예시적인 실시예에 관하여 기술되었을지라도, 방법(500)은 다수의 레벨의 캐시들을 포함하는 다른 메모리 계층들에서도 적용된다. 5 illustrates a method 500 of selecting a cache line for eviction from a first cache to a second cache based on invalid state of the cache line within a cache set of a second cache associated with a cache line selected for eviction, do. At block 502, the L3 cache controller receives a request for data. If the requested cache line is found in the L3 cache, at block 504, the L3 cache controller copies the requested cache line to the L2 cache. At block 506, the L3 cache controller sets the maintained copy of the cache line in the L3 cache to an invalid state. At block 508, the L2 cache controller updates the L3 invalidation table to indicate that the maintained copy of the cache line in the L3 cache is invalid. At block 510, when the L2 cache controller selects a cache line for retirement from the L2 cache to make room for incoming data, the L2 cache controller may partition the L2 cache, based in part on the invalid state of the cache line in the L3 cache, Lt; RTI ID = 0.0 > retire. ≪ / RTI > Although the method 500 has been described with respect to an exemplary embodiment between an L3 cache and an L2 cache, the method 500 also applies to other memory layers including multiple levels of caches.

일부 실시예들에서, 테크닉들의 특정 양태들은 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서들에 의해 실현될 수 있다. 소프트웨어는 비-일시적인 컴퓨터 판독 가능 저장 매체 상에 저장되거나 그렇지 않으면 유형적으로 구현된 실행 가능 명령들의 하나 이상의 세트를 포함한다. 소프트웨어는 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서를 조작하여 전술한 테크닉들 중 하나 이상의 양태를 수행하는 명령들 및 특정 데이터를 포함할 수 있다. 비-일시적 컴퓨터 판독 가능 저장 매체는 예를 들어, 자기 또는 광학 디스크 저장 디바이스, 플래시 메모리와 같은 고체 상태 저장 디바이스들, 캐시, RAM (random access memory) 또는 다른 비-휘발성 메모리 디바이스 또는 디바이스들 등을 포함할 수 있다. 비-일시적 컴퓨터 판독 가능 저장 매체에 저장된 실행 가능 명령들은 소스 코드, 어셈블리 언어 코드, 오브젝트 코드 또는 하나 이상의 프로세서에 의해 해석되거나(interpreted) 그렇지 않으면 실행가능한 다른 명령 형식일 수 있다.In some embodiments, certain aspects of the techniques may be realized by one or more processors of a processing system executing software. The software includes one or more sets of executable instructions stored on a non-transitory computer readable storage medium or otherwise tangibly embodied. The software may include instructions and specific data for operating one or more processors to perform one or more of the above-described techniques when executed by one or more processors. Non-transitory computer readable storage media include, for example, magnetic or optical disk storage devices, solid state storage devices such as flash memory, cache, random access memory (RAM) or other non-volatile memory devices or devices, . Executable instructions stored in non-transient computer readable storage medium may be source code, assembly language code, object code, or other form of instruction interpretable or otherwise executable by one or more processors.

일반적인 기술 내용 내에서 전술한 모든 액티비티들이나 요소들이 요청되는 것은 아니며, 특정 액티비티나 디바이스의 일부가 요청되지 않을 수도 있고, 그리고 하나 이상의 추가적인 액티비티가 수행될 수도 있음을 유의해야 한다. 추가적으로, 액티비티들이 나열되는 순서가 반드시 그들이 수행되는 순서인 것은 아니다. 또한, 개념은 특정 실시예들을 참조하여 기술되었다. 그러나, 당업자는 이하의 특허 청구 범위에 설시된 바와 같이 본 개시의 범위로부터 벗어남이 없이 다양한 변경들 및 수정들이 행해질 수 있음을 알고있다. 따라서, 명세서 및 도면들은 제한적인 의미라기보다는 예시적인 것으로 간주될 것이며, 이러한 모든 수정들은 본 개시의 범위 내에 포함되는 것으로 의도된다.It is noted that not all of the activities or elements described above are required within the general technical context, that a particular activity or part of a device may not be requested, and that one or more additional activities may be performed. Additionally, the order in which the activities are listed is not necessarily the order in which they are performed. In addition, the concepts have been described with reference to specific embodiments. However, those skilled in the art will appreciate that various changes and modifications can be made without departing from the scope of the present disclosure as set forth in the following claims. Accordingly, the specification and figures are to be regarded in an illustrative rather than a restrictive sense, and all such modifications are intended to be included within the scope of this disclosure.

개시된 주제는 상이하나 본 문서의 교시(teaching)의 이익을 갖는 당업자들에게는 동등한 방식으로 수정되고 실행될 수 있기 때문에 전술한 특정 실시예들은 예시적인 것에 불과하다. 이하의 청구 범위에 개시된 것 이외의, 여기에서 제시된 구성 또는 디자인의 세부 내용에는 어떠한 제한도 의도되지 않는다. 그러므로 전술한 특정 실시예들은 변경 또는 수정될 수 있고 이러한 모든 변형들은 개시된 주제의 범위 내에 있는 것으로 간주되는 것은 명백하다. 따라서, 여기에서 추구되는 보호는 이하의 청구 범위에 기재된 바와 같다. The particular embodiments described above are exemplary only, as the disclosed subject matter is different, but may be modified and practiced in an equivalent manner to those of ordinary skill in the art having the benefit of the teachings of the present document. No limitations are intended to the details of construction or design herein disclosed, other than those set forth in the following claims. It is therefore evident that the particular embodiments described above may be altered or modified and all such modifications are considered within the scope of the disclosed subject matter. Accordingly, the protection sought here is as set forth in the following claims.

Claims (20)

프로세싱 시스템(100) 내에서,
상기 프로세싱 시스템의 제1 캐시(140)의 엔트리(243)로부터 상기 프로세싱 시스템의 제2 캐시(130)의 엔트리(231)로 제1 데이터(235)를 전달하고;
상기 프로세싱 시스템에서, 상기 제1 캐시의 엔트리로부터 상기 2 캐시의 엔트리로의 상기 제1 데이터의 전달에 응답하여 상기 제1 캐시의 엔트리의 유효성 상태(244)를 무효인 상태로 설정하고; 그리고
상기 프로세싱 시스템에서,상기 제1 캐시의 엔트리의 상기 유효성 상태에 기반하여 상기 제2 캐시에서 교체를 위해 제2 데이터(133)를 선택하는 것을 포함하는, 방법.
Within processing system 100,
Transferring the first data (235) from the entry (243) of the first cache (140) of the processing system to the entry (231) of the second cache (130) of the processing system;
In the processing system, setting the validity state (244) of the entry of the first cache to an invalid state in response to the transfer of the first data from the entry of the first cache to the entry of the second cache; And
In the processing system, selecting second data (133) for replacement in the second cache based on the validity state of the entry in the first cache.
청구항 1에 있어서,
상기 제1 캐시의 엔트리로부터 상기 제2 캐시의 엔트리로 상기 제1 데이터의 전달 후에 상기 제2 캐시에서 수신된 메모리 액세스 요청(221)에 응답하여 상기 제2 캐시에서 교체를 위해 상기 제2 데이터를 선택하는 것을 더 포함하는, 방법.
The method according to claim 1,
Responsive to a memory access request (221) received in the second cache after the transfer of the first data from an entry in the first cache to an entry in the second cache, transferring the second data for replacement in the second cache ≪ / RTI >
청구항 1에 있어서,
상기 제2 캐시의 캐시 컨트롤러(132)에서 상기 제1 캐시의 엔트리의 상기 유효성 상태를 저장하는 것을 더 포함하고, 상기 제2 데이터를 선택하는 것은 상기 저장된 유효성 상태에 기반하여 상기 제2 데이터를 선택하는 것을 포함하는, 방법.
The method according to claim 1,
Further comprising storing the validity state of an entry in the first cache in a cache controller (132) of the second cache, wherein selecting the second data comprises selecting the second data based on the stored validity state Lt; / RTI >
청구항 3에 있어서,
데이터가 상기 제1 캐시의 엔트리에 저장되었다는 신호(indication)에 응답하여 상기 저장된 유효성 상태를 업데이트하는 것을 더 포함하는, 방법.
The method of claim 3,
Further comprising updating the stored validity state in response to an indication that data has been stored in the entry of the first cache.
청구항 1에 있어서,
상기 제2 캐시에서 교체를 위해 상기 제2 데이터를 선택하는 것은 상기 제2 캐시의 엔트리의 에이지(age) 값에 더 기반하는, 방법.
The method according to claim 1,
Wherein selecting the second data for replacement in the second cache is further based on an age value of an entry in the second cache.
청구항 1에 있어서,
교체를 위해 상기 제2 데이터를 선택하는 것에 응답하여 상기 제2캐시로부터 상기 제1 캐시로 상기 제2 데이터를 전달하는 것을 더 포함하는, 방법.
The method according to claim 1,
Further comprising transferring the second data from the second cache to the first cache in response to selecting the second data for replacement.
청구항 1에 있어서,
제1 데이터를 상기 제2 캐시의 엔트리로부터 제3 캐시(120)로 전달하고; 그리고
상기 제2 캐시의 엔트리의 유효성 상태를 고려하지 않고 상기 제3 캐시에서 교체를 위해 데이터를 선택하는 것을 더 포함하는, 방법.
The method according to claim 1,
Transferring the first data from the entry of the second cache to the third cache 120; And
Further comprising selecting data for replacement in the third cache without considering the validity state of the entry in the second cache.
방법으로서,
프로세싱 시스템(100)의 제1 캐시(130)와 연관된 제1 캐시 컨트롤러(132)에서, 제2 캐시의 엔트리(243)의 유효성 상태(244)를 추적하고; 그리고
상기 프로세싱 시스템에서, 상기 제1 캐시 컨트롤러에 의해 추적되는 상기 제2 캐시의 엔트리의 상기 유효성 상태에 부분적으로 기반하여 상기 제1 캐시 컨트롤러에 의해 상기 제1 캐시로부터 퇴거를 위해 데이터(133)를 선택하는 것을 포함하는, 방법.
As a method,
In the first cache controller 132 associated with the first cache 130 of the processing system 100, tracking the validity state 244 of the entry 243 of the second cache; And
Selecting, in the processing system, data (133) for eviction from the first cache by the first cache controller based in part on the validity state of an entry in the second cache tracked by the first cache controller; Lt; / RTI >
청구항 8에 있어서, 상기 제1 캐시로부터 퇴거를 위해 데이터를 선택하는 것은,
상기 데이터가 상기 제2 캐시의 엔트리에 저장될 것을 확인한 것에 응답하여 상기 제1 캐시로부터 상기 데이터를 선택하는 것을 포함하는, 방법.
9. The method of claim 8, wherein selecting data for eviction from the first cache comprises:
Selecting the data from the first cache in response to verifying that the data is to be stored in an entry in the second cache.
청구항 9에 있어서, 상기 제1 캐시로부터 퇴거를 위해 데이터를 선택하는 것은,
상기 엔트리의 유효성 상태가 무효인 상태인 것을 확인한 것에 더 응답하여 상기 제1 캐시로부터 상기 데이터를 선택하는 것을 포함하는, 방법.
10. The method of claim 9, wherein selecting data for retirement from the first cache comprises:
Selecting the data from the first cache in response to determining that the validity status of the entry is invalid.
청구항 10에 있어서,
상기 제2 캐시에서의 엔트리로부터 상기 제1 캐시로 데이터가 전달될 때 상기 제2 캐시에서의 엔트리의 상기 유효성 상태를 무효인 것으로 확인하는 것을 더 포함하는, 방법.
The method of claim 10,
Further comprising: validating the validity state of the entry in the second cache when the data is transferred from the entry in the second cache to the first cache.
청구항 9에 있어서,
퇴거를 위해 선택된 상기 데이터를 상기 제1 캐시로부터 상기 제2 캐시로 전달하는 것을 더 포함하는, 방법.
The method of claim 9,
And forwarding the data selected for eviction from the first cache to the second cache.
청구항 9에 있어서,
상기 제1 캐시로부터 퇴거를 위해 데이터를 선택하는 것은 상기 제1 캐시에서의 데이터의 에이지 값에 부분적으로 더 기반하는, 방법.
The method of claim 9,
Wherein selecting data for eviction from the first cache is further based in part on the age value of the data in the first cache.
프로세서(100)로서,
제1 캐시(140);
제2 캐시(130); 및
제1 캐시 컨트롤러(132)를 포함하고, 상기 제1 캐시 컨트롤러는:
상기 제1 캐시의 엔트리(243)로부터 상기 제2 캐시의 엔트리(231)로 제1 데이터를 전달하는 것에 응답하여 상기 제1 캐시의 엔트리의 유효성 상태(244)를 무효인 상태로 설정하고;
상기 제1 캐시의 엔트리의 상기 유효성 상태에 기반하여 상기 제2 캐시에서 교체를 위해 제2 데이터(133)를 선택하도록 구성된, 프로세서.
As processor 100,
A first cache 140;
A second cache 130; And
And a first cache controller (132), the first cache controller comprising:
Set the validity state (244) of the entry in the first cache to an invalid state in response to transferring the first data from the entry (243) of the first cache to the entry (231) of the second cache;
And to select the second data (133) for replacement in the second cache based on the validity state of the entry in the first cache.
청구항 14에 있어서, 상기 제1 캐시 컨트롤러는:
상기 제1 데이터의 상기 제1 캐시의 엔트리로부터 상기 제2 캐시의 엔트리로의 전달 후에 상기 제2 캐시에서 수신된 메모리 액세스 요청(222)에 응답하여 상기 제2 캐시에서 교체를 위해 상기 제2 데이터를 선택하도록 더 구성된, 프로세서.
15. The system of claim 14, wherein the first cache controller comprises:
In response to a memory access request (222) received in the second cache after transfer of the first data from an entry in the first cache to an entry in the second cache, Gt; further comprising: < / RTI >
청구항 15에 있어서, 상기 제1 캐시 컨트롤러는:
상기 제1 캐시의 엔트리의 상기 유효성 상태를 저장하고;
상기 저장된 유효성 상태에 기반하여 상기 제2 데이터를 선택하도록 더 구성된, 프로세서.
16. The system of claim 15, wherein the first cache controller comprises:
Store the validity state of an entry in the first cache;
And to select the second data based on the stored validity state.
청구항 16에 있어서, 상기 제1 캐시 컨트롤러는:
데이터가 상기 제1 캐시의 엔트리에 저장되었다는 신호에 응답하여 상기 저장된 유효성 상태를 업데이트하도록 더 구성된, 프로세서.
17. The system of claim 16, wherein the first cache controller comprises:
And to update the stored validity state in response to a signal that data has been stored in the entry of the first cache.
청구항 14에 있어서, 상기 제1 캐시 컨트롤러는:
상기 제2 캐시의 엔트리의 에이지 값에 더 기반하여 교체를 위해 상기 제1 데이터를 선택하도록 더 구성된, 프로세서.
15. The system of claim 14, wherein the first cache controller comprises:
And to select the first data for replacement based further on an age value of an entry in the second cache.
청구항 14에 있어서, 상기 제1 캐시 컨트롤러는:
교체를 위해 선택된 상기 제1 데이터를 상기 제2 캐시로부터 상기 제1 캐시로 전달하도록 더 구성된, 프로세서.
15. The system of claim 14, wherein the first cache controller comprises:
And to transfer the first data selected for replacement from the second cache to the first cache.
청구항 14에 있어서,
제3 캐시(120), 상기 제1 캐시 컨트롤러는 상기 제1 데이터를 상기 제2 캐시의 엔트리로부터 상기 제3 캐시의 엔트리로 전달하도록 구성되고; 및
상기 제2 캐시의 엔트리들의 가용성(availability)을 고려하지 않고 상기 제3 캐시에서 교체를 위해 데이터를 선택하도록 구성된 제2 캐시 컨트롤러(122)를 더 포함하는, 프로세서.
15. The method of claim 14,
A third cache 120, the first cache controller is configured to transfer the first data from an entry in the second cache to an entry in the third cache; And
Further comprising a second cache controller (122) configured to select data for replacement in the third cache without considering the availability of entries in the second cache.
KR1020187035192A 2016-06-13 2016-09-14 Cache entry replacement based on availability of entries in other caches KR102453192B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/180,807 2016-06-13
US15/180,807 US10152425B2 (en) 2016-06-13 2016-06-13 Cache entry replacement based on availability of entries at another cache
PCT/US2016/051661 WO2017218022A1 (en) 2016-06-13 2016-09-14 Cache entry replacement based on availability of entries at another cache

Publications (2)

Publication Number Publication Date
KR20190008269A true KR20190008269A (en) 2019-01-23
KR102453192B1 KR102453192B1 (en) 2022-10-11

Family

ID=60572796

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187035192A KR102453192B1 (en) 2016-06-13 2016-09-14 Cache entry replacement based on availability of entries in other caches

Country Status (6)

Country Link
US (1) US10152425B2 (en)
EP (1) EP3433743B1 (en)
JP (1) JP6630449B2 (en)
KR (1) KR102453192B1 (en)
CN (1) CN109154912B (en)
WO (1) WO2017218022A1 (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10268558B2 (en) * 2017-01-13 2019-04-23 Microsoft Technology Licensing, Llc Efficient breakpoint detection via caches
US10528519B2 (en) * 2017-05-02 2020-01-07 Mellanox Technologies Ltd. Computing in parallel processing environments
US10534710B2 (en) * 2018-06-22 2020-01-14 Intel Corporation Non-volatile memory aware caching policies
US10740220B2 (en) 2018-06-27 2020-08-11 Microsoft Technology Licensing, Llc Cache-based trace replay breakpoints using reserved tag field bits
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
US20220374431A1 (en) * 2021-05-21 2022-11-24 Oracle International Corporation Techniques for a deterministic distributed cache to accelerate sql queries
US11822480B2 (en) * 2021-08-31 2023-11-21 Apple Inc. Criticality-informed caching policies
US11886342B2 (en) * 2021-12-01 2024-01-30 International Business Machines Corporation Augmenting cache replacement operations

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120254550A1 (en) * 2011-04-01 2012-10-04 Jayesh Gaur Bypass and insertion algorithms for exclusive last-level caches

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69629331T2 (en) 1995-06-02 2004-02-12 Sun Microsystems, Inc., Mountain View System and method for providing a flexible storage hierarchy
US20070186045A1 (en) * 2004-07-23 2007-08-09 Shannon Christopher J Cache eviction technique for inclusive cache systems
US8214601B2 (en) * 2004-07-30 2012-07-03 Hewlett-Packard Development Company, L.P. Purging without write-back of cache lines containing spent data
US20060155934A1 (en) * 2005-01-11 2006-07-13 Ramakrishnan Rajamony System and method for reducing unnecessary cache operations
US20070094450A1 (en) * 2005-10-26 2007-04-26 International Business Machines Corporation Multi-level cache architecture having a selective victim cache
US7774549B2 (en) * 2006-10-11 2010-08-10 Mips Technologies, Inc. Horizontally-shared cache victims in multiple core processors
US9058272B1 (en) * 2008-04-25 2015-06-16 Marvell International Ltd. Method and apparatus having a snoop filter decoupled from an associated cache and a buffer for replacement line addresses
US8782348B2 (en) 2008-09-09 2014-07-15 Via Technologies, Inc. Microprocessor cache line evict array
US8949540B2 (en) 2009-03-11 2015-02-03 International Business Machines Corporation Lateral castout (LCO) of victim cache line in data-invalid state
US8285936B2 (en) 2009-10-20 2012-10-09 The Regents Of The University Of Michigan Cache memory with power saving state
US9176879B2 (en) 2013-07-19 2015-11-03 Apple Inc. Least recently used mechanism for cache line eviction from a cache memory
US20160055100A1 (en) * 2014-08-19 2016-02-25 Advanced Micro Devices, Inc. System and method for reverse inclusion in multilevel cache hierarchy
US9990289B2 (en) * 2014-09-19 2018-06-05 Advanced Micro Devices, Inc. System and method for repurposing dead cache blocks
US9836399B2 (en) * 2015-03-27 2017-12-05 Intel Corporation Mechanism to avoid hot-L1/cold-L2 events in an inclusive L2 cache using L1 presence bits for victim selection bias

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120254550A1 (en) * 2011-04-01 2012-10-04 Jayesh Gaur Bypass and insertion algorithms for exclusive last-level caches

Also Published As

Publication number Publication date
EP3433743A1 (en) 2019-01-30
CN109154912A (en) 2019-01-04
KR102453192B1 (en) 2022-10-11
US20170357446A1 (en) 2017-12-14
JP6630449B2 (en) 2020-01-15
EP3433743B1 (en) 2023-02-15
WO2017218022A1 (en) 2017-12-21
EP3433743A4 (en) 2019-11-06
JP2019517689A (en) 2019-06-24
CN109154912B (en) 2024-01-12
US10152425B2 (en) 2018-12-11

Similar Documents

Publication Publication Date Title
KR102453192B1 (en) Cache entry replacement based on availability of entries in other caches
US8745334B2 (en) Sectored cache replacement algorithm for reducing memory writebacks
US7380065B2 (en) Performance of a cache by detecting cache lines that have been reused
CN109478165B (en) Method for selecting cache transfer strategy for prefetched data based on cache test area and processor
JP4829191B2 (en) Cash system
US20180113815A1 (en) Cache entry replacement based on penalty of memory access
US12026099B2 (en) System and method for storing cache location information for cache entry transfer
CN109478163B (en) System and method for identifying a pending memory access request at a cache entry
EP3433744A1 (en) Setting cache entry age based on hints from another cache level
US10503640B2 (en) Selective data retrieval based on access latency
US20190121747A1 (en) Cache replacement policy based on non-cache buffers

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
GRNT Written decision to grant