KR102231792B1 - 하이브리드 메모리 모듈 및 그것의 동작 방법 - Google Patents

하이브리드 메모리 모듈 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102231792B1
KR102231792B1 KR1020170120595A KR20170120595A KR102231792B1 KR 102231792 B1 KR102231792 B1 KR 102231792B1 KR 1020170120595 A KR1020170120595 A KR 1020170120595A KR 20170120595 A KR20170120595 A KR 20170120595A KR 102231792 B1 KR102231792 B1 KR 102231792B1
Authority
KR
South Korea
Prior art keywords
cache
metadata
dram
controller
data
Prior art date
Application number
KR1020170120595A
Other languages
English (en)
Other versions
KR20180094469A (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 KR20180094469A publication Critical patent/KR20180094469A/ko
Application granted granted Critical
Publication of KR102231792B1 publication Critical patent/KR102231792B1/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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • 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/1024Latency reduction
    • 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/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/221Static RAM
    • 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
    • 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/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative 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/62Details of cache specific to multiprocessor cache arrangements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명의 하나의 실시 예에 따른 하이브리드 메모리 모듈의 동작 방법은 DRAM 캐시, 플래시 메모리, 그리고 메타데이터 캐시를 저장하는 SRAM을 포함하는 하이브리드 메모리 모듈을 제공하는 단계, 상기 DRAM 캐시는 상기 플래시 메모리에 저장된 데이터의 캐시된 복사본 및 상기 데이터의 캐시된 복사본에 대응하는 메타데이터를 포함하고, 상기 메타데이터 캐시는 DRAM 캐시의 메타데이터 일부의 캐시된 복사본을 포함하고, 호스트 컴퓨터로부터 상기 하이브리드 메모리 모듈에 저장된 데이터에 대한 데이터 접근 요청을 수신하는 단계, 상기 데이터 접근 요청을 복호화 하여 호스트 주소를 획득하는 단계, 상기 호스트 주소는 DRAM 캐시 태그 및 DRAM 캐시 인덱스를 포함하고, 상기 DRAM 캐시 인덱스로부터 메타데이터 주소를 획득하는 단계, 상기 메타데이터 주소는 메타데이터 캐시 태그 및 메타데이터 캐시 인덱스를 포함하고, 상기 SRAM의 상기 메타데이터 캐시에 있는 매칭하는 메타데이터 캐시 엔트리의 존재에 기초하여 메타데이터 캐시 히트를 판별하는 단계, 상기 매칭하는 메타데이터 캐시 엔트리는 메타데이터 캐시 태그 및 DRAM 캐시 태그를 쌍으로 포함하고, 상기 메타데이터 캐시 히트의 경우, 상기 DRAM 캐시의 상기 메타데이터에 대한 접근을 생략하는 단계; 그리고 상기 DRAM 캐시로부터 획득된 상기 데이터를 상기 호스트 컴퓨터에 반환하는 단계를 포함한다.

Description

하이브리드 메모리 모듈 및 그것의 동작 방법{HYBRID MEMORY MODULE AND OPERATING METHOD THEREOF}
본 발명은 하이브리드 메모리 모듈(hybrid memory module)들에 관한 것으로, 좀 더 상세하게는, SRAM 메타데이터 캐시(metadata cache) 및 블룸 필터(Bloom filter)를 이용하여 하이브리드 메모리 모듈의 DRAM 캐시에 대한 메타데이터에 접근하기 위한 오버헤드(overhead)를 경감시키기 위한 시스템 및 방법에 관한 것이다.
하이브리드 메모리 모듈은 주요한 데이터 기억장치로서 휘발성 메모리(예를 들어, 동적 임의 접근 기억장치(DRAM; dynamic random-access memory))와 불휘발성 메모리(예를 들어, 플래시 메모리(flash memory))를 모두 포함하는 메모리 모듈을 가리킨다. 하이브리드 메모리 모듈의 하나의 예는 DRAM과 플래시 메모리를 통합한 하이브리드 듀얼 인라인 메모리 모듈(DIMM; dual in-line memory module)이다. 일반적인 구성에서는, DRAM은 플래시 메모리에 저장된 데이터를 위한 캐시(cache) 메모리로서 사용될 수 있다. DRAM 캐시에 빠르게 접근하기 위해서, DRAM 캐시의 메타데이터(metadata)는 하이브리드 메모리 모듈의 정적 임의 접근 기억장치(SRAM; static random-access memory)에 저장될 수 있다.
그러나, DRAM 캐시의 메타데이터를 위해 필요로 되는 저장 장소의 크기는 SRAM의 사용 가능한 저장 장소의 크기보다 클 수 있다. 하이브리드 DIMM에 집적된 SRAM의 기억 용량은 그것의 가격 때문에 상대적으로 작게 유지될 수 있다. SRAM의 제한된 저장 장소의 크기로 인하여, DRAM 캐시의 전체 메타데이터는 SRAM에 들어갈 수 없고, 결과적으로 SRAM에 들어가지 않는 메타데이터의 남아있는 부분은 DRAM에 저장되어야 한다. 이러한 경우, DRAM에 저장된 메타데이터에 대한 느린 접근 속도는 데이터에 접근하는 경우 성능의 저하를 야기할 수 있다.
이러한 문제점에 대한 해결책으로, 몇몇의 접근 방식이 제안되었다. 첫 번째 접근 방식은 SRAM에 저장된 메타데이터의 크기를 줄이는 것이다. 예를 들어, 메타데이터의 크기는 SRAM에 저장된 캐시 라인(line)들의 개수를 줄임으로써 줄일 수 있다. 이러한 경우, 각 캐시 라인의 크기는 축소한다. 축소된 캐시 라인들의 크기는 히트율(hit rate)에 부정적인 영향을 줄 수 있고 캐시 미스(miss)의 경우 플래시 메모리로부터 복수의 페이지(page) 읽기가 필요할 수 있다. 다른 예에서는, 캐시 연관성(cache associativity)은 태그 비트들(tag bits)과 교체 비트들(replacement bits)을 줄임으로써 감소될 수 있지만, 이러한 접근 방식도 히트율에 부정적인 영향을 줄 수 있다. 다른 예에서는, 교체 정책은 교체 비트들을 이용하지 않고 교체될 수 있다.
그러나, 테스트 결과들은 메타데이터 크기를 줄이기 위한 이러한 효과들의 조합이 필요로 되는 메타데이터 크기 일부만을 감소시키는 것을 보여준다. 따라서, 메타데이터를 저장하기 위한 SRAM의 제한된 크기에 대한 문제점은 플래시 메모리의 데이터 기억 용량과 DRAM 캐시의 크기가 증가함에 따라 계속될 수 있다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명은 DRAM 캐시 메타데이터에 접근하기 위한 오버헤드를 경감시킬 수 있는 하이브리드 메모리 모듈 및 그것의 동작 방법을 제공할 수 있다.
본 발명의 하나의 실시 예에 따른 하이브리드 메모리 모듈의 동작 방법은 DRAM 캐시(cache), 플래시 메모리(flash memory), 그리고 메타데이터 캐시(metadata cache)를 저장하는 SRAM을 포함하는 하이브리드 메모리 모듈을 제공하는 단계, 상기 DRAM 캐시는 상기 플래시 메모리에 저장된 데이터의 캐시된 복사본 및 상기 데이터의 캐시된 복사본에 대응하는 메타데이터(metadata)를 포함하고, 상기 메타데이터 캐시는 DRAM 캐시의 메타데이터 일부의 캐시된 복사본을 포함하고, 호스트 컴퓨터로부터 상기 하이브리드 메모리 모듈에 저장된 데이터에 대한 데이터 접근 요청을 수신하는 단계, 상기 데이터 접근 요청을 복호화 하여 호스트 주소를 획득하는 단계, 상기 호스트 주소는 DRAM 캐시 태그(tag) 및 DRAM 캐시 인덱스(index)를 포함하고, 상기 DRAM 캐시 인덱스로부터 메타데이터 주소를 획득하는 단계, 상기 메타데이터 주소는 메타데이터 캐시 태그 및 메타데이터 캐시 인덱스를 포함하고, 상기 SRAM의 상기 메타데이터 캐시에 있는 매칭하는 메타데이터 캐시 엔트리(matching metadata cache entry)의 존재에 기초하여 메타데이터 캐시 히트(hit)를 판별하는 단계, 상기 매칭하는 메타데이터 캐시 엔트리는 메타데이터 캐시 태그 및 DRAM 캐시 태그를 쌍으로 포함하고, 상기 메타데이터 캐시 히트의 경우, 상기 DRAM 캐시의 상기 메타데이터에 대한 접근을 생략하고 DRAM 캐시로부터 데이터를 획득하는 단계, 그리고 상기 DRAM 캐시로부터 획득된 상기 데이터를 상기 호스트 컴퓨터에 반환하는 단계를 포함한다.
본 발명의 다른 실시 예에 따른 하이브리드 메모리 모듈은 플래시 메모리, 상기 플래시 메모리에 저장된 데이터의 캐시된 복사본과 상기 데이터의 캐시된 복사본에 대응하는 메타데이터를 포함하는 DRAM 캐시, 상기 DRAM 캐시의 상기 메타데이터 일부의 캐시된 복사본을 포함하는 메타데이터 캐시를 저장하는 SRAM, 호스트 컴퓨터에 인터페이스를 제공하는 메모리 인터페이스, 상기 DRAM 캐시 및 상기 플래시 메모리에 저장된 데이터에 접근하는 메모리 접근 제어기, 상기 DRAM 캐시에 대한 접근을 제어하는 DRAM 제어기, 상기 플래시 메모리에 대한 접근을 제어하는 플래시 제어기, 그리고 상기 호스트 컴퓨터로부터 요청된 데이터의 캐시된 복사본의 존재를 판별하는 캐시 제어기를 포함한다.
상기 캐시 제어기는, 상기 호스트 컴퓨터로부터의 데이터 접근 요청을 복호화 하여 호스트 주소를 획득하고, 상기 호스트 주소는 DRAM 캐시 태그 및 DRAM 캐시 인덱스를 포함하고, 상기 DRAM 캐시 인덱스로부터 메타데이터 주소를 획득하고, 상기 메타데이터 주소는 메타데이터 캐시 태그 및 메타데이터 캐시 인덱스를 포함하고, 상기 SRAM의 상기 메타데이터 캐시에 있는 매칭하는 메타데이터 캐시 엔트리의 존재에 기초하여 메타데이터 캐시 히트를 판별하고, 상기 매칭하는 메타데이터 캐시 엔트리는 메타데이터 캐시 태그 및 DRAM 캐시 태그의 쌍을 포함하고, 그리고 상기 메타데이터 캐시 히트의 경우, 상기 DRAM 캐시의 메타데이터에 대한 접근을 생략하고 상기 DRAM 제어기로 상기 DRAM 캐시로부터 상기 데이터를 획득하게 지시하도록 구성된다. 상기 메모리 접근 제어기는 DRAM 캐시로부터 획득된 상기 데이터를 상기 호스트 컴퓨터로 반환하도록 구성된다.
이벤트들의 구현 및 조합의 다양한 새로운 사항들을 포함하는 상기 특징들 또는 다른 특징들은 첨부된 도면들과 청구항들에서 언급된 내용을 참조로 하여 더 상세하게 설명될 것이다. 본 명세서에서 설명되는 특정 시스템들과 방법들은 단지 예시를 통해 설명되며 이러한 예시에 본 발명이 제한되는 것은 아니다. 당업자에 의해 이해될 수 있듯이, 본 명세서에서 설명되는 원리 및 특징들은 본 발명의 범위로부터 벗어나지 않는 다양한 실시 예들에 적용될 수 있다.
본 발명의 하이브리드 메모리 모듈 및 그것의 동작 방법은 DRAM 캐시 메타데이터에 접근하기 위한 오버헤드를 경감시키고 플래시 메모리에 대한 데이터 접근 지연 시간을 향상시킬 수 있다.
도 1은 종래의 하이브리드 메모리 모듈의 아키텍처를 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 하이브리드 메모리 모듈 예시의 아키텍처를 보여주는 도면이다.
도 3은 본 발명의 실시 예에 따른 캐시 제어기 동작 예시에 대한 블록도이다.
도 4는 본 발명의 실시 예에 따른 하이브리드 메모리 모듈에서 구현된 블룸 필터의 예시를 보여준다.
도 5는 본 발명의 실시 예에 따른 캐시 제어기에 의해 데이터 요청을 수행하는 순서도이다.
본 명세서에서 나타난 각각의 특징들 및 개시들은 SRAM 메타데이터 캐시와 블룸 필터를 이용하여 하이브리드 메모리 모듈에서의 DRAM 캐시의 메타데이터에 대한 접근 오버헤드를 경감시키기 위한 시스템 및 방법을 제공하기 위해 각각 또는 다른 특징들 및 개시들과 함께 활용될 수 있다. 이러한 수많은 추가 특징들 및 개시들을 활용하는 대표적인 예들은 첨부된 도면을 참조로 하여 별도로 또는 함께 더욱 자세하게 설명된다. 이러한 상세한 설명은 단지 당업자가 본 발명의 양상들을 실행하기 위한 세부적인 내용을 개시하기 위한 것이고 청구 범위를 제한하는 것은 아니다. 따라서, 상세한 설명에서 개시된 특징들의 조합들은 넓은 의미에서 개시들을 실행하기 위해 필요한 것은 아니며, 대신에 특별히 본 발명의 대표적인 예시들을 설명하기 위해 개시된다.
이하에서는, 오직 설명하기 위한 목적으로, 본 발명의 완전한 이해를 제공하기 위한 구체적인 명명법이 기술된다. 그러나, 본 발명의 개시들을 실행하기 위해 당업자에게 구체적인 사항들이 필요한 것이 아님은 명백할 것이다.
상세한 설명의 몇몇 부분들은 알고리즘 및 컴퓨터 메모리 안에서의 데이터 비트들에 대한 동작들의 상징적 표현들로 제시된다. 이러한 알고리즘의 설명들과 표현들은 다른 분야의 통상의 기술자들에게 연구의 요지를 효과적으로 전달하기 위해 데이터 프로세싱 분야에 있는 통상의 기술자들에 의해 사용된다. 여기서 알고리즘은 일반적으로 원하는 결과를 이끄는 단계들의 일관성 있는 순서로 이해된다. 단계들은 물리량의 물리적 조작들을 필요로 한다. 일반적으로, 반드시 필요한 것은 아니지만, 이러한 물리량들은 저장되고, 전달되고, 결합되고, 비교되고 그렇지 않으면 조작될 수 있는 전기 또는 자기 신호들의 형태를 갖는다. 이것은 때때로 이러한 신호들을 비트들, 값들, 요소들, 심볼(symbol)들, 글씨들, 용어들, 숫자들 등으로써 지칭하기 위한 일반적인 용법이라는 이유에서 편리하다.
그러나, 이러한 모든 용어들과 유사한 용어들은 적절한 물리량들과 연관되고 단지 이러한 물리량에 적용되는 편리한 라벨(label)들인 것을 유념해야 한다. 이하의 내용과 명백하게 다른 내용이 구체적으로 기술되지 않는다면, 명세서 전반에 걸쳐, "프로세싱", "컴퓨팅", "계산하기", "결정하기", "표시하기" 등과 같은 용어들을 활용하는 부분들은 컴퓨터 시스템 또는 유사 전자 컴퓨팅 장치의 프로세스들과 조치를 가리키는 것으로 이해된다. 컴퓨터 시스템 또는 유사 전자 컴퓨팅 장치는 컴퓨터 시스템의 레지스터(register)들과 메모리들에서 물리(전기)량으로 나타나는 데이터를 유사하게 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 정보 기억, 전송 또는 디스플레이 장치들에서 물리량으로 나타나는 다른 데이터로 조작하거나 변형한다.
본 발명의 실시 예는 DRAM 메타데이터에 대한 접근을 감소시키기 위한 다양한 기법들을 설명한다. 예를 들어, DRAM 메타데이터 접근들은 임의 교체 정책을 이용하여 감소시킬 수 있다. 이러한 경우, 교체 비트들이 필요로 되지 않을 수 있지만, 성능은 불리하게 영향을 받을 수 있다. 다른 실시 예는, SRAM에 DRAM 캐시 메타데이터의 일부를 저장하여 DRAM 메타데이터 접근들을 감소시킬 수 있다. 이러한 경우, 오직 SRAM 매치(match)들만이 DRAM 검색을 유발할 수 있다. 그러나, 메타데이터 매치들이 자주 발생하는 경우 메타데이터의 일부 접근 방식은 열등한 성능을 가질 수 있다. 다른 접근 방식은 SRAM을 메타데이터를 캐시하기 위해 사용하고 오직 태그(tag)들이 매치하는 경우 DRAM 검색을 수행하고 DRAM 캐시 미스(miss)들을 효과적으로 걸러내기 위해 블룸 필터를 사용하는 것이지만, 블룸 필터는 긍정 오류(false positives)를 유발할 수 있다. 그러나, SRAM에서의 블룸 필터의 사용은 DRAM 캐시의 열등한 성능 때문에 일반적으로 비효율적일 수 있다.
또한, 대표적인 예시들의 다양한 특징들과 종속항들은 본 발명의 추가적인 유용한 실시 예들을 제공하기 위해 구체적이고 명확하게 열거하지 않는 방법으로 결합될 수 있다. 또한, 청구된 발명의 사상을 제한하려는 목적뿐만 아니라, 최초 개시의 목적을 위해 모든 값의 범위들 또는 개체 그룹들의 표시들은 가능한 모든 중간 값 또는 중간 개체를 나타낸다. 또한, 도면들에 도시된 구성들의 면적들과 모양들은 본 발명을 어떻게 구현하는지를 이해하기 위해 도움을 줄 수 있도록 디자인될 수 있지만, 예시들에 도시된 면적들과 모양들에 한정되는 것은 아니다.
본 발명은 SRAM 메타데이터 캐시와 블룸 필터를 이용하여 하이브리드 메모리 모듈에서 DRAM 캐시 메타데이터에 접근하기 위한 오버헤드를 경감시키는 시스템과 방법을 제공한다. 본 발명의 하나의 실시 예에 따르면, 블룸 필터와 SRAM 캐시는 DRAM 캐시를 위한 메타데이터를 저장하기 위해 결합된다. 블룸 필터와 SRAM 캐시의 결합된 사용은 각각의 단점을 보완할 수 있고 하이브리드 메모리 모듈에 저장된 데이터에 접근하기 위한 향상된 성능을 제공할 수 있다. 일반적으로, 블룸 필터는 캐시 미스들을 예상하고, 메타데이터 캐시는 캐시 히트들을 예상한다. 메타데이터 캐시와 블룸 필터가 동시에 접근되면, 블룸 필터 거짓(false)은 캐시 미스를 암시하고, 따라서 DRAM 접근은 필요로 되지 않는다. SRAM 메타데이터 캐시 히트는 빠른 캐시 히트로 여겨지고, 따라서 DRAM 메타데이터 접근은 필요로 되지 않는다.
도 1은 종래의 하이브리드 메모리 모듈의 아키텍처를 보여주는 도면이다. 하이브리드 메모리 모듈(100)은 DRAM 캐시(101), 플래시 메모리(151), 메모리 접근 제어기(111), DRAM 제어기(121), 캐시 제어기(124), 메타데이터 캐시(127)를 저장하기 위한 SRAM(126), 그리고 플래시 컨트롤러(131)를 포함한다. 메타데이터 캐시(127)는 DRAM 캐시(101)의 메타데이터(102)의 캐시된 버전(version)를 포함한다. DRAM 캐시(101)는 플래시 메모리(151)의 캐시 데이터를 저장하고 메타데이터(102), 읽기 캐시(103), 그리고 쓰기 버퍼(104)를 포함한다. 메타데이터(102)는 태그, 유효 비트들, 더티 비트들(dirty bits) 등을 포함할 수 있다. 본 명세서에서 명시적으로 다른 의미를 서술하지 않는다면, 메타데이터 및 태그 용어는 교환적으로 사용될 수 있다. 읽기 캐시(103)는 플래시 메모리(151)로부터 캐시된 데이터를 저장한다. 읽기 캐시(103)는 데이터를 캐시하기 위해 사용된다. 읽기 캐시(103)는 플래시 메모리(151)에 대한 메모리 접근 횟수를 줄일 수 있다. 플래시 메모리(151)에 쓰여질 데이터는 쓰기 버퍼(104)에서 버퍼에 임시 저장될 수 있다. 쓰기 버퍼(104)는 플래시 메모리(151)에 대한 쓰기 트래픽(traffic)을 감소시킬 수 있다.
호스트 컴퓨터(미도시)는 메모리 인터페이스(140)를 통해 호스트 컴퓨터와 하이브리드 메모리 모듈(100) 사이에 수립된 메모리 호스트/슬래이브(host/slave) 인터페이스 프로토콜(예를 들어, NVDIMM-P)에 따라 하이브리드 메모리 모듈(100)에 저장된 데이터에 접근하기 위한 메모리 접근 요청을 보낸다. 메모리 접근 요청은 메모리 접근 제어기(111)에 전달된다. 메모리 접근 제어기(111)는 중간 변환기로서 동작하고 호스트로부터의(NVDIMM-P 프로토콜을 통한) 요청들을 하이브리드 메모리 모듈(100)에 의해 판독 가능한 형태로 변환한다. 호스트로부터의 요청들을 변환한 후에, 메모리 접근 제어기(111)는 캐시 제어기(124)로 변환된 정보를 전달한다.
캐시 제어기(124)는 SRAM(126)에 저장된 메타데이터 캐시(127)를 확인하고 메타데이터 캐시 히트 또는 미스를 결정한다. 메타데이터 캐시 히트이면, 캐시 제어기(124)는 DRAM 캐시(101)에 요청된 데이터가 저장된 것을 확인하고 DRAM 캐시(101)에 있는 메타데이터(102)에 접근하지 않고 메타데이터 캐시(127)에 저장된 메타데이터를 이용하여 DRAM 제어기(121)에 DRAM 캐시(101)에 있는 요청된 데이터에 접근하도록 요청한다. 메타데이터 캐시 미스이면, 캐시 제어기(124)는 DRAM 제어기(121)로 DRAM 캐시(101)에 저장된 메타데이터(102)에 접근하도록 요청하고 DRAM 캐시 히트 또는 미스를 결정한다. DRAM 캐시 히트 또는 미스를 확인한 후에, 캐시 제어기(124)는 요청된 데이터의 정확한 수신지를 결정한다. DRAM 캐시 히트이면, 캐시 제어기(124)는 DRAM 제어기(121)에 DRAM 캐시(101)에 저장된 요청된 데이터의 접근을 요청한다. DRAM 캐시 미스이면, 캐시 제어기(124)는 플래시 제어기(131)에 플래시 메모리(151)에 저장된 요청된 데이터의 접근을 요청한다.
캐시 제어기(124)가 DRAM 캐시(101)에 요청된 데이터가 저장된 것으로 판별할 때, 캐시 제어기(124)는 DRAM 제어기(121)에 메타데이터 캐시 히트의 경우 SRAM(126)에 저장된 메타데이터 캐시(127)를 참조하거나 DRAM 캐시 히트의 경우 메타데이터(102)를 참조하여 DRAM 캐시(101)에 접근하도록 지시를 한다. 캐시 제어기(124)가 플래시 메모리(151)에 요청된 데이터가 저장된 것으로 판별하는 경우, 플래시 제어기(131)는 플래시 흐름(150)을 통해 플래시 메모리(151)에 저장된 데이터에 접근하고 인출한다.
도 2는 본 발명의 하나의 실시 예에 따른 하이브리드 메모리 모듈 아키텍처의 예시를 보여준다. 하이브리드 모듈(200)은 DRAM 캐시(201), 플래시 메모리(251), 메모리 접근 제어기(211), DRAM 제어기(221), 캐시 제어기(224), SRAM(226), 그리고 플래시 제어기(231)를 포함한다.
SRAM(226)은 메타데이터 캐시(227)에 DRAM 캐시(201)의 메타데이터(202)의 캐시된 복사본을 저장한다. 메타데이터 캐시(227)의 이용 가능한 크기에 따라, 메타데이터 캐시(227)에 저장된 메타데이터(202)의 캐시된 복사본은 메타데이터(202)의 부분집합일 수 있다. SRAM(226)은 블룸 필터(229)의 유형으로 캐시된 메타데이터의 다른 집합(메타데이터(202)의 완전 집합 또는 메타데이터(202)의 부분 집합)을 더 저장한다.
메타데이터 캐시(227)는 DRAM 캐시(201)의 메타데이터(202)의 캐시된 버전(version)을 포함한다. DRAM 캐시(201)는 플래시 메모리(251)의 캐시 데이터를 저장하고 메타데이터(202), 읽기 캐시(203), 그리고 쓰기 버퍼(204)를 포함한다. 메타데이터(202)는 태그, 유효 비트들, 더티 비트들 등을 포함할 수 있다. 본 명세서에서 명시적으로 다른 의미를 서술하지 않는다면, 메타데이터 및 태그 용어는 교환적으로 사용될 수 있다. 읽기 캐시(203)는 플래시 메모리(251)로부터 캐시된 데이터를 저장한다. 읽기 캐시(203)는 데이터를 캐시하기 위해 사용된다. 읽기 캐시(203)는 플래시 메모리(251)에 대한 메모리 접근 횟수를 감소시킬 수 있다. 플래시 메모리(251)에 쓰여질 데이터는 쓰기 버퍼(204)에 임시 저장될 수 있다. 쓰기 버퍼(204)는 플래시 메모리(251)에 대한 쓰기 트래픽을 감소시킬 수 있다.
호스트 컴퓨터(미도시)는 메모리 인터페이스(240)를 통해 호스트 컴퓨터와 하이브리드 메모리 모듈(200) 사이에 수립된 메모리 호스트/슬래이브(host/slave) 인터페이스 프로토콜(예를 들어, NVDIMM-P)에 따라 하이브리드 메모리 모듈(200)에 저장된 데이터에 접근하기 위한 메모리 접근 요청을 보낸다. 메모리 접근 요청은 메모리 접근 제어기(211)에 전달된다. 메모리 접근 제어기(211)는 중간 변환이기로서 동작하고 호스트로부터의(NVDIMM-P 프로토콜을 통한) 요청들을 하이브리드 메모리 모듈(200)에 의해 판독 가능한 형태로 변환한다. 호스트로부터의 요청들을 변환한 후에, 메모리 접근 제어기(211)는 캐시 제어기(224)로 변환된 정보를 전달한다.
캐시 제어기(224)는 SRAM(226)에 저장된 메타데이터 캐시(227)를 확인하고 메타데이터 캐시 히트 또는 미스를 결정한다. 메타데이터 캐시 히트이면, 캐시 제어기(224)는 DRAM 캐시(201)에 요청된 데이터가 저장된 것을 확인하고 DRAM 캐시(201)에 있는 메타데이터(202)에 접근하지 않고 메타데이터 캐시(227)에 저장된 메타데이터를 이용하여 DRAM 제어기(221)에 DRAM 캐시(201)에 있는 요청된 데이터에 접근하도록 요청한다.
본 발명의 하나의 실시 예에 따르면, 캐시 제어기(224)는 SRAM(226)에 저장된 메타데이터를 운영하기 위한 다양한 함수들을 제공한다. 이러한 함수들의 예들은 SRAM(226)에 저장된 메타데이터를 관리하는 테스트 함수와 삽입 함수를 포함하며, 본 발명은 이러한 예들에 제한되지 않는다. 블룸 필터는 DRAM 캐시 히트 또는 미스가 있는지를 판별하기 위한 함수들을 이용하여 SRAM(226)에 저장된 블룸 필터 어레이(229)에서 동작한다. 예를 들어, 캐시 제어기(224)는 블룸 필터 어레이(229)에서 블룸 필터 테스트 함수를 수행한다. 블룸 필터 테스트 결과가 부정적이면, DRAM 캐시 미스를 의미하고, DRAM 캐시(201)에 데이터가 저장되어 있지 않음을 나타내며, 캐시 제어기(224)는 DRAM 캐시(201)의 메타데이터(202)에 대한 접근 없이 데이터를 획득하기 위해 플래시 제어기(231)에 요청을 보낸다. 본 발명의 하나의 실시 예에 따르면, 메타데이터 캐시(227)에서의 메타데이터 캐시 확인과 블룸 필터에서의 블룸 필터 테스트는 독립적으로, 동시에, 또는 특정한 순서에 따라 수행될 수 있다.
메타데이터 캐시 미스이고 블룸 필터의 테스트 결과가 긍정적(즉, DRAM 캐시 히트를 나타내지만 긍정 오류일 수 있음)이면, 캐시 제어기(224)는 실제로 DRAM 캐시 히트 또는 미스인지를 판별하기 위해 DRAM 캐시(201)의 메타데이터(202)에 대한 접근을 DRAM 제어기(221)에 요청한다. DRAM 캐시(201)의 메타데이터(202)에 있는 매칭하는 메타데이터의 존재에 기초하여, 캐시 제어기(224)는 요청된 데이터의 정확한 수신지를 알아낼 수 있다. DRAM 캐시 히트이면, 캐시 제어기(224)는 DRAM 제어기(221)에 DRAM 캐시(201)에 저장된 요청된 데이터에 접근하도록 요청한다. DRAM 캐시 미스이면, 캐시 제어기(224)는 플래시 메모리(251)에 저장된 요청된 데이터에 대한 접근을 플래시 제어기(231)에 요청한다.
도 2를 참조하면, 메타데이터 캐시(227) 및 블룸 필터 어레이(229)는 독립적인 데이터 구조들을 가질 수 있고 동일하거나 다른 메타데이터를 저장할 수 있다. 메타데이터 캐시(227) 및 블룸 필터 어레이(229)는 SRAM(226)에서 메타데이터와 메타데이터를 운영하기 위한 로직을 저장하기 위해 각자 전용 영역을 가지며 서로 관련이 없다. 본 발명의 하나의 실시 예에 따르면, SRAM(226)은 오직 메타데이터 캐시(227)와 블룸 필터 어레이(229) 중 하나만 포함하거나 캐시 제어기(224)는 메타데이터 캐시(227)와 블룸 필터 어레이(229) 중 하나만 운영할 수 있다. 블룸 필터 어레이(229)의 존재 또는 동작과 관계 없이, 메타데이터 캐시(227)는 동일한 방법으로 동작할 수 있다. 유사하게, 메타데이터 캐시(227)의 존재 또는 동작과 관계 없이, 블룸 필터 어레이(229)는 동일한 방법으로 동작한다. 메타데이터 캐시(227)의 존재(또는 부재) 및 동작 모드에 따라, SRAM(226)에서의 메타데이터 캐시(227)와 블룸 필터 어레이(229)의 할당된 영역은 동적으로 변할 수 있다. 본 발명의 하이브리드 메모리 모듈(200)은 메타데이터 캐시(227)와 블룸 필터 어레이(229)가 서로에게 필연적으로 의존하지 않고 캐시 히트 또는 미스의 결정을 가능하게 하기 위한 하나 이상의 "래퍼(wrapper)" 함수들을 제공한다.
메타데이터 캐시 히트의 경우, 즉, SRAM(226)에 있는 메타데이터 캐시(227)가 메타데이터의 캐시된 복사본을 저장하면, 캐시 제어기(224)는 DRAM 캐시(201)에 요청된 데이터가 저장된 것으로 판별하고, 캐시 제어기(224)는 DRAM 제어기(221)에 SRAM(226)에 저장된 메타데이터 캐시(227)를 참조하여 DRAM 캐시(201)에 접근하도록 지시를 한다. DRAM 캐시 히트인 경우, 캐시 제어기(224)는 DRAM 제어기(221)에 메타데이터(202)를 참조하여 DRAM 캐시(201)에 접근하도록 지시를 한다. 캐시 제어기(224)가 플래시 메모리(251)에 요청된 데이터가 저장된 것으로 판별하는 경우, 플래시 제어기(231)는 플래시 흐름(250)을 통해 플래시 메모리(251)에 저장된 데이터에 접근하고 인출한다.
본 발명의 하나의 실시 예에 따르면, DRAM 메타데이터(202)는 포괄적이고 클린(clean)하기 때문에 메타데이터 캐시(227)는 효율적으로 유지될 수 있다. 예를 들어, 메타데이터 캐시(227)의 라인(line)들은 또한 DRAM 캐시(201)의 메타데이터(202)에 저장된다. 메타데이터 캐시(227)에 대한 어떠한 접근 유형은 항상 읽기 접근으로 여겨진다. 표 1은 접근 유형들과 요청된 데이터의 위치에 따라 하이브리드 메모리 모듈(200)의 캐시 제어기(224)에 의해 수행되는 조치 목록을 보여준다.
접근 유형 메타데이터 캐시에 요청된 데이터가 있는지 여부 DRAM 캐시에 요청된 데이터가 있는지 여부 조치들
읽기 아니오 아니오 [메타데이터 캐시 미스, DRAM 캐시 미스]
DRAM 캐시에 태그 및 데이터 삽입
메타데이터 캐시에 태그 삽입
읽기 아니오 포괄성에 의해 해당 사항 없음
읽기 아니오 [메타데이터 캐시 미스, DRAM 캐시 히트]
메타데이터 캐시에 태그 삽입
읽기 [메타데이터 캐시 히트, DRAM 캐시 히트]
아무것도 하지 않음
쓰기 아니오 아니오 [메타데이터 캐시 미스, DRAM 캐시 미스]
DRAM 캐시에 태그 및 데이터 삽입
메타데이터 캐시에 태그 삽입
쓰기 아니오 포괄성에 의해 해당 사항 없음
쓰기 아니오 [메타데이터 캐시 미스, DRAM 캐시 히트]
메타데이터 캐시에 태그 삽입
쓰기 [메타데이터 캐시 히트, DRAM 캐시 히트]
아무것도 하지 않음
읽기 접근 요청이 있는 경우, 캐시 제어기(224)는 요청된 데이터의 캐시된 복사본이 다음과 같은 방식으로 DRAM 캐시(201)에서 검색될 수 있는지 여부를 판별한다. 먼저, 캐시 제어기(224)는 메타데이터 캐시(227)에 매칭하는 메타데이터가 있는지 여부를 확인한다. 매치하는 메타데이터가 검색되면, 메타데이터 태그들과 DRAM 캐시 태그들의 포괄성으로 인해, 캐시 제어기(224)는 DRAM 캐시(201)에서 읽기 접근 요청 히트로 결론지을 수 있다. 캐시 제어기(224)는 DRAM 메타데이터(202)에 대한 접근 없이 메타데이터 캐시(227)에서 히트된 메타데이터를 사용하여 DRAM 캐시(201)로부터 목표된 데이터를 요청할 수 있다. 메타데이터 캐시 확인에 추가로, 캐시 제어기(224)는 블룸 필터 어레이(229)를 사용하여 DRAM 캐시 히트 또는 미스 확인을 수행할 수 있다. 블룸 필터 테스트에 의한 DRAM 캐시 미스의 경우, 캐시 제어기(224)는 목표된 데이터가 DRAM 캐시(201)에 없는 것으로 결론지을 수 있고 DRAM 캐시(201)의 메타데이터(202)에 대한 접근 없이 데이터를 획득하기 위해 플래시 제어기(231)로 요청을 보낼 수 있다. 블룸 필터 테스트 결과가 DRAM 캐시 히트를 나타내면, 블룸 필터에 의한 DRAM 캐시 히트가 긍정 오류일 수 있기 때문에 캐시 제어기(224)는 이 단계에서 진실한 DRAM 캐시 히트 또는 미스를 판별할 수 없다. 이러한 경우, 캐시 제어기(224)는 진실한 DRAM 캐시 히트 또는 미스를 판별하기 위해 DRAM 제어기(221)에 DRAM 메타데이터(202)에 접근하도록 더 요청한다. 데이터 접근 요청에 포함된 DRAM 캐시 태그와 DRAM 메타데이터(202)의 비교에 의해, 캐시 제어기(224)는 DRAM 캐시(201)에서 데이터 요청 히트인지 여부를 정확하게 판별할 수 있다. DRAM 캐시 히트이면, 캐시 제어기(224)는 DRAM 캐시(201)로부터 목표된 데이터를 요청할 수 있다. DRAM 캐시 미스이면, 캐시 제어기(224)는 플래시 메모리(251)로부터 목표된 데이터를 요청할 수 있고, 플래시 메모리(251)로부터 획득한 데이터를 DRAM 캐시(201)에 삽입하고, DRAM 메타데이터(202)를 업데이트할 수 있다. DRAM 캐시 히트 또는 미스와 상관없이, 메타데이터 캐시 미스이므로, 캐시 제어기(224)는 DRAM 메타데이터(202)로부터 획득한 메타데이터를 메타데이터 캐시(227)를 업데이트 하기 위해 사용할 수 있다.
쓰기 접근 요청의 경우, 캐시 제어기(224)는 읽기 접근 요청의 경우와 같이 메타데이터 캐시(227)와 DRAM 캐시(201)의 매칭 결과에 기초하여 동일한 조치들을 수행할 수 있다. 읽기와 쓰기 접근 동작들 사이의 차이점은 아래에서 더 자세하게 설명된다.
도 3은 본 발명의 하나의 실시 예에 따른 캐시 제어기 동작 예시의 블록도이다. 도 3을 참조하여 설명된 캐시 제어기는 도 2에 도시된 바와 같이 하이브리드 메모리 모듈(200)에 통합된 캐시 제어기(224)일 수 있다. 이러한 경우, 하이브리드 메모리 모듈(200)과 하이브리드 메모리 모듈에 통합된 내부 구성들, 모듈들, 그리고 장치들의 중복된 설명은 생략된다.
호스트 컴퓨터로부터 수신된 데이터 접근 요청에 대한 응답으로, 캐시 제어기는 요청된 데이터의 호스트 주소(301)를 획득하고 접근 유형(예를 들어, 읽기, 쓰기)을 식별하기 위해 데이터 접근 요청을 복호화 한다. 호스트 주소(301)는 태그(302)(본 명세서에서는 DRAM 캐시 태그로 지칭됨), 인덱스(303)(본 명세서에서는 DRAM 캐시 인덱스로 지칭됨), 그리고 오프셋(304)을 포함한다.
본 발명의 하나의 실시 예에 따르면, DRAM 캐시에 있는 캐시 라인은 호스트에서 요청된 데이터의 크기보다 클 수 있다. 이러한 경우, 요청된 데이터와 대응하는 캐시 라인의 부분을 결정하기 위해 오프셋(304)이 사용된다. 예를 들어, 캐시 라인이 2KB이고, 요청된 데이터 크기가 1B이면, 캐시 라인에는 호스트 주소가 가리키는 유일한 데이터 부분을 식별하기 위해 총 2048 가지의 오프셋들을 요구하는 2048(2KB/1B) 데이터 부분들이 존재한다. 예를 들어, 0인 오프셋(304)은 캐시 라인에서 첫 번째 데이터 부분을 가리키고, 2047인 오프셋(304)은 캐시 라인에서 마지막 데이터 부분을 가리킨다.
본 발명의 하나의 실시 예에 따르면, 인덱스(303)는 DRAM 캐시와 연관된 메타데이터 정보를 포함할 수 있다. 캐시 제어기는 메타데이터 주소(311)를 획득하기 위해 인덱스(303)를 더 복호화 하고 메타데이터 캐시 히트 또는 미스를 판별하기 위해 SRAM에 저장된 메타데이터 캐시(327)와 메타데이터 주소(311)를 비교할 수 있다. 본 발명의 하나의 실시 예에 따르면, 메타데이터 주소(311)는 메타데이터(MDC) 태그(312) 및 메타데이터(MDC) 인덱스(313)를 포함한다.
먼저, 캐시 제어기는 SRAM 메타데이터 캐시(327)에 저장된 복수의 DRAM 캐시 메타데이터 중 매칭하는 메타데이터 엔트리(entry)를 선택하기 위해 메타데이터 주소(311)의 MDC 인덱스(313)를 사용한다. SRAM 메타데이터 캐시(327)에 저장된 각각의 매칭하는 메타데이터 엔트리는 MDC 태그(333), DRAM 캐시 태그(332), 그리고 유효 비트(V)를 포함하는 태그 쌍들을 포함할 수 있다. 유효 비트(V)는 관련된 캐시 라인이 유효인지 여부를 나타낸다. 예를 들어, 매칭하는 메타데이터 엔트리를 포함하는 캐시 라인은 V=0이면 캐시 미스를 나타낸다. 예시에서 도시된 바와 같이(예를 들어, 통로(way) 0, 통로 1, 통로 2, 그리고 통로 3) SRAM 메타데이터 캐시(327)가 복수의 통로들로 구성된다면, MDC 인덱스(313)는 통로 ID에 대응할 수 있다.
메타데이터 캐시 히트 또는 미스를 판별하기 위해, 캐시 제어기는 메타데이터 캐시(327)에서 매칭하는 엔트리를 검색하고 메타데이터 주소(311)의 MDC 태그(312)를 식별된 매칭하는 엔트리의 MDC 태그(333)와 비교한다. 메타데이터 태그(312)와 MDC 태그(333)가 매치한다면, 최초의 호스트 태그를 포함하는 데이터는 매칭하는 엔트리로부터 읽어진다. 메타데이터 캐시(327)에 저장된 최초의 호스트 태그는 호스트 주소(301)의 호스트 태그(302)와 비교된다. 최초의 호스트 태그와 호스트 태그(302)가 매치한다면, 캐시 제어기는 메타데이터 캐시 히트를 판별하고 DRAM 캐시의 메타데이터에 대한 접근 없이 메타데이터 캐시(327)에 저장된 매칭하는 호스트 태그를 이용하여 DRAM 캐시에 있는 요청된 데이터에 접근한다.
메타데이터 캐시 확인에 추가로, 캐시 제어기는 블룸 필터를 사용하여 DRAM 캐시에 있는 캐시된 데이터의 존재(또는 부재)를 판별(즉, DRAM 캐시 히트 또는 미스)하기 위해 블룸 필터 테스트를 수행할 수 있다. 블룸 필터는, 예를 들어, 비교기를 통해 다양한 형태로 구현될 수 있다. 캐시 제어기는 호스트 주소(301)의 태그(302)를 메타데이터 캐시 확인에 의해 식별된 매칭하는 메타데이터 쌍의 DRAM 캐시 태그(332)와 비교한다. 블룸 필터 테스트가 DRAM 캐시 미스(즉, 메타데이터 캐시(327)에 호스트 주소(301)의 태그(302)와 매칭하는 태그(332)가 존재하지 않는 경우)를 나타내면, 캐시 제어기는 DRAM 캐시에 목표된 데이터가 존재하지 않는 것으로 결론지을 수 있고, 플래시 제어기에 플래시 메모리에 저장된 데이터에 접근하도록 요청할 수 있다.
몇몇 경우에, 캐시 제어기는 메타데이터 캐시(327)에서 매칭하는 메타데이터 엔트리를 찾지 못하고(즉, 메타데이터 캐시 미스), 블룸 필터는 DRAM 캐시 히트를 나타낼 수 있다. 그러나, 블룸 필터에 의한 DRAM 캐시 히트의 표시는 긍정 오류일 수 있고, 그러므로 캐시 제어기는 DRAM 캐시에 목표된 데이터가 실제로 저장되어 있는지 여부(진실한 DRAM 캐시 히트 또는 미스)를 판별하기 위해 DRAM 캐시의 메타데이터에 접근한다. 호스트 주소(301)의 태그(302)와 DRAM 캐시의 메타데이터 사이의 비교 결과에 기초하여, 캐시 제어기는 목표된 데이터의 위치를 정확하게 판별할 수 있다. DRAM 캐시에 매칭하는 메타데이터가 없으면(즉, 진실한 DRAM 캐시 미스), 캐시 제어기는 DRAM에 요청된 데이터의 캐시된 복사본이 없다는 것을 확실하게 할 수 있다. 이러한 경우, 캐시 제어기는 DRAM 캐시에 대한 접근을 하지 않고 플래시 메모리에 저장된 데이터에 접근하기 위해 플래시 제어기에 직접 접근할 수 있다. DRAM 캐시에 매칭 메타데이터가 있으면(즉, 진실한 DRAM 캐시 히트), 캐시 제어기는 DRAM 캐시에 저장된 데이터에 접근하기 위해 DRAM 제어기에 접근할 수 있다.
도 4는 본 발명의 하나의 실시 예에 따른 하이브리드 메모리 모듈에서 구현된 블룸 필터의 예시를 보여준다. 캐시 제어기는 블룸 필터를 위해 삽입(insert) 함수와 테스트(test) 함수를 제공한다. 본 발명의 하나의 실시 예에 따르면, 삽입 함수는 해시 함수(hash function)이다. 캐시 제어기는 블룸 필터의 설정에 따라 하나 이상의 해시 함수를 적용할 수 있다. 예를 들어, x, y, z, 그리고 w로 표시되는 삽입과 테스트 함수들에 대한 입력들은 메타데이터 캐시 태그들일 수 있다.
본 발명의 하이브리드 메모리 모듈의 SRAM 전용 영역에 저장된 블룸 필터의 메타데이터는 복수의 엔트리들을 포함하는 본 명세서에서 블룸 필터 어레이로 지칭되는 어레이로 구현될 수 있다. 본 발명의 하나의 실시 예에서, 블룸 필터 어레이의 각 엔트리는 16비트이고, 세 개의 해시 함수들이 존재할 수 있다. 테스트 함수는 세 개의 모든 해시 함수들에 대한 매칭 결과들을 제공한다. 상술한 내용은 예시일 뿐이며, 본 발명의 범위로부터 벗어나지 않은 다른 길이의 블룸 필터 어레이와 다른 개수의 해시 함수들이 사용될 수 있다.
주어진 캐시 태그(예를 들어, 도 3의 태그(302))에서, 삽입 함수는 해시 알고리즘에 따라 블룸 필터 어레이(401)의 가리켜진 엔트리들에 비트들을 삽입(또는 업데이트)한다. 본 발명의 실시 예에서, 해시 함수는 블룸 필터 어레이(401)의 엔트리들(7, 12, 그리고 14 비트들)의 집합을 캐시 태그 x에 의해 가리켜진 곳으로 삽입한다. 그리고, 데이터 접근 요청이 수신되면, 테스트 함수 test(x)는 블룸 필터 어레이(401)로부터 캐시 태그 x에 의해 가리켜진 엔트리들을 읽고 블룸 필터 어레이(401)가 캐시 태그 x를 포함하는지 여부를 테스트 하기 위해 호출된다. 두 번째 캐시 태그 y가 캐시 태그 y에 의해 가리켜진 곳으로 해시 함수 삽입을 이용하여 블룸 필터 어레이(401)의 엔트리들(2, 4, 그리고 11 비트들)에 입력될 수 있고, 캐시 태그 y의 존재는 함수 text(y)를 사용하여 테스트될 수 있다.
본 발명의 실시 예에서, 캐시 태그 x 및 y는 블룸 필터 어레이(401)에 대한 입력으로 나타난다. 블룸 필터(401)의 각 엔트리는 0 또는 1일 수 있다. 삽입 함수는 하나 이상의 해시 함수들에 기초할 수 있고, 각각의 해시 함수는 입력으로 캐시 태그를 가질 수 있다. 삽입 함수의 출력은 블룸 필터 어레이(401)에서 가리켜진 엔트리들에 대응하는 비트 개수들이다. 본 발명은 특정 해시 함수 및 사용되는 해시 함수들의 개수에 제한되지 않는다. 예를 들어, 삽입 함수는 입력으로 캐시 태그를 수신하는 경우 블룸 필터 어레이의 네 개의 엔트리들을 업데이트할 수 있다.
태그들 z와 w는 명확하게 블룸 필터(401)에 입력되지 않는다. 캐시 태그 z를 포함하는 데이터 요청이 수신되는 경우, 캐시 태그 z를 위한 테스트 함수 text(z)가 호출되고, 부정(negative)으로 반환되어 정확하게 z가 블룸 필터에 포함되지 않음을 나타낸다(따라서, DRAM 캐시에 없음). 그러나, 캐시 태그 w를 포함하는 데이터 접근 요청이 수신되는 경우, 테스트 함수 text(w)는 캐시 태그 w에 의해 가리켜진 대로 블룸 필터 어레이(401)의 엔트리들을 읽고 블룸 필터 어레이(401)에 있는 캐시 태그 w의 존재 또는 부재를 테스트 하기 위해 호출된다. 본 발명의 실시 예에서, 테스트 함수 test(w)는 블룸 필터 어레이(401)에 캐시 태그 w가 존재함을 나타낸다. 그러므로, 본 발명의 실시 예에서, 테스트 함수 test(w)는 긍정 오류의 예시이다. 따라서, 블룸 필터는 캐시에 없는 캐시 태그들을 확신을 가지고 식별하기 위해 사용될 수 있지만, 어떠한 캐시 태그들이 캐시에 있는지를 정확하게 예측하기 위해서는 사용될 수 없다.
본 발명의 하나의 실시 예에 따르면, 본 발명의 블룸 필터는 블룸 필터 어레이의 선택된 부분 또는 전체 부분을 삭제할 수 있다. 예를 들어, 삭제 함수는 블룸 필터 어레이의 부분 또는 블룸 필터 어레이 전체를 삭제하기 위해 캐시 제어기에 적용될 수 있다. 삭제 함수는 DRAM 캐시에 캐시 라인이 더 이상 존재하지 않거나 캐시 라인 교체로 인해 없어지는 경우 사용될 수 있다. 이러한 경우, 삭제 함수는 본 발명의 블룸 필터 어레이에 있는 대응하는 엔트리들을 삭제할 수 있다. 블룸 필터 어레이가 충분히 크지 않은 경우, 캐시 제어기는 새로운 엔트리들을 위한 공간을 만들기 위해 블룸 필터 어레이의 일부를 삭제할 수 있다. 본 발명의 다른 실시 예에서, 본 발명의 블룸 필터는 전체 태그 범위를 포괄할 수 있는 큰 블룸 필터 어레이를 사용할 수 있고, 또는 캐시 제어기는 블룸 필터가 꽉 차서 더 많은 수의 어레이들이 추가될 수 없는 경우(블룸 필터가 비효율적이 되는 경우) 블룸 필터를 재설정할 수 있다.
도 5는 본 발명의 하나의 실시 예에 따른 캐시 제어기에 의한 데이터 요청을 수행하는 순서도이다. 501 단계에서, 호스트 컴퓨터로부터의 데이터 접근 요청에 응답하여, 하이브리드 메모리 모듈의 캐시 제어기는 요청 유형(예를 들어, 읽기, 쓰기)과 요청된 데이터에 대한 호스트 주소를 얻기 위해 요청을 복호화 한다. 호스트 주소는 태그(DRAM 태그), 인덱스, 그리고 오프셋을 포함할 수 있다. 502 단계에서, 캐시 제어기는 MDC 태그 및 MDC 인덱스를 포함하는 메타데이타 주소를 얻기 위해 호스트 주소의 인덱스를 복호화 한다. 503 단계에서, 캐시 제어기는 하이브리드 메모리 모듈의 SRAM에 저장된 메타데이터 캐시로부터 매칭하는 캐시 라인을 식별하기 위해 메타데이터 주소의 MDC 인덱스를 사용한다. 매칭하는 캐시 라인은 한 쌍의 MDC 태그 및 DRAM 캐시 태그를 저장한다. 메타데이터 캐시에 매칭하는 캐시 라인이 없으면, 캐시 제어기는 DRAM 제어기에 DRAM 캐시의 메타데이터에 접근하여 DRAM 캐시에 요청된 데이터의 캐시된 복사본이 존재하는지를 판별(즉, 진실한 DRAM 캐시 히트 또는 미스)하도록 요청한다.
504 단계에서, 반면에, SRAM 메타데이터 캐시에 매칭하는 캐시 라인이 식별된다면, 캐시 제어기는 매칭하는 캐시 라인의 MDC 태그가 메타데이터 주소의 MDC 태그와 매치하는지 여부를 판별하고, 더 나아가 매칭하는 MDC 태그에 의해 참조된 호스트 태그가 최초의 호스트 태그와 매칭하는지 여부를 판별한다. 호스트 태그가 매칭하면(즉, 메타데이터 캐시 히트), 506 단계에서, 캐시 제어기는 요청된 데이터가 DRAM 캐시에 캐시된 것으로 판별하고, 511 단계에서, DRAM 제어기에 DRAM 캐시의 메타데이터에 접근하지 않고 매칭하는 호스트 태그를 이용하여 DRAM 캐시에 접근하고 DRAM 캐시로부터 요청된 데이터를 얻도록 요청한다.
그리고, 505 단계에서, 캐시 제어기는 DRAM 캐시 히트 또는 미스를 판별하기 위해 매칭하는 캐시 라인의 DRAM 태그(또는 호스트 주소의 DRAM 태그)를 이용하여 블룸 필터 테스트를 수행한다. 블룸 필터 테스트 결과가 부정적이면, 509 단계에서, 캐시 제어기는 DRAM 캐시에 요청된 데이터가 캐시되지 않은 것(즉, DRAM 캐시 미스)으로 결론짓고, 512 단계에서, 플래시 제어기에 플래시 메모리에 접근하여 요청된 데이터를 얻도록 요청한다. 이러한 경우, DRAM 캐시의 메타데이터에 대한 접근은 생략될 수 있으며, 플래시 메모리에 대한 데이터 접근 지연 시간은 향상된다.
메타데이터 캐시와 매칭하지 않고(즉, 메타데이터 캐시 미스) 블룸 필터 테스트 결과가 긍정적(DRAM 캐시 히트의 긍정 오류일 수 있음)이면, 507 단계 및 508 단계에서, 캐시 제어기는 DRAM 제어기에 DRAM 캐시의 메타데이터에 있는 엔트리와 호스트 주소의 태그(DRAM 태그)가 매치하는지 여부를 판별하기 위해 DRAM 캐시의 메타데이터에 접근하도록 요청한다. 510 단계에서, DRAM 캐시 태그가 매치하면, 캐시 제어기는 요청된 데이터가 DRAM 캐시에 캐시된 것으로 판별(즉, DRAM 캐시 히트)하고, 511 단계에서, DRAM 제어기에 DRAM 캐시에 있는 요청된 데이터에 접근하도록 요청한다. 509 단계에서, DRAM 캐시 태그가 매치에 실패하면, 캐시 제어기는 요청된 데이터가 DRAM 캐시에 캐시되지 않은 것으로 판별(즉, DRAM 캐시 미스)하고, 512 단계에서, 플래시 제어기에 플래시 메모리에 있는 요청된 데이터에 접근하도록 요청한다.
본 발명의 캐시 제어기는 메타데이터 캐시 그리고 블룸 필터 중 어느 하나 또는 모두를 지원하도록 또는 아무것도 지원하지 않도록 프로그램될 수 있다. 예를 들어, 캐시 제어기는 메타데이터 캐시 그리고/또는 블룸 필터의 사용 불능/사용 가능을 판별하기 위해 캐시 히트 비율을 모니터한다. 메타데이터 캐시 히트 비율이 미리 정해진 제1 임계 값보다 높으면, 캐시 제어기는 블룸 필터가 DRAM 캐시 메타데이터에 접근하기 위한 오버헤드를 경감시키는데 있어서 거의 이득을 제공하지 않기 때문에 블룸 필터를 비활성화 할 수 있다. 본 발명의 다른 실시 예에서, 메타데이터 캐시 히트 비율이 미리 정해진 제2 임계 값보다 낮으면, 캐시 제어기는 블룸 필터만 남기고 메타데이터 캐시를 사용하지 않을 수 있다. DRAM이 플래시 메모리에 대한 캐시로 사용되지 않으면, 캐시 제어기는 메타데이터 캐시와 블룸 필터 모두 사용하지 않을 수 있다.
본 발명의 하나의 실시 예에 따르면, 캐시 제어기는 빠른 비교 결과를 얻기 위해 블룸 필터와 메타데이터 캐시에 동시에 접근할 수 있다. 본 발명의 다른 실시 예에 따르면, 캐시 제어기는 저전력 조건에서 순차적으로 블룸 필터와 메타데이터 캐시에 접근할 수 있다. 캐시 제어기는 블룸 필터를 먼저 확인하고, 메타데이터 캐시 미스로 블룸 필터 결과가 나오면, 캐시 제어기는 메타데이터 캐시를 활성화 하지 않는다. 메타데이터 캐시 히트로 블룸 필터 결과가 나오면, 캐시 제어기는 DRAM 캐시 히트 또는 미스를 확인하기 위해 메타데이터 캐시를 활성화할 수 있다. 블룸 필터 결과가 메타데이터 캐시 히트이지만 메타데이터 캐시가 거짓을 반환하면, 캐시 제어기는 DRAM 캐시 태그에 접근한다. 순차적 접근의 순서는 반대로 될 수 있으며, 즉, 메타데이터 캐시, 블룸 필터, 그리고 DRAM 캐시 태그 순서로 접근할 수 있다.
본 발명의 하나의 실시 예에 따르면, 하이브리드 메모리 모듈의 동작 방법은 동적 임의 접근 기억장치(DRAM) 캐시, 플래시 메모리, 그리고 메타데이터 캐시를 저장하는 정적 임의 접근 기억장치(SRAM)를 포함하는 하이브리드 메모리 모듈을 제공하는 단계, 여기서 DRAM 캐시는 플래시 메모리에 저장된 데이터의 캐시된 복사본 및 데이터의 캐시된 복사본에 대응하는 메타데이터를 포함하고, 메타데이터 캐시는 DRAM 캐시의 메타데이터 일부의 캐시된 복사본을 포함하고, 호스트 컴퓨터로부터 하이브리드 메모리 모듈에 저장된 데이터에 대한 데이터 접근 요청을 수신하는 단계, 데이터 접근 요청을 복호화 하여 호스트 주소를 획득하는 단계, 여기서 호스트 주소는 DRAM 캐시 태그 및 DRAM 캐시 인덱스를 포함하고, DRAM 캐시 인덱스로부터 메타데이터 주소를 획득하는 단계, 여기서 메타데이터 주소는 메타데이터 캐시 태그 및 메타데이터 캐시 인덱스를 포함하고, SRAM의 메타데이터 캐시에 있는 매칭하는 메타데이터 캐시 엔트리의 존재에 기초하여 메타데이터 캐시 히트를 판별하는 단계, 여기서 매칭하는 메타데이터 캐시 엔트리는 메타데이터 캐시 태그 및 DRAM 캐시 태그를 쌍으로 포함하고, 메타데이터 캐시 히트의 경우, DRAM 캐시의 메타데이터에 대한 접근을 생략하고 DRAM 캐시로부터 데이터를 획득하는 단계, 그리고 DRAM 캐시로부터 획득된 데이터를 호스트 컴퓨터로 반환하는 단계를 포함한다.
메타데이터 캐시 히트를 판별하는 단계는 메타데이터 캐시에 있는 매칭하는 메타데이터 캐시 엔트리의 존재를 판별하기 위해 메타데이터 주소의 메타데이터 캐시 태그를 하나 이상의 메타데이터 캐시 엔트리의 메타데이터 캐시 태그와 비교하는 단계를 더 포함할 수 있다.
SRAM은 블룸 필터를 더 저장할 수 있고, 하이브리드 메모리 모듈의 동작 방법은 SRAM의 메타데이터 캐시에 있는 매칭하는 메타데이터 캐시 엔트리의 부재에 기초하여 메타데이터 캐시 미스를 판별하는 단계, 블룸 필터로 블룸 필터 테스트를 수행하는 단계, 블룸 필터 테스트 결과에 기초하여 DRAM 캐시 미스 또는 잠재적 DRAM 캐시 히트를 판별하는 단계, DRAM 캐시 미스의 경우, 플래시 메모리로부터 데이터를 획득하는 단계, 그리고 플래시 메모리로부터 획득된 데이터를 호스트 컴퓨터로 반환하는 단계를 더 포함할 수 있다.
메타데이터 캐시 태그의 비교와 블룸 필터 테스트는 동시에 수행될 수 있다.
하이브리드 메모리 모듈의 동작 방법은 메타데이터 캐시 미스와 잠재적 DRAM 캐시 히트의 경우, DRAM 캐시의 메타데이터에 접근하는 단계, 호스트 주소의 DRAM 태그와 DRAM 캐시의 메타데이터의 비교에 기초하여 DRAM 캐시에 데이터가 저장된 지 여부를 판별하는 단계, 호스트 주소의 DRAM 태그의 매칭하는 엔리가 DRAM 캐시의 메타데이터에 존재하는 경우, DRAM 캐시로부터 데이터를 획득하고 DRAM 캐시로부터 획득된 데이터를 호스트 컴퓨터로 반환하는 단계, 그리고 호스트 주소의 DRAM 태그의 매칭하는 엔트리가 DRAM 캐시의 메타데이터에 부재하는 경우, 플래시 메모리로부터 데이터를 획득하고 플래시 메모리로부터 획득된 데이터를 호스트 컴퓨터로 반환하는 단계를 더 포함할 수 있다.
블룸 필터는 복수의 엔트리를 포함하는 블룸 필터 어레이를 포함할 수 있고, 블룸 필터 테스트는 블룸 필터 어레이에 해시 함수를 적용하여 긍정 결과 또는 부정 결과를 제공할 수 있다.
하이브리드 메모리 모듈의 동작 방법은 블룸 필터 어레이를 삭제하거나 또는 블룸 필터 어레이를 재설정하는 단계를 더 포함할 수 있다.
하이브리드 메모리 모듈의 동작 방법은 메타데이터 캐시 히트 비율이 임계 값보다 높은 경우 블룸 필터를 사용하지 않도록 캐시 제어기를 프로그램하는 단계를 더 포함할 수 있다.
하이브리드 메모리 모듈의 동작 방법은 메타데이터 캐시 히트 비율이 임계 값보다 낮은 경우 메타데이터 캐시를 사용하지 않도록 캐시 제어기를 프로그램하는 단계를 더 포함할 수 있다.
하이브리드 메모리 모듈의 동작 방법은 저전력 조건에서 블룸 필터 및 메타데이터 캐시를 순차적으로 접근하는 단계를 더 포함할 수 있다.
본 발명의 다른 실시 예에 따르면, 하이브리드 메모리 모듈은 플래시 메모리, 동적 임의 접근 기억장치(DRAM) 캐시, 여기서 DRAM 캐시는 플래시 메모리에 저장된 데이터의 캐시된 복사본과 데이터의 캐시된 복사본에 대응하는 메타데이터를 포함하고, DRAM 캐시의 메타데이터 일부의 캐시된 복사본을 포함하는 메타데이터 캐시를 저장하는 정적 임의 접근 기억장치(SRAM), 호스트 컴퓨터에 인터페이스를 제공하는 메모리 인터페이스, DRAM 캐시 및 플래시 메모리에 저장된 데이터에 접근하는 메모리 접근 제어기, DRAM 캐시에 대한 접근을 제어하는 DRAM 제어기, 플래시 메모리에 대한 접근을 제어하는 플래시 제어기, 그리고 호스트 컴퓨터로부터 요청된 데이터의 캐시된 복사본의 존재를 판별하는 캐시 제어기를 포함한다.
캐시 제어기는 데이터 접근 요청을 복호화 하여 호스트 주소를 획득하고, 여기서 호스트 주소는 DRAM 캐시 태그 및 DRAM 캐시 인덱스를 포함하고, DRAM 캐시 인덱스로부터 메타데이터 주소를 획득하고, 여기서 메타데이터 주소는 메타데이터 캐시 태그 및 메타데이터 캐시 인덱스를 포함하고, SRAM의 메타데이터 캐시에 있는 매칭하는 메타데이터 캐시 엔트리의 존재에 기초하여 메타데이터 캐시 히트를 판별하고, 여기서 매칭하는 메타데이터 캐시 엔트리는 메타데이터 캐시 태그 및 DRAM 캐시 태그의 쌍을 포함하고, 그리고 메타데이터 캐시 히트의 경우, DRAM 캐시의 메타데이터에 대한 접근을 생략하고 DRAM 제어기에 DRAM 캐시로부터 데이터를 획득하게 지시하도록 구성된다. 메모리 접근 제어기는 DRAM 캐시로부터 획득된 데이터를 호스트 컴퓨터에 반환하도록 구성된다.
캐시 제어기는 메타데이터 캐시에 있는 매칭하는 메타데이터 캐시 엔트리의 존재를 판별하기 위해 메타데이터 주소의 메타데이터 캐시 태그와 하나 이상의 메타데이터 캐시 엔트리들의 메타데이터 캐시 태그를 비교하도록 더 구성될 수 있다.
SRAM은 블룸 필터를 더 저장할 수 있고, 캐시 제어기는 SRAM의 메타데이터 캐시에 있는 매칭하는 메타데이터 캐시 엔트리의 부재에 기초하여 메타데이터 캐시 미스를 판별하고, 블룸 필터로 블룸 필터 테스트를 수행하고, 블룸 필터 테스트의 결과에 기초하여 DRAM 캐시 미스 또는 잠재적 DRAM 캐시 히트를 결정하고, DRAM 캐시 미스의 경우, DRAM 캐시의 메타데이터에 대한 접근을 생략하고 플래시 제어기에 플래시 메모리로부터 데이터를 획득하도록 지시하고, 그리고 플래시 메모리로부터 데이터를 획득하도록 더 구성될 수 있고, 메모리 접근 제어기는 플래시 메모리로부터 획득된 데이터를 호스트 컴퓨터에 반환하도록 구성될 수 있다.
캐시 제어기는 메타데이터 캐시 태그의 비교와 블룸 필터 테스트를 동시에 수행할 수 있다.
메타데이터 캐시 미스와 잠재적 DRAM 캐시 히트의 경우, DRAM 제어기는 DRAM 캐시의 메타데이터에 접근하고, 그리고 호스트 주소의 DRAM 태그와 DRAM 캐시의 메타데이터의 비교에 기초하여 DRAM 캐시에 데이터가 저장된 지 여부를 판별하도록 구성될 수 있다. 호스트 주소의 DRAM 태그의 매칭하는 엔트리가 DRAM 캐시의 메타데이터에 존재하는 경우, DRAM 제어기는 DRAM 캐시로부터 데이터를 획득하도록 구성되고, 메모리 접근 제어기는 DRAM 캐시로부터 획득된 데이터를 호스트 컴퓨터에 반환하도록 구성된다. 호스트 주소의 DRAM 태그의 매칭하는 엔트리가 DRAM 캐시의 메타데이터에 부재하는 경우, 플래시 제어기는 플래시 메모리로부터 데이터를 획득하도록 구성되고, 메모리 접근 제어기는 플래시 메모리로부터 획득된 데이터를 호스트 컴퓨터에 반환하도록 구성된다.
블룸 필터는 복수의 엔트리들을 포함하는 블룸 필터 어레이를 포함할 수 있고, 블룸 필터 테스트는 블룸 필터 어레이에 해시 함수를 적용하여 긍정 결과 또는 부정 결과를 제공할 수 있다.
캐시 제어기는 블룸 필터 어레이를 삭제하거나 또는 블룸 필터 어레이를 재설정하도록 더 구성될 수 있다.
캐시 제어기는 메타데이터 캐시 히트 비율이 임계 값보다 높은 경우에 블룸 필터를 사용하지 않도록 프로그램될 수 있다.
캐시 제어기는 메타데이터 캐시 히트 비율이 임계 값보다 낮은 경우에 메타데이터 캐시를 사용하지 않도록 프로그램될 수 있다.
캐시 제어기는 저전력 조건에서 블룸 필터와 메타데이터 캐시에 순차적으로 접근하도록 구성될 수 있다.
상술한 본 발명의 실시 예들은 SRAM 메타데이터 캐시 및 블룸 필터를 이용하여 하이브리드 메모리 모듈에 있는 DRAM 캐시의 메타데이터 접근에 대한 오버헤드를 경감시키기 위한 시스템 및 동작 방법을 구현하는 다양한 실시 예들을 설명하기 위해 본 명세서에서 설명되었다. 상술한 본 발명의 실시 예들로부터의 다양한 변형 및 변경은 당업자에게 자명할 것이다. 발명의 범위 내에서 의도된 발명의 사상은 첨부된 청구 범위에서 기술된다.

Claims (20)

  1. DRAM(Dynamic Random-Access Memory) 캐시, 플래시 메모리, 그리고 블룸 필터(Bloom filter) 및 메타데이터 캐시를 저장하는 SRAM(Static Random-Access Memory)를 포함하는 하이브리드 메모리 모듈을 제공하는 단계; 여기서 상기 DRAM 캐시는 상기 플래시 메모리에 저장된 복수의 데이터의 캐시된 복사본 및 상기 복수의 데이터의 상기 캐시된 복사본에 대응하는 메타데이터를 포함하고, 그리고 여기서 상기 메타데이터 캐시는 상기 DRAM 캐시에 포함된 상기 메타데이터의 일부의 캐시된 복사본을 포함하고,
    상기 하이브리드 메모리 모듈에 저장된 데이터에 대한 데이터 접근 요청을 호스트 컴퓨터로부터 수신하는 단계;
    상기 데이터 접근 요청을 복호화하여 DRAM 캐시 태그 및 DRAM 캐시 인덱스를 포함하는 호스트 주소를 획득하는 단계;
    상기 DRAM 캐시 인덱스로부터 메타데이터 캐시 태그 및 메타데이터 캐시 인덱스를 포함하는 메타데이터 주소를 획득하는 단계;
    상기 SRAM에 저장된 상기 메타데이터 캐시 내의 매칭하는 메타데이터 캐시 엔트리(matching metadata cache entry)의 존재(presence)에 기초하여 메타데이터 캐시 히트(hit)를 판별하는 단계; 여기서 상기 매칭하는 메타데이터 캐시 엔트리는 한 쌍(pair)의 메타데이터 캐시 태그 및 DRAM 캐시 태그를 포함하고,
    상기 DRAM 캐시에 포함된 상기 메타데이터로의 접근을 생략하고, 그리고 상기 매칭하는 메타데이터 캐시 엔트리의 상기 DRAM 캐시 태그를 사용하는 메타데이터 캐시 히트에 기초하여 상기 DRAM 캐시에 포함된 데이터의 상기 캐시된 복사본으로부터 데이터를 획득하는 단계;
    상기 DRAM 캐시로부터 획득된 데이터의 상기 캐시된 복사본을 상기 호스트 컴퓨터로 반환하는 단계;
    상기 SRAM에 저장된 상기 메타데이터 캐시 내의 매칭하는 메타데이터 캐시 엔트리의 부재(absence)에 기초하여 메타데이터 캐시 미스를 판별하는 단계; 및
    메타데이터 캐시 미스에 기초하여 상기 블룸 필터로 블룸 필터 테스트를 수행하고, 그리고 상기 블룸 필터 테스트의 결과에 기초하여 DRAM 캐시 미스 또는 잠재적 DRAM 캐시 히트를 판별하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 메타데이터 캐시 히트를 판별하는 단계는:
    상기 메타데이터 캐시 내의 상기 매칭하는 메타데이터 캐시 엔트리의 상기 존재를 판별하기 위해, 상기 메타데이터 주소의 상기 메타데이터 캐시 태그를 하나 이상의 메타데이터 캐시 엔트리의 상기 메타데이터 캐시 태그와 비교하는 단계를 포함하는 방법.
  3. 제 2 항에 있어서,
    상기 DRAM 캐시에 포함된 상기 메타데이터로의 접근을 생략하고, 그리고 DRAM 캐시 미스에 기초하여 상기 플래시 메모리에 저장된 상기 복수의 데이터로부터 데이터를 획득하는 단계; 및
    상기 플래시 메모리로부터 획득된 상기 데이터를 상기 호스트 컴퓨터로 반환하는 단계를 더 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 메타데이터 캐시 태그들의 비교 및 상기 블룸 필터 테스트는 동시에 수행되는 방법.
  5. 제 1 항에 있어서,
    메타데이터 캐시 미스 및 잠재적 DRAM 캐시 히트에 기초하여 상기 DRAM 캐시에 포함된 상기 메타데이터에 접근하는 단계;
    상기 호스트 주소의 DRAM 캐시 태그와 상기 DRAM 캐시의 상기 메타데이터의 비교에 기초하여 상기 DRAM 캐시에 데이터가 저장된 지 여부를 판별하는 단계;
    상기 호스트 주소의 상기 DRAM 캐시 태그의 매칭하는 엔트리가 상기 DRAM 캐시에 포함된 상기 메타데이터에 존재하는 경우, 상기 DRAM 캐시에 포함된 데이터의 상기 캐시된 복사본을 획득하고, 그리고 상기 DRAM 캐시로부터 획득된 데이터의 상기 캐시된 복사본을 상기 호스트 컴퓨터로 반환하는 단계; 및
    상기 호스트 주소의 상기 DRAM 캐시 태그의 매칭하는 엔트리가 상기 DRAM 캐시에 포함된 상기 메타데이터에 부재하는 경우, 상기 플래시 메모리로부터 데이터를 획득하고, 그리고 상기 플래시 메모리로부터 획득된 상기 데이터를 상기 호스트 컴퓨터로 반환하는 단계를 더 포함하는 방법.
  6. 제 1 항에 있어서,
    상기 블룸 필터는 복수의 엔트리들을 포함하는 블룸 필터 어레이를 포함하고, 그리고 상기 블룸 필터 테스트는 상기 블룸 필터 어레이에 해시 함수(hash function)를 적용함으로써 긍정 결과 또는 부정 결과를 제공하는 방법.
  7. 제 6 항에 있어서,
    상기 블룸 필터 어레이를 삭제하거나 또는 상기 블룸 필터 어레이를 재설정하는 단계를 더 포함하는 방법.
  8. 제 1 항에 있어서,
    메타데이터 캐시 히트 비율이 임계 값보다 높으면, 상기 블룸 필터를 사용하지 않도록 상기 하이브리드 메모리 모듈의 캐시 제어기를 프로그램하는 단계를 더 포함하는 방법.
  9. 제 1 항에 있어서,
    상기 하이브리드 메모리 모듈은 캐시 제어기를 포함하고,
    상기 방법은:
    메타데이터 캐시 히트 비율이 임계 값보다 낮으면, 상기 메타데이터 캐시를 사용하지 않도록 상기 캐시 제어기를 프로그램하는 단계를 더 포함하는 방법.
  10. 제 1 항에 있어서,
    저전력 조건에서 상기 블룸 필터 및 상기 메타데이터 캐시를 순차적으로(serially) 접근하는 단계를 더 포함하는 방법.
  11. 플래시 메모리;
    상기 플래시 메모리에 저장된 복수의 데이터의 캐시된 복사본 및 상기 복수의 데이터의 상기 캐시된 복사본에 대응하는 메타데이터를 포함하는 DRAM(Dynamic Random-Access Memory) 캐시;
    상기 DRAM 캐시에 포함된 상기 메타데이터의 일부의 캐시된 복사본을 포함하는 메타데이터 캐시 및 블룸 필터(Bloom filter)를 저장하는 SRAM(Static Random-Access Memory);
    호스트 컴퓨터에 인터페이스를 제공하는 메모리 인터페이스;
    상기 DRAM 캐시에 포함된 상기 캐시된 복사본 및 상기 플래시 메모리에 저장된 상기 복수의 데이터에 접근하는 메모리 접근 제어기;
    상기 DRAM 캐시에 대한 접근을 제어하는 DRAM 제어기;
    상기 플래시 메모리에 대한 접근을 제어하는 플래시 제어기; 및
    상기 호스트 컴퓨터로부터 수신된 데이터 접근 요청에서 요청된 데이터에 대응하는 상기 DRAM 캐시에서의 캐시 데이터의 존재(presence)를 판별하는 캐시 제어기를 포함하되,
    상기 캐시 제어기는:
    상기 메모리 인터페이스를 통해 상기 호스트 컴퓨터로부터 수신된 상기 데이터 접근 요청을 복호화 함으로써 DRAM 캐시 태그 및 DRAM 캐시 인덱스를 포함하는 호스트 주소를 획득하고;
    상기 DRAM 캐시 인덱스로부터 메타데이터 캐시 태그 및 메타데이터 캐시 인덱스를 포함하는 메타데이터 주소를 획득하고;
    상기 SRAM에 저장된 상기 메타데이터 캐시 내의 매칭하는 메타데이터 캐시 엔트리(matching metadata cache entry)의 존재에 기초하여 메타데이터 캐시 히트(hit)를 판별하고; 여기서 상기 매칭하는 메타데이터 캐시 엔트리는 한 쌍(pair)의 메타데이터 캐시 태그 및 DRAM 캐시 태그를 포함하고, 그리고
    상기 DRAM 캐시에 포함된 상기 메타데이터로의 접근을 생략하고, 상기 매칭하는 메타데이터 캐시 엔트리의 상기 DRAM 캐시 태그를 사용하는 메타데이터 캐시 히트에 기초하여 상기 DRAM 캐시에 포함된 상기 캐시된 복사본으로부터 데이터를 획득하기 위해 상기 DRAM 제어기를 지시하도록 구성되고,
    상기 메모리 접근 제어기는:
    상기 DRAM 캐시로부터 획득된 데이터의 상기 캐시된 복사본을 상기 호스트 컴퓨터로 반환하도록 구성되고,
    상기 캐시 제어기는:
    상기 SRAM에 저장된 상기 메타데이터 캐시 내의 매칭하는 메타데이터 캐시 엔트리의 부재(absence)에 기초하여 메타데이터 캐시 미스를 판별하고;
    상기 블룸 필터로 블룸 필터 테스트를 수행하고; 그리고
    상기 블룸 필터 테스트의 결과에 기초하여 DRAM 캐시 미스 또는 잠재적 DRAM 캐시 히트를 판별하도록 더 구성된 하이브리드 메모리 모듈.
  12. 제 11 항에 있어서,
    상기 캐시 제어기는, 상기 메타데이터 캐시 내의 상기 매칭하는 메타데이터 캐시 엔트리의 상기 존재를 판별하기 위해, 상기 메타데이터 주소의 상기 메타데이터 캐시 태그를 하나 이상의 메타데이터 캐시 엔트리의 상기 메타데이터 캐시 태그와 비교하도록 더 구성된 하이브리드 메모리 모듈.
  13. 제 12 항에 있어서,
    상기 캐시 제어기는:
    상기 DRAM 캐시에 포함된 상기 메타데이터로의 접근을 생략하고, DRAM 캐시 미스에 기초하여 상기 플래시 메모리에 저장된 상기 복수의 데이터로부터 데이터를 획득하기 위해 상기 플래시 제어기를 지시하도록 더 구성되고,
    상기 메모리 접근 제어기는 상기 플래시 메모리로부터 획득된 상기 데이터를 상기 호스트 컴퓨터로 반환하도록 구성된 하이브리드 메모리 모듈.
  14. 제 11 항에 있어서,
    상기 캐시 제어기는 상기 메타데이터 캐시 태그들의 비교와 상기 블룸 필터 테스트를 동시에 수행하는 하이브리드 메모리 모듈.
  15. 제 11 항에 있어서,
    메타데이터 캐시 미스 및 잠재적 DRAM 캐시 히트에 기초하여, 상기 DRAM 제어기는:
    상기 DRAM 캐시에 포함된 상기 메타데이터에 접근하고; 그리고
    상기 호스트 주소의 상기 DRAM 캐시 태그와 상기 DRAM 캐시의 상기 메타데이터의 비교에 기초하여 상기 DRAM 캐시에 데이터가 저장된 지 여부를 판별하도록 구성되고,
    상기 호스트 주소의 상기 DRAM 캐시 태그의 매칭하는 엔트리가 상기 DRAM 캐시에 포함된 상기 메타데이터에 존재하는 경우, 상기 DRAM 제어기는 상기 DRAM 캐시에 포함된 데이터의 상기 캐시된 복사본을 획득하도록 구성되고, 그리고 상기 메모리 접근 제어기는 상기 DRAM 캐시로부터 획득된 데이터의 상기 캐시된 복사본을 상기 호스트 컴퓨터로 반환하도록 구성되고; 그리고
    상기 호스트 주소의 상기 DRAM 캐시 태그의 매칭하는 엔트리가 상기 DRAM 캐시에 포함된 상기 메타데이터에 부재하는 경우, 상기 플래시 제어기는 상기 플래시 메모리로부터 데이터를 획득하도록 구성되고, 그리고 상기 메모리 접근 제어기는 상기 플래시 메모리로부터 획득된 상기 데이터를 상기 호스트 컴퓨터로 반환하도록 구성된 하이브리드 메모리 모듈.
  16. 제 11 항에 있어서,
    상기 블룸 필터는 복수의 엔트리들을 포함하는 블룸 필터 어레이를 포함하고, 그리고 상기 블룸 필터 테스트는 상기 블룸 필터 어레이에 해시 함수(hash function)를 적용함으로써 긍정 결과 또는 부정 결과를 제공하는 하이브리드 메모리 모듈.
  17. 제 16 항에 있어서,
    상기 캐시 제어기는 상기 블룸 필터 어레이를 삭제하거나 또는 상기 블룸 필터 어레이를 재설정하도록 더 구성된 하이브리드 메모리 모듈.
  18. 제 11 항에 있어서,
    상기 캐시 제어기는, 메타데이터 캐시 히트 비율이 임계 값보다 높으면, 상기 블룸 필터를 사용하지 않도록 프로그램 되는 하이브리드 메모리 모듈.
  19. 제 11 항에 있어서,
    상기 캐시 제어기는, 메타데이터 캐시 히트 비율이 임계 값보다 낮으면, 상기 메타데이터 캐시를 사용하지 않도록 프로그램 되는 하이브리드 메모리 모듈.
  20. 제 11 항에 있어서,
    상기 캐시 제어기는 저전력 조건에서 상기 블룸 필터 및 상기 메타데이터 캐시에 순차적으로(serially) 접근하도록 구성된 하이브리드 메모리 모듈.
KR1020170120595A 2017-02-15 2017-09-19 하이브리드 메모리 모듈 및 그것의 동작 방법 KR102231792B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762459414P 2017-02-15 2017-02-15
US62/459,414 2017-02-15
US15/587,286 US10282294B2 (en) 2017-02-15 2017-05-04 Mitigating DRAM cache metadata access overhead with SRAM metadata cache and bloom filter
US15/587,286 2017-05-04

Publications (2)

Publication Number Publication Date
KR20180094469A KR20180094469A (ko) 2018-08-23
KR102231792B1 true KR102231792B1 (ko) 2021-03-25

Family

ID=63106399

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170120595A KR102231792B1 (ko) 2017-02-15 2017-09-19 하이브리드 메모리 모듈 및 그것의 동작 방법

Country Status (5)

Country Link
US (1) US10282294B2 (ko)
JP (1) JP6916751B2 (ko)
KR (1) KR102231792B1 (ko)
CN (1) CN108427647B (ko)
TW (1) TWI744457B (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11397687B2 (en) * 2017-01-25 2022-07-26 Samsung Electronics Co., Ltd. Flash-integrated high bandwidth memory appliance
US10402337B2 (en) 2017-08-03 2019-09-03 Micron Technology, Inc. Cache filter
WO2020061098A1 (en) * 2018-09-17 2020-03-26 Micron Technology, Inc. Cache operations in a hybrid dual in-line memory module
US10761986B2 (en) * 2018-10-23 2020-09-01 Advanced Micro Devices, Inc. Redirecting data to improve page locality in a scalable data fabric
WO2020102064A1 (en) * 2018-11-12 2020-05-22 Dover Microsystems, Inc. Systems and methods for metadata encoding
TWI688859B (zh) 2018-12-19 2020-03-21 財團法人工業技術研究院 記憶體控制器與記憶體頁面管理方法
CN109800185B (zh) * 2018-12-29 2023-10-20 上海霄云信息科技有限公司 一种数据存储系统中的数据缓存方法
KR20200092710A (ko) * 2019-01-25 2020-08-04 주식회사 리얼타임테크 이기종 스토리지 기반의 데이터베이스 관리시스템에서 하이브리드 색인장치
US10853165B2 (en) * 2019-02-21 2020-12-01 Arm Limited Fault resilient apparatus and method
US11061670B2 (en) * 2019-03-05 2021-07-13 Marvell Asia Pte, Ltd. Dual-interface flash memory controller with execute-in-place cache control
US11537521B2 (en) 2019-06-05 2022-12-27 Samsung Electronics Co., Ltd. Non-volatile dual inline memory module (NVDIMM) for supporting dram cache mode and operation method of NVDIMM
CN110688062B (zh) 2019-08-26 2021-03-30 华为技术有限公司 一种缓存空间的管理方法及装置
EP3812892B1 (en) 2019-10-21 2022-12-07 ARM Limited Apparatus and method for handling memory load requests
TWI739227B (zh) * 2019-12-03 2021-09-11 智成電子股份有限公司 避免多餘記憶體存取的系統單晶片模組
GB2594732B (en) * 2020-05-06 2022-06-01 Advanced Risc Mach Ltd Adaptive load coalescing
CN113934361B (zh) * 2020-06-29 2024-05-03 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
CN112084216B (zh) * 2020-09-16 2021-05-11 上海嗨普智能信息科技股份有限公司 基于布隆过滤器的数据查询系统
US11914517B2 (en) 2020-09-25 2024-02-27 Advanced Micro Devices, Inc. Method and apparatus for monitoring memory access traffic
CN113204370A (zh) * 2021-03-16 2021-08-03 南京英锐创电子科技有限公司 指令缓存方法及装置
CN114095585B (zh) * 2022-01-21 2022-05-20 武汉中科通达高新技术股份有限公司 数据传输方法、装置、存储介质及电子设备
US11886291B1 (en) * 2022-07-21 2024-01-30 Dell Products L.P. Providing cache line metadata over multiple cache lines
WO2024035555A1 (en) * 2022-08-10 2024-02-15 Astera Labs, Inc. Metadata-caching integrated circuit device
CN116303126B (zh) * 2023-03-22 2023-09-01 摩尔线程智能科技(北京)有限责任公司 缓存、数据的处理方法及电子设备
CN117217977A (zh) * 2023-05-26 2023-12-12 摩尔线程智能科技(北京)有限责任公司 Gpu的数据访问处理方法、装置及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6920477B2 (en) 2001-04-06 2005-07-19 President And Fellows Of Harvard College Distributed, compressed Bloom filter Web cache server
US20080155229A1 (en) 2006-12-21 2008-06-26 Kevin Scott Beyer System and method for generating a cache-aware bloom filter
US20130290607A1 (en) 2012-04-30 2013-10-31 Jichuan Chang Storing cache metadata separately from integrated circuit containing cache controller
US20140289467A1 (en) 2013-03-22 2014-09-25 Applied Micro Circuits Corporation Cache miss detection filter
US20160246726A1 (en) 2014-08-20 2016-08-25 Sandisk Technologies Inc. Adaptive host memory buffer (hmb) caching using unassisted hinting

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110276744A1 (en) 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
US8478934B2 (en) 2010-07-19 2013-07-02 Lsi Corporation Managing extended RAID caches using counting bloom filters
US20130173853A1 (en) 2011-09-26 2013-07-04 Nec Laboratories America, Inc. Memory-efficient caching methods and systems
US8868843B2 (en) 2011-11-30 2014-10-21 Advanced Micro Devices, Inc. Hardware filter for tracking block presence in large caches
SG193114A1 (en) * 2012-02-23 2013-09-30 Agency Science Tech & Res Data storage device and method of managing a cache in a data storage device
US9389965B1 (en) 2012-03-12 2016-07-12 Emc Corporation System and method for improving performance of backup storage system with future access prediction
US9552301B2 (en) * 2013-07-15 2017-01-24 Advanced Micro Devices, Inc. Method and apparatus related to cache memory
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9396112B2 (en) * 2013-08-26 2016-07-19 Advanced Micro Devices, Inc. Hierarchical write-combining cache coherence
CN104035887B (zh) * 2014-05-22 2017-10-31 中国科学院计算技术研究所 一种基于精简配置系统的块设备缓存装置及其方法
CN104090852B (zh) * 2014-07-03 2017-04-05 华为技术有限公司 管理混合缓存的方法及设备
CA2876466C (en) 2014-12-29 2022-07-05 Ibm Canada Limited - Ibm Canada Limitee Scan optimization using bloom filter synopsis
KR102403202B1 (ko) 2015-03-13 2022-05-30 삼성전자주식회사 메타 데이터 관리자를 포함하는 메모리 시스템 및 동작 방법
CN104809179B (zh) * 2015-04-16 2018-10-02 华为技术有限公司 访问哈希表的装置和方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6920477B2 (en) 2001-04-06 2005-07-19 President And Fellows Of Harvard College Distributed, compressed Bloom filter Web cache server
US20080155229A1 (en) 2006-12-21 2008-06-26 Kevin Scott Beyer System and method for generating a cache-aware bloom filter
US20130290607A1 (en) 2012-04-30 2013-10-31 Jichuan Chang Storing cache metadata separately from integrated circuit containing cache controller
US20140289467A1 (en) 2013-03-22 2014-09-25 Applied Micro Circuits Corporation Cache miss detection filter
US20160246726A1 (en) 2014-08-20 2016-08-25 Sandisk Technologies Inc. Adaptive host memory buffer (hmb) caching using unassisted hinting

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Alcorn, Paul, "Samsung Partners With Netlist, Fires its First NVDIMM Shot at 3D XPoint", 5 pages Nov. 20, 2015 (http://www.tomsitpro.com/articles/samsung-netlist-3d-xpoint-nvdimm, 1-3048.html).

Also Published As

Publication number Publication date
US10282294B2 (en) 2019-05-07
CN108427647B (zh) 2023-08-08
US20180232310A1 (en) 2018-08-16
JP6916751B2 (ja) 2021-08-11
CN108427647A (zh) 2018-08-21
KR20180094469A (ko) 2018-08-23
TW201832086A (zh) 2018-09-01
JP2018133086A (ja) 2018-08-23
TWI744457B (zh) 2021-11-01

Similar Documents

Publication Publication Date Title
KR102231792B1 (ko) 하이브리드 메모리 모듈 및 그것의 동작 방법
US10210101B2 (en) Systems and methods for flushing a cache with modified data
US10126964B2 (en) Hardware based map acceleration using forward and reverse cache tables
US8745334B2 (en) Sectored cache replacement algorithm for reducing memory writebacks
US8402248B2 (en) Explicitly regioned memory organization in a network element
US8185692B2 (en) Unified cache structure that facilitates accessing translation table entries
US10067709B2 (en) Page migration acceleration using a two-level bloom filter on high bandwidth memory systems
US9996474B2 (en) Multiple stage memory management
US10366011B1 (en) Content-based deduplicated storage having multilevel data cache
CN110235101A (zh) 可变转换后备缓冲器(tlb)编索引
US20130111167A1 (en) Uncached Static Short Address Translation Table in the Cache Coherent Computer System
US20220398198A1 (en) Tags and data for caches
US20080301372A1 (en) Memory access control apparatus and memory access control method
US9329994B2 (en) Memory system
US11836092B2 (en) Non-volatile storage controller with partial logical-to-physical (L2P) address translation table
US20170199687A1 (en) Memory system and control method
JP2016057763A (ja) キャッシュ装置、及びプロセッサ
KR20210084571A (ko) 영구 메모리 클리닝
US7996598B2 (en) Memory management module
US20220358050A1 (en) Partial logical-to-physical (l2p) address translation table for multiple namespaces
JP2022143762A (ja) メモリシステム、制御方法およびメモリコントローラ
US20140310502A1 (en) Memory management apparatus and memory management method thereof

Legal Events

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