KR102552689B1 - 데이터 저장 장치 - Google Patents

데이터 저장 장치 Download PDF

Info

Publication number
KR102552689B1
KR102552689B1 KR1020180048519A KR20180048519A KR102552689B1 KR 102552689 B1 KR102552689 B1 KR 102552689B1 KR 1020180048519 A KR1020180048519 A KR 1020180048519A KR 20180048519 A KR20180048519 A KR 20180048519A KR 102552689 B1 KR102552689 B1 KR 102552689B1
Authority
KR
South Korea
Prior art keywords
data
storage area
stored
area
controller
Prior art date
Application number
KR1020180048519A
Other languages
English (en)
Other versions
KR20190124493A (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 삼성전자주식회사
Priority to KR1020180048519A priority Critical patent/KR102552689B1/ko
Priority to US16/362,733 priority patent/US11112976B2/en
Priority to CN201910307898.XA priority patent/CN110413221B/zh
Publication of KR20190124493A publication Critical patent/KR20190124493A/ko
Application granted granted Critical
Publication of KR102552689B1 publication Critical patent/KR102552689B1/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/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
    • 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
    • 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
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • 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/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/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/7207Details relating to flash memory management management of metadata or control data

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 Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

데이터 저장 장치가 제공된다. 상기 데이터 저장 장치는 제1 영역 및 제1 영역과 다른 제2 영역을 포함하는 비휘발성 메모리, 및 제1 및 제2 데이터를 비휘발성 메모리의 제1 영역에 저장하는 컨트롤러를 포함하고, 비휘발성 메모리의 제1 영역은 제1 및 제2 저장 영역을 포함하고, 제1 데이터의 일부는 제1 저장 영역에 저장되고, 제1 데이터의 다른 일부는 제2 저장 영역에 저장되고, 제2 데이터는 제2 저장 영역에 저장되고, 제2 데이터가 시작되는 제2 저장 영역의 오프셋(offset) 값은 비휘발성 메모리의 제2 영역에 저장된다.

Description

데이터 저장 장치{DATA STORAGE DEVICE}
본 발명은 데이터 저장 장치에 관한 것이다. 더욱 구체적으로, 본 발명은 데이터 손실을 최소화하는 데이터 저장 장치에 관한 것이다.
일반적으로 반도체 메모리 장치는 전원의 공급이 중단됨에 따라 저장된 정보가 소멸되는 휘발성 메모리 장치(volatile memory device)와 전원의 공급이 중단되더라도 저장된 정보를 계속 유지할 수 있는 비휘발성 메모리 장치(nonvolatile memory device)로 구분된다. 최근 널리 사용되고 있는 비휘발성 메모리 장치로 NAND 플래시 장치가 있다. NAND 플래시 장치로 구성된 데이터 저장 매체는 예를 들어, SSD(Solid State Drive)를 포함한다. SSD는 상술한 NAND 플래시 장치를 이용함으로써 큰 스토리지 용량과 빠른 액세스 속도를 달성할 수 있다.
일반적인 SSD 장치의 최소 쓰기 단위는 페이지(page) 단위이며, 만약 호스트로부터 SSD 장치가 페이지 보다 작은 크기의 데이터를 수신하는 경우, 호스트에서 수신한 데이터를 페이지의 단위를 갖도록 가공하여 저장한다. 이러한 경우, NAND 플래시 장치의 저장 공간을 밀도있게 사용하지 못하는 단점이 있다. 이를 극복하기 위해, 가변 크기의 데이터를 저장하는 방법이 도입되었다.
본 발명이 해결하고자 하는 기술적 과제는 데이터를 비휘발성 메모리에 밀도있게 저장하는 데이터 저장 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 불의의 사고로 특정 메모리에 데이터가 저장되지 않은 경우에도, 기저장되어 있는 나머지 데이터들을 효과적으로 리드하는 데이터 저장 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 데이터 저장 장치는 제1 영역 및 제1 영역과 다른 제2 영역을 포함하는 비휘발성 메모리, 및 제1 및 제2 데이터를 비휘발성 메모리의 제1 영역에 저장하는 컨트롤러를 포함하고, 비휘발성 메모리의 제1 영역은 제1 및 제2 저장 영역을 포함하고, 제1 데이터의 일부는 제1 저장 영역에 저장되고, 제1 데이터의 다른 일부는 제2 저장 영역에 저장되고, 제2 데이터는 제2 저장 영역에 저장되고, 제2 데이터가 시작되는 제2 저장 영역의 오프셋(offset) 값은 비휘발성 메모리의 제2 영역에 저장된다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 데이터 저장 장치는 제1 및 제2 저장 영역과 스페어 영역을 포함하는 비휘발성 메모리, 및 제1 데이터를 비휘발성 메모리에 저장하는 컨트롤러를 포함하고, 제1 데이터의 크기가 제1 저장 영역의 저장 가능 공간의 크기보다 큰 경우, 컨트롤러는 제1 데이터를 제1 및 제2 서브 데이터로 분할하고, 제1 서브 데이터를 제1 저장 영역에 저장하고, 제2 서브 데이터를 제2 저장 영역에 저장하고, 제2 서브 데이터의 크기에 대응하는 제2 저장 영역의 오프셋 값을 스페어 영역에 저장하고, 제1 데이터의 크기가 제1 저장 영역의 크기보다 작은 경우, 컨트롤러는 제1 데이터를 제1 저장 영역에 저장한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 데이터 저장 장치는 데이터가 저장되는 제1 저장 영역과, 제1 저장 영역과 관련된 제1 오프셋이 저장되는 제1 스페어 영역을 포함하는 비휘발성 메모리, 및 제1 저장 영역에 적어도 일부 저장된 제1 데이터를 리드(read)하여, 외부로 전송하는 컨트롤러를 포함하고, 컨트롤러가 제1 데이터를 리드할 때, 컨트롤러는 제1 스페어 영역에 저장된 제1 오프셋을 참조하여, 제1 오프셋에서부터 제1 저장 영역을 스캔함으로써 제1 데이터를 리드한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 몇몇 실시예에 따른 데이터 저장 장치의 구조를 설명하기 위한 예시적인 도면이다.
도 2 내지 도 4는 몇몇 실시예에 따른 비휘발성 메모리의 저장 영역 및 스페어 영역을 설명하기 위한 예시적인 도면이다.
도 5는 몇몇 실시예에 따른 데이터 저장 장치를 이용하여, 호스트로부터 수신한 데이터를 저장하는 방법을 설명하기 위한 예시적인 순서도이다.
도 6은 몇몇 실시예에 따른 비휘발성 메모리에 저장될 데이터를 설명하기 위한 예시적인 도면이다.
도 7 내지 도 8은 몇몇 실시예에 따른 데이터 저장 장치를 이용하여, 호스트로부터 수신한 데이터를 저장하는 방법을 설명하기 위한 예시적인 도면이다.
도 9는 오프셋이 저장되지 않은 경우, 컨트롤러가 비휘발성 메모리에 저장된 데이터를 리드할 때 발생될 수 있는 문제점을 설명하기 위한 예시적인 도면이다.
도 10은 몇몇 실시예에 따른 데이터 저장 장치의 컨트롤러가 비휘발성 메모리에 저장된 데이터를 리드하는 방법을 설명하기 위한 예시적인 순서도이다.
도 11 및 도 12는 몇몇 실시예에 따른 데이터 저장 장치의 컨트롤러가 비휘발성 메모리에 저장된 데이터를 리드하는 방법을 설명하기 위한 예시적인 도면이다.
도 13 내지 도 16은 몇몇 실시예에 따른 비휘발성 메모리에 오프셋을 저장하는 다양한 방법을 설명하기 위한 예시적인 도면이다.
도 17은 몇몇 실시예에 따른 데이터 저장 장치의 컨트롤러가 비휘발성 메모리에 저장된 데이터를 리드하는 방법을 설명하기 위한 예시적인 순서도이다.
도 18은 몇몇 실시예에 따른 데이터 저장 장치의 컨트롤러가 비휘발성 메모리에 저장된 데이터를 리드하는 방법을 설명하기 위한 예시적인 도면이다.
도 1은 몇몇 실시예에 따른 데이터 저장 장치의 구조를 설명하기 위한 예시적인 도면이다.
도 1을 참조하면, 데이터 저장 장치(100)는 컨트롤러(110, controller), 버퍼 메모리(120, buffer memory), 및 비휘발성 메모리(130, NVM: non-volatile memory)를 포함할 수 있다. 몇몇 실시예에서, 데이터 저장 장치(100)는 솔리드 스테이트 드라이브(SSD: Solid State Drive)일 수 있으나, 실시예들이 이에 제한되지는 않는다.
컨트롤러(110)는 호스트 인터페이스(111, host interface), 프로세서(112, processor), 캐시 메모리(113, cache memory), 버퍼 메모리 인터페이스(114, buffer memory interface), 비휘발성 메모리 인터페이스(115, NVM interface), 및 버스(116, bus)를 포함할 수 있다.
호스트 인터페이스(111)는 호스트(Host)와 데이터 저장 장치(100) 사이의 명령 및/또는 데이터의 전송 경로일 수 있다. 몇몇 실시예에서, 호스트 인터페이스(111)는 SATA(serial advanced technology attachment) 인터페이스, SATAe(SATA express) 인터페이스, SAS(serial attached small computer system interface(SCSI)) 인터페이스, PCIe(peripheral component interconnect express) 인터페이스, NVMe(non-volatile memory Express) 인터페이스, AHCI(advanced host controller interface) 인터페이스, 또는 멀티미디어 카드 (multimedia card(MMC))인터페이스로 구현될 수 있으나 이에 제한되는 것은 아니다.
프로세서(112)는 데이터 처리 및/또는 연산을 수행하는 장치나 프로그램일 수 있다. 몇몇 실시예에서, 프로세서(112)는 마이크로프로세서(microprocessor) 또는 중앙처리장치(CPU)와 같은 하드웨어로 구현될 수 있으나, 실시예들이 이에 제한되는 것은 아니다. 예를 들어, 프로세서(112)는 프로그램 언어(program language)를 기계 언어(machine language)로 번역하는 프로그램 프로세서(program processor)일 수 있다. 비록 도면에 도시하지는 않았지만, 프로세서(112)는 복수의 코어(core)를 포함할 수 있다.
캐시 메모리(113)는 데이터에 고속으로 접근(access)할 수 있도록, 미래의 요청에 대비해 데이터를 임시로 저장할 수 있는 메모리일 수 있다. 캐시 메모리(113)에 저장된 데이터는 이전에 수행한 연산의 결과일 수 있다. 캐시 메모리(113)는 정적 램(SRAM: Static Random Access Memory), 빠른 정적 램(Fast-SRAM), 및/또는 동적 램(DRAM: Dynamic RAM) 등으로 구현될 수 있으나, 실시예들이 이에 제한되지는 않는다. 또한, 비록 도 1은 캐시 메모리(113)가 프로세서(112)와 분리된 것으로 도시하나, 실시예들이 이에 제한되지는 않는다. 예를 들어, 캐시 메모리(113)는 프로세서(112) 내부에 포함될 수 있다. 또한, 도 1에 도시된 바와는 달리, 캐시 메모리(113)는 컨트롤러(110)와 독립적인 하드웨어 모듈로 구현될 수 있다. 또한, 비록 도 1은 캐시 메모리(113)가 프로세서(112)와 직접 연결되는 것으로 도시되었으나, 실시예들이 이에 제한되지는 않는다. 예를 들어, 캐시 메모리(113)는 버스(116)를 통해 프로세서(112)와 연결될 수 있다.
버퍼 메모리 인터페이스(114)는 컨트롤러(110)와 버퍼 메모리(120) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함할 수 있다. 비휘발성 메모리 인터페이스(115)는 컨트롤러(110)와 비휘발성 메모리(130) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함할 수 있다. 버퍼 메모리 인터페이스(114) 및 비휘발성 메모리 인터페이스(115)는 각각 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, IDE (Integrated Drive Electronics) 프로토콜, NVMe(Non-Volatile Memory express) 프로토콜, 그리고 쿼리 응답(Query Request) 프로토콜 등과 같은 다양한 인터페이스 프로토콜을 통해 컨트롤러(110)와 통신하도록 구성될 수 있다. 다만, 전술한 프로토콜들은 예시적인 것이며, 본 발명이 이에 제한되지는 않는다.
버스(116)는 호스트 인터페이스(111), 프로세서(112), 버퍼 메모리 인터페이스(114), 및 비휘발성 메모리 인터페이스(115)를 연결할 수 있다. 다시 말해서, 호스트 인터페이스(111), 프로세서(112), 버퍼 메모리 인터페이스(114), 및 비휘발성 메모리 인터페이스(115) 사이의 데이터 및 명령은 버스(116)를 통해 각각의 구성요소로 이동될 수 있다.
컨트롤러(110)는 데이터 저장 장치(100)의 전반적인 동작을 제어할 수 있다. 예를 들어, 컨트롤러(110)는 호스트로부터 데이터를 수신하여 버퍼 메모리(120)에 버퍼링할 수 있다. 또한, 컨트롤러(110)는 필요에 따라, 오프셋(Offset) 값을 생성하고, 이를 비휘발성 메모리(130)에 저장할 수 있다. 컨트롤러(110)의 동작에 관한 구체적인 설명은 후술한다.
버퍼 메모리(120)는 데이터가 비휘발성 메모리(130)에 저장되기 전, 데이터를 임시로 저장하는 공간일 수 있다. 다시 말해서, 버퍼 메모리(120)는 데이터를 버퍼링하는 공간일 수 있다. 예를 들어, 호스트로부터 데이터가 수신되면, 수신된 데이터는 일단 버퍼 메모리(120)에 저장될 수 있다. 버퍼 메모리(120)에 저장된 데이터는 특정 명령 또는 요구에 의해, 비휘발성 메모리(130)로 플러쉬(flush)될 수 있다. 버퍼 메모리(120)는 고속의 휘발성 메모리 또는 비휘발성 메모리를 포함할 수 있다. 예를 들어, 버퍼 메모리(120)는 동적 램(DRAM), 정적 램(SRAM), 또는 플래시 메모리(flash memory)의 싱글 레벨 셀(SLC: Single Level Cell) 영역일 수 있으나, 실시예들이 이에 제한되지는 않는다.
비휘발성 메모리(130)는 수신한 데이터를 비일시적으로 저장할 수 있다. 다시 말해서, 비휘발성 메모리(130)에 제공되는 파워가 차단되는 경우라도, 비휘발성 메모리(130)에 저장된 데이터는 삭제되지 않을 수 있다. 비휘발성 메모리(130)는 플래시 메모리의 싱글 레벨 셀(SLC) 또는 멀티 레벨 셀(MLC: Multi Level Cell)일 수 있으나, 실시예들이 이에 제한되지는 않는다. 예를 들어, 비휘발성 메모리(130)는 PC 카드(PCMCIA: personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS), 임베디드 멀티미디어 카드(eMMC), 낸드 플래시 메모리(NAND Flash Memory), 노어 플래시 메모리(NOR Flash Memory), 브이 낸드 플래시 메모리(V-NAND Flash Memory) 등을 포함할 수 있다.
몇몇 실시예에서, 비휘발성 메모리(130)는 복수의 비휘발성 메모리 칩(131_1~131_8, NVM chip)을 포함할 수 있다. 비휘발성 메모리(130)는 제1 및 제2 채널(CH_1, CH_2)을 포함할 수 있고, 제1 내지 제4 뱅크(Bank_1~Bank_4)를 포함할 수 있다. 비휘발성 메모리(130)의 제1 및 제2 채널(CH_1, CH_2)은 각각 독립적으로 데이터 교환을 수행할 수 있다. 제1 및 제2 채널(CH_1, CH_2)에서, 서로 인접한 비휘발성 메모리 칩은 서로 다른 뱅크에 포함될 수 있다. 예를 들어, 제1 채널(CH_1)의 제1 및 제2 비휘발성 메모리 칩(131_1, 131_2)은 서로 다른 뱅크, 즉, 각각 제1 및 제2 뱅크(Bank_1, Bank_2)에 포함될 수 있다.
그러나, 도 1에 도시된 비휘발성 메모리(130)의 구조는 단지 예시적인 것일 뿐이며, 실시예들이 이에 제한되는 것은 아니다. 예를 들어, 몇몇 실시예에서, 비휘발성 메모리(130)는 4개의 채널, 8개의 채널을 포함할 수 있을 뿐만 아니라, 단채널으로 구현될 수도 있다. 또한, 비록 도 1의 비휘발성 메모리(130)는 8 개의 비휘발성 메모리 칩(131_1~131_8)을 포함하는 것으로 도시되었으나, 실시예들이 비휘발성 메모리 칩의 개수에 제한되지는 않는다. 도 2 내지 도 4를 참조하여, 비휘발성 메모리의 저장 영역 및 스페어 영역을 설명한다.
도 2 내지 도 4는 몇몇 실시예에 따른 비휘발성 메모리의 저장 영역 및 스페어 영역을 설명하기 위한 예시적인 도면이다.
도 2를 참조하면, 몇몇 실시예에 따른 비휘발성 메모리(130)는 저장 영역(ST, storage region)과 스페어 영역(SP, spare region)을 포함할 수 있다. 비휘발성 메모리(130)의 저장 영역(ST)은 호스트로부터 수신한 데이터가 저장될 영역일 수 있다. 비휘발성 메모리(130)의 스페어 영역(SP)은 에러 정정 패리티(ECC parity), 및/또는 오프셋(Offset)이 저장될 영역일 수 있다.
비휘발성 메모리(130)의 저장 영역(ST) 및 스페어 영역(SP)은 다양한 방법으로 구현될 수 있다. 도 3을 참조하면, 몇몇 실시예에 따른 비휘발성 메모리 칩(131_1~131_8)은 각각 저장 영역(ST)과 스페어 영역(SP)을 포함할 수 있다. 다시 말해서, 몇몇 실시예에 따르면, 비휘발성 메모리 칩(131_1~131_8) 각각은 데이터가 저장되는 저장 영역(ST)과 오프셋이 저장되는 스페어 영역(SP)으로 구분될 수 있다.
도 4를 참조하면, 몇몇 실시예에 따른 비휘발성 메모리 칩의 일부(131_1~131_3, 131_5~131_7)는 비휘발성 메모리(130)의 저장 영역(ST)에 포함되고, 비휘발성 메모리 칩의 다른 일부(131_4, 131_8)는 비휘발성 메모리(130)의 스페어 영역(SP)에 포함될 수 있다. 다시 말해서, 몇몇 실시예에서, 데이터는 비휘발성 메모리 칩의 일부(131_1~131_3, 131_5~131_7)에 저장되고, 오프셋은 발성 메모리 칩의 다른 일부(131_4, 131_8)에 저장될 수 있다. 즉, 본 발명의 기술분야에서 통상의 지식을 가진 자는 다양한 방식으로 비휘발성 메모리(130)를 저장 영역(ST)과 스페어 영역(SP)으로 구분할 수 있을 것이다.
이하에서는, 설명의 편의를 위해, 비휘발성 메모리(130)를 비휘발성 메모리 칩(131_1~131_8)으로 구분하지 않고, 저장 영역(ST)과 스페어 영역(SP)으로 구분하여 설명한다.
도 5 내지 도 8을 참조하여, 몇몇 실시예에 따른 데이터 저장 장치(100)의 데이터 저장 방법에 관해 설명한다.
도 5는 몇몇 실시예에 따른 데이터 저장 장치를 이용하여, 호스트로부터 수신한 데이터를 저장하는 방법을 설명하기 위한 예시적인 순서도이다. 도 6은 몇몇 실시예에 따른 비휘발성 메모리에 저장될 데이터를 설명하기 위한 예시적인 도면이다. 도 7 내지 도 8은 몇몇 실시예에 따른 데이터 저장 장치를 이용하여, 호스트로부터 수신한 데이터를 저장하는 방법을 설명하기 위한 예시적인 도면이다.
도 5를 참조하면, 호스트에서 비휘발성 메모리(130)에 저장될 제1 수신 데이터를 수신할 수 있다(S510). 이해를 돕기 위해, 도 6을 참조한다.
도 6을 참조하면, 데이터(600, DATA)는 유저 데이터(610, USER DATA)와 메타 데이터(620, META DATA)를 포함할 수 있다. 유저 데이터(610)는 사용자가 비휘발성 메모리(130)에 저장하고자 하는 데이터일 수 있다. 또한, 유저 데이터(610)는 사용자가 비휘발성 메모리(130)에서 불러오고자 하는 데이터일 수 있다. 메타 데이터(620)는 유저 데이터(610)에 관한 정보를 포함할 수 있다. 예를 들어, 메타 데이터(620)는 유저 데이터(610)의 데이터 크기에 관한 정보를 포함할 수 있다.
몇몇 실시예에서, 유저 데이터(610)는 키(611, key) 데이터와 밸류(612, value) 데이터를 포함할 수 있다. 밸류(612) 데이터는 사용자가 비휘발성 메모리(130)에 저장하고자 하는 데이터 값일 수 있다. 키(611) 데이터는 밸류(612) 데이터를 식별하기 위해 참조되는 값일 수 있다. 메타 데이터(620)는 키 데이터의 크기에 관한 정보(621)와 밸류 데이터의 크기에 관한 정보(622)를 포함할 수 있다. 몇몇 실시예에서, 유저 데이터(610)는 키(611) 및 밸류(612) 데이터를 포함하는 것으로 설명되나, 실시예들이 이에 제한되지는 않는다. 또한, 몇몇 실시예에서, 메타 데이터(620)는 키 및 밸류 데이터의 크기에 관한 정보(621, 622)를 포함하는 것으로 설명되나, 실시예들이 이에 제한되지는 않는다.
다시 도 5를 참조하면, 컨트롤러(110)는 호스트에서 수신한 제1 수신 데이터의 크기와, 상기 제1 수신 데이터가 저장될 비휘발성 메모리(130)의 제1 페이지의 저장 영역의 저장 가능한 공간의 크기를 비교할 수 있다(S520).
몇몇 실시예에서, 제1 수신 데이터의 크기가 비휘발성 메모리(130)의 제1 페이지의 저장 영역의 저장 가능한 공간의 크기보다 크다면, 컨트롤러(110)는 제1 수신 데이터를 제1 및 제2 서브 데이터로 분할할 수 있다(S530). 컨트롤러(110)는 제1 서브 데이터를 비휘발성 메모리(130)의 제1 페이지의 저장 영역에 저장할 수 있다. 또한, 컨트롤러(110)는 제2 서브 데이터를 제1 페이지의 저장 영역에 후속하는 비휘발성 메모리(130)의 제2 페이지의 저장 영역에 저장할 수 있다(S540). 이때, 컨트롤러(110)는 제2 서브 데이터가 저장되는 비휘발성 메모리(130)의 제2 페이지의 저장 영역에 대한 오프셋을 스페어 영역(SP)에 저장할 수 있다(S550). 제2 페이지의 저장 영역에 대한 오프셋은 제2 페이지의 저장 영역에서 제1 수신 데이터(제2 서브 데이터)에 후속하는, 제2 수신 데이터가 시작되는 위치일 수 있다. 즉, 제2 페이지의 저장 영역에 대한 오프셋은 제2 서브 데이터의 크기와 대응할 수 있다. 몇몇 실시예에서, 제1 수신 데이터는 제1 페이지의 저장 영역에서부터 제2 페이지의 저장 영역에 대한 오프셋까지 저장되고, 제2 수신 데이터는 제2 페이지의 저장 영역에 대한 오프셋 이후로 저장될 수 있다.
몇몇 실시예에서, 제1 수신 데이터의 크기가 비휘발성 메모리(130)의 제1 페이지의 저장 영역의 저장 가능한 공간의 크기보다 작거나 같으면, 제1 수신 데이터를 비휘발성 메모리(130)의 제1 페이지의 저장 영역에 저장할 수 있다(S560). 이해를 돕기 위해, 도 7 및 도 8을 참조한다.
도 7을 참조하면, 몇몇 실시예에서, 컨트롤러(110)는 호스트로부터 제1 내지 제6 데이터(D1~D6)를 수신할 수 있다. 컨트롤러(110)는 호스트로부터 수신한 제1 내지 제6 데이터(D1~D6)를 버퍼 메모리(120)에 버퍼링할 수 있다.
몇몇 실시예에서, 제1 내지 제6 데이터(D1~D6)는 서로 크기가 다른 데이터일 수 있으나, 실시예들이 이에 제한되는 것은 아니다. 예를 들어, 제1 내지 제6 데이터(D1~D6) 중 적어도 두개의 데이터의 크기는 서로 동일할 수 있다. 제1 데이터(D1)는 제1 메타 데이터(M1)와 제1 유저 데이터(U1)를 포함할 수 있다. 마찬가지로 제2 내지 제6 데이터(D2~D6)는 각각 제2 내지 제6 메타 데이터(M2~M6)와, 제2 내지 제6 유저 데이터(U2~U6)를 포함할 수 있다. 제1 내지 제6 메타 데이터(M1~M6)는 각각 제1 내지 제6 유저 데이터(U1~U6)의 데이터 크기 정보를 포함할 수 있다.
몇몇 실시예에서, 비휘발성 메모리(130)는 제1 내지 제4 물리 페이지(PPN1~PPN4)를 포함할 수 있다. 이하에서는, 설명의 편의상 제1 내지 제4 물리 페이지(PPN1~PPN4) 각각이 저장 영역(ST)과 스페어 영역(SP)을 포함하는 것으로 설명하나, 실시예들이 이에 제한되는 것은 아니다. 설명의 편의상 제1 내지 4 물리 페이지(PPN1~PPN4)의 스페어 영역(SP)에 저장되는 오프셋을 각각 제1 내지 제4 오프셋(OF1~OF4)으로 정의한다.
몇몇 실시예에서, 제1 내지 제4 물리 페이지(PPN1~PPN4)는 각각 서로 다른 비휘발성 메모리 칩(도 1의 131_1~131_8)에 포함될 수 있다. 예컨대, 제1 내지 제4 물리 페이지(PPN1~PPN4)는 각각 제1 내지 제4 비휘발성 메모리 칩(131_1~131_4)에 포함될 수 있다. 다른 몇몇 실시예에서, 제1 내지 제4 물리 페이지(PPN1~PPN4)의 적어도 일부는 동일한 비휘발성 메모리 칩(도1의 131_1~131_8)에 포함될 수 있다. 예컨대, 제1 및 제2 물리 페이지(PPN1, PPN2)는 제1 비휘발성 메모리 칩(131_1)에 포함될 수 있다. 또한, 제3 및 제4 물리 페이지(PPN3, PPN4)는 제2 비휘발성 메모리 칩(131_2)에 포함될 수 있다. 본 발명의 기술분야에서 통상의 지식을 가진 자는 다양한 방법으로 제1 내지 제4 물리 페이지(PPN1~PPN4)를 구현할 수 있을 것이다.
컨트롤러(110)는 제1 내지 제6 데이터(D1~D6)를 비휘발성 메모리(130)의 저장 영역(ST)에 연속적으로 저장할 수 있다. 다시 말해서, 제1 내지 제6 데이터(D1~D6)는 제1 내지 제4 물리 페이지(PPN1~PPN4)의 저장 영역(ST)에 걸쳐 연속적으로 저장될 수 있다. 여기에서, "연속적으로 저장"은 "공간적으로 연속되게 저장"하는 것을 의미한다. 즉, "연속적으로 저장"한다고 하여, "시간적으로 연속되게 저장"하는 것에 제한되지는 않는다. 예를 들어, 제2 데이터(D2)는 제1 데이터(D1)보다 먼저 저장될 수 있다. 즉, 제1 내지 제6 데이터(D1~D6)는 제1 내지 제4 물리 페이지(PPN1~PPN4)의 저장 영역(ST)에 걸쳐 공간적으로 연속적으로 저장되되, 시간적으로는 동시에, 순차적으로, 또는 임의의 순서대로 저장될 수 있다.
도 8을 참조하면, 제1 내지 제6 데이터(D1~D6)는 제1 내지 제4 물리 페이지(PPN1~PPN4)의 제1 내지 제4 물리 페이지(PPN1~PPN4)의 저장 영역(ST)에 연속적으로 저장될 수 있다. 몇몇 실시예에 따르면, 컨트롤러(110)는 제1 데이터(D1)의 크기와 제1 물리 페이지(PPN1)의 저장 영역(ST)의 저장 가능한 공간의 크기를 비교한다. 제1 데이터(D1)의 크기는 제1 물리 페이지(PPN1)의 저장 영역(ST)의 저장 가능한 공간의 크기보다 작으므로, 제1 데이터(D1)는 제1 물리 페이지(PPN1)의 저장 영역(ST)에 저장될 수 있다.
컨트롤러(110)는 제1 데이터(D1)에 후속하여 저장되는 제2 데이터(D2)의 크기와 제1 물리 페이지(PPN1)의 저장 영역(ST)의 저장 가능한 공간의 크기를 비교한다. 이때, 제1 물리 페이지(PPN1)의 저장 영역(ST)의 저장 가능한 공간의 크기는 제1 물리 페이지(PPN1)의 저장 영역(ST)의 전체 크기에서 제1 데이터(D1)의 크기를 제외한 나머지 공간의 크기를 의미한다. 제2 데이터(D2)의 크기는 제1 물리 페이지(PPN1)의 저장 영역(ST)의 저장 가능한 공간의 크기보다 크므로, 컨트롤러(110)는 제2 데이터(D2)를 제2_1 서브 데이터(D2_1)와 제 2_2 서브 데이터(D2_2)로 분할할 수 있다. 컨트롤러(110)는 제2_1 서브 데이터(D2_1)를 제1 물리 페이지(PPN1)의 저장 영역(ST)에 저장하고, 제2_2 서브 데이터(D2_2)를 제2 물리 페이지(PPN2)의 저장 영역(ST)에 저장할 수 있다. 또한, 컨트롤러(110)는 제2 물리 페이지(PPN2)의 저장 영역(ST)의 제2 오프셋(OF2)을 제2 물리 페이지(PPN2)의 스페어 영역(SP)에 저장할 수 있다. 예를 들어, 제2 오프셋(OF2)은 4일 수 있다. 몇몇 실시예에서, 제2 물리 페이지(PPN2)의 저장 영역(ST)에서 제2_2 서브 데이터(D2_2)에 후속하는 제3 데이터(D3)가 시작되는 위치는 제2 오프셋(OF2)일 수 있다. 다시 말해서, 제2_2 서브 데이터(D2_2)의 크기는 제2 오프셋(OF2)일 수 있다.
컨트롤러(110)는 제2 데이터(D2), 즉, 제 2_2 서브 데이터(D2_2)에 후속하는 제3 데이터(D3)의 크기와 제2 물리 페이지(PPN2)의 저장 영역(ST)의 저장 가능한 공간의 크기를 비교한다. 이때, 제2 물리 페이지(PPN2)의 저장 영역(ST)의 저장 가능한 공간의 크기는 제2 물리 페이지(PPN2)의 저장 영역(ST)의 전체 크기에서 제2_2 서브 데이터(D2_2)의 크기를 제외한 나머지 공간의 크기를 의미한다. 제3 데이터(D3)의 크기는 제2 물리 페이지(PPN2)의 저장 영역(ST)의 저장 가능한 공간의 크기보다 작으므로, 제3 데이터(D3)는 (제2 오프셋(OF2)에서부터) 제2 물리 페이지(PPN2)의 저장 영역(ST)에 저장될 수 있다.
마찬가지 방법으로, 컨트롤러(110)는 제4 데이터(D4)를 제4_1 서브 데이터(D4_1)와 제4-2 서브 데이터(D4-2)로 분할할 수 있다. 컨트롤러(110)는 제4_1 서브 데이터(D4_1)를 제2 물리 페이지(PPN2)의 저장 영역(ST)에 저장하고, 제4-2 서브 데이터(D4-2)를 제3 물리 페이지(PPN3)의 저장 영역(ST)에 저장할 수 있다. 또한, 컨트롤러(110)는 제3 물리 페이지(PPN3)의 저장 영역(ST)의 제3 오프셋(OF3)을 제3 물리 페이지(PPN3)의 스페어 영역(SP)에 저장할 수 있다. 예를 들어, 제3 오프셋(OF3)은 5일 수 있다.
컨트롤러(110)는 제5 데이터(D5)의 크기와 제3 물리 페이지(PPN3)의 저장 영역(ST)의 저장 가능 공간의 크기를 비교할 수 있다. 제5 데이터(D5)의 크기와 제3 물리 페이지(PPN3)의 저장 영역(ST)의 저장 가능 공간의 크기가 동일하므로, 제5 데이터(D5)는 제3 물리 페이지(PPN3)의 저장 영역(ST)에 저장될 수 있다. 마찬가지 방법으로, 제6 데이터(D6)는 제4 물리 페이지(PPN4)의 저장 영역(ST)에 저장될 수 있다. 도 9 내지 도 12를 참조하여, 컨트롤러(110)가 제1 내지 제6 데이터(D1~D6)를 리드(read)하는 방법에 대해서 설명한다.
도 9는 오프셋이 저장되지 않은 경우, 컨트롤러가 비휘발성 메모리에 저장된 데이터를 리드할 때 발생될 수 있는 문제점을 설명하기 위한 예시적인 도면이다.
도 9는 특정 저장 영역이 클린(clean) 상태이고, 스페어 영역에 저장 영역에 대한 오프셋이 저장되어 있지 않는 경우에 발생할 수 있는 문제들을 도시한다. 설명의 편의를 위해, 컨트롤러(110)가 호스트로부터 제1 내지 제6 데이터(D1~D6)의 리드 명령을 수신한 것을 가정한다.
도 9를 참조하면, 몇몇 실시예에 따른 컨트롤러(110)는 제1 물리 페이지(PPN1)의 저장 영역(ST)을 스캔하여 제1 데이터(D1)를 리드할 수 있다. 예를 들어, 컨트롤러(110)는 제1 물리 페이지(PPN1)의 저장 영역(ST)에 접근(access)하여, 제1 메타 데이터(M1)를 리드할 수 있다. 전술한 바와 같이, 제1 메타 데이터(M1)는 제1 유저 데이터(U1)에 대한 정보, 예를 들어, 제1 유저 데이터(U1)의 크기 정보를 포함할 수 있다. 따라서, 컨트롤러(110)는 제1 메타 데이터(M1)를 참조하여, 제1 유저 데이터(U1)의 크기에 관한 정보를 얻을 수 있다. 제1 유저 데이터(U1)의 크기에 관한 정보를 기초로, 컨트롤러(110)는 제1 데이터(D1)를 리드할 수 있다.
이와 같은 방법으로, 컨트롤러(110)는 나머지 제1 내지 제4 물리 페이지(PPN1~PPN4)의 저장 영역(ST)을 스캔함으로써, 제2 내지 제6 데이터의 리드를 시도할 수 있다.
그러나, 몇몇 실시예에서, 특정 저장 영역은 데이터를 포함하지 않는 상태, 즉, 클린(clean) 상태일 수 있다. 특정 저장 영역의 클린 상태는 갑작스러운 전력 차단(SPO: Sudden Power Off)으로 인해 발생될 수 있다. 다시 말해서, 특정 저장 영역에 저장될 데이터가 저장되기 전, 데이터 저장 장치(100)에 공급되던 전력이 불의의 사고로 차단되는 경우, 특정 저장 영역은 데이터를 포함하지 않는 클린 상태가 될 수 있다.
도 9에 도시된 바와 같이, 제2 물리 페이지(PPN2)의 저장 영역(ST)이 클린 상태인 경우, 컨트롤러(110)는 제2 물리 페이지(PPN2)의 저장 영역(ST)에서 데이터를 리드할 수 없다. 따라서, 제2 물리 페이지(PPN2)의 저장 영역(ST)에 적어도 일부 저장되었어야 할 일부 데이터들이 손실될 수 있다. 즉, 도 9에 도시된 바에 따르면, 제2 물리 페이지(PPN2)의 저장 영역(ST)에 적어도 일부가 저장되었어야 할 제2 내지 제4 데이터(D2~D4)는 손실될 수 있다. 그러나, 제5 및 제6 데이터(D5, D6)는 제3 및 제4 물리 페이지(PPN3, PPN4)에 저장되어 있음에도 불구하고, 컨트롤러(110)는 제5 및 제6 데이터(D5, D6)를 리드할 수 없다. 제3 물리 페이지(PPN3)의 저장 영역(ST)에서, 제5 데이터(D5)가 시작되는 위치를 알 수 없기 때문이다. 따라서, 실제로 손실된 데이터는 제2 내지 제4 데이터(D2~D4)지만, 컨트롤러(110)는 제5 및 제6 데이터(D5, D6)의 리드조차 실패할 수 있다.
도 10은 몇몇 실시예에 따른 데이터 저장 장치의 컨트롤러가 비휘발성 메모리에 저장된 데이터를 리드하는 방법을 설명하기 위한 예시적인 순서도이다. 도 11 및 도 12는 몇몇 실시예에 따른 데이터 저장 장치의 컨트롤러가 비휘발성 메모리에 저장된 데이터를 리드하는 방법을 설명하기 위한 예시적인 도면이다.
도 10을 참조하면, 호스트로부터 명령에 따라, 컨트롤러(110)는 저장 영역을 스캔하여 데이터를 리드할 수 있다(S1010). 이때, 컨트롤러(110)는 특정 저장 영역이 클린 상태인지 여부를 판단할 수 있다(S1020).
몇몇 실시예에서, 특정 저장 영역이 클린 상태인 경우, 컨트롤러(110)는 특정 저장 영역에 적어도 일부 포함된 데이터들에 대한 리드 실패 알림을 호스트로 전송할 수 있다(S1030). 이어서, 컨트롤러(110)는 특정 저장 영역에 연속되는 후속 저장 영역에 대한 오프셋이 존재하는지 여부를 판별할 수 있다(S1040).
몇몇 실시예에서, 후속 저장 영역에 대한 오프셋이 존재하는 경우, 컨트롤러(110)는 후속 저장 영역의 오프셋에서부터 스캔을 시작하여 나머지 데이터를 리드할 수 있다(S1050). 구체적 설명을 위해 도 11을 참조하여 설명한다.
도 11을 참조하면, 컨트롤러(110)는 제1 내지 제4 물리 페이지(PPN1~PPN4)의 저장 영역(ST)을 스캔함으로써, 제1 내지 제6 데이터(D1~D6)의 리드를 시도할 수 있다. 컨트롤러(110)는 제2 데이터(D2)를 스캔하는 중, 제2 물리 페이지(PPN2)의 저장 영역(ST)이 클린 상태임을 판단할 수 있다. 이때, 컨트롤러(110)는 제2 물리 페이지(PPN2)의 저장 영역(ST)에 적어도 일부 저장된 제2 내지 제4 데이터(D2~D4)에 대한 리드 실패 알림을 호스트로 전송할 수 있다. 컨트롤러(110)는 클린 상태인 제2 물리 페이지(PPN2)의 저장 영역(ST)에 후속하는 제3 물리 페이지(PPN3)의 저장 영역(ST)을 스캔하여, 제5 데이터(D5)를 리드할 수 있다. 구체적으로, 컨트롤러(110)는 제3 물리 페이지(PPN3)의 스페어 영역(SP)에 저장된 제3 오프셋(OF3)을 참조하여, 제5 데이터(D5)를 리드할 수 있다. 즉, 컨트롤러(110)는 제3 오프셋(OF3)을 시작점으로 제3 물리 페이지(PPN3)의 저장 영역(ST)을 스캔하여, 제5 데이터(D5)를 리드할 수 있다. 이어서, 컨트롤러(110)는 제4 물리 페이지(PPN4)의 저장 영역(ST)을 스캔하여 제6 데이터(D6)를 리드할 수 있다.
다시 도 10을 참조하면, 몇몇 실시예에서, 후속 저장 영역에 대한 오프셋이 부존재하는 경우, 컨트롤러(110)는 후속 저장 영역의 처음부터 스캔을 시작하여 나머지 데이터를 리드할 수 있다(S1060). 구체적 설명을 위해 도 12를 참조하여 설명한다.
도 12를 참조하면, 컨트롤러(110)는 제1 내지 제4 물리 페이지(PPN1~PPN4)의 저장 영역(ST)을 스캔함으로써, 제1 내지 제6 데이터(D1~D6)의 리드를 시도할 수 있다. 컨트롤러(110)는 제4 데이터(D4)를 스캔하는 중, 제3 물리 페이지(PPN3)의 저장 영역(ST)이 클린 상태임을 판단할 수 있다. 이때, 컨트롤러(110)는 제3 물리 페이지(PPN3)의 저장 영역(ST)에 적어도 일부 저장된 제4 및 제5 데이터(D4, D5)에 대한 리드 실패 알림을 호스트로 전송할 수 있다. 컨트롤러(110)는 클린 상태인 제3 물리 페이지(PPN3)의 저장 영역(ST)에 후속하는 제4 물리 페이지(PPN4)의 저장 영역(ST)을 스캔하여, 제6 데이터(D6)를 리드할 수 있다. 구체적으로, 제4 물리 페이지(PPN4)의 스페어 영역(SP)에 저장된 오프셋이 없으므로, 컨트롤러(110)는 제4 물리 페이지(PPN4)의 저장 영역(ST)의 처음부터 스캔하여 제6 데이터(D6)를 리드할 수 있다.
다시 도 10을 참조하면, 몇몇 실시예에서, 특정 저장 영역이 클린 상태가 아닌 경우, 컨트롤러(110)는 전술한 바와 같이, 제1 내지 제6 메타 데이터(M1~M6)를 참조하여, 제1 내지 제6 데이터(D1~D6)를 리드할 수 있다(S1070).
도 13 내지 도 16은 몇몇 실시예에 따른 비휘발성 메모리에 오프셋을 저장하는 다양한 방법을 설명하기 위한 예시적인 도면이다. 설명의 편의를 위해 중복되거나 유사한 내용은 생략하거나, 간단히 설명한다.
도 13을 참조하면, 몇몇 실시예에서, 비휘발성 메모리(130)의 특정 저장 영역에 두개 이상의 데이터가 저장되어 있는 경우, 두번째로 저장되는 데이터의 시작 위치가 오프셋으로 저장될 수 있다.
예를 들어, 제1 물리 페이지(PPN1)의 저장 영역(ST)은 제1 데이터(D1)와 제2_1 서브 데이터(D2_1)가 저장될 수 있다. 제2_1 서브 데이터(D 2_1)의 시작 위치인 제1 오프셋(OF1)은 5일 수 있다. 제1 오프셋(OF1)은 제1 물리 페이지(PPN1)의 스페어 영역(SP)에 저장될 수 있다. 제2 물리 페이지(PPN2)의 저장 영역(ST)은 제2_2 서브 데이터(D2_2), 제3 데이터(D3), 및 제4_1 서브 데이터(D4_1)가 저장될 수 있다. 제3 서브 데이터(D3)의 시작 위치인 제2 오프셋(OF2)은 4일 수 있다. 제2 오프셋(OF2)은 제2 물리 페이지(PPN2)의 스페어 영역(SP)에 저장될 수 있다. 제3 물리 페이지(PPN3)의 저장 영역(ST)은 제4-2 서브 데이터(D4-2)와 제5 데이터(D5)가 저장될 수 있다. 제5 데이터(D5)의 시작 위치인 제3 오프셋(OF3)은 5일 수 있다. 제3 오프셋(OF3)은 제3 물리 페이지(PPN3)의 스페어 영역(SP)에 저장될 수 있다. 제4 물리 페이지(PPN4)의 저장 영역(ST)은 제6 데이터(D6)만 저장되므로, 제4 물리 페이지(PPN4)의 스페어 영역(SP)은 오프셋이 저장되지 않을 수 있다.
도 14를 참조하면, 몇몇 실시예에서, 비휘발성 메모리(130)의 저장되는 모든 데이터의 시작 위치가 스페어 영역에 오프셋으로 저장될 수 있다.
예를 들어, 제1 데이터(D1), 제2_1 서브 데이터(D2_1), 제2_2 서브 데이터(D2_2), 제3 데이터(D3), 제4_1 서브 데이터(D4_1), 제4-2 서브 데이터(D4-2), 제5 데이터(D5), 및 제6 데이터(D6)가 시작되는 위치가 각각의 스페어 영역에 저장될 수 있다. 예를 들어, 제1 오프셋(OF1)은 0 및 5일 수 있다. 제2 오프셋(OF2)은 4 및 7일 수 있다. 제3 오프셋(OF3)은 5일 수 있다. 제4 오프셋(OF4)은 0일 수 있다.
도 15 및 도 16을 참조하면, 몇몇 실시예에서, 에러 정정 청크(ECC Chunk) 단위로 오프셋을 저장할 수 있다. 다시 말해서, 제1 내지 제6 데이터(D1~D6)를 제1 내지 제9 에러 정정 청크(CHUNK1~CHUNK9)로 재배열하고, 앞서 설명한 방법으로 오프셋 값을 저장할 수 있다. 예를 들어, 컨트롤러(110)는 제3 에러 정정 청크(CHUNK3)를 제3_1 서브 데이터(CHUNK3_1)와 제3_2 서브 데이터(CHUNK3_2)로 분할하고, 제5 에러 정정 청크(CHUNK5)를 제5_1 서브 데이터(CHUNK5_1)와 제5_2 서브 데이터(CHUNK5_2)로 분할하고, 제7 에러 정정 청크(CHUNK7)를 제7_1 서브 데이터(CHUNK7_1)와 제7_2 서브 데이터(CHUNK7_2)로 분할할 수 있다. 이에 따라, 컨트롤러(110)는 제2 내지 제4 오프셋(OF2~OF4)을 각각 제2 내지 제4 스페어 영역(SP2~SP4)에 저장할 수 있다. 예를 들어, 제2 오프셋(OF2)은 3일 수 있다. 제3 오프셋(OF3)은 2일 수 있다. 제4 오프셋(OF4)은 1일 수 있다.
도 17은 몇몇 실시예에 따른 데이터 저장 장치의 컨트롤러가 비휘발성 메모리에 저장된 데이터를 리드하는 방법을 설명하기 위한 예시적인 순서도이다. 도 18은 몇몇 실시예에 따른 데이터 저장 장치의 컨트롤러가 비휘발성 메모리에 저장된 데이터를 리드하는 방법을 설명하기 위한 예시적인 도면이다.
도 17을 참조하면, 컨트롤러(110)는 호스트로부터 데이터 리드 명령을 수신할 수 있다(S1710). 이에 따라, 컨트롤러(110)는 비휘발성 메모리(130)의 스페어 영역(SP)에 저장된 오프셋을 기초로, 복수의 데이터를 병렬적으로 스캔하여 리드할 수 있다(S1720). 이해를 돕기위해 도 18을 참조한다.
몇몇 실시예에서, 컨트롤러(110)는 호스트로부터 제1 내지 제6 데이터(D1~D6)의 리드 명령을 수신할 수 있다. 이때, 컨트롤러(110)는 제1 물리 페이지(PPN1)의 저장 영역(ST)의 처음부터 제1 스캔(first scan)을 수행할 수 있다. 또한, 컨트롤러(110)는 제2 물리 페이지(PPN2)의 저장 영역(ST)의 제2 오프셋(OF2)에서부터 제2 스캔(second scan)을 수행할 수 있다. 또한, 컨트롤러(110)는 제3 물리 페이지(PPN3)의 저장 영역(ST)의 제3 오프셋(OF3)에서부터 제3 스캔(third scan)을 수행할 수 있다. 다시 말해서, 컨트롤러(110)는 제1 스캔(first scan)을 통해, 제1 및 제2 데이터(D1, D2)를 리드할 수 있다. 또한, 컨트롤러(110)는 제2 스캔(second scan)을 통해, 제3 및 제4 데이터(D3, D4)를 리드할 수 있따. 또한, 컨트롤러(110)는 제3 스캔(third scan)을 통해, 제5 및 제6 데이터(D5, D6)를 리드할 수 있다.
몇몇 실시예에서, 컨트롤러(110)는 제1 내지 제3 스캔을 병렬적으로 수행할 수 있다. 다시 말해서, 제1 내지 제3 스캔의 적어도 일부는 동시에 수행될 수 있다. 비록 도시되지는 않았지만, 컨트롤러(110)에 포함된 프로세서(112)는 복수의 코어를 포함할 수 있고, 각각의 코어는 제1 내지 제3 스캔을 각각 수행할 수 있다. 다시 말해서, 프로세서(112)에 포함된 복수의 코어에 의해 제1 내지 제3 스캔은 병렬적으로 수행될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 데이터 저장 장치 110: 컨트롤러
120: 버퍼 메모리 130: 비휘발성 메모리

Claims (10)

  1. 제1 영역 및 상기 제1 영역과 다른 제2 영역을 포함하는 비휘발성 메모리; 및
    제1 데이터, 제2 데이터, 및 제3 데이터를 상기 비휘발성 메모리의 제1 영역에 저장하는 컨트롤러를 포함하고,
    상기 비휘발성 메모리의 제1 영역은 제1 저장 영역, 상기 제1 영역에 연속되는 제2 저장 영역, 및 상기 제2 저장 영역에 연속되는 제3 저장 영역을 포함하고,
    상기 제1 데이터의 일부는 상기 제1 저장 영역에 저장되고,
    상기 제1 데이터의 다른 일부는 상기 제2 저장 영역에 저장되고,
    상기 제2 데이터는 상기 제2 저장 영역에 저장되고,
    상기 제3 데이터의 일부는 상기 제2 저장 영역에 저장되고,
    상기 제3 데이터의 다른 일부는 상기 제3 저장 영역에 저장되고,
    상기 제2 데이터가 시작되는 상기 제2 저장 영역의 오프셋(offset) 값은 상기 비휘발성 메모리의 제2 영역에 저장되고,
    상기 제1 데이터의 다른 일부가 시작되는 상기 제2 저장 영역의 오프셋 값은 상기 비휘발성 메모리의 상기 제2 영역에 저장되지 않고,
    상기 제3 데이터의 일부가 시작되는 상기 제2 저장 영역의 오프셋 값은 상기 비휘발성 메모리의 상기 제2 영역에 저장되지 않는 데이터 저장 장치.
  2. 제 1항에 있어서,
    상기 제1 데이터는 제1 유저 데이터와 상기 제1 유저 데이터의 데이터 크기 정보를 포함하는 제1 메타 데이터를 포함하고,
    상기 제2 데이터는 제2 유저 데이터와 상기 제2 유저 데이터의 데이터 크기 정보를 포함하는 제2 메타 데이터를 포함하는 데이터 저장 장치.
  3. 제 2항에 있어서,
    상기 제1 유저 데이터는 제1 키(key) 데이터와 제1 밸류(value) 데이터를 포함하고, 상기 제2 유저 데이터는 제2 키 데이터와 제2 밸류 데이터를 포함하는 데이터 저장 장치.
  4. 제 3항에 있어서,
    상기 제1 메타 데이터는 상기 제1 키 데이터의 데이터 크기 정보와 상기 제1 밸류 데이터의 데이터 크기 정보를 포함하고, 상기 제2 메타 데이터는 상기 제2 키 데이터의 데이터 크기 정보와 상기 제2 밸류 데이터의 데이터 크기 정보를 포함하는 데이터 저장 장치.
  5. 제 1항에 있어서,
    상기 제1 및 제2 데이터가 버퍼링되는 버퍼 메모리를 더 포함하고,
    상기 컨트롤러가 상기 제1 데이터를 상기 비휘발성 메모리의 제1 영역에 저장할 때, 상기 제1 데이터의 크기가 상기 제1 저장 영역의 여유 공간의 크기보다 큰 경우,
    상기 컨트롤러는 상기 제1 데이터를 제1 및 제2 서브 데이터로 분할하고, 상기 제1 서브 데이터를 상기 제1 저장 영역에 저장하고, 상기 제2 서브 데이터를 상기 제2 저장 영역에 저장하고, 상기 제2 저장 영역의 오프셋 값을 상기 비휘발성 메모리의 제2 영역에 저장하는 데이터 저장 장치.
  6. 제 1항에 있어서,
    상기 컨트롤러가 상기 제1 및 제2 데이터의 리드 명령을 수신하는 경우,
    상기 컨트롤러는,
    상기 제1 저장 영역을 스캔하여 상기 제1 데이터의 일부를 리드하고,
    상기 제2 저장 영역을 스캔하여 상기 제1 데이터의 나머지 일부를 리드하고,
    상기 제2 저장 영역의 오프셋 값에서부터 상기 제2 저장 영역을 스캔하여 상기 제2 데이터를 리드하는 데이터 저장 장치.
  7. 제1 및 제2 저장 영역과 스페어 영역을 포함하는 비휘발성 메모리; 및
    제1 데이터, 제2 데이터, 및 제3 데이터를 상기 비휘발성 메모리에 저장하는 컨트롤러를 포함하고,
    상기 제1 데이터의 크기가 상기 제1 저장 영역의 저장 가능 공간의 크기보다 큰 경우,
    상기 컨트롤러는 상기 제1 데이터를 제1 및 제2 서브 데이터로 분할하고, 상기 제1 서브 데이터를 상기 제1 저장 영역에 저장하고, 상기 제2 서브 데이터를 상기 제1 저장 영역에 연속인 상기 제2 저장 영역의 제1 부분에 저장하고, 상기 제2 데이터를 상기 제1 부분에 연속인 상기 제2 저장 영역의 제2 부분에 저장하고, 상기 제2 부분에 연속인 상기 제2 저장 영역의 제3 부분에 상기 제3 데이터를 저장하고, 상기 제2 서브 데이터의 크기에 대응하는 상기 제2 저장 영역의 오프셋 값을 상기 스페어 영역에 저장하고, 상기 제2 저장 영역 내 상기 제2 서브 데이터의 시작에 대응하는 오프셋 값을 저장하지 않고, 상기 제2 저장 영역 내 상기 제3 데이터의 시작에 대응되는 오프셋 값을 저장하지 않고,
    상기 제1 데이터의 크기가 상기 제1 저장 영역의 크기보다 작은 경우,
    상기 컨트롤러는 상기 제1 데이터를 상기 제1 저장 영역에 저장하는 데이터 저장 장치.
  8. 제1 데이터의 제1 서브 데이터가 저장되는 제1 저장 영역과, 상기 제1 데이터의 제2 서브 데이터가 저장되고, 상기 제2 서브 데이터와 연속되는 제2 데이터가 저장되고, 상기 제2 데이터와 연속되는 제3 데이터가 저장되는 제2 저장 영역과, 상기 제1 저장 영역과 관련된 제1 오프셋이 저장되는 제1 스페어 영역과, 상기 제2 저장 영역 내 상기 제2 데이터의 시작의 제2 오프셋을 저장하고 상기 제2 저장 영역 내 상기 제3 데이터의 시작의 오프셋 값을 저장하지 않는 제2 스페어 영역을 포함하는 비휘발성 메모리; 및
    상기 제1 저장 영역에 저장된 상기 제1 서브 데이터를 리드(read)하여, 외부 호스트로 상기 제1 서브 데이터를 전송하는 컨트롤러를 포함하고,
    상기 제2 오프셋은 상기 제2 서브 데이터의 크기에 대응되고,
    상기 컨트롤러가 상기 제1 서브 데이터를 리드할 때, 상기 컨트롤러는 상기 제1 스페어 영역에 저장된 상기 제1 오프셋을 참조하여, 상기 제1 오프셋에서부터 상기 제1 저장 영역을 스캔함으로써 상기 제1 서브 데이터를 리드하고,
    상기 컨트롤러가 상기 제2 서브 데이터를 리드할 때, 상기 컨트롤러는 상기 제1 스페어 영역에 저장된 오프셋을 참조하지 않는 데이터 저장 장치.
  9. 제 8항에 있어서,
    상기 비휘발성 메모리는 제3 데이터의 적어도 일부가 저장된 제3 저장 영역과, 제3 스페어 영역을 더 포함하고,
    상기 컨트롤러는 상기 제3 데이터를 리드하여 상기 외부 호스트로 전송하되,
    상기 컨트롤러가 상기 제3 데이터를 리드할 때, 상기 제3 스페어 영역에 저장된 오프셋이 없는 경우,
    상기 컨트롤러는 상기 제3 저장 영역의 처음부터 상기 제3 저장 영역을 스캔함으로써 상기 제3 데이터를 리드하는 데이터 저장 장치.
  10. 제 8항에 있어서,
    상기 비휘발성 메모리는 제3 데이터의 적어도 일부가 저장된 제3 저장 영역과, 상기 제3 저장 영역과 관련된 제3 오프셋이 저장되는 제3 스페어 영역을 더 포함하고,
    상기 컨트롤러는 상기 제3 데이터를 리드하여 상기 외부 호스트로 전송하되,
    상기 컨트롤러가 상기 제3 데이터를 리드할 때,
    상기 컨트롤러는 상기 제3 스페어 영역에 저장된 상기 제3 오프셋을 참조하여, 상기 제3 오프셋에서부터 상기 제3 저장 영역을 스캔함으로써 상기 제3 데이터를 리드하는 데이터 저장 장치.
KR1020180048519A 2018-04-26 2018-04-26 데이터 저장 장치 KR102552689B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180048519A KR102552689B1 (ko) 2018-04-26 2018-04-26 데이터 저장 장치
US16/362,733 US11112976B2 (en) 2018-04-26 2019-03-25 Data storage device that stores multiple values corresponding to multiple keys in a page
CN201910307898.XA CN110413221B (zh) 2018-04-26 2019-04-17 数据存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180048519A KR102552689B1 (ko) 2018-04-26 2018-04-26 데이터 저장 장치

Publications (2)

Publication Number Publication Date
KR20190124493A KR20190124493A (ko) 2019-11-05
KR102552689B1 true KR102552689B1 (ko) 2023-07-05

Family

ID=68291146

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180048519A KR102552689B1 (ko) 2018-04-26 2018-04-26 데이터 저장 장치

Country Status (3)

Country Link
US (1) US11112976B2 (ko)
KR (1) KR102552689B1 (ko)
CN (1) CN110413221B (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080282023A1 (en) 2007-05-09 2008-11-13 Stmicroelectronics S.R.L. Restoring storage devices based on flash memories and related circuit, system, and method

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100528967B1 (ko) 2002-12-18 2005-11-15 한국전자통신연구원 가변 길이의 패킷 저장을 위한 메모리 관리 장치 및 방법
KR101274181B1 (ko) * 2006-02-13 2013-06-14 삼성전자주식회사 플래시 메모리를 관리하는 장치 및 방법
KR100843135B1 (ko) * 2006-11-20 2008-07-02 삼성전자주식회사 비휘발성 메모리 관리 방법 및 장치
KR101510120B1 (ko) * 2008-11-21 2015-04-10 삼성전자주식회사 메모리 장치 및 메모리 장치의 관리 방법
KR101555022B1 (ko) 2008-12-02 2015-09-23 삼성전자주식회사 메모리 장치, 그것을 포함한 메모리 시스템 및 그것의 맵핑정보 복원 방법
US8176360B2 (en) 2009-08-11 2012-05-08 Texas Memory Systems, Inc. Method and apparatus for addressing actual or predicted failures in a FLASH-based storage system
KR20110139956A (ko) 2010-06-24 2011-12-30 삼성전자주식회사 맵핑 테이블을 복구하는 데이터 기억 장치 및 데이터 관리 방법
US9075710B2 (en) 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
US9507523B1 (en) 2012-10-12 2016-11-29 Western Digital Technologies, Inc. Methods, devices and systems for variable size logical page management in a solid state drive
US9329991B2 (en) 2013-01-22 2016-05-03 Seagate Technology Llc Translation layer partitioned between host and controller
US9524103B2 (en) * 2014-09-10 2016-12-20 Netapp, Inc. Technique for quantifying logical space trapped in an extent store
KR102570367B1 (ko) * 2016-04-21 2023-08-28 삼성전자주식회사 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치를 액세스하는 액세스 방법
KR102656175B1 (ko) * 2016-05-25 2024-04-12 삼성전자주식회사 스토리지 장치 및 랜덤 액세스 메모리를 제어하는 방법 및 불휘발성 메모리 장치 및 버퍼 메모리를 제어하는 방법
US10261913B2 (en) * 2017-04-20 2019-04-16 Alibaba Group Holding Limited Persistent memory for key-value storage
US10216445B2 (en) * 2017-06-30 2019-02-26 Intel Corporation Key-value deduplication
US10606760B2 (en) * 2017-08-23 2020-03-31 Samsung Electronics Co., Ltd. Nonvolatile memory devices and methods of controlling the same

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080282023A1 (en) 2007-05-09 2008-11-13 Stmicroelectronics S.R.L. Restoring storage devices based on flash memories and related circuit, system, and method

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
비특허문헌1
비특허문헌2

Also Published As

Publication number Publication date
US11112976B2 (en) 2021-09-07
CN110413221B (zh) 2024-06-07
KR20190124493A (ko) 2019-11-05
US20190332283A1 (en) 2019-10-31
CN110413221A (zh) 2019-11-05

Similar Documents

Publication Publication Date Title
KR102398186B1 (ko) 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법
KR102580820B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US10127166B2 (en) Data storage controller with multiple pipelines
KR102691851B1 (ko) 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그 동작 방법
KR102233400B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US11249897B2 (en) Data storage device and operating method thereof
KR20200073017A (ko) 데이터 저장 장치와, 그것의 동작 방법
US20200218653A1 (en) Controller, data storage device, and operating method thereof
KR102592803B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20190117117A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20200093362A (ko) 메모리 시스템 및 그것의 동작 방법
KR20200042791A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20200074464A (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
KR20190083148A (ko) 데이터 저장 장치 및 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템
KR20210147696A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11681638B2 (en) Method of synchronizing time between host device and storage device and system performing the same
US20220229775A1 (en) Data storage device and operating method thereof
KR20210013445A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
US10691352B2 (en) Data storage device and method of operating the same
US11263126B2 (en) Data storage device and operating method thereof
KR20210068734A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102552689B1 (ko) 데이터 저장 장치
US11409473B2 (en) Data storage device and operating method thereof
KR102695482B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US10657046B2 (en) Data storage device and operating method thereof

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