KR101369408B1 - 스토리지 시스템 및 이의 데이터 전송 방법 - Google Patents

스토리지 시스템 및 이의 데이터 전송 방법 Download PDF

Info

Publication number
KR101369408B1
KR101369408B1 KR1020130027846A KR20130027846A KR101369408B1 KR 101369408 B1 KR101369408 B1 KR 101369408B1 KR 1020130027846 A KR1020130027846 A KR 1020130027846A KR 20130027846 A KR20130027846 A KR 20130027846A KR 101369408 B1 KR101369408 B1 KR 101369408B1
Authority
KR
South Korea
Prior art keywords
data
spare
storage
read
write
Prior art date
Application number
KR1020130027846A
Other languages
English (en)
Inventor
한승현
Original Assignee
주식회사 디에이아이오
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 디에이아이오 filed Critical 주식회사 디에이아이오
Priority to KR1020130027846A priority Critical patent/KR101369408B1/ko
Priority to PCT/KR2013/012003 priority patent/WO2014142427A1/ko
Priority to US14/776,326 priority patent/US20160041759A1/en
Application granted granted Critical
Publication of KR101369408B1 publication Critical patent/KR101369408B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits

Abstract

스토리지 시스템은 낸드 플래시 메모리와 낸드 플래시 메모리를 제어하는 스토리지 컨트롤러를 구비하는 스토리지 장치, 및 스토리지 컨트롤러와 인터액션을 수행하는 호스트 컨트롤러 및 논리 어드레스 상에서 블록 단위로 데이터들에 대한 읽기 커맨드 또는 쓰기 커맨드를 생성하는 파일 시스템을 구비하는 호스트 장치를 포함한다. 이 때, 이 때, 데이터들에 대한 읽기 커맨드 또는 쓰기 커맨드가 생성되면, 호스트 장치와 스토리지 장치는 데이터들을 섹터 크기에 상응하는 데이터 전송 단위로 송수신하고, 쓰기 커맨드에 의해 쓰기 데이터들이 결정되면, 호스트 장치는 쓰기 데이터들과 관련된 제 1 스페어 데이터들을 모아 스토리지 장치에 먼저 전송한 후, 쓰기 데이터들을 스토리지 장치에 전송한다.

Description

스토리지 시스템 및 이의 데이터 전송 방법 {STORAGE SYSTEM AND METHOD OF TRANSMITTING DATA BETWEEN A HOST DEVICE AND A STORAGE DEVICE}
본 발명은 반도체 메모리 시스템에 관한 것으로, 보다 상세하게는 호스트 장치와 스토리지 장치(예를 들어, 낸드 플래시 메모리 장치)로 구성된 스토리지 시스템 및 이의 데이터 전송 방법에 관한 것이다.
반도체 메모리 장치는 전원이 공급되지 않는 상태에서 데이터를 보존할 수 있는지에 따라 휘발성 메모리 장치와 비휘발성 메모리 장치로 구분될 수 있다. 최근에는, 반도체 메모리 장치의 소형화 및 대용량 추세에 따라, 비휘발성 메모리 장치 중에서 낸드 플래시 메모리 장치(NAND flash memory device)가 소형화 및 대용량에 적합하여 널리 사용되고 있고, 낸드 플래시 메모리 장치 형태의 스토리지 장치(예를 들어, 솔리드 스테이트 드라이브(solid state drive; SSD) 등)가 하드 디스크 드라이브(hard disk drive; HDD)를 대체하고 있는 추세이다. 일반적으로, 스토리지 장치는 적어도 하나 이상의 낸드 플래시 메모리 및 이를 제어하기 위한 스토리지 컨트롤러를 포함한다. 구체적으로, 스토리지 컨트롤러는 파일 시스템(file system)을 지원하기 위한 플래시 변환 레이어(flash translation layer)를 이용하여 논리 어드레스(logical address)를 물리 어드레스(physical address)로 변환하는 어드레스 맵핑(address mapping) 동작을 수행하고, 낸드 플래시 메모리에 대한 읽기(read) 동작, 쓰기(write) 동작, 소거(erase) 동작, 병합(merge) 동작, 카피백(copyback) 동작, 컴팩션(compaction) 동작, 가비지 콜렉션(garbage collection) 동작, 웨어 레벨링(wear leveling) 동작 등을 제어한다.
한편, 스토리지 장치의 스토리지 컨트롤러는 호스트 장치의 호스트 컨트롤러와 인터액션(interaction)을 수행할 수 있다. 이 때, 호스트 장치에서는 읽기 동작과 쓰기 동작의 기본 단위가 블록(block) 단위(예를 들어, 1KB, 2KB, 4KB 등)인 반면, 스토리지 장치에서는 읽기 동작과 쓰기 동작의 기본 단위가 낸드 플래시 메모리의 물리 페이지의 배수로서 상기 블록 단위보다 크고(예를 들어, 16KB 이상), 호스트 장치와 스토리지 장치는 데이터들을 섹터(sector) 크기에 상응하는 데이터 전송 단위로 송수신(즉, 논리 블록 기반 인터페이스)한다. 따라서, 종래에는 파워 오프 복구(power off recovery) 동작, 트랜잭션(transaction) 동작 등을 위하여 수 내지 수십 바이트(byte)의 메타(meta) 데이터들을 기입하는 경우에도, 호스트 장치에서 별도의 블록에 대한 쓰기 동작이 요청되어야 하고, 이것은 스토리지 장치에서 별도의 물리 페이지(physical page)에 대한 쓰기 동작을 발생시키는 문제점이 있었다. 이와 같이, 종래의 스토리지 시스템은 상기 동작들을 위한 수 내지 수십 바이트의 메타 데이터들을 위하여 4KB 정도의 쓰기 동작을 수행하기 때문에 비효율적일 뿐만 아니라, 낸드 플래시 메모리의 물리적인 특성상 쓰기 동작에 따른 소거 동작에 의하여 성능 및 수명이 저하되는 문제점을 가지고 있다.
본 발명의 일 목적은 논리 블록 기반 인터페이스(logical block-based interface)를 사용함에 있어서 스토리지 장치 내에 구비된 낸드 플래시 메모리의 물리 페이지의 스페어 영역 일부를 호스트 장치로 하여금 사용하게 할 수 있는 스토리지 시스템을 제공하는 것이다.
본 발명의 다른 목적은 호스트 장치와 스토리지 장치 사이에서 읽기/쓰기 데이터들(즉, 메인 데이터들) 및 이들과 관련된 스페어 데이터들을 효율적으로 전송할 수 있는 스토리지 시스템의 데이터 전송 방법을 제공하는 것이다.
다만, 본 발명의 목적은 상기 목적들로 한정되는 것이 아니며, 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위에서 다양하게 확장될 수 있을 것이다.
본 발명의 일 목적을 달성하기 위하여, 본 발명의 실시예들에 따른 스토리지 시스템은 적어도 하나 이상의 낸드 플래시 메모리 및 상기 낸드 플래시 메모리를 제어하는 스토리지 컨트롤러를 구비하는 스토리지 장치, 및 상기 스토리지 컨트롤러와 인터액션(interaction)을 수행하는 호스트 컨트롤러 및 논리 어드레스 상에서 블록(block) 단위로 데이터들에 대한 읽기 커맨드 또는 쓰기 커맨드를 생성하는 파일 시스템을 구비하는 호스트 장치를 포함할 수 있다. 이 때, 상기 데이터들에 대한 상기 읽기 커맨드 또는 상기 쓰기 커맨드가 생성되면, 상기 호스트 장치와 상기 스토리지 장치는 상기 데이터들을 섹터(sector) 크기에 상응하는 데이터 전송 단위로 송수신하고, 상기 쓰기 커맨드에 의해 쓰기 데이터들이 결정되면, 상기 호스트 장치는 상기 쓰기 데이터들과 관련된 제 1 스페어(spare) 데이터들을 모아 상기 스토리지 장치에 먼저 전송한 후, 상기 쓰기 데이터들을 상기 스토리지 장치에 전송할 수 있다.
일 실시예에 의하면, 상기 스토리지 컨트롤러에 어드레스 맵핑 동작을 수행하는 플래시 변환 레이어(flash translation layer; FTL)가 구비될 수 있다.
일 실시예에 의하면, 상기 호스트 컨트롤러에 호스트 플래시 변환 레이어가 구비되고, 상기 스토리지 컨트롤러에 스토리지 플래시 변환 레이어가 구비되며, 상기 호스트 플래시 변환 레이어와 상기 스토리지 플래시 변환 레이어가 어드레스 맵핑 동작을 수행할 수 있다.
일 실시예에 의하면, 상기 스토리지 장치는 상기 쓰기 데이터들을 상기 낸드 플래시 메모리의 물리 페이지의 메인 영역에 기입하고, 상기 제 1 스페어 데이터들을 상기 물리 페이지의 스페어 영역 일부에 기입할 수 있다.
일 실시예에 의하면, 상기 제 1 스페어 데이터들은 상기 쓰기 데이터들과 관련하여 파워 오프 복구(power off recovery) 동작을 위한 정보를 포함할 수 있다.
일 실시예에 의하면, 상기 제 1 스페어 데이터들은 상기 쓰기 데이터들과 관련하여 트랜잭션(transaction) 동작을 위한 정보를 포함할 수 있다.
일 실시예에 의하면, 상기 읽기 커맨드는 읽기 데이터들을 독출하기 위한 메인 읽기 커맨드 및 스페어 읽기 대상 데이터들과 관련된 제 2 스페어 데이터들을 독출하기 위한 스페어 읽기 커맨드를 포함할 수 있다.
일 실시예에 의하면, 상기 메인 읽기 커맨드에 의해 상기 읽기 데이터들이 결정되면, 상기 스토리지 장치는 상기 읽기 데이터들을 상기 호스트 장치에 전송할 수 있다.
일 실시예에 의하면, 상기 스페어 읽기 커맨드에 의해 상기 스페어 읽기 대상 데이터들이 결정되면, 상기 스토리지 장치는 상기 제 2 스페어 데이터들을 상기 호스트 장치에 전송할 수 있다.
일 실시예에 의하면, 상기 읽기 커맨드에 의해 상기 읽기 데이터들과 상기 읽기 데이터들에 상응하는 상기 스페어 읽기 대상 데이터들이 결정되면, 상기 스토리지 장치는 상기 읽기 데이터들 및 상기 제 2 스페어 데이터들을 상기 호스트 장치에 전송할 수 있다.
본 발명의 다른 목적을 달성하기 위하여, 본 발명의 실시예들에 따른 스토리지 시스템의 데이터 전송 방법은, 적어도 하나 이상의 낸드 플래시 메모리와 스토리지 컨트롤러를 구비한 스토리지 장치 및 파일 시스템과 호스트 컨트롤러를 구비한 호스트 장치를 포함하는 스토리지 시스템에 있어서, 상기 호스트 장치로 하여금 쓰기 커맨드를 생성함으로써 논리 어드레스 상에서 블록(block) 단위로 쓰기 데이터들을 결정하게 하고, 상기 호스트 장치로 하여금 상기 쓰기 데이터들과 관련된 제 1 스페어(spare) 데이터들을 모아 섹터(sector) 크기에 상응하는 데이터 전송 단위로 상기 스토리지 장치에 전송하게 하며, 상기 호스트 장치로 하여금 상기 제 1 스페어 데이터들에 연속하여 상기 쓰기 데이터들을 상기 데이터 전송 단위로 상기 스토리지 장치에 전송하게 할 수 있다.
일 실시예에 의하면, 상기 데이터 전송 방법은 상기 호스트 장치로 하여금 메인 읽기 커맨드를 생성함으로써 상기 논리 어드레스 상에서 상기 블록 단위로 읽기 데이터들을 결정하게 하고, 상기 스토리지 장치로 하여금 상기 읽기 데이터들을 상기 데이터 전송 단위로 상기 호스트 장치에 전송하게 할 수 있다.
일 실시예에 의하면, 상기 데이터 전송 방법은 상기 호스트 장치로 하여금 스페어 읽기 커맨드를 생성함으로써 상기 논리 어드레스 상에서 상기 블록 단위로 스페어 읽기 대상 데이터들을 결정하게 하고, 상기 스토리지 장치로 하여금 상기 스페어 읽기 대상 데이터들과 관련된 제 2 스페어 데이터들을 상기 데이터 전송 단위로 상기 호스트 장치에 전송하게 할 수 있다.
일 실시예에 의하면, 상기 데이터 전송 방법은 상기 호스트 장치로 하여금 읽기 커맨드를 생성함으로써 상기 논리 어드레스 상에서 상기 블록 단위로 읽기 데이터들을 결정하게 하고, 상기 스토리지 장치로 하여금 상기 읽기 데이터들 및 상기 읽기 데이터들과 관련된 제 2 스페어 데이터들을 상기 데이터 전송 단위로 상기 호스트 장치에 전송하게 할 수 있다.
본 발명의 실시예들에 따른 스토리지 시스템은 논리 블록 기반 인터페이스를 사용함에 있어서, 스토리지 장치 내에 구비된 낸드 플래시 메모리의 물리 페이지의 스페어 영역 일부를 호스트 장치로 하여금 사용하게 할 수 있다. 구체적으로, 상기 스토리지 시스템에서는 호스트 장치가 적은 오버헤드(overhead)로 스토리지 장치 내의 스페어 데이터들에 액세스(access)할 수 있기 때문에, 상기 스페어 영역 일부에 파워 오프 복구 동작 또는 트랜잭션 동작 등을 위한 수 내지 수십 바이트의 메타 데이터들이 저장되는 경우, 상기 동작들에 요구되던 종래의 불필요한 별도의 쓰기 동작이 감소되어, 상기 스토리지 시스템의 전반적인 성능과 수명이 크게 향상될 수 있다.
본 발명의 실시예들에 따른 스토리지 시스템의 데이터 전송 방법은 호스트 장치와 스토리지 장치 사이에서 읽기/쓰기 데이터들(즉, 메인 데이터들) 및 이들과 관련된 스페어 데이터들을 효율적으로 전송할 수 있다.
다만, 본 발명의 효과는 상기 효과들로 한정되는 것이 아니며, 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위에서 다양하게 확장될 수 있을 것이다.
도 1a 및 도 1b는 본 발명의 실시예들에 따른 스토리지 시스템을 나타내는 블록도들이다.
도 2a는 도 1a 및 도 1b의 스토리지 시스템에서 호스트 장치가 스토리지 장치에 전송할 쓰기 데이터들 및 그와 관련된 스페어 데이터들을 나타내는 도면이다.
도 2b는 도 1a 및 도 1b의 스토리지 시스템에서 호스트 장치가 스토리지 장치에 쓰기 데이터들 및 그와 관련된 스페어 데이터들을 전송하는 방식을 나타내는 도면이다.
도 2c는 도 1a 및 도 1b의 스토리지 시스템에서 스토리지 장치가 쓰기 데이터들 및 그와 관련된 스페어 데이터들을 기입하는 낸드 플래시 메모리의 물리 페이지를 나타내는 도면이다.
도 3은 도 1a 및 도 1b의 스토리지 시스템이 쓰기 데이터들 및 그와 관련된 스페어 데이터들에 대한 쓰기 동작을 수행하는 일 예를 나타내는 순서도이다.
도 4는 도 1a 및 도 1b의 스토리지 시스템이 쓰기 데이터들 및 그와 관련된 스페어 데이터들에 대한 쓰기 동작을 수행하는 일 예를 나타내는 도면이다.
도 5는 도 1a 및 도 1b의 스토리지 시스템이 읽기 데이터들에 대한 읽기 동작을 수행하는 일 예를 나타내는 순서도이다.
도 6은 도 1a 및 도 1b의 스토리지 시스템이 읽기 데이터들에 대한 읽기 동작을 수행하는 일 예를 나타내는 도면이다.
도 7은 도 1a 및 도 1b의 스토리지 시스템이 스페어 데이터들에 대한 읽기 동작을 수행하는 일 예를 나타내는 순서도이다.
도 8은 도 1a 및 도 1b의 스토리지 시스템이 스페어 데이터들에 대한 읽기 동작을 수행하는 일 예를 나타내는 도면이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1a 및 도 1b는 본 발명의 실시예들에 따른 스토리지 시스템을 나타내는 블록도들이고, 도 2a는 도 1a 및 도 1b의 스토리지 시스템에서 호스트 장치가 스토리지 장치에 전송할 쓰기 데이터들 및 그와 관련된 스페어 데이터들을 나타내는 도면이며, 도 2b는 도 1a 및 도 1b의 스토리지 시스템에서 호스트 장치가 스토리지 장치에 쓰기 데이터들 및 그와 관련된 스페어 데이터들을 전송하는 방식을 나타내는 도면이고, 도 2c는 도 1a 및 도 1b의 스토리지 시스템에서 스토리지 장치가 쓰기 데이터들 및 그와 관련된 스페어 데이터들을 기입하는 낸드 플래시 메모리의 물리 페이지를 나타내는 도면이다.
도 1a 내지 도 2c를 참조하면, 스토리지 시스템(100, 200)은 스토리지 장치(120, 220) 및 호스트 장치(140, 240)를 포함할 수 있다. 이 때, 스토리지 장치(120, 220)는 낸드 플래시 메모리 장치에 상응할 수 있고, 솔리드 스테이트 드라이브(solid state drive; SSD), 시큐어 디지털 카드(secure digital card; SDCARD), 유니버셜 플래시 스토리지(universal flash storage; UFS), 임베디드 멀티미디어 카드(embedded multi media card; EMMC), CF 카드(compact flash card), 메모리 스틱(memory stick), XD 픽쳐 카드(XD picture card) 등으로 구현될 수 있다. 다만, 이것은 예시적인 것으로서, 스토리지 장치(120, 220)의 종류가 그에 한정되는 것은 아니다. 이하, 설명의 편의를 위하여 도 1a에 도시된 스토리지 시스템(100)을 중심으로 설명하기로 한다.
스토리지 장치(120)는 서로 인터액션을 수행하는 제 1 내지 제 n(단, n은 1이상의 정수) 낸드 플래시 메모리들(122-1, ..., 122-n)과 스토리지 컨트롤러(124)를 구비할 수 있다. 이 때, 스토리지 컨트롤러(124)는 제 1 내지 제 n 낸드 플래시 메모리들(122-1, ..., 122-n)을 제어할 수 있다. 일반적으로, 스토리지 장치(120)는 제 1 내지 제 n 낸드 플래시 메모리들(122-1, ..., 122-n)의 물리적인 특성상 랜덤 액세스 메모리 장치(예를 들어, 디램(DRAM) 장치 등)에 비하여 쓰기 동작, 읽기 동작 및 소거 동작을 수행함에 있어서 많은 제약을 가지고 있다. 이에, 스토리지 장치(120)는 플래시 변환 레이어를 이용(즉, 소프트웨어적으로 구현된 플래시 변환 레이어를 실행)하여 파일 시스템(142)을 지원함으로써, 읽기 동작, 쓰기 동작, 소거 동작, 병합 동작, 카피백 동작, 컴팩션 동작, 가비지 콜렉션 동작, 웨어 레벨링 동작 등을 수행할 수 있다. 이 때, 상기 동작들은 플래시 변환 레이어가 맵핑 테이블(미도시)을 이용하여 파일 시스템(142)에서 생성되는 논리 어드레스를 제 1 내지 제 n 낸드 플래시 메모리들(122-1, ..., 122-n)의 물리 어드레스로 변환하는 어드레스 맵핑 동작을 수행함으로써 이루어질 수 있다. 일 실시예에서, 도 1a에 도시된 바와 같이, 스토리지 장치(120)의 스토리지 컨트롤러(124)에 어드레스 맵핑 동작을 수행하는 플래시 변환 레이어(125)가 구비될 수 있다. 다른 실시예에서, 도 1b에 도시된 바와 같이, 호스트 장치(240)의 호스트 컨트롤러(244)에 호스트 플래시 변환 레이어(245)가 구비되고, 스토리지 장치(220)의 스토리지 컨트롤러(224)에 스토리지 플래시 변환 레이어(225)가 구비되며, 호스트 플래시 변환 레이어(245)와 스토리지 플래시 변환 레이어(225)가 어드레스 맵핑 동작을 수행할 수 있다. 한편, 스토리지 장치(120)에는 제 1 내지 제 n 낸드 플래시 메모리들(122-1, ..., 122-n) 및 스토리지 컨트롤러(124) 외에 다른 하드웨어적 또는 소프트웨어적 구성 요소들이 더 포함될 수 있음은 자명하다.
호스트 장치(140)는 파일 시스템(142)과 호스트 컨트롤러(144)를 구비할 수 있다. 이 때, 파일 시스템(142)은 논리 블록 기반 인터페이스에 기초하여 논리 어드레스 상에서 블록 단위(BLK)로 데이터들에 대한 읽기 커맨드(read command) 또는 쓰기 커맨드(write command)를 생성할 수 있다. 또한, 호스트 컨트롤러(144)는 스토리지 장치(120)의 스토리지 컨트롤러(124)와 인터액션을 수행함으로써, 스토리지 장치(120)와 호스트 장치(140) 사이의 통신을 수행할 수 있다. 이 때, 파일 시스템(142)은 확장 파일 시스템(Extended File System; Ext4), NT 파일 시스템(New Technology File System; NTFS) 등일 수 있으나, 파일 시스템(142)이 그에 한정되는 것은 아니다. 한편, 도 1b에 도시된 바와 같이, 호스트 컨트롤러(244)는 호스트 플래시 변환 레이어(245)를 포함함으로써 플래시 변환 레이어의 일부 기능을 수행할 수도 있다. 이러한 경우, 호스트 장치(240)는 파일 시스템(242)과 호스트 컨트롤러(244) 사이의 인터액션을 통해 스토리지 장치(220)의 내부 동작 정보를 보다 정확하게 파악할 수 있으므로, 스토리지 장치(220)에서 수행되는 소정의 동작들(예를 들어, 가비지 콜렉션 동작 등)을 효율적으로 지원(support)할 수 있다. 한편, 호스트 장치(140)에는 파일 시스템(142) 및 호스트 컨트롤러(144) 외에 다른 하드웨어적 또는 소프트웨어적 구성 요소들이 더 포함될 수 있음은 자명하다.
스토리지 시스템(100)은 논리 블록 기반 인터페이스에 기초하여 동작하기 때문에, 호스트 장치(140)에서는 읽기 동작과 쓰기 동작의 기본 단위가 블록 단위(BLK)인 반면, 스토리지 장치(120)에서는 읽기 동작과 쓰기 동작의 기본 단위가 제 1 내지 제 n 낸드 플래시 메모리들(122-1, ..., 122-n)의 물리 페이지(PHY-PAGE)의 배수로서 통상 상기 블록 단위(BLK)보다 크다. 호스트 장치(140)와 스토리지 장치(120)는 데이터들을 섹터 크기에 상응하는 데이터 전송 단위(SEC)로 송수신하는데, 섹터 크기는 통상 512바이트로서 통상 상기 블록 단위나 낸드 플래시 메모리의 물리 페이지의 크기보다 작다. 따라서, 종래에는 파워 오프 복구 동작, 트랜잭션 동작 등을 위하여 수 내지 수십 바이트의 메타 데이터들을 기입하는 경우에도, 호스트 장치(140)에서 별도의 블록에 대한 쓰기 동작이 요청되어야 하고, 이것은 스토리지 장치(120)에서 별도의 물리 페이지(PHY-PAGE)에 대한 쓰기 동작을 발생시켰다. 이러한 문제점을 해결하기 위하여, 본 발명의 실시예들에 따른 스토리지 시스템(100)은 호스트 장치(140)와 스토리지 장치(120)가 데이터들을 섹터 크기에 상응하는 데이터 전송 단위(SEC)로 송수신하되, 호스트 장치(140)는 쓰기 커맨드를 생성하여 쓰기 데이터들(DAT1, ..., DATm)을 결정하면, 쓰기 데이터들(DAT1, ..., DATm)과 관련된 스페어 데이터들(SP1, ..., SPm)을 모아 스토리지 장치(120)에 먼저 전송한 후, 쓰기 데이터들(DAT1, ..., DATm)을 스토리지 장치(120)에 전송할 수 있다.
도 2a는 호스트 장치(140)가 스토리지 장치(120)에 전송할 쓰기 데이터들(DAT1, ..., DATm) 및 그와 관련된 스페어 데이터들(SP1, ..., SPm)을 보여주고 있다. 도 2a에 도시된 바와 같이, 쓰기 데이터들(DAT1, ..., DATm)은 논리 어드레스 상에서 블록 단위(BLK)로 운용된다. 이 때, 쓰기 데이터들(DAT1, ..., DATm)은 메인 데이터들로 명명되고, 쓰기 데이터들(DAT1, ..., DATm)은 각각 스페어 데이터들(SP1, ..., SPm)과 관련된다. 한편, 도 2a에서는 블록 단위(BLK)가 4KB인 것으로 도시되어 있지만, 블록 단위(BLK)는 그에 한정되지 않는다. 일 실시예에서, 스페어 데이터들(SP1, ..., SPm)은 쓰기 데이터들(DAT1, ..., DATm)과 관련하여 파워 오프 복구 동작을 위한 정보를 포함할 수 있다. 예를 들어, 파워 오프 복구 동작을 위한 정보는 파일 시스템(142)에 의해 사용되는 경우에는 파일(file) 이름, 파일 내에서의 오프셋(offset) 등에 관한 정보일 수 있고, 플래시 변환 레이어의 일부 기능을 수행하는 호스트 컨트롤러(244)에 의해 사용되는 경우에는 논리 페이지 번호 등에 관한 정보일 수 있다. 다른 실시예에서, 스페어 데이터들(SP1, ..., SPm)은 쓰기 데이터들(DAT1, ..., DATm)과 관련하여 트랜잭션 동작을 위한 정보를 포함할 수 있다. 예를 들어, 트랜잭션 동작을 위한 정보는 트랜잭션의 아이디(ID), 트랜잭션의 시작/끝(start/end), 트랜잭션 내의 데이터 체크섬(data checksum) 등에 관한 정보일 수 있다. 다만, 이것은 예시적인 것으로서, 스페어 데이터들(SP1, ..., SPm)이 포함하는 정보가 그에 한정되는 것은 아니다.
도 2b는 호스트 장치(140)가 스토리지 장치(120)에 쓰기 데이터들(DAT1, ..., DATm) 및 그와 관련된 스페어 데이터들(SP1, ..., SPm)을 전송하는 방식을 보여주고 있다. 도 2b에 도시된 바와 같이, 호스트 장치(140)와 스토리지 장치(120)는 쓰기 데이터들(DAT1, ..., DATm)과 그와 관련된 스페어 데이터들(SP1, ..., SPm)을 섹터 크기(즉, 블록 크기보다 상대적으로 작음)에 상응하는 데이터 전송 단위(SEC)로 송수신한다. 이 때, 호스트 장치(140)는 쓰기 데이터들(DAT1, ..., DATm)이 결정되면, 쓰기 데이터들(DAT1, ..., DATm)과 관련된 스페어 데이터들(SP1, ..., SPm)을 모아 스토리지 장치(120)에 먼저 전송하고, 쓰기 데이터들(DAT1, ..., DATm)을 스토리지 장치(120)에 전송할 수 있다. 실시예에 따라, 패딩 바이트(padding byte)(PB) 등이 삽입될 수 있다. 도 2b에서는 스페어 데이터들(SP1, ..., SPm)의 전체 크기가 섹터 크기보다 작아 하나의 데이터 전송 단위(SEC)에 모아져 있는 것으로 도시되어 있으나, 스페어 데이터들(SP1, ..., SPm)의 전체 크기가 섹터 크기보다 큰 경우, 스페어 데이터들(SP1, ..., SPm)은 복수의 데이터 전송 단위(SEC)들에 걸쳐 모아질 수도 있다. 이러한 경우에도, 스페어 데이터들(SP1, ..., SPm)은 쓰기 데이터들(DAT1, ..., DATm)보다 먼저 전송되는 것이다. 한편, 실시예에 따라, 본 발명은 EMMC에서 지원하는 팩트 커맨드(packed command)와 연계될 수 있다. EMMC에서 지원하는 팩트 커맨드는 읽기/쓰기 커맨드들을 한 번에 묶어서 전송하는 커맨드이다. 예를 들어, 본 발명이 EMMC에서 지원하는 팩트 커맨드와 연계되는 경우, 팩트 커맨드 헤더(header)의 남는 영역에 스페어 데이터들(SP1, ..., SPm)이 실려서 전송될 수 있다. 나아가, 본 발명이 EMMC에서 지원하는 팩트 커맨드와 연계되는 경우, 팩트 커맨드의 첫 번째 쓰기 커맨드를 스페어 데이터 전송에 활용할 수도 있다.
도 2c는 스토리지 장치(120)가 쓰기 데이터들(DAT1, ..., DATm) 및 그와 관련된 스페어 데이터들(SP1, ..., SPm)을 기입하는 제 1 내지 제 n 낸드 플래시 메모리들(122-1, ..., 122-n)의 물리 페이지(PHY-PAGE)를 나타내는 도면이다. 도 2c에 도시된 바와 같이, 물리 페이지(PHY-PAGE)는 메인 영역(MAIN SPACE)과 스페어 영역(SPARE SPACE)으로 이루어져 있다. 일반적으로, 메인 영역(MAIN SPACE)에는 데이터들이 기입되고, 스페어 영역(SPARE SPACE)에는 에러 정정을 위한 에러 정정 코드(error correction code; ECC)나 플래시 변환 레이어의 부가 정보 등이 기입된다. 그러나, 본 발명의 실시예들에 따른 스토리지 시스템(100)에서는, 스토리지 장치(120)가 메인 영역(MAIN SPACE)에는 메인 데이터들 즉, 쓰기 데이터들(DAT1, ..., DATm)을 기입할 수 있고, 스페어 영역(SPARE SPACE) 일부에 쓰기 데이터들(DAT1, ..., DATm)과 관련된 스페어 데이터들(SP1, ..., SPm)을 추가적으로 기입할 수 있다. 즉, 스토리지 장치(120)는 스페어 영역(SPARE SPACE)을 에러 정정 코드, 플래시 변환 레이어의 부가 정보 등을 기입할 뿐만 아니라, 쓰기 데이터들(DAT1, ..., DATm)과 관련된 스페어 데이터들(SP1, ..., SPm)까지도 기입할 수 있다. 이후, 호스트 장치(140)는 물리 페이지(PHY-PAGE)의 메인 영역(MAIN SPACE)에 기입되어 있는 메인 데이터들(DAT1, ..., DATm)을 독출하기 위한 메인 읽기 커맨드 및 물리 페이지(PHY-PAGE)의 스페어 영역(SPARE SPACE)에 기입되어 있는 스페어 데이터들(SP1, ..., SPm)을 독출하기 위한 스페어 읽기 커맨드를 생성함으로써, 스토리지 장치(120)로부터 메인 데이터들(DAT1, ..., DATm)와 스페어 데이터들(SP1, ..., SPm)을 각각 제공받을 수 있다.
이와 같이, 스토리지 시스템(100)은 논리 블록 기반 인터페이스를 사용함에 있어서, 스토리지 장치(120) 내에 구비된 제 1 내지 제 n 낸드 플래시 메모리들(122-1, ..., 122-n)의 물리 페이지(PHY-PAGE)의 스페어 영역(SPARE SPACE) 일부를 호스트 장치(140)로 하여금 사용하게 할 수 있다. 구체적으로, 스토리지 시스템(100)에서는 호스트 장치(140)가 적은 오버헤드로 스토리지 장치(120) 내의 스페어 데이터들(SP1, ..., SPm)에 액세스할 수 있기 때문에, 스토리지 장치(120) 내에 구비된 제 1 내지 제 n 낸드 플래시 메모리들(122-1, ..., 122-n)의 물리 페이지(PHY-PAGE)의 스페어 영역(SPARE SPACE) 일부에 파워 오프 복구 동작 또는 트랜잭션 동작 등을 위한 수 내지 수십 바이트의 메타 데이터들이 저장되는 경우, 상기 동작들에 요구되던 종래의 불필요한 별도의 쓰기 동작이 감소되어, 스토리지 시스템(100)의 전반적인 성능과 수명이 크게 향상될 수 있다. 또한, 호스트 장치(140)에 구비된 파일 시스템(142)이 저널링 파일 시스템(journaling file system)에 상응하는 경우(즉, 스토리지 시스템(100)에서 저널링 동작이 수행되는 경우), 저널링 데이터의 크기가 감소되어 스토리지 시스템(100)의 전반적인 성능 및 수명이 크게 향상될 수 있다. 예를 들어, 본 발명은 Ext4 또는 SQLite의 저널링 동작에 적용될 수 있으나, 그에 한정되는 것은 아니다. 한편, 상기에서는 스페어 데이터들(SP1, ..., SPm)이 제 1 내지 제 n 낸드 플래시 메모리들(122-1, ..., 122-n)의 물리 페이지(PHY-PAGE)의 스페어 영역(SPARE SPACE)에 저장되는 것으로 설명되었으나, 실시예에 따라, 스페어 데이터들(SP1, ..., SPm)은 제 1 내지 제 n 낸드 플래시 메모리들(122-1, ..., 122-n)의 별도의 물리 페이지(PHY-PAGE)에 저장될 수도 있고, 스토리지 장치(120)에 구비되는 별도의 비휘발성 메모리(예를 들어, 피램(phase-change random access memory; PRAM), 엠램(magnetoresistive random access memory; MRAM) 등)에 저장될 수도 있다. 이하, 도 3 내지 도 8을 참조하여, 스토리지 시스템(100)에서 수행되는 쓰기 동작과 읽기 동작에 대해 자세하게 설명하기로 한다.
도 3은 도 1a 및 도 1b의 스토리지 시스템이 쓰기 데이터들 및 그와 관련된 스페어 데이터들에 대한 쓰기 동작을 수행하는 일 예를 나타내는 순서도이고, 도 4는 도 1a 및 도 1b의 스토리지 시스템이 쓰기 데이터들 및 그와 관련된 스페어 데이터들에 대한 쓰기 동작을 수행하는 일 예를 나타내는 도면이다.
도 3 및 도 4를 참조하면, 도 1a 및 도 1b의 스토리지 시스템(100, 200)이 쓰기 데이터들 및 그와 관련된 스페어 데이터들에 대한 쓰기 동작을 수행하는 것이 도시되어 있다. 구체적으로, 호스트 장치(140, 240)는 쓰기 커맨드를 생성(즉, W-CMD로 표시)함으로써 논리 어드레스 상에서 블록 단위로 쓰기 데이터들을 결정(Step S120)한 후, 쓰기 데이터들과 관련된 스페어 데이터들을 모아 섹터 크기에 상응하는 데이터 전송 단위로 스토리지 장치(120, 220)에 먼저 전송(Step S140)(즉, SP-WRITE로 표시)하고, 스페어 데이터들에 연속하여 쓰기 데이터들을 데이터 전송 단위로 스토리지 장치(120, 220)에 전송(Step S160)(즉, DAT-WRITE로 표시)할 수 있다. 도 4에 도시된 바와 같이, 스토리지 시스템(100, 200)의 데이터 전송은 스페어 데이터들을 전송하는 제 1 단계(PHASE1)과 쓰기 데이터들을 전송하는 제 2 단계(PHASE2)로 나누어 순차적으로 수행될 수 있다. 한편, 도 4에서는 호스트 장치(140, 240)가 쓰기 커맨드에 기초하여 제 1 단계(PHASE1)와 제 2 단계(PHASE2)를 순차적으로 수행하는 것으로 도시되어 있으나, 쓰기 커맨드는 쓰기 데이터들을 기입하기 위한 메인 쓰기 커맨드(예를 들어, write data command) 및 쓰기 데이터들과 관련된 스페어 데이터들을 기입하기 위한 스페어 쓰기 커맨드(예를 들어, send spare for succeeding writes command)를 포함할 수도 있다. 이 경우, 제 1 단계(PHASE1)에서는 스페어 쓰기 커맨드에 기초하여 쓰기 데이터들과 관련된 스페어 데이터들이 스토리지 장치(120, 220)에 전송될 수 있고, 제 2 단계(PHASE2)에서는 메인 쓰기 커맨드에 기초하여 쓰기 데이터들이 스토리지 장치(120, 220)에 전송될 수 있다. 한편, 쓰기 커맨드는 쓰기 데이터들의 시작 섹터 어드레스, 쓰기 데이터들의 섹터 개수 등에 관한 정보를 포함할 수 있다. 이와 같이, 도 1a 및 도 1b의 스토리지 시스템(100, 200)에서는 호스트 장치(140, 240)가 쓰기 데이터들 및 그와 관련된 스페어 데이터들을 재정렬함으로써 스토리지 장치(120, 220)에 이들을 함께 전송할 수 있다.
도 5는 도 1a 및 도 1b의 스토리지 시스템이 읽기 데이터들에 대한 읽기 동작을 수행하는 일 예를 나타내는 순서도이고, 도 6은 도 1a 및 도 1b의 스토리지 시스템이 읽기 데이터들에 대한 읽기 동작을 수행하는 일 예를 나타내는 도면이다.
도 5 및 도 6을 참조하면, 도 1a 및 도 1b의 스토리지 시스템(100, 200)이 읽기 데이터들에 대한 읽기 동작을 수행하는 것이 도시되어 있다. 상술한 바와 같이, 읽기 커맨드는 읽기 데이터들을 독출하기 위한 메인 읽기 커맨드(예를 들어, read data command) 및 스페어 읽기 대상 데이터들과 관련된 스페어 데이터들을 독출하기 위한 스페어 읽기 커맨드(예를 들어, read spare data command)를 포함할 수 있다. 그 결과, 도 1a 및 도 1b의 스토리지 시스템(100, 200)에서는 호스트 장치(140, 240)가 스토리지 장치(120, 220) 내의 읽기 데이터들과 스페어 데이터들에 개별적으로 액세스할 수 있다. 구체적으로, 도 6에 도시된 바와 같이, 호스트 장치(140, 240)가 메인 읽기 커맨드를 생성(즉, MR-CMD로 표시)함으로써 논리 어드레스 상에서 블록 단위로 읽기 데이터들을 결정(Step S220)하면, 스토리지 장치(120, 220)는 읽기 데이터들을 데이터 전송 단위로 호스트 장치(140, 240)에 전송(Step S240)(즉, DAT-READ로 표시)할 수 있다. 이 때, 메인 읽기 커맨드는 읽기 데이터들의 시작 섹터 어드레스, 읽기 데이터들의 섹터 개수 등에 관한 정보를 포함할 수 있다. 이와 같이, 도 1a 및 도 1b의 스토리지 시스템(100, 200)에서는 호스트 장치(140, 240)가 종래와 같은 방식으로 스토리지 장치(120, 220)로부터 읽기 데이터들을 전송받을 수 있다. 뿐만 아니라, 실시예에 따라, 호스트 장치(140, 240)가 읽기 커맨드를 생성함으로써 논리 어드레스 상에서 블록 단위로 읽기 데이터들을 결정하면, 스토리지 장치(120, 220)가 읽기 데이터들 및 읽기 데이터들(즉, 여기서는 읽기 데이터들이 스페어 읽기 대상 데이터들에 상응함)과 관련된 스페어 데이터들을 데이터 전송 단위로 호스트 장치(140, 240)에 전송할 수도 있다.
도 7은 도 1a 및 도 1b의 스토리지 시스템이 스페어 데이터들에 대한 읽기 동작을 수행하는 일 예를 나타내는 순서도이고, 도 8은 도 1a 및 도 1b의 스토리지 시스템이 스페어 데이터들에 대한 읽기 동작을 수행하는 일 예를 나타내는 도면이다.
도 7 및 도 8을 참조하면, 도 1a 및 도 1b의 스토리지 시스템(100, 200)이 스페어 읽기 대상 데이터들과 관련된 스페어 데이터들에 대한 읽기 동작을 수행하는 것이 도시되어 있다. 상술한 바와 같이, 읽기 커맨드는 읽기 데이터들을 독출하기 위한 메인 읽기 커맨드(예를 들어, read data command) 및 스페어 읽기 대상 데이터들과 관련된 스페어 데이터들을 독출하기 위한 스페어 읽기 커맨드(예를 들어, read spare data command)를 포함할 수 있다. 그 결과, 도 1a 및 도 1b의 스토리지 시스템(100, 200)에서는 호스트 장치(140, 240)가 스토리지 장치(120, 220) 내의 읽기 데이터들과 스페어 데이터들에 개별적으로 액세스할 수 있다. 구체적으로, 도 8에 도시된 바와 같이, 호스트 장치(140, 240)가 스페어 읽기 커맨드를 생성(즉, SR-CMD)함으로써 논리 어드레스 상에서 블록 단위로 스페어 읽기 대상 데이터들을 결정(Step S320)하면, 스토리지 장치(120, 220)가 스페어 읽기 대상 데이터들과 관련된 스페어 데이터들을 데이터 전송 단위로 호스트 장치(140, 240)에 전송(Step S340)(즉, SP-READ로 표시)할 수 있다. 이 때, 스페어 읽기 커맨드는 스페어 읽기 대상 데이터들의 시작 섹터 어드레스, 스페어 읽기 대상 데이터들의 섹터 개수 등에 관한 정보를 포함할 수 있다. 한편, 호스트 장치(140, 240)가 스토리지 장치(120, 220)로부터 전송받는 스페어 데이터들의 전체 크기는 다음 [수식 1]로 계산될 수 있다.
[수식 1]
Figure 112013022583277-pat00001
(단, RB는 호스트 장치(140, 240)가 스토리지 장치(120, 220)로부터 전송받는 스페어 데이터들의 전체 크기를 나타내고, SMD는 스페어 읽기 대상 데이터들의 전체 크기를 나타내며, SZ는 섹터 크기, 블록 크기, 페이지 크기, 또는 임의의 단위를 나타내고, SBPS는 섹터 당 스페어 데이터들의 크기, 블록 당 스페어 데이터들의 크기, 페이지 당 스페어 데이터들의 크기, 또는 임의의 단위 당 스페어 데이터들의 크기를 나타낸다.)
이와 같이, 도 1a 및 도 1b의 스토리지 시스템(100, 200)은 논리 블록 기반 인터페이스를 사용함에 있어서, 스토리지 장치(120, 220) 내에 구비된 낸드 플래시 메모리의 물리 페이지의 스페어 영역 일부를 호스트 장치(140, 240)로 하여금 사용하게 할 수 있다. 따라서, 호스트 장치(140, 240)가 스토리지 장치(120, 220) 내의 읽기 데이터들과 스페어 데이터들에 개별적으로 액세스할 수 있기 때문에, 스토리지 장치(120, 220) 내에 구비된 낸드 플래시 메모리의 물리 페이지의 스페어 영역 일부에 파워 오프 복구 동작 또는 트랜잭션 동작 등을 위한 수 내지 수십 바이트의 메타 데이터들이 저장되는 경우, 상기 동작들에 요구되던 종래의 불필요한 별도의 쓰기 동작이 감소되어, 도 1a 및 도 1b의 스토리지 시스템(100, 200)의 전반적인 성능과 수명이 크게 향상될 수 있다. 또한, 도 1a 및 도 1b의 스토리지 시스템(100, 200)에서는 호스트 장치(140, 240)와 스토리지 장치(120, 220) 사이에서 읽기/쓰기 데이터들(즉, 메인 데이터들) 및 이들과 관련된 스페어 데이터들이 효율적으로 전송될 수 있다. 이상, 본 발명의 실시예들에 따른 스토리지 시스템 및 이의 데이터 전송 방법에 대해 도면을 참조하여 설명하였지만, 상기 설명은 예시적인 것으로서 본 발명의 기술적 사상을 벗어나지 않는 범위에서 해당 기술 분야에서 통상의 지식을 가진 자에 의하여 수정 및 변경될 수 있을 것이다.
본 발명은 스토리지 장치(즉, 낸드 플래시 메모리 장치)를 구비한 스토리지 시스템에 적용될 수 있다. 따라서, 본 발명은 솔리드 스테이트 드라이브(SSD), 시큐어 디지털 카드(SDCARD), 유니버셜 플래시 스토리지(UFS), 임베디드 멀티미디어 카드(EMMC), CF 카드, 메모리 스틱, XD 픽쳐 카드 등에 적용될 수 있다.
이상에서는 본 발명의 실시예들을 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 스토리지 시스템 120: 스토리지 장치
122: 낸드 플래시 메모리 124: 스토리지 컨트롤러
125: 플래시 변환 레이어 140: 호스트 장치
142: 파일 시스템 144: 호스트 컨트롤러
200: 스토리지 시스템 220: 스토리지 장치
222: 낸드 플래시 메모리 224: 스토리지 컨트롤러
225: 스토리지 플래시 변환 레이어 240: 호스트 장치
242: 파일 시스템 244: 호스트 컨트롤러
245: 호스트 플래시 변환 레이어

Claims (14)

  1. 적어도 하나 이상의 낸드 플래시 메모리 및 상기 낸드 플래시 메모리를 제어하는 스토리지 컨트롤러를 구비하는 스토리지 장치; 및
    상기 스토리지 컨트롤러와 인터액션(interaction)을 수행하는 호스트 컨트롤러 및 논리 어드레스 상에서 블록(block) 단위로 데이터들에 대한 읽기 커맨드 또는 쓰기 커맨드를 생성하는 파일 시스템을 구비하는 호스트 장치를 포함하고,
    상기 데이터들에 대한 상기 읽기 커맨드 또는 상기 쓰기 커맨드가 생성되면, 상기 호스트 장치와 상기 스토리지 장치는 상기 데이터들을 섹터(sector) 크기에 상응하는 데이터 전송 단위로 송수신하며,
    상기 쓰기 커맨드에 의해 쓰기 데이터들이 결정되면, 상기 호스트 장치는 상기 쓰기 데이터들과 관련된 제 1 스페어(spare) 데이터들을 모아 상기 스토리지 장치에 먼저 전송한 후, 상기 쓰기 데이터들을 상기 스토리지 장치에 전송하는 것을 특징으로 하는 스토리지 시스템.
  2. 제 1 항에 있어서, 상기 스토리지 컨트롤러에 어드레스 맵핑 동작을 수행하는 플래시 변환 레이어(flash translation layer; FTL)가 구비되는 것을 특징으로 하는 스토리지 시스템.
  3. 제 1 항에 있어서, 상기 호스트 컨트롤러에 호스트 플래시 변환 레이어가 구비되고, 상기 스토리지 컨트롤러에 스토리지 플래시 변환 레이어가 구비되며, 상기 호스트 플래시 변환 레이어와 상기 스토리지 플래시 변환 레이어가 어드레스 맵핑 동작을 수행하는 것을 특징으로 하는 스토리지 시스템.
  4. 제 1 항에 있어서, 상기 스토리지 장치는 상기 쓰기 데이터들을 상기 낸드 플래시 메모리의 물리 페이지의 메인 영역에 기입하고, 상기 제 1 스페어 데이터들을 상기 물리 페이지의 스페어 영역 일부에 기입하는 것을 특징으로 하는 스토리지 시스템.
  5. 제 4 항에 있어서, 상기 제 1 스페어 데이터들은 상기 쓰기 데이터들과 관련하여 파워 오프 복구(power off recovery) 동작을 위한 정보를 포함하는 것을 특징으로 하는 스토리지 시스템.
  6. 제 4 항에 있어서, 상기 제 1 스페어 데이터들은 상기 쓰기 데이터들과 관련하여 트랜잭션(transaction) 동작을 위한 정보를 포함하는 것을 특징으로 하는 스토리지 시스템.
  7. 제 1 항에 있어서, 상기 읽기 커맨드는 읽기 데이터들을 독출하기 위한 메인 읽기 커맨드 및 스페어 읽기 대상 데이터들과 관련된 제 2 스페어 데이터들을 독출하기 위한 스페어 읽기 커맨드를 포함하는 것을 특징으로 하는 스토리지 시스템.
  8. 제 7 항에 있어서, 상기 메인 읽기 커맨드에 의해 상기 읽기 데이터들이 결정되면, 상기 스토리지 장치는 상기 읽기 데이터들을 상기 호스트 장치에 전송하는 것을 특징으로 하는 스토리지 시스템.
  9. 제 7 항에 있어서, 상기 스페어 읽기 커맨드에 의해 상기 스페어 읽기 대상 데이터들이 결정되면, 상기 스토리지 장치는 상기 제 2 스페어 데이터들을 상기 호스트 장치에 전송하는 것을 특징으로 하는 스토리지 시스템.
  10. 제 7 항에 있어서, 상기 읽기 커맨드에 의해 상기 읽기 데이터들과 상기 읽기 데이터들에 상응하는 상기 스페어 읽기 대상 데이터들이 결정되면, 상기 스토리지 장치는 상기 읽기 데이터들 및 상기 제 2 스페어 데이터들을 상기 호스트 장치에 전송하는 것을 특징으로 하는 스토리지 시스템.
  11. 적어도 하나 이상의 낸드 플래시 메모리와 스토리지 컨트롤러를 구비한 스토리지 장치 및 파일 시스템과 호스트 컨트롤러를 구비한 호스트 장치를 포함하는 스토리지 시스템의 데이터 전송 방법에 있어서,
    상기 호스트 장치가 쓰기 커맨드를 생성함으로써 논리 어드레스 상에서 블록(block) 단위로 쓰기 데이터들을 결정하는 단계;
    상기 호스트 장치가 상기 쓰기 데이터들과 관련된 제 1 스페어(spare) 데이터들을 모아 섹터(sector) 크기에 상응하는 데이터 전송 단위로 상기 스토리지 장치에 전송하는 단계; 및
    상기 호스트 장치가 상기 제 1 스페어 데이터들에 연속하여 상기 쓰기 데이터들을 상기 데이터 전송 단위로 상기 스토리지 장치에 전송하는 단계를 포함하는 것을 특징으로 하는 스토리지 시스템의 데이터 전송 방법.
  12. 제 11 항에 있어서,
    상기 호스트 장치가 메인 읽기 커맨드를 생성함으로써 상기 논리 어드레스 상에서 상기 블록 단위로 읽기 데이터들을 결정하는 단계; 및
    상기 스토리지 장치가 상기 읽기 데이터들을 상기 데이터 전송 단위로 상기 호스트 장치에 전송하는 단계를 더 포함하는 것을 특징으로 하는 스토리지 시스템의 데이터 전송 방법.
  13. 제 11 항에 있어서,
    상기 호스트 장치가 스페어 읽기 커맨드를 생성함으로써 상기 논리 어드레스 상에서 상기 블록 단위로 스페어 읽기 대상 데이터들을 결정하는 단계; 및
    상기 스토리지 장치가 상기 스페어 읽기 대상 데이터들과 관련된 제 2 스페어 데이터들을 상기 데이터 전송 단위로 상기 호스트 장치에 전송하는 단계를 더 포함하는 것을 특징으로 하는 스토리지 시스템의 데이터 전송 방법.
  14. 제 11 항에 있어서,
    상기 호스트 장치가 읽기 커맨드를 생성함으로써 상기 논리 어드레스 상에서 상기 블록 단위로 읽기 데이터들을 결정하는 단계; 및
    상기 스토리지 장치가 상기 읽기 데이터들 및 상기 읽기 데이터들과 관련된 제 2 스페어 데이터들을 상기 데이터 전송 단위로 상기 호스트 장치에 전송하는 단계를 더 포함하는 것을 특징으로 하는 스토리지 시스템의 데이터 전송 방법.
KR1020130027846A 2013-03-15 2013-03-15 스토리지 시스템 및 이의 데이터 전송 방법 KR101369408B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020130027846A KR101369408B1 (ko) 2013-03-15 2013-03-15 스토리지 시스템 및 이의 데이터 전송 방법
PCT/KR2013/012003 WO2014142427A1 (ko) 2013-03-15 2013-12-23 스토리지 시스템 및 이의 데이터 전송 방법
US14/776,326 US20160041759A1 (en) 2013-03-15 2013-12-23 Storage system and data transmitting method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130027846A KR101369408B1 (ko) 2013-03-15 2013-03-15 스토리지 시스템 및 이의 데이터 전송 방법

Publications (1)

Publication Number Publication Date
KR101369408B1 true KR101369408B1 (ko) 2014-03-04

Family

ID=50647328

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130027846A KR101369408B1 (ko) 2013-03-15 2013-03-15 스토리지 시스템 및 이의 데이터 전송 방법

Country Status (3)

Country Link
US (1) US20160041759A1 (ko)
KR (1) KR101369408B1 (ko)
WO (1) WO2014142427A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160144557A (ko) * 2015-06-08 2016-12-19 삼성전자주식회사 읽기 데이터를 전송 단위로 전송하는 불휘발성 메모리 모듈, 스토리지 장치, 및 전자 장치

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI544487B (zh) 2015-01-22 2016-08-01 慧榮科技股份有限公司 資料儲存裝置以及快閃記憶體控制方法
KR102651425B1 (ko) 2016-06-30 2024-03-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11061606B2 (en) * 2018-06-29 2021-07-13 Micron Technology, Inc. NAND temperature-aware operations

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050069218A (ko) * 2003-12-31 2005-07-05 삼성전자주식회사 데이타를 섹터 단위로 랜덤하게 입출력할 수 있는 플래시메모리 시스템
JP2007257283A (ja) 2006-03-23 2007-10-04 Tdk Corp メモリコントローラ及びフラッシュメモリシステム
KR20080067548A (ko) * 2007-01-16 2008-07-21 삼성전자주식회사 하이브리드 하드 디스크 드라이브, 하이브리드 하드 디스크드라이브를 내장하는 컴퓨터 시스템, 그리고 하이브리드하드 디스크 드라이브의 플래시 메모리 dma 회로
KR101185818B1 (ko) 2011-09-19 2012-11-09 주식회사 가야데이터 고체 상태 드라이브를 이용한 연속 데이터 보호 시스템

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110041039A1 (en) * 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
KR20130084846A (ko) * 2012-01-18 2013-07-26 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050069218A (ko) * 2003-12-31 2005-07-05 삼성전자주식회사 데이타를 섹터 단위로 랜덤하게 입출력할 수 있는 플래시메모리 시스템
JP2007257283A (ja) 2006-03-23 2007-10-04 Tdk Corp メモリコントローラ及びフラッシュメモリシステム
KR20080067548A (ko) * 2007-01-16 2008-07-21 삼성전자주식회사 하이브리드 하드 디스크 드라이브, 하이브리드 하드 디스크드라이브를 내장하는 컴퓨터 시스템, 그리고 하이브리드하드 디스크 드라이브의 플래시 메모리 dma 회로
KR101185818B1 (ko) 2011-09-19 2012-11-09 주식회사 가야데이터 고체 상태 드라이브를 이용한 연속 데이터 보호 시스템

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160144557A (ko) * 2015-06-08 2016-12-19 삼성전자주식회사 읽기 데이터를 전송 단위로 전송하는 불휘발성 메모리 모듈, 스토리지 장치, 및 전자 장치
KR102473197B1 (ko) * 2015-06-08 2022-12-02 삼성전자주식회사 읽기 데이터를 전송 단위로 전송하는 불휘발성 메모리 모듈, 스토리지 장치, 및 전자 장치

Also Published As

Publication number Publication date
WO2014142427A1 (ko) 2014-09-18
US20160041759A1 (en) 2016-02-11

Similar Documents

Publication Publication Date Title
KR101916206B1 (ko) 고체 상태 드라이브에서 자유 공간 어카운트와 함께 재구축되는 2 스테이지 파워 온 맵을 위한 방법들, 디바이스들, 및 시스템들
KR102252419B1 (ko) 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법
US10909030B2 (en) Enhanced trim command support for solid state drives
US8910017B2 (en) Flash memory with random partition
KR101478168B1 (ko) 스토리지 시스템 및 스토리지 시스템의 쓰기 데이터 처리 방법
US8898376B2 (en) Apparatus, system, and method for grouping data stored on an array of solid-state storage elements
US9904490B2 (en) Solid-state mass storage device and method for persisting volatile data to non-volatile media
US10013354B2 (en) Apparatus, system, and method for atomic storage operations
US8909986B2 (en) Data storing method for solid state drive to preserve data integrity after power failure
US20130173954A1 (en) Method of managing bad storage region of memory device and storage device using the method
JP6007332B2 (ja) ストレージシステム及びデータライト方法
US20130205114A1 (en) Object-based memory storage
US10606760B2 (en) Nonvolatile memory devices and methods of controlling the same
US9524105B2 (en) Process and apparatus to reduce declared capacity of a storage device by altering an encoding format
JP2014154167A (ja) メモリ内のデータを管理するための方法および装置
JP6034183B2 (ja) 半導体記憶装置
US9507523B1 (en) Methods, devices and systems for variable size logical page management in a solid state drive
TW201931366A (zh) 資料儲存裝置以及非揮發式記憶體操作方法
JP2018101411A (ja) データストレージデバイスおよびその操作方法
CN112099985A (zh) 数据储存装置以及非挥发式存储器控制方法
JP5592478B2 (ja) 不揮発性記憶装置及びメモリコントローラ
KR101369408B1 (ko) 스토리지 시스템 및 이의 데이터 전송 방법
US9798470B2 (en) Memory system for storing and processing translation information
US9552166B2 (en) Process and apparatus to reduce declared capacity of a storage device by deleting data
US9582202B2 (en) Process and apparatus to reduce declared capacity of a storage device by moving data

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170210

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180212

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190201

Year of fee payment: 6