KR101730151B1 - 플래시 메모리 장치에 데이터를 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템 - Google Patents

플래시 메모리 장치에 데이터를 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템 Download PDF

Info

Publication number
KR101730151B1
KR101730151B1 KR1020157020619A KR20157020619A KR101730151B1 KR 101730151 B1 KR101730151 B1 KR 101730151B1 KR 1020157020619 A KR1020157020619 A KR 1020157020619A KR 20157020619 A KR20157020619 A KR 20157020619A KR 101730151 B1 KR101730151 B1 KR 101730151B1
Authority
KR
South Korea
Prior art keywords
block
data
target data
flash memory
main controller
Prior art date
Application number
KR1020157020619A
Other languages
English (en)
Other versions
KR20160016744A (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 KR20160016744A publication Critical patent/KR20160016744A/ko
Application granted granted Critical
Publication of KR101730151B1 publication Critical patent/KR101730151B1/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/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
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/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/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation

Abstract

본 발명의 실시예들은 플래시 메모리 장치에 데이터를 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템을 제공한다. 본 발명의 실시예들에서, 복수 개의 블록들 중 제1 블록의 유효 용량이 제1 타겟 데이터의 크기보다 작으면, 주 컨트롤러는 제1 타겟 데이터를 제1 블록의 유효 용량의 크기를 갖는 제1 파트와 제1 타겟 데이터의 크기에서 제1 파트의 크기를 뺀 크기의 제2 파트로 분할하고, 복수 개의 블록들 중에서, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록인 제2 블록을 결정하며; 제1 파트를 제1 블록에 기록하고 제2 파트를 제2 블록에 기록하며, 이로써 블록 활용도가 향상되고 SSD의 저장 공간이 절약된다.

Description

플래시 메모리 장치에 데이터를 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템{METHOD FOR WRITING DATA INTO FLASH MEMORY APPARATUS, FLASH MEMORY APPARATUS, AND STORAGE SYSTEM}
본 발명의 실시예들은 저장 기술 분야에 관한 것으로서, 특히 플래시 메모리 장치에 데이터를 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템에 관한 것이다.
플래시 메모리 장치는 저장 매체가 플래시 유닛인 비휘발성 메모리로서, 정전 후에도 데이터가 손실되지 않는 것이 특징이다. 따라서 플래시 메모리 장치는 외부 또는 내부 메모리로서 널리 사용된다. 플래시 유닛을 저장 매체로서 사용하는 플래시 메모리 장치는 솔리드 스테이트 드라이브(SSD; Solid State Drive)라 일컬어지기도 하는 솔리드 스테이트 디바이스(SSD; Solid State Device)일 수 있으며, 또는 다른 메모리일 수도 있다.
하나의 SSD는 일반적으로 여러 개의 플래시 칩을 포함하며, 각각의 플래시 칩은 몇몇 블록들(block)을 포함하고, 각각의 블록은 여러 개의 페이지(page)를 더 포함한다. 몇몇의 경우에는 손상(damage)을 입은 페이지(손상된 페이지라고도 함)가 블록 내에 발생할 수 있다. SSD가 손상된 페이지를 포함하는 블록으로 데이터를 기록할 때, 손상된 페이지를 포함하는 블록이 데이터를 저장하기에 불충분한 경우, 일반적으로는, 새로운 블록을 찾아내 데이터의 오버플로(overflow)를 저장한다. 이에 따라 SSD에는 몇몇 데이터가 기록되어 있으나 데이터로 전부 채워져 있지 않은 수많은 블록들이 존재하게 되어 블록들의 공간 활용도가 낮아지며 이로 인해 SSD 저장 공간이 낭비된다.
본 발명의 실시예들에서 제공되는 플래시 메모리 장치에 데이터를 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템은 블록의 공간 활용도를 높이고 SSD의 저장 공간을 절약할 수 있다.
제1 양상에 따라, 본 발명의 일 실시예는 플래시 메모리 장치를 제공하고, 이 플래시 메모리 장치는 주 컨트롤러(primary controller) 및 플래시칩(flash chip)을 포함하며, 상기 플래시칩은 복수 개의 블록을 포함하고;
상기 주 컨트롤러는,
제1 타겟 데이터를 수신하고;
상기 복수 개의 블록 중 제1 블록의 유효 용량(effective capacity)이 상기 제1 타겟 데이터의 크기보다 작으면, 제1 타겟 데이터를 제1 타겟 데이터의 제1 파트(part)와 제1 타겟 데이터의 제2 파트로 분할하고;
상기 복수 개의 블록 중에서, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 제2 블록을 결정하고;
상기 제1 타겟 데이터의 제1 파트를 상기 제1 블록에 기록하고; 그리고
상기 제1 타겟 데이터의 제2 파트를 상기 제2 블록에 기록하도록 구성되며,
상기 제1 타겟 데이터의 제1 파트의 크기는 상기 제1 블록의 유효 용량이고, 상기 제1 타겟 데이터의 제2 파트의 크기는 상기 제1 타겟 데이터의 크기에서 상기 제1 타겟 데이터의 제1 파트의 크기를 뺀 것이다.
제1 양상의 제1 구현 가능 방식에서, 제2 블록은 미리 설정된 블록이다.
제1 양상의 제2 구현 가능 방식에서, 상기 제2 블록은 데이터 플래그(data flag)를 가지며, 상기 데이터 플래그는, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록을 식별하는 데에 사용되고; 그리고
상기 주 컨트롤러는 구체적으로, 상기 데이터 플래그에 따라 상기 복수 개의 블록 중에서 상기 제2 블록을 결정하도록 구성된다.
제1 양상의 제2 구현 가능 방식을 기준으로, 제1 양상의 제3 구현 가능 방식에서, 상기 주 컨트롤러는,
제2 타겟 데이터를 수신하고;
상기 복수 개의 블록 중 제3 블록의 유효 용량이 상기 제2 타겟 데이터의 크기보다 작으면, 상기 제2 타겟 데이터를 상기 제2 타겟 데이터의 제1 파트와 상기 제2 타겟 데이터의 제2 파트로 분할하고;
상기 제2 타겟 데이터의 제1 파트를 상기 제3 블록에 기록하고, 상기 제2 타겟 데이터의 제2 파트를 상기 제2 블록에 기록하며; 그리고
상기 데이터 플래그를 상기 제2 블록에 추가하도록 더 구성되며,
상기 제2 타겟 데이터의 제1 파트의 크기는 상기 제3 블록의 유효 용량이고, 상기 제2 타겟 데이터의 제2 파트의 크기는 상기 제2 타겟 데이터의 크기에서 상기 제2 타겟 데이터의 제1 파트의 크기를 뺀 것이다.
제2 양상에 따라, 본 발명의 일 실시예는 플래시 메모리 장치를 제공하며, 이 플래시 메모리 장치는 주 컨트롤러 및 플래시칩을 포함하고, 상기 플래시칩은 복수 개의 블록을 포함하며; 그리고
상기 주 컨트롤러는,
제1 타겟 데이터를 수신하고, 상기 제1 타겟 데이터를 상기 복수 개의 블록 중 제1 블록에 기록하며;
상기 제1 블록이 데이터로 전부 채워지면, 상기 제1 타겟 데이터의 데이터이지만 상기 제1 블록에 기록되지 않은 데이터를 획득하고;
상기 복수 개의 블록 중에서, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록인 제2 블록을 결정하고; 그리고
상기 제1 타겟 데이터의 데이터이지만 상기 제1 블록에 기록되지 않은 데이터를 상기 제2 블록에 기록하도록 구성되며,
상기 제1 블록의 유효 용량은 상기 제1 타겟 데이터의 크기보다 작다.
제2 양상의 제1 구현 가능 방식에서, 제2 블록은 미리 설정된 블록이다.
제2 양상의 제2 구현 가능 방식에서, 상기 제2 블록은 데이터 플래그를 가지며, 상기 데이터 플래그는, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록을 식별하는 데에 사용되고; 그리고
상기 주 컨트롤러는 구체적으로, 상기 데이터 플래그에 따라 상기 복수 개의 블록 중에서 상기 제2 블록을 결정하도록 구성된다.
제2 양상의 제2 구현 가능 방식을 기준으로, 제2 양상의 제3 구현 가능 방식에서, 상기 주 컨트롤러는,
제2 타겟 데이터를 수신하고, 상기 제2 타겟 데이터를 상기 복수 개의 블록 중 제3 블록에 기록하고;
상기 제3 블록이 데이터로 전부 채워지면, 상기 제2 타겟 데이터의 데이터이지만 상기 제3 블록에 기록되지 않은 데이터를 획득하고;
상기 제2 타겟 데이터의 데이터이지만 상기 제3 블록에 기록되지 않은 데이터를 상기 제2 블록에 기록하고; 그리고
상기 데이터 플래그를 상기 제2 블록에 추가하도록 더 구성되며,
상기 제3 블록의 유효 용량은 상기 제2 타겟 데이터의 크기보다 작다.
제3 양상에 따라, 본 발명의 일 실시예는 플래시 메모리 장치에 데이터를 기록하는 방법을 제공하며, 상기 플래시 메모리 장치는 주 컨트롤러 및 플래시칩을 포함하고, 상기 플래시칩은 복수 개의 블록을 포함하며;
상기 플래시 메모리 장치에 데이터를 기록하는 방법은,
상기 주 컨트롤러가 제1 타겟 데이터를 수신하는 단계;
상기 복수 개의 블록 중 제1 블록의 유효 용량이 상기 제1 타겟 데이터의 크기보다 작으면, 제1 타겟 데이터를 제1 타겟 데이터의 제1 파트와 제1 타겟 데이터의 제2 파트로 분할하는 단계;
상기 주 컨트롤러가, 상기 복수 개의 블록 중에서, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 제2 블록을 결정하는 단계; 및
상기 주 컨트롤러가, 상기 제1 타겟 데이터의 제1 파트를 상기 제1 블록에 기록하고, 상기 제1 타겟 데이터의 제2 파트를 상기 제2 블록에 기록하는 단계
를 포함하고,
상기 제1 타겟 데이터의 제1 파트의 크기는 상기 제1 블록의 유효 용량이고, 상기 제1 타겟 데이터의 제2 파트의 크기는 상기 제1 타겟 데이터의 크기에서 상기 제1 타겟 데이터의 제1 파트의 크기를 뺀 것이다.
제3 양상의 제1 구현 가능 방식에서, 제2 블록은 미리 설정된 블록이다.
제3 양상의 제2 구현 가능 방식에서, 상기 제2 블록은 데이터 플래그를 가지며, 상기 데이터 플래그는, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록을 식별하는 데에 사용되고; 그리고
상기 주 컨트롤러가, 상기 복수 개의 블록 중에서, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 제2 블록을 결정하는 단계는:
상기 주 컨트롤러가, 상기 데이터 플래그에 따라 상기 복수 개의 블록 중에서 상기 제2 블록을 결정하는 단계를 포함한다.
제3 양상의 제2 구현 가능 방식을 기준으로, 제3 양상의 제3 구현 가능 방식에서, 본 방법은,
상기 주 컨트롤러가 제2 타겟 데이터를 수신하는 단계;
상기 복수 개의 블록 중 제3 블록의 유효 용량이 상기 제2 타겟 데이터의 크기보다 작으면, 상기 제2 타겟 데이터를 상기 제2 타겟 데이터의 제1 파트와 상기 제2 타겟 데이터의 제2 파트로 분할하는 단계;
상기 주 컨트롤러가, 상기 제2 타겟 데이터의 제1 파트를 상기 제3 블록에 기록하고, 상기 제2 타겟 데이터의 제2 파트를 상기 제2 블록에 기록하는 단계; 및
상기 주 컨트롤러가 상기 데이터 플래그를 상기 제2 블록에 추가하는 단계
를 더 포함하며,
상기 제2 타겟 데이터의 제1 파트의 크기는 상기 제3 블록의 유효 용량이고, 상기 제2 타겟 데이터의 제2 파트의 크기는 상기 제2 타겟 데이터의 크기에서 상기 제2 타겟 데이터의 제1 파트의 크기를 뺀 것이다.
제4 양상에 따라, 본 발명의 일 실시예는 플래시 메모리 장치에 데이터를 기록하는 방법을 제공하며, 상기 플래시 메모리 장치는 주 컨트롤러 및 플래시칩을 포함하고, 상기 플래시칩은 복수 개의 블록을 포함하며,
상기 플래시 메모리 장치에 데이터를 기록하는 방법은,
상기 주 컨트롤러가 제1 타겟 데이터를 수신하고 상기 제1 타겟 데이터를 상기 복수 개의 블록 중 제1 블록에 기록하는 단계;
상기 제1 블록이 데이터로 전부 채워지면, 상기 주 컨트롤러가, 상기 제1 타겟 데이터의 데이터이지만 상기 제1 블록에 기록되지 않은 데이터를 획득하는 단계;
상기 주 컨트롤러가, 상기 복수 개의 블록 중에서, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록인 제2 블록을 결정하는 단계; 및
상기 주 컨트롤러가, 상기 제1 타겟 데이터의 데이터이지만 상기 제1 블록에 기록되지 않은 데이터를 상기 제2 블록에 기록하는 단계
를 포함하고,
상기 제1 블록의 유효 용량은 상기 제1 타겟 데이터의 크기보다 작다.
제4 양상의 제1 구현 가능 방식에서 제2 블록은 미리 설정된 블록이다.
제4 양상의 제2 구현 가능 방식에서, 상기 제2 블록은 데이터 플래그를 가지며, 상기 데이터 플래그는, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록을 식별하는 데에 사용되고; 그리고
상기 주 컨트롤러가, 상기 복수 개의 블록 중에서, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록인 제2 블록을 결정하는 단계는,
상기 주 컨트롤러가, 상기 데이터 플래그에 따라 상기 복수 개의 블록 중에서 상기 제2 블록을 결정하는 단계를 포함한다.
제4 양상의 제2 구현 가능 방식을 기준으로, 제4 양상의 제3 구현 가능 방식에서, 본 방법은,
상기 주 컨트롤러가 제2 타겟 데이터를 수신하고 상기 제2 타겟 데이터를 상기 복수 개의 블록 중 제3 블록에 기록하는 단계;
상기 제3 블록이 데이터로 전부 채워지면, 상기 주 컨트롤러가, 상기 제2 타겟 데이터의 데이터이지만 상기 제3 블록에 기록되지 않은 데이터를 획득하는 단계;
상기 주 컨트롤러가, 상기 제2 타겟 데이터의 데이터이지만 상기 제3 블록에 기록되지 않은 데이터를 상기 제2 블록에 기록하는 단계; 및
상기 주 컨트롤러가 상기 데이터 플래그를 상기 제2 블록에 추가하는 단계
를 더 포함하며,
상기 제3 블록의 유효 용량은 상기 제2 타겟 데이터의 크기보다 작다.
제5 양상에 따라, 본 발명의 일 실시예는 저장 시스템을 제공하며, 상기 저장 시스템은, 제1 양상, 또는 제1 양상의 제1 내지 제3 구현 가능 방식 중 어느 하나에 따른 플래시 메모리 장치와 컨트롤러를 포함하고, 상기 컨트롤러는, 제 제1 타겟 데이터를 상기 플래시 메모리 장치에 전송하도록 구성된다.
제6 양상에 따라, 본 발명의 일 실시예는 저장 시스템을 제공하며, 상기 저장 시스템은, 제2 양상, 또는 제2 양상의 제1 내지 제3 구현 가능 방식 중 어느 하나에 따른 플래시 메모리 장치와 컨트롤러를 포함하고, 상기 컨트롤러는 제1 타겟 데이터를 상기 플래시 메모리 장치에 전송하도록 구성된다.
본 발명의 실시예들은 데이터를 플래시 메모리 장치에 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템을 제공한다. 본 발명의 실시예들에서, 다수의 블록들 중 제1 블록의 유효 용량이 제1 타겟 데이터의 크기보다 작을 경우, 플래시 메모리 장치의 주 컨트롤러는 제1 타겟 데이터를 제1 타겟 데이터의 제1 파트와 제1 타겟 데이터의 제2 파트로 분할하며, 여기서 제1 타겟 데이터의 제1 파트의 크기는 제1 블록의 유효 용량이고, 제1 타겟 데이터의 제2 파트의 크기는 제1 타겟 데이터의 제1 파트의 크기를 뺀 제1 타겟 데이터의 크기이며; 다수의 블록들 중에서 제2 블록을 결정하는데, 여기서 제2 블록은 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록이고; 제1 타겟 데이터의 제1 파트를 제1 블록에 기록하고, 제1 타겟 데이터의 제2 파트를 제2 블록에 기록한다. 제2 블록이 데이터가 기록되지만 데이터로 전부 채워져 있지 않은 블록이기 때문에, 본 발명의 실시예들의 실현 방식에 따르면, 제1 타겟 데이터의 크기에서 제1 블록의 유효 용량을 뺌으로써 획득되는 데이터 부분이 제2 블록에 저장될 수 있어, 그러한 데이터 부분을 저장하기 위해 새로운 블록을 선택하지 않기 때문에, 블록 활용도를 높이고 SSD의 저장 공간을 절약한다.
또한, 본 발명의 실시예들은 데이터를 플래시 메모리 장치에 기록하는 다른 방법, 다른 플래시 메모리 장치, 및 다른 저장 시스템을 제공한다. 본 발명의 실시예들에서, 주 컨트롤러가 제1 타겟 데이터를 수신하고, 제1 타겟 데이터를 다수의 블록들 중 제1 블록에 기록하며; 제1 블록이 데이터로 전부 채워지면, 주 컨트롤러는, 제1 타겟 데이터의 데이터이지만 제1 블록에 기록되지 않은 데이터를 획득하며, 여기서 제1 블록의 유효 용량은 제1 타겟 데이터의 크기보다 작고; 주 컨트롤러는 다수의 블록들 중에서 제2 블록을 결정하며, 여기서 제2 블록은 데이터가 기록되어 있으나 데이터로 전부 채워져 있지 않은 블록이고; 주 컨트롤러는, 제1 타겟 데이터의 데이터이지만 제1 블록에 기록되지 않은 데이터를 제2 블록에 기록한다. 위 실시예들에서, 주 컨트롤러는, 제1 타겟 데이터의 데이터이지만 제1 블록에 기록되지 않은 데이터를 획득하여 데이터를 제2 블록에 기록할 수 있다. 제2 블록이 데이터가 기록되어 있으나 데이터로 전부 채워져 있지 않은 블록이기 때문에, 본 발명의 실시예들의 실현 방식에 따르면, 제1 타겟 데이터의 크기에서 제1 블록의 유효 용량을 뺌으로써 얻어지는 데이터 부분이 제2 블록에 저장될 수 있어, 그러한 데이터 부분을 저장하기 위해 새로운 블록을 선택하지 않기 때문에, 블록 활용도를 높이고 SSD의 저장 공간을 절약한다.
본 발명의 실시예들의 기술적 해결책을 보다 명확하게 설명하기 위해 이하에서는 실시예들 또는 종래 기술을 설명하기 위해 필요한 첨부 도면들을 간략하게 소개한다. 명확하게는, 이하의 설명은 본 발명의 일부 실시예들만을 보여주는 것일 뿐이며 통상의 기술자는 창조의 수고 없이 이 첨부 도면들로부터 다른 도면들도 도출할 수 있다.
도 1은 본 발명의 일 실시예에 따른 저장 시스템의 모식적 구조도이다.
도 2는 본 발명의 일 실시예에 따른 플래시 메모리 장치의 주 컨트롤러의 모식적 구조도이다.
도 3은 본 발명의 일 실시예에 따른 플래시 메모리 장치의 저장 매체의 모식적 구조도이다.
도 4는 본 발명의 일 실시예에 따른 플래시 메모리 장치에 데이터를 기록하는 과정의 모식적 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 플래시 메모리 장치에 데이터가 기록되는 시나리오의 모식도이다.
도 6은 본 발명의 일 실시예에 따른 플래시 메모리 장치에 데이터가 기록되는 다른 시나리오의 모식도이다.
도 7은 본 발명의 일 실시예에 따른 플래시 메모리 장치에 데이터를 기록하는 과정의 다른 모식적 흐름도이다.
본 발명의 실시예들은 블록의 공간 활용도를 높일 수 있는, 플래시 메모리 장치에 데이터를 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템을 제공한다.
도 1은 본 발명의 일 실시예에 따른 저장 시스템의 모식적 구조도를 보여준다. 도 1에 도시된 저장 시스템은 컨트롤러(11) 및 플래시 메모리 장치(22)를 포함한다. 플래시 메모리 장치(22)는, 저장 매체로서 플래시 유닛을 사용하는 저장 장치로서, 솔리드 스테이트 드라이브(SSD; Solid State Drive)라 일컬어지기도 하는 솔리드 스테이트 디바이스(SSD; Solid State Device)를 포함할 수 있으며, 다른 메모리도 더 포함할 수 있다. 본 실시예에서 플래시 메모리 장치(22)는 SSD를 예시로 하여 설명된다.
도 1은 예시적 설명일 뿐 구체적인 네트워킹 방식을 제한하지 않으며, 예컨대 컨트롤러(11)와 플래시 메모리 장치(22)가 서로 통신할 수 있는 한 캐스케이딩 트리 네트워킹(cascading tree networking)과 링 네트워킹(ring networking)이 모두 사용될 수 있다.
컨트롤러(11)는 종래 기술로서 알려져 있는 임의의 컴퓨팅 디바이스, 예컨대 서버 또는 데스크톱 컴퓨터 등을 포함할 수 있다. 운영 체제(operating system)와 다른 애플리케이션 프로그램들이 컨트롤러(11) 내에 설치될 수 있다. 컨트롤러(11)는 입/출력(I/O; input/output) 요청을 플래시 메모리 장치(22)로 전송할 수 있다. 예를 들어, 데이터 기록 요청이 플래시 메모리 장치(22)로 전송됨으로써, 플래시 메모리 장치(22)는 데이터 기록 요청 내에 운반된(carried) 기록 예정 데이터(to-be-written data)를 저장 매체에 기록한다. 위와 같은 본 발명의 실시예에서의 I/O 요청은 데이터 기록 요청 또는 데이터 판독 요청일 수 있음에 유의해야 한다.
주 컨트롤러(primary controller)(220)는 컨트롤러(11)로부터 I/O 요청을 수신하고 처리하도록 구성된다. 저장 매체(221)은 데이터를 저장하도록 구성된다.
도 2를 참조하면, 도 2는 본 발명의 일 실시예에 따른 플래시 메모리 장치(22)의 주 컨트롤러(220)의 모식적 구조도이다. 도 2에 도시된 바와 같이, 주 컨트롤러(220)는 주로 프로세서(processor)(218), 캐시(cache)(230), 통신 버스(communication bus, 줄여서 ‘버스(bus)’라 함)(226), 및 통신 인터페이스(Communication Interface)(228)를 포함한다. 프로세서(218), 캐시(230), 및 통신 인터페이스(228)는 통신 버스(226)를 이용함으로써 상호 통신(mutual communication)을 이룬다(complete).
통신 인터페이스(228)는 컨트롤러(11) 또는 저장 매체(221)와 통신하도록 구성된다.
캐시(230)는 컨트롤러(11)로부터 수신된 데이터 또는 저장 매체(221)로부터 판독된 데이터를 일시적으로 저장하도록 구성된다. 캐시(230)는 RAM, ROM, 플래시 메모리(Flash memory), 또는 SSD(Solid State Disk)와 같이 데이터를 저장할 수 있는, 비일시적인(non-transitory) 기계로 판독 가능한(machine-readable) 임의의 매체를 포함할 수 있으며 이에 제한되지 않는다. 예를 들어, 컨트롤러(11)에 의해 데이터 기록 요청이 전송되면, 데이터 기록 요청은 캐시(230) 내에 저장되고 프로세서(218)에 의해 처리될 수 있다. 또한, 몇몇 적용 시나리오에서는, 캐시(230)가 주 컨트롤러(220)의 외부에 배치될 수도 있다.
프로세서(218)는 중앙 처리 장치(CPU; central processing unit), 집적 회로 ASIC(Application Specific Integrated Circuit), 또는 이와 같은 본 발명의 실시예를 실현하도록 구성된 하나 이상의 집적 회로일 수 있다. 이러한 본 발명의 실시예에서, 프로세서(218)는 데이터 기록 요청 또는 데이터 판독 요청을 호스트로부터 수신하고, 데이터 기록 요청 또는 데이터 판독 요청을 처리하여, 데이터 기록 요청 또는 데이터 판독 요청을 저장 매체(221)로 전송하고, 다른 작업을 수행한다.
프로세서(218)는 다양한 프로그램 명령들을 저장하도록 구성된 버퍼(buffer)(도시되어 있지 않음)를 더 포함할 수 있다. 예를 들어, 버퍼는 FTL(Flash Translation Layer)을 포함할 수 있다. 프로세서(218)는 FTL을 이용하여 손상된 페이지(damaged page)들 상에서 통계 자료(statistics)를 수집하는 등의 작업을 수행할 수 있고, 손상된 페이지들 상에서의 통계 자료 수집 결과를 FTL의 구성 정보 내에 저장할 수 있다. 또는 프로세서(218)는 다른 소프트웨어 모듈을 이용하여 유사한 기능을 실현할 수 있다. 따라서 FTL의 기능과 유사한 기능을 갖는 임의의 소프트웨어 모듈은 손상된 페이지들 상에서의 통계 자료 수집 등의 작업을 수행하고 손상된 페이지들 상에서의 통계 자료 수집의 결과를 소프트웨어 모듈의 구성 정보 내에 저장할 수 있으며, 이는 본 발명의 실시예들의 보호 범위 내에 속한다.
또한, 캐시(230)와, 프로세서(218)의 캐시는 함께 또는 별개로 배치될 수 있으며, 이는 위와 같은 본 발명의 실시예에 제한되지 않는다.
도 3을 참조하면, 도 3은 본 발명의 일 실시예에 따른 저장 매체(221)의 모식적 구조도이다. 이 실시예에서, 저장 매체(221)는 플래시 유닛을 나타내며, SLC(Single Level Cell), MLC(Multi Level Cell), 또는 다른 스토리지 셀(storage cell)일 수 있다.
저장 매체(221)는 일반적으로 몇몇의 플래시(Flash) 칩들을 포함한다. SSD에서, 채널(channel)은 몇몇의 플래시 칩들을 함께 연결하는 데에 이용된다. 데이터 기록 요청의 병행 처리(concurrent processing)가 채널들을 위해 실현될 수 있다. 도 3에 도시된 4개의 채널을 예로 들겠다. 주 컨트롤러(220)가 컨트롤러(11)에 의해 전송된 4개의 데이터 기록 요청을 수신하면, 4개의 채널 각각은 데이터 기록 요청을 처리할 수 있으며, 이로써 데이터 기록 요청 처리의 효율성이 증가한다.
각각의 플래시 칩은 몇몇의 블록들(block)을 포함하며, SSD에 의해 수행되는 삭제 작업은 블록을 단위로 하여 실행된다. 통상의 기술자는, 플래시 유닛의 삭제 특징으로 인해, 블록 내에 저장된 데이터는 일반적인 기계식 하드 드라이브처럼 바로 변경될 수 없음을 알 것이다. 블록 내의 데이터가 변경되어야 할 경우, SSD의 주 컨트롤러(220)는 새로운 블록을 찾아 변경된 데이터를 새로운 블록에 기록하며, 원래 블록 내의 데이터는 무효 데이터(invalid data)가 된다. SSD가 가비지 콜렉션(garbage collection)을 수행할 때, 무효 데이터는 삭제된다. 예를 들어, SSD가 가비지 콜렉션을 수행해야 하는 경우, 블록 내의 유효 데이터(valid data)는 먼저 다른 새로운 블록으로 이동될 수 있으며, 그 후에 원래 블록 내에 저장된 모든 데이터(유효 데이터 및 무효 데이터 포함)가 삭제된다. 완전하게 삭제된 후에, 블록은 빈 블록(blank block)이 된다. 이와 같은 본 발명의 실시예에서, 블록 내의 유효 데이터는 블록 내에 저장되고 변경된 적이 없는 데이터를 나타내며, 이와 같은 데이터의 부분은 판독될 수 있고; 블록 내의 무효 데이터는 블록 내에 저장되고 변경된 데이터를 나타내며, 이와 같은 데이터 부분은 판독될 수 없다.
각각의 블록은 몇몇 페이지들(page)을 포함할 수 있다. 몇몇의 경우에, 블록 내의 페이지에 손상이 생길 수 있으며, 본 발명의 실시예에서 손상이 생긴 페이지는 손상된 페이지라 일컫는다. 블록 내에 손상된 페이지가 있으면, 블록의 실제 용량(capacity)는 손상된 페이지를 포함하지 않는 블록의 용량보다 작다. 이러한 본 발명의 실시예에서, 블록의 실제 용량은 유효 용량(effective capacity)으로서 일컬어진다. 예를 들어, 블록의 표준 용량은 1M이고, 각 페이지의 크기는 4KB이다. 이와 같은 발명의 실시예에서, 블록의 표준 용량은 손상된 페이지를 포함하지 않는 빈 블록의 용량을 나타내며, 빈 블록은 완전히 삭제되어 유효 데이터 또는 무효 데이터 어느 것도 포함하지 않는 블록을 나타낸다. 블록의 유효 용량은 블록의 표준 용량에서 손상된 페이지들의 용량을 뺀 것과 같으며, 손상된 페이지들의 용량은 손상된 페이지 각각의 크기에 손상된 페이지들의 수를 곱한 것과 같다.
위와 같은 본 발명의 실시예에서, 블록의 표준 용량은, 컨트롤러(11) 내에 미리 저장될 수 있으며(prestored), 컨트롤러(11)에 의해 이용되어 표준 용량과 동일한 크기를 갖는 타겟 데이터를 플래시 메모리 장치(22)로 전송할 수 있다. 각 블록의 표준 용량은 N번째의 제곱(M)이며, N은 양의 정수이다. 블록들의 표준 용량은 서로 같을 수도 있고 또는 서로 다를 수도 있다. 블록들의 표준 용량이 서로 다른 경우, N의 값들은 서로 다를 수 있다. 이 경우, 컨트롤러(11)에 의해 플래시 메모리 장치(22)로 전송된 타겟 데이터의 사이즈는 가장 큰 블록의 표준 용량보다 크거나 같다.
또한, 위와 같은 본 발의 실시예에서, SSD가 데이터 기록 요청을 처리할 때, 데이터는 또한 페이지를 단위로 하여 기록된다. 예를 들어, 컨트롤러(11)가 데이터 기록 요청을 주 컨트롤러(220)로 전송하며, 이 때 데이터 기록 요청은 논리 블록 주소(LBA; Logic Block Address)의 세그먼트(segment) 및 타겟 데이터를 운반하며, LBA들은 컨트롤러(11)에 의해 액세스될 수 있는 주소들이다. 데이터 기록 요청을 수신하면, 주 컨트롤러(220)는 미리 정해진 정책에 따라 타겟 데이터를 블록에 기록할 수 있으며, 타겟 데이터가 기록된 다수의 페이지들의 주소들은 타겟 데이터를 실제로 저장하기 위한 주소들이며 물리적 주소들로서 일컬어질 수도 있다. SSD는 LBA들의 세그먼트와 다수의 페이지들의 주소들 간의 대응성(correspondence)를 확립 및 저장할 수 있으며, LBA들의 세그먼트와 다수의 페이지들의 주소들 간의 대응성은 FTL에 의해 관리된다. 이후에 컨트롤러(11)가 데이터 판독 요청을 주 컨트롤러(220)로 전송하고 타겟 데이터를 판독할 것을 요청하면, 데이터 판독 요청은 LBA들을 운반한다. 이 경우, 주 컨트롤러(220)는, LBA들, 및 LBA들과 물리적 주소들 간의 대응성에 따라 타겟 데이터를 판독해낼 수 있으며, 타겟 데이터를 컨트롤러(11)로 리턴할(return) 수 있다.
이하에서는 본 발명의 일 실시예에 따른 플래시 메모리 장치에 데이터를 기록하는 과정을 소개한다. 이러한 본 발명의 실시예에서의 플래시 메모리 장치에 데이터를 기록하는 방법은 도 2 및 도 3에 도시된 플래시 메모리 장치들 내에서 실현될 수 있다. 도 4에 도시된 바와 같이 본 방법은 이하의 단계를 포함한다.
단계 S101: 주 컨트롤러(220)가 제1 타겟 데이터를 수신한다.
제1 타겟 데이터는 컨트롤러(11)에 의해 주 컨트롤러(220)로 전송될 수 있다. 또한, 제1 타겟 데이터는 데이터 기록 요청 내에 운반된 데이터일 수도 있고, 또는 다수의 데이터 기록 요청들 내에 운반된 데이터일 수도 있으며, 제1 타겟 데이터의 크기는 블록의 표준 용량과 동일하다. 블록의 표준 용량은 컨트롤러(11) 내에 미리 저장될 수 있다.
구체적으로, 단계 S101은 프로세서(218)에 의해 실행될 수 있다. 통신 인터페이스(228)을 통해 컨트롤러(11)에 의해 전송되는 제1 타겟 데이터를 수신한 후에, 프로세서(218)는 제1 타겟 데이터를 캐시(230)에 기록할 수 있다.
단계 S102: 주 컨트롤러(220)가 다수의 블록들 중 제1 블록에 제1 타겟 데이터를 기록한다.
선택적인 실현 방식으로, 프로세서(218)는 빈 블록을 랜덤하게(randomly) 선택하고, 여기서 빈 블록은 정확하게, 손상된 페이지를 포함하는 블록이다. 제1 블록이 손상된 페이지를 포함하기 때문에, 제1 블록의 유효 용량은 제1 블록의 표준 용량보다 작다. 구체적으로, 제1 블록의 유효 용량은 제1 블록의 표준 용량에서 제1 블록 내에 포함된 손상된 페이지의 용량을 뺀 것과 같다.
구체적으로, 프로세서(218)이 단계 S102를 실행하기 전에, 제1 블록 내의 손상된 페이지에 대한 정보에 관한 통계 자료가 수집되지 않을 수 있으며, 이 경우 데이터를 기록하는 작업이 바로 수행된다. 프로세서(218)이 데이터 기록 작업을 실행하기 전에 제1 블록 내의 손상된 페이지에 대한 정보에 관한 통계 자료가 미리 수집될 수 있다는 것을 알 수 있다.
그러나, 제1 블록이 손상된 페이지를 포함하고, 제1 블록의 유효 용량이 제1 블록의 표준 용량보다 작으면; 제1 타겟 데이터의 크기가 제1 블록의 표준 용량이기 때문에 제1 타겟 데이터가 제1 블록에 완전하게(completely) 기록되지 못할 수 있다.
설명을 용이하게 하기 위해, 도 5에 도시된 예를 참조한다. 도 5는 본 발명의 일 실시예에 따른 플래시 메모리 장치에 데이터가 기록되는 시나리오의 모식도이다.
도 5에 도시된 바와 같이, 제1 타겟 데이터는 제1 블록에 기록되며, 제1 블록은 손상된 페이지를 포함한다.
단계 S103: 제1 블록이 데이터로 전부 채워지면(filled), 주 컨트롤러(220)는 제1 타겟 데이터의 데이터이지만 제1 블록에 기록되지 않은 데이터를 획득한다.
구체적으로, 단계 S103은 프로세서(218)에 의해 실행된다.
제1 타겟 데이터의 데이터이지만 제1 블록에 기록되지 않은 데이터의 크기는 제1 블록 내의 손상된 페이지의 용량이다. 제1 타겟 데이터의 크기가 제1 블록의 유효 용량보다 크기 때문에, 제1 블록이 데이터로 전부 채워지면, 제1 블록에 기록될 수 없는 데이터의 부분이 계속 존재하고, 데이터의 그 부분의 크기는 제1 블록 내의 손상된 페이지의 용량이다. 설명을 용이하게 하기 위해, 제1 블록에 기록될 수 없는 데이터의 이 부분은 이후의 단계에서 오버플로 데이터(overflow data)라 일컫는다.
도 5에 도시된 바와 같이, 제1 타겟 데이터가 제1 블록에 기록될 때, 제1 블록은 데이터로 채워진다. 도 5에서 제1 블록 내의 빗금친 영역이 제1 타겟 데이터의 데이터로서 제1 블록에 기록된 데이터이다.
단계 S104: 주 컨트롤러(220)는, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록인 제2 블록을 결정한다.
구체적으로, 단계 S104는 프로세서(218)에 의해 실행된다.
제2 블록은, 초기화(initialization) 중에 플래시 메모리 장치(22)에 의해 설정되며 특히 오버플로 데이터를 저장하는 데에 사용되는 블록일 수 있다. 또는 제2 블록은, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록을 식별하는 데에 사용되는 데이터 플래그(data flag)를 가질 수 있다. 데이터 플래그는 제2 블록의 속성일 수 있으며, 속성의 값은 숫자, 문자, 또는 문자열 등일 수 있다. 이와 같은 본 발명의 실시예는 데이터 플래그의 형식에 대해 어떠한 제한도 설정하지 않는다. 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블로을 식별하는 기능을 갖는 임의의 플래그는 위와 같은 본 발명의 실시예의 보호 범위에 속할 것이다. 이와 같이 하여, 주 컨트롤러(220)는 데이터 플래그에 따라 제2 블록을 결정할 수 있다. 데이터 플래그는, 플래시 메모리 장치(22)가 이전의 데이터 기록 요청을 처리할 때 데이터 오버 플로가 발생한 경우, 오버플로 데이터가 블록 내에 저장된 후에 블록에 추가된 플래그일 수 있다. 데이터 플래그가 부가된 후에, 해당 블록은 제2 블록으로서 역할을 하며(serve) 특히 오버플로 데이터를 저장하는 데에 사용된다. 플래시 메모리 장치(22)가 데이터 기록 작업을 처리할 때마다 데이터 오버플로가 발생할 경우, 오버플로 데이터는 제2 블록에 기록된다. 제2 블록이 데이터로 전부 채워지면, 플래시 메모리 장치(22)는 다수의 블록들 중에서 새로운 블록을 선택하여 제2 블록으로서의 역할을 하게 하여 오버플로 데이터를 계속하여 저장하게 할 수 있다는 것을 알 수 있다. 도 5에 도시된 바와 같이, 데이터(도 5에 도시된 원래의 데이터)는 이미 제2 블록에 저장되어 있다. 또한, 제2 블록은 손상된 페이지를 포함할 수도 있고, 또는 어떠한 손상된 페이지도 포함하지 않을 수도 있다.
본 실시예는 SSD 내 하나의 채널을 설명을 위한 예시로서 사용하고 있음에 유의해야 한다. SSD 내 하나의 채널에 대해, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 단 하나의 블록만이 존재한다. SSD가 다수의 채널들을 포함하면, 각 채널은 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 하나의 블록을 갖는다. 또한 이와 같은 본 발명의 실시예는 하나의 채널 상의 다수의 병행 유닛들(concurrent units)에 대한 다수의 I/O 요청들의 병행 처리도 실현할 수 있다. 이 경우, 각각의 병행 유닛은 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 단 하나의 블록만을 갖는다.
단계 S105: 주 컨트롤러(220)가, 제1 타겟 데이터의 데이터이지만 제1 블록에 기록되지 않은 데이터를 제2 블록에 기록한다.
구체적으로, 단계 S105는 프로세서(218)에 의해 실행된다.
도 5에 도시된 바와 같이, 제1 타겟 데이터의 남아 있는(remaining) 데이터는 제2 블록에 기록된다.
위와 같은 본 발명의 실시예에 따라, 주 컨트롤러(220)는 제1 타겟 데이터를 수신하고, 다수의 블록들 중 제1 블록을 선택한다. 제1 블록의 유효 용량이 제1 타겟 데이터의 크기보다 작기 때문에, 제1 블록은 제1 타겟 데이터 전체를 저장할 만큼의 충분한 용량을 가지고 있지 않다. 제1 블록이 데이터로 전부 채워지면, 주 컨트롤러(220)는, 제1 타겟 데이터의 데이터이지만 제1 블록에 기록되지 않은 데이터를 획득하며, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록인 제2 블록에 해당 데이터를 기록한다. 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록에 제1 타겟 데이터의 오버플로가 기록되며, 이로써 오버플로 데이터를 저장하기 위해 새로운 빈 블록을 발견하지 않아도 되기 때문에, 블록 활용도가 향상된다.
본 발명의 실시예들의 기술적 효과를 더 설명하기 위해, 전술한 실시예에서 단계 S101 이전에, 주 컨트롤러(220)는 컨트롤러(11)에 의해 전송되는 제2 타겟 데이터를 더 수신할 수 있으며, 이 때 제2 타겟 데이터의 크기는 블록의 표준 용량과 동일한 크기와 같다. 주 컨트롤러(22)는 제2 타겟 데이터를 다수의 블록들 중 제3 블록에 기록하며; 제1 블록과 유사한 제3 블록은 빈 블록으로서 손상된 페이지를 포함한다. 따라서 제3 블록의 유효 용량은 제2 타겟 데이터의 크기보다 작다. 제3 블록이 데이터로 전부 채워지면, 주 컨트롤러(220)는, 제2 타겟 데이터의 데이터이지만 제3 데이터에 기록되지 않은 데이터를 획득하며, 제2 타겟 데이터의 데이터이지만 제3 데이터에 기록되지 않은 데이터를 제2 블록에 기록한다. 또한, 제2 타겟 데이터의 데이터이지만 제3 데이터에 기록되지 않은 데이터를 제2 블록에 기록한 후에, 주 컨트롤러(220)는 데이터 플래그를 제2 블록에 추가하며, 이 때 데이터 플래그는 제2 블록이 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록임을 식별하는 데에 사용된다. 따라서, 주 컨트롤러(220)가 이후에 다른 타겟 데이터를 수신할 때, 다른 타겟 데이터가 빈 블록에 기록되지 않고 오버플로가 발생하면, 오버플로 데이터가 제2 블록에 기록될 수 있으며, 이로써 SSD 내의 블록 활용도가 최대한으로 향상된다.
또한, 도 4에 도시된 실시예에서는, 바람직한 실현 방식으로서, 단계 S104가 단계 S101 내지 단계 S103의 이후에 수행될 수 있다. 즉, 이러한 실현 방식에서는, 주 컨트롤러(220)가 먼저 제1 타겟 데이터를 제1 블록(손상된 페이지를 포함하는 빈 블록)에 기록해야 하며, 제1 타겟 데이터의 데이터이지만 제1 블록에 기록되지 않은 데이터를 획득한 후에, 주 컨트롤러(220)는 제2 블록(데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록)을 결정한다. 이러한 실현 방식에 의하면, 연속적인 LBA들의 세그먼트애 대응되는 데이터가 하나의 블록에 최대한으로 저장된다는 점이 보장될 수 있다는 이점이 있다.
상술한 실현 방식의 기술적 해결책을 설명하고자 비교 설명을 위해 도 6을 이용한다. 도 6은 일 실시예에 따라 플래시 메모리 장치(22)에 데이터가 기록된 다른 시나리오의 모식도이다. 도 6의 도시를 살펴보면 아래와 같다.
제1 타겟 데이터를 수신하면, 플래시 메모리 장치(22)는 먼저 제2 블록을 결정하고, 제1 타겟 데이터를 제2 블록에 기록한다. 데이터(도 6에 원래 데이터로서 나타냄)가 이미 제2 블록 내에 저장되어 있기 때문에, 제2 블록에 기록될 때, 제1 타겟 데이터는 제2 블록이 데이터로 채워지기 전까지 원래 데이터에 따라 기록될 수 있다. 데이터가 이미 제2 블록 내에 저장되어 있고 제2 블록이 손상된 페이지를 포함할 수 있기 때문에, 제1 타겟 데이터는 제2 블록에 완전하게 기록되지 못한다. 제2 블록이 데이터로 전부 채워지면, 제1 타겟 데이터의 데이터이지만 제2 블록에 기록되지 않은 데이터가 획득될 수 있으며, 여기서 제1 타겟 데이터의 데이터이지만 제2 블록에 기록되지 않은 데이터의 크기는 제2 블록 내의 원래 데이터의 크기와 제2 블록 내에 포함된 손상된 페이지의 용량의 합이다. 그 후에 다수의 블록으로부터 빈 블록(위와 같은 본 발명의 실시예에서의 제1 블록)이 선택될 수 있으며, 제1 타겟 데이터의 데이터이지만 제2 블록에 기록되지 않은 데이터는 제1 블록에 기록된다.
제1 타겟 데이터가 제1 블록과 제2 블록 내에 저장된다는 것은 상술한 도 6의 설명으로부터 알 수 있다. 그러나 도 6에 도시된 실현 방식에서는, 제1 블록 내에 저장된 데이터와 제2 블록 내에 저장된 데이터가 모두 도 5에서의 제1 블록 내에 저장된 데이터보다 작다는 점에서, 도 5에 도시된 실현 방식과는 차이가 있다.
또한 전술한 바에 따르면, SSD가 타겟 데이터를 블록에 기록한 후에, 타겟 데이터가 기록된 블록 내 다수의 페이지들의 주소들은 실제로 타겟 데이터를 저장하기 위한 주소들로서 물리적 주소들로서도 나타내어질 수 있다는 점을 알 수 있다. 타겟 데이터가 하나의 블록 내에 최대한으로 저장되는 경우, 타겟 데이터의 물리적 주소들이 연속되는(consecutive) 정도는 가장 높고; 가비지 콜렉션이 블록 상에서 수행되면, 생성된 프래그먼트(fragment)의 개수는 가장 작다.
이하에서는 본 발명의 일 실시예에 따른 플래시 메모리 장치에 데이터를 기록하는 다른 방법의 절차를 소개한다. 이 방법은 도 2 및 도 3에 도시된 플래시 메모리 장치들에서 실현될 수 있다. 도 7에 도시된 바와 같이 이 방법은 이하의 단계들을 포함한다.
단계 S201: 단계 S201은 도 4에 도시된 실시예의 단계 S101과 동일하며, 단계 S101의 설명을 참조하면 된다.
단계 S202: 다수의 블록들 중 제1 블록의 유효 용량이 제1 타겟 데이터의 크기보다 작을 경우, 주 컨트롤러(220)는 제1 타겟 데이터를 제1 타겟 데이터의 제1 파트와 제1 타겟 데이터의 제2 파트로 분할하며, 여기서 제1 타겟 데이터의 제1 파트의 크기는 제1 블록의 유효 용랑이고, 제1 타겟 데이터의 제2 파트의 크기는 제1 타겟 데이터의 크기에서 제1 타겟 데이터의 제1 파트의 크기를 뺀 것이다.
제1 타겟 데이터를 수신할 때, 주 컨트롤러(220)는 다수의 블록들 중에서 제1 블록을 선택하여 제1 타겟 데이터를 저장하게 할 수 있으며, 이 때 제1 블록은 빈 블록이다. 다만, 제1 블록은 손상된 페이지를 포함한 블록일 수 있다. 제1 블록이 손상된 페이지를 포함하는 경우, 제1 타겟 데이터의 크기는 블록의 표준 용량과 동일하기 때문에, 제1 블록의 유효 용량은 제1 타겟 데이터의 크기보다 작다.
구체적으로, SSD에 포함된 다수의 블록들에 대해, 프로세서(218)는 통계 자료를 수집하고 FTL을 이용하여 각 블록 내의 손상된 페이지에 대한 정보를 기록할 수 있으며, 이 때 손상된 페이지에 관한 정보는, 블록이 손상된 페이지를 포함하는지 여부에 관한 정보, 및 포함된 손상된 페이지들의 개수 또는 용량에 관한 정보 등을 나타낸다.
선택적으로, 프로세서(218)는, FTL의 구성 정보 내에, 통계 자료 수집을 통해 획득된 각 블록 내의 손상된 페이지에 대한 정보를 저장할 수 있다. 컨트롤러(11)에 의해 전송된 제1 타겟 데이터가 수신되면, 프로세서(218)는 FTL 내에 저장된 손상된 페이지에 대한 정보에 따라 빈 블록을 선택한다. 빈 블록을 선택할 때, 프로세서(218)는, FTL 내에 저장된 손상된 페이지에 대한 정보에 따라, 손상된 페이지를 포함하지 않는 빈 블록을 우선적으로(preferentially) 선택할 수 있다는 것에 유의해야 한다. 이 경우 프로세서(218)는, 수신된 제1 타겟 데이터를 손상된 페이지를 포함하지 않는 빈 블록에 직접 기록할 수 있다.
다만, 위와 같은 본 발명의 실시예에서 논의되는 주요점은 프로세서(218)가 손상된 페이지를 포함하는 빈 블록을 선택하는 경우에 있다. 이는 손상된 페이지들을 포함하지 않는 빈 블록들이 모두 소진되었기 때문이거나, 또는 프로세서(218)가 손상된 페이지를 포함하는 빈 블록을 랜덤하게 선택하기 때문이거나, 또는 다른 이유가 될 수도 있다. 세부 사항은 본 발명의 실시예에서 논하지 않는다.
또한 위와 같은 본 발명의 실시예에서, 프로세서(218)는 덜 손상된 페이지들을 갖는 빈 블록을 우선적으로 선택할 수 있다.
제1 블록의 유효 용량이 제1 타겟 데이터의 크기보다 작으면, 프로세서(218)는 제1 블록 내의 손상된 페이지에 대한 정보에 따라 제1 타겟 데이터를 제1 파트와 제2 파트로 분할할 수 있다.
손상된 페이지에 대한 정보가 제1 블록 내에 포함된 손상된 페이지들의 개수인 경우, 제1 블록 내에 포함된 손상된 페이지들의 용량은 손상된 페이지들의 개수에 손상된 페이지 각각의 크기를 곱한 것이며; 제1 블록의 유효 용량은 제1 블록의 표준 용량에서 손상된 페이지들의 용량을 뺀 것이고, 이에 의해 제1 파트의 크기가 획득된다. 또한, 손상된 페이지에 대한 정보는, 제1 블록 내에 포함된 손상된 페이지들의 용량, 제1 블록의 유효 용량, 또는 제1 블록의 유효 용량을 획득하는 데에 이용될 수 있는 다른 정보일 수 있다.
또한, 제1 타겟 데이터가 컨트롤러(11)에 의해 주 컨트롤러(220)로 전송되는 데이터 기록 요청 내에 운반될 경우, 제1 타겟 데이터를 제1 파트와 제2 파트로 분할하는 단계는 구체적으로, 데이터 기록 요청을 두 개의 데이터 기록 요청들로 분할하는 것일 수 있으며, 이 때 분할 이후에 획득되는 하나의 데이터 기록 요청은 제1 파트를 운반하고, 다른 데이터 기록 요청은 제2 파트를 운반한다. 제1 타겟 데이터가 컨트롤러(11)에 의해 주 컨트롤러(220)로 전송되는 다수의 데이터 기록 요청들 내에 운반되면, 제1 타겟 데이터를 제1 파트와 제2 파트로 분할하는 단계는 구체적으로, 다수의 데이터 기록 요청들을 데이터 기록 요청들의 두 파트로 분할하는 것일 수 있으며, 이 때 데이터 기록 요청들의 제1 파트 내에 운반되는 데이터가 제1 파트이고, 데이터 기록 요청들의 제2 파트 내에 운반되는 데이터가 제2 파트이다.
단계 S203: 주 컨트롤러(220)가 다수의 블록들 중 제2 블록을 결정하며, 제2 블록은 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록이다.
구체적으로 단계 S203은 프로세서(218)에 의해 실행된다.
제2 블록은 초기화 도중에 플래시 메모리 장치(22)에 의해 설정되고 특히 오버플로 데이터를 저장하는 데에 사용되는 블록일 수 있다. 또는 제2 블록은 데이터 플래그를 가질 수 있으며, 데이터 플래그는 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록을 식별하는 데에 사용될 수 있다. 이와 같이 하여, 주 컨트롤러(220)는 데이터 플래그에 따라 제2 블록을 결정할 수 있다. 데이터 플래그는, 플래시 메모리 장치(22)가 이전의 데이터 기록 요청을 처리할 때에 데이터 오버플로가 발생한 경우에 오버플로 데이터가 블록 내에 저장된 이후에 블록에 추가된 플래그일 수 있다. 데이터 플래그가 추가된 후에, 블록은 제2 블록으로서 역할을 하며 특히 오버플로 데이터를 저장하는 데에 사용된다. 플래시 메모리 장치(22)가 데이터 기록 작업을 실행할 때마다, 데이터 오버플로가 발생하는 경우, 오버플로 데이터는 제2 블록에 기록된다. 제2 블록이 데이터로 전부 채워지면, 플래시 메모리 장치(22)가 다수의 블록들로부터 새로운 블록을 선택하여 제2 블록으로서 역할을 하게 함으로써 오버플로 데이터를 계속해서 저장하도록 할 수 있다는 것을 알 수 있다.
위와 같은 실시예는 설명을 위해 SSD 내의 한 채널을 예시로서 이용하였다는 점에 유의해야 한다. SSD 내의 한 채널에 대해서는, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 단 하나의 블록만이 존재한다. SSD가 다수의 채널들을 가지는 경우, 각 채널은 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 하나의 블록을 갖는다.
단계 S204: 주 컨트롤러(220)는 제1 타겟 데이터의 제1 파트를 제1 블록에 기록하고, 제1 타겟 데이터의 제2 파트를 제2 블록에 기록한다.
선택적으로, 프로세서(218)는 데이터의 두 파트를 두 개의 블록에 동시에(concurrently) 기록하거나, 또는 제1 파트를 제1 블록에 기록한 후에 제2 파트를 제2 블록에 기록하거나, 또는 먼저 제2 파트를 제2 블록에 기록한 후에 제1 파트를 제1 블록에 기록할 수 있으며, 이에 제한되지 않는다.
도 7에 도시된 실시예에서는, 주 컨트롤러(220)가 제1 타겟 데이터를 제1 블록과 제2 블록에 기록하기 전에, 제1 타겟 데이터가 제1 파트와 제2 파트로 분할되어야 하고, 제1 파트의 크기는 제1 블록의 유효 용량과 같고, 제2 파트의 크기는 제1 블록 내의 손상된 페이지들의 용량과 같다는 점에서, 도 4에 도시된 실시예와는 차이가 있다. 분할이 완료된 후에, 주 컨트롤러(220)는 데이터의 두 파트를 두 개의 블록에 기록한다. 제1 타겟 데이터의 오버플로가, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록에 기록되기 때문에, 이러한 실현 방식에서는 블록 활용성이 향상된다.
마찬가지로, 도 4에 도시된 실시예와 유사하게, 단계 S201 이전에, 주 컨트롤러(220)는 컨트롤러(11)에 의해 전송되는 제2 타겟 데이터를 더 수신할 수 있으며, 이 때 제2 타겟 데이터의 크기는 블록의 표준 용량과 같다. 다수의 블록들 중 제3 블록이 손상된 페이지를 포함하는 빈 블록인 경우, 제3 블록의 유효 용량은 제2 타겟 데이터의 크기보다 작다. 주 컨트롤러(220)는 제2 타겟 데이터를 제1 파트와 제2 파트로 분할할 수 있으며, 이 때 제1 파트의 크기는 제3 블록의 유효 용량과 같고, 제2 파트의 크기는 제2 타겟 데이터의 크기에서 제1 파트의 크기를 뺀 것과 같다. 또한, 주 컨트롤러(220)는, 다수의 블록들로부터, 제2 파트를 저장하는 데에 사용되는 블록을 더 선택해야 하며, 선택된 블록에 제2 ㅍ하트를 기록한 후에, 주 컨트롤러(220)는 데이터 플래그를 블록에 추가할 수 있고, 여기서 데이터 플래그는 블록이 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록임을 식별하는 데에 사용된다. 여기서의 블록은 상술한 제2 블록이다. 따라서, 주 컨트롤러(220)가 이후에 다른 타겟 데이터를 수신하는 경우, 다른 타겟 데이터가 빈 블록에 기록될 때 오버플로가 발생하면, 오버플로 데이터는 제2 블록에 기록될 수 있으며, 이에 따라 SSD 내의 블록의 활용성이 최대한으로 향상된다. 또한, 이러한 실시예에서 제2 블록이 데이터로 전부 채워지면, 새로운 블록이 제2 블록으로서 선택되어 타겟 데이터의 오버플로를 저장하는 데에 이용될 수 있다는 점에 유의해야 한다.
통상의 기술자는 본 발명의 각 양상 또는 각 양상의 구현 가능 방식이 구체적으로 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다는 것을 이해할 수 있다. 따라서, 본 발명의 각 양상 또는 각 양상의 구현 가능 방식은 하드웨어 전용 실시예, 소프트웨어 전용 실시예(펌웨어 및 레지던트(resident) 소프트웨어 등을 포함), 또는 소프트웨어 및 하드웨어가 결합된 실시예의 형태를 이용할 수 있으며, 여기에서는 획일적으로 ‘회로(circuit)’, ‘모듈(module)’, 또는 ‘시스템’이라 일컬어진다. 또한 본 발명의 각 양상 또는 각 양상의 구현 가능 방식은 컴퓨터 프로그램 제품의 형태를 취할 수 있으며, 컴퓨터 프로그램 제품이란 컴퓨터로 판독 가능한 매체에 저장된 컴퓨터로 판독 가능한 프로그램 코드를 말한다.
컴퓨터로 판독 가능한 매체는 컴퓨터로 판독 가능한 시그널 매체 또는 컴퓨터로 판독 가능한 저장 매체일 수 있다. 컴퓨터로 판독 가능한 저장 매체는, RAM(random access memory), ROM(read-only memory), EPROM(erasable programmable read only memory) 또는 플래시 메모리, 광섬유, 및 CD-ROM(compact disc read only memory) 등의, 전자, 자기, 광, 전자기, 적외선, 또는 반도체 시스템, 디바이스, 또는 장치, 또는 이들의 임의의 적절한 조합을 포함할 수 있으나 이에 제한되지는 않는다.
컴퓨터 내의 프로세서는 컴퓨터로 판독 가능한 매체 내에 저장된 컴퓨터로 판독 가능한 프로그램 코드를 판독하며, 이로써 프로세서는 플로차트의 각 단계 또는 단계들의 조합으로 특정되는 기능 및 동작(action)을 수행할 수 있고; 장치는 블록도의 각 블록 또는 블록들의 조합으로 특정되는 기능 또는 동작을 수행하도록 만들어질 수 있다.
모든 컴퓨터로 판독 가능한 프로그램 코드는 사용자의 컴퓨터 또는 사용자 컴퓨터 상에서 실행될 수도 있고, 또는 일부는 독립형 소프트웨어 패키지(standalone software package)로서 실행될 수도 있고, 또는 일부가 원격의 컴퓨터 상에서 실행되는 동안 일부는 사용자의 컴퓨터 상에서 실행될 수도 있고, 또는 모든 코드는 원격의 컴퓨터 또는 서버 상에서 실행될 수 있다. 일부 대체 실현의 해결책에서, 흐름도들의 각 단계 또는 블록도들의 각 블록에 특정된 기능들은 설명된 순서대로 일어나지 않을 수 있다. 예컨대, 포함된 기능에 의존적인 설명된 두 개의 연속된 단계 또는 두 개의 블록은 실제로 동시에 실행될 수도 있으며, 또는 이 블록들은 어떠한 경우에는 역순으로 실행될 수도 있다.
통상의 기술자는 본 명세서에 개시된 실시예들에서 설명된 예시들의 조합에서, 유닛들과 알고리즘 단계들이 전자 하드웨어 또는 컴퓨터 소프트웨어와 전자 하드웨어의 조합에 의해 실현될 수 있음을 인식할 수 있다. 기능들이 하드웨어에 의해 수행되는지 또는 소프트웨어에 의해 수행되는지 여부는 기술적 해결책의 특정 적용 및 설계 제약 조건에 달려있다. 통상의 기술자는 각각의 특정한 적용에 대해 설명된 기능들을 실현하기 위해 상이한 방법을 이용할 수 있으나, 그러한 실현이 본 발명의 범위를 벗어나는 것으로 간주되어서는 안된다.
전술한 내용은 본 발명의 특정 실현 방식들일 뿐이며, 본 발명의 보호 범위를 제한하도록 의도되지 않았다. 본 발명에 개시된 기술적 범위 내에 속하는 통상의 기술자에 의해 용이하게 도출되는 임의의 변경 또는 대체는 본 발명의 보호 범위 내에 속한다. 따라서 본 발명의 보호 범위는 청구항들의 보호 범위 내에 속한다.

Claims (18)

  1. 플래시 메모리 장치에 있어서,
    상기 플래시 메모리 장치는 주 컨트롤러(primary controller) 및 플래시칩(flash chip)을 포함하며, 상기 플래시칩은 복수 개의 블록을 포함하고, 상기 복수 개의 블록 각각은 복수 개의 페이지를 포함하고;
    상기 주 컨트롤러는,
    블록의 표준 용량과 동일한 사이즈를 갖는 제1 타겟 데이터를 수신하고;
    상기 복수 개의 블록 중 제1 블록의 유효 용량(effective capacity)이 상기 제1 타겟 데이터의 크기보다 작으면, 제1 타겟 데이터를 제1 타겟 데이터의 제1 파트(part)와 제1 타겟 데이터의 제2 파트로 분할하고;
    상기 복수 개의 블록 중에서, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 제2 블록을 결정하고;
    상기 제1 타겟 데이터의 제1 파트를 상기 제1 블록에 기록하고; 그리고
    상기 제1 타겟 데이터의 제2 파트를 상기 제2 블록에 기록하도록 구성되며,
    상기 제1 타겟 데이터의 제1 파트의 크기는 상기 제1 블록의 유효 용량이고, 상기 제1 타겟 데이터의 제2 파트의 크기는 상기 제1 타겟 데이터의 크기에서 상기 제1 타겟 데이터의 제1 파트의 크기를 뺀 것이며, 상기 제1 블록의 적어도 하나의 페이지가 손상되고, 상기 제1 블록의 유효 용량(effective capacity)이 상기 제1 블록의 상기 손상된 적어도 하나의 페이지를 제외한 상기 표준 용량과 동일한,
    플래시 메모리 장치.
  2. 제1항에 있어서,
    상기 제2 블록은 미리 설정된 블록인, 플래시 메모리 장치.
  3. 제1항에 있어서,
    상기 제2 블록은 데이터 플래그(data flag)를 가지며, 상기 데이터 플래그는, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록을 식별하는 데에 사용되고; 그리고
    상기 주 컨트롤러는 구체적으로, 상기 데이터 플래그에 따라 상기 복수 개의 블록 중에서 상기 제2 블록을 결정하도록 구성된,
    플래시 메모리 장치.
  4. 제3항에 있어서,
    상기 주 컨트롤러는,
    제2 타겟 데이터를 수신하고;
    상기 복수 개의 블록 중 제3 블록의 유효 용량이 상기 제2 타겟 데이터의 크기보다 작으면, 상기 제2 타겟 데이터를 상기 제2 타겟 데이터의 제1 파트와 상기 제2 타겟 데이터의 제2 파트로 분할하고;
    상기 제2 타겟 데이터의 제1 파트를 상기 제3 블록에 기록하고, 상기 제2 타겟 데이터의 제2 파트를 상기 제2 블록에 기록하며; 그리고
    상기 데이터 플래그를 상기 제2 블록에 추가하도록 더 구성되며,
    상기 제2 타겟 데이터의 제1 파트의 크기는 상기 제3 블록의 유효 용량이고, 상기 제2 타겟 데이터의 제2 파트의 크기는 상기 제2 타겟 데이터의 크기에서 상기 제2 타겟 데이터의 제1 파트의 크기를 뺀 것인,
    플래시 메모리 장치.
  5. 플래시 메모리 장치에 있어서,
    상기 플래시 메모리 장치는 주 컨트롤러 및 플래시칩을 포함하고, 상기 플래시칩은 복수 개의 블록을 포함하며, 상기 복수 개의 블록 각각은 복수 개의 페이지를 포함하고; 그리고
    상기 주 컨트롤러는,
    블록의 표준 용량과 동일한 사이즈를 갖는 제1 타겟 데이터를 수신하고, 상기 제1 타겟 데이터를 상기 복수 개의 블록 중 제1 블록에 기록하며;
    상기 제1 블록이 데이터로 전부 채워지면, 상기 제1 타겟 데이터의 데이터이지만 상기 제1 블록에 기록되지 않은 데이터를 획득하고;
    상기 복수 개의 블록 중에서, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록인 제2 블록을 결정하고; 그리고
    상기 제1 타겟 데이터의 데이터이지만 상기 제1 블록에 기록되지 않은 데이터를 상기 제2 블록에 기록하도록 구성되며,
    상기 제1 블록의 적어도 하나의 페이지가 손상되고, 상기 제1 블록의 유효 용량이 상기 제1 블록의 상기 손상된 적어도 하나의 페이지를 제외한 상기 표준 용량과 동일하고, 상기 제1 블록의 유효 용량은 상기 제1 타겟 데이터의 크기보다 작은,
    플래시 메모리 장치.
  6. 제5항에 있어서,
    상기 제2 블록은 미리 설정된 블록인, 플래시 메모리 장치.
  7. 제5항에 있어서,
    상기 제2 블록은 데이터 플래그를 가지며, 상기 데이터 플래그는, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록을 식별하는 데에 사용되고; 그리고
    상기 주 컨트롤러는 구체적으로, 상기 데이터 플래그에 따라 상기 복수 개의 블록 중에서 상기 제2 블록을 결정하도록 구성된,
    플래시 메모리 장치.
  8. 제7항에 있어서,
    상기 주 컨트롤러는,
    제2 타겟 데이터를 수신하고, 상기 제2 타겟 데이터를 상기 복수 개의 블록 중 제3 블록에 기록하며;
    상기 제3 블록이 데이터로 전부 채워지면, 상기 제2 타겟 데이터의 데이터이지만 상기 제3 블록에 기록되지 않은 데이터를 획득하고;
    상기 제2 타겟 데이터의 데이터이지만 상기 제3 블록에 기록되지 않은 데이터를 상기 제2 블록에 기록하고; 그리고
    상기 데이터 플래그를 상기 제2 블록에 추가하도록 더 구성되며,
    상기 제3 블록의 유효 용량은 상기 제2 타겟 데이터의 크기보다 작은,
    플래시 메모리 장치.
  9. 플래시 메모리 장치에 데이터를 기록하는 방법에 있어서,
    상기 플래시 메모리 장치는 주 컨트롤러 및 플래시칩을 포함하고, 상기 플래시칩은 복수 개의 블록을 포함하며, 상기 복수 개의 블록 각각은 복수 개의 페이지를 포함하고;
    상기 플래시 메모리 장치에 데이터를 기록하는 방법은,
    상기 주 컨트롤러가, 블록의 표준 용량과 동일한 사이즈를 갖는 제1 타겟 데이터를 수신하는 단계;
    상기 복수 개의 블록 중 제1 블록의 유효 용량이 상기 제1 타겟 데이터의 크기보다 작으면, 제1 타겟 데이터를 제1 타겟 데이터의 제1 파트와 제1 타겟 데이터의 제2 파트로 분할하는 단계;
    상기 주 컨트롤러가, 상기 복수 개의 블록 중에서, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 제2 블록을 결정하는 단계; 및
    상기 주 컨트롤러가, 상기 제1 타겟 데이터의 제1 파트를 상기 제1 블록에 기록하고, 상기 제1 타겟 데이터의 제2 파트를 상기 제2 블록에 기록하는 단계
    를 포함하고,
    상기 제1 타겟 데이터의 제1 파트의 크기는 상기 제1 블록의 유효 용량이고, 상기 제1 타겟 데이터의 제2 파트의 크기는 상기 제1 타겟 데이터의 크기에서 상기 제1 타겟 데이터의 제1 파트의 크기를 뺀 것이며, 상기 제1 블록의 적어도 하나의 페이지가 손상되고, 상기 제1 블록의 유효 용량이 상기 제1 블록의 상기 손상된 적어도 하나의 페이지를 제외한 상기 표준 용량과 동일한,
    플래시 메모리 장치에 데이터를 기록하는 방법.
  10. 제9항에 있어서,
    상기 제2 블록은 미리 설정된 블록인, 플래시 메모리 장치에 데이터를 기록하는 방법.
  11. 제9항에 있어서,
    상기 제2 블록은 데이터 플래그를 가지며, 상기 데이터 플래그는, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록을 식별하는 데에 사용되고; 그리고
    상기 주 컨트롤러가, 상기 복수 개의 블록 중에서, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 제2 블록을 결정하는 단계는:
    상기 주 컨트롤러가, 상기 데이터 플래그에 따라 상기 복수 개의 블록 중에서 상기 제2 블록을 결정하는 단계를 포함하는,
    플래시 메모리 장치에 데이터를 기록하는 방법.
  12. 제11항에 있어서,
    상기 주 컨트롤러가 제2 타겟 데이터를 수신하는 단계;
    상기 복수 개의 블록 중 제3 블록의 유효 용량이 상기 제2 타겟 데이터의 크기보다 작으면, 상기 제2 타겟 데이터를 상기 제2 타겟 데이터의 제1 파트와 상기 제2 타겟 데이터의 제2 파트로 분할하는 단계;
    상기 주 컨트롤러가, 상기 제2 타겟 데이터의 제1 파트를 상기 제3 블록에 기록하고, 상기 제2 타겟 데이터의 제2 파트를 상기 제2 블록에 기록하는 단계; 및
    상기 주 컨트롤러가 상기 데이터 플래그를 상기 제2 블록에 추가하는 단계
    를 더 포함하며,
    상기 제2 타겟 데이터의 제1 파트의 크기는 상기 제3 블록의 유효 용량이고, 상기 제2 타겟 데이터의 제2 파트의 크기는 상기 제2 타겟 데이터의 크기에서 상기 제2 타겟 데이터의 제1 파트의 크기를 뺀 것인,
    플래시 메모리 장치에 데이터를 기록하는 방법.
  13. 플래시 메모리 장치에 데이터를 기록하는 방법에 있어서,
    상기 플래시 메모리 장치는 주 컨트롤러 및 플래시칩을 포함하고, 상기 플래시칩은 복수 개의 블록을 포함하며, 상기 복수 개의 블록 각각은 복수 개의 페이지를 포함하고;
    상기 플래시 메모리 장치에 데이터를 기록하는 방법은,
    상기 주 컨트롤러가, 블록의 표준 용량과 동일한 사이즈를 갖는 제1 타겟 데이터를 수신하고 상기 제1 타겟 데이터를 상기 복수 개의 블록 중 제1 블록에 기록하는 단계;
    상기 제1 블록이 데이터로 전부 채워지면, 상기 주 컨트롤러가, 상기 제1 타겟 데이터의 데이터이지만 상기 제1 블록에 기록되지 않은 데이터를 획득하는 단계;
    상기 주 컨트롤러가, 상기 복수 개의 블록 중에서, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록인 제2 블록을 결정하는 단계; 및
    상기 주 컨트롤러가, 상기 제1 타겟 데이터의 데이터이지만 상기 제1 블록에 기록되지 않은 데이터를 상기 제2 블록에 기록하는 단계
    를 포함하고,
    상기 제1 블록의 적어도 하나의 페이지가 손상되고, 상기 제1 블록의 유효 용량이 상기 제1 블록의 상기 손상된 적어도 하나의 페이지를 제외한 상기 표준 용량과 동일하며, 상기 제1 블록의 유효 용량은 상기 제1 타겟 데이터의 크기보다 작은,
    플래시 메모리 장치에 데이터를 기록하는 방법.
  14. 제13항에 있어서,
    상기 제2 블록은 미리 설정된 블록인, 플래시 메모리 장치에 데이터를 기록하는 방법.
  15. 제13항에 있어서,
    상기 제2 블록은 데이터 플래그를 가지며, 상기 데이터 플래그는, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록을 식별하는 데에 사용되고; 그리고
    상기 주 컨트롤러가, 상기 복수 개의 블록 중에서, 데이터가 기록되었으나 데이터로 전부 채워져 있지 않은 블록인 제2 블록을 결정하는 단계는,
    상기 주 컨트롤러가, 상기 데이터 플래그에 따라 상기 복수 개의 블록 중에서 상기 제2 블록을 결정하는 단계
    를 포함하는, 플래시 메모리 장치에 데이터를 기록하는 방법.
  16. 제15항에 있어서,
    상기 주 컨트롤러가 제2 타겟 데이터를 수신하고 상기 제2 타겟 데이터를 상기 복수 개의 블록 중 제3 블록에 기록하는 단계;
    상기 제3 블록이 데이터로 전부 채워지면, 상기 주 컨트롤러가, 상기 제2 타겟 데이터의 데이터이지만 상기 제3 블록에 기록되지 않은 데이터를 획득하는 단계;
    상기 주 컨트롤러가, 상기 제2 타겟 데이터의 데이터이지만 상기 제3 블록에 기록되지 않은 데이터를 상기 제2 블록에 기록하는 단계; 및
    상기 주 컨트롤러가 상기 데이터 플래그를 상기 제2 블록에 추가하는 단계
    를 더 포함하며,
    상기 제3 블록의 유효 용량은 상기 제2 타겟 데이터의 크기보다 작은,
    플래시 메모리 장치에 데이터를 기록하는 방법.
  17. 저장 시스템에 있어서,
    상기 저장 시스템은 상기 제1항 내지 제4항 중 어느 한 항에 따른 플래시 메모리 장치와 컨트롤러를 포함하고,
    상기 컨트롤러는 제1 타겟 데이터를 상기 플래시 메모리 장치에 전송하도록 구성된, 저장 시스템.
  18. 저장 시스템에 있어서,
    상기 저장 시스템은 상기 제5항 내지 제8항 중 어느 한 항에 따른 플래시 메모리 장치와 컨트롤러를 포함하고,
    상기 컨트롤러는 제1 타겟 데이터를 상기 플래시 메모리 장치에 전송하도록 구성된, 저장 시스템.
KR1020157020619A 2014-06-27 2014-06-27 플래시 메모리 장치에 데이터를 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템 KR101730151B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/080998 WO2015196470A1 (zh) 2014-06-27 2014-06-27 一种将数据写入闪存装置的方法、闪存装置和存储系统

Publications (2)

Publication Number Publication Date
KR20160016744A KR20160016744A (ko) 2016-02-15
KR101730151B1 true KR101730151B1 (ko) 2017-04-25

Family

ID=54936527

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157020619A KR101730151B1 (ko) 2014-06-27 2014-06-27 플래시 메모리 장치에 데이터를 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템

Country Status (7)

Country Link
US (1) US10203899B2 (ko)
EP (1) EP3196767B1 (ko)
JP (1) JP6130971B2 (ko)
KR (1) KR101730151B1 (ko)
CN (1) CN105745628B (ko)
CA (1) CA2896369C (ko)
WO (1) WO2015196470A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6667629B2 (ja) 2016-12-29 2020-03-18 華為技術有限公司Huawei Technologies Co.,Ltd. 記憶システムおよびソリッドステートディスク
TWI679535B (zh) * 2017-09-22 2019-12-11 慧榮科技股份有限公司 快閃記憶體的資料內部搬移方法以及使用該方法的裝置
CN114546293A (zh) 2017-09-22 2022-05-27 慧荣科技股份有限公司 快闪存储器的数据内部搬移方法以及使用该方法的装置
CN109189337B (zh) * 2018-08-21 2021-12-17 浪潮电子信息产业股份有限公司 一种选择数据块的方法、装置、设备及可读存储介质
CN110069215B (zh) * 2019-03-27 2022-11-04 浙江宇视科技有限公司 一种基于块存储的动态调整存储单元的方法及装置
CN113296681A (zh) * 2020-02-24 2021-08-24 合肥杰发科技有限公司 存储空间的管理方法、终端及具有存储功能的装置
CN114546296B (zh) * 2022-04-25 2022-07-01 武汉麓谷科技有限公司 一种基于zns固态硬盘的全闪存系统和地址映射方法
CN116719485B (zh) * 2023-08-09 2023-11-03 苏州浪潮智能科技有限公司 基于fpga的数据读写方法及读写单元与fpga

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101271429A (zh) 2007-03-23 2008-09-24 华为技术有限公司 一种数据存储方法及装置
US20090049233A1 (en) 2007-08-15 2009-02-19 Silicon Motion, Inc. Flash Memory, and Method for Operating a Flash Memory
CN103383690A (zh) * 2012-05-04 2013-11-06 深圳市腾讯计算机系统有限公司 分布式数据存储方法及系统

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09319645A (ja) 1996-05-24 1997-12-12 Nec Corp 不揮発性半導体記憶装置
JP4856400B2 (ja) * 2005-07-06 2012-01-18 ルネサスエレクトロニクス株式会社 記憶装置及び情報処理端末
WO2008013228A1 (fr) * 2006-07-26 2008-01-31 Panasonic Corporation Contrôleur de mémoire, dispositif de stockage non-volatile, dispositif d'accès et système de stockage non-volatile
KR100849221B1 (ko) * 2006-10-19 2008-07-31 삼성전자주식회사 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
TW200837551A (en) * 2007-03-02 2008-09-16 A Data Technology Co Ltd Storage device capable of cooperating to adjust reliability, method for establishing and input data thereof
CN101464834B (zh) * 2007-12-19 2011-01-26 群联电子股份有限公司 闪存数据写入方法及使用此方法的控制器
US20090259806A1 (en) * 2008-04-15 2009-10-15 Adtron, Inc. Flash management using bad page tracking and high defect flash memory
CN101320594B (zh) 2008-05-21 2012-02-29 深圳市硅格半导体有限公司 一种闪存芯片的物理操作方法
TWI390548B (zh) 2008-07-03 2013-03-21 Silicon Motion Inc 資料儲存方法及其儲存裝置
US8438325B2 (en) * 2008-10-09 2013-05-07 Cadence Design Systems, Inc. Method and apparatus for improving small write performance in a non-volatile memory
CN101727293B (zh) 2008-10-23 2012-05-23 成都市华为赛门铁克科技有限公司 一种固态硬盘ssd存储的设置方法、装置和系统
US20100146239A1 (en) * 2008-12-08 2010-06-10 Infinite Memories Ltd. Continuous address space in non-volatile-memories (nvm) using efficient embedded management of array deficiencies
US20100235605A1 (en) * 2009-02-13 2010-09-16 Nir Perry Enhancement of storage life expectancy by bad block management
JP2011123830A (ja) * 2009-12-14 2011-06-23 Toshiba Corp データ書き込み装置及びデータ書き込み方法
TWI413897B (zh) * 2010-01-20 2013-11-01 Silicon Motion Inc 快閃記憶體之資料存取方法以及快閃記憶體裝置
JP5319723B2 (ja) * 2011-03-24 2013-10-16 株式会社東芝 メモリシステムおよびプログラム
JP2013068993A (ja) * 2011-09-20 2013-04-18 Toshiba Corp メモリコントローラ
JP5547154B2 (ja) * 2011-09-21 2014-07-09 株式会社東芝 メモリ・デバイス
CN102622306B (zh) 2012-02-21 2014-11-26 中颖电子股份有限公司 存储装置的坏块管理方法
TWI605458B (zh) 2012-04-25 2017-11-11 Sony Corp Non-volatile memory devices, non-volatile memory control devices, and non-volatile memory control methods
JP6219560B2 (ja) * 2012-09-21 2017-10-25 株式会社フィックスターズ 情報処理装置、情報処理方法、およびプログラム
CN103106125B (zh) 2013-01-04 2016-09-28 国网山东省电力公司胶州市供电公司 基于存储块修复的闪存存储方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101271429A (zh) 2007-03-23 2008-09-24 华为技术有限公司 一种数据存储方法及装置
US20090049233A1 (en) 2007-08-15 2009-02-19 Silicon Motion, Inc. Flash Memory, and Method for Operating a Flash Memory
CN103383690A (zh) * 2012-05-04 2013-11-06 深圳市腾讯计算机系统有限公司 分布式数据存储方法及系统

Also Published As

Publication number Publication date
CA2896369C (en) 2017-08-15
US10203899B2 (en) 2019-02-12
CN105745628A (zh) 2016-07-06
EP3196767A1 (en) 2017-07-26
CN105745628B (zh) 2017-09-05
WO2015196470A1 (zh) 2015-12-30
KR20160016744A (ko) 2016-02-15
CA2896369A1 (en) 2015-12-27
JP2016524770A (ja) 2016-08-18
US20160110107A1 (en) 2016-04-21
EP3196767A4 (en) 2017-08-16
JP6130971B2 (ja) 2017-05-17
EP3196767B1 (en) 2020-08-05

Similar Documents

Publication Publication Date Title
KR101730151B1 (ko) 플래시 메모리 장치에 데이터를 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템
EP2988221B1 (en) Controller, flash memory device and method for writing data into flash memory device
US10747666B2 (en) Memory system
US10114578B2 (en) Solid state disk and data moving method
US9927998B2 (en) Flash memory compression
RU2661280C2 (ru) Контроллер массива, твердотельный диск и способ для управления твердотельным диском для записи данных
CN108475230B (zh) 一种存储系统和系统垃圾回收方法
CN108733309B (zh) 存储管理方法、设备和计算机可读介质
US11449244B2 (en) Method and apparatus for performing access management of memory device in host performance booster architecture with aid of device side table information
US10387579B2 (en) Data pattern detecting device, semiconductor device including the same, and operating method thereof
US10817417B1 (en) Data storage efficiency using storage devices with variable-size internal data mapping
US11429519B2 (en) System and method for facilitating reduction of latency and mitigation of write amplification in a multi-tenancy storage drive
TW201624491A (zh) 資訊處理裝置及非暫態電腦可讀取記錄媒體
CN111026890A (zh) 基于索引表的图片数据存储方法、系统、装置和存储介质
CN108073362B (zh) 一种延长PairBlock使用寿命的方法及装置
TW202321921A (zh) 更新主機與閃存位址對照表的方法及電腦程式產品及裝置
KR102275706B1 (ko) 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법
CN110990605A (zh) 基于索引头的图片数据存储方法、系统、装置和存储介质

Legal Events

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