KR102574354B1 - 비정상적 셧다운과 연관된 효율적인 데이터 저장 이용 - Google Patents

비정상적 셧다운과 연관된 효율적인 데이터 저장 이용 Download PDF

Info

Publication number
KR102574354B1
KR102574354B1 KR1020210079148A KR20210079148A KR102574354B1 KR 102574354 B1 KR102574354 B1 KR 102574354B1 KR 1020210079148 A KR1020210079148 A KR 1020210079148A KR 20210079148 A KR20210079148 A KR 20210079148A KR 102574354 B1 KR102574354 B1 KR 102574354B1
Authority
KR
South Korea
Prior art keywords
block
data storage
storage device
controller
power loss
Prior art date
Application number
KR1020210079148A
Other languages
English (en)
Other versions
KR20220056783A (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 KR20220056783A publication Critical patent/KR20220056783A/ko
Application granted granted Critical
Publication of KR102574354B1 publication Critical patent/KR102574354B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/30Power supply circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/30Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • G11C5/143Detection of memory cassette insertion or removal; Continuity checks of supply or ground lines; Detection of supply variations, interruptions or levels ; Switching between alternative supplies
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • G11C5/147Voltage reference generators, voltage or current regulators; Internally lowered supply levels; Compensation for voltage drops
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring

Abstract

본 발명은 대체적으로 비정상적 셧다운(UGSD) 이벤트들 이후 효율적인 블록 이용에 관한 것이다. UGSD 이벤트 이후, 호스트 디바이스에는, UGSD 이벤트 이전에 이용되고 있었던 쿼드 레벨 셀(quad level cell, QLC) 블록이 진행 중인 블록 복구를 겪고 있고 그 블록이 아직 신규 데이터를 수용하는 데 이용가능하지 않다는 것이 데이터 저장 디바이스에 의해 경고된다. 이어서, 블록은, UGSD 이벤트의 시간에 발생하고 있었던 프로그래밍을 위해 블록이 계속 이용될 수 있는지 여부를 결정하기 위해 검사된다. 일단 결정이 이루어지면, 데이터 저장 디바이스는 호스트 디바이스에 통지하여 정상 동작들이 계속될 수 있게 한다. 추가적으로, 프로그래밍에 이용가능한 프리 블록(free block)들의 양이 UGSD 이벤트들 동안 모니터링되어 전력 손실 중단이 트리거되는 경우 호스트 디바이스에 경보를 보낼 수 있게 한다.

Description

비정상적 셧다운과 연관된 효율적인 데이터 저장 이용{EFFICIENT DATA STORAGE USAGE ASSOCIATED WITH UNGRACEFUL SHUTDOWN}
관련 출원의 상호 참조
본 출원은 2020년 10월 28일자로 출원된 미국 가특허 출원 제63/106,544호의 이익을 주장하며, 이 출원은 본 명세서에 참고로 포함된다.
기술분야
본 발명의 실시예들은 대체적으로 비정상적 셧다운(ungraceful shutdown, UGSD) 이벤트들 이후 효율적인 블록 이용에 관한 것이다.
전력 손실은 솔리드 스테이트 드라이브(SSD)들과 같은 데이터 저장 디바이스들이 갖는 문제로서, 불완전하게 프로그래밍된 블록들이 데이터 무결성 및 디바이스 신뢰성에 위협을 가할 수 있다. 데이터 저장 디바이스에 데이터를 저장하기 위한 블록들이 부족함에 따라 이용가능한 메모리 블록들이 고갈될 수 있고 이는 데이터 저장 디바이스가 신규 데이터를 수용할 수 없고 바람직하지 않은 판독 전용 모드로 놓여질 것이기 때문에, 연속적인 전력 손실 이벤트들이 특히 문제가 된다.
커패시터들이 최신 데이터 저장 디바이스들에 대한 전력 손실 시나리오들을 핸들링하는 데 이용되어 왔다. 커패시터들은 전력 손실 보호(PLP)를 핸들링하는 것을 돕기에 충분한 전력을 보유한다. 커패시터들로는 충분하지 않을 수 있다. 호스트 디바이스로부터의 일부 전력 예비부 또는 커패시터들 또는 고급 전력 손실 플래그들이 있을 때에도, 연속적인 전력 손실은 여전히, 데이터 저장 디바이스가 정상적으로 동작하게 하기 위한 이용가능한 블록들의 고갈로 이어질 수 있다.
전력 복구 시, 데이터 저장 디바이스는, 준비 시간 제한들로 인해 원본 블록이 제 시간에 핸들링되지 않을 것이기 때문에 원본 블록은 방치하면서 데이터를 기록할 신규 블록을 선택할 수 있다. 따라서, 다음 전력 손실이 발생하고 사라질 때, 데이터 저장 디바이스는 충분한 전력 손실이 블록 카운트들의 전체 고갈로 이어질 때까지 데이터 라우팅을 위해 다른 블록을 선택할 것이다.
따라서, UGSD/PLP 복구 동안 호스트 디바이스 통신을 위해 적합하고 적절한 데이터 저장 디바이스가 당업계에 요구된다.
본 발명은 대체적으로 비정상적 셧다운(UGSD) 이벤트들 이후 효율적인 블록 이용에 관한 것이다. UGSD 이벤트 이후, 호스트 디바이스에는, UGSD 이벤트 이전에 이용되고 있었던 쿼드 레벨 셀(quad level cell, QLC) 블록이 진행 중인 블록 복구를 겪고 있고 그 블록이 아직 신규 데이터를 수용하는 데 이용가능하지 않다는 것이 데이터 저장 디바이스에 의해 경고된다. 이어서, 블록은, UGSD 이벤트의 시간에 발생하고 있었던 프로그래밍을 위해 블록이 계속 이용될 수 있는지 여부를 결정하기 위해 검사된다. 일단 결정이 이루어지면, 데이터 저장 디바이스는 호스트 디바이스에 통지하여 정상 동작들이 계속될 수 있게 한다. 추가적으로, 프로그래밍에 이용가능한 프리 블록(free block)들의 양이 UGSD 이벤트들 동안 모니터링되어 전력 손실 중단(power loss halt)이 트리거되는 경우 호스트 디바이스에 경보를 보낼 수 있게 한다.
일 실시예에서, 데이터 저장 디바이스는 비휘발성 메모리 디바이스; 및 비휘발성 메모리 디바이스에 커플링된 제어기를 포함하고, 제어기는 블록에 대한 프로그래밍 동작 동안 전력 손실 이벤트를 검출하고; 전력 손실 이벤트 이후 파워 업(power up) 시에 호스트 디바이스에 블록 비지 경고(block busy alert)를 발행하고; 블록이 여전히 계속 프로그래밍될 수 있는지 여부를 결정하고; 호스트 디바이스에 블록 준비 경고를 발행하도록 구성된다.
일 실시예에서, 데이터 저장 디바이스는 비휘발성 메모리 디바이스; 및 비휘발성 메모리 디바이스에 커플링된 제어기를 포함하고, 제어기는 전력 손실 이벤트 이후 파워 온(power on)을 결정하고; 후속 전력 손실 핸들링을 위해 이용될 수 있는 프리 블록들의 나머지 카운트를 검사하고; 프리 블록들의 나머지 양이 임계치를 초과하는지 또는 그 미만인지를 결정하고; 전력 손실 데이터 무결성 검사 및 이용을 계속 핸들링하거나; 또는 호스트 디바이스로부터의 임의의 인입하는 데이터에 대한 논리 블록 어드레스(logical block address, LBA) 경보를 발행하도록 구성된다.
다른 실시예에서, 데이터 저장 디바이스는 비휘발성 메모리 디바이스; 전력 손실 이벤트 이후 블록이 계속 프로그래밍될 수 있는지 여부를 결정하기 위한 수단; 및 전력 손실 이벤트 이후 호스트 디바이스에 블록 비지 경고를 발행하기 위한 수단을 포함한다.
상기에 언급된 본 발명의 특징들이 상세히 이해될 수 있는 방식으로, 상기에 간략하게 요약된 본 발명의 보다 구체적인 설명이 실시예들을 참조하여 이루어질 수 있으며, 이들 실시예 중 일부가 첨부 도면에 예시되어 있다. 그러나, 첨부 도면은 단지 본 발명의 전형적인 실시예들을 도시하는 것이므로 본 발명의 범주를 제한하는 것으로 간주되지 않아야 한다는 것에 유의해야 하는데, 이는 본 발명이 다른 균등하게 유효한 실시예들을 허용할 수 있기 때문이다.
도 1은 일 실시예에 따른, 데이터 저장 디바이스가 호스트 디바이스를 위한 저장 디바이스로서 기능할 수 있는 저장 시스템을 예시하는 개략 블록도이다.
도 2는 일 실시예에 따른 포기-미세(foggy-fine) 프로그래밍의 개략도이다.
도 3은 일 실시예에 따른 데이터 저장 디바이스를 위한 전력 손실 처리를 예시하는 방법의 흐름도이다.
도 4는 일 실시예에 따른 전력 손실로 유발되는 블록 고갈에 대한 검사를 예시하는 방법의 흐름도이다.
이해를 촉진하기 위해, 도면들에 공통인 동일한 요소들을 지시하기 위해, 가능한 경우, 동일한 도면 부호들이 사용되었다. 일 실시예에 개시된 요소들이 구체적인 언급 없이도 다른 실시예들에서 유익하게 이용될 수 있다는 것이 고려된다.
하기에서, 본 발명의 실시예들을 참조한다. 그러나, 본 발명은 설명된 특정 실시예들로 제한되지 않는다는 것이 이해되어야 한다. 대신에, 하기의 특징들 및 요소들의 임의의 조합이, 상이한 실시예들과 관련되든지 또는 그렇지 않든지 간에, 본 발명을 구현하고 실시하기 위해 고려된다. 게다가, 본 발명의 실시예가 다른 가능한 해법들에 비해 그리고/또는 종래 기술에 비해 이점을 달성할 수 있지만, 특정 이점이 주어진 실시예에 의해 달성되는지 여부는 본 발명의 제한이 아니다. 따라서, 하기의 태양들, 특징들, 실시예들, 및 이점들은 단지 예시적인 것이며, 청구항(들)에 명시적으로 언급된 경우를 제외하고는 첨부된 청구항들의 요소 또는 제한으로 간주되지 않는다. 마찬가지로, "본 발명"에 대한 언급은 본 명세서에 개시되는 임의의 발명의 주제의 일반화로서 해석되어서는 안되며, 청구항(들)에 명시적으로 언급된 경우를 제외하고는 첨부된 청구항들의 요소 또는 제한인 것으로 간주되어서는 안된다.
본 발명은 대체적으로 비정상적 셧다운(UGSD) 이벤트들 이후 효율적인 블록 이용에 관한 것이다. UGSD 이벤트 이후, 호스트 디바이스에는, UGSD 이벤트 이전에 이용되고 있었던 쿼드 레벨 셀(QLC) 블록이 진행 중인 블록 복구를 겪고 있고 그 블록이 아직 신규 데이터를 수용하는 데 이용가능하지 않다는 것이 데이터 저장 디바이스에 의해 경고된다. 이어서, 블록은, UGSD 이벤트의 시간에 발생하고 있었던 프로그래밍을 위해 블록이 계속 이용될 수 있는지 여부를 결정하기 위해 검사된다. 일단 결정이 이루어지면, 데이터 저장 디바이스는 호스트 디바이스에 통지하여 정상 동작들이 계속될 수 있게 한다. 추가적으로, 프로그래밍에 이용가능한 프리 블록들의 양이 UGSD 이벤트들 동안 모니터링되어 전력 손실 중단이 트리거되는 경우 호스트 디바이스에 경보를 보낼 수 있게 한다.
도 1은 일 실시예에 따른, 데이터 저장 디바이스(106)가 호스트 디바이스(104)를 위한 저장 디바이스로서 기능할 수 있는 저장 시스템(100)을 예시하는 개략 블록도이다. 예를 들어, 호스트 디바이스(104)는 데이터 저장 디바이스(106)에 포함된 비휘발성 메모리(NVM)(110)를 이용하여 데이터를 저장 및 검색할 수 있다. 호스트 디바이스(104)는 호스트 DRAM(138)을 포함하는데, 여기서 호스트 DRAM(138)의 일부분이 호스트 메모리 버퍼(HMB)(140)로서 할당된다. HMB(140)는, 데이터 저장 디바이스(106)에 의한 추가 작업 영역 또는 추가 저장 영역으로서 데이터 저장 디바이스(106)에 의해 이용될 수 있다. HMB(140)는 일부 예들에서 호스트 디바이스에 의해 액세스불가능할 수 있다. 일부 예들에서, 저장 시스템(100)은, 저장 어레이로서 동작할 수 있는, 데이터 저장 디바이스(106)와 같은, 복수의 저장 디바이스들을 포함할 수 있다. 예를 들어, 저장 시스템(100)은 호스트 디바이스(104)를 위한 대용량 저장 디바이스로서 총괄하여 기능하는 저가/독립 디스크들의 중복 어레이(RAID)로서 구성되는 복수의 데이터 저장 디바이스들(106)을 포함할 수 있다.
호스트 디바이스(104)는 데이터 저장 디바이스(106)와 같은 하나 이상의 저장 디바이스에 그리고/또는 하나 이상의 저장 디바이스부터 데이터를 저장 및/또는 검색할 수 있다. 도 1에 예시된 바와 같이, 호스트 디바이스(104)는 인터페이스(114)를 통해 데이터 저장 디바이스(106)와 통신할 수 있다. 호스트 디바이스(104)는 컴퓨터 서버, NAS(network attached storage) 유닛, 데스크톱 컴퓨터, 노트북(즉, 랩톱) 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 전화 핸드셋, 예컨대 소위 "스마트" 폰, 소위 "스마트" 패드, 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게임 콘솔, 비디오 스트리밍 디바이스, 또는 데이터 저장 디바이스에 데이터를 전송하거나 그로부터 데이터를 수신할 수 있는 다른 디바이스들을 포함한, 광범위한 디바이스들 중 임의의 것을 포함할 수 있다.
데이터 저장 디바이스(106)는 제어기(108), NVM(110), 전력 공급부(111), 휘발성 메모리(112), 인터페이스(114), 및 기록 버퍼(116)를 포함한다. 일부 예들에서, 데이터 저장 디바이스(106)는 명료함을 위해 도 1에 도시되지 않은 추가적인 컴포넌트들을 포함할 수 있다. 예를 들어, 데이터 저장 디바이스(106)는 인쇄 회로 기판(PCB)을 포함할 수 있으며, 인쇄 회로 기판(PCB)에는 데이터 저장 디바이스(106)의 컴포넌트들이 기계적으로 부착되고, 인쇄 회로 기판(PCB)은 데이터 저장 디바이스(106)의 컴포넌트들 등을 전기적으로 상호접속하는 전기 전도성 트레이스들을 포함한다. 일부 예들에서, 데이터 저장 디바이스(106)의 물리적 치수들 및 커넥터 구성들은 하나 이상의 표준 폼 팩터를 따를 수 있다. 일부 예시적인 표준 폼 팩터들은 3.5" 데이터 저장 디바이스(예컨대, HDD 또는 SSD), 2.5" 데이터 저장 디바이스, 1.8" 데이터 저장 디바이스, PCI(peripheral component interconnect), PCI-X(PCI-extended), PCIe(PCI Express)(예컨대, PCIe x1, x4, x8, x16, PCIe Mini Card, MiniPCI 등)를 포함하지만, 이로 제한되지 않는다. 일부 예들에서, 데이터 저장 디바이스(106)는 호스트 디바이스(104)의 마더보드에 직접 결합(예컨대, 직접 솔더링)될 수 있다.
데이터 저장 디바이스(106)의 인터페이스(114)는 호스트 디바이스(104)와 데이터를 교환하기 위한 데이터 버스 및 호스트 디바이스(104)와 커맨드들을 교환하기 위한 제어 버스 중 하나 또는 둘 모두를 포함할 수 있다. 인터페이스(114)는 임의의 적합한 프로토콜에 따라 동작할 수 있다. 예를 들어, 인터페이스(114)는 다음의 프로토콜들 중 하나 이상에 따라 동작할 수 있다: ATA(advanced technology attachment)(예컨대, SATA(serial-ATA) 및 PATA(parallel-ATA)), FCP(Fibre Channel Protocol), SCSI(small computer system interface), SAS(serially attached SCSI), PCI, 및 PCIe, NVMe(non-volatile memory express), OpenCAPI, GenZ, CCIX(Cache Coherent Interface Accelerator), OCSSD(Open Channel SSD) 등. 인터페이스(114)의 전기 접속(예컨대, 데이터 버스, 제어 버스, 또는 둘 모두)은 제어기(108)에 전기적으로 접속되어, 호스트 디바이스(104)와 제어기(108) 사이에 전기 접속을 제공하여서, 데이터가 호스트 디바이스(104)와 제어기(108) 사이에서 교환될 수 있게 한다. 일부 예들에서, 인터페이스(114)의 전기 접속은 또한 데이터 저장 디바이스(106)가 호스트 디바이스(104)로부터 전력을 수신할 수 있게 할 수 있다. 예를 들어, 도 1에 예시된 바와 같이, 전력 공급부(111)는 인터페이스(114)를 통해 호스트 디바이스(104)로부터 전력을 수신할 수 있다.
NVM(110)은 복수의 메모리 디바이스들 또는 메모리 유닛들을 포함할 수 있다. NVM(110)은 데이터를 저장 및/또는 검색하도록 구성될 수 있다. 예를 들어, NVM(110)의 메모리 유닛은 데이터, 및 데이터를 저장할 것을 메모리 유닛에 지시하는 제어기(108)로부터의 메시지를 수신할 수 있다. 유사하게, NVM(110)의 메모리 유닛은 데이터를 검색할 것을 메모리 유닛에게 지시하는 제어기(108)로부터의 메시지를 수신할 수 있다. 일부 예들에서, 메모리 유닛들 각각은 다이로 지칭될 수 있다. 일부 예들에서, 단일 물리 칩이 복수의 다이들(즉, 복수의 메모리 유닛들)을 포함할 수 있다. 일부 예들에서, 각각의 메모리 유닛은 비교적 많은 양의 데이터(예를 들어, 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB 등)를 저장하도록 구성될 수 있다.
일부 예들에서, NVM(110)의 각각의 메모리 유닛은 플래시 메모리 디바이스들, PCM(phase-change memory) 디바이스들, ReRAM(resistive random-access memory) 디바이스들, MRAM(magnetoresistive random-access memory) 디바이스들, F-RAM(ferroelectric random-access memory), 홀로그래픽 메모리 디바이스들, 및 임의의 다른 유형의 비휘발성 메모리 디바이스들과 같은 임의의 유형의 비휘발성 메모리 디바이스들을 포함할 수 있다.
NVM(110)은 복수의 플래시 메모리 디바이스들 또는 메모리 유닛들을 포함할 수 있다. NVM 플래시 메모리 디바이스들은 NAND 또는 NOR 기반 플래시 메모리 디바이스들을 포함할 수 있고, 각각의 플래시 메모리 셀에 대한 트랜지스터의 플로팅 게이트에 포함된 전하에 기초하여 데이터를 저장할 수 있다. NVM 플래시 메모리 디바이스들에서, 플래시 메모리 디바이스는 복수의 다이들로 분할될 수 있으며, 이 복수의 다이들의 각각의 다이는 복수의 블록들을 포함하며, 이들은 복수의 페이지들로 추가로 분할될 수 있다. 특정 메모리 디바이스 내의 복수의 블록들의 각각의 블록은 복수의 NVM 셀들을 포함할 수 있다. NVM 셀들의 행(row)들은 워드라인을 이용하여 전기적으로 접속되어 복수의 페이지들 중 소정 페이지를 정의할 수 있다. 복수의 페이지들 각각 내의 각자의 셀들은 각자의 비트 라인들에 전기적으로 접속될 수 있다. 또한, NVM 플래시 메모리 디바이스들은 2D 또는 3D 디바이스들일 수 있고, 싱글 레벨 셀(single level cell, SLC), 멀티 레벨 셀(multi-level cell, MLC), 트리플 레벨 셀(triple level cell, TLC), 또는 쿼드 레벨 셀(QLC)일 수 있다. 제어기(108)는 페이지 레벨에서 NVM 플래시 메모리 디바이스들에 데이터를 기록하고 그로부터 데이터를 판독하고 블록 레벨에서 NVM 플래시 메모리 디바이스들로부터 데이터를 소거할 수 있다.
데이터 저장 디바이스(106)는 데이터 저장 디바이스(106)의 하나 이상의 컴포넌트들에 전력을 제공할 수 있는 전력 공급부(111)를 포함한다. 표준 모드에서 동작할 때, 전력 공급부(111)는 호스트 디바이스(104)와 같은 외부 디바이스에 의해 제공되는 전력을 이용하여 하나 이상의 컴포넌트에 전력을 제공할 수 있다. 예를 들어, 전력 공급부(111)는 인터페이스(114)를 통해 호스트 디바이스(104)로부터 수신된 전력을 이용하여 하나 이상의 컴포넌트에 전력을 제공할 수 있다. 일부 예들에서, 전력 공급부(111)는 셧다운 모드에서 동작할 때, 예컨대 외부 디바이스로부터의 전력 수신이 중단되는 경우 하나 이상의 컴포넌트들에 전력을 제공하도록 구성된 하나 이상의 전력 저장 컴포넌트들을 포함할 수 있다. 이러한 방식으로, 전력 공급부(111)는 온보드 백업 전원으로서 기능할 수 있다. 하나 이상의 전력 저장 컴포넌트들의 일부 예들은 커패시터들, 수퍼커패시터들, 배터리들 등을 포함하지만 이로 제한되지 않는다. 일부 예들에서, 하나 이상의 전력 저장 컴포넌트들에 의해 저장될 수 있는 전력의 양은 하나 이상의 전력 저장 컴포넌트들의 비용 및/또는 크기(예를 들어, 면적/부피)의 함수일 수 있다. 다시 말해서, 하나 이상의 전력 저장 컴포넌트들에 의해 저장되는 전력의 양이 증가함에 따라, 하나 이상의 전력 저장 컴포넌트들의 비용 및/또는 크기가 또한 증가한다.
데이터 저장 디바이스(106)는 또한, 정보를 저장하기 위해 제어기(108)에 의해 이용될 수 있는 휘발성 메모리(112)를 포함한다. 휘발성 메모리(112)는 하나 이상의 휘발성 메모리 디바이스들을 포함할 수 있다. 일부 예들에서, 제어기(108)는 휘발성 메모리(112)를 캐시로서 이용할 수 있다. 예를 들어, 제어기(108)는 캐싱된 정보가 비휘발성 메모리(110)에 기록될 때까지 캐싱된 정보를 휘발성 메모리(112)에 저장할 수 있다. 도 1에 예시된 바와 같이, 휘발성 메모리(112)는 전력 공급부(111)로부터 수신된 전력을 소비할 수 있다. 휘발성 메모리(112)의 예들은 RAM(random-access memory), DRAM(dynamic random access memory), SRAM(static RAM), 및 SDRAM(synchronous dynamic RAM)(예컨대, DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4, LPDDR4 등)을 포함하지만, 이로 제한되지 않는다.
데이터 저장 디바이스(106)는 데이터 저장 디바이스(106)의 하나 이상의 동작들을 관리할 수 있는 제어기(108)를 포함한다. 예를 들어, 제어기(108)는 NVM(110)으로부터의 데이터의 판독 및/또는 NVM(110)으로의 데이터의 기록을 관리할 수 있다. 일부 실시예들에서, 데이터 저장 디바이스(106)가 호스트 디바이스(104)로부터 기록 커맨드를 수신할 때, 제어기(108)는 NVM(110)에 데이터를 저장하는 데이터 저장 커맨드를 개시하고 데이터 저장 커맨드의 진행을 모니터링할 수 있다. 제어기(108)는 저장 시스템(100)의 적어도 하나의 동작 특성을 결정하고 그 적어도 하나의 동작 특성을 NVM(110)에 저장할 수 있다. 일부 실시예들에서, 데이터 저장 디바이스(106)가 호스트 디바이스(104)로부터 기록 커맨드를 수신할 때, 제어기(108)는, NVM(110)로 데이터를 전송하기 전에 기록 커맨드와 관련된 데이터를 내부 메모리 또는 기록 버퍼(116)에 임시로 저장한다. 일부 다른 실시예들에서, HMB(140)가 이용될 수 있다.
도 2는 일 실시예에 따른 포기-미세 프로그래밍의 개략도이다. NVM(110)에 프로그래밍 시, 데이터는 초기에 SLC 메모리에 프로그래밍된다. SLC 메모리에 프로그래밍 후, 데이터가 이어서 QLC 메모리에 프로그래밍된다. QLC 메모리에 대한 제1 프로그램은 포기 프로그램이다. 포기 프로그래밍은, 전압 펄스들이 제공되어 현재 상태를 더 리졸브된 상태(resolved state), 그러나 완전히 리졸브되지는 않은 상태로 푸시하는 경우이다. QLC 메모리에 포기 프로그래밍 후, 데이터가 이어서 QLC 메모리에 미세 프로그래밍된다. 포기 프로그래밍 이후 소정 시점에 미세 프로그래밍이 수행되어 데이터를 완전히 리졸브된 상태로 다시 기록한다. 열거된 메모리들은 제한하고자 하는 것이 아니라, 가능한 실시예의 예를 제공하기 위한 것이다.
도 2에 관하여, 포기-미세 프로그래밍은 도 2의 NVM(110)과 같은 NVM의 QLC 메모리 블록(200)에서 구현된다. QLC 메모리 블록(200)은 복수의 워드라인들(WLN, WLN-1, WLN-2)을 포함한다. QLC 메모리 블록(200)은 복수의 스트링들(St0, St1, St2, St3)을 추가로 포함하여, 복수의 워드라인들의 각각의 워드라인이 복수의 스트링들을 포함하게 한다. 예를 들어, WLN은 St0, St1, St2, 및 St3을 포함한다. 또한, WLN, St0은 QLC 메모리 블록(200)의 메모리 블록을 나타낼 수 있으며, 여기서 데이터가 메모리 블록에 저장되고 메모리 블록으로부터 판독된다.
메모리 블록에 프로그래밍하는 동안, 프로그램은 전압 분포로 하여금 인접한 워드라인의 메모리 블록의 전압을 시프트시키거나 또는 교란시키게 할 수 있으며, 여기서 인접한 워드라인의 메모리 블록은 사전에 프로그래밍되는데, 이는 비트 에러들이 누적되게 하거나 비트 플립들이 발생하게 할 수 있다. 예를 들어, WLN St0에 대한 프로그래밍은 인접한 워드라인의 메모리 블록, WLN-1 St0의 전압을 교란시킬 수 있다. 따라서, QLC 메모리 블록(200)에 포기-미세 프로그래밍을 할 때, 포기-미세 프로그램은 인접한 워드라인들 사이에서 교번할 수 있다. 예를 들어, 도 2에서, WLN St0에 대한 포기 프로그래밍 이후, WLN-1 St0이 미세 프로그래밍되며, 여기서 WLN-1 St0은 사전에 포기 프로그래밍되었다. 포기 프로그래밍과는 달리, 메모리 블록에 미세 프로그래밍을 할 때, 대각선 패턴으로 나타나는, 사전에 미세 프로그래밍되었던 인접 메모리 블록은 그 메모리 블록에 대한 프로그래밍에 의해 영향을 받지 않을 수 있다. WLN-1 St0을 미세 프로그래밍한 후, 포기 프로그램이 WLN St1에 발생한다.
QLC 메모리 블록(200)에 프로그래밍하는 동안, 전력 손실 이벤트가 발생할 수 있다. 전력 손실 이벤트들의 예들에는 전력 서지들, 정전들, 트립형 차단기(tripped breaker)들, 단락 회로들 등이 포함될 수 있다. 전력 손실 이벤트가 발생할 때, 도 1의 데이터 저장 디바이스(106)와 같은 데이터 저장 디바이스는 휘발성 메모리로부터 비휘발성 메모리로 데이터를 프로그래밍하기에 충분한 커패시터들을 포함할 수 있다. 그러나, 일부 경우들에서, 커패시터들이 저장할 수 있는 전력의 양은 모든 데이터를 휘발성 메모리로부터 비휘발성 메모리로 완전히 프로그래밍하기에 충분하지 않을 수 있다. 전력 손실 이벤트가 프로그래밍 동작 동안 NVM에 대해 발생할 때, 도 1의 제어기(108)와 같은 제어기는 메모리 블록에서 현재 프로그램이 발생하고 있는 곳을 결정한다. 예를 들어, QLC 메모리 블록(200)에서, 제어기는, WLN-1 St2 메모리 블록에 대한 미세 프로그램과 같은 미세 프로그램 동안, 또는 WLN St3 메모리 블록에 대한 포기 프로그램과 같은 포기 프로그램 동안, 전력 손실 이벤트를 검출할 수 있으며, 여기서 제어기는 현재 프로그램이 발생하고 있는 곳을 결정한다.
도 3은 일 실시예에 따른 데이터 저장 디바이스를 위한 전력 손실 처리를 예시하는 방법(300)의 흐름도이다. 블록(302)에서, 호스트 데이터를 SLC 메모리에 먼저 프로그래밍한 후 호스트 데이터를 SLC 메모리로부터 QLC 메모리로 전달하는 것에 의한 SLC 대 QLC 폴딩에 의해, 도 2의 QLC 메모리 블록(200)과 같은 QLC 메모리 블록에 대한 프로그래밍이 발생한다. 블록(304)에서, UGSD와 같은 전력 손실 이벤트가 발생하며, 여기서 도 1의 제어기(108)와 같은 제어기가 전력 손실 이벤트를 검출한다. 블록(306)에서, QLC 프로그래밍이 종료된다. QLC 프로그래밍은 다수의 다이들에 걸친 메타 블록 또는 단일 다이 내의 구역화된 네임스페이스(zoned namespace, ZNS) 블록에 대한 것일 수 있다.
블록(308)에서, 데이터 저장 디바이스가 전력 예비부(즉, 커패시터들 또는 외부 전력 유닛)에 충분한 전력을 포함하는 경우, 제어기는 약 30 ms와 같은 허용된 전력 손실 보호 시간 한계 내에서 SLC 프로그램을 계속한다. 허용된 전력 손실 보호 시간 한계는 커패시터들이 데이터 저장 디바이스에 전력을 제공할 수 있는 시간의 총 시간에 대한 백분율일 수 있다. 또한, 블록(308)에서, 최종 QLC 프로그램 위치를 포함하는 제어 데이터가 NVM에 업로드된다. 제어 데이터는 SLC 블록 정보 및 종료된 QLC 블록 정보를 포함할 수 있다. 종료된 QLC 블록 정보는, 워드라인 정보 및 프로그램 스테이지, 예컨대, 종료된 프로그램이 미세 프로그램이었는지 또는 포기 프로그램이었는지를 포함할 수 있다. 블록(310)에서, 전력이 데이터 저장 디바이스에 복원된다.
블록(312)에서, 제어기는 전력 손실 이벤트가 발생했을 때 QLC 프로그래밍의 위치를 식별한다. 예를 들어, 위치는 도 2의 WLN-1 St2일 수 있다. 블록(314)에서, 제어기는 호스트 디바이스, 예컨대, 도 1의 호스트 디바이스(104)에 비지 블록 경고(busy-block-alert)를 발행한다. 비지 블록 경고는, 블록 복구 동작이 발생하고 있고 블록 복구 동작과 연관된 블록이 아직 신규 데이터를 수용할 준비가 되어 있지 않다는 통지이다. 비지 블록 경고는 또한, 블록 복구 동작과 연관된 블록에 속하는 데이터 및 SLC 블록에 저장된 블록과 연관된 데이터가 수정되지 않았음을 호스트 디바이스에 알릴 수 있다. 다시 말하면, 블록 복구 동작과 연관되는, 데이터 저장 디바이스의 임의의 위치에서의 블록의 데이터는 블록 복구 동작 동안 호스트 디바이스에 의해 변경되지 않아야 한다. 블록(316)에서, 호스트 디바이스는, 비지 블록 경고와 연관되는 블록들을 제외하고는, 데이터 저장 디바이스에 대한 기능들을 수행할 수 있다.
블록(318)에서, 제어기는 블록(312)에서의 식별된 위치가 포기 프로그램 위치였는지를 결정한다. 제어기는 최종 프로그래밍된 위치에 대한 QLC 프로그램 상태를 검사한다. 제어기는, 순차적으로, 메모리 블록의 다수의 워드라인들을 통해 검사하여 최종 프로그래밍된 워드라인을 찾고, 어느 워드라인이 최종 포기 워드라인인지 그리고 최종 미세 워드라인인지를 결정할 수 있다. 또한, 최종 프로그래밍된 위치는 또한 블록(308)의 제어 데이터의 일부로서 SLC 메모리에 저장될 수 있다. 그 위치가 블록(318)에서 포기 프로그램 위치였다면, 블록(320)에서, 포기 위치는 데이터가 SLC 메모리에 저장되었다면 계속 미세 프로그래밍될 수 있다.
그러나, 블록(318)에서, 제어기가 블록(312)에서의 식별된 위치가 포기 프로그램 위치가 아닌 것으로 결정한 경우, 블록(322)에서, 데이터는 전력 손실 이벤트가 블록(322)에서 발생했을 때 QLC 메모리 블록 위치에 미세 프로그래밍되고 있었다. 블록(324)에서, 제어기는 에러 정정 코드(ECC) 엔진을 이용하여 최종 미세 프로그래밍된 워드라인을 판독하고 최종 미세 프로그래밍된 워드라인에 대한 비트 에러 레이트(BER)를 검사한다.
블록(326)에서, 제어기는 BER이 미리 결정된 임계치보다 큰지 또는 그보다 작은지를 결정한다. 미리결정된 임계치는 데이터 저장 디바이스의 개시 시에 설정된 값 또는 데이터 저장 디바이스의 수명 및 동작을 통해 조정되는 구성가능한 값일 수 있으며, 여기서 구성가능한 값은 NVM의 개별 메모리 유닛들에 대해 특정적일 수 있다. 추가로, BER이 미리결정된 임계치보다 큰 경우, 제어기는 프로그래밍불가능한 위치로서 블록을 마킹할 수 있다.
블록(326)에서 BER이 미리결정된 임계치보다 작은 경우, 블록(328)에서, 제어기는 후속 프로그램을 위해 QLC 메모리 블록을 계속 이용할 수 있다. 그러나, 블록(326)에서 BER이 미리결정된 값보다 큰 경우, 블록(330)에서, 미세 프로그램의 QLC 메모리 블록 위치에 대한 SLC 데이터가 다른 SLC 백업 위치로 복사된다. 복사된 SLC 데이터는 미리결정된 임계치보다 큰 BER과 연관되는 워드라인에 대한 것이다. BER이 미리결정된 임계치보다 클 때, BER은 수용불가능한 BER(UBER)로 간주될 수 있다.
블록(332)에서, QLC 메모리 블록은 QLC 메모리 블록 위치에서의 누락된 양호한 데이터에 대해 전력 손실 테이블에서 마킹된다. 전력 손실 테이블은, 전력 손실에 의해 영향을 받았던 블록들의 양 및 SLC 백업 위치에 저장된 영향받은 워드라인들에 대한 백업 데이터를 포함할 수 있다. 추가로, 누락된 양호한 데이터는, 블록(308)에서 프로그래밍되었던 SLC 백업 위치에 저장된다. UBER과 연관되는 워드라인을 제외한 QLC 블록은 QLC 판독 및 기록 동작들을 위해 계속 이용될 수 있다. 블록(334)에서, 제어기는 호스트 디바이스에 블록 준비 경고를 발행하는데, 여기서 블록 준비 경고는 QLC 메모리 블록이 다시 액세스될 수 있음을 의미한다.
데이터 저장 디바이스가 호스트 디바이스로 하여금 블록(312)과 블록(332) 사이에서 판독 및 기록 커맨드들을 데이터 저장 디바이스의 다른 블록들로 계속 전송하게 허용할 수 있다는 것을 이해할 것이다.
도 4는 일 실시예에 따른 전력 손실로 유발되는 블록 고갈에 대한 검사를 예시하는 방법(400)의 흐름도이다. 블록(402)에서, 데이터 저장 디바이스는 전력 손실 이벤트가 발생한 후 전력이 복원된 이후 동작들을 재개한다. 블록(404)에서, 제어기는 후속 전력 손실 핸들링을 위해 이용될 수 있는 프리 블록들의 나머지 카운트를 검사한다. 프리 블록들의 양은 전력 손실 이벤트들에 의해 영향받지 않은 블록들 또는 프로그래밍이 되어 있지 않은 블록들일 수 있다. 블록(406)에서, 제어기는 SLC 백업 블록들을 계속 추적한다. 블록(408)에서, 제어기는 프리 블록들의 양이 너무 작은지 여부를 결정한다. 프리 블록들의 양이 너무 작은 것으로 결정할 때, 제어기는 프리 블록들의 양을 프리 블록 카운트의 미리결정된 임계치와 비교할 수 있다.
블록(408)에서 프리 블록들의 양이 너무 작지 않은 경우, 블록(410)에서, 제어기는 전력 손실 데이터 무결성 및 이용에 대해 계속 검사한다. 전력 손실 데이터 무결성 및 이용에 대한 검사는 이전에 기술된 도 3의 방법(300)일 수 있다. 그러나, 블록(408)에서 프리 블록들의 양이 너무 작은 경우, 블록(412)에서, 제어기는 NVM이 전력 손실을 핸들링하기에 충분한 메모리 공간을 갖고 있지 않을 수 있다고 결정한다. 그 결정은 현재 메모리 공간과 프리 블록 카운트의 미리결정된 임계치와의 비교일 수 있다. 블록(414)에서, 프리 블록 카운트의 양이 프리 블록 카운트의 미리결정된 임계치보다 적을 때(즉, 이용가능한 프리 블록들이 필요한 것보다 더 적을 때), 제어기는 SLC 백업 블록 영역에 저장될 추가 데이터용 메모리를 자유롭게 하기 위해서 SLC 백업 블록들을 클린 업(clean up)하도록 구성된다.
블록(416)에서, 제어기는 그 클린 업 동작 이후의 프리 블록들의 양이 여전히 너무 작은지 여부를 결정한다. 블록(416)에서 프리 블록들의 양이 미리결정된 임계값보다 큰 경우, 제어기는 전력 손실 데이터 무결성 및 이용에 대해 계속 검사하는데, 여기서 전력 손실 데이터 무결성 및 이용에 대한 검사는 도 3의 방법(300)일 수 있다. 그러나, 블록(416)에서 프리 블록들의 양이 프리 블록 카운트의 미리결정된 임계치보다 적은 경우, 제어기는 블록(418)에서 전력 손실 중단을 트리거한다. 전력 손실 중단은 호스트 디바이스로부터의 임의의 인입하는 데이터에 대한 논리 블록 어드레스(LBA) 경보를 발행하는 것을 포함할 수 있다. LBA 경보는 "저용량으로 인해 프로그래밍할 수 없음" 메시지를 포함할 수 있다. 추가로, 제어기는, 전력 손실 중단을 발행할 때 호스트 메시징에 대한 이벤트들을 로그한다.
UGSD 이벤트 이전에 이용되고 있었던 QLC 블록이 진행 중인 블록 복구를 겪고 있음을 호스트 디바이스에 경고할 뿐만 아니라 이용가능한 프리 블록들의 양을 모니터링함으로써, 데이터 저장 디바이스의 효율적인 이용이 발생된다.
일 실시예에서, 데이터 저장 디바이스는 비휘발성 메모리 디바이스; 및 비휘발성 메모리 디바이스에 커플링된 제어기를 포함하고, 제어기는 블록에 대한 프로그래밍 동작 동안 전력 손실 이벤트를 검출하고; 전력 손실 이벤트 이후 파워 업 시에 호스트 디바이스에 블록 비지 경고를 발행하고; 블록이 여전히 계속 프로그래밍될 수 있는지 여부를 결정하고; 호스트 디바이스에 블록 준비 경고를 발행하도록 구성된다. 제어기는 전력 손실 이벤트에서 블록에 대한 프로그래밍의 위치를 식별하도록 추가로 구성된다. 제어기는 위치가 포기 프로그래밍된 위치인지 또는 미세 프로그램 위치인지를 결정하도록 추가로 구성된다. 제어기는 그 위치에서 워드라인을 판독하고 워드라인에 대한 비트 에러 레이트를 검사하도록 추가로 구성된다. 제어기는 블록에 대한 비트 에러 레이트가 임계치를 초과하는지 또는 그 미만인지를 결정하도록 추가로 구성된다. 제어기는 특정 위치에서 누락된 양호한 데이터에 대해 전력 손실 테이블에서 블록을 마킹하도록 추가로 구성된다. 특정 위치에 대한 누락된 양호한 데이터는 SLC 백업 위치에 저장된다. 제어기는 전력 손실 이벤트의 시간에 프로그래밍되고 있었던 블록 내의 위치에 대해 비트 에러 레이트가 너무 높다고 결정할 때 하나의 SLC 위치로부터 다른 SLC 위치로 데이터를 복사하도록 추가로 구성된다. 데이터 저장 디바이스는 결정이 진행 중인 동안 호스트 디바이스로 하여금 데이터 저장 디바이스의 다른 블록들을 계속 이용할 수 있게 허용한다.
일 실시예에서, 데이터 저장 디바이스는 비휘발성 메모리 디바이스; 및 비휘발성 메모리 디바이스에 커플링된 제어기를 포함하고, 제어기는 전력 손실 이벤트 이후 파워 온을 결정하고; 후속 전력 손실 핸들링을 위해 이용될 수 있는 프리 블록들의 나머지 카운트를 검사하고; 프리 블록들의 나머지 양이 임계치를 초과하는지 또는 그 미만인지를 결정하고; 전력 손실 데이터 무결성 검사 및 이용을 계속 핸들링하거나; 또는 호스트 디바이스로부터의 임의의 인입하는 데이터에 대한 논리 블록 어드레스(LBA) 경보를 발행하도록 구성된다. 제어기는 다수의 SLC 백업 블록들을 계속 추적하도록 추가로 구성된다. 제어기는 프리 블록들의 나머지 양이 임계치를 초과한다고 결정할 때 전력 손실 데이터 무결성 검사 및 이용을 계속 핸들링하도록 추가로 구성된다. 제어기는 프리 블록들의 나머지 양이 임계치 미만이라고 결정할 때 SLC 백업 블록들을 클린 업하도록 추가로 구성된다. 제어기는 SLC 백업 블록들의 클린 업 이후 다른 시간에 프리 블록들의 나머지 양이 임계치를 초과하는지 또는 그 미만인지를 결정하도록 구성된다. 제어기는 프리 블록들의 나머지 양이 다른 시간에 임계치 미만이라고 결정할 때 LBA 경보를 발행하도록 구성된다. 전력 손실 데이터 무결성 검사 및 이용을 계속 핸들링하는 것은 블록 비지 경고를 호스트 디바이스에 발행하는 것을 포함한다. 제어기는 전력 손실 이벤트에서 프로그래밍되고 있었던 블록 내의 위치가 계속 프로그래밍될 수 있는지 또는 전력 손실 테이블 내에 누락된 양호한 데이터로서 표기된 위치를 가질 필요가 있는지를 결정하도록 추가로 구성된다. 제어기는 블록이 프로그래밍될 수 있다고 결정할 때 블록 준비 경고를 호스트 디바이스에 발행하도록 추가로 구성된다.
다른 실시예에서, 데이터 저장 디바이스는 비휘발성 메모리 디바이스; 전력 손실 이벤트 이후 블록이 계속 프로그래밍될 수 있는지 여부를 결정하기 위한 수단; 및 전력 손실 이벤트 이후 호스트 디바이스에 블록 비지 경고를 발행하기 위한 수단을 포함한다. 데이터 저장 디바이스는 전력 손실 이벤트 이후 이용가능한 프리 블록들을 추적하기 위한 수단을 추가로 포함한다.
전술한 것은 본 발명의 실시예들에 관한 것이지만, 본 발명의 다른 및 추가 실시예들이 본 발명의 기본 범주로부터 벗어남이 없이 고안될 수 있으며, 본 발명의 그 범주는 후속하는 청구범위에 의해 결정된다.

Claims (20)

  1. 데이터 저장 디바이스로서,
    비휘발성 메모리 디바이스; 및
    상기 비휘발성 메모리 디바이스에 커플링된 제어기를 포함하고, 상기 제어기는:
    블록에 대한 프로그래밍 동작 동안 전력 손실 이벤트를 검출하고;
    상기 전력 손실 이벤트 이후 파워 업(power up) 시에 호스트 디바이스에 블록-비지-경고(block-busy-alert)를 발행하고;
    상기 블록이 여전히 계속 프로그래밍될 수 있는지 여부를 결정하고;
    상기 호스트 디바이스에 블록-준비-경고를 발행하도록 구성되는, 데이터 저장 디바이스.
  2. 제1항에 있어서, 상기 제어기는 상기 전력 손실 이벤트에서 상기 블록에 대한 프로그래밍의 위치를 식별하도록 추가로 구성되는, 데이터 저장 디바이스.
  3. 제2항에 있어서, 상기 제어기는 상기 위치가 포기(foggy) 프로그래밍된 위치인지 또는 미세(fine) 프로그램 위치인지를 결정하도록 추가로 구성되는, 데이터 저장 디바이스.
  4. 제3항에 있어서, 상기 제어기는 상기 위치에서 워드라인을 판독하고 상기 워드라인에 대한 비트 에러 레이트를 검사하도록 추가로 구성되는, 데이터 저장 디바이스.
  5. 제1항에 있어서, 상기 제어기는 상기 블록에 대한 비트 에러 레이트가 임계치를 초과하는지 또는 그 미만인지를 결정하도록 추가로 구성되는, 데이터 저장 디바이스.
  6. 제1항에 있어서, 상기 제어기는 특정 위치에서 누락된 양호한 데이터에 대해 전력 손실 테이블에서 상기 블록을 마킹하도록 추가로 구성되는, 데이터 저장 디바이스.
  7. 제6항에 있어서, 상기 특정 위치에 대한 상기 누락된 양호한 데이터는 싱글 레벨 셀(single level cell, SLC) 백업 위치에 저장되는, 데이터 저장 디바이스.
  8. 제1항에 있어서, 상기 제어기는 상기 전력 손실 이벤트의 시간에 프로그래밍되고 있었던 상기 블록 내의 위치에 대해 비트 에러 레이트가 너무 높다고 결정할 때 하나의 SLC 위치로부터 다른 SLC 위치로 데이터를 복사하도록 추가로 구성되는, 데이터 저장 디바이스.
  9. 제1항에 있어서, 상기 데이터 저장 디바이스는 상기 결정이 진행 중인 동안 상기 호스트 디바이스로 하여금 상기 데이터 저장 디바이스의 다른 블록들을 계속 이용할 수 있게 허용하는, 데이터 저장 디바이스.
  10. 데이터 저장 디바이스로서,
    비휘발성 메모리 디바이스; 및
    상기 비휘발성 메모리 디바이스에 커플링된 제어기를 포함하고, 상기 제어기는:
    전력 손실 이벤트 후에 파워 온(power on)을 결정하고;
    후속 전력 손실 핸들링을 위해 이용될 수 있는 프리 블록(free block)들의 나머지 양을 검사하고;
    상기 프리 블록들의 나머지 양이 임계치 초과인지 또는 그 미만인지를 결정하며;
    전력 손실 데이터 무결성 검사 및 이용을 계속 핸들링하거나;
    호스트 디바이스로부터의 임의의 인입하는 데이터에 대한 논리 블록 어드레스(logical block address, LBA) 경보(warning) - 상기 LBA 경보는 블록-비지-경고임 - 를, 상기 호스트 디바이스에 발행하도록 구성되는, 데이터 저장 디바이스.
  11. 제10항에 있어서, 상기 제어기는 다수의 SLC 백업 블록들을 계속 추적하도록 추가로 구성되는, 데이터 저장 디바이스.
  12. 제10항에 있어서, 상기 제어기는 상기 프리 블록들의 나머지 양이 상기 임계치를 초과한다고 결정할 때 상기 전력 손실 데이터 무결성 검사 및 이용을 계속 핸들링하도록 추가로 구성되는, 데이터 저장 디바이스.
  13. 제10항에 있어서, 상기 제어기는 상기 프리 블록들의 나머지 양이 상기 임계치 미만이라고 결정할 때 SLC 백업 블록들을 클린 업(clean up)하도록 추가로 구성되는, 데이터 저장 디바이스.
  14. 제13항에 있어서, 상기 제어기는 상기 SLC 백업 블록들의 클린 업 이후 다른 시간에 상기 프리 블록들의 나머지 양이 임계치를 초과하는지 또는 그 미만인지를 결정하도록 구성되는, 데이터 저장 디바이스.
  15. 제14항에 있어서, 상기 제어기는 상기 프리 블록들의 나머지 양이 상기 다른 시간에 상기 임계치 미만이라고 결정할 때 상기 LBA 경보를 발행하도록 구성되는, 데이터 저장 디바이스.
  16. 제10항에 있어서, 상기 전력 손실 데이터 무결성 검사 및 이용을 계속 핸들링하는 것은 블록-비지-경고를 상기 호스트 디바이스에 발행하는 것을 포함하는, 데이터 저장 디바이스.
  17. 제16항에 있어서, 상기 제어기는 상기 전력 손실 이벤트에서 프로그래밍되고 있었던 블록 내의 위치가 계속 프로그래밍될 수 있는지, 또는
    상기 전력 손실 이벤트에서 프로그래밍되고 있었던 블록 내의 상기 위치가, 전력 손실 테이블 내에 누락된 양호한 데이터로서 표기되는 위치로 마킹될 필요가 있는지를 결정하도록 추가로 구성되는, 데이터 저장 디바이스.
  18. 제17항에 있어서, 상기 제어기는 상기 블록이 프로그래밍될 수 있다고 결정할 때 블록-준비-경고를 상기 호스트 디바이스에 발행하도록 추가로 구성되는, 데이터 저장 디바이스.
  19. 데이터 저장 디바이스로서,
    메모리 수단; 및
    상기 메모리 수단에 커플링된 제어기
    를 포함하고,
    상기 제어기는,
    전력 손실 이벤트 이후 블록이 계속 프로그래밍될 수 있는지 여부를 결정하도록; 그리고
    상기 전력 손실 이벤트 이후 블록-비지-경고를 호스트 디바이스에 발행하도록 구성되는 것인, 데이터 저장 디바이스.
  20. 제19항에 있어서, 상기 제어기는 상기 전력 손실 이벤트 이후 이용가능한 프리 블록들을 추적하도록 추가로 구성되는, 데이터 저장 디바이스.
KR1020210079148A 2020-10-28 2021-06-18 비정상적 셧다운과 연관된 효율적인 데이터 저장 이용 KR102574354B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063106544P 2020-10-28 2020-10-28
US63/106,544 2020-10-28
US17/184,533 2021-02-24
US17/184,533 US11416058B2 (en) 2020-10-28 2021-02-24 Efficient data storage usage associated with ungraceful shutdown

Publications (2)

Publication Number Publication Date
KR20220056783A KR20220056783A (ko) 2022-05-06
KR102574354B1 true KR102574354B1 (ko) 2023-09-01

Family

ID=81077030

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210079148A KR102574354B1 (ko) 2020-10-28 2021-06-18 비정상적 셧다운과 연관된 효율적인 데이터 저장 이용

Country Status (4)

Country Link
US (1) US11416058B2 (ko)
KR (1) KR102574354B1 (ko)
CN (1) CN114490426A (ko)
DE (1) DE102021115893A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220064592A (ko) * 2020-11-12 2022-05-19 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
TWI785571B (zh) * 2021-04-22 2022-12-01 群聯電子股份有限公司 資料儲存方法、記憶體控制電路單元以及記憶體儲存裝置
TWI802324B (zh) * 2022-03-18 2023-05-11 群聯電子股份有限公司 異常斷電恢復方法、記憶體控制電路單元以及記憶體儲存裝置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100064166A1 (en) * 2008-09-11 2010-03-11 Nec Laboratories America, Inc. Scalable secondary storage systems and methods
US20140269053A1 (en) * 2013-03-14 2014-09-18 Lsi Corporation Nonvolatile memory data recovery after power failure
US20140359382A1 (en) * 2013-06-03 2014-12-04 Shin-Ho Choi Memory controller and operating method providing replacement block for bad block
US20150106556A1 (en) 2008-06-18 2015-04-16 Super Talent Electronics, Inc. Endurance Translation Layer (ETL) and Diversion of Temp Files for Reduced Flash Wear of a Super-Endurance Solid-State Drive
US20150149693A1 (en) * 2013-11-25 2015-05-28 Sandisk Technologies Inc. Targeted Copy of Data Relocation
US20160211014A1 (en) * 2015-01-20 2016-07-21 Sandisk Technologies Inc. Initialization techniques for multi-level memory cells using multi-pass programming

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101495795B1 (ko) * 2008-06-13 2015-02-27 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
US6279153B1 (en) * 1995-10-16 2001-08-21 Nec Corporation Multi-user flash ROM update
US6122195A (en) * 1997-03-31 2000-09-19 Lexar Media, Inc. Method and apparatus for decreasing block write operation times performed on nonvolatile memory
US20110153912A1 (en) 2009-12-18 2011-06-23 Sergey Anatolievich Gorobets Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory
US9558839B2 (en) 2015-03-09 2017-01-31 Toshiba Corporation Power fail saving modes in solid state drive with MLC memory
US20180101219A1 (en) * 2016-10-06 2018-04-12 Microsoft Technology Licensing, Llc Preventing power gating of a domain
US9933963B1 (en) * 2017-03-01 2018-04-03 Seagate Technology Open block handling to reduce write errors
US10013194B1 (en) * 2017-06-02 2018-07-03 Western Digital Technologies, Inc. Handling thermal shutdown for memory devices
US10109361B1 (en) 2017-06-29 2018-10-23 Intel Corporation Coarse pass and fine pass multi-level NVM programming
US10593412B2 (en) * 2018-07-19 2020-03-17 Micron Technology, Inc. Using a status indicator in a memory sub-system to detect an event
KR20200011832A (ko) * 2018-07-25 2020-02-04 에스케이하이닉스 주식회사 메모리 시스템에서의 데이터 처리 방법 및 장치
JP2020030875A (ja) 2018-08-23 2020-02-27 キオクシア株式会社 メモリシステム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150106556A1 (en) 2008-06-18 2015-04-16 Super Talent Electronics, Inc. Endurance Translation Layer (ETL) and Diversion of Temp Files for Reduced Flash Wear of a Super-Endurance Solid-State Drive
US20100064166A1 (en) * 2008-09-11 2010-03-11 Nec Laboratories America, Inc. Scalable secondary storage systems and methods
US20140269053A1 (en) * 2013-03-14 2014-09-18 Lsi Corporation Nonvolatile memory data recovery after power failure
US20140359382A1 (en) * 2013-06-03 2014-12-04 Shin-Ho Choi Memory controller and operating method providing replacement block for bad block
US20150149693A1 (en) * 2013-11-25 2015-05-28 Sandisk Technologies Inc. Targeted Copy of Data Relocation
US20160211014A1 (en) * 2015-01-20 2016-07-21 Sandisk Technologies Inc. Initialization techniques for multi-level memory cells using multi-pass programming

Also Published As

Publication number Publication date
CN114490426A (zh) 2022-05-13
US20220129055A1 (en) 2022-04-28
KR20220056783A (ko) 2022-05-06
US11416058B2 (en) 2022-08-16
DE102021115893A1 (de) 2022-04-28

Similar Documents

Publication Publication Date Title
KR102574354B1 (ko) 비정상적 셧다운과 연관된 효율적인 데이터 저장 이용
US11520523B2 (en) Data integrity protection of ZNS needs
US11537510B2 (en) Storage devices having minimum write sizes of data
US11687405B2 (en) Centralized SRAM error location detection and recovery mechanism
JP7145289B2 (ja) 動的読み取り閾値較正
US11662941B2 (en) System and method for mitigating effect of erase cells on adjacent cells
US11651821B2 (en) Adaptive program verify scheme for performance improvement
US11294598B2 (en) Storage devices having minimum write sizes of data
WO2023101719A1 (en) Full die recovery in zns ssd
US20210397505A1 (en) Stressed Epwr To Reduce Product Level DPPM/UBER
US11853607B2 (en) Optimizing flash memory utilization for NVMe KV pair storage
US11537292B2 (en) Methods and apparatus for enhancing uber rate for storage devices
US20230214125A1 (en) Data Storage Device With Physical Health Indication
US11531473B1 (en) Selective HMB backup in NVM for low power mode
US11954334B2 (en) Back-to-back power loss protection
US11561717B2 (en) Data integrity protection of SSDs utilizing streams
US11704190B2 (en) UECC failure handling method
US11726911B2 (en) NVMe persistent memory region quick copy
US20230176775A1 (en) Enterprise Host Memory Buffer For DRAM-less SSD
US20230409237A1 (en) Data Storage Device With Weak Bits Handling

Legal Events

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