KR20180113536A - Dram(dynamic random access memory) 캐시 표시자 캐시들을 사용하는 스케일러블 dram 캐시 관리의 제공 - Google Patents
Dram(dynamic random access memory) 캐시 표시자 캐시들을 사용하는 스케일러블 dram 캐시 관리의 제공 Download PDFInfo
- Publication number
- KR20180113536A KR20180113536A KR1020187023757A KR20187023757A KR20180113536A KR 20180113536 A KR20180113536 A KR 20180113536A KR 1020187023757 A KR1020187023757 A KR 1020187023757A KR 20187023757 A KR20187023757 A KR 20187023757A KR 20180113536 A KR20180113536 A KR 20180113536A
- Authority
- KR
- South Korea
- Prior art keywords
- cache
- dram
- dram cache
- address
- indicator
- 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
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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
-
- 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/1008—Correctness of operation, e.g. memory ordering
-
- 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/28—Using a specific disk cache architecture
- G06F2212/281—Single cache
-
- 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/70—Details relating to dynamic memory management
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2207/00—Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
- G11C2207/22—Control and timing of internal memory operations
- G11C2207/2245—Memory devices with an internal cache buffer
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
DRAM(dynamic random access memory) 캐시 표시자 캐시들을 사용하는 스케일러블 DRAM 캐시 관리의 제공이 제공된다. 일 양상에서, DRAM 캐시 관리 회로는 고-대역폭 메모리 내의 DRAM 캐시에 대한 액세스를 관리하도록 제공된다. DRAM 캐시 관리 회로는 DRAM 캐시 표시자 캐시를 포함하고, DRAM 캐시 표시자 캐시는 시스템 메모리 DRAM의 마스터 테이블로부터 판독되고 DRAM 캐시 표시자들을 포함하는 마스터 테이블 엔트리들을 저장한다. DRAM 캐시 표시자들은, DRAM 캐시 관리 회로가, 시스템 메모리 DRAM의 메모리 라인이 고-대역폭 메모리의 DRAM 캐시에서 캐시되는지 여부를 결정하고, 만약 그렇다면, DRAM 캐시의 어느 웨이에 메모리 라인이 저장되는지를 결정하는 것을 가능하게 한다. DRAM 캐시 표시자 캐시에 기반하여, DRAM 캐시 관리 회로는, 최적의 방식으로 메모리 액세스 동작을 수행하기 위해 DRAM 캐시 및/또는 시스템 메모리 DRAM을 사용할지 여부를 결정할 수 있다.
Description
[0001]
본 출원은 "PROVIDING SCALABLE DYNAMIC RANDOM ACCESS MEMORY (DRAM) CACHE MANAGEMENT USING DRAM CACHE INDICATOR CACHES"라는 명칭으로 2016년 2월 22일자로 출원된 미국 가특허 출원 일련 번호 제 62/298,088 호에 대한 우선권을 주장하며, 상기 출원의 내용들은 그 전체가 인용에 의해 본원에 포함된다.
[0002]
본 출원은 "PROVIDING SCALABLE DYNAMIC RANDOM ACCESS MEMORY (DRAM) CACHE MANAGEMENT USING DRAM CACHE INDICATOR CACHES"라는 명칭으로 2016년 8월 4일자로 출원된 미국 특허 출원 일련 번호 제 15/228,320 호에 대한 우선권을 주장하며, 상기 출원의 내용은 그 전체가 인용에 의해 본원에 포함된다.
[0003]
본 개시내용의 기술은 일반적으로 DRAM(dynamic random access memory) 관리에 관한 것으로, 상세하게는, DRAM 캐시들의 관리에 관한 것이다.
[0004]
수직으로 상호 연결되는 다수의 적층된 다이들로 이루어진 다이-적층형(die-stacked) IC(integrated circuit)들의 출현은 다이-적층형 DRAM(dynamic random access memory)의 개발을 가능하게 했다. 다이-적층형 DRAM들은 본원에서 "고-대역폭 메모리"로 지칭되는 것을 구현하는 데 사용될 수 있다. 고-대역폭 메모리는 유사한 액세스 레이턴시를 제공하면서 종래의 시스템 메모리 DRAM보다 넓은 대역폭을 제공한다. 일부 구현들에서, 고-대역폭 메모리는 또한, "근접(near)" 메모리, 또는 다른 시스템 메모리 DRAM보다 메모리 인터페이스에 더 가깝게 물리적으로 로케이팅된 메모리일 수 있다. 고-대역폭 메모리는 시스템 메모리 DRAM으로부터 사전에 판독되어 비-제한적 예로서 L3(Level 3) 캐시와 같은 더 상위 레벨 캐시로부터 퇴거(evict)된 빈번히 액세스되는 데이터를 저장하도록 DRAM 캐시를 구현하는 데 사용될 수 있다. 고-대역폭 메모리의 DRAM 캐시를 제공하는 것은 시스템 메모리 DRAM에 대한 메모리 경합을 감소시키고, 따라서, 사실상 전체 메모리 대역폭을 증가시킬 수 있다.
[0005]
그러나, 고-대역폭 메모리의 DRAM 캐시의 관리는 문제들을 제기할 수 있다. DRAM 캐시는 시스템 메모리 DRAM보다 사이즈가 수십 배 더 작을 수 있다. 따라서, DRAM 캐시는 시스템 메모리 DRAM에 데이터의 서브세트만을 저장할 수 있기 때문에, DRAM 캐시의 효율적 사용은 저장될 메모리 어드레스들의 지능적 선택에 의존한다. 따라서, DRAM 캐시 관리 메커니즘은 DRAM 캐시에 어느 메모리 어드레스들이 선택적으로 설치되어야 하는지를 결정할 수 있어야 하고, 추가로 메모리 어드레스들이 언제 DRAM 캐시에 설치되어야 하고 그리고/또는 언제 DRAM 캐시로부터 퇴거되어야 하는지를 결정할 수 있어야 한다. DRAM 캐시 관리 메커니즘이 DRAM 캐시에 대한 액세스 레이턴시의 영향을 최소화하고, DRAM 캐시 사이즈 및/또는 시스템 메모리 DRAM 사이즈에 관련하여 스케일러블(scalable)하는 것이 또한 바람직할 수 있다.
[0006]
DRAM 캐시 관리에 대한 일부 접근법들은, 종래의 캐시들이 관리될 수 있는 방법과 유사하게, 캐시된 메모리 어드레스들에 대응하는 태그들을 저장하기 위해 캐시를 활용한다. 그러한 하나의 접근법 하에서는, 고-대역폭 메모리와는 별개인 컴퓨트 다이(compute die) 상의 SRAM(static random access memory)에 DRAM 캐시와 연관된 태그들 모두가 저장된다. 그러나, 더 큰 DRAM 캐시 사이즈들은 원하지 않는 그리고/또는 너무 커서 SRAM에 저장할 수 없는 태그들에 대한 큰 영역을 필요로 할 수 있기 때문에, 이러한 접근법은 DRAM 캐시 사이즈까지 충분히 스케일러블하지 않을 수 있다. 다른 접근법은, 컴퓨트 다이 상의 SRAM 대신에, DRAM 캐시 그 자체 내에 태그들을 로케이팅하는 것, 그리고 주어진 메모리 어드레스가 DRAM 캐시 내에 저장되는지 여부를 결정하기 위해 히트/미스(hit/miss) 예측자를 사용하는 것을 수반한다. 이러한 후자의 접근법은 컴퓨트 다이에서 SRAM의 사용을 최소화하지만, 임의의 부정확한 예측들은 데이터가 시스템 메모리 DRAM으로부터 판독되는 결과를 초래할 것이다. 예컨대, 메모리 어드레스가 DRAM 캐시 내에 로케이팅된다고 히트/미스 예측자가 부정확하게 예측하면, 시스템 메모리 DRAM으로부터 메모리 어드레스를 판독하기 이전에 DRAM 캐시로의 불필요한 판독으로부터 레이턴시 페널티가 발생된다. 반대로, 메모리 어드레스가 DRAM 캐시 내에 로케이팅되지 않는다고 히트/미스 예측자가 부정확하게 예측하면, 시스템 메모리 DRAM으로의 불필요한 판독을 회피하기 위한 기회가 낭비될 수 있다. 불필요한 부가적 판독들은 부가적 액세스 레이턴시를 발생시키며, 이는 DRAM 캐시의 사용으로부터 발생하는 어떠한 성능 개선들도 무효화할 수 있다.
[0007]
따라서, 레이턴시 패널티들 및 SRAM 소비를 최소화하면서 메모리 대역폭을 개선하도록 스케일러블 DRAM 캐시 관리를 제공하는 것이 바람직하다.
[0008]
상세한 설명에서 개시되는 양상들은 DRAM(dynamic random access memory) 캐시 표시자 캐시들을 사용하는 스케일러블 DRAM 캐시 관리를 제공하는 것을 포함한다. 일부 양상들에서, DRAM 캐시 관리 회로는 고-대역폭 메모리 내의 DRAM 캐시에 대한 액세스를 관리하도록 제공된다. DRAM 캐시 관리 회로는, DRAM 캐시 표시자들을 포함하고 시스템 메모리 DRAM의 마스터 테이블로부터 판독되는 마스터 테이블 엔트리들을 캐시하는 데 사용되는 DRAM 캐시 표시자 캐시를 포함한다. DRAM 캐시 표시자들은, DRAM 캐시 관리 회로가, 시스템 메모리 DRAM의 메모리 라인이 DRAM 캐시(즉, 고-대역폭 메모리를 사용하여 구현됨)에서 캐시되는지 여부를 결정하고, 만약 그렇다면, DRAM 캐시의 어느 웨이에 메모리 라인이 저장되는지를 결정하는 것을 가능하게 한다. DRAM 캐시 표시자 캐시에 기반하여, DRAM 캐시 관리 회로는, 메모리 연산이, DRAM 캐시를 사용하여 수행될 수 있는지 그리고/또는 시스템 메모리 DRAM을 사용하여 수행될 수 있는지를 결정할 수 있다. DRAM 캐시 관리 회로의 일부 양상들은 로드 밸런싱 회로를 추가로 제공할 수 있다. 데이터가 DRAM 캐시 또는 시스템 메모리 DRAM으로부터 판독될 수 있는 상황들에서, DRAM 캐시 관리 회로는 로드 밸런싱 회로를 사용하여 데이터를 판독할 적절한 소스를 선택할 수 있다.
[0009]
DRAM 캐시 관리 회로의 추가적 양상들은 동시-기록(write-through) 모드 또는 후-기록(write-back) 모드에서 동작하도록 구성될 수 있다. 후자의 양상에서, DRAM 캐시 표시자 캐시는 그 내부에 저장된 각각의 메모리 라인에 대한 더티 비트(dirty bit)를 제공할 수 있다. 일부 양상들에서, DRAM 캐시 및/또는 DRAM 캐시 표시자 캐시는 DRAM 캐시 관리 회로에 의한 확률적 결정에 기반하여 보충될 수 있다. 예컨대, 랜덤하게 선택된 데이터의 일부만이 DRAM 캐시 및/또는 DRAM 캐시 표시자 캐시에 기록되도록, DRAM 캐시 관리 회로는 랜덤 인터벌들로 DRAM 캐시 및/또는 DRAM 캐시 표시자 캐시를 보충하도록 구성될 수 있다.
[0010]
다른 양상에서, DRAM 캐시 관리 회로가 제공된다. DRAM 캐시 관리 회로는 고-대역폭 메모리의 일부인 DRAM 캐시에 통신가능하게 커플링되며, 시스템 메모리 DRAM에 추가로 통신가능하게 커플링된다. DRAM 캐시 관리 회로는, 시스템 메모리 DRAM의 마스터 테이블로부터 판독된 복수의 DRAM 캐시 표시자들 캐시하도록 구성된 DRAM 캐시 표시자 캐시를 포함한다. 복수의 DRAM 캐시 표시자들은 시스템 메모리 DRAM의 대응하는 메모리 라인이 DRAM 캐시에 캐시되는지 여부를 표시한다. DRAM 캐시 관리 회로는 판독 어드레스를 포함하는 메모리 판독 요청을 수신하도록 구성된다. DRAM 캐시 관리 회로는 DRAM 캐시 표시자 캐시에서 판독 어드레스가 발견되는지 여부를 결정하도록 추가로 구성된다. DRAM 캐시 관리 회로는 또한, DRAM 캐시 표시자 캐시에서 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 시스템 메모리 DRAM에서 판독 어드레스의 데이터를 판독하도록 구성된다. DRAM 캐시 관리 회로는 부가적으로, DRAM 캐시 표시자 캐시에서 판독 어드레스가 발견된다는 결정에 대한 응답으로, DRAM 캐시 표시자 캐시에 기반하여 DRAM 캐시에서 판독 어드레스가 발견되는지 여부를 결정하도록 구성된다. DRAM 캐시 관리 회로는, DRAM 캐시에서 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 시스템 메모리 DRAM에서 판독 어드레스의 데이터를 판독하도록 추가로 구성된다. DRAM 캐시 관리 회로는 또한, DRAM 캐시에서 판독 어드레스가 발견된다는 결정에 대한 응답으로, DRAM 캐시로부터 판독 어드레스에 대한 데이터를 판독하도록 구성된다.
[0011]
또 다른 양상에서, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법이 제공된다. 방법은, DRAM 캐시 관리 회로가, 판독 어드레스를 포함하는 메모리 판독 요청을 수신하는 단계를 포함한다. 방법은 DRAM 캐시 관리 회로의 DRAM 캐시 표시자 캐시에서 판독 어드레스가 발견되는지 여부를 결정하는 단계를 더 포함한다. 방법은 또한, DRAM 캐시 표시자 캐시에서 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 시스템 메모리 DRAM에서 판독 어드레스의 데이터를 판독하는 단계를 포함한다. 방법은 부가적으로, DRAM 캐시 표시자 캐시에서 판독 어드레스가 발견된다는 결정에 대한 응답으로, DRAM 캐시 표시자 캐시에 기반하여 고-대역폭 메모리의 일부인 DRAM 캐시에서 판독 어드레스가 발견되는지 여부를 결정하는 단계를 포함한다. 방법은 또한, DRAM 캐시에서 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 시스템 메모리 DRAM에서 판독 어드레스의 데이터를 판독하는 단계를 포함한다. 방법은 부가적으로, DRAM 캐시에서 판독 어드레스가 발견된다는 결정에 대한 응답으로, DRAM 캐시로부터 판독 어드레스에 대한 데이터를 판독하는 단계를 포함한다.
[0012]
또 다른 양상에서, DRAM 캐시 관리 회로가 제공된다. DRAM 캐시 관리 회로는 판독 어드레스를 포함하는 메모리 판독 요청을 수신하기 위한 수단을 포함한다. DRAM 캐시 관리 회로는 DRAM 캐시 관리 회로의 DRAM 캐시 표시자 캐시에서 판독 어드레스가 발견되는지 여부를 결정하기 위한 수단을 더 포함한다. DRAM 캐시 관리 회로는 또한, DRAM 캐시 표시자 캐시에서 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 시스템 메모리 DRAM의 판독 어드레스에서 데이터를 판독하기 위한 수단을 포함한다. DRAM 캐시 관리 회로는 부가적으로, DRAM 캐시 표시자 캐시에서 판독 어드레스가 발견된다는 결정에 대한 응답으로, DRAM 캐시 표시자 캐시에 기반하여, 고-대역폭 메모리의 일부인 DRAM 캐시에서 판독 어드레스가 발견되는지 여부를 결정하기 위한 수단을 포함한다. DRAM 캐시 관리 회로는 DRAM 캐시에서 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 시스템 메모리 DRAM의 판독 어드레스에서 데이터를 판독하기 위한 수단을 더 포함한다. DRAM 캐시 관리 회로는 또한, DRAM 캐시에서 판독 어드레스가 발견된다는 결정에 대한 응답으로, DRAM 캐시로부터 판독 어드레스에 대한 데이터를 판독하기 위한 수단을 포함한다.
[0013]
또 다른 양상에서, 컴퓨터-실행가능한 명령들이 저장된 비-일시적 컴퓨터-판독가능한 매체가 제공된다. 프로세서에 의해 실행될 때, 컴퓨터-실행가능한 명령들은, 프로세서로 하여금, 판독 어드레스를 포함하는 메모리 판독 요청을 수신하게 한다. 컴퓨터-실행가능한 명령들은 추가로, 프로세서로 하여금, DRAM 캐시 관리 회로의 DRAM 캐시 표시자 캐시에서 판독 어드레스가 발견되는지 여부를 결정하게 한다. 컴퓨터-실행가능한 명령들은 또한, 프로세서로 하여금, DRAM 캐시 표시자 캐시에서 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 시스템 메모리 DRAM에서 판독 어드레스의 데이터를 판독하게 한다. 컴퓨터-실행가능한 명령들은 부가적으로, 프로세서로 하여금, DRAM 캐시 표시자 캐시에서 판독 어드레스가 발견된다는 결정에 대한 응답으로, DRAM 캐시 표시자 캐시에 기반하여 고-대역폭 메모리의 일부인 DRAM 캐시에서 판독 어드레스가 발견되는지 여부를 결정하게 한다. 컴퓨터-실행가능한 명령들은 추가로, 프로세서로 하여금, DRAM 캐시에서 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 시스템 메모리 DRAM에서 판독 어드레스의 데이터를 판독하게 한다. 컴퓨터-실행가능한 명령들은 또한, 프로세서로 하여금, DRAM 캐시에서 판독 어드레스가 발견된다는 결정에 대한 응답으로, DRAM 캐시로부터 판독 어드레스에 대한 데이터를 판독하게 한다.
[0014]
도 1은 DRAM(dynamic random access memory) 캐시를 제공하는 고-대역폭 메모리 및 DRAM 캐시 표시자 캐시를 사용하는 스케일러블 DRAM 캐시 관리를 제공하기 위한 예시적 DRAM 캐시 관리 회로를 포함하는 프로세서-기반 시스템의 블록 다이어그램이다.
[0015] 도 2a-도 2b는 도 1의 DRAM 캐시 관리 회로에 의해 관리될 수 있는 2개의 예시적 DRAM 캐시들에 대한 예시적 마스터 테이블 엔트리들 및 DRAM 캐시 표시자 캐시 컨텐츠들을 예시하는 블록 다이어그램들이다.
[0016] 도 3은 도 1의 DRAM 캐시 표시자 캐시 및 DRAM 캐시를 사용하여 판독 연산을 수행하기 위한, 도 1의 DRAM 캐시 관리 회로의 예시적 동작들을 예시하는 흐름도이다.
[0017] 도 4a-도 4c는 동시-기록 모드 또는 후-기록 모드로 L3(Level 3) 캐시로부터 "클린(clean)"(즉, 수정되지 않은) 데이터의 퇴거로부터 발생하는 기록 연산을 수행하기 위한, 도 1의 DRAM 캐시 관리 회로의 예시적 동작들을 예시하는 흐름도들이다.
[0018] 도 5a-도 5c는 동시-기록 모드로 L3 캐시로부터 "더티"(즉, 수정된) 데이터의 퇴거로부터 발생하는 기록 연산을 수행하기 위한, 도 1의 DRAM 캐시 관리 회로의 예시적 동작들을 예시하는 흐름도들이다.
[0019] 도 6a-도 6d는 후-기록 모드로 L3 캐시로부터 더티 데이터의 퇴거로부터 발생하는 기록 연산을 수행하기 위한, 도 1의 DRAM 캐시 관리 회로의 예시적 동작들을 예시하는 흐름도들이다.
[0020] 도 7은 도 1의 DRAM 캐시 관리 회로를 포함할 수 있는 예시적 프로세서-기반 시스템의 블록 다이어그램이다.
[0015] 도 2a-도 2b는 도 1의 DRAM 캐시 관리 회로에 의해 관리될 수 있는 2개의 예시적 DRAM 캐시들에 대한 예시적 마스터 테이블 엔트리들 및 DRAM 캐시 표시자 캐시 컨텐츠들을 예시하는 블록 다이어그램들이다.
[0016] 도 3은 도 1의 DRAM 캐시 표시자 캐시 및 DRAM 캐시를 사용하여 판독 연산을 수행하기 위한, 도 1의 DRAM 캐시 관리 회로의 예시적 동작들을 예시하는 흐름도이다.
[0017] 도 4a-도 4c는 동시-기록 모드 또는 후-기록 모드로 L3(Level 3) 캐시로부터 "클린(clean)"(즉, 수정되지 않은) 데이터의 퇴거로부터 발생하는 기록 연산을 수행하기 위한, 도 1의 DRAM 캐시 관리 회로의 예시적 동작들을 예시하는 흐름도들이다.
[0018] 도 5a-도 5c는 동시-기록 모드로 L3 캐시로부터 "더티"(즉, 수정된) 데이터의 퇴거로부터 발생하는 기록 연산을 수행하기 위한, 도 1의 DRAM 캐시 관리 회로의 예시적 동작들을 예시하는 흐름도들이다.
[0019] 도 6a-도 6d는 후-기록 모드로 L3 캐시로부터 더티 데이터의 퇴거로부터 발생하는 기록 연산을 수행하기 위한, 도 1의 DRAM 캐시 관리 회로의 예시적 동작들을 예시하는 흐름도들이다.
[0020] 도 7은 도 1의 DRAM 캐시 관리 회로를 포함할 수 있는 예시적 프로세서-기반 시스템의 블록 다이어그램이다.
[0021]
이제 도시된 도면들을 참조하면, 본 개시내용의 몇몇 예시적 양상들이 설명된다. "예시적"이라는 용어는, "예, 사례 또는 예시로서 제공되는"을 의미하는 것으로 본원에서 사용된다. "예시적"으로서 본원에서 설명되는 임의의 양상은 반드시 다른 양상들에 비해 바람직하거나 또는 유리한 것으로서 해석되는 것은 아니다.
[0022]
상세한 설명에서 개시되는 양상들은 DRAM(dynamic random access memory) 캐시 표시자 캐시들을 사용하는 스케일러블 DRAM 캐시 관리를 제공하는 것을 포함한다. 본원에서 설명되는 바와 같이, DRAM 캐시 관리 방식은 DRAM 캐시 관리 방식에 의해 활용되는 자원들의 사이즈가 관리되고 있는 DRAM 캐시의 용량과 상대적으로 독립적이라는 의미에서 "스케일러블"하다. 따라서, 이와 관련하여, 도 1은 고-대역폭 메모리(106)의 일부인 DRAM 캐시(104)를 관리하기 위한 DRAM 캐시 관리 회로(102)를 제공하는 예시적 프로세서-기반 시스템(100)의 블록 다이어그램이다. 프로세서-기반 시스템(100)은 시스템 메모리 DRAM(108)을 포함하는데, 시스템 메모리 DRAM(108)은 일부 양상들에서, 하나 또는 그 초과의 DIMM(dual in-line memory module)들(도시되지 않음)을 포함할 수 있다. 프로세서-기반 시스템(100)은 추가로, 컴퓨트 다이(110)를 제공하는데, 그 위에 시스템 캐시(112)(이를테면, 비-제한적 예로서 L3(Level 3) 캐시)가 로케이팅된다. 프로세서-기반 시스템(100)은 다른 엘리먼트들 중에서도, 알려진 디지털 로직 엘리먼트들, 반도체 회로들, 프로세싱 코어들 및/또는 메모리 구조들 중 임의의 것, 또는 이들의 조합들을 포괄할 수 있다. 본원에서 설명되는 양상들은 엘리먼트들의 임의의 특정 어레인지먼트로 제한되는 것은 아니고, 개시되는 기법들은 반도체 다이들 또는 패키지들에 대한 다양한 구조들 및 레이아웃들로 용이하게 확장될 수 있다. 프로세서-기반 시스템(100)의 일부 양상들은 도 1에서 예시되는 것들 이외에 엘리먼트들을 포함할 수 있다는 것이 이해될 것이다.
[0023]
메모리 대역폭을 개선하기 위해, 프로세서-기반 시스템(100)의 고-대역폭 메모리(106) 내의 DRAM 캐시(104)가 시스템 메모리 DRAM(108) 내의 메모리 라인들(114(0)-114(X))로부터 사전에 판독된 그리고/또는 시스템 캐시(112)로부터 퇴거된 메모리 어드레스들(도시되지 않음) 및 데이터(도시되지 않음)를 캐시하는 데 사용될 수 있다. 비-제한적 예들로서, 일부 양상들은 시스템 메모리 DRAM(108)으로부터 데이터를 판독할 시에만 DRAM 캐시(104)에 데이터가 캐시될 수 있는 한편, 일부 양상들에서는 시스템 캐시(112)로부터 퇴거될 때에만 DRAM 캐시(104)에 데이터가 캐시될 수 있다고 규정할 수 있다. 일부 양상들에 따르면, 시스템 캐시(112)로부터의 프로세서 로드들 및 더티 퇴거들에 의해 트리거되는 판독들을 위해 시스템 메모리 DRAM(108)으로부터의 데이터를 판독할 시 DRAM 캐시(104)에 데이터가 캐시될 수 있다.
[0024]
고-대역폭 메모리(106) 내의 DRAM 캐시(104)는 시스템 메모리 DRAM(108)과 독립적으로 그리고 이와 병렬로 액세스될 수 있다. 결과적으로, DRAM 캐시(104)와 시스템 메모리 DRAM(108) 둘 모두로부터 동시에 판독함으로써 메모리 대역폭이 효과적으로 증가될 수 있다. 일부 양상들에서, DRAM 캐시(104)는 DRAM 캐시(104) 내에서 퇴거할 후보들을 결정하기 위한 랜덤 교체 정책을 구현할 수 있다.
[0025]
시스템 메모리 DRAM(108)에 저장된 마스터 테이블(116)은 DRAM 캐시(104)에 시스템 메모리 DRAM(108)의 어느 메모리 라인들(114(0)-114(X))이 저장되는지를 추적하는 데 사용된다. 본원에서 사용되는 바와 같이, 시스템 메모리 DRAM(108)의 "메모리 라인"은 시스템 캐시(112)의 캐시 라인(도시되지 않음)의 길이와 동일한 길이를 가지는 시스템 메모리 DRAM(108)의 일부분을 지칭한다는 것이 이해될 것이다. 마스터 테이블(116)은 시스템 메모리 DRAM(108)의 메모리 라인들(114(0)-114(X)) 각각에 대한 DRAM 캐시 표시자들(120(0)-120(X))을 저장하기 위한 마스터 테이블 엔트리들(118(0)-118(M))을 포함한다. 일부 양상들은 마스터 테이블 엔트리들(118(0)-118(M)) 각각의 사이즈가 기초 메모리의 메모리 액세스 입도(granularity)에 대응한다고 규정할 수 있다. 비-제한적 예로서, 64 바이트의 메모리 액세스 입도에 대해, 마스터 테이블 엔트리들(118(0)-118(M)) 각각은 마찬가지로, 64 바이트를 포함한다. 따라서, DRAM 캐시 표시자들(120(0)-120(X)) 각각이 4 비트를 포함하는 양상들에서, 마스터 테이블(116)의 64-바이트 마스터 테이블 엔트리들(118(0)-118(M)) 각각은 시스템 메모리 DRAM(108)의 128개의 메모리 라인들(114(0)-114(X))에 대한 DRAM 캐시 표시자들(120(0)-120(X))을 저장할 수 있다.
[0026]
일부 양상들에서, 마스터 테이블(116)의 DRAM 캐시 표시자들(120(0)-120(X)) 각각은, 고-대역폭 메모리(106)의 DRAM 캐시(104)에 시스템 메모리 DRAM(108)의 대응하는 메모리 라인(114(0)-114(X))이 저장되는지 여부 뿐만 아니라, 대응하는 메모리 라인(114(0)-114(X))이, DRAM 캐시(104)의 어느 웨이(122(0)-122(Z))에 저장되는지를 표시한다. 예컨대, 일부 양상들에서, DRAM 캐시 표시자들(120(0)-120(X)) 각각은 4 비트를 포함하고, DRAM 캐시(104)는 15개의 웨이들(122(0)-122(14))(즉, 24-1)을 제공할 수 있다. 0의 값을 가지는 DRAM 캐시 표시자(120(0)-120(X))는, 시스템 메모리 DRAM(108)의 대응하는 메모리 라인(114(0)-114(X))이 DRAM 캐시(104)에 저장되지 않음을 표시한다. 0보다 큰 값 N을 가지는 DRAM 캐시 표시자(120(0)-120(X))는 웨이(122(N-1)) ― 여기서, 0≤N-1≤Z ― 에서 DRAM 캐시(104)에 시스템 메모리 DRAM(108)의 대응하는 메모리 라인(114(0)-114(X))이 저장됨을 표시한다.
[0027]
일부 양상들에서, 마스터 테이블(116)의 마스터 테이블 엔트리들(118(0)-118(M))은 DRAM 캐시(104)에 의해 제공되는 웨이들(122(0)-122(Z))의 수에 따라 4 비트보다 큰 또는 작은 DRAM 캐시 표시자들(120(0)-120(X))을 제공할 수 있다는 것이 이해될 것이다. 비-제한적 예로서, 각각의 DRAM 캐시 표시자(120(0)-120(X))의 비트 수 Q에 대해, DRAM 캐시(104)는 다수의 웨이들(122(0)-122(Z))을 제공할 수 있는데, 여기서, Z=2Q-1. 따라서, 2 비트를 포함하는 DRAM 캐시 표시자(120(0)-120(X))는 3개의 웨이들(122(0)-122(2))로 조직화된 DRAM 캐시(104)에 대응하는 한편, 3 비트를 포함하는 DRAM 캐시 표시자(120(0)-120(X))는 7개의 웨이들(122(0)-122(6))을 제공하는 DRAM 캐시(104)에 대응한다. DRAM 캐시 표시자들(120(0)-120(X)) 및 DRAM 캐시(104)의 상이한 구성들은 도 2a 및 도 2b에 대해 아래에서 더 상세하게 논의된다.
[0028]
마스터 테이블(116)의 마스터 테이블 엔트리들(118(0)-118(M))은 시스템 메모리 DRAM(108)에 모든 각각의 메모리 라인(114(0)-114(X))에 대한 DRAM 캐시 표시자들(120(0)-120(X))을 저장하기 때문에, 시스템 메모리 DRAM(108)의 사이즈가 증가함에 따라 마스터 테이블(116)의 사이즈가 증가한다. 예컨대, 마스터 테이블(116) 내의 DRAM 캐시 표시자들(120(0)-120(X))이 각각 4 비트인 양상들에서, 마스터 테이블(116)의 전체 사이즈는 시스템 메모리 DRAM(108)의 사이즈의 0.4%이다. 따라서, 각각의 메모리 연산을 위해 마스터 테이블(116)에 액세스하는 것은 DRAM 캐시(104)를 사용하는 성능 이점들을 오프셋할 수 있는 레이턴시 페널티들을 초래할 수 있다. 따라서, 레이턴시 페널티들을 최소화하면서 메모리 대역폭을 개선하도록 DRAM 캐시(104)에 대한 액세스를 관리하기 위한 스케일러블 메커니즘을 제공하는 것이 바람직하다.
[0029]
이와 관련하여, DRAM 캐시(104)에 대한 액세스를 관리하기 위해 DRAM 캐시 관리 회로(102)가 제공된다. DRAM 캐시 관리 회로(102)는 컴퓨트 다이(110) 상에 로케이팅되며, 고-대역폭 메모리(106) 및 시스템 메모리 DRAM(108)에 통신 가능하게 커플링된다. DRAM 캐시 관리 회로(102)는 또한, 시스템 캐시(112)에 의해 판독되고 기록될 수 있다. 아래에서 더 상세하게 논의되는 바와 같이, DRAM 캐시 관리 회로(102)는 데이터를 리트리브할 메모리 어드레스를 특정하는 판독 어드레스(126)를 포함하는 메모리 판독 요청(124)의 수신에 대한 응답으로 메모리 판독 연산을 수행할 수 있다. 일부 양상들에서, DRAM 캐시 관리 회로(102)는 기록 데이터(132)가 기록될 기록 어드레스(130)를 포함하는 메모리 기록 요청(128)의 수신에 대한 응답으로 메모리 기록 연산을 추가로 수행할 수 있다.
[0030]
마스터 테이블(116)에 대한 액세스들로부터 발생할 수 있는 액세스 레이턴시를 감소시키기 위해, DRAM 캐시 관리 회로(102)는 DRAM 캐시 표시자 캐시(134)를 제공한다. DRAM 캐시 표시자 캐시(134)는 DRAM 캐시 표시자 캐시 라인들(138(0)-138(Y))의 웨이들(136(0)-136(C), 136'(0)-136'(C)) 내에서 빈번히 액세스되는 마스터 테이블 엔트리들(118(0)-118(M)) (및 그 내부에 저장된 DRAM 캐시 표시자들(120(0)-120(X))을 캐시하는 데 DRAM 캐시 관리 회로(102)에 의해 사용된다. 일부 양상들에서, DRAM 캐시 표시자 캐시(134)의 웨이들(136(0)-136(C), 136'(0)-136'(C)) 각각의 사이즈는 마스터 테이블(116)의 마스터 테이블 엔트리들(118(0)-118(M))의 사이즈에 대응한다. 일부 양상들은, DRAM 캐시 표시자 캐시(134)의 웨이들(136(0)-136(C), 136'(0)-136'(C)) 각각의 사이즈가 마스터 테이블(116)의 마스터 테이블 엔트리들(118(0)-118(M))의 사이즈보다 클 수 있다고 규정할 수 있다. 비-제한적 예로서, DRAM 캐시 표시자 캐시(134)의 웨이들(136(0)-136(C), 136'(0)-136'(C))은 더티 표시자들(140(0)-140(C), 140'(0)-140'(C))을 포함할 수 있으며, 더티 표시자들(140(0)-140(C), 140'(0)-140'(C))은 웨이(136(0)-136(C), 136'(0)-136'(C))당 1비트를 부가한다. 따라서, 웨이들(136(0)-136(C), 136'(0)-136'(C))이 DRAM 캐시 표시자(120(0)-120(X))당 4 비트의 사이즈로 64 바이트인 양상들에서, 총 128개의 여분의 비트가 더티 표시자들(140(0)-140(C), 140'(0)-140'(C))을 제공하기 위해 요구될 수 있다.
[0031]
DRAM 캐시 관리 회로(102)의 일부 양상들은 메모리 대역폭을 개선하고 메모리 액세스 경합을 감소시키기 위해 로드 밸런싱 회로(142)를 추가로 제공할 수 있다. 요청된 메모리 어드레스가 시스템 메모리 DRAM(108) 또는 DRAM 캐시(104)로부터 판독될 수 있는 상황들에서, 로드 밸런싱 회로(142)는 메모리 어드레스를 판독할 가장 적절한 소스를 식별한다. 예컨대, 일부 양상들에서, 로드 밸런싱 회로(142)는 DRAM 캐시(104) 및 시스템 메모리 DRAM(108)으로부터의 판독들의 레이턴시들을 모니터링할 수 있으며, 최근 과거의 더 양호한 평균 레이턴시를 가지는 소스를 선택할 수 있다. 이러한 방식으로, 로드 밸런싱 회로(142)는 시스템 자원들의 사용을 최적화하도록 시스템 메모리 DRAM(108)과 DRAM 캐시(104) 사이에 메모리 액세스들을 분배할 수 있다.
[0032]
일부 양상들에서, DRAM 캐시 관리 회로(102)는 "동시-기록" 캐시 관리 시스템으로서 구현될 수 있다. 동시-기록 구현에서, 시스템 캐시(112)로부터 퇴거된 더티(즉, 수정된) 데이터가 DRAM 캐시 관리 회로(102)에 의해 고-대역폭 메모리(106)의 DRAM 캐시(104)와 시스템 메모리 DRAM(108) 둘 모두에 기록된다. 결과적으로, DRAM 캐시(104) 내의 데이터 및 시스템 메모리 DRAM(108) 내의 데이터가 항상 동기화된다. 동시-기록 구현에서의 DRAM 캐시(104)와 시스템 메모리 DRAM(108) 둘 모두는 정확한 데이터를 포함하는 것이 보장되기 때문에, DRAM 캐시 관리 회로(102)의 로드 밸런싱 회로(142)는 DRAM 캐시(104)와 시스템 메모리 DRAM(108) 사이의 메모리 판독 연산들을 자유롭게 로드-밸런싱할 수 있다. 그러나, DRAM 캐시(104)로의 각각의 기록이 시스템 메모리 DRAM(108)으로의 기록에 대응할 것이기 때문에, DRAM 캐시 관리 회로(102)의 동시-기록 구현은 시스템 메모리 DRAM(108)으로의 감소된 기록 대역폭을 야기하지 않을 수 있다.
[0033]
DRAM 캐시 관리 회로(102)의 일부 양상들은 "후-기록" 캐시 관리 시스템으로서 구현될 수 있는데, 여기서, DRAM 캐시 관리 회로(102)의 DRAM 캐시 표시자 캐시(134)는 그 내부의 각각의 웨이(136(0)-136(C), 136'(0)-136'(C))에 대한 더티 표시자들(140(0)-140(C), 140'(0)-140'(C))을 포함한다. 더티 표시자들(140(0)-140(C), 140'(0)-140'(C)) 각각은 DRAM 캐시 표시자 캐시(134) 내의 웨이(136(0)-136(C), 136'(0)-136'(C))에 대응하는 DRAM 캐시(104)에 저장된 데이터가 더티한지 여부(즉, 시스템 메모리 DRAM(108)이 아니라 DRAM 캐시(104)에 데이터가 기록되었는지 여부)를 표시한다. 데이터가 더티가 아니라면, 데이터는 DRAM 캐시 관리 회로(102)의 로드 밸런싱 회로(142)에 의해 결정된 바와 같이, DRAM 캐시(104) 또는 시스템 메모리 DRAM(108)으로부터 판독될 수 있다. 그러나, 더티 표시자(140(0)-140(C), 140'(0)-140'(C))가 DRAM 캐시(104)에 저장된 데이터가 더티임을 표시한다면, 로드 밸런싱이 가능하지 않은데, 이는 DRAM 캐시(104)가 단지 수정된 데이터에 대한 소스이기 때문이다. 따라서, DRAM 캐시 관리 회로(102)는 DRAM 캐시(104)로부터 더티 데이터를 판독한다.
[0034]
DRAM 캐시 관리 회로(102)의 후-기록 구현은 시스템 메모리 DRAM(108)에 대한 메모리 기록 대역폭 소비를 감소시킬 수 있지만, DRAM 캐시 관리 회로(102)는 DRAM 캐시(104)로부터 퇴거된 더티 데이터를 결국 시스템 메모리 DRAM(108)으로 후기록해야 한다. DRAM 캐시 관리 회로(102)의 후-기록 구현의 일부 양상들에서는, DRAM 캐시 표시자 캐시 라인(138(0)-138(Y))이 DRAM 캐시 표시자 캐시(134)로부터 퇴거될 때, DRAM 캐시 관리 회로(102)는 퇴거된 DRAM 캐시 표시자 캐시 라인(138(0)-138(Y))에 대응하는 DRAM 캐시(104) 내의 모든 더티 데이터를 시스템 메모리 DRAM(108)로 복사하도록 구성된다.
[0035]
DRAM 캐시 관리 회로(102)의 일부 양상들은 DRAM 캐시 관리 회로(102)에 의해 이루어진 대응하는 확률적 결정들에 따라 일부 연산들(예컨대, 비-제한적 예들로서, 시스템 메모리 DRAM(108) 및/또는 DRAM 캐시(104)로의 메모리 액세스들을 수반하는 연산들)을 수행함으로써 메모리 대역폭을 추가로 개선할 수 있다. 각각의 확률적 결정은 대응하는 연산의 주파수를 튜닝하는 데 사용될 수 있으며, 무상태(stateless)(즉, 이전 확률적 결정들의 결과와 관련되지 않음)일 수 있다. 예컨대, DRAM 캐시 관리 회로(102)의 일부 양상들에 따르면, 시스템 캐시(112)에 의해 퇴거된, 랜덤하게-선택된 데이터의 일부만이 DRAM 캐시(104)에 기록되도록, 시스템 캐시(112)에 의해 퇴거된 데이터는 확률적 결정에 기반하여 DRAM 캐시(104)에 기록될 수 있다. 유사하게, DRAM 캐시 관리 회로(102)의 일부 양상들은 확률적 결정에 기반하여 (예컨대, 마스터 테이블(116)로부터의 판독 데이터에 대한 마스터 테이블 엔트리(118(0)-118(M))를 DRAM 캐시 표시자 캐시(134)로 복사함으로써) DRAM 캐시 표시자 캐시(134)를 보충하도록 구성될 수 있다. 따라서, "확률적으로" 발생하는 것으로 본원에서 설명되는 각각의 연산은 주어진 경우에 수행될 수도 또는 수행되지 않을 수도 있다는 것 그리고 추가로, 주어진 확률적 연산의 발생 또는 그의 결여는 DRAM 캐시 관리 회로(102)에 의한 부가적 연산들을 추가로 트리거할 수 있다는 것이 이해될 것이다.
[0036]
도 1의 DRAM 캐시(104)의 일부 구현들에 대한 예시적 마스터 테이블 엔트리들(118(0)-118(M)) 및 DRAM 캐시 표시자(120(0)-120(X)) 컨텐츠들을 예시하기 위해, 도 2a-도 2b가 제공된다. 도 2a는 15개의 웨이들을 포함하는 DRAM 캐시(104)의 구현을 예시하는 한편, 도 2b는 3개의 웨이들을 포함하는 DRAM 캐시(104)의 구현을 예시한다. 명료함을 위해, 도 1의 엘리먼트들은 도 2a 및 도 2b를 설명하는 데 참조된다.
[0037]
도 2a에서, 64 바이트의 사이즈를 가지는 예시적 마스터 테이블 엔트리(200)(이는 도 1의 마스터 테이블 엔트리들(118(0)-118(M)) 중 하나에 대응할 수 있음)가 예시된다. 마스터 테이블 엔트리(200)는 DRAM 캐시 표시자들(202(0)-202(127))(도 1의 DRAM 캐시 표시자들(120(0)-120(X))에 대응함)을 포함하고, DRAM 캐시 표시자들(202(0)-202(127)) 각각은 사이즈가 4 비트이다. 따라서, 마스터 테이블 엔트리(200)는 시스템 메모리 DRAM(108)의 128개의 메모리 라인들(114(0)-114(X))에 대한 DRAM 캐시 표시자들(202(0)-202(127))을 저장한다. DRAM 캐시 표시자들(202(0)-202(127))을 캐시하기 위해, DRAM 캐시 표시자 캐시(134)는 DRAM 캐시 표시자 캐시 라인들(204(0)-204(511))(도 1의 DRAM 캐시 표시자 캐시 라인들(138(0)-138(Y))에 대응함)을 제공한다. DRAM 캐시 표시자 캐시 라인들(204(0)-204(511)) 각각은 DRAM 캐시 표시자 캐시 라인들(204(0), 204(511))의 웨이들(206(0)-206(7), 208(0)-208(7))과 같은 8개의 웨이들로 각각 구성된다. 웨이들(206(0)-206(7), 208(0)-208(7)) 각각은 도 1의 웨이들(136(0)-136(C), 136'(0)-136'(C))에 대응하며, 마스터 테이블 엔트리(200)와 같은 1개의 마스터 테이블 엔트리를 저장할 수 있다.
[0038]
이제 도 2b를 참조하면, 64 바이트의 마스터 테이블 엔트리(210)가 도시된다. 도 2b의 예에서, 마스터 테이블 엔트리(210)는 DRAM 캐시 표시자들(212(0)-212(255))을 포함하는데, DRAM 캐시 표시자들(212(0)-212(255)) 각각은 사이즈가 2 비트이다. 따라서, 마스터 테이블 엔트리(210)는 시스템 메모리 DRAM(108)의 256개의 메모리 라인들에 대한 DRAM 캐시 표시자들(212(0)-212(255))을 저장한다. 이 예에서의 DRAM 캐시 표시자 캐시(134)는 DRAM 캐시 표시자들(212(0)-212(255))을 캐시하기 위해 DRAM 캐시 표시자 캐시 라인들(214(0)-214(511))을 제공한다. DRAM 캐시 표시자 캐시 라인들(214(0)-214(511)) 각각은 DRAM 캐시 표시자 캐시 라인들(214(0), 214(511))의 웨이들(216(0)-216(7), 218(0)-218(7))과 같은 8개의 웨이들로 각각 구성된다. 웨이들(216(0)-216(7), 218(0)-218(7)) 각각은 마스터 테이블 엔트리(210)와 같은 1개의 마스터 테이블 엔트리를 저장할 수 있다.
[0039]
도 3은 도 1의 DRAM 캐시 표시자 캐시(134) 및 DRAM 캐시(104)를 사용하여 판독 연산을 수행하기 위한, 도 1의 DRAM 캐시 관리 회로(102)의 예시적 동작들을 예시하는 흐름도이다. 명료함을 위해, 도 1의 엘리먼트들이 도 3을 설명하는 데 참조된다. 도 3에서, (예컨대, 시스템 캐시(112) 상에서의 미스의 결과로서) DRAM 캐시 관리 회로(102)가 판독 어드레스(126)를 포함하는 메모리 판독 요청(124)을 수신하는 것(블록(300))으로 동작들이 시작된다. 따라서, DRAM 캐시 관리 회로(102)는 본원에서 "판독 어드레스를 포함하는 메모리 판독 요청을 수신하기 위한 수단"으로 지칭될 수 있다. DRAM 캐시 관리 회로(102)는 DRAM 캐시 관리 회로(102)의 DRAM 캐시 표시자 캐시(134)에서 판독 어드레스(126)가 발견되는지 여부를 결정한다(블록(302)). 따라서, DRAM 캐시 관리 회로(102)는 본원에서 "DRAM 캐시 관리 회로의 DRAM 캐시 표시자 캐시에서 판독 어드레스가 발견되는지 여부를 결정하기 위한 수단"으로 지칭될 수 있다.
[0040]
DRAM 캐시 표시자 캐시(134)에서 메모리 판독 요청(124)의 판독 어드레스(126)가 발견되지 않는다면, DRAM 캐시 관리 회로(102)는 시스템 메모리 DRAM(108)의 판독 어드레스(126)에서 데이터를 판독한다(블록(304)). 이와 관련하여, DRAM 캐시 관리 회로(102)는, 본원에서 "DRAM 캐시 표시자 캐시에서 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 시스템 메모리 DRAM의 판독 어드레스에서 데이터를 판독하기 위한 수단"으로 지칭될 수 있다. 판독 어드레스(126)에서 데이터를 판독하는 것과 병행하여, DRAM 캐시 관리 회로(102)의 일부 양상들은 DRAM 캐시 표시자 캐시(134)를 확률적으로 보충할 수 있다(블록(306)). DRAM 캐시 표시자 캐시(134)를 보충함으로써, (판독 데이터에 공간적으로 인접할 수 있는) 후속 판독들이 DRAM 캐시 표시자 캐시(134) 히트를 초래할 가능성이 증가될 수 있다.
[0041]
일부 양상들에서, DRAM 캐시 표시자 캐시(134)를 확률적으로 보충하는 단계는 비-제한적 예로서, 마스터 테이블(116)로부터의 판독된 데이터에 대한 마스터 테이블 엔트리(118(0)-118(M))를 DRAM 캐시 표시자 캐시(134)로 복사하는 단계를 포함할 수 있다. 일부 양상들은 DRAM 캐시 표시자 캐시(134)를 보충하기 위한 블록(306)의 동작들이 시스템 메모리 DRAM(108)의 마스터 테이블(116)로부터 판독 어드레스(126)에 걸친 마스터 테이블 엔트리(118(0)-118(M))를 판독하는 단계를 포함할 수 있다고 규정할 수 있다. 그런 다음, 마스터 테이블 엔트리(118(0)-118(M))는 DRAM 캐시 표시자 캐시(134)에 설치된다. 마스터 테이블 엔트리(118(0)-118(M))의 설치가 DRAM 캐시 표시자 캐시(134)로부터의 웨이들(136(0)-136(C), 136'(0)-136'(C)) 중 하나의 퇴거를 야기하면, 시스템 메모리 DRAM(108)의 마스터 테이블(116)에 (존재할 수 있는 어떠한 더티 표시자들(140(0)-140(C), 140'(0)-140'(C))도 없이) 퇴거된 웨이(136(0)-136(C), 136'(0)-136'(C))의 컨텐츠들이 기록된다. DRAM 캐시 관리 회로(102)가 후-기록 모드로 동작하도록 구성되는 양상들에서, 퇴거된 웨이(136(0)-136(C), 136'(0)-136'(C))에 의해 표시되는 임의의 더티 DRAM 캐시 라인들은 또한, DRAM 캐시(104)로부터 시스템 메모리 DRAM(108)으로 복사된다.
[0042]
DRAM 캐시 표시자 캐시(134)에서 판독 어드레스(126)가 발견되었다고 DRAM 캐시 관리 회로(102)가 판정 블록(302)에서 결정하면, DRAM 캐시 관리 회로(102)는 다음으로, DRAM 캐시 표시자 캐시(134)에 기반하여, 고-대역폭 메모리(106)의 일부인 DRAM 캐시(104)에서 판독 어드레스(126)가 발견되는지 여부를 결정한다(블록(308)). 따라서, DRAM 캐시 관리 회로(102)는 본원에서 "DRAM 캐시 표시자 캐시에서 판독 어드레스가 발견된다는 결정에 대한 응답으로, DRAM 캐시 표시자 캐시에 기반하여, 고-대역폭 메모리의 일부인 DRAM 캐시에서 판독 어드레스가 발견되는지 여부를 결정하기 위한 수단"으로 지칭될 수 있다. 일부 양상들에서, DRAM 캐시(104)에서 판독 어드레스(126)가 발견되는지 여부를 결정하는 단계는 DRAM 캐시 표시자 캐시(134)에서 판독 어드레스(126)에 대한 웨이 수(way number)가 0이 아닌지를 결정하는 단계를 포함할 수 있다. 만약 그렇다면, 판독 어드레스(126)는 DRAM 캐시(104)에 있다. 그렇지 않으면, DRAM 캐시 표시자 캐시(134)의 판독 어드레스(126)에 대한 웨이 수가 0이면, 판독 어드레스(126)는 DRAM 캐시(104)에 있지 않다.
[0043]
DRAM 캐시(104)에서 판독 어드레스(126)가 발견되지 않는다면, DRAM 캐시 관리 회로(102)는 시스템 메모리 DRAM(108)의 판독 어드레스(126)에서 데이터를 판독한다(블록(310)). 따라서, DRAM 캐시 관리 회로(102)는, 본원에서 "DRAM 캐시에서 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 시스템 메모리 DRAM의 판독 어드레스에서 데이터를 판독하기 위한 수단"으로 지칭될 수 있다. 그러나, DRAM 캐시(104)에서 판독 어드레스(126)가 발견되었다고 DRAM 캐시 관리 회로(102)가 판정 블록(308)에서 결정하면, DRAM 캐시 관리 회로(102)는 일부 양상들에서, DRAM 캐시(104)의 판독 어드레스(126)에 대한 데이터가 클린인지 여부(또는 대안적으로, DRAM 캐시 관리 회로(102)가 동시-기록 모드로 동작하도록 구성되는지 여부)를 결정한다(블록(312)). DRAM 캐시(104) 내의 데이터가 클린이지 않고 그리고/또는 DRAM 캐시 관리 회로(102)가 동시-기록 모드로 동작하고 있지 않으면, 요청된 데이터는 DRAM 캐시(104)로부터만 안전하게 판독될 수 있다. 따라서, DRAM 캐시 관리 회로(102)는 DRAM 캐시(104)로부터 판독 어드레스(126)에 대한 데이터를 판독한다(블록(314)). 이와 관련하여, DRAM 캐시 관리 회로(102)는, 본원에서 "DRAM 캐시에서 판독 어드레스가 발견된다는 결정에 대한 응답으로, DRAM 캐시로부터 판독 어드레스에 대한 데이터를 판독하기 위한 수단"으로 지칭될 수 있다.
[0044]
DRAM 캐시(104) 내의 데이터가 클린이고 그리고/또는 DRAM 캐시 관리 회로(102)가 동시-기록 모드로 동작하고 있다고 DRAM 캐시 관리 회로(102)가 판정 블록(312)에서 결정하면, 요청된 데이터는 시스템 메모리 DRAM(108) 또는 DRAM 캐시(104)로부터 안전하게 판독될 수 있다. 따라서, DRAM 캐시 관리 회로(102)의 로드 밸런싱 회로(142)는 비-제한적 예들로서 대역폭 및 레이턴시와 같은 로드 밸런싱 기준들에 기반하여 DRAM 캐시(104)와 시스템 메모리 DRAM(108) 중에서 선호되는 데이터 소스를 식별한다(블록(316)). 시스템 메모리 DRAM(108)이 선호되는 데이터 소스라고 로드 밸런싱 회로(142)가 결정하면, 판독 어드레스(126)에서의 데이터는 시스템 메모리 DRAM(108)으로부터 판독될 수 있다(블록(318)). 유사하게, DRAM 캐시(104)가 선호되는 데이터 소스라고 로드 밸런싱 회로(142)가 결정하면, 판독 어드레스(126)에 대한 데이터는 DRAM 캐시(104)로부터 판독될 수 있다(블록(320)).
[0045]
동시-기록 모드 또는 후-기록 모드로 시스템 캐시(112)로부터 "클린"(즉, 수정되지 않은) 데이터의 퇴거로부터 발생하는 기록 연산을 수행하기 위한, 도 1의 DRAM 캐시 관리 회로(102)의 예시적 동작들을 예시하기 위해, 도 4a-도 4c가 제공된다. 명료함을 위해, 도 1의 엘리먼트들은 도 4a-도 4c를 설명하는 데 참조된다. 도 4a에서, 동작들은, DRAM 캐시 관리 회로(102)가 기록 어드레스(130) 및 기록 데이터(132)를 포함하는 메모리 기록 요청(128)을 수신하는 것(블록(400))으로 시작된다. 이 예에서, 기록 데이터(132)는 시스템 캐시(112)로부터 퇴거된 클린(즉, 수정되지 않은) 데이터를 표현하며, 따라서, 본원에서 "클린 퇴거 데이터(132)"로 지칭된다.
[0046]
DRAM 캐시 관리 회로(102)는 DRAM 캐시 표시자 캐시(134)에서 클린 퇴거 데이터(132)의 기록 어드레스(130)가 발견되는지 여부를 결정한다(블록(402)). DRAM 캐시 표시자 캐시(134)에 기록 어드레스(130)가 존재하지 않으면, DRAM 캐시 관리 회로(102)는 (예컨대, 마스터 테이블(116)로부터의 마스터 테이블 엔트리(118(0)-118(M))를 DRAM 캐시 표시자 캐시(134)로 복사함으로써) DRAM 캐시 표시자 캐시(134)를 확률적으로 보충한다(블록(404)). DRAM 캐시 표시자 캐시(134)가 블록(404)에서 보충되지 않으면(즉, 보충이 발생하지 않을 것으로 확률적으로 결정되었으면), 프로세싱이 완료된다(블록(406)). 그렇지 않으면, DRAM 캐시 관리 회로(102)는 블록(408)에서 프로세싱을 재개한다.
[0047]
DRAM 캐시 표시자 캐시(134)에 클린 퇴거 데이터(132)의 기록 어드레스(130)가 존재한다고 DRAM 캐시 관리 회로(102)가 판정 블록(402)에서 결정하면 (또는 DRAM 캐시 표시자 캐시(134)가 블록(404)에서 보충되면), DRAM 캐시 관리 회로(102)는 다음으로, DRAM 캐시(104)에 클린 퇴거 데이터(132)의 기록 어드레스(130)가 존재하는지 여부를 결정한다(블록(408)). DRAM 캐시(104)에 기록 어드레스(130)가 존재하면, 프로세싱이 완료된다(블록(406)). 그러나, DRAM 캐시(104)에 클린 퇴거 데이터(132)의 기록 어드레스(130)가 존재하지 않으면, 도 4b의 블록(410)에서 프로세싱이 재개된다.
[0048]
이제 도 4b를 참조하면, DRAM 캐시 관리 회로(102)는 다음으로, DRAM 캐시(104)에 기록 어드레스(130) 및 클린 퇴거 데이터(132)를 확률적으로 기록한다(블록(410)). 일부 양상들에서, DRAM 캐시(104)에 기록 어드레스(130) 및 클린 퇴거 데이터(132)를 기록하기 위한 블록(410)의 동작들은 먼저, DRAM 캐시(104)로부터 퇴거될 웨이(122(0)-122(Z))를 랜덤하게 선택하는 단계를 포함할 수 있다(블록(412)). DRAM 캐시 관리 회로(102)는 선택된 웨이(122(0)-122(Z))의 메모리 어드레스를 DRAM 캐시(104)로부터 판독한다(블록(414)). 그런 다음, DRAM 캐시 관리 회로(102)는 DRAM 캐시(104)의 선택된 웨이(122(0)-122(Z))에 기록 어드레스(130) 및 클린 퇴거 데이터(132)를 기록한다(블록(416)). DRAM 캐시 관리 회로(102)는 DRAM 캐시 표시자 캐시(134)의 기록 어드레스(130)에 대한 웨이 수를 선택된 웨이(122(0)-122(Z))의 웨이 수로 업데이트한다(블록(418)). 그런 다음, 프로세싱은 도 4c의 블록(420)에서 계속된다.
[0049]
도 4c를 참조하면, DRAM 캐시(104)에 기록 어드레스(130) 및 클린 퇴거 데이터(132)를 확률적으로 기록하기 위한 블록(410)의 추가적 동작들은, DRAM 캐시 표시자 캐시(134)에 선택된 웨이(122(0)-122(Z))의 메모리 어드레스가 존재하는지 여부를 DRAM 캐시 관리 회로(102)가 결정하는 단계를 포함한다(블록(420)). 그렇지 않으면, 도 4c의 블록(424)에서 프로세싱이 재개된다. DRAM 캐시 표시자 캐시(134)에 선택된 웨이(122(0)-122(Z))의 메모리 어드레스가 존재한다고 DRAM 캐시 관리 회로(102)가 판정 블록(420)에서 결정하면, DRAM 캐시 관리 회로(102)는 DRAM 캐시 표시자 캐시(134)의 메모리 어드레스에 대한 선택된 웨이(122(0)-122(Z))의 웨이 수를 리셋한다(블록(422)).
[0050]
DRAM 캐시 표시자 캐시(134)에 선택된 웨이(122(0)-122(Z))의 메모리 어드레스가 존재하지 않는다고 DRAM 캐시 관리 회로(102)가 판정 블록(420)에서 결정하면, DRAM 캐시 관리 회로(102)는 DRAM 캐시 표시자 캐시(134)를 보충한다(블록(424)). 일부 양상들에서, DRAM 캐시 표시자 캐시(134)를 보충하기 위한 블록(424)의 동작들은 메모리 어드레스에 대응하는 선택된 웨이(122(0)-122(Z))의 마스터 테이블 엔트리(118(0)-118(M))를 시스템 메모리 DRAM(108)의 마스터 테이블(116)로부터 판독하는 단계를 포함한다(블록(426)). 일부 양상들에서, DRAM 캐시 관리 회로(102)는 다음으로, 마스터 테이블 엔트리(118(0)-118(M))에 기반하여 DRAM 캐시 표시자 캐시(134)에 메모리 어드레스에 대한 선택된 웨이(122(0)-122(Z))의 웨이 수를 기록할 수 있다(블록(428)). 일부 양상들에서, DRAM 캐시 관리 회로(102)는 메모리 어드레스에 대응하는 선택된 웨이(122(0)-122(Z))의 웨이 수를 리셋한다(블록(430)). 그런 다음, DRAM 캐시 관리 회로(102)는 (DRAM 캐시 표시자 캐시(134)의 마스터 테이블 엔트리(118(0)-118(M))를 설치하지 않으면서) 시스템 메모리 DRAM(108)의 마스터 테이블(116)에 웨이 수를 기록한다(블록(432)).
[0051]
도 5a-도 5c는 동시-기록 모드로 시스템 캐시(112)로부터 더티 데이터의 퇴거로부터 발생하는 기록 연산을 수행하기 위한, 도 1의 DRAM 캐시 관리 회로(102)의 예시적 동작들을 예시하도록 제공된다. 명료함을 위해, 도 1의 엘리먼트들이 도 5a-도 5c를 설명하는 데 참조된다. 도 5a에서, 동작들은, DRAM 캐시 관리 회로(102)가 기록 어드레스(130) 및 기록 데이터(132)를 포함하는 메모리 기록 요청(128)을 수신하는 것(블록(500))으로 시작된다. 도 5a의 예에서, 기록 데이터(132)는 시스템 캐시(112)로부터 퇴거된 더티(즉, 수정된) 데이터를 표현하며, 결과적으로, 본원에서 "더티 퇴거 데이터(132)"로 지칭된다.
[0052]
DRAM 캐시 관리 회로(102)는 DRAM 캐시 표시자 캐시(134)에서 더티 퇴거 데이터(132)의 기록 어드레스(130)가 발견되는지 여부를 결정한다(블록(502)). DRAM 캐시 표시자 캐시(134)에 기록 어드레스(130)가 존재하지 않으면, DRAM 캐시 관리 회로(102)는 (비-제한적 예로서, 마스터 테이블(116)로부터의 마스터 테이블 엔트리(118(0)-118(M))를 DRAM 캐시 표시자 캐시(134)로 복사함으로써) DRAM 캐시 표시자 캐시(134)를 확률적으로 보충한다(블록(504)). DRAM 캐시 표시자 캐시(134)가 블록(504)에서 보충되면(즉, 보충이 발생할 것으로 확률적으로 결정되었으면), 블록(510)에서 프로세싱이 재개된다. 그렇지 않으면, DRAM 캐시 관리 회로(102)는 (예컨대, DRAM 캐시 표시자(120(0)-120(X))에 대한 마스터 테이블 엔트리(118(0)-118(M))에 대해 RMW(read-modify-write) 연산을 수행함으로써) 시스템 메모리 DRAM(108)의 마스터 테이블(116)의 기록 어드레스(130)에 대응하는 DRAM 캐시 표시자(120(0)-120(X))를 업데이트한다(블록(506)). 그런 다음, DRAM 캐시 관리 회로(102)는 DRAM 캐시(104)에 더티 퇴거 데이터(132)를 기록한다(블록(508)). 일부 양상들에서, DRAM 캐시 표시자(120(0)-120(X))를 업데이트하기 위한 블록(506)의 동작들 및 DRAM 캐시(104)에 더티 퇴거 데이터(132)를 기록하기 위한 블록(508)의 동작들이 병렬로 수행될 수 있다는 것이 이해될 것이다.
[0053]
DRAM 캐시 표시자 캐시(134)에서 더티 퇴거 데이터(132)의 기록 어드레스(130)가 발견된다고 DRAM 캐시 관리 회로(102)가 판정 블록(502)에서 결정하면 (또는 DRAM 캐시 표시자 캐시(134)가 블록(504)에서 보충되면), DRAM 캐시 관리 회로(102)는 다음으로, DRAM 캐시(104)에서 더티 퇴거 데이터(132)의 기록 어드레스(130)가 발견되는지 여부를 결정한다(블록(510)). DRAM 캐시(104)에서 기록 어드레스(130)가 발견되지 않으면, 도 5b의 블록(512)에서 프로세싱이 재개된다. 그러나, DRAM 캐시(104)에서 기록 어드레스(130)가 발견된다고 DRAM 캐시 관리 회로(102)가 판정 블록(510)에서 결정하면, DRAM 캐시 관리 회로(102)는 (예컨대, DRAM 캐시(104)에 비-퇴거-기록(no-evict-write)을 수행함으로써) DRAM 캐시(104)에 더티 퇴거 데이터(132)를 기록한다(블록(514)). 그런 다음, DRAM 캐시 관리 회로(102)는 시스템 메모리 DRAM(108)에 더티 퇴거 데이터(132)를 기록한다(블록(516)).
[0054]
도 5b를 참조하면, DRAM 캐시 관리 회로(102)는 다음으로, DRAM 캐시(104)에 기록 어드레스(130) 및 더티 퇴거 데이터(132)를 확률적으로 기록한다(블록(512)). 일부 양상들은, DRAM 캐시(104)에 기록 어드레스(130) 및 더티 퇴거 데이터(132)를 기록하기 위한 블록(512)의 동작들이 먼저, DRAM 캐시(104)로부터 퇴거될 웨이(122(0)-122(Z))를 랜덤하게 선택하는 단계(블록(518))를 포함할 수 있다고 규정할 수 있다. 선택된 웨이(122(0)-122(Z))의 메모리 어드레스는 DRAM 캐시(104)로부터 DRAM 캐시 관리 회로(102)에 의해 판독된다(블록(520)). 그런 다음, DRAM 캐시 관리 회로(102)는 DRAM 캐시(104)의 선택된 웨이(122(0)-122(Z))에 기록 어드레스(130) 및 더티 퇴거 데이터(132)를 기록한다(블록(522)). DRAM 캐시 관리 회로(102)는 DRAM 캐시 표시자 캐시(134)의 기록 어드레스(130)에 대한 웨이 수를 선택된 웨이(122(0)-122(Z))의 웨이 수로 업데이트한다(블록(524)). 그런 다음, 프로세싱은 도 5c의 블록(526)에서 계속된다.
[0055]
이제 도 5c를 참조하면, DRAM 캐시(104)에 기록 어드레스(130) 및 더티 퇴거 데이터(132)를 확률적으로 기록하기 위한 블록(512)의 추가적 동작들은, DRAM 캐시 표시자 캐시(134)에 선택된 웨이(122(0)-122(Z))의 메모리 어드레스가 존재하는지 여부를 DRAM 캐시 관리 회로(102)가 결정하는 단계를 포함한다(블록(526)). 그렇지 않으면, 도 5c의 블록(528)에서 프로세싱이 재개된다. DRAM 캐시 표시자 캐시(134)에 선택된 웨이(122(0)-122(Z))의 메모리 어드레스가 존재한다고 DRAM 캐시 관리 회로(102)가 판정 블록(526)에서 결정하면, DRAM 캐시 관리 회로(102)는 DRAM 캐시 표시자 캐시(134)의 메모리 어드레스에 대한 선택된 웨이(122(0)-122(Z))의 웨이 수를 리셋한다(블록(530)).
[0056]
DRAM 캐시 표시자 캐시(134)에 선택된 웨이(122(0)-122(Z))의 메모리 어드레스가 존재하지 않는다고 DRAM 캐시 관리 회로(102)가 판정 블록(526)에서 결정하면, DRAM 캐시 관리 회로(102)는 DRAM 캐시 표시자 캐시(134)를 보충한다(블록(528)). 일부 양상들에서, DRAM 캐시 표시자 캐시(134)를 보충하기 위한 블록(528)의 동작들은 메모리 어드레스에 대응하는 선택된 웨이(122(0)-122(Z))의 마스터 테이블 엔트리(118(0)-118(M))를 시스템 메모리 DRAM(108)의 마스터 테이블(116)로부터 판독하는 단계를 포함한다(블록(532)). 일부 양상들에서, DRAM 캐시 관리 회로(102)는 다음으로, 마스터 테이블 엔트리(118(0)-118(M))에 기반하여 DRAM 캐시 표시자 캐시(134)에 메모리 어드레스에 대한 선택된 웨이(122(0)-122(Z))의 웨이 수를 기록할 수 있다(블록(534)). 일부 양상들에서, DRAM 캐시 관리 회로(102)는 메모리 어드레스에 대응하는 선택된 웨이(122(0)-122(Z))의 웨이 수를 리셋한다(블록(536)). 그런 다음, DRAM 캐시 관리 회로(102)는 (DRAM 캐시 표시자 캐시(134)의 마스터 테이블 엔트리(118(0)-118(M))를 설치하지 않으면서) 시스템 메모리 DRAM(108)의 마스터 테이블(116)에 웨이 수를 기록한다(블록(538)).
[0057]
후-기록 모드로 시스템 캐시(112)로부터 더티 데이터의 퇴거로부터 발생하는 기록 연산을 수행하기 위한, 도 1의 DRAM 캐시 관리 회로(102)의 예시적 동작들을 예시하기 위해, 도 6a-도 6d가 제공된다. 명료함을 위해, 도 1의 엘리먼트들은 도 6a-도 6d를 설명하는 데 참조된다. 도 6a에서, 동작들은, DRAM 캐시 관리 회로(102)가 기록 어드레스(130) 및 기록 데이터(132)를 포함하는 메모리 기록 요청(128)을 수신하는 것(블록(600))으로 시작된다. 도 5a에서와 같이, 도 6a의 예에서, 기록 데이터(132)는 시스템 캐시(112)로부터 퇴거된 더티(즉, 수정된) 데이터를 표현하며, 결과적으로, 본원에서 "더티 퇴거 데이터(132)"로 지칭된다.
[0058]
DRAM 캐시 관리 회로(102)는 DRAM 캐시 표시자 캐시(134)에서 더티 퇴거 데이터(132)의 기록 어드레스(130)가 발견되는지 여부를 결정한다(블록(602)). DRAM 캐시 표시자 캐시(134)에 기록 어드레스(130)가 존재하지 않으면, DRAM 캐시 관리 회로(102)는 (예컨대, 마스터 테이블(116)로부터의 마스터 테이블 엔트리(118(0)-118(M))를 DRAM 캐시 표시자 캐시(134)로 복사함으로써) DRAM 캐시 표시자 캐시(134)를 확률적으로 보충한다(블록(604)). DRAM 캐시 표시자 캐시(134)가 블록(604)에서 보충되면(즉, 보충이 발생할 것으로 확률적으로 결정되었으면), 블록(616)에서 프로세싱이 재개된다. 그렇지 않으면, DRAM 캐시 관리 회로(102)는 (예컨대, DRAM 캐시 표시자(120(0)-120(X))에 대한 마스터 테이블 엔트리(118(0)-118(M))에 대해 RMW(read-modify-write) 연산을 수행함으로써) 시스템 메모리 DRAM(108)의 마스터 테이블(116)의 기록 어드레스(130)에 대응하는 DRAM 캐시 표시자(120(0)-120(X))를 업데이트한다(블록(606)). 그런 다음, DRAM 캐시 관리 회로(102)는 DRAM 캐시(104)에 더티 퇴거 데이터(132)를 기록한다(블록(608)). 일부 양상들에서, DRAM 캐시 표시자(120(0)-120(X))를 업데이트하기 위한 블록(606)의 동작들 및 DRAM 캐시(104)에 더티 퇴거 데이터(132)를 기록하기 위한 블록(608)의 동작들이 병렬로 수행될 수 있다는 것이 이해될 것이다.
[0059]
DRAM 캐시 관리 회로(102)의 일부 양상들은 다음으로, 마스터 테이블(116)로부터의 기록 어드레스(130)에 대한 DRAM 캐시 표시자(120(0)-120(X))가 DRAM 캐시(104)에 기록 어드레스(130)가 있음을 표시하는지 여부를 결정할 수 있다(블록(610)). 그렇지 않으면, 프로세싱은 완료된다(블록(614)). 그러나, 마스터 테이블(116)로부터의 기록 어드레스(130)에 대한 DRAM 캐시 표시자(120(0)-120(X))가 DRAM 캐시(104)에 기록 어드레스(130)가 있음을 표시한다고 DRAM 캐시 관리 회로(102)가 판정 블록(612)에서 결정하면, DRAM 캐시 관리 회로(102)는 DRAM 캐시(104)에 더티 퇴거 데이터(132)를 기록한다(블록(614)).
[0060]
판정 블록(602)을 다시 참조하면, DRAM 캐시 표시자 캐시(134)에서 더티 퇴거 데이터(132)의 기록 어드레스(130)가 발견된다고 DRAM 캐시 관리 회로(102)가 결정하면 (또는 DRAM 캐시 표시자 캐시(134)가 블록(604)에서 보충되면), DRAM 캐시 관리 회로(102)는 다음으로, DRAM 캐시(104)에서 더티 퇴거 데이터(132)의 기록 어드레스(130)가 발견되는지 여부를 결정한다(블록(616)). DRAM 캐시(104)에서 기록 어드레스(130)가 발견되지 않으면, 도 6b의 블록(618)에서 프로세싱이 재개된다. 그러나, DRAM 캐시(104)에서 기록 어드레스(130)가 발견된다고 DRAM 캐시 관리 회로(102)가 판정 블록(616)에서 결정하면, DRAM 캐시 관리 회로(102)는 (예컨대, DRAM 캐시(104)에 비-퇴거-기록 연산을 수행함으로써) DRAM 캐시(104)에 더티 퇴거 데이터(132)를 기록한다(블록(612)).
[0061]
이제 도 6b를 참조하면, DRAM 캐시 관리 회로(102)는 다음으로, DRAM 캐시(104)에 기록 어드레스(130) 및 더티 퇴거 데이터(132)를 확률적으로 기록한다(블록(618)). 일부 양상들에 따라, DRAM 캐시(104)에 기록 어드레스(130) 및 더티 퇴거 데이터(132)를 기록하기 위한 블록(618)의 동작들은 먼저, DRAM 캐시(104)로부터 퇴거될 웨이(122(0)-122(Z))를 랜덤하게 선택하는 단계를 포함할 수 있다(블록(620)). 선택된 웨이(122(0)-122(Z))의 메모리 어드레스는 DRAM 캐시(104)로부터 DRAM 캐시 관리 회로(102)에 의해 판독된다(블록(622)). 그런 다음, DRAM 캐시 관리 회로(102)는 DRAM 캐시(104)의 선택된 웨이(122(0)-122(Z))에 기록 어드레스(130) 및 더티 퇴거 데이터(132)를 기록한다(블록(624)). DRAM 캐시 관리 회로(102)는 DRAM 캐시 표시자 캐시(134)의 기록 어드레스(130)에 대한 웨이 수를 선택된 웨이(122(0)-122(Z))의 웨이 수로 업데이트한다(블록(626)). DRAM 캐시 관리 회로(102)는 또한, DRAM 캐시 표시자 캐시(134)의 기록 어드레스(130)에 대한 더티 표시자(140(0)-140(C), 140'(0)-140'(C))를 세팅한다(블록(628)). 그런 다음, 프로세싱은 도 6c의 블록(630)에서 계속된다.
[0062]
도 6c에서, DRAM 캐시(104)에 기록 어드레스(130) 및 더티 퇴거 데이터(132)를 확률적으로 기록하기 위한 블록(618)의 추가적 동작들은, DRAM 캐시 표시자 캐시(134)에 선택된 웨이(122(0)-122(Z))의 메모리 어드레스가 존재하는지 여부를 DRAM 캐시 관리 회로(102)가 결정하는 단계를 포함한다(블록(630)). 그렇지 않으면, 도 6d의 블록(632)에서 프로세싱이 재개된다. DRAM 캐시 표시자 캐시(134)에 선택된 웨이(122(0)-122(Z))의 메모리 어드레스가 존재한다고 DRAM 캐시 관리 회로(102)가 판정 블록(630)에서 결정하면, DRAM 캐시 관리 회로(102)는 DRAM 캐시 표시자 캐시(134)의 메모리 어드레스에 대한 선택된 웨이(122(0)-122(Z))의 웨이 수 및 더티 표시자(140(0)-140(C), 140'(0)-140'(C))를 리셋한다(블록(634)).
[0063]
이제 도 6d를 참조하면, DRAM 캐시 표시자 캐시(134)에 선택된 웨이(122(0)-122(Z))의 메모리 어드레스가 존재하지 않는다고 DRAM 캐시 관리 회로(102)가 도 6c의 판정 블록(630)에서 결정하면, DRAM 캐시 관리 회로(102)는 DRAM 캐시 표시자 캐시(134)를 보충한다(블록(632)). 일부 양상들에서, DRAM 캐시 표시자 캐시(134)를 보충하기 위한 블록(632)의 동작들은 메모리 어드레스에 대응하는 선택된 웨이(122(0)-122(Z))의 마스터 테이블 엔트리(118(0)-118(M))를 시스템 메모리 DRAM(108)의 마스터 테이블(116)로부터 판독하는 단계를 포함한다(블록(634)). 일부 양상들에서, DRAM 캐시 관리 회로(102)는 다음으로, 마스터 테이블 엔트리(118(0)-118(M))에 기반하여 DRAM 캐시 표시자 캐시(134)에 메모리 어드레스에 대한 선택된 웨이(122(0)-122(Z))의 웨이 수를 기록할 수 있다(블록(636)). 일부 양상들에서, DRAM 캐시 관리 회로(102)는 메모리 어드레스에 대응하는 선택된 웨이(122(0)-122(Z))의 웨이 수를 리셋한다(블록(638)). 그런 다음, DRAM 캐시 관리 회로(102)는 (DRAM 캐시 표시자 캐시(134)의 마스터 테이블 엔트리(118(0)-118(M))를 설치하지 않으면서) 시스템 메모리 DRAM(108)의 마스터 테이블(116)에 웨이 수를 기록한다(블록(640)). 블록(618)에서, DRAM 캐시(104)에 기록 어드레스(130) 및 더티 퇴거 데이터(132)가 확률적으로 기록되지 않으면, DRAM 캐시 관리 회로(102)는 시스템 메모리 DRAM(108)에 더티 퇴거 데이터(132)를 기록한다(블록(642)).
[0064]
본원에 개시되는 양상들에 따라 DRAM 캐시 표시자 캐시들을 사용하는 스케일러블 DRAM 캐시 관리의 제공은 임의의 프로세서-기반 디바이스에서 제공되거나 또는 임의의 프로세서-기반 디바이스로 통합될 수 있다. 예들은, 제한 없이, 셋탑 박스, 엔터테인먼트 유닛, 네비게이션 디바이스, 통신 디바이스, 고정 위치 데이터 유닛, 모바일 위치 데이터 유닛, 모바일 폰, 셀룰러 폰, 스마트폰, 태블릿, 패블릿, 컴퓨터, 휴대용 컴퓨터, 데스크탑 컴퓨터, PDA(personal digital assistant), 모니터, 컴퓨터 모니터, 텔레비전, 튜너, 라디오, 위성 라디오, 뮤직 플레이어, 디지털 뮤직 플레이어, 휴대용 뮤직 플레이어, 디지털 비디오 플레이어, 비디오 플레이어, DVD(digital video disc) 플레이어, 휴대용 디지털 비디오 플레이어, 및 자동차를 포함한다.
[0065]
이와 관련하여, 도 7은, 도 1에서 예시되는 DCMC(DRAM cache management circuit)(102)를 사용할 수 있는 프로세서-기반 시스템(700)의 예를 예시한다. 프로세서-기반 시스템(700)은, 각각이 하나 또는 그 초과의 프로세서들(704)을 포함하는 하나 또는 그 초과의 CPU(central processing unit)(들)(702)를 포함한다. CPU(들)(702)는, 일시적으로 저장된 데이터로의 급속한 액세스를 위해 프로세서(들)(704)에 커플링된 캐시 메모리(706)를 가질 수 있다. CPU(들)(702)는 시스템 버스(708)에 커플링되며, 프로세서-기반 시스템(700)에 포함된 마스터 및 슬래이브 디바이스들을 상호 커플링할 수 있다. 잘 알려진 바와 같이, CPU(들)(702)는 시스템 버스(708)를 통해 어드레스, 제어 및 데이터 정보를 교환함으로써 이러한 다른 디바이스들과 통신한다. 예컨대, CPU(들)(702)는 슬래이브 디바이스의 예로서 메모리 제어기(710)에 버스 트랜잭션 요청들을 전달할 수 있다.
[0066]
다른 마스터 및 슬래이브 디바이스들은 시스템 버스(708)에 연결될 수 있다. 도 7에서 예시되는 바와 같이, 이 디바이스들은, 예들로서, 메모리 시스템(712), 하나 또는 그 초과의 입력 디바이스들(714), 하나 또는 그 초과의 출력 디바이스들(716), 하나 또는 그 초과의 네트워크 인터페이스 디바이스들(718) 및 하나 또는 그 초과의 디스플레이 제어기들(720)을 포함할 수 있다. 입력 디바이스(들)(714)는 입력 키들, 스위치들, 음성 프로세서들 등을 포함하는(그러나, 이들로 제한되는 것은 아님) 임의의 타입의 입력 디바이스를 포함할 수 있다. 출력 디바이스(들)(716)는, 오디오, 비디오, 다른 시각적 표시자들 등을 포함하는(그러나, 이들로 제한되는 것은 아님) 임의의 타입의 출력 디바이스를 포함할 수 있다. 네트워크 인터페이스 디바이스(들)(718)는 네트워크(722)로의 그리고 네트워크(722)로부터의 데이터의 교환을 허용하도록 구성된 임의의 디바이스들일 수 있다. 네트워크(722)는, 유선 또는 무선 네트워크, 사설 또는 공공 네트워크, LAN(local area network), WLAN(wireless local area network), WAN(wide area network), BLUETOOTH™ 네트워크 및 인터넷을 포함하는(그러나, 이들로 제한되는 것은 아님) 임의의 타입의 네트워크일 수 있다. 네트워크 인터페이스 디바이스(들)(718)는 원하는 임의의 타입의 통신 프로토콜을 지원하도록 구성될 수 있다. 메모리 시스템(712)은 하나 또는 그 초과의 메모리 유닛들(724(0)-724(N))을 포함할 수 있다.
[0067]
CPU(들)(702)는 또한, 하나 또는 그 초과의 디스플레이들(726)에 전송되는 정보를 제어하기 위해 시스템 버스(708)를 통해 디스플레이 제어기(들)(720)에 액세스하도록 구성될 수 있다. 디스플레이 제어기(들)(720)는 하나 또는 그 초과의 비디오 프로세서들(728)을 통해 디스플레이될 정보를 디스플레이(들)(726)에 전송하고, 비디오 프로세서들(728)은 디스플레이(들)(726)에 적합한 포맷으로 디스플레이될 정보를 프로세싱한다. 디스플레이(들)(726)는, CRT(cathode ray tube), LCD(liquid crystal display), 플라즈마 디스플레이 등을 포함하는(그러나, 이들로 제한되는 것은 아님) 임의의 타입의 디스플레이를 포함할 수 있다.
[0068]
당업자들은 본원에서 개시되는 양상들과 관련하여 설명되는 다양한 예시적인 논리적 블록들, 모듈들, 회로들, 및 알고리즘들이 전자 하드웨어, 메모리에 또는 다른 컴퓨터 판독가능한 매체에 저장되어 프로세서 또는 다른 프로세싱 디바이스에 의해 실행되는 명령들, 또는 이 둘 모두의 조합들로서 구현될 수 있다는 것을 추가로 인식할 것이다. 본원에서 설명되는 마스터 디바이스들 및 슬래이브 디바이스들은, 예들로서, 임의의 회로, 하드웨어 컴포넌트, IC(integrated circuit) 또는 IC 칩에서 사용될 수 있다. 본원에서 개시되는 메모리는 임의의 타입 및 사이즈의 메모리일 수 있으며, 원하는 임의의 타입의 정보를 저장하도록 구성될 수 있다. 이러한 교환가능성을 명확하게 예시하기 위해, 다양한 예시적 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 일반적으로 그 기능성의 측면에서 위에서 설명되었다. 그러한 기능성이 어떻게 구현되는지는 특정 애플리케이션, 설계 선택들 및/또는 전체 시스템 상에 부과되는 설계 제약들에 의존한다. 당업자들은 설명되는 기능성을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있지만, 그러한 구현 판정들이 본 개시내용의 범위로부터의 이탈을 야기하는 것으로 해석되지 않아야 한다.
[0069]
본원에서 개시되는 양상들과 관련하여 설명되는 다양한 예시적 논리 블록들, 모듈들 및 회로들이 프로세서, DSP(Digital Signal Processor), ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array) 또는 다른 프로그래밍가능한 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본원에서 설명되는 기능들을 수행하도록 설계되는 이들의 임의의 조합으로 구현되거나 또는 수행될 수 있다. 프로세서는 마이크로프로세서일 수 있지만, 대안적으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신(state machine)일 수 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합(예컨대, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 또는 그 초과의 마이크로프로세서들, 또는 임의의 다른 그러한 구성)으로서 구현될 수 있다.
[0070]
본원에서 개시되는 양상들은, 하드웨어 및 하드웨어에 저장된 명령들로 구현될 수 있으며, 예컨대, RAM(Random Access Memory), 플래시 메모리, ROM(Read Only Memory), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 레지스터들, 하드 디스크, 탈착가능한(removable) 디스크, CD-ROM, 또는 당해 기술 분야에서 알려진 임의의 다른 형태의 컴퓨터 판독가능한 매체에 상주할 수 있다. 예시적 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기록할 수 있도록 프로세서에 커플링된다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다. 프로세서 및 저장 매체는 ASIC 내에 상주할 수 있다. ASIC는 원격국 내에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 원격국, 기지국 또는 서버 내에 개별 컴포넌트들로서 상주할 수 있다.
[0071]
또한, 본원에서의 예시적 양상들 중 임의의 양상에서 설명되는 동작 단계들이 예들 및 논의를 제공하기 위해 설명된다는 점이 주목된다. 설명되는 동작들은 예시되는 시퀀스들 이외의 다수의 상이한 시퀀스들로 수행될 수 있다. 게다가, 단일 동작 단계로 설명되는 동작들은 실제로, 다수의 상이한 단계들로 수행될 수 있다. 부가적으로, 예시적 양상들에서 논의되는 하나 또는 그 초과의 동작 단계들이 조합될 수 있다. 흐름 다이어그램들에서 예시되는 동작 단계들은 당업자에게 용이하게 명백해질 바와 같은 다수의 상이한 수정들이 행해질 수 있다는 것이 이해될 것이다. 당업자는 또한, 정보 및 신호들이 다양한 상이한 기술들 및 기법들 중 임의의 것을 사용하여 표현될 수 있다는 것을 이해할 것이다. 예컨대, 위의 설명 전반에 걸쳐 참조될 수 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들 및 칩들은 전압들, 전류들, 전자기파들, 자기장들 또는 자기 입자들, 광 필드들 또는 광 입자들, 또는 이들의 임의의 조합에 의해 표현될 수 있다.
[0072]
본 개시내용의 이전 설명은 임의의 당업자가 본 개시내용을 실시하거나 또는 사용하는 것을 가능하게 하도록 제공된다. 본 개시내용에 대한 다양한 수정들은 당업자들에게 용이하게 명백할 것이고, 본원에서 정의되는 일반적 원리들은 개시내용의 사상 또는 범위로부터 벗어나지 않으면서 다른 변형들에 적용될 수 있다. 따라서, 본 개시내용은 본원에서 설명되는 예들 및 설계들로 제한되도록 의도되는 것이 아니라, 본원에서 개시되는 원리들 및 신규한 특징들과 일치하는 가장 넓은 범위를 따를 것이다.
Claims (47)
- 고-대역폭 메모리의 일부인 DRAM(dynamic random access memory) 캐시에 통신가능하게 커플링되고, 시스템 메모리 DRAM에 추가로 통신가능하게 커플링된 DRAM 캐시 관리 회로로서,
상기 DRAM 캐시 관리 회로는, 상기 시스템 메모리 DRAM 내의 마스터 테이블로부터 판독된 복수의 DRAM 캐시 표시자들을 캐시하도록 구성된 DRAM 캐시 표시자 캐시를 포함하고, 상기 복수의 DRAM 캐시 표시자들은 상기 시스템 메모리 DRAM의 대응하는 메모리 라인이 상기 DRAM 캐시에 캐시되는지 여부를 표시하고,
상기 DRAM 캐시 관리 회로는:
판독 어드레스를 포함하는 메모리 판독 요청을 수신하고;
상기 DRAM 캐시 표시자 캐시에서 상기 판독 어드레스가 발견되는지 여부를 결정하고;
상기 DRAM 캐시 표시자 캐시에서 상기 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 시스템 메모리 DRAM에서 상기 판독 어드레스의 데이터를 판독하고; 그리고
상기 DRAM 캐시 표시자 캐시에서 상기 판독 어드레스가 발견된다는 결정에 대한 응답으로:
상기 DRAM 캐시 표시자 캐시에 기반하여, 상기 DRAM 캐시에서 상기 판독 어드레스가 발견되는지 여부를 결정하고;
상기 DRAM 캐시에서 상기 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 시스템 메모리 DRAM에서 상기 판독 어드레스의 데이터를 판독하고; 그리고
상기 DRAM 캐시에서 상기 판독 어드레스가 발견된다는 결정에 대한 응답으로, 상기 DRAM 캐시로부터 상기 판독 어드레스에 대한 데이터를 판독하도록 구성되는, DRAM 캐시 관리 회로. - 제1 항에 있어서,
상기 DRAM 캐시 관리 회로는, 후-기록(write-back) 모드로 동작하도록 구성되며, 상기 DRAM 캐시에서 상기 판독 어드레스가 발견된다는 결정에 대한 응답으로, 상기 DRAM 캐시의 상기 판독 어드레스에 대한 데이터가 클린(clean)인지 여부를 결정하도록 추가로 구성되고,
상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시의 상기 판독 어드레스에 대한 데이터가 클린이 아니라는 결정에 대한 추가적 응답으로, 상기 DRAM 캐시로부터 상기 판독 어드레스에 대한 데이터를 판독하도록 구성되는, DRAM 캐시 관리 회로. - 제2 항에 있어서,
상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시의 상기 판독 어드레스에 대한 데이터가 클린이라는 결정에 대한 응답으로:
상기 DRAM 캐시 관리 회로의 로드 밸런싱 회로에 기반하여, 상기 DRAM 캐시와 상기 시스템 메모리 DRAM 중에서 선호되는 데이터 소스를 식별하고;
상기 선호되는 데이터 소스로서 상기 DRAM 캐시를 식별하는 것에 대한 응답으로, 상기 DRAM 캐시로부터 데이터를 판독하고; 그리고
상기 선호되는 데이터 소스로서 상기 시스템 메모리 DRAM을 식별하는 것에 대한 응답으로, 상기 시스템 메모리 DRAM으로부터 데이터를 판독하도록 추가로 구성되는, DRAM 캐시 관리 회로. - 제1 항에 있어서,
상기 DRAM 캐시 관리 회로는, 동시-기록(write-through) 모드로 동작하도록 구성되며, 상기 DRAM 캐시에서 상기 판독 어드레스가 발견된다는 결정에 대한 응답으로:
상기 DRAM 캐시 관리 회로의 로드 밸런싱 회로에 기반하여, 상기 DRAM 캐시와 상기 시스템 메모리 DRAM 중에서 선호되는 데이터 소스를 식별하고; 그리고
상기 선호되는 데이터 소스로서 상기 시스템 메모리 DRAM을 식별하는 것에 대한 응답으로, 상기 시스템 메모리 DRAM으로부터 데이터를 판독하도록 추가로 구성되고,
상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시의 상기 판독 어드레스에 대한 데이터가 클린이라는 결정, 그리고 상기 선호되는 데이터 소스로서 상기 DRAM 캐시를 식별하는 것에 대한 추가적 응답으로, 상기 DRAM 캐시로부터 상기 판독 어드레스에 대한 데이터를 판독하도록 구성되는, DRAM 캐시 관리 회로. - 제1 항에 있어서,
상기 DRAM 캐시 관리 회로는 시스템 캐시에 추가로 커플링되고; 그리고
상기 DRAM 캐시 관리 회로는, 상기 시스템 캐시 상에서의 미스(miss)에 대한 응답으로, 상기 판독 어드레스를 포함하는 메모리 판독 요청을 수신하도록 구성되는, DRAM 캐시 관리 회로. - 제1 항에 있어서,
상기 DRAM 캐시 관리 회로는, 상기 시스템 메모리 DRAM에서 상기 판독 어드레스의 데이터를 판독한 이후에, 상기 DRAM 캐시 표시자 캐시를 확률적으로 보충하도록 구성되는, DRAM 캐시 관리 회로. - 제1 항에 있어서,
상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시 표시자 캐시에 기반하여, 상기 DRAM 캐시의 상기 판독 어드레스에 대한 웨이 수(way number)가 0이 아닌지를 결정하도록 구성됨으로써 상기 DRAM 캐시에서 상기 판독 어드레스가 발견되는지 여부를 결정하도록 구성되는, DRAM 캐시 관리 회로. - 제1 항에 있어서,
상기 DRAM 캐시 관리 회로는,
클린 퇴거 데이터(clean evicted data)를 포함하는 기록 데이터 및 기록 어드레스를 포함하는 메모리 기록 요청을 시스템 캐시로부터 수신하고;
상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하고; 그리고
상기 DRAM 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 클린 퇴거 데이터를 확률적으로 기록하도록 추가로 구성되는, DRAM 캐시 관리 회로. - 제8 항에 있어서,
상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하기 이전에:
상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하고; 그리고
상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시를 확률적으로 보충하도록 추가로 구성되고,
상기 DRAM 캐시 관리 회로는 상기 DRAM 캐시 표시자 캐시를 보충하는 것에 대한 응답으로 상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하도록 구성되는, DRAM 캐시 관리 회로. - 제8 항에 있어서,
상기 DRAM 캐시 관리 회로는,
상기 DRAM 캐시로부터 퇴거될 웨이를 선택하고;
선택된 웨이의 메모리 어드레스를 상기 DRAM 캐시로부터 판독하고;
상기 DRAM 캐시의 상기 선택된 웨이에 상기 기록 어드레스 및 상기 클린 퇴거 데이터를 기록하고;
상기 DRAM 캐시 표시자 캐시의 상기 기록 어드레스에 대한 웨이 수를 상기 선택된 웨이의 웨이 수로 업데이트하고;
상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하는지 여부를 결정하고; 그리고
상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재한다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시의 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 리셋하도록
구성됨으로써 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 클린 퇴거 데이터를 확률적으로 기록하도록 구성되는, DRAM 캐시 관리 회로. - 제10 항에 있어서,
상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로:
상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 마스터 테이블 엔트리를 판독하고; 그리고
상기 마스터 테이블 엔트리에 기반하여 상기 DRAM 캐시 표시자 캐시에 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 기록하도록
구성됨으로써 상기 DRAM 캐시 표시자 캐시를 보충하도록 추가로 구성되는, DRAM 캐시 관리 회로. - 제10 항에 있어서,
상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로:
상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 웨이 수를 리셋하고; 그리고
상기 마스터 테이블에 상기 웨이 수를 기록하도록 추가로 구성되는, DRAM 캐시 관리 회로. - 제1 항에 있어서,
상기 DRAM 캐시 관리 회로는, 동시-기록 모드로 동작하도록 구성되고, 그리고
더티 퇴거 데이터(dirty evicted data)를 포함하는 기록 데이터 및 기록 어드레스를 포함하는 메모리 기록 요청을 시스템 캐시로부터 수신하고;
상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하고;
상기 DRAM 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 확률적으로 기록하고;
상기 DRAM 캐시에서 상기 기록 어드레스가 발견된다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 더티 퇴거 데이터를 기록하고; 그리고
상기 시스템 메모리 DRAM에 상기 더티 퇴거 데이터를 기록하도록 추가로 구성되는, DRAM 캐시 관리 회로. - 제13 항에 있어서,
상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하기 이전에:
상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하고; 그리고
상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시를 확률적으로 보충하고;
상기 DRAM 캐시 표시자 캐시를 보충하지 않는 것에 대한 응답으로:
상기 마스터 테이블의 상기 기록 어드레스에 대응하는 DRAM 캐시 표시자를 업데이트하고; 그리고
DRAM 캐시에 상기 더티 퇴거 데이터를 기록하도록 추가로 구성되고,
상기 DRAM 캐시 관리 회로는 상기 DRAM 캐시 표시자 캐시를 보충하는 것에 대한 응답으로 상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하도록 구성되는, DRAM 캐시 관리 회로. - 제13 항에 있어서,
상기 DRAM 캐시 관리 회로는,
상기 DRAM 캐시로부터 퇴거될 웨이를 선택하고;
선택된 웨이의 메모리 어드레스를 상기 DRAM 캐시로부터 판독하고;
상기 DRAM 캐시의 상기 선택된 웨이에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 기록하고;
상기 DRAM 캐시 표시자 캐시의 상기 기록 어드레스에 대한 웨이 수를 상기 선택된 웨이의 웨이 수로 업데이트하고;
상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하는지 여부를 결정하고; 그리고
상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재한다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시의 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 리셋하도록
구성됨으로써 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 확률적으로 기록하도록 구성되는, DRAM 캐시 관리 회로. - 제15 항에 있어서,
상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로,
상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 마스터 테이블 엔트리를 판독하고; 그리고
상기 마스터 테이블 엔트리에 기반하여 상기 DRAM 캐시 표시자 캐시에 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 기록하도록
구성됨으로써 상기 DRAM 캐시 표시자 캐시를 보충하도록 추가로 구성되는, DRAM 캐시 관리 회로. - 제15 항에 있어서,
상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로,
상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 웨이 수를 리셋하고; 그리고
상기 마스터 테이블에 상기 웨이 수를 기록하도록 추가로 구성되는, DRAM 캐시 관리 회로. - 제1 항에 있어서,
상기 DRAM 캐시 관리 회로는, 후-기록 모드로 동작하도록 구성되고, 그리고
더티 퇴거 데이터를 포함하는 기록 데이터 및 기록 어드레스를 포함하는 메모리 기록 요청을 시스템 캐시로부터 수신하고;
상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하고;
상기 DRAM 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 확률적으로 기록하고;
상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 기록하지 않는 것에 대한 응답으로, 상기 시스템 메모리 DRAM에 상기 더티 퇴거 데이터를 기록하고; 그리고
상기 DRAM 캐시에서 상기 기록 어드레스가 발견된다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 더티 퇴거 데이터를 기록하도록 추가로 구성되는, DRAM 캐시 관리 회로. - 제18 항에 있어서,
상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하기 이전에:
상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하고; 그리고
상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시를 확률적으로 보충하고;
상기 DRAM 캐시 표시자 캐시를 보충하지 않는 것에 대한 응답으로:
상기 마스터 테이블로부터 상기 기록 어드레스에 대한 DRAM 캐시 표시자를 판독하고;
상기 시스템 메모리 DRAM에 상기 더티 퇴거 데이터를 기록하고; 그리고
상기 마스터 테이블로부터의 상기 기록 어드레스에 대한 상기 DRAM 캐시 표시자가 상기 DRAM 캐시에 상기 기록 어드레스가 있다고 표시하는지의 여부를 결정하도록 추가로 구성되고;
상기 DRAM 캐시 관리 회로는 상기 DRAM 캐시 표시자 캐시를 보충하는 것에 대한 응답으로 상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하도록 구성되는, DRAM 캐시 관리 회로. - 제18 항에 있어서,
상기 DRAM 캐시로부터 퇴거될 웨이를 선택하고;
선택된 웨이의 상기 메모리 어드레스를 상기 DRAM 캐시로부터 판독하고;
상기 선택된 웨이의 상기 메모리 어드레스를 상기 DRAM 캐시로부터 판독한 이후에, 상기 DRAM 캐시의 상기 선택된 웨이에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 기록하고;
상기 DRAM 캐시 표시자 캐시의 상기 기록 어드레스에 대한 웨이 수를 상기 선택된 웨이의 웨이 수로 업데이트하고;
상기 DRAM 캐시 표시자 캐시의 상기 기록 어드레스에 대한 더티 표시자를 세팅하고;
상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하는지 여부를 결정하고; 그리고
상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재한다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시의 상기 선택된 웨이의 상기 기록 어드레스에 대한 웨이 수 및 상기 더티 표시자를 리셋하도록
구성됨으로써 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 확률적으로 기록하도록 구성되는, DRAM 캐시 관리 회로. - 제20 항에 있어서,
상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로:
상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 마스터 테이블 엔트리를 판독하고; 그리고
상기 마스터 테이블 엔트리에 기반하여 상기 DRAM 캐시 표시자 캐시에 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 기록하도록
구성됨으로써 상기 DRAM 캐시 표시자 캐시를 보충하도록 추가로 구성되는, DRAM 캐시 관리 회로. - 제20 항에 있어서,
상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로:
상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 웨이 수를 리셋하고; 그리고
상기 마스터 테이블에 상기 웨이 수를 기록하도록 추가로 구성되는, DRAM 캐시 관리 회로. - 제1 항에 있어서,
IC(integrated circuit)에 통합되는, DRAM 캐시 관리 회로. - 제1 항에 있어서,
상기 DRAM 캐시 관리 회로는, 셋탑 박스, 엔터테인먼트 유닛, 네비게이션 디바이스, 통신 디바이스, 고정 위치 데이터 유닛, 모바일 위치 데이터 유닛, 모바일 폰, 셀룰러 폰, 스마트폰, 태블릿, 패블릿, 컴퓨터, 휴대용 컴퓨터, 데스크탑 컴퓨터, PDA(personal digital assistant), 모니터, 컴퓨터 모니터, 텔레비전, 튜너, 라디오, 위성 라디오, 뮤직 플레이어, 디지털 뮤직 플레이어, 휴대용 뮤직 플레이어, 디지털 비디오 플레이어, 비디오 플레이어, DVD(digital video disc) 플레이어, 휴대용 디지털 비디오 플레이어, 및 자동차로 구성된 그룹으로부터 선택된 디바이스에 통합되는, DRAM 캐시 관리 회로. - 스케일러블 DRAM(dynamic random access memory) 캐시 관리를 제공하기 위한 방법으로서,
DRAM 캐시 관리 회로가, 판독 어드레스를 포함하는 메모리 판독 요청을 수신하는 단계;
상기 DRAM 캐시 관리 회로의 DRAM 캐시 표시자 캐시에서 상기 판독 어드레스가 발견되는지 여부를 결정하는 단계;
상기 DRAM 캐시 표시자 캐시에서 상기 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 시스템 메모리 DRAM에서 상기 판독 어드레스의 데이터를 판독하는 단계; 및
상기 DRAM 캐시 표시자 캐시에서 상기 판독 어드레스가 발견된다는 결정에 대한 응답으로:
상기 DRAM 캐시 표시자 캐시에 기반하여, 고-대역폭 메모리의 일부인 DRAM 캐시에서 상기 판독 어드레스가 발견되는지 여부를 결정하는 단계;
상기 DRAM 캐시에서 상기 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 시스템 메모리 DRAM에서 상기 판독 어드레스의 데이터를 판독하는 단계; 및
상기 DRAM 캐시에서 상기 판독 어드레스가 발견된다는 결정에 대한 응답으로, 상기 DRAM 캐시로부터 상기 판독 어드레스에 대한 데이터를 판독하는 단계를 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제25 항에 있어서,
상기 DRAM 캐시 관리 회로는, 후-기록 모드로 동작하도록 구성되고, 그리고
상기 방법은, 상기 DRAM 캐시에서 상기 판독 어드레스가 발견된다는 결정에 대한 응답으로, 상기 DRAM 캐시의 상기 판독 어드레스에 대한 데이터가 클린인지 여부를 결정하는 단계를 더 포함하고,
상기 DRAM 캐시로부터 상기 판독 어드레스에 대한 데이터를 판독하는 단계는 상기 DRAM 캐시의 상기 판독 어드레스에 대한 데이터가 클린이 아니라는 결정에 대해 추가로 응답하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제26 항에 있어서,
상기 DRAM 캐시 내의 상기 판독 어드레스에 대한 데이터가 클린이라는 결정에 대한 응답으로:
상기 DRAM 캐시와 상기 시스템 메모리 DRAM 중에서 선호되는 데이터 소스를 식별하는 단계;
상기 선호되는 데이터 소스로서 상기 DRAM 캐시를 식별하는 것에 대한 응답으로, 상기 DRAM 캐시로부터 데이터를 판독하는 단계; 및
상기 선호되는 데이터 소스로서 상기 시스템 메모리 DRAM을 식별하는 것에 대한 응답으로, 상기 시스템 메모리 DRAM으로부터 데이터를 판독하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제25 항에 있어서,
상기 DRAM 캐시 관리 회로는 동시-기록 모드로 동작하도록 구성되고, 그리고
상기 방법은, 상기 DRAM 캐시에서 상기 판독 어드레스가 발견된다는 결정에 대한 응답으로:
상기 DRAM 캐시와 상기 시스템 메모리 DRAM 중에서 선호되는 데이터 소스를 식별하는 단계; 및
상기 선호되는 데이터 소스로서 상기 시스템 메모리 DRAM을 식별하는 것에 대한 응답으로, 상기 시스템 메모리 DRAM으로부터 데이터를 판독하는 단계를 더 포함하고,
상기 DRAM 캐시로부터 상기 판독 어드레스에 대한 데이터를 판독하는 단계는, 상기 DRAM 캐시의 상기 판독 어드레스에 대한 데이터가 클린이라는 결정, 그리고 상기 선호되는 데이터 소스로서 상기 DRAM 캐시를 식별하는 것에 대해 추가로 응답하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제25 항에 있어서,
상기 판독 어드레스를 포함하는 메모리 판독 요청을 수신하는 단계는, 시스템 캐시 상에서의 미스에 대해 응답하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제25 항에 있어서,
상기 시스템 메모리 DRAM에서 상기 판독 어드레스의 데이터를 판독한 이후에, 상기 DRAM 캐시 표시자 캐시를 확률적으로 보충하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제25 항에 있어서,
상기 DRAM 캐시 표시자 캐시에 기반하여, 상기 DRAM 캐시의 상기 판독 어드레스에 대한 웨이 수가 0이 아닌지를 결정함으로써 상기 DRAM 캐시에서 상기 판독 어드레스가 발견되는지 여부를 결정하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제25 항에 있어서,
클린 퇴거 데이터를 포함하는 기록 데이터 및 기록 어드레스를 포함하는 메모리 기록 요청을 시스템 캐시로부터 수신하는 단계;
상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하는 단계; 및
상기 DRAM 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 클린 퇴거 데이터를 확률적으로 기록하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제32 항에 있어서,
상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하기 이전에:
상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하는 단계; 및
상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시를 확률적으로 보충하는 단계를 더 포함하고,
상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하는 단계는 상기 DRAM 캐시 표시자 캐시를 보충하는 것에 대해 응답하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제32 항에 있어서,
상기 DRAM 캐시로부터 퇴거될 웨이를 선택하고;
선택된 웨이의 메모리 어드레스를 상기 DRAM 캐시로부터 판독하고;
상기 DRAM 캐시의 상기 선택된 웨이에 상기 기록 어드레스 및 상기 클린 퇴거 데이터를 기록하고;
상기 DRAM 캐시 표시자 캐시의 상기 기록 어드레스에 대한 웨이 수를 상기 선택된 웨이의 웨이 수로 업데이트하고;
상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하는지 여부를 결정하고; 그리고
상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재한다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시의 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 리셋함으로써 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 클린 퇴거 데이터를 확률적으로 기록하는 단계를 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제34 항에 있어서,
상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로,
상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 마스터 테이블 엔트리를 상기 시스템 메모리 DRAM의 마스터 테이블로부터 판독하고; 그리고
상기 마스터 테이블 엔트리에 기반하여 상기 DRAM 캐시 표시자 캐시에 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 기록함으로써 상기 DRAM 캐시 표시자 캐시를 보충하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제34 항에 있어서,
상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로,
상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 웨이 수를 리셋하는 단계; 및
상기 시스템 메모리 DRAM의 마스터 테이블에 상기 웨이 수를 기록하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제25 항에 있어서,
상기 DRAM 캐시 관리 회로는 동시-기록 모드로 동작하도록 구성되고, 그리고
상기 방법은,
더티 퇴거 데이터를 포함하는 기록 데이터 및 기록 어드레스를 포함하는 메모리 기록 요청을 시스템 캐시로부터 수신하는 단계;
상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하는 단계;
상기 DRAM 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 확률적으로 기록하는 단계;
상기 DRAM 캐시에서 상기 기록 어드레스가 발견된다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 더티 퇴거 데이터를 기록하는 단계; 및
상기 시스템 메모리 DRAM에 상기 더티 퇴거 데이터를 기록하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제37 항에 있어서,
상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하기 이전에:
상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하는 단계; 및
상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시를 확률적으로 보충하는 단계;
상기 DRAM 캐시 표시자 캐시를 보충하지 않는 것에 대한 응답으로:
상기 시스템 메모리 DRAM의 상기 마스터 테이블의 상기 기록 어드레스에 대응하는 DRAM 캐시 표시자를 업데이트하는 단계; 및
DRAM 캐시에 상기 더티 퇴거 데이터를 기록하는 단계를 더 포함하고,
상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하는 단계는 상기 DRAM 캐시 표시자 캐시를 보충하는 것에 대해 응답하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제37 항에 있어서,
상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 확률적으로 기록하는 단계는,
상기 DRAM 캐시로부터 퇴거될 웨이를 선택하는 단계;
상기 선택된 웨이의 메모리 어드레스를 상기 DRAM 캐시로부터 판독하는 단계;
상기 DRAM 캐시의 상기 선택된 웨이에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 기록하는 단계;
상기 DRAM 캐시 표시자 캐시의 상기 기록 어드레스에 대한 웨이 수를 상기 선택된 웨이의 웨이 수로 업데이트하는 단계;
상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하는지 여부를 결정하는 단계; 및
상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재한다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시의 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 리셋하는 단계를 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제39 항에 있어서,
상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로,
상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 마스터 테이블 엔트리를 판독하고; 그리고
상기 마스터 테이블 엔트리에 기반하여 상기 DRAM 캐시 표시자 캐시에 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 기록함으로써 상기 DRAM 캐시 표시자 캐시를 보충하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제39 항에 있어서,
상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로,
상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 웨이 수를 리셋하는 단계; 및
상기 시스템 메모리 DRAM의 마스터 테이블에 상기 웨이 수를 기록하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제25 항에 있어서,
상기 DRAM 캐시 관리 회로는 후-기록 모드로 동작하도록 구성되고, 그리고
상기 방법은,
더티 퇴거 데이터를 포함하는 기록 데이터 및 기록 어드레스를 포함하는 메모리 기록 요청을 시스템 캐시로부터 수신하는 단계;
상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하는 단계;
상기 DRAM 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 확률적으로 기록하는 단계;
상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 기록하지 않는 것에 대한 응답으로, 상기 시스템 메모리 DRAM에 상기 더티 퇴거 데이터를 기록하는 단계; 및
상기 DRAM 캐시에서 상기 기록 어드레스가 발견된다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 더티 퇴거 데이터를 기록하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제42 항에 있어서,
상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하기 이전에:
상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하는 단계; 및
상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시를 확률적으로 보충하는 단계;
상기 DRAM 캐시 표시자 캐시를 보충하지 않는 것에 대한 응답으로:
상기 시스템 메모리 DRAM의 상기 마스터 테이블의 상기 기록 어드레스에 대응하는 DRAM 캐시 표시자를 업데이트하는 단계;
상기 시스템 메모리 DRAM에 상기 더티 퇴거 데이터를 기록하는 단계; 및
상기 마스터 테이블로부터의 상기 기록 어드레스에 대한 상기 DRAM 캐시 표시자가 상기 DRAM 캐시에 상기 기록 어드레스가 있다고 표시하는지의 여부를 결정하는 단계를 더 포함하고,
상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하는 단계는 상기 DRAM 캐시 표시자 캐시를 보충하는 것에 대해 응답하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제42 항에 있어서,
상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 확률적으로 기록하는 단계는,
상기 DRAM 캐시로부터 퇴거될 웨이를 선택하는 단계;
선택된 웨이의 메모리 어드레스를 상기 DRAM 캐시로부터 판독하는 단계;
상기 선택된 웨이의 상기 메모리 어드레스를 상기 DRAM 캐시로부터 판독한 이후에, 상기 DRAM 캐시의 상기 선택된 웨이에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 기록하는 단계;
상기 DRAM 캐시 표시자 캐시의 상기 기록 어드레스에 대한 웨이 수를 상기 선택된 웨이의 웨이 수로 업데이트하는 단계;
상기 DRAM 캐시 표시자 캐시의 상기 기록 어드레스에 대한 더티 표시자를 세팅하는 단계;
상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하는지 여부를 결정하는 단계; 및
상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재한다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시의 상기 기록 어드레스에 대한 상기 선택된 웨이의 웨이 수 및 상기 더티 표시자를 리셋하는 단계를 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제44 항에 있어서,
상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로,
상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 마스터 테이블 엔트리를 판독하고; 그리고
상기 마스터 테이블 엔트리에 기반하여 상기 DRAM 캐시 표시자 캐시에 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 기록함으로써 상기 DRAM 캐시 표시자 캐시를 보충하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - 제44 항에 있어서,
상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로,
상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 웨이 수를 리셋하는 단계; 및
상기 시스템 메모리 DRAM의 마스터 테이블에 상기 웨이 수를 기록하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법. - DRAM(dynamic random access memory) 캐시 관리 회로로서,
판독 어드레스를 포함하는 메모리 판독 요청을 수신하기 위한 수단;
상기 DRAM 캐시 관리 회로의 DRAM 캐시 표시자 캐시에서 상기 판독 어드레스가 발견되는지 여부를 결정하기 위한 수단;
상기 DRAM 캐시 표시자 캐시에서 상기 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 시스템 메모리 DRAM의 상기 판독 어드레스에서 데이터를 판독하기 위한 수단;
상기 DRAM 캐시 표시자 캐시에서 상기 판독 어드레스가 발견된다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시에 기반하여, 고-대역폭 메모리의 일부인 DRAM 캐시에서 상기 판독 어드레스가 발견되는지 여부를 결정하기 위한 수단;
상기 DRAM 캐시에서 상기 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 시스템 메모리 DRAM의 상기 판독 어드레스에서 데이터를 판독하기 위한 수단; 및
상기 DRAM 캐시에서 상기 판독 어드레스가 발견된다는 결정에 대한 응답으로, 상기 DRAM으로부터 상기 판독 어드레스에 대한 데이터를 판독하기 위한 수단을 포함하는, DRAM 캐시 관리 회로.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662298088P | 2016-02-22 | 2016-02-22 | |
US62/298,088 | 2016-02-22 | ||
US15/228,320 | 2016-08-04 | ||
US15/228,320 US10176096B2 (en) | 2016-02-22 | 2016-08-04 | Providing scalable dynamic random access memory (DRAM) cache management using DRAM cache indicator caches |
PCT/US2017/016005 WO2017146882A1 (en) | 2016-02-22 | 2017-02-01 | Providing scalable dynamic random access memory (dram) cache management using dram cache indicator caches |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20180113536A true KR20180113536A (ko) | 2018-10-16 |
Family
ID=59629409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020187023757A KR20180113536A (ko) | 2016-02-22 | 2017-02-01 | Dram(dynamic random access memory) 캐시 표시자 캐시들을 사용하는 스케일러블 dram 캐시 관리의 제공 |
Country Status (11)
Country | Link |
---|---|
US (1) | US10176096B2 (ko) |
EP (1) | EP3420460B1 (ko) |
JP (1) | JP2019509557A (ko) |
KR (1) | KR20180113536A (ko) |
CN (1) | CN108701093A (ko) |
BR (1) | BR112018017135A2 (ko) |
ES (1) | ES2870516T3 (ko) |
HK (1) | HK1256013A1 (ko) |
SG (1) | SG11201805988VA (ko) |
TW (1) | TW201732599A (ko) |
WO (1) | WO2017146882A1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10783083B2 (en) * | 2018-02-12 | 2020-09-22 | Stmicroelectronics (Beijing) Research & Development Co. Ltd | Cache management device, system and method |
CN109669882B (zh) * | 2018-12-28 | 2021-03-09 | 贵州华芯通半导体技术有限公司 | 带宽感知的动态高速缓存替换方法、装置、系统和介质 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2256512B (en) | 1991-06-04 | 1995-03-15 | Intel Corp | Second level cache controller unit and system |
US5414827A (en) * | 1991-12-19 | 1995-05-09 | Opti, Inc. | Automatic cache flush |
US6029224A (en) * | 1995-06-07 | 2000-02-22 | Lucent Technologies Inc. | Self-contained memory apparatus having diverse types of memory and distributed control |
US6173368B1 (en) * | 1995-12-18 | 2001-01-09 | Texas Instruments Incorporated | Class categorized storage circuit for storing non-cacheable data until receipt of a corresponding terminate signal |
US5752262A (en) * | 1996-07-25 | 1998-05-12 | Vlsi Technology | System and method for enabling and disabling writeback cache |
US6092155A (en) * | 1997-07-10 | 2000-07-18 | International Business Machines Corporation | Cache coherent network adapter for scalable shared memory processing systems |
US6327645B1 (en) * | 1999-11-08 | 2001-12-04 | Silicon Integrated Systems Corp. | Cache memory system with memory request address queue, cache write address queue, and cache read address queue |
US7146454B1 (en) * | 2002-04-16 | 2006-12-05 | Cypress Semiconductor Corporation | Hiding refresh in 1T-SRAM architecture |
US20030204702A1 (en) * | 2002-04-30 | 2003-10-30 | Adc Dsl Systems, Inc. | Flexible memory architecture for an embedded processor |
JP3953903B2 (ja) * | 2002-06-28 | 2007-08-08 | 富士通株式会社 | キャッシュメモリ装置、及び、参照履歴のビット誤り検出方法 |
ATE504446T1 (de) | 2002-12-02 | 2011-04-15 | Silverbrook Res Pty Ltd | Totdüsenausgleich |
US6880047B2 (en) * | 2003-03-28 | 2005-04-12 | Emulex Design & Manufacturing Corporation | Local emulation of data RAM utilizing write-through cache hardware within a CPU module |
US7613870B2 (en) * | 2004-11-18 | 2009-11-03 | International Business Machines Corporation | Efficient memory usage in systems including volatile and high-density memories |
US7958312B2 (en) | 2005-11-15 | 2011-06-07 | Oracle America, Inc. | Small and power-efficient cache that can provide data for background DMA devices while the processor is in a low-power state |
US8593474B2 (en) * | 2005-12-30 | 2013-11-26 | Intel Corporation | Method and system for symmetric allocation for a shared L2 mapping cache |
GB2458295B (en) * | 2008-03-12 | 2012-01-11 | Advanced Risc Mach Ltd | Cache accessing using a micro tag |
US8799582B2 (en) * | 2008-12-30 | 2014-08-05 | Intel Corporation | Extending cache coherency protocols to support locally buffered data |
EP2441005A2 (en) | 2009-06-09 | 2012-04-18 | Martin Vorbach | System and method for a cache in a multi-core processor |
WO2013095537A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Controlling a processor cache using a real-time attribute |
WO2013095639A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Utility and lifetime based cache replacement policy |
US9286221B1 (en) * | 2012-06-06 | 2016-03-15 | Reniac, Inc. | Heterogeneous memory system |
US8819342B2 (en) * | 2012-09-26 | 2014-08-26 | Qualcomm Incorporated | Methods and apparatus for managing page crossing instructions with different cacheability |
US9348753B2 (en) * | 2012-10-10 | 2016-05-24 | Advanced Micro Devices, Inc. | Controlling prefetch aggressiveness based on thrash events |
US20150095582A1 (en) * | 2013-09-30 | 2015-04-02 | Avaya, Inc. | Method for Specifying Packet Address Range Cacheability |
WO2015152857A1 (en) | 2014-03-29 | 2015-10-08 | Empire Technology Development Llc | Energy-efficient dynamic dram cache sizing |
US20150293847A1 (en) * | 2014-04-13 | 2015-10-15 | Qualcomm Incorporated | Method and apparatus for lowering bandwidth and power in a cache using read with invalidate |
US9356602B1 (en) * | 2015-05-14 | 2016-05-31 | Xilinx, Inc. | Management of memory resources in a programmable integrated circuit |
-
2016
- 2016-08-04 US US15/228,320 patent/US10176096B2/en active Active
-
2017
- 2017-01-23 TW TW106102354A patent/TW201732599A/zh unknown
- 2017-02-01 JP JP2018543628A patent/JP2019509557A/ja active Pending
- 2017-02-01 SG SG11201805988VA patent/SG11201805988VA/en unknown
- 2017-02-01 CN CN201780010596.5A patent/CN108701093A/zh active Pending
- 2017-02-01 KR KR1020187023757A patent/KR20180113536A/ko unknown
- 2017-02-01 WO PCT/US2017/016005 patent/WO2017146882A1/en active Application Filing
- 2017-02-01 BR BR112018017135A patent/BR112018017135A2/pt unknown
- 2017-02-01 EP EP17704933.5A patent/EP3420460B1/en active Active
- 2017-02-01 ES ES17704933T patent/ES2870516T3/es active Active
-
2018
- 2018-11-26 HK HK18115063.0A patent/HK1256013A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
HK1256013A1 (zh) | 2019-09-13 |
US20170242793A1 (en) | 2017-08-24 |
EP3420460A1 (en) | 2019-01-02 |
JP2019509557A (ja) | 2019-04-04 |
ES2870516T3 (es) | 2021-10-27 |
CN108701093A (zh) | 2018-10-23 |
WO2017146882A1 (en) | 2017-08-31 |
BR112018017135A2 (pt) | 2019-01-02 |
SG11201805988VA (en) | 2018-09-27 |
TW201732599A (zh) | 2017-09-16 |
US10176096B2 (en) | 2019-01-08 |
EP3420460B1 (en) | 2021-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20190049742A (ko) | 프로세서-기반 시스템들에서 공간 QoS(Quality of Service) 태깅을 사용한 이종 메모리 시스템들의 유연한 관리의 제공 | |
US20170212840A1 (en) | Providing scalable dynamic random access memory (dram) cache management using tag directory caches | |
AU2022203960B2 (en) | Providing memory bandwidth compression using multiple last-level cache (llc) lines in a central processing unit (cpu)-based system | |
US9317448B2 (en) | Methods and apparatus related to data processors and caches incorporated in data processors | |
US10176090B2 (en) | Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems | |
US7809889B2 (en) | High performance multilevel cache hierarchy | |
US9229866B2 (en) | Delaying cache data array updates | |
US20210056030A1 (en) | Multi-level system memory with near memory capable of storing compressed cache lines | |
EP3420460B1 (en) | Providing scalable dynamic random access memory (dram) cache management using dram cache indicator caches | |
US20140258636A1 (en) | Critical-word-first ordering of cache memory fills to accelerate cache memory accesses, and related processor-based systems and methods | |
US20170371783A1 (en) | Self-aware, peer-to-peer cache transfers between local, shared cache memories in a multi-processor system | |
US10152261B2 (en) | Providing memory bandwidth compression using compression indicator (CI) hint directories in a central processing unit (CPU)-based system | |
US20240176742A1 (en) | Providing memory region prefetching in processor-based devices | |
US20240202131A1 (en) | Processor-based system for allocating cache lines to a higher-level cache memory | |
US20240078178A1 (en) | Providing adaptive cache bypass in processor-based devices | |
US20190012265A1 (en) | Providing multi-socket memory coherency using cross-socket snoop filtering in processor-based systems | |
US20170091095A1 (en) | Maintaining cache coherency using conditional intervention among multiple master devices |