KR102614083B1 - 스토리지 장치 및 스토리지 장치의 동작 방법 - Google Patents
스토리지 장치 및 스토리지 장치의 동작 방법 Download PDFInfo
- Publication number
- KR102614083B1 KR102614083B1 KR1020160111905A KR20160111905A KR102614083B1 KR 102614083 B1 KR102614083 B1 KR 102614083B1 KR 1020160111905 A KR1020160111905 A KR 1020160111905A KR 20160111905 A KR20160111905 A KR 20160111905A KR 102614083 B1 KR102614083 B1 KR 102614083B1
- Authority
- KR
- South Korea
- Prior art keywords
- read
- controller
- valid data
- memory block
- memory
- Prior art date
Links
- 238000003860 storage Methods 0.000 title claims abstract description 41
- 230000015654 memory Effects 0.000 claims abstract description 176
- 238000000034 method Methods 0.000 claims description 9
- 239000000758 substrate Substances 0.000 description 46
- 238000012937 correction Methods 0.000 description 11
- 238000013519 translation Methods 0.000 description 8
- 230000005684 electric field Effects 0.000 description 5
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 101100049574 Human herpesvirus 6A (strain Uganda-1102) U5 gene Proteins 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 239000004020 conductor Substances 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 101150064834 ssl1 gene Proteins 0.000 description 2
- 101150011582 ssl4 gene Proteins 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 101100058970 Arabidopsis thaliana CALS11 gene Proteins 0.000 description 1
- 101100058961 Arabidopsis thaliana CALS2 gene Proteins 0.000 description 1
- 101100058964 Arabidopsis thaliana CALS5 gene Proteins 0.000 description 1
- 101100058967 Arabidopsis thaliana CALS8 gene Proteins 0.000 description 1
- 102100031885 General transcription and DNA repair factor IIH helicase subunit XPB Human genes 0.000 description 1
- 101000920748 Homo sapiens General transcription and DNA repair factor IIH helicase subunit XPB Proteins 0.000 description 1
- 101100287040 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ARG82 gene Proteins 0.000 description 1
- 101100341076 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) IPK1 gene Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- -1 for example Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000007769 metal material Substances 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 101150062870 ssl3 gene Proteins 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
-
- 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/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
- 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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
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)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
Abstract
본 발명은 스토리지 장치에 관한 것이다. 본 발명의 실시 예에 따른 스토리지 장치는 불휘발성 메모리 장치 및 컨트롤러를 포함한다. 불휘발성 메모리 장치는 복수의 메모리 블록들을 포함하고, 각 메모리 블록은 복수의 스트링 선택 라인들에 연결된 스트링 선택 트랜지스터들, 복수의 접지 선택 라인들에 연결된 접지 선택 트랜지스터들 및 복수의 워드 라인들에 연결된 메모리 셀들을 포함한다. 컨트롤러는 읽기 리클레임 동작 시에, 제1 메모리 블록의 유효 데이터 그룹들을 읽고 읽혀진 유효 데이터 그룹들을 제2 메모리 블록에 기입한다. 컨트롤러는 유효 데이터 그룹들의 읽기 카운트들에 따라 유효 데이터 그룹들이 제2 메모리 블록에 기입되는 위치들을 재배치한다.
Description
본 발명은 반도체 회로에 관한 것으로, 더 상세하게는 스토리지 장치 및 스토리지 장치의 동작 방법에 관한 것이다.
스토리지 장치는 컴퓨터, 스마트 폰, 스마트 패드 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 스토리지 장치는 하드 디스크 드라이브(HDD, Hard Disk Drive)와 같이 자기 디스크에 데이터를 저장하는 장치, 솔리드 스테이트 드라이브(SSD, Solid State Drive), 메모리 카드 등과 같이 반도체 메모리, 특히 불휘발성 메모리에 데이터를 저장하는 장치를 포함한다.
불휘발성 메모리는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등을 포함한다.
반도체 제조 기술이 발전되면서, 스토리지 장치의 고집적화 및 그에 따른 대용량화가 지속적으로 진행되고 있다. 스토리지 장치의 고집적화는 스토리지 장치의 생산 비용을 감소시킨다는 장점을 갖는다. 그러나 스토리지 장치의 고집적화로 인해 스토리지 장치의 스케일이 감소하고 구조가 변화하면서, 기존에 발견되지 않은 다양한 문제들이 발견되고 있다. 새롭게 발견되고 있는 다양한 문제들은 스토리지 장치에 저장된 데이터를 손상시킬 수 있으며, 따라서, 스토리지 장치의 신뢰성이 저해될 수 있다. 스토리지 장치의 신뢰성을 향상시킬 수 있는 방법 및 장치에 대한 요구가 지속적으로 제기되고 있다.
본 발명의 목적은 향상된 신뢰성을 갖는 스토리지 장치 및 스토리지 장치의 동작 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 스토리지 장치는 불휘발성 메모리 장치 및 컨트롤러를 포함한다. 불휘발성 메모리 장치는 복수의 메모리 블록들을 포함하고, 각 메모리 블록은 복수의 스트링 선택 라인들에 연결된 스트링 선택 트랜지스터들, 복수의 접지 선택 라인들에 연결된 접지 선택 트랜지스터들 및 복수의 워드 라인들에 연결된 메모리 셀들을 포함한다. 컨트롤러는 읽기 리클레임 동작 시에, 제1 메모리 블록의 유효 데이터 그룹들을 읽고 읽혀진 유효 데이터 그룹들을 제2 메모리 블록에 기입한다. 컨트롤러는 유효 데이터 그룹들의 읽기 카운트들에 따라 유효 데이터 그룹들이 제2 메모리 블록에 기입되는 위치들을 재배치한다.
본 발명은 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치의 동작 방법에 관한 것이다. 본 발명의 동작 방법은 불휘발성 메모리 장치의 제1 메모리 블록에 기입된 데이터 그룹들의 읽기 횟수들을 카운트하는 단계, 읽기 리클레임 시에 제1 메모리 블록에 기입된 데이터 그룹들을 불휘발성 메모리 장치의 제2 메모리 블록으로 복사하는 단계를 포함한다. 읽기 리클레임 시에, 데이터 그룹들의 읽기 카운트들에 따라 데이터 그룹들의 위치들이 재배치된다.
본 발명의 실시 예들에 따르면, 읽기 빈도가 높은 데이터가 읽기 동작 시에 더 적게 열화되는 위치의 메모리 셀들에 기입된다. 따라서, 향상된 신뢰성을 갖는 스토리지 장치 및 스토리지 장치의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치를 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 스토리지 장치의 동작 방법을 보여주는 순서도이다.
도 3은 본 발명의 실시 예에 따른 메모리 블록의 예를 보여준다.
도 4는 도 3의 메모리 블록의 하나의 셀 스트링의 구조의 예를 보여준다.
도 5는 메모리 셀들의 위치들에 따른 읽기 교란의 양의 차이의 예를 보여준다.
도 6은 읽기 리클레임 시에 선택된 메모리 블록의 데이터 그룹들이 새로운 메모리 블록에 기입되는 예를 보여준다.
도 7은 컨트롤러가 읽기 리클레임을 수행하는 예를 보여준다.
도 8은 컨트롤러가 읽기 리클레임을 수행하는 다른 예를 보여준다.
도 9는 본 발명의 실시 예에 따라 데이터 그룹들이 설정되는 예들을 보여준다.
도 2는 본 발명의 실시 예에 따른 스토리지 장치의 동작 방법을 보여주는 순서도이다.
도 3은 본 발명의 실시 예에 따른 메모리 블록의 예를 보여준다.
도 4는 도 3의 메모리 블록의 하나의 셀 스트링의 구조의 예를 보여준다.
도 5는 메모리 셀들의 위치들에 따른 읽기 교란의 양의 차이의 예를 보여준다.
도 6은 읽기 리클레임 시에 선택된 메모리 블록의 데이터 그룹들이 새로운 메모리 블록에 기입되는 예를 보여준다.
도 7은 컨트롤러가 읽기 리클레임을 수행하는 예를 보여준다.
도 8은 컨트롤러가 읽기 리클레임을 수행하는 다른 예를 보여준다.
도 9는 본 발명의 실시 예에 따라 데이터 그룹들이 설정되는 예들을 보여준다.
아래에서는, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재된다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치(200)를 보여주는 블록도이다. 도 1을 참조하면, 스토리지 장치(200)는 불휘발성 메모리 장치(210), 컨트롤러(220), 그리고 버퍼 메모리(230)를 포함한다.
불휘발성 메모리 장치(210)는 컨트롤러(220)의 제어에 따라 쓰기 동작, 읽기 동작 및 소거 동작을 수행할 수 있다. 불휘발성 메모리 장치(210)는 컨트롤러(220)로부터 쓰기 커맨드, 어드레스 및 데이터를 수신하고, 어드레스에 의해 식별되는 저장 공간에 데이터를 기입할 수 있다. 불휘발성 메모리 장치(210)는 컨트롤러(220)로부터 읽기 커맨드 및 어드레스를 수신하고, 어드레스에 의해 식별되는 저장 공간으로부터 데이터를 읽고, 읽혀진 데이터를 컨트롤러(220)로 출력할 수 있다. 불휘발성 메모리 장치(210)는 컨트롤러(220)로부터 소거 커맨드 및 어드레스를 수신하고, 어드레스에 의해 식별되는 저장 공간의 데이터를 소거할 수 있다.
불휘발성 메모리 장치(210)는 복수의 메모리 블록들(BLK1~BLKz)을 포함할 수 있다. 복수의 메모리 블록들 각각은 복수의 메모리 셀들을 포함할 수 있다. 복수의 메모리 셀들은 불휘발성 메모리 장치(210)의 저장 공간을 형성할 수 있다. 복수의 메모리 블록들 각각은 복수의 메모리 셀들을 개별적으로 선택하는 것을 지원하는 선택 트랜지스터들을 더 포함할 수 있다. 메모리 블록들(BLK1~BLKz)은 불휘발성 메모리 장치(210)의 동작상의 특징에 따라 또는 구조적 특징에 따라 구별될 수 있다. 메모리 블록들(BLK1~BLKz)이 구별되는 예는 도 3을 참조하여 더 상세하게 설명된다.
불휘발성 메모리 장치(210)는 플래시 메모리, 상 변화 랜덤 액세스 메모리(PRAM, Phase-change Random Access Memory), 강유전체 랜덤 액세스 메모리(FeRAM, Ferroelectric RAM), 자기 랜덤 액세스 메모리(MRAM, Magnetic RAM), 저항성 랜덤 액세스 메모리(RRAM, Resistive RAM) 등을 포함할 수 있다.
컨트롤러(220)는 불휘발성 메모리 장치(210) 및 버퍼 메모리(230)를 액세스할 수 있다. 컨트롤러(220)는 외부의 호스트 장치의 요청에 따라 쓰기, 읽기 및 소거를 수행할 수 있다. 컨트롤러(220)는 쓰기 요청된 데이터를 불휘발성 메모리 장치(210)에 기입하고, 읽기 요청된 데이터를 불휘발성 메모리 장치(210)로부터 읽어 출력할 수 있다.
컨트롤러(220)는 버퍼 메모리(230)를 이용하여 스토리지 장치(200)를 관리할 수 있다. 예를 들어, 컨트롤러(220)는 불휘발성 메모리 장치(210)에 기입될 데이터 또는 불휘발성 메모리 장치(210)로부터 읽히는 데이터를 버퍼 메모리(230)에 임시로 저장할 수 있다. 컨트롤러(220)는 불휘발성 메모리 장치(210)를 관리하는 데에 필요한 메타 데이터를 버퍼 메모리(230)에 로드할 수 있다.
컨트롤러(220)는 외부의 호스트 장치로부터 논리 어드레스에 기반한 요청을 수신할 수 있다. 컨트롤러(220)에서 구동되는 플래시 변환 계층(FTL)은 논리 어드레스를 불휘발성 메모리 장치(210)의 물리 어드레스로 변환할 수 있다. 컨트롤러(220)는 변환된 물리 어드레스를 불휘발성 메모리 장치(210)로 전달할 수 있다. 논리 어드레스 및 물리 어드레스 사이의 변환에 필요한 사상 데이터(MD)는 불휘발성 메모리 장치(200)에 보관되며, 버퍼 메모리(230)에 로드되어 사용될 수 있다. 플래시 변환 계층(FTL)은 버퍼 메모리(230)에 로드된 사상 데이터(MD)를 참조하여 논리 어드레스와 물리 어드레스의 변환을 수행할 수 있다.
컨트롤러(220)는 리클레임 모듈(RM) 및 카운터(CNT)를 포함할 수 있다. 컨트롤러(220)는 카운터(CNT)를 이용하여 불휘발성 메모리 장치(210)에서 수행되는 읽기 동작들을 카운트할 수 있다. 예를 들어, 컨트롤러(220)는 불휘발성 메모리 장치(210)에 기입된 각 데이터 그룹의 읽기 카운트를 관리할 수 있다. 데이터 그룹은 미리 정해진 사이즈의 데이터를 가리키며, 데이터 그룹의 사이즈는 각 메모리 블록에 기입될 수 있는 최대 데이터의 사이즈 이하이고, 각 페이지(도 3을 참조하여 후술됨)에 기입될 수 있는 최대 데이터의 사이즈 이상일 수 있다. 각 데이터 그룹의 사이즈는 각 페이지의 최대 데이터의 사이즈의 배수로 정해질 수 있다.
리클레임 모듈(RM)은 읽기 리클레임을 수행할 때에, 읽기 리클레임의 대상으로 선택된 메모리 블록의 데이터 그룹들의 읽기 카운트들에 따라 데이터 그룹들이 새로운 메모리 블록에서 기입될 위치를 조절할 수 있다. 예를 들어, 읽기 리클레임은 선택된 메모리 블록의 유효 데이터를 읽고, 읽혀진 유효 데이터를 새로운 메모리 블록에 기입하고, 선택된 메모리 블록의 유효 데이터를 무효화하는 것을 포함할 수 있다. 데이터 또는 데이터 그룹의 유효화 또는 무효화는 플래시 변환 계층(FTL)에 의해 관리되며, 유효화 또는 무효화의 결과는 사상 데이터(MD)로 저장될 수 있다.
예시적으로, 컨트롤러(220)의 플래시 변환 계층(FTL), 리클레임 모듈(RM) 및 카운터(CNT) 각각은 회로, 상태 기계, 소프트웨어, 펌웨어, 또는 이들 중 적어도 두 개가 조합된 형태로 구현될 수 있다.
도 2는 본 발명의 실시 예에 따른 스토리지 장치(200)의 동작 방법을 보여주는 순서도이다. 도 1 및 도 2를 참조하면, S410 단계에서 컨트롤러(220)는 각 메모리 블록의 각 데이터 그룹의 읽기 동자들의 횟수를 카운트할 수 있다. 예를 들어, 컨트롤러(220)는 각 데이터 그룹에 속한 데이터에 대한 읽기 커맨드를 불휘발성 메모리 장치(210)로 전달하고 불휘발성 메모리 장치(210)가 읽기 커맨드에 따라 읽기 동작을 완료하는 것을 하나의 읽기 카운트로 계산할 수 있다. 각 데이터 그룹의 읽기 카운트들을 계산하는 것과 함께, 컨트롤러(220)는 각 메모리 블록의 읽기 카운트들을 더 카운트할 수 있다. 예를 들어, 읽기 카운트들은 버퍼 메모리(230) 또는 불휘발성 메모리 장치(210)에 저장될 수 있다.
S420 단계에서, 컨트롤러(220)는 읽기 리클레임을 수행하는지 판별한다. 예를 들어, 각 메모리 블록의 읽기 카운트가 미리 정해진 문턱 값에 도달하면, 컨트롤러(220)는 해당 메모리 블록에 대해 읽기 리클레임을 수행하는 것으로 판별할 수 있다. 읽기 리클레임이 수행되지 않으면, 컨트롤러(220)는 S410 단계에서 카운트를 지속할 수 있다. 읽기 리클레임이 수행되면, 컨트롤러(220)는 S430 단계를 수행할 수 있다.
S430 단계에서, 컨트롤러(220)는 선택된 메모리 블록의 유효 데이터 그룹들의 읽기 카운트를 검출할 수 있다. S440 단계에서, 컨트롤러(220)는 읽기 리클레임을 수행하며, 문턱 값보다 높은 읽기 카운트를 갖는 적어도 하나의 데이터 그룹의 위치를 재배치(relocate)할 수 있다. 예를 들어, 읽기 리클레임을 수행한 후에, 컨트롤러(220)는 데이터 그룹들의 읽기 카운트들을 리셋할 수 있다.
도 3은 본 발명의 실시 예에 따른 메모리 블록(BLKa)의 예를 보여준다. 도 3을 참조하면, 복수의 셀 스트링들(CS)이 기판(SUB) 위에서 행들 및 열들로 배치될 수 있다. 복수의 셀 스트링들(CS)은 기판(SUB) 상에 형성되는 공통 소스 라인(CSL)에 공통으로 연결될 수 있다. 도 3에서, 메모리 블록(BLKa)의 구조의 이해를 돕기 위하여, 기판(SUB)의 위치가 예시적으로 표시되어 있다. 도 3에서, 셀 스트링들(CS)의 하단에 공통 소스 라인(CSL)이 연결되는 것으로 도시되어 있다. 그러나 공통 소스 라인(CSL)은 셀 스트링들(CS)의 하단에 전기적으로 연결되는 것으로 충분하며, 물리적으로 셀 스트링들(CS)의 하단에 위치하는 것으로 한정되지 않는다. 예시적으로, 도 3에서 셀 스트링들(CS)은 4X4로 배열되는 것으로 도시되나 본 발명의 기술적 사상은 한정되지 않는다.
각 행의 셀 스트링들은 제1 내지 제4 접지 선택 라인들(GSL1~GSL4) 중 대응하는 접지 선택 라인 또는 제1 내지 제4 스트링 선택 라인들(SSL1~SSL4) 중 대응하는 스트링 선택 라인에 연결될 수 있다. 각 열의 셀 스트링들은 제1 내지 제4 비트 라인들(BL1~BL4) 중 대응하는 비트 라인에 연결될 수 있다. 도면이 복잡해지는 것을 방지하기 위하여, 제2 및 제3 접지 선택 라인들(GSL2, GSL3) 또는 제2 및 제3 스트링 선택 라인들(SSL2, SSL3)에 연결된 셀 스트링들은 옅게 도시되어 있다.
각 셀 스트링은 대응하는 접지 선택 라인에 연결되는 적어도 하나의 접지 선택 트랜지스터(GST), 복수의 워드 라인들(WL1~WL8)에 각각 연결되는 복수의 메모리 셀들(MC), 그리고 대응하는 스트링 선택 라인에 연결되는 적어도 하나(또는 두 개)의 스트링 선택 트랜지스터(SST)를 포함할 수 있다. 각 셀 스트링에서, 접지 선택 트랜지스터(GST), 메모리 셀들(MC) 및 스트링 선택 트랜지스터(SST)는 기판과 수직인 방향을 따라 직렬 연결되고, 기판과 수직인 방향을 따라 순차적으로 적층될 수 있다.
기판(SUB) 또는 접지 선택 트랜지스터(GST)로부터 동일한 높이(또는 순서)에 위치한 셀 스트링들(CS)의 메모리 셀들은 동일한 워드 라인에 공통으로 연결될 수 있다. 기판(SUB) 또는 접지 선택 트랜지스터(GST)로부터 상이한 높이(또는 순서)에 위치한 셀 스트링들(CS)의 메모리 셀들은 상이한 워드 라인들에 연결될 수 있다.
각 스트링 선택 라인 및 각 워드 라인에 공통으로 대응하는 메모리 셀들은 하나의 페이지를 형성할 수 있다. 예를 들어, 하나의 행 및 하나의 높이에 속한 메모리 셀들은 하나의 페이지를 형성할 수 있다.
메모리 블록(BLKa)은 3차원 메모리 어레이로 제공된다. 3차원 메모리 어레이는, 실리콘 기판(SUB) 및 메모리 셀들(MC)의 동작에 연관된 회로의 위에 배치되는 활성 영역을 갖는 메모리 셀들(MC)의 어레이들의 하나 또는 그 이상의 물리 레벨들에 획일적으로(monolithically) 형성될 수 있다. 메모리 셀들(MC)의 동작에 연관된 회로는 기판 내에 또는 기판 위에 위치할 수 있다. 획일적으로 형성되는 것은, 3차원 어레이의 각 레벨의 레이어들이 3차원 어레이의 하위 레벨의 레이어들 위에 직접 증착됨을 의미한다.
본 발명의 기술적 사상에 따른 일 예로서, 3차원 메모리 어레이는 수직의 방향성을 가져, 적어도 하나의 메모리 셀이 다른 하나의 메모리 셀 위에 위치하는 수직 셀 스트링들(CS)(또는 NAND 스트링들)을 포함한다. 적어도 하나의 메모리 셀은 전하 포획 레이어를 포함한다. 각 셀 스트링은 메모리 셀들(MC) 위에 위치하는 적어도 하나의 선택 트랜지스터를 더 포함한다. 적어도 하나의 선택 트랜지스터는 메모리 셀들(MC)과 동일한 구조를 갖고, 메모리 셀들(MC)과 함께 획일적으로 형성된다.
3차원 메모리 어레이가 복수의 레벨들로 구성되고, 레벨들 사이에서 워드 라인들 또는 비트 라인들이 공유되는 구성은 미국등록특허공보 제7,679,133호, 미국등록특허공보 제8,553,466호, 미국등록특허공보 제8,654,587호, 미국등록특허공보 제8,559,235호, 그리고 미국공개특허공보 제2011/0233648호에 개시되어 있으며, 본 발명의 레퍼런스로 포함된다.
도 4는 도 3의 메모리 블록(BLKa)의 하나의 셀 스트링(CS)의 구조의 예를 보여준다. 도 3 및 도 4를 참조하면, 기판(SUB) 위에 기판과 수직인 방향으로 신장되어 기판(SUB)과 접촉하는 필라(PL)가 제공될 수 있다. 도 4에 도시된 접지 선택 라인(GSL), 워드 라인들(WL1~WL8), 그리고 스트링 선택 라인들(SSL)은 각각 기판(SUB)과 평행한 도전 물질들, 예를 들어 금속 물질들로 형성될 수 있다. 필라(PL)는 접지 선택 라인(GSL), 워드 라인들(WL1~WL8), 그리고 스트링 선택 라인들(SSL)을 형성하는 도전 물질들을 관통하여 기판(SUB)과 접촉할 수 있다.
도 4에서, 절단 선(A-A')에 따른 단면도가 함께 도시되어 있다. 예시적으로, 제1 워드 라인(WL1)에 대응하는 제1 메모리 셀(MC1)의 단면도가 도시된다. 필라(PL)는 원통형의 바디(BD)를 포함할 수 있다. 바디(BD)의 내부에 에어갭(AG)이 제공될 수 있다. 바디(BD)는 P-타입 실리콘을 포함하며, 채널이 형성되는 영역일 수 있다. 필라(PL)는 바디(BD)를 둘러싸는 원통형의 터널 절연막(TI) 및 터널 절연막(TI)을 둘러싸는 원통형의 전하 포획 막(CT)을 더 포함할 수 있다. 제1 워드 라인(WL1) 및 필라(PL)의 사이에 블로킹 절연막(BI)이 제공될 수 있다. 바디(BD), 터널 절연막(TI), 전하 포획 막(CT), 블로킹 절연막(BI), 그리고 제1 워드 라인(WL1)은 기판(SUB) 또는 기판(SUB)의 상부 면과 수직인 방향으로 형성된 전하 포획형 트랜지스터일 수 있다. 스트링 선택 트랜지스터(SST), 접지 선택 트랜지스터(GST) 및 다른 메모리 셀들은 제1 메모리 셀(MC1)과 동일한 구조를 가질 수 있다.
셀 스트링(CS)의 제조 공정에서, 필라(PL)의 폭 또는 기판(SUB)의 상부 면과 평행한 단면적은 기판(SUB)과의 거리가 감소할수록 작게 형성될 수 있다. 따라서, 접지 선택 트랜지스터(GST), 메모리 셀들(MC) 및 스트링 선택 트랜지스터들(SST)의 바디들에 동일한 전압이 인가되고 그리고 접지 선택 라인(GSL), 워드 라인들(WL1~WL8) 및 스트링 선택 라인들(SSL)에 동일한 전압이 인가될 때에, 기판(SUB)에 인접한 메모리 셀 또는 접지 선택 트랜지스터(GST)에 형성되는 전기장은 기판(SUB)과 먼 메모리 셀 또는 스트링 선택 트랜지스터(SST)에 형성되는 전기장보다 크다. 이러한 특징은 읽기 동작이 수행되는 동안에 발생하는 읽기 교란에 영향을 준다.
예시적으로, 읽기 동작 시에, 읽기 대상으로 선택된 메모리 셀들에 연결된 워드 라인에 선택 읽기 전압이 인가된다. 선택 읽기 전압은 메모리 셀들의 문턱 전압 범위 내의 레벨을 갖는다. 선택된 메모리 셀들에서 발생하는 전기장의 세기가 작으므로, 선택된 메모리 셀들에서 읽기 교란은 발생하지 않거나 매우 적게 발생한다. 읽기 동작 시에, 읽기 대상으로 선택되지 않은 메모리 셀들에 연결된 워드 라인들에 비선택 읽기 전압이 인가된다. 비선택 읽기 전압은 메모리 셀들의 문턱 전압 범위보다 높은 레벨을 갖는다. 비선택된 메모리 셀들에서 발생하는 전기장의 세기가 상대적으로 크므로, 비선택된 메모리 셀들에서 읽기 교란이 발생할 수 있다.
특히, 선택된 워드 라인에 바로 인접한 비선택된 워드 라인들에 인가되는 비선택 읽기 전압의 레벨은 다른 비선택된 워드 라인들에 인가되는 비선택 읽기 전압의 레벨보다 높다. 따라서, 인접한 비선택 워드 라인들에 연결된 메모리 셀들에서 발생하는 읽기 교란은 다른 비선택 워드 라인들에 연결된 메모리 셀들에서 발생하는 읽기 교란보다 클 수 있다. 인접한 비선택 워드 라인들에 연결된 메모리 셀들에서 발생하는 읽기 교란은 제1 읽기 교란일 수 있다.
또한, 도 4를 참조하여 설명된 바와 같이, 기판(SUB) 또는 접지 선택 트랜지스터(GST)와의 거리가 가까울수록 메모리 셀에 형성되는 전기장의 세기가 커진다. 따라서, 기판(SUB) 또는 접지 선택 트랜지스터(GST)와의 거리가 가까울수록 메모리 셀들에서 발생하는 읽기 교란이 크다. 기판(SUB)에 가까운 하위 워드 라인들, 예를 들어, 제1 내지 제4 워드 라인들(WL1~WL4)에 연결된 메모리 셀들에서 발생하는 읽기 교란은 제2 읽기 교란일 수 있다.
읽기 동작이 하위(또는 기판(SUB)과 인접한) 워드 라인들 중 하나에서 수행되면, 하위(또는 기판(SUB)과 인접한) 워드 라인들에 연결된 메모리 셀들 중 제1 읽기 교란 및 제2 읽기 교란을 모두 경험하는 메모리 셀들이 발생할 수 있다. 제1 읽기 교란 및 제2 읽기 교란이 중첩되어 제3 읽기 교란이 발생할 수 있다. 제3 읽기 교란은 메모리 블록(BLKa)에서 읽기 동작이 수행될 때에 발생하는 가장 강한 읽기 교란일 수 있다.
상술된 바와 같이, 각 메모리 블록에서 메모리 셀들의 위치들에 따라 메모리 셀들이 경험하는 읽기 교란의 양이 서로 다를 수 있다. 도 5는 메모리 셀들(MCs)의 위치들에 따른 읽기 교란의 양의 차이의 예를 보여준다. 도 5에서, 각 메모리 셀은 각 정육면체로 표현된다. 도 5에서, 제1 내지 제8 워드 라인들(WL1~WL8)에 대응하는 제1 내지 제8 높이들(H1~H8), 제 내지 제4 스트링 선택 라인들(SSL1~SSL4)에 대응하는 제1 내지 제4 행들(R1~R4), 그리고 제1 내지 제4 비트 라인들(BL1~BL4)에 대응하는 제1 내지 제4 열들(C1~C4)에 따라 배열된 메모리 셀들(MCs) 도시된다.
메모리 셀들(MCs)은 읽기 교란의 양에 따라 제1 내지 제5 셀 그룹들(CG1~CG5)로 그룹화될 수 있다. 제1 셀 그룹의 읽기 교란의 양은 제2 셀 그룹의 읽기 교란의 양보다 클 수 있다. 제k 셀 그룹의 읽기 교란의 양은 제k+1 셀 그룹의 읽기 교란의 양보다 클 수 있다.
제5 셀 그룹(CG5)에 기입되는 데이터는 제1 그룹(CG12)에 기입되는 데이터보다 더 적은 읽기 교란을 경험한다. 읽기 빈도가 높은 데이터가 더 적은 읽기 교란이 발생하는 제1 셀 그룹(CG1)에 기입되고 그리고 읽기 빈도가 낮은 데이터가 더 많은 읽기 교란이 발생하는 제5 셀 그룹(CG5)에 기입되면, 읽기 동작들이 수행될 때에 제1 셀 그룹(CG1)에서 발생하는 읽기 교란의 총량과 제5 셀 그룹(CG5)에서 발생하는 읽기 교란의 총량이 유사해질 수 있다. 따라서, 메모리 셀들(MCs)에 기입된 데이터의 신뢰도가 향상되며, 읽기 리클레임의 횟수가 감소될 수 있다.
도 6은 읽기 리클레임 시에 선택된 메모리 블록의 데이터 그룹들(DG1, DG2)이 새로운 메모리 블록에 기입되는 예를 보여준다. 예시적으로, 하나의 높이에 속한 메모리 셀들(MCs)에 기입되는 데이터가 하나의 데이터 그룹을 형성하는 것으로 가정되나, 본 발명은 한정되지 않는다.
도 1 및 도 6을 참조하면, 읽기 리클레임을 수행할 때에 컨트롤러(220)는 유효 데이터 그룹들(DG1, DG2)의 읽기 카운트들을 검출할 수 있다. 예를 들어, 제1 데이터 그룹(DG1)의 읽기 카운트는 문턱 값보다 높고, 제2 데이터 그룹(DG2)의 읽기 카운트는 문턱 값보다 낮을 수 있다. 컨트롤러(220)는 제1 데이터 그룹(DG1)을 읽기 교란이 가장 낮은 제8 높이(H8, 도 5 참조)의 메모리 셀들(MCs)에 기입되도록 읽기 리클레임을 제어할 수 있다.
예시적으로, 읽기 리클레임 시에 제2 데이터 그룹(DG2)의 위치와 제1 데이터 그룹(DG1)의 위치는 상호 교환되는 것으로 도시되어 있다. 그러나 본 발명은 한정되지 않는다. 제2 데이터 그룹(DG2)은 다른 위치에 기입될 수 있다. 예를 들어, 제2 데이터 그룹(DG2)은 제2 데이터 그룹(DG2) 또는 표시되지 않은 다른 데이터 그룹들의 읽기 카운트들에 따라 배치될 수 있다. 예를 들어, 선택된 메모리 블록의 데이터 그룹들의 위치들은 읽기 카운트들의 순서에 따라 재정렬될 수 있다. 예를 들어, 가장 높은 읽기 카운트를 갖는 데이터 그룹, 예를 들어 제1 데이터 그룹(DG1)이 가장 적은 읽기 교란을 갖는 위치에 기입되고, 가장 낮은 읽기 카운트를 갖는 데이터 그룹이 가장 큰 읽기 교란을 갖는 위치에 기입되도록 읽기 리클레임이 제어될 수 있다.
도 7은 컨트롤러(220)가 읽기 리클레임을 수행하는 예를 보여준다. 예시적으로, 컨트롤러(220)는 멀티 쓰레딩(MT)에 기반하여 읽기 리클레임을 수행할 수 있다. 컨트롤러(220)는 미리 정해진 데이터의 단위로 읽기 리클레임을 수행하되, 각 데이터 단위의 읽기 리클레임의 사이에 쓰기, 읽기 리클레임과 무관한 읽기, 소거 등과 같은 다른 작업을 수행할 수 있다. 간결한 설명을 위하여, 읽기 리클레임의 데이터의 단위는 데이터 그룹인 것으로 가정된다. 그러나 읽기 리클레임의 데이터의 단위는 데이터 그룹보다 크거나 작을 수 있다.
도 1 및 도 7을 참조하면, S510 단계에서, 컨트롤러는 선택된 메모리 블록의 유효 데이터 그룹을 읽는다. 예를 들어, 컨트롤러(220)는 제1 워드 라인(WL1, 도 3 참조)으로부터 제8 워드 라인(WL8)의 순서로 또는 그 반대로 유효 데이터 그룹을 순차적으로 선택하여 읽을 수 있다.
S515 단계에서, 컨트롤러(220)는 읽혀진 데이터 그룹의 읽기 카운트를 검출한다. 예를 들어, 컨트롤러(220)는 버퍼 메모리(230) 또는 불휘발성 메모리 장치(210)에서 읽기 카운트가 저장된 영역을 읽어 읽기 카운트를 검출할 수 있다.
S520 단계에서, 컨트롤러(220)는 읽혀진 데이터 그룹의 읽기 카운트가 문턱 값보다 큰지 판별한다. 읽기 카운트가 문턱 값보다 크면 S535 단계가 수행된다. 읽기 카운트가 문턱 값보다 크지 않으면 S525 단계가 수행된다.
S525 단계에서, 컨트롤러(220)는 문턱 값 이하의 읽기 카운트를 갖는 데이터 그룹을 새로운 메모리 블록에 기입하는 프로그램 동작을 수행할 수 있다. 예를 들어, 컨트롤러(220)는 제1 워드 라인(WL1)으로부터 제8 워드 라인(WL8)의 순서로 또는 그 반대로 자유 메모리 셀들을 순차적으로 선택하며 프로그램 동작을 수행할 수 있다.
S530 단계에서, 컨트롤러(220)는 연기된 데이터 그룹이 존재하는지 판별한다. 예를 들어, 연기된 데이터 그룹은 S550 단계를 참조하여 후술되는 상황에 발생할 수 있다. 연기된 데이터 그룹은 버퍼 메모리(230) 또는 컨트롤러(220)의 내부에 버퍼링되고 읽기 리클레임이 연기된 데이터 그룹일 수 있다. 연기된 데이터 그룹이 존재하지 않으면, 컨트롤러(220)는 S510 단계를 수행할 수 있다. 연기된 데이터 그룹이 존재하면, S535 단계가 수행된다.
읽혀진 데이터 그룹의 읽기 카운트가 문턱 값보다 크거나 또는 연기된 데이터 그룹이 존재하면, S535 단계가 수행된다. S535 단계에서, 컨트롤러(220)는 새로운 메모리 블록에서 프로그램 동작이 수행될 현재의 프로그램 위치가 강건한(robust) 위치에 대응하는지 판별한다. 예를 들어, 컨트롤러(220)는 현재의 프로그램 위치가 제7 또는 제8 높이(H7, H8, 도 5 참조)에 대응하는지 판별할 수 있다. 예를 들어, 지연된 데이터 그룹들의 개수가 가장 강건한 제7 및 제8 높이들(H7, H8)의 개수 이하이면, 컨트롤러(220)는 현재의 프로그램 위치가 가장 강건한 제7 및 제8 높이들(H7, H8)에 대응하는지 판별할 수 있다. 지연된 데이터 그룹들의 개수가 가장 강건한 제7 및 제8 높이들(H7, H8)의 개수보다 크고 그리고 다음으로 강건한 높이들을 포함하는 제6 내지 제8 높이들(H6, H8)의 개수 이하이면, 컨트롤러(220)는 현재의 프로그램 위치가 제6 내지 제8 높이들(H6, H8)에 대응하는지 판별할 수 있다. 즉, 컨트롤러(220)는 지연된 데이터 그룹들의 개수에 따라 강건한 위치들의 개수를 조절할 수 있다. 현재의 프로그램 위치가 강건한 위치에 대응하면, S540 단계가 수행된다. 현재의 프로그램 위치가 강건한 위치에 대응하지 않으면, S550 단계가 수행된다.
S540 단계에서, 컨트롤러(220)는 프로그램 동작을 수행한다. 예를 들어, 컨트롤러(220)는 읽혀진 데이터 그룹 연기된 데이터 그룹들 중에서 읽기 카운트가 가장 낮은(또는 가장 높은) 데이터 그룹을 현재의 프로그램 위치에 기입하는 프로그램 동작을 수행할 수 있다. 이후에, 컨트롤러(220)는 S550 단계를 수행한다.
현재의 프로그램 위치가 강건한 위치가 아니면, S545 단계에서, 컨트롤러(220)는 선택된 데이터 그룹(읽혀진 데이터 그룹 또는 연기된 데이터 그룹)의 프로그램 동작을 연기한다.
S550 단계에서, 컨트롤러(220)는 기입된 데이터 그룹이 마지막 유효 데이터 그룹인지 판별한다. 마지막 유효 데이터 그룹이 기입되었으면, 읽기 리클레임은 종료된다. 기입된 데이터 그룹이 마지막 유효 데이터 그룹이 아니면, 컨트롤러(220)는 S510 단계를 다시 수행한다.
요약하면, 컨트롤러(220)는 읽기 리클레임의 데이터 단위에 기반하여 읽기 리클레임을 수행하되, 각 데이터 단위가 읽혀질 때에 읽기 카운트를 체크할 수 있다. 문턱 값 이하의 작은 읽기 카운트를 갖는 데이터 단위는 새로운 메모리 블록의 프로그램 위치 순서에 따라 프로그램된다. 문턱 값보다 큰 읽기 카운트를 갖는 데이터 단위는 새로운 메모리 블록의 프로그램 위치 순서에서 강건한 위치가 프로그램 대상으로 선택될 때까지 프로그램이 연기된다.
도 8은 컨트롤러(220)가 읽기 리클레임을 수행하는 다른 예를 보여준다. 도 1 및 도 8을 참조하면, 컨트롤러(220)는 읽기 리클레임의 대상으로 선택된 메모리 블록의 유효 데이터 그룹들의 읽기 카운트들을 검출할 수 있다.
S620 단계에서, 컨트롤러(220)는 문턱 값보다 높은 읽기 카운트들을 갖는 데이터 그룹들을 선택할 수 있다.
S630 단계에서, 선택된 데이터 그룹들의 위치들을 선택할 수 있다. 예를 들어, 선택된 데이터 그룹들의 위치들이 강건한 제7 및 제8 높이(H7, H8, 도 5 참조)로 선택될 수 있다. 선택된 데이터 그룹들의 수에 따라 강건한 위치들의 수가 조절될 수 있다. 예를 들어, 선택된 데이터 그룹들이 4개이면, 제6 내지 제8 높이들(H6~H8)이 강건한 위치들로 선택될 수 있다.
S640 단계에서, 컨트롤러(220)는 새로운 메모리 블록의 프로그램 위치가 선택된 위치들 중 하나에 대응하는지 판별한다. 프로그램 위치가 선택된 위치들 중 하나에 대응하지 않으면, S650 단계에서 컨트롤러(220)는 선택된 데이터 그룹들을 제외한 유효 데이터 그룹을 읽고, S670 단계에서 읽혀진 데이터 그룹의 프로그램 동작을 수행할 수 있다. 프로그램 위치가 선택된 위치들 중 하나에 대응하면, S660 단계에서 컨트롤러는 프로그램 위치에 대응하는 데이터 그룹을 읽고, S670 단계에서 프로그램 위치에 대응하는 데이터 그룹의 프로그램 동작을 수행할 수 있다.
S680 단계에서, 컨트롤러(220)는 기입된 데이터 그룹이 마지막 유효 데이터 그룹인지 판별한다. 마지막 유효 데이터 그룹이 기입되었으면, 읽기 리클레임은 종료된다. 기입된 데이터 그룹이 마지막 유효 데이터 그룹이 아니면, 컨트롤러(220)는 S640 단계를 다시 수행한다.
요약하면, 컨트롤러(220)는 읽기 리클레임을 시작할 때에 문턱 값보다 큰 읽기 카운트들을 갖는 데이터 그룹들을 미리 검출하고, 검출된 데이터 그룹들의 프로그램 위치들을 미리 할당할 수 있다.
예시적으로, 도 8에서 문턱 값보다 큰 읽기 카운트들을 갖는 데이터 그룹들이 검출되고, 이들의 프로그램 위치들이 선택되는 것으로 설명되었다. 그러나 도 8의 S620 단계는 읽기 카운트들에 따라 데이터 그룹들을 정렬하는 것으로 변경되고, 그리고 S630 단계는 정렬된 데이터 그룹들에 각각 할당되는 프로그램 위치들을 선택하는 것으로 변경될 수 있다.
도 9는 본 발명의 실시 예에 따라 데이터 그룹들이 설정되는 예들을 보여준다. 도 5 및 도 9를 참조하면, 제1 예(E1)로서, 동일한 높이에 속한 메모리 셀들에 프로그램되는 데이터가 하나의 데이터 그룹으로 선택될 수 있다. 제2 예(E2)로서, 동일한 열에 속한 메모리 셀들에 프로그램되는 데이터가 하나의 데이터 그룹으로 선택될 수 있다. 제3 예(E3)로서, 동일한 행에 속한 메모리 셀들에 프로그램되는 데이터가 하나의 데이터 그룹으로 선택될 수 있다. 제4 예(E4)로서, 동일한 페이지에 속한 메모리 셀들에 프로그램되는 데이터가 하나의 데이터 그룹으로 선택될 수 있다. 제5 예(E5)로서, 동일한 셀 그룹에 속한 메모리 셀들에 프로그램되는 데이터가 하나의 데이터 그룹으로 선택될 수 있다.
도 10은 본 발명의 실시 예에 따른 컨트롤러(220)를 보여주는 블록도이다. 도 1 및 도 10을 참조하면, 컨트롤러(220)는 버스(221), 프로세서(222), RAM (223), 에러 정정 블록(224), 호스트 인터페이스(225), 버퍼 제어 회로(226), 그리고 메모리 인터페이스(227)를 포함한다.
버스(221)는 컨트롤러(220)의 구성 요소들 사이에 채널을 제공하도록 구성된다.
프로세서(222)는 컨트롤러(220)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 프로세서(222)는 호스트 인터페이스(225)를 통해 외부의 호스트 장치와 통신하고, 메모리 인터페이스(227)를 통해 불휘발성 메모리 장치(210)와 통신하고, 그리고 버퍼 제어 회로(226)를 통해 RAM (230)과 통신할 수 있다. 프로세서(222)는 RAM (223)을 동작 메모리, 캐시 메모리 또는 버퍼 메모리로 사용하여 스토리지 장치(200)를 제어할 수 있다.
플래시 변환 계층(FTL), 리클레임 모듈(RM), 그리고 카운터(CNT) 중 적어도 하나는 프로세서(222)에 의해 구동되는 펌웨어, 운영 체제, 응용과 같은 소프트웨어의 형태로 구현될 수 있다. 다른 예로서, 플래시 변환 계층(FTL), 리클레임 모듈(RM), 그리고 카운터(CNT) 중 적어도 하나는 프로세서(222)의 내부에서 회로망(circuitry) 또는 지식 자산(IP, Intellectual Property)과 같은 하드웨어로 구현될 수 있다. 다른 예로서, 플래시 변환 계층(FTL), 리클레임 모듈(RM), 그리고 카운터(CNT) 중 적어도 하나는 프로세서(222)와 연관되어 하드웨어 및 소프트웨어가 조합된 형태로 구현될 수 있다. 다른 예로서, 플래시 변환 계층(FTL), 리클레임 모듈(RM), 그리고 카운터(CNT) 중 적어도 하나는 프로세서(222)와 분리된 별도의 모듈로 제공될 수 있다.
RAM (223)은 프로세서(222)의 동작 메모리, 캐시 메모리 또는 버퍼 메모리로 사용될 수 있다. RAM (223)은 프로세서(222)가 실행하는 코드들 및 명령들을 저장할 수 있다. RAM (223)은 프로세서(222)에 의해 처리되는 데이터를 저장할 수 있다. RAM (223)은 SRAM (Static RAM)을 포함할 수 있다.
에러 정정 블록(224)은 에러 정정을 수행할 수 있다. 에러 정정 블록(224)은 메모리 인터페이스(227)를 통해 불휘발성 메모리 장치(210)에 기입될 데이터에 기반하여 에러 정정 인코딩을 수행할 수 있다. 에러 정정 인코딩된 데이터는 메모리 인터페이스(227)를 통해 불휘발성 메모리 장치(210)로 전달될 수 있다. 에러 정정 블록(224)은 불휘발성 메모리 장치(210)로부터 메모리 인터페이스(227)를 통해 수신되는 데이터에 대해 에러 정정 디코딩을 수행할 수 있다. 예시적으로, 에러 정정 블록(224)은 메모리 인터페이스(227)의 구성 요소로서 메모리 인터페이스(227)에 포함될 수 있다.
호스트 인터페이스(225)는 프로세서(222)의 제어에 따라, 외부의 호스트 장치와 통신하도록 구성된다. 호스트 인터페이스(225)는 USB (Universal Serial Bus), SATA (Serial AT Attachment), SAS (Serial Attached SCSI), HSIC (High Speed Interchip), SCSI (Small Computer System Interface), PCI (Peripheral Component Interconnection), PCIe (PCI express), NVMe (NonVolatile Memory express), UFS (Universal Flash Storage), SD (Secure Digital), MMC (MultiMedia Card), eMMC (embedded MMC), DIMM (Dual In-line Memory Module), RDIMM (Registered DIMM), LRDIMM (Load Reduced DIMM) 등과 같은 다양한 통신 방식들 중 적어도 하나를 이용하여 통신하도록 구성될 수 있다.
버퍼 제어 회로(226)는 프로세서(222)의 제어에 따라, 버퍼 메모리(230)를 제어하도록 구성된다.
메모리 인터페이스(227)는 프로세서(222)의 제어에 따라, 불휘발성 메모리 장치(210)와 통신하도록 구성된다. 도 1을 참조하여 설명된 바와 같이, 메모리 인터페이스(227)는 입출력 채널을 통해 커맨드, 어드레스 및 데이터를 불휘발성 메모리 장치(210)와 통신할 수 있다. 메모리 인터페이스(227)는 제어 채널을 통해 제어 신호를 불휘발성 메모리 장치(210)와 통신할 수 있다.
예시적으로, 스토리지 장치(200)에 RAM (230)이 제공되지 않는 경우, 컨트롤러(220)에 버퍼 제어 회로(226)가 제공되지 않을 수 있다.
예시적으로, 프로세서(222)는 코드들을 이용하여 컨트롤러(220)를 제어할 수 있다. 프로세서(222)는 컨트롤러(220)의 내부에 제공되는 불휘발성 메모리 장치(예를 들어, Read Only Memory)로부터 코드들을 로드할 수 있다. 다른 예로서, 프로세서(222)는 불휘발성 메모리 장치(210)로부터 메모리 인터페이스(227)를 통해 코드들을 로드할 수 있다.
예시적으로, 컨트롤러(220)의 버스(221)는 제어 버스 및 데이터 버스로 구분될 수 있다. 데이터 버스는 컨트롤러(220) 내에서 데이터를 전송하고, 제어 버스는 컨트롤러(220) 내에서 커맨드, 어드레스와 같은 제어 정보를 전송하도록 구성될 수 있다. 데이터 버스와 제어 버스는 서로 분리되며, 상호 간에 간섭하거나 영향을 주지 않을 수 있다. 데이터 버스는 호스트 인터페이스(225), 버퍼 제어 회로(226), 에러 정정 블록(224) 및 메모리 인터페이스(227)에 연결될 수 있다. 제어 버스는 호스트 인터페이스(225), 프로세서(222), 버퍼 제어 회로(226), RAM (223) 및 메모리 인터페이스(227)에 연결될 수 있다.
위에서 설명한 내용은 본 발명을 실시하기 위한 구체적인 예들이다. 본 발명에는 위에서 설명한 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명에는 상술한 실시 예들을 이용하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.
200; 스토리지 장치
BLK1~BLKz; 메모리 블록들
210; 불휘발성 메모리 장치
FTL; 플래시 변환 계층
RM; 리클레임 모듈
CNT; 카운터
220; 컨트롤러
230; 버퍼 메모리
MD; 사상 데이터
221; 버스
222; 프로세서
223; 랜덤 액세스 메모리
224; 에러 정정 블록
225; 호스트 인터페이스
226; 버퍼 제어 회로
227; 메모리 인터페이스
BLK1~BLKz; 메모리 블록들
210; 불휘발성 메모리 장치
FTL; 플래시 변환 계층
RM; 리클레임 모듈
CNT; 카운터
220; 컨트롤러
230; 버퍼 메모리
MD; 사상 데이터
221; 버스
222; 프로세서
223; 랜덤 액세스 메모리
224; 에러 정정 블록
225; 호스트 인터페이스
226; 버퍼 제어 회로
227; 메모리 인터페이스
Claims (10)
- 복수의 메모리 블록들을 포함하고, 각 메모리 블록은 복수의 스트링 선택 라인들에 연결된 스트링 선택 트랜지스터들, 복수의 접지 선택 라인들에 연결된 접지 선택 트랜지스터들 및 복수의 워드 라인들에 연결된 메모리 셀들을 포함하는 불휘발성 메모리 장치; 그리고
읽기 리클레임 동작 시에, 제1 메모리 블록의 유효 데이터 그룹들을 읽고 상기 읽혀진 유효 데이터 그룹들을 제2 메모리 블록에 기입하는 컨트롤러를 포함하고,
상기 컨트롤러는 상기 제1 메모리 블록의 상기 유효 데이터 그룹들의 각각의 읽기 카운트를 카운트하도록 구성되고, 그리고
상기 읽기 리클레임 동작 시에, 상기 컨트롤러는 상기 유효 데이터 그룹들의 각각의 읽기 카운트에 따라 상기 유효 데이터 그룹들을 상기 제2 메모리 블록에 기입하는 위치들을 재배치하는 스토리지 장치. - 제1항에 있어서,
상기 컨트롤러는 각 데이터 그룹에 대해 읽기 동작이 수행될 때, 해당 데이터 그룹의 읽기 카운트를 증가시키는 스토리지 장치. - 제1항에 있어서,
상기 컨트롤러는 상기 유효 데이터 그룹들을 상기 제2 메모리 블록에 기입한 후에 상기 읽기 카운트들을 리셋하는 스토리지 장치. - 제1항에 있어서,
상기 컨트롤러는 적어도 하나의 데이터 그룹의 읽기 카운트가 문턱 값보다 크면, 상기 적어도 하나의 데이터 그룹이 상기 제2 메모리 블록에서 읽기 동작 시에 발생하는 읽기 교란에 강건한(robust) 위치에 기입되도록 상기 유효 데이터 그룹들을 재배치하는 스토리지 장치. - 제1항에 있어서,
상기 컨트롤러는 각 메모리 블록의 메모리 셀들의 위치들에 따라 정해진 순서로 프로그램 동작을 수행하고, 그리고
상기 컨트롤러는 상기 제1 메모리 블록의 상기 유효 데이터 그룹들을 미리 정해진 순서에 따라 순차적으로 읽고, 상기 읽혀진 유효 데이터 그룹들의 각각의 읽기 카운트가 문턱 값보다 큰지 판별하는 스토리지 장치. - 제5항에 있어서,
상기 컨트롤러는 상기 읽혀진 유효 데이터 그룹들 중 하나의 유효 데이터 그룹의 읽기 카운트가 상기 문턱 값 이하이면, 상기 하나의 유효 데이터 그룹을 상기 제2 메모리 블록의 현재 프로그램 위치에 프로그램하는 스토리지 장치. - 제5항에 있어서,
상기 컨트롤러는 상기 읽혀진 유효 데이터 그룹들 중 하나의 유효 데이터 그룹의 읽기 카운트가 상기 문턱 값보다 크면, 상기 제2 메모리 블록의 현재 프로그램 위치가 읽기 교란에 강건한 위치인지 판별하고, 그리고
상기 현재 프로그램 위치가 상기 읽기 교란에 강건한 위치이면, 상기 컨트롤러는 상기 하나의 유효 데이터 그룹을 상기 현재 프로그램 위치에 프로그램하는 스토리지 장치. - 제7항에 있어서,
상기 현재 프로그램 위치가 상기 읽기 교란에 강건한 위치가 아니면, 상기 컨트롤러는 상기 하나의 유효 데이터 그룹의 프로그램을 연기하고, 그리고 상기 제1 메모리 블록의 유효 데이터 그룹들 중 다음 유효 데이터 그룹을 읽는 스토리지 장치. - 제8항에 있어서,
상기 현재 프로그램 위치가 상기 읽기 교란에 강건한 위치가 되면, 상기 컨트롤러는 상기 연기된 유효 데이터 그룹의 프로그램을 수행하는 스토리지 장치. - 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치의 동작 방법에 있어서:
상기 불휘발성 메모리 장치의 제1 메모리 블록에 기입된 데이터 그룹들의 각각의 읽기 횟수를 카운트하는 단계; 그리고
읽기 리클레임 시에 상기 제1 메모리 블록에 기입된 상기 데이터 그룹들을 상기 불휘발성 메모리 장치의 제2 메모리 블록으로 복사하는 단계를 포함하고,
상기 읽기 리클레임 시에, 상기 컨트롤러는 상기 데이터 그룹들의 각각의 읽기 카운트에 따라 상기 데이터 그룹들을 상기 제2 메모리 블록에 기입하는 위치들을 재배치하는 동작 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160111905A KR102614083B1 (ko) | 2016-08-31 | 2016-08-31 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US15/690,328 US10114575B2 (en) | 2016-08-31 | 2017-08-30 | Storage device and operating method thereof |
CN201710769968.4A CN107799142B (zh) | 2016-08-31 | 2017-08-31 | 存储设备及其操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160111905A KR102614083B1 (ko) | 2016-08-31 | 2016-08-31 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180025491A KR20180025491A (ko) | 2018-03-09 |
KR102614083B1 true KR102614083B1 (ko) | 2023-12-18 |
Family
ID=61242585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160111905A KR102614083B1 (ko) | 2016-08-31 | 2016-08-31 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10114575B2 (ko) |
KR (1) | KR102614083B1 (ko) |
CN (1) | CN107799142B (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180076715A (ko) | 2016-12-28 | 2018-07-06 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
US10685702B2 (en) * | 2017-08-28 | 2020-06-16 | Micron Technology, Inc. | Memory array reset read operation |
US10446243B2 (en) * | 2017-12-18 | 2019-10-15 | Macronix International Co., Ltd. | Storage device and associated control method to determine target memory blocks for probe operation |
KR20190083862A (ko) * | 2018-01-05 | 2019-07-15 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
KR20190088184A (ko) * | 2018-01-18 | 2019-07-26 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR102549548B1 (ko) * | 2018-05-08 | 2023-06-30 | 에스케이하이닉스 주식회사 | 메모리 시스템, 그것의 동작 방법 및 전자 장치 |
US11030096B2 (en) * | 2019-01-10 | 2021-06-08 | Western Digital Technologies, Inc. | Method of identifying and preparing a key block in a flash memory system and memory controller therefor |
KR20200142724A (ko) * | 2019-06-13 | 2020-12-23 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 그 저장 방법 |
US10950318B2 (en) * | 2019-06-14 | 2021-03-16 | Micron Technology, Inc. | Memory proximity disturb management |
KR20210001414A (ko) * | 2019-06-28 | 2021-01-06 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 그 저장 방법 |
CN112951305A (zh) * | 2019-12-10 | 2021-06-11 | 北京兆易创新科技股份有限公司 | 一种存储设备及其控制方法和控制装置 |
CN112068782B (zh) * | 2020-09-17 | 2023-07-25 | 群联电子股份有限公司 | 存储器管理方法、存储器存储装置及存储器控制电路单元 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007226903A (ja) * | 2006-02-23 | 2007-09-06 | Sharp Corp | 同期型メモリのコントロールシステム |
JP2010157218A (ja) | 2008-12-29 | 2010-07-15 | John Rudelic | 不揮発性メモリに置き換えるためにramメモリオブジェクトをプロファイルする方法及び装置 |
US20160011996A1 (en) | 2010-01-08 | 2016-01-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007047863A (ja) | 2005-08-05 | 2007-02-22 | Hitachi Ltd | 記憶装置の記憶領域を構成する各記憶領域単位毎にアクセス排他制御を行うストレージシステム及び記憶制御方法 |
KR100855963B1 (ko) * | 2006-10-31 | 2008-09-02 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 불휘발성 메모리 장치의프로그램, 독출 및 소거 방법 |
JP2008181380A (ja) | 2007-01-25 | 2008-08-07 | Toshiba Corp | メモリシステムおよびその制御方法 |
JP5661227B2 (ja) | 2007-02-07 | 2015-01-28 | 株式会社メガチップス | メモリコントローラ |
KR101226685B1 (ko) | 2007-11-08 | 2013-01-25 | 삼성전자주식회사 | 수직형 반도체 소자 및 그 제조 방법. |
KR20100102925A (ko) * | 2009-03-12 | 2010-09-27 | 삼성전자주식회사 | 리드 리클레임 신호를 발생하는 불휘발성 메모리 장치 및 이를 포함하는 메모리 시스템 |
US8189379B2 (en) | 2009-08-12 | 2012-05-29 | Texas Memory Systems, Inc. | Reduction of read disturb errors in NAND FLASH memory |
US7818525B1 (en) * | 2009-08-12 | 2010-10-19 | Texas Memory Systems, Inc. | Efficient reduction of read disturb errors in NAND FLASH memory |
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 |
KR101682666B1 (ko) | 2010-08-11 | 2016-12-07 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템 |
US8930778B2 (en) | 2012-11-15 | 2015-01-06 | Seagate Technology Llc | Read disturb effect determination |
CN104903842B (zh) * | 2012-12-31 | 2018-08-14 | 桑迪士克科技有限责任公司 | 用于在非易失性存储器中的异步裸芯操作的方法和系统 |
US9552288B2 (en) | 2013-02-08 | 2017-01-24 | Seagate Technology Llc | Multi-tiered memory with different metadata levels |
US9558108B2 (en) | 2013-04-15 | 2017-01-31 | Macronix International Co., Ltd. | Half block management for flash storage devices |
US9244958B1 (en) | 2013-06-13 | 2016-01-26 | Amazon Technologies, Inc. | Detecting and reconciling system resource metadata anomolies in a distributed storage system |
KR20150075887A (ko) * | 2013-12-26 | 2015-07-06 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
CN104934066B (zh) * | 2014-03-19 | 2018-03-27 | 安华高科技通用Ip(新加坡)公司 | Nand闪存中的读取干扰处理 |
KR102318561B1 (ko) * | 2014-08-19 | 2021-11-01 | 삼성전자주식회사 | 스토리지 장치, 스토리지 장치의 동작 방법 |
US9244858B1 (en) | 2014-08-25 | 2016-01-26 | Sandisk Technologies Inc. | System and method of separating read intensive addresses from non-read intensive addresses |
KR102128406B1 (ko) * | 2014-09-26 | 2020-07-10 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
KR102282947B1 (ko) * | 2014-12-15 | 2021-07-30 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
KR102282962B1 (ko) * | 2014-12-22 | 2021-07-30 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
-
2016
- 2016-08-31 KR KR1020160111905A patent/KR102614083B1/ko active IP Right Grant
-
2017
- 2017-08-30 US US15/690,328 patent/US10114575B2/en active Active
- 2017-08-31 CN CN201710769968.4A patent/CN107799142B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007226903A (ja) * | 2006-02-23 | 2007-09-06 | Sharp Corp | 同期型メモリのコントロールシステム |
JP2010157218A (ja) | 2008-12-29 | 2010-07-15 | John Rudelic | 不揮発性メモリに置き換えるためにramメモリオブジェクトをプロファイルする方法及び装置 |
US20160011996A1 (en) | 2010-01-08 | 2016-01-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
Also Published As
Publication number | Publication date |
---|---|
CN107799142A (zh) | 2018-03-13 |
US10114575B2 (en) | 2018-10-30 |
CN107799142B (zh) | 2023-09-26 |
KR20180025491A (ko) | 2018-03-09 |
US20180059948A1 (en) | 2018-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102614083B1 (ko) | 스토리지 장치 및 스토리지 장치의 동작 방법 | |
KR102606490B1 (ko) | 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치 | |
US10162748B2 (en) | Prioritizing garbage collection and block allocation based on I/O history for logical address regions | |
CN106294215B (zh) | 存储装置和操作存储装置的方法 | |
US10146448B2 (en) | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device | |
US10114557B2 (en) | Identification of hot regions to enhance performance and endurance of a non-volatile storage device | |
US9898207B2 (en) | Storage device | |
US10656842B2 (en) | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device | |
KR102501751B1 (ko) | 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법 | |
EP3158454B1 (en) | Sub-block garbage collection | |
US11287992B2 (en) | Controller and storage device including controller and nonvolatile memory devices | |
US10656840B2 (en) | Real-time I/O pattern recognition to enhance performance and endurance of a storage device | |
US9703491B2 (en) | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device | |
KR102634700B1 (ko) | 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법 | |
CN106971754B (zh) | 非易失性存储器设备、包括其的存储装置和操作其的方法 | |
US10372613B2 (en) | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device | |
US10740244B2 (en) | Memory system including a redirector for replacing a fail memory die with a spare memory die | |
KR20210068894A (ko) | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 | |
US10121543B2 (en) | Storage device including a nonvolatile memory device and a controller for controlling a write operation of the nonvolatile memory device and an operating method of the storage device | |
CN114489466A (zh) | 存储器系统及其操作方法 | |
CN111445939B (zh) | 存储装置及其操作方法 | |
US11561725B2 (en) | System and operating method thereof | |
US11966608B2 (en) | Memory controller with improved data reliability and memory system including the same | |
CN111580743B (zh) | 存储器控制器及其操作方法 | |
US11404137B1 (en) | Memory system and operating method of memory system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |