KR101655008B1 - Apparatus and method for real-time multi-chip flash storage - Google Patents

Apparatus and method for real-time multi-chip flash storage Download PDF

Info

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
Application number
KR1020150004230A
Other languages
Korean (ko)
Other versions
KR20160063954A (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 KR20160063954A publication Critical patent/KR20160063954A/en
Application granted granted Critical
Publication of KR101655008B1 publication Critical patent/KR101655008B1/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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming 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

실시간 멀티칩 플래시 저장장치 및 그 방법{APPARATUS AND METHOD FOR REAL-TIME MULTI-CHIP FLASH STORAGE}[0001] APPARATUS AND METHOD FOR REAL-TIME MULTI-CHIP FLASH STORAGE [0002]

본 발명은 실시간 멀티칩 플래시 저장장치 및 그 방법에 관한 것으로서, 보다 상세하게는 공정 지분 스케줄링 또는 비례 지분 스케줄링을 수행하는 실시간 멀티칩 플래시 저장장치 및 그 방법에 관한 것이다.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.

한국등록특허 제1021364호Korean Patent No. 1021364 한국공개특허 제2014-0111323호Korea Patent Publication No. 2014-0111323

본 발명의 일측면은 다중 자원인 멀티칩 플래시의 병렬성을 극대화하고, 저장장치의 응답 시간을 예측할 수 있도록 임의의 명목 서비스 시간을 이용하여 각각의 입출력 스트림에 대한 처리 예상 시간인 가상 시간을 산출하고, 산출한 가상 시간에 따라 스케줄링을 수행하는 실시간 멀티칩 플래시 저장장치 및 그 방법을 제공한다.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 conversion layer 100 and a flash control hardware 200.

플래시 변환 계층(Flash Translation Layer, 100)은 호스트 운영체제(Host OS)와 플래시 메모리의 사이에 플래시 메모리를 하드 디스크와 같이 에뮬레이션(Emulation) 해주는 기능을 할 수 있다. 플래시 변환 계층(100)은 호스트 운영체제에게 플래시 메모리가 가지고 있는 고유의 특성들을 감추며, 하드 디스크와 동일한 입출력 연산을 수행할 수 있도록 파일 시스템으로부터 전달되는 논리적인 주소를 플래시 메모리의 물리적 주소와 매핑(Mapping)하는 기능을 수행할 수 있다.The flash translation layer 100 may function to emulate a flash memory as a hard disk between a host OS and a flash memory. The flash translation layer 100 masks the unique characteristics of the flash memory to the host operating system and maps the logical address transferred from the file system to the physical address of the flash memory so as to perform the same input / ) Can be performed.

본 발명의 일 실시예에 따른 플래시 변환 계층(100)은 호스트 운영체제(Host OS)에 의해 복수 개의 입출력 스트림에 도착하는 입출력 요청이 삽입되어 있는 스트림 큐(stream queue)에서 입출력 요청을 추출할 수 있다. 플래시 변환 계층(100)은 추출한 입출력 요청을 해당 입출력 스트림의 연산 큐(Operation queue)에 삽입할 수 있다. 이때, 연산 큐(Operation queue)는 복수 개의 입출력 스트림마다 대응되게 마련되어 있을 수 있다. 본 발명의 일 실시예에 따른 플래시 변환 계층(100)은 내부에 복수 개의 입출력 요청을 처리하는 순서를 배열하는 플래시 연산 스케줄러(110)를 구비할 수 있다. 본 발명의 일 실시예에 따른 실시간 멀티칩 플래시 저장장치는 플래시 변환 계층(100) 내부에서 플래시 연산 스케줄러(110)를 소프트웨어 형태로 구현함으로써, 원래 플래시 연산 스케줄러(110) 기능이 포함되어야 할 플래시 제어 하드웨어로부터 플래시 연산 스케줄러(110)를 분리할 수 있어 플래시 제어 하드웨어(200)의 구조를 단순화시킬 수 있는 이점이 있다.The flash conversion layer 100 according to an embodiment of the present invention can extract an input / output request from a stream queue in which an input / output request arriving at a plurality of input / output streams is inserted by a host OS . The flash conversion layer 100 may insert the extracted input / output request into an operation queue of the corresponding input / output stream. At this time, the operation queue may be provided for each of a plurality of input / output streams. The flash translation layer 100 according to an exemplary embodiment of the present invention may include a flash operation scheduler 110 that arranges a sequence of processing a plurality of input / output requests therein. The real-time multi-chip flash storage device according to an exemplary embodiment of the present invention realizes a flash operation scheduler 110 in software form within the flash conversion layer 100 so that the original flash operation scheduler 110 function can be implemented in a flash control There is an advantage that the flash operation scheduler 110 can be separated from the hardware so that the structure of the flash control hardware 200 can be simplified.

플래시 연산 스케줄러(110)는 [수학식 1]를 이용하여 복수 개의 입출력 스트림에 대하여 임의의 명목 서비스 시간(nominal service time)을 적용하여 각각의 입출력 스트림에 대한 가상 시작 시간(virtual start time)과 가상 종료 시간(virtual finish time)을 산출할 수 있다. 이때, 명목 서비스 시간(nominal service time)은 각 입출력 스트림에 도착하는 입출력 요청에 대하여 실제 서비스 시간을 미리 알 수 없는 상황에서, 각 입출력 스트림에 대한 처리 시간 및 실시간 멀티칩 플래시 저장장치의 응답시간을 예측할 수 있도록 하기 위한 것으로, 실시간 멀티칩 플래시 저장장치 제조 시 미리 상수로 정해지거나 해당 연산이 이전에 실행되어 얻어진 실제 서비스 시간(actual service time)들의 평균값으로 정해질 수 있다.The flash operation scheduler 110 applies an arbitrary nominal service time to a plurality of input and output streams using Equation (1) to calculate a virtual start time and a virtual start time for each input / A virtual finish time can be calculated. In this case, the nominal service time is the time required to process the input / output stream and the response time of the real-time multi-chip flash storage device in a situation where the actual service time for the input / And may be defined as a constant value in the manufacture of a real-time multi-chip flash storage device or an average value of actual service times obtained by executing the operation previously.

Figure 112015002925941-pat00001
Figure 112015002925941-pat00001

이때,

Figure 112015002925941-pat00002
은 입출력 스트림 i의 k번째 요청의 가상 시작 시간(virtual start time)을 의미할 수 있으며,
Figure 112015002925941-pat00003
은 입출력 스트림 i의 k번째 요청의 가상 종료 시간(virtual finish time)을 의미할 수 있으며,
Figure 112015002925941-pat00004
은 입출력 스트림 i의 k번째 요청의 물리적인 도착 시간에 관찰된 시스템 가상 시간(system virtual time)으로, 해당 시간에서 적어도 하나의 입출력 요청을 스트림 큐(stream queue)에 가지고 있거나 서비스 받고 있는 스트림 큐(stream queue)들의 가상 시간들 중에서 최소값으로 정의될 수 있다.
Figure 112015002925941-pat00005
은 모든 플래시 칩(220)을 대상으로 한 입출력 스트림 i의 l번째부터 k번째까지의 연산의 명목 서비스 시간(nominal service time)의 합을 의미할 수 있으며,
Figure 112015002925941-pat00006
는 입출력 스트림 i에 대한 가중치를 의미할 수 있다.At this time,
Figure 112015002925941-pat00002
May be the virtual start time of the kth request of the input / output stream i,
Figure 112015002925941-pat00003
May be the virtual finish time of the kth request of the input / output stream i,
Figure 112015002925941-pat00004
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.
Figure 112015002925941-pat00005
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 flash chips 220,
Figure 112015002925941-pat00006
May be a weight for the input / output stream i.

이때, 산출한 가상 종료 시간은 입출력 스트림의 입출력 요청을 처리하는데 걸리는 총 소요 시간을 의미할 수 있으므로, 플래시 연산 스케줄러(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 flash operation scheduler 110 can define the calculated virtual end time as the virtual time of the stream.

플래시 연산 스케줄러(110)는 모든 입출력 스트림에 대하여 산출한 가상 시간을 비교하여 복수 개의 입출력 스트림 중 최소 가상 시간을 갖는 입출력 스트림을 검출할 수 있다. 플래시 연산 스케줄러(110)는 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에 연산이 삽입된 순서에 따라 연산이 실행될 수 있도록 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 연산을 추출하여 해당 연산이 할당된 플래시 칩(220)의 개시 큐(initiation queue; IQ)에 삽입할 수 있다. 이때, 복수 개의 입출력 스트림 중 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에 삽입되어 있는 연산을 추출하는 것은, 가상 시간이 짧다는 것은 연산을 처리하는데 소요되는 처리 시간이 짧다는 것을 의미하므로, 처리 시간이 짧은 입출력 요청부터 처리함으로써 멀티칩 플래시 저장장치의 평균 응답시간을 단축시키기 위함이다. 한편, 도 1 을 참조하면, 개시 큐(initiation queue; IQ)는 플래시 제어 하드웨어(200) 내부에 마련되어 있는 복수 개의 플래시 칩(220)마다 하나씩 마련되어 있으며, 플래시 변환 계층(100)으로부터 연산이 삽입되면 삽입된 순서에 따라 연산을 적재할 수 있다.The flash operation scheduler 110 can detect an input / output stream having a minimum virtual time among a plurality of input / output streams by comparing virtual time calculated for all input / output streams. The flash operation scheduler 110 extracts the first operation from the operation queue of the input / output stream having the minimum virtual time so that the operation can be executed according to the order in which the operation is inserted into the operation queue of the input / output stream having the minimum virtual time, May be inserted into an initiation queue (IQ) of the allocated flash chip 220. In this case, extracting the operation inserted in the operation queue of the input / output stream having the minimum virtual time among the plurality of input / output streams means that the processing time required for processing the operation is short because the virtual time is short, This is to shorten the average response time of the multi-chip flash storage device by processing from this short input / output request. 1, an initiation queue (IQ) is provided for each of a plurality of flash chips 220 provided in the flash control hardware 200. When an operation is inserted from the flash translation layer 100 The operation can be loaded according to the inserted order.

본 발명의 일 실시예에 따른 플래시 연산 스케줄러(110)는 플래시 제어 하드웨어(200)에 의해 개시 큐(initiation queue; IQ)에 삽입된 연산을 실행한 후 만료 큐(completion queue; CQ)에 연산 종료 사건이 삽입되면 삽입된 연산 종료 사건을 통해 입출력 스트림에 대한 가상 시간을 보정할 수 있다.The flash operation scheduler 110 according to an embodiment of the present invention executes an operation inserted in an initiation queue IQ by the flash control hardware 200 and then performs an operation end in a completion queue When the event is inserted, the virtual time for the input / output stream can be corrected through the inserted operation end event.

구체적으로, 플래시 연산 스케줄러(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 flash operation scheduler 110 executes an operation inserted into an initiation queue IQ by the flash controller 210 provided in the flash control hardware 200, and then executes the operation executed by the flash controller 210 When an operation termination event for an operation is inserted into an completion queue (CQ) paired with the initiation queue (IQ), execution of the operation inserted in the initiation queue (IQ) , And can detect the actual service time for the operation inserted in the initiation queue (IQ). The detection of the actual service time for the operation inserted into the initiation queue IQ is performed by inserting an operation into the initiation queue IQ and then terminating the operation in the completion queue CQ The actual service time for the operation inserted in the initiation queue (IQ) can be detected by detecting the time until the event is inserted. When the actual service time for the operation inserted into the initiation queue IQ is detected, the flash operation scheduler 110 applies the detected actual service time to Equation (2) to correct the virtual time for the input / output stream can do.

Figure 112015002925941-pat00007
Figure 112015002925941-pat00007

이때,

Figure 112015002925941-pat00008
는 입출력 스트림 i의 k번째 요청의 보정된 가상 종료 시간(virtual finish time), 즉 보정된 가상 시간을 의미할 수 있으며,
Figure 112015002925941-pat00009
는 보정되기 전 입출력 스트림 i의 k번째 요청의 가상 시작 시간(virtual start time), 즉 보정되기 전 가상 시간을 의미할 수 있으며,
Figure 112015002925941-pat00010
는 모든 칩에서 입출력 스트림 i의 l번째부터 k번째까지 요청의 연산 종료 사건을 통해 검출된 실제 서비스 시간(actual service time)의 합을 의미할 수 있으며,
Figure 112015002925941-pat00011
역시 모든 칩에서 입출력 스트림 i의 l번째부터 k번째까지의 연산의 명목 서비스 시간(nominal service time)의 합을 의미할 수 있으며,
Figure 112015002925941-pat00012
는 입출력 스트림 i에 대한 가중치를 의미할 수 있다.At this time,
Figure 112015002925941-pat00008
May mean a corrected virtual finish time of the k-th request of the input / output stream i, i.e., a corrected virtual time,
Figure 112015002925941-pat00009
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,
Figure 112015002925941-pat00010
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,
Figure 112015002925941-pat00011
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,
Figure 112015002925941-pat00012
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 flash operation scheduler 110 updates the virtual time for the input / output stream to a virtual time corrected, and performs scheduling to rearrange the processing order for the flash operation of the input / output stream have. At this time, the scheduling is re-executed by using the corrected virtual time. When the virtual time corrected by the flash operation scheduler 110 is updated in the input / output stream, the virtual time is updated using the updated input / output stream and the nominal service time Output stream having the minimum virtual time by comparing the virtual time between the input and output streams calculated in the time, extracts the first operation from the operation queue of the detected input / output stream, and outputs the start queue of the flash chip 220 the scheduling can be re-executed by inserting it into an initiation queue (IQ).

본 발명의 일 실시예에 따른 플래시 연산 스케줄러(110)는 다중 자원인 멀티칩 플래시를 활용하여 스케줄링을 수행할 수 있다.The flash operation scheduler 110 according to an exemplary embodiment of the present invention can perform scheduling using multi-chip flash, which is a multi-resource.

구체적으로, 플래시 연산 스케줄러(110)는 상술한 바와 같이, 복수 개의 입출력 스트림에 대해 명목 서비스 시간을 적용하여 각각의 입출력 스트림에 대한 가상 시간을 산출하고, 산출한 가상 시간을 비교하여 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 검출한 입출력 스트림에 대한 플래시 연산이 실행될 수 있도록 검출한 입출력 스트림에서 플래시 연산을 추출하여 상기 플래시 연산이 할당된 플래시 칩(220)의 개시 큐(initiation queue; IQ)에 삽입할 수 있다. 이때, 상기 플래시 연산이 할당된 플래시 칩(220)에서 상기 플래시 연산이 실행되는 도중 상기 입출력 스트림에 새로운 입출력 요청이 들어오면, 플래시 제어 하드웨어(200) 내부에 구비된 다른 플래시 칩(220)을 활용할 수 있다. 플래시 연산 스케줄러(110)는 상기 플래시 연산이 할당된 플래시 칩(220)에서 상기 플래시 연산이 실행되는 도중 상기 입출력 스트림에 새로운 입출력 요청이 들어오면, 상기 플래시 연산이 할당된 플래시 칩(220)과 다른 플래시 칩(220)의 개시 큐(initiation queue; IQ)에 새로운 플래시 연산을 삽입할 수 있다. 이에 따라, 플래시 연산 스케줄러(110)는 특정 입출력 스트림에 대한 플래시 연산을 수행하는 중 새로운 플래시 연산을 입력되면 플래시 제어 하드웨어(200) 내부에 구비되어 있는 다른 플래시 칩(220)에 할당함으로써 다중 자원을 활용할 수 있다.Specifically, the flash operation scheduler 110 calculates a virtual time for each input / output stream by applying a nominal service time to a plurality of input / output streams, and compares the calculated virtual time to obtain a minimum virtual time And extracts the flash operation from the input / output stream detected so that the flash operation for the detected input / output stream can be executed, and outputs the extracted flash operation to the initiation queue (IQ) of the flash chip 220 to which the flash operation is allocated Can be inserted. At this time, when a new input / output request is input to the input / output stream while the flash operation is performed in the flash chip 220 to which the flash operation is allocated, another flash chip 220 provided in the flash control hardware 200 is utilized . When a new input / output request is input to the input / output stream during execution of the flash operation on the flash chip 220 to which the flash operation is allocated, the flash operation scheduler 110 performs a flash operation on the flash chip 220 A new flash operation can be inserted into the initiation queue IQ of the flash chip 220. [ Accordingly, when the flash operation scheduler 110 receives a new flash operation while performing a flash operation on a specific input / output stream, the flash operation scheduler 110 allocates multiple resources to another flash chip 220 provided in the flash control hardware 200 Can be utilized.

플래시 제어 하드웨어(200)는 플래시 제어기(Flash Controller, 210)와 다수의 낸드(NAND) 플래시 칩(220)들과 각 칩들을 연결하는 하나의 공유 채널 또는 칩 별 전담 채널로 구성될 수 있다.The flash control hardware 200 may be composed of one shared channel or a dedicated channel for each chip connecting the flash controller 210 and the plurality of NAND flash chips 220 with each chip.

플래시 제어기(210)는 플래시 연산 스케줄러(110)에 의해 개시 큐(initiation queue; IQ)에 연산이 삽입되면, 읽기, 쓰기, 지우기 연산 중 개시 큐(initiation queue; IQ)에 삽입된 플래시 연산에 해당하는 연산을 처리할 수 있다.The flash controller 210 determines whether a flash operation is inserted into an initiation queue IQ during a read, write, or erase operation when an operation is inserted into the initiation queue IQ by the flash operation scheduler 110 Can be processed.

구체적으로, 플래시 제어기(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 flash operation scheduler 110, the flash controller 210 sets an operation corresponding to the operation inserted in the initiation queue (IQ) Lt; / RTI > algorithm. When the execution of the operation is completed according to the controller algorithm set in advance in the flash controller 210, an operation termination event can be inserted into the completion queue (CQ). At this time, the completion queue (CQ) is provided for each of the plurality of flash chips 220 provided in the flash control hardware 200, and may be provided in pairs with an initiation queue (IQ).

도 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 flash chips Chip 0 and Chip 1.

도 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 chip 0, an operation for stream B arrives at 20us, an operation for stream A is 10us, an operation for stream B This arrives at 200us. In FIG. 2, arrows indicate the arrival time of each input / output stream, and the numbers in parentheses may indicate arrival time.

도 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 chip 0, an operation for stream B reaches 20us, an operation for stream A is 10us and an operation for stream B is performed at chip 1 In case of stream A with arrival time of 0us on chip 0, actual service time is 100us when actual operation is performed on chip 0, and actual operation on chip 0 when stream B with arrival time 20us is on chip 0 The actual service time is 80us. In case of stream A with arrival time 120us on chip 0, the actual service time is 90us when the actual operation is performed on chip 0, and the stream A having the arrival time of 10us on chip 1 The actual service time is 110us when the actual operation is performed on chip 1, and the actual service time is 90us when the actual operation is performed on chip 1 for stream B with arrival time of 200us on chip 1 .

도 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에 대한 가중치(

Figure 112015002925941-pat00013
)는 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 (chip 0, chip 1), considering only a page read operation, a nominal service time is 100 us, and an actual service time is 80 to 120 us And the weights for the specific input / output streams A and B
Figure 112015002925941-pat00013
) Is 1, the flash operation for stream A can be inserted into chip 0 when the arrival time is 0us. Since the actual service time can not be known when the arrival time is 0us, the virtual time can be calculated by applying the nominal service time to Equation (1). At this time, the virtual time for the stream A is calculated as 100us, and the stream A shows that the virtual time is accumulated by the calculated virtual time, the state is the BUSY state, and the state of the stream B is still the IDLE state.

도착 시간이 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 chip 0 for the operation with arrival time 0us, the flash operation for the arrival time of 10us can be inserted into the initiation queue (IQ) of chip 1. [ Since the actual service time is not known when the arrival time is 10us, the virtual time can be calculated by applying the nominal service time to Equation (1). At this time, virtual time for stream A is calculated as 100us, and stream A shows accumulation of virtual time in chip 0 and chip 1. At this time, the state of the stream A is in the BUSY state, and the state of the stream B is still in the IDLE state.

도착 시간이 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 chip 0. Since the actual service time is not known when the arrival time is 20us, the virtual time can be calculated by applying the nominal service time to Equation (1). At this time, the state of stream B is changed from IDLE to BUSY. Since the system virtual time observed at arrival time is the virtual time of stream A, the virtual start time of stream B is accumulated from the virtual time value of stream A. see. Since the virtual time for stream B is calculated as 100us, the accumulated virtual time for stream B when the arrival time is 20us is 300us.

도착 시간이 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 chip 0 in the stream A at the same time (arrival time is 120us), a nominal service The virtual time calculated using the time, 100us, can be accumulated. At this time, the state of the stream A becomes the BUSY state, and the state of the stream B is the BUSY state.

도착 시간이 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 chip 1. Since the actual service time can not be known when the arrival time is 200us, the nominal service time can be applied to Equation (1) to calculate the virtual time. At this time, since the system virtual time observed at the arrival time is the virtual time of the stream A, the virtual start time of the stream B is accumulated from the virtual time value of the stream A. Since the virtual time for stream B is calculated as 100us, the cumulative virtual time for stream B when the arrival time is 200us is 410us.

도착 시간이 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 flash operation 315.

이때, 스트림 큐는 호스트 운영체제에 의해 실시간 멀티칩 플래시 저장장치 내부에 생성되며, 복수 개의 입출력 스트림에 도착하는 입출력 요청을 도착한 순서에 따라 적재할 수 있다.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 340 and the operation inserted into the initiation queue IQ through the flash controller 210 is executed according to a predetermined controller algorithm (345).

이때, 개시 큐(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.
삭제delete 제 1 항에 있어서,
상기 플래시 연산 스케줄러는,
상기 플래시 제어 하드웨어에 의해 상기 플래시 칩의 만료 큐에 상기 연산 종료 사건이 삽입되면 상기 연산 종료 사건을 통해 해당 입출력 스트림의 입출력 요청에 대한 실제 서비스 시간이 인식되고, 미리 정해진 연산 규칙에 상기 실제 서비스 시간을 적용하여 해당 입출력 스트림에 대한 가상 시간을 보정하는 것을 더 포함하는 실시간 멀티칩 플래시 저장장치.
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.
제 3 항에 있어서,
상기 플래시 연산 스케줄러는,
상기 실제 서비스 시간을 이용하여 해당 입출력 스트림에 대한 가상 시간이 보정되면, 가상 시간이 보정된 입출력 스트림을 포함하는 복수 개의 입출력 스트림에 대해 스케줄링을 수행하는 실시간 멀티칩 플래시 저장장치.
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.
제 4 항에 있어서,
상기 플래시 연산 스케줄러는,
상기 가상 시간이 보정된 입출력 스트림을 포함하는 복수 개의 입출력 스트림에 대해 가상 시간을 비교하여 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 상기 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 스케줄링을 수행하는 실시간 멀티칩 플래시 저장장치.
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.
삭제delete 복수 개의 입출력 스트림에 도착하는 입출력 요청이 삽입되어 있는 스트림 큐에서 입출력 요청을 추출하여 플래시 연산으로 변환하고, 상기 플래시 연산을 상기 복수 개의 입출력 스트림마다 마련되어 있는 연산 큐에 삽입하고, 상기 복수 개의 입출력 스트림마다 입출력 스트림에 대한 가상 시간을 산출하고, 상기 산출한 가상 시간에 따라 스케줄링을 수행할 수 있도록 상기 산출한 가상 시간을 비교하여 상기 복수 개의 입출력 스트림 중 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 상기 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 해당 플래시 연산이 할당된 플래시 칩의 개시 큐에 삽입하고,
상기 플래시 칩의 개시 큐에 삽입된 플래시 연산을 미리 설정된 제어기 알고리즘에 따라 실행하고, 상기 개시 큐에 삽입된 플래시 연산의 실행이 종료되면 연산 종료 사건을 상기 플래시 칩의 만료 큐에 삽입하되,
상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산이 할당된 플래시 칩에서 연산이 실행되는 중 상기 입출력 스트림에 새로운 입출력 요청이 들어오면, 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산이 할당된 플래시 칩과 다른 플래시 칩의 개시 큐에 상기 새로운 입출력 요청에 대한 플래시 연산을 삽입하여 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산을 실행하는 동시에 상기 새로운 입출력 요청에 대한 플래시 연산을 실행하는 것을 특징으로 하는 실시간 멀티칩 플래시 저장방법.
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.
제 7 항에 있어서,
상기 플래시 칩의 만료 큐에 연산 종료 사건이 삽입되면 상기 연산 종료 사건을 통해 해당 입출력 스트림의 입출력 요청에 대한 실제 서비스 시간이 인식되고, 미리 정해진 연산 규칙에 상기 실제 서비스 시간을 적용하여 해당 입출력 스트림에 대한 가상 시간을 보정하는 것을 더 포함하는 실시간 멀티칩 플래시 저장방법.
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.
제 8 항에 있어서,
상기 실제 서비스 시간을 이용하여 해당 입출력 스트림에 대한 가상 시간이 보정되면, 가상 시간이 보정된 입출력 스트림을 포함하는 복수 개의 입출력 스트림에 대해 가상 시간을 비교하여 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 상기 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 스케줄링을 수행하는 것을 더 포함하는 실시간 멀티칩 플래시 저장방법.
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.
삭제delete
KR1020150004230A 2014-11-27 2015-01-12 Apparatus and method for real-time multi-chip flash storage KR101655008B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
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