KR20220099874A - 저장 장치, 플래시 메모리 컨트롤러 및 그 제어 방법 - Google Patents

저장 장치, 플래시 메모리 컨트롤러 및 그 제어 방법 Download PDF

Info

Publication number
KR20220099874A
KR20220099874A KR1020210025650A KR20210025650A KR20220099874A KR 20220099874 A KR20220099874 A KR 20220099874A KR 1020210025650 A KR1020210025650 A KR 1020210025650A KR 20210025650 A KR20210025650 A KR 20210025650A KR 20220099874 A KR20220099874 A KR 20220099874A
Authority
KR
South Korea
Prior art keywords
data
flash memory
block
access mode
host device
Prior art date
Application number
KR1020210025650A
Other languages
English (en)
Other versions
KR102596244B1 (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 KR20220099874A publication Critical patent/KR20220099874A/ko
Application granted granted Critical
Publication of KR102596244B1 publication Critical patent/KR102596244B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1004Compatibility, e.g. with legacy hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/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/7202Allocation control and policies

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)
  • Read Only Memory (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 플래시 메모리 컨트롤러에 사용되는 제어 방법을 공개한다. 상기 플래시 메모리 컨트롤러는 플래시 메모리 모듈에 액세스하도록 사용되고, 상기 제어 방법은 호스트 장치로부터 설정 명령을 수신하여, 플래시 메모리 모듈의 적어도 일부분을 영역 네임 스페이스로 설정하는 단계; 상기 호스트 장치로부터의 쓰기 명령을 수신하여, 제1 영역에 대응하는 데이터를 상기 플래시 메모리 모듈의 복수의 블록에 기록하는 단계를 포함하고, 상기 제1 영역의 데이터를 상기 복수의 블록에 기록할 때 사용되는 액세스 모드는 각 영역 및 각 블록의 크기에 따라 결정된다.

Description

저장 장치, 플래시 메모리 컨트롤러 및 그 제어 방법{STORAGE DEVICE, FLASH MEMORY CONTROL AND CONTROL METHOD THEREOF}
본 발명은 플래시 메모리에 관한 것이다.
비 휘발성 메모리 저장 장치(Non-Volatile Memory express, NVMe)사양에서, 하나의 영역 네임 스페이스(zoned namespace)가 지정되어 있으나, 상기 영역 네임 스페이스 및 상기 영역 네임 스페이스의 각 영역은 단순히 호스트 장치의 측면에서 보이므로, 호스트 장치에 의해 정의되는 각 영역의 크기와 저장 장치 중 플래시 메모리 모듈 내의 각 블록(block)의 크기는 고정된 관계가 없고, 따라서, 호스트 장치가 하나의 영역에 대응하는 데이터를 플래시 메모리 모듈에 기록하려고 준비할 때, 플래시 메모리 컨트롤러는 대량의 논리 주소와 물리적 위치의 매핑표를 생성해야 하고, 예를 들면 데이터 페이지(page)를 단위로 논리 주소와 물리적 위치의 매핑 관계를 기록하므로, 플래시 메모리 컨트롤러의 데이터 처리에 부담을 주고, SRAM(Static Random Access Memory) 및/또는 DRAM(Dynamic Random Access Memory)의 저장 공간도 차지하게 된다.
따라서, 본 발명의 목적은 플래시 메모리 컨트롤러를 제공함으로써, 호스트 장치에 의해 플래시 메모리 모듈 내의 영역 네임 스페이스에 기록된 데이터를 효율적으로 관리할 수 있고, 구축된 논리 주소와 물리적 위치 매핑표는 비교적 작은 크기를 가지므로 선행 기술의 상술한 문제점을 해결할 수 있다.
본 발명의 실시예에서, 플래시 메모리 컨트롤러에 적용되는 제어 방법을 공개하는바, 상기 플래시 메모리 컨트롤러는 플래시 메모리 모듈을 액세스하도록 사용되고, 상기 플래시 메모리 모듈은 복수의 블록을 포함하고, 각 블록은 복수의 데이터 페이지를 포함하고, 상기 제어 방법은, 호스트 장치로부터 설정 명령을 수신하되, 상기 설정 명령은 플래시 메모리 모듈의 적어도 일부분을 영역 네임 스페이스로 설정하고, 상기 영역 네임 스페이스는 논리적으로 복수의 영역을 포함하고, 상기 호스트 장치의 상기 영역 네임 스페이스에 대한 데이터 기록 액세스는 반드시 영역 단위로 진행해야 하고, 각 영역의 크기는 모두 동일하고, 각 영역 내 대응하는 논리 주소는 반드시 연속적이어야 하고, 영역 사이에 중복되는 논리 주소가 없는 단계; 제1 액세스 모드, 제2 액세스 모드, 제3 액세스 모드 및 제4 액세스 모드 중 하나를 사용하여, 상기 호스트 장치로부터의 데이터를 상기 플래시 메모리 모듈에 기록하되, 상기 데이터는 특정 영역의 모든 데이터인 단계; 상기 제1 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 복수의 특정 블록에 순차적으로 기록하는 단계; 및 상기 데이터가 기록된 후, 상기 복수의 특정 블록의 마지막 특정 블록의 남은 데이터 페이지에 유효하지 않은 데이터를 기록하거나, 남은 데이터 페이지를 공백으로 유지하면서 삭제 전에 상기 호스트 장치로부터의 데이터를 상기 호스트 장치의 쓰기 명령에 따라 기록하지 않는 단계; 상기 제2 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 상기 복수의 특정 블록에 순차적으로 기록하는 단계; 및 상기 데이터가 기록된 후에만, 상기 마지막 특정 블록의 남은 데이터 페이지에 다른 영역의 데이터가 기록될 수 있는 단계; 상기 제3 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 하나의 특정 블록에 순차적으로 기록하는 단계; 및 상기 데이터가 기록된 후, 상기 특정 블록의 남은 데이터 페이지에 유효하지 않은 데이터를 기록하거나, 남은 데이터 페이지를 공백으로 유지하면서 삭제 전에 상기 호스트 장치로부터의 데이터를 상기 호스트 장치의 쓰기 명령에 따라 기록하지 않는 단계; 상기 제4 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 하나의 특정 블록에 순차적으로 기록하는 단계; 및 상기 데이터가 기록된 후에만, 상기 마지막 특정 블록의 남은 데이터 페이지에 다른 영역의 데이터가 기록될 수 있는 단계;를 포함한다.
본 발명의 다른 실시예에서, 플래시 메모리 컨트롤러를 공개하는바, 상기 플래시 메모리 컨트롤러는 플래시 메모리 모듈을 액세스하도록 사용되고, 상기 플래시 메모리 모듈은 복수의 블록을 포함하고, 각 블록은 복수의 데이터 페이지를 포함하고, 상기 플래시 메모리 컨트롤러는 판독 전용 메모리, 마이크로 프로세서 및 버퍼 메모리를 포함한다. 상기 판독 전용 메모리는 프로그램 코드를 저장하도록 사용되고, 상기 마이크로 프로세서는 상기 프로그램 코드를 실행하여 상기 플래시 메모리 모듈에 대한 액세스를 제어하도록 사용된다. 상기 플래시 메모리 컨트롤러의 조작과정에서, 상기 마이크로 프로세서는 호스트 장치로부터 설정 명령을 수신하고, 상기 설정 명령은 플래시 메모리 모듈의 적어도 일부분을 영역 네임 스페이스로 설정하고, 상기 영역 네임 스페이스는 논리적으로 복수의 영역을 포함하고, 상기 호스트 장치의 상기 영역 네임 스페이스에 대한 데이터 기록 액세스는 반드시 영역 단위로 진행해야 하고, 각 영역의 크기는 모두 동일하고, 각 영역 내 대응하는 논리 주소는 반드시 연속적이어야 하고, 영역 사이에 중복되는 논리 주소가 없어야 하고, 상기 마이크로 프로세서는 제1 액세스 모드, 제2 액세스 모드, 제3 액세스 모드 및 제4 액세스 모드 중 하나를 사용하여, 상기 호스트 장치로부터의 데이터를 상기 플래시 메모리 모듈에 기록하되, 상기 데이터는 특정 영역의 모든 데이터이고; 상기 마이크로 프로세서가 상기 제1 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 복수의 특정 블록에 순차적으로 기록하고, 그리고 상기 데이터가 기록된 후, 상기 복수의 특정 블록의 마지막 특정 블록의 남은 데이터 페이지에 유효하지 않은 데이터를 기록하거나, 남은 데이터 페이지를 공백으로 유지하면서 삭제 전에 상기 호스트 장치로부터의 데이터를 상기 호스트 장치의 쓰기 명령에 따라 기록하지 않는 단계; 상기 마이크로 프로세서가 상기 제2 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 상기 복수의 특정 블록에 순차적으로 기록하고, 그리고 상기 데이터가 기록된 후에만, 상기 마지막 특정 블록의 남은 데이터 페이지에 다른 영역의 데이터가 기록될 수 있으며; 상기 마이크로 프로세서가 상기 제3 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 하나의 특정 블록에 순차적으로 기록하고, 그리고 상기 데이터가 기록된 후, 상기 특정 블록의 남은 데이터 페이지에 유효하지 않은 데이터를 기록하거나, 남은 데이터 페이지를 공백으로 유지하면서 삭제 전에 상기 호스트 장치로부터의 데이터를 상기 호스트 장치의 쓰기 명령에 따라 기록하지 않는 단계; 상기 마이크로 프로세서가 상기 제4 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 하나의 특정 블록에 순차적으로 기록하고, 그리고 상기 데이터가 기록된 후에만, 상기 마지막 특정 블록의 남은 데이터 페이지에 다른 영역의 데이터가 기록될 수 있다.
본 발명의 다른 실시예에서, 저장 장치를 공개하는바, 플래시 메모리 모듈 및 플래시 메모리 컨트롤러를 포함하고, 상기 플래시 메모리 모듈은 복수의 블록을 포함하고, 각 블록은 복수의 데이터 페이지를 포함하고, 상기 플래시 메모리 컨트롤러는 상기 플래시 메모리 모듈을 액세스하도록 사용된다. 상기 저장 장치의 조작 과정에서, 상기 플래시 메모리 컨트롤러는 호스트 장치로부터 설정 명령을 수신하고, 상기 설정 명령은 플래시 메모리 모듈의 적어도 일부분을 영역 네임 스페이스로 설정하고, 상기 영역 네임 스페이스는 논리적으로 복수의 영역을 포함하고, 상기 호스트 장치의 상기 영역 네임 스페이스에 대한 데이터 기록 액세스는 반드시 영역 단위로 진행해야 하고, 각 영역의 크기는 모두 동일하고, 각 영역 내 대응하는 논리 주소는 반드시 연속적이어야 하고, 영역 사이에 중복되는 논리 주소가 없어야 하고, 상기 플래시 메모리 컨트롤러는 제1 액세스 모드, 제2 액세스 모드, 제3 액세스 모드 및 제4 액세스 모드 중 하나를 사용하여, 상기 호스트 장치로부터의 데이터를 상기 플래시 메모리 모듈에 기록하되, 상기 데이터는 특정 영역의 모든 데이터이고; 상기 플래시 메모리 컨트롤러가 상기 제1 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 복수의 특정 블록에 순차적으로 기록하고, 그리고 상기 데이터가 기록된 후, 상기 복수의 특정 블록의 마지막 특정 블록의 남은 데이터 페이지에 유효하지 않은 데이터를 기록하거나, 남은 데이터 페이지를 공백으로 유지하면서 삭제 전에 상기 호스트 장치로부터의 데이터를 상기 호스트 장치의 쓰기 명령에 따라 기록하지 않고; 상기 플래시 메모리 컨트롤러가 상기 제2 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 상기 복수의 특정 블록에 순차적으로 기록하고, 그리고 상기 데이터가 기록된 후에만, 상기 마지막 특정 블록의 남은 데이터 페이지에 다른 영역의 데이터가 기록될 수 있으며; 상기 플래시 메모리 컨트롤러가 상기 제3 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 하나의 특정 블록에 순차적으로 기록하고, 그리고 상기 데이터가 기록된 후, 상기 특정 블록의 남은 데이터 페이지에 유효하지 않은 데이터를 기록하거나, 남은 데이터 페이지를 공백으로 유지하면서 삭제 전에 상기 호스트 장치로부터의 데이터를 상기 호스트 장치의 쓰기 명령에 따라 기록하지 않고; 상기 플래시 메모리 컨트롤러가 상기 제4 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 하나의 특정 블록에 순차적으로 기록하고, 그리고 상기 데이터가 기록된 후에만, 상기 마지막 특정 블록의 남은 데이터 페이지에 다른 영역의 데이터가 기록될 수 있다.
도 1은 본 발명의 실시예에 따른 전자 장치의 개략도이다.
도 2a는 본 발명의 실시예에 따른 저장 장치 내의 플래시 메모리 컨트롤러의 개략도이다.
도 2b는 본 발명의 실시예에 따른 플래시 메모리 모듈 중 블록의 개략도이다.
도 3은 플래시 메모리 모듈은 일반 저장 공간 및 영역 네임 스페이스를 포함하는 개략도이다.
도 4는 영역 네임 스페이스가 복수의 영역으로 분할된 개략도이다.
도 5는 본 발명의 실시예에 따른 호스트 장치로부터의 데이터를 영역 네임 스페이스에 기록하는 흐름도이다.
도 6은 영역의 데이터를 플래시 메모리 모듈 내의 블록에 기록하는 개략도이다.
도 7a는 본 발명의 실시예의 L2P매핑표의 개략도이다.
도 7b는 본 발명의 다른 실시예의 L2P매핑표의 개략도이다.
도 7c는 본 발명의 다른 실시예의 L2P매핑표의 개략도이다.
도 7d는 본 발명의 다른 실시예의 L2P매핑표의 개략도이다.
도 8은 본 발명의 실시예에 따른, 영역 네임 스페이스에서 데이터를 읽는 흐름도이다.
도 9는 본 발명의 다른 실시예에 따른, 호스트 장치로부터의 데이터를 영역 네임 스페이스에 기록하는 흐름도이다.
도 10은 영역의 데이터를 플래시 메모리 모듈 내의 블록에 기록하는 개략도이다.
도 11a는 본 발명의 실시예에 따른 L2P매핑표와 공용 블록표의 개략도이다.
도 11b은 본 발명의 실시예에 따른 L2P매핑표와 공용 블록표의 개략도이다.
도 12는 본 발명의 다른 실시예에 따른 공용 블록표의 개략도이다.
도 13은 본 발명의 실시예에 따른 영역 네임 스페이스에서 데이터를 읽는 흐름도이다.
도 14는 본 발명의 다른 실시예에 따른 호스트 장치로부터의 데이터를 영역 네임 스페이스에 기록하는 흐름도이다.
도 15는 영역의 데이터를 플래시 메모리 모듈 내의 블록에 기록하는 개략도이다.
도 16은 본 발명의 실시예에 따른 L2P매핑표의 개략도이다.
도 17은 본 발명의 다른 실시예에 따른 영역 네임 스페이스에서 데이터를 읽는 흐름도이다.
도 18은 본 발명의 다른 실시예에 따른 호스트 장치로부터의 데이터를 영역 네임 스페이스에 기록하는 흐름도이다.
도 19는 영역의 데이터를 플래시 메모리 모듈 내의 블록에 기록하는 개략도이다.
도 20은 본 발명의 실시예에 따른 L2P매핑표의 개략도이다.
도 21은 본 발명의 실시예에 따른 영역 네임 스페이스에서 데이터를 읽는 흐름도이다.
도 22는 일반 저장 공간 내의 슈퍼 블록의 개략도이다.
도 23은 본 발명의 실시예에 따른 플래시 메모리 모듈을 구성하는 방법의 흐름도이다.
도 24는 영역 네임 스페이스 내의 슈퍼 블록의 개략도이다.
도 25는 본 발명의 실시예에 따른 플래시 메모리 컨트롤러에 적용되는 제어 방법의 흐름도이다.
도 1은 본 발명의 실시예에 따른 전자 장치(100)의 개략도이다. 도 1에 도시된 바와 같이, 전자 장치는 호스트 장치(110) 및 복수의 저장 장치(120_1~120_N)를 포함하고, 각 저장 장치(예를 들면 저장 장치(120_1))는, 플래시 메모리 컨트롤러(122) 및 플래시 메모리 모듈(124)을 포함한다. 본 실시예에서, 복수의 저장 장치(120_1~120_N) 각각은 솔리드 스테이트 드라이브(solid-state drive, SSD) 또는 플래시 메모리 모듈을 갖는 모든 저장 장치일 수 있고, 호스트 장치는 중앙 처리 장치 또는 저장 장치(120_1~120_N)를 액세스하기 위한 기타 전자 장치 또는 소자일 수 있고, 또한 전자 장치(100) 자체는 서버, 개인용 컴퓨터, 노트북 컴퓨터 또는 임의의 휴대용 전자 장치일 수 있다. 유의할 것은, 도 1은 복수의 저장 장치(120_1~120_N)를 보여줬으나, 실시예에서, 전자 장치(100)는 하나의 저장 장치(120_1)만을 가질 수 있다.
도 2a는 본 발명의 실시예에 따른 저장 장치(120_1) 내의 플래시 메모리 컨트롤러(122)의 개략도이다. 도 2a에 도시된 바와 같이, 플래시 메모리 컨트롤러(122)는 마이크로 프로세서(212), 판독 전용 메모리(Read Only Memory, ROM)(212M), 제어 논리(214), 버퍼 메모리(216) 및 인터페이스 논리(218)를 포함한다. 판독 전용 메모리(212M)는 프로그램 코드(212C)를 저장하도록 사용되고, 마이크로 프로세서(212)는 프로그램 코드(212C)를 실행하여 플래시 메모리 모듈(124)에 대한 액세스(Access)를 제어하도록 사용된다. 제어 논리(214)은 인코더(232) 및 디코더(234)를 포함하고, 인코더(232)는 플래시 메모리 모듈(220)에 기록된 데이터를 인코딩하여 대응하는 검사 코드(또는 오류 정정 코드(Error Correction Code, ECC)라고 칭함)를 생성하도록 사용되고, 디코더(234)는 플래시 메모리 모듈(124)에서 읽은 데이터를 디코딩하도록 사용된다.
일반적인 경우, 플래시 메모리 모듈(124)은 복수의 플래시 메모리 칩을 포함하고, 각 플래시 메모리 칩은 복수의 블록(block)을 포함하고, 플래시 메모리 컨트롤러(122)의 플래시 메모리 모듈(124)에 대한 데이터 삭제 작업은 블록 단위로 진행한다. 또한, 블록은 특정 수의 데이터 페이지(page)를 기록할 수 있고, 플래시 메모리 컨트롤러(122)의 플래시 메모리 모듈(124)에 대한 데이터 기록 작업은 데이터 페이지 단위로 기록한다. 본 실시예에서, 플래시 메모리 모듈(124)은 3D NAND형 플래시 메모리(3D NAND-type flash) 모듈이다.
실제로, 마이크로 프로세서(212)를 통해 프로그램 코드(212C)를 실행하는 플래시 메모리 컨트롤러(210)는 자체 내부 소자를 사용하여 많은 제어 동작을 진행할 수 있고, 예를 들면 제어 논리(214)를 사용하여 플래시 메모리 모듈(124)의 액세스 동작(특히 적어도 하나의 블록 또는 적어도 하나의 데이터 페이지의 액세스 동작)을 제어하고, 버퍼 메모리(216)를 사용하여 필요한 버퍼 처리를 진행하고, 인터페이스 논리(218)을 사용하여 호스트 장치(110)와 통신한다. 버퍼 메모리(216)는 랜덤 액세스 메모리(Random Access Memory, RAM)로 구현된다. 예를 들면, 버퍼 메모리(216)는 SRAM일 수 있으나, 본 발명은 이에 제한되지 않는다. 또한, 플래시 메모리 컨트롤러(122)는 DRAM(240)에 연결된다. 유의할 것은, DRAM(240)은 플래시 메모리 컨트롤러(122)에 포함될 수도 있고, 예를 들면 플래시 메모리 컨트롤러(122)와 동일한 패키지 내에 존재한다.
본 실시예에서, 저장 장치(120_1)는 NVMe사양을 지원하며, 즉 인터페이스 논리(218)은 특정 통신 표준(예를 들면 PCI(Peripheral Component Interconnect)표준 또는 PCIe표준)에 부합할 수 있고, 커넥터를 통해 호스트 장치(110)와 통신하는 등 상기 특정 통신 표준에 따라 통신할 수 있다.
도 2b는 본 발명의 실시예에 따른 플래시 메모리 모듈(124) 중 블록(200)의 개략도이고, 플래시 메모리 모듈(124)은 3D NAND형 플래시 메모리이다. 도 2b에 도시된 바와 같이, 블록(200)은 복수의 메모리 유닛(예를 들면 도시된 플로팅게이트 트랜지스터(202) 또는 기타 전하 트랩(charge trap)소자)을 포함하고, 복수의 비트 라인(도면은 BL1~BL3만 도시 됨) 및 복수의 워드 라인(예를 들면 도시된 WL0~WL2, WL4~WL6)을 통해 3D NAND형 플래시 메모리 구조를 구성한다. 도 2b에서, 상단의 하나의 평면을 예로 들면, 워드 라인(WL0)의 모든 플로팅게이트 트랜지스터는 적어도 하나의 데이터 페이지를 구성하고, 워드 라인(WL1)의 모든 플로팅게이트 트랜지스터는 다른 적어도 하나의 데이터 페이지를 구성하고, 워드 라인(WL2)의 모든 플로팅게이트 트랜지스터는 또 다른 적어도 하나의 데이터 페이지를 구성하는 등 규칙으로 구성된다. 또한, 플래시 메모리 기록 방식이 상이함에 따라 워드 라인(WL0)과 데이터 페이지(논리 데이터 페이지)사이의 정의도 다소 상이하고, 구체적으로, SLC(Single-Level Cell) 방식으로 기록할 경우, 워드 라인(WL0)의 모든 플로팅게이트 트랜지스터는 하나의 논리 데이터 페이지에만 대응하고, MLC(Multi-Level Cell) 방식으로 기록할 경우, 워드 라인(WL0)의 모든 플로팅게이트 트랜지스터는 2개의 논리 데이터 페이지에 대응하고, TLC(Triple-Level Cell) 방식으로 기록할 경우, 워드 라인(WL0)의 모든 플로팅게이트 트랜지스터는 3개의 논리 데이터 페이지에 대응하고, QLC(Quad-Level Cell) 방식으로 기록할 경우, 워드 라인(WL0)의 모든 플로팅게이트 트랜지스터는 4개의 논리 데이터 페이지에 대응한다. 통상의 기술자라면 3D NAND형 플래시 메모리의 구조 및 워드 라인과 데이터 페이지 사이의 관계를 이해할 수 있으므로, 관련 세부 사항은 생략한다.
본 실시예에서, 호스트 장치(110)는 영역 네임 스페이스 명령 세트(Zoned Namespaces Command Set)와 같은 하나의 설정 명령 세트를 전송하여, 플래시 메모리 모듈(124)의 적어도 일부분을 영역 네임 스페이스(zoned namespace)로 설정할 수 있다. 도 3에 도시된 바와 같이, 호스트 장치(110)는 플래시 메모리 모듈(124)이 적어도 하나의 영역 네임 스페이스(본 실시예에서는 영역 네임 스페이스(310_1, 310_2)를 예로 들어 설명함) 및 적어도 하나의 일반 저장 공간(본 실시예에서는 일반 저장 공간(320_1, 320_2)을 예로 들어 설명함)을 갖도록 플래시 메모리 컨트롤러(122)에 설정 명령 세트를 전송할 수 있다. 영역 네임 스페이스(310_1)는 액세스에 있어서 복수의 영역(zone)으로 분할되고, 호스트 장치(110)의 영역 네임 스페이스(310_1)에 대한 데이터 기록은 반드시 논리적 블록주소(Logical block address, LBA) 단위로 진행해야 하고, 하나의 논리적 블록주소(또는 논리 주소라고 약칭)는 512바이트(512 bytes)의 데이터의 양을 의미할 수 있고, 호스트 장치(110)는 하나의 영역에 대해 연속적인 기록을 진행해야 한다. 구체적으로, 도 4를 참조하면, 영역 네임 스페이스(310_1)는 복수의 영역(예를 들면 Z0, Z1, Z2, Z3…등)으로 분할되고, 영역의 크기는 호스트 장치(110)에 의해 설정되며, 다만 각 영역의 크기는 모두 동일하고, 각 영역 내 대응하는 논리 주소는 반드시 연속적이어야 하고, 영역 사이에 중복되는 논리 주소가 없어야 한다(즉, 하나의 논리 주소는 하나의 영역에만 존재할 수 있다). 예를 들면, 각 영역의 크기는 x개의 논리 주소이고, 영역(Z3)의 시작 논리 주소를 LBA_k이라고 가정하면, 영역(Z3)은 논리 주소LBA_k, LBA_(k+1), LBA_(k+2), LBA_(k+3)…… LBA_(k+x-1)에 대응하는 데이터를 저장하기 위한 것이다. 실시예에서, 인접한 영역의 논리 주소도 연속적이고, 예를 들면, 영역(Z0)은 논리 주소(LBA_1 내지 LBA_2000)를 갖는 데이터를 저장하기 위한 것이고, 영역(Z1)은 논리 주소(LBA_2001 내지 LBA_4000)를 갖는 데이터를 저장하기 위한 것이고, 영역(Z2)은 논리 주소(LBA_4001 내지 LBA_6000)을 갖는 데이터를 저장하기 위한 것이고, 영역(Z3)은 논리 주소(LBA_6001 내지 LBA_8000)를 갖는 데이터를 저장하기 위한 것 등 규칙으로 구현된다. 또한, 하나의 논리 주소에 대응하는 데이터의 양의 크기는 호스트 장치(110)에 의해 결정될 수 있고, 예를 들면, 하나의 논리 주소에 대응하는 데이터의 양의 크기는 4 KB(Kilobyte)일 수 있다.
또한, 각 영역의 데이터가 기록될 때, 반드시 논리 주소의 순서에 따라 진행해야 한다. 구체적으로, 플래시 메모리 컨트롤러(122)는 기록된 데이터에 따라 하나의 기록 포인트(write point)를 설정함으로써, 데이터의 기록 순서를 제어한다. 구체적으로, 영역(Z1)은 논리 주소(LBA_2001 내지 LBA_4000)를 갖는 데이터를 저장하기 위한 것으로 가정하면, 호스트 장치(110)가 논리 주소(LBA_2001 내지 LBA_2051)에 대응하는 데이터를 플래시 메모리 컨트롤러(122)에 전송하면, 플래시 메모리 컨트롤러(122)는 기록 포인트를 다음 논리 주소(LBA_2052)로 설정한다. 만약 후속 호스트 장치(110)가 동일한 영역에 속하지만 논리 주소(LBA_2052)를 갖지 않는 데이터를 전송할 경우, 예를 들면 호스트 장치(110)는 논리 주소(LBA_3000)를 갖는 데이터를 전송할 경우, 플래시 메모리 컨트롤러(122)는 해당 데이터 기록을 거절하고 호스트 장치(110)에 기록 실패 메시지를 반송하고, 다시 말하면, 수신된 데이터의 논리 주소가 기록 포인트가 가리키는 논리 주소와 동일한 경우에만, 플래시 메모리 컨트롤러(122)가 데이터 기록을 허용한다. 또한, 복수의 영역의 데이터를 교대로 기록할 경우, 각 영역은 자체 기록 포인트를 가질 수 있다.
상술한 바와 같이, 호스트 장치(110)는 영역 단위로 저장 장치(120_1)와 통신하여 영역 네임 스페이스(310_1)에 액세스하지만, 상술한 영역 네임 스페이스(310_1) 및 각 영역은 호스트 장치(110)의 측면에서 본 것이므로, 따라서, 호스트 장치(110)에 의해 정의된 각 영역의 크기는 저장 장치(120_1) 중 플래시 메모리 모듈(124) 내의 각 물리적 블록의 크기와 고정적인 관계를 갖지 않는다. 구체적으로, 상이한 플래시 메모리 모듈 제조 업체에 의해 제조된 플래시 메모리 모듈은 동일하지 않고, 메모리 모듈마다 크기가 다른 물리적 블록을 가지며, 상기 복수의 물리적 블록의 크기는 반드시 정수 배는 아니고, 예를 들면 A모델의 플래시 메모리 모듈의 물리적 블록의 크기는 B모델의 플래시 메모리 모듈의 물리적 블록의 1.3배일 수 있고, C모델의 플래시 메모리 모듈의 물리적 블록의 크기는 B모델의 플래시 메모리 모듈의 물리적 블록의 3.7배일 수 있고, 이로 인해 호스트 장치(110)에 의해 설정된 영역을 물리적 블록과 일치(align)시키기가 매우 어려워진다. 이때 플래시 메모리 컨트롤러(122)는 논리 블록을 물리적 블록에 대응시킬 때 매우 큰 어려움에 직면하게 되고, 예를 들면, 저장 장치(120_1)에 사용자가 사용할 수 없는 여분의 공간이 많이 생길 수 있거나, 호스트 장치(110)가 하나의 영역에 대응하는 데이터를 플래시 메모리 모듈(124)에 기록하려고 준비할 때, 플래시 메모리 컨트롤러(122)가 물리적 위치(logical address to physical address, L2P) 매핑표에 논리 주소를 구축하는 복잡성을 증가시킬 것이다. 본 발명은 이하 실시예에서 플래시 메모리 컨트롤러(122)가 호스트 장치(110)의 액세스 명령에 따라 영역 네임 스페이스(310_1)에 대해 효율적으로 액세스를 진행할 수 있도록 하는 방법을 제시한다.
도 5는 본 발명의 실시예에 따른, 호스트 장치(110)로부터의 데이터를 영역 네임 스페이스(310_1)에 기록하는 흐름도이고, 본 실시예는, 각 영역에 대응하는 데이터의 양은 플래시 메모리 모듈(124) 중 각 물리적 블록의 크기보다 크고, 각 영역에 대응하는 데이터의 양은 플래시 메모리 모듈(124) 중 각 물리적 블록의 크기의 정수 배가 아닌 것으로 가정한다. 단계(500)에서, 프로세스가 시작되고, 호스트 장치(110) 및 저장 장치(120_1)의 전원이 켜지고 초기화 동작이 완료되면, 호스트 장치(110)는 저장 장치(120_1)의 저장 영역의 적어도 일부에 각 영역의 크기, 영역의 수, 논리적 블록주소의 크기 등 기본 설정을 설정하고, 예를 들면 영역 네임 스페이스 명령 세트(Zoned Namespaces Command Set)를 사용하여 설정한다. 단계(502)에서, 호스트 장치(110)는 쓰기 명령 및 대응하는 데이터를 플래시 메모리 컨트롤러(122)에 전송하고, 상기 데이터는 하나 또는 복수 영역의 데이터에 대응하고, 예를 들면 도 4에서 영역(Z3)의 논리 주소(LBA_k~LBA_(k+x-1))에 대응하는 데이터이다. 단계(504)에서, 플래시 메모리 컨트롤러(122)는 플래시 메모리 모듈(124)에서 적어도 하나의 블록(공백 블록, 또는 스페어 블록(spare block)이라고 칭함)을 선택하여, 호스트 장치(110)로부터의 데이터를 상기 적어도 하나의 블록에 순차적으로 기록한다. 호스트 장치(110)에 의해 설정된 영역의 크기는 물리적 블록의 크기와 일치시키기 매우 어려우므로, 호스트 장치가 영역(Z3) 중 모든 논리 주소에 쓰기 명령을 내린 후, 호스트 장치(110)가 기록하고자 하는 데이터는 일반적으로 여전히 물리적 블록의 저장 공간을 채울 수 없거나, 또는, 일반적으로 하나의 영역에 대응하는 데이터의 저장 용량은, 일반적으로 하나의 물리적 블록 중 호스트 장치(110)가 기록할 데이터를 저장하기 위한 영역의 크기의 정수 배가 아니다. 단계(506)에서, 데이터가 마지막 블록에 기록되고 데이터 기록이 완료된 후, 플래시 메모리 컨트롤러(122)는 마지막 블록의 남은 데이터 페이지에 유효하지 않은 데이터(invalid data)를 기록하거나, 남은 데이터 페이지를 직접 공백 상태로 유지할 수 있고, 유의할 것은, 각 블록은 기록 시간표, 논리 물리적 대응표, 오류 정정 코드의 검사 비트, 레이드 패리티 데이터(RAID parity)등 관리에 필요한 데이터를 저장하는 등 시스템 관리 정보를 저장하기 위해 일반적으로 여러 데이터 페이지를 남겨두며, 여기서 남은 데이터 페이지는 상기 복수의 시스템 관리 정보 및 호스트 장치(110)가 저장하고자 하는 데이터가 기록된 후 여전히 남아있는 데이터 페이지를 의미한다.
예를 들면, 도 6을 참조하면, 각 영역에 대응하는 데이터의 양이 플래시 메모리 모듈(124) 중 2개의 블록 내지 3개의 블록 사이인 것으로 가정하면, 플래시 메모리 컨트롤러(122)는 호스트 장치(110)가 영역(Z1)에 대해 전송한 기록 명령에 대한 응답으로, 영역(Z1)의 데이터를 블록(B3, B7 및 B8)에 순차적으로 기록할 수 있다. 유의할 것은, 실시예에서, 호스트 장치(110)가 영역(Z1)에 대해 전송한 쓰기 명령은 영역(Z1)의 시작 논리 주소를 포함하고, 플래시 메모리 컨트롤러(122)는 영역(Z1)의 시작 논리 주소를 물리적 블록(B3)의 시작 물리적 저장 공간(예를 들면 첫 번째 물리적 데이터 페이지)에 대응시키며, 또한, 플래시 메모리 컨트롤러(122)는 영역(Z1)의 시작 논리 주소에 대응하는 데이터를 물리적 블록(B3)의 시작 물리적 저장 공간(예를 들면 첫 번째 물리적 데이터 페이지)에 저장한다. 블록(B3, B7, B8)은 데이터 페이지(P1 내지 PM)를 모두 포함하고, 영역(Z1)의 데이터는 논리 주소에 따라 블록(B3)의 첫 번째 데이터 페이지(P1)에서 마지막 데이터 페이지(PM)까지 순차적으로 기록되고, 블록(B3)의 데이터 기록이 완료된 후, 계속하여 블록(B7)의 첫 번째 데이터 페이지(P1)에서 마지막 데이터 페이지(PM)까지 기록된다. 유의할 것은, 호스트 장치(110)가 영역(Z1)에 대한 논리 주소를 연속적으로 기록하더라도, 플래시 메모리 컨트롤러(122)는 여전히 불연속적인 블록(B3, B7)을 선택하여 상기 논리적으로 연속적인 데이터들을 저장하도록 할 수 있다. 블록(B7)의 데이터 기록이 완료된 후, 계속하여 블록(B8)의 첫 번째 데이터 페이지(P1)부터 시작하여 영역(Z1)의 데이터가 종료될 때까지 기록하며, 또한, 블록(B8)의 남은 데이터 페이지는 공백을 유지하거나, 유효하지 않은 데이터가 기록된다. 유사하게, 플래시 메모리 컨트롤러(122)는 영역(Z3)의 데이터를 블록(B12, B99 및 B6)에 순차적으로 기록할 수 있고, 블록(B12, B99 및 B6)은 데이터 페이지(P1 내지 PM)를 모두 포함하고, 영역(Z3)의 데이터는 논리 주소에 따라 블록(B12)의 첫 번째 데이터 페이지(P1)에서 마지막 데이터 페이지(PM)까지 순차적으로 기록되고, 블록(B12)의 데이터 기록이 완료된 후, 계속하여 블록(B99)의 첫 번째 데이터 페이지(P1)에서 마지막 데이터 페이지(PM)까지 기록하고, 블록(B99)의 데이터 기록이 완료된 후, 계속하여 블록(B6)의 첫 번째 데이터 페이지(P1)로부터 시작하여 영역(Z3)의 데이터가 종료될 때까지 기록하고, 또한, 블록(B6)의 남은 데이터 페이지는 공백을 유지하거나, 유효하지 않은 데이터가 기록된다. 유의할 것은, 플래시 메모리 컨트롤러(122)는 상기 복수의 유효하지 않은 데이터가 있는 물리적 데이터 페이지에 대한 논리 페이지와 물리적 페이지 사이의 링크 관계를 구축하지 않을 수 있다. 공백을 유지하거나 유효하지 않은 데이터가 기록된 상기 복수의 물리적 데이터 페이지를 갖는 물리적 블록은, 일반적으로 플래시 메모리 컨트롤러(122)에 의해 각 영역의 마지막 부분에 대응되거나, 또는 플래시 메모리 컨트롤러(122)는 영역의 마지막 논리 주소에 대응하는 데이터를 빈 페이지를 갖거나 유효하지 않은 페이지 데이터가 기록된 하나의 물리적 블록에 저장할 수 있다. 도 7b(후술)에 도시된 바와 같이, 논리 주소(Z1_LBA+S+2*y)는 물리적 블록주소(PBA8)에 대응될 수 있다. 또한 영역의 마지막 논리 주소의 데이터가 물리적 블록의 X번째 저장 유닛(예를 들면 물리적 저장 페이지 또는 섹션)에 저장될 경우, 상기 물리적 블록의 X+1번째 저장 유닛은 빈 페이지를 남겨두거나 유효하지 않은 페이지 데이터를 기록하며, 즉, 빈 페이지 또는 유효하지 않은 데이터가 기록된 데이터 페이지는 대응하는 영역의 마지막 논리 주소의 데이터가 저장되는 물리적 저장 유닛 다음에 후속된다. 다른 하나의 실시예에서, 호스트 장치(110)는 하나의 비교적 큰 영역의 크기(Zone Size) 및 하나의 비교적 작은 영역 용량(Zone capacity)을 정의하고, 예를 들면 영역의 크기는 512MB이고, 영역 용량은 500MB이며, 해당 예에서, 플래시 메모리 컨트롤러(122)는 빈 페이지 또는 유효하지 않은 데이터가 기록된 데이터 페이지를 대응하는 영역의 마지막 논리 주소의 데이터가 저장되는 물리적 저장 유닛 다음에 직접 후속되게 하지 않을 수 있다.
다른 실시예에서, 호스트 장치(110)는 영역(Z1, Z2)이 연속적인 논리 주소에 대해 쓰기 명령을 전송하고, 플래시 메모리 컨트롤러(122)는 영역(Z1, Z2)에 속하는 데이터를 저장하기 위해 블록(B3, B7, B8, B12, B99, B6)을 선택하였다. 호스트 장치(110)에 의해 설정된 영역의 크기는 물리적 블록의 크기와 일치하지 않으므로, 호스트 장치(110)가 기록하고자 하는 데이터는 여전히 물리적 블록의 저장 공간을 채울 수 없고, 예를 들면 물리적 블록(B8)의 호스트 데이터를 저장하기 위한 저장 공간을 채울 수 없으므로, 플래시 메모리 컨트롤러(122)는 여전히 물리적 블록(B8) 내의 상기 복수의 저장 공간을 공백으로 유지하거나 유효하지 않은 데이터를 채워야 하므로, 호스트 장치(110)가 영역(Z1, Z2) 내의 연속적인 논리 주소에 대해 쓰기 명령을 전송하더라도, 또한 물리적 블록(B8)이 데이터를 저장할 공간이 여전히 존재하는 경우, 플래시 메모리 컨트롤러(122)는 여전히 영역(Z2)의 시작 논리 주소에 대응하는 데이터를 물리적 블록(B8)에 저장하지 않고, 다시 말하면, 호스트 장치(110)가 연속적인 논리 주소의 쓰기 명령(예를 들면 영역(Z1)의 마지막 논리 주소와 영역(Z2)의 첫 번째 논리 주소의 쓰기 명령을 포함함)을 전송하고, 또한 특정 물리적 블록(예를 들면 물리적 블록(B8))이 상기 복수의 연속적인 논리 주소의 데이터를 저장할 수 있는 충분한 공간을 가지더라도, 플래시 메모리 컨트롤러(122)는 여전히 상기 특정 물리적 블록에 상기 복수의 연속적인 논리 주소에 대응하는 데이터를 연속적으로 저장하지 않고, 영역(Z2)의 첫 번째 논리 주소에 대응하는 데이터를 건너뛰기 식으로 다른 하나의 물리적 블록(예를 들면 블록(B20))에 기록한다. 대응하게, 호스트 장치(110)가 영역(Z1, Z2)내의 연속적인 논리 주소에 대해 읽기 명령(예를 들면 영역(Z1)의 마지막 논리 주소 및 영역(Z2)의 첫 번째 논리 주소를 포함하는 읽기 명령)을 전송하면, 플래시 메모리 컨트롤러(122)는 물리적 블록(P8) 중 대응하는 영역(Z1)의 마지막 논리 주소에 저장된 데이터를 읽은 후, 마찬가지로 영역(Z2)의 첫 번째 논리 주소의 데이터를 얻기 위해 건너뛰기 식으로 블록(B20)의 첫 번째 저장 위치를 읽는다.
단계(508)에서, 플래시 메모리 컨트롤러(122)는 L2P매핑표를 생성하거나 업데이트하여 논리 주소와 물리적 위치의 매핑 관계를 기록하여 후속 영역 네임 스페이스(310_1)에서 데이터 읽기를 진행할 때 사용되도록 한다. 도 7a는 본 발명의 실시예에 따른 L2P매핑표(700)의 개략도이다. L2P매핑표(700)는 2개의 열을 포함하고, 열 중 하나는 영역의 시작 논리 주소가 기록되고, 열 중 다른 하나는 블록의 물리적 블록주소가 기록된다. 동시에 도 6을 참조하면, 영역(Z1)의 데이터는 블록(B3, B7 및 B8)에 순차적으로 기록되고, 영역(Z3)의 데이터는 블록(B12, B99 및 B6)에 순차적으로 기록되므로, L2P매핑표(700)는 영역(Z1)의 시작 논리 주소(Z1_LBA_S) 및 블록(B3, B7 및 B8)의 물리적 블록주소(PBA3, PBA7 및 PBA8)를 기록하고, 영역(Z3)의 시작 논리 주소(Z3_LBA_S) 및 블록(B12, B99 및 B6)의 물리적 블록주소(PBA12, PBA99 및 PBA6)를 기록한다. 예를 들면, 영역(Z1)은 논리 주소(LBA_2001 내지 LBA_4000)를 갖는 데이터를 저장하기 위한 것이고, 영역(Z3)은 논리 주소(LBA_6001 내지 LBA_8000)를 갖는 데이터를 저장하기 위한 것으로 가정하면, 영역(Z1)의 시작 논리 주소(Z1_LBA_S)는 LBA_2001이고, 영역(Z3)의 시작 논리 주소(Z3_LBA_S)는 LBA_6001이다. 유의할 것은, 호스트 장치(110)로부터의 데이터를 영역 네임 스페이스(310_1)의 흐름도의 각 단계에 기록하는 것은 동일한 목적을 달성할 수 있는 한, 고정된 순서로 진행할 필요가 없고, 예를 들면 단계(508)는 단계(502) 이후에 후속될 수 있고, 통상의 기술자는 본 발명의 교시 하에 이해할 수 있을 것이다. 유의할 것은, 해당 실시예에서, 각 물리적 블록은 모두 하나의 영역에만 대응하고, 예를 들면 블록(B3, B7 및 B8)은 영역(Z1)에만 대응하고, 블록(B12, B99 및 B6)은 영역(Z3)에만 대응한다. 또는, 하나의 블록은 하나의 영역의 데이터만 저장하고, 예를 들면 블록(B3, B7 및 B8)은 영역(Z1)에 대응하는 데이터만 저장하고, 블록(B12, B99 및 B6)은 영역(Z3)에 대응하는 데이터만 저장한다.
또한, 호스트 장치(110)가 하나의 영역을 리셋(reset)하고자 하는 경우, 예를 들면 영역(Z1)을 리셋하고자 하는 경우, 플래시 메모리 컨트롤러(122)는 일반적으로 영역(Z1)에 대응하는 물리적 블록주소의 열을 삭제하여 L2P매핑표(700)를 수정하고, 예를 들면 L2P매핑표(700)의 물리적 블록주소(PBA3, PBA7 및 PBA8)를 삭제하는 것으로, 호스트가 상기 복수의 물리적 블록에 저장된 데이터를 더 이상 필요로 하지 않음을 의미한다. 플래시 메모리 컨트롤러(122)는 잠시 후 다시 상기 복수의 물리적 블록을 삭제할 수 있고, 유의할 것은, 호스트 장치(110)가 리셋하고자 하는 영역(Z1)은 상기 복수의 유효하지 않은 데이터를 포함하지 않더라도, 물리적 블록(B8)에는 호스트 장치(110)가 저장하고자 하는 데이터 및 유효하지 않은 데이터가 저장된다. 관리의 편의를 위해, 플래시 메모리 컨트롤러(122)는 호스트 장치(110)의 영역(Z1)에 대한 리셋 명령을 수신한 후, 호스트 장치(110)가 리셋하고자 하는 영역(Z1)은 물리적 블록(B8)에 저장된 상기 복수의 유효하지 않은 데이터를 포함하지 않더라도, 여전히 L2P매핑표(700) 중의 물리적 블록주소(PBA8)를 전체적으로 삭제한다. 또한, 플래시 메모리 컨트롤러(122)는 물리적 블록(B8)을 삭제하기 전에, 호스트 장치(110)에서 전송되는 리셋 명령에 포함되지 않은 유효하지 않은 데이터를 기타 물리적 블록으로 이동시키지 않고, 전체 물리적 블록을 직접 삭제한다.
상술한 실시예에서, 영역 네임 스페이스(310_1)내의 임의의 물리적 블록에 저장된 데이터는 모두 반드시 동일한 영역에 속해야 하고, 즉, 임의 하나의 물리적 블록에 저장된 모든 데이터에 대응하는 논리 주소는 동일한 영역에 속한다. 또한, 호스트 장치(110)는 하나의 영역 내의 논리 주소에 대해 연속적으로 기록할 수 있기 때문이다. 따라서, 본 실시예의 L2P매핑표(700)는 다른 임의의 데이터 페이지 주소를 포함하지 않고, 영역 네임 스페이스(310_1)의 물리적 블록주소만 포함할 수 있는바, 즉 L2P매핑표(700)는 블록 내의 데이터 페이지 번호 또는 관련 데이터 페이지 정보를 전혀 기록하지 않는다. 또한, L2P매핑표(700)도 각 영역의 시작 논리 주소만 기록하므로, L2P매핑표(700) 자체에는 적은 양의 데이터만 있으므로, L2P매핑표(700)는 버퍼 메모리(216) 또는 DRAM(240)의 저장 공간에 너무 많은 부담을 주지 않고 버퍼 메모리(216) 또는 DRAM(240)에 상주할 수 있다. 유의할 것은, 호스트 장치(110)가 영역의 크기 및 영역 수를 설정한 후, 각 영역의 시작 논리 주소가 고정되므로, L2P매핑표(700)는 하나의 열로 더 단순화될 수 있는바, 즉, 물리적 블록주소 열만 있게 된다. 영역의 시작 논리 주소열은 도 7b에 도시된 L2P매핑표(710)와 같이 표의 항목(entry)으로 나타낼 수 있고, 실제로 복수의 영역의 시작 논리 주소를 저장할 필요가 없다.
상술한 실시예에서, L2P매핑표(700)는 다른 임의의 데이터 페이지 주소를 포함하지 않고 영역 네임 스페이스(310_1)의 물리적 블록주소만 포함할 수 있으나, 다른 실시예에서, L2P매핑표(700)는 각 영역의 시작 논리 주소 및 대응하는 물리적 블록주소와 첫 번째 데이터 페이지의 물리적 데이터 페이지 주소를 포함할 수 있다. L2P매핑표 중의 하나의 영역은 하나의 물리적 블록주소 및 하나의 물리적 데이터 페이지 주소만 포함하므로, 마찬가지로 적은 양의 데이터만 있다.
도 7c는 본 발명의 실시예에 따른 L2P매핑표(720)의 개략도이다. L2P매핑표(720)는 2개의 열을 포함하고, 열 중 하나는 논리 주소가 기록되고, 열 중 다른 하나는 블록의 물리적 블록주소가 기록된다. 동시에 도 6을 참조하면, 영역(Z1)의 데이터는 블록(B3, B7 및 B8)에 순차적으로 기록되고, 영역(Z3)의 데이터는 블록(B12, B99 및 B6)에 순차적으로 기록되므로, L2P매핑표(720)는 영역(Z1)의 시작 논리 주소(Z1_LBA_S) 및 블록(B3)의 물리적 블록주소(PBA3), 영역(Z1)의 논리 주소(Z1_LBA_S+y) 및 블록(B7)의 물리적 블록주소(PBA7), 및 영역(Z1)의 논리 주소(Z1_LBA_S+2*y) 및 블록(B8)의 물리적 블록주소(PBA8)가 기록(記錄)되고, 논리 주소(Z1_LBA_S+y)는 블록(B7)에 기록된 데이터의 첫 번째 논리 주소(즉, 블록(B7)의 데이터 페이지(P1)에 대응하는 논리 주소)일 수 있고, 논리 주소(Z1_LBA_S+2*y)는 블록(B8)에 기록된 데이터의 첫 번째 논리 주소(즉, 블록(B8)의 데이터 페이지(P1)에 대응하는 논리 주소)일 수 있고, 유사하게, L2P매핑표(720)는 영역(Z3)의 시작 논리 주소(Z3_LBA_S) 및 블록(B12)의 물리적 블록주소(PBA12), 영역(Z3)의 논리 주소(Z3_LBA_S+y) 및 블록(B99)의 물리적 블록주소(PBA99), 및 영역(Z6)의 논리 주소(Z3_LBA_S+2*y) 및 블록(B6)의 물리적 블록주소(PBA6)가 기록되고, 논리 주소(Z3_LBA_S+y)는 블록(B99)에 기록된 데이터의 첫 번째 논리 주소(즉, 블록(B99)의 데이터 페이지(P1)에 대응하는 논리 주소)일 수 있고, 논리 주소(Z3_LBA_S+2*y)는 블록(B6)에 기록된 데이터의 첫 번째 논리 주소(즉, 블록(B6)의 데이터 페이지(P1)에 대응하는 논리 주소)일 수 있다. 유의할 것은, 상기 “y”는 하나의 블록에 저장될 수 있는 논리 주소의 데이터의 양을 나타낼 수 있고, 특히 호스트 장치(110)가 저장 장치(120_1)로 전송하는, 저장 장치(120_1)에 저장되길 원하는 데이터를 의미한다. 유의할 것은, 호스트 장치(110)가 영역의 크기 및 영역 수를 설정한 후, 각 영역의 시작 논리 주소가 고정되고, 각 서브 영역의 시작 논리 주소도 고정되며, 예를 들면 Z1_LBA_S, Z1_LBA_S+y, Z1_LBA_S+2*y, Z2_LBA_S, Z2_LBA_S+y, Z2_LBA_S+2*y… 등 규칙으로 구현되므로, 유사하게, L2P매핑표(720)는 하나의 열로 더 단순화될 수 있는바, 즉, 물리적 블록주소 열만 있게 된다. 도 7d의 L2P매핑표(740)에 도시된 바와 같이, 논리 주소는 열표의 항목(entry)으로 나타낼 수 있고, 실제로 복수의 서브 영역의 시작 논리 주소를 저장할 필요가 없다.
유의할 것은, 본 실시예의 L2P매핑표(720)는 영역 네임 스페이스(310_1)의 물리적 블록주소만 포함하고, 다른 임의의 데이터 페이지 주소를 포함하지 않는바, 즉 L2P매핑표(720)는 블록 내의 데이터 페이지 번호 또는 관련 데이터 페이지 정보를 전혀 기록하지 않는다. 또한, L2P매핑표(720)도 각 블록에 대응하는 첫 번째 논리 주소만 기록하므로, L2P매핑표(720) 자체에는 적은 양의 데이터만 있으므로, L2P매핑표(720)는 버퍼 메모리(216) 또는 DRAM(240)의 저장 공간에 너무 많은 부담을 주지 않고 버퍼 메모리(216) 또는 DRAM(240)에 상주할 수 있다. 실시예에서, 상기 L2P매핑표(720)에 기록된 물리적 블록주소는 첫 번째 데이터 페이지의 물리적 데이터 페이지 주소가 따로 매칭될 수 있고, 하나의 물리적 데이터 페이지 주소를 별도로 추가해도 실제로 저장 공간에 큰 부담을 주지 않는다.
도 8은 본 발명의 실시예에 따른, 영역 네임 스페이스(310_1)에서 데이터를 읽는 흐름도이고, 본 실시예는 영역 네임 스페이스(310_1)는 도 6에 도시된 영역(Z1 및 Z3)의 데이터가 저장된 것으로 가정한다. 단계(800)에서, 프로세스가 시작되고, 호스트 장치(110) 및 저장 장치(120_1)의 전원이 켜지고 초기화 동작(예를 들면, 부팅 절차)이 완료된다. 단계(802)에서, 호스트 장치(110)는 읽기 명령을 전송하여 특정 논리 주소를 갖는 데이터 읽기를 요청한다. 단계(804)에서, 플래시 메모리 컨트롤러(122)의 마이크로 프로세서(212)는 상기 특정 논리 주소가 속하는 영역을 판단하고, L2P매핑표(700) 또는 L2P매핑표(720)에 기록된 논리 주소에 따라 상기 특정 논리 주소에 대응하는 물리적 데이터 페이지 주소를 계산한다. 도 7a의 L2P매핑표(700)를 예를 들어 설명하면, L2P매핑표(700)는 각 영역의 시작 논리 주소가 기록되고, 또한 각 영역의 논리 주소의 개수를 알고 있으므로, 마이크로 프로세서(212)는 상기 정보로부터 상기 특정 논리 주소가 속하는 영역을 알 수 있고, 도 6, 도 7a의 실시예를 예를 들어 설명하면, 상기 특정 논리 주소는 LBA_2500이고, 하나의 영역은 2000개의 논리 주소를 포함하고, L2P매핑표(700)는 영역(Z1)의 시작 논리 주소(Z1_LBA_S)를 LBA_2001로 기록한 것으로 가정하면, 마이크로 프로세서(212)는 상기 특정 논리 주소가 속하는 영역(Z1)을 판단할 수 있다. 이어서, 마이크로 프로세서(212)는 상기 특정 논리 주소와 영역(Z1)의 시작 논리 주소(Z1_LBA_S)사이의 차이에 따라, 또한 블록의 각 데이터 페이지가 저장할 수 있는 논리 주소의 데이터의 양에 따라, 상기 특정 논리 주소에 대응하는 상기 물리적 데이터 페이지 주소를 결정한다. 설명의 편의를 위해, 블록 중 각 데이터 페이지는 하나의 논리 주소의 데이터만 저장할 수 있는 것으로 가정하면, 상기 특정 논리 주소와 영역(Z1)의 시작 논리 주소(Z1_LBA_S) 사이의 차이는 500개의 논리 주소이고, 마이크로 프로세서(212)는 상기 특정 논리 주소의, 블록(B3)의 500번째 데이터 페이지(P500)에 대응하는 물리적 데이터 페이지 주소를 계산할 수 있고, 블록(B3)의 데이터 페이지의 수가 500개 미만이면, 블록(B3)의 첫 번째 데이터 페이지(P1)에서 500번째 데이터 페이지를 카운트하여 블록(B7)에 위치한 물리적 데이터 페이지 주소를 얻는다.
다른 한 편으로, 도 7b의 L2P매핑표(720)를 예로 들어 설명하면, L2P매핑표(720)는 각 영역의 복수의 논리 주소가 기록되고, 이러한 논리 주소는 블록(B3, B7, B8)의 첫 번째 데이터 페이지(P1)에 각각 대응되므로, 마이크로 프로세서(212)는 상기 정보에 의해 상기 특정 논리 주소가 속하는 영역 및 블록을 알 수 있다. 이어서, 마이크로 프로세서(212)는 상기 특정 논리 주소와 영역(Z1)의 논리 주소(예를 들면, Z1_LBA_S, (Z1_LBA_S+y) 또는 (Z1_LBA_S+2y))사이의 차이에 따라, 또한 블록의 각 데이터 페이지가 저장할 수 있는 논리 주소의 데이터의 양에 따라, 상기 특정 논리 주소에 대응하는 상기 물리적 데이터 페이지 주소를 결정한다. 설명의 편의를 위해, 블록 중 각 데이터 페이지는 하나의 논리 주소의 데이터만 저장할 수 있는 것으로 가정하면, 상기 특정 논리 주소와 영역(Z1)의 시작 논리 주소(Z1_LBA_S) 사이의 차이는 500개의 논리 주소이고, 마이크로 프로세서(212)는 상기 특정 논리 주소의, 블록(B3)의 500번째 데이터 페이지(P500)에 대응하는 물리적 데이터 페이지 주소를 계산할 수 있다.
단계(806)에서, 마이크로 프로세서(212)는 단계(804)에서 결정된 물리적 블록주소 및 물리적 데이터 페이지 주소에 따라, 영역 네임 스페이스(310_1)에서 대응하는 데이터를 읽고, 읽은 데이터를 호스트 장치(110)로 반송한다.
상술한 바와 같이, 상기 실시예에 설명된 내용을 통해, 플래시 메모리 컨트롤러(122)는 매우 작은 크기의 L2P매핑표(700/710/720/730)만을 생성할 수 있는 상황에서, 여전히 영역 네임 스페이스(310_1)의 데이터 기록 및 읽기를 효과적으로 완성할 수 있다. 그러나 해당 실시예에서, 물리적 블록(B8), 물리적 블록(B6)의 비어있거나 유효하지 않은 데이터 페이지와 같이 물리적 블록의 많은 남은 데이터 페이지가 낭비되며, 상기 복수의 남은 데이터 페이지는 사용자가 사용할 수 있는 메모리 공간을 크게 줄이며, 이러한 방법은 플래시 메모리 컨트롤러(122)의 관리 부담을 줄일 수 있지만, 사용자가 사용할 수 있는 메모리 공간이 줄어들고, 더 나아가 극단적인 경우에, 남은 데이터 페이지의 비율이 너무 높기 때문에, 플래시 메모리 컨트롤러(122)가 사용자가 사용할 충분한 메모리 공간을 계획하지 못할 수도 있다.
도 9는 본 발명의 다른 실시예에 따른, 호스트 장치(110)로부터의 데이터를 영역 네임 스페이스(310_1)에 기록하는 흐름도이고, 본 실시예는 각 영역에 대응하는 데이터의 양은 플래시 메모리 모듈(124) 중 각 블록의 크기보다 크고, 각 영역에 대응하는 데이터의 양은 플래시 메모리 모듈(124) 중 각 블록의 크기의 정수 배는 아닌 것으로 가정한다. 단계(900)에서, 프로세스가 시작되고, 호스트 장치(110) 및 저장 장치(120_1)의 전원이 켜지고 초기화 동작이 완료되면, 호스트 장치(110)는 저장 장치(120_1)에 대해 각 영역의 크기, 영역의 수, 논리적 블록주소의 크기 등 기본 설정을 설정하고, 예를 들면 영역 네임 스페이스 명령 세트(Zoned Namespaces Command Set)를 사용하여 설정한다. 단계(902)에서, 호스트 장치(110)는 쓰기 명령 및 대응하는 데이터를 플래시 메모리 컨트롤러(122)에 전송하고, 상기 데이터는 하나 이상의 영역의 데이터에 대응하고, 예를 들면 도 4에서 영역(Z3)은 논리 주소(LBA_k 내지 LBA_(k+x-1))의 데이터에 대응한다. 단계(904)에서, 플래시 메모리 컨트롤러(122)는 플래시 메모리 모듈(124)에서 적어도 하나의 블록(공백 블록, 또는 스페어 블록이라고 칭함)을 선택하거나, 적어도 하나의 공백 블록 또는 적어도 하나의 공용 블록을 선택하고, 호스트 장치(110)로부터의 데이터를 이러한 블록에 순차적으로 기록한다. 예를 들면, 도 10을 참조하면, 각 영역에 대응하는 데이터의 양이 플래시 메모리 모듈(124) 중 2개의 블록 내지 3개의 블록 사이인 것으로 가정하면, 플래시 메모리 컨트롤러(122)는 영역(Z1)의 데이터를 블록(B3, B7 및 B8)에 순차적으로 기록할 수 있고, 블록(B3)에는 영역(Z1)의 제1 부분 데이터(Z1_0)가 기록되고, 블록(B7)에는 영역(Z1)의 제2 부분 데이터(Z1_1)가 기록되고, 블록(B8)에는 영역(Z1)의 제3 부분 데이터(Z1_2)가 기록된다. 본 실시예에서, 블록(B3, B7)에 기록된 데이터는 모두 영역(Z1)의 데이터이므로, 블록(B8)은 일부 데이터 페이지에만 영역(Z1)의 데이터가 저장되고, 따라서, 블록(B8)의 남은 데이터 페이지를 충분히 활용하기 위해, 마이크로 프로세서(212)는 블록(B8)을 공용 블록으로 설정하고, 즉 블록(B8)의 남은 데이터 페이지는 기타 영역의 데이터가 기록되도록 사용될 수 있다. 계속하여 도 10을 참조하면, 플래시 메모리 컨트롤러(122)는 영역(Z3)의 데이터를 영역 네임 스페이스(310_1)에 기록하려고 하고, 공용 블록(B8)은 여전히 남은 공간이 있으므로, 마이크로 프로세서(212)는 2개의 공백 블록(B12, B99) 및 공용 블록(B8)을 선택하여 영역(Z3)의 데이터를 저장하기 한다. 구체적으로, 플래시 메모리 컨트롤러(122)는 영역(Z3)의 데이터를 블록(B12, B99 및 B8)에 순차적으로 기록하고, 블록(B12)에는 영역(Z3)의 제1 부분 데이터(Z3_0)가 기록되고, 블록(B99)에는 영역(Z3)의 제2 부분 데이터(Z3_1)가 기록되고, 블록(B8)에는 영역(Z3)의 제3 부분 데이터(Z3_2)가 기록된다. 본 실시예에서, 블록(B12, B99)에 기록된 데이터는 모두 영역(Z3)의 데이터이고, 블록(B8)은 영역(Z1)의 제3 부분 데이터(Z1_2) 및 영역(Z3)의 제3 부분 데이터(Z3_2)가 동시에 기록된다. 유의할 것은, 관리의 편의를 위해, 플래시 메모리 컨트롤러(122)는 공용 블록에 그 어떤 영역의 첫 번째 데이터도 저장하지 않으며, 이는 플래시 메모리 컨트롤러(122)가 L2P매핑표를 생성할 때의 복잡성을 증가시키기 때문이다. 플래시 메모리 컨트롤러(122)는 각 영역의 첫 번째 데이터를 전용 블록(예를 들면 블록(B3, B12))에 저장한다. 상기 전용 블록들은 동일한 영역에 속하는 데이터만 저장하므로, 전용 블록이라고 칭한다. 임의의 영역의 마지막 데이터(상기 영역의 마지막 논리 주소에 대응하는 데이터)는 모두 공용 블록(예를 들면 블록(B8))에 저장되고, 상기 공용 블록에는, 다른 영역의 마지막 데이터도 저장된다. 해당 실시예에서, 공용 블록에는 하나 이상의 영역의 데이터가 저장되거나, 또는 공용 블록에는 하나 이상의 영역의 마지막 데이터가 저장되고, 전용 블록은 하나의 영역의 데이터만 저장한다.
단계(906)에서, 플래시 메모리 컨트롤러(122)는 L2P매핑표를 생성하거나 업데이트하여 논리 주소와 물리적 위치의 매핑 관계를 기록하고, 또한 공용 블록표를 기록하여, 후속 영역 네임 스페이스(310_1)에서 데이터 읽기를 진행할 때 사용되도록 한다. 도 11a는 본 발명의 실시예에 따른 L2P매핑표(1100A) 및 공용 블록표(1130A)의 개략도이다. L2P매핑표(1100A)는 2개의 열을 포함하고, 열 중 하나는 논리 주소가 기록되고, 열 중 다른 하나는 블록의 물리적 블록주소가 기록된다. 동시에 도 10을 참조하면, 영역(Z1)의 데이터는 블록(B3, B7 및 B8)에 순차적으로 기록되고, 영역(Z3)의 데이터는 블록(B12, B99 및 B8)에 순차적으로 기록되므로, L2P매핑표(1100A)는 영역(Z1)의 시작 논리 주소(Z1_LBA_S) 및 블록(B3)의 물리적 블록주소(PBA3), 영역(Z1)의 논리 주소(Z1_LBA_S+y) 및 블록(B7)의 물리적 블록주소(PBA7), 및 영역(Z1)의 논리 주소(Z1_LBA_S+2*y) 및 블록(B8)의 물리적 블록주소(PBA8)가 기록되고, 논리 주소(Z1_LBA_S+y)는 블록(B7)에 기록된 데이터의 첫 번째 논리 주소(즉, 제2 부분 데이터(Z1_1)의 첫 번째 논리 주소이고, 또한 블록(B7)의 첫 번째 데이터 페이지(P1)에 대응하는 논리 주소이기도 함)일 수 있고, 논리 주소(Z1_LBA_S+2*y)는 블록(B8)에 기록되는 데이터의 첫 번째 논리 주소(즉, 제3 부분 데이터(Z1_2)의 첫 번째 논리 주소)일 수 있고, 유사하게, L2P매핑표(1100A)는 영역(Z3)의 시작 논리 주소(Z3_LBA_S) 및 블록(B12)의 물리적 블록주소(PBA12), 영역(Z3)의 논리 주소(Z3_LBA_S+y) 및 블록(B99)의 물리적 블록주소(PBA99), 및 영역(Z6)의 논리 주소(Z3_LBA_S+2*y) 및 블록(B6)의 물리적 블록주소(PBA6)가 기록되고, 논리 주소(Z3_LBA_S+y)는 블록(B99)에 기록된 데이터의 첫 번째 논리 주소(즉, 제2 부분 데이터(Z3_1)의 첫 번째 논리 주소이고, 또한 블록(B99)의 첫 번째 데이터 페이지(P1)에 대응하는 논리 주소이기도 함)일 수 있고, 논리 주소(Z3_LBA_S+2*y)는 블록(B8)에 기록되는 데이터의 첫 번째 논리 주소(즉, 제3 부분 데이터(Z3_2)의 첫 번째 논리 주소)일 수 있다. 유의할 것은, 상기 “y”는 하나의 블록에 저장될 수 있는, 호스트로부터의 논리 주소의 데이터의 양을 나타낼 수 있다. 유의할 것은, 호스트 장치(110)가 영역의 크기 및 영역 수를 설정한 후, 각 영역의 시작 논리 주소가 고정되고, 각 서브 영역의 시작 논리 주소도 고정되며, 예를 들면 Z1_LBA_S, Z1_LBA_S+y, Z1_LBA_S+2*y, Z2_LBA_S, Z2_LBA_S+y, Z2_LBA_S+2*y… 등 규칙으로 구현되므로, 유사하게, L2P매핑표(1100)는 하나의 열로 더 단순화될 수 있는바, 즉, 물리적 블록주소 열만 있게 된다. 논리 주소열은 표의 항목(entry)으로 나타낼 수 있고, 실제로 복수의 서브 영역의 시작 논리 주소를 저장할 필요가 없다. 도 11b의 L2P매핑표(1100B), L2P매핑표(1100B)의 각 논리 주소는 고정된 열이 있고, 이때 가장 낮은 논리 주소에서 가장 높은 논리 주소의 순서로 정렬되고(또는 가장 높은 데서 가장 낮은 데로), 예를 들면 Z0_LBA_S는 영역(0)의 시작 논리 주소를 의미하고, 즉 시스템에서 가장 낮은 논리 주소이고, Z0_LBA_S+y는 영역(0)의 두 번째 서브 영역의 시작 논리 주소를 의미하고, y는 각 물리적 블록은 호스트 데이터를 저장하기 위한 주소의 개수를 의미하고, Z0_LBA_S+2*y는 영역(0)의 세 번째 서브 영역의 시작 논리 주소를 의미하고, 영역의 크기가 고정되고, y값도 고정되므로, 도 11b의 논리 주소열 중의 값은 상당히 높은 예측 가능성을 가지며, 따라서, 상기 열을 생략하고 L2P매핑표(1100B)의 항목(entry)으로 나타낼 수도 있다.
또한, 공용 블록표(1130A)는 2개의 열을 포함하고, 열 중 하나는 논리 주소가 기록되고, 열 중 다른 하나는 논리 주소에 대응하는 물리적 블록주소 및 물리적 데이터 페이지 주소가 기록된다. 도 11a에서, 공용 블록표(1130A)는 영역(Z1)의 제3 부분 데이터(Z1_2)의 첫 번째 논리 주소(Z1_LBA_S+2*y) 및 대응하는 물리적 블록주소(PBA8) 및 물리적 데이터 페이지 주소(P1)가 기록되는바, 즉 제3 부분 데이터(Z1_2) 중 첫 번째 논리 주소에 대응하는 데이터는 블록(B8)의 첫 번째 데이터 페이지(P1)에 기록되고, 공용 블록표(1130A)는 영역(Z3)의 제3 부분 데이터(Z3_2)의 첫 번째 논리 주소(Z3_LBA_S+2*y) 및 대응하는 물리적 블록주소(PBA8) 및 물리적 데이터 페이지 주소(P120)가 기록되는바, 즉 제3 부분 데이터(Z3_2) 중 첫 번째 논리 주소에 대응하는 데이터는 블록(B8)의 120번째 데이터 페이지(P120)에 기록된다(유의할 것은, 여기서 블록 중 각 데이터 페이지는 하나의 논리 주소의 데이터만 저장할 수 있는 것으로 가정하였고, 실제 상황은 하나의 데이터 페이지에 저장될 수 있는 논리 주소의 데이터 양에 따라 조절될 수 있음). 도 11b의 L2P매핑표(1100B)와 유사하게, 도 11a의 공용 블록표(1130A)도 도 11b의 공용 블록표(1130B)의 형식으로 나타낼 수 있고, 이유는 동일하므로 여기서는 설명을 생략한다.
또한, 유의할 것은, 영역(Z1) 및 영역(Z3)의 데이터가 기록되는 과정에서, 기록 과정은 영역(Z1)의 모든 데이터가 기록된 후에 영역(Z3)의 데이터를 영역 네임 스페이스(310_1)에 기록하기 시작하는 것은 아닐 수 있고, 다시 말하면, 영역(Z1)의 모든 데이터가 기록되기 전에, 플래시 메모리 컨트롤러(122)는 영역(Z3)의 데이터를 영역 네임 스페이스(310_1)에 기록하기 시작해야 할 수 있다. 따라서, 본 발명의 다른 실시예에서, 공용 블록표(1130)는 영역의 데이터가 공용 블록에서 모두 기록되었는지 여부를 나타내도록 사용되는 완료 인덱스 열을 추가로 포함할 수 있다. 도 12에 도시된 바와 같이, 도 12에 도시된 공용 블록표(1230)는 도 10의 실시예의 연속이다. 도 12a에서, 영역(Z1)의 제3 부분 데이터(Z1_2)를 공용 블록(B8)에 모두 기록한 후, 마이크로 프로세서(212)는 완료 인덱스를 ‘0’에서 ‘1’로 수정하고, 이후 마이크로 프로세서(212)가 영역(Z3)의 제3 부분 데이터(Z3_2)를 영역 네임 스페이스(310_1)에 기록해야 할 때, 공용 블록(B8)에 대응하는 영역(Z1)의 제3 부분 데이터(Z1_2)의 완료 인덱스는 ‘1’이므로, 마이크로 프로세서(212)는 공용 블록(B8)은 현재 데이터를 기록할 수 있음을 판단할 수 있고, 따라서 영역(Z3)의 제3 부분 데이터(Z3_2)를 공용 블록(B8)에 기록하고, 공용 블록표(1230)에 제3 부분 데이터(Z3_2) 및 대응하는 물리적 블록주소 및 물리적 데이터 페이지 주소를 기록한다. 다른 한 편으로, 도 12(b)에서, 영역(Z1)의 제3 부분 데이터(Z1_2)가 공용 블록(B8)에 기록되는 과정에서, 대응하는 완료 인덱스는 ‘0’이고(영역(Z1)의 제3 부분 데이터(Z1_2)가 공용 블록(B8)에 모두 기록되지 않았음을 의미함), 이후 마이크로 프로세서(212)가 영역(Z3)의 제3 부분 데이터(Z3_2)를 영역 네임 스페이스(310_1)에 기록할 필요가 있는 경우, 공용 블록(B8)에 대응하는 영역(Z1)의 제3 부분 데이터(Z1_2)의 완료 인덱스는 ‘0’이므로, 마이크로 프로세서(212)는 공용 블록(B8)은 현재 제3 부분 데이터(Z3_2)가 기록될 수 없음을 판단할 수 있고, 따라서 마이크로 프로세서(212)는 하나의 공백 블록(예를 들면 블록(B15))을 추가로 선택하고, 영역(Z3)의 제3 부분 데이터(Z3_2)를 블록(B15)에 기록하고, 공용 블록표(1230)에 세 부분의 데이터(Z3_2) 및 대응하는 물리적 블록주소(PBA15) 및 물리적 데이터 페이지 주소(P1)를 기록한다. 유의할 것은, 도 12의 공용 블록표(1230)는 도 11b의 공용 블록표(1130B)와 유사한 형식으로 완료 인덱스 열을 더 추가하는 형식으로 제공될 수 있고, 논리 주소 열을 고정된 논리 주소 위치로 대체하는 이유는 L2P매핑표(1100B) 및 공용 블록표(1130B)와 동일하므로, 여기서는 설명을 생략한다.
실시예에서, 호스트 장치(110)가 하나의 영역을 리셋(reset)하고자 하는 경우, 예를 들면 영역(Z1)을 리셋하고자 하는 경우, 플래시 메모리 컨트롤러(122)는 일반적으로 영역(Z1)에 대응하는 물리적 블록주소의 열을 삭제하도록 L2P매핑표(1100A/1100B)를 수정하고, 예를 들면 L2P매핑표(1100A/1100B)중의 물리적 블록주소(PBA3, PBA7 및 PBA8)를 삭제하여, 호스트가 상기 복수의 물리적 블록에 저장된 데이터를 더 이상 필요로 하지 않음을 의미한다. 플래시 메모리 컨트롤러(122)는 잠시 후 다시 상기 복수의 물리적 블록을 삭제할 수 있고, 유의할 것은, 호스트 장치(110)가 리셋하고자 하는 영역(Z1)은 영역(Z3)의 데이터를 포함하지 않더라도, 물리적 블록(B8)에는 호스트 장치(110)가 저장하고자 하는 데이터 및 영역(Z3)의 데이터가 저장된다. 관리의 편의를 위해, 플래시 메모리 컨트롤러(122)는 호스트 장치(110)의 영역(Z1)에 대한 리셋 명령을 수신한 후, 여전히 공용 블록표(1130A/1130B/1230)중의 물리적 블록주소 및 물리적 데이터 페이지 주소를 수정해야 하고, PBA8, P1를 삭제해야 한다(예를 들면 FFFF로 다시 기록한다). 유의할 것은, 공용 블록표(1230)중의 완료 인덱스는 여전히 1로 유지되고, 그 이유는 영역(Z1)의 제3 부분은 여전히 Z1_3가 물리적 블록(B8)에서의 일부 공간을 차지하였기 때문이고, 물리적 블록(B8)이 삭제되기 전에, 상기 복수의 공간은 다시 기록될 수 없다. 또한, 플래시 메모리 컨트롤러(122)는 물리적 블록(B8)이 삭제되기 전에, 호스트 장치(110)에서 전송되는 리셋 명령에 포함되지 않은 유효한 데이터(예를 들면 영역(Z3)의 데이터)를 기타 물리적 블록으로 이동하지 않아도 된다.
상술한 실시예에서, 공용 블록을 사용하여 상이한 영역에 대응하는 데이터를 저장하므로, 논리 주소가 상이한 영역에 속하는 데이터는 동일한 물리적 블록에 저장될 수 있는 것으로 간주될 수 있고, 따라서 물리적 블록의 공간을 효과적으로 활용하여, 영역의 크기와 물리적 블록의 크기가 일치하지 않음으로 인해, 영역에 대응하는 논리 주소가 모두 기록되었을 때, 여전히 전체 물리적 블록의 공간이 채워지지 않아, 물리적 블록의 남은 데이터 페이지에 데이터가 저장되지 않고 낭비가 발생하는 것을 방지한다.
유의할 것은, 본 실시예의 L2P매핑표(1100A/1100B)는 다른 임의의 데이터 페이지 주소를 포함하지 않고, 영역 네임 스페이스(310_1)의 물리적 블록주소만 포함하고, 즉 L2P매핑표(1100A/1100B)는 그 어떤 블록 내의 데이터 페이지 번호 또는 관련 데이터 페이지 정보도 전혀 기록하지 않는다. 또한, 공용 블록표(1130A/1130B/1230)도 적은 양의 논리 주소만 기록하므로, 더 나아가 공용 블록표(1130A/1130B/1230)의 논리 주소가 매우 규칙적이므로, 논리 주소열이 생략되고, 표의 항목(entry)만으로 나타낼 수 있다. 따라서, L2P매핑표(1100A/1100B) 및 공용 블록표(1130A/1130B/1230) 자체에는 적은 양의 데이터만 있으므로, L2P매핑표(1100A/1100B) 및 공용 블록표(1130A/1130B/1230)는 버퍼 메모리(216) 또는 DRAM(240)의 저장 공간에 너무 많은 부담을 주지 않고 버퍼 메모리(216) 또는 DRAM(240)에 상주할 수 있다.
또한, L2P매핑표(1100A/1100B)의 (Z1_LBA_S+2*y), (Z3_LBA_S+2*y)… 등 상기 영역 중 마지막 부분의 열에 대응되는 물리적 블록주소는 정확한 물리적 위치가 아니며, 마이크로 프로세서(212)는 다시 공용 블록표(1130A/1130B/1230)를 검색하여 정확한 물리적 페이지 주소를 찾아야 하므로, L2P매핑표(1100A/1100B)의 (Z1_LBA_S+2*y), (Z3_LBA_S+2*y) … 등 상기 영역 중 마지막 부분의 열에 대응하는 물리적 위치(예를 들면 PBA8)를 공용 블록표(1130A/1130B/1230)에 대응하는 항목 주소로 직접 수정하여, 마이크로 프로세서(212)가 공용 블록표(1130A/1130B/1230)에 대응하는 항목 주소를 직접 액세스 하도록 할 수도 있다. 예를 들면 L2P매핑표(1100A/1100B)의 (Z1_LBA_S+2*y)열에 대응하는 PBA8를 공용 블록표(1130A/1130B) 중 (Z1_LBA_S+2*y)열에 대응하는 메모리 주소로 직접 수정하고, L2P매핑표(1100A/1100B)의 (Z3_LBA_S+2*y)열에 대응하는 PBA8를 공용 블록표(1130A/1130B) 중 (Z3_LBA_S+2*y)열에 대응하는 메모리 주소(예를 들면 DRAM 또는 SRAM에서의 주소)로 수정하여, 검색 속도를 높인다.
도 13은 본 발명의 실시예에 따른, 영역 네임 스페이스(310_1)에서 데이터를 읽는 흐름도이고, 본 실시예는 영역 네임 스페이스(310_1) 는 도 10에 도시된 영역(Z1 및 Z3)의 데이터가 저장된 것으로 가정한다. 단계(1300)에서, 프로세스가 시작되고, 호스트 장치(110) 및 저장 장치(120_1)의 전원이 켜지고 초기화 동작(예를 들면, 부팅 절차)이 완료된다. 단계(1302)에서, 호스트 장치(110)는 읽기 명령을 전송하여 특정 논리 주소를 갖는 데이터 읽기를 요청한다. 단계(1304)에서, 플래시 메모리 컨트롤러(122)의 마이크로 프로세서(212)는 상기 특정 논리 주소가 속하는 영역을 판단하고, 또한 L2P매핑표(1100A/1100B) 및/또는 공용 블록표(1130A/1130B/1230)에 기록된 논리 주소에 따라 상기 특정 논리 주소에 대응하는 물리적 데이터 페이지 주소를 계산한다. 도 11a의 L2P매핑표(1100A)를 예를 들어 설명하면, L2P매핑표(1100A)는 복수의 영역의 복수의 논리 주소가 기록되고, 이러한 논리 주소는 블록(B3, B7, B8)의 n번재 데이터 페이지에 각각 대응하고, 또한 각 블록에 저장될 수 있는 논리 주소의 개수를 알고 있으므로, 마이크로 프로세서(212)는 상기 정보에 의해 상기 특정 논리 주소가 속하는 영역 및 블록을 알 수 있다. 이어서, 상기 특정 논리 주소는 영역(Z1)에 속하는 것으로 가정하면, 마이크로 프로세서(212)는 상기 특정 논리 주소와 영역(Z1)의 논리 주소(예를 들면, Z1_LBA_S, (Z1_LBA_S+y) 또는 (Z1_LBA_S+2y))사이의 차이에 따라, 또한 블록의 각 데이터 페이지가 저장할 수 있는 논리 주소의 데이터의 양에 따라, 상기 특정 논리 주소에 대응하는 상기 물리적 데이터 페이지 주소를 결정한다. 설명의 편의를 위해, 블록 중 각 데이터 페이지는 하나의 논리 주소의 데이터만 저장할 수 있는 것으로 가정하면, 상기 특정 논리 주소와 영역(Z1)의 시작 논리 주소(Z1_LBA_S) 사이의 차이는 500개의 논리 주소이고, 상기 특정 논리 주소는 Z1_LBA_S와 (Z1_LBA_S+y) 사이에 있고(여기서 y는 각 물리적 블록호스트 데이터를 저장하기 위한 주소의 개수를 의미하고, 해당 예에서 y>500임), 마이크로 프로세서(212)는 상기 특정 논리 주소의, 블록(B3)의 500번째 데이터 페이지(P500)에 대응하는 물리적 데이터 페이지 주소를 계산할 수 있고, 해당 예에서, 마이크로 프로세서(212)는 차이 500을 y로 나누어, 0의 몫을 얻고, 남은 수는 500이면, 마이크로 프로세서(212)는, 특정 논리 주소에 대응하는 물리적 블록주소가 L2P매핑표(1100A)의 첫 번째 항목에 있어야 함을 알 수 있고, 검색한 후, 마이크로 프로세서(212)는 특정 논리 주소에 대응하는 물리적 블록주소는 PBA3임을 발견했다. 나머지 수는 500이므로, 마이크로 프로세서(212)는 특정 논리 주소에 대응하는 물리적 페이지 주소가 P500임을 알 수 있고, 물리적 페이지를 단위로 하는 것 외에, 더 작은 읽기 단위로 주소를 지정할 수 있음을 유의하기 바라는바, 예를 들면 섹터(sector) 또는 4Kbyte 등 기타 NVMe사양에 부합하는 주소 지정 단위이고; 다른 한 편으로, 상기 특정 논리 주소는 영역(Z3)에 속하는 것으로 가정하면, 마이크로 프로세서(212)는 상기 특정 논리 주소와 영역(Z3)의 논리 주소(예를 들면, Z3_LBA_S, (Z3_LBA_S+y) 또는 (Z3_LBA_S+2y))사이의 차이에 따라, 또한 블록의 각 데이터 페이지가 저장할 수 있는 논리 주소의 데이터의 양에 따라, 상기 특정 논리 주소에 대응하는 상기 물리적 데이터 페이지 주소를 결정한다. 설명의 편의를 위해, 블록 중 각 데이터 페이지는 하나의 논리 주소의 데이터만 저장할 수 있고, 상기 특정 논리 주소는 (Z3_LBA_S+2y)보다 크고 영역(Z3)의 최대 논리 주소와 동일하거나 작으며, 상기 특정 논리 주소와 영역(Z3)의 논리 주소(Z3_LBA_S+2y)사이의 차이는 80개 논리 주소인 것으로 가정하면, 마이크로 프로세서(212)는 공용 블록표(1130)에 기록된 영역(Z3)의 제3 부분 데이터(Z3_2)에 대응하는 물리적 데이터 페이지 주소(P120)를 참조할 수 있고, 또한 이에 따라 상기 특정 논리 주소의, 공용 블록(B8)의 200번째 데이터 페이지(P200)에 대응하는 물리적 데이터 페이지 주소를 계산한다.
단계(1306)에서, 마이크로 프로세서(212)는 단계(1304)에서 결정된 물리적 블록주소 및 물리적 데이터 페이지 주소에 따라, 영역 네임 스페이스(310_1)에서 대응하는 데이터를 읽고, 읽은 데이터를 호스트 장치(110)로 반송한다.
상술한 바와 같이, 상기 실시예에 설명된 내용을 통해, 플래시 메모리 컨트롤러(122)는 매우 작은 크기의 L2P매핑표(1100A/1100B) 및 공용 데이터 표(1130A/1130B/1230)만 생성하여도, 여전히 영역 네임 스페이스(310_1)의 데이터 기록 및 읽기를 효과적으로 완성할 수 있다.
상술한 도 5 내지 도 13의 실시예에서는 각 영역에 대응하는 데이터의 양은 플래시 메모리 모듈(124) 중 각 블록의 크기보다 큰 것으로 가정하지만, 호스트 장치(110)는 각 영역에 대응하는 데이터의 양을 플래시 메모리 모듈(124) 중 각 블록의 크기보다 작게 할 수 있고, 관련된 액세스 방식은 다음과 같다.
도 14는 본 발명의 다른 실시예에 따른, 호스트 장치(110)로부터의 데이터를 영역 네임 스페이스(310_1)에 기록하는 흐름도이고, 본 실시예는 각 영역에 대응하는 데이터의 양은 플래시 메모리 모듈(124) 중 각 블록의 크기보다 작은 것으로 가정한다. 단계(1400)에서, 프로세스가 시작되고, 호스트 장치(110) 및 저장 장치(120_1)의 전원이 켜지고 초기화 동작이 완료되면, 호스트 장치(110)저장 장치(120_1)에 대해 각 영역의 크기, 영역의 수, 논리적 블록주소의 크기 등 기본 설정을 설정하고, 예를 들면 영역 네임 스페이스 명령 세트(Zoned Namespaces Command Set)를 사용하여 설정한다. 단계(1402)에서, 호스트 장치(110)는 쓰기 명령 및 대응하는 데이터를 플래시 메모리 컨트롤러(122)에 전송하고, 상기 데이터는 하나 이상의 영역의 데이터에 대응하고, 예를 들면 도 4에서영역(Z3)의 논리 주소(LBA_k~LBA_(k+x-1))에 대응하는 데이터이다. 단계(1404)에서, 플래시 메모리 컨트롤러(122)는 영역 네임 스페이스(310_1)에서 적어도 하나의 블록(공백 블록, 스페어 블록이라고 칭함)을 선택하고, 논리 주소 순서에 따라 호스트 장치(110)로부터의 데이터를 상기 적어도 하나의 블록에 순차적으로 기록한다. 본 실시예에서, 하나의 블록은 기록 하나의 영역의 데이터만 기록하기 위한 것이고, 도 15를 예로 들면 플래시 메모리 컨트롤러(122)는 영역(Z0)의 데이터를 블록(B20)에 기록하고, 영역(Z1)의 데이터를 블록(B30)에 기록하고, 영역(Z2)의 데이터를 블록(B35)에 기록하는 등의 규칙으로 구현한다. 단계(1406)에서, 각 영역의 데이터가 모두 기록된 후, 플래시 메모리 컨트롤러(122)는 각 블록 중에서 시스템 제어하여, 그 외의 남은 데이터 페이지에 유효하지 않은 데이터를 기록하거나, 남은 데이터 페이지를 직접 공백 상태로 유지할 수 있다. 도 15를 예로 들면, 플래시 메모리 컨트롤러(122)는 영역(Z0)의 모든 데이터를 블록(B20)에 기록한 후 블록은 B20의 남은 데이터 페이지를 공백으로 유지하거나 유효하지 않은 데이터로 채우고, 플래시 메모리 컨트롤러(122)는 영역(Z1)의 모든 데이터를 블록(B30)에 기록한 후 블록(B30)의 남은 데이터 페이지를 공백으로 유지하거나 유효하지 않은 데이터를 채우고, 플래시 메모리 컨트롤러(122)는 영역(Z2)의 모든 데이터를 블록(B35)에 기록한 후 블록(B35)의 남은 데이터 페이지를 공백으로 유지하거나 유효하지 않은 데이터를 채운다.
유의할 것은, 실시예에서, 호스트 장치(110)는 영역(Z0, Z1, Z2)의 연속적인 논리 주소에 쓰기 명령을 전송하고, 플래시 메모리 컨트롤러(122)는 블록(B20, B30, B35)을 선택하여 영역(Z0, Z1, Z2)에 속하는 데이터를 저장한다. 장치(110)에 의해 설정된 영역의 크기는 물리적 블록의 크기와 일치하지 않으므로, 호스트 장치(110)가 기록하고자 하는 데이터는 여전히 물리적 블록의 저장 공간을 채울 수 없고, 예를 들면 물리적 블록(B20)의 호스트 데이터를 저장하기 위한 저장 공간을 채울 수 없으므로, 플래시 메모리 컨트롤러(122)는 여전히 물리적 블록(B20) 내 상기 복수의 저장 공간을 공백으로 유지하거나 유효하지 않은 데이터를 채워야 하기 때문에, 호스트 장치(110)가 영역(Z0, Z1)내의 연속적인 논리 주소에 쓰기 명령을 전송하고, 물리적 블록(B20)에 데이터를 저장할 공간이 여전히 존재하는 경우에도, 플래시 메모리 컨트롤러(122)는 여전히 영역(Z1)의 시작 논리 주소에 대응하는 데이터를 물리적 블록(B20)에 저장하지 않으며, 다시 말하면, 호스트 장치(110)가 연속적인 논리 주소의 쓰기 명령(예를 들면 영역(Z0)의 마지막 논리 주소와 영역(Z1)의 첫 번째 논리 주소의 쓰기 명령)을 전송하고, 임의의 특정 물리적 블록(예를 들면 물리적 블록(B20))은 상기 복수의 연속적인 논리 주소의 데이터를 저장할 수 있는 충분한 공간을 가지더라도, 플래시 메모리 컨트롤러(122)는 여전히 상기 특정 물리적 블록에 상기 복수의 연속적인 논리 주소에 대응하는 데이터를 연속적으로 저장하지 않고, 영역(Z1)의 첫 번째 논리 주소에 대응하는 데이터를 건너뛰기 식으로 다른 하나의 물리적 블록(예를 들면 블록(B30))에 기록한다. 대응하게, 호스트 장치(110)가 영역(Z0, Z1)내의 연속적인 논리 주소에 대해 읽기 명령을 전송하면(예를 들면 영역(Z0)의 마지막 논리 주소와 영역(Z1)의 첫 번째 논리 주소의 읽기 명령을 포함함), 플래시 메모리 컨트롤러(122)는 물리적 블록(B20) 중 대응하는 영역(Z1)의 마지막 논리 주소에 저장된 데이터를 읽은 후, 마찬가지로 건너뛰기 식으로 블록(B30)의 첫 번째 저장 위치를 읽어서 영역(Z1)의 첫 번째 논리 주소의 데이터를 얻는다 .
단계(1408)에서, 플래시 메모리 컨트롤러(122)는 L2P매핑표를 생성하거나 업데이트하여 논리 주소와 물리적 위치의 매핑 관계를 기록하고, 후속 영역 네임 스페이스(310_1)에서 데이터 읽기를 진행할 때 사용되도록 한다. 도 16은 본 발명의 실시예에 따른 L2P매핑표(1600)의 개략도이다. L2P매핑표(1600)는 2개의 열을 포함하고, 열 중 하나는 영역 번호 또는 관련 식별 가능한 내용을 기록하고, 열 중 다른 하나는 블록의 물리적 블록주소를 기록한다. 동시에 도 6을 참조하면, 영역(Z0, Z1, Z2)의 데이터는 블록(B20, B30, B35)에 각각 기록되므로, 따라서, L2P매핑표(1600)는 영역(Z0) 및 블록(B20)의 물리적 블록주소(PBA20), 영역(Z1) 및 블록(B30)의 물리적 블록주소(PBA30) 및 영역(Z2) 및 블록(B35)의 물리적 블록주소(PBA35)를 기록한다. 다른 실시예에서, 상기 영역 번호는 영역의 시작 논리 주소로 표시되거나, 블록 번호는 다른 검색표를 통해 블록의 시작 논리 주소에 연결되고, 예를 들면, 영역(Z0)은 논리 주소(LBA_1 내지 LBA_2000)를 갖는 데이터를 저장하기 위한 것이고, 영역(Z1)은 논리 주소(LBA_2001 내지 LBA_4000)를 갖는 데이터를 저장하기 위한 것이고, 영역(Z2)은 논리 주소(LBA_4001 내지 LBA_6000)를 갖는 데이터를 저장하기 위한 것으로 가정하면, 영역(Z0, Z1, Z2)의 시작 논리 주소는 즉 각각 LBA_1, LBA_2001, LBA_4001이다. 유의할 것은, 해당 실시예에서, 각 물리적 블록은 모두 하나의 영역에만 대응하는바, 예를 들면 블록(B20, B30 및 B35)은 영역(Z0, Z1, Z2)에만 각각 대응된다. 또는, 하나의 블록은 하나의 영역의 데이터만 저장하는바, 예를 들면 블록(B20)은 영역(Z0)에 대응하는 데이터만 저장하고, 블록(B30)은 영역(Z1)에 대응하는 데이터만 저장하고, 블록(B35)은 영역(Z2)에 대응하는 데이터만 저장한다.
상술한 실시예에서, 영역 네임 스페이스(310_1)내의 임의의 물리적 블록에 저장된 데이터 모두 반드시 동일한 영역에 속해야 하고, 즉, 임의 하나의 물리적 블록에 저장된 모든 데이터의 논리 주소는 동일한 영역에 속한다. 따라서, 본 실시예의 L2P매핑표(1600)는 다른 임의의 데이터 페이지 주소를 포함하지 않고, 영역 네임 스페이스(310_1)의 물리적 블록주소만 포함할 수 있는바, 즉 L2P매핑표(1600)는 블록 내의 데이터 페이지 번호 또는 관련 데이터 페이지 정보를 전혀 기록하지 않는다. 또한, L2P매핑표(1600)도 각 영역의 영역 번호 또는 시작 논리 주소만 기록하므로, L2P매핑표(1600) 자체에는 적은 양의 데이터만 있으므로, 2P매핑표(1600)는 버퍼 메모리(216) 또는 DRAM(240)의 저장 공간에 너무 많은 부담을 주지 않고 버퍼 메모리(216) 또는 DRAM(240)에 상주할 수 있다. 실시예에서, 상기 L2P매핑표(1600)에 기록된 물리적 블록주소는 첫 번째 데이터 페이지의 물리적 데이터 페이지 주소가 추가로 결합될 수 있고, 하나의 물리적 데이터 페이지 주소를 별도로 추가해도 실제로 저장 공간에 큰 부담을 주지 않는다. 유의할 것은, 호스트 장치(110)가 영역의 크기 및 영역 수를 설정한 후, 각 영역의 시작 논리 주소가 고정되므로, 유사하게, L2P매핑표(1600)는 하나의 열로 더 단순화될 수 있는, 즉, 물리적 블록주소 열만 있게 된다. 논리 주소열은 표의 항목(entry)으로 나타낼 수 있고, 실제로 복수의 영역의 시작 논리 주소를 저장할 필요가 없다.
또한, 호스트 장치(110)가 하나의 영역을 리셋(reset)하고자 하는 경우, 예를 들면 영역(Z1)을 리셋하고자 하는 경우, 플래시 메모리 컨트롤러(122)는 일반적으로 영역(Z1)에 대응하는 물리적 블록주소의 열을 삭제하여 L2P매핑표(1600)를 수정하고, 예를 들면 L2P매핑표(1600)의 물리적 블록주소(PBA30)를 삭제하는 것으로, 호스트는 상기 복수의 물리적 블록에 저장된 데이터를 더 이상 필요로 하지 않음을 의미한다. 플래시 메모리 컨트롤러(122)는 잠시 후 다시 상기 복수의 물리적 블록을 삭제할 수 있고, 유의할 것은, 호스트 장치(110)가 리셋하고자 하는 영역(Z1)은 상기 복수의 유효하지 않은 데이터를 포함하지 않더라도, 물리적 블록(B30)에는 호스트 장치(110)가 저장하고자 하는 데이터 및 유효하지 않은 데이터가 저장된다. 관리의 편의를 위해, 플래시 메모리 컨트롤러(122)는 호스트 장치(110)의 영역(Z1)에 대한 리셋 명령을 수신한 후, 호스트 장치(110)가 리셋하고자 하는 영역(Z1)은 물리적 블록(B30) 에 기록된 상기 복수의 유효하지 않은 데이터를 포함하지 않더라도 여전히 L2P매핑표(1600)의 물리적 블록주소(PBA30)를 전체적으로 삭제한다. 또한, 플래시 메모리 컨트롤러(122)는 물리적 블록(B30)을 삭제하기 전에, 호스트 장치(110)에서 전송되는 리셋 명령에 포함되지 않은 유효하지 않은 데이터를 기타 물리적 블록으로 이동시키지 않고, 전체 물리적 블록을 직접 삭제한다.
도 17은 본 발명의 다른 실시예에 따른 영역 네임 스페이스(310_1)에서 데이터를 읽는 흐름도이고, 본 실시예는 영역 네임 스페이스(310_1)는 도 15에 도시된 영역(Z0, Z1 및 Z2)의 데이터가 이미 저장된 것으로 가정한다. 단계(1700)에서, 프로세스가 시작되고, 호스트 장치(110) 및 저장 장치(120_1)의 전원이 켜지고 초기화 동작(예를 들면, 부팅 절차)이 완료되면. 단계(1702)에서, 호스트 장치(110)는 읽기 명령을 전송하여 특정 논리 주소를 갖는 데이터 읽기를 요청한다. 단계(1704)에서, 플래시 메모리 컨트롤러(122)의 마이크로 프로세서(212)는 상기 특정 논리 주소가 속하는 영역을 판단하고, L2P매핑표(1600)에 기록된 논리 주소에 따라 상기 특정 논리 주소에 대응하는 물리적 데이터 페이지 주소를 계산한다. 도 16의 L2P매핑표(1600)를 예로 들어 설명하면, L2P매핑표(1600)는 각 영역의 영역 번호 또는 시작 논리 주소가 기록되고, 또한 각 영역의 논리 주소의 개수를 알고 있으므로, 따라서, 마이크로 프로세서(212)는 상기 정보로부터 상기 특정 논리 주소가 속하는 영역을 알 수 있고, 예를 들면, 하나의 영역은 2000개의 논리 주소를 포함하고, 마이크로 프로세서(212)는 호스트가 액세스하고자 하는 논리 주소(특정 논리 주소)를 2000로 나누어, 얻어진 몫은 상기 특정 논리 주소가 있는 영역이고, 도 15, 도 16의 실시예를 예로 들어 설명하면, 마이크로 프로세서(212)는 상기 특정 논리 주소를 2000으로 나눈 후, 몫은 1임을 발견하여, 상기 특정 논리 주소는 영역(Z1)에 속하는 것으로 판단할 수 있는 것으로 가정하며, 마이크로 프로세서(212)는 상기 특정 논리 주소와 영역(Z1)의 시작 논리 주소 사이의 차이(상기 차이는 상기 마이크로 프로세서(212)가 상기 특정 논리 주소를 2000으로 나눈 후의 남은 수임)에 따라, 또한 블록의 각 데이터 페이지가 저장할 수 있는 논리 주소의 데이터의 양에 따라, 상기 특정 논리 주소에 대응하는 상기 물리적 데이터 페이지 주소를 결정한다. 설명의 편의를 위해, 블록 중 각 데이터 페이지는 하나의 논리 주소의 데이터만 저장할 수 있고, 상기 특정 논리 주소와 영역(Z1)의 시작 논리 주소 사이의 차이는 2백번째 논리 주소인 것으로 간주하면, 마이크로 프로세서(212)는 상기 특정 논리 주소의, 블록(B20)의 200번째 데이터 페이지에 대응하는 물리적 데이터 페이지 주소를 계산할 수 있다.
단계(1706)에서, 마이크로 프로세서(212)는 단계(1704)에서 결정된 물리적 블록주소 및 물리적 데이터 페이지 주소에 따라, 영역 네임 스페이스(310_1)에서 대응하는 데이터를 읽고, 읽은 데이터를 호스트 장치(110)로 반송한다.
상술한 바와 같이, 상기 실시예에 설명된 내용을 통해, 플래시 메모리 컨트롤러(122)는 매우 작은 크기의 L2P매핑표(700/720)만 생성하여도, 여전히 영역 네임 스페이스(310_1)의 데이터 기록 및 읽기를 효과적으로 완성할 수 있다. 그러나 해당 실시예에서, 여전히 대량의 물리적 블록저장 공간이 낭비되며, 예를 들면 도 15에 도시된 공백 또는 유효하지 않은 데이터 페이지이다.
도 18은 본 발명의 다른 실시예에 따른, 호스트 장치(110)로부터의 데이터를 영역 네임 스페이스(310_1)에 기록하는 흐름도이고, 본 실시예는 각 영역에 대응하는 데이터의 양은 플래시 메모리 모듈(124) 중 각 블록의 크기보다 작은 것으로 가정한다. 단계(1800)에서, 프로세스가 시작되고, 호스트 장치(110) 및 저장 장치(120_1)의 전원이 켜지고 초기화 동작이 완료되면, 호스트 장치(110)저장 장치(120_1)에 대해 각 영역의 크기, 영역의 수, 논리적 블록주소의 크기 등 기본 설정을 설정하고, 예를 들면 영역 네임 스페이스 명령 세트(Zoned Namespaces Command Set)를 사용하여 설정한다. 단계(1802)에서, 호스트 장치(110)는 쓰기 명령 및 대응하는 데이터를 플래시 메모리 컨트롤러(122)에 전송하고, 상기 데이터는 하나 이상의 영역의 데이터에 대응하고, 예를 들면 도 4에서 영역(Z3)의 논리 주소(LBA_k 내지 LBA_(k+x-1))에 대응하는 데이터이다. 단계(1804)에서, 플래시 메모리 컨트롤러(122)는 영역 네임 스페이스(310_1)에서 적어도 하나의 블록(공백 블록, 스페어 블록이라고 칭함)을 선택하거나, 복수의 공백 블록과 공용 블록을 선택하여, 하나의 영역 내의 논리 주소 순서에 따라 호스트 장치(110)로부터의 데이터를 이러한 블록에 순차적으로 기록한다. 예를 들면, 도 19를 참조하면, 플래시 메모리 컨트롤러(122)는 논리 주소 순서에 따라 영역(Z0, Z2, Z1)의 데이터를 블록(B20, B30)에 순차적으로 기록할 수 있다. 도 19를 예로 들면, 영역(Z0)의 첫 번째 데이터는 블록(B20)의 첫 번째 데이터 페이지에서부터 기록하고, 영역(Z0)의 모든 데이터가 기록된 후, 도 20의 L2P매핑표(2000)를 참조하면, 상기 표는 이하에서 설명되는 바와 같고, 플래시 메모리 컨트롤러(122)는 영역 번호(Z0)에 대응하는 사용 가능한 인덱스를 0에서 1로 수정하고, 영역 번호(Z0)를 의미하는 모든 데이터가 기록되면, 영역 번호(Z0)에 저장된 물리적 블록(PBA20)의 남은 공간은 다른 데이터를 저장하기 위해 다시 제공될 수 있다. 물리적 블록(PBA20)의 남은 공간은 기타 데이터를 저장하기 위해 다시 제공될 수 있으므로, 영역(Z2)의 데이터는 계속하여 블록(B20)의 남은 데이터 페이지에 기록될 수도 있고, 플래시 메모리 컨트롤러(122)가 영역(Z2)의 쓰기 명령을 처리할 때, 대응하는 사용 가능한 인덱스가 1인 물리적 블록을 찾을 수 없을 경우, 플래시 메모리 컨트롤러(122)는 영역(Z2)의 데이터를 기록하기 위해 하나의 공백 블록 또는 스페어 블록을 추출해야 한다.
해당 예에서, 물리적 블록(PBA20)에 대응하는 사용 가능한 인덱스는 1이므로, 플래시 메모리 컨트롤러(122)는 다른 공백 블록이나 스페어 블록을 추출할 필요가 없고, 물리적 블록(PBA20)을 직접 사용하여 영역(Z2)의 데이터를 저장할 수 있다. 블록(B20)의 남은 데이터 페이지의 수는 영역(Z2)의 모든 데이터를 저장하기에 충분하지 않으므로, 따라서, 영역(Z2)의 데이터는 제1 부분(Z2_1) 및 제2 부분(Z2_2)으로 분할되고, 제1 부분(Z2_1)은 블록(B20)에 저장되고, 제2 부분(Z2_2)은 플래시 메모리 컨트롤러(122)에 의해 다른 하나의 공백 블록, 블록(B30)을 추출하고, 블록(B30)의 첫 번째 데이터 페이지로부터 시작하여 기록한다. Z2의 제1 부분(Z2_1)에 블록(B20)의 남은 데이터 페이지가 가득 기록된 후, 물리적 블록(PBA20)이 가득 차고, 데이터를 더 이상 기록할 수 없고, 따라서 플래시 메모리 컨트롤러(122)는 영역(Z0)에 대응하는 사용 가능한 인덱스를 0으로 수정하고, 또한 영역(Z2)_1에 대응하는 사용 가능한 인덱스는 0으로 유지시킨다. 영역(Z2)의 제2 부분(Z2_2)의 기록이 완성된 후, 플래시 메모리 컨트롤러(122는 영역 번호(Z2_2)에 대응하는 사용 가능한 인덱스를 0에서 1로 수정하고, 유사하게, 영역(Z1)의 데이터도 계속하여 블록(B30)의 남은 데이터 페이지에 기록되기 시작한다.
단계(1806)에서, 플래시 메모리 컨트롤러(122)는 L2P매핑표를 생성하거나 업데이트하여 논리 주소와 물리적 위치의 매핑 관계를 기록하고, 후속 영역 네임 스페이스(310_1)에서 데이터 읽기를 진행할 때 사용되도록 한다. 도 20은 본 발명의 실시예에 따른 L2P매핑표(2000)의 개략도이다. L2P매핑표(2000)는 2개의 열을 포함하고, 열 중 하나는 블록 번호 또는 논리 주소 범위가 기록되고, 열 중 다른 하나는 상기 논리 주소 범위의 첫 번째 논리 주소에 대응하는 물리적 블록주소 및 물리적 데이터 페이지 주소가 기록된다. 도 20에서, L2P매핑표(2000)는 영역(Z0) 또는 영역(Z0)의 논리 주소 범위의 첫 번째 논리 주소, 및 대응하는 물리적 블록주소(PBA20) 및 물리적 데이터 페이지 주소(P1), 영역(Z2)의 제1 부분(Z2_1)의 논리 주소 범위 및 상기 범위의 첫 번째 논리 주소에 대응하는 물리적 블록주소(PBA20) 및 물리적 데이터 페이지 주소(Pa), 영역(Z2)의 제2 부분(Z2_2)의 논리 주소 범위 및 상기 범위의 첫 번째 논리 주소에 대응하는 물리적 블록주소(PBA30) 및 물리적 데이터 페이지 주소(P1), 및 영역(Z1) 또는 영역(Z1)의 논리 주소 범위 및 상기 범위의 첫 번째 논리 주소에 대응하는 물리적 블록주소(PBA30) 및 물리적 데이터 페이지 주소(Pb)가 기록된다. 유의할 것은, 해당 예에서, 데이터로 채워진 하나의 물리적 블록에는 모두 복수의 영역의 데이터가 저장된다.
또한, 유의할 것은, 영역(Z0, Z2) 및 영역(Z1)의 데이터가 기록되는 과정에서, 기록 과정은 영역(Z0)의 모든 데이터가 기록된 후에 영역(Z1)의 데이터를 영역 네임 스페이스(310_1)에 기록하기 시작하는 것이 아닐 수 있고, 다시 말하면, 영역(Z0)의 모든 데이터가 기록되기 전에, 플래시 메모리 컨트롤러(122)는 영역(Z1)의 데이터를 영역 네임 스페이스(310_1)에 기록하기 시작해야 할 수 있다. 따라서, 상술한 바와 같이, 본 발명의 다른 실시예에서, L2P매핑표(2000)는 영역의 데이터가 공용 블록에서 모두 기록되었는지 여부를 나타내도록 사용되는 사용 가능한 인덱스 열을 추가로 포함할 수 있다.
상술한 실시예에서, L2P매핑표(2000)는 상이한 영역에 대응하는 데이터의 블록 내에서의 주소 관계를 저장하므로, 논리 주소가 상이한 영역에 속하는 데이터는 동일한 물리적 블록에 저장될 수 있는 것으로 간주할 수 있고, 따라서 물리적 블록의 공간을 효과적으로 사용할 수 있다.
유의할 것은, 본 실시예의 L2P매핑표(2000)는 적은 양의 논리 주소(적은 양의 물리적 데이터 페이지 주소)만 기록하므로, L2P매핑표(2000) 자체에는 적은 양의 데이터만 있으므로, L2P매핑표(2000)는 버퍼 메모리(216) 또는 DRAM(240)의 저장 공간에 너무 많은 부담을 주지 않고 버퍼 메모리(216) 또는 DRAM(240)에 상주할 수 있다.
도 21은 본 발명의 실시예에 따른 영역 네임 스페이스(310_1)에서 데이터를 읽는 흐름도이고, 본 실시예는 영역 네임 스페이스(310_1)는 도 19에 도시된 영역(Z1, Z1 및 Z2)의 데이터가 이미 저장된 것으로 가정한다. 단계(2100)에서, 프로세스가 시작되고, 호스트 장치(110) 및 저장 장치(120_1)의 전원이 켜지고 초기화 동작(예를 들면, 부팅 절차)이 완료된다. 단계(2102)에서, 호스트 장치(110)는 읽기 명령을 전송하여 특정 논리 주소를 갖는 데이터 읽기를 요청한다. 단계(2104)에서, 플래시 메모리 컨트롤러(122)의 마이크로 프로세서(212)는 상기 특정 논리 주소가 속하는 영역을 판단하고, L2P매핑표(2000)에 기록된 영역 번호 또는 논리 주소에 따라 상기 특정 논리 주소에 대응하는 물리적 데이터 페이지 주소를 계산한다. 도 20의 L2P매핑표(2000)를 예로 들어 설명하면, L2P매핑표(2000)는 각 영역의 블록 번호 또는 논리 주소 범위가 기록되고, 또한 각 블록에 저장될 수 있는 논리 주소의 개수를 알고 있으므로, 따라서, 마이크로 프로세서(212)는 상기 정보로부터 상기 특정 논리 주소가 속하는 영역 및 블록을 알 수 있다. 이어서, 상기 특정 논리 주소는 영역(Z0)에 속하는 것으로 가정하면, 마이크로 프로세서(212)는 상기 특정 논리 주소와 영역(Z0)의 시작 논리 주소 사이의 차이에 따라, 또한 블록의 각 데이터 페이지가 저장할 수 있는 논리 주소의 데이터의 양에 따라, 상기 특정 논리 주소에 대응하는 상기 물리적 데이터 페이지 주소를 결정한다.
단계(2106)에서, 마이크로 프로세서(212)는 단계(2104)에서 결정된 물리적 블록주소 및 물리적 데이터 페이지 주소에 따라, 영역 네임 스페이스(310_1)에서 대응하는 데이터를 읽고, 읽은 데이터를 호스트 장치(110)로 반송한다.
상술한 바와 같이, 상기 실시예에 설명된 내용을 통해, 플래시 메모리 컨트롤러(122)는 매우 작은 크기의 L2P매핑표(2000)를 생성하여도, 여전히 영역 네임 스페이스(310_1)의 데이터 기록 및 읽기를 효과적으로 완성할 수 있다.
도 5 내지 도 21에 도시된 실시예를 참조하면, 도 5 내지 도 7은 각 영역에 대응하는 데이터의 양은 플래시 메모리 모듈(124) 중 각 블록의 크기보다 크고, 플래시 메모리 모듈(124)의 각 블록은 하나의 영역에 대응하는 데이터만 저장되는 것을 설명하며, 즉 상이한 영역의 데이터는 동일한 물리적 블록에 기록되지 않는다. 도 8 내지 도 12는 각 영역에 대응하는 데이터의 양은 플래시 메모리 모듈(124) 중 각 블록의 크기보다 크고, 플래시 메모리 모듈(124) 중 일부 블록은 복수의 영역에 대응하는 데이터가 저장되는 것을 설명하고, 즉 상이한 영역의 데이터는 동일한 물리적 블록에 기록될 수 있다. 도 13 내지 도 17은 각 영역에 대응하는 데이터의 양은 플래시 메모리 모듈(124) 중 각 블록의 크기보다 작고, 플래시 메모리 모듈(124)의 각 블록은 하나의 영역에 대응하는 데이터만 저장되는 것을 설명하고, 즉 상이한 영역의 데이터는 동일한 물리적 블록에 저장되지 않는다. 도 18 내지 도 21은 각 영역에 대응하는 데이터의 양은 플래시 메모리 모듈(124) 중 각 블록의 크기보다 작고, 플래시 메모리 모듈(124)의 블록은 복수의 영역에 대응하는 데이터가 기록되는 것을 설명하고, 즉 상이한 영역의 데이터는 동일한 물리적 블록에 기록될 수 있다.
실시예에서, 상술한 4가지 액세스 모드는 플래시 메모리 모듈(124)의 영역 네임 스페이스에 선택적으로 적용될 수 있고, 플래시 메모리 모듈(124)은 복수의 영역 네임 스페이스를 갖는 경우, 이러한 영역 네임 스페이스는 상이한 액세스 모드를 사용할 수도 있다. 구체적으로, 도 3에 도시된 바와 같이, 플래시 메모리 컨트롤러(122) 내의 마이크로 프로세서(212)는 영역 네임 스페이스(310_1)의 각 영역의 크기에 따라 사용된 액세스 모드를 선택할 수 있고, 예를 들면, 영역 네임 스페이스(310_1)의 각 영역에 대응하는 데이터의 양은 플래시 메모리 모듈(124) 중 각 블록의 크기보다 큰 경우, 마이크로 프로세서(212)는 도 5 내지 도 7에서 언급된 액세스 모드 또는 도 8 내지 도 12에서 언급된 액세스 모드를 사용하여 영역 네임 스페이스(310_1)에 액세스할 수 있고, 영역 네임 스페이스(310_2)의 각 영역에 대응하는 데이터의 양은 플래시 메모리 모듈(124) 중 각 블록의 크기보다 작은 경우, 마이크로 프로세서(212)는 도 13 내지 도 17에서 언급된 액세스 모드 또는 도 18 내지 도 21에서 언급된 액세스 모드를 사용하여 영역 네임 스페이스(310_2)에 액세스할 수 있다. 동일하게, 플래시 메모리 컨트롤러(122)내의 마이크로 프로세서(212)는 영역 네임 스페이스(310_2)의 각 영역의 크기에 따라 사용될 액세스 모드를 선택할 수 있고, 영역 네임 스페이스(310_2)에 사용될 액세스 모드는 반드시 영역 네임 스페이스(310_1)와 동일해야 하는 것은 아니며, 예를 들면 영역 네임 스페이스(310_1)은 도 5 내지 도 7에서 언급된 액세스 모드를 사용할 수 있고, 영역 네임 스페이스(310_2)는 도 8 내지 도 12에서 언급된 액세스 모드를 사용할 수 있다.
유의할 것은, 플래시 메모리 컨트롤러(122)는 호스트 장치(110)가 설정하고자 하는 영역의 크기를 미리 알 수 없으므로, 플래시 메모리 컨트롤러(122)가 사양을 충족하는 모든 호스트 장치와 호환될 수 있도록 하려면, 플래시 메모리 컨트롤러(122)는 반드시 도 5 내지 도 21에 도시된 실시예의 모든 액세스 방식을 실행할 수 있어야 한다. 예를 들면, 플래시 메모리 컨트롤러(122)는 플래시 메모리 모듈(124)의 하나의 물리적 블록의 크기(또는 슈퍼 블록의 크기, 슈퍼 블록의 개념은 이하에서 설명됨) 및 호스트 장치(110)에 의해 설정된 영역의 크기를 알고 나면, 물리적 블록의 크기 및 영역의 크기에 따라 호스트 장치가 실제 사용할 수 있는 메모리 공간을 계획할 수 있고, 상기 4가지 액세스 모드 중 어느 방식에 따라 액세스해야 할지 선택한다.
영역의 크기가 물리적 블록의 크기보다 작으면, 플래시 메모리 컨트롤러(122)는 도 13 내지 도 21의 방식을 선택하여 액세스해야 한다. 도 13 내지 도 17에서 언급된 액세스 모드는 많은 메모리 공간을 낭비할 수 있으므로, 심지어 플래시 메모리 컨트롤러(122)가 호스트가 사용할 충분한 메모리 공간을 계획하지 못하게 할 수 있으므로, 예를 들면, 해당 액세스 모드에 따르면, 플래시 메모리 컨트롤러(122)는 호스트 장치(110)가 사용하도록 총 용량이 2TB인 플래시 메모리 모듈을 1.2TB의 용량으로만 계획하지만 호스트 장치는 적어도 1.5TB의 용량이 사용될 수 있는 것으로 예상할 수 있어, 플래시 메모리 컨트롤러(122)는 액세스 모드를 변경해야 한다. 예를 들면 플래시 메모리 컨트롤러(122)는 도 18 내지 도 21의 방식으로 변경하여 액세스할 수 있고, 이러한 액세스 모드는, 플래시 메모리의 공간 낭비를 크게 감소시키므로, 플래시 메모리 컨트롤러(122)는 호스트 장치(110)가 사용하도록 많은 용량을 계획할 수 있는바, 예를 들면 플래시 메모리 컨트롤러(122)는 호스트 장치(110)가 사용하도록 총 용량이 2TB인 플래시 메모리 모듈을 1.8TB의 용량으로 계획할 수 있고, 이러한 방식으로 호스트 장치(110)의 메모리 저장 공간에 대한 요구 사항을 충족할 수 있다. 다시 말하면, 상기 호스트 장치(110)가 예상할 수 있는 용량을 표준으로 간주하고, 영역 네임 스페이스가 도 13 내지 도 17의 액세스 방식을 사용할 경우 계획되는 용량이 호스트 장치(110)의 상기 표준 보다 높을 경우, 플래시 메모리 컨트롤러(122)는 도 13 내지 도 17의 액세스 방식을 선택할 수 있고, 영역 네임 스페이스가 도 13 내지 도 17의 액세스 방식을 사용할 때 계획되는 용량이 호스트 장치(110)의 상기 표준 보다 낮을 경우, 플래시 메모리 컨트롤러(122)는 도 18 내지 도 21의 액세스 방식을 선택할 수 있다.
영역의 크기가 물리적 블록의 크기보다 클 경우, 플래시 메모리 컨트롤러(122)는 도 5 내지 도 12의 방식을 선택하여 액세스할 수 있다. 도 5 내지 도 7에서 언급된 액세스 모드는 많은 메모리 공간을 낭비할 수 있고, 심지어 플래시 메모리 컨트롤러(122)가 호스트가 사용할 충분한 메모리 공간을 계획하지 못하게 할 수 있으므로, 예를 들면, 해당 액세스 모드에 따르면, 플래시 메모리 컨트롤러(122)는 호스트 장치(110)가 사용할 수 있도록 총 용량이 2TB인 플래시 메모리 모듈을 1.2TB의 용량으로만 계획하지만, 호스트 장치는 적어도 1.5TB의 용량을 사용할 수 있는 것으로 예상할 수 있어, 플래시 메모리 컨트롤러(122)는 액세스 모드를 변경해야 한다. 예를 들면 플래시 메모리 컨트롤러(122)는 도 8 내지 도 12의 방식으로 변경하여 액세스할 수 있고, 이러한 액세스 모드는, 플래시 메모리의 공간 낭비를 크게 감소시키므로, 플래시 메모리 컨트롤러(122)는 호스트 장치(110)가 사용하도록 많은 용량을 계획할 수 있는바, 예를 들면 플래시 메모리 컨트롤러(122)는 호스트 장치(110)가 사용하도록 총 용량이 2TB인 플래시 메모리 모듈을 1.8TB의 용량으로 계획할 수 있고, 이러한 방식으로 호스트 장치(110)의 메모리 저장 공간에 대한 사용 요구 사항을 충족할 수 있다. 다시 말하면, 상기 호스트 장치(110)가 예상할 수 있는 용량을 표준으로 간주하고, 영역 네임 스페이스가 도 5 내지 도 7의 액세스 방식을 사용할 경우 계획되는 용량은 호스트 장치(110)의 상기 표준보다 높을 경우, 플래시 메모리 컨트롤러(122)는 도 5 내지 도 7의 액세스 방식을 선택할 수 있고, 영역 네임 스페이스가 도 5 내지 도 7의 액세스 방식을 사용할 때 계획되는 용량이 호스트 장치(110)의 상기 표준보다 낮을 경우, 플래시 메모리 컨트롤러(122)는 도 8 내지 도 12의 액세스 방식을 선택할 수 있다.
도 25는 본 발명의 실시예에 따른, 플래시 메모리 컨트롤러에 적용되는 제어 방법의 흐름도이다. 상기 실시예에 따른 내용을 참조하면, 제어 방법의 흐름은 다음과 같다:
단계(2500): 프로세스를 시작한다.
단계(2502): 호스트 장치로부터 설정 명령을 수신하되, 상기 설정 명령은 플래시 메모리 모듈의 적어도 일부분을 영역 네임 스페이스로 설정하고, 상기 영역 네임 스페이스는 논리적으로 복수의 영역을 포함하고, 상기 호스트 장치의 상기 영역 네임 스페이스에 대한 데이터 기록 액세스는 반드시 영역 단위로 진행해야 하고, 각 영역의 크기는 모두 동일하고, 각 영역 내 대응하는 논리 주소는 반드시 연속적이어야 하고, 영역 사이에 중복되는 논리 주소가 없어야 한다.
단계(2504): 제1 액세스 모드, 제2 액세스 모드, 제3 액세스 모드 및 제4 액세스 모드 중 하나를 사용하여, 상기 호스트 장치로부터의 데이터를 상기 플래시 메모리 모듈에 기록하되, 상기 데이터는 특정 영역의 모든 데이터이다.
단계(2506): 상기 제1 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 복수의 특정 블록에 순차적으로 기록한다.
단계(2508): 상기 데이터가 기록된 후, 상기 복수의 특정 블록의 마지막 특정 블록의 남은 데이터 페이지에 유효하지 않은 데이터를 기록하거나, 남은 데이터 페이지는 데이터를 기록하지 않고 공백으로 유지한다.
단계(2510): 상기 제2 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 상기 복수의 특정 블록에 순차적으로 기록한다.
단계(2512): 상기 데이터가 기록된 후, 완료 인덱스를 사용하여 상기 복수의 특정 블록의 마지막 특정 블록을 기록 완료로 표시한다.
단계(2514): 상기 제3 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 하나의 특정 블록에 순차적으로 기록한다.
단계(2516): 상기 데이터가 기록된 후, 상기 특정 블록의 남은 데이터 페이지에 유효하지 않은 데이터를 기록하거나, 남은 데이터 페이지는 데이터를 기록하지 않고 공백으로 유지한다.
단계(2518): 상기 제4 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 하나의 특정 블록에 순차적으로 기록한다.
단계(2520): 상기 데이터가 기록된 후, 완료 인덱스를 사용하여 상기 특정 블록을 기록 완료로 표시한다.
유의할 것은, 다른 실시예에서, 제어기(122)의 설계를 단순화하기 위해, 제어기(122)는 상기 4가지 액세스 모드 중 하나만을 지원할 수 있거나, 제어기(122)는 상기 4가지 액세스 모드 중 2가지 액세스 모드를 지원할 수도 있거나, 제어기(122)는 상기 4가지 액세스 모드 중 3가지 액세스 모드를 지원할 수도 있고, 특정 플래시 메모리 모듈 및 호스트 장치에 따라 설계되어야 한다.
또한, 본 발명의 실시예에서, 저장 장치(120_1)는 에스디 메모리 카드(Secure Digital Memory Card)일 수 있고, 기존의 에스디 메모리 모드의 데이터 전송을 지원할 수 있고, 즉 UHS-I 입/출력 통신 인터페이스 표준을 사용하여 호스트 장치(110)와 통신하며, 또한 PCIe채널 및 NVMe프로토콜을 동시에 지원하는 PCIe모드도 지원한다.
플래시 메모리 모듈(124)의 구현에 있어서, 플래시 메모리 컨트롤러(122)는 플래시 메모리 모듈(124) 내부의 상이한 데이터 플레인(plane)에 속하는 블록을 하나의 슈퍼 블록으로 구성하여, 데이터 액세스 관리를 용이하게 한다. 구체적으로, 도 22는 도시된 플래시 메모리 모듈(124)의 일반 저장 공간(320_1)의 개략도이다. 도 22에 도시된 바와 같이, 일반 저장 공간(320_1)은 2개의 채널(channel)을 포함하고, 채널1 및 채널2는 복수의 플래시 메모리 칩(chip)(2210, 2220, 2230, 2240)이 각각 연결되고, 플래시 메모리 칩(2210)은 2개의 데이터 플레인(plane)(2212, 2214)을 포함하고, 플래시 메모리 칩(2220)은 2개의 데이터 플레인(2222, 2224)을 포함하고, 플래시 메모리 칩(2230)은 2개의 데이터 플레인(2232, 2234)을 포함하고, 플래시 메모리 칩(2240)은 2개의 데이터 플레인(2242, 2244)을 포함하고, 각 데이터 플레인은 모두 복수의 블록(B0 내지 BN)을 포함한다. 플래시 메모리 컨트롤러(122)는 일반 저장 공간(320_1)을 구성하거나 초기화하는 과정에서, 각 데이터 플레인의 첫 번째 블록(B0)은 슈퍼 블록(2261)으로 구성되고, 각 데이터 플레인의 두 번째 블록(B1)은 슈퍼 블록(2262)…등으로 구현된다. 도 22에 도시된 바와 같이, 슈퍼 블록(2261)은 8개의 물리적 블록을 포함하고, 플래시 메모리 컨트롤러(122)는 슈퍼 블록(2261)을 액세스할 때 일반 블록과 유사하고, 예를 들면, 슈퍼 블록(2261)은 자체는 하나의 삭제 단위이고, 즉 슈퍼 블록(2261)의 8개의 블록(B0)은 개별적으로 삭제될 수 있으나, 플래시 메모리 컨트롤러(122)는 반드시 8개의 블록(B0)을 함께 삭제해야 하고, 또한, 슈퍼 블록(2261)은 데이터를 기록할 때 데이터 플레인(2212)의 첫 번째 데이터 페이지, 데이터 플레인(2214)의 첫 번째 데이터 페이지, 데이터 플레인(2222)의 첫 번째 데이터 페이지, 데이터 플레인(2224)의 첫 번째 데이터 페이지의 순서로 데이터를 기록할 수 있고, 데이터 플레인(2244)의 첫 번째 데이터 페이지의 데이터까지 기록이 완료된 후, 데이터 플레인(2212)의 두 번째 데이터 페이지, 데이터 플레인(2214)의 두 번째 데이터 페이지...등 방식으로, 순차적으로 데이터를 기록하는바, 다시 말하면, 플래시 메모리 컨트롤러(122)는 슈퍼 블록(2261) 중 각 블록(B0)의 첫 번째 데이터 페이지를 기록하여 채운 후에야, 계속하여 슈퍼 블록(2261) 중 각 블록(B0)의 두 번째 데이터 페이지를 기록한다. 슈퍼 블록은 물리적인 집합 블록이 아니라 플래시 메모리 컨트롤러(122)가 저장 공간(320_1)의 관리를 용이하게 하기 위해 논리적으로 설정한 집합 블록이다. 또한, 가비지 컬렉션을 수행하고, 블록의 유효한 페이지를 계산하고, 블록 기록 시간을 계산 시, 모두 슈퍼 블록을 단위로 계산할 수 있다. 본 발명의 교시 하에, 당업자는 도 5 내지 도 21에 도시된 실시예를 결합하여 도 5 내지 도 21에 도시된 실시예에서 언급된 물리적 블록은 슈퍼 블록일 수도 있고, 모든 관련된 실시예는 모두 슈퍼 블록을 통해 구현될 수 있고, 하나의 물리적 블록에만 제한되는 것은 아님을 이해할 것이다.
그러나 플래시 메모리 컨트롤러(122)는 플래시 메모리 모듈(124) 내의 블록을 슈퍼 블록으로 구성하는 경우, 도 5 내지 도 8의 실시예를 사용하여 데이터 액세스를 진행하면, 각 블록에 남은 데이터 페이지(공백 데이터 페이지)가 많이 있을 가능성이 높고, 따라서 플래시 메모리 모듈(124)의 내부 공간이 낭비된다. 예를 들면, 호스트 장치(110)가 계획한 영역의 데이터의 양의 크기가 약 6개의 물리적 블록의 크기인 것으로 가정하면, 8개의 블록을 포함하는 슈퍼 블록(2261)에 저장된 데이터의 양은 6개의 물리적 블록의 크기의 데이터의 양만 있어, 즉 슈퍼 블록(2261)에는 약 2개의 블록의 저장 공간이 공백으로 유지되거나 유효하지 않은 데이터를 기록해야 하므로 낭비된다. 따라서, 본 발명의 실시예는 호스트 장치(110)에 따라 설정된 영역의 데이터의 양으로 영역 네임 스페이스(310_1)를 구성하는 방법을 제시하여, 영역 네임 스페이스(310_1)를 효과적으로 사용하고자 한다.
도 23은 본 발명의 실시예에 따른, 플래시 메모리 모듈(124)을 구성하는 방법의 흐름도이다. 단계(2300)에서, 프로세스가 시작되고, 호스트 장치(110), 플래시 메모리 컨트롤러(122) 및 플래시 메모리 모듈(124)은 관련 초기화 작업을 완료한다. 단계(2302)에서, 호스트 장치(110)는 하나의 설정 명령 세트를 전송하여 플래시 메모리 모듈(124)의 적어도 일부분을 영역 네임 스페이스로 설정하고, 이하의 설명에서는, 영역 네임 스페이스(310_1)를 예로 들어 설명하며, 예를 들면, 호스트 장치(110)는 저장 장치(120_1)에 대해 영역 네임 스페이스(310_1) 중 각 영역의 크기, 영역의 수, 논리적 블록주소의 크기 등 기본 설정을 설정하고, 예를 들면 영역 네임 스페이스 명령 세트(Zoned Namespaces Command Set)를 사용하여 설정한다. 단계(2304)에서, 플래시 메모리 컨트롤러(122)의 마이크로 프로세서(212)는 호스트 장치(110)에 의해 설정된 영역의 데이터의 양의 크기(Zone size), 및 플래시 메모리 모듈(124) 중 각 블록(물리적 블록)의 크기에 따라, 하나의 슈퍼 블록에 포함되는 블록의 수를 결정한다. 구체적으로, 호스트 장치(110)에 의해 설정된 영역의 데이터의 양의 크기는 A이고, 플래시 메모리 모듈(124) 중 각 물리적 블록 중 호스트를 저장하기 위해 사용되는 데이터의 양의 크기는 B라고 가정하고, 마이크로 프로세서(212)는 A를 B로 나눈 후 얻은 나머지수가 0이 아니면, A를 B로 나눈 후 얻은 몫의 값에 1을 더하면, 하나의 슈퍼 블록에 포함된 블록의 수가 될 수 있다. 마이크로 프로세서(212)가 A를 B로 나눈 후 얻은 나머지수가 0인 경우, A를 B로 나눈 후 얻은 몫의 값은 하나의 슈퍼 블록에 포함된 블록의 수가 될 수 있다. 도 24를 예로 들면, 플래시 메모리 모듈(124)은 복수의 플래시 메모리 칩(2410, 2420, 2430, 2440)을 포함하고, 플래시 메모리 칩(2410)은 2개의 데이터 플레인(2412, 2414)을 포함하고, 플래시 메모리 칩(2420)은 2개의 데이터 플레인(2422, 2424)을 포함하고, 플래시 메모리 칩(2430)은 2개의 데이터 플레인(2432, 2434)을 포함하고, 플래시 메모리 칩(2440)은 2개의 데이터 플레인(2442, 2444)을 포함하고, 각 데이터 플레인은 복수의 블록(B0~BN)을 포함하고, A를 B로 나눈 후의 몫의 값은 ‘5’이고 나머지수는’3’인 경우, 마이크로 프로세서(212)는 하나의 슈퍼 블록은 6개 블록을 포함하는 것을 결정할 수 있고, 따라서, 플래시 메모리 컨트롤러(122)는 영역 네임 스페이스(310_1)를 구성하거나 초기화하는 과정에서, 데이터 플레인(2412, 2414, 2422, 2424, 2432, 2434)의 첫 번째 블록(B0)은 슈퍼 블록(2461)으로 구성되고, 데이터 플레인(2412, 2414, 2422, 2424, 2432, 2434)의 두 번째 블록(B1)은 슈퍼 블록(2462)으로 구성…등으로 구현된다. 또한, 데이터 플레인(2442) 및 데이터 플레인(2444)의 블록(B0 내지 BN)은 슈퍼 블록으로 구성될 필요가 없거나, 데이터 플레인(2412, 2414, 2422, 2424, 2432, 2434)과 독립적인 슈퍼 블록을 추가로 구성할 수 있다. 다른 실시예에서, 플래시 메모리 컨트롤러(122)는 영역 네임 스페이스(310_1)를 구성하거나 초기화 하는 과정에서, 데이터 플레인(2412, 2414, 2422, 2424, 2432, 2434)의 첫 번째 블록(B0)을 슈퍼 블록(2461)으로 구성하고, 데이터 플레인(2422, 2424, 2432, 2434, 2442, 2444)의 두 번째 블록(B1)은 슈퍼 블록(2462)으로 구성한다. 동일한 슈퍼 블록 중의 각 블록에 병렬로 액세스할 수 있는 한, 슈퍼 블록의 액세스 속도가 향상될 수 있다. 따라서 이러한 개념에 부합하는 전제하에 슈퍼 블록의 설정을 임의로 진행할 수 있다.
다른 실시예에서, 호스트 장치(110)에 의해 설정된 영역의 데이터의 양의 크기는 C이고, 플래시 메모리 모듈(124) 중 각 물리적 블록 중 호스트를 저장하기 위해 사용되는 데이터의 양의 크기는 D이고, C를 D로 나눈 후의 몫의 값은 ‘3’이고 나머지수는’2’인 것으로 가정하면, 마이크로 프로세서(212)는 하나의 슈퍼 블록은 4개의 블록을 포함하는 것, 즉 몫의 값에 1을 더하는 것을 결정할 수 있다. 플래시 메모리 컨트롤러(122)는 호스트 장치에 영역 네임 스페이스(310_1)를 설정하라는 명령을 수신한 후, 데이터 플레인(2412, 2414, 2422, 2424)의 첫 번째 블록(B0)을 슈퍼 블록(2461)으로 구성하고, 데이터 플레인(2432, 2434, 2442, 2444)의 첫 번째 블록(B0)은 슈퍼 블록(2462)…등 방식으로 구성한다.
유의할 것은, 저장 장치(120_1), 저장 장치(120_2)……저장 장치(120_N) 등은 공장 출고 전에 초기화 설정 시 플래시 메모리 모듈에 대해 초보적인 슈퍼 블록 설정을 진행한다. 저장 장치(120_1)를 예로 들면 이때 슈퍼 블록 설정은 동시에 액세스가 가능한 데이터 플레인(2412, 2414, 2422, 2424, 2432, 2434, 2442, 2444)의 첫 번째 블록(B0)을 슈퍼 블록(2461)으로 구성할 수 있고, 동시에 액세스가 가능한 데이터 플레인(2412, 2414, 2422, 2424, 2432, 2434, 2442, 2444)의 두 번째 블록(B1)을 슈퍼 블록(2462)으로 구성하여, 최대 액세스 대역폭을 얻는다. 저장 장치(120_1)와 호스트 장치(110)를 연결하고, 호스트 장치(110)의 영역 네임 스페이스에 대한 명령(예를 들면 영역 네임 스페이스(310_1)을 설정)을 얻은 후, 영역 네임 스페이스의 크기에 대해, 플래시 메모리 모듈(124) 내에서 특정 저장 영역을 지정하여 영역 네임 스페이스(310_1)의 전용 공간으로 하고, 호스트 장치(110)의 영역 네임 스페이스(310_1)의 각 영역의 크기에 대한 설정에 기초하여, 상기 특정 저장 공간의 슈퍼 블록의 크기 및 결합 방식을 재설정한다. 예를 들면, 데이터 플레인(2412, 2414, 2422, 2424)의 첫 번째 블록(B0)을 슈퍼 블록(2461)으로 구성하고, 데이터 플레인(2432, 2434, 2442, 2444)의 첫 번째 블록(B0)을 슈퍼 블록(2462)… 등 방식으로 구성한다. 이때 저장 장치(120_1)에는 크기가 상이한 두 가지 슈퍼 블록이 이고, 영역 네임 스페이스(310_1) 전용의 특정 저장 영역의 슈퍼 블록 설정은, 영역 네임 스페이스(310_1) 비-전용 특정 저장 영역의 슈퍼 블록 설정 방식과 상이하다. 또한, 영역 네임 스페이스(310_1) 전용 특정 저장 영역의 슈퍼 블록 설정은 저장 장치(120_1)의 출고 전의 초기화 설정과도 상이하다.
상술한 바와 같이, 호스트 장치(110)에 의해 설정된 영역의 데이터의 양에 따라 슈퍼 블록에 포함되는 블록의 수를 결정하여, 슈퍼 블록이 최적의 공간 활용을 달성할 수 있다.
유의할 것은, 도 22, 도 24의 실시예에 따른 플래시 메모리 칩의 수, 각 플래시 메모리 칩에 포함된 데이터 플레인의 수는 예시적인 설명일 뿐, 본 발명에 대한 제한은 아니다. 또한, 도 22, 도 24의 실시예에서, 영역 네임 스페이스(310_1)에 포함된 플래시 메모리 칩(2410, 2420, 2430, 2440)은 일반 저장 공간(320_1)에 포함되는 플래시 메모리 칩(2210, 2220, 2230, 2240)과 통합될 수 있다. 구체적으로, 플래시 메모리 모듈(124)은 4개의 플래시 메모리 칩(2210, 2220, 2230, 2240)만 포함할 수 있고, 플래시 메모리 칩(2210, 2220, 2230, 2240)은 전체적으로 도 3에 도시된 영역 네임 스페이스(310_1) 및 일반 저장 공간(320_1)을 포함하므로, 마이크로 프로세서(212)는 4개의 플래시 메모리 칩(2210, 2220, 2230, 2240)을 상이한 블록 수를 갖는 다양한 슈퍼 블록을 동시에 포함하도록 구성할 수 있는바, 예를 들면, 도 22에 도시된 8개의 블록을 포함하는 슈퍼 블록 및 도 24에 도시된 6개 블록을 포함하는 슈퍼 블록을 포함한다.
다른 한 편으로, 도 3에 도시된 일반 저장 공간(320_1)은 이후의 시점에서 호스트 장치(110)에 의해 영역 네임 스페이스로 구성될 수도 있고, 이때 일반 저장 공간(320_1)에서 미리 구성된 슈퍼 블록의 크기를 변경해야 한다. 구체적으로, 제1 시점에서, 마이크로 프로세서는 일반 저장 공간(320_1)을 설정하여 각 슈퍼 블록의 크기를 계획하고, 도 22를 예로 들면, 슈퍼 블록는 최대 8개의 블록을 포함하므로, 마이크로 프로세서(212)는 각 슈퍼 블록은 8개의 블록을 포함하도록 설정한다. 이어서, 호스트 장치(110)가 일반 저장 공간(320_1)을 영역 네임 스페이스로 재설정하는 경우, 마이크로 프로세서(212)는 각 슈퍼 블록에 포함된 블록의 수를 재설정해야 하는바, 예를 들면 도 22에 도시된 6개 블록이다.
유의할 것은, 플래시 메모리 컨트롤러(122)는 액세스 속도를 향상시키기 위해, 일반적으로 호스트 장치(110)가 저장 장치(120_1)에 저장하고자 하는 데이터를 먼저 플래시 메모리 모듈(124)의 단층 저장 메모리 셀에 임시 저장하거나, SLC의 저장 방식으로 플래시 메모리 모듈(124)에 임시 저장하고, 마지막에 여전히 상기 복수의 데이터를 다층 저장 메모리 셀에 저장하거나, MLC의 저장 방식으로 플래시 메모리 모듈(124)에 저장한다. 본 발명의 실시예에서 상기 복수의 데이터를 SLC의 저장 방식으로 플래시 메모리 모듈(124)에 저장하는 과정을 생략했고, 마지막에 MLC의 저장 방식으로 플래시 메모리 모듈(124)에 저장되는 경우를 직접 설명하였고, 통상의 기술자는 본 발명의 교시 하에, 본 발명의 기술은 데이터를 SLC의 저장 방식으로 플래시 메모리 모듈(124)에 임시 저장하는 기술과 결합할 수 있다.
본 발명을 간략히 요약하면, 본 발명의 플래시 메모리 컨트롤러에 적용된 제어 방법에서, 영역 데이터가 플래시 메모리에 기록되는 모드를 계획하는 것을 통해, L2P매핑표의 크기를 효과적으로 감소시켜, 버퍼 메모리 또는 DRAM의 부담을 줄일 수 있고, 또한, 영역의 데이터의 양 및 물리적 블록의 크기에 따라 슈퍼 블록에 포함된 블록의 수를 결정하여 플래시 메모리 모듈의 공간을 더 효과적으로 활용할 수 있다.
이상 본 발명의 바람직한 실시예를 설명하였으나, 본 발명의 특허청구범위에 따라 진행한 균등한 변화 또는 수정은 모두 본 발명의 범위 내에 속해야한다.
100: 전자 장치
110: 호스트 장치
120_1, 120_2, 120_N: 저장 장치
122: 플래시 메모리 컨트롤러
124: 플래시 메모리 모듈
212: 마이크로 프로세서
212C: 프로그램 코드
212M: 판독 전용 메모리
214: 제어 논리
216: 버퍼 메모리
218: 인터페이스 논리
232: 인코더
234: 디코더
240: 동적 랜덤 액세스 메모리
200: 블록
BL1, BL2, BL3: 비트 라인
WL0~WL2, WL4~WL6: 워드 라인
310_1, 310_2: 영역 네임 스페이스
320_1, 320_2: 일반 저장 공간
Z0, Z1, Z2, Z3: 영역
LBA_k~LBA_(k+x-1): 논리 주소
500~508: 단계
B3, B7, B8, B12, B99, B6: 블록
P1~PM: 데이터 페이지
700, 710, 720, 730: L2P매핑표
800~806: 단계
900~906: 단계
1100A, 1100B: L2P매핑표
1130A, 1130B: 공용 블록표
1230: 공용 블록표
1300~1306: 단계
1400~1408: 단계
B20, B30, B35: 블록
1600: L2P매핑표
1700~1706: 단계
1800~1806: 단계
2000: L2P매핑표
2100~2106: 단계
2210, 2220, 2230, 2240: 플래시 메모리 칩
2212, 2214, 2222, 2224, 2232, 2234, 2242, 2244: 데이터 플레인
2261, 2262: 슈퍼 블록
2300~2306: 단계
2412, 2414, 2422, 2424, 2432, 2434, 2442, 2444: 데이터 플레인
2461, 2462: 슈퍼 블록

Claims (20)

  1. 플래시 메모리 컨트롤러에 적용되는 제어 방법에 있어서,
    상기 플래시 메모리 컨트롤러는 플래시 메모리 모듈을 액세스하도록 사용되고, 상기 플래시 메모리 모듈은 복수의 블록을 포함하고, 각 블록은 복수의 데이터 페이지를 포함하고, 상기 제어 방법은,
    호스트 장치로부터 설정 명령을 수신하되, 상기 설정 명령은 플래시 메모리 모듈의 적어도 일부분을 영역 네임 스페이스(zoned namespace)로 설정하고, 상기 영역 네임 스페이스는 논리적으로 복수의 영역(zone)을 포함하고, 상기 호스트 장치의 상기 영역 네임 스페이스에 대한 데이터 기록 액세스는 반드시 영역 단위로 진행해야 하고, 각 영역의 크기는 모두 동일하고, 각 영역 내 대응하는 논리 주소는 반드시 연속적이어야 하고, 영역 사이에 중복되는 논리 주소가 없어야 하는 단계;
    제1 액세스 모드, 제2 액세스 모드, 제3 액세스 모드 및 제4 액세스 모드 중 하나를 사용하여, 상기 호스트 장치로부터의 데이터를 상기 플래시 메모리 모듈에 기록하되, 상기 데이터는 특정 영역의 모든 데이터인 단계; 를 포함하고,
    상기 제1 액세스 모드를 사용하는 경우,
    상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 복수의 특정 블록에 순차적으로 기록하는 단계; 및
    상기 데이터가 기록된 후, 상기 복수의 특정 블록의 마지막 특정 블록의 남은 데이터 페이지에 유효하지 않은 데이터를 기록하거나, 남은 데이터 페이지를 공백으로 유지하면서 삭제 전에 상기 호스트 장치로부터의 데이터를 상기 호스트 장치의 쓰기 명령에 따라 기록하지 않는 단계를 포함하고,
    상기 제2 액세스 모드를 사용하는 경우:
    상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 상기 복수의 특정 블록에 순차적으로 기록하는 단계; 및
    상기 데이터가 기록된 후에만, 상기 마지막 특정 블록의 남은 데이터 페이지에 다른 영역의 데이터가 기록될 수 있는 단계를 포함하고,
    상기 제3 액세스 모드를 사용하는 경우,
    상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 하나의 특정 블록에 순차적으로 기록하는 단계; 및
    상기 데이터가 기록된 후, 상기 특정 블록의 남은 데이터 페이지에 유효하지 않은 데이터를 기록하거나, 남은 데이터 페이지를 공백으로 유지하면서 삭제 전에 상기 호스트 장치로부터의 데이터를 상기 호스트 장치의 쓰기 명령에 따라 기록하지 않는 단계를 포함하고,
    상기 제4 액세스 모드를 사용하는 경우,
    상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 하나의 특정 블록에 순차적으로 기록하는 단계; 및
    상기 데이터가 기록된 후에만, 상기 마지막 특정 블록의 남은 데이터 페이지에 다른 영역의 데이터가 기록될 수 있는 단계를 포함하는,
    플래시 메모리 컨트롤러에 적용되는 제어 방법.
  2. 제1항에 있어서,
    상기 제1 액세스 모드, 상기 제2 액세스 모드, 상기 제3 액세스 모드 및 상기 제4 액세스 모드 중 하나의 모드를 사용하는 단계는,
    각 영역의 크기가 각 블록의 크기보다 클 경우, 상기 제1 액세스 모드 또는 상기 제2 액세스 모드를 사용하는 단계; 및
    각 영역의 크기가 각 블록의 크기보다 작을 경우, 상기 제3 액세스 모드 또는 상기 제4 액세스 모드를 사용하는 단계를 포함하는,
    플래시 메모리 컨트롤러에 적용되는 제어 방법.
  3. 제2항에 있어서,
    상기 제1 액세스 모드, 상기 제2 액세스 모드, 상기 제3 액세스 모드 및 상기 제4 액세스 모드 중 하나를 사용하는 단계는,
    각 영역의 크기가 각 블록의 크기보다 크고, 또한 상기 영역 네임 스페이스가 상기 제1 액세스 모드를 사용할 때 계획된 용량이 상기 호스트 장치의 제1 표준보다 높을 경우, 상기 제1 액세스 모드를 사용하는 단계;
    각 영역의 크기가 각 블록의 크기보다 크고, 또한 상기 영역 네임 스페이스가 상기 제1 액세스 모드를 사용할 때 계획된 용량이 상기 호스트 장치의 상기 제1 표준보다 낮을 경우, 상기 제2 액세스 모드를 사용하는 단계;
    각 영역의 크기가 각 블록의 크기보다 작고, 또한 상기 영역 네임 스페이스가 상기 제3 액세스 모드를 사용할 때 계획된 용량이 상기 호스트 장치의 제2 표준 보다 높을 경우 상기 제3 액세스 모드를 사용하는 단계; 및
    각 영역의 크기가 각 블록의 크기보다 작고, 또한 상기 영역 네임 스페이스가 상기 제3 액세스 모드를 사용할 때 계획된 용량이 상기 호스트 장치의 상기 제2 표준 보다 낮을 경우, 상기 제4 액세스 모드를 사용하는 단계를 포함하는,
    플래시 메모리 컨트롤러에 적용되는 제어 방법.
  4. 제1항에 있어서,
    상기 제1 액세스 모드를 사용하는 경우:
    상기 호스트 장치가 상기 데이터를 전송하고 논리 주소를 상기 데이터의 마지막 논리 주소의 다른 데이터에 후속하여 전송할 경우, 상기 다른 데이터를 상기 복수의 특정 블록의 마지막 특정 블록의 남은 데이터 페이지에 기록하지 않고, 상기 다른 데이터를 상기 복수의 특정 블록과 상이한 기타 블록에 기록하는 단계를 더 포함하는,
    플래시 메모리 컨트롤러에 적용되는 제어 방법.
  5. 제4항에 있어서,
    상기 제1 액세스 모드를 이용하는 경우, 상기 호스트 장치로부터의 데이터를 저장하는 측면에서 볼 때, 하나의 블록은 하나의 영역의 데이터만 저장할 수 있는, 플래시 메모리 컨트롤러에 적용되는 제어 방법.
  6. 제1항에 있어서,
    상기 제2 액세스 모드를 사용하는 경우:
    상기 호스트 장치로부터의 제1 데이터를 수신하되, 상기 제1 데이터는 제1 영역의 모든 데이터인 단계;
    상기 제1 데이터의 논리 주소의 순서에 따라, 상기 제1 데이터를 상기 플래시 메모리 모듈의 상기 적어도 하나의 제1 특정 블록 및 공용 블록에 순차적으로 기록하고, 상기 제1 데이터에서 첫 번째 논리 주소에 대응하는 내용은 상기 적어도 하나의 제1 특정 블록에 저장되고, 상기 제1 데이터에서 마지막 논리 주소에 대응하는 내용은 상기 공용 블록에 저장되는 단계;
    상기 호스트 장치로부터의 제2 데이터를 수신하되, 상기 제2 데이터는 제2 영역의 모든 데이터인 단계;
    상기 제2 데이터의 논리 주소의 순서에 따라, 상기 제2 데이터를 상기 플래시 메모리 모듈의 상기 적어도 하나의 제2 특정 블록 및 상기 공용 블록에 순차적으로 기록하는 단계;
    를 더 포함하는, 플래시 메모리 컨트롤러에 적용되는 제어 방법.
  7. 제6항에 있어서,
    상기 제2 데이터에서 첫 번째 논리 주소에 대응하는 내용은 상기 적어도 하나의 제2 특정 블록에 저장되고, 상기 제2 데이터에서 마지막 논리 주소에 대응하는 내용은 상기 공용 블록에 저장되는, 플래시 메모리 컨트롤러에 적용되는 제어 방법.
  8. 제6항에 있어서,
    상기 호스트 장치로부터의 데이터를 저장하는 측면에서 볼 때, 상기 적어도 하나의 제1 특정 블록은 상기 제1 영역에 대응하는 데이터만 저장하고, 상기 적어도 하나의 제2 특정 블록은 상기 제2 영역에 대응하는 데이터만 저장하는, 플래시 메모리 컨트롤러에 적용되는 제어 방법.
  9. 제6항에 있어서,
    상기 제2 데이터의 첫 번째 논리 주소는 상기 제1 데이터의 마지막 논리 주소에 후속되고, 상기 호스트 장치는 상기 제1 데이터 및 상기 제2 데이터를 상기 플래시 메모리 컨트롤러에 연속적으로 전송하여, 상기 제1 데이터의 적어도 일부 및 상기 제2 데이터의 적어도 일부를 상기 공용 블록에 기록하도록 요구하는, 플래시 메모리 컨트롤러에 적용되는 제어 방법.
  10. 제1항에 있어서,
    상기 호스트 장치로부터의 데이터를 저장하는 측면에서 볼 때, 상기 제3 액세스 모드를 사용할 경우, 하나의 블록은 하나의 영역의 데이터만 저장할 수 있는, 플래시 메모리 컨트롤러에 적용되는 제어 방법.
  11. 제1항에 있어서,
    상기 제4 액세스 모드를 사용하는 경우,
    상기 호스트 장치로부터의 제1 데이터를 수신하되, 상기 제1 데이터는 제1 영역의 모든 데이터인 단계;
    상기 제1 데이터의 논리 주소의 순서에 따라, 상기 제1 데이터를 공용 블록에 순차적으로 기록하는 단계; 및
    상기 호스트 장치로부터의 제2 데이터를 수신하되, 상기 제2 데이터는 제2 영역의 모든 데이터인 단계;
    상기 제2 데이터의 논리 주소의 순서에 따라, 상기 제2 데이터를 상기 공용 블록 중의 남은 데이터 페이지에 순차적으로 기록하는 단계;
    를 더 포함하는, 플래시 메모리 컨트롤러에 적용되는 제어 방법.
  12. 제11항에 있어서,
    상기 제4 액세스 모드를 사용하는 경우, 임의의 데이터가 채워진 블록은 반드시 복수의 영역의 데이터를 저장하는, 플래시 메모리 컨트롤러에 적용되는 제어 방법.
  13. 플래시 메모리 컨트롤러에 있어서,
    상기 플래시 메모리 컨트롤러는 플래시 메모리 모듈을 액세스하도록 사용되고, 상기 플래시 메모리 모듈은 복수의 블록을 포함하고, 각 블록은 복수의 데이터 페이지를 포함하고, 상기 플래시 메모리 컨트롤러는,
    프로그램 코드를 저장하기 위한 판독 전용 메모리;
    상기 프로그램 코드를 실행하여 상기 플래시 메모리 모듈에 대한 액세스를 제어하는 마이크로 프로세서; 및
    버퍼 메모리를 포함하고
    상기 마이크로 프로세서는 호스트 장치로부터 설정 명령을 수신하고, 상기 설정 명령은 플래시 메모리 모듈의 적어도 일부분을 영역 네임 스페이스(zoned namespace)로 설정하고, 상기 영역 네임 스페이스는 논리적으로 복수의 영역(zone)을 포함하고, 상기 호스트 장치의 상기 영역 네임 스페이스에 대한 데이터 기록 액세스는 반드시 영역 단위로 진행해야 하고, 각 영역의 크기는 모두 동일하고, 각 영역 내 대응하는 논리 주소는 반드시 연속적이며 영역 사이에는 중복되는 논리 주소가 없어야 하고,
    상기 마이크로 프로세서는 제1 액세스 모드, 제2 액세스 모드, 제3 액세스 모드 및 제4 액세스 모드 중 하나의 모드를 사용하여, 상기 호스트 장치로부터의 데이터를 상기 플래시 메모리 모듈에 기록하되, 상기 데이터는 특정 영역의 모든 데이터이고,
    상기 마이크로 프로세서가 상기 제1 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 복수의 특정 블록에 순차적으로 기록하고, 그리고 상기 데이터가 기록된 후, 상기 복수의 특정 블록의 마지막 특정 블록의 남은 데이터 페이지에 유효하지 않은 데이터를 기록하거나, 남은 데이터 페이지를 공백으로 유지하면서 삭제 전에 상기 호스트 장치로부터의 데이터를 상기 호스트 장치의 쓰기 명령에 따라 기록하지 않고,
    상기 마이크로 프로세서가 상기 제2 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 상기 복수의 특정 블록에 순차적으로 기록하고, 그리고 상기 데이터가 기록된 후에만, 상기 마지막 특정 블록의 남은 데이터 페이지에 다른 영역의 데이터가 기록될 수 있고,
    상기 마이크로 프로세서가 상기 제3 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 하나의 특정 블록에 순차적으로 기록하고, 그리고 상기 데이터가 기록된 후, 상기 특정 블록의 남은 데이터 페이지에 유효하지 않은 데이터를 기록하거나, 남은 데이터 페이지를 공백으로 유지하 면서 삭제 전에 상기 호스트 장치로부터의 데이터를 상기 호스트 장치의 쓰기 명령에 따라 기록하지 않고,
    상기 마이크로 프로세서가 상기 제4 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 하나의 특정 블록에 순차적으로 기록하고, 그리고 상기 데이터가 기록된 후에만, 상기 마지막 특정 블록의 남은 데이터 페이지에 다른 영역의 데이터가 기록될 수 있는,
    플래시 메모리 컨트롤러.
  14. 제13항에 있어서,
    각 영역의 크기가 각 블록의 크기보다 클 경우, 상기 마이크로 프로세서는 상기 제1 액세스 모드 또는 상기 제2 액세스 모드를 사용하고, 각 영역의 크기가 각 블록의 크기보다 작을 경우, 상기 마이크로 프로세서는 상기 제3 액세스 모드 또는 상기 제4 액세스 모드를 사용하는,
    플래시 메모리 컨트롤러.
  15. 제13항에 있어서,
    상기 제1 액세스 모드를 선택하는 경우,
    상기 호스트 장치가 상기 데이터를 전송하고 논리 주소를 상기 데이터의 마지막 논리 주소의 다른 데이터에 후속하여 전송하면, 상기 마이크로 프로세서는 상기 다른 데이터를 상기 복수의 특정 블록의 마지막 특정 블록의 남은 데이터 페이지에 기록하지 않고, 상기 다른 데이터를 상기 복수의 특정 블록과 상이한 기타 블록에 기록하는,
    플래시 메모리 컨트롤러.
  16. 제15항에 있어서,
    상기 제1 액세스 모드를 선택하는 경우,
    하나의 블록은 하나의 영역의 데이터만 저장할 수 있는, 플래시 메모리 컨트롤러.
  17. 제13항에 있어서,
    상기 마이크로 프로세서가 상기 제2 액세스 모드를 사용하는 경우,
    상기 마이크로 프로세서는, 상기 호스트 장치로부터의 제1 데이터를 수신하되 , 상기 제1 데이터는 제1 영역의 모든 데이터인 조작; 상기 제1 데이터의 논리 주소의 순서에 따라, 순차적으로 상기 제1 데이터를 상기 플래시 메모리 모듈의 상기 적어도 하나의 제1 특정 블록 및 공용 블록에 기록하되, 상기 제1 데이터에서 첫 번째 논리 주소에 대응하는 내용은 상기 적어도 하나의 제1 특정 블록에 저장되고, 상기 제1 데이터에서 마지막 논리 주소에 대응하는 내용은 상기 공용 블록에 저장되는 조작; 및 상기 호스트 장치로부터의 제2 데이터를 수신하되, 상기 제2 데이터는 제2 영역의 모든 데이터인 조작; 상기 제2 데이터의 논리 주소의 순서에 따라, 상기 제2 데이터를 상기 플래시 메모리 모듈의 상기 적어도 하나의 제2 특정 블록 및 상기 공용 블록에 순차적으로 기록하되, 상기 제2 데이터에서 첫 번째 논리 주소에 대응하는 내용은 상기 적어도 하나의 제2 특정 블록에 저장되고, 상기 제2 데이터에서 마지막 논리 주소에 대응하는 내용은 상기 공용 블록에 저장되는 조작을 실행하는,
    플래시 메모리 컨트롤러.
  18. 저장 장치에 있어서,
    복수의 블록을 포함하고, 각 블록은 복수의 데이터 페이지를 포함하는, 플래시 메모리 모듈; 및
    상기 플래시 메모리 모듈에 액세스하기 위한, 플래시 메모리 컨트롤러를 포함하고,
    상기 플래시 메모리 컨트롤러는 호스트 장치로부터 설정 명령을 수신하되, 상기 설정 명령은 플래시 메모리 모듈의 적어도 일부분을 영역 네임 스페이스(zoned namespace) 로 설정하고, 상기 영역 네임 스페이스는 논리적으로 복수의 영역(zone)을 포함하고, 상기 호스트 장치의 상기 영역 네임 스페이스에 대한 데이터 기록 액세스는 반드시 영역 단위로 진행해야 하고, 각 영역의 크기는 모두 동일하고, 각 영역 내 대응하는 논리 주소는 반드시 연속적이어야 하고, 영역 사이에 중복되는 논리 주소가 없어야 하고,
    상기 플래시 메모리 컨트롤러는 제1 액세스 모드, 제2 액세스 모드, 제3 액세스 모드 및 제4 액세스 모드 중 하나의 모드를 사용하여, 상기 호스트 장치로부터의 데이터를 상기 플래시 메모리 모듈에 기록하되, 상기 데이터는 특정 영역의 모든 데이터이고,
    상기 플래시 메모리 컨트롤러가 상기 제1 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 복수의 특정 블록에 순차적으로 기록하고, 상기 데이터가 기록된 후, 상기 복수의 특정 블록의 마지막 특정 블록의 남은 데이터 페이지에 유효하지 않은 데이터를 기록하거나, 남은 데이터 페이지를 공백으로 유지하면서 삭제 전에 상기 호스트 장치로부터의 데이터를 상기 호스트 장치의 쓰기 명령에 따라 기록하지 않고,
    상기 플래시 메모리 컨트롤러가 상기 제2 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 상기 복수의 특정 블록에 순차적으로 기록하고, 상기 데이터가 기록된 후에만 상기 마지막 특정 블록의 남은 데이터 페이지에 다른 영역의 데이터가 기록될 수 있고,
    상기 플래시 메모리 컨트롤러가 상기 제3 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 하나의 특정 블록에 순차적으로 기록하고, 상기 데이터가 기록된 후, 상기 특정 블록의 남은 데이터 페이지에 유효하지 않은 데이터를 기록하거나, 남은 데이터 페이지를 공백으로 유지하면서 삭제 전에 상기 호스트 장치로부터의 데이터를 상기 호스트 장치의 쓰기 명령에 따라 기록하지 않고,
    상기 플래시 메모리 컨트롤러가 상기 제4 액세스 모드를 사용하는 경우, 상기 데이터의 논리 주소의 순서에 따라, 상기 데이터를 상기 플래시 메모리 모듈의 하나의 특정 블록에 순차적으로 기록하고, 상기 데이터가 기록된 후에만, 상기 마지막 특정 블록의 남은 데이터 페이지에 다른 영역의 데이터가 기록될 수 있는,
    저장 장치.
  19. 제18항에 있어서,
    각 영역의 크기가 각 블록의 크기보다 클 경우, 상기 플래시 메모리 컨트롤러는 상기 제1 액세스 모드 또는 상기 제2 액세스 모드를 선택하고, 각 영역의 크기가 각 블록의 크기보다 작을 경우, 상기 플래시 메모리 컨트롤러는 상기 제3 액세스 모드 또는 상기 제4 액세스 모드를 선택하는,
    저장 장치
  20. 제18항에 있어서,
    상기 플래시 메모리 컨트롤러가 상기 제2 액세스 모드를 사용하는 경우, 상기 플래시 메모리 컨트롤러는, 상기 호스트 장치로부터의 제1 데이터를 수신하되, 상기 제1 데이터는 제1 영역의 모든 데이터인 조작; 상기 제1 데이터의 논리 주소의 순서에 따라, 상기 제1 데이터를 상기 플래시 메모리 모듈의 상기 적어도 하나의 제1 특정 블록 및 공용 블록에 순차적으로 기록하되, 상기 제1 데이터에서 첫 번째 논리 주소에 대응하는 내용은 상기 적어도 하나의 제1 특정 블록에 저장되고, 상기 제1 데이터에서 마지막 논리 주소에 대응하는 내용은 상기 공용 블록에 저장되는 조작; 및 상기 호스트 장치로부터의 제2 데이터를 수신하되, 상기 제2 데이터는 제2 영역의 모든 데이터인 조작; 상기 제2 데이터의 논리 주소의 순서에 따라, 상기 제2 데이터를 상기 플래시 메모리 모듈의 상기 적어도 하나의 제2 특정 블록 및 상기 공용 블록에 순차적으로 기록하되, 상기 제2 데이터에서 첫 번째 논리 주소에 대응하는 내용은 상기 적어도 하나의 제2 특정 블록에 저장되고, 상기 제2 데이터에서 마지막 논리 주소에 대응하는 내용은 상기 공용 블록에 저장되는 조작을 실행하는,
    저장 장치.
KR1020210025650A 2021-01-07 2021-02-25 저장 장치, 플래시 메모리 컨트롤러 및 그 제어 방법 KR102596244B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
TW110100581 2021-01-07
TW110100581A TWI775268B (zh) 2021-01-07 2021-01-07 儲存裝置、快閃記憶體控制器及其控制方法

Publications (2)

Publication Number Publication Date
KR20220099874A true KR20220099874A (ko) 2022-07-14
KR102596244B1 KR102596244B1 (ko) 2023-10-30

Family

ID=79025089

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210025650A KR102596244B1 (ko) 2021-01-07 2021-02-25 저장 장치, 플래시 메모리 컨트롤러 및 그 제어 방법

Country Status (6)

Country Link
US (2) US11593008B2 (ko)
EP (1) EP4033364A1 (ko)
JP (1) JP7026833B1 (ko)
KR (1) KR102596244B1 (ko)
CN (1) CN114741330A (ko)
TW (1) TWI775268B (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11221958B2 (en) * 2017-08-29 2022-01-11 Samsung Electronics Co., Ltd. System and method for LBA-based RAID
TWI775268B (zh) 2021-01-07 2022-08-21 慧榮科技股份有限公司 儲存裝置、快閃記憶體控制器及其控制方法
US11940925B2 (en) * 2021-12-29 2024-03-26 Micron Technology, Inc. Performing memory access operations with a logical-to-physical mapping table with reduced size
TWI835221B (zh) * 2022-07-26 2024-03-11 旺宏電子股份有限公司 記憶體裝置及其操作方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200167274A1 (en) * 2019-12-20 2020-05-28 Intel Corporation Zoned namespace with zone grouping
US20200356304A1 (en) * 2019-05-10 2020-11-12 SK Hynix Inc. Memory controller and method of operating the same
KR20210001898A (ko) * 2019-06-28 2021-01-06 웨스턴 디지털 테크놀로지스, 인코포레이티드 존 네임스페이스에 대한 존 형성

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
JP4533968B2 (ja) 2007-12-28 2010-09-01 株式会社東芝 半導体記憶装置及びその制御方法、コントローラ、情報処理装置
US9811462B2 (en) * 2015-04-30 2017-11-07 Toshiba Memory Corporation Memory system executing garbage collection
JP6403162B2 (ja) * 2015-07-23 2018-10-10 東芝メモリ株式会社 メモリシステム
US20170123928A1 (en) * 2015-10-30 2017-05-04 Netapp, Inc. Storage space reclamation for zoned storage
US20170124104A1 (en) * 2015-10-31 2017-05-04 Netapp, Inc. Durable file system for sequentially written zoned storage
JP6524039B2 (ja) * 2016-09-23 2019-06-05 東芝メモリ株式会社 メモリシステム及び制御方法
US10437476B2 (en) 2017-10-23 2019-10-08 Micron Technology, Inc. Namespaces allocation in non-volatile memory devices
JP2019191909A (ja) * 2018-04-25 2019-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
CN115421671A (zh) 2018-06-22 2022-12-02 慧荣科技股份有限公司 闪存存储装置的命名空间操作方法
US11204721B2 (en) 2019-05-06 2021-12-21 Micron Technology, Inc. Input/output size control between a host system and a memory sub-system
US20200409601A1 (en) * 2019-06-28 2020-12-31 Western Digital Technologies, Inc. Hold of Write Commands in Zoned Namespaces
US20200089407A1 (en) * 2019-11-22 2020-03-19 Intel Corporation Inter zone write for zoned namespaces
US20210182166A1 (en) * 2019-12-12 2021-06-17 Western Digital Technologies, Inc. Zoned namespace management of non-volatile storage devices
CN111124305B (zh) * 2019-12-20 2021-08-31 浪潮电子信息产业股份有限公司 固态硬盘磨损均衡方法、装置及计算机可读存储介质
JP7366795B2 (ja) * 2020-02-14 2023-10-23 キオクシア株式会社 メモリシステムおよび制御方法
US11586385B1 (en) * 2020-05-06 2023-02-21 Radian Memory Systems, Inc. Techniques for managing writes in nonvolatile memory
CN111694515B (zh) * 2020-05-23 2023-01-10 苏州浪潮智能科技有限公司 一种基于ZNS固态硬盘的zone写分发方法及系统
US20220206696A1 (en) * 2020-12-31 2022-06-30 Pure Storage, Inc. Storage system with selectable write modes
TWI775268B (zh) * 2021-01-07 2022-08-21 慧榮科技股份有限公司 儲存裝置、快閃記憶體控制器及其控制方法
TWI808384B (zh) * 2021-02-23 2023-07-11 慧榮科技股份有限公司 儲存裝置、快閃記憶體控制器及其控制方法
US11733895B2 (en) * 2021-03-31 2023-08-22 Silicon Motion, Inc. Control method of flash memory controller and associated flash memory controller and storage device
US20230236765A1 (en) * 2022-01-26 2023-07-27 Samsung Electronics Co., Ltd. Storage controller performing active zone refresh, method of operating storage controller, and method of operating storage device having storage controller

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200356304A1 (en) * 2019-05-10 2020-11-12 SK Hynix Inc. Memory controller and method of operating the same
KR20210001898A (ko) * 2019-06-28 2021-01-06 웨스턴 디지털 테크놀로지스, 인코포레이티드 존 네임스페이스에 대한 존 형성
US20200167274A1 (en) * 2019-12-20 2020-05-28 Intel Corporation Zoned namespace with zone grouping

Also Published As

Publication number Publication date
JP7026833B1 (ja) 2022-02-28
CN114741330A (zh) 2022-07-12
US20230153002A1 (en) 2023-05-18
US11593008B2 (en) 2023-02-28
TW202228136A (zh) 2022-07-16
US20220214808A1 (en) 2022-07-07
US12014063B2 (en) 2024-06-18
JP2022106634A (ja) 2022-07-20
EP4033364A1 (en) 2022-07-27
KR102596244B1 (ko) 2023-10-30
TWI775268B (zh) 2022-08-21

Similar Documents

Publication Publication Date Title
KR102596244B1 (ko) 저장 장치, 플래시 메모리 컨트롤러 및 그 제어 방법
TWI418980B (zh) 記憶體控制器、用於格式化記憶體系統中之記憶體陣列和固態驅動器之方法及固態記憶體系統
TWI828085B (zh) 快閃記憶體控制器的控制方法、快閃記憶體控制器以及儲存裝置
US20100057979A1 (en) Data transmission method for flash memory and flash memory storage system and controller using the same
TWI821151B (zh) 快閃記憶體控制器的控制方法、快閃記憶體控制器以及儲存裝置
KR20110018157A (ko) 플래시 메모리 장치의 액세스 방법
TWI808384B (zh) 儲存裝置、快閃記憶體控制器及其控制方法
US10949110B2 (en) Configurable mapping system in a non-volatile memory
CN115390746A (zh) 主机设备、存储设备以及电子设备
TWI806508B (zh) 快閃記憶體控制器的控制方法、快閃記憶體控制器以及儲存裝置
CN115390747A (zh) 存储设备及其操作方法
KR20200032404A (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
TWI844891B (zh) 儲存裝置、快閃記憶體控制器及其控制方法
TWI821152B (zh) 儲存裝置、快閃記憶體控制器及其控制方法
TW202249018A (zh) 儲存裝置、快閃記憶體控制器及其控制方法
KR20220159270A (ko) 스토리지 장치 및 그 동작 방법
KR20200106682A (ko) 데이터 처리 시스템 및 그것의 동작방법
CN115390745A (zh) 存储设备及其操作方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant