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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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
본 개시는 일반적으로 프로세서들에 관한 것이며, 보다 구체적으로는 프로세서에서의 캐시 관리에 관한 것이다. 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
프로세서 코어(110)는 명령들을 실행하기 위한 하나 이상의 명령 파이프라인들을 포함하고, 그렇게 함으로써 전자 디바이스를 위한 임무들을 수행한다. 프로세서 코어(110)는 예컨대 레지스터 파일의 형태로 일정량의 통합 메모리(integral memory)를 가질 수 있지만, 그러한 메모리는 통상적으로 저장 용량이 제한된다. 따라서, 명령들을 실행하기 위해, 프로세서 코어(110)는 L1 캐시(120), L2 캐시(130), L3 캐시(140) 및 주 메모리(150)를 포함하는, 프로세싱 시스템(100)의 메모리 계층으로부터 데이터를 저장 및 검색한다. 특히, 명령들을 실행하는 과정에서, 프로세서 코어(110)는 메모리 계층에 데이터를 저장(저장 동작) 또는 이로부터 로드(판독 동작)하기 위해 메모리 액세스 요청들로 지칭되는 동작들을 생성한다. L1 캐시(120), L2 캐시(130), L3 캐시(140) 및 주 메모리(150)는 여기에서 더 기술되는 바와 같이 메모리 액세스 요청들을 만족시키기 위해 함께 동작한다. The
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 캐시(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 캐시(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 캐시(120), L2 캐시(130) 및 L3 캐시(140) 각각은 세트 연관 캐시(set associative cache)이고, 여기서 각각의 캐시는 다수의 세트들로 분할된다. 각각의 세트는 다수의 웨이(way)들을 포함하고, 각각의 웨이는캐시 라인을 저장할 수 있는 캐시 엔트리에 대응한다. 각각의 세트는 메모리 주소들의 서브셋들과 연관된 캐시 라인만을 저장하고, 여기서 세트와 연관된 서브셋은 인덱스로 지칭되는 메모리 주소의 부분에 기반하여 대응하는 캐시 컨트롤러에 의해 확인된다. 세트 연관성을 사용함으로써, 캐시들(120, 130, 140)은 캐시 미스들 및 캐시 히트들의 비교적 빠른 확인을 용이하게 한다. 또한, 일부 실시예들에서 L3 캐시(140)는 L2 캐시(130)보다 커서 그 세트들의 각각에 대한 더 큰 인덱스 크기를 사용할 수 있다. In some embodiments, each of the
일부 실시예들에서, 캐시들(120, 130, 140)은 일반적으로 그들이 주어진 시점에서 프로세서 코어(110)에 의해 요청되거나 요청될 수 있는 모든 데이터를 저장할 수 없어서, 전술한 메모리 계층을 통해 데이터가 전달되도록요청하도록 크기지어진다. 데이터 일관성(coherency) 및 메모리 계층을 통한 데이터의 효율적인 전달을 보장하기 위해, 캐시 컨트롤러들(122, 132, 142) 각각은 세트 내에수신된 캐시 라인을 저장하는 것이 가능한 엔트리가 있는지 확인하고, 그렇지 않으면 교체를 위해 세트 내의 엔트리들 중 하나를 선택하는 교체 정책을 실행한다. 캐시 엔트리의 가용성은 엔트리의 유효 상태로 지칭되는, 엔트리와 연관된 상태 정보에 의해 나타내진다. 특히, 무효인 유효성 상태를 갖는 캐시 라인(여기에서 무효인 캐시 라인으로 지칭되는)은 데이터를 저장하는데 이용 가능하고 유효인 유효성 상태를 갖는 캐시 라인 (본 문서에서 유효인 캐시 라인으로 지칭됨)은 교체되지 않는다면 데이터를 저장하는데 이용 가능하지 않은 것이다. 들어오는 캐시 라인으로 엔트리에서 유효인 캐시 라인을 교체하기 위해, 캐시에 대한 캐시 컨트롤러는 먼저 유효인 캐시 라인을 메모리 계층의 하나 이상의 다른 레벨로 전달함으로써 퇴거시키고, 그리고는 들어오는 캐시 라인을 엔트리에 저장한다. In some embodiments, the
예시를 위해, 프로세싱 시스템(100)의 리셋에 응답하여, L1 캐시(120), L2 캐시(130) 및 L3 캐시(140) 각각의 모든 캐시 라인들은 그들의 각각의 캐시 컨트롤러에 의해 무효인 상태로 설정된다. 캐시 엔트리가 주 메모리(150)로부터 검색된 캐시 라인으로 채워질 때, 대응하는 캐시 컨트롤러는 캐시 엔트리를 유효인 상태로 설정한다. 무효인 상태로 설정된 캐시 라인을 포함하는 캐시 웨이는 들어오는 캐시 라인을 수신할 수도 있으며, 이것은 무효인 캐시 라인을 옮겨놓거나(displace) 또는 겹쳐쓸 것이다(overwrite). 캐시가 저장될 캐시 라인을 수신하면, 캐시 라인이 저장될 캐시 웨이를 선택해야 한다. 들어오는 캐시 라인과 연관된 캐시 세트가 이용 가능한 공간이 있으면 (즉, 무효인 캐시 라인들을 포함하는 것으로 나타나는 하나 이상의 캐시 웨이들을 갖는다면), 들어오는 캐시 라인은 무효인 웨이들 중 하나에 저장될 것이다. 하지만, 들어오는 캐시 라인과 연관된 세트 내의 모든 캐시 웨이들이 유효로 나타나면, 캐시 컨트롤러는 들어오는 캐시 라인을 위한 공간을 만들기 위해 퇴거될 새로운 캐시 라인과 연관된 세트의 캐시 라인을 선택한다. For example, in response to a reset of the
교체를 위한 캐시 라인을 선택하기 위해 캐시 컨트롤러에 의해 사용되는 특정 기준은 교체 정책으로 지칭된다. 예를 들어, 캐시 컨트롤러(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
일부 실시예들에서, L2 캐시 컨트롤러(132)는 L3 캐시(140)에서의 무효인 캐시 라인들의 위치에 기반하여 교체 정책을 실행할 수 있다. 특히, L2 캐시 컨트롤러(132)는 퇴거를 위해 L3 캐시(140)로 전달된 때, 무효인 캐시 웨이에서 저장될 거 같은 캐시 라인을 퇴거를 위한 캐시 라인으로 선택할 수 있다. L3 캐시(140)는 그러므로 L2 캐시(130)으로부터 들어오는 캐시 라인을 위한 공간을 만들기 위해 유효인 캐시 라인을 퇴거할 필요가 없다. 따라서, L3 캐시(140)에서 무효인 캐시 라인들의 위치에 적어도 부분적으로 기반하여 퇴거를 위한 캐시 라인을 선택함으로써, L2캐시 컨트롤러(132)는 L3 캐시에서의 퇴거들의 수를 감소시킬 수 있어, 전력을 보전하고 메모리 효율성을 향상시킨다. In some embodiments, the
예시를 위해, 동작시 프로세서 코어(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
요청된 캐시 라인이 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 캐시(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 캐시(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
프로세싱 시스템(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
도 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
메모리 액세스 요청(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
L2 캐시(130)로부터 데이터를 수신하는 것에 응답하여, L3 캐시 컨트롤러(142)는 데이터를 저장하기 위해 캐시 엔트리(243)를 선택한다. 캐시 엔트리(243)가 무효인 상태에 있는 것으로 나타나므로, L3 캐시(140)는 들어오는 데이터를 수용하기 위해 어느 유효한 데이터를 퇴거할 필요가 없다. 그러므로, 데이터가 무효인 것으로 나타나는 L3 캐시(140)의 엔트리에 저장될 것인지 여부에 기초하여 퇴거를 위한 데이터를 선택함으로써, L2 캐시(130)는 L3 캐시(140)에서의 퇴거들의 수를 감소시키고 프로세싱 시스템(100)에서의 전체적인 메모리 효율성을 향상시킨다. In response to receiving data from the
도 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
엔트리(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
도 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
도 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
일부 실시예들에서, 테크닉들의 특정 양태들은 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서들에 의해 실현될 수 있다. 소프트웨어는 비-일시적인 컴퓨터 판독 가능 저장 매체 상에 저장되거나 그렇지 않으면 유형적으로 구현된 실행 가능 명령들의 하나 이상의 세트를 포함한다. 소프트웨어는 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서를 조작하여 전술한 테크닉들 중 하나 이상의 양태를 수행하는 명령들 및 특정 데이터를 포함할 수 있다. 비-일시적 컴퓨터 판독 가능 저장 매체는 예를 들어, 자기 또는 광학 디스크 저장 디바이스, 플래시 메모리와 같은 고체 상태 저장 디바이스들, 캐시, 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)
상기 프로세싱 시스템의 제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 캐시의 엔트리로부터 상기 제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 >
상기 제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 >
데이터가 상기 제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.
상기 제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.
교체를 위해 상기 제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 데이터를 상기 제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 >
상기 데이터가 상기 제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.
상기 엔트리의 유효성 상태가 무효인 상태인 것을 확인한 것에 더 응답하여 상기 제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.
상기 제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.
퇴거를 위해 선택된 상기 데이터를 상기 제1 캐시로부터 상기 제2 캐시로 전달하는 것을 더 포함하는, 방법. The method of claim 9,
And forwarding the data selected for eviction from the first cache to the second cache.
상기 제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.
제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.
상기 제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 >
상기 제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.
데이터가 상기 제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.
상기 제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.
교체를 위해 선택된 상기 제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.
제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.
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)
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)
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)
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 |
-
2016
- 2016-06-13 US US15/180,807 patent/US10152425B2/en active Active
- 2016-09-14 JP JP2018555745A patent/JP6630449B2/en active Active
- 2016-09-14 CN CN201680086077.2A patent/CN109154912B/en active Active
- 2016-09-14 EP EP16905671.0A patent/EP3433743B1/en active Active
- 2016-09-14 KR KR1020187035192A patent/KR102453192B1/en active IP Right Grant
- 2016-09-14 WO PCT/US2016/051661 patent/WO2017218022A1/en active Application Filing
Patent Citations (1)
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 |