KR102276350B1 - Nand 버퍼를 갖는 nand 플래시 저장 디바이스 - Google Patents

Nand 버퍼를 갖는 nand 플래시 저장 디바이스 Download PDF

Info

Publication number
KR102276350B1
KR102276350B1 KR1020197035081A KR20197035081A KR102276350B1 KR 102276350 B1 KR102276350 B1 KR 102276350B1 KR 1020197035081 A KR1020197035081 A KR 1020197035081A KR 20197035081 A KR20197035081 A KR 20197035081A KR 102276350 B1 KR102276350 B1 KR 102276350B1
Authority
KR
South Korea
Prior art keywords
chip
nand flash
write
future
data
Prior art date
Application number
KR1020197035081A
Other languages
English (en)
Other versions
KR20200003055A (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 KR20200003055A publication Critical patent/KR20200003055A/ko
Application granted granted Critical
Publication of KR102276350B1 publication Critical patent/KR102276350B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • 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
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

적어도 하나의 양상은 복수의 NAND 플래시 칩들 및 제어기를 포함하는 NAND 플래시 저장 디바이스에 관한 것이다. 제어기는 입력/출력(I/O) 버스를 통해 데이터를 수신하고 그리고 수신된 데이터를 복수의 NAND 플래시 칩들 중 제1 NAND 플래시 칩 및 복수의 NAND 플래시 칩들 중 제2 NAND 플래시 칩에 기입하도록 구성된다. 각각의 NAND 플래시 칩으로의 기입 동작들은 시간적으로 오버랩하지 않는다. 제어기는, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, 제1 NAND 플래시 칩 또는 제2 NAND 플래시 칩 중 어느 NAND 플래시 칩이든 현재 기입 동작을 실행하고 있지 않은 NAND 플래시 칩으로부터 데이터를 판독하도록 구성된다.

Description

NAND 버퍼를 갖는 NAND 플래시 저장 디바이스
[0001] 본 출원은 2017년 6월 23일에 출원되고 발명의 명칭이 "NAND FLASH STORAGE DEVICE WITH NAND BUFFER"인 미국 가특허출원 번호 제62/524,016호에 대해 이익 및 우선권을 주장하는, 2017년 11월 17일에 출원되고 발명의 명칭이 "NAND FLASH STORAGE DEVICE WITH NAND BUFFER"인 미국 특허 출원 번호 제15/816,447호에 대해 이익 및 우선권을 주장하며, 이 출원 둘 모두의 전체 내용들은 이로써 인용에 의해 포함된다.
[0002] NAND 플래시에 기반하는 저장 디바이스들은 우수한 평균 대기시간(average latency)을 가지지만; "꼬리 대기시간(tail latency)"이라 지칭되는 최악의 대기시간(worst-case latency)이 훨씬 더 길 수 있다. NAND 플래시 저장 디바이스에서 더 예측가능한 대기시간을 제공하는 것은 NAND 플래시 기술의 일부 응용들(예컨대, NAND 플래시-기반 저장 디바이스들 및 스왑(swap) 디바이스들)에서 이익일 수 있다. 스왑 디바이스는 컴퓨팅 시스템에서 때때로 스왑 공간이라 지칭되는 확장 메모리 공간으로 역할을 할 수 있다. 스왑 디바이스는 더 빠른 속도의 RAM과 더 낮은 비용의 대안적인 메모리/저장 매체들, 이를테면 HDD(hard disk drive) 또는 SSD(solid state drive) 사이에서 트레이드오프를 나타낼 수 있다. NAND 플래시에 기반한 SSD는, HDD보다 더 빠르지만, NAND 플래시 칩들을 동작시키는 방식으로 인해 예측불가능한 꼬리 대기시간으로 고통을 받을 수 있다.
[0003] 적어도 하나의 양상은 NAND 플래시 저장 디바이스에 관한 것이다. NAND 플래시 저장 디바이스는 복수의 NAND 플래시 칩들 및 제어기를 포함한다. 제어기는 입력/출력(I/O) 버스를 통해 데이터를 수신하도록 구성된다. 제어기는, 각각의 NAND 플래시 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 수신된 데이터를 복수의 NAND 플래시 칩들 중 제1 NAND 플래시 칩 및 복수의 NAND 플래시 칩들 중 제2 NAND 플래시 칩에 연속으로 기입하도록 구성된다. 제어기는 I/O 버스를 통해 판독 커맨드를 수신하도록 구성된다. 제어기는 판독 커맨드를 수신하는 것에 대한 응답으로, 판독 동작들이 기입 동작들 뒤에 대기(queue)하지 않도록, 제1 NAND 플래시 칩 또는 제2 NAND 플래시 칩 중 어느 NAND 플래시 칩이든 현재 기입 동작을 실행하고 있지 않은 NAND 플래시 칩으로부터 데이터를 판독하도록 구성된다.
[0004] 일부 구현들에서, 제어기는 제1 NAND 플래시 칩을 보조 기입 칩(secondary write chip)으로서, 제2 NAND 플래시 칩을 미래 보조 기입 칩으로서, 제3 NAND 플래시 칩을 주 기입 칩(primary write chip)으로서, 제4 NAND 플래시 칩을 미래 주 기입 칩으로서, 그리고 임의의 나머지 NAND 플래시 칩들을 판독-전용으로서 지정하도록 추가로 구성된다. 제어기는, 각각의 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 수신된 데이터를 주 기입 칩 및 보조 기입 칩에 연속으로 기입하도록 구성될 수 있다. 제어기는 미래 주 기입 칩으로부터 미래 보조 기입 칩으로 유효 데이터를 복사하도록 구성될 수 있다. 제어기는 수신된 데이터의 기입 및 유효 데이터의 복사 다음에, 제1 NAND 플래시 칩을 판독-전용으로서, 제2 NAND 플래시 칩을 보조 기입 칩으로서, 제3 NAND 플래시 칩을 미래 보조 기입 칩으로서, 그리고 제4 NAND 플래시 칩을 주 기입 칩으로서 지정하도록 구성될 수 있다.
[0005] 일부 구현들에서, 제어기는, 수신된 데이터의 기입 및 유효 데이터의 복사 다음에, 제5 NAND 플래시 칩을 미래 주 기입 칩으로서 지정하도록 추가로 구성될 수 있다. 제어기는, 각각의 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, I/O 버스를 통해 수신된 제2 데이터를 주 기입 칩 및 보조 기입 칩에 연속으로 기입하도록 구성될 수 있다. 제어기는 미래 주 기입 칩으로부터 미래 보조 기입 칩으로 제2 유효 데이터를 복사하도록 구성될 수 있다. 제어기는 수신된 제2 데이터의 기입 및 제2 유효 데이터의 복사 다음에, 제2 NAND 플래시 칩을 판독-전용으로서, 제3 NAND 플래시 칩을 보조 기입 칩으로서, 제4 NAND 플래시 칩을 미래 보조 기입 칩으로서, 그리고 제5 NAND 플래시 칩을 주 기입 칩으로서 지정하도록 구성될 수 있다.
[0006] 일부 구현들에서, 복사 동작은, 유효 데이터 및 자유 공간이 각각 미래 보조 기입 칩의 실질적으로 인접한 개별 메모리 공간들을 점유하도록, 유효 데이터를 미래 주 기입 칩으로부터 미래 보조 기입 칩으로 복사하는 것을 포함할 수 있다. 복사 동작은, 유효 데이터 및 자유 공간이 각각 미래 주 기입 칩의 실질적으로 인접한 개별 메모리 공간들을 점유하도록, 유효 데이터를 미래 보조 기입 칩으로부터 다시(back) 미래 주 기입 칩으로 복사하는 것을 포함할 수 있다. 복사 동작은 자유 공간에 의해 점유된 미래 주 기입 칩 및 미래 보조 기입 칩의 메모리 공간들을 소거하는 것을 포함할 수 있다.
[0007] 일부 구현들에서, 기입 동작 및 복사 동작은 오버래핑 시간 기간들 동안 수행된다.
[0008] 적어도 하나의 양상은 NAND 플래시 저장 디바이스에 관한 것이다. NAND 플래시 저장 디바이스는 복수의 버퍼 NAND 플래시 칩들, 복수의 저장 NAND 플래시 칩들 및 제어기를 포함한다. 제어기는 입력/출력(I/O) 버스를 통해 인입 데이터를 수신하도록 구성된다. 제어기는, 각각의 NAND 플래시 칩으로의 기록 동작들이 시간적으로 오버랩하지 않도록, 수신된 인입 데이터를 복수의 저장 NAND 플래시 칩들의 제1 버퍼 NAND 플래시 칩 및 복수의 버퍼 NAND 플래시 칩들의 제1 저장 NAND 플래시 칩에 연속으로 기록하도록 구성된다. 제어기는 I/O 버스를 통해 판독 커맨드를 수신하도록 구성된다. 제어기는 판독 커맨드를 수신하는 것에 대한 응답으로, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, 제1 버퍼 NAND 플래시 칩 또는 제1 저장 NAND 플래시 칩 중 어느 NAND 플래시 칩이든 현재 기입 동작을 실행하고 있지 않은 NAND 플래시 칩으로부터 데이터를 판독하도록 구성된다.
[0009] 일부 구현들에서, 제어기는 제1 저장 NAND 플래시 칩을 주 기입 칩으로서, 제2 저장 NAND 플래시 칩을 미래 주 기입 칩으로서, 제1 버퍼 NAND 플래시 칩을 보조 기입 칩으로서, 제2 버퍼 NAND 플래시 칩을 미래 보조 기입 칩으로서, 그리고 임의의 나머지 NAND 플래시 칩들을 판독-전용으로서 지정하도록 구성될 수 있다. 제어기는, 각각의 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 수신된 데이터를 주 기입 칩 및 보조 기입 칩에 연속으로 기입하도록 구성될 수 있다. 제어기는 미래 주 기입 칩으로부터 미래 보조 기입 칩으로 유효 데이터를 복사하도록 구성될 수 있다. 제어기는 수신된 데이터의 기입 및 유효 데이터의 복사 다음에, 제1 저장 NAND 플래시 칩을 판독-전용으로서, 제2 저장 NAND 플래시 칩을 주 기입 칩으로서, 제1 버퍼 NAND 플래시 칩을 미래 보조 기입 칩으로서, 그리고 제2 버퍼 NAND 플래시 칩을 보조 기입 칩으로서 지정하도록 구성될 수 있다.
[0010] 일부 구현들에서, 제어기는, 수신된 데이터의 기입 및 유효 데이터의 복사 다음에, 제3 저장 NAND 플래시 칩을 미래 주 기입 칩으로서 지정하도록 구성될 수 있다. 제어기는, 각각의 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, I/O 버스를 통해 수신된 제2 데이터를 주 기입 칩 및 보조 기입 칩에 연속으로 기입하도록 구성될 수 있다. 제어기는 미래 주 기입 칩으로부터 미래 보조 기입 칩으로 제2 유효 데이터를 복사하도록 구성될 수 있다. 제어기는 수신된 제2 데이터의 기입 및 제2 유효 데이터의 복사 다음에, 제2 저장 NAND 플래시 칩을 판독-전용으로서, 제3 저장 NAND 플래시 칩을 주 기입 칩으로서, 제1 버퍼 NAND 플래시 칩을 보조 기입 칩으로서, 그리고 제2 버퍼 NAND 플래시 칩을 미래 보조 기입 칩으로서 지정하도록 구성될 수 있다.
[0011] 일부 구현들에서, 복사 동작은, 유효 데이터 및 자유 공간이 각각 미래 보조 기입 칩의 실질적으로 인접한 개별 메모리 공간들을 점유하도록, 유효 데이터를 미래 주 기입 칩으로부터 미래 보조 기입 칩으로 복사하는 동작을 포함할 수 있다. 복사 동작은, 유효 데이터 및 자유 공간이 각각 미래 주 기입 칩의 실질적으로 인접한 개별 메모리 공간들을 점유하도록, 유효 데이터를 미래 보조 기입 칩으로부터 다시 미래 주 기입 칩으로 복사하는 동작; 그리고 자유 공간에 의해 점유된 미래 주 기입 칩 및 미래 보조 기입 칩의 메모리 공간들을 소거하는 동작을 포함할 수 있다.
[0012] 일부 구현들에서, 버퍼 NAND 플래시 칩들은 단일-레벨 셀(SLC; single-level cell) NAND 플래시 칩들일 수 있고, 저장 NAND 플래시 칩들은 트리플-레벨 셀(TLC; triple-level cell) NAND 플래시 칩들일 수 있다.
[0013] 적어도 하나의 양상은 NAND 플래시 저장 디바이스를 버퍼링하는 방법에 관한 것이다. 방법은 입력/출력(I/O) 버스를 통해 데이터를 수신하는 단계를 포함한다. 방법은, 각각의 NAND 플래시 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 수신된 데이터를 복수의 NAND 플래시 칩들 중 제1 NAND 플래시 칩 및 복수의 NAND 플래시 칩들 중 제2 NAND 플래시 칩에 연속으로 기입하는 단계를 포함한다. 방법은 I/O 버스를 통해 판독 커맨드를 수신하는 단계를 포함한다. 방법은, 판독 커맨드를 수신하는 것에 대한 응답으로, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, 제1 NAND 플래시 칩 또는 제2 NAND 플래시 칩 중 어느 NAND 플래시 칩이든 현재 기입 동작을 실행하고 있지 않은 NAND 플래시 칩으로부터 데이터를 판독하는 단계를 포함한다.
[0014] 일부 구현들에서, 방법은 제1 NAND 플래시 칩을 보조 기입 칩으로서, 제2 NAND 플래시 칩을 미래 보조 기입 칩으로서, 제3 NAND 플래시 칩을 주 기입 칩으로서, 제4 NAND 플래시 칩을 미래 주 기입 칩으로서, 그리고 임의의 나머지 NAND 플래시 칩들을 판독-전용으로서 지정하는 단계를 포함할 수 있다. 방법은, 각각의 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 수신된 데이터를 주 기입 칩 및 보조 기입 칩에 연속으로 기입하는 단계를 포함할 수 있다. 방법은 미래 주 기입 칩으로부터 미래 보조 기입 칩으로 유효 데이터를 복사하는 단계를 포함할 수 있다. 방법은, 수신된 데이터의 기입 및 유효 데이터의 복사 다음에, 제1 NAND 플래시 칩을 판독-전용으로서, 제2 NAND 플래시 칩을 보조 기입 칩으로서, 제3 NAND 플래시 칩을 미래 보조 기입 칩으로서, 그리고 제4 NAND 플래시 칩을 주 기입 칩으로서 지정하는 단계를 포함할 수 있다.
[0015] 일부 구현들에서, 방법은, 수신된 데이터의 기입 및 유효 데이터의 복사 다음에, 제5 NAND 플래시 칩을 미래 주 기입 칩으로서 지정하는 단계를 포함할 수 있다. 방법은, 각각의 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, I/O 버스를 통해 수신된 제2 데이터를 주 기입 칩 및 보조 기입 칩에 연속으로 기입하는 단계를 포함할 수 있다. 방법은 미래 주 기입 칩으로부터 미래 보조 기입 칩으로 제2 유효 데이터를 복사하는 단계를 포함할 수 있다. 방법은, 수신된 제2 데이터의 기입 및 제2 유효 데이터의 복사 다음에, 제2 NAND 플래시 칩을 판독-전용으로서, 제3 NAND 플래시 칩을 보조 기입 칩으로서, 제4 NAND 플래시 칩을 미래 보조 기입 칩으로서, 그리고 제5 NAND 플래시 칩을 주 기입 칩으로서 지정하는 단계를 포함할 수 있다.
[0016] 일부 구현들에서, 복사 동작은, 유효 데이터 및 자유 공간이 각각 미래 보조 기입 칩의 실질적으로 인접한 개별 메모리 공간들을 점유하도록, 유효 데이터를 미래 주 기입 칩으로부터 미래 보조 기입 칩으로 복사하는 것을 포함할 수 있다. 복사 동작은, 유효 데이터 및 자유 공간이 각각 미래 주 기입 칩의 실질적으로 인접한 개별 메모리 공간들을 점유하도록, 유효 데이터를 미래 보조 기입 칩으로부터 다시 미래 주 기입 칩으로 복사하는 단계를 포함할 수 있다. 복사 동작은 자유 공간에 의해 점유된 미래 주 기입 칩 및 미래 보조 기입 칩의 메모리 공간들을 소거하는 단계를 포함할 수 있다.
[0017] 일부 구현들에서, 기입 동작 및 복사 동작은 오버래핑 시간 기간들 동안 수행된다.
[0018] 적어도 하나의 양상은 NAND 플래시 저장 디바이스를 버퍼링하는 방법에 관한 것이다. 방법은 입력/출력(I/O) 버스를 통해 데이터를 수신하는 단계를 포함한다. 방법은, 각각의 NAND 플래시 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 수신된 인입 데이터를 복수의 저장 NAND 플래시 칩들의 제1 버퍼 NAND 플래시 칩 및 복수의 버퍼 NAND 플래시 칩들의 제1 저장 NAND 플래시 칩에 연속으로 기입하는 단계를 포함한다. 방법은 I/O 버스를 통해 판독 커맨드를 수신하는 단계를 포함한다. 방법은, 판독 커맨드를 수신하는 것에 대한 응답으로, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, 제1 버퍼 NAND 플래시 칩 또는 제1 저장 NAND 플래시 칩 중 어느 NAND 플래시 칩이든 현재 기입 동작을 실행하고 있지 않은 NAND 플래시 칩으로부터 데이터를 판독하는 단계를 포함한다.
[0019] 일부 구현들에서, 방법은 제1 저장 NAND 플래시 칩을 주 기입 칩으로서, 제2 저장 NAND 플래시 칩을 미래 주 기입 칩으로서, 제1 버퍼 NAND 플래시 칩을 보조 기입 칩으로서, 제2 버퍼 NAND 플래시 칩을 미래 보조 기입 칩으로서, 그리고 임의의 나머지 NAND 플래시 칩들을 판독-전용으로서 지정하는 단계를 포함한다. 방법은, 각각의 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 수신된 데이터를 주 기입 칩 및 보조 기입 칩에 연속으로 기입하는 단계를 포함한다. 방법은 미래 주 기입 칩으로부터 미래 보조 기입 칩으로 유효 데이터를 복사하는 단계를 포함한다. 방법은, 수신된 데이터의 기입 및 유효 데이터의 복사 다음에, 제1 저장 NAND 플래시 칩을 판독-전용으로서, 제2 저장 NAND 플래시 칩을 주 기입 칩으로서, 제1 버퍼 NAND 플래시 칩을 미래 보조 기입 칩으로서, 그리고 제2 버퍼 NAND 플래시 칩을 보조 기입 칩으로서 지정하는 단계를 포함한다.
[0020] 일부 구현들에서, 방법은, 수신된 데이터의 기입 및 유효 데이터의 복사 다음에, 제3 저장 NAND 플래시 칩을 미래 주 기입 칩으로서 지정하는 단계를 포함한다. 방법은, 각각의 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, I/O 버스를 통해 수신된 제2 데이터를 주 기입 칩 및 보조 기입 칩에 연속으로 기입하는 단계를 포함한다. 방법은 미래 주 기입 칩으로부터 미래 보조 기입 칩으로 제2 유효 데이터를 복사하는 단계를 포함한다. 방법은, 수신된 제2 데이터의 기입 및 제2 유효 데이터의 복사 다음에, 제2 저장 NAND 플래시 칩을 판독-전용으로서, 제3 저장 NAND 플래시 칩을 주 기입 칩으로서, 제1 버퍼 NAND 플래시 칩을 보조 기입 칩으로서, 그리고 제2 버퍼 NAND 플래시 칩을 미래 보조 기입 칩으로서 지정하는 단계를 포함한다.
[0021] 일부 구현들에서, 방법은, 유효 데이터 및 자유 공간이 각각 미래 보조 기입 칩의 실질적으로 인접한 개별 메모리 공간들을 점유하도록, 유효 데이터를 미래 주 기입 칩으로부터 미래 보조 기입 칩으로 복사하는 단계를 포함한다. 방법은, 유효 데이터 및 자유 공간이 각각 미래 주 기입 칩의 실질적으로 인접한 개별 메모리 공간들을 점유하도록, 유효 데이터를 미래 보조 기입 칩으로부터 다시 미래 주 기입 칩으로 복사하는 단계를 포함한다. 방법은 자유 공간에 의해 점유된 미래 주 기입 칩 및 미래 보조 기입 칩의 메모리 공간들을 소거하는 단계를 포함한다.
[0022] 일부 구현들에서, 버퍼 NAND 플래시 칩들은 단일-레벨 셀(SLC) NAND 플래시 칩들일 수 있고, 저장 NAND 플래시 칩들은 트리플-레벨 셀(TLC) NAND 플래시 칩들일 수 있다.
[0023] 이들 및 다른 양상들 및 구현들은 아래에서 더 상세히 논의된다. 전술한 정보 및 다음의 상세한 설명은 다양한 양상들 및 구현들의 예시적인 예들을 포함하고, 청구된 양상들 및 구현들의 성질 및 특징을 이해하기 위한 개요 또는 프레임워크를 제공한다. 도면들은 다양한 양상들 및 구현들의 예시 및 추가 이해를 제공하고, 본 명세서에 통합되고 일부를 구성한다.
[0024] 첨부 도면들은 실척대로 도시되도록 의도되지 않는다. 다양한 도면들에서 유사한 참조 번호들 및 명칭들은 유사한 엘리먼트들을 표시한다. 명확성의 목적들을 위해, 모든 각각의 도면에서 모든 각각의 컴포넌트가 라벨링되지는 않는다. 도면들에서:
[0025] 도 1은 예시적인 구현에 따른, NAND 버퍼를 갖는 NAND 플래시 저장 디바이스를 포함하는 예시적인 컴퓨터 시스템의 블록도이다.
[0026] 도 2는 예시적인 구현에 따른, NAND 버퍼를 갖는 예시적인 NAND 플래시 저장 디바이스를 포함하는 블록도이다.
[0027] 도 3은 예시적인 구현에 따른, NAND 버퍼를 갖는 NAND 플래시 저장 디바이스를 사용하는 예시적인 방법을 도시하는 흐름도이다.
[0028] 도 4는 예시적인 구현에 따른, NAND 버퍼 및 부가적인 NAND 저장부를 갖는 예시적인 NAND 플래시 저장 디바이스의 블록도이다.
[0029] 도 5는 예시적인 구현에 따른, NAND 버퍼 및 부가적인 NAND 저장부를 갖는 NAND 플래시 저장 디바이스의 예시적인 동작들을 도시한다.
[0030] 도 6은 예시적인 구현에 따른, NAND 버퍼 및 부가적인 NAND 저장부를 갖는 NAND 플래시 저장 디바이스를 사용하는 예시적인 방법을 도시하는 흐름도이다.
[0031] 도 7은 예시적인 구현에 따른 마모 레벨링(wear leveling)에 대한 교대 NAND 버퍼를 갖는 예시적인 NAND 플래시 저장 디바이스의 블록도이다.
[0032] 도 8은 예시적인 구현에 따른, 마모 레벨링에 대한 교대 NAND 버퍼를 갖는 NAND 플래시 저장 디바이스의 동작들의 예를 도시한다.
[0033] 도 9는 예시적인 구현에 따른 마모 레벨링에 대한 교대 NAND 버퍼를 갖는 NAND 플래시 저장 디바이스를 사용하는 예시적인 방법을 도시하는 흐름도이다.
[0034] NAND 버퍼를 갖는 예측가능-대기시간 NAND 플래시 저장 디바이스 및 이를 사용하는 방법들에 관련된 다양한 개념들 및 이의 구현들의 설명이 아래에 이어진다. 위에서 도입되고 아래에서 더 상세히 논의되는 다양한 개념들은, 설명된 개념들이 임의의 특정 방식의 구현으로 제한되지 않기 때문에, 다양한 방식들 중 임의의 방식으로 구현될 수 있다. 특정 구현들 및 응용들의 예들은 주로 예시 목적들을 위해 제공된다.
[0035] 본 개시내용은 일반적으로 NAND 버퍼를 갖는 예측가능-대기시간 NAND 플래시 저장 디바이스에 관한 것이다. 저장 디바이스는 SSD(solid-state drive) 또는 스왑 디바이스일 수 있다. 스왑 디바이스는 RAM(Random Access Memory)의 확장으로서 기능할 수 있는 보조 저장 디바이스이다. 메모리에 유지될 데이터의 양이 RAM의 용량을 초과할 때, 데이터의 일부는 때때로 "페이징(paging)"이라 지칭되는 동작에서 스왑 디바이스로 이동될 수 있다. 전통적으로, 보조 디바이스는 HDD(hard disk drive)일 수 있다. 그러나, HDD로부터 데이터를 판독 및 기입하는 것은 RAM에 비해 매우 느려서, 검색 속도가 중요한 세팅들에서 HDD를 스왑 바이스로서는 실용적이지 않게 만든다. 더 최신의 SSD들, 특히 NAND 플래시-기반 SSD들은, 비록 여전히 RAM보다 느리지만, HDD들에 비해 더 빠른 검색 시간들을 나타낸다. NAND SSD들은 또한 RAM보다 비용이 적게 드는 경향이 있고, 따라서 SSD 용량을 선호하여 RAM 용량을 감소시키는 것은 비용 절약들을 유도할 수 있다. 더 최근에 개발된 낮은-대기시간 NAND(LLNAND), 이를테면 삼성의 Z-NAND는 통상적인 판독 대기시간을 개선시키는 특수 회로로 설계된다. LLNAND-기반 SSD들은 훨씬 더 빠르고, 따라서 일부 서버 애플리케이션들에서 페이징 및 다른 일시적 데이터 저장에 실용적이다.
[0036] 그러나, NAND 플래시 SSD들은 다른 단점들을 갖는다. NAND 판독 시간은 매우 빠르지만(대략 수십 마이크로 초), 소거 및 기입 동작들은 훨씬 느리다(각각 대략 수 밀리 초). 그리고, NAND 플래시 칩이 동시에 판독 동작 및 기입 동작을 실행할 수 없기 때문에, 소거/기입 동작 뒤에 대기하는 판독 동작은 정상으로부터 100 배 또는 1000 배의 대기시간 증가를 나타낼 수 있다. 이것은 "꼬리 대기시간"이라 칭해진다. NAND 플래시 칩에 기입하기 위해 RAM에 데이터를 버퍼링하는 것은 가능하지만, 오버헤드(overhead)는 엄청나게 비쌀 수 있다. 예컨대, 10 개의 NAND 플래시 칩들을 갖는 디바이스는 버퍼로서 총 NAND 용량의 1/10에 상당하는 RAM을 요구할 것이다. DRAM이 NAND 저장부보다 4 배 비쌀 수 있기 때문에, 비용 오버헤드는 40%일 수 있다.
[0037] 그러므로, 본 개시내용은 RAM 버퍼의 비용보다 더 낮은 비용 오버헤드에서 꼬리 대기시간을 개선하기 위해 NAND 버퍼를 이용하는 것을 제안한다. 시스템은 데이터의 각각의 페이지를 순서대로 2 개의 칩들에(제1 페이지를 제1 칩에, 이어서 제2 칩에) 기입함으로써 작동한다. 제2 칩은 NAND 버퍼로 고려될 수 있다. 기입 동작들은 시간적으로 오버랩하지 않는다. 판독 동작들은 기입 동작을 현재 실행하고 있지 않은 칩에 의해 실행될 수 있다. 따라서, 판독 동작들은 기입 동작들 뒤에 대기될 필요가 없고, 이는 NAND 플래시 저장 디바이스가 더 예측가능한 대기시간을 갖는 것을 허용한다.
[0038] 일부 구현들에서, 제1 칩(및, 확장에 의해, 제2 칩)은 채워지고, 2 개의 새로운 칩들은 기입 버퍼들로서 선정된다. 제1 칩은 판독 전용으로 스위칭될 수 있고 그리고, 제1 칩이 기입 동작들로부터 방해들 없이 판독 동작들을 수행할 수 있기 때문에, 제2 칩에 저장된 데이터의 복사는 더 이상 필요하지 않다. 제2 칩은 이제 미래 주 기입 동작들이 없다. 2 개의 새로운 칩들, 제3 칩 및 제4 칩은 기입을 위해 선택될 수 있다. 이 경우, 제4 칩은 NAND 버퍼로 고려될 수 있다.
[0039] 그런 시스템이 작동하기 위해, 기입을 위해 선택된 2 개의 새로운 칩들이 복제 데이터(duplicate data)를 포함하는 것이 도움이 된다. 따라서, 새로운 데이터를 수신하기 전에, 제3 칩 상의 기존 데이터는 먼저 제4 칩에 복사될 수 있다. 복사 동작은 "가비지 수집(garbage collection)"을 포함하고, 동작 메모리 디바이스들은 무효화된(더 이상 사용되지 않는) 데이터에 의해 점유된 공간을 확보(free up)하기 위해 수행된다. 가비지 수집은 시간 소비적일 수 있고 그리고, 소거/기입 동작들과 같이, 그 가비지 수집이 완료될 때까지 판독 동작들이 실행되는 것을 방지할 수 있다. 그러므로, 가비지 수집 및 복사 동작들은, 처음에, 제4 칩만이 기입되고 제3 칩이 판독에 이용가능하도록 실행된다. 이후, 가비지 수집 버전은, 제4 칩이 판독에 이용가능하도록 제4 칩으로부터 제3 칩으로 다시(back) 복사된다. 또한, 제3 칩과 제4 칩 사이의 가비지 수집 및 복사 동작들은 제1 및 제2 칩으로의 기입과 시간적으로 오버랩된다. 가비지 수집 및 복사 동작이 기입 동작들보다 시간이 적게 걸리는 한, 제3 및 제4 칩들은, 제1 및 제2 칩들이 채워질 때 기입 동작의 실행을 대체할 준비가 될 것이다. 이어서, 칩들의 새로운 쌍은 가비지 수집 및 복사 동작을 위해 선택될 것이다.
[0040] 그런 시스템에서, 임의의 주어진 시간에, 2 개의 버퍼 칩들은 2 개의 다른 칩들에 데이터의 복제본(duplicate)을 포함한다. 따라서, 저장을 위해 10 개의 NAND 플래시 칩들을 갖는 디바이스는 2 개의 부가적인 NAND 플래시 버퍼 칩들을 가질 수 있다. 따라서, 비용 오버헤드는 DRAM 버퍼를 사용하는 비용 오버헤드의 절반일 수 있는 20%일 것이다.
[0041] 부가적인 버퍼 NAND 플래시 칩들은 NAND 플래시 저장 디바이스의 기입 대역폭을 개선하는 데 이용될 수 있다. NAND 플래시 저장 디바이스의 기입 대역폭은, NAND 플래시 저장 디바이스가 주어진 시간 양에서 수신 및 저장할 수 있는 데이터의 양을 지칭한다. 일부 경우들에서, NAND 플래시 저장 디바이스의 기입 대역폭은, 특정 NAND 플래시 칩에 데이터를 기입하는 데 걸리는 시간에 의해 제한될 수 있다. 그러므로, 기입 대역폭은 더 많은 버퍼 NAND 플래시 칩들을 부가하고, 이들 사이에 기입 동작들을 분배함으로써 증가될 수 있다. 따라서, 일부 구현들에서, NAND 플래시 저장 디바이스는 기입 대역폭을 개선하기 위해 부가적인 버퍼 칩들(즉, 4 개, 6 개, 8 개 이상)을 포함할 수 있다.
[0042] 일부 구현에서, NAND 플래시 저장 디바이스는 마모 레벨링을 이용할 수 있다. NAND 플래시 칩은 과도한 비트 에러들을 나타내기 전에 유한한 수의 기입 동작들만을 수행할 수 있다. 결국, 많은 기입 동작들을 수행한 이후, NAND 플래시 칩은 마모되어 고장나기 시작할 것이다. NAND 플래시 저장 디바이스의 수명을 연장시키기 위해, NAND 플래시 저장 디바이스는 기입 동작들을 위한 버퍼 칩들로서 지정된 NAND 플래시 칩들을 교대시킬 수 있다. 적은 수의 칩들에 대해 버퍼링 기입 동작들을 집중시키는 것과 반대로, 디바이스의 NAND 플래시 칩들의 일부 또는 모두 사이에서 마모를 균등화하거나 실질적으로 균등화하기 위해 지정이 교대될 수 있다. 이런 방식으로, 디바이스의 많은 NAND 플래시 칩들에 걸쳐 마모가 퍼지거나, "레벨링"될 수 있다.
[0043] 도 1은 예시적인 구현에 따른, NAND 버퍼를 갖는 NAND 플래시 저장 디바이스를 포함하는 예시적인 컴퓨터 시스템(100)의 블록도이다. 시스템(100)은 컴퓨팅 디바이스; 예컨대 제한 없이, 퍼스널 컴퓨팅 디바이스, 이를테면 랩톱 또는 데스크톱 컴퓨터, 공유된 컴퓨팅 디바이스, 이를테면 서버 또는 메인프레임, 또는 전술된 또는 다른 컴퓨팅 디바이스의 컴포넌트일 수 있다. 시스템(100)은 프로세서, 이를테면 중앙 프로세싱 유닛(CPU)(110), RAM(120), 이를테면 DRAM, 입력/출력(I/O) 버스(130), 이를테면 PCIe(Peripheral Component Interconnect Express), 장기 데이터 저장을 위한 데이터 저장 디바이스(140), 이를테면 HDD(hard disk drive) 또는 SSD(solid-state drive), 및 NAND 플래시 저장 디바이스(150)를 포함한다. RAM(120)은 메인 메모리일 수 있고 예컨대 원하는 위치의 메모리 어드레스를 운반하는 어드레스 버스, 및 특정 메모리 어드레스로부터/어드레스로 데이터를 판독 또는 기입하는 데 사용되는 데이터 버스를 통해 CPU(110)에 직접 액세스 가능할 수 있다.
[0044] 일부 구현들에서, NAND 플래시 저장 디바이스(150)는 시스템(100)에 스왑 공간을 제공하는 스왑 디바이스일 수 있다. 일부 컴퓨팅 환경들에서, 커널(kernel) 또는 오퍼레이팅 시스템은 메모리/저장 추상화부, 이를테면 가상 메모리를 이용할 수 있고, 이는 CPU(110) 상에서 실행되는 애플리케이션들에게 이런 타입 및 위치를 가변시킬 수 있는 하나 이상의 메모리 디바이스들에 대한 투명하고 일관된 액세스를 제공한다. 예컨대, 가상 메모리는 CPU(110) 상에서 실행되는 애플리케이션들이 확장 메모리 공간에 액세스하게 할 수 있다. 확장 메모리 공간은 RAM(120)의 용량을 초과할 수 있다. 메모리에 저장되고자 하는 데이터가 RAM(120)의 용량을 초과할 때, 가상 메모리 기능은 페이징을 수행할 수 있고, 이에 의해 시스템(100)은 보조 메모리 디바이스, 이를테면 HDD 또는 SSD에 데이터를 저장할 수 있다. 이런 확장 메모리 공간은 스왑 공간으로 지칭될 수 있고, 스왑 공간을 제공하는 저장 디바이스는 스왑 디바이스로 지칭될 수 있다.
[0045] 상이한 타입들의 메모리 및 저장 디바이스들은 액세스 속도가 크게 가변할 수 있고, RAM은 일반적으로 HDD들보다 훨씬 더 빠르고, 그리고 NAND 플래시는 중간에 속한다. HDD들의 느린 액세스 시간들은 HDD들을, 데이터에 대한 빠른 액세스를 요구하는 애플리케이션들에 실용적이지 않게 만든다. NAND 플래시 저장 디바이스들은 HDD들보다 훨씬 더 빠르고, 따라서 다양한 애플리케이션들에 유용하게 된다. NAND 플래시 저장 디바이스들은 일부 일반적인 타입들의 RAM, 이를테면 DRAM보다 덜 비싼 부가적인 장점을 가진다. 더 새로운 타입들의 NAND, 이를테면 낮은-대기시간 NAND(LLNAND)는 훨씬 빠를 수 있고, 판독 동작들에 대해 약 70 μs 일반 NAND에 비해 약 10 μs의 대기시간을 나타낸다. LLNAND들은 또한 프로그램(기입) 동작들에 대해 더 적은 대기시간(즉 일반적인 NAND에 대한 몇 밀리 초에 비해 100-200 μs)을 나타낸다. 그러나, 기입 동작은 일반적으로 프로그램 동작 및 소거 동작 둘 모두를 포함한다. LLNAND들은 여전히 대략 5 ms가 걸릴 수 있는 느린 소거 시간들로 어려움을 겪을 수 있다. 부가적인 난제로서, NAND 플래시 칩 또는 다이는 일반적으로 한 번에 하나의 동작만을 수행할 수 있다. 예컨대, NAND 플래시 칩이 기입 동작의 소거/프로그램 시퀀스를 실행 중이면, 완료 때까지 임의의 인입 판독 커맨드들은 대기될 것이다. 따라서, 일부 판독 동작들은 수 십 마이크로초의 공칭 대기시간에도 불구하고 완료하는 데 최대 수 밀리 초를 요구할 수 있다. 이들 특이치 대기시간(outlier latency)들은 "꼬리 대기시간"이라 지칭된다. 이런 꼬리 대기시간의 지속기간 및 예측 불가능성은 NAND 플래시를 사용할 때 어려움들을 제시할 수 있다. 일부 시스템들은, RAM이 판독 동작을 수행하는 동안 NAND 플래시 칩이 기입 동작들을 실행하도록, 기입되고 있는 NAND 플래시 칩의 콘텐츠를 캐시하도록 RAM을 사용할 수 있다(예컨대 미국 특허 출원 번호 제14/936,486호를 참조). 그러나, RAM은 그 NAND 플래시보다 훨씬 비싸기 때문에, RAM은 일부 애플리케이션들에 대해 허용불가능할 수 있는 비용 오버헤드를 부가한다. 그러므로, 본 개시내용은 기입 동작들을 실행하는 NAND 플래시 칩들에 상주하는 데이터에 대한 캐시를 제공하기 위해 하나 이상의 부가적인 NAND 플래시 칩들을 제공하는 것을 제안한다. NAND 플래시-기반 버퍼는 도 2에 관하여 아래에서 더 상세히 설명된다.
[0046] 도 2는 예시적인 구현에 따른, NAND 버퍼를 갖는 예시적인 NAND 플래시 저장 디바이스(250)의 블록도이다. NAND 플래시 저장 디바이스(250)는 NAND 플래시 저장 디바이스(150)로서 역할을 할 수 있다. 판독 동작들이 기입 동작들 뒤에 대기하는 것과 연관된 꼬리 대기시간을 회피하기 위해, NAND 플래시 저장 디바이스(250)는 2 개의 NAND 플래시 칩들(270a 및 270b)(집합적으로 "NAND 플래시 칩들(270)")을 사용하여 이중 버퍼링을 이용할 수 있다. 제어기(260)는 I/O 버스(230)를 통해 수신된 저장 액세스 커맨드들을 처리할 수 있다. 제어기(260)는 프로그램가능 로직, 이를테면 ASIC(application-specific integrated circuit), FPGA(field-programmable gate array), 마이크로제어기, 또는 마이크로프로세서를 포함할 수 있다. 제어기(260)는 NAND 플래시 저장 디바이스(250)와 일체형이거나, 외부에 있을 수 있다. 제어기(260)는, CPU(110)가 NAND 플래시 저장 디바이스(250)의 버퍼링 동작들을 인식할 필요가 없거나 스스로 실행할 필요가 없도록, NAND 플래시 저장 디바이스(250)의 판독 및 기입 동작들을 조정(orchestrate)할 수 있다. 대안적으로, 제어기가 각각의 동작을 완료하는 하위 레벨 작업을 수행하는 동안, 동작들을 조정하기 위해 CPU(110)에 의존하는 더 간단한 제어기를 설계하는 것이 가능하다. 따라서, 제어기(260)는 I/O 버스(230)를 통해 데이터 및/또는 커맨드들을 수신하고, 그리고 수신된 데이터를 먼저 NAND 플래시 칩들(270) 중 하나에 기입하고, 이어서 NAND 플래시 칩들(270) 중 제2 칩에 기입하도록 구성된다. 제어기(260)는 ― 자율적으로 또는 CPU(110)의 지시 하에서 ― 연속적으로 기입 동작들을 실행하여, 이들 동작들은 시간적으로 오버랩하지 않고; 따라서, 임의의 주어진 시간에, 기입 동작을 현재 수행하고 있지 않은 NAND 플래시 칩(270)은 판독 동작들을 즉시 수행할 수 있다. 제어기(260)가 각각의 기입 동작을 실행하면, NAND 플래시 칩들(270) 중 2 개의 칩은 동일한 데이터를 포함할 수 있다. 제어기(260)는, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, 제1 NAND 플래시 칩 또는 제2 NAND 플래시 칩 중 어느 NAND 플래시 칩이든 현재 기입 동작을 실행하고 있지 않은 NAND 플래시 칩으로부터의 판독에 의해 판독 커맨드들을 실행할 수 있다. 이런 방식으로, 꼬리 대기시간이 개선될 수 있다.
[0047] 일부 구현들에서, NAND 플래시 저장 디바이스(250)는 기입 대역폭을 추가로 개선하기 위해 부가적인 NAND 플래시 칩들(270c 및 270d)을 포함할 수 있다. 예컨대, 4 개의 NAND 플래시 칩들(270a 내지 270d)을 갖는 NAND 플래시 저장 디바이스(250)는 2 개의 NAND 플래시 칩들(270)(예컨대, NAND 플래시 칩들(270a 및 270b)) 사이에서 기입 동작들을 분할할 수 있다. NAND 플래시 칩들(270a 및 270b)이 자신의 개별 기입 동작들을 완료한 후, 이들 기입 동작들은 NAND 플래시 칩들(270c 및 270d)에서 반복될 수 있다. 이런 방식으로, NAND 플래시 저장 디바이스(250)의 기입 대역폭은 대략 2 배가 될 수 있다. NAND 플래시 저장 디바이스(250)는 기입 대역폭의 추가 증가들을 위해 부가적인 NAND 플래시 칩들(270)을 이용할 수 있다.
[0048] 일부 구현들에서, NAND 디바이스(250)는 각각의 NAND 플래시 칩(270)에 기입되는 동안 데이터를 저장하기 위한 캐시 또는 버퍼로서 역할을 하는 일부 RAM(265)을 포함할 수 있다. 이 RAM(265)은 NAND 플래시 칩(270)의 전체 콘텐츠를 버퍼링하는 능력을 가질 필요가 없지만, 오히려 데이터의 단일 블록 또는 페이지를 버퍼링하기에만 충분히 클 수 있다. 따라서, 전용 RAM 버퍼보다 훨씬 더 작을 수 있어서, NAND 디바이스(250)의 비용 오버헤드에 현저하게 기여하지 않을 수 있다.
[0049] 도 3은 예시적인 구현들에 따른, NAND 버퍼를 갖는 NAND 플래시 저장 디바이스를 사용하는 예시적인 방법(300)을 도시하는 흐름도이다. NAND 플래시 저장 디바이스는 본원에서 설명된 NAND 플래시 저장 디바이스들(150, 250, 450 또는 750) 중 임의의 디바이스를 포함할 수 있다. 방법(300)은 입력/출력(I/O) 버스를 통해 데이터를 수신하는 단계를 포함한다(스테이지 310). 방법(300)은, 각각의 NAND 플래시 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 수신된 데이터를 제1 NAND 플래시 칩 및 2 NAND 플래시 칩에 연속으로 기입하는 단계를 포함한다(스테이지 320). 방법은 I/O 버스를 통해 판독 커맨드를 수신하는 단계를 포함한다(스테이지 330). 방법(300)은, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, 제1 NAND 플래시 칩 또는 제2 NAND 플래시 칩 중 어느 NAND 플래시 칩이든 현재 기입 동작을 실행하고 있지 않은 NAND 플래시 칩으로부터 데이터를 판독하는 단계를 포함한다(스테이지 340).
[0050] 방법(300)은 I/O 버스를 통해 데이터를 수신하는 단계를 포함한다(스테이지 310). NAND 플래시 저장 디바이스는 각각 I/O 버스, 이를테면 NAND 플래시 저장 디바이스들(150 또는 250)에 관하여 이미 설명된 I/O 버스들(130 또는 230) 중 하나를 통해 기입 커맨드를 수신할 수 있다. 기입 커맨드는 NAND 플래시 저장 디바이스에 의해 저장될 데이터를 포함할 수 있다.
[0051] 방법(300)은, 각각의 NAND 플래시 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 수신된 데이터를 제1 NAND 플래시 칩 및 2 NAND 플래시 칩에 연속으로 기입하는 단계를 포함한다(스테이지 320). 기입 동작들은 NAND 플래시 저장 디바이스들의 제어기, 이를테면 이미 설명된 CPU(110) 또는 제어기(260)에 의해 실행될 수 있다. 제어기는 2 개의 NAND 플래시 칩들, 이를테면 NAND 플래시 칩(270a 또는 270b) 중 하나의 칩에 대해 기입 동작을 실행할 수 있다. 제어기가 NAND 플래시 칩들(270) 중 하나의 칩에 대해 기입 동작을 실행하는 동안, 특정 NAND 플래시 칩은 다른 동작들을 프로세싱할 수 없을 것이다. 따라서, 제어기는, 기입 동작들이 시간적으로 오버랩하지 않도록 2 개의 NAND 플래시 칩들에 대해 기입 동작들을 연속으로 실행할 것이다. 일부 구현들에서, 수신 스테이지(310) 및 기입 스테이지(320)는, 제1 및 제2 NAND 플래시 칩들이 가득차거나 실질적으로 가득 찰 때까지 반복될 수 있다. 일부 구현들에서, NAND 플래시 칩들은 낮은-대기시간 NAND(LLNAND) 칩들이다.
[0052] 방법은 I/O 버스를 통해 판독 커맨드를 수신하는 단계를 포함한다(스테이지 330). 방법(300)은, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, 제1 NAND 플래시 칩 또는 제2 NAND 플래시 칩 중 어느 NAND 플래시 칩이든 현재 기입 동작을 실행하고 있지 않은 NAND 플래시 칩으로부터 데이터를 판독하는 단계를 포함한다(스테이지 340). 기입 동작들의 실행 동안, NAND 플래시 저장 디바이스는 I/O 버스를 통해 판독 커맨드를 수신할 수 있다. 제어기는, NAND 플래시 칩들 중 어느 NAND 플래시 칩이든 현재 기입 동작을 실행하고 있지 않은 NAND 플래시 칩으로 판독 커맨드를 지향시킬 수 있다. 이런 방식으로, 스테이지들(330 및 340)은 스테이지들(310 및 320)과 동시에 진행될 수 있고, 그리고 판독 동작들은 더 느린 기입 동작들 뒤에 대기하지 않고 즉시 프로세싱될 수 있다. 방법(300)의 스테이지들은, 부가적인 데이터 및 판독 커맨드들이 I/O 버스를 통해 수신될 때 반복될 수 있다. 일부 구현들에서, 각각의 특정 NAND 플래시 칩에 의해 수행되는 역할은, 상이한 NAND 플래시 칩들이 상이한 시간들에서 상이한 버퍼 및 저장 기능들을 수행하는 것으로 순환될 수 있다. 상이한 방식들의 NAND 플래시 칩 버퍼링 및 저장의 예들은 도 4 내지 도 9를 참조하여 아래에 설명된다.
[0053] 도 4는 예시적인 구현들에 따른, NAND 버퍼 및 부가적인 NAND 저장부를 갖는 예시적인 NAND 플래시 저장 디바이스(450)의 블록도이다. NAND 플래시 저장 디바이스(450)는 I/O 버스(430)를 통해 수신된 판독 및 기입 커맨드들을 실행하기 위한 제어기(460)를 포함한다. 제어기(460)는 RAM(465)을 포함할 수 있거나, 메모리 버스를 통해 RAM(465)과 통신할 수 있다. 제어기(460)는 프로그램가능 로직, 이를테면 ASIC(application-specific integrated circuit), FPGA(field-programmable gate array), 마이크로제어기, 또는 마이크로프로세서를 포함할 수 있다. 제어기(460)는 NAND 플래시 저장 디바이스(450)와 일체형이거나, 외부에 있을 수 있다. NAND 플래시 저장 디바이스(450)는 2 개의 버퍼 NAND 플래시 칩들(470a 및 470b)(총칭해서, "버퍼 NAND 플래시 칩들(470)")을 포함할 수 있다. 일부 구현들에서, NAND 플래시 저장 디바이스(450)는 아래에서 더 설명되는 바와 같이, 부가적인 버퍼 NAND 플래시 칩들(470)을 포함할 수 있다. 일부 구현들에서, NAND 플래시 저장 디바이스(450)는, 데이터가 버퍼 NAND 플래시 칩들(470) 중 하나 이상에 기입되는 동안, I/O 버스(430)를 통해 수신된 데이터를 버퍼링하기 위해 RAM(465)을 사용할 수 있다. NAND 플래시 저장 디바이스(450)는 또한 버퍼 NAND 플래시 칩들(470)의 메모리 용량에 비해 부가적인 메모리 용량을 제공하는 저장 NAND 플래시 칩들(475a 내지 475e)(총칭해서, "저장 NAND 플래시 칩들(475)")을 포함한다. I/O 버스(430)를 통해 수신된 데이터는, 저장 NAND 플래시 칩들(475) 중 하나의 칩에 복사되기 전에 버퍼 NAND 플래시 칩들(470)에 버퍼링될 수 있다.
[0054] 일부 구현들에서, 버퍼 NAND 플래시 칩들(470)은 단일-레벨 셀(SLC) NAND 플래시 칩들일 수 있거나 또는 낮은-대기시간 NAND(LLNAND) 플래시 칩들일 수 있는 반면, 저장 NAND 플래시 칩들(475)은 다중-레벨 셀(MLC) 또는 트리플-레벨 셀(TLC) NAND 플래시 칩들일 수 있다. 일부 구현들에서, 버퍼 NAND 플래시 칩들(470)은 저장 NAND 플래시 칩들(475)보다 더 작은 용량일 수 있다. 일부 구현들에서, 버퍼 NAND 플래시 칩들(470)의 그룹은 단일 저장 NAND 플래시 칩(475)의 용량과 동일한 용량을 가질 수 있다. 버퍼 NAND 플래시 칩들(470)의 그룹은 집합적으로 단일 버퍼 칩으로서 사용될 수 있다.
[0055] NAND 플래시 저장 디바이스들의 기입 대역폭은, 기입 동작들을 수행하는 비교적 느린 페이스(pace)로 인해 제한될 수 있다. 그러나, 일부 구현들에서, 기입 대역폭은 더 많은 버퍼 NAND 플래시 칩들(470)을 기입 버퍼들로서 지정함으로써 개선될 수 있다. 일부 구현들에서, 그리고 NAND 플래시 저장 디바이스(250)와 유사하게, NAND 플래시 저장 디바이스(450)는 부가적인 버퍼 NAND 플래시 칩들(470)(예컨대, 버퍼 NAND 플래시 칩들(470c 및 470d))을 포함할 수 있다. 일부 구현들에서, NAND 플래시 저장 디바이스(450)는 훨씬 더 많은 버퍼 NAND 플래시 칩들(470)을 포함할 수 있다. 따라서, 제어기(460)는 기입 대역폭을 배가시키기(multiply) 위해 버퍼 NAND 플래시 칩들(470) 사이에서 기입 동작들을 확산시킬 수 있다.
[0056] NAND 플래시 저장 디바이스(450)는 잠재적으로 2 개의 단점들에 직면한다. 첫째, 버퍼 NAND 플래시 칩들(470)은 결국 용량에 도달할 것이다. 일단 버퍼 NAND 플래시 칩(470)의 모든 데이터가 저장 NAND 플래시 칩들(475) 중 하나의 칩에 복사되었다면, 버퍼 NAND 플래시 칩(470) 내의 모든 데이터는 삭제될 수 있다. 버퍼 NAND 플래시 칩(470)이 소거 동작들을 수행하는 동안, 기입 동작을 수행할 수 없다. 그러므로, 기입 대역폭은 그 버퍼 NAND 플래시 칩(470)의 이용불가능(unavailability)에 의해 제한될 것이다.
[0057] 제2 잠재적인 단점은, 과도한 비트 에러들을 나타내기 전에 NAND 플래시 칩이 처리할 수 있는 유한한 수의 기입 동작들에 관한 것이다. NAND 플래시 칩들은 기입 동작들을 프로세싱하는 것으로부터 마모를 경험한다. 결국, 많은 기입 동작들을 수행한 이후, NAND 플래시 칩은 마모되어 고장들을 나타내기 시작할 것이다.
[0058] 일부 구현들에서, 제한된 기입 대역폭의 난제는 위에서 설명된 바와 같이 버퍼 NAND 플래시 칩들(470)의 수를 증가시킴으로써 처리될 수 있고, 그리고 NAND 마모 문제는 버퍼 NAND 플래시 칩들(470) 만큼 높은 내구성 칩들을 사용하여 처리될 수 있다. 일부 구현들에서, NAND 마모 문제는 인입 데이터에 대한 버퍼들로서 지정된 특정 NAND 플래시 칩들을 교대시킴으로써 처리될 수 있다. 그런 마모-레벨링 방식은 도 7 내지 도 9를 참조하여 아래에서 추가로 설명된다. 아래에서 도 5는 NAND 플래시 저장 디바이스(450)의 예시적인 동작들을 예시한다.
[0059] 도 5는 예시적인 구현에 따른, NAND 버퍼 및 부가적인 NAND 저장부를 갖는 NAND 플래시 저장 디바이스의 예시적인 동작들(500)을 도시한다. 이들 동작들은 NAND 플래시 저장 디바이스, 이를테면 이미 설명된 NAND 플래시 저장 디바이스(450)에 의해 수행될 수 있다. 동작들(500)은, 인입 데이터가 버퍼 NAND 플래시 칩(470a) 및 저장 NAND 플래시 칩(475a)에 기입되고, 그리고 데이터가 가비지 수집으로 저장 NAND 플래시 칩(475b)으로부터 버퍼 NAND 플래시 칩(470b)으로 복사되고, 그리고 후속하여 다시 저장 NAND 플래시 칩(475b)으로 복사되는 스테이지(510)를 포함한다. 동작들(500)은, 인입 데이터가 버퍼 NAND 플래시 칩(470b) 및 저장 NAND 플래시 칩(475b)에 기입되고, 그리고 데이터가 가비지 수집으로 저장 NAND 플래시 칩(475c)으로부터 버퍼 NAND 플래시 칩(470a)으로 복사되고, 그리고 후속하여 다시 저장 NAND 플래시 칩(475c)으로 복사되는 스테이지(520)를 포함한다. 동작들(500)은, 인입 데이터가 버퍼 NAND 플래시 칩(470a) 및 저장 NAND 플래시 칩(475c)에 기입되고, 그리고 버퍼 NAND 플래시 칩(470b)이 저장 NAND 플래시 칩(475d)으로부터 복사된 데이터를 수신하는 스테이지(530)를 포함한다. 버퍼 NAND 플래시 칩들(470)은 버퍼(580) 박스에 의해 표시된다. 각각의 NAND 플래시 칩(470 또는 475)이 현재 수행하고 있는 동작은 약어에 의해 표시된다. "PW"는 "주 기입(primary write)"을 나타내고 그리고 저장 NAND 플래시 칩(475)이 데이터를 수신하고 기입 동작들을 수행하도록 현재 지정된 것을 표시한다. "SW"는 "보조 기입(secondary write)"을 나타내고 그리고 버퍼 NAND 플래시 칩(470)이 또한 데이터를 수신하고 기입 동작들을 수행하도록 현재 지정된 것을 표시한다. "FPW"는 "미래 주 기입(future primary write)"을 나타내고 그리고 NAND 플래시 칩(475)이 데이터를 수신하고 기입 동작들을 수행하는 미래 서비스를 위해 준비되도록 지정된 것을 표시한다. "FSW"는 "미래 보조 기입(future secondary write)"을 나타내고 그리고 NAND 플래시 칩(470)이 데이터를 수신하고 기입 동작들을 수행하는 미래 서비스를 위해 준비되도록 지정된 것을 표시한다. "RO"는 "판독-전용(read-only)"을 나타내고 그리고 제어기(460)가 판독 동작들을 실행하기 위해 RO 저장 NAND 플래시 칩들(475)만을 호출할 것을 표시한다. 이들 라벨들은 단지 임의적이고, 그리고 특정 시점들에서 다양한 칩들의 동작을 설명하는 목적을 위해서만 할당된다. 동작들(500)의 각각의 상태 사이에서, 각각의 NAND 플래시 칩(470 또는 475)의 역할은, 상이한 NAND 플래시 칩들(470 또는 475)이 데이터를 수신하고 기입 동작들을 수행함에 따라 변화한다.
[0060] 스테이지(510) 동안, 버퍼 NAND 플래시 칩(470a) 및 저장 NAND 플래시 칩(475a)은 화살표들에 의해 표시된 바와 같이, 인입 데이터를 수신 및 기입한다. 버퍼 NAND 플래시 칩(470a) 및 저장 NAND 플래시 칩(475a)은 각각 SW 및 PW 칩들과 동일한 데이터를 수신 및 기입하지만; 이들은 비-오버래핑 시간 기간들 동안 기입 동작들을 수행할 수 있다. 이런 방식으로, PW 및 SW 칩들 둘 모두는 실질적으로 동일한 데이터를 포함하고, 그리고 기입 동작을 수행하고 있지 않은 NAND 플래시 칩은 판독 커맨드에 응답하고 비교적 긴 기입 동작의 완료를 기다릴 필요 없이 즉시 판독 동작을 수행할 수 있다. 일부 구현들에서, PW 및 SW 칩들은, 이들이 가득차거나 실질적으로 가득찰 때까지 데이터를 수신하고 기입 동작들을 수행하는 것을 계속할 수 있다. 한편, FPW 저장 NAND 플래시 칩(475b)은 다음 스테이지(520)에서 외부 데이터를 수신하는 준비로 자신의 데이터를 FSW 버퍼 NAND 플래시 칩(470b)에 복사한다. 복사 동작 동안, NAND 플래시 저장 디바이스(450)는 FPW 및 FSW 칩들에 대해 가비지 수집을 수행할 수 있다. 프레그먼트화된 데이터가 FPW 칩으로부터 FSW 칩으로 복사될 때, 프레그먼트화된 데이터는 연속적인 또는 실질적으로 연속적인 메모리 공간에서 FSW 칩에 기입되도록 통합되고, 자유 공간은 제2 연속적인 또는 실질적으로 연속적인 메모리 공간에서 유사하게 통합된다. 이것은 데이터 표현을 더 컴팩트하게 하고 결국에 새로운 데이터가 다음 스테이지(520)에서 기입될 공간을 남긴다. 모든 유효 데이터가 FPW 칩으로부터 FSW 칩으로 복사된 이후, FPW 상의 자유 공간은 소거되고, 그리고 유효 데이터는 FSW 칩으로부터 FPW 칩으로 다시 복사된다. PW 및 SW 칩들이 자신들의 기입 동작들을 완료하고 FPW 및 FSW 칩들이 자신들의 복사 및 가비지 수집을 완료하였을 때, 동작들(500)은 다음 스테이지(520)로 계속될 수 있다.
[0061] 스테이지(510)(및 또한 스테이지들(520 및 530)) 동안, NAND 플래시 저장 디바이스(450)는 때때로 판독 요청을 수신할 수 있다. 제어기(460)는, 요청된 데이터가 RO 칩 상에 있는지, PW 칩 또는 SW 칩 중 하나에 있는지, 또는 FPW 칩 또는 FSW 칩 중 하나에 있는지에 의존하여 3 개의 방식들 중 하나의 방식으로 판독 요청을 처리할 수 있다. 요청된 데이터가 RO 칩 상에 있다면, 제어기(460)는 간단히 RO 칩에 대한 판독 동작을 실행하고 데이터를 리턴할 수 있고 ― 판독 동작의 실행을 간섭하거나 지연시키는 어떠한 기입 동작도 발생하지 않는다. 요청된 데이터가 PW 또는 SW 칩 상에 있다면, 제어기(460)는, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, PW 칩 또는 SW 칩 중 어느 칩이든 현재 기입 동작을 실행하고 있지 않은 칩에 대해 판독 동작을 실행할 수 있다. 요청된 데이터가 FPW 또는 FSW 칩 상에 있다면, 제어기(460)는, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, FPW 또는 FSW 중 어느 것이든 현재 기입 동작을 실행하고 있지 않은 것에 대해 판독 동작을 실행할 수 있다. 즉, 데이터가 현재 FPW 칩으로부터 FSW 칩으로 가비지 수집으로 복사되면, 제어기(460)는 FSW 칩에 대한 기입 동작들을 실행할 것이고, 따라서 FPW 칩에 대한 판독 동작을 실행할 수 있다. 데이터가 FSW 칩으로부터 FPW 칩으로 다시 복사될 때, 제어기(460)는 FSW 칩에 대한 판독 동작을 실행할 수 있다. 이런 방식으로, 어느 NAND 플래시 칩이 요청된 데이터를 포함하고 어느 NAND 플래시 칩(들)이 기입 동작들을 실행하는지에 무관하게, NAND 플래시 디바이스(450)는 기입 동작 뒤에 판독 동작을 대기시킴으로써 야기되는 과도한 지연 없이 요청된 데이터를 판독 및 리턴할 수 있다.
[0062] 스테이지(520) 동안, 저장 NAND 플래시 칩(475b)은 PW 칩으로서 지정되고, 버퍼 NAND 플래시 칩(470b)은 SW 칩으로서 지정되고, 저장 NAND 플래시 칩(475c)은 FPW 칩으로서 지정되고, 버퍼 NAND 플래시 칩(470a)은 FSW 칩으로서 지정되고, 그리고 저장 NAND 플래시 칩(475a)은 RO로서 지정된다. PW, SW, FPW, 및 FSW 칩들의 기능들은 이전 스테이지(510)에서 동일한 명칭들을 갖지만, 각각의 지정된 역할을 수행하는 상이한 NAND 플래시 칩들을 갖는 칩들에 의해 수행되는 기능들과 유사하다. SW 및 PW 칩들은 화살표들에 의해 표시된 것과 동일한 데이터를 수신 및 기입하지만; 이들 칩들은 비-오버래핑 시간 기간들 동안 기입 동작들을 수행할 수 있어서, 이들은 판독 커맨드에 응답하고, 비교적 긴 기입 동작의 완료를 기다릴 필요 없이 즉시 판독 동작을 수행할 수 있다. 한편, FPW 칩은 다음 스테이지(530)에서 외부 데이터를 수신하는 준비로 자신의 데이터를 FSW 칩에 복사한다. 복사 동작 동안, FPW 및 FSW 칩들은 가비지 수집 동작들을 수행할 수 있다. PW 및 SW 칩들이 자신들의 기입 동작들을 완료하고 FPW 및 FSW 칩들이 자신들의 복사 및 가비지 수집을 완료하였을 때, 동작들(500)은 다음 스테이지(530)로 계속될 수 있다.
[0063] 스테이지(530) 동안, 저장 NAND 플래시 칩(475c)은 PW 칩으로서 지정되고, 버퍼 NAND 플래시 칩(470a)은 SW 칩으로서 지정되고, 저장 NAND 플래시 칩(475d)은 FPW 칩으로서 지정되고, 버퍼 NAND 플래시 칩(470b)은 FSW 칩으로서 지정되고, 그리고 저장 NAND 플래시 칩(475b)은 RO로서 지정된다. PW, SW, FPW, 및 FSW 칩들의 기능들은 이전 스테이지들(510 및 520)에서 동일한 명칭들을 갖지만, 각각의 지정된 역할을 수행하는 상이한 NAND 플래시 칩들을 갖는 칩들에 의해 수행되는 기능들과 유사하다. SW 및 PW 칩들은 화살표들에 의해 표시된 것과 동일한 데이터를 수신 및 기입하지만; 이들 칩들은 비-오버래핑 시간 기간들 동안 기입 동작들을 수행할 수 있어서, 이들은 판독 커맨드에 응답하고, 비교적 긴 기입 동작의 완료를 기다릴 필요 없이 즉시 판독 동작을 수행할 수 있다. 한편, FPW 칩은 다음 스테이지에서 외부 데이터를 수신하는 준비로 자신의 데이터를 FSW 칩에 복사한다. 복사 동작 동안, FPW 및 FSW 칩들은 가비지 수집 동작들을 수행할 수 있다. PW 및 SW 칩들이 자신들의 기입 동작들을 완료하고 FPW 및 FSW 칩들이 자신들의 복사 및 가비지 수집을 완료하였을 때, 동작들(500)은 다음 스테이지로 계속될 수 있다. 동작들(500)은, 저장 NAND 플래시 칩들(475) 모두가 기입될 때까지 이런 방식으로 계속될 수 있고, 이때 동작들(500)은 스테이지(510)에서 시작하여 반복될 수 있다.
[0064] 도 6은 예시적인 구현들에 따른, NAND 버퍼 및 부가적인 NAND 저장부를 갖는 NAND 플래시 저장 디바이스를 사용하는 예시적인 방법(600)을 도시하는 흐름도이다. 방법(600)은 버퍼 NAND 칩들에 의해 제공된 저장 공간을 넘어 NAND 플래시 저장 공간을 제공할 수 있다. 예컨대, 방법(600)은 도 4를 참조하여 이미 설명된 NAND 플래시 저장 디바이스(450)에 의해 수행될 수 있다. NAND 플래시 저장 디바이스(450)는 버퍼 NAND 플래시 칩들(470) 및 저장 NAND 플래시 칩들(475)을 포함할 수 있다. 방법(600)은 제1 저장 NAND 플래시 칩을 주 기입(PW) 칩으로서, 제2 저장 NAND 플래시 칩을 미래 주 기입(FPW) 칩으로서, 제1 버퍼 NAND 플래시 칩을 보조 기입(SW) 칩으로서, 제2 버퍼 NAND 플래시 칩을 미래 보조 기입(FSW) 칩으로서, 그리고 임의의 나머지 NAND 플래시 칩들을 판독-전용(RO)으로서 지정하는 단계를 포함한다. 방법(600)은 입력/출력(I/O) 버스를 통해 데이터를 수신하는 단계를 포함한다(스테이지 620). 방법(600)은, 각각의 NAND 플래시 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 수신된 데이터를 PW 칩 및 SW 칩에 연속으로 기입하는 단계를 포함한다(스테이지 630). 방법(600)은 I/O 버스를 통해 판독 커맨드를 수신하는 단계를 포함한다(스테이지 640). 방법(600)은, 판독 커맨드를 수신하는 것에 대한 응답으로, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, 기입 동작을 현재 실행하고 있지 않은 NAND 플래시 칩으로 데이터를 판독하는 단계를 포함한다(스테이지 650). 방법(600)은 유효 데이터를 FPW 칩으로부터 FSW 칩으로 복사하는 단계를 포함한다(스테이지 660). 방법(600)은, 수신된 데이터의 기입 및 유효 데이터의 복사 다음에, 제1 저장 NAND 플래시 칩을 RO로서, 제2 저장 NAND 플래시 칩을 PW 칩으로서, 제1 버퍼 NAND 플래시 칩을 FSW 칩으로서, 그리고 제2 버퍼 NAND 플래시 칩을 SW 칩으로서 지정하는 단계를 포함한다(스테이지 670).
[0065] 방법(600)은 제1 저장 NAND 플래시 칩을 주 기입 칩으로서, 제2 저장 NAND 플래시 칩을 미래 주 기입 칩으로서, 제1 버퍼 NAND 플래시 칩을 보조 기입 칩으로서, 제2 버퍼 NAND 플래시 칩을 미래 보조 기입 칩으로서, 그리고 임의의 나머지 NAND 플래시 칩들을 판독-전용(RO)으로서 지정하는 단계를 포함한다.
[0066] 방법(600)은 I/O 버스를 통해 데이터를 수신하는 단계를 포함한다(스테이지 620). 스테이지(620)는 이미 설명된 스테이지(310)와 유사할 수 있다.
[0067] 방법(600)은, 각각의 NAND 플래시 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 수신된 데이터를 PW 칩 및 SW 칩에 연속으로 기입하는 단계를 포함한다(스테이지 630). 스테이지(630)는 이미 설명된 스테이지(320)와 유사할 수 있다. 일부 구현들에서, 수신 스테이지(620) 및 기입 스테이지(630)는, 제 PW 칩 및 SW 칩이 가득차거나 실질적으로 가득 찰 때까지 반복될 수 있다.
[0068] 방법(600)은 I/O 버스를 통해 판독 커맨드를 수신하는 단계를 포함한다(스테이지 640). 스테이지(630)는 이미 설명된 스테이지(430)와 유사할 수 있다.
[0069] 방법(600)은, 판독 커맨드를 수신하는 것에 대한 응답으로, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, 기입 동작을 현재 실행하고 있지 않은 NAND 플래시 칩으로부터 데이터를 판독하는 단계를 포함한다(스테이지 650). 스테이지(650)는 이미 설명된 스테이지(340)와 유사할 수 있다. 실제로, 요청된 데이터는 RO 칩 상에, PW 칩 또는 SW 칩 중 하나 상에, 또는 FPW 칩 또는 FSW 칩 중 하나 상에 상주할 수 있다. 제어기는, 요청된 데이터가 상주하는 장소에 의존하여 3 개의 방식들 중 하나의 방식으로 판독 요청을 처리할 수 있다. 요청된 데이터가 PW 또는 SW 칩 상에 있다면, 제어기는, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, PW 칩 또는 SW 칩 중 어느 칩이든 현재 기입 동작을 실행하고 있지 않은 칩에 대해 판독 동작을 실행할 수 있고, 방법(600)은 다음 스테이지로 진행할 수 있다. 요청된 데이터가 RO 칩 상에 있다면, 제어기는 간단히 RO 칩에 대한 판독 동작을 실행하고 데이터를 리턴할 수 있고 ― 판독 동작의 실행을 간섭하거나 지연시키는 어떠한 기입 동작도 발생하지 않는다. 요청된 데이터가 FPW 또는 FSW 칩 상에 있다면, 제어기는, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, FPW 또는 FSW 중 어느 것이든 현재 기입 동작을 실행하고 있지 않은 것에 대해 판독 동작을 실행할 수 있다. 즉, 데이터가 현재 FPW 칩으로부터 FSW 칩으로 가비지 수집으로 복사되면, 제어기(460)는 FSW 칩에 대한 기입 동작들을 실행할 것이고, 따라서 FPW 칩에 대한 판독 동작을 실행할 수 있다. 데이터가 FSW 칩으로부터 FPW 칩으로 다시 복사될 때, 제어기는 FSW 칩에 대한 판독 동작을 실행할 수 있다. 이런 방식으로, 어느 NAND 플래시 칩이 요청된 데이터를 포함하고 어느 NAND 플래시 칩(들)이 기입 동작들을 실행하는지에 무관하게, NAND 플래시 디바이스는 기입 동작 뒤에 판독 동작을 대기시킴으로써 야기되는 과도한 지연 없이 요청된 데이터를 판독 및 리턴할 수 있다. 이런 방식으로, 스테이지들(640 및 650)은 스테이지들(620 및 630)과 동시에 진행될 수 있고, 그리고 판독 동작들은 더 느린 기입 동작들 뒤에 대기하지 않고 즉시 프로세싱될 수 있다. 스테이지들(620 내지 650)은, 부가적인 데이터 및 판독 커맨드들이 I/O 버스를 통해 수신될 때 반복될 수 있다.
[0070] 방법(600)은 유효 데이터를 FPW 칩으로부터 FSW 칩으로 복사하는 단계를 포함한다(스테이지 660). 일부 구현들에서, 복사 동작 동안, FPW 및 FSW 칩들은 각각 유효 데이터 및 자유 공간을 통합하기 위해 가비지 수집을 수행할 수 있다. 예컨대, NAND 플래시 저장 디바이스는 먼저, 유효 데이터 및 자유 공간이 각각 FSW 칩의 실질적으로 인접한 개별 메모리 공간들을 점유하도록, 유효 데이터를 FPW 칩으로부터 FSW 칩으로 복사할 수 있다. NAND 플래시 저장 디바이스는, 유효 데이터 및 자유 공간이 각각 FPW 칩의 실질적으로 인접한 개별 메모리 공간들을 점유하도록, 유효 데이터를 FSW 칩으로부터 다시 FPW 칩으로 복사할 수 있다. NAND 플래시 저장 디바이스는 자유 공간에 의해 점유된 FPW 및 FSW 칩들의 메모리 공간들을 소거할 수 있다. 스테이지(660)의 복사 동작들은 스테이지들(620 및 630)의 버퍼링 동작들과 오버래핑하는 시간 기간 동안 수행될 수 있다. 게다가, 판독 커맨드들은, FPW 및 FSW 중 어느 것이든 복사 동작들의 일부로서 기입 동작들을 현재 실행하고 있지 않은 것에 의해 수신 및 실행될 수 있다. 이런 방식으로, 스테이지(660)의 복사 동작들은 또한 스테이지들(640 및 650)의 판독 동작들과 오버래핑하는 시간 기간 동안 수행될 수 있다.
[0071] 방법(600)은, 수신된 데이터의 기입 및 유효 데이터의 복사 다음에, 제1 저장 NAND 플래시 칩을 RO로서, 제2 저장 NAND 플래시 칩을 PW 칩으로서, 제1 버퍼 NAND 플래시 칩을 FSW 칩으로서, 그리고 제2 버퍼 NAND 플래시 칩을 SW 칩으로서 지정하는 단계를 포함한다(스테이지 670). 방법(600)의 스테이지들은, 부가적인 데이터 및 판독 커맨드들이 I/O 버스를 통해 수신될 때 반복될 수 있다. 일부 구현들에서, 각각의 특정 NAND 플래시 칩에 의해 수행되는 역할은, 상이한 NAND 플래시 칩들이 상이한 시간들에서 상이한 버퍼 및 저장 기능들을 수행하는 것으로 순환될 수 있다.
[0072] 도 7은 예시적인 구현들에 따른, 마모 레벨링에 대한 교대 NAND 버퍼를 갖는 예시적인 NAND 플래시 저장 디바이스(750)의 블록도이다. NAND 플래시 저장 디바이스(750)는 I/O 버스(730)를 통해 수신된 판독 및 기입 커맨드들을 프로세싱하기 위한 제어기(760)를 포함한다. 제어기(760)는 RAM(765)을 포함할 수 있거나, 메모리 버스를 통해 RAM(765)과 통신할 수 있다. 제어기(760)는 프로그램가능 로직, 이를테면 ASIC(application-specific integrated circuit), FPGA(field-programmable gate array), 마이크로제어기, 또는 마이크로프로세서를 포함할 수 있다. 제어기(760)는 NAND 플래시 저장 디바이스(750)와 일체형이거나, 외부에 있을 수 있다. NAND 플래시 저장 디바이스(750)는 NAND 플래시 칩들(770a 내지 770f)(총칭해서, "NAND 플래시 칩들(770)")을 포함한다. 일부 구현들에서, NAND 플래시 저장 디바이스(750)는 더 많거나 더 적은 NAND 플래시 칩들(770)을 포함할 수 있다. 일부 구현들에서, NAND 플래시 저장 디바이스(750)는, 데이터가 NAND 플래시 칩들(770) 중 하나 이상에 기입되는 동안, I/O 버스(730)를 통해 수신된 데이터를 버퍼링하기 위해 RAM(765)을 사용할 수 있다. NAND 플래시 저장 디바이스(750)는 버퍼링에 사용된 NAND 플래시 칩들(770)을 때때로 변경함으로써 마모 레벨을 이용할 수 있다. 예컨대, 제1 동작 스테이지 동안, NAND 플래시 칩들(770a 및 770b)은 NAND 버퍼들로서 역할을 할 수 있고, 제어기(760)는 차례로 데이터를 각각의 NAND 플래시 칩들(770a 및 770b)에 기입한다. NAND 플래시 저장 디바이스(750)의 예시적인 동작들은 도 8을 참조하여 아래에서 더 상세히 설명된다.
[0073] 도 8은 예시적인 구현들에 따른, 마모 레벨링을 이용하는 교대 NAND 버퍼를 갖는 NAND 플래시 저장 디바이스의 동작들(800)의 예를 도시한다. 이들 동작들은 NAND 플래시 저장 디바이스, 이를테면 이미 설명된 NAND 플래시 저장 디바이스(750)에 의해 수행될 수 있다. 동작들(800)은, 인입 데이터가 NAND 플래시 칩들(770a 및 770c)에 기입되는 한편, 데이터가 가비지 수집으로 NAND 플래시 칩(770d)으로부터 NAND 플래시 칩(770b)으로 복사되고 그리고 후속하여 다시 NAND 플래시 칩(770d)으로 복사되는 스테이지(810)를 포함한다. 동작들(800)은, 인입 데이터가 NAND 플래시 칩들(770b 및 770d)에 기입되는 한편, 데이터가 가비지 수집으로 NAND 플래시 칩(770e)으로부터 NAND 플래시 칩(770c)으로 복사되고 그리고 후속하여 다시 NAND 플래시 칩(770e)으로 복사되는 스테이지(820)를 포함한다. 동작들(800)은, 인입 데이터가 NAND 플래시 칩들(770c 및 770e)에 기입되는 한편, 데이터가 가비지 수집으로 NAND 플래시 칩(770f)으로부터 NAND 플래시 칩(770d)으로 복사되고 그리고 후속하여 다시 NAND 플래시 칩(770f)으로 복사되는 스테이지(830)를 포함한다. 각각의 동작(800) 동안, 보조 기입 및 미래 보조 기입 NAND 플래시 칩들(770)은 버퍼 NAND 플래시 칩들로 고려되고, 그리고 버퍼(880) 박스에 의해 표시된다. 각각의 NAND 플래시 칩(770)이 현재 수행하고 있는 동작은 약어에 의해 표시된다. "PW"는 "주 기입"을 나타내고 그리고 NAND 플래시 칩(770)이 현재 데이터를 수신하고 기입 동작들을 수행하는 것을 표시한다. "SW"는 "보조 기입"을 나타내고 그리고 NAND 플래시 칩(770)이 버퍼 NAND 플래시 칩들 중 하나로서 현재 데이터를 수신하고 기입 동작들을 수행하는 것을 표시한다. "FPW"는 "미래 주 기입"을 나타내고 그리고 NAND 플래시 칩(770)이 자신의 데이터를 미래 보조 기입 칩에 복사함으로써 주 기입 칩으로서 미래 서비스를 위해 준비되는 것을 표시한다. "FSW"는 "미래 보조 기입"을 나타내고 그리고 NAND 플래시 칩(770)이 SW 버퍼 NAND 플래시 칩으로서 미래 서비스를 위한 준비로 FPW 칩으로부터 데이터를 수신하는 것을 표시한다. "RO"는 "판독-전용"을 나타내고 그리고 제어기(760)가 판독 동작들을 실행하기 위해 RO NAND 플래시 칩(770)만을 호출할 것을 표시한다. 이들 라벨들은 단지 임의적이고, 그리고 주어진 동작 스테이지(800) 동안 다양한 칩들의 기능을 설명하는 목적을 위해서만 할당된다. 동작들의 각각의 스테이지(800) 사이에서, 각각의 NAND 플래시 칩(770)의 역할은 이용가능한 NAND 플래시 칩들(770)을 통해 교대되는 버퍼(880) 박스 및 각각의 칩 아래 라벨들에 의해 표시된 바와 같이 변경될 수 있다.
[0074] 스테이지(810) 동안, NAND 플래시 칩(770a)은 SW 칩으로서 역할을 하고, NAND 플래시 칩(770b)은 FSW 칩으로서 역할을 하고, NAND 플래시 칩(770c)은 PW 칩으로서 역할을 하고, NAND 플래시 칩(770d)은 FPW 칩으로서 역할을 하고, 그리고 나머지 NAND 플래시 칩들은 RO 칩들로서 역할을 한다. 인입 데이터는 NAND 플래시 칩들(770a 및 770c) ― 각각 SW 및 PW 칩들 ― 에 기입된다. 한편, 데이터는 가비지 수집으로 NAND 플래시 칩(770d)으로부터 NAND 플래시 칩(770b) ― 각각 FPW 칩 및 FSW 칩 ― 으로 복사되고 그리고 후속하여 다시 NAND 플래시 칩(770b)에 복사된다. 스테이지(810) 동안, 버퍼(880)는 NAND 플래시 칩들(770a 및 770b)을 포함한다. NAND 플래시 칩(770b)은 NAND 플래시 칩(770d)으로부터 데이터의 복사본(copy)을 수신하여, 판독 동작들을 실행하기 위해 적어도 부분적으로 이용가능하지 않을 수 있고, 그리고 제어기(760)에 의해 복사 동작과 연관되지 않은 판독 또는 기입 동작들을 실행하는 것이 확실하게 방지될 수 있다. 가비지 수집은 복사 동작 동안 수행될 수 있다. 이것은, 유효 데이터만이 복사되고 유효하지 않은 데이터에 의해 남겨진 임의의 갭들이 그 프로세스에서 제거되는 것을 의미한다. 이것은 데이터 표현을 더 컴팩트하게 하고 결국에 새로운 데이터가 다음 스테이지에서 기입될 공간을 남긴다. 일부 구현들에서, NAND 플래시 칩(770b)에서 데이터의 이런 컴팩트화된 형태는 NAND 플래시 칩(770d)에 다시 복사될 수 있다. NAND 플래시 칩들(770e 및 770f)뿐 아니라 도시되지 않은 임의의 다른 NAND 플래시 칩들(770)은 RO 칩들로서 역할을 할 수 있다. 적절한 시간에, 제어기(760)는 NAND 플래시 칩(770) 명칭들을 업데이트하고 동작들(800)의 스테이지(820)로 진행될 수 있다. 이것은, 미리 결정된 수의 기입 동작들이 수행된 이후, 또는 미리 결정된 시간 간격 다음에, 버퍼 NAND 플래시 칩들(770a 및 770c)이 가득차거나 실질적으로 가득차게 된다.
[0075] 스테이지(810)(및 또한 스테이지들(820 및 830)) 동안, NAND 플래시 저장 디바이스(750)는 때때로 판독 요청을 수신할 수 있다. 제어기(760)는, 요청된 데이터가 RO 칩 상에 있는지, PW 칩 또는 SW 칩 중 하나에 있는지, 또는 FPW 칩 또는 FSW 칩 중 하나에 있는지에 의존하여 3 개의 방식들 중 하나의 방식으로 판독 요청을 처리할 수 있다. 요청된 데이터가 RO 칩 상에 있다면, 제어기(760)는 간단히 RO 칩에 대한 판독 동작을 실행하고 데이터를 리턴할 수 있고 ― 판독 동작의 실행을 간섭하거나 지연시키는 어떠한 기입 동작도 발생하지 않는다. 요청된 데이터가 PW 또는 SW 칩 상에 있다면, 제어기(760)는, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, PW 칩 또는 SW 칩 중 어느 칩이든 현재 기입 동작을 실행하고 있지 않은 칩에 대해 판독 동작을 실행할 수 있다. 요청된 데이터가 FPW 또는 FSW 칩 상에 있다면, 제어기(760)는, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, FPW 또는 FSW 중 어느 것이든 현재 기입 동작을 실행하고 있지 않은 것에 대해 판독 동작을 실행할 수 있다. 즉, 데이터가 현재 FPW 칩으로부터 FSW 칩으로 가비지 수집으로 복사되면, 제어기(760)는 FSW 칩에 대한 기입 동작들을 실행할 것이고, 따라서 FPW 칩에 대한 판독 동작을 실행할 수 있다. 데이터가 FSW 칩으로부터 FPW 칩으로 다시 복사될 때, 제어기(760)는 FSW 칩에 대한 판독 동작을 실행할 수 있다. 이런 방식으로, 어느 NAND 플래시 칩이 요청된 데이터를 포함하고 어느 NAND 플래시 칩(들)이 기입 동작들을 실행하는지에 무관하게, NAND 플래시 디바이스(750)는 기입 동작 뒤에 판독 동작을 대기시킴으로써 야기되는 과도한 지연 없이 요청된 데이터를 판독 및 리턴할 수 있다.
[0076] 스테이지(820) 동안, NAND 플래시 칩(770b)은 SW 칩으로서 역할을 하고, NAND 플래시 칩(770c)은 FSW 칩으로서 역할을 하고, NAND 플래시 칩(770d)은 PW 칩으로서 역할을 하고, NAND 플래시 칩(770e)은 FPW 칩으로서 역할을 하고, 그리고 나머지 NAND 플래시 칩들은 RO 칩들로서 역할을 한다. 인입 데이터는 NAND 플래시 칩들(770b 및 770d)에 기입되고, 그리고 데이터는 가비지 수집으로 NAND 플래시 칩(770e)으로부터 NAND 플래시 칩(770c)으로 복사되고, 그리고 후속하여 다시 NAND 플래시 칩(770e)으로 복사된다. NAND 플래시 칩(770a)은 RO 칩으로서 지정되고, 그리고 기입 동작들로부터 중단 없이 판독 동작들을 실행하기 위해 이용가능하다. 버퍼(880)는 이제 NAND 플래시 칩들(770b 및 770c)을 포함한다. NAND 플래시 칩(770c)이 이미 PW 칩으로서 역할을 하였기 때문에, 포함된 데이터는, 데이터가 또한 이전 SW에 이미 기입되었으므로 고유하지 않을 것이다. 따라서, NAND 플래시 칩(770c)은 다음 동작 스테이지에서 SW로 지정될 준비를 위해 NAND 플래시 칩(770e)으로부터 복제 데이터를 수신할 수 있다. 복사 동작 동안, NAND 플래시 칩들(770c 및 770e)은 가비지 수집 동작들을 수행할 수 있다.
[0077] 스테이지(830) 동안, NAND 플래시 칩(770c)은 SW 칩으로서 역할을 하고, NAND 플래시 칩(770d)은 FSW 칩으로서 역할을 하고, NAND 플래시 칩(770e)은 PW 칩으로서 역할을 하고, NAND 플래시 칩(770f)은 FPW 칩으로서 역할을 하고, 그리고 나머지 NAND 플래시 칩들은 RO 칩들로서 역할을 한다. 인입 데이터는 NAND 플래시 칩들(770c 및 770e)에 기입되는 한편, 데이터는 가비지 수집으로 NAND 플래시 칩(770f)으로부터 NAND 플래시 칩(770d)으로 복사되고 그리고 후속하여 다시 NAND 플래시 칩(770f)으로 복사된다. NAND 플래시 칩(770b)은 RO 칩으로서 지정되고, 그리고 기입 동작들로부터 중단 없이 판독 동작들을 실행하기 위해 이용가능하다. 버퍼(880)는 이제 NAND 플래시 칩들(770c 및 770d)을 포함한다. NAND 플래시 칩(770d)이 이미 PW 칩으로서 역할을 하였기 때문에, 포함된 데이터는, 데이터가 또한 이전 SW에 이미 기입되었으므로 고유하지 않을 것이다. 따라서, NAND 플래시 칩(770d)은 다음 동작 스테이지에서 SW로 지정될 준비를 위해 NAND 플래시 칩(770f)으로부터 복제 데이터를 수신할 수 있다.
[0078] 부가적인 스테이지들은 이용가능한 NAND 플래시 칩들(770) 중 일부 또는 모두 사이에 마모를 확산시키기 위해 이런 방식으로 무기한 진행될 수 있다. 이들 동작들을 수행할 때, NAND 플래시 저장 디바이스(750)는 각각 수신된 데이터의 페이지를 NAND 플래시 칩들(770)에 2 회 기입하여, 가해진 마모의 양을 2 배화시킬 것이지만; 마모가 많은 NAND 플래시 칩들(770)에 걸쳐 고르게 확산될 때, 이런 부가적인 마모의 양은 허용가능할 수 있다.
[0079] 도 9는 예시적인 구현들에 따른, 마모 레벨링에 대한 교대 NAND 버퍼를 갖는 NAND 플래시 저장 디바이스를 사용하는 예시적인 방법(900)을 도시하는 흐름도이다. 예컨대, 방법(900)은 도 7을 참조하여 이미 설명된 NAND 플래시 저장 디바이스(750)에 의해 수행될 수 있다. 방법(900)은, 기입 동작들을 실행함으로써 야기되는 마모를 분배하고 적은 수의 NAND 플래시 칩들에 대해 기입 동작들을 집중함으로써 잠재적으로 야기되는 고장들을 회피시키기 위해, 이용가능한 NAND 플래시 칩들을 통해 교대하여, 차례로 각각을 버퍼 NAND 칩으로서 지정할 수 있다. 방법(900)은 제1 NAND 플래시 칩을 보조 기입(SW) 칩으로서, 제2 NAND 플래시 칩을 미래 보조 기입(FSW) 칩으로서, 제3 NAND 플래시 칩을 주 기입(PW) 칩으로서, 그리고 제4 NAND 플래시 칩을 미래 주 기입(FPW) 칩으로서 지정하는 단계를 포함한다(스테이지 910). 방법(900)은 입력/출력(I/O) 버스를 통해 데이터를 수신하는 단계를 포함한다(스테이지 920). 방법(900)은, 각각의 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 수신된 데이터를 PW 칩 및 SW 칩에 연속으로 기입하는 단계를 포함한다(스테이지 930). 방법(900)은 I/O 버스를 통해 판독 커맨드를 수신하는 단계를 포함한다(스테이지 940). 방법(900)은, 판독 커맨드를 수신하는 것에 대한 응답으로, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, 기입 동작을 현재 실행하고 있지 않은 NAND 플래시 칩으로부터 데이터를 판독하는 단계를 포함한다(스테이지 950). 방법(900)은 유효 데이터를 FPW 칩으로부터 FSW 칩으로 복사하는 단계를 포함한다(스테이지 960). 방법(900)은, 수신된 데이터의 기입 및 유효 데이터의 복사 다음에, 제1 NAND 플래시 칩을 판독-전용으로서, 제2 NAND 플래시 칩을 SW 칩으로서, 제3 NAND 플래시 칩을 FSW 칩으로서, 그리고 제4 버퍼 NAND 플래시 칩을 PW 칩으로서 지정하는 단계를 포함한다(스테이지 970).
[0080] 방법(900)은 제1 NAND 플래시 칩을 SW 칩으로서, 제2 NAND 플래시 칩을 FSW 칩으로서, 제3 NAND 플래시 칩을 PW 칩으로서, 그리고 제4 NAND 플래시 칩을 FPW 칩으로서 지정하는 단계를 포함한다(스테이지 910). 지정들은 도 8을 참조하여 이미 설명되었다.
[0081] 방법(900)은 I/O 버스를 통해 데이터를 수신하는 단계를 포함한다(스테이지 920). 스테이지(920)는 이미 설명된 스테이지들(310 및 610)과 유사하다.
[0082] 방법(900)은, 각각의 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 수신된 데이터를 PW 칩 및 SW 칩에 연속으로 기입하는 단계를 포함한다(스테이지 930). 스테이지(930)는 이미 설명된 스테이지들(320 및 620)과 유사하다. 일부 구현들에서, 방법(900)은, 스테이지(950)로 전진하기 전에 PW 칩 및 SW 칩이 가득차거나 실질적으로 가득찰 때까지 스테이지(920)의 수신 동작들 및 스테이지(930)의 기입 동작들을 계속 수행할 수 있다. 아래에서 설명된 스테이지들(940 및 950)의 동작들은 스테이지들(920 및 930)의 동작들과 동시에 수행될 수 있다.
[0083] 방법(900)은 I/O 버스를 통해 판독 커맨드를 수신하는 단계를 포함한다(스테이지 940). 스테이지(940)는 이미 설명된 스테이지들(330 및 640)과 유사하다.
[0084] 방법(900)은, 판독 커맨드를 수신하는 것에 대한 응답으로, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, 기입 동작을 현재 실행하고 있지 않은 NAND 플래시 칩으로부터 데이터를 판독하는 단계를 포함한다(스테이지 950). 스테이지(950)는 이미 설명된 스테이지들(340 및 650)과 유사하다. 실제로, 요청된 데이터는 RO 칩 상에, PW 칩 또는 SW 칩 중 하나 상에, 또는 FPW 칩 또는 FSW 칩 중 하나 상에 상주할 수 있다. 제어기는, 요청된 데이터가 상주하는 장소에 의존하여 3 개의 방식들 중 하나의 방식으로 판독 요청을 처리할 수 있다. 요청된 데이터가 PW 또는 SW 칩 상에 있다면, 제어기는, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, PW 칩 또는 SW 칩 중 어느 칩이든 현재 기입 동작을 실행하고 있지 않은 칩에 대해 판독 동작을 실행할 수 있고, 방법(600)은 다음 스테이지로 진행할 수 있다. 요청된 데이터가 RO 칩 상에 있다면, 제어기는 간단히 RO 칩에 대한 판독 동작을 실행하고 데이터를 리턴할 수 있고 ― 판독 동작의 실행을 간섭하거나 지연시키는 어떠한 기입 동작도 발생하지 않는다. 요청된 데이터가 FPW 또는 FSW 칩 상에 있다면, 제어기는, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, FPW 또는 FSW 중 어느 것이든 현재 기입 동작을 실행하고 있지 않은 것에 대해 판독 동작을 실행할 수 있다. 즉, 데이터가 현재 FPW 칩으로부터 FSW 칩으로 가비지 수집으로 복사되면, 제어기(460)는 FSW 칩에 대한 기입 동작들을 실행할 것이고, 따라서 FPW 칩에 대한 판독 동작을 실행할 수 있다. 데이터가 FSW 칩으로부터 FPW 칩으로 다시 복사될 때, 제어기는 FSW 칩에 대한 판독 동작을 실행할 수 있다. 이런 방식으로, 어느 NAND 플래시 칩이 요청된 데이터를 포함하고 어느 NAND 플래시 칩(들)이 기입 동작들을 실행하는지에 무관하게, NAND 플래시 디바이스는 기입 동작 뒤에 판독 동작을 대기시킴으로써 야기되는 과도한 지연 없이 요청된 데이터를 판독 및 리턴할 수 있다. 이런 방식으로, 스테이지들(940 및 950)은 스테이지들(920 및 930)과 동시에 진행될 수 있고, 그리고 판독 동작들은 더 느린 기입 동작들 뒤에 대기하지 않고 즉시 프로세싱될 수 있다. 스테이지들(920 내지 950)은, 부가적인 데이터 및 판독 커맨드들이 I/O 버스를 통해 수신될 때 반복될 수 있다.
[0085] 방법(900)은 유효 데이터를 FPW 칩으로부터 FSW 칩으로 복사하는 단계를 포함한다(스테이지 960). 이후 스테이지에서 버퍼 NAND 칩들로서 역할을 하도록 2 개의 새로운 NAND 플래시 칩들을 준비하기 위해, 방법(900)은 하나의 NAND 플래시 칩으로부터 다른 NAND 플래시 칩으로 데이터를 복사할 수 있다. 복사 소스는 지정된 FPW 칩일 수 있고 복사 목적지는 지정된 FSW 칩일 수 있다. 일부 구현들에서, 복사 동작은 양방향성일 수 있고; 즉, 데이터는 FPW 칩과 FSW 칩 사이에서 조화될 수 있어서, 이들 칩 각각은 서로의 데이터의 복제본을 포함한다. 복사 동작 동안, FSW 칩 및 FPW 칩은 유효하지 않거나 더 이상 필요하지 않은 데이터 및 데이터의 자유 공간을 통합하기 위해 가비지 수집 동작들을 수행할 수 있다. 스테이지(960)의 복사 동작들은 스테이지들(920 및 930)의 버퍼링 동작들과 오버래핑하는 시간 기간 동안 수행될 수 있다. 게다가, 판독 커맨드들은 FPW 및 FSW 중 어느 것이든 현재 복사 동작들의 일부로서 기입 동작들을 현재 실행하고 있지 않은 것에 의해 수신 및 실행될 수 있다. 이런 방식으로, 스테이지(960)의 복사 동작들은 또한 스테이지들(940 및 950)의 판독 동작들과 오버래핑하는 시간 기간 동안 수행될 수 있다.
[0086] 방법(900)은, 수신된 데이터의 기입 및 유효 데이터의 복사 다음에, 제1 NAND 플래시 칩을 판독-전용 칩으로서, 제2 NAND 플래시 칩을 SW 칩으로서, 제3 NAND 플래시 칩을 FSW 칩으로서, 그리고 제4 버퍼 NAND 플래시 칩을 PW 칩으로서 지정하는 단계를 포함한다(스테이지 970). FPW 칩 및 FSW 칩이 복제 데이터를 포함하면, 이들 칩은 각각 PW 칩 및 SW 칩으로서 대체할 준비가 될 것이다. 버퍼 NAND 플래시 칩들이 여전히 기입 동작들을 처리하는 동안 복사 동작들이 수행될 수 있는 한, NAND 플래시 저장 디바이스(770)는 지연 없이 지정들을 스위칭하고 기입 대역폭의 큰 손실 없이 기입 동작들을 계속 실행할 수 있다.
[0087] 일부 구현들에서, 교대(rotation)는 연속적일 수 있다. 예컨대, 제어기(760)는 제5 NAND 플래시 칩(770e)을 FPW 칩으로 지정할 수 있다. 제어기(760)는, 각각의 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, I/O 버스(730)를 통해 수신된 제2 데이터를 PW 칩 및 SW 칩에 기입할 수 있다. 제어기(760)는 제2 유효 데이터를 FPW 칩으로부터 FSW 칩으로 복사할 수 있다. 그리고, 수신된 제2 데이터의 기입 및 제2 유효 데이터의 복사 다음에, 제어기(760)는 제2 NAND 플래시 칩을 판독-전용으로서, 제3 NAND 플래시 칩을 SW 칩으로서, 제4 NAND 플래시 칩을 FSW 칩으로서, 제5 NAND 플래시 칩을 PW 칩으로서, 그리고 제6 NAND 플래시 칩을 FPW 칩으로서 지정할 수 있다.
[0088] 본 명세서가 많은 특정 구현 세부사항들을 포함하지만, 이들은 임의의 발명들 또는 청구될 수 있는 바의 범위에 대한 제한들로서 해석되어지는 것이 아니라, 오히려 특정 발명들의 특정 구현들에 특정한 특징들의 설명들로서 해석되어야 한다. 별개의 구현들의 맥락에서 본 명세서에 설명된 소정의 특징들은 또한 단일 구현들에서 조합으로 구현될 수 있다. 반대로, 단일 구현의 맥락에서 설명된 다양한 특징들은 또한 다수의 구현들에서 개별적으로 또는 임의의 적합한 서브조합으로 구현될 수 있다. 게다가, 비록 특징들이 소정의 조합들로 작용하고 심지어 그러한 것으로서 처음에 청구된 것으로 위에서 설명될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우들에서 조합으로부터 제거될 수 있고, 그리고 청구된 조합은 서브조합 또는 서브조합의 변형으로 지향될 수 있다.
[0089] "또는"에 대한 언급들은, "또는"을 사용하여 설명된 임의의 용어들이 단일, 하나 초과, 및 설명된 용어들 모두 중 임의의 것을 표시할 수 있도록 포괄적인 것으로 해석될 수 있다. "제1", "제2", "제3" 등의 라벨들은 본질적으로 순서를 표시하기 위한 것이 아니며 일반적으로 단지 동일하거나 유사한 아이템들 또는 엘리먼트들 사이를 구별하는 데 사용된다.
[0090] 본 개시내용에 설명된 구현들에 대한 다양한 수정들은 당업자들에게 쉽게 명백할 수 있고, 그리고 본원에서 정의된 일반적인 원리들은 본 개시내용의 사상 또는 범위에서 벗어나지 않고 다른 구현들에 적용될 수 있다. 따라서, 청구항들은 본원에 도시된 구현들에 제한되도록 의도되는 것이 아니라, 본 개시내용, 본원에 개시된 원리들 및 새로운 특징들과 일치하는 가장 넓은 범위에 부합되어야 한다.

Claims (20)

  1. NAND 플래시 저장 디바이스로서,
    제1 NAND 플래시 칩, 제2 NAND 플래시 칩, 제3 NAND 플래시 칩, 및 제4 NAND 플래시 칩을 포함하는, 복수의 NAND 플래시 칩들; 및
    제어기를 포함하고,
    상기 제어기는:
    상기 제1 NAND 플래시 칩을 보조(secondary) 기입 칩으로서, 상기 제2 NAND 플래시 칩을 미래 보조 기입 칩으로서, 상기 제3 NAND 플래시 칩을 주(primary) 기입 칩으로서, 상기 제4 NAND 플래시 칩을 미래 주 기입 칩으로서, 그리고 임의의 나머지 NAND 플래시 칩들을 판독-전용 NAND 플래시 칩들로서 지정하고;
    입력/출력(I/O) 버스를 통해 데이터를 수신하고;
    각각의 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 상기 수신된 데이터를 상기 주 기입 칩 및 상기 보조 기입 칩에 연속으로 기입하고;
    상기 I/O 버스를 통해 판독 커맨드를 수신하고;
    상기 판독 커맨드를 수신하는 것에 대한 응답으로, 판독 동작들이 기입 동작들 뒤에 대기(queue)하지 않도록, 상기 제1 NAND 플래시 칩 또는 상기 제2 NAND 플래시 칩 중 어느 NAND 플래시 칩이든 현재 기입 동작을 실행하고 있지 않은 NAND 플래시 칩으로부터 데이터를 판독하고;
    상기 미래 주 기입 칩으로부터 상기 미래 보조 기입 칩으로 유효 데이터를 복사하고; 그리고
    상기 수신된 데이터의 기입 및 상기 유효 데이터의 복사에 후속하여, 상기 제1 NAND 플래시 칩을 판독-전용으로서, 상기 제2 NAND 플래시 칩을 상기 보조 기입 칩으로서, 상기 제3 NAND 플래시 칩을 상기 미래 보조 기입 칩으로서, 그리고 상기 제4 NAND 플래시 칩을 상기 주 기입 칩으로서 지정하도록
    구성되는,
    NAND 플래시 저장 디바이스.
  2. 삭제
  3. 제1 항에 있어서,
    상기 제어기는:
    상기 수신된 데이터의 기입 및 상기 유효 데이터의 복사에 후속하여:
    제5 NAND 플래시 칩을 상기 미래 주 기입 칩으로서 지정하고;
    각각의 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 상기 I/O 버스를 통해 수신된 제2 데이터를 상기 주 기입 칩 및 상기 보조 기입 칩에 연속으로 기입하고;
    상기 미래 주 기입 칩으로부터 상기 미래 보조 기입 칩으로 제2 유효 데이터를 복사하고; 그리고
    상기 수신된 제2 데이터의 기입 및 상기 제2 유효 데이터의 복사에 후속하여: 상기 제2 NAND 플래시 칩을 판독-전용으로서, 상기 제3 NAND 플래시 칩을 상기 보조 기입 칩으로서, 상기 제4 NAND 플래시 칩을 상기 미래 보조 기입 칩으로서, 그리고 상기 제5 NAND 플래시 칩을 상기 주 기입 칩으로서 지정하도록
    구성되는,
    NAND 플래시 저장 디바이스.
  4. 제1 항에 있어서,
    상기 복사하는 동작은:
    상기 유효 데이터 및 자유 공간이 각각 상기 미래 보조 기입 칩의 실질적으로 인접한 개별 메모리 공간들을 점유하도록, 상기 유효 데이터를 상기 미래 주 기입 칩으로부터 상기 미래 보조 기입 칩으로 복사하는 동작;
    상기 유효 데이터 및 상기 자유 공간이 각각 상기 미래 주 기입 칩의 실질적으로 인접한 개별 메모리 공간들을 점유하도록, 상기 유효 데이터를 상기 미래 보조 기입 칩으로부터 다시(back) 상기 미래 주 기입 칩으로 복사하는 동작; 및
    상기 자유 공간에 의해 점유된 상기 미래 주 기입 칩 및 상기 미래 보조 기입 칩의 메모리 공간들을 소거하는 동작을 포함하는,
    NAND 플래시 저장 디바이스.
  5. 제1 항에 있어서,
    상기 기입 동작 및 상기 복사하는 동작은 오버래핑 시간 기간들 동안 수행되는,
    NAND 플래시 저장 디바이스.
  6. NAND 플래시 저장 디바이스로서,
    제1 버퍼 NAND 플래시 칩 및 제2 버퍼 NAND 플래시 칩을 포함하는, 복수의 버퍼 NAND 플래시 칩들;
    제1 저장 NAND 플래시 칩 및 제2 저장 NAND 플래시 칩을 포함하는, 복수의 저장 NAND 플래시 칩들; 및
    제어기를 포함하고,
    상기 제어기는:
    상기 제1 저장 NAND 플래시 칩을 주 기입 칩으로서, 상기 제2 저장 NAND 플래시 칩을 미래 주 기입 칩으로서, 상기 제1 버퍼 NAND 플래시 칩을 보조 기입 칩으로서, 상기 제2 버퍼 NAND 플래시 칩을 미래 보조 기입 칩으로서, 그리고 임의의 나머지 NAND 플래시 칩들을 판독-전용으로서 지정하고;
    입력/출력(I/O) 버스를 통해 인입 데이터(incoming data)를 수신하고;
    각각의 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 상기 수신된 데이터를 상기 주 기입 칩 및 상기 보조 기입 칩에 연속으로 기입하고;
    상기 I/O 버스를 통해 판독 커맨드를 수신하고;
    상기 판독 커맨드를 수신하는 것에 대한 응답으로, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, 상기 제1 버퍼 NAND 플래시 칩 또는 상기 제1 저장 NAND 플래시 칩 중 어느 NAND 플래시 칩이든 현재 기입 동작을 실행하고 있지 않은 NAND 플래시 칩으로부터 데이터를 판독하고;
    상기 미래 주 기입 칩으로부터 상기 미래 보조 기입 칩으로 유효 데이터를 복사하고; 그리고
    상기 수신된 데이터의 기입 및 상기 유효 데이터의 복사에 후속하여, 상기 제1 저장 NAND 플래시 칩을 판독-전용으로서, 상기 제2 저장 NAND 플래시 칩을 상기 주 기입 칩으로서, 상기 제1 버퍼 NAND 플래시 칩을 상기 미래 보조 기입 칩으로서, 그리고 상기 제2 버퍼 NAND 플래시 칩을 상기 보조 기입 칩으로서 지정하도록
    구성되는,
    NAND 플래시 저장 디바이스.
  7. 삭제
  8. 제6 항에 있어서,
    상기 제어기는:
    상기 수신된 데이터의 기입 및 상기 유효 데이터의 복사에 후속하여:
    제3 저장 NAND 플래시 칩을 상기 미래 주 기입 칩으로서 지정하고;
    각각의 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 상기 I/O 버스를 통해 수신된 제2 데이터를 상기 주 기입 칩 및 상기 보조 기입 칩에 연속으로 기입하고;
    상기 미래 주 기입 칩으로부터 상기 미래 보조 기입 칩으로 제2 유효 데이터를 복사하고; 그리고
    상기 수신된 제2 데이터의 기입 및 상기 제2 유효 데이터의 복사에 후속하여, 상기 제2 저장 NAND 플래시 칩을 판독-전용으로서, 상기 제3 저장 NAND 플래시 칩을 상기 주 기입 칩으로서, 상기 제1 버퍼 NAND 플래시 칩을 상기 보조 기입 칩으로서, 그리고 상기 제2 버퍼 NAND 플래시 칩을 상기 미래 보조 기입 칩으로서 지정하도록
    구성되는,
    NAND 플래시 저장 디바이스.
  9. 제6 항에 있어서,
    상기 복사하는 동작은:
    상기 유효 데이터 및 자유 공간이 각각 상기 미래 보조 기입 칩의 실질적으로 인접한 개별 메모리 공간들을 점유하도록, 상기 유효 데이터를 상기 미래 주 기입 칩으로부터 상기 미래 보조 기입 칩으로 복사하는 동작;
    상기 유효 데이터 및 상기 자유 공간이 각각 상기 미래 주 기입 칩의 실질적으로 인접한 개별 메모리 공간들을 점유하도록, 상기 유효 데이터를 상기 미래 보조 기입 칩으로부터 다시 상기 미래 주 기입 칩으로 복사하는 동작; 및
    상기 자유 공간에 의해 점유된 상기 미래 주 기입 칩 및 상기 미래 보조 기입 칩의 메모리 공간들을 소거하는 동작을 포함하는,
    NAND 플래시 저장 디바이스.
  10. 제6 항에 있어서,
    상기 복수의 버퍼 NAND 플래시 칩들은 단일-레벨 셀(SLC; single-level cell) NAND 플래시 칩들이고; 그리고
    상기 복수의 저장 NAND 플래시 칩들은 트리플-레벨 셀(TLC; triple-level cell) NAND 플래시 칩들인,
    NAND 플래시 저장 디바이스.
  11. NAND 플래시 저장 디바이스를 버퍼링하는 방법으로서,
    제1 NAND 플래시 칩을 보조 기입 칩으로서, 제2 NAND 플래시 칩을 미래 보조 기입 칩으로서, 제3 NAND 플래시 칩을 주 기입 칩으로서, 제4 NAND 플래시 칩을 미래 주 기입 칩으로서, 그리고 임의의 나머지 NAND 플래시 칩들을 판독-전용으로서 지정하는 단계;
    입력/출력(I/O) 버스를 통해 데이터를 수신하는 단계;
    각각의 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 상기 수신된 데이터를 상기 주 기입 칩 및 상기 보조 기입 칩에 연속으로 기입하는 단계;
    상기 I/O 버스를 통해 판독 커맨드를 수신하는 단계;
    상기 판독 커맨드를 수신하는 것에 대한 응답으로, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, 상기 제1 NAND 플래시 칩 또는 상기 제2 NAND 플래시 칩 중 어느 NAND 플래시 칩이든 현재 기입 동작을 실행하고 있지 않은 NAND 플래시 칩으로부터 데이터를 판독하는 단계;
    상기 미래 주 기입 칩으로부터 상기 미래 보조 기입 칩으로 유효 데이터를 복사하는 단계; 및
    상기 수신된 데이터의 기입 및 상기 유효 데이터의 복사에 후속하여, 상기 제1 NAND 플래시 칩을 판독-전용으로서, 상기 제2 NAND 플래시 칩을 상기 보조 기입 칩으로서, 상기 제3 NAND 플래시 칩을 상기 미래 보조 기입 칩으로서, 그리고 상기 제4 NAND 플래시 칩을 상기 주 기입 칩으로서 지정하는 단계를 포함하는,
    NAND 플래시 저장 디바이스를 버퍼링하는 방법.
  12. 삭제
  13. 제11 항에 있어서,
    상기 수신된 데이터의 기입 및 상기 유효 데이터의 복사에 후속하여:
    제5 NAND 플래시 칩을 상기 미래 주 기입 칩으로서 지정하는 단계;
    각각의 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 상기 I/O 버스를 통해 수신된 제2 데이터를 상기 주 기입 칩 및 상기 보조 기입 칩에 연속으로 기입하는 단계;
    상기 미래 주 기입 칩으로부터 상기 미래 보조 기입 칩으로 제2 유효 데이터를 복사하는 단계; 및
    상기 수신된 제2 데이터의 기입 및 상기 제2 유효 데이터의 복사에 후속하여, 상기 제2 NAND 플래시 칩을 판독-전용으로서, 상기 제3 NAND 플래시 칩을 상기 보조 기입 칩으로서, 상기 제3 NAND 플래시 칩을 상기 미래 보조 기입 칩으로서, 상기 제4 NAND 플래시 칩을 상기 주 기입 칩으로서, 그리고 상기 제5 NAND 플래시 칩을 상기 미래 주 기입 칩으로서 지정하는 단계를 포함하는,
    NAND 플래시 저장 디바이스를 버퍼링하는 방법.
  14. 제11 항에 있어서,
    상기 복사하는 동작은:
    상기 유효 데이터 및 자유 공간이 각각 상기 미래 보조 기입 칩의 실질적으로 인접한 개별 메모리 공간들을 점유하도록, 상기 유효 데이터를 상기 미래 주 기입 칩으로부터 상기 미래 보조 기입 칩으로 복사하는 동작;
    상기 유효 데이터 및 상기 자유 공간이 각각 상기 미래 주 기입 칩의 실질적으로 인접한 개별 메모리 공간들을 점유하도록, 상기 유효 데이터를 상기 미래 보조 기입 칩으로부터 다시 상기 미래 주 기입 칩으로 복사하는 동작; 및
    상기 자유 공간에 의해 점유된 상기 미래 주 기입 칩 및 상기 미래 보조 기입 칩의 메모리 공간들을 소거하는 동작을 포함하는,
    NAND 플래시 저장 디바이스를 버퍼링하는 방법.
  15. 제11 항에 있어서,
    상기 기입 동작 및 상기 복사하는 동작은 오버래핑 시간 기간들 동안 수행되는,
    NAND 플래시 저장 디바이스를 버퍼링하는 방법.
  16. NAND 플래시 저장 디바이스를 버퍼링하는 방법으로서,
    제1 저장 NAND 플래시 칩을 주 기입 칩으로서, 제2 저장 NAND 플래시 칩을 미래 주 기입 칩으로서, 제1 버퍼 NAND 플래시 칩을 보조 기입 칩으로서, 제2 버퍼 NAND 플래시 칩을 미래 보조 기입 칩으로서, 그리고 임의의 나머지 NAND 플래시 칩들을 판독-전용으로서 지정하는 단계;
    입력/출력(I/O) 버스를 통해 데이터를 수신하는 단계;
    각각의 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 상기 수신된 데이터를 상기 주 기입 칩 및 상기 보조 기입 칩에 연속으로 기입하는 단계;
    상기 I/O 버스를 통해 판독 커맨드를 수신하는 단계;
    상기 판독 커맨드를 수신하는 것에 대한 응답으로, 판독 동작들이 기입 동작들 뒤에 대기하지 않도록, 상기 제1 버퍼 NAND 플래시 칩 또는 상기 제1 저장 NAND 플래시 칩 중 어느 NAND 플래시 칩이든 현재 기입 동작을 실행하고 있지 않은 NAND 플래시 칩으로부터 데이터를 판독하는 단계;
    상기 미래 주 기입 칩으로부터 상기 미래 보조 기입 칩으로 유효 데이터를 복사하는 단계; 및
    상기 수신된 데이터의 기입 및 상기 유효 데이터의 복사에 후속하여, 상기 제1 저장 NAND 플래시 칩을 판독-전용으로서, 상기 제2 저장 NAND 플래시 칩을 상기 주 기입 칩으로서, 상기 제1 버퍼 NAND 플래시 칩을 상기 미래 보조 기입 칩으로서, 그리고 상기 제2 버퍼 NAND 플래시 칩을 상기 보조 기입 칩으로서 지정하는 단계를 포함하는,
    NAND 플래시 저장 디바이스를 버퍼링하는 방법.
  17. 삭제
  18. 제16 항에 있어서,
    상기 수신된 데이터의 기입 및 상기 유효 데이터의 복사에 후속하여:
    제3 저장 NAND 플래시 칩을 상기 미래 주 기입 칩으로서 지정하는 단계;
    각각의 칩으로의 기입 동작들이 시간적으로 오버랩하지 않도록, 상기 I/O 버스를 통해 수신된 제2 데이터를 상기 주 기입 칩 및 상기 보조 기입 칩에 연속으로 기입하는 단계;
    상기 미래 주 기입 칩으로부터 상기 미래 보조 기입 칩으로 제2 유효 데이터를 복사하는 단계; 및
    상기 수신된 제2 데이터의 기입 및 상기 제2 유효 데이터의 복사에 후속하여, 상기 제2 저장 NAND 플래시 칩을 판독-전용으로서, 상기 제3 저장 NAND 플래시 칩을 상기 주 기입 칩으로서, 상기 제1 버퍼 NAND 플래시 칩을 상기 보조 기입 칩으로서, 그리고 상기 제2 버퍼 NAND 플래시 칩을 상기 미래 보조 기입 칩으로서 지정하는 단계를 포함하는,
    NAND 플래시 저장 디바이스를 버퍼링하는 방법.
  19. 제18 항에 있어서,
    상기 복사하는 동작은:
    상기 유효 데이터 및 자유 공간이 각각 상기 미래 보조 기입 칩의 실질적으로 인접한 개별 메모리 공간들을 점유하도록, 상기 유효 데이터를 상기 미래 주 기입 칩으로부터 상기 미래 보조 기입 칩으로 복사하는 동작;
    상기 유효 데이터 및 상기 자유 공간이 각각 상기 미래 주 기입 칩의 실질적으로 인접한 개별 메모리 공간들을 점유하도록, 상기 유효 데이터를 상기 미래 보조 기입 칩으로부터 다시 상기 미래 주 기입 칩으로 복사하는 동작; 및
    상기 자유 공간에 의해 점유된 상기 미래 주 기입 칩 및 상기 미래 보조 기입 칩의 메모리 공간들을 소거하는 동작을 포함하는,
    NAND 플래시 저장 디바이스를 버퍼링하는 방법.
  20. 제16 항에 있어서,
    복수의 버퍼 NAND 플래시 칩들은 단일-레벨 셀(SLC) NAND 플래시 칩들이고; 그리고
    복수의 저장 NAND 플래시 칩들은 트리플-레벨 셀(TLC) NAND 플래시 칩들인,
    NAND 플래시 저장 디바이스를 버퍼링하는 방법.
KR1020197035081A 2017-06-23 2018-03-15 Nand 버퍼를 갖는 nand 플래시 저장 디바이스 KR102276350B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762524016P 2017-06-23 2017-06-23
US62/524,016 2017-06-23
US15/816,447 2017-11-17
US15/816,447 US10606484B2 (en) 2017-06-23 2017-11-17 NAND flash storage device with NAND buffer
PCT/US2018/022683 WO2018236440A1 (en) 2017-06-23 2018-03-15 NAND FLASH STORAGE DEVICE WITH NAND BUFFER

Publications (2)

Publication Number Publication Date
KR20200003055A KR20200003055A (ko) 2020-01-08
KR102276350B1 true KR102276350B1 (ko) 2021-07-12

Family

ID=61899381

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197035081A KR102276350B1 (ko) 2017-06-23 2018-03-15 Nand 버퍼를 갖는 nand 플래시 저장 디바이스

Country Status (9)

Country Link
US (1) US10606484B2 (ko)
EP (1) EP3418897B1 (ko)
JP (1) JP7234144B2 (ko)
KR (1) KR102276350B1 (ko)
CN (1) CN109117085B (ko)
DE (2) DE102018109929A1 (ko)
GB (1) GB2563713B (ko)
TW (1) TWI727160B (ko)
WO (1) WO2018236440A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10481834B2 (en) * 2018-01-24 2019-11-19 Samsung Electronics Co., Ltd. Erasure code data protection across multiple NVME over fabrics storage devices
US11048430B2 (en) * 2019-04-12 2021-06-29 Netapp, Inc. Object store mirroring where during resync of two storage bucket, objects are transmitted to each of the two storage bucket
KR20200142219A (ko) 2019-06-12 2020-12-22 삼성전자주식회사 전자 장치 및 그의 저장 공간 이용 방법
JP2021043908A (ja) * 2019-09-13 2021-03-18 キオクシア株式会社 メモリシステムおよび制御方法
US11269779B2 (en) 2020-05-27 2022-03-08 Microsoft Technology Licensing, Llc Memory system with a predictable read latency from media with a long write latency
CN118093449A (zh) * 2022-11-25 2024-05-28 长江存储科技有限责任公司 一种存储器系统及其垃圾回收方法、电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010071655A1 (en) * 2008-12-19 2010-06-24 Hewlett-Packard Development Company, L.P. Redundant data storage for uniform read latency
US20110145475A1 (en) 2009-12-15 2011-06-16 International Business Machines Corporation Reducing access contention in flash-based memory systems
WO2013048451A1 (en) 2011-09-30 2013-04-04 Intel Corporation Presentation of direct accessed storage under a logical drive model
JP2013109404A (ja) 2011-11-17 2013-06-06 Toshiba Corp 情報処理装置
US20160179422A1 (en) 2014-12-19 2016-06-23 Samsung Electronics Co., Ltd. Method of performing garbage collection and raid storage system adopting the same
US20170131908A1 (en) * 2015-11-09 2017-05-11 Google Inc. Memory Devices and Methods

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5930167A (en) 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US8639871B2 (en) 2009-04-08 2014-01-28 Google Inc. Partitioning a flash memory data storage device
CN106021147B (zh) * 2011-09-30 2020-04-28 英特尔公司 在逻辑驱动器模型下呈现直接存取的存储设备
US8301832B1 (en) 2012-03-23 2012-10-30 DSSD, Inc. Storage system with guaranteed read latency
KR102039537B1 (ko) 2013-03-15 2019-11-01 삼성전자주식회사 불휘발성 저장 장치 및 그것의 운영체제 이미지 프로그램 방법
US20140304452A1 (en) 2013-04-03 2014-10-09 Violin Memory Inc. Method for increasing storage media performance
US9213634B2 (en) * 2013-11-22 2015-12-15 Apple Inc. Efficient reuse of segments in nonoverwrite storage systems
US9632729B2 (en) * 2014-05-07 2017-04-25 Seagate Technology Llc Storage compute device with tiered memory processing
US10031670B2 (en) * 2015-09-04 2018-07-24 Toshiba Memory Corporation Control unit and control method for controlling writes and background operations of multiple semiconductor storage devices
US10318175B2 (en) * 2017-03-07 2019-06-11 Samsung Electronics Co., Ltd. SSD with heterogeneous NVM types

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010071655A1 (en) * 2008-12-19 2010-06-24 Hewlett-Packard Development Company, L.P. Redundant data storage for uniform read latency
US20110145475A1 (en) 2009-12-15 2011-06-16 International Business Machines Corporation Reducing access contention in flash-based memory systems
WO2013048451A1 (en) 2011-09-30 2013-04-04 Intel Corporation Presentation of direct accessed storage under a logical drive model
JP2013109404A (ja) 2011-11-17 2013-06-06 Toshiba Corp 情報処理装置
US20160179422A1 (en) 2014-12-19 2016-06-23 Samsung Electronics Co., Ltd. Method of performing garbage collection and raid storage system adopting the same
US20170131908A1 (en) * 2015-11-09 2017-05-11 Google Inc. Memory Devices and Methods

Also Published As

Publication number Publication date
DE102018109929A1 (de) 2018-12-27
TW201905921A (zh) 2019-02-01
GB2563713B (en) 2020-01-15
DE202018102304U1 (de) 2018-10-30
GB201804693D0 (en) 2018-05-09
US20180373440A1 (en) 2018-12-27
EP3418897A1 (en) 2018-12-26
KR20200003055A (ko) 2020-01-08
CN109117085B (zh) 2021-08-20
GB2563713A (en) 2018-12-26
JP2020524839A (ja) 2020-08-20
EP3418897B1 (en) 2022-09-14
US10606484B2 (en) 2020-03-31
CN109117085A (zh) 2019-01-01
JP7234144B2 (ja) 2023-03-07
TWI727160B (zh) 2021-05-11
WO2018236440A1 (en) 2018-12-27

Similar Documents

Publication Publication Date Title
KR102276350B1 (ko) Nand 버퍼를 갖는 nand 플래시 저장 디바이스
US11416391B2 (en) Garbage collection
US11586357B2 (en) Memory management
US11487666B2 (en) Timed data transfer between a host system and a memory sub-system
CN107092561B (zh) 具有直接存取的多级存储器
WO2016107442A1 (zh) 将数据写入固态硬盘的方法及固态硬盘
US12050809B2 (en) Multi-pass data programming in a memory sub-system having multiple dies and planes
US11294820B2 (en) Management of programming mode transitions to accommodate a constant size of data transfer between a host system and a memory sub-system
US20170228191A1 (en) Systems and methods for suppressing latency in non-volatile solid state devices
US11507289B2 (en) Storage device, controller and method for operating storage device
JP2011070365A (ja) メモリシステム
US20220113905A1 (en) Command Prioritization to Reduce Latencies of Zone Commands
US11281405B2 (en) Controlled die asymmetry during MLC operations for optimal system pipeline
JP2024513234A (ja) ソリッドステートドライブ内のnandダイの衝突を軽減する方法及び装置
US11481136B1 (en) Very low sized zone support for storage devices
TWI724550B (zh) 資料儲存裝置以及非揮發式記憶體控制方法
US20150254011A1 (en) Memory system, memory controller and control method of non-volatile memory
CN110888591A (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