KR20160063954A - 실시간 멀티칩 플래시 저장장치 및 그 방법 - Google Patents
실시간 멀티칩 플래시 저장장치 및 그 방법 Download PDFInfo
- Publication number
- KR20160063954A KR20160063954A KR1020150004230A KR20150004230A KR20160063954A KR 20160063954 A KR20160063954 A KR 20160063954A KR 1020150004230 A KR1020150004230 A KR 1020150004230A KR 20150004230 A KR20150004230 A KR 20150004230A KR 20160063954 A KR20160063954 A KR 20160063954A
- Authority
- KR
- South Korea
- Prior art keywords
- input
- flash
- 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
실시간 멀티칩 플래시 저장장치 및 그 방법이 개시된다.
실시간 멀티칩 플래시 저장장치는 플래시 변환 계층 및 플래시 제어 하드웨어로 구성되며, 플래시 변환 계층은 플래시 제어 스케줄러를 구비하며, 플래시 제어 스케줄러는 각각의 입출력 스트림에 대한 실제 서비스 시간을 알 수 없는 상황에서 스케줄링을 수행하기 위해, 임의의 명목 서비스 시간을 이용하여 각각의 입출력 스트림에 대한 요청 예상 처리 시간인 가상 시간을 산출하고, 산출한 가상 시간을 이용하여 스케줄링을 수행하되, 추후에 실제 서비스 시간이 인식되면 실제 서비스 시간을 이용하여 가상 시간을 보정하고, 보정한 가상 시간을 이용하여 스케줄링을 수행한다.
실시간 멀티칩 플래시 저장장치는 플래시 변환 계층 및 플래시 제어 하드웨어로 구성되며, 플래시 변환 계층은 플래시 제어 스케줄러를 구비하며, 플래시 제어 스케줄러는 각각의 입출력 스트림에 대한 실제 서비스 시간을 알 수 없는 상황에서 스케줄링을 수행하기 위해, 임의의 명목 서비스 시간을 이용하여 각각의 입출력 스트림에 대한 요청 예상 처리 시간인 가상 시간을 산출하고, 산출한 가상 시간을 이용하여 스케줄링을 수행하되, 추후에 실제 서비스 시간이 인식되면 실제 서비스 시간을 이용하여 가상 시간을 보정하고, 보정한 가상 시간을 이용하여 스케줄링을 수행한다.
Description
본 발명은 실시간 멀티칩 플래시 저장장치 및 그 방법에 관한 것으로서, 보다 상세하게는 공정 지분 스케줄링 또는 비례 지분 스케줄링을 수행하는 실시간 멀티칩 플래시 저장장치 및 그 방법에 관한 것이다.
스마트 폰과 SNS의 활성화로 인해 콘텐츠 생산 속도가 폭발적으로 증가하여 데이터를 저장하는 대용량 저장장치에 대한 관심 및 연구가 증가하고 있다.
이러한 대용량 저장장치에 대한 기술의 발전으로 인해 오랜 세월 동안 컴퓨터 보조기억장치로 줄곧 사용해 오던 하드디스크의 자리를 플래시 저장장치가 점차 대신하고 있다.
플래시 저장장치는 하드디스크와 달리 읽기, 쓰기, 지우기 연산 각각의 수행 속도가 다르다는 특성을 가지고 있어 호스트로부터 요구된 데이터 명령을 연연하게 대응할 수 없다는 단점이 있다. 이러한 단점을 보안하기 위해 읽기, 쓰기, 지우기 연산에 대한 명령이 플래시 저장장치의 특성에 유연하게 대응할 수 있게 해주는 플래시 변환 계층에 대한 연구가 활발히 진행되고 있다.
그러나, 종래의 플래시 변환 계층에 대한 연구는 싱글칩 플래시 저장장치에 한정되거나, 멀티칩이라도 슈퍼 페이지로 구성되는 논리적인 싱글칩으로 모델링하는 경우에 한정되는 경우가 대부분이었다. 또한, 이러한 연구는 무효 페이지 수집 작업이 불규칙하게 수행되는 경우, 응용 프로그램의 저장장치 응답시간을 예측하기 어렵다는 단점이 있다.
또한, 종래의 플래시 저장장치는 단일 자원을 대상으로 개발되었기 때문에 하나의 입출력 요청을 해당 자원에 할당한 후 서비스가 종료될 때까지 다른 요청을 추가로 할당하지 못하여, 가변 용량 또는 대역폭을 가진 다중 자원에 적용할 때 하나의 자원만을 활용하고 나머지 자원을 활용하기 못하는 문제점이 있다.
따라서, 다중 자원에 적용할 수 있는 공정 지분 스케줄링을 수행하며, 응용 프로그램의 저장장치 응답시간을 예측할 수 있는 실시간 멀티칩 플래시 저장장치가 필요한 상황이다.
본 발명의 일측면은 다중 자원인 멀티칩 플래시의 병렬성을 극대화하고, 저장장치의 응답 시간을 예측할 수 있도록 임의의 명목 서비스 시간을 이용하여 각각의 입출력 스트림에 대한 처리 예상 시간인 가상 시간을 산출하고, 산출한 가상 시간에 따라 스케줄링을 수행하는 실시간 멀티칩 플래시 저장장치 및 그 방법을 제공한다.
본 발명의 일측면에 따른 실시간 멀티칩 플래시 저장장치는, 복수 개의 입출력 스트림에 도착하는 입출력 요청이 삽입되어 있는 스트림 큐에서 입출력 요청을 추출하여 플래시 연산으로 변환하고, 상기 플래시 연산을 상기 복수 개의 입출력 스트림마다 마련되어 있는 연산 큐에 삽입하고, 상기 복수 개의 입출력 스트림마다 입출력 스트림에 대한 가상 시간을 산출하고, 상기 산출한 가상 시간에 따라 스케줄링을 수행할 수 있도록 상기 복수 개의 입출력 스트림 중 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 해당 플래시 연산이 할당된 플래시 칩의 개시 큐에 삽입하는 플래시 변환 계층 및 복수 개의 플래시 칩들과, 상기 플래시 칩의 개시 큐에 삽입된 플래시 연산을 미리 설정된 제어기 알고리즘에 따라 실행하고, 상기 개시 큐에 삽입된 플래시 연산의 실행이 종료되면 연산 종료 사건을 상기 플래시 칩의 만료 큐에 삽입하는 플래시 제어기를 구비한 플래시 제어 하드웨어를 포함한다.
상기 플래시 변환 계층은, 상기 복수 개의 입출력 스트림에 대한 임의의 명목 서비스 시간을 미리 정해진 연산 규칙에 적용하여 상기 복수 개의 입출력 스트림에 대한 가상 시간을 산출하고, 상기 산출한 가상 시간을 비교하여 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 상기 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 상기 개시 큐에 삽입하는 플래시 연산 스케줄러를 구비할 수 있다.
상기 플래시 연산 스케줄러는, 상기 플래시 제어 하드웨어에 의해 상기 플래시 칩의 만료 큐에 연산 종료 사건이 삽입되면 상기 연산 종료 사건을 통해 해당 입출력 스트림의 입출력 요청에 대한 실제 서비스 시간이 인식되고, 미리 정해진 연산 규칙에 상기 실제 서비스 시간을 적용하여 해당 입출력 스트림에 대한 가상 시간을 보정할 수 있다.
상기 플래시 연산 스케줄러는, 상기 실제 서비스 시간을 이용하여 해당 입출력 스트림에 대한 가상 시간이 보정되면, 가상 시간이 보정된 입출력 스트림을 포함하는 복수 개의 입출력 스트림에 대해 스케줄링을 수행할 수 있다.
상기 플래시 연산 스케줄러는, 상기 가상 시간이 보정된 입출력 스트림을 포함하는 복수 개의 입출력 스트림에 대해 가상 시간을 비교하여 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 상기 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 스케줄링을 수행할 수 있다.
상기 플래시 연산 스케줄러는, 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산이 할당된 플래시 칩에서 연산이 실행되는 중 상기 입출력 스트림에 새로운 입출력 요청이 들어오면, 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산이 할당된 플래시 칩과 다른 플래시 칩의 개시 큐에 상기 새로운 입출력 요청에 대한 플래시 연산을 삽입하여 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산을 실행하는 동시에 상기 새로운 입출력 요청에 대한 플래시 연산을 실행할 수 있다.
본 발명의 일 실시예에 따른 실시간 멀티칩 플래시 저장방법은, 복수 개의 입출력 스트림에 도착하는 입출력 요청이 삽입되어 있는 스트림 큐에서 입출력 요청을 추출하여 플래시 연산으로 변환하고, 상기 플래시 연산을 상기 복수 개의 입출력 스트림마다 마련되어 있는 연산 큐에 삽입하고, 상기 복수 개의 입출력 스트림마다 입출력 스트림에 대한 가상 시간을 산출하고, 상기 산출한 가상 시간에 따라 스케줄링을 수행할 수 있도록 상기 산출한 가상 시간을 비교하여 상기 복수 개의 입출력 스트림 중 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 상기 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 해당 플래시 연산이 할당된 플래시 칩의 개시 큐에 삽입하고, 상기 플래시 칩의 개시 큐에 삽입된 플래시 연산을 미리 설정된 제어기 알고리즘에 따라 실행하고, 상기 개시 큐에 삽입된 플래시 연산의 실행이 종료되면 연산 종료 사건을 상기 플래시 칩의 만료 큐에 삽입할 수 있다.
상기 플래시 칩의 만료 큐에 연산 종료 사건이 삽입되면 상기 연산 종료 사건을 통해 해당 입출력 스트림의 입출력 요청에 대한 실제 서비스 시간이 인식되고, 미리 정해진 연산 규칙에 상기 실제 서비스 시간을 적용하여 해당 입출력 스트림에 대한 가상 시간을 보정할 수 있다.
상기 실제 서비스 시간을 이용하여 해당 입출력 스트림에 대한 가상 시간이 보정되면, 가상 시간이 보정된 입출력 스트림을 포함하는 복수 개의 입출력 스트림에 대해 가상 시간을 비교하여 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 상기 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 스케줄링을 수행할 수 있다.
상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산이 할당된 플래시 칩에서 연산이 실행되는 중 상기 입출력 스트림에 새로운 입출력 요청이 들어오면, 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산이 할당된 플래시 칩과 다른 플래시 칩의 개시 큐에 상기 새로운 입출력 요청에 대한 플래시 연산을 삽입하여 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산을 실행하는 동시에 상기 새로운 입출력 요청에 대한 플래시 연산을 실행할 수 있다.
상술한 본 발명의 일측면에 따르면, 입출력 스트림에 도착하는 입출력 요청에 대해 실제 서비스 시간을 미리 알 수 없는 상황에서, 임의의 명목 서비스 시간을 이용하여 입출력 스트림에 대한 처리 예상 시간인 가상 시간을 산출하고, 산출한 가상 시간에 따라 스케줄링을 수행함으로써 처리 시간에 따른 공정 지분 스케줄링을 수행할 수 있으며, 저장장치의 응답 시간을 예측할 수 있다.
또한, 명목 서비스 시간을 이용하여 공정 지분 스케줄링을 수행함으로써 플래시 연산 스케줄러를 플래시 제어 하드웨어와 분리하여 구현할 수 있어 플래시 제어 하드웨어의 구조를 단순화 시킬 수 있다.
또한, 명목 서비스 시간을 이용하여 공정 지분 스케줄링을 수행함으로써 다중 자원인 멀티칩 플래시의 병렬성을 극대화 시킬 수 있다.
도 1 은 본 발명의 일 실시예에 따른 실시간 멀티칩 플래시 저장장치의 구성을 나타낸 도면이다.
도 2 는 플래시 칩에 입출력 스트림에 대한 플래시 연산이 도착하는 모습의 일예를 나타낸 도면이다.
도 3 은 도 2 에 도시된 각각의 입출력 스트림에서 요청한 플래시 연산들이 각각의 플래시 칩에서 실제로 수행된 모습을 나타낸 도면이다.
도 4a, 4b 는 특정 입출력 스트림 A, B에 대해 산출 및 보정된 가상 시간이 누적된 모습을 도시한 도면이다.
도 5a, 5b 는 본 발명의 일 실시예에 따른 실시간 멀티칩 플래시 저장방법을 도시한 순서도이다.
도 2 는 플래시 칩에 입출력 스트림에 대한 플래시 연산이 도착하는 모습의 일예를 나타낸 도면이다.
도 3 은 도 2 에 도시된 각각의 입출력 스트림에서 요청한 플래시 연산들이 각각의 플래시 칩에서 실제로 수행된 모습을 나타낸 도면이다.
도 4a, 4b 는 특정 입출력 스트림 A, B에 대해 산출 및 보정된 가상 시간이 누적된 모습을 도시한 도면이다.
도 5a, 5b 는 본 발명의 일 실시예에 따른 실시간 멀티칩 플래시 저장방법을 도시한 순서도이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예와 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
이하, 도면들을 참조하여 본 발명의 바람직한 실시예들을 보다 상세하게 설명하기로 한다.
도 1 은 본 발명의 일 실시예에 따른 실시간 멀티칩 플래시 저장장치의 구성을 나타낸 도면이다.
본 발명의 일 실시예에 따른 실시간 멀티칩 플래시 저장장치는 실제 서비스 시간을 미리 알 수 없는 상황에서, 명목 서비스 시간이라는 개념을 적용하여 병렬 다중 자원인 멀티칩 플래시에 대한 공정 지원 스케줄링을 수행할 수 있으며, 본 발명의 일 실시예에 따른 실시간 멀티칩 플래시 저장장치는 플래시 변환 계층(100) 및 플래시 제어 하드웨어(200)를 포함할 수 있다.
플래시 변환 계층(Flash Translation Layer, 100)은 호스트 운영체제(Host OS)와 플래시 메모리의 사이에 플래시 메모리를 하드 디스크와 같이 에뮬레이션(Emulation) 해주는 기능을 할 수 있다. 플래시 변환 계층(100)은 호스트 운영체제에게 플래시 메모리가 가지고 있는 고유의 특성들을 감추며, 하드 디스크와 동일한 입출력 연산을 수행할 수 있도록 파일 시스템으로부터 전달되는 논리적인 주소를 플래시 메모리의 물리적 주소와 매핑(Mapping)하는 기능을 수행할 수 있다.
본 발명의 일 실시예에 따른 플래시 변환 계층(100)은 호스트 운영체제(Host OS)에 의해 복수 개의 입출력 스트림에 도착하는 입출력 요청이 삽입되어 있는 스트림 큐(stream queue)에서 입출력 요청을 추출할 수 있다. 플래시 변환 계층(100)은 추출한 입출력 요청을 해당 입출력 스트림의 연산 큐(Operation queue)에 삽입할 수 있다. 이때, 연산 큐(Operation queue)는 복수 개의 입출력 스트림마다 대응되게 마련되어 있을 수 있다. 본 발명의 일 실시예에 따른 플래시 변환 계층(100)은 내부에 복수 개의 입출력 요청을 처리하는 순서를 배열하는 플래시 연산 스케줄러(110)를 구비할 수 있다. 본 발명의 일 실시예에 따른 실시간 멀티칩 플래시 저장장치는 플래시 변환 계층(100) 내부에서 플래시 연산 스케줄러(110)를 소프트웨어 형태로 구현함으로써, 원래 플래시 연산 스케줄러(110) 기능이 포함되어야 할 플래시 제어 하드웨어로부터 플래시 연산 스케줄러(110)를 분리할 수 있어 플래시 제어 하드웨어(200)의 구조를 단순화시킬 수 있는 이점이 있다.
플래시 연산 스케줄러(110)는 [수학식 1]를 이용하여 복수 개의 입출력 스트림에 대하여 임의의 명목 서비스 시간(nominal service time)을 적용하여 각각의 입출력 스트림에 대한 가상 시작 시간(virtual start time)과 가상 종료 시간(virtual finish time)을 산출할 수 있다. 이때, 명목 서비스 시간(nominal service time)은 각 입출력 스트림에 도착하는 입출력 요청에 대하여 실제 서비스 시간을 미리 알 수 없는 상황에서, 각 입출력 스트림에 대한 처리 시간 및 실시간 멀티칩 플래시 저장장치의 응답시간을 예측할 수 있도록 하기 위한 것으로, 실시간 멀티칩 플래시 저장장치 제조 시 미리 상수로 정해지거나 해당 연산이 이전에 실행되어 얻어진 실제 서비스 시간(actual service time)들의 평균값으로 정해질 수 있다.
이때, 은 입출력 스트림 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에 대한 가중치를 의미할 수 있다.
이때, 산출한 가상 종료 시간은 입출력 스트림의 입출력 요청을 처리하는데 걸리는 총 소요 시간을 의미할 수 있으므로, 플래시 연산 스케줄러(110)는 산출한 가상 종료 시간을 해당 스트림의 가상 시간으로 정의할 수 있다.
플래시 연산 스케줄러(110)는 모든 입출력 스트림에 대하여 산출한 가상 시간을 비교하여 복수 개의 입출력 스트림 중 최소 가상 시간을 갖는 입출력 스트림을 검출할 수 있다. 플래시 연산 스케줄러(110)는 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에 연산이 삽입된 순서에 따라 연산이 실행될 수 있도록 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 연산을 추출하여 해당 연산이 할당된 플래시 칩(220)의 개시 큐(initiation queue; IQ)에 삽입할 수 있다. 이때, 복수 개의 입출력 스트림 중 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에 삽입되어 있는 연산을 추출하는 것은, 가상 시간이 짧다는 것은 연산을 처리하는데 소요되는 처리 시간이 짧다는 것을 의미하므로, 처리 시간이 짧은 입출력 요청부터 처리함으로써 멀티칩 플래시 저장장치의 평균 응답시간을 단축시키기 위함이다. 한편, 도 1 을 참조하면, 개시 큐(initiation queue; IQ)는 플래시 제어 하드웨어(200) 내부에 마련되어 있는 복수 개의 플래시 칩(220)마다 하나씩 마련되어 있으며, 플래시 변환 계층(100)으로부터 연산이 삽입되면 삽입된 순서에 따라 연산을 적재할 수 있다.
본 발명의 일 실시예에 따른 플래시 연산 스케줄러(110)는 플래시 제어 하드웨어(200)에 의해 개시 큐(initiation queue; IQ)에 삽입된 연산을 실행한 후 만료 큐(completion queue; CQ)에 연산 종료 사건이 삽입되면 삽입된 연산 종료 사건을 통해 입출력 스트림에 대한 가상 시간을 보정할 수 있다.
구체적으로, 플래시 연산 스케줄러(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]에 적용하여 입출력 스트림에 대한 가상 시간을 보정할 수 있다.
이때, 는 입출력 스트림 i의 k번째 요청의 보정된 가상 종료 시간(virtual finish time), 즉 보정된 가상 시간을 의미할 수 있으며, 는 보정되기 전 입출력 스트림 i의 k번째 요청의 가상 시작 시간(virtual start time), 즉 보정되기 전 가상 시간을 의미할 수 있으며, 는 모든 칩에서 입출력 스트림 i의 l번째부터 k번째까지 요청의 연산 종료 사건을 통해 검출된 실제 서비스 시간(actual service time)의 합을 의미할 수 있으며, 역시 모든 칩에서 입출력 스트림 i의 l번째부터 k번째까지의 연산의 명목 서비스 시간(nominal service time)의 합을 의미할 수 있으며, 는 입출력 스트림 i에 대한 가중치를 의미할 수 있다.
플래시 연산 스케줄러(110)는 입출력 스트림에 대한 가상 시간이 보정되면, 해당 입출력 스트림에 대한 가상 시간을 보정한 가상 시간으로 갱신하여 입출력 스트림의 플래시 연산에 대한 처리 순서를 재배열하는 스케줄링을 수행할 수 있다. 이때, 보정된 가상 시간을 이용하여 스케줄링을 재수행하는 것은, 플래시 연산 스케줄러(110)에 의해 보정된 가상 시간이 해당 입출력 스트림에 갱신되면, 가상 시간이 갱신된 입출력 스트림과 명목 서비스 시간을 이용하여 가상 시간이 산출된 입출력 스트림 간에 가상 시간을 비교하여 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 검출한 입출력 스트림의 연산 큐에서 첫 번째 연산을 추출하여 해당 연산이 할당된 플래시 칩(220)의 개시 큐(initiation queue; IQ)에 삽입함으로써 스케줄링을 재수행할 수 있다.
본 발명의 일 실시예에 따른 플래시 연산 스케줄러(110)는 다중 자원인 멀티칩 플래시를 활용하여 스케줄링을 수행할 수 있다.
구체적으로, 플래시 연산 스케줄러(110)는 상술한 바와 같이, 복수 개의 입출력 스트림에 대해 명목 서비스 시간을 적용하여 각각의 입출력 스트림에 대한 가상 시간을 산출하고, 산출한 가상 시간을 비교하여 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 검출한 입출력 스트림에 대한 플래시 연산이 실행될 수 있도록 검출한 입출력 스트림에서 플래시 연산을 추출하여 상기 플래시 연산이 할당된 플래시 칩(220)의 개시 큐(initiation queue; IQ)에 삽입할 수 있다. 이때, 상기 플래시 연산이 할당된 플래시 칩(220)에서 상기 플래시 연산이 실행되는 도중 상기 입출력 스트림에 새로운 입출력 요청이 들어오면, 플래시 제어 하드웨어(200) 내부에 구비된 다른 플래시 칩(220)을 활용할 수 있다. 플래시 연산 스케줄러(110)는 상기 플래시 연산이 할당된 플래시 칩(220)에서 상기 플래시 연산이 실행되는 도중 상기 입출력 스트림에 새로운 입출력 요청이 들어오면, 상기 플래시 연산이 할당된 플래시 칩(220)과 다른 플래시 칩(220)의 개시 큐(initiation queue; IQ)에 새로운 플래시 연산을 삽입할 수 있다. 이에 따라, 플래시 연산 스케줄러(110)는 특정 입출력 스트림에 대한 플래시 연산을 수행하는 중 새로운 플래시 연산을 입력되면 플래시 제어 하드웨어(200) 내부에 구비되어 있는 다른 플래시 칩(220)에 할당함으로써 다중 자원을 활용할 수 있다.
플래시 제어 하드웨어(200)는 플래시 제어기(Flash Controller, 210)와 다수의 낸드(NAND) 플래시 칩(220)들과 각 칩들을 연결하는 하나의 공유 채널 또는 칩 별 전담 채널로 구성될 수 있다.
플래시 제어기(210)는 플래시 연산 스케줄러(110)에 의해 개시 큐(initiation queue; IQ)에 연산이 삽입되면, 읽기, 쓰기, 지우기 연산 중 개시 큐(initiation queue; IQ)에 삽입된 플래시 연산에 해당하는 연산을 처리할 수 있다.
구체적으로, 플래시 제어기(210)는 플래시 연산 스케줄러(110)에 의해 개시 큐(initiation queue; IQ)에 연산이 삽입되면, 개시 큐(initiation queue; IQ)에 삽입된 연산에 해당하는 연산을 미리 설정되어 있는 제어기 알고리즘에 따라 실행할 수 있다. 플래시 제어기(210)를 미리 설정되어 있는 제어기 알고리즘에 따라 연산의 실행이 종료되면, 만료 큐(completion queue; CQ)에 연산 종료 사건을 삽입할 수 있다. 이때, 만료 큐(completion queue; CQ)는 플래시 제어 하드웨어(200)에 구비된 복수 개의 플래시 칩(220)마다 구비되어 있는 큐로, 개시 큐(initiation queue; IQ)와 쌍으로 구비되어 있을 수 있다.
도 2 는 2개의 플래시 칩 chip 0, chip 1에 특정 입출력 스트림 A, B에 대한 플래시 연산이 도착하는 모습을 도시한 도면이다.
도 2 를 참조하면, chip 0로 스트림 A에 대한 연산이 0us, 120us에 도착하고, 스트림 B에 대한 연산이 20us에 도착하고, chip 1로 스트림 A에 대한 연산이 10us에, 스트림 B에 대한 연산이 200us에 도착한다. 이때, 도 2 에서 각각의 입출력 스트림에 대한 연산이 도착하는 시점을 화살표로 표시하였으며, 괄호 안의 숫자는 도착 시간을 의미할 수 있다.
도 3 은 도 2 에 도시된 각각의 입출력 스트림에서 요청한 플래시 연산들이 각각의 플래시 칩에서 실제로 수행된 모습을 나타낸 도면이다.
도 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일 수 있다.
도 4a, 4b 는 특정 입출력 스트림 A, B에 대해 산출 및 보정된 가상 시간이 누적된 모습을 도시한 도면이다.
도 4a 를 참조하면, 실시간 멀티칩 플래시 저장장치는 2개의 플래시 칩(chip 0, chip 1)으로 구성되며, 페이지 읽기 연산만을 고려하고, 명목 서비스 시간은 100us이며, 실제 서비스 시간이 80~120us 구간에서 변할 수 있으며, 특정 입출력 스트림 A, B에 대한 가중치()는 1이라 가정하였을 때, 도착 시간이 0us인 경우 스트림 A에 대한 플래시 연산이 chip 0에 삽입될 수 있다. 도착 시간이 0us인 경우 실제 서비스 시간을 알 수 없으므로 명목 서비스 시간을 [수학식 1]에 적용하여 가상 시간을 산출할 수 있다. 이때, 스트림 A에 대한 가상 시간은 100us로 산출되며, 스트림 A는 산출한 가상 시간만큼 가상 시간이 누적됨을 보이며, 상태는 BUSY 상태가 되고, 스트림 B의 상태는 아직 IDLE 상태임을 보인다.
도착 시간이 10us인 경우, 도착 시간이 0us인 연산에 대해 chip 0에서 실행 중 이므로, 도착 시간이 10us에 대한 플래시 연산이 chip 1의 개시 큐(initiation queue; IQ)에 삽입될 수 있다. 도착 시간이 10us인 경우 실제 서비스 시간을 알 수 없으므로 명목 서비스 시간을 [수학식 1]에 적용하여 가상 시간을 산출할 수 있다. 이때 스트림 A에 대한 가상 시간은 100us로 산출되며, 스트림 A는 chip 0 및 chip 1에서의 가상 시간이 누적됨을 보인다. 이때, 스트림 A의 상태는 BUSY 상태가 되고, 스트림 B의 상태는 아직 IDLE 상태임을 보인다.
도착 시간이 20us인 경우, 스트림 B에 대한 연산이 chip 0의 개시 큐(initiation queue; IQ)에 삽입될 수 있다. 도착 시간이 20us인 경우 실제 서비스 시간을 알 수 없으므로 명목 서비스 시간을 [수학식 1]에 적용하여 가상 시간을 산출할 수 있다. 이때 스트림 B의 상태는 IDLE에서 BUSY로 전환되며, 도착 시간에 관찰된 시스템 가상 시간(system virtual time)은 스트림 A의 가상 시간이기 때문에 스트림 B의 가상 시작 시간은 스트림 A의 가상 시간 값부터 누적됨을 보인다. 또한, 스트림 B에 대한 가상 시간은 100us로 산출되므로, 도착 시간이 20us인 경우의 스트림 B에 대한 누적 가상 시간은 300us가 됨을 보인다.
도착 시간이 100us인 경우, 스트림 A에서 도착 시간이 0us였던 플래시 연산의 수행이 완료된다. 이에 따라, 도착 시간이 0us였을 때의 명목 서비스 시간을 이용하여 산출한 가상 시간 값을 실제 서비스 시간 값을 이용하여 보정할 수 있다. 이때, 도 3 을 참조하면 도착 시간이 0us였을 때의 실제 서비스 시간은 100us로 검출되므로, 도착 시간이 100us인 경우의 스트림 A에 대한 가상 시간은 보정될 수 있으며, 보정된 가상 시간인 100us(= 200 + (100-100))으로 산출될 수 있다. 이에 따라, 도착 시간 100us인 경우의 스트림 A의 가상 시간 값의 변동은 발생하지 않는다.
도착 시간이 120us인 경우, 스트림 A에서 도착 시간이 10us였던 플래시 연산의 수행이 완료된다. 이에 따라, 도착 시간이 10us였을 때의 명목 서비스 시간을 이용하여 산출한 가상 시간 값을 실제 서비스 시간 값을 이용하여 보정할 수 있다. 이때, 도 3 을 참조하면 도착 시간이 10us였을 때의 실제 서비스 시간은 110us로 검출되므로, 도착 시간이 120us인 경우의 스트림 A에 대한 가상 시간은 보정될 수 있으며, 실제 서비스 시간을 이용한 보정으로 스트림 A에 대한 가상 시간은 200us에서 210us(= 200 + (110-100))로 보정될 수 있다.
도 4b 를 참조하면, 같은 시간(도착 시간이 120us)에 스트림 A에서 플래시 연산이 chip 0의 개시 큐(initiation queue; IQ)에 삽입되기 때문에, 스트림 A의 가상 시간에 해당 플래시 연산에 대한 명목 서비스 시간을 이용하여 산출된 가상 시간인 100us가 누적될 수 있다. 이때, 스트림 A의 상태는 BUSY 상태가 되고, 스트림 B의 상태는 BUSY 상태임을 보인다.
도착 시간이 180us인 경우, 스트림 B에서 도착 시간이 20us였던 플래시 연상의 수행이 완료된다. 이에 따라, 도착 시간이 20us였을 때의 명목 서비스 시간을 이용하여 산출한 가상 시간 값을 실제 서비스 시간 값을 이용하여 보정할 수 있다. 이때, 도 3 을 참조하면 도착 시간이 20us였을 때의 실제 서비스 시간은 80us로 검출되므로, 도착 시간이 180us인 경우의 스트림 B에 대한 가상 시간은 보정될 수 있으며, 실제 서비스 시간을 이용한 보정으로 스트림 B에 대한 가상 시간은 300us에서 280us(= 300 + (80-100))로 보정될 수 있다. 이때, 스트림 A의 상태는 BUSY 상태가 되고, 스트림 B의 상태는 IDLE 상태임을 보인다.
도착 시간이 200us인 경우, 스트림 B에 대한 플래시 연산이 chip 1의 개시 큐(initiation queue; IQ)에 삽입될 수 있다. 도착 시간이 200us인 경우 실제 서비스 시간을 알 수 없으므로 명목 서비스 시간을 [수학식 1]에 적용하여 가상 시간을 산출할 수 있다. 이때, 도착 시간에 관찰된 시스템 가상 시간(system virtual time)은 스트림 A의 가상 시간이기 때문에 스트림 B의 가상 시작 시간은 스트림 A의 가상 시간 값부터 누적됨을 보인다. 스트림 B에 대한 가상 시간은 100us로 산출되므로, 도착 시간이 200us인 경우의 스트림 B에 대한 누적 가상 시간은 410us가 됨을 보인다.
도착 시간이 270us인 경우, 스트림 A에서 도착 시간이 120us였던 플래시 연산의 수행이 완료된다. 이에 따라, 도착 시간이 120us였을 때의 명목 서비스 시간을 이용하여 산출한 가상 시간 값을 실제 서비스 시간 값을 이용하여 보정할 수 있다. 이때, 도착 시간이 120us였을 때의 실제 서비스 시간은 90us로 검출되므로, 도착 시간이 270us인 경우의 스트림 A에 대한 가상 시간은 보정될 수 있으며, 실제 서비스 시간을 이용한 보정으로 스트림 A에 대한 가상 시간은 310us에서 300us(= 310 + (90-100))로 보정될 수 있다. 이때, 스트림 A는 수행 중인 플래시 연산이 없기 때문에 스트림 A의 상태는 BUSY에서 IDLE 상태로 전환되고, 스트림 B의 상태는 BUSY 상태임을 보인다.
도착 시간이 290us인 경우, 스트림 B에서 도착 시간이 200us였던 플래시 연산의 수행이 완료된다. 이에 따라, 도착 시간이 200us였을 때의 명목 서비스 시간을 이용하여 산출한 가상 시간 값을 실제 서비스 시간 값을 이용하여 보정할 수 있다. 이때, 도착 시간이 200us였을 때의 실제 서비스 시간은 90us로 검출되므로, 도착 시간이 290us인 경우의 스트림 B에 대한 가상 시간은 보정될 수 있으며, 실제 서비스 시간을 이용한 보정으로 스트림 B에 대한 가상 시간은 410us에서 400us(= 410 + (90-100))로 보정될 수 있다. 이때, 스트림 A, B는 수행 중인 플래시 연산이 없기 때문에 스트림 A, B의 상태는 IDLE 상태임을 보인다.
아래에서는, 도 5a, 5b 를 통하여 본 발명의 일 실시예에 따른 멀티칩 플래시 저장방법에 대해 설명한다.
도 5a 를 참조하면, 복수 개의 입출력 스트림에 도착하는 입출력 요청이 삽입되어 있는 스트림 큐(stream queue)에서 입출력 요청을 추출(310)하고, 추출한 입출력 요청을 플래시 연산으로 변환한다(315).
이때, 스트림 큐는 호스트 운영체제에 의해 실시간 멀티칩 플래시 저장장치 내부에 생성되며, 복수 개의 입출력 스트림에 도착하는 입출력 요청을 도착한 순서에 따라 적재할 수 있다.
변환한 플래시 연산을 복수 개의 입출력 스트림 중 해당 입출력 스트림의 연산 큐에 삽입(320)하고, 변환한 플래시 연산이 삽입된 각각의 입출력 스트림에 대한 가상 시간을 산출한다(325).
이때, 각각의 입출력 스트림에 대한 가상 시간을 산출하는 것은 [수학식 1]을 이용하여 산출할 수 있으며, 가상 종료 시간이 각각의 입출력 스트림에 대한 가상 시간이 될 수 있다.
산출한 가상 시간을 비교하여 복수 개의 입출력 스트림 중 최소 가상 시간을 갖는 입출력 스트림을 검출(330)하고, 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에 삽입되어 있는 연산 중 첫번째 연산을 추출한다(335).
이때, 복수 개의 입출력 스트림 중 최소 가상 시간을 갖는 입출력 스트림을 검출하는 것은, 가상 시간이 짧다는 것은 연산을 처리하는데 소요되는 처리 시간이 짧다는 것을 의미하므로, 처리 시간이 짧은 입출력 요청부터 처리함으로써 멀티칩 플래시 저장장치의 평균 응답시간을 단축시키기 위함이다. 또한, 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에 삽입되어 있는 연산 중 첫번째 연산을 추출하는 것은, 입출력 스트림의 연산 큐에 삽입된 순서에 따라 연산을 처리하기 위함이다.
추출한 연산을 추출한 연산이 할당된 개시 큐(initiation queue; IQ)에 삽입(340)하고, 플래시 제어기(210)를 통해 개시 큐(initiation queue; IQ)에 삽입한 연산을 미리 정해진 제어기 알고리즘에 따라 실행한다(345).
이때, 개시 큐(initiation queue; IQ)에 삽입한 연산이 종료되면(350), 개시 큐(initiation queue; IQ)와 쌍을 이루는(개시 큐(initiation queue; IQ)와 동일한 플래시 칩(220)에 연결된) 만료 큐(completion queue; CQ)에 연산 종료 사건을 삽입(355)하고, 개시 큐(initiation queue; IQ)에 삽입한 연산이 종료되지 않으면(350), 345 단계로 돌아간다.
도 5b 를 참조하면, 연산 종료 사건이 삽입된 입출력 스트림에 대한 실제 서비스 시간 검출한다(410).
이때, 연산 종료 사건이 삽입된 입출력 스트림에 대한 실제 서비스 시간 검출하는 것은, 개시 큐(initiation queue; IQ)에 연산을 삽입한 후로부터 만료 큐(completion queue; CQ)에 연산 종료 사건이 삽입된 때까지의 시간을 검출함으로써 개시 큐(initiation queue; IQ)에 삽입했던 연산에 대한 실제 서비스 시간을 검출할 수 있다.
검출된 실제 서비스 시간을 [수학식 2]에 적용하여 가상 시간 보정(420)하고, 보정된 가상 시간을 반영하여 공정 지분 스케줄링이 수행될 수 있도록 보정한 가상 시간을 이용하여 입출력 스트림에 대한 스케줄링을 재수행한다(430).
이와 같은, 다중 자원인 멀티칩에 대해 공정 지원 스케줄링을 수행하는 기술은 애플리케이션으로 구현되거나 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다.
상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거니와 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD 와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.
프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드 뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서는 실시예들을 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 플래시 변환 계층
110: 플래시 연산 스케줄러
200: 플래시 제어 하드웨어
210: 플래시 제어기
110: 플래시 연산 스케줄러
200: 플래시 제어 하드웨어
210: 플래시 제어기
Claims (10)
- 복수 개의 입출력 스트림에 도착하는 입출력 요청이 삽입되어 있는 스트림 큐에서 입출력 요청을 추출하여 플래시 연산으로 변환하고, 상기 플래시 연산을 상기 복수 개의 입출력 스트림마다 마련되어 있는 연산 큐에 삽입하고, 상기 복수 개의 입출력 스트림마다 입출력 스트림에 대한 가상 시간을 산출하고, 상기 산출한 가상 시간에 따라 스케줄링을 수행할 수 있도록 상기 복수 개의 입출력 스트림 중 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 해당 플래시 연산이 할당된 플래시 칩의 개시 큐에 삽입하는 플래시 변환 계층; 및
복수 개의 플래시 칩들과, 상기 플래시 칩의 개시 큐에 삽입된 플래시 연산을 미리 설정된 제어기 알고리즘에 따라 실행하고, 상기 개시 큐에 삽입된 플래시 연산의 실행이 종료되면 연산 종료 사건을 상기 플래시 칩의 만료 큐에 삽입하는 플래시 제어기를 구비한 플래시 제어 하드웨어를 포함하는 실시간 멀티칩 플래시 저장장치. - 제 1 항에 있어서,
상기 플래시 변환 계층은,
상기 복수 개의 입출력 스트림에 대한 임의의 명목 서비스 시간을 미리 정해진 연산 규칙에 적용하여 상기 복수 개의 입출력 스트림에 대한 가상 시간을 산출하고, 상기 산출한 가상 시간을 비교하여 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 상기 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 상기 개시 큐에 삽입하는 플래시 연산 스케줄러를 구비하는 것을 특징으로 하는 실시간 멀티칩 플래시 저장장치. - 제 2 항에 있어서,
상기 플래시 연산 스케줄러는,
상기 플래시 제어 하드웨어에 의해 상기 플래시 칩의 만료 큐에 상기 연산 종료 사건이 삽입되면 상기 연산 종료 사건을 통해 해당 입출력 스트림의 입출력 요청에 대한 실제 서비스 시간이 인식되고, 미리 정해진 연산 규칙에 상기 실제 서비스 시간을 적용하여 해당 입출력 스트림에 대한 가상 시간을 보정하는 것을 더 포함하는 실시간 멀티칩 플래시 저장장치. - 제 3 항에 있어서,
상기 플래시 연산 스케줄러는,
상기 실제 서비스 시간을 이용하여 해당 입출력 스트림에 대한 가상 시간이 보정되면, 가상 시간이 보정된 입출력 스트림을 포함하는 복수 개의 입출력 스트림에 대해 스케줄링을 수행하는 실시간 멀티칩 플래시 저장장치. - 제 4 항에 있어서,
상기 플래시 연산 스케줄러는,
상기 가상 시간이 보정된 입출력 스트림을 포함하는 복수 개의 입출력 스트림에 대해 가상 시간을 비교하여 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 상기 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 스케줄링을 수행하는 실시간 멀티칩 플래시 저장장치. - 제 1 항에 있어서,
상기 플래시 연산 스케줄러는,
상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산이 할당된 플래시 칩에서 연산이 실행되는 중 상기 입출력 스트림에 새로운 입출력 요청이 들어오면, 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산이 할당된 플래시 칩과 다른 플래시 칩의 개시 큐에 상기 새로운 입출력 요청에 대한 플래시 연산을 삽입하여 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산을 실행하는 동시에 상기 새로운 입출력 요청에 대한 플래시 연산을 실행하는 것을 특징으로 하는 실시간 멀티칩 플래시 저장장치. - 복수 개의 입출력 스트림에 도착하는 입출력 요청이 삽입되어 있는 스트림 큐에서 입출력 요청을 추출하여 플래시 연산으로 변환하고, 상기 플래시 연산을 상기 복수 개의 입출력 스트림마다 마련되어 있는 연산 큐에 삽입하고, 상기 복수 개의 입출력 스트림마다 입출력 스트림에 대한 가상 시간을 산출하고, 상기 산출한 가상 시간에 따라 스케줄링을 수행할 수 있도록 상기 산출한 가상 시간을 비교하여 상기 복수 개의 입출력 스트림 중 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 상기 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 해당 플래시 연산이 할당된 플래시 칩의 개시 큐에 삽입하고,
상기 플래시 칩의 개시 큐에 삽입된 플래시 연산을 미리 설정된 제어기 알고리즘에 따라 실행하고, 상기 개시 큐에 삽입된 플래시 연산의 실행이 종료되면 연산 종료 사건을 상기 플래시 칩의 만료 큐에 삽입하는 실시간 멀티칩 플래시 저장방법. - 제 7 항에 있어서,
상기 플래시 칩의 만료 큐에 연산 종료 사건이 삽입되면 상기 연산 종료 사건을 통해 해당 입출력 스트림의 입출력 요청에 대한 실제 서비스 시간이 인식되고, 미리 정해진 연산 규칙에 상기 실제 서비스 시간을 적용하여 해당 입출력 스트림에 대한 가상 시간을 보정하는 것을 더 포함하는 실시간 멀티칩 플래시 저장방법. - 제 8 항에 있어서,
상기 실제 서비스 시간을 이용하여 해당 입출력 스트림에 대한 가상 시간이 보정되면, 가상 시간이 보정된 입출력 스트림을 포함하는 복수 개의 입출력 스트림에 대해 가상 시간을 비교하여 최소 가상 시간을 갖는 입출력 스트림을 검출하고, 상기 최소 가상 시간을 갖는 입출력 스트림의 연산 큐에서 첫 번째 플래시 연산을 추출하여 스케줄링을 수행하는 것을 더 포함하는 실시간 멀티칩 플래시 저장방법. - 제 7 항에 있어서,
상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산이 할당된 플래시 칩에서 연산이 실행되는 중 상기 입출력 스트림에 새로운 입출력 요청이 들어오면, 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산이 할당된 플래시 칩과 다른 플래시 칩의 개시 큐에 상기 새로운 입출력 요청에 대한 플래시 연산을 삽입하여 상기 최소 가상 시간을 갖는 입출력 스트림에 대한 플래시 연산을 실행하는 동시에 상기 새로운 입출력 요청에 대한 플래시 연산을 실행하는 것을 더 포함하는 실시간 멀티칩 플래시 저장방법.
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 true KR20160063954A (ko) | 2016-06-07 |
KR101655008B1 KR101655008B1 (ko) | 2016-09-06 |
Family
ID=56193005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150004230A KR101655008B1 (ko) | 2014-11-27 | 2015-01-12 | 실시간 멀티칩 플래시 저장장치 및 그 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101655008B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018016659A1 (ko) * | 2016-07-18 | 2018-01-25 | 주식회사 파두 | 플래시 스토리지 대역폭의 비례 지분 스케줄링을 위한 방법 및 시스템 |
US10635351B2 (en) | 2017-11-17 | 2020-04-28 | SK Hynix Inc. | Semiconductor device for scheduling tasks for memory device and system including the same |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210082705A (ko) | 2019-12-26 | 2021-07-06 | 삼성전자주식회사 | 미리 정의된 시간을 사용한 스토리지 장치의 작업 스케쥴링 방법 및 이를 이용한 스토리지 시스템의 구동 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090121114A (ko) * | 2008-05-21 | 2009-11-25 | 삼성전자주식회사 | 반도체 디스크 장치 및 그것의 커멘드 스케줄링 방법 |
KR20100040560A (ko) * | 2008-10-10 | 2010-04-20 | 한양대학교 산학협력단 | 완전 연관 섹터 변환 기법을 사용하는 플래시 변환 계층에서 합병연산을 줄이기 위한 멀티 플래시 메모리 관리방법 및 장치 |
KR20140111323A (ko) | 2012-01-05 | 2014-09-18 | 컨버전트 인텔렉츄얼 프로퍼티 매니지먼트 인코포레이티드 | 멀티 칩 패키지 nand 플래시 메모리 시스템에서의 디바이스 선택 방식 |
-
2015
- 2015-01-12 KR KR1020150004230A patent/KR101655008B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090121114A (ko) * | 2008-05-21 | 2009-11-25 | 삼성전자주식회사 | 반도체 디스크 장치 및 그것의 커멘드 스케줄링 방법 |
KR20100040560A (ko) * | 2008-10-10 | 2010-04-20 | 한양대학교 산학협력단 | 완전 연관 섹터 변환 기법을 사용하는 플래시 변환 계층에서 합병연산을 줄이기 위한 멀티 플래시 메모리 관리방법 및 장치 |
KR20140111323A (ko) | 2012-01-05 | 2014-09-18 | 컨버전트 인텔렉츄얼 프로퍼티 매니지먼트 인코포레이티드 | 멀티 칩 패키지 nand 플래시 메모리 시스템에서의 디바이스 선택 방식 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018016659A1 (ko) * | 2016-07-18 | 2018-01-25 | 주식회사 파두 | 플래시 스토리지 대역폭의 비례 지분 스케줄링을 위한 방법 및 시스템 |
US10635351B2 (en) | 2017-11-17 | 2020-04-28 | SK Hynix Inc. | Semiconductor device for scheduling tasks for memory device and system including the same |
Also Published As
Publication number | Publication date |
---|---|
KR101655008B1 (ko) | 2016-09-06 |
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 (ko) | 실시간 멀티칩 플래시 저장장치 및 그 방법 | |
KR102011726B1 (ko) | 동적 로딩 파일 추출 방법 및 장치 | |
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 | |
US9208099B2 (en) | Adjustment of the number of task control blocks allocated for discard scans | |
US20160110209A1 (en) | Apparatus and method for performing multi-core emulation based on multi-threading | |
JP6778130B2 (ja) | 仮想計算機システムおよびそのリソース割当て方法 | |
US20120054762A1 (en) | Scheduling apparatus and method for a multicore device | |
KR102315102B1 (ko) | 가상 머신을 부팅하기 위한 방법, 장치, 기기 및 매체 | |
KR20170139763A (ko) | 네트워크 서비스 검출 방법 및 이를 위한 장치 | |
CN107168788B (zh) | 分布式系统中资源的调度方法以及装置 | |
JP4840605B2 (ja) | Osの起動方法 | |
US20130247037A1 (en) | Control computer and method for integrating available computing resources of physical machines | |
US10289329B2 (en) | Burst buffer dynamic logical volume sizing in high performance computing environment | |
KR101539895B1 (ko) | 오버 프로비저닝 스페이스 사이즈를 결정하는 컴퓨팅 방법 및 장치 | |
CN104008001A (zh) | 用于大数据支撑的虚拟机动态迁移算法 | |
KR101652324B1 (ko) | 요구 성능 보장 방법 및 요구 성능 보장 장치 | |
US8930776B2 (en) | Implementing DRAM command timing adjustments to alleviate DRAM failures | |
KR101754998B1 (ko) | 멀티 코어 시스템 및 멀티 코어 시스템에서의 데이터 병렬 처리 방법 | |
KR101678607B1 (ko) | 민감명령어 지연처리 방법 및 이를 수행하는 장치 | |
KR102053765B1 (ko) | 테넌트 기반의 동적 프로세서 할당 장치 및 그 방법 |
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 |