KR20180113536A - Dram(dynamic random access memory) 캐시 표시자 캐시들을 사용하는 스케일러블 dram 캐시 관리의 제공 - Google Patents

Dram(dynamic random access memory) 캐시 표시자 캐시들을 사용하는 스케일러블 dram 캐시 관리의 제공 Download PDF

Info

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
Application number
KR1020187023757A
Other languages
English (en)
Inventor
나타라잔 바이디야나단
마테우스 코르넬리스 안토니우스 아드리아누스 헤데스
콜린 비튼 베릴리
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20180113536A publication Critical patent/KR20180113536A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/281Single cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2245Memory 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

DRAM(DYNAMIC RANDOM ACCESS MEMORY) 캐시 표시자 캐시들을 사용하는 스케일러블 DRAM 캐시 관리의 제공
[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 캐시 관리 회로를 포함할 수 있는 예시적 프로세서-기반 시스템의 블록 다이어그램이다.
[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)

  1. 고-대역폭 메모리의 일부인 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 캐시 관리 회로.
  2. 제1 항에 있어서,
    상기 DRAM 캐시 관리 회로는, 후-기록(write-back) 모드로 동작하도록 구성되며, 상기 DRAM 캐시에서 상기 판독 어드레스가 발견된다는 결정에 대한 응답으로, 상기 DRAM 캐시의 상기 판독 어드레스에 대한 데이터가 클린(clean)인지 여부를 결정하도록 추가로 구성되고,
    상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시의 상기 판독 어드레스에 대한 데이터가 클린이 아니라는 결정에 대한 추가적 응답으로, 상기 DRAM 캐시로부터 상기 판독 어드레스에 대한 데이터를 판독하도록 구성되는, DRAM 캐시 관리 회로.
  3. 제2 항에 있어서,
    상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시의 상기 판독 어드레스에 대한 데이터가 클린이라는 결정에 대한 응답으로:
    상기 DRAM 캐시 관리 회로의 로드 밸런싱 회로에 기반하여, 상기 DRAM 캐시와 상기 시스템 메모리 DRAM 중에서 선호되는 데이터 소스를 식별하고;
    상기 선호되는 데이터 소스로서 상기 DRAM 캐시를 식별하는 것에 대한 응답으로, 상기 DRAM 캐시로부터 데이터를 판독하고; 그리고
    상기 선호되는 데이터 소스로서 상기 시스템 메모리 DRAM을 식별하는 것에 대한 응답으로, 상기 시스템 메모리 DRAM으로부터 데이터를 판독하도록 추가로 구성되는, DRAM 캐시 관리 회로.
  4. 제1 항에 있어서,
    상기 DRAM 캐시 관리 회로는, 동시-기록(write-through) 모드로 동작하도록 구성되며, 상기 DRAM 캐시에서 상기 판독 어드레스가 발견된다는 결정에 대한 응답으로:
    상기 DRAM 캐시 관리 회로의 로드 밸런싱 회로에 기반하여, 상기 DRAM 캐시와 상기 시스템 메모리 DRAM 중에서 선호되는 데이터 소스를 식별하고; 그리고
    상기 선호되는 데이터 소스로서 상기 시스템 메모리 DRAM을 식별하는 것에 대한 응답으로, 상기 시스템 메모리 DRAM으로부터 데이터를 판독하도록 추가로 구성되고,
    상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시의 상기 판독 어드레스에 대한 데이터가 클린이라는 결정, 그리고 상기 선호되는 데이터 소스로서 상기 DRAM 캐시를 식별하는 것에 대한 추가적 응답으로, 상기 DRAM 캐시로부터 상기 판독 어드레스에 대한 데이터를 판독하도록 구성되는, DRAM 캐시 관리 회로.
  5. 제1 항에 있어서,
    상기 DRAM 캐시 관리 회로는 시스템 캐시에 추가로 커플링되고; 그리고
    상기 DRAM 캐시 관리 회로는, 상기 시스템 캐시 상에서의 미스(miss)에 대한 응답으로, 상기 판독 어드레스를 포함하는 메모리 판독 요청을 수신하도록 구성되는, DRAM 캐시 관리 회로.
  6. 제1 항에 있어서,
    상기 DRAM 캐시 관리 회로는, 상기 시스템 메모리 DRAM에서 상기 판독 어드레스의 데이터를 판독한 이후에, 상기 DRAM 캐시 표시자 캐시를 확률적으로 보충하도록 구성되는, DRAM 캐시 관리 회로.
  7. 제1 항에 있어서,
    상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시 표시자 캐시에 기반하여, 상기 DRAM 캐시의 상기 판독 어드레스에 대한 웨이 수(way number)가 0이 아닌지를 결정하도록 구성됨으로써 상기 DRAM 캐시에서 상기 판독 어드레스가 발견되는지 여부를 결정하도록 구성되는, DRAM 캐시 관리 회로.
  8. 제1 항에 있어서,
    상기 DRAM 캐시 관리 회로는,
    클린 퇴거 데이터(clean evicted data)를 포함하는 기록 데이터 및 기록 어드레스를 포함하는 메모리 기록 요청을 시스템 캐시로부터 수신하고;
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하고; 그리고
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 클린 퇴거 데이터를 확률적으로 기록하도록 추가로 구성되는, DRAM 캐시 관리 회로.
  9. 제8 항에 있어서,
    상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하기 이전에:
    상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하고; 그리고
    상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시를 확률적으로 보충하도록 추가로 구성되고,
    상기 DRAM 캐시 관리 회로는 상기 DRAM 캐시 표시자 캐시를 보충하는 것에 대한 응답으로 상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하도록 구성되는, DRAM 캐시 관리 회로.
  10. 제8 항에 있어서,
    상기 DRAM 캐시 관리 회로는,
    상기 DRAM 캐시로부터 퇴거될 웨이를 선택하고;
    선택된 웨이의 메모리 어드레스를 상기 DRAM 캐시로부터 판독하고;
    상기 DRAM 캐시의 상기 선택된 웨이에 상기 기록 어드레스 및 상기 클린 퇴거 데이터를 기록하고;
    상기 DRAM 캐시 표시자 캐시의 상기 기록 어드레스에 대한 웨이 수를 상기 선택된 웨이의 웨이 수로 업데이트하고;
    상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하는지 여부를 결정하고; 그리고
    상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재한다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시의 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 리셋하도록
    구성됨으로써 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 클린 퇴거 데이터를 확률적으로 기록하도록 구성되는, DRAM 캐시 관리 회로.
  11. 제10 항에 있어서,
    상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로:
    상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 마스터 테이블 엔트리를 판독하고; 그리고
    상기 마스터 테이블 엔트리에 기반하여 상기 DRAM 캐시 표시자 캐시에 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 기록하도록
    구성됨으로써 상기 DRAM 캐시 표시자 캐시를 보충하도록 추가로 구성되는, DRAM 캐시 관리 회로.
  12. 제10 항에 있어서,
    상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로:
    상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 웨이 수를 리셋하고; 그리고
    상기 마스터 테이블에 상기 웨이 수를 기록하도록 추가로 구성되는, DRAM 캐시 관리 회로.
  13. 제1 항에 있어서,
    상기 DRAM 캐시 관리 회로는, 동시-기록 모드로 동작하도록 구성되고, 그리고
    더티 퇴거 데이터(dirty evicted data)를 포함하는 기록 데이터 및 기록 어드레스를 포함하는 메모리 기록 요청을 시스템 캐시로부터 수신하고;
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하고;
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 확률적으로 기록하고;
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견된다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 더티 퇴거 데이터를 기록하고; 그리고
    상기 시스템 메모리 DRAM에 상기 더티 퇴거 데이터를 기록하도록 추가로 구성되는, DRAM 캐시 관리 회로.
  14. 제13 항에 있어서,
    상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하기 이전에:
    상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하고; 그리고
    상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시를 확률적으로 보충하고;
    상기 DRAM 캐시 표시자 캐시를 보충하지 않는 것에 대한 응답으로:
    상기 마스터 테이블의 상기 기록 어드레스에 대응하는 DRAM 캐시 표시자를 업데이트하고; 그리고
    DRAM 캐시에 상기 더티 퇴거 데이터를 기록하도록 추가로 구성되고,
    상기 DRAM 캐시 관리 회로는 상기 DRAM 캐시 표시자 캐시를 보충하는 것에 대한 응답으로 상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하도록 구성되는, DRAM 캐시 관리 회로.
  15. 제13 항에 있어서,
    상기 DRAM 캐시 관리 회로는,
    상기 DRAM 캐시로부터 퇴거될 웨이를 선택하고;
    선택된 웨이의 메모리 어드레스를 상기 DRAM 캐시로부터 판독하고;
    상기 DRAM 캐시의 상기 선택된 웨이에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 기록하고;
    상기 DRAM 캐시 표시자 캐시의 상기 기록 어드레스에 대한 웨이 수를 상기 선택된 웨이의 웨이 수로 업데이트하고;
    상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하는지 여부를 결정하고; 그리고
    상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재한다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시의 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 리셋하도록
    구성됨으로써 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 확률적으로 기록하도록 구성되는, DRAM 캐시 관리 회로.
  16. 제15 항에 있어서,
    상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로,
    상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 마스터 테이블 엔트리를 판독하고; 그리고
    상기 마스터 테이블 엔트리에 기반하여 상기 DRAM 캐시 표시자 캐시에 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 기록하도록
    구성됨으로써 상기 DRAM 캐시 표시자 캐시를 보충하도록 추가로 구성되는, DRAM 캐시 관리 회로.
  17. 제15 항에 있어서,
    상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로,
    상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 웨이 수를 리셋하고; 그리고
    상기 마스터 테이블에 상기 웨이 수를 기록하도록 추가로 구성되는, DRAM 캐시 관리 회로.
  18. 제1 항에 있어서,
    상기 DRAM 캐시 관리 회로는, 후-기록 모드로 동작하도록 구성되고, 그리고
    더티 퇴거 데이터를 포함하는 기록 데이터 및 기록 어드레스를 포함하는 메모리 기록 요청을 시스템 캐시로부터 수신하고;
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하고;
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 확률적으로 기록하고;
    상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 기록하지 않는 것에 대한 응답으로, 상기 시스템 메모리 DRAM에 상기 더티 퇴거 데이터를 기록하고; 그리고
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견된다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 더티 퇴거 데이터를 기록하도록 추가로 구성되는, DRAM 캐시 관리 회로.
  19. 제18 항에 있어서,
    상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하기 이전에:
    상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하고; 그리고
    상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시를 확률적으로 보충하고;
    상기 DRAM 캐시 표시자 캐시를 보충하지 않는 것에 대한 응답으로:
    상기 마스터 테이블로부터 상기 기록 어드레스에 대한 DRAM 캐시 표시자를 판독하고;
    상기 시스템 메모리 DRAM에 상기 더티 퇴거 데이터를 기록하고; 그리고
    상기 마스터 테이블로부터의 상기 기록 어드레스에 대한 상기 DRAM 캐시 표시자가 상기 DRAM 캐시에 상기 기록 어드레스가 있다고 표시하는지의 여부를 결정하도록 추가로 구성되고;
    상기 DRAM 캐시 관리 회로는 상기 DRAM 캐시 표시자 캐시를 보충하는 것에 대한 응답으로 상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하도록 구성되는, DRAM 캐시 관리 회로.
  20. 제18 항에 있어서,
    상기 DRAM 캐시로부터 퇴거될 웨이를 선택하고;
    선택된 웨이의 상기 메모리 어드레스를 상기 DRAM 캐시로부터 판독하고;
    상기 선택된 웨이의 상기 메모리 어드레스를 상기 DRAM 캐시로부터 판독한 이후에, 상기 DRAM 캐시의 상기 선택된 웨이에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 기록하고;
    상기 DRAM 캐시 표시자 캐시의 상기 기록 어드레스에 대한 웨이 수를 상기 선택된 웨이의 웨이 수로 업데이트하고;
    상기 DRAM 캐시 표시자 캐시의 상기 기록 어드레스에 대한 더티 표시자를 세팅하고;
    상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하는지 여부를 결정하고; 그리고
    상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재한다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시의 상기 선택된 웨이의 상기 기록 어드레스에 대한 웨이 수 및 상기 더티 표시자를 리셋하도록
    구성됨으로써 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 확률적으로 기록하도록 구성되는, DRAM 캐시 관리 회로.
  21. 제20 항에 있어서,
    상기 DRAM 캐시 관리 회로는, 상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로:
    상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 마스터 테이블 엔트리를 판독하고; 그리고
    상기 마스터 테이블 엔트리에 기반하여 상기 DRAM 캐시 표시자 캐시에 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 기록하도록
    구성됨으로써 상기 DRAM 캐시 표시자 캐시를 보충하도록 추가로 구성되는, DRAM 캐시 관리 회로.
  22. 제20 항에 있어서,
    상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로:
    상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 웨이 수를 리셋하고; 그리고
    상기 마스터 테이블에 상기 웨이 수를 기록하도록 추가로 구성되는, DRAM 캐시 관리 회로.
  23. 제1 항에 있어서,
    IC(integrated circuit)에 통합되는, DRAM 캐시 관리 회로.
  24. 제1 항에 있어서,
    상기 DRAM 캐시 관리 회로는, 셋탑 박스, 엔터테인먼트 유닛, 네비게이션 디바이스, 통신 디바이스, 고정 위치 데이터 유닛, 모바일 위치 데이터 유닛, 모바일 폰, 셀룰러 폰, 스마트폰, 태블릿, 패블릿, 컴퓨터, 휴대용 컴퓨터, 데스크탑 컴퓨터, PDA(personal digital assistant), 모니터, 컴퓨터 모니터, 텔레비전, 튜너, 라디오, 위성 라디오, 뮤직 플레이어, 디지털 뮤직 플레이어, 휴대용 뮤직 플레이어, 디지털 비디오 플레이어, 비디오 플레이어, DVD(digital video disc) 플레이어, 휴대용 디지털 비디오 플레이어, 및 자동차로 구성된 그룹으로부터 선택된 디바이스에 통합되는, DRAM 캐시 관리 회로.
  25. 스케일러블 DRAM(dynamic random access memory) 캐시 관리를 제공하기 위한 방법으로서,
    DRAM 캐시 관리 회로가, 판독 어드레스를 포함하는 메모리 판독 요청을 수신하는 단계;
    상기 DRAM 캐시 관리 회로의 DRAM 캐시 표시자 캐시에서 상기 판독 어드레스가 발견되는지 여부를 결정하는 단계;
    상기 DRAM 캐시 표시자 캐시에서 상기 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 시스템 메모리 DRAM에서 상기 판독 어드레스의 데이터를 판독하는 단계; 및
    상기 DRAM 캐시 표시자 캐시에서 상기 판독 어드레스가 발견된다는 결정에 대한 응답으로:
    상기 DRAM 캐시 표시자 캐시에 기반하여, 고-대역폭 메모리의 일부인 DRAM 캐시에서 상기 판독 어드레스가 발견되는지 여부를 결정하는 단계;
    상기 DRAM 캐시에서 상기 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 시스템 메모리 DRAM에서 상기 판독 어드레스의 데이터를 판독하는 단계; 및
    상기 DRAM 캐시에서 상기 판독 어드레스가 발견된다는 결정에 대한 응답으로, 상기 DRAM 캐시로부터 상기 판독 어드레스에 대한 데이터를 판독하는 단계를 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  26. 제25 항에 있어서,
    상기 DRAM 캐시 관리 회로는, 후-기록 모드로 동작하도록 구성되고, 그리고
    상기 방법은, 상기 DRAM 캐시에서 상기 판독 어드레스가 발견된다는 결정에 대한 응답으로, 상기 DRAM 캐시의 상기 판독 어드레스에 대한 데이터가 클린인지 여부를 결정하는 단계를 더 포함하고,
    상기 DRAM 캐시로부터 상기 판독 어드레스에 대한 데이터를 판독하는 단계는 상기 DRAM 캐시의 상기 판독 어드레스에 대한 데이터가 클린이 아니라는 결정에 대해 추가로 응답하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  27. 제26 항에 있어서,
    상기 DRAM 캐시 내의 상기 판독 어드레스에 대한 데이터가 클린이라는 결정에 대한 응답으로:
    상기 DRAM 캐시와 상기 시스템 메모리 DRAM 중에서 선호되는 데이터 소스를 식별하는 단계;
    상기 선호되는 데이터 소스로서 상기 DRAM 캐시를 식별하는 것에 대한 응답으로, 상기 DRAM 캐시로부터 데이터를 판독하는 단계; 및
    상기 선호되는 데이터 소스로서 상기 시스템 메모리 DRAM을 식별하는 것에 대한 응답으로, 상기 시스템 메모리 DRAM으로부터 데이터를 판독하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  28. 제25 항에 있어서,
    상기 DRAM 캐시 관리 회로는 동시-기록 모드로 동작하도록 구성되고, 그리고
    상기 방법은, 상기 DRAM 캐시에서 상기 판독 어드레스가 발견된다는 결정에 대한 응답으로:
    상기 DRAM 캐시와 상기 시스템 메모리 DRAM 중에서 선호되는 데이터 소스를 식별하는 단계; 및
    상기 선호되는 데이터 소스로서 상기 시스템 메모리 DRAM을 식별하는 것에 대한 응답으로, 상기 시스템 메모리 DRAM으로부터 데이터를 판독하는 단계를 더 포함하고,
    상기 DRAM 캐시로부터 상기 판독 어드레스에 대한 데이터를 판독하는 단계는, 상기 DRAM 캐시의 상기 판독 어드레스에 대한 데이터가 클린이라는 결정, 그리고 상기 선호되는 데이터 소스로서 상기 DRAM 캐시를 식별하는 것에 대해 추가로 응답하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  29. 제25 항에 있어서,
    상기 판독 어드레스를 포함하는 메모리 판독 요청을 수신하는 단계는, 시스템 캐시 상에서의 미스에 대해 응답하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  30. 제25 항에 있어서,
    상기 시스템 메모리 DRAM에서 상기 판독 어드레스의 데이터를 판독한 이후에, 상기 DRAM 캐시 표시자 캐시를 확률적으로 보충하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  31. 제25 항에 있어서,
    상기 DRAM 캐시 표시자 캐시에 기반하여, 상기 DRAM 캐시의 상기 판독 어드레스에 대한 웨이 수가 0이 아닌지를 결정함으로써 상기 DRAM 캐시에서 상기 판독 어드레스가 발견되는지 여부를 결정하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  32. 제25 항에 있어서,
    클린 퇴거 데이터를 포함하는 기록 데이터 및 기록 어드레스를 포함하는 메모리 기록 요청을 시스템 캐시로부터 수신하는 단계;
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하는 단계; 및
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 클린 퇴거 데이터를 확률적으로 기록하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  33. 제32 항에 있어서,
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하기 이전에:
    상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하는 단계; 및
    상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시를 확률적으로 보충하는 단계를 더 포함하고,
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하는 단계는 상기 DRAM 캐시 표시자 캐시를 보충하는 것에 대해 응답하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  34. 제32 항에 있어서,
    상기 DRAM 캐시로부터 퇴거될 웨이를 선택하고;
    선택된 웨이의 메모리 어드레스를 상기 DRAM 캐시로부터 판독하고;
    상기 DRAM 캐시의 상기 선택된 웨이에 상기 기록 어드레스 및 상기 클린 퇴거 데이터를 기록하고;
    상기 DRAM 캐시 표시자 캐시의 상기 기록 어드레스에 대한 웨이 수를 상기 선택된 웨이의 웨이 수로 업데이트하고;
    상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하는지 여부를 결정하고; 그리고
    상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재한다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시의 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 리셋함으로써 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 클린 퇴거 데이터를 확률적으로 기록하는 단계를 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  35. 제34 항에 있어서,
    상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로,
    상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 마스터 테이블 엔트리를 상기 시스템 메모리 DRAM의 마스터 테이블로부터 판독하고; 그리고
    상기 마스터 테이블 엔트리에 기반하여 상기 DRAM 캐시 표시자 캐시에 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 기록함으로써 상기 DRAM 캐시 표시자 캐시를 보충하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  36. 제34 항에 있어서,
    상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로,
    상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 웨이 수를 리셋하는 단계; 및
    상기 시스템 메모리 DRAM의 마스터 테이블에 상기 웨이 수를 기록하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  37. 제25 항에 있어서,
    상기 DRAM 캐시 관리 회로는 동시-기록 모드로 동작하도록 구성되고, 그리고
    상기 방법은,
    더티 퇴거 데이터를 포함하는 기록 데이터 및 기록 어드레스를 포함하는 메모리 기록 요청을 시스템 캐시로부터 수신하는 단계;
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하는 단계;
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 확률적으로 기록하는 단계;
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견된다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 더티 퇴거 데이터를 기록하는 단계; 및
    상기 시스템 메모리 DRAM에 상기 더티 퇴거 데이터를 기록하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  38. 제37 항에 있어서,
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하기 이전에:
    상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하는 단계; 및
    상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시를 확률적으로 보충하는 단계;
    상기 DRAM 캐시 표시자 캐시를 보충하지 않는 것에 대한 응답으로:
    상기 시스템 메모리 DRAM의 상기 마스터 테이블의 상기 기록 어드레스에 대응하는 DRAM 캐시 표시자를 업데이트하는 단계; 및
    DRAM 캐시에 상기 더티 퇴거 데이터를 기록하는 단계를 더 포함하고,
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하는 단계는 상기 DRAM 캐시 표시자 캐시를 보충하는 것에 대해 응답하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  39. 제37 항에 있어서,
    상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 확률적으로 기록하는 단계는,
    상기 DRAM 캐시로부터 퇴거될 웨이를 선택하는 단계;
    상기 선택된 웨이의 메모리 어드레스를 상기 DRAM 캐시로부터 판독하는 단계;
    상기 DRAM 캐시의 상기 선택된 웨이에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 기록하는 단계;
    상기 DRAM 캐시 표시자 캐시의 상기 기록 어드레스에 대한 웨이 수를 상기 선택된 웨이의 웨이 수로 업데이트하는 단계;
    상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하는지 여부를 결정하는 단계; 및
    상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재한다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시의 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 리셋하는 단계를 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  40. 제39 항에 있어서,
    상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로,
    상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 마스터 테이블 엔트리를 판독하고; 그리고
    상기 마스터 테이블 엔트리에 기반하여 상기 DRAM 캐시 표시자 캐시에 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 기록함으로써 상기 DRAM 캐시 표시자 캐시를 보충하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  41. 제39 항에 있어서,
    상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로,
    상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 웨이 수를 리셋하는 단계; 및
    상기 시스템 메모리 DRAM의 마스터 테이블에 상기 웨이 수를 기록하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  42. 제25 항에 있어서,
    상기 DRAM 캐시 관리 회로는 후-기록 모드로 동작하도록 구성되고, 그리고
    상기 방법은,
    더티 퇴거 데이터를 포함하는 기록 데이터 및 기록 어드레스를 포함하는 메모리 기록 요청을 시스템 캐시로부터 수신하는 단계;
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하는 단계;
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 확률적으로 기록하는 단계;
    상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 기록하지 않는 것에 대한 응답으로, 상기 시스템 메모리 DRAM에 상기 더티 퇴거 데이터를 기록하는 단계; 및
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견된다는 결정에 대한 응답으로, 상기 DRAM 캐시에 상기 더티 퇴거 데이터를 기록하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  43. 제42 항에 있어서,
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하기 이전에:
    상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하는 단계; 및
    상기 DRAM 캐시 표시자 캐시에서 상기 기록 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시를 확률적으로 보충하는 단계;
    상기 DRAM 캐시 표시자 캐시를 보충하지 않는 것에 대한 응답으로:
    상기 시스템 메모리 DRAM의 상기 마스터 테이블의 상기 기록 어드레스에 대응하는 DRAM 캐시 표시자를 업데이트하는 단계;
    상기 시스템 메모리 DRAM에 상기 더티 퇴거 데이터를 기록하는 단계; 및
    상기 마스터 테이블로부터의 상기 기록 어드레스에 대한 상기 DRAM 캐시 표시자가 상기 DRAM 캐시에 상기 기록 어드레스가 있다고 표시하는지의 여부를 결정하는 단계를 더 포함하고,
    상기 DRAM 캐시에서 상기 기록 어드레스가 발견되는지 여부를 결정하는 단계는 상기 DRAM 캐시 표시자 캐시를 보충하는 것에 대해 응답하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  44. 제42 항에 있어서,
    상기 DRAM 캐시에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 확률적으로 기록하는 단계는,
    상기 DRAM 캐시로부터 퇴거될 웨이를 선택하는 단계;
    선택된 웨이의 메모리 어드레스를 상기 DRAM 캐시로부터 판독하는 단계;
    상기 선택된 웨이의 상기 메모리 어드레스를 상기 DRAM 캐시로부터 판독한 이후에, 상기 DRAM 캐시의 상기 선택된 웨이에 상기 기록 어드레스 및 상기 더티 퇴거 데이터를 기록하는 단계;
    상기 DRAM 캐시 표시자 캐시의 상기 기록 어드레스에 대한 웨이 수를 상기 선택된 웨이의 웨이 수로 업데이트하는 단계;
    상기 DRAM 캐시 표시자 캐시의 상기 기록 어드레스에 대한 더티 표시자를 세팅하는 단계;
    상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하는지 여부를 결정하는 단계; 및
    상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재한다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시의 상기 기록 어드레스에 대한 상기 선택된 웨이의 웨이 수 및 상기 더티 표시자를 리셋하는 단계를 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  45. 제44 항에 있어서,
    상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로,
    상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 마스터 테이블 엔트리를 판독하고; 그리고
    상기 마스터 테이블 엔트리에 기반하여 상기 DRAM 캐시 표시자 캐시에 상기 메모리 어드레스에 대한 상기 선택된 웨이의 웨이 수를 기록함으로써 상기 DRAM 캐시 표시자 캐시를 보충하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  46. 제44 항에 있어서,
    상기 DRAM 캐시 표시자 캐시에 상기 선택된 웨이의 상기 메모리 어드레스가 존재하지 않는다는 결정에 대한 응답으로,
    상기 메모리 어드레스에 대응하는 상기 선택된 웨이의 웨이 수를 리셋하는 단계; 및
    상기 시스템 메모리 DRAM의 마스터 테이블에 상기 웨이 수를 기록하는 단계를 더 포함하는, 스케일러블 DRAM 캐시 관리를 제공하기 위한 방법.
  47. DRAM(dynamic random access memory) 캐시 관리 회로로서,
    판독 어드레스를 포함하는 메모리 판독 요청을 수신하기 위한 수단;
    상기 DRAM 캐시 관리 회로의 DRAM 캐시 표시자 캐시에서 상기 판독 어드레스가 발견되는지 여부를 결정하기 위한 수단;
    상기 DRAM 캐시 표시자 캐시에서 상기 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 시스템 메모리 DRAM의 상기 판독 어드레스에서 데이터를 판독하기 위한 수단;
    상기 DRAM 캐시 표시자 캐시에서 상기 판독 어드레스가 발견된다는 결정에 대한 응답으로, 상기 DRAM 캐시 표시자 캐시에 기반하여, 고-대역폭 메모리의 일부인 DRAM 캐시에서 상기 판독 어드레스가 발견되는지 여부를 결정하기 위한 수단;
    상기 DRAM 캐시에서 상기 판독 어드레스가 발견되지 않는다는 결정에 대한 응답으로, 상기 시스템 메모리 DRAM의 상기 판독 어드레스에서 데이터를 판독하기 위한 수단; 및
    상기 DRAM 캐시에서 상기 판독 어드레스가 발견된다는 결정에 대한 응답으로, 상기 DRAM으로부터 상기 판독 어드레스에 대한 데이터를 판독하기 위한 수단을 포함하는, DRAM 캐시 관리 회로.
KR1020187023757A 2016-02-22 2017-02-01 Dram(dynamic random access memory) 캐시 표시자 캐시들을 사용하는 스케일러블 dram 캐시 관리의 제공 KR20180113536A (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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