KR101481898B1 - Ssd의 명령어 큐 스케줄링 장치 및 방법 - Google Patents
Ssd의 명령어 큐 스케줄링 장치 및 방법 Download PDFInfo
- Publication number
- KR101481898B1 KR101481898B1 KR20130073221A KR20130073221A KR101481898B1 KR 101481898 B1 KR101481898 B1 KR 101481898B1 KR 20130073221 A KR20130073221 A KR 20130073221A KR 20130073221 A KR20130073221 A KR 20130073221A KR 101481898 B1 KR101481898 B1 KR 101481898B1
- Authority
- KR
- South Korea
- Prior art keywords
- instruction
- information
- service time
- buffer
- scheduling
- Prior art date
Links
Images
Classifications
-
- 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
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Advance Control (AREA)
Abstract
SSD의 명령어 큐 스케줄링 장치 및 방법이 개시된다.
SSD의 명령어 큐 스케줄링 장치는 SSD의 명령어 큐에 저장된 명령어의 타입, 상기 명령어의 사이즈 및 상기 명령어에 포함된 정보 중에서 상기 SSD의 버퍼에서 히트(hit)된 정보의 개수 중 적어도 하나에 기초하여 상기 명령어의 실행 순서를 스케줄링 하는 스케줄링부를 포함할 수 있다.
SSD의 명령어 큐 스케줄링 장치는 SSD의 명령어 큐에 저장된 명령어의 타입, 상기 명령어의 사이즈 및 상기 명령어에 포함된 정보 중에서 상기 SSD의 버퍼에서 히트(hit)된 정보의 개수 중 적어도 하나에 기초하여 상기 명령어의 실행 순서를 스케줄링 하는 스케줄링부를 포함할 수 있다.
Description
본 발명은 SSD(Solid State Drive)의 명령어 큐 스케줄링 장치 및 방법에 관한 것으로, 보다 상세하게는 SSD의 명령어 큐에 저장된 명령어의 타입, 명령어의 사이즈 및 명령어에 포함된 정보 중에서 SSD의 버퍼에서 히트(hit)된 정보의 개수 중 적어도 하나에 기초하여 SSD의 명령어 큐에 저장된 명령어의 실행 순서를 스케줄링 하는 장치 및 방법에 관한 것이다.
SSD는 플래시 메모리를 포함하여 하드 디스크(HDD: hard disk drive)보다 데이터 입출력 속도가 빠른 비 휘발성 저장 매체이다.
그러나, SSD에 포함되는 플래시 메모리는 하드 디스크와 저장이나 연산 특징이 상이하므로, 하드 디스크에서 사용하던 명령어 스케줄링 방법을 그대로 적용할 수 없다.
구체적으로 하드 디스크에서 사용하던 명령어 스케줄링 방법은 명령어에 따른 디스크 헤드 이동을 최소화하는 것이 목적이다. 그러나, 플래시 메모리는 디스크 헤드가 없으므로, 디스크 헤드에 최적화된 명령어 스케줄링 방법을 적용할 수는 없다.
또한, 하드 디스크는 쓰기(write) 연산에 필요한 시간과 읽기(read) 연산에 필요한 시간이 동일하므로, 명령어를 스케줄링 할 때, 명령어의 타입을 고려하지 않았다. 반면, 플래시 메모리는 쓰기 연산에 필요한 시간이 읽기 연산에 필요한 시간보다 길며, 제자리 덮어쓰기(in-place update) 연산이 불가능하므로, 덮어쓰기(overwrite)를 해야 할 경우, 삭제 후 쓰기 연산을 실행해야 하는 특징이 있으므로, 하드 디스크와 상이하다.
한국공개특허 제10-2011-0132202호(공개일 2011년 12월 07일)에는 명령어 큐를 이용하여 플래시 메모리를 제어하는 SSD가 개시되어 있다. 그러나, 종래의 기술은 명령어 큐에 저장된 복수의 명령어를 동시에 수행할 수 있는 방법만 기재되어 있을 뿐, 플래시 메모리의 특징에 최적화하여 명령어를 스케줄링 할 수 없다는 한계가 있었다.
따라서, SSD의 플래시 메모리에 최적화된 명령어 스케줄링 방법이 요청되고 있다.
본 발명은 SSD의 명령어 큐에 저장된 명령어의 타입, 명령어의 사이즈 및 명령어에 포함된 정보 중에서 SSD의 버퍼에서 히트(hit)된 정보의 개수 중 적어도 하나에 기초하여 SSD의 명령어 큐에 저장된 명령어의 실행 순서를 스케줄링 함으로써, 명령의 큐에 저장된 명령어의 실행 순서를 SSD에 최적화하여 스케줄링 하는 장치 및 방법을 제공할 수 있다.
본 발명의 일실시예에 따른 SSD의 명령어 큐 스케줄링 장치는 SSD(Solid State Drive)의 명령어 큐에 저장된 명령어의 타입, 상기 명령어의 사이즈 및 상기 명령어에 포함된 정보 중에서 상기 SSD의 버퍼에서 히트(hit)된 정보의 개수 중 적어도 하나에 기초하여 상기 명령어의 실행 순서를 스케줄링 하는 스케줄링부를 포함할 수 있다.
본 발명의 일실시예에 따른 SSD의 명령어 큐 스케줄링 장치의 스케줄링부는 상기 타입이 읽기인 명령어가 상기 타입이 쓰기인 명령어보다 먼저 실행되도록 상기 명령어의 실행 순서를 스케줄링 할 수 있다.
본 발명의 일실시예에 따른 SSD의 명령어 큐 스케줄링 장치의 스케줄링부는 상기 사이즈가 작은 명령어가 상기 사이즈가 큰 명령어보다 먼저 실행되도록 상기 명령어의 실행 순서를 스케줄링 할 수 있다.
본 발명의 일실시예에 따른 SSD의 명령어 큐 스케줄링 장치의 스케줄링부는 상기 히트된 정보의 개수가 많은 명령어가 상기 히트된 정보의 개수가 적은 명령어보다 먼저 실행되도록 상기 명령어의 실행 순서를 스케줄링 할 수 있다.
본 발명의 일실시예에 따른 SSD의 명령어 큐 스케줄링 장치는 상기 명령어의 타입, 상기 명령어의 사이즈 및 상기 히트된 정보의 개수 중 적어도 하나에 기초하여 상기 명령어의 서비스 시간을 결정하는 서비스 시간 결정부를 더 포함할 수 있다.
본 발명의 일실시예에 따른 SSD의 명령어 큐 스케줄링 장치의 스케줄링부는 상기 서비스 시간이 짧은 명령어가 상기 서비스 시간이 긴 명령어보다 먼저 실행되도록 상기 명령어의 실행 순서를 스케줄링 할 수 있다.
본 발명의 일실시예에 따른 SSD의 명령어 큐 스케줄링 장치의 서비스 시간 결정부는 상기 명령어의 타입이 쓰기인 경우, 상기 SSD의 버퍼에 저장된 정보 중에서 플래시 메모리로 이동해야 하는 정보의 개수에 기초하여 상기 서비스 시간을 결정할 수 있다.
본 발명의 일실시예에 따른 SSD의 명령어 큐 스케줄링 장치의 서비스 시간 결정부는 상기 SSD의 버퍼에서 미스(miss)된 정보의 개수에 기초하여 상기 플래시 메모리로 이동해야 하는 정보의 개수를 결정할 수 있다.
본 발명의 일실시예에 따른 SSD의 명령어 큐 스케줄링 장치의 서비스 시간 결정부는 상기 명령어의 타입이 읽기인 경우, 상기 SSD의 버퍼에서 미스된 정보의 개수에 기초하여 상기 서비스 시간을 결정할 수 있다.
본 발명의 일실시예에 따른 SSD의 명령어 큐 스케줄링 방법은 SSD(Solid State Drive)의 명령어 큐에 저장된 명령어의 타입, 상기 명령어의 사이즈 및 상기 명령어에 포함된 정보 중에서 상기 SSD의 버퍼에서 히트(hit)된 정보의 개수 중 적어도 하나에 기초하여 상기 명령어의 실행 순서를 스케줄링 하는 단계를 포함할 수 있다.
본 발명의 일실시예에 의하면, SSD의 명령어 큐에 저장된 명령어의 타입, 명령어의 사이즈 및 명령어에 포함된 정보 중에서 SSD의 버퍼에서 히트(hit)된 정보의 개수 중 적어도 하나에 기초하여 SSD의 명령어 큐에 저장된 명령어의 실행 순서를 스케줄링 함으로써, 명령의 큐에 저장된 명령어의 실행 순서를 SSD에 최적화하여 스케줄링 할 수 있다.
도 1은 본 발명의 일실시예에 따른 SSD를 나타내는 도면이다.
도 2는 본 발명의 일실시예에 따른 명령어 큐 스케줄링 장치를 나타내는 도면이다.
도 3은 본 발명의 일실시예에 따른 SSD의 명령어 큐 스케줄링 방법을 도시한 플로우차트이다.
도 4는 본 발명의 일실시예에 따른 명령어의 서비스 시간 결정 방법을 도시한 플로우차트이다.
도 2는 본 발명의 일실시예에 따른 명령어 큐 스케줄링 장치를 나타내는 도면이다.
도 3은 본 발명의 일실시예에 따른 SSD의 명령어 큐 스케줄링 방법을 도시한 플로우차트이다.
도 4는 본 발명의 일실시예에 따른 명령어의 서비스 시간 결정 방법을 도시한 플로우차트이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 본 발명의 일실시예에 따른 명령어 큐 스케줄링 방법은 명령어 큐 스케줄링 장치에 의해 실행될 수 있다.
도 1은 본 발명의 일실시예에 따른 SSD(100)를 나타내는 도면이다.
도 1을 참고하면, 본 발명의 일실시예에 따른 SSD(100)는 명령어 큐(110), 버퍼(120), 명령어 큐 스케줄링 장치(130), FTL(140), 및 플래시 메모리(150)를 포함할 수 있다.
명령어 큐(Command Queue)(110)는 호스트로부터 적어도 하나의 명령어를 수신하고, 수신한 명령어들을 저장할 수 있다. 이때, 명령어 큐(110)는 호스트로부터 수신한 순서로 명령어들을 저장할 수도 있고, NCQ(Native Command Queuing)를 이용하여 호스트로부터 수신한 명령어들의 실행 순서를 스케줄링 할 수도 있다.
버퍼(120)는 플래시 메모리(150)에 저장된 정보 중에서 일정 시간 안에 실행한 명령어와 관련된 관련 정보를 저장할 수 있다.
이때, 관련 정보는 명령어에 따라 플래시 메모리(150)에 저장할 정보, 및 명령어에 따라 플래시 메모리(150)에서 읽어드릴 정보 중 적어도 하나를 포함할 수 있다. 또한, 관련 정보의 포맷은 플래시 메모리(150)에 저장된 정보의 논리 주소(Logical Address)일 수 있다.
또한, 버퍼(120)는 관련 정보를 저장할 경우, 관련 정보를 저장할 공간을 확보하기 위하여 버퍼 관리 알고리즘으로 버퍼(120)에 기 저장된 정보 중 일부를 선택하여 삭제할 수 있다. 예를 들어, 버퍼 관리 알고리즘은 LRU(least recently used) 알고리즘일 수 있다.
그리고, 버퍼(120)는 저장하고 있는 관련 정보를 클린(clean) 정보, 더티(dirty) 정보로 분류할 수 있다. 이때, 클린 정보는 읽기 명령어와 관련된 관련 정보이고, 더티 정보는 쓰기 명령어와 관련된 관련 정보일 수 있다.
읽기 명령어와 관련된 관련 정보는 플래시 메모리(150)에서 읽어 들인 정보이므로 플래시 메모리(150)에 저장된 정보와 동일할 수 있다. 따라서, 클린 정보가 버퍼 관리 알고리즘에 의하여 선택된 경우, 버퍼(120)는 플래시 메모리(150)에 클린 정보를 쓰는 과정을 생략하고 바로 삭제할 수 있다.
반면, 쓰기 명령어와 관련된 관련 정보는 플래시 메모리(150)에 저장하기 위하여 호스트로부터 수신한 정보이므로 플래시 메모리(150)에 저장된 정보와 상이할 수 있다. 따라서, 더티 정보가 버퍼 관리 알고리즘에 의하여 선택된 경우, 버퍼(120)는 플래시 메모리(150)에 더티 정보를 쓴 다음에 더티 정보를 삭제할 수 있다.
즉, 버퍼(120)는 저장하고 있는 관련 정보를 클린(clean) 정보, 더티(dirty) 정보로 분류함으로써, 버퍼 관리 알고리즘에 따라 버퍼에 저장된 관련 정보를 삭제할 경우, 해당 관련 정보를 플래시 메모리(150)에 쓰기 연산을 실행해야 하는지 여부를 식별할 수 있다.
명령어 큐 스케줄링 장치(130)는 명령어 큐(110)에 저장된 명령어의 타입, 명령어의 사이즈 및 명령어에 포함된 정보 중에서 버퍼(120)에서 히트(hit)된 관련 정보의 개수 중 적어도 하나에 기초하여 명령어 큐(110)에 저장된 명령어의 실행 순서를 스케줄링 할 수 있다.
명령어 큐 스케줄링 장치(130)가 명령어의 실행 순서를 스케줄링 하는 조건 및 구체적인 동작은 이하 도 2를 참조하여 상세히 설명한다.
FTL(Flash Translation Layer)(140)는 파일 시스템에서 사용하는 논리 주소를 플래시 메모리(150)에서 사용하는 물리 주소로 변환할 수 있다.
종래의 저장 매체는 섹터 단위로 정보를 저장하고 있으므로, 일반적인 파일 시스템은 섹터 기반의 논리 주소를 이용할 수 있다. 또한, 플래시 메모리(150)는 블록과 페이지 단위로 정보를 저장하고 있으므로, 블록과 페이지의 물리 주소를 이용할 수 있다. 즉, 플래시 메모리(150)는 파일 시스템과 정보의 저장 방식 및 정보의 저장 위치를 식별하기 위한 정보의 포맷이 상이하다.
따라서, 파일 시스템에서 사용하는 논리 주소를 플래시 메모리(150)에서 사용하는 물리 주소로 변환하는 FTL(140)가 필요하다.
이때, FTL(140)는 파일 시스템에서 사용하는 논리 주소와 플래시 메모리(150)에서 사용하는 물리 주소를 연결해주는 주소 변환용 매핑 테이블을 포함할 수 있다. 그리고, FTL(140)는 주소 변환용 매핑 테이블을 이용하여 명령어 큐(110), 버퍼(120)에서 사용하는 파일 시스템의 논리 주소를 플래시 메모리(150)의 물리 주소로 변환함으로써, 플래시 메모리(150)에 저장된 정보 중 명령어와 관련된 관련 정보, 또는 버퍼(120)에 저장된 정보에 접근할 수 있다.
플래시 메모리(150)는 명령어 큐(110)가 수신한 명령어에 따라 정보를 저장하거나, 저장된 정보를 제공하는 저장 매체일 수 있다. 구체적으로 플래시 메모리(150)는 전기적으로 정보를 저장하는 비 휘발성 반도체 저장 장치일 수 있다.
도 2는 본 발명의 일실시예에 따른 명령어 큐 스케줄링 장치를 나타내는 도면이다.
도 2를 참고하면, 본 발명의 일실시예에 따른 명령어 큐 스케줄링 장치(130)는 서비스 시간 결정부(210)와 스케줄링부(220)를 포함할 수 있다.
서비스 시간 결정부(210)는 명령어 큐(110)에 저장된 명령어의 타입, 명령어의 사이즈 및 명령어에 포함된 정보 중에서 버퍼(120)에서 히트(hit)된 관련 정보의 개수 중 적어도 하나에 기초하여 명령어 큐(110)에 저장된 명령어의 서비스 시간을 결정할 수 있다.
명령어의 타입이 읽기인 경우, 서비스 시간 결정부(210)는 버퍼(120)에서 미스된 관련 정보의 개수에 기초하여 서비스 시간을 결정할 수 있다.
구체적으로 명령어의 타입이 읽기인 경우, 명령어와 관련된 정보 중에서 버퍼(120)에서 히트된 관련 정보는 플래시 메모리(150)에서 읽을 필요가 없다. 따라서, 서비스 시간 결정부(210)는 버퍼(120)에서 미스(miss)된 관련 정보를 플래시 메모리(150)에서 읽는데 필요한 시간에 기초하여 명령어의 서비스 시간을 결정할 수 있다.
또한, 명령어에 따라 플래시 메모리(150)에서 읽은 정보를 버퍼(120)에 저장하려면, 버퍼(120)에 정보를 저장할 공간을 확보할 필요가 있다. 따라서, 서비스 시간 결정부(210)는 명령어의 서비스 시간을 결정할 때, 버퍼(120)에 공간을 확보하기 위하여 버퍼(120)에 저장되었던 관련 정보를 플래시 메모리(150)에 쓰는 시간을 고려할 수 있다.
예를 들어, 서비스 시간 결정부(210)는 수학식 1을 이용하여 읽기 타입의 명령어의 서비스 시간을 결정할 수 있다.
이때, Nmiss는 버퍼(120)에서 미스된 관련 정보의 개수이고, Tread 는 플래시 메모리(150)로부터 하나의 정보를 읽는데 걸리는 시간일 수 있다. 이때, 정보의 단위는 페이지이며, Nmiss는 명령어에 포함된 관련 명령의 개수와 버퍼(120)에서 히트(hit)된 관련 정보의 개수의 차이에 따라 계산될 수 있다.
또한, Ndirty 는 Nmiss개의 미스가 발생할 때, 버퍼(120)에서 미스된 관련 정보를 저장할 공간을 확보하기 위하여 플래시 메모리(150)에 쓰는 정보의 개수일 수 있다. 구체적으로, Ndirty는 버퍼 관리 알고리즘에 의하여 버퍼(120)에서 삭제할 적어도 하나의 관련 정보에 포함된 더티 정보의 개수일 수 있다.
예를 들어, Nmiss가 5인 경우, 버퍼(120)는 5개의 관련 정보를 저장하기 위하여 기존에 저장되었던 5개의 관련 정보를 삭제할 수 있다. 그리고, 버퍼 관리 알고리즘에 의하여 버퍼(120)에서 삭제할 5개의 관련 정보 중 클린 정보가 3이고 더티 정보가 2일 수 있다.
이때, 클린 정보는 플래시 메모리(150)에 쓰기 연산을 실행하지 않고 삭제가 가능하므로, 버퍼(120)는 2개의 더티 정보를 플래시 메모리(150)에 쓰기 연산하고, 5개의 관련 정보를 삭제함으로써, 5개의 정보를 저장할 공간을 확보할 수 있다. 따라서, 버퍼(120)에 5개의 관련 정보를 저장하기 위하여 플래시 메모리(150)에 쓰기 연산을 실행하는 정보의 개수인 Ndirty는 2가 될 수 있다.
그리고, Twrite는 하나의 정보를 플래시 메모리(150)에 쓰는데 걸리는 시간일 수 있다.
즉, 명령어의 타입이 읽기인 경우, 서비스 시간 결정부(210)는 버퍼(120)에서 미스된 정보의 개수(Nmiss)에 기초하여 버퍼(120)에서 삭제할 정보를 선택하고, 선택한 정보 중에서 더티 정보의 개수에 따라 Ndirty를 계산할 수 있다.
그 다음으로, 서비스 시간 결정부(210)는 Nmiss개의 정보를 플래시 메모리(150)에서 읽기 위해 필요한 시간(Nmiss * Tread)과 Nmiss개의 정보를 버퍼(120)에 저장하기 위하여 버퍼(120)에 저장 공간을 확보하는데 필요한 시간(Ndirty *Twrite)을 이용하여 명령어의 서비스 시간을 결정할 수 있다.
명령어의 타입이 쓰기인 경우, 서비스 시간 결정부(210)는 버퍼(120)에 저장된 정보 중에서 플래시 메모리(150)로 이동해야 하는 정보의 개수에 기초하여 서비스 시간을 결정할 수 있다. 이때, 서비스 시간 결정부(210)는 버퍼(120)에서 미스(miss)된 정보의 개수에 기초하여 플래시 메모리(150)로 이동해야 하는 정보의 개수를 결정할 수 있다.
구체적으로 명령어의 타입이 쓰기인 경우, 명령어와 관련된 정보 중에서 버퍼(120)에서 미스된 관련 정보를 버퍼(120)에 저장해야 한다. 따라서, 서비스 시간 결정부(210)는 버퍼(120)에서 미스(miss)된 관련 정보를 버퍼(120)에 저장하기 위한 공간을 확보할 필요가 있다. 따라서, 서비스 시간 결정부(210)는 명령어의 서비스 시간을 결정할 때, 버퍼(120)에 공간을 확보하기 위하여 버퍼(120)에 저장되었던 관련 정보를 플래시 메모리(150)에 쓰는 시간을 고려할 수 있다.
예를 들어, 서비스 시간 결정부(210)는 수학식 2를 이용하여 쓰기 타입의 명령어의 서비스 시간을 결정할 수 있다.
스케줄링부(220)는 명령어 큐(110)에 저장된 명령어의 타입, 명령어의 사이즈 및 명령어에 포함된 정보 중에서 버퍼(120)에서 히트(hit)된 정보의 개수 중 적어도 하나에 기초하여 명령어 큐(110)에 저장된 명령어의 실행 순서를 스케줄링 할 수 있다.
이때, 스케줄링부(220)는 타입이 읽기인 명령어가 타입이 쓰기인 명령어보다 먼저 실행되도록 명령어의 실행 순서를 스케줄링 할 수 있다. 플래시 메모리(150)는 읽기 연산의 처리 속도가 쓰기 연산의 처리 속도보다 빠를 수 있다. 따라서, 스케줄링부(220)는 타입이 읽기인 명령어가 타입이 쓰기인 명령어보다 먼저 실행되도록 명령어의 실행 순서를 스케줄링 함으로써, 처리 속도가 빠른 명령어가 먼저 실행되도록 할 수 있다.
또한, 스케줄링부(220)는 사이즈가 작은 명령어가 사이즈가 큰 명령어보다 먼저 실행되도록 명령어의 실행 순서를 스케줄링 할 수 있다. 명령어의 사이즈가 큰 경우, 명령어와 관련된 관련 정보의 사이즈 및 개수도 증가하므로, 명령어를 처리하기 위하여 필요한 시간도 증가할 수 있다. 따라서, 스케줄링부(220)는 사이즈가 작은 명령어가 사이즈가 큰 명령어보다 먼저 실행되도록 명령어의 실행 순서를 스케줄링 함으로써, 처리 속도가 빠른 명령어가 먼저 실행되도록 할 수 있다.
그리고, 스케줄링부(220)는 버퍼(120)에서 히트된 정보의 개수가 많은 명령어가 버퍼(120)에서 히트된 정보의 개수가 적은 명령어보다 먼저 실행되도록 명령어의 실행 순서를 스케줄링 할 수 있다. 버퍼(120)에서 히트된 정보는 플래시 메모리(150)에서 읽을 필요가 없으므로, 버퍼(120)에서 히트된 정보의 개수가 많을수록 명령어를 처리하기 위하여 필요한 시간이 감소할 수 있다. 따라서, 스케줄링부(220)는 버퍼(120)에서 히트된 정보의 개수가 많은 명령어가 버퍼(120)에서 히트된 정보의 개수가 적은 명령어보다 먼저 실행되도록 명령어의 실행 순서를 스케줄링 함으로써, 처리 속도가 빠른 명령어가 먼저 실행되도록 할 수 있다.
또한, 스케줄링부(220)는 서비스 시간 결정부(210)이 결정한 서비스 시간이 짧은 명령어가 서비스 시간 결정부(210)이 결정한 서비스 시간이 긴 명령어보다 먼저 실행되도록 상기 명령어의 실행 순서를 스케줄링 할 수 있다.
서비스 시간 결정부(210)이 결정한 서비스 시간은 명령어의 타입 별로 명령어의 사이즈 및 명령어에 포함된 정보 중에서 버퍼(120)에서 히트(hit)된 정보의 개수에 기초하여 결정된 명령어를 처리하기 위하여 필요한 시간일 수 있다. 즉, 명령어의 서비스 시간이 짧을수록 해당 명령어는 처리 속도가 빠른 명령어일 수 있다.
따라서, 스케줄링부(220)는 서비스 시간 결정부(210)이 결정한 서비스 시간이 짧은 명령어가 서비스 시간 결정부(210)이 결정한 서비스 시간이 긴 명령어보다 먼저 실행되도록 상기 명령어의 실행 순서를 스케줄링 함으로써, 처리 속도가 빠른 명령어가 먼저 실행되도록 할 수 있다.
예를 들어, Twrite = 100us이고, Tread = 10us 이며, 명령어 큐(110)가 제1 명령어와 제2 명령어를 수신할 수 있다.
제1 명령어의 타입은 읽기이고, 사이즈는 6이며, 명령어에 포함된 정보 중에서 버퍼(120)에서 히트된 정보의 개수는 2일 수 있다. 이때, 버퍼(120)에서 미스된 정보의 개수는 명령어의 사이즈와 버퍼(120)에서 히트된 정보의 개수의 차이이므로 4이고, 버퍼(120)에서 미스된 정보 중에서 더티 정보는 3개, 클린 정보는 1개일 수 있다. 이때, 제1 명령어의 서비스 시간은 수학식 1에 따라 4 * 10us + 3 * 100us = 340us로 결정될 수 있다.
제2 명령어의 타입은 쓰기이고, 사이즈는 10이며, 명령어에 포함된 정보 중에서 버퍼(120)에서 히트된 정보의 개수는 3일 수 있다. 이때, 버퍼(120)에서 미스된 정보의 개수는 명령어의 사이즈와 버퍼(120)에서 히트된 정보의 개수의 차이이므로 7이고, 버퍼(120)에서 미스된 정보 중에서 더티 정보는 5개, 클린 정보는 2개일 수 있다. 이때, 제2 명령어의 서비스 시간은 수학식 2에 따라 5 * 100us = 500us로 결정될 수 있다.
이때, 제1 명령어의 서비스 시간은 제2 명령어의 서비스 시간보다 짧으므로, 스케줄링부(220)는 제1 명령어가 제2 명령어보다 먼저 실행되도록 제1 명령어와 제2 명령어의 실행 순서를 스케줄링 할 수 있다.
도 3은 본 발명의 일실시예에 따른 SSD의 명령어 큐 스케줄링 방법을 도시한 플로우차트이다.
단계(310)에서 명령어 큐(110)는 호스트로부터 명령어를 수신할 수 있다.
단계(320)에서 서비스 시간 결정부(210)는 단계(310)에서 수신한 명령어의 타입, 명령어의 사이즈 및 명령어에 포함된 정보 중에서 버퍼(120)에서 히트(hit)된 관련 정보의 개수 중 적어도 하나에 기초하여 명령어 큐(110)에 저장된 명령어의 서비스 시간을 결정할 수 있다.
서비스 시간 결정부(210)가 서비스 시간을 결정하는 과정은 이하 도 4를 참조하여 상세히 설명한다.
단계(330)에서 스케줄링부(220)는 단계(320)에서 결정한 서비스 시간에 기초하여 명령어 큐(110)에 저장된 명령어의 서비스 시간을 결정할 수 있다.
구체적으로 스케줄링부(220)는 이 짧은 명령어가 서비스 시간 결정부(210)이 결정한 서비스 시간이 긴 명령어보다 먼저 실행되도록 상기 명령어의 실행 순서를 스케줄링 함으로써, 처리 속도가 빠른 명령어가 먼저 실행되도록 할 수 있다.
또한, 스케줄링부(220)는 명령어 큐(110)에 저장된 명령어의 타입, 명령어의 사이즈 및 명령어에 포함된 정보 중에서 버퍼(120)에서 히트(hit)된 정보의 개수 중 적어도 하나에 기초하여 명령어 큐(110)에 저장된 명령어의 실행 순서를 스케줄링 할 수도 있다.
도 4는 본 발명의 일실시예에 따른 명령어의 서비스 시간 결정 방법을 도시한 플로우차트이다. 도 4의 단계(410) 내지 단계(450)는 도 3의 단계(320)에 포함될 수 있다.
단계(410)에서 서비스 시간 결정부(210)는 단계(310)에서 수신한 명령어에 포함된 정보 중에서 버퍼(120)에서 미스된 관련 정보의 개수를 결정할 수 있다.
구체적으로, 서비스 시간 결정부(210)는 단계(310)에서 수신한 명령어의 사이즈와 명령어에 포함된 정보 중에서 버퍼(120)에서 히트(hit)된 관련 정보의 개수의 차이에 따라 버퍼(120)에서 미스된 관련 정보의 개수를 결정할 수 있다.
단계(420)에서 서비스 시간 결정부(210)는 단계(410)에서 결정한 버퍼(120)에서 미스된 관련 정보의 개수에 기초하여 버퍼(120)에서 플래시 메모리(150)로 이동할 정보의 개수를 결정할 수 있다.
구체적으로, 버퍼 관리 알고리즘이 단계(410)에서 결정한 버퍼(120)에서 미스된 관련 정보의 개수에 기초하여 버퍼(120)에 저장된 정보 중 삭제할 관련 정보를 선택하면, 서비스 시간 결정부(210)가 선택한 관련 정보 중에서 더티 정보의 개수를 식별하고, 더티 정보의 개수에 따라 버퍼(120)에서 플래시 메모리(150)로 이동할 정보의 개수를 결정할 수 있다.
단계(430)에서 서비스 시간 결정부(210)는 단계(310)에서 수신한 명령어의 타입이 읽기인지 여부를 확인할 수 있다.
명령어의 타입이 읽기인 경우, 서비스 시간 결정부(210)는 단계(440)을 수행하고, 명령어의 타입이 읽기가 아닌 쓰기인 경우, 서비스 시간 결정부(210)는 단계(450)을 수행할 수 있다.
단계(440)에서 서비스 시간 결정부(210)는 단계(410)에서 결정한 버퍼(120)에서 미스된 관련 정보의 개수와 단계(420)에서 결정한 버퍼(120)에서 플래시 메모리(150)로 이동할 정보의 개수를 이용하여 단계(310)에서 수신한 명령어의 서비스 시간을 결정할 수 있다.
예를 들어, 서비스 시간 결정부(210)는 단계(410)에서 결정한 버퍼(120)에서 미스된 관련 정보의 개수와 플래시 메모리(150)로부터 하나의 정보를 읽는데 걸리는 시간의 곱하여 Nmiss개의 정보를 플래시 메모리(150)에서 읽기 위해 필요한 시간을 결정할 수 있다. 또한, 서비스 시간 결정부(210)는 단계(420)에서 결정한 버퍼(120)에서 플래시 메모리(150)로 이동할 정보의 개수와 하나의 정보를 플래시 메모리(150)에 쓰는데 걸리는 시간을 곱하여 Nmiss개의 정보를 버퍼(120)에 저장하기 위하여 버퍼(120)에 저장 공간을 확보하는데 필요한 시간을 결정할 수 있다.
그리고, 서비스 시간 결정부(210)는 Nmiss개의 정보를 플래시 메모리(150)에서 읽기 위해 필요한 시간(Nmiss * Tread)과 Nmiss개의 정보를 버퍼(120)에 저장하기 위하여 버퍼(120)에 저장 공간을 확보하는데 필요한 시간(Ndirty *Twrite)을 더하여 단계(310)에서 수신한 명령어의 서비스 시간을 결정할 수 있다.
단계(450)에서 서비스 시간 결정부(210)는 단계(420)에서 결정한 버퍼(120)에서 플래시 메모리(150)로 이동할 정보의 개수를 이용하여 단계(310)에서 수신한 명령어의 서비스 시간을 결정할 수 있다.
예를 들어, 서비스 시간 결정부(210)는 단계(420)에서 결정한 버퍼(120)에서 플래시 메모리(150)로 이동할 정보의 개수와 하나의 정보를 플래시 메모리(150)에 쓰는데 걸리는 시간을 곱하여 Nmiss개의 정보를 버퍼(120)에 저장하기 위하여 버퍼(120)에 저장 공간을 확보하는데 필요한 시간을 결정할 수 있다.
이때, Nmiss개의 정보를 버퍼(120)에 저장하기 위하여 버퍼(120)에 저장 공간을 확보하는데 필요한 시간은 단계(310)에서 수신한 명령어를 처리하기 위하여 필요한 시간일 수 있다. 따라서, 서비스 시간 결정부(21)는 Nmiss개의 정보를 버퍼(120)에 저장하기 위하여 버퍼(120)에 저장 공간을 확보하는데 필요한 시간을 단계(310)에서 수신한 명령어의 서비스 시간으로 결정할 수 있다.
본 발명은 SSD의 명령어 큐에 저장된 명령어의 타입, 명령어의 사이즈 및 명령어에 포함된 정보 중에서 SSD의 버퍼에서 히트(hit)된 정보의 개수 중 적어도 하나에 기초하여 SSD의 명령어 큐에 저장된 명령어의 실행 순서를 스케줄링 함으로써, 명령의 큐에 저장된 명령어의 실행 순서를 SSD에 최적화하여 스케줄링 할 수 있다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 실행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: SSD
130: 명령어 큐 스케줄링 장치
210: 서비스 시간 결정부
220: 스케줄링부
130: 명령어 큐 스케줄링 장치
210: 서비스 시간 결정부
220: 스케줄링부
Claims (18)
- SSD(Solid State Drive)의 명령어 큐에 저장된 명령어의 타입, 상기 명령어의 사이즈 및 상기 명령어에 포함된 정보 중에서 상기 SSD의 버퍼에서 히트(hit)된 정보의 개수 중 적어도 하나에 기초하여 상기 명령어의 서비스 시간을 결정하는 서비스 시간 결정부; 및
상기 명령어의 서비스 시간, 상기 명령어의 타입, 상기 명령어의 사이즈 및 상기 히트된 정보의 개수 중 적어도 하나에 기초하여 상기 명령어의 실행 순서를 스케줄링 하는 스케줄링부
를 포함하는 SSD의 명령어 큐 스케줄링 장치. - 제1항에 있어서,
상기 스케줄링부는,
상기 타입이 읽기인 명령어가 상기 타입이 쓰기인 명령어보다 먼저 실행되도록 상기 명령어의 실행 순서를 스케줄링 하는 SSD의 명령어 큐 스케줄링 장치. - 제1항에 있어서,
상기 스케줄링부는,
상기 사이즈가 작은 명령어가 상기 사이즈가 큰 명령어보다 먼저 실행되도록 상기 명령어의 실행 순서를 스케줄링 하는 SSD의 명령어 큐 스케줄링 장치. - 제1항에 있어서,
상기 스케줄링부는,
상기 히트된 정보의 개수가 많은 명령어가 상기 히트된 정보의 개수가 적은 명령어보다 먼저 실행되도록 상기 명령어의 실행 순서를 스케줄링 하는 SSD의 명령어 큐 스케줄링 장치. - 삭제
- 제1항에 있어서,
상기 스케줄링부는,
상기 서비스 시간이 짧은 명령어가 상기 서비스 시간이 긴 명령어보다 먼저 실행되도록 상기 명령어의 실행 순서를 스케줄링 하는 SSD의 명령어 큐 스케줄링 장치. - 제1항에 있어서,
상기 서비스 시간 결정부는,
상기 명령어의 타입이 쓰기인 경우, 상기 SSD의 버퍼에 저장된 정보 중에서 플래시 메모리로 이동해야 하는 정보의 개수에 기초하여 상기 서비스 시간을 결정하는 SSD의 명령어 큐 스케줄링 장치. - 제7항에 있어서,
상기 서비스 시간 결정부는,
상기 SSD의 버퍼에서 미스(miss)된 정보의 개수에 기초하여 상기 플래시 메모리로 이동해야 하는 정보의 개수를 결정하는 SSD의 명령어 큐 스케줄링 장치. - 제1항에 있어서,
상기 서비스 시간 결정부는,
상기 명령어의 타입이 읽기인 경우, 상기 SSD의 버퍼에서 미스된 정보의 개수에 기초하여 상기 서비스 시간을 결정하는 SSD의 명령어 큐 스케줄링 장치. - SSD(Solid State Drive)의 명령어 큐에 저장된 명령어의 타입, 상기 명령어의 사이즈 및 상기 명령어에 포함된 정보 중 상기 SSD의 버퍼에서 히트(hit)된 정보의 개수 중 적어도 하나에 기초하여 상기 명령어의 서비스 시간을 결정하는 단계; 및
상기 명령어의 서비스 시간, 상기 명령어의 타입, 상기 명령어의 사이즈 및 상기 히트된 정보의 개수 중 적어도 하나에 기초하여 상기 명령어의 실행 순서를 스케줄링 하는 단계
를 포함하는 SSD의 명령어 큐 스케줄링 방법. - 제10항에 있어서,
상기 스케줄링 하는 단계는,
상기 타입이 읽기인 명령어가 상기 타입이 쓰기인 명령어보다 먼저 실행되도록 상기 명령어의 실행 순서를 스케줄링 하는 SSD의 명령어 큐 스케줄링 방법. - 제10항에 있어서,
상기 스케줄링 하는 단계는,
상기 사이즈가 작은 명령어가 상기 사이즈가 큰 명령어보다 먼저 실행되도록 상기 명령어의 실행 순서를 스케줄링 하는 SSD의 명령어 큐 스케줄링 방법. - 제10항에 있어서,
상기 스케줄링 하는 단계는,
상기 히트된 정보의 개수가 많은 명령어가 상기 히트된 정보의 개수가 적은 명령어보다 먼저 실행되도록 상기 명령어의 실행 순서를 스케줄링 하는 SSD의 명령어 큐 스케줄링 방법. - 삭제
- 제10항에 있어서,
상기 스케줄링 하는 단계는,
상기 서비스 시간이 짧은 명령어가 상기 서비스 시간이 긴 명령어보다 먼저 실행되도록 상기 명령어의 실행 순서를 스케줄링 하는 SSD의 명령어 큐 스케줄링 방법. - 제10항에 있어서,
상기 서비스 시간을 결정하는 단계는,
상기 명령어의 타입이 쓰기인 경우, 상기 SSD의 버퍼에 저장된 정보 중에서 플래시 메모리로 이동해야 하는 정보의 개수에 기초하여 상기 서비스 시간을 결정하는 SSD의 명령어 큐 스케줄링 방법. - 제16항에 있어서,
상기 서비스 시간을 결정하는 단계는,
상기 SSD의 버퍼에서 미스(miss)된 정보의 개수에 기초하여 상기 플래시 메모리로 이동해야 하는 정보의 개수를 결정하는 SSD의 명령어 큐 스케줄링 방법. - 제10항에 있어서,
상기 서비스 시간을 결정하는 단계는,
상기 명령어의 타입이 읽기인 경우, 상기 SSD의 버퍼에서 미스된 정보의 개수에 기초하여 상기 서비스 시간을 결정하는 SSD의 명령어 큐 스케줄링 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130073221A KR101481898B1 (ko) | 2013-06-25 | 2013-06-25 | Ssd의 명령어 큐 스케줄링 장치 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130073221A KR101481898B1 (ko) | 2013-06-25 | 2013-06-25 | Ssd의 명령어 큐 스케줄링 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150000735A KR20150000735A (ko) | 2015-01-05 |
KR101481898B1 true KR101481898B1 (ko) | 2015-01-14 |
Family
ID=52474724
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20130073221A KR101481898B1 (ko) | 2013-06-25 | 2013-06-25 | Ssd의 명령어 큐 스케줄링 장치 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101481898B1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10509670B2 (en) | 2017-04-11 | 2019-12-17 | SK Hynix Inc. | Data storage device and operating method thereof |
US10635347B2 (en) | 2017-03-27 | 2020-04-28 | SK Hynix Inc. | Memory system and operating method thereof |
US11789652B2 (en) | 2020-11-18 | 2023-10-17 | Samsung Electronics Co., Ltd. | Storage device and storage system including the same |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180069960A (ko) | 2016-12-15 | 2018-06-26 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작 방법 |
KR102514772B1 (ko) * | 2017-12-28 | 2023-03-28 | 삼성전자주식회사 | 비동기적 동작 수행이 가능한 비휘발성 메모리 장치와 이를 포함하는 메모리 시스템, 그리고 이의 동작 수행 방법 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012089154A (ja) | 2005-09-30 | 2012-05-10 | Coware Inc | マルチコアアーキテクチャにおけるスケジューリング |
-
2013
- 2013-06-25 KR KR20130073221A patent/KR101481898B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012089154A (ja) | 2005-09-30 | 2012-05-10 | Coware Inc | マルチコアアーキテクチャにおけるスケジューリング |
Non-Patent Citations (1)
Title |
---|
박준수 외 2인, SSD 스토리지 시스템을 위한 효율적인 DRAM 버퍼 액세스 스케줄링 기법, 전자공학회 논문지 제48권 SD편 제7호, 2011년7월 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10635347B2 (en) | 2017-03-27 | 2020-04-28 | SK Hynix Inc. | Memory system and operating method thereof |
US10509670B2 (en) | 2017-04-11 | 2019-12-17 | SK Hynix Inc. | Data storage device and operating method thereof |
US11789652B2 (en) | 2020-11-18 | 2023-10-17 | Samsung Electronics Co., Ltd. | Storage device and storage system including the same |
Also Published As
Publication number | Publication date |
---|---|
KR20150000735A (ko) | 2015-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101894625B1 (ko) | 데이터 저장 시스템들에 대한 우선순위 기반 가비지 수집 | |
US8417901B2 (en) | Combining write commands to overlapping addresses or to a specific page | |
WO2016082550A1 (zh) | 缓存数据的刷盘方法及装置 | |
US9983794B2 (en) | Memory device and host device | |
KR101481898B1 (ko) | Ssd의 명령어 큐 스케줄링 장치 및 방법 | |
EP2665065A2 (en) | Electronic device employing flash memory | |
US20150253992A1 (en) | Memory system and control method | |
KR101663066B1 (ko) | 하이브리드 디바이스에서의 고체 상태 메모리 커맨드 큐 | |
KR101374065B1 (ko) | 칩 레벨 평행 플래시 메모리를 위한 정보 분별 방법 및 장치 | |
CN107608625B (zh) | 一种提升固存储设备读性能的方法 | |
US20150149741A1 (en) | Storage System and Control Method Thereof | |
US9983826B2 (en) | Data storage device deferred secure delete | |
KR20140006234A (ko) | 데이터 저장 장치 및 그 동작 방법 | |
JP2010211618A (ja) | 半導体記憶装置 | |
JP2010237907A (ja) | ストレージ装置および記録方法 | |
US20160124650A1 (en) | Data Storage Device and Flash Memory Control Method | |
US10866759B2 (en) | Deduplication storage system having garbage collection control method | |
CN110515861B (zh) | 处理刷写命令的存储设备及其方法 | |
CN108334457B (zh) | 一种io处理方法及装置 | |
JP5967307B2 (ja) | 情報処理装置、制御回路、制御プログラム、及び制御方法 | |
US9146858B2 (en) | Control device, storage device, and storage control method | |
KR102076248B1 (ko) | 선택 지연 가비지 컬렉션 방법 및 이를 이용한 메모리 시스템 | |
KR100994052B1 (ko) | 플래시 변환 계층에서 수행되는 데이터 관리 방법 및 이를 수행하는 플래시 메모리 장치 | |
JP5491201B2 (ja) | 半導体記録装置及び半導体記録システム | |
KR101466493B1 (ko) | Ssd의 버퍼 제어 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20180102 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20190102 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20200102 Year of fee payment: 6 |