KR100869675B1 - 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법 - Google Patents

디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법 Download PDF

Info

Publication number
KR100869675B1
KR100869675B1 KR1020070011751A KR20070011751A KR100869675B1 KR 100869675 B1 KR100869675 B1 KR 100869675B1 KR 1020070011751 A KR1020070011751 A KR 1020070011751A KR 20070011751 A KR20070011751 A KR 20070011751A KR 100869675 B1 KR100869675 B1 KR 100869675B1
Authority
KR
South Korea
Prior art keywords
flash memory
memory control
control command
descriptor
command
Prior art date
Application number
KR1020070011751A
Other languages
English (en)
Other versions
KR20080073128A (ko
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 지인정보기술 주식회사
Priority to KR1020070011751A priority Critical patent/KR100869675B1/ko
Priority to US12/525,553 priority patent/US8296505B2/en
Priority to PCT/KR2008/000431 priority patent/WO2008096968A1/en
Publication of KR20080073128A publication Critical patent/KR20080073128A/ko
Application granted granted Critical
Publication of KR100869675B1 publication Critical patent/KR100869675B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47LDOMESTIC WASHING OR CLEANING; SUCTION CLEANERS IN GENERAL
    • A47L1/00Cleaning windows
    • A47L1/06Hand implements
    • A47L1/09Hand implements for cleaning one side with access from the other side only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2216/00Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
    • G11C2216/12Reading and writing aspects of erasable programmable read-only memories
    • G11C2216/20Suspension of programming or erasing cells in an array in order to read other cells in it

Abstract

본 발명은 플래시 메모리 기반의 저장장치 시스템의 성능을 극대화 하기 위하여, 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및 방법에 관한 것이다. 본 발명에서 제안하는 플래시 메모리 제어 시스템은 기존 플래시 메모리 기반의 저장 장치 시스템에서의 성능상의 병목을 일으키는 주요 원인이 되어왔던 프로세서의 오버헤드를 최소화 하기 위해 디스크립터 배열(descriptor array)기반의 직접 메모리 접근(DMA, direct memory access) 처리 방식을 채택한다. 이러한 방식을 통해 여러 개의 작은 단위의 작업들을 하나의 큰 단위의 작업으로 묶어서 한꺼번에 하드웨어가 처리하도록 함으로써 프로세서의 오버헤드를 최소화할 수 있다. 또한, 이러한 DMA기능을 지원하는 제어장치를 여러 개 두고 각각의 제어장치가 서로 다른 플래시 칩에 동시에 작업을 수행할 수 있도록 함으로써 여러 개의 칩으로 구성된 플래시 저장장치 시스템에서의 병렬 성을 최대화 하도록 한다. 마지막으로 이러한 서로 다른 제어장치들 사이의 우선순위를 두고 저장장치 시스템의 사용자가 체감하는 반응속도를 결정할 수 있는 중요한 작업을 실행하려는 제어장치가 그렇지 않은 제어장치를 선점할 수 있도록 함으로써 사용자의 요청에 대한 전체 플래시 메모리 제어시스템의 지연시간을 최소화 한다.
플래시 메모리, DMA, 디스크립터 배열(descriptor array), 제어, 인터페이스

Description

디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및 방법 {SYSTEM AND METHOD FOR CONTROLING FLASH MEMORY USING DESCRIPTOR ARRAY}
도 1은 종래 기술에 따른 플래시 메모리 제어 시스템의 구성을 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 플래시 메모리 제어 시스템을 이용한 플래시 메모리 저장 시스템의 구성도를 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 플래시 메모리 제어 시스템의 내부 구성을 도시한 도면이다.
도 4는 본 발명의 다른 일실시예에 따른 플래시 메모리 제어 시스템의 내부 구성을 도시한 도면이다.
도 5는 본 발명의 또 다른 일실시예에 따른 플래시 메모리 제어 시스템의 내부 구성을 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 플래시 메모리 제어 시스템에서 시퀀서가 복수의 서브 플래시 메모리 제어부를 관리하는 구성을 도시한 도면이다.
도 7은 본 발명의 일실시예에 따른 플래시 메모리 제어 시스템의 백그라운드 플래시 메모리 제어부에서 디스크립터를 처리하는 일례를 도시한 도면이다.
도 8은 본 발명의 일실시예에 따른 플래시 메모리 제어 방법에서 디스크립 터를 처리하는 흐름을 도시한 흐름도이다.
도 9는 본 발명의 일실시예에 따른 플래시 메모리 제어 방법에서 지우기 명령을 처리하는 흐름을 도시한 흐름도이다.
도 10은 본 발명의 일실시예에 따른 플래시 메모리 제어 방법에서 프로그램 명령을 처리하는 흐름을 도시한 도면이다.
도 11은 본 발명의 일실시예에 따른 플래시 메모리 제어 방법에서 읽기 명령을 처리하는 흐름을 도시한 도면이다.
도 12는 본 발명의 일실시예에 따른 플래시 메모리 제어 방법에서 포그라운드 플래시 메모리 제어 명령 및 백그라운드 플래시 메모리 제어 명령을 각각 처리하는 구성을 도시한 도면이다.
도 13은 본 발명의 일실시예에 따른 플래시 메모리 제어 시스템에서 서브 플래시 메모리 제어부를 관리하는 시퀀서의 동작을 도시한 흐름도이다.
<도면의 주요 부분에 대한 부호의 설명>
301: 프로세서
302: 메모리
303: 플래시 메모리 제어 시스템
304: 인터페이스 장치
310: 디스크립터 배열 수신부
320: 플래시 메모리 제어부
본 발명은 플래시 메모리 제어 시스템에 관한 것으로, 더욱 상세하게는 플래시 메모리 기반의 저장장치 시스템에서 플래시 메모리를 제어하는 장치들과 이들 제어 장치들로 구성된 제어 시스템의 아키텍처에 관한 것이다.
플래시메모리(Flash Memory)는 전원이 공급되지 않아도 저장한 데이터가 사라지지 않고 유지되는 비 휘발성 메모리이며, 칩 전체 혹은 일부를 전기적으로 지우고 다시 쓸 수 있는 기능을 제공한다. 플래시 메모리에 저장된 데이터의 삭제는 칩 전체뿐만 아니라 블록 단위의 삭제도 가능하지만 바이트 단위의 삭제는 불가능 하다.
플래시메모리는 데이터저장 기본 단위인 셀(cell)의 물리적인 구조에 따라 여러 종류가 개발되었다. 대표적인 것이 코드 저장 용으로 주로 사용되는 NOR 형 플래시메모리와 데이터 저장 용으로 주로 사용되는 NAND 형 플래시메모리이다.
NOR 형 플래시메모리는 기존 SRAM이나 ROM과 마찬가지로 바이트 단위로 랜덤하게 접근할 수 있어 코드 수행이 가능하다는 이점이 있지만, 프로그램 속도가 느리고 고집적화에 불리하다는 단점이 있다. NAND 형 플래시메모리는 프로그램 속도가 빠르고 고집적화에 유리한 반면, 랜덤 접근이 불가능하고 기존 SRAM이나 ROM과는 다른 인터페이스를 갖는다는 단점이 있다.
이 중 NAND형 플래시 메모리는 고집적화가 가능하기 때문에 저장장치 시스템에서 많이 활용되고 있다. NAND형 플래시 메모리는 자체적으로 페이지(2KB 혹은 512B)단위의 읽기와 프로그램 연산, 블록단위(128KB 혹은 16KB)의 지우기 연산을 지원하는데 이와 같은 인터페이스는 프로세서가 일반적인 메모리를 구동하는 인터페이스와 호환성이 없게 만든다. 이러한 문제점을 해결하기 위한 종래의 기술로는 프로세서의 메모리 인터페이스 방식으로 NAND형 플래시 메모리를 제어할 수 있는 인터페이스 장치가 있다.
도 1은 종래 기술에 따른 인터페이스 장치에 기반한 플래시 메모리 제어 시스템을 나타낸 블록도이다.
종래의 플래시 메모리 제어 장치는 단순히 프로세서(110)와 NAND 플래시 메모리(140) 사이의 인터페이스 호환성만 제공하는 인터페이스 장치(130)의 역할만을 하여 페이지 단위의 읽기/쓰기, 블록 단위의 지우기 연산만을 지원하거나, 혹은 좀 더 진보된 형태로 여러 개의 페이지를 한꺼번에 읽거나 쓰는 연산이나 여러 블록을 한번에 지우는 연산을 지원하기도 한다.
하지만 이러한 종래의 제어장치들의 경우 프로세서(110)가 인터페이스 장치(130)에게 작업 요청을 할 때 마다 매번 해당 명령과 주소를 알려주고 데이터 전송에도 관여를 해야 한다. 이러한 막대한 프로세서의 오버헤드는 플래시 메모리 기반의 저장장치 시스템에서 성능 상의 병목을 일으키는 주요한 원인이 되어왔다.
또한 저장장치 내에 여러 개의 플래시 칩이 존재할 때 종래의 제어구조에서 이러한 칩들 사이의 병렬 성을 활용하여 성능을 높이려면 역시 프로세서(110)가 관여하여야 하지만 시스템 버스상의 자체적인 병목현상과 상대적으로 느린 프로그램 수행 속도로 인해 칩 단위의 병렬 성을 제대로 활용하기 어렵다.
그리고 종래의 플래시 메모리 제어 시스템의 구조에서는 다음 작업을 시작하기 위해서는 하나의 단위작업이 끝날 때까지 기다려야 하므로 사용자가 체감하는 반응속도를 결정하는 높은 우선순위의 작업이 왔다고 해도 먼저 시작된 작업이 끝나기를 기다려야 하므로 이는 곧 저장 장치의 요청에 대한 지연시간을 증가시키는 결과를 초래한다.
따라서, 본 발명에서는 프로세서가 직접 하나씩 관여하지 않고도 플래시 메모리를 제어하여 데이터를 읽고 쓰고 삭제할 수 있도록 하며, 복수의 모듈에서 병렬적으로 플래시 메모리를 제어할 수 있도록 하는 시스템 및 방법에 관하여 제안하고자 한다.
본 발명은 상기와 같은 종래기술을 개선하기 위해 안출된 것으로서, 플래시 메모리 기반의 저장장치의 성능을 극대화 하는 것을 목적으로 한다.
또한, 본 발명은 플래시 메모리 제어를 프로세서에서 직접 관리하지 않도록 함으로써, 프로세서의 오버헤드를 최소화할 수 있도록 하는 것을 목적으로 한다.
또한, 본 발명은 플래시 메모리를 복수의 모듈에서 병렬적으로 관리할 수 있도록 함으로써, 효율적으로 플래시 메모리를 관리할 수 있도록 하는 것을 목적으로 한다.
또한, 본 발명은 복수의 작업들 사이의 우선순위에 의한 선점을 가능하게 함으로써, 빠른 응답을 요구하는 작업의 경우 저장 장치의 요청에 대한 지연시간을 최소화 하는 것을 목적으로 한다.
상기의 목적을 이루고 종래기술의 문제점을 해결하기 위하여, 본 발명의 일실시예에 따른 플래시 메모리 제어 시스템은 프로세서로부터 하나 이상의 작업에 대응되는 하나 이상의 디스크립터(descriptor)를 포함하는 디스크립터 배열(descriptor array)을 수신하는 디스크립터 배열 수신부 및 상기 디스크립터 배열에 포함된 디스크립터를 확인하고 상기 확인한 디스크립터에 포함된 플래시 메모리 제어 명령을 수행하는 플래시 메모리 제어부를 포함하고, 상기 플래시 메모리 제어부는 상기 프로세서의 동작에 독립적으로 상기 플래시 메모리 제어 명령을 수행하는 것을 특징으로 한다.
또한 본 발명의 일실시예에 따른 플래시 메모리 제어 방법은 프로세서로부터 하나 이상의 작업에 대응되는 하나 이상의 디스크립터(descriptor)를 포함하는 디스크립터 배열(descriptor array)을 수신하는 단계 및 상기 디스크립터 배열에 포함된 디스크립터를 확인하고 상기 확인한 디스크립터에 포함된 플래시 메모리 제어 명령을 수행하는 단계를 포함하고, 상기 플래시 메모리 제어 명령을 수행하는 단계는 상기 프로세서의 동작에 독립적으로 상기 플래시 메모리 제어 명령을 수행하는 것을 특징으로 한다.
이하 첨부된 도면들 및 첨부된 도면들에 기재된 내용들을 참조하여 본 발명의 바람직한 실시예를 상세하게 설명하지만, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 2는 본 발명의 일실시예에 따른 플래시 메모리 제어 시스템을 이용한 플래시 메모리 저장 시스템의 구성도를 도시한 도면이다.
도면에 도시된 제어구조는 메모리(220)와 플래시 메모리 인터페이스 장치(240) 사이에 DMA 제어 기능을 가지는 별도의 플래시 메모리 제어 시스템(230)을 둠으로써 프로세서(210)의 오버헤드를 최소화 한다. 플래시 메모리 제어 시스템은 복수의 플래시 메모리 제어부로 구성될 수 있으나 하나의 플래시 메모리 제어부를 포함하는 경우에 관하여 먼저 설명하도록 한다. 프로세서(210)는 플래시 메모리로 보낼 읽기/쓰기/지우기 등의 연산들을 설계자에 의해 정의된 디스크립터(descriptor)의 형식에 맞추어 메모리(220)에 저장해두고 플래시 메모리 제어 시스템으로 해당 디스크립터의 주소를 전송한다. 이러한 정보와 시작 명령을 프로세서(210)로부터 받은 플래시 메모리 제어 시스템(230)은 알려진 메모리상의 주소로부터 해당 디스크립터를 읽어와 명령을 해독하여 디스크립터에 대응되는 명령들과 데이터를 플래시 메모리 인터페이스 장치(240)로 전송한다. 프로세서(210)는 여러 개의 디스크립터들을 배열(array)의 형태로 묶어 메모리(220)에 저장해놓을 수 있고 플래시 메모리 제어 시스템(230)은 이들 디스크립터의 배열을 차례로 읽어가면서 한번에 처리하는 것이 가능하다. 이러한 디스크립터 배열 기반의 DMA 처리방식은 프로세서(210)가 여러 개의 요청을 한번에 처리할 수 있도록 함으로써 프로세서(210)의 오버헤드를 최소화 한다. 또한 이와 같은 방식은 데이터만이 아니라 명령어의 전달도 DMA방식으로 이루어 진다는 점에서 기존의 DMA방식과 구별된다. 보 다 구체적인 실시 예를 보여주기 위해서 표 1은 디스크립터의 가능한 형식 중 하나를 보여준다.
Figure 112007010752916-pat00001
표 1에 나타난 바와 같이 하나의 요청은 세 개의 32비트 워드로 구성된 디스크립터로 표시될 수 있다. 표 1의 Opcode는 지우기/프로그램/읽기 명령을 식별하기 위해 사용되며 비트 인코딩(bit encoding)은 설계자의 임의대로 정할 수 있다. Opcode 중 최상위 비트는 디스크립터 배열의 마지막을 나타내는 EOA (End Of Array)필드로 사용될 수 있다. 'chip #' 필드는 여러 개의 칩이 존재할 때 명령어가 전달될 칩의 번호를 식별하고, 'Block address', 'Page address', ‘# of page'은 칩 내의 블록 주소, 페이지 주소와 개수를 식별한다. 이 때 지우기 명령의 경우는 블록 단위로 수행되기 때문에 'Page address' 등의 페이지 정보에 관련된 필드들은 의미 없는 필드가 될 것이다. 그리고 '# of page' 필드는 지우기 명령에 한해서 지워야 할 블록의 개수(# of block)으로 해석될 수 있다. 마지막으로 'Memory Region Descriptor (MRD) address' 필드는 플래시 메모리로 전송할 데이터가 위치한 메모리 영역(쓰기의 경우) 혹은 플래시 메모리로부터 데이터를 읽어와 저장할 메모리 영역(읽기의 경우)을 명시하는 또 다른 디스크립터들의 목록(list)의 시작 주소를 가지게 된다. 이러한 역할을 하는 디스크립터를 MRD (Memory Region Descriptor)라고 명명할 수 있으며 표 2는 MRD의 구체적인 실시 예를 보여준다.
Figure 112007010752916-pat00002
플래시 메모리로 전송할 전체 페이지 데이터는 메모리 내에 연속되지 않은 공간에 산재해 있을 수 있으므로 이 데이터들이 위치한 메모리 영역들을 나타내는 MRD들은 일련의 목록 형태로 묶여진다. 하나의 MRD는 표 2의 page data address가 나타내는 시작 주소로부터 '# of page data' 필드가 가리키는 페이지의 개수만큼 연속된 하나의 메모리 공간을 명시한다. 이러한 MRD가 'Next MRD address' 필드에 의해서 list 의 형태로 연결되어 구성된 자료구조는 플래시 메모리로 전송할 전체 페이지 데이터가 존재하는 메모리 영역을 기술하게 된다. (반대로 읽기의 경우에는 플래시 메모리로부터 읽어올 데이터를 저장할 메모리 영역을 기술한다)
도 8은 본 발명의 일실시예에 따른 플래시 메모리 제어 방법에서 디스크립터를 처리하는 흐름을 도시한 흐름도이다.
프로세서로부터 시작 명령을 전달 받은 플래시 메모리 제어 시스템은 커맨드 레지스터를 통해 전달 받은 메모리 주소로부터 세 개의 4바이트(32비트) 워드를 읽어온다(S801). 이 세 개의 4바이트 워드는 앞서 설명한 것과 같이 제어장치가 처리해야 할 하나의 단위 요청을 명시하는 디스크립터이다. 메모리로부터 디스크립터를 읽어온 플래시 메모리 제어 시스템은 앞서 정의된 표 1의 형식에 따라 해독작업을 하게 되는데 가장 먼저 'Op code' 필드를 보고 지우기/프로그램/읽기 명령인지를 식별한 후(S802) 각 명령에 해당하는 흐름으로 분기를 한다(S803 내지 S807). 각 명령에 맞는 흐름을 모두 거친 후에는 최종적으로 Opcode 최상위 비트인 EOA필드를 보고 해당 디스크립터가 배열의 마지막 디스크립터인지 확인해 본다(S809). 이 때 만약 EOA 필드가 체크 되어있으면 제어 장치는 모든 작업을 끝내고 대기 상태로 돌아가며 만약 EOA 필드가 체크가 되어있지 않으면 바로 이전 디스크립터를 읽어왔던 주소의 다음 번 주소(본 실시 예에서는 +12바이트)로부터 새로운 디스크립터를 읽어와 새로운 요청에 대한 작업을 시작한다.
도 3은 본 발명의 일실시예에 따른 플래시 메모리 제어 시스템의 내부 구성을 도시한 도면이다.
도면에 도시한 바와 같이 본 발명의 일실시예에 따른 플래시 메모리 제어 시스템(303)은 디스크립터 배열 수신부(310) 및 플래시 메모리 제어부(320)를 포함한다. 상기한 구성요소들은 소프트웨어, 하드웨어 또는 소프트웨어 및 하드웨어의 결합으로 구성될 수 있다.
디스크립터 배열 수신부(310)는 프로세서(301)로부터 하나 이상의 작업에 대응되는 하나 이상의 디스크립터를 포함하는 디스크립터 배열을 수신한다. 상기 디스크립터는 상기 표 1에 예시된 바와 같이 플래시 메모리 제어를 위한 다양한 정보를 포함할 수 있다. 디스크립터 배열 수신부(310)는 프로세서(301)로부터 버스 또는 네트워크 등을 통하여 직접 디스크립터 배열을 수신할 수도 있고, 상술한 바와 같이 프로세서(301)에서 메모리(302)에 디스크립터 배열을 저장해 두면 이를 읽어서 수신할 수도 있다.
플래시 메모리 제어부(320)는 디스크립터 배열에 포함된 디스크립터를 확인하고 상기 확인한 디스크립터에 포함된 플래시 메모리 제어 명령을 수행한다. 또한 플래시 메모리 제어부(320)는 프로세서(301)와 독립적으로 동작하도록 함으로써, 프로세서(301)에서는 플래시 메모리를 제어하기 위해서 디스크립터 배열을 생성하여 디스크립터 배열 수신부(310)로 전달하고 별도의 관리를 하지 않아도 플래시 메모리를 제어할 수 있는 효과가 있다. 이에 따라 프로세서(301)의 오버헤드를 크게 줄일 수 있다.
그리고, 플래시 메모리 제어부(320)은 상술한 예에서와 같이 단일의 모듈로 구성됨으로써, 순차적으로 디스크립터 배열의 디스크립터를 해독하여 처리할 수도 있으며 복수의 모듈로 구성되어 복수의 모듈이 병렬적으로 플래시 메모리를 제어하도록 할 수도 있다. 이와 같이 플래시 메모리 제어부(320)가 복수의 모듈이 병렬적으로 동작할 수 있도록 구성된다면, 병렬적으로 처리 가능한 작업들을 빠르게 처리할 수 있게 되어 처리 속도를 향상시킬 수 있는 효과가 있다.
또한, 플래시 메모리 제어부(320)는 복수의 모듈로 구성되면서 백그라운드 플래시 메모리 제어부 및 포그라운드 플래시 메모리 제어부로 구성될 수 있으며, 이 경우 디스크립터가 백그라운드 플래시 메모리 제어 명명 및 포그라운드 플래시 제어 명령을 포함하는 디스크립터로 각각 구분될 수 있다. 이 경우 포그라운드 플래시 메모리 제어부에서는 빠른 처리를 요하는 플래시 메모리 제어 명령을 처리할 수 있고, 백그라운드 플래시 메모리 제어부에서는 다소 지연 처리되어도 무방한 플래시 메모리 제어 명령을 처리하도록 할 수 있다. 이 경우 각각의 백그라운드 플래시 메모리 제어부 및 포그라운드 플래시 메모리 제어부는 내부에 복수의 서브 플래시 메모리 제어부를 포함할 수 있으며, 이를 제어하기 위한 시퀀서를 포함할 수도 있다. 이에 관하여는 아래에서 상술하도록 한다.
플래시 메모리 제어부(320)가 복수의 모듈로 구성되는 경우 각각의 서브 플래시 메모리 제어부는 각각이 하드웨어로 구성되어 별도의 장치가 될 수도 있고, 하나의 장치 내부에 소프트웨어 적인 또는 하드웨어적인 모듈로 구성될 수도 있으나, 병렬적으로 동작할 수 있다면 어떤 형태로 구성되어도 무방하며, 본 발명은 그 구체적인 형태에 의하여 제한 받지 않는다.
도 4는 본 발명의 다른 일실시예에 따른 플래시 메모리 제어 시스템의 내부 구성을 도시한 도면이다.
플래시 메모리 제어 시스템(303)은 프로세서(301)로부터 오는 읽기 명령들과 같이 빠른 응답 속도를 요구하는 포그라운드 플래시 메모리 명령을 처리하는 포그라운드 플래시 메모리 제어부(420) 및 메모리(302)에 임시 저장(Buffering)되어 있던 데이터를 플래시 메모리에 실제로 반영하는 명령들과 같이 상대적으로 시간적인 여유를 가질 수 있는 백그라운드 플래시 메모리 명령을 처리하는 백그라운드 플래시 메모리 제어부(410)로 나눌 수 있다. 각 서브시스템은 상술한 디스크립터 배열기반의 플래시 메모리 제어장치들로 구성된다. 이러한 두 개의 서로 다른 플래시 메모리 제어부로부터 오는 요청들을 받아들이기 위해 인터페이스 장치(304)는 두 개의 입력 포트를 가질 수 있다. 본 발명의 목적 중의 하나인 저장 장치 시스템의 지연시간의 최소화를 위해서는 포그라운드 플래시 메모리 제어부(420) 측에서 오는 요청들이 백그라운드 플래시 메모리 제어부(410)에서 오는 요청들을 최대한 빠른 시점에 선점을 하도록 하는 것이 중요하다.
이를 위해 상기 플래시 메모리 제어부는 프로세서로부터 받은 여러 개의 블록 혹은 여러 개의 페이지에 걸친 큰 단위의 요청(하나의 디스크립터로 표현되는 요청)을 블록 단위의 지우기 요청과 페이지 단위의 읽기/프로그램 요청으로 나누어 상기 인터페이스 장치로 전송할 수 있다. 그리고 각 단위 요청들 사이에는 단위 요청 간 경계를 구분하는 표식자의 역할을 하는 SYNC 패킷이 삽입될 수 있다.
도 7은 본 발명의 일실시예에 따른 플래시 메모리 제어 시스템의 백그라운드 플래시 메모리 제어부에서 디스크립터를 처리하는 일례를 도시한 도면이다.
단위 요청들간의 경계를 구분하는 SYNC 패킷은 다수의 플래시 메모리 버스로 구성된 저장장치 시스템에서 버스당 하나씩 존재하는 인터페이스 장치들 사이의 gang synchronization을 위하여 요구된다. 즉 모든 인터페이스 장치에 SYNC 패킷이 도착하는 시점이 포그라운드 요청이 백그라운드 요청을 선점할 수 있는 스케줄링 포인트가 된다. 단, 하나의 버스만을 가지고 있는 시스템에 있어서는 단순하게 SYNC패킷이 인터페이스 장치에 도착한 시점이 선점 가능한 스케줄링 포인트로 인식된다.
본 발명에서 제안하는 플래시 메모리 제어 시스템의 인터페이스 장치(304)는 입력으로 받은 지우기/프로그램/읽기 등의 플래시 명령들에 대응되는 물리적인 제어 신호를 생성해주는 것만이 아니라 서로 다른 요청을 받을 수 있는 두 개의 입력포트와 SYNC패킷에 의한 스케줄링 작업을 통해 우선순위에 입각한 서비스를 구현한다.
도 12는 본 발명의 일실시예에 따른 플래시 메모리 제어 방법에서 포그라운드 플래시 메모리 제어 명령 및 백그라운드 플래시 메모리 제어 명령을 각각 처리하는 구성을 도시한 도면이다. 이는 플래시 메모리 제어 시스템에 연결된 인터페이스 장치(304)에서의 동작을 의미한다.
상술한 바와 같이, 포그라운드 요청은 백그라운드 요청보다 항상 높은 우선순위를 가지므로 상기 인터페이스 장치는 항상 포그라운드 요청이 들어오는 입력포트를 먼저 확인한 후(S1201)에 백그라운드 입력포트를 확인한다(S1204). 만약 포그라운드 입력포트로 들어온 요청이 존재하면(S1202) 해당 단위 요청을 처리하고(S1203) 다시 포그라운드 입력포트를 체크한다. 만약 포그라운드 요청이 존재하면 이에 대한 서비스를 계속하고 만약 그렇지 않으면 백그라운드 입력포트를 확인하는 단계로 넘어간다(S1204). 이 단계에서 백그라운드 요청이 도달하지 않았다면 상기 인터페이스 장치는 다시 포그라운드 입력포트를 체크하는 단계로 돌아가 요청이 존재할 때까지 두 개의 포트를 돌아가면서 체크하는 과정을 무한히 반복한다. 백그라운드 요청이 도달한 경우, 인터페이스장치는 백그라운드의 단위 요청을 서비스한 후(S1206) SYNC포인트를 기다린다(S1207). 여기서 SYNC포인트란 앞서 설명한 바와 같이 여러 개의 플래시 버스가 존재하는 저장 장치 시스템에서는 모든 인터페이스 장치에 SYNC 패킷이 도착한 시점, 하나의 버스만 존재하는 시스템에서는 단순히 해당 인터페이스 장치에 SYNC 패킷이 도착한 시점으로 판단한다. SYNC포인트에 도달한 인터페이스 장치는 백그라운드 입력포트가 아닌 포그라운드 입력포트를 확인하는 단계로 돌아감으로써 포그라운드 요청에게 선점의 기회를 부여한다. 만약 이 시점에서 포그라운드 요청이 있다면 백그라운드 요청을 선점하게 되지만 그렇지 않은 경우에는 백그라운드 요청이 계속 서비스 될 것이다.
도 12의 단위요청을 처리하는 단계는 블록단위의 지우기 요청, 페이지단위의 프로그램/읽기 요청에 대해 플래시 메모리 칩으로 가는 물리적 제어신호를 생성해주는 것을 의미한다. 이와 같은 과정은 이미 관련 업계에서 실시되고 있는 통상의 방법을 따를 수 있다.
도 5는 본 발명의 또 다른 일실시예에 따른 플래시 메모리 제어 시스템의 내부 구성을 도시한 도면이다. 도 5에서는 포그라운드 플래시 메모리 제어부 및 백그라운드 플래시 메모리 제어부의 내부 구성까지 상세히 도시한다.
백그라운드 작업의 경우 메모리에 임시 저장되어 있던 데이터를 플래시 메모리로 반영하는 작업의 특성상 여러 개의 칩의 병렬 성을 최대한 활용할 수 있는 여지를 가지고 있다. 이러한 점을 고려하여 본 발명의 일실시예에 따른 플래시 메모리 제어 시스템에서는 백그라운드 플래시 메모리 제어부(410)를 복수의 독립적인 서브 플래시 메모리 제어부(510)로 구성하고 각각의 서브 플래시 메모리 제어부(510)가 서로 다른 칩으로 가는 백그라운드작업을 담당하도록 하여 칩 단위의 병렬 성을 최대화할 수 있다. 백그라운드 플래시 메모리 제어부(410)을 구성하는 서브 플래시 메모리 제어부의 개수는 최대한 활용할 수 있는 칩 단위의 병렬성에 대한 설계자의 판단에 따라 늘리는 것도 가능할 것이다. 복수의 서브 플래시 메모리 제어부는 인터페이스 장치의 두 개의 입력 포트 중 백그라운드작업에게 할당된 하나의 포트를 공유하므로 어느 한 순간에 하나의 서브 플래시 메모리 제어부만이 활성화 될 수 있다. 도면 5의 시퀀서(520)는 이러한 복수의 서브 플래시 메모리 제어부(510)의 실행 순서를 결정하는 스케줄러의 역할을 한다.
서로 다른 플래시 메모리 제어장치들이 충돌 없이 시퀀싱되는 과정을 이해하기 위해 먼저 각 서브 플래시 메모리 제어부(510)의 보다 상세한 내부동작을 살펴본다. 도 9 내지 도 11은 상술한 도 8에서 설명하였던 디스크립터 배열 기반의 요청 처리 흐름도에 이어 지우기/프로그램/읽기 각 명령어 타입 별로 서브 플래시 메모리 제어부(510)가 내부적으로 어떻게 동작하는지 보여주는 흐름도이다.
도 9는 본 발명의 일실시예에 따른 플래시 메모리 제어 방법에서 지우기 명령을 처리하는 흐름을 도시한 흐름도이다.
도면 8의 A로 분기한 서브 플래시 메모리 제어부는 상기 표 1에 예시된 디스크립터의 'Block Address' 필드를 참조하여 해당 블록 주소로 가는 지우기 명령을 인터페이스 장치로 전송한다. 상기 서브 플래시 메모리 제어부는 지우기 명령을 전송한 후 스스로 일시 정지(Suspend)를 하고 시퀀서로부터 재개 명령(Resume)을 기다린다. 재개 명령을 받으면 서브 플래시 메모리 제어부는 일시 정지 상태에서 벗어나, 바로 이전에 인터페이스 장치로 보냈던 지우기 명령이 성공적이었는지를 확인하기 위해 플래시 상태 읽기 명령을 전송한다. 서브 플래시 메모리 제어부는 상기 단계에 이어서 인터페이스 장치에게 선점 포인트를 알려주기 위한 SYNC 패킷을 전송한 후 상기 표 1의 예시의 디스크립터의 '# of page'필드를 참조하여 현재 처리중인 블록이 해당 디스크립터가 표현하는 요청의 마지막 블록인지 체크한다. 만약 요청의 마지막 블록이 아니면 블록주소를 1만큼 증가시킨 후 다시 처음 단계로 돌아가 다음 블록에 대한 처리를 계속하고, 마지막 블록이면 해당 디스크립터에 대한 처리를 종료하고 도면 8의 단계 S809로 합류하게 된다.
도 10은 본 발명의 일실시예에 따른 플래시 메모리 제어 방법에서 프로그램 명령을 처리하는 흐름을 도시한 도면이다.
도면 8의 B로 분기한 서브 플래시 메모리 제어부는 상기 표 1에 예시된 디스크립터의 'Block Address' 필드와 'Page Address' 필드를 참조하여 해당 블록의 해당 페이지로 가는 프로그램을 준비하라는 명령을 인터페이스 장치로 전송한다. 다음 단계로 디스크립터와 연결된 MRD의 목록을 참조하면서 프로그램 할 데이터를 메모리로부터 읽어 인터페이스 장치로 전송한 후 프로그램 명령을 내린다. 이 후의 흐름은 일시 정지 및 재개, 프로그램이 성공적으로 끝났는지 확인하는 상태읽기 명령전송, 그리고 요청의 마지막 페이지인지를 확인하는 단계를 포함하여 지우기 명령에 대한 흐름도와 유사하다.
도 11은 본 발명의 일실시예에 따른 플래시 메모리 제어 방법에서 읽기 명령을 처리하는 흐름을 도시한 도면이다.
도면 8의 C로 분기한 서브 플래시 메모리 제어부는 상기 표 1에 예시된 디스크립터의 'Block Address' 필드와 'Page Address' 필드를 참조하여 해당 블록의 해당 페이지로부터 데이터를 읽어 오라는 명령을 인터페이스 장치로 전송한다. 다음 단계인 일시 정지 및 재개는 지우기/프로그램의 명령의 처리 흐름과 같고, 이 후 MRD 목록을 참조하면서 읽어온 데이터를 메모리에 적는 단계는 프로그램 명령의 데이터 전송 단계에 대응된다. 마지막으로 SYNC패킷을 전송하고 요청의 마지막 페이지인지 확인하는 단계는 프로그램 명령일 때와 동일하다.
상기한 도 9 내지 도11의 흐름도에서 복수의 서브 플래시 메모리 제어부가 시퀀싱되는 과정을 이해하기 위해 공통적으로 주목해야 할 부분은 서브 플래시 메모리 제어부가 스스로 전송권한을 포기하고 일시 정지(Suspend)를 하는 단계이다. 도 9 내지 도 11에서 서브 플래시 메모리 제어부가 공통적으로 일시 정지를 하는 시점은 지우기/프로그램/읽기 명령과 같이 상대적으로 시간이 오래 걸리는 명령을 인터페이스 장치로 전송한 직후이다. 서브 플래시 메모리 제어부가 스스로 일시 정지를 하면 시퀀서가 다른 칩으로 가는 명령을 대기중인 서브 플래시 메모리 제어부에게 명령 전송 권한을 줌으로써 칩 단위의 병렬 성을 이용할 수 있게 된다. 이 때 다음 스케줄링의 대상이 되는 서브 플래시 메모리 제어부는 현재 일시 정지 상태이면서 명령을 수행중인 칩이 준비상태(ready)에 있는 서브 플래시 메모리 제어부이다. 다음 번에 수행될 서브 플래시 메모리 제어부가 결정되면 시퀀서는 재개명령(resume)을 전달함으로써 해당 서브 플래시 메모리 제어부의 일시 정지 상태를 풀어준다. 이러한 스케줄링 결정을 위해 시퀀서는 각 서브 플래시 메모리 제어부들이 어떤 플래시 칩으로 명령을 수행하는지를 파악하고, 플래시 칩들의 준비상태(R/B)를 계속 체크해야만 한다.
도 6은 본 발명의 일실시예에 따른 플래시 메모리 제어 시스템에서 시퀀서가 복수의 서브 플래시 메모리 제어부를 관리하는 구성을 도시한 도면이다.
먼저 프로세서는 일련의 신호선들을 통해 새로 시작할 서브 플래시 메모리 제어부(510)의 번호와 각 서브 플래시 메모리 제어부(510)에게 할당된 디스크립터의 시작주소를 시퀀서(520)에게 알려준다. 이러한 명령을 받은 시퀀서(520)는 해당하는 서브 플래시 메모리 제어부(510)들을 일시에 구동시킨다. 또한, 각 서브 플래시 메모리 제어부(510)에게 할당된 디스크립터의 주소가 전달된다. 동시에 구동된 서브 플래시 메모리 제어부(510)들은 백그라운드 플래시 메모리 제어부에게 할당된 하나의 입력 포트를 두고 서로 충돌하는 것을 방지하기 위해 구동되는 즉시 일시 정지 상태로 들어가는 방법을 사용한다. 시퀀서(520)는 일시 정지된 여러 개의 서브 플래시 메모리 제어부(510)들의 실행 순서를 스케줄링을 통해 결정한다. 각각의 서브 플래시 메모리 제어부(510)는 시퀀서(520)에게 자신이 일시 정지되어있다는 사실과 어떤 Chip에 대한 명령을 수행하고 있다는 정보를 알려준다. 시퀀서(520)는 다수 개(N)의 플래시 메모리 칩들로부터 ready/busy상태를 수신하고 다음 번 수행될 서브 플래시 메모리 제어부(510)를 결정하여 재개 명령을 전달한다.
도 13은 본 발명의 일실시예에 따른 플래시 메모리 제어 시스템에서 서브 플래시 메모리 제어부를 관리하는 시퀀서의 동작을 도시한 흐름도이다.
본 도면은 기능별로 크게, 새로운 제어장치들을 구동하는 단계(S1301 내지 S1303)와 이미 구동된 제어장치들 사이의 스케줄링을 해주는 단계(S1304 내지 S1306)로 나누어 볼 수 있다. 시퀀서는 이 두 단계를 반복적으로 수행하면서 새롭게 시작시킬 서브 플래시 메모리 제어부들이 있는 경우에는 이 들을 구동시킨 후 스케줄링 대상으로 편입시키고, 스케줄링이 필요한 경우에는 일시 정지 상태에 있는 제어장치들 사이의 실행 순서를 조정하여 재개명령을 전달한다. 시퀀서가 스케줄링을 수행해야 하는 경우는 인터페이스 장치의 입력포트를 아무도 사용하고 있지 않으면서 일시 정지 상태에 있는 서브 플래시 메모리 제어부들이 존재할 때이다(S1304, S1305). 이 때 시퀀서가 제어장치에게 명령 전송권한을 주는 스케줄링 순서는 설계자의 임의의 알고리즘을 사용할 수 있으나 일반적으로는 어떤 특정한 제어장치가 오랜 시간 동안 계속 일시 정지 상태에 남아있는 것을 방지하기 위해서 모든 제어장치에게 공평한 기회를 주는 라운드 로빈(round-robin) 방법을 채택할 수 있다(S1306).
본 발명에 따른 플래시 메모리 제어 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명 사상은 아래에 기재된 특허 청구 범위에 의해서만 파악되어야 하고, 이의 균등 또는 등가적 변형 모두는 본 발명 사상의 범주에 속한다고 할 것이다.
본 발명에 따르면, 플래시 메모리 기반의 저장장치의 성능을 극대화 하는 효과가 있다.
\또한, 본 발명에 따르면 플래시 메모리 제어를 프로세서에서 직접 관리하지 않도록 함으로써, 프로세서의 오버헤드를 최소화할 수 있도록 하는 효과가 있다.
또한, 본 발명에 따르면 플래시 메모리를 복수의 모듈에서 병렬적으로 관리할 수 있도록 함으로써, 효율적으로 플래시 메모리를 관리할 수 있도록 하는 효과가 있다.
또한, 본 발명에 따르면 복수의 작업들 사이의 우선순위에 의한 선점을 가능하게 함으로써, 빠른 응답을 요구하는 작업의 경우 저장 장치의 요청에 대한 지연시간을 최소화 하는 효과가 있다.

Claims (23)

  1. 프로세서로부터 하나 이상의 작업에 대응되는 하나 이상의 디스크립터(descriptor)를 포함하는 디스크립터 배열(descriptor array)을 수신하는 디스크립터 배열 수신부; 및
    상기 디스크립터 배열에 포함된 디스크립터를 확인하고 상기 확인한 디스크립터에 포함된 플래시 메모리 제어 명령을 수행하는 플래시 메모리 제어부
    를 포함하고,
    상기 플래시 메모리 제어부는 상기 프로세서의 동작에 독립적으로 상기 플래시 메모리 제어 명령을 수행하는 것을 특징으로 하는 플래시 메모리 제어 시스템.
  2. 제1항에 있어서,
    상기 플래시 메모리 제어 명령은 지우기 명령, 프로그램 명령 또는 읽기 명령을 포함하는 것
    을 특징으로 하는 플래시 메모리 제어 시스템.
  3. 제1항에 있어서,
    상기 디스크립터는 상기 디스크립터가 포함하는 플래시 메모리 제어 명령의 대상이 되는 플래시 메모리의 페이지 주소를 포함하는 것
    을 특징으로 하는 플래시 메모리 제어 시스템.
  4. 제1항에 있어서,
    상기 디스크립터는 상기 디스크립터가 포함하는 플래시 메모리 제어 명령의 대상이 되는 플래시 메모리의 블록 주소를 포함하는 것
    을 특징으로 하는 플래시 메모리 제어 시스템.
  5. 제1항에 있어서,
    상기 디스크립터는 플래시 메모리에 기록하기 위한 데이터가 저장된 메모리 정보를 포함하는 것
    을 특징으로 하는 플래시 메모리 제어 시스템.
  6. 제1항에 있어서,
    상기 디스크립터는 플래시 메모리로부터 읽은 데이터를 저장할 메모리 정보를 포함하는 것
    을 특징으로 하는 플래시 메모리 제어 시스템.
  7. 제5항 또는 제6항에 있어서,
    상기 메모리 정보는 복수의 메모리 주소를 링크드 리스트(linked list) 형태로 연결한 데이터 구조를 포함하는 것
    을 특징으로 하는 플래시 메모리 제어 시스템.
  8. 제1항에 있어서,
    상기 플래시 메모리 제어 명령은,
    포어그라운드 플래시 메모리 제어 명령 및 백그라운드 플래시 메모리 제어 명령을 포함하는 것
    을 특징으로 하는 플래시 메모리 제어 시스템.
  9. 제8항에 있어서,
    상기 포어그라운드 플래시 메모리 제어 명령은 백그라운드 플래시 메모리 제어 명령보다 빠른 시간에 응답해야 하는 플래시 메모리 제어 명령인 것
    을 특징으로 하는 플래시 메모리 제어 시스템.
  10. 제8항에 있어서,
    상기 플래시 메모리 제어부는,
    상기 디스크립터 배열에 포함된 디스크립터 중 포어그라운드 플래시 메모리 제어 명령을 포함하는 디스크립터를 우선적으로 처리하는 것
    을 특징으로 하는 플래시 메모리 제어 시스템.
  11. 제8항에 있어서,
    상기 플래시 메모리 제어부는,
    포어그라운드 플래시 메모리 제어 명령을 처리하는 포어그라운드 플래시 메모리 제어부; 및
    백그라운드 플래시 메모리 제어 명령을 처리하는 백그라운드 플래시 메모리 제어부
    를 포함하는 것을 특징으로 하는 플래시 메모리 제어 시스템.
  12. 제11항에 있어서,
    상기 백그라운드 플래시 메모리 제어부는,
    하나 이상의 서브 플래시 메모리 제어부를 포함하고,
    상기 하나 이상의 서브 플래시 메모리 제어부는 각각 독립적으로 동작하는 것
    을 특징으로 하는 플래시 메모리 제어 시스템.
  13. 제12항에 있어서,
    상기 백그라운드 플래시 메모리 제어부는,
    상기 하나 이상의 서브 플래시 메모리 제어부의 동작을 제어하는 시퀀서(sequencer)를 포함하는 것
    을 특징으로 하는 플래시 메모리 제어 시스템.
  14. 프로세서로부터 포어그라운드 플래시 메모리 제어 명령 및 백그라운드 플래시 메모리 제어 명령을 포함하는 플래시 메모리 제어 명령을 수신하는 플래시 메모리 제어 명령 수신부;
    상기 포어그라운드 플래시 메모리 제어 명령을 처리하는 포어그라운드 플래시 메모리 제어부; 및
    상기 백그라운드 플래시 메모리 제어 명령을 처리하는 백그라운드 플래시 메모리 제어부
    를 포함하고,
    상기 포어그라운드 플래시 메모리 제어부 및 상기 백그라운드 플래시 메모리 제어부는 병렬적으로 상기 플래시 메모리 제어 명령을 처리하는 것
    을 특징으로 하는 플래시 메모리 제어 시스템.
  15. 제14항에 있어서,
    상기 포어그라운드 플래시 메모리 제어 명령은 백그라운드 플래시 메모리 제어 명령보다 빠른 시간에 응답해야 하는 플래시 메모리 제어 명령인 것
    을 특징으로 하는 플래시 메모리 제어 시스템.
  16. 제14항에 있어서,
    상기 백그라운드 플래시 메모리 제어부는,
    하나 이상의 서브 플래시 메모리 제어부를 포함하고,
    상기 하나 이상의 서브 플래시 메모리 제어부는 각각 독립적으로 동작하는 것
    을 특징으로 하는 플래시 메모리 제어 시스템.
  17. 제16항에 있어서,
    상기 백그라운드 플래시 메모리 제어부는,
    상기 하나 이상의 서브 플래시 메모리 제어부의 동작을 제어하는 시퀀서(sequencer)를 포함하는 것
    을 특징으로 하는 플래시 메모리 제어 시스템.
  18. 프로세서로부터 하나 이상의 작업에 대응되는 하나 이상의 디스크립터(descriptor)를 포함하는 디스크립터 배열(descriptor array)을 수신하는 단계; 및
    상기 디스크립터 배열에 포함된 디스크립터를 확인하고 상기 확인한 디스크립터에 포함된 플래시 메모리 제어 명령을 수행하는 단계
    를 포함하고,
    상기 플래시 메모리 제어 명령을 수행하는 단계는 상기 프로세서의 동작에 독립적으로 상기 플래시 메모리 제어 명령을 수행하는 것을 특징으로 하는 플래시 메모리 제어 방법.
  19. 제18항에 있어서,
    상기 플래시 메모리 제어 명령은 지우기 명령, 프로그램 명령 또는 읽기 명령을 포함하는 것
    을 특징으로 하는 플래시 메모리 제어 방법.
  20. 제18항에 있어서,
    상기 플래시 메모리 제어 명령은,
    포어그라운드 플래시 메모리 제어 명령 및 백그라운드 플래시 메모리 제어 명령을 포함하는 것
    을 특징으로 하는 플래시 메모리 제어 방법.
  21. 제20항에 있어서,
    상기 포어그라운드 플래시 메모리 제어 명령은 백그라운드 플래시 메모리 제어 명령보다 빠른 시간에 응답해야 하는 플래시 메모리 제어 명령인 것
    을 특징으로 하는 플래시 메모리 제어 방법.
  22. 제20항에 있어서,
    상기 플래시 메모리 제어 명령을 수행하는 단계는,
    상기 디스크립터 배열에 포함된 디스크립터 중 포어그라운드 플래시 메모리 제어 명령을 포함하는 디스크립터를 우선적으로 처리하는 것
    을 특징으로 하는 플래시 메모리 제어 방법.
  23. 제18항 내지 제22항 중 어느 한 항의 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
KR1020070011751A 2007-02-05 2007-02-05 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법 KR100869675B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020070011751A KR100869675B1 (ko) 2007-02-05 2007-02-05 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법
US12/525,553 US8296505B2 (en) 2007-02-05 2008-01-24 System and method for controlling flash memory using descriptor array
PCT/KR2008/000431 WO2008096968A1 (en) 2007-02-05 2008-01-24 System and method for controling flash memory using descriptor array

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070011751A KR100869675B1 (ko) 2007-02-05 2007-02-05 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법

Publications (2)

Publication Number Publication Date
KR20080073128A KR20080073128A (ko) 2008-08-08
KR100869675B1 true KR100869675B1 (ko) 2008-11-21

Family

ID=39681839

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070011751A KR100869675B1 (ko) 2007-02-05 2007-02-05 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법

Country Status (3)

Country Link
US (1) US8296505B2 (ko)
KR (1) KR100869675B1 (ko)
WO (1) WO2008096968A1 (ko)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100876248B1 (ko) 2007-07-02 2008-12-26 삼성모바일디스플레이주식회사 액정 표시 장치 및 그 제조 방법
US8321647B2 (en) * 2009-05-06 2012-11-27 Apple Inc. Multipage preparation commands for non-volatile memory systems
US8447917B2 (en) * 2009-06-25 2013-05-21 Mediatek Inc. Flash memory devices and methods for controlling a flash memory device
CN101930798B (zh) * 2009-06-25 2014-04-16 联发科技股份有限公司 闪存装置、存储器装置以及控制闪存装置的方法
JP4746699B1 (ja) * 2010-01-29 2011-08-10 株式会社東芝 半導体記憶装置及びその制御方法
US8868852B2 (en) * 2010-07-07 2014-10-21 Marvell World Trade Ltd. Interface management control systems and methods for non-volatile semiconductor memory
US9141538B2 (en) 2010-07-07 2015-09-22 Marvell World Trade Ltd. Apparatus and method for generating descriptors to transfer data to and from non-volatile semiconductor memory of a storage drive
US9135168B2 (en) 2010-07-07 2015-09-15 Marvell World Trade Ltd. Apparatus and method for generating descriptors to reaccess a non-volatile semiconductor memory of a storage drive due to an error
US8819328B2 (en) 2010-12-30 2014-08-26 Sandisk Technologies Inc. Controller and method for performing background operations
US8904091B1 (en) * 2011-12-22 2014-12-02 Western Digital Technologies, Inc. High performance media transport manager architecture for data storage systems
CN104008061B (zh) * 2013-02-22 2018-01-23 华为技术有限公司 内存回收方法及装置
US20170160952A1 (en) * 2014-07-28 2017-06-08 Sony Corporation Memory controller, memory system, and information processing system
KR102398201B1 (ko) 2017-06-30 2022-05-17 삼성전자주식회사 프로세서의 개입 없이 단순 작업을 관리하는 스토리지 장치
KR20190023247A (ko) * 2017-08-28 2019-03-08 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR102447465B1 (ko) 2017-09-08 2022-09-27 삼성전자주식회사 호스트로부터의 읽기 요청에 대한 짧은 읽기 응답 시간을 제공하기 위해 내부 동작을 일시적으로 중단하는 스토리지 장치
KR102655350B1 (ko) * 2017-12-14 2024-04-09 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR20190090614A (ko) * 2018-01-25 2019-08-02 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US10719647B2 (en) * 2018-06-07 2020-07-21 Synopsys, Inc. Speed converter for FPGA-based UFS prototypes
CN110716691B (zh) * 2018-07-13 2021-10-01 华为技术有限公司 调度方法、装置、闪存设备和系统
US10936199B2 (en) * 2018-07-17 2021-03-02 Silicon Motion, Inc. Flash controllers, methods, and corresponding storage devices capable of rapidly/fast generating or updating contents of valid page count table
US10983724B2 (en) * 2018-09-14 2021-04-20 Micron Technology, Inc. Controller with distributed sequencer components
US11442852B2 (en) 2020-06-25 2022-09-13 Western Digital Technologies, Inc. Adaptive context metadata message for optimized two-chip performance
CN112347003A (zh) * 2020-11-26 2021-02-09 北京泽石科技有限公司 一种高效的闪存颗粒微码控制方法
US11782637B2 (en) * 2021-01-05 2023-10-10 Red Hat, Inc. Prefetching metadata in a storage system
CN116578234B (zh) * 2023-04-27 2023-11-14 珠海妙存科技有限公司 闪存访问系统及方法
CN116185892B (zh) * 2023-04-27 2023-07-21 珠海妙存科技有限公司 闪存控制器及其访问闪存颗粒的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6381682B2 (en) 1998-06-10 2002-04-30 Compaq Information Technologies Group, L.P. Method and apparatus for dynamically sharing memory in a multiprocessor system
US20040015561A1 (en) * 2002-06-17 2004-01-22 David Mayhew System and method for transferring data
US20080028164A1 (en) * 2006-07-27 2008-01-31 Takumi Ikemoto File storage control device and method

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9903490D0 (en) * 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6625665B1 (en) * 2000-01-27 2003-09-23 S3 Graphics Co., Ltd. Command interpretation system and method
US6704835B1 (en) * 2000-09-26 2004-03-09 Intel Corporation Posted write-through cache for flash memory
US7062616B2 (en) * 2001-06-12 2006-06-13 Intel Corporation Implementing a dual partition flash with suspend/resume capabilities
GB0123415D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
KR100541642B1 (ko) * 2004-03-11 2006-01-10 삼성전자주식회사 플래시 메모리의 데이터 관리 장치 및 방법
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US20070156998A1 (en) * 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6381682B2 (en) 1998-06-10 2002-04-30 Compaq Information Technologies Group, L.P. Method and apparatus for dynamically sharing memory in a multiprocessor system
US20040015561A1 (en) * 2002-06-17 2004-01-22 David Mayhew System and method for transferring data
US20080028164A1 (en) * 2006-07-27 2008-01-31 Takumi Ikemoto File storage control device and method

Also Published As

Publication number Publication date
WO2008096968A1 (en) 2008-08-14
KR20080073128A (ko) 2008-08-08
US20100100666A1 (en) 2010-04-22
US8296505B2 (en) 2012-10-23

Similar Documents

Publication Publication Date Title
KR100869675B1 (ko) 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법
US10949091B2 (en) Memory controllers, memory systems, solid state drives and methods for processing a number of commands
US8310880B2 (en) Virtual channel support in a nonvolatile memory controller
US8392635B2 (en) Selectively enabling a host transfer interrupt
EP0732659B1 (en) Controlling (n+i) I/O channels with (n) data managers in a homogeneous software programming environment
JP4748610B2 (ja) 取り出されたデータをメモリに直接に書き込むストレージコントローラによるバッファスペースの最適な使用
US20070019636A1 (en) Multi-threaded transmit transport engine for storage devices
US20160062669A1 (en) Latency command processing for solid state drive interface protocol
US6889266B1 (en) Method for delivering packet boundary or other metadata to and from a device using direct memory controller
JP2009528609A (ja) 不揮発性メモリの読み出し待ち時間を減少させる方法及びデバイス
US9747233B2 (en) Facilitating routing by selectively aggregating contiguous data units
US8738812B2 (en) Transfer of commands and storage data to a data storage device
US20080301381A1 (en) Device and method for controlling commands used for flash memory
JP2006209778A (ja) ダイレクトメモリアクセスの実現方法および装置、ダイレクトメモリアクセスコンピュータシステム
JP2008009803A (ja) 情報記憶装置、および、情報転送方法、情報転送システム、プログラム、並びに、記録媒体
JP2007172622A (ja) データ転送制御
CN112306927B (zh) 一种io请求的处理方法、装置及系统
JP7003752B2 (ja) データ転送装置、データ転送方法、プログラム
KR20070061240A (ko) 절대 우위의 dma 요청을 처리하는 dma 장치 및 그처리 방법
KR20220114448A (ko) 메모리 컨트롤러 및 메모리 제어 방법
CN116225318A (zh) 命令调度方法、闪存控制器、闪存设备及存储介质
JP2011008824A (ja) 情報記憶装置、情報転送方法、情報転送システム、情報処理装置、並びに、プログラム
JPH1153292A (ja) 記憶装置サブシステム

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: 20121115

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20131115

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20141117

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20151116

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20161115

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee