KR101478168B1 - Storage system and method of processing write data - Google Patents
Storage system and method of processing write data Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary 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.
Description
본 발명은 반도체 메모리 시스템에 관한 것으로, 보다 상세하게는 호스트 장치와 스토리지 장치(예를 들어, 플래시 메모리 장치)로 구성된 스토리지 시스템 및 이의 쓰기 데이터 처리 방법에 관한 것이다.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
스토리지 장치(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
호스트 장치(120)는 서로 인터액션을 수행하는 파일시스템(122)과 호스트 컨트롤러(124)를 구비할 수 있다. 이 때, 파일시스템(122)는 블록 단위(이하, 호스트 논리 페이지라 함)로 호스트 컨트롤러(124)에 대한 I/O 명령을 생성하고, 호스트 컨트롤러(124)는 섹터 단위로(예를 들어, 512byte) 스토리지 장치(140)에 대한 I/O 명령을 생성하여 파일시스템(122)의 I/O 명령을 처리할 수 있다.The
호스트 컨트롤러(124)는 데이터 입출력 큐(queue)(126)를 구비할 수 있다. 데이터 입출력 큐(126)는 파일시스템(122)으로부터의 연속된 쓰기 요청이 동일한 스토리지 논리 페이지에 관한 것일 경우, 이를 모아서 처리하기 위한 임시 저장 공간이며, 데이터 입출력 큐(126)의 의미는 임시 저장 공간으로서 기능하는 모든 데이터 구조(예를 들면, 연결리스트, 우선순위 큐 등)를 포함하는 것으로 해석되어야 한다. 호스트 논리 페이지보다 스토리지 논리 페이지의 크기가 큰 경우, 동일한 스토리지 논리 페이지에 대한 쓰기가 복수의 쓰기 요청으로 전송되면, 스토리지 시스템(100)의 전반적인 성능이 저하되고, 수명이 짧아질 수 있으므로, 데이터 입출력 큐(126)는 이를 보완하는 역할을 할 수 있다.The
또한, 호스트 컨트롤러(124)는 데이터 입출력 큐(126)에 저장되어 있는 모든 데이터를 완전한 스토리지 논리 페이지와 불완전한 스토리지 논리 페이지로 구분할 수 있다. 여기서, 데이터 입출력 큐(126) 또는 임시 저장 공간에 저장되어 있는 각 스토리지 논리 페이지 중에서 해당 스토리지 논리 페이지의 모든 데이터가 완전하게 있는 경우 해당 스토리지 논리 페이지를 완전한(full) 스토리지 논리 페이지라 하고, 그렇지 않은 경우를 불완전한(partial) 스토리지 논리 페이지라고 정의한다. 일 실시예에서, 완전한 스토리지 논리 페이지인지 여부는 스토리지 논리 페이지의 마지막 부분에 해당하는 데이터를 포함하는 경우 완전한 스토리지 논리 페이지로 판단하고, 그렇지 않은 경우 불완전한 스토리지 논리 페이지로 판단할 수 있다. 일 실시예에서, 호스트 컨트롤러(124)는 스토리지 논리 페이지 크기와 데이터 입출력 큐(126) 내에서 동일한 스토리지 논리 페이지에 해당하는 데이터의 크기를 비교하여, 크기가 동일한 경우 완전한 스토리지 논리 페이지로 판단하고, 스토리지 논리 페이지 크기보다 데이터 입출력 큐 내에서 동일한 스토리지 논리 페이지에 해당하는 것으로 판단되는 데이터의 크기가 작은 경우 불완전한 스토리지 논리 페이지라고 판단할 수 있다.In addition, the
호스트 컨트롤러(124)는 데이터 입출력 큐(126)에 완전한 스토리지 논리 페이지가 존재하는 경우, 완전한 스토리지 논리 페이지에 해당하는 데이터를 스토리지 장치(140)에 전송할 수 있다. 반면에, 데이터 입출력 큐(126) 내에서 불완전한 스토리지 논리 페이지에 해당하는 데이터는 데이터 입출력 큐(126)에 잔류시키고 다음 쓰기 요청을 기다릴 수 있다. 불완전한 스토리지 논리 페이지에 해당하는 데이터를 데이터 입출력 큐(126)에 잔류시키고 다음 쓰기 요청을 기다림으로써 다음 쓰기 요청에서 동일한 스토리지 논리 페이지에 해당하는 데이터가 존재하는 경우 이를 병합하여 처리할 수 있다. 즉, 쓰기 요청과 관련된 쓰기 데이터의 일부와 데이터 입출력 큐(126)에 저장되어 있는 이전 쓰기 요청과 관련된 잔류 데이터가 동일한 스토리지 논리 페이지에 대한 것일 경우 병합되고, 병합된 논리페이지에 대해서 완전한 스토리지 논리 페이지 여부가 구분될 수 있다.The
그 밖에도, 호스트 컨트롤러(124)는 완전한 스토리지 논리 페이지를 즉시 전송 할 수 있는 경우 또는 다음 쓰기 요청에서 잔류 데이터와 동일한 스토리지 논리 페이지인 데이터를 기대하기 어려운 경우, 쓰기 데이터를 스토리지 장치(140)로 전송할 수 있다. 일 실시예에서, 호스트 컨트롤러(124)는 쓰기 요청과 관련된 쓰기 데이터가 완전한 스토리지 논리 페이지를 포함하는 경우, 완전한 스토리지 논리 페이지에 해당하는 데이터는 다음 쓰기 요청을 기다릴 필요가 없으므로 완전한 스토리지 논리 페이지에 해당하는 데이터를 상기 데이터 입출력 큐(126)에 저장하지 않고 스토리지 장치(140)로 즉시 전송할 수 있다. 일 실시예에서, 호스트 컨트롤러(124)는 쓰기 데이터가 데이터 입출력 큐(126)에 저장되어 있는 이전 쓰기 요청과 관련된 잔류 데이터에 해당하는 스토리지 논리 페이지의 데이터를 포함하고 있지 않은 경우, 다음 쓰기 요청에서 잔류 데이터와 동일한 스토리지 논리 페이지인 데이터를 기대하기 어려우므로 잔류 데이터를 불완전한 스토리지 논리 페이지로 스토리지 장치(140)에 전송할 수 있다. 일 실시예에서, 호스트 컨트롤러(124)는 완전한 스토리지 논리 페이지에 해당하는 데이터들을 하나의 I/O 요청으로 재병합하여 스토리지 장치(140)에 전송할 수 있다.In addition, if the
또한, 호스트 컨트롤러(124)는 요청된 쓰기 데이터에 대한 처리를 완료시키기 위한 파일시스템(122)의 플러시(flush) 요청(이하, 플러시 요청이라고 함)이 있는 경우, 현재 데이터 입출력 큐(126)에 저장된 모든 데이터를 스토리지 장치(140)로 전송할 수 있다.If there is a flush request (hereinafter referred to as a flush request) of the
호스트 컨트롤러(124)는 파일시스템(122)과 스토리지 장치(140) 사이에서 데이터 입출력 큐(126)를 사용하여 스토리지 논리 페이지 단위로 전송 요청할 수 있도록 처리하는 모든 프로그램을 포함하는 의미로 해석되어야 한다. 예를 들어, 호스트 컨트롤러(124)는 디바이스 드라이버(device driver), 디바이스 드라이버에 포함된 플래시 변환 레이어 또는 플래시 변환 레이어와 유사한 기능을 하는 프로그램에서 구현될 수 있다. 일 실시예에서, 호스트 플래시 변환 레이어 기능을 지원하지 않는 디바이스 드라이버에서 데이터 입출력 큐(126)를 구비한 호스트 컨트롤러(124)를 구현함으로써 스토리지 논리 페이지 단위로 전송 요청할 수 있도록 처리할 수 있다. 일 실시예에서, 디바이스 드라이버에 포함된 호스트 플래시 변환 레이어에서 데이터 입출력 큐(126)를 구비한 호스트 컨트롤러(124)를 구현함으로써 스토리지 논리 페이지 단위로 전송 요청할 수 있도록 처리할 수 있다.The
한편, 도 1에 도시되지는 않았지만, 호스트 장치(120)는 파일시스템(122) 및 호스트 컨트롤러(124) 외에 다른 하드웨어적 또는 소프트웨어적 구성 요소들을 더 포함할 수 있으며, 호스트 컨트롤러(124)도 데이터 입출력 큐(126) 외에 다른 하드웨어적 또는 소프트웨어적 구성 요소들을 더 포함할 수 있다.1, the
도 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
도 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
반면에, 도 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
도 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
구체적으로, 도 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
도 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)
상기 호스트 컨트롤러가 파일시스템으로부터 쓰기 요청을 수신하는 경우, 상기 호스트 컨트롤러가 상기 쓰기 요청과 관련된 쓰기 데이터를 데이터 입출력 큐(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.
상기 파일시스템이 플러시(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 >
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)
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)
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)
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)
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) |
-
2013
- 2013-04-17 KR KR1020130042152A patent/KR101478168B1/en active IP Right Grant
-
2014
- 2014-01-29 WO PCT/KR2014/000867 patent/WO2014171618A1/en active Application Filing
- 2014-01-29 US US14/785,073 patent/US20160162187A1/en not_active Abandoned
Patent Citations (2)
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)
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 |