KR101655008B1 - Apparatus and method for real-time multi-chip flash storage - Google Patents
Apparatus and method for real-time multi-chip flash storage Download PDFInfo
- Publication number
- KR101655008B1 KR101655008B1 KR1020150004230A KR20150004230A KR101655008B1 KR 101655008 B1 KR101655008 B1 KR 101655008B1 KR 1020150004230 A KR1020150004230 A KR 1020150004230A KR 20150004230 A KR20150004230 A KR 20150004230A KR 101655008 B1 KR101655008 B1 KR 101655008B1
- Authority
- KR
- South Korea
- Prior art keywords
- flash
- input
- time
- output
- chip
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
실시간 멀티칩 플래시 저장장치 및 그 방법이 개시된다.
실시간 멀티칩 플래시 저장장치는 플래시 변환 계층 및 플래시 제어 하드웨어로 구성되며, 플래시 변환 계층은 플래시 제어 스케줄러를 구비하며, 플래시 제어 스케줄러는 각각의 입출력 스트림에 대한 실제 서비스 시간을 알 수 없는 상황에서 스케줄링을 수행하기 위해, 임의의 명목 서비스 시간을 이용하여 각각의 입출력 스트림에 대한 요청 예상 처리 시간인 가상 시간을 산출하고, 산출한 가상 시간을 이용하여 스케줄링을 수행하되, 추후에 실제 서비스 시간이 인식되면 실제 서비스 시간을 이용하여 가상 시간을 보정하고, 보정한 가상 시간을 이용하여 스케줄링을 수행한다.A real-time multi-chip flash storage device and method thereof are disclosed.
The real-time multi-chip flash storage consists of a flash translation layer and flash control hardware. The flash translation layer has a flash control scheduler. The flash control scheduler schedules the real service time for each input / A virtual time which is a request expected processing time for each input / output stream is calculated using an arbitrary nominal service time, and scheduling is performed by using the calculated virtual time. If the actual service time is later recognized, The virtual time is corrected using the service time, and the scheduling is performed using the corrected virtual time.
Description
본 발명은 실시간 멀티칩 플래시 저장장치 및 그 방법에 관한 것으로서, 보다 상세하게는 공정 지분 스케줄링 또는 비례 지분 스케줄링을 수행하는 실시간 멀티칩 플래시 저장장치 및 그 방법에 관한 것이다.The present invention relates to a real-time multi-chip flash storage device and a method thereof, and more particularly, to a real-time multi-chip flash storage device and a method thereof for performing a process equity scheduling or a proportional equity scheduling.
스마트 폰과 SNS의 활성화로 인해 콘텐츠 생산 속도가 폭발적으로 증가하여 데이터를 저장하는 대용량 저장장치에 대한 관심 및 연구가 증가하고 있다.Due to the activation of smart phones and SNS, the speed of content production explosively increases and interest and research on mass storage devices for storing data is increasing.
이러한 대용량 저장장치에 대한 기술의 발전으로 인해 오랜 세월 동안 컴퓨터 보조기억장치로 줄곧 사용해 오던 하드디스크의 자리를 플래시 저장장치가 점차 대신하고 있다.Due to advances in technology for such mass storage devices, flash storage devices are gradually replacing the hard disk space that has been used for many years as a computer-aided storage device.
플래시 저장장치는 하드디스크와 달리 읽기, 쓰기, 지우기 연산 각각의 수행 속도가 다르다는 특성을 가지고 있어 호스트로부터 요구된 데이터 명령을 연연하게 대응할 수 없다는 단점이 있다. 이러한 단점을 보안하기 위해 읽기, 쓰기, 지우기 연산에 대한 명령이 플래시 저장장치의 특성에 유연하게 대응할 수 있게 해주는 플래시 변환 계층에 대한 연구가 활발히 진행되고 있다.Unlike the hard disk, the flash storage device has a characteristic that the execution speed of each of the read, write, and erase operations is different, so that it can not cope with the requested data command from the host. In order to secure these disadvantages, researches on flash conversion layer that can flexibly cope with the characteristics of the flash storage device are being actively conducted on the instructions for the read, write, and erase operations.
그러나, 종래의 플래시 변환 계층에 대한 연구는 싱글칩 플래시 저장장치에 한정되거나, 멀티칩이라도 슈퍼 페이지로 구성되는 논리적인 싱글칩으로 모델링하는 경우에 한정되는 경우가 대부분이었다. 또한, 이러한 연구는 무효 페이지 수집 작업이 불규칙하게 수행되는 경우, 응용 프로그램의 저장장치 응답시간을 예측하기 어렵다는 단점이 있다.However, the conventional flash conversion layer has been limited to a single chip flash storage device or a case where a multi chip is modeled as a logical single chip composed of a super page. In addition, this research has a disadvantage in that it is difficult to predict the response time of the storage device of the application program when the invalid page collection operation is performed irregularly.
또한, 종래의 플래시 저장장치는 단일 자원을 대상으로 개발되었기 때문에 하나의 입출력 요청을 해당 자원에 할당한 후 서비스가 종료될 때까지 다른 요청을 추가로 할당하지 못하여, 가변 용량 또는 대역폭을 가진 다중 자원에 적용할 때 하나의 자원만을 활용하고 나머지 자원을 활용하기 못하는 문제점이 있다.In addition, since the conventional flash storage device is developed for a single resource, it can not allocate another request until a service is terminated after a single input / output request is allocated to the corresponding resource. Thus, multiple resources There is a problem that only one resource is utilized and the remaining resources can not be utilized.
따라서, 다중 자원에 적용할 수 있는 공정 지분 스케줄링을 수행하며, 응용 프로그램의 저장장치 응답시간을 예측할 수 있는 실시간 멀티칩 플래시 저장장치가 필요한 상황이다.Therefore, we need a real - time multi - chip flash storage device that can perform the process equity scheduling that can be applied to multiple resources and predict the response time of the storage device of the application program.
본 발명의 일측면은 다중 자원인 멀티칩 플래시의 병렬성을 극대화하고, 저장장치의 응답 시간을 예측할 수 있도록 임의의 명목 서비스 시간을 이용하여 각각의 입출력 스트림에 대한 처리 예상 시간인 가상 시간을 산출하고, 산출한 가상 시간에 따라 스케줄링을 수행하는 실시간 멀티칩 플래시 저장장치 및 그 방법을 제공한다.One aspect of the present invention is to maximize the parallelism of the multi-chip flash, which is a multi-resource, and to calculate the virtual time, which is the expected processing time for each input / output stream, by using an arbitrary nominal service time so as to predict the response time of the storage device And a real-time multi-chip flash storage device for performing scheduling according to the calculated virtual time, and a method thereof.
본 발명의 일측면에 따른 실시간 멀티칩 플래시 저장장치는, 복수 개의 입출력 스트림에 도착하는 입출력 요청이 삽입되어 있는 스트림 큐에서 입출력 요청을 추출하여 플래시 연산으로 변환하고, 상기 플래시 연산을 상기 복수 개의 입출력 스트림마다 마련되어 있는 연산 큐에 삽입하고, 상기 복수 개의 입출력 스트림마다 입출력 스트림에 대한 가상 시간을 산출하고, 상기 산출한 가상 시간에 따라 스케줄링을 수행할 수 있도록 상기 복수 개의 입출력 스트림 중 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 해당 플래시 연산이 할당된 플래시 칩의 개시 큐에 삽입하는 플래시 변환 계층 및 복수 개의 플래시 칩들과, 상기 플래시 칩의 개시 큐에 삽입된 플래시 연산을 미리 설정된 제어기 알고리즘에 따라 실행하고, 상기 개시 큐에 삽입된 플래시 연산의 실행이 종료되면 연산 종료 사건을 상기 플래시 칩의 만료 큐에 삽입하는 플래시 제어기를 구비한 플래시 제어 하드웨어를 포함한다.According to an aspect of the present invention, there is provided a real-time multi-chip flash storage device that extracts an input / output request from a stream queue in which an input / output request arriving to a plurality of input / output streams is inserted and converts the input / output request into a flash operation, Output stream to a plurality of input / output streams, calculating a virtual time for input / output streams for each of the plurality of input / output streams, and calculating a minimum virtual time among the plurality of input / output streams so that scheduling can be performed according to the calculated virtual time A flash conversion layer for extracting a first flash operation from an operation queue of the input / output stream and inserting the first flash operation into a start queue of a flash chip allocated to the flash operation; and a plurality of flash chips, Run according to the set controller algorithm And a flash controller for inserting an operation termination event into the expiration queue of the flash chip when the execution of the flash operation inserted into the initiation queue is terminated.
상기 플래시 변환 계층은, 상기 복수 개의 입출력 스트림에 대한 임의의 명목 서비스 시간을 미리 정해진 연산 규칙에 적용하여 상기 복수 개의 입출력 스트림에 대한 가상 시간을 산출하고, 상기 산출한 가상 시간을 비교하여 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 상기 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 상기 개시 큐에 삽입하는 플래시 연산 스케줄러를 구비할 수 있다.Wherein the flash conversion layer calculates a virtual time for the plurality of input / output streams by applying an arbitrary nominal service time for the plurality of input / output streams to a predetermined calculation rule, compares the calculated virtual time, And a flash operation scheduler for extracting the first flash operation from the operation queue of the input / output stream having the minimum virtual time and inserting the extracted flash operation into the start queue.
상기 플래시 연산 스케줄러는, 상기 플래시 제어 하드웨어에 의해 상기 플래시 칩의 만료 큐에 연산 종료 사건이 삽입되면 상기 연산 종료 사건을 통해 해당 입출력 스트림의 입출력 요청에 대한 실제 서비스 시간이 인식되고, 미리 정해진 연산 규칙에 상기 실제 서비스 시간을 적용하여 해당 입출력 스트림에 대한 가상 시간을 보정할 수 있다.The flash operation scheduler recognizes the actual service time for the input / output request of the input / output stream through the operation end event when the operation end event is inserted into the expiration queue of the flash chip by the flash control hardware, The virtual time for the input / output stream can be corrected by applying the actual service time to the input / output stream.
상기 플래시 연산 스케줄러는, 상기 실제 서비스 시간을 이용하여 해당 입출력 스트림에 대한 가상 시간이 보정되면, 가상 시간이 보정된 입출력 스트림을 포함하는 복수 개의 입출력 스트림에 대해 스케줄링을 수행할 수 있다.The flash operation scheduler can perform scheduling for a plurality of input / output streams including virtual time-corrected input / output streams when the virtual time for the input / output stream is corrected using the actual service time.
상기 플래시 연산 스케줄러는, 상기 가상 시간이 보정된 입출력 스트림을 포함하는 복수 개의 입출력 스트림에 대해 가상 시간을 비교하여 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 상기 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 스케줄링을 수행할 수 있다.Wherein the flash operation scheduler detects an input / output stream having a minimum virtual time by comparing virtual time with respect to a plurality of input / output streams including the virtual time-corrected input / output stream, The first flash operation can be extracted and the scheduling can be performed.
상기 플래시 연산 스케줄러는, 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산이 할당된 플래시 칩에서 연산이 실행되는 중 상기 입출력 스트림에 새로운 입출력 요청이 들어오면, 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산이 할당된 플래시 칩과 다른 플래시 칩의 개시 큐에 상기 새로운 입출력 요청에 대한 플래시 연산을 삽입하여 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산을 실행하는 동시에 상기 새로운 입출력 요청에 대한 플래시 연산을 실행할 수 있다.Wherein when a new input / output request is input to the input / output stream while an operation is being performed in a flash chip to which a flash operation for an input / output stream having the minimum virtual time is allocated, the flash operation scheduler A flash operation for an input / output stream having the minimum virtual time is executed by inserting a flash operation for the new input / output request into a start queue of a flash chip other than the flash chip to which the flash operation is allocated and a flash operation .
본 발명의 일 실시예에 따른 실시간 멀티칩 플래시 저장방법은, 복수 개의 입출력 스트림에 도착하는 입출력 요청이 삽입되어 있는 스트림 큐에서 입출력 요청을 추출하여 플래시 연산으로 변환하고, 상기 플래시 연산을 상기 복수 개의 입출력 스트림마다 마련되어 있는 연산 큐에 삽입하고, 상기 복수 개의 입출력 스트림마다 입출력 스트림에 대한 가상 시간을 산출하고, 상기 산출한 가상 시간에 따라 스케줄링을 수행할 수 있도록 상기 산출한 가상 시간을 비교하여 상기 복수 개의 입출력 스트림 중 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 상기 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 해당 플래시 연산이 할당된 플래시 칩의 개시 큐에 삽입하고, 상기 플래시 칩의 개시 큐에 삽입된 플래시 연산을 미리 설정된 제어기 알고리즘에 따라 실행하고, 상기 개시 큐에 삽입된 플래시 연산의 실행이 종료되면 연산 종료 사건을 상기 플래시 칩의 만료 큐에 삽입할 수 있다.A method for real-time multi-chip flash storage according to an embodiment of the present invention includes extracting an input / output request from a stream queue in which an input / output request arriving at a plurality of input / output streams is inserted, converting the input / output request into a flash operation, Output stream; calculating a virtual time for an input / output stream for each of the plurality of input / output streams; comparing the calculated virtual time so that scheduling can be performed according to the calculated virtual time, Output stream having a minimum virtual time, extracting a first flash operation from an operation queue of an input / output stream having the minimum virtual time, inserting the first flash operation into a start queue of a flash chip allocated to the flash operation, Flash inserted into the start-up queue of the flash chip When running along the mountain to a preset control algorithm and executing the flash operation inserted in the start queue ends it can be inserted into the operational end of the expiration event queue of the flash chip.
상기 플래시 칩의 만료 큐에 연산 종료 사건이 삽입되면 상기 연산 종료 사건을 통해 해당 입출력 스트림의 입출력 요청에 대한 실제 서비스 시간이 인식되고, 미리 정해진 연산 규칙에 상기 실제 서비스 시간을 적용하여 해당 입출력 스트림에 대한 가상 시간을 보정할 수 있다.If an operation termination event is inserted into the expiration queue of the flash chip, the actual service time for the input / output request of the input / output stream is recognized through the operation termination event, and the actual service time is applied to the predetermined operation rule, It is possible to correct the virtual time.
상기 실제 서비스 시간을 이용하여 해당 입출력 스트림에 대한 가상 시간이 보정되면, 가상 시간이 보정된 입출력 스트림을 포함하는 복수 개의 입출력 스트림에 대해 가상 시간을 비교하여 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 상기 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 스케줄링을 수행할 수 있다.Output stream having a minimum virtual time by comparing a virtual time with respect to a plurality of input / output streams including an input / output stream whose virtual time is corrected, when the virtual time for the input / output stream is corrected using the actual service time, The first flash operation may be extracted from the operation queue of the input / output stream having the minimum virtual time to perform the scheduling.
상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산이 할당된 플래시 칩에서 연산이 실행되는 중 상기 입출력 스트림에 새로운 입출력 요청이 들어오면, 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산이 할당된 플래시 칩과 다른 플래시 칩의 개시 큐에 상기 새로운 입출력 요청에 대한 플래시 연산을 삽입하여 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산을 실행하는 동시에 상기 새로운 입출력 요청에 대한 플래시 연산을 실행할 수 있다.When a new input / output request is input to the input / output stream while the operation is being performed in the flash chip to which the flash operation for the input / output stream having the minimum virtual time is allocated, the flash operation for the flash operation for the input / A flash operation for the new input / output request may be inserted into the start queue of the chip and another flash chip to execute a flash operation for the input / output stream having the minimum virtual time and to execute the flash operation for the new input / output request.
상술한 본 발명의 일측면에 따르면, 입출력 스트림에 도착하는 입출력 요청에 대해 실제 서비스 시간을 미리 알 수 없는 상황에서, 임의의 명목 서비스 시간을 이용하여 입출력 스트림에 대한 처리 예상 시간인 가상 시간을 산출하고, 산출한 가상 시간에 따라 스케줄링을 수행함으로써 처리 시간에 따른 공정 지분 스케줄링을 수행할 수 있으며, 저장장치의 응답 시간을 예측할 수 있다.According to an aspect of the present invention, a virtual time, which is an expected processing time for an input / output stream, is calculated using an arbitrary nominal service time in a situation where an actual service time for an input / output request arriving at an input / And performs scheduling according to the calculated virtual time, thereby performing the process equity scheduling according to the process time, and the response time of the storage device can be predicted.
또한, 명목 서비스 시간을 이용하여 공정 지분 스케줄링을 수행함으로써 플래시 연산 스케줄러를 플래시 제어 하드웨어와 분리하여 구현할 수 있어 플래시 제어 하드웨어의 구조를 단순화 시킬 수 있다.Also, by performing the process equity scheduling using the nominal service time, the flash operation scheduler can be implemented separately from the flash control hardware, thereby simplifying the structure of the flash control hardware.
또한, 명목 서비스 시간을 이용하여 공정 지분 스케줄링을 수행함으로써 다중 자원인 멀티칩 플래시의 병렬성을 극대화 시킬 수 있다.In addition, by performing the process equity scheduling using the nominal service time, it is possible to maximize the parallelism of multi-chip flash.
도 1 은 본 발명의 일 실시예에 따른 실시간 멀티칩 플래시 저장장치의 구성을 나타낸 도면이다.
도 2 는 플래시 칩에 입출력 스트림에 대한 플래시 연산이 도착하는 모습의 일예를 나타낸 도면이다.
도 3 은 도 2 에 도시된 각각의 입출력 스트림에서 요청한 플래시 연산들이 각각의 플래시 칩에서 실제로 수행된 모습을 나타낸 도면이다.
도 4a, 4b 는 특정 입출력 스트림 A, B에 대해 산출 및 보정된 가상 시간이 누적된 모습을 도시한 도면이다.
도 5a, 5b 는 본 발명의 일 실시예에 따른 실시간 멀티칩 플래시 저장방법을 도시한 순서도이다.1 is a block diagram of a real-time multi-chip flash storage device according to an embodiment of the present invention.
2 is a diagram showing an example in which a flash operation for an input / output stream arrives in a flash chip.
FIG. 3 is a diagram showing how flash operations requested in each input / output stream shown in FIG. 2 are actually performed in each flash chip.
FIGS. 4A and 4B are views showing accumulated virtual time calculated and corrected for specific input / output streams A and B. FIG.
5A and 5B are flowcharts illustrating a real-time multi-chip flash storage method according to an embodiment of the present invention.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예와 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.The following detailed description of the invention refers to the accompanying drawings, which illustrate, by way of illustration, specific embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention. It should be understood that the various embodiments of the present invention are different, but need not be mutually exclusive. For example, certain features, structures, and characteristics described herein may be implemented in other embodiments without departing from the spirit and scope of the invention in connection with an embodiment. It is also to be understood that the position or arrangement of the individual components within each disclosed embodiment may be varied without departing from the spirit and scope of the invention. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is to be limited only by the appended claims, along with the full scope of equivalents to which such claims are entitled, if properly explained. In the drawings, like reference numerals refer to the same or similar functions throughout the several views.
이하, 도면들을 참조하여 본 발명의 바람직한 실시예들을 보다 상세하게 설명하기로 한다.Hereinafter, preferred embodiments of the present invention will be described in more detail with reference to the drawings.
도 1 은 본 발명의 일 실시예에 따른 실시간 멀티칩 플래시 저장장치의 구성을 나타낸 도면이다.1 is a block diagram of a real-time multi-chip flash storage device according to an embodiment of the present invention.
본 발명의 일 실시예에 따른 실시간 멀티칩 플래시 저장장치는 실제 서비스 시간을 미리 알 수 없는 상황에서, 명목 서비스 시간이라는 개념을 적용하여 병렬 다중 자원인 멀티칩 플래시에 대한 공정 지원 스케줄링을 수행할 수 있으며, 본 발명의 일 실시예에 따른 실시간 멀티칩 플래시 저장장치는 플래시 변환 계층(100) 및 플래시 제어 하드웨어(200)를 포함할 수 있다.The real-time multi-chip flash storage device according to an exemplary embodiment of the present invention can perform process support scheduling for a multi-chip flash, which is a parallel multiple resource, by applying the concept of nominal service time in a situation where actual service time is not known in advance And a real-time multi-chip flash storage device according to an embodiment of the present invention may include a
플래시 변환 계층(Flash Translation Layer, 100)은 호스트 운영체제(Host OS)와 플래시 메모리의 사이에 플래시 메모리를 하드 디스크와 같이 에뮬레이션(Emulation) 해주는 기능을 할 수 있다. 플래시 변환 계층(100)은 호스트 운영체제에게 플래시 메모리가 가지고 있는 고유의 특성들을 감추며, 하드 디스크와 동일한 입출력 연산을 수행할 수 있도록 파일 시스템으로부터 전달되는 논리적인 주소를 플래시 메모리의 물리적 주소와 매핑(Mapping)하는 기능을 수행할 수 있다.The
본 발명의 일 실시예에 따른 플래시 변환 계층(100)은 호스트 운영체제(Host OS)에 의해 복수 개의 입출력 스트림에 도착하는 입출력 요청이 삽입되어 있는 스트림 큐(stream queue)에서 입출력 요청을 추출할 수 있다. 플래시 변환 계층(100)은 추출한 입출력 요청을 해당 입출력 스트림의 연산 큐(Operation queue)에 삽입할 수 있다. 이때, 연산 큐(Operation queue)는 복수 개의 입출력 스트림마다 대응되게 마련되어 있을 수 있다. 본 발명의 일 실시예에 따른 플래시 변환 계층(100)은 내부에 복수 개의 입출력 요청을 처리하는 순서를 배열하는 플래시 연산 스케줄러(110)를 구비할 수 있다. 본 발명의 일 실시예에 따른 실시간 멀티칩 플래시 저장장치는 플래시 변환 계층(100) 내부에서 플래시 연산 스케줄러(110)를 소프트웨어 형태로 구현함으로써, 원래 플래시 연산 스케줄러(110) 기능이 포함되어야 할 플래시 제어 하드웨어로부터 플래시 연산 스케줄러(110)를 분리할 수 있어 플래시 제어 하드웨어(200)의 구조를 단순화시킬 수 있는 이점이 있다.The
플래시 연산 스케줄러(110)는 [수학식 1]를 이용하여 복수 개의 입출력 스트림에 대하여 임의의 명목 서비스 시간(nominal service time)을 적용하여 각각의 입출력 스트림에 대한 가상 시작 시간(virtual start time)과 가상 종료 시간(virtual finish time)을 산출할 수 있다. 이때, 명목 서비스 시간(nominal service time)은 각 입출력 스트림에 도착하는 입출력 요청에 대하여 실제 서비스 시간을 미리 알 수 없는 상황에서, 각 입출력 스트림에 대한 처리 시간 및 실시간 멀티칩 플래시 저장장치의 응답시간을 예측할 수 있도록 하기 위한 것으로, 실시간 멀티칩 플래시 저장장치 제조 시 미리 상수로 정해지거나 해당 연산이 이전에 실행되어 얻어진 실제 서비스 시간(actual service time)들의 평균값으로 정해질 수 있다.The
이때, 은 입출력 스트림 i의 k번째 요청의 가상 시작 시간(virtual start time)을 의미할 수 있으며, 은 입출력 스트림 i의 k번째 요청의 가상 종료 시간(virtual finish time)을 의미할 수 있으며, 은 입출력 스트림 i의 k번째 요청의 물리적인 도착 시간에 관찰된 시스템 가상 시간(system virtual time)으로, 해당 시간에서 적어도 하나의 입출력 요청을 스트림 큐(stream queue)에 가지고 있거나 서비스 받고 있는 스트림 큐(stream queue)들의 가상 시간들 중에서 최소값으로 정의될 수 있다. 은 모든 플래시 칩(220)을 대상으로 한 입출력 스트림 i의 l번째부터 k번째까지의 연산의 명목 서비스 시간(nominal service time)의 합을 의미할 수 있으며, 는 입출력 스트림 i에 대한 가중치를 의미할 수 있다.At this time, May be the virtual start time of the kth request of the input / output stream i, May be the virtual finish time of the kth request of the input / output stream i, Is a system virtual time observed at the physical arrival time of the kth request of the input / output stream i, and has at least one input / output request at the corresponding time in a stream queue or a stream queue stream queues may be defined as the minimum value among the virtual times. May denote the sum of the nominal service times of the l-th to k-th operations of the input and output stream i for all the
이때, 산출한 가상 종료 시간은 입출력 스트림의 입출력 요청을 처리하는데 걸리는 총 소요 시간을 의미할 수 있으므로, 플래시 연산 스케줄러(110)는 산출한 가상 종료 시간을 해당 스트림의 가상 시간으로 정의할 수 있다. In this case, the calculated virtual end time may mean the total time taken to process the input / output request of the input / output stream, so the
플래시 연산 스케줄러(110)는 모든 입출력 스트림에 대하여 산출한 가상 시간을 비교하여 복수 개의 입출력 스트림 중 최소 가상 시간을 갖는 입출력 스트림을 검출할 수 있다. 플래시 연산 스케줄러(110)는 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에 연산이 삽입된 순서에 따라 연산이 실행될 수 있도록 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 연산을 추출하여 해당 연산이 할당된 플래시 칩(220)의 개시 큐(initiation queue; IQ)에 삽입할 수 있다. 이때, 복수 개의 입출력 스트림 중 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에 삽입되어 있는 연산을 추출하는 것은, 가상 시간이 짧다는 것은 연산을 처리하는데 소요되는 처리 시간이 짧다는 것을 의미하므로, 처리 시간이 짧은 입출력 요청부터 처리함으로써 멀티칩 플래시 저장장치의 평균 응답시간을 단축시키기 위함이다. 한편, 도 1 을 참조하면, 개시 큐(initiation queue; IQ)는 플래시 제어 하드웨어(200) 내부에 마련되어 있는 복수 개의 플래시 칩(220)마다 하나씩 마련되어 있으며, 플래시 변환 계층(100)으로부터 연산이 삽입되면 삽입된 순서에 따라 연산을 적재할 수 있다.The
본 발명의 일 실시예에 따른 플래시 연산 스케줄러(110)는 플래시 제어 하드웨어(200)에 의해 개시 큐(initiation queue; IQ)에 삽입된 연산을 실행한 후 만료 큐(completion queue; CQ)에 연산 종료 사건이 삽입되면 삽입된 연산 종료 사건을 통해 입출력 스트림에 대한 가상 시간을 보정할 수 있다.The
구체적으로, 플래시 연산 스케줄러(110)는 플래시 제어 하드웨어(200)에 마련된 플래시 제어기(210)에 의해 개시 큐(initiation queue; IQ)에 삽입된 연산을 실행한 후 플래시 제어기(210)에 의해 실행한 연산에 대한 연산 종료 사건이 상기 개시 큐(initiation queue; IQ)와 쌍을 이루는 만료 큐(completion queue; CQ)에 삽입되면, 개시 큐(initiation queue; IQ)에 삽입했던 연산에 대한 실행이 종료된 것을 인식하고, 개시 큐(initiation queue; IQ)에 삽입했던 연산에 대한 실제 서비스 시간을 검출할 수 있다. 이때, 개시 큐(initiation queue; IQ)에 삽입했던 연산에 대한 실제 서비스 시간을 검출하는 것은, 개시 큐(initiation queue; IQ)에 연산을 삽입한 후로부터 만료 큐(completion queue; CQ)에 연산 종료 사건이 삽입된 때까지의 시간을 검출함으로써 개시 큐(initiation queue; IQ)에 삽입했던 연산에 대한 실제 서비스 시간을 검출할 수 있다. 플래시 연산 스케줄러(110)는 개시 큐(initiation queue; IQ)에 삽입했던 연산에 대한 실제 서비스 시간이 검출되면, 검출된 실제 서비스 시간을 [수학식 2]에 적용하여 입출력 스트림에 대한 가상 시간을 보정할 수 있다.Specifically, the
이때, 는 입출력 스트림 i의 k번째 요청의 보정된 가상 종료 시간(virtual finish time), 즉 보정된 가상 시간을 의미할 수 있으며, 는 보정되기 전 입출력 스트림 i의 k번째 요청의 가상 시작 시간(virtual start time), 즉 보정되기 전 가상 시간을 의미할 수 있으며, 는 모든 칩에서 입출력 스트림 i의 l번째부터 k번째까지 요청의 연산 종료 사건을 통해 검출된 실제 서비스 시간(actual service time)의 합을 의미할 수 있으며, 역시 모든 칩에서 입출력 스트림 i의 l번째부터 k번째까지의 연산의 명목 서비스 시간(nominal service time)의 합을 의미할 수 있으며, 는 입출력 스트림 i에 대한 가중치를 의미할 수 있다.At this time, May mean a corrected virtual finish time of the k-th request of the input / output stream i, i.e., a corrected virtual time, May be a virtual start time of the kth request of the input / output stream i before being corrected, i.e., a virtual time before being corrected, May refer to the sum of actual service times detected from the l-th to k-th requests of the input / output stream i on all of the chips through an operation termination event of the request, May also mean the sum of the nominal service times of the l-th to k-th operations of the input and output stream i on all chips, May be a weight for the input / output stream i.
플래시 연산 스케줄러(110)는 입출력 스트림에 대한 가상 시간이 보정되면, 해당 입출력 스트림에 대한 가상 시간을 보정한 가상 시간으로 갱신하여 입출력 스트림의 플래시 연산에 대한 처리 순서를 재배열하는 스케줄링을 수행할 수 있다. 이때, 보정된 가상 시간을 이용하여 스케줄링을 재수행하는 것은, 플래시 연산 스케줄러(110)에 의해 보정된 가상 시간이 해당 입출력 스트림에 갱신되면, 가상 시간이 갱신된 입출력 스트림과 명목 서비스 시간을 이용하여 가상 시간이 산출된 입출력 스트림 간에 가상 시간을 비교하여 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 검출한 입출력 스트림의 연산 큐에서 첫 번째 연산을 추출하여 해당 연산이 할당된 플래시 칩(220)의 개시 큐(initiation queue; IQ)에 삽입함으로써 스케줄링을 재수행할 수 있다.When the virtual time for the input / output stream is corrected, the
본 발명의 일 실시예에 따른 플래시 연산 스케줄러(110)는 다중 자원인 멀티칩 플래시를 활용하여 스케줄링을 수행할 수 있다.The
구체적으로, 플래시 연산 스케줄러(110)는 상술한 바와 같이, 복수 개의 입출력 스트림에 대해 명목 서비스 시간을 적용하여 각각의 입출력 스트림에 대한 가상 시간을 산출하고, 산출한 가상 시간을 비교하여 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 검출한 입출력 스트림에 대한 플래시 연산이 실행될 수 있도록 검출한 입출력 스트림에서 플래시 연산을 추출하여 상기 플래시 연산이 할당된 플래시 칩(220)의 개시 큐(initiation queue; IQ)에 삽입할 수 있다. 이때, 상기 플래시 연산이 할당된 플래시 칩(220)에서 상기 플래시 연산이 실행되는 도중 상기 입출력 스트림에 새로운 입출력 요청이 들어오면, 플래시 제어 하드웨어(200) 내부에 구비된 다른 플래시 칩(220)을 활용할 수 있다. 플래시 연산 스케줄러(110)는 상기 플래시 연산이 할당된 플래시 칩(220)에서 상기 플래시 연산이 실행되는 도중 상기 입출력 스트림에 새로운 입출력 요청이 들어오면, 상기 플래시 연산이 할당된 플래시 칩(220)과 다른 플래시 칩(220)의 개시 큐(initiation queue; IQ)에 새로운 플래시 연산을 삽입할 수 있다. 이에 따라, 플래시 연산 스케줄러(110)는 특정 입출력 스트림에 대한 플래시 연산을 수행하는 중 새로운 플래시 연산을 입력되면 플래시 제어 하드웨어(200) 내부에 구비되어 있는 다른 플래시 칩(220)에 할당함으로써 다중 자원을 활용할 수 있다.Specifically, the
플래시 제어 하드웨어(200)는 플래시 제어기(Flash Controller, 210)와 다수의 낸드(NAND) 플래시 칩(220)들과 각 칩들을 연결하는 하나의 공유 채널 또는 칩 별 전담 채널로 구성될 수 있다.The
플래시 제어기(210)는 플래시 연산 스케줄러(110)에 의해 개시 큐(initiation queue; IQ)에 연산이 삽입되면, 읽기, 쓰기, 지우기 연산 중 개시 큐(initiation queue; IQ)에 삽입된 플래시 연산에 해당하는 연산을 처리할 수 있다.The
구체적으로, 플래시 제어기(210)는 플래시 연산 스케줄러(110)에 의해 개시 큐(initiation queue; IQ)에 연산이 삽입되면, 개시 큐(initiation queue; IQ)에 삽입된 연산에 해당하는 연산을 미리 설정되어 있는 제어기 알고리즘에 따라 실행할 수 있다. 플래시 제어기(210)를 미리 설정되어 있는 제어기 알고리즘에 따라 연산의 실행이 종료되면, 만료 큐(completion queue; CQ)에 연산 종료 사건을 삽입할 수 있다. 이때, 만료 큐(completion queue; CQ)는 플래시 제어 하드웨어(200)에 구비된 복수 개의 플래시 칩(220)마다 구비되어 있는 큐로, 개시 큐(initiation queue; IQ)와 쌍으로 구비되어 있을 수 있다.Specifically, when the operation is inserted into the initiation queue (IQ) by the
도 2 는 2개의 플래시 칩 chip 0, chip 1에 특정 입출력 스트림 A, B에 대한 플래시 연산이 도착하는 모습을 도시한 도면이다. 2 is a diagram showing a state in which a flash operation for specific input / output streams A and B arrives in two
도 2 를 참조하면, chip 0로 스트림 A에 대한 연산이 0us, 120us에 도착하고, 스트림 B에 대한 연산이 20us에 도착하고, chip 1로 스트림 A에 대한 연산이 10us에, 스트림 B에 대한 연산이 200us에 도착한다. 이때, 도 2 에서 각각의 입출력 스트림에 대한 연산이 도착하는 시점을 화살표로 표시하였으며, 괄호 안의 숫자는 도착 시간을 의미할 수 있다.Referring to FIG. 2, when an operation for stream A arrives at 0us, 120us in
도 3 은 도 2 에 도시된 각각의 입출력 스트림에서 요청한 플래시 연산들이 각각의 플래시 칩에서 실제로 수행된 모습을 나타낸 도면이다.FIG. 3 is a diagram showing how flash operations requested in each input / output stream shown in FIG. 2 are actually performed in each flash chip.
도 2 와 같이, chip 0로 스트림 A에 대한 연산이 0us, 120us에 도착하고, 스트림 B에 대한 연산이 20us에 도착하고, chip 1로 스트림 A에 대한 연산이 10us에, 스트림 B에 대한 연산이 200us에 도착하면, chip 0에 도착 시간이 0us인 스트림 A의 경우 chip 0에서 실제로 연산이 수행되었을 때 실제 서비스 시간은 100us이고, chip 0에 도착 시간이 20us인 스트림 B의 경우 chip 0에서 실제로 연산이 수행되었을 때 실제 서비스 시간은 80us이고, chip 0에 도착 시간이 120us인 스트림 A의 경우 chip 0에서 실제로 연산이 수행되었을 때 실제 서비스 시간은 90us이며, chip 1에 도착 시간이 10us인 스트림 A의 경우 chip 1에서 실제로 연산이 수행되었을 때 실제 서비스 시간은 110us이고, chip 1에 도착 시간이 200us인 스트림 B의 경우 chip 1에서 실제로 연산이 수행되었을 때 실제 서비스 시간은 90us일 수 있다.As shown in FIG. 2, when an operation for stream A arrives at 0us and 120us with
도 4a, 4b 는 특정 입출력 스트림 A, B에 대해 산출 및 보정된 가상 시간이 누적된 모습을 도시한 도면이다.FIGS. 4A and 4B are views showing accumulated virtual time calculated and corrected for specific input / output streams A and B. FIG.
도 4a 를 참조하면, 실시간 멀티칩 플래시 저장장치는 2개의 플래시 칩(chip 0, chip 1)으로 구성되며, 페이지 읽기 연산만을 고려하고, 명목 서비스 시간은 100us이며, 실제 서비스 시간이 80~120us 구간에서 변할 수 있으며, 특정 입출력 스트림 A, B에 대한 가중치()는 1이라 가정하였을 때, 도착 시간이 0us인 경우 스트림 A에 대한 플래시 연산이 chip 0에 삽입될 수 있다. 도착 시간이 0us인 경우 실제 서비스 시간을 알 수 없으므로 명목 서비스 시간을 [수학식 1]에 적용하여 가상 시간을 산출할 수 있다. 이때, 스트림 A에 대한 가상 시간은 100us로 산출되며, 스트림 A는 산출한 가상 시간만큼 가상 시간이 누적됨을 보이며, 상태는 BUSY 상태가 되고, 스트림 B의 상태는 아직 IDLE 상태임을 보인다.4A, a real-time multi-chip flash storage device is composed of two flash chips (
도착 시간이 10us인 경우, 도착 시간이 0us인 연산에 대해 chip 0에서 실행 중 이므로, 도착 시간이 10us에 대한 플래시 연산이 chip 1의 개시 큐(initiation queue; IQ)에 삽입될 수 있다. 도착 시간이 10us인 경우 실제 서비스 시간을 알 수 없으므로 명목 서비스 시간을 [수학식 1]에 적용하여 가상 시간을 산출할 수 있다. 이때 스트림 A에 대한 가상 시간은 100us로 산출되며, 스트림 A는 chip 0 및 chip 1에서의 가상 시간이 누적됨을 보인다. 이때, 스트림 A의 상태는 BUSY 상태가 되고, 스트림 B의 상태는 아직 IDLE 상태임을 보인다.If the arrival time is 10us, since the operation is being executed in
도착 시간이 20us인 경우, 스트림 B에 대한 연산이 chip 0의 개시 큐(initiation queue; IQ)에 삽입될 수 있다. 도착 시간이 20us인 경우 실제 서비스 시간을 알 수 없으므로 명목 서비스 시간을 [수학식 1]에 적용하여 가상 시간을 산출할 수 있다. 이때 스트림 B의 상태는 IDLE에서 BUSY로 전환되며, 도착 시간에 관찰된 시스템 가상 시간(system virtual time)은 스트림 A의 가상 시간이기 때문에 스트림 B의 가상 시작 시간은 스트림 A의 가상 시간 값부터 누적됨을 보인다. 또한, 스트림 B에 대한 가상 시간은 100us로 산출되므로, 도착 시간이 20us인 경우의 스트림 B에 대한 누적 가상 시간은 300us가 됨을 보인다.If the arrival time is 20us, an operation on stream B may be inserted into the initiation queue (IQ) of
도착 시간이 100us인 경우, 스트림 A에서 도착 시간이 0us였던 플래시 연산의 수행이 완료된다. 이에 따라, 도착 시간이 0us였을 때의 명목 서비스 시간을 이용하여 산출한 가상 시간 값을 실제 서비스 시간 값을 이용하여 보정할 수 있다. 이때, 도 3 을 참조하면 도착 시간이 0us였을 때의 실제 서비스 시간은 100us로 검출되므로, 도착 시간이 100us인 경우의 스트림 A에 대한 가상 시간은 보정될 수 있으며, 보정된 가상 시간인 100us(= 200 + (100-100))으로 산출될 수 있다. 이에 따라, 도착 시간 100us인 경우의 스트림 A의 가상 시간 값의 변동은 발생하지 않는다.When the arrival time is 100us, the flash operation whose arrival time is 0us in the stream A is completed. Accordingly, the virtual time value calculated using the nominal service time when the arrival time is 0us can be corrected using the actual service time value. Referring to FIG. 3, since the actual service time when the arrival time is 0us is detected as 100us, the virtual time for the stream A when the arrival time is 100us can be corrected, and the corrected virtual time 100us (= 200 + (100-100)). Thus, the fluctuation of the virtual time value of the stream A does not occur when the arrival time is 100 us.
도착 시간이 120us인 경우, 스트림 A에서 도착 시간이 10us였던 플래시 연산의 수행이 완료된다. 이에 따라, 도착 시간이 10us였을 때의 명목 서비스 시간을 이용하여 산출한 가상 시간 값을 실제 서비스 시간 값을 이용하여 보정할 수 있다. 이때, 도 3 을 참조하면 도착 시간이 10us였을 때의 실제 서비스 시간은 110us로 검출되므로, 도착 시간이 120us인 경우의 스트림 A에 대한 가상 시간은 보정될 수 있으며, 실제 서비스 시간을 이용한 보정으로 스트림 A에 대한 가상 시간은 200us에서 210us(= 200 + (110-100))로 보정될 수 있다.When the arrival time is 120us, the flash operation with the arrival time of 10us in stream A is completed. Accordingly, the virtual time value calculated using the nominal service time when the arrival time is 10us can be corrected using the actual service time value. Referring to FIG. 3, since the actual service time when the arrival time is 10us is detected as 110us, the virtual time for stream A when the arrival time is 120us can be corrected, The virtual time for A can be corrected from 200us to 210us (= 200 + (110-100)).
도 4b 를 참조하면, 같은 시간(도착 시간이 120us)에 스트림 A에서 플래시 연산이 chip 0의 개시 큐(initiation queue; IQ)에 삽입되기 때문에, 스트림 A의 가상 시간에 해당 플래시 연산에 대한 명목 서비스 시간을 이용하여 산출된 가상 시간인 100us가 누적될 수 있다. 이때, 스트림 A의 상태는 BUSY 상태가 되고, 스트림 B의 상태는 BUSY 상태임을 보인다.Referring to FIG. 4B, since the flash operation is inserted into the initiation queue (IQ) of the
도착 시간이 180us인 경우, 스트림 B에서 도착 시간이 20us였던 플래시 연상의 수행이 완료된다. 이에 따라, 도착 시간이 20us였을 때의 명목 서비스 시간을 이용하여 산출한 가상 시간 값을 실제 서비스 시간 값을 이용하여 보정할 수 있다. 이때, 도 3 을 참조하면 도착 시간이 20us였을 때의 실제 서비스 시간은 80us로 검출되므로, 도착 시간이 180us인 경우의 스트림 B에 대한 가상 시간은 보정될 수 있으며, 실제 서비스 시간을 이용한 보정으로 스트림 B에 대한 가상 시간은 300us에서 280us(= 300 + (80-100))로 보정될 수 있다. 이때, 스트림 A의 상태는 BUSY 상태가 되고, 스트림 B의 상태는 IDLE 상태임을 보인다.When the arrival time is 180us, the execution of the flash association in which the arrival time is 20us in the stream B is completed. Accordingly, the virtual time value calculated using the nominal service time when the arrival time is 20us can be corrected using the actual service time value. Referring to FIG. 3, since the actual service time when the arrival time is 20us is detected as 80us, the virtual time for the stream B when the arrival time is 180us can be corrected, The virtual time for B can be corrected from 300us to 280us (= 300 + (80-100)). At this time, the state of the stream A is in the BUSY state, and the state of the stream B is in the IDLE state.
도착 시간이 200us인 경우, 스트림 B에 대한 플래시 연산이 chip 1의 개시 큐(initiation queue; IQ)에 삽입될 수 있다. 도착 시간이 200us인 경우 실제 서비스 시간을 알 수 없으므로 명목 서비스 시간을 [수학식 1]에 적용하여 가상 시간을 산출할 수 있다. 이때, 도착 시간에 관찰된 시스템 가상 시간(system virtual time)은 스트림 A의 가상 시간이기 때문에 스트림 B의 가상 시작 시간은 스트림 A의 가상 시간 값부터 누적됨을 보인다. 스트림 B에 대한 가상 시간은 100us로 산출되므로, 도착 시간이 200us인 경우의 스트림 B에 대한 누적 가상 시간은 410us가 됨을 보인다.If the arrival time is 200us, a flash operation for stream B may be inserted into the initiation queue (IQ) of
도착 시간이 270us인 경우, 스트림 A에서 도착 시간이 120us였던 플래시 연산의 수행이 완료된다. 이에 따라, 도착 시간이 120us였을 때의 명목 서비스 시간을 이용하여 산출한 가상 시간 값을 실제 서비스 시간 값을 이용하여 보정할 수 있다. 이때, 도착 시간이 120us였을 때의 실제 서비스 시간은 90us로 검출되므로, 도착 시간이 270us인 경우의 스트림 A에 대한 가상 시간은 보정될 수 있으며, 실제 서비스 시간을 이용한 보정으로 스트림 A에 대한 가상 시간은 310us에서 300us(= 310 + (90-100))로 보정될 수 있다. 이때, 스트림 A는 수행 중인 플래시 연산이 없기 때문에 스트림 A의 상태는 BUSY에서 IDLE 상태로 전환되고, 스트림 B의 상태는 BUSY 상태임을 보인다.When the arrival time is 270us, the flash operation whose arrival time is 120us in the stream A is completed. Accordingly, the virtual time value calculated using the nominal service time when the arrival time is 120us can be corrected using the actual service time value. Since the actual service time when the arrival time is 120us is detected as 90us, the virtual time for the stream A when the arrival time is 270us can be corrected, and the virtual time for stream A can be corrected by using the actual service time Can be corrected from 310us to 300us (= 310 + (90-100)). At this time, since stream A has no flash operation to be performed, the state of stream A is changed from BUSY to IDLE state, and the state of stream B is BUSY state.
도착 시간이 290us인 경우, 스트림 B에서 도착 시간이 200us였던 플래시 연산의 수행이 완료된다. 이에 따라, 도착 시간이 200us였을 때의 명목 서비스 시간을 이용하여 산출한 가상 시간 값을 실제 서비스 시간 값을 이용하여 보정할 수 있다. 이때, 도착 시간이 200us였을 때의 실제 서비스 시간은 90us로 검출되므로, 도착 시간이 290us인 경우의 스트림 B에 대한 가상 시간은 보정될 수 있으며, 실제 서비스 시간을 이용한 보정으로 스트림 B에 대한 가상 시간은 410us에서 400us(= 410 + (90-100))로 보정될 수 있다. 이때, 스트림 A, B는 수행 중인 플래시 연산이 없기 때문에 스트림 A, B의 상태는 IDLE 상태임을 보인다.When the arrival time is 290 us, the execution of the flash operation whose arrival time is 200us in the stream B is completed. Accordingly, the virtual time value calculated using the nominal service time when the arrival time is 200us can be corrected using the actual service time value. At this time, since the actual service time when the arrival time is 200us is detected as 90us, the virtual time for stream B when the arrival time is 290us can be corrected, and the virtual time for stream B Can be corrected from 410us to 400us (= 410 + (90-100)). At this time, streams A and B are in the IDLE state because there is no flash operation being performed.
아래에서는, 도 5a, 5b 를 통하여 본 발명의 일 실시예에 따른 멀티칩 플래시 저장방법에 대해 설명한다.Hereinafter, a multi-chip flash storage method according to an embodiment of the present invention will be described with reference to FIGS. 5A and 5B.
도 5a 를 참조하면, 복수 개의 입출력 스트림에 도착하는 입출력 요청이 삽입되어 있는 스트림 큐(stream queue)에서 입출력 요청을 추출(310)하고, 추출한 입출력 요청을 플래시 연산으로 변환한다(315).Referring to FIG. 5A, an input / output request is extracted 310 from a stream queue having an input / output request arriving to a plurality of input / output streams, and the extracted input / output request is converted into a
이때, 스트림 큐는 호스트 운영체제에 의해 실시간 멀티칩 플래시 저장장치 내부에 생성되며, 복수 개의 입출력 스트림에 도착하는 입출력 요청을 도착한 순서에 따라 적재할 수 있다.At this time, the stream queue is created in the real-time multi-chip flash storage device by the host operating system, and the input / output requests arriving at a plurality of input / output streams can be loaded in the order of arrival.
변환한 플래시 연산을 복수 개의 입출력 스트림 중 해당 입출력 스트림의 연산 큐에 삽입(320)하고, 변환한 플래시 연산이 삽입된 각각의 입출력 스트림에 대한 가상 시간을 산출한다(325).The converted flash operation is inserted into the operation queue of the corresponding input / output stream among the plurality of input / output streams (320), and the virtual time for each input / output stream into which the converted flash operation is inserted is calculated (325).
이때, 각각의 입출력 스트림에 대한 가상 시간을 산출하는 것은 [수학식 1]을 이용하여 산출할 수 있으며, 가상 종료 시간이 각각의 입출력 스트림에 대한 가상 시간이 될 수 있다.At this time, the virtual time for each input / output stream can be calculated using Equation (1), and the virtual end time can be a virtual time for each input / output stream.
산출한 가상 시간을 비교하여 복수 개의 입출력 스트림 중 최소 가상 시간을 갖는 입출력 스트림을 검출(330)하고, 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에 삽입되어 있는 연산 중 첫번째 연산을 추출한다(335).(330) an input / output stream having a minimum virtual time among a plurality of input / output streams by comparing the calculated virtual time, and extracts the first operation among the operations inserted in the operation queue of the input / output stream having the minimum virtual time (335) .
이때, 복수 개의 입출력 스트림 중 최소 가상 시간을 갖는 입출력 스트림을 검출하는 것은, 가상 시간이 짧다는 것은 연산을 처리하는데 소요되는 처리 시간이 짧다는 것을 의미하므로, 처리 시간이 짧은 입출력 요청부터 처리함으로써 멀티칩 플래시 저장장치의 평균 응답시간을 단축시키기 위함이다. 또한, 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에 삽입되어 있는 연산 중 첫번째 연산을 추출하는 것은, 입출력 스트림의 연산 큐에 삽입된 순서에 따라 연산을 처리하기 위함이다.At this time, the detection of the input / output stream having the minimum virtual time among the plurality of input / output streams means that the virtual time is short means that the processing time required for processing the operation is short. Therefore, This is to shorten the average response time of the chip flash storage device. The first operation among the operations inserted in the operation queue of the input / output stream having the minimum virtual time is extracted in order to process the operation according to the order inserted in the operation queue of the input / output stream.
추출한 연산을 추출한 연산이 할당된 개시 큐(initiation queue; IQ)에 삽입(340)하고, 플래시 제어기(210)를 통해 개시 큐(initiation queue; IQ)에 삽입한 연산을 미리 정해진 제어기 알고리즘에 따라 실행한다(345).The extracted operation is inserted into the assigned
이때, 개시 큐(initiation queue; IQ)에 삽입한 연산이 종료되면(350), 개시 큐(initiation queue; IQ)와 쌍을 이루는(개시 큐(initiation queue; IQ)와 동일한 플래시 칩(220)에 연결된) 만료 큐(completion queue; CQ)에 연산 종료 사건을 삽입(355)하고, 개시 큐(initiation queue; IQ)에 삽입한 연산이 종료되지 않으면(350), 345 단계로 돌아간다.At this time, if the operation inserted into the initiation queue IQ is terminated (350), the same operation as the initiation queue (IQ) pairing with the initiation queue (IQ) (355) inserts an operation termination event into the connection completion queue (CQ), and if the operation inserted into the initiation queue (IQ) is not terminated (350), the flow returns to step 345. [
도 5b 를 참조하면, 연산 종료 사건이 삽입된 입출력 스트림에 대한 실제 서비스 시간 검출한다(410).Referring to FIG. 5B, an actual service time of an input / output stream in which an operation end event is inserted is detected (410).
이때, 연산 종료 사건이 삽입된 입출력 스트림에 대한 실제 서비스 시간 검출하는 것은, 개시 큐(initiation queue; IQ)에 연산을 삽입한 후로부터 만료 큐(completion queue; CQ)에 연산 종료 사건이 삽입된 때까지의 시간을 검출함으로써 개시 큐(initiation queue; IQ)에 삽입했던 연산에 대한 실제 서비스 시간을 검출할 수 있다.At this time, the actual service time of the input / output stream inserted with the operation end event is detected when the operation end event is inserted into the completion queue (CQ) since the operation is inserted into the initiation queue (IQ) It is possible to detect the actual service time for the operation inserted into the initiation queue IQ.
검출된 실제 서비스 시간을 [수학식 2]에 적용하여 가상 시간 보정(420)하고, 보정된 가상 시간을 반영하여 공정 지분 스케줄링이 수행될 수 있도록 보정한 가상 시간을 이용하여 입출력 스트림에 대한 스케줄링을 재수행한다(430).The detected actual service time is applied to Equation (2) to perform virtual time correction (420), and the scheduling for the input and output streams is performed using the virtual time corrected so that the process share scheduling can be performed reflecting the corrected virtual time (430).
이와 같은, 다중 자원인 멀티칩에 대해 공정 지원 스케줄링을 수행하는 기술은 애플리케이션으로 구현되거나 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다.Such a technique for performing process assisted scheduling for multi-chip, which is a multi-resource, may be implemented in an application or may be implemented in the form of program instructions that can be executed through various computer components and recorded in a computer-readable recording medium. The computer-readable recording medium may include program commands, data files, data structures, and the like, alone or in combination.
상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거니와 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다.The program instructions recorded on the computer-readable recording medium may be ones that are specially designed and configured for the present invention and are known and available to those skilled in the art of computer software.
컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD 와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks and magnetic tape, optical recording media such as CD-ROMs and DVDs, magneto-optical media such as floptical disks, media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like.
프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드 뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.Examples of program instructions include machine language code such as those generated by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware device may be configured to operate as one or more software modules for performing the processing according to the present invention, and vice versa.
이상에서는 실시예들을 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it will be understood by those skilled in the art that various changes and modifications may be made therein without departing from the spirit and scope of the invention as defined in the appended claims. It will be possible.
100: 플래시 변환 계층
110: 플래시 연산 스케줄러
200: 플래시 제어 하드웨어
210: 플래시 제어기100: Flash conversion layer
110: flash operation scheduler
200: Flash control hardware
210: Flash controller
Claims (10)
복수 개의 플래시 칩들과, 상기 플래시 칩의 개시 큐에 삽입된 플래시 연산을 미리 설정된 제어기 알고리즘에 따라 실행하고, 상기 개시 큐에 삽입된 플래시 연산의 실행이 종료되면 연산 종료 사건을 상기 플래시 칩의 만료 큐에 삽입하는 플래시 제어기를 구비한 플래시 제어 하드웨어를 포함하되,
상기 플래시 변환 계층은,
상기 복수 개의 입출력 스트림에 대한 임의의 명목 서비스 시간을 미리 정해진 연산 규칙에 적용하여 상기 복수 개의 입출력 스트림에 대한 가상 시간을 산출하고, 상기 산출한 가상 시간을 비교하여 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 상기 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 상기 개시 큐에 삽입하는 플래시 연산 스케줄러를 구비하며,
상기 플래시 연산 스케줄러는,
상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산이 할당된 플래시 칩에서 연산이 실행되는 중 상기 입출력 스트림에 새로운 입출력 요청이 들어오면, 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산이 할당된 플래시 칩과 다른 플래시 칩의 개시 큐에 상기 새로운 입출력 요청에 대한 플래시 연산을 삽입하여 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산을 실행하는 동시에 상기 새로운 입출력 요청에 대한 플래시 연산을 실행하는 것을 특징으로 하는 실시간 멀티칩 플래시 저장장치.Output request from a stream queue in which an input / output request arriving at a plurality of input / output streams is inserted, converts the input / output request into a flash operation, inserts the flash operation into an operation queue provided for each of the plurality of input / output streams, Output stream, extracts the first flash operation from the operation queue of the input / output stream having the smallest virtual time among the plurality of input / output streams so as to perform the scheduling according to the calculated virtual time, A flash translation layer for inserting an operation into the start queue of the allocated flash chip; And
And a controller for executing a flash operation inserted in a start queue of the flash chip in accordance with a predetermined controller algorithm, and when an execution of a flash operation inserted in the start queue is terminated, And a flash controller for inserting the flash controller into the flash memory,
Wherein the flash conversion layer comprises:
Output stream by applying an arbitrary nominal service time for the plurality of input / output streams to a predetermined arithmetic rule to calculate a virtual time for the plurality of input / output streams, and comparing the calculated virtual time to detect an input / And a flash operation scheduler for extracting a first flash operation from an operation queue of the input / output stream having the minimum virtual time and inserting the first flash operation into the start queue,
The flash operation scheduler includes:
When a new input / output request is input to the input / output stream while the operation is being performed in the flash chip to which the flash operation for the input / output stream having the minimum virtual time is allocated, the flash operation for the flash operation for the input / A flash operation for the new input / output request is inserted into a start queue of a chip and another flash chip to execute a flash operation for an input / output stream having the minimum virtual time, and a flash operation for the new input / output request is executed. A real-time multi-chip flash storage device.
상기 플래시 연산 스케줄러는,
상기 플래시 제어 하드웨어에 의해 상기 플래시 칩의 만료 큐에 상기 연산 종료 사건이 삽입되면 상기 연산 종료 사건을 통해 해당 입출력 스트림의 입출력 요청에 대한 실제 서비스 시간이 인식되고, 미리 정해진 연산 규칙에 상기 실제 서비스 시간을 적용하여 해당 입출력 스트림에 대한 가상 시간을 보정하는 것을 더 포함하는 실시간 멀티칩 플래시 저장장치.The method according to claim 1,
The flash operation scheduler includes:
When the operation end event is inserted into the expiration queue of the flash chip by the flash control hardware, the actual service time for the input / output request of the input / output stream is recognized through the operation end event, and the actual service time To the virtual time of the input / output stream to correct the virtual time for the input / output stream.
상기 플래시 연산 스케줄러는,
상기 실제 서비스 시간을 이용하여 해당 입출력 스트림에 대한 가상 시간이 보정되면, 가상 시간이 보정된 입출력 스트림을 포함하는 복수 개의 입출력 스트림에 대해 스케줄링을 수행하는 실시간 멀티칩 플래시 저장장치.The method of claim 3,
The flash operation scheduler includes:
Wherein the scheduling is performed for a plurality of input / output streams including virtual time-corrected input / output streams when the virtual time for the input / output stream is corrected using the actual service time.
상기 플래시 연산 스케줄러는,
상기 가상 시간이 보정된 입출력 스트림을 포함하는 복수 개의 입출력 스트림에 대해 가상 시간을 비교하여 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 상기 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 스케줄링을 수행하는 실시간 멀티칩 플래시 저장장치.5. The method of claim 4,
The flash operation scheduler includes:
Output stream having a minimum virtual time by comparing virtual time with a plurality of input / output streams including the virtual time-corrected input / output stream, and detecting a first flash operation in the operation queue of the input / Chip multi-chip flash storage device.
상기 플래시 칩의 개시 큐에 삽입된 플래시 연산을 미리 설정된 제어기 알고리즘에 따라 실행하고, 상기 개시 큐에 삽입된 플래시 연산의 실행이 종료되면 연산 종료 사건을 상기 플래시 칩의 만료 큐에 삽입하되,
상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산이 할당된 플래시 칩에서 연산이 실행되는 중 상기 입출력 스트림에 새로운 입출력 요청이 들어오면, 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산이 할당된 플래시 칩과 다른 플래시 칩의 개시 큐에 상기 새로운 입출력 요청에 대한 플래시 연산을 삽입하여 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산을 실행하는 동시에 상기 새로운 입출력 요청에 대한 플래시 연산을 실행하는 것을 특징으로 하는 실시간 멀티칩 플래시 저장방법.Output request from a stream queue in which an input / output request arriving at a plurality of input / output streams is inserted, converts the input / output request into a flash operation, inserts the flash operation into an operation queue provided for each of the plurality of input / output streams, Output streams having a minimum virtual time among the plurality of input / output streams by comparing the calculated virtual time so as to be able to perform scheduling according to the calculated virtual time, Extracting a first flash operation from an operation queue of an input / output stream having a minimum virtual time, inserting the flash operation into a start queue of a flash chip allocated to the flash operation,
Wherein the flash memory controller executes the flash operation inserted in the start queue of the flash chip according to a predetermined controller algorithm and inserts an operation end event into the expiration queue of the flash chip when the execution of the flash operation inserted into the start queue is completed,
When a new input / output request is input to the input / output stream while the operation is being performed in the flash chip to which the flash operation for the input / output stream having the minimum virtual time is allocated, the flash operation for the flash operation for the input / A flash operation for the new input / output request is inserted into a start queue of a chip and another flash chip to execute a flash operation for an input / output stream having the minimum virtual time, and a flash operation for the new input / output request is executed. Time multi-chip flash storage method.
상기 플래시 칩의 만료 큐에 연산 종료 사건이 삽입되면 상기 연산 종료 사건을 통해 해당 입출력 스트림의 입출력 요청에 대한 실제 서비스 시간이 인식되고, 미리 정해진 연산 규칙에 상기 실제 서비스 시간을 적용하여 해당 입출력 스트림에 대한 가상 시간을 보정하는 것을 더 포함하는 실시간 멀티칩 플래시 저장방법.8. The method of claim 7,
If an operation termination event is inserted into the expiration queue of the flash chip, the actual service time for the input / output request of the input / output stream is recognized through the operation termination event, and the actual service time is applied to the predetermined operation rule, Lt; RTI ID = 0.0 > multi-chip < / RTI > flash storage method.
상기 실제 서비스 시간을 이용하여 해당 입출력 스트림에 대한 가상 시간이 보정되면, 가상 시간이 보정된 입출력 스트림을 포함하는 복수 개의 입출력 스트림에 대해 가상 시간을 비교하여 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 상기 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 스케줄링을 수행하는 것을 더 포함하는 실시간 멀티칩 플래시 저장방법.9. The method of claim 8,
Output stream having a minimum virtual time by comparing a virtual time with respect to a plurality of input / output streams including an input / output stream whose virtual time is corrected, when the virtual time for the input / output stream is corrected using the actual service time, And extracting a first flash operation from the operation queue of the input / output stream having the minimum virtual time to perform scheduling.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20140167618 | 2014-11-27 | ||
KR1020140167618 | 2014-11-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160063954A KR20160063954A (en) | 2016-06-07 |
KR101655008B1 true KR101655008B1 (en) | 2016-09-06 |
Family
ID=56193005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150004230A KR101655008B1 (en) | 2014-11-27 | 2015-01-12 | Apparatus and method for real-time multi-chip flash storage |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101655008B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11915048B2 (en) | 2019-12-26 | 2024-02-27 | Samsung Electronics Co., Ltd. | Method of scheduling jobs in storage device using pre-defined time and method of operating storage system including the same |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018016659A1 (en) * | 2016-07-18 | 2018-01-25 | 주식회사 파두 | Method and system for proportional share scheduling of flash storage bandwidth |
KR102491068B1 (en) | 2017-11-17 | 2023-01-19 | 에스케이하이닉스 주식회사 | Semiconductor device for scheduling tasks for memory device and system includign the same |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101486987B1 (en) * | 2008-05-21 | 2015-01-30 | 삼성전자주식회사 | Semiconductor memory device including nonvolatile memory and commnand scheduling method for nonvolatile memory |
KR101021364B1 (en) * | 2008-10-10 | 2011-03-14 | 한양대학교 산학협력단 | Multiple flash memory management method and apparatus for merge operation reduction in a fast algorithm base ftl |
US8797799B2 (en) | 2012-01-05 | 2014-08-05 | Conversant Intellectual Property Management Inc. | Device selection schemes in multi chip package NAND flash memory system |
-
2015
- 2015-01-12 KR KR1020150004230A patent/KR101655008B1/en active IP Right Grant
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11915048B2 (en) | 2019-12-26 | 2024-02-27 | Samsung Electronics Co., Ltd. | Method of scheduling jobs in storage device using pre-defined time and method of operating storage system including the same |
Also Published As
Publication number | Publication date |
---|---|
KR20160063954A (en) | 2016-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8700838B2 (en) | Allocating heaps in NUMA systems | |
US9047196B2 (en) | Usage aware NUMA process scheduling | |
US8468524B2 (en) | Inter-virtual machine time profiling of I/O transactions | |
US8286177B2 (en) | Technique for conserving software application resources | |
KR101655008B1 (en) | Apparatus and method for real-time multi-chip flash storage | |
KR102011726B1 (en) | Method and apparatus for extracting specific dynamic generated file | |
US9244737B2 (en) | Data transfer control method of parallel distributed processing system, parallel distributed processing system, and recording medium | |
US20160202909A1 (en) | I/o scheduling method using read prioritization to reduce application delay | |
JP2014505959A5 (en) | ||
US9208099B2 (en) | Adjustment of the number of task control blocks allocated for discard scans | |
US10013288B2 (en) | Data staging management system | |
US20160110209A1 (en) | Apparatus and method for performing multi-core emulation based on multi-threading | |
US20120054762A1 (en) | Scheduling apparatus and method for a multicore device | |
KR20170139763A (en) | Method for detecting service of network and apparatus using the same | |
CN107168788B (en) | Method and device for scheduling resources in distributed system | |
JP4840605B2 (en) | OS startup method | |
US20130247037A1 (en) | Control computer and method for integrating available computing resources of physical machines | |
CN104008001A (en) | Virtual machine dynamic migrating algorithm applied to mass data support | |
KR101539895B1 (en) | Computing method and apparatus of determining size of over-provisioning space | |
KR101652324B1 (en) | Method and apparatus for guaranteeing performance requirement | |
US8930776B2 (en) | Implementing DRAM command timing adjustments to alleviate DRAM failures | |
KR101754998B1 (en) | Multi Core System and Method for Processing Data | |
JP6428557B2 (en) | Parallelization method, parallelization tool | |
JP2014146366A (en) | Multi-core processor system, and control method and control program of multi-core processor system | |
KR102053765B1 (en) | Tenant Based Dynamic Processor Mapping Device and Method for Operating Thereof |
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 | ||
FPAY | Annual fee payment |
Payment date: 20190624 Year of fee payment: 4 |