KR102303051B1 - 백그라운드 소거를 이용한 솔리드-스테이트 드라이브 기록 성능 향상 - Google Patents

백그라운드 소거를 이용한 솔리드-스테이트 드라이브 기록 성능 향상 Download PDF

Info

Publication number
KR102303051B1
KR102303051B1 KR1020200035396A KR20200035396A KR102303051B1 KR 102303051 B1 KR102303051 B1 KR 102303051B1 KR 1020200035396 A KR1020200035396 A KR 1020200035396A KR 20200035396 A KR20200035396 A KR 20200035396A KR 102303051 B1 KR102303051 B1 KR 102303051B1
Authority
KR
South Korea
Prior art keywords
erase
memory
memory blocks
controller
candidate
Prior art date
Application number
KR1020200035396A
Other languages
English (en)
Other versions
KR20200132674A (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 KR20200132674A publication Critical patent/KR20200132674A/ko
Application granted granted Critical
Publication of KR102303051B1 publication Critical patent/KR102303051B1/ko

Links

Images

Classifications

    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/344Arrangements for verifying correct erasure or for detecting overerased cells
    • G11C16/3445Circuits or methods to verify correct erasure of nonvolatile memory cells
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/0608Saving storage space on storage 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/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
    • 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/064Management of blocks
    • 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
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • 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
    • 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
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • 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/26Sensing or reading circuits; Data output circuits
    • 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/32Timing circuits
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series

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)
  • Read Only Memory (AREA)

Abstract

메모리 시스템 내의 메모리 블록들을 프로그래밍하기 위한 방법은, 적어도 하나의 메모리 블록 특성을 이용하여, 메모리 시스템 내의 메모리 블록들의 후보 메모리 블록들을 식별하는 단계를 포함한다. 방법은 또한 사전-소거 검증 레벨을 이용하여, 후보 메모리 블록들 상에 사전-소거 동작을 수행하는 단계를 포함한다. 방법은 또한, 사전-소거 테이블 상에, 후보 메모리 블록들의 각각의 메모리 블록에 대한 사전-소거 정보를 저장하는 단계를 포함한다. 방법은 또한 사전-소거 테이블을 이용하여, 프로그래밍될 적어도 하나의 메모리 블록을 식별하는 단계를 포함한다. 방법은 또한 사전-소거 검증 레벨을 이용하여 적어도 하나의 메모리 블록 상에 사전프로그램 소거 동작을 수행하고, 적어도 하나의 메모리 블록 상에 기록 동작을 수행함으로써 적어도 하나의 메모리 블록을 프로그래밍하는 단계를 포함한다.

Description

백그라운드 소거를 이용한 솔리드-스테이트 드라이브 기록 성능 향상{ENHANCED SOLID-STATE DRIVE WRITE PERFORMANCE WITH BACKGROUND ERASE}
본 개시내용은 메모리 시스템에 관한 것으로, 특히 백그라운드 소거 동작을 이용하여 솔리드-스테이트 드라이브 기록 수행을 향상시키기 위한 방법 및 시스템에 관한 것이다.
비-휘발성 메모리 시스템은 외부 전원을 요구하지 않으면서 저장된 정보를 유지하는 메모리의 일종이다. 비-휘발성 메모리는 다양한 전자 디바이스들 및 독립형 메모리 디바이스들에 널리 사용된다. 예를 들어, 비-휘발성 메모리는 랩톱, 디지털 오디오 플레이어, 디지털 카메라, 스마트폰, 비디오 게임, 과학 장비, 산업 로봇, 의료 전자장치, 솔리드-스테이트 드라이브, USB 드라이브, 메모리 카드 등에서 볼 수 있다. 비-휘발성 메모리는 전자적으로 프로그래밍/재프로그래밍 및 소거될 수 있다.
이러한 메모리 시스템을 프로그래밍하는 것은 통상적으로 프로그래밍될 메모리 블록들을 식별하고 식별된 메모리 블록들 상에 사전프로그램 소거 동작을 수행하는 것을 포함한다. 메모리 블록들이 소거된 후에, 식별된 메모리 블록들 상에 기록 동작이 수행되어 식별된 메모리 블록들의 프로그래밍을 완료한다. 사전프로그램 소거 동작 및 기록 동작을 수행함에 의한 메모리 블록들의 이러한 프로그래밍은 리소스 소모적일 수 있으며, 완료하기 위하여 바람직하지 않은 길이의 시간이 걸릴 수 있다.
본 개시는 일반적으로 메모리 관리 시스템들 및 방법들에 관한 것이다.
개시된 실시예들의 양태는 메모리 시스템에서 메모리 블록들을 프로그래밍하기 위한 방법이다. 방법은, 적어도 하나의 메모리 블록 특성을 이용하여, 메모리 시스템 내의 메모리 블록들의 후보 메모리 블록들을 식별하는 단계를 포함한다. 방법은 또한 사전-소거 검증 레벨을 이용하여, 후보 메모리 블록들 상에 사전-소거 동작을 수행하는 단계를 포함한다. 방법은 또한, 사전-소거 테이블 상에, 후보 메모리 블록들의 각각의 메모리 블록에 대한 사전-소거 정보를 저장하는 단계를 포함한다. 방법은 또한 사전-소거 테이블을 이용하여, 프로그래밍될 적어도 하나의 메모리 블록을 식별하는 단계를 포함한다. 방법은 또한 사전-소거 검증 레벨을 이용하여 적어도 하나의 메모리 블록 상에 사전프로그램 소거 동작을 수행하고, 적어도 하나의 메모리 블록 상에 기록 동작을 수행함으로써 적어도 하나의 메모리 블록을 프로그래밍하는 단계를 포함한다.
개시된 실시예들의 다른 양태는 버스 인터페이스 및 프로세서를 포함하는 제어기이다. 버스 인터페이스는 자유 블록 리스트 상의 메모리 블록들과 연관된 메모리 블록 특성들을 수신하도록 구성된다. 프로세서는: 메모리 블록 특성들 중 적어도 하나의 메모리 블록 특성을 이용하여, 자유 블록 리스트 상의 메모리 블록들의 후보 메모리 블록들을 식별하고; 사전-소거 검증 레벨을 이용하여, 후보 메모리 블록들 상에 사전-소거 동작을 수행하고; 사전-소거 검증 레벨을 이용하여 후보 메모리 블록들 중 적어도 하나의 메모리 블록 상에 사전프로그램 소거 동작을 수행하고, 적어도 하나의 메모리 블록 상에 기록 동작을 수행하도록 구성된다.
개시된 실시예들의 다른 양태는 메모리 블록들의 기록 동작들의 수행을 향상시키기 위한 방법이다. 방법은 자유 블록 리스트 상의 메모리 블록들의 각각과 연관된 프로그램 소거 사이클 값, 자유 블록 리스트 상의 메모리 블록들의 각각과 연관된 소거 시간 값, 및 자유 블록 리스트 상의 메모리 블록들의 각각과 연관된 비트 에러율 값 중 적어도 하나를 이용하여 자유 블록 리스트 상의 메모리 블록들로부터 후보 메모리 블록들을 식별하는 단계를 포함한다. 방법은 또한 0 볼트보다 높은 사전-소거 검증 레벨을 이용하여 후보 메모리 블록들의 각각 상에 사전-소거 동작을 수행하는 단계를 포함한다. 방법은 또한 사전-소거 동작과 연관된 소거 시간을 기록하는 단계를 포함한다. 방법은 또한 각각의 후보 메모리 블록에 대하여, 대응하는 소거 시간 및 사전-소거 검증 레벨을 저장하는 단계를 포함한다.
본 개시의 이들 및 다른 태양들이 실시예들에 대한 하기의 상세한 설명, 첨부된 청구범위, 및 첨부 도면에서 개시된다.
개시내용은 첨부도면과 함께 읽으면 하기 발명을 실시하기 위한 구체적인 내용으로부터 가장 잘 이해된다. 일반적인 실시에 따라, 도면들의 다양한 특징부들은 일정한 비율로 그려지지 않음을 강조한다. 반대로, 다양한 특징부들의 치수들은 명료함을 위해 임의적으로 확대 또는 축소된다.
도 1a 및 도 1b는 일반적으로 본 개시내용의 원리에 따라 예시 비-휘발성 메모리 시스템의 블록도를 도시한다.
도 2a는 일반적으로 본 개시내용의 원리들에 따라 제어기의 예시 컴포넌트들의 블록도를 도시한다.
도 2b는 본 개시내용의 원리들에 따라 비-휘발성 메모리 저장 시스템의 예시 컴포넌트들의 블록도를 일반적으로 도시한다.
도 3은 일반적으로 본 개시내용의 원리들에 따라 메모리 블록을 도시한다.
도 4는 본 개시내용의 원리들에 따라 메모리 블록 프로그래밍 방법을 도시하는 흐름도이다.
이하의 논의는 본 발명의 다양한 실시예들에 관한 것이다. 이들 실시예 중 하나 이상이 바람직할 수 있지만, 개시된 실시예들은 청구항들을 포함한 본 개시의 범위를 제한하는 것으로 해석되거나 달리 사용되어서는 안된다. 또한, 이 분야의 기술자는 이하의 설명이 광범위한 응용을 가지며, 임의의 실시예에 대한 논의는 단지 그 실시예를 예시하는 것으로 의도되고, 청구항들을 포함한 본 개시의 범위가 그 실시예로 제한된다고 암시하도록 의도되지 않는다는 것을 이해할 것이다.
기재된 바와 같이, 비-휘발성 메모리 시스템은 외부 전원을 요구하지 않으면서 저장된 정보를 유지하는 메모리의 일종이다. 비-휘발성 메모리는 다양한 전자 디바이스들 및 독립형 메모리 디바이스들에 널리 사용된다. 예를 들어, 비-휘발성 메모리는 랩톱, 디지털 오디오 플레이어, 디지털 카메라, 스마트폰, 비디오 게임, 과학 장비, 산업 로봇, 의료 전자장치, 솔리드-스테이트 드라이브, USB 드라이브, 메모리 카드 등에서 볼 수 있다. 비-휘발성 메모리는 전자적으로 프로그래밍/재프로그래밍 및 소거될 수 있다.
메모리 시스템의 일 유형은 하나 이상의 플래시-기반 솔리드-스테이트 드라이브를 포함하고, 이는 다양한 전자 디바이스들에서 클라이언트 환경, 기업 환경, 또는 기타 적합한 환경과 같은 다양한 환경에 사용될 수 있다. 이러한 플래시-기반 솔리드-스테이트 드라이브 메모리 시스템들을 프로그래밍하는 것은 통상적으로 프로그래밍될 메모리 블록들을 식별하고 식별된 메모리 블록들 상에 사전프로그램 소거 동작을 수행하는 것을 포함한다. 메모리 블록들이 소거된 후에, 식별된 메모리 블록들 상에 기록 동작이 수행되어 식별된 메모리 블록들의 프로그래밍을 완료한다.
사전프로그램 소거 동작 및 기록 동작을 수행함에 의한 메모리 블록들의 프로그래밍은 리소스 소모적일 수 있으며, 완료하기 위하여 바람직하지 않은 길이의 시간이 걸릴 수 있다. 예를 들어, 통상적인 솔리드-스테이트 드라이브 메모리 시스템의 싱글-레벨 셀 메모리 블록들 상에 사전프로그램 소거 동작을 수행하는 것은 완료에 약 5 마이크로초가 걸릴 수 있고, 싱글-레벨 셀 메모리 블록들 상에 기록 동작을 수행하는 것은 완료에 워드 라인 당 약 1 마이크로초가 걸릴 수 있다. 또한, 트리플-레벨 셀 메모리 블록들 상에 사전프로그램 소거 동작을 수행하는 것은 완료에 약 15 마이크로초가 걸릴 수 있고, 트리플-레벨 셀 메모리 블록들 상에 기록 동작을 수행하는 것은 완료에 워드 라인 당 약 15 마이크로초가 걸릴 수 있다. 따라서, 랜덤 프로그램 동작의 경우, 워드 라인 0에 대한 프로그래밍 시간은 워드 라인 프로그래밍 단독보다 5 내지 15 마이크로초 더 걸릴 수 있다. 이 추가적인 시간은 소거-유도된 지연으로 지칭될 수 있으며, 서비스 품질 관점에서 봤을 때, 바람직하지 않을 수 있다.
따라서, 메모리 블록들에 대한 기록 동작 수행을 향상시키는 본 명세서에 기술된 것들과 같은 시스템들 및 방법들이 바람직할 수 있다. 일부 실시예들에서, 본 명세서에 기술된 시스템들 및 방법들은 적어도 하나의 메모리 블록 특성을 이용하여 미사용 및/또는 퇴출된 메모리 블록들을 포함하고 후보 메모리 블록들을 식별하는 자유 블록 리스트를 모니터링하는 것을 포함할 수 있다. 본 명세서에 기술된 시스템들 및 방법들은, 백그라운드에서, 표준 검증 레벨보다 높게 설정된 사전-소거 검증 레벨을 이용하여 후보 블록들 상에 사전-소거 동작을 수행하는 것을 포함할 수 있다. 일부 실시예들에서, 본 명세서에 기술된 시스템들 및 방법들은, 사전-소거 테이블 상에, 후보 메모리 블록들에 대한 사전-소거 정보를 저장하는 것을 포함할 수 있다. 본 명세서에 기술된 시스템들 및 방법들은 사전-소거 검증 레벨을 이용하여 사전프로그램 소거 동작을 수행하고 메모리 블록들에 기록 동작을 수행함으로써 사전-소거 테이블로부터의 메모리 블록들을 프로그래밍하는 것을 포함할 수 있다. 본 명세서에 기술된 시스템들 및 방법들은 메모리 블록들을 프로그래밍하는 것과 연관된 사전프로그램 소거의 소거 시간을 줄임으로써 기록 동작들의 개선된 성능을 제공할 수 있다.
도 1a는 비-휘발성 메모리를 포함하는 예시 시스템 아키텍처(100)의 블록도를 도시한다. 특히, 예시 시스템 아키텍처(100)는 저장 시스템(102)(예컨대, 이는 메모리 시스템으로 지칭될 수 있음), 제어기(104), 및 호스트(106)를 포함한다. 다양한 실시예들에서, 호스트(106)는 저장 시스템(102)을 이용하는 임의의 디바이스 또는 시스템을 포함할 수 있다. 일부 실시예들에서, 제어기(104)의 다양한 양태들은 호스트(106)에 구현될 수 있거나 또는 호스트(106)는 저장 시스템(102)에 저장된 명령어들을 실행하도록 구성된 자신만의 제어기(예컨대, 프로세서)를 포함할 수 있고 또한 호스트(106)는 저장 시스템(102)에 저장된 데이터에 액세스할 수 있다.
호스트(106)의 예들은 데스크톱 컴퓨터, 랙 마운트 서버, 랩톱, 스마트폰, 태블릿, 또는 기타 적합한 컴퓨팅 디바이스와 같은 컴퓨팅 디바이스들을 포함한다. 호스트(106)는 또한 게임 시스템, 디지털 폰, 디지털 카메라(예컨대, 디지털 스틸 카메라 및 디지털 동영상 카메라), 휴대용 미디어 플레이어, 디지털 포토 프레임, 원격 제어, 텔레비전 스틱, 스마트 텔레비전 등과 같은 시스템들 및 디바이스들을 포함할 수 있다. 또한, 시스템 아키텍처(100)는 보안 디지털(SD) 카드 또는 마이크로 보안 디지털(micro-SD) 카드와 같은 메모리 카드에 구현될 수 있다. 일부 실시예들에서, 시스템 아키텍처(100)는, 예를 들어 랩톱 컴퓨터에 설치된 솔리드-스테이트 디스크(SSD) 드라이브와 같이, 호스트에 내장된다.
시스템 아키텍처(100)가 메모리 카드 내에 구현된 실시예들에서, 호스트(106)는 메모리 카드 또는 플래시 드라이브(예컨대, 범용 직렬 버스(USB) 포트, 또는 메모리 카드 슬롯)의 하나 이상의 유형들을 위하여 빌트-인 리셉터클을 포함할 수 있다. 추가적으로, 또는 대안적으로, 호스트(106)는 메모리 카드가 꽂힐 수 있는 어댑터들을 포함할 수 있다. 호스트의 전술한 예들이 제한하는 예들인 것을 의미하지 않는다. 반대로, 호스트(106)는 저장 시스템(102)에 액세스하는 임의의 유형의 디바이스, 시스템, 및 장치를 포함할 수 있다.
도 1a에서, 저장 시스템(102)은 메모리 제어기 및 드라이버들(예컨대, 제어기(104))을 포함한다 - 이는 아래에서 더 기술될 바와 같음 -. 그러나, 저장 시스템(102)의 일부 실시예들에서, 저장 시스템(102)은 호스트(106) 상의 제어기(예컨대, 에러 처리를 포함하는, 저장 시스템(102)의 컴퓨팅 디바이스 제어의 프로세서)에 의해 실행되는 소프트웨어에 대신 제어되는 메모리-전용 유닛들을 포함할 수 있다. 또한, 도 1a는 저장 시스템(102)이 호스트(106)와 분리된 것으로 도시되어 있지만, 일부 실시예들에서, 저장 시스템(102)이 호스트(106)와 함께 내장되어, 메모리, 제어기, 및 드라이버들이 단일 집적 회로 칩 상에 형성된다.
호스트(106)는 저장 시스템(102)과 호스트(106)가 통신할 수 있게 하는 임의의 공지된 또는 개발 완료된 통신 프로토콜을 구현하는 버스(112)를 사용하여 저장 시스템(102)과 통신할 수 있다. 통신 프로토콜은 보안 디지털(SD) 프로토콜, 메모리 스틱(MS) 프로토콜, USB 프로토콜, 어드밴스드 마이크로컨트롤러 버스 아키텍처(AMBA), 또는 기타 적합한 통신 프로토콜을 포함할 수 있다.
다양한 실시예들에서, 제어기(104)는 호스트(106)와 저장 시스템(102) 사이의 인터페이스의 역할을 한다. 호스트(106)는 버스(112)와 연관된 버스 인터페이스를 통해 제어기(104)와 통신할 수 있다. 제어기(104)는 개별적인 회로 컴포넌트들, 프로세싱 회로부(예컨대, 논리 게이트 및 스위치), 프로세서, 마이크로프로세서, 제어 소프트웨어를 구비한 마이크로컨트롤러, 또는 필드 프로그램가능 게이트 어레이(FPGA)를 포함할 수 있다. 또한, 예시 제어기(104)는 프로세서에 의해 실행가능한 컴퓨터-판독가능 프로그램 코드(예컨대, 소프트웨어 또는 펌웨어)를 저장하는 컴퓨터-판독가능 매체를 포함한다. 일부 실시예들에서, 제어기(104)는 플래시 메모리 제어기이다. 일부 실시예들에서, 제어기(104)는 호스트(106) 내에서 실행되는 프로세서이다.
도 1a를 더 참조하면, 일부 실시예들에 따라, 제어기(104)는 호스트(106)와 저장 시스템(102) 사이의 인터페이스의 역할을 하고, 저장 시스템(102) 상에 저장된 데이터를 관리한다. 예를 들어, 호스트(106)는, 버스(112)와 연관된 버스 인터페이스를 통해, 제어기(104)에 논리 주소를 제공함으로써 저장 시스템(102)에 저장된 데이터에 액세스할 수 있는데, 제어기(104)는 논리 주소를 물리 주소로 변환한다. 제어기(104)는 데이터 및/또는 물리 주소와 연관된 특정 저장 위치에 액세스할 수 있고, 저장 시스템(102)과 호스트(106) 사이의 데이터 전송을 용이하게 할 수 있다. 일부 실시예들에서, 저장 시스템(102)이 플래시 메모리를 포함하는 경우, 제어기(104)는 플래시 메모리를 포맷하여 메모리가 적절히 동작하도록 보장하고, 불량 플래시 메모리 셀들을 구상하고, 향후 고장난 셀들에 대체되거나 또는 플래시 메모리 제어기(예컨대, 제어기(104))를 동작시키기 위한 펌웨어를 보유하는 데 사용될 여분의 셀들을 할당한다.
따라서, 제어기(104)는 마모 평준화(wear leveling)(예컨대, 메모리 블록들의 수명을 연장시키기 위하여 기록을 분배함), 가비지 수집(예컨대, 데이터의 유효 페이지들을 새로운 블록으로 이동시키고 이전에 사용된 블록을 소거함), 및 에러 검출 및 교정(예컨대, 판독 에러 처리)과 같은 다양한 메모리 관리 기능들을 수행한다.
도 1a를 다시 참조하면, 저장 시스템(102)은 여러 메모리 다이(110-1 내지 110-N)를 포함할 수 있는 비-휘발성 메모리(NVM) 블록(110)을 포함한다. 일부 실시예들에서, NVM 블록(110)은 메모리 다이(110-1 내지 110-N)와 같은 메모리 다이의 물리적 세트를 정의한다. 다른 실시예들에서, NVM 블록(110)은 메모리 다이의 논리적 세트를 정의하며, NVM 블록(110)은 메모리 다이의 여러 물리적으로 상이한 세트들로부터 메모리 다이를 포함한다. NVM 블록(110)이 도 1a에서 정의되는 방식은 제한적인 것으로 의미되지 않는다.
각각의 메모리 다이, 예를 들어 메모리 다이(110-1)는 NAND 플래시 메모리 셀, NOR 플래시 메모리 셀, 또는 기타 적합한 메모리 셀들과 같은 비-휘발성 메모리 셀들을 포함한다. 메모리 셀들은 비-휘발성이기 때문에, 저장 시스템(102) 내의 메모리 셀들은 메모리 셀들 및/또는 저장 시스템(102)에 공급되는 전력의 중단이 있어도 데이터를 유지한다. 따라서, 저장 시스템(102)은 용이하게 운반될 수 있고 저장 시스템(102)은 메모리 카드 및 전력 공급원에 항상 연결되는 것은 아닌 기타 메모리 디바이스들에 사용될 수 있다.
다양한 실시예들에서, 메모리 다이(110) 내의 메모리 셀들은 솔리드-스테이트 메모리 셀들(예컨대, 플래시)이고 일회용 프로그램가능, 수차례 프로그램가능, 또는 여러 차례 프로그램가능하다. 추가적으로, 메모리 다이(110) 내의 메모리 셀들은 싱글-레벨 셀들(SLC), 다중-레벨 셀들(MLC), 또는 트리플-레벨 셀들(TLC)을 포함할 수 있다. 일부 실시예들에서, 메모리 셀들은 평면 방식(예컨대, 2D NAND(NOT-AND) 플래시) 또는 스택 또는 적층 방식(예컨대, 3D NAND 플래시)으로 제조된다. 즉, 평면 플래시 메모리는 메모리 셀의 단일 층을 포함하는 반면, 스택형 플래시 메모리는 수직으로 다중 층들(예컨대, 평면들로 지칭됨)로 적층되는 메모리 셀들을 포함한다.
일부 실시예들에서, 도 1a에 도시된 바와 같이, 제어기(104) 및 NVM 블록(110)은 임의의 공지된 또는 개발 완료된 통신 프로토콜을 구현하는 인터페이스(114)에 의해 통신가능하게 결합된다. 저장 시스템(102)은 플래시 메모리인 실시예들에서, 인터페이스(114)는 토글 모드(Toggle Mode)(200, 400, 800), 또는 공통 플래시 메모리 인터페이스(Common Flash Memory Interface, CFI)와 같은 플래시 인터페이스이다. 다양한 실시예들에서, 인터페이스(114)는 제어기(104)와 개별적인 메모리 다이(110-1 내지 110-N) 사이에 배치된 여러 채널들(즉, 물리적 연결부들)에 의해 구현될 수 있다. 또한, 인터페이스(114)가 구축된 채널들의 수는 제어기(104)의 역량에 기초하여 달라진다. 추가적으로, 단일 채널은 하나 초과의 메모리 다이와 통신가능하게 결합하도록 구성될 수 있다. 단일 인터페이스(114)의 묘사는 제한적인 것으로 의미되지 않는다. 반대로, 단일 인터페이스는 컴포넌트들 사이에 사용될 수 있는 예시 인터페이스를 나타내며, 하나 이상의 인터페이스들은 동일한 컴포넌트들을 통신가능하게 결합하는 데 사용될 수 있다.
도 1b는 본 개시내용의 원리들에 따라 시스템 아키텍처(100)의 블록도를 일반적으로 도시한다. 시스템 아키텍처(100)는 더 큰 시스템 아키텍처의 일부로서 구현될 수 있다. 예를 들어, 도 1b에 도시된 바와 같이, 시스템 아키텍처(150)는 여러 저장 시스템들(102)을 추가로 포함하는 저장 모듈(156)을 포함한다. 예시 시스템 아키텍처(150) 내에서, 저장 모듈(156)은 저장 제어기(152)에 의해 호스트(106)와 통신가능하게 결합된다. 특히, 호스트(106)와 저장 모듈(156) 사이의 인터페이스(154)는 SATA(serial advanced technology attachment) 또는 PCIe(peripheral component interface express) 인터페이스와 같은 임의의 공지된 또는 개발 완료된 통신 프로토콜을 구현하는 버스 인터페이스를 포함한다. 일부 실시예들에서, 저장 모듈(156)은 (예컨대, 랩톱 컴퓨터 또는 태블릿 내의) SSD이다.
시스템 아키텍처(100)의 일부 구현예들은 계층적 저장 시스템을 포함한다. 계층적 저장 시스템은 복수의 저장 제어기들(152)을 포함할 수 있으며, 이들의 각각은 각자의 저장 시스템(102)을 제어한다. 또한, 복수의 호스트들(106)은 각각 계층적 저장 시스템에 액세스할 수 있다. 호스트들(106)은 NVMe(non-volatile memory express) 또는 FCoE(fiber channel over Ethernet) 인터페이스를 포함하는 임의의 공지된 또는 개발 완료된 통신 프로토콜을 구현하는 버스 인터페이스를 통해 계층적 저장 시스템 내의 메모리들에 액세스할 수 있다. 계층적 저장 시스템은 다수의 호스트 컴퓨터들에 의해 액세스가능한 랙 마운트 저장 시스템(예컨대, 데이터 센터)으로서 구현될 수 있다.
인터페이스(154)는 저장 제어기(152)와 저장 모듈(156) 사이에 배치된 여러 채널들(즉, 물리적 연결부들)에 의해 구현될 수 있다. 일부 실시예들에서, 인터페이스(154)가 구축된 채널들의 수는 저장 제어기(152)의 역량에 기초하여 달라진다. 단일 인터페이스의 묘사는 제한적인 것으로 의미되지 않으며, 단일 인터페이스는 컴포넌트들 사이에 사용될 수 있는 예시 인터페이스를 나타내며, 하나 이상의 인터페이스들은 다양한 컴포넌트들과 통신가능하게 결합하는 데 사용될 수 있다.
도 2a는 본 개시내용의 원리들에 따라 저장 시스템(102)의 블록도(200)를 일반적으로 도시한다. 저장 시스템(102)의 블록도(200)는 제어기(104) 및 NVM 메모리 블록(110)과 같은, 이전에 도 1a에서 기술된 컴포넌트들을 포함한다. 저장 시스템(102) 내에 존재할 수 있는 추가적인 컴포넌트들은 랜덤 액세스 메모리(RAM)(230), 판독 전용 메모리(ROM)(232), 및 기타 컴포넌트들(234)을 포함한다. 일부 실시예들에서, ROM(232)은 시스템 부트 코드를 저장한다.
RAM(230) 및 ROM(232)이 저장 시스템(102) 내에서 별개의 모듈들로서 나타나지만, 도시된 아키텍처는 제한적인 것으로 의미되지 않는다. 예를 들어, RAM(230) 및 ROM(232)은 제어기(104) 내에 위치될 수 있다. 일부 실시예들에서, RAM(230) 또는 ROM(232)의 부분들은, 각각, 제어기(104)의 외측 및 제어기(104)의 내측에 위치된다. 다른 실시예들에서, 제어기(104), RAM(230), 및 ROM(232)은 별개의 반도체 다이 상에 위치될 수 있다. 다양한 실시예들에서, 기타 컴포넌트들(234)은 외부 전기 인터페이스, 외부 RAM, 저항기, 커패시터, 논리 게이트들, 또는 제어기(104)와 교류하는 다른 컴포넌트들을 포함한다.
일부 실시예들에서, 제어기(104)는 호스트(106)와 접속하는 모듈(202), NVM 메모리 블록(110)과 접속하는 모듈(204), 및 아래에서 더 기재된 다양한 기타 모듈들을 포함한다. 제어기 내의 모듈들(예컨대, 모듈들(202, 204))은 버스(206)에 의해 서로 통신가능하게 결합된다.
제어기(104) 내에 도시된 다양한 모듈들의 하기 논의는 예시이며 제한하는 것으로 의미되지 않는다. 예를 들어, 일반적으로 도 2a 내에 도시된 다양한 모듈들은 제어기(104) 내에 실행되는 것으로 제한되지 않으며, 일부 실시예들에서, 하나 이상의 모듈들은 제어기(104)의 외부에서 실행될 수 있다.
모듈(202)은 호스트(106)와 접속하고 호스트(106) 또는 다음 레벨 저장 제어기와 제어기(104) 사이의 전기 인터페이스를 제공하는 호스트 인터페이스(208) 및 물리 층 인터페이스(210)를 포함한다. 호스트 인터페이스(208)는 데이터, 제어 신호들, 및 타이밍 신호들의 전송을 용이하게 한다. 호스트 인터페이스(208)의 예들은 SATA, SATA express, SAS(Serial Attached SCSI), Fibre 채널, USB, PCIe, 및 NVMe를 포함한다.
도 2a를 다시 참조하면, 다양한 실시예들에서, 모듈(204)은 NVM 블록(110)과 통신하도록 구성되고, 에러 교정 코드(ECC) 엔진(212)을 포함한다. 일부 실시예들에서, ECC 엔진(212)은 호스트(106)로부터 수신된 데이터를 인코딩하고, 인코딩된 데이터를 NVM 블록(110)에 저장한다. 데이터가 NVM 메모리 블록(110)으로부터 판독되면, ECC 엔진(212)은 데이터를 디코딩하고 데이터 내에서 검출된 에러들을 교정한다. 에러들을 검출하기 위하여, ECC 엔진(212)은 LDPC(low-density parity-check) 코드, BCH(Bose-Chaudhuri-Hocquenghem) 코드, 소프트 판독, 및/또는 여분의 패리티와 같은 알고리즘들을 이용하여 다양한 유형의 에러 확인을 구현한다.
예시 모듈(204)은 또한 시퀀서(214) 및 RAID(Redundant Array of Independent Drives) 모듈(216)을 포함한다. 다양한 실시예들에서, 시퀀서(214)는 NVM 메모리 블록(110)에 전송되는 프로그램 및 소거 커맨드 시퀀스들과 같은 커맨드 시퀀스들을 생성한다. RAID 모듈(216)은 RAID 패리티 및 문제 데이터의 복구를 생성한다. RAID 패리티는 NVM 메모리 블록(110) 내에 씌여지는 데이터에 추가적인 레벨의 무결성 보호를 제공하는 데 사용될 수 있다. 일부 실시예들에서, ECC 엔진(212)은 RAID 모듈(216)의 기능들을 구현한다.
예시 모듈(204)은 또한 커맨드 시퀀스들을 NVM 메모리 블록(110)에 제공하고, NVM 메모리 블록(110)으로부터 상태 정보를 수신하는 메모리 인터페이스(218)를 포함한다. 예를 들어, 메모리 인터페이스(218)는 토글 모드(Toggle Mode)(200, 400, 또는 800) 인터페이스와 같은 DDR(double data rate) 인터페이스를 포함하는 임의의 공지된 또는 개발 완료된 통신 프로토콜을 구현한다. 모듈(204)은 또한 모듈(204)의 전체 동작을 제어하는 플래시 제어 층(220)을 포함한다.
도 2a에서 제어기(104) 내의 예시 모듈들을 다시 참조하면, 제어기(104) 내의 추가적인 모듈들은 더미 워드 라인(DW) 패턴 생성 모듈(222), DW 에러 분석 모듈(224), 및 판독 파라미터 조정 모듈(226)을 포함한다. 더미 워드 라인들은 비-휘발성 메모리 다이 상에 배치되어 해당 비-휘발성 메모리 다이의 거동 및 상태를 분석 및 추적할 목적으로 사용된다. 다양한 실시예들에서, DW 패턴 생성 모듈(222)은 알려진 데이터 패턴을 더미 워드 라인에 입력하고 더미 워드 라인으로부터 다시 데이터를 판독하고 데이터를 알려진 데이터 패턴과 비교함으로써 에러들을 추적하거나 또는 주기적으로 확인한다.
다양한 실시예들에서, 판독 파라미터 조정 모듈(226)은 특정 비-휘발성 메모리 다이와 연관된 파라미터들을 조정한다. 예를 들어 - 그리고 아래에서 더 논의되는 바와 같이 - 판독 파라미터 조정 모듈(226)은 동작 - 즉, 판독 또는 기록- 동안 특정 비-휘발성 메모리 다이와 연관된 파라미터들을 조정하여 판독 파라미터들을 조정 또는 재조정할 수 있다. 판독 파라미터들을 재조정하기 위한 동작 동안, 판독 파라미터 조정 모듈(226)은 특정 메모리 블록에 대한 판독 파라미터들을 조정하고, 메모리 블록으로부터 데이터를 읽고, 생성된 BER을 검증한다. 생성된 BER이 목표 또는 예상 BER에 뒤떨어지거나 못미치는 경우, 판독 파라미터 조정 모듈(226)은 메모리 블록에 대한 판독 파라미터들을 조정한다. 후속적으로, 저장된 판독 파라미터들은 메모리 블록 내의 임의의 워드 라인을 읽어 들이는 동안 사용된다. 따라서, 판독 파라미터들은 메모리 블록에 고유할 수 있다.
예시 제어기(104) 내의 추가적인 모듈들은, 예를 들어, RAM(230) 내의 버퍼들을 관리하고 제어기(104) 내의 버스(206)의 내부 버스 중재를 제어하는 버퍼 관리자/버스 제어기(228)를 포함한다. 추가적으로, 또는 대안적으로, 제어기(104)는 NVM 메모리 블록(110)의 마모 평준화를 수행하는 매체 관리 층(236)을 포함할 수 있다. 이전에 언급된 바와 같이, 제어기(104)에 관하여 기술된 다양한 모듈들이 제어기(104)의 아키텍처로서 제한하는 것으로 의미되지 않는다. 예를 들어, 물리 층 인터페이스(210), RAID 모듈(216), 매체 관리 층(236), 및 버퍼 관리/버스 제어기(228)는 제어기(104) 내의 옵션적인 컴포넌트들의 예들일 수 있다.
또한, 저장 시스템(102)이 플래시 메모리를 포함하는 실시예들에서, 매체 관리 층(236)은 플래시 에러를 처리하고 호스트(106)와 접속하는 플래시 관리의 일부분으로서 통합될 수 있다. 특히, 매체 관리 층(236)은 호스트(106)로부터 수신된 기록 명령을 NVM 메모리 블록(110)에 대한 기록으로 번역하는 알고리즘(예컨대, 메모리 디바이스 내의 펌웨어)을 포함할 수 있다.
도 2b는 일반적으로 저장 시스템(102) 내의 NVM 메모리 블록(110)의 다양한 특징부들의 블록도를 도시한다. 제어기(104)의 상세사항들이 이전에 (도 2a에서) 기재되었기 때문에, 도 2b에서 제어기(104)는 단일 블록으로 도시되어 있다. 추가적으로, 이전에 기술된 RAM(230), ROM(232), 및 기타 컴포넌트들(234)이 도 2b에 포함되어 독자들이 적응하는 데 도움을 준다. 다음으로, 예시 메모리 다이(110-1) 내의 상세사항들이 논의된다. 비록 논의는 메모리 다이(110-1)에 중심을 두고 있지만, 메모리 다이(110-1)에 관련하여 논의되는 특징들의 각각은 동일하게 NVM 메모리 블록(110) 내의 모든 메모리 다이들에 적용된다.
일부 실시예들에서, 예시 메모리 다이(110-1)는 제어 회로(250), 판독/기록 회로들(252), 행 디코더(254), 열 디코더(256), 및 메모리 어레이(260)를 포함한다. 메모리 어레이(260)는 메모리 셀들의 2차원 어레이 또는 3차원 어레이를 포함할 수 있다. 판독/기록 회로들(252)은 메모리 다이(110-1) 내의 메모리의 페이지들을, 병렬로 읽어들이고 프로그래밍한다. 다양한 실시예들에서, 메모리 어레이(260)는 행 디코더(254)를 통해 워드 라인들에 의해 액세스되고 열 디코더(256)를 통해 비트 라인들에 의해 액세스된다.
메모리 다이(110-1)의 아키텍처는 제한적인 것으로 의미되지 않으며, 메모리 어레이(260)를 액세스하는 기능들을 수행할 수 있는 임의의 공지된 아키텍처는 본 개시내용의 범주를 벗어남 없이 사용될 수 있다. 예를 들어, 다양한 실시예들에서, 다양한 주변 회로들에 의한 메모리 어레이(260)에 대한 액세스는 메모리 어레이(260)의 반대편 상에 대칭 방식으로 구현될 수 있는데, 이는 액세스 라인들의 밀도, 및 메모리 어레이(260)의 각각의 면 상의 회로부를 감소시킨다.
도 2b를 다시 참조하면, 다양한 실시예들에서, 예시 제어 회로(250)는 전력 제어 회로(266), 주소 디코더(268), 및 상태 머신(270)을 포함한다. 일부 실시예들에서, 전력 제어 회로(266), 주소 디코더(268), 및 상태 머신(270)은 집합적으로 관리 회로들로 지칭될 수 있다. 제어 회로(250) 및 그것의 다양한 관리 회로들은 다양한 인터페이스들(예컨대, 인터페이스들(262, 264))에 의해 행 디코더(254) 및 열 디코더(256)에 통신가능하게 결합된다. 다양한 실시예들에서, 제어 회로(250)는 메모리 어레이(260) 상에 메모리 셀들에 대한 판독 또는 기록을 포함하는 다양한 동작들을 수행한다.
전력 제어 회로(266)는 메모리 어레이(260)의 동작 동안 워드 라인들 및 비트 라인들에 공급되는 전력 및 전압을 제어한다. 주소 디코더(268)는 호스트(106)에 의해 제공된 주소들과 행 디코더(254) 및 열 디코더(256)에 의해 사용되는 주소들 사이에서 주소들을 변환하는 주소 인터페이스를 제공한다. 예시 주소 디코더(268)는 호스트(106)에 의해 제공된 주소를 행 디코더(254) 및 열 디코더(256)에 의해 이해되고 그것들에 의해 사용되는 포맷으로 호환가능한 주소로 변환한다. 상태 기계(270)는 메모리 동작들의 칩-레벨 제어를 제공한다.
따라서, 저장 시스템(102)은 제어기(104) 및 NVM 메모리 블록(110)을 포함하는 다양한 컴포넌트들을 포함하며, 이들의 상세사항들은 상기 도 1a, 도 1b, 도 2a, 및 도 2b에 기재되어 있다. 논의는 이제 예시 메모리 어레이(260)의 예시 아키텍처, 특히 저장 시스템(102)에서 판독 성능을 개선하도록 수행될 수 있는 방법들로 이어진다.
도 3은 메모리 어레이(260)를 추가로 도시한다. 메모리 어레이(260)는 여러 메모리 블록들(302)로 분할된다. 플래시 메모리에서, 메모리 블록은 소거의 단위로 정의된다. 즉, 각각의 메모리 블록(302)은 함께 또는 블록으로 소거되는 다수의 메모리 셀들 포함한다. 일부 실시예들에서, 메모리 어레이(260)는 임의의 수의 블록들로 분획될 수 있는데, 예를 들어, 메모리 어레이(260)는 1,024개의 블록을 포함한다. 추가적으로, 또는 대안적으로, 메모리 블록들(302)의 각각은 프로그래밍의 단위로서 정의되는 다수의 페이지들로 개념상 분할될 수 있다. 일부 실시예들에서, 한 페이지의 데이터는 한 행의 메모리 셀들에 저장될 수 있다. 각각의 페이지는 사용자 데이터 및 오버헤드 데이터를 포함할 수 있고, 오버헤드 데이터는 사용자 데이터로부터 계산된 CC를 포함한다. 일부 실시예들에서, 메모리 블록들(302-1 내지 302-N)은 솔리드-스테이트 NAND 메모리 블록들을 포함할 수 있다.
각각의 메모리 블록(302), 예를 들어 메모리 블록(302-1)은 다수의 비트 라인들(304), 워드 라인들(306), 및 선택 라인들(308)을 포함한다. 각각의 비트 라인, 예를 들어 비트 라인(304-1)은 직렬로 연결된 여러 메모리 셀들에 연결된다. 더 구체적으로는, 각각의 메모리 셀이 플로팅 게이트 트랜지스터인 실시예에서, 플로팅 게이트 트랜지스터들은 직렬로 연결되어 NAND 스트링(310)(예컨대, 점선 상자 내에 도시됨)을 형성한다. 도 3에는 4개의 메모리 셀들이 도시되어 있지만, NAND 스트링 내의 메모리 셀들의 수는 제한적인 것으로 의미되지 않는다. 예를 들어, 16, 32, 64, 128, 또는 임의의 다른 수의 메모리 셀들이 NAND 스트링에서 연결될 수 있다. 각각의 해당 비트 라인(304)은 블록(302) 내에서 해당 NAND 스트링에 결합된다.
도 3을 다시 참조하면, 특정 메모리 셀-예컨대, 메모리 셀(316)-에 저장된 데이터를 읽어들이는 방법은 블록(302)의 선택 라인들(308)에 전압을 인가하는 단계를 포함하는데, 선택 라인들(308)은 결과적으로 블록(302) 내의 해당 NAND 스트링들, 예컨대, 메모리 셀(316)을 포함하는 NAND 스트링(310)에 결합된다. 선택 라인들(308)에 인가된 전압은 선택 트랜지스터들(312, 314)의 임계치 전압보다 크다. 선택 트랜지스터(312)는 선택 게이트 드레인 라인(SGD)(308-1)에 의해 제어되고 선택 트랜지스터(314)는 선택 게이트 소스 라인(SGS)(308-2)에 의해 제어된다. 추가적으로, 메모리 셀(316) 내의 데이터를 읽어들이기 위하여, NAND 스트링(319) 내의 모든 다른 메모리 셀들 또는 선택되지 않은 메모리 셀들은 턴온된다(예컨대, 그것들이 프로그램되어 있는지 또는 소거되어 있는지에 상관없이 전류를 흐르게 함). 선택되지 않은 메모리 셀들은 선택되지 않은 메모리 셀들을 턴 온하는 그것들의 해당 워드 라인들에 인가되는 판독 패스 전압 즉, 판독 파라미터들을 갖는다.
예시 판독 동작 동안, 다양한 판독 비교 레벨들 즉, 전압이 워드 라인(306-2)에 인가되어 메모리 셀(316)에 저장된 값을 결정한다. 일부 실시예들에서, 메모리 셀(316)의 전도 전류가 측정되어 메모리 셀(316) 내에 저장된 값을 결정한다. 각각의 메모리 셀이 액세스되는 방법 및 판독 또는 기록 동안 액세스되는 메모리 셀들의 수는 달라진다. 예를 들어, 메모리 블록(302-1)의 모든 비트 라인들은 동시에 프로그래밍 또는 판독될 수 있다. 다양한 실시예들에서, 공유된 워드 라인을 따라 메모리 셀들은 같은 시간에(즉, 동시에) 프로그래밍될 수 있다. 다른 실시예들에서, 비트 라인들은 짝수 비트 라인들 및 홀수 비트 라인들로 나뉠 수 있다. 홀수/짝수 비트 라인 아키텍처에서, 공유된 워드 라인을 따라 그리고 홀수 비트 라인들에 연결되는 메모리 셀들이 일정 시간에 프로그래밍되고, 공유된 워드 라인을 따르고 짝수 비트 라인에 연결된 메모리 셀들은 상이한 시간에 프로그래밍된다.
데이터가 메모리 블록에 쓰여진 때마다, 데이터는 ECC 엔진(212)에 의해 처리되는데, 이는 (예컨대, 특정 에러 교정 코드를 이용하여) 데이터를 인코딩하고, 인코딩된 데이터를 메모리 블록 내에 저장하는 것을 포함한다. 데이터가 메모리 블록으로부터 다시 판독될 때, 데이터는 ECC 엔진(212)에 의해 처리되는데, 이는 데이터를 디코딩하고, 에러들을 교정하고(예컨대, BER로서 추적됨), 데이터를 사용자에 반환하는 것(제어기(104) 이용)을 포함한다. 일부 실시예들에서, ECC 엔진(212)이 데이터를 제어기(104)에 반환하는 데 걸리는 시간의 양은 스루풋 시간으로 정의된다.
일부 실시예들에서, 제어기(104)는 메모리 어레이(260) 상에 데이터 통합 동작들을 수행한다. 제어기(104)는 메모리 어레이(260)의 메모리 블록(302-1)부터 메모리 블록(302-N) 중에서 통합 또는 압축할 소스 블록을 선택한다. 예를 들어, 제어기(104)는 통합 또는 압축할 소스 블록으로서 메모리 블록(302-1)을 선택할 수 있다. 메모리 블록(302-1)은 본 명세서에 기술된 예시 실시예들에 걸쳐 소스 블록(302-1)으로 지칭될 수 있다. 소스 블록(302-1)은 16 메모리 조각들 또는 임의의 적합한 수의 메모리 조각들과 같은 복수의 메모리 조각들을 포함할 수 있다. 메모리 조각들은 호스트 기록 동작 동안 호스트(106)에 의해 쓰여지는 데이터를 포함할 수 있다. 메모리 조각들은 해당 논리적 그룹들에 소속될 수 있고, 소스 블록(302-1) 내에 분산 또는 해체되어, 동일한 논리적 그룹과 연관된 메모리 조각들이 소스 블록(302-1) 내에 순차적으로 저장 또는 조직화되지 않을 수 있다. 추가적으로, 또는 대안적으로, 일부 메모리 조각들은 호스트 기록 동작 동안 호스트(106)에 의해 쓰여지는 데이터를 포함하지만, 소스 블록(302-1)에 걸쳐 분산된 기타 메모리 조각들은 비어있을 수 있다(예컨대, 호스트(106) 또는 제어기(104)에 의해 소거되었거나 또는 호스트(106)에 의해 씌여지지 않음).
일부 실시예들에서, 제어기(104)는 솔리드-스테이트 드라이브 동작들에 사용되고 있지 않은 메모리 블록들(302-1 내지 302-N) 중 하나 이상을 식별한다. 솔리드-스테이트 드라이브 동작들에 사용되고 있지 않은 하나 이상의 메모리 블록들(302-1 내지 302-N)은 자유 블록들로 처리되어 (예컨대, 이전 프로그래밍으로부터의) 이전(지난) 데이터로 완전히 프로그래밍되거나, 또는, 솔리드-스테이트 드라이브 동작들에 사용되고 있지 않은 하나 이상의 메모리 블록들(302-1 내지 302-N)이 데이터로 완전히 씌여있지 않으면, 그것들은 플래시 충전된다(예컨대, 데이터로 씌여진 플래시). 즉, 자유 블록들(예컨대, 솔리드-스테이트 동작들에 사용되고 있지 않은 하나 이상의 메모리 블록들(302-1 내지 302-N))은 대전된 상태(예컨대, 임계 개수의 전자들로 충전됨)에 유지 및/또는 배치되어 데이터 프로그래밍 이슈들, 예컨대 소거된 블록 유발 데이터 보유(EBDR) 이슈들, 또는 기타 적합한 데이터 프로그래밍 이슈들을 방지한다. 솔리드-스테이트 동작들에 사용되고 있지 않은 하나 이상의 메모리 블록들(302-1 내지 302-N)에 대응하는 정보는 자유 블록 리스트 상에 저장된다. 예를 들어, 메모리 블록들(302-1 내지 302-N) 중 하나에 대응하는 메모리 블록 주소는 자유 블록 리스트 상에 저장되어 대응하는 메모리 블록들(302-1 내지 302-N) 중 하나가 프로그래밍에 이용가능함을 나타낼 수 있다. 자유 블록 리스트는 임의의 적합한 데이터 리스트 또는 데이터베이스를 포함할 수 있고 저장 시스템(102)에 대응하는 임의의 적합한 메모리 상에 저장될 수 있다.
기재된 바와 같이, 제어기(104)는 메모리 블록들(302-1 내지 302-N)을 프로그래밍하도록 구성된다. 예를 들어, 제어기(104)는 판독 동작들, 기록 동작들, 기타 적합한 동작들, 또는 이들의 조합과 같은 동작들을 메모리 블록들(302-1 내지 302-N) 상에서 수행할 수 있다. 제어기(104)는, 제어기(104)로 하여금 메모리 블록들(302-1 내지 302-N)의 하나 이상의 페이지들로부터 데이터를 읽어들이고, 메모리 블록들(302-1 내지 302-N)의 하나 이상의 페이지들에 데이터를 쓰고, 메모리 블록들(302-1 내지 302-N)의 페이지들 상에 기타 동작들을 수행하거나, 또는 이들의 조합을 지시하는, 호스트(106)로부터 수신된 명령들에 응답하여 메모리 블록들(302-1 내지 302-N)을 프로그래밍할 수 있다. 추가적으로, 또는 대안적으로, 호스트(106)로부터 수신된 명령들은 하나 이상의 메모리 주소들(예컨대, 제어기(104)가 물리 주소들로 변환하는 논리 주소, 기재된 바와 같음)을 포함할 수 있다.
일부 실시예들에서, 메모리 블록들(302-1 내지 302-N) 중 하나 이상을 프로그래밍하기 위하여, 제어기(104)는 사전프로그램 검증 레벨을 이용하여 하나 이상의 메모리 블록들(302-1 내지 302-N) 상에 사전프로그램 소거를 수행할 수 있다. 이어서 제어기(104)는 하나 이상의 메모리 블록들(302-1 내지 302-N) 상에 기록 동작을 수행하여 하나 이상의 메모리 블록들(302-1 내지 302-N)에 데이터를 써넣을 수 있다. 사전프로그램 검증 레벨은 하나 이상의 메모리 블록들(302-1 내지 302-N)을 소거하는 데 적합한 전압 레벨을 포함할 수 있다. 예를 들어, 사전프로그램 검증 레벨은 0 볼트를 포함하여, 제어기(104)가 사전프로그램 검증 레벨을 이용하여 하나 이상의 메모리 블록들(302-1 내지 302-N) 상에 사전프로그램 소거 동작을 수행할 때, 하나 이상의 메모리 블록들(302-1 내지 302-N)의 전압 값들이 실질적으로 0 볼트이도록 할 수 있다.
하나 이상의 메모리 블록들(302-1 내지 302-N) 상에 사전프로그램 소거 동작들을 수행하는 것은 자유 블록 리스트 상의 메모리 블록들(302-1 내지 302-N)의 완전히 프로그래밍되는 속성으로 인해 시간 소모적일 수 있다. 따라서, 기재될 바와 같이, 제어기(104)는 하나 이상의 메모리 블록들(302-1 내지 302-N)의 프로그래밍 효율을 개선하기 위하여 메모리 블록들(302-1 내지 302-N)의 적어도 일부 상에 사전-소거 동작을 수행할 수 있다.
일부 실시예들에서, 제어기(104)는 향후 프로그래밍에 사용될 자유 블록 리스트(예컨대, 프로그래밍에 이용가능한 블록들) 상의 메모리 블록들(302-1 내지 302-N)에 순위를 매기고, 후보 메모리 블록들이 프로그래밍에 사용되기 이전에 중간 전압 레벨로 부분적으로 소거할 후보 메모리 블록들을 자유 블록 리스트로부터 식별하도록 구성된다. 제어기(104)가 후보 메모리 블록들의 하나 이상 상에 프로그래밍 동작들을 수행할 때, 제어기(104)는 사전프로그램 소거 동작의 수행을 생략할 수 있거나 또는, 기재될 바와 같이, 후보 메모리 블록들이 부분적으로 소거되었던 전압 레벨에 대응하는 사전-소거 검증 레벨을 사용함으로써 사전프로그램 소거 동작을 수행하는 데 걸리는 시간의 양을 감소시킬 수 있다.
일부 실시예들에서, 제어기(104)는 자유 블록 리스트 상의 메모리 블록들(302-1 내지 302-N)의 하나 이상의 메모리 블록 특성들을 이용하여 자유 블록 리스트로부터 후보 메모리 블록들을 식별할 수 있다. 하나 이상의 메모리 블록 특성들은 프로그램 소거 사이클(PEC) 값들, 소거 시간 값들, 고유 비트 레이트 에러(BER) 값들, 및/또는 기타 적합한 메모리 블록 특성들을 포함할 수 있다. 제어기(104)는 PEC, 소거 시간, BER, 또는 기타 적합한 메모리 블록 특성들에 기초하여 후보 블록들로서 자유 블록 리스트 상의 메모리 블록들(302-1 내지 302-N)에 순위를 메길 수 있다.
제어기(104)는 임의의 적합한 방식으로 자유 블록 리스트 상의 메모리 블록들(302-1 내지 302-N)에 순위를 매길 수 있다. 예를 들어, 제어기(104)는 최고 PEC 값들을 갖는 자유 블록 리스트 상의 메모리 블록들(302-1 내지 302-N)을 처음으로 순위를 매기고, 유사한 PEC 값들 및 임계치보다 높은 소거 시간들을 갖는 자유 블록 리스트 상의 메모리 블록들(302-1 내지 302-N)을 그 다음으로 순위를 매기고, 유사한 PEC 값들 및 유사한 소거 시간 값들을 갖지만, BER이 임계치를 초과하는 메모리 블록들(302-1 내지 302-N)을 그 다음으로 순위를 매길 수 있다. 제어기(104)는 자유 블록 리스트 상의 각각의 메모리 블록(302-1 내지 302-N)에 대하여 자유 블록 리스트 상의 각각의 메모리 블록(302-1 내지 302-N)의 순위를 나타내는 순위 표시를 자유 블록 리스트 내에 저장할 수 있다.
일부 실시예들에서, 제어기(104)는 순위 표시에 기초하여 자유 블록 리스트로부터 하나 이상의 후보 메모리 블록들을 선택한다. 이어서 제어기(104)는, 백그라운드에서(예컨대, 제어기(104)가 호스트(106) 또는 기타 적합한 소스에 의해 기타 동작들을 수행하도록 지시받지 않는 저장 시스템(102)의 유휴 시간 동안), 하나 이상의 후보 메모리 블록들의 각각에서 사전-소거 동작을 수행한다. 제어기(104)는 하나 이상의 후보 메모리 블록들 상에 사전-소거 동작을 수행하는 데 사용하기 위한 사전-소거 검증 레벨을 결정한다. 사전-소거 검증 레벨은 사전프로그램 소거 검증 레벨보다 높은 전압 레벨을 포함할 수 있다. 예를 들어, 사전-소거 검증 레벨은 수동 소거 검증 레벨일 수 있고, 1 볼트 또는 기타 적합한 전압과 같은 임의의 적합한 전압 값일 수 있다.
일부 실시예들에서, 제어기(104)는 하나 이상의 후보 메모리 블록들에 대응하는 순위 표시에 기초하여 사전-소거 검증 레벨을 조정하여 사전-소거 검증 레벨이 증가 또는 감소될 수 있고, 사전프로그램 검증 레벨과 실질적으로 유사한 전압 값을 포함할 수 있다. 예를 들어, 상대적으로 높은 PEC 값들을 갖는 자유 블록 리스트 상의 메모리 블록들(302-1 내지 302-N)의 경우(예컨대, 소거 시간이 더 긴 경향이 있음), 제어기(104)는 대응하는 메모리 블록들 상의 후속 프로그램 동작 동안 더 긴 소거 시간을 보상하기 위하여 사전-소거 검증 레벨을 더 낮게 설정할 수 있다.
제어기(104)는 사전-소거 검증 레벨을 이용하여 하나 이상의 후보 메모리 블록들 상에 사전-소거 동작을 수행한다. 예를 들어, 제어기(104)는 하나 이상의 후보 메모리 블록들의 각각에 사전-소거 검증 레벨에 대응하는 볼트 수를 저장한다(예컨대, 하나 이상의 후보 메모리 블록들은 사전프로그램 소거 검증 레벨로 완전히 소거되지 않을 수 있음).
일부 실시예들에서, 제어기(104)가 하나 이상의 후보 메모리 블록들 상에 사전-소거 동작을 수행한 후에, 제어기(104)는 하나 이상의 후보 메모리 블록들이 사전-소거 검증 레벨을 이용하여 사전-소거되었음을 나타내기 위하여 하나 이상의 후보 메모리 블록들의 헤더 정보를 업데이트할 수 있다. 추가적으로, 또는 대안적으로, 제어기(104)는 하나 이상의 후보 메모리 블록들 및 사전-소거 검증 레벨을 나타내는 정보를 사전-소거 테이블에 저장한다. 제어기(104)는 자유 블록 리스트 상의 기타 메모리 블록들(302-1 내지 302-N) 상에 사전-소거 동작들을 계속해서 수행할 수 있다.
일부 실시예들에서, 제어기(104)는 소거 시간(예컨대, 시스템 레벨에서, 사전-소거 동작의 시작과 사전-소거 동작의 완료 사이의 시간의 양)을 기록할 수 있고, 하나 이상의 후보 메모리 블록들의 각각에 대하여 소거 시간을 자유 블록 리스트 및/또는 사전-소거 테이블에 저장할 수 있다.
기재된 바와 같이, 제어기(104)는 메모리 블록들(302-1 내지 302-N) 중 하나 이상에 프로그램 동작들을 수행한다. 제어기(104)는, 포어그라운드에서, 자유 블록 리스트 또는 사전-소거 테이블 상의 후보 메모리 블록들로부터 프로그래밍할 하나 이상의 메모리 블록들(302-1 내지 302-N)을 선택한다. 제어기(104)는 자유 블록 리스트 및/또는 사전-소거 테이블을 이용하여 하나 이상의 메모리 블록들(302-1 내지 302-N)에 대한 사전-소거 검증 레벨을 결정한다. 제어기(140)는 사전-소거 검증 레벨에 따라 하나 이상의 메모리 블록들(302-1 내지 302-N) 상에 사전프로그램 소거 동작을 수행한다(예컨대, 제어기(104)는 사전-소거 검증 레벨을 이용하여 몇 볼트가 하나 이상의 메모리 블록들(302-1 내지 302-N)의 각각에 저장되어 있는지 결정하고, 하나 이상의 메모리 블록들(302-1 내지 302-N)의 각각으로부터 대응하는 볼트 수를 방전시킴). 예를 들어, 제어기(104)는 사전-소거 검증 레벨에 의해 표시되는 볼트 수에 대응하는 소거 루프 당 소거 펄스들의 수를 제공할 수 있다. 이러한 방식으로, 제어기(104)는 하나 이상의 메모리 블록들(302-1 내지 302-N) 상에 사전프로그램 소거 동작을 수행하는 데 걸리는 시간의 양을 현저하게 줄일 수 있다(예컨대, 5~15 마이크로초 대신 0~1마이크로초). 일부 실시예들에서, 제어기(104)는 사전-프로그램 소거 동작을 수행할 수 있고, 사전-소거 검증 레벨을 이용하여 하나 이상의 메모리 블록들(302-1 내지 302-N)의 소거 검증을 생략할 수 있다.
일부 실시예들에서, 제어기(104)는 하나 이상의 메모리 블록들(302-1 내지 302-N)의 각각에 대하여 사전프로그램 소거 동작의 소거 시간을 기록하고, 하나 이상의 메모리 블록들(302-1 내지 302-N)의 각각에 대하여 자유 블록 리스트 및/또는 사전-소거 테이블에 소거 시간을 저장한다. 제어기(104)는 이어서 하나 이상의 메모리 블록들(302-1 내지 302-N) 상에 기재된 바와 같이 기록 동작들을 수행할 수 있다.
일부 실시예들에서, 제어기(104)는 총 소거 시간(예컨대, 사전-소거 소거 시간 및 사전프로그램 소거 시간)을 이용하여 후속 프로그래밍 동작들에 대하여 자유 블록 리스트 상의 메모리 블록들(302-1 내지 302-N)에 순위를 매길 수 있다. 일부 실시예들에서, 제어기(104)가 하나 이상의 메모리 블록들(302-1 내지 302-N) 상에 프로그래밍 동작들을 수행한 후에, 제어기(104)는 프로그래밍된 메모리 블록들(302-1 내지 302-N)의 각각에 대하여 (예컨대, 판독 동작의 수행 동안) 기재된 바와 같이 고유 BER를 결정할 수 있다. 제어기(104)는 자유 블록 리스트 및/또는 사전-소거 테이블 내의 메모리 블록들(302-1 내지 302-N)의 각각에 대하여 결정된 고유 BER을 저장할 수 있다. 기재된 바와 같이, 제어기(104)는 자유 블록 리스트 상의 메모리 블록들(302-1 내지 302-N)에 대한 고유 BER을 사용하여 자유 블록 리스트 상의 메모리 블록들(302-1 내지 302-N)에 순위를 매길 수 있다.
일부 실시예들에서, 제어기(104)는 본 명세서에 기술된 방법들을 수행할 수 있다. 그러나, 제어기(104)에 의해 수행되는 바와 같이 본 명세서에 기술된 방법들은 제한하는 것으로 의미되지 않으며, 제어기 상에 실행되는 임의의 유형의 소프트웨어는 개시내용의 범주를 벗어남 없이 본 명세서에 기술된 방법들을 수행할 수 있다. 예를 들어, 호스트(106) 내의 소프트웨어 또는 저장 시스템(102) 내의 (예컨대, ROM(232) 또는 NVM 메모리 블록(110)에 저장되는) 펌웨어를 실행하는 프로세서와 같은 제어기는 본 명세서에 기술된 방법들을 수행할 수 있다.
도 4는 본 개시내용의 원리들에 따라 메모리 블록 프로그래밍 방법(400)의 흐름도를 일반적으로 도시한다. 402에서, 방법(400)은 후보 메모리 블록들을 식별한다. 예를 들어, 제어기(104)는 자유 블록 리스트 상에서 프로그래밍에 이용가능한 것으로 표시되는 메모리 블록들(302-1 내지 302-N)의 후보 메모리 블록들을 식별할 수 있다. 제어기(104)는 자유 블록 리스트 상의 메모리 블록들(302-1 내지 302-N)의 PEC 값들, 자유 블록 리스트 상의 메모리 블록들(302-1 내지 302-N)의 소거 시간 값들, 자유 블록 리스트 상의 메모리 블록들(302-1 내지 302-N)의 고유 BER 값들, 또는 기타 적합한 메모리 블록 특성과 같은 적어도 하나의 메모리 블록 특성을 이용하여 후보 메모리 블록들을 식별할 수 있다. 일부 실시예들에서, 제어기(104)는 적어도 하나의 메모리 블록 특성에 기초하여 자유 블록 리스트 상의 메모리 블록들(302-1 내지 302-N)에 순위를 매길 수 있다. 404에서, 방법(400)은 후보 메모리 블록들 상에 사전-소거 동작들을 수행한다. 예를 들어, 제어기(104)는 후보 메모리 블록들의 순위에 기초하여 사전-소거 검증 레벨을 결정한다. 제어기(104)는 사전-소거 검증 레벨을 이용하여 후보 메모리 블록들의 각각에 사전-소거 동작을 수행할 수 있다. 일부 실시예들에서, 제어기(104)는 후보 메모리 블록들에 대응하는 정보를 포함시키기 위하여 자유 블록 리스트 및/또는 사전-소거 테이블을 업데이트할 수 있다. 정보는 후보 메모리 블록들의 주소 정보, 사전-소거 검증 레벨, 기타 적합한 정보, 또는 이들의 조합을 포함할 수 있다. 일부 실시예들에서, 제어기(104)는 사전-소거 검증 레벨 및/또는 기타 적합한 정보를 포함시키기 위하여 후보 메모리 블록들에 대응하는 헤더 정보를 업데이트할 수 있다.
406에서, 방법(400)은 사전-소거 시간을 기록한다. 예를 들어, 제어기(104)는 후보 메모리 블록들에 대한 사전-소거 시간을 기록할 수 있다. 408에서, 방법(400)은, 사전-소거 테이블 상에, 각각의 후보 메모리 블록에 대한 사전-소거 정보를 저장한다. 예를 들어, 제어기(104)는 후보 메모리 블록들에 대응하는 사전-소거 정보를 포함시키기 위하여 자유 블록 리스트 및/또는 사전-소거 테이블을 업데이트할 수 있다. 사전-소거 정보는 후보 메모리 블록들의 주소 정보, 사전-소거 검증 레벨, 기타 적합한 정보, 또는 이들의 조합을 포함할 수 있다. 일부 실시예들에서, 제어기(104)는 사전-소거 검증 레벨 및/또는 기타 적합한 정보를 포함시키기 위하여 후보 메모리 블록들에 대응하는 헤더 정보를 업데이트할 수 있다. 제어기(104)는 사전-소거 시간을 포함시키기 위하여 자유 블록 리스트, 사전-소거 테이블, 및/또는 후보 메모리 블록들에 대응하는 헤더 정보를 업데이트할 수 있다.
410에서, 방법(400)은 프로그래밍될 적어도 하나의 메모리 블록을 식별한다. 예를 들어, 제어기(104)는 자유 블록 리스트로부터 및/또는 프로그래밍될 사전-소거 테이블을 이용하여 적어도 하나의 메모리 블록을 식별한다. 412에서, 방법(400)은 적어도 하나의 메모리 블록 상에 사전프로그램 소거 동작을 수행한다. 예를 들어, 제어기(104)는 자유 블록 리스트, 사전-소거 테이블, 및/또는 적어도 하나의 메모리 블록에 대응하는 헤더 정보를 이용하여 사전-소거 검증 레벨을 결정한다. 제어기(104)는 사전-소거 검증 레벨에 따라 적어도 하나의 메모리 블록 상에 사전프로그램 소거 동작을 수행한다. 414에서, 방법(400)은 적어도 하나의 메모리 블록 상에 기록 동작을 수행한다. 예를 들어, 제어기(104)는 적어도 하나의 메모리 블록 상에 기록 동작을 수행한다. 416에서, 방법(400)은 사전프로그램 소거 시간 및 비트 에러율을 기록한다. 예를 들어, 제어기(104)는 적어도 하나의 메모리 블록의 사전프로그램 소거 동작에 대한 사전프로그램 소거 시간을 기록한다. 제어기(104)는 판독 동작 동작 동안 사용하는 적어도 하나의 메모리 블록의 고유 BER을 결정할 수 있다. 418에서, 방법(400)은 적어도 하나의 메모리 블록의 메모리 블록 특성들을 기록한다. 예를 들어, 제어기(104)는 사전프로그램 소거 시간 및 고유 BER을 포함시키기 위하여 자유 블록 리스트, 사전-소거 테이블, 및/또는 적어도 하나의 메모리 블록에 대응하는 헤더 정보를 업데이트한다.
일부 실시예들에서, 메모리 시스템 내의 메모리 블록들을 프로그래밍하기 위한 방법은, 적어도 하나의 메모리 블록 특성을 이용하여, 메모리 시스템 내의 메모리 블록들의 후보 메모리 블록들을 식별하는 단계를 포함한다. 방법은 또한 사전-소거 검증 레벨을 이용하여, 후보 메모리 블록들 상에 사전-소거 동작을 수행하는 단계를 포함한다. 방법은 또한, 사전-소거 테이블 상에, 후보 메모리 블록들의 각각의 메모리 블록에 대한 사전-소거 정보를 저장하는 단계를 포함한다. 방법은 또한 사전-소거 테이블을 이용하여, 프로그래밍될 적어도 하나의 메모리 블록을 식별하는 단계를 포함한다. 방법은 또한 사전-소거 검증 레벨을 이용하여 적어도 하나의 메모리 블록 상에 사전프로그램 소거 동작을 수행하고, 적어도 하나의 메모리 블록 상에 기록 동작을 수행함으로써 적어도 하나의 메모리 블록을 프로그래밍하는 단계를 포함한다.
일부 실시예들에서, 사전-소거 검증 레벨을 이용하여 사전-소거 동작을 수행하는 단계는 유휴 시간 동안 사전-소거 동작을 수행하는 단계를 포함한다. 일부 실시예들에서, 후보 메모리 블록들의 각각의 메모리 블록에 대한 사전-소거 정보는 적어도 해당 메모리 블록과 연관된 메모리 주소 및 해당 메모리 블록이 사전-소거 검증 레벨을 이용하여 사전-소거되었음을 나타내는 표시를 포함한다. 일부 실시예들에서, 방법은 또한 후보 메모리 블록들 상에 사전-소거 동작을 수행하는 것과 연관된 소거 시간을 기록하는 단계를 포함한다. 일부 실시예들에서, 방법은 적어도 하나의 메모리 블록 상에 사전프로그램 소거 동작을 수행하는 것과 연관된 소거 시간을 기록하는 단계를 추가로 포함하는 것을 또한 포함한다. 일부 실시예들에서, 적어도 하나의 메모리 블록 특성은 후보 메모리 블록들의 각각과 연관된 프로그램 소거 사이클들의 수를 포함한다. 일부 실시예들에서, 적어도 하나의 메모리 블록 특성은 후보 메모리 블록들의 각각과 연관된 소거 시간들을 포함한다. 일부 실시예들에서, 적어도 하나의 메모리 블록 특성은 후보 메모리 블록들의 각각과 연관된 비트 에러율을 포함한다. 일부 실시예들에서, 사전-소거 검증 레벨은 0 볼트보다 높다. 일부 실시예들에서, 사전프로그램 소거 동작과 연관된 소거 펄스들의 수는 사전-소거 검증 레벨에 대응한다.
일부 실시예들에서, 제어기는 버스 인터페이스 및 프로세서를 포함한다. 버스 인터페이스는 자유 블록 리스트 상의 메모리 블록들과 연관된 메모리 블록 특성들을 수신하도록 구성된다. 프로세서는: 메모리 블록 특성들 중 적어도 하나의 메모리 블록 특성을 이용하여, 자유 블록 리스트 상의 메모리 블록들의 후보 메모리 블록들을 식별하고; 사전-소거 검증 레벨을 이용하여, 후보 메모리 블록들 상에 사전-소거 동작을 수행하고; 사전-소거 검증 레벨을 이용하여 후보 메모리 블록들 중 적어도 하나의 메모리 블록 상에 사전프로그램 소거 동작을 수행하고, 적어도 하나의 메모리 블록 상에 기록 동작을 수행하도록 구성된다.
일부 실시예들에서, 프로세서는 유휴 시간 동안 사전-소거 동작을 수행하도록 구성된다. 일부 실시예들에서, 프로세서는 후보 메모리 블록들 상에 사전-소거 동작을 수행하는 것과 연관된 소거 시간을 기록하도록 추가로 구성된다. 일부 실시예들에서, 프로세서는 적어도 하나의 메모리 블록 상에 사전프로그램 소거 동작을 수행하는 것과 연관된 소거 시간을 기록하도록 추가로 구성된다. 일부 실시예들에서, 적어도 하나의 메모리 블록 특성은 후보 메모리 블록들의 각각과 연관된 프로그램 소거 사이클들의 수를 포함한다. 일부 실시예들에서, 적어도 하나의 메모리 블록 특성은 후보 메모리 블록들의 각각과 연관된 소거 시간들을 포함한다. 일부 실시예들에서, 적어도 하나의 메모리 블록 특성은 후보 메모리 블록들의 각각과 연관된 비트 에러율을 포함한다. 일부 실시예들에서, 사전-소거 검증 레벨은 0 볼트보다 높다. 일부 실시예들에서, 사전프로그램 소거 동작과 연관된 소거 펄스들의 수는 사전-소거 검증 레벨에 대응한다.
일부 실시예들에서, 메모리 블록들의 기록 동작들의 성능을 향상시키기 위한 방법은 자유 블록 리스트 상의 메모리 블록들의 각각과 연관된 프로그램 소거 사이클 값, 자유 블록 리스트 상의 메모리 블록들의 각각과 연관된 소거 시간 값, 및 자유 블록 리스트 상의 메모리 블록들의 각각과 연관된 비트 에러율 값 중 적어도 하나를 이용하여 자유 블록 리스트 상의 메모리 블록들로부터 후보 메모리 블록들을 식별하는 단계를 포함한다. 방법은 또한 0 볼트보다 높은 사전-소거 검증 레벨을 이용하여 후보 메모리 블록들의 각각 상에 사전-소거 동작을 수행하는 단계를 포함한다. 방법은 또한 사전-소거 동작과 연관된 소거 시간을 기록하는 단계를 포함한다. 방법은 또한 각각의 후보 메모리 블록에 대하여, 대응하는 소거 시간 및 사전-소거 검증 레벨을 저장하는 단계를 포함한다.
상기 논의는 본 발명의 원리 및 다양한 실시예들의 예시임을 의미한다. 상기 개시내용이 완전히 이해되면 다수의 변형 및 수정들이 통상의 기술자들에게 명백할 것이다. 하기 첨구범위들이 이러한 모든 변형 및 수정을 포함하는 것으로 해석되도록 의도된다. 전술한 설명 및 청구범위에서, 용어 "포함하는" 및 "포함하고"는 개방형 방식으로 사용되며, 따라서 "포함하지만, 제한되지 않는… "을 의미하도록 해석되어야 한다. 또한, 용어 "결합" 또는 "결합하는"은 간접 또는 직접 연결 중 어느 하나를 의미하도록 의도된다. 따라서, 만약 제1 디바이스가 제2 디바이스에 결합된다면, 그 연결은 직접 연결을 통하거나 또는 다른 디바이스들 및 연결부들을 통한 간접 연결을 통할 수 있다.
단어 "예"는 본 명세서에서 일례, 사례, 또는 예시의 역할을 의미하는 데 사용된다. "예시적"으로서 본 명세서에 기술된 임의의 태양 또는 설계는 반드시 다른 태양들 또는 설계들에 비해 바람직하거나 유리한 것으로 해석되어야 하는 것은 아니다. 오히려, 단어 "예"의 사용은 구체적으로 개념을 나타내도록 의도된다. 본 출원에 사용된 바와 같이, 용어 "또는"은 배타적인 "또는"보다는 포괄적인 "또는"을 의미하도록 의도된다. 즉, 달리 명시되거나 또는 맥락에서 명백하지 않는 한, "X가 A 또는 B를 포함한다"는 임의의 자연적인 포괄적인 치환을 의미하도록 의도된다. 즉, 만약 X가 A를 포함하거나; X가 B를 포함하거나; 또는 X가 A 및 B 둘 모두를 포함하는 경우, "X는 A 또는 B를 포함한다"가 임의의 전술한 사례들 하에서 충족된다. 또한, 본 출원과 첨부된 청구범위에서 사용되는 바와 같은 관사("a" 및 "an")는 일반적으로 문맥으로부터 단수형으로 지시되는 것으로 다른 방식으로 또는 명백하게 특정되지 않는 한, "하나 이상" 을 의미하는 것으로 해석되어야 한다. 또한, 전체적으로 용어 "구현예" 또는 "일 구현예"의 사용은 동일한 것으로 기술되지 않는 한 동일한 실시예 또는 구현예를 의미하도록 의도되지 않는다.
시스템들, 알고리즘들, 방법들, 명령어들 등, 본 명세서에 기술된 구현예들은 하드웨어, 소프트웨어, 또는 이들의 임의의 조합으로 실현될 수 있다. 하드웨어는, 예를 들어, 컴퓨터들, 지적재산(IP) 코어, 주문형 집적 회로들(ASIC), 프로그램가능 로직 어레이, 광학 프로세서, 프로그램가능 로직 제어기들, 마이크로코드, 마이크로컨트롤러, 서버, 마이크로프로세서, 디지털 신호 프로세서, 또는 임의의 기타 적합한 회로를 포함할 수 있다. 청구범위에서, 용어 "프로세서"는 전술한 하드웨어 중 임의의 것을, 단독 또는 조합하여 포함하는 것으로 이해되어야 한다. 용어 "신호" 및 "데이터"는 상호교환가능하게 사용된다.
본 명세서에 사용되는 바와 같이, 용어 모듈은 다른 컴포넌트들과 함께 사용되도록 설계된 패키지형 기능성 하드웨어 유닛, 제어기(예컨대, 소프트웨어 또는 펌웨어를 실행하는 프로세서)에 의해 실행가능한 명령어들의 세트, 특정 기능을 수행하도록 구성된 프로세싱 회로부, 및 더 큰 시스템과 접속하는 독립적 하드웨어 또는 소프트웨어 컴포넌트를 포함할 수 있다. 예를 들어, 모듈은 주문형 집적 회로(ASIC), 필드 프로그램가능 게이트 어레이(FPGA), 회로, 디지털 로직 회로, 아날로그 회로, 개별 회로들의 조합, 게이트, 및 기타 유형들의 하드웨어 또는 이들의 조합을 포함할 수 있다. 다른 실시예들에서, 모듈은 모듈의 특징을 구현하기 위하여 제어기에 의해 실행가능한 명령어들을 저장하는 메모리를 포함할 수 있다. 일부 실시예들에서, 제어기(104)는 호스트(106) 내에서 본 명세서에 기술된 다양한 기능들을 수행하기 위한 하드웨어 및/또는 펌웨어로 구성될 수 있다.
"제어기"는 개별적인 회로 컴포넌트들, 주문형 집적 회로(ASIC), 제어 소프트웨어를 구비한 마이크로컨트롤러, 디지털 신호 프로세서(DSP), 제어 소프트웨어를 구비한 프로세서, 필드 프로그램가능 게이트 어레이(FPGA), 또는 이들의 조합들을 의미할 것이다.
또한, 일 양태에서, 예를 들어, 본 명세서에 기술된 시스템들은, 실행 시, 본 명세서에 기술된 임의의 해당 방법들, 알고리즘들, 및/또는 명령어들을 수행하는 컴퓨터 프로그램을 구비한 범용 컴퓨터 또는 범용 프로세서를 이용하여 구현될 수 있다. 추가적으로, 또는 대안적으로, 예를 들어, 본 명세서에 기술된 임의의 방법들, 알고리즘들, 또는 명령어들을 수행하기 위한 다른 하드웨어를 포함할 수 있는 특수 목적 컴퓨터/프로세서가 활용될 수 있다.
또한, 본 개시내용의 구현예들의 전부 또는 일부는, 예를 들어, 컴퓨터-사용가능 또는 컴퓨터-판독가능 매체로부터 액세스가능한 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 컴퓨터-사용가능 또는 컴퓨터-판독가능 매체는, 예를 들어, 유형적으로 임의의 프로세서에 의한 사용 또는 그것과의 통신을 위하여 프로그램을 포함, 저장, 교환, 또는 전송할 수 있는 임의의 디바이스일 수 있다. 매체는, 예를 들어, 전자, 자기, 광학, 전자기, 또는 반도체 디바이스일 수 있다. 기타 적합한 매체들이 또한 이용가능하다.
상기 실시예들, 구현예들, 및 양태들은 본 발명의 용이한 이해를 위해 기술되었고 본 발명을 제한하지 않는다. 반대로, 본 발명은 첨부된 청구범위의 범주 내에 포함되는 다양한 수정 및 등가 구성을 커버하도록 의도되며, 그 범주는 특허법에서 허용되는 한 모든 이러한 수정들 및 등가의 구조를 포괄하는 가장 넓은 해석이 부여된다.

Claims (20)

  1. 메모리 시스템 내의 메모리 블록들을 프로그래밍하기 위한 방법으로서, 상기 방법은 프로세서에 의해 수행되고, 상기 방법은
    적어도 하나의 메모리 블록 특성을 이용하여, 상기 메모리 시스템 내의 상기 메모리 블록들의 후보 메모리 블록들을 식별하는 단계;
    사전-소거 검증 레벨을 이용하여, 상기 후보 메모리 블록들 상에 사전-소거 동작을 수행하는 단계;
    사전-소거 테이블 상에, 상기 후보 메모리 블록들의 각각의 메모리 블록에 대한 사전-소거 정보를 저장하는 단계;
    상기 사전-소거 테이블을 이용하여, 프로그래밍될 적어도 하나의 메모리 블록을 식별하는 단계; 및
    상기 사전-소거 검증 레벨을 이용하여 상기 적어도 하나의 메모리 블록 상에 사전프로그램 소거 동작을 수행하고, 상기 적어도 하나의 메모리 블록 상에 기록 동작을 수행함으로써 상기 적어도 하나의 메모리 블록을 프로그래밍하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 사전-소거 검증 레벨을 이용하여 상기 사전-소거 동작을 수행하는 단계는, 유휴 시간 동안 상기 사전-소거 동작을 수행하는 단계를 포함하는, 방법.
  3. 제1항에 있어서, 상기 후보 메모리 블록들의 각각의 메모리 블록에 대한 상기 사전-소거 정보는 적어도 상기 각각의 메모리 블록과 연관된 메모리 주소 및 상기 각각의 메모리 블록이 상기 사전-소거 검증 레벨을 이용하여 사전-소거되었음을 나타내는 표시를 포함하는, 방법.
  4. 제1항에 있어서, 상기 후보 메모리 블록들 상에 상기 사전-소거 동작을 수행하는 것과 연관된 소거 시간을 기록하는 단계를 추가로 포함하는, 방법.
  5. 제1항에 있어서, 상기 적어도 하나의 메모리 블록 상에 상기 사전프로그램 소거 동작을 수행하는 것과 연관된 소거 시간을 기록하는 단계를 추가로 포함하는, 방법.
  6. 제1항에 있어서, 상기 적어도 하나의 메모리 블록 특성은 상기 후보 메모리 블록들의 각각과 연관된 프로그램 소거 사이클들의 수를 포함하는, 방법.
  7. 제1항에 있어서, 상기 적어도 하나의 메모리 블록 특성은 상기 후보 메모리 블록들의 각각과 연관된 소거 시간들을 포함하는, 방법.
  8. 제1항에 있어서, 상기 적어도 하나의 메모리 블록 특성은 상기 후보 메모리 블록들의 각각과 연관된 비트 에러율을 포함하는, 방법.
  9. 제1항에 있어서, 상기 사전-소거 검증 레벨은 0 볼트보다 높은, 방법.
  10. 제1항에 있어서, 상기 사전프로그램 소거 동작과 연관된 소거 펄스들의 수는 상기 사전-소거 검증 레벨에 대응하는, 방법.
  11. 제어기로서,
    자유 블록 리스트 상의 메모리 블록들과 연관된 메모리 블록 특성들을 수신하도록 구성된 버스 인터페이스; 및
    프로세서를 포함하며, 상기 프로세서는,
    상기 메모리 블록 특성들의 적어도 하나의 메모리 블록 특성을 이용하여, 상기 자유 블록 리스트 상의 상기 메모리 블록들의 후보 메모리 블록들을 식별하고;
    사전-소거 검증 레벨을 이용하여, 상기 후보 메모리 블록들 상에 사전-소거 동작을 수행하고;
    상기 사전-소거 검증 레벨을 이용하여 상기 후보 메모리 블록들의 적어도 하나의 메모리 블록 상에 사전프로그램 소거 동작을 수행하고,
    상기 적어도 하나의 메모리 블록 상에 기록 동작을 수행하도록 구성된, 제어기.
  12. 제11항에 있어서, 상기 프로세서는 유휴 시간 동안 상기 사전-소거 동작을 수행하도록 추가로 구성된, 제어기.
  13. 제11항에 있어서, 상기 프로세서는 상기 후보 메모리 블록들 상에 상기 사전-소거 동작을 수행하는 것과 연관된 소거 시간을 기록하도록 추가로 구성된, 제어기.
  14. 제11항에 있어서, 상기 프로세서는 상기 적어도 하나의 메모리 블록 상에 상기 사전프로그램 소거 동작을 수행하는 것과 연관된 소거 시간을 기록하도록 추가로 구성된, 제어기.
  15. 제11항에 있어서, 상기 적어도 하나의 메모리 블록 특성은 상기 후보 메모리 블록들의 각각과 연관된 프로그램 소거 사이클들의 수를 포함하는, 제어기.
  16. 제11항에 있어서, 상기 적어도 하나의 메모리 블록 특성은 상기 후보 메모리 블록들의 각각과 연관된 소거 시간들을 포함하는, 제어기.
  17. 제11항에 있어서, 상기 적어도 하나의 메모리 블록 특성은 상기 후보 메모리 블록들의 각각과 연관된 비트 에러율을 포함하는, 제어기.
  18. 제11항에 있어서, 상기 사전-소거 검증 레벨은 0 볼트보다 높은, 제어기.
  19. 제11항에 있어서, 상기 사전프로그램 소거 동작과 연관된 소거 펄스들의 수는 상기 사전-소거 검증 레벨에 대응하는, 제어기.
  20. 메모리 블록들의 기록 동작들의 수행을 향상시키기 위한 방법으로서, 상기 방법은 프로세서에 의해 수행되고, 상기 방법은
    자유 블록 리스트 상의 상기 메모리 블록들의 각각과 연관된 프로그램 소거 사이클 값, 상기 자유 블록 리스트 상의 상기 메모리 블록들의 각각과 연관된 소거 시간 값, 및 상기 자유 블록 리스트 상의 상기 메모리 블록들의 각각과 연관된 비트 에러율 값 중 적어도 하나를 이용하여 자유 블록 리스트 상의 메모리 블록들로부터 후보 메모리 블록들을 식별하는 단계;
    0 볼트보다 높은 사전-소거 검증 레벨을 이용하여 상기 후보 메모리 블록들의 각각에 사전-소거 동작을 수행하는 단계;
    상기 사전-소거 동작과 연관된 소거 시간을 기록하는 단계; 및
    각각의 후보 메모리 블록에 대하여, 대응하는 소거 시간 및 상기 사전-소거 검증 레벨을 저장하는 단계를 포함하는, 방법.
KR1020200035396A 2019-05-15 2020-03-24 백그라운드 소거를 이용한 솔리드-스테이트 드라이브 기록 성능 향상 KR102303051B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/412,859 US10658045B1 (en) 2019-05-15 2019-05-15 Enhanced solid-state drive write performance with background erase
US16/412,859 2019-05-15

Publications (2)

Publication Number Publication Date
KR20200132674A KR20200132674A (ko) 2020-11-25
KR102303051B1 true KR102303051B1 (ko) 2021-09-16

Family

ID=70736374

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200035396A KR102303051B1 (ko) 2019-05-15 2020-03-24 백그라운드 소거를 이용한 솔리드-스테이트 드라이브 기록 성능 향상

Country Status (3)

Country Link
US (1) US10658045B1 (ko)
KR (1) KR102303051B1 (ko)
CN (1) CN111949209A (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180239532A1 (en) 2017-02-23 2018-08-23 Western Digital Technologies, Inc. Techniques for performing a non-blocking control sync operation
US11698745B2 (en) 2021-04-05 2023-07-11 Western Digital Technologies, Inc. Pre-erasure of memory in storage devices
US11816349B2 (en) * 2021-11-03 2023-11-14 Western Digital Technologies, Inc. Reduce command latency using block pre-erase
US11756637B2 (en) 2021-11-24 2023-09-12 Western Digital Technologies, Inc. Block erase type detection using bit count check

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110004738A1 (en) 2008-12-26 2011-01-06 Fujitsu Limited Data storage device and data management method

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537578A (en) * 1993-04-20 1996-07-16 International Business Machines Corporation Transparent driving partition for processing logical volumes to be recorded onto optical media
JP4188744B2 (ja) * 2003-04-08 2008-11-26 株式会社ルネサステクノロジ メモリカード
JP2005182871A (ja) * 2003-12-17 2005-07-07 Toshiba Corp 不揮発性半導体記憶装置
DE602004003583T2 (de) * 2004-10-04 2007-11-22 Research In Motion Ltd., Waterloo System und Verfahren zum Datensichern bei Stromausfall
KR101264019B1 (ko) * 2011-04-26 2013-05-13 에스케이하이닉스 주식회사 반도체 장치의 동작 방법
US9330007B2 (en) * 2012-11-30 2016-05-03 Dell Products, Lp Systems and methods for dynamic optimization of flash cache in storage devices
JP5695112B2 (ja) * 2013-03-18 2015-04-01 富士通テン株式会社 データ記憶装置、データの記憶方法および車載用制御装置
KR102083547B1 (ko) * 2013-04-12 2020-03-02 삼성전자주식회사 플래시 메모리와 메모리 컨트롤러를 포함하는 데이터 저장 장치 및 그것의 배드 페이지 관리 방법
US9588702B2 (en) * 2014-12-30 2017-03-07 International Business Machines Corporation Adapting erase cycle parameters to promote endurance of a memory
KR20170045406A (ko) * 2015-10-16 2017-04-27 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20180039351A (ko) * 2016-10-10 2018-04-18 에스케이하이닉스 주식회사 메모리 장치 및 메모리 장치의 동작 방법
KR102611851B1 (ko) * 2016-12-29 2023-12-11 에스케이하이닉스 주식회사 반도체 메모리 장치 및 이의 동작 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110004738A1 (en) 2008-12-26 2011-01-06 Fujitsu Limited Data storage device and data management method

Also Published As

Publication number Publication date
US10658045B1 (en) 2020-05-19
KR20200132674A (ko) 2020-11-25
CN111949209A (zh) 2020-11-17

Similar Documents

Publication Publication Date Title
KR102303051B1 (ko) 백그라운드 소거를 이용한 솔리드-스테이트 드라이브 기록 성능 향상
US9747170B2 (en) Non-volatile multi-level cell memory system and method of performing adaptive data back-up in the system
US10956083B2 (en) Method and system for input-output throttling to improve quality of service in a solid state drive
US11321468B2 (en) Systems for providing access to protected memory
US11003373B2 (en) Systems and methods for managing physical-to- logical address information
US20200226065A1 (en) Preparing a key block in a memory system
US10884628B2 (en) Performance of a read in a memory system
US20210407600A1 (en) Memory device error detection with improved scanning
KR102661778B1 (ko) 메모리 서브-블록을 정의하기 위한 시스템 및 방법
CN111798910A (zh) 存储装置及其操作方法
US10725687B1 (en) Settable replay protected memory block characteristics in a logic unit
TWI648739B (zh) 記憶體管理方法與儲存控制器
US11126368B2 (en) Systems and methods for finding a last good page in NAND open block
US10734081B1 (en) Pulse-amplitude modulation for a multiple die memory device
US11082036B2 (en) Memory interface system for duty-cycle error detection and correction
US20200226064A1 (en) Method of reverse mapping and data consolidation to enhance random performance
KR102404566B1 (ko) 메모리 시스템 상의 프로그램 검증을 위한 시스템 및 방법
US10886002B1 (en) NAND field use erase plus defect detections
CN116403629A (zh) 存储装置
US11106575B2 (en) Systems and methods for data storage in a memory system
US10991447B2 (en) Clock frequency counting during high-voltage operations for immediate leakage detection and response
US10984883B1 (en) Systems and methods for capacity management of a memory system
US10937510B2 (en) Multidimensional pseudorandom binary sequence analysis for a memory device
CN112148212B (zh) 用于存储器装置的多维伪随机二进制序列分析
CN112445717A (zh) 用于取消映射技术的元数据分组

Legal Events

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