KR20180087817A - 휘발성 메모리 캐시를 위한 리프레쉬를 인식하는 대체 정책 - Google Patents

휘발성 메모리 캐시를 위한 리프레쉬를 인식하는 대체 정책 Download PDF

Info

Publication number
KR20180087817A
KR20180087817A KR1020170113476A KR20170113476A KR20180087817A KR 20180087817 A KR20180087817 A KR 20180087817A KR 1020170113476 A KR1020170113476 A KR 1020170113476A KR 20170113476 A KR20170113476 A KR 20170113476A KR 20180087817 A KR20180087817 A KR 20180087817A
Authority
KR
South Korea
Prior art keywords
refresh
cache
replacement
bank
memory
Prior art date
Application number
KR1020170113476A
Other languages
English (en)
Other versions
KR102245310B1 (ko
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 KR20180087817A publication Critical patent/KR20180087817A/ko
Application granted granted Critical
Publication of KR102245310B1 publication Critical patent/KR102245310B1/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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40618Refresh operations over multiple banks or interleaving
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Dram (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

휘발성 메모리 캐시의 데이터를 대체하는 방법이 제공된다. 휘발성 메모리 캐시는 하나 이상의 메모리 뱅크들을 포함하고 메모리 뱅크들 각각은 복수의 메모리 라인을 포함한다. 방법은: 대체될 복수의 메모리 라인 중 적어도 하나에 대한 대체 ID를 식별하는 단계; 리프레쉬(refresh)될 메모리 뱅크들 중 하나에 대한 리프레쉬 뱅크(bank) ID를 식별하는 단계; 대체 ID 및 리프레쉬 뱅크 ID 사이에 충돌이 존재하는지 여부를 판별하는 단계; 및 충돌이 존재하면 새로운 대체 ID를 선택하는 단계를 포함한다.

Description

휘발성 메모리 캐시를 위한 리프레쉬를 인식하는 대체 정책{REFRESH AWARE REPLACEMENT POLICY FOR VOLATILE MEMORY CACHE}
본 발명에 따른 실시 예들의 하나 이상의 측면들은 휘발성 메모리 캐시들과 관련되고, 좀 더 구체적으로, 휘발성 메모리 캐시들을 위한 대체 정책들에 관한 것이다.
기존 캐시(cache) 대체 정책들은 일반적으로 2개의 주요 설계 고려 사항들, 즉, 최고의 캐시 적중률(cache hit ratio)을 달성하고 합리적인 구현 비용을 유지하는 것을 고려한다. 이러한 설계 고려 사항들은 보통 온칩(on-chip) SRAM 캐시가 사용되는 것으로 가정한다. SRAM 캐시는 불휘발성 메모리(non-volatile memory(NVM))이기 때문에, 리프레쉬(refresh)는 보통 SRAM 캐시에 사용되지 않는다. 구현 비용을 줄이기 위해 그리고/또는 칩 크기를 줄이기 위해, 온칩 캐시 내 DRAM을 사용하는 추세가 있다. DRAM 캐시는 휘발성 메모리이기 때문에, 리프레쉬가 DRAM 캐시에 사용된다. 또한, SRAM 캐시는 보통 DRAM 캐시보다 더 빠르지만 DRAM 캐시는 보통 SRAM 캐시보다 더 싸고 그리고 보통 SRAM 캐시보다 단위 면적당 더 높은 저장 용량을 갖는다.
본 발명은 상술한 기술적 과제를 해결하기 위한 것으로, 본 발명은 휘발성 메모리 캐시를 위한 리프레쉬를 인식하는 대체 정책을 제공할 수 있다.
본 명세서의 실시 예들의 측면들은 리프레쉬를 사용하는 휘발성 메모리 캐시들에 대한 대체 정책들에 관한 것이다. 본 발명의 실시 예들에 따라, 충돌이 대체 ID 및 리프레쉬 뱅크 ID 사이에 존재할 때, 대체 ID 또는 리프레쉬 뱅크 ID 중 어느 하나는 지연들을 방지하기 위해 변경될 수 있다. 좀 더 구체적으로, 본 발명의 일부 실시 예들은 대체 ID 및 리프레쉬 뱅크 ID를 식별할 수 있고 그리고 충돌이 있으면, 본 발명의 실시 예들은 충돌에 기인한 지연들을 방지하기 위해 새로운 대체 ID를 선택할 수 있다. 또한, 본 발명의 일부 실시 예들은 대체 ID 및 리프레쉬 뱅크 ID를 식별할 수 있고 그리고 충돌이 있으면, 본 발명의 실시 예들은 리프레쉬 뱅크 ID가 변경될 수 있는지를 확인할 수 있고 그리고, 리프레쉬 뱅크 ID가 변경될 수 있으면, 충돌에 기인한 지연들을 방지하기 위해 새로운 리프레쉬 뱅크 ID를 선택할 수 있다.
본 발명의 실시 예에 따라, 휘발성 메모리 캐시의 데이터를 대체하는 방법이 제공되고, 휘발성 메모리 캐시는 하나 이상의 메모리 뱅크들을 포함하고, 메모리 뱅크들 각각은 복수의 메모리 라인을 포함하고, 방법은 포함한다: 대체될 복수의 메모리 라인 중 적어도 하나에 대한 대체 ID를 식별하는 단계; 리프레쉬될 메모리 뱅크들 중 하나에 대한 리프레쉬 뱅크 ID를 식별하는 단계; 대체 ID 및 리프레쉬 뱅크 ID 사이에 충돌이 존재하는지 여부를 판별하는 단계; 및 충돌이 존재하면 새로운 대체 ID를 선택하는 단계.
휘발성 메모리 캐시는 DRAM(Dynamic Random-Access Memory) 캐시를 포함할 수 있다.
방법은 휘발성 메모리 캐시의 캐시 관리부에 의해 수행될 수 있다.
캐시 관리부는 포함할 수 있다: 대체 ID를 식별하는 대체 관리부; 리프레쉬 뱅크 ID를 식별하는 리프레쉬 컨트롤러; 및 충돌이 존재하는지 여부를 판별하는 비교기.
대체 관리부는 비교기로부터 수신된 대체 피드백에 기초하여 새로운 대체 ID를 더 선택할 수 있다.
본 발명의 다른 실시 예에 따라, 휘발성 메모리 캐시의 데이터를 대체하는 방법이 제공되고, 휘발성 메모리 캐시는 하나 이상의 메모리 뱅크들을 포함하고, 메모리 뱅크들 각각은 복수의 메모리 라인을 포함하고, 방법은 포함한다: 대체될 복수의 메모리 라인 중 적어도 하나에 대한 대체 ID를 식별하는 단계; 리프레쉬될 메모리 뱅크들 중 하나에 대한 제 1 리프레쉬 뱅크 ID를 식별하는 단계; 대체 ID 및 제 1 리프레쉬 뱅크 ID 사이에 충돌이 존재하는지 여부를 판별하는 단계; 충돌이 존재하면, 제 1 리프레쉬 뱅크 ID가 변경될 수 있는지 여부를 판별하는 단계; 및 충돌이 존재하고 제 1 리프레쉬 뱅크 ID가 변경될 수 있으면, 제 2 리프레쉬 뱅크 ID를 선택하는 단계.
휘발성 메모리 캐시는 DRAM(Dynamic Random-Access Memory) 캐시를 포함할 수 있다.
방법은 휘발성 메모리 캐시의 캐시 관리부에 의해 수행될 수 있다.
캐시 관리부는 포함할 수 있다: 대체 ID를 식별하는 대체 관리부; 제 1 리프레쉬 뱅크 ID를 식별하는 리프레쉬 컨트롤러; 및 충돌이 존재하는지 여부를 판별하는 비교기.
리프레쉬 컨트롤러는 상기 비교기로부터 수신된 리프레쉬 피드백(refresh feedback)에 기초하여 상기 제 2 리프레쉬 뱅크 ID를 더 선택할 수 있다.
방법은 충돌이 존재하고 제 1 리프레쉬 뱅크 ID가 변경될 수 없으면, 새로운 대체 ID를 선택하는 단계를 더 포함할 수 있다.
방법은 휘발성 메모리 캐시의 캐시 관리부에 의해 수행될 수 있다. 캐시 관리부는 포함할 수 있다: 대체 ID를 식별하는 대체 관리부; 제 1 리프레쉬 뱅크 ID를 식별하는 리프레쉬 컨트롤러; 및 충돌이 존재하는지 여부를 판별하는 비교기.
제 2 리프레쉬 뱅크 ID가 선택되면, 제 1 리프레쉬 뱅크 ID의 리프레쉬는 제 1 리프레쉬 뱅크 ID의 정기적으로 계획된 다음의 리프레쉬까지 연기될 수 있다.
제 2 리프레쉬 뱅크 ID가 선택되면, 제 1 리프레쉬 뱅크 ID의 리프레쉬는 제 2 리프레쉬 뱅크 ID가 리프레쉬되는 시점까지 연기될 수 있다.
본 발명의 다른 실시 예에 따라, 휘발성 메모리 캐시를 포함하는 캐시를 관리하는 캐시 관리부가 제공되고, 휘발성 메모리 캐시는 하나 이상의 메모리 뱅크들을 포함하고, 메모리 뱅크들 각각은 복수의 메모리 라인을 포함하고, 캐시 관리부는 포함한다: 대체될 복수의 메모리 라인 중 적어도 하나에 대한 대체 ID를 식별하는 대체 관리부; 리프레쉬될 메모리 뱅크들 중 하나에 대한 리프레쉬 뱅크 ID를 식별하는 리프레쉬 컨트롤러; 및 대체 ID 및 리프레쉬 뱅크 ID 사이의 충돌이 존재하는지 여부를 판별하고 그리고, 충돌이 존재하면, 대체 피드백을 대체 관리부에 전송하거나 리프레쉬 피드백을 리프레쉬 컨트롤러에 전송하는 비교기. 대체 피드백은 대체 관리부가 새로운 대체 ID를 선택하도록 야기하고 리프레쉬 피드백은 리프레쉬 관리부가 새로운 리프레쉬 뱅크 ID를 선택하도록 야기한다.
휘발성 메모리 캐시는 DRAM(Dynamic Random-Access Memory) 캐시를 포함할 수 있다.
비교기는 대체 피드백을 대체 관리부에 더 전송하도록 구성될 수 있다.
비교기는 리프레쉬 피드백을 리프레쉬 컨트롤러에 더 전송하도록 구성될 수 있다.
비교기는: 충돌이 존재하면, 리프레쉬 뱅크 ID가 변경될 수 있는지 여부를 판별하고, 리프레쉬 뱅크 ID가 변경될 수 있으면, 리프레쉬 피드백을 리프레쉬 컨트롤러로 전송하고, 그리고 리프레쉬 뱅크 ID가 변경될 수 없으면, 대체 피드백을 대체 관리부로 전송하도록 구성될 수 있다.
캐시는 불휘발성 메모리를 더 포함할 수 있다.
본 발명의 실시 예들에 따라, 충돌이 대체 ID 및 리프레쉬 뱅크 ID 사이에 존재할 때, 대체 ID 또는 리프레쉬 뱅크 ID 중 어느 하나는 지연들을 방지하기 위해 변경될 수 있다.
본 발명의 이들 및 다른 특징들 및 측면들은 명세서, 청구항들, 및 첨부 도면들에 관하여 인식되고 이해될 것이다:
도 1은 본 발명의 실시 예에 따른, 고대역폭 메모리 스택의 사시도이다;
도 2는 본 발명의 실시 예에 따라, 고대역폭 메모리 스택을 레벨 3 캐시로서 채용하는 프로세싱 시스템의 블록도이다;
도 3은 본 발명의 실시 예에 따른, 고대역폭 메모리 스택의 블록도이다;
도 4는 일 실시 예에 따라, 백사이드 DRAM 캐시를 포함하는 NVDIMM(Non-Volatile Dual In-Line Memory Module)의 예시를 보여준다;
도 5는 본 발명의 실시 예에 따른 로직 다이의 블록도이다;
도 6은 본 발명의 다른 실시 예에 따른 로직 다이의 블록도이다;
도 7은 본 발명의 다른 실시 예에 따른 로직 다이의 블록도이다;
도 8은 본 발명의 다른 실시 예에 따른 NVM/캐시 컨트롤러의 블록도이다;
도 9는 본 발명의 실시 예에 따라 휘발성 메모리 캐시에 대한 대체 정책의 방법을 설명하는 순서도이다;
도 10은 본 발명의 실시 예에 따라 휘발성 메모리 캐시에 대한 대체 정책의 다른 방법을 설명하는 순서도이다;
도 11은 본 발명의 실시 예에 따라 휘발성 메모리 캐시에 대한 대체 정책의 다른 방법을 설명하는 순서도이다.
본 발명의 실시 예들에 따라, 충돌(conflict)이 대체 ID(replacement ID(identification)) 및 리프레쉬 뱅크 ID(refresh bank ID) 사이에 존재할 때, 대체 ID 또는 리프레쉬 뱅크 ID 중 어느 하나는 지연들을 방지하기 위해 변경될 수 있다. 좀 더 구체적으로, 본 발명의 일부 실시 예들은 대체 ID 및 리프레쉬 뱅크 ID를 식별할 수 있고 그리고 충돌이 있으면, 본 발명의 실시 예들은 충돌에 기인한 지연들을 방지하기 위해 새로운 대체 ID를 선택할 수 있다. 또한, 본 발명의 일부 실시 예들은 대체 ID 및 리프레쉬 뱅크 ID를 식별할 수 있고 그리고 충돌이 있으면, 본 발명의 실시 예들은 리프레쉬 뱅크 ID가 변경될 수 있는지를 확인할 수 있고 그리고, 리프레쉬 뱅크 ID가 변경될 수 있으면, 충돌에 기인한 지연들을 방지하기 위해 새로운 리프레쉬 뱅크 ID를 선택할 수 있다.
첨부된 도면들과 관련하여 이하에 설명되는 상세한 설명은 본 발명에 따라 제공되는 휘발성 메모리 캐시들(caches)을 위한 리프레쉬를 인식하는 대체 정책들의 예시적인 실시 예들에 대한 설명으로서 의도되고, 본 발명이 구성되거나 이용될 수 있는 유일한 형태들을 나타내기 위해 의도되지 않는다. 설명은 예시된 실시 예들과 관련하여 본 발명의 특징들을 설명한다. 그러나, 본 발명의 사상 및 범위 내에 포함되도록 또한 의도된 다른 실시 예들에 의해 동일하거나 동등한 기능들 및 구조들이 달성될 수 있음이 이해된다. 본 명세서의 다른 곳에서 언급된 바와 같이, 동일한 요소 번호들은 동일한 요소들 또는 특징들을 나타내기 위한 것으로 의도된다.
2016년 11월 11일 출원되고 Byte-Addressable Flash-Based Module이란 제목의 미국 특허 출원 15/349,949호, 2016년 9월 21일 출원되고 HBM with In-Memory Cache란 제목의 미국 특허 출원 15/272,339호, 그리고 2016년 10월 4일 출원되고, System and Method for operating a DDR-Compatible Asynchronous Memory module이란 제목의 미국 특허 출원 15/285,423호의 전체 내용은 전체적으로 참조 문헌으로 본 명세서에 인용된다.
고대역폭 메모리(high bandwidth memory; HBM)는 고성능의 3D 스택된 DRAM(three dimensional (3D)-stacked dynamic random access memory)이다. 2세대 고대역폭 메모리는 스택(stack)당 8개 다이들(dies)까지 포함할 수 있고 2 GT/s(giga transfers per second)까지 핀 전송 속도(pin transfer rates)를 제공할 수 있다. 인터페이스(interface)는 총 1024 비트 폭 접근을 위해, 8개 채널들을 포함할 수 있고, 각 채널은 128 비트 폭이다. 2세대 고대역폭 메모리는 패키지(package)당 256 GB/s 메모리 대역폭에 도달할 수 있고 패키지당 8 GB까지의 저장 용량을 가질 수 있다. 2세대 고대역폭 메모리의 인터페이스는 JEDEC(Joint Electron Device Engineering Council)에 의해 인정된 표준을 준수할 수 있다.
도 1은 본 발명의 실시 예에 따른, 고대역폭 메모리 스택의 사시도이다. 도 1을 참조하면, 고대역폭 메모리 스택(HBM stack, 105)의 물리적인 구성은 로직 다이(logic die, 110), 및 로직 다이(110) 위에 스택된(stacked) 복수의 DRAM 다이(예를 들면, 8개 다이들)를 포함하는, 3D DRAM 또는 DRAM 스택(three dimensional DRAM or DRAM stack, 115)을 포함할 수 있다. 상호 연결들(interconnections)은 TSVs(through-silicon vias)를 이용하여 스택 내에 형성된다. 다른 고대역폭 메모리 스택들은 로직 다이 내에서, 접속들 및 신호 처리 회로를 포함할 수 있고, 그 결과로 DRAM 채널 인터페이스들이 실질적으로 변경되지 않고, 고대역폭 메모리의 외부 인터페이스에서 호스트 프로세서에 제공될 수 있다.
도 2는 본 발명의 실시 예에 따라, 고대역폭 메모리 스택을 레벨 3 캐시로서 채용하는 프로세싱 시스템의 블록도이다. 도 2를 참조하면, 고대역폭 메모리 스택(105)은 호스트 프로세서(host processor, 155, 예를 들면, CPU 또는 GPU)에 연결될 수 있다. 호스트 프로세서(155)는 복수의 코어(C, 160)를 포함할 수 있고, 각 코어는 레벨 1(L1) 캐시(150)를 갖는다. 레벨 2(L2) 캐시(120)는 레벨 1(L1) 캐시들(150)과 연결될 수 있고, 그리고 제 1 메모리 컨트롤러(MC 1, 125) 오프 칩 메인 메모리(off-chip main memory, 130)에 인터페이스를 제공할 수 있다. 제 2 메모리 컨트롤러(MC 2, 135)는 고대역폭 메모리 스택(105)에 인터페이스를 제공할 수 있다. 고대역폭 메모리 스택(105)은 고대역폭 메모리 스택(105)의 로직 다이 내 캐시 관리부(cache manager; CM)를 포함할 수 있다. 고대역폭 메모리 스택(105)은, 그것의 집적된 캐시 매니저(manager)와 함께, 호스트 프로세서(155)에 의해 레벨 3 캐시로서 (또는, 예를 들면, 레벨 3 캐시도 갖는 시스템의 레벨 4 캐시로서) 채용될 수 있다. 고대역폭 메모리 인터페이스(145)는 JEDEC을 준수하는 인터페이스일 수 있다. 즉, 고대역폭 메모리 인터페이스(145)는 전도체들(conductors) 및 JEDEC 표준에 의해 명시된 시그널링 프로토콜들(signaling protocols)을 제공할 수 있다. 일 실시 예에 있어서, 고대역폭 메모리 스택(105) 및 호스트 프로세서(155)는 실리콘 인터포저(silicon interposer, 140)에 배치될 수 있다. 실리콘 인터포저(140)는 고대역폭 메모리 스택(105)과 호스트 프로세서(155)를 연결할 수 있다.
도 3은 본 발명의 실시 예에 따른, 고대역폭 메모리 스택의 블록도이다. 도 3을 참조하면, 일부 실시 예들에 있어서, 고대역폭 메모리 스택(105)은 채널들로서 지칭되고, Ch0-Ch7로서 도 3에서 도시된 8개 내부 인터페이스들을 통해, DRAM 스택(115, 예를 들면 도 1 참조) 내 DRAM과 연결될 수 있는, 로직 다이(110)를 포함할 수 있다. 각 레벨은 다이로서 지칭될 수 있다. 예를 들어, Ch0 및 Ch1은 DRAM 다이 0에서 있을 수 있고, Ch2 및 Ch3은 DRAM 다이 1에서 있을 수 있고, Ch4 및 Ch5는 DRAM 다이 2에서 있을 수 있고, 그리고 Ch6 및 Ch7은 DRAM 다이 3에서 있을 수 있다.
그리고 모든 DRAM 다이들 아래에, 로직이 더해질 수 있는 곳에 로직 다이가 있다. 로직 다이는 제 2 메모리 컨트롤러(135, 예를 들면, 도 2 참조)와 통신할 수 있다. 로직 다이 및 제 2 메모리 컨트롤러(135) 사이의 인터페이스는 JEDEC 표준에 의해 정의될 수 있다.
본 발명의 실시 예들에 따라, 일부 캐시 관리 로직은 고대역폭 메모리 자체가 전체로서 자체적으로 관리되는 캐시(self-managed cache)로 다뤄질 수 있도록 로직 다이에 더해질 수 있다. 이러한 실시 예들에서, 호스트 프로세서(155)는 캐시를 제어하기 위해 추가적인 작업을 할 필요가 없을 수 있다.
도 4는 일 실시 예에 따라, 백사이드 DRAM 캐시를 포함하는 NVDIMM의 예시를 보여준다. 도 4를 참조하면, NVDIMM(201a)은 불휘발성 메모리(non-volatile memory; NVM, 210), 백사이드 DRAM 캐시(backside DRAM cache, 211a), 및 NVM/캐시 컨트롤러(NVM/cache controller, 220)를 포함할 수 있다. NVDIMM(201a)의 데이터 버퍼(data buffer, 230)는 호스트 메모리 컨트롤러에 의해 요청되는 NVDIMM(201a)의 상태의 데이터를 데이터(DQ) 버스를 통해 제공한다. NVDIMM(201a)의 RCD(registering clock driver, 231)는 데이터 버퍼(230)로 명령 시퀀스들(command sequences)을 생성하는 제어 및 주소 버퍼(control and address(CA) buffer)를 제공한다. 백사이드 DRAM 캐시(211a)는 NVM/캐시 컨트롤러(220)에 연결되고 그리고 NVM/캐시 컨트롤러(220)를 통해 데이터 버퍼(230)로부터의 데이터 및 RCD(231)로부터의 제어 및 주소를 수신할 수 있다. 이것은 호스트 메모리 컨트롤러에 의한 백사이드 DRAM 캐시(211a)로의 직접적인 접근을 금지한다. 호스트 메모리 컨트롤러는 직접적인 모드(direct mode)에서는 백사이드 DRAM 캐시(211a)에 접근할 수 있으나 캐시 모드(cache mode)에서는 백사이드 DRAM 캐시(211a)에 직접적으로 접근할 수 없다. 백사이드 DRAM 캐시(211a)로의 접근은 종래 DRAM으로의 접근 시간보다 더 긴 접근 시간을 야기하는 메모리 컨트롤러 및 메모리 모듈 사이의 핸드셰이킹(handshaking)을 요구할 수 있다.
DRAM(예를 들면 8GB 고대역폭 메모리)을 캐시로서 이용하면, 리프레쉬의 영향은 무시할 수 없다. 이것은, 캐시 라인(cache line)이 쫓겨나거나(evict, 또는 제거되거나) 삽입되기 위해 선택되고, 그리고 선택된 캐시 라인이 또한 리프레쉬가 막 시작되는 뱅크 내에 있으면, 선택된 캐시 라인이 쫓겨나거나 삽입되기 전에 지연이 요구될 수 있음을 의미한다. 이 기다림은 다음의 동작들에 대해 더 높은 대기 행렬(queuing)의 지연들을 야기한다.
본 발명의 실시 예들에 따른 리프레쉬를 인식하는 캐시 대체 정책들은 기존의 대체 정책들을 기반으로 구축될 수 있다. 예를 들어, 기존의 대체 정책들은 본 발명의 실시 예들을 그 안에 포함하도록 수정될 수 있다. 본 발명의 실시 예들은 LRU 기초(Least-Recently-Used-based; LRU-based) 대체 정책, 랜덤(random) 대체 정책, FIFO(First-In-First-Out) 대체 정책, nMRU(not-Most-Recently-Used) 대체 정책, 및/또는 그 밖의 같은 종류의 것 중 임의의 것을 기반으로 할 수 있다.
일반적인 대체 정책들은 대체 ID를 확인한다. 본 발명의 실시 예들에 따른 리프레쉬를 인식하는 캐시 대체 정책은 대체 ID 및 리프레쉬 뱅크 ID 모두를 확인한다. 대체 ID 및 리프레쉬 뱅크 ID에 기초하여, 본 발명의 실시 예들은 대체하기 위한 더 나은 라인을 판별할 수 있거나 리프레쉬 하기 위한 더 나은 뱅크를 판별할 수 있다.
본 발명의 일부 실시 예들에 따라, 대체 ID가 리프레쉬 뱅크 ID와 충돌하면, 이것은 대체될 라인이 리프레쉬에 의해 영향 받을 것임을 의미하고, 그러면 그 다음 최적의 대체 ID가 선택될 것이다. 본 발명의 일부 실시 예들에 따라, 대체 ID가 리프레쉬 ID와 충돌하면, 그러면 리프레쉬되는 다음 리프레쉬 뱅크가 선택될 것이다. 연기된 뱅크는 다음 리프레쉬 뱅크가 원래 리프레쉬되는 시점에서 리프레쉬될 수 있거나 또는 그것의 정기적으로 계획된 다음의 리프레쉬까지 연기될 수 있다.
도 5는 본 발명의 실시 예에 따른 로직 다이의 블록도이다. 도 5를 참조하면, 로직 다이(예를 들면, 도 1 내지 도 3 참조, 110)는 캐시 관리부(cache manager, 600)를 포함한다. 캐시 관리부(600)는 휘발성 메모리 캐시를 관리할 수 있다. 캐시 관리부(600)는 대체 관리부(replacement manager, 300), 리프레쉬 컨트롤러(refresh controller, 400), 및 비교기(comparator, 500)를 포함한다. 휘발성 메모리 캐시는 3D DRAM 캐시(예를 들면, 도 1의 DRAM 스택(115) 참조)일 수 있다. 휘발성 메모리 캐시는 하나 이상의 메모리 뱅크들을 포함할 수 있고 메모리 뱅크들 각각은 복수의 메모리 라인을 포함할 수 있다.
대체 관리부(300)는 대체 정책에 기초하여 대체 ID(320)를 판별한다(또는 식별한다). 대체 관리부(300)는 대체 ID(320)를 비교기(500)에 제공한다.
리프레쉬 컨트롤러(400)는 임의의 뱅크들의 리프레쉬가 필요한지 여부를 판별한다. 리프레쉬가 필요하면, 리프레쉬 컨트롤러(400)는 리프레쉬 정책에 기초하여 리프레쉬 뱅크 ID(420)를 판별한다(또는 식별한다). 리프레쉬 컨트롤러(400)는 리프레쉬 뱅크 ID(420)를 비교기(500)에 제공한다. 또한, 리프레쉬 컨트롤러(400)는 최종 리프레쉬 뱅크 ID(460)로서 리프레쉬 뱅크 ID(420)를 출력한다.
리프레쉬가 필요하지 않으면, 리프레쉬 컨트롤러(400)는 리프레쉬 뱅크 ID(420)를 전송하기보다는 리프레쉬가 필요하지 않다는 것을 나타내는 신호를 비교기(500)에 전송할 수 있으나, 본 발명은 이에 제한되지 않는다. 예를 들면, 리프레쉬가 필요하지 않으면, 리프레쉬 컨트롤러(400)는 비교기(500)에 아무것도 전송하지 않을 수 있다.
비교기(500)는 대체 ID(320) 및 리프레쉬 뱅크 ID(420)를 비교한다. 비교기(500)는 대체 ID(320) 및 리프레쉬 뱅크 ID(420) 사이에 충돌이 있는지 여부를 판별한다. 비교기(500)는 충돌이 존재하는지 여부를 나타내는 대체 피드백(replacement feedback, 340)을 대체 관리부(300)에 제공한다. 일 실시 예에 따라, 대체 피드백(340)은 충돌이 존재하면 오직 비교기(500)에 의해 제공되고, 그렇지 않으면 제공되지 않지만, 본 발명은 이에 제한되지 않는다. 예를 들면, 비교기(500)는 충돌이 존재하지 않으면 제 1 레벨로 대체 피드백(340)을 제공할 수 있고 충돌이 존재하면 제 2 레벨로 대체 피드백(340)을 제공할 수 있다.
대체 관리부(300)가 충돌이 존재하지 않음을 나타내는 대체 피드백(340)을 수신하면 (또는 대체 관리부(300)가 대체 피드백(340)을 수신하지 않으면), 대체 관리부(300)는 최종 대체 ID(360)로서 대체 ID(320)를 출력한다.
대체 관리부(300)가 충돌이 존재함을 나타내는 대체 피드백(340)을 수신하면, 대체 관리부(300)는 대체 정책에 기초하여 다음 대체 ID를 선택하고 최종 대체 ID(360)로서 다음 대체 ID를 출력한다. 다음 대체 ID는 다음의 최적 대체 ID, 다음의 가장 오래된(oldest) 대체 ID 등일 수 있다.
즉, 대체 관리부(300)는 비교기(500)로부터 수신된 대체 피드백(340)에 기초하여 새로운 대체 ID를 선택한다.
도 6은 본 발명의 다른 실시 예에 따른 로직 다이의 블록도이다. 도 6을 참조하면, 로직 다이(112)는 캐시 관리부(602)를 포함한다. 캐시 관리부(602)는 휘발성 메모리 캐시를 관리할 수 있다. 캐시 관리부(602)는 대체 관리부(302), 리프레쉬 컨트롤러(402), 및 비교기(502)를 포함한다. 휘발성 메모리 캐시는 3D DRAM 캐시(예를 들면, 도 1의 DRAM 스택(115) 참조)일 수 있다. 휘발성 메모리 캐시는 하나 이상의 메모리 뱅크들을 포함할 수 있고 메모리 뱅크들 각각은 복수의 메모리 라인을 포함할 수 있다.
대체 관리부(302)는 대체 정책에 기초하여 대체 ID(322)를 판별한다(또는 식별한다). 대체 관리부(302)는 대체 ID(322)를 비교기(502)에 제공한다. 또한, 대체 관리부(302)는 최종 대체 ID(362)로서 대체 ID(322)를 출력한다.
리프레쉬 컨트롤러(402)는 임의의 뱅크들의 리프레쉬가 필요한지 여부를 판별한다. 리프레쉬가 필요하면, 리프레쉬 컨트롤러(402)는 리프레쉬 정책에 기초하여 리프레쉬 뱅크 ID(422)를 판별한다(또는 식별한다). 리프레쉬 컨트롤러(402)는 리프레쉬 뱅크 ID(422)를 비교기(502)에 제공한다.
리프레쉬가 필요하지 않으면, 리프레쉬 컨트롤러(402)는 리프레쉬 뱅크 ID(422)를 전송하기보다는 리프레쉬가 필요하지 않다는 것을 나타내는 신호를 비교기(502)에 전송할 수 있으나, 본 발명은 이에 제한되지 않는다. 예를 들면, 리프레쉬가 필요하지 않으면, 리프레쉬 컨트롤러(402)는 비교기(502)에 아무것도 전송하지 않을 수 있다.
비교기(502)는 대체 ID(322) 및 리프레쉬 뱅크 ID(422)를 비교한다. 비교기(502)는 대체 ID(322) 및 리프레쉬 뱅크 ID(422) 사이에 충돌이 있는지 여부를 판별한다. 비교기(502)는 충돌이 존재하는지 여부를 나타내는 리프레쉬 피드백(442)을 리프레쉬 컨트롤러(402)에 제공한다. 일 실시 예에 따라, 리프레쉬 피드백(442)은 충돌이 존재하면 오직 비교기(502)에 의해 제공되고, 그렇지 않으면 제공되지 않지만, 본 발명은 이에 제한되지 않는다. 예를 들면, 비교기(502)는 충돌이 존재하지 않으면 제 1 레벨로 리프레쉬 피드백(442)을 제공할 수 있고 충돌이 존재하면 제 2 레벨로 리프레쉬 피드백(442)을 제공할 수 있다.
리프레쉬 컨트롤러(402)가 충돌이 존재하지 않음을 나타내는 리프레쉬 피드백(442)을 수신하면 (또는 리프레쉬 컨트롤러(402)가 리프레쉬 피드백(442)을 수신하지 않으면), 리프레쉬 컨트롤러(402)는 최종 리프레쉬 뱅크 ID(462)로서 리프레쉬 뱅크 ID(422)를 출력한다.
리프레쉬 컨트롤러(402)가 충돌이 존재함을 나타내는 리프레쉬 피드백(442)을 수신하면, 리프레쉬 컨트롤러(402)는 리프레쉬 뱅크 ID(422)가 연기 (또는 변경)될 수 있는지 여부를 판별하고 그리고 리프레쉬 뱅크 ID(422)가 연기(또는 변경)될 수 있으면, 리프레쉬 정책에 기초하여 다음 리프레쉬 뱅크 ID를 선택하고 그리고 최종 리프레쉬 뱅크 ID(462)로서 다음 리프레쉬 뱅크 ID를 출력한다. 다음 리프레쉬 뱅크 ID는 다음의 최적 리프레쉬 뱅크 ID, 다음의 가장 오래된 리프레쉬 뱅크 ID 등일 수 있다.
즉, 리프레쉬 컨트롤러(402)는 비교기(502)로부터 수신된 리프레쉬 피드백(442)에 기초하여 다음 리프레쉬 뱅크 ID를 선택한다.
연기된 뱅크는 다음 리프레쉬 뱅크가 원래 리프레쉬되는 시점에서 리프레쉬될 수 있거나 또는 그것의 정기적으로 계획된 다음의 리프레쉬까지 지연될 수 있다.
도 7은 본 발명의 다른 실시 예에 따른 로직 다이의 블록도이다. 도 7를 참조하면, 로직 다이(114)는 캐시 관리부(604)를 포함한다. 캐시 관리부(604)는 휘발성 메모리 캐시를 관리할 수 있다. 캐시 관리부(604)는 대체 관리부(304), 리프레쉬 컨트롤러(404), 및 비교기(504)를 포함한다. 휘발성 메모리 캐시는 3D DRAM 캐시(예를 들면, 도 1의 DRAM 스택(115) 참조)일 수 있다. 휘발성 메모리 캐시는 하나 이상의 메모리 뱅크들을 포함할 수 있고 메모리 뱅크들 각각은 복수의 메모리 라인을 포함할 수 있다.
대체 관리부(304)는 대체 정책에 기초하여 대체 ID(324)를 판별한다(또는 식별한다). 대체 관리부(304)는 대체 ID(324)를 비교기(504)에 제공한다.
리프레쉬 컨트롤러(404)는 임의의 뱅크들의 리프레쉬가 필요한지 여부를 판별한다. 리프레쉬가 필요하면, 리프레쉬 컨트롤러(404)는 리프레쉬 정책에 기초하여 리프레쉬 뱅크 ID(424)를 판별한다(또는 식별한다). 리프레쉬 컨트롤러(404)는 리프레쉬 뱅크 ID(424)를 비교기(504)에 제공한다.
리프레쉬가 필요하지 않으면, 리프레쉬 컨트롤러(404)는 리프레쉬 뱅크 ID(424)를 전송하기보다는 리프레쉬가 필요하지 않다는 것을 나타내는 신호를 비교기(504)에 전송할 수 있으나, 본 발명은 이에 제한되지 않는다. 예를 들면, 리프레쉬가 필요하지 않으면, 리프레쉬 컨트롤러(404)는 비교기(504)에 아무것도 전송하지 않을 수 있다.
비교기(504)는 대체 ID(324) 및 리프레쉬 뱅크 ID(424)를 비교한다. 비교기(504)는 대체 ID(324) 및 리프레쉬 뱅크 ID(424) 사이에 충돌이 있는지 여부를 판별한다. 충돌이 존재하면, 비교기(504)는 리프레쉬 뱅크 ID(424)가 연기될 수 있는지 여부를 판별한다.
리프레쉬 뱅크 ID(424)가 연기될 수 있고 충돌이 존재하면, 비교기(504)는 리프레쉬 뱅크 ID(424)가 변경되어야 하는 것을 나타내는 리프레쉬 피드백(444)을 리프레쉬 컨트롤러(404)에 제공한다. 일 실시 예에 따라, 리프레쉬 피드백(444)은 리프레쉬 뱅크 ID(424)가 변경되어야 하면 오직 비교기(504)에 의해 제공되고, 그렇지 않으면 제공되지 않지만, 본 발명은 이에 제한되지 않는다. 예를 들면, 비교기(504)는 리프레쉬 뱅크 ID(424)가 변경되지 않아야 하면 제 1 레벨로 리프레쉬 피드백(444)을 제공할 수 있고 리프레쉬 뱅크 ID(424)가 변경되어야 하면 제 2 레벨로 리프레쉬 피드백(444)을 제공할 수 있다.
리프레쉬 뱅크 ID(424)가 연기될 수 없고 충돌이 존재하면, 비교기(504)는 대체 ID(324)가 변경되어야 하는 것을 나타내는 대체 피드백(344)을 대체 관리부(304)에 제공한다. 일 실시 예에 따라, 대체 피드백(344)은 대체 ID(324)가 변경되어야 하면 오직 비교기(504)에 의해 제공되고, 그렇지 않으면 제공되지 않지만, 본 발명은 이에 제한되지 않는다. 예를 들면, 비교기(504)는 대체 ID(324)가 변경되지 않아야 하면 제 1 레벨로 대체 피드백(344)을 제공할 수 있고 대체 ID(324)가 변경되어야 하면 제 2 레벨로 대체 피드백(344)을 제공할 수 있다.
리프레쉬 컨트롤러(404)가 리프레쉬 뱅크 ID(424)가 변경되지 않아야 하는 것을 나타내는 리프레쉬 피드백(444)을 수신하면 (또는 리프레쉬 컨트롤러(404)가 리프레쉬 피드백(444)을 수신하지 않으면), 리프레쉬 컨트롤러(404)는 최종 리프레쉬 뱅크 ID(464)로서 리프레쉬 뱅크 ID(424)를 출력한다.
리프레쉬 컨트롤러(404)가 리프레쉬 뱅크 ID(424)가 변경되어야 하는 것을 나타내는 리프레쉬 피드백(444)을 수신하면, 리프레쉬 컨트롤러(404)는 리프레쉬 정책에 기초하여 다음 리프레쉬 뱅크 ID를 선택하고 최종 리프레쉬 뱅크 ID(464)로서 다음 리프레쉬 뱅크 ID를 출력한다. 다음 리프레쉬 뱅크 ID는 다음의 최적 리프레쉬 뱅크 ID, 다음의 가장 오래된 리프레쉬 뱅크 ID 등일 수 있다.
즉, 리프레쉬 컨트롤러(404)는 비교기(504)로부터 수신된 리프레쉬 피드백(444)에 기초하여 다음 리프레쉬 뱅크 ID를 선택한다.
연기된 뱅크는 다음 리프레쉬 뱅크가 원래 리프레쉬되는 시점에서 리프레쉬될 수 있거나 또는 그것의 정기적으로 계획된 다음의 리프레쉬까지 지연될 수 있다. 즉, 제 2 리프레쉬 뱅크 ID가 선택되면, 제 1 리프레쉬 뱅크 ID의 리프레쉬는 제 2 리프레쉬 뱅크 ID가 리프레쉬되는 시점까지 연기될 수 있다.
대체 관리부(304)가 대체 ID(324)가 변경되지 않아야 하는 것을 나타내는 대체 피드백(344)을 수신하면 (또는 대체 관리부(304)가 대체 피드백(344)을 수신하지 않으면), 대체 관리부(304)는 최종 대체 ID(364)로서 대체 ID(324)를 출력한다.
대체 관리부(304)가 대체 ID(324)가 변경되어야 하는 것을 나타내는 대체 피드백(344)을 수신하면, 대체 관리부(304)는 대체 정책에 기초하여 다음 대체 ID를 선택하고 최종 대체 ID(364)로서 다음 대체 ID를 출력한다. 다음 대체 ID는 다음의 최적 대체 ID, 다음의 가장 오래된 대체 ID 등일 수 있다.
즉, 대체 관리부(304)는 비교기(504)로부터 수신된 대체 피드백(344)에 기초하여 새로운 대체 ID를 선택한다.
도 8은 본 발명의 다른 실시 예에 따른 NVM/캐시 컨트롤러의 블록도이다. 도 8을 참조하면, NVM/캐시 컨트롤러(도 4 참조, 220)는 대체 관리부(306), 리프레쉬 컨트롤러(406), 및 비교기(506)를 포함한다. NVM/캐시 컨트롤러(220)는 휘발성 메모리 캐시를 관리할 수 있다. 휘발성 메모리 캐시는 백사이드 DRAM 캐시(예를 들면, 도 4의 백사이드 DRAM 캐시(211a) 참조)일 수 있다. 휘발성 메모리 캐시는 하나 이상의 메모리 뱅크들을 포함할 수 있고 메모리 뱅크들 각각은 복수의 메모리 라인을 포함할 수 있다.
본 발명의 실시 예들에 따라, NVM/캐시 컨트롤러(220)의 대체 관리부(306), 리프레쉬 컨트롤러(406), 및 비교기(506)는 각각 도 5의 대체 관리부(300), 리프레쉬 컨트롤러(400), 및 비교기(500)와 실질적으로 유사한 방식으로 동작할 수 있다. 이에 따라, 이들의 상세한 설명은 생략될 것이다.
예를 들어, 비교기(506)는 대체 관리부(306)로부터 대체 ID(326)를 수신할 수 있고 리프레쉬 컨트롤러(406)로부터 리프레쉬 뱅크 ID(426)를 수신할 수 있다. 비교기(506)는 충돌이 존재하는지 여부에 기초하여 대체 피드백(346)을 출력할 수 있다. 대체 관리부(306)는 최종 대체 ID(366)를 출력할 수 있고 리프레쉬 컨트롤러(406)는 최종 리프레쉬 뱅크 ID(466)를 출력할 수 있다.
본 발명의 다른 실시 예들에 따라, NVM/캐시 컨트롤러(220)의 대체 관리부(306), 리프레쉬 컨트롤러(406), 및 비교기(506)는 각각 도 6의 대체 관리부(302), 리프레쉬 컨트롤러(402), 및 비교기(502)와 실질적으로 유사한 방식으로 동작할 수 있다. 이에 따라, 이들의 상세한 설명은 생략될 것이다.
예를 들어, 비교기(506)는 대체 관리부(306)로부터 대체 ID(326)를 수신할 수 있고 리프레쉬 컨트롤러(406)로부터 리프레쉬 뱅크 ID(426)를 수신할 수 있다. 비교기(506)는 충돌이 존재하는지 여부에 기초하여 리프레쉬 피드백(446)을 출력할 수 있다. 대체 관리부(306)는 최종 대체 ID(366)를 출력할 수 있고 리프레쉬 컨트롤러(406)는 최종 리프레쉬 뱅크 ID(466)를 출력할 수 있다.
본 발명의 다른 실시 예들에 따라, NVM/캐시 컨트롤러(220)의 대체 관리부(306), 리프레쉬 컨트롤러(406), 및 비교기(506)는 각각 도 7의 대체 관리부(304), 리프레쉬 컨트롤러(404), 및 비교기(504)와 실질적으로 유사한 방식으로 동작할 수 있다. 이에 따라, 이들의 상세한 설명은 생략될 것이다.
예를 들어, 비교기(506)는 대체 관리부(306)로부터 대체 ID(326)를 수신할 수 있고 리프레쉬 컨트롤러(406)로부터 리프레쉬 뱅크 ID(426)를 수신할 수 있다. 비교기(506)는 충돌이 존재하고 리프레쉬 뱅크 ID(426)가 변경될 수 있으면 리프레쉬 피드백(446)을 출력할 수 있다. 비교기(506)는 충돌이 존재하고 리프레쉬 뱅크 ID(426)가 변경될 수 없으면 대체 피드백(346)을 출력할 수 있다. 대체 관리부(306)는 최종 대체 ID(366)를 출력할 수 있고 리프레쉬 컨트롤러(406)는 최종 리프레쉬 뱅크 ID(466)를 출력할 수 있다.
도 9는 본 발명의 실시 예에 따라 휘발성 메모리 캐시에 대한 대체 정책의 방법을 설명하는 순서도이다. 휘발성 메모리 캐시는 하나 이상의 메모리 뱅크들을 포함할 수 있다. 메모리 뱅크들 각각은 복수의 메모리 라인을 포함할 수 있다. 휘발성 메모리 캐시는 DRAM(Dynamic Random-Access Memory) 캐시일 수 있다.
도 9를 참조하면, 본 발명의 일 실시 예에 따라, 1000 단계에서, 대체될 메모리 라인들 중 적어도 하나에 대한 대체 ID가 식별된다. 1010 단계에서, 리프레쉬될 메모리 뱅크들 중 하나에 대한 리프레쉬 뱅크 ID가 식별된다.
1020 단계에서, 충돌이 대체 ID 및 리프레쉬 뱅크 ID 사이에 존재하는지 여부가 판별된다. 단계 1030에서, 충돌이 존재하지 않는 것으로 판별되면, 대체 ID 또는 리프레쉬 뱅크 ID를 변경하기 위한 동작은 없다. 단계 1040에서, 충돌이 존재하는 것으로 판별되면, 새로운 대체 ID가 선택된다.
도 9의 방법은 로직 다이의 캐시 관리부에 의해 수행될 수 있다(예를 들어, 도 1 내지 도 3 및 도 5 내지 도 7 참조). 또한, 도 9의 방법은 NVM/캐시 컨트롤러에 의해 수행될 수 있다(예를 들어, 도 4 및 도 8 참조).
도 10은 본 발명의 실시 예에 따라 휘발성 메모리 캐시에 대한 대체 정책의 다른 방법을 설명하는 순서도이다. 휘발성 메모리 캐시는 하나 이상의 메모리 뱅크들을 포함할 수 있다. 메모리 뱅크들 각각은 복수의 메모리 라인을 포함할 수 있다. 휘발성 메모리 캐시는 DRAM(Dynamic Random-Access Memory) 캐시일 수 있다.
도 10을 참조하면, 본 발명의 일 실시 예에 따라, 1100 단계에서, 대체될 메모리 라인들 중 적어도 하나에 대한 대체 ID가 식별된다. 1110 단계에서, 리프레쉬될 메모리 뱅크들 중 하나에 대한 리프레쉬 뱅크 ID(예를 들면, 제 1 리프레쉬 뱅크 ID)가 식별된다.
1120 단계에서, 충돌이 대체 ID 및 리프레쉬 뱅크 ID 사이에 존재하는지 여부가 판별된다. 단계 1130에서, 충돌이 존재하지 않는 것으로 판별되면, 대체 ID 또는 리프레쉬 뱅크 ID를 변경하기 위한 동작은 없다. 단계 1140에서, 충돌이 존재하는 것으로 판별되면, 리프레쉬 뱅크 ID가 변경될 수 있는지 여부가 판별된다. 또한, 1130 단계에서, 충돌이 존재하고 리프레쉬 뱅크 ID가 변경될 수 없는 것으로 판별되면, 대체 ID 또는 리프레쉬 뱅크 ID를 변경하기 위한 동작은 없다. 1150 단계에서, 충돌이 존재하고 리프레쉬 뱅크 ID가 변경될 수 있는 것으로 판별되면, 새로운 리프레쉬 뱅크 ID(예를 들면, 제 2 리프레쉬 뱅크 ID)가 선택된다.
도 10의 방법은 로직 다이의 캐시 관리부에 의해 수행될 수 있다(예를 들어, 도 1 내지 도 3 및 도 5 내지 도 7 참조). 또한, 도 9의 방법은 NVM/캐시 컨트롤러에 의해 수행될 수 있다(예를 들어, 도 4 및 도 8 참조).
도 11은 본 발명의 실시 예에 따라 휘발성 메모리 캐시에 대한 대체 정책의 다른 방법을 설명하는 순서도이다. 휘발성 메모리 캐시는 하나 이상의 메모리 뱅크들을 포함할 수 있다. 메모리 뱅크들 각각은 복수의 메모리 라인을 포함할 수 있다. 휘발성 메모리 캐시는 DRAM(Dynamic Random-Access Memory) 캐시일 수 있다.
도 11을 참조하면, 본 발명의 일 실시 예에 따라, 1200 단계에서, 대체될 메모리 라인들 중 적어도 하나에 대한 대체 ID가 식별된다. 1210 단계에서, 리프레쉬될 메모리 뱅크들 중 하나에 대한 리프레쉬 뱅크 ID가 식별된다.
1220 단계에서, 충돌이 대체 ID 및 리프레쉬 뱅크 ID 사이에 존재하는지 여부가 판별된다. 단계 1230에서, 충돌이 존재하지 않는 것으로 판별되면, 대체 ID 또는 리프레쉬 뱅크 ID를 변경하기 위한 동작은 없다. 단계 1240에서, 충돌이 존재하는 것으로 판별되면, 리프레쉬 뱅크 ID가 변경될 수 있는지 여부가 판별된다. 1250 단계에서, 충돌이 존재하고 리프레쉬 뱅크 ID가 변경될 수 있는 것으로 판별되면, 새로운 리프레쉬 뱅크 ID 가 선택된다. 1260 단계에서, 충돌이 존재하고 리프레쉬 뱅크 ID가 변경될 수 없는 것으로 판별되면, 새로운 대체 ID가 선택된다.
도 11의 방법은 로직 다이의 캐시 관리부에 의해 수행될 수 있다(예를 들어, 도 1 내지 도 3 및 도 5 내지 도 7 참조). 또한, 도 9의 방법은 NVM/캐시 컨트롤러에 의해 수행될 수 있다(예를 들어, 도 4 및 도 8 참조).
이와 같이, 본 발명의 실시 예들에 따라, 충돌이 대체 ID 및 리프레쉬 뱅크 ID 사이에 존재할 때, 대체 ID 또는 리프레쉬 뱅크 ID 중 어느 하나는 지연들을 방지하기 위해 변경될 수 있다. 좀 더 구체적으로, 본 발명의 일부 실시 예들은 대체 ID 및 리프레쉬 뱅크 ID를 식별할 수 있고 그리고 충돌이 있으면, 본 발명의 실시 예들은 충돌에 기인한 지연들을 방지하기 위해 새로운 대체 ID를 선택할 수 있다. 또한, 본 발명의 일부 실시 예들은 대체 ID 및 리프레쉬 뱅크 ID를 식별할 수 있고 그리고 충돌이 있으면, 본 발명의 실시 예들은 리프레쉬 뱅크 ID가 변경될 수 있는지를 확인할 수 있고 그리고, 리프레쉬 뱅크 ID가 변경될 수 있으면, 충돌에 기인한 지연들을 방지하기 위해 새로운 리프레쉬 뱅크 ID를 선택할 수 있다.
비록 여기에서 제 1, 제 2, 제 3 등의 용어들은 다양한 요소들, 성분들, 영역들, 층들 및/또는 섹션들을 설명하기 위해 사용되지만, 이러한 요소들, 성분들, 영역들, 층들 및/또는 섹션들은 이러한 용어들로 인해 제한되지 않는 것으로 이해될 것이다. 이러한 용어들은 다른 요소, 성분, 영역, 층, 또는 섹션으로부터 하나의 요소, 구성, 영역, 층 또는 섹션을 구별하기 위해 사용된다. 따라서, 후술하는 제 1 요소, 성분, 영역, 층, 또는 섹션은 본 발명의 사상 및 범위를 벗어나지 않고, 제 2 요소, 성분, 영역, 층, 또는 섹션을 지칭 할 수 있다.
본 명세서에서 설명된 본 발명의 실시 예들에 따라 관련 있는 장치 또는 성분은 임의의 적합한 하드웨어(예를 들면, ASIC(application-specific integrated circuit)), 펌웨어(예를 들면, DSP 또는 FPGA), 소프트웨어, 또는 소프트웨어, 펌웨어, 및 하드웨어의 적합한 조합을 이용하여 구현될 수 있다. 예를 들어, 관련 있는 장치(들)의 다양한 성분들은 하나의 집적 회로(integrated circuit; IC) 또는 분리된 IC 칩들에 형성될 수 있다. 또한, 관련 있는 장치(들)의 다양한 구성요소들은 플렉서블 인쇄 회로 필름(flexible printed circuit film), TCP(tape carrier package), PCB(printed circuit board)에 구현될 수 있거나, 또는 하나 이상의 회로들 및/또는 다른 장치들과 동일한 기판 위에 형성될 수 있다. 또한, 관련 있는 장치(들)의 다양한 구성요소들은 하나 이상의 프로세서들 및 하나 이상의 컴퓨팅 장치들에서 실행되고, 컴퓨터 프로그램 명령어들을 실행하고, 본 명세서에서 설명된 다양한 기능들을 수행하기 위해 다른 시스템 구성요소들과 상호작용하는 프로세스 또는 스레드(thread)일 수 있다. 컴퓨터 프로그램 명령어들은 예를 들면, RAM(random access memory)과 같은, 표준 메모리 장치를 이용하여 컴퓨팅 장치에서 구현될 수 있는 메모리에 저장된다. 컴퓨터 프로그램 명령어들은 예를 들면, CD-ROM, 플래시 드라이브(flash drive) 등과 같은 다른 일시적이지 않은(non-transitory) 컴퓨터 판독 가능 매체에 저장될 수 있다. 또한, 본 발명의 당업자는 본 발명의 예시적인 실시 예들의 사상 및 범위를 벗어나지 않고 다양한 컴퓨팅 장치들의 기능은 하나의 컴퓨팅 장치에 통합되거나 집적되거나, 또는 특정 컴퓨팅 장치의 기능은 하나 이상의 다른 컴퓨팅 장치들에 걸쳐 분산될 수 있음을 인식해야 한다.
도면들에서 설명된 것으로서 다른 요소(들) 또는 특징(들)에 대한 하나의 요소 또는 특징의 관계를 설명하기 위한 설명의 용이함을 위해 “맨 위”, “맨 아래”, “아래에”, “밑에”, “더 아래의”, “하에”, “위에”, “더 위에”와 같은 공간적이고 상대적인 용어들이 본 명세서에서 사용될 수 있다. 공간적이고 상대적인 용어들은 도면들에서 묘사된 방향에 더해 사용 또는 동작에서 장치의 다른 방향들을 포함하도록 의도된 것이 이해될 것이다. 예를 들면, 도면들의 장치가 뒤집어지면, 다른 구성 요소들 또는 특징들에 대해 “아래에”, “맨 아래”, 또는 “하에”로 설명된 요소들은 다른 요소들 또는 특징들의 “위에” 맞춰지게 된다. 따라서, “밑에” 및 “하에” 예시적인 용어들은 위 또는 아래 방향 모두를 포함할 수 있다. 장치는 다르게 맞춰질 수 있으며(예를 들면, 90도 또는 다른 방향들로 회전됨) 그리고 본 명세서에서 사용된 공간적이고 상대적인 기술어들은 그에 맞춰 해석되어야 한다.
또한, 하나의 요소, 구성 요소, 영역, 층, 및/또는 섹션이 두 요소들, 구성 요소들, 영역들, 층들, 및/또는 섹션들 사이에서 있는 것으로 언급되면, 두 요소들, 구성 요소들, 영역들, 층들, 및/또는 섹션들 사이에 단지 요소, 구성 요소, 영역, 층, 및/또는 섹션이 있을 수 있거나, 또는 하나 이상의 사이의 요소들, 구성 요소들, 영역들, 층들, 및/또는 섹션들이 또한 존재할 수 있음이 또한 이해될 것이다.
본 명세서에서 사용된 용어는 특정 실시 예들을 설명하기 위한 것이고 본 발명을 제한하려는 것으로 의도되지 않는다. 본 명세서에서 사용된 바와 같이, 단수 형태들은 문맥상 명백히 다르게 나타내지 않는 한 복수 형태들도 포함하도록 의도된다. “구성되는”, “구성되고 있는”, “포함하는”, 및 “포함하고 있는” 용어들이 본 명세서에서 사용되면 기술된 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 구성 요소들의 존재를 명시하되, 그러나 하나 이상의 특징들, 정수들, 단계들, 동작들, 요소들, 요소들, 구성 요소들, 및/또는 이들의 그룹의 존재를 불가능하게 하지 않는 것으로 더 이해될 것이다.
본 명세서에서 사용된 바와 같이, “그리고/또는” 용어는 하나 이상의 연관된 열거된 항목들의 임의의 것 또는 모든 조합들을 포함한다. “적어도 하나”, “중 하나”, 및 “로부터 선택된” 같은 표현들은 요소들의 전체 리스트를 수정하고 그리고 리스트의 개별 요소들을 수정하지 않는다. 또한, 본 발명의 실시 예들을 기술할 때 "할 수 있다"의 사용은 "본 발명의 하나 이상의 실시 예들"을 나타낸다. 또한, "예시" 용어는 예 또는 그림을 의미한다.
요소 또는 층이 다른 요소 또는 층 “에”, “에 연결된”, “에 결합된”, “과 관계가 있는”, “과 결부된”, 또는 “과 인접한” 경우로서 언급되면, 요소 또는 층은 다른 요소 또는 층 “에 직접적으로”, “에 직접적으로 연결된”, “에 직접적으로 결합된”, “과 직접적으로 관계가 있는”, “과 직접적으로 결부된”, 또는 “과 직접적으로 인접한” 것일 수 있거나 또는 하나 이상의 사이의 요소들 또는 층들이 존재할 수 있다. 또한, “연결”, “연결된”, 등은 또한 당업자에 의해 이해될 수 있는 것으로서 용어들이 사용되는 문맥에 따라 “전기적인 연결”, “전기적으로 연결된”, 등을 나타낼 수 있다. 요소 또는 층이 다른 요소 또는 층 “에 직접적으로”, “에 직접적으로 연결된”, “에 직접적으로 결합된”, “과 직접적으로 관계가 있는”, “과 직접적으로 결부된”, 또는 “과 직접적으로 인접한” 것으로서 언급되면, 사이의 요소들 및 층들이 존재하지 않는다.
본 명세서에서 사용된 바와 같이, “실질적으로”, “약”, 및 이와 유사한 용어들은 근사치의 용어들로서 사용되고 정도의 용어들로서 사용되지 않고, 당업자에 의해 인식되는 측정된 또는 계산된 값들의 고유한 편차들을 설명하기 위해 의도된다.
본 명세서에서 사용된 바와 같이, “사용”, “사용되는”, 및 “사용된” 용어들은 “이용”, “이용되는”, 및 “이용된” 용어들과 밀접한 것으로 각각 간주 될 수 있다.
본 발명의 하나 이상의 실시 예들에 관하여 설명된 특징들은 본 발명의 다른 실시 예들의 특징들과 함께 사용하기 위해 가능할 수 있다. 예를 들어, 제 3 실시 예가 본 명세서에서 명확하게 설명되지 않을 수 있어도, 제 1 실시 예에서 설명된 특징들은 제 3 실시 예를 형성하기 위해 제 2 실시 예에서 설명된 특징들과 결합될 수 있다.
당업자는 프로세스는 하드웨어, 펌웨어(예를 들면, ASIC을 통해), 또는 소프트웨어, 펌웨어, 및/또는 하드웨어의 임의의 조합을 통해 실행될 수 있는 것을 또한 인식해야 한다. 또한, 프로세스의 단계들의 시퀀스는 고정되지 않고, 당업자에 의해 인식된 것으로서 임의의 원하는 시퀀스로 변경될 수 있다. 변경된 시퀀스는 모든 단계들 또는 단계들의 부분을 포함할 수 있다.
특정한 구체적인 실시 예들에 관해 본 발명이 설명되었지만, 당업자는 설명된 실시 예들의 변형들을 고안하는데 어려움이 없을 것이고, 본 발명의 범위 및 사상으로부터 벗어나는 것은 결코 없을 것이다. 또한, 다양한 분야들의 당업자에게, 본 명세서에서 설명된 발명 자체는 다른 응용들을 위한 다른 과제들 및 적응들의 해법들을 제안할 것이다. 본 발명 및 본 발명의 사상 및 범위를 벗어나지 않고 개시의 목적으로 본 명세서에서 선택된 발명의 실시 예들로 만들어질 수 있는 본 발명의 변경들 및 수정들의 그러한 모든 사용들을 청구 범위에 포함시키는 것이 출원인의 의도이다. 따라서, 본 발명의 본 실시 예들은 제한적이 아니라 모든 측면들을 설명하기 위한 것으로서 간주되고, 본 발명의 범위는 첨부된 청구항들 및 이들의 등가물들에 의해 나타난다.
105: 고대역폭 메모리 스택;
110: 로직 다이;
115: 3D DRAM;

Claims (20)

  1. 하나 이상의 메모리 뱅크들을 포함하는 휘발성 메모리 캐시(volatile memory cache)의 데이터를 대체하는 방법에 있어서, 상기 메모리 뱅크들 각각은 복수의 메모리 라인을 포함하고,
    상기 방법은:
    대체될 상기 복수의 메모리 라인 중 적어도 하나에 대한 대체 ID를 식별하는 단계;
    리프레쉬(refresh)될 상기 메모리 뱅크들 중 하나에 대한 리프레쉬 뱅크(bank) ID를 식별하는 단계;
    상기 대체 ID 및 상기 리프레쉬 뱅크 ID 사이에 충돌이 존재하는지 여부를 판별하는 단계; 및
    상기 충돌이 존재하면 새로운 대체 ID를 선택하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 휘발성 메모리 캐시는 DRAM(Dynamic Random-Access Memory) 캐시를 포함하는 방법.
  3. 제 1 항에 있어서,
    상기 방법은 상기 휘발성 메모리 캐시의 캐시 관리부에 의해 수행되는 방법.
  4. 제 3 항에 있어서,
    상기 캐시 관리부는:
    상기 대체 ID를 식별하는 대체 관리부;
    상기 리프레쉬 뱅크 ID를 식별하는 리프레쉬 컨트롤러; 및
    상기 충돌이 존재하는지 여부를 판별하는 비교기를 포함하는 방법.
  5. 제 4 항에 있어서,
    상기 대체 관리부는 상기 비교기로부터 수신된 대체 피드백(replacement feedback)에 기초하여 상기 새로운 대체 ID를 더 선택하는 방법.
  6. 하나 이상의 메모리 뱅크들을 포함하는 휘발성 메모리 캐시(volatile memory cache)의 데이터를 대체하는 방법에 있어서, 상기 메모리 뱅크들 각각은 복수의 메모리 라인을 포함하고,
    상기 방법은:
    대체될 상기 복수의 메모리 라인 중 적어도 하나에 대한 대체 ID를 식별하는 단계;
    리프레쉬(refresh)될 상기 메모리 뱅크들 중 하나에 대한 제 1 리프레쉬 뱅크(bank) ID를 식별하는 단계;
    상기 대체 ID 및 상기 제 1 리프레쉬 뱅크 ID 사이에 충돌이 존재하는지 여부를 판별하는 단계;
    상기 충돌이 존재하면, 상기 제 1 리프레쉬 뱅크 ID가 변경될 수 있는지 여부를 판별하는 단계; 및
    상기 충돌이 존재하고 상기 제 1 리프레쉬 뱅크 ID가 변경될 수 있으면, 제 2 리프레쉬 뱅크 ID를 선택하는 단계를 포함하는 방법.
  7. 제 6 항에 있어서,
    상기 휘발성 메모리 캐시는 DRAM(Dynamic Random-Access Memory) 캐시를 포함하는 방법.
  8. 제 6 항에 있어서,
    상기 방법은 상기 휘발성 메모리 캐시의 캐시 관리부에 의해 수행되는 방법.
  9. 제 8 항에 있어서,
    상기 캐시 관리부는:
    상기 대체 ID를 식별하는 대체 관리부;
    상기 제 1 리프레쉬 뱅크 ID를 식별하는 리프레쉬 컨트롤러; 및
    상기 충돌이 존재하는지 여부를 판별하는 비교기를 포함하는 방법.
  10. 제 9 항에 있어서,
    상기 리프레쉬 컨트롤러는 상기 비교기로부터 수신된 리프레쉬 피드백(refresh feedback)에 기초하여 상기 제 2 리프레쉬 뱅크 ID를 더 선택하는 방법.
  11. 제 6 항에 있어서,
    상기 충돌이 존재하고 상기 제 1 리프레쉬 뱅크 ID가 변경될 수 없으면, 새로운 대체 ID를 선택하는 단계를 더 포함하는 방법.
  12. 제 11 항에 있어서,
    상기 방법은 상기 휘발성 메모리 캐시의 캐시 관리부에 의해 수행되고, 그리고
    상기 캐시 관리부는:
    상기 대체 ID를 식별하는 대체 관리부;
    상기 제 1 리프레쉬 뱅크 ID를 식별하는 리프레쉬 컨트롤러; 및
    상기 충돌이 존재하는지 여부를 판별하는 비교기를 포함하는 방법.
  13. 제 6 항에 있어서,
    상기 제 2 리프레쉬 뱅크 ID가 선택되면, 상기 제 1 리프레쉬 뱅크 ID의 리프레쉬는 상기 제 1 리프레쉬 뱅크 ID의 정기적으로 계획된 다음의 리프레쉬까지 연기되는 방법.
  14. 제 6 항에 있어서,
    상기 제 2 리프레쉬 뱅크 ID가 선택되면, 상기 제 1 리프레쉬 뱅크 ID의 리프레쉬는 상기 제 2 리프레쉬 뱅크 ID가 리프레쉬되는 시점까지 연기되는 방법.
  15. 휘발성 메모리 캐시를 포함하는 캐시를 관리하는 캐시 관리부에 있어서,
    상기 휘발성 메모리 캐시는 하나 이상의 메모리 뱅크들을 포함하고, 상기 메모리 뱅크들 각각은 복수의 메모리 라인을 포함하되,
    상기 캐시 관리부는:
    대체될 상기 복수의 메모리 라인 중 적어도 하나에 대한 대체 ID를 식별하는 대체 관리부;
    리프레쉬(refresh)될 상기 메모리 뱅크들 중 하나에 대한 리프레쉬 뱅크(bank) ID를 식별하는 리프레쉬 컨트롤러; 및
    상기 대체 ID 및 상기 리프레쉬 뱅크 ID 사이에 충돌이 존재하는지 판별하고 그리고, 상기 충돌이 존재하면, 대체 피드백(replacement feedback)을 상기 대체 관리부에 전송하거나 리프레쉬 피드백(refresh feedback)을 상기 리프레쉬 컨트롤러에 전송하는 비교기를 포함하되,
    상기 대체 피드백은 상기 대체 관리부가 새로운 대체 ID를 선택하도록 야기하고, 상기 리프레쉬 피드백은 상기 리프레쉬 컨트롤러가 새로운 리프레쉬 뱅크 ID를 선택하도록 야기하는 캐시 관리부.
  16. 제 15 항에 있어서,
    상기 휘발성 메모리 캐시는 DRAM(Dynamic Random-Access Memory) 캐시를 포함하는 캐시 관리부.
  17. 제 15 항에 있어서,
    상기 비교기는 상기 대체 피드백을 상기 대체 관리부에 더 전송하도록 구성된 캐시 관리부.
  18. 제 15 항에 있어서,
    상기 비교기는 상기 리프레쉬 피드백을 상기 리프레쉬 컨트롤러에 더 전송하도록 구성된 캐시 관리부.
  19. 제 15 항에 있어서,
    상기 비교기는:
    상기 충돌이 존재하면, 상기 리프레쉬 뱅크 ID가 변경될 수 있는지 여부를 판별하고,
    상기 리프레쉬 뱅크 ID가 변경될 수 있으면, 상기 리프레쉬 피드백을 상기 리프레쉬 컨트롤러로 전송하고, 그리고
    상기 리프레쉬 뱅크 ID가 변경될 수 없으면, 상기 대체 피드백을 상기 대체 관리부로 전송하도록 구성된 캐시 관리부.
  20. 제 15 항에 있어서,
    상기 캐시는 불휘발성 메모리를 더 포함하는 캐시 관리부.
KR1020170113476A 2017-01-25 2017-09-05 휘발성 메모리 캐시를 위한 리프레쉬를 인식하는 대체 정책 KR102245310B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762450505P 2017-01-25 2017-01-25
US62/450,505 2017-01-25
US15/457,813 2017-03-13
US15/457,813 US10394719B2 (en) 2017-01-25 2017-03-13 Refresh aware replacement policy for volatile memory cache

Publications (2)

Publication Number Publication Date
KR20180087817A true KR20180087817A (ko) 2018-08-02
KR102245310B1 KR102245310B1 (ko) 2021-04-27

Family

ID=62906271

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170113476A KR102245310B1 (ko) 2017-01-25 2017-09-05 휘발성 메모리 캐시를 위한 리프레쉬를 인식하는 대체 정책

Country Status (5)

Country Link
US (1) US10394719B2 (ko)
JP (1) JP7164951B2 (ko)
KR (1) KR102245310B1 (ko)
CN (1) CN108345548B (ko)
TW (1) TWI756314B (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10271205B1 (en) * 2017-12-01 2019-04-23 At&T Intellectual Property I, L.P. Methods and devices for resolving conflicts between identifiers for communication devices
US10431305B2 (en) * 2017-12-14 2019-10-01 Advanced Micro Devices, Inc. High-performance on-module caching architectures for non-volatile dual in-line memory module (NVDIMM)
TWI688859B (zh) 2018-12-19 2020-03-21 財團法人工業技術研究院 記憶體控制器與記憶體頁面管理方法
US12066975B2 (en) 2019-03-15 2024-08-20 Intel Corporation Cache structure and utilization
EP3938893A1 (en) 2019-03-15 2022-01-19 INTEL Corporation Systems and methods for cache optimization
US10991413B2 (en) * 2019-07-03 2021-04-27 Micron Technology, Inc. Memory with programmable die refresh stagger
CN111026682B (zh) * 2019-12-26 2022-03-08 浪潮(北京)电子信息产业有限公司 板卡芯片的数据访存方法、装置及计算机可读存储介质

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020064143A (ko) * 1999-06-09 2002-08-07 인터내셔널 비지네스 머신즈 코포레이션 메모리 인터페이스를 갖는 프로세서와, 이 프로세서에서수행되는 방법 및, 컴퓨터 시스템
US6848035B2 (en) * 2001-08-08 2005-01-25 Renesas Technology Corp. Semiconductor device with multi-bank DRAM and cache memory
US7284095B2 (en) * 2004-08-18 2007-10-16 International Business Machines Corporation Latency-aware replacement system and method for cache memories
US7882302B2 (en) * 2007-12-04 2011-02-01 International Business Machines Corporation Method and system for implementing prioritized refresh of DRAM based cache
US20110051528A1 (en) * 2006-02-23 2011-03-03 Hynix Semiconductor Inc. Dynamic Semiconductor Memory With Improved Refresh Mechanism
US20110131371A1 (en) * 2009-11-30 2011-06-02 International Business Machines Corporation Method and system for refreshing dynamic random access memory
US20110167192A1 (en) * 2009-03-17 2011-07-07 Sundar Iyer System and method for storing data in a virtualized high speed memory system
KR20140050239A (ko) * 2012-10-19 2014-04-29 삼성전자주식회사 리프레쉬 어드레스 생성기 및 휘발성 메모리 장치
CN103811048A (zh) * 2014-02-26 2014-05-21 上海新储集成电路有限公司 一种混合存储器结构的低功耗刷新方法
US20160048451A1 (en) * 2014-08-12 2016-02-18 Empire Technology Development Llc Energy-efficient dynamic dram cache sizing
KR20170088502A (ko) * 2016-01-25 2017-08-02 삼성전자주식회사 해머 리프레쉬 동작을 수행하는 메모리 장치 및 이를 포함하는 메모리 시스템
KR20180047268A (ko) * 2016-10-31 2018-05-10 경북대학교 산학협력단 메모리 셀에 대한 리프레시 방법 및 장치

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5172341A (en) 1990-01-19 1992-12-15 Dallas Semiconductor Corporation Serial dram controller with multi generation interface
JP3576561B2 (ja) * 1994-11-22 2004-10-13 モノリシック・システム・テクノロジー・インコーポレイテッド 第2レベルのキャシュメモリとしてdramアレイを用いる方法及び構成
US5802560A (en) 1995-08-30 1998-09-01 Ramton International Corporation Multibus cached memory system
JPH09213072A (ja) * 1996-02-09 1997-08-15 Nec Corp Dramリフレッシュ制御方式
US6028804A (en) 1998-03-09 2000-02-22 Monolithic System Technology, Inc. Method and apparatus for 1-T SRAM compatible memory
GB2385174B (en) * 1999-01-19 2003-11-26 Advanced Risc Mach Ltd Memory control within data processing systems
US6496437B2 (en) 1999-01-20 2002-12-17 Monolithic Systems Technology, Inc. Method and apparatus for forcing idle cycles to enable refresh operations in a semiconductor memory
US6941415B1 (en) * 2000-08-21 2005-09-06 Micron Technology, Inc. DRAM with hidden refresh
US6697909B1 (en) * 2000-09-12 2004-02-24 International Business Machines Corporation Method and apparatus for performing data access and refresh operations in different sub-arrays of a DRAM cache memory
US6757784B2 (en) 2001-09-28 2004-06-29 Intel Corporation Hiding refresh of memory and refresh-hidden memory
WO2003032170A1 (en) 2001-10-11 2003-04-17 Cascade Semiconductor Corporation Asynchronous hidden refresh of semiconductor memory
US6912623B2 (en) * 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
JP4912718B2 (ja) * 2006-03-30 2012-04-11 富士通セミコンダクター株式会社 ダイナミック型半導体メモリ
US20080270683A1 (en) 2007-04-25 2008-10-30 International Business Machines Corporation Systems and methods for a dram concurrent refresh engine with processor interface
US8024513B2 (en) * 2007-12-04 2011-09-20 International Business Machines Corporation Method and system for implementing dynamic refresh protocols for DRAM based cache
US8601216B2 (en) * 2010-08-31 2013-12-03 Oracle International Corporation Method and system for removing cache blocks
KR20120079682A (ko) * 2011-01-05 2012-07-13 삼성전자주식회사 디램 캐시를 포함하는 메모리 장치 및 이를 포함하는 시스템
US9293187B2 (en) 2011-09-26 2016-03-22 Cisco Technology, Inc. Methods and apparatus for refreshing digital memory circuits
WO2015101827A1 (en) 2013-12-31 2015-07-09 Mosys, Inc. Integrated main memory and coprocessor with low latency
US20160188490A1 (en) 2014-12-26 2016-06-30 Intel Corporation Cost-aware page swap and replacement in a memory
KR20170057704A (ko) * 2015-11-17 2017-05-25 삼성전자주식회사 액세스 동작과 리프레쉬 동작의 충돌을 제어하는 메모리 장치 및 이를 포함하는 메모리 시스템

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020064143A (ko) * 1999-06-09 2002-08-07 인터내셔널 비지네스 머신즈 코포레이션 메모리 인터페이스를 갖는 프로세서와, 이 프로세서에서수행되는 방법 및, 컴퓨터 시스템
US6848035B2 (en) * 2001-08-08 2005-01-25 Renesas Technology Corp. Semiconductor device with multi-bank DRAM and cache memory
US7284095B2 (en) * 2004-08-18 2007-10-16 International Business Machines Corporation Latency-aware replacement system and method for cache memories
US20110051528A1 (en) * 2006-02-23 2011-03-03 Hynix Semiconductor Inc. Dynamic Semiconductor Memory With Improved Refresh Mechanism
US7882302B2 (en) * 2007-12-04 2011-02-01 International Business Machines Corporation Method and system for implementing prioritized refresh of DRAM based cache
US20110167192A1 (en) * 2009-03-17 2011-07-07 Sundar Iyer System and method for storing data in a virtualized high speed memory system
US20110131371A1 (en) * 2009-11-30 2011-06-02 International Business Machines Corporation Method and system for refreshing dynamic random access memory
KR20140050239A (ko) * 2012-10-19 2014-04-29 삼성전자주식회사 리프레쉬 어드레스 생성기 및 휘발성 메모리 장치
CN103811048A (zh) * 2014-02-26 2014-05-21 上海新储集成电路有限公司 一种混合存储器结构的低功耗刷新方法
US20160048451A1 (en) * 2014-08-12 2016-02-18 Empire Technology Development Llc Energy-efficient dynamic dram cache sizing
KR20170088502A (ko) * 2016-01-25 2017-08-02 삼성전자주식회사 해머 리프레쉬 동작을 수행하는 메모리 장치 및 이를 포함하는 메모리 시스템
KR20180047268A (ko) * 2016-10-31 2018-05-10 경북대학교 산학협력단 메모리 셀에 대한 리프레시 방법 및 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Mainak Chaudhuri et al., "Micro-Sector Cache: Improving Space Utilization in Sectored DRAM Caches", ACM Transactions on Architecture and Code Optimization, vol. 14, no. 1, article 7, March 2017. *

Also Published As

Publication number Publication date
US20180210843A1 (en) 2018-07-26
US10394719B2 (en) 2019-08-27
KR102245310B1 (ko) 2021-04-27
TWI756314B (zh) 2022-03-01
CN108345548B (zh) 2022-12-20
JP7164951B2 (ja) 2022-11-02
TW201841119A (zh) 2018-11-16
JP2018120589A (ja) 2018-08-02
CN108345548A (zh) 2018-07-31

Similar Documents

Publication Publication Date Title
KR102245310B1 (ko) 휘발성 메모리 캐시를 위한 리프레쉬를 인식하는 대체 정책
US20240096387A1 (en) Memory device comprising programmable command-and-address and/or data interfaces
US20190172538A1 (en) Hybrid memory architectures
US7865674B2 (en) System for enhancing the memory bandwidth available through a memory module
US7818497B2 (en) Buffered memory module supporting two independent memory channels
TWI681525B (zh) 具有一控制器及一記憶體堆疊之彈性記憶體系統
US7840748B2 (en) Buffered memory module with multiple memory device data interface ports supporting double the memory capacity
US7899983B2 (en) Buffered memory module supporting double the memory device data width in the same physical space as a conventional memory module
TWI641109B (zh) Memory device
US9773569B2 (en) Stack type semiconductor memory and semiconductor system using the same
US8019919B2 (en) Method for enhancing the memory bandwidth available through a memory module
US10762012B2 (en) Memory system for sharing a plurality of memories through a shared channel
US8687439B2 (en) Semiconductor apparatus and memory system including the same
US8788748B2 (en) Implementing memory interface with configurable bandwidth
US11392313B2 (en) Memory controller and method thereof with built-in self-tester (BIST)
US20210191645A1 (en) Memory Controller, And Method Thereof
CN114610665A (zh) 存储器扩展卡
US20190293712A1 (en) Wafer burn-in test circuit and semiconductor memory including the same
US20230110110A1 (en) Starvation mitigation for associative cache designs
US20130191586A1 (en) Method for operating memory controller and system including the same

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant