WO2014171618A1 - Storage system and method for processing writing data of storage system - Google Patents

Storage system and method for processing writing data of storage system Download PDF

Info

Publication number
WO2014171618A1
WO2014171618A1 PCT/KR2014/000867 KR2014000867W WO2014171618A1 WO 2014171618 A1 WO2014171618 A1 WO 2014171618A1 KR 2014000867 W KR2014000867 W KR 2014000867W WO 2014171618 A1 WO2014171618 A1 WO 2014171618A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
storage
logical page
write
output queue
Prior art date
Application number
PCT/KR2014/000867
Other languages
French (fr)
Korean (ko)
Inventor
이재수
Original Assignee
주식회사 디에이아이오
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 디에이아이오 filed Critical 주식회사 디에이아이오
Priority to US14/785,073 priority Critical patent/US20160162187A1/en
Publication of WO2014171618A1 publication Critical patent/WO2014171618A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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
    • 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

In a method for processing writing data of a storage system, when a file system makes a writing request, writing data related to the writing request is stored in a data input and output queue, all data stored in the data input and output queue is classified into a complete storage logic page and an incomplete storage logic page, data corresponding to the complete storage logic page is transmitted to a storage device in response to the writing request, and data corresponding to the incomplete storage logic page remains in the data input and output queue in response to the writing request.

Description

스토리지 시스템 및 스토리지 시스템의 쓰기 데이터 처리 방법How storage systems and write data are handled by storage systems
본 발명은 반도체 메모리 시스템에 관한 것으로, 보다 상세하게는 호스트 장치와 스토리지 장치(예를 들어, 플래시 메모리 장치)로 구성된 스토리지 시스템 및 이의 쓰기 데이터 처리 방법에 관한 것이다.The present invention relates to a semiconductor memory system, and more particularly, to a storage system comprising a host device and a storage device (eg, a flash memory device) and a method of processing write data thereof.
반도체 메모리 장치는 전원이 공급되지 않는 상태에서 데이터를 보존할 수 있는지에 따라 휘발성 메모리 장치와 비휘발성 메모리 장치로 구분될 수 있다. 최근에는, 반도체 메모리 장치의 소형화 및 대용량 추세에 따라, 비휘발성 메모리 장치 중에서 낸드 플래시 메모리 장치(NAND flash memory device)가 소형화 및 대용량에 적합하여 널리 사용되고 있고, 낸드 플래시 메모리 장치 형태의 스토리지 장치(예를 들어, 솔리드 스테이트 드라이브(solid state drive; SSD) 등)가 하드 디스크 드라이브(hard disk drive; HDD)를 대체하고 있는 추세이다. 이 때, 스토리지 장치는 적어도 하나 이상의 낸드 플래시 메모리 및 이를 제어하기 위한 스토리지 컨트롤러를 포함할 수 있고, 호스트 장치는 파일시스템(file system) 및 상기 스토리지 컨트롤러와 인터액션(interaction)을 수행하기 위한 호스트 컨트롤러를 포함할 수 있다.The semiconductor memory device may be classified into a volatile memory device and a nonvolatile memory device according to whether data can be stored in a state where power is not supplied. Recently, according to the trend of miniaturization and large capacity of semiconductor memory devices, NAND flash memory devices (NAND flash memory device) among nonvolatile memory devices are widely used for miniaturization and large capacity, and storage devices in the form of NAND flash memory devices (eg For example, solid state drives (SSDs) are replacing hard disk drives (HDDs). In this case, 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. It may include.
최근, 낸드 플래시 메모리에 대한 읽기(read) 동작, 쓰기(write) 동작, 소거(erase) 동작, 병합(merge) 동작, 카피백(copyback) 동작, 컴팩션(compaction) 동작, 가비지 콜렉션(garbage collection) 동작, 웨어 레벨링(wear leveling) 동작, 어드레스 맵핑(address mapping) 동작 등을 제어함으로써 파일시스템을 지원하는 플래시 변환 레이어(flash translation layer; FTL)의 기능을 스토리지 장치와 호스트 장치에 분산시키려는 시도가 이루어지고 있다. 예를 들어, 호스트 컨트롤러에 호스트 플래시 변환 레이어가 구비될 수 있고, 스토리지 컨트롤러에 스토리지 플래시 변환 레이어가 구비될 수 있다. Recently, a read operation, a write operation, an erase operation, a merge operation, a copyback operation, a compaction operation, and a garbage collection of a NAND flash memory are performed. Attempts to distribute the functionality of the flash translation layer (FTL) that supports the filesystem to the storage device and the host device by controlling operations, wear leveling, address mapping operations, etc. It is done. For example, the host controller may include a host flash translation layer, and the storage controller may include a storage flash translation layer.
이 때, 호스트 장치에서 사용하는 읽기 동작과 쓰기 동작의 기본 단위는 블록 단위(예를 들어, 1KB, 2KB, 4KB 등)이며 호스트 장치에서 사용하는 호스트 논리 페이지 크기는 파일시스템의 블록 크기를 고려하여 설정한다. 반면에, 스토리지 장치에서 사용하는 읽기 동작과 쓰기 동작의 기본 단위는 플래시 메모리의 물리 페이지의 배수(예를 들어, 16KB 이상)이며, 최근에는 스토리지 장치의 연속 쓰기 성능 향상과 매핑 테이블 크기를 감소시키는 등의 효과를 위해 스토리지 장치의 논리 페이지 크기가 커지고 있다. 이에 따라, 스토리지 논리 페이지의 크기가 호스트 논리 페이지의 크기보다 큰 경향이 있다.In this case, the basic units of read and write operations used by the host device are block units (for example, 1 KB, 2 KB, 4 KB, etc.), and the host logical page size used by the host device is determined by considering the block size of the file system. Set it. On the other hand, the basic unit of read and write operations used by the storage device is a multiple of the physical page of flash memory (for example, 16 KB or larger), which has recently improved the storage device's continuous write performance and reduced the mapping table size. For example, the logical page size of a storage device is increasing. Accordingly, the size of the storage logical page tends to be larger than the size of the host logical page.
이와 같이, 스토리지 논리 페이지의 크기가 호스트 논리 페이지의 크기보다 커짐에 따라 동일한 스토리지 논리 페이지에 대한 쓰기가 복수의 쓰기로 요청되는 경우가 빈번히 발생한다. 이는 덮어쓰기가 지원되지 않고, 페이지 단위로 읽기 동작, 쓰기 동작을 수행하고 블록 단위로 삭제 동작을 수행하는 플래시 메모리의 특성상 성능을 크게 저하시키고 수명을 단축시키는 문제점을 가지고 있다.As such, as the size of the storage logical page becomes larger than the size of the host logical page, writes to the same storage logical page are frequently requested as a plurality of writes. This is a problem in that the overwrite is not supported and the performance of the flash memory is greatly reduced and the life is shortened due to the characteristics of the flash memory that performs read operation, write operation in page units, and erase operations in block units.
본 발명의 일 목적은 스토리지 장치에서 동일한 스토리지 논리 페이지에 대하여 쓰기 동작이 여러 차례에 걸쳐서 나누어 수행되는 것을 방지할 수 있는 스토리지 시스템의 쓰기 데이터 처리 방법을 제공하는 것이다.An object of the present invention is to provide a write data processing method of a storage system capable of preventing a write operation from being repeatedly performed multiple times on the same storage logical page in a storage device.
본 발명의 다른 목적은 상기 쓰기 데이터 처리 방법을 채용한 스토리지 시스템을 제공하는 것이다.Another object of the present invention is to provide a storage system employing the write data processing method.
다만, 본 발명의 목적은 상기 목적들로 한정되는 것이 아니며, 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위에서 다양하게 확장될 수 있을 것이다.However, the object of the present invention is not limited to the above objects, and may be variously expanded within a range without departing from the spirit and scope of the present invention.
본 발명의 일 목적을 달성하기 위하여, 본 발명의 실시예들에 따른 스토리지 시스템의 쓰기 데이터 처리 방법은, 파일시스템이 하나 또는 그 이상의 블록에 대한 쓰기 요청을 하는 경우, 호스트 컨트롤러는 상기 쓰기 요청과 관련된 쓰기 데이터를 데이터 입출력 큐(queue)에 저장하고, 상기 데이터 입출력 큐에 저장되어 있는 모든 데이터를 완전한(full) 스토리지 논리 페이지와 불완전한 스토리지 논리 페이지로 구분하여 상기 완전한 스토리지 논리 페이지에 해당하는 데이터는 스토리지 장치로 전송하고 상기 불완전한 스토리지 논리 페이지에 해당하는 데이터는 다음 쓰기 데이터와 병합되어 완전한 스토리지 논리 페이지가 될 수 있도록 상기 데이터 입출력 큐에 잔류시키고 다음 쓰기 데이터를 기다리도록 하는 것이다.In order to achieve the object of the present invention, a write data processing method of a storage system according to an embodiment of the present invention, when the file system writes a request for one or more blocks, the host controller and the write request; The write data is stored in a data I / O queue, and all data stored in the data I / O queue are divided into full storage logical pages and incomplete storage logical pages. The data transferred to the storage device and corresponding to the incomplete storage logical page are 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 may be transmitted to the storage device without being stored in the data input / output queue.
일 실시예에 의하면, 상기 쓰기 데이터가 상기 데이터 입출력 큐에 저장되어 있는 이전 쓰기 요청과 관련된 잔류 데이터에 해당하는 스토리지 논리 페이지의 데이터를 포함하고 있지 않은 경우, 상기 잔류 데이터를 추가로 잔류시켜도 완전한 스토리지 논리 페이지가 될 가능성이 낮으므로, 상기 잔류 데이터를 불완전한 논리 페이지로 상기 스토리지 장치에 전송할 수 있다.According to an embodiment, when the write data does not include data of a storage logical page corresponding to residual data associated with a previous write request stored in the data input / output queue, the remaining data may be completely stored even if the residual data is further retained. Since it is unlikely to be a logical page, the residual data may be transmitted to the storage device as an incomplete logical page.
일 실시예에 의하면, 상기 완전한 스토리지 논리 페이지와 상기 불완전한 스토리지 논리 페이지는 상기 스토리지 장치에 설정되어 있는 스토리지 논리 페이지 크기에 기초하여 구분할 수 있다.In example embodiments, the complete storage logical page and the incomplete storage logical page may be classified based on a storage logical page size set in the storage device.
일 실시예에 의하면, 상기 파일시스템이 플러시(flush) 요청을 하는 경우, 상기 데이터 입출력 큐에 저장되어 있는 모든 데이터를 상기 스토리지 장치로 전송할 수 있다.According to an embodiment, when the file system requests a flush, all data stored in the data input / output queue may be transmitted to the storage device.
본 발명의 다른 목적을 달성하기 위하여, 발명의 실시예들에 따른 스토리지 시스템은 스토리지 장치와 호스트 장치를 포함할 수 있다. 상기 스토리지 장치는 적어도 하나 이상의 플래시 메모리 및 상기 플래시 메모리를 제어하는 스토리지 컨트롤러를 구비할 수 있다. 상기 호스트 장치는 파일시스템 및 상기 스토리지 컨트롤러와 인터액션(interaction)을 수행하는 호스트 컨트롤러를 구비할 수 있다. 이 때, 상기 호스트 컨트롤러는 상기 파일시스템이 쓰기 요청을 하는 경우, 상기 쓰기 요청과 관련된 쓰기 데이터를 데이터 입출력 큐에 저장하고, 상기 데이터 입출력 큐에 저장되어 있는 모든 데이터를 완전한 스토리지 논리 페이지와 불완전한 스토리지 논리 페이지로 구분하여 상기 완전한 스토리지 논리 페이지에 해당하는 데이터를 상기 스토리지 장치로 전송할 수 있다.In order to achieve another object of the present invention, a storage system according to embodiments of the present invention may include a storage device and a host device. The storage device may include at least one flash memory and a storage controller to control the flash memory. The host device may include a file system and a host controller that interacts with the storage controller. At this time, when the file system makes a write request, the host controller stores write data associated with 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. The data corresponding to the complete storage logical page may be transmitted to the storage device by dividing into logical pages.
일 실시예에 의하면, 상기 호스트 컨트롤러는 상기 쓰기 데이터가 상기 완전한 스토리지 논리 페이지를 포함하는 경우, 상기 완전한 스토리지 논리 페이지에 해당하는 데이터를 상기 데이터 입출력 큐에 저장하지 않고 상기 스토리지 장치로 전송할 수 있다.According to an embodiment, when the write data includes the complete storage logical page, the host controller may transmit data corresponding to the complete storage logical page to the storage device without storing the data corresponding to the complete storage logical page.
일 실시예에 의하면, 상기 호스트 컨트롤러는 상기 쓰기 데이터가 상기 데이터 입출력 큐에 저장되어 있는 이전 쓰기 요청과 관련된 잔류 데이터에 해당하는 스토리지 논리 페이지의 데이터를 포함하고 있지 않은 경우, 상기 잔류 데이터를 상기 스토리지 장치로 전송할 수 있다.According to an embodiment of the present disclosure, when the write data does not include data of a storage logical page corresponding to residual data associated with a previous write request stored in the data input / output queue, the host controller stores the residual data in the storage. Can be sent to the device.
일 실시예에 의하면, 상기 호스트 컨트롤러는 상기 완전한 스토리지 논리 페이지와 상기 불완전한 스토리지 논리 페이지를 상기 스토리지 장치에 설정되어 있는 스토리지 논리 페이지 크기에 기초하여 구분할 수 있다.In example embodiments, the host controller may classify the complete storage logical page and the incomplete storage logical page based on a storage logical page size set in the storage device.
일 실시예에 의하면, 상기 호스트 컨트롤러는 상기 파일시스템이 플러시(flush) 요청을 하는 경우, 상기 데이터 입출력 큐에 저장되어 있는 모든 데이터를 상기 스토리지 장치로 전송할 수 있다.According to an embodiment, when the file system requests a flush, 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 flash memory increases, the size of the storage logical page tends to be larger than that of the host logical page. As a result, a write request for the same storage logical page may be requested as a plurality of writes in response to a write request of the file system.
호스트 논리 페이지의 크기보다 스토리지 논리 페이지의 크기가 큰 경우, 본 발명의 실시예에 따른 스토리지 시스템과 스토리지 시스템의 쓰기 데이터 처리 방법을 이용하면 호스트 컨트롤러에 데이터 입출력 큐를 구비하여 쓰기 요청과 관련된 쓰기 데이터를 스토리지 논리 페이지 크기 단위로 합쳐서 전송할 수 있다. 이는 불필요한 쓰기 요청 전송을 감소시키고, 스토리지 FTL에서 가비지 콜렉션(garbage collection)처리 시 풀 병합(full merge) 횟수를 줄여줌으로써 상기 스토리지 시스템의 성능을 크게 향상시키고 스토리지 시스템의 수명을 늘릴 수 있다.If the size of the storage logical page is larger than the size of the host logical page, using the storage system and the write data processing method of the storage system according to an embodiment of the present invention, the write data associated with the write request is provided with a data input / output queue in the host controller. Can be transferred in units of storage logical page sizes. This can reduce unnecessary transfer of write requests and can significantly improve the performance of the storage system and increase the lifespan of the storage system by reducing the number of full merges during 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 within a range without departing from the spirit and scope of the present invention.
도 1은 본 발명의 실시예들에 따른 스토리지 시스템을 나타내는 블록도이다.1 is a block diagram illustrating a storage system according to example embodiments.
도 2a는 종래의 스토리지 시스템에서 파일시스템의 쓰기 요청에 응답하여 호스트 컨트롤러가 동작하는 일 예를 나타내는 도면이다.2A illustrates an example in which a host controller operates in response to a write request of a file system in a conventional storage system.
도 2b는 도 1의 스토리지 시스템에서 파일시스템의 쓰기 요청에 응답하여 호스트 컨트롤러가 동작하는 일 예를 나타내는 도면이다.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.
도 3은 도 1의 스토리지 시스템에서 파일시스템의 플러시 요청에 응답하여 호스트 컨트롤러가 동작하는 일 예를 나타내는 도면이다.FIG. 3 is a diagram illustrating an example in which a host controller operates in response to a flush request of a file system in the storage system of FIG. 1.
도 4는 본 발명의 실시예들에 따른 스토리지 시스템의 쓰기 데이터 처리 방법을 나타내는 순서도이다.4 is a flowchart illustrating a write data processing method of a storage system according to example embodiments.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.Hereinafter, with reference to the accompanying drawings, it will be described in detail a preferred embodiment of the present invention. The same reference numerals are used for the same elements in the drawings, and duplicate descriptions of the same elements are omitted.
도 1은 본 발명의 실시예들에 따른 스토리지 시스템을 나타내는 블록도이다.1 is a block diagram illustrating a storage system according to example embodiments.
도 1을 참조하면, 스토리지 시스템(100)은 호스트 장치(120) 및 스토리지 장치(140)를 포함할 수 있다.Referring to FIG. 1, the 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 include a solid state drive (SSD), a secure digital card (SDCARD), a universal flash storage (UFS), and an embedded device. It may be implemented as an embedded multi media card (EMMC), a compact flash card, a memory stick, an XD picture card, or the like. However, this is merely an example, and the type of the storage device 140 is not limited thereto. The storage device 140 may include first to n th (where n is an integer of 1 or more) flash memories 146-1,..., 146-n and a storage controller 142 that interact with each other. Can be. The storage device 140 supports the file system 122 by the storage controller 142 using the flash translation layer, thereby reading, writing, erasing, merging, copyback, compaction, and garbage collection. , Wear leveling operations, and the like. Although not shown in FIG. 1, the storage device 140 may have hardware or software other than the first through nth flash memories 146-1,..., 146-n and the storage controller 142. It 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 that interact with each other. In this case, the file system 122 generates I / O commands to the host controller 124 in block units (hereinafter, referred to as a host logical page), and the host controller 124 is in sector units (for example, 512 bytes) may generate I / O commands for the storage device 140 to process the I / O commands of the file system 122.
호스트 컨트롤러(124)는 데이터 입출력 큐(queue)(126)를 구비할 수 있다. 데이터 입출력 큐(126)는 파일시스템(122)으로부터의 연속된 쓰기 요청이 동일한 스토리지 논리 페이지에 관한 것일 경우, 이를 모아서 처리하기 위한 임시 저장 공간이며, 데이터 입출력 큐(126)의 의미는 임시 저장 공간으로서 기능하는 모든 데이터 구조(예를 들면, 연결리스트, 우선순위 큐 등)를 포함하는 것으로 해석되어야 한다. 호스트 논리 페이지보다 스토리지 논리 페이지의 크기가 큰 경우, 동일한 스토리지 논리 페이지에 대한 쓰기가 복수의 쓰기 요청으로 전송되면, 스토리지 시스템(100)의 전반적인 성능이 저하되고, 수명이 짧아질 수 있으므로, 데이터 입출력 큐(126)는 이를 보완하는 역할을 할 수 있다.The host controller 124 may include a data input / output queue 126. The data input / output queue 126 is a temporary storage space for collecting and processing consecutive write requests from the file system 122 when they are related to the same storage logical page. The meaning of the data input / output queue 126 is temporary storage space. It should be construed as including all data structures (e.g., linked lists, priority queues, etc.) that function as a. If the size of the storage logical page is larger than the host logical page, if writes to the same storage logical page are sent in multiple write requests, the overall performance of the storage system 100 may be degraded and the lifetime may be shortened. The queue 126 may serve to compensate for this.
또한, 호스트 컨트롤러(124)는 데이터 입출력 큐(126)에 저장되어 있는 모든 데이터를 완전한 스토리지 논리 페이지와 불완전한 스토리지 논리 페이지로 구분할 수 있다. 여기서, 데이터 입출력 큐(126) 또는 임시 저장 공간에 저장되어 있는 각 스토리지 논리 페이지 중에서 해당 스토리지 논리 페이지의 모든 데이터가 완전하게 있는 경우 해당 스토리지 논리 페이지를 완전한(full) 스토리지 논리 페이지라 하고, 그렇지 않은 경우를 불완전한(partial) 스토리지 논리 페이지라고 정의한다. 일 실시예에서, 완전한 스토리지 논리 페이지인지 여부는 스토리지 논리 페이지의 마지막 부분에 해당하는 데이터를 포함하는 경우 완전한 스토리지 논리 페이지로 판단하고, 그렇지 않은 경우 불완전한 스토리지 논리 페이지로 판단할 수 있다. 일 실시예에서, 호스트 컨트롤러(124)는 스토리지 논리 페이지 크기와 데이터 입출력 큐(126) 내에서 동일한 스토리지 논리 페이지에 해당하는 데이터의 크기를 비교하여, 크기가 동일한 경우 완전한 스토리지 논리 페이지로 판단하고, 스토리지 논리 페이지 크기보다 데이터 입출력 큐 내에서 동일한 스토리지 논리 페이지에 해당하는 것으로 판단되는 데이터의 크기가 작은 경우 불완전한 스토리지 논리 페이지라고 판단할 수 있다.In addition, the host controller 124 may divide all data stored in the data input / output queue 126 into a complete storage logical page and an incomplete storage logical page. In this case, if all data of each storage logical page stored in the data input / output queue 126 or temporary storage space is completely, the storage logical page is called a full storage logical page. We define a case as a partial storage logical page. In one embodiment, whether or not the complete storage logical page is a complete storage logical page if it contains data corresponding to the last portion of the storage logical page, otherwise it may be determined as an incomplete storage logical page. In one embodiment, the host controller 124 compares the storage logical page size with the size of data corresponding to the same storage logical page in the data I / O queue 126, and determines that the storage logical page is a complete storage logical page if the sizes are the same. If the size of the 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 may be determined to be an incomplete storage logical page.
호스트 컨트롤러(124)는 데이터 입출력 큐(126)에 완전한 스토리지 논리 페이지가 존재하는 경우, 완전한 스토리지 논리 페이지에 해당하는 데이터를 스토리지 장치(140)에 전송할 수 있다. 반면에, 데이터 입출력 큐(126) 내에서 불완전한 스토리지 논리 페이지에 해당하는 데이터는 데이터 입출력 큐(126)에 잔류시키고 다음 쓰기 요청을 기다릴 수 있다. 불완전한 스토리지 논리 페이지에 해당하는 데이터를 데이터 입출력 큐(126)에 잔류시키고 다음 쓰기 요청을 기다림으로써 다음 쓰기 요청에서 동일한 스토리지 논리 페이지에 해당하는 데이터가 존재하는 경우 이를 병합하여 처리할 수 있다. 즉, 쓰기 요청과 관련된 쓰기 데이터의 일부와 데이터 입출력 큐(126)에 저장되어 있는 이전 쓰기 요청과 관련된 잔류 데이터가 동일한 스토리지 논리 페이지에 대한 것일 경우 병합되고, 병합된 논리페이지에 대해서 완전한 스토리지 논리 페이지 여부가 구분될 수 있다.When a complete storage logical page exists in the data input / output queue 126, the host controller 124 may transmit data corresponding to the complete storage logical page to the storage device 140. On the other hand, data corresponding to an incomplete storage logical page in the data input / output queue 126 may remain in the data input / output queue 126 and wait for the next write request. If data corresponding to an incomplete storage logical page remains in the data input / output queue 126 and waits for the next write request, data corresponding to the same storage logical page may be merged and processed in the next write request. That is, if 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 for the same storage logical page, they are merged, and the complete storage logical page for the merged logical page is merged. Whether or not 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 transfer a complete storage logical page immediately or if it is difficult to expect data that is the same storage logical page as the residual data in the next write request, then the write data is sent to the storage device 140. Can be. In one embodiment, host controller 124 corresponds to a complete storage logical page when the write data associated with the write request includes a complete storage logical page, so that the data corresponding to the complete storage logical page does not have to wait for the next write request. The data may be immediately transmitted to the storage device 140 without storing the data in the data input / output queue 126. In one embodiment, the host controller 124 may, in the next write request, if the write data does not contain data from the storage logical page corresponding to the residual data associated with the previous write request stored in the data input / output queue 126. Since it is difficult to expect data that is the same storage logical page as the residual data, the residual data may be transmitted 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)로 전송할 수 있다.In addition, when there is a flush request (hereinafter, referred to as a flush request) of the file system 122 to complete the processing of the requested write data, the host controller 124 may enter the current data input / output queue 126. All stored data may be transmitted 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 process the transfer request in units of storage logical pages using the data input / output queue 126 between the file system 122 and the storage device 140. For example, the host controller 124 may be implemented in a device driver, a flash translation layer included in the device driver, or a program having a function similar to the flash translation layer. In an embodiment, the host controller 124 including the data input / output queue 126 may be implemented in a device driver that does not support the host flash translation layer function so that the transfer request may be performed in units of storage logical pages. According to an embodiment, the host controller 124 including the data input / output queue 126 may be implemented in the host flash translation layer included in the device driver so that the transfer request may be performed in units of storage logical pages.
한편, 도 1에 도시되지는 않았지만, 호스트 장치(120)는 파일시스템(122) 및 호스트 컨트롤러(124) 외에 다른 하드웨어적 또는 소프트웨어적 구성 요소들을 더 포함할 수 있으며, 호스트 컨트롤러(124)도 데이터 입출력 큐(126) 외에 다른 하드웨어적 또는 소프트웨어적 구성 요소들을 더 포함할 수 있다.Although not shown in FIG. 1, the host device 120 may further include other hardware or software components in addition to the file system 122 and the host controller 124, and the host controller 124 may also include data. In addition to the input / output queue 126 may further include other hardware or software components.
도 2a는 종래의 스토리지 시스템에서 파일시스템의 쓰기 요청에 응답하여 호스트 컨트롤러가 동작하는 일 예를 나타내는 도면이고, 도 2b는 도 1의 스토리지 시스템에서 파일시스템의 쓰기 요청에 응답하여 호스트 컨트롤러가 동작하는 일 예를 나타내는 도면이다.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, and FIG. 2B is a diagram illustrating an operation of the host controller in response to a write request of a file system in the storage system of FIG. 1. It is a figure which shows an example.
도 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번째 호스트 논리 페이지를 나타낸다.)2A and 2B, effects of the write data transfer method of the host controller 124 are illustrated. Specifically, FIG. 2A illustrates 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 illustrates a host controller (using the data input / output queue 126). 124 illustrates the manner in which the file system 122 handles the write request. 2A and 2B illustrate the case where 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 may be 4 KB, and the size of the storage logical page may be 16 KB. In FIGS. 2A and 2B, the file system writes consecutive write requests for the storage logical pages L0, L1, and L2 to the first write request (L0-0, L0-1) and the 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) are divided into three requests . (Where Lx represents the storage logical page number and Lx-y represents 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 having no conventional data input / output queue receives a write request from the file system 22 and immediately transfers write data to the storage device 40. (In FIG. 2A, WR1 represents write data received from the file system 22 and DT1 represents write data transferred to the storage device 40.) For example, the host logical page from the file system 22 is represented. When the first write request (L0-0, L0-1), which is twice the size, occurs, the write data (L0) is transmitted to the storage device 40, even though it is an incomplete storage page, and then the host logic If 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 page size occurs, the host The controller 24 transmits write data L0, L1, and L2 for each storage logical page to the storage device 40, respectively. Subsequently, when a third write request (L2-2, L2-3), which is twice the size of the host logical page, occurs, the write data (L2) corresponding to the same storage logical page as the previously transmitted write data is transmitted. do. In the above example, the host controller 24 sends two write requests for the storage logical page L0 and two write requests for L2. As described above, in the case of using the host controller 24 having no conventional data input / output queue, a write to the same storage logical page is transmitted in a plurality of write requests for a write request received from the file system 22. Frequently, this degrades the overall performance of the storage system and shortens its lifespan.
반면에, 도 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) 횟수를 줄일 수 있는 장점이 있다.On the other hand, as shown in FIG. 2B, the host controller 124 including the data input / output queue 126 writes a plurality of write requests to the same storage logical page for a write request received from the file system 122. Can be prevented. In detail, the host controller 124 receives a write request from the file system 122 and stores write data associated with the write request in the data input / output queue 126. The controller 124 divides all data stored in the data input / output queue 126 into complete storage logical pages and incomplete storage logical pages so that data corresponding to the complete storage logical pages is transferred to the storage device 140 and is incomplete. Data corresponding to the storage logical page remains in the data input / output queue 126. 2B, WR2 represents write data received from the file system 122, DT2 represents write data transmitted to the storage device 140, and RD represents data corresponding to a complete storage logical page. The data stored in the data input / output queue 126 after being transmitted to the data input / output queue 126 is shown.) As described above, a case in which the host controller 124 uses the data input / output queue 126 is illustrated in FIGS. 2A and 2B. In a situation (that is, when the size of the storage logical page is four times the size of the host logical page), the first write request (L0-0, L0-1), which is twice the size of the host logical page, occurs from the file system 122. Host controller 124 stores data associated with the first write request in data input / output queue 126, and there is no complete storage logical page in 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 a write request of related data is completed to process data corresponding to the same storage logical page at a time. Subsequently, second write requests L0-2, L0-3, L1-0, L1-1, L1-2, L1-3, L2-0, and L2-1, which are eight times the size of the host logical page size, occur. In this case, the host controller 124 stores the write data associated with the second write request in the data input / output queue 126, and since the complete storage logical pages L0 and L1 exist in the data input / output queue 126, the storage device ( At 140, data L0 and L1 corresponding to the complete storage logical page are dequeueed from the data input / output queue 126 and transmitted. 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. Subsequently, when the third write request (L2-2, L2-3), which is twice the size of the host logical page size, occurs, the host controller 124 writes data associated with the third write request to the data input / output queue 126. And a complete storage logical page (L2) exists in the data input / output queue (126), so that the data (L2) corresponding to the complete storage logical page in the storage device 140 is taken from the data input / output queue (126) and transmitted. . As described above, when the host controller 124 uses the data input / output queue 126, the number of write data transfers is reduced (in the above example, the number of write data transfers in FIG. 2A is five times, but is reduced three or two times in FIG. 2B). By avoiding duplicate write requests for the same logical page in successive writes of the file system, the overall performance of the storage system 100 can be improved and its life can be extended. In addition, there is an advantage of reducing the number of full merges during garbage collection processing in the flash conversion layer.
도 3은 도 1의 스토리지 시스템에서 파일시스템의 플러시 요청에 응답하여 호스트 컨트롤러가 동작하는 일 예를 나타내는 도면이다.FIG. 3 is a diagram illustrating an example in which a host controller operates in response to a flush request of a file system in the storage system of FIG. 1.
도 3을 참조하면, 파일시스템(122)으로부터 플러시 요청이 있는 경우, 호스트 컨트롤러(124)가 이를 처리하는 과정이 도시되어 있다.Referring to FIG. 3, when a flush request is received from the file system 122, the host controller 124 processes the process.
구체적으로, 도 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)가 발생할 수 있기 때문에 이를 피하기 위해서이다.Specifically, in FIG. 3, the host controller 124 receives a write request from the file system 122, stores write data related to the write request in the data input / output queue 126, and stores data stored in the data input / output queue 126. In the case of including a complete storage logical page or a flush request from the file system, data is transmitted to the storage device 140. In FIG. 3, WR2 represents write data received from the file system 122, DT2 represents write data transmitted to the storage device 140, and RD transfers write data to the storage device 140. Data stored in the data I / O queue 126. For example, assuming that the size of the storage logical page is four times the size of the host logical page, the file system 122 has twice the size of the host logical page. When the first write requests L0-0 and L0-1 having sizes are generated, 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. ) Does not transmit data to the storage device 140 because no complete storage logical page exists. Subsequently, second write requests L0-2, L0-3, L1-0, L1-1, L1-2, L1-3, L2-0, and L2-1, which are eight times the size of the host logical page size, occur. In this case, the host controller 124 stores the write data associated with the second write request in the data input / output queue 126, and since the complete storage logical pages L0 and L1 exist in the data input / output queue 126, the storage device ( Data L0 and L1 corresponding to the complete storage logical page at 140 are taken from the data input / output queue 126 and transmitted. 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. Subsequently, when the host controller 124 receives a flush request from the file system 122, the host controller 124 transfers all data L2-0 and L2-1 stored in the data input / output queue 126 to the data input / output queue 126. ) Is transferred to the storage device 140. Subsequently, when a third write request (L3-0, L3-1), which is twice the size of the host logical page size, occurs, the host controller 124 writes data associated with the third write request to the data input / output queue 126. And write data is not transmitted to the storage device 140 because a complete storage logical page does not exist in the data input / output queue 126. Here, when the flush request occurs, the file system 122 makes a third write request, even though there is space available for the storage logical page requested in the second write request (L2-2, L2-3). An example of skipping and using storage logical pages is shown. This is to avoid the write request for the remaining space because a plurality of write requests are sent to the corresponding storage logical page, which may cause a full merge in the storage controller.
도 4는 본 발명의 실시예들에 따른 스토리지 시스템의 쓰기 데이터 처리 방법을 나타내는 순서도이다.4 is a flowchart illustrating a write data processing method of a storage system according to example embodiments.
도 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 write data associated with the new write request in the data input / output queue (Step S130). All data stored in the data I / O queue (including residual data related to previous write requests stored in the data I / O queue) may be divided into complete storage logical pages and incomplete storage logical pages (Step S150). In this case, the host controller transmits data corresponding to a complete storage logical page to the storage device in response to the write request (Step S170), while inputting / outputting data corresponding to an incomplete storage logical page in response to the write request. Can remain in the queue (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 in block units and makes a new write request (Step S110), and the host controller processes the write data related to the write request of the file system as the host logical page size and stores it in the data input / output queue (Step S130). )can do. According to an embodiment, when 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). The data corresponding to the complete storage logical page does not need to wait for the next write request, so performance can be improved by transferring it to the storage device rather than storing it in a 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 residual data associated with the previous write request (Step S114), and if not, the same as the residual data in the next write request. Since data that is a storage logical page is difficult to expect, residual data may be transferred to the storage device (Step S116). Here, determining whether the write data associated with the new write request includes data of the storage logical page corresponding to the residual data associated with the previous write request (Step S114) and transmitting the residual data to the storage device (Step S116). Regardless of the step and order of storing the data in the data input / output queue (Step S130), it may be determined and transmitted. The host controller may divide all 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, whether or not the complete storage logical page is a complete storage logical page if it contains data corresponding to the last portion of the storage logical page, otherwise it may be determined as an incomplete storage logical page. In one embodiment, whether the data stored in the data I / O queue is a complete storage logical page compares the storage logical page size with the size of the data that is determined to correspond to the same storage logical page within the data I / O queue. In the same case, it may be determined as a complete storage logical page, and when 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 may be determined as an incomplete storage logical page. Thereafter, the host controller may take data corresponding to a complete storage logical page from the data input / output queue and transmit the data 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 send it to the storage device. On the other hand, the host controller may leave data corresponding to an incomplete storage logical page in a data input / output queue (Step S190). Meanwhile, according to an embodiment, when a flush request from a file system comes into the host controller, the host controller may transmit all data stored in the data input / output queue to the storage device to process data related to all write requests.
이상, 본 발명의 실시예들에 따른 스토리지 시스템 및 이의 쓰기 데이터 처리 방법에 대해 도면을 참조하여 설명하였지만, 상기 설명은 예시적인 것으로서 본 발명의 기술적 사상을 벗어나지 않는 범위에서 해당 기술 분야에서 통상의 지식을 가진 자에 의하여 수정 및 변경될 수 있을 것이다.As mentioned above, the storage system and the write data processing method thereof according to the embodiments of the present invention have been described with reference to the drawings, but the above description is exemplary, and the general knowledge in the technical field of the present invention is not limited to the technical spirit of the present invention. It may be modified and changed by those who have.
본 발명은 스토리지 장치(즉, 플래시 메모리 장치)를 구비한 스토리지 시스템에 적용될 수 있다. 예를 들어, 본 발명은 솔리드 스테이트 드라이브(SSD), 임베디드 멀티미디어 카드(EMMC), 시큐어 디지털 카드(SD카드) 등을 구비한 스토리지 시스템에 적용될 수 있다.The present invention can be applied to a storage system having a storage device (ie, 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.
이상에서는 본 발명의 예시적인 실시예들을 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.Although the above has been described with reference to exemplary embodiments of the present invention, those skilled in the art may vary the present invention without departing from the spirit and scope of the present invention as set forth in the claims below. It will be understood that modifications and changes can be made.
* 부호의 설명* Explanation of the sign
100: 스토리지 시스템 120: 호스트 장치100: storage system 120: host device
122: 파일시스템 124: 호스트 컨트롤러122: file system 124: host controller
126: 데이터 입출력 큐 140: 스토리지 장치126: data input / output queue 140: storage device
142: 스토리지 컨트롤러 146: 플래시 메모리142: storage controller 146: flash memory

Claims (10)

  1. 파일시스템이 쓰기 요청을 하는 경우, 상기 쓰기 요청과 관련된 쓰기 데이터를 데이터 입출력 큐(queue)에 저장하는 단계;When a file system makes a write request, storing write data associated with the write request in a data input / output queue;
    상기 데이터 입출력 큐에 저장되어 있는 모든 데이터를 완전한(full) 스토리지 논리 페이지와 불완전한 스토리지 논리 페이지로 구분하는 단계;Dividing all data stored in the data input / output queue into a full storage logical page and an incomplete storage logical page;
    상기 쓰기 요청에 응답하여 상기 완전한 스토리지 논리 페이지에 해당하는 데이터를 스토리지 장치로 전송하는 단계; 및Transmitting data corresponding to the complete storage logical page to a storage device in response to the write request; And
    상기 쓰기 요청에 응답하여 상기 불완전한 스토리지 논리 페이지에 해당하는 데이터를 상기 데이터 입출력 큐에 잔류시키는 단계를 포함하는 스토리지 시스템의 쓰기 데이터 처리 방법.And remaining data corresponding to the incomplete storage logical page in the data input / output queue in response to the write request.
  2. 제 1 항에 있어서, 상기 쓰기 데이터가 상기 완전한 스토리지 논리 페이지를 포함하는 경우, 상기 완전한 스토리지 논리 페이지에 해당하는 데이터는 상기 데이터 입출력 큐에 저장하지 않고 상기 스토리지 장치로 전송되는 것을 특징으로 하는 스토리지 시스템의 쓰기 데이터 처리 방법.The storage system of claim 1, wherein when the write data includes the complete storage logical page, data corresponding to the complete storage logical page is transmitted to the storage device without being stored in the data input / output queue. How to handle write data.
  3. 제 1 항에 있어서, 상기 쓰기 데이터가 상기 데이터 입출력 큐에 저장되어 있는 이전 쓰기 요청과 관련된 잔류 데이터에 해당하는 스토리지 논리 페이지의 데이터를 포함하고 있지 않은 경우, 상기 잔류 데이터는 상기 스토리지 장치로 전송되는 것을 특징으로 하는 스토리지 시스템의 쓰기 데이터 처리 방법.The residual data of claim 1, wherein the remaining data is transmitted to the storage device when the write data does not include data of a storage logical page corresponding to residual data associated with a previous write request stored in the data input / output queue. Write data processing method of a storage system, characterized in that.
  4. 제 1 항에 있어서, 상기 완전한 스토리지 논리 페이지와 상기 불완전한 스토리지 논리 페이지는 상기 스토리지 장치에 설정되어 있는 스토리지 논리 페이지 크기에 기초하여 구분되는 것을 특징으로 하는 스토리지 시스템의 쓰기 데이터 처리 방법.The method of claim 1, wherein the complete storage logical page and the incomplete storage logical page are classified based on a storage logical page size set in the storage device.
  5. 제 1 항에 있어서,The method of claim 1,
    상기 파일시스템이 플러시(flush) 요청을 하는 경우, 상기 데이터 입출력 큐에 저장되어 있는 모든 데이터를 상기 스토리지 장치로 전송하는 단계를 더 포함하는 것을 특징으로 하는 스토리지 시스템의 쓰기 데이터 처리 방법.And transmitting all data stored in the data input / output queue to the storage device when the file system requests a flush.
  6. 적어도 하나 이상의 플래시 메모리 및 스토리지 플래시 변환 레이어를 이용하여 상기 플래시 메모리를 제어하는 스토리지 컨트롤러를 구비한 스토리지 장치; 및A storage device having a storage controller to control the flash memory using at least one flash memory and a storage flash translation layer; And
    파일시스템 및 상기 스토리지 컨트롤러와 인터액션(interaction)을 수행하는 호스트 컨트롤러를 구비한 호스트 장치를 포함하고, A host device having a file system and a host controller for interacting with the storage controller,
    상기 호스트 컨트롤러는 상기 파일시스템이 쓰기 요청을 하는 경우, 상기 쓰기 요청과 관련된 쓰기 데이터를 데이터 입출력 큐에 저장하고, 상기 데이터 입출력 큐에 저장되어 있는 모든 데이터를 완전한 스토리지 논리 페이지와 불완전한 스토리지 논리 페이지로 구분하여 상기 완전한 스토리지 논리 페이지에 해당하는 데이터를 상기 스토리지 장치로 전송하는 것을 특징으로 하는 스토리지 시스템.When the file system makes a write request, the host controller stores the write data associated with the write request in a data input / output queue, and converts all data stored in the data input / output queue into a complete storage logical page and an incomplete storage logical page. And classifying and transmitting data corresponding to the complete storage logical page to the storage device.
  7. 제 6 항에 있어서, 상기 호스트 컨트롤러는 상기 쓰기 데이터가 상기 완전한 스토리지 논리 페이지를 포함하는 경우, 상기 완전한 스토리지 논리 페이지에 해당하는 데이터를 상기 데이터 입출력 큐에 저장하지 않고 상기 스토리지 장치로 전송하는 것을 특징으로 하는 스토리지 시스템.The data storage device of claim 6, wherein when the write data includes the complete storage logical page, the host controller transmits data corresponding to the complete storage logical page to the storage device without storing the data in the data input / output queue. Storage system.
  8. 제 6 항에 있어서, 상기 호스트 컨트롤러는 상기 쓰기 데이터가 상기 데이터 입출력 큐에 저장되어 있는 이전 쓰기 요청과 관련된 잔류 데이터에 해당하는 스토리지 논리 페이지의 데이터를 포함하고 있지 않은 경우, 상기 잔류 데이터를 상기 스토리지 장치로 전송하는 것을 특징으로 하는 스토리지 시스템.The storage device of claim 6, wherein the host controller is configured to store the residual data when the write data does not include data of a storage logical page corresponding to residual data associated with a previous write request stored in the data input / output queue. Storage system, characterized in that the transmission to the device.
  9. 제 6 항에 있어서, 상기 호스트 컨트롤러는 상기 완전한 스토리지 논리 페이지와 상기 불완전한 스토리지 논리 페이지를 상기 스토리지 장치에 설정되어 있는 스토리지 논리 페이지 크기에 기초하여 구분하는 것을 특징으로 하는 스토리지 시스템.7. The storage system of claim 6, wherein the host controller classifies the complete storage logical page and the incomplete storage logical page based on a storage logical page size set in the storage device.
  10. 제 6 항에 있어서, 상기 호스트 컨트롤러는 상기 파일시스템이 플러시 요청을 하는 경우, 상기 데이터 입출력 큐에 저장되어 있는 모든 데이터를 상기 스토리지 장치로 전송하는 것을 특징으로 하는 스토리지 시스템.The storage system of claim 6, wherein the host controller transmits all data stored in the data input / output queue to the storage device when the file system requests a flush.
PCT/KR2014/000867 2013-04-17 2014-01-29 Storage system and method for processing writing data of storage system WO2014171618A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
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 (2)

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

Publications (1)

Publication Number Publication Date
WO2014171618A1 true WO2014171618A1 (en) 2014-10-23

Family

ID=51731529

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2014/000867 WO2014171618A1 (en) 2013-04-17 2014-01-29 Storage system and method for processing writing data of storage system

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
CN106802770A (en) * 2015-11-25 2017-06-06 爱思开海力士有限公司 Accumulator system and its operating method

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
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
WO2019222958A1 (en) 2018-05-24 2019-11-28 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
KR20210121660A (en) 2020-03-31 2021-10-08 에스케이하이닉스 주식회사 Memory system and operating method thereof
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 (4)

* 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
KR20110000876A (en) * 2009-06-29 2011-01-06 주식회사 하이닉스반도체 Nand flash memory device and controller thereof, write operation method
KR20120034976A (en) * 2010-10-04 2012-04-13 한국과학기술원 Apparatus and method for mapping the data address in nand flash memory

Family Cites Families (4)

* 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
US8601222B2 (en) * 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
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 (4)

* 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
KR20110000876A (en) * 2009-06-29 2011-01-06 주식회사 하이닉스반도체 Nand flash memory device and controller thereof, write operation method
KR20120034976A (en) * 2010-10-04 2012-04-13 한국과학기술원 Apparatus and method for mapping the data address in nand flash memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106802770A (en) * 2015-11-25 2017-06-06 爱思开海力士有限公司 Accumulator system and its operating method
CN106802770B (en) * 2015-11-25 2020-08-25 爱思开海力士有限公司 Memory system and operating method thereof

Also Published As

Publication number Publication date
KR20140124537A (en) 2014-10-27
US20160162187A1 (en) 2016-06-09
KR101478168B1 (en) 2014-12-31

Similar Documents

Publication Publication Date Title
WO2014171618A1 (en) Storage system and method for processing writing data of storage system
CN113377283B (en) Memory system with partitioned namespaces and method of operation thereof
WO2013165108A1 (en) Nonvolatile memory system
US10013177B2 (en) Low write amplification in solid state drive
EP2631916B1 (en) Data deletion method and apparatus
EP2598996B1 (en) Apparatus, system, and method for conditional and atomic storage operations
KR100939145B1 (en) Memory device
JP5518197B2 (en) Apparatus, system, and method for allocating storage
JP2019057172A (en) Memory system and control method
CN106909313A (en) Accumulator system and control method
US20080195833A1 (en) Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit
US20070143566A1 (en) Non-volatile memories with data alignment in a directly mapped file storage system
US20060218347A1 (en) Memory card
EP3771976B1 (en) Storage device
WO2016195242A1 (en) Non-volatile memory system
JP4441577B2 (en) Conversion data unit storage in memory system with fixed size storage block
JP2009519555A (en) Logical address file storage
KR20150142583A (en) A method of organizing an address mapping table in a flash storage device
US20200218646A1 (en) System and method of fpga-executed flash translation layer in multiple solid state drives
WO2014142427A1 (en) Storage system and data transmitting method thereof
US20170139607A1 (en) Method and system for shared direct access storage
US7969781B2 (en) Method of controlling memory system
KR101363422B1 (en) Non-volatile memory system
WO2010107173A1 (en) Ssd controller, and method for operating an ssd controller
JP2007102314A (en) Disk cache-control device

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14785043

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 14785073

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14785043

Country of ref document: EP

Kind code of ref document: A1