KR20230032647A - 스토리지 장치, 스토리지 컨트롤러 및 스토리지 컨트롤러의 동작 방법 - Google Patents

스토리지 장치, 스토리지 컨트롤러 및 스토리지 컨트롤러의 동작 방법 Download PDF

Info

Publication number
KR20230032647A
KR20230032647A KR1020210115702A KR20210115702A KR20230032647A KR 20230032647 A KR20230032647 A KR 20230032647A KR 1020210115702 A KR1020210115702 A KR 1020210115702A KR 20210115702 A KR20210115702 A KR 20210115702A KR 20230032647 A KR20230032647 A KR 20230032647A
Authority
KR
South Korea
Prior art keywords
read
history
memory
memory block
reliability
Prior art date
Application number
KR1020210115702A
Other languages
English (en)
Other versions
KR102519664B1 (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 KR1020210115702A priority Critical patent/KR102519664B1/ko
Priority to US17/742,030 priority patent/US11914892B2/en
Priority to CN202210546470.2A priority patent/CN115731991A/zh
Priority to EP22181270.4A priority patent/EP4141874A1/en
Publication of KR20230032647A publication Critical patent/KR20230032647A/ko
Application granted granted Critical
Publication of KR102519664B1 publication Critical patent/KR102519664B1/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/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/0656Data buffering arrangements
    • 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
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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/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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/021Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test

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)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Software Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)

Abstract

스토리지 장치, 스토리지 컨트롤러 및 스토리지 컨트롤러의 동작 방법이 개시된다. 본 개시의 기술적 사상에 따른 스토리지 장치는 복수의 메모리 블록들을 포함하는 비휘발성 메모리와 스토리지 컨트롤러를 포함하고, 스토리지 컨트롤러는 복수의 메모리 블록들에 대응하는 복수의 히스토리 리드 레벨 저장 영역들을 포함하는 히스토리 버퍼를 포함하며, 스토리지 장치의 런타임에 복수의 메모리 블록들의 신뢰성들을 기초로 복수의 메모리 블록들 중 적어도 하나에 할당되는 히스토리 리드 레벨 저장 영역의 개수를 동적으로 조정한다. 스토리지 컨트롤러는 복수의 메모리 블록들 중 신뢰성이 상대적으로 낮은 제1 메모리 블록에 할당되는 히스토리 리드 레벨 저장 영역의 개수를 증가시킨다.

Description

스토리지 장치, 스토리지 컨트롤러 및 스토리지 컨트롤러의 동작 방법{Storage device, storage controller and operating method of storage controller}
본 개시의 기술적 사상은 메모리 장치에 관한 것이며, 더욱 상세하게는, 스토리지 컨트롤러, 상기 스토리지 컨트롤러를 포함하는 스토리지 장치, 및 상기 스토리지 컨트롤러의 동작 방법에 관한 것이다.
비휘발성 메모리로서 플래시 메모리는 전원이 차단되어도 저장하고 있는 데이터를 유지할 수 있다. 최근 eMMC(embedded Multi-Media Card), UFS(Universal Flash Storage), SSD(Solid State Drive), 및 메모리 카드 등의 플래시 메모리를 포함하는 스토리지 장치가 널리 사용되고 있으며, 스토리지 장치는 많은 양의 데이터를 저장하거나 이동시키는데 유용하게 사용되고 있다. 스토리지 장치의 성능 및 신뢰성을 향상시킬 수 있는 방법 및 장치에 대한 요구가 지속적으로 제기되고 있다.
본 개시의 기술적 사상은 히스토리 리드 레벨 또는 히스토리 리드 레벨 오프셋을 저장하는 히스토리 버퍼를 동적으로 조정함으로써 리드 신뢰성 및 성능을 향상시킬 수 있는 스토리지 장치, 스토리지 컨트롤러 및 스토리지 컨트롤러의 동작 방법을 제공한다.
본 개시의 기술적 사상에 따른 스토리지 장치는, 복수의 메모리 블록들을 포함하는 비휘발성 메모리; 및 상기 복수의 메모리 블록들에 대응하는 복수의 히스토리 리드 레벨 저장 영역들을 포함하는 히스토리 버퍼를 포함하고, 상기 스토리지 장치의 런타임에 상기 복수의 메모리 블록들의 신뢰성들을 기초로 상기 복수의 메모리 블록들 중 적어도 하나에 할당되는 히스토리 리드 레벨 저장 영역의 개수를 동적으로 조정하도록 구성된 스토리지 컨트롤러를 포함하고, 상기 스토리지 컨트롤러는, 상기 복수의 메모리 블록들 중 신뢰성이 상대적으로 낮은 제1 메모리 블록에 할당되는 히스토리 리드 레벨 저장 영역의 개수를 증가시킨다.
본 개시의 기술적 사상에 따른 스토리지 컨트롤러의 동작 방법은, 히스토리 버퍼를 포함하는 스토리지 컨트롤러의 동작 방법으로서, 상기 히스토리 버퍼에 포함되는 복수의 히스토리 리드 레벨 저장 영역들을, 비휘발성 메모리에 포함되는 복수의 메모리 블록들에 각각 할당하는 단계; 및 상기 복수의 메모리 블록들의 신뢰성들을 기초로 상기 복수의 메모리 블록들 중 적어도 하나에 할당되는 히스토리 리드 레벨 저장 영역의 개수를 동적으로 조정하는 히스토리 버퍼 제어 동작을 수행하는 단계를 포함하고, 상기 히스토리 버퍼 제어 동작을 수행하는 단계는, 상기 복수의 메모리 블록들 중 제1 메모리 블록의 신뢰성이 제1 임계 값보다 크면, 상기 제1 메모리 블록에 할당되었던 히스토리 리드 레벨 저장 영역을 회수하는 단계; 및 상기 제1 메모리 블록의 상기 신뢰성이 상기 제1 임계 값보다 작은 제2 임계 이하이면, 상기 제1 메모리 블록에 히스토리 리드 레벨 저장 영역을 추가로 할당하는 단계를 포함한다.
본 개시의 기술적 사상에 따른 스토리지 컨트롤러는, 비휘발성 메모리를 제어하도록 구성된 스토리지 컨트롤러로서, 호스트와 통신하도록 구성된 호스트 인터페이스; 상기 비휘발성 메모리와 통신하도록 구성된 비휘발성 메모리 인터페이스; 상기 비휘발성 메모리에 포함되는 복수의 메모리 블록들에 대응하는 복수의 히스토리 리드 레벨 저장 영역들을 포함하는 히스토리 버퍼; 상기 복수의 메모리 블록들의 신뢰성들을 검출하도록 구성된 블록 신뢰성 검출기; 및 검출된 상기 신뢰성들을 기초로 상기 복수의 메모리 블록들 중 적어도 하나에 할당되는 히스토리 리드 레벨 저장 영역의 개수를 동적으로 조정하도록 구성된 히스토리 버퍼 컨트롤러를 포함한다.
본 개시의 기술적 사상에 따르면, 스토리지 장치는 비휘발성 메모리의 메모리 블록들의 신뢰성들을 기초로 각 메모리 블록에 할당되는 히스토리 리드 레벨 저장 영역의 개수를 동적으로 조정함으로써, 히스토리 리드 동작의 히팅율(hitting rate)를 향상시킬 수 있고, 이로써, 스토리지 장치의 리드 신뢰성 및 성능이 개선될 수 있다. 또한, 본 개시의 기술적 사상에 따르면, 비휘발성 메모리의 메모리 블록이 스택 구조를 갖는 경우, 메모리 블록 내의 스택 별로 서로 다른 히스토리 리드 레벨 저장 영역을 할당할 수 있고, 이로써, 메모리 블록의 워드라인 베리에이션을 감소시킬 수 있다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 2a는 도 1의 비휘발성 메모리에 포함된 메모리 셀들의 열화에 따른 산포 변화의 일 예를 나타내고, 도 2b는 본 개시의 일 실시예에 따라, 도 2a의 산포 변화에 대응하는 히스토리 버퍼의 일 예를 나타내며, 도 2c는 본 개시의 일 실시예에 따라, 도 2a의 산포 변화에 대응하는 히스토리 버퍼의 다른 예를 나타낸다.
도 3a는 도 1의 비휘발성 메모리에 포함된 메모리 셀들의 열화에 따른 산포 변화의 일 예를 나타내고, 도 3b는 본 개시의 일 실시예에 따라, 도 3a의 산포 변화에 대응하는 히스토리 버퍼의 일 예를 나타내며, 도 3c는 본 개시의 일 실시예에 따라, 도 2a의 산포 변화에 대응하는 히스토리 버퍼의 다른 예를 나타낸다.
도 4는 본 개시의 일 실시예에 따른 히스토리 버퍼의 동적 제어 동작에 따른 히스토리 버퍼의 변화를 나타낸다.
도 5a는 본 개시의 일 실시예에 따라, 도 4의 초기 히스토리 버퍼의 저장 영역들과 메모리 블록들 사이의 관계를 나타내고, 도 5b는 본 개시의 일 실시예에 따라, 도 4의 변경 히스토리 버퍼의 저장 영역들과 메모리 블록들 사이의 관계를 나타낸다.
도 6 및 도 7은 본 개시의 일부 실시예들에 따른 스토리지 컨트롤러를 각각 나타낸다.
도 8은 본 개시의 일 실시예에 따른 비휘발성 메모리를 나타내는 블록도이다.
도 9는 본 개시의 일 실시예에 따른 메모리 블록을 나타내는 회로도이다.
도 10a는 본 개시의 일 실시예에 따른 2-스택 구조를 갖는 메모리 블록을 나타내고, 도 10b는 본 개시의 일 실시예에 따른 3-스택 구조를 갖는 메모리 블록을 나타낸다.
도 11은 본 개시의 일 실시예에 따른 메모리 블록의 단면의 일부를 나타낸다.
도 12a 및 도 12b는 본 개시의 일부 실시예들에 따른 히스토리 버퍼의 동적 제어 동작에 따른 히스토리 버퍼의 변화를 각각 나타낸다.
도 13은 본 개시의 일 실시예에 따른 스토리지 컨트롤러의 동작 방법을 나타내는 흐름도이다.
도 14는 본 개시의 일 실시예에 따라, 도 13의 스토리지 컨트롤러의 동작 방법을 더욱 상세하게 나타내는 흐름도이다.
도 15는 본 개시의 일 실시예에 따라, 히스토리 버퍼를 동적으로 제어하는 방법을 나타내는 흐름도이다.
도 16은 본 개시의 일 실시예에 따라, 도 15의 히스토리 버퍼를 동적으로 제어하는 방법을 더욱 상세하게 나타내는 흐름도이다.
도 17은 본 개시의 일 실시예에 따라, 도 15의 방법에 따른 스토리지 컨트롤러와 비휘발성 메모리 사이의 동작을 나타내는 흐름도이다.
도 18은 본 개시의 일 실시예에 따른 백그라운드 리드 동작의 일 예를 나타낸다.
도 19는 본 개시의 일 실시예에 따른 백그라운드 리드 동작의 다른 예를 나타낸다.
도 20은 본 개시의 일 실시예에 따라, 히스토리 버퍼를 동적으로 제어하는 방법을 나타내는 흐름도이다.
도 21은 본 개시의 일 실시예에 따라, 도 20의 히스토리 버퍼를 동적으로 제어하는 방법을 더욱 상세하게 나타내는 흐름도이다.
도 22는 본 개시의 일 실시예에 따라, 도 20의 방법에 따른 호스트, 스토리지 컨트롤러 및 비휘발성 메모리 사이의 동작을 나타내는 흐름도이다.
도 23은 본 개시의 일 실시예에 따라, 히스토리 버퍼를 동적으로 제어하는 방법을 나타내는 흐름도이다.
도 24는 본 개시의 일 실시예에 따른 스토리지 장치를 나타내는 블록도이다.
도 25는 본 발명의 일 실시예에 따른 스토리지 장치가 적용된 시스템을 예시하는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템(10)을 나타내는 블록도이다.
도 1을 참조하면, 스토리지 시스템(10)은 스토리지 장치(100) 및 호스트(200)를 포함할 수 있고, 이에 따라, 호스트-스토리지 시스템이라고 지칭할 수도 있다. 스토리지 장치(100)는 스토리지 컨트롤러(110) 및 비휘발성 메모리(Non-Volatile Memory, NVM)(120)를 포함할 수 있고, 스토리지 컨트롤러(110)와 비휘발성 메모리(120)는 채널(CH)을 통해 연결될 수 있다. 실시예에 따라, 스토리지 컨트롤러(110)는 컨트롤러, 디바이스 컨트롤러, 또는 메모리 컨트롤러로 지칭될 수도 있다. 실시예에 따라, 비휘발성 메모리(120)는 복수의 메모리 칩들 또는 복수의 메모리 다이(die)들로 구현될 수 있다. 예를 들어, 복수의 메모리 칩들 각각은 DDP(Dual Die Package), QDP(Quadruple Die Package), 또는 ODP(Octuple Die Package)일 수 있다.
호스트(200)는 호스트 컨트롤러(210) 및 호스트 메모리(220)를 포함할 수 있다. 호스트 메모리(220)는 스토리지 장치(100)로 전송될 데이터(DATA) 또는 스토리지 장치(100)로부터 전송된 데이터(DATA)를 임시로 저장하기 위한 버퍼 메모리로서 기능할 수 있다. 일 예로서, 호스트 컨트롤러(210)는 AP(Application Processor)에 구비되는 다수의 모듈들 중 하나일 수 있으며, AP는 SoC(System on Chip)으로 구현될 수 있다. 호스트 메모리(220)는 AP 내에 구비되는 임베디드 메모리이거나, 또는 AP 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다.
스토리지 컨트롤러(110)는 호스트(200)로부터의 요청(REQ), 예를 들어, 기입 요청에 응답하여 비휘발성 메모리(120)에 데이터(DATA)를 기입하도록 비휘발성 메모리(120)를 제어할 수 있다. 또한, 스토리지 컨트롤러(110)는 호스트(200)로부터의 요청(REQ), 예를 들어, 리드 요청에 응답하여 비휘발성 메모리(120)에 저장된 데이터(DATA)를 리드하도록 비휘발성 메모리(120)를 제어할 수 있다. 이에 따라, 스토리지 장치(100)는 호스트(200)로부터의 요청(REQ)에 따라 데이터(DATA)를 저장하기 위한 저장 매체들을 포함할 수 있다.
일 예로서, 스토리지 장치(100)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 예를 들어, 스토리지 장치(100)가 SSD인 경우, 스토리지 장치(100)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 예를 들어, 스토리지 장치(100)가 임베디드 메모리 혹은 외장 메모리인 경우, 스토리지 장치(100)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트(200)와 스토리지 장치(100)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
비휘발성 메모리(120)는 메모리 블록(BLK)을 포함하는 복수의 메모리 블록들(BLKs)을 포함할 수 있고, 복수의 메모리 블록들(BLKs)은 각각 복수의 메모리 셀들을 포함할 수 있다. 예를 들어, 메모리 블록(BLK)은 도 8의 복수의 메모리 블록들(BLK1 내지 BLKz) 중 하나에 대응할 수 있다. 예를 들어, 복수의 메모리 블록들(BLKs) 중 적어도 하나는 SLC(Single Level Cell)들을 포함하는 SLC 블록일 수 있다. 예를 들어, 복수의 메모리 블록들(BLKs) 중 적어도 하나는 MLC(Multi Level Cell)들을 포함하는 MLC 블록일 수 있다. 예를 들어, 복수의 메모리 블록들(BLKs) 중 적어도 하나는 TLC(Triple Level Cell)들을 포함하는 TLC 블록일 수 있다. 예를 들어, 복수의 메모리 블록들(BLKs) 중 적어도 하나는 QLC(Quadruple Level Cell)들을 포함하는 QLC 블록일 수 있다.
스토리지 컨트롤러(110)는 히스토리 버퍼(History Buffer)(HB)를 포함할 수 있다. 스토리지 컨트롤러(110)는 메모리 블록(BLK) 단위로 히스토리 버퍼(HB)를 관리할 수 있다. 스토리지 컨트롤러(110)는 런타임 중에 메모리 블록(BLK) 별로 히스토리 버퍼(HB)에 리드 레벨을 저장하고, 호스트(200)로부터 리드 요청이 수신되면 히스토리 버퍼(HB)에 저장된 리드 레벨을 기초로 리드 요청된 메모리 블록(BLK)으로부터 데이터를 리드할 수 있다. 본 명세서에서는, 히스토리 버퍼(HB)에 저장되는 리드 레벨을 "히스토리 리드 레벨"로 지칭하고, 히스토리 리드 레벨에 기초한 리드 동작을 "히스토리 리드 동작"으로 지칭하기로 한다.
예를 들어, 스토리지 컨트롤러(110)는 제1 리드 레벨을 기초로 메모리 블록(BLK)에 대해 리드 동작을 수행하고, 리드 동작이 성공하면 제1 리드 레벨을 메모리 블록(BLK)에 대한 히스토리 리드 레벨로서 히스토리 버퍼(HB)에 저장할 수 있다. 이후, 메모리 블록에 대해 호스트(200)로부터 리드 요청이 수신되면, 스토리지 컨트롤러(110)는 히스토리 버퍼(HB)에 저장된 메모리 블록(BLK)에 대한 히스토리 리드 레벨을 기초로 히스토리 리드 동작을 수행할 수 있다.
리드 동작이 실패하면, 스토리지 컨트롤러(110)는 리드 리트라이(read retry) 동작을 수행할 수 있다. 본 명세서에서는, 이전 리드 동작이 실패한 경우, 리드 레벨을 수정하고, 이후에 수정된 리드 레벨을 이용하여 수행되는 리드 동작을 "리드 리트라이 동작"이라고 지칭하기로 한다. 스토리지 컨트롤러(110)는 히스토리 리드 동작이 실패하면, 펌웨어에 의한 방어 코드를 실행하여, 수정된 리드 레벨을 도출하고, 수정된 리드 레벨을 기초로 리드 리트라이 동작을 수행할 수 있다. 리드 리트라이 동작이 성공하면, 스토리지 컨트롤러(110)는 수정된 리드 레벨을 히스토리 버퍼(HB)에 히스토리 리드 레벨로서 저장함으로써, 히스토리 리드 레벨을 업데이트할 수 있다.
리드 동작 수행 시, 메모리 블록(BLK)의 열화도가 반영되지 않은 디폴트 리드 레벨을 기초로 리드 동작이 수행될 경우, 리드 동작이 실패할 확률이 높다. 그러나, 본 개시의 실시예에 따른 스토리지 장치(100)는 메모리 블록(BLK) 단위로 히스토리 리드 레벨을 관리하고, 리드 요청된 메모리 블록(BLK)에 대하여 리드 동작 수행 시, 대응하는 메모리 블록(BLK)의 히스토리 리드 레벨을 기초로 히스토리 리드를 수행함으로써, 리드 성공 확률이 높아질 수 있다. 전술한 바와 같이, 리드 동작이 실패할 경우, 방어 코드를 실행할 수 있는데, 이때 방어 코드의 실행에 상당한 시간이 소요될 수 있다. 본 개시의 실시예에 따른 스토리지 장치(100)는 방어코드 실행 횟수를 최소화할 수 있으며, 따라서 스토리지 장치(100)의 성능이 향상될 수 있다.
본 실시예에서, 히스토리 버퍼(HB)는 복수의 히스토리 리드 레벨 저장 영역들 또는 복수의 저장 영역들(Storage Area)(S-AR)을 포함할 수 있다. 이하에서, "저장 영역"은 "히스토리 리드 레벨 저장 영역"을 지칭하기로 한다. 일 실시예에서, 히스토리 버퍼(HB)의 용량은 고정적이며, 이에 따라, 히스토리 버퍼(HB)에 포함되는 복수의 저장 영역들(S-AR)의 개수도 고정적일 수 있다. 예를 들어, 복수의 저장 영역들(S-AR)은 비휘발성 메모리(120)에 포함되는 복수의 메모리 블록들에 각각 대응할 수 있다.
일 실시예에서, 스토리지 컨트롤러(110)는 복수의 저장 영역들(S-AR)을 복수의 메모리 블록들(BLKs)에 각각 할당할 수 있고, 스토리지 장치(100)의 런타임 중에 복수의 메모리 블록들(BLKs) 중 적어도 하나에 할당되는 저장 영역(S-AR)의 개수를 동적으로 조정할 수 있다. 구체적으로, 스토리지 컨트롤러(110)는 블록 신뢰성 검출기(Block Reliability Detector)(BRD), 및 히스토리 버퍼 컨트롤러(History Buffer Controller)(HBC)를 더 포함할 수 있다. 블록 신뢰성 검출기(BRD)는 스토리지 장치(100)의 런타임에 복수의 메모리 블록들(BLKs)의 신뢰성들을 검출할 수 있고, 검출된 신뢰성들을 히스토리 버퍼 컨트롤러(HBC)에 제공할 수 있다. 히스토리 버퍼 컨트롤러(HBC)는 검출된 신뢰성들을 기초로 복수의 메모리 블록들(BLKs) 중 적어도 하나에 할당되는 저장 영역(S-AR)의 개수를 동적으로 조정함으로써 히스토리 버퍼(HB)를 동적으로 제어할 수 있다. 블록 신뢰성 검출기(BRD) 및 히스토리 버퍼 컨트롤러(HBC)의 구체적인 구현 예들에 대해서는 도 6 및 도 7을 참조하여 후술하기로 한다.
도 2a는 도 1의 비휘발성 메모리에 포함된 메모리 셀들의 열화에 따른 산포 변화의 일 예를 나타낸다.
도 2a를 참조하면, 초기 산포(21) 및 변경 산포(22)에서, 가로축은 문턱 전압(Vth)을 나타내고, 세로축은 메모리 셀들의 개수를 나타낸다. 예를 들어, 메모리 셀이 2 비트로 프로그램되는 MLC인 경우, 메모리 셀은 소거 상태(E) 및 제1 내지 제3 프로그램 상태들(P1 내지 P3) 중 하나의 상태를 가질 수 있다. 초기 산포(21)는 메모리 셀들에 대한 프로그램 완료 후 소정 시간 이내의 산포일 수 있다. 스토리지 장치(100)는 제1 내지 제3 프로그램 상태들(P1 내지 P3)을 판별하기 위해 제1 내지 제3 디폴트 리드 레벨들(DRL1 내지 DRL3)을 각각 이용할 수 있다.
변경 산포(22)는 메모리 셀들에 대한 프로그램 완료 후 소정 시간 이후의 산포일 수 있다. 리텐션(retention) 시간이 증가하면 메모리 셀들의 전하 트랩 양이 감소되면서, 산포가 변화 및 이동할 수 있다. 이에 따라, 메모리 셀들의 문턱 전압은 초기 산포(21)에 비해 변경될 수 있다. 구체적으로, 리텐션 시간이 증가하면 메모리 셀의 전하 저장층에 저장된 전하가 기판으로 누설될 수 있고, 이에 따라, 메모리 셀들의 문턱 전압이 감소할 수 있다. 산포 변화 및 이동은 프로그램 완료 후 경과 시간(즉, 리텐션 시간)뿐 만 아니라 프로그램 및/또는 소거의 반복(예컨대, P/E 싸이클)에 영향을 받을 수 있다. 예를 들어, 제1 워드라인 및 제2 워드라인의 프로그램 완료 후 경과 시간이 동일하더라도, 제1 워드라인의 P/E 싸이클 및 제2 워드라인의 P/E 싸이클이 상이할 경우, 제1 워드라인의 산포 변화 및 이동과 제2 워드라인의 산포 변화 및 이동이 상이할 수 있다.
이때, 제1 내지 제3 디폴트 리드 레벨들(DRL1 내지 DRL3)을 각각 이용하여 메모리 셀들에 대한 리드를 수행할 경우, 제1 내지 제3 프로그램 상태들(P1 내지 P3)로 프로그램된 메모리 셀들 중 일부에 대해 리드 오류가 발생할 수 있다. 여기서, 리드 오류는 리드된 데이터 중 페일 비트의 개수가 ECC(Error Correction Code)로 정정 가능한 기준 개수 이상인 경우에 해당할 수 있고, 이에 따라, 리드 오류를 UECC(Uncorrectable ECC)라고 지칭할 수 있다. 리드 오류를 제거하기 위해서는, 리드 리트라이 동작을 수행함으로써 리드 레벨을 수정하는 것이 요구된다.
디폴트 리드 레벨을 이용하는 노멀 리드 동작 시에 리드 오류가 발생할 경우, 스토리지 장치(100)는 리드 레벨들을 수정하고, 수정된 리드 레벨들을 기초로 리드 리트라이를 수행하여 리드 동작이 성공 가능한 적절한 리드 레벨들, 예컨대 수정된 리드 레벨들(CRL1 내지 CRL3)을 획득할 수 있다. 이를 위해, 스토리지 컨트롤러(110)는 펌웨어에 의한 방어 코드(recovery code)를 실행할 수 있는데, 이때, 방어 코드의 실행에 상당한 시간이 소요될 수 있으므로, 스토리지 장치(100)의 성능 저하가 발생하게 된다.
도 2b는 본 개시의 일 실시예에 따라, 도 2a의 산포 변화에 대응하는 히스토리 버퍼의 일 예(23)를 나타낸다.
도 2b를 참조하면, 히스토리 버퍼(23)는 복수의 저장 영역들(S_AR1 내지 S_ARz)을 포함할 수 있고, 복수의 저장 영역들(S_AR1 내지 S_ARz)은 복수의 메모리 블록들(BLK1 내지 BLKz)에 각각 할당될 수 있다(z는 양의 정수). 예를 들어, 제1 저장 영역(S_AR1)은 제1 메모리 블록(BLK1)에 할당될 수 있고, 제1 메모리 블록(BLK1)에 대한 수정된 리드 레벨들(CRL1a 내지 CRL3a)을 히스토리 리드 레벨들로서 저장할 수 있다. 또한, 예를 들어, 제2 저장 영역(S_AR2)은 제2 메모리 블록(BLK2)에 할당될 수 있고, 제2 메모리 블록(BLK2)에 대한 수정된 리드 레벨들(CRL1b 내지 CRL3b)을 히스토리 리드 레벨들로서 저장할 수 있다.
도 2c는 본 개시의 일 실시예에 따라, 도 2a의 산포 변화에 대응하는 히스토리 버퍼의 다른 예(24)를 나타낸다.
도 2c를 참조하면, 히스토리 버퍼(24)는 복수의 저장 영역들(S_AR1 내지 S_ARz)을 포함할 수 있고, 복수의 저장 영역들(S_AR1 내지 S_ARz)은 복수의 메모리 블록들(BLK1 내지 BLKz)에 각각 할당될 수 있다. 예를 들어, 제1 저장 영역(S_AR1)은 제1 메모리 블록(BLK1)에 할당될 수 있고, 제1 메모리 블록(BLK1)에 대한 리드 레벨 오프셋들(OS1a 내지 OS3a)을 히스토리 리드 레벨들로서 저장할 수 있다. 또한, 예를 들어, 제2 저장 영역(S_AR2)은 제2 메모리 블록(BLK2)에 할당될 수 있고, 제2 메모리 블록(BLK2)에 대한 리드 레벨 오프셋들(OS1b 내지 OS3b)을 히스토리 리드 레벨 오프셋들로서 저장할 수 있다.
도 3a는 도 1의 비휘발성 메모리에 포함된 메모리 셀들의 열화에 따른 산포 변화의 일 예를 나타낸다.
도 3a를 참조하면, 초기 산포(31) 및 변경 산포(32)에서, 가로축은 문턱 전압(Vth)을 나타내고, 세로축은 메모리 셀들의 개수를 나타낸다. 예를 들어, 메모리 셀이 3 비트로 프로그램되는 TLC인 경우, 메모리 셀은 소거 상태(E) 및 제1 내지 제7 프로그램 상태들(P1 내지 P7) 중 하나의 상태를 가질 수 있다. 도 2a를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있고, 중복된 설명은 생략하기로 한다.
초기 산포(31)는 메모리 셀들에 대한 프로그램 완료 후 소정 시간 이내의 산포일 수 있다. 스토리지 장치(100)는 제1 내지 제7 프로그램 상태들(P1 내지 P7)을 판별하기 위해 제1 내지 제7 디폴트 리드 레벨들(DRL1 내지 DRL7)을 각각 이용할 수 있다. 변경 산포(32)는 메모리 셀들에 대한 프로그램 완료 후 소정 시간 이후의 산포일 수 있다. 리텐션 시간이 증가하면 메모리 셀들의 전하 트랩 양이 감소되면서, 산포가 변화 및 이동할 수 있다. 이에 따라, 메모리 셀들의 문턱 전압은 초기 산포(31)에 비해 변경될 수 있다. 이때, 제1 내지 제7 디폴트 리드 레벨들(DRL1 내지 DRL7)을 각각 이용하여 메모리 셀들에 대한 리드를 수행할 경우, 제1 내지 제7 프로그램 상태들(P1 내지 P7)로 프로그램된 메모리 셀들 중 일부에 대해 리드 오류가 발생할 수 있다. 디폴트 리드 레벨을 이용하는 노멀 리드 동작 시에 리드 오류가 발생할 경우, 스토리지 장치(100)는 리드 레벨들을 수정하고, 수정된 리드 레벨들을 기초로 리드 리트라이를 수행하여 리드 동작이 성공 가능한 적절한 리드 레벨들, 예컨대 수정된 리드 레벨들(CRL1 내지 CRL7)을 획득할 수 있다.
도 3b는 본 개시의 일 실시예에 따라, 도 3a의 산포 변화에 대응하는 히스토리 버퍼의 일 예(33)를 나타낸다.
도 3b를 참조하면, 히스토리 버퍼(33)는 복수의 저장 영역들(S_AR1 내지 S_ARz)을 포함할 수 있고, 복수의 저장 영역들(S_AR1 내지 S_ARz)은 복수의 메모리 블록들(BLK1 내지 BLKz)에 각각 할당될 수 있다. 예를 들어, 제1 저장 영역(S_AR1)은 제1 메모리 블록(BLK1)에 할당될 수 있고, 제1 메모리 블록(BLK1)에 대한 수정된 리드 레벨들(CRL1a 내지 CRL7a)을 히스토리 리드 레벨들로서 저장할 수 있다. 또한, 예를 들어, 제2 저장 영역(S_AR2)은 제2 메모리 블록(BLK2)에 할당될 수 있고, 제2 메모리 블록(BLK2)에 대한 수정된 리드 레벨들(CRL1b 내지 CRL7b)을 히스토리 리드 레벨들로서 저장할 수 있다.
도 3c는 본 개시의 일 실시예에 따라, 도 3a의 산포 변화에 대응하는 히스토리 버퍼의 다른 예(34)를 나타낸다.
도 3c를 참조하면, 히스토리 버퍼(34)는 복수의 저장 영역들(S_AR1 내지 S_ARz)을 포함할 수 있고, 복수의 저장 영역들(S_AR1 내지 S_ARz)은 복수의 메모리 블록들(BLK1 내지 BLKz)에 각각 할당될 수 있다. 예를 들어, 제1 저장 영역(S_AR1)은 제1 메모리 블록(BLK1)에 할당될 수 있고, 제1 메모리 블록(BLK1)에 대한 리드 레벨 오프셋들(OS1a 내지 OS7a)을 히스토리 리드 레벨들로서 저장할 수 있다. 또한, 예를 들어, 제2 저장 영역(S_AR2)은 제2 메모리 블록(BLK2)에 할당될 수 있고, 제2 메모리 블록(BLK2)에 대한 리드 레벨 오프셋들(OS1b 내지 OS7b)을 히스토리 리드 레벨 오프셋들로서 저장할 수 있다.
도 2a 내지 도 3c를 참조하여 상술한 바와 같이, 히스토리 리드 레벨 또는 히스토리 리드 레벨 오프셋을 이용하는 히스토리 리드 동작 시, 리드 오류 발생 확률이 낮아질 수 있다. 그러나, 메모리 블록에 배치되는 워드라인들의 개수가 증가함에 따라, 메모리 블록 내의 워드라인들 사이의 워드라인 베리에이션(variation)이 커질 수 있다. 여기서, "워드라인 베리에이션"은 메모리 블록 내의 워드라인들 사이의 물리적 차이로 인해, 워드라인들 사이의 신뢰성 등의 차이가 발생하는 현상을 의미할 수 있다. 예를 들어, 프로그램 이후 메모리 블록에 대한 동일한 열화에도 불구하고, 메모리 블록의 산포 변화가 워드라인 별로 상이할 수 있다. 이로써, 메모리 블록에 대해 동일한 히스토리 리드 레벨로 리드 동작을 수행하더라도 워드라인마다 에러 비트의 개수가 서로 다르게 나올 수 있다. 따라서, 히스토리 리드 동작의 신뢰성이 저하될 수 있고, 결과적으로, 스토리지 장치(100)의 신뢰성이 저하될 수 있다.
이에 따라, 본 발명의 실시예들에 따르면, 상대적으로 신뢰성이 낮은 메모리 블록에 할당되는 히스토리 리드 레벨 저장 영역들의 개수를 동적으로 증가시키고, 상대적으로 신뢰성이 높은 메모리 블록에 할당되는 히스토리 리드 레벨 저장 영역들의 개수를 동적으로 감소시킴으로써, 히스토리 버퍼를 동적으로 제어할 수 있다. 이러한 히스토리 버퍼에 대한 동적 제어를 통해, 메모리 블록 내의 워드라인들의 물리적 차이에도 불구하고 워드라인들의 신뢰성 차이를 감소시킬 수 있다. 이하에서는 도 4 및 도 5를 참조하여 히스토리 버퍼의 동적 제어 동작을 상세하게 설명하기로 한다.
도 4는 본 개시의 일 실시예에 따른 히스토리 버퍼의 동적 제어 동작에 따른 히스토리 버퍼의 변화를 나타낸다.
도 1 및 도 4를 함께 참조하면, 스토리지 컨트롤러(110)는 복수의 메모리 블록들(BLK1 내지 BLKz)의 신뢰성들을 기초로 초기 히스토리 버퍼(41)를 변경 히스토리 버퍼(42)로 업데이트할 수 있다. 예를 들어, 초기 히스토리 버퍼(41)는 도 2b, 도 2c, 도 3b, 또는 도 3c에 예시된 히스토리 버퍼(23, 24, 33, 34)에 대응할 수 있다. 이때, 초기 히스토리 버퍼(41)는 z개의 저장 영역들(S_AR1 내지 S_ARz)을 포함할 수 있고, 변경 히스토리 버퍼(42)도 z개의 저장 영역들(S_AR1 내지 S_ARz)을 포함할 수 있다. 이와 같이, 초기 히스토리 버퍼(41)와 변경 히스토리 버퍼(42)에서 저장 영역들의 개수는 고정적일 수 있다.
도 5a는 본 개시의 일 실시예에 따라, 도 4의 초기 히스토리 버퍼(41)의 저장 영역들과 메모리 블록들 사이의 관계를 나타낸다.
도 4 및 도 5a를 함께 참조하면, 초기 히스토리 버퍼(41)의 제1 내지 제3 저장 영역들(S_AR1, S_AR2, S_AR3)은 제1 내지 제3 메모리 블록들(BLK1, BLK2, BLK3)에 각각 할당될 수 있다. 예를 들어, 제1 저장 영역(S_AR1)은 제1 메모리 블록(BLK1)의 히스토리 리드 레벨들(RL1 내지 RL7)을 저장하고, 제2 저장 영역(S_AR2)은 제2 메모리 블록(BLK2)의 히스토리 리드 레벨들(RL1 내지 RL7)을 저장하고, 제3 저장 영역(S_AR3)은 제3 메모리 블록(BLK3)의 히스토리 리드 레벨들(RL1 내지 RL7)을 저장할 수 있다.
도 5b는 본 개시의 일 실시예에 따라, 도 4의 변경 히스토리 버퍼(42)의 저장 영역들과 메모리 블록들 사이의 관계를 나타낸다.
도 1, 도 4 및 도 5b를 함께 참조하면, 블록 신뢰성 검출기(BRD)는 제1 내지 제3 메모리 블록들(BLK1, BLK2, BLK3)의 신뢰성들을 검출할 수 있다. 예를 들어, 제1 메모리 블록(BLK1)은 신뢰성이 제1 임계 값(예를 들어, 도 14의 THV1)보다 클 수 있고, 이에 따라, 신뢰성이 상대적으로 높은 "양호(good) 블록"으로 판단될 수 있다. 예를 들어, 제2 메모리 블록(BLK2)은 신뢰성이 제1 임계 값보다 작은 제2 임계 값(예를 들어, 도 14의 THV2)보다는 크고, 제1 임계 값 이하일 수 있고, 이에 따라, 신뢰성이 중간인 "미들(middle) 블록"으로 판단될 수 있다. 예를 들어, 제3 메모리 블록(BLK3)은 신뢰성이 제2 임계 값 이하일 수 있고, 이에 따라, 신뢰성이 상대적으로 낮은 "배드(bad) 블록"으로 판단될 수 있다.
히스토리 버퍼 컨트롤러(HBC)는 제1 메모리 블록(BLK1)에 할당되었던 제1 저장 영역(S_AR1)을 회수할 수 있고, 이에 따라, 제1 저장 영역(S_AR1)은 프리(free) 저장 영역이 될 수 있다. 이와 같이, 히스토리 버퍼 컨트롤러(HBC)는 제1 메모리 블록(BLK1)에 할당되는 저장 영역들의 개수를 1개에서 0개로 감소시킬 수 있고, 제1 메모리 블록(BLK1)에는 저장 영역이 할당되지 않을 수 있다. 이에 따라, 스토리지 컨트롤러(110)는 제1 메모리 블록(BLK1)에 대해 디폴트 리드 레벨을 기초로 리드 동작을 수행할 수 있다.
이어서, 히스토리 버퍼 컨트롤러(HBC)는 제1 메모리 블록(BLK1)에 할당되었던 제1 저장 영역(S_AR1), 즉, 프리 저장 영역을 제3 메모리 블록(BLK3)에 추가로 할당할 수 있다. 이와 같이, 히스토리 버퍼 컨트롤러(HBC)는 제3 메모리 블록(BLK3)에 할당되는 저장 영역들의 개수를 1개에서 2개로 증가시킬 수 있고, 제1 및 제3 저장 영역들(S_AR1, S_AR3)은 제3 메모리 블록(BLK3)에 할당될 수 있다. 이에 따라, 스토리지 컨트롤러(110)는 제3 메모리 블록(BLK3)에 대해 제1 및 제3 저장 영역들(S_AR1, S_AR3)에 저장된 히스토리 리드 레벨들을 기초로 리드 동작을 수행할 수 있다.
도 6은 본 개시의 일 실시예에 따른 스토리지 컨트롤러(110A)를 나타낸다.
도 6을 참조하면, 스토리지 컨트롤러(110A)는 프로세서(111), 메모리(112), 버퍼 메모리(113), ECC(error correction code) 엔진(114), 호스트 인터페이스(115), 및 비휘발성 메모리 인터페이스(116)를 포함할 수 있고, 이들은 버스(117)를 통해 통신할 수 있다. 스토리지 컨트롤러(110A)는 도 1의 스토리지 컨트롤러(110)의 일 구현 예에 대응할 수 있고, 이하에서는 도 1 및 도 6을 함께 참조하여 설명하기로 한다.
프로세서(111)은 CPU(Central Processing Unit)나 마이크로 프로세서 등을 포함할 수 있으며, 스토리지 컨트롤러(110A)의 전반적인 동작을 제어할 수 있다. 일 실시예에서, 프로세서(111)는 멀티 코어 프로세서로 구현될 수 있고, 예를 들어, 듀얼 코어 프로세서 또는 쿼드(quad) 코어 프로세서로 구현될 수 있다. 메모리(112)에는 FTL(Flash Translation Layer)이 로딩될 수 있고, 프로세서(111)가 메모리(112)에 로딩된 FTL을 실행하는 것에 의해 비휘발성 메모리(120)에 대한 데이터 기입 및 리드 동작이 제어될 수 있다. FTL은 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection) 등과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트(200)로부터 수신한 논리 주소를, 비휘발성 메모리(120) 내에 데이터를 실제로 저장하는 데 사용되는 물리 주소로 바꾸는 동작이다. 웨어-레벨링은 비휘발성 메모리(120) 내의 메모리 블록들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은 메모리 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 소거하는 방식을 통해 비휘발성 메모리(120) 내에서 사용 가능한 용량을 확보하기 위한 기술이다. 예를 들어, 메모리(112)는 SRAM, DRAM 등과 같은 휘발성 메모리 또는 플래시 메모리, PRAM 등과 같은 비휘발성 메모리로 구현될 수 있다.
본 실시예에 따르면, 히스토리 버퍼(HB)는 메모리(112)에 포함될 수 있고, 도 1의 블록 신뢰성 검출기(BRD) 및 히스토리 버퍼 컨트롤러(HBC)는 FTL의 일부로서 구현되어 메모리(112)에 로딩될 수 있다. 일 실시예에서, 히스토리 버퍼(HB), 블록 신뢰성 검출기(BRD) 및 히스토리 버퍼 컨트롤러(HBC)는 동일 칩으로 구현될 수 있다. 그러나, 이에 제한되지 않으며, 히스토리 버퍼(HB), 블록 신뢰성 검출기(BRD) 및 히스토리 버퍼 컨트롤러(HBC) 중 적어도 하나는 서로 다른 칩에 구현될 수도 있다. 예를 들어, 히스토리 버퍼(HB)는 별도의 DRAM 칩의 일부로 구현될 수 있다.
버퍼 메모리(113)는 비휘발성 메모리(120)에 기록될 데이터 혹은 비휘발성 메모리(120)로부터 리드되는 데이터를 임시로 저장할 수 있다. 버퍼 메모리(113)는 스토리지 컨트롤러(110A) 내에 구비되는 구성일 수 있으나, 스토리지 컨트롤러(110A)의 외부에 배치되어도 무방하다. ECC 엔진(114)은 비휘발성 메모리(120)로부터 리드되는 리드 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(114)은 비휘발성 메모리(120)에 기입될 기입 데이터에 대하여 패리티 비트들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 비휘발성 메모리(120) 내에 저장될 수 있다. 비휘발성 메모리(120)로부터의 데이터 리드 시, ECC 엔진(114)은 리드 데이터와 함께 비휘발성 메모리(120)로부터 리드되는 패리티 비트들을 이용하여 리드 데이터의 에러를 정정하고, 에러가 정정된 리드 데이터를 출력할 수 있다.
호스트 인터페이스(115)는 호스트(200)와 패킷(packet)을 송수신할 수 있다. 호스트(200)로부터 호스트 인터페이스(115)로 전송되는 패킷은 커맨드 혹은 비휘발성 메모리(120)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(115)로부터 호스트(200)로 전송되는 패킷은 커맨드에 대한 응답 혹은 비휘발성 메모리(120)로부터 리드된 데이터 등을 포함할 수 있다. 비휘발성 메모리 인터페이스(116)는 비휘발성 메모리(120)에 기록될 데이터를 비휘발성 메모리(120)로 송신하거나, 비휘발성 메모리(120)로부터 리드된 데이터를 수신할 수 있다. 이러한 비휘발성 메모리 인터페이스(116)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
도 7은 본 개시의 일 실시예에 따른 스토리지 컨트롤러(110B)를 나타낸다.
도 7을 참조하면, 스토리지 컨트롤러(110B)는 프로세서(111), 히스토리 버퍼(HB), 블록 신뢰성 검출기(BRD), 히스토리 버퍼 컨트롤러(HBC), 버퍼 메모리(113), ECC 엔진(114), 호스트 인터페이스(115), 및 비휘발성 메모리 인터페이스(116)를 포함할 수 있고, 이들은 버스(117)를 통해 통신할 수 있다. 스토리지 컨트롤러(110B)는 도 6의 스토리지 컨트롤러(110A)의 변형 예에 대응하며, 중복된 설명은 생략하기로 한다.
일 실시예에서, 블록 신뢰성 검출기(BRD) 및 히스토리 버퍼 컨트롤러(HBC)는 소프트웨어로 구현될 수 있다. 예를 들어, 비휘발성 메모리(120)는 프로그램 코드를 저장하고, 스토리지 장치(100)에 전원이 인가되면 비휘발성 메모리(120)에 저장된 프로그램 코드는 스토리지 컨트롤러(110)의 동작 메모리에 로딩될 수 있다. 프로세서(111)는 동작 메모리에 로딩된 프로그램 코드를 실행함으로써 도 1 내지 도 6을 참조하여 상술된 바와 같이, 복수의 메모리 블록들의 신뢰성들을 기초로 히스토리 버퍼(HB)를 동적으로 제어할 수 있다.
그러나, 본 발명은 이에 한정되지 않으며, 일 실시예에서, 블록 신뢰성 검출기(BRD) 및 히스토리 버퍼 컨트롤러(HBC)는 하드웨어로 구현될 수 있다. 또한, 일 실시예에서, 블록 신뢰성 검출기(BRD) 및 히스토리 버퍼 컨트롤러(HBC)는 소프트웨어 및 하드웨어의 조합으로 구현될 수 있다. 나아가, 일 실시예에서, 블록 신뢰성 검출기(BRD) 및 히스토리 버퍼 컨트롤러(HBC) 중 적어도 하나는 비휘발성 메모리 인터페이스(116)에 포함되도록 구현될 수 있다.
도 8은 본 개시의 일 실시예에 따른 비휘발성 메모리(120)를 나타내는 블록도이다.
도 8을 참조하면, 비휘발성 메모리(120)는 메모리 셀 어레이(121), 제어 로직 회로(122), 전압 생성기(123), 로우 디코더(124), 및 페이지 버퍼 회로(125)를 포함할 수 있다. 도 8에는 도시되지 않았으나, 비휘발성 메모리(120)는 메모리 인터페이스 회로를 더 포함할 수 있고, 또한 컬럼 로직, 프리-디코더, 온도 센서, 커맨드 디코더, 어드레스 디코더 등을 더 포함할 수 있다.
메모리 셀 어레이(121)는 복수의 메모리 블록들(BLK1 내지 BLKz)을 포함할 수 있고, 복수의 메모리 블록들(BLK1 내지 BLKz) 각각은 복수의 페이지들(PG1 내지 PGm)을 포함할 수 있고, z와 m은 양의 정수일 수 있고, 실시예에 따라 다양하게 변경될 수 있다. 예를 들어, 메모리 블록은 소거의 단위이고, 페이지는 기입 및 리드의 단위일 수 있다. 메모리 셀 어레이(121)는 비트 라인들(BL)을 통해 페이지 버퍼 회로(125)에 연결될 수 있고, 워드 라인들(WL), 스트링 선택 라인들(SSL), 및 그라운드 선택 라인들(GSL)을 통해 로우 디코더(124)에 연결될 수 있다.
일 실시예에서, 메모리 셀 어레이(121)는 3차원 메모리 셀 어레이를 포함할 수 있고, 3차원 메모리 셀 어레이는 복수의 낸드 스트링들을 포함할 수 있다. 각 낸드 스트링은 기판 위에 수직으로 적층된 워드 라인들에 각각 연결된 메모리 셀들을 포함할 수 있다. 미국 특허공개공보 제7,679,133호, 미국 특허공개공보 제8,553,466호, 미국 특허공개공보 제8,654,587호, 미국 특허공개공보 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 본 명세서에 인용 형식으로 결합된다. 일 실시예에서, 메모리 셀 어레이(121)는 2차원 메모리 셀 어레이를 포함할 수 있고, 2차원 메모리 셀 어레이는 행 및 열 방향을 따라 배치된 복수의 낸드 스트링들을 포함할 수 있다. 일부 실시예들에서, 메모리 셀 어레이(121)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있고, 이에 따라, 비휘발성 메모리(120)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리를 포함할 수 있다.
제어 로직 회로(122)는 비휘발성 메모리(120) 내의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(122)는 커맨드(CMD) 및/또는 어드레스(ADDR)에 응답하여 각종 제어 신호들을 출력할 수 있다. 예를 들어, 제어 로직 회로(122)는 전압 제어 신호(CTRL_vol), 로우 어드레스(X_ADDR), 및 컬럼 어드레스(Y_ADDR)를 출력할 수 있다. 전압 생성기(123)는 전압 제어 신호(CTRL_vol)를 기반으로 프로그램, 독출, 및 소거 동작들을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 예를 들어, 전압 생성기(123)는 워드 라인 전압(VWL)으로서 프로그램 전압, 독출 전압, 프로그램 검증 전압, 소거 전압 등을 생성할 수 있다.
로우 디코더(124)는 로우 어드레스(X_ADDR)에 응답하여 복수의 워드 라인들(WL) 중 하나를 선택할 수 있고, 복수의 스트링 선택 라인들(SSL) 중 하나를 선택할 수 있다. 예를 들어, 프로그램 동작 시, 로우 디코더(124)는 선택된 워드 라인으로 프로그램 전압 및 프로그램 검증 전압을 인가하고, 독출 동작 시, 선택된 워드 라인으로 독출 전압을 인가할 수 있다. 페이지 버퍼 회로(125)는 컬럼 어드레스(Y_ADDR)에 응답하여 비트 라인들(BL) 중 적어도 하나의 비트 라인을 선택할 수 있다. 페이지 버퍼 회로(125)는 동작 모드에 따라 기입 드라이버 또는 감지 증폭기로서 동작할 수 있다.
도 9는 본 개시의 일 실시예에 따른 메모리 블록(BLK)을 나타내는 회로도이다.
도 9를 참조하면, 메모리 블록(BLK)은 도 8의 복수의 메모리 블록들(BLK1 내지 BLKz) 중 하나에 대응할 수 있다. 메모리 블록(BLK)은 낸드 스트링들(NS11 내지 NS33)을 포함하고, 각 낸드 스트링(예를 들면, NS11)은 직렬로 연결된 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MCs) 및 그라운드 선택 트랜지스터(GST)를 포함할 수 있다. 각 낸드 스트링에 포함된 트랜지스터들(SST, GST) 및 메모리 셀들(MCs)은 기판 상에서 수직 방향을 따라 적층된 구조를 형성할 수 있다.
비트 라인들(BL1 내지 BL3)은 제1 방향을 따라 연장될 있고, 워드 라인들(WL1 내지 WL8)은 제2 방향 또는 제2 방향을 따라 연장될 수 있다. 제1 비트 라인(BL1)과 공통 소스 라인(CSL) 사이에 낸드 스트링들(NS11, NS21, NS31)이 위치하고, 제2 비트 라인(BL2)과 공통 소스 라인(CSL) 사이에 낸드 스트링들(NS12, NS22, NS32)이 위치하고, 제3 비트 라인(BL3)과 공통 소스 라인(CSL) 사이에 낸드 스트링들(NS13, NS23, NS33)이 위치할 수 있다.
스트링 선택 트랜지스터(SST)는 대응하는 스트링 선택 라인(SSL1 내지 SSL3)에 연결될 수 있다. 메모리 셀들(MCs)은 대응하는 워드 라인들(WL1 내지 WL8)에 각각 연결될 수 있다. 그라운드 선택 트랜지스터(GST)는 대응하는 그라운드 선택 라인(GSL1 내지 GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 대응하는 비트 라인에 연결되고, 그라운드 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다. 여기서, 낸드 스트링들의 개수, 워드 라인들의 개수, 비트 라인들의 개수, 그라운드 선택 라인의 개수 및 스트링 선택 라인들의 개수는 실시 예에 따라 다양하게 변경될 수 있다.
도 10a는 본 개시의 일 실시예에 따른 2-스택 구조를 갖는 메모리 블록(BLKa)을 나타낸다. 도 10a를 참조하면, 메모리 블록(BLKa)은 제1 스택(STK1) 및 제2 스택(STK2)을 포함하는 2-스택 구조를 가질 수 있고, 도 9의 복수의 메모리 블록들(BLK1 내지 BLKz) 중 하나에 대응할 수 있다. 이때, 제1 스택(STK1)에 포함되는 워드라인들과 제2 스택(STK2)에 포함되는 워드라인들 사이에는 워드라인 베리에이션이 상당히 클 수 있다. 이에 따라, 제1 스택(STK1)에 포함되는 페이지에 대한 리드 결과에 따른 히스토리 리드 레벨을 이용하여, 제2 스택(STK2)에 포함되는 페이지에 대한 리드 동작을 수행할 경우, 에러 비트의 개수가 증가할 수 있고, 이로써, 메모리 블록(BLKa)에 대한 리드 신뢰성이 저하될 수 있다.
도 10b는 본 개시의 일 실시예에 따른 3-스택 구조를 갖는 메모리 블록(BLKb)을 나타낸다. 도 10b를 참조하면, 메모리 블록(BLKb)은 제1 스택(STK1), 제2 스택(STK2) 및 제3 스택(STK3)을 포함하는 3-스택 구조를 가질 수 있고, 도 9의 복수의 메모리 블록들(BLK1 내지 BLKz) 중 하나에 대응할 수 있다. 도 10a를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있는바, 중복된 설명은 생략하기로 한다. 본 발명은 2-스택 구조 또는 3-스택 구조의 메모리 블록에 한정되지 않으며, 메모리 블록은 N개의 스택들을 포함하는 N-스택 구조를 가질 수 있고, N은 4 이상의 양의 정수일 수 있다. 또한, 메모리 블록은 단일 스택 구조로 구현될 수도 있다.
도 11은 본 개시의 일 실시예에 따른 메모리 블록(300)의 단면의 일부를 나타낸다.
도 8 및 도 11을 함께 참조하면, 비휘발성 메모리(120)가 수직형 메모리 장치의 경우, 3차원 구조의 메모리 블록에서 채널 구조를 형성하기 위해 채널 홀(hole)을 형성하는 식각 공정이 수행될 수 있으며, 메모리 블록의 높이에 따라 채널 홀의 직경은 서로 다를 수 있다. 예컨대, 채널 홀은 3차원 구조의 메모리 블록에서 상부에서 하부로 갈수록 그 직경이 감소될 수 있다. 3차원 구조의 메모리 블록에서 채널 홀의 직경이 매우 감소되는 것을 방지하기 위해, 채널 홀을 형성하는 식각 공정이 적어도 2 회 수행될 수 있다. 구체적으로, 기판 상에 제1 스택(즉, 제1 적층 구조체)(STK1)이 형성된 후 식각 공정이 수행되고, 그 이후 제1 스택(SK1) 상에 제2 스택(즉, 제2 적층 구조체)가 형성될 수 있다. 또한, 제2 스택(STK2)에 대해 식각 공정이 수행될 수 있다.
일 예로서, 3차원 구조의 메모리 블록(300)은 제1 스택(STK1)은 수직 방향으로 교대로 배치되는 게이트 전극(310)과 절연막(320)을 포함할 수 있다. 또한, 제1 스택(STK1)의 상부에 적층되는 제2 스택(STK2)은 수직 방향으로 교대로 배치되는 게이트 전극(340)과 절연막(350)을 포함할 수 있다. 일 실시예에 따라, 제1 스택(STK1)과 제2 스택(STK2) 사이에는 구조체간 층(330)이 배치될 수 있다. 또한, 채널 구조(360)는 채널(362), 채널(362)의 외측벽을 둘러싸는 유전막 구조물(363) 및 상기 채널(362) 내부에 배치되는 채널 매립막 패턴(361)을 포함할 수 있다. 상기와 같은 구조는 일 실시예에 불과한 것으로서, 본 발명의 실시예들에 따른 3차원 구조의 메모리 블록(300)은 적어도 2 회의 식각 공정이 수행되는 다른 다양한 구조를 가져도 무방할 것이다.
도 12a는 본 개시의 일 실시예에 따른 히스토리 버퍼의 동적 제어 동작에 따른 히스토리 버퍼의 변화를 나타낸다.
도 1 및 도 12a를 함께 참조하면, 초기 히스토리 버퍼(33)는 예를 들어, 도 3b의 히스토리 버퍼(33)에 대응할 수 있고, 도 3a 및 도 3b를 참조하여 상술된 내용은 본 실시예에 적용될 수 있다. 예를 들어, 제1 메모리 블록(BLK1)은 신뢰성이 상대적으로 높은 양호 블록이고, 제3 메모리 블록(BLK3)은 신뢰성이 상대적으로 낮은 배드 블록일 수 있다. 스토리지 컨트롤러(110)는 제1 메모리 블록(BLK1)에 할당되었던 제1 저장 영역(S_AR1)을 회수하고, 제1 저장 영역(S_AR1)을 제3 메모리 블록(BLK3)에 추가로 할당함으로써, 초기 히스토리 버퍼(33)를 변경 히스토리 버퍼(33')로 업데이트할 수 있다.
예를 들어, 제3 메모리 블록(BLK3)은 도 10a의 메모리 블록(BLKa)에 대응할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 제3 메모리 블록(BLK3)의 제1 스택(STK1)에 대한 히스토리 리드 레벨들(CRL1c 내지 CRL7c)을 제3 저장 영역(S_AR3)에 저장할 수 있고, 제3 메모리 블록(BLK3)의 제2 스택(STK2)에 대한 히스토리 리드 레벨들(CRL1c' 내지 CRL7c')을 제1 저장 영역(S_AR1)에 저장할 수 있다. 이에 따라, 제3 메모리 블록(BLK3)의 제1 스택(STK1)에 포함되는 페이지에 대한 리드 동작 시, 제3 저장 영역(S_AR3)에 저장된 히스토리 리드 레벨들(CRL1c 내지 CRL7c)을 이용할 수 있고, 제3 메모리 블록(BLK3)의 제2 스택(STK2)에 포함되는 페이지에 대한 리드 동작 시, 제1 저장 영역(S_AR1)에 저장된 히스토리 리드 레벨들(CRL1c' 내지 CRL7c')을 이용할 수 있다.
그러나, 본 발명은 스택 별로 히스토리 리드 레벨 저장 영역들을 할당하는 예에 제한되지 않는다. 일부 실시예들에서, 메모리 블록 내의 워드라인 넘버에 따라 히스토리 리드 레벨 저장 영역들을 할당할 수도 있다. 예를 들어, 단일 스택에서 제1 내지 제20 워드라인들과 제21 내지 제40 워드라인들에 대해 서로 다른 히스토리 리드 레벨 저장 영역을 할당할 수도 있다.
도 12b는 본 개시의 일 실시예에 따른 히스토리 버퍼의 동적 제어 동작에 따른 히스토리 버퍼의 변화를 나타낸다.
도 1 및 도 12b를 함께 참조하면, 초기 히스토리 버퍼(34)는 예를 들어, 도 3c의 히스토리 버퍼(34)에 대응할 수 있고, 도 3a 및 도 3c를 참조하여 상술된 내용은 본 실시예에 적용될 수 있다. 예를 들어, 제1 메모리 블록(BLK1)은 신뢰성이 상대적으로 높은 양호 블록이고, 제3 메모리 블록(BLK3)은 신뢰성이 상대적으로 낮은 배드 블록일 수 있다. 스토리지 컨트롤러(110)는 제1 메모리 블록(BLK1)에 할당되었던 제1 저장 영역(S_AR1)을 회수하고, 제1 저장 영역(S_AR1)을 제3 메모리 블록(BLK3)에 추가로 할당함으로써, 초기 히스토리 버퍼(34)를 변경 히스토리 버퍼(34')로 업데이트할 수 있다.
예를 들어, 제3 메모리 블록(BLK3)은 도 10a의 메모리 블록(BLKa)에 대응할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 제3 메모리 블록(BLK3)의 제1 스택(STK1)에 대한 히스토리 리드 레벨 오프셋들(OS1c 내지 OS7c)을 제3 저장 영역(S_AR3)에 저장할 수 있고, 제3 메모리 블록(BLK3)의 제2 스택(STK2)에 대한 히스토리 리드 레벨 오프셋들(OS1a' 내지 OS7a')을 제1 저장 영역(S_AR1)에 저장할 수 있다. 이에 따라, 제3 메모리 블록(BLK3)의 제1 스택(STK1)에 포함되는 페이지에 대한 리드 동작 시, 제3 저장 영역(S_AR3)에 저장된 히스토리 리드 레벨 오프셋들(OS1c 내지 OS7c)을 이용할 수 있고, 제3 메모리 블록(BLK3)의 제2 스택(STK2)에 포함되는 페이지에 대한 리드 동작 시, 제1 저장 영역(S_AR1)에 저장된 히스토리 리드 레벨 오프셋들(OS1a' 내지 OS7a')을 이용할 수 있다.
도 13은 본 개시의 일 실시예에 따른 스토리지 컨트롤러(110)의 동작 방법을 나타내는 흐름도이다.
도 13을 참조하면, 본 실시예에 따른 스토리지 컨트롤러의 동작 방법은 스토리지 장치의 런타임 중에 히스토리 버퍼를 동적으로 제어하는 방법이다. 예를 들어, 본 실시예에 따른 스토리지 컨트롤러의 동작 방법은 도 1의 스토리지 컨트롤러(110)에서 시계열적으로 수행될 수 있고, 도 1 내지 도 12b를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다.
단계 S110에서, 스토리지 컨트롤러(110)는 히스토리 버퍼(HB)의 저장 영역들(S-AR)을 비휘발성 메모리(120)의 메모리 블록들(BLKs)에 각각 할당한다. 이때, 히스토리 버퍼(HB)는 복수의 히스토리 리드 레벨 저장 영역들(S-AR) 또는 복수의 저장 영역들(S-AR)을 포함할 수 있다. 히스토리 버퍼(HB)의 용량은 고정적이고, 이에 따라, 복수의 히스토리 리드 레벨 저장 영역들(S-AR)의 개수도 고정적일 수 있다.
단계 S120에서, 스토리지 컨트롤러(110)는 메모리 블록들(BLKs)의 신뢰성들을 기초로, 메모리 블록(BLK)에 할당되는 저장 영역의 개수를 동적으로 조정하는 히스토리 버퍼 제어 동작을 수행한다. 일 실시예에서, 스토리지 컨트롤러(110)는 프리벤션(prevention) 방어 코드를 실행함으로써, 메모리 블록들(BLKs)의 신뢰성을 검출할 수 있고, 이에 대해 도 15 내지 도 19를 참조하여 후술하기로 한다. 일 실시예에서, 스토리지 컨트롤러(110)는 리커버리(recovery) 방어 코드를 실행함으로써, 메모리 블록들(BLKs)의 신뢰성을 검출할 수 있고, 이에 대해 도 20 내지 도 22를 참조하여 후술하기로 한다. 일 실시예에서, 스토리지 컨트롤러(110)는 히스토리 버퍼(HB)의 히스토리 리드 레벨 오프셋을 기초로 메모리 블록들(BLKs)의 신뢰성을 검출할 수 있고, 이에 대해 도 23을 참조하여 후술하기로 한다.
도 14는 본 개시의 일 실시예에 따라, 도 13의 스토리지 컨트롤러(110)의 동작 방법을 더욱 상세하게 나타내는 흐름도이다.
도 14를 참조하면, 단계 S120은 단계 S121 내지 S125를 포함할 수 있다. 단계 S121에서, 스토리지 컨트롤러(110)는 메모리 블록(BLK)의 신뢰성을 검출한다. 단계 S122에서, 스토리지 컨트롤러(110)는 검출된 신뢰성이 제1 임계 값(THV1)보다 큰지 판단한다. 판단 결과, 검출된 신뢰성이 제1 임계 값(THV1)보다 크면, 스토리지 컨트롤러(110)는 메모리 블록(BLK)을 양호 블록으로 판단할 수 있다. 이어서, 단계 S123에서, 스토리지 컨트롤러(110)는 메모리 블록(BLK)에 할당되었던 저장 영역을 회수한다.
일 실시예에서, 초기에 메모리 블록(BLK)에 할당되었던 저장 영역의 개수는 1개이고, 단계 S123에 의해 메모리 블록(BLK)에 할당되는 저장 영역의 개수는 0개가 될 수 있다. 이로써, 상대적으로 신뢰성이 높은 메모리 블록(BLK)은 히스토리 리드 레벨을 이용한 히스토리 리드 동작이 수행되지 않을 수 있고, 이후 메모리 블록(BLK)은 디폴트 리드 레벨을 이용한 노멀 리드 동작이 수행될 수 있다. 일 실시예에서, 초기에 메모리 블록(BLK)에 할당되었던 저장 영역의 개수는 2개이고, 단계 S123에 의해 메모리 블록(BLK)에 할당되는 저장 영역의 개수는 1개가 될 수 있다. 이로써, 이전보다 신뢰성이 향상된 메모리 블록(BLK)은 이전보다 적은 개수의 히스토리 리드 레벨을 이용하여 히스토리 리드 동작이 수행될 수 있다. 예를 들어, 메모리 블록(BLK)이 2-스택 구조를 갖는 경우, 이후 제1 스택 및 제2 스택에 대해 동일한 히스토리 리드 레벨을 이용하여 히스토리 리드 동작이 수행될 수 있다.
한편, 검출된 신뢰성이 제1 임계 값(THV1)보다 크지 않으면, 단계 S124에서, 스토리지 컨트롤러(110)는 검출된 신뢰성이 제2 임계 값(THV2)보다 큰지 판단한다. 이때, 제2 임계 값(THV2)은 제1 임계 값(THV1)보다 작은 임의의 값으로 정의될 수 있다. 판단 결과, 검출된 신뢰성이 제2 임계 값(THV2)보다 크면, 스토리지 컨트롤러(110)는 메모리 블록(BLK)을 미들 블록으로 판단할 수 있고, 이때, 히스토리 버퍼 제어 동작은 종료된다. 한편, 검출된 신뢰성이 제2 임계 값(THV2)보다 크지 않으면, 스토리지 컨트롤러(110)는 메모리 블록(BLK)을 배드 블록으로 판단할 수 있다. 이어서, 단계 S125에서, 스토리지 컨트롤러(110)는 메모리 블록(BLK)에 저장 영역을 추가로 할당한다.
일 실시예에서, 초기에 메모리 블록(BLK)에 할당되었던 저장 영역의 개수는 1개이고, 단계 S125에 의해 메모리 블록(BLK)에 할당되는 저장 영역의 개수는 2개가 될 수 있다. 예를 들어, 메모리 블록(BLK)이 2-스택 구조를 갖는 경우, 이후 제1 스택 및 제2 스택에 대해 서로 다른 히스토리 리드 레벨을 이용하여 히스토리 리드 동작이 수행될 수 있다. 일 실시예에서, 초기에 메모리 블록(BLK)에 할당되었던 저장 영역의 개수는 0개이고, 단계 S125에 의해 메모리 블록(BLK)에 할당되는 저장 영역의 개수는 1개가 될 수 있다. 이로써, 이전보다 신뢰성이 저하된 메모리 블록(BLK)은 이전보다 많은 개수의 히스토리 리드 레벨을 이용하여 히스토리 리드 동작이 수행될 수 있다.
일 실시예에서, 스토리지 컨트롤러(110)는 머신 러닝 모듈을 포함할 수 있다. 예를 들어, 머신 러닝 모듈은 메모리 블록들(BLKs)의 신뢰성을 예측할 수 있다. 예를 들어, 머신 러닝 모듈은 메모리 블록(BLK)에 할당되었던 저장 영역에 대한 회수량을 결정할 수 있다. 예를 들어, 머신 러닝 모듈은 메모리 블록(BLK)에 대한 추가 할당량을 결정할 수 있다
도 15는 본 개시의 일 실시예에 따라, 히스토리 버퍼를 동적으로 제어하는 방법을 나타내는 흐름도이다.
도 15를 참조하면, 단계 S210에서, 스토리지 컨트롤러(110)는 메모리 블록들(BLKs)에 대해 디폴트 리드 레벨을 이용하여 백그라운드 리드 동작을 수행한다. 예를 들어, 백그라운드 리드 동작은 패트롤 리드 동작을 포함할 수 있고, 이에 대해, 도 19를 참조하여 후술하기로 한다. 예를 들어, 백그라운드 리드 동작은 미디어 스캔 동작을 포함할 수 있고, 이에 대해 도 20을 참조하여 후술하기로 한다.
단계 S220에서, 스토리지 컨트롤러(110)는 백그라운드 리드 동작의 수행 결과에 따라, 메모리 블록들(BLKs)의 신뢰성들을 검출한다. 단계 S230에서, 스토리지 컨트롤러(110)는 메모리 블록들(BLKs) 중 적어도 하나에 할당되는 히스토리 리드 레벨 저장 영역의 개수를 동적으로 조정한다.
도 16은 본 개시의 일 실시예에 따라, 도 15의 히스토리 버퍼를 동적으로 제어하는 방법을 더욱 상세하게 나타내는 흐름도이다.
도 16을 참조하면, 본 실시예에 따른 방법은 비휘발성 메모리에 포함된 메모리 블록들에 대해 스토리지 장치에서 주기적으로 백그라운드 리드 동작을 수행하고, 백그라운드 리드 동작의 결과에 따라 히스토리 버퍼를 동적으로 제어하는 방법이다. 예를 들어, 본 실시예에 따른 동작 방법은 도 1의 스토리지 장치(100)에서 시계열적으로 수행될 수 있다. 도 1 내지 도 15를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다.
단계 S310에서, 스토리지 장치(100)는 백그라운드 리드 동작을 수행한다. 스토리지 장치(100)는 호스트(200)로부터 리드 요청을 수신하지 않고, 비휘발성 메모리(120)에 포함된 복수의 메모리 블록들(BLKs)에 대해 디폴트 리드 레벨을 이용하여 주기적으로 백그라운드 리드 동작을 수행할 수 있다. 단계 S220에서, 스토리지 컨트롤러(110)는 백그라운드 리드 동작의 실패 여부를 판단한다. 판단 결과, 백그라운드 리드 동작이 실패하면 단계 S330을 수행하고, 그렇지 않으면, 다른 메모리 블록에 대해 단계 S310을 수행한다.
단계 S330에서, 스토리지 장치(100)는 리드 리트라이 동작을 수행한다. 스토리지 장치(100)는 디폴트 리드 레벨과 다른 수정된 리드 레벨을 이용하여 해당 메모리 블록에 대해 리드 리트라이 동작을 수행할 수 있다. 단계 S340에서, 스토리지 컨트롤러(110)는 리드 리트라이 동작의 실패 여부를 판단한다. 판단 결과, 리드 리트라이 동작이 성공하면 단계 S350을 수행한다. 한편, 리드 리트라이 동작이 실패하면, 단계 S330을 다시 수행할 수 있다.
단계 S350에서, 스토리지 컨트롤러(110)는 히스토리 버퍼(HB)를 동적으로 조정하고, 히스토리 버퍼(HB)를 업데이트 한다. 스토리지 장치(100)는 수정된 리드 레벨을 해당 메모리 블록에 대한 히스토리 리드 레벨로서 저장함으로써 히스토리 버퍼(HB)를 업데이트할 수 있다. 단계 S360에서, 스토리지 장치(100)는 호스트 리드 동작을 수행한다. 스토리지 장치(100)는 호스트(200)로부터 리드 요청이 수신되면 히스토리 버퍼(HB)를 이용하여 호스트 리드 동작을 수행할 수 있다.
일부 실시예에서, 본 동작 방법은 단계 S310을 수행하기 전에, 각 메모리 블록에 대한 대표 페이지를 선택하는 단계를 더 포함할 수 있다. 예를 들어, 복수의 메모리 블록들 각각에서, 프로그램 및 소거 횟수, 독출 횟수, 프로그램 경과 시간, 리드 디스터브, 프로그램 디스터브, 각 메모리 블록의 물리적 위치 및 각 페이지의 물리적 위치 중 적어도 하나를 기초로, 적어도 하나의 대표 페이지를 선택할 수 있다.
도 17은 본 개시의 일 실시예에 따라, 도 16의 방법에 따른 스토리지 컨트롤러(110)와 비휘발성 메모리(120) 사이의 동작을 나타내는 흐름도이다.
도 1, 도 6 및 도 17을 함께 참조하면, 단계 S410에서, 스토리지 컨트롤러(110)는 제i 메모리 블록(BLKi)에 대한 리드 커맨드를 발행(issue)한다. 여기서, i는 1과 z 사이의 임의의 자연수일 수 있다. 구체적으로, 스토리지 컨트롤러(110)는 호스트(200)로부터 리드 요청을 수신하지 않고 자체적으로 리드 커맨드를 발행한다. 또한, 스토리지 컨트롤러(110)는 제i 메모리 블록(BLKi)에 포함된 대표 페이지에 대한 어드레스를 발행하고, 제i 메모리 블록(BLKi)에 대한 리드 전압을 디폴트 리드 레벨(DRL)로 결정할 수 있다. 단계 S415에서, 스토리지 컨트롤러(110)는 비휘발성 메모리(120)에 리드 커맨드를 전송한다. 이때, 스토리지 컨트롤러(110)는 비휘발성 메모리(120)에 리드 커맨드와 함께 어드레스를 전송하고, 제i 메모리 블록(BLKi)에 대한 리드 전압을 제어 신호로써 전송할 수 있다.
단계 S420에서, 비휘발성 메모리(120)는 리드 커맨드에 응답하여, 디폴트 리드 레벨을 이용하여 노멀 리드 동작을 수행한다. 이때, 비휘발성 메모리(120)는 제i 메모리 블록(BLKi)의 대표 페이지에 대한 노멀 리드 동작을 수행할 수 있다. 단계 S425에서, 비휘발성 메모리(120)는 노멀 리드 동작에 의해 리드된 데이터를 스토리지 컨트롤러(110)에 전송한다.
단계 S430에서, 스토리지 컨트롤러(110)는 노멀 리드 동작의 실패 여부를 판단한다. 구체적으로, ECC 엔진(114)은 수신한 데이터에 대해 ECC 동작을 수행하고, 수신한 데이터에서 검출된 페일 비트의 개수가 ECC 엔진(114)의 에러 정정 능력을 초과하는지 판단할 수 있다. 판단 결과, 페일 비트의 개수가 에러 정정 능력을 초과하는 경우 노멀 리드 동작이 실패한 것으로 판단하고, 단계 S440을 수행한다. 한편, 페일 비트의 개수가 에러 정정 능력을 초과하지 않는 경우 또는 데이터가 페일 비트를 포함하지 않는 경우 노멀 리드 동작이 성공한 것으로 판단하고, 단계 S450을 수행한다. 단계 S450에서, 스토리지 컨트롤러(110)는 i를 1만큼 증가시키고, 제i+1 메모리 블록에 대한 백그라운드 리드 동작을 수행할 수 있다.
단계 S440에서, 스토리지 컨트롤러(110)는 제i 메모리 블록(BLKi)에 대해 리드 리트라이 커맨드를 발행한다. 구체적으로, 스토리지 컨트롤러(110)는 호스트(200)로부터 리드 리트라이 요청을 수신하지 않고 자체적으로 리드 리트라이 커맨드를 발행한다. 또한, 스토리지 컨트롤러(110)는 제i 메모리 블록(BLKi)에 포함된 대표 페이지들 중 리드 페일된 페이지에 대한 어드레스를 발행하고, 제i 메모리 블록(BLKi)에 대한 리드 리트라이 전압을 수정된 리드 레벨로 결정할 수 있다. 단계 S460에서, 스토리지 컨트롤러(110)는 비휘발성 메모리(120)에 리드 리트라이 커맨드를 전송한다. 이때, 스토리지 컨트롤러(110)는 비휘발성 메모리(120)에 리드 리트라이 커맨드와 함께 어드레스를 전송하고, 제i 메모리 블록(BLKi)에 대한 리드 리트라이 전압을 제어 신호로써 전송할 수 있다.
단계 S470에서, 비휘발성 메모리(120)는 리드 리트라이 커맨드에 응답하여, 수정된 리드 레벨을 이용하여 리드 리트라이 동작을 수행한다. 이때, 비휘발성 메모리(120)는 제i 메모리 블록(BLKi)의 대표 페이지에 대한 리드 리트라이 동작을 수행할 수 있다. 단계 S475에서, 비휘발성 메모리(120)는 리드 리트라이 동작에 의해 리드된 데이터를 스토리지 컨트롤러(110)에 전송한다.
단계 S480에서, 스토리지 컨트롤러(110)는 리드 리트라이 동작의 실패 여부를 판단한다. 구체적으로, ECC 엔진(114)은 수신한 데이터에 대해 ECC 동작을 수행하고, 수신된 데이터에서 검출된 페일 비트의 개수가 ECC 엔진(114)의 에러 정정 능력을 초과하는지 판단할 수 있다. 판단 결과, 페일 비트의 개수가 에러 정정 능력을 초과하는 경우 노멀 리드 동작이 실패한 것으로 판단하고, 단계 S440을 다시 수행할 수 있다. 한편, 페일 비트의 개수가 에러 정정 능력을 초과하지 않는 경우 또는 데이터가 페일 비트를 포함하지 않는 경우 리드 리트라이 동작이 성공한 것으로 판단하고, 단계 S490을 수행한다. 단계 S490에서, 스토리지 컨트롤러(110)는 히스토리 버퍼(HB)를 동적으로 조정하고, 수정된 리드 레벨을 저장함으로써, 히스토리 버퍼(HB)를 업데이트한다.
도 18은 본 개시의 일 실시예에 따른 백그라운드 리드 동작의 일 예를 나타낸다.
도 1 및 도 18을 함께 참조하면, 메모리 셀 어레이(MCA1)는 제1 내지 제n 메모리 블록들(BLK1 내지 BLKz)을 포함할 수 있고, 도 8의 메모리 셀 어레이(121)의 일 예일 수 있다. 일 실시예에 따르면, 각 메모리 블록(BLK1 내지 BLKz)에서 적어도 하나의 대표 페이지를 선택하고, 선택된 대표 페이지들(RP1 내지 RPn)에 대해 백그라운드 리드 동작을 수행할 수 있다. 이러한 백그라운드 리드 동작은 "패트롤(patrol) 리드 동작"이라고 지칭할 수 있다.
스토리지 컨트롤러(110)는 물리 어드레스에 따라 제1 내지 제z 메모리 블록들(BLK1 내지 BLKz)에 대해 주기적으로 백그라운드 리드 동작을 수행할 수 있다. 일 실시예에서, 백그라운드 리드 동작의 수행 순서는 제1 내지 제z 메모리 블록들(BLK1 내지 BLKz)의 물리적인 위치 또는 열화 정보 등에 의해 변경될 수 있다. 예를 들어, 제1 내지 제z 메모리 블록들(BLK1 내지 BLKz)의 배치 순서에 따라 백그라운드 리드 동작이 수행될 수 있다. 구체적으로, 제1 대표 페이지(RP1)에 대한 백그라운드 리드 동작을 수행하고, 이어서, 제2 대표 페이지(RP2)에 대한 백그라운드 리드 동작을 수행하고, 이어서, 제3 대표 페이지(RP3)에 대한 백그라운드 리드 동작을 수행할 수 있다.
도 19는 본 개시의 일 실시예에 따른 백그라운드 리드 동작의 다른 예를 나타낸다.
도 1 및 도 19를 함께 참조하면, 메모리 셀 어레이(MCA2)는 제1 내지 제z 논리 블록들(LBN1 내지 LBNz)을 포함할 수 있고, 도 8의 메모리 셀 어레이(MCA)의 일 예일 수 있다. 일 실시예에 따르면, 논리 어드레스에 따라 제1 내지 제z 논리 블록들(LBN1 내지 LBNz)에 대해 주기적으로 백그라운드 리드 동작을 수행할 수 있다. 이러한 백그라운드 리드 동작은 "BMS(Background Media Scan)"라고 지칭할 수 있다.
스토리지 컨트롤러(110)는 논리 어드레스에 따라 제1 내지 제z 논리 블록들(LBN1 내지 LBNz)에 대해 주기적으로 백그라운드 리드 동작을 수행할 수 있다. 일 실시예에서, 백그라운드 리드 동작의 수행 순서는 열화 정보 등에 의해 변경될 수 있다. 예를 들어, 제1 논리 블록(LBN1)에 포함된 모든 논리 페이지들(LPN1, LPN2)에 대해 백그라운드 리드 동작을 순차적으로 수행하고, 이어서, 제2 논리 블록(LBN2)에 포함된 모든 논리 페이지들에 대해 백그라운드 리드 동작을 순차적으로 수행할 수 있다. 일 실시예예서, 스토리지 장치(100)는 패트롤 리드 동작 및 BMS 동작을 선택적으로 수행할 수 있다.
도 20은 본 개시의 일 실시예에 따라, 히스토리 버퍼를 동적으로 제어하는 방법을 나타내는 흐름도이다.
도 20을 참조하면, 단계 S510에서, 스토리지 컨트롤러(110)는 호스트(200)로부터 수신한 리드 요청에 응답하여, 선택 메모리 블록에 대해 디폴트 리드 레벨을 이용하여 노멀 리드 동작을 수행한다. 단계 S520에서, 노멀 리드 동작이 실패하면, 스토리지 컨트롤러(110)는 수정된 리드 레벨을 이용하여 선택 메모리 블록에 대해 리드 리트라이 동작을 수행한다. 단계 S530에서, 스토리지 컨트롤러(110)는 노멀 리드 동작 또는 리드 리트라이 동작의 수행 결과에 따라 선택 메모리 블록의 신뢰성을 검출한다. 단계 S540에서, 스토리지 컨트롤러(110)는 메모리 블록들(BLKs) 중 적어도 하나에 할당되는 히스토리 리드 레벨 저장 영역의 개수를 동적으로 조정한다.
도 21은 본 개시의 일 실시예에 따라, 도 20의 히스토리 버퍼를 동적으로 제어하는 방법을 더욱 상세하게 나타내는 흐름도이다.
도 21을 참조하면, 본 실시예에 따른 방법은 호스트로부터 리드 요청이 수신된 경우에 스토리지 장치에서 호스트 리드 동작을 수행하는 방법이다. 예를 들어, 본 실시예에 따른 동작 방법은 도 1의 스토리지 장치(100)에서 시계열적으로 수행될 수 있다. 도 1 내지 도 14를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다.
단계 S610에서, 스토리지 컨트롤러(110)는 호스트(200)로부터 리드 요청 및 어드레스를 수신한다. 단계 S620에서, 스토리지 컨트롤러(110)는 히스토리 버퍼(HB)를 확인한다. 스토리지 컨트롤러(110)는 어드레스에 대응하는 히스토리 리드 레벨의 존재 여부를 판단하기 위해 히스토리 버퍼(HB)를 확인할 수 있다. 단계 S630에서, 스토리지 컨트롤러(110)는 히스토리 버퍼(HB)가 비어있는지 판단한다. 판단 결과, 히스토리 버퍼(HB)가 비어 있으면 단계 S640을 수행하고, 그렇지 않으면, 단계 S650을 수행한다.
단계 S640에서, 스토리지 컨트롤러(110)는 디폴트 리드 레벨을 이용하여 노멀 리드 동작을 수행한다. 단계 S650에서, 스토리지 컨트롤러(110)는 히스토리 리드 레벨을 이용하여 히스토리 리드 동작을 수행한다. 단계 S660에서, 스토리지 컨트롤러(110)는 노멀 리드 동작 또는 히스토리 리드 동작의 실패 여부를 판단한다. 판단 결과, 노멀 리드 동작 또는 히스토리 리드 동작이 실패하면 단계 S670을 수행하고, 그렇지 않으면 단계 S680을 수행할 수 있다. 단계 S670에서, 스토리지 컨트롤러(110)는 리드 리트라이 동작을 수행한다. 구체적으로, 스토리지 컨트롤러(110)는 디폴트 리드 레벨과 다른 수정된 리드 레벨 또는 히스토리 리드 레벨과 다른 수정된 리드 레벨을 이용하여 해당 메모리 블록에 대해 리드 리트라이 동작을 수행할 수 있다. 단계 S680에서, 스토리지 컨트롤러(110)는 히스토리 버퍼(HB)를 동적으로 조정하고, 히스토리 버퍼(HB)를 업데이트 한다. 스토리지 장치(100)는 수정된 리드 레벨을 해당 메모리 블록에 대한 히스토리 리드 레벨로서 저장함으로써 히스토리 버퍼(HB)를 업데이트할 수 있다.
도 22는 본 개시의 일 실시예에 따라, 도 20의 방법에 따른 호스트(200), 스토리지 컨트롤러(110) 및 비휘발성 메모리(120) 사이의 동작을 나타내는 흐름도이다.
도 22를 참조하면, 단계 S710에서, 호스트(200)는 스토리지 컨트롤러(110)에 리드 요청 및 어드레스를 전송한다. 이때, 호스트(200)에서 전송하는 어드레스는 논리 어드레스이다. 단계 S715에서, 스토리지 컨트롤러(110)는 맵핑 테이블을 확인한다. 구체적으로, 스토리지 컨트롤러(110)는 수신한 논리 어드레스에 대응하는 물리 어드레스를 확인한다. 단계 S720에서, 스토리지 컨트롤러(110)는 히스토리 버퍼(HB)를 확인한다. 구체적으로, 스토리지 컨트롤러(110)는 확인된 물리 어드레스가 포함된 메모리 블록에 대응하는 히스토리 리드 레벨이 존재하는 여부를 판단하기 위하여 히스토리 버퍼(HB)를 확인한다.
단계 S725에서, 스토리지 컨트롤러(110)는 비휘발성 메모리(120)에 리드 커맨드를 전송한다. 단계 S730에서, 비휘발성 메모리(120)는 히스토리 리드 레벨을 이용하여 히스토리 리드 동작을 수행한다. 단계 S735에서, 비휘발성 메모리(120)는 데이터를 스토리지 컨트롤러(110)에 전송한다. 단계 S740에서, 스토리지 컨트롤러(110)는 히스토리 리드 동작의 실패 여부를 판단한다. 판단 결과, 히스토리 리드 동작이 실패한 경우, 단계 S750이 수행된다. 한편, 히스토리 리드 동작이 실패하지 않은 경우, 단계 S745, 스토리지 컨트롤러(110)에서 호스트(200)로 데이터를 전송한다.
단계 S750에서, 스토리지 컨트롤러(110)는 방어 코드를 실행한다. 구체적으로, 스토리지 컨트롤러(110)는 방어 코드를 실행함으로써 수정된 리드 레벨을 결정할 수 있다. 단계 S760에서, 스토리지 컨트롤러(110)는 리드 리트라이 커맨드를 발행한다. 단계 S765에서, 스토리지 컨트롤러(110)는 비휘발성 메모리(120)에 리드 리트라이 커맨드를 전송한다. 단계 S770에서, 비휘발성 메모리(120)는 수정된 리드 레벨을 이용하여 리드 리트라이 동작을 수행한다. 단계 S775에서, 비휘발성 메모리(120)는 스토리지 컨트롤러(110)에 데이터를 전송한다.
단계 S780에서, 스토리지 컨트롤러(110)는 리드 리트라이 동작의 실패 여부를 판단한다. 판단 결과, 리드 리트라이 동작이 실패하지 않은 경우 단계 S785이 수행된다. 한편, 리드 리트라이 동작이 실패한 경우 단계 S750 또는 단계 S760이 다시 수행될 수도 있다. 예를 들어, 이전 단계 S750과는 다른 방어 코드가 실행될 수도 있고, 이로써, 수정된 리드 레벨이 변경될 수 있다. 단계 S785에서, 스토리지 컨트롤러(110)는 호스트(200)에 데이터를 전송한다. 단계 S790에서, 스토리지 컨트롤러(110)는 수정된 리드 레벨을 리드 히스토리 테이블에 저장함으로써 히스토리 버퍼를 업데이트 한다. 일 실시예에서, 단계 S790이 먼저 수행되고, 이어서 단계 S785가 수행될 수도 있다. 일 실시예에서, 단계 S785와 단계 S790은 실질적으로 동시에 수행될 수도 있다. 일 실시예에서, 본 동작 방법은 호스트로부터 다음 리드 요청 및 다음 어드레스를 수신하는 단계, 및 단계 S790에서 업데이트된 히스토리 버퍼를 이용하여 다음 어드레스에 대한 호스트 리드 동작을 수행하는 단계를 더 포함할 수 있다.
도 23은 본 개시의 일 실시예에 따라, 히스토리 버퍼를 동적으로 제어하는 방법을 나타내는 흐름도이다.
도 23을 참조하면, 단계 S810에서, 스토리지 컨트롤러(110)는 메모리 블록들(BLKs)에 각각 대응하는 히스토리 리드 레벨 오프셋들을 기초로, 메모리 블록들(BLKs)의 신뢰성들을 검출한다. 단계 S820에서, 스토리지 컨트롤러(110)는 메모리 블록들(BLKs) 중 적어도 하나에 할당되는 히스토리 리드 레벨 저장 영역의 개수를 동적으로 조정한다.
일 실시예에서, 스토리지 컨트롤러(110)는 제1 기준 값 및 제2 기준 값에 따라 정의된 기준 범위를 기초로 메모리 블록들(BLKs)의 신뢰성들을 검출할 수 있고, 이때, 제1 기준 값은 제2 기준 값보다 작을 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 히스토리 버퍼(HB)에 저장된 히스토리 리드 레벨 오프셋이 제1 기준 값보다 작은 메모리 블록을 양호 블록으로 판단할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 히스토리 버퍼(HB)에 저장된 히스토리 리드 레벨 오프셋이 제1 기준 값과 제2 기준 값 사이인 메모리 블록을 미들 블록으로 판단할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 히스토리 버퍼(HB)에 저장된 히스토리 리드 레벨 오프셋이 제2 기준 값보다 큰 메모리 블록을 배드 블록으로 판단할 수 있다. 이와 같이, 스토리지 컨트롤러(110)는 히스토리 리드 레벨 오프셋이 클수록 산포 이동이 큰 것으로 보고, 메모리 블록의 열화가 심하여 해당 메모리 블록의 신뢰성이 상당히 낮은 것으로 판단할 수 있다.
일 실시예에서, 스토리지 컨트롤러(110)는 머신 러닝 모듈을 포함할 수 있고, 머신 러닝 모듈을 이용하여 메모리 블록들(BLKs)의 신뢰성들을 예측할 수 있다. 예를 들어, 머신 러닝 모듈은 히스토리 버퍼(HB)에 저장된 히스토리 리드 레벨 또는 히스토리 리드 레벨 오프셋을 기초로 메모리 블록들(BLKs) 중 적어도 하나의 배드 블록을 검출할 수 있다.
도 24는 본 개시의 일 실시예에 따른 스토리지 장치(20)를 나타내는 블록도이다.
도 24를 참조하면, 스토리지 장치(20)는 메모리 컨트롤러(400) 및 메모리 장치(500)를 포함할 수 있다. 스토리지 장치(20)는 복수의 채널들(CH1 내지 CHk)을 지원할 수 있고, 메모리 장치(500)와 메모리 컨트롤러(400)는 복수의 채널들(CH1 내지 CHk)을 통해 연결될 수 있다(k은 양의 정수). 메모리 컨트롤러(400)는 메모리 장치(500)의 전반적인 동작을 제어할 수 있다. 메모리 컨트롤러(400)는 채널들(CH1 내지 CHk)로 신호를 전송하여 채널들(CH1 내지 CHk)에 연결된 비휘발성 메모리 장치들(NVM1, NMV2, NVMk) 각각을 제어할 수 있다.
메모리 장치(500)는 복수의 비휘발성 메모리 장치들(NVM1, NVM2, NVMk)을 포함할 수 있다. 예를 들어, 복수의 비휘발성 메모리 장치들(NVM1, NVM2, NVMk) 중 적어도 하나는 도 1의 비휘발성 메모리(120)에 대응할 수 있다. 비휘발성 메모리 장치들(NVM1)은 제1 채널(CH1)에 연결되고, 비휘발성 메모리 장치들(NVM2)은 제2 채널(CH2)에 연결되며, 비휘발성 메모리 장치들(NVMk)은 제k 채널(CHk)에 연결될 수 있다. 예시적인 실시예에서, 비휘발성 메모리 장치들(NVM1, NVM2, NVMk) 각각은 메모리 컨트롤러(400)로부터의 개별적인 명령에 따라 동작할 수 있는 임의의 메모리 단위로 구현될 수 있다. 예를 들어, 비휘발성 메모리 장치들(NVM1, NVM2, NVMk) 각각은 칩 또는 다이로 구현될 수 있으나, 본 발명이 이에 한정되는 것은 아니다.
메모리 컨트롤러(400)는 복수의 채널들(CH1 내지 CHk)을 통해 메모리 장치(500)와 신호들을 송수신할 수 있다. 예를 들어, 메모리 컨트롤러(400)는 채널들(CH1 내지 CHk)을 통해 메모리 장치(500)로 커맨드들, 어드레스들, 및 데이터를 전송하거나, 메모리 장치(500)로부터 데이터를 수신할 수 있다. 메모리 컨트롤러(400)는 각각의 채널을 통해 해당 채널에 연결된 비휘발성 메모리 장치들(NVM1, NMV2, NVMk) 중 하나를 선택하고, 선택된 비휘발성 메모리 장치와 신호들을 송수신할 수 있다. 또한, 메모리 컨트롤러(400)는 서로 다른 채널들을 통해 메모리 장치(500)와 신호들을 병렬적으로 송수신할 수 있다. 예를 들어, 메모리 컨트롤러(400)는 제1 채널(CH1)을 통해 메모리 장치(500)로 커맨드를 전송하는 동안 제2 채널(CH2)을 통해 메모리 장치(500)로 커맨드를 전송할 수 있다.
메모리 컨트롤러(400)는 히스토리 버퍼(HB), 블록 신뢰성 검출기(BRD) 및 히스토리 버퍼 컨트롤러(HBC)를 포함할 수 있고, 히스토리 버퍼(HB)는 복수의 히스토리 리드 레벨 저장 영역들(S-AR)을 포함할 수 있다. 히스토리 버퍼(HB), 블록 신뢰성 검출기(BRD) 및 히스토리 버퍼 컨트롤러(HBC)은 도 1에 예시된 히스토리 버퍼(HB), 블록 신뢰성 검출기(BRD) 및 히스토리 버퍼 컨트롤러(HBC)에 각각 대응할 수 있고, 실질적으로 유사하게 구현될 수 있다. 이에 따라, 도 1 내지 도 23을 참조하여 상술된 실시예들은 본 실시예에 적용될 수 있다.
도 25는 본 발명의 일 실시예에 따른 스토리지 장치가 적용된 시스템을 예시하는 블록도이다. 도 25의 시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IoT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 25의 시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
도 25를 참조하면, 시스템(1000)은 메인 프로세서(main processor)(1100), 메모리(1200a, 1200b) 및 스토리지 장치(1300a, 1300b)를 포함할 수 있으며, 추가로 촬영 장치(image capturing device)(1410), 사용자 입력 장치(user input device)(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전력 공급 장치(power supplying device)(1470) 및 연결 인터페이스(connecting interface)(1480) 중 하나 이상을 포함할 수 있다.
메인 프로세서(1100)는 시스템(1000)의 전반적인 동작, 보다 구체적으로는 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다.
메인 프로세서(1100)는 하나 이상의 CPU 코어(1110)를 포함할 수 있으며, 메모리(1200a, 1200b) 및/또는 스토리지 장치(1300a, 1300b)를 제어하기 위한 컨트롤러(1120)를 더 포함할 수 있다. 실시예에 따라서는, 메인 프로세서(1100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator)(1130)를 더 포함할 수 있다. 이와 같은 가속기(1130)는 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(1100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.
메모리(1200a, 1200b)는 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다.
스토리지 장치(1300a, 1300b)는 전원 공급 여부와 관계 없이 데이터를 저장하는 비휘발성 저장 장치로서 기능할 수 있으며, 메모리(1200a, 1200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 장치(1300a, 1300b)는 스토리지 컨트롤러(1310a, 1310b)와, 스토리지 컨트롤러(1310a, 1310b)의 제어 하에 데이터를 저장하는 비휘발성 메모리(non-volatile memory, NVM)(1320a, 1320b)를 포함할 수 있다. 비휘발성 메모리(1320a, 1320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) V-NAND(Vertical NAND) 구조의 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다.
스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)와는 물리적으로 분리된 상태로 시스템(1000)에 포함될 수도 있고, 메인 프로세서(1100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(1300a, 1300b)는 SSD(solid state device) 혹은 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(1480)와 같은 인터페이스를 통해 시스템(1000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(1300a, 1300b)는 UFS(Universal Flash Storage), eMMC(embedded multi-media card) 혹은 NVMe(non-volatile memory express)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다. 사용자 입력 장치(1420)는 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keypad), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다. 센서(1430)는 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 센서 등일 수 있다. 통신 장치(1440)는 다양한 통신 규약에 따라 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.
디스플레이(1450) 및 스피커(1460)는 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다. 전력 공급 장치(1470)는 시스템(1000)에 내장된 배터리(도시 안함) 및/또는외부 전원으로부터 공급되는 전력을 적절히 변환하여 시스템(1000)의 각 구성 요소들에게 공급할 수 있다. 연결 인터페이스(1480)는 시스템(1000)과, 시스템(1000)에 연결되어 시스템(1000과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(1480)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe, IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC, UFS, eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 스토리지 장치로서,
    복수의 메모리 블록들을 포함하는 비휘발성 메모리; 및
    상기 복수의 메모리 블록들에 대응하는 복수의 히스토리 리드 레벨 저장 영역들을 포함하는 히스토리 버퍼를 포함하고, 상기 스토리지 장치의 런타임에 상기 복수의 메모리 블록들의 신뢰성들을 기초로 상기 복수의 메모리 블록들 중 적어도 하나에 할당되는 히스토리 리드 레벨 저장 영역의 개수를 동적으로 조정하도록 구성된 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는, 상기 복수의 메모리 블록들 중 신뢰성이 상대적으로 낮은 제1 메모리 블록에 할당되는 히스토리 리드 레벨 저장 영역의 개수를 증가시키는 것을 특징으로 하는 스토리지 장치.
  2. 제1항에 있어서,
    상기 복수의 메모리 블록들 중 적어도 하나는, N개의 스택들이 적층된 N-스택 구조를 갖고, N은 2 이상의 양의 정수인 것을 특징으로 하는 스토리지 장치.
  3. 제1항에 있어서,
    상기 히스토리 버퍼에 포함되는 히스토리 리드 레벨 저장 영역들의 개수는 고정적이고,
    각 메모리 블록에 할당되는 히스토리 리드 레벨 저장 영역의 개수는 가변적인 것을 특징으로 하는 스토리지 장치.
  4. 제1항에 있어서, 상기 스토리지 컨트롤러는,
    상기 복수의 메모리 블록들 중 신뢰성이 상대적으로 높은 제2 메모리 블록에 할당되는 히스토리 리드 레벨 저장 영역의 개수를 감소시키는 것을 특징으로 하는 스토리지 장치.
  5. 제4항에 있어서, 상기 스토리지 컨트롤러는,
    상기 제2 메모리 블록에 할당되었던 제1 히스토리 리드 레벨 저장 영역을, 상기 제1 메모리 블록에 할당하는 것을 특징으로 하는 스토리지 장치.
  6. 제4항에 있어서, 상기 스토리지 컨트롤러는,
    디폴트 리드 레벨을 이용하여 상기 제2 메모리 블록에 대한 리드 동작을 수행하는 것을 특징으로 하는 스토리지 장치.
  7. 제1항에 있어서, 상기 스토리지 컨트롤러는,
    상기 복수의 메모리 블록들의 상기 신뢰성들을 검출하도록 구성된 블록 신뢰성 검출기; 및
    검출된 상기 신뢰성들을 기초로 상기 히스토리 버퍼를 동적으로 제어하도록 구성된 히스토리 버퍼 컨트롤러를 더 포함하는 것을 특징으로 하는 스토리지 장치.
  8. 제1항에 있어서, 상기 스토리지 컨트롤러는,
    호스트로부터 리드 요청의 수신 없이, 상기 복수의 메모리 블록들에 대해 디폴트 리드 레벨을 이용하여 백그라운드 리드 동작을 수행하고,
    상기 백그라운드 리드 동작의 수행 결과에 따라 상기 복수의 메모리 블록들의 상기 신뢰성들을 검출하는 것을 특징으로 하는 스토리지 장치.
  9. 제8항에 있어서, 상기 스토리지 컨트롤러는,
    상기 복수의 메모리 블록들 중 상기 백그라운드 리드 동작이 실패한 제3 메모리 블록의 신뢰성이 상대적으로 낮은 것으로 판단하고,
    상기 제3 메모리 블록에 할당되는 히스토리 리드 레벨 저장 영역의 개수를 증가시키는 것을 특징으로 하는 스토리지 장치.
  10. 제9항에 있어서, 상기 스토리지 컨트롤러는,
    상기 제3 메모리 블록에 대해, 수정된 리드 레벨을 이용하여 리드 리트라이 동작을 수행하며,
    상기 리드 리트라이 동작이 성공하면, 상기 수정된 리드 레벨을 상기 제3 메모리 블록에 대한 히스토리 리드 레벨로서 상기 히스토리 버퍼에 저장하는 것을 특징으로 하는 스토리지 장치.
  11. 제1항에 있어서, 상기 스토리지 컨트롤러는,
    호스트로부터 수신한 리드 요청에 응답하여, 상기 복수의 메모리 블록들 중 선택 메모리 블록에 대해 디폴트 리드 레벨을 이용하여 노멀 리드 동작을 수행하고,
    상기 노멀 리드 동작이 실패하면, 수정된 리드 레벨을 이용하여 상기 선택 메모리 블록에 대해 리드 리트라이 동작을 수행하며,
    상기 노멀 리드 동작 또는 상기 리드 리트라이 동작의 수행 결과에 따라 상기 선택 메모리 블록의 신뢰성을 검출하는 것을 특징으로 하는 스토리지 장치.
  12. 제11항에 있어서, 상기 스토리지 컨트롤러는,
    상기 선택 메모리 블록에 대해 상기 노멀 리드 동작이 실패하면, 상기 선택 메모리 블록의 신뢰성이 상대적으로 낮은 것으로 판단하고,
    상기 선택 메모리 블록에 할당되는 히스토리 리드 레벨 저장 영역의 개수를 증가시키는 것을 특징으로 하는 스토리지 장치.
  13. 제1항에 있어서, 상기 스토리지 컨트롤러는,
    상기 복수의 메모리 블록들에 각각 대응하는 복수의 히스토리 리드 레벨 오프셋들을 기초로, 상기 복수의 메모리 블록들의 신뢰성들을 검출하도록 구성된 것을 특징으로 하는 스토리지 장치.
  14. 제13항에 있어서, 상기 스토리지 컨트롤러는,
    상기 복수의 메모리 블록들 중 임계 값 이하의 히스토리 리드 레벨 오프셋을 갖는 메모리 블록은 신뢰성이 상대적으로 높은 메모리 블록으로 판단하고,
    상기 복수의 메모리 블록들 중 상기 임계 값 보다 큰 히스토리 리드 레벨 오프셋을 갖는 메모리 블록은 신뢰성이 상대적으로 낮은 메모리 블록으로 판단하는 것을 특징으로 하는 스토리지 장치.
  15. 제13항에 있어서, 상기 스토리지 컨트롤러는,
    머신 러닝 모듈을 이용하여, 상기 복수의 히스토리 리드 레벨 오프셋들로부터 상기 복수의 메모리 블록들의 신뢰성들을 예측하는 것을 특징으로 하는 스토리지 장치.
  16. 히스토리 버퍼를 포함하는 스토리지 컨트롤러의 동작 방법으로서,
    상기 히스토리 버퍼에 포함되는 복수의 히스토리 리드 레벨 저장 영역들을, 비휘발성 메모리에 포함되는 복수의 메모리 블록들에 각각 할당하는 단계; 및
    상기 복수의 메모리 블록들의 신뢰성들을 기초로 상기 복수의 메모리 블록들 중 적어도 하나에 할당되는 히스토리 리드 레벨 저장 영역의 개수를 동적으로 조정하는 히스토리 버퍼 제어 동작을 수행하는 단계를 포함하고,
    상기 히스토리 버퍼 제어 동작을 수행하는 단계는,
    상기 복수의 메모리 블록들 중 제1 메모리 블록의 신뢰성이 제1 임계 값보다 크면, 상기 제1 메모리 블록에 할당되었던 히스토리 리드 레벨 저장 영역을 회수하는 단계; 및
    상기 제1 메모리 블록의 상기 신뢰성이 상기 제1 임계 값보다 작은 제2 임계 이하이면, 상기 제1 메모리 블록에 히스토리 리드 레벨 저장 영역을 추가로 할당하는 단계를 포함하는 방법.
  17. 제16항에 있어서,
    상기 히스토리 버퍼 제어 동작을 수행하는 단계는,
    상기 제1 메모리 블록의 상기 신뢰성이 상기 제2 임계 값보다 크고 상기 제1 임계 값 이하이면, 상기 히스토리 버퍼 제어 동작을 종료하는 단계를 더 포함하는 방법.
  18. 제16항에 있어서, 상기 히스토리 버퍼 제어 동작을 수행하는 단계는,
    호스트로부터 리드 요청의 수신 없이, 상기 복수의 메모리 블록들에 대해 디폴트 리드 레벨을 이용하여 백그라운드 리드 동작을 수행하는 단계;
    상기 백그라운드 리드 동작의 수행 결과에 따라 상기 복수의 메모리 블록들의 상기 신뢰성들을 검출하는 단계; 및
    상기 신뢰성들을 기초로 상기 복수의 메모리 블록들 중 적어도 하나에 할당되는 히스토리 리드 레벨 저장 영역의 개수를 동적으로 조정하는 단계를 포함하는 것을 특징으로 하는 방법.
  19. 제16항에 있어서, 상기 히스토리 버퍼 제어 동작을 수행하는 단계는,
    호스트로부터 수신한 리드 요청에 응답하여, 상기 복수의 메모리 블록들 중 선택 메모리 블록에 대해 디폴트 리드 레벨을 이용하여 노멀 리드 동작을 수행하는 단계;
    상기 노멀 리드 동작이 실패하면, 수정된 리드 레벨을 이용하여 상기 선택 메모리 블록에 대해 리드 리트라이 동작을 수행하는 단계;
    상기 노멀 리드 동작 또는 상기 리드 리트라이 동작의 수행 결과에 따라 상기 선택 메모리 블록의 신뢰성을 검출하는 단계; 및
    상기 신뢰성들을 기초로 상기 복수의 메모리 블록들 중 적어도 하나에 할당되는 히스토리 리드 레벨 저장 영역의 개수를 동적으로 조정하는 단계를 포함하는 것을 특징으로 하는 방법.
  20. 제16항에 있어서, 상기 히스토리 버퍼 제어 동작을 수행하는 단계는,
    상기 복수의 메모리 블록들에 각각 대응하는 복수의 히스토리 리드 레벨 오프셋들을 기초로, 상기 복수의 메모리 블록들의 신뢰성들을 검출하는 단계; 및
    상기 신뢰성들을 기초로 상기 복수의 메모리 블록들 중 적어도 하나에 할당되는 히스토리 리드 레벨 저장 영역의 개수를 동적으로 조정하는 단계를 포함하는 것을 특징으로 하는 방법.
KR1020210115702A 2021-08-31 2021-08-31 스토리지 장치, 스토리지 컨트롤러 및 스토리지 컨트롤러의 동작 방법 KR102519664B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210115702A KR102519664B1 (ko) 2021-08-31 2021-08-31 스토리지 장치, 스토리지 컨트롤러 및 스토리지 컨트롤러의 동작 방법
US17/742,030 US11914892B2 (en) 2021-08-31 2022-05-11 Storage device adjusting history read level storage areas based on reliabilities of memory blocks, storage controller, and operating method of storage controller
CN202210546470.2A CN115731991A (zh) 2021-08-31 2022-05-18 存储装置、存储控制器以及存储控制器的操作方法
EP22181270.4A EP4141874A1 (en) 2021-08-31 2022-06-27 Storage device, storage controller, and operating method of storage controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210115702A KR102519664B1 (ko) 2021-08-31 2021-08-31 스토리지 장치, 스토리지 컨트롤러 및 스토리지 컨트롤러의 동작 방법

Publications (2)

Publication Number Publication Date
KR20230032647A true KR20230032647A (ko) 2023-03-07
KR102519664B1 KR102519664B1 (ko) 2023-04-10

Family

ID=82321627

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210115702A KR102519664B1 (ko) 2021-08-31 2021-08-31 스토리지 장치, 스토리지 컨트롤러 및 스토리지 컨트롤러의 동작 방법

Country Status (4)

Country Link
US (1) US11914892B2 (ko)
EP (1) EP4141874A1 (ko)
KR (1) KR102519664B1 (ko)
CN (1) CN115731991A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210121650A (ko) * 2020-03-31 2021-10-08 에스케이하이닉스 주식회사 반도체 메모리 장치, 컨트롤러 및 이들을 포함하는 메모리 시스템의 동작 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170066084A (ko) * 2015-12-04 2017-06-14 삼성전자주식회사 비휘발성 메모리 장치, 메모리 시스템, 비휘발성 메모리 장치의 동작 방법 및 메모리 시스템의 동작 방법
KR20210001501A (ko) * 2019-06-28 2021-01-06 에스케이하이닉스 주식회사 데이터 저장 장치 및 이를 위한 컨트롤러와 그 동작 방법
KR20210010633A (ko) * 2018-08-13 2021-01-27 엘지전자 주식회사 히스토리 기반 움직임 벡터에 기반한 인터 예측 방법 및 그 장치
KR20210068894A (ko) * 2019-12-02 2021-06-10 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법
KR20210072685A (ko) * 2019-12-09 2021-06-17 인텔 코포레이션 마스크 누적을 통해 계층적 깊이 버퍼 컬링 효율을 향상시키는 기법

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
US20120008414A1 (en) 2010-07-06 2012-01-12 Michael Katz Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
US8923066B1 (en) 2012-04-09 2014-12-30 Sk Hynix Memory Solutions Inc. Storage of read thresholds for NAND flash storage using linear approximation
KR20140118555A (ko) 2013-03-29 2014-10-08 삼성전자주식회사 메모리 시스템 및 그것의 액세스 성능 조절 방법
KR102244618B1 (ko) 2014-02-21 2021-04-26 삼성전자 주식회사 플래시 메모리 시스템 및 플래시 메모리 시스템의 제어 방법
KR102215741B1 (ko) 2014-06-23 2021-02-17 삼성전자주식회사 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
US9720754B2 (en) 2014-11-20 2017-08-01 Western Digital Technologies, Inc. Read level grouping for increased flash performance
KR102347184B1 (ko) 2017-05-23 2022-01-04 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US10289341B2 (en) 2017-06-30 2019-05-14 Western Digital Technologies, Inc. Operating parameter offsets in solid state memory devices
JP2019168853A (ja) 2018-03-22 2019-10-03 東芝メモリ株式会社 メモリシステム、その制御方法及びプログラム
US20200027503A1 (en) 2019-09-27 2020-01-23 Intel Corporation Method and apparatus to improve read latency of a multi-threshold level cell block-based non-volatile memory
CN113076218B (zh) 2020-07-03 2022-03-25 北京忆芯科技有限公司 Nvm芯片读数据错误快速处理方法及其控制器

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170066084A (ko) * 2015-12-04 2017-06-14 삼성전자주식회사 비휘발성 메모리 장치, 메모리 시스템, 비휘발성 메모리 장치의 동작 방법 및 메모리 시스템의 동작 방법
KR20210010633A (ko) * 2018-08-13 2021-01-27 엘지전자 주식회사 히스토리 기반 움직임 벡터에 기반한 인터 예측 방법 및 그 장치
KR20210001501A (ko) * 2019-06-28 2021-01-06 에스케이하이닉스 주식회사 데이터 저장 장치 및 이를 위한 컨트롤러와 그 동작 방법
KR20210068894A (ko) * 2019-12-02 2021-06-10 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법
KR20210072685A (ko) * 2019-12-09 2021-06-17 인텔 코포레이션 마스크 누적을 통해 계층적 깊이 버퍼 컬링 효율을 향상시키는 기법

Also Published As

Publication number Publication date
KR102519664B1 (ko) 2023-04-10
US11914892B2 (en) 2024-02-27
EP4141874A1 (en) 2023-03-01
US20230066982A1 (en) 2023-03-02
CN115731991A (zh) 2023-03-03

Similar Documents

Publication Publication Date Title
US10902924B2 (en) Memory system varying pass voltage based on erase count of target memory block and operating method thereof
US11482263B2 (en) Non-volatile memory device, controller for controlling the same, storage device including the same, and reading method thereof
CN112435703A (zh) 存储装置及其操作方法
US11682467B2 (en) Nonvolatile memory device, controller for controlling the same, storage device including the same, and reading method of the same
US20210240627A1 (en) Data storage appratus and operating method thereof
CN112099730A (zh) 存储器件及其访问方法
US11017865B2 (en) Memory controller determining optimal read voltage and operating method thereof
US12045476B2 (en) Storage devices, storage controllers, and operating methods of storage controllers
KR102519664B1 (ko) 스토리지 장치, 스토리지 컨트롤러 및 스토리지 컨트롤러의 동작 방법
CN112349315B (zh) 存储器系统、存储器控制器和操作方法
US11868647B2 (en) Nonvolatile memory device, with valley search for threshold voltage, memory controller, and reading method of storage device including the same
US12001709B2 (en) Storage devices and operating methods of storage controllers
US11726871B2 (en) Storage controller for selecting a gear level of a storage device and storage system including the same
US11586379B2 (en) Memory system and method of operating the same
CN115705148A (zh) 存储器系统及其操作方法
US11923014B2 (en) Memory system compensating for performance deterioration of a memory device
US11782644B2 (en) Memory system and method of operating the same
US12067258B2 (en) Memory device and program speed control method thereof
CN118484131A (zh) 确定存储器单元类型的存储装置及其操作方法
CN113806255A (zh) 存储器系统、存储器控制器以及存储器系统的操作方法

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant