KR101478168B1 - Storage system and method of processing write data - Google Patents

Storage system and method of processing write data Download PDF

Info

Publication number
KR101478168B1
KR101478168B1 KR1020130042152A KR20130042152A KR101478168B1 KR 101478168 B1 KR101478168 B1 KR 101478168B1 KR 1020130042152 A KR1020130042152 A KR 1020130042152A KR 20130042152 A KR20130042152 A KR 20130042152A KR 101478168 B1 KR101478168 B1 KR 101478168B1
Authority
KR
South Korea
Prior art keywords
storage
data
logical page
write
host controller
Prior art date
Application number
KR1020130042152A
Other languages
Korean (ko)
Other versions
KR20140124537A (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 KR1020130042152A priority Critical patent/KR101478168B1/en
Priority to PCT/KR2014/000867 priority patent/WO2014171618A1/en
Priority to US14/785,073 priority patent/US20160162187A1/en
Publication of KR20140124537A publication Critical patent/KR20140124537A/en
Application granted granted Critical
Publication of KR101478168B1 publication Critical patent/KR101478168B1/en

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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/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/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • 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/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

스토리지 시스템의 쓰기 데이터 처리 방법은 파일시스템이 쓰기 요청을 하는 경우, 쓰기 요청과 관련된 쓰기 데이터를 데이터 입출력 큐에 저장하고, 데이터 입출력 큐에 저장되어 있는 모든 데이터를 완전한 스토리지 논리 페이지와 불완전한 스토리지 논리 페이지로 구분하며, 쓰기 요청에 응답하여 완전한 스토리지 논리 페이지에 해당하는 데이터를 스토리지 장치로 전송하고, 쓰기 요청에 응답하여 불완전한 스토리지 논리 페이지에 해당하는 데이터를 데이터 입출력 큐에 잔류시킨다.When a file system makes a write request, the write data processing method of the storage system stores the write data related to the write request in the data I / O queue and transfers all data stored in the data I / O queue to the complete storage logical page and the incomplete storage logical page In response to the write request, the data corresponding to the complete storage logical page is transferred to the storage device. In response to the write request, the data corresponding to the incomplete storage logical page is left in the data input / output queue.

Figure R1020130042152
Figure R1020130042152

Description

스토리지 시스템 및 스토리지 시스템의 쓰기 데이터 처리 방법 {STORAGE SYSTEM AND METHOD OF PROCESSING WRITE DATA}{STORAGE SYSTEM AND METHOD OF PROCESSING WRITE DATA}

본 발명은 반도체 메모리 시스템에 관한 것으로, 보다 상세하게는 호스트 장치와 스토리지 장치(예를 들어, 플래시 메모리 장치)로 구성된 스토리지 시스템 및 이의 쓰기 데이터 처리 방법에 관한 것이다.The present invention relates to a semiconductor memory system, and more particularly, to a storage system composed of a host device and a storage device (for example, a flash memory device) and a method for processing write data.

반도체 메모리 장치는 전원이 공급되지 않는 상태에서 데이터를 보존할 수 있는지에 따라 휘발성 메모리 장치와 비휘발성 메모리 장치로 구분될 수 있다. 최근에는, 반도체 메모리 장치의 소형화 및 대용량 추세에 따라, 비휘발성 메모리 장치 중에서 낸드 플래시 메모리 장치(NAND flash memory device)가 소형화 및 대용량에 적합하여 널리 사용되고 있고, 낸드 플래시 메모리 장치 형태의 스토리지 장치(예를 들어, 솔리드 스테이트 드라이브(solid state drive; SSD) 등)가 하드 디스크 드라이브(hard disk drive; HDD)를 대체하고 있는 추세이다. 이 때, 스토리지 장치는 적어도 하나 이상의 낸드 플래시 메모리 및 이를 제어하기 위한 스토리지 컨트롤러를 포함할 수 있고, 호스트 장치는 파일시스템(file system) 및 상기 스토리지 컨트롤러와 인터액션(interaction)을 수행하기 위한 호스트 컨트롤러를 포함할 수 있다.The semiconductor memory device can be divided into a volatile memory device and a nonvolatile memory device depending on whether data can be stored in a state in which power is not supplied. In recent years, NAND flash memory devices have been widely used as nonvolatile memory devices because of miniaturization and large capacity of semiconductor memory devices. NAND flash memory devices are widely used because of their small size and large capacity, For example, a solid state drive (SSD), is replacing a hard disk drive (HDD). At this time, the storage device may include at least one NAND flash memory and a storage controller for controlling the same, and the host device may include a file system and a host controller for performing an interaction with the storage controller .

최근, 낸드 플래시 메모리에 대한 읽기(read) 동작, 쓰기(write) 동작, 소거(erase) 동작, 병합(merge) 동작, 카피백(copyback) 동작, 컴팩션(compaction) 동작, 가비지 콜렉션(garbage collection) 동작, 웨어 레벨링(wear leveling) 동작, 어드레스 맵핑(address mapping) 동작 등을 제어함으로써 파일시스템을 지원하는 플래시 변환 레이어(flash translation layer; FTL)의 기능을 스토리지 장치와 호스트 장치에 분산시키려는 시도가 이루어지고 있다. 예를 들어, 호스트 컨트롤러에 호스트 플래시 변환 레이어가 구비될 수 있고, 스토리지 컨트롤러에 스토리지 플래시 변환 레이어가 구비될 수 있다. Recently, there has been proposed a method of reading, writing, erasing, merge, copyback, compaction, garbage collection (NAND flash memory) Attempts to distribute the functionality of the flash translation layer (FTL), which supports the file system, to storage devices and host devices by controlling the operation, wear leveling operations, address mapping operations, . For example, a host flash conversion layer may be provided in the host controller, and a storage flash conversion layer may be provided in the storage controller.

이 때, 호스트 장치에서 사용하는 읽기 동작과 쓰기 동작의 기본 단위는 블록 단위(예를 들어, 1KB, 2KB, 4KB 등)이며 호스트 장치에서 사용하는 호스트 논리 페이지 크기는 파일시스템의 블록 크기를 고려하여 설정한다. 반면에, 스토리지 장치에서 사용하는 읽기 동작과 쓰기 동작의 기본 단위는 플래시 메모리의 물리 페이지의 배수(예를 들어, 16KB 이상)이며, 최근에는 스토리지 장치의 연속 쓰기 성능 향상과 매핑 테이블 크기를 감소시키는 등의 효과를 위해 스토리지 장치의 논리 페이지 크기가 커지고 있다. 이에 따라, 스토리지 논리 페이지의 크기가 호스트 논리 페이지의 크기보다 큰 경향이 있다.In this case, the basic unit of the read operation and the write operation used by the host device is block unit (for example, 1 KB, 2 KB, 4 KB, etc.), and the size of the host logical page used by the host device is determined by considering the block size of the file system Setting. On the other hand, the basic unit of the read operation and the write operation used in the storage device is a multiple of the physical page of the flash memory (for example, 16 KB or more). Recently, improvement of the continuous writing performance of the storage device and reduction of the mapping table size The logical page size of the storage device is becoming larger. As a result, the size of the storage logical page tends to be larger than the size of the host logical page.

이와 같이, 스토리지 논리 페이지의 크기가 호스트 논리 페이지의 크기보다 커짐에 따라 동일한 스토리지 논리 페이지에 대한 쓰기가 복수의 쓰기로 요청되는 경우가 빈번히 발생한다. 이는 덮어쓰기가 지원되지 않고, 페이지 단위로 읽기 동작, 쓰기 동작을 수행하고 블록 단위로 삭제 동작을 수행하는 플래시 메모리의 특성상 성능을 크게 저하시키고 수명을 단축시키는 문제점을 가지고 있다.Thus, as the size of the storage logical page becomes larger than the size of the host logical page, the write to the same storage logical page is frequently requested by a plurality of writes. This is a problem in that overwriting is not supported, the performance of the flash memory is greatly degraded and the service life is shortened due to the characteristics of the flash memory performing the read operation and the write operation on a page basis and performing the erase operation on a block-by-block basis.

본 발명의 일 목적은 스토리지 장치에서 동일한 스토리지 논리 페이지에 대하여 쓰기 동작이 여러 차례에 걸쳐서 나누어 수행되는 것을 방지할 수 있는 스토리지 시스템의 쓰기 데이터 처리 방법을 제공하는 것이다.It is an object of the present invention to provide a write data processing method of a storage system that can prevent a write operation from being performed in a plurality of times on the same storage logical page in a storage apparatus.

본 발명의 다른 목적은 상기 쓰기 데이터 처리 방법을 채용한 스토리지 시스템을 제공하는 것이다.Another object of the present invention is to provide a storage system employing the write data processing method.

다만, 본 발명의 목적은 상기 목적들로 한정되는 것이 아니며, 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위에서 다양하게 확장될 수 있을 것이다.It should be understood, however, that the present invention is not limited to the above-described embodiments, and may be variously modified without departing from the spirit and scope of the present invention.

본 발명의 일 목적을 달성하기 위하여, 본 발명의 실시예들에 따른 스토리지 시스템의 쓰기 데이터 처리 방법은, 파일시스템이 하나 또는 그 이상의 블록에 대한 쓰기 요청을 하는 경우, 호스트 컨트롤러는 상기 쓰기 요청과 관련된 쓰기 데이터를 데이터 입출력 큐(queue)에 저장하고, 상기 데이터 입출력 큐에 저장되어 있는 모든 데이터를 완전한(full) 스토리지 논리 페이지와 불완전한 스토리지 논리 페이지로 구분하여 상기 완전한 스토리지 논리 페이지에 해당하는 데이터는 스토리지 장치로 전송하고 상기 불완전한 스토리지 논리 페이지에 해당하는 데이터는 다음 쓰기 데이터와 병합되어 완전한 스토리지 논리 페이지가 될 수 있도록 상기 데이터 입출력 큐에 잔류시키고 다음 쓰기 데이터를 기다리도록 하는 것이다.In order to accomplish one object of the present invention, in a write data processing method of a storage system according to embodiments of the present invention, when a file system makes a write request for one or more blocks, Storing the associated write data in a data input / output queue, and separating all data stored in the data input / output queue into a full storage logical page and an incomplete storage logical page, And the data corresponding to the incomplete storage logical page is merged with the next write data to remain in the data input / output queue so as to become a complete storage logical page and wait for the next write data.

일 실시예에 의하면, 상기 쓰기 데이터가 상기 완전한 스토리지 논리 페이지를 포함하는 경우, 상기 완전한 스토리지 논리 페이지에 해당하는 데이터는 상기 데이터 입출력 큐에 저장하지 않고 상기 스토리지 장치로 전송할 수 있다.According to an embodiment, when the write data includes the complete storage logical page, data corresponding to the complete storage logical page can be transferred to the storage device without being stored in the data input / output queue.

일 실시예에 의하면, 상기 쓰기 데이터가 상기 데이터 입출력 큐에 저장되어 있는 이전 쓰기 요청과 관련된 잔류 데이터에 해당하는 스토리지 논리 페이지의 데이터를 포함하고 있지 않은 경우, 상기 잔류 데이터를 추가로 잔류시켜도 완전한 스토리지 논리 페이지가 될 가능성이 낮으므로, 상기 잔류 데이터를 불완전한 논리 페이지로 상기 스토리지 장치에 전송할 수 있다.According to an embodiment, if the write data does not include data of a storage logical page corresponding to a residual data related to a previous write request stored in the data input / output queue, even if the residual data is further retained, Since it is unlikely to be a logical page, the residual data can be transferred to the storage device as an incomplete logical page.

일 실시예에 의하면, 상기 완전한 스토리지 논리 페이지와 상기 불완전한 스토리지 논리 페이지는 상기 스토리지 장치에 설정되어 있는 스토리지 논리 페이지 크기에 기초하여 구분할 수 있다.According to one embodiment, the complete storage logical page and the incomplete storage logical page may be distinguished based on the storage logical page size set in the storage device.

일 실시예에 의하면, 상기 파일시스템이 플러시(flush) 요청을 하는 경우, 상기 데이터 입출력 큐에 저장되어 있는 모든 데이터를 상기 스토리지 장치로 전송할 수 있다.According to an embodiment, when the file system makes a flush request, all data stored in the data input / output queue can be transmitted to the storage device.

본 발명의 다른 목적을 달성하기 위하여, 발명의 실시예들에 따른 스토리지 시스템은 스토리지 장치와 호스트 장치를 포함할 수 있다. 상기 스토리지 장치는 적어도 하나 이상의 플래시 메모리 및 상기 플래시 메모리를 제어하는 스토리지 컨트롤러를 구비할 수 있다. 상기 호스트 장치는 파일시스템 및 상기 스토리지 컨트롤러와 인터액션(interaction)을 수행하는 호스트 컨트롤러를 구비할 수 있다. 이 때, 상기 호스트 컨트롤러는 상기 파일시스템이 쓰기 요청을 하는 경우, 상기 쓰기 요청과 관련된 쓰기 데이터를 데이터 입출력 큐에 저장하고, 상기 데이터 입출력 큐에 저장되어 있는 모든 데이터를 완전한 스토리지 논리 페이지와 불완전한 스토리지 논리 페이지로 구분하여 상기 완전한 스토리지 논리 페이지에 해당하는 데이터를 상기 스토리지 장치로 전송할 수 있다.According to another aspect of the present invention, there is provided a storage system including a storage device and a host device. The storage device may include at least one flash memory and a storage controller for controlling the flash memory. The host device may include a file system and a host controller that performs an interaction with the storage controller. At this time, when the file system makes a write request, the host controller stores write data related to the write request in a data input / output queue, and stores all data stored in the data input / output queue in a complete storage logical page and incomplete storage Data corresponding to the complete storage logical page can be transmitted to the storage apparatus by dividing the logical page into logical pages.

일 실시예에 의하면, 상기 호스트 컨트롤러는 상기 쓰기 데이터가 상기 완전한 스토리지 논리 페이지를 포함하는 경우, 상기 완전한 스토리지 논리 페이지에 해당하는 데이터를 상기 데이터 입출력 큐에 저장하지 않고 상기 스토리지 장치로 전송할 수 있다.According to an embodiment, when the write data includes the complete storage logical page, the host controller can transmit the data corresponding to the complete storage logical page to the storage device without storing the data in the data input / output queue.

일 실시예에 의하면, 상기 호스트 컨트롤러는 상기 쓰기 데이터가 상기 데이터 입출력 큐에 저장되어 있는 이전 쓰기 요청과 관련된 잔류 데이터에 해당하는 스토리지 논리 페이지의 데이터를 포함하고 있지 않은 경우, 상기 잔류 데이터를 상기 스토리지 장치로 전송할 수 있다.According to one embodiment, when the write data does not include data of a storage logical page corresponding to a residual data related to a previous write request stored in the data input / output queue, the host controller may store the residual data in the storage Device.

일 실시예에 의하면, 상기 호스트 컨트롤러는 상기 완전한 스토리지 논리 페이지와 상기 불완전한 스토리지 논리 페이지를 상기 스토리지 장치에 설정되어 있는 스토리지 논리 페이지 크기에 기초하여 구분할 수 있다.According to one embodiment, the host controller can distinguish the complete storage logical page and the incomplete storage logical page based on the storage logical page size set in the storage device.

일 실시예에 의하면, 상기 호스트 컨트롤러는 상기 파일시스템이 플러시(flush) 요청을 하는 경우, 상기 데이터 입출력 큐에 저장되어 있는 모든 데이터를 상기 스토리지 장치로 전송할 수 있다.According to an embodiment, when the file system makes a flush request, the host controller may transmit all data stored in the data input / output queue to the storage device.

최근 플래시 메모리의 논리 페이지 크기가 커짐에 따라 호스트 논리 페이지의 크기보다 스토리지 논리 페이지의 크기가 큰 경향이 있다. 이에 파일시스템의 쓰기 요청에 대해 동일한 스토리지 논리 페이지에 대한 쓰기가 복수의 쓰기로 요청되는 경우가 발생한다.Recently, as the logical page size of the flash memory increases, the size of the storage logical page tends to be larger than the size of the host logical page. Thus, a write to the same storage logical page for a write request of the file system may be requested by a plurality of writes.

호스트 논리 페이지의 크기보다 스토리지 논리 페이지의 크기가 큰 경우, 본 발명의 실시예에 따른 스토리지 시스템과 스토리지 시스템의 쓰기 데이터 처리 방법을 이용하면 호스트 컨트롤러에 데이터 입출력 큐를 구비하여 쓰기 요청과 관련된 쓰기 데이터를 스토리지 논리 페이지 크기 단위로 합쳐서 전송할 수 있다. 이는 불필요한 쓰기 요청 전송을 감소시키고, 스토리지 FTL에서 가비지 콜렉션(garbage collection)처리 시 풀 병합(full merge) 횟수를 줄여줌으로써 상기 스토리지 시스템의 성능을 크게 향상시키고 스토리지 시스템의 수명을 늘릴 수 있다.If the size of the storage logical page is larger than the size of the host logical page, by using the storage system and the write data processing method of the storage system according to the embodiment of the present invention, the host controller has a data input / output queue, To the storage logical page size unit. This can significantly improve performance of the storage system and increase the lifetime of the storage system by reducing unnecessary write request transmission and reducing the number of full merges in garbage collection processing in the storage FTL.

다만, 본 발명의 효과는 상기 효과들로 한정되는 것이 아니며, 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위에서 다양하게 확장될 수 있을 것이다.However, the effects of the present invention are not limited to the above effects, and may be variously extended without departing from the spirit and scope of the present invention.

도 1은 본 발명의 실시예들에 따른 스토리지 시스템을 나타내는 블록도이다.
도 2a는 종래의 스토리지 시스템에서 파일시스템의 쓰기 요청에 응답하여 호스트 컨트롤러가 동작하는 일 예를 나타내는 도면이다.
도 2b는 도 1의 스토리지 시스템에서 파일시스템의 쓰기 요청에 응답하여 호스트 컨트롤러가 동작하는 일 예를 나타내는 도면이다.
도 3은 도 1의 스토리지 시스템에서 파일시스템의 플러시 요청에 응답하여 호스트 컨트롤러가 동작하는 일 예를 나타내는 도면이다.
도 4는 본 발명의 실시예들에 따른 스토리지 시스템의 쓰기 데이터 처리 방법을 나타내는 순서도이다.
1 is a block diagram illustrating a storage system in accordance with embodiments of the present invention.
2A is a diagram illustrating an example in which a host controller operates in response to a write request of a file system in a conventional storage system.
FIG. 2B is a diagram illustrating an example in which the host controller operates in response to a write request of a file system in the storage system of FIG. 1. FIG.
3 is a diagram illustrating an example in which the host controller operates in response to a flush request of a file system in the storage system of FIG.
4 is a flowchart showing a write data processing method of a storage system according to embodiments of the present invention.

이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. The same reference numerals are used for the same constituent elements in the drawings and redundant explanations for the same constituent elements are omitted.

도 1은 본 발명의 실시예들에 따른 스토리지 시스템을 나타내는 블록도이다.1 is a block diagram illustrating a storage system in accordance with embodiments of the present invention.

도 1을 참조하면, 스토리지 시스템(100)은 호스트 장치(120) 및 스토리지 장치(140)를 포함할 수 있다.Referring to FIG. 1, a storage system 100 may include a host device 120 and a storage device 140.

스토리지 장치(140)는 낸드 플래시 메모리 장치에 상응할 수 있고, 솔리드 스테이트 드라이브(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) 등으로 구현될 수 있다. 다만, 이것은 예시적인 것으로서, 스토리지 장치(140)의 종류가 그에 한정되는 것은 아니다. 스토리지 장치(140)는 서로 인터액션을 수행하는 제 1 내지 제 n(단, n은 1이상의 정수) 플래시 메모리들(146-1, ..., 146-n)과 스토리지 컨트롤러(142)를 구비할 수 있다. 스토리지 장치(140)는 스토리지 컨트롤러(142)가 플래시 변환 레이어를 이용하여 파일시스템(122)을 지원함으로써, 읽기 동작, 쓰기 동작, 소거 동작, 병합 동작, 카피백 동작, 컴팩션 동작, 가비지 콜렉션 동작, 웨어 레벨링 동작 등을 수행할 수 있다. 한편, 도 1에 도시되지는 않았지만, 스토리지 장치(140)는 제 1 내지 제 n 플래시 메모리들(146-1, ..., 146-n) 및 스토리지 컨트롤러(142) 외에 다른 하드웨어적 또는 소프트웨어적 구성 요소들을 더 포함할 수 있다.The storage device 140 may correspond to a NAND flash memory device and may be a solid state drive (SSD), a secure digital card (SDCARD), a universal flash storage (UFS) An embedded multimedia card (EMMC), a compact flash card (CF), a memory stick, an XD picture card, and the like. However, this is merely an example, and the type of the storage device 140 is not limited thereto. The storage device 140 includes first to n-th (where n is an integer of 1 or more) flash memories 146-1 to 146-n and a storage controller 142 for performing an interaction with each other . The storage device 140 may be configured to allow the storage controller 142 to perform operations such as a read operation, a write operation, an erase operation, a merge operation, a copyback operation, a compaction operation, a garbage collection operation , Wear leveling operation, and the like. 1, the storage device 140 may include hardware or software other than the first to n-th flash memories 146-1 to 146-n and the storage controller 142 And may further include components.

호스트 장치(120)는 서로 인터액션을 수행하는 파일시스템(122)과 호스트 컨트롤러(124)를 구비할 수 있다. 이 때, 파일시스템(122)는 블록 단위(이하, 호스트 논리 페이지라 함)로 호스트 컨트롤러(124)에 대한 I/O 명령을 생성하고, 호스트 컨트롤러(124)는 섹터 단위로(예를 들어, 512byte) 스토리지 장치(140)에 대한 I/O 명령을 생성하여 파일시스템(122)의 I/O 명령을 처리할 수 있다.The host device 120 may include a file system 122 and a host controller 124 for performing an interaction with each other. At this time, the file system 122 generates an I / O command for the host controller 124 in a block unit (hereinafter referred to as a host logical page), and the host controller 124 controls the I / 512 bytes), and can process I / O commands of the file system 122 by generating I / O commands for the storage device 140.

호스트 컨트롤러(124)는 데이터 입출력 큐(queue)(126)를 구비할 수 있다. 데이터 입출력 큐(126)는 파일시스템(122)으로부터의 연속된 쓰기 요청이 동일한 스토리지 논리 페이지에 관한 것일 경우, 이를 모아서 처리하기 위한 임시 저장 공간이며, 데이터 입출력 큐(126)의 의미는 임시 저장 공간으로서 기능하는 모든 데이터 구조(예를 들면, 연결리스트, 우선순위 큐 등)를 포함하는 것으로 해석되어야 한다. 호스트 논리 페이지보다 스토리지 논리 페이지의 크기가 큰 경우, 동일한 스토리지 논리 페이지에 대한 쓰기가 복수의 쓰기 요청으로 전송되면, 스토리지 시스템(100)의 전반적인 성능이 저하되고, 수명이 짧아질 수 있으므로, 데이터 입출력 큐(126)는 이를 보완하는 역할을 할 수 있다.The host controller 124 may include a data input / output queue 126. The data I / O queue 126 is a temporary storage space for collecting and processing data when the consecutive write requests from the file system 122 are related to the same storage logical page. The meaning of the data I / (E. G., A linked list, a priority queue, etc.) that functions as a < / RTI > If the size of the storage logical page is larger than the host logical page, if the write to the same storage logical page is sent in a plurality of write requests, the overall performance of the storage system 100 may deteriorate and the life may be shortened, The queue 126 may serve as a complement to this.

또한, 호스트 컨트롤러(124)는 데이터 입출력 큐(126)에 저장되어 있는 모든 데이터를 완전한 스토리지 논리 페이지와 불완전한 스토리지 논리 페이지로 구분할 수 있다. 여기서, 데이터 입출력 큐(126) 또는 임시 저장 공간에 저장되어 있는 각 스토리지 논리 페이지 중에서 해당 스토리지 논리 페이지의 모든 데이터가 완전하게 있는 경우 해당 스토리지 논리 페이지를 완전한(full) 스토리지 논리 페이지라 하고, 그렇지 않은 경우를 불완전한(partial) 스토리지 논리 페이지라고 정의한다. 일 실시예에서, 완전한 스토리지 논리 페이지인지 여부는 스토리지 논리 페이지의 마지막 부분에 해당하는 데이터를 포함하는 경우 완전한 스토리지 논리 페이지로 판단하고, 그렇지 않은 경우 불완전한 스토리지 논리 페이지로 판단할 수 있다. 일 실시예에서, 호스트 컨트롤러(124)는 스토리지 논리 페이지 크기와 데이터 입출력 큐(126) 내에서 동일한 스토리지 논리 페이지에 해당하는 데이터의 크기를 비교하여, 크기가 동일한 경우 완전한 스토리지 논리 페이지로 판단하고, 스토리지 논리 페이지 크기보다 데이터 입출력 큐 내에서 동일한 스토리지 논리 페이지에 해당하는 것으로 판단되는 데이터의 크기가 작은 경우 불완전한 스토리지 논리 페이지라고 판단할 수 있다.In addition, the host controller 124 may divide all data stored in the data I / O queue 126 into a complete storage logical page and an incomplete storage logical page. Here, if all the data of the corresponding storage logical page among the storage logical pages stored in the data input / output queue 126 or the temporary storage space is completely present, the corresponding storage logical page is referred to as a full storage logical page, The case is defined as a partial storage logical page. In one embodiment, determining whether a complete storage logical page is a complete storage logical page if it includes data corresponding to the last portion of the storage logical page, or otherwise determining an incomplete storage logical page. In one embodiment, the host controller 124 compares the size of the storage logical page with the size of the data corresponding to the same storage logical page in the data I / O queue 126 to determine a complete storage logical page if the sizes are the same, If the size of data determined to correspond to the same storage logical page in the data I / O queue is smaller than the storage logical page size, it can be judged to be an incomplete storage logical page.

호스트 컨트롤러(124)는 데이터 입출력 큐(126)에 완전한 스토리지 논리 페이지가 존재하는 경우, 완전한 스토리지 논리 페이지에 해당하는 데이터를 스토리지 장치(140)에 전송할 수 있다. 반면에, 데이터 입출력 큐(126) 내에서 불완전한 스토리지 논리 페이지에 해당하는 데이터는 데이터 입출력 큐(126)에 잔류시키고 다음 쓰기 요청을 기다릴 수 있다. 불완전한 스토리지 논리 페이지에 해당하는 데이터를 데이터 입출력 큐(126)에 잔류시키고 다음 쓰기 요청을 기다림으로써 다음 쓰기 요청에서 동일한 스토리지 논리 페이지에 해당하는 데이터가 존재하는 경우 이를 병합하여 처리할 수 있다. 즉, 쓰기 요청과 관련된 쓰기 데이터의 일부와 데이터 입출력 큐(126)에 저장되어 있는 이전 쓰기 요청과 관련된 잔류 데이터가 동일한 스토리지 논리 페이지에 대한 것일 경우 병합되고, 병합된 논리페이지에 대해서 완전한 스토리지 논리 페이지 여부가 구분될 수 있다.The host controller 124 may transmit data corresponding to a complete storage logical page to the storage device 140 when a complete storage logical page exists in the data input / output queue 126. [ On the other hand, data corresponding to an incomplete storage logical page in the data I / O queue 126 may remain in the data I / O queue 126 and wait for the next write request. Data corresponding to an incomplete storage logical page can be retained in the data input / output queue 126 and waiting for the next write request, so that data corresponding to the same storage logical page in the next write request can be merged and processed. That is, some of the write data associated with the write request and the remaining data associated with the previous write request stored in the data I / O queue 126 are merged if they are for the same storage logical page, and a complete storage logical page Can be distinguished.

그 밖에도, 호스트 컨트롤러(124)는 완전한 스토리지 논리 페이지를 즉시 전송 할 수 있는 경우 또는 다음 쓰기 요청에서 잔류 데이터와 동일한 스토리지 논리 페이지인 데이터를 기대하기 어려운 경우, 쓰기 데이터를 스토리지 장치(140)로 전송할 수 있다. 일 실시예에서, 호스트 컨트롤러(124)는 쓰기 요청과 관련된 쓰기 데이터가 완전한 스토리지 논리 페이지를 포함하는 경우, 완전한 스토리지 논리 페이지에 해당하는 데이터는 다음 쓰기 요청을 기다릴 필요가 없으므로 완전한 스토리지 논리 페이지에 해당하는 데이터를 상기 데이터 입출력 큐(126)에 저장하지 않고 스토리지 장치(140)로 즉시 전송할 수 있다. 일 실시예에서, 호스트 컨트롤러(124)는 쓰기 데이터가 데이터 입출력 큐(126)에 저장되어 있는 이전 쓰기 요청과 관련된 잔류 데이터에 해당하는 스토리지 논리 페이지의 데이터를 포함하고 있지 않은 경우, 다음 쓰기 요청에서 잔류 데이터와 동일한 스토리지 논리 페이지인 데이터를 기대하기 어려우므로 잔류 데이터를 불완전한 스토리지 논리 페이지로 스토리지 장치(140)에 전송할 수 있다. 일 실시예에서, 호스트 컨트롤러(124)는 완전한 스토리지 논리 페이지에 해당하는 데이터들을 하나의 I/O 요청으로 재병합하여 스토리지 장치(140)에 전송할 수 있다.In addition, if the host controller 124 is able to transmit a complete storage logical page immediately or if it is difficult to expect data, which is the same storage logical page as the remaining data in the next write request, to the storage device 140 . In one embodiment, if the write data associated with a write request includes a complete storage logical page, then the host controller 124 does not have to wait for the next write request because the data corresponding to the complete storage logical page corresponds to a complete storage logical page. To the storage device 140 without storing the data in the data input / output queue 126. [ In one embodiment, if the write data does not contain data for a storage logical page corresponding to the residual data associated with the previous write request stored in the data I / O queue 126, It is difficult to expect data, which is the same storage logical page as the residual data, so that the residual data can be transferred to the storage device 140 as an incomplete storage logical page. In one embodiment, the host controller 124 may re-merge the data corresponding to the complete storage logical page into one I / O request and send it to the storage device 140.

또한, 호스트 컨트롤러(124)는 요청된 쓰기 데이터에 대한 처리를 완료시키기 위한 파일시스템(122)의 플러시(flush) 요청(이하, 플러시 요청이라고 함)이 있는 경우, 현재 데이터 입출력 큐(126)에 저장된 모든 데이터를 스토리지 장치(140)로 전송할 수 있다.If there is a flush request (hereinafter referred to as a flush request) of the file system 122 for completing the processing for the requested write data, the host controller 124 sends a flush request to the current data I / O queue 126 And may transmit all stored data to the storage device 140.

호스트 컨트롤러(124)는 파일시스템(122)과 스토리지 장치(140) 사이에서 데이터 입출력 큐(126)를 사용하여 스토리지 논리 페이지 단위로 전송 요청할 수 있도록 처리하는 모든 프로그램을 포함하는 의미로 해석되어야 한다. 예를 들어, 호스트 컨트롤러(124)는 디바이스 드라이버(device driver), 디바이스 드라이버에 포함된 플래시 변환 레이어 또는 플래시 변환 레이어와 유사한 기능을 하는 프로그램에서 구현될 수 있다. 일 실시예에서, 호스트 플래시 변환 레이어 기능을 지원하지 않는 디바이스 드라이버에서 데이터 입출력 큐(126)를 구비한 호스트 컨트롤러(124)를 구현함으로써 스토리지 논리 페이지 단위로 전송 요청할 수 있도록 처리할 수 있다. 일 실시예에서, 디바이스 드라이버에 포함된 호스트 플래시 변환 레이어에서 데이터 입출력 큐(126)를 구비한 호스트 컨트롤러(124)를 구현함으로써 스토리지 논리 페이지 단위로 전송 요청할 수 있도록 처리할 수 있다.The host controller 124 should be interpreted to include all programs that are required to be transmitted between the file system 122 and the storage device 140 in units of storage logical pages using the data input / output queue 126. [ For example, the host controller 124 may be implemented in a device driver, a flash conversion layer included in the device driver, or a program having a function similar to that of the flash conversion layer. In one embodiment, a host controller 124 having a data input / output queue 126 may be implemented in a device driver that does not support the host flash conversion layer function, so that a transfer request can be made on a storage logical page basis. In one embodiment, a host controller 124 having a data input / output queue 126 in the host flash conversion layer included in the device driver can be implemented to process requests for transmission in units of storage logical pages.

한편, 도 1에 도시되지는 않았지만, 호스트 장치(120)는 파일시스템(122) 및 호스트 컨트롤러(124) 외에 다른 하드웨어적 또는 소프트웨어적 구성 요소들을 더 포함할 수 있으며, 호스트 컨트롤러(124)도 데이터 입출력 큐(126) 외에 다른 하드웨어적 또는 소프트웨어적 구성 요소들을 더 포함할 수 있다.1, the host device 120 may further include other hardware or software components other than the file system 122 and the host controller 124, and the host controller 124 may also include data Output queue 126 as well as other hardware or software components.

도 2a는 종래의 스토리지 시스템에서 파일시스템의 쓰기 요청에 응답하여 호스트 컨트롤러가 동작하는 일 예를 나타내는 도면이고, 도 2b는 도 1의 스토리지 시스템에서 파일시스템의 쓰기 요청에 응답하여 호스트 컨트롤러가 동작하는 일 예를 나타내는 도면이다.FIG. 2A is a diagram illustrating an example in which a host controller operates in response to a write request of a file system in a conventional storage system, FIG. 2B is a diagram illustrating an example in which a host controller operates in response to a write request of a file system in FIG. Fig.

도 2a 및 도 2b를 참조하면, 호스트 컨트롤러(124)의 쓰기 데이터 전송 방식에 따른 효과가 도시되어 있다. 구체적으로, 도 2a는 데이터 입출력 큐를 구비하지 않는 호스트 컨트롤러(24)가 파일시스템(22)의 쓰기 요청을 처리하는 방식을 나타내고 있고, 도 2b는 데이터 입출력 큐(126)를 이용하여 호스트 컨트롤러(124)가 파일시스템(122)의 쓰기 요청을 처리하는 방식을 나타내고 있다. 도 2a 및 도 2b에서는 스토리지 논리 페이지의 크기가 호스트 논리 페이지 크기의 4배인 경우를 나타내었다. 예를 들어, 호스트 논리 페이지의 크기는 4KB일 수 있고, 스토리지 논리 페이지의 크기는 16KB일 수 있다. 도 2a 및 도 2b에서 파일시스템이 스토리지 논리 페이지 L0, L1, L2에 대한 연속된 쓰기 요청을 제 1 쓰기 요청(L0-0, L0-1), 제2 쓰기 요청(L0-2, L0-3, L1-0, L1-1, L1-2, L1-3, L2-0, L2-1), 제 3 쓰기 요청(L2-2, L2-3)으로 세 차례에 걸쳐서 나누어서 요청하는 것을 가정하였다. (여기서, Lx는 스토리지 논리 페이지 번호를 의미하며, Lx-y는 스토리지 논리 페이지 Lx의 y번째 호스트 논리 페이지를 나타낸다.)Referring to FIGS. 2A and 2B, an effect of the write data transmission method of the host controller 124 is shown. 2A shows a method in which a host controller 24 that does not have a data input / output queue processes a write request of the file system 22 and FIG. 2B shows a method in which a host controller 124 processes the write request of the file system 122. FIG. In FIGS. 2A and 2B, the size of the storage logical page is four times the size of the host logical page. For example, the size of the host logical page can be 4 KB, and the size of the storage logical page can be 16 KB. 2A and 2B, the file system writes consecutive write requests to the storage logical pages L0, L1, L2 as a first write request (L0-0, L0-1), a second write request (L0-2, L0-3 , L1-0, L1-1, L1-2, L1-3, L2-0, L2-1) and the third write request (L2-2, L2-3) . (Where Lx denotes the storage logical page number, and Lx-y denotes the yth host logical page of the storage logical page Lx).

도 2a에 도시된 바와 같이, 종래의 데이터 입출력 큐를 구비하지 않는 호스트 컨트롤러(24)는 파일시스템(22)에서 쓰기 요청을 수신하고, 즉시 스토리지 장치(40)로 쓰기 데이터를 전송한다. (도 2a에서, WR1은 파일시스템(22)으로부터 쓰기 요청 받은 쓰기 데이터를 나타내며, DT1은 스토리지 장치(40)로 전송한 쓰기 데이터를 나타낸다.) 예를 들어, 파일시스템(22)으로부터 호스트 논리 페이지 크기의 2배 크기인 제 1 쓰기 요청(L0-0, L0-1)이 발생하는 경우, 이는 불완전한 스토리지 페이지임에도 불구하고, 스토리지 장치(40)에 쓰기 데이터(L0)를 전송하고, 이어 호스트 논리 페이지 크기의 8배 크기인 제 2 쓰기 요청(L0-2, L0-3, L1-0, L1-1, L1-2, L1-3, L2-0, L2-1)이 발생하는 경우, 호스트 컨트롤러(24)는 스토리지 장치(40)에 각 스토리지 논리 페이지에 대한 쓰기 데이터들(L0, L1, L2)을 각각 전송한다. 이어 호스트 논리 페이지 크기의 2배 크기인 제 3 쓰기 요청(L2-2, L2-3)이 발생하는 경우, 이전에 이미 전송한 쓰기 데이터와 동일한 스토리지 논리 페이지에 해당하는 쓰기 데이터(L2)를 전송한다. 상기 예에서, 호스트 컨트롤러(24)는 스토리지 논리 페이지 L0에 대해서 두 번의 쓰기 요청, L2에 대해서 두 번의 쓰기 요청으로 전송한다. 이와 같이, 종래의 데이터 입출력 큐를 구비하지 않는 호스트 컨트롤러(24)를 사용하는 경우 파일시스템(22)으로부터 수신한 쓰기 요청에 대해 동일한 스토리지 논리 페이지에 대한 쓰기가 복수의 쓰기 요청으로 전송되는 경우가 빈번하게 되고, 이는 스토리지 시스템의 전반적인 성능을 저하시키고, 수명을 단축시킨다.As shown in FIG. 2A, the host controller 24, which does not have a conventional data input / output queue, receives a write request from the file system 22 and immediately sends write data to the storage device 40. (In FIG. 2A, WR1 indicates write data requested to be written from the file system 22 and DT1 indicates write data sent to the storage device 40). For example, from the file system 22, When the first write request (L0-0, L0-1) of twice the size of the storage device 40 occurs, it sends the write data L0 to the storage device 40 in spite of the incomplete storage page, When a second write request (L0-2, L0-3, L1-0, L1-1, L1-2, L1-3, L2-0, L2-1) that is 8 times the page size occurs, The controller 24 transfers the write data L0, L1, L2 for each storage logical page to the storage device 40, respectively. When a third write request (L2-2, L2-3) that is twice the size of the host logical page occurs, the write data (L2) corresponding to the same storage logical page as the previously-written write data is transmitted do. In this example, the host controller 24 sends two write requests to the storage logical page L0 and two write requests to L2. In the case of using the host controller 24 having no conventional data input / output queue, when a write request received from the file system 22 is transmitted to a plurality of write requests in the same storage logical page Frequent, which degrades the overall performance of the storage system and shortens its life.

반면에, 도 2b에 도시된 바와 같이, 데이터 입출력 큐(126)를 포함하는 호스트 컨트롤러(124)는 파일시스템(122)으로부터 수신한 쓰기 요청에 대해 동일한 스토리지 논리 페이지에 대한 쓰기가 복수의 쓰기 요청으로 전송되는 경우를 방지할 수 있다. 구체적으로, 호스트 컨트롤러(124)는 파일시스템(122)에서 쓰기 요청을 받고 쓰기 요청과 관련된 쓰기 데이터를 데이터 입출력 큐(126)에 저장한다. 컨트롤러(124)는 데이터 입출력 큐(126)에 저장되어 있는 모든 데이터를 완전한 스토리지 논리 페이지와 불완전한 스토리지 논리 페이지로 구분하여, 완전한 스토리지 논리 페이지에 해당하는 데이터는 스토리지 장치(140)로 전송하고, 불완전한 스토리지 논리 페이지에 해당하는 데이터는 데이터 입출력 큐(126)에 잔류시킨다. (도 2b에서, WR2은 파일시스템(122)으로부터 쓰기 요청 받은 쓰기 데이터를 나타내고, DT2은 스토리지 장치(140)로 전송한 쓰기 데이터를 나타내며, RD는 완전한 스토리지 논리 페이지에 해당하는 데이터를 스토리지 장치(140)로 전송한 후 데이터 입출력 큐(126)에 저장되어 있는 데이터를 나타낸다.) 이와 같이, 호스트 컨트롤러(124)가 데이터 입출력 큐(126)를 이용하는 경우를 살펴보면, 도 2a 및 도 2b에 도시된 상황(즉, 스토리지 논리 페이지의 크기가 호스트 논리 페이지 크기의 4배인 경우)에서 파일시스템(122)으로부터 호스트 논리 페이지 크기의 2배 크기인 제 1 쓰기 요청(L0-0, L0-1)이 발생하는 경우, 호스트 컨트롤러(124)는 데이터 입출력 큐(126)에 제 1 쓰기 요청과 관련된 데이터를 저장하고, 데이터 입출력 큐(126)에 완전한 스토리지 논리 페이지가 존재하지 않으므로 스토리지 장치(140)로 데이터를 전송하지 않는다. 이는 동일한 스토리지 논리 페이지에 해당하는 데이터를 한번에 처리하기 위해 관련된 데이터의 쓰기 요청이 완료될 때까지 불완전한 스토리지 논리 페이지에 해당하는 데이터를 스토리지 장치(140)로 전송하지 않는 것이다. 이어서, 호스트 논리 페이지 크기의 8배 크기인 제 2 쓰기 요청(L0-2, L0-3, L1-0, L1-1, L1-2, L1-3, L2-0, L2-1)이 발생하는 경우, 호스트 컨트롤러(124)는 데이터 입출력 큐(126)에 제 2 쓰기 요청과 관련된 쓰기 데이터를 저장하고, 데이터 입출력 큐(126)에 완전한 스토리지 논리 페이지(L0, L1)가 존재하므로 스토리지 장치(140)에 완전한 스토리지 논리 페이지에 해당하는 데이터(L0, L1)를 데이터 입출력 큐(126)로부터 가져와서(dequeue) 전송한다. 이 때, 호스트 컨트롤러(124)는 완전한 스토리지 논리 페이지에 해당하는 데이터(L0, L1)를 재병합하여 하나의 I/O요청으로 전송할 수도 있다. 이어서, 호스트 논리 페이지 크기의 2배 크기인 제 3 쓰기 요청(L2-2, L2-3)이 발생하는 경우, 호스트 컨트롤러(124)는 데이터 입출력 큐(126)에 제 3 쓰기 요청과 관련된 쓰기 데이터를 저장하고, 데이터 입출력 큐(126)에 완전한 스토리지 논리 페이지(L2)가 존재하므로 스토리지 장치(140)에 완전한 스토리지 논리 페이지에 해당하는 데이터(L2)를 데이터 입출력 큐(126)로부터 가져와서 전송한다. 이와 같이 호스트 컨트롤러(124)가 데이터 입출력 큐(126)를 이용하는 경우 쓰기 데이터 전송 횟수를 줄이고(상기 예에서, 도 2a의 쓰기 데이터 전송 횟수는 5회임에 비하여, 도 2b에서는 3회 또는 2회로 감소됨), 파일시스템의 연속 쓰기에서 동일한 논리 페이지에 대해 중복해서 쓰기가 요청되는 것을 피함으로써 스토리지 시스템(100)의 전반적인 성능을 높이고, 수명도 연장시킬 수 있다. 또한, 플래시 변환 레이어에서 가비지 콜렉션 처리 시 풀 병합(full merge) 횟수를 줄일 수 있는 장점이 있다.2B, the host controller 124, which includes the data input / output queue 126, may write to the same storage logical page for a write request received from the file system 122, It is possible to prevent a situation in which the data is transmitted. Specifically, the host controller 124 receives a write request from the file system 122 and stores the write data associated with the write request in the data input / output queue 126. The controller 124 divides all data stored in the data I / O queue 126 into a complete storage logical page and an incomplete storage logical page, transfers the data corresponding to the complete storage logical page to the storage device 140, The data corresponding to the storage logical page remains in the data input / output queue 126. (In FIG. 2B, WR2 indicates write data requested to be written from the file system 122, DT2 indicates write data sent to the storage device 140, and RD indicates data corresponding to a complete storage logical page to the storage device The data input / output queue 126 is connected to the host controller 124. The host controller 124 uses the data input / output queue 126 as shown in FIGS. 2A and 2B. (L0-0, L0-1) that is twice as large as the size of the host logical page is generated from the file system 122 in the context (that is, when the size of the storage logical page is four times the size of the host logical page) , The host controller 124 stores the data associated with the first write request in the data input / output queue 126, and if there is no complete storage logical page in the data input / output queue 126 Therefore it does not transmit the data to the storage device 140. This is because data corresponding to an incomplete storage logical page is not transmitted to the storage device 140 until the write request of related data is completed to process the data corresponding to the same storage logical page at a time. Then, a second write request (L0-2, L0-3, L1-0, L1-1, L1-2, L1-3, L2-0, L2-1) that is eight times the size of the host logical page occurs The host controller 124 stores the write data associated with the second write request in the data I / O queue 126 and the storage device (L0, L1) exists in the data I / O queue 126, 140 from the data input / output queue 126 and dequeue the data (L0, L1) corresponding to the complete storage logical page. At this time, the host controller 124 may re-merge the data (L0, L1) corresponding to the complete storage logical page and transmit it as one I / O request. Then, when a third write request (L2-2, L2-3) that is twice the size of the host logical page occurs, the host controller 124 instructs the data input / output queue 126 to write data related to the third write request Since the complete storage logical page L2 exists in the data input / output queue 126, the data L2 corresponding to the complete storage logical page is fetched from the data input / output queue 126 and transmitted to the storage device 140 . When the host controller 124 uses the data input / output queue 126 as described above, the number of write data transfers is reduced (in the above example, the write data transfer count in FIG. 2A is reduced three times or two times in FIG. ), It is possible to increase the overall performance of the storage system 100 and extend the lifetime by avoiding the redundant write request to the same logical page in the continuous writing of the file system. In addition, there is an advantage that the number of full merges can be reduced in the flash conversion layer during garbage collection processing.

도 3은 도 1의 스토리지 시스템에서 파일시스템의 플러시 요청에 응답하여 호스트 컨트롤러가 동작하는 일 예를 나타내는 도면이다.3 is a diagram illustrating an example in which the host controller operates in response to a flush request of a file system in the storage system of FIG.

도 3을 참조하면, 파일시스템(122)으로부터 플러시 요청이 있는 경우, 호스트 컨트롤러(124)가 이를 처리하는 과정이 도시되어 있다.Referring to FIG. 3, there is shown a process by the host controller 124 for processing a flush request from the file system 122.

구체적으로, 도 3에서 호스트 컨트롤러(124)는 파일시스템(122)에서 쓰기 요청을 받고, 쓰기 요청과 관련된 쓰기 데이터를 데이터 입출력 큐(126)에 저장하며, 데이터 입출력 큐(126)에 저장된 데이터가 완전한 스토리지 논리 페이지를 포함하는 경우 혹은 파일시스템으로부터 플러시 요청이 있는 경우 스토리지 장치(140)로 데이터를 전송한다. (도 3에서, WR2은 파일시스템(122)으로부터 쓰기 요청 받은 쓰기 데이터를 나타내고, DT2은 스토리지 장치(140)로 전송한 쓰기 데이터를 나타내며, RD는 쓰기 데이터를 스토리지 장치(140)로 전송한 후 데이터 입출력 큐(126)에 저장되어 있는 데이터를 나타낸다.) 예를 들어, 스토리지 논리 페이지의 크기가 호스트 논리 페이지 크기의 4배인 경우로 가정하면, 파일시스템(122)으로부터 호스트 논리 페이지 크기의 2배 크기인 제 1 쓰기 요청(L0-0, L0-1)이 발생하는 경우, 호스트 컨트롤러(124)는 데이터 입출력 큐(126)에 제 1 쓰기 요청과 관련된 쓰기 데이터를 저장하고, 데이터 입출력 큐(126)에 완전한 스토리지 논리 페이지가 존재하지 않으므로 스토리지 장치(140)로 데이터를 전송하지 않는다. 이어서, 호스트 논리 페이지 크기의 8배 크기인 제 2 쓰기 요청(L0-2, L0-3, L1-0, L1-1, L1-2, L1-3, L2-0, L2-1)이 발생하는 경우, 호스트 컨트롤러(124)는 데이터 입출력 큐(126)에 제 2 쓰기 요청과 관련된 쓰기 데이터를 저장하고, 데이터 입출력 큐(126)에 완전한 스토리지 논리 페이지(L0, L1)가 존재하므로 스토리지 장치(140)에 완전한 스토리지 논리 페이지에 해당하는 데이터(L0, L1)를 데이터 입출력 큐(126)로부터 가져와서 전송한다. 이 때, 호스트 컨트롤러(124)는 완전한 스토리지 논리 페이지에 해당하는 데이터(L0, L1)를 재병합하여 하나의 I/O요청으로 전송할 수도 있다. 이어서 호스트 컨트롤러(124)가 파일시스템(122)로부터 플러시 요청을 받는 경우, 호스트 컨트롤러(124)는 데이터 입출력 큐(126)에 저장된 모든 데이터(L2-0, L2-1)를 데이터 입출력 큐(126)로부터 가져와서 스토리지 장치(140)로 전송한다. 이어서, 호스트 논리 페이지 크기의 2배 크기인 제 3 쓰기 요청(L3-0, L3-1)이 발생하는 경우, 호스트 컨트롤러(124)는 데이터 입출력 큐(126)에 제 3 쓰기 요청과 관련된 쓰기 데이터를 저장하고, 데이터 입출력 큐(126)에 완전한 스토리지 논리 페이지가 존재하지 않으므로 스토리지 장치(140)에 쓰기 데이터를 전송하지 않는다. 여기서 플러시 요청이 발생되는 경우 파일시스템(122)이 제 3 쓰기 요청을 함에 있어서, 제 2 쓰기 요청에서 요청했던 스토리지 논리 페이지에 사용할 수 있는 공간이 남아 있더라도(L2-2, L2-3), 해당 스토리지 논리 페이지를 건너 뛰고 사용하는 것을 예시하였다. 이는 남은 공간에 쓰기를 요청하면 해당 스토리지 논리 페이지에 복수의 쓰기 요청이 전송되고, 이로 인해 스토리지 컨트롤러 내에서 풀 병합 (full merge)가 발생할 수 있기 때문에 이를 피하기 위해서이다.3, the host controller 124 receives a write request from the file system 122, stores the write data associated with the write request in the data input / output queue 126, and the data stored in the data input / output queue 126 And transfers data to the storage device 140 when it contains a complete storage logical page or when there is a flush request from the file system. (In FIG. 3, WR2 indicates write data requested to be written from the file system 122, DT2 indicates write data transferred to the storage device 140, RD indicates write data to the storage device 140 For example, assuming that the size of the storage logical page is four times the size of the host logical page, it is assumed that the size of the host logical page is twice as large as the size of the host logical page from the file system 122 The host controller 124 stores the write data associated with the first write request in the data input / output queue 126, and the data input / output queue 126 (L0-0, L0-1) Does not have a complete storage logical page and thus does not transmit data to the storage device 140. [ Then, a second write request (L0-2, L0-3, L1-0, L1-1, L1-2, L1-3, L2-0, L2-1) that is eight times the size of the host logical page occurs The host controller 124 stores the write data associated with the second write request in the data I / O queue 126 and the storage device (L0, L1) exists in the data I / O queue 126, 140 from the data input / output queue 126 and transfers the data (L0, L1) corresponding to the complete storage logical page. At this time, the host controller 124 may re-merge the data (L0, L1) corresponding to the complete storage logical page and transmit it as one I / O request. Then, when the host controller 124 receives a flush request from the file system 122, the host controller 124 transfers all the data (L2-0, L2-1) stored in the data input / output queue 126 to the data input / output queue 126 And transfers it to the storage device 140. [ Then, when a third write request (L3-0, L3-1) that is twice the size of the host logical page occurs, the host controller 124 writes the write data related to the third write request And does not transmit write data to the storage device 140 because a complete storage logical page does not exist in the data input / output queue 126. In this case, when the flush request is generated, the file system 122 makes a third write request, and even if there is space available for the storage logical page requested in the second write request (L2-2, L2-3) I have shown how to skip and use storage logical pages. This is to avoid this because multiple write requests are sent to the storage logical page when a write request is made to the remaining space, which may cause a full merge in the storage controller.

도 4는 본 발명의 실시예들에 따른 스토리지 시스템의 쓰기 데이터 처리 방법을 나타내는 순서도이다.4 is a flowchart showing a write data processing method of a storage system according to embodiments of the present invention.

도 4를 참조하면, 파일시스템으로부터 새로운 쓰기 요청이 들어오는(Step S110) 경우, 호스트 컨트롤러는 새로운 쓰기 요청과 관련된 쓰기 데이터를 데이터 입출력 큐에 저장(Step S130)할 수 있다. 데이터 입출력 큐에 저장되어 있는 모든 데이터(데이터 입출력 큐에 저장되어 있는 이전 쓰기 요청과 관련된 잔류 데이터를 포함)를 완전한 스토리지 논리 페이지와 불완전한 스토리지 논리 페이지로 구분(Step S150)할 수 있다. 이 때, 호스트 컨트롤러는 상기 쓰기 요청에 응답하여 완전한 스토리지 논리 페이지에 해당하는 데이터를 스토리지 장치로 전송(Step S170)하는 반면에, 상기 쓰기 요청에 응답하여 불완전한 스토리지 논리 페이지에 해당하는 데이터를 데이터 입출력 큐에 잔류(Step S190)시킬 수 있다.Referring to FIG. 4, when a new write request is received from the file system (Step S110), the host controller may store the write data associated with the new write request in the data input / output queue (Step S130). All the data stored in the data I / O queue (including the residual data related to the previous write request stored in the data I / O queue) can be divided into a complete storage logical page and an incomplete storage logical page (Step S150). At this time, in response to the write request, the host controller transmits the data corresponding to the complete storage logical page to the storage device (Step S170). In response to the write request, the host controller transmits data corresponding to the incomplete storage logical page to the data input / output (Step S190).

구체적으로, 파일시스템은 블록 단위로 데이터를 읽고 새로운 쓰기 요청을 하며(Step S110), 호스트 컨트롤러는 파일시스템의 쓰기 요청과 관련된 쓰기 데이터를 호스트 논리 페이지 크기로 처리하여 데이터 입출력 큐에 저장(Step S130)할 수 있다. 일 실시예에서 호스트 컨트롤러는 쓰기 데이터가 완전한 스토리지 논리 페이지를 포함하는 경우, 완전한 스토리지 논리 페이지에 해당하는 데이터는 데이터 입출력 큐에 저장하지 않고 스토리지 장치로 전송(Step S112)할 수 있다. 완전한 스토리지 논리 페이지에 해당하는 데이터는 다음 쓰기 요청을 기다릴 필요가 없으므로 데이터 입출력 큐에 저장하지 않고 스토리지 장치로 전송함으로써 성능을 향상 시킬 수 있다. 일 실시예에서 새로운 쓰기 요청과 관련된 쓰기 데이터가 이전 쓰기 요청과 관련된 잔류 데이터에 해당하는 스토리지 논리 페이지의 데이터를 포함하는지 판단(Step S114)하여, 포함하고 있지 않은 경우 다음 쓰기 요청에서 잔류 데이터와 동일한 스토리지 논리 페이지인 데이터를 기대하기 어려우므로 잔류 데이터를 스토리지 장치로 전송(Step S116)할 수 있다. 여기서, 새로운 쓰기 요청과 관련된 쓰기 데이터가 이전 쓰기 요청과 관련된 잔류 데이터에 해당하는 스토리지 논리 페이지의 데이터를 포함하는지 판단(Step S114)하는 단계와 잔류 데이터를 스토리지 장치로 전송(Step S116)하는 단계는 데이터 입출력 큐에 저장(Step S130)하는 단계와 순서에 관계없이 판단되어 전송할 수 있다. 호스트 컨트롤러는 데이터 입출력 큐에 저장되어 있는 모든 데이터를 완전한 스토리지 논리 페이지와 불완전한 스토리지 논리 페이지로 구분(Step S150)할 수 있다. 일 실시예에서, 완전한 스토리지 논리 페이지인지 여부는 스토리지 논리 페이지의 마지막 부분에 해당하는 데이터를 포함하는 경우 완전한 스토리지 논리 페이지로 판단하고, 그렇지 않은 경우 불완전한 스토리지 논리 페이지로 판단할 수 있다. 일 실시예에서, 데이터 입출력 큐에 저장되어 있는 데이터가 완전한 스토리지 논리 페이지인지 여부는 스토리지 논리 페이지 크기와 데이터 입출력 큐 내에서 동일한 스토리지 논리 페이지에 해당하는 것으로 판단되는 데이터의 크기를 비교하여, 크기가 동일한 경우 완전한 스토리지 논리 페이지로 판단하고, 스토리지 논리 페이지 크기보다 데이터 입출력 큐 내에서 동일한 스토리지 논리 페이지에 해당하는 것으로 판단되는 데이터의 크기가 작은 경우 불완전한 스토리지 논리 페이지라고 판단할 수 있다. 이후, 호스트 컨트롤러는 완전한 스토리지 논리 페이지에 해당하는 데이터를 데이터 입출력 큐로부터 가져와서 스토리지 장치로 전송(Step S170)할 수 있다. 일 실시예에서, 호스트 컨트롤러는 완전한 스토리지 논리 페이지에 해당하는 데이터들을 하나의 I/O 요청으로 재병합한 후 스토리지 장치로 전송할 수 있다. 반면에, 호스트 컨트롤러는 불완전한 스토리지 논리 페이지에 해당하는 데이터를 데이터 입출력 큐에 잔류(Step S190)시킬 수 있다. 한편, 실시예에 따라, 파일시스템으로부터 플러시 요청이 호스트 컨트롤러로 들어오는 경우, 호스트 컨트롤러는 모든 쓰기 요청과 관련된 데이터를 처리하기 위해 데이터 입출력 큐에 저장되어 있는 모든 데이터를 스토리지 장치로 전송할 수 있다.Specifically, the file system reads data on a block-by-block basis and makes a new write request (Step S110). The host controller processes the write data related to the write request of the file system as a host logical page size and stores it in the data input / )can do. In one embodiment, if the write data includes a complete storage logical page, the host controller may transmit the data corresponding to the complete storage logical page to the storage device without storing the data in the data input / output queue (Step S112). Data corresponding to a complete storage logical page does not have to wait for the next write request, so it can improve performance by sending it to the storage device without storing it in the data I / O queue. In one embodiment, it is determined whether the write data associated with the new write request includes data of the storage logical page corresponding to the previous write request (Step S114). If the write data does not include the same data as the residual data in the next write request Since it is difficult to expect data as a storage logical page, it is possible to transfer the residual data to the storage device (Step S116). Here, the step of determining whether the write data related to the new write request includes the data of the storage logical page corresponding to the residual data related to the previous write request (Step S114) and the step of transferring the residual data to the storage device And storing it in the data input / output queue (Step S130), regardless of the order and the step. The host controller can divide all the data stored in the data I / O queue into a complete storage logical page and an incomplete storage logical page (Step S150). In one embodiment, determining whether a complete storage logical page is a complete storage logical page if it includes data corresponding to the last portion of the storage logical page, or otherwise determining an incomplete storage logical page. In one embodiment, whether the data stored in the data I / O queue is a complete storage logical page can be determined by comparing the size of the storage logical page with the size of data determined to correspond to the same storage logical page in the data input / output queue, It can be determined that the storage logical page is an incomplete storage logical page if the size of data judged to correspond to the same storage logical page in the data input / output queue is smaller than the storage logical page size. Then, the host controller can fetch data corresponding to the complete storage logical page from the data input / output queue and transfer it to the storage device (Step S170). In one embodiment, the host controller may re-merge the data corresponding to the complete storage logical page into one I / O request and then transfer it to the storage device. On the other hand, the host controller can leave the data corresponding to the incomplete storage logical page in the data input / output queue (Step S190). Meanwhile, according to an embodiment, when a flush request is received from the file system to the host controller, the host controller may transmit all data stored in the data input / output queue to the storage device to process data associated with all write requests.

이상, 본 발명의 실시예들에 따른 스토리지 시스템 및 이의 쓰기 데이터 처리 방법에 대해 도면을 참조하여 설명하였지만, 상기 설명은 예시적인 것으로서 본 발명의 기술적 사상을 벗어나지 않는 범위에서 해당 기술 분야에서 통상의 지식을 가진 자에 의하여 수정 및 변경될 수 있을 것이다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. The present invention may be modified and changed by those skilled in the art.

본 발명은 스토리지 장치(즉, 플래시 메모리 장치)를 구비한 스토리지 시스템에 적용될 수 있다. 예를 들어, 본 발명은 솔리드 스테이트 드라이브(SSD), 임베디드 멀티미디어 카드(EMMC), 시큐어 디지털 카드(SD카드) 등을 구비한 스토리지 시스템에 적용될 수 있다.The present invention can be applied to a storage system having a storage device (i.e., a flash memory device). For example, the present invention can be applied to a storage system having a solid state drive (SSD), an embedded multimedia card (EMMC), a secure digital card (SD card), and the like.

이상에서는 본 발명의 예시적인 실시예들을 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it will be understood by those of ordinary skill in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. It will be understood that the invention may be modified and varied without departing from the scope of the invention.

100: 스토리지 시스템 120: 호스트 장치
122: 파일시스템 124: 호스트 컨트롤러
126: 데이터 입출력 큐 140: 스토리지 장치
142: 스토리지 컨트롤러 146: 플래시 메모리
100: storage system 120: host device
122: File system 124: Host controller
126: Data input / output queue 140: Storage device
142: Storage controller 146: Flash memory

Claims (12)

스토리지 플래시 변환 레이어를 이용하여 플래시 메모리를 제어하는 스토리지 컨트롤러를 구비한 스토리지 장치 및 상기 스토리지 컨트롤러와 인터액션(interaction)을 수행하는 호스트 컨트롤러를 구비한 호스트 장치를 포함하는 스토리지 시스템의 쓰기 데이터 처리 방법에 있어서,
상기 호스트 컨트롤러가 파일시스템으로부터 쓰기 요청을 수신하는 경우, 상기 호스트 컨트롤러가 상기 쓰기 요청과 관련된 쓰기 데이터를 데이터 입출력 큐(queue)에 저장하는 단계;
상기 호스트 컨트롤러가 상기 데이터 입출력 큐에 저장되어 있는 모든 데이터를 완전한(full) 스토리지 논리 페이지와 불완전한 스토리지 논리 페이지로 구분하는 단계;
상기 호스트 컨트롤러가 상기 쓰기 요청에 응답하여 상기 완전한 스토리지 논리 페이지에 해당하는 데이터를 상기 스토리지 장치로 전송하는 단계; 및
상기 호스트 컨트롤러가 상기 쓰기 요청에 응답하여 상기 불완전한 스토리지 논리 페이지에 해당하는 데이터를 상기 데이터 입출력 큐에 잔류시키는 단계를 포함하는 것을 특징으로 하는 스토리지 시스템의 쓰기 데이터 처리 방법.
There is provided a method of processing write data in a storage system including a storage device having a storage controller for controlling a flash memory using a storage flash conversion layer and a host device having a host controller for performing an interaction with the storage controller, ,
When the host controller receives a write request from a file system, the host controller stores write data associated with the write request in a data input / output queue;
Dividing all data stored in the data input / output queue into a full storage logical page and an incomplete storage logical page;
The host controller sending data corresponding to the complete storage logical page to the storage device in response to the write request; And
And the host controller responding to the write request to cause the data corresponding to the incomplete storage logical page to remain in the data input / output queue.
제 1 항에 있어서, 상기 쓰기 데이터가 상기 완전한 스토리지 논리 페이지를 포함하는 경우, 상기 완전한 스토리지 논리 페이지에 해당하는 데이터는 상기 데이터 입출력 큐에 저장하지 않고 상기 스토리지 장치로 전송되는 것을 특징으로 하는 스토리지 시스템의 쓰기 데이터 처리 방법.The storage system according to claim 1, wherein, when the write data includes the complete storage logical page, data corresponding to the complete storage logical page is transferred to the storage device without being stored in the data input / Of the write data. 제 1 항에 있어서, 상기 쓰기 데이터가 상기 데이터 입출력 큐에 저장되어 있는 이전 쓰기 요청과 관련된 잔류 데이터에 해당하는 스토리지 논리 페이지의 데이터를 포함하고 있지 않은 경우, 상기 잔류 데이터는 상기 스토리지 장치로 전송되는 것을 특징으로 하는 스토리지 시스템의 쓰기 데이터 처리 방법.The method of claim 1, wherein if the write data does not include data of a storage logical page corresponding to a residual data associated with a previous write request stored in the data input / output queue, the residual data is transmitted to the storage device Wherein the write data is stored in the storage system. 제 1 항에 있어서, 상기 완전한 스토리지 논리 페이지와 상기 불완전한 스토리지 논리 페이지는 상기 스토리지 장치에 설정되어 있는 스토리지 논리 페이지 크기에 기초하여 구분되는 것을 특징으로 하는 스토리지 시스템의 쓰기 데이터 처리 방법.2. The method of claim 1, wherein the complete storage logical page and the incomplete storage logical page are distinguished based on a storage logical page size set in the storage device. 제 1 항에 있어서,
상기 파일시스템이 플러시(flush) 요청을 하는 경우, 상기 데이터 입출력 큐에 저장되어 있는 모든 데이터를 상기 스토리지 장치로 전송하는 단계를 더 포함하는 것을 특징으로 하는 스토리지 시스템의 쓰기 데이터 처리 방법.
The method according to claim 1,
Further comprising the step of transmitting all data stored in the data input / output queue to the storage device when the file system makes a flush request.
적어도 하나 이상의 플래시 메모리 및 상기 플래시 메모리를 제어하는 스토리지 컨트롤러를 구비한 스토리지 장치; 및
파일시스템 및 상기 스토리지 컨트롤러와 인터액션(interaction)을 수행하는 호스트 컨트롤러를 구비한 호스트 장치를 포함하고,
상기 호스트 컨트롤러는 상기 파일시스템이 쓰기 요청을 하는 경우, 상기 쓰기 요청과 관련된 쓰기 데이터를 데이터 입출력 큐에 저장하고, 상기 데이터 입출력 큐에 저장되어 있는 모든 데이터를 완전한 스토리지 논리 페이지와 불완전한 스토리지 논리 페이지로 구분하여 상기 완전한 스토리지 논리 페이지에 해당하는 데이터를 상기 스토리지 장치로 전송하며,
상기 스토리지 컨트롤러는 스토리지 플래시 변환 레이어를 이용하여 상기 플래시 메모리에 대해 읽기 동작, 쓰기 동작, 소거 동작, 병합 동작, 카피백 동작, 컴팩션 동작, 가비지 콜렉션 동작, 웨어 레벨링 동작 중 적어도 하나 이상을 수행하는 것을 특징으로 하는 스토리지 시스템.
A storage device having at least one flash memory and a storage controller for controlling the flash memory; And
A host system having a file system and a host controller for performing an interaction with the storage controller,
Wherein the host controller stores write data associated with the write request in a data input / output queue when the file system makes a write request and writes all data stored in the data input / output queue to a complete storage logical page and an incomplete storage logical page And transmits data corresponding to the complete storage logical page to the storage device,
The storage controller performs at least one of a read operation, a write operation, an erase operation, a merge operation, a copyback operation, a compaction operation, a garbage collection operation, and a wear leveling operation with respect to the flash memory using a storage flash conversion layer Lt; / RTI >
제 6 항에 있어서, 상기 호스트 컨트롤러는 상기 쓰기 데이터가 상기 완전한 스토리지 논리 페이지를 포함하는 경우, 상기 완전한 스토리지 논리 페이지에 해당하는 데이터를 상기 데이터 입출력 큐에 저장하지 않고 상기 스토리지 장치로 전송하는 것을 특징으로 하는 스토리지 시스템.The host controller according to claim 6, wherein, when the write data includes the complete storage logical page, the host controller transfers the data corresponding to the complete storage logical page to the storage device without storing the data in the data input / output queue Storage system. 제 6 항에 있어서, 상기 호스트 컨트롤러는 상기 쓰기 데이터가 상기 데이터 입출력 큐에 저장되어 있는 이전 쓰기 요청과 관련된 잔류 데이터에 해당하는 스토리지 논리 페이지의 데이터를 포함하고 있지 않은 경우, 상기 잔류 데이터를 상기 스토리지 장치로 전송하는 것을 특징으로 하는 스토리지 시스템.7. The method of claim 6, wherein if the write data does not include data of a storage logical page corresponding to a residual data associated with a previous write request stored in the data input / output queue, To the storage device. 제 6 항에 있어서, 상기 호스트 컨트롤러는 상기 완전한 스토리지 논리 페이지와 상기 불완전한 스토리지 논리 페이지를 상기 스토리지 장치에 설정되어 있는 스토리지 논리 페이지 크기에 기초하여 구분하는 것을 특징으로 하는 스토리지 시스템.7. The storage system of claim 6, wherein the host controller identifies the complete storage logical page and the incomplete storage logical page based on a storage logical page size set in the storage device. 제 6 항에 있어서, 상기 호스트 컨트롤러는 상기 파일시스템이 플러시 요청을 하는 경우, 상기 데이터 입출력 큐에 저장되어 있는 모든 데이터를 상기 스토리지 장치로 전송하는 것을 특징으로 하는 스토리지 시스템.The storage system according to claim 6, wherein the host controller transmits all data stored in the data input / output queue to the storage device when the file system makes a flush request. 제 6 항에 있어서, 상기 호스트 컨트롤러는 디바이스 드라이버에 포함된 호스트 플래시 변환 레이어에 구현되는 것을 특징으로 하는 스토리지 시스템.The storage system according to claim 6, wherein the host controller is implemented in a host flash conversion layer included in a device driver. 제 6 항에 있어서, 상기 호스트 컨트롤러는 호스트 플래시 변환 레이어를 포함하지 않는 디바이스 드라이버에 구현되는 것을 특징으로 하는 스토리지 시스템.7. The storage system of claim 6, wherein the host controller is implemented in a device driver that does not include a host flash conversion layer.
KR1020130042152A 2013-04-17 2013-04-17 Storage system and method of processing write data KR101478168B1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020130042152A KR101478168B1 (en) 2013-04-17 2013-04-17 Storage system and method of processing write data
PCT/KR2014/000867 WO2014171618A1 (en) 2013-04-17 2014-01-29 Storage system and method for processing writing data of storage system
US14/785,073 US20160162187A1 (en) 2013-04-17 2014-01-29 Storage System And Method For Processing Writing Data Of Storage System

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130042152A KR101478168B1 (en) 2013-04-17 2013-04-17 Storage system and method of processing write data

Publications (2)

Publication Number Publication Date
KR20140124537A KR20140124537A (en) 2014-10-27
KR101478168B1 true KR101478168B1 (en) 2014-12-31

Family

ID=51731529

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130042152A KR101478168B1 (en) 2013-04-17 2013-04-17 Storage system and method of processing write data

Country Status (3)

Country Link
US (1) US20160162187A1 (en)
KR (1) KR101478168B1 (en)
WO (1) WO2014171618A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11347634B2 (en) 2020-03-31 2022-05-31 SK Hynix Inc. Memory system performing write-same operation and operating method thereof

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9753936B1 (en) * 2014-12-01 2017-09-05 Amazon Technologies, Inc. Metering data in distributed storage environments
CN104679609B (en) * 2015-02-11 2017-12-15 北京配天技术有限公司 Digital control system
KR20170061218A (en) * 2015-11-25 2017-06-05 에스케이하이닉스 주식회사 Memory system and operating method of memory system
US10235397B1 (en) 2016-09-30 2019-03-19 EMC IP Holding Company LLC Trees and graphs in flash memory
US10884926B2 (en) 2017-06-16 2021-01-05 Alibaba Group Holding Limited Method and system for distributed storage using client-side global persistent cache
US10877898B2 (en) 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
TWI639921B (en) 2017-11-22 2018-11-01 大陸商深圳大心電子科技有限公司 Command processing method and storage controller using the same
US10891239B2 (en) 2018-02-07 2021-01-12 Alibaba Group Holding Limited Method and system for operating NAND flash physical space to extend memory capacity
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
US10831404B2 (en) 2018-02-08 2020-11-10 Alibaba Group Holding Limited Method and system for facilitating high-capacity shared memory using DIMM from retired servers
US11379155B2 (en) 2018-05-24 2022-07-05 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
US11816043B2 (en) 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
US10871921B2 (en) * 2018-07-30 2020-12-22 Alibaba Group Holding Limited Method and system for facilitating atomicity assurance on metadata and data bundled storage
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10852948B2 (en) 2018-10-19 2020-12-01 Alibaba Group Holding System and method for data organization in shingled magnetic recording drive
US10795586B2 (en) 2018-11-19 2020-10-06 Alibaba Group Holding Limited System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
US10970212B2 (en) 2019-02-15 2021-04-06 Alibaba Group Holding Limited Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones
US11061834B2 (en) 2019-02-26 2021-07-13 Alibaba Group Holding Limited Method and system for facilitating an improved storage system by decoupling the controller from the storage medium
US10891065B2 (en) 2019-04-01 2021-01-12 Alibaba Group Holding Limited Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10908960B2 (en) 2019-04-16 2021-02-02 Alibaba Group Holding Limited Resource allocation based on comprehensive I/O monitoring in a distributed storage system
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11074124B2 (en) 2019-07-23 2021-07-27 Alibaba Group Holding Limited Method and system for enhancing throughput of big data analysis in a NAND-based read source storage
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US10923156B1 (en) 2020-02-19 2021-02-16 Alibaba Group Holding Limited Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US11144250B2 (en) 2020-03-13 2021-10-12 Alibaba Group Holding Limited Method and system for facilitating a persistent memory-centric system
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6055603A (en) * 1997-09-18 2000-04-25 Emc Corporation Method and apparatus for performing pre-request operations in a cached disk array storage system
JP2006092169A (en) * 2004-09-22 2006-04-06 Toshiba Corp Memory controller, memory device and control method for memory controller

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8959280B2 (en) * 2008-06-18 2015-02-17 Super Talent Technology, Corp. Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
KR101175250B1 (en) * 2009-06-29 2012-08-21 에스케이하이닉스 주식회사 NAND Flash Memory device and controller thereof, Write operation method
US8601222B2 (en) * 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
KR101191650B1 (en) * 2010-10-04 2012-10-17 한국과학기술원 Apparatus and method for mapping the data address in NAND flash memory
KR20140042431A (en) * 2012-09-28 2014-04-07 삼성전자주식회사 Computing system and method for managing data in the system
US8526234B1 (en) * 2012-11-16 2013-09-03 Avalanche Technology, Inc. Controller management of memory array of storage device using magnetic random access memory (MRAM)

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6055603A (en) * 1997-09-18 2000-04-25 Emc Corporation Method and apparatus for performing pre-request operations in a cached disk array storage system
JP2006092169A (en) * 2004-09-22 2006-04-06 Toshiba Corp Memory controller, memory device and control method for memory controller

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11347634B2 (en) 2020-03-31 2022-05-31 SK Hynix Inc. Memory system performing write-same operation and operating method thereof

Also Published As

Publication number Publication date
WO2014171618A1 (en) 2014-10-23
KR20140124537A (en) 2014-10-27
US20160162187A1 (en) 2016-06-09

Similar Documents

Publication Publication Date Title
KR101478168B1 (en) Storage system and method of processing write data
TWI700586B (en) Computer system and control method of storage device
CN109240938B (en) Memory system and control method for controlling nonvolatile memory
EP2631916B1 (en) Data deletion method and apparatus
US8898376B2 (en) Apparatus, system, and method for grouping data stored on an array of solid-state storage elements
US9753847B2 (en) Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
JP6007332B2 (en) Storage system and data write method
US20150127889A1 (en) Nonvolatile memory system
US20080307164A1 (en) Method And System For Memory Block Flushing
JP4977703B2 (en) Non-volatile memory with scheduled playback operation
US9830106B2 (en) Management of memory array with magnetic random access memory (MRAM)
JP2012108912A (en) Data storage device, user device, and address mapping method thereof
KR20110081150A (en) Multiple performance mode memory system
KR101649357B1 (en) Data storage device, operating method thereof, and storage server including the same
US11422930B2 (en) Controller, memory system and data processing system
US20100318726A1 (en) Memory system and memory system managing method
JP2011070365A (en) Memory system
KR20160139864A (en) Non-volatile memory system
KR20220060790A (en) Memory system
JP2009512066A (en) Conversion data unit storage in memory system with fixed size storage block
US10387579B2 (en) Data pattern detecting device, semiconductor device including the same, and operating method thereof
CN113495852A (en) Apparatus and method for controlling mapping data in memory system
KR101369408B1 (en) Storage system and method of transmitting data between a host device and a storage device
KR101363422B1 (en) Non-volatile memory system
US11550502B2 (en) Apparatus and method for controlling multi-stream program operations performed in a memory block included in a memory system

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
FPAY Annual fee payment

Payment date: 20171211

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181207

Year of fee payment: 5