KR102409405B1 - 메모리 컨트롤러의 동작 방법 및 이를 포함하는 비휘발성 메모리 장치 - Google Patents

메모리 컨트롤러의 동작 방법 및 이를 포함하는 비휘발성 메모리 장치 Download PDF

Info

Publication number
KR102409405B1
KR102409405B1 KR1020220006488A KR20220006488A KR102409405B1 KR 102409405 B1 KR102409405 B1 KR 102409405B1 KR 1020220006488 A KR1020220006488 A KR 1020220006488A KR 20220006488 A KR20220006488 A KR 20220006488A KR 102409405 B1 KR102409405 B1 KR 102409405B1
Authority
KR
South Korea
Prior art keywords
program
die
memory controller
data
memory
Prior art date
Application number
KR1020220006488A
Other languages
English (en)
Other versions
KR102409405B9 (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 주식회사 노바칩스
Priority to KR1020220006488A priority Critical patent/KR102409405B1/ko
Application granted granted Critical
Publication of KR102409405B1 publication Critical patent/KR102409405B1/ko
Publication of KR102409405B9 publication Critical patent/KR102409405B9/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/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • 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/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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • G11C16/3459Circuits or methods to verify correct programming of nonvolatile memory cells

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

비휘발성 메모리 장치의 프로그램 동작 방법이 개시된다. 상기 비휘발성 메모리 장치의 프로그램 동작 방법은 메모리 컨트롤러는 호스트로부터 프로그램 명령을 수신하는 수신 동작을 수행하는 단계, 상기 메모리 컨트롤러는 상기 프로그램 명령에 따라 데이터를 휘발성 메모리에 저장하는 제1저장 동작을 수행하는 단계, 상기 메모리 컨트롤러는 상기 데이터를 제1다이에 포함된 제1데이터 레지스터에 저장하는 제2저장 동작을 수행하는 단계, 상기 메모리 컨트롤러는 상기 데이터를 제2다이에 포함된 제2데이터 레지스터에 저장하는 제3저장 동작을 수행하는 단계, 상기 메모리 컨트롤러는 상기 제1데이터 레지스터에 저장된 상기 데이터를 제1메모리 어레이의 제1페이지에 프로그램하는 제1프로그램 동작을 수행하는 단계. 및 상기 데이터가 상기 제1페이지에 프로그램되지 못할 때, 상기 메모리 컨트롤러는 상기 제2데이터 레지스터에 저장된 상기 데이터를 제2메모리 어레이의 제2페이지에 프로그램하는 제2프로그램 동작을 수행하는 단계를 포함한다.

Description

메모리 컨트롤러의 동작 방법 및 이를 포함하는 비휘발성 메모리 장치 {Method of operating memory controller and nonvolatile memory device including same}
본 발명은 메모리 컨트롤러의 동작 방법 및 이를 포함하는 비휘발성 메모리 장치에 관한 것으로, 상세하게는 프로그램 동작 실패시 프로그램 동작 방법에 관한 것이다.
비휘발성 메모리 장치는 스마트폰, 노트북, 태블릿 PC, 및 컴퓨터와 같은 전자 장치에 이용될 수 있다.
비휘발성 메모리에 데이터를 저장하는 프로그램 동작이 실패할 수 있다.
종래기술은 비휘발성 메모리에 데이터를 저장하는 프로그램 동작이 실패될 때, 상기 비휘발성 메모리의 다른 블록의 페이지에 데이터를 다시 저장하였다. 종래기술은 상기 프로그램 동작이 실패할 경우를 대비하여 프로그램 동작이 성공적으로 완료될 때까지 상기 비휘발성 메모리의 메모리 컨트롤러는 상기 비휘발성 메모리의 메모리 컨트롤러 내부, 또는 외부에 구현된 휘발성 메모리에 데이터를 저장하고 있어야만 했다. 이로 인해 상기 휘발성 메모리가 효율적으로 활용될 수 없었다.
한국 등록특허공보 제10-1996004호(2019.06.27.)
본 발명이 이루고자 하는 기술적인 과제는 메모리 컨트롤러 내부의 휘발성 메모리를 효율적으로 활용하기 위한 메모리 컨트롤러의 동작 방법 및 이를 포함하는 비휘발성 메모리 장치를 제공하는 것이다.
본 발명의 실시 예에 따른 메모리 컨트롤러의 동작 방법은 메모리 컨트롤러는 호스트로부터 프로그램 명령을 수신하는 수신 동작을 수행하는 단계, 상기 메모리 컨트롤러는 상기 프로그램 명령에 따라 데이터를 휘발성 메모리에 저장하는 제1저장 동작을 수행하는 단계, 상기 메모리 컨트롤러는 상기 데이터를 제1다이에 포함된 제1데이터 레지스터에 저장하는 제2저장 동작을 수행하는 단계, 상기 메모리 컨트롤러는 상기 데이터를 제2다이에 포함된 제2데이터 레지스터에 저장하는 제3저장 동작을 수행하는 단계, 상기 메모리 컨트롤러는 상기 제1데이터 레지스터에 저장된 상기 데이터를 제1메모리 어레이의 제1페이지에 프로그램하는 제1프로그램 동작을 수행하는 단계, 및 상기 데이터가 상기 제1페이지에 프로그램되지 못할 때, 상기 메모리 컨트롤러는 상기 제2데이터 레지스터에 저장된 상기 데이터를 제2메모리 어레이의 제2페이지에 프로그램하는 제2프로그램 동작을 수행하는 단계를 포함한다.
실시 예에 따라 상기 메모리 컨트롤러의 동작 방법은 상기 데이터가 상기 제1페이지에 성공적으로 프로그램될 때, 상기 메모리 컨트롤러는 상기 제2데이터 레지스터에 저장된 상기 데이터를 삭제하는 삭제 동작을 수행하는 단계를 더 포함할 수 있다.
상기 제1다이와 상기 제2다이는 하나의 비휘발성 메모리 칩, 또는 서로 다른 비휘발성 메모리 칩들에 포함된다.
실시 예에 따라 상기 메모리 컨트롤러의 동작 방법은 상기 메모리 컨트롤러는 상기 데이터를 상기 제1데이터 레지스터와 상기 제2데이터 레지스터에 저장한 후, 상기 휘발성 메모리에 포함된 상기 데이터를 삭제하는 단계를 더 포함할 수 있다.
실시 예에 따라 상기 메모리 컨트롤러의 동작 방법은 상기 메모리 컨트롤러는 상기 제1다이에 포함된 복수의 블록들과, 상기 제2다이에 포함된 복수의 블록들에 대해 프로그램/삭제(erase) 사이클들의 수를 카운트하는 단계, 상기 메모리 컨트롤러는 상기 제1다이에 대한 상기 카운트된 프로그램/삭제 사이클들의 수가 문턱값보다 큰 지 결정하는 단계, 및 상기 메모리 컨트롤러는 상기 제1다이에 대한 카운트된 프로그램/삭제 사이클들의 수가 상기 문턱값보다 크다고 결정할 때, 상기 메모리 컨트롤러는 상기 제1다이에 대해 다른 프로그램 명령에 따른 프로그램 실패가 발생하는지 확인하는 단계를 포함하며, 상기 메모리 컨트롤러는 상기 제1다이에 상기 다른 프로그램 명령에 따른 프로그램 실패가 발생하였음을 확인하고, 상기 제2다이에 대한 카운트된 프로그램/삭제 사이클들의 수가 상기 문턱값보다 작다고 결정할 때, 상기 메모리 컨트롤러는 상기 프로그램 명령에 따른 상기 수신 동작, 상기 제1저장 동작, 상기 제2저장 동작, 상기 제3저장 동작, 상기 제1프로그램 동작, 및 상기 제2프로그램 동작을 수행하며, 상기 메모리 컨트롤러는 상기 제1다이와 상기 제2다이 각각에 대한 상기 카운트된 프로그램/삭제 사이클들의 수가 상기 문턱값보다 모두 작다고 결정할 때, 상기 메모리 컨트롤러는 상기 프로그램 명령에 따른 상기 수신 동작, 상기 제1저장 동작, 상기 제2저장 동작, 및 상기 제1프로그램 동작을 수행하며, 상기 제3저장 동작과 상기 제2프로그램 동작을 수행하지 않는다.
실시 예에 따라 상기 메모리 컨트롤러의 동작 방법은 상기 메모리 컨트롤러는 상기 제1다이에 대한 프로그램/삭제 사이클들의 수가 임의의 횟수에 도달할 때까지 임의의 프로그램 명령들에 대한 프로그램 실패 횟수를 카운트하는 단계를 더 포함하며, 상기 제1다이에 대한 상기 카운트된 프로그램 실패 횟수가 임의의 값보다 크지 않을 때, 상기 메모리 컨트롤러는 다음 프로그램 명령에 대해 상기 수신 동작, 상기 제1저장 동작, 상기 제2저장 동작, 및 상기 제1프로그램 동작을 수행하며, 상기 제3저장 동작과 상기 제2프로그램 동작을 수행하지 않는다.
실시 예에 따라 상기 메모리 컨트롤러의 동작 방법은 상기 메모리 컨트롤러는 상기 제1다이의 품질과 상기 제2다이의 품질이 서로 다르다고 인식할 때, 상기 메모리 컨트롤러는 상기 제1다이에 대해 다른 프로그램 명령에 따른 프로그램 실패가 발생하는지 확인하는 단계를 더 포함하며, 상기 메모리 컨트롤러는 상기 제1다이에 대해 상기 다른 프로그램에 따른 상기 프로그램 실패가 발생하는지 확인할 때, 상기 메모리 컨트롤러는 상기 프로그램 명령에 따른 상기 수신 동작, 상기 제1저장 동작, 상기 제2저장 동작, 상기 제3저장 동작, 상기 제1프로그램 동작, 및 상기 제2프로그램 동작을 수행한다.
실시 예에 따라 상기 메모리 컨트롤러의 동작 방법은 상기 메모리 컨트롤러는 상기 제1다이에 대한 프로그램/삭제 사이클들의 수가 임의의 횟수에 도달할 때까지 임의의 프로그램 명령들에 대한 프로그램 실패 횟수를 카운트하는 단계를 더 포함하며, 상기 제1다이에 대한 상기 카운트된 프로그램 실패 횟수가 임의의 값보다 크지 않을 때, 상기 메모리 컨트롤러는 또 다른 프로그램 명령에 대해 상기 수신 동작, 상기 제1저장 동작, 상기 제2저장 동작, 및 상기 제1프로그램 동작을 수행하며, 상기 제3저장 동작과 상기 제2프로그램 동작을 수행하지 않는다.
본 발명의 실시 예에 따른 비휘발성 메모리 장치는 제1데이터 레지스터와 제1페이지를 포함하는 제1다이, 제2데이터 레지스터와 제2페이지를 포함하는 제2다이, 및 휘발성 메모리와 프로세서를 포함하는 메모리 컨트롤러를 포함한다.
상기 프로세서는 호스트로부터 프로그램 명령을 수신하는 수신 동작을 수행하며, 상기 프로그램 명령에 따라 데이터를 상기 휘발성 메모리에 저장하는 제1저장 동작을 수행하며, 상기 데이터를 상기 제1데이터 레지스터에 저장하는 제2저장 동작을 수행하며, 상기 데이터를 상기 제2데이터 레지스터에 저장하는 제3저장 동작을 수행하며, 상기 제1데이터 레지스터에 저장된 상기 데이터를 상기 제1페이지에 프로그램하는 제1프로그램 동작을 수행하며, 상기 데이터가 상기 제1페이지에 프로그램되지 못할 때, 상기 제2데이터 레지스터에 저장된 상기 데이터를 상기 제2페이지에 프로그램하는 제2프로그램 동작을 수행한다.
실시 예에 따라 상기 프로세서는 상기 데이터가 상기 제1페이지에 성공적으로 프로그램될 때, 상기 제2데이터 레지스터에 저장된 상기 데이터를 삭제하는 삭제 동작을 수행한다.
상기 제1다이와 상기 제2다이는 하나의 비휘발성 메모리 칩, 또는 서로 다른 비휘발성 메모리 칩들에 구현된다.
실시 예에 따라 상기 프로세서는 상기 데이터를 상기 제1데이터 레지스터와 상기 제2데이터 레지스터에 저장한 후, 상기 휘발성 메모리에 포함된 상기 데이터를 삭제한다.
실시 예에 따라 상기 프로세서는 상기 제1다이에 포함된 복수의 블록들과, 상기 제2다이에 포함된 복수의 블록들에 대해 프로그램/삭제(erase) 사이클들의 수를 카운트하며, 상기 제1다이와 상기 제2다이 각각에 대한 상기 카운트된 프로그램/삭제 사이클들의 수가 문턱값보다 큰 지 결정하며, 상기 제1다이에 대한 카운트된 프로그램/삭제 사이클들의 수가 문턱값보다 크다고 결정할 때, 상기 제1다이에 대해 다른 프로그램 명령에 따른 프로그램 실패가 발생하는지 확인하며, 상기 제1다이에 상기 다른 프로그램 명령에 따른 프로그램 실패가 발생하였음을 확인하고, 상기 제2다이에 대한 카운트된 프로그램/삭제 사이클들의 수가 상기 문턱값보다 작다고 결정할 때,상기 프로그램 명령에 따른 상기 수신 동작, 상기 제1저장 동작, 상기 제2저장 동작, 상기 제3저장 동작, 상기 제1프로그램 동작, 및 상기 제2프로그램 동작을 수행하며, 상기 제1다이와 상기 제2다이 각각에 대한 상기 카운트된 프로그램/삭제 사이클들의 수가 상기 문턱값보다 모두 작다고 결정할 때, 상기 프로그램 명령에 따른 상기 수신 동작, 상기 제1저장 동작, 상기 제2저장 동작, 및 상기 제1프로그램 동작을 수행하며, 상기 제3저장 동작과 상기 제2프로그램 동작을 수행하지 않는다.
본 발명의 실시 예에 따른 비휘발성 메모리 장치 및 이의 프로그램 동작 방법은 메모리 컨트롤러가 서로 다른 다이들에 포함된 데이터 레지스터들 각각에 데이터를 저장함으로써 프로그램 동작 실패를 대비하여 상기 데이터를 상기 메모리 컨트롤러 내부의 휘발성 메모리에 저장할 필요가 없고 이에 따라 상기 휘발성 메모리의 효율성이 증가한다는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 비휘발성 메모리 시스템의 블록도를 나타낸다.
도 2는 본 발명의 실시 예에 따른 비휘발성 메모리 장치의 프로그램 동작 방법의 흐름도를 나타낸다.
도 3은 본 발명의 다른 실시 예에 따른 비휘발성 메모리 장치의 프로그램 동작 방법의 흐름도를 나타낸다.
도 4는 본 발명의 또 다른 실시 예에 따른 비휘발성 메모리 장치의 프로그램 동작 방법의 흐름도를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1구성요소는 제2구성요소로 명명될 수 있고, 유사하게 제2구성요소는 제1구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않은 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다." 또는 "가지다." 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 명세서에는 여러 개의 프로그램 명령들이 설명된다. 여러 개의 프로그램 명령들은 순서에 따라 제1, 2, 3, 4 프로그램 명령들로 호칭될 수 있다. 예컨대, 프로그램 명령, 다음 프로그램 명령, 다른 프로그램 명령, 또 다른 프로그램 명령은 제1프로그램 명령, 제2프로그램 명령, 제3프로그램 명령, 또는 제4프로그램 명령으로 호칭될 수 있다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 비휘발성 메모리 시스템의 블록도를 나타낸다.
도 1을 참고하면, 비휘발성 메모리 시스템(100)은 호스트(110)와 비휘발성 메모리 장치(120)를 포함한다.
호스트(110)는 서버, 컴퓨터, 스마트폰, 또는 태블릿 PC와 같은 전자 장치일 수 있다. 도 1에서 호스트(110)는 비휘발성 메모리 장치(120)와 분리되는 것으로 도시되었으나, 실시 예에 따라 호스트(110)는 비휘발성 메모리 장치(120)와 통합될 수 있다. 호스트(110)는 비휘발성 메모리 칩들(200, 300, ... 및 400)에 데이터를 저장하기 위한 프로그램 명령, 비휘발성 메모리 칩들(200, 300, ... 및 400)에 저장된 데이터를 읽기 위한 리드 명령, 또는 비휘발성 메모리 칩들(200, 300, ... 및 400)에 저장된 데이터를 삭제하기 위한 삭제 명령을 비휘발성 메모리 장치(120)로 전송한다.
비휘발성 메모리 장치(120)는 메모리 컨트롤러(130)와 비휘발성 메모리 칩들(200, 300, ... 및 400)을 포함한다.
메모리 컨트롤러(130)는 비휘발성 메모리 장치(120)의 동작들을 제어한다.
예컨대, 메모리 컨트롤러(130)는 호스트(110)로부터 프로그램 명령, 리드 명령, 또는 삭제 명령을 수신하여 비휘발성 메모리 칩들(200, 300, ... 및 400)에 데이터를 저장하는 동작, 비휘발성 메모리 칩들(200, 300, ... 및 400)에 저장된 데이터를 읽는 동작, 또는 비휘발성 메모리 칩들(200, 300, ... 및 400)에 저장된 데이터를 삭제하는 동작을 제어한다.
메모리 컨트롤러(130)는 호스트 인터페이스(131), 프로세서(133), 휘발성 메모리(135), ROM(137), 및 비휘발성 메모리 인터페이스(139)를 포함한다.
호스트 인터페이스(131)는 네트워크를 통해 호스트(110)와 비휘발성 메모리 장치(120)를 인터페이스하기 위해 구현된다. 호스트 인터페이스(131)는 SCSI(Small Computer System Interface), SAS(Serial Attached SCSI(SAS), SATA(Serial Advanced Technology Attachment), eMMC(embedded Multi-Media Card), UFS(Universal Flash Storage), SD(Secure Digital) 카드 또는 PCIe(PCI express)와 같은 버스 표준이 이용될 수 있다. 실시 예에 따라 호스트(110)와 비휘발성 메모리 장치(120)는 무선으로 인터페이스될 수 있다. 호스트 인터페이스(131)는 호스트(110)로부터 프로그램 명령, 리드 명령, 또는 삭제 명령을 수신한다. 호스트 인터페이스(131)는 비휘발성 메모리 인터페이스(139)를 통해 비휘발성 메모리 칩들(200, 300, ... 및 400)과 인터페이스한다.
프로세서(133)는 메모리 컨트롤러(130)의 동작을 수행하기 위한 명령들을 실행한다. 상기 명령들은 ROM(137), 또는 비휘발성 메모리 칩들(200, 300, ... 및 400)에 저장될 수 있다. 이하, 메모리 컨트롤러(130)의 동작은 프로세서(133)의 동작으로 이해될 수 있다.
휘발성 메모리(135)는 비휘발성 메모리 칩들(200, 300, ... 및 400)에 저장될 데이터, 또는 비휘발성 메모리 칩들(200, 300, ... 및 400)으로부터 리드된 데이터 저장할 수 있다. 구체적으로, 휘발성 메모리(135)는 다이들(210, 220, ..., 330)에 포함된 메모리 어레이들(213, 223, ... 323)에 저장될 데이터, 또는 비휘발성 메모리 칩들(200, 300, ... 및 400)으로부터 리드된 데이터 저장할 수 있다.
휘발성 메모리(135)는 DRAM(Dynamic Random Access Memory), 또는 SRAM(Static Random Access Memory)일 수 있다. 휘발성 메모리(135)는 데이터를 임시적으로 저장하기 위해 이용된다. 휘발성 메모리(135)는 라이트 버퍼(write buffer), 리드 버퍼(read buffer), 또는 데이터 버퍼라고 호칭될 수 있다. 실시 예에 따라 휘발성 메모리(135)는 다양한 용어들로 호칭될 수 있다. 도 1에서 휘발성 메모리(135)는 메모리 컨트롤러(130)의 내부에 구현되는 것으로 도시되었으나, 실시 예에 따라 휘발성 메모리(135)는 메모리 컨트롤러(130)의 외부에 구현될 수 있다.
비휘발성 메모리 칩들(200, 300, ... 및 400)은 호스트(110)로부터 수신된 데이터를 저장하기 위해 구현된다. 실시 예에 따라 비휘발성 메모리 칩들(200, 300, 및 400)의 수는 다양할 수 있다.
비휘발성 메모리 칩들(200, 300, ... 및 400) 각각은 복수의 다이들을 포함한다. 예컨대, 제1비휘발성 메모리 칩(200)은 복수의 다이들(210~230)을 포함한다. 실시 예에 따라 하나의 비휘발성 메모리 칩(200)에 포함되는 복수의 다이들(210~230)의 수는 다양할 수 있다.
제2비휘발성 메모리 칩(300)은 복수의 다이들(310, 320, 및 330)을 포함한다. 실시 예에 따라 하나의 비휘발성 메모리 칩(300)에 포함되는 복수의 다이들(310~330)의 수는 다양할 수 있다.
복수의 다이들(210~230, 310~330) 각각은 NAND 플래시 메모리이다. 실시 예에 따라 복수의 다이들(210~230, 310~330) 각각은 상 변화 메모리(phase change memory), ReRAM 메모리, MRAM, 또는 다른 솔리드 스테이트 메모리(sold state memory)일 수 있다.
복수의 다이들(210~230, 310~330) 각각은 데이터 레지스터들(211, 221, 321)과 메모리 어레이들(213, 223, 323)을 포함한다. 예컨대, 제1다이(210)는 제1데이터 레지스터(211)와 제1메모리 어레이(213)를 포함할 수 있다. 제2다이(220)는 제2데이터 레지스터(221)와 제2메모리 어레이(223)를 포함할 수 있다. 실시 예에 따라 제1다이(210)는 복수의 데이터 레지스터들과 복수의 메모리 어레이들을 포함할 수 있다. 즉, 각 다이에 포함되는 데이터 레지스터들의 수와 메모리 어레이들의 수는 다양할 수 있다.
데이터 레지스터들(211, 221, 321) 각각은 임시적으로 데이터를 저장한다.
메모리 어레이들(213, 223, 323)은 복수의 페이지들로 나뉠 수 있다. 각 페이지는 프로그램될 수 있는 단위이다.
이하, 메모리 컨트롤러(130)의 동작 방법에 대해 설명된다.
도 2는 본 발명의 실시 예에 따른 비휘발성 메모리 장치의 프로그램 동작 방법의 흐름도를 나타낸다.
도 1과 도 2를 참고하면, 메모리 컨트롤러(130)는 호스트(110)로부터 프로그램 명령을 수신하는 수신 동작을 수행한다(S10).
메모리 컨트롤러(130)는 상기 프로그램 명령에 따라 데이터를 휘발성 메모리(135)에 저장하는 제1저장 동작을 수행한다(S20).
메모리 컨트롤러(130)는 상기 데이터를 제1다이(210)에 포함된 제1데이터 레지스터(211)에 저장하는 제2저장 동작을 수행한다(S30).
메모리 컨트롤러(130)는 상기 데이터를 제2다이(220)에 포함된 제2데이터 레지스터(221)에 저장하는 제3저장 동작을 수행한다(S40). 실시 예에 따라 메모리 컨트롤러(130)는 상기 데이터를 제2다이(320)에 포함된 제2데이터 레지스터(321)에 저장한다. 이때, 제1다이(210)와 제2다이(320)는 서로 다른 칩에 구현될 수 있다. 즉, 제1다이(210)는 제1비휘발성 메모리 칩(200)에서 구현되고, 제2다이(320)는 제2비휘발성 메모리 칩(300)에서 구현될 수 있다.
또한, 실시 예에 따라 메모리 컨트롤러(130)는 상기 데이터를 제2다이(220)에 포함된 제2데이터 레지스터(221)에 저장함과 동시에 상기 데이터를 다른 다이(예컨대, 320)에 포함된 데이터 레지스터(예컨대, 321)에 저장할 수 있다. 즉, 상기 데이터는 3개 이상의 데이터 레지스터들(예컨대, 211, 221, 및 321)에 동시에 저장될 수 있다.
메모리 컨트롤러(130)는 제1데이터 레지스터(211)에 저장된 상기 데이터를 제1페이지(215)에 프로그램하는 제1프로그램 동작을 수행한다(S50). 본 명세서에서 제1프로그램 동작이란 데이터가 제1페이지(215)에 저장되는 것을 의미한다. 제1페이지(215)는 제1메모리 어레이(213)에 포함된 복수의 페이지들 중 어느 하나이다.
메모리 컨트롤러(130)는 제1데이터 레지스터(211)에 저장된 상기 데이터를 제1페이지(215)에 성공적으로 프로그램되었는지 판단한다(S60).
복수의 다이들(210, 220) 각각은 R/B(ready/Busy) 핀을 포함한다. 상기 R/B 핀은 복수의 다이들(210, 220) 각각의 동작 상태를 나타낸다. 상기 R/B 핀이 활성화될 때, 프로그램 명령, 리드 명령, 또는 삭제 명령은 종료됨을 의미한다. 상기 활성화는 하이 상태를 의미한다. 상기 R/B핀이 로우 상태일 때, 프로그램 명령에 따른 프로그램 동작, 삭제 명령에 따른 삭제 동작, 또는 리드 명령에 따른 리드 동작이 진행 중임을 나타낸다.
프로세서(133)는 상기 R/B 핀을 이용하여 프로그램의 종료를 확인한 후 복수의 다이들(210, 220) 각각에 포함된 상태 레지스터(미도시)를 리드하여 프로그램 명령, 리드 명령, 또는 삭제 명령에 따른 동작의 성공, 또는 실패 여부를 결정한다. 프로세서(133)는 상기 R/B 핀을 이용하여 프로그램의 종료를 확인한 후 제1다이(210)에 포함된 상태 레지스터를 리드하여 상기 프로그램 명령에 따른 데이터가 제1페이지(215)에 프로그램되었는지 여부를 결정할 수 있다.
실시 예에 따라 프로세서(133)는 다른 방법으로 프로그램 성공 여부를 판단할 수 있다. 제1데이터 레지스터(211)에 저장된 상기 데이터를 제1페이지(215)에 프로그램 후 프로세서(133)는 일정 시간 동안 대기한다. 상기 일정 시간이 지난 후 프로세서(133)는 제1다이(210)에 포함된 상태 레지스터를 리드하여 상기 프로그램 명령에 따른 데이터가 제1페이지(215)에 프로그램되었는지 여부를 결정할 수 있다. 즉, 실시 예에 따라 프로세서(133)는 R/B 핀을 이용하지 않을 수 있다.
상기 데이터가 제1페이지(215)에 프로그램되지 못할 때, 메모리 컨트롤러(130)는 제2데이터 레지스터(221)에 저장된 상기 데이터를 제2페이지(225)에 프로그램하는 제2프로그램 동작을 수행한다(S70). 제2페이지(225)는 제2메모리 어레이(223)에 포함된 복수의 페이지들 중 어느 하나이다. 제2프로그램 동작이란 데이터가 제2페이지(225)에 저장되는 것을 의미한다.
실시 예에 따라 상기 데이터가 제1페이지(215)에 프로그램되지 못할 때, 메모리 컨트롤러(130)는 제2데이터 레지스터(221)에 저장된 상기 데이터를 제2페이지(225)에 프로그램하는 프로그램 동작을 수행하는 것이 아니라, 다른 데이터 레지스터(예컨대, 321)에 저장된 데이터를 다른 페이지(예컨대, 325)에 프로그램하는 프로그램 동작을 수행할 수 있다.
상기 데이터가 제1페이지(215)에 성공적으로 프로그램될 때, 메모리 컨트롤러(130)는 제2데이터 레지스터(221)에 저장된 상기 데이터를 삭제하는 삭제 동작을 수행한다(S80). 실시 예에 따라 상기 삭제 동작은 수행되지 않을 수 있다.
제1다이(210)와 제2다이(220)는 하나의 비휘발성 메모리 칩(200)에 포함될 수 있다. 실시 예에 따라 제1다이(210)와 제2다이(320)는 서로 다른 비휘발성 메모리 칩들(200, 300)에 포함될 수 있다. 예컨대, 제1다이(210)는 제1비휘발성 메모리 칩(200)에 포함되고, 제2다이(320)는 제2비휘발성 메모리 칩(300)에 포함될 수 있다.
메모리 컨트롤러(130)는 상기 데이터를 제1데이터 레지스터(211)와 제2데이터 레지스터(221)에 저장한 후, 휘발성 메모리(135)에 포함된 상기 데이터를 삭제한다.
휘발성 메모리(135)는 데이터가 비휘발성 메모리 칩(200, 300, ... 또는 400)에 성공적으로 저장될 때까지 상기 데이터를 저장할 필요가 없다. 종래 기술의 경우, 휘발성 메모리(135)는 데이터를 비휘발성 메모리 칩(200, 300, ... 또는 400)에 성공적으로 저장될 때까지 저장하고 있어야만 했다. 이때, 휘발성 메모리(135)는 상기 데이터를 저장하고 있어야 하므로, 휘발성 메모리(135)의 저장공간을 효율적으로 이용하지 못하였다. 본 발명의 휘발성 메모리(135)는 데이터가 비휘발성 메모리 칩(200, 300, ... 또는 400)에 성공적으로 저장될 때까지 상기 데이터를 저장할 필요가 없으므로, 효율적인 휘발성 메모리(135)의 사용이 가능하다.
또한, 종래기술은 데이터가 메모리 어레이(213)에 포함된 페이지에 성공적으로 프로그램되지 못할 때, 휘발성 메모리(135)에 저장된 데이터가 메모리 어레이(213)의 다른 페이지로 전송되어 메모리 어레이(213)의 다른 페이지에 다시 프로그램되었다. 이 경우, 메모리 어레이(213)가 모두 배드 블록들일 때, 메모리 어레이(213)의 다른 페이지에 데이터가 다시 성공적으로 프로그램될 수 없다는 문제점이 있다.
도 3은 본 발명의 다른 실시 예에 따른 비휘발성 메모리 장치의 프로그램 동작 방법의 흐름도를 나타낸다.
도 1 내지 도 3을 참고하면, 메모리 컨트롤러(130)는 제1다이(210)에 포함된 복수의 블록들과, 제2다이(220)에 포함된 복수의 블록들에 대해 프로그램/삭제(erase) 사이클들의 수를 카운트한다(S100). 호스트(110)로부터 프로그램 명령을 수신할 때, 임의의 시간에, 또는 임의의 시간 주기로, 메모리 컨트롤러(130)는 제1다이(210)에 포함된 복수의 블록들과, 제2다이(220)에 포함된 복수의 블록들에 대해 프로그램/삭제(erase) 사이클들의 수를 카운트할 수 있다.
메모리 컨트롤러(130)는 제1다이(210)에 대한 상기 카운트된 프로그램/삭제 사이클들의 수가 문턱값보다 큰 지 결정한다(S110).
메모리 컨트롤러(130)는 상기 계산된 프로그램/삭제 사이클들의 수가 문턱값보다 작다고 결정할 때, 메모리 컨트롤러(130)는 프로그램 명령에 대해 도 2에서 설명된 상기 제3저장 동작(S40)과 상기 제2프로그램 동작(S50)을 수행하지 않는다(S120). 즉, 메모리 컨트롤러(130)는 호스트(110)로부터 프로그램 명령을 수신할 때(S10), 메모리 컨트롤러(130)는 상기 프로그램 명령에 따라 데이터를 휘발성 메모리(135)에 저장하고(S20), 휘발성 메모리(135)에 저장된 상기 데이터를 제1다이(210)에 포함된 제1데이터 레지스터(211)에 저장하고(S30), 제1데이터 레지스터(211)에 저장된 상기 데이터를 제1페이지(215)에 프로그램하고(S50), 제1데이터 레지스터(211)에 저장된 상기 데이터를 제1페이지(215)에 성공적으로 프로그램되었는지 판단한다(S60).
실시 예에 따라 호스트(110)로부터 프로그램 명령을 수신할 때, S100 동작, S110 동작, S120 동작이 수행될 수 있다. S120 동작이 수행된다함은 메모리 컨트롤러(130)는 상기 제3저장 동작(S40)과 상기 제2프로그램 동작(S50)을 수행하지 않는 것을 의미한다.
메모리 컨트롤러(130)는 임의의 시간에, 또는 임의의 시간 주기로, 제1다이(210)에 포함된 복수의 블록들과, 제2다이(220)에 포함된 복수의 블록들에 대해 프로그램/삭제(erase) 사이클들의 수를 카운트할 때, S110 동작이 수행된다. 그리고 S120 동작은 프로그램 명령에 따라 수행될 수 있다.
본 명세서에서 제3저장 동작(S40)과 제2프로그램 동작(S70)을 수행하지 않는다는 것은 프로그램 명령에 따라 데이터를 휘발성 메모리(135)에 저장하고 데이터를 하나의 다이(예컨대, 210)에 포함된 데이터 레지스터(예컨대, 211)에 저장하고 데이터 레지스터(예컨대, 211)에 저장된 상기 데이터를 페이지(예컨대, 215)에 프로그램하는 것을 의미한다. 즉, 메모리 컨트롤러(130)는 프로그램 명령에 대해 상기 데이터가 페이지(215)에 성공적으로 프로그램되지 않을 때를 고려하여 상기 데이터를 제2다이(220)에 포함된 제2데이터 레지스터(221)에 저장하는 제3저장 동작(S40)과 제2데이터 레지스터(221)에 저장된 데이터를 제2페이지(225)에 프로그램하는 제2프로그램 동작(S70)을 수행하지 않는다. 제3저장 동작(S40)과 제2프로그램 동작(S70)을 수행하지 않는다는 것은 프로그램 명령에 대해 도 2에서 수신 동작(S10), 제1저장 동작(S20), 제2저장 동작(S30), 제1프로그램 동작(S50), 및 프로그램 성공 판단 동작(S60)만이 수행되며, 제2데이터 레지스터(221)와 관련된 동작들(S40, S70, 및 S80)은 수행되지 않는 것으로 이해되어야한다.
메모리 컨트롤러(130)는 제1다이(210)에 대한 카운트된 프로그램/삭제 사이클들의 수가 문턱값보다 크다고 결정할 때, 메모리 컨트롤러(130)는 제1다이(210)에 대해 상기 프로그램 명령에 대한 프로그램 실패가 발생하는지 확인한다(S130). 프로그램 실패란 프로그램 명령에 대한 데이터가 메모리 어레이(213)의 제1페이지(215)에 성공적으로 프로그램되지 못한 것을 의미한다. 프로그램 명령을 수신할 때, 메모리 컨트롤러(130)는 프로그램 실패 발생을 확인한다.
메모리 컨트롤러(130)가 상기 프로그램 명령에 따른 제1다이(210)에 대한 프로그램 실패가 발생하지 않음을 확인할 때, 즉, 데이터가 성공적으로 메모리 어레이(213)의 제1페이지(215)에 프로그램될 때, 다음 프로그램 명령에 대해 메모리 컨트롤러(130)는 상기 프로그램 명령에 따른 도 2에서 수신 동작(S10), 제1저장 동작(S20), 제2저장 동작(S30), 제1프로그램 동작(S50), 및 프로그램 성공 판단 동작(S60)만이 수행되며, 제3저장 동작(S40)과 제2프로그램 동작(S70)을 수행하지 않는다(S120). 즉, 메모리 컨트롤러(130)는 호스트(110)로부터 다음 프로그램 명령을 수신할 때(S10), 메모리 컨트롤러(130)는 상기 다음 프로그램 명령에 따라 데이터를 휘발성 메모리(135)에 저장하고(S20), 휘발성 메모리(135)에 저장된 상기 데이터를 제1다이(210)에 포함된 제1데이터 레지스터(211)에 저장하고(S30), 제1데이터 레지스터(211)에 저장된 상기 데이터를 제1페이지(215)에 프로그램하고(S50), 제1데이터 레지스터(211)에 저장된 상기 데이터를 제1페이지(215)에 성공적으로 프로그램되었는지 판단한다(S60). 다음 프로그램 명령은 메모리 컨트롤러(130)가 하나의 프로그램 명령을 수신한 후, 두 번째로 수신하는 프로그램 명령으로, 첫 벗째 프로그램 명령과는 다른 프로그램 명령을 의미한다.
메모리 컨트롤러(130)는 상기 프로그램 명령에 따른 제1다이(210)에 프로그램 실패가 발생하였음을 확인할 때, 메모리 컨트롤러(130)는 제2다이(220)에 대한 카운트된 프로그램/삭제 사이클들의 수가 상기 문턱값보다 큰 지 결정한다(S140).
메모리 컨트롤러(130)는 상기 프로그램 명령에 따른 제1다이(210)에 프로그램 실패가 발생하였음을 확인하고, 제2다이(220)에 대한 카운트된 프로그램/삭제 사이클들의 수가 상기 문턱값보다 크다고 결정할 때, 메모리 컨트롤러(130)는 다음 프로그램 명령에 대해 다른 다이(예컨대, 320)에 대해 제3저장 동작(S40)과 제2프로그램 동작(S70)을 수행한다. 즉, 메모리 컨트롤러(130)는 호스트(110)로부터 다음 프로그램 명령을 수신할 때(S10), 메모리 컨트롤러(130)는 상기 다음 프로그램 명령에 따라 데이터를 휘발성 메모리(135)에 저장하고(S20), 휘발성 메모리(135)에 저장된상기 데이터를 제1다이(210)에 포함된 제1데이터 레지스터(211)에 저장하고(S30), 상기 데이터를 다른 다이(320)에 포함된 데이터 레지스터(321)에 저장하며(S40), 제1다이(210)에 대한 프로그램 실패시 데이터 레지스터(321)에 저장된 데이터를 페이지(325)에 프로그램하는 동작을 수행한다. 이때, 다른 다이(예컨대, 320)에 대한 카운트된 프로그램/삭제 사이클들의 수는 상기 문턱값보다 작다고 가정한다.
메모리 컨트롤러(130)는 상기 프로그램 명령에 따른 제1다이(210)에 프로그램 실패가 발생하였음을 확인하고, 제2다이(220)에 대한 카운트된 프로그램/삭제 사이클들의 수가 상기 문턱값보다 작다고 결정할 때, 메모리 컨트롤러(130)는 상기 다음 프로그램 명령에 대해 상기 제3저장 동작(S40)과 상기 제2프로그램 동작(S70)을 수행한다(S150). 즉, 도 2에 도시된 모든 동작들(S10~S80)이 수행된다. 메모리 컨트롤러(130)는 호스트(110)로부터 다음 프로그램 명령을 수신할 때(S10), 메모리 컨트롤러(130)는 상기 다음 프로그램 명령에 따라 데이터를 휘발성 메모리(135)에 저장하고(S20), 휘발성 메모리(135)에 저장된 상기 데이터를 제1다이(210)에 포함된 제1데이터 레지스터(211)에 저장하고(S30), 상기 데이터를 제2다이(220)에 포함된 제2데이터 레지스터(221)에 저장하며(S40), 제1데이터 레지스터(211)에 저장된 상기 데이터를 제1페이지(215)에 프로그램하며(S50), 제1다이(210)에 대한 프로그램 실패시(S60), 제2데이터 레지스터(221)에 저장된 데이터를 제2페이지(225)에 프로그램하는 동작을 수행한다(S70).
메모리 컨트롤러(130)는 제1다이(210)에 상기 프로그램 명령에 대한 프로그램 실패가 발생하였음을 확인할 때, 메모리 컨트롤러(130)는 다음 프로그램 명령에 대해 제2다이(220), 또는 다른 다이(320)에 대해 제3저장 동작(S40)과 제2프로그램 동작(S70)을 수행한다. 즉, 도 2에 도시된 모든 동작들(S10~S80)이 수행된다.
상기 제3저장 동작(S40)과 상기 제2프로그램 동작(S70)이 수행된 후, 메모리 컨트롤러(130)는 제1다이(210)에 대한 프로그램/삭제 사이클들의 수가 임의의 횟수에 도달할 때까지 임의의 프로그램 명령들에 대해 프로그램 실패 횟수를 카운트한다(S160).
제1다이(210)에 대한 상기 카운트된 프로그램 실패 횟수가 임의의 값보다 크지 않을 때, 메모리 컨트롤러(130)는 다른 프로그램 명령에 대해 도 2에서 수신 동작(S10), 제1저장 동작(S20), 제2저장 동작(S30), 제1프로그램 동작(S50), 및 프로그램 성공 판단 동작(S60)만이 수행되며, 제3저장 동작(S40)과 제2프로그램 동작(S70)을 수행하지 않는다(S120). 다른 프로그램 명령은 메모리 컨트롤러(130)가 세 번째로 수신하는 프로그램 명령일 수 있다. 즉, 메모리 컨트롤러(130)는 호스트(110)로부터 다른 프로그램 명령을 수신할 때(S10), 메모리 컨트롤러(130)는 상기 다른 프로그램 명령에 따라 데이터를 휘발성 메모리(135)에 저장하고(S20), 휘발성 메모리(135)에 저장된 상기 데이터를 제1다이(210)에 포함된 제1데이터 레지스터(211)에 저장하고(S30), 제1데이터 레지스터(211)에 저장된 상기 데이터를 제1페이지(215)에 프로그램하고(S50), 제1데이터 레지스터(211)에 저장된 상기 데이터를 제1페이지(215)에 성공적으로 프로그램되었는지 판단한다(S60).
제1다이(210)에 대한 상기 프로그램 실패 횟수가 임의의 값보다 클 때, 메모리 컨트롤러(130)는 다른 프로그램 명령에 대해 상기 제3저장 동작(S40)과 상기 제2프로그램 동작(S70)을 수행한다(S150). 즉, 다른 프로그램 명령에 대해 도 2에 도시된 모든 동작들(S10~S80)이 수행된다. 메모리 컨트롤러(130)는 호스트(110)로부터 다른 프로그램 명령을 수신할 때(S10), 메모리 컨트롤러(130)는 상기 다른 프로그램 명령에 따라 데이터를 휘발성 메모리(135)에 저장하고(S20), 휘발성 메모리(135)에 저장된 상기 데이터를 제1다이(210)에 포함된 제1데이터 레지스터(211)에 저장하고(S30), 상기 데이터를 제2다이(220)에 포함된 제2데이터 레지스터(221)에 저장하며(S40), 제1데이터 레지스터(211)에 저장된 상기 데이터를 제1페이지(215)에 프로그램하며(S50), 제1다이(210)에 대한 프로그램 실패시(S60), 제2데이터 레지스터(221)에 저장된 데이터를 제2페이지(225)에 프로그램하는 동작을 수행한다(S70).
도 4는 본 발명의 또 다른 실시 예에 따른 비휘발성 메모리 장치의 프로그램 동작 방법의 흐름도를 나타낸다.
도 1, 도 2, 및 도 4를 참고하면, 메모리 컨트롤러(130)는 제1다이(210)의 품질과 제2다이(220)의 품질을 확인한다(S200). 호스트(110)로부터 프로그램 명령을 수신할 때, 임의의 시간에, 또는 임의의 시간 주기로, 메모리 컨트롤러(130)는 제1다이(210)의 품질과 제2다이(220)의 품질을 확인할 수 있다. 제1다이(210)의 품질에 관한 정보는 제1다이(210)의 메모리 어레이(213)에 메타데이터로 저장되고, 제2다이(220)의 품질에 관한 정보는 제2다이(220)의 메모리 어레이(223)에 메타데이터로 저장된다.
제1다이(210)와 제2다이(320)의 품질은 하나의 셀에 포함된 비트들의 수에 따라 달라질 수 있다. 예컨대, SLC(Single Level Cell)은 MLC(Multi Level Cell), TLC(Triple Level Cell), 또는 QLC(Quad Level Cell)보다 더 좋은 품질을 가진다. 따라서 제1다이(210)의 메모리 어레이(213)가 SLC로 구현되고, 제2다이(320)의 메모리 어레이(323)가 MLC로 구현될 때, 제1다이(210)의 메모리 어레이(213)의 품질은 제2다이(320)의 메모리 어레이(323)의 품질보다 좋다. 메모리 컨트롤러(130)는 제1다이(210)의 메모리 어레이(213)가 SLC인지, 제2다이(320)의 메모리 어레이(323)가 MLC인지 확인한다. 즉, 메모리 컨트롤러(130)는 제1다이(210)의 품질과 제2다이(320)의 품질을 확인한다. 이는 제1다이(210)의 메모리 어레이(213)에 저장된 품질에 관한 정보와 제2다이(320)의 메모리 어레이(323)에 저장된 품질에 관한 정보를 통해 확인될 수 있다.
또한, 제1다이(210)와 제2다이(320)의 품질은 소비자 등급, 워크스테이션 등급, 기업 등급, 및 콘텐츠 전달 네트워크 등급으로 나뉠 수 있다. 소비자 등급은 상대적으로 낮은 등급으로, PC, 또는 노트북에서 이용된다. 워크스테이션 등급은 사진, 또는 비디오를 생성하고 편집하는 워크스테이션에서 이용된다. 기업 등급은 데이터베이스 처리, 인공지능, 빅 데이터, 실시간 어플리케이션 등과 같은 서버 어플리케이션에서 이용된다. 메모리 컨트롤러(130)는 제1다이(210)의 메모리 어레이(213)가 소비자 등급인지, 제2다이(320)의 메모리 어레이(323)가 기업 등급인지 확인한다. 즉, 메모리 컨트롤러(130)는 제1다이(210)의 품질과 제2다이(320)의 품질을 확인한다. 이는 제1다이(210)의 메모리 어레이(213)에 저장된 품질에 관한 정보와 제2다이(320)의 메모리 어레이(323)에 저장된 품질에 관한 정보를 통해 확인될 수 있다.
제1다이(210)의 품질과 제2다이(320)의 품질이 같다고 인식할 때, 메모리 컨트롤러(130)는 더 이상의 동작들을 수행하지 않는다. 예컨대, 제1다이(210)의 메모리 어레이(213)와 제2다이(320)의 메모리 어레이(323)가 모두 SLC일 때, 제1다이(210)의 품질과 제2다이(320)의 품질은 같다. 또한, 제1다이(210)의 메모리 어레이(213)와 제2다이(320)의 메모리 어레이(323)가 모두 같은 등급일 때, 제1다이(210)의 품질과 제2다이(320)의 품질은 같다.
메모리 컨트롤러(130)는 제1다이(210)의 품질과 제2다이(320)의 품질이 서로 다르다고 인식할 때, 메모리 컨트롤러(130)는 프로그램 명령에 따른 제1다이(210)에 대해 프로그램 실패가 발생하는지 확인한다(S210). 예컨대, 제1다이(210)의 메모리 어레이(213)는 SLC이고, 제2다이(320)의 메모리 어레이(323)는 MLC일 때, 제1다이(210)의 품질과 제2다이(320)의 품질은 서로 다르다. 또한, 제1다이(210)의 메모리 어레이(213)는 소비자 등급이고, 제2다이(320)의 메모리 어레이(323)는 기업 등급일 때, 제1다이(210)의 품질과 제2다이(320)의 품질은 서로 다르다. 제1다이(210)의 메모리 어레이(213)와 제2다이(320)의 메모리 어레이(323)가 모두 SLC이더라도 제1다이(210)의 메모리 어레이(213)와 제2다이(320)의 메모리 어레이(323)가 서로 다른 등급(예컨대, 소비자 등급과 기업 등급)일 때, 제1다이(210)의 품질과 제2다이(320)의 품질은 다르다. 또한, 제1다이(210)의 메모리 어레이(213)와 제2다이(320)의 메모리 어레이(323)가 모두 같은 등급(예컨대, 소비자 등급)이더라도 제1다이(210)의 메모리 어레이(213)와 제2다이(320)의 메모리 어레이(323)가 각각 SLC와 MLC이면 제1다이(210)의 품질과 제2다이(320)의 품질은 서로 다르다.
메모리 컨트롤러(130)는 프로그램 명령에 따른 제1다이(210)에 대해 상기 프로그램 실패가 발생하는지 확인할 때, 메모리 컨트롤러(130)는 다음 프로그램 명령에 대해 도 2에 도시된 상기 제3저장 동작(S40)과 상기 제2프로그램 동작(S70)을 수행한다(S220). 즉, 다음 프로그램 명령에 대해 도 2에 도시된 모든 동작들(S10~S80)이 수행된다. 메모리 컨트롤러(130)는 호스트(110)로부터 다음 프로그램 명령을 수신할 때(S10), 메모리 컨트롤러(130)는 상기 다음 프로그램 명령에 따라 데이터를 휘발성 메모리(135)에 저장하고(S20), 휘발성 메모리(135)에 저장된 상기 데이터를 제1다이(210)에 포함된 제1데이터 레지스터(211)에 저장하고(S30), 상기 데이터를 제2다이(320)에 포함된 제2데이터 레지스터(321)에 저장하며(S40), 제1데이터 레지스터(211)에 저장된 상기 데이터를 제1페이지(215)에 프로그램하며(S50), 제1다이(210)에 대한 프로그램 실패시(S60), 제2데이터 레지스터(321)에 저장된 데이터를 제2페이지(325)에 프로그램하는 동작을 수행한다(S70). 도 2에 도시된 상기 제3저장 동작(S40)과 상기 제2프로그램 동작(S70)의 수행은 다음 프로그램 명령부터 적용된다.
메모리 컨트롤러(130)는 제1다이(210)에 대한 프로그램/삭제 사이클들의 수가 임의의 횟수에 도달할 때까지 임의의 프로그램 명령들에 대해 프로그램 실패 횟수를 카운트한다(S230). 임의의 시간에, 또는 임의의 시간 주기로, 메모리 컨트롤러(130)는 제1다이(210)에 대한 프로그램/삭제 사이클들의 수가 임의의 횟수에 도달할 때까지 프로그램 실패 횟수를 카운트한다.
메모리 컨트롤러(130)는 제1다이(210)에 대한 카운트된 프로그램 실패 횟수가 임의의 값보다 큰 지 판단한다(S240).
제1다이(210)에 대한 상기 프로그램 실패 횟수가 임의의 값보다 크지 않을 때, 메모리 컨트롤러(130)는 다른 프로그램 명령에 대해 도 2에서 수신 동작(S10), 제1저장 동작(S20), 제2저장 동작(S30), 제1프로그램 동작(S50), 및 프로그램 성공 판단 동작(S60)만이 수행되며, 제3저장 동작(S40)과 제2프로그램 동작(S70)을 수행하지 않는다(S250). 즉, 메모리 컨트롤러(130)는 호스트(110)로부터 다른 프로그램 명령을 수신할 때(S10), 메모리 컨트롤러(130)는 상기 다른 프로그램 명령에 따라 데이터를 휘발성 메모리(135)에 저장하고(S20), 휘발성 메모리(135)에 저장된 상기 데이터를 제1다이(210)에 포함된 제1데이터 레지스터(211)에 저장하고(S30), 제1데이터 레지스터(211)에 저장된 상기 데이터를 제1페이지(215)에 프로그램하고(S50), 제1데이터 레지스터(211)에 저장된 상기 데이터를 제1페이지(215)에 성공적으로 프로그램되었는지 판단한다(S60).
다른 프로그램 명령은 메모리 컨트롤러(130)가 세 번째로 수신하는 프로그램 명령일 수 있다.
제1다이(210)에 대한 상기 프로그램 실패 횟수가 임의의 값보다 클 때, 메모리 컨트롤러(130)는 다른 프로그램 명령에 대해 상기 제3저장 동작(S40)과 상기 제2프로그램 동작(S70)을 계속해서 수행한다(S260). 즉, 다른 프로그램 명령에 대해 도 2에 도시된 모든 동작들(S10~S80)이 수행된다. 즉, 메모리 컨트롤러(130)는 호스트(110)로부터 다른 프로그램 명령을 수신할 때(S10), 메모리 컨트롤러(130)는 상기 다른 프로그램 명령에 따라 데이터를 휘발성 메모리(135)에 저장하고(S20), 휘발성 메모리(135)에 저장된 상기 데이터를 제1다이(210)에 포함된 제1데이터 레지스터(211)에 저장하고(S30), 상기 데이터를 제2다이(220)에 포함된 제2데이터 레지스터(221)에 저장하며(S40), 제1데이터 레지스터(211)에 저장된 상기 데이터를 제1페이지(215)에 프로그램하며(S50), 제1다이(210)에 대한 프로그램 실패시(S60), 제2데이터 레지스터(221)에 저장된 데이터를 제2페이지(225)에 프로그램하는 동작을 수행한다(S70).
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 비휘발성 메모리 시스템;
110: 호스트;
120: 비휘발성 메모리 장치;
130: 메모리 컨트롤러;
131: 호스트 인터페이스;
133: 프로세서;
135: 휘발성 메모리;
137: ROM;
139: 비휘발성 메모리 인터페이스;
200, 300, 400: 비휘발성 메모리 칩;
210, 220, 230, 310, 320, 330: 다이;
211, 221, 321: 데이터 레지스터;
213, 223, 323: 메모리 어레이;
215, 225, 325: 페이지;

Claims (13)

  1. 메모리 컨트롤러는 호스트로부터 프로그램 명령을 수신하는 수신 동작을 수행하는 단계;
    상기 메모리 컨트롤러는 상기 프로그램 명령에 따라 데이터를 휘발성 메모리에 저장하는 제1저장 동작을 수행하는 단계;
    상기 메모리 컨트롤러는 상기 데이터를 제1다이에 포함된 제1데이터 레지스터에 저장하는 제2저장 동작을 수행하는 단계;
    상기 메모리 컨트롤러는 상기 데이터를 제2다이에 포함된 제2데이터 레지스터에 저장하는 제3저장 동작을 수행하는 단계;
    상기 메모리 컨트롤러는 상기 제1데이터 레지스터에 저장된 상기 데이터를 제1메모리 어레이의 제1페이지에 프로그램하는 제1프로그램 동작을 수행하는 단계; 및
    상기 데이터가 상기 제1페이지에 프로그램되지 못할 때, 상기 메모리 컨트롤러는 상기 제2데이터 레지스터에 저장된 상기 데이터를 제2메모리 어레이의 제2페이지에 프로그램하는 제2프로그램 동작을 수행하는 단계를 포함하는 메모리 컨트롤러의 동작 방법.
  2. 제1항에 있어서, 상기 메모리 컨트롤러의 동작 방법은,
    상기 데이터가 상기 제1페이지에 성공적으로 프로그램될 때, 상기 메모리 컨트롤러는 상기 제2데이터 레지스터에 저장된 상기 데이터를 삭제하는 삭제 동작을 수행하는 단계를 더 포함하는 메모리 컨트롤러의 동작 방법.
  3. 제1항에 있어서, 상기 제1다이와 상기 제2다이는 하나의 비휘발성 메모리 칩, 또는 서로 다른 비휘발성 메모리 칩들에 포함되는 메모리 컨트롤러의 동작 방법.
  4. 제1항에 있어서, 상기 메모리 컨트롤러의 동작 방법은,
    상기 메모리 컨트롤러는 상기 데이터를 상기 제1데이터 레지스터와 상기 제2데이터 레지스터에 저장한 후, 상기 휘발성 메모리에 포함된 상기 데이터를 삭제하는 단계를 더 포함하는 메모리 컨트롤러의 동작 방법.
  5. 제1항에 있어서, 상기 메모리 컨트롤러의 동작 방법은,
    상기 메모리 컨트롤러는 상기 제1다이에 포함된 복수의 블록들과, 상기 제2다이에 포함된 복수의 블록들에 대해 프로그램/삭제(erase) 사이클들의 수를 카운트하는 단계;
    상기 메모리 컨트롤러는 상기 제1다이에 대한 상기 카운트된 프로그램/삭제 사이클들의 수가 문턱값보다 큰 지 결정하는 단계; 및
    상기 메모리 컨트롤러는 상기 제1다이에 대한 카운트된 프로그램/삭제 사이클들의 수가 상기 문턱값보다 크다고 결정할 때, 상기 메모리 컨트롤러는 상기 제1다이에 대해 다른 프로그램 명령에 따른 프로그램 실패가 발생하는지 확인하는 단계를 포함하며,
    상기 메모리 컨트롤러는 상기 제1다이에 상기 다른 프로그램 명령에 따른 프로그램 실패가 발생하였음을 확인하고, 상기 제2다이에 대한 카운트된 프로그램/삭제 사이클들의 수가 상기 문턱값보다 작다고 결정할 때, 상기 메모리 컨트롤러는 상기 프로그램 명령에 따른 상기 수신 동작, 상기 제1저장 동작, 상기 제2저장 동작, 상기 제3저장 동작, 상기 제1프로그램 동작, 및 상기 제2프로그램 동작을 수행하며,
    상기 메모리 컨트롤러는 상기 제1다이와 상기 제2다이 각각에 대한 상기 카운트된 프로그램/삭제 사이클들의 수가 상기 문턱값보다 모두 작다고 결정할 때, 상기 메모리 컨트롤러는 상기 프로그램 명령에 따른 상기 수신 동작, 상기 제1저장 동작, 상기 제2저장 동작, 및 상기 제1프로그램 동작을 수행하며, 상기 제3저장 동작과 상기 제2프로그램 동작을 수행하지 않는 메모리 컨트롤러의 동작 방법.
  6. 제5항에 있어서, 상기 메모리 컨트롤러의 동작 방법은,
    상기 메모리 컨트롤러는 상기 제1다이에 대한 프로그램/삭제 사이클들의 수가 임의의 횟수에 도달할 때까지 임의의 프로그램 명령들에 대한 프로그램 실패 횟수를 카운트하는 단계를 더 포함하며,
    상기 제1다이에 대한 상기 카운트된 프로그램 실패 횟수가 임의의 값보다 크지 않을 때, 상기 메모리 컨트롤러는 다음 프로그램 명령에 대해 상기 수신 동작, 상기 제1저장 동작, 상기 제2저장 동작, 및 상기 제1프로그램 동작을 수행하며, 상기 제3저장 동작과 상기 제2프로그램 동작을 수행하지 않는 메모리 컨트롤러의 동작 방법.
  7. 제1항에 있어서, 상기 메모리 컨트롤러의 동작 방법은,
    상기 메모리 컨트롤러는 상기 제1다이의 품질과 상기 제2다이의 품질이 서로 다르다고 인식할 때, 상기 메모리 컨트롤러는 상기 제1다이에 대해 다른 프로그램 명령에 따른 프로그램 실패가 발생하는지 확인하는 단계를 더 포함하며,
    상기 메모리 컨트롤러는 상기 제1다이에 대해 상기 다른 프로그램에 따른 상기 프로그램 실패가 발생하는지 확인할 때, 상기 메모리 컨트롤러는 상기 프로그램 명령에 따른 상기 수신 동작, 상기 제1저장 동작, 상기 제2저장 동작, 상기 제3저장 동작, 상기 제1프로그램 동작, 및 상기 제2프로그램 동작을 수행하는 메모리 컨트롤러의 동작 방법.
  8. 제7항에 있어서, 상기 메모리 컨트롤러의 동작 방법은,
    상기 메모리 컨트롤러는 상기 제1다이에 대한 프로그램/삭제 사이클들의 수가 임의의 횟수에 도달할 때까지 임의의 프로그램 명령들에 대한 프로그램 실패 횟수를 카운트하는 단계를 더 포함하며,
    상기 제1다이에 대한 상기 카운트된 프로그램 실패 횟수가 임의의 값보다 크지 않을 때, 상기 메모리 컨트롤러는 또 다른 프로그램 명령에 대해 상기 수신 동작, 상기 제1저장 동작, 상기 제2저장 동작, 및 상기 제1프로그램 동작을 수행하며, 상기 제3저장 동작과 상기 제2프로그램 동작을 수행하지 않는 메모리 컨트롤러의 동작 방법.
  9. 제1데이터 레지스터와 제1페이지를 포함하는 제1다이;
    제2데이터 레지스터와 제2페이지를 포함하는 제2다이; 및
    휘발성 메모리와 프로세서를 포함하는 메모리 컨트롤러를 포함하며,
    상기 프로세서는,
    호스트로부터 프로그램 명령을 수신하는 수신 동작을 수행하며,
    상기 프로그램 명령에 따라 데이터를 상기 휘발성 메모리에 저장하는 제1저장 동작을 수행하며,
    상기 데이터를 상기 제1데이터 레지스터에 저장하는 제2저장 동작을 수행하며,
    상기 데이터를 상기 제2데이터 레지스터에 저장하는 제3저장 동작을 수행하며,
    상기 제1데이터 레지스터에 저장된 상기 데이터를 상기 제1페이지에 프로그램하는 제1프로그램 동작을 수행하며,
    상기 데이터가 상기 제1페이지에 프로그램되지 못할 때, 상기 제2데이터 레지스터에 저장된 상기 데이터를 상기 제2페이지에 프로그램하는 제2프로그램 동작을 수행하는 비휘발성 메모리 장치.
  10. 제9항에 있어서, 상기 프로세서는,
    상기 데이터가 상기 제1페이지에 성공적으로 프로그램될 때, 상기 제2데이터 레지스터에 저장된 상기 데이터를 삭제하는 삭제 동작을 수행하는 비휘발성 메모리 장치.
  11. 제9항에 있어서, 상기 제1다이와 상기 제2다이는 하나의 비휘발성 메모리 칩, 또는 서로 다른 비휘발성 메모리 칩들에 구현되는 비휘발성 메모리 장치.
  12. 제9항에 있어서, 상기 프로세서는,
    상기 데이터를 상기 제1데이터 레지스터와 상기 제2데이터 레지스터에 저장한 후, 상기 휘발성 메모리에 포함된 상기 데이터를 삭제하는 비휘발성 메모리 장치.
  13. 제9항에 있어서, 상기 프로세서는,
    상기 제1다이에 포함된 복수의 블록들과, 상기 제2다이에 포함된 복수의 블록들에 대해 프로그램/삭제(erase) 사이클들의 수를 카운트하며,
    상기 제1다이와 상기 제2다이 각각에 대한 상기 카운트된 프로그램/삭제 사이클들의 수가 문턱값보다 큰 지 결정하며,
    상기 제1다이에 대한 카운트된 프로그램/삭제 사이클들의 수가 문턱값보다 크다고 결정할 때, 상기 제1다이에 대해 다른 프로그램 명령에 따른 프로그램 실패가 발생하는지 확인하며,
    상기 제1다이에 상기 다른 프로그램 명령에 따른 프로그램 실패가 발생하였음을 확인하고, 상기 제2다이에 대한 카운트된 프로그램/삭제 사이클들의 수가 상기 문턱값보다 작다고 결정할 때,상기 프로그램 명령에 따른 상기 수신 동작, 상기 제1저장 동작, 상기 제2저장 동작, 상기 제3저장 동작, 상기 제1프로그램 동작, 및 상기 제2프로그램 동작을 수행하며,
    상기 제1다이와 상기 제2다이 각각에 대한 상기 카운트된 프로그램/삭제 사이클들의 수가 상기 문턱값보다 모두 작다고 결정할 때, 상기 프로그램 명령에 따른 상기 수신 동작, 상기 제1저장 동작, 상기 제2저장 동작, 및 상기 제1프로그램 동작을 수행하며, 상기 제3저장 동작과 상기 제2프로그램 동작을 수행하지 않는 비휘발성 메모리 장치.







KR1020220006488A 2022-01-17 2022-01-17 메모리 컨트롤러의 동작 방법 및 이를 포함하는 비휘발성 메모리 장치 KR102409405B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220006488A KR102409405B1 (ko) 2022-01-17 2022-01-17 메모리 컨트롤러의 동작 방법 및 이를 포함하는 비휘발성 메모리 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220006488A KR102409405B1 (ko) 2022-01-17 2022-01-17 메모리 컨트롤러의 동작 방법 및 이를 포함하는 비휘발성 메모리 장치

Publications (2)

Publication Number Publication Date
KR102409405B1 true KR102409405B1 (ko) 2022-06-16
KR102409405B9 KR102409405B9 (ko) 2022-12-05

Family

ID=82217672

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220006488A KR102409405B1 (ko) 2022-01-17 2022-01-17 메모리 컨트롤러의 동작 방법 및 이를 포함하는 비휘발성 메모리 장치

Country Status (1)

Country Link
KR (1) KR102409405B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190076847A (ko) * 2017-12-22 2019-07-02 인텔 코포레이션 Nand 프로그램 실패를 다루기 위한 내부 복사
KR101996004B1 (ko) 2012-05-29 2019-07-03 삼성전자주식회사 비휘발성 메모리 장치의 프로그램 방법 및 그것의 메모리 시스템
KR20210076497A (ko) * 2019-12-16 2021-06-24 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101996004B1 (ko) 2012-05-29 2019-07-03 삼성전자주식회사 비휘발성 메모리 장치의 프로그램 방법 및 그것의 메모리 시스템
KR20190076847A (ko) * 2017-12-22 2019-07-02 인텔 코포레이션 Nand 프로그램 실패를 다루기 위한 내부 복사
KR20210076497A (ko) * 2019-12-16 2021-06-24 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법

Also Published As

Publication number Publication date
KR102409405B9 (ko) 2022-12-05

Similar Documents

Publication Publication Date Title
JP5547741B2 (ja) データをメモリ装置に再入力することなくページをプログラムするためのページバッファプログラムコマンド及び方法
CN110335635B (zh) 用来管理一记忆装置的方法以及记忆装置与控制器
CN106598479B (zh) 闪速存储器的故障安全擦除的方法和装置
US20160266934A1 (en) Task queues
US9170755B2 (en) Command and data selection in storage controller systems
US10838653B2 (en) Electronic device and operating method thereof
US11334493B2 (en) Memory system and operating method thereof
US10902928B2 (en) Memory system, operation method thereof, and nonvolatile memory device
US20200174921A1 (en) Data storage device, operation method thereof, and storage system including the same
US10698819B2 (en) Memory system and operating method thereof
US20200042238A1 (en) Data storage device, method of operating the same, and storage system having the same
CN110047538B (zh) 存储器系统及其操作方法
KR20160074025A (ko) 데이터 저장 장치의 동작 방법
US9424898B2 (en) Data storage device
US10127984B2 (en) Method for operating storage device determining wordlines for writing user data depending on reuse period
US10754552B2 (en) Data storage device and operating method thereof
US10698830B2 (en) Obtaining data in a nonvolatile memory device through the use of descriptors
US20200125285A1 (en) Memory system and operating method thereof
US11126379B2 (en) Memory system
US20210064542A1 (en) Memory controller, storage device including memory controller, and operating method of memory controller
US10838766B2 (en) Memory system and operating method thereof
KR102469098B1 (ko) 불휘발성 메모리 장치, 불휘발성 메모리 장치의 동작 방법 및 이를 포함하는 데이터 저장 장치
KR102409405B1 (ko) 메모리 컨트롤러의 동작 방법 및 이를 포함하는 비휘발성 메모리 장치
US11409473B2 (en) Data storage device and operating method thereof
US10929055B2 (en) Memory system and operating method thereof

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
G170 Re-publication after modification of scope of protection [patent]