KR101691286B1 - Input/output information sarer method, storage apparatus and host apparatus for perfomring the same method - Google Patents

Input/output information sarer method, storage apparatus and host apparatus for perfomring the same method Download PDF

Info

Publication number
KR101691286B1
KR101691286B1 KR1020150031222A KR20150031222A KR101691286B1 KR 101691286 B1 KR101691286 B1 KR 101691286B1 KR 1020150031222 A KR1020150031222 A KR 1020150031222A KR 20150031222 A KR20150031222 A KR 20150031222A KR 101691286 B1 KR101691286 B1 KR 101691286B1
Authority
KR
South Korea
Prior art keywords
input
output
data
output request
list
Prior art date
Application number
KR1020150031222A
Other languages
Korean (ko)
Other versions
KR20160070658A (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 KR20160070658A publication Critical patent/KR20160070658A/en
Application granted granted Critical
Publication of KR101691286B1 publication Critical patent/KR101691286B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory

Abstract

본 발명은 입출력 정보 공유 방법을 수행하는 저장 장치 및 호스트 장치에 관한 것이다.
구체적으로는 호스트 장치에서 발생된 데이터의 입출력 요청이 나열된 입출력 리스트를 저장 장치에서 미리 획득하여, 호스트 장치로부터 수신한 입출력 요청에 따른 저장 장치의 성능을 향상시킬 수 있는 입출력 정보 공유 방법에 관한 것이다.
The present invention relates to a storage device and a host device for performing an input / output information sharing method.
And more particularly, to an input / output information sharing method capable of acquiring an input / output list listing input / output requests of data generated in a host device in advance in a storage device and improving the performance of a storage device according to an input / output request received from the host device.

Description

입출력 정보 공유 방법, 상기 방법을 수행하는 저장 장치 및 호스트 장치{INPUT/OUTPUT INFORMATION SARER METHOD, STORAGE APPARATUS AND HOST APPARATUS FOR PERFOMRING THE SAME METHOD}Technical Field [0001] The present invention relates to an input / output information sharing method, a storage device and a host device for performing the above method,

아래의 설명은 입출력 정보 공유 방법, 상기 방법을 수행하는 저장 장치 및 호스트 장치에 관한 것으로 구체적으로는 호스트 장치에서 발생하는 입출력 요청을 이용하여 저장 장치의 입출력 성능을 향상시킬 수 있는 입출력 정보 공유 방법에 관한 것이다.The following description relates to an input / output information sharing method, a storage device and a host device performing the method, and more specifically, an input / output information sharing method capable of improving input / output performance of a storage device using an input / .

플래시 메모리 기반의 저장 장치는 호스트 장치보다 플래시 메모리의 접근(Acess), 읽기(Read), 쓰기(Write) 속도가 빠르다. 반면, 저장 장치는 페이지/블록에 대한 덮어쓰기가 불가능하고, 지우기(Erase) 속도가 느리며, 지우기 회수에 제한이 있다. 따라서, 저장 장치는 덮어 쓰기, 지우디 등으로 인한 입출력 성능을 향상시키기 위해 디바이스 컨트롤러를 사용한다.Flash memory-based storage devices have faster access, read, and write speeds to flash memory than host devices. On the other hand, the storage device is unable to overwrite the page / block, erase speed is slow, and there is a limit to the erase count. Therefore, the storage device uses a device controller to improve the input / output performance due to overwriting, jigging, and the like.

이 때, 디바이스 컨트롤러는 플래시 메모리에 대한 덮어쓰기 기능을 지원하기 위하여 out-of-place 동작을 수행함에 따라 플래시 메모리에 무효 페이지들이 생성된다. 디바이스 컨트롤러는 플래시 메모리에 생성된 무효 페이지들을 제거하기 위하여 가바지 컬렉션을 수행한다.At this time, the device controller performs an out-of-place operation to support the overwrite function for the flash memory, thereby generating invalid pages in the flash memory. The device controller performs garbage collection to remove invalid pages generated in the flash memory.

가비지 컬렉션은 지우기 동작으로 읽기/쓰기 동작에 비해 느리고 블록 내 유효 페이지를 복사 해야하므로 IO 성능에 큰 영향을 끼친다. 또한, 이러한 성능 저하는 호스트 장치로부터의 IO의 패턴 등에 의해 발생할 수 있다.Garbage collection is slower than read / write operations due to the erase operation, and it requires a copy of valid pages in the block, which has a significant impact on IO performance. Such a performance degradation may be caused by a pattern of IO from the host device or the like.

자세하게, 저장 장치는 호스트 장치로부터 복수의 입출력 요청을 수신한다. 이 때, 저장 장치는 호스트 장치로부터 수신한 입출력 요청에 대한 재요청되는 빈도에 따라 자주 접근하는 데이터와 자주 접근하지 않은 데이터로 구분한다. 그리고, 저장 장치는 접근 빈도에 따라 구분된 데이터에 대응하여 상이한 IO 성능을 나타낸다.In detail, the storage device receives a plurality of I / O requests from the host device. At this time, the storage device distinguishes frequently accessed data from frequently accessed data according to the frequency of re-request for input / output requests received from the host device. And, the storage device exhibits different IO performance corresponding to the data classified according to the access frequency.

하지만, 저장 장치는 호스트로부터 언제, 어떤 데이터에 대한 접근이 발생할지 예상하지 못하기 때문에 시간이 지남에 따라 IO 성능이 저하된다.However, the IO performance degrades over time as the storage device does not anticipate when and what data will be accessed from the host.

따라서, 호스트로부터 입출력 정보를 미리 제공받아, 추후 사용될 입출력 정보를 예측함으로써, 적응적으로 데이터를 처리할 수 있는 방법이 필요하다.Therefore, there is a need for a method that can adaptively process data by receiving input / output information from a host in advance and predicting input / output information to be used later.

본 발명은 호스트 장치에서 발생된 입출력 요청이 나열된 입출력 리스트를 이용하여 호스트 장치로부터 수신 예정인 입출력 요청을 미리 판단할 수 있는 입출력 정보 공유 방법을 제공할 수 있다.The present invention can provide an input / output information sharing method that can determine in advance an input / output request to be received from a host device using an input / output list listing input / output requests generated in a host device.

본 발명은 입출력 리스트에 포함된 입출력 요청에 나열 순서에 따라 데이터의 상태를 다르게 설정하고, 설정된 상태에 따라 데이터를 플래시 메모리에 저장하는 입출력 정보 공유 방법을 제공할 수 있다.The present invention can provide an input / output information sharing method for setting the status of data differently according to the listed order in the input / output requests included in the input / output list and storing the data in the flash memory according to the set status.

일실시예에 따른 디바이스 컨트롤러가 수행하는 입출력 정보 공유 방법은 호스트 장치로부터 데이터의 입출력 요청을 수신하는 단계; 상기 입출력 요청을 수신하기 전에 호스트 장치에서 발생된 입출력 요청을 포함하는 입출력 리스트가 존재하는지 여부를 판단하는 단계; 상기 입출력 리스트의 존재 여부에 따라 수신한 데이터의 입출력 요청에 대한 데이터의 상태를 결정하는 단계; 및 상기 구분된 상태를 고려하여 상기 수신한 입출력 요청에 따른 데이터를 처리하는 단계를 포함할 수 있다.A method for sharing an input / output information performed by a device controller according to an exemplary embodiment includes receiving a request for input / output of data from a host device; Determining whether an input / output list including an input / output request generated by the host device exists before receiving the input / output request; Determining a state of data for an input / output request of the received data according to whether the input / output list exists; And processing the data according to the received input / output request in consideration of the separated state.

일실시예에 따른 판단하는 단계는 상기 호스트 장치에서 순차적으로 발생한 입출력 요청에 따른 쓰기 동작을 포함하는 입출력 리스트가 존재하는지 여부를 판단할 수 있다.The determining step may determine whether or not an input / output list including a write operation according to an input / output request sequentially generated in the host apparatus exists.

일실시예에 따른 결정하는 단계는 상기 입출력 리스트가 존재하는 경우, 상기 입출력 리스트에 포함된 입출력 요청과 상기 수신한 입출력 요청을 이용하여 입출력 요청에 대한 데이터의 상태를 결정할 수 있다.According to an exemplary embodiment, when the input / output list exists, the input / output request included in the input / output list and the received input / output request may be used to determine the data state of the input / output request.

일실시예에 따른 입출력 요청에 대한 데이터의 상태는 상기 입출력 리스트에 포함된 입출력 요청을 기반으로 상기 수신한 입출력 요청에 대한 발생 간격에 따라 데이터의 접근 빈도를 나타낼 수 있다.The state of data for an input / output request according to an exemplary embodiment may indicate a data access frequency according to an occurrence interval for the received input / output request based on an input / output request included in the input / output list.

일실시예에 따른 결정하는 단계는 상기 수신한 입출력 요청에 대한 발생 간격이 좁은 경우, 데이터의 상태를 접근 빈도가 높은 핫데이터(hot-data)로 결정하고, 상기 수신한 입출력 요청에 대한 발생 간격이 큰 경우, 데이터의 상태를 접근 빈도가 낮은 콜드데이터(cold-data)로 결정할 수 있다.According to an exemplary embodiment of the present invention, when the generation interval for the received input / output request is narrow, the data state is determined to be hot data having a high access frequency, and the occurrence interval , The state of the data can be determined as the cold data having a low access frequency.

일실시예에 따른 처리하는 단계는 상기 입출력 리스트에 포함된 입출력 요청에 대한 데이터의 논리 주소에 기초하여 수신한 입출력 요청에 따른 데이터를 처리할 수 있다.The processing according to an exemplary embodiment may process data according to the received input / output request based on the logical address of the data for the input / output request included in the input / output list.

일실시예에 따른 호스트 장치가 수행하는 입출력 정보 공유 방법은 상기 호스트 장치에서 발생한 데이터의 입출력 요청을 버퍼에 입력하는 단계; 및 상기 버퍼에 입력된 입출력 요청의 개수를 고려하여 상기 입출력 요청을 포함하는 입출력 리스트를 저장 장치에 전달하는 단계를 포함할 수 있다.According to an embodiment of the present invention, there is provided a method of sharing an input / output information performed by a host device, comprising: inputting an input / output request of data generated in the host device to a buffer; And transferring the input / output list including the input / output request to the storage device in consideration of the number of input / output requests input to the buffer.

일실시예에 따른 입력하는 단계는 상기 데이터의 입출력 요청이 발생한 순서에 대응하여 순차적으로 버퍼에 입력할 수 있다.The input step according to an exemplary embodiment may sequentially input the data into the buffer in accordance with the order in which the input / output requests of the data occur.

일실시예에 따른 전달하는 단계는 상기 입출력 요청에 따른 쓰기 동작으로 포함하는 입출력 리스트를 커맨드 형태로 저장 장치에 전달할 수 있다.According to an exemplary embodiment, the transferring step may transfer the input / output list included in the write operation according to the input / output request to the storage device in the form of a command.

일실시예에 따른 입출력 정보 공유 방법을 수행하는 디바이스 컨트롤러는 호스트 장치로부터 데이터의 입출력 요청을 수신하고, 상기 입출력 요청을 수신하기 전에 호스트 장치에서 발생된 입출력 요청을 포함하는 입출력 리스트가 존재하는지 여부를 판단하여 상기 입출력 리스트의 존재 여부에 따라 수신한 데이터의 입출력 요청에 대한 데이터의 상태를 결정하며, 상기 구분된 상태를 고려하여 상기 수신한 입출력 요청에 따른 데이터를 처리할 수 있다.A device controller that performs an I / O information sharing method according to an exemplary embodiment of the present invention receives an input / output request of data from a host device and determines whether an input / output list including an input / output request generated in the host device exists before receiving the input / output request And determines the state of data for the input / output request of the received data according to whether the input / output list exists or not, and processes the data according to the received input / output request in consideration of the separated state.

일실시예에 따른 디바이스 컨트롤러는 상기 입출력 리스트가 존재하는 경우, 상기 입출력 리스트에 포함된 입출력 요청과 상기 수신한 입출력 요청을 이용하여 입출력 요청에 대한 데이터의 상태를 결정할 수 있다.The device controller according to an exemplary embodiment may determine the state of data for an input / output request using the input / output request included in the input / output list and the received input / output request when the input / output list exists.

일실시예에 따른 입출력 요청에 대한 데이터의 상태는 상기 입출력 리스트에 포함된 입출력 요청을 기반으로 상기 수신한 입출력 요청에 대한 발생 간격에 따라 데이터의 접근 빈도를 나타낼 수 있다.The state of data for an input / output request according to an exemplary embodiment may indicate a data access frequency according to an occurrence interval for the received input / output request based on an input / output request included in the input / output list.

일실시예에 따른 저장 장치는 호스트 장치에서 발생된 입출력 요청을 포함하는 입출력 리스트를 저장하는 화이트 버퍼; 상기 입출력 리스트가 존재하는지 여부를 고려하여 입출력 요청에 따른 데이터를 처리하는 디바이스 컨트롤러; 및 상기 입출력 요청에 따른 데이터를 저장하는 플래시 메모리를 포함할 수 있다.A storage device according to an exemplary embodiment includes a white buffer for storing an input / output list including an input / output request generated in a host device; A device controller for processing data according to an input / output request considering whether the input / output list exists; And a flash memory for storing data according to the input / output request.

일실시예에 따른 입출력 정보 공유 방법을 수행하는 호스트 장치는 상기 호스트 장치에서 발생한 데이터의 입출력 요청을 버퍼에 입력하는 입력부; 및 상기 버퍼에 입력된 입출력 요청의 개수를 고려하여 상기 입출력 요청을 포함하는 입출력 리스트를 저장 장치에 전달하는 전달부를 포함할 수 있다.A host apparatus for performing an I / O information sharing method according to an embodiment of the present invention includes an input unit for inputting an input / output request of data generated in the host apparatus to a buffer; And a transfer unit for transferring the input / output list including the input / output request to the storage device in consideration of the number of input / output requests input to the buffer.

일실시예에 따른 입력부는 상기 데이터의 입출력 요청이 발생한 순서에 대응하여 순차적으로 버퍼에 입력할 수 있다.The input unit according to an embodiment may sequentially input the data into the buffer in accordance with the order in which the input / output requests of the data occur.

일실시예에 따른 전달부는 상기 입출력 요청에 따른 쓰기 동작으로 포함하는 입출력 리스트를 커맨드 형태로 저장 장치에 전달할 수 있다.The transfer unit according to an embodiment may transmit the input / output list included in the write operation according to the input / output request to the storage device in the form of a command.

본 발명의 일실시예에 따른 입출력 정보 공부 방법은 입출력 리스트를 이용하여 호스트 장치로부터 수신 예정인 입출력 요청을 미리 판단함으로써, 저장 장치의 입출력 성능을 개선할 수 있다.The input / output information study method according to an embodiment of the present invention can improve the input / output performance of the storage device by determining in advance an input / output request to be received from the host device using the input / output list.

본 발명은 입출력 리스트에 포함된 입출력 요청에 나열 순서에 설정된 데이터의 상태를 고려하여 데이터를 플래시 메모리에 저장함으로써, 추후 블록에 대한 유효 페이지의 복사를 최소화할 수 있다.The present invention minimizes the copying of valid pages for later blocks by storing the data in the flash memory in consideration of the state of data set in the serialization order in the input / output requests included in the input / output list.

도 1은 일실시예에 따른 저장 장치와 호스트 장치를 도시한 도면이다.
도 2는 일실시예에 따른 저장 장치와 호스트 장치에 포함된 각각의 버퍼에 따른 동작을 설명하기 위해 도시한 도면이다.
도 3은 일실시예에 따른 입출력 리스트를 이용하여 데이터의 상태를 판단하는 동작을 설명하기 위해 도시한 도면이다.
도 4는 일실시예에 따른 입출력 리스트를 기반으로 입출력 요청된 데이터를 플래시 메모리에 저장하는 동작을 설명하기 위해 도시한 도면이다.
도 5는 일실시예에 따른 디바이스 컨트롤러의 입출력 정보 공유 방법을 설명하기 위한 흐름도이다.
도 6은 일실시예에 따른 호스트 장치의 입출력 정보 공유 방법을 설명하기 위한 흐름도이다.
1 is a diagram illustrating a storage device and a host device according to an embodiment.
2 is a diagram for explaining operation according to each buffer included in the storage device and the host device according to the embodiment.
FIG. 3 is a diagram illustrating an operation of determining the state of data using an input / output list according to an embodiment.
4 is a diagram illustrating an operation of storing data requested to be input / output in a flash memory based on an input / output list according to an exemplary embodiment.
5 is a flowchart illustrating an input / output information sharing method of a device controller according to an embodiment.
6 is a flowchart illustrating a method for sharing input / output information of a host apparatus according to an exemplary embodiment of the present invention.

이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.

도 1은 일실시예에 따른 저장 장치와 호스트 장치를 도시한 도면이다.1 is a diagram illustrating a storage device and a host device according to an embodiment.

도 1을 참고하면, 호스트 장치(101)는 호스트 장치(101)에 포함된 복수의 계층을 통해 데이터의 입출력 요청(105)을 저장 장치(102)에 전달할 수 있다. 구체적으로, 호스트 장치(101)는 입출력 요청(105)이 발생한 계층을 기준으로 하위 계층별로 존재하는 버퍼를 통해 데이터의 입출력 요청(105)을 저장 장치(102)에 전달할 수 있다. 일례로, 호스트 장치(101)는 애플리케이션, 파일 시스템, 블록 IO 레이어 등을 포함하는 복수의 계층을 포함할 수 있으며, 각 계층에서 발생하는 입출력 요청(105)을 저장 장치(102)에 전달할 수 있다.Referring to FIG. 1, the host device 101 may transmit data input / output requests 105 to the storage device 102 through a plurality of layers included in the host device 101. Specifically, the host device 101 can transmit a data input / output request 105 to the storage device 102 through a buffer that exists for each lower layer based on the layer in which the input / output request 105 occurs. For example, the host device 101 may include a plurality of layers including an application, a file system, a block IO layer, etc., and may transmit an input / output request 105 generated at each layer to the storage device 102 .

이 때, 호스트 장치(101)는 계층별로 존재하는 버퍼에 대한 evict 정책에 기초하여 입출력 요청(105)을 하위 계층에 존재하는 버퍼에 전달할 수 있다. evict 정책은 버퍼에서 오래되거나 사용하지 않는 입출력 요청을 제거하는 정책을 의미할 수 있다.At this time, the host device 101 can transmit the input / output request 105 to the buffer existing in the lower layer based on the evict policy for the buffer existing in each layer. The evict policy can refer to a policy that removes old or unused I / O requests from the buffer.

여기서, 버퍼에서 오래되거나 사용하지 않는 입출력 요청은 상황에 따라 두 가지 의미로 해석될 수 있다. 첫 번째는 호스트 장치(101)의 해당 계층을 통해 데이터의 처리가 이루어진 이후에 더 이상 사용되지 않은 입출력 요청을 의미할 수 있다. 두 번째는 호스트 장치(101)의 해당 계층을 통해 데이터의 처리가 발생하지 않는 입출력 요청을 의미할 수 있다.Here, old and unused I / O requests in the buffer can be interpreted in two ways depending on the situation. The first one may refer to an input / output request that is no longer used after processing of data through the corresponding layer of the host device 101. [ And the second may refer to an input / output request in which data processing does not occur through the corresponding layer of the host apparatus 101. [

호스트 장치(101)에 포함된 각 계층별 버퍼는 evict 정책이 발생되는 간격에 따라 일정 양의 입출력 요청이 저장될 수 있다. 각 계층별 버퍼는 일정 간격 또는 기 설정된 입출력 요청의 용량을 고려하여 evict 정책에 따라 입출력 요청을 하위 계층의 버퍼로 전달할 수 있다. 그리고, 계층별 버퍼는 최종적으로, 호스트 장치(101)와 연동하는 저장 장치(102)에 호스트 장치(101)에서 발생한 데이터의 입출력 요청(105)을 전달할 수 있다.Each buffer of each layer included in the host apparatus 101 can store a certain amount of input / output requests according to the interval at which the evict policy is generated. The buffers for each layer can transmit I / O requests to the lower layer buffers according to the evict policy considering a predetermined interval or the capacity of predetermined I / O requests. The buffer for each layer may finally transmit an input / output request 105 of data generated in the host device 101 to the storage device 102 interlocked with the host device 101.

저장 장치(102)는 호스트 장치(101)로부터 수신한 입출력 요청(105)에 따라 데이터를 처리할 수 있다. 이 때, 저장 장치(102)는 입출력 요청(105)에 대한 요청 패턴에 따라 서로 다른 처리 속도를 통해 데이터를 처리할 수 있다. 구체적으로, 저장 장치(102)는 데이터에 대한 읽기/쓰기/접근 동작의 처리 속도가 빠르며, 상대적으로 지우기 동작의 처리 속도가 느리다. 저장 장치(102)는 호스트 장치(101)로부터 수신한 입출력 요청(105)에 따라 처리해야 되는 동작이 읽기/쓰기/접근 동작인지 또는 지우기 동작인지에 따라 입출력 성능의 차이가 클 수 있다. 이때, 저장 장치(102)는 디바이스 컨트롤러를 통해 입출력 요청(105)에 따른 동작을 제어할 수 있다.The storage device 102 can process data according to the input / output request 105 received from the host device 101. [ At this time, the storage device 102 can process data through different processing speeds according to a request pattern for the input / output request 105. Specifically, the storage device 102 has a high processing speed of read / write / access operations to data, and relatively slow processing speed of the erase operation. The storage device 102 may have a large input / output performance difference depending on whether the operation to be processed according to the input / output request 105 received from the host device 101 is a read / write / access operation or a clearing operation. At this time, the storage device 102 can control the operation according to the input / output request 105 through the device controller.

따라서, 저장 장치(102)는 입출력 성능에 영향을 끼치는 쓰기 동작을 나타내는 입출력 요청(105)을 호스트 장치(101)를 통해 미리 전달받는 경우, 입출력 성능을 향상시킬 수 있다. 결국, 호스트 장치(101)는 저장 장치(102)가 수행하는 입출력 성능을 향상시키기 위하여 버퍼에 기록된 입출력 요청(105) 중 쓰기 동작을 나타내는 명령에 대하여 입출력 리스트(106)로 저장 장치(102)에 미리 전달할 수 있다.Accordingly, when the storage device 102 receives the input / output request 105 indicating the write operation that affects the input / output performance in advance through the host device 101, the input / output performance can be improved. As a result, in order to improve the input / output performance performed by the storage device 102, the host device 101 stores the input / output list 105 in the storage device 102 with respect to the instruction indicating the write operation among the input / output requests 105 written in the buffer. In advance.

여기서, 호스트 장치(101)는 저장 장치(102)의 특성으로 인하여 입출력 리스트(106)를 커맨드 형태로 저장 장치(102)에 저장할 수 있다. 즉, 저장 장치(102)는 호스트 장치(101)로부터 전달되는 입출력 요청(105)과 별개의 커맨드 형태로 생성된 입출력 리스트(106)를 수신할 수 있다.Here, the host device 101 may store the input / output list 106 in the storage device 102 in the form of a command due to the characteristics of the storage device 102. [ That is, the storage device 102 can receive the input / output list 105 generated from the host device 101 and the input / output list 106 generated in the form of a separate command.

이후, 저장 장치(102)는 호스트 장치(101)로부터 입출력 요청(105)을 수신하고, 입출력 리스트(106)를 이용하여 입출력 요청(105)에 따른 데이터를 처리할 수 있다. 구체적으로, 저장 장치(102)는 입출력 리스트(106)를 수신하면, 입출력 리스트(106)에 포함된 입출력 정보에 기초하여 수신 예정인 입출력 요청을 미리 판단할 수 있다. 다시 말해, 입출력 리스트(106)는 호스트 장치(101)의 계층별로 존재하는 버퍼에 기록된 입출력 요청을 포함하는 것으로 저장 장치(102)에 전달된 데이터 또는 전달 예정인 데이터에 대한 입출력 요청을 포함할 수 있다.The storage device 102 can then receive the input / output requests 105 from the host device 101 and process data according to the input / output requests 105 using the input / output list 106. Specifically, upon receiving the input / output list 106, the storage device 102 can previously determine an input / output request to be received based on the input / output information included in the input / output list 106. In other words, the input / output list 106 may include an input / output request for data transferred to the storage device 102 or data to be transferred, including an input / output request recorded in a buffer existing in each layer of the host device 101 have.

따라서, 저장 장치(102)는 호스트 장치(101)로부터 입출력 요청(105)을 수신하기 이전에 입출력 리스트(106)에 기초하여 수신 예정인 입출력 요청에 대하여 동작을 수행하기 위한 대기 상태로 준비할 수 있다.Accordingly, the storage device 102 can prepare for an input / output request to be received based on the input / output list 106 in a waiting state for performing an operation before receiving the input / output request 105 from the host device 101 .

그리고, 저장 장치(102)는 입출력 요청(105)을 수신하면, 수신한 입출력 요청(105)이 입출력 리스트(106)에 포함된 정보인지를 확인할 수 있다. 저장 장치(102)는 확인 결과에 따라 수신한 데이터의 입출력 요청에 대한 데이터의 상태를 결정할 수 있다. 여기서, 데이터의 상태는 입출력 리스트에 포함된 입출력 요청을 기반으로 상기 수신한 입출력 요청에 대한 발생 간격에 따라 데이터의 접근 빈도를 나타낼 수 있다.Upon receiving the input / output request 105, the storage device 102 can confirm whether the received input / output request 105 is information included in the input / output list 106. The storage device 102 may determine the status of data for the input / output request of the received data according to the confirmation result. Here, the state of the data may indicate the access frequency of data according to the generation interval for the received input / output request based on the input / output request included in the input / output list.

저장 장치(102)는 입출력 리스트에 기초하여 수신한 입출력 요청에 대하여 자주 접근하는지 또는 자주 접근하지 않는지에 대한 상태를 구분할 수 있다. 이후, 저장 장치(102)는 구분된 상태를 고려하여 상기 수신한 입출력 요청에 따른 데이터를 처리할 수 있다.The storage device 102 can distinguish the states of whether the I / O requests are frequently accessed or not, based on the input / output list. Then, the storage device 102 may process the data according to the received input / output request in consideration of the divided state.

도 2는 일실시예에 따른 저장 장치와 호스트 장치에 포함된 각각의 버퍼에 따른 동작을 설명하기 위해 도시한 도면이다.2 is a diagram for explaining operation according to each buffer included in the storage device and the host device according to the embodiment.

도 2를 참고하면, 호스트 장치(201)는 입출력 요청이 발생하는 복수의 계층을 포함할 수 있다. 그리고, 호스트 장치(201)는 각 계층에 대응하는 버퍼를 포함할 수 있다. 일례로, 호스트 장치(201)는 애플리케이션, 파일 시스템, 블록 IO 레이어로 구분된 복수의 계층을 포함할 수 있다. 그리고, 각 계층은 DBMS Buffer, Page Cache, IO Queue 에 대한 버퍼가 존재할 수 있다.Referring to FIG. 2, the host device 201 may include a plurality of layers in which an input / output request occurs. The host apparatus 201 may include a buffer corresponding to each layer. For example, the host device 201 may include a plurality of layers divided into an application, a file system, and a block IO layer. Each layer may have a buffer for the DBMS Buffer, Page Cache, and IO Queue.

여기서, 호스트 장치(201)는 도 1을 통해 상술한 바와 같이 각 계층에서 발생한 입출력 요청에 대하여 하위 계층에 존재하는 버퍼에 전달할 수 있다. 그리고, 하위 계층의 버퍼는 기 저장된 입출력 요청에 대하여 상위 계층으로 전달된 입출력 요청을 순차적으로 저장할 수 있다.Here, the host apparatus 201 can transmit the input / output requests generated in the respective layers to the buffer existing in the lower layer as described above with reference to FIG. The buffer of the lower layer can sequentially store the input / output requests transmitted to the upper layer for the previously stored input / output requests.

이 때, 하위 계층의 버퍼는 evict 정책에 따라 저장된 입출력 요청을 현재 계층보다 낮은 하위 계층의 버퍼에 전달할 수 있다. 또한, 하위 계층의 버퍼는 버퍼에 입출력 요청이 일정량 이상으로 쌓였는지 또는 사용자의 의해 현재 계층보다 낮은 하위 계층의 버퍼에 전달할 수 있다.At this time, the lower layer buffer can transmit the input / output request stored according to the evict policy to the lower layer buffer lower than the current layer. In addition, the lower layer buffers can be transmitted to the buffer of the lower layer which is lower than the current layer by the user or whether the input / output request is accumulated in the buffer more than a certain amount.

여기서, 호스트 장치(201)는 저장 장치(202)의 입출력 성능을 고려하여 쓰기 동작에 대한 명령을 포함하는 입출력 리스트를 하위 계층의 버퍼에 전달하고, 최종적으로 저장 장치(202)에 존재하는 화이트 버퍼에 전달할 수 있다.Here, the host device 201 transfers the input / output list including the command for the write operation to the buffer of the lower layer in consideration of the input / output performance of the storage device 202, .

도 3에 도시된 호스트 장치(201)의 각 계층은 최상위 계층에서부터 최하위 계층까지 순차적으로 쓰기 동작에 대한 입출력 리스트를 계층별 버퍼에 전달할 수 있다.Each layer of the host apparatus 201 shown in FIG. 3 can sequentially transmit the input / output list for the write operation from the highest layer to the lowest layer to the buffer for each layer.

(1) 어플리케이션 혹은 DBMS은 쓰기 동작에 대한 입출력 리스트를 파일 시스템의 Page Cache에 전달함.(1) The application or the DBMS transfers the I / O list for the write operation to the Page Cache of the file system.

(2) 파일 시스템은은 쓰기 동작에 대한 입출력 리스트를 Block I/O Layer에 전달함.(2) The file system transfers the I / O list for the write operation to the block I / O layer.

(3) 블록 I/O 레이어는 쓰기 동작에 대한 입출력 리스트를 NCQ에 전달함.(3) The block I / O layer passes the I / O list for the write operation to the NCQ.

(4) NCQ는 쓰기 동작에 대한 입출력 리스트를 Write Buffer에 전달함.(4) NCQ transfers I / O list for write operation to Write Buffer.

(5) FTL은 전 계층으로부터 쓰기 동작에 대한 입출력 리스트를 수신하여 데이터를 처리하기 위해 활용함.(5) FTL is used to process data by receiving I / O list for write operation from all layers.

여기서, 호스트 장치(301)의 각 계층은 각 계층으로부터 정보를 전달 받을 때 꼭 최상위 계층으로부터 전달 받을 필요는 없으며, 입출력 요청이 발생된 현재 계층을 기준으로 쓰기 동작에 대한 입출력 리스트를 하위 계층의 버퍼에 전달할 수 있다.Herein, each layer of the host device 301 does not need to be delivered from the highest layer when information is received from each layer, and the input / output list for the write operation based on the current layer in which the input / .

또한, 저장 장치(202)는 호스트 장치(201)와 연동하기 위한 인터페이스에 존재하는 버퍼를 통해 쓰기 동작에 대한 명령을 포함하는 입출력 리스트를 수신할 수 있다.In addition, the storage device 202 may receive an input / output list including a command for a write operation through a buffer existing in an interface for interfacing with the host device 201. [

인터페이스는 직접 연결형 인터페이스와 간접 연결형 인터페이스로 구분될 수 있다.The interface can be divided into a direct connection interface and an indirect connection interface.

제1 실시예에 따르면, 호스트 장치(201)와 저장 장치(203)는 직접 연결형 인터페이스를 이용할 수 있다.According to the first embodiment, the host device 201 and the storage device 203 can use a direct connection interface.

구체적으로, 호스트 장치(201)와 저장 장치(203)는 PCI(peripheral component interconnect) 케이블에 따른 직접 연결형 인터페이스를 이용하여 입출력 리스트를 화이트 버퍼에 전달할 수 있다. 여기서, 직접 연결형 인터페이스는 호스트 장치(201)와 저장 장치(203)를 연결하기 위한 버스 또는 로컬 버스를 의미할 수 있다. 그리고, 직접 연결형 인터페이스는 입출력 리스트를 전달할 때마다 변수를 생성하여 입출력 리스트를 화이트 버퍼에 전달할 수 있다.Specifically, the host device 201 and the storage device 203 can transfer the input / output list to the white buffer using a direct connection type interface according to a peripheral component interconnect (PCI) cable. Here, the direct connection type interface may refer to a bus or a local bus for connecting the host apparatus 201 and the storage apparatus 203. In addition, the direct connection interface can generate a variable every time an I / O list is transmitted, and pass the I / O list to the white buffer.

제2 실시예에 따르면, 호스트 장치(201)와 저장 장치(203)는 간접 연결형 인터페이스를 이용할 수 있다.According to the second embodiment, the host device 201 and the storage device 203 can use an indirectly connected interface.

구체적으로, 호스트 장치(201)와 저장 장치(203)는 SATA(Serial Advanced Technology Attachment) 케이블에 따른 간접 연결형 인터페이스를 이용하여 입출력 리스트를 화이트 버퍼에 전달할 수 있다. 그리고, 간접 연결형 인터페이스는 입출력 리스트를 전달할 때마다 호스트 장치(201)에서 현재 사용되지 않은 변수를 추출하여 입출력 리스트를 화이트 버퍼에 전달할 수 있다.Specifically, the host device 201 and the storage device 203 can transfer the input / output list to the white buffer using an indirect connection type interface based on a SATA (Serial Advanced Technology Attachment) cable. Each time the indirect connection type interface transfers the input / output list, the host apparatus 201 can extract the variables that are not currently used and transfer the input / output list to the white buffer.

결국, 저장 장치(203)는 호스트 장치(201)에서 발생한 입출력 요청에 따른 입출력 리스트를 별도의 커맨드를 통해 미리 수신함에 따라 디바이스 컨트롤러(204)에 통해 높은 입출력 성능을 낼 수 있다.As a result, the storage device 203 can receive high input / output performance through the device controller 204 by receiving an input / output list according to an input / output request generated by the host device 201 in advance through a separate command.

도 3은 일실시예에 따른 입출력 리스트를 이용하여 데이터의 상태를 판단하는 동작을 설명하기 위해 도시한 도면이다.FIG. 3 is a diagram illustrating an operation of determining the state of data using an input / output list according to an embodiment.

도 3을 참고하면, 디바이스 컨트롤러(303)는 호스트 장치(301)로부터 데이터의 입출력 요청(302)을 수신할 수 있다. 그리고, 디바이스 컨트롤러(303)는 입출력 요청을 수신하기 전에 호스트 장치(301)에서 발생된 입출력 요청을 포함하는 입출력 리스트(305)가 존재하는지 여부를 판단할 수 있다. 이 때, 디바이스 컨트롤러(303)는 저장 장치에 존재하는 화이트 버퍼(304)에 입출력 리스트(305)가 저장되어 있는지를 확인할 수 있다.3, the device controller 303 can receive a data input / output request 302 from the host device 301. [ The device controller 303 may determine whether there is an input / output list 305 including an input / output request generated by the host device 301 before receiving the input / output request. At this time, the device controller 303 can confirm whether the input / output list 305 is stored in the white buffer 304 existing in the storage device.

디바이스 컨트롤러(303)는 입출력 리스트(305)의 존재 여부에 따라 수신한 데이터의 입출력 요청에 대한 데이터의 상태를 결정할 수 있다. 그리고, 디바이스 컨트롤러(303)는 입출력 리스트(305)가 존재하는 경우 및 입출력 리스트(305)가 존재하지 않는 경우에 대응하여 다음과 같이 데이터의 상태를 결정할 수 있다.The device controller 303 can determine the state of data for the input / output request of the received data according to whether the input / output list 305 exists. Then, the device controller 303 can determine the state of the data in response to the case where the input / output list 305 exists and the case where the input / output list 305 does not exist as follows.

제1 실시예에 따른 디바이스 컨트롤러(303)는 입출력 리스트(305)가 존재하는 경우를 고려하여 데이터의 상태를 결정할 수 있다.The device controller 303 according to the first embodiment can determine the state of data in consideration of the case where the input / output list 305 exists.

구체적으로, 디바이스 컨트롤러(303)는 상기 입출력 리스트(305)에 포함된 입출력 요청과 상기 수신한 입출력 요청을 이용하여 입출력 요청에 대한 데이터의 상태를 결정할 수 있다. 디바이스 컨트롤러(303)는 입출력 리스트에 포함된 입출력 요청을 기반으로 상기 수신한 입출력 요청에 대한 발생 간격에 따른 데이터의 접근 빈도에 따라 데이터의 상태를 결정할 수 있다.Specifically, the device controller 303 can determine the state of data for the input / output request using the input / output request included in the input / output list 305 and the received input / output request. The device controller 303 can determine the state of the data according to the access frequency of data according to the generation interval for the received input / output request based on the input / output request included in the input / output list.

도 3의 (a)를 살펴보면, 디바이스 컨트롤러(303)는 입출력 리스트(305)에 포함된 입출력 요청 즉, 쓰기 동작에 대한 요청에 대한 최근 사용 빈도를 고려할 수 있다.Referring to FIG. 3A, the device controller 303 may consider the recent frequency of use of an input / output request included in the input / output list 305, that is, a request for a write operation.

디바이스 컨트롤러(303)는 입출력 리스트(305)를 통해서 특정 입출력 요청에 대한 재요청되는 발생 간격이 좁은 경우, 데이터의 상태를 접근 빈도가 높은 핫데이터(hot-data)로 결정할 수 있다. 즉, 디바이스 컨트롤러(303)는 특정 입출력 요청에 대한 데이터의 쓰기 동작이 빈번하게 발생하는 경우를 고려하여 해당 쓰기 동작에 따른 데이터의 상태를 자주 접근되는 상태로 결정할 수 있다.The device controller 303 can determine the state of the data as hot data having a high access frequency when the generation interval for a specific input / output request is narrow through the input / output list 305. [ That is, the device controller 303 can determine the state of the data according to the write operation to be frequently accessed in consideration of the case where the write operation of the data for the specific input / output request frequently occurs.

일례로, 디바이스 컨트롤러(303)는 수신한 입출력 요청(302)에 대응하여 입출력 리스트(305)를 통하여 총2회 재요청되었음을 확인할 수 있다. 따라서, 디바이스 컨트롤러(303)는 수신한 입출력 요청(302)에 대한 데이터가 자주 접근되는 데이터라고 판단하고, 이에 대한 상태를 핫데이터(306)로 결정할 수 있다.For example, the device controller 303 can confirm that the device controller 303 has been requested twice in total through the input / output list 305 in response to the received input / output request 302. Accordingly, the device controller 303 determines that the data for the received input / output request 302 is frequently accessed, and can determine the state of the data as the hot data 306.

도 3의 (b)를 살펴보면, 디바이스 컨트롤러(303)는 입출력 리스트(305)에 포함된 입출력 요청 즉, 쓰기 동작에 대한 요청에 대한 최근 사용 빈도를 고려할 수 있다.3B, the device controller 303 may consider the recent frequency of use of the input / output request included in the input / output list 305, that is, the request for the write operation.

디바이스 컨트롤러(303)는 입출력 리스트(305)를 통해서 특정 입출력 요청에 대한 재요청되는 발생 간격이 큰 경우, 데이터의 상태를 접근 빈도가 낮은 콜드데이터(cold-data)로 결정할 수 있다. 즉, 디바이스 컨트롤러(303)는 특정 입출력 요청에 대한 데이터의 쓰기 동작이 드물게 발생하는 경우를 고려하여 해당 쓰기 동작에 따른 데이터의 상태를 자주 접근되지 않는 상태로 결정할 수 있다.The device controller 303 can determine the state of the data as cold data having a low access frequency when the generation interval required for a specific input / output request is large through the input / output list 305. [ That is, the device controller 303 may determine that the state of data according to the write operation is not frequently accessed, taking into consideration a case where data write operation for a specific input / output request rarely occurs.

일례로, 디바이스 컨트롤러(303)는 입출력 리스트(305)가 존재하지만, 수신한 입출력 요청(302)에 대한 쓰기 동작이 존재하지 않음에 따라 입출력 요청(302)에 대하여 시간적으로 잦지 않고 드물게 재요청됨을 확인할 수 있다. 따라서, 디바이스 컨트롤러(303)는 수신한 입출력 요청(302)에 대한 데이터가 자주 접근되지 않는 데이터라고 판단하고, 이에 대한 상태를 콜드데이터(307)로 결정할 수 있다.For example, the device controller 303 has an input / output list 305, but the input / output request 302 is not frequently updated in time and is rarely requested again due to the absence of a write operation for the received input / output request 302 Can be confirmed. Accordingly, the device controller 303 determines that the data for the received input / output request 302 is data that is not frequently accessed, and can determine the state of the data as the cold data 307.

제2 실시예에 따른 디바이스 컨트롤러(303)는 입출력 리스트가 존재하지 않은 경우를 고려하여 데이터의 상태를 결정할 수 있다.The device controller 303 according to the second embodiment can determine the state of the data in consideration of the case where the input / output list does not exist.

구체적으로, 도 3의 (c)를 살펴보면, 디바이스 컨트롤러(303)는 수신한 입출력 요청(302)에 대응하여 입출력 리스트(305)가 존재하지 않을 수 있다. 다시 말해, 디바이스 컨트롤러(303)는 수신한 입출력 요청(302)에 대하여 사용 횟수가 부재함을 확인할 수 있다. 따라서, 디바이스 컨트롤러(303)는 수신한 입출력 요청(302)에 대한 데이터가 자주 접근되지 않는 데이터라고 판단하고, 이에 대한 상태를 콜드데이터(308)로 결정할 수 있다.3C, the device controller 303 may not have the input / output list 305 corresponding to the input / output request 302 received. In other words, the device controller 303 can confirm that there is no use frequency with respect to the received input / output request 302. Therefore, the device controller 303 determines that the data for the received input / output request 302 is data that is not frequently accessed, and can determine the state of the data as the cold data 308.

도 4는 일실시예에 따른 입출력 리스트를 기반으로 입출력 요청된 데이터를 플래시 메모리에 저장하는 동작을 설명하기 위해 도시한 도면이다.4 is a diagram illustrating an operation of storing data requested to be input / output in a flash memory based on an input / output list according to an exemplary embodiment.

도 4를 참고하면, 디바이스 컨트롤러(403)는 호스트 장치(401)로부터 데이터의 입출력 요청(402)을 수신할 수 있다. 그리고, 디바이스 컨트롤러(403)는 입출력 요청을 수신하기 전에 호스트 장치(401)에서 발생된 입출력 요청을 포함하는 입출력 리스트(404)가 존재하는지 여부를 판단할 수 있다.Referring to FIG. 4, the device controller 403 can receive a data input / output request 402 from the host device 401. The device controller 403 may determine whether there is an input / output list 404 including an input / output request generated by the host device 401 before receiving the input / output request.

여기서, 디바이스 컨트롤러(403)는 저장 장치의 입출력 성능을 향상시키기 위하여 입출력 리스트(404)를 이용할 수 있다. 구체적으로, 디바이스 컨트롤러(403)는 입출력 리스트(404)에 포함된 입출력 정보에 기초하여 수신 예정인 입출력 요청을 미리 판단할 수 있다. 입출력 리스트(404)는 호스트 장치(401)의 계층별로 존재하는 버퍼에 기록된 입출력 요청을 포함하는 것으로 디바이스 컨트롤러(403)에 전달된 데이터 또는 전달 예정인 데이터에 대한 입출력 요청을 포함할 수 있다.Here, the device controller 403 can use the input / output list 404 to improve the input / output performance of the storage device. Specifically, the device controller 403 can previously determine an input / output request to be received based on the input / output information included in the input / output list 404. The input / output list 404 includes an input / output request recorded in a buffer that exists in each layer of the host device 401, and may include an input / output request for data transferred to the device controller 403 or data to be transferred.

디바이스 컨트롤러(403)는 호스트 장치(401)로부터 입출력 요청(402)을 수신하기 이전에 입출력 리스트(404)에 기초하여 수신 예정인 입출력 요청에 대하여 동작을 수행하기 위한 대기 상태로 준비할 수 있다.The device controller 403 can prepare for an input / output request to be received based on the input / output list 404 in a waiting state for performing an operation before receiving the input / output request 402 from the host device 401. [

이후, 디바이스 컨트롤러(403)는 입출력 요청(402)을 수신하면, 입출력 요청에 대한 데이터의 논리 주소에 기초하여 수신한 입출력 요청에 따른 데이터를 처리할 수 있다. 다시 말해, 디바이스 컨트롤러(403)는 입출력 리스트(404)에 포함된 입출력 요청에 대한 데이터의 논리 주소와 수신한 입출력 요청에 대한 데이터의 논리 주소를 비교할 수 있다. 그리고, 디바이스 컨트롤러(403)는 비교 결과 동일한 논리 주소가 존재하는 경우, 입출력 리스트(404)에 포함된 입출력 요청에 대한 데이터의 논리 주소와 동일한 블록으로 수신한 입출력 요청의 데이터를 클러스터링할 수 있다.When the device controller 403 receives the input / output request 402, the device controller 403 can process data according to the received input / output request based on the logical address of the data for the input / output request. In other words, the device controller 403 can compare the logical address of the data for the input / output request included in the input / output list 404 with the logical address of the data for the received input / output request. The device controller 403 can cluster the data of the input / output request received in the same block as the logical address of the data for the input / output request included in the input / output list 404 when the same logical address exists as a result of the comparison.

도 5는 일실시예에 따른 디바이스 컨트롤러의 입출력 정보 공유 방법을 설명하기 위한 흐름도이다.5 is a flowchart illustrating an input / output information sharing method of a device controller according to an embodiment.

단계(501)에서 디바이스 컨트롤러는 호스트 장치로부터 데이터의 입출력 요청을 수신할 수 있다.In step 501, the device controller can receive a data input / output request from the host device.

단계(502)에서 디바이스 컨트롤러는 입출력 요청을 수신하기 전에 호스트 장치에서 발생된 입출력 요청을 포함하는 입출력 리스트가 존재하는지 여부를 판단할 수 있다. 이때, 디바이스 컨트롤러는 저장 장치에 존재하는 화이트 버퍼에 입출력 리스트가 존재하는지 여부를 확인할 수 있다.In step 502, the device controller may determine whether there is an input / output list including an input / output request generated in the host device before receiving the input / output request. At this time, the device controller can check whether or not the input / output list exists in the white buffer existing in the storage device.

입출력 리스트가 존재하는 경우(502: Yes), 단계(503)에서 디바이스 컨트롤러는 입출력 리스트에 포함된 입출력 요청으로 호스트 장치로부터 수신한 입출력 요청이 존재하는지 여부를 확인할 수 있다. 이는 입출력 요청에 대한 발생 간격에 따른 데이터의 접근 빈도를 고려하여 입출력 요청에 대한 데이터의 상태를 판단하기 위함일 수 있다.If an input / output list exists (502: Yes), the device controller can check whether an input / output request received from the host device exists in the input / output request included in the input / output list in step 503. This can be done to determine the state of the data for the input / output request considering the access frequency of the data according to the occurrence interval for the input / output request.

입출력 리스트가 존재하지 않는 경우(502: Yes) 및 입출력 요청이 존재하지 않는 경우(503: No) 단계(504)에서 디바이스 컨트롤러는 데이터의 상태를 접근 빈도가 낮은 콜드데이터(cold-data)로 결정할 수 있다.If the input / output list does not exist (502: Yes) and the input / output request does not exist (503: No), the device controller determines the state of the data as cold data having a low access frequency in step 504 .

입출력 요청이 존재하는 경우(503: Yes), 단계(505)에서 디바이스 컨트롤러는 데이터의 상태를 접근 빈도가 높은 핫데이터(hot-data)로 결정할 수 있다.If there is an input / output request (503: Yes), the device controller can determine the status of the data as hot data (hot-data) having a high access frequency in step 505.

단계(506)에서 디바이스 컨트롤러는 구분된 상태를 고려하여 상기 수신한 입출력 요청에 따른 데이터를 처리할 수 있다.In step 506, the device controller can process the data according to the received input / output request in consideration of the divided state.

도 6은 일실시예에 따른 호스트 장치의 입출력 정보 공유 방법을 설명하기 위한 흐름도이다.6 is a flowchart illustrating a method for sharing input / output information of a host apparatus according to an exemplary embodiment of the present invention.

단계(601)에서 호스트 장치는 호스트 장치에서 발생한 데이터의 입출력 요청을 버퍼에 입력할 수 있다. 호스트 장치는 데이터의 입출력 요청이 발생한 순서에 대응하여 순차적으로 버퍼에 입력할 수 있다.In step 601, the host device may input an input / output request of data generated in the host device to the buffer. The host device can sequentially input the data into the buffer in accordance with the order in which data input / output requests occur.

그리고, 호스트 장치는 애플리케이션, 파일 시스템, 블록 IO 레이어로 구분된 복수의 계층을 포함할 수 있다. 각 계층은 DBMS Buffer, Page Cache, IO Queue 에 대한 버퍼가 존재할 수 있다. 호스트 장치는 입출력 요청이 발생된 현재 계층을 기준으로 하위 계층에 존재하는 버퍼에 데이터의 입출력 요청을 입력할 수 있다.The host device may include a plurality of layers separated into an application, a file system, and a block IO layer. Each layer may have buffers for DBMS Buffer, Page Cache, and IO Queue. The host device can input the data input / output request into the buffer existing in the lower layer based on the current layer in which the input / output request is generated.

단계(602)에서 호스트 장치는 버퍼에 입력된 입출력 요청의 개수가 일정량 입력되었는지 여부를 확인할 수 있다. 이는 버퍼의 evict 정책에 의한 동작으로써, 버퍼에서 오래되거나 사용하지 않는 입출력 요청을 제거하기 위함 일 수 있다.In step 602, the host device can confirm whether a certain amount of input / output requests input to the buffer has been input. This can be done by the evict policy of the buffer, to remove old or unused I / O requests from the buffer.

일정량 입력된 경우(602: Yes), 단계(603)에서 호스트 장치는 상기 입출력 요청을 포함하는 입출력 리스트를 저장 장치에 전달할 수 있다. 호스트 장치는 입출력 요청에 따른 쓰기 동작으로 포함하는 입출력 리스트를 커맨드 형태로 저장 장치에 전달할 수 있다.If the predetermined amount is input (602: Yes), in step 603, the host device can transmit the input / output list including the input / output request to the storage device. The host device can transmit the input / output list included in the write operation according to the input / output request to the storage device in the form of a command.

본 발명의 실시 예에 따른 방법들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.The methods according to embodiments of the present invention may be implemented in the form of program instructions that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions recorded on the medium may be those specially designed and constructed for the present invention or may be available to those skilled in the art of computer software.

이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.While the invention has been shown and described with reference to certain preferred embodiments thereof, it will be understood by those of ordinary skill in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. This is possible.

그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.Therefore, the scope of the present invention should not be limited to the described embodiments, but should be determined by the equivalents of the claims, as well as the claims.

101: 호스트 장치
102: 저장 장치
103: 디바이스 컨트롤러
104: 화이트 버퍼
105: 입출력 요청
106: 입출력 리스트
101: Host device
102: Storage device
103: Device controller
104: white buffer
105: I / O request
106: Input / output list

Claims (16)

디바이스 컨트롤러가 수행하는 입출력 정보 공유 방법에 있어서,
호스트 장치를 구성하는 각 계층에서 순차적으로 발생한 입출력 요청 중, 쓰기 동작을 나타내는 명령을 포함하는 입출력 요청으로 생성된 데이터의 입출력 리스트를 수신하는 단계-상기 데이터의 입출력 리스트는 상기 각 계층별로 존재하는 버퍼에 저장된 입출력 요청을 제거하는 정책을 기반으로 계층별 서로 다른 쓰기 동작을 수행하기 위한 입출력 요청을 포함하고, 상기 호스트 장치로부터 데이터의 입출력 요청을 수신하기 이전에 미리 저장 장치로 전달됨-;
상기 수신한 입출력 리스트를 기반으로 상기 호스트 장치로부터 수신할 예정인 입출력 요청에 대응하는 동작을 수행하기 위한 대기 상태로 설정하는 단계;
상기 호스트 장치로부터 상기 수신한 입출력 리스트와 구분되는 데이터의 입출력 요청을 수신하는 단계;
상기 호스트 장치로부터 커맨드 형태로 미리 수신한 입출력 리스트에 기초하여 상기 입출력 리스트 내 상기 수신한 입출력 요청이 존재하는지 여부를 확인하는 단계;
상기 입출력 리스트에 상기 수신한 입출력 요청이 존재하는지 여부에 따라 수신한 데이터의 입출력 요청에 대한 데이터의 상태를 결정하는 단계; 및
상기 결정된 상태를 고려하여 상기 입출력 리스트에 포함된 입출력 요청에 대한 데이터의 논리 주소에 따라 상기 수신한 입출력 요청에 따른 데이터를 처리하는 단계
를 포함하는 입출력 정보 공유 방법.
A method for sharing an input / output information performed by a device controller,
The method includes receiving an input / output list of data generated by an input / output request including an instruction indicating a write operation among input / output requests serially generated in each layer constituting a host device, the input / output list of the data including a buffer An input / output request for performing a different write operation for each layer based on a policy for removing an input / output request stored in the storage unit, and is transmitted to the storage device before receiving a data input / output request from the host device;
Setting a standby state for performing an operation corresponding to an input / output request to be received from the host device based on the received input / output list;
Receiving an input / output request of data distinguished from the received input / output list from the host device;
Checking whether the received input / output request is present in the input / output list based on an input / output list received in advance from the host device in the form of a command;
Determining a state of data for an input / output request of the received data according to whether the received input / output request exists in the input / output list; And
Processing the data according to the received input / output request according to the logical address of the data for the input / output request included in the input / output list in consideration of the determined status
Output information sharing method.
삭제delete 제1항에 있어서,
상기 결정하는 단계는,
상기 입출력 리스트가 존재하는 경우, 상기 입출력 리스트에 포함된 입출력 요청과 상기 수신한 입출력 요청을 이용하여 입출력 요청에 대한 데이터의 상태를 결정하는 입출력 정보 공유 방법.
The method according to claim 1,
Wherein the determining comprises:
Output request, and determines the state of data for an input / output request using the input / output request included in the input / output list and the received input / output request when the input / output list exists.
제1항에 있어서,
상기 입출력 요청에 대한 데이터의 상태는,
상기 입출력 리스트에 포함된 입출력 요청을 기반으로 상기 수신한 입출력 요청에 대한 발생 간격에 따른 데이터의 접근 빈도를 나타내는 입출력 정보 공유 방법.
The method according to claim 1,
The state of the data for the input /
Wherein the input / output information includes at least one of a plurality of input / output requests and a plurality of input / output requests.
제4항에 있어서,
상기 결정하는 단계는,
상기 수신한 입출력 요청에 대한 발생 간격이 좁은 경우, 데이터의 상태를 접근 빈도가 높은 핫데이터(hot-data)로 결정하고,
상기 수신한 입출력 요청에 대한 발생 간격이 큰 경우, 데이터의 상태를 접근 빈도가 낮은 콜드데이터(cold-data)로 결정하는 입출력 정보 공유 방법.
5. The method of claim 4,
Wherein the determining comprises:
When the generation interval for the received input / output request is narrow, the state of the data is determined as hot data having a high access frequency,
And determining the state of the data as cold data having a low frequency of access when the generated interval for the received input / output request is large.
삭제delete 호스트 장치가 수행하는 입출력 정보 공유 방법에 있어서,
상기 호스트 장치를 구성하는 각 계층에서 순차적으로 발생한 데이터의 입출력 요청을 버퍼에 입력하는 단계; 및
상기 버퍼에 입력된 입출력 요청의 개수를 고려하여 상기 입출력 요청을 포함하는 입출력 리스트를 저장 장치에 전달하는 단계-상기 데이터의 입출력 리스트는 상기 각 계층별로 존재하는 버퍼에 저장된 입출력 요청을 제거하는 정책을 기반으로 계층별 서로 다른 쓰기 동작을 수행하기 위한 입출력 요청을 포함함-
를 포함하고,
상기 저장 장치는,
상기 호스트 장치로부터 입출력 요청을 수신하기 이전에 미리 입출력 리스트를 수신하고
상기 수신한 입출력 리스트를 기반으로 상기 호스트 장치로부터 수신할 예정인 입출력 요청에 대응하는 동작을 수행하기 위한 대기 상태로 설정한 후, 상기 호스트 장치로부터 상기 미리 수신한 입출력 리스트와 구분되는 데이터의 입출력 요청을 수신하고, 상기 호스트 장치로부터 커맨드 형태로 미리 수신한 입출력 리스트에 기초하여 상기 입출력 리스트 내 상기 수신한 입출력 요청이 존재하는지 여부를 확인하여, 상기 입출력 리스트에 상기 수신한 입출력 요청이 존재하는지 여부에 따라 수신한 데이터의 입출력 요청에 대한 데이터의 상태를 결정하며, 상기 결정된 상태를 고려하여 상기 입출력 리스트에 포함된 입출력 요청에 대한 데이터의 논리 주소에 따라 상기 수신한 입출력 요청에 따른 데이터를 처리하는 동작을 수행하는 입출력 정보 공유 방법.
In an input / output information sharing method performed by a host apparatus,
Inputting an input / output request of data sequentially generated in each layer constituting the host device to a buffer; And
Output list including the input / output request to the storage device in consideration of the number of input / output requests input to the buffer, the input / output list of the data is a policy for removing input / output requests stored in buffers existing for each layer I / O requests to perform different write operations for each layer based on the I /
Lt; / RTI >
The storage device comprising:
Before receiving the input / output request from the host device, the input / output list is received in advance
Output request for data to be received from the host apparatus based on the received input / output list, and then transmits an input / output request for data distinguished from the previously received input / output list to the host apparatus Output list in the form of a command from the host apparatus in accordance with whether or not the received input / output request is present in the input / output list, based on whether or not the received input / output request exists in the input / An operation of determining data state of an input / output request of the received data, and processing data according to the received input / output request according to a logical address of data for an input / output request included in the input / output list in consideration of the determined state I / O information to perform Way.
삭제delete 제7항에 있어서,
상기 전달하는 단계는,
상기 입출력 요청에 따른 쓰기 동작으로 포함하는 입출력 리스트를 커맨드 형태로 저장 장치에 전달하는 입출력 정보 공유 방법.
8. The method of claim 7,
The method of claim 1,
Wherein the input / output list including the write operation according to the input / output request is transmitted to the storage device in the form of a command.
입출력 정보 공유 방법을 수행하는 디바이스 컨트롤러에 있어서,
상기 디바이스 컨트롤러는,
호스트 장치를 구성하는 각 계층에서 순차적으로 발생한 입출력 요청 중, 쓰기 동작을 나타내는 명령을 포함하는 입출력 요청으로 생성된 데이터의 입출력 리스트를 커맨드 형태로 수신하고, 상기 수신한 입출력 리스트를 기반으로 상기 호스트 장치로부터 수신할 예정인 입출력 요청에 대응하는 동작을 수행하기 위한 대기 상태로 설정한 후, 상기 호스트 장치로부터 상기 미리 수신한 입출력 리스트와 구분되는 데이터의 입출력 요청을 수신하고, 상기 호스트 장치로부터 커맨드 형태로 미리 수신한 입출력 리스트에 기초하여 상기 입출력 리스트 내 상기 수신한 입출력 요청이 존재하는지 여부를 확인하여, 상기 입출력 리스트에 상기 수신한 입출력 요청이 존재하는지 여부에 따라 수신한 데이터의 입출력 요청에 대한 데이터의 상태를 결정하며, 상기 결정된 상태를 고려하여 상기 입출력 리스트에 포함된 입출력 요청에 대한 데이터의 논리 주소에 따라 상기 수신한 입출력 요청에 따른 데이터를 처리하는 동작을 수행하며,
상기 데이터의 입출력 리스트는,
상기 각 계층별로 존재하는 버퍼에 저장된 입출력 요청을 제거하는 정책을 기반으로 계층별 서로 다른 쓰기 동작을 수행하기 위한 입출력 요청을 포함하고, 상기 호스트 장치로부터 데이터의 입출력 요청을 수신하기 이전에 미리 호스트 장치로부터 수신하는 디바이스 컨트롤러.
A device controller for performing an input / output information sharing method,
Wherein the device controller comprises:
Output list of data generated by an input / output request including an instruction indicating a write operation among input / output requests sequentially generated in the respective layers constituting the host apparatus, in the form of a command, and based on the received input / output list, Output request from the host apparatus to the host apparatus in response to an input / output request to be received from the host apparatus, Output list according to whether or not the received input / output request is present in the input / output list based on the received input / output list based on the received input / output list, Lt; / RTI > Depending on the logical address of the data for taking into account the determined state to the input-output request that is included in the output list, and performs an operation to process the data according to the received output request,
Wherein the input /
And an input / output request for performing a different write operation for each layer based on a policy for removing input / output requests stored in buffers existing in the respective layers, wherein the input / Lt; / RTI >
제10항에 있어서,
상기 디바이스 컨트롤러는,
상기 입출력 리스트가 존재하는 경우, 상기 입출력 리스트에 포함된 입출력 요청과 상기 수신한 입출력 요청을 이용하여 입출력 요청에 대한 데이터의 상태를 결정하는 디바이스 컨트롤러.
11. The method of claim 10,
Wherein the device controller comprises:
And a device controller for determining a state of data for an input / output request using the input / output request included in the input / output list and the received input / output request when the input / output list exists.
제10항에 있어서,
상기 입출력 요청에 대한 데이터의 상태는,
상기 입출력 리스트에 포함된 입출력 요청을 기반으로 상기 수신한 입출력 요청에 대한 발생 간격에 따라 데이터의 접근 빈도를 나타내는 디바이스 컨트롤러.
11. The method of claim 10,
The state of the data for the input /
And a device controller for indicating the access frequency of data according to an occurrence interval for the received input / output request based on the input / output request included in the input / output list.
호스트 장치를 구성하는 각 계층에서 순차적으로 발생한 입출력 요청 중, 쓰기 동작을 나타내는 명령을 포함하는 입출력 요청으로 생성된 데이터의 입출력 리스트를 커맨드 형태로 수신하여 저장하는 화이트 버퍼;
상기 수신한 입출력 리스트를 기반으로 상기 호스트 장치로부터 수신할 예정인 입출력 요청에 대응하는 동작을 수행하기 위한 대기 상태로 설정하고, 상기 호스트 장치로부터 수신한 입출력 요청이 상기 미리 수신한 입출력 리스트 내 존재하는지 여부에 따라 상기 수신한 데이터의 입출력 요청에 대한 데이터의 상태를 결정한 후, 상기 결정된 상태를 고려하여 상기 입출력 리스트에 포함된 입출력 요청에 대한 데이터의 논리 주소에 따라 입출력 요청에 따른 데이터를 처리하는 디바이스 컨트롤러; 및
상기 입출력 요청에 따른 데이터를 저장하는 플래시 메모리
를 포함하고,
상기 데이터의 입출력 리스트는
상기 각 계층별로 존재하는 버퍼에 저장된 입출력 요청을 제거하는 정책을 기반으로 계층별 서로 다른 쓰기 동작을 수행하기 위한 입출력 요청을 포함하고, 상기 호스트 장치로부터 데이터의 입출력 요청을 수신하기 이전에 미리 호스트 장치로부터 수신하는 저장 장치.
A white buffer for receiving and storing an input / output list of data generated by an input / output request including a command indicating a write operation among input / output requests sequentially generated in each layer constituting the host device, in a command form;
Output request to be received from the host apparatus based on the received input / output list, and determines whether or not the input / output request received from the host apparatus exists in the previously received input / output list Output request according to the logical address of the data for the input / output request included in the input / output list in consideration of the determined state after determining the state of the data for the input / ; And
A flash memory for storing data according to the input /
Lt; / RTI >
The input / output list of the data
And an input / output request for performing a different write operation for each layer based on a policy for removing input / output requests stored in buffers existing in the respective layers, wherein the input / Lt; / RTI >
입출력 정보 공유 방법을 수행하는 호스트 장치에 있어서,
상기 호스트 장치를 구성하는 각 계층에서 순차적으로 발생한 데이터의 입출력 요청을 버퍼에 입력하는 입력부; 및
상기 버퍼에 입력된 입출력 요청의 개수를 고려하여 상기 입출력 요청을 포함하는 입출력 리스트를 커맨드 형태로 저장 장치에 전달하는 전달부-상기 데이터의 입출력 리스트는 상기 각 계층별로 존재하는 버퍼에 저장된 입출력 요청을 제거하는 정책을 기반으로 계층별 서로 다른 쓰기 동작을 수행하기 위한 입출력 요청을 포함함-
를 포함하고,
상기 저장 장치는,
상기 호스트 장치로부터 입출력 요청을 수신하기 이전에 미리 입출력 리스트를 수신하고,
상기 수신한 입출력 리스트를 기반으로 상기 호스트 장치로부터 수신할 예정인 입출력 요청에 대응하는 동작을 수행하기 위한 대기 상태로 설정한 후, 상기 호스트 장치로부터 상기 미리 수신한 입출력 리스트와 구분되는 데이터의 입출력 요청을 수신하고, 상기 호스트 장치로부터 커맨드 형태로 미리 수신한 입출력 리스트에 기초하여 상기 입출력 리스트 내 상기 수신한 입출력 요청이 존재하는지 여부를 확인하여, 상기 입출력 리스트에 상기 수신한 입출력 요청이 존재하는지 여부에 따라 수신한 데이터의 입출력 요청에 대한 데이터의 상태를 결정하며, 상기 결정된 상태를 고려하여 상기 입출력 리스트에 포함된 입출력 요청에 대한 데이터의 논리 주소에 따라 상기 수신한 입출력 요청에 따른 데이터를 처리하는 동작을 수행하는 호스트 장치.
A host apparatus for performing an input / output information sharing method,
An input unit for inputting an input / output request of data sequentially generated in each layer constituting the host device to a buffer; And
A transfer unit for transferring an input / output list including the input / output request to a storage device in the form of a command in consideration of the number of input / output requests input to the buffer; an input / output list of the data includes an input / I / O requests to perform different write operations per layer based on the policy to be removed -
Lt; / RTI >
The storage device comprising:
Output list before receiving the input / output request from the host device,
Output request for data to be received from the host apparatus based on the received input / output list, and then transmits an input / output request for data distinguished from the previously received input / output list to the host apparatus Output list in the form of a command from the host apparatus in accordance with whether or not the received input / output request is present in the input / output list, based on whether or not the received input / output request exists in the input / An operation of determining data state of an input / output request of the received data, and processing data according to the received input / output request according to a logical address of data for an input / output request included in the input / output list in consideration of the determined state Perform host device.
제14항에 있어서,
상기 입력부는,
상기 데이터의 입출력 요청이 발생한 순서에 대응하여 순차적으로 버퍼에 입력하는 호스트 장치.
15. The method of claim 14,
Wherein the input unit comprises:
And sequentially inputs the data into the buffer in accordance with the order in which the input / output requests of the data occur.
제14항에 있어서,
상기 전달부는,
상기 입출력 요청에 따른 쓰기 동작으로 포함하는 입출력 리스트를 커맨드 형태로 저장 장치에 전달하는 호스트 장치.
15. The method of claim 14,
[0030]
And transmits the input / output list included in the write operation according to the input / output request to the storage device in the form of a command.
KR1020150031222A 2014-12-10 2015-03-05 Input/output information sarer method, storage apparatus and host apparatus for perfomring the same method KR101691286B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20140177327 2014-12-10
KR1020140177327 2014-12-10

Publications (2)

Publication Number Publication Date
KR20160070658A KR20160070658A (en) 2016-06-20
KR101691286B1 true KR101691286B1 (en) 2017-01-09

Family

ID=56354458

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150031222A KR101691286B1 (en) 2014-12-10 2015-03-05 Input/output information sarer method, storage apparatus and host apparatus for perfomring the same method

Country Status (1)

Country Link
KR (1) KR101691286B1 (en)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101498673B1 (en) * 2007-08-14 2015-03-09 삼성전자주식회사 Solid state drive, data storing method thereof, and computing system including the same
KR20120089072A (en) * 2011-02-01 2012-08-09 삼성전자주식회사 Method of processing requests for hardware and multi-core system

Also Published As

Publication number Publication date
KR20160070658A (en) 2016-06-20

Similar Documents

Publication Publication Date Title
CA2894936C (en) Controller, flash memory apparatus, and method for writing data into flash memory apparatus
US20160162187A1 (en) Storage System And Method For Processing Writing Data Of Storage System
US8886882B2 (en) Method and apparatus of storage tier and cache management
US10649890B2 (en) Information processing system, storage control apparatus, storage control method, and storage control program
US10402114B2 (en) Information processing system, storage control apparatus, storage control method, and storage control program
KR101929584B1 (en) Data storage device and operating method thereof
US11630767B2 (en) Garbage collection—automatic data placement
US10203899B2 (en) Method for writing data into flash memory apparatus, flash memory apparatus, and storage system
CN104484283B (en) A kind of method for reducing solid state disk write amplification
CN105607867B (en) Master-slave deduplication storage system, method thereof, and computer-readable storage medium
CN106133707B (en) Cache management
CN106909314A (en) Accumulator system and control method
US10592148B2 (en) Information processing system, storage control apparatus, storage control method, and storage control program for evaluating access performance to a storage medium
US20160357672A1 (en) Methods and apparatus for atomic write processing
US20150039835A1 (en) System and Method of Hinted Cache Data Removal
CN110515861B (en) Memory device for processing flash command and method thereof
US9384135B2 (en) System and method of caching hinted data
KR101691286B1 (en) Input/output information sarer method, storage apparatus and host apparatus for perfomring the same method
CN107273303B (en) Flash memory data management system and method, flash memory chip and storage device
KR101631409B1 (en) Storage apparatus including drive controller, the drive controller for performing garbage collection perform method
US11853203B1 (en) Systems and methods with variable size super blocks in zoned namespace devices
KR20160084784A (en) Storage apparatus including device controller, the device controller for performing address mapping method
TW201835774A (en) Method for controlling the writing flow of a solid state disk

Legal Events

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

Payment date: 20190905

Year of fee payment: 4