KR101996136B1 - 빠른 판독 다중 레벨 3d nand가 수명 용량 향상시키는 것을 가능하게 하는 데이터 매핑 - Google Patents
빠른 판독 다중 레벨 3d nand가 수명 용량 향상시키는 것을 가능하게 하는 데이터 매핑 Download PDFInfo
- Publication number
- KR101996136B1 KR101996136B1 KR1020170117260A KR20170117260A KR101996136B1 KR 101996136 B1 KR101996136 B1 KR 101996136B1 KR 1020170117260 A KR1020170117260 A KR 1020170117260A KR 20170117260 A KR20170117260 A KR 20170117260A KR 101996136 B1 KR101996136 B1 KR 101996136B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- storage location
- writing
- write
- recording
- Prior art date
Links
Images
Classifications
-
- 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
-
- 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/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle 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
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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
- 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/08—Address circuits; Decoders; Word-line control circuits
-
- 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/3436—Arrangements for verifying correct programming or erasure
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5641—Multilevel memory having cells with different number of storage levels
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 개시에서, 저 판독 레이턴시(low read latency)를 갖는 개선된 합계 전송률(즉, 수명 용량)을 갖는 3 차원 격자에 기초한 데이터 맵핑이 개시된다. 기록 동안, 기억 장소는 소거 이전에 다수 회 기록된다. 구체적으로, 제1 기록의 경우, 기록을 위해 이용 가능한 셀당 4/3 비트가 존재하는데, 이것은 셀당 약 10.67 kB이며 데이터 저장을 위해 사용된다. 그 다음, 제2 기록의 경우, 셀당 한 비트가 존재하는데, 이것은 데이터 저장을 위한 셀당 8 kB이다. 128 개의 상이한 셀을 갖는 블록을 고려하고 32kB의 데이터를 기록하는 경우, 제1 기록은 42.66 번의 데이터 기록으로 나타나고, 한편, 제2 기록은 총 74.66 기록에 대해 32 번의 기록으로 나타난다. 이전에는, 32kB에 대한 기록의 횟수는 64 번의 기록일 것이다. 따라서, 소거 이전에 두 번 기록하는 것에 의해, 더 많은 데이터가 저장될 수 있다.
Description
관련 출원에 대한 교차 참조
본원은 2016년 12월 23일자로 출원된 미국 특허 가출원 제62/438,821호의 이익을 주장하는데, 이 특허 가출원은 참조에 의해 본원에 통합된다.
본 개시의 배경
본 개시의 실시형태는 일반적으로 블록을 소거하기 이전에 NAND 블록에 데이터를 다수 회 기록하기 위한 방법에 관한 것이다.
플래시 메모리 기반의 솔리드 스테이트 드라이브(Solid-State Drive; SSD)는, SDD가 높은 처리량, 낮은 판독/기록 레이턴시(latency), 낮은 전력 소비 및 높은 압력 및 온도를 견디는 능력을 갖는다는 점에서, 전통적인 하드 디스크 드라이브(hard disk drive; HDD)에 비해 이점을 갖는다. NAND 플래시는, 특히, 다른 불휘발성 메모리(non-volatile memory; NVM)에 비해 낮은 가격 및 대용량을 갖는다. 플래시 메모리는 전하를 트랩하기 위해 플로팅 게이트(또는 전하 트랩)를 사용하고, 데이터는 셀의 그룹에 트랩되는, 셀 레벨로 칭해지는 전하의 양에 의해 표현된다. NAND 플래시의 주요 피쳐 중 하나는 프로그래밍 및 소거의 비대칭성이다. 프로그래밍(셀 레벨을 증가시키는 것)의 단위는 페이지로 칭해지며 103 내지 104 셀로 구성되고, 한편 소거(셀 레벨을 감소시키는 것)의 단위는 수백 페이지를 포함하는 블록이다. 블록 삭제는 시간 및 에너지 소비적이며, 물리적 셀을 열화시킨다(degrade).
그러나, NAND 플래시는 단점을 가지며, NAND 플래시는 한 번만 기록될 수 있다. 데이터는 다수 회 판독될 수 있지만, 그러나 신규의 데이터를 저장하기 위해 데이터 위치가 다시 사용되어야 하는 경우, 이전 데이터는 삭제되어야 한다. 상기에서 언급되는 바와 같이, 소거는 블록 단위로 발생하고, 따라서, 많은 페이지의 데이터가 한 번에 소거된다. 또한, NAND 소거는 NAND 디바이스의 수명을 감소시킨다.
기술 분야에서 NAND 디바이스의 수명을 증가시킬 필요가 존재한다.
본 개시에서, 저 판독 레이턴시(low read latency)를 갖는 개선된 합계 전송률(sum rate)(즉, 수명 용량(lifetime capacity))을 갖는 3 차원 격자에 기초한 데이터 맵핑이 개시된다. 기록 동안, 기억 장소(memory location)는 소거 이전에 다수 회 기록된다. 구체적으로, 제1 기록의 경우, 기록을 위해 이용 가능한 셀당 4/3 비트가 존재하는데, 이것은 셀당 약 10.67 kB이며 데이터 저장을 위해 사용된다. 그 다음, 제2 기록의 경우, 셀당 한 비트가 존재하는데, 이것은 데이터 저장을 위한 셀당 8 kB이다. 128 개의 상이한 셀을 갖는 블록을 고려하고 32kB의 데이터를 기록하는 경우, 제1 기록은 42.66 번의 데이터 기록으로 나타나고, 한편, 제2 기록은 총 74.66 기록에 대해 32 번의 기록으로 나타난다. 이전에는, 32kB에 대한 기록의 횟수는 64 번의 기록일 것이다. 따라서, 소거 이전에 두 번 기록하는 것에 의해, 더 많은 데이터가 저장될 수 있다.
하나의 실시형태에서, 시스템은 호스트 디바이스; 호스트 디바이스에 커플링되는 메모리 시스템을 포함한다. 메모리 시스템은: 소거 이전에 기억 장소에 데이터를 다수 회 기록하는 수단; 기억 장소로부터 데이터를 판독하는 수단; 및 기억 장소로부터 데이터를 소거하는 수단을 포함한다. 시스템은 추가적으로 호스트 디바이스 및 메모리 시스템에 커플링되는 컨트롤러를 포함한다.
다른 실시형태에서, 방법은 제1 기억 장소의 NAND 플래시 블록에 제1 세트의 데이터를 기록하는 것; 제1 기억 장소에 제2 세트의 데이터를 기록하는 것; 및 제1 기억 장소를 소거하는 것을 포함하고, 제2 세트의 데이터를 기록하는 것은, 제1 세트의 데이터를 소거하기 이전에 발생한다. 추가적으로, 프로세서 및 프로세서에 의해 실행될 때 시스템으로 하여금 방법을 수행하게 하는 명령어들을 저장하는 메모리 시스템을 포함하는 시스템이 개시된다. 추가적으로, 프로세서에 의해 실행될 때, 컴퓨터 시스템으로 하여금, 방법을 수행하는 것에 의해, 판독 프로세스가 완료된 이후 파일을 버닝하게 하는 명령어들을 포함하는 비일시적 컴퓨터 판독 가능한 저장 매체가 개시된다.
본 개시의 상기 언급된 피쳐가 상세하게 이해될 수 있는 방식으로, 실시형태에 대한 참조에 의해 상기에서 간략히 요약된 본 개시의 보다 상세한 설명이 이루어질 수도 있는데, 실시형태 중 일부는 첨부된 도면에서 예시된다. 그러나, 첨부된 도면은 본 개시의 단지 전형적인 실시형태를 예시하는 것에 불과하고, 따라서, 본 개시가 다른 동등하게 효과적인 실시형태를 인정할 수도 있기 때문에, 본 개시의 범위를 제한하는 것으로 간주되지 않아야 한다는 것을 유의한다.
도 1은 본 개시의 한 실시형태에 따른 시스템의 개략적인 예시이다.
도 2는 본 개시의 한 실시형태에 따른 메모리 어레이의 개략적인 예시이다.
도 3a 내지 도 3c는 NAND 플래시 메모리 블록의 개략적인 예시이다.
도 4는, 2 기록 저 판독 레이턴시 코드 3D 대표 모델(2-write low read latency code 3D representative model)의 인코딩 및 디코딩 맵핑이다.
도 5는 데이터를 소거하기 이전에 동일한 기억 장소에 데이터를 두 번 기록하는 방법을 예시하는 플로우차트이다.
이해를 돕기 위해, 도면에 공통인 동일한 엘리먼트를 가리키기 위해 가능한 경우 동일한 도면 부호가 사용되었다. 하나의 실시형태에서 개시되는 엘리먼트는 구체적인 설명 없이 다른 실시형태 상에서 유리하게 활용될 수도 있다는 것이 고려된다.
도 1은 본 개시의 한 실시형태에 따른 시스템의 개략적인 예시이다.
도 2는 본 개시의 한 실시형태에 따른 메모리 어레이의 개략적인 예시이다.
도 3a 내지 도 3c는 NAND 플래시 메모리 블록의 개략적인 예시이다.
도 4는, 2 기록 저 판독 레이턴시 코드 3D 대표 모델(2-write low read latency code 3D representative model)의 인코딩 및 디코딩 맵핑이다.
도 5는 데이터를 소거하기 이전에 동일한 기억 장소에 데이터를 두 번 기록하는 방법을 예시하는 플로우차트이다.
이해를 돕기 위해, 도면에 공통인 동일한 엘리먼트를 가리키기 위해 가능한 경우 동일한 도면 부호가 사용되었다. 하나의 실시형태에서 개시되는 엘리먼트는 구체적인 설명 없이 다른 실시형태 상에서 유리하게 활용될 수도 있다는 것이 고려된다.
이하에서, 본 개시의 실시형태에 대한 참조가 이루어진다. 그러나, 본 개시는 특정한 설명된 실시형태로 한정되지 않는다는 것이 이해되어야 한다. 대신, 다른 실시형태에 관련되든 또는 관련되지 않든 간에, 본 개시를 구현하고 실시하기 위해 다음의 피쳐 및 엘리먼트의 임의의 조합이 고려된다. 또한, 비록 본 개시의 실시형태가 다른 가능한 솔루션에 비해 및/또는 종래 기술에 비해 이점을 달성할 수도 있지만, 주어진 실시형태에 의해 특정한 이점이 달성되는지 또는 달성되지 않는지의 여부는, 본 개시를 제한하지 않는다. 따라서, 다음의 양태, 피쳐, 실시형태 및 이점은 단지 예시적인 것에 불과하며, 청구항(들)에서 명시적으로 기재되는 경우를 제외하고는 첨부된 청구범위의 엘리먼트 또는 제한 사항으로 간주되지 않는다. 마찬가지로, "본 개시"에 대한 언급은, 본원에서 개시되는 임의의 발명적 주제의 일반화로서 해석되어서는 안되며 청구항(들)에서 명시적으로 기재되는 경우를 제외하고는 첨부된 청구 범위의 엘리먼트 또는 제한 사항인 것으로 간주되어서는 안된다.
본 개시에서, 저 판독 레이턴시(low read latency)를 갖는 개선된 합계 전송률(즉, 수명 용량)을 갖는 3 차원 격자에 기초한 데이터 맵핑이 개시된다. 기록 동안, 기억 장소는 소거 이전에 다수 회 기록된다. 구체적으로, 제1 기록의 경우, 기록을 위해 이용 가능한 셀당 4/3 비트가 존재하는데, 이것은 셀당 약 10.67 kB이며 데이터 저장을 위해 사용된다. 그 다음, 제2 기록의 경우, 셀당 한 비트가 존재하는데, 이것은 데이터 저장을 위한 셀당 8 kB이다. 128 개의 상이한 셀을 갖는 블록을 고려하고 32kB의 데이터를 기록하는 경우, 제1 기록은 42.66 번의 데이터 기록으로 나타나고, 한편, 제2 기록은 총 74.66 기록에 대해 32 번의 기록으로 나타난다. 이전에는, 32kB에 대한 기록의 횟수는 64 번의 기록일 것이다. 따라서, 소거 이전에 두 번 기록하는 것에 의해, 더 많은 데이터가 저장될 수 있다.
본 개시에서, 저 판독 레이턴시(low read latency)를 갖는 개선된 합계 전송률(즉, 수명 용량)을 갖는 3 차원 격자에 기초한 데이터 맵핑이 개시된다. 기록 동안, 모든 논리적 페이지가 인코더에서 이용 가능하다는 가정이 사용된다. 판독 동안, 맵핑은, 각각의 논리적 페이지에 대해, 대응하는 페이지의 데이터를 디코딩하기 위해 판독 임계치의 서브세트 만이 필요로 되고, 따라서 판독 레이턴시가 크게 감소된다는 이점을 갖는다. 보다 구체적으로는, 저 판독 레이턴시 데이터 맵핑은 4 레벨 MLC 및 8 레벨 TLC 플래시 메모리에 대해 사용된다. MLC의 경우, 매핑은, 저장된 전체 데이터에서 17% 향상을 달성한다. 코드는 인코딩 및 디코딩 맵에 의해 정의된다. TLC의 경우, 현재의 NAND 기술에서 사용되는 그레이(Gray) 코드를 준수하기 위해, MLC 설계와 유사하지만 그러나 별개인 맵핑의 설계는 수명 용량의 11% 내지 24%의 향상을 달성할 수 있다.
재기록 코드는 NAND 플래시의 수명 용량을 향상시킬 수 있다. NAND 플래시에 대한 모든 현존하는 재기록 코드는, 정확한 셀 레벨이 디코더에게 알려져 있고, 따라서 필요로 되는 판독의 횟수는 q-1이다는 것을 가정한다. 현재의 NAND 기술은, 페이지당 판독의 평균 횟수가 (q-1)/log q가 되도록 물리적 페이지를 log q 개의 논리적 페이지로 분할하는 것에 의해 저 레이턴시 페이지 판독을 가능하게 한다. 본원에서 논의되는 바와 같이, 다중 레벨 NAND 플래시 메모리에 대한 저 레이턴시의 페이지 판독을 가능하게 하기 위해 2 기록 재기록 코드가 사용될 수 있다. 코드는, 4 레벨 다중 레벨 셀(multiple level cell; MLC)에 대해 페이지 당 1.5 판독을 유지하면서, NAND 플래시 메모리에 대해 17% 용량 향상을 가능하게 한다. 현재의 NAND 기술에서 사용되는 그레이 코드를 갖는 8 레벨 3 중 레벨 셀(triple level cell; TLC)의 경우, 코드는 페이지당 2 및 2.5 판독으로 각각 11% 및 24% 용량 향상을 가능하게 한다.
재기록 코드는 일회 기록 메모리(write-once memory; WOM) 코드의 일반화이며 소거 사이에 NAND 플래시에 더 많은 데이터를 기록하는 효과적인 수단이다. 3D NAND 플래시는, 재기록 코드가 실용적일 수 있도록 커플링 효과로 유도되는 셀간 간섭(inter-cell interference; ICI)을 감소시킨다. 그러나, 모든 현존하는 재기록 코드는 디코딩될 정확한 셀 레벨을 판독하는 것을 필요로 하는데, 이것은 저 판독 레이턴시 이점을 상실시킨다. 예를 들면, 4 레벨 NAND 플래시의 경우, 두 개의 바이너리 논리적 페이지(하위 및 상위 페이지)가 동일한 사이즈의 하나의 네 부분으로 이루어진 물리적 페이지에 매핑된다. 네 개의 심볼이, 낮은 것부터 높은 것으로, 그레이 코드 (11), (10), (00), (01)에 의해 표현된다고 가정하는데, 여기서, 그레이 코드를 사용하는 목적은 논리적 페이지에 대한 비트 에러율을 감소시키는 것이다. 그 다음, 하위 페이지를 판독하는 것은, 레벨 (10)과 (00) 사이에 하나의 판독 임계치를 적용하여 왼쪽 비트(LSB로 칭해짐)를 식별하는 것에 의해 수행된다. 마찬가지로, 상위 페이지를 판독하는 것은, 두 개의 판독 임계치, 즉 (11)과 (10) 사이에 하나의 판독 임계치를 그리고 (00)과 (01) 사이에 다른 하나의 판독 임계치를 적용하여 오른쪽 비트(MSB로 칭해짐)를 식별하는 것에 의해 수행된다. 세 개의 판독 임계치를 사용하여 정확한 셀 레벨을 판독하여 모든 네 개의 심볼을 구별하는 것에 비해, 페이지당 판독의 횟수는 (3에서 감소된) 평균 1.5 회이다.
따라서, 주요 관심 대상이 되는 파라미터는 합계 전송률(Rsum) 비트/셀 및 페이지당 판독의 평균 횟수(tave)이다. 예를 들면, 셀에 대한 저 레이턴시 판독을 가능하게 하는 비 재기록 스킴(non-rewriting scheme)은 (Rsum, tave) = (log q, ((q-1)/(log q))로 표현될 수 있고 q 레벨 NAND 플래시에 대한 정확한 셀 레벨을 판독할 것을 요구하는 용량 달성 재기록 코드는 (Rsum, tave) = 이다. 특히, 4 레벨 MLC 및 8 레벨 TLC에 대한 2 기록 WOM 코드를 달성하는 용량에 대해서는, 각각 (Rsum, tave) = (3.32, 3) 및 (Rsum, tave) = (5.17, 7)이다. 판독 레이턴시는 SSD 성능을 결정하는 데 도움이 되기 때문에, 저 판독 레이턴시를 유지하고 Rsum을 개선하기 위해, 코드는 로 구성될 수 있다.
본원에서 개시되는 재기록 코드는 저 판독 레이턴시로 합계 전송률(즉, 수명 용량)을 개선한다. 코딩 스킴은 로직 데이터와 물리적 셀 레벨 사이의 현재의 그레이 매핑을 사용하는데, 이것은 칩 내부의 하드웨어 및 회로 재설계를 방지한다. 기록 동안, 현재의 NAND 프로그래밍 기술에서 한 가정이 이루어진다. 그 가정은, 모든 논리적 페이지가 인코더에서 이용 가능하다는 것이다. 판독 동안, 재기록 코드는, 각 논리적 페이지에 대해, 대응하는 페이지의 데이터를 디코딩하기 위해 q-1 개의 판독 임계치의 서브세트만이 필요로 되고, 따라서 판독 레이턴시가 크게 감소된다는 이점을 갖는다. 더욱 상세하게는, 4 레벨 MLC 및 8 레벨 TLC 플래시 메모리에 대한 저 판독 레이턴시 재기록 코드가 본원에서 개시된다. MLC의 경우, 제안된 코드는, 현재의 (2, 1.5) 비 재기록 스킴에 비해 합계 전송률이 17% 향상된 (Rsum, tave) = (2.33, 1.5)를 달성한다. 코드는, 각각의 논리적 페이지 및 각각의 기록에 대한 맵을 인코딩 및 디코딩하는 것에 의해 정의되며, 그것은 또한 3 차원 입방체의 라벨링에 의해 시각화될 수 있다. TLC의 경우, MLC 설계와 유사하지만 별개인 재기록 코드는, 현재의 (3, 2.33) 비 재기록 스킴에 비해 합계 전송률 및 판독 레이턴시 둘 다의 향상을 통해 (Rsum, tave) = (3.33, 2)를 달성할 수 있다.
셀의 수를 n이라고 가정하고, c1, ..., cn을 그 n 개의 셀의 셀 레벨이라고 하자. 각각의 셀이 q 개의 레벨, (0, 1, ..., q-1)을 갖는다고 가정하면, 정수 세트 (0, 1, ..., n-1)은 [n]으로 표시될 것이다. xi가 어레이 x = (x1, ..., xn)의 i번째 엘리먼트를 나타내고, 가 x의 서브벡터를 나타내고, 1≤i≤j≤n이라고 하자. 두 벡터 및 에 대해, 이면, 이다. 매핑 의 경우, 의 이미지는 로 표시되고 하에서의 의 이미지는 에 의해 표시된다. 하기의 논의는 두 기록에 초점을 맞출 것인데, 여기서, 제2 기록에서, 셀 레벨은 순서화된 세트 (0, 1, ..., q-1)에서만 증가할 수 있다.
판독은 모든 n 개의 셀에 판독 임계치를 적용하는 것에 대응하고, 에 대해, i 번째 셀이 판독 임계치보다 높은지 또는 낮은지의 여부를 설명하는 길이 n 부울(Boolean) 벡터가 리턴된다. 따라서, 하나의 페이지에 대해 t 번의 판독(r1, ..., rt)가 수행되면, 순서화된 세트 (0, 1, ..., q-1)은 t+1 개의 간격으로 분할된다. t = q-1이면, (0, 1, ..., q-1)에서의 정확한 심볼은 판독 레이턴시를 대가로 판독된다.
MLC 플래시 메모리에 대한 2 기록 저 판독 레이턴시 재기록 코드
이 섹션에서, 저 레이턴시 재기록 코드는 수학적으로 모델링된다. 추가적으로, 4 레벨 MLC 플래시 메모리에 대한 저 레이턴시 판독을 가능하게 하는 코드 구성이 제공된다. 그레이 매핑 은, 현재의 NAND 기술과 부합하며 따라서 NAND 칩에서 하드웨어/회로 재설계를 필요로 하지 않는 표 I에서 나타내어진다.
4 레벨 MLC NAND 플래시에 대한 저 레이턴시 재기록 코드에 대한 정의
(LSB, MSB) 쌍으로의 셀 레벨 사이의 전단사(bijection)가 그레이 코드 에 의해 표시된다고 하자. 가 셀 레벨 (1, 2) 사이에 하나의 임계치를 적용하는 것에 의한 페이지의 LSB 판독을 나타낸다고 하자. 가 셀 레벨 (0, 1)과 (2, 3) 사이에 두 개의 임계치를 적용하는 것에 의한 페이지의 MSB 판독을 나타낸다고 하자. 현재의 NAND 기술에서 사용되는 매핑 및 은 표 I에서 정의되어 있다. 다음의 것이 표시된다:
페이지 디코더는 매핑이다:
상기에서 논의되는 정의에서, 물리적 페이지의 LSB 및 MSB에 대응하는 데이터를 저장하는 두 개의 논리적 페이지가 존재한다. 저 판독 레이턴시 재기록 코어에 대한 정의와 일반적인 다중 레벨 WOM 코드의 정의 사이의 차이점은, 페이지 디코더 (또는 )가 물리적 페이지로부터 에 의해 판독되는 LSB(또는 에 의해 판독되는 MSB)의 정보만을 가지며, 그럼에도 불구하고 다른 논리적 페이지에서의 데이터에 무관하게 그들 자신의 논리적 페이지를 정확하게 디코드할 필요가 있다는 점에 있다. LSB 표현 및 MSB 표현 논리적 페이지를 디코딩하는 판독 임계치의 수는 각각 1 및 2인데, 이것은 논리적 페이지당 1.5 번의 판독을 필요로 하는 종래의 비 재기록 스킴과 동일하다.
n = 3개의 셀 (c1, c2, c3)을 고려하는데, 여기서 는 i 번째 셀의 레벨이다. 물리적 페이지가 3의 배수 개의 셀을 포함하면, 셀은 사슬연결되고 연속적인 3 개의 셀의 각각의 세트는 제안된 재기록 코드에 따라 데이터를 저장한다.
q = 4(MLC)가 물리적 셀에서의 레벨의 수라고 하자. (LSB, MSB) 쌍인 LSB 판독 함수 , 및 MSB 판독 함수 에 대한 셀 레벨 사이의 전단사(그레이 코드)가 상기의 정의에서 정의된다고 하자.
n = 3이라고 하자. MLC에 대한 2 기록 저 판독 레이턴시 재기록 코드는, 인코더 및 디코더 세트를 다음과 같이 정의하는 것에 의해 구성된다. 제1 기록에서, S[0] = {111}, S[1] = {011}, S[2] = {101}, S[3] = {110}을 하나의 원소를 각각 포함하는 네 개의 세트라고 하자. 가 x를 포함하는 세트 인덱스 {0, 1, 2, 3}를 나타낸다고 하자. 를 제1 기록에서 각각의 페이지에 대한 데이터라고 하면, 는 다음과 같도록 를 선택하는 것에 의해 인코딩한다:
제2 기록에서, SΨ[0] = {100, 011}, SΨ[1] = {000}, SΨ[2] = {110,001}, SΨ[3] = {101,010} 및 Sφ[0] = {011, 101, 110}, Sφ[1] = {001, 100, 010}이라고 하자. 를, x와 SΨ 및 Sφ를 각각 포함하는 세트 인덱스라고 하자. 를 제1 기록 이후의 셀 레벨이라고 하고, 를 제2 기록에서의 각각의 페이지에 대한 데이터라고 하면, 는 다음과 같도록 를 선택하는 것에 의해 인코딩한다:
상기의 논의는 합계 전송률 7/3 비트/셀로 MLC에 대한 2 기록 저 레이턴시(논리적 페이지당 1.5 번의 판독) 재기록 코드를 제공한다.
예 1
제1 기록 이전에 n=3이고 모든 셀 레벨이 0이라고 하자. 양쪽 기록에서 저장에 필요로 되는 양 페이지에 대한 데이터가 및 라고 가정한다. 제1 기록에서, 및 을 선택하면, 수식 (1)에 따라,
제1 기록을 위한 MSB의 데이터를 디코딩하기 위해, 두 개의 임계치가 MSB 판독에 대해 적용되고 φ(013) = 101을 가지면, 데이터는 수식 (3)에 따라 디코딩되어, 이다.
제2 기록을 위한 LSB의 데이터를 디코딩하기 위해, LSB 판독에 대한 하나의 임계치가 적용되고 Ψ(223) = 000을 가지면, 데이터는 수식 (5)에 따라 디코딩되어, 이다.
제2 기록을 위한 MSB의 데이터를 디코딩하기 위해, MSB 판독에 대한 두 개의 임계치가 적용되고 φ(223) = 001을 가지면, 데이터는 수식 (6)에 따라 디코딩되어, 이다.
상기의 구성은 (Rsum, tave) =(7/3, 1.5)를 달성한다. MLC에 대한 비 재기록 코드 (2, 1.5)와 비교하여, 향상은 17%이다. 2 기록 4 레벨 WOM의 합계 용량은 셀 당 log2 103.32 비트이다는 것을 또한 유의한다. 상기의 구성과 일반 WOM의 합계 용량 사이의 차이는, 저 판독 레이턴시 요건에 기인한다. 간단한 분석은, 상기의 구성이, 세 개의 셀의 인코딩/디코딩에 기초하여 최적의 2 기록 저 판독 레이턴시 코드를 제공한다는 것을 보여줄 것이다. 더 많은 수의 셀(n > 3)에 기초한 코드 구성은, 설계 복잡성(컴퓨터 검색)과 인코딩/디코딩 복잡성을 대가로 더 나은 합계 전송률을 달성할 수도 있을 것이다.
TLC 플래시 메모리에 대한 2 기록 저 판독 레이턴시 재기록 코드
TLC 플래시에 대한 코드 구성이 설명될 것이다. LSB, 중앙 유효 비트(central significant bit; CSB) 및 MSB를, 판독 동안 적용되는 삼중 항(triplet)의 함수 에 의해 표시되는 셀 레벨 {0, 1, ..., 7}에 매핑하는 현재 TLC NAND 기술에서 사용되는 그레이 코드 는, 표 III에 있다. LSB, CSB 및 MSB 페이지를 판독하기 위해, 는, 각각의 페이지마다 0과 1 사이의 전환시 적용되는 (2, 3, 2) 개의 판독 임계치를 각각 필요로 한다는 것을 유의한다.
길이 n = 3의 저 레이턴시 재기록 코드 - 이 경우, 각각 사이즈 2 비트의 세 개의 논리적 페이지가 제1 기록에서 (LSB, CSB, MSB)에 저장되고 각각 사이즈 2비트의 2 개의 논리적 페이지가 제2 기록에서 (LSB, MSB)에 저장됨 - 가 인코더 및 디코더 세트로 구성된다. 제1 기록에서, S[0] = {000}, S[1] = {001}, S[2] = {010}, S[3] = {100}라고 하고, S-1(x)가, 를 포함하는 세트 인덱스를 나타낸다고 하자. 를 각각의 페이지에 대한 데이터라고 하면, 는 다음과 같도록 를 선택하는 것에 의해 인코딩한다:
제2 기록에서, 는 대신 사용된다. 라고 하고 라고 하자. 를 x를 포함하는 {0, 1, 2, 3}의 세트 인덱스라고 하자. 를 제1 기록 이후의 셀 레벨이라고 하고, 를 제2 기록에서의 각각의 페이지에 대한 데이터라고 하면, 는 다음과 같도록 를 선택하는 것에 의해 인코딩한다:
또한, 에 대한 판독의 횟수가 제1 기록의 경우 (2, 3, 2)이고, 제2 기록에서 에 대한 판독의 횟수가 (1, 2)이면, 페이지당 판독이다. 합계 전송률은 셀당 10/3 비트이다. 따라서, 상기의 구성은 (Rsum, tave) =(10/3, 2) 코드인데, 이것은 비 재기록 (3, 7/3) 스킴과 비교하여 합계 전송률 및 판독 레이턴시 둘 다를 향상시킨다.
(MLC에 대한 S, SΨ, Sφ 및 TLC에 대한 S, SΨl, Sφm의 내용을 결정하는) 코드 설계 프로세스를 면밀히 살펴보면, 인코더/디코더가 n 차원 입방체에 대한 라벨링 문제이다는 것을 알 수 있을 것이다. 상기의 구성에서 n = 3에 대한 라벨링은, 3 차원 입방체에 대해 수동으로 설계된다. 예를 들면, 도 4는 횡방향 사이즈 4의 입방체 격자에서 시각화되는 동일한 인코딩/디코딩을 도시한다. Im(ε1)은 검정색 포인트의 세트이고 Im(ε2)는 빨간색 포인트의 세트이다. 포인트에 대한 라벨은 두 논리적 페이지에 대한 데이터 쌍이다. 음영 라벨링(또는 점선)은, 특정한 포인트(또는 격자)가 입방체의 보이지 않는 면 상에 있다는 것을 의미한다. 삼중 항, 예를 들면, = (013)은, 몇몇 예시적인 포인트의 xyz 좌표를 나타낸다. 몇몇 포인트, 예를 들면, 각각의 기록을 위한 데이터 메시지 쌍 3, 2 및 2, 0을 가지고 = (013)에서 중첩하는 검은색 포인트 및 빨간색 포인트는 Im(ε1)과 Im(ε2) 둘 다에 있다. 상기의 예 1은, 양 기록에 대한 데이터 메시지의 두 쌍을 로서 나타내는데, 이것은, 도 4에서 도시되는 바와 같은 (원점에서부터 시작하는) 셀 레벨 변화의 시퀀스 (000) -> (013) -> (223)에 대응한다.
TLC의 경우, n > 3이면, 제1 기록은 n=3과 유사하게 설계될 수 있지만, 그러나 제2 기록은 양호한 코드에 대한 컴퓨터를 검색을 필요로 한다. 더 나은 하위 전송율을 달성하기 위해, 제2 기록에 대해 세 개의 임계치, 및 따라서 페이지당 판독을 사용하는 것에 의해 절충(tradeoff)이 이루어진다. 표 III은 양 기록에 대한 합계 전송률 및 판독의 횟수를 열거하는데, 여기서 n = 1 인 열은 종래의 비 재기록 스킴이다.
본원에서 논의되는 낮은 준비 레이턴시 재기록 코드는, 현재의 NAND 기술이 지원할 때 고속 판독을 가능하게 하기 위해 3 차원 격자에 기초한다. MLC 및 TLC 플래시에 대한 별도의 설계는, 페이지당 1.5, 2 및 2.5 판독에서 합계 전송률, 또는 수명 용량을 17%, 11% 및 24%만큼 각각 향상시킨다.
본 개시는, 저 판독 레이턴시를 갖는 개선된 합계 전송률(즉, 수명 용량)을 갖는 3 차원 격자에 기초한 데이터 맵핑에 관한 것이다. 기록 동안, 모든 논리적 페이지가 인코더에서 이용 가능하다는 가정이 사용된다. 판독 동안, 맵핑은, 각각의 논리적 페이지에 대해, 대응하는 페이지의 데이터를 디코딩하기 위해 판독 임계치의 서브세트 만이 필요로 되고, 따라서 판독 레이턴시가 크게 감소된다는 이점을 갖는다. 보다 구체적으로는, 저 판독 레이턴시 데이터 맵핑은 4 레벨 MLC 및 8 레벨 TLC 플래시 메모리에 대해 사용된다. MLC의 경우, 매핑은, 저장된 전체 데이터에서 17% 향상을 달성한다. 코드는 인코딩 및 디코딩 맵에 의해 정의된다. TLC의 경우, 현재의 NAND 기술에서 사용되는 그레이(Gray) 코드를 준수하기 위해, MLC 설계와 유사하지만 그러나 별개인 맵핑의 설계는 수명 용량의 11% 내지 24%의 향상을 달성할 수 있다.
NAND 플래시 메모리의 기본 전제는, 메모리가 한 번만 기록될 수 있다는 것이고, 메모리가 다시 기록되려면, 메모리는 소거되는 것을 필요로 할 것이다. 본원에서 논의되는 바와 같이, 메모리를 소거하는 대신, 소거 이전에 기억 장소에 다시 기록하는 것이 가능하며, 따라서 저장 용량과 마찬가지로, NAND 플래시 메모리의 수명이 증가된다.
도 1은 하나의 실시형태에 따른 시스템(100)의 개략적인 예시이다. 시스템은, 메모리 시스템(104)과 상호 작용하는 호스트 디바이스(102)를 포함한다. 컨트롤러(106)는 호스트 디바이스(102) 및 메모리 시스템(104) 둘 다에 커플링된다. 메모리 시스템(104)은 다양한 시간에 호스트 디바이스(102)에 의해 필요로 될 수도 있는 데이터를 저장한다. 데이터가 필요로 될 때, 호스트 디바이스(102)는 메모리 시스템(104)과 접촉하여 데이터를 획득한다. 컨트롤러(106)는 메모리 시스템(104)과 호스트 디바이스(102) 사이의 통신을 제어한다.
메모리 시스템(104)은 메모리 컨트롤러(108) 및 다수의 CPU 또는 프로세서(110A-110N)를 포함한다. 메모리 시스템(104)은 또한 메모리 디바이스(112)를 포함한다. 메모리 디바이스(112)는 모든 CPU(110A-110N)뿐만 아니라 메모리 컨트롤러(108)에도 커플링된다. 하나의 실시형태에서, 메모리 디바이스(112)는 NAND 스토리지 디바이스이다. 다른 실시형태에서, 메모리 디바이스(112)는 HDD 스토리지 디바이스이다. 메모리 디바이스(112)는 NAND 스토리지 디바이스 또는 HDD 스토리지 디바이스 중 어느 하나로 제한되지 않아야 한다는 것이 이해되어야 한다. 오히려, 메모리 디바이스(112)는, 하나 이상의 CPU에 의해 검색될 수도 있는 데이터를 저장할 수 있는 임의의 스토리지 디바이스에 적용 가능하다.
도 2는, 본원에서 설명되는 일 실시형태에 따른, 메모리 어레이(200)의 개략적인 도면이다. 메모리 어레이(200)는 복수의 메모리 셀(202), 제1 복수의 평행 라인(204), 및 제2 복수의 평행 라인(206)을 포함한다. 제1 복수의 평행 라인(204)은 제2 복수의 평행 라인(206)에 직교한다. 제1 복수의 평행 라인(204)은 비트 라인을 나타낸다. 제2 복수의 평행 라인(206)은 워드 라인을 나타낸다. 각각의 메모리 셀(202)은 비트 라인(204) 및 워드 라인(206)에 커플링된다. 동일 직선 메모리 셀(co-linear memory cell)(202)은 하나의 공통 라인 및 다른 동일 직선 메모리 셀과 공통이 아닌 하나의 라인에 커플링된다.
도 3a 내지 도 3c는 NAND 플래시 메모리 블록(300)의 개략적인 예시이다. 블록(300)은 화살표 "A"에 의해 나타내어지는 바와 같이 전체 블록에 걸쳐 있는 128 개의 워드 라인을 포함한다. 유저에게 노출되는 이용 가능한 데이터의 양은 화살표 "B"에 의해 표시되며 16kB이다. 저장될 모든 데이터가 32 kB의 데이터로 구성되는 간단한 상황에서, 데이터의 각각의 세트는 2 개의 별개의 워드 라인 및 따라서 단일 기록 단일 소거 시스템에 데이터를 저장하기 위한 2 개의 별개의 기억 장소(302A-302N)를 필요로 할 것이다. 따라서, 블록(300)은, 초기 사용 전에, 128 개의 워드 라인에 64 세트의 데이터를 저장하는 능력을 갖는다. 도 3a는, 유저에게 노출되는 이용 가능한 데이터의 양이 16kB이기 때문에 각각의 비트가 소거 이전에 한 번만 기록될 수 있는 상황을 도시한다. 본 개시 이전에, 셀당 2 비트가 있었지만, 그러나 각각의 비트는 소거 이전에 한 번만 기록될 수 있었다.
설명되는 바와 같이, 제1 기록에 대해 셀당 4/3 비트가 있고 제2 기록(또는 업데이트 기록)시에 셀당 1 비트가 있다. 제1 기록에 대해 셀당 4/3 비트가 있기 때문에, 도 3b에서 화살표 "C"에 의해 나타내어지는 제1 기록의 경우, 10.67 kB의 데이터만이 유저에게 노출된다. 따라서, 단지 2 개의 워드 라인이 아니라, 3 개의 워드 라인이 데이터를 저장하는 데 필요할 것이다. 그러므로, 제1 기록의 경우, 저장될 수 있는 42.66 세트의 데이터가 존재할 것이다. 일단 전체 블록(300)이 기록되면, 블록은 재기록(또는 업데이트)될 수 있다.
재기록 동안, 도 3c에서 화살표 "D"에 의해 도시되는 바와 같이, 단지 8 kB의 데이터만이 유저에게 노출된다. 따라서, 재기록의 경우, 32 kB의 데이터를 저장하기 위해서는, 네 개의 워드 라인이 필요로 될 것이다. 따라서, 재기록(또는 제2 기록)은 32 세트의 데이터를 수용할 것이다. 기록과 재기록을 결합하면, 74.66 번의 데이터 기록이 발생할 수 있는데, 이것은 단지 하나의 기록이 존재하는 경우 발생하는 64 번보다 더 크다. 74.66 번의 기록은 저장 용량에서 거의 17% 증가를 나타낸다. 저장 용량에서의 증가가 존재하기 때문에, 소거가 더 적어지고, 따라서 NAND 플래시 메모리 수명이 길어진다.
예 2
예 2에서, 최소 변화를 갖는 3 개의 MLC 셀에 대한 코드 매핑이 논의될 것이다. L은 로우(0 또는 1); H는 하이(2 또는 3)이고; I는 입력(레벨 1 또는 2)이고; O는 출력(레벨 0 또는 3)이다. 4 레벨 MLC에 대한 현재 맵핑은 {E, P1, P2, P3} = {11, 10, 00, 01}이다. 제1 기록 프로세스 동안, {0, 1, 2, 3}은 다음의 것으로 변환된다: {111, 011, 101, 110}. LSB의 경우, 0 -> LLL {111}; 1 -> HLL {011}; 2 -> LHL {101}; 및 3 -> LLH {110}이다. MSB의 경우, 0 -> OOO {111}; 1 -> IOO {011}; 2 -> OIO {101}; 및 3 -> OOI {110}이다. 제1 기록 프로세스의 경우, (LSB, MSB), LSB = 3 = {110}이고 MSB = 2 = {101}이다. 첫 번째 업데이트는 (0,1,3)로 프로그래밍되고; LSB가 판독될 때, 패턴 =(L,L,H)이고, 모든(L,L,H) 패턴은 LSB = 3에 대응한다. MSB를 판독할 때, 패턴 = (O, I, O)이고, 모든(O, I, O) 패턴은 MSB = 2에 대응한다. LSB와 MSB를 함께(LSB를 먼저하고 MSB를 후속하여) 그 순서대로 숫자를 고려하면, 결과 쌍은 (11, 10, 01)인데, 이것은, 상기에서 언급되는 매핑에 따라, (E, P1, P3) = C1 3과 같다.
제2 기록, 또는 업데이트된 기록의 경우, LSB와 MSB 둘 다는 C1 3에 의존한다. LSB의 경우, 00(또는 0) -> LHH {100}, HLL {011}; 01(또는 1) -> HHH {000}; 10(또는 2) -> LLH {110}, HHL {001}; 11(또는 3) -> LHL {101}, HLH {010}이다. MSB의 경우, 0 -> IOO {011}, OIO {101}, OOI {110}; 1 -> IIO {001}, OII {100}, IOI {010}이다. 제2 기록(또는 업데이트)의 경우, (LSB, MSB) =(3,0)이고 (3,1,3)으로 프로그래밍된다. LSB가 판독될 때, 패턴은 (H,L,H)이고, 모든(H,L,H) 패턴은 LSB = 3에 대응한다. MSB를 판독할 때, 패턴은 (O,I,O)이고, 모든 (O,I,O) 패턴은 MSB = 0에 대응한다.
LSB =(101) 및 MSB =(101)이 선택되는 경우, LSB와 MSB를 함께(LSB를 먼저하고 MSB를 후속하여) 그 순서대로 숫자를 고려하면, 결과 쌍은 (01, 10, 01)인데, 이것은, 상기에서 언급되는 매핑에 따라, (P3, P1, P3) = (3,1,3) = C1 3과 같다. 예 2의 경우, 제1 기록에서 2 비트 LSB 및 2 비트 MSB가 존재한다. 그 다음, 3개의 셀에 대한 총 7 비트에 대해 제2 기록(또는 업데이트)에서 2 비트 LSB 및 1 비트 MSB가 존재한다. 3 개의 MLC 셀은 전통적으로 6 비트를 저장할 수 있다는 것을 유의한다. 따라서, 7 비트는 17% 증가를 나타낸다. 페이지당 평균 판독은 1.5인데, 이것은 종래의 페이지당 판독과 같다. 따라서, 판독 레이턴시는 변하지 않지만, 저장될 수 있는 데이터의 양은 증가하였다. 도 4는, 예 2의 2 기록 저 판독 레이턴시 코드 3D 대표 모델의 인코딩 및 디코딩 맵핑이다.
도 5는 데이터를 소거하기 이전에 동일한 기억 장소에 데이터를 두 번 기록하는 방법을 예시하는 플로우차트(500)이다. 도 5에서 도시된 바와 같이, 제1 세트의 데이터가 초기에 블록 502에서 기억 장소에 기록된다. 그 다음, 임의의 소거 이전에, 블록 504에서, 제2 세트의 데이터가 기억 장소에 기록된다. 마지막으로, 블록 506에서, 데이터는 기억 장소로부터 소거될 수 있다. 본 개시 이전에는, 기억 장소에 데이터가 한 번만 기록될 수 있기 때문에, 블록 506은 블록 504 이전에 발생하였을 것이지만, 그러나 본원에서 논의되는 바와 같이, 전체보다 적은 기억 장소가 제1 기록에서 활용된다. 따라서, 제2 기록을 위한 시간이 되면, 더 많은 데이터가 기억 장소에 기록될 여지가 여전히 존재한다. 따라서, 동일한 기억 장소에 두 번 기록하는 것에 의해, 소거 이전에 더 많은 데이터가 저장될 수 있다.
예 3
예 3에서, 최소 변화를 갖는 3 개의 TLC 셀에 대한 코드 매핑이 논의될 것이다. 8 레벨 MLC에 대한 현재 맵핑은 {E, P1, P2, P3, P4, P5, P6, P7} = {111, 110, 100, 000, 010, 011, 001, 101}이다. 제1 기록 프로세스 동안, {0, 1, 2, 3}은 다음의 것으로 변환된다: {000, 001, 010, 011}. LSB = 1 = {001}, CSB = 2 = {010} 및 MSB = 1 = {001}이다. LSB, CSB 및 MSB를 함께(LSB를 가장 먼저하고 CSB가 뒤따라고 그 다음 MSB를 후속하여) 그 순서대로 숫자를 고려하면, 결과 쌍은 (000, 010, 101)인데, 이것은, 상기에서 언급되는 매핑에 따라, (P3, P4, P7) = C1 3과 같다. 제2 기록, 또는 업데이트된 기록의 경우, LSB 및 MSB만이 사용되며 C1 3에 의존한다. 추가적으로, (P4, P5, P6, P7) = {11, 10, 00, 01}이다. LSB의 경우 0 -> 101, 010; 1-> 100, 011; 2-> 000; 3-> 110, 001이다. MSB의 경우, 0 -> 111; 1-> 001, 110; 2-> 011, 100; 3-> 101, 010이다. 제2 기록(또는 업데이트)의 경우, LSB = 3 =(110) 또는 (001)이다. MSB = 0 =(111)이다. LSB =(110) 및 MSB =(111)이 선택되는 경우, LSB와 MSB를 함께(LSB를 먼저하고 MSB를 후속하여) 그 순서대로 숫자를 고려하면, 결과 쌍은 (11, 11, 01)인데, 이것은, 상기에서 언급되는 매핑에 따라, (P4, P4, P7) = (4,4,7) = C1 3과 같다. 예 3의 경우, 제1 기록에서 2 비트 LSB, 2 비트 CSB 및 2 비트 MSB가 존재한다. 그 다음, 3개의 셀에 대한 총 10 비트에 대해 제2 기록(또는 업데이트)에서 2 비트 LSB 및 2 비트 MSB가 존재한다. 3 개의 TLC 셀은 전통적으로 9 비트를 저장할 수 있다는 것을 유의한다. 따라서, 10 비트는 11% 증가를 나타낸다. 페이지당 평균 판독은 2인데, 이것은 페이지당 2.33의 종래의 판독보다 작다. 따라서, 판독 레이턴시는 감소되고 저장될 수 있는 데이터의 양은 증가하였다.
데이터를 한 번 기록하고 그 다음 소거하는 것은, 리소스를 극대화하지는 않는다. 그렇게 하면, 짧은 디바이스 수명 및 궁극적으로는 디바이스 고장으로 이어진다. 기억 장소를 소거하기 이전에 동일한 기억 장소에 두 번 기록하는 것에 의해, (한 번만 저장하고 그 다음 소거하는 것에 비해) 더 많은 데이터가 저장될 수 있을 뿐만 아니라, 디바이스 수명이 증가될 수 있는데, 그 이유는, 기억 장소가 저장을 위해 두 번 사용될 때까지 데이터가 소거되지 않을 것이기 때문이다.
상기의 내용은 본 개시의 실시형태에 관한 것이지만, 본 개시의 다른 실시형태 및 추가 실시형태가 본 개시의 기본 범위를 벗어나지 않고도 고안될 수도 있으며, 그 범위는 다음의 청구범위에 의해 결정된다.
Claims (31)
- 삭제
- 삭제
- 삭제
- 삭제
- 방법에 있어서,
제1 기억 장소에서 NAND 플래시 블록에 제1 세트의 데이터를 기록하는 단계 - 상기 제1 세트의 데이터를 기록하는 단계는 상기 제1 기억 장소의 전체 미만을 활용하고, 상기 제1 세트의 데이터를 기록하기 위해 셀당 4/3 비트가 이용 가능함 - ;
상기 제1 기억 장소에 제2 세트의 데이터를 기록하는 단계 - 상기 제2 세트의 데이터를 기록하는 단계는 상기 제1 기억 장소의 나머지를 활용하고, 상기 제2 세트의 데이터를 기록하기 위해 셀당 1 비트가 이용 가능함 - ; 및
상기 제1 기억 장소를 소거하는 단계를 포함하고,
상기 제2 세트의 데이터를 기록하는 단계는 상기 제1 세트의 데이터의 소거 이전에 발생하고, 상기 방법은 솔리드 스테이트 드라이브 내에서 발생하며, 상기 제1 세트의 데이터 및 상기 제2 세트의 데이터의 기록은 2개의 기록 재기록 코드를 사용하고, 상기 코드는 로직 데이터와 물리적 셀 레벨 사이의 현재의 그레이 매핑을 사용하는 것인, 방법. - 제5항에 있어서,
상기 NAND 플래시 블록은 TLC인, 방법. - 제5항에 있어서,
상기 NAND 플래시 블록은 MLC인, 방법. - 제7항에 있어서,
상기 제1 기억 장소는 16kB 저장 장소이며, 상기 제1 세트의 데이터를 기록하는 단계는 상기 제1 기억 장소 중 10kB에 데이터를 기록하는 단계를 포함하는 것인, 방법. - 제8항에 있어서,
상기 제2 세트의 데이터를 기록하는 단계는 상기 제1 기억 장소 중 8kB에 데이터를 기록하는 단계를 포함하는 것인, 방법. - 삭제
- 제9항에 있어서,
상기 제1 세트의 데이터는, 상기 제2 세트의 데이터가 상기 제1 기억 장소에 기록될 때 상기 제1 기억 장소에 존재하는 것인, 방법. - 제9항에 있어서,
상기 제1 세트의 데이터는, 상기 제2 세트의 데이터가 상기 제1 기억 장소에 기록된 이후 상기 제1 기억 장소에 존재하는 것인, 방법. - 제5항에 있어서,
상기 제1 기억 장소는, 메모리 블록 내에서 워드 라인과 비트 라인의 교차점에 배치되는 것인, 방법. - 시스템에 있어서,
프로세서; 및
명령어들을 저장하는 메모리 시스템을 포함하고,
상기 명령어들은, 상기 프로세서에 의한 실행시, 상기 시스템으로 하여금:
제1 기억 장소에서 NAND 플래시 블록에 제1 세트의 데이터를 기록하게 하고 - 상기 제1 세트의 데이터의 기록은 상기 제1 기억 장소의 전체 미만을 활용하고, 상기 제1 세트의 데이터를 기록하기 위해 셀당 4/3 비트가 이용 가능함 - ;
상기 제1 기억 장소에 제2 세트의 데이터를 기록하게 하고 - 상기 제2 세트의 데이터의 기록은 상기 제1 기억 장소의 나머지를 활용하고, 상기 제2 세트의 데이터를 기록하기 위해 셀당 1 비트가 이용 가능함 - ;
상기 제1 기억 장소를 소거하게 하고,
상기 제2 세트의 데이터를 기록하는 것은 상기 제1 세트의 데이터를 소거하는 것 이전에 발생하는 것이며, 상기 시스템은 솔리드 스테이트 드라이브이고, 상기 제1 세트의 데이터 및 상기 제2 세트의 데이터의 기록은 2개의 기록 재기록 코드를 사용하고, 상기 코드는 로직 데이터와 물리적 셀 레벨 사이의 현재의 그레이 매핑을 사용하는 것인, 시스템. - 제14항에 있어서,
상기 NAND 플래시 블록은 TLC인, 시스템. - 제14항에 있어서,
상기 NAND 플래시 블록은 MLC인, 시스템. - 제14항에 있어서,
상기 제1 기억 장소는 32kB 저장 장소이며, 상기 제1 세트의 데이터를 기록하는 것은 상기 제1 기억 장소 중 10kB에 데이터를 기록하는 것을 포함하는 것인, 시스템. - 제17항에 있어서,
상기 제2 세트의 데이터를 기록하는 것은 상기 제1 기억 장소 중 8kB에 데이터를 기록하는 것을 포함하는 것인, 시스템. - 삭제
- 제18항에 있어서,
상기 제1 세트의 데이터는, 상기 제2 세트의 데이터가 상기 제1 기억 장소에 기록될 때 상기 제1 기억 장소에 존재하는 것인, 시스템. - 제18항에 있어서,
상기 제1 세트의 데이터는, 상기 제2 세트의 데이터가 상기 제1 기억 장소에 기록된 이후 상기 제1 기억 장소에 존재하는 것인, 시스템. - 제14항에 있어서,
상기 제1 기억 장소는, 메모리 블록 내에서 워드 라인과 비트 라인의 교차점에 배치되는 것인, 시스템. - 명령어들을 포함하는 비일시적 컴퓨터 판독 가능 저장 매체로서,
상기 명령어들은, 프로세서에 의한 실행시 컴퓨터 시스템으로 하여금:
제1 기억 장소에서 NAND 플래시 블록에 제1 세트의 데이터를 기록하는 단계 - 상기 제1 세트의 데이터를 기록하는 단계는 상기 제1 기억 장소의 전체 미만을 활용하고, 상기 제1 세트의 데이터를 기록하기 위해 셀당 4/3 비트가 이용 가능함 - ;
상기 제1 기억 장소에 제2 세트의 데이터를 기록하는 단계 - 상기 제2 세트의 데이터를 기록하는 단계는 상기 제1 기억 장소의 나머지를 활용하고, 상기 제2 세트의 데이터를 기록하기 위해 셀당 1 비트가 이용 가능함 - ; 및
상기 제1 기억 장소를 소거하는 단계
를 수행하는 것에 의해, 판독 프로세스가 완료된 이후 파일을 버닝하게 하고,
상기 제2 세트의 데이터를 기록하는 단계는 상기 제1 세트의 데이터의 소거 이전에 발생하고, 상기 제1 기억 장소는 솔리드 스테이트 드라이브 내에 있으며, 상기 제1 세트의 데이터 및 상기 제2 세트의 데이터의 기록은 2개의 기록 재기록 코드를 사용하고, 상기 코드는 로직 데이터와 물리적 셀 레벨 사이의 현재의 그레이 매핑을 사용하는 것인, 비일시적 컴퓨터 판독 가능 저장 매체. - 제23항에 있어서,
상기 NAND 플래시 블록은 TLC인, 비일시적 컴퓨터 판독 가능 저장 매체. - 제23항에 있어서,
상기 NAND 플래시 블록은 MLC인, 비일시적 컴퓨터 판독 가능 저장 매체. - 제23항에 있어서,
상기 제1 기억 장소는 32kB 저장 장소이며, 상기 제1 세트의 데이터를 기록하는 단계는 상기 제1 기억 장소 중 10kB에 데이터를 기록하는 단계를 포함하는 것인, 비일시적 컴퓨터 판독 가능 저장 매체. - 제26항에 있어서,
상기 제2 세트의 데이터를 기록하는 단계는 상기 제1 기억 장소 중 8kB에 데이터를 기록하는 단계를 포함하는 것인, 비일시적 컴퓨터 판독 가능 저장 매체. - 삭제
- 제27항에 있어서,
상기 제1 세트의 데이터는, 상기 제2 세트의 데이터가 상기 제1 기억 장소에 기록될 때 상기 제1 기억 장소에 존재하는 것인, 비일시적 컴퓨터 판독 가능 저장 매체. - 제27항에 있어서,
상기 제1 세트의 데이터는, 상기 제2 세트의 데이터가 상기 제1 기억 장소에 기록된 이후 상기 제1 기억 장소에 존재하는 것인, 비일시적 컴퓨터 판독 가능 저장 매체. - 제23항에 있어서,
상기 제1 기억 장소는, 메모리 블록 내에서 워드 라인과 비트 라인의 교차점에 배치되는 것인, 비일시적 컴퓨터 판독 가능 저장 매체.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662438821P | 2016-12-23 | 2016-12-23 | |
US62/438,821 | 2016-12-23 | ||
US15/472,326 US10360973B2 (en) | 2016-12-23 | 2017-03-29 | Data mapping enabling fast read multi-level 3D NAND to improve lifetime capacity |
US15/472,326 | 2017-03-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180074561A KR20180074561A (ko) | 2018-07-03 |
KR101996136B1 true KR101996136B1 (ko) | 2019-07-03 |
Family
ID=62630662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170117260A KR101996136B1 (ko) | 2016-12-23 | 2017-09-13 | 빠른 판독 다중 레벨 3d nand가 수명 용량 향상시키는 것을 가능하게 하는 데이터 매핑 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10360973B2 (ko) |
KR (1) | KR101996136B1 (ko) |
CN (1) | CN108242249B (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109903799B (zh) * | 2019-01-29 | 2021-08-03 | 华中科技大学 | 一种可变编程级数的三维闪存阵列单元操作方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016116930A1 (en) * | 2015-01-21 | 2016-07-28 | Technion Research & Development Foundation Limited | Reusable memory devices with wom codes |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5815434A (en) * | 1995-09-29 | 1998-09-29 | Intel Corporation | Multiple writes per a single erase for a nonvolatile memory |
US7631162B2 (en) * | 2005-10-27 | 2009-12-08 | Sandisck Corporation | Non-volatile memory with adaptive handling of data writes |
US7388781B2 (en) | 2006-03-06 | 2008-06-17 | Sandisk Il Ltd. | Multi-bit-per-cell flash memory device with non-bijective mapping |
US7542337B2 (en) * | 2006-07-31 | 2009-06-02 | Sandisk 3D Llc | Apparatus for reading a multi-level passive element memory cell array |
US7366017B2 (en) * | 2006-08-22 | 2008-04-29 | Micron Technology, Inc. | Method for modifying data more than once in a multi-level cell memory location within a memory array |
US8621137B2 (en) * | 2007-12-27 | 2013-12-31 | Sandisk Enterprise Ip Llc | Metadata rebuild in a flash memory controller following a loss of power |
JP5359798B2 (ja) * | 2009-11-10 | 2013-12-04 | ソニー株式会社 | メモリデバイスおよびその読み出し方法 |
WO2012020278A1 (en) | 2010-08-13 | 2012-02-16 | Sandisk Il Ltd. | Data coding using divisions of memory cell states |
KR101184866B1 (ko) * | 2010-10-26 | 2012-09-20 | 에스케이하이닉스 주식회사 | 불휘발성 메모리 장치 및 이의 동작 방법 |
KR101281706B1 (ko) * | 2011-02-28 | 2013-07-03 | 에스케이하이닉스 주식회사 | 불휘발성 메모리 장치 및 그의 소거 동작 제어 방법 |
US9318166B2 (en) * | 2011-07-22 | 2016-04-19 | SanDisk Technologies, Inc. | Systems and methods of storing data |
US8879319B1 (en) | 2011-07-29 | 2014-11-04 | Ecole Polytechnique Federale De Lausanne (Epfl) | Re-writing scheme for solid-state storage devices |
KR101927212B1 (ko) * | 2012-05-09 | 2019-03-07 | 삼성전자주식회사 | 비휘발성 메모리 장치의 프로그래밍 방법 |
KR101959567B1 (ko) * | 2012-05-14 | 2019-03-18 | 에스케이하이닉스 주식회사 | 비휘발성 메모리 장치 및 비휘발성 메모리 장치의 프로그램 방법 |
WO2014051611A1 (en) | 2012-09-28 | 2014-04-03 | Duke University | Systems for and methods of extending lifetime of non-volatile memory |
US9318199B2 (en) * | 2012-10-26 | 2016-04-19 | Micron Technology, Inc. | Partial page memory operations |
CN105579972A (zh) | 2013-01-24 | 2016-05-11 | 加州理工学院 | 一次写入存储器中的联合重写和错误校正 |
US9804960B2 (en) * | 2013-03-14 | 2017-10-31 | Western Digital Technologies, Inc. | Overprovision capacity in a data storage device |
US9665286B2 (en) * | 2013-05-17 | 2017-05-30 | Hitachi, Ltd. | Storage device |
WO2015005635A1 (ko) | 2013-07-08 | 2015-01-15 | 주식회사 윌러스표준기술연구소 | 메모리 시스템 및 메모리의 데이터 처리 방법 |
US9152330B2 (en) * | 2014-01-09 | 2015-10-06 | Netapp, Inc. | NVRAM data organization using self-describing entities for predictable recovery after power-loss |
JP2016004387A (ja) * | 2014-06-16 | 2016-01-12 | 株式会社東芝 | ストレージシステム、メモリコントローラ、および制御方法 |
TWI553477B (zh) * | 2015-06-12 | 2016-10-11 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 |
-
2017
- 2017-03-29 US US15/472,326 patent/US10360973B2/en active Active
- 2017-09-13 KR KR1020170117260A patent/KR101996136B1/ko active IP Right Grant
- 2017-09-15 CN CN201710831819.6A patent/CN108242249B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016116930A1 (en) * | 2015-01-21 | 2016-07-28 | Technion Research & Development Foundation Limited | Reusable memory devices with wom codes |
Also Published As
Publication number | Publication date |
---|---|
CN108242249B (zh) | 2021-12-03 |
US10360973B2 (en) | 2019-07-23 |
US20180182453A1 (en) | 2018-06-28 |
CN108242249A (zh) | 2018-07-03 |
KR20180074561A (ko) | 2018-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11036628B2 (en) | Storage system having a host directly manage physical data locations of storage device | |
TWI533304B (zh) | 用於儲存資料於具有跨頁區段、多頁編碼及每頁編碼之多位準單元快閃記憶體器件中之方法及裝置 | |
CN102148058B (zh) | 读可靠性获得提高的含有多位存储单元的快闪存储器件 | |
US9645896B2 (en) | Data storage device and flash memory control method | |
US7308525B2 (en) | Method of managing a multi-bit cell flash memory with improved reliablility and performance | |
US9471425B2 (en) | Data conditioning to improve flash memory reliability | |
TWI407446B (zh) | 記憶體裝置內錯誤更正的動態資料儲存系統及方法 | |
US8176234B2 (en) | Multi-write coding of non-volatile memories | |
KR100963707B1 (ko) | 플래시 메모리 관리 방법, 메모리 장치, 시스템, 컴퓨터판독가능한 기록 매체, 비휘발성 저장 요소 어레이 관리방법 | |
KR100736103B1 (ko) | 비휘발성 메모리, 상기 비휘발성 메모리의 데이터 유효성을판단하는 장치 및 방법 | |
KR102068519B1 (ko) | 저장 장치, 그것의 쓰기 방법 및 읽기 방법 | |
US20070271494A1 (en) | Error Correction Coding for Multiple-Sector Pages in Flash Memory Devices | |
Jagmohan et al. | Write amplification reduction in NAND flash through multi-write coding | |
KR20090101887A (ko) | 치환 변환을 사용하여 플래시 메모리 내의 에러를 피하는 방법 | |
KR101602316B1 (ko) | 반도체 메모리 장치 및 그것의 데이터 처리 방법 | |
US20110246703A1 (en) | Constrained coding to reduce floating gate coupling in non-volatile memories | |
KR101434567B1 (ko) | 비휘발성 메모리의 맵핑 테이블 관리 장치 및 방법 | |
US9971523B2 (en) | Memory controller with data compression and padding features, method of controlling nonvolatile memory and memory system | |
US10014050B2 (en) | High sum-rate write-once memory | |
KR101270685B1 (ko) | 비휘발성 메모리의 데이터 처리 장치 및 방법 | |
US10372377B2 (en) | Memory controller, memory system, and control method | |
KR101996136B1 (ko) | 빠른 판독 다중 레벨 3d nand가 수명 용량 향상시키는 것을 가능하게 하는 데이터 매핑 | |
CN115454327A (zh) | 基于存储器单元的健康特性进行媒体管理操作 | |
Luojie et al. | WOM codes reduce write amplification in NAND flash memory | |
CN113741799A (zh) | 存储器装置 |
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 | ||
GRNT | Written decision to grant |