KR102177315B1 - Input/output interceptor logic including flush control logic, and computer-implemented method using the input/output interceptor logic - Google Patents

Input/output interceptor logic including flush control logic, and computer-implemented method using the input/output interceptor logic Download PDF

Info

Publication number
KR102177315B1
KR102177315B1 KR1020150065399A KR20150065399A KR102177315B1 KR 102177315 B1 KR102177315 B1 KR 102177315B1 KR 1020150065399 A KR1020150065399 A KR 1020150065399A KR 20150065399 A KR20150065399 A KR 20150065399A KR 102177315 B1 KR102177315 B1 KR 102177315B1
Authority
KR
South Korea
Prior art keywords
write
input
output
outputs
flush
Prior art date
Application number
KR1020150065399A
Other languages
Korean (ko)
Other versions
KR20160016562A (en
Inventor
프라딥 비시트
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20160016562A publication Critical patent/KR20160016562A/en
Application granted granted Critical
Publication of KR102177315B1 publication Critical patent/KR102177315B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

본 발명은 입출력 인터페이스, 하나 이상의 임시 쓰기 홀딩 버퍼들, 순서 변경 로직부, 및 플러시 제어 로직부를 포함하는 입출력 인터셉터 로직을 제공한다. 입출력 인터페이스는 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트한다. 임시 쓰기 홀딩 버퍼는 입출력 인터페이스로부터 제공받은 쓰기 입출력들을 저장한다. 순서 변경 로직부는 임시 쓰기 홀딩 버퍼에 저장된 쓰기 입출력들의 순서를 변경하고, 변경된 순서의 쓰기 입출력들을 결합하여 결합된 쓰기 입출력을 생성한다. 플러시 제어 로직부는 쓰기 입출력들을 불휘발성 스토리지 장치에 저장하기 전에 쓰기 입출력들에 관한 쓰기 입출력 완료를 어플리케이션으로 알리고, 플러시 요청들 중에서 선택된 플러시 요청, 누적된 데이터의 문턱량, 설정된 시간의 만료 중 적어도 하나에 응답하여 결합된 쓰기 입출력이 불휘발성 스토리지 장치에 저장되게 한다. 본 발명에 따르면, 개별적인 쓰기 입출력들 각각에 의해 발생하는 오버헤드를 줄임으로써, 데이터 저장의 성능이 향상될 수 있다.The present invention provides an input/output interceptor logic including an input/output interface, one or more temporary write holding buffers, an order change logic unit, and a flush control logic unit. The input/output interface intercepts a plurality of write inputs and outputs and a plurality of flush requests from an application. The temporary write holding buffer stores write inputs and outputs provided from the input/output interface. The order change logic unit changes the order of write inputs/outputs stored in the temporary write holding buffer, and generates a combined write input/output by combining write inputs/outputs of the changed order. The flush control logic unit notifies the application of the completion of write I/Os on write I/Os before storing the write I/Os in the nonvolatile storage device, and at least one of a flush request selected from among the flush requests, a threshold amount of accumulated data, and expiration of a set time. In response, the combined write input/output is caused to be stored in the nonvolatile storage device. According to the present invention, data storage performance can be improved by reducing the overhead generated by each of individual write inputs and outputs.

Description

플러시 제어 로직을 포함하는 입출력 인터셉터 로직, 및 그 입출력 인터셉터 로직을 이용하여 컴퓨터로 구현되는 방법{INPUT/OUTPUT INTERCEPTOR LOGIC INCLUDING FLUSH CONTROL LOGIC, AND COMPUTER-IMPLEMENTED METHOD USING THE INPUT/OUTPUT INTERCEPTOR LOGIC}Input/output interceptor logic including flush control logic, and a computer-implemented method using the input/output interceptor logic {INPUT/OUTPUT INTERCEPTOR LOGIC INCLUDING FLUSH CONTROL LOGIC, AND COMPUTER-IMPLEMENTED METHOD USING THE INPUT/OUTPUT INTERCEPTOR LOGIC}

본 발명은 컴퓨터에 구비되는(Computerized) 저장 기법에 관한 것으로, 좀 더 구체적으로는 이동식 전화기, 태블릿과 같은 컴퓨터화된 장치의 스토리지 스택(Storage Stack)에 내장되는(Embedded) 플러시 컨트롤 로직(Flush Control Logic)을 이용하는 입출력 인터셉터(Interceptor) 로직에 관한 것이다.The present invention relates to a storage technique provided in a computer, and more specifically, a flush control logic embedded in a storage stack of a computerized device such as a mobile phone or a tablet. Logic) using input/output interceptor (Interceptor) logic.

이동식 전화기, 태블릿과 같은 이동식 장치의 성능 향상에 대한 요구가 증가하고 있다. 카메라, 계산기, 개인용 컴퓨터, 서버, GPS(Global Positioning System) 장치들 등과 같은 여러 가지의 별개 장치들에 의해 수행되던 기능들이 근래 통합되어 이동식 장치에 의해 다루어지고 있다. 이동식 장치에서, 프로세서의 성능 및 데이터의 무선 전송 속도가 꾸준히 향상되는 동안, 로컬 스토리지 스택(Local Storage Stack)의 성능은 그만큼 빠르게 향상되지 않았다. 데이터의 일관성(Consistency)을 보장하기 위해 이용되는 플러시 요청은 성능 향상에 장애가 되었다. 이는 플러시 명령이 실행되는 동안 입출력이 중단되기 때문이다. 결과적으로, 스토리지 스택 및 그와 관련된 로컬 스토리지 장치들은 모바일 장치의 성능의 병목(Bottleneck)으로 되어 왔다.There is an increasing demand for improving the performance of mobile devices such as mobile phones and tablets. Functions performed by various separate devices such as cameras, calculators, personal computers, servers, and GPS (Global Positioning System) devices have recently been integrated and handled by mobile devices. In mobile devices, while the performance of the processor and the wireless transmission speed of data are steadily improving, the performance of the local storage stack has not improved as fast. The flush request, which is used to ensure data consistency, is an obstacle to performance improvement. This is because I/O is interrupted while the flush command is being executed. As a result, the storage stack and the local storage devices associated therewith have become a bottleneck of the performance of the mobile device.

위와 같은 문제를 해결하기 위해, 플러시 컨트롤 로직을 이용하는 입출력 인터셉터 로직이 제공된다. 본 발명의 실시 예에서, 플러시 컨트롤 로직은 어플리케이션(Application)으로부터 발생하는 쓰기 입출력들을 불휘발성 스토리지 장치에 저장하기 전에 쓰기 입출력 완료를 어플리케이션으로 알릴 수 있다. 쓰기 입출력들은 어플리케이션의 플러시 요청들 중에서 선택된 N번째 플러시 요청이 발생할 때까지 임시 쓰기 홀딩 버퍼에 누적되고, 하나의 쓰기 입출력으로 결합될 수 있다. 플러시 컨트롤 로직은 선택된 N번째 플러시 요청에 응답하여, 결합된 쓰기 입출력을 불휘발성 스토리지 장치로 전달할 수 있다.To solve the above problems, input/output interceptor logic using flush control logic is provided. In an embodiment of the present invention, the flush control logic may notify the application of the completion of the write input/output before storing the write input/output generated from the application in the nonvolatile storage device. The write inputs and outputs are accumulated in the temporary write holding buffer until the Nth flush request selected from among the flush requests of the application occurs, and may be combined into one write input/output. The flush control logic may transmit the combined write input/output to the nonvolatile storage device in response to the selected N-th flush request.

본 발명의 일 실시 예에 따른 입출력 인터셉터 로직은, 스토리지 스택과 통신하도록 연결되고, 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하도록 구성되는 입출력 인터페이스; 입출력 인터페이스로부터 복수의 쓰기 입출력을 제공받고, 복수의 쓰기 입출력을 저장하도록 구성되는 하나 이상의 임시 쓰기 홀딩 버퍼들; 하나 이상의 임시 쓰기 홀딩 버퍼들과 통신하도록 연결되고, 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장된 복수의 쓰기 입출력의 순서를 변경하고 변경된 순서의 복수의 쓰기 입출력을 결합하여 결합된 쓰기 입출력을 생성하도록 구성되는 순서 변경 로직부; 및 입출력 인터페이스로부터 복수의 플러시 요청을 제공받고, 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 어플리케이션으로 알리고, 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여 결합된 쓰기 입출력이 불휘발성 스토리지 장치에 저장되게 하도록 구성되는 플러시 제어 로직부를 포함할 수 있다.An input/output interceptor logic according to an embodiment of the present invention includes: an input/output interface connected to communicate with a storage stack and configured to intercept a plurality of write input/output and a plurality of flush requests from an application; One or more temporary write holding buffers configured to receive a plurality of write inputs/outputs from the input/output interface and store a plurality of write inputs/outputs; It is connected to communicate with one or more temporary write holding buffers, and is configured to change the order of the plurality of write inputs and outputs stored in the one or more temporary write holding buffers and combine the plurality of write inputs and outputs in the changed order to generate a combined write input/output. An order change logic unit; And receiving multiple flush requests from the I/O interface, notifying the application of the completion of write I/Os for multiple write I/Os without storing the plurality of write I/Os in the nonvolatile storage device, and responding to a selected flush request from among the plurality of flush requests. A flush control logic unit configured to cause the combined write input/output to be stored in the nonvolatile storage device may be included.

실시 예로서, 선택된 플러시 요청은 복수의 플러시 요청 중에서 N번째 플러시 요청에 대응하고, N은 미리 선택된 양의 정수 값을 가질 수 있다.As an embodiment, the selected flush request corresponds to an Nth flush request among a plurality of flush requests, and N may have a positive integer value selected in advance.

실시 예로서, 선택된 플러시 요청은 복수의 플러시 요청 중에서 N번째 플러시 요청에 대응하고, N은 3 이상의 정수일 수 있다.As an embodiment, the selected flush request corresponds to an Nth flush request among a plurality of flush requests, and N may be an integer of 3 or more.

실시 예로서, 입출력 인터페이스는: 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 1 서브셋, 복수의 플러시 요청 중 제 1 플러시 요청, 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 1 서브셋, 복수의 플러시 요청 중 제 2 플러시 요청, 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 2 서브셋, 복수의 플러시 요청 중 제 3 플러시 요청, 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 2 서브셋, 및 선택된 플러시 요청을 인터셉트하도록 구성될 수 있다.As an embodiment, the input/output interface includes: a first subset of data write inputs/outputs among a plurality of write inputs/outputs, a first flush request among a plurality of flush requests, a first subset of metadata write inputs/outputs among a plurality of write inputs/outputs, and a plurality of flush requests. Configuration to intercept a second flush request, a second subset of data write I/O among a plurality of write I/Os, a third flush request among a plurality of flush requests, a second subset of metadata write I/O among a plurality of write I/Os, and a selected flush request Can be.

실시 예로서, 순서 변경 로직부는: 데이터 쓰기 입출력의 제 1 서브셋, 메타데이터 쓰기 입출력의 제 1 서브셋, 데이터 쓰기 입출력의 제 2 서브셋, 및 메타데이터 쓰기 입출력의 제 2 서브셋에 포함되는 복수의 쓰기 입출력의 순서를 변경하여 복수의 쓰기 입출력과 관련된 논리 블록 어드레스들을 오름차순 또는 내림차순으로 배열하고; 데이터 쓰기 입출력의 제 1 서브셋, 메타데이터 쓰기 입출력의 제 1 서브셋, 데이터 쓰기 입출력의 제 2 서브셋, 및 메타데이터 쓰기 입출력의 제 2 서브셋에 포함되는 변경된 순서의 복수의 쓰기 입출력을 결합하여 결합된 쓰기 입출력을 생성하도록 구성될 수 있다.As an embodiment, the order change logic unit: a plurality of write inputs/outputs included in a first subset of data write inputs/outputs, a first subset of metadata write inputs/outputs, a second subset of data write inputs/outputs, and a second subset of metadata write inputs/outputs Arranging logical block addresses related to a plurality of write inputs/outputs in ascending or descending order by changing the order of; Combined write by combining a plurality of write inputs and outputs in a changed order included in the first subset of data write input/output, the first subset of metadata write input/output, the second subset of data write input/output, and the second subset of metadata write input/output It can be configured to generate input and output.

실시 예로서, 순서 변경 로직부는: 복수의 쓰기 입출력, 헤더, 및 푸터를 재매핑 메모리부에 복사하여 결합된 쓰기 입출력을 생성하도록 구성되되, 결합된 쓰기 입출력에 포함되는 복수의 쓰기 입출력에 각각 대응하는 복수의 논리 블록 어드레스는 오름차순 또는 내림차순으로 배열되고, 결합된 쓰기 입출력에 포함되는 복수의 쓰기 입출력 각각은 재매핑 메모리부에서 물리적으로 서로 인접할 수 있다.As an embodiment, the order change logic unit is configured to generate a combined write input/output by copying a plurality of write inputs/outputs, headers, and footers to the remapping memory unit, each corresponding to a plurality of write inputs/outputs included in the combined write inputs/outputs A plurality of logical block addresses are arranged in an ascending or descending order, and each of the plurality of write inputs and outputs included in the combined write inputs and outputs may be physically adjacent to each other in the remap memory unit.

실시 예로서, 플러시 제어 로직부는: 선택된 플러시 요청에 응답하여, 각각이 물리적으로 서로 인접하는 복수의 쓰기 입출력을 포함하는 결합된 쓰기 입출력이 불휘발성 스토리지 장치에 저장되게 하도록 구성될 수 있다.As an embodiment, the flush control logic unit: In response to the selected flush request, a combined write input/output including a plurality of write inputs and outputs, each of which is physically adjacent to each other, may be stored in a nonvolatile storage device.

실시 예로서, 순서 변경 로직부는: 복수의 쓰기 입출력에 포함되는 무작위의 쓰기 입출력들을 순차적인 쓰기 입출력들로 변환하도록 구성될 수 있다.As an embodiment, the order change logic unit: may be configured to convert random write inputs/outputs included in a plurality of write inputs/outputs into sequential write inputs/outputs.

본 발명의 다른 실시 예에 따른 입출력 인터셉터 로직은, 스토리지 스택과 통신하도록 연결되고, 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하도록 구성되는 입출력 인터페이스; 입출력 인터페이스로부터 복수의 쓰기 입출력을 제공받고, 복수의 쓰기 입출력을 저장하도록 구성되는 복수의 임시 쓰기 홀딩 버퍼; 복수의 임시 쓰기 홀딩 버퍼를 홀드하도록 구성되는 멀티 버퍼 홀딩 큐; 및 입출력 인터페이스로부터 복수의 플러시 요청을 제공받고, 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 어플리케이션으로 알리고, 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여 멀티 버퍼 홀딩 큐가 복수의 쓰기 입출력을 복수의 임시 쓰기 홀딩 버퍼로부터 불휘발성 스토리지 장치로 전달하게 하도록 구성되는 플러시 제어 로직부를 포함할 수 있다.An input/output interceptor logic according to another embodiment of the present invention may include: an input/output interface connected to communicate with a storage stack and configured to intercept a plurality of write input/output and a plurality of flush requests from an application; A plurality of temporary write holding buffers configured to receive a plurality of write inputs/outputs from the input/output interface and store a plurality of write inputs/outputs; A multi-buffer holding queue configured to hold a plurality of temporary write holding buffers; And receiving multiple flush requests from the I/O interface, notifying the application of the completion of write I/Os for multiple write I/Os without storing the plurality of write I/Os in the nonvolatile storage device, and responding to a selected flush request from among the plurality of flush requests. The multi-buffer holding queue may include a flush control logic unit configured to transfer a plurality of write inputs/outputs from the plurality of temporary write holding buffers to the nonvolatile storage device.

실시 예로서, 입출력 인터페이스는: 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 1 서브셋, 복수의 플러시 요청 중 제 1 플러시 요청, 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 1 서브셋, 복수의 플러시 요청 중 제 2 플러시 요청, 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 2 서브셋, 복수의 플러시 요청 중 제 3 플러시 요청, 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 2 서브셋, 및 선택된 플러시 요청을 인터셉트하도록 구성될 수 있다.As an embodiment, the input/output interface includes: a first subset of data write inputs/outputs among a plurality of write inputs/outputs, a first flush request among a plurality of flush requests, a first subset of metadata write inputs/outputs among a plurality of write inputs/outputs, and a plurality of flush requests. Configuration to intercept a second flush request, a second subset of data write I/O among a plurality of write I/Os, a third flush request among a plurality of flush requests, a second subset of metadata write I/O among a plurality of write I/Os, and a selected flush request Can be.

실시 예로서, 복수의 임시 쓰기 홀딩 버퍼는 제 1 임시 쓰기 홀딩 버퍼, 제 2 임시 쓰기 홀딩 버퍼, 제 3 임시 쓰기 홀딩 버퍼, 및 제 4 임시 쓰기 홀딩 버퍼를 포함할 수 있다. 나아가, 플러시 제어 로직부는: 데이터 쓰기 입출력의 제 1 서브셋이 제 1 임시 쓰기 홀딩 버퍼에 저장되게 하고, 메타데이터 쓰기 입출력의 제 1 서브셋이 제 2 임시 쓰기 홀딩 버퍼에 저장되게 하고, 데이터 쓰기 입출력의 제 2 서브셋이 제 3 임시 쓰기 홀딩 버퍼에 저장되게 하고, 메타데이터 쓰기 입출력의 제 2 서브셋이 제 4 임시 쓰기 홀딩 버퍼에 저장되게 하도록 구성될 수 있다.As an embodiment, the plurality of temporary write holding buffers may include a first temporary write holding buffer, a second temporary write holding buffer, a third temporary write holding buffer, and a fourth temporary write holding buffer. Further, the flush control logic unit: causes a first subset of data write input/output to be stored in a first temporary write holding buffer, a first subset of metadata write input/output is stored in a second temporary write holding buffer, and The second subset may be stored in the third temporary write holding buffer, and the second subset of metadata write input/output may be stored in the fourth temporary write holding buffer.

본 발명의 또 다른 실시 예에 따라 입출력 인터셉터 로직을 이용하여 어플리케이션으로부터 입출력들을 인터셉트하기 위해 컴퓨터로 구현되는 방법은, 입출력 인터셉터 로직의 입출력 인터페이스에 의해, 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하는 단계; 입출력 인터페이스에 의해 인터셉트된 복수의 쓰기 입출력을 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장하는 단계; 입출력 인터셉터 로직의 순서 변경 로직부에 의해, 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장된 복수의 쓰기 입출력의 순서를 변경하는 단계; 순서 변경 로직부에 의해, 변경된 순서의 복수의 쓰기 입출력을 결합하여 결합된 쓰기 입출력을 생성하는 단계; 입출력 인터셉터 로직의 플러시 제어 로직부에 의해, 입출력 인터페이스로부터 복수의 플러시 요청을 제공받는 단계; 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고, 플러시 제어 로직부에 의해, 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 어플리케이션으로 알리는 단계; 및 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여, 플러시 제어 로직부에 의해, 결합된 쓰기 입출력이 불휘발성 스토리지 장치에 저장되도록 하는 단계를 포함할 수 있다.According to another embodiment of the present invention, a computer-implemented method for intercepting inputs and outputs from an application using an input/output interceptor logic is to perform a plurality of write inputs and outputs and a plurality of flush requests from an application by an input/output interface of the input/output interceptor logic. Intercepting; Storing a plurality of write inputs/outputs intercepted by the input/output interface in one or more temporary write holding buffers; Changing an order of a plurality of write inputs/outputs stored in one or more temporary write holding buffers by an order change logic unit of the input/output interceptor logic; Generating a combined write input/output by combining a plurality of write inputs and outputs in a changed order, by an order change logic unit; Receiving a plurality of flush requests from an input/output interface by a flush control logic unit of the input/output interceptor logic; Not storing the plurality of write inputs/outputs in the nonvolatile storage device, but notifying the application of completion of write inputs and outputs for the plurality of write inputs/outputs by the flush control logic unit; And in response to a flush request selected from among a plurality of flush requests, allowing the combined write input/output to be stored in the nonvolatile storage device by the flush control logic unit.

실시 예로서, 인터셉트하는 단계는: 입출력 인터페이스에 의해, 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 1 서브셋, 복수의 플러시 요청 중 제 1 플러시 요청, 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 1 서브셋, 복수의 플러시 요청 중 제 2 플러시 요청, 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 2 서브셋, 복수의 플러시 요청 중 제 3 플러시 요청, 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 2 서브셋, 및 선택된 플러시 요청을 인터셉트하는 단계를 포함할 수 있다.As an embodiment, the intercepting step includes: a first subset of data write input/output among a plurality of write input/output, a first flush request among a plurality of flush requests, and a first subset of metadata write input/output among a plurality of write input/output by an input/output interface , A second flush request among a plurality of flush requests, a second subset of data write input/output among a plurality of write inputs and outputs, a third flush request among a plurality of flush requests, a second subset of metadata write input/output among a plurality of write inputs, and a selected Intercepting the flush request may be included.

실시 예로서, 변경하는 단계는: 순서 변경 로직부에 의해, 데이터 쓰기 입출력의 제 1 서브셋, 메타데이터 쓰기 입출력의 제 1 서브셋, 데이터 쓰기 입출력의 제 2 서브셋, 및 메타데이터 쓰기 입출력의 제 2 서브셋에 포함되는 복수의 쓰기 입출력의 순서를 변경하는 단계를 포함할 수 있다. 나아가, 생성하는 단계는: 순서 변경 로직부에 의해, 데이터 쓰기 입출력의 제 1 서브셋, 메타데이터 쓰기 입출력의 제 1 서브셋, 데이터 쓰기 입출력의 제 2 서브셋, 및 메타데이터 쓰기 입출력의 제 2 서브셋에 포함되는 변경된 순서의 복수의 쓰기 입출력을 결합하여 결합된 쓰기 입출력을 생성할 수 있다.As an embodiment, the changing steps include: a first subset of data write input/output, a first subset of metadata write input/output, a second subset of data write input/output, and a second subset of metadata write input/output, by an order change logic unit. It may include changing the order of a plurality of write input/output included in the. Further, the steps of generating are: included in a first subset of data write input/output, a first subset of metadata write input/output, a second subset of data write input/output, and a second subset of metadata write input/output by the order change logic unit. A combined write input/output may be generated by combining a plurality of write input/output in a changed order.

실시 예로서, 생성하는 단계는: 순서 변경 로직부에 의해, 복수의 쓰기 입출력, 헤더, 및 푸터를 재매핑 메모리부에 복사하여 결합된 쓰기 입출력을 생성하는 단계를 포함하되, 결합된 쓰기 입출력에 포함되는 복수의 쓰기 입출력에 각각 대응하는 복수의 논리 블록 어드레스는 오름차순 또는 내림차순으로 배열되고, 결합된 쓰기 입출력에 포함되는 복수의 쓰기 입출력 각각은 재매핑 메모리부에서 물리적으로 서로 인접할 수 있다.As an embodiment, the generating step includes: generating a combined write input/output by copying a plurality of write input/output, header, and footer to a remapping memory unit by an order change logic unit, A plurality of logical block addresses respectively corresponding to the included plurality of write inputs and outputs are arranged in an ascending or descending order, and each of the plurality of write inputs and outputs included in the combined write inputs and outputs may be physically adjacent to each other in the remap memory unit.

실시 예로서, 저장되도록 하는 단계는: 선택된 플러시 요청에 응답하여, 플러시 제어 로직부에 의해, 각각이 물리적으로 서로 인접하는 복수의 쓰기 입출력을 포함하는 결합된 쓰기 입출력이 불휘발성 스토리지 장치에 저장되도록 하는 단계를 포함할 수 있다.As an embodiment, the step of causing the storage to be stored includes: In response to the selected flush request, the combined write input/output including a plurality of write input/outputs each physically adjacent to each other is stored in the nonvolatile storage device by the flush control logic unit. It may include the step of.

본 발명의 또 다른 실시 예에 따른 비일시적으로 컴퓨터로 읽히는 저장 매체는 컴퓨팅 장치 및 입출력 인터셉터 로직을 이용하여 처리되는 명령어를 저장할 수 있다. 저장된 명령어는: 입출력 인터셉터 로직의 입출력 인터페이스에 의해, 컴퓨팅 장치에서 실행되는 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하는 단계; 입출력 인터페이스에 의해 인터셉트된 복수의 쓰기 입출력을 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장하는 단계; 입출력 인터셉터 로직의 순서 변경 로직부에 의해, 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장된 복수의 쓰기 입출력의 순서를 변경하는 단계; 순서 변경 로직부에 의해, 변경된 순서의 복수의 쓰기 입출력을 결합하여 결합된 쓰기 입출력을 생성하는 단계; 입출력 인터셉터 로직의 플러시 제어 로직부에 의해, 입출력 인터페이스로부터 복수의 플러시 요청을 제공받는 단계; 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고, 플러시 제어 로직부에 의해, 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 어플리케이션으로 알리는 단계; 및 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여, 플러시 제어 로직부에 의해, 결합된 쓰기 입출력이 불휘발성 스토리지 장치에 저장되도록 하는 단계를 컴퓨팅 장치에서 실행하도록 구성될 수 있다.A storage medium that is non-temporarily read by a computer according to another embodiment of the present invention may store instructions processed using a computing device and input/output interceptor logic. The stored instructions include: intercepting a plurality of write inputs and outputs and a plurality of flush requests from an application executed in the computing device by an input/output interface of the input/output interceptor logic; Storing a plurality of write inputs/outputs intercepted by the input/output interface in one or more temporary write holding buffers; Changing an order of a plurality of write inputs/outputs stored in one or more temporary write holding buffers by an order change logic unit of the input/output interceptor logic; Generating a combined write input/output by combining a plurality of write inputs and outputs in a changed order, by an order change logic unit; Receiving a plurality of flush requests from an input/output interface by a flush control logic unit of the input/output interceptor logic; Not storing the plurality of write inputs/outputs in the nonvolatile storage device, but notifying the application of completion of write inputs and outputs for the plurality of write inputs/outputs by the flush control logic unit; And in response to a flush request selected from among the plurality of flush requests, the flush control logic unit may be configured to perform the step of storing the combined write input/output in the nonvolatile storage device in the computing device.

본 발명의 또 다른 실시 예에 따라 입출력 인터셉터 로직을 이용하여 어플리케이션으로부터 입출력들을 인터셉트하기 위해 컴퓨터로 구현되는 방법은, 입출력 인터셉터 로직의 입출력 인터페이스에 의해, 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하는 단계; 입출력 인터페이스에 의해 인터셉트된 복수의 쓰기 입출력을 복수의 임시 쓰기 홀딩 버퍼에 저장하는 단계; 입출력 인터셉터 로직의 멀티 버퍼 홀딩 큐에 의해, 복수의 임시 쓰기 홀딩 버퍼를 홀드하는 단계; 입출력 인터셉터 로직의 플러시 제어 로직부에 의해, 입출력 인터페이스로부터 복수의 플러시 요청을 제공받는 단계; 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고, 플러시 제어 로직부에 의해, 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 어플리케이션으로 알리는 단계; 및 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여, 플러시 제어 로직부에 의해, 멀티 버퍼 홀딩 큐가 복수의 쓰기 입출력을 복수의 임시 쓰기 홀딩 버퍼로부터 불휘발성 스토리지 장치로 전달하도록 하는 단계를 포함할 수 있다.According to another embodiment of the present invention, a computer-implemented method for intercepting inputs and outputs from an application using an input/output interceptor logic provides a plurality of write inputs and outputs and a plurality of flush requests from the application by the input/output interface of the input/output interceptor logic. Intercepting; Storing a plurality of write inputs/outputs intercepted by the input/output interface in a plurality of temporary write holding buffers; Holding a plurality of temporary write holding buffers by a multi-buffer holding queue of the input/output interceptor logic; Receiving a plurality of flush requests from an input/output interface by a flush control logic unit of the input/output interceptor logic; Not storing the plurality of write inputs/outputs in the nonvolatile storage device, but notifying the application of completion of write inputs and outputs for the plurality of write inputs/outputs by the flush control logic unit; And in response to a flush request selected from among the plurality of flush requests, allowing the multi-buffer holding queue to transfer the plurality of write inputs/outputs from the plurality of temporary write holding buffers to the nonvolatile storage device by the flush control logic unit. have.

실시 예로서, 인터셉트하는 단계는: 입출력 인터페이스에 의해, 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 1 서브셋, 복수의 플러시 요청 중 제 1 플러시 요청, 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 1 서브셋, 복수의 플러시 요청 중 제 2 플러시 요청, 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 2 서브셋, 복수의 플러시 요청 중 제 3 플러시 요청, 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 2 서브셋, 및 선택된 플러시 요청을 인터셉트하는 단계를 포함할 수 있다.As an embodiment, the intercepting step includes: a first subset of data write input/output among a plurality of write input/output, a first flush request among a plurality of flush requests, and a first subset of metadata write input/output among a plurality of write input/output by an input/output interface , A second flush request among a plurality of flush requests, a second subset of data write input/output among a plurality of write inputs and outputs, a third flush request among a plurality of flush requests, a second subset of metadata write input/output among a plurality of write inputs, and a selected Intercepting the flush request may be included.

실시 예로서, 복수의 임시 쓰기 홀딩 버퍼는 제 1 임시 쓰기 홀딩 버퍼, 제 2 임시 쓰기 홀딩 버퍼, 제 3 임시 쓰기 홀딩 버퍼, 및 제 4 임시 쓰기 홀딩 버퍼를 포함할 수 있다. 나아가, 저장하는 단계는: 플러시 제어 로직부에 의해, 데이터 쓰기 입출력의 제 1 서브셋이 제 1 임시 쓰기 홀딩 버퍼에 저장되게 하고, 메타데이터 쓰기 입출력의 제 1 서브셋이 제 2 임시 쓰기 홀딩 버퍼에 저장되게 하고, 데이터 쓰기 입출력의 제 2 서브셋이 제 3 임시 쓰기 홀딩 버퍼에 저장되게 하고, 메타데이터 쓰기 입출력의 제 2 서브셋이 제 4 임시 쓰기 홀딩 버퍼에 저장되게 하는 단계를 포함할 수 있다.As an embodiment, the plurality of temporary write holding buffers may include a first temporary write holding buffer, a second temporary write holding buffer, a third temporary write holding buffer, and a fourth temporary write holding buffer. Further, the storing step may include: by the flush control logic unit, a first subset of data write input/output is stored in a first temporary write holding buffer, and a first subset of metadata write input/output is stored in a second temporary write holding buffer. And allowing a second subset of data write input/output to be stored in a third temporary write holding buffer, and causing the second subset of metadata write input/output to be stored in a fourth temporary write holding buffer.

본 발명의 또 다른 실시 예에 따른 비일시적으로 컴퓨터로 읽히는 저장 매체는 컴퓨팅 장치 및 입출력 인터셉터 로직을 이용하여 처리되는 명령어를 저장할 수 있다. 저장된 명령어는: 입출력 인터셉터 로직의 입출력 인터페이스에 의해, 컴퓨팅 장치에서 실행되는 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하는 단계; 입출력 인터페이스에 의해 인터셉트된 복수의 쓰기 입출력을 복수의 임시 쓰기 홀딩 버퍼에 저장하는 단계; 입출력 인터셉터 로직의 멀티 버퍼 홀딩 큐에 의해, 복수의 임시 쓰기 홀딩 버퍼를 홀드하는 단계; 입출력 인터셉터 로직의 플러시 제어 로직부에 의해, 입출력 인터페이스로부터 복수의 플러시 요청을 제공받는 단계; 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고, 플러시 제어 로직부에 의해, 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 어플리케이션으로 알리는 단계; 및 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여, 플러시 제어 로직부에 의해, 멀티 버퍼 홀딩 큐가 복수의 쓰기 입출력을 복수의 임시 쓰기 홀딩 버퍼로부터 불휘발성 스토리지 장치로 전달하도록 하는 단계를 컴퓨팅 장치에서 실행하도록 구성될 수 있다.A storage medium that is non-temporarily read by a computer according to another embodiment of the present invention may store instructions processed using a computing device and input/output interceptor logic. The stored instructions include: intercepting a plurality of write inputs and outputs and a plurality of flush requests from an application executed in the computing device by an input/output interface of the input/output interceptor logic; Storing a plurality of write inputs/outputs intercepted by the input/output interface in a plurality of temporary write holding buffers; Holding a plurality of temporary write holding buffers by a multi-buffer holding queue of the input/output interceptor logic; Receiving a plurality of flush requests from an input/output interface by a flush control logic unit of the input/output interceptor logic; Not storing the plurality of write inputs/outputs in the nonvolatile storage device, but notifying the application of completion of write inputs and outputs for the plurality of write inputs/outputs by the flush control logic unit; And in response to a flush request selected from among the plurality of flush requests, allowing the multi-buffer holding queue to transfer the plurality of write inputs and outputs from the plurality of temporary write holding buffers to the nonvolatile storage device by the flush control logic unit. It can be configured to run.

본 발명의 또 다른 실시 예에 따른 시스템은 어플리케이션 스페이스, 커널 스페이스, 및 하나 이상의 물리적인 하드웨어 장치들을 포함하는 이동식 장치; 및 커널 스페이스에서 동작하도록 구성되는 입출력 인터셉터 로직부를 포함할 수 있다. 이 실시 예에서, 입출력 인터셉터 로직부는: 스토리지 스택과 통신하도록 연결되고, 어플리케이션 스페이스의 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하도록 구성되는 입출력 인터페이스; 입출력 인터페이스로부터 복수의 쓰기 입출력을 제공받고, 복수의 쓰기 입출력을 저장하도록 구성되는 하나 이상의 임시 쓰기 홀딩 버퍼들; 하나 이상의 임시 쓰기 홀딩 버퍼들과 통신하도록 연결되고, 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장된 복수의 쓰기 입출력의 순서를 변경하고 변경된 순서의 복수의 쓰기 입출력을 결합하여 결합된 쓰기 입출력을 생성하도록 구성되는 순서 변경 로직부; 및 입출력 인터페이스로부터 복수의 플러시 요청을 제공받고, 복수의 쓰기 입출력을 하나 이상의 물리적인 하드웨어 장치들에 포함되는 불휘발성 스토리지 장치에 저장하지 않고 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 어플리케이션으로 알리고, 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여 결합된 쓰기 입출력이 불휘발성 스토리지 장치에 저장되게 하도록 구성되는 플러시 제어 로직부를 포함할 수 있다.A system according to another embodiment of the present invention includes a mobile device including an application space, a kernel space, and one or more physical hardware devices; And an input/output interceptor logic unit configured to operate in a kernel space. In this embodiment, the input/output interceptor logic unit includes: an input/output interface connected to communicate with the storage stack and configured to intercept a plurality of write input/output and a plurality of flush requests from an application in an application space; One or more temporary write holding buffers configured to receive a plurality of write inputs/outputs from the input/output interface and store a plurality of write inputs/outputs; It is connected to communicate with one or more temporary write holding buffers, and is configured to change the order of the plurality of write inputs and outputs stored in the one or more temporary write holding buffers and combine the plurality of write inputs and outputs in the changed order to generate a combined write input/output. An order change logic unit; And receiving a plurality of flush requests from the input/output interface, not storing the plurality of write inputs and outputs in a nonvolatile storage device included in one or more physical hardware devices, and notifying the application of the completion of write inputs and outputs for the plurality of write inputs/outputs, and A flush control logic unit configured to cause the combined write input/output to be stored in the nonvolatile storage device in response to a flush request selected from among flush requests of may be included.

본 발명의 실시 예에 따르면, 개별적인 쓰기 입출력들 각각이 독립적으로 불휘발성 스토리지 장치로 전송됨에 따라 발생하는 오버헤드(Overhead)를 줄임으로써, 데이터 저장의 성능이 향상될 수 있다. 나아가, 데이터가 더 효율적으로 기록될 수 있기 때문에, 전력 소모(예컨대, 이동식 장치에 포함되는 배터리의 소모)가 감소할 수 있다.According to an embodiment of the present invention, data storage performance may be improved by reducing an overhead that occurs when each individual write input/output is independently transmitted to a nonvolatile storage device. Furthermore, since data can be recorded more efficiently, power consumption (eg, consumption of a battery included in a mobile device) can be reduced.

도 1은 본 발명의 실시 예에 따른 시스템 스택(System Stack)을 보여주는 블록도이다.
도 2는 도 1의 시스템 스택에 포함되는 여러 구성 요소들을 보여주는 개념도이다.
도 3은 도 1 및 도 2의 입출력 인터셉터 로직부에 포함되는 순서 변경(Re-order) 로직부 및 임시 쓰기 홀딩 버퍼(Temporary Write Holding Buffer)를 보여주는 개념도이다.
도 4는 도 1 및 도 2의 입출력 인터셉터 로직부에 포함되는 순서 변경 로직부, 및 재매핑(Re-mapped) 메모리부를 보여주는 개념도이다.
도 5는 도 1 및 도 2의 입출력 인터셉터 로직부에 포함되는 플러시 제어 로직부 및 임시 쓰기 홀딩 버퍼들을 보여주는 개념도이다.
도 6은 도 1 및 도 2의 입출력 인터셉터 로직부에 포함되는 플러시 제어 로직부 및 임시 쓰기 홀딩 버퍼들을 보여주는 다른 개념도이다.
도 7 내지 도 12는 본 발명의 실시 예에 따른 도 1의 입출력 인터셉터 로직부가 내장될 수 있는 다양한 장치들을 보여주는 개념도들이다.
도 13은 본 발명의 실시 예에 따른 입출력 인터셉터 로직부를 이용하여 어플리케이션으로부터 입출력들을 인터셉트하는 방법을 설명하는 흐름도이다.
도 14는 본 발명의 실시 예에 따른 입출력 인터셉터 로직부를 이용하여 어플리케이션으로부터 입출력들을 인터셉트하는 다른 방법을 설명하는 흐름도이다.
도 15는 본 발명의 실시 예에 따른 입출력 인터셉터 로직부를 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
1 is a block diagram showing a system stack according to an embodiment of the present invention.
FIG. 2 is a conceptual diagram illustrating various components included in the system stack of FIG. 1.
3 is a conceptual diagram illustrating a re-order logic unit and a temporary write holding buffer included in the input/output interceptor logic unit of FIGS. 1 and 2.
4 is a conceptual diagram illustrating an order change logic unit included in the input/output interceptor logic unit of FIGS. 1 and 2 and a re-mapped memory unit.
5 is a conceptual diagram illustrating a flush control logic unit and temporary write holding buffers included in the input/output interceptor logic unit of FIGS. 1 and 2.
6 is another conceptual diagram illustrating a flush control logic unit and temporary write holding buffers included in the input/output interceptor logic unit of FIGS. 1 and 2.
7 to 12 are conceptual diagrams illustrating various devices in which the input/output interceptor logic unit of FIG. 1 may be embedded according to an embodiment of the present invention.
13 is a flowchart illustrating a method of intercepting inputs and outputs from an application using an input/output interceptor logic unit according to an embodiment of the present invention.
14 is a flowchart illustrating another method of intercepting inputs and outputs from an application using an input/output interceptor logic unit according to an embodiment of the present invention.
15 is a block diagram illustrating a computing system including an input/output interceptor logic unit according to an embodiment of the present invention.

전술한 특성 및 이하 상세한 설명은 모두 본 발명의 설명 및 이해를 돕기 위한 예시적인 사항이다. 즉, 본 발명은 이와 같은 실시 예에 한정되지 않고 다른 형태로 구체화될 수 있다. 다음 실시 형태들은 단지 본 발명을 완전히 개시하기 위한 예시이며, 본 발명이 속하는 기술 분야의 통상의 기술자들에게 본 발명을 전달하기 위한 설명이다. 따라서, 본 발명의 구성 요소들을 구현하기 위한 방법이 여럿 있는 경우에는, 이들 방법 중 특정한 것 또는 이와 동일성 있는 것 가운데 어떠한 것으로든 본 발명의 구현이 가능함을 분명히 할 필요가 있다.The above-described characteristics and the detailed description below are all exemplary matters to aid in the description and understanding of the present invention. That is, the present invention is not limited to this embodiment and may be embodied in other forms. The following embodiments are merely examples for completely disclosing the present invention, and are explanations for conveying the present invention to those skilled in the art to which the present invention pertains. Accordingly, when there are multiple methods for implementing the constituent elements of the present invention, it is necessary to clarify that the present invention can be implemented in any of the specific ones or equivalents thereof.

본 명세서에서 어떤 구성이 특정 요소들을 포함한다는 언급이 있는 경우, 또는 어떤 과정이 특정 단계들을 포함한다는 언급이 있는 경우는, 그 외 다른 요소 또는 다른 단계들이 더 포함될 수 있음을 의미한다. 즉, 본 명세서에서 사용되는 용어들은 특정 실시 형태를 설명하기 위한 것일 뿐이고, 본 발명의 개념을 한정하기 위한 것이 아니다. 나아가, 발명의 이해를 돕기 위해 설명한 예시들은 그것의 상보적인 실시 예도 포함한다.In the present specification, when there is a mention that a certain component includes specific elements, or when there is a mention that a certain process includes specific steps, it means that other elements or other steps may be further included. That is, terms used in the present specification are only for describing specific embodiments, and are not intended to limit the concept of the present invention. Furthermore, examples described to aid in understanding the invention also include complementary embodiments thereof.

본 명세서에서 사용되는 용어들은 본 발명이 속하는 기술 분야의 통상의 기술자들이 일반적으로 이해하는 의미를 갖는다. 보편적으로 사용되는 용어들은 본 명세서의 맥락에 따라 일관적인 의미로 해석되어야 한다. 또한, 본 명세서에서 사용되는 용어들은, 그 의미가 명확히 정의된 경우가 아니라면, 지나치게 이상적이거나 형식적인 의미로 해석되지 않아야 한다.Terms used in the present specification have the meanings generally understood by those of ordinary skill in the art to which the present invention belongs. Terms commonly used should be interpreted in a consistent sense according to the context of the present specification. In addition, terms used in the present specification should not be interpreted as excessively ideal or formal meanings unless the meaning is clearly defined.

본 발명의 실시 예는 ARM 프로세서와 같은 프로세서에 의해 구현될 수 있다. 다른 종류의 프로세서 또는 ASICs(Application Specific Integrated Circuits) 및/또는 펌웨어(Firmware) 역시 본 발명의 실시 예를 구현하기 위해 이용될 수 있다. 본 발명의 실시 예는 스마트폰, 태블릿, 노트북 컴퓨터 등과 같은 다양한 이동식 장치, 또는 데스크톱 컴퓨터, 라우터 등과 같은 다양한 고정식 장치들의 프로세서 및/또는 메모리 모듈 내에 구현될 수 있다. 이하 첨부된 도면을 통하여 본 발명의 실시 예가 설명된다.An embodiment of the present invention may be implemented by a processor such as an ARM processor. Other types of processors or application specific integrated circuits (ASICs) and/or firmware may also be used to implement an embodiment of the present invention. Embodiments of the present invention may be implemented in processors and/or memory modules of various mobile devices such as smart phones, tablets, notebook computers, etc., or various fixed devices such as desktop computers and routers. Hereinafter, embodiments of the present invention will be described with reference to the accompanying drawings.

도 1은 본 발명의 실시 예에 따른 시스템 스택(System Stack)을 보여주는 블록도이다. 시스템 스택(100)은 어플리케이션 스페이스(Application Space; 105), 커널 스페이스(Kernal Space; 110), 및 물리적인 하드웨어 장치들(115)을 포함할 수 있다. 본 발명의 일 실시 예에 따르면, 커널 스페이스(110) 내에서 입출력 인터셉터(Interceptor) 로직부(120)가 동작할 수 있다. 다른 실시 예에서, 입출력 인터셉터 로직부(120)는 어플리케이션 스페이스(105) 내에서 동작하거나, 다른 적당한 컴퓨팅 장치의 다른 부분 또는 스페이스에 내장되어 동작할 수 있다. 시스템 스택(100)은, 예로서, 스마트폰, 태블릿, 카메라, 랩톱, 컴퓨터 등과 같은 이동식 장치에 포함될 수 있는데, 이는 뒤에서 더 설명될 것이다.1 is a block diagram showing a system stack according to an embodiment of the present invention. The system stack 100 may include an application space 105, a kernel space 110, and physical hardware devices 115. According to an embodiment of the present invention, the input/output interceptor logic unit 120 may operate within the kernel space 110. In another embodiment, the input/output interceptor logic unit 120 may operate within the application space 105 or may be embedded in a different part or space of another suitable computing device and operated. The system stack 100 may be included in a mobile device such as, for example, a smartphone, tablet, camera, laptop, computer, and the like, which will be described further below.

도 1에 나타낸 것과 같이, 시스템 스택(100)은 스토리지 스택(Storage Stack; 125)을 포함할 수 있다. 스토리지 스택(125)은 어플리케이션 스페이스(105)의 하나 이상의 어플리케이션들(130; 예컨대, 어플리케이션(132))과 물리적인 하드웨어 장치들(115)의 하나 이상의 불휘발성 스토리지 장치들(135) 사이에서 입출력의 송신 및 수신을 가능하게 할 수 있다. 하나 이상의 불휘발성 스토리지 장치들(135)은 SSD(Solid State Drive; 140), 플래시 메모리(Flash Memory; 145), HDD(Hard Disk Drive; 150) 등을 포함할 수 있다.As shown in FIG. 1, the system stack 100 may include a storage stack 125. The storage stack 125 performs input/output between one or more applications 130 (eg, the application 132) of the application space 105 and one or more nonvolatile storage devices 135 of the physical hardware devices 115. Transmit and receive can be enabled. The one or more nonvolatile storage devices 135 may include a solid state drive (SSD) 140, a flash memory 145, a hard disk drive (HDD) 150, and the like.

입출력 인터셉터 로직부(120)는 입출력 인터페이스(Input/Output Interface; 155), 하나 이상의 임시 쓰기 홀딩 버퍼들(Temporary Write Holding Buffers; 160), 순서 변경(Re-order) 로직부(165), 및 플러시(Flush) 제어 로직부(170)를 포함할 수 있다. 입출력 인터페이스(155)는 스토리지 스택(125)과 연결되어 통신할 수 있다. 입출력 인터셉터 로직부(120)는 플러시 요청들을 포함하여, 어플리케이션들(130; 예컨대, 어플리케이션(132))로부터 발생하는 모든 입출력들을 인터셉트할 수 있다. 예로서, 입출력 인터페이스(155)는 어플리케이션들(130; 예컨대, 어플리케이션(132))로부터 발생하는 쓰기 입출력들, 읽기 입출력들, 및 플러시 요청들을 인터셉트할 수 있다.The input/output interceptor logic unit 120 includes an input/output interface 155, one or more temporary write holding buffers 160, a re-order logic unit 165, and a flush. A (Flush) control logic unit 170 may be included. The input/output interface 155 may be connected to and communicate with the storage stack 125. The input/output interceptor logic unit 120 may intercept all inputs and outputs generated from the applications 130 (eg, the application 132), including flush requests. For example, the input/output interface 155 may intercept write input/output, read input/output, and flush requests generated from applications 130 (eg, the application 132).

하나 이상의 임시 쓰기 홀딩 버퍼들(160)은 입출력 인터페이스(155)로부터 쓰기 입출력들을 제공받고, 그 쓰기 입출력들을 저장할 수 있다. 하나 이상의 임시 쓰기 홀딩 버퍼들(160)은 시스템 메모리의 여유 공간으로부터 미리 할당될 수 있다.One or more temporary write holding buffers 160 may receive write inputs and outputs from the input/output interface 155 and store the write inputs and outputs. One or more temporary write holding buffers 160 may be pre-allocated from the free space of the system memory.

순서 변경 로직부(165)는 하나 이상의 임시 쓰기 홀딩 버퍼들(160)과 연결되어 통신할 수 있다. 순서 변경 로직부(165)는 하나 이상의 임시 쓰기 홀딩 버퍼들(160)에 저장된 쓰기 입출력들의 순서를 변경할 수 있다. 순서 변경 로직부(165)는 변경된 순서의 쓰기 입출력들을 결합하여, 결합된 쓰기 입출력을 생성할 수 있는데, 이는 뒤에서 더 설명될 것이다.The order change logic unit 165 may be connected to and communicate with one or more temporary write holding buffers 160. The order change logic unit 165 may change the order of write inputs/outputs stored in one or more temporary write holding buffers 160. The order change logic unit 165 may generate a combined write input/output by combining the write inputs and outputs of the changed order, which will be described later.

플러시 제어 로직부(170)는 입출력 인터페이스(155)로부터 플러시 요청들을 제공받을 수 있다. 쓰기 입출력들이 하나 이상의 불휘발성 스토리지 장치들(135) 중 어딘가에 실제로 기록되지 않더라도, 플러시 제어 로직부(170)는 쓰기 입출력들에 관한 쓰기 입출력 완료를 어플리케이션들(130; 예컨대, 어플리케이션(132))로 알릴 수 있다. 실제로는 쓰기 입출력들이 특정 시점에 하나 이상의 불휘발성 스토리지 장치들(135)로 전달되지 않은 동안, 어플리케이션(132)은 쓰기 입출력들이 완료된 것으로 인식할 수 있다. 다시 말해, 쓰기 입출력들이 하나 이상의 불휘발성 스토리지 장치들(135) 중 어딘가에 실제로 기록되기 전에, 플러시 제어 로직부(170)는 쓰기 입출력들에 관한 쓰기 입출력 완료를 어플리케이션(132)으로 알릴 수 있다. 플러시 제어 로직부(170)는 플러시 요청들 중에서 선택된 N번째 플러시 요청에 응답하여(또는, 다른 기준에 따라서), 결합된 쓰기 입출력이 하나 이상의 불휘발성 스토리지 장치들(135)에 기록되도록 할 수 있는데, 이는 뒤에서 더 설명될 것이다.The flush control logic unit 170 may receive flush requests from the input/output interface 155. Even if the write inputs and outputs are not actually written to any of the one or more nonvolatile storage devices 135, the flush control logic unit 170 determines the completion of write inputs and outputs for the write inputs and outputs to the applications 130 (eg, the application 132 ). I can tell. In practice, while write inputs and outputs are not transmitted to the one or more nonvolatile storage devices 135 at a specific time, the application 132 may recognize that the write inputs and outputs are completed. In other words, before the write inputs and outputs are actually written to somewhere among the one or more nonvolatile storage devices 135, the flush control logic unit 170 may notify the application 132 of the completion of write inputs and outputs related to the write inputs and outputs. The flush control logic unit 170 may cause the combined write input/output to be written to the one or more nonvolatile storage devices 135 in response to the N-th flush request selected from among the flush requests (or according to other criteria). , Which will be explained further later.

도 2는 도 1의 시스템 스택에 포함되는 여러 구성 요소들을 보여주는 개념도이다. 도 2는 본 발명의 실시 예에 따라 시간의 흐름에 대해 발생하는 일련의 이벤트들을 보여준다.FIG. 2 is a conceptual diagram illustrating various components included in the system stack of FIG. 1. 2 is a view showing a series of events occurring over time according to an embodiment of the present invention.

입출력 인터페이스(155)는, 예로서, 어플리케이션(132)으로부터 발생하는 데이터 쓰기 입출력들(D1; 즉, W01 내지 Wn3), 메타데이터(Metadata) 쓰기 입출력들(M1; 즉, W04 내지 Wn6), 데이터 쓰기 입출력들(D2; 즉, W07 내지 Wn9), 메타데이터 쓰기 입출력들(M2; 즉, W010 내지 Wn12), 및 플러시 요청들(F0, F1, F2, F3, Fn)을 포함하는 쓰기 입출력들을 인터셉트할 수 있다. 하나 이상의 임시 쓰기 홀딩 버퍼들(160)은 입출력 인터페이스(155)로부터 쓰기 입출력들을 제공받고, 그 쓰기 입출력들을 저장할 수 있다. 하나 이상의 임시 쓰기 홀딩 버퍼들(160)에 데이터가 저장되어 있는 동안 어플리케이션(132)으로부터 읽기 입출력이 제공된 경우, 입출력 인터셉터 로직부(120)는 하나 이상의 임시 쓰기 홀딩 버퍼들(160)에 저장되어 있는 데이터의 사본을 이용하여 읽기 입출력 요청을 처리하거나, 또는, 재매핑된(Re-mapped) 메모리 위치를 이용할 수 있는데, 이는 뒤에서 더 설명될 것이다.The input/output interface 155 includes, for example, data write inputs/outputs D1 generated from the application 132; that is, W0 1 to Wn 3 , and metadata write inputs/outputs M1; that is, W0 4 to Wn. 6 ), data write inputs/outputs (D2; i.e., W0 7 to Wn 9 ), metadata write inputs/outputs (M2; i.e., W0 10 to Wn 12 ), and flush requests (F0, F1, F2, F3, Fn) Write inputs and outputs including) can be intercepted. One or more temporary write holding buffers 160 may receive write inputs and outputs from the input/output interface 155 and store the write inputs and outputs. When a read input/output is provided from the application 132 while data is stored in one or more temporary write holding buffers 160, the input/output interceptor logic unit 120 is stored in one or more temporary write holding buffers 160. A copy of the data can be used to process read I/O requests, or a re-mapped memory location can be used, which will be explained further later.

순서 변경 로직부(165)는 하나 이상의 임시 쓰기 홀딩 버퍼들(160)에 저장된 쓰기 입출력들의 순서를 변경할 수 있는데, 이는 뒤에서 더 설명될 것이다. 순서 변경 로직부(165)는 무작위의(Random) 쓰기 입출력들을 순차적인(Sequential) 쓰기 입출력들로 변환할 수 있다. 순서 변경 로직부(165)는 변경된 순서의 쓰기 입출력들(예컨대, D1, M1, D2, 및 M2)을 결합하여, 결합된 쓰기 입출력(CW)을 생성할 수 있다.The order change logic unit 165 may change the order of write inputs/outputs stored in one or more temporary write holding buffers 160, which will be described later. The order change logic unit 165 may convert random write inputs/outputs into sequential write inputs/outputs. The order change logic unit 165 may generate a combined write input/output (CW) by combining write input/outputs (eg, D1, M1, D2, and M2) of a changed order.

플러시 제어 로직부(170)는 입출력 인터페이스(155)로부터 플러시 요청들(F0, F1, F2, F3, Fn)을 제공받을 수 있다. 쓰기 입출력들이 하나 이상의 불휘발성 스토리지 장치들(135) 중 어딘가에 실제로 기록되지 않더라도, 플러시 제어 로직부(170)는 쓰기 입출력들에 대응하는 완료 메시지들(CM0, CM1, CM2, CM3, CMn)을 이용하여 쓰기 입출력 완료를 어플리케이션(132)으로 알릴 수 있다. 다시 말해, 플러시 제어 로직부(170)는 플러시 요청들 각각에 대해 거의 즉시 응답할 수 있다. 이로써, 어플리케이션(132)은, 불휘발성 스토리지 장치들(135) 중 하나에 대해 플러시 요청이 실제로 완료되는 것을 기다릴 필요 없이, 추가의 쓰기 입출력들을 계속 전송할 수 있다. 따라서, 어플리케이션(132)의 성능이 현저히 향상될 수 있다. 다시 말해, 쓰기 입출력들이 하나 이상의 불휘발성 스토리지 장치들(135) 중 어딘가에 실제로 기록되기 전에, 플러시 제어 로직부(170)는 쓰기 입출력들에 대응하는 완료 메시지들(CM0, CM1, CM2, CM3, CMn)을 이용하여 쓰기 입출력들에 관한 쓰기 입출력 완료를 어플리케이션(132)으로 알릴 수 있다.The flush control logic unit 170 may receive flush requests F0, F1, F2, F3, and Fn from the input/output interface 155. Even if the write inputs and outputs are not actually written somewhere among the one or more nonvolatile storage devices 135, the flush control logic unit 170 uses completion messages (CM0, CM1, CM2, CM3, CMn) corresponding to the write inputs and outputs. Thus, the completion of write input/output may be notified to the application 132. In other words, the flush control logic unit 170 may respond almost immediately to each of the flush requests. As a result, the application 132 may continue to transmit additional write inputs/outputs without waiting for the flush request to actually be completed for one of the nonvolatile storage devices 135. Accordingly, the performance of the application 132 can be remarkably improved. In other words, before the write inputs and outputs are actually written to somewhere among the one or more nonvolatile storage devices 135, the flush control logic unit 170 performs completion messages CM0, CM1, CM2, CM3, and CMn corresponding to the write inputs and outputs. ) Can be used to notify the application 132 of completion of write input/output regarding write input/output.

쓰기 입출력들이 하나 이상의 임시 쓰기 홀딩 버퍼들(160)에 저장되기 때문에, 플러시 제어 로직부(170)는 시간이 조금 더 흐른 뒤 결합된 쓰기 입출력(CW)이 하나 이상의 불휘발성 스토리지 장치들(135)로 전달된 플러시(CFn)에 실제로 기록되도록 할 수 있다. 다시 말해, 플러시 제어 로직부(170)는 선택적인 플러시 기법을 구현할 수 있다. 전달된 플러시(CFn)는 동기식의(Synchronous) 동작일 수 있다.Since the write inputs and outputs are stored in the one or more temporary write holding buffers 160, the flush control logic unit 170 returns the combined write inputs and outputs (CW) to one or more nonvolatile storage devices 135 after a little more time elapses. It can actually be written to the flush (CFn) passed to it. In other words, the flush control logic unit 170 may implement a selective flush technique. The transferred flush (CFn) may be a synchronous operation.

결합된 쓰기 입출력(CW)의 크기는 개별적인 쓰기 입출력들의 크기보다 크기 때문에, 개별적인 쓰기 입출력들 각각이 독립적으로 불휘발성 스토리지 장치들(135)로 전송됨에 따라 발생하는 오버헤드(Overhead)를 줄임으로써, 스토리지의 성능이 향상된다. 나아가, 쓰기 입출력들이 불휘발성 스토리지 장치들(135)보다 현저히 높은 성능(즉, 높은 처리량 및 낮은 레이턴시(Latency))을 갖는 시스템 메모리에서 완료될 수 있기 때문에, 어플리케이션의 성능이 현저히 향상된다.Since the size of the combined write input/output (CW) is larger than the size of the individual write inputs/outputs, the overhead that occurs as each of the individual write inputs/outputs is independently transmitted to the nonvolatile storage devices 135 is reduced, Storage performance is improved. Further, since write inputs and outputs can be completed in a system memory having significantly higher performance (ie, high throughput and low latency) than the nonvolatile storage devices 135, performance of an application is significantly improved.

게다가, 결합된 쓰기 입출력(CW)의 전달된 플러시(CFn)는 플러시 바운더리(Flush Boundary; Fn)와 함께 또는 플러시 바운더리(Fn)보다 조금 뒤에(예컨대, 선택된 N번째 플러시(Fn)에 응답하여) 발생하기 때문에, 데이터는 일관성을 유지할 수 있다. 갑작스러운(Sudden) 전력 손실이 발생하여 데이터가 손실되더라도, 불휘발성 스토리지 장치들(135)의 데이터는 일관성을 유지할 수 있다. 어플리케이션은 데이터의 손실을 수용할 수 있다. 왜냐하면, 어플리케이션은 불휘발성 스토리지 장치들(135)에 저장된 데이터를 읽을 수 있고, 그 저장된 데이터에 기초하여 어플리케이션의 상태를 복구하거나 다른 방식으로 롤백(Roll Back)할 수 있기 때문이다. 그런데, 데이터의 비일관성(Inconsistency)은 보통 어플리케이션에 의해 수용되지 않고, 예측하기 어려운 행위들을 야기하거나 심지어 어플리케이션이 동작할 수 없도록 만들 수 있다. 본 발명의 실시 예에 따르면, 전달된 플러시들(예컨대, CF0 및 CFn) 사이에 쓰기 입출력들을 누적한 뒤 결합된 쓰기 입출력의 데이터를 불휘발성 스토리지 장치들(135)로 플러시함으로써, 데이터의 일관성이 보장된다.In addition, the forwarded flush (CFn) of the combined write input/output (CW) is with or after the flush boundary (Fn) (e.g. in response to the selected Nth flush (Fn)). As it occurs, the data can remain consistent. Even if data is lost due to a sudden power loss, data of the nonvolatile storage devices 135 can be maintained consistently. The application can accommodate the loss of data. This is because the application can read the data stored in the nonvolatile storage devices 135 and restore the state of the application based on the stored data or can roll back in another way. However, inconsistency of data is usually not accepted by the application and can lead to unpredictable behaviors or even make the application inoperable. According to an embodiment of the present invention, by accumulating write inputs/outputs between transmitted flushes (eg, CF0 and CFn) and flushing the combined write input/output data to the nonvolatile storage devices 135, data consistency is achieved. Guaranteed.

하나 이상의 불휘발성 스토리지 장치들(135)은 플러시 확인 메시지(CFM0, CFMn)를 반환(Return)할 수 있다. 플러시 확인 메시지(CFM0, CFMn)는 입출력 인터셉터 로직부(120)로 제공되어, 불휘발성 스토리지 장치들(135)로 전달된 플러시들(CF0, CFn) 각각의 트랜잭션(Transaction)이 완료되었음을 확인하기 위해 이용될 수 있다. 이로써, 동기식의 플러시 동작들이 제공될 수 있다. 다시 말해, 특정의 동기식의 플러시 동작 동안, 쓰기 입출력들(D1, M1, D2, M2) 및 그 특정의 플러시 동작을 구성하지 않고 전달되지 않은 플러시 요청들(F1, F2, F3)은 그 특정의 플러시 동작에 이어지는 다른 동기식의 플러시 동작이 수행되기 전까지 누적되지만 불휘발성 스토리지 장치들(135)로 실제로 플러시되지는 않는다.The one or more nonvolatile storage devices 135 may return flush confirmation messages CFM0 and CFMn. The flush confirmation messages CFM0 and CFMn are provided to the input/output interceptor logic unit 120 to confirm that the transaction of each of the flushes CF0 and CFn delivered to the nonvolatile storage devices 135 has been completed. Can be used. Thereby, synchronous flush operations can be provided. In other words, during a specific synchronous flush operation, write inputs and outputs (D1, M1, D2, M2) and flush requests (F1, F2, F3) that are not transmitted without configuring the specific flush operation are It is accumulated until another synchronous flush operation subsequent to the flush operation is performed, but is not actually flushed to the nonvolatile storage devices 135.

어떤 시점에 갑작스러운 전력 손실이 발생하여도, 데이터는 일관성을 유지할 수 있다. 다시 말해, 데이터와 쌍을 이루는 메타데이터가 언제나 하나 이상의 불휘발성 스토리지 장치들(135)에 저장될 수 있다. 다시 말해, 메타데이터가 그것에 대응하는 데이터 없이 하나 이상의 불휘발성 스토리지 장치들(135)에 저장되는 경우는 생길 수 없다. 결과적으로, 본 발명의 실시 예에 따르면, 어플리케이션 및 스토리지 스택의 성능을 현저히 향상시키면서도 데이터의 일관성이 유지될 수 있다.At any point in time, no matter how sudden power loss occurs, the data can remain consistent. In other words, metadata paired with data may always be stored in one or more nonvolatile storage devices 135. In other words, it cannot occur when metadata is stored in one or more nonvolatile storage devices 135 without data corresponding thereto. As a result, according to an embodiment of the present invention, data consistency can be maintained while remarkably improving performance of an application and a storage stack.

나아가, 원래 전달될 플러시 요청인 것들(예컨대, F1, F2, 및 F3)이 전달되지 않을 플러시 요청으로 변환될 수 있기 때문에, 쓰기 입출력들의 순서를 변경하기 위한 기회의 폭이 확장된다. 보통, 쓰기 입출력들의 순서는 플러시 바운더리들 사이(예컨대, F0와 F1 사이)에서만 변경될 수 있다. 그러나, 본 발명의 실시 예에서, 보통의 플러시 요청들(예컨대, F1, F2, 및 F3)은 전달되지 않을 플러시 요청들로 변경되고, 쓰기 입출력들의 순서는 전달되지 않을 플러시 요청들의 바운더리들을 걸쳐(즉, F1, F2, 및 F3를 걸쳐 F0와 Fn 사이에서) 변경될 수 있다. 실제로 전달되는 플러시들(예컨대, CF0 및 CFn)은 확장된 시간 폭에서 발생하기 때문이다.Furthermore, since those that are flush requests that are originally to be delivered (eg, F1, F2, and F3) can be converted into flush requests that are not to be delivered, the breadth of opportunities to change the order of write I/Os is expanded. Usually, the order of write inputs and outputs can only be changed between flush boundaries (eg, between F0 and F1). However, in an embodiment of the present invention, normal flush requests (e.g., F1, F2, and F3) are changed to flush requests that will not be delivered, and the order of write I/Os spans the boundaries of the flush requests that will not be delivered ( That is, between F0 and Fn) across F1, F2, and F3. This is because the flushes that are actually delivered (eg, CF0 and CFn) occur over an extended time width.

다시 말해, 두 개의 전달된 플러시들(예컨대, CF0 및 CFn) 사이의 쓰기 입출력들의 개수는 좀 더 짧은 시간 폭에서 자주 발생하는 두 개의 전달되지 않은 플러시 요청들 사이(예컨대, F0와 F1 사이, F1과 F2 사이, F2와 F3 사이 등)의 쓰기 입출력들의 개수보다 많다. 쓰기 입출력들의 순서를 변경할 기회의 폭을 확장함으로써, 성능이 더욱 향상될 수 있다. 왜냐하면, 쓰기 입출력들이 불휘발성 스토리지 장치들(135)에 좀 더 효율적으로 기록될 수 있도록, 그리고 더 큰 크기의 하나의 쓰기 입출력으로 결합될 수 있도록, 쓰기 입출력들의 순서가 변경될 수 있기 때문이다.In other words, the number of write I/Os between two delivered flushes (e.g., CF0 and CFn) is between two undelivered flush requests that occur frequently in a shorter time span (e.g., between F0 and F1, F1 Between F2 and F2, between F2 and F3, etc.). By expanding the range of opportunities to change the order of write inputs and outputs, performance can be further improved. This is because the order of the write inputs and outputs may be changed so that the write inputs and outputs can be more efficiently written to the nonvolatile storage devices 135 and can be combined into one write input/output of a larger size.

플러시 제어 로직부(170)는 플러시 요청들 중에서 선택된 N번째 플러시 요청(예컨대, Fn)에 응답하여 결합된 쓰기 입출력(CW)이 하나 이상의 불휘발성 스토리지 장치들(135)에 기록되도록 할 수 있다. 예로서, 선택될 N번째 플러시 요청은 미리 정해질 수 있고, N은 미리 정해진 양의 정수일 수 있다. 예로서, N은 3 이상의 정수일 수 있다. 예로서, N은 4, 5, 8, 10, 16, 20, 32, 64, 100 등과 같은 정수일 수 있다. N은 양의 정수들 중 적당한 어떤 값으로든 설정될 수 있다. 전달된 플러시(CFn)가 발생하기 전에 누적된 N개의 플러시 요청들의 개수는 동작 전에 미리 정해질 수 있다. 또는, 전달된 플러시(CFn)가 발생하기 전에 누적된 N개의 플러시 요청들의 개수는 사용자 또는 시스템 관리자에 의해 수정될 수 있는 설정 가능한 값을 가질 수 있다.The flush control logic unit 170 may cause the combined write input/output (CW) to be written to the one or more nonvolatile storage devices 135 in response to the Nth flush request (eg, Fn) selected from among the flush requests. As an example, the N-th flush request to be selected may be predetermined, and N may be a predetermined positive integer. For example, N may be an integer of 3 or more. For example, N may be an integer such as 4, 5, 8, 10, 16, 20, 32, 64, 100, and the like. N can be set to any suitable value among positive integers. The number of N flush requests accumulated before the transmitted flush (CFn) occurs may be predetermined before operation. Alternatively, the number of N flush requests accumulated before the transmitted flush (CFn) occurs may have a configurable value that can be modified by a user or a system administrator.

또는, 플러시 제어 로직부(170)는 누적된 데이터의 문턱량(Threshold Amount)에 응답하여 전달된 플러시(CFn)가 결합된 쓰기 입출력(CW)을 하나 이상의 불휘발성 스토리지 장치들(135)에 기록하도록 할 수 있다. 다시 말해, 누적된 데이터의 양이 문턱량에 도달한 경우, 플러시 제어 로직부(170)는 전달될 플러시(CFn)를 발생시킬 수 있다.Alternatively, the flush control logic unit 170 writes the write input/output (CW) combined with the flush (CFn) delivered in response to a threshold amount of accumulated data to one or more nonvolatile storage devices 135 You can do it. In other words, when the amount of accumulated data reaches the threshold amount, the flush control logic unit 170 may generate a flush CFn to be transmitted.

또는, 플러시 제어 로직부(170)는 설정된 시간의 만료에 응답하여 전달된 플러시(CFn)가 결합된 쓰기 입출력(CW)을 하나 이상의 불휘발성 스토리지 장치들(135)에 기록하도록 할 수 있다. 설정된 시간은, 예로서, 5초, 10초, 30초, 60 등과 같이 초 단위로 설정될 수 있다. 이는 갑작스러운 전력 손실이 발생했을 때 데이터가 손실될 가능성을 줄여주면서도 성능을 향상시키고 데이터의 일관성을 유지시키도록 한다.Alternatively, the flush control logic unit 170 may write the write input/output CW to which the transmitted flush CFn is combined in the one or more nonvolatile storage devices 135 in response to expiration of the set time. The set time may be set in units of seconds, such as 5 seconds, 10 seconds, 30 seconds, 60, etc. This improves performance and maintains data consistency while reducing the possibility of data loss in the event of sudden power loss.

또는, 플러시 제어 로직부(170)는 누적된 데이터의 문턱량에 관한 제 1 기준(Criteria)의 만족 및 그것에 뒤이어 선택된 N번째 플러시 요청에 관한 제 2 기준의 만족에 응답하여 전달된 플러시(CFn)가 결합된 쓰기 입출력(CW)을 하나 이상의 불휘발성 스토리지 장치들(135)에 기록하도록 할 수 있다. 다시 말해, 두 개의 기준이 모두 만족된 경우 전달된 플러시(CFn)가 발생할 수 있다.Alternatively, the flush control logic unit 170 is a flush (CFn) transmitted in response to the satisfaction of the first criterion regarding the threshold amount of accumulated data and the satisfaction of the second criterion for the N-th flush request selected thereafter. The combined write input/output CW may be written to one or more nonvolatile storage devices 135. In other words, when both criteria are satisfied, a transferred flush (CFn) may occur.

입출력 인터셉터 로직부(120)의 입출력 인터페이스(155)는 데이터 쓰기 입출력들의 제 1 서브셋(D1), 제 1 플러시 요청(F1), 메타데이터 쓰기 입출력들의 제 1 서브셋(M1), 제 2 플러시 요청(F2), 데이터 쓰기 입출력들의 제 2 서브셋(D2), 제 3 플러시 요청(F3), 메타데이터 쓰기 입출력들의 제 2 서브셋(M2), 및 선택된 N번째 플러시 요청(Fn)을 제공받을 수 있다.The input/output interface 155 of the input/output interceptor logic unit 120 includes a first subset of data write inputs/outputs (D1), a first flush request (F1), a first subset of metadata write inputs/outputs (M1), and a second flush request ( F2), a second subset of data write inputs/outputs (D2), a third flush request (F3), a second subset of metadata write inputs/outputs (M2), and a selected N-th flush request (Fn) may be provided.

순서 변경 로직부(165)는 데이터 쓰기 입출력들의 제 1 서브셋(D1), 메타데이터 쓰기 입출력들의 제 1 서브셋(M1), 데이터 쓰기 입출력들의 제 2 서브셋(D2), 및 메타데이터 쓰기 입출력들의 제 2 서브셋(M2)에 포함되는 쓰기 입출력들의 순서를 변경할 수 있다. 다시 말해, 순서 변경 로직부(165)는 각각의 서브셋에 포함되는 쓰기 입출력들의 순서를 변경하거나, 여러 서브셋들에 걸쳐 쓰기 입출력들의 순서를 변경할 수 있다. 순서 변경 로직부(165)는 데이터 쓰기 입출력들의 제 1 서브셋(D1), 메타데이터 쓰기 입출력들의 제 1 서브셋(M1), 데이터 쓰기 입출력들의 제 2 서브셋(D2), 및 메타데이터 쓰기 입출력들의 제 2 서브셋(M2)을 결합하여 결합된 쓰기 입출력(CW)을 생성할 수 있다. 순서 변경 로직부(165)는 결합된 쓰기 입출력(225)에 헤더(Header; HDR) 및 푸터(Footer; FTR)를 삽입할 수 있는데, 이는 뒤에서 더 설명될 것이다.The order change logic unit 165 includes a first subset of data write inputs/outputs (D1), a first subset of metadata write inputs/outputs (M1), a second subset of data write inputs/outputs (D2), and a second subset of metadata write inputs/outputs. The order of write inputs/outputs included in the subset M2 may be changed. In other words, the order change logic unit 165 may change the order of write inputs/outputs included in each subset or change the order of write inputs/outputs across several subsets. The order change logic unit 165 includes a first subset of data write inputs/outputs (D1), a first subset of metadata write inputs/outputs (M1), a second subset of data write inputs/outputs (D2), and a second subset of metadata write inputs/outputs. The subset M2 may be combined to generate a combined write input/output CW. The order change logic unit 165 may insert a header (HDR) and a footer (FTR) into the combined write input/output 225, which will be further described later.

도 3은 도 1 및 도 2의 입출력 인터셉터 로직부에 포함되는 순서 변경 로직부 및 임시 쓰기 홀딩 버퍼를 보여주는 개념도이다. 위에서 설명된 것과 같이, 순서 변경 로직부(165)는 각각의 서브셋에 포함되는 쓰기 입출력들의 순서를 변경하거나, 여러 서브셋들에 걸쳐 쓰기 입출력들의 순서를 변경할 수 있다.3 is a conceptual diagram illustrating an order change logic unit and a temporary write holding buffer included in the input/output interceptor logic unit of FIGS. 1 and 2. As described above, the order change logic unit 165 may change the order of write inputs/outputs included in each subset or change the order of write inputs/outputs across several subsets.

도 3의 실시 예에서, 쓰기 입출력(W01)은 6번 논리 블록 어드레스(Logical Block Address, 이하 "LBA")에 대응하고, 쓰기 입출력(W12)은 12번 LBA에 대응하고, 쓰기 입출력(Wn3)은 9번 LBA에 대응하고, 쓰기 입출력(W04)은 7번 LBA에 대응하고, 쓰기 입출력(W15)은 10번 LBA에 대응하고, 쓰기 입출력(Wn6)은 11번 LBA에 대응하고, 쓰기 입출력(W07)은 5번 LBA에 대응하고, 쓰기 입출력(W18)은 4번 LBA에 대응하고, 쓰기 입출력(Wn9)은 8번 LBA에 대응하고, 쓰기 입출력(W010)은 2번 LBA에 대응하고, 쓰기 입출력(W111)은 3번 LBA에 대응하고, 쓰기 입출력(Wn12)은 1번 LBA에 대응할 수 있다. LBA들은 여러 쓰기 입출력들이 하나 이상의 불휘발성 스토리지 장치들(135)에 저장된 논리적 위치들에 각각 대응한다.In the embodiment of FIG. 3, the write input/output (W0 1 ) corresponds to the 6th logical block address (Logical Block Address, hereinafter “LBA”), the write input/output (W1 2 ) corresponds to the 12th LBA, and the write input/output ( Wn 3 ) corresponds to 9th LBA, write input/output (W0 4 ) corresponds to 7th LBA, write input/output (W1 5 ) corresponds to 10th LBA, and write input/output (Wn 6 ) corresponds to 11th LBA Correspondence, write input/output (W0 7 ) corresponds to 5th LBA, write input/output (W1 8 ) corresponds to 4th LBA, write input/output (Wn 9 ) corresponds to 8th LBA, write input/output (W0 10) ) Corresponds to LBA #2, write input/output (W1 11 ) corresponds to LBA #3, and write input/output (Wn 12 ) corresponds to LBA #1. LBAs correspond to logical locations in which several write inputs and outputs are stored in one or more nonvolatile storage devices 135, respectively.

순서 변경 로직부(165)는 여러 쓰기 입출력들의 순서를 변경할 수 있다. 이로써, 쓰기 입출력들은 결합된 쓰기 입출력(CW)의 쓰기 입출력들에 각각 대응하는 LBA들이 오름차순 또는 내림차순으로 정렬되도록 결합된 쓰기 입출력(CW)에 배열될 수 있다. 예로서, 쓰기 입출력들은 최초에 W01/6번 LBA, W12/12번 LBA, Wn3/9번 LBA, W04/7번 LBA, W15/10번 LBA, Wn6/11번 LBA, W07/5번 LBA, W18/4번 LBA, Wn9/8번 LBA, W010/2번 LBA, W111/3번 LBA, Wn12/1번 LBA의 순서로 제공될 수 있다. 위 LBA 값들은 단지 예시일 뿐이고, 본 발명을 제한하기 위한 것은 아니다.The order change logic unit 165 may change the order of several write inputs/outputs. Accordingly, the write inputs and outputs may be arranged in the combined write inputs and outputs CW so that LBAs corresponding to the write inputs and outputs of the combined write inputs and outputs CW are arranged in ascending or descending order. For example, write inputs and outputs are initially W0 1 /6 LBA, W1 2 /12 LBA, Wn 3 /9 LBA, W0 4 /7 LBA, W1 5 /10 LBA, Wn 6 /11 LBA, W0 7 /5 LBA, W1 8 /4 LBA, Wn 9 /8 LBA, W0 10 /2 LBA, W1 11 /3 LBA, Wn 12 /1 LBA. The above LBA values are only examples and are not intended to limit the present invention.

순서 변경 로직부(165)는 쓰기 입출력들이 임시 쓰기 홀딩 버퍼(160) 내에서 Wn12/1번 LBA, W010/2번 LBA, W111/3번 LBA, W18/4번 LBA, W07/5번 LBA, W01/6번 LBA, W04/7번 LBA, Wn9/8번 LBA, Wn3/9번 LBA, W15/10번 LBA, Wn6/11번 LBA, W12/12번 LBA의 순서를 갖도록 쓰기 입출력들의 순서를 변경할 수 있다. 이러한 방식으로, LBA들이 오름차순 또는 내림차순으로 배열될 수 있다. 이로써, 결합된 쓰기 입출력(CW)을 하나 이상의 불휘발성 스토리지 장치들(135; 도 1 및 도 2 참조)에 더 효율적으로 기록할 수 있다.The order change logic unit 165 includes write inputs and outputs in the temporary write holding buffer 160, Wn 12 /1 LBA, W0 10 /2 LBA, W1 11 /3 LBA, W1 8 /4 LBA, W0 7 /5th LBA, W0 1 /6th LBA, W0 4 /7th LBA, Wn 9 /8th LBA, Wn 3 /9th LBA, W1 5th /10th LBA, Wn 6 /11th LBA, W1 2 / You can change the order of write I/Os to have the order of 12 LBA. In this way, the LBAs can be arranged in ascending or descending order. Accordingly, the combined write input/output (CW) can be more efficiently written to one or more nonvolatile storage devices 135 (see FIGS. 1 and 2 ).

도 4는 도 1 및 도 2의 입출력 인터셉터 로직부에 포함되는 순서 변경 로직부, 및 재매핑 메모리부를 보여주는 개념도이다. 재매핑 메모리부(405)는 시스템 메모리로부터 할당되거나 본 발명의 실시 예에 따른 입출력 인터셉터 로직부(120; 도 1 참조) 내에 할당될 수 있다. 일반적으로 LBA들은 넓게 분산되기 때문에, LBA들을 오름차순, 내림차순, 또는 연속된 그룹으로 재정렬하는 것은 단순하지 않다. 예로서, 쓰기 입출력들은 최초에 W01/50번 LBA, W12/11번 LBA, Wn3/18번 LBA, W04/65번 LBA, W15/99번 LBA, Wn6/10번 LBA, W07/41번 LBA, W18/34번 LBA, Wn9/77번 LBA, W010/19번 LBA, W111/55번 LBA, Wn12/100번 LBA의 순서로 제공될 수 있다. 위 LBA 값들은 단지 예시일 뿐이고, 본 발명을 제한하기 위한 것은 아니다.4 is a conceptual diagram illustrating an order change logic unit included in the input/output interceptor logic unit of FIGS. 1 and 2 and a remapping memory unit. The remapping memory unit 405 may be allocated from system memory or may be allocated in the input/output interceptor logic unit 120 (see FIG. 1) according to an embodiment of the present invention. In general, because LBAs are widely distributed, reordering LBAs into ascending, descending, or contiguous groups is not simple. For example, write inputs and outputs are initially W0 1 /50 LBA, W1 2 /11 LBA, Wn 3 /18 LBA, W0 4 /65 LBA, W1 5 /99 LBA, Wn 6 /10 LBA, W0 7 /41 LBA, W1 8 /34 LBA, Wn 9 /77 LBA, W0 10 /19 LBA, W1 11 /55 LBA, Wn 12 /100 LBA. The above LBA values are only examples and are not intended to limit the present invention.

순서 변경 로직부(165)는 헤더(HDR) 및 푸터(FTR)를 앞뒤로 연결하고 쓰기 입출력들을 재매핑 메모리부(405)로 재매핑함으로써 쓰기 입출력들의 순서를 변경할 수 있다. 다시 말해, 순서 변경 로직부(165)는 쓰기 입출력들, 헤더(HDR), 및 푸터(FTR)를 복사하여 결합된 쓰기 입출력(CW)을 생성할 수 있다. 이로써, 결합된 쓰기 입출력(CW)의 여러 쓰기 입출력들에 각각 대응하는 여러 LBA들은 오름차순 또는 내림차순으로 배열될 수 있다. 나아가, 결합된 쓰기 입출력(CW)의 쓰기 입출력들 각각은 재매핑 메모리부(405)에서 다른 쓰기 입출력과 물리적으로 인접하도록 배열될 수 있다. 순서 변경 로직부(165)는 무작위의 쓰기 입출력들을 순차적인 쓰기 입출력들로 변환할 수 있다.The order change logic unit 165 may change the order of write inputs and outputs by connecting the header HDR and the footer FTR back and forth and remapping the write inputs and outputs to the remapping memory unit 405. In other words, the order change logic unit 165 may generate a combined write input/output CW by copying the write input/outputs, the header HDR, and the footer FTR. Accordingly, several LBAs respectively corresponding to several write inputs/outputs of the combined write input/output CW may be arranged in an ascending or descending order. Furthermore, each of the write input/outputs of the combined write input/output CW may be arranged to be physically adjacent to other write input/outputs in the remapped memory unit 405. The order change logic unit 165 may convert random write inputs/outputs into sequential write inputs/outputs.

예로서, 재매핑 메모리부(405)의 결합된 쓰기 입출력(CW)은 헤더/0번 LBA, Wn12/1번 LBA, W010/2번 LBA, W111/3번 LBA, W18/4번 LBA, W07/5번 LBA, W01/6번 LBA, W04/7번 LBA, Wn9/8번 LBA, Wn3/9번 LBA, W15/10번 LBA, Wn6/11번 LBA, W12/12번 LBA, 푸터/13번 LBA의 순서로 재매핑되어 배열된 쓰기 입출력들을 포함할 수 있다. 이러한 방식으로, LBA들이 연속되는 형식으로 배열될 수 있다. 이로써, 결합된 쓰기 입출력(CW)을 하나 이상의 불휘발성 스토리지 장치들(135; 도 1 및 도 2 참조)에 더 효율적으로 기록할 수 있다.As an example, the combined write input/output (CW) of the remapping memory unit 405 is header/0 LBA, Wn 12 /1 LBA, W0 10 /2 LBA, W1 11 /3 LBA, W1 8 /4 LBA, W0 7 /5 LBA, W0 1 /6 LBA, W0 4 /7 LBA, Wn 9 /8 LBA, Wn 3 /9 LBA, W1 5 /10 LBA, Wn 6 /11 Write inputs and outputs that are remapped in the order of LBA, W1 2 /12 LBA, and footer/13 LBA may be included. In this way, LBAs can be arranged in a continuous fashion. Accordingly, the combined write input/output (CW) can be more efficiently written to one or more nonvolatile storage devices 135 (see FIGS. 1 and 2 ).

몇몇 실시 예에서, 재매핑 메모리부(405)는 입출력 인터셉터 로직부(120)에 의해서만 인식될 수 있다. 헤더(HDR) 및/또는 푸터(FTR)는 재매핑 변환 정보를 포함할 수 있다. 헤더(HDR) 및/또는 푸터(FTR)는 결합된 쓰기 입출력(CW)이 유효함을 나타내는 정보를 포함할 수 있다. 하나 이상의 불휘발성 스토리지 장치들(135)에 헤더(HDR)를 포함하지만 푸터(FTR)를 포함하지 않는 결합된 쓰기 입출력(CW)은 유효하지 않은 것으로 취급될 수 있다. 이러한 경우는 전달된 플러시(CFn)에 관한 동작이 수행되는 동안 갑작스러운 전력 손실이 발생한 경우에 생길 수 있다. 이러한 경우, 결합된 쓰기 입출력(CW)은 유효하지 않은 것으로 결정되어 폐기(Discard)될 수 있다. 유효한 결합된 쓰기 입출력(CW)을 읽기 입출력 동작에서 읽기 위해 유효한 결합된 쓰기 입출력(CW)이 하나 이상의 불휘발성 스토리지 장치들(135)로부터 읽히는 경우, 헤더(HDR) 및/또는 푸터(FTR)에 저장된 재매핑 변환 정보는 예상되는 데이터 및/또는 LBA 정보를 어플리케이션(132)으로 제공하기 위해 입출력 인터셉터 로직부(120)에 의해 이용될 수 있다.In some embodiments, the remapping memory unit 405 may be recognized only by the input/output interceptor logic unit 120. The header (HDR) and/or the footer (FTR) may include remapping transformation information. The header HDR and/or the footer FTR may include information indicating that the combined write input/output CW is valid. The combined write input/output CW including the header HDR but not the footer FTR in the one or more nonvolatile storage devices 135 may be treated as invalid. This may occur when a sudden power loss occurs while an operation related to the transmitted flush (CFn) is performed. In this case, the combined write input/output (CW) is determined to be invalid and may be discarded. When a valid combined write input/output (CW) is read from one or more nonvolatile storage devices 135 to read a valid combined write input/output (CW) in a read input/output operation, the header (HDR) and/or the footer (FTR) The stored remapping conversion information may be used by the input/output interceptor logic unit 120 to provide expected data and/or LBA information to the application 132.

플러시 제어 로직부(170)는 선택된 N번째 플러시 요청 또는 다른 기준에 응답하여, 물리적으로 연속하는 결합된 쓰기 입출력(CW)이 하나 이상의 불휘발성 스토리지 장치들(135)에 기록되도록 할 수 있다.The flush control logic unit 170 may cause the physically continuous combined write input/output (CW) to be written to the one or more nonvolatile storage devices 135 in response to the selected N-th flush request or other criteria.

도 5는 도 1 및 도 2의 입출력 인터셉터 로직부에 포함되는 플러시 제어 로직부 및 임시 쓰기 홀딩 버퍼들을 보여주는 개념도이다.5 is a conceptual diagram illustrating a flush control logic unit and temporary write holding buffers included in the input/output interceptor logic unit of FIGS. 1 and 2.

순서 변경 로직부(165)는 입출력 인터셉터 로직부(120)에 포함될 필요는 없다. 대신, 실시 예로서, 플러시 제어 로직부(170)가 0번 버퍼, 1번 버퍼, 2번 버퍼, 및 N번 버퍼와 같은 복수의 임시 쓰기 홀딩 버퍼(160)를 관리할 수 있다. 임시 쓰기 홀딩 버퍼들(160)은 도 1 및 도 2의 입출력 인터페이스(155)로부터 쓰기 입출력들을 제공받고, 그 쓰기 입출력들을 저장할 수 있다. 멀티 버퍼 홀딩 큐(Multi-Buffer Holding Queue; 505)는 임시 쓰기 홀딩 버퍼들을 홀드할(Hold) 수 있다.The order change logic unit 165 need not be included in the input/output interceptor logic unit 120. Instead, as an embodiment, the flush control logic unit 170 may manage a plurality of temporary write holding buffers 160 such as buffer 0, buffer 1, buffer 2, and buffer N. The temporary write holding buffers 160 may receive write inputs and outputs from the input/output interface 155 of FIGS. 1 and 2 and store the write inputs and outputs. The multi-buffer holding queue 505 may hold temporary write holding buffers.

플러시 제어 로직부(170)는 입출력 인터페이스(155)로부터 복수의 플러시 요청(예컨대, F0, F1, F2 등)을 제공받을 수 있다. 쓰기 입출력들이 도 1 및 도 2의 하나 이상의 불휘발성 스토리지 장치들(135)에 기록되지 않더라도, 플러시 제어 로직부(170)는 쓰기 입출력들에 관한 입출력 완료의 메시지(예컨대, 도 2의 CM0, CM1, CM2, CM3, 및 CMn)를 어플리케이션(예컨대, 도 1 및 도 2의 어플리케이션(132))으로 전달할 수 있다. 다시 말해, 쓰기 입출력들이 하나 이상의 불휘발성 스토리지 장치들(135) 중 어딘가에 실제로 기록되기 전에, 플러시 제어 로직부(170)는 쓰기 입출력들에 관한 쓰기 입출력 완료를 어플리케이션(132)으로 알릴 수 있다The flush control logic unit 170 may receive a plurality of flush requests (eg, F0, F1, F2, etc.) from the input/output interface 155. Even if the write inputs and outputs are not written to the one or more nonvolatile storage devices 135 of FIGS. 1 and 2, the flush control logic unit 170 provides a message of input/output completion regarding write inputs/outputs (eg, CM0 and CM1 of FIG. 2 ). , CM2, CM3, and CMn) can be delivered to an application (eg, the application 132 of FIGS. 1 and 2). In other words, before the write inputs and outputs are actually written somewhere among the one or more nonvolatile storage devices 135, the flush control logic unit 170 may notify the application 132 of the completion of the write inputs and outputs related to the write inputs and outputs.

플러시 제어 로직부(170)는 데이터 쓰기 입출력들의 제 1 서브셋(예컨대, 도 2의 D1)이 임시 쓰기 홀딩 버퍼들(160)의 0번 버퍼(B0)에 저장되도록 하고, 메타데이터 쓰기 입출력들의 제 1 서브셋(예컨대, 도 2의 M1)이 임시 쓰기 홀딩 버퍼들(160)의 1번 버퍼(B1)에 저장되도록 하고, 데이터 쓰기 입출력들의 제 2 서브셋(예컨대, 도 2의 D2)이 임시 쓰기 홀딩 버퍼들(160)의 2번 버퍼(B2)에 저장되도록 하고, 메타데이터 쓰기 입출력들의 제 2 서브셋(예컨대, 도 2의 M2)이 임시 쓰기 홀딩 버퍼들(160)의 N번 버퍼(BN)에 저장되도록 할 수 있다.The flush control logic unit 170 allows the first subset of data write inputs/outputs (eg, D1 in FIG. 2) to be stored in the 0th buffer B0 of the temporary write holding buffers 160, and One subset (eg, M1 in FIG. 2) is stored in the first buffer B1 of the temporary write-holding buffers 160, and a second subset of data write inputs and outputs (eg, D2 in FIG. 2) is temporarily write-holding. To be stored in the second buffer B2 of the buffers 160, the second subset of metadata write inputs and outputs (for example, M2 in FIG. 2) are stored in the Nth buffer BN of the temporary write holding buffers 160. Can be saved.

플러시 제어 로직부(170)는 선택된 N번째 플러시 요청에 응답하여, 멀티 버퍼 홀딩 큐(505)가 쓰기 입출력들을 전달받은 순서대로 임시 쓰기 홀딩 버퍼들(160)로부터 하나 이상의 불휘발성 스토리지 장치들(135)로 전달하도록 할 수 있다. 이 실시 예에서, 쓰기 입출력들의 순서 변경 및 재매핑이 수행되지 않고, 추가의 헤더들 또는 푸터들이 필요하지 않다. 반면, 위에서 설명된 실시 예에 비해, 성능은 크게 향상되지 않는다. 왜냐하면, LBA들이 사실상 무작위의 순서로 하나 이상의 불휘발성 스토리지 장치들(135)로 전달되기 때문이다. 갑작스러운 전력 손실이 발생한 경우에는, 어플리케이션(132)이 데이터를 기록하고자 했던 순서가 보존되기 때문에, 데이터의 일관성은 여전히 유지된다.The flush control logic unit 170 responds to the selected N-th flush request, in the order in which the multi-buffer holding queue 505 receives write inputs and outputs, one or more nonvolatile storage devices 135 from the temporary write holding buffers 160. ). In this embodiment, reordering and remapping of write inputs/outputs is not performed, and additional headers or footers are not required. On the other hand, compared to the embodiment described above, the performance is not significantly improved. This is because the LBAs are delivered to one or more nonvolatile storage devices 135 in a virtually random order. In the event of a sudden power loss, the order in which the application 132 intends to write data is preserved, so the consistency of the data is still maintained.

도 6은 도 1 및 도 2의 입출력 인터셉터 로직부에 포함되는 플러시 제어 로직부 및 임시 쓰기 홀딩 버퍼들을 보여주는 다른 개념도이다.6 is another conceptual diagram illustrating a flush control logic unit and temporary write holding buffers included in the input/output interceptor logic unit of FIGS. 1 and 2.

도 6은 도 5와 유사하지만, 도 6에서는 LBA들이 넓게 분포한다는 차이가 있다. 그럼에도, 이 실시 예의 동작은 도 5를 참조하여 설명된 것과 동일하거나 유사하다. 따라서, 중복되는 설명은 생략된다. LBA들이 넓게 분포하는 것을 보여주는 도 6의 실시 예 역시 본 발명의 실시 예에 포함되고, 도 5를 참조하여 설명된 것과 동일하거나 유사하게 구현될 수 있다.6 is similar to FIG. 5, but in FIG. 6, there is a difference in that LBAs are widely distributed. Nevertheless, the operation of this embodiment is the same as or similar to that described with reference to FIG. 5. Therefore, redundant descriptions are omitted. The embodiment of FIG. 6 showing the wide distribution of LBAs is also included in the embodiment of the present invention, and may be implemented in the same or similar to that described with reference to FIG. 5.

도 7 내지 도 12는 본 발명의 실시 예에 따른 도 1의 입출력 인터셉터 로직부가 내장될 수 있는 다양한 장치들을 보여주는 개념도들이다.7 to 12 are conceptual diagrams illustrating various devices in which the input/output interceptor logic unit of FIG. 1 may be embedded according to an embodiment of the present invention.

예로서, 도 7에 나타낸 것과 같이, 스마트폰(705)은 위에서 설명된 입출력 인터셉터 로직부(120)를 포함할 수 있다. 유사하게, 도 8에 나타낸 태블릿(805), 도 9에 나타낸 노트북 컴퓨터(905), 도 10에 나타낸 이동식 전화기(1005), 도 11에 나타낸 카메라(1105), 및 도 12에 나타낸 데스크탑 컴퓨터(1205)는 위에서 설명된 입출력 인터셉터 로직부(120)를 포함할 수 있다. 불휘발성 스토리지를 이용하는 장치는 위에서 설명된 입출력 인터셉터 로직부(120)를 포함하고 그것을 이용하여 동작할 수 있다.As an example, as shown in FIG. 7, the smartphone 705 may include the input/output interceptor logic unit 120 described above. Similarly, the tablet 805 shown in Fig. 8, the notebook computer 905 shown in Fig. 9, the mobile phone 1005 shown in Fig. 10, the camera 1105 shown in Fig. 11, and the desktop computer 1205 shown in Fig. 12. ) May include the input/output interceptor logic unit 120 described above. A device using the nonvolatile storage includes the input/output interceptor logic unit 120 described above and can operate using it.

도 13은 본 발명의 실시 예에 따른 입출력 인터셉터 로직부를 이용하여 어플리케이션으로부터 입출력들을 인터셉트하는 방법을 설명하는 흐름도이다.13 is a flowchart illustrating a method of intercepting inputs and outputs from an application using an input/output interceptor logic unit according to an embodiment of the present invention.

도 13의 방법은 S1305 단계에서 시작된다. S1305 단계에서, 입출력 인터셉터 로직부의 입출력 인터페이스에 의해, 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청이 인터셉트될 수 있다.The method of FIG. 13 starts in step S1305. In step S1305, a plurality of write input/output and a plurality of flush requests from an application may be intercepted by an input/output interface of the input/output interceptor logic unit.

S1310 단계에서, 입출력 인터페이스에 의해 인터셉트된 복수의 쓰기 입출력이 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장될 수 있다.In step S1310, a plurality of write inputs/outputs intercepted by the input/output interface may be stored in one or more temporary write holding buffers.

S1315 단계에서, 순서 변경 로직부는 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장된 복수의 쓰기 입출력의 순서를 변경할 수 있다.In step S1315, the order change logic unit may change the order of a plurality of write inputs/outputs stored in one or more temporary write holding buffers.

S1320 단계에서, 순서 변경 로직부는 변경된 순서의 쓰기 입출력들을 결합하여 결합된 쓰기 입출력을 생성할 수 있다.In step S1320, the order change logic unit may generate a combined write input/output by combining the write input/outputs of the changed order.

S1325 단계에서, 플러시 제어 로직부는 입출력 인터페이스로부터 복수의 플러시 요청을 제공받을 수 있다.In step S1325, the flush control logic unit may receive a plurality of flush requests from the input/output interface.

S1330 단계에서, 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고, 플러시 제어 로직부는 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 어플리케이션으로 알릴 수 있다. 다시 말해, 쓰기 입출력들이 하나 이상의 불휘발성 스토리지 장치들 중 어딘가에 실제로 기록되기 전에, 플러시 제어 로직부는 쓰기 입출력들에 관한 쓰기 입출력 완료를 어플리케이션으로 알릴 수 있다.In step S1330, without storing the plurality of write inputs and outputs in the nonvolatile storage device, the flush control logic unit may notify the application of completion of write inputs and outputs related to the plurality of write inputs and outputs. In other words, before the write inputs and outputs are actually written to somewhere among one or more nonvolatile storage devices, the flush control logic unit may notify the application of the completion of write inputs and outputs for the write inputs and outputs.

S1335 단계에서, 플러시 제어 로직부는 복수의 플러시 요청 중에서 선택된 N번째 플러시 요청, 누적된 데이터의 문턱량, 및 설정된 시간의 만료 중 적어도 하나에 응답하여, 결합된 쓰기 입출력이 불휘발성 스토리지 장치에 기록되도록 할 수 있다.In step S1335, the flush control logic unit is in response to at least one of the N-th flush request selected from among the plurality of flush requests, the accumulated data threshold, and the expiration of the set time, so that the combined write input/output is written to the nonvolatile storage device. can do.

도 14는 본 발명의 실시 예에 따른 입출력 인터셉터 로직부를 이용하여 어플리케이션으로부터 입출력들을 인터셉트하는 다른 방법을 설명하는 흐름도이다.14 is a flowchart illustrating another method of intercepting inputs and outputs from an application using an input/output interceptor logic unit according to an embodiment of the present invention.

도 14의 방법은 S1405 단계에서 시작된다. S1405 단계에서, 입출력 인터셉터 로직부의 입출력 인터페이스에 의해, 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청이 인터셉트될 수 있다.The method of FIG. 14 starts in step S1405. In step S1405, a plurality of write input/output and a plurality of flush requests from an application may be intercepted by an input/output interface of the input/output interceptor logic unit.

S1410 단계에서, 입출력 인터페이스에 의해 인터셉트된 복수의 쓰기 입출력이 복수의 임시 쓰기 홀딩 버퍼에 저장될 수 있다.In step S1410, a plurality of write inputs/outputs intercepted by the input/output interface may be stored in a plurality of temporary write holding buffers.

S1415 단계에서, 멀티 버퍼 홀딩 큐는 복수의 임시 쓰기 홀딩 버퍼를 홀드할 수 있다.In step S1415, the multi-buffer holding queue may hold a plurality of temporary write holding buffers.

S1420 단계에서, 플러시 제어 로직부는 입출력 인터페이스로부터 복수의 플러시 요청을 제공받을 수 있다.In step S1420, the flush control logic unit may receive a plurality of flush requests from the input/output interface.

S1425 단계에서, 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고, 플러시 제어 로직부는 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 어플리케이션으로 알릴 수 있다. 다시 말해, 쓰기 입출력들이 하나 이상의 불휘발성 스토리지 장치들 중 어딘가에 실제로 기록되기 전에, 플러시 제어 로직부는 쓰기 입출력들에 관한 쓰기 입출력 완료를 어플리케이션으로 알릴 수 있다.In step S1425, without storing the plurality of write inputs and outputs in the nonvolatile storage device, the flush control logic unit may notify the application of completion of write inputs and outputs related to the plurality of write inputs and outputs. In other words, before the write inputs and outputs are actually written to somewhere among one or more nonvolatile storage devices, the flush control logic unit may notify the application of the completion of write inputs and outputs for the write inputs and outputs.

S1430 단계에서, 플러시 제어 로직부는 복수의 플러시 요청 중에서 선택된 N번째 플러시 요청, 누적된 데이터의 문턱량, 및 설정된 시간의 만료 중 적어도 하나에 응답하여, 멀티 버퍼 홀딩 큐가 복수의 쓰기 입출력을 복수의 임시 쓰기 홀딩 버퍼로부터 불휘발성 스토리지 장치로 전달하도록 할 수 있다.In step S1430, the flush control logic unit responds to at least one of an N-th flush request selected from among a plurality of flush requests, a threshold amount of accumulated data, and expiration of a set time, the multi-buffer holding queue receives a plurality of write inputs/outputs. It can be transferred from the temporary write holding buffer to the nonvolatile storage device.

도 15는 본 발명의 실시 예에 따른 입출력 인터셉터 로직부를 포함하는 컴퓨팅 시스템을 보여주는 블록도이다. 도 15를 참조하면, 컴퓨팅 시스템(1500)은 클록(1510), RAM(Random Access Memory; 1515), 유저 인터페이스(User Interface; 1520), 기저 대역 칩셋(Baseband Chipset)과 같은 모뎀(MODEM; 1525), SSD(1540), 메모리 컨트롤러(1545), 및 배터리(1535)를 포함할 수 있다. 도 15에는 나타내지 않았으나, 컴퓨팅 시스템(1500)은 AP(Application Processor) 칩셋, CIS(Camera Image Sensor), 이동식 DRAM(Dynamic RAM) 등을 더 포함할 수 있다.15 is a block diagram illustrating a computing system including an input/output interceptor logic unit according to an embodiment of the present invention. Referring to FIG. 15, the computing system 1500 includes a clock 1510, a random access memory (RAM) 1515, a user interface 1520, and a modem (MODEM 1525) such as a baseband chipset. , SSD 1540, a memory controller 1545, and a battery 1535 may be included. Although not shown in FIG. 15, the computing system 1500 may further include an application processor (AP) chipset, a camera image sensor (CIS), and a mobile dynamic RAM (DRAM).

클록(1510), RAM(1515), 유저 인터페이스(1520), 기저 대역 칩셋(1525), SSD(1540), 메모리 컨트롤러(1545), 및 배터리(1535)의 일부 또는 전부는 시스템 버스(1505)에 전기적으로 연결될 수 있다. 입출력 인터셉터 로직부(1530)는 도 1 내지 도 12의 입출력 인터셉터 로직부(120)에 대응할 수 있다. 입출력 인터셉터 로직부(1530) 역시 시스템 버스(1505)에 전기적으로 연결될 수 있다.Some or all of the clock 1510, RAM 1515, user interface 1520, baseband chipset 1525, SSD 1540, memory controller 1545, and battery 1535 are on the system bus 1505. Can be electrically connected. The input/output interceptor logic unit 1530 may correspond to the input/output interceptor logic unit 120 of FIGS. 1 to 12. The input/output interceptor logic unit 1530 may also be electrically connected to the system bus 1505.

컴퓨팅 시스템(1500)이 이동식 장치인 경우, 배터리(1535)는 컴퓨팅 시스템(1500)에 전력을 공급할 수 있다. 위에서 설명된 본 발명의 실시 예가 구현되면, 스토리지(예컨대, SSD(1540))에 데이터를 더 효율적으로 기록할 수 있기 때문에, 배터리 소모가 감소할 수 있다.When the computing system 1500 is a mobile device, the battery 1535 may supply power to the computing system 1500. When the embodiment of the present invention described above is implemented, since data can be more efficiently written to a storage (eg, SSD 1540), battery consumption can be reduced.

실시 예로서, 컴퓨팅 시스템(1500)은 컴퓨터, 휴대용 컴퓨터, UMPC(Ultra Mobile Personal Computer), 워크스테이션(Workstation), 넷북(Net-book), PDA(Personal Digital Assistant), 웹 태블릿, 무선 전화기, 이동식 전화기, 스마트폰, 전자책(Electronic Book), PMP(Portable Multimedia Player), 디지털 카메라, 디지털 오디오 레코더/플레이어, 디지털 영상/비디오 레코더/플레이어, 휴대용 게임기, 내비게이션 시스템, 블랙박스, 3차원 텔레비전, 무선 환경에서 정보를 송수신할 수 있는 장치, 홈 네트워크를 구성하는 여러 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 여러 전자 장치들 중 하나, 텔레매틱스(Telematics) 네트워크를 구성하는 여러 전자 장치들 중 하나, RFID(Radio Frequency Identification), 또는 컴퓨팅 시스템을 구성하는 여러 전자 장치들 중 하나로 이용될 수 있다.As an embodiment, the computing system 1500 is a computer, a portable computer, an ultra mobile personal computer (UMPC), a workstation, a net-book, a personal digital assistant (PDA), a web tablet, a wireless telephone, a mobile Telephone, smartphone, electronic book, portable multimedia player (PMP), digital camera, digital audio recorder/player, digital video/video recorder/player, portable game console, navigation system, black box, 3D television, wireless A device that can transmit and receive information in the environment, one of several electronic devices that make up a home network, one of several electronic devices that make up a computer network, one of several electronic devices that make up a telematics network, RFID (Radio Frequency Identification), or can be used as one of several electronic devices constituting a computing system.

이하의 논의는 본 발명의 실시 예가 구현될 수 있는 적당한 기기에 관하여 간략하고 일반적인 설명을 제공하기 위한 것이다. 기기는 프로세서들, 메모리(예컨대, RAM, ROM(Read-only Memory), 또는 그 외 상태를 보존할 수 있는 매체), 스토리지 장치들, 비디오 인터페이스, 입출력 인터페이스 포트(Port)들이 연결된 시스템 버스를 포함한다. 기기는 키보드, 마우스 등과 같은 입력 장치들로부터 제공되는 입력은 물론, 다른 기기, 가상 현실(Virtual Reality) 환경과의 상호작용(Interaction), 생체(Biometric) 신호, 또는 그 외 다른 입력 신호를 통해 제공되는 입력에 의해 제어될 수 있다.The following discussion is intended to provide a brief and general description of a suitable device in which an embodiment of the present invention may be implemented. The device includes a system bus to which processors, memory (eg, RAM, read-only memory (ROM), or other state-saving medium), storage devices, video interfaces, and input/output interface ports are connected. do. Devices are provided not only through inputs provided by input devices such as keyboards and mice, but also through interactions with other devices, virtual reality environments, biometric signals, or other input signals. Can be controlled by the input being

여기서, "기기"라는 용어는 단일의 기기, 버추얼 머신(Virtual Machine), 서로 통신하도록 연결된 기기들이나 버추얼 머신들의 시스템, 또는 함께 동작하는 장치들 등을 폭넓게 포함하기 위해 이용되었다. 예로서, 기기는 개인용 컴퓨터, 워크스테이션, 서버, 휴대용 컴퓨터, 소형 장치, 전화기, 태블릿 등과 같은 컴퓨팅 장치는 물론, 개인용의(Private) 또는 공용의(Public) 교통 수단(예컨대, 자동차, 기차, 택시 등)과 같은 이동 수단을 포함한다.Here, the term "device" has been used to broadly include a single device, a virtual machine, a system of devices or virtual machines connected to communicate with each other, or devices operating together. For example, the device may be a personal computer, a workstation, a server, a portable computer, a small device, a computing device such as a telephone, a tablet, etc., as well as a private or public means of transportation (e.g., car, train, taxi). Etc.).

기기는 프로그램 가능한(Programmable) 또는 프로그램되지 않는(Non-programmable) 논리 장치들 또는 어레이(Array)들, ASICs(Application Specific Integrated Circuits) 등과 같은 내장형(Embedded) 컨트롤러들을 포함할 수 있다. 기기는 네트워크 인터페이스, 모뎀, 또는 그 외 통신용 연결을 통해 하나 이상의 원격 기기들과의 연결을 활용할 수 있다. 기기는 인트라넷(Intranet), 인터넷, LAN(Local Area Network), WAN(Wide Area Network) 등과 같은 물리적인 및/또는 논리적인 네트워크를 이용하여 다른 기기와 연결될 수 있다. 네트워크 통신은 RF(Radio Frequency), 위성, 마이크로파(Microwave), IEEE(Institute of Electrics and Electronics Engineers) 545.11, 블루투스(Bluetooth), 광(Optics), 적외광(Infrared), 케이블, 레이저 등과 같은 단거리 또는 장거리의 유무선 캐리어(Carrier) 또는 프로토콜(Protocol)을 활용하여 구현될 수 있다.The device may include programmable or non-programmable logic devices or arrays, and embedded controllers such as application specific integrated circuits (ASICs). The device may utilize a connection with one or more remote devices through a network interface, modem, or other communication connection. The device may be connected to other devices using a physical and/or logical network such as an intranet, the Internet, a local area network (LAN), and a wide area network (WAN). Network communication is a short distance or short distance such as RF (Radio Frequency), satellite, microwave, IEEE (Institute of Electrics and Electronics Engineers) 545.11, Bluetooth, Optical, Infrared, cable, laser, etc. It can be implemented using a long-distance wired or wireless carrier or protocol.

본 발명의 실시 예는 함수(Function), 프로시저(Procedure), 데이터 구조(Data Structure), 응용 프로그램(Application Program) 등을 포함하는 데이터 형태로 구현될 수 있다. 본 발명의 실시 예를 구현한 데이터가 기기에 의해 접근되는 경우, 기기는 본 발명의 실시 예에 대응하는 작업들을 수행하거나, 추상 데이터형(Abstract Data Type) 또는 하위 레벨 하드웨어 컨텍스트(Low-level Hardware Context)를 정의할 수 있다.An embodiment of the present invention may be implemented in a data form including a function, a procedure, a data structure, an application program, and the like. When data implementing an embodiment of the present invention is accessed by a device, the device performs tasks corresponding to the embodiment of the present invention, or uses an abstract data type or low-level hardware context. Context) can be defined.

본 발명의 실시 예를 구현한 데이터는, 예로서, RAM, ROM 등과 같은 휘발성 및/또는 불휘발성 메모리, 또는 하드 드라이브, 플로피 디스크, 광학 스토리지, 테이프, 플래시 메모리, 메모리 스틱, 디지털 비디오 디스크, 생체 스토리지 등과 같은 스토리지 장치에 저장될 수 있다. 본 발명의 실시 예를 구현한 데이터는 물리적인 및/또는 논리적인 네트워크 등과 같은 통신 환경을 통해 패킷(Packet), 직렬 데이터(Serial Data), 병렬 데이터(Parallel Data), 전파 신호(Propagated Signal) 등의 형태로 전송되어, 압축된(Compressed) 또는 암호화된(Encrypted) 형태로 이용될 수 있다. 본 발명의 실시 예를 구현한 데이터는 분산(Distributed) 환경에서 이용될 수 있고, 기기의 접근을 위해 로컬(Local) 및/또는 원격(Remote)의 위치에 저장될 수 있다.The data implementing the embodiment of the present invention is, for example, a volatile and/or nonvolatile memory such as RAM and ROM, or a hard drive, floppy disk, optical storage, tape, flash memory, memory stick, digital video disk, It may be stored in a storage device such as storage. Data implementing an embodiment of the present invention is a packet, serial data, parallel data, propagated signal, etc. through a communication environment such as a physical and/or logical network. It may be transmitted in the form of, and may be used in a compressed or encrypted form. Data implementing the embodiment of the present invention may be used in a distributed environment, and may be stored in a local and/or remote location for access to a device.

본 발명의 실시 예는 하나 이상의 프로세서들에 의해 실행 가능한(Excutable) 명령어(Instruction)를 포함하는 비일시적으로(Non-transitory) 기계로 읽을 수 있는 매체(Machine-readable Medium)에 구현될 수 있다. 이 명령어는 위에서 설명된 본 발명의 실시 예의 과정들을 수행하기 위한 명령들을 포함할 수 있다.An embodiment of the present invention may be implemented in a non-transitory machine-readable medium including instructions executable by one or more processors. This command may include commands for performing the processes of the embodiments of the present invention described above.

각각의 개념도에 나타낸 구성은 단지 개념적인 관점에서 이해되어야 한다. 본 발명의 이해를 돕기 위해, 개념도에 나타낸 구성 요소 각각의 형태, 구조, 크기 등은 과장 또는 축소되어 표현되었다. 실제로 구현되는 구성은 각각의 개념도에 나타낸 것과 다른 물리적 형상을 가질 수 있다. 각각의 개념도는 구성 요소의 물리적 형상을 제한하기 위한 것이 아니다.The configuration shown in each conceptual diagram should be understood only from a conceptual point of view. In order to help understand the present invention, the shape, structure, size, etc. of each of the constituent elements shown in the conceptual diagram are exaggerated or reduced. The configuration actually implemented may have a physical shape different from that shown in each conceptual diagram. Each conceptual diagram is not intended to limit the physical shape of the component.

각각의 블록도에 나타낸 장치 구성은 발명의 이해를 돕기 위한 것이다. 각각의 블록은 기능에 따라 더 작은 단위의 블록들로 형성될 수 있다. 또는, 복수의 블록들은 기능에 따라 더 큰 단위의 블록을 형성할 수 있다. 즉, 본 발명의 기술 사상은 블록도에 도시된 구성에 의해 한정되지 않는다.The device configuration shown in each block diagram is intended to aid understanding of the invention. Each block may be formed of blocks of smaller units depending on the function. Alternatively, a plurality of blocks may form a larger unit block according to a function. That is, the technical idea of the present invention is not limited by the configuration shown in the block diagram.

이상에서 본 발명에 대한 실시 예를 중심으로 본 발명이 설명되었다. 다만, 본 발명이 속하는 기술 분야의 특성상, 본 발명이 이루고자 하는 목적은 본 발명의 요지를 포함하면서도 위 실시 예들과 다른 형태로 달성될 수 있다. 따라서, 위 실시 예들은 한정적인 것이 아니라 설명적인 측면에서 이해되어야 한다. 즉, 본 발명의 요지를 포함하면서 본 발명과 같은 목적을 달성할 수 있는 기술 사상은 본 발명의 기술 사상에 포함되는 것으로 해석되어야 한다.In the above, the present invention has been described based on the embodiments of the present invention. However, due to the nature of the technical field to which the present invention pertains, the object to be achieved by the present invention may be achieved in a form different from the above embodiments while including the gist of the present invention. Therefore, the above embodiments should be understood in terms of description rather than limitation. That is, the technical idea capable of achieving the same object as the present invention while including the gist of the present invention should be interpreted as being included in the technical idea of the present invention.

따라서, 본 발명의 본질적인 특성을 벗어나지 않는 범위 내에서 수정 또는 변형된 기술 사상은 본 발명이 청구하는 보호 범위에 포함되는 것이다. 또한, 본 발명의 보호 범위는 위 실시 예들로 한정되는 것이 아니다.Therefore, the technical idea modified or modified within the scope not departing from the essential characteristics of the present invention is to be included in the scope of protection claimed by the present invention. In addition, the scope of protection of the present invention is not limited to the above embodiments.

100 : 시스템 스택 105 : 어플리케이션 스페이스
110 : 커널 스페이스 115 : 물리적인 하드웨어 장치들
120 : 입출력 인터셉터 로직부 125 : 스토리지 스택
130 : 하나 이상의 어플리케이션들
132 : 어플리케이션
135 : 하나 이상의 불휘발성 스토리지 장치들
140 : SSD 145 : 플래시 메모리
150 : HDD 155 : 입출력 인터페이스
160 : 이미 쓰기 홀딩 버퍼 165 : 순서 변경 로직부
170 : 플러시 제어 로직부
405 : 재매핑 메모리부 505 : 멀티 버퍼 홀딩 큐
705 : 스마트폰 805 : 태블릿
905 : 노트북 컴퓨터 1005 : 이동식 전화기
1105 : 카메라 1205 : 데스크탑 컴퓨터
1500 : 컴퓨팅 시스템 1505 : 시스템 버스
1510 : 클록 1515 : RAM
1520 : 유저 인터페이스 1525 : 모뎀
1530 : 입출력 인터셉터 로직부
1535 : 배터리 1540 : SSD
1545 : 메모리 컨트롤러
100: system stack 105: application space
110: kernel space 115: physical hardware devices
120: input/output interceptor logic unit 125: storage stack
130: one or more applications
132: application
135: one or more nonvolatile storage devices
140: SSD 145: flash memory
150: HDD 155: input/output interface
160: already write holding buffer 165: order change logic unit
170: flush control logic unit
405: remapping memory unit 505: multi-buffer holding queue
705: smartphone 805: tablet
905: notebook computer 1005: mobile phone
1105: camera 1205: desktop computer
1500: computing system 1505: system bus
1510: clock 1515: RAM
1520: user interface 1525: modem
1530: I/O interceptor logic unit
1535: battery 1540: SSD
1545: memory controller

Claims (20)

스토리지 스택과 통신하도록 연결되고, 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하는 입출력 인터페이스;
상기 입출력 인터페이스로부터 상기 복수의 쓰기 입출력을 제공받고, 상기 복수의 쓰기 입출력을 저장하는 하나 이상의 임시 쓰기 홀딩 버퍼들;
상기 하나 이상의 임시 쓰기 홀딩 버퍼들과 통신하도록 연결되고, 상기 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장된 상기 복수의 쓰기 입출력의 순서를 변경하고, 상기 변경된 순서의 복수의 쓰기 입출력을 결합하여 결합된 쓰기 입출력을 생성하는 순서 변경 로직부; 및
상기 입출력 인터페이스로부터 상기 복수의 플러시 요청을 제공받고, 상기 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고 상기 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 상기 어플리케이션으로 알리고, 상기 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여 상기 결합된 쓰기 입출력을 상기 불휘발성 스토리지 장치에 저장하는 플러시 제어 로직부를 포함하는 입출력 인터셉터 로직.
An input/output interface connected to communicate with the storage stack and intercepting a plurality of write input/output and a plurality of flush requests from an application;
One or more temporary write holding buffers configured to receive the plurality of write inputs and outputs from the input/output interface and store the plurality of write inputs/outputs;
A write input/output connected to communicate with the one or more temporary write holding buffers, changing the order of the plurality of write inputs/outputs stored in the one or more temporary write holding buffers, and combining the plurality of write inputs/outputs in the changed order An order change logic unit for generating a; And
Receives the plurality of flush requests from the input/output interface, informs the application of the completion of write inputs/outputs for the plurality of write inputs/outputs without storing the plurality of write inputs/outputs in a nonvolatile storage device, and is selected from among the plurality of flush requests. Input/output interceptor logic including a flush control logic unit for storing the combined write input/output in the nonvolatile storage device in response to a flush request.
제 1 항에 있어서,
상기 선택된 플러시 요청은 상기 복수의 플러시 요청 중에서 N번째 플러시 요청에 대응하고,
상기 N은 미리 선택된 양의 정수 값을 갖는 입출력 인터셉터 로직.
The method of claim 1,
The selected flush request corresponds to an Nth flush request among the plurality of flush requests,
Wherein N is an input/output interceptor logic having a preselected positive integer value.
제 1 항에 있어서,
상기 선택된 플러시 요청은 상기 복수의 플러시 요청 중에서 N번째 플러시 요청에 대응하고,
상기 N은 3 이상의 정수인 입출력 인터셉터 로직.
The method of claim 1,
The selected flush request corresponds to an Nth flush request among the plurality of flush requests,
The input/output interceptor logic where N is an integer of 3 or more.
제 1 항에 있어서,
상기 입출력 인터페이스는:
상기 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 1 서브셋, 상기 복수의 플러시 요청 중 제 1 플러시 요청, 상기 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 1 서브셋, 상기 복수의 플러시 요청 중 제 2 플러시 요청, 상기 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 2 서브셋, 상기 복수의 플러시 요청 중 제 3 플러시 요청, 상기 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 2 서브셋, 및 상기 복수의 플러시 요청 중 상기 선택된 플러시 요청을 인터셉트하는 입출력 인터셉터 로직.
The method of claim 1,
The input/output interface is:
A first subset of data write inputs/outputs among the plurality of write inputs/outputs, a first flush request among the plurality of flush requests, a first subset of metadata write inputs/outputs among the plurality of write inputs/outputs, a second flush request among the plurality of flush requests , A second subset of data write input/output among the plurality of write inputs/outputs, a third flush request among the plurality of flush requests, a second subset of metadata write input/output among the plurality of write inputs/outputs, and the selected among the plurality of flush requests I/O interceptor logic to intercept flush requests.
제 4 항에 있어서,
상기 순서 변경 로직부는:
상기 데이터 쓰기 입출력의 제 1 서브셋, 상기 메타데이터 쓰기 입출력의 제 1 서브셋, 상기 데이터 쓰기 입출력의 제 2 서브셋, 및 상기 메타데이터 쓰기 입출력의 제 2 서브셋에 포함되는 상기 복수의 쓰기 입출력의 순서를 변경하여 상기 복수의 쓰기 입출력과 관련된 논리 블록 어드레스들을 오름차순 또는 내림차순으로 배열하고;
상기 데이터 쓰기 입출력의 제 1 서브셋, 상기 메타데이터 쓰기 입출력의 제 1 서브셋, 상기 데이터 쓰기 입출력의 제 2 서브셋, 및 상기 메타데이터 쓰기 입출력의 제 2 서브셋에 포함되는 상기 변경된 순서의 복수의 쓰기 입출력을 결합하여 상기 결합된 쓰기 입출력을 생성하는 입출력 인터셉터 로직.
The method of claim 4,
The order change logic unit:
Change the order of the plurality of write inputs/outputs included in the first subset of the data write input/output, the first subset of the metadata write input/output, the second subset of the data write input/output, and the second subset of the metadata write input/output Arranging the plurality of write input/output-related logical block addresses in ascending or descending order;
The changed order of a plurality of write inputs/outputs included in the first subset of the data write input/output, the first subset of the metadata write input/output, the second subset of the data write input/output, and the second subset of the metadata write input/output Input/output interceptor logic that combines to generate the combined write input/output.
제 4 항에 있어서,
상기 순서 변경 로직부는:
상기 복수의 쓰기 입출력, 헤더, 및 푸터를 재매핑 메모리부에 복사하여 상기 결합된 쓰기 입출력을 생성하되,
상기 결합된 쓰기 입출력에 포함되는 상기 복수의 쓰기 입출력에 각각 대응하는 복수의 논리 블록 어드레스는 오름차순 또는 내림차순으로 배열되고,
상기 결합된 쓰기 입출력에 포함되는 상기 복수의 쓰기 입출력 각각은 상기 재매핑 메모리부에서 물리적으로 서로 인접하는 입출력 인터셉터 로직.
The method of claim 4,
The order change logic unit:
Copying the plurality of write input/output, header, and footer to a remapping memory unit to generate the combined write input/output,
A plurality of logical block addresses respectively corresponding to the plurality of write input/output included in the combined write input/output are arranged in an ascending or descending order,
Each of the plurality of write inputs and outputs included in the combined write inputs and outputs is physically adjacent to each other in the remapping memory unit.
제 6 항에 있어서,
상기 플러시 제어 로직부는:
상기 선택된 플러시 요청에 응답하여, 각각이 물리적으로 서로 인접하는 상기 복수의 쓰기 입출력을 포함하는 상기 결합된 쓰기 입출력을 상기 불휘발성 스토리지 장치에 저장하는 입출력 인터셉터 로직.
The method of claim 6,
The flush control logic unit:
In response to the selected flush request, input/output interceptor logic for storing the combined write input/output including the plurality of write inputs and outputs, each of which is physically adjacent to each other, in the nonvolatile storage device.
제 1 항에 있어서,
상기 순서 변경 로직부는:
상기 복수의 쓰기 입출력에 포함되는 무작위의 쓰기 입출력들을 순차적인 쓰기 입출력들로 변환하는 입출력 인터셉터 로직.
The method of claim 1,
The order change logic unit:
Input/output interceptor logic for converting random write inputs/outputs included in the plurality of write inputs/outputs into sequential write inputs/outputs.
스토리지 스택과 통신하도록 연결되고, 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하는 입출력 인터페이스;
상기 입출력 인터페이스로부터 상기 복수의 쓰기 입출력을 제공받고, 상기 복수의 쓰기 입출력을 저장하는 복수의 임시 쓰기 홀딩 버퍼;
상기 복수의 임시 쓰기 홀딩 버퍼를 홀드하는 멀티 버퍼 홀딩 큐; 및
상기 입출력 인터페이스로부터 상기 복수의 플러시 요청을 제공받고, 상기 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고 상기 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 상기 어플리케이션으로 알리고, 상기 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여 상기 멀티 버퍼 홀딩 큐가 상기 복수의 쓰기 입출력을 상기 복수의 임시 쓰기 홀딩 버퍼로부터 상기 불휘발성 스토리지 장치로 전달하게 하는 플러시 제어 로직부를 포함하는 입출력 인터셉터 로직.
An input/output interface connected to communicate with the storage stack and intercepting a plurality of write input/output and a plurality of flush requests from an application;
A plurality of temporary write holding buffers receiving the plurality of write inputs and outputs from the input/output interface and storing the plurality of write inputs/outputs;
A multi-buffer holding queue for holding the plurality of temporary write holding buffers; And
Receives the plurality of flush requests from the input/output interface, informs the application of the completion of write inputs/outputs for the plurality of write inputs/outputs without storing the plurality of write inputs/outputs in a nonvolatile storage device, and is selected from among the plurality of flush requests. Input/output interceptor logic comprising a flush control logic unit configured to allow the multi-buffer holding queue to transfer the plurality of write inputs and outputs from the plurality of temporary write holding buffers to the nonvolatile storage device in response to a flush request.
제 9 항에 있어서,
상기 선택된 플러시 요청은 상기 복수의 플러시 요청 중에서 N번째 플러시 요청에 대응하고,
상기 N은 미리 선택된 양의 정수 값을 갖는 입출력 인터셉터 로직.
The method of claim 9,
The selected flush request corresponds to an Nth flush request among the plurality of flush requests,
Wherein N is an input/output interceptor logic having a preselected positive integer value.
제 9 항에 있어서,
상기 선택된 플러시 요청은 상기 복수의 플러시 요청 중에서 N번째 플러시 요청에 대응하고,
상기 N은 3 이상의 정수인 입출력 인터셉터 로직.
The method of claim 9,
The selected flush request corresponds to an Nth flush request among the plurality of flush requests,
The input/output interceptor logic where N is an integer of 3 or more.
제 9 항에 있어서,
상기 입출력 인터페이스는:
상기 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 1 서브셋, 상기 복수의 플러시 요청 중 제 1 플러시 요청, 상기 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 1 서브셋, 상기 복수의 플러시 요청 중 제 2 플러시 요청, 상기 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 2 서브셋, 상기 복수의 플러시 요청 중 제 3 플러시 요청, 상기 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 2 서브셋, 및 상기 복수의 플러시 요청 중 상기 선택된 플러시 요청을 인터셉트하는 입출력 인터셉터 로직.
The method of claim 9,
The input/output interface is:
A first subset of data write inputs/outputs among the plurality of write inputs/outputs, a first flush request among the plurality of flush requests, a first subset of metadata write inputs/outputs among the plurality of write inputs/outputs, a second flush request among the plurality of flush requests , A second subset of data write input/output among the plurality of write inputs/outputs, a third flush request among the plurality of flush requests, a second subset of metadata write input/output among the plurality of write inputs/outputs, and the selected among the plurality of flush requests I/O interceptor logic to intercept flush requests.
제 12 항에 있어서,
상기 복수의 임시 쓰기 홀딩 버퍼는 제 1 임시 쓰기 홀딩 버퍼, 제 2 임시 쓰기 홀딩 버퍼, 제 3 임시 쓰기 홀딩 버퍼, 및 제 4 임시 쓰기 홀딩 버퍼를 포함하고,
상기 플러시 제어 로직부는:
상기 데이터 쓰기 입출력의 제 1 서브셋을 상기 제 1 임시 쓰기 홀딩 버퍼에 저장하고, 상기 메타데이터 쓰기 입출력의 제 1 서브셋을 상기 제 2 임시 쓰기 홀딩 버퍼에 저장하고, 상기 데이터 쓰기 입출력의 제 2 서브셋을 상기 제 3 임시 쓰기 홀딩 버퍼에 저장하고, 상기 메타데이터 쓰기 입출력의 제 2 서브셋을 상기 제 4 임시 쓰기 홀딩 버퍼에 저장하는 입출력 인터셉터 로직.
The method of claim 12,
The plurality of temporary write holding buffers include a first temporary write holding buffer, a second temporary write holding buffer, a third temporary write holding buffer, and a fourth temporary write holding buffer,
The flush control logic unit:
The first subset of the data write input/output is stored in the first temporary write holding buffer, the first subset of the metadata write input/output is stored in the second temporary write holding buffer, and the second subset of the data write input/output is stored. I/O interceptor logic for storing in the third temporary write holding buffer and storing a second subset of the metadata write input/output in the fourth temporary write holding buffer.
입출력 인터셉터 로직을 이용하여 어플리케이션으로부터 입출력들을 인터셉트하기 위해 컴퓨터로 구현되는 방법에 있어서:
상기 입출력 인터셉터 로직의 입출력 인터페이스에 의해, 상기 어플리케이션으로부터 복수의 쓰기 입출력 및 복수의 플러시 요청을 인터셉트하는 단계;
상기 입출력 인터페이스에 의해 인터셉트된 상기 복수의 쓰기 입출력을 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장하는 단계;
상기 입출력 인터셉터 로직의 순서 변경 로직부에 의해, 상기 하나 이상의 임시 쓰기 홀딩 버퍼들에 저장된 상기 복수의 쓰기 입출력의 순서를 변경하는 단계;
상기 순서 변경 로직부에 의해, 상기 변경된 순서의 복수의 쓰기 입출력을 결합하여 결합된 쓰기 입출력을 생성하는 단계;
상기 입출력 인터셉터 로직의 플러시 제어 로직부에 의해, 상기 입출력 인터페이스로부터 상기 복수의 플러시 요청을 제공받는 단계;
상기 복수의 쓰기 입출력을 불휘발성 스토리지 장치에 저장하지 않고, 상기 플러시 제어 로직부에 의해, 상기 복수의 쓰기 입출력에 관한 쓰기 입출력 완료를 상기 어플리케이션으로 알리는 단계; 및
상기 복수의 플러시 요청 중에서 선택된 플러시 요청에 응답하여, 상기 플러시 제어 로직부에 의해, 상기 결합된 쓰기 입출력을 상기 불휘발성 스토리지 장치에 저장하는 단계를 포함하는 방법.
In a computer-implemented method to intercept inputs and outputs from an application using input/output interceptor logic:
Intercepting a plurality of write inputs and outputs and a plurality of flush requests from the application by the input/output interface of the input/output interceptor logic;
Storing the plurality of write inputs/outputs intercepted by the input/output interface in one or more temporary write holding buffers;
Changing an order of the plurality of write inputs/outputs stored in the one or more temporary write holding buffers by an order change logic unit of the input/output interceptor logic;
Generating a combined write input/output by combining the plurality of write inputs/outputs in the changed order by the order change logic unit;
Receiving, by a flush control logic unit of the input/output interceptor logic, the plurality of flush requests from the input/output interface;
Not storing the plurality of write inputs/outputs in a nonvolatile storage device, and notifying the application of completion of write inputs/outputs related to the plurality of write inputs/outputs by the flush control logic unit; And
And storing, by the flush control logic unit, the combined write input/output in the nonvolatile storage device in response to a flush request selected from among the plurality of flush requests.
제 14 항에 있어서,
상기 선택된 플러시 요청은 상기 복수의 플러시 요청 중에서 N번째 플러시 요청에 대응하고,
상기 N은 미리 선택된 양의 정수 값을 갖는 방법.
The method of claim 14,
The selected flush request corresponds to an Nth flush request among the plurality of flush requests,
Wherein N has a preselected positive integer value.
제 14 항에 있어서,
상기 선택된 플러시 요청은 상기 복수의 플러시 요청 중에서 N번째 플러시 요청에 대응하고,
상기 N은 3 이상의 정수인 방법.
The method of claim 14,
The selected flush request corresponds to an Nth flush request among the plurality of flush requests,
Wherein N is an integer of 3 or more.
제 14 항에 있어서,
상기 인터셉트하는 단계는:
상기 입출력 인터페이스에 의해, 상기 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 1 서브셋, 상기 복수의 플러시 요청 중 제 1 플러시 요청, 상기 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 1 서브셋, 상기 복수의 플러시 요청 중 제 2 플러시 요청, 상기 복수의 쓰기 입출력 중 데이터 쓰기 입출력의 제 2 서브셋, 상기 복수의 플러시 요청 중 제 3 플러시 요청, 상기 복수의 쓰기 입출력 중 메타데이터 쓰기 입출력의 제 2 서브셋, 및 상기 복수의 플러시 요청 중 상기 선택된 플러시 요청을 인터셉트하는 단계를 포함하는 방법.
The method of claim 14,
The intercepting step is:
By the input/output interface, a first subset of data write input/output among the plurality of write inputs/outputs, a first flush request among the plurality of flush requests, a first subset of metadata write input/output among the plurality of write inputs/outputs, and the plurality of flushes A second flush request among the requests, a second subset of data write input/output among the plurality of write inputs/outputs, a third flush request among the plurality of flush requests, a second subset of metadata write input/output among the plurality of write inputs/outputs, and the plurality of And intercepting the selected flush request of the flush request.
제 17 항에 있어서,
상기 변경하는 단계는:
상기 순서 변경 로직부에 의해, 상기 데이터 쓰기 입출력의 제 1 서브셋, 상기 메타데이터 쓰기 입출력의 제 1 서브셋, 상기 데이터 쓰기 입출력의 제 2 서브셋, 및 상기 메타데이터 쓰기 입출력의 제 2 서브셋에 포함되는 상기 복수의 쓰기 입출력의 순서를 변경하는 단계를 포함하고,
상기 생성하는 단계는:
상기 순서 변경 로직부에 의해, 상기 데이터 쓰기 입출력의 제 1 서브셋, 상기 메타데이터 쓰기 입출력의 제 1 서브셋, 상기 데이터 쓰기 입출력의 제 2 서브셋, 및 상기 메타데이터 쓰기 입출력의 제 2 서브셋에 포함되는 상기 변경된 순서의 복수의 쓰기 입출력을 결합하여 상기 결합된 쓰기 입출력을 생성하는 단계를 포함하는 방법.
The method of claim 17,
The step of changing is:
The order change logic unit includes the first subset of the data write input/output, the first subset of the metadata write input/output, the second subset of the data write input/output, and the second subset of the metadata write input/output. Including the step of changing the order of the plurality of write input and output,
The generating step is:
The order change logic unit includes the first subset of the data write input/output, the first subset of the metadata write input/output, the second subset of the data write input/output, and the second subset of the metadata write input/output. And generating the combined write input/output by combining a plurality of write inputs and outputs in a changed order.
제 17 항에 있어서,
상기 생성하는 단계는:
상기 순서 변경 로직부에 의해, 상기 복수의 쓰기 입출력, 헤더, 및 푸터를 재매핑 메모리부에 복사하여 상기 결합된 쓰기 입출력을 생성하는 단계를 포함하되,
상기 결합된 쓰기 입출력에 포함되는 상기 복수의 쓰기 입출력에 각각 대응하는 복수의 논리 블록 어드레스는 오름차순 또는 내림차순으로 배열되고,
상기 결합된 쓰기 입출력에 포함되는 상기 복수의 쓰기 입출력 각각은 상기 재매핑 메모리부에서 물리적으로 서로 인접하는 방법.
The method of claim 17,
The generating step is:
And generating the combined write input/output by copying the plurality of write input/output, header, and footer to a remapping memory unit by the order change logic unit,
A plurality of logical block addresses respectively corresponding to the plurality of write input/output included in the combined write input/output are arranged in an ascending or descending order,
Each of the plurality of write inputs and outputs included in the combined write inputs and outputs is physically adjacent to each other in the remapping memory unit.
제 19 항에 있어서,
상기 불휘발성 스토리지 장치에 저장하는 단계는:
상기 선택된 플러시 요청에 응답하여, 상기 플러시 제어 로직부에 의해, 각각이 물리적으로 서로 인접하는 상기 복수의 쓰기 입출력을 포함하는 상기 결합된 쓰기 입출력을 상기 불휘발성 스토리지 장치에 저장하는 단계를 포함하는 방법.
The method of claim 19,
Storing in the nonvolatile storage device includes:
In response to the selected flush request, storing, by the flush control logic unit, the combined write input/output including the plurality of write inputs and outputs, each of which is physically adjacent to each other, in the nonvolatile storage device .
KR1020150065399A 2014-07-31 2015-05-11 Input/output interceptor logic including flush control logic, and computer-implemented method using the input/output interceptor logic KR102177315B1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462031842P 2014-07-31 2014-07-31
US62/031,842 2014-07-31
US14/536,567 US9495102B2 (en) 2014-07-31 2014-11-07 Input/output (I/O) interceptor that re-orders a plurality of write I/O into combined with I/O with intelligent flush control logic
US14/536,567 2014-11-07

Publications (2)

Publication Number Publication Date
KR20160016562A KR20160016562A (en) 2016-02-15
KR102177315B1 true KR102177315B1 (en) 2020-11-10

Family

ID=55180056

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150065399A KR102177315B1 (en) 2014-07-31 2015-05-11 Input/output interceptor logic including flush control logic, and computer-implemented method using the input/output interceptor logic

Country Status (4)

Country Link
US (1) US9495102B2 (en)
JP (1) JP6594057B2 (en)
KR (1) KR102177315B1 (en)
CN (1) CN105320640B (en)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11461010B2 (en) 2015-07-13 2022-10-04 Samsung Electronics Co., Ltd. Data property-based data placement in a nonvolatile memory device
US10282324B2 (en) 2015-07-13 2019-05-07 Samsung Electronics Co., Ltd. Smart I/O stream detection based on multiple attributes
US10656838B2 (en) 2015-07-13 2020-05-19 Samsung Electronics Co., Ltd. Automatic stream detection and assignment algorithm
US10474570B2 (en) * 2015-11-24 2019-11-12 Cisco Technology, Inc. Flashware usage mitigation
US10866905B2 (en) 2016-05-25 2020-12-15 Samsung Electronics Co., Ltd. Access parameter based multi-stream storage device access
US10534709B2 (en) * 2016-08-31 2020-01-14 Sandisk Technologies Llc Flush command consolidation
US10289552B2 (en) * 2017-05-03 2019-05-14 Western Digital Technologies, Inc. Storage system and method for flush optimization
US10446174B2 (en) * 2017-05-26 2019-10-15 Microsoft Technology Licensing, Llc File system for shingled magnetic recording (SMR)
US11314659B2 (en) 2017-09-05 2022-04-26 International Business Machines Corporation Using real segments and alternate segments in non-volatile storage
US10761744B2 (en) * 2017-09-05 2020-09-01 International Business Machines Corporation Synchronously performing commit records operations
US10521115B2 (en) 2017-09-05 2019-12-31 International Business Machines Corporation Handling cache and non-volatile storage (NVS) out of sync writes
KR20200096512A (en) 2017-12-18 2020-08-12 가부시끼 가이샤 구보다 Work car and tractor
US11561717B2 (en) * 2020-05-26 2023-01-24 Western Digital Technologies, Inc. Data integrity protection of SSDs utilizing streams
US20210182187A1 (en) * 2020-12-24 2021-06-17 Intel Corporation Flushing Cache Lines Involving Persistent Memory
US11500579B1 (en) * 2021-04-23 2022-11-15 EMC IP Holding Company, LLC Consolidated write system and method
US20230214157A1 (en) * 2021-12-30 2023-07-06 Micron Technology, Inc. NVMe COMMAND COMPLETION MANAGEMENT FOR HOST SYSTEM MEMORY
US11954348B2 (en) 2022-04-08 2024-04-09 Netapp, Inc. Combining data block I/O and checksum block I/O into a single I/O operation during processing by a storage stack

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010020774A (en) 2008-07-11 2010-01-28 Samsung Electronics Co Ltd Method and system for controlling cache flash and data storage system using the same
JP2010198368A (en) 2009-02-25 2010-09-09 Hitachi Information & Communication Engineering Ltd Electronic calculator with filter driver means for auxiliary storage device, filter driver program for auxiliary storage device, and recording medium of filter driver program for auxiliary storage device
JP2011238176A (en) 2010-05-13 2011-11-24 Toshiba Corp Information processing apparatus and driver

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009038394A1 (en) * 2007-09-21 2009-03-26 Lg Electronics Inc. Method of packet reordering and packet retransmission
US9003118B2 (en) 2009-01-09 2015-04-07 Dell Products L.P. Systems and methods for non-volatile cache control
US8161241B2 (en) 2010-01-12 2012-04-17 International Business Machines Corporation Temperature-aware buffered caching for solid state storage
US8468318B2 (en) * 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment
US10592416B2 (en) * 2011-09-30 2020-03-17 Oracle International Corporation Write-back storage cache based on fast persistent memory
US9367480B2 (en) 2012-08-07 2016-06-14 Dell Products L.P. System and method for updating data in a cache
US9311240B2 (en) * 2012-08-07 2016-04-12 Dell Products L.P. Location and relocation of data within a cache
US9454487B2 (en) 2012-08-27 2016-09-27 Vmware, Inc. Transparent host-side caching of virtual disks located on shared storage
US9584637B2 (en) * 2014-02-19 2017-02-28 Netronome Systems, Inc. Guaranteed in-order packet delivery

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010020774A (en) 2008-07-11 2010-01-28 Samsung Electronics Co Ltd Method and system for controlling cache flash and data storage system using the same
JP2010198368A (en) 2009-02-25 2010-09-09 Hitachi Information & Communication Engineering Ltd Electronic calculator with filter driver means for auxiliary storage device, filter driver program for auxiliary storage device, and recording medium of filter driver program for auxiliary storage device
JP2011238176A (en) 2010-05-13 2011-11-24 Toshiba Corp Information processing apparatus and driver

Also Published As

Publication number Publication date
CN105320640B (en) 2020-06-23
CN105320640A (en) 2016-02-10
US20160034188A1 (en) 2016-02-04
KR20160016562A (en) 2016-02-15
JP2016035743A (en) 2016-03-17
JP6594057B2 (en) 2019-10-23
US9495102B2 (en) 2016-11-15

Similar Documents

Publication Publication Date Title
KR102177315B1 (en) Input/output interceptor logic including flush control logic, and computer-implemented method using the input/output interceptor logic
US10102081B2 (en) Memory controller system with non-volatile backup storage
KR20180059342A (en) System and method for improving storage device i/o performance
KR102137761B1 (en) Heterogeneous unified memory section and method for manaing extended unified memory space thereof
TWI715926B (en) Firmware update in a storage backed memory package
EP3161622B1 (en) Accelerating boot time zeroing of memory based on non-volatile memory (nvm) technology
US10152280B2 (en) Storage device and control method
US20190272099A1 (en) Data Operating Method, Device, and System
KR20140142793A (en) Operating method for memory controller controlling nonvolatile memory device and nonvolatile memory system
US9575887B2 (en) Memory device, information-processing device and information-processing method
EP3147797A1 (en) Data management method, node and system for database cluster
US9547460B2 (en) Method and system for improving cache performance of a redundant disk array controller
TW201835771A (en) Methods and apparatuses for copying a data page in an unmanaged flash memory device
US9934100B2 (en) Method of controlling memory swap operation and data processing system using same
US9971549B2 (en) Method of operating a memory device
TWI688864B (en) Storage apparatus and storing method
CN107656702B (en) Method and system for accelerating hard disk read-write and electronic equipment
KR102195069B1 (en) Packet transmitter and interface device including the same
US11783893B2 (en) Utilizing NAND buffer for DRAM-less multilevel cell programming
US20160266974A1 (en) Memory controller, data storage device and data write method
JP6312837B2 (en) Reducing power consumption in computing devices
CN109997095B (en) Implementing functions of a memory device in multiple phases
JP2012205100A (en) Memory system, memory controller and synchronization device
CN102073459B (en) Computer system based on solid state drive and solid state drive
JP5231496B2 (en) Information processing apparatus and suspend / resume method thereof

Legal Events

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