KR102282879B1 - 고체 상태 드라이브의 전송 버퍼 사용률을 향상시키기 위해 nand 페이지 버퍼들을 사용하는 방법 및 시스템 - Google Patents

고체 상태 드라이브의 전송 버퍼 사용률을 향상시키기 위해 nand 페이지 버퍼들을 사용하는 방법 및 시스템 Download PDF

Info

Publication number
KR102282879B1
KR102282879B1 KR1020177004512A KR20177004512A KR102282879B1 KR 102282879 B1 KR102282879 B1 KR 102282879B1 KR 1020177004512 A KR1020177004512 A KR 1020177004512A KR 20177004512 A KR20177004512 A KR 20177004512A KR 102282879 B1 KR102282879 B1 KR 102282879B1
Authority
KR
South Korea
Prior art keywords
page data
nand
lower page
controller
error
Prior art date
Application number
KR1020177004512A
Other languages
English (en)
Other versions
KR20170035983A (ko
Inventor
요게쉬 비. 와크차우레
데이비드 제이. 펠스터
에릭 엘. 호프만
신 궈
알리아스가르 에스. 마드라스왈라
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20170035983A publication Critical patent/KR20170035983A/ko
Application granted granted Critical
Publication of KR102282879B1 publication Critical patent/KR102282879B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital 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/5621Digital 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/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital 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/5621Digital 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/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G06F11/106Correcting systematically all correctable errors, i.e. scrubbing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5642Multilevel memory with buffers, latches, registers at input or output
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5643Multilevel memory comprising cache storage devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5648Multilevel memory programming, reading or erasing operations wherein the order or sequence of the operations is relevant
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

호스트로부터 수신된 페이지 데이터(예를 들어, 상위 페이지 데이터)가 고체 상태 드라이브의 제어기의 전송 버퍼에 저장된다. 다른 페이지 데이터(예를 들어, 하위 페이지 데이터)는 에러 정정된 페이지 데이터로서 전송 버퍼에 저장하기 위해 비휘발성 메모리(예를 들어, NAND 메모리)로부터 판독된다. 에러 정정된 페이지 데이터 및 페이지 데이터는 비휘발성 메모리에 기록된다. 추가의 실시예들에서, 제어기는 호스트로부터 수신된 페이지 데이터(예를 들어, 상위 페이지 데이터)를 하나 이상의 NAND 페이지 버퍼들에 로딩한다. 제어기는 에러 정정된 페이지 데이터로서 전송 버퍼에 저장하기 위해 NAND 메모리로부터 다른 페이지 데이터(예를 들어, 하위 페이지 데이터)를 판독한다. 전송 버퍼에 저장된 에러 정정된 페이지 데이터는 하나 이상의 NAND 페이지 버퍼들에 로딩된다.

Description

고체 상태 드라이브의 전송 버퍼 사용률을 향상시키기 위해 NAND 페이지 버퍼들을 사용하는 방법 및 시스템{METHOD AND SYSTEM FOR USING NAND PAGE BUFFERS TO IMPROVE THE TRANSFER BUFFER UTILIZATION OF A SOLID STATE DRIVE}
고체 상태 드라이브(SSD)는 데이터를 영구적으로 저장하기 위한 메모리로서 집적 회로 어셈블리들을 사용하는 데이터 저장 디바이스이다. SSD들은 이동하는 기계적 컴포넌트들을 갖지 않으며, 이것은 SSD들을 스피닝 디스크들 및 가동 판독/기록 헤드들을 포함하는 하드 디스크 드라이브들(HDD들) 또는 플로피 디스크들과 같은 종래의 전기기계 자기 디스크들로부터 구별한다. 전기기계 디스크들과 비교하여, SSD들은 물리적인 충격에 통상적으로 더욱 강하고, 조용히 구동되고, 더 낮은 액세스 시간을 가지며, 레이턴시가 작다.
다수의 타입의 SSD들이 전력 없이 데이터를 유지하고 비휘발성 저장 기술의 타입인 NAND-기반 플래시 메모리를 사용한다. NAND 플래시 개발의 중요한 목적은, 플래시 메모리가 하드 디스크들과 같은 자기 저장 디바이스들과 경쟁할 수 있도록 비트 당 가격을 감소시키고 최대 칩 용량을 증가시키는 것이었다.
단일-레벨 셀(SLC) NAND에서, 각각의 셀이 2개의 상태 중 하나에 존재할 수 있으며, 셀 마다 정보의 1 비트를 저장할 수 있다. 멀티-레벨 셀(MLC) NAND은 동일한 수의 트랜지스터들을 사용하여 더 많은 비트들이 저장되게 하기 위해 셀 마다 다중의 레벨들을 사용하는 고체-상태 플래시 메모리이다. 일부 MLC NAND들은 셀 마다 4개의 가능한 상태들을 가져서, 이들은 셀 마다 정보의 2 비트들을 저장할 수 있다. TLC NAND(triple level cell NAND)는 플래시 매체의 셀당 3 비트의 정보를 저장하는 멀티-레벨 고체 상태 NAND의 타입이다. 특정한 상황들에서, 셀당 1 또는 2 비트의 정보를 저장하는 NAND 플래시 메모리와 비교하여, TLC NAND들을 갖는 더 높은 저장 용량의 SSD들을 제조하는 것이 바람직할 수 있다.
이제, 동일한 참조 부호들이 전반적으로 대응하는 부분들을 나타내는 도면들을 참조한다.
도 1은 특정한 실시예들에 따른, 호스트가 데이터를 SSD에 기록하는 컴퓨팅 환경의 블록도를 예시한다.
도 2는 특정한 실시예들에 따른, 하위 페이지 데이터 및 그 후 상위 페이지 데이터가 SSD에 어떻게 기록되는지를 나타내는 다른 블록도를 예시한다.
도 3은 특정한 실시예들에 따른, 데이터를 SSD에 기록하는 제1 예시적인 동작들을 도시하는 흐름도를 예시한다.
도 4는 특정한 실시예들에 따른, 도 3에 도시된 제1 예시적인 동작들을 구현하기 위한 전송 버퍼의 크기 요건들을 나타내는 블록도를 예시한다.
도 5는 특정한 실시예들에 따른, 데이터를 SSD에 기록하는 제2 예시적인 동작들을 도시하는 흐름도를 예시한다.
도 6은 특정한 실시예들에 따른, 도 5에 도시된 제2 예시적인 동작들을 구현하기 위한 전송 버퍼의 크기 요건들을 나타내는 블록도를 예시한다.
도 7은 특정한 실시예들에 따른, 데이터를 SSD에 기록하는 제3 예시적인 동작들을 도시하는 흐름도를 예시한다.
도 8은 특정한 실시예들에 따른, 데이터를 SSD에 기록하는 제4 예시적인 동작들을 도시하는 흐름도를 예시한다.
도 9는 특정한 실시예들에 따른, 계산 디바이스의 블록도를 예시한다.
아래의 설명에서, 본 명세서의 일부를 형성하고 여러 실시예들을 예시하는 첨부하는 도면들에 대한 참조가 이루어진다. 다른 실시예들이 사용될 수 있으며 구조적 및 동작적 변화들이 이루어질 수 있다는 것이 이해된다.
오배치 에러들(misplacement errors)이 MLC NAND들의 주요한 문제이다. 이러한 문제는 TLC NAND에 대해 특히 더욱 심각하다. TLC NAND들에서, 데이터의 3 비트들이 셀 마다 프로그래밍된다. 저장되는 제1 비트들이 하위 페이지 데이터로 지칭된다. 저장되는 제2 비트들이 상위 페이지 데이터로 지칭되며, 저장되는 제3 비트들이 추가(extra) 페이지 데이터로 지칭된다. 그 결과, TLC는 추가 페이지 데이터를 프로그래밍한 이후에 8개의 상태들을 가질 수 있다. 하위 페이지 데이터, 상위 페이지 데이터, 및 추가 페이지 데이터가 페이지 데이터로 각각 지칭될 수 있다.
TLC NAND에서, 데이터는 하위 페이지 데이터를 TLC NAND에 프로그래밍함으로써 하위 페이지 데이터를 먼저 기록하고, 그 후 상위 페이지 데이터를 TLC NAND에 프로그래밍함으로써 상위 페이지 데이터를 기록함으로써 기록될 수 있다.
그러나, 상위 페이지 데이터를 기록하기 위해, 이미 기록된 하위 페이지 데이터는 상위 페이지 데이터가 TLC NAND에 프로그래밍되기 이전에 판독되어야 한다.
TLC NAND들에서, 이미 기록된 하위 페이지 데이터가 판독될 때 판독 에러들이 존재할 수 있다. TLC NAND들(또는 그 점에 대해서는 다른 NAND들)이 에러 검사 및 정정(ECC)을 위한 내부 메커니즘들을 갖지 않기 때문에, 하위 페이지 데이터를 판독하는데 있어서 임의의 에러들은 상위 페이지 데이터를 TLC NAND에 프로그래밍하는데 있어서 오배치 에러들을 초래할 수 있다.
TLC NAND들이 에러 검사 및 정정을 위한 내부 메커니즘들을 갖지 않기 때문에, 특정한 실시예들은 오배치 에러들을 감소시키기 위해, 상위 페이지 데이터를 기록하기 이전에, TLC NAND에 이미 기록되고 TLC NAND으로부터 판독된 하위 페이지 데이터의 에러 검사 및 정정을 수행하기 위해 고체 상태 드라이브의 제어기의 전송 버퍼를 사용하는 메커니즘들을 제공한다. 전송 버퍼가 정적 랜덤 액세스 메모리(SRAM)와 같은 휘발성 메모리의 타입으로 구성되기 때문에, 전송 버퍼의 저장 공간이 TLC NAND들의 저장 공간에 비교하여 상대적으로 매우 작다. 전송 버퍼는, 휘발성 메모리가 매우 빠르고 그 결과 고가인 한은, SRAM과 다른 일부 다른 타입의 휘발성 메모리로 구성될 수 있다. 추가로, 전송 버퍼에서 데이터 손실을 초래할 수 있는 정전을 방지하는 백업 전력 메커니즘들은 큰 저장 공간을 갖는 전송 버퍼들을 구성하는데 비용이 많이 들기 때문에, 큰 저장 공간을 갖는 전송 버퍼들은 구현하는 것이 어렵다. 따라서, 전송 버퍼의 크기는 상대적으로 작아야 하며, 추가의 실시예들은 하위 페이지 데이터가 전송 버퍼에 저장되는 동안 상위 페이지 데이터를 저장하기 위해 하나 이상의 NAND 페이지 버퍼들을 사용함으로써 고체 상태 드라이브의 제어기의 전송 버퍼의 크기를 감소시키는 메커니즘들을 제공한다.
도 1은 특정한 실시예들에 따른, 호스트(102)가 데이터를 SSD(104)에 기록하는 컴퓨팅 환경(100)의 블록도를 예시한다. SSD(102)는 제어기(106) 및 NAND 콤플렉스(NAND complex)(108)로 구성될 수 있고, 여기서, 특정한 실시예들에서, NAND 콤플렉스(108)는 TLC NAND일 수 있다. 다른 실시예들에서, SSD(104)는 부정 논리합(NOR) 메모리와 같은 특정한 다른 타입의 비휘발성 메모리 또는 일부 다른 적합한 비휘발성 메모리를 제어하는 제어기로 구성될 수 있다. 특정한 실시예들이 NAND 메모리, NOR 메모리 또는 임의의 다른 적합한 비휘발성 메모리를 포함하는 비휘발성 메모리로 이루어진 SSD에서 구현될 수 있다는 것을 알 수 있다. 특정한 실시예들에서, SSD(104)는 데이터의 수 테트라바이트들 이상을 저장할 수 있으며, 데이터의 수 기가바이트들 이상을 각각 저장하는 복수의 TLC NAND들(108)이 SSD(104)에서 발견될 수 있다.
특정한 실시예들에서, 제어기(106)는 응용 주문형 집적 회로(ASIC)를 통해 구현될 수 있다. 제어기(106)는 전송 버퍼(110) 및 ECC 엔진(112)을 가질 수 있다. 전송 버퍼(110)는 SRAM일 수 있으며, ECC 엔진(112)은 회로 또는 펌웨어에서 구현될 수 있다. TLC NAND이 저장 공간에서 대략 기가바이트들일 수 있지만, 전송 버퍼(110)는 저장 공간에서 킬로바이트 또는 메가바이트 정도일 수 있다.
TLC NAND(108)은 복수의 NAND 페이지 버퍼들(114) 및 NAND 메모리(116)로 구성될 수 있다. NAND 페이지 버퍼들(114)은 약 4개(또는 그 이상)일 수 있으며 저장 공간에서 대략 킬로바이트들일 수 있다. 예를 들어, 특정한 실시예들에서, 각각의 NAND 페이지 버퍼는 64 킬로바이트들의 저장 공간을 갖는다.
특정한 실시예들에서, 호스트(102)는 개인 컴퓨터, 메인프레임, 전화 디바이스, 스마트폰, 저장 제어기, 블레이드 컴퓨터, 메모리를 갖는 프로세서 등과 같은 임의의 적합한 계산 디바이스로 구성될 수 있다. 특정한 실시예들에서, 호스트(102)는 (PCIe(Peripheral Component Interconnect), SATA(Serial Advanced Technology Attachment), SAS(Serial Attached Small Computer System Interface)와 같은) 버스 또는 인터넷, 저장 영역 네트워크(SAN), 로컬 영역 네트워크(LAN) 등과 같은 네트워크를 통해 SSD(104)와 통신할 수 있다.
특정한 실시예들에서, 호스트(102)는 SSD(104)의 TLC NAND들(108)에 기록하기 위해 SSD(104)에 데이터의 하위 및 상위 페이지들을 전송한다. 페이지들(하위 및/또는 상위)은 SSD(104)의 제어기(106)에 의해 전송 버퍼(110)에 저장되며, 제어기(106)는 페이지들이 SSD에 기록되었다는 것을 호스트(102)에 통신한다. 따라서, SSD(104)에 호스트(102)에 의한 데이터의 기록은 비동기이다. 페이지들은, 전송 버퍼가 SRAM을 통해 구현될 때 수 마이크로초에 전송 버퍼(110)에 기록된다. 그러나, NAND 메모리(116)에 대한 기록은 밀리초 정도의 시간이 걸리며, 데이터가 SSD(104)에 기록되었다는 것을 호스트(102)에 통지한 이후에 나중에 제어기(106)에 의해 전송 버퍼(110)로부터 수행된다. SSD(104)의 성능은 페이지들을 빠른 전송 버퍼(106)에 먼저 저장한 후, 페이지들을 상대적으로 더 느린 NAND 메모리(116)에 전송함으로써 향상된다.
도 2는 특정한 실시예들에 따른, 하위 페이지 데이터(202) 및 그 다음에 상위 페이지 데이터(204)가 호스트(102)로부터 SSD(104)에 어떻게 기록되는지를 나타내는 다른 블록도(200)를 예시한다. 먼저, 호스트(102)가 하위 페이지 데이터(202)를 SSD(104)에 전송한 후, 시간 간격(210) 이후에 상위 페이지 데이터(204)를 전송한다. 특정한 실시예들에서, 하위 및 상위 페이지 데이터 각각은 64킬로바이트일 수 있으며 약 100 내지 1000 바이트의 추가 공간이 에러 정정 정보에 대해 필요할 수 있다.
따라서, 도 2는 SSD(104)에 데이터를 기록하기 위해, 호스트(102)가 하위 페이지 데이터(202)를 먼저 전송한 후, 시간 간격(210) 이후에 상위 페이지 데이터(204)를 전송하는 특정한 실시예들을 예시한다.
도 3은 특정한 실시예들에 따른, 데이터를 SSD(104)에 기록하는 제1 예시적인 동작들을 도시하는 흐름도(300)를 예시한다. 도 3에 도시된 동작들은 SSD(104)에서 구현되는 제어기(106)에 의해 수행될 수 있다.
제어는, 제어기(106)가 호스트(102)로부터 제어기(106)의 전송 버퍼(110)에서 호스트(102)로부터 하위 페이지데이터(202)를 수신하고, NAND 메모리(116)를 프로그래밍함으로써 NAND 메모리(116)에 하위 페이지 데이터(202)를 기록하는 블록(302)에서 시작한다. 하위 페이지데이터(202)가 NAND 메모리(116)에 기록되었으면, 하위 페이지 데이터는, 전송 버퍼(110)에서의 가용 공간의 양이 상대적으로 작고 가용 공간은 호스트(102)에 의해 전송된 추가의 페이지들을 저장하기 위해 필요하기 때문에 제어기(110)의 전송 버퍼(110)에서 덮어쓰기(overwrite)될 수 있다.
일정 기간 이후에, 제어기(106)는 (블록(304)에서) 호스트(102)로부터 제어기(106)의 전송 버퍼(110)에서 상위 페이지 데이터(204)를 수신한다. 상위 페이지 데이터(204)는, 제어기(106)가 NAND 메모리(116)로부터 하위 페이지 데이터를 판독하지 않으면 NAND 메모리(116)에 프로그래밍될 수 없다. 따라서, 제어기(106)는 (블록(306)에서) NAND 메모리(116)로부터 하위 페이지 데이터(202)를 판독하고, ECC 엔진(112)에서 하위 페이지 데이터(202)에서의 임의의 에러들을 검출하고 정정하기 위해 ECC 엔진(112)을 통해 하위 페이지 데이터(202)를 통과시킨 이후에 제어기(106)의 전송 버퍼(110)에 하위 페이지 데이터(202)를 저장한다. ECC 엔진(112)은 전송 버퍼(110)로 정정된 하위 페이지 데이터(202)의 전송을 담당한다. 이 시점에서, 전송 버퍼(110)는 하위 페이지 데이터(202)와 상위 페이지 데이터(204) 양자를 저장한다.
하위 페이지 데이터는, 하위 페이지 데이터가 판독 에러들을 갖지 않을 경우에 정확하다는 것에 유의해야 한다. 하위 페이지 데이터가 정확하지 않으면, 하위 페이지 데이터는 ECC 엔진(112)에서 정정된다. 이러한 프로세스 동안, 하위 페이지 데이터는, 임의의 에러들이 존재하는 경우에, 하위 페이지 데이터가 정정되는 ECC 엔진(112)을 먼저 통과한다는 것에 유의해야 한다. 그 후, 정정된 데이터는 ECC 엔진(112)으로부터 전송 버퍼(110)로 전송된다.
제어는, 제어기(106)가 정정된 하위 페이지 데이터를 NAND 메모리(116)에 기록하는 블록(310)으로 진행한다. 그 후, 제어기(106)는 (블록(312)에서) NAND 메모리(116)를 프로그래밍함으로써, 전송 버퍼(110)에서 수신된 상위 페이지 데이터를 NAND 메모리(116)에 기록한다.
따라서, 도 3은 전송 버퍼(110)가 상위 페이지 데이터를 NAND 메모리(116)에 프로그래밍하기 위해, 판독 에러들의 정정을 위한 NAND 메모리(116)로부터 판독된 하위 페이지 데이터를 저장하기 위해 사용되는 특정한 실시예들을 예시한다.
도 4는 특정한 실시예들에 따른, 도 3에 도시된 제1 예시적인 동작들(300)을 구현하기 위한 전송 버퍼(110)의 크기 요건들을 나타내는 블록도(400)를 예시한다.
도 4에서, 도 3의 블록(306)에 도시된 동작들의 실행 직후에 (즉, 제어기(106)가 하위 페이지 데이터(202)의 ECC 에러 정정을 통해 전송 버퍼(110)로 NAND 메모리(116)로부터 하위 페이지 데이터(202)를 판독한 이후에), 하위 페이지 데이터(202) 및 상위 페이지 데이터(204) 양자가 전송 버퍼(110)에 동시에 저장된다는 것을 알 수 있다. 그래서, 에러 정정이 오배치 에러들의 발생을 감소시키기 위해 수행되는 동안, 하위 페이지 데이터(202) 및 상위 페이지 데이터(204) 양자가 전송 버퍼(110)에 동시에 저장되어야 하기 때문에, 전송 버퍼(110)에서의 저장 공간의 더 큰 요건이 존재한다.
도 5는 특정한 실시예들에 따른, 데이터를 SSD(104)에 기록하는 제2 예시적인 동작들을 도시하는 흐름도(500)를 예시한다. 도 5에 도시된 동작들은 SSD(104)에서 구현되는 제어기(106)에 의해 수행될 수 있다. 도 5에 도시된 동작들은, 오배치 에러들이 제어기(106)에서 하위 페이지 데이터(202)의 에러 정정을 통해 감소될 때에도, 전송 버퍼(110)에서 필요한 저장 공간의 양을 감소시킨다.
제어기(106)가 호스트(102)로부터 하위 페이지 데이터(202)를 수신하고 NAND 메모리(116)를 프로그래밍함으로써 NAND 메모리(116) 내로 하위 페이지 데이터(202)를 기록하는 블록(502)에서 제어가 시작한다. NAND 메모리에 하위 페이지 데이터(202)를 기록한 이후에, 하위 페이지 데이터(202)는 전송 버퍼(110)에 다른 페이지에 의해 덮어쓰기될 수 있다.
제어는, 제어기(106)가 호스트(102)로부터 제어기(106)의 전송 버퍼(110)에서 상위 페이지 데이터(204)를 수신하는 블록(504)으로 진행한다. 제어기(110)는 (블록(506)에서) 전송 버퍼(204)로부터의 상위 페이지 데이터(204)를 하나 이상의 NAND 페이지 버퍼들(114)로 로딩한다. NAND 페이지 버퍼들(114)이 SRAM이고 플래시 메모리 셀들이 아니기 때문에, NAND 페이지 버퍼들(114)로의 상위 페이지 데이터(204)의 로딩은 (예를 들어, 10 마이크로초 정도로) 매우 빠르다는 점이 주목될 수 있다. 상위 페이지 데이터(204)를 로딩하는 데 필요한 NAND 버퍼들의 수는, 상위 페이지 데이터(204)의 크기 및 각각의 NAND 페이지 버퍼의 크기에 의존한다. 특정한 실시예들에서, 각각의 NAND 페이지 버퍼의 크기는 모든 프로그램/판독 데이터가 NAND 페이지 버퍼들을 통과하기 때문에 단일 페이지 데이터를 홀딩하도록 설계된다. 본 개시내용에 제시된 실시예들에 대해, 기존의 TLC NAND들의 NAND 페이지 버퍼들의 크기에서의 변화는 필요하지 않다는 것에 유의해야 한다.
제어기(106)는 (블록(508)에서) NAND 메모리(116)로부터 하위 페이지 데이터(202)를 판독하며, ECC 엔진(112)을 통한 하위 페이지 데이터(202)의 에러 검출 및 정정 이후에, 하위 페이지 데이터를 전송 버퍼(110)에 저장한다. 판독 동작들은, 데이터(예를 들어, 상위 페이지 데이터(204))가 NAND 페이지 버퍼들(114) 중 하나로 로딩될 때 NAND 메모리(116)로부터 수행될 수 있다는 것에 유의해야 한다. 이때에 상위 페이지 데이터(204)가 이미 하나 이상의 NAND 페이지 버퍼들(114)에 있기 때문에, 전송 버퍼(110)에서의 상위 페이지 데이터(204)는 전송 버퍼(110)에 저장을 위해 도달하는 하위 페이지 데이터(202) 또는 다른 페이지들에 의해 덮어쓰기될 수 있다.
NAND 메모리(116)로부터 판독되는 하위 페이지 데이터(202)가 에러들을 가질 수 있기 때문에, 제어기(106)의 ECC 엔진(112)은 하위 페이지 데이터(202)가 정확한지(즉, 판독 에러들이 없는지)를 결정하고, 정확하지 않으면, 하위 페이지 데이터(202)를 정정하고 하위 페이지 데이터(202)를 전송 버퍼(110)에 전송한다(즉, 하위 페이지 데이터가 ECC 엔진(112)에서 정정되고, 그 후, 정정된 하위 페이지 데이터는 전송 버퍼(110)에 전송된다).
제어는, 제어기(106)가 전송 버퍼(110)로부터의 하위 페이지 데이터(202)를 하나 이상의 NAND 페이지 버퍼들(114)로 로딩하는 블록(512)으로 진행한다. 블록(512)의 동작들의 실행 이후에, 상위 페이지 데이터(204) 및 하위 페이지 데이터(202) 양자는 하나 이상의 NAND 페이지 버퍼들(114)에 있다. 제어기(106)는 (블록(514)에서) NAND 페이지 버퍼들(114)로부터 NAND 메모리(116)로의 상위 페이지 데이터(204) 및 하위 페이지 데이터(202)의 기록을 프로그래밍한다.
따라서, 도 5는 전송 버퍼(110)의 저장 공간 요건들이 도 3에 도시된 실시예들에 비교하여 감소되는 특정한 실시예들을 예시한다. 도 3에 도시된 실시예들에서는, 전송 버퍼(110)가 하위 페이지 데이터(202) 및 상위 페이지 데이터(204) 양자를 동시에 저장할 필요가 있었지만, 도 5에 도시된 실시예들에서는, 하위 페이지 데이터(202) 및 상위 페이지 데이터(204) 양자가 전송 버퍼(110)에 동시에 저장될 필요가 없다.
도 6은 특정한 실시예들에 따른, 도 5에 도시된 제2 예시적인 동작들을 구현하기 위한 전송 버퍼(110)의 크기 요건들을 나타내는 블록도(600)를 예시한다. 도 6에서, 하위 페이지 데이터(202)의 에러 정정 및 전송 버퍼(110)에 하위 페이지 데이터(202)의 저장 직후에, 하위 페이지 데이터(202) 및 상위 페이지 데이터(204)의 위치는 블록(508)에 도시된 동작들의 실행의 종단에 도시되어 있다. 전송 버퍼(110)가 하위 페이지 데이터(202)를 저장하는 반면에, 상위 페이지 데이터(204)는 하나 이상의 NAND 페이지 버퍼들(114)에 저장된다는 것을 알 수 있다. 따라서, 상위 페이지 데이터(204)를 저장하기 위해 NAND 페이지 버퍼들(114)을 사용함으로써, 전송 버퍼(110)의 공간 요건들은, 하위 페이지 데이터(202) 및 상위 페이지 데이터(204) 양자가 전송 버퍼(110)에 저장되는 도 4에 도시된 실시예들에 비교하여 감소된다.
도 7은 특정한 실시예들에 따른, 데이터를 SSD(104)에 기록하는 제3 예시적인 동작들을 도시하는 흐름도(700)를 예시한다. 도 7에 도시된 동작들은 SSD(104)에서 구현되는 제어기(106)에 의해 수행될 수 있다.
제어는, 제어기(106)가 호스트(102)로부터 하위 페이지 데이터(202)를 수신하고 하위 페이지 데이터를 NAND 메모리(116)(또는 NOR 메모리와 같은 다른 적합한 비휘발성 메모리)에 기록하는 블록(702)에서 시작한다. 제어는, 호스트(102)로부터 수신된 상위 페이지 데이터(204)가 고체 상태 드라이브(104)의 제어기(106)의 전송 버퍼(106)에 저장되는 블록(704)으로 진행한다. 하위 페이지 데이터(202)는 (블록(706)에서) ECC 엔진(112)을 통한 정정 이후에 전송 버퍼(110)에 저장하기 위해 NAND 메모리(116)로부터 판독된다. 정정된 하위 페이지 데이터 및 상위 페이지 데이터는 (블록(712)에서) NAND 메모리(116)에 기록된다.
따라서, 도 7은 SSD(104)의 NAND 메모리(116)에서 오배치 에러들을 감소시키기 위해 제어기(106)의 전송 버퍼(110)를 사용하는 특정한 실시예들을 예시한다.
도 8은 특정한 실시예들에 따른, 데이터를 SSD에 기록하는 제4 예시적인 동작들을 도시하는 흐름도(800)를 예시한다. 도 8에 도시된 동작들은 SSD(104)에서 구현되는 제어기(106)에 의해 수행될 수 있다.
제어는, 제어기(106)가 호스트(102)로부터 하위 페이지 데이터(202)를 수신하고 하위 페이지 데이터(202)를 NAND 메모리(116)(또는 NOR 메모리와 같은 다른 적합한 비휘발성 메모리)에 기록하는 블록(802)에서 시작한다. 제어는, 제어기(106)가 호스트(102)로부터 수신된 상위 페이지 데이터(204)를 하나 이상의 NAND 페이지 버퍼들(114)에 로딩하는 블록(804)으로 진행한다. 제어기는 (블록(806)에서) ECC 엔진(112)을 통한 정정 이후에 전송 버퍼(110)에 저장하기 위해 NAND 메모리(116)로부터 하위 페이지 데이터(202)를 판독한다. 전송 버퍼(110)에 저장된 정정된 하위 페이지 데이터(202)는 (블록(810)에서) 하나 이상의 NAND 페이지 버퍼들(114)에 로딩된다. 제어는, 정정된 하위 페이지 데이터 및 상위 페이지 데이터가 하나 이상의 NAND 페이지 버퍼들(114)로부터 NAND 메모리(116)에 기록되는 블록(812)로 진행한다.
따라서, 도 8은 SSD(104)의 NAND 메모리(116)에서 오배치 에러들을 감소시면서 동시에, 하위 페이지 데이터(202)가 에러 정정을 위해 전송 버퍼(110)로 판독될 때 NAND 페이지 버퍼들(114)에 상위 페이지 데이터(204)를 저장함으로써 전송 버퍼(110)의 저장 요건들을 감소시키기 위해 제어기(106)의 전송 버퍼(110)를 사용하는 특정한 실시예들을 예시한다.
따라서, 도 1 내지 도 8은 호스트로부터 수신된 상위 페이지 데이터를 NAND 메모리에 기록하기 이전에, NAND 메모리로부터 판독된 하위 페이지 데이터의 에러 정정을 수행함으로써 고체 상태 드라이브에서의 오배치 에러들을 감소시키는 특정한 실시예들을 예시한다. 특정한 실시예들에서, 전송 버퍼에서의 저장 공간은 에러 정정이 고체 상태 드라이브의 제어기에서 하위 페이지 데이터에 대해 수행되고 있을 때 전송 버퍼로부터 하나 이상의 NAND 페이지 버퍼들로 상위 페이지 데이터를 이동시킴으로써 보존된다.
특정한 MLC NAND들에서, 정보의 2 비트들이 동일한 물리적 셀에 저장된다. 저장되는 비트들의 제1 세트가 하위 페이지 데이터로 지칭되며, 저장되는 비트들의 제2 세트가 상위 페이지 데이터로 지칭된다. 예를 들어, 특정한 실시예들에서, 4 킬로바이트(즉, 32 킬로비트)의 하위 페이지 데이터가 32K 물리적 셀들에 저장되며, 이어서, 상위 페이지 데이터가 동일한 32K 물리적 셀들에 저장된다.
TLC 프로그래밍은 특정한 타입의 MLC 프로그래밍의 슈퍼 세트(super set)이며, TLC 프로그래밍에서, 데이터의 3 비트들이 셀 마다 프로그래밍된다. 저장되는 제1 비트들이 하위 페이지 데이터로 지칭된다. 저장되는 제2 비트들이 상위 페이지 데이터로 지칭되며, 저장되는 제3 비트들이 추가 페이지 데이터로 지칭된다. 그 결과, TLC는 추가 페이지 데이터를 프로그래밍한 이후에 8개의 상태들을 가질 수 있다.
도 1 내지 도 8에 설명한 실시예들은 TLC NAND들뿐만 아니라 특정 MLC NAND들에서 구현될 수 있다. 도 1 내지 도 8이 상위 페이지를 프로그래밍하면서 하위 페이지 정정을 설명하지만, TLC NAND들에서는, 상위 또는 하위 페이지들이 추가 페이지의 프로그래밍 동안 정정될 수 있다.
따라서, 특정한 실시예들에서, 호스트로부터 수신된 페이지 데이터(예를 들어, 상위 페이지 데이터)는 고체 상태 드라이브의 제어기의 전송 버퍼에 저장된다. 다른 페이지 데이터(예를 들어, 하위 페이지 데이터)는 에러 정정된 페이지 데이터로서 전송 버퍼에 저장하기 위해 NAND 메모리로부터 판독된다. 에러 정정된 페이지 데이터(예를 들어, 에러 정정된 하위 페이지 데이터) 및 페이지 데이터(예를 들어, 상위 페이지 데이터)는 NAND 메모리에 기록된다.
추가의 실시예들에서, 제어기는 호스트로부터 수신된 페이지 데이터(예를 들어, 상위 페이지 데이터)를 하나 이상의 NAND 페이지 버퍼들에 로딩한다. 제어기는 에러 정정된 페이지 데이터로서 전송 버퍼에 저장하기 위해 NAND 메모리로부터 다른 페이지 데이터(예를 들어, 하위 페이지 데이터)를 판독한다. 전송 버퍼에 저장된 에러 정정된 페이지 데이터는 하나 이상의 NAND 페이지 버퍼들에 로딩된다.
특정한 실시예들에서, 호스트로부터 수신된 페이지 데이터(예를 들어, 추가 페이지 데이터)는 고체 상태 드라이브의 제어기의 전송 버퍼에 저장된다. 다른 페이지 데이터(예를 들어, 하위 또는 상위 페이지 데이터)는 에러 정정된 페이지 데이터로서 전송 버퍼에 저장하기 위해 NAND 메모리로부터 판독된다. 에러 정정된 페이지 데이터 및 페이지 데이터는 NAND 메모리에 기록된다.
추가의 실시예들에서, 제어기는 호스트로부터 수신된 페이지 데이터(예를 들어, 추가 페이지 데이터)를 하나 이상의 NAND 페이지 버퍼들에 로딩한다. 제어기는 에러 정정된 페이지 데이터로서 전송 버퍼에 저장하기 위해 NAND 메모리로부터 다른 페이지 데이터(예를 들어, 하위 또는 상위 페이지 데이터)를 판독한다. 전송 버퍼에 저장된 에러 정정된 페이지 데이터는 하나 이상의 NAND 페이지 버퍼들에 로딩된다.
설명한 동작들은 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 임의의 조합을 생성하기 위해 표준 프로그래밍 및/또는 엔지니어링 기법들을 사용하여 방법, 장치 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다.
설명한 동작들은 "컴퓨터 판독가능 저장 매체"에 유지된 코드로서 구현될 수 있으며, 여기서, 프로세서가 컴퓨터 판독가능 저장 매체로부터 코드를 판독하고 실행할 수 있다. 컴퓨터 판독가능 저장 매체는 전자 회로, 저장 물질들, 무기 물질들, 유기 물질들, 생물학적 물질들, 케이싱, 하우징, 코팅, 및 하드웨어 중 적어도 하나를 포함한다. 컴퓨터 판독가능 저장 매체는 자기 저장 매체(예를 들어, 하드 디스크 드라이브들, 플로피 디스크들, 테이프 등), 광학 스토리지(예를 들어, CD-ROM들, DVD들, 광 디스크들 등), 휘발성 및 비휘발성 메모리 디바이스들(EEPROM들, ROM들, PROM들, RAM들, DRAM들, SRAM들, 플래시 메모리, 펌웨어, 프로그램가능 로직 등), 고체 상태 디바이스(SSD) 등을 포함할 수 있지만 이에 제한되지 않는다. 설명한 동작들을 구현하는 코드는 하드웨어 디바이스(예를 들어, 집적 회로 칩, 프로그램가능한 게이트 어레이(PGA), 응용 주문형 집적 회로(ASIC) 등)에서 구현된 하드웨어 로직에서 더 구현될 수 있다. 또한, 설명한 동작들을 구현하는 코드는 "송신 신호들"에서 구현될 수 있고, 여기서, 송신 신호들은 공간을 통해 또는 광섬유, 구리 와이어 등과 같은 송신 매체를 통해 전파할 수 있다. 코드 또는 로직이 인코딩되는 송신 신호들은 무선 신호, 위성 송신, 무선파들, 적외선 신호들, 블루투스 등을 더 포함할 수 있다. 컴퓨터 판독가능 저장 매체상에 수록된 프로그램 코드는 송신국 또는 컴퓨터로부터 수신국 또는 컴퓨터로 송신 신호들로서 송신될 수 있다. 컴퓨터 판독가능한 저장 매체는 송신 신호들만으로 구성되지 않는다. 본 기술분야의 통상의 기술자는, 다수의 수정들이 이러한 구성에 대해 이루어질 수 있으며, 제조품이 본 기술분야에 공지된 적합한 정보 베어링 매체를 포함할 수 있다는 것을 인식할 것이다.
특정할 실시예들의 양태들에 대한 동작들을 수행하는 컴퓨터 프로그램 코드는 하나 이상의 프로그래밍 언어들의 임의의 조합으로 기록될 수 있다. 흐름도 및 블록도들의 블록들은 컴퓨터 프로그램 명령어들에 의해 구현될 수 있다.
도 9는 특정한 실시예들에 따른, 제어기(106), 호스트(102), 또는 SSD(104)에 대응하는 시스템(900)의 블록도를 예시한다. 시스템(900)은 특정한 실시예들에서 적어도 프로세서(904)를 포함할 수 있는 회로(902)를 포함할 수 있다. 시스템(900)은 메모리(906)(예를 들어, 휘발성 메모리 디바이스) 및 스토리지(908)를 또한 포함할 수 있다. 스토리지(908)는 비휘발성 메모리 디바이스(예를 들어, EEPROM, ROM, PROM, RAM, 플래시, 펌웨어, 프로그램가능한 로직 등), 자기 디스크 드라이브, 광 디스크 드라이브, 테이프 드라이브 등을 포함할 수 있다. 스토리지(908)는 내부 저장 디바이스, 부착 저장 디바이스 및/또는 네트워크 액세스가능 저장 디바이스를 포함할 수 있다. 시스템(900)은 메모리(906)에 로딩될 수 있고 프로세서(904) 또는 회로(902)에 의해 실행될 수 있는 코드(912)를 포함하는 프로그램 로직(910)을 포함할 수 있다. 특정한 실시예들에서, 코드(912)를 포함하는 프로그램 로직(910)은 스토리지(908)에 저장될 수 있다. 특정한 다른 실시예들에서, 프로그램 로직(910)은 회로(902)에서 구현될 수 있다. 따라서, 도 9가 다른 엘리먼트들과 별도로 프로그램 로직(910)을 도시하지만, 프로그램 로직(910)은 메모리(906) 및/또는 회로(902)에서 구현될 수 있다.
특정한 실시예들은 컴퓨터-판독가능 코드를 컴퓨팅 시스템에 통합하는 사람 또는 자동화된 프로세싱에 의해 컴퓨팅 명령어를 배치하는 방법에 관한 것이며, 여기서, 컴퓨팅 시스템과 조합된 코드는 설명한 실시예들의 동작들을 수행하도록 인에이블된다.
용어들 "일 실시예", "실시예", "실시예들","상기 실시예", "상기 실시예들", "하나 이상의 실시예들", "일부 실시예들", 및 "하나의 실시예"는 다르게 명시적으로 특정되지 않으면 하나 이상의 (그러나 모두가 아닌) 실시예들을 의미한다.
용어들 "포함하는", "구비하는", "갖는" 및 이들의 변형들은 다르게 명시적으로 특정되지 않으면, "포함하는"을 의미하지만, 이에 제한되지 않는다.
아이템들의 열거된 목록은, 다르게 명시적으로 특정되지 않으면, 아이템들 중 일부 또는 모두가 상호 배타적이라는 것을 의미하지 않는다.
용어들 관사들("a", "an" 및 "the")은 다르게 명시적으로 특정되지 않으면 "하나 이상"을 의미한다.
서로 통신하는 디바이스들은, 다르게 명시적으로 특정되지 않으면, 서로 연속적으로 통신하고 있을 필요가 없다. 또한, 서로 통신하는 디바이스들은 하나 이상의 매개수단들을 통해 직접 또는 간접 통신할 수 있다.
서로 통신하는 여러 컴포넌트들을 갖는 실시예의 설명이 모든 이러한 컴포넌트들이 요구된다는 것을 의미하지 않는다. 반대로, 각종의 임의의 컴포넌트들이 매우 다양한 가능한 실시예들을 예시하기 위해 설명된다.
또한, 프로세스 단계들, 방법 단계들, 알고리즘 단계들 등이 순차적인 순서로 설명될 수 있지만, 이러한 프로세스들, 방법들 및 알고리즘들은 교호 순서들로 작동하도록 구성될 수 있다. 다시 말해, 설명될 수 있는 단계들의 임의의 시퀀스 또는 순서는 단계들이 그 순서로 수행되는 요건을 반드시 나타내지 않는다. 본원에 설명하는 프로세스들의 단계들은 실용적인 임의의 순서로 수행될 수 있다. 또한, 일부 단계들은 동시에 수행될 수 있다.
단일 디바이스 또는 물품이 본원에 설명될 때, 하나보다 많은 디바이스/물품(이들이 협력하든 안 하든)이 단일 디바이스/물품 대신에 사용될 수 있다는 것이 쉽게 명백할 것이다. 유사하게, 하나보다 많은 디바이스 또는 물품이 본원에 설명되는 경우에(이들이 협력하든 안 하든), 단일 디바이스/물품이 하나보다 많은 디바이스 또는 물품 대신에 사용될 수 있거나, 상이한 수의 디바이스들/물품들이 도시된 수의 디바이스들 또는 프로그램들 대신에 사용될 수 있다는 것이 쉽게 명백할 것이다. 디바이스의 기능 및/또는 특징들은 이러한 기능/특징들을 갖는 것으로서 명시적으로 설명되지 않은 하나 이상의 다른 디바이스들에 의해 대안으로 구현될 수 있다. 따라서, 다른 실시예들은 디바이스 자체를 포함할 필요가 없다.
도면들에 예시되어 있을 수 있는 적어도 특정한 동작들은 특정한 순서로 발생하는 특정한 이벤트들을 도시한다. 대안의 실시예들에서, 특정한 동작들은 상이한 순서로 수행될 수 있고, 수정될 수 있거나 제거될 수 있다. 더욱이, 단계들이 상술한 로직에 추가될 수 있으며 설명한 실시예들에 여전히 따른다. 또한, 본원에 설명한 동작들은 순차적으로 발생할 수 있거나 특정한 동작들이 병렬로 프로세싱될 수 있다. 또한, 동작들은 단일 프로세싱 유닛에 의해 또는 분산 프로세싱 유닛들에 의해 수행될 수 있다.
다양한 실시예들의 상술한 설명은 예시 및 설명을 위해 제시되었다. 이것은 포괄적이거나 개시된 정밀한 형태들로 제한되는 것으로 의도되지 않는다. 다수의 수정들 및 변형들이 상기 교시의 관점에서 가능하다.
예들
아래의 예들은 다른 실시예들에 관한 것이다.
예 1은, 호스트로부터 수신된 페이지 데이터가 고체 상태 드라이브의 제어기의 전송 버퍼에 저장되는 방법이다. 다른 페이지 데이터는 에러 정정된 페이지 데이터로서 전송 버퍼에 저장하기 위해 비휘발성 메모리로부터 판독된다. 에러 정정된 페이지 데이터 및 페이지 데이터는 비휘발성 메모리에 기록된다.
예 2에서, 예 1의 주제는 비휘발성 메모리가 NAND 메모리이고, 페이지 데이터는 상위 페이지 데이터이고, 다른 페이지 데이터는 하위 페이지 데이터이며, 전송 버퍼는 하위 페이지 데이터와 상위 페이지 데이터 양자를 동시에 수용하는 데 적절한 저장 용량을 갖는다.
예 3에서, 제2항의 주제는 제어기가 호스트로부터 하위 페이지 데이터를 수신하는 것에 후속하여 호스트로부터 상위 페이지 데이터를 수신한다는 것을 포함할 수 있다. 수신된 하위 페이지 데이터는 호스트로부터 상위 페이지 데이터를 수신하기 이전에 NAND 메모리에 기록되며, NAND 메모리에 기록된 하위 페이지 데이터의 판독은 상위 페이지 데이터를 NAND 메모리에 기록하기 위해 필요하다.
예 4에서, 제2항의 주제는 호스트가 고체 상태 드라이브의 제어기에 하위 페이지 데이터를 먼저 송신하고 나서 상위 페이지 데이터를 송신함으로써 고체 상태 드라이브에 데이터를 기록하고, 고체 상태 드라이브가 하위 페이지 데이터를 적어도 정정하는 에러 검사 및 정정(ECC) 엔진 및 전송 버퍼를 포함하는 제어기; 및 NAND 메모리를 포함하는 트리플 레벨 셀(TLC) NAND로 구성된다는 것을 포함할 수 있다.
예 5에서, 제2항의 주제는 제어기에서 하위 페이지 데이터의 에러 정정이 고체 상태 드라이브에서 오배치 에러들을 감소시키기 위해 제어기에서 실행하는 에러 검사 및 정정(ECC) 엔진을 통해 수행되고, 하위 페이지 데이터의 판독 에러들에 의해 초래되는 오배치 에러들은 제어기에 의한 하위 페이지 데이터의 판독 및 에러 정정과, 그 후에, NAND 메모리에 상위 페이지 데이터가 후속하는 에러 정정된 하위 페이지 데이터의 기록에 의해 감소된다는 것을 포함할 수 있다.
예 6에서, 제1항의 주제는 페이지 데이터는 추가 페이지 데이터이고, 다른 페이지 데이터는 하위 페이지 데이터 또는 상위 페이지 데이터라는 것을 포함할 수 있다.
예 7은, 제어기가 호스트로부터 수신된 페이지 데이터를 고체 상태 드라이브의 하나 이상의 NAND 페이지 버퍼들에 로딩하는 다른 방법이다. 제어기는 에러 정정된 페이지 데이터로서 전송 버퍼에 저장하기 위해 NAND 메모리로부터 다른 페이지 데이터를 판독된다. 전송 버퍼에 저장된 에러 정정된 페이지 데이터는 하나 이상의 NAND 페이지 버퍼들에 로딩된다.
예 8에서, 제7항의 주제는 페이지 데이터는 상위 페이지 데이터이고, 다른 페이지 데이터는 하위 페이지 데이터라는 것을 포함할 수 있다. 에러 정정된 하위 페이지 데이터 및 상위 페이지 데이터는 하나 이상의 NAND 페이지 버퍼들로부터 NAND 메모리에 기록된다.
예 9에서, 제8항의 주제는 전송 버퍼의 저장 용량 요건은 전송 버퍼가 하위 페이지 데이터와 상위 페이지 데이터 양자를 동시에 수용할 필요가 없기 때문에 감소된다는 것을 포함할 수 있다. 제어기는 호스트로부터 하위 페이지 데이터를 수신하는 것에 후속하여 호스트로부터 상위 페이지 데이터를 수신하며, 수신된 하위 페이지 데이터는 호스트로부터 상위 페이지 데이터를 수신하기 이전에 NAND 메모리에 기록된다. NAND 메모리에 기록된 하위 페이지 데이터의 판독은 상위 페이지 데이터를 NAND 메모리에 기록하기 위해 필요하다.
예 10에서, 제8항의 주제는 호스트가 고체 상태 드라이브의 제어기에 하위 페이지 데이터를 먼저 송신하고 나서 상위 페이지 데이터를 송신함으로써 고체 상태 드라이브에 데이터를 기록한다는 것을 포함할 수 있다. 고체 상태 드라이브는 하위 페이지 데이터를 적어도 정정하는 에러 검사 및 정정(ECC) 엔진 및 전송 버퍼를 포함하는 제어기, 및 NAND 메모리 및 하나 이상의 NAND 페이지 버퍼들을 포함하는 트리플 레벨 셀(TLC) NAND로 구성된다.
예 11에서, 제8항의 주제는 제어기에서 하위 페이지 데이터의 에러 정정이 제어기에서 실행하는 에러 검사 및 정정(ECC) 엔진을 통해 수행되고, 하위 페이지 데이터의 판독 에러들에 의해 초래되는 오배치 에러들은 제어기에 의해 하위 페이지 데이터를 판독하고 에러 정정하며, 후속하여 NAND 메모리에 에러 정정된 하위 페이지 데이터 및 상위 페이지 데이터를 기록함으로써 감소된다는 것을 포함할 수 있다.
예 12에서, 제7항의 주제는 페이지 데이터는 추가 페이지 데이터이고, 다른 페이지 데이터는 하위 페이지 데이터 또는 상위 페이지 데이터라는 것을 포함할 수 있다.
예 13은 비휘발성 메모리, 및 전송 버퍼 및 에러 검사 및 정정(ECC) 엔진을 포함하는 제어기를 포함하는 장치이고, 제어기는 비휘발성 메모리를 제어한다. 제어기는 호스트로부터 수신된 페이지 데이터를 전송 버퍼에 저장하고, 에러 정정된 페이지 데이터로서 전송 버퍼에 저장하기 위해 비휘발성 메모리로부터 다른 페이지 데이터를 판독하며, 에러 정정된 페이지 데이터 및 페이지 데이터를 비휘발성 메모리에 기록하도록 동작가능하다.
예 14에서, 예 13의 주제는 비휘발성 메모리가 NAND 메모리이고, 페이지 데이터는 상위 페이지 데이터이고, 다른 페이지 데이터는 하위 페이지 데이터이며, 전송 버퍼는 하위 페이지 데이터와 상위 페이지 데이터 양자를 동시에 수용하는 데 적절한 저장 용량을 갖는다는 것을 포함할 수 있다.
예 15에서, 예 14의 주제는 제어기가 호스트로부터 하위 페이지 데이터를 수신하는 것에 후속하여 호스트로부터 상위 페이지 데이터를 수신한다는 것을 포함할 수 있다. 수신된 하위 페이지 데이터는 호스트로부터 상위 페이지 데이터를 수신하기 이전에 NAND 메모리에 기록된다. NAND 메모리에 기록된 하위 페이지 데이터의 판독은 상위 페이지 데이터를 NAND 메모리에 기록하기 위해 필요하다.
예 16에서, 제14항의 주제는 호스트가 장치의 제어기에 하위 페이지 데이터를 먼저 송신하고 나서 상위 페이지 데이터를 송신함으로써 장치에 데이터를 기록하고, NAND 메모리는 트리플 레벨 셀(TLC) NAND에 대응한다는 것을 포함할 수 있다.
예 17에서, 예 14의 주제는 제어기에서 하위 페이지 데이터의 에러 정정이 장치에서의 오배치 에러들을 감소시키기 위해 제어기에서 실행하는 에러 검사 및 정정(ECC) 엔진을 통해 수행되고, 하위 페이지 데이터의 판독 에러들에 의해 초래되는 오배치 에러들은 제어기에 의해 하위 페이지 데이터를 판독하고 에러 정정하며, 후속하여 NAND 메모리에 상위 페이지 데이터가 후속하는 에러 정정된 하위 페이지 데이터를 기록함으로써 감소된다는 것을 포함할 수 있다.
예 18에서, 예 13의 주제는 페이지 데이터는 추가 페이지 데이터이고, 다른 페이지 데이터는 하위 페이지 데이터 또는 상위 페이지 데이터라는 것을 포함할 수 있다.
예 19는 하나 이상의 NAND 페이지 버퍼들 및 NAND 메모리를 포함하는 NAND 콤플렉스, 및 전송 버퍼 및 에러 검사 및 정정(ECC) 엔진을 포함하는 제어기를 포함하는 장치이고, 제어기는 NAND 콤플렉스를 제어한다. 제어기는 호스트로부터 수신된 페이지 데이터를 하나 이상의 NAND 페이지 버퍼들에 로딩하고, 에러 정정된 페이지 데이터로서 전송 버퍼에 저장하기 위해 NAND 메모리로부터 다른 페이지 데이터를 판독하며, 에러 정정된 페이지 데이터를 하나 이상의 NAND 페이지 버퍼들에 로딩하도록 동작가능하다.
예 20에서, 예 19의 주제는 페이지 데이터가 상위 페이지 데이터이고, 다른 페이지 데이터가 하위 페이지 데이터이며, 제어기가 에러 정정된 하위 페이지 데이터 및 상위 페이지 데이터를 하나 이상의 NAND 페이지 버퍼들로부터 NAND 메모리에 기록하도록 더 동작가능하다는 것을 포함할 수 있다.
예 21에서, 제20항의 주제는 전송 버퍼의 저장 용량 요건은 전송 버퍼가 하위 페이지 데이터와 상위 페이지 데이터 양자를 동시에 수용할 필요가 없기 때문에 감소된다는 것을 포함할 수 있다. 제어기는 호스트로부터 하위 페이지 데이터를 수신하는 것에 후속하여 호스트로부터 상위 페이지 데이터를 수신하며, 수신된 하위 페이지 데이터는 호스트로부터 상위 페이지 데이터를 수신하기 이전에 NAND 메모리에 기록된다. NAND 메모리에 기록된 하위 페이지 데이터의 판독은 상위 페이지 데이터를 NAND 메모리에 기록하기 위해 필요하다.
예 22에서, 제20항의 주제는 호스트가 장치의 제어기에 하위 페이지 데이터를 먼저 송신하고 나서 상위 페이지 데이터를 송신함으로써 장치에 데이터를 기록하고, NAND 콤플렉스 트리플 레벨 셀(TLC) NAND이라는 것을 포함할 수 있다.
예 23에서, 제20항의 주제는 제어기에서 하위 페이지 데이터의 에러 정정이 제어기에서 실행하는 에러 검사 및 정정(ECC) 엔진을 통해 수행되고, 하위 페이지 데이터의 판독 에러들에 의해 초래되는 오배치 에러들은 제어기에 의해 하위 페이지 데이터를 판독하고 에러 정정하며, 후속하여 NAND 메모리에 에러 정정된 하위 페이지 데이터 및 상위 페이지 데이터를 기록함으로써 감소된다는 것을 포함할 수 있다.
예 24에서, 제19항의 주제는 페이지 데이터는 추가 페이지 데이터이고, 다른 페이지 데이터는 하위 페이지 데이터 또는 상위 페이지 데이터라는 것을 포함할 수 있다.
예 25에서, 제19항의 주제는 장치가 복수의 NAND 페이지 버퍼들, 및 NAND 메모리를 포함하는 복수의 NAND 메모리 엘리먼트들로 구성된 NAND 어레이를 포함하는 NAND 디바이스를 더 포함하고, NAND 디바이스는 인커밍(incoming) 페이지 데이터를 복수의 NAND 페이지 버퍼들 중의 NAND 페이지 버퍼에 저장하고, 그 다음에 NAND 어레이에 대한 판독 동작들을 허용하고, 그 다음에 NAND 페이지 버퍼에 저장된 인커밍 페이지 데이터를 손상시키지 않고 제어기로의 판독 데이터의 추가 전송을 허용하도록 구성된다는 것을 포함할 수 있다.

Claims (29)

  1. 방법으로서,
    하위(lower) 페이지 데이터를 고체 상태 드라이브의 제어기의 전송 버퍼로부터 상기 고체 상태 드라이브의 비휘발성 메모리에 기록하는 단계;
    상기 하위 페이지 데이터를 상기 비휘발성 메모리로 기록하는 단계에 후속하여, 호스트로부터 수신된 상위(upper) 페이지 데이터를 상기 전송 버퍼에 저장하는 단계;
    상기 상위 페이지 데이터를 상기 전송 버퍼에 저장하는 단계에 후속하여, 에러 정정된 하위 페이지 데이터로서 상기 전송 버퍼에 저장하기 위해 상기 비휘발성 메모리로부터 상기 하위 페이지 데이터를 판독하는 단계 - 상기 전송 버퍼에 이미 저장된 상기 상위 페이지 데이터에 더하여 상기 에러 정정된 하위 페이지 데이터가 상기 전송 버퍼에 저장됨 -;
    상기 에러 정정된 하위 페이지 데이터 및 상기 상위 페이지 데이터 양자를 저장한 상기 전송 버퍼로부터 상기 에러 정정된 하위 페이지 데이터를 상기 비휘발성 메모리에 기록하는 단계;
    상기 에러 정정된 하위 페이지 데이터 및 상기 상위 페이지 데이터 양자를 저장한 상기 전송 버퍼로부터 상기 에러 정정된 하위 페이지 데이터를 상기 비휘발성 메모리에 기록하는 단계에 후속하여, 상기 전송 버퍼에 저장된 상위 페이지 데이터를 상기 비휘발성 메모리에 기록하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 비휘발성 메모리는 NAND 메모리이고, 상기 전송 버퍼는 상기 하위 페이지 데이터와 상기 상위 페이지 데이터 양자를 동시에 수용(accommodate)하는 데 적절한 저장 용량을 갖는, 방법.
  3. 제2항에 있어서,
    상기 제어기는 상기 호스트로부터 상기 하위 페이지 데이터를 수신하는 단계에 후속하여 상기 호스트로부터 상기 상위 페이지 데이터를 수신하고;
    상기 수신된 하위 페이지 데이터는 상기 호스트로부터 상기 상위 페이지 데이터를 수신하기 이전에 상기 NAND 메모리에 기록되며;
    상기 상위 페이지 데이터를 상기 NAND 메모리에 기록하기 위해 상기 NAND 메모리에 기록된 상기 하위 페이지 데이터의 판독이 필요한, 방법.
  4. 제2항에 있어서, 상기 호스트가 상기 고체 상태 드라이브의 상기 제어기에 상기 하위 페이지 데이터를 먼저 송신하고 나서 상기 상위 페이지 데이터를 송신함으로써 상기 고체 상태 드라이브에 상기 하위 페이지 데이터 및 상기 상위 페이지 데이터를 포함하는 데이터를 기록하고, 상기 고체 상태 드라이브는:
    상기 하위 페이지 데이터를 적어도 정정하는 에러 검사 및 정정(ECC) 엔진 및 상기 전송 버퍼를 포함하는 상기 제어기; 및
    상기 NAND 메모리를 포함하는 트리플 레벨 셀(TLC) NAND
    를 포함하는, 방법.
  5. 제2항에 있어서, 상기 제어기에서 상기 하위 페이지 데이터의 에러 정정은 상기 고체 상태 드라이브 내의 오배치 에러들(misplacement errors)을 감소시키기 위해 상기 제어기에서 실행되는 에러 검사 및 정정(ECC) 엔진을 통해 수행되고, 상기 하위 페이지 데이터의 판독 에러들에 의해 초래되는 오배치 에러들은, 상기 제어기에 의해 상기 하위 페이지 데이터를 판독하고 에러 정정하고, 후속하여 상기 에러 정정된 하위 페이지 데이터, 그 다음에 상위 페이지 데이터를 상기 NAND 메모리에 기록함으로써 감소되는, 방법.
  6. 삭제
  7. 방법으로서,
    제어기에 의해, 호스트로부터 하위(lower) 페이지 데이터를 수신하고, 상기 하위 페이지 데이터를 고체 상태 드라이브의 NAND 메모리에 기록하는 단계;
    상기 하위 페이지 데이터를 상기 NAND 메모리에 기록하는 단계에 후속하여, 상기 제어기에 의해, 상기 제어기의 전송 버퍼로부터 상기 고체 상태 드라이브의 하나 이상의 NAND 페이지 버퍼에 상기 호스트로부터 수신된 상위(upper) 페이지 데이터를 로딩하는 단계;
    상기 하나 이상의 NAND 페이지 버퍼에 상기 상위 페이지 데이터를 로딩하는 단계에 후속하여, 에러 정정된 하위 페이지 데이터로서 제어기의 전송 버퍼에 저장하기 위해 상기 NAND 메모리로부터의 상기 하위 페이지 데이터를 판독하는 단계 - 상기 에러 정정된 하위 페이지 데이터를 저장할 때의 전송 버퍼는 상기 상위 페이지 데이터를 더 이상 가지지 않음 -;
    상기 전송 버퍼에 에러 정정된 하위 페이지 데이터를 저장하는 단계에 후속하여, 상기 에러 정정된 하위 페이지 데이터를 상기 하나 이상의 NAND 페이지 버퍼에 로딩하는 단계; 및
    상기 에러 정정된 하위 페이지 데이터를 상기 하나 이상의 NAND 페이지 버퍼에 로딩하는 단계에 후속하여, 상기 상위 페이지 데이터 및 상기 에러 정정된 하위 페이지 데이터의 기록을 상기 하나 이상의 NAND 페이지 버퍼에서 상기 NAND 메모리로 프로그래밍 하는 단계
    를 포함하는, 방법.
  8. 삭제
  9. 제7항에 있어서, 상기 전송 버퍼의 저장 용량 요건들은 상기 전송 버퍼가 상기 하위 페이지 데이터와 상기 상위 페이지 데이터 양자를 동시에 수용할 필요가 없기 때문에 감소되고,
    상기 제어기는 상기 호스트로부터 상기 하위 페이지 데이터를 수신하는 단계에 후속하여 상기 호스트로부터 상기 상위 페이지 데이터를 수신하고;
    상기 수신된 하위 페이지 데이터는 상기 호스트로부터 상기 상위 페이지 데이터를 수신하기 이전에 상기 NAND 메모리에 기록되며;
    상기 상위 페이지 데이터를 상기 NAND 메모리에 기록하기 위해 상기 NAND 메모리에 기록된 상기 하위 페이지 데이터의 판독이 필요한, 방법.
  10. 제7항에 있어서, 상기 호스트가 상기 고체 상태 드라이브의 상기 제어기에 상기 하위 페이지 데이터를 먼저 송신하고 나서 상기 상위 페이지 데이터를 송신함으로써 상기 고체 상태 드라이브에 상기 하위 페이지 데이터 및 상기 상위 페이지 데이터를 포함하는 데이터를 기록하고, 상기 고체 상태 드라이브는:
    상기 전송 버퍼 및 상기 하위 페이지 데이터를 적어도 정정하는 에러 검사 및 정정(ECC) 엔진을 포함하는 상기 제어기; 및
    상기 NAND 메모리 및 상기 하나 이상의 NAND 페이지 버퍼들을 포함하는 트리플 레벨 셀(TLC) NAND를 포함하는, 방법.
  11. 제7항에 있어서, 상기 제어기에서 상기 하위 페이지 데이터의 에러 정정은 상기 제어기에서 실행되는 에러 검사 및 정정(ECC) 엔진을 통해 수행되고, 상기 하위 페이지 데이터의 판독 에러들에 의해 초래되는 오배치 에러들은, 상기 제어기에 의해 상기 하위 페이지 데이터를 판독하고 에러 정정하고, 후속하여 상기 에러 정정된 하위 페이지 데이터 및 상기 상위 페이지 데이터를 상기 NAND 메모리에 기록함으로써 감소되는, 방법.
  12. 삭제
  13. 장치로서,
    비휘발성 메모리; 및
    전송 버퍼 및 에러 검사 및 정정(ECC) 엔진을 포함하는 제어기
    를 포함하고, 상기 제어기는 상기 비휘발성 메모리를 제어하고, 상기 제어기는:
    하위 페이지 데이터를 상기 전송 버퍼에서 상기 비휘발성 메모리에 기록하고;
    상기 하위 페이지 데이터를 상기 비휘발성 메모리로 기록하는 것에 후속하여, 호스트로부터 수신한 상위 페이지 데이터를 상기 전송 버퍼에 저장하고,
    상기 상위 페이지 데이터를 상기 전송 버퍼에 저장한 것에 후속하여, 에러 정정된 하위 페이지 데이터로서 상기 전송 버퍼에 저장하기 위해 상기 비휘발성 메모리로부터 하위 페이지 데이터를 판독하며 - 상기 전송 버퍼에 이미 저장된 상기 상위 페이지 데이터에 더하여 상기 에러 정정된 하위 페이지 데이터가 상기 전송 버퍼에 저장됨 -;
    상기 에러 정정된 하위 페이지 데이터 및 상기 상위 페이지 데이터 양자를 저장한 상기 전송 버퍼로부터 상기 에러 정정된 하위 페이지 데이터를 상기 비휘발성 메모리에 기록하고;
    상기 에러 정정된 하위 페이지 데이터 및 상기 상위 페이지 데이터 양자를 저장한 상기 전송 버퍼로부터 상기 에러 정정된 하위 페이지 데이터를 상기 비휘발성 메모리에 기록하는 것에 후속하여, 상기 전송 버퍼에 저장된 상위 페이지 데이터를 상기 비휘발성 메모리에 기록하도록 동작 가능한,
    장치.
  14. 제13항에 있어서, 상기 비휘발성 메모리는 NAND 메모리이고, 상기 전송 버퍼는 상기 하위 페이지 데이터와 상기 상위 페이지 데이터 양자를 동시에 수용하는 데 적절한 저장 용량을 갖는, 장치.
  15. 제14항에 있어서,
    상기 제어기는 상기 호스트로부터 상기 하위 페이지 데이터를 수신하는 것에 후속하여 상기 호스트로부터 상기 상위 페이지 데이터를 수신하고;
    상기 수신된 하위 페이지 데이터는 상기 호스트로부터 상기 상위 페이지 데이터를 수신하기 이전에 상기 NAND 메모리에 기록되며;
    상기 상위 페이지 데이터를 상기 NAND 메모리에 기록하기 위해 상기 NAND 메모리에 기록된 상기 하위 페이지 데이터의 판독이 필요한, 장치.
  16. 제14항에 있어서, 상기 호스트는 상기 장치의 상기 제어기에 상기 하위 페이지 데이터를 먼저 송신하고 나서 상기 상위 페이지 데이터를 송신함으로써 상기 장치에 상기 하위 페이지 데이터 및 상기 상위 페이지 데이터를 포함하는 데이터를 기록하고, 상기 비휘발성 메모리는 트리플 레벨 셀(TLC) NAND에 대응하는, 장치.
  17. 제14항에 있어서, 상기 제어기에서 상기 하위 페이지 데이터의 에러 정정은 상기 장치 내의 오배치 에러들을 감소시키기 위해 상기 ECC 엔진을 통해 수행되고, 상기 하위 페이지 데이터의 판독 에러들에 의해 초래되는 오배치 에러들은, 상기 제어기에 의해 상기 하위 페이지 데이터를 판독 및 에러 정정하고, 후속하여 상기 에러 정정된 하위 페이지 데이터, 그 다음에 상위 페이지 데이터를 상기 NAND 메모리에 기록함으로써 감소되는, 장치.
  18. 삭제
  19. 장치로서,
    하나 이상의 NAND 페이지 버퍼들 및 NAND 메모리를 포함하는 NAND 콤플렉스(NAND complex); 및
    전송 버퍼 및 에러 검사 및 정정(ECC) 엔진을 포함하는 제어기를 포함하고, 상기 제어기는 상기 NAND 콤플렉스를 제어하고, 상기 제어기는:
    호스트로부터 하위(lower) 페이지 데이터를 수신하고 상기 하위 페이지 데이터를 상기 NAND 메모리에 기록하고;
    상기 하위 페이지 데이터를 상기 NAND 메모리에 기록하는 것에 후속하여, 상기 제어기의 전송 버퍼로부터 상기 NAND 콤플렉스의 하나 이상의 NAND 페이지 버퍼들에 상기 호스트로부터 수신된 상위(upper) 페이지 데이터를 로딩하고;
    상기 상위 페이지 데이터를 상기 하나 이상의 NAND 페이지 버퍼들에 로딩하는 것에 후속하여, 에러 정정된 하위 페이지 데이터로서 제어기의 전송 버퍼에 저장하기 위해 상기 NAND 메모리로부터의 상기 하위 페이지 데이터를 판독하며 - 상기 에러 정정된 하위 페이지 데이터를 저장할 때의 전송 버퍼는 상기 상위 페이지 데이터를 더 이상 가지지 않음 -;
    상기 전송 버퍼에 상기 에러 정정된 하위 페이지 데이터를 저장하는 것에 후속하여, 상기 에러 정정된 하위 페이지 데이터를 상기 하나 이상의 NAND 페이지 버퍼에 로딩하고;
    상기 에러 정정된 하위 페이지 데이터를 상기 하나 이상의 NAND 페이지 버퍼에 로딩하는 것에 후속하여, 상기 상위 페이지 데이터 및 상기 에러 정정된 하위 페이지 데이터의 기록을 상기 하나 이상의 NAND 페이지 버퍼에서 상기 NAND 메모리로 프로그램하도록 동작 가능한, 장치.
  20. 삭제
  21. 제19항에 있어서, 상기 전송 버퍼의 저장 용량 요건들은 상기 전송 버퍼가 상기 하위 페이지 데이터와 상기 상위 페이지 데이터 양자를 동시에 수용할 필요가 없기 때문에 감소되고,
    상기 제어기는 상기 호스트로부터 상기 하위 페이지 데이터를 수신하는 것에 후속하여 상기 호스트로부터 상기 상위 페이지 데이터를 수신하고;
    상기 수신된 하위 페이지 데이터는 상기 호스트로부터 상기 상위 페이지 데이터를 수신하기 이전에 상기 NAND 메모리에 기록되며;
    상기 상위 페이지 데이터를 상기 NAND 메모리에 기록하기 위해 상기 NAND 메모리에 기록된 상기 하위 페이지 데이터의 판독이 필요한, 장치.
  22. 제19항에 있어서, 상기 호스트는 상기 장치의 상기 제어기에 상기 하위 페이지 데이터를 먼저 송신하고 나서 상기 상위 페이지 데이터를 송신함으로써 상기 장치에 상기 하위 페이지 데이터 및 상기 상위 페이지 데이터를 포함하는 데이터를 기록하고, 상기 NAND 콤플렉스는 트리플 레벨 셀(TLC) NAND인, 장치.
  23. 제19항에 있어서, 상기 제어기에서 상기 하위 페이지 데이터의 에러 정정은 상기 ECC 엔진을 통해 수행되고, 상기 하위 페이지 데이터의 판독 에러들에 의해 초래되는 오배치 에러들은, 상기 제어기에 의해 상기 하위 페이지 데이터를 판독하고 에러 정정하고, 후속하여 상기 에러 정정된 하위 페이지 데이터 및 상기 상위 페이지 데이터를 상기 NAND 메모리에 기록함으로써 감소되는, 장치.
  24. 삭제
  25. 제19항에 있어서, 상기 장치는 NAND 디바이스를 더 포함하고,
    상기 NAND 디바이스는,
    복수의 NAND 페이지 버퍼들; 및
    상기 NAND 메모리를 포함하는 복수의 NAND 메모리 엘리먼트들을 포함하는 NAND 어레이를 포함하고, 상기 NAND 디바이스는 인커밍(incoming) 페이지 데이터를 상기 복수의 NAND 페이지 버퍼들 중의 NAND 페이지 버퍼에 저장하고, 그 다음에 상기 NAND 어레이에 대한 판독 동작들을 허용하고, 그 다음에 상기 NAND 페이지 버퍼에 저장된 어떠한 인커밍 페이지 데이터도 손상시키지 않고 상기 제어기로의 판독 데이터의 추가 전송을 허용하도록 구성되는, 장치.
  26. 제1항에 있어서, 상기 비휘발성 메모리는 트리플 레벨 셀(TLC) NAND로 구성되며, 상기 방법은:
    상기 TLC NAND 내의 추가(extra) 페이지 데이터를 프로그래밍하는 동안 상기 상위 페이지 데이터의 에러 정정을 수행하는 단계 - 에러 정정된 상위 페이지 데이터 및 상기 추가 페이지 데이터 양자는 상기 전송 버퍼 내에 저장됨 - 를 더 포함하는, 방법.
  27. 제7항에 있어서, 상기 NAND 메모리는 트리플 레벨 셀(TLC) NAND로 구성되며, 상기 방법은:
    상기 TLC NAND 내의 추가(extra) 페이지 데이터를 프로그래밍하는 동안 상기 상위 페이지 데이터의 에러 정정을 수행하는 단계를 더 포함하는, 방법.
  28. 제13항에 있어서, 상기 비휘발성 메모리는 트리플 레벨 셀(TLC) NAND로 구성되며, 상기 제어기는 상기 TLC NAND 내의 추가(extra) 페이지 데이터를 프로그래밍하는 동안 상기 상위 페이지 데이터의 에러 정정을 추가로 수행하도록 동작 가능한 - 에러 정정된 상위 페이지 데이터 및 상기 추가 페이지 데이터 양자는 상기 전송 버퍼 내에 저장됨 -, 장치.
  29. 제19항에 있어서, 상기 NAND 메모리는 트리플 레벨 셀(TLC) NAND로 구성되며, 상기 TLC NAND 내의 추가(extra) 페이지 데이터를 프로그래밍하는 동안 상기 상위 페이지 데이터의 에러 정정을 추가로 수행하도록 동작 가능한, 장치.
KR1020177004512A 2014-09-26 2015-08-26 고체 상태 드라이브의 전송 버퍼 사용률을 향상시키기 위해 nand 페이지 버퍼들을 사용하는 방법 및 시스템 KR102282879B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/499,010 US9529668B2 (en) 2014-09-26 2014-09-26 Method and system for using NAND page buffers to improve the transfer buffer utilization of a solid state drive
US14/499,010 2014-09-26
PCT/US2015/047029 WO2016048562A1 (en) 2014-09-26 2015-08-26 Method and system for using nand page buffers to improve the transfer buffer utilization of a solid state drive

Publications (2)

Publication Number Publication Date
KR20170035983A KR20170035983A (ko) 2017-03-31
KR102282879B1 true KR102282879B1 (ko) 2021-07-29

Family

ID=55581772

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177004512A KR102282879B1 (ko) 2014-09-26 2015-08-26 고체 상태 드라이브의 전송 버퍼 사용률을 향상시키기 위해 nand 페이지 버퍼들을 사용하는 방법 및 시스템

Country Status (6)

Country Link
US (1) US9529668B2 (ko)
KR (1) KR102282879B1 (ko)
CN (1) CN106575250B (ko)
DE (1) DE112015003569B4 (ko)
TW (1) TWI603191B (ko)
WO (1) WO2016048562A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10521121B2 (en) 2016-12-29 2019-12-31 Intel Corporation Apparatus, system and method for throttling a rate at which commands are accepted in a storage device
US9811269B1 (en) * 2016-12-30 2017-11-07 Intel Corporation Achieving consistent read times in multi-level non-volatile memory
KR20190135746A (ko) 2018-05-29 2019-12-09 삼성전자주식회사 쓰기 버퍼 메모리를 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US11061762B2 (en) * 2019-02-04 2021-07-13 Intel Corporation Memory programming techniques
WO2022040949A1 (en) * 2020-08-26 2022-03-03 Yangtze Memory Technologies Co., Ltd. Non-destructive mode cache programming in nand flash memory devices
US11704061B2 (en) * 2021-03-16 2023-07-18 Kioxia Corporation Page buffer enhancements

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050237814A1 (en) * 2004-04-23 2005-10-27 Sandisk Corporation Non-volatile memory and control with improved partial page program capability
US20100023800A1 (en) * 2005-09-26 2010-01-28 Eliyahou Harari NAND Flash Memory Controller Exporting a NAND Interface
US20100318839A1 (en) * 2009-06-16 2010-12-16 Sandisk Corporation Data recovery in multi-level cell nonvolatile memory
US20120151118A1 (en) * 2010-12-13 2012-06-14 Fusion-Io, Inc. Apparatus, system, and method for auto-commit memory
US20120151166A1 (en) * 2010-03-26 2012-06-14 Masato Suto Nonvolatile storage device and memory controller
US20130185609A1 (en) * 2012-01-17 2013-07-18 Samsung Electronics Co., Ltd. Nonvolatile memory system
US20130304993A1 (en) * 2012-05-09 2013-11-14 Qualcomm Incorporated Method and Apparatus for Tracking Extra Data Permissions in an Instruction Cache
US20130318422A1 (en) * 2012-05-22 2013-11-28 Stec, Inc. Read level adjustment using soft information

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200302966A (en) * 2002-01-29 2003-08-16 Matsushita Electric Ind Co Ltd Memory device, data processing method and data processing program
JP5929485B2 (ja) 2012-05-08 2016-06-08 ソニー株式会社 制御装置、記憶装置、データ書込方法
US8914696B2 (en) * 2012-08-29 2014-12-16 Seagate Technology Llc Flash memory read scrub and channel tracking
JP2014052978A (ja) * 2012-09-10 2014-03-20 Toshiba Corp 不揮発性半導体メモリの制御方法及びメモリシステム
KR102025263B1 (ko) 2012-10-05 2019-09-25 삼성전자주식회사 메모리 시스템 및 그것의 읽기 교정 방법
US9135112B2 (en) 2012-12-11 2015-09-15 Seagate Technology Llc Policy for read operations addressing on-the-fly decoding failure in non-volatile memory
US8819337B1 (en) * 2014-04-16 2014-08-26 Sandisk Technologies Inc. Storage module and method for determining whether to back-up a previously-written lower page of data before writing an upper page of data

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050237814A1 (en) * 2004-04-23 2005-10-27 Sandisk Corporation Non-volatile memory and control with improved partial page program capability
US20100023800A1 (en) * 2005-09-26 2010-01-28 Eliyahou Harari NAND Flash Memory Controller Exporting a NAND Interface
US20100318839A1 (en) * 2009-06-16 2010-12-16 Sandisk Corporation Data recovery in multi-level cell nonvolatile memory
US20120151166A1 (en) * 2010-03-26 2012-06-14 Masato Suto Nonvolatile storage device and memory controller
US20120151118A1 (en) * 2010-12-13 2012-06-14 Fusion-Io, Inc. Apparatus, system, and method for auto-commit memory
US20130185609A1 (en) * 2012-01-17 2013-07-18 Samsung Electronics Co., Ltd. Nonvolatile memory system
US20130304993A1 (en) * 2012-05-09 2013-11-14 Qualcomm Incorporated Method and Apparatus for Tracking Extra Data Permissions in an Instruction Cache
US20130318422A1 (en) * 2012-05-22 2013-11-28 Stec, Inc. Read level adjustment using soft information

Also Published As

Publication number Publication date
US20160092299A1 (en) 2016-03-31
KR20170035983A (ko) 2017-03-31
CN106575250A (zh) 2017-04-19
DE112015003569T5 (de) 2017-06-14
US9529668B2 (en) 2016-12-27
DE112015003569B4 (de) 2024-04-25
TWI603191B (zh) 2017-10-21
CN106575250B (zh) 2021-06-08
TW201626225A (zh) 2016-07-16
WO2016048562A1 (en) 2016-03-31

Similar Documents

Publication Publication Date Title
KR102282879B1 (ko) 고체 상태 드라이브의 전송 버퍼 사용률을 향상시키기 위해 nand 페이지 버퍼들을 사용하는 방법 및 시스템
US10303571B2 (en) Data recovery in memory devices
US9208019B2 (en) Method and apparatus to perform concurrent read and write memory operations
US10445017B2 (en) Memory system and operating method thereof
US10777295B2 (en) Defective memory unit screening in a memory system
CN114761931A (zh) 有限ram系统中的逻辑到物理转译技术
US12013762B2 (en) Meta data protection against unexpected power loss in a memory system
US9063888B2 (en) Program code loading and accessing method, memory controller, and memory storage apparatus
CN103713969A (zh) 提高固态硬盘可靠性方法和装置
US11294767B2 (en) Deferred error-correction parity calculations
KR20210035908A (ko) 호스트 상주 변환 계층 유효성 검사 기술
US20160011965A1 (en) Pass through storage devices
CN103984506A (zh) 闪存存储设备数据写的方法和系统
US20220138038A1 (en) Real-time trigger to dump an error log
KR20210028264A (ko) 호스트 상주 변환 레이어 유효성 검사
CN112673356B (zh) 快速非易失性存储装置恢复技术
CN112086121B (zh) 存储器近接干扰管理
US11734184B2 (en) Effective avoidance of line cache misses

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