KR20210068894A - 스토리지 장치 및 상기 스토리지 장치의 동작 방법 - Google Patents
스토리지 장치 및 상기 스토리지 장치의 동작 방법 Download PDFInfo
- Publication number
- KR20210068894A KR20210068894A KR1020190158459A KR20190158459A KR20210068894A KR 20210068894 A KR20210068894 A KR 20210068894A KR 1020190158459 A KR1020190158459 A KR 1020190158459A KR 20190158459 A KR20190158459 A KR 20190158459A KR 20210068894 A KR20210068894 A KR 20210068894A
- Authority
- KR
- South Korea
- Prior art keywords
- read
- block
- history
- read level
- memory
- Prior art date
Links
- 238000003860 storage Methods 0.000 title claims abstract description 143
- 238000000034 method Methods 0.000 title claims description 42
- 230000015654 memory Effects 0.000 claims abstract description 182
- 230000004044 response Effects 0.000 claims description 7
- 230000002950 deficient Effects 0.000 claims description 3
- 238000011017 operating method Methods 0.000 abstract description 6
- 230000015556 catabolic process Effects 0.000 description 20
- 238000006731 degradation reaction Methods 0.000 description 20
- 238000013507 mapping Methods 0.000 description 19
- 230000006866 deterioration Effects 0.000 description 18
- 238000009826 distribution Methods 0.000 description 16
- 230000007123 defense Effects 0.000 description 13
- 230000008859 change Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 238000004519 manufacturing process Methods 0.000 description 8
- 230000014759 maintenance of location Effects 0.000 description 6
- 101100244641 Paramecium tetraurelia Ppn3 gene Proteins 0.000 description 5
- 101100058970 Arabidopsis thaliana CALS11 gene Proteins 0.000 description 4
- 101100058961 Arabidopsis thaliana CALS2 gene Proteins 0.000 description 4
- 101100049574 Human herpesvirus 6A (strain Uganda-1102) U5 gene Proteins 0.000 description 4
- 101100287040 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ARG82 gene Proteins 0.000 description 4
- 101100341076 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) IPK1 gene Proteins 0.000 description 4
- 238000012937 correction Methods 0.000 description 4
- 239000006185 dispersion Substances 0.000 description 4
- 101150064834 ssl1 gene Proteins 0.000 description 4
- 101100058964 Arabidopsis thaliana CALS5 gene Proteins 0.000 description 3
- 101100537309 Arabidopsis thaliana TKPR1 gene Proteins 0.000 description 3
- 101150100920 KTI12 gene Proteins 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 101150062870 ssl3 gene Proteins 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 101000641216 Aquareovirus G (isolate American grass carp/USA/PB01-155/-) Non-structural protein 4 Proteins 0.000 description 2
- 101000927946 Homo sapiens LisH domain-containing protein ARMC9 Proteins 0.000 description 2
- 102100036882 LisH domain-containing protein ARMC9 Human genes 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 101001043817 Homo sapiens Interleukin-31 receptor subunit alpha Proteins 0.000 description 1
- 102100040066 Interleukin-27 receptor subunit alpha Human genes 0.000 description 1
- 102100021594 Interleukin-31 receptor subunit alpha Human genes 0.000 description 1
- 108091007047 SCF complex Proteins 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
- G11C16/3495—Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/021—Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/028—Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/72—Masking faults in memories by using spares or by reconfiguring with optimized replacement algorithms
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/76—Masking faults in memories by using spares or by reconfiguring using address translation or modifications
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)
- Microelectronics & Electronic Packaging (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
Abstract
본 개시의 예시적 실시예에 따른 스토리지 장치의 동작 방법은, 상기 비휘발성 메모리에 대한 프로그램 및 소거 횟수를 상기 비휘발성 메모리의 복수의 블록을 포함하는 슈퍼 블록 단위로 메타 데이터로서 저장하는 단계, 제1 리드 레벨을 기초로 제1 슈퍼 블록에 포함되는 제1 블록에 대하여 리드를 수행하는 단계, 상기 제1 블록에 대한 리드 동작이 성공하면, 상기 제1 리드 레벨을 상기 제1 슈퍼 블록의 히스토리 리드 레벨로서 히스토리 버퍼에 저장하는 단계, 호스트로부터 상기 제1 슈퍼 블록의 제2 블록에 대한 리드 요청 및 어드레스를 수신하는 단계, 및 상기 히스토리 버퍼에 저장된 상기 히스토리 리드 레벨을 기초로 상기 제2 블록에 대한 리드를 수행하는 단계를 포함할 수 있다.
Description
본 개시의 기술적 사상은 메모리 장치에 관한 것으로서, 더욱 상세하게는, 비휘발성 메모리를 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법에 관한 것이다.
비휘발성 메모리로서 플래시 메모리는 전원이 차단되어도 저장하고 있는 데이터를 유지할 수 있다. 최근 SSD(Solid State Drive) 및 메모리 카드 등의 플래시 메모리를 포함하는 스토리지 장치가 널리 사용되고 있다. 플래시 메모리는 메모리 셀들의 문턱 전압을 변화시킴으로써 데이터를 저장하고, 미리 정해진 리드 레벨을 이용하여 데이터를 리드한다. 그러나, 메모리 셀들의 열화에 의해 메모리 셀들의 문턱 전압이 변경될 수 있고, 이에 따라, 리드 오류가 발생할 수 있다.
본 개시의 기술적 사상은 리드 리트라이 동작의 횟수 및 히스토리 버퍼의 용량을 감소시키고 성능 저하를 예방할 수 있는 스토리지 장치 및 상기 스토리지 장치의 동작 방법을 제공한다.
본 개시의 기술적 사상에 따른 스토리지 장치의 동작 방법은, 상기 비휘발성 메모리에 대한 프로그램 및 소거 횟수를 상기 비휘발성 메모리의 복수의 블록을 포함하는 슈퍼 블록 단위로 메타 데이터로서 저장하는 단계, 제1 리드 레벨을 기초로 제1 슈퍼 블록에 포함되는 제1 블록에 대하여 리드를 수행하는 단계, 상기 제1 블록에 대한 리드 동작이 성공하면, 상기 제1 리드 레벨을 상기 제1 슈퍼 블록의 히스토리 리드 레벨로서 히스토리 버퍼에 저장하는 단계, 호스트로부터 상기 제1 슈퍼 블록의 제2 블록에 대한 리드 요청 및 어드레스를 수신하는 단계, 및 상기 히스토리 버퍼에 저장된 상기 히스토리 리드 레벨을 기초로 상기 제2 블록에 대한 리드를 수행하는 단계를 포함할 수 있다.
본 개시의 기술적 사상에 따르면, 비휘발성 메모리의 열화 관리 단위에 해당하는 메모리 그룹 단위로 히스토리 버퍼를 관리함으로써, 리드 리트라이 횟수가 감소되고 스토리지 장치의 성능이 향상될 수 있으며, 히스토리 버퍼의 용량이 감소될 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 2a 및 도 2b는 본 개시의 예시적 실시예에 따른, 도 1의 비휘발성 메모리의 블록의 일 예를 나타내는 회로도이다.
도 3a 및 도 3b는 본 개시의 예시적 실시예에 따른, 도 1의 비휘발성 메모리에서 슈퍼 블록의 그룹핑을 나타내는 블록도이다.
도 4a 및 도 4b는 본 개시의 예시적 실시예에 따른 메타데이터 버퍼에 저장되는 메타데이터 테이블의 예들을 나타낸다.
도 5는 비휘발성 메모리에 포함된 메모리 셀들의 열화에 따른 산포 변화의 일 예를 나타낸다.
도 6a, 도 6b 및 도 6c는 본 개시의 예시적 실시예에 따라, 도 5의 산포 변화에 대응하는 리드 히스토리 테이블의 구현 예들을 나타낸다.
도 7은 본 개시의 예시적 실시예에 따라, 도 1의 컨트롤러의 일 예를 나타내는 블록도이다.
도 8a는 본 개시의 예시적 실시예에 따른 어드레스 맵핑 테이블을 나타내고, 도 8b는 본 개시의 예시적 실시예에 따른 슈퍼 블록 맵핑 테이블을 나타낸다.
도 9a는 본 개시의 예시적 실시예에 따른 비휘발성 메모리의 디바이스 오프셋을 나타내고, 도 9b는 본 개시의 예시적 실시예에 따른 블록 오프셋을 나타낸다.
도 10은 본 개시의 예시적 실시예에 따른 스토리지 장치의 동작 방법을 개략적으로 나타내는 흐름도이다.
도 11은 도 10의 스토리지 장치의 동작 방법을 보다 상세하게 나타내는 흐름도이다.
도 12는 본 개시의 예시적 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 13은 본 개시의 예시적 실시예에 따른 스토리지 장치(100)의 동작 방법을 나타내는 흐름도이다.
도 14a 및 도 14b는 본 개시의 예시적 실시예에 따른 스토리지 장치의 컨트롤러 및 비휘발성 메모리의 동작을 나타낸다.
도 15는 본 개시의 예시적 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 16은 본 개시의 예시적 실시예에 따른 스토리지 장치의 히스토리 버퍼 업데이트 방법을 나타내는 흐름도이다.
도 17은 본 개시의 예시적 실시예에 따른 스토리지 장치의 슈퍼 블록 그룹핑 방법의 일 예를 나타내는 흐름도이다.
도 18은 본 개시의 예시적 실시예에 따른 스토리지 장치의 슈퍼 그룹 재그룹핑 방법을 나타내는 흐름도이다.
도 19a 및 도 19b는 도 18의 재그룹핑의 구현예들을 나타낸다.
도 20은 본 개시의 예시적 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 21은 도 20의 동작 방법을 예시적으로 설명한다.
도 22는 본 개시의 예시적 실시예에 따른 SSD 및 이를 포함하는 SSD 시스템을 나타내는 블록도이다.
도 2a 및 도 2b는 본 개시의 예시적 실시예에 따른, 도 1의 비휘발성 메모리의 블록의 일 예를 나타내는 회로도이다.
도 3a 및 도 3b는 본 개시의 예시적 실시예에 따른, 도 1의 비휘발성 메모리에서 슈퍼 블록의 그룹핑을 나타내는 블록도이다.
도 4a 및 도 4b는 본 개시의 예시적 실시예에 따른 메타데이터 버퍼에 저장되는 메타데이터 테이블의 예들을 나타낸다.
도 5는 비휘발성 메모리에 포함된 메모리 셀들의 열화에 따른 산포 변화의 일 예를 나타낸다.
도 6a, 도 6b 및 도 6c는 본 개시의 예시적 실시예에 따라, 도 5의 산포 변화에 대응하는 리드 히스토리 테이블의 구현 예들을 나타낸다.
도 7은 본 개시의 예시적 실시예에 따라, 도 1의 컨트롤러의 일 예를 나타내는 블록도이다.
도 8a는 본 개시의 예시적 실시예에 따른 어드레스 맵핑 테이블을 나타내고, 도 8b는 본 개시의 예시적 실시예에 따른 슈퍼 블록 맵핑 테이블을 나타낸다.
도 9a는 본 개시의 예시적 실시예에 따른 비휘발성 메모리의 디바이스 오프셋을 나타내고, 도 9b는 본 개시의 예시적 실시예에 따른 블록 오프셋을 나타낸다.
도 10은 본 개시의 예시적 실시예에 따른 스토리지 장치의 동작 방법을 개략적으로 나타내는 흐름도이다.
도 11은 도 10의 스토리지 장치의 동작 방법을 보다 상세하게 나타내는 흐름도이다.
도 12는 본 개시의 예시적 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 13은 본 개시의 예시적 실시예에 따른 스토리지 장치(100)의 동작 방법을 나타내는 흐름도이다.
도 14a 및 도 14b는 본 개시의 예시적 실시예에 따른 스토리지 장치의 컨트롤러 및 비휘발성 메모리의 동작을 나타낸다.
도 15는 본 개시의 예시적 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 16은 본 개시의 예시적 실시예에 따른 스토리지 장치의 히스토리 버퍼 업데이트 방법을 나타내는 흐름도이다.
도 17은 본 개시의 예시적 실시예에 따른 스토리지 장치의 슈퍼 블록 그룹핑 방법의 일 예를 나타내는 흐름도이다.
도 18은 본 개시의 예시적 실시예에 따른 스토리지 장치의 슈퍼 그룹 재그룹핑 방법을 나타내는 흐름도이다.
도 19a 및 도 19b는 도 18의 재그룹핑의 구현예들을 나타낸다.
도 20은 본 개시의 예시적 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 21은 도 20의 동작 방법을 예시적으로 설명한다.
도 22는 본 개시의 예시적 실시예에 따른 SSD 및 이를 포함하는 SSD 시스템을 나타내는 블록도이다.
도 1은 본 개시의 예시적 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 1을 참조하면, 스토리지 시스템(10)은 스토리지 장치(100) 및 호스트(200)를 포함하고, 스토리지 장치(100)는 컨트롤러(110) 및 비휘발성 메모리(Non Volatile Memory, NVM)(120)를 포함할 수 있다. 호스트(200)는 다양한 인터페이스를 통하여 스토리지 장치(100)와 통신할 수 있고, 리드 요청(read request) 및 기입 요청 등을 스토리지 장치(100)에 전달할 수 있다. 일 실시예에서, 호스트(200)는 AP(Application Processor) 또는 SoC(System-On-a-Chip, SoC)로 구현될 수 있다.
비휘발성 메모리(120)는 복수의 메모리 블록(BLK)을 포함할 수 있으며, 복수의 메모리 블록(BLK)은 복수의 슈퍼 블록(SB)으로 그룹핑될 수 있다. 메모리 블록(BLK)은 물리 블록을 의미하며, 이하, 메모리 블록(BLK)은 블록 또는 물리 블록으로 지칭될 수 있다. 슈퍼 블록(SB)은 컨트롤러(110)가 비휘발성 메모리(120)를 관리하기 위한 논리적인 메모리 영역의 단위일 수 있으며, 복수의 슈퍼 블록(SB)각각에는 복수의 블록(BLK)이 포함될 수 있다.
블록(BLK)은 복수의 메모리 셀이 2차원 또는 3차원 어레이 구조를 가지는 메모리 셀 어레이로 구현될 수 있으며, 복수의 메모리 셀은 1 비트로 프로그램되는 싱글 레벨 셀 또는 2 비트 이상으로 프로그램되는 멀티 레벨 셀, 트리플 레벨 셀 또는 쿼드러플 레벨 셀 등을 포함할 수 있다. 메모리 셀은 낸드(NAND) 플래쉬 메모리 셀일 수 있다. 그러나, 이에 한정되는 것은 아니며, 메모리 셀은 ReRAM(resistive RAM), PRAM(phase change RAM), MRAM(magnetic RAM)과 같은 저항형 메모리 셀들일 수 있다.
블록(BLK)은 복수의 페이지를 포함할 수 있다. 동일한 워드 라인에 연결된 메모리 셀들이 페이지를 구성할 수 있다. 예를 들어, 블록(BLK)은 소거의 단위이고, 페이지는 프로그램 및 리드의 단위일 수 있다.
컨트롤러(110)(또는 스토리지 컨트롤러라고 함)는 스토리지 장치(100)의 전반적인 동작을 제어할 수 있으며, 호스트(200)로부터의 리드 요청에 응답하여 비휘발성 메모리(120)에 저장된 데이터(DATA)를 독출하거나, 또는 호스트(200)로부터의 기입 요청에 응답하여 비휘발성 메모리(120)에 데이터(DATA)를 프로그램하도록 비휘발성 메모리(120)를 제어할 수 있다. 또한, 컨트롤러(110)는 호스트(200)의 요청과는 무관하게, 스토리지 장치(100)의 내부 관리 동작 또는 백그라운드 동작을 수행하기 위하여 비휘발성 메모리(120)를 제어할 수 있다.
본 실시예에서, 컨트롤러(110)는 메타데이터 버퍼(MB) 및 히스토리 버퍼(HB)를 포함할 수 있으며, 컨트롤러(110)는 소정의 메모리 그룹, 예컨대 슈퍼 블록(SB) 단위로 메타데이터 버퍼(MB) 및 히스토리 버퍼(HB)를 관리할 수 있다. 이때, 컨트롤러(110)는 복수의 블록(BLK)을 블록(BLK)이 구비되는 메모리 디바이스 내의 위치를 기초로 복수의 슈퍼 블록(SB)으로 그룹핑하거나, 또는 복수의 블록(BLK)의 전기적 특성(예컨대, 동일한 테스트 프로그램 전압 인가 시의 문턱 전압 산포 특성)을 기초로 복수의 슈퍼 블록(SB)으로 그룹핑할 수 있다.
메타데이터 버퍼(MB)에는 다양한 종류의 메타데이터가 저장될 수 있다. 여기서 메타데이터는 비휘발성 메모리(120)에 저장되는 사용자 데이터 또는 비휘발성 메모리(120)를 관리하기 위하여 컨트롤러(110)에서 생성되는 데이터이다. 예를 들어, 메타데이터는 호스트(200)의 논리 어드레스를 비휘발성 메모리(120)의 물리 어드레스로 변환시키는데 이용되는 맵핑(mapping) 정보를 포함할 수 있으며, 또는 웨어 레벨링, 가비지 콜렉션 등과 같이 비휘발성 메모리(120)의 메모리 공간을 관리하기 위한 정보, 예컨대, 프로그램 및 소거 싸이클(P/E cycle) (또는 프로그램 및 소거 횟수라고 함), 열화도 정보 등을 포함할 수 있다. 메타데이터는 스토리지 장치(100)가 파워-오프된 후, 다시 파워-온 될 경우 계속하여 이용될 수 있는 바, 스토리지 장치(100)의 런타임 중에 또는 스토리지 장치(100)의 파워가 오프될 경우, 비휘발성 메모리(120)에 저장될 수 있다.
컨트롤러(110)는 슈퍼 블록(SB)에 포함되는 복수의 메모리블록(BLK)이 동일한 시점에 프로그램 및/또는 소거 동작을 수행할 수 있도록 비휘발성 메모리(120)를 제어하고, 비휘발성 메모리(120)의 열화도 관리와 관련된 메타데이터를 슈퍼 블록(SB) 단위로 관리(저장 및 업데이트)될 수 있다.
예를 들어, 컨트롤러(110)는 호스트(200)로부터 기입 요청과 함께 수신되는 논리 어드레스를 물리 어드레스로 변환할 때, 슈퍼 블록(SB)의 복수의 블록(BLK)에서 인터리빙 방식으로 동시에 프로그램이 수행될 수 있도록 논리 어드레스에 물리 어드레스를 맵핑시킬 수 있다. 이에 따라, 슈퍼 블록(SB)의 복수의 블록(BLK)의 열화도가 동일 또는 유사할 수 있다. 여기서 메모리 셀의 열화는 메모리 셀이 프로그램 및 소거 사이클의 반복에 따라 물리적 특성이 변하는 것을 의미하며, 메모리 셀이 열화됨에 따라, 내구성(endurance) 및 리텐션(retention) 특성이 저하될 수 있다. 슈퍼 블록(SB)의 복수의 블록(BLK)의 열화도가 동일 또는 유사하므로, 슈퍼 블록(SB) 단위로 열화도와 관련된 메타데이터를 관리할 수 있다.
컨트롤러(110)는 슈퍼 블록(SB) 단위로 프로그램 및 소거 싸이클(P/E cycle)을 관리할 수 있으며, 슈퍼 블록(SB) 별로 프로그램 및 소거 횟수를 메타데이터 버퍼(MB)에 저장할 수 있다. 또는 컨트롤러(110)는 슈퍼 블록(SB) 별로 열화도를 검출하고, 검출된 열화도를 메타데이터 버퍼(MB)에 저장할 수 있다. 이와 같이, 메타데이터를 슈퍼 블록(SB) 단위로 관리함으로써, 메타데이터 저장을 위해 요구되는 메타데이터 버퍼(MB)의 저장 용량이 감소될 수 있다.
또한, 컨트롤러(110)는 스토리지 장치(100)의 런타임 중에 슈퍼 블록(SB) 별로 히스토리 버퍼(HB)에 리드 레벨을 저장하고, 호스트(200)로부터 리드 요청이 수신되면, 히스토리 버퍼(HB)에 저장된 리드 레벨을 기초로 리드 요청된 블록(BLK)으로부터 데이터를 리드할 수 있다. 이하, 본 개시에서, 히스토리 버퍼(HB)에 저장되는 리드 레벨을 "히스토리 리드 레벨"로 지칭하고, 히스토리 리드 레벨에 기초한 리드 동작을 "히스토리 리드"로 지칭하기로 한다.
예를 들어, 컨트롤러(110)는 제1 리드 레벨을 기초로 제1 슈퍼 블록의 한 블록(BLK)(제1 블록)에 대하여 리드를 수행하고, 리드 동작이 성공하면 제1 리드 레벨을 히스토리 버퍼(HB)에 제1 슈퍼 블록에 대한 히스토리 리드 레벨로서 저장할 수 있다. 이후, 제1 슈퍼 블록의 제1 블록 또는 다른 블록에 대하여 호스트(200)로부터 리드 요청이 수신되면, 컨트롤러(110)는 히스토리 버퍼(HB)에 저장된 제1 슈퍼 블록에 대한 히스토리 리드 레벨을 기초로 히스토리 리드를 수행할 수 있다.
컨트롤러(110)는 리드 동작이 실패할 경우, 리드 리트라이(read retry) 동작을 수행할 수 있다. 이하에서, 이전 리드 동작이 실패할 경우, 리드 레벨을 수정하고, 이후에 수정된 리드 레벨을 이용하여 수행되는 리드 동작을 "리드 리트라이 동작"이라고 지칭하기로 한다. 컨트롤러(110)는 히스토리 리드 동작이 실패할 경우, 펌웨어에 의한 방어 코드를 실행하여, 수정된 리드 레벨을 도출하고, 수정된 리드 레벨을 기초로 리드 리트라이를 수행할 수 있다. 컨트롤러(110)는 리드 리트라이 동작이 성공하면, 수정된 리드 레벨을 히스토리 버퍼(HB)에 히스토리 리드 레벨로서 저장함으로써, 히스토리 리드 레벨을 업데이트할 수 있다.
리드 동작 수행 시, 블록(BLK)의 열화도가 반영되지 않은 디폴트 리드 레벨을 기초로 리드 동작이 수행될 경우, 리드 동작이 실패할 확률이 높다. 그러나, 본 개시의 실시예에 따른 스토리지 장치(100)는 슈퍼 블록(SB) 단위로 히스토리 리드 레벨을 관리하고, 리드 요청된 블록(BLK)에 대하여 리드 동작 수행 시, 대응하는 슈퍼 블록(SB)의 히스토리 리드 레벨을 기초로 히스토리 리드를 수행함으로써, 리드 성공 확률이 높아질 수 있다. 전술한 바와 같이, 리드 동작이 실패할 경우, 방어코드를 실행할 수 있는데, 이때 방어 코드의 실행에 상당한 시간이 소요될 수 있다. 본 개시의 실시예에 따른 스토리지 장치(100)는 방어코드 실행 횟수를 최소화할 수 있으며, 따라서 스토리지 장치(100)의 성능이 향상될 수 있다.
한편, 히스토리 리드 레벨이 히스토리 버퍼(HB)에 저장된 이후의 시간 경과가 지나치게 길어질 경우, 히스토리 리드 레벨을 기초로 히스토리 리드를 수행하더라도 리드 동작이 실패할 확률이 높다. 스토리지 장치(100)가 파워-오프될 경우, 스토리지 장치(100)가 다시 파워-온 될 때까지의 경과 시간을 알 수 없으며, 경과 시간이 상당히 길 수 있다. 따라서, 스토리지 장치(100)의 파워-오프 시, 메타데이터와 달리 히스토리 버퍼(HB)에 저장된 데이터, 다시 말해서 각 슈퍼 블록(SB)의 히스토리 리드 레벨은 비휘발성 메모리(120)에 저장될 필요가 없으며, 스토리지 장치(100)가 파워-온 되면, 노멀 리드 동작, 예컨대 디폴트 리드 레벨을 기초로 수행되는 리드 동작 성공 시, 리드 레벨이 히스토리 버퍼(HB)에 히스토리 리드 레벨로서 저장되고 스토리지 장치(100)의 런타임 중에 이용되고 또한 업데이트될 수 있다.
실시예에 있어서, 컨트롤러(110)는 히스토리 리드를 수행할 때, 동일한 슈퍼 블록(SB)에 포함되는 복수의 블록(BLK)의 특성 차이, 또는 복수의 블록(BLK) 각각이 포함되는 복수의 메모리 디바이스의 특성 차이를 보상하기 위하여, 히스토리 리드 레벨에 오프셋을 부가하여 조정된 리드 레벨을 산출하고, 조정된 리드 레벨을 기초로 히스토리 리드를 수행할 수 있다.
동일한 슈퍼 블록(SB)에 포함된 복수의 블록(BLK)은 제조 공정(즉, 제조 단계)에 의한 전기적 특성 차이를 가질 수 있다. 예를 들어, 제1 블록의 문턱 전압 산포 특성(예컨대 문턱 전압 산포의 폭, 및 문턱 전압 레벨 등)은 제2 블록의 문턱 전압 산포 특성과 상이할 수 있으며, 이에 따라서, 제1 블록과 제2 블록의 열화도가 동일 또는 유사하더라도, 리텐션 특성이 상이할 수 있다.
그러므로, 컨트롤러(110)는 히스토리 리드 수행 시, 히스토리 리드 레벨에 복수의 블록(BLK) 간 특성 차이를 반영한 오프셋이 부가된 조정된 리드 레벨을 기초로 히스토리 리드를 수행함으로써, 리드 성공률을 높이고 방어코드 실행 횟수를 감소시킬 수 있다.
실시예에 있어서, 컨트롤러(110)는 슈퍼 블록(SB) 단위로 백그라운드 리드를 수행하여 히스토리 버퍼(HB)를 업데이트할 수 있다. 이때, "백그라운드 리드 동작"은 호스트(200)로부터의 리드 요청 수신 없이, 컨트롤러(110)가 자체적으로 리드 커맨드(CMD) 및 어드레스(ADDR)를 발행(issue) 하고, 리드 커맨드(CMD) 및 어드레스(ADDR)에 응답하여 비휘발성 메모리(120)에서 데이터(DATA)를 리드하는 동작을 지칭한다. 실시예에 있어서, 히스토리 버퍼의 업데이트를 위하여 수행되는"백그라운드 리드 동작"은 히스토리 버퍼(HB)에 저장된 히스토리 리드 레벨을 기초로 슈퍼 블록(SB)의 한 블록(BLK), 예컨대 대표 블록에 대하여 수행될 수 있다.
실시예에 있어서, 컨트롤러(110)는 블록(BLK) 단위로 백그라운드 리드를 수행하고, 수행 결과에 기초하여 검출되는 특성, 다시 말해서 복수의 블록(BLK)의 특성을 기초로 슈퍼 블록(SB)을 재그룹핑하거나 또는 슈퍼 블록(SB)에 포함되는 블록(BLK) 중 결함이 발생한 블록(BLK)을 다른 블록으로 대체할 수 있다.
스토리지 시스템(10)은 예를 들어, PC(personal computer), 데이터 서버, 네트워크-결합 스토리지(network-attached storage, NAS), IoT(Internet of Things) 장치, 또는 휴대용 전자 기기로 구현될 수 있다. 휴대용 전자 기기는, 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라, 디지털 비디오 카메라, 오디오 장치, PMP(portable multimedia player), PND(personal navigation device), MP3 플레이어, 휴대용 게임 콘솔(handheld game console), e-북(e-book), 웨어러블 기기 등일 수 있다.
일부 실시예들에서, 스토리지 장치(100)는 전자 장치에 내장되는 내부 메모리일 수 있다. 예를 들어, 스토리지 장치(100)는 SSD, 임베디드 UFS(Universal Flash Storage) 메모리 장치 또는 eMMC(embedded Multi-Media Card)일 수 있다. 일부 실시예들에서, 스토리지 장치(100)는 전자 장치에 착탈 가능한 외장 메모리일 수 있다. 예를 들어, 스토리지 장치(100)는 UFS 메모리 카드, CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital) 또는 메모리 스틱(Memory Stick)일 수 있다.
도 2a 및 도 2b는 본 개시의 예시적 실시예에 따른, 도 1의 비휘발성 메모리의 블록의 일 예를 나타내는 회로도이다.
도 2a를 참조하면, 블록(BLKa)은 수평 구조의 낸드 플래쉬 메모리일 수 있고, 블록(BLKa)은 복수의 낸드 스트링(STR), 복수의 워드 라인(WL1 내지 WL8), 복수의 비트 라인(BL1 내지 BLd), 그라운드 선택 라인(GSL), 스트링 선택 라인(SSL) 및 공통 소스 라인(CSL)을 포함할 수 있다. 여기서, 복수의 낸드 스트링의 개수, 복수의 워드 라인의 개수, 복수의 비트 라인의 개수, 그라운드 선택 라인의 개수 및 스트링 선택 라인의 개수는 실시예에 따라 다양하게 변경될 수 있다.
하나의 워드 라인, 예컨대 제5 워드 라인(WL5)에 연결된 메모리 셀(MC)들이 페이지(PAGE)를 구성할 수 있으며, 페이지 단위로 프로그램 및 리드 동작이 수행될 수 있다. 이때, 도 2a 도시된 페이지(PAGE)는 물리 페이지를 나타내며, 메모리 셀(MC)이 멀티 레벨 셀일 경우, 페이지(PAGE)에는 복수의 논리 페이지가 프로그램될 수 있다. 각 워드 라인(WL1 내지 WL8)에 대응되는 페이지(PAGE) 단위로 프로그램 및 리드가 수행되고, 블록(BLKa) 전체에 대하여 소거 동작이 수행될 수 있다.
도 2b를 참조하면, 블록(BLKb)은 수직 구조의 낸드 플래쉬 메모리일 수 있다. 블록(BLKb)은 복수의 낸드 스트링(NS11 내지 NS33), 복수의 워드 라인(WL1 내지 WL8), 복수의 비트 라인(BL1 내지 BL3), 복수의 그라운드 선택 라인(GSL1 내지 GSL3), 복수의 스트링 선택 라인(SSL1 내지 SSL3) 및 공통 소스 라인(CSL)을 포함할 수 있다. 여기서, 낸드 스트링들의 개수, 워드 라인들의 개수, 비트 라인들의 개수, 그라운드 선택 라인의 개수 및 스트링 선택 라인들의 개수는 실시예에 따라 다양하게 변경될 수 있다.
제1 비트 라인(BL1)과 공통 소스 라인(CSL) 사이에 낸드 스트링들(NS11, NS21, NS31)이 제공되고, 제2 비트 라인(BL2)과 공통 소스 라인(CSL) 사이에 낸드 스트링들(NS12, NS22, NS32)이 제공되고 제3 비트 라인(BL3)과 공통 소스 라인(CSL) 사이에 낸드 스트링들(NS13, NS23, NS33)이 제공된다. 각 낸드 스트링(예를 들면, NS11)은 직렬로 연결된 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1 내지 MC8) 및 그라운드 선택 트랜지스터(GST)를 포함할 수 있다.
스트링 선택 트랜지스터(SST)는 스트링 선택 라인(SSL1 내지 SSL3)에 연결된다. 복수의 메모리 셀들(MC1 내지 MC8)은 각각 대응하는 워드 라인(WL1 내지 WL8)에 연결된다. 그라운드 선택 트랜지스터(GST)는 그라운드 선택 라인들(GSL1, GSL2, GSL3)에 연결된다. 스트링 선택 트랜지스터(SST)는 대응하는 비트 라인(BL)에 연결되고, 그라운드 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결된다.
복수의 낸드 스트링(NS11 내지 NS33)에서 동일한 높이에 위치한 메모리 셀에 연결되는 워드 라인들은 공통으로 연결되어 있고, 스트링 선택 라인들(SSL1 내지 SSL3)은 서로 분리되어 있다. 예를 들어, 제 1 워드 라인(WL1)에 연결되어 있고 스트링(NS11, NS12, NS13)에 속해 있는 메모리 셀들을 프로그램하는 경우에는, 제1 워드 라인(WL1)과 제1 스트링 선택 라인(SSL1)이 선택될 수 있다. 도시된 바와 같이, 그라운드 선택 라인들(GSL1, GSL2, GSL3)은 서로 분리될 수 있다. 그러나, 이에 제한되는 것은 아니며, 그라운드 선택 라인들(GSL1, GSL2, GSL3)은 서로 연결될 수 있다.
각 워드 라인(WL1 내지 WL8) 및 낸드 스트링(NS11 내지 NS33)에 대응되는 페이지(PAGE) 단위로 프로그램 및 리드가 수행될 수 있고, 블록(BLKb) 전체에 대하여 소거 동작이 수행될 수 있다.
도 3a 및 도 3b는 본 개시의 예시적 실시예에 따른, 도 1의 비휘발성 메모리에서 슈퍼 블록의 그룹핑을 나타내는 블록도이다.
도 1 및 도 3a를 참조하면, 비휘발성 메모리(120)는 복수의 메모리 디바이스(D1 내지 D8)을 포함하고, 복수의 메모리 디바이스(D1 내지 D8)는 적어도 하나의 채널(CH)을 통해 컨트롤러(110)와 통신할 수 있다. 복수의 메모리 디바이스(D1 내지 D8) 각각은 반도체 칩, 또는 반도체 다이(die)일 수 있으며, 복수의 메모리 디바이스(D1 내지 D8) 각각은 복수의 블록(BLK)을 포함할 수 있다. 예를 들어, 도시된 바와 같이, 복수의 메모리 디바이스(D1 내지 D8) 각각은 n개의 블록(B11~B1n, B21~B2n, ??, B81~B8n)(n은 2 이상의 자연수)을 포함할 수 있다. 도시되지 않았으나, 복수의 메모리 디바이스(D1 내지 D8) 각각은 프로그램, 리드 및 소거 동작을 수행하기 위한 주변 회로, 예컨대 전압 생성부, 어드레스 디코더, 입/출력 회로 등을 더 포함할 수 있다.
복수의 메모리 디바이스(D1 내지 D8)에서 동일한 위치에 배치된 블록(BLK)들(또는 동일한 번호가 할당된 블록들(BLK))이 하나의 슈퍼 블록으로 그룹핑될 수 있다. 예를 들어, 도 3a에서, 블록들 B11 내지 B81이 제1 슈퍼 블록(SB1)으로서 그룹핑되고, 블록들 B12 내지 B82가 제2 슈퍼 블록(SB2)으로서 그룹핑되고, 블록들 B1n 내지 B8n이 제n 슈퍼 블록(SBk)(k는 2 이상의 자연수이며, n과 동일하거나 또는 n보다 작음)으로서 그룹핑될 수 있다.
도 3a에서는 설명의 편의를 위하여, 제1 내지 제8 디바이스(D1 내지 D8)가 하나의 채널(CH)에 병렬 연결되고, 하나의 채널(CH)을 통해 컨트롤러(110)와 통신하는 것으로 도시되었으나, 이에 제한되는 것은 아니며, 비휘발성 메모리(120)는 각각이 복수의 메모리 디바이스와 연결된 복수의 채널을 포함할 수 있다. 동일한 채널(CH)에 연결된 복수의 메모리 디바이스(D1 내지 D8)는 인터리빙 방식으로 프로그램, 독출 및 소거 동작이 수행될 수 있다.
도 3b를 참조하면, 복수의 블록(B11~B8n)은 전기적 특성을 기초로 복수의 슈퍼 블록(SB1~SBk)으로 그룹핑될 수 있다. 예를 들어, 블록들 B11, B21, B22, ??, B81이 동일 또는 유사한 전기적 특성을 가지며 제1 슈퍼 블록(SB1)으로 그룹핑되고, 블록들 B12, ??, B82가 동일 또는 유사한 전기적 특성을 가지며 제2 슈퍼 블록(SB2)으로 그룹핑되고, 블록들 B1n,B2n ??, B8n이 동일 또는 유사한 전기적 특성을 가지며 제n 슈퍼 블록(SBk)으로 그룹핑될 수 있다.
도 3a 및 도 3b를 참조하여 설명한 그룹핑 방식 외에도, 비휘발성 메모리(120)의 복수의 블록(BLK)은 다양한 조건을 기초로 복수의 슈퍼 블록으로 그룹핑될 수 있다. 또한, 도 3a 및 도 3b에서는 설명의 편의를 위하여, 제1 내지 제8 디바이스(D1 내지 D8)가 하나의 채널(CH)에 병렬 연결되고, 하나의 채널(CH)을 통해 컨트롤러(110)와 통신하는 것으로 도시되었으나, 이에 제한되는 것은 아니며, 비휘발성 메모리(120)는 각각이 복수의 메모리 디바이스와 연결된 복수의 채널을 포함할 수 있다. 동일한 채널(CH)에 연결된 복수의 메모리 디바이스(D1 내지 D8)는 인터리빙 방식으로 프로그램, 독출 및 소거 동작이 수행될 수 있다.
도 4a 및 도 4b는 본 개시의 예시적 실시예에 따른 메타데이터 버퍼에 저장되는 메타데이터 테이블의 예들을 나타낸다.
도 4a를 참조하면, 복수의 슈퍼 블록(SB1~SBn) 각각에 대한 P/E 싸이클이 카운팅 테이블(CTB)로서 메타데이터 버퍼(도 1의 MB)에 저장될 수 있다.
예를 들어, 카운팅 테이블(CTB)은 비휘발성 메모리(120)의 슈퍼 블록 어드레스인 SBN(Super Block Number) 및 P/E 싸이클을 나타내는 카운팅 값(CV)을 포함할 수 있다. 카운팅 테이블(CTB)은 복수의 슈퍼 블록(SB1~SBn) 각각에 대응하는 복수의 카운팅 값(CV1~CVn)을 저장할 수 있다. 예를 들어, 컨트롤러(110)는 제1 슈퍼 블록(SB1)의 복수의 슈퍼 블록들에 대하여 P/E 싸이클(또는 프로그램 및 소거 동작이 반복된 횟수)을 카운팅하고, 카운팅 결과를 제1 카운팅 값(CV1)으로서 카운팅 값(CV)에 저장할 수 있다.
도 4b를 참조하면, 복수의 슈퍼 블록(SB1~SBn) 각각에 대한 열화도를 나타내는 열화 값(DV)이 열화도 테이블(DTB)로서 메타데이터 버퍼(MB)에 저장될 수 있다. 이때, 열화도는 복수의 슈퍼 블록(SB1~SBn) 각각이 프로그램 및 소거가 반복됨에 따른 열화 정도를 나타낼 수 있다. 예를 들어, 열화도 테이블(DTB)은 비휘발성 메모리(120)의 슈퍼 블록 어드레스인 SBN(Super Block Number) 및 열화 값(DV)을 포함할 수 있다. 열화도 테이블(DTB)은 복수의 슈퍼 블록(SB1~SBn) 각각에 대응하는 복수의 열화 값(DV1~DVn)을 저장할 수 있다. 예를 들어, 컨트롤러(110)은 주기적 또는 비주기적으로 복수의 슈퍼 블록(SB1~SBn)에 대하여 열화도를 검출하고, 열화도 또는 열화도에 기초하여 산출되는 처리 값을 열화 값(DV)으로서 열화도 테이블(DTB)에 저장할 수 있다.
도 5는 비휘발성 메모리에 포함된 메모리 셀들의 열화에 따른 산포 변화의 일 예를 나타낸다.
도 1 및 도 5를 참조하면, 초기 산포(51) 및 변경 산포(52)에서, 가로축은 문턱 전압(Vth)을 나타내고, 세로축은 메모리 셀들의 개수를 나타낸다.
예를 들어, 메모리 셀이 2 비트로 프로그램되는 멀티 레벨 셀인 경우, 메모리 셀은 소거 상태(E) 및 제1 내지 제3 프로그램 상태들(P1 내지 P3) 중 하나의 상태를 가질 수 있다. 초기 산포(51)는 메모리 셀들에 대한 프로그램 완료 후 소정 시간 이내의 산포일 수 있다. 스토리지 장치(100)는 제1 내지 제3 프로그램 상태들(P1 내지 P3)을 판별하기 위해 제1 내지 제3 디폴트 리드 레벨들(DRL1 내지 DRL3)을 각각 이용할 수 있다.
변경 산포(52)는 메모리 셀들에 대한 프로그램 완료 후 소정 시간 이후의 산포일 수 있다. 리텐션(retention) 시간이 증가하면 메모리 셀들의 전하 트랩 양이 감소되면서, 산포가 변화 및 이동할 수 있다. 이에 따라, 메모리 셀들의 문턱 전압은 초기 산포(51)에 비해 변경될 수 있다. 구체적으로, 리텐션 시간이 증가하면 메모리 셀의 전하 저장층에 저장된 전하가 기판으로 누설될 수 있고, 이에 따라, 메모리 셀들의 문턱 전압이 감소할 수 있다. 산포 변화 및 이동은 프로그램 완료 후 경과 시간(즉, 리텐션 시간) 뿐만 아니라 프로그램 및/또는 소거의 반복(예컨대, 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)라고 지칭할 수 있다. 리드 오류를 제거하기 위해서는, 리드 리트라이를 수행함으로써 리드 레벨을 수정하는 것이 요구된다.
디폴트 리드 레벨(DRL)을 이용하는 노멀 리드 동작 시에 리드 오류가 발생할 경우, 스토리지 장치(100)는 리드 레벨들을 수정하고, 수정된 리드 레벨들을 기초로 리드 리트라이를 수행하여 리드 동작이 성공 가능한 적절한 리드 레벨들, 예컨대 수정된 리드 레벨들(CRL1 내지 CRL3)을 획득할 수 있다. 이를 위해, 컨트롤러(110)는 펌웨어에 의한 방어 코드(recovery code)를 실행할 수 있는데, 이때, 방어 코드의 실행에 상당한 시간이 소요될 수 있으므로, 스토리지 장치(100)의 성능 저하가 발생하게 된다.
히스토리 리드 레벨을 이용하는 히스토리 리드 동작 시, 리드 오류 발생 확률이 낮아질 수 있다. 그러나, 히스토리 리드 레벨을 블록 단위로 관리(저장 및 업데이트)할 경우, 복수의 블록 각각에 대하여 히스토리 리드 레벨을 획득하기 위한 리드 리트라이 동작이 필수적으로 실행되어야 하며, 복수의 블록 각각에 대한 히스토리 리드 레벨을 저장하기 위하여 요구되는 히스토리 버퍼(HB)의 저장 용량이 증가될 수 있다. 그러나, 본 개시의 실시예에 따르면, 컨트롤러(110)가 슈퍼 블록(SB) 단위로 히스토리 리드 레벨을 관리하는 바, 복수의 슈퍼 블록 각각에 대하여 히스토리 리드 레벨을 획득하기 위한 리드 리트라이 동작이 수행될 것이 요구될 뿐, 복수의 블록 각각에 대하여 리드 리트라이 동작이 수행될 필요가 없는 바, 방어 코드 실행 횟수가 감소될 수 있으며, 또한, 히스토리 리드 레벨 저장을 위하여 요구되는 히스토리 버퍼(HB)의 저장 용량이 감소될 수 있다.
도 6a, 6b 및 6c는 본 개시의 예시적 실시예에 따라, 도 5의 산포 변화에 대응하는 리드 히스토리 테이블의 구현 예들을 나타낸다.
도 1 내지 도 6a를 함께 참조하면, 리드 히스토리 테이블(RHTa)은 히스토리 버퍼(HB)에 저장될 수 있다. 리드 히스토리 테이블(RHTa)은 복수의 슈퍼 블록(SB1 내지 SBn)에 각각 대응하는 히스토리 리드 레벨들(HRL1 내지 HRL3)을 저장할 수 있다. 예를 들어, 제1 슈퍼 블록(SB1)에 대하여 수정된 리드 레벨들(CRL1a, CRL2a 및 CRL3a)이 히스토리 리드 레벨들(HRL1 내지 HRL3)로서 저장될 수 있다. 또한, 제2 슈퍼 블록(SB2)에 대하여 수정된 리드 레벨들(CRL1b, CRL2b 및 CRL3b)이 히스토리 리드 레벨들(HRL1 내지 HRL3)로서 저장되고, 제n 슈퍼 블록(SBn)에 대하여 수정된 리드 레벨들(CRL1c, CRL2bc 및 CRL3c)이 히스토리 리드 레벨들(HRL1 내지 HRL3)로서 저장될 수 있다. 복수의 슈퍼 블록(SB1 내지 SBn)각각에 대한 히스토리 리드 레벨들(HRL1 내지 HRL3)은 시간의 경과에 따라 업데이트될 수 있다. 이하에서는, 리드 히스토리 테이블(RHTa)의 생성 동작에 대해 설명하기로 한다.
메모리 컨트롤러(110)는 제1 슈퍼 블록(SB)의 하나의 블록, 예컨대 제1 슈퍼 블록(SB)의 복수의 블록들 중 스토리지 장치(100)의 런타임 중 처음으로 리드 동작이 수행되는 제1 블록에 대하여, 디폴트 리드 레벨들(DRL1, DRL2, DRL3)을 기초로 노멀 리드를 수행할 수 있다. 리드 오류가 발생한 경우, 메모리 컨트롤러(110)는 수정된 리드 레벨들(CRL1a, CRL2a, CRL3a)을 이용하여 제1 블록에 대하여 리드 리트라이를 수행할 수 있다. 리드 오류가 발생하지 않은 경우, 메모리 컨트롤러(110)는 제1 슈퍼 블록(SB)에 대응하는 히스토리 리드 레벨들로서, 수정된 리드 레벨들(CRL1a, CRL2a, CRL3a)을 리드 히스토리 테이블(RHT)에 저장할 수 있다. 이와 유사하게, 메모리 컨트롤러(110)는 제2 슈퍼 블록(SB2) 내지 제n 슈퍼 블록(SBn)에 대해서도 노멀 리드 및/또는 리드 리트라이 동작을 통해 수정된 리드 레벨들(CRL1b, CRL2b, CRL3b)을 리드 히스토리 테이블(RHTa)에 저장할 수 있다.
일부 실시예에서, 메모리 셀이 1 비트로 프로그램되는 싱글 레벨 셀인 경우, 메모리 셀은 소거 상태 및 프로그램 상태 중 하나를 가질 수 있고, 이 경우, 리드 히스토리 테이블은 복수의 슈퍼 블록(SB1 내지 SBn)에 각각 대응하는 수정된 리드 레벨을 히스토리 레벨로서 저장할 수 있다. 리드 히스토리 테이블을 생성하는 동작은 도 6a을 참조하여 상술된 내용과 실질적으로 동일할 수 있다.
도 6b를 참조하면, 리드 히스토리 테이블(RHTb)은 도 6a를 참조하여 설명한바와 같이, 복수의 슈퍼 블록(SB1 내지 SBn)에 각각 대응하는 히스토리 리드 레벨들(HRL1 내지 HRL3)을 저장할 수 있으며, 또한, 메모리 디바이스(이하, 디바이스라고 함)의 어드레스를 나타내는 디바이스 넘버(DN; Device Number)를 저장할 수 있다. 예컨대, 디바이스 넘버(DN)는 슈퍼 블록에 대한 히스토리 리드 레벨들(HRL1 내지 HRL3)이 획득된 때 리드 동작(또는 리드 리트라이 동작)이 수행된 블록을 포함하는 디바이스를 나타낸다.
예를 들어, 도 3에서, 제1 슈퍼 블록(SB1)에 포함된 블록들(B11 내지 B81) 중 블록 B21에 대하여 리드 리트라이 동작이 수행됨에 따라, 수정된 리드 레벨들(CRL1a, CRL2a, CRL3a)이 획득된 경우, 블록 B21을 포함하는 제2 디바이스(D2)가 디바이스 넘버(DN)로서 저장될 수 있다. 도 1을 참조하여 전술한 바와 같이, 디바이스들 간에는 전기적 특성 차이가 있을 수 있다. 복수의 디바이스들(D1~D8) 각각의 전기적 특성은 제조 공정, 예컨대 디바이스 테스트 단계에서 검출되어, 해당 디바이스에 저장될 수 있다. 예를 들어, 해당 디바이스에 포함되는 복수의 블록 중 하나에 저장되거나, 또는 해당 디바이스의 주변 회로에 저장될 수 있다.
블록 B21을 제외한 다른 블록(예컨대, B11 및 B81)에 대하여 수정된 리드 레벨들(CRL1a, CRL2a, CRL3a)을 기초로 히스토리 리드를 수행할 경우, 메모리 컨트롤러(110)는 수정된 리드 레벨들(CRL1a, CRL2a, CRL3a)이 어떤 디바이스로부터 획득되었는지, 즉 제2 디바이스(D2)로부터 획득되었는지를 확인하고, 제2 디바이스(D2)와 히스토리 리드 동작이 수행될 블록이 포함된 디바이스 간의 전기적 특성 차이를 반영한 오프셋을 기초로 수정된 리드 레벨들(CRL1a, CRL2a, CRL3a)을 조정하고, 조정된 리드 레벨들을 기초로 히스토리 리드를 수행할 수 있다. 예를 들어, 메모리 컨트롤러(110)은 수정된 리드 레벨들(CRL1a, CRL2a, CRL3a) 각각에 오프셋을 부가함으로써, 조정된 리드 레벨들을 생성할 수 있다.
도 6c를 참조하면, 리드 히스토리 테이블(RHTc)은 도 6a를 참조하여 설명한바와 같이, 복수의 슈퍼 블록(SB1 내지 SBn)에 각각 대응하는 히스토리 리드 레벨들(HRL1 내지 HRL3)을 저장할 수 있으며, 또한, 블록(이하, 블록이라고 함)의 어드레스를 나타내는 블록 넘버(BN; Block Number)를 저장할 수 있다. 예컨대, 블록 넘버(BN)는 슈퍼 블록에 대한 히스토리 리드 레벨들(HRL1 내지 HRL3)이 획득된 때 리드 동작(또는 리드 리트라이 동작)이 수행된 블록을 나타낸다. 예를 들어, 도 3에서, 제1 슈퍼 블록(SB1)에 포함된 블록들(B11 내지 B81) 중 블록 B21에 대하여 리드 리트라이 동작이 수행됨에 따라, 수정된 리드 레벨들(CRL1a, CRL2a, CRL3a)이 획득된 경우, 블록 B21을 포함하는 제2 디바이스(D2)가 디바이스 넘버(DN)로서 저장될 수 있다.
예를 들어, 복수의 디바이스들(D1~D8) 각각에 포함되는 복수의 블록 각각에 대한 전기적 특성이 제조 공정, 예컨대 디바이스 테스트 단계에서 검출되어, 해당 디바이스에 저장될 수 있다. 예를 들어, 해당 디바이스의 복수의 블록 각각의 특성이 해당 블록에 저장되거나, 또는 특정 블록에 저장되거나, 또는 해당 디바이스의 주변 회로에 저장될 수 있다.
블록 B21을 제외한 다른 블록(예컨대, B11 및 B81)에 대하여 수정된 리드 레벨들(CRL1a, CRL2a, CRL3a)을 기초로 히스토리 리드를 수행할 경우, 메모리 컨트롤러(110)는 수정된 리드 레벨들(CRL1a, CRL2a, CRL3a)이 어떤 블록으로부터 획득되었는지, 즉 블록 B21로부터 획득되었는지를 확인하고, 블록 B21과 히스토리 리드 동작이 수행될 블록 간의 전기적 특성 차이를 반영한 오프셋을 기초로 수정된 리드 레벨들(CRL1a, CRL2a, CRL3a)을 조정하고, 조정된 리드 레벨들을 기초로 히스토리 리드를 수행할 수 있다.
도 7은 본 개시의 일 실시예에 따라, 도 1의 컨트롤러의 일 예를 나타내는 블록도이다.
도 7을 참조하면, 컨트롤러(110a)는 프로세서(111), 메모리(112), 호스트 인터페이스(113), ROM(Read Only Memory)(114), ECC 모듈(115) 및 비휘발성 메모리 인터페이스(116)를 포함할 수 있고, 이들은 버스(117)를 통해 서로 통신할 수 있다. 프로세서(111)는 중앙 처리 장치나 마이크로 프로세서 등을 포함할 수 있으며, 컨트롤러(110a)의 전반적인 동작을 제어할 수 있다. 프로세서(111)는 특정 동작을 수행하도록 구성되는 프로그램 코드의 명령어 집합을 실행할 수 있는 하나 이상의 프로세서 코어들을 포함할 수 있다. 예를 들어, 프로세서(112)는 ROM(114)에 저장된 펌웨어의 명령 코드를 실행할 수 있다.
메모리(112)는 프로세서(111)의 제어에 따라 동작하며, 동작 메모리, 버퍼 메모리, 캐시 메모리 등으로 사용될 수 있다. 예를 들어, 메모리(112)는 DRAM, SRAM과 같은 휘발성 메모리 또는 PRAM, 플래시 메모리와 같은 비휘발성 메모리로 구현될 수도 있다.
리드 컨트롤러(RC)는 펌웨어 또는 소프트웨어로 구현될 수 있고, 메모리(112)에 로딩될 수 있다. 일 실시예에서, 리드 컨트롤러(RC)는 FTL(Flash Translation Layer)의 일부로 구현될 수 있고, 메모리(112)에 로딩될 수 있다. 그러나, 이에 한정되지 않으며, 리드 컨트롤러(RC)는 하드웨어로 구현될 수도 있다.
히스토리 버퍼(HB)는 예를 들어, 도 6a, 도 6b, 도 6c의 리드 히스토리 테이블(RHTa, RHTb, RHTc) 중 하나를 저장할 수 잇고, 메모리(112)의 일부로 구현될 수 있다. 일 실시예에서, 리드 컨트롤러(RC)와 히스토리 버퍼(HB)는 동일 칩으로 구현될 수 있다. 그러나, 이에 제한되지 않으며, 리드 컨트롤러(BRC)와 히스토리 버퍼(HB)는 서로 다른 칩에 구현될 수도 있다. 예를 들어, 히스토리 버퍼(HB)는 별도의 DRAM 칩의 일부로 구현될 수 있다.
메타데이터 버퍼(MB)는 예를 들어, 도 4a 카운팅 테이블(CTB) 및/또는 도 4b의 열화 테이블(DTB)를 저장할 수 있고, 메모리(112) 또는 별도의 DRMA 칩의 일부로 구현될 수 있다. 또한, 메타데이터 버퍼(MB)는 논리 어드레스와 물리 어드레스의 맵핑 정보를 포함하는 어드레스 맵핑 테이블(도 8a의 AMT), 및 슈퍼 블록에 맵핑된 블록들의 정보를 포함하는 슈퍼 블록 맵핑 테이블(도 8b의 SMBT) 을 저장할 수 있다.
도 8a는 본 개시의 실시예에 따른 어드레스 맵핑 테이블을 나타내고, 도 8b는 본 개시의 실시예에 따른 슈퍼 블록 맵핑 테이블을 나타낸다.
도 8a를 참조하면, 어드레스 맵핑 테이블(AMT)은 논리 어드레스를 물리 어드레스로 변환하기 위한 복수의 맵핑 데이터를 저장할 수 있고, 도 6의 메타데이터 버퍼(MB)에 로딩되어 이용될 수 있다. 각 맵핑 데이터는 LPN(Logical Page Number)에 대응하는 PPN(Physical Page Number)를 나타낸다. 예를 들어, 블록 BLK11의 제3 페이지에 해당하는 제3 물리 페이지(PPN3)가 제1 논리 페이지(LPN1)에 맵핑되고, 블록 BLK12의 제1 페이지에 해당하는 제9 물리 페이지(PPN9)가 제2 논리 페이지(LPN2)에 맵핑될 수 있다.
도 8b를 참조하면, 슈퍼 블록 맵핑 테이블(SBMT)은 복수의 슈퍼 블록(SB1~SBb)에 대응하는, 즉, 복수의 슈퍼 블록(SB1~SBb)에 각각으로 그룹핑된 복수의 블록들에 대한 블록 넘버(BN)를 포함할 수 있다. 예를 들어, 블록들 BLK11, BLK21 내지 BLK81이 제1 슈퍼 블록(SB1)에 해당할 수 있다. 실시예에 있어 슈퍼 블록 맵핑 테이블(SBMT)은 도시된 바와 같이, 블록들에 대한 블록 넘버(BN)와 함께 상기 블록이 포함되는 디바이스 넘버(예컨대, D1, D2,..D8)를 포함할 수 있다.
호스트(200)로부터 리드 요청 및 논리 어드레스가 수신되면, 컨트롤러(110a)는 어드레스 맵핑 테이블(AMT)을 참조하여 수신된 논리 어드레스에 대응하는 물리 어드레스를 확인할 수 있다. 이어서, 컨트롤러(110a)는 슈퍼 블록 맵핑 테이블(SBMT)을 확인하여, 물리 어드레스에 대응하는 슈퍼 블록을 확인하고, 슈퍼 블록의 히스토리 리드 레벨이 리드 히스토리 테이블(도 6a의 RHTa,도 6b의 RHTb, 도 6c의 RHTc)에 저장되었는지 확인할 수 있다.
예를 들어, 호스트(200)로부터 제1 논리 페이지(LPN1)가 수신되면, 컨트롤러(110a)는 어드레스 맵핑 테이블(AMT)을 참조하여 제1 논리 페이지(LPN1)에 대응하는 제3 물리 페이지(PPN3)을 확인할 수 있다. 이에서, 컨트롤러(110a)는 슈퍼 블록 맵핑 테이블(SBMT)을 참조하여, 제3 물리 페이지(PPN3)가 제1 슈퍼 블록(SB1)에 해당함으로 확인하고, 제1 슈퍼 블록(SB1)에 대응하는 히스토리 리드 레벨이 히스토리 버퍼(도 1 및 도 7의 HB), 다시 말해서, 리드 히스토리 테이블(도 6a의 RHTa,도 6b의 RHTb, 도 6c의 RHTc)에 저장되었는지 확인할 수 있다. 히스토리 버퍼(HB)에 제1 슈퍼 블록(SB1)에 대응하는 히스토리 리드 레벨, 예컨대, 수정된 리드 레벨들(CRL1a, CRL2a, CRL3a)이 저장되었으므로, 이를 기초로 제3 물리 페이지(PPN3)에 대하여 히스토리 리드를 수행할 수 있다.
한편, 예를 들어, 호스트(200)로부터 제2 논리 페이지(LPN2)가 수신되면, 컨트롤러(110a)는 어드레스 맵핑 테이블(AMT)을 참조하여 제2 논리 페이지(LPN2)에 대응하는 제9 물리 페이지(PPN9)를 확인할 수 있다. 이에서, 컨트롤러(110a)는 슈퍼 블록 맵핑 테이블(SBMT)을 참조하여, 제9 물리 페이지(PPN9)가 제2 슈퍼 블록(SB2)에 해당함으로 확인하고, 제2 슈퍼 블록(SB2)에 대응하는 히스토리 리드 레벨이 히스토리 버퍼(도 1 및 도 7의 HB), 다시 말해서, 리드 히스토리 테이블(도 6a의 RHTa, 도 6b의 RHTb, 도 6c의 RHTc)에 저장되었는지 확인할 수 있다. 리드 히스토리 테이블(도 6a의 RHTa,도 6b의 RHTb, 도 6c의 RHTc)에 제2 슈퍼 블록(SB2)에 대응하는 히스토리 리드 레벨이 저장되지 않았으므로, 디폴트 리드 레벨들을 이용하여 제9 물리 페이지(PPN9)에 대한 리드 동작, 예컨대 노말 리드를 수행할 수 있다. 노말 리드 동작이 리드 성공 시, 디폴트 리드 레벨들이 제2 슈퍼 블록(SB2)에 대한 히스토리 리드 레벨로서 저장될 수 있다. 노말 리드 동작이 리드 실패일 경우, 리드 리트라이가 수행되고, 리드 성공 시의 수정된 리드 레벨들이 제2 슈퍼 블록(SB2)에 대한 히스토리 리드 레벨로서 저장될 수 있다.
계속하여, 도 7을 참조하면, 호스트 인터페이스(113)는 호스트(200)와 컨트롤러(110a) 사이의 인터페이스를 제공할 수 있고, 예를 들어, USB(Universal Serial Bus), MMC, PCI-E(PCIExpress), ATA(AT Attachment), SATA(Serial AT Attachment), PATA(Parallel AT Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics) 등에 따른 인터페이스를 제공할 수 있다.
ROM(114)은 컨트롤러(110a)의 동작에 요구되는 다양한 정보들을 저장할 수 있다. 예시적으로, ROM(114)은 컨트롤러(110a)의 동작 알고리즘, 예컨대, 메타데이터 버퍼(MB) 관리 알고리즘 및 히스토리 버퍼(HB) 관리 알고리즘, 또는 리드 컬트롤러(RC)의 동작 알고리즘을 펌웨어 형태로 저장할 수 있다.
ECC 모듈(115)은 비휘발성 메모리(120)로부터 수신된 데이터에 대해 ECC 동작을 수행함으로써, 데이터에서 에러 비트를 검출하고, 검출된 에러 비트를 정정할 수 있다. 일 실시예에서, ECC 모듈(115)은 하드웨어로 구현될 수 있다. 일 실시예에서, ECC 모듈(115)은 소프트웨어 또는 펌웨어로 구현될 수 있고, 메모리(112)에 로딩될 수 있다. 온도 센서(116)는 스토리지 장치(100)의 동작 온도를 센싱할 수 있다.
비휘발성 메모리 인터페이스(116)는 컨트롤러(110a)와 비휘발성 메모리(120) 사이의 인터페이스를 제공할 수 있다. 예를 들어, 메타데이터, 라이트 데이터 및 리드 데이터가 비휘발성 메모리 인터페이스(116)를 통해 컨트롤러(110a)와 비휘발성 메모리(120) 사이에서 송수신될 수 있다.
도 9a는 본 개시의 실시예에 따른 비휘발성 메모리의 디바이스 오프셋을 나타내고, 도 9b는 본 개시의 실시예에 따른 블록 오프셋을 나타낸다.
도 1 및 도 9a를 참조하면, 비휘발성 메모리(120)의 복수의 디바이스들, 예컨대 제1 내지 제21 디바이스(D1 내지 D21) 각각에 대응하는 디바이스 오프셋(DO), 예컨대 제1 내지 제21 디바이스 오프셋(DO1 내지 DO21)을 저장할 수 있다. 디바이스 오프셋(DO)은 스토리지 장치(100)의 제조 단계에서, 복수의 디바이스들의 전기적 특성 차이를 기초로 산출되어, 해당 디바이스에 저장될 수 있다. 컨트롤러(110)는 스토리지 장치(100)가 파워-온 되면, 제1 내지 제21 디바이스(D1 내지 D21)로부터 제1 내지 제21 디바이스 오프셋(DO1 내지 DO21)을 독출하고, 제1 내지 제21 디바이스 오프셋(DO1 내지 DO21)을 오프셋 테이블(OTa)로서 구성하여 저장하고, 이를 참조할 수 있다. 예를 들어, 오프셋 테이블(OTa)은 메타데이터 버퍼(MB)에 저장될 수 있다.
도 9b를 참조하면, 비휘발성 메모리(120)의 복수의 디바이스들, 예컨대 제1 내지 제21 디바이스(D1 내지 D21) 각각에 해당 디바이스에 포함되는 블록들의 오프셋, 즉 블록 오프셋들(BOs)이 저장될 수 있다. 블록 오프셋들(BOs)은 스토리지 장치(100)의 제조 단계에서, 복수의 디바이스의 복수의 블록의 전기적 특성 차이를 기초로 산출되어, 해당 디바이스에 저장될 수 있다. 예를 들어, 제1 디바이스(D1)가 제1 내지 제8 블록을 포함하면, 제1 디바이스(D1)에는 제1 내지 제8 블록에 대응하는 제1 내지 제8 블록 오프셋이 저장될 수 있다. 컨트롤러(110)는 스토리지 장치(100)가 파워-온 되면, 제1 내지 제21 디바이스(D1 내지 D21)로부터 블록 오프셋들(BOs)을 독출하고, 블록 오프셋들(BOs)을 오프셋 테이블(OTb)로서 구성하여 저장하고, 이를 참조할 수 있다. 예를 들어, 오프셋 테이블(OTa)은 메타데이터 버퍼(MB)에 저장될 수 있다. 블록 오프셋들(BOs)을 포함하는 오프셋 테이블(OTb)은 디바이스 단위로 블록 오프셋들(BOs)을 저장할 수 있다. 예를 들어, 제1 디바이스의 블록 오프셋(BO_D1)에, 제1 디바이스(D1)의 블록들에 대응하는 블록 오프셋 BO11 내지 BO1n이 저장되고, 제1 디바이스의 블록 오프셋(BO_D1)에 제2 디바이스(D2)의 블록들에 대응하는 블록 오프셋 BO21 내지 BO2n이 저장될 수 있다.
도 9a 및 도 9b를 참조하여 설명한 디바이스 오프셋(DO) 또는 블록 오프셋(BOs)은 히스토리 리드 동작 수행 시 이용될 수 있다. 도 1을 참조하여 설명한 바와 같이, 컨트롤러(110)는 동일한 슈퍼 블록(SB)에 포함되는 복수의 블록(BLK)의 특성 차이, 또는 복수의 블록(BLK) 각각이 포함되는 복수의 메모리 디바이스의 특성 차이를 보상하기 위하여, 히스토리 리드 레벨에 디바이스 오프셋(DO) 또는 블록 오프셋을 부가하여 조정된 리드 레벨을 산출하고, 조정된 리드 레벨을 기초로 히스토리 리드를 수행할 수 있다.
도 10은 본 개시의 실시예에 따른 스토리지 장치의 동작 방법을 개략적으로 나타내는 흐름도이고, 도 11은 도 10의 스토리지 장치의 동작 방법을 보다 상세하게 나타내는 흐름도이다. 도10 및 도 11의 동작 방법은 도 1의 스토리지 장치(100)에서 시계열적으로 수행될 수 있다. 도 1 내지 도 9b를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다.
도 1 및 도 10을 참조하면, 스토리지 장치(100)는 슈퍼 블록 단위로 비휘발성 메모리의 열화를 관리하고(S10), 또한, 슈퍼 블록 단위로 히스토리 버퍼 관리 및 비휘발성 메모리(120)에 대한 리드 동작을 제어할 수 있다(S20). 슈퍼 블록은 복수의 메모리를 포함할 수 있다. 예를 들어, 컨트롤러(120)는 비휘발성 메모리(120)를 구성하는 복수의 메모리 디바이스 각각에 포함되는 적어도 하나의 블록을 슈퍼 블록으로 그룹핑하거나, 또는 비휘발성 메모리(120)에서 전기적 특성이 유사한 복수의 블록이 슈퍼 블록으로 그룹핑하고, 슈퍼 블록 단위로 비휘발성 메모리(120)의 열화 관리, 히스토리 버퍼 관리 및 리드 동작을 제어할 수 있다. 단계 S10 및 S20은 스토리지 장치(100)의 런타임 중에 계속하여 수행될 수 있다.
도 11을 참조하면, 스토리지 장치(100)는 프로그램 및 소거 동작을 수행하고(S11), 복수의 슈퍼 블록 각각에 대한 프로그램 및 소거 횟수를 메타데이터로서 저장 및 업데이트할 수 있다(S12). 예를 들어, 컨트롤러(120)가 복수의 슈퍼 블록 각각에 대응하는 프로그램 및 소거 횟수를 포함하는 카운팅 테이블(도 4a의 CTB)를 메타데이터 버퍼(MB)에 저장할 수 있으며, 프로그램 및 소거 동작이 계속하여 수행됨에 따라, 프로그램 및 소거 횟수를 수퍼 블록 단위로 업데이트할 수 있다. 이와 같이, 스토리지 장치(100)는 슈퍼 블록 단위로 비휘발성 메모리의 열화를 관리할 수 있다.
스토리지 장치(100)는 슈퍼 블록의 제1 블록에 대해 노멀 리드를 수행할 수 있다(S21). 예를 들어, 제1 블록은 스토리지 장치(100)가 파워-온 된 후 상기 슈퍼 블록의 복수의 블록들 중 처음으로 리드 동작이 수행되는 블록일 수 있다. 스토리지 장치(100)는 디폴트 리드 레벨을 기초로 제1 블록에 대해 노멀 리드를 수행할 수 있으며, 디폴트 리드 레벨을 기초로 수행된 리드 동작이 실패할 경우, 수정된 리드 레벨을 기초로 리드 리트라이를 수행할 수 있다.
스토리지 장치(100)는 슈퍼 블록의 제1 블록에 대한 리드 동작 성공 시, 리드 레벨을 히스토리 리드 레벨로서 히스토리 버퍼에 저장할 수 있다(S22). 예를 들어, 디폴트 리드 레벨을 기초로 수행된 리드 동작이 성공 시, 컨트롤러(110)는 디폴트 리드 레벨을 슈퍼 블록에 대한 히스토리 리드 레벨로서 히스토리 버퍼(HB)에 저장할 수 있다. 또는 수정된 리드 레벨을 기초로 수행된 리드 리트라이 동작이 리드 성공 시, 컨트롤러(110)는 수정된 리드 레벨을 슈퍼 블록에 대한 히스토리 리드 레벨로서 히스토리 버퍼(HB)에 저장할 수 있다.
스토리지 장치(100)는 히스토리 버퍼에 저장된 히스토리 리드 레벨을 기초로 슈퍼 블록의 복수의 블록에 대하여 히스토리 리드를 수행할 수 있다(S23). 단계 S22에서, 히스토리 버퍼(HB)에 슈퍼 블록의 히스토리 레벨이 저장된 이후에는, 슈퍼 블록에 대하여 히스토리 리드 동작이 수행될 수 있다. 예를 들어, 컨트롤러(110) 는 상기 제1 블록에 대하여 호스트(200)의 리드 요청에 따른 리드 동작(이하, 호스트 리드 동작이라고 함)을 수행하거나 또는 슈퍼 블록의 다른 블록들에 대하여 호스트 리드를 수행할 때, 히스토리 리드 레벨을 기초로 히스토리 리드를 수행할 수 있다. 또는, 컨트롤러(110)는 히스토리 리드 레벨의 업데이트를 위한 백그라운드 리드 동작 수행 시에도, 히스토리 리드 레벨을 기초로 히스토리 리드를 수행할 수 있다.
이와 같이, 본 개시의 예시적 실시예에 따른 스토리지 장치(100)는 슈퍼 블록 단위로 비휘발성 메모리(120)의 프로그램 및 소거 횟수를 관리함으로써, 열화를 관리하고, 슈퍼 블록 단위로 히스토리 버퍼에 저장되는 히스토리 리드 레벨을 관리하고 또한 리드 동작을 제어할 수 있다. 본 개시의 실시예에 따른 스토리지 장치(100)에서는 슈퍼 블록에 포함되는 복수의 블록의 프로그램 및 소거 동작에 따른 내구성 및 리텐션 특성 변화가 유사할 수 있으며, 이에 따라서, 슈퍼 블록 단위로 히스토리 리드 레벨을 히스토리 버퍼(HB)에 저장 및 업데이트 함으로써, 방어코드 실행 횟수를 최소화하여 스토리지 장치(100)의 성능이 향상될 수 있고, 또한, 히스토리 버퍼(HB)의 용량이 감소될 수 있다.
도 12는 본 개시의 예시적 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 도 12는 도 10의 단계 S20을 예시적으로 설명한다.
도 1 및 도 12를 참조하면, 스토리지 장치(100)가 파워-온 될 수 있다(S31). 스토리지 장치(100)가 파워-온 된후, 비휘발성 메모리(120)에서 리드 동작이 수행되면, 히스토리 버퍼(HB)에 히스토리 리드 레벨이 저장 및 업데이트될 수 있다.
스토리지 장치(100)는 호스트(200)로부터 제1 슈퍼 블록의 제1 블록에 대한 리드 요청을 수신할 수 있다(S32). 예를들어 호스트(200)로부터 리드 커맨드와 함께 수신된 논리 어드레스, 예컨대 논리 페이지가 제1 슈퍼 블록의 제1 블록에 해당하는 물리 어드레스, 예컨대 물리 페이지를 나타낼 수 있다.
스토리지 장치(100)는 제1 슈퍼 블록의 제1 블록에 대하여 노멀 리드를 수행할 수 있다(S33). 스토리지 장치(100)는 제1 수퍼 블록에 대하여 설정된 디폴트 리드 레벨을 기초로 노멀 리드를 수행할 수 있으며, 리드 실패 시 방어 코드 실행에 따른 수정된 리드 레벨을 기초로 리드 리트라이를 수행할 수 있다.
스토리지 장치(100)는 제1 슈퍼 블록의 제1 블록에 대한 리드 성공 시, 리드 레벨을 제1 슈퍼 블록의 히스토리 리드 레벨로서, 히스토리 버퍼(HB)에 저장할 수 있다(S34). 디폴트 리드 레벨 또는 수정된 리드 레벨이 히스토리 리드 레벨로서 저장될 수 있다.
이후, 스토리지 장치(100)는 호스트(200)로부터 제1 슈퍼 블록의 제2 블록에 대한 리드 요청을 수신할 수 있다(S35). 스토리지 장치(100)는 히스토리 버퍼(HB)에 저장된 제1 슈퍼 블록의 히스토리 리드 레벨을 기초로 제2 블록에 대하여 히스토리 리드를 수행할 수 있다(S36). 제2 블록에 대하여 히스토리 리드 레벨이 획득된 바 없지만, 슈퍼 블록 단위로 히스토리 리드 레벨이 관리되며 슈퍼 블록에 대한 히스토리 리드 레벨이 슈퍼 블록에 포함되는 복수의 블록에 대한 리드 동작 시 이용될 수 있는 바, 제2 블록에 대한 히스토리 리드 레벨 획득을 위한 리드 리트라이가 수행될 필요가 없어, 방어코드 진입 횟수가 감소될 수 있다.
실시예에 있어서, 제2 블록에 대한 히스토리 리드 동작이 실패하면, 스토리지 장치(100)는 수정된 리드 레벨을 기초로 제2 블록에 대하여 리드 리트라이를 수행하고, 리드 리트라이에 따른 리드 성공 시, 수정된 리드 레벨을 히스토리 버퍼(HB)에 제1 슈퍼 블록의 히스토리 리드 레벨로 저장함으로써, 히스토리 리드 레벨을 업데이트 할 수 있다.
한편, 본 실시예의 단계 S32 및 S33에서, 스토리지 장치(100)는 호스트(200)로부터의 리드 요청 수신에 응답하여 제1 블록에 대하여 노멀 리드를 수행하는 것으로 설명되었으나, 이에 제한되는 것은 아니다. 다른 실시예에 있어서, 호스트(200)로부터의 리드 요청 없이, 스토리지 장치(100)가 백그라운드 리드(또는 패트롤 리드라고 지칭함)를 수행할 수 있으며, 제1 블록에 대한 백그라운드 리드, 즉, 디폴트 리드 레벨을 기초로 수행하는 노멀 리드 또는 수정된 리드 레벨을 기초로 수횅하는 리드 리트라이에 따른 리드 성공 시, 리드 레벨을 제1 슈퍼 블록의 리드 레벨로서 히스토리 버퍼(HB)에 저장할 수도 있다.
예를 들어, 스토리지 장치(100)는 파워-온 되면, 비휘발성 메모리(110)의 복수의 블록들에 대하여 백그라운드 리드를 수행하고, 제1 슈퍼 블록의 제1 블록에 대한 리드 성공 시의 리드 레벨을 제1 슈퍼 블록에 대한 히스토리 리드 레벨로서 히스토리 버퍼(HB)에 저장할 수 있다. 다른 예로서, 스토리지 장치(100)는 파워-온 되면, 비휘발성 메모리(110)의 복수의 블록들 중 복수의 슈퍼 블록 각각에서 선택된 블록들에 대하여 백그라운드 리드를 수행할 수 있다. 예를 들어, 컨트롤러(110)는 제1 슈퍼 블록에 포함되는 블록들 중 제1 블록에 대하여 백그라운드 리드가 수행될 수 있으며, 제1 블록에 대한 리드 성공 시, 리드 레벨을 제1 슈퍼 블록의 히스토리 리드 레벨르서 히스토리 버퍼(HB)에 저장할 수 있다.
도 13은 본 개시의 예시적 실시예에 따른 스토리지 장치(100)의 동작 방법을 나타내는 흐름도이다. 도 13은 도 12의 단계 S36의 히스토리 리드 동작에 대하여 상세하게 설명하며, 도 1의 스토리지 장치(100)에서 시계열적으로 수행될 수 있다.
도 1 및 도 13을 참조하면, 스토리지 장치(100)는 호스트(200)로부터 제1 슈퍼 블록의 제2 블록에 대한 리드 요청을 수신할 수 있다(S41). 스토리지 장치(100)는 히스토리 버퍼(HB)를 엑세스하여 제1 슈퍼 블록의 히스토리 리드 레벨을 독출할 수 있다(S42). 예컨대, 히스토리 리드 레벨은 도 12의 단계 34에서 저장된 제1 블록의 리드 성공 시 획득된 리드 레벨일 수 있다.
스토리지 장치(100)는 히스토리 리드 레벨에 제1 블록과 제2 블록 간 특성차이를 나타내는 오프셋을 부가하여 조정된 리드 레벨을 산출할 수 있다(S43). 예를 들어, 제1 블록 및 제2 블록이 각각 제1 디바이스 및 제2 디바이스에 포함될 경우, 컨트롤로(110)는 디바이스 오프셋을 포함하는 오프셋 테이블(도 9a의 OTa)을 참조하여 제1 디바이스 오프셋(DO1) 및 제2 디바이스 오프셋(DO2)의 차이를 히스토리 리드 레벨에 오프셋으로서 부가함으로써, 조정된 리드 레벨을 산출할 수 있다. 또는 컨트롤러(110)는 블록 오프셋을 포함하는 오프셋 테이블(도 9b의 OTb)을 참조하여 제1 블록의 오프셋 및 제2 블록의 오프셋의 차이를 히스토리 리드 레벨에 오프셋으로서 부가함으로써, 조정된 리드 레벨을 산출할 수 있다.
스토리지 장치(100)는 조정된 리드 레벨을 기초로 제2 블록에 대하여 히스토리 리드를 수행할 수 있다(S44).
도 14a 및 도 14b는 본 개시의 실시예에 따른 스토리지 장치의 컨트롤러 및 비휘발성 메모리의 동작을 나타낸다.
도 14a를 참조하면, 컨트롤러(110)는 리드 커맨드를 발행(issue)하고(S111), 리드 커맨드를 비휘발성 메모리(120)로 전송할 수 있다(S1120. 컨트롤러(110)는 호스트(도 1의 200)로부터의 리드 요청에 응답하여 리드 커맨드를 발행하거나 또는 백그라운드 리드 동작 수행에 따라 자체적으로 리드 커맨드를 발행할 수 있다. 컨트롤러(110)는 리드 커맨드와 함께, 리드가 수행될 물리 영역, 예컨대 물리 페이지에 대한 어드레스, 및 디폴트 리드 레벨을 제어 신호로서 비휘발성 메모리(120)에 전송할 수 있다.
비휘발성 메모리(120)는 디폴트 리드 레벨을 기초로 노멀 리드를 수행할 수 있다(S121). 비휘발성 메모리(120)는 리드된 데이터를 컨트롤러(120)에 전송할 수 있다(S122).
컨트롤러(110)는 노멀 리드 동작의 실패 여부를 판단할 수 있다(S113). 구체적으로, ECC 모듈(도 7의 115)은 수신한 데이터에 대해 ECC 동작을 수행하고, 수신한 데이터에서 검출된 페일 비트의 개수가 ECC 모듈(115)의 에러 정정 능력을 초과하는지 판단할 수 있다. 판단 결과, 페일 비트의 개수가 에러 정정 능력을 초과하지 않는 경우 또는 데이터가 페일 비트를 포함하지 않는 경우 노멀 리드 동작이 성공한 것으로 판단하고, 컨트롤러(110)는 히스토리 버퍼(HB)에 리드 레벨, 예컨대 디폴트 리드 레벨을 히스토리 리드 레벨로서 저장할 수 있다(S118).
한편, 페일 비트의 개수가 에러 정정 능력을 초과하는 경우 노멀 리드 동작이 실패한 것으로 판단하고, 컨트롤러(110)는 방어 코드를 실행할 수 있다(S114). 컨트롤러(110)는 방어 코드 실행에 따라 리드 리트라이 커맨드를 발행할 수 있다(S115). 컨트롤러(110)는 또한, 리드 실패한 물리 영역에 대한 어드레스를 발행하고, 리드 리트라이 전압을 수정된 리드 레벨로 결정할 수 있다. 컨트롤러(110)는 리드 리트라이 커맨드를 비휘발성 메모리(120)에 전송할 수 있다. 컨트롤러(110)는 비휘발성 메모리(120)에 리드 리트라이 커맨드와 함께 어드레스를 전송하고, 리드 리트라이 전압, 즉 수정된 리드 레벨을 제어 신호로써 전송할 수 있다.
비휘발성 메모리(120)는 수정된 리드 레벨을 기초로 리드 리트라이를 수행하고(S123), 리드 리트라이에 의해 리드된 데이터를 컨트롤러(110)에 전송할 수 있다(S124).
컨트롤러(110)는 리드 리트라이의 리드 실패 여부를 판단할 수 있다(S117). 단계 S113에서 설명한 바와 같이, ECC 모듈(115)이 수신한 데이터에 대해 ECC 동작을 수행하고, 그 결과를 기초로 리드 실패 여부를 판단할 수 있다. 리드 실패한 경우, 컨트롤러(110)는 다시 S114 단계를 수행하고, 리드 성공 시, 컨트롤러(110)는 히스토리 버퍼(HB)에 리드 레벨, 다시 말해서 수정된 리드 레벨을 히스토리 리드 레벨로서 저장할 수 있다(S118). 이로써, 히스토리 버퍼(HB)에 슈퍼 블록의 히스토리 리드 레벨이 저장될 수 있다.
도 14b는 도 14a의 동작들 이후의 히스토리 리드에 따른 컨트롤러(110) 및 비휘발성 메모리(120)의 동작을 나타낸다.
도 14b를 참조하면, 컨트롤러(110)는 호스트(200)로부터 리드 요청을 수신할 수 있다(S211). 컨트롤러(110)는 호스트(200)로부터 리드 요청 및 어드레스를 수신할 수 있다.
컨트롤러(110)는 히스토리 버퍼를 확인할 수 있다(S212). 컨트롤러(110)는 히스토리 버퍼(HB)에서 수신된 어드레스, 즉 논리 페이지에 대응하는 물리 페이지가 포함되는 슈퍼 블록의 히스토리 리드 레벨을 독출할 수 있다.
컨트롤러(110)는 리드 커맨드를 비휘발성 메모리(120)에 전송할 수 있다. 컨트롤러(110)는, 히스토리 리드 레벨을 제어 신호로서 리드 컨맨드와 함께 비휘발성 메모리(120)로 전송할 수 있다.
비휘발성 메모리(120)는 히스토리 리드 레벨을 기초로 히스토리 리드를 수행할 수 있다(S221). 비휘발성 메모리(120)는 히스토리 리드에 의하여 리드된 데이터를 컨트롤러(110)에 전송할 수 있다(S214).
이후, 컨트롤러(110)는 수신한 데이터에 대해 ECC 동작을 수행함으로써, 리드 실패 여부를 판단할 수 있다(S214). 리드 성공 시, 컨트롤러(110)는 데이터를 호스트(200)로 전송할 수 있다(S220).
리드 실패 시, 컨트롤러(110)는 방어 코드를 실행하여 리드 리트라이를 수행할 수 있다. 이후에 컨트롤러(110)에서 수행되는 단계 S215 내지 S218는 도 14a의 단계 S114 내지 S117과 동일하고, 비휘발성 메모리(120)에서 수행되는 단계 S223 및 S224는 도 14a의 단계 S123 및 S124와 동일하다. 따라서, 중복되는 설명은 생략하기로 한다.
한편, 단계 S218에서 리드 성공 시, 컨트롤러(110)는 히스토리 버퍼의 히스토리 리드 레벨을 업데이트할 수 있다(S218). 컨트롤러(110)는 단계 S215에서 방어 코드 실행에 따라 결정된 수정된 리드 레벨을 기초로 히스토리 리드 레벨을 업데이트할 수 있다. 또한, 컨트롤러(110)는 데이터를 호스트(200)로 전송할 수 있다(S220).
도 15는 본 개시의 예시적 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 도 15는 호스토로부터 리드 요청이 수신되었을 때 수행되는 호스트 리드 동작을 설명한다. 도 15의 동작은 도 1의 스토리지 장치(100)에서 수행될 수 있다. 따라서, 도 1을 함께 참조하여 설명한다.
스토리지 장치(110)는 호스트(200)로부터 리드 요청 및 어드레스를 수신할 수 있다(S310). 어드레스는 논리 영역에 대한 어드레스, 즉 논리 어드레스를 포함하고, 스토리지 장치(110)는 논리 영역에 대응하는 물리 영역, 예컨대 물리 페이지를 판단하고, 물리 영역이 포함되는 블록 및 슈퍼 블록을 판단할 수 있다.
스토리지 장치(110)는 히스토리 버퍼(HB)가 비었는지 확인할 수 있다(S320). 여기서, 히스토리 버퍼(HB)가 비었다는 것은 리드될 블록에 대응하는 슈퍼 블록의 히스토리 리드 레벨이 히스토리 버퍼(HB)에 저장되지 않았음을 의미한다. 예를 들어, 히스토리 버퍼(HB)에 리드될 블록에 대응하는 슈퍼 블록이 아닌 다른 슈퍼 블록의 히스토리 리드 레벨이 히스토리 버퍼(HB)에 저장된 경우, 히스토리 버퍼(HB)가 비었다고 판단할 수 있다.
스토리지 장치(110)는 히스토리 버퍼(HB)가 비어있는 경우, 다시 말해서 히스토리 버퍼(HB)에 리드될 물리 영역에 대응하는 슈퍼 블록의 히스토리 리드 레벨이 존재하지 않는 경우, 디폴트 리드 레벨을 기초로 노멀 리드를 수행할 수 있다(S330). 반대로, 히스토리 버퍼(HB)가 비어있지 않은 경우, 다시 말해서, 히스토리 버퍼(HB)에 리드될 물리 영역에 대응하는 슈퍼 블록의 히스토리 리드 레벨이 존재하는 경우, 히스토리 리드 레벨을 기초로 히스토리 리드를 수행할 수 있다(S340).
노멀 리드 또는 히스토리 리드 수행 후, 스토리지 장치(110)는 리드 성공 여부를 판단하고(S350). 리드 실패 시, 리드 리트라이를 수행할 수 있다(S360). 스토리지 장치(110)는 리드 리트라이 성공 시의 수정된 리드 레벨을 기초로 히스토리 버퍼의 히스토리 리드 레벨을 업데이트할 수 있다(S380). 스토리지 장치(110)는 리드 데이터를 호스트로 전송할 수 있다(S390).
한편, 도 15에서는 호스트 리드 동작에 따라 단계 S360에서 히스토리 버퍼가 업데이트 되었다. 그러나, 이에 제한되는 것은 아니며, 스토리지 장치(100)의 백그라운드 리드 동작에 따라 히스토리 버퍼가 업데이트 될 수 있다. 이에 대하여 도 16을 참조하여 설명하기로 한다.
도 16은 본 개시의 예시적 실시예에 따른 스토리지 장치의 히스토리 버퍼 업데이트 방법을 나타내는 흐름도이다. 도 16의 동작은 도 1의 스토리지 장치(100)에서 시계열 적으로 수행될 수 있다.
도 1 및 도 16을 참조하면, 스토리지 장치(100)는 비휘발성 메모리(120)의 복수의 슈퍼 블록 각각의 대표 블록에 대하여 백그라운드 리드를 수행할 수 있다(S410). 스토리지 장치(100)는 복수의 슈퍼 블록 각각에 대하여 하나의 블록을 대표 블록으로서 미리 설정하고, 대표 블록들에 대하여 차례로 백그라운드 리드를 수행할 수 있다. 스토리지 장치(100)는 주기적으로 또는 비주기적으로 백그라운드 리드를 수행할 수 있다. 예를 들어, 스토리지 장치(100)는 슈퍼 블록에 대한 리드 동작이 수행된 후, 소정의 시간이 경과되면, 히스토리 버퍼(HB)에 기 저장된 히스토리 리드 레벨을 기초로 단계 S410의 백그라운드 리드를 수행할 수 있다.
스토리지 장치(100)는 리드 실패 여부를 판단하고(S420). 리드 실패 시 리드 리트라이를 수행할 수 있다(S430). 스토리지 장치(100)는 리드 리트라이가 성공하면, 수정된 리드 레벨을 기초로 히스토리 버퍼(HB)를 업데이트할 수 있다(S430). 스토리지 장치(110)는 수정된 리드 레벨을 단계 S410에서 백그라운드 리드가 수행된 대표 블록에 대응하는 슈퍼 블록의 히스토리 리드 레벨로서 히스토리 버퍼(HB)에 저장할 수 있다. 반면, S420 단계에서 리드 성공으로 판단되면, 스토리지 장치(100)는 히스토리 버퍼의 업데이트 없이 백그라운드 리드를 종료할 수 있다.
도 17은 본 개시의 예시적 실시예에 따른 스토리지 장치의 슈퍼 블록 그룹핑 방법의 일 예를 나타내는 흐름도이다.
도 1 및 도 17을 참조하면, 스토리지 장치(100)가 초기화될 수 있다(S510). 예컨대, 스토리지 장치(100)가 사용되던 중 초기화 되거나, 또는 제조 단계 이후에 초기화 될 수 있다.
스토리지 장치(100)의 컨트롤러(110)는 비휘발성 메모리(120)로부터 복수의 블록들 각각에 대한 특성 정보를 리드할 수 있다(S520). 제조 단계 또는 그 이후의 테스트 단계에서, 복수의 블록들 각각의 특성이 검출되고, 특성 정보가 디바이스에 저장될 수 있다. 컨트롤러(110)는 복수의 디바이스들로부터 해당하는 볼록들의 특성 정보를 리드할 수 있다.
컨트롤러(110)는 특성 정보를 기초로 복수의 블록들을 복수의 슈퍼 블록으로 그룹핑할 수 있다(S530). 컨트롤러(110)는 유사한 특성을 갖는 블록들을 하나의 슈퍼 블록으로 그룹핑할 수 있다. 이후, 컨트롤러(110)는 슈퍼 블록 단위로 전술한 바와 같이, 메타데이터 및 히스토리 버퍼를 관리할 수 있다.
도 18은 본 개시의 예시적 실시예에 따른 스토리지 장치의 슈퍼 그룹 재그룹핑 방법을 나타내는 흐름도이고, 도 19a 및 도 19b는 도 18의 재그룹핑의 구현예들을 나타낸다.
도 18을 참조하면, 스토리지 장치(110)는 비휘발성 메모리(120)의 복수의 블록들 각각에 대하여 백그라운드 리드를 수행한다(S610). 스토리지 장치(110)는 백그라운드 리드 결과를 기초로 복수의 블록들 각각에 대한 특성값을 산출할 수 있다(S620). 예를 들어, 특성값은 문턱 전압 산포의 폭, 문턱 전압의 최소 레벨 등을 포함할 수 있다.
스토리지 장치(110)는 특성 값을 기초로 복수의 블록들을 재그룹핑할 수 있다(S630).
실시예에 있어서, 스토리지 장치(110)는 도 19a에 도시된 바와 같이, 복수의 블록을 특성값이 동일 또는 유사한 블록들이 동일한 슈퍼 블록에 포함되도록 재그룹핑할 수 있다. 도 19a에서 재그룹핑 이전에는 복수의 디바이스들(D1~D8) 내에서 동일한 위치의 블록들이 하나의 슈퍼 블록으로 그룹핑 될 수 있다. 스토리지 장치(110)는 백그라운드 리드에 따라 검출된 복수의 블록들의 특성 값을 기초로 재그룹핑을 수행하고, 각 블록들의 위치에 관계없이 동일 또는 유사한 특성 값을 갖는 블록들이 하나의 슈퍼 블록으로 그룹핑될 수 있다.
실시예에 있어서, 스토리지 장치(110)는 특성값을 기초로 결함이 발생한 블록을 판단하고, 슈퍼 블록에서 결함이 발생한 블록을 다른 블록으로 대체할 수 있다. 예컨대 도 19b를 참조하면, 블록 B12 내지 B82가 제2 슈퍼 블록(SB)으로 그룹핑될 수 있으며, 백그라운드 리드에 따라 블록 B82에 결함이 발생되었다고 판단될 경우, 블록 B82는 블록 Bd8로 대체될 수 있다. 이에 따라, 이후 블록 B12, B22 및 Bd8이 제2 슈퍼 블록(SB2)으로 그룹핑될 수 있다.
계속하여 도 18을 참조하면, 스토리지 장치(110)는 재그룹핑된 슈퍼 블록 단위로 메타데이터 및 히스토리 버퍼를 관리할 수 있다(S640).
도 20은 본 개시의 예시적 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이고, 도 21은 도 20의 동작 방법을 예시적으로 설명한다.
도 20을 참조하면, 스토리지 장치(100)는 복수의 블록을 포함하는 메모리 그룹 단위로 비휘발성 메모리의 열화를 관리할 수 있으며(S10a), 메모리 그룹의 서브 그룹 단위로 히스토리 버퍼 및 리드 동작을 관리할 수 있다(S20).
도 21을 참조하면, 복수의 디바이스(D1 내지 D8)이 비휘발성 메모리(120)를 구성하고, 복수의 디바이스(D1 내지 D8)의 적어도 하나의 블록이 슈퍼 블록으로 그룹핑될 수 있다. 예를 들어 복수의 디바이스(D1 내지 D8) 각각의 첫번째 블록, 예컨대 블록 B11 내지 B81이 제1 슈퍼 블록(SB)으로 그룹핑될 수 있다. 한편, 슈퍼 블록, 예컨대 제1 슈퍼 블록(SB1) 내에서 유사한 특성을 갖는 블록들이 서브 그룹으로 그룹핑될 수 있다. 예를 들어, 제1 슈퍼 블록(SB1)에서, 블록 B11, B21,B31, B51이 제1 서브 그룹(SG1)에 포함되고, 블록 B41, B61, B71, B81이 전기적 특성이 유사하며 제2 서브 그룹(SG1)에 포함될 수 있다.
스토리지 장치(100)는 복수의 슈퍼 블록들(SB1 내지 SBk) 각각에 대한 프로그램 및 소거 횟수를 카운팅 및 저장함으로써, 비휘발성 메모리(120)의 열화를 슈퍼 블록 단위로 관리하고, 서브 그룹, 예컨대 제1 서브 그룹(SG1), 및 제2 서브 그룹(SG2) 별로 히스토리 리드 레벨을 저장 및 업데이트함으로써, 서브 그룹 단위로 히스토리 버퍼 및 리드 동작을 관리할 수 있다.
도 22는 본 개시의 예시적 실시예에 따른 SSD 및 이를 포함하는 SSD 시스템을 나타내는 블록도이다.
도 22를 참조하면, SSD 시스템(1000)은 호스트(1100), 및 SSD(1200)를 포함할 수 있다. SSD(1200)는 호스트(1100)와 통신하며, 호스트(1100)와 신호, 예컨대 커맨드, 어드레스, 데이터 등을 주고받을 수 있다. SSD(1200) 는 호스트(2100)로부터 전원을 수신하여 동작할 수 있다.
SSD(1200)는 SSD 컨트롤러(1210), 복수의 비휘발성 메모리 장치(1220, 1230, 1240) 및 버퍼 메모리(1300)를 포함할 수 있다. 도 1 내지 도 21을 참조하여 설명한 스토리지 장치(100) 및 컨트롤러(110)가 SSD(1200) 및 SSD 컨트롤러(1210)에 각각 적용될 수 있다. 복수의 비휘발성 메모리 장치(1220, 1230, 1240)는 복수의 반도체 칩으로 구현될 수 있다. SSD 컨트롤러(1210)는 복수의 채널(CH1, CH2, CHn)을 통해 복수의 비휘발성 메모리 장치(1220, 1230, 1240)와 통신할 수 있다. 예를 들어, 비휘발성 메모리 장치(1220, 1230, 1240)를 구성하는 각각의 메모리 칩에 포함된 적어도 하나의 메모리 블록이 슈퍼 블록을 구성하고, SSD(1200)는 슈퍼 블록 단위로 메타데이터(예컨대 열화도, 프로그램 및 소거 횟수) 및 히스토리 버퍼(예컨대 히스토리 리드 레벨)을 관리할 수 있다.
버퍼 메모리(1300)는 휘발성 메모리, 또는 저항성 메모리로 구현될 수 있으며, 예컨대 버퍼 메모리(1300)는 DRAM일 수 있다. 버퍼 메모리(1300)는 호스트(1100)로부터 수신되어 복수의 비휘발성 메모리 장치(1220, 1230, 1240)에 저장될 데이터를 임시 저장하거나 또는 복수의 비휘발성 메모리 장치(1220, 1230, 1240)로부터 독출되어 호스트(1100)로 전송될 데이터를 임시 저장할 수 있다. 실시예에 있어서, 히스토리 버퍼는 버퍼 메모리(1300)의 일부로서 구현될 수 있다.
전술한 본 개시의 실시예에 따른 스토리지 시스템은 SSD 시스템(1000)뿐만 아니라, 메모리 카드 시스템, UFS(Universal Flash Storage), embedded storage 등에 탑재되거나 적용될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
Claims (20)
- 비휘발성 메모리를 포함하는 스토리지 장치의 동작 방법에 있어서,
상기 비휘발성 메모리에 대한 프로그램 및 소거 횟수를, 상기 비휘발성 메모리의 복수의 블록을 포함하는 슈퍼 블록 단위로 메타 데이터로서 저장하는 단계;
제1 리드 레벨을 기초로 제1 슈퍼 블록에 포함되는 제1 블록에 대하여 리드를 수행하는 단계;
상기 제1 블록에 대한 리드 동작이 성공하면, 상기 제1 리드 레벨을 상기 제1 슈퍼 블록의 히스토리 리드 레벨로서 히스토리 버퍼에 저장하는 단계;
호스트로부터 상기 제1 슈퍼 블록의 제2 블록에 대한 리드 요청 및 어드레스를 수신하는 단계; 및
상기 히스토리 버퍼에 저장된 상기 히스토리 리드 레벨을 기초로, 상기 제2 블록에 대한 리드를 수행하는 단계를 포함하는 방법. - 제1항에 있어서,
상기 제2 블록에 대한 리드 동작이 실패하면, 수정된 리드 레벨을 이용하여 상기 제2 블록에 대하여 리드 리트라이를 수행하는 단계; 및
상기 수정된 리드 레벨을 기초로 상기 히스토리 버퍼에 저장된 상기 제1 슈퍼 블록의 상기 리드 레벨을 업데이트하는 단계를 더 포함하는 방법. - 제1 항에 있어서, 상기 제2 블록에 대한 리드를 수행하는 단계는,
상기 히스토리 버퍼에 상기 제1 슈퍼 블록에 대한 상기 히스토리 리드 레벨이 존재하는지 여부를 확인하는 단계;
상기 히스토리 리드 레벨이 존재하는 경우, 상기 히스토리 리드 레벨을 기초로 히스토리 리드를 수행하는 단계; 및
상기 히스토리 리드 레벨이 존재하지 않는 경우, 디폴트 리드 레벨을 기초로 노멀 리드를 수행하는 단계를 포함하는 방법. - 제3 항에 있어서, 상기 제2 블록에 대한 리드를 수행하는 단계는,
리드 실패 시, 수정된 리드 레벨을 기초로 리드 리트라이를 수행하는 단계; 및
상기 수정된 리드 레벨을 상기 제1 슈퍼 블록의 상기 히스토리 리드 레벨로 저장함으로써, 상기 히스토리 버퍼를 업데이트 하는 단계를 더 포함하는 방법. - 제1 항에 있어서, 상기 제2 블록에 대한 리드를 수행하는 단계는,
상기 히스토리 리드 레벨에 상기 제1 블록과 상기 제2 블록 간의 특성 차이를 나타내는 오프셋을 부가하여 조장된 리드 레벨을 산출하는 단계; 및
상기 조정된 리드 레벨을 기초로 상기 제2 블록에 대하여 리드를 수행하는 단계를 포함하는 방법. - 제5 항에 있어서,
상기 비휘발성 메모리는 복수의 메모리 디바이스로 구성되고, 상기 복수의 메모리 디바이스 각각에 해당 디바이스의 전기적 특성을 나타내는 디바이스 오프셋이 저장되며,
상기 제1 블록 및 상기 제2 블록은 상기 복수의 메모리 디바이스 중 제1 메모리 디바이스 및 제2 메모리 디바이스에 포함되며, 상기 제1 메모리 디바이스의 디바이스 오프셋 및 상기 제2 메모리 디바이스의 디바이스 오프셋을 기초로 상기 오프셋이 산출되는 것을 특징으로 하는 방법. - 제1 항에 있어서,
상기 복수의 블록의 특성을 기초로 상기 복수의 블록을 상기 복수의 슈퍼 블록으로 그룹핑하는 단계를 더 포함하는 방법. - 제1 항에 있어서, 상기 제1 슈퍼 블록에서 선택된 적어도 하나의 블록에 대하여 백그라운드 리드를 수행하는 단계;
상기 백그라운드 리드 실패 시, 수정된 리드 레벨을 기초로 리드 리트라이를 수행하는 단계; 및
상기 수정된 리드 레벨을 상기 제1 슈퍼 블록의 상기 히스토리 리드 레벨로서 저장하여 상기 히스토리 버퍼를 업데이트 하는 단계를 더 포함하는 방법. - 제1 항에 있어서,
상기 복수의 블록들 각각에 대하여 백그라운드 리드를 수행하는 단계;
상기 백그라운드 리드를 기초로 상기 복수의 블럭 각각의 특성 값을 산출하는 단계;
상기 특성 값을 기초로 상기 복수의 블록 중 결함이 발생한 블록을 검출하는 단계; 및
상기 결함이 발생한 블록을 다른 블록으로 대체하는 단계를 더 포함하는 방법. - 제1 항에 있어서, 상기 제1 블록에 대하여 리드를 수행하는 단계는,
호스트로부터 수신되는 리드 요청에 응답하여 디폴트 리드 레벨을 기초로 수행되는 것을 특징으로 하는 방법. - 복수의 물리 블록을 포함하는 비휘발성 메모리;
상기 복수의 물리 블록을 복수의 그룹으로 그룹핑하여, 상기 복수의 그룹 각각에 대한 프로그램 및 소거 횟수를 메타 데이터로서 저장하고, 상기 복수의 그룹 각각에 대한 리드 레벨을 히스토리 버퍼에 저장하며, 호스트로부터 리드 커맨드 및 어드레스가 수신되면, 상기 어드레스에 대응하는 물리 블록에 대하여 상기 히스토리 버퍼에 저장된 복수의 리드 레벨들 중 대응하는 리드 레벨을 기초로 리드를 수행하도록 상기 비휘발성 메모리를 제어하는 컨트롤러를 포함하는 스토리지 장치. - 제11 항에 있어서, 상기 컨트롤러는,
상기 대응하는 리드 레벨을 기초로 상기 물리 블록에 대하여 수행된 리드가 실패로 판단되면, 상기 리드 레벨을 수정하고, 수정된 리드 레벨을 기초로 상기 물리 블록에 대하여 리드 리트라이를 수행하는 것을 특징으로 하는 스토리지 장치. - 제12 항에 있어서, 상기 컨트롤러는,
상기 수정된 리드 레벨을 기초로 상기 물리 블록에 대하여 수행된 상기 리드 리트라이가 성공으로 판단되면, 상기 히스토리 버퍼에 저장된 상기 리드 레벨을 상기 수정된 리드 레벨로 업데이트하는 것을 특징으로 하는 스토리지 장치. - 제11 항에 있어서, 상기 컨트롤러는,
상기 대응하는 리드 레벨이 상기 물리 불록이 포함된 그룹의 다른 물리 블록을 기초로 결정된 경우, 상기 리드 레벨에 상기 물리 블록과 상기 다른 물리 블록 간 특성 차이에 기초한 오프셋을 부가하여 조정된 리드 레벨을 결정하고, 상기 조정된 리드 레벨을 상기 물리 블록에 대한 리드 수행 시 이용하도록 상기 비휘발성 메모리로 전송하는 것을 특징으로 하는 스토리지 장치. - 제11 항에 있어서, 상기 컨트롤러는,
상기 복수의 물리 블록에 대하여 백그라운드 리드가 수행되도록 상기 비휘발성 메모리를 제어하고, 상기 백그라운드 리드에 기초하여 산출된 상기 복수의 블물리 블록 각각의 특성 값을 기초로 상기 복수의 물리 블록을 재그룹핑하는 것을 특징으로 하는 스토리지 장치. - 비휘발성 메모리를 포함하는 스토리지 장치의 동작 방법에 있어서,
상기 비휘발성 메모리의 복수의 메모리 그룹 중 제1 메모리 그룹에 포함되는 제1 블록에 대하여 제1 리드 레벨을 기초로 리드를 수행하는 단계;
상기 제1 블록에 대한 리드 동작이 성공하면, 상기 제1 리드 레벨을 상기 제1 메모리 그룹에 대한 리드 레벨로서 히스토리 버퍼에 저장하는 단계;
호스트로부터 상기 제1 메모리 그룹에 포함되는 제2 블록에 대한 리드 요청 및 어드레스를 수신하는 단계;
상기 히스토리 버퍼에 저장된 상기 제1 리드 레벨, 및 상기 제1 블록과 상기 제2 블록 간 특성 차이를 나타내는 오프셋을 기초로 제2 리드 레벨을 결정하는 단계; 및
상기 제2 리드 레벨을 기초로 상기 제2 블록에 대한 리드를 수행하는 단계를 포함하는 방법. - 제16 항에 있어서,
상기 제1 리드 레벨은, 상기 제1 메모리 그룹에 대하여 미리 설정된 디폴트 리드 레벨인 것을 특징으로 하는 방법. - 제16 항에 있어서, 상기 비휘발성 메모리의 프로그램 및 소거 횟수를 상기 복수의 메모리 그룹 별로 카운트하여 메타 데이터로서 저장하는 단계를 더 포함하는 방법.
- 제16 항에 있어서,
상기 비휘발성 메모리는 복수의 메모리 디바이스로 구성되고, 상기 복수의 메모리 디바이스 각각에 해당 디바이스의 전기적 특성을 나타내는 디바이스 오프셋이 저장되며,
상기 제1 블록 및 상기 제2 블록은 상기 복수의 메모리 디바이스 중 제1 메모리 디바이스 및 제2 메모리 디바이스에 배치되며, 상기 제1 메모리 디바이스의 디바이스 오프셋 및 상기 제2 메모리 디바이스의 디바이스 오프셋을 기초로 상기 오프셋이 산출되는 것을 특징으로 하는 방법. - 제19 항에 있어서,
상기 제1 메모리 디바이스 내에서 상기 제1 블록의 위치와 상기 제2 메모리 디바이스 내에서 상기 제2 블록의 위치가 동일한 것을 특징으로 하는 방법.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190158459A KR20210068894A (ko) | 2019-12-02 | 2019-12-02 | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
US17/038,416 US11335423B2 (en) | 2019-12-02 | 2020-09-30 | Storage device and method of operating the same |
CN202011400563.1A CN112988614A (zh) | 2019-12-02 | 2020-12-02 | 存储设备以及操作存储设备的方法 |
JP2020200159A JP2021089733A (ja) | 2019-12-02 | 2020-12-02 | ストレージ装置、及び該ストレージ装置の動作方法 |
US17/729,048 US11862263B2 (en) | 2019-12-02 | 2022-04-26 | Storage device and method of operating the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190158459A KR20210068894A (ko) | 2019-12-02 | 2019-12-02 | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210068894A true KR20210068894A (ko) | 2021-06-10 |
Family
ID=76091717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190158459A KR20210068894A (ko) | 2019-12-02 | 2019-12-02 | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11335423B2 (ko) |
JP (1) | JP2021089733A (ko) |
KR (1) | KR20210068894A (ko) |
CN (1) | CN112988614A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230032647A (ko) * | 2021-08-31 | 2023-03-07 | 삼성전자주식회사 | 스토리지 장치, 스토리지 컨트롤러 및 스토리지 컨트롤러의 동작 방법 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210068894A (ko) | 2019-12-02 | 2021-06-10 | 삼성전자주식회사 | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
KR20210088996A (ko) * | 2020-01-07 | 2021-07-15 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 이의 동작 방법 |
KR20210121650A (ko) * | 2020-03-31 | 2021-10-08 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치, 컨트롤러 및 이들을 포함하는 메모리 시스템의 동작 방법 |
US11853599B2 (en) * | 2020-03-31 | 2023-12-26 | Kioxia Corporation | Memory system and information processing system |
US11600354B2 (en) | 2020-08-18 | 2023-03-07 | Micron Technology, Inc. | Determination of state metrics of memory sub-systems following power events |
US11636913B2 (en) * | 2020-08-18 | 2023-04-25 | Micron Technology, Inc. | Tracking and refreshing state metrics in memory sub-systems |
US11635915B2 (en) * | 2021-03-17 | 2023-04-25 | Macronix International Co., Ltd. | Managing memory reliability in memory systems |
US11593005B2 (en) * | 2021-03-31 | 2023-02-28 | Micron Technology, Inc. | Managing voltage bin selection for blocks of a memory device |
US11966607B2 (en) * | 2021-09-29 | 2024-04-23 | Silicon Motion, Inc. | Method and non-transitory computer-readable storage medium and apparatus for accessing to encoding-history information |
KR102641756B1 (ko) | 2021-11-11 | 2024-02-29 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
KR20240015986A (ko) * | 2022-07-28 | 2024-02-06 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러, 메모리 컨트롤러를 포함하는 메모리 시스템 및 그것의 동작 방법 |
WO2024026659A1 (en) * | 2022-08-02 | 2024-02-08 | Micron Technology, Inc. | Balancing pec in memory systems |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080052446A1 (en) * | 2006-08-28 | 2008-02-28 | Sandisk Il Ltd. | Logical super block mapping for NAND flash memory |
US9218890B2 (en) | 2013-06-03 | 2015-12-22 | Sandisk Technologies Inc. | Adaptive operation of three dimensional memory |
KR102290974B1 (ko) | 2014-11-07 | 2021-08-19 | 삼성전자주식회사 | 불휘발성 메모리 장치, 메모리 컨트롤러 및 그것들을 포함하는 불휘발성 메모리 시스템의 동작 방법 |
KR102251815B1 (ko) | 2015-07-02 | 2021-05-13 | 삼성전자주식회사 | 메모리 장치 및 메모리 시스템 |
US10481830B2 (en) | 2016-07-25 | 2019-11-19 | Sandisk Technologies Llc | Selectively throttling host reads for read disturbs in non-volatile memory system |
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 |
JP2019057178A (ja) | 2017-09-21 | 2019-04-11 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
KR20190088184A (ko) | 2018-01-18 | 2019-07-26 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR102516106B1 (ko) | 2018-02-14 | 2023-03-31 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
CN110751974A (zh) * | 2018-07-23 | 2020-02-04 | 爱思开海力士有限公司 | 存储器系统和用于优化读取阈值的方法 |
KR20200038812A (ko) * | 2018-10-04 | 2020-04-14 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
KR20210030599A (ko) * | 2019-09-10 | 2021-03-18 | 에스케이하이닉스 주식회사 | 데이터를 분산 리드할 수 있는 메모리 시스템 및 메모리 시스템의 동작방법 |
KR20210068894A (ko) | 2019-12-02 | 2021-06-10 | 삼성전자주식회사 | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
-
2019
- 2019-12-02 KR KR1020190158459A patent/KR20210068894A/ko active IP Right Grant
-
2020
- 2020-09-30 US US17/038,416 patent/US11335423B2/en active Active
- 2020-12-02 CN CN202011400563.1A patent/CN112988614A/zh active Pending
- 2020-12-02 JP JP2020200159A patent/JP2021089733A/ja active Pending
-
2022
- 2022-04-26 US US17/729,048 patent/US11862263B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230032647A (ko) * | 2021-08-31 | 2023-03-07 | 삼성전자주식회사 | 스토리지 장치, 스토리지 컨트롤러 및 스토리지 컨트롤러의 동작 방법 |
US11914892B2 (en) | 2021-08-31 | 2024-02-27 | Samsung Electronics Co., Ltd. | Storage device adjusting history read level storage areas based on reliabilities of memory blocks, storage controller, and operating method of storage controller |
Also Published As
Publication number | Publication date |
---|---|
JP2021089733A (ja) | 2021-06-10 |
US20220254422A1 (en) | 2022-08-11 |
US11862263B2 (en) | 2024-01-02 |
US20210166774A1 (en) | 2021-06-03 |
CN112988614A (zh) | 2021-06-18 |
US11335423B2 (en) | 2022-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20210068894A (ko) | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 | |
US10373693B2 (en) | Storage device and method of operating the storage device | |
CN107766257B (zh) | 存储器系统及其操作方法 | |
KR20120030816A (ko) | 플래시 메모리 및 그것의 셀프 인터리빙 방법 | |
KR102553170B1 (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR20190128794A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR20200126533A (ko) | 메모리 시스템 및 그의 온도 조절 방법 | |
KR20210097353A (ko) | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 | |
US11726878B2 (en) | Memory system and operating method thereof | |
US20210382655A1 (en) | Memory device, memory system, and operation method of memory device | |
KR20210012123A (ko) | 메모리 시스템, 메모리 컨트롤러 및 동작 방법 | |
US11467903B2 (en) | Memory system and operating method thereof | |
US20220261185A1 (en) | Memory system and operating method of memory system | |
US11137942B2 (en) | Memory system, memory controller, and method of operating a memory system for determining a number of hit and miss requests about map segments in a map cache and determining whether or not to perform data read operation in parallel | |
CN112783435A (zh) | 存储设备和操作存储设备的方法 | |
CN111798913A (zh) | 存储器系统、存储器控制器及其操作方法 | |
KR20210051644A (ko) | 메모리 시스템, 메모리 컨트롤러 및 동작 방법 | |
US11704050B2 (en) | Memory system for determining a memory area in which a journal is stored according to a number of free memory blocks | |
US12118217B2 (en) | Memory system, memory controller and method for operating memory system, capable of determining target meta memory block on the basis of detected target state | |
US11822819B2 (en) | Memory system and operating method thereof | |
US11960359B2 (en) | Memory system, memory controller and operating method of memory system | |
US11636007B2 (en) | Memory system and operating method thereof for flushing data in data cache with parity | |
US11307807B2 (en) | Memory system, memory controller, and method for operating memory system for determining read biases for read retry operation | |
US20240004566A1 (en) | Memory system for managing namespace using write pointer and write count, memory controller, and method for operating memory system | |
KR20210132806A (ko) | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |