KR102575913B1 - 비대칭 세트 결합된 캐시 - Google Patents
비대칭 세트 결합된 캐시 Download PDFInfo
- Publication number
- KR102575913B1 KR102575913B1 KR1020177023939A KR20177023939A KR102575913B1 KR 102575913 B1 KR102575913 B1 KR 102575913B1 KR 1020177023939 A KR1020177023939 A KR 1020177023939A KR 20177023939 A KR20177023939 A KR 20177023939A KR 102575913 B1 KR102575913 B1 KR 102575913B1
- Authority
- KR
- South Korea
- Prior art keywords
- cache
- way
- mapped
- memory
- unit
- 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/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating 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/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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- 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
- 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/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
실시예들은 일반적으로 직접-매핑된 캐시 부 및 멀티-웨이 캐시 부를 포함하는 비대칭 세트 결합된 캐시에 관한 것이다. 프로세서는 데이터의 처리를 위한 하나 이상의 처리 코어들; 및 하나 이상의 처리 코어들에 대한 메인 메모리로부터의 데이터를 캐싱하는 캐시 메모리를 포함하고, 캐시 메모리는 직접-매핑된 캐시를 포함하는 제1 캐시 부 및 멀티-웨이 캐시를 포함하는 제2 캐시 부를 포함한다. 캐시 메모리는 제1 캐시 부 및 제2 캐시 부에 비대칭 세트들을 포함하고, 제1 캐시 부는 제2 캐시 부보다 크다. 캐시 메모리에 대한 조정된 교체 정책은 제1 캐시 부 및 제2 캐시 부에서 데이터의 교체를 제공한다.
Description
본 명세서에 설명된 실시예들은 일반적으로 전자 디바이스들의 분야에 관한 것으로, 보다 상세하게는 비대칭 세트 결합된 캐시(asymmetric set combined cache)에 관한 것이다.
컴퓨터 메모리에서, 캐시 메모리(간단히 캐시라고도 함)는, 메모리 위치들이 단일 위치에 매핑되는 직접-매핑된 캐시들, 및 메모리 위치들이 특정 세트의 위치들에 매핑되는 멀티-웨이 캐시들(multi-way caches)을 포함하는 다양한 방식으로 구현될 수 있다.
직접-매핑된 캐시는 캐시 구현의 단순함으로 인해 특정 이점들을 갖는다. 동작시에, 메모리 요소가 존재하는지를 결정하기 위해서 단일 캐시 위치만이 탐색될 필요가 있다. 그러나 직접-매핑된 캐시는 낮은 연관성의 단점을 가지게 되어, 결과 피닝(result pinning)(캐시에서 어드레스들 잠금)도 문제가 된다.
반대로, 멀티-웨이 캐시는 연관성 및 피닝 문제들을 해결할 수 있다. 그러나 멀티-웨이 캐시는 보다 복잡하며, 세트 내의 각각의 캐시 위치가 탐색 되어야만 하기 때문에 요소가 캐시에 존재하는지를 결정하기 위해 더 많은 탐색을 필요로 한다.
또한, 다수의 캐시들의 사용은 컴포넌트들의 설계 및 동작에 상당한 복잡성을 추가한다.
본 명세서에 설명된 실시예들은 첨부 도면들의 도면들에서 제한이 아닌 예로서 예시되었으며, 도면들에서 동일한 참조 번호들은 유사한 요소들을 나타낸다.
도 1은 실시예에 따른 비대칭 세트 결합된 캐시의 예시이다.
도 2는 직접-매핑된 캐시의 예시이다.
도 3은 멀티-웨이 캐시 메모리의 예시이다.
도 4는 실시예에 따른, 조정된 교체 정책을 갖는 비대칭 세트 결합된 캐시를 포함하는 프로세서의 예시이다.
도 5는 결합된 캐시 동작을 위한 프로세스를 예시하는 흐름도이다.
도 6a는 실시예에 따른, 결합된 의사 LRU의 제1 부분의 계산을 예시하는 흐름도이다.
도 6b는 실시예에 따른, 결합된 의사 LRU의 제2 부분의 계산을 예시하는 흐름도이다.
도 7은 실시예에 따른, 결합된 캐시에서 교체 우선순위를 예시하는 흐름도이다.
도 8은 결합된 캐시 메모리를 포함하는 전자 장치 또는 시스템의 실시예의 예시이다.
도 1은 실시예에 따른 비대칭 세트 결합된 캐시의 예시이다.
도 2는 직접-매핑된 캐시의 예시이다.
도 3은 멀티-웨이 캐시 메모리의 예시이다.
도 4는 실시예에 따른, 조정된 교체 정책을 갖는 비대칭 세트 결합된 캐시를 포함하는 프로세서의 예시이다.
도 5는 결합된 캐시 동작을 위한 프로세스를 예시하는 흐름도이다.
도 6a는 실시예에 따른, 결합된 의사 LRU의 제1 부분의 계산을 예시하는 흐름도이다.
도 6b는 실시예에 따른, 결합된 의사 LRU의 제2 부분의 계산을 예시하는 흐름도이다.
도 7은 실시예에 따른, 결합된 캐시에서 교체 우선순위를 예시하는 흐름도이다.
도 8은 결합된 캐시 메모리를 포함하는 전자 장치 또는 시스템의 실시예의 예시이다.
본 명세서에 설명되는 실시예들은 일반적으로 비대칭 세트 결합된 캐시에 관한 것이다.
이런 설명의 목적상:
"캐시 메모리" 또는 "캐시"는 메인 메모리와 같은 다른 메모리로부터의 자주 사용되는 정보를 저장하는 메모리를 의미한다.
"메인 메모리" 또는 "1차 메모리"는 프로세서 또는 컴퓨터가 주로 프로그램들 및 데이터에 액세스하는 컴퓨터 메모리이다. 메인 메모리는 일반적으로 랜덤 액세스 메모리(RAM)이다.
보다 구체적으로, CPU 캐시는 자주 사용되는 어드레스들에 액세스하기 위해 컴퓨터의 중앙 처리 유닛(CPU)에 의해 이용하는 캐시이므로, 메인 메모리로부터의 데이터에 대한 액세스들을 줄인다. 캐시는 자주 사용되는 메인 메모리 위치들로부터의 데이터를 저장하는 더 작고 더 빠른 메모리이다. 데이터 캐시는 일반적으로 더 많은 캐시 레벨들의 계층 구조로서 조직화되고, 여기서 L1은 프로세서 코어에 가장 가까운 작고 빠른 캐시이고, L2 및 L3은 CPU에서 점진적으로 더 멀리 떨어지는 점진적으로 더 크고 느린 캐시들이다.
"직접-매핑된 캐시(direct-mapped cache)" 또는 "직접-매핑된 메모리 캐시"는 메모리의 임의의 특정 요소가 캐시 메모리 내의 특정한 단일 캐시 위치에 매핑되는 캐시를 의미한다.
"멀티-웨이 캐시(multi-way cache)" 또는 "멀티-웨이 메모리 캐시"는 메모리의 임의의 특정 요소가 캐시 메모리 내의 다수의 캐시 위치들의 특정 세트에 매핑되는 캐시를 의미한다. 예를 들어, 2-웨이 메모리 캐시는 메인 메모리 내의 특정 위치가 캐시 메모리 내의 2개의 메모리 위치들의 세트에 매핑되는 캐시이다. 대조적으로, 완전 연관 캐시 메모리는 메인 메모리 내의 임의의 특정 위치가 캐시 메모리 내의 임의의 위치에 캐싱될 수 있는 캐시 메모리이다.
2LM(근거리 메모리 및 원거리 메모리 포함하는 2-레벨 메모리) 기술의 특정 적용에서, 캐시 구현을 위한 솔루션들은 다음을 포함할 수 있다:
(1) 매우 큰 태그를 필요로 하는 멀티-웨이 캐시(Multi-way cache)(MW). 매우 큰 근거리 메모리 캐시들에서는 중앙 처리 유닛(CPU) 다이 상에서 모든 태그를 유지하는 것이 비현실적이다.
(2) 직접-매핑된 캐시(Direct-mapped cache)(DM), 여기서 직접-매핑된 캐시는 메타데이터 내의 태그에 대한 고 대역폭 메모리(High-Bandwidth Memory)(HBM)에서 스페어 에러 정정 코드(error-correcting code)(ECC) 비트들을 이용할 수 있다(2013년 10월, JEDEC 표준 JESD235, "High Bandwidth Memory(HDM) DRAM")
처리 환경에서, 직접-매핑된 캐시는 흐름 단순성과, 캐시 태그들에 메모리 메타데이터(스페어-ECC 비트들)를 사용할 수 있는 간단한 구현의 장점을 갖는다. 그러나 직접-매핑된 캐시는 낮은 연관성의 단점을 가지게 되어, 결과 피닝(캐시에서 어드레스들 잠금)도 문제가 된다. 반대로, 멀티-웨이 캐시는 연관성 및 피닝 문제들을 해결할 수 있다. 그러나 일반적으로 멀티-웨이 캐시는 캐시에 필요한 캐시 태그들을 제공하기 위해 메모리 메타데이터 비트들을 이용할 수 없고, 결과적으로 매우 커지게 될 수 있다.
이러한 문제들은 직접-매핑된 캐시와 협력하여 동작하는 보완적인 멀티-웨이 캐시에 의해 적어도 부분적으로 해결될 수 있다. 특정 솔루션은 멀티-웨이 캐시를 주된 직접-매핑된 캐시에 대한 "희생 캐시(victim cache)"로 이용하는 것을 포함할 수 있다. 일반적으로, 희생 캐시는 교체시 CPU 캐시로부터 축출된(evicted) 데이터(예를 들어, 캐싱된 데이터의 라인들)를 유지하는 데 사용되는 캐시이다. 따라서, 멀티-웨이 캐시가 직접-매핑된 캐시에 대한 희생 캐시의 역할을 하는 경우, 데이터가 직접-매핑된 캐시에서 교체될 때 이는 멀티-웨이 캐시에 기입된다. 이 흐름은 연관성 문제들을 해결하고 캐시에서 데이터의 피닝을 허용한다. 그러나 구현 비용은 주된 직접-매핑된 캐시와 희생 다중 사용 캐시 간의 수많은 전송이다.
일부 실시예들에서, 단일 결합된 캐시는 제1 직접-매핑된 부 및 제2 멀티-웨이 부를 포함하며, 여기서 직접-매핑된 부 및 멀티-웨이 부는 조정된 교체 정책에 의해 관리된다. 일부 실시예들에서, 조정된 교체 정책은, 새로 채워진 데이터가 교체 정책에 따라 캐시 부들 중 어느 하나에서 데이터를 교체할 수 있는 것을 제공한다. 이러한 방식으로, 희생 캐시 구현과 달리, 2개의 캐시들 간의 데이터 전송들이 회피될 수 있다. 일부 실시예들에서, 따라서, 솔루션은 캐시 부들의 데이터 어레이들 사이의 임의의 데이터 전송들 없이 2가지 솔루션들을 양쪽 캐시 부들을 처리하는 조정된 교체 정책과 결합하는 것을 포함한다.
직접-매핑된 캐시 부와 멀티-웨이 캐시 부를 결합하는 비대칭 캐시 솔루션의 구현은 간단한 확장성을 허용한다. 일부 실시예들에서, 멀티-웨이 캐시 부의 크기는 직접-매핑된 캐시 부의 충돌-레이트 및 피닝 요구 사항들 중 하나 이상에 의해 적어도 부분적으로 도출된다. 2개의 캐시 부들은, 피닝 요구 사항들이 메모리 유닛들 간에 크게 변하지 않기 때문에 스케일링을 함께 필요로 하지 않으며, 직접-매핑된 충돌은 상대적으로 작은 멀티-웨이 캐시로 해결될 수 있다. 직접-매핑된 부의 오버헤드가 최소화되므로, 이런 부는 비교적 낮은 비용으로 임의의 크기로 확장될 수 있다.
도 1은 실시예에 따른 비대칭 세트 결합된 캐시의 예시이다. 일부 실시예들에서, 직접-매핑된 캐시 및 멀티-웨이 캐시의 각각의 문제들을 극복하기 위해, 비대칭 세트 결합된 메모리(100)(결합된 캐시라고도 칭함)가 형성되고 이용된다. 일부 실시예들에서, 결합된 캐시(100)는 2개의 캐시 부들 - 제1 직접-매핑된 부(110)(제1 캐시 부라고도 칭함) 및 제2 멀티-웨이 부(120)(제1 캐시 부라고도 칭함) - 로 분할되며, 여기서 제1 직접-매핑된 부는 제2 멀티-웨이 부보다 크다. 제1 캐시 부(110) 및 제2 캐시 부(120)는 단순화를 위해 예시되었으며, 결합된 캐시(100) 내에서 제1 캐시 부(110) 및 제2 캐시 부(120)의 스케일 또는 위치를 예시하기 위한 것이 아니다. 제2 멀티-웨이 부는 전술한 바와 같은 2-웨이 캐시일 수 있지만, 실시예들은 멀티-웨이 캐시에서 특정한 수의 웨이들로 제한되지 않는다. 일부 실시예들에서, 결합된 캐시는 메인 메모리(130)로부터 데이터를 캐싱하도록 동작 가능하다. 메인 메모리는 동적 랜덤 액세스 메모리(DRAM)를 포함할 수 있지만, 이에 제한되는 것은 아니다.
도 2는 직접-매핑된 캐시의 예시이다. 도 1에 예시된 직접-매핑된 부(110)와 같은 직접-매핑된 캐시는 메모리의 임의의 특정 위치가 캐시 메모리 내의 특정 캐시 위치에 매핑되는 캐시이다. 예를 들어, 도 2는 메인 메모리(230)의 위치들에 포함된 데이터의 캐싱을 위한 직접-매핑된 캐시 메모리(210)를 예시하며, 이런 간단한 예에서 캐시 메모리(210)는 4개의 캐시 라인들을 포함하고 메인 메모리(230)는 16개의 데이터 위치들을 포함한다. 예시된 바와 같이, 캐시 메모리의 각각의 캐시 라인은 유효 필드(임의의 데이터가 캐시 라인에 저장되었는지를 나타내는 유효 비트에 대해 "V"로 표시됨), 수정된(또는 더티(dirty)) 필드(메모리의 대응하는 블록이 변경되었는지를 나타내는 수정된 비트에 대해, "M"으로 표시됨), 엔트리에 대한 태그를 유지하기 위한 태그 필드, 및 캐시 데이터를 유지하기 위한 데이터 필드를 적어도 포함한다. 메인 메모리(230)의 각각의 위치는 캐시 메모리에 저장하기 위해 단일 캐시 라인에 매핑된다. 예를 들어, 메인 메모리의 위치 0001은 캐시 메모리(210)의 라인 01에 매핑된다. 그러나 위치 0101은 또한 직접-매핑된 캐시 메모리(210) 내의 동일한 라인 01뿐만 아니라 메인 메모리의 소정의 다른 위치들에도 매핑된다. 이러한 이유로, 데이터는 액세스되는 메모리 위치들에 따라 직접-매핑된 캐시 메모리에서 자주 교체될 수 있다.
도 3은 멀티-웨이 캐시 메모리의 예시이다. 도 3에 도시된 바와 같이, 도 1에 예시된 제2 멀티-웨이 부(120)와 같은 멀티-웨이 캐시 메모리는 캐시 동작을 위한 다수의 웨이들을 포함한다. 멀티-웨이 캐시는 메인 메모리(330)로부터의 데이터의 캐싱을 위한 2-웨이 캐시 메모리(320)를 포함할 수 있지만, 이에 제한되지는 않는다. 2-웨이 캐시 메모리(320)를 사용하면, 메인 메모리(330)의 각각의 위치는 캐시 메모리(320)의 2개의 캐시 라인들에 매핑된다.
예를 들어, 메인 메모리(330)의 위치 0001은 2개의 웨이들 각각에서 멀티-웨이 캐시 메모리(110)의 캐시 라인에 매핑되고, 메인 메모리(330)의 0001은 멀티-웨이 캐시 메모리(330)의 라인 01(웨이 = 0 및 세트 = 1) 및 라인 11(웨이 = 1 및 세트 = 1)에 매핑된다.
다시 도 1을 참조하면, 결합된 캐시(100)는 도 2에 예시된 메인 메모리(230) 또는 도 3에 예시된 메인 메모리(330)와 같은 메인 메모리(130)로부터 데이터를 캐싱하도록 동작할 수 있다. 결합된 캐시(100)는 프로세서, 예를 들어 컴퓨팅 시스템을 위한 CPU의 일부일 수 있다. 일부 실시예들에서, 작은 멀티-웨이 캐시 부 및 큰 직접-매핑된 부를 포함하는 결합된 캐시는 작은 온-다이 제어 어레이(최소 최근 사용(Least Recently Used)(LRU) 구현을 위한 LRU 비트들, 유효 비트 V, 수정된(더티) 비트 M, 및 태그를 포함함)만을 필요로 하며, 근거리 메모리 칩들(near-memory chips)의 메타데이터로서 구현될 수 있다.
비대칭 세트 결합된 캐시의 실시예의 구현에서, 다음의 특징들이 적용될 수 있다:
(a) 결합된 캐시(100)가 섹터화된 캐시(sectored cache)인 경우, 캐시 라인(CL) 또는 섹터화된 캐시 라인(sectored cache line)(SPL)에 대한 결합된 캐시(100)의 양쪽 캐시 부들(110 및 120)에는 동일한 크기가 존재한다.
(b) 결합된 캐시(100)의 총 크기:
Size_Total = 2n CL들 또는 2n SPL들 [1]
(c) 멀티-웨이 부(120)의 세트들의 수:
Sets_MW = 2m [2]
(d) 멀티-웨이 부(120)에 대한 웨이들의 수:
Ways_MW = 2W [3]
(e) 결합된 캐시(100)의 크기에 대한 인자들, 세트들의 수 및 웨이들의 수 간의 관계:
n > m + w [4]
다음은 결합된 캐시에 대한 방정식들 [1] 내지 [4]에 제공된 상기 특징들에 기초하여 결론지어질 수 있다:
(a) 직접-매핑된 부(110)의 크기:
Size_DM = 2n - (2(m + w)) [5]
(b) 세트들의 직접-매핑된 수와 세트들의 멀티-웨이 수 간의 비율은 다음과 같다:
r = (2n-(2(m + w)))/(2(m + w)) = (2(n - m - w))-1 [6]
여기서 r은 항상 양의 정수이다.
(c) 직접-매핑된-세트-msb(most significant bit)들(direct-mapped-set-msb's)(dmsm)의 계산은 다음과 같다:
dmsm = tag mod r [7]
여기서 태그는 어드레스 CL_address {max-address-bit : n}임
(d) 값 CL/SPL은 2l이다. 간략화를 위해, CL_address는 어드레스 비트들 {max-address-bit : 1}일 수 있거나, 또는:
CL_address == address >>1(오른쪽 시프트, 0 채우기) [8]
일부 실시예들에서, 비대칭 세트 결합된 캐시에 캐싱될 메인 메모리의 각각의 어드레스는 다음 각각에 매핑될 수 있다:
(a) 멀티-웨이 세트 #(CL_address 비트들 {m - 1 : 0})에서 (2W) 웨이들 중 하나; 및
결과적으로, 멀티-웨이 부 내의 각각의 세트에 대해, 동일한 어드레스 비트들 CL_address {m-1: 0}을 갖는 세트들을 연관시키는 것이 가능하다. 즉, 멀티-웨이 캐시 내의 각각의 세트에 매핑되는 직접-매핑된 부에는 (r * 2(n - m - w))개의 세트들이 존재한다.
결합 비대칭 세트 캐시의 특정 예에서, 캐시의 특징은 다음과 같을 수 있다:
총 메모리: 4 M CL들(n = 22);
16개의 웨이들(w = 4);
멀티-웨이 캐시: 1 M CL들(m = 16);
직접-매핑된 캐시 3 M CL들;
CL_address 비트들 29:0;
멀티-웨이 부에 대한 세트는 CL_address {15: 0}이다; 및
멀티-웨이 부 내의 각각의 세트에 대해, 동일한 어드레스 비트들 CL_address {15 : 0}를 갖는 48개의 연관된 세트들이 존재한다. 이것들은 다음과 같다:
(tag mod 3 = 0} * CL_address {19:16};
(tag mod 3 = 1) * CL_address {19:16}; 및
(tag mod 3 = 2} * CL_address {19:16}.
도 4는 실시예에 따른, 비대칭 세트 결합된 캐시를 포함하는 프로세서의 예시이다. 일부 실시예들에서, 예시되지 않은 다른 컴포넌트들에 추가하여, 프로세서(400)는, 데이터의 처리를 위한 하나 이상의 코어들(430) 및 자주 사용되는 데이터의 저장을 위한 하나 이상의 캐시 메모리들을 포함하고, 비대칭 세트 결합된 캐시(405)(결합된 캐시라고도 칭함)를 포함하고, 이는 제1 직접-매핑된 부(410)(제1 캐시 부라고도 칭함) 및 제2 멀티-웨이 부(420)(제2 캐시 부라고도 칭함)를 포함하며, 제1 직접-매핑된 부는 제2 멀티-웨이 부보다 크다. 도 1에서와 같이, 결합된 캐시(405)의 제1 캐시 부(410) 및 제2 캐시 부(420)는 간략화를 위해 예시된 것이지, 결합된 캐시(405) 내에서 제1 캐시 부(410) 및 제2 캐시 부(420)의 스케일 또는 위치, 또는 프로세서(400) 내에서 결합된 캐시의 스케일 또는 위치를 예시하기 위한 것이 아니다.
일부 실시예들에서, 결합된 캐시(405)는 제1 캐시 부(410) 및 제2 캐시 부(420)에 대한 조정된 교체 정책(450)에 종속되어 있다. 일부 실시예들에서, 조정된 교체 정책은 본 명세서에서 "결합된 의사 최소 최근 사용(combined pseudo least recently used)"(결합된 의사 LRU 또는 CP-LRU) 정책"으로서 언급될 수 있는 정책이며, 여기서 최소 최근 사용 정책들은 제1 직접-매핑된 부(410) 및 제2 멀티-웨이 부(420)에 저장된 데이터에 조정된 방식으로 적용된다. 그러나 조정된 교체 정책은 결합된 의사 LRU 구현에 제한되지 않으며, 다른 실시예들에서는 다른 교체 정책들을 구현할 수 있다. 일례에서, 대안적인 실시예는 제1 직접-매핑된 부(410) 또는 제2 멀티-웨이 부(420)에서 교체를 위해 선택된 위치가 랜덤하게 선택되는 랜덤 교체 알고리즘을 이용할 수 있다.
조정된 교체 정책(450)의 적용시, 일반적으로 LRU 적용은 CPU 다이 상에 구현되어야 하고, 직접-매핑된 세트당 1비트조차도 매우 비쌀 수 있고, 64바이트 캐시 라인에서 LRU는 메모리의 각각의 GB(기가바이트)마다 2MB(메가바이트)를 필요하거나 메모리의 8GB마다 16MB를 필요로 함에 유의한다. 일부 실시예들에서, 조정된 교체 정책은 도 4에서 LRU 비트들(425)로서 예시된 바와 같이, 제1 직접-매핑된 부(410)상의 LRU 비트들에 대한 필요성을 제거하고 이러한 목적을 위해 오히려 제2 멀티-웨이 부(420)만을 사용한다.
일부 실시예들에서, LRU 교체 정책을 이용하는 결합된 캐시(405)에 대한 조정된 교체 정책(450)은 최소 최근 사용(LRU) 비교들을 나타내기 위해 결합된 캐시(405)의 멀티-웨이 부(420)에서 각각의 웨이에 대한 2개의 LRU 비트들(425)을 구현한다. 일부 실시예들에서, 특정 웨이(여기서는 제1 웨이라고 칭함)를 위한 2-비트 MW-LRU의 비트들은 다음을 포함한다:
비트 0: 멀티-웨이 부의 제1 웨이 대 다른 웨이들의 엔트리를 비교하고, LRU가 제1 웨이에 저장됨을 나타낸다(MW-LRU);
비트 1: 제1 웨이 대 대응하는 직접 매핑된 위치의 엔트리를 비교하고, LRU가 제1 웨이에 위치함을 나타낸다(LRU-vs-DM); 및
직접 매핑된 세트당 LRU 비트들 없음.
그러나, 실시예들은 특정 비트 순서 또는 비트들의 수에 제한되지 않으며, 멀티-웨이 부의 웨이에 대한 추가 비트들을 포함할 수 있다.
결합된 의사 LRU 정책의 구현은, 멀티-웨이 엔트리들 사이 또는 멀티-웨이 엔트리들과 단일 직접-매핑된 세트 사이에서 결정들이 내려지는 사실에 기초한다. 직접 매핑은 메인 메모리 내의 임의의 위치가 단일 캐시 위치에 매핑되도록 보장하기 때문에 상이한 직접-매핑된 세트들 간에는 LRU 관계가 없다.
또한, LRU 비트들의 수는 비대칭 세트 결합된 캐시 내의 직접-매핑된 세트들의 수보다 작은 멀티-웨이 세트들의 수에 비례함에 유의한다. 멀티-웨이 캐시 부(420)의 크기는 결합된 캐시의 크기에 따라 선형적으로 스케일-업될 필요가 없으며, 따라서 LRU 비용은 직접-매핑된 캐시에 대한 종래의 LRU보다 훨씬 더 작다. 이런 특징은 CPU 상의 캐시에 대한 물리적 비용들을 크게 줄이기 위해 동작하는 다수의 GB들의 근거리 메모리 캐시에 매우 중요하다.
일부 실시예들에서, 결합된 캐시(405)에 대한 액세스시, 룩업 외에, 직접-매핑된 세트 선택(어드레스 & 태그 모드(mod) R의 비트들 29:26)에 대한 모든 웨이들과의 비교가 존재한다. 결과는 DM-매치-벡터(match-Vector)라고 불리는 16비트 벡터이다.
도 5는 결합된 캐시 동작을 위한 프로세스를 예시하는 흐름도이다. 일부 실시예들에서, 메인 메모리 내의 메모리 어드레스(CL_address와 관련됨)에 대한 액세스시(500), 결합된 캐시에 히트(어드레스가 결합된 캐시에 존재함을 나타냄)가 존재하는지에 대한 결정에 이루어지고(502), 결합된 캐시는 도 1에서 결합된 캐시(100)에 예시된 바와 같이 직접-매핑된 부 및 멀티-웨이 부를 포함한다. 일부 실시예들에서, 멀티-웨이 부에 히트가 존재하는지에 대한 결정이 이루어진다(510). 일부 실시예들에서, 멀티-웨이 부에 대한 룩업은, CPU 다이 상의 멀티-웨이 태그의 위치 및 멀티-웨이 캐시 부의 상대적으로 작은 크기 때문에 매우 빠르게 된다. 룩업이 태그 히트이면, 멀티-웨이 캐시 부로부터 요청자에 대한 데이터가 액세스된다(512).
일부 실시예들에서, 멀티-웨이 캐시 부에 미스가 존재하는 경우(510), 직접-매핑된 캐시 부에 히트 또는 미스가 있는지에 대한 결정이 있고(520), 이는 직접-매핑된 어드레스를 판독하고 직접 매핑된 캐시에 대한 메타데이터 태그를 비교함으로써 수행될 수 있다. 그러나 실시예들은 멀티-웨이 캐시 부 및 직접-매핑된 캐시 부에 대한 룩업의 특정 순서에 제한되지 않는다. 대안적인 실시예에서, 직접-매핑된 캐시 부 및 멀티-웨이 캐시 부 모두에 대한 병렬 룩업 프로세스가 존재할 수 있다(530).
일부 실시예들에서, 직접-매핑된 캐시 부에 미스가 존재하고(540), 따라서 결합된 캐시의 양쪽 부들에 미스가 존재하는 경우, 멀티-웨이 세트들의 LRU, 및 멀티-웨이 세트들 및 직접-매핑된 세트들 각각의 V(유효) 비트의 체크가 있다(524). 이들 세트 중 최소 최근 사용이 직접-매핑된 부에 포함되면(540), 데이터는 직접-매핑된 캐시 라인으로부터 축출되고 새로운 데이터가 거기에 채워진다(즉, 새로운 데이터가 저장된다)(542). 이러한 세트들 중 최소 최근 사용이 멀티-웨이 부에 포함되면(540), 데이터는 멀티-웨이 캐시 라인으로부터 축출되고 새로운 데이터가 거기에 채워진다(544). 최소 최근 사용 세트의 위치 결정(530)은, 예를 들어 도 7에 예시된 우선순위들의 적용을 포함할 수 있다. 그러나 실시예들은 LRU 교체 정책에 제한되지 않으며, 따라서 다른 실시예들에서 요소들(524 및 540)은 교체 위치를 결정하기 위해 상이한 정책을 구현할 수 있으며, 이는 일례에서, 직접-매핑된 캐시 부 또는 멀티-웨이 캐시 부를 랜덤하게 선택할 수 있는 랜덤 교체 정책을 포함한다.
도 6a는 실시예에 따른, 결합된 의사 LRU의 제1 부분의 계산을 예시하는 흐름도이다. 도 6a에 예시된 바와 같이, 결합된 캐시 상에 히트가 있을 때(600), 결합된 캐시는 도 1의 결합된 캐시(100)에 예시된 바와 같이, 직접-매핑된 부 및 멀티-웨이 부를 포함하고, LRU 비트들의 계산(605)이 존재한다. 일부 실시예들에서, LRU-vs-DM 비트 계산은 다음과 같다:
(a) 타겟이 결합된 캐시의 DM 부에 있다면(610), 벡터에 의해 선택된 웨이들의 모든 LRU-vs-DM 비트들은 클리어되며(예를 들어, 0으로 설정되며)(615), 이는 DM이 동일한 DM 세트와 관련된 모든 MW 엔트리들보다 최근에 사용되었음을 나타낸다.
(b) 타겟이 결합된 캐시의 MW 부에 있다면(610), 타겟의 LRU-vs-DM 비트가 설정되고(620), 이는 MW의 타겟이 DM 세트보다 최근에 사용되었음을 나타낸다.
도 6b는 실시예에 따른, 결합된 의사 LRU의 제2 부분의 계산을 예시하는 흐름도이다. 일부 실시예들에서, MW-LRU 비트 계산(650)은 다음과 같다:
(a) 타겟 MW-LRU 비트를 설정하고(655);
(b) 다른 모든 MW-LRU 비트들이 설정되면, 다른 모든 것들을 클리어한다(660).
도 7은 실시예에 따른, 결합된 캐시에서 교체의 우선순위를 예시하기 위한 흐름도이다. 그러나 실시예들은 교체를 위한 우선순위들의 특정 세트에 제한되지 않으며, 다른 구현들에서 다른 타입들의 우선순위들을 포함할 수 있다. 도 1에 예시된 결합된 캐시(100)와 같은, 직접-매핑된 캐시 부 및 멀티-웨이 캐시 부를 포함하는 결합된 캐시에 대한 캐시 미스의 경우에는, 직접-매핑된 부 또는 멀티-웨이 부에서 데이터를 교체할 가능성이 있다. 일부 실시예들에서, 조정된 교체 정책에 따라 결합된 캐시에서 캐시 미스 이후에 데이터 교체를 위한 위치의 선택은 다수의 우선순위들에 따라 수행된다. 일부 실시예들에서, 교체를 위한 우선순위들은 직접-매핑된 부 및 멀티-웨이 부에 포함된 데이터의 유효성 및 나이에 기초한다.
예를 들어, 교체를 위한 우선순위들은 다음을 포함하지만 이에 제한되지는 않는다:
우선순위 0(가장 큰 제1 우선순위)의 경우, 직접-매핑된 캐시 라인이 무효이면(710)(유효 데이터가 직접-매핑된 캐시 라인에 저장되지 않으면), 직접-매핑된 캐시 라인에 데이터가 배치된다(715). 이는 기회가 있을 때 직접-매핑된 부에 유효 데이터를 저장하기 위해 수행된다.
그렇지 않으면, 우선순위 1(제1 우선순위보다 낮은 우선순위인 제2 우선순위)의 경우, 직접-매핑된 캐시 라인이 유효할 때 멀티-웨이 캐시 라인들 중 임의의 것이 무효이면(720), 데이터는 기회가 있을 때 유효 데이터를 그런 위치에 저장하기 위해 무효한 멀티-웨이 캐시 라인에 채워진다(725).
그렇지 않으면, 우선순위 2(제2 우선순위보다 낮은 우선순위인 제3 우선순위)의 경우, 논-제로 DM-매치-벡터(non-zero DM-match-Vector)의 모든 LRU-vs-DM 비트들이 '1'일 때(요소 730), 직접-매핑된 엔트리가 모든 대응하는 멀티-웨이 엔트리들보다 오래된 것이기 때문에 직접-매핑된 부에서 값을 교체한다(735).
그렇지 않으면, 우선순위 3(제3 우선순위보다 낮은 우선순위인 제4 우선순위)의 경우, 멀티-웨이 값이 LRU-vs-DM 및 MW-LRU 모두를 0으로 가지면(요소 740), 그 대응하는 직접-매핑된 엔트리보다 오래되고 멀티-웨이 부에서 더 오래된 엔트리들의 일부인 그런 값을 교체한다(745).
그렇지 않으면, 우선순위 4(제4 우선순위보다 낮은 우선순위인 제5 우선순위)의 경우, 값 0을 갖는 MW-LRU가 있는 멀티-웨이 엔트리를 선택한다(755).
도 8은 결합된 캐시 메모리를 포함하는 전자 장치 또는 시스템의 실시예의 예시이다. 이런 예시에서, 본 설명과 밀접하지 않은 특정 표준 및 잘 알려진 컴포넌트들은 도시되지 않는다. 예를 들어, 단일 칩 상에 다수의 요소들을 결합하는 SoC(System on Chip)를 포함하는, 별개의 요소들로서 도시된 요소들이 결합될 수 있다. 장치 또는 시스템(일반적으로 시스템(800)이라고 칭함)은 컴퓨팅 시스템을 포함할 수 있지만, 이에 제한되지는 않는다.
일부 실시예들에서, 시스템(800)은 정보를 처리하기 위해 인터커넥트(802)에 결합된 하나 이상의 프로세서들(830)과 같은 처리 수단을 포함할 수 있다. 프로세서들(830)은 하나 이상의 물리적 프로세서들 및 하나 이상의 논리 프로세서들을 포함할 수 있다. 일부 실시예들에서, 프로세서들은 하나 이상의 범용 프로세서들 또는 특수 목적 프로세서들을 포함할 수 있다. 예시되지 않은 다수의 다른 요소들에 더하여, 프로세서들(830)은 하나 이상의 코어들 및 L1 캐시들(832), 및 하나 이상의 L2 캐시들(834)을 포함할 수 있다. 또한, 하나 이상의 L3 캐시들(836)은 프로세서(830)의 일부일 수 있거나, 마더 보드에 설치될 수 있거나, 또는 그렇지 않으면 시스템(800)에 구현될 수 있다.
일부 실시예들에서, 프로세서들(830)은 도 3 및 도 4에 예시된 것과 같은 비대칭 세트 결합된 캐시(840), 직접-매핑된 부(844) 및 멀티-웨이 부(846)를 포함하는 결합된 캐시(840)를 포함할 수 있으며, 직접-매핑된 부(844)는 멀티-웨이 부(846)보다 크다. 프로세서들 및 캐시들의 구조는 구현에 따라 변할 수 있다. 일 실시예에서, 코어들 및 L1, L2 및 L3 캐시들(832-836)은 결합된 캐시(840)와 인터페이스할 수 있고, 결합된 캐시(840)는 외부 인터커넥트와 인터페이스할 수 있다. 다른 실시예에서, 코어들(832)로부터의 I/O 액세스들은 결합된 캐시(840)를 우회할 수 있다. 그러나, 실시예들은 이러한 특정 구현들에 제한되지 않는다. 일부 실시예들에서, 직접-매핑된 부(844) 및 멀티-웨이 부(846)는 도 5, 도 6a, 도 6b 및 도 7에 예시된 바와 같이 구현될 수 있는 조정된 교체 정책, 예를 들어 일례에서 LRU 기반 교체 정책에 종속되어 있다.
인터커넥트(802)는 데이터의 송신을 위한 통신 수단이다. 인터커넥트(802)는 단순함을 위해 단일 인터커넥트로서 예시되어 있지만, 다수의 상이한 인터커넥트들 또는 버스들을 나타낼 수 있고, 이러한 인터커넥트들과의 컴포넌트 접속들은 변할 수 있다. 도 8에 도시된 인터커넥트(802)는 임의의 하나 이상의 개별 물리적 버스들, 점 대 점 접속들, 또는 적절한 브리지들, 어댑터들, 또는 제어기들에 의해 접속된 양자를 나타내는 추상적 개념(abstraction)이다.
일부 실시예들에서, 장치(800)는 프로세서들(830)에 의해 실행될 정보 및 명령어들을 저장하기 위한 메인 메모리(806)로서 랜덤 액세스 메모리(RAM) 또는 다른 동적 저장 디바이스 또는 요소를 더 포함한다. 메인 메모리(806)는 동적 랜덤 액세스 메모리(DRAM)를 포함할 수 있지만 이에 제한되지는 않는다. 일부 실시예들에서, 메인 메모리(806) 내의 데이터는 하나 이상의 결합된 캐시들(840)을 포함하는 하나 이상의 캐시들을 이용하여 캐싱된다. 시스템(800)은 특정 요소들의 저장을 위한, 예를 들어 플래시 메모리를 포함하는 하나 이상의 비휘발성 메모리 요소들(808)을 더 포함할 수 있다. 시스템(800)은 또한 프로세서(830)에 대한 정적 정보 및 명령어들을 저장하기 위한 판독 전용 메모리(ROM)(810) 또는 다른 정적 저장 디바이스, 및 데이터의 저장을 위한 솔리드 스테이트 드라이브와 같은 데이터 스토리지(812)를 포함할 수 있다.
일부 실시예들에서, 시스템(800)은 인터커넥트(802)와 결합된 하나 이상의 송신기들 또는 수신기들(814)을 포함한다. 일부 실시예들에서, 시스템(800)은 무선 송신기, 수신기 또는 둘 다를 사용하는 무선 통신을 통한 데이터의 송신 및 수신을 위한 다이폴 안테나 또는 모노폴 안테나와 같은 하나 이상의 안테나들(818), 및 무선 통신을 통한 데이터 송신 및 수신을 위한 하나 이상의 포트들(816)을 포함할 수 있다.
일부 실시예들에서, 시스템(800)은 하드 및 소프트 버튼들, 조이스틱, 마우스 또는 다른 포인팅 디바이스, 음성 명령 시스템 또는 제스처 인식 시스템을 포함하는, 데이터의 입력을 위한 하나 이상의 입력 디바이스들(820)을 포함한다.
일부 실시예들에서, 시스템(800)은 출력 디스플레이(822)를 포함하며, 디스플레이(822)는 정보 또는 콘텐츠를 사용자에게 표시하기 위한 액정 디스플레이(LCD) 또는 임의의 다른 디스플레이 기술을 포함할 수 있다. 일부 환경들에서, 디스플레이(822)는 입력 디바이스(822)의 적어도 일부로서 또한 이용되는 터치 스크린을 포함할 수 있다.
시스템(800)은 또한 태양 전지, 연료 전지, 충전된 캐패시터, 근접장 유도성 결합, 또는 장치(800)에서 전력을 공급하거나 생성하기 위한 다른 시스템 또는 디바이스를 포함할 수 있는 배터리 또는 다른 전원(824)을 포함할 수 있다. 전원(824)에 의해 제공되는 전력은 필요에 따라 시스템(800)의 요소들에 분배될 수 있다.
위의 설명에서는, 설명의 목적을 위해, 설명된 실시예들의 철저한 이해를 제공하기 위해 다수의 구체적인 세부 사항들이 제시되었다. 그러나, 실시예들은 이들 특정 세부 사항 중 일부가 없이 실시될 수 있다는 것이 본 기술분야의 통상의 기술자에게 명백할 것이다. 다른 경우들에서는, 널리 공지된 구조들 및 디바이스들이 블록도 형태로 도시되어 있다. 예시된 컴포넌트들 사이에는 중간 구조체가 존재할 수 있다. 본 명세서에 설명되거나 예시된 컴포넌트들은 예시되거나 설명되지 않은 추가의 입력들 또는 출력들을 가질 수 있다.
다양한 실시예들이 다양한 프로세스들을 포함할 수 있다. 이러한 프로세스들은 하드웨어 컴포넌트들에 의해 수행될 수 있거나, 또는 컴퓨터 프로그램 또는 머신 실행가능 명령어들로 구현될 수 있으며, 이 명령어들은 이 명령어들로 프로그래밍된 범용 또는 특수 목적 프로세서 또는 로직 회로들이 프로세스들을 수행하게 하는데 사용될 수 있다. 대안적으로, 프로세스들은 하드웨어와 소프트웨어의 조합에 의해 수행될 수 있다.
각종 실시예들의 일부분들은, 특정 실시예들에 따라 프로세스를 수행하기 위해 하나 이상의 프로세서들에 의해 실행되도록 컴퓨터(또는 다른 전자 디바이스들)를 프로그래밍하는데 사용될 수 있는 컴퓨터 프로그램 명령어들이 저장된 컴퓨터 판독 가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품으로서 제공될 수 있다. 컴퓨터 판독가능 매체는 자기 디스크들, 광 디스크들, 컴팩트 디스크 판독 전용 메모리(CD-ROM), 자기-광학 디스크들, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 소거 가능한 프로그램가능 판독 전용 메모리(EPROM), 전기적으로-소거 가능한 프로그램 가능 판독 전용 메모리(EEPROM), 자기 또는 광학 카드들, 플래시 메모리, 또는 전자 명령어들을 저장하는데 적합한 다른 타입의 컴퓨터-판독가능 매체를 포함하나, 이에 제한되지 않는다. 더욱이, 실시예들은 컴퓨터 프로그램 제품으로서 또한 다운로딩될 수 있고, 여기서 프로그램은 원격 컴퓨터로부터 요청하는 컴퓨터로 전송될 수 있다.
방법들 다수는 그들의 가장 기본적인 형태로 기술되지만, 본 실시예들의 기본 범위를 벗어나지 않은 채로 프로세스들이 그 방법들 중 임의의 방법으로부터 삭제되거나 임의의 방법에 추가될 수 있으며, 정보가 기술된 메시지들 중 임의의 메시지로부터 감해지거나 임의의 메시지에 추가될 수 있다. 다수의 다른 변경들 및 적응들이 달성될 수 있음이 본 기술분야의 당업자에게 명백할 것이다. 특정 실시예들은 개념을 제한하기 위해 제공되는 것이 아니라 예시하기 위해 제공된다. 실시예들의 범위는 전술한 특정 예들에 의해서만 결정되는 것이 아니라 하기 청구항들에 의해서만 결정된다.
요소 "A"가 요소 "B"에 또는 "B"와 결합된다고 언급하는 경우, 요소 A는 요소 B에 직접 결합될 수 있거나, 또는 예를 들어, 요소 C를 통해 간접적으로 결합될 수 있다. 명세서 및 청구항들에서 컴포넌트, 피처, 구조, 프로세스 또는 특징 A가 컴포넌트, 피처, 구조, 프로세스 또는 특징 B를 "유발한다(cause)"고 언급하는 경우, "A"가 "B"의 적어도 부분적 원인이지만 "B"를 유발하는데 도움을 주는 적어도 하나의 다른 컴포넌트, 피처, 구조, 프로세스 또는 특징일 수도 있음을 의미한다. 명세서가 컴포넌트, 피처, 구조, 프로세스 또는 특징이 포함될 수도 있음("may", "might", or "could" be included)을 나타내면, 특정 컴포넌트, 피처, 구조, 프로세스 또는 특징은 반드시 포함되어야할 필요는 없다. 명세서 또는 청구항이 "하나의(a, an)" 요소를 언급하면, 이는 기술된 요소들이 오직 하나뿐임을 의미하는 것은 아니다.
실시예는 구현 또는 예이다. 본 명세서에서 "실시예", "일 실시예", "일부 실시예들", 또는 "다른 실시예들"이라는 언급은, 실시예들과 연계하여 설명된 특정한 피처, 구조, 또는 특징이, 반드시 모든 실시예들이 아니라, 적어도 일부의 실시예들에 포함된다는 것을 의미한다. "실시예", "일 실시예" 또는 "일부 실시예들"의 다양한 출현들은 반드시 모두가 동일한 실시예들을 지칭하는 것은 아니다. 예시적인 실시예들의 상기 설명에서, 다양한 피처들은 개시내용을 간소화하고 다양한 신규 양태들 중의 하나 이상의 이해를 보조할 목적을 위하여, 그 단일 실시예, 도면, 또는 설명에서 때때로 함께 그룹화된다는 것이 이해되어야 한다. 그러나, 이러한 개시내용의 방법은, 청구된 실시예들이 각각의 청구항에서 명시적으로 인용된 것보다 많은 피처들을 요구하기 위한 의도를 반영하는 것으로 해석되지 않는다. 오히려, 다음의 청구항들이 반영하는 바와 같이, 신규한 양태들은 하나의 상기 개시된 실시예의 피처들 중 일부에 있다. 따라서, 청구항들은 이로써 이 설명에 명백하게 포함되며, 각각의 청구항은 개별 실시예로서 독립적이다.
일부 실시예들에서, 프로세서는 데이터의 처리를 위한 하나 이상의 처리 코어들; 및 하나 이상의 처리 코어들에 대한 데이터를 캐싱하는 캐시 메모리를 포함하고, 캐시 메모리는 직접-매핑된 캐시를 포함하는 제1 캐시 부 및 멀티-웨이 캐시를 포함하는 제2 캐시 부를 포함한다. 일부 실시예들에서, 캐시 메모리는 제1 캐시 부 및 제2 캐시 부에 비대칭 세트들을 포함하고, 제1 캐시 부는 제2 캐시 부보다 크며; 캐시 메모리에 대한 조정된 교체 정책은 제1 캐시 부 및 제2 캐시 부에서 데이터의 교체를 제공한다.
일부 실시예들에서, 제1 캐시 부와 제2 캐시 부 사이에는 데이터의 전송이 없다.
일부 실시예들에서, 메인 메모리의 각각의 어드레스는 멀티-웨이 부의 웨이들 중 임의의 웨이 내의 위치 또는 직접-매핑된 부 내의 단일 위치에 캐싱될 수 있다.
일부 실시예들에서, 조정된 교체 정책은 최소 최근 사용(least recently used)(LRU) 알고리즘의 적용을 포함한다.
일부 실시예들에서, 조정된 교체 정책에 대한 비트들은 멀티-웨이 부의 각각의 웨이에 대한 제2 캐시 부에 저장된다. 일부 실시예들에서, 멀티-웨이 부의 제1 웨이에 대한 조정된 교체 정책에 대한 비트들은, 제1 웨이의 엔트리와 멀티 웨이 부의 각각의 다른 웨이의 엔트리들의 최소 최근 사용 비교를 나타내는 제1 비트; 및 제1 웨이의 엔트리와 대응하는 직접-매핑된 위치의 엔트리의 최소 최근 사용 비교를 나타내는 제2 비트를 포함한다.
일부 실시예들에서, 멀티-웨이 캐시 부의 크기는 직접-매핑된 부의 크기에 따라 선형적으로 스케일링되지 않는다.
일부 실시예들에서, 멀티-웨이 부의 크기는 직접-매핑된 부의 충돌-레이트 및 피닝 요구 사항들 중 하나 이상에 적어도 부분적으로 기초한다.
일부 실시예들에서, 캐시 메모리의 전체 크기가 2n개의 캐시 라인들 또는 섹터화된 캐시 라인들인 경우, 멀티-웨이 부 내의 세트들의 수는 2m이고, 멀티-웨이 부에 대한 웨이들의 수는 2w이고, n은 m과 w의 합보다 크다.
일부 실시예들에서, 방법은 메인 메모리에서 메모리 어드레스에 대한 액세스 요청을 수신하는 단계; 메모리 어드레스에 대한 캐시에 히트 또는 미스가 존재하는지를 결정하는 단계 - 캐시 메모리는 직접-매핑된 캐시를 포함하는 제1 캐시 부 및 멀티-웨이 캐시를 포함하는 제2 캐시 부를 포함하고, 제2 캐시 부는 제1 캐시 부보다 작음 - ; 제1 캐시 부 또는 제2 캐시 부 중 어느 하나에서의 히트에 대해, 히트가 있는 캐시 부에서 요청된 데이터에 액세스하는 단계; 및 제1 캐시 부 및 제2 캐시 부 모두에서의 미스에 대해, 제1 캐시 부 및 제2 캐시 부에 대한 조정된 교체 정책에 따라 제1 캐시 부 또는 제2 캐시 부 중 어느 하나에서 메모리 어드레스에 대한 데이터를 교체하는 단계를 포함한다.
일부 실시예들에서, 메인 메모리의 어드레스는 멀티-웨이 부의 웨이들 중 임의의 웨이 내의 위치 또는 직접-매핑된 부 내의 단일 위치에 매핑될 수 있다.
일부 실시예들에서, 조정된 교체 정책에 따라 데이터를 교체하는 단계는 최소 최근 사용(LRU) 알고리즘의 적용을 포함한다.
일부 실시예들에서, 상기 방법은 조정된 교체 정책에 대한 비트들을 상기 제2 캐시 부에 저장하는 단계를 더 포함한다. 일부 실시예들에서, 멀티-웨이 부의 제1 웨이에 대한 조정된 교체 정책에 대한 비트들은 제1 웨이의 엔트리와 멀티 웨이 부의 각각의 다른 웨이의 엔트리들의 최소 최근 사용 비교를 나타내는 제1 비트, 및 제1 웨이의 엔트리와 대응하는 직접-매핑된 위치의 엔트리의 최소 최근 사용 비교를 나타내는 제2 비트를 포함한다.
일부 실시예들에서, LRU 알고리즘의 적용은 제1 캐시 부 또는 제2 캐시 부 내의 교체 위치에 대한 복수의 우선순위들을 포함한다. 일부 실시예들에서, 복수의 우선순위들은, 유효 데이터가 직접-매핑된 부의 매핑된 엔트리에 저장되지 않은 경우, 매핑된 엔트리에 캐싱될 데이터를 저장하기 위해 제공하는 제1 우선순위; 유효 데이터가 멀티-웨이 부의 매핑된 캐시 라인에 저장되지 않은 경우, 매핑된 캐시 라인에 캐싱될 데이터를 저장하기 위해 제공하는 제2 우선순위 - 제2 우선순위는 제1 우선순위보다 낮음 - ; 직접-매핑된 엔트리가 모든 대응하는 멀티-웨이 엔트리들보다 오래된 경우, 직접-매핑된 부 내의 캐시 라인에 캐싱될 데이터를 저장하기 위해 제공하는 제3 우선순위 - 제3 우선순위는 제2 우선순위보다 낮음 - ; 멀티-웨이 부의 특정 웨이의 엔트리가 대응하는 직접-매핑된 웨이보다 오래되고 멀티-웨이 부 내의 보다 오래된 엔트리들의 일부인 경우, 특정 웨이의 캐시 라인에 캐싱될 데이터를 저장하기 위해 제공하는 제4 우선순위 - 제4 우선순위는 제3 우선순위보다 낮음 - ; 및 멀티-웨이 부의 웨이들 중 임의의 웨이의 캐시 라인에 캐싱될 데이터를 저장하기 위해 제공하는 제5 우선순위 - 제5 우선순위는 제4 우선순위보다 낮음 - 를 포함한다.
일부 실시예들에서, 컴퓨팅 시스템은 컴퓨팅 시스템에 대한 데이터의 저장을 위한 메인 메모리; 데이터의 무선 송신을 위한 송신기 및 수신기; 데이터의 무선 송신을 위한 송신기 및 수신기; 및 프로세서를 포함하고, 상기 프로세서는, 데이터의 처리를 위한 하나 이상의 처리 코어들; 및 하나 이상의 처리 코어들에 대한 메인 메모리로부터의 데이터를 캐싱하는 캐시 메모리를 포함하고, 결합된 캐시 메모리는 직접-매핑된 캐시를 포함하는 제1 캐시 부 및 멀티-웨이 캐시를 포함하는 제2 캐시 부를 포함한다. 일부 실시예들에서, 캐시 메모리는 비대칭 세트 결합된 캐시이고, 제1 캐시 부는 제2 캐시 부보다 크다. 일부 실시예들에서, 캐시 메모리에 대한 조정된 교체 정책은 제1 캐시 부 및 제2 캐시 부에서 데이터의 교체를 제공한다.
일부 실시예들에서, 메인 메모리의 각각의 어드레스는 멀티-웨이 부의 웨이들 중 임의의 웨이 내의 위치 또는 직접-매핑된 부 내의 단일 위치에 캐싱될 수 있다.
일부 실시예들에서, 조정된 교체 정책은 최소 최근 사용(LRU) 알고리즘의 적용을 포함한다. 일부 실시예들에서, 조정된 교체 정책에 대한 비트들은 멀티-웨이 부의 각각의 웨이에 대한 제2 캐시 부에 저장된다. 일부 실시예들에서, 멀티-웨이 부의 제1 웨이에 대한 조정된 교체 정책에 대한 비트들은, 제1 웨이의 엔트리와 멀티 웨이 부의 각각의 다른 웨이의 엔트리들의 최소 최근 사용 비교를 나타내는 제1 비트; 및 제1 웨이의 엔트리와 대응하는 직접 매핑된 위치의 엔트리의 최소 최근 사용 비교를 나타내는 제2 비트를 포함한다.
일부 실시예들에서, 명령어들의 시퀀스들을 나타내는 데이터가 저장된 비일시적인 컴퓨터 판독 가능 저장 매체로서, 상기 명령어들은, 프로세서에 의해 실행될 때, 프로세서로 하여금, 메인 메모리에서 메모리 어드레스에 대한 액세스 요청을 수신하는 동작; 메모리 어드레스에 대한 캐시에 히트 또는 미스가 존재하는지를 결정하는 동작 - 캐시 메모리는 직접-매핑된 캐시를 포함하는 제1 캐시 부 및 멀티-웨이 캐시를 포함하는 제2 캐시 부를 포함함 - ; 제1 캐시 부 또는 제2 캐시 부 중 어느 하나에서의 히트에 대해, 히트가 있는 캐시 부에서 요청된 데이터에 액세스하는 동작; 및 제1 캐시 부 및 제2 캐시 부 모두에서의 미스에 대해, 캐시 메모리에 대한 조정된 교체 정책에 따라 제1 캐시 부 또는 제2 캐시 부 중 어느 하나에서 메모리 어드레스에 대한 데이터를 교체하는 동작을 포함하는 동작들을 수행하게 한다.
일부 실시예들에서, 메인 메모리의 어드레스는 제2 캐시 부의 멀티-웨이 캐시의 웨이들 중 임의의 웨이 내의 위치 또는 제1 캐시 부의 직접-매핑된 캐시 내의 단일 위치에 매핑될 수 있다.
일부 실시예들에서, 조정된 교체 정책에 따라 데이터를 교체하는 동작은 최소 최근 사용(LRU) 알고리즘의 적용을 포함한다.
일부 실시예들에서, 장치는 메인 메모리에서 메모리 어드레스에 대한 액세스 요청을 수신하기 위한 수단; 메모리 어드레스에 대한 결합된 캐시에 히트 또는 미스가 존재하는지를 결정하기 위한 수단 - 결합된 캐시 메모리는 직접-매핑된 캐시를 포함하는 제1 캐시 부 및 멀티-웨이 캐시를 포함하는 제2 캐시 부를 포함함 - ; 제1 캐시 부 또는 제2 캐시 부 중 어느 하나에 히트가 존재하는 경우, 캐시 부에서 요청된 데이터에 액세스하기 위한 수단; 및 제1 캐시 부 및 제2 캐시 부 모두에서 미스가 존재하는 경우, 조정된 교체 정책에 따라 제1 캐시 부 또는 제2 캐시 부 중 어느 하나에서 메모리 어드레스에 대한 데이터를 교체하기 위한 수단을 포함한다.
일부 실시예들에서, 메인 메모리의 어드레스는 제2 캐시 부의 멀티-웨이 캐시의 웨이들 중 임의의 웨이 내의 위치 또는 제1 캐시 부의 직접-매핑된 캐시 내의 단일 위치에 매핑될 수 있다.
일부 실시예들에서, 조정된 교체 정책에 따라 데이터를 교체하기 위한 수단은 최소 최근 사용(LRU) 알고리즘의 적용을 포함한다.
Claims (24)
- 프로세서로서,
데이터의 처리를 위한 하나 이상의 처리 코어들; 및
상기 하나 이상의 처리 코어들에 대한 메인 메모리로부터의 데이터를 캐싱하는 결합된 캐시 메모리(combined cache memory)
를 포함하고, 상기 결합된 캐시 메모리는
직접-매핑된 부(direct-mapped portion)를 포함하는 제1 캐시 부(first cache portion), 및
멀티-웨이 부(multi-way portion)를 포함하는 제2 캐시 부
를 포함하고, 상기 결합된 캐시 메모리는 상기 제1 캐시 부 및 상기 제2 캐시 부에 비대칭 세트들을 포함하고, 상기 제1 캐시 부는 상기 제2 캐시 부보다 크며,
상기 결합된 캐시 메모리는 상기 제1 캐시 부 및 상기 제2 캐시 부에서 데이터의 교체를 위한 조정된 교체 정책(coordinated replacement policy)을 포함하고,
상기 조정된 교체 정책은 최소 최근 사용(least recently used)(LRU) 알고리즘의 적용을 포함하고,
상기 조정된 교체 정책에 대한 비트들은 상기 멀티-웨이 부의 각각의 웨이에 대한 상기 제2 캐시 부에 저장되는, 프로세서. - 제1항에 있어서, 상기 제1 캐시 부와 상기 제2 캐시 부 사이에는 데이터의 전송이 없는, 프로세서.
- 제1항에 있어서, 상기 메인 메모리의 각각의 어드레스는 상기 멀티-웨이 부의 웨이들 중 임의의 웨이 내의 위치 또는 상기 직접-매핑된 부 내의 단일 위치에 캐싱될 수 있는, 프로세서.
- 삭제
- 삭제
- 제1항에 있어서, 상기 멀티-웨이 부의 제1 웨이에 대한 상기 조정된 교체 정책에 대한 상기 비트들은,
상기 제1 웨이의 엔트리와 멀티 웨이 부의 각각의 다른 웨이의 엔트리들의 최소 최근 사용 비교를 나타내는 제1 비트; 및
상기 제1 웨이의 엔트리와 대응하는 직접-매핑된 위치의 엔트리의 최소 최근 사용 비교를 나타내는 제2 비트
를 포함하는 프로세서. - 제1항에 있어서, 상기 멀티-웨이 부의 크기는 상기 직접-매핑된 부의 크기에 따라 선형적으로 스케일링되지 않는, 프로세서.
- 제1항에 있어서, 상기 멀티-웨이 부의 크기는 상기 직접-매핑된 부의 충돌-레이트(conflict-rate) 및 피닝 요구 사항들(pinning requirements) 중 하나 이상에 적어도 부분적으로 기초하는, 프로세서.
- 제1항에 있어서, 상기 결합된 캐시 메모리의 전체 크기가 2n 개의 캐시 라인들 또는 섹터화된(sectored) 캐시 라인들인 경우, 상기 멀티-웨이 부 내의 세트들의 수는 2m이고, 상기 멀티-웨이 부에 대한 웨이들의 수는 2w이고, n은 m과 w의 합보다 큰, 프로세서.
- 방법으로서,
메인 메모리에서 메모리 어드레스에 대한 액세스 요청을 수신하는 단계;
상기 메모리 어드레스에 대한 결합된 캐시 메모리에 히트 또는 미스가 존재하는지를 결정하는 단계 - 상기 결합된 캐시 메모리는,
직접-매핑된 부를 포함하는 제1 캐시 부, 및
멀티-웨이 부를 포함하는 제2 캐시 부
를 포함하고, 상기 제2 캐시 부는 상기 제1 캐시 부보다 작음 - ;
상기 제1 캐시 부 또는 상기 제2 캐시 부 중 어느 하나에서의 히트에 대해, 히트가 있는 캐시 부에서 요청된 데이터에 액세스하는 단계;
상기 제1 캐시 부 및 상기 제2 캐시 부 모두에서의 미스에 대해, 상기 제1 캐시 부 및 상기 제2 캐시 부에 대한 조정된 교체 정책에 따라 상기 제1 캐시 부 또는 상기 제2 캐시 부 중 어느 하나에서 상기 메모리 어드레스에 대한 데이터를 교체하는 단계 - 상기 조정된 교체 정책에 따라 데이터를 교체하는 단계는 최소 최근 사용(LRU) 알고리즘의 적용을 포함함 - ; 및
상기 조정된 교체 정책에 대한 비트들을 상기 제2 캐시 부에 저장하는 단계
를 포함하는 방법. - 제10항에 있어서, 상기 메인 메모리의 어드레스는 상기 멀티-웨이 부의 웨이들 중 임의의 웨이 내의 위치 또는 상기 직접-매핑된 부 내의 단일 위치에 매핑될 수 있는, 방법.
- 삭제
- 삭제
- 제10항에 있어서, 상기 멀티-웨이 부의 제1 웨이에 대한 상기 조정된 교체 정책에 대한 비트들은,
상기 제1 웨이의 엔트리와 멀티 웨이 부의 각각의 다른 웨이의 엔트리들의 최소 최근 사용 비교를 나타내는 제1 비트, 및
상기 제1 웨이의 엔트리와 대응하는 직접-매핑된 위치의 엔트리의 최소 최근 사용 비교를 나타내는 제2 비트
를 포함하는 방법. - 제10항에 있어서, 상기 LRU 알고리즘의 적용은 상기 제1 캐시 부 또는 상기 제2 캐시 부 내의 교체 위치에 대한 복수의 우선순위들을 포함하는 방법.
- 제15항에 있어서, 상기 복수의 우선순위들은,
유효 데이터가 상기 직접-매핑된 부의 매핑된 엔트리에 저장되지 않은 경우, 상기 매핑된 엔트리에 캐싱될 데이터를 저장하기 위해 제공하는 제1 우선순위;
유효 데이터가 상기 멀티-웨이 부의 매핑된 블록에 저장되지 않은 경우, 상기 매핑된 블록에 캐싱될 데이터를 저장하기 위해 제공하는 제2 우선순위 - 상기 제2 우선순위는 상기 제1 우선순위보다 낮음 - ;
직접-매핑된 엔트리가 모든 대응하는 멀티-웨이 엔트리들보다 오래된 경우, 상기 직접-매핑된 부 내의 블록에 캐싱될 데이터를 저장하기 위해 제공하는 제3 우선순위 - 상기 제3 우선순위는 상기 제2 우선순위보다 낮음 - ;
상기 멀티-웨이 부의 특정 웨이의 엔트리가 대응하는 직접-매핑된 웨이보다 오래되고 상기 멀티-웨이 부 내의 더 오래된 엔트리들의 일부인 경우, 상기 특정 웨이의 블록에 캐싱될 데이터를 저장하기 위해 제공하는 제4 우선순위 - 상기 제4 우선순위는 상기 제3 우선순위보다 낮음 - ; 및
상기 멀티-웨이 부의 웨이들 중 임의의 웨이의 블록에 캐싱될 데이터를 저장하기 위해 제공하는 제5 우선순위 - 상기 제5 우선순위는 상기 제4 우선순위보다 낮음 -
를 포함하는 방법. - 컴퓨팅 시스템으로서,
상기 컴퓨팅 시스템에 대한 데이터의 저장을 위한 메인 메모리;
데이터의 무선 송신을 위한 송신기 및 수신기; 및
프로세서
를 포함하고, 상기 프로세서는,
데이터의 처리를 위한 하나 이상의 처리 코어들; 및
상기 하나 이상의 처리 코어들에 대한 메인 메모리로부터의 데이터를 캐싱하는 결합된 캐시 메모리
를 포함하고, 상기 결합된 캐시 메모리는 직접-매핑된 부를 포함하는 제1 캐시 부 및 멀티-웨이 부를 포함하는 제2 캐시 부를 포함하고,
상기 결합된 캐시 메모리는 비대칭 세트 결합된 캐시이고, 상기 제1 캐시 부는 상기 제2 캐시 부보다 크며,
상기 결합된 캐시 메모리는 상기 제1 캐시 부 및 제2 캐시 부에서 데이터의 교체를 위한 조정된 교체 정책을 포함하고,
상기 조정된 교체 정책은 최소 최근 사용(LRU) 알고리즘의 적용을 포함하고,
상기 조정된 교체 정책에 대한 비트들은 상기 멀티-웨이 부의 각각의 웨이에 대한 상기 제2 캐시 부에 저장되는, 컴퓨팅 시스템. - 제17항에 있어서, 상기 메인 메모리의 각각의 어드레스는 상기 멀티-웨이 부의 웨이들 중 임의의 웨이 내의 위치 또는 상기 직접-매핑된 부 내의 단일 위치에 캐싱될 수 있는, 컴퓨팅 시스템.
- 삭제
- 삭제
- 제17항에 있어서, 상기 멀티-웨이 부의 제1 웨이에 대한 상기 조정된 교체 정책에 대한 상기 비트들은,
상기 제1 웨이의 엔트리와 멀티 웨이 부의 각각의 다른 웨이의 엔트리들의 최소 최근 사용 비교를 나타내는 제1 비트; 및
상기 제1 웨이의 엔트리와 대응하는 직접-매핑된 위치의 엔트리의 최소 최근 사용 비교를 나타내는 제2 비트
를 포함하는 컴퓨팅 시스템. - 명령어들의 시퀀스들을 나타내는 데이터가 저장된 비일시적인 컴퓨터 판독 가능 저장 매체로서, 상기 명령어들은, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금,
메인 메모리에서 메모리 어드레스에 대한 액세스 요청을 수신하는 동작;
상기 메모리 어드레스에 대한 결합된 캐시 메모리에 히트 또는 미스가 존재하는지를 결정하는 동작 - 상기 결합된 캐시 메모리는
직접-매핑된 부를 포함하는 제1 캐시 부, 및
멀티-웨이 부를 포함하는 제2 캐시 부를 포함함 - ;
상기 제1 캐시 부 또는 상기 제2 캐시 부 중 어느 하나에서의 히트에 대해, 히트가 있는 캐시 부에서 요청된 데이터에 액세스하는 동작;
상기 제1 캐시 부 및 상기 제2 캐시 부 모두에서의 미스에 대해, 상기 결합된 캐시 메모리에 대한 조정된 교체 정책에 따라 상기 제1 캐시 부 또는 상기 제2 캐시 부 중 어느 하나에서 상기 메모리 어드레스에 대한 데이터를 교체하는 동작 - 상기 조정된 교체 정책에 따라 데이터를 교체하는 동작은 최소 최근 사용(LRU) 알고리즘의 적용을 포함함 - ; 및
상기 조정된 교체 정책에 대한 비트들을 상기 제2 캐시 부에 저장하는 동작
을 포함하는 동작들을 수행하게 하는, 비일시적인 컴퓨터 판독 가능 저장 매체. - 제22항에 있어서, 상기 메인 메모리의 어드레스는 상기 제2 캐시 부의 멀티-웨이 부의 웨이들 중 임의의 웨이 내의 위치 또는 상기 제1 캐시 부의 직접-매핑된 부 내의 단일 위치에 매핑될 수 있는, 비일시적인 컴퓨터 판독 가능 저장 매체.
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/671,927 | 2015-03-27 | ||
US14/671,927 US9582430B2 (en) | 2015-03-27 | 2015-03-27 | Asymmetric set combined cache |
PCT/US2016/017340 WO2016160137A1 (en) | 2015-03-27 | 2016-02-10 | Asymmetric set combined cache |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170130388A KR20170130388A (ko) | 2017-11-28 |
KR102575913B1 true KR102575913B1 (ko) | 2023-09-07 |
Family
ID=56975479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177023939A KR102575913B1 (ko) | 2015-03-27 | 2016-02-10 | 비대칭 세트 결합된 캐시 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9582430B2 (ko) |
EP (1) | EP3274842A4 (ko) |
JP (1) | JP6821879B2 (ko) |
KR (1) | KR102575913B1 (ko) |
CN (1) | CN107430550B (ko) |
TW (1) | TWI632460B (ko) |
WO (1) | WO2016160137A1 (ko) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180095699A1 (en) * | 2016-10-01 | 2018-04-05 | National Tsing Hua University | Memory system, memory device thereof, and method for writing to and reading from memory device thereof |
EP3534265A4 (en) * | 2016-11-16 | 2019-10-30 | Huawei Technologies Co., Ltd. | MEMORY ACCESS TECHNIQUE |
US10915453B2 (en) | 2016-12-29 | 2021-02-09 | Intel Corporation | Multi level system memory having different caching structures and memory controller that supports concurrent look-up into the different caching structures |
CN108628776B (zh) * | 2017-03-22 | 2022-02-18 | 华为技术有限公司 | 一种数据读写访问控制方法及装置 |
US11188467B2 (en) | 2017-09-28 | 2021-11-30 | Intel Corporation | Multi-level system memory with near memory capable of storing compressed cache lines |
US11360704B2 (en) * | 2018-12-21 | 2022-06-14 | Micron Technology, Inc. | Multiplexed signal development in a memory device |
US11526448B2 (en) * | 2019-09-27 | 2022-12-13 | Intel Corporation | Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning |
US11656997B2 (en) * | 2019-11-26 | 2023-05-23 | Intel Corporation | Flexible cache allocation technology priority-based cache line eviction algorithm |
US20220308998A1 (en) * | 2021-03-26 | 2022-09-29 | Intel Corporation | Apparatus and method to reduce bandwidth and latency overheads of probabilistic caches |
CN113392043A (zh) * | 2021-07-06 | 2021-09-14 | 南京英锐创电子科技有限公司 | 缓存数据替换方法、装置、设备和存储介质 |
US20230418745A1 (en) * | 2022-06-28 | 2023-12-28 | Advanced Micro Devices, Inc. | Technique to enable simultaneous use of on-die sram as cache and memory |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100382821B1 (ko) * | 1994-08-11 | 2003-07-18 | 인텔 코오퍼레이션 | 2-웨이세트연관캐시메모리 |
US20040059875A1 (en) * | 2002-09-20 | 2004-03-25 | Vivek Garg | Cache sharing for a chip multiprocessor or multiprocessing system |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06110781A (ja) | 1992-09-30 | 1994-04-22 | Nec Corp | キャッシュメモリ装置 |
US6425056B2 (en) * | 1998-10-26 | 2002-07-23 | Micron Technology, Inc. | Method for controlling a direct mapped or two way set associative cache memory in a computer system |
TW451132B (en) * | 1998-12-15 | 2001-08-21 | Nippon Electric Co | System and method for cache processing |
JP3546788B2 (ja) * | 1999-12-20 | 2004-07-28 | 日本電気株式会社 | メモリ制御回路 |
US7386671B2 (en) | 2000-06-09 | 2008-06-10 | Texas Instruments Incorporated | Smart cache |
US6912623B2 (en) | 2002-06-04 | 2005-06-28 | Sandbridge Technologies, Inc. | Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy |
TWI269973B (en) * | 2003-10-28 | 2007-01-01 | Ip First Llc | Apparatus and method for early cache miss detection |
US7606994B1 (en) | 2004-11-10 | 2009-10-20 | Sun Microsystems, Inc. | Cache memory system including a partially hashed index |
CN100409203C (zh) * | 2005-10-14 | 2008-08-06 | 杭州中天微***有限公司 | 一种低功耗高速缓存的实现方法及其高速缓存器 |
KR100858527B1 (ko) | 2007-04-18 | 2008-09-12 | 삼성전자주식회사 | 시간적 인접성 정보를 이용한 캐쉬 메모리 시스템 및데이터 저장 방법 |
US8069308B2 (en) | 2008-02-13 | 2011-11-29 | Honeywell International Inc. | Cache pooling for computing systems |
JP5434646B2 (ja) * | 2010-02-10 | 2014-03-05 | 富士通株式会社 | 情報処理装置 |
US8838935B2 (en) * | 2010-09-24 | 2014-09-16 | Intel Corporation | Apparatus, method, and system for implementing micro page tables |
GB2510763B (en) * | 2011-12-29 | 2020-05-20 | Intel Corp | Multi-level memory with direct access |
US9424194B2 (en) * | 2012-05-01 | 2016-08-23 | International Business Machines Corporation | Probabilistic associative cache |
-
2015
- 2015-03-27 US US14/671,927 patent/US9582430B2/en active Active
-
2016
- 2016-02-10 EP EP16773625.5A patent/EP3274842A4/en not_active Withdrawn
- 2016-02-10 WO PCT/US2016/017340 patent/WO2016160137A1/en active Application Filing
- 2016-02-10 CN CN201680018905.9A patent/CN107430550B/zh active Active
- 2016-02-10 KR KR1020177023939A patent/KR102575913B1/ko active IP Right Grant
- 2016-02-10 JP JP2017544701A patent/JP6821879B2/ja active Active
- 2016-02-18 TW TW105104812A patent/TWI632460B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100382821B1 (ko) * | 1994-08-11 | 2003-07-18 | 인텔 코오퍼레이션 | 2-웨이세트연관캐시메모리 |
US20040059875A1 (en) * | 2002-09-20 | 2004-03-25 | Vivek Garg | Cache sharing for a chip multiprocessor or multiprocessing system |
Also Published As
Publication number | Publication date |
---|---|
KR20170130388A (ko) | 2017-11-28 |
US9582430B2 (en) | 2017-02-28 |
CN107430550B (zh) | 2022-03-01 |
JP6821879B2 (ja) | 2021-01-27 |
WO2016160137A1 (en) | 2016-10-06 |
JP2018512650A (ja) | 2018-05-17 |
CN107430550A (zh) | 2017-12-01 |
US20160283392A1 (en) | 2016-09-29 |
TW201643724A (zh) | 2016-12-16 |
EP3274842A1 (en) | 2018-01-31 |
TWI632460B (zh) | 2018-08-11 |
EP3274842A4 (en) | 2018-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102575913B1 (ko) | 비대칭 세트 결합된 캐시 | |
US9218286B2 (en) | System cache with partial write valid states | |
US8745334B2 (en) | Sectored cache replacement algorithm for reducing memory writebacks | |
CN104346294B (zh) | 基于多级缓存的数据读/写方法、装置和计算机*** | |
US10019377B2 (en) | Managing cache coherence using information in a page table | |
KR101845371B1 (ko) | 오프-다이 캐시 메모리의 태그들의 세트들을 캐시하기 위한 방법, 장치, 및 시스템 | |
US10503647B2 (en) | Cache allocation based on quality-of-service information | |
US20130262767A1 (en) | Concurrently Accessed Set Associative Overflow Cache | |
KR20090115799A (ko) | 멀티-레벨 캐시 계층에서의 캐스트아웃들을 감소시키기 위한 장치 및 방법들 | |
KR101509628B1 (ko) | 프로세서의 하이 어소시에이티브 캐시 메모리를 위한 scr 매커니즘 | |
US20140040563A1 (en) | Shared virtual memory management apparatus for providing cache-coherence | |
US20230102891A1 (en) | Re-reference interval prediction (rrip) with pseudo-lru supplemental age information | |
US9128856B2 (en) | Selective cache fills in response to write misses | |
CN103890737B (zh) | 映射持久存储器 | |
US10565111B2 (en) | Processor | |
US9251070B2 (en) | Methods and apparatus for multi-level cache hierarchies | |
WO2010098152A1 (ja) | キャッシュメモリシステムおよびキャッシュメモリ制御方法 | |
WO2023055478A1 (en) | Using request class and reuse recording in one cache for insertion policies of another cache | |
US7624224B1 (en) | System and method for directly executing code from block-based memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |