KR20110004651A - 고체 상태 드라이브 장치 및 그것의 구동 방법 - Google Patents
고체 상태 드라이브 장치 및 그것의 구동 방법 Download PDFInfo
- Publication number
- KR20110004651A KR20110004651A KR1020090062193A KR20090062193A KR20110004651A KR 20110004651 A KR20110004651 A KR 20110004651A KR 1020090062193 A KR1020090062193 A KR 1020090062193A KR 20090062193 A KR20090062193 A KR 20090062193A KR 20110004651 A KR20110004651 A KR 20110004651A
- Authority
- KR
- South Korea
- Prior art keywords
- input
- output
- command
- context
- output command
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Abstract
본 발명은 고체 상태 드라이브(Solid State Drive) 장치에 관한 것으로, 더욱 상세하게는 응답 시간(Response Time)을 향상시킨 고체 상태 드라이브 장치에 관한 것이다.
본 발명의 실시예에 따른 고체 상태 드라이브 장치는 호스트로부터 전송된 입출력 명령어를 저장하는 입출력 인터페이스부; 및 상기 입출력 명령어를 처리하는 메모리 컨트롤러를 포함한다. 상기 메모리 컨트롤러는 상기 입출력 인터페이스부로부터 전송된 입출력 명령어를 교차로 처리하는 제1 및 제2 입출력 컨텍스트; 및 상기 제1 및 제2 입출력 컨텍스트의 동작을 제어하는 입출력 스케쥴러를 포함한다. 상기 입출력 스케쥴러는 상기 제1 입출력 컨텍스트가 상기 입출력 인터페이스부로부터 전송된 입출력 명령어를 실행하는 동안 상기 입출력 명령어의 실행 시간이 데드라인 시간을 초과한 경우 상기 제1 입출력 컨텍스트의 동작을 정지시키고, 상기 제2 입출력 컨텍스트에 다음 입출력 명령어를 전송시킨다. 상기 입출력 스케쥴러는 상기 제2 입출력 명령어의 실행 시간이 종료된 시간부터 데드라인 시간까지, 상기 제1 입출력 명령어의 작업을 재진행한다. 따라서, 본 발명에 따른 고체 상태 드라이브 장치는 응답 시간을 감소시킬 수 있다.
Description
본 발명은 고체 상태 드라이브(Solid State Drive) 장치에 관한 것으로, 더욱 상세하게는 응답 시간(Response Time)을 감소시킨 고체 상태 드라이브 장치에 관한 것이다.
최근의 스토리지 시스템(Storage System)은 플래시 메모리 장치(Flash Memory Device)로 구성된다. 플래시 메모리 장치는 데이터 덮어쓰기(Data Overwrite) 동작이 불가능하다. 따라서, 플래시 메모리 장치는 프로그램 동작(Program Operation)을 수행하기 위하여 블록 소거(Block Erase) 동작을 먼저 처리한다. 그리고, 플래시 메모리 장치 내 블록들은 프로그램할 수 있는 횟수가 정해져 있다. 따라서, 플래시 메모리 장치는 웨어-레벨링(Wear-leveling) 기술이 중요하다. 즉, 하드 디스크 드라이브(Hard Disk Drive) 장치와는 다르게 블록들 간의 균등한 마모도를 유지하는 것이 스토리지 시스템의 수명을 결정하는 중요한 기술 중의 하나이다.
상술한 플래시 메모리 장치는 복수의 물리적인 블록(Physical Block)들을 포 함한다. 물리적인 블록은 유효한 페이지(Valid Page), 유효하지 않은 페이지(Invalid Page) 그리고 클린 페이지(Clean Page)로 구성된다. 플래시 메모리 장치에 프로그램 동작이 수행되는 경우를 가정한다. 만약 플래시 메모리 장치가 소거된 페이지를 포함하지 않은 경우 프로그램 동작을 수행할 수 없다. 즉, 프로그램 동작이 수행되기 위해서는 블록 단위의 소거 동작이 선행되어야 한다. 이러한 원인을 이유로 클린 페이지가 없는 블록 내 유효한 페이지는 다른 블록으로 카피(Copy)되고, 클린 페이지가 없는 블록에는 소거 동작이 실행된다. 이러한 동작은 머지 동작(Merge Operation) 또는 가비지 수집(Garbage Collection)의 과정이 된다.
본 발명의 목적은 고체 상태 드라이브 장치의 응답 시간을 단축시켜 성능을 향상시키는 데 있다.
본 발명의 실시예에 따른 고체 상태 드라이브 장치는 호스트로부터 전송된 입출력 명령어를 저장하는 입출력 인터페이스부; 및 상기 입출력 명령어를 처리하는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는 상기 입출력 인터페이스부로부터 전송된 입출력 명령어를 교차로 처리하는 제1 및 제2 입출력 컨텍스트; 및 상기 제1 및 제2 입출력 컨텍스트의 동작을 제어하는 입출력 스케쥴러를 포함하되, 상기 입출력 스케쥴러는 상기 제1 입출력 컨텍스트가 상기 입출력 인터페이스부로부터 전송된 입출력 명령어를 실행하는 동안 상기 입출력 명령어의 실행 시간 이 데드라인 시간을 초과한 경우 상기 제1 입출력 컨텍스트의 동작을 정지시키고, 상기 제2 입출력 컨텍스트에 다음 입출력 명령어를 전송시킨다.
실시 예로서, 상기 입출력 스케쥴러는 상기 제2 입출력 명령어의 실행 시간이 종료된 시간부터 데드라인 시간까지, 상기 제1 입출력 명령어의 작업을 재진행한다.
실시 예로서, 상기 입출력 스케쥴러는 상기 제1 입출력 컨텍스트의 동작이 정지된 경우 상기 제1 입출력 컨텍스트의 상태 정보를 저장한다.
실시 예로서, 상기 입출력 인터페이스부는 상기 입출력 명령어를 저장하는 명령어 큐(Command Queue)를 포함하되, 상기 명령어 큐 각각의 입출력 명령어에 대응하는 데이터를 임시로 저장하는 버퍼를 더 포함한다.
실시 예로서, 상기 입출력 인터페이스부는 S-ATA, SAS 인터페이스들 중 하나를 포함한다.
실시 예로서, 상기 제1 입출력 컨텍스트는 가비지 컬렉션(Garbage Collection) 동작, 머지(Merge) 동작, 웨어-레벨링(Wear-leveling) 동작 또는 블록 카피백(Block Copyback) 동작 중 적어도 하나를 수행한다.
실시 예로서, 데이터를 저장하는 플래시 메모리 장치; 및 상기 입출력 명령어에 따라 상기 플래시 메모리 장치를 제어하는 플래시 메모리 컨트롤러를 더 포함한다.
본 발명의 실시예에 따른 고체 상태 드라이브 장치의 구동 방법은 호스트로부터 전송된 입출력 명령어를 전송받는 단계; 상기 전송된 제1 입출력 명령어를 실 행하는 단계; 및 상기 제1 입출력 명령어의 실행 시간이 데드라인 시간을 초과하는 경우 상기 제1 입출력 명령어의 실행을 정지하고, 상기 제1 입출력 명령어의 작업 내용을 저장하는 단계; 및 상기 입출력 인터페이스부로부터 전송된 제2 입출력 명령어를 실행하는 단계를 포함한다.
실시 예로서, 상기 제2 입출력 명령어의 실행 시간이 종료된 시간부터 데드라인 시간까지, 상기 제1 입출력 명령어의 작업을 재진행하는 단계를 포함한다.
본 발명은 고체 상태 드라이브 장치의 응답 시간을 감소시켜 성능을 향상시킬 수 있다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시예를 첨부된 도면을 참조하여 설명한다.
도 1은 본 발명의 실시예에 따른 고체 상태 드라이브 장치 및 이에 접속된 호스트를 도시한 블록도이다.
도 1을 참조하면, 본 발명의 실시예에 따른 고체 상태 드라이브 장치(100)는 메모리 장치(110)와 이를 제어하는 메모리 컨트롤러(120)를 포함한다. 메모리 장치(110)는 세컨더리 저장장치(Secondary Storage)로서 대용량의 데이터를 저장하도록 구성된다. 일반적으로 세컨더리 저장장치는 하드 디스크 드라이브(HDD), 광학 디스크 드라이브(ODD) 등이 있으나, 본 발명의 실시예에 따른 메모리 장치(110)는 플래시 메모리(Flash Memory)를 포함한다.
메모리 장치(110)는 제1 내지 제4 채널(Channel1-Channel4)을 포함한다. 제1 내지 제4 채널(Channel1-Channel4)들 각각에는 4개의 플래시 메모리(Flash Memory)가 연결된다. 바람직한 실시예로서, 하나의 채널(channel)에는 2 Gbyte(기가 바이트)의 플래시 메모리가 4개씩 연결된다. 제1 내지 제4 채널(Channel1-Channel4)들 각각은 4개의 플래시 메모리를 포함하도록 도시되었으나, 그 이상의 플래시 메모리를 포함하도록 구현될 수 있다. 또한, 제1 내지 제4 채널(Channel1-Channel4)을 포함한 메모리 장치(110)가 도시되었으나, 그 이상의 채널을 포함하도록 구현될 수 있다.
메모리 컨트롤러(120)는 제1 내지 제4 플래시 메모리 컨트롤러(121-124), 버퍼(125), 호스트 인터페이스부(126) 및 프로세서(127)을 포함한다. 제1 내지 제4 플래시 메모리 컨트롤러(121-124) 각각은 제1 내지 제4 채널(Channel1-Channel4)들 각각에 연결된 복수의 플래시 메모리들을 제어한다. 즉, 제1 플래시 메모리 컨트롤러(121)는 제1 채널(Channel1)에 연결된 복수의 플래시 메모리들을 제어한다. 제2 플래시 메모리 컨트롤러(122)는 제2 채널(Channel2)에 연결된 복수의 플래시 메모리들을 제어한다. 제3 플래시 메모리 컨트롤러(123)는 제3 채널(Channel3)에 연결된 복수의 플래시 메모리들을 제어한다. 제4 플래시 메모리 컨트롤러(124)는 제4 채널(Channel4)에 연결된 복수의 플래시 메모리들을 제어한다.
버퍼(125)는 호스트(130)로 전송될 데이터를 임시로 저장하거나 호스트(130)로부터 전송된 데이터를 메모리 장치(110)에 저장하기 위하여 임시로 저장한다. 바 람직한 실시예로서, 버퍼(125)는 다이나믹 랜덤 억세스 메모리(DRAM)로 구현된다.
호스트 인터페이스부(126)는 메모리 장치(110)와 호스트(130)를 상호 연결한다. 본 발명의 실시예에 따른 호스트 인터페이스부(126)는 S-ATA(Serial Advanced Technology Attachment) 인터페이스를 예시한다. 또는, 호스트 인터페이스부(126)는 SAS(Serial Attached SCSI) 인터페이스들 포함할 것이다.
프로세서(127)는 제1 내지 제4 플래시 메모리 컨트롤러(121-124), 버퍼(125) 그리고 호스트 인터페이스부(126)를 제어한다. 일반적으로, 프로세서(127)는 ARM(TM)사의 ARM7TDMI(TM)로 구현된다.
호스트(130)는 호스트 인터페이스부(126)에 입출력 명령어를 전송한다. 입출력 명령어는 메모리 장치(110)로부터 데이터를 독출하거나 메모리 장치(110)에 데이터를 기입하는 동작을 포함한다.
호스트 인터페이스부(126)는 호스트(130)로부터 전송된 입출력 명령어를 저장하는 명령어 큐(Command Queue)를 포함한다. 바람직한 실시예로서, 명령어 큐는 S-ATA2 인터페이스에 적용되는 NCQ(Native Command Queuing)를 예시한다. NCQ(Native Command Queuing)는 S-ATA 인터페이스에서 적용된 CQ를 확장한 것이다. CQ(Command Queuing)는 호스트로부터 전송된 명령어 미리 저장하고, 저장된 명령어를 프로세서에 전송한다. NCQ는 사용자가 명령어를 최대한 효율적으로 처리할 수 있도록 필요한 데이터가 어느 부분에 있는지를 미리 확인한다. 명령어 큐 및 명령어 큐의 동작은 도 3를 통하여 상세히 설명될 것이다.
바람직한 실시예로서, 고체 상태 드라이브 장치(100)의 메모리 컨트롤 러(120)은 실시간 운영체제(Real Time Operation System)에 의하여 구동된다. 실시간 운영체제는 실시간 응용 프로그램을 처리하기 위하여 임베디드 시스템에 적용된다.
프로세서(270)가 명령어 큐(Command Queue)로부터 전송된 입출력 명령어를 실행한다. 상기 입출력 명령어의 실행이 가비지 컬렉션 동작, 머지 동작, 웨어-레벨링 동작 또는 블록 카피백(Block Copyback) 동작 등이 중첩되는 경우 워스트 케이스 입출력(Worst Case Input/Output)이 발생된다. 워스트 케이스 입출력이란 입출력 명령어에 의하여 응답 시간이 데드라인(Deadline) 시간을 초과하는 경우이다. 일반적으로, 워스트 케이스 입출력에 해당하는 입출력 명령어의 실행 시간은 호스트(130)에서 물리적으로 요구하는 타임-아웃 조건(Time-out Condition)을 벗어나게 된다. 따라서, 명령어 큐는 호스트(130)로부터 전송된 입출력 명령어를 저장하지 못하는 요청 파이프라인 스톨드(Request Pipeline-stalled) 현상이 발생될 것이다. 이러한 현상은 도 2를 통하여 상세히 설명될 것이다.
도 2은 도 1에 도시된 고체 상태 드라이브 장치의 요청 파이프라인 스톨드 현상을 도시한 그래프이다.
도 2을 참조하면, 그래프의 X축은 입출력 명령어 카운트(I/O Command Count)이고, Y축은 응답 시간(Response time)이다. A 점선은 실시간 운영체제(Real Time Operation System)에 있어서 응답속도를 나타낸다. B 점선은 명령어 큐의 스톨 케이스(Stall Case)를 나타낸다. 스톨 케이스란 명령어 큐에 입출력 명령어가 저장되지 못하는 현상을 의미한다.
입출력 명령어 카운트가 2인 경우 응답 시간(Response time)은 약 240ms이다. 이 때 명령어 큐의 스톨 케이스가 발생된다. 또한, 입출력 명령어 카운트가 11인 경우 응답 시간(Response time)이 약 240ms이다. 이 때도 마찬가지로 명령어 큐의 스톨 케이스가 발생된다. 즉, 입출력 명령어의 응답 시간이 일정 범위(예를 들면, 240ms)를 넘게 되면, 요청 파이프라인 스톨드 현상에 의하여 고체 상태 드라이브 장치(100)의 응답속도는 떨어지고, 성능은 저하된다.
요청 파이프라인 스톨드 현상을 방지하기 위하여 본 발명에 따른 프로세서는 명령어 큐에 저장된 입출력 명령어를 교차적으로 실행하는 제1 및 제2 입출력 컨텍스트를 포함한다. 제1 및 제2 입출력 컨텍스트 및 이들의 동작은 도 3 내지 도 6를 통하여 상세히 설명된다.
도 3는 도 1에 도시된 고체 상태 드라이브 장치를 상세히 도시한 블록도이다.
도 1 및 도 3를 참조하면, 호스트 인터페이스부(126)은 호스트(130)로부터 전송된 입출력 명령어를 저장하는 명령어 큐를 포함한다. 바람직한 실시예로서, 명령어 큐는 32개의 입출력 명령어를 저장하도록 구성될 것이다. 프로세서(127)는 입출력 명령어를 실행하는 제1 및 제2 입출력 컨텍스트(127A, 128A)를 포함한다. 제1 및 제2 입출력 컨텍스트(127A, 128A) 각각은 제1 및 제2 컨텍스트 버퍼(127B, 128B)를 포함한다.
제1 컨텍스트 버퍼(127B)는 제1 입출력 컨텍스트(127A)가 워스트 케이스 입출력 등의 원인에 의하여 정지되는 경우 제1 입출력 컨텍스트(127A)의 상태 정보를 저장한다. 또한, 제2 컨텍스트 버퍼(128B)는 제2 입출력 컨텍스트(128A)가 워스트 케이스 입출력 등의 원인에 의하여 정지되는 경우 제2 입출력 컨텍스트(128A)의 상태 정보를 저장한다. 입출력 스케쥴러(129)는 제1 및 제2 입출력 컨텍스트(127A, 128A)의 동작을 제어한다.
입출력 스케쥴러(129)는 명령어 큐에 저장된 입출력 명령어를 순차적으로 처리하도록 제1 및 제2 입출력 컨텍스트(127A-128A)를 제어할 것이다. 또한, 입출력 스케쥴러(129)는 명령어 큐에 저장된 입출력 명령어를 우선 순위에 따라 처리하도록 제1 및 제2 입출력 컨텍스트(127A-128A)를 제어할 것이다.
예를 들면, 제1 입출력 컨텍스트(127A)는 워스트 케이스 입출력에 해당하는 입출력 명령어를 실행한다. 제2 입출력 컨텍스트(128A)는 워스트 케이스 입출력에 해당하지 않는 단순한 프로그램 동작, 독출 동작, 오버 프로비젼 영역부(125A)에 데이터를 기입하는 동작 등에 해당하는 입출력 명령어를 실행한다.
버퍼(125)는 오버 프로비젼 영역부(Over-provision area ; 125A)을 포함한다.
오버 프로비젼 영역부(125A)는 메모리 장치(110)가 머지 동작, 블록 카피 등을 수행하는 동안 메모리 장치(110)에 저장될 데이터를 임시적으로 저장한다. 오버 프로비젼 영역부(125A)는 버퍼(125) 내에 DRAM(Dynamic Random Access Memory)으로 구성될 것이다. 또는 오버 프로비젼 영역부(125A)는 버퍼(125)외에 추가적인 메모리로서 SLC(Single-Level Cell)로 구성되는 플래시 메모리 장치 또는 PRAM(Phase-change Ramdom Access Memory)으로 구성될 것이다.
바람직한 실시예로서, 본 발명은 제1 및 제2 입출력 컨텍스트(127A, 128A)를 예시하였으나, 그 이상의 입출력 컨텍스트를 포함할 수 있다. 즉, 제1 및 제2 입출력 컨텍스트(127A, 128A) 모두 워스트 케이스 입출력인 경우 또 다른 입출력 컨텍스트를 통하여 새로운 입출력 명령어를 처리한다.
제1 입출력 컨텍스트(127A)는 입출력 스케쥴러(129)의 제어에 응답하여 명령어 큐에 저장된 A 입출력 명령어를 전송받는다. 제1 입출력 컨텍스트(127A)는 A 입출력 명령어를 실행한다.
제1 입출력 컨텍스트(127A)가 A 입출력 명령어를 실행하는 동작은 도 3을 통하여 상세히 설명될 것이다.
도 4은 도 3에 도시된 A 입출력 명령어의 실행 시간을 도시한 타이밍도이다.
도 3 및 도 4을 참조하면, 예를 들면, 제1 입출력 컨텍스트(127A)는 A 입출력 명령어를 실행하여 메모리 장치(110)에 데이터를 프로그램하는 동작을 수행한다. 이 경우, 메모리 장치(110)가 클린 페이지(Clean Page) 또는 클린 블록(Clean Block)을 가지고 있지 않은 경우를 가정한다. 메모리 장치(110)에는 가비지 컬렉션 동작, 머지 동작, 웨어-레벨링 동작 또는 블록 카피백 동작 등이 중첩되어 발생될 것이다.
따라서, 제1 입출력 컨텍스트(127A)가 A 입출력 명령어를 실행하는 시간은 데드라인 타임을 초과할 것이다. 즉, 제1 입출력 컨텍스트(127A)에 의한 응답 시간 지연은 고체 상태 드라이브 장치(100)의 성능을 저하시킬 것이다.
따라서, 입출력 스케쥴러(129)는 제1 입출력 컨텍스트(127A)의 동작을 정 지(Suspend)시키고, 제1 입출력 컨텍스트(127A)의 진행중인 작업 정보를 제1 컨텍스트 버퍼(127B)에 저장한다.
계속해서 도 3를 참조하면, 제2 입출력 컨텍스트(128A)는 입출력 스케쥴러(129)의 제어에 응답하여 명령어 큐에 저장된 B 입출력 명령어를 전송받는다. 제1 입출력 컨텍스트(128A)는 B 입출력 명령어를 실행한다. 제2 입출력 컨텍스트(128A)가 B 입출력 명령어를 실행하는 동작은 도 5을 통하여 상세히 설명될 것이다.
도 5은 도 3에 도시된 B 입출력 명령어의 실행 시간을 도시한 타이밍도이다.
도 3 및 도 5을 참조하면, 입출력 스케쥴러(129)는 제2 입출력 컨텍스트(128A)에 독출 동작과 같이 실행 시간이 짧은 입출력 명령어가 전송되도록 호스트 인터페이스부(126)를 제어한다. 예를 들면, 제2 입출력 컨텍스트(128A)는 B 입출력 명령어를 실행하여 메모리 장치(110)로부터 데이터를 독출하는 동작을 수행한다.
일반적으로, 명령어를 처리하고 데드 라인 시간까지 남은 시간은 슬랙 타임(Slack Time) 또는 랙서티(Laxity)라 정의된다. 따라서, 제2 입출력 컨텍스트(128A)가 B 입출력 명령어를 실행을 종료하고 데드라인 시간까지 남은 시간(즉, 랙서티(Laxity)) 동안 입출력 스케쥴러(129)는 정지된 제1 입출력 컨텍스트(127A)를 재진행시킨다.
본 발명에 따른 고체 상태 드라이브 장치의 구동 방법은 도 6를 통하여 상세히 설명된다.
도 6는 도 1 및 도 3에 도시된 고체 상태 드라이브 장치의 구동 방법을 도시한 순서도이다.
도 1 내지 도 6를 참조하면, 본 발명의 실시예에 따른 고체 상태 드라이브 장치(100)의 구동 방법은 아래와 같다.
S01 단계에서, 제1 입출력 컨텍스트(127A)는 제1 입출력 명령어를 실행한다.
S02 단계에서, 입출력 스케쥴러(129)는 제1 입출력 컨텍스트(127A)에 의한 제1 입출력 명령어의 실행 시간(T1)이 데드라인 타임(Tdl)을 초과하는지 판단한다.
그렇다면, S03 단계에서 입출력 스케쥴러(129)는 제1 입출력 컨텍스트(127A)을 정지시킨다. 그리고, 제1 입출력 컨텍스트(127A)는 진행된 작업 정보를 제1 컨텍스트 버퍼(127B)에 저장하고, S04 단계를 진행한다. 그렇지 않다면, S06 단계에서, 제1 입출력 컨텍스트(127A)는 실행 결과를 메모리 장치(110) 또는 오버 프로비젼 영역(125A)에 저장한다.
S04 단계에서, 제2 입출력 컨텍스트(128A)는 제2 입출력 명령어를 실행한다.
S05 단계에서, 입출력 스케쥴러(129)는 제2 입출력 컨텍스트(128A)가 제2 입출력 명령어를 실행하고, 남은 시간(Laxity) 동안 제1 입출력 컨텍스트(127A)을 재진행시킨다. 제1 입출력 컨텍스트(127A)의 작업이 모두 종료되면, S06 단계를 진행한다.
본 발명의 실시예에 따른 고체 상태 드라이브 장치의 구동 결과는 도 7를 통하여 상세히 설명된다.
도 7은 도 1에 도시된 고체 상태 드라이브 장치의 구동 결과를 도시한 그래 프이다.
도 7을 참조하면, 그래프의 X축은 입출력 명령어 카운트(I/O Command Count)이고, Y축은 호출 시간(Latency)이다. A 점선은 일반적인 기술(the prior art)에 따른 구동 결과를 나타낸다. B 실선은 본 발명의 실시예에 따른 구동 결과를 나타낸다.
A 점선은 호출 시간이 500ms 이상인 경우가 많이 발생한다. 도 2에 도시된 그래프에 따르면, 이 경우 스톨 케이스가 발생될 것이다. 이에 반하여, 본 발명에 따른 B 실선은 대개 호출 시간이 240ms 이내이다. 만약 메모리 컨트롤러(120)가 데드라인 시간을 초과하지 않도록 관리한다면, 모든 입출력 명령어의 실행 시간은 240ms 이내일 것이다. 따라서, 본 발명은 고체 상태 드라이브 장치의 평균적인 응답 시간 또는 호출 시간을 감소시킬 수 있다.
도 8은 본 발명의 또 다른 실시예에 따른 고체 상태 드라이브 장치 및 이에 접속된 호스트를 도시한 블록도이다.
도 8을 참조하면, 본 발명의 또 다른 실시예에 따른 고체 상태 드라이브 장치(200)는 메모리 장치(210)와 이를 제어하는 메모리 컨트롤러(220)를 포함한다.
메모리 장치(210)는 세컨더리 저장장치(Secondary Storage)로서 대용량의 데이터를 저장하도록 구성된다. 메모리 장치(210)는 제1 내지 제4 채널(Channel1-Channel4)을 포함한다. 제1 내지 제4 채널(Channel1-Channel4)들 각각에는 4개의 플래시 메모리(Flash Memory)가 연결된다. 바람직한 실시예로서, 하나의 채널(channel)에는 2 Gbyte(기가 바이트)의 플래시 메모리가 4개씩 연결된다. 제1 내 지 제4 채널(Channel1-Channel4)들 각각은 4개의 플래시 메모리를 포함하도록 도시되었으나, 그 이상의 플래시 메모리를 포함하도록 구현될 수 있다. 또한, 제1 내지 제4 채널(Channel1-Channel4)을 포함한 메모리 장치(210)가 도시되었으나, 그 이상의 채널을 포함하도록 구현될 수 있다.
메모리 컨트롤러(220)는 제1 내지 제4 플래시 메모리 컨트롤러(221-224), 버퍼(225), 호스트 인터페이스부(226) 및 제1 및 제2 프로세서(227-228)을 포함한다. 제1 내지 제4 플래시 메모리 컨트롤러(221-224) 각각은 제1 내지 제4 채널(Channel1-Channel4)들 각각에 연결된 복수의 플래시 메모리들을 제어한다.
바람직한 실시예로서, 버퍼(225)는 다이나믹 랜덤 억세스 메모리(DRAM)로 구현된다. 버퍼(225)는 호스트(230)로 전송될 데이터를 임시로 저장하거나 호스트(230)로부터 전송된 데이터를 메모리 장치(210)에 저장하기 위하여 임시로 저장한다.
호스트 인터페이스부(226)는 메모리 장치(210)와 호스트(230)를 상호 연결한다. 본 발명의 실시예에 따른 호스트 인터페이스부(226)는 S-ATA(Serial Advanced Technology Attachment) 인터페이스를 예시한다. 또한, 호스트 인터페이스부(226)는 SAS(Serial Attached SCSI) 인터페이스들 포함할 것이다.
제1 및 제2 프로세서(227-228) 각각은 제1 내지 제4 플래시 메모리 컨트롤러(221-224), 버퍼(225) 그리고 호스트 인터페이스부(226)를 제어한다. 호스트(230)는 호스트 인터페이스부(226)에 입출력 명령어를 전송한다. 입출력 명령어는 메모리 장치(210)로부터 데이터를 독출하거나 메모리 장치(210)에 데이터를 기 입하는 동작을 포함한다.
호스트 인터페이스부(226)는 호스트(230)로부터 전송된 입출력 명령어를 저장하는 명령어 큐(Command Queue)를 포함한다. 바람직한 실시예로서, 명령어 큐는 S-ATA2 인터페이스에 적용되는 NCQ(Native Command Queuing)를 예시한다.
제1 프로세서(227)은 도 3에 도시된 제1 입출력 컨텍스트(127A) 기능을 수행하고, 제2 프로세서(228)은 도 3에 도시된 제2 입출력 컨텍스트(128A) 기능을 수행한다.
제1 및 제2 프로세서(227-228)은 상호 독립적으로 동작한다. 즉, 제1 프로세서(227)가 워스트 케이스 입출력에 해당하는 입출력 명령어를 실행하는 동안 제2 프로세서(228)는 새로운 입출력 명령어를 처리할 수 있다. 따라서, 본 발명의 또 다른 실시예에 따른 고체 상태 드라이브 장치(200)는 평균적인 응답 시간을 향상시킬 수 있다.
도 9는 도 1에 도시된 고체 상태 드라이브 장치를 포함하는 컴퓨터 시스템을 도시한 블록도이다. 도 9를 참조하면, 본 발명에 따른 컴퓨팅 시스템(300)은 버스(370)에 전기적으로 연결된 중앙처리장치(330), 사용자 인터페이스(340), 베이스밴드 칩셋(baseband chipset)과 같은 모뎀(360), S-ATA 인터페이스부(320), 그리고 고체 상태 드라이브 장치(310)를 포함한다.
중앙처리장치(330)는 S-ATA 인터페이스부(320)를 통하여 고체 상태 드라이브 장치(310)를 제어한다. 고체 상태 드라이브 장치(310)는 도 1 또는 도 8에 도시된 고체 상태 드라이브 장치를 포함할 것이다.
본 발명에 따른 컴퓨팅 시스템(300)이 모바일 장치(Mobile Device)인 경우, 컴퓨팅 시스템(300)의 동작 전압을 공급하기 위한 배터리(350)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램(Mobile DRAM), 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
도 1은 본 발명의 실시예에 따른 고체 상태 드라이브 장치 및 이에 접속된 호스트를 도시한 블록도이다.
도 2은 도 1에 도시된 고체 상태 드라이브 장치의 요청 파이프라인 스톨드 현상을 도시한 그래프이다.
도 3는 도 1에 도시된 고체 상태 드라이브 장치를 상세히 도시한 블록도이다.
도 4은 도 3에 도시된 A 입출력 명령어의 실행 시간을 도시한 타이밍도이다.
도 5은 도 3에 도시된 B 입출력 명령어의 실행 시간을 도시한 타이밍도이다.
도 6는 도 1 및 도 3에 도시된 고체 상태 드라이브 장치의 구동 방법을 도시한 순서도이다.
도 7은 도 1에 도시된 고체 상태 드라이브 장치의 구동 결과를 도시한 그래프이다.
도 8은 본 발명의 또 다른 실시예에 따른 고체 상태 드라이브 장치 및 이에 접속된 호스트를 도시한 블록도이다.
도 9는 도 1에 도시된 고체 상태 드라이브 장치를 포함하는 컴퓨터 시스템을 도시한 블록도이다.
* 도면의 주요 부분에 대한 부호 설명 *
100; 고체 상태 드라이브 장치 110; 메모리 장치
120; 메모리 컨트롤러 121; 제1 플래시 메모리 컨트롤러
122; 제2 플래시 메모리 컨트롤러 123; 제3 플래시 메모리 컨트롤러
124; 제4 플래시 메모리 컨트롤러 125; 버퍼
126; 호스트 인터페이스부 127; 프로세서
127A; 제1 입출력 컨텍스트 128A; 제2 입출력 컨텍스트
129; 입출력 스케쥴러 130; 호스트
Claims (9)
- 호스트로부터 전송된 입출력 명령어를 저장하는 입출력 인터페이스부; 및상기 입출력 명령어를 처리하는 메모리 컨트롤러를 포함하되,상기 메모리 컨트롤러는,상기 입출력 인터페이스부로부터 전송된 입출력 명령어를 교차로 처리하는 제1 및 제2 입출력 컨텍스트; 및상기 제1 및 제2 입출력 컨텍스트의 동작을 제어하는 입출력 스케쥴러를 포함하되,상기 입출력 스케쥴러는,상기 제1 입출력 컨텍스트가 상기 입출력 인터페이스부로부터 전송된 입출력 명령어를 실행하는 동안 상기 입출력 명령어의 실행 시간이 데드라인 시간을 초과한 경우 상기 제1 입출력 컨텍스트의 동작을 정지시키고, 상기 제2 입출력 컨텍스트에 다음 입출력 명령어를 전송시키는 고체 상태 드라이브 장치.
- 제 1 항에 있어서,상기 입출력 스케쥴러는,상기 제2 입출력 명령어의 실행 시간이 종료된 시간부터 데드라인 시간까지, 상기 제1 입출력 명령어의 작업을 재진행하는 고체 상태 드라이브 장치.
- 제 1 항에 있어서,상기 입출력 스케쥴러는,상기 제1 입출력 컨텍스트의 동작이 정지된 경우 상기 제1 입출력 컨텍스트의 진행중인 작업 정보를 저장하는 고체 상태 드라이브 장치.
- 제 1 항에 있어서,상기 입출력 인터페이스부는 상기 입출력 명령어를 저장하는 명령어 큐(Command Queue)를 포함하되,상기 명령어 큐 각각의 입출력 명령어에 대응하는 데이터를 임시로 저장하는 버퍼를 더 포함하는 고체 상태 드라이브 장치.
- 제 1 항에 있어서,상기 입출력 인터페이스부는 S-ATA, SAS 인터페이스들 중 하나를 포함하는 고체 상태 드라이브 장치.
- 제 1 항에 있어서,상기 제1 입출력 컨텍스트는 가비지 컬렉션(Garbage Collection) 동작, 머지(Merge) 동작, 웨어-레벨링(Wear-leveling) 동작 또는 블록 카피백(Block Copyback) 동작 중 적어도 하나를 수행하는 고체 상태 드라이브 장치.
- 제 1 항에 있어서,데이터를 저장하는 플래시 메모리 장치; 및상기 입출력 명령어에 따라 상기 플래시 메모리 장치를 제어하는 플래시 메모리 컨트롤러를 더 포함하는 고체 상태 드라이브 장치.
- 고체 상태 드라이브 장치의 구동 방법에 있어서:호스트로부터 전송된 입출력 명령어를 전송받는 단계;상기 전송된 제1 입출력 명령어를 실행하는 단계; 및상기 제1 입출력 명령어의 실행 시간이 데드라인 시간을 초과하는 경우 상기 제1 입출력 명령어의 실행을 정지하고, 상기 제1 입출력 명령어의 작업 내용을 저장하는 단계; 및상기 입출력 인터페이스부로부터 전송된 제2 입출력 명령어를 실행하는 단계를 포함하는 구동 방법.
- 제 8 항에 있어서,상기 제2 입출력 명령어의 실행 시간이 종료된 시간부터 데드라인 시간까지, 상기 제1 입출력 명령어의 작업을 재진행하는 단계를 더 포함하는 구동 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090062193A KR101662824B1 (ko) | 2009-07-08 | 2009-07-08 | 고체 상태 드라이브 장치 및 그것의 구동 방법 |
US12/820,449 US8341374B2 (en) | 2009-07-08 | 2010-06-22 | Solid state drive and related method of scheduling operations |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090062193A KR101662824B1 (ko) | 2009-07-08 | 2009-07-08 | 고체 상태 드라이브 장치 및 그것의 구동 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110004651A true KR20110004651A (ko) | 2011-01-14 |
KR101662824B1 KR101662824B1 (ko) | 2016-10-06 |
Family
ID=43428332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090062193A KR101662824B1 (ko) | 2009-07-08 | 2009-07-08 | 고체 상태 드라이브 장치 및 그것의 구동 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8341374B2 (ko) |
KR (1) | KR101662824B1 (ko) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013094913A1 (ko) * | 2011-12-23 | 2013-06-27 | 한양대학교 산학협력단 | 입출력 핀을 이용한 다중 웨이 낸드 플래시 제어 장치 및 방법 |
KR101363422B1 (ko) * | 2012-10-04 | 2014-02-14 | 주식회사 디에이아이오 | 비휘발성 메모리 시스템 |
KR101366960B1 (ko) * | 2011-12-23 | 2014-02-25 | 한양대학교 산학협력단 | 입출력 핀을 이용한 다중 웨이 낸드 플래시 제어 장치 및 방법 |
KR20150143918A (ko) * | 2014-06-13 | 2015-12-24 | 고려대학교 산학협력단 | 요구 성능 보장 방법 및 요구 성능 보장 장치 |
US9262098B2 (en) | 2012-02-02 | 2016-02-16 | SK Hynix Inc. | Pipelined data I/O controller and system for semiconductor memory |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7913032B1 (en) * | 2007-04-25 | 2011-03-22 | Apple Inc. | Initiating memory wear leveling |
US8479080B1 (en) * | 2009-07-12 | 2013-07-02 | Apple Inc. | Adaptive over-provisioning in memory systems |
US8959284B1 (en) | 2010-06-28 | 2015-02-17 | Western Digital Technologies, Inc. | Disk drive steering write data to write cache based on workload |
US9268499B1 (en) | 2010-08-13 | 2016-02-23 | Western Digital Technologies, Inc. | Hybrid drive migrating high workload data from disk to non-volatile semiconductor memory |
US9058280B1 (en) | 2010-08-13 | 2015-06-16 | Western Digital Technologies, Inc. | Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time |
US8775720B1 (en) * | 2010-08-31 | 2014-07-08 | Western Digital Technologies, Inc. | Hybrid drive balancing execution times for non-volatile semiconductor memory and disk |
US8782334B1 (en) | 2010-09-10 | 2014-07-15 | Western Digital Technologies, Inc. | Hybrid drive copying disk cache to non-volatile semiconductor memory |
US8949835B2 (en) * | 2010-11-30 | 2015-02-03 | Red Hat, Inc. | Yielding input/output scheduler to increase overall system throughput |
US20120265962A1 (en) | 2011-04-17 | 2012-10-18 | Anobit Technologies Ltd. | High-performance sas target |
US8918595B2 (en) * | 2011-04-28 | 2014-12-23 | Seagate Technology Llc | Enforcing system intentions during memory scheduling |
US20120317377A1 (en) * | 2011-06-09 | 2012-12-13 | Alexander Palay | Dual flash translation layer |
US9158670B1 (en) | 2011-06-30 | 2015-10-13 | Western Digital Technologies, Inc. | System and method for dynamically adjusting garbage collection policies in solid-state memory |
US8713357B1 (en) | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
US9195530B1 (en) | 2011-09-06 | 2015-11-24 | Western Digital Technologies, Inc. | Systems and methods for improved data management in data storage systems |
US8700834B2 (en) * | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US9053008B1 (en) | 2012-03-26 | 2015-06-09 | Western Digital Technologies, Inc. | Systems and methods for providing inline parameter service in data storage devices |
US8959281B1 (en) | 2012-11-09 | 2015-02-17 | Western Digital Technologies, Inc. | Data management for a storage device |
US9634953B2 (en) * | 2013-04-26 | 2017-04-25 | Mediatek Inc. | Scheduler for deciding final output queue by selecting one of multiple candidate output queues and related method |
US9141176B1 (en) | 2013-07-29 | 2015-09-22 | Western Digital Technologies, Inc. | Power management for data storage device |
US9811453B1 (en) * | 2013-07-31 | 2017-11-07 | Juniper Networks, Inc. | Methods and apparatus for a scheduler for memory access |
US9070379B2 (en) | 2013-08-28 | 2015-06-30 | Western Digital Technologies, Inc. | Data migration for data storage device |
US8917471B1 (en) | 2013-10-29 | 2014-12-23 | Western Digital Technologies, Inc. | Power management for data storage device |
US9727248B2 (en) * | 2014-02-05 | 2017-08-08 | Apple Inc. | Dynamic IO operation timeout assignment for a solid state drive |
US9933980B2 (en) | 2014-02-24 | 2018-04-03 | Toshiba Memory Corporation | NAND raid controller for connection between an SSD controller and multiple non-volatile storage units |
US9448742B2 (en) * | 2014-03-27 | 2016-09-20 | Western Digital Technologies, Inc. | Communication between a host and a secondary storage device |
KR102364381B1 (ko) * | 2015-03-06 | 2022-02-18 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작방법 |
US9747659B2 (en) * | 2015-06-07 | 2017-08-29 | Apple Inc. | Starvation free scheduling of prioritized workloads on the GPU |
US10127165B2 (en) | 2015-07-16 | 2018-11-13 | Samsung Electronics Co., Ltd. | Memory system architecture including semi-network topology with shared output channels |
US10108340B2 (en) | 2015-10-21 | 2018-10-23 | Western Digital Technologies, Inc. | Method and system for a common processing framework for memory device controllers |
US9886196B2 (en) | 2015-10-21 | 2018-02-06 | Western Digital Technologies, Inc. | Method and system for efficient common processing in memory device controllers |
JP2017107963A (ja) * | 2015-12-09 | 2017-06-15 | 東京エレクトロン株式会社 | プラズマ処理装置及び成膜方法 |
CN106598742B (zh) * | 2016-12-26 | 2020-01-03 | 湖南国科微电子股份有限公司 | 一种ssd主控内部负载均衡系统及方法 |
TWI616888B (zh) * | 2017-01-17 | 2018-03-01 | 宏碁股份有限公司 | 電子裝置及其電源管理方法 |
CN108415547A (zh) * | 2017-02-10 | 2018-08-17 | 宏碁股份有限公司 | 电子装置及其电源管理方法 |
CN108932106B (zh) * | 2017-05-26 | 2021-07-02 | 上海宝存信息科技有限公司 | 固态硬盘访问方法以及使用该方法的装置 |
KR102395477B1 (ko) | 2017-11-20 | 2022-05-09 | 삼성전자주식회사 | 호스트 메모리에 대한 메모리 액세스를 스케쥴링하는 장치 컨트롤러, 및 이를 포함하는 저장 장치 |
KR20190088734A (ko) * | 2018-01-19 | 2019-07-29 | 에스케이하이닉스 주식회사 | 메모리 인터페이스와, 이를 포함하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
US11693713B1 (en) * | 2019-09-04 | 2023-07-04 | Pure Storage, Inc. | Self-tuning clusters for resilient microservices |
US11797188B2 (en) * | 2019-12-12 | 2023-10-24 | Sk Hynix Nand Product Solutions Corp. | Solid state drive with multiplexed internal channel access during program data transfers |
KR20210080761A (ko) | 2019-12-23 | 2021-07-01 | 삼성전자주식회사 | 컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070111470A (ko) * | 2005-01-20 | 2007-11-21 | 쌘디스크 코포레이션 | 플래시 메모리 시스템들에서 하우스키핑 동작들의 스케쥴링 |
WO2008070798A1 (en) * | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for managing commands of solid-state storage using bank interleave |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007193883A (ja) | 2006-01-18 | 2007-08-02 | Sony Corp | データ記録装置及び方法、及びデータ再生装置及び方法、並びにデータ記録再生装置及び方法 |
KR20080045833A (ko) | 2006-11-21 | 2008-05-26 | 삼성전자주식회사 | 플래쉬 메모리 관리 방법 및 이를 이용하는 플래쉬 메모리시스템 |
US7627621B2 (en) * | 2007-02-12 | 2009-12-01 | Sun Microsystems, Inc. | Method and system for minor garbage collection |
US8756369B2 (en) * | 2008-09-26 | 2014-06-17 | Netapp, Inc. | Priority command queues for low latency solid state drives |
WO2010144587A2 (en) * | 2009-06-12 | 2010-12-16 | Violin Memory, Inc. | Memory system having persistent garbage collection |
-
2009
- 2009-07-08 KR KR1020090062193A patent/KR101662824B1/ko active IP Right Grant
-
2010
- 2010-06-22 US US12/820,449 patent/US8341374B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070111470A (ko) * | 2005-01-20 | 2007-11-21 | 쌘디스크 코포레이션 | 플래시 메모리 시스템들에서 하우스키핑 동작들의 스케쥴링 |
WO2008070798A1 (en) * | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for managing commands of solid-state storage using bank interleave |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013094913A1 (ko) * | 2011-12-23 | 2013-06-27 | 한양대학교 산학협력단 | 입출력 핀을 이용한 다중 웨이 낸드 플래시 제어 장치 및 방법 |
KR101366960B1 (ko) * | 2011-12-23 | 2014-02-25 | 한양대학교 산학협력단 | 입출력 핀을 이용한 다중 웨이 낸드 플래시 제어 장치 및 방법 |
US9262098B2 (en) | 2012-02-02 | 2016-02-16 | SK Hynix Inc. | Pipelined data I/O controller and system for semiconductor memory |
KR101363422B1 (ko) * | 2012-10-04 | 2014-02-14 | 주식회사 디에이아이오 | 비휘발성 메모리 시스템 |
KR20150143918A (ko) * | 2014-06-13 | 2015-12-24 | 고려대학교 산학협력단 | 요구 성능 보장 방법 및 요구 성능 보장 장치 |
Also Published As
Publication number | Publication date |
---|---|
US20110010490A1 (en) | 2011-01-13 |
US8341374B2 (en) | 2012-12-25 |
KR101662824B1 (ko) | 2016-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101662824B1 (ko) | 고체 상태 드라이브 장치 및 그것의 구동 방법 | |
Jung et al. | HIOS: A host interface I/O scheduler for solid state disks | |
US10296231B2 (en) | Data-storage device and data maintenance method thereof | |
US20200334145A1 (en) | Storage device, computer system, and operation method of storage device configured to arbitrarily stop garbage collection | |
TWI484414B (zh) | 用於記憶體之工作排程方法及其記憶體系統 | |
TWI735918B (zh) | 用來進行記憶裝置的存取管理之方法、記憶裝置及其控制器、主裝置以及電子裝置 | |
US20080209109A1 (en) | Interruptible cache flushing in flash memory systems | |
US20130138912A1 (en) | Scheduling requests in a solid state memory device | |
WO2012091798A1 (en) | Controller and method for performing background operations | |
EP2927779B1 (en) | Disk writing method for disk arrays and disk writing device for disk arrays | |
KR101512743B1 (ko) | 반도체 저장 장치 기반 시스템에서 메인 메모리가 없는 직접 메모리 엑세스 시스템 | |
KR20140027894A (ko) | 적응형 압축 비율을 사용하는 플러시 명령들의 빠른 실행 | |
US11385831B2 (en) | Memory controller and storage device including the same | |
US9575887B2 (en) | Memory device, information-processing device and information-processing method | |
CN113924545A (zh) | 基于存储器子系统中的媒体单元的可用性的预测性数据传输 | |
US8914587B2 (en) | Multi-threaded memory operation using block write interruption after a number or threshold of pages have been written in order to service another request | |
CN111045593A (zh) | 用来进行读取加速的方法以及数据存储装置及其控制器 | |
GB2446172A (en) | Control of data transfer | |
KR20100042885A (ko) | 비휘발성 메모리 장치의 동작 방법 | |
KR20100102283A (ko) | 플래시 메모리 장치 및 그 제어 방법 | |
CN114902193B (zh) | 用于调度快闪操作的系统和方法 | |
JP6193189B2 (ja) | Nandバックグラウンド処理制御装置 | |
KR101135313B1 (ko) | 요청 동작을 스케줄링하는 낸드 플래시 메모리 장치 및 방법 | |
KR102076248B1 (ko) | 선택 지연 가비지 컬렉션 방법 및 이를 이용한 메모리 시스템 | |
CN114174977A (zh) | 改进对存储器子系统中的主机起始的请求的处置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant |