KR20220062629A - 하이브리드 dimm에서의 비휘발성 메모리를 위한 낮은 레이턴시 캐시 - Google Patents

하이브리드 dimm에서의 비휘발성 메모리를 위한 낮은 레이턴시 캐시 Download PDF

Info

Publication number
KR20220062629A
KR20220062629A KR1020227012661A KR20227012661A KR20220062629A KR 20220062629 A KR20220062629 A KR 20220062629A KR 1020227012661 A KR1020227012661 A KR 1020227012661A KR 20227012661 A KR20227012661 A KR 20227012661A KR 20220062629 A KR20220062629 A KR 20220062629A
Authority
KR
South Korea
Prior art keywords
memory device
data
memory
segment
cache
Prior art date
Application number
KR1020227012661A
Other languages
English (en)
Inventor
호리아 씨. 시미오네스쿠
폴 스톤레이크
충 쾅 친
나라심훌루 다라니쿠마르 코테
로버트 엠. 워커
카그다스 디릭
Original Assignee
마이크론 테크놀로지, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크론 테크놀로지, 인크. filed Critical 마이크론 테크놀로지, 인크.
Publication of KR20220062629A publication Critical patent/KR20220062629A/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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/0824Distributed directories, e.g. linked lists of 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/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
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement

Landscapes

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

Abstract

제1 메모리 장치, 제1 메모리 장치에 결합된 제2 메모리 장치로서, 제2 메모리 장치는 제1 메모리 장치보다 낮은 액세스 레이턴시를 가지며 제1 메모리 장치를 위한 캐시로서 사용되는, 상기 제2 메모리 장치를 포함하는 시스템들 및 방법들이 개시된다. 제1 및 제2 메모리 장치들에 동작 가능하게 결합된 처리 장치는 제 2 메모리 장치에 저장된 데이터의 세그먼트들의 액세스 통계를 추적할 수 있고, 세그먼트들은 제 1 입도를 갖고, 액세스 통계에 기초하여 제1 입도에서 제2 입도로 제2 메모리 장치에 저장된 데이터의 세그먼트를 업데이트하도록 결정할 수 있다. 처리 장치는 추가로 제1 메모리 장치로부터 데이터의 세그먼트와 연관된 추가 데이터를 검색하고 제2 입도를 갖는 새로운 세그먼트를 형성하기 위해 제2 메모리 장치에서 추가 데이터를 저장할 수 있다.

Description

하이브리드 DIMM에서의 비휘발성 메모리를 위한 낮은 레이턴시 캐시
본 개시의 실시예들은 일반적으로 메모리 서브 시스템에 관한 것으로, 보다 구체적으로는, 하이브리드 듀얼 인-라인 메모리 모듈(DIMM) 내 비휘발성 메모리를 위한 낮은 레이턴시 캐시에 관한 것이다.
메모리 서브 시스템은 데이터를 저장하는 하나 이상의 메모리 장치들을 포함할 수 있다. 메모리 장치들은 예를 들어, 비휘발성 메모리 장치들 및 휘발성 메모리 장치들일 수 있다. 일반적으로, 호스트 시스템은 메모리 서브 시스템을 사용하여 메모리 장치들에 데이터를 저장하고 메모리 장치들로부터 데이터를 검색할 수 있다.
본 개시는 이하의 상세한 설명 및 본 개시의 다양한 실시예들의 첨부 도면들로부터 보다 완전하게 이해될 것이다.
도 1은 본 개시의 일부 실시예들에 따른 메모리 서브 시스템을 포함하는 예시적인 컴퓨팅 시스템을 예시한다.
도 2는 본 개시의 일부 실시예들에 따른, 데이터 캐시들을 추적 및 관리하기 위한 예시적인 방법의 흐름도이다.
도 3은 본 개시의 일부 실시예들에 따른, 페이지 캐시 미스 및 섹터 캐시 미스에 응답하여 동작들을 수행하기 위한 예시적인 방법의 흐름도이다.
도 4는 본 개시의 일부 실시예들에 따른, 삭제(clean) 동작을 수행하기 위한 예시적인 방법의 흐름도이다.
도 5는 본 개시의 일부 실시예들에 따른, 데이터 캐시들을 추적 및 관리하기 위한 또 다른 예시적인 방법의 흐름도이다.
도 6은 본 개시의 실시예들이 동작될 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 개시의 양태들은 하이브리드 듀얼 인-라인 메모리 모듈에서 비휘발성 메모리를 위한 낮은 레이턴시 캐시에 관한 것이다. 메모리 서브 시스템은 저장 장치, 메모리 모듈 또는 저장 장치와 메모리 모듈의 하이브리드일 수 있다. 저장 장치들과 메모리 모듈들의 예들은 도 1과 함께 하기에 설명된다. 일반적으로, 호스트 시스템은 데이터를 저장하는 메모리 장치들과 같은, 하나 이상의 컴포넌트들을 포함하는 메모리 서브 시스템을 이용할 수 있다. 호스트 시스템은 메모리 서브 시스템에 저장될 데이터를 제공할 수 있으며 검색될 데이터를 메모리 서브 시스템에 요청할 수 있다.
메모리 서브 시스템은 비휘발성 및 휘발성 메모리 장치들 둘 다를 포함할 수 있다. 비휘발성 메모리 장치들의 한 예는 네거티브-앤드(NAND) 메모리 장치이다. 다른 예는 비휘발성 메모리 셀들의 크로스 포인트 어레이인, 3차원 크로스 포인트("3D 크로스 포인트") 메모리 장치이다. 비휘발성 메모리 장치들의 다른 예들은 도 1과 함께 하기에 설명된다. 비휘발성 메모리 장치는 하나 이상의 다이들의 패키지이다. 패키지들 내의 다이들은 메모리 서브 시스템 컨트롤러와 통신하기 위해 하나 이상의 채널들에 할당될 수 있다. 각 다이는 메모리 셀("셀") 세트를 포함할 수 있다. 셀은 정보를 저장하는 전기 회로이다. 셀 유형에 따라, 셀은 1비트 이상의 이진 정보를 저장할 수 있으며, 저장되는 비트 수와 관련된 다양한 논리 상태들을 갖는다. 논리 상태들은 "0" 및 "1"과 같은 이진 값들 또는 이러한 값들의 조합들로 나타낼 수 있다.
비휘발성 메모리 장치들은 비휘발성 메모리 셀들의 크로스 포인트 어레이이고, 스택 가능한 크로스 그리드 데이터 액세스 어레이(stackable cross-gridded data access array)와 함께, 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있는 3차원 크로스 포인트("3D 크로스 포인트") 메모리 장치들을 포함할 수 있다. 추가로, 많은 플래시 기반 메모리들과 달리, 3D 크로스 포인트 메모리 장치들은 라이트 인 플레이스(write in-place) 동작을 수행할 수 있으며, 여기서 비휘발성 메모리 셀은 비휘발성 메모리 셀이 미리 소거되지 않고 프로그래밍될 수 있다. 이러한 비휘발성 메모리 장치들은 관리 유닛들(MU들)을 형성하기 위해 다이들과 채널들에 걸쳐 페이지들을 그룹화할 수 있다.
메모리 서브 시스템은 단일 DIMM 패키지에서 제1 유형의 메모리 장치(예를 들어, 3D 크로스 포인트 매체) 및 제2 유형의 메모리 장치(예를 들어, 동적 랜덤 액세스 메모리(DRAM))을 포함하는 하이브리드 DIMM일 수 있다. 제1 유형의 메모리 장치(즉, 제1 메모리 유형)는 큰 저장 용량을 갖지만 높은 액세스 레이턴시를 가질 수 있는 반면, 제2 유형의 메모리 장치(즉, 제2 메모리 유형)는 더 작은 저장 용량을 갖지만 더 낮은 액세스 레이턴시를 가질 수 있다. 캐시 매니저는 제1 유형의 메모리 장치와 제2 유형의 메모리 장치 간에 데이터의 검색, 저장 및 전달을 관리할 수 있다. 종래의 메모리 시스템들에서, 캐시 매니저는 호스트 시스템에 상주하고, 제1 유형의 메모리 장치와 통신하는 제1 컨트롤러 및 제2 유형의 메모리 장치와 통신하는 제2 컨트롤러에 동작 가능하게 결합된다. 그러나, 호스트 시스템에서 캐시 매니저를 구현하는 것은 비효율성을 유발할 수 있다. 예를 들어, 제1 메모리 유형과 제2 메모리 유형 간의 데이터 트래픽은 채널 프로토콜에 의해 제한될 수 있으므로, 캐시 히트율이 감소되고 성능이 저하된다.
본 개시의 양태들은 DIMM 패키지에 캐시 매니저를 포함하는 하이브리드 DIMM을 구현함으로써 상기 및 기타 결함들을 다룬다. 캐시 매니저는 제2 유형의 메모리가 제1 메모리 유형에 대한 캐시 역할을 하도록 한다. 따라서, 제1 메모리 유형의 높은 레이턴시는 캐시 히트율이 높은 경우 제2 메모리 유형의 낮은 레이턴시로 마스킹될 수 있다. 예를 들어, DRAM 메모리 장치 또는 기타 휘발성 메모리는 3D 크로스 포인트 메모리 장치용 캐시 메모리, 또는 저장 클래스 메모리(SCM)와 같은 기타 비휘발성 메모리 장치로 사용될 수 있다. 호스트 시스템은 하이브리드 DIMM을 활용하여 3D 크로스 포인트 메모리에서 데이터를 검색하고 저장할 수 있다. 하이브리드 DIMM은 버스 인터페이스(예를 들어, DIMM 커넥터)를 통해 호스트 시스템과 결합될 수 있다. DIMM 커넥터는 하이브리드 DIMM과 호스트 시스템 간의 동기식 또는 비동기식 인터페이스일 수 있다. 호스트 시스템이 판독 동작과 같은 메모리 액세스 동작을 제공하면, 해당 데이터는 3D 크로스 포인트 메모리로부터 또는 3D 크로스 포인트 메모리용 캐시 메모리인 하이브리드 DIMM의 다른 메모리 장치로부터 호스트 시스템으로 반환될 수 있다.
예시적인 예에서, DRAM은 최근에 액세스된 데이터 및/또는 많이 액세스된 데이터를 저장하는 캐시로 구성될 수 있으므로, 이러한 데이터는 호스트 시스템에 의해 빠르게 액세스될 수 있다. DRAM 데이터 캐시는 상이한 데이터 크기들로 관리되는 2개의 상이한 캐시들로 분할될 수 있다. 파티션들 중 하나는 더 큰 입도(즉, 더 큰 크기)를 사용하는 페이지 캐시를 포함할 수 있고, 두 번째 파티션은 더 작은 입도(즉, 더 작은 크기)를 사용하는 섹터 캐시를 포함할 수 있다. 페이지 캐시는 더 큰 데이터 크기를 사용하기 때문에, 더 적은 메타데이터가 데이터(예를 들어, 전체 페이지에 대해 단일의 유효한 비트만 사용)를 관리하는 데 사용된다. 섹터 캐시의 데이터 크기가 작을수록 더 많은 양의 메타데이터(예를 들어, 태그와 함께 더 많은 유효 비트 및 더티 비트 등)를 사용하지만, 호스트 액세스 데이터가 더 상세하게 추적될 수 있도록 함으로써 DRAM 데이터 캐시의 전체 캐시 히트율이 증가된다. DRAM 데이터 캐시의 히트율을 높이면 DRAM 메모리 장치들만 있는 DIMM에 필적하는 성능을 제공할 수 있지만, 추가로 더 큰 용량의 메모리, 저렴한 비용, 및 영구 메모리 지원을 제공할 수 있다. 또한, 섹터 입도로 데이터를 추적하는 것은 미싱 데이터가 섹터 캐시에 채워지거나 DRAM 메모리 장치로부터 3D 크로스 포인트 메모리로 더티 데이터를 다시 기입할 때 DRAM 메모리 장치와 3D 크로스 포인트 메모리 사이의 대역폭 사용률을 줄일 수 있다. 일부 실시예들에서, 컨트롤러는 DRAM 메모리 장치에 저장된 더 작은 입도를 갖는 데이터 세그먼트들의 액세스 통계를 추적할 수 있다. 액세스 통계를 기반으로, 컨트롤러는 데이터 세그먼트와 관련된 추가 데이터를 검색하고 데이터의 세그먼트와 추가 데이터를 포함하는 더 큰 입도로 새 세그먼트를 형성함으로써 데이터의 세그먼트를 더 큰 입도로 업데이트할 수 있다. 입도가 클수록, 데이터의 세그먼트를 나타내는 데 더 적은 메타데이터가 사용된다. 따라서, 메타데이터가 자주 업데이트되는 자주 액세스되는 세그먼트를 관리할 때 처리 오버헤드가 덜 발생된다.
본 개시의 이점들은, 이에 제한되는 것은 아니나, 호스트 시스템에 대한 더 높은 품질의 서비스로 이어지는 하이브리드 DIMM의 개선된 성능을 포함한다. 예를 들어, 제1 메모리 장치와 제2 메모리 장치 사이의 캐싱 동작들은 하이브리드 DIMM 내부에 있을 수 있다. 따라서, 데이터가 DRAM 데이터 캐시에 저장될 3D 크로스 포인트 메모리로부터 전송될 때, 데이터 전송은 기입 동작들 및 판독 동작들을 송수신할 때 호스트 시스템에 의해 또한 사용되는 외부 버스 또는 인터페이스를 활용하지 않을 것이다. 따라서, DRAM과 3D 크로스 포인트 메모리 간의 트래픽은 히트율과 성능을 향상시키는 NVDIMM-P 프로토콜에 의해 제한되지 않는다. 추가로, 섹터들을 저장하기 위한 추가 캐싱 컴포넌트가 아니라, 섹터 캐시는 페이지 캐시와 동일한 메모리 장치 내에 위치된다. 섹터 캐시와 페이지 캐시 간의 전송은 단순히 메타데이터의 교환일 수 있으므로, DRAM과의 대역폭 사용을 더욱 줄일 수 있다. DRAM은 큰 캐시 라인들과 작은 캐시 라인들을 지원하기 때문에, 성능을 향상(더 작은 캐시 라인들)시키면서 비용 절감(더 큰 캐시 라인들)의 이점을 제공한다. 추가로, 하이브리드 DIMM의 캐시 매니저는 NVDIMM-P 프로토콜을 지원하는 임의의 호스트 CPU와 함께 작동할 수 있다.
도 1은 본 개시의 일부 실시예들에 따른 메모리 서브 시스템(110)을 포함하는 예시적인 컴퓨팅 시스템(100)을 예시한다. 메모리 서브 시스템(110)은 하나 이상의 휘발성 메모리 장치들(예를 들어, 메모리 장치(140)), 하나 이상의 비휘발성 메모리 장치들(예를 들어, 메모리 장치(130)) 또는 이들의 조합과 같은 매체를 포함할 수 있다.
메모리 서브 시스템(110)은 저장 장치, 메모리 모듈 또는 저장 장치와 메모리 모듈의 하이브리드일 수 있다. 저장 장치의 예들은 솔리드 스테이트 드라이브(SSD), 플래시 드라이브, 범용 직렬 버스(USB) 플래시 드라이브, 임베디드 멀티미디어 컨트롤러(eMMC) 드라이브, 범용 플래시 메모리(UFS) 드라이브, 보안 디지털(SD) 카드 및 하드 디스크 드라이브(HDD)를 포함한다. 메모리 모듈들의 예들은 듀얼 인-라인 메모리 모듈(DIMM), 스몰 아웃라인 DIMM(SO-DIMM) 및 다양한 유형의 비휘발성 듀얼 인-라인 메모리 모듈들(NVDIMM들)을 포함한다.
컴퓨팅 시스템(100)은 데스크탑 컴퓨터, 랩탑 컴퓨터, 네트워크 서버, 모바일 장치, 차량(예를 들어, 비행기, 드론, 기차, 자동차 또는 기타 운송), 사물 인터넷 (IoT) 지원 장치, 임베디드 컴퓨터(예를 들어, 차량, 산업 장비 또는 네트워크로 연결된 상업용 장치에 포함된 컴퓨터)와 같은 컴퓨팅 장치, 또는 메모리와 처리 장치를 포함하는 이러한 컴퓨팅 장치일 수 있다.
컴퓨팅 시스템(100)은 하나 이상의 메모리 서브 시스템(110)에 결합되는 호스트 시스템(120)을 포함할 수 있다. 일부 실시예들에서, 호스트 시스템(120)은 다른 유형의 메모리 서브 시스템(110)에 결합된다. 도 1은 한 메모리 서브 시스템(110)에 결합된 호스트 시스템(120)의 일 예를 예시한다. 본원에 사용된 바와 같이, "~에 결합된(coupled to)" 또는 "~와 결합된(coupled with)"은 일반적으로 전기적, 광학적, 자기적 등과 같은 연결들을 포함하여 유선이든 또는 무선이든, 간접 통신 연결 또는 (예를 들어, 중간 컴포넌트들이 없는) 직접 통신 연결일 수 있는, 컴포넌트들 사이의 연결을 지칭한다.
호스트 시스템(120)은 프로세서 칩셋 및 프로세서 칩셋에 의해 실행되는 소프트웨어 스택을 포함할 수 있다. 프로세서 칩셋은 하나 이상의 코어들, 하나 이상의 캐시들, 메모리 컨트롤러(예를 들어, NVDIMM 컨트롤러) 및 스토리지 프로토콜 컨트롤러(예를 들어, PCIe 컨트롤러, SATA 컨트롤러)를 포함할 수 있다. 호스트 시스템(120)은 메모리 서브 시스템(110)을 사용하여, 예를 들어 메모리 서브 시스템(110)에 데이터를 기입하고 메모리 서브 시스템(110)으로부터 데이터를 판독한다.
호스트 시스템(120)은 물리적 호스트 인터페이스를 통해 메모리 서브 시스템(110)에 결합될 수 있다. 물리적 호스트 인터페이스의 예들은, 이에 제한되는 것은 아니나, 직렬 고급 기술 결합(SATA) 인터페이스, 주변 컴포넌트 상호 연결 익스프레스(PCIe) 인터페이스, 범용 직렬 버스(USB) 인터페이스, 광섬유 채널, 직렬 결합 SCSI(SAS), 이중 데이터 레이트(DDR) 메모리 버스, 스몰 컴퓨터 시스템 인터페이스(SCSI), 듀얼 인라인 메모리 모듈(DIMM) 인터페이스(예를 들어, 이중 데이터 레이트(DDR)를 지원하는 DIMM 소켓 인터페이스) 등을 포함한다. 물리적 호스트 인터페이스는 호스트 시스템(120)과 메모리 서브 시스템(110) 사이에서 데이터를 전송하는 데 사용될 수 있다. 호스트 시스템(120)은 메모리 서브 시스템(110)이 물리적 호스트 인터페이스(예를 들어, PCIe 버스)에 의해 호스트 시스템(120)과 결합되는 경우 NVM 익스프레스(NVMe) 인터페이스를 추가로 이용하여 컴포넌트들(예를 들어, 메모리 장치들(130))에 액세스할 수 있다. 물리적 호스트 인터페이스는 메모리 서브 시스템(110)과 호스트 시스템(120) 사이에서 제어, 어드레스, 데이터 및 기타 신호들을 전달하기 위한 인터페이스를 제공할 수 있다. 도 1은 일 예로서 메모리 서브 시스템(110)을 예시한다. 일반적으로, 호스트 시스템(120)은 동일한 통신 연결, 다수의 개별 통신 연결들 및/또는 통신 연결들의 조합을 통해 다수의 메모리 서브 시스템들에 액세스할 수 있다.
메모리 장치들(130, 140)은 상이한 유형의 비휘발성 메모리 장치들 및/또는 휘발성 메모리 장치들의 임의의 조합을 포함할 수 있다. 휘발성 메모리 장치들(예를 들어, 메모리 장치(140))은, 이에 제한되는 것은 아니나, 동적 랜덤 액세스 메모리(DRAM) 및 동기식 동적 랜덤 액세스 메모리(SDRAM)와 같은 랜덤 액세스 메모리(RAM)일 수 있다.
비휘발성 메모리 장치들(예를 들어, 메모리 장치(130))의 일부 예들은 네거티브-앤드(NAND)형 플래시 메모리 및 비휘발성 메모리 셀들의 크로스포인트 어레이인 3차원 크로스포인트("3D 크로스포인트")와 같은 라이트 인 플레이스(write-in-place) 메모리 장치를 포함한다. 비휘발성 메모리의 크로스포인트 어레이는 적층 가능한 크로스 그리드 데이터 액세스 어레이와 함께 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있다. 추가로, 많은 플래시 기반 메모리들과 달리, 크로스포인트 비휘발성 메모리는 라이트 인 플레이스(write in-place) 동작을 수행할 수 있으며, 여기서 비휘발성 메모리 셀은 비휘발성 메모리 셀이 미리 소거되지 않고 프로그래밍될 수 있다. NAND형 플래시 메모리는 예를 들어 2차원 NAND(2D NAND) 및 3차원 NAND(3D NAND)를 포함한다.
메모리 장치들(130) 각각은 하나 이상의 메모리 셀 어레이들을 포함할 수 있다. 한 유형의 메모리 셀, 예를 들어 단일 레벨 셀들(SLC)은 셀 당 1 비트를 저장할 수 있다. 다중 레벨 셀들(MLC들), 트리플 레벨 셀들(TLC들), 쿼드 레벨 셀들(QLC들) 및 펜타 레벨 셀들(PLC들)과 같은 다른 유형의 메모리 셀들은 셀 당 다수의 비트들을 저장할 수 있다. 일부 실시예들에서, 메모리 장치들(130) 각각은 SLC들, MLC들, TLC들, QLC들, PLC들 또는 이들의 임의의 조합과 같은 하나 이상의 메모리 셀 어레이들을 포함할 수 있다. 일부 실시예들에서, 특정 메모리 장치는 메모리 셀들의 SLC 부분 및 MLC, TLC, QLC 부분 또는 PLC 부분을 포함할 수 있다. 메모리 장치들(130)의 메모리 셀들은 데이터를 저장하는데 사용되는 메모리 장치의 논리 단위를 지칭할 수 있는 메모리 페이지들로서 그룹화될 수 있다. 일부 유형의 메모리(예를 들어, NAND)에서, 페이지들이 블록들을 형성하도록 그룹화될 수 있다.
비휘발성 메모리 셀들의 3D 크로스포인트 어레이 및 NAND형 플래시 메모리(예를 들어, 2D NAND, 3D NAND)와 같은 비휘발성 메모리 컴포넌트들이 설명되어 있지만, 메모리 장치(130)는 예컨대 읽기 전용 메모리(ROM), 상 변화 메모리(PCM), 자체 선택 메모리, 기타 칼코게나이드 기반 메모리들, 강유전성 트랜지스터 랜덤 액세스 메모리(FeTRAM), 강유전성 랜덤 액세스 메모리(FeRAM), 마그네토 랜덤 액세스 메모리(MRAM), 스핀 전송 토크(STT)-MRAM, 전도성 브리징 RAM(CBRAM), 저항성 랜덤 액세스 메모리(RRAM), 산화물 기반 RRAM(OxRAM), 네거티브-오어(NOR) 플래시 메모리 및 전기적으로 소거 가능한 프로그래밍 가능 읽기 전용 메모리(EEPROM)와 같은, 임의의 다른 유형의 비휘발성 메모리에 기반할 수 있다.
메모리 서브 시스템 컨트롤러(115)(또는 간단히 컨트롤러(115))는 메모리 장치(130)와 통신하여 메모리 장치(130)에서 데이터 판독, 데이터 기입 또는 데이터 소거와 같은 동작들 및 다른 이러한 동작들을 수행할 수 있다. 메모리 서브 시스템 컨트롤러(115)는 하나 이상의 집적 회로들 및/또는 개별 컴포넌트들, 버퍼 메모리 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 하드웨어는 본원에 설명된 동작들을 수행하기 위한 전용(즉, 하드 코딩된) 로직을 가진 디지털 회로부를 포함할 수 있다. 메모리 서브 시스템 컨트롤러(115)는, 마이크로컨트롤러, 특수 목적 논리 회로부(예를 들어, 필드 프로그램 가능 게이트 어레이(FPGA), 애플리케이션별 집적 회로(ASIC) 등), 또는 기타 적절한 프로세서일 수 있다.
메모리 서브 시스템 컨트롤러(115)는 로컬 메모리(119)에 저장된 명령어들을 실행하도록 구성된 하나 이상의 프로세서들(예를 들어, 프로세서(117))를 포함하는 처리 장치일 수 있다. 예시된 예에서, 메모리 서브 시스템 컨트롤러(115)의 로컬 메모리(119)는 메모리 서브 시스템(110)과 호스트 시스템(120) 간의 통신들을 처리하는 것을 포함하여, 메모리 서브 시스템(110)의 동작을 제어하는 다양한 프로세스들, 동작들, 로직 흐름들 및 루틴들을 수행하기 위한 명령어들을 저장하도록 구성된 임베디드 메모리를 포함한다.
예시된 예에서, 메모리 서브 시스템 컨트롤러(115)의 로컬 메모리(119)는 메모리 서브 시스템(110)과 호스트 시스템(120) 간의 통신들을 처리하는 것을 포함하여, 메모리 서브 시스템(110)의 동작을 제어하는 다양한 프로세스들, 동작들, 로직 흐름들 및 루틴들을 수행하기 위한 명령어들을 저장하도록 구성된 임베디드 메모리를 포함한다.
일부 실시예들에서, 로컬 메모리(119)는 메모리 포인터, 페치 데이터(fetched data) 등을 저장하는 메모리 레지스터들을 포함할 수 있다. 로컬 메모리(119)는 또한 마이크로-코드를 저장하기 위한 읽기 전용 메모리(ROM)를 포함할 수 있다. 도 1의 예시적인 메모리 서브 시스템(110)은 메모리 서브 시스템 컨트롤러(115)를 포함하는 것으로 예시되어 있지만, 본 개시의 다른 실시예에서, 메모리 서브 시스템(110)은 메모리 서브 시스템 컨트롤러(115)를 포함하지 않을 수 있으며, 대신 (예를 들어, 외부 호스트에 의해 또는 메모리 서브 시스템으로부터 분리된 프로세서나 컨트롤러에 의해 제공된) 외부 제어에 의존할 수 있다.
일반적으로, 메모리 서브 시스템 컨트롤러(115)는 호스트 시스템(120)으로부터 명령들 또는 동작들을 수신할 수 있으며, 메모리 장치들(130)에 대한 원하는 액세스를 달성하기 위해 명령들 또는 동작들을 명령어들 또는 적절한 명령들로 변환할 수 있다. 메모리 서브 시스템 컨트롤러(115)는 예컨대 웨어 레벨링(wear leveling) 동작들, 가비지 수집 동작들, 에러 검출 및 에러 정정 코드(ECC) 동작들, 암호화 동작들, 캐싱 동작들 및 메모리 장치들(130)과 연관되는 논리적 어드레스(예를 들어, 논리 블록 어드레스(LBA), 명칭 공간)과 물리적 어드레스(예를 들어, 물리적 MU 어드레스, 물리 블록 어드레스) 사이의 어드레스 변환들과 같은 기타 동작들을 담당할 수 있다. 메모리 서브 시스템 컨트롤러(115)는 물리적 호스트 인터페이스를 통해 호스트 시스템(120)과 통신하기 위한 호스트 인터페이스 회로부를 더 포함할 수 있다. 호스트 인터페이스 회로부는 메모리 장치들(130)과 연관된 응답들을 호스트 시스템(120)에 대한 정보로 변환할 뿐만 아니라, 호스트 시스템으로부터 수신된 명령들을 메모리 장치들(130)에 액세스하기 위한 명령 명령어들로 변환할 수 있다.
메모리 서브 시스템(110)은 또한 예시되지 않은 추가 회로부 또는 컴포넌트들을 포함할 수 있다. 일부 실시예들에서, 메모리 서브 시스템(110)은 캐시나 버퍼(예를 들어, DRAM) 및 메모리 서브 시스템 컨트롤러(115)로부터 어드레스를 수신하고 메모리 장치들(130)에 액세스하기 위한 어드레스를 디코딩할 수 있는 어드레스 회로부(예를 들어, 행 디코더 또는 열 디코더)를 포함할 수 있다.
일부 실시예들에서, 메모리 장치들(130)은 메모리 장치들(130)의 하나 이상의 메모리 셀들에 대한 동작들을 실행하기 위해 메모리 서브 시스템 컨트롤러(115)와 함께 동작하는 로컬 매체 컨트롤러들(135)을 포함한다. 외부 컨트롤러(예를 들어, 메모리 서브 시스템 컨트롤러(115))는 메모리 장치(130)를 외부적으로 관리(예를 들어, 메모리 장치(130)에 대한 매체 관리 동작들을 수행)할 수 있다. 일부 실시예들에서, 메모리 서브 시스템(110)은 다이 상의 제어 로직(예를 들어, 로컬 컨트롤러(132))을 갖는 원시 메모리 장치(130) 및 동일한 메모리 장치 패키지 내의 매체 관리를 위한 컨트롤러(예를 들어, 메모리 서브 시스템 컨트롤러(115))를 포함하는 관리형 메모리 장치이다. 관리형 메모리 장치의 일 예로는 관리형 NAND(MNAND) 장치가 있다.
일 실시예에서, 메모리 서브 시스템(110)은 메모리 장치(130) 및 메모리 장치(140)의 데이터를 추적하고 관리하는데 사용될 수 있는 캐시 매니저(113)를 포함한다. 일부 실시예들에서, 메모리 서브 시스템 컨트롤러(115)는 캐시 매니저(113)의 적어도 일부를 포함한다. 일부 실시예들에서, 캐시 매니저(113)는 호스트 시스템(120), 애플리케이션, 또는 운영 체제의 일부이다. 다른 실시예들에서, 로컬 매체 컨트롤러(135)는 캐시 매니저(113)의 적어도 일부를 포함하고 본원에 설명된 기능을 수행하도록 구성된다. 캐시 매니저(113)는 동기식 인터페이스를 통해 메모리 장치들(130 및 140)와 직접 통신할 수 있다. 또한, 메모리 장치(130)와 메모리 장치(140) 사이의 데이터 전송은 호스트 시스템(120)에 액세스하지 않고도 메모리 서브 시스템(110) 내에서 수행될 수 있다.
메모리 장치(140)는 메모리 장치(130)로부터의 데이터를 저장하는 데이터 캐시를 포함할 수 있어 데이터에 대한 추후 요청들이 더 빨리 제공될 수 있다. 캐시 라인은 캐시 저장 장치의 기본 단위이며 여러 바이트 및/또는 단위의 데이터를 포함할 수 있다. 작은 캐시 라인 크기는 더 높은 히트율을 갖지만 큰 캐시 크기 라인보다 더 많은 태그 메모리가 필요하다. 태그는 매핑된 메모리의 다른 영역들을 구별하는 데 사용될 수 있는 데이터 그룹의 고유 식별자이다.
일부 실시예들에서, 메모리 서브 시스템(110)에 의해 저장되는 모든 데이터는 메모리 장치(130)에 저장될 수 있다. 메모리 장치(130)에 저장된 특정 데이터는 또한 메모리 장치(140)의 데이터 캐시에 저장될 수 있다. 예를 들어, 호스트 시스템(120)에 의해 더 자주, 또는 더 최근에 액세스되는 것으로 결정된 데이터는 보다 빠른 호스트 액세스를 위해 데이터 캐시에 저장될 수 있다. 호스트 시스템(120)이 데이터 캐시에 저장된 데이터에 대한 판독 요청(즉, 캐시 히트)을 제공할 때, 데이터는 메모리 장치(130)로부터 검색되는 것과 대조적으로 데이터 캐시로부터 검색될 수 있다. 데이터 캐시에서 데이터를 검색하는 대역폭 또는 성능은 메모리 장치(130)에서 데이터를 검색하는 대역폭 또는 성능보다 빠를 수 있다.
메모리 장치(140)의 데이터 캐시는 분할될 수 있고 작은 캐시 라인들(이하 "섹터(들)")을 저장하기 위한 섹터 캐시(142) 및 큰 캐시 라인들(이하 "페이지(들)")을 저장하기 위한 페이지 캐시(144)를 포함할 수 있다. 섹터 캐시(142)와 페이지 캐시(144)는 서로 다른 데이터 크기들로 관리될 수 있다. 섹터 캐시(142)는 더 작은 입도(더 작은 크기)를 활용할 수 있고 페이지 캐시(144)는 더 큰 입도(더 큰 크기)를 활용할 수 있다. 일 예에서, 페이지는 크기가 2킬로바이트일 수 있고, 섹터는 크기가 64바이트일 수 있다. 페이지는 하나 이상의 섹터들을 포함할 수 있다. 페이지 캐시(144)는 더 큰 데이터 크기를 활용하는 데이터(예를 들어, 전체 페이지에 대해 단일의 유효한 비트만)를 관리하기 위해 더 적은 메타데이터를 필요로 할 수 있다. 섹터 캐시(142)의 더 작은 데이터 크기는 더 많은 양의 메타데이터(예를 들어, 더 많은 수의 유효 비트 및/또는 더티 비트, 태그 등)를 필요로 할 수 있다. 페이지 캐시(144)의 페이지들은 하나 이상의 세트들로 구성될 수 있다. 일 예에서, 페이지 세트는 24개의 페이지들을 포함한다. 마찬가지로, 섹터 캐시(142)의 섹터들은 하나 이상의 세트들로 구성될 수 있다. 일 예에서, 섹터 세트는 16개의 섹터들을 포함한다.
메모리 장치(130)는 섹터 캐시와 유사한 작은 입도로 데이터를 저장하고 관리할 수 있다. 예를 들어, 데이터는 섹터 캐시(142)에 하나 이상의 섹터들을 포함할 수 있는 데이터 페이로드 크기로 메모리 장치(130)에 저장될 수 있다. 따라서 데이터는 데이터 페이로드 크기(예를 들어, 한 번에 하나 이상의 섹터들)로 메모리 장치(130)와 섹터 캐시(142) 사이에서 전송될 수 있다.
섹터 캐시(142)에서, 섹터 캐시(142)의 "페이지"와 연관된 메타데이터(본원에서는 "섹터 그룹"이라고 함)는 섹터가 유효한 데이터를 포함하는지 여부(예를 들어, 섹터와 연관된 캐시 라인이 전송을 위해 할당되었는지(유효하지 않은지) 또는 전송을 수신했는지(유효한지) 여부)를 나타내기 위해 섹터들 각각에 유효 비트를 포함할 수 있다. 또한, 메타데이터는 데이터 페이로드가 섹터 캐시(142)에서 수정되어 메모리 장치(130)에 다시 기입되어야 하는지 여부가 결정될 수 있도록 섹터 그룹의 각 데이터 페이로드에 대한 더티 비트를 포함할 수 있다. 따라서, 섹터 캐시(142)의 각 섹터는 섹터 그룹과 관련된 메타데이터를 사용하여 추적 및 관리될 수 있다. 섹터 그룹 메타데이터는 또한 캐시 보유 및 프리페치 정책을 알리는 데 도움이 되는 휴리스틱스 필드를 포함할 수 있다.
섹터 캐시(142)와 유사하게, 메타데이터는 페이지 캐시(144)의 각 페이지와 연관되어 대응하는 페이지를 관리할 수 있다. 예를 들어, 페이지 캐시(144)의 페이지와 연관된 메타데이터는 페이지 캐시(144)가 페이지 레벨에서 관리되기 때문에 단일 유효 비트 및 단일 더티 비트를 포함할 수 있다. 추가 메타데이터는 각 페이지와 연관되어 다른 관리 태스크들 중에서 축출 절차들을 결정할 수 있다. 캐시 매니저(113)가 섹터 캐시(142)의 섹터 그룹이 페이지 캐시(144)로 전송되어야 한다고 결정할 때(예를 들어, 자주 액세스되기 때문에), 캐시 매니저(113)는 메모리 장치(130)로부터의 대응하는 섹터들/데이터 페이로드들을 갖는 섹터 캐시(142)에 있는 페이지의 나머지 부분을 채울 수 있다. 페이지가 섹터 그룹의 나머지 섹터들로 채워지면, 캐시 간에 데이터를 전송하는 대신, 섹터가 있는 페이지와 관련된 메타데이터는 페이지 캐시 메타데이터에 복사될 수 있\다. 예를 들어, 캐시 매니저(113)는 축출 정책에 따라 페이지 캐시(144)의 페이지를 식별하고, 그런 다음 페이지 캐시에 있는 페이지의 메타데이터(즉, 어드레스)를 섹터 캐시(142)에 있는 페이지의 메타데이터와 스왑될 수 있다. 따라서, 데이터는 전송되지 않지만 페이지들은 데이터 캐시 내에서 페이지 레벨에서(예를 들어, 페이지 캐시(144)에서) 관리되는 것과 데이터 캐시 내의 섹터 레벨에서(예를 들어, 섹터 캐시(142)에서) 관리되는 것 사이에서 상호 교환될 수 있다.
특히, 캐시 라인이 메모리 장치(130)로부터 메모리 장치(140)(예를 들어, 섹터 캐시(142) 또는 페이지 캐시(144))로 복사될 때, 캐시 엔트리가 생성될 수 있다. 캐시 엔트리는 복사된 데이터 및 복사된 데이터의 메모리 위치(예를 들어, 태그 메모리 엔트리)를 포함할 수 있다. 태그 메모리 엔트리는 섹터, 섹터 그룹(예를 들어, 섹터 그룹) 및/또는 페이지를 추적하는 데 사용될 수 있다. 섹터 그룹의 섹터들은 섹터 캐시(142)에 필요한 태그 메모리의 양을 줄이기 위해 단일 태그 메모리 엔트리를 사용하여 추적될 수 있다.
각 페이지 태그 메모리 엔트리는 태그(예를 들어, 하나 이상의 호스트 어드레스 비트) 및 관련 페이지 메타데이터를 포함할 수 있다. 관련 페이지 메타데이터는 더티 비트(들), 유효 비트(들), LRU(가장 최근에 액세스된) 데이터 등을 포함할 수 있다. 더티 비트는 페이지가 비휘발성 메모리(예를 들어, 메모리 장치(130))와 일치하지 않는 데이터를 가지고 있는지 여부를 나타내는 데 사용될 수 있다. 유효한 비트는 페이지가 유효한지 여부(예를 들어, 페이지와 관련된 캐시 라인이 전송을 위해 할당되었는지(유효하지 않은지) 또는 전송을 수신했는지(유효한지) 여부)를 나타내는 데 사용될 수 있다. LRU 데이터는 LRU 값을 포함할 수 있으며, 페이지가 호스트 시스템(120)에 의해 가장 최근에 액세스되는지 여부를 나타내는 데 사용될 수 있다. 예를 들어, 페이지가 액세스될 때, 해당 페이지에 대한 LRU 값은 미리 결정된 값(예를 들어, 24)으로 설정될 수 있다. 페이지 캐시(144)의 다른 모든 섹터에 대한 LRU 값들 또는 페이지 세트의 모든 다른 페이지는 일정 양만큼(예를 들어, 1만큼) 감소될 수 있다. LRU 데이터는 축출 절차들에 사용될 수 있다. 캐시 매니저(113)는 페이지 태그 메모리 엔트리 및/또는 페이지 메타데이터를 사용하여 페이지 캐시(144)의 각 페이지를 추적 및 관리할 수 있다.
각 섹터 태그 메모리 엔트리는 태그(예를 들어, 호스트 어드레스 비트) 및 섹터 또는 섹터 그룹에 대한 관련 섹터 메타데이터를 포함할 수 있다. 섹터 그룹의 섹터들과 연관된 섹터 메타데이터는 섹터가 유효한 데이터 조각인지 여부를 나타내기 위해 섹터들 각각에 대한 유효 비트를 포함할 수 있다. 섹터 그룹 메타데이터는 데이터 페이로드가 섹터 캐시에서 수정되는지가 결정될 수 있도록 섹터 그룹의 각 데이터 페이로드에 대한 더티 비트를 더 포함할 수 있다. 섹터 그룹 메타데이터는 축출 절차들을 위한 LRU 데이터를 더 포함할 수 있으며, 이는 섹터가 호스트에 의해 가장 최근에 액세스되었음을 나타낸다. 섹터 그룹 메타데이터는 또한 캐시 보유 및 프리페치 정책을 알리는 데 도움이 되는 휴리스틱스 필드를 포함한다. 캐시 매니저(113)는 섹터 태그 메모리 엔트리 및/또는 섹터 메타데이터를 사용하여 섹터 캐시(142)의 각 섹터 및 섹터 그룹을 추적 및 관리할 수 있다.
일 예에서, 섹터 캐시(142)는 32개의 유효 비트들을 사용하여 섹터 그룹의 어느 섹터들이 유효한지를 나타낼 수 있다. 다른 예에서, 섹터 캐시(142)는 16개의 더티 비트들을 사용하여 모든 2개의 섹터들 또는 모든 섹터 쌍에 대한 더티 상황을 나타낼 수 있다. 섹터가 축출되어야 하는 경우(즉, 더티), 섹터 쌍의 다른 섹터의 유효한 비트가 확인될 수 있다. 설정된 경우, 다른 섹터도 축출될 수 있다. 2개의 섹터들이 메모리 장치(130)로부터 판독될 수 있다. 동일한 섹터 쌍의 다른 섹터의 유효 비트가 설정되지 않은 경우, 두 섹터 모두 메모리 장치(140)에 기입될 수 있다. 그렇지 않으면, 채워지고 있는 섹터만 기입될 수 있다. 일부 실시예들에서, 캐시 매니저(113)는 휴리스틱스 방법을 사용하여 섹터들에 대한 액세스 수를 설명할 수 있다.
일부 실시예들에서, 페이지 메타데이터는 페이지 캐시(144)의 각 페이지와 연관되어 각 페이지를 관리할 수 있다. 예를 들어, 페이지 캐시의 페이지와 연관된 페이지 메타데이터는 단일 유효 비트 및 단일 더티 비트를 포함할 수 있다. 추가 메타데이터는 각 페이지와 연관되어 다른 관리 태스크들 중에서 축출 절차들을 결정할 수 있다.
일부 실시예들에서, 메모리 서브 시스템에서 호스트 액세스(예를 들어, 판독 또는 기입 동작)가 발생할 때, 캐시 매니저(113)는 페이지 캐시(144)의 각 페이지 및 섹터 캐시(142)의 각 센터와 관련된 쿼리 태그들에 대한 액세스와 관련된 호스트 어드레스를 사용할 수 있다. 캐시 매니저(113)가 페이지 캐시(144)에서 (페이지 태그 메모리 엔트리를 사용하여) 일치하는 것을 발견하면, 호스트 시스템에 의해 요청된 데이터는 페이지 캐시(144)에 있다. 그런 다음, 캐시 매니저(113)는 호스트 시스템(120)에 의해 요청된 액세스(예를 들어, 판독 또는 기입)를 제공할 수 있다. (섹터 태그 메모리 엔트리를 사용하는) 캐시 매니저(113)가 섹터 캐시(142)에서 일치를 발견하면, 데이터가 검색되거나 섹터 캐시(142)로부터 액세스될 수 있다. 그렇지 않으면, 임의의 캐시 미스가 섹터 캐시(142)에 의해 처리될 수 있다. 예를 들어, 판독 동작이 수신되고 캐시 미스가 발생하면(즉, 데이터가 페이지 캐시(144) 또는 섹터 캐시(142)에 없는 경우), 캐시 매니저(113)는 캐시 매니저(113)의 축출 정책에 기초하여 섹터 그룹을 축출할 수 있다. 예를 들어, 축출될 섹터 그룹은 가장 최근에 사용될 수 있다. 더티 비트가 있는 모든 데이터는 메모리 장치(130)에 다시 기입될 수 있다. 그런 다음, 캐시 매니저(113)는 메모리 장치(130)로부터 요청된 데이터 페이로드를 검색하고, 섹터 캐시(142)에서 축출된 섹터 그룹을 검색된 데이터 페이로드를 포함하는 섹터 그룹으로 교체할 수 있다.
일부 실시예들에서, 데이터가 섹터 캐시(142)에 있는 동안, 데이터 액세스 패턴 및 데이터 액세스 이력은 페이지 캐시(144)에서 더 긴 기간 동안 캐시되어야 하는지 여부를 결정하기 위해 섹터에 대해 추적될 수 있다. 데이터 캐시(페이지 캐시(144) 및 섹터 캐시(142) 모두)에 대한 히트율은 일반적인 액세스 패턴을 식별하고 섹터 캐시(142)의 각 섹터 그룹의 호스트 액세스에 대한 충분한 양의 데이터를 집계함으로써 증가될 수 있다. 캐시 매니저(113)는 수집된 액세스 데이터를 사용하여 섹터 그룹의 온도(예를 들어, 액세스 속도), 섹터 및 해당 페이지의 액세스 패턴 등을 결정한 다음, 데이터 캐시의 히트율을 최대화하기 위한 적절한 정책을 선택할 수 있다. 예를 들어, 캐시 매니저(113)는 섹터 캐시에 대해 수집된 액세스 데이터에 기초하여 선택하기 위한 캐시 관리 정책 세트를 포함할 수 있다.
상기에 논의된 바와 같이, 캐시 매니저(113)는 데이터가 섹터 캐시(142)에 저장될 수 있기 전에 축출 모드를 사용하여 축출 절차(이하 "축출")를 수행할 수 있다. 축출 모드는 섹터 기반, 페이지 기반 또는 임의의 그 조합일 수 있다. 섹터 기반 축출 모드에서, 캐시 매니저(113)는 섹터 캐시(142)에서의 섹터를 선택할 수 있다. 일 예에서, 캐시 매니저(113)는 LRU 데이터를 사용하여 섹터를 선택한다. 선택된 섹터가 더티 비트들을 포함하는 경우, 캐시 매니저(113)는 섹터를 비휘발성 메모리(예를 들어, 메모리 장치(130))로 보낼 수 있다. 페이지 기반 축출 모드에서, 하나 이상의 축출된 섹터들이 페이지 캐시(144)로 전송될 수 있다.
일부 실시예들에서, 축출 모드는 휴리스틱스를 사용하여 결정될 수 있다. 휴리스틱스는 비표준 방법을 사용하여 문제를 해결하기 위해 설계된 기술 또는 알고리즘이다. 일 예에서, 휴리스틱스가 임계치를 초과하는 경우, 축출 모드는 페이지 기반일 수 있다. 그렇지 않으면, 축출 모드는 섹터 기반일 수 있다. 다른 실시예들에서, 알고리즘은 유효 비트 세트 수와 더티 비트 세트 수를 검사할 수 있다. 축출 모드는 휴리스틱, 유효한 비트 세트 수 및/또는 더티 비트 세트 수가 하나 이상의 임계치들을 초과하는 경우 페이지 기반일 수 있다. 그렇지 않으면, 축출 모드는 섹터 기반일 수 있다. 일부 실시예들에서, 캐시 매니저(113)는 섹터 축출 어드레스를 사용하는 제2 페이지 캐시 조회를 사용하여 축출할 LRU 페이지를 찾을 수 있다. 선택된 페이지가 더티인 경우, 캐시 매니저(113)는 전체 페이지를 먼저 비휘발성 메모리(예를 들어, 메모리 장치(130))로 보낼 수 있다. 페이지 태그 메모리가 두 개의 개별 섹션들(예를 들어, 제1 페이지 세트에 대한 제1 섹션 및 제2 페이지 세트에 대한 제2 섹션)로 분할되면 제2 페이지 캐시 조회를 피할 수 있다. 일부 실시예들에서, 세트의 모든 섹터들 또는 페이지들이 사용되고(예를 들어, 유효함) 새로운 페이지가 전체 세트에 삽입될 필요가 있을 때, 캐시 매니저(113)는 LRU 페이지를 축출할 수 있다. 그러나, 섹터 그룹이 축출될 필요가 있지만 그 휴리스틱스가 캐시에 이를 유지하는 것이 유리할 수 있음을 나타낼 때, 캐시 매니저(113)는 섹터 그룹 페이지 캐시(144)를 축출하기보다는 이동시킬 수 있다. 페이지 페이지 캐시(144)가 가득 차면, 캐시 매니저(113)는 LRU 페이지를 축출할 수 있다.
섹터는 개별 섹션들의 페이지와 고유하게 연관될 수 있다. 호스트 어드레스 비트의 값에 따라, 두 개의 해당 페이지 세트들에서 두 개의 조회 결과 중 하나가 최종 페이지 조회 결과로 선택될 수 있다. 축출될 섹터는 호스트 어드레스를 사용하여 선택된 섹터와 동일한 인덱스를 가질 수 있다. 캐시 매니저(113)는 자신의 태그 값의 LSB(최하위 바이트)를 사용하여 해당 페이지를 선택할 수 있다. 제1 조회의 제2 결과는 제1 조회 후에 이미 사용할 수 있으므로, 섹터 축출 어드레스를 사용하는 제2 조회 결과는 (축출될) 섹터 태그의 LSB를 사용하여 두 개의 제1 페이지 조회 결과 중 하나를 선택하여 쉽게 이용 가능할 수 있다.
일부 실시예에서, 캐시 매니저(113)는 채우기 동작을 수행할 수 있다. 일 예에서, 캐시 매니저(113)는 섹터 캐시의 섹터 그룹이 페이지 캐시로 전송되어야 한다고 결정할 수 있다. 캐시 매니저(113)는 섹터 캐시(142)의 페이지의 나머지 부분을 비휘발성 메모리(예를 들어, 메모리 장치(130))로부터의 대응하는 섹터로 채울 수 있다. 캐시 매니저(113)가 페이지를 섹터 그룹의 나머지 섹터들로 채우면, 캐시 매니저(113)는 섹터가 상주하는 페이지와 연관된 메타데이터를 페이지 메타데이터에 복사한다. 예를 들어, 캐시 매니저(113)는 축출 모드에 따라 페이지 캐시(144)의 페이지를 식별하고, 그런 다음 페이지 캐시(144)에 있는 페이지의 메타데이터(즉, 어드레스)를 섹터 캐시(142)에 있는 페이지의 메타데이터와 스왑될 수 있다. 따라서, 데이터는 전송되지 않지만 페이지들은 페이지 레벨에서(예를 들어, 페이지 캐시(144)에서) 관리되는 것과 메모리 장치(140) 내의 섹터 레벨에서(예를 들어, 섹터 캐시(142)에서) 관리되는 것 사이에서 상호 교환될 수 있다.
일부 실시예들에서, 비휘발성 메모리를 판독하는 대역폭을 최소화하기 위해, 데이터는 페이지 캐시 룩업 미스에 대한 페이지 캐시(144)를 채우기 위해 비휘발성 메모리로부터 판독되지 않는다. 오히려, 캐시 매니저(113)는 섹터 캐시(142)로부터 페이지 캐시(144)로 데이터를 판독한다. 일 예에서, 캐시 매니저(113)는 캐시 히트에 대한 휴리스틱스 알고리즘에 기초하여 섹터 캐시(142)로부터 페이지 캐시(144)로 데이터를 판독한다. 예를 들어, 섹터 그룹의 섹터들의 총 액세스 수가 임계치를 초과할 때, 캐시 매니저는 유효 섹터들을 페이지 캐시(144)로 이동하고 비휘발성 메모리로부터 무효 섹터들을 판독하여 새로 형성된 페이지를 채울 수 있다. 페이지가 채워지면, 캐시 매니저(113)는 페이지의 유효 비트를 1로 설정하고 원래 섹터 그룹의 섹터가 더티인 경우 페이지의 더티 비트를 1로 설정할 수 있다.
페이지 축출 모드에서, 유효 벡터들은 페이지 캐시(144)로 전송될 수 있다. 캐시 매니저(113)는 비휘발성 메모리로부터 무효 섹터들을 판독하여 새로 형성된 페이지를 완전히 채울 수 있다(예를 들어, 채우기 동작). 총 액세스 수에 더하여, 캐시 매니저(113)는 유효 비트 세트의 수뿐만 아니라 더티 비트 세트의 수를 결정할 수 있다. 일부 실시예들에서, 캐시 매니저(113)는 액세스 수가 미리 결정된 임계치를 초과하고/하거나 설정된 유효 비트 수가 다른 미리 결정된 임계치를 초과하고/하거나 더티 비트 세트 수가 또 다른 미리 결정된 임계치를 초과하는 경우 페이지 채우기 동작을 수행할 수 있다.
일부 실시예들에서, 캐시 매니저(113)는 삭제 동작을 수행할 수 있다. 일 예에서, 축출을 위해 선택되기 전에 섹터들 및 페이지들(예를 들어, LRU 섹터들 및 페이지들)을 사전에 축출하기 위해, 캐시 매니저(113)는 LRU 값이 임계값 미만으로 떨어질 때 모든 더티 섹터들 또는 페이지들을 비휘발성 메모리로 보내는 삭제 동작을 수행할 수 있다. 캐시 매니저(113)는 LRU가 업데이트된 후 삭제 동작을 트리거할 수 있다. 일부 실시예들에서, 캐시 매니저(113)는 LRU 업데이트 알고리즘을 사용할 수 있으며, 이는 LRU 값들이 고정된 패턴으로 변경되는 결과를 초래할 수 있다. 예를 들어, 섹터 캐시(142)에 대해, 모든 LRU 값들은 리셋 후에 0으로 설정될 수 있다. 섹터 캐시(142)의 제1 섹터에 대한 제1 액세스 후에, 제1 섹터에 대한 LRU 값이 (예를 들어, 15로) 설정될 수 있다. 섹터 캐시(142)의 제2 섹터에 대한 후속 액세스 후에, 제2 섹터에 대한 제2 LRU 값이 (예를 들어, 15로) 설정될 수 있는 반면, 제1 LRU 값은 감소(예를 들어, 14로 설정)될 수 있다. 이 프로세스는 각 후속 액세스에 대해 계속될 수 있다. 삭제 동작이 캐시 매니저(113)에 의해 인에이블되면, 임계값이 (예를 들어, 4로) 설정될 수 있다. 섹터의 LRU 값이 임계값에 도달하면, 캐시 매니저(113)는 해당 섹터를 비휘발성 메모리로 보낼 수 있다. 삭제 동작은 캐시 라인(예를 들어, 섹터, 페이지)을 삭제할 수 있지만(예를 들어, 더티 비트를 1에서 0으로 설정), 캐시 라인을 축출하거나 LRU 값을 변경하지는 않을 것이다.
일부 실시예들에서, 캐시 매니저(113)는 매핑 방식을 사용하여 섹터 캐시(142)로부터 페이지 캐시(144)로 데이터를 이동하는데 필요한 대역폭을 저장할 수 있다. 데이터가 섹터 캐시(142)로부터 페이지 캐시(144)로 이동될 때, 페이지가 먼저 선택될 수 있다. 섹터 행의 경우, 섹터 태그의 LSB(최하위 비트)에 따라 두 개의 가능한 해당 페이지 행들이 있을 수 있다. 예를 들어, 제1 섹터 행은 해당 섹터 태그의 LSB가 0이면 제1 페이지 행에 해당하고, 태그의 LSB가 1이면 제2 페이지 행에 해당할 수 있고; 제2 섹터 행은 태그의 LSB가 0이면 제1 페이지 행에 인접한 제3 페이지 행에 해당하고 태그의 LSB가 1이면 제2 페이지 행에 인접한 제4 페이지 행에 해당하는 식일 수 있다. 섹터 캐시 라인들과 페이지 캐시 라인들은 함께 데이터를 이동할 필요가 없지만 각 캐시 라인에 사용되는 물리적 메모리 장치(140) 페이지가 스왑될 수 있다는 점에서 페이지 매핑 세트를 형성할 수 있다. 페이지 스와핑을 달성하기 위해, 각 태그 메모리 엔트리에는 추가 필드(예를 들어, 페이지 인덱스)가 추가될 수 있다.
도 2는 본 개시의 일부 실시예들에 따른, 데이터 캐시들을 추적 및 관리하기 위한 예시적인 방법(200)의 흐름도이다. 방법(200)은 하드웨어(예를 들어, 처리 장치, 회로부, 전용 로직, 프로그램 가능 로직, 마이크로코드, 장치의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 장치에서 실행되거나 수행된 명령어들) 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시예들에서, 방법(200)은 도 1의 캐시 매니저(113)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되어 있지만, 달리 명시되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 예들로서만 이해되어야 하며, 예시된 프로세스들은 다른 순서로 수행될 수 있으며, 일부 프로세스들은 병렬로 수행될 수 있다. 추가로, 하나 이상의 프로세스들은 다양한 실시예들에서 생략될 수 있다. 따라서, 모든 프로세스들이 모든 실시예에서 필요한 것은 아니다. 다른 프로세스 흐름들이 가능하다.
방법(200)은 제1 메모리 장치(예를 들어, 메모리 장치(130)) 및 제2 메모리 장치(예를 들어, 메모리 장치(140))와 관련될 수 있다. 메모리 장치(130)는 메모리 장치(140)에 결합될 수 있다. 메모리 장치(140)는 메모리 장치(130)에 대한 캐시의 역할을 할 수 있다. 메모리 장치(130), 메모리 장치(140), 및 처리 로직은 하이브리드 듀얼 인-라인 메모리 모듈 내에 포함될 수 있다. 제1 메모리 장치는 크로스 포인트 어레이 메모리 장치일 수 있다. 제2 메모리 장치는 DRAM, SDRAM 또는 임의의 다른 휘발성 메모리 또는 그 임의의 조합일 수 있다.
동작(210)에서, 처리 로직은 메모리 장치(140)에 저장된 데이터의 세그먼트들의 액세스 통계를 추적하며, 여기서 세그먼트들은 제1 입도를 갖는다. 제1 입도는 섹터 캐시(142)에 의해 이용될 수 있다. 데이터의 세그먼트들은 하나 이상의 섹터들 또는 섹터 그룹을 포함할 수 있다. 통계 데이터는 데이터에 대한 액세스 횟수, 데이터에 대한 액세스 속도(예를 들어, 히트율 또는 데이터가 액세스되는 빈도) 등을 포함할 수 있다. 일부 실시예들에서, 데이터는 예를 들어 각 섹터 또는 섹터 그룹에 대해 설정된 유효 비트 수 및 각 섹터 또는 섹터 그룹에 대해 설정된 더티 비트 수와 같은 메타데이터와 연관될 수 있다.
동작(220)에서, 처리 로직은 액세스 통계에 기초하여 메모리 장치(140)에 저장된 데이터의 세그먼트를 제1 입도에서 제2 입도로 업데이트하도록 결정한다. 제2 입도는 페이지 캐시(144)에 의해 이용될 수 있고, 제1 입도보다 클 수 있다. 처리 로직은 액세스 통계가 임계 기준을 충족할 때 데이터의 세그먼트를 제1 입도에서 제2 입도로 업데이트하도록 결정할 수 있다. 일 예에서, 처리 로직은 총 조회 수가 액세스 임계값의 수를 충족하거나 초과할 때 임계 기준이 충족된다고 결정할 수 있다. 다른 예에서, 처리 로직은 액세스 속도가 액세스 임계값의 속도를 충족하거나 초과할 때 임계 기준이 충족된다고 결정할 수 있다. 일부 실시예들에서, 처리 로직은 먼저 축출 정책에 기초하여 페이지 캐시(144) 및/또는 섹터 캐시(142)로부터 가장 최근에 사용된 데이터를 축출할 수 있다.
블록(230)에서, 처리 로직은 메모리 장치(130)로부터 데이터의 세그먼트와 연관된 추가 데이터를 검색한다. 추가 데이터는 섹터 캐시(142)에 존재하지 않았던 페이지의 대응하는 섹터들을 포함할 수 있다.
블록(240)에서, 처리 로직은 추가 데이터 및 데이터의 세그먼트를 포함하는 새로운 세그먼트를 형성하기 위해 제2 메모리 장치에 추가 데이터를 저장한다. 새로운 세그먼트는 제2 입도를 가질 수 있다. 일 예에서, 업데이트는 축출된 페이지의 물리적 어드레스를 식별하고, 새로운 세그먼트의 물리적 어드레스를 식별하고, 새로운 세그먼트의 물리적 어드레스를 가장 최근에 사용된 페이지의 물리적 어드레스와 교환하는 것을 포함한다.
도 3은 본 개시의 일부 실시예들에 따른, 페이지 캐시 미스 및 섹터 캐시 미스에 응답하여 동작들을 수행하는 예시적인 방법(300)의 흐름도이다. 방법(300)은 하드웨어(예를 들어, 처리 장치, 회로부, 전용 로직, 프로그램 가능 로직, 마이크로코드, 장치의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 장치에서 실행되거나 수행된 명령어들) 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시예들에서, 방법(300)은 도 1의 캐시 매니저(113)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되어 있지만, 달리 명시되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 예들로서만 이해되어야 하며, 예시된 프로세스들은 다른 순서로 수행될 수 있으며, 일부 프로세스들은 병렬로 수행될 수 있다. 추가로, 하나 이상의 프로세스들은 다양한 실시예들에서 생략될 수 있다. 따라서, 모든 프로세스들이 모든 실시예에서 필요한 것은 아니다. 다른 프로세스 흐름들이 가능하다.
동작(310)에서, 페이지 캐시(144) 조회 미스 및 섹터 캐시(142) 조회 미스에 응답하여, 처리 로직은 축출을 위해 섹터 캐시(142) 내의 섹터를 선택할 수 있다. 축출은 축출 정책(예를 들어, 섹터 기반 축출 또는 페이지 기반 축출)을 기반으로 할 수 있다. 처리 로직은 임계 기준을 충족하는 LRU 데이터에 기초하여 섹터를 선택할 수 있다. 예를 들어, 처리 로직은 가장 낮은 LRU 값을 갖는 섹터 또는 임계값 미만의 LRU 값을 갖는 섹터를 선택할 수 있다.
동작(320)에서, 처리 로직은 선택된 섹터가 더티 비트를 포함하는지 여부를 결정한다. 더티 비트는 섹터가 섹터 캐시(142)에서 수정되어 메모리 장치(130)에 다시 기입되어야 하는지 여부를 나타낼 수 있다. 선택된 섹터가 더티 비트를 포함한다는 결정에 응답하여, 처리 로직은, 동작(330)에서, 섹터 기반 축출 또는 페이지 기반 축출일 수 있는 축출 모드 유형을 결정한다. 축출 모드는 섹터와 관련된 섹터 그룹의 휴리스틱스가 임계 기준을 충족하는지 여부, 섹터 그룹의 유효 비트 세트 수가 임계 기준을 충족하는지 여부, 섹터 그룹의 더티 비트 수가 임계 기준을 충족하는지 여부, 또는 그 임의의 조합을 결정함으로써 선택될 수 있다. 예를 들어, 처리 로직은 휴리스틱스, 유효 비트 세트의 수 및/또는 더티 비트 세트의 수가 각각의 임계값을 초과하는지 여부를 결정할 수 있다. 선택된 섹터가 더티 비트를 포함하지 않는다면, 처리 로직은 동작(360)으로 진행한다.
축출 모드 유형이 페이지 기반이라고 결정하는 것에 응답하여, 처리 로직은, 동작(340)에서, 선택된 섹터의 데이터를 페이지 캐시(144)로 전송(예를 들어, 복사)한다. 축출 모드 유형이 섹터 기반이라고 결정하는 것에 응답하여, 처리 로직은, 동작(350)에서, 선택된 섹터의 데이터를 비휘발성 메모리 장치(예를 들어, 메모리 장치(130))로 전송한다.
동작(360)에서, 처리 로직은 섹터 캐시(142)로부터 선택된 섹터를 축출한다. 동작(370)에서, 처리 로직은 페이지 캐시 조회 미스 및 섹터 캐시 조회 미스와 연관된 새로운 섹터를 섹터 캐시(142)로 판독한다. 새로운 섹터는 추가 제거 절차들을 위해 LRU 값과 연관될 수 있다.
도 4는 본 개시의 일부 실시예들에 따른, 삭제(clean) 동작을 수행하는 예시적인 방법(400)의 흐름도이다. 방법(400)은 하드웨어(예를 들어, 처리 장치, 회로부, 전용 로직, 프로그램 가능 로직, 마이크로코드, 장치의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 장치에서 실행되거나 수행된 명령어들) 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시예들에서, 방법(400)은 도 1의 캐시 매니저(113)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되어 있지만, 달리 명시되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 예들로서만 이해되어야 하며, 예시된 프로세스들은 다른 순서로 수행될 수 있으며, 일부 프로세스들은 병렬로 수행될 수 있다. 추가로, 하나 이상의 프로세스들은 다양한 실시예들에서 생략될 수 있다. 따라서, 모든 프로세스들이 모든 실시예에서 필요한 것은 아니다. 다른 프로세스 흐름들이 가능하다. 예로서, 도 4는 섹터 캐시(142)의 섹터들을 논의할 것이다. 그러나, 방법(400)은 페이지 캐시(144)의 페이지들에 대해 유사하게 수행될 수 있다.
동작(410)에서, 섹터 캐시(142)에 대한 메모리 액세스에 응답하여, 처리 로직은 섹터 캐시에 있는 각 섹터의 각 LRU 값을 업데이트할 수 있다. LRU 값은 페이지가 호스트 시스템(120)에 의해 가장 최근에 액세스되었는지 여부를 나타내는 데 사용될 수 있다. 예를 들어, 섹터가 액세스될 때, 해당 섹터에 대한 LRU 값은 미리 결정된 값(예를 들어, 15)으로 설정될 수 있다. 섹터 캐시(144)의 다른 모든 섹터에 대한 LRU 값들은 일정 양만큼(예를 들어, 1만큼) 감소될 수 있다.
동작(420)에서, 처리 로직은 섹터 캐시(142) 내의 섹터와 연관된 LRU 값이 임계 기준을 충족한다고 결정할 수 있다. 예를 들어, 처리 로직은 LRU 값이 임계값 이하인지 여부를 결정할 수 있다.
동작(430)에서, 섹터가 더티 비트를 포함한다고 결정하는 것에 응답하여, 처리 로직은 섹터로부터 비휘발성 메모리 장치(예를 들어, 메모리 장치(130))로 데이터를 복사할 수 있다. 더티 비트는 섹터가 섹터 캐시(142)에서 수정되었는지 여부를 나타낼 수 있다.
동작(440)에서, 처리 로직은 더티 비트를 삭제할 수 있다. 일 예에서, 더티 비트는 1에서 0으로 더티 비트를 설정함으로써 삭제된다. 섹터의 LRU 값은 미리 결정된 값으로 리셋되지 않음에 유의한다.
도 5는 본 개시의 일부 실시예들에 따른, 데이터 캐시들을 추적 및 관리하기 위한 또 다른 예시적인 방법(500)의 흐름도이다. 방법(500)은 하드웨어(예를 들어, 처리 장치, 회로부, 전용 로직, 프로그램 가능 로직, 마이크로코드, 장치의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 장치에서 실행되거나 수행된 명령어들) 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시예들에서, 방법(500)은 도 1의 캐시 매니저(113)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되어 있지만, 달리 명시되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 예들로서만 이해되어야 하며, 예시된 프로세스들은 다른 순서로 수행될 수 있으며, 일부 프로세스들은 병렬로 수행될 수 있다. 추가로, 하나 이상의 프로세스들은 다양한 실시예들에서 생략될 수 있다. 따라서, 모든 프로세스들이 모든 실시예에서 필요한 것은 아니다. 다른 프로세스 흐름들이 가능하다.
동작(510)에서, 처리 로직은 메모리 장치(130)에서 호스트 데이터 세트를 유지한다. 동작(520)에서, 처리 로직은 메모리 장치(140)에서 호스트 데이터의 서브셋을 유지한다. 메모리 장치(140)는 메모리 장치(130)보다 낮은 액세스 레이턴시를 가질 수 있고, 메모리 장치(130)에 대한 캐시로 사용될 수 있다. 메모리 장치(140)는 호스트 데이터의 서브셋의 제1 세그먼트들에 대한 메타데이터를 유지하고, 제1 세그먼트들은 제1 크기를 갖는다. 일 예에서, 제1 세그먼트들은 섹터들을 포함한다.
동작(530)에서, 처리 로직은 호스트 데이터의 서브셋의 적어도 하나의 제1 세그먼트의 하나 이상의 액세스 통계가 임계 기준을 충족한다고 결정한다. 예를 들어, 처리 로직은 총 조회 수가 액세스 임계값의 수를 초과할 때 임계 기준이 충족된다고 결정할 수 있다. 다른 예에서, 처리 로직은 액세스 속도가 액세스 임계값의 속도를 초과할 때 임계 기준이 충족된다고 결정할 수 있다. 일부 실시예들에서, 처리 로직은 먼저 축출 정책에 기초하여 페이지 캐시(144) 및/또는 섹터 캐시(142)로부터 가장 최근에 사용된 데이터를 축출할 수 있다.
동작(540)에서, 처리 로직은 호스트 데이터의 서브셋의 하나 이상의 제1 세그먼트들을 제2 세그먼트로서 함께 연관시킬 수 있다. 하나 이상의 제1 세그먼트들은 적어도 하나의 제1 세그먼트를 포함할 수 있다. 메모리 장치(140)는 호스트 데이터의 제2 세그먼트에 대한 메타데이터를 유지할 수 있다. 제2 세그먼트는 제2 크기를 가질 수 있다. 예를 들어, 제2 세그먼트는 페이지일 수 있다.
도 6은 기계가 본원에 논의된 방법론들 중 임의의 하나 이상을 수행하게 하는 명령어 세트가 실행될 수 있는 컴퓨터 시스템(600)의 예시적인 기계를 예시한다. 일부 실시예들에서, 컴퓨터 시스템(600)은 메모리 서브 시스템(예를 들어, 도 1의 메모리 서브 시스템(110))을 포함하거나 이를 활용하는 호스트 시스템(예를 들어, 도 1의 호스트 시스템(120))에 대응할 수 있거나, 컨트롤러의 동작들을 수행하는 데(예를 들어, 운영 체제를 실행하여 도 1의 캐시 매니저(113)에 대응되는 동작들을 수행하는 데) 사용될 수 있다. 대안적인 실시예들에서, 기계는 LAN, 인트라넷, 엑스트라넷 및/또는 인터넷의 다른 기계들에 연결(예를 들어, 네트워킹)될 수 있다. 기계는 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 기계의 용량으로, 피어 투 피어(또는 분배) 네트워크 환경에서의 피어 기계로, 또는 클라우드 컴퓨팅 인프라스트럭처 또는 환경에서의 서버 또는 클라이언트 기계로 동작할 수 있다.
기계는 개인용 컴퓨터(PC), 태블릿 PC, 셋톱박스(STB), 개인용 디지털 보조 장치(PDA), 셀룰러 텔레폰, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브릿지, 또는 해당 기계에 의해 수행될 조치들을 명시하는 명령어 세트(순차적 또는 다른 방식)을 실행할 수 있는 임의의 기계일 수 있다. 또한, 단일 기계가 예시되어 있지만, "기계"라는 용어는 또한 본원에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 명령어 세트(또는 복수 세트)를 개별적으로 또는 공통으로 실행하는 임의의 기계 컬렉션을 포함하는 것으로 간주해야 한다.
예시적인 컴퓨터 시스템(600)은 버스(630)를 통해 서로 통신하는, 처리 장치(602), 메인 메모리(604)(예를 들어, 읽기 전용 메모리(ROM), 플래시 메모리, 동기식 DRAM(SDRAM) 또는 램버스 DRAM(RDRAM)과 같은 동적 랜덤 액세스 메모리(DRAM) 등), 정적 메모리(606)(예를 들어, 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM) 등) 및 데이터 저장 시스템(618)을 포함한다. 처리 장치(602)는 마이크로프로세서, 중앙 처리 장치 등과 같은 하나 이상의 범용 처리 장치들을 나타낸다. 보다 구체적으로, 처리 장치는 CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서, 또는 명령어 세트들을 구현하는 프로세서, 또는 명령어 세트들의 조합을 구현하는 프로세서들일 수 있다. 처리 장치(602)는 또한 애플리케이션별 집적 회로(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 처리 장치들일 수 있다. 처리 장치(602)는 본원에 논의된 동작들 및 단계들을 수행하기 위한 명령어들(626)을 수행하도록 구성된다. 컴퓨터 시스템(600)은 네트워크(620)를 통해 통신하기 위한 네트워크 인터페이스 장치(608)를 더 포함할 수 있다.
데이터 저장 시스템(618)는 본원에 설명된 방법들 또는 기능들 중 임의의 하나 이상을 구현하는 하나 이상의 명령어 세트(626) 또는 소프트웨어가 저장되는 기계 판독 가능 저장 매체(624)(컴퓨터 판독 가능 매체로도 알려짐)를 포함할 수 있다. 명령어들(626)은 또한 기계 판독 가능 저장 매체를 구성하는 컴퓨터 시스템(600), 메인 메모리(604) 및 처리 장치(602)에 의한 실행 동안 메인 메모리(604) 내에 및/또는 처리 장치(602) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 기계 판독 가능 저장 매체(624), 데이터 저장 시스템(618) 및/또는 메인 메모리(604)는 도 1의 메모리 서브 시스템(110)에 대응될 수 있다.
일 실시예에서, 명령어들(626)은 도 1의 캐시 매니저(113)에 대응하는 기능을 구현하기 위한 명령어들을 포함한다. 기계 판독 가능 저장 매체(624)가 예시적인 실시에서 단일 매체인 것으로 도시되어 있지만, "기계 판독 가능 저장 매체"라는 용어는 하나 이상의 명령어 세트들을 저장하는 단일 매체 또는 다중 매체를 포함하는 것으로 간주되어야 한다. "기계 판독 가능 저장 매체"라는 용어는 또한 기계에 의해 실행되는 명령어 세트를 저장 또는 인코딩할 수 있고 기계가 본 개시의 방법들 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 간주되어야 한다. 따라서 "기계 판독 가능 저장 매체"라는 용어는, 이에 제한되는 것은 아니나, 솔리드 스테이트 메모리, 광학 매체 및 자기 매체를 포함하는 것으로 간주되어야 한다.
전술한 상세한 설명의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 연산의 알고리즘 및 상징적 표현들과 관련하여 제시되었다. 이러한 알고리즘적 설명들 및 표현들은 데이터 처리 분야의 당업자가 그들 작업의 실체를 다른 당업자에게 가장 효과적으로 전달하기 위해 사용되는 방식들이다. 여기서, 알고리즘은 일반적으로 원하는 결과를 도출하는 자기 모순 없는(self-consistent) 동작 시퀀스인 것으로 생각된다. 동작들은 이러한 물리적 수량의 물리적 조작을 필요로 한다. 일반적으로, 반드시 그런 것은 아니지만, 이러한 양은 저장되고, 결합되고, 비교되고 아니면 조작될 수 있는 전기 또는 자기 신호들의 형태를 취한다. 이러한 신호들을 비트, 값, 요소, 심볼, 문자, 용어, 숫자 등으로 지칭하는 것이, 주로 일반적인 사용의 이유로, 때때로 편리한 것으로 입증되었다.
그러나, 이러한 및 유사한 용어들 모두는 적절한 물리적 양과 관련이 있으며 이러한 양에 적용되는 편리한 라벨들일 뿐이라는 점을 명심해야 한다. 본 개시는 컴퓨터 시스템의 레지스터들과 메모리들 내에서 물리적(전자적) 양으로 표현되는 데이터를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장 시스템들 내의 물리적 양으로 표현되는 다른 데이터로 조작하고 변환하는 컴퓨터 시스템 또는 이와 유사한 전자 컴퓨팅 장치의 동작 및 프로세스들을 인용할 수 있다.
본 개시는 또한 본원에서 동작들을 수행하기 위한 장치에 관한 것이다. 이 장치는 의도된 목적들을 위해 특별히 구성될 수 있거나, 이는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성된 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은, 이에 제한되는 것은 아니나, 플로피 디스크, 광 디스크, CD-ROM, 및 자기-광학 디스크, 읽기 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), EPROM, EEPROM, 자기 또는 광학 카드, 또는 각각 컴퓨터 시스템 버스에 연결된 전자 명령어들을 저장하기에 적합한 임의의 유형의 매체를 포함하는 임의 유형의 디스크와 같은 컴퓨터 판독 가능 저장 매체에 저장될 수 있다.
본원에 제시된 알고리즘들 및 디스플레이들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치와 관련되지 않는다. 다양한 범용 시스템들은 본원의 교시에 따른 프로그램들과 함께 사용될 수 있거나, 방법을 수행하기 위해 다 특화된 장치를 구성하는 것이 편리하다는 것을 입증할 수 있다. 다양한 이들 시스템들의 구조는 아래의 설명에서 제시되는 것으로 나타날 것이다. 또한, 본 개시는 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어들이 본원에 기술된 바와 같이 본 개시의 교시를 구현하는 데 사용될 수 있음이 이해될 것이다.
본 개시는 본 개시에 따른 프로세스를 수행하기 위해 컴퓨터 시스템(또는 다른 전자 장치)를 프로그래밍하는 데 사용될 수는, 명령어들을 저장한 기계 판독 가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 기계 판독 가능 매체는 기계(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 예를 들어, 기계 판독 가능(예를 들어, 컴퓨터 판독 가능) 매체는 읽기 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 장치들 등과 같은 기계(예를 들어, 컴퓨터) 판독 가능 저장 매체를 포함한다.
전술한 명세서에서, 본 개시의 실시예들은 그 특정 예시적인 실시예들을 참조하여 설명되었다. 다음의 청구 범위에 명시된 본 개시의 실시예들의 넓은 사상 및 범위를 벗어나지 않고 다양한 변형들이 이루어질 수 있음이 명백할 것이다. 따라서, 명세서 및 도면들은 제한적인 의미보다는 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 시스템에 있어서,
    제1 메모리 장치;
    상기 제1 메모리 장치에 결합된 제2 메모리 장치로서, 상기 제2 메모리 장치는 상기 제1 메모리 장치보다 낮은 액세스 레이턴시를 가지며 상기 제1 메모리 장치를 위한 캐시로서 사용되는, 상기 제2 메모리 장치; 및
    상기 제1 및 제2 메모리 장치들에 동작 가능하게 결합된 처리 장치로서,
    상기 제2 메모리 장치에 저장된 데이터의 세그먼트들의 액세스 통계를 추적하는 단계로서, 상기 세그먼트들은 제1 입도를 갖는, 상기 추적하는 단계;
    상기 액세스 통계에 기초하여, 상기 제2 메모리 장치에 저장된 데이터의 세그먼트를 상기 제1 입도에서 제2 입도로 업데이트하도록 결정하는 단계;
    상기 제1 메모리 장치로부터 상기 데이터의 세그먼트와 연관된 추가 데이터를 검색하는 단계; 및
    상기 추가 데이터 및 상기 데이터의 세그먼트를 포함하는 새로운 세그먼트를 형성하기 위해 상기 제2 메모리 장치에 상기 추가 데이터를 저장하는 단계로서, 상기 새로운 세그먼트는 상기 제2 입도를 갖는, 상기 저장하는 단계를 포함하는 동작들을 수행하도록 하는, 상기 처리 장치를 포함하는, 시스템.
  2. 제1항에 있어서, 상기 제1 메모리 장치, 제2 메모리 장치 및 상기 처리 장치는 하이브리드 듀얼 인-라인 메모리 모듈 내에 포함되며, 상기 제1 메모리 장치는 크로스 포인트 어레이 메모리 장치인, 시스템.
  3. 제1항에 있어서, 상기 처리 장치는,
    상기 제2 메모리 장치로부터 제2 입도를 갖는 오래된 세그먼트를 축출하는 단계를 포함하는 동작들을 더 수행하도록 하는, 시스템.
  4. 제3항에 있어서, 상기 처리 장치는,
    상기 오래된 세그먼트의 물리적 어드레스를 식별하는 단계;
    상기 새로운 세그먼트의 물리적 어드레스를 식별하는 단계; 및
    상기 새로운 세그먼트의 물리적 어드레스를 상기 오래된 세그먼트의 물리적 어드레스와 교환하는 단계를 포함하는 추가 동작들을 수행하도록 하는, 시스템.
  5. 제3항에 있어서, 상기 축출하는 단계는 LRU 데이터에 기초하는, 시스템.
  6. 제1항에 있어서, 상기 제1 입도에서 상기 제2 입도로 상기 제2 메모리 장치에 저장된 상기 데이터를 업데이트하도록 결정하는 단계는,
    상기 액세스 통계로부터의 총 조회 수가 임계 기준을 충족한다고 결정하는 단계를 포함하는, 시스템.
  7. 제1항에 있어서, 상기 데이터의 세그먼트는 유효 비트 또는 더티 비트 중 적어도 하나와 연관되는, 시스템.
  8. 방법에 있어서,
    메모리 서브 시스템의 제1 메모리 장치에서 호스트 데이터 세트를 유지하는 단계;
    상기 메모리 서브 시스템의 제2 메모리 장치에서 상기 호스트 데이터의 서브셋을 유지하는 단계로서, 상기 제2 메모리 장치는 상기 제1 메모리 장치보다 낮은 액세스 레이턴시를 가지며, 상기 제1 메모리 장치를 위한 캐시로서 사용되며, 상기 제2 메모리 장치는 상기 호스트 데이터의 상기 서브셋의 제1 세그먼트들에 대한 메타데이터를 유지하고, 상기 제1 세그먼트들은 제1 크기를 갖는, 상기 유지하는 단계;
    상기 호스트 데이터의 상기 서브셋의 적어도 하나의 제1 세그먼트의 하나 이상의 액세스 통계가 임계 기준을 충족시킨다고 결정하는 단계; 및
    상기 호스트 데이터의 상기 서브셋의 복수의 제1 세그먼트들을 제2 세그먼트로서 함께 연관시키는 단계로서, 상기 복수의 제1 세그먼트들은 상기 적어도 하나의 제1 세그먼트를 포함하며, 상기 제2 메모리 장치는 상기 호스트 데이터의 상기 제2 세그먼트에 대한 메타데이터를 유지하고, 상기 제2 세그먼트는 제2 크기를 갖는, 상기 연관시키는 단계를 포함하는, 방법.
  9. 제8항에 있어서, 상기 제1 메모리 장치, 제2 메모리 장치 및 상기 처리 장치는 하이브리드 듀얼 인-라인 메모리 모듈 내에 포함되며, 상기 제2 메모리 장치는 크로스 포인트 어레이 메모리 장치인, 방법.
  10. 제8항에 있어서,
    상기 제2 메모리 장치로부터 제2 입도를 갖는 오래된 세그먼트를 축출하는 단계를 더 포함하는, 방법.
  11. 제10항에 있어서,
    상기 오래된 세그먼트의 물리적 어드레스를 식별하는 단계;
    상기 새로운 세그먼트의 물리적 어드레스를 식별하는 단계; 및
    새로운 세그먼트의 상기 물리적 어드레스를 상기 오래된 세그먼트의 상기 물리적 어드레스와 교환하는 단계를 더 포함하는, 방법.
  12. 제10항에 있어서, 상기 축출하는 단계는 LRU 데이터에 기초하는, 방법.
  13. 제8항에 있어서, 상기 데이터의 세그먼트는 유효 비트 또는 더티 비트 중 적어도 하나와 연관되는, 방법.
  14. 비일시적 컴퓨터 판독 가능 저장 매체로서, 제1 메모리 장치 및 제2 메모리 장치에 동작 가능하게 결합된 처리 장치에 의해 실행 시,
    상기 제2 메모리 장치에 저장된 데이터의 세그먼트들의 액세스 통계를 추적하는 단계로서, 상기 세그먼트들은 제1 입도를 갖는, 상기 추적하는 단계;
    상기 액세스 통계에 기초하여, 상기 제2 메모리 장치에 저장된 데이터의 세그먼트를 상기 제1 입도에서 제2 입도로 업데이트하도록 결정하는 단계;
    상기 제1 메모리 장치로부터 상기 데이터의 세그먼트와 연관된 추가 데이터를 검색하는 단계; 및
    상기 추가 데이터 및 상기 데이터의 세그먼트를 포함하는 새로운 세그먼트를 형성하기 위해 상기 제2 메모리 장치에 상기 추가 데이터를 저장하는 단계로서, 상기 새로운 세그먼트는 상기 제2 입도를 갖는, 상기 저장하는 단계를 포함하는 동작들을 수행하는, 명령어들을 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  15. 제14항에 있어서, 상기 제1 메모리 장치, 상기 제2 메모리 장치 및 상기 처리 장치는 하이브리드 듀얼 인-라인 메모리 모듈 내에 포함되며, 상기 제1 메모리 장치는 크로스 포인트 어레이 메모리 장치인, 비일시적 컴퓨터 판독 가능 저장 매체.
  16. 제14항에 있어서, 상기 처리 장치는,
    상기 제2 메모리 장치로부터 제2 입도를 갖는 오래된 세그먼트를 축출하는 단계를 포함하는 추가 동작들을 수행하도록 하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  17. 제16항에 있어서, 상기 처리 장치는,
    상기 오래된 세그먼트의 물리적 어드레스를 식별하는 단계;
    상기 새로운 세그먼트의 물리적 어드레스를 식별하는 단계; 및
    상기 새로운 세그먼트의 물리적 어드레스를 상기 오래된 세그먼트의 물리적 어드레스와 교환하는 단계를 포함하는 추가 동작들을 수행하도록 하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  18. 제16항에 있어서, 상기 축출하는 단계는 LRU 데이터에 기초하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  19. 제14항에 있어서, 상기 세그먼트 데이터는 유효 비트 또는 더티 비트 중 적어도 하나와 연관되는, 비일시적 컴퓨터 판독 가능 저장 매체.
  20. 제14항에 있어서, 상기 제1 입도에서 상기 제2 입도로 상기 제2 메모리 장치에 저장된 상기 데이터를 업데이트하도록 결정하는 단계는,
    상기 액세스 통계로부터의 총 조회 수가 임계 기준을 충족한다고 결정하는 단계를 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
KR1020227012661A 2019-09-20 2020-09-17 하이브리드 dimm에서의 비휘발성 메모리를 위한 낮은 레이턴시 캐시 KR20220062629A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962903198P 2019-09-20 2019-09-20
US62/903,198 2019-09-20
US17/003,331 US11397683B2 (en) 2019-09-20 2020-08-26 Low latency cache for non-volatile memory in a hybrid DIMM
US17/003,331 2020-08-26
PCT/US2020/051299 WO2021055624A1 (en) 2019-09-20 2020-09-17 Low latency cache for non-volatile memory in a hybrid dimm

Publications (1)

Publication Number Publication Date
KR20220062629A true KR20220062629A (ko) 2022-05-17

Family

ID=74881850

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227012661A KR20220062629A (ko) 2019-09-20 2020-09-17 하이브리드 dimm에서의 비휘발성 메모리를 위한 낮은 레이턴시 캐시

Country Status (5)

Country Link
US (1) US11397683B2 (ko)
KR (1) KR20220062629A (ko)
CN (1) CN114600092A (ko)
DE (1) DE112020004442T5 (ko)
WO (1) WO2021055624A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200125495A1 (en) * 2019-12-19 2020-04-23 Intel Corporation Multi-level memory with improved memory side cache implementation
CN113312275A (zh) * 2020-02-27 2021-08-27 华为技术有限公司 内存设备的数据处理方法、装置和系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6925526B2 (en) * 2002-10-31 2005-08-02 International Business Machines Corporation Method and apparatus for servicing mixed block size data access operations in a disk drive data storage device
US7117309B2 (en) * 2003-04-14 2006-10-03 Hewlett-Packard Development Company, L.P. Method of detecting sequential workloads to increase host read throughput
JP4819369B2 (ja) * 2005-02-15 2011-11-24 株式会社日立製作所 ストレージシステム
US7467280B2 (en) * 2006-07-05 2008-12-16 International Business Machines Corporation Method for reconfiguring cache memory based on at least analysis of heat generated during runtime, at least by associating an access bit with a cache line and associating a granularity bit with a cache line in level-2 cache
US7596643B2 (en) 2007-02-07 2009-09-29 Siliconsystems, Inc. Storage subsystem with configurable buffer
US8161240B2 (en) 2007-10-10 2012-04-17 Apple Inc. Cache management
TWI470431B (zh) * 2013-06-14 2015-01-21 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
US20150081981A1 (en) 2013-09-19 2015-03-19 Netapp, Inc. Generating predictive cache statistics for various cache sizes
US9292444B2 (en) * 2013-09-26 2016-03-22 International Business Machines Corporation Multi-granular cache management in multi-processor computing environments
US10048883B2 (en) * 2014-09-29 2018-08-14 Dell Products, Lp Integrated page-sharing cache storing a single copy of data where the data is stored in two volumes and propagating changes to the data in the cache back to the two volumes via volume identifiers
US10621104B2 (en) 2015-09-25 2020-04-14 Hewlett Packard Enterprise Development Lp Variable cache for non-volatile memory
KR20180044635A (ko) 2016-10-24 2018-05-03 삼성전자주식회사 저장 시스템 및 그것의 동작 방법
US10990534B2 (en) * 2019-01-31 2021-04-27 Intel Corporation Device, system and method to facilitate disaster recovery for a multi-processor platform

Also Published As

Publication number Publication date
US20210089454A1 (en) 2021-03-25
DE112020004442T5 (de) 2022-06-23
US11397683B2 (en) 2022-07-26
WO2021055624A1 (en) 2021-03-25
CN114600092A (zh) 2022-06-07

Similar Documents

Publication Publication Date Title
US11119940B2 (en) Sequential-write-based partitions in a logical-to-physical table cache
US10908821B2 (en) Use of outstanding command queues for separate read-only cache and write-read cache in a memory sub-system
US11847058B2 (en) Using a second content-addressable memory to manage memory burst accesses in memory sub-systems
JP2023514307A (ja) 順次的にプログラムするメモリサブシステムにおける順次読み出し最適化
US20210357341A1 (en) Priority scheduling in queues to access cache data in a memory sub-system
US11914520B2 (en) Separate read-only cache and write-read cache in a memory sub-system
US11755495B2 (en) Storing a logical-to-physical mapping in NAND memory
CN115080458A (zh) 在存储器子系统中高速缓存逻辑到物理映射信息
US11397683B2 (en) Low latency cache for non-volatile memory in a hybrid DIMM
US11561902B2 (en) Cache operations in a hybrid dual in-line memory module
US11693781B2 (en) Caching or evicting host-resident translation layer based on counter
US11836076B2 (en) Implementing mapping data structures to minimize sequentially written data accesses
US20230102184A1 (en) Dynamically sized redundant write buffer with sector-based tracking
US11599466B2 (en) Sector-based tracking for a page cache
US11494306B2 (en) Managing data dependencies in a transfer pipeline of a hybrid dimm
US11314643B2 (en) Enhanced duplicate write data tracking for cache memory
CN114003518A (zh) 在具有高延迟后备存储的存储器子系统中管理存储器命令的处理