KR102335838B1 - 에너지-백 메모리에 대한 영구 기록 데이터 - Google Patents

에너지-백 메모리에 대한 영구 기록 데이터 Download PDF

Info

Publication number
KR102335838B1
KR102335838B1 KR1020207033983A KR20207033983A KR102335838B1 KR 102335838 B1 KR102335838 B1 KR 102335838B1 KR 1020207033983 A KR1020207033983 A KR 1020207033983A KR 20207033983 A KR20207033983 A KR 20207033983A KR 102335838 B1 KR102335838 B1 KR 102335838B1
Authority
KR
South Korea
Prior art keywords
data
pwrite
host
energy
persistent storage
Prior art date
Application number
KR1020207033983A
Other languages
English (en)
Other versions
KR20210003225A (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 KR20210003225A publication Critical patent/KR20210003225A/ko
Application granted granted Critical
Publication of KR102335838B1 publication Critical patent/KR102335838B1/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/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
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

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)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

영구 스토리지를 갖는 넌-에너지-백 메모리에서, 영구 기록들을 처리하기 위해 복잡한 프로토콜이 요구된다. 이 문제를 해결하기 위해, 영구 스토리지를 갖는 에너지-백 메모리에서 영구 기록들을 처리하기 위한 단순한 프로토콜을 제공하는 것이 제안된다.

Description

에너지-백 메모리에 대한 영구 기록 데이터
[0001] 본 특허 출원은 2018년 5월 1일자로 출원된 "PERSISTENT WRITE DATA FOR ENERGY-BACKED MEMORY"라는 명칭의 미국 정규 특허 출원 번호 제 15/968,738호의 우선권을 주장하며, 상기 출원은 본원의 양수인에게 양도되고, 그에 의해 그 전체가 인용에 의해 본원에 명백하게 포함된다.
[0002] 본 개시내용의 하나 이상의 양상들은 일반적으로 메모리 시스템들에 관한 것으로, 특히 에너지-백 메모리(energy-backed memory)들에 대한 영구 기록 데이터를 처리하는 것에 관한 것이다.
[0003] JEDEC(Joint Electron Device Engineering Council)에 정의된 기본 프로토콜은 넌-에너지-백(non-energy-backed) NVDIMM-P(non-volatile dual in-line memory module)를 포함한다. NVDIMM-P는, 각각의 기록이 고유 ID(WGID(Write Group ID))로 태깅될 때 영구 기록들을 처리하는 매우 복잡한 프로토콜이다.
[0004] NVDIMM-P에의 기록들은 일단 이들이 시스템 레벨에서 전력 손실을 견딜 수 있는(survive) DIMM 상의 도메인에 있으면 "영구적인" 것으로 간주된다. 기록들이 영구적일 때, 정전(power failure)은 더 이상 데이터 손실을 의미하지 않는다. 지속성을 보장하기 위한 한 가지 접근법은 넌-에너지-백 NVDIMM-P이다. 이 접근법에서, 호스트는, NVDIMM이, 정전이 발생했을 때, 호스트에 대한 완료 메시지와 함께 영구 스토리지로 이동시키도록 요구되는 선택된 기록들에 대해 명시적 커맨드들을 사용해야 한다. 전력 손실의 경우, NVDIMM 상의 휘발성 버퍼들 또는 캐시들에 여전히 있는 임의의 기록들이 손실될 것이다.
[0005] 호스트는 지속성을 요구하는 기록들에 PWRITE(영구 기록) 커맨드를 사용한다. NVDIMM은 이 커맨드를 사용하여, 전력 손실을 견디기 위해 영구 스토리지로 이동될 필요가 있는 버퍼들 또는 캐시들을 선택할 수 있다. NVDIMM은 또한, 정상 동작 동안 XWRITE들(정상 기록들)을 영구 스토리지로 이동시킬 수 있다. 그러나, 달리 특정되지 않는 한, 이들은 시스템 전력 손실을 견디도록 요구되지 않는다.
[0006] 넌-에너지-백 NVDIMM들의 경우, 버퍼들 및 임의의 캐시들의 데이터는 전력 손실의 경우 영구적인 것으로 고려되지 않는다. PWRITE 커맨드는 지속성이 요구될 때 사용될 수 있다. PWRITE 커맨드들을 발행할 시기를 결정하는 것은 호스트 제어기가 담당한다. 각각의 PWRITE 커맨드는 영구 기록 데이터가 연관될 특정 데이터 그룹을 식별하기 위한 트랜잭션 ID ― WGID(Write Group ID) ― 를 포함한다. 일단 영구 기록 동작이 시작되면, 호스트 제어기는 WGID에 기초하여 미해결 기록(outstanding write)들을 추적한다. 일단 주어진 WGID와 연관된 모든 데이터가 영구 스토리지에 기록되면, NVDIMM-P는 PWRITE 커맨드에 대해 W_PER(영구 기록) 응답을 발행한다.
[0007] 호스트는 또한 FLUSH 커맨드를 발행하여, NVDIMM-P에 휘발성 공간(캐시 및/또는 버퍼)으로부터 영구 스토리지로 모든 데이터를 이동시키도록 명령할 수 있다. 플러시 동작의 완료 시, NVDIMM은 W_PER 응답을 제공한다. 명시적 FLUSH 커맨드, 및 영구 비트(persist bit) '1'을 갖는 PWRITE를 통한 묵시적 플러시 요청 둘 다를 포함하는 플러시 요청들이 완료된다. W_PER이 수신된 이후에, 호스트는 SEND-W_PER 커맨드를 발행하여, 메시지 패킷을 통해 업데이트된 WGID 비트맵 상태를 리트리브(retrieve)하여 어떤 WGID가 완료되었는지를 체크할 수 있다. 호스트는 또한, XREAD-STATUS 커맨드를 사용하여 계류 중인(pending) WGID 비트맵을 요청할 수 있다.
[0008] 넌-에너지-백 NVDIMM-P는 두 가지 타입들의 WGID 비트 맵들을 지원한다. 제1 타입은 'WGID 완료 비트맵'이다. 일단 주어진 WGID와 연관된 모든 데이터가 영구 스토리지에 기록되면, NVDIMM에서 WGID 비트맵의 대응하는 비트는 '1'로 세팅된다. 일단 SEND-W_PER 커맨드에 대한 응답으로 'WGID 완료 비트맵'이 호스트에 전송되면, 비트맵은 NVDIMM에서 모두 '0'들로 리셋된다.
[0009] 제2 타입은 'WGID 계류 비트맵'이다. NVDIMM은 WGID 계류 비트맵에서 계류 중인 PWRITES(또는 FLUSH)를 수락하고 추적한다. 전력 가동(power up) 시, WGID 계류 비트맵은 모두 '0'들로 초기화되었다. NVDIMM은 새로운 WGID로 PWRITE(또는 FLUSH)를 수신할 시 WGID 비트의 상태를 '1'로 변경할 것이다. 일단 주어진 WGID와 연관된 모든 데이터가 영구 스토리지에 기록되면, WGID의 대응하는 비트는 '0'으로 마킹된다. XREAD 커맨드의 결과로서 WGID 계류 비트맵을 호스트에 전달하는 것은 WGID 계류 비트맵 내의 어떠한 WGID 비트들의 상태도 변경하지 않는다.
[0010] 호스트는 모드 레지스터를 세팅함으로써 'WGID 비트맵' 모드를 인에이블할 수 있다. 모드가 인에이블된 경우, NVDIMM은 WGID 완료 비트맵과 WGID 계류 비트맵 둘 다를 준비한다. 호스트는 SEND-W_PER 커맨드를 사용하여 WGID 완료 비트맵을 요청할 수 있으며, 상태에 대한 XREAD 커맨드를 사용하여 WGID 계류 비트맵을 요청할 수 있다.
[0011] 넌-에너지-백 NVDIMM-P에서, 호스트와 NVDIMM 사이에 많은 통신이 발생할 수 있다. 또한, 요구되는 부기(bookkeeping)(예컨대, WGID 완료 비트맵, WGID 계류 비트맵 등)가 많이 존재할 수 있다. 도 1은 호스트와 넌-에너지-백 NVDIMM-P 사이의 'WGIG 완료 비트맵' 흐름 제어(100)의 예를 예시한다:
1) 호스트는 WGID = 0인 PWRITE 또는 FLUSH를 발행한다;
2) 호스트는 WGID = 1인 다른 PWRITE 또는 FLUSH를 발행한다;
3) NVDIMM은 모든 데이터를 WGID = 1에 대한 영구 스토리지로 폐기하고, 그런 다음 W_PER를 어서트한다. 이 예에서는 잘못된 폐기가 허용되고 예시된다. NVDIMM은 'WGID 완료 비트맵'에서 WGID 비트 1을 '1'로 세팅한다.
4) NVDIMM은 모든 데이터를 WGID = 0에 대한 영구 스토리지로 폐기하고, 그런 다음 W_PER를 어서트한다. NVDIMM은 'WGID 완료 비트맵'에서 WGID 비트 0을 '1'로 세팅한다.
5) 호스트는 W_PER 카운트를 추적한다. W_PER 카운트 > 0이면, 호스트는 SEND-W_PER 상태 커맨드를 발행할 수 있다. 이러한 사례에서, 호스트는 2개의 W_PER들을 수신한 이후에 SEND-W_PER 커맨드를 발행한다.
6) NVDIMM은 '1'로 세팅된 비트 0 및 비트 1을 갖는 'WGID 완료 비트맵'을 전송한다. NVDIMM은 호스트에 전달된 'WGID 완료 비트맵' 내의 비트들을 리셋한다. 호스트는 W_PER 카운트를 2만큼 감소시키고, 2개의 WGID들을 해제(free up)한다. NVDIMM은 또한, 세팅된 하나의 비트만을 갖는 'WGID 완료 비트맵'을 전송하기 위한 옵션을 갖는다. 이러한 경우, W_PER 카운트는 여전히 > 0일 것이고, 호스트는 다른 SEND-W_PER 상태 커맨드를 발행할 수 있다.
[0012] 그런 다음, 넌-에너지-백 지속성 처리 하에, 호스트와 NVDIMM 사이에 많은 통신이 발생한다는 것을 알 수 있다. 또한, 요구되는 부기(예컨대, WGID 완료 비트맵, WGID 계류 비트맵 등)가 많이 존재할 수 있다. 요약해서 말하자면, 지속성 처리를 위한 넌-에너지-백 프로토콜은 복잡하다.
[0013] 이 요약은 일부 예시적 양상들의 특징들을 식별하며, 개시된 청구 대상의 배타적이거나 또는 완전한 설명이 아니다. 특징들 또는 양상들이 이 요약에 포함되는지 아니면 이 요약에서 생략되는지는 그러한 특징들의 상대적 중요성을 표시하는 것으로 의도되지는 않는다. 추가 특징들 및 양상들이 설명되며, 이 추가 특징들 및 양상들은 다음의 상세한 설명을 읽고 그 일부를 형성하는 도면들을 볼 때 당업자들에게 명백해질 것이다.
[0014] 예시적 장치가 개시된다. 장치는 에너지-백 메모리일 수 있다. 에너지-백 메모리는 데이터 버퍼, 영구 스토리지, 및 제어기를 포함할 수 있다. 데이터 버퍼는 휘발성일 수 있고, 영구 스토리지는 비-휘발성일 수 있다. 제어기는 에너지-백 메모리의 전반적 동작을 제어하도록 구성될 수 있다. 제어기는 호스트로부터 영구 기록 커맨드를 수신하도록 구성될 수 있고, 데이터 버퍼는 영구 기록 커맨드에 대응하는, 호스트로부터의 영구 기록 데이터를 수신하도록 구성될 수 있다. 제어기는 데이터 버퍼로부터의 대응하는 영구 기록 데이터를 영구 스토리지에 저장하도록 추가로 구성될 수 있다. 영구 기록 커맨드들은 대응하는 영구 기록 데이터가 영구적이도록 요구되는 커맨드들일 수 있다.
[0015] 장치의 예시적 방법이 개시된다. 장치는 데이터 버퍼 및 영구 스토리지를 포함하는 에너지-백 메모리일 수 있다. 데이터 버퍼는 휘발성일 수 있고, 영구 스토리지는 비-휘발성일 수 있다. 방법은 에너지-백 메모리에서, 영구 기록 커맨드 및 호스트로부터의 대응하는 영구 기록 데이터를 수신하는 단계를 포함할 수 있다. 대응하는 영구 기록 데이터는 에너지-백 메모리의 데이터 버퍼에서 수신될 수 있다. 방법은 또한, 에너지-백 메모리에 의해, 데이터 버퍼로부터의 대응하는 영구 기록 데이터를 에너지-백 메모리의 영구 스토리지에 저장하는 단계를 포함할 수 있다. 영구 기록 커맨드들은 대응하는 영구 기록 데이터가 영구적이도록 요구되는 커맨드들일 수 있다.
[0016] 다른 예시적 장치가 개시된다. 장치는 에너지-백 메모리일 수 있다. 에너지-백 메모리는 데이터 버퍼, 영구 스토리지, 및 제어기를 포함할 수 있다. 데이터 버퍼는 휘발성일 수 있고, 영구 스토리지는 비-휘발성일 수 있다. 제어기는 에너지-백 메모리의 전반적 동작을 제어하도록 구성될 수 있다. 제어기는 호스트로부터 영구 기록 커맨드를 수신하기 위한 수단을 포함할 수 있고, 데이터 버퍼는 영구 기록 커맨드에 대응하는, 호스트로부터의 영구 기록 데이터를 수신할 수 있다. 제어기는 또한 데이터 버퍼로부터의 대응하는 영구 기록 데이터를 영구 스토리지에 저장하기 위한 수단을 포함할 수 있다. 영구 기록 커맨드들은 대응하는 영구 기록 데이터가 영구적이도록 요구되는 커맨드들일 수 있다.
[0017] 첨부한 도면들은 개시된 청구 대상의 하나 이상의 양상들의 예들의 설명을 돕기 위해 제시되며, 예들의 제한이 아니라 단지 예들의 예시를 위해 제공된다:
[0018] 도 1은 넌-에너지-백 NVDIMM-P에서 수행되는 기존 프로토콜을 예시한다.
[0019] 도 2는 비-제한적 실시예에 따른 메모리 시스템의 예를 예시한다.
[0020] 도 3은 비-제한적 실시예에 따른 에너지-백 메모리의 예를 예시한다.
[0021] 도 4는 비-제한적 실시예에 따라 영구 기록들을 처리하기 위해 에너지-백 메모리에 의해 수행되는 예시적 프로세스의 흐름도를 예시한다.
[0022] 도 5는 비-제한적 실시예에 따라 플러시들을 처리하기 위해 에너지-백 메모리에 의해 수행되는 예시적 프로세스의 흐름도를 예시한다.
[0023] 도 6은 호스트 및 그 호스트에 데이지-체인(daisy-chain)된 복수의 디바이스들이 내부에 통합된 디바이스들의 예들을 예시한다.
[0024] 청구 대상의 양상들은 개시된 청구 대상의 특정 예들에 관한 다음의 설명 및 관련 도면들에서 제공된다. 대안들은 개시된 청구 대상의 범위로부터 벗어나지 않으면서 고안될 수 있다. 추가적으로, 잘 알려진 엘리먼트들은 관련된 세부사항들을 모호하게 하지 않도록 상세하게 설명되지 않거나 또는 생략될 것이다.
[0025] "예시적"이라는 용어는, "예, 사례 또는 예시로서 제공되는"을 의미하는 것으로 본원에서 사용된다. "예시적"으로서 본원에서 설명되는 임의의 실시예는 반드시 다른 실시예들에 비해 바람직하거나 또는 유리한 것으로서 해석되는 것은 아니다. 마찬가지로, "실시예들"이라는 용어는 개시된 청구 대상의 모든 실시예들이 논의된 특징, 이점, 또는 동작 모드를 포함하는 것을 요구하지 않는다.
[0026] 본원에서 사용되는 용어는 단지 특정 예들만을 설명하기 위한 것이며, 제한하도록 의도되는 것은 아니다. 본원에서 사용되는 바와 같이, 단수 형태들의 표현은 문맥상 달리 명백하게 표시되지 않는 한, 복수 형태들 역시 포함하도록 의도된다. "포함하다(comprises)", "포함하는(comprising)", "구비하다(includes)" 및/또는 "구비하는(including)"이라는 용어들은, 본원에서 사용될 때, 서술된 특징들, 인티저(integer)들, 프로세스들, 동작들, 엘리먼트들 및/또는 컴포넌트들의 존재를 특정하지만, 하나 이상의 다른 특징들, 인티저들, 프로세스들, 동작들, 엘리먼트들, 컴포넌트들 및/또는 이들의 그룹들의 존재 또는 부가를 배제하지 않는다는 것이 추가로 이해될 것이다.
[0027] 추가로, 많은 예들이, 예컨대, 컴퓨팅 디바이스의 엘리먼트들에 의해 수행될 액션(action)들의 시퀀스들과 관련하여 설명된다. 본원에서 설명된 다양한 액션들이 특정 회로들(예컨대, ASIC(application specific integrated circuit)들)에 의해, 하나 이상의 프로세서들에 의해 실행되는 프로그램 명령들에 의해 또는 이 둘의 조합에 의해 수행될 수 있다는 것이 인식될 것이다. 추가적으로, 본원에서 설명된 이러한 액션들의 시퀀스는, 실행 시에, 연관된 프로세서로 하여금 본원에서 설명된 기능을 수행하게 할 대응하는 컴퓨터 명령들의 세트가 저장된 임의의 형태의 컴퓨터 판독가능한 저장 매체 내에서 전적으로 구현되는 것으로 고려될 수 있다. 따라서, 다양한 양상들은 다수의 상이한 형태들로 구현될 수 있으며, 이들 모두는 청구되는 청구 대상의 범위 내에 있는 것으로 고려되었다. 또한, 본원에서 설명된 예들 각각에 대해, 임의의 그러한 예들의 대응하는 형태는 예컨대, 설명된 액션을 수행하도록 "구성되는 로직"으로서 본원에서 설명될 수 있다.
[0028] 넌-에너지-백 NVDIMM-P의 하나의 단점(수 개가 존재할 수 있음)은 지속성을 처리하기 위한 프로토콜이 복잡할 수 있다는 점이라는 것을 위의 설명으로부터 상기해보자. 이러한 그리고 다른 문제들을 다루기 위해, 하나 이상의 에너지-백 메모리들을 이용하는 것이 제안된다. 에너지-백 메모리는 휘발성 및 비-휘발성 스토리지들 둘 다를 포함하는 메모리인 것으로 정의될 수 있다(아래에서 추가로 제공된 세부사항들).
[0029] 에너지-백 NVDIMM들과 같은 에너지-백 메모리들을 사용함으로써, 지속성을 처리하기 위한 프로토콜이 훨씬 단순해질 수 있다. 예컨대, 하나의 주요 이점은, 일단 기록들이 에너지-백 메모리 상의 제어기에 성공적으로 전달되면 기록들이 영구적인 것으로 간주될 수 있다는 점이다. 넌-에너지-백 경우들과는 달리, 에너지-백 메모리들에는 WGID 지원이 필요하지 않다.
[0030] 도 2는 통신 레인(230)을 통해 에너지-백 메모리(220)와 통신하는 호스트(210)를 포함하는 메모리 시스템(200)의 예를 예시한다. 호스트(210) 및 에너지-백 메모리(220)는 별개의 디바이스들일 수 있거나, 또는 이들은 단일 디바이스에 함께 통합될 수 있다. 호스트(210)는 프로세서(또는 복수의 프로세서들) 또는 SoC(system-on-chip)일 수 있다. 언급된 바와 같이, 에너지-백 메모리(220)는 휘발성 및 비-휘발성 스토리지들 둘 다를 포함하는 메모리일 수 있다.
[0031] 통신 레인(230)은 CA(command/address lines)(232), DQ(data lines)(234) 및 RSP(response lines)(236)를 포함할 수 있다. CA(command/address lines)(232)는 호스트(210)로부터 에너지-백 메모리(220)로 커맨드 및 어드레스 신호들을 반송하도록 구성될 수 있다. DQ(data lines)(234)는 호스트(210)와 에너지-백 메모리(220) 사이에서 데이터 신호들을 반송하도록 구성될 수 있다(예컨대, 호스트(210)로부터 에너지-백 메모리(220)로 기록 데이터를 반송하도록, 그리고 에너지-백 메모리(220)로부터 호스트(210)로 판독 데이터를 반송하도록 구성될 수 있다). RSP(response lines)(236)는 에너지-백 메모리(220)로부터 호스트(210)로 응답 신호들을 반송하도록 구성될 수 있다.
[0032] 일단 기록 데이터가 시스템 레벨에서 전력 손실을 견딜 수 있는 에너지-백 메모리(220) 상의 도메인에 있으면, 에너지-백 메모리(220)에의 기록들은 "영구적인" 것으로 간주될 수 있다. 기록들이 영구적일 때, 정전은 더 이상 데이터 손실을 의미하지 않는다.
[0033] 제안된 에너지-백 접근법에서, 휘발성 스토리지 내의 기록들을 영구 스토리지로 이동시키기에 충분한 시간을 에너지-백 메모리(220)에 제공할 수 있는 백업 에너지 소스가 존재할 수 있다. 제안된 에너지-백 접근법에 따라, 호스트(210)는 대응하는 기록 데이터가 에너지-백 메모리(220)의 휘발성 스토리지로 이동되는 즉시, 기록이 영구적인 것으로 간주할 수 있다.
[0034] 에너지 백킹(energy backing)은 메모리 레벨 또는 시스템 레벨에서 제공될 수 있다. 메모리-기반 에너지 백킹의 경우, 에너지-백 메모리(220)에만 전력이 공급되는 것일 수 있다. 전력 손실의 경우, 통신 레인(230)에 대한 인터페이스들을 포함하는 시스템의 나머지는 계속 동작할 필요가 없다. 에너지-백 메모리(220)는 에너지 소스를 발견하고 관리할 수 있다.
[0035] 에너지-백 메모리(220)는 또한 에너지 소스 능력들 및 상태를 호스트(210)에 보고할 수 있다. 예컨대, 에너지-백 메모리(220)는 에너지 소스의 최소 이용가능한 에너지(예컨대, mWH)로 정의된 Backup_Energy_Min을 보고할 수 있다. 메모리-기반 에너지 백킹이 존재하지 않는 경우, 이 값은 0으로 보고될 수 있다. 에너지-백 메모리(220)는 필요에 따라 Backup_Energy_Min 정보를 업데이트된 상태로 유지할 수 있다. 다른 하나는 Backup_Energy_Status일 수 있으며, 이는 에러 정보뿐만 아니라 에너지 소스의 이용가능한 수명을 포함할 수 있다.
[0036] 시스템-기반 에너지 백킹의 경우, 에너지 소스는 시스템 레벨에 있을 수 있다. 전력 손실의 경우, 전체 시스템(또는 요구되는 서브세트)은 선택된 휘발성 컨텐츠를 영구 스토리지에 플러시(flush)하도록 요구되는 기간 동안 계속 동작할 수 있다. 시스템은 이 에너지 소스를 발견 및 관리할 수 있다. 발견의 일부로서, 시스템은 휘발성 컨텐츠를 에너지-백 메모리(220)의 영구 스토리지에 플러시하기 위한 이용가능한 백업 에너지를 결정할 수 있다.
[0037] 도 3은 에너지-백 메모리(220)의 비-제한적 예를 예시한다. NVDIMM-P는 에너지-백 메모리(220)의 예일 수 있다. 예시된 에너지-백 메모리(220)는 제어기(310), 데이터 버퍼(320), 캐시(330), 영구 스토리지(340) 및 백업 에너지(350)를 포함할 수 있다. 데이터 버퍼(320) 및 캐시(330)는 휘발성일 수 있다. 예컨대, 데이터 버퍼(320) 및 캐시(330)는 레지스터들, DRAM들, SRAM들 등을 포함할 수 있다. 다른 한편으로, 영구 스토리지(340)는 비-휘발성일 수 있다. 예컨대, 영구 스토리지(340)는 MRAM들, PCM, 플래시, SSD들 등을 포함할 수 있다.
[0038] 제어기(310) 및 데이터 버퍼(320)는 통신 레인(230)을 통해 호스트(210)와 인터페이싱하도록 구성될 수 있다. 특히, 제어기(310)는 호스트(210)로부터 커맨드/어드레스 라인들(232)을 통해 커맨드 및 어드레스 신호들을 수신하고, 응답 신호들을 응답 라인들(236)을 통해 호스트(210)에 전송할 수 있다. 데이터 버퍼(320)는 호스트(210)로부터 기록 데이터를 수신하고, 판독 데이터를 데이터 라인들(234)을 통해 호스트(210)에 제공할 수 있다.
[0039] 일 양상에서, 기록 데이터는 데이터 버퍼(320)로부터 영구 스토리지(340)로 직접 기록될 수 있고, 판독 데이터는 영구 스토리지(340)로부터 데이터 버퍼(320)로 직접 판독될 수 있다. 따라서, 캐시(330)는 절대적으로(strictly) 필요하지 않으며, 즉, 캐시(330)는 선택적인 것으로 간주될 수 있다.
[0040] 그러나, 캐시(330)에 대한 액세스들은 영구 스토리지(340)에 대한 액세스들보다 빠를 가능성이 있다. 따라서, 다른 양상에서, 캐시(330)는 영구 스토리지(340)의 액세스 레이턴시들을 숨기거나 또는 그렇지 않으면 완화하는 데 사용될 수 있다. 예컨대, 판독 시, 판독 데이터는 캐시(330)로부터 데이터 버퍼(320)로 판독될 수 있다(캐시 히트를 가정하면). 캐시 미스가 발생하면, 판독 데이터는 영구 스토리지(340)로부터 리트리브될 수 있다.
[0041] 기록 시, 기록 데이터는 데이터 버퍼(320)로부터 캐시(330)로 저장될 수 있다. 요구될 때, 기록 데이터는 또한, 동시-기록 캐시 정책을 통해 또는 후-기록 캐시 정책을 통해 영구 스토리지(340)에 저장될 수 있다. 호스트(210)는 어떤 정책을 에너지-백 메모리(220)에 구현할지를 특정할 수 있다. 동시-기록 캐시 정책에서, 데이터 버퍼(320)로부터의 기록 데이터는, 기록 데이터가 영구 스토리지(340)에 저장될 때까지 기록 데이터의 판독들이 발생하지 않도록, 캐시(330) 및 영구 스토리지(340)에 동시에 기록될 수 있다.
[0042] 후-기록 캐시 정책에서, 기록 데이터는 초기에 캐시(330)에 저장될 수 있다. 기록된 데이터는 영구 스토리지(340)에 동시에 기록될 필요가 없다. 기록 데이터는, 기록 데이터가 또한 영구 스토리지(340)에 저장되는지 아닌지에 관계없이 기록 데이터가 캐시(330)에 저장되는 즉시, 판독들에 이용가능할 수 있다.
[0043] 백업 에너지(350)는, 전력 손실이 발생할 때 데이터 버퍼(320) 및/또는 캐시(330)로부터의 컨텐츠들이 영구 스토리지(340)에 저장될 수 있도록, 백업 에너지를 제공하도록 구성될 수 있다. 백업 에너지(350)는 하나 이상의 커패시터들 및/또는 배터리들을 포함할 수 있다. 제어기(310)는 백업 에너지(350)에 대한 정보(예컨대, Backup_Energy_Min, Backup_Energy_Status 등)를 계속 유지하고, 그러한 정보를 호스트(210)에 보고한다. 제어기(310)는 전력 손실이 검출될 때 데이터 버퍼(320) 및/또는 캐시(330)를 영구 스토리지(340)에 플러시하기 위해 필요한 액션들을 수행하도록 구성될 수 있다.
[0044] 백업 에너지(350)는 백업 에너지(350)가 메모리-기반 에너지 백킹의 예라는 점에서 선택적일 수 있음에 주목한다. 시스템-기반 에너지 백킹이 구현되면, 백업 에너지(350)는 절대적으로 필요하지 않다. 물론, 백업 에너지(350)는 존재할 수 있고, 메모리-기반 및 시스템-기반 에너지 백킹 중 하나 또는 둘 다가 구현될 수 있다. 일 양상에서, 호스트(210)는 메모리-기반 에너지 백킹 및/또는 시스템-기반 에너지 백킹을 구현하기 위해 에너지-백 메모리(220)를 셋업할 수 있다.
[0045] 제어기(310)는 호스트(210)로부터 수신된 커맨드들을 서비스하기 위해 에너지-백 메모리(220)의 전반적 동작을 제어하도록 구성될 수 있다. 호스트(210)로부터의 커맨드들은 특히, 영구 기록(PWRITE) 커맨드 및 정상 기록(XWRITE) 커맨드를 포함할 수 있다. PWRITE 및 XWRITE 커맨드들 둘 다에 대해, 호스트(210)는 대응하는 PWRITE 및 XWRITE 데이터를 제공할 수 있다. 데이터 버퍼(320)는 PWRITE 데이터 및 XWRITE 데이터를 수신하도록 구성될 수 있다.
[0046] 이름이 의미하는 바와 같이, PWRITE 커맨드들은 대응하는 PWRITE 데이터가 영구적이도록 요구되는 커맨드들이다. 에너지-백 메모리(220)의 맥락에서, 지속성 요건은 PWRITE 데이터를 영구 스토리지(340)에 저장함으로써 충족될 수 있다. 따라서, 일 양상에서, PWRITE 커맨드가 수신될 때, 제어기(310)는 데이터 버퍼(320)로부터의 대응하는 PWRITE 데이터를 영구 스토리지(340)에 저장하도록 구성될 수 있다.
[0047] 다른 한편으로, XWRITE 커맨드들은 대응하는 XWRITE 데이터가 영구적이도록 요구되지 않는 커맨드들이다. 에너지-백 메모리(220)의 맥락에서, XWRITE 데이터는 영구 스토리지(340)에 저장될 수 있지만 저장될 필요가 없을 수 있다. 따라서, 일 양상에서, XWRITE 커맨드가 수신될 때, 제어기(310)는 데이터 버퍼(320)로부터의 대응하는 XWRITE 데이터를 영구 스토리지(340)에 저장할 수 있거나 또는 저장하지 않을 수 있다.
[0048] 도 4는 영구 기록들을 처리하기 위해 에너지-백 메모리(220)에 의해 수행되는 비-제한적인 예시적 프로세스(400)의 흐름도를 예시한다. 도 4의 모든 예시된 블록들이 수행될 필요는 없으며, 즉, 일부 블록들이 선택적일 수 있음이 주목되어야 한다. 또한, 도 4의 블록들에 대한 수치적 참조들은 블록들이 특정 순서로 수행되어야 한다는 것을 요구하는 것으로 간주되지 않아야 한다. 실제로, 일부 블록들은 동시에 수행될 수 있다.
[0049] 블록(410)에서, 제어기(310)는 예컨대, 커맨드/어드레스 라인들(232)을 통해 호스트(210)로부터 PWRITE 커맨드를 수신할 수 있다. 호스트(210)는 에너지-백 메모리(220)에 발행된 PWRITE 커맨드에 임의의 WGID를 포함시킬 필요가 없다. 임의의 WGID가 포함될 경우, 제어기(310)는 WGID 정보를 무시할 수 있다. 이것은 WGID가 요구되는 위에서 설명된 넌-에너지-백 구현(도 1 참조)과는 다르다. 이러한 방식으로, 제안된 에너지-백 프로토콜이 더 단순해질 수 있다.
[0050] 블록(420)에서, 데이터 버퍼(320)는 또한, 호스트(210)로부터 예컨대, 데이터 라인들(234)을 통해 PWRITE 커맨드에 대응하는 PWRITE 데이터를 수신할 수 있다. PWRITE 커맨드들은 대응하는 PWRITE 데이터가 영구적이도록 요구되는 커맨드들이라는 것을 상기해보자. 따라서, 블록(440)에서, 제어기(310)는 대응하는 PWRITE 데이터를 영구 스토리지(340)에 저장할 수 있다.
[0051] 캐시(330)가 존재하면, 블록(430)에서, 제어기(310)는 또한, 대응하는 PWRITE 데이터를 캐시(330)에 저장할 수 있다. 제어기(310)는 동시-기록 캐시 정책 또는 후-기록 캐시 정책을 구현하는 것을 통해 PWRITE 데이터를 캐시(330)에 저장할 수 있으며(블록(430)), 영구 스토리지(340)에 저장할 수 있다(블록(440)). 에너지-백 메모리(220)가 정책들 둘 다를 구현할 수 있을 경우, 호스트(210)는 어떤 정책을 구현할지를 특정할 수 있다.
[0052] 동시-기록 캐시 정책이 특정될 경우, 데이터 버퍼(320)로부터의 PWRITE 데이터는, PWRITE 데이터가 영구 스토리지(340)에 저장될 때까지 PWRITE 데이터의 판독들이 발생하지 않도록, 캐시(330) 및 영구 스토리지(340)에 동시에 기록될 수 있다. 후-기록 캐시 정책이 특정될 경우, PWRITE 데이터는 초기에 캐시(330)에 저장될 수 있다. PWRITE 데이터는, PWRITE 데이터가 또한 영구 스토리지(340)에 저장되는지 아닌지에 관계없이 PWRITE 데이터가 캐시(330)에 저장되는 즉시, 판독들에 이용가능할 수 있다.
[0053] 제어기(310)는 XWRITE 데이터에 대한 임의의 캐시 기록 정책들을 구현하도록 요구될 필요가 없음이 주목되어야 한다. 이것은, PWRITES와 달리, XWRITE들이 지속성을 요구하지 않기 때문이다. 대안적 관점에서, XWRITE 데이터는 후-기록 캐시 정책이 항상 유효한 것처럼 취급될 수 있다.
[0054] 일 양상에서, PWRITE 데이터와 XWRITE 데이터를 구별하기 위해, 데이터 버퍼(320) 및/또는 캐시(330) 내의 각각의 PWRITE 데이터는 영구적인 것으로 마킹될 수 있고, 데이터 버퍼(320) 및/또는 캐시(330) 내의 각각의 XWRITE 데이터는 영구적인 것으로 마킹되지 않을 수 있다. 예컨대, 각각의 PWRITE 데이터와 연관된 지속성 비트는 '1'로 세팅될 수 있고, 각각의 XWRITE 데이터와 연관된 지속성 비트는 '0'으로 리셋될 수 있다.
[0055] 블록(450)에서, 제어기(310)는 대응하는 PWRITE 데이터를 영구 스토리지(340)에 저장하기 위해 PWRITE 동작을 수행하는 동안 임의의 에러가 발생했는지 여부를 결정할 수 있다. 예컨대, 데이터 버퍼(320) 내의 PWRITE 데이터가 손상되었다고 예컨대, 패리티 체크를 통해 결정될 때, 에러가 발생할 수 있다. 또한, 영구 스토리지(340) 상에 공간이 불충분할 수 있고, PWRITE 데이터를 캐시(330) 및/또는 영구 스토리지(340)에 기록할 때 에러가 발생할 수 있으며, 기타 등등이다.
[0056] PWRITE 동작을 수행할 때 에러가 없을 경우, 어떤 타입의 응답도 호스트(210)에 다시 전송될 필요가 없다. 넌-에너지-백 NVDIMM-P와 달리, 제안된 에너지-백 구현을 성공적으로 완료할 시 응답이 요구되지 않는다. 이것은 제안된 에너지-백 프로토콜이 더 단순해질 수 있는 다른 방식이다. 일 양상에서, PWRITE 동작은, 데이터 버퍼(320) 내의 수신된 PWRITE 데이터가 유효하다고, 즉, 손상되지 않았다고 결정될 때 성공적인 것으로 간주될 수 있다. 다른 양상에서, PWRITE 동작은, PWRITE 데이터가 캐시(330)에 성공적으로 저장될 때 성공적인 것으로 간주될 수 있다. 또 다른 양상에서, PWRITE 동작은, PWRITE 데이터가 영구 스토리지(340)에 성공적으로 저장될 때 성공인 것으로 간주될 수 있다.
[0057] 블록(450)에서 에러가 검출되면, 블록(460)에서, 제어기(310)는 예컨대, 응답 라인들(236)을 통해 에러 응답(W_ERR)을 호스트(210)에 다시 전송할 수 있다. 일 양상에서, 에러 응답은 호스트(210)로부터 PWRITE 커맨드를 수신하는 사전 결정된 에러 보고 임계 듀레이션 내에 호스트(210)에 전송될 수 있다. 그런 다음, 호스트(210)의 관점에서, 에러 보고 임계 듀레이션 내에 에너지-백 메모리(220)로부터 PWRITE에 대한 응답이 수신되지 않을 경우, 호스트(210)는 PWRITE를 성공적인 것으로 간주할 수 있다.
[0058] 호스트(210)로부터의 커맨드들은 또한 플러시(FLUSH) 커맨드를 포함할 수 있다. 예컨대, 호스트(210)는 시스템을 전력-다운(power-down)시키도록 FLUSH 커맨드를 발행할 수 있다. 플러시 커맨드는 FLUSH PWRITE 또는 FLUSH ALL 커맨드일 수 있다. FLUSH(FLUSH PWRITE 또는 FLUSH ALL) 커맨드가 수신될 때, 제어기(310)는 영구 스토리지(340)에 아직 저장되지 않은, 모든 PWRITE 커맨드들의 데이터 버퍼(320) 및/또는 캐시(330) 내의 PWRITE 데이터를 영구 스토리지(340)에 플러시하도록 구성될 수 있다.
[0059] FLUSH 커맨드가 FLUSH ALL 커맨드이면, 데이터 버퍼(320) 및/또는 캐시(330)로부터 PWRITE 데이터를 플러시하는 것에 추가적으로, 제어기(310)는 또한, 영구 스토리지(340)에 아직 저장되지 않은, 모든 XWRITE 커맨드들의 데이터 버퍼(320) 및/또는 캐시(330) 내의 XWRITE 데이터를 영구 스토리지(340)에 플러시하도록 구성될 수 있다.
[0060] 도 5는 플러시들을 처리하기 위해 에너지-백 메모리(220)에 의해 수행되는 비-제한적인 예시적 프로세스(500)의 흐름도를 예시한다. 다시, 도 5의 모든 예시된 블록들이 수행될 필요는 없으며, 즉, 일부 블록들이 선택적일 수 있음이 주목되어야 한다. 추가로, 도 5의 블록들에 대한 수치적 참조들은 블록들이 특정 순서로 수행되어야 한다는 것을 요구하는 것으로 간주되지 않아야 한다. 실제로, 일부 블록들은 동시에 수행될 수 있다.
[0061] 블록(510)에서, 제어기(310)는 예컨대, 커맨드/어드레스 라인들(232)을 통해 호스트(210)로부터 FLUSH 커맨드를 수신할 수 있다. 호스트(210)는 에너지-백 메모리(220)에 발행된 FLUSH 커맨드에 어떠한 WGID도 포함할 필요가 없다. WGID가 포함될 경우, 제어기(310)는 WGID 정보를 무시할 수 있다. 이것은, WGID가 플러시될 PWRITE 데이터의 특정 그룹을 식별하는, 위에서 설명된 넌-에너지-백 구현(도 1 참조)과는 다르다. 이러한 방식으로, 제안된 에너지-백 프로토콜이 더 단순할 수 있다.
[0062] 블록(520)에서, 제어기(310)는 영구 스토리지(340)에 아직 저장되지 않은, 일부 또는 모든 PWRITE 커맨드들의 데이터 버퍼(320) 내의 PWRITE 데이터를 영구 스토리지(340)에 플러시할 수 있다. 이것을 보장하기 위한 하나의 방식은, 데이터 버퍼(320) 내의 모든 PWRITE 데이터(예컨대, 지속성 비트들이 '1'로 세팅된 데이터)를 영구 스토리지(340)에 단순히 플러시하는 것일 수 있다. 그러나, 아직 저장되지 않은 그러한 PWRITE 데이터를 식별하고, 식별된 PWRITE 데이터를 플러시하는 것이 바람직할 수 있다.
[0063] 캐시(330)가 존재하는 경우, 제어기(310)는 추가적으로, 영구 스토리지(340)에 아직 저장되지 않은, 일부 또는 모든 PWRITE 커맨드들의 캐시(330) 내의 PWRITE 데이터를 영구 스토리지(340)에 플러시할 수 있다. 다시, 이것은, 캐시(330) 내의 모든 PWRITE 데이터(예컨대, 지속성 비트들이 '1'로 세팅된 데이터)를 영구 스토리지(340)에 단순히 플러시함으로써 보장될 수 있다. 이것은 시간이 걸릴 수 있으며, 불필요하게 전력을 소비할 수 있다. 따라서, 영구적인 것으로 마킹된, 캐시(330) 내의 더티 캐시 라인(dirty cache line)들만을 플러시하는 것이 바람직할 수 있다.
[0064] 캐시(330)가 존재할 때, 동시-기록 캐시 정책이 구현되면, 데이터 버퍼(320)로부터의 PWRITE 데이터를 플러시하는 것이 충분할 수 있음에 주목한다. 즉, PWRITE 데이터의 캐시(330)를 플러시하는 것은 동시-기록 캐시 정책이 구현될 때 필요하지 않을 수 있다. 다른 한편으로, 후-기록 캐시 정책이 구현되면, 데이터 버퍼(320) 및 캐시(330) 둘 다로부터의 PWRITE 데이터를 플러시하는 것이 바람직할 수 있다.
[0065] FLUSH 커맨드가 FLUSH PWRITE 커맨드이면, 블록(520)으로부터의 프로세스는 블록(540)으로 진행할 수 있다. 다른 한편으로, FLUSH 커맨드가 FLUSH ALL 커맨드일 경우, 프로세스는 XWRITES가 플러시될 수 있는 블록(530)으로 진행할 수 있다.
[0066] 블록(530)에서, 제어기(310)는 영구 스토리지(340)에 아직 저장되지 않은, 일부 또는 모든 XWRITE 커맨드들의 데이터 버퍼(320) 내의 XWRITE 데이터를 영구 스토리지(340)에 플러시할 수 있다. 이것을 보장하기 위한 하나의 방식은, 데이터가 영구적인 것으로 마킹되는지 아닌지에 관계없이, 데이터 버퍼(320) 내의 모든 데이터를 영구 스토리지(340)에 단순히 플러시하는 것일 수 있다. 그러나, 아직 저장되지 않은 그러한 데이터를 식별하고, 식별된 데이터만을 플러시하는 것이 바람직할 수 있다.
[0067] 캐시(330)가 존재하는 경우, 제어기(310)는 추가적으로, 영구 스토리지(340)에 아직 저장되지 않은, 일부 또는 모든 XWRITE 커맨드들의 캐시(330) 내의 XWRITE 데이터를 영구 스토리지(340)에 플러시할 수 있다. 다시, 이것은, 데이터가 영구적인 것으로 마킹되는지 아닌지에 관계없이, 캐시(330) 내의 모든 데이터를 영구 스토리지(340)에 단순히 플러시함으로써 보장될 수 있다. 그러나, 더티 캐시 라인들이 영구적인 것으로 마킹되는지 아닌지에 관계없이, 캐시(330) 내의 모든 더티 캐시 라인들을 식별하고, 식별된 라인들만을 플러시하는 것이 바람직할 수 있다.
[0068] 그런 다음, (FLUSH PWRITE의 경우) 블록(520)으로부터 또는 (FLUSH ALL의 경우) 블록(530)으로부터, 프로세스는 블록(540)으로 진행할 수 있다. 이 블록에서, 제어기(310)는 FLUSH 동작이 성공적으로 완료되었는지 아닌지를 결정할 수 있다. 만약 그렇다면, 블록(550)에서, 제어기(310)는 예컨대, 응답 라인들(236)을 통해 영구 기록 응답(W_PERS)을 호스트(210)에 전송할 수 있다. 에러가 발생하면, 블록(560)에서, 제어기(310)는 에러 응답(W_ERR)을 호스트(210)에 전송할 수 있다.
[0069] 구체적으로 도시되지는 않았지만, 제어기(310)가 전력 손실을 검출할 때, 제어기(310)는 PWRITE 데이터에 대한 지속성 요건들이 충족될 수 있도록 자동으로 520을 수행할 수 있다. ― 예컨대, 백업 에너지(350)를 통해 또는 시스템-레벨 백업 에너지를 통해 제공된 ― 이용가능한 전력이 충분할 경우, 제어기(310)는 또한 블록(530)을 수행하여 일부 또는 모든 XWRITE 데이터를 저장할 수 있다.
[0070] 도 6은 도 2 및 도 3에 예시된 전술된 장치들과 통합될 수 있는 다양한 전자 디바이스들을 예시한다. 예컨대, 모바일 폰 디바이스(602), 랩탑 컴퓨터 디바이스(604), 단말 디바이스(606)뿐만 아니라, 소형 폼 팩터(form factor), 극히 낮은 프로파일(extreme low profile)을 요구하는 웨어러블 디바이스들, 휴대용 시스템들은 본원에서 설명된 바와 같이 디바이스들/시스템들을 통합하는 장치(600)를 포함할 수 있다. 장치(600)는 예컨대, 집적 회로들, 다이들, 집적 디바이스들, 집적 디바이스 패키지들, 집적 회로 디바이스들, 디바이스 패키지들, IC(integrated circuit) 패키지들, 패키지-온-패키지 디바이스들, 본원에 설명된 시스템-인-패키지 디바이스들 중 임의의 것일 수 있다. 도 6에 예시된 디바이스들(602, 604, 606)은 단지 예시적일 뿐이다. 다른 전자 디바이스들은 또한, 모바일 디바이스들, 핸드-헬드 PCS(personal communication systems) 유닛들, 개인용 디지털 어시스턴트들과 같은 휴대용 데이터 유닛들, GPS(global positioning system) 가능 디바이스들, 네비게이션 디바이스들, 셋탑 박스들, 뮤직 플레이어들, 비디오 플레이어들, 엔터테인먼트 유닛들, 미터 판독 장비와 같은 고정 위치 데이터 유닛들, 통신 디바이스들, 스마트폰들, 태블릿 컴퓨터들, 컴퓨터들, 웨어러블 디바이스들, 서버들, 라우터들, 자동차들(예컨대, 자율 주행 차량들) 내에 구현된 전자 디바이스들, 또는 데이터 또는 컴퓨터 명령들을 저장 또는 리트리브하는 임의의 다른 디바이스, 또는 이들의 임의의 조합을 포함하는 디바이스들의 그룹(예컨대, 전자 디바이스들)을 포함하는(그러나 이들에 제한되지 않음) 장치(600)를 특징으로 할 수 있다.
[0071] 당업자들은 정보 및 신호들이 다양한 상이한 기술들 및 기법들 중 임의의 것을 사용하여 표현될 수 있음을 인식할 것이다. 예컨대, 위의 설명 전반에 걸쳐 참조될 수 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들 및 칩들은 전압들, 전류들, 전자기파들, 자기장들 또는 자기 입자들, 광학 필드들 또는 광학 입자들, 또는 이들의 임의의 조합에 의해 표현될 수 있다.
[0072] 추가로, 당업자들은 본원에서 개시된 예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘들이 전자 하드웨어, 컴퓨터 소프트웨어 또는 둘 모두의 조합들로서 구현될 수 있음을 인식할 것이다. 하드웨어 및 소프트웨어의 이러한 상호 교환가능성을 명확하게 예시하기 위해, 다양한 예시적 컴포넌트들, 블록들, 모듈들, 회로들, 및 방법들은 일반적으로 그들의 기능성의 측면에서 위에서 설명되었다. 그러한 기능이 하드웨어로서 구현되는지 또는 소프트웨어로서 구현되는지는 전체 시스템 상에 부과되는 설계 제약들 및 특정 애플리케이션에 의존한다. 당업자들은 설명된 기능을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있지만, 그러한 구현 판정들이 본 개시내용의 범위로부터 벗어나게 하는 것으로 해석되지 않아야 한다.
[0073] 본원에서 개시된 예들과 관련하여 설명된 방법들, 시퀀스들 및/또는 알고리즘들은 직접적으로, 하드웨어로, 프로세서에 의해 실행되는 소프트웨어 모듈로, 또는 이 둘의 조합으로 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 탈착식(removable) 디스크, CD-ROM, 또는 당해 기술 분야에서 알려진 임의의 다른 형태의 저장 매체 내에 상주할 수 있다. 예시적 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독할 수 있고 저장 매체에 정보를 기록할 수 있도록 프로세서와 커플링된다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다.
[0074] 따라서, 양상은 위에서 설명된 디바이스들 중 임의의 디바이스를 구현하는 컴퓨터 판독가능한 매체들을 포함할 수 있다. 따라서, 개시된 청구 대상의 범위는 예시된 예들에 제한되지 않고, 본원에서 설명된 기능성을 수행하기 위한 임의의 수단이 포함된다.
[0075] 위의 개시내용은 예시적 예들을 나타내는 반면, 다양한 변화들 및 수정들이 첨부된 청구항들에 의해 정의되는 개시된 청구 대상의 범위로부터 벗어나지 않으면서 본원에서 이루어질 수 있음이 주목되어야 한다. 본원에서 설명된 예들에 따른 방법 청구항들의 기능들, 프로세스들 및/또는 액션들은 임의의 특정 순서로 수행될 필요는 없다. 게다가, 개시된 청구 대상의 엘리먼트들은 단수 형태로 설명되거나 또는 청구될 수 있지만, 단수에 대한 제한이 명시적으로 서술되지 않는 한 복수가 고려된다.

Claims (31)

  1. 에너지-백 메모리(energy-backed memory)로서,
    데이터 버퍼;
    영구 스토리지; 및
    상기 에너지-백 메모리의 전반적 동작을 제어하도록 구성된 제어기를 포함하며,
    상기 데이터 버퍼는 휘발성이고, 상기 영구 스토리지는 비-휘발성이고,
    상기 제어기는 호스트로부터 영구 기록(PWRITE) 커맨드 및 정상 기록(XWRITE) 커맨드 모두를 수신하도록 구성되고, 상기 PWRITE 커맨드는 상기 XWRITE 커맨드와는 상이하며,
    상기 데이터 버퍼는 상기 호스트로부터 상기 PWRITE 커맨드에 대응하는 PWRITE 데이터를 수신하도록 구성되고,
    상기 제어기는 상기 데이터 버퍼로부터의 상기 대응하는 PWRITE 데이터를 상기 영구 스토리지에 저장하도록 추가로 구성되고,
    PWRITE 커맨드들은 자신의 대응하는 PWRITE 데이터가 영구적이도록 요구되는 커맨드들이며,
    상기 데이터 버퍼는 상기 호스트로부터 상기 XWRITE 커맨드에 대응하는 XWRITE 데이터를 수신하도록 구성되고,
    XWRITE 커맨드들은 자신의 대응하는 XWRITE 데이터가 영구적일 것이 요구되지 않는 커맨드들인, 에너지-백 메모리.
  2. 제1 항에 있어서,
    상기 제어기는, 상기 대응하는 PWRITE 데이터를 상기 영구 스토리지에 저장하기 위해 PWRITE 동작을 수행할 때 에러가 발생할 경우, 사전 결정된 에러 보고 임계 듀레이션 내에 에러 응답(W_ERR)을 상기 호스트에 다시 전송하도록 구성되고, 그리고
    상기 PWRITE 동작이 성공적일 때 상기 호스트에 응답이 전송되지 않는, 에너지-백 메모리.
  3. 제1 항에 있어서,
    상기 호스트로부터의 상기 PWRITE 커맨드는 상기 대응하는 PWRITE 데이터가 연관된 특정 데이터 그룹을 식별하는 WGID(working group ID)를 포함하지 않는, 에너지-백 메모리.
  4. 제1 항에 있어서,
    상기 제어기는,
    상기 호스트로부터 FLUSH 커맨드를 수신하고,
    상기 영구 스토리지에 아직 저장되지 않은, 모든 PWRITE 커맨드들의 상기 데이터 버퍼 내의 상기 PWRITE 데이터를 상기 영구 스토리지에 플러시(flush)하고, 그리고
    상기 PWRITE 데이터가 상기 데이터 버퍼로부터 플러시되는 것이 완료될 시, 영구 기록 응답(W_PERS)을 상기 호스트에 다시 전송하도록 구성되는, 에너지-백 메모리.
  5. 제4 항에 있어서,
    상기 호스트로부터의 상기 FLUSH 커맨드는 플러시될 상기 PWRITE 데이터의 특정 데이터 그룹을 식별하는 WGID(working group ID)를 포함하지 않는, 에너지-백 메모리.
  6. 제4 항에 있어서,
    상기 FLUSH 커맨드는 FLUSH ALL 커맨드이고, 그리고
    상기 제어기는,
    상기 영구 스토리지에 아직 저장되지 않은, 모든 XWRITE 커맨드들의 상기 데이터 버퍼 내의 정상 기록(XWRITE) 데이터를 상기 영구 스토리지에 플러시하고, 그리고
    상기 PWRITE 데이터 및 상기 XWRITE 데이터가 상기 데이터 버퍼로부터 플러시되는 것이 완료될 시 상기 W_PERS를 상기 호스트에 다시 전송하도록 구성되는, 에너지-백 메모리.
  7. 제1 항에 있어서,
    상기 에너지-백 메모리는 캐시를 더 포함하며,
    상기 캐시는 휘발성이고, 그리고
    상기 제어기는 상기 데이터 버퍼로부터의 상기 대응하는 PWRITE 데이터를 상기 캐시에 저장하도록 구성되는, 에너지-백 메모리.
  8. 제7 항에 있어서,
    상기 제어기는 상기 대응하는 PWRITE 데이터를 상기 캐시 및 상기 영구 스토리지에 저장하는 데 동시-기록 캐시 정책(write-through cache policy) 및 후-기록 캐시 정책(write-back cache policy) 중 하나를 구현하도록 구성되는, 에너지-백 메모리.
  9. 제8 항에 있어서,
    상기 호스트는 상기 동시-기록 캐시 정책을 구현할지 아니면 상기 후-기록 캐시 정책을 구현할지를 상기 에너지-백 메모리에 특정하는, 에너지-백 메모리.
  10. 제7 항에 있어서,
    상기 제어기는,
    상기 호스트로부터 FLUSH 커맨드를 수신하고,
    상기 영구 스토리지에 아직 저장되지 않은, 모든 PWRITE 커맨드들의 상기 데이터 버퍼 및 상기 캐시 내의 상기 PWRITE 데이터를 상기 영구 스토리지에 플러시하고, 그리고
    상기 PWRITE 데이터가 상기 데이터 버퍼 및 상기 캐시로부터 플러시되는 것이 완료될 시, 영구 기록 응답(W_PERS)을 상기 호스트에 다시 전송하도록 구성되는, 에너지-백 메모리.
  11. 제10 항에 있어서,
    상기 호스트로부터의 상기 FLUSH 커맨드는 플러시될 상기 PWRITE 데이터의 특정 데이터 그룹을 식별하는 WGID(working group ID)를 포함하지 않는, 에너지-백 메모리.
  12. 제10 항에 있어서,
    상기 FLUSH 커맨드는 FLUSH ALL 커맨드이고, 그리고
    상기 제어기는,
    상기 영구 스토리지에 아직 저장되지 않은, 모든 XWRITE 커맨드들의 상기 데이터 버퍼 및 상기 캐시 내의 정상 기록(XWRITE) 데이터를 상기 영구 스토리지에 플러시하고 , 그리고
    상기 PWRITE 데이터 및 상기 XWRITE 데이터가 상기 데이터 버퍼 및 상기 캐시로부터 플러시되는 것이 완료될 시 상기 W_PERS를 상기 호스트에 다시 전송하도록 구성되는, 에너지-백 메모리.
  13. 제1 항에 있어서,
    상기 에너지-백 메모리는, 음악 플레이어, 비디오 플레이어, 엔터테인먼트 유닛, 네비게이션 디바이스, 통신 디바이스, 모바일 디바이스, 모바일 폰, 스마트폰, 개인용 디지털 어시스턴트, 고정 위치 단말, 태블릿 컴퓨터, 컴퓨터, 웨어러블 디바이스, 랩탑 컴퓨터, 서버 및 자동차 내의 디바이스로 구성된 그룹으로부터 선택된 디바이스에 통합되는, 에너지-백 메모리.
  14. 에너지-백 메모리에서, 호스트로부터 영구 기록(PWRITE) 커맨드 및 대응하는 PWRITE 데이터를 수신하는 단계 ― 상기 대응하는 PWRITE 데이터는 상기 에너지-백 메모리의 데이터 버퍼에서 수신됨 ― ;
    상기 에너지-백 메모리에서, 상기 호스트로부터 정상 기록(XWRITE) 커맨드 및 대응하는 XWRITE 데이터를 수신하는 단계 ― 상기 대응하는 XWRITE 데이터는 상기 데이터 버퍼에서 수신됨 ―; 및
    상기 에너지-백 메모리에 의해, 상기 데이터 버퍼로부터의 상기 대응하는 PWRITE 데이터를 상기 에너지-백 메모리의 영구 스토리지에 저장하는 단계를 포함하며,
    상기 데이터 버퍼는 휘발성이고, 상기 영구 스토리지는 비-휘발성이고,
    상기 PWRITE 커맨드는 상기 XWRITE 커맨드와는 상이하며,
    PWRITE 커맨드들은 자신의 대응하는 PWRITE 데이터가 영구적이도록 요구되는 커맨드들이며,
    XWRITE 커맨드들은 자신의 대응하는 XWRITE 데이터가 영구적일 것이 요구되지 않는 커맨드들인, 방법.
  15. 제14 항에 있어서,
    상기 에너지-백 메모리에 의해, 상기 대응하는 PWRITE 데이터를 상기 영구 스토리지에 저장할 때 에러가 발생할 경우, 사전 결정된 에러 보고 임계 듀레이션 내에 에러 응답(W_ERR)을 상기 호스트에 다시 전송하는 단계를 더 포함하며,
    상기 대응하는 PWRITE 데이터가 상기 영구 스토리지에 성공적으로 저장될 때 상기 호스트에 메시지가 전송되지 않는, 방법.
  16. 제14 항에 있어서,
    상기 호스트로부터의 상기 PWRITE 커맨드는 상기 대응하는 PWRITE 데이터가 연관된 특정 데이터 그룹을 식별하는 WGID(working group ID)를 포함하지 않는, 방법.
  17. 제14 항에 있어서,
    상기 에너지-백 메모리에서, 상기 호스트로부터 FLUSH 커맨드를 수신하는 단계;
    상기 에너지-백 메모리에 의해, 상기 영구 스토리지에 아직 저장되지 않은, 모든 PWRITE 커맨드들의 상기 데이터 버퍼 내의 상기 PWRITE 데이터를 상기 영구 스토리지에 플러시하는 단계; 및
    상기 에너지-백 메모리에 의해, 상기 PWRITE 데이터가 상기 데이터 버퍼로부터 플러시되는 것이 완료될 시, 영구 기록 응답(W_PERS)을 상기 호스트에 다시 전송하는 단계를 더 포함하는, 방법.
  18. 제17 항에 있어서,
    상기 호스트로부터의 상기 FLUSH 커맨드는 플러시될 상기 PWRITE 데이터의 특정 데이터 그룹을 식별하는 WGID(working group ID)를 포함하지 않는, 방법.
  19. 제17 항에 있어서,
    상기 FLUSH 커맨드는 FLUSH ALL 커맨드이고,
    상기 방법은,
    상기 에너지-백 메모리에 의해, 상기 영구 스토리지에 아직 저장되지 않은, 모든 XWRITE 커맨드들의 상기 데이터 버퍼 내의 정상 기록(XWRITE) 데이터를 상기 영구 스토리지에 플러시하는 단계; 및
    상기 에너지-백 메모리에 의해, 상기 PWRITE 데이터 및 상기 XWRITE 데이터가 상기 데이터 버퍼로부터 플러시되는 것이 완료될 시 상기 W_PERS를 상기 호스트에 다시 전송하는 단계를 더 포함하는, 방법.
  20. 제14 항에 있어서,
    상기 에너지-백 메모리에 의해, 상기 데이터 버퍼로부터의 상기 대응하는 PWRITE 데이터를 상기 에너지-백 메모리의 캐시에 저장하는 단계를 더 포함하며,
    상기 캐시는 휘발성인, 방법.
  21. 제20 항에 있어서,
    상기 대응하는 PWRITE 데이터를 상기 캐시 및 상기 영구 스토리지에 저장하는 단계는 동시-기록 캐시 정책 및 후-기록 캐시 정책 중 하나로서 구현되는, 방법.
  22. 제21 항에 있어서,
    상기 호스트는 상기 동시-기록 캐시 정책을 구현할지 아니면 상기 후-기록 캐시 정책을 구현할지를 상기 에너지-백 메모리에 특정하는, 방법.
  23. 제20 항에 있어서,
    상기 에너지-백 메모리에서, 상기 호스트로부터 FLUSH 커맨드를 수신하는 단계;
    상기 에너지-백 메모리에 의해, 상기 영구 스토리지에 아직 저장되지 않은, 모든 PWRITE 커맨드들의 상기 데이터 버퍼 및 상기 캐시 내의 상기 PWRITE 데이터를 상기 영구 스토리지에 플러시하는 단계; 및
    상기 에너지-백 메모리에 의해, 상기 PWRITE 데이터가 상기 데이터 버퍼 및 상기 캐시로부터 플러시되는 것이 완료될 시, 영구 기록 응답(W_PERS)를 상기 호스트에 다시 전송하는 단계를 더 포함하는, 방법.
  24. 제23 항에 있어서,
    상기 호스트로부터의 상기 FLUSH 커맨드는 플러시될 상기 PWRITE 데이터의 특정 데이터 그룹을 식별하는 WGID(working group ID)를 포함하지 않는, 방법.
  25. 제23 항에 있어서,
    상기 FLUSH 커맨드는 FLUSH ALL 커맨드이고,
    상기 방법은,
    상기 에너지-백 메모리에 의해, 상기 영구 스토리지에 아직 저장되지 않은, 모든 XWRITE 커맨드들의 상기 데이터 버퍼 및 상기 캐시 내의 정상 기록(XWRITE) 데이터를 상기 영구 스토리지에 플러시하는 단계; 및
    상기 에너지-백 메모리에 의해, 상기 PWRITE 데이터 및 상기 XWRITE 데이터가 상기 데이터 버퍼 및 상기 캐시로부터 플러시되는 것이 완료될 시, 상기 W_PERS를 상기 호스트에 다시 전송하는 단계를 더 포함하는, 방법.
  26. 에너지-백 메모리로서,
    데이터 버퍼;
    영구 스토리지; 및
    상기 에너지-백 메모리의 전반적 동작을 제어하도록 구성된 제어기를 포함하며,
    상기 제어기는,
    호스트로부터 영구 기록(PWRITE) 커맨드 및 정상 기록(XWRITE) 커맨드를 수신하기 위한 수단 ― 각각의 대응하는 PWRITE 데이터 및 XWRITE 데이터는 상기 호스트로부터 상기 데이터 버퍼에서 수신됨 ― ; 및
    상기 데이터 버퍼로부터의 상기 대응하는 PWRITE 데이터를 상기 영구 스토리지에 저장하기 위한 수단을 포함하며,
    상기 데이터 버퍼는 휘발성이고, 상기 영구 스토리지는 비-휘발성이고,
    상기 PWRITE 커맨드는 상기 XWRITE 커맨드와는 상이하며,
    PWRITE 커맨드들은 자신의 대응하는 PWRITE 데이터가 영구적이도록 요구되는 커맨드들이며,
    XWRITE 커맨드들은 자신의 대응하는 XWRITE 데이터가 영구적일 것이 요구되지 않는 커맨드들인, 에너지-백 메모리.
  27. 제26 항에 있어서,
    상기 제어기는 상기 대응하는 PWRITE 데이터를 상기 영구 스토리지에 저장할 때 에러가 발생할 경우, 사전 결정된 에러 보고 임계 듀레이션 내에 에러 응답(W_ERR)을 상기 호스트에 다시 전송하기 위한 수단을 더 포함하고, 그리고
    상기 대응하는 PWRITE 데이터가 상기 영구 스토리지에 성공적으로 저장될 때 상기 호스트에 응답이 전송되지 않는, 에너지-백 메모리.
  28. 제26 항에 있어서,
    상기 호스트로부터의 상기 PWRITE 커맨드는 상기 대응하는 PWRITE 데이터가 연관된 특정 데이터 그룹을 식별하는 WGID(working group ID)를 포함하지 않는, 에너지-백 메모리.
  29. 제26 항에 있어서,
    상기 제어기는,
    상기 호스트로부터 FLUSH 커맨드를 수신하기 위한 수단,
    상기 영구 스토리지에 아직 저장되지 않은, 모든 PWRITE 커맨드들의 상기 데이터 버퍼 내의 상기 PWRITE 데이터를 상기 영구 스토리지에 플러시하기 위한 수단, 및
    상기 PWRITE 데이터가 상기 데이터 버퍼로부터 플러시되는 것이 완료될 시, 영구 기록 응답(W_PERS)을 상기 호스트에 다시 전송하기 위한 수단을 포함하며,
    상기 FLUSH 커맨드가 FLUSH ALL 커맨드인 경우,
    상기 플러시하기 위한 수단은 또한, 상기 영구 스토리지에 아직 저장되지 않은, 모든 XWRITE 커맨드들의 상기 데이터 버퍼 내의 정상 기록(XWRITE) 데이터를 상기 영구 스토리지에 플러시하고, 그리고
    상기 전송하기 위한 수단은 상기 PWRITE 데이터 및 상기 XWRITE 데이터가 상기 데이터 버퍼로부터 플러시되는 것이 완료될 시 상기 W_PERS를 상기 호스트에 다시 전송하는, 에너지-백 메모리.
  30. 제26 항에 있어서,
    상기 에너지-백 메모리는 캐시를 더 포함하며,
    상기 캐시는 휘발성이고, 그리고
    상기 저장하기 위한 수단은 상기 데이터 버퍼로부터의 상기 대응하는 PWRITE 데이터를 상기 캐시에 저장하는, 에너지-백 메모리.
  31. 제30 항에 있어서,
    상기 제어기는,
    상기 호스트로부터 FLUSH 커맨드를 수신하기 위한 수단,
    상기 영구 스토리지에 아직 저장되지 않은, 모든 PWRITE 커맨드들의 상기 데이터 버퍼 및 상기 캐시 내의 상기 PWRITE 데이터를 상기 영구 스토리지에 플러시하기 위한 수단, 및
    상기 PWRITE 데이터가 상기 데이터 버퍼 및 상기 캐시로부터 플러시되는 것이 완료될 시, 영구 기록 응답(W_PERS)을 상기 호스트에 다시 전송하기 위한 수단을 더 포함하며,
    상기 FLUSH 커맨드가 FLUSH ALL 커맨드인 경우,
    상기 플러시하기 위한 수단은 또한, 상기 영구 스토리지에 아직 저장되지 않은, 모든 XWRITE 커맨드들의 상기 데이터 버퍼 및 상기 캐시 내의 정상 기록(XWRITE) 데이터를 상기 영구 스토리지에 플러시하고, 그리고
    상기 전송하기 위한 수단은 상기 PWRITE 데이터 및 상기 XWRITE 데이터가 상기 데이터 버퍼 및 상기 캐시로부터 플러시되는 것이 완료될 시 상기 W_PERS를 상기 호스트에 다시 전송하는, 에너지-백 메모리.
KR1020207033983A 2018-05-01 2019-04-29 에너지-백 메모리에 대한 영구 기록 데이터 KR102335838B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/968,738 2018-05-01
US15/968,738 US11016669B2 (en) 2018-05-01 2018-05-01 Persistent write data for energy-backed memory
PCT/US2019/029657 WO2019212971A1 (en) 2018-05-01 2019-04-29 Persistent write data for energy-backed memory

Publications (2)

Publication Number Publication Date
KR20210003225A KR20210003225A (ko) 2021-01-11
KR102335838B1 true KR102335838B1 (ko) 2021-12-06

Family

ID=66448636

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207033983A KR102335838B1 (ko) 2018-05-01 2019-04-29 에너지-백 메모리에 대한 영구 기록 데이터

Country Status (6)

Country Link
US (1) US11016669B2 (ko)
EP (1) EP3788491A1 (ko)
KR (1) KR102335838B1 (ko)
CN (1) CN112384899A (ko)
TW (1) TWI758605B (ko)
WO (1) WO2019212971A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11194524B2 (en) * 2017-09-15 2021-12-07 Qualcomm Incorporated Apparatus and method for performing persistent write operations using a persistent write command
US10996888B2 (en) * 2017-10-31 2021-05-04 Qualcomm Incorporated Write credits management for non-volatile memory
CN110058964B (zh) * 2018-01-18 2023-05-02 伊姆西Ip控股有限责任公司 数据恢复方法、数据恢复系统和计算机可读介质
KR20200127793A (ko) * 2019-05-03 2020-11-11 에스케이하이닉스 주식회사 메모리 장치의 캐시 시스템 및 캐시 시스템의 데이터 캐싱 방법
US11210225B2 (en) * 2019-11-25 2021-12-28 Micron Technology, Inc. Pre-fetch for memory sub-system with cache where the pre-fetch does not send data and response signal to host
US11397677B2 (en) * 2020-04-30 2022-07-26 Hewlett Packard Enterprise Development Lp System and method for tracking persistent flushes
US11886744B2 (en) * 2021-12-15 2024-01-30 Nvidia Corporation Systems, methods, and apparatuses for making writes to persistent memory

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130254453A1 (en) 2010-11-29 2013-09-26 Kazuki Sato Computer system, and switch and packet transfer control method used therein
US20150029808A1 (en) 2013-07-23 2015-01-29 Western Digital Technologies, Inc. Power fail protection and recovery using low power states in a data storage device/system
US20150178202A1 (en) 2013-12-20 2015-06-25 Rajesh M. Sankaran Method and apparatus for cache line write back operation
US20170147207A1 (en) 2015-11-20 2017-05-25 Arm Ltd. Non-volatile buffer for memory operations
US20180341585A1 (en) 2017-05-23 2018-11-29 Dell Products, L.P. Write-back cache for storage controller using persistent system memory

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7765361B2 (en) * 2006-11-21 2010-07-27 Microsoft Corporation Enforced transaction system recoverability on media without write-through
US20100061207A1 (en) * 2008-09-09 2010-03-11 Seagate Technology Llc Data storage device including self-test features
KR101636634B1 (ko) 2011-12-21 2016-07-05 인텔 코포레이션 프로세서로부터 메모리 서브시스템으로 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법
US9477622B2 (en) * 2012-02-07 2016-10-25 Intel Corporation Deterministic method to support multiple producers with multiple consumers in peer or hierarchical systems
US9081606B2 (en) * 2012-11-13 2015-07-14 International Business Machines Corporation Asynchronous persistent stores for transactions
US10489158B2 (en) * 2014-09-26 2019-11-26 Intel Corporation Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores
US10025508B2 (en) * 2015-12-02 2018-07-17 International Business Machines Corporation Concurrent upgrade and backup of non-volatile memory
US20170177276A1 (en) * 2015-12-21 2017-06-22 Ocz Storage Solutions, Inc. Dual buffer solid state drive
US10318295B2 (en) * 2015-12-22 2019-06-11 Intel Corporation Transaction end plus commit to persistence instructions, processors, methods, and systems
US10025714B2 (en) * 2016-09-30 2018-07-17 Super Micro Computer, Inc. Memory type range register with write-back cache strategy for NVDIMM memory locations
US10482010B2 (en) * 2017-06-29 2019-11-19 Intel Corporation Persistent host memory buffer
US10942658B2 (en) * 2017-10-26 2021-03-09 Insyde Software Corp. System and method for dynamic system memory sizing using non-volatile dual in-line memory modules
KR102353859B1 (ko) * 2017-11-01 2022-01-19 삼성전자주식회사 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈
US10545882B2 (en) * 2018-01-29 2020-01-28 Dell Products L.P. Systems and methods for load-balancing cache flushes to non-volatile memory

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130254453A1 (en) 2010-11-29 2013-09-26 Kazuki Sato Computer system, and switch and packet transfer control method used therein
US20150029808A1 (en) 2013-07-23 2015-01-29 Western Digital Technologies, Inc. Power fail protection and recovery using low power states in a data storage device/system
US20150178202A1 (en) 2013-12-20 2015-06-25 Rajesh M. Sankaran Method and apparatus for cache line write back operation
US20170147207A1 (en) 2015-11-20 2017-05-25 Arm Ltd. Non-volatile buffer for memory operations
US20180341585A1 (en) 2017-05-23 2018-11-29 Dell Products, L.P. Write-back cache for storage controller using persistent system memory

Also Published As

Publication number Publication date
CN112384899A (zh) 2021-02-19
US20190339865A1 (en) 2019-11-07
TW201945933A (zh) 2019-12-01
EP3788491A1 (en) 2021-03-10
KR20210003225A (ko) 2021-01-11
TWI758605B (zh) 2022-03-21
US11016669B2 (en) 2021-05-25
WO2019212971A1 (en) 2019-11-07

Similar Documents

Publication Publication Date Title
KR102335838B1 (ko) 에너지-백 메모리에 대한 영구 기록 데이터
US10891236B2 (en) Data storage device and operating method thereof
US8977833B2 (en) Memory system
US9645769B2 (en) Performance acceleration during shutdown of a data storage device
US20190324859A1 (en) Method and Apparatus for Restoring Data after Power Failure for An Open-Channel Solid State Drive
US8832356B2 (en) Apparatus and method for flash memory address translation
CN111279327A (zh) 用于非易失性存储器的写入信用管理
US20150052415A1 (en) Data storage device, operating method thereof and data processing system including the same
US11550678B2 (en) Memory management
US20130246690A1 (en) Information processing system and data-storage control method
CN109923514B (zh) 对数据的存储器操作
US9921954B1 (en) Method and system for split flash memory management between host and storage controller
US10180792B1 (en) Cache management in data storage systems
KR20080072447A (ko) 읽기 요청 처리 시스템 및 방법
CN109542337B (zh) 存储设备
US10031689B2 (en) Stream management for storage devices
US20220229775A1 (en) Data storage device and operating method thereof
US20240086113A1 (en) Synchronous write method and device, storage system and electronic device
US11836092B2 (en) Non-volatile storage controller with partial logical-to-physical (L2P) address translation table
US10025664B2 (en) Selective buffer protection
CN117149062A (zh) 一种磁带损坏数据的处理方法以及计算装置
US10452312B2 (en) Apparatus, system, and method to determine a demarcation voltage to use to read a non-volatile memory
KR101756228B1 (ko) 메모리 장치
US10515016B2 (en) Method and apparatus for caching in software-defined storage systems
US11995323B2 (en) Memory controller and operating method thereof

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant