KR101521995B1 - 불휘발성 메모리 시스템 및 불휘발성 메모리 장치의 액세스방법 - Google Patents
불휘발성 메모리 시스템 및 불휘발성 메모리 장치의 액세스방법 Download PDFInfo
- Publication number
- KR101521995B1 KR101521995B1 KR1020080055637A KR20080055637A KR101521995B1 KR 101521995 B1 KR101521995 B1 KR 101521995B1 KR 1020080055637 A KR1020080055637 A KR 1020080055637A KR 20080055637 A KR20080055637 A KR 20080055637A KR 101521995 B1 KR101521995 B1 KR 101521995B1
- Authority
- KR
- South Korea
- Prior art keywords
- access operation
- memory device
- access
- control program
- nonvolatile memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- 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
- G11C7/1078—Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
- G11C7/1084—Data input buffers, e.g. comprising level conversion circuits, circuits for adapting load
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명의 실시 예에 따른 메모리 시스템은 불휘발성 메모리 장치 그리고 상기 불휘발성 메모리 장치를 제어하기 위한 제어 프로그램을 구동하는 컨트롤러를 포함하고, 상기 제어 프로그램은 상기 불휘발성 메모리 장치에 대한 제 1 액세스 동작이 완료되기 전이라 하더라도, 상기 불휘발성 메모리 장치에 대한 제 2 액세스 동작을 수행하는 것을 특징으로 한다.
Description
본 발명은 반도체 메모리 장치에 관한 것으로, 더 상세하게는 불휘발성 메모리 시스템 및 불휘발성 메모리 장치의 액세스 방법에 관한 것이다.
반도체 메모리 장치(semiconductor memory device)는 데이터를 저장해 두고 필요할 때 꺼내어 읽어볼 수 있는 기억장치이다. 반도체 메모리 장치는 크게 휘발성 메모리 장치(Volatile memory device)와 불휘발성 메모리 장치(Nonvolatile mmory device)로 구분된다.
휘발성 메모리 장치는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치에는 SRAM, DRAM, SDRAM 등이 있다. 불휘발성 메모리 장치는 전원 공급이 차단되어도 저장하고 있던 데이터가 소멸하지 않는 메모리 장치이다. 불휘발성 메모리 장치에는 ROM, PROM, EPROM, EEPROM, 플래시 메모리 장치, PRAM, MRAM, RRAM, FRAM 등이 있다.
본 발명의 목적은 실시간 응답이 가능한 불휘발성 메모리 시스템 및 불휘발성 메모리 장치의 액세스 방법을 제공하는 데에 있다.
본 발명의 또다른 목적은 멀티 쓰레딩 기능을 제공하는 불휘발성 메모리 시스템 및 불휘발성 메모리 장치의 액세스 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 메모리 시스템은 불휘발성 메모리 장치; 그리고 상기 불휘발성 메모리 장치를 제어하기 위한 제어 프로그램을 구동하는 컨트롤러를 포함하고, 상기 제어 프로그램은 상기 불휘발성 메모리 장치에 대한 제 1 액세스 동작이 완료되기 전이라 하더라도, 상기 불휘발성 메모리 장치에 대한 제 2 액세스 동작을 수행하는 것을 특징으로 한다.
실시 예로서, 상기 제 1 액세스 동작이 완료되기 전에 상기 제 1 액세스 동작에 할당된 시간이 경과하면, 상기 제어 프로그램은 상기 제 1 액세스 동작이 완료되었음을 나타내는 응답 신호를 발생한다.
실시 예로서, 상기 제 1 액세스 동작을 중지하는 경우, 상기 제어 프로그램은 상기 제 1 액세스 동작이 수행된 정도를 저장한다.
실시 예로서, 상기 제 1 액세스 동작이 완료되기 전에 상기 제 1 액세스 동작에 할당된 시간이 경과하면, 상기 제어 프로그램은 상기 제 1 액세스 동작을 중지한다. 상기 제어 프로그램은 유휴 시간이 발생하면 상기 중단된 제 1 액세스 동작을 재개한다.
실시 예로서, 상기 제 1 액세스 동작이 중지된 후에 상기 제 2 액세스 동작의 요청이 전달되면, 상기 제어 프로그램은 상기 제 2 액세스 동작을 수행한다. 상기 제 2 액세스 동작이 상기 제 2 액세스 동작에 할당된 시간 이전에 완료되면, 상기 제어 프로그램은 상기 제 2 액세스 동작에 할당된 시간이 경과될 때까지 상기 제 1 액세스 동작을 재개한다.
실시 예로서, 상기 제어 프로그램은 상기 제 1 액세스 동작이 중지된 후에 상기 제 2 액세스 동작의 요청이 전달될 때까지 상기 제 1 액세스 동작을 재개한다.
실시 예로서, 상기 제 1 액세스 동작은 제 1 쓰기 동작이고, 상기 제 2 액세스 동작은 제 2 쓰기 동작 또는 읽기 동작이다. 상기 제 1 쓰기 동작이 중지된 후에 상기 읽기 동작의 요청이 전달되면, 상기 제어 프로그램은 상기 읽기 동작을 수행한다. 상기 제 1 쓰기 동작이 중지된 후에 상기 제 2 쓰기 동작의 요청이 전달되면, 상기 제어 프로그램은 쓰기 버퍼에 대해 상기 제 2 쓰기 동작을 수행한다. 상기 제어 프로그램은 유휴 시간이 발생되면 상기 쓰기 버퍼에 기입된 데이터를 상기 불휘발성 메모리 장치에 기입한다.
실시 예로서, 상기 불휘발성 메모리 장치 및 상기 컨트롤러는 하나의 반도체 장치로 집적된다.
실시 예로서, 상기 불휘발성 메모리 장치 및 상기 컨트롤러는 반도체 디스크 장치를 구성한다.
실시 예로서, 상기 불휘발성 메모리 장치는 플래시 메모리 장치이고, 상기 제어 프로그램은 플래시 변환 계층이다.
실시 예로서, 상기 제어 프로그램은 상기 컨트롤러에 불휘발성으로 저장되는 펌웨어인 것을 특징으로 한다.
실시 예로서, 상기 제어 프로그램은 논리 회로로 구현되는 것을 특징으로 한다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치의 액세스 방법은 제 1 액세스 요청에 따라 제 1 액세스 동작을 수행하는 단계; 상기 제 1 액세스 동작이 완료되지 않았더라도, 상기 제 1 액세스 동작에 할당된 시간이 경과되면 상기 제 1 액세스 동작을 중지하는 단계; 그리고 유휴 시간이 발생되면 상기 중지된 제 1 액세스 동작을 재개하는 단계를 포함한다.
실시 예로서, 상기 제 1 액세스 동작을 재개하는 단계는 제 2 액세스 요청이 전달될 때까지 상기 제 1 액세스 동작을 재개하는 것을 특징으로 한다.
실시 예로서, 상기 제 1 액세스 동작을 재개하는 단계는 제 2 액세스 요청에 따른 제 2 액세스 동작이 상기 제 2 액세스 동작에 할당된 시간 이전에 완료되면, 상기 제 2 액세스 동작에 할당된 시간이 경과될 때까지 상기 제 2 액세스 동작을 재개하는 것을 특징으로 한다.
본 발명의 실시 예에 따른 메모리 시스템은 불휘발성 메모리 장치; 그리고 상기 불휘발성 메모리 장치를 제어하기 위한 제어 프로그램을 구동하는 컨트롤러를 포함하고, 상기 제어 프로그램은 상기 불휘발성 메모리 장치에 대한 제 1 액세스 동작에 할당된 시간이 경과하면, 상기 제 1 액세스 동작이 완료되기 전이라 하더라 도 상기 제 1 액세스 동작이 완료되었음을 나타내는 응답 신호를 호스트에 송신하는 것을 특징으로 한다.
실시 예로서, 상기 제 1 액세스 동작에 할당된 시간이 경과하면, 상기 제어 프로그램은 상기 제 1 액세스 동작을 중지하고 제 2 액세스 동작을 수행하는 것이 가능하다. 상기 제어 프로그램은 유휴 시간이 발생되면 상기 중지된 제 1 액세스 동작을 재개한다.
본 발명의 실시 예에 따르면, 불휘발성 메모리 장치 및 시스템의 동작 성능이 향상된다.
본 발명의 실시 예에 따르면, 불휘발성 메모리 시스템의 제어 프로그램은 제 1 액세스 동작이 완료되기 전이라 하더라도, 불휘발성 메모리 장치에 대한 제 2 액세스 동작을 수행한다. 본 발명의 실시 예에 따른 제어 프로그램은 제 1 액세스 동작에 할당된 시간이 경과하면, 제 1 액세스 동작이 완료되기 전이라 하더라도 제 1 액세스 동작이 완료되었음을 나타내는 응답 신호를 호스트에 송신하는 것을 특징으로 한다. 본 발명의 실시 예에 따르면, 실시간으로 응답할 수 있는 불휘발성 메모리 시스템이 제공된다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
플래시 메모리 장치는 쓰기-전-소거(erase-before-write) 특성을 갖는다. 쓰기-전-소거 특성은 플래시 메모리 장치에 데이터가 저장되려면 대응하는 저장 장소가 먼저 소거되어야 하는 특성이다. 또한, 플래시 메모리 장치는 쓰기 동작의 단위와 소거 동작의 단위가 상이한 특성을 갖는다. 플래시 메모리 장치의 쓰기 동작의 단위는 페이지이고, 소거 동작의 단위는 블록이다. 그리고, 플래시 메모리 장치의 소거 횟수는 10만 회 정도로 제한되어 있다. 이러한 플래시 메모리 장치의 특성으로 인해, 플래시 메모리 장치의 쓰기 동작 시에 쓰기 동작 이외의 추가적인 동작들이 수행된다. 예를 들면, 플래시 메모리 장치의 쓰기 동작 시에 가비지 컬렉션(Garbage Collection) 및 웨어 레벨링(wear leveling) 동작이 추가적으로 수행된다.
플래시 메모리 장치의 소거 횟수는 10만 회 정도로 제한되어 있다. 따라서, 호스트(Host)로부터 데이터에 대한 소거 요청(Request)이 전달되어도, 데이터는 소거되지 않고 무효(Invalid) 데이터로 설정된다. 그리고, 호스트(Host)로부터 전달되는 쓰기 데이터는 데이터가 저장되어 있지 않은 프리 블록(Free Block)에 기입된다. 즉, 플래시 메모리 장치에 대한 쓰기(Write) 또는 갱신(Overwrite) 동작은 플래시 메모리 장치의 프리 블록을 사용한다.
플래시 메모리 장치에 대한 쓰기 또는 갱신 동작이 반복되면, 플래시 메모리 장치의 대부분의 프리 블록들이 사용될 것이다. 사용 가능한 프리 블록의 수가 미리 설정된 수보다 적은 경우에 쓰기 요청이 전달되면, 플래시 메모리 시스템은 가비지 컬렉션 동작을 수행한다. 가비지 컬렉션 동작은 머지(Merge), 컴팩션(Compaction), 그리고 가비지 블록 겟(Garbage Block Get)으로 구성된다. 가비지 컬렉션 동작은 유효(Valid) 데이터 및 무효(Invalid) 데이터가 저장되어 있는 로그 블록(Log Block, 물리 블록이라고도 불림)의 유효 데이터를 프리 블록에 복사(Copy)하고, 유효 및 무효 데이터가 저장되어 있는 로그 블록의 유효 데이터를 무효 데이터로 설정된다. 이후에, 무효 데이터가 저장되어 있는 로그 블록이 소거되어 프리 블록으로 설정된다. 즉, 가비지 컬렉션 동작이 수행되면, 데이터가 기입될 수 있는 프리 블록의 수가 증가된다.
웨어 레벨링 동작은 플래시 메모리 장치의 특정한 로그 블록의 소거 횟수가 다른 로그 블록들의 소거 횟수보다 기준값 이상으로 많아지는 것을 방지한다. 즉, 웨어 레벨링 동작은 플래시 메모리 장치의 특정한 로그 블록이 다른 로그 블록들보다 빠르게 열화되는 것을 방지한다. 웨어 레벨링 동작은 무효 데이터를 저장하고 있는 로그 블록들 중 소거 횟수가 가장 적은 로그 블록이 프리 블록으로 설정되도록 한다.
즉, 호스트(Host)로부터 쓰기 요청이 전달되면, 플래시 메모리 장치에서 쓰기 동작 뿐 아니라 가비지 컬렉션 및 웨어 레벨링 동작이 추가적으로 수행될 수 있다. 이 경우에, 플래시 메모리 장치가 호스트(Host)로부터의 쓰기 요청에 응답하는 시간은 지연될 것이다. 즉, 플래시 메모리 장치는 호스트(Host)로부터의 요청에 실시간으로 응답하지 않을 것이다.
또한, 가비지 컬렉션 및 웨어 레벨링 동작은 플래시 메모리 장치가 유휴(Idle) 상태인 경우에 배경 동작(Background Operation)으로써 수행될 수 있다. 배경 동작으로써 가비지 컬렉션 및 웨어 레벨링 동작이 수행되는 경우에 호스트(Host)로부터 액세스 요청이 전달되면, 플래시 메모리 장치가 호스트(Host)로부터의 액세스 요청에 응답하는 시간은 지연될 것이다. 즉, 플래시 메모리 장치는 호스트(Host)로부터의 요청에 실시간으로 응답하지 않을 것이다.
도 1은 일반적인 플래시 메모리 시스템이 동작하는 실시 예를 보여주는 순서도이다. 도 1을 참조하면, S1100 단계에서 쓰기 요청이 수신된다. 쓰기 요청은 호스트(Host)로부터 플래시 메모리 시스템에 전달된다.
S1200 단계에서, 플래시 메모리 시스템은 데이터를 기입하기 위한 로그 블록을 검출한다. 즉, 플래시 메모리 시스템의 로그 블록들 중 프리 블록이 검출된다.
S1300 단계에서, 플래시 메모리 시스템의 로그 블록들 중 프리 블록이 존재하면, S1800 단계에서 프리 블록에 데이터가 기입된다. 플래시 메모리 시스템의 로그 블록들 중 프리 블록이 존재하지 않으면, S1400 단계가 수행된다. 간결한 설명을 위하여, 플래시 메모리 시스템의 로그 블록들 중 프리 블록이 존재하는지의 여부에 따라 S1400 단계 또는 S1800 단계가 수행되는 것으로 설명되었다. 그러나, S1400 단계 또는 S1800 단계는 플래시 메모리 시스템의 프리 블록의 수가 미리 설정된 수 보다 적은 경우에 선택적으로 수행될 수 있음이 이해될 것이다.
S1400 단계에서, 플래시 메모리 시스템은 프리 블록을 획득하기 위한 동작을 수행한다. 예시적으로, 플래시 메모리 시스템은 프리 블록을 획득하기 위해 가비지 컬렉션을 수행할 것이다. 또한, 플래시 메모리 시스템은 로그 블록들의 소거 횟수를 제어하기 위해 웨어 레벨링을 수행할 것이다. 간결한 설명을 위하여, 플래시 메 모리 시스템은 가비지 컬렉션 동작들 중 컴팩션 동작을 수행하는 것으로 설명된다. 그러나, 플래시 메모리 시스템은 수행하는 가비지 컬렉션 동작은 컴팩션 동작으로 한정되지 않는다. 플래시 메모리 시스템은 머지, 컴팩션, 가비지 블록 겟 동작들 중 하나, 또는 다른 가비지 컬렉션 동작을 통해 프리 블록을 획득할 수 있음이 이해될 것이다.
S1500 단계에서, 플래시 메모리 시스템은 카피 컴팩션(Copy Compaction) 및 컴팩션(Compaction) 동작 중 어느 것이 효율적인지 판별한다. 카피 컴팩션 동작이 효율적인 것으로 판별되면, S1600 단계에서 카피 컴팩션 동작이 수행된다. 컴팩션 동작이 효율적인 것으로 판별되면, S1700 단계에서 컴팩션 동작이 수행된다. 플래시 메모리 시스템은 카피 컴팩션 또는 컴팩션 동작 중 하나를 수행하는 것으로 설명되었다. 그러나, 플래시 메모리 시스템은 카피 컴팩션 또는 컴팩션 이외의 다른 가비지 컬렉션 동작을 수행할 수 있음이 이해될 것이다.
S1600 단계에서, 카피 컴팩션 동작이 수행된다. 제 1 로그 블록은 무효 데이터 및 유효 데이터를 저장하는 페이지로 구성되고, 제 2 로그 블록은 유효 데이터를 저장하고 있는 페이지와 데이터가 저장되어 있지 않는 프리 페이지들(Free Pages)로 구성되어 있는 것으로 가정하자. 플래시 메모리 시스템은 제 1 로그 블록의 유효 데이터를 제 2 로그 블록의 프리 페이지들에 복사한다. 그리고, 플래시 메모리 시스템은 제 1 로그 블록을 소거하여, 프리 블록을 획득한다.
S1700 단계에서, 컴팩션 동작이 수행된다. 제 1 로그 블록과 제 2 로그 블록은 각각 무효 데이터와 유효 데이터를 저장하고 있고, 제 3 로그 블록은 프리 블록 인 것으로 가정하자. 플래시 메모리 시스템은 제 1 및 제 2 로그 블록들의 유효 데이터를 제 3 로그 블록에 복사한다. 그리고, 플래시 메모리 시스템은 제 1 로그 블록 및 제 2 로그 블록을 소거하여, 프리 블록을 획득한다.
S1800 단계에서, 플래시 메모리 시스템은 데이터를 프리 블록에 기입한다.
상술한 바와 같이, 호스트(Host)로부터 쓰기 요청이 전달된 때에 가비지 컬렉션이 수행되면, 플래시 메모리 시스템이 호스트(Host)로부터의 요청에 응답하는 시간이 지연된다. 가비지 컬렉션과 웨어 레벨링이 동시에 수행되면, 플래시 메모리 시스템이 호스트(Host)로부터의 요청에 응답하는 시간은 더욱 지연될 것이다. 또한, 가비지 컬렉션 및 웨어 레벨링이 배경 작업으로써 수행되는 경우에도, 플래시 메모리 시스템이 호스트(Host)로부터의 요청에 응답하는 시간은 지연될 것이다.
도 2는 본 발명의 실시 예에 따른 메모리 시스템(500)을 보여주는 블록도이다. 도 2를 참조하면, 본 발명의 실시 예에 따른 메모리 시스템(500)은 컨트롤러(100) 및 불휘발성 메모리 장치(200)를 포함한다.
컨트롤러(100)는 호스트(Host) 및 불휘발성 메모리 장치(200)에 연결된다. 컨트롤러(100)는 불휘발성 메모리 장치(200)로부터 읽은 데이터를 호스트(Host)에 전달하거나, 호스트(Host)로부터 전달되는 데이터를 불휘발성 메모리 장치(200)에 저장한다.
컨트롤러(100)는 램, 프로세싱 유닛, 호스트 인터페이스, 그리고 메모리 인터페이스를 포함할 것이다. 램은 프로세싱 유닛의 동작 메모리로서 이용될 것이다. 프로세싱 유닛은 컨트롤러(100)의 제반 동작을 제어할 것이다. 호스트 인터페이스 는 호스트(Host) 및 컨트롤러(100) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함할 것이다. 예시적으로, 컨트롤러(100)는 USB, MMC, PCI-E, ATA(Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI, ESDI, 그리고 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(호스트)와 통신하도록 구성될 것이다. 메모리 인터페이스는 불휘발성 메모리 장치(200)와 인터페이싱할 것이다. 컨트롤러(100)는 오류 정정 블록을 추가적으로 포함할 수 있다. 오류 정정 블록은 불휘발성 메모리 장치(200)로부터 읽어진 데이터의 오류를 검출하고, 정정할 것이다.
컨트롤러(100) 및 불휘발성 메모리 장치(200)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 컨트롤러(100) 및 불휘발성 메모리 장치(200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 것이다. 다른 예로서, 컨트롤러(100) 및 불휘발성 메모리 장치(200)는 하나의 반도체 장치로 집적되어 반도체 디스크/드라이브(SSD, Solid State Disk/Drive)를 구성할 것이다. 메모리 시스템(500)이 반도체 디스크(SSD)로 이용되는 경우, 메모리 시스템(500)에 연결된 호스트(Host)의 동작 속도는 획기적으로 개선될 것이다.
불휘발성 메모리 장치(200)는 데이터 저장 영역(210) 및 버퍼(220)를 포함한다. 데이터 저장 영역(210)은 사용자 데이터를 저장하기 위한 저장 영역이다. 버퍼(220)는 데이터 저장 영역(210)에 기입될 데이터를 임시로 저장하는 저장 영역이다. 본 발명의 실시 예에 따른 버퍼(220)는 데이터 저장 영역(210)과 동일한 구조로 형성될 것이다. 예시적으로, 불휘발성 메모리 장치(200)의 메모리 셀 어레이 가 두 개의 영역으로 분할되고, 각각이 데이터 저장 영역(210) 및 버퍼(220)로 이용될 것이다.
컨트롤러(100)는 불휘발성 메모리 장치(200)를 제어하기 위한 제어 프로그램(100')을 구동할 것이다. 제어 프로그램(100')은 불휘발성 메모리 장치의 읽기, 쓰기, 그리고 소거 동작을 제어할 것이다.
호스트(Host)로부터의 액세스 요청에 따른 액세스 동작은 할당된 시간(Assigned Time)을 갖는다. 예시적으로, 4KB의 데이터를 기입하는 동작은 30ms의 할당 시간을 가질 것이다. 호스트(Host)로부터의 액세스 요청이 전달된 후, 메모리 시스템(500)이 할당된 시간 내에 액세스 동작을 완료하지 않으면 타임 아웃(Time-Out)이 발생될 것이다. 본 발명의 실시 예에 따른 메모리 시스템(500)은 타임 아웃이 발생되는 것을 방지한다.
도 3은 본 발명의 실시 예에 따른 메모리 시스템(500)의 동작을 보여주는 순서도이다. 도 2 및 3을 참조하면, S110 단계에서, 호스트(Host)로부터 액세스 요청이 수신된다. S120 단계에서, 메모리 시스템(500)은 호스트(Host)로부터의 액세스 요청에 따른 액세스 동작을 수행한다. 예시적으로, 제어 프로그램(100')은 액세스 요청에 따른 쓰기, 읽기, 또는 소거 동작을 수행할 것이다.
S130 단계에서, 제어 프로그램(100')은 액세스 동작에 할당된 시간이 경과되었는지의 여부를 체크한다. S140 단계에서, 액세스 동작에 할당된 시간이 경과되지 않았으면, S120 단계에서 액세스 동작이 계숙 수행된다. 액세스 동작에 할당된 시간이 경과되었으면, S150 단계에서, 제어 프로그램(100')은 액세스 동작이 완료되 었음을 나타내는 응답 신호를 호스트(Host)에 송신한다.
즉, 본 발명의 실시 예에 따른 메모리 시스템(500)은 액세스 동작에 할당된 시간이 경과하면, 액세스 동작이 완료되었음을 나타내는 응답 신호를 호스트(Host)에 송신한다. 그리고, 제어 프로그램(100')은 액세스 동작을 중지하고, 새로운 액세스 요청을 수신한다. 중지된 액세스 동작은 유휴 시간이 발생되는 경우에 재개된다. 예시적으로, 제어 프로그램(100')은 멀티 쓰레딩 기법을 이용하여 호스트(Host)로부터의 액세스 요청을 처리할 것이다. 제어 프로그램(100')은 롬(ROM) 또는 불휘발성 메모리 장치에 펌웨어(Firmware)로써 저장될 것이다. 다른 예로써, 제어 프로그램(100')은 논리 회로로 구성될 것이다.
도 4는 도 2의 메모리 시스템(500)의 제어 프로그램(100')을 보여주는 블록도이다. 불휘발성 메모리 장치(200)를 제어하기 위한 제어 프로그램(100')은 컨트롤러(100, 도 2 참조)에서 구동된다. 제어 프로그램(100')은 읽기/쓰기 관리자(110), 제 1 매핑 테이블(120), 제 2 매핑 테이블(130), 그리고 메모리 관리자(140)를 포함한다.
읽기/쓰기 관리자(110)는 제 1 매핑 테이블(120) 및 제 2 매핑 테이블(130)을 이용하여 불휘발성 메모리 장치(200)에 대한 읽기 동작 및 쓰기 동작을 제어한다. 제 1 매핑 테이블(120)은 불휘발성 메모리 장치(200)의 데이터 저장 영역(210)을 액세스하기 위해 이용된다. 제 2 매핑 테이블(130)은 불휘발성 메모리 장치(200)의 버퍼(220)를 액세스하기 위해 이용된다. 제 1 및 2 매핑 테이블(120, 130)은 호스트(Host)로부터 전달되는 논리적 어드레스(LA, Logical Address)를 물 리적 어드레스(PA, Physical Address)로 변환하기 위해 이용된다.
메모리 관리자(140)는 불휘발성 메모리 장치(200)의 액세스, 호스트(Host)와 통신 전반을 제어한다. 호스트(Host)로부터의 제 1 액세스 요청에 따른 제 1 액세스 동작이 완료되지 않았다고 하더라도, 메모리 관리자(140)는 호스트(Host)로부터의 제 2 액세스 요청에 따른 제 2 액세스 동작을 수행한다. 즉, 메모리 관리자(140)는 메모리 시스템(500)에 실시간 응답성을 제공한다.
이하에서, 플래시 메모리 시스템의 예를 들어, 본 발명의 실시 예가 상세히 설명된다. 그러나, 본 발명의 실시 예는 플래시 메모리 시스템에 한정되지 않는다. 예를 들면, 본 발명의 기술적 사상은 PRAM, RRAM, MRAM, FRAM, EEPROM과 같은 불휘발성 메모리 장치를 포함하는 메모리 시스템에 적용될 수 있음이 이해될 것이다.
플래시 메모리 장치(200)의 셀 어레이는 데이터 저장 영역(210) 및 버퍼(220)로 분할된다. 버퍼(220)는 데이터 저장 영역(210)보다 빠른 액세스 속도를 갖는다. 예시적으로, 데이터 저장 영역(210) 및 버퍼(220)에 이용되는 매핑 테이블들(120, 130)을 상이하게 설정함으로써, 데이터 저장 영역(210) 및 버퍼(220)의 동작 속도가 조절될 것이다.
도 5는 본 발명의 실시 예에 따른 매핑 테이블들(120, 130)의 동작을 설명하기 위한 블록도이다. 도 4 및 5를 참조하면, 매핑 테이블들(120, 130)은 호스트(Host)에 의해 액세스되는 데이터 블록들(DB) 및 제어 프로그램(100')에 의해 액세스되는 로그 블록들(LB)을 매핑한다. 데이터 블록들(DB)은 논리적 어드레스(Logical Address)에 의해 액세스되며, 로그 블록들(LB)은 물리적 어드레 스에 의해 액세스된다.
데이터 블록들(DB)은 하나 또는 그 이상의 데이터 블록 그룹들을 구성한다. 각각의 데이터 블록 그룹은 미리 설정된 수의 데이터 블록들(DB)로 구성된다. 로그 블록들(LB)은 하나 또는 그 이상의 로그 블록 그룹들을 구성한다. 각각의 로그 블록 그룹은 미리 설정된 수의 로그 블록들(LB)로 구성된다. 하나 또는 그 이상의 데이터 블록 그룹들은 하나 또는 그 이상의 로그 블록 그룹들에 매핑된다.
매핑 테이블들(120, 130)은 각각 블록 매핑 테이블(BMT) 및 페이지 매핑 테이블들(PMT)을 포함한다. 블록 매핑 테이블(BMT)은 데이터 블록 그룹들 및 로그 블록 그룹들을 매핑한다. 예시적으로, 데이터 블록 그룹이 두 개의 데이터 블록들(DB)로 구성되고 로그 블록 그룹이 네 개의 로그 블록들(LB)로 구성되는 경우, 블록 매핑 테이블(BMT)은 두 개의 데이터 블록 그룹과 하나의 로그 블록 그룹을 매핑한다. 페이지 매핑 테이블(PMT)은 데이터 블록 그룹의 데이터 블록들(DB)의 페이지 및 대응하는 로그 블록 그룹의 로그 블록들(LB)의 페이지를 매핑한다.
데이터 저장 영역(210)의 데이터 블록들(DB) 및 로그 블록들(LB)은 블록 결합 매핑(Block Associative Mapping) 방법으로 매핑된다. 즉, 데이터 블록들(DB)은 복수의 데이터 블록 그룹들로 분할되고, 로그 블록들(LB)은 복수의 로그 블록 그룹들로 분할된다. 매핑 테이블(120)의 블록 매핑 테이블(BMT)은 데이터 블록 그룹들과 로그 블록 그룹들을 매핑한다. 매핑 테이블(120)의 페이지 매핑 테이블(PMT)은 데이터 블록 그룹의 페이지들과 로그 블록 그룹의 페이지들을 매핑한다. 즉, 데이터 저장 영역(210)은 블록 그룹 및 페이지 단위로 관리된다.
버퍼(220)의 데이터 블록들(DB) 및 로그 블록들(LB)은 전체 결합 매핑(Fully Associative Mapping) 방법으로 매핑된다. 즉, 모든 데이터 블록들(DB)은 하나의 데이터 블록 그룹을 형성하고, 모든 로그 블록들(LB)은 하나의 로그 블록 그룹을 형성한다. 매핑 테이블(130)의 페이지 매핑 테이블(PMT)은 모든 데이터 블록들(DB)의 페이지와 모든 로그 블록들(LB)의 페이지를 매핑한다. 즉, 버퍼(220)는 페이지 매핑 테이블(PMT)에 의해 페이지 단위로 관리된다.
버퍼(220)가 페이지 단위로 관리되므로, 버퍼(220)에 기입될 데이터가 전달되면, 버퍼(220)의 프리 페이지(Free Page)가 검출되고 검출된 프리 페이지에 데이터가 기입된다. 또한, 버퍼(220)는 FIFO(First-in First-out) 방식으로 동작할 것이다. 예시적으로, 버퍼(220)의 제 1 로그 블록(LB)의 페이지들 및 제 2 로그 블록(LB)의 페이지들에 순차적으로 데이터가 기입되면, 제 1 로그 블록(LB)의 페이지들 및 제 2 로그 블록(LB)의 페이지들에 저장된 데이터들이 순차적으로 소거될 것이다. 제 1 로그 블록(LB)의 페이지들이 무효(Invalid) 페이지들로 설정되면, 제 1 로그 블록(LB)은 소거될 것이다. 즉, 버퍼(220)의 동작 시에, 가비지 컬렉션(Garbage Collection) 동작이 요구되지 않는다. 따라서, 버퍼(220)의 동작 속도는 데이터 저장 영역(210)의 동작 속도보다 빠를 것이다.
메모리 시스템(500)에 실시간 응답성을 제공하기 위해, 제어 프로그램(100')은 코루틴(coroutine) 방식을 이용한다. 제어 프로그램(100')은 호스트(Host)로부터의 요청을 상위 쓰레드(Primary Thread) 및 하위 쓰레드(Secondary Thread)로 구분한다. 하위 쓰레드 요청에 따른 동작을 수행하는 동안 상위 쓰레드 요청이 전달 되면, 제어 프로그램(100')은 하위 쓰레드 동작을 중지하고, 상위 쓰레드 요청에 따른 동작을 수행한다. 중지된 하위 쓰레드 동작은 제어 프로그램(100')이 유휴(Idle) 상태일 때에 재개된다.
예를 들면, 중지된 동작 또는 수행중인 동작이 없는 경우에 전달되는 액세스 요청은 하위 쓰레드로 판별된다. 그리고, 중지된 동작 또는 수행중인 동작이 있는 경우에 전달되는 액세스 요청은 상위 쓰레드로 판별된다. 제어 프로그램(100')은 상위 쓰레드 및 하위 쓰레드를 이용하여, 멀티 쓰레드 기능을 제공한다.
제어 프로그램(100')이 수행하는 동작들 중 미리 설정된 시간 이상이 요구되는 동작들(예를 들면, 쓰기, 가비지 컬렉션, 웨어 레벨링 등)은 하나 또는 그 이상의 중지점(Suspend Point)을 갖는다. 제어 프로그램(100')이 수행하는 동작들은 중지점에서 중지될 수 있다. 이후에, 중지된 동작은 중지점으로부터 재개될 수 있다. 예시적으로, 하나의 페이지에 대한 프로그램 동작 전후에 중지점이 형성될 것이다. 또는, 하나의 블록에 대한 소거 동작 전후에 중지점이 형성될 것이다.
예를 들면, 하위 쓰레드 동작을 수행하는 동안 상위 쓰레드 동작의 요청이 전달되면, 제어 프로그램(100')은 하위 쓰레드 동작의 중지점에서 하위 쓰레드 동작을 중지하고 상위 쓰레드 동작을 수행한다. 이후에, 유휴 시간이 발생되면, 제어 프로그램(100')은 중지된 하위 쓰레드 동작을 중지점으로부터 재개한다.
도 6은 도 4의 제어 프로그램(100')이 제공하는 멀티 쓰레드 기능의 실시 예를 보여주는 순서도이다. 도 6에서, 하위 쓰레드 동작은 하나의 중지점을 갖고, 중지점을 기준으로 두 개의 바디(Body1, Body2)로 분할되는 것으로 도시되어 있다. 그러나, 본 발명의 실시 예에 따른 상위 또는 하위 쓰레드 동작은 하나의 중지점을 갖는 것으로 한정되지 않는다. 본 발명의 실시 예에 따른 상위 또는 하위 쓰레드 동작은 n 개의 중지점과 n+1 개의 바디들을 갖는다.
S2100 단계에서, 로컬 변수(Local Variable)인 프로그램 카운터(PC, Program Counter)를 리셋된다. 프로그램 카운터(PC)는 하위 쓰레드 동작이 수행되는 동안 몇 개의 중지점을 통과하였는지를 나타낸다.
S2200 단계에서, 하위 쓰레드 동작의 바디(Body1)가 수행된다. 예시적으로, 하위 쓰레드 동작이 플래시 메모리 장치(200, 도 2 참조)의 두 개의 페이지에 대한 쓰기 동작인 경우, 바디(Body1)는 하나의 페이지에 대한 쓰기 동작일 수 있다.
S2300 단계는 중지점(Suspend Point)을 나타낸다. 중지점에서, 하위 쓰레드 동작은 중지될 수 있다. S2300 단계는 복수의 하위 단계들을 포함한다.
S2320 단계에서, 프로그램 카운터(PC)가 증가된다. 즉, 하위 쓰레드 동작이 중지점을 수행할 때마다 프로그램 카운터(PC)가 증가된다. 프로그램 카운터(PC)는 하위 쓰레드 동작이 몇 번째의 중지점까지 수행되었는지를 나타낸다. 하위 쓰레드 동작이 중지점에서 중지되는 경우, 프로그램 카운터(PC)는 중지된 하위 쓰레드 동작을 재개하기 위한 재개 포인트(Resume Point)를 검출하는 데에 이용될 것이다.
S2340 단계에서, 상위 쓰레드 동작이 요청되었는지 검출된다. S2360 단계에서, 상위 쓰레드 동작이 요청되었으면, S2380 단계에서 하위 쓰레드 동작이 중지된다. 상위 쓰레드 동작이 요청되지 않았으면, S2500 단계가 수행된다.
S2380 단계에서 하위 쓰레드 동작이 중지되면, S2400 단계에서 상위 쓰레드 동작이 수행된다. 상위 쓰레드 동작이 완료되면, S2500 단계에서 하위 쓰레드 동작이 재개된다.
S2500 단계에서, 제어 프로그램(100')은 프로그램 카운터(100')를 이용하여 중지된 하위 쓰레드 동작의 재개점을 검출한다. 예시적으로, 프로그램 카운터(PC)의 값이 2인 경우, 제어 프로그램(100')은 2번째 중지점 이후의 바디를 수행할 것이다.
S2600 단계에서, 하위 쓰레드 동작의 바디(Body2)가 수행된다.
제어 프로그램(100')이 유휴 상태인 경우에 전달되는 요청은 하위 쓰레드로서 수행될 것이다. 제어 프로그램(100')이 비지(Busy) 상태인 경우에 전달되는 요청은 상위 쓰레드로서 수행될 것이다.
제어 프로그램(100')이 상위 쓰레드 또는 하위 쓰레드 동작을 수행하는 경우, 컨트롤러(100, 도 1 참조)의 동작 메모리(예를 들면, SRAM)의 일부가 상위 또는 하위 쓰레드 동작의 수행을 위해 할당된다. 제어 프로그램(100')은 상위 또는 하위 쓰레드 동작을 수행하기 위해 요구되는 변수들(Variables)을 할당된 저장 공간에 저장한다.
하위 쓰레드 동작이 중지되고, 상위 쓰레드 동작이 수행되고, 그리고 하위 쓰레드 동작이 재개되려면, 상위 쓰레드 동작이 수행되는 동안 하위 쓰레드 동작의 지역 변수들이 유지되어야 한다. 그런데, 상위 및 하위 쓰레드 동작의 지역 변수들은 동일한 저장 공간에 저장된다. 따라서, 상위 쓰레드 동작이 수행되는 동안, 상위 쓰레드 동작의 지역 변수들에 의해 하위 쓰레드 동작의 지역 변수들의 값이 변 화되거나 소멸될 수 있다.
본 발명의 실시 예에 따른 제어 프로그램(100')은 하위 쓰레드 동작의 지역 변수들과 상위 쓰레드 동작의 지역 변수들이 저장되는 저장 방법을 상이하게 설정한다. 그리고, 제어 프로그램(100')은 하위 쓰레드 동작이 중지되는 경우에도 하위 쓰레드 동작의 지역 변수들을 유지한다.
도 7a 내지 7c는 도 4의 제어 프로그램(100')이 상위 및 하위 쓰레드 동작의 지역 변수들을 저장하는 방법을 보여주는 다이어그램이다. 도 7a를 참조하면 하위 쓰레드 동작의 지역 변수들은 힙(HEAP) 방식으로 저장된다. 하위 쓰레드 동작이 중지되는 경우, 프로그램 카운터(PC) 또한 힙(HEAP) 방식으로 저장된다.
도 7b를 참조하면, 상위 쓰레드 동작의 지역 변수들은 스택(STACK) 방식으로 저장된다. 상위 및 하위 쓰레드 동작의 지역 변수들이 저장 공간(LDA)에 상이한 형태로 저장되므로, 상위 및 하위 쓰레드 동작의 지역 변수들이 저장되는 공간은 중복되지 않는다. 따라서, 상위 쓰레드의 지역 변수에 의해 하위 쓰레드의 지역 변수가 변형되거나 소멸되지 않는다.
도 7c를 참조하면, 상위 쓰레드 동작이 종료되면, 상위 쓰레드 동작의 지역 변수들은 소멸된다. 하위 쓰레드 동작의 지역 변수들 및 프로그램 카운터는 유지되고 있으므로, 하위 쓰레드 동작은 정상적으로 재개될 수 있다.
본 발명의 실시 예에 따른 제어 프로그램(100')은 멀티 쓰레드 기법을 이용하여 메모리 시스템(500)에 실시간성을 제공한다. 메모리 시스템(500)은 호스트(Host)로부터의 제 1 액세스 요청에 따른 제 1 액세스 동작을 수행한다. 그 런데, 가비지 컬렉션 또는 웨어 레벨링 등에 의해, 제 1 액세스 동작은 제 1 액세스 동작에 할당된 시간 내에 완료되지 않을 수 있다. 제 1 액세스 동작이 완료되지 않은 때에 제 2 액세스 요청이 전달되면, 제어 프로그램(100')은 제 1 액세스 동작을 중지하고, 제 1 액세스 동작이 완료되었음을 나타내는 응답 신호를 호스트(Host)에 전송한다. 그리고, 제어 프로그램(100')은 제 2 액세스 요청에 따른 제 2 액세스 동작을 수행한다. 유휴 시간이 발생되면, 제어 프로그램(100')은 중지된 제 1 액세스 동작을 재개한다.
도 8은 제 1 타입 유휴 시간을 설명하기 위한 다이어그램이다. 도 8에서, 가로 축은 시간을 나타내고 세로 축은 제어 프로그램(100')의 상태를 나타낸다.
시간(t1)에 제 1 액세스 요청(Req1)이 전달되면, 제어 프로그램(100')은 제 1 액세스 요청(Req1)에 따른 제 1 액세스 동작을 수행한다. 이때, 제어 프로그램(100')은 비지(Busy) 상태이다. 제 1 액세스 동작에 할당된 시간이 ta-t1 인 경우, 호스트(Host)는 시간(ta) 이후에 제 2 액세스 요청(Req2)을 송신할 것이다. 제 1 액세스 동작이 시간(t2)에 종료되는 경우, 제 2 액세스 요청(Req2)이 송신될 때까지의 시간(ta-t1) 동안 호스트(Host)는 액세스 요청을 송신하지 않는다. 즉, 제어 프로그램(100')은 유휴(Idle) 시간을 갖는다.
도 8에 도시된 바와 같이, 액세스 동작이 할당 시간 이전에 완료되어 발생되는 유휴 시간은 인트라-트랜잭션 슬랙 타임(ST1, Intra-Transaction Slack Time)이라고 불린다. 제어 프로그램(100')은 유휴 시간(ST1) 동안 중지된 액세스 동작을 재개할 수 있다.
도 9은 제 2 타입 유휴 시간을 설명하기 위한 다이어그램이다. 도 9에서, 가로축은 시간을 나타내며, 세로 축은 제어 프로그램(100', 도 2 참조)의 상태를 나타낸다.
제 1 액세스 요청(Req1)은 시간(t1)에 수신된다. 제어 프로그램(100')은 제 1 액세스 요청(Req1)에 따른 제 1 액세스 동작에 할당된 시간(ta-t1)에 제 1 액세스 동작을 완료한다. 호스트(Host)는 시간(ta) 이후부터 제 2 액세스 요청(Req2)을 송신할 수 있다. 그런데, 호스트(Host)가 메모리 시스템(500)을 액세스하지 않는 경우, 호스트(Host)는 제 2 액세스 요청(Req2)을 송신하지 않을 것이다. 즉, 호스트(Host)가 제 2 액세스 요청(Req2)을 송신하는 시점은 시간(ta)으로부터 미리 설정된 시간 이후일 수 있다. 예시적으로, 호스트(Host)는 시간(ta) 이후의 시간(t4)에 제 2 액세스 요청(Req2)을 송신할 것이다. 이때, 시간(t4-ta) 동안 제어 프로그램(100')은 유휴 상태를 갖는다.
호스트(Host)로부터 수신되는 액세스 요청들 사이의 유휴 시간은 인터-트랜잭션 슬랙 타임(ST2, Inter-Transaction Slack Time)이라고 불린다. 유휴 시간(ST2) 동안 제어 프로그램(100')은 중지된 액세스 동작을 재개할 것이다.
도 10는 도 4의 제어 프로그램(100')이 호스트의 요청에 따라 동작하는 실시 예를 보여주는 다이어그램이다. 도 10에서, 가로 축은 시간을 나타내고, 세로 축은 제어 프로그램(100')의 기능을 나타낸다.
시간(t5)에서, 호스트(Host)로부터 제 1 액세스 요청(Req1)이 전달된다. 예시적으로, 제 1 액세스 요청(Req1)은 쓰기 요청일 것이다. 제 1 액세스 요청(Req1) 에 할당된 시간(AT)은 시간(t6) 까지이다.
제어 프로그램(100')은 쓰기(Write) 함수를 수행한다. 포인트(J1)에서, 쓰기 함수(Write)는 함수(Get Log Blk)를 호출한다. 함수(Get Log Blk)는 플래시 메모리 장치(200)의 데이터 저장 영역(210)의 로그 블록들 중 프리 블록을 검출하기 위한 함수이다.
데이터 저장 영역(210)에 프리 블록이 존재하지 않는 경우, 포인트(J2)에서, 함수(Get Log Blk)는 함수(Reserve Free)를 호출한다. 함수(Reserve Free)는 프리 블록을 획득하기 위해 가바지 컬랙션을 수행하기 위한 함수이다. 예시적으로, 함수(Reserve Free)는 프리 블록을 획득하기 위해 카피 컴팩션 및 컴팩션 중 어느 것이 효율적인지를 판별할 것이다. 카피 컴팩션이 더 효율적인 것으로 판별되면, 포인트(J3)에서, 함수(Reserve Free)는 함수(Copy Compaction)를 호출한다. 함수(Copy Compaction)는 카피 컴팩션을 수행하여 프리 블록을 획득한다. 프리 블록이 획득되면, 포인트(J4)에서 함수(J4)가 종료되고 함수(Reserve Free)로 리턴한다.
제어 프로그램(100')은 제 1 액세스 동작(제 1 쓰기 동작)에 할당된 시간(AT)이 경과되는지를 체크한다. 제 1 액세스 동작(제 1 쓰기 동작)이 완료되지 않았음에도 불구하고 제 1 액세스 동작(제 1 쓰기 동작)에 할당된 시간이 다가오면, 제어 프로그램(100')은 데이터 저장 영역(210)에 대한 제 1 액세스 동작(제 1 쓰기 동작)을 중지한다. 그리고, 데이터(DATA1) 중 아직 데이터 저장 영역(210)에 기입되지 않은 데이터를 버퍼(220)에 기입한다. 제어 프로그램(100')은 데이터(DATA1) 중 아직 기입되지 않은 데이터의 크기, 버퍼(220)에 데이터를 기입하는데 요구되는 시간, 그리고 제 1 액세스 동작(제 1 쓰기 동작)에 할당된 시간을 비교하여, 제 1 액세스 동작(제 1 쓰기 동작)에 할당된 시간이 경과되기 전에 버퍼(220)에 대한 기입 동작이 완료되도록 제어한다. 버퍼(220)에 대한 기입 동작이 완료되면, 제어 프로그램(100')은 제 1 액세스 동작(제 1 쓰기 동작)이 완료되었음을 나타내는 응답 신호를 호스트(Host)에 송신한다.
시간(t6)에, 호스트(Host)는 제 2 액세스 요청(Req2)을 송신한다. 예시적으로, 제 2 액세스 요청(Req2)은 제 2 쓰기 요청일 것이다. 제어 프로그램(100')은 제 2 액세스 요청(Req2)에 따른 제 2 액세스 동작(제 2 쓰기 동작)을 수행한다. 제 2 액세스 동작(제 2 쓰기 동작)에 할당된 시간(AT)은 시간(t8) 까지이다. 그런데, 제 1 쓰기 동작이 중지되어 있으므로, 제어 프로그램(100')은 데이터 저장 영역(210) 대신 버퍼(220)에 제 2 쓰기 동작을 수행한다.
버퍼(220)의 동작 속도는 데이터 저장 영역(210)의 동작 속도보다 빠르다. 따라서, 버퍼(220)에 데이터를 기입하는 제 2 쓰기 동작은 할당 시간(AT)보다 빠르게 완료될 것이다. 예시적으로, 제 2 쓰기 동작은 시간(t7)에 완료된다. 제 2 쓰기 동작이 완료되면, 제어 프로그램(100')은 제 2 쓰기 동작이 완료되었음을 나타내는 응답 신호(Res2)를 호스트(Host)에 송신한다. 호스트(Host)에 응답 신호(Res2)가 송신되어도, 호스트(Host)는 제 2 액세스 동작(제 2 쓰기 동작)의 할당 시간(AT) 이후에 새로운 액세스를 요청할 것이다. 즉, 제 2 액세스 동작이 완료된 시간(t7)부터 제 2 액세스 동작에 할당된 시간(t8) 까지 제어 프로그램(100')은 유휴 상태 가 된다. 더 상세하게는, 제어 프로그램(100')은 인트라-트랜잭션 슬랙 타임(ST1)을 갖는다.
제어 프로그램(100')은 포인트(J6)에서 중지된 제 1 액세스 동작(제 1 쓰기 동작)을 재개한다. 즉, 중지된 함수(Reserve Free)가 재개된다. 함수(Reserve Free)가 종료되면, 포인트(J7)에서, 제어 프로그램은 함수(Get Log Blk)로 리턴된다. 함수(Get Log Blk)가 종료되면, 포인트(J8)에서, 제어 프로그램(100')은 함수(Write)로 리턴된다. 함수(Get Log Blk)에 의해 프리 블록이 획득되었으므로, 데이터 저장 영역(210)에 제 1 쓰기 데이터(DATA1)가 기입된다.
제 2 액세스 동작(제 2 쓰기 동작)에 할당된 시간(AT)이 경과하면, 포인트(J9)에서, 제어 프로그램(100')은 제 1 액세스 동작(제 1 쓰기 동작)을 중지한다. 그리고, 제어 프로그램(100')은 새로운 액세스 요청에 수신되는지 검출한다. 새로운 액세스 요청이 수신되지 않으면, 제어 프로그램(100')은 유휴 시간을 갖는다. 더 상세하게는, 제어 프로그램(100')은 인터-트랜잭션 슬랙 타임(ST2)을 갖는다. 유휴 시간이 발생되었으므로, 제어 프로그램(100')은 제 1 액세스 동작(제 1 쓰기 동작)을 재개한다.
제어 프로그램(100')은 제 1 액세스 동작(제 1 쓰기 동작)에 설정되어 있는 중지점 마다 제 1 액세스 동작(제 1 쓰기 동작)을 중지하고, 새로운 액세스 요청이 수신되는지 검출한다. 새로운 액세스 요청이 전달되지 않으면, 제어 프로그램(100')은 제 1 액세스 동작(제 1 쓰기 동작)을 재개한다. 새로운 액세스 요청이 전달되면, 제어 프로그램(100')은 새로운 액세스 요청에 따른 액세스 동작 을 수행할 것이다.
제어 프로그램(100')이 중지된 액세스 동작을 재개하는 시간 동안, 제어 프로그램(100')은 호스트(Host)로부터의 액세스 요청에 응답할 수 없다. 즉, 제어 프로그램(100')이 새로운 액세스 요청의 수신 여부를 검출하는 동작들 사이의 시간 만큼 새로운 액세스 동작은 지연되어 수행될 것이다. 따라서, 액세스 동작의 중지점들 사이의 시간 간격은 새로운 액세스 동작이 미리 설정된 시간 보다 지연되어 수행되지 않도록 설정될 것이다.
시간(t9)에 제 1 액세스 동작(제 1 쓰기 동작)이 종료된다. 그런데, 제 2 액세스 요청(제 2 쓰기 요청)에 따른 제 2 액세스 동작(제 2 쓰기 동작)은 데이터 저장 영역(210)이 아닌 버퍼(220)에 대해 수행되었다. 제어 프로그램(100')은 데이터 저장 영역(210)이 아닌 버퍼(220)에 대해 수행된 쓰기 동작을 중지되어 있는 액세스 동작으로 인식한다. 따라서, 제어 프로그램(100')은 유휴 시간 동안 버퍼(220)에 저장되어 있는 데이터를 데이터 저장 영역(210)에 복사한다. 즉, 제어 프로그램(100')은 제 2 액세스 동작(제 2 쓰기 동작)을 수행한다.
제어 프로그램(100')은 제 2 액세스 동작(제 2 쓰기 동작)의 중지점마다 제 2 액세스 동작(제 2 쓰기 동작)을 중지하고 새로운 액세스 요청의 수신 여부를 검출한다. 시간(t10)에 제 3 액세스 요청(Req3)이 전달된다. 예시적으로, 제 3 액세스 요청(Req3)은 읽기 요청이다. 제 3 액세스 요청(Req3)에 따른 제 3 액세스 동작(읽기 동작)에 할당된 시간(AT)은 시간(t12) 까지이다.
제어 프로그램(100')은 제 3 액세스 동작(읽기 동작)을 수행한다. 제 3 액세 스 동작(읽기 동작)이 시간(t11)에 완료되면, 제어 프로그램(100')은 제 3 액세스 동작(읽기 동작)이 완료되었음을 나타내는 응답 신호(Res3)를 호스트(Host)에 송신한다. 제 3 액세스 동작(읽기 동작)이 할당 시간(AT) 이내에 완료되었으므로, 제어 프로그램(100')은 유휴 시간을 갖는다. 더 상세하게는, 제어 프로그램(100')은 인트라-트랜잭션 슬랙 타임(ST1)을 갖는다. 따라서, 제어 프로그램(100')은 중지된 제 2 액세스 동작(제 2 쓰기 동작)을 재개한다. 그리고, 시간(t12)에서, 제 2 액세스 동작(제 2 쓰기 동작)이 완료된다.
상술한 바와 같이, 본 발명의 실시 예에 따른 제어 프로그램(100')은 제 1 액세스 동작(제 1 쓰기 동작)을 수행한다. 제 1 액세스 동작(제 1 쓰기 동작)에 할당된 시간이 경과하면, 제어 프로그램(100')은 제 1 액세스 동작(제 1 쓰기 동작)을 중지하고, 제 1 액세스 동작(제 1 쓰기 동작)이 완료되었음을 나타내는 응답 신호를 호스트(Host)에 송신한다. 중지된 제 1 액세스 동작(제 1 쓰기 동작)은 유휴 시간이 발생되면 수행된다.
제 1 액세스 동작(제 1 쓰기 동작)이 중지된 후에 제 2 액세스 동작(제 2 쓰기 동작 또는 읽기 동작)의 요청이 전달되면, 제어 프로그램(100')은 제 2 액세스 동작(제 2 쓰기 동작 또는 읽기 동작)을 수행한다. 제 2 액세스 동작(제 2 쓰기 동작 또는 읽기 동작)이 할당 시간 이전에 완료되면, 제어 프로그램(100')은 제 2 액세스 동작(제 2 쓰기 동작 또는 읽기 동작)에 할당된 시간이 경과될 때까지 제 1 액세스 동작(제 1 쓰기 동작)을 재개한다. 즉, 제어 프로그램(100')은 인트라-트랜잭션 스랙 타임(ST1) 동안 제 1 액세스 동작(제 1 쓰기 동작)을 재개한다.
제어 프로그램(100')은 제 1 액세스 동작(제 1 쓰기 동작)이 중지된 후에 제 2 액세스 동작(제 2 쓰기 동작 또는 읽기 동작)의 요청이 전달될 때까지 제 1 액세스 동작(제 1 쓰기 동작)을 재개한다. 즉, 제어 프로그램(100')은 인터-트랜잭션 슬랙 타임(ST2) 동안 제 1 액세스 동작(제 1 쓰기 동작)을 재개한다. 제 1 액세스 동작(제 1 쓰기 동작)이 중지되어 있는 동안 전달되는 제 2 액세스 동작이 제 2 쓰기 동작인 경우, 제 2 쓰기 동작은 데이터 저장 영역(210) 대신 버퍼(220)에 대해 수행된다. 제어 프로그램(100')은 유휴 시간 동안 버퍼(220)에 저장되어 있는 데이터를 데이터 저장 영역(210)에 복사한다.
도 11은 본 발명의 실시 예에 따른 제어 프로그램(100')이 실시간 응답을 수행하는 방법을 보여주는 순서도이다. 도 11을 참조하면, S3100 단계에서, 호스트(Host)로부터 제 1 액세스 요청이 수신된다. S3200 단계에서, 제어 프로그램(100')은 제 1 액세스 요청에 따른 제 1 액세스 동작을 수행한다.
S3300 단계에서, 제어 프로그램은 제 1 액세스 동작의 중지점을 수행한다. S3300 단계는 복수의 하위 단계들로 구성된다. S3320 단계에서, 제어 프로그램(100')은 제 1 액세스 동작이 완료되었는지 판별한다. 제 1 액세스 동작이 완료되지 않았으면, S3340 단계가 수행된다.
S3340 단계에서, 제어 프로그램(100')은 제 1 액세스 동작에 할당된 시간(AT)이 경과하였는지 판별한다. 제 1 액세스 동작에 할당된 시간(AT)이 경과하지 않았으면, S3200 단계에서 제 1 액세스 동작이 수행된다. 제 1 액세스 동작에 할당된 시간(AT)이 경과하였으면, S3360 단계가 수행된다.
S3360 단계에서, 제어 프로그램(100')은 새로운 액세스 요청이 수신되었는지 판별한다. 새로운 수신 요청이 수신되지 않았으면, 제어 프로그램(100')은 인터-트랜잭션 슬랙 타임(ST1)을 갖는다. 따라서, S3500 단계에서, 제어 프로그램(100')은 제 1 액세스 동작을 재개한다. 새로운 액세스 요청이 수신되었으면, S3380 단게에서, 제 1 액세스 동작이 중지된다. 그리고, S3400 단계에서 새로운 액세스 요청에 따른 액세스 동작이 수행된다.
새로운 액세스 동작은 읽기 또는 쓰기 동작일 것이다. 읽기 동작은 쓰기 동작보다 빠르게 수행된다. 따라서, 새로운 액세스 동작이 읽기 동작인 경우, 읽기 동작은 할당 시간 이전에 완료될 것이다. 즉, 제어 프로그램(100')은 인트라-트랜잭션 슬랙 타임을 가질 것이다.
새로운 액세스 동작이 쓰기 동작인 경우, 제 1 액세스 동작이 중지되어 있으므로 새로운 쓰기 동작은 버퍼(220)에 대해 수행된다. 버퍼(220)에 대한 쓰기 동작은 데이터 저장 영역(210)에 대한 쓰기 동작보다 빠르게 수행되므로, 버퍼(220)에 대한 쓰기 동작은 할당 시간 이전에 완료될 것이다. 즉, 제어 프로그램(100')은 인트라-트랜잭션 슬랙 타임(ST1)을 가질 것이다.
제어 프로그램(100')이 인트라-트랜잭션 슬랙 타임(ST1)을 가지므로, 제어 프로그램(100')은 중지된 제 1 액세스 동작을 재개할 것이다.
상술한 실시 예에서, 제어 프로그램(100')은 플래시 변환 계층(FTL, Flash Translation Layer)에 의해 구현될 수 있을 것이다.
상술한 실시 예에서, 플래시 메모리 장치(200)의 셀 어레이는 데이터 저장 영역(210) 및 버퍼(220)로 분할되는 것으로 설명되었다. 그러나, 본 발명의 실시 예에 따른 플래시 메모리 장치(200)는 별도의 버퍼를 구비할 수 있다.
상술한 실시 예에서, 플래시 메모리 장치를 포함하는 플래시 메모리 시스템의 예를 들어 본 발명의 기술적 사상이 설명되었다. 그러나, 본 발명의 기술적 사상은 플래시 메모리 시스템에 적용되는 것으로 한정되지 않는다. 예시적으로, 본 발명의 기술적 사상은 PRAM, RRAM, MRAM, FRAM, 그리고 EEPROM과 같은 불휘발성 메모리 시스템에 응용될 수 있다. 이 경우에, 제어 프로그램(100')은 각 불휘발성 메모리 장치의 컨트롤러에서 구동되는 펌웨어(Firmware) 형태로 제공될 것이다.
도 12는 도 2 및 4의 메모리 시스템을 포함하는 컴퓨팅 시스템의 실시 예를 보여주는 블록도이다. 도 12를 참조하면, 본 발명의 실시 예에 따른 컴퓨팅 시스템(300)은 중앙 처리 장치(310), 램(320, RAM, Random Access Memory), 사용자 인터페이스(330), 전원(340), 그리고 메모리 시스템(500)을 포함한다.
메모리 시스템(500)은 시스템 버스(360)를 통해, 중앙처리장치(310), 램(320), 사용자 인터페이스(330), 그리고 전원(340)에 전기적으로 연결된다. 사용자 인터페이스(330)를 통해 제공되거나, 중앙 처리 장치(310)에 의해서 처리된 데이터는 메모리 시스템(500)에 저장된다. 메모리 시스템(500)은 컨트롤러(100) 및 불휘발성 메모리 장치(200)를 포함한다.
메모리 시스템(10)이 반도체 디스크 장치(SSD)로 장착되는 경우, 컴퓨팅 시스템(300)의 부팅 속도가 획기적으로 빨라질 수 있다. 도면에 도시되지 않았지만, 본 발명에 따른 시스템은 응용 칩셋(Application Chipset), 카메라 이미지 프로세 서(Camera Image Processor) 등을 더 포함할 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 이해될 것이다.
본 발명의 실시 예에 따른 메모리 시스템(500)은 읽기 또는 쓰기 요청에 대해 실시간으로 응답한다. 본 발명의 실시 예에 따른 메모리 시스템(500)은 액세스 동작에 할당된 시간이 경과되었는지 체크하고, 할당된 시간이 경과되면 액세스 동작이 완료되었음을 나타내는 응답 신호를 호스트(Host)에 전송한다. 그리고, 메모리 시스템(500)은 액세스 동작을 중지한다. 중지된 액세스 동작은 유휴 시간이 발생되면 재개된다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 자명하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 일반적인 플래시 메모리 시스템이 동작하는 실시 예를 보여주는 순서도이다.
도 2는 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 메모리 시스템의 동작을 보여주는 순서도이다.
도 4는 도 2의 메모리 시스템의 제어 프로그램을 보여주는 블록도이다.
도 5는 본 발명의 실시 예에 따른 매핑 테이블들의 동작을 설명하기 위한 블록도이다.
도 6은 도 4의 제어 프로그램이 제공하는 멀티 쓰레드 기능의 실시 예를 보여주는 순서도이다.
도 7a 내지 7c는 도 4의 제어 프로그램이 상위 및 하위 쓰레드 동작의 지역 변수들을 저장하는 방법을 보여주는 다이어그램이다.
도 8은 제 1 타입 유휴 시간을 설명하기 위한 다이어그램이다.
도 9은 제 2 타입 유휴 시간을 설명하기 위한 다이어그램이다.
도 10는 도 4의 제어 프로그램이 호스트의 요청에 따라 동작하는 실시 예를 보여주는 다이어그램이다.
도 11은 본 발명의 실시 예에 따른 제어 프로그램이 실시간 응답을 수행하는 방법을 보여주는 순서도이다.
도 12는 도 2 및 4의 메모리 시스템을 포함하는 컴퓨팅 시스템의 실시 예를 보여주는 블록도이다.
Claims (23)
- 불휘발성 메모리 장치; 그리고상기 불휘발성 메모리 장치를 제어하기 위한 제어 프로그램을 구동하는 컨트롤러를 포함하고,상기 컨트롤러는 상기 불휘발성 메모리 장치에 대한 제 1 액세스 동작이 완료되기 전이라 하더라도, 상기 제 1 액세스 동작을 중지하고 상기 불휘발성 메모리 장치에 대한 제 2 액세스 동작을 수행하고,상기 제 1 액세스 동작이 완료되기 전에 상기 제 1 액세스 동작에 할당된 시간이 경과하면, 상기 컨트롤러는 상기 제 1 액세스 동작이 완료되었음을 나타내는 응답 신호를 출력하는 메모리 시스템.
- 삭제
- 제 1 항에 있어서,상기 제 1 액세스 동작을 중지하는 경우, 상기 컨트롤러는 상기 제 1 액세스 동작이 수행된 정도를 저장하는 메모리 시스템.
- 삭제
- 불휘발성 메모리 장치; 그리고상기 불휘발성 메모리 장치를 제어하기 위한 제어 프로그램을 구동하는 컨트롤러를 포함하고,상기 컨트롤러는 상기 불휘발성 메모리 장치에 대한 제 1 액세스 동작이 완료되기 전이라 하더라도, 상기 제 1 액세스 동작을 중지하고 상기 불휘발성 메모리 장치에 대한 제 2 액세스 동작을 수행하고,상기 컨트롤러는 유휴 시간이 발생하면 상기 중지된 제 1 액세스 동작을 재개하는 메모리 시스템.
- 삭제
- 불휘발성 메모리 장치; 그리고상기 불휘발성 메모리 장치를 제어하기 위한 제어 프로그램을 구동하는 컨트롤러를 포함하고,상기 컨트롤러는 상기 불휘발성 메모리 장치에 대한 제 1 액세스 동작이 완료되기 전이라 하더라도, 상기 제 1 액세스 동작을 중지하고 상기 불휘발성 메모리 장치에 대한 제 2 액세스 동작을 수행하고,상기 제 2 액세스 동작이 상기 제 2 액세스 동작에 할당된 시간 이전에 완료되면, 상기 컨트롤러는 상기 제 2 액세스 동작에 할당된 시간이 경과될 때까지 상기 제 1 액세스 동작을 재개하는 메모리 시스템.
- 삭제
- 불휘발성 메모리 장치; 그리고상기 불휘발성 메모리 장치를 제어하기 위한 제어 프로그램을 구동하는 컨트롤러를 포함하고,상기 컨트롤러는 상기 불휘발성 메모리 장치에 대한 제 1 액세스 동작이 완료되기 전이라 하더라도, 상기 제 1 액세스 동작을 중지하고 상기 불휘발성 메모리 장치에 대한 제 2 액세스 동작을 수행하고,상기 제 1 액세스 동작은 제 1 쓰기 동작이고, 상기 제 2 액세스 동작은 제 2 쓰기 동작 또는 읽기 동작인 메모리 시스템.
- 삭제
- 제 9 항에 있어서,상기 제 1 쓰기 동작이 중지된 후에 상기 제 2 쓰기 동작의 요청이 전달되면, 상기 컨트롤러는 쓰기 버퍼에 대해 상기 제 2 쓰기 동작을 수행하는 메모리 시스템.
- 제 11 항에 있어서,상기 컨트롤러는 유휴 시간이 발생되면 상기 쓰기 버퍼에 기입된 데이터를 상기 불휘발성 메모리 장치에 기입하는 메모리 시스템.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 제 1 액세스 요청에 따라 제 1 액세스 동작을 수행하는 단계;상기 제 1 액세스 동작이 완료되지 않았더라도, 상기 제 1 액세스 동작에 할당된 시간이 경과되면 성가 재1 액세스 동작을 중지하고 상기 제 1 액세스 동작이 완료되었음을 알리는 응답 신호를 출력하는 단계; 그리고유휴 시간에 상기 제 1 액세스 동작을 재개하는 단계를 포함하는 불휘발성 메모리 장치의 액세스 방법.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Priority Applications (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080055637A KR101521995B1 (ko) | 2008-06-13 | 2008-06-13 | 불휘발성 메모리 시스템 및 불휘발성 메모리 장치의 액세스방법 |
US12/457,485 US8027194B2 (en) | 1988-06-13 | 2009-06-12 | Memory system and method of accessing a semiconductor memory device |
CN200910205766.2A CN101673581B (zh) | 2008-06-13 | 2009-06-15 | 存取半导体存储设备的存储***和方法 |
US13/137,401 US8565021B2 (en) | 2008-06-13 | 2011-08-11 | Memory system and method of accessing a semiconductor memory device |
US13/137,409 US8638585B2 (en) | 2008-06-13 | 2011-08-12 | Memory system and method of accessing a semiconductor memory device |
US13/137,422 US8614919B2 (en) | 2008-06-13 | 2011-08-15 | Memory system and method of accessing a semiconductor memory device |
US13/137,423 US8760918B2 (en) | 2008-06-13 | 2011-08-15 | Memory system and method of accessing a semiconductor memory device |
US13/137,425 US8625344B2 (en) | 2008-06-13 | 2011-08-15 | Memory system and method of accessing a semiconductor memory device |
US13/137,424 US8705272B2 (en) | 2008-06-13 | 2011-08-15 | Memory system and method of accessing a semiconductor memory device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080055637A KR101521995B1 (ko) | 2008-06-13 | 2008-06-13 | 불휘발성 메모리 시스템 및 불휘발성 메모리 장치의 액세스방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090129620A KR20090129620A (ko) | 2009-12-17 |
KR101521995B1 true KR101521995B1 (ko) | 2015-05-22 |
Family
ID=41689528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020080055637A KR101521995B1 (ko) | 1988-06-13 | 2008-06-13 | 불휘발성 메모리 시스템 및 불휘발성 메모리 장치의 액세스방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101521995B1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102147628B1 (ko) * | 2013-01-21 | 2020-08-26 | 삼성전자 주식회사 | 메모리 시스템 |
KR20190102390A (ko) * | 2018-02-26 | 2019-09-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
CN113535089B (zh) * | 2020-05-22 | 2024-05-17 | 长江存储科技有限责任公司 | 用于ssd的映射表的刷新方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030067494A (ko) * | 2002-02-07 | 2003-08-14 | 가부시키가이샤 히타치세이사쿠쇼 | 메모리 시스템 |
KR20100093885A (ko) * | 2009-02-17 | 2010-08-26 | 삼성전자주식회사 | 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템 |
KR20100114970A (ko) * | 2009-04-17 | 2010-10-27 | 삼성전자주식회사 | 저장 장치의 액세스 방법 |
-
2008
- 2008-06-13 KR KR1020080055637A patent/KR101521995B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030067494A (ko) * | 2002-02-07 | 2003-08-14 | 가부시키가이샤 히타치세이사쿠쇼 | 메모리 시스템 |
KR20100093885A (ko) * | 2009-02-17 | 2010-08-26 | 삼성전자주식회사 | 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템 |
KR20100114970A (ko) * | 2009-04-17 | 2010-10-27 | 삼성전자주식회사 | 저장 장치의 액세스 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR20090129620A (ko) | 2009-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11487434B2 (en) | Data storage device and method for adaptive command completion posting | |
US10466903B2 (en) | System and method for dynamic and adaptive interrupt coalescing | |
US20150324119A1 (en) | Method and System for Improving Swap Performance | |
TWI735918B (zh) | 用來進行記憶裝置的存取管理之方法、記憶裝置及其控制器、主裝置以及電子裝置 | |
GB2507410A (en) | Storage class memory having low power, low latency, and high capacity | |
US11132143B2 (en) | Universal flash storage (UFS) device and computing device and computing device including storage UFS device for reporting buffer size based on reuse time after erase | |
US11741011B2 (en) | Memory card with volatile and non volatile memory space having multiple usage model configurations | |
US11392309B2 (en) | Memory system for performing migration operation and operating method thereof | |
KR102653373B1 (ko) | 컨트롤러 및 컨트롤러의 동작방법 | |
US20160283387A1 (en) | Dynamic caching method and system for data storage system | |
KR20200076431A (ko) | 메모리 컨트롤러 및 메모리 시스템의 동작 방법, 및 메모리 시스템 | |
CN108139983B (zh) | 用于在多级***存储器中固定存储器页面的方法和设备 | |
KR101521995B1 (ko) | 불휘발성 메모리 시스템 및 불휘발성 메모리 장치의 액세스방법 | |
KR102596964B1 (ko) | 맵 캐시 버퍼 크기를 가변시킬 수 있는 데이터 저장 장치 | |
US11573732B2 (en) | Storage device, memory system comprising the same, and operation method thereof | |
US11520519B2 (en) | Storage device and method of operating the same | |
KR20200110863A (ko) | 메모리 시스템, 컴퓨팅 장치 및 동작 방법 | |
US20170153994A1 (en) | Mass storage region with ram-disk access and dma access | |
US10923178B1 (en) | Data storage with improved write performance for preferred user data | |
US11922036B2 (en) | Host data stream assignment with space-leveling across storage block containers | |
KR20190066918A (ko) | 반도체 장치 | |
WO2024088150A1 (zh) | 基于开放通道固态盘的数据存储方法、装置、设备、介质及产品 | |
KR20240019429A (ko) | 스토리지 장치 및 이를 포함하는 전자 장치와 그 동작 방법 | |
Park et al. | Wear-leveling scheduler for phase-change RAM main memory for mobile consumer electronics | |
KR20200109973A (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 | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20180430 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20190429 Year of fee payment: 5 |