KR20140026933A - 플래시 메모리를 기반으로 하는 저장 장치 및 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법 - Google Patents

플래시 메모리를 기반으로 하는 저장 장치 및 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법 Download PDF

Info

Publication number
KR20140026933A
KR20140026933A KR1020120092912A KR20120092912A KR20140026933A KR 20140026933 A KR20140026933 A KR 20140026933A KR 1020120092912 A KR1020120092912 A KR 1020120092912A KR 20120092912 A KR20120092912 A KR 20120092912A KR 20140026933 A KR20140026933 A KR 20140026933A
Authority
KR
South Korea
Prior art keywords
write
memory
memory block
allocation
memory controller
Prior art date
Application number
KR1020120092912A
Other languages
English (en)
Other versions
KR101993704B1 (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 KR1020120092912A priority Critical patent/KR101993704B1/ko
Priority to US13/974,627 priority patent/US9645918B2/en
Publication of KR20140026933A publication Critical patent/KR20140026933A/ko
Application granted granted Critical
Publication of KR101993704B1 publication Critical patent/KR101993704B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication

Abstract

본 발명의 실시 예에 따른 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법은 플래시 메모리의 복수의 자유 메모리 블록들을 기반으로 메인 선-할당 테이블을 생성하여 상기 플래시 메모리의 메타 영역에 저장하는 단계; 메인 선-할당 테이블을 기반으로 메모리 컨트롤러의 램에 선-할당 테이블을 저장하는 단계; 및 호스트로부터 수신된 쓰기 요청에 응답하여, 선-할당 테이블을 기반으로 상기 쓰기 메모리 블록의 할당이 가능한지 판별하는 단계를 포함하고, 선-할당 테이블을 기반으로 상기 쓰기 메모리 블록의 할당이 가능할 경우, 상기 선-할당 테이블을 기반으로 복수의 자유 메모리 블록들 중 쓰기 메모리 블록을 할당하고, 메인 선-할당 테이블은 상기 복수의 자유 메모리 블록들 중 하나 또는 그 이상의 자유 메모리 블록들의 할당 순서 정보를 포함한다.

Description

플래시 메모리를 기반으로 하는 저장 장치 및 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법{STORAGE DEVICE BASED ON A FLASH MEMORY AND METHOD FOR ALLOCATTING WRITE MEMORY BLOCK OF MEMORY CONTROLLER CONTROLLING A FLASH MEMORY}
본 발명은 반도체 메모리 장치에 관한 것으로 더욱 상세하게는 플래시 메모리를 기반으로 하는 저장 장치 및 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법에 관한 것이다.
플래시 메모리 장치는 불 휘발성 메모리의 한 종류이다. 플래시 메모리 장치는 기존 하드디스크에 비해 빠른 데이터 접근 성능을 보장하며, 부피와 전력 소모가 매우 작다. 또한 플래시 메모리 장치는 외부 충격에 강해 휴대용 기기의 저장 장치로 많이 사용되고 있다.
일정 수준의 수명을 갖는 플래시 메모리의 수명은 쓰기/소거 횟수를 기반으로 결정될 수 있다. 또한, 플래시 메모리는 물리적 특성으로 인하여 덮어쓰기(overwrite) 동작을 수행할 수 없다. 즉, 플래시 메모리는 데이터가 기입된 메모리 블록에 쓰기 동작을 수행할 경우, 메모리 블록의 쓰기 동작 전에 소거 동작을 수행하게 된다.
플래시 변환 계층(Flash Translation Layer; FTL)은 플래시 메모리를 효율적으로 관리하기 위한 소프트웨어이다. 플래시 변환 계층은 메모리 컨트롤러에 포함된다. 플래시 변환 계층은 파일 시스템으로부터 논리적 어드레스(Logical Address)를 입력 받고, 이를 플래시 메모리 장치의 물리적 어드레스(Physical Address)로 변환한다.
플래시 변환 계층(FTL)은 상술된 바와 같은 변환을 위해 매핑 테이블(Mapping Table)을 갖는다. 매핑 테이블은 휘발성 메모리 장치에 저장될 수 있다. 매핑 테이블은 논리 어드레스 및 물리 어드레스의 매핑 관계에 대한 정보를 포함한다. 그러나, 매핑 테이블은 메모리 컨트롤러의 휘발성 메모리에 저장되기 때문에, 휘발성 메모리 장치에 전원이 차단될 경우, 매핑 테이블이 소실될 수 있다. 메모리 시스템의 쓰기 동작 중 전원이 갑자기 차단되어, 메모리 컨트롤러가 초기화될 경우, 플래시 변환 계층은 매핑 테이블 정보를 복원해야 한다. 따라서, 메모리 컨트롤러는 논리 어드레스에 대응되는 쓰기 메모리 블록이 할당될 때마다, 램에 저장된 매핑 테이블을 플래시 메모리에 저장하는 동작을 수행하게 된다.
본 발명의 목적은 매핑 테이블의 플러시 횟수를 감소시키는 플래시 메모리를 기반으로 하는 저장 장치 및 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법은 상기 플래시 메모리의 복수의 자유 메모리 블록들을 기반으로 메인 선-할당 테이블을 생성하여 상기 플래시 메모리의 메타 영역에 저장하는 단계; 상기 메인 선-할당 테이블을 기반으로 상기 메모리 컨트롤러의 램에 선-할당 테이블을 저장하는 단계; 및 호스트로부터 수신된 쓰기 요청에 응답하여, 상기 선-할당 테이블을 기반으로 상기 쓰기 메모리 블록의 할당이 가능한지 판별하는 단계를 포함하고, 상기 선-할당 테이블을 기반으로 상기 쓰기 메모리 블록의 할당이 가능할 경우, 상기 선-할당 테이블을 기반으로 복수의 자유 메모리 블록들 중 쓰기 메모리 블록을 할당하고, 상기 메인 선-할당 테이블은 상기 복수의 자유 메모리 블록들 중 하나 또는 그 이상의 자유 메모리 블록들의 할당 순서 정보를 포함한다.
실시 예로서, 상기 선-할당 테이블을 기반으로 상기 쓰기 메모리 블록을 할당하지 못할 경우, 상기 선-할당 테이블에 할당 순서 정보가 포함되지 않은 자유 메모리 블록들 중 하나를 상기 쓰기 메모리 블록으로서 할당한다.
실시 예로서, 상기 메타 영역에는 메인 매핑 테이블이 저장되고, 상기 선-할당 테이블을 기반으로 상기 쓰기 메모리 블록을 할당하지 못할 경우, 상기 선-할당 테이블을 기반으로 이전에 할당된 쓰기 메모리 블록의 물리적 어드레스 및 상기 이전에 할당된 쓰기 메모리 블록과 대응되는 논리적 어드레스를 상기 메인 매핑 테이블로 플러시한다.
실시 예로서, 상기 플러시된 물리적 어드레스에 대응되는 할당 순서 정보를 상기 선-할당 테이블에서 삭제한다.
실시 예로서, 상기 복수의 자유 메모리 블록들 중 상기 선-할당 테이블에 할당 순서 정보가 포함되지 않은 자유 메모리 블록들을 기반으로, 상기 할당 순서 정보가 삭제된 선-할당 테이블을 갱신한다.
실시 예로서, 상기 갱신된 선-할당 테이블을 상기 메인 선-할당 테이블로 플러시하는 단계를 더 포함한다.
실시 예로서, 상기 선-할당 테이블을 기반으로 상기 쓰기 메모리 블록을 할당하지 못할 경우, 상기 수신된 쓰기 요청이 새로운 논리적 유닛에 대한 쓰기 요청인지 판별하고, 상기 쓰기 요청이 새로운 논리적 유닛에 대한 쓰기 요청이 아닌 경우, 테일-트레일 테이블을 기반으로 쓰기 메모리 블록을 할당하되, 상기 테일-트레일 테이블은 다음 할당될 쓰기 메모리 블록의 물리적 어드레스 및 상기 다음 할당될 쓰기 메모리 블록에 대응되는 논리적 유닛의 정보를 포함한다.
실시 예로서, 상기 테일-트레일 테이블은 상기 메모리 컨트롤러의 램에 저장된다.
실시 예로서, 상기 수신된 쓰기 요청이 새로운 논리적 유닛에 대한 쓰기 요청인지 판별하는 단계를 더 포함하고, 상기 수신된 쓰기 요청이 새로운 논리적 유닛에 대한 쓰기 요청일 경우, 상기 복수의 자유 메모리 블록들을 기반으로 상기 쓰기 메모리 블록을 할당하고, 상기 수신된 쓰기 요청이 새로운 논리적 유닛에 대한 쓰기 요청이 아닌 경우, 테일-트레일 테이블 및 상기 선-할당 테이블을 기반으로 상기 쓰기 메모리 블록을 할당하고, 상기 테일-트레일 테이블은 다음 할당될 쓰기 메모리 블록의 물리적 어드레스와 상기 다음 할당될 쓰기 메모리 블록에 대응되는 논리적 유닛의 정보를 포함한다.
실시 예로서, 상기 수신된 쓰기 요청이 새로운 논리적 유닛에 대한 쓰기 요청이 아닌 경우, 상기 테일-트레일 테이블을 기반으로 상기 쓰기 메모리 블록을 할당하고, 상기 테일-트레일 테이블을 기반으로 상기 쓰기 메모리 블록을 할당하지 못할 경우, 상기 선-할당 테이블을 기반으로 상기 쓰기 메모리 블록을 할당한다.
실시 예로서, 상기 메모리 컨트롤러가 초기화될 경우, 상기 메모리 컨트롤러가 상기 선-할당 테이블 및 상기 메인 매핑 테이블을 기반으로 상기 메모리 컨트롤러에서 구동되는 매핑 테이블을 복원하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 플래시 메모리를 기반으로 하는 저장 장치는 사용자 영역 및 메타 영역을 포함하는 플래시 메모리; 그리고 상기 플래시 메모리를 제어하도록 구성된 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는 선-할당 테이블을 포함하는 램을 포함하고, 호스트로부터 수신된 쓰기 요청에 응답하여 상기 선-할당 테이블을 기반으로 상기 사용자 영역의 복수의 메모리 블록들 중 쓰기 메모리 블록을 할당하고, 상기 선-할당 테이블은 상기 사용자 영역의 복수의 메모리 블록들 중 하나 또는 그 이상의 할당 순서 정보를 포함한다.
실시 예로서, 상기 메타 영역에는 메인 선-할당 테이블이 저장된다.
실시 예로서, 상기 메모리 컨트롤러는 테일-트레일 테이블을 더 포함하고, 상기 수신된 쓰기 요청이 새로운 논리적 유닛에 대한 쓰기 요청이 아닌 경우, 상기 메모리 컨트롤러는 상기 테일-트레일 테이블을 기반으로 상기 쓰기 메모리 블록을 할당하되, 상기 테일-트레일 테이블은 다음 할당될 쓰기 메모리 블록의 물리적 어드레스 및 상기 다음 할당될 쓰기 메모리 블록과 대응되는 논리적 유닛의 관계를 포함한다.
본 발명의 실시 예에 따르면, 플래시 메모리 장치의 매핑 테이블의 플러시 횟수가 감소된다. 따라서, 플래시 메모리 장치의 속도 및 신뢰성이 향상된다.
도 1은 본 발명의 제 1 실시 예에 따른 플래시 메모리를 기반으로 하는 컴퓨팅 시스템을 보여주는 블록도이다.
도 2는 도 1의 컴퓨팅 시스템의 소프트웨어 계층을 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 쓰기 요청들 및 논리적 유닛들을 보여주는 도면이다.
도 4는 본 발명의 제 1 실시 예에 따른 메모리 컨트롤러의 쓰기 메모리 할당 방법을 보여주는 순서도이다.
도 5a 내지 도 5d는 본 발명의 제 1 실시 예에 따른 메모리 컨트롤러의 쓰기 메모리 할당 방법을 더욱 상세하게 설명하기 위한 도면들이다.
도 6a 내지 도 6c는 본 발명의 제 2 실시 예에 따른 메모리 컨트롤러의 쓰기 메모리 할당 방법을 설명하기 위한 도면들이다.
도 7은 본 발명의 제 3 실시 예에 따른 플래시 메모리를 기반으로 하는 컴퓨팅 시스템을 보여주는 블록도이다.
도 8은 본 발명의 제 3 실시 예에 따른 메모리 컨트롤러의 쓰기 메모리 할당 방법을 보여주는 순서도이다.
도 9a 내지 도 9c는 본 발명의 제 3 실시 예에 따른 메모리 컨트롤러의 쓰기 메모리 할당 방법을 더욱 상세하게 설명하기 위한 도면들이다.
도 10은 본 발명의 제 4 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 11은 본 발명의 제 4 실시 예에 따른 메모리 컨트롤러의 쓰기 메모리 할당 방법을 보여주는 순서도이다.
도 12a 내지 도 12d는 본 발명의 제 4 실시 예에 따른 메모리 컨트롤러의 쓰기 메모리 할당 방법을 더욱 상세하게 설명하기 위한 도면들이다.
도 13a 내지 도 13d는 본 발명의 제 5 실시 예에 따른 메모리 컨트롤러의 쓰기 메모리 할당 방법을 설명하기 위한 도면들이다.
도 14는 본 발명의 실시 예에 따른 메모리 컨트롤러의 매핑 테이블 복원을 설명하기 위한 도면이다.
도 15는 본 발명의 실시 예에 따른 컴퓨팅 시스템을 메모리 카드에 적용한 예를 보여주는 블록도이다.
도 16는 본 발명의 실시 예에 따른 컴퓨팅 시스템을 솔리드 스테이트 드라이브에 적용한 예를 보여주는 블록도이다.
이하에서, 본 발명의 기술이 속하는 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로, 상세하게 설명하기 위하여 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 제 1 실시 예에 따른 플래시 메모리를 기반으로 하는 컴퓨팅 시스템(1000)을 보여주는 블록도이다. 도 1을 참조하면, 컴퓨팅 시스템(1000)은 호스트(1100), 메모리 컨트롤러(1200), 및 플래시 메모리(1300)를 포함한다. 도 1에 도시된 컴퓨팅 시스템(1000)의 호스트(1100), 메모리 컨트롤러(1200), 및 플래시 메모리(1300) 각각은 별개의 칩, 모듈, 또는 장치로 구성될 수 있고, 또는 하나의 장치 내에 포함될 수 있다. 또한, 메모리 컨트롤러(1200)와 플래시 메모리(1300)가 하나의 장치로 구현되고, 호스트(1100)에 연결되어 사용될 수 있다.
호스트(1100)는 애플리케이션(도 2에 도시)이나 파일 시스템(도 2에 도시)을 이용하여 메모리 컨트롤러(1200)로 읽기 또는 쓰기 요청을 전송할 수 있다. 메모리 컨트롤러(1200)는 호스트(1100)로부터의 읽기 또는 쓰기 요청에 응답하여, 플래시 메모리(1300)의 동작을 제어할 수 있다. 예를 들어, 호스트(1100)로부터의 읽기 또는 쓰기 요청에 응답하여, 메모리 컨트롤러(1200)는 플래시 메모리(1300)의 쓰기, 읽기, 및 소거 동작을 제어할 수 있다.
예시적으로, 호스트(1100)와 메모리 컨트롤러(1200)는 미리 설정된 프로토콜(Protocol)을 기반으로 데이터를 교환할 수 있다. 예를 들어, 호스트(1100)와 메모리 컨트롤러(1200)는 USB(Universal Serial Bus) 프로토콜, MMC(multimedia card) 프로토콜, PCI(peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA(Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI(small computer small interface) 프로토콜, ESDI(enhanced small disk interface) 프로토콜, 그리고 IDE(Integrated Drive Electronics) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나에 기반하여 데이터를 교환할 수 있다.
메모리 컨트롤러(1200)는 프로세서(1210) 및 램(1220)을 포함한다. 프로세서(1210)는 메모리 컨트롤러(1200)의 제반 동작을 제어할 수 있다. 예를 들어, 프로세서(1210)는 플래시 변환 계층(Flash Translation Layer; FTL, 도 2에 도시)을 구동할 수 있다.
램(1220)은 메모리 컨트롤러(1200)의 동작 메모리일 수 있다. 램(1220)은 호스트(1100) 및 플래시 메모리(1300) 사이의 버퍼 메모리일 수 있다. 램(1220)은 매핑 테이블(1221, Mapping Table)을 포함할 수 있다. 매핑 테이블(1221)은 플래시 변환 계층(FTL)의 변환 동작을 위한 정보이다. 매핑 테이블(1221)은 파일 시스템(도 2에 도시)에 의해 조직화된 파일의 논리적 어드레스(Logical Address) 및 이에 대응되는 플래시 메모리(1300)의 물리적 어드레스(Physical Address)의 매핑 관계에 대한 정보를 포함한다. 예시적으로, 자유 메모리 블록이 쓰기 메모리 블록으로 할당될 경우, 메모리 컨트롤러(1200)는 매핑 테이블(1221)을 갱신할 수 있다.
플래시 메모리(1300)는 메모리 컨트롤러(1200)의 제어에 따라 메모리 블록들의 쓰기, 읽기 또는 소거 동작을 수행할 수 있다. 플래시 메모리(1300)는 복수의 페이지들을 포함하는 복수의 메모리 블록들로 구성될 수 있다. 플래시 메모리(1300)는 사용자 영역(1310) 및 메타 영역(1320)을 포함할 수 있다. 사용자 영역(1310)은 사용자 데이터를 저장하는 영역이다. 사용자 영역(1310)은 플래시 메모리(1300)에 포함된 복수의 메모리 블록들로 구성될 수 있다. 복수의 메모리 블록들 각각은 복수의 페이지들로 구성될 수 있다. 복수의 페이지들 각각은 사용자 데이터를 저장하는 데이터 영역(Data Area)과 부가 정보를 저장하는 스페어 영역(Spare Area)을 포함한다. 부가 정보는 에러 정정 코드(ECC, Error Correcting Code), 데이터 영역에 저장된 데이터의 논리적 어드레스, 배드 블록 정보 등을 포함할 수 있다. 예시적으로, 스페어 영역들 중 일부는 다음 할당될 쓰기 메모리 블록의 물리적 어드레스를 포함할 수 있다.
메타 영역(1320)은 메인 매핑 테이블(1321)을 포함한다. 메인 매핑 테이블(1321)은 호스트(1100)로부터 수신된 논리적 어드레스(Logical Address) 및 이와 대응되는 플래시 메모리(1300)의 물리적 어드레스(Physical Address)의 매핑 관계에 대한 정보를 포함한다.
메모리 컨트롤러(1200)의 초기화 시, 메모리 컨트롤러(1200)는 메인 매핑 테이블(1321)을 읽고, 읽은 메인 매핑 테이블(1321)을 램(1220)의 매핑 테이블(1221)에 저장할 수 있다. 예시적으로, 메모리 컨트롤러(1200)는 호스트(1100)로부터 수신된 쓰기 요청에 응답하여, 새로운 쓰기 메모리 블록을 할당할 수 있다. 새로운 쓰기 메모리 블록으로서 할당된 메모리 블록의 물리적 어드레스 및 이에 대응되는 논리적 어드레스의 매핑 관계를 기반으로, 메모리 컨트롤러(1200)는 매핑 테이블(1221)을 갱신할 수 있다.
예시적으로, 메타 영역(1320)은 플래시 메모리에 포함된 복수의 메모리 블록들 중 하나 또는 그 이상의 메모리 블록들로 구성될 수 있다.
도 2는 도 1의 컴퓨팅 시스템(1000)의 소프트웨어 계층을 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 컴퓨팅 시스템(1000)의 소프트웨어 계층은 애플리케이션(1110), 파일 시스템(1120), 플래시 변환 계층(1230), 및 플래시 메모리(1300)를 포함한다.
애플리케이션(1110)은 컴퓨팅 시스템(1000)에서 구동되는 다양한 응용 프로그램들을 가리킨다. 예를 들어, 응용 프로그램들(1120)은 문서 편집기, 웹 브라우저, 영상 재생기, 게임 프로그램 등을 포함한다.
파일 시스템(1120)은 파일 또는 데이터를 플래시 메모리(1300)에 저장할 경우, 이를 조직화하는 역할을 수행한다. 예를 들어, 파일 시스템(1120)은 쓰기 요청에 따른 논리적 어드레스를 메모리 컨트롤러(1200)로 제공할 수 있다. 파일 시스템(1120)은 호스트(1100)의 운영체제(OS, Operating System)에 따라 다른 형태를 가질 수 있다. 예시적으로 파일 시스템(420)은 FAT(File Allocation Table), FAT32, NTFS(NT File System), HFS(Hierarchical File System), JSF2(Journaled File System2), XFS, ODS-5(On-Disk Structure-5), UDF, ZFS, UFS(Unix File System), ext2, ext3, ext4, ReiserFS, Reiser4, ISO 9660, Gnome VFS, BFS, 또는 WinFS 등을 포함할 수 있다. 예시적으로, 파일 시스템(1120)은 호스트(1100)에 의해 구동될 수 있다.
플래시 변환 계층(1230)은 플래시 메모리(1300)가 효율적으로 사용되도록 호스트(1100) 및 플래시 메모리(1300) 간 인터페이스를 제공할 수 있다. 플래시 변환 계층(1230)은 파일 시스템(1120)에 의해 생성된 논리적 어드레스(Logical Address)를 수신하여, 플래시 메모리(1300)에서 사용 가능한 물리적 어드레스(Physical Address)로 변환하는 역할을 수행한다. 플래시 변환 계층(1230)은 이와 같은 어드레스 변환을 매핑 테이블(1221, mapping table)을 통해 관리한다. 예시적으로, 플래시 변환 계층(1230)은 메모리 컨트롤러(1200)에 의해 구동될 수 있다.
도 3은 호스트(1100)에 의해 생성되는 쓰기 요청들을 설명하기 위한 도면이다. 도 1 및 도 3을 참조하면, 호스트(1100)는 쓰기 요청들(WRa1, WRa2, WRa3, WRa4, WRb1, WRb2, WRb3, WRb4)을 생성할 수 있다. 호스트(1100)는 생성된 쓰기 요청들(WRa1, WRa2, WRa3, WRa4, WRb1, WRb2, WRb3, WRb4)을 메모리 컨트롤러(1200)로 전송할 수 있다.
쓰기 요청들(WRa1, WRa2, WRa3, WRa4, WRb1, WRb2, WRb3, WRb4) 각각은 논리적 유닛들(LUa, LUb)의 데이터(LUa1, LUa2, LUa3, LUa4, LUb1, LUb2, LUb3, LUb4)와 각각 대응되는 쓰기 요청들이다. 예를 들어, 쓰기 요청들(WRa1, WRa2, WRa3, WRa4)은 파일 시스템(1120)에 의해서 조직화된 제 1 파일의 쓰기 요청들일 수 있다. 쓰기 요청들(WRb1, WRb2, WRb3, WRb4)은 파일 시스템(1120)에 의해서 조직화된 제 2 파일의 쓰기 요청들일 수 있다. 그러므로, 쓰기 요청들(WRa1, WRa2, WRa3, WRa4)에 대응되는 논리적 유닛(LUa)의 데이터(LUa1, LUa2, LUa3, LUa4) 및 쓰기 요청들(WRb1, WRb2, WRb3, WRb4)에 대응되는 논리적 유닛(LUb)의 데이터(LUb1, LUb2, LUb3, LUb4)는 각각 서로 다른 물리적 유닛들(Physical Units)에 저장될 것이다. 물리적 유닛(Physical Unit)은 플래시 메모리(1300)의 메모리 블록들 중 하나 또는 그 이상의 집합을 가리킨다.
간결한 설명을 위하여, 도 3에 도시된 쓰기 요청들(WRa1, WRa2, WRa3, WRa4, WRb1, WRb2, WRb3, WRb4), 논리적 유닛들(LUa, LUb) 및 데이터(LUa1, LUa2, LUa3, LUa4, LUb1, LUb2, LUb3, LUb4)를 참조하여, 이하에서 설명되는 제 1 내지 제 5 실시 예들이 설명된다. 또한, 이하에서 설명되는 제 1 내지 제 5 실시 예들의 플래시 메모리는 자유 메모리 블록들로서 제 1 내지 제 4 메모리 블록들을 포함하고, 제 1 내지 제 4 메모리 블록들 각각은 3개의 페이지들로 구성된 것으로 가정하여 설명된다. 또한, 제 1 내지 제 4 메모리 블록들 중 쓰기 메모리 블록으로서 할당되거나, 선-할당 테이블(도 7에 도시)에 할당 순서 정보가 포함되는 메모리 블록들은 자유 메모리 블록에서 제외될 것이다.
도 4는 본 발명의 제 1 실시 예에 따른 메모리 컨트롤러(1200)의 쓰기 메모리 블록 할당 방법을 보여주는 순서도이다. 도 1 내지 도 4를 참조하면, S110 단계에서, 메모리 컨트롤러(1200)는 쓰기 요청을 수신할 수 있다. 예를 들어, 호스트(1100)는 파일 시스템(1120)을 기반으로 플래시 메모리(1300)에 저장될 파일 또는 데이터의 쓰기 요청(Write Request)을 생성할 수 있다. 메모리 컨트롤러(1200)는 생성된 쓰기 요청을 호스트(1100)로부터 수신할 수 있다.
S120 단계에서, 메모리 컨트롤러(1200)는 수신된 쓰기 요청이 새로운 논리적 유닛(New Logical Unit)에 대한 쓰기 요청인지 판별할 수 있다. 예를 들어, 논리적 유닛(LUa)에 대한 쓰기 요청에 응답하여, 메모리 컨트롤러(1200)가 쓰기 메모리 블록을 할당하였다면, 이 후의 논리적 유닛(LUa)에 대한 쓰기 요청은 새로운 논리적 유닛에 대한 쓰기 요청이 아닐 수 있다.
판별 결과에 따라, 새로운 논리적 유닛에 대한 쓰기 요청일 경우, S130 단계에서, 메모리 컨트롤러(1200)는 플래시 메모리(1300)에 포함된 자유 메모리 블록들(Free Memory Blocks)로부터 쓰기 메모리 블록을 할당한다. 자유 메모리 블록은 메모리 블록의 데이터 영역의 데이터가 소거 상태인 메모리 블록을 가리킨다. 예시적으로, 자유 메모리 블록들로부터 쓰기 메모리 블록이 할당될 경우, 수신된 쓰기 요청에 대응되는 논리적 어드레스 및 이와 대응되는 쓰기 메모리 블록의 물리적 어드레스는 메모리 컨트롤러(1200)의 매핑 테이블(1221)에 저장된다. 램(1220)에 저장된 매핑 테이블(1221)은 메타 영역(1320)의 메인 매핑 테이블(1321)로 플러시(flush)될 수 있다.
판별 결과에 따라, 새로운 논리적 유닛에 대한 쓰기 요청이 아닌 경우, S140 단계에서, 메모리 컨트롤러(1200)는 수신된 쓰기 요청이 할당된 쓰기 메모리 블록의 마지막 페이지에 대한 쓰기 요청인지 판별할 수 있다.
S140 단계의 판별 결과에 따라, 마지막 페이지에 대한 쓰기 요청일 경우, S150 단계에서, 메모리 컨트롤러(1200)는 자유 메모리 블록들을 기반으로 다음 할당될 쓰기 메모리 블록을 결정할 수 있다.
S160 단계에서, 메모리 컨트롤러(1200)는 결정된 다음 할당될 쓰기 메모리 블록의 물리적 어드레스를 쓰기 동작이 수행되는 마지막 페이지의 스페어 영역에 기입되도록 플래시 메모리(1300)를 제어할 수 있다.
S140 단계의 판별 결과에 따라, 마지막 페이지에 대한 쓰기 요청이 아닌 경우, 메모리 컨트롤러(1200)는 수신된 쓰기 요청에 응답하여, 할당된 쓰기 메모리 블록에 데이터가 기입되도록 플래시 메모리(1300)를 제어할 수 있다.
도 5a 내지 도 5d는 본 발명의 제 1 실시 예에 따른 메모리 컨트롤러의 쓰기 메모리 할당 방법을 더욱 상세하게 설명하기 위한 도면들이다. 예시적으로, 메모리 컨트롤러(1200)는 쓰기 요청들(WRa1, WRa2, WRa3, WRa4, WRb1, WRb2, WRb3, WRb4)을 수신할 수 있다. 쓰기 요청들(WRa1, WRa2, WRa3, WRa4, WRb1, WRb2, WRb3, WRb4), 논리적 유닛들(LUa, LUb), 및 데이터(LUa1, LUa2, LUa3, LUa4, LUb1, LUb2, LUb3, LUb4)는 도 3을 참조하여 설명되었으므로, 이에 대한 설명은 생략된다. 예시적으로, 플래시 메모리(1300)는 제 1 내지 제 4 메모리 블록들(BLK1~BLK4)을 포함할 수 있다. 제 1 내지 제 4 메모리 블록들(BLK1~BLK4)은 자유 메모리 블록들이다. 제 1 내지 제 4 메모리 블록들(BLK1~BLK4) 각각은 3개의 페이지들로 구성될 수 있다. 메모리 컨트롤러(1200)에 의해 쓰기 메모리 블록으로서 할당된 메모리 블록은 자유 메모리 블록에서 제외될 것이다.
먼저, 도 5a를 참조하면, 메모리 컨트롤러(1200)는 쓰기 요청들(WRa1, WRb1)을 수신할 수 있다. 쓰기 요청(WRa1)은 새로운 논리적 유닛(LUa)에 대한 쓰기 요청이다. 따라서, 메모리 컨트롤러(1200)는 자유 메모리 블록들(Free Memory Blocks)로부터 제 1 쓰기 메모리 블록(BLK1)을 할당(?)할 수 있다. 마찬가지로, 쓰기 요청(WRb1)은 새로운 논리적 유닛(LUb)에 대한 쓰기 요청이므로, 메모리 컨트롤러(1200)는 제 2 쓰기 메모리 블록(BLK2)을 할당(?)할 수 있다. 메모리 컨트롤러(1200)는 데이터(LUa1, LUb1)를 각각 제 1 및 제 2 메모리 블록(BLK1, BLK2)에 저장되도록 플래시 메모리(1300)를 제어할 수 있다. 메모리 컨트롤러(1200)는 데이터(LUa1, LUb1)에 대응되는 논리적 어드레스들(LBN)이 제 1 및 제 2 메모리 블록들(BLK1, BLK2)의 스페어 영역(Spare Area)에 저장되도록 플래시 메모리(1300)를 제어할 수 있다.
예시적으로, 메모리 컨트롤러(1200)는 데이터(LUa1, LUb1)에 대한 논리적 어드레스들 및 이와 대응되는 제 1 및 제 2 쓰기 메모리 블록들(BLK1, BLK2)의 물리적 어드레스들의 매핑 관계 정보를 기반으로 램(1220)의 매핑 테이블(1221)을 갱신할 수 있다. 메모리 컨트롤러(1200)는 갱신된 매핑 테이블(1221)을 메인 매핑 테이블(1321)로 플러시(flush)할 수 있다.
다음으로, 도 5b를 참조하면, 메모리 컨트롤러(1200)는 쓰기 요청들(WRa2, WRb2)을 수신할 수 있다. 논리적 유닛들(LUa, LUb)에 대하여 제 1 및 제 2 메모리 블록들(BLK1, BLK2)이 쓰기 메모리 블록들로서 할당되었으므로, 쓰기 요청들(WRa2, WRb2)은 새로운 논리적 유닛에 대한 쓰기 요청들이 아니다. 쓰기 요청들(WRa2, WRb2)은 제 1 및 제 2 메모리 블록들(BLK1, BLK2)의 마지막 페이지에 대한 쓰기 요청들이 아니다. 따라서, 메모리 컨트롤러(1200)는 쓰기 요청들(WRa2, WRb2)에 응답하여, 제 1 및 제 2 쓰기 메모리 블록들(BLK1, BLK2)에 데이터(LUa2, LUb2)가 기입되도록 플래시 메모리(1300)를 제어할 수 있다. 메모리 컨트롤러(1200)는 데이터(LUa2, LUb2)에 대응되는 논리적 어드레스들(LBN)이 제 1 및 제 2 메모리 블록들(BLK1, BLK2)의 스페어 영역에 저장되도록 플래시 메모리(1300)를 제어할 수 있다.
다음으로, 도 5c를 참조하면, 메모리 컨트롤러(1200)는 쓰기 요청들(WRa3, WRb3)을 수신할 수 있다. 쓰기 요청들(WRa3, WRb3)은 새로운 유닛에 대한 쓰기 요청들이 아니다. 쓰기 요청들(WRa3, WRb3) 각각은 제 1 및 제 2 쓰기 메모리 블록들(BLK1, BLK2)의 마지막 페이지에 대한 쓰기 요청들이다. 따라서, 메모리 컨트롤러(1200)는 쓰기 요청들(WRa3, WRb3)에 응답하여, 다음 할당될 쓰기 메모리 블록으로서 제 3 및 제 4 메모리 블록들(BLK3, BLK4)을 결정할 수 있다. 메모리 컨트롤러(1200)는 데이터(LUa3, LUb3)가 제 1 및 제 2 메모리 블록들(BLK1, BLK2)에 저장되도록 플래시 메모리(1300)를 제어할 수 있다. 쓰기 요청(WRa3)에 응답하여, 메모리 컨트롤러(1200)는 결정된 다음 할당될 쓰기 메모리 블록(BLK3)의 물리적 어드레스가 제 1 메모리 블록들(BLK1)의 마지막 페이지의 스페어 영역에 기입되도록 플래시 메모리(1300)를 제어할 수 있다. 쓰기 요청(WRb3)에 응답하여, 메모리 컨트롤러(1200)는 결정된 다음 할당될 쓰기 메모리 블록(BLK4)의 물리적 어드레스가 제 2 메모리 블록들(BLK2)의 마지막 페이지의 스페어 영역에 기입되도록 플래시 메모리(1300)를 제어할 수 있다.
마지막으로, 도 5d를 참조하면, 메모리 컨트롤러(1200)는 쓰기 요청들(WRa4, WRb4)를 수신할 수 있다. 쓰기 요청들(WRa4, WRb4)은 논리적 유닛들(LUa, LUb)에 대응되는 쓰기 요청들이다. 논리적 유닛들(LUa, LUb)에 할당된 쓰기 메모리 블록들(BLK1, BLK2)의 페이지들에 데이터가 모두 기입되었으므로, 제 1 및 제 2 메모리 블록들(BLK1, BLK2)에 쓰기 동작이 수행될 수 없다. 따라서, 메모리 컨트롤러(1200)는 쓰기 요청들(WRa4, WRb4)에 응답하여, 제 1 및 제 2 메모리 블록들(BLK1, BLK2)의 마지막 페이지에 저장된 다음 할당될 쓰기 메모리 블록들(BLK3, BLK4)에 데이터(LUa4, LUb4)가 기입되도록 플래시 메모리(1300)를 제어할 수 있다.
상술된 본 발명의 제 1 실시 예에 따르면, 도 5c 및 도 5d에 도시된 바와 같이, 제 3 및 제 4 메모리 블록(BLK3, BLK4)의 할당으로 인한 매핑 테이블(1221)의 플러시가 요구되지 않는다. 또한, 갑작스런 전원 오프(Suddenly Power Off; SPO)로 인하여, 램(1220)에서 구동되는 매핑 테이블(1221)이 소실된 경우에도, 메모리 컨트롤러(1200)는 제 1 및 제 2 쓰기 메모리 블록들(BLK1, BLK2)의 마지막 페이지들의 스페어 영역들을 스캔하여 매핑 테이블을 복원할 수 있다.
도 6a 내지 도 6c는 본 발명의 제 2 실시 예에 따른 메모리 컨트롤러(1200)의 쓰기 메모리 블록 할당 방법을 보여주는 도면이다. 예시적으로, 메모리 컨트롤러(1200)는 쓰기 요청들(WRa1, WRa2, WRa3, WRa4, WRb1, WRb2, WRb3, WRb4)을 수신할 수 있다. 쓰기 요청들(WRa1, WRa2, WRa3, WRa4, WRb1, WRb2, WRb3, WRb4), 논리적 유닛들(LUa, LUb), 및 데이터(LUa1, LUa2, LUa3, LUa4, LUb1, LUb2, LUb3, LUb4)는 도 3을 참조하여 설명되었으므로, 이에 대한 설명은 생략된다. 예시적으로, 메모리 컨트롤러(1200)는 첫 번째 페이지의 쓰기 동작에서 다음 할당될 쓰기 메모리 블록을 결정할 수 있다.
먼저, 도 6a을 참조하면, 메모리 컨트롤러(1200)는 쓰기 요청(WRa1)을 수신할 수 있다. 쓰기 요청(WRa1)은 새로운 논리적 유닛(LUa)에 대한 쓰기 요청이다. 따라서, 쓰기 요청(WRa1)에 응답하여, 메모리 컨트롤러(1200)는 쓰기 메모리 블록으로서 제 1 메모리 블록(BLK1)을 할당할 수 있다. 메모리 컨트롤러(1200)는 다음 할당될 쓰기 메모리 블록으로서 제 2 메모리 블록(BLK2)을 결정할 수 있다. 메모리 컨트롤러(1200)는 다음 할당될 쓰기 메모리 블록(BLK2)이 제 1 메모리 블록(BLK1)의 첫 번째 페이지의 스페어 영역에 저장되도록 플래시 메모리(1300)를 제어할 수 있다.
메모리 컨트롤러(1200)는 쓰기 요청(WRb1)을 수신할 수 있다. 쓰기 요청(WRb1)은 새로운 논리적 유닛(LUb)에 대응되는 쓰기 요청이다. 제 1 및 제 2 메모리 블록들(BLK1, BLK2)은 각각 쓰기 메모리 블록 및 다음 할당될 쓰기 메모리 블록으로서 할당되었으므로, 자유 메모리 블록들에서 제외된다. 메모리 컨트롤러(1200)는 자유 메모리 블록들로부터 쓰기 메모리 블록으로서 제 3 메모리 블록(BLK3)을 할당할 수 있다. 메모리 컨트롤러(1300)는 다음 할당될 쓰기 메모리 블록으로서 제 4 메모리 블록(BLK4)를 할당할 수 있다. 메모리 컨트롤러(1200)는 제 3 메모리 블록(BLK3)의 첫 번째 페이지의 스페어 영역에 제 4 메모리 블록(BLK4)의 물리적 어드레스가 저장되도록 플래시 메모리(1300)를 제어할 수 있다.
다음으로, 도 6b를 참조하면, 메모리 컨트롤러(1200)는 쓰기 요청들(WRa2, WRa3, WRb2, WRb3)을 수신할 수 있다. 쓰기 요청들(WRa2, WRa3, WRb2, WRb3)에 대응하는 논리적 유닛들(LUa, LUb)은 새로운 논리적 유닛들이 아니다. 따라서, 메모리 컨트롤러(1200)는 쓰기 요청들(WRa2, WRa3, WRb2, WRb3)에 응답하여, 제 1 및 제 3 메모리 블록들(BLK1, BLK3)에 각각 데이터(LUa2, LUa3, LUb2, LUb3)가 기입되도록 플래시 메모리(1300)를 제어할 수 있다. 메모리 컨트롤러(1200)는 데이터(LUa2, LUa3, LUb2, LUb3)의 논리적 어드레스들(LBM)이 각각 제 1 및 제 3 메모리 블록들(BLK1, BLK3)의 스페어 영역들(Spare Areas)에 저장되도록 플래시 메모리(1300)를 제어할 수 있다.
도 6c를 참조하면, 메모리 컨트롤러(1200)는 쓰기 요청들(WRa4, WRb4)을 수신할 수 있다. 쓰기 요청들(WRa4, WRb4)은 새로운 논리적 유닛들에 대한 쓰기 요청들이 아니다. 논리적 유닛들(LUa, LUb)의 쓰기 메모리 블록들로 할당된 제 1 및 제 3 메모리 블록들(BLK1, BLK3)은 쓰기 가능한 페이지를 포함하지 않는다. 그러므로, 메모리 컨트롤러(1200)는 제 1 및 제 3 메모리 블록들(BLK1, BLK3)의 첫 번째 페이지에 저장된 다음 할당될 쓰기 메모리 블록들(BLK2, BLK4)에 데이터(LUa4, LUb4)가 기입되도록 플래시 메모리(1300)를 제어할 수 있다. 예시적으로, 제 2 및 제 4 메모리 블록들(BLK2, BLK4)의 첫 번째 페이지에 대한 쓰기 동작이 수행되므로, 쓰기 요청들(WRa4, WRb4) 각각에 응답하여, 메모리 컨트롤러(1200)는 다음 할당될 쓰기 메모리 블록들로서 자유 메모리 블록들 중 어느 하나를 결정할 수 있다.
상술된 제 2 실시 예에 따르면, 제 2 및 제 4 메모리 블록들(BLK2, BLK4)이 쓰기 메모리 블록으로서 할당된 경우, 램(1220)에 저장된 매핑 테이블(1221)의 플러시가 요구되지 않는다. 따라서, 컴퓨팅 시스템(1000)의 성능이 향상된다.
도 7은 본 발명의 제 3 실시 예에 따른 플래시 메모리를 기반으로 하는 컴퓨팅 시스템(2000)을 보여주는 블록도이다. 도 7을 참조하면, 컴퓨팅 시스템(2000)은 호스트(2100), 메모리 컨트롤러(2200), 및 플래시 메모리(2300)를 포함한다. 메모리 컨트롤러(2200)는 프로세서(2210) 및 램(2220)을 포함한다. 램(2220)은 매핑 테이블(2221) 및 선-할당 테이블(2222, PAT; Pre-Allocation Table)을 포함한다. 플래시 메모리(2300)는 사용자 영역(2310) 및 메타 영역(2320)을 포함한다. 메타 영역(2320)은 메인 매핑 테이블(2321), 및 메인 선-할당 테이블(2322)을 포함한다. 도 7의 호스트(2100), 메모리 컨트롤러(2200), 프로세서(2210), 램(2220), 매핑 테이블(2221), 플래시 메모리(2300), 사용자 영역(2310), 메타 영역(2320), 및 메인 매핑 테이블(2321)은 도 1을 참조하여 설명되었으므로 이에 대한 설명은 생략된다.
선-할당 테이블(2222, PAT)은 플래시 메모리(2300)에 포함된 자유 메모리 블록들의 할당 순서 정보를 포함한다. 예를 들어, 플래시 메모리(2300)는 제 1 내지 제 n 메모리 블록들(미도시)을 포함할 수 있다. 제 1 내지 제 n 메모리 블록들은 자유 메모리 블록들이다. 선-할당 테이블(2222)은 제 1 내지 제 k 메모리 블록들(k는 n보다 작거나 같고, 1보다 큰 정수)의 할당 순서 정보를 포함할 수 있다.
예시적으로, 메모리 컨트롤러(2200)는 메타 영역(2320)의 메인 선-할당 테이블(2322)을 읽고, 읽은 메인 선-할당 테이블(2322)을 기반으로 선-할당 테이블(2322)을 램(2220)에 저장할 수 있다. 메모리 컨트롤러(2200)는 램(2220)에 저장된 선-할당 테이블(2222)을 기반으로 쓰기 메모리 블록을 할당할 수 있다. 선-할당 테이블(2222)을 기반으로 쓰기 메모리 블록을 할당하는 방법은 도 8 내지 도 9C를 참조하여 더욱 상세하게 설명된다.
예시적으로, 선-할당 테이블(2222)에 할당 순서 정보가 포함되고, 쓰기 메모리 블록으로 할당된 메모리 블록의 물리적 어드레스 및 이에 대응되는 논리적 어드레스의 매핑 관계 정보가 메인 매핑 테이블(2321)로 플러시된 경우, 메모리 컨트롤러(2200)는 플러시된 물리적 어드레스와 대응되는 메모리 블록의 할당 순서 정보를 선-할당 테이블(2222)에서 삭제할 수 있다. 메모리 컨트롤러(2200)는 할당 순서 정보가 삭제된 선-할당 테이블(2222)을 메인 선-할당 테이블(2322)로 플러시할 수 있다. 메모리 컨트롤러(2200)는 자유 메모리 블록들을 기반으로 할당 순서 정보가 삭제된 선-할당 테이블(2222)을 갱신할 수 있다. 메모리 컨트롤러(2200)는 갱신된 선-할당 테이블(2222)을 메인 선-할당 테이블(2322)로 플러시할 수 있다.
도 8은 본 발명의 제 3 실시 예에 따른 메모리 컨트롤러(2200)의 쓰기 메모리 블록 할당 방법을 보여주는 순서도이다. 도 7 및 도 8을 참조하면, S210 단계에서, 메모리 컨트롤러(2200)는 플래시 메모리(2300)에 포함된 복수의 자유 메모리 블록들을 기반으로 메인 선-할당 테이블(2322)를 생성하여 메타 영역(2320)에 저장할 수 있다.
S220 단계에서, 메모리 컨트롤러(2200)는 메타 영역(2320)에 저장된 메인 선-할당 테이블(2322)을 읽고, 읽은 메인 선-할당 테이블(2322)을 기반으로 선-할당 테이블(2322)을 램(2220)에 저장할 수 있다.
S230 단계에서, 메모리 컨트롤러(2200)는 호스트(2100)로부터 쓰기 요청을 수신할 수 있다. 예를 들어, 호스트(2100)는 파일 시스템을 기반으로 플래시 메모리(2300)에 저장될 파일 또는 데이터의 쓰기 요청을 생성할 수 있다. 메모리 컨트롤러(2200)는 호스트로부터 생성된 쓰기 요청을 수신할 수 있다.
S240 단계에서, 메모리 컨트롤러(2200)는 수신된 쓰기 요청에 응답하여, 쓰기 메모리 블록의 할당이 요구되는지 판별할 수 있다. 예를 들어, 수신된 쓰기 요청이 새로운 논리적 유닛에 대한 쓰기 요청이거나, 할당된 쓰기 메모리 블록에 기입 가능한 페이지가 없을 경우, 메모리 컨트롤러(2200)는 쓰기 메모리 블록의 할당이 요구되는 것으로 판단한다.
S240 단계의 판별 결과에 따라 쓰기 메모리 블록의 할당이 요구될 경우, S250 단계에서, 메모리 컨트롤러(2200)는 선-할당 테이블(2222)을 기반으로 쓰기 메모리 블록의 할당이 가능한지 판별할 수 있다. 예를 들어, 선-할당 테이블(2222)에 할당 순서 정보가 포함된 메모리 블록들이 모두 쓰기 메모리 블록들로서 할당되었다면, 메모리 컨트롤러(2200)는 선-할당 테이블(2222)을 기반으로 쓰기 메모리 블록을 할당할 수 없을 것이다.
S250 단계의 판별 결과에 따라, 선-할당 테이블(2222)을 기반으로 쓰기 메모리 블록의 할당이 가능할 경우, S260 단계에서, 메모리 컨트롤러(2200)는 수신된 쓰기 요청에 응답하여, 선-할당 테이블(2222)을 기반으로 쓰기 메모리 블록을 할당할 수 있다. 예를 들어, 선-할당 테이블(2222)은 제 1 메모리 블록, 제 2 메모리 블록 및 제 3 메모리 블록 순으로 결정된 할당 순서 정보를 포함할 수 있다. 메모리 컨트롤러(2200)는 제 1 메모리 블록, 제 2 메모리 블록 및 제 3 메모리 블록 순으로 쓰기 메모리 블록을 할당할 수 있다.
S250 단계의 판별 결과에 따라, 선-할당 테이블(2222)을 기반으로 쓰기 메모리 블록의 할당을 못할 경우, S270 단계에서, 메모리 컨트롤러(2200)는 선-할당 테이블(2222)에 할당 순서 정보가 포함되지 않은 자유 메모리 블록들을 기반으로 쓰기 메모리 블록을 할당할 수 있다.
S240의 판별 결과에 따라, 쓰기 메모리 블록의 할당이 요구되지 않을 경우, 메모리 컨트롤러(2200)는 할당된 쓰기 메모리 블록에 데이터가 기입되도록 플래시 메모리(2300)를 제어할 수 있다.
도 9a 내지 도 9c는 본 발명의 제 3 실시 예에 따른 메모리 컨트롤러(2200)의 쓰기 메모리 블록 할당 방법을 더욱 상세하게 설명하기 위한 도면들이다. 예시적으로, 메모리 컨트롤러(2200)는 쓰기 요청들(WRa1, WRa2, WRa3, WRa4, WRb1, WRb2, WRb3, WRb4)을 수신할 수 있다. 플래시 메모리(2300)는 제 1 내지 제 4 메모리 블록들(BLK1~BLK4)을 포함한다. 플래시 메모리(2300)의 메타 영역(2320)은 메인 선-할당 테이블(2322)을 포함한다. 메모리 컨트롤러(2200)는 메인 선-할당 테이블(2322)을 읽고, 읽은 정보를 램(2220)에 저장할 수 있다. 램(2220)에 저장된 선-할당 테이블(2222)은 제 1 내지 제 3 메모리 블록들(2322)의 할당 순서 정보를 포함한다. 따라서, 제 4 메모리 블록(BLK4)은 자유 메모리 블록이고, 제 1 내지 제 3 메모리 블록들(BLK1~BLK3)은 자유 메모리 블록들에서 제외될 것이다.
먼저, 도 9a를 참조하면, 메모리 컨트롤러(2200)는 메타 영역(2320)의 메인 선-할당 테이블(2322)을 읽고, 읽은 메인 선-할당 테이블(2322)을 램(2220)에 저장할 수 있다. 메모리 컨트롤러(2200)는 램(2220)에 저장된 선-할당 테이블(2222)을 기반으로 쓰기 메모리 블록을 할당할 수 있다. 예를 들어, 메모리 컨트롤러(2200)는 쓰기 요청들(WRa1, WRa2)을 수신할 수 있다. 쓰기 요청들(WRa1, WRb1)은 새로운 논리적 유닛들(LUa, LUb)에 대한 쓰기 요청들이다. 따라서, 메모리 컨트롤러(2200)는 쓰기 요청들(WRa1, WRb1)에 응답하여, 선-할당 테이블(2222)을 기반으로 제 1 및 제 2 메모리 블록들(BLK1, BLK2)을 쓰기 메모리 블록들로서 할당할 수 있다.
다음으로, 도 9b를 참조하면, 메모리 컨트롤러(2200)는 쓰기 요청들(WRa2, WRa3, WRb2, WRb3)을 수신할 수 있다. 쓰기 요청들(WRa2, WRa3, WRb2, WRb3) 각각은 논리적 유닛들(LUa, LUb)에 대응되는 쓰기 요청들이다. 쓰기 메모리 블록들로서 제 1 및 제 2 메모리 블록들(BLK1, BLK2)이 논리적 유닛들(LUa, LUb)에 할당되었으므로, 메모리 컨트롤러(2200)는 쓰기 요청들(WRa2, WRa3, WRb2, WRb3)에 응답하여, 데이터(LUa2, LUa3, LUb2, LUb3)가 각각 제 1 및 제 2 메모리 블록들(BLK1, BLK2)에 기입되도록 플래시 메모리(2300)를 제어할 수 있다.
다음으로, 도 9c를 참조하면, 메모리 컨트롤러(2200)는 쓰기 요청들(WRa4, WRb4)을 수신할 수 있다. 쓰기 요청들(WRa4, WRb4)은 논리적 유닛들(LUa, LUb)에 대한 쓰기 요청들이다. 그러나, 논리적 유닛들(LUa, LUb)에 할당된 제 1 및 제 2 메모리 블록들(BLK1, BLK2)의 기입 가능한 페이지가 없으므로, 메모리 컨트롤러(2200)는 쓰기 요청(WRa4)에 응답하여, 선-할당 테이블(2322)을 기반으로 제 3 메모리 블록(BLK3)을 할당할 수 있다.
선-할당 테이블(2322)에 포함된 제 1 내지 제 3 메모리 블록들(BLK1~BLK3)은 모두 할당되었으므로, 메모리 컨트롤러(2200)는 쓰기 요청(WRb4)에 응답하여, 자유 메모리 블록인 제 4 메모리 블록(BLK4)을 쓰기 메모리 블록으로서 할당할 수 있다.
상술된 제 3 실시 예에 따르면, 메모리 컨트롤러(2200)는 메인 선-할당 정보(2322)를 생성하여, 메타 영역(2320)으로 최초 1회 플러시한다. 메모리 컨트롤러(2200)는 메인 선-할당 정보(2322)을 램(2220)에 저장하여, 저장된 선-할당 정보(2222)를 기반으로 쓰기 메모리 블록을 할당할 수 있다. 따라서, 선-할당 테이블(2222)에 할당 순서 정보가 포함된 메모리 블록들이 모두 할당될 때까지 메인 매핑 테이블의 플러시 동작이 요구되지 않는다.
도 10은 본 발명의 제 4 실시 예에 따른 컴퓨팅 시스템(3000)을 보여주는 블록도이다. 도 10을 참조하면, 컴퓨팅 시스템(3000)은 호스트(3100), 메모리 컨트롤러(3200), 및 플래시 메모리(3300)를 포함한다. 메모리 컨트롤러(3200)는 프로세서(3210) 및 램(3220)을 포함한다. 램(3220)은 매핑 테이블(3221), 선-할당 테이블(3222), 및 테일-트레일 테이블(3223, Tail-Trail Table)을 포함한다. 플래시 메모리(3300)는 사용자 영역(3310) 및 메타 영역(3320)을 포함한다. 메타 영역(3320)은 메인 매핑 테이블(3321) 및 메인 선-할당 테이블(3322, Main PAT)을 포함한다. 도 9의 호스트(3100), 메모리 컨트롤러(3200), 프로세서(3210), 램(3220), 매핑 테이블(3221), 선-할당 테이블(3222), 플래시 메모리(3300), 사용자 영역(3310), 메타 영역(3320), 메인 매핑 테이블(3321), 및 메인 선-할당 테이블(3322)은 도 1 및 도 7을 참조하여 설명되었으므로, 이에 대한 설명은 생략된다.
메모리 컨트롤러(3200)의 램(3220)은 테일-트레일 테이블(3223)을 포함할 수 있다. 테일-트레일 테이블(3223)은 다음 할당될 쓰기 메모리 블록의 물리적 어드레스 및 이와 대응되는 논리적 유닛의 정보를 포함할 수 있다. 예를 들어, 메모리 컨트롤러(3200)는 제 1 메모리 블록의 마지막 페이지의 쓰기 동작에 대응되는 쓰기 요청을 수신할 수 있다. 메모리 컨트롤러(3200)는 수신된 쓰기 요청에 응답하여, 다음 할당될 쓰기 메모리 블록을 결정할 수 있다. 메모리 컨트롤러(3200)는 다음 할당될 쓰기 메모리 블록의 물리적 어드레스 및 이와 대응되는 논리적 유닛의 정보를 테일-트레일 테이블(3223)에 저장할 수 있다. 메모리 컨트롤러(3200)는 선-할당 테이블(3222) 및 테일-트레일 테이블(3223)을 기반으로 쓰기 메모리 블록을 할당할 수 있다. 테일-트레일 테이블(3223)은 도 12a 내지 도 12d를 참조하여 더욱 상세하게 설명된다.
도 11은 본 발명의 제 4 실시 예에 따른 메모리 컨트롤러(3200)의 쓰기 메모리 블록 할당 방법을 보여주는 순서도이다. 도 10을 참조하면, S310 단계, S315 단계, 및 S320 단계는 도 8의 S210 단계, S220 단계, 및 S230 단계와 동일하므로 이에 대한 설명은 생략된다.
S330 단계에서, 메모리 컨트롤러(3200)는 수신된 쓰기 요청이 새로운 논리적 유닛에 대한 쓰기 요청인지 판별할 수 있다. 예를 들어, 논리적 유닛(LUa)에 대응되는 쓰기 요청에 응답하여 쓰기 메모리 블록이 할당되었다면, 이 후의 논리적 유닛(LUa)에 대한 쓰기 요청은 새로운 논리적 유닛에 대한 쓰기 요청이 아니다.
판별 결과에 따라 수신된 쓰기 요청이 새로운 논리적 유닛에 대한 쓰기 요청인 경우, S340 단계에서, 메모리 컨트롤러(3200)는 수신된 쓰기 요청에 응답하여, 플래시 메모리(3300)의 자유 메모리 블록들로부터 쓰기 메모리 블록을 할당할 수 있다. 이 경우, 메모리 컨트롤러(3200)는 할당된 쓰기 메모리 블록의 물리적 어드레스 및 이와 대응되는 논리적 어드레스를 기반으로 램(3220)의 매핑 테이블(3221)을 갱신할 수 있다. 메모리 컨트롤러(3200)는 갱신된 매핑 테이블(3221)을 메인 매핑 테이블(3321)로 플러시할 수 있다.
판별 결과에 따라 수신된 쓰기 요청이 새로운 논리적 유닛에 대한 쓰기 요청이 아닌 경우, S350 단계에서, 메모리 컨트롤러(3200)는 수신된 쓰기 요청이 할당된 쓰기 메모리 블록의 마지막 페이지에 대한 쓰기 요청인지 판별할 수 있다.
S350 단계의 판별 결과에 따라, 마지막 페이지에 대한 쓰기 요청일 경우, S360 단계에서, 메모리 컨트롤러(3200)는 다음 할당될 쓰기 메모리 블록을 결정할 수 있다. 예를 들어, 메모리 컨트롤러(3200)는 자유 메모리 블록들 중 다음 할당될 메모리 블록을 결정할 수 있다.
S370 단계에서, 메모리 컨트롤러(3200)는 다음 할당될 쓰기 메모리 블록의 물리적 어드레스 및 이와 대응되는 논리적 유닛의 정보를 테일-트레일 테이블(3223)에 저장할 수 있다. 메모리 컨트롤러(3200)는 결정된 다음 할당될 메모리 블록의 물리적 어드레스 정보가 마지막 페이지의 스페어 영역에 기입되도록 플래시 메모리(3300)를 제어할 수 있다.
S350 단계의 판별 결과에 따라, 마지막 페이지에 대한 쓰기 요청이 아닌 경우, S380 단계에서, 쓰기 메모리 블록의 할당이 요구되는지 판별할 수 있다. 예를 들어, 수신된 쓰기 요청에 대응되는 논리적 유닛에 대한 쓰기 메모리 블록의 기입가능한 페이지가 없을 경우, 메모리 컨트롤러(3200)는 수신된 쓰기 요청에 응답하여 쓰기 메모리 블록의 할당이 요구되는 것으로 판단한다.
S380 단계의 판별 결과에 따라, 쓰기 메모리 블록의 할당이 요구될 경우, 메모리 컨트롤러(3200)는 테일-트레일 테이블(3223) 및 선-할당 테이블(3222)을 기반으로 쓰기 메모리 블록을 할당할 수 있다. 예시적으로, 선-할당 테이블(3222)에 포함된 자유 메모리 블록들의 할당 순서 정보가 남지 않을 경우, 메모리 컨트롤러(3200)는 플래시 메모리(3300)의 자유 메모리 블록들을 기반으로 쓰기 메모리 블록을 할당할 수 있다.
도 12a 내지 도 12d는 본 발명의 제 4 실시 예에 따른 메모리 컨트롤러의 쓰기 메모리 할당 방법을 더욱 상세하게 설명하기 위한 도면들이다. 예시적으로, 플래시 메모리(3300)는 메타 영역(3320) 및 자유 메모리 블록들로서 제 1 내지 제 4 메모리 블록들(BLK1~BLK4)을 포함한다. 메타 영역(3320)은 메인 선-할당 테이블(3322)을 포함한다. 메인 선-할당 테이블(3322)은 제 4 메모리 블록(BLK4)의 할당 순서 정보를 포함한다. 제 4 메모리 블록(BLK4)의 할당 순서 정보가 메인 선-할당 테이블(3323)에 포함되었으므로, 제 4 메모리 블록(BLK4)은 자유 메모리 블록에서 제외된다.
메모리 컨트롤러(3200)는 메인 선-할당 테이블(3322)을 읽고, 읽은 메인 선-할당 테이블(3322)을 램(3220)에 저장할 수 있다. 램(3220)은 선-할당 테이블(3222) 및 테일-트레일 테이블(3223)을 포함한다. 테일-트레일 테이블(3223)은 다음 할당될 쓰기 메모리 블록의 물리적 어드레스 및 이와 대응되는 논리적 유닛의 정보를 포함한다. 예시적으로, 메모리 컨트롤러(3200)는 램(3220)에 저장된 선-할당 테이블(3222) 및 테일-트레일 테이블(3223)을 기반으로 쓰기 메모리 블록을 할당할 수 있다.
먼저, 도 12a를 참조하면, 메모리 컨트롤러(3200)는 쓰기 요청들(WRa1, WRb1)을 수신할 수 있다. 쓰기 요청들(WRa1, WRb1)은 각각 새로운 논리적 유닛들(LUa, LUb)에 대한 쓰기 요청들이다. 따라서, 메모리 컨트롤러(3200)는 쓰기 요청들(WRa1, WRb1)에 응답하여, 쓰기 메모리 블록들로서 제 1 및 제 2 메모리 블록들(BLK1, BLK2)을 할당할 수 있다. 예시적으로, 메모리 컨트롤러(3200)는 쓰기 메모리 블록들로서 할당된 제 1 및 제 2 메모리 블록들(BLK1, BLK2)의 물리적 어드레스 및 이와 대응하는 논리적 어드레스를 매핑 테이블(3221)에 저장할 수 있다. 매핑 테이블(3221)은 플래시 메모리(3300)의 메인 매핑 테이블(3321)로 플러시될 수 있다.
다음으로, 도 12b를 참조하면, 메모리 컨트롤러(3200)는 쓰기 요청들(WRa2, WRb2)을 수신할 수 있다. 쓰기 요청들(WRa2, WRb2)은 새로운 논리적 유닛에 대한 쓰기 요청들이 아니다. 따라서, 메모리 컨트롤러(3200)는 쓰기 요청들(WRa2, WRb2)에 대응되는 데이터(LUa2, LUb2)가 제 1 및 제 2 메모리 블록들(BLK1, BLK2)에 기입되도록 플래시 메모리(3300)를 제어할 수 있다.
다음으로, 도 12c를 참조하면, 메모리 컨트롤러(3200)는 쓰기 요청들(WRa3, WRb3)를 수신할 수 있다. 쓰기 요청들(WRa3, WRb3)은 새로운 논리적 유닛에 대한 쓰기 요청들이 아니다. 쓰기 요청들(WRa3, WRb3)은 쓰기 메모리 블록들로서 할당된 제 1 및 제 2 메모리 블록들(BLK1, BLK2)의 마지막 페이지들에 대한 쓰기 요청들이다. 따라서, 메모리 컨트롤러(3200)는 다음 할당될 쓰기 메모리 블록들을 결정할 수 있다.
예를 들어, 메모리 컨트롤러(3200)는 플래시 메모리(3300)의 자유 메모리 블록들을 기반으로 다음 할당될 쓰기 메모리 블록들을 결정할 수 있다. 제 1 및 제 2 메모리 블록들(BLK1, BLK2)은 쓰기 메모리 블록들로서 할당되었으므로, 자유 메모리 블록이 아니다. 또한, 선-할당 테이블(3323)에 제 4 메모리 블록(BLK4)의 할당 순서 정보가 포함되므로, 제 4 메모리 블록(BLK4) 또한 자유 메모리 블록이 아니다. 제 3 메모리 블록(BLK3)은 자유 메모리 블록이다.
메모리 컨트롤러(3200)는 쓰기 요청들(WRa3, WRb3)에 응답하여, 다음 할당될 쓰기 메모리 블록으로서 제 3 메모리 블록(BLK3)을 결정할 수 있다. 즉, 메모리 컨트롤러(3200)는 다음 할당될 쓰기 메모리 블록을 중복하여 결정할 수 있다. 메모리 컨트롤러(3200)는 제 3 메모리 블록(BLK3)의 물리적 어드레스가 제 1 및 제 2 메모리 블록들(BLK1, BLK2)의 마지막 페이지들의 스페어 영역들에 기입되도록 플래시 메모리(3300)를 제어할 수 있다. 메모리 컨트롤러(3200)는 제 3 메모리 블록(BLK3)의 물리적 어드레스 및 이와 대응되는 논리적 유닛들(LUa, LUb)의 정보를 테일-트레일 테이블(3221)에 저장한다.
다음으로, 도 12d를 참조하면, 메모리 컨트롤러(3200)는 쓰기 요청들(WRa4, WRb4)을 수신할 수 있다. 쓰기 요청들(WRa4, WRb4)은 새로운 논리적 유닛에 대한 쓰기 요청들이 아니다. 쓰기 요청들(WRa4, WRb4)은 쓰기 메모리 블록들의 마지막 페이지들에 대한 쓰기 요청들이 아니다. 쓰기 요청들(WRa4, WRb4)에 대한 쓰기 메모리 블록의 할당이 요구된다. 따라서, 메모리 컨트롤러(3200)는 테일-트레일 테이블(3221) 및 선-할당 테이블(3323)을 기반으로 쓰기 메모리 블록을 할당할 수 있다.
예를 들어, 메모리 컨트롤러(3200)는 쓰기 요청(WRa4)에 응답하여, 테일-트레일 테이블(3221)을 스캔할 수 있다. 메모리 컨트롤러(3200)는 스캔된 정보를 기반으로, 쓰기 요청(WRa4)에 대한 쓰기 메모리 블록으로서 제 3 메모리 블록(BLK3)을 할당할 수 있다. 이 후, 메모리 컨트롤러(3200)는 쓰기 요청(WRb4)에 응답하여, 테일-트레일 테이블(3221)을 스캔할 수 있다. 테일-트레일 테이블(3221)은 쓰기 요청(WRb4)의 논리적 유닛(LUb) 및 이와 대응되는 제 3 메모리 블록(BLK3)의 물리적 어드레스 정보를 포함하지만, 제 3 메모리 블록(BLK3)은 쓰기 요청(WRa4)에 대한 쓰기 메모리 블록으로서 할당되었으므로, 메모리 컨트롤러(3200)는 쓰기 요청(WRb4)에 응답하여, 제 3 메모리 블록(BLK3)을 할당하지 않는다.
메모리 컨트롤러(3200)가 테일-트레일 테이블(3221)을 기반으로 쓰기 메모리 블록을 할당하지 못할 경우, 메모리 컨트롤러(3200)는 선-할당 테이블(3323)을 기반으로 쓰기 메모리 블록을 할당한다. 쓰기 요청(WRb4)에 응답하여, 메모리 컨트롤러(3200)는 선-할당 테이블(3323)을 기반으로, 제 4 메모리 블록(BLK4)을 쓰기 메모리 블록으로서 할당할 수 있다.
상술된 제 4 실시 예에 따르면, 메모리 컨트롤러(3200)는 선-할당 정보(3323)를 최초 1회 플러시한다. 제 1 및 제 2 메모리 블록들(BLK1, BLK2)이 할당될 경우, 메모리 컨트롤러(3200)는 할당된 제 1 및 제 2 메모리 블록들(BLK1, BLK2)을 기반으로 매핑 테이블(3221)을 갱신하고, 갱신된 매핑 테이블(3221)을 메인 매핑 테이블(3321)로 플러시한다. 따라서, 제 3 및 제 4 메모리 블록들(BLK3, BLK4)이 쓰기 메모리 블록으로서 할당될 경우, 매핑 테이블(3221)의 플러시가 요구되지 않는다. 또한, 갑작스런 전원 오프(SPO)로 인하여, 매핑 테이블(3221)이 소실된 경우, 메모리 컨트롤러(3200)는 제 1 및 제 2 메모리 블록들(BLK1, BLK2)의 스페어 영역들 및 선-할당 테이블(3323)을 스캔하여 매핑 테이블을 복원할 수 있다.
도 13a 내지 도 13d는 본 발명의 제 5 실시 예에 따른 메모리 컨트롤러(3200)의 쓰기 메모리 블록 할당 방법을 보여주는 도면들이다. 예시적으로, 플래시 메모리(3300), 제 1 내지 제 4 메모리 블록들(BLK1~BLK4), 램(3220), 선-할당 테이블(3222), 테일-트레일 테이블(3223), 메타 영역(3320), 및 메인 선-할당 테이블(3322)은 도 12a 내지 도 12d를 참조하여 설명되었으므로, 이에 대한 설명은 생략된다. 예시적으로, 메모리 컨트롤러(3200)는 새로운 논리적 유닛에 대한 쓰기 요청에 응답하여, 선-할당 테이블(3222)을 기반으로 쓰기 메모리 블록을 할당할 수 있다.
먼저 도 13a를 참조하면, 메모리 컨트롤러(3200)는 쓰기 요청들(WRa1, WRb1)을 수신할 수 있다. 쓰기 요청들(WRa1, WRb1)은 새로운 논리적 유닛들(LUa, LUb)에 대한 쓰기 요청들이다. 메모리 컨트롤러(3200)는 쓰기 요청(WRa1)에 응답하여, 선-할당 테이블(3323)을 기반으로 제 4 메모리 블록(BLK4)을 쓰기 메모리 블록으로서 할당할 수 있다.
이 후, 메모리 컨트롤러(3200)는 쓰기 요청(WRb1)에 응답하여, 자유 메모리 블록들 중 제 1 메모리 블록(BLK1)을 쓰기 메모리 블록으로서 할당할 수 있다. 예시적으로, 제 1 메모리 블록(BLK1)의 물리적 어드레스 및 이에 대응되는 논리적 어드레스가 갱신된 메인 매핑 테이블(3322)로 플러시될 수 있다.
도 13b를 참조하면, 메모리 컨트롤러(3200)는 쓰기 요청들(WRa2, WRb2)를 수신할 수 있다. 쓰기 요청들(WRa2, WRb2)은 새로운 논리적 유닛에 대한 쓰기 요청들이 아니다. 쓰기 요청들(WRa2, WRb2)는 할당된 쓰기 메모리 블록들(BLK4, BLK1)의 마지막 페이지에 대한 쓰기 요청들이 아니다. 쓰기 요청들(WRa2, WRb2)은 새로운 쓰기 메모리 블록의 할당이 요구되는 쓰기 요청들이 아니다. 따라서, 메모리 컨트롤러(3200)는 쓰기 요청들(WRa2, WRb2)에 응답하여, 데이터(LUa2, LUb2)가 각각 제 4 및 제 1 메모리 블록들(BLK4, BLK1)에 저장되도록 플래시 메모리(3300)를 제어한다.
도 13c를 참조하면, 메모리 컨트롤러(3200)는 쓰기 요청들(WRa3, WRb3)을 수신할 수 있다. 쓰기 요청들(WRa3, WRb3)은 제 4 및 제 1 메모리 블록들(BLK4, BLK1)의 마지막 페이지에 대한 쓰기 요청들이다. 따라서, 메모리 컨트롤러(3200)는 쓰기 요청들(WRa3, WRb3)에 응답하여, 다음 할당될 쓰기 메모리 블록들을 결정할 수 있다. 예를 들어, 메모리 컨트롤러(3200)는 자유 메모리 블록들 중 다음 할당될 쓰기 메모리 블록들로서 제 2 및 제 3 메모리 블록들(BLK2, BLK3)을 결정할 수 있다. 메모리 컨트롤러(3200)는 제 2 및 제 3 메모리 블록들(BLK2, BLK3)의 물리적 어드레스들 각각이 제 4 및 제 1 메모리 블록들(BLK4, BLK1)의 마지막 페이지들의 스페어 영역들에 저장되도록 플래시 메모리(3300)를 제어할 수 있다.
예시적으로, 메모리 컨트롤러(3200)는 다음 할당될 쓰기 메모리 블록으로 결정된 제 2 및 제 3 메모리 블록들(BLK2, BLK3)의 물리적 어드레스들 및 이들에 대응되는 논리적 유닛들(LUa, LUb)의 정보를 테일-트레일 테이블(3221)에 저장할 수 있다.
도 13d를 참조하면,메모리 컨트롤러(3200)는 쓰기 요청들(WRa4, WRb4)을 수신할 수 있다. 쓰기 요청들(WRa4, WRb4)은 새로운 논리적 유닛에 대한 쓰기 요청들이 아니다. 논리적 유닛들(LUa, LUb)에 할당된 제 4 및 제 1 메모리 블록들(BLK4, BLK1)에 기입가능한 페이지들이 없으므로, 쓰기 요청들(WRa4, WRb4)은 쓰기 메모리 블록의 할당이 요구되는 쓰기 요청들이다. 따라서, 메모리 컨트롤러(3200)는 쓰기 요청들(WRa4, WRb4)에 응답하여, 테일-트레일 테이블(3223)을 기반으로 쓰기 메모리 블록들을 할당할 수 있다. 예를 들어, 메모리 컨트롤러(3200)는 테일-트레일 테이블(3223)을 스캔할 수 있다. 메모리 컨트롤러(3200)는 테일-트레일 테이블(3223)의 스캔 정보를 기반으로, 쓰기 요청들(WRa4, WRb4)에 응답하여, 제 2 및 제 3 메모리 블록들(BLK2, BLK3)을 쓰기 메모리 블록들로서 할당할 수 있다.
상술된 본 발명의 제 5 실시 예에 따르면, 메인 선-할당 테이블(3323)이 메타 영역(3320)으로 최초 1회 플러시된다. 또한, 제 1 메모리 블록(BLK1)이 할당된 경우, 매핑 테이블(3221)이 메인 매핑 테이블(3321)로 플러시된다. 제 2 및 제 3 메모리 블록들(BLK2, BLK3)이 쓰기 메모리 블록들로서 할당된 경우, 매핑 테이블의 플러시가 요구되지 않는다. 따라서, 컴퓨팅 시스템(3000)의 향상된 속도가 제공된다.
도 14는 본 발명에 따른 메모리 컨트롤러의 매핑 테이블 복원 과정을 설명하기 위한 도면이다. 예시적으로, 도 14를 참조하여 본 발명의 제 5 실시 예에 따른 메모리 컨트롤러의 매핑 테이블 복원이 설명된다.
도 14를 참조하면, 메모리 컨트롤러(3200)는 갑작스러운 전원 오프(SPO)로 인하여, 초기화될 수 있다. 이 경우, 메모리 컨트롤러(3200)의 램(3220)에 저장된 매핑 테이블(3221)은 소실된다. 메모리 컨트롤러(3200)는 메타 영역(3320) 및 제 1 내지 제 4 메모리 블록들(BLK1~BLK4)의 스페어 영역들을 스캔하여, 매핑 테이블(3221)을 복원할 수 있다.
예를 들어, 메모리 컨트롤러(3200)는 메타 영역(3320)의 메인 매핑 테이블(3221)을 스캔할 수 있다. 도 13a를 참조하여 설명된 바와 같이, 메인 매핑 테이블(3321)은 논리적 유닛(LUb) 및 이에 대응되는 제 1 메모리 블록(BLK1)의 매핑 관계를 포함한다. 따라서, 메모리 컨트롤러(3200)는 논리적 유닛(LUb) 및 이에 대응되는 제 1 메모리 블록(BLK1)의 매핑 관계를 기반으로 매핑 테이블(3221)을 복원할 수 있다.(?) 메모리 컨트롤러(3200)는 메인 선-할당 테이블(3322)을 스캔할 수 있다. 메인 선-할당 테이블(3222)은 제 4 메모리 블록(BLK4)의 할당 순서 정보를 포함한다. 따라서, 메모리 컨트롤러(3200)는 제 4 메모리 블록(BLK4)의 스페어 영역을 스캔하여, 제 4 메모리 블록(BLK4) 및 논리적 유닛(LUb)의 매핑 관계를 기반으로 매핑 테이블(3221)을 복원할 수 있다.(?)
계속해서, 메모리 컨트롤러(3200)는 제 1 메모리 블록 및 제 4 메모리 블록(BLK1, BLK4)의 스페어 영역들을 스캔할 수 있다. 제 1 및 제 4 메모리 블록들(BLK1, BLK4)의 스페어 영역들은 다음 할당될 쓰기 메모리 블록들로서 각각 제 2 및 제 3 메모리 블록들(BLK2, BLK3)의 물리적 어드레스를 포함한다. 따라서, 메모리 컨트롤러(3200)는 제 1 및 제 4 메모리 블록들(BLK1, BLK4)을 스캔하여, 제 2 및 제 3 메모리 블록들(BLK2, BLK3) 및 논리적 유닛들(LUa, LUb)의 매핑 관계를 복원할 수 있다.(?, ?)
상술된 바와 같이, 매핑 테이블(3221)의 플러시를 줄일 뿐만 아니라, 갑작스러운 전원 오프로 인한 메모리 컨트롤러(3200)의 초기화시, 매핑 테이블(3221)을 복원할 수 있다. 따라서, 컴퓨팅 시스템(3000)의 향상된 속도 및 안정성이 제공된다.
도 15 및 도 16은 본 발명에 따른 컴퓨팅 시스템의 다양한 적용 예들을 보여주는 블록도들이다.
도 15는 본 발명의 실시 예에 따른 컴퓨팅 시스템을 메모리 카드에 적용한 예를 보여준다. 메모리 카드 시스템(4000)은 호스트(4100)와 메모리 카드(4200)를 포함한다. 호스트(4100)는 호스트 메모리 컨트롤러(4110) 및 호스트 접속 유닛(4120)을 포함한다. 메모리 카드(4200)는 카드 접속 유닛(4210), 카드 메모리 컨트롤러(4220), 그리고 플래시 메모리(4230)를 포함한다. 여기에서, 카드 메모리 컨트롤러(3220)는 앞에서 설명된 쓰기 메모리 블록 할당 방법에 따라, 쓰기 메모리 블록들을 할당할 수 있다.
호스트(4100)는 메모리 카드(4200)에 데이터를 쓰거나, 메모리 카드(4200)에 저장된 데이터를 읽는다. 호스트 메모리 컨트롤러(4110)는 요청(예를 들면, 쓰기 요청), 호스트(4100) 내의 클록 발생기(도시되지 않음)에서 발생한 클록 신호(CLK), 그리고 데이터(DAT)를 호스트 접속 유닛(4120)을 통해 메모리 카드(4200)로 전송한다.
카드 메모리 컨트롤러(4220)는 카드 접속 유닛(4210)을 통해 수신된 쓰기 요청에 응답하여, 카드 메모리 컨트롤러(4220) 내에 있는 클록 발생기(도시되지 않음)에서 발생한 클록 신호에 동기하여 데이터를 플래시 메모리(4230)에 저장한다. 플래시 메모리(4230)는 호스트(4100)로부터 전송된 데이터를 저장한다. 예를 들어, 호스트(4100)가 디지털 카메라인 경우에는 영상 데이터를 저장한다.
본 발명에 따르면, 메모리 카드(4200)의 카드 메모리 컨트롤러(4220)는 앞서 설명된 메모리 할당 방법을 통해, 메인 매핑 테이블의 플러시를 감소시킴으로서 플래시 메모리(4230)의 성능을 향상시킬 수 있다.
도 16은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 솔리드 스테이트 드라이브(SSD)에 적용한 예를 보여주는 블록도이다. 도 16를 참조하면, SSD 시스템(5000)은 호스트(5100) 및 SSD(5200)을 포함한다. SSD(5200)는 신호 커넥터(signal connector, 5211)를 통해 호스트(5100)와 신호를 주고 받으며, 전원 커넥터(power connector, 5221)를 통해 전원을 입력받는다. SSD(5200)는 복수의 플래시 메모리(5201~520n), SSD 메모리 컨트롤러(5210), 그리고 보조 전원 장치(5220)를 포함할 수 있다. 여기에서, SSD 메모리 컨트롤러(5210)는 호스트(5100)의 쓰기 요청에 응답하여, 앞서 설명된 쓰기 메모리 블록 할당 방법들을 기반으로 쓰기 메모리 블록을 할당할 수 있다.
복수의 플래시 메모리(5201~520n)는 SSD(5200)의 저장 매체로서 사용된다. SSD(5200)는 플래시 메모리 이외에도 PRAM, MRAM, ReRAM, FRAM 등의 불휘발성 메모리 장치가 사용될 수도 있다. 복수의 플래시 메모리(5201~520n)는 복수의 채널(CH1~CHn)을 통해 SSD 메모리 컨트롤러(5210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 플래시 메모리가 연결될 수 있다. 하나의 채널에 연결되는 플래시 메모리는 동일한 데이터 버스에 연결될 수 있다.
SSD 메모리 컨트롤러(5210)는 신호 커넥터(5211)를 통해 호스트(5100)와 신호(SGL)를 주고 받는다. 여기에서, 신호(SGL)에는 요청, 어드레스, 데이터 등이 포함될 수 있다. SSD 메모리 컨트롤러(5210)는 호스트(5100)의 요청에 따라 해당 플래시 메모리에 데이터를 쓰거나 해당 플래시 메모리로부터 데이터를 읽어낸다.
보조 전원 장치(5220)는 전원 커넥터(5221)를 통해 호스트(5100)와 연결된다. 보조 전원 장치(5220)는 호스트(5100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 한편, 보조 전원 장치(5220)는 SSD(4200) 내에 위치할 수도 있고, SSD(5200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(5220)는 메인 보드에 위치하며, SSD(5200)에 보조 전원을 제공할 수도 있다.
본 발명에 따르면, SSD 메모리 컨트롤러(5210)는 앞서 설명된 쓰기 메모리 블록 할당 방법을 기반으로, 플래시 메모리들(5201~520n)의 메모리 블록들을 할당할 수 있다. 따라서, 매핑 테이블의 플러시가 감소됨으로써 SSD 시스템(5000)의 향상된 속도가 제공된다.
본 발명에 따른 저장 장치는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 플래시 메모리 및 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 패키지들을 이용하여 실장될 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도내에서 여러가지 변형이 가능하다. 그러므로, 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
1000, 2000, 3000 : 컴퓨팅 시스템
1100, 2100, 3100 : 호스트
1200, 2200, 3200 : 메모리 컨트롤러
1300, 2300, 3300 : 플래시 메모리

Claims (10)

  1. 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법에 있어서,
    상기 플래시 메모리의 복수의 자유 메모리 블록들을 기반으로 메인 선-할당 테이블을 생성하여 상기 플래시 메모리의 메타 영역에 저장하는 단계;
    상기 메인 선-할당 테이블을 기반으로 상기 메모리 컨트롤러의 램에 선-할당 테이블을 저장하는 단계; 및
    호스트로부터 수신된 쓰기 요청에 응답하여, 상기 선-할당 테이블을 기반으로 상기 쓰기 메모리 블록의 할당이 가능한지 판별하는 단계를 포함하고,
    상기 선-할당 테이블을 기반으로 상기 쓰기 메모리 블록의 할당이 가능할 경우, 상기 선-할당 테이블을 기반으로 복수의 자유 메모리 블록들 중 쓰기 메모리 블록을 할당하고,
    상기 메인 선-할당 테이블은 상기 복수의 자유 메모리 블록들 중 하나 또는 그 이상의 자유 메모리 블록들의 할당 순서 정보를 포함하는 할당 방법.
  2. 제 1 항에 있어서,
    상기 선-할당 테이블을 기반으로 상기 쓰기 메모리 블록을 할당하지 못할 경우, 상기 선-할당 테이블에 할당 순서 정보가 포함되지 않은 자유 메모리 블록들 중 하나를 상기 쓰기 메모리 블록으로서 할당하는 할당 방법.
  3. 제 2 항에 있어서,
    상기 메타 영역에는 메인 매핑 테이블이 저장되고,
    상기 선-할당 테이블을 기반으로 상기 쓰기 메모리 블록을 할당하지 못할 경우, 상기 선-할당 테이블을 기반으로 이전에 할당된 쓰기 메모리 블록의 물리적 어드레스 및 상기 이전에 할당된 쓰기 메모리 블록과 대응되는 논리적 어드레스를 상기 메인 매핑 테이블로 플러시하는 할당 방법.
  4. 제 3 항에 있어서,
    상기 플러시된 물리적 어드레스에 대응되는 할당 순서 정보를 상기 선-할당 테이블에서 삭제하는 할당 방법.
  5. 제 4 항에 있어서,
    상기 복수의 자유 메모리 블록들 중 상기 선-할당 테이블에 할당 순서 정보가 포함되지 않은 자유 메모리 블록들을 기반으로, 상기 할당 순서 정보가 삭제된 선-할당 테이블을 갱신하는 할당 방법.
  6. 제 1 항에 있어서,
    상기 선-할당 테이블을 기반으로 상기 쓰기 메모리 블록을 할당하지 못할 경우, 상기 수신된 쓰기 요청이 새로운 논리적 유닛에 대한 쓰기 요청인지 판별하고,
    상기 쓰기 요청이 새로운 논리적 유닛에 대한 쓰기 요청이 아닌 경우, 테일-트레일 테이블을 기반으로 쓰기 메모리 블록을 할당하되,
    상기 테일-트레일 테이블은 다음 할당될 쓰기 메모리 블록의 물리적 어드레스 및 상기 다음 할당될 쓰기 메모리 블록에 대응되는 논리적 유닛의 정보를 포함하는 할당 방법.
  7. 제 1 항에 있어서,
    상기 수신된 쓰기 요청이 새로운 논리적 유닛에 대한 쓰기 요청인지 판별하는 단계를 더 포함하고,
    상기 수신된 쓰기 요청이 새로운 논리적 유닛에 대한 쓰기 요청일 경우, 상기 복수의 자유 메모리 블록들을 기반으로 상기 쓰기 메모리 블록을 할당하고,
    상기 수신된 쓰기 요청이 새로운 논리적 유닛에 대한 쓰기 요청이 아닌 경우, 테일-트레일 테이블 및 상기 선-할당 테이블을 기반으로 상기 쓰기 메모리 블록을 할당하고,
    상기 테일-트레일 테이블은 다음 할당될 쓰기 메모리 블록의 물리적 어드레스와 상기 다음 할당될 쓰기 메모리 블록에 대응되는 논리적 유닛의 정보를 포함하는 할당 방법.
  8. 제 1 항에 있어서,
    상기 메모리 컨트롤러가 초기화될 경우,
    상기 메모리 컨트롤러가 상기 선-할당 테이블 및 상기 메인 매핑 테이블을 기반으로 상기 메모리 컨트롤러에서 구동되는 매핑 테이블을 복원하는 단계를 더 포함하는 할당 방법.
  9. 사용자 영역 및 메타 영역을 포함하는 플래시 메모리; 그리고
    상기 플래시 메모리를 제어하도록 구성된 메모리 컨트롤러를 포함하고,
    상기 메모리 컨트롤러는 선-할당 테이블을 포함하는 램을 포함하고, 호스트로부터 수신된 쓰기 요청에 응답하여 상기 선-할당 테이블을 기반으로 상기 사용자 영역의 복수의 메모리 블록들 중 쓰기 메모리 블록을 할당하고,
    상기 선-할당 테이블은 상기 사용자 영역의 복수의 메모리 블록들 중 하나 또는 그 이상의 할당 순서 정보를 포함하는 저장 장치.
  10. 제 9 항에 있어서,
    상기 램은 테일-트레일 테이블을 더 포함하고,
    상기 수신된 쓰기 요청이 새로운 논리적 유닛에 대한 쓰기 요청이 아닌 경우, 상기 메모리 컨트롤러는 상기 테일-트레일 테이블을 기반으로 상기 쓰기 메모리 블록을 할당하되,
    상기 테일-트레일 테이블은 다음 할당될 쓰기 메모리 블록의 물리적 어드레스 및 상기 다음 할당될 쓰기 메모리 블록과 대응되는 논리적 유닛의 관계를 포함하는 저장 장치.
KR1020120092912A 2012-08-24 2012-08-24 플래시 메모리를 기반으로 하는 저장 장치 및 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법 KR101993704B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120092912A KR101993704B1 (ko) 2012-08-24 2012-08-24 플래시 메모리를 기반으로 하는 저장 장치 및 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법
US13/974,627 US9645918B2 (en) 2012-08-24 2013-08-23 Storage devices including non-volatile memory and memory controller and methods of allocating write memory blocks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120092912A KR101993704B1 (ko) 2012-08-24 2012-08-24 플래시 메모리를 기반으로 하는 저장 장치 및 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법

Publications (2)

Publication Number Publication Date
KR20140026933A true KR20140026933A (ko) 2014-03-06
KR101993704B1 KR101993704B1 (ko) 2019-06-27

Family

ID=50149072

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120092912A KR101993704B1 (ko) 2012-08-24 2012-08-24 플래시 메모리를 기반으로 하는 저장 장치 및 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법

Country Status (2)

Country Link
US (1) US9645918B2 (ko)
KR (1) KR101993704B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190027279A (ko) * 2017-09-06 2019-03-14 에스케이텔레콤 주식회사 플래시 저장 장치에서의 선택적 소거 코딩을 이용한 데이터 손실 복원 방법 및 장치

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160162510A1 (en) * 2014-12-03 2016-06-09 International Business Machines Corporation Clone data management
KR20160070920A (ko) * 2014-12-10 2016-06-21 에스케이하이닉스 주식회사 맵 테이블을 갖는 컨트롤러 및 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법
US10684795B2 (en) * 2016-07-25 2020-06-16 Toshiba Memory Corporation Storage device and storage control method
KR102234725B1 (ko) * 2017-05-30 2021-04-02 에스케이하이닉스 주식회사 컨트롤러 및 메모리 시스템 및 메모리 시스템의 동작 방법
KR102456173B1 (ko) 2017-10-27 2022-10-18 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR20200104601A (ko) 2019-02-27 2020-09-04 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그것의 동작 방법
KR102421149B1 (ko) * 2018-01-02 2022-07-14 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR102410296B1 (ko) * 2017-11-06 2022-06-20 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
US10838629B2 (en) * 2018-09-24 2020-11-17 Western Digital Technologies, Inc. Solid state device with fast boot after ungraceful shutdown
KR102456176B1 (ko) 2020-05-21 2022-10-19 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11573891B2 (en) 2019-11-25 2023-02-07 SK Hynix Inc. Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device
KR20210104278A (ko) * 2020-02-17 2021-08-25 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11755476B2 (en) 2020-04-13 2023-09-12 SK Hynix Inc. Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device
KR102495910B1 (ko) 2020-04-13 2023-02-06 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
KR102406449B1 (ko) 2020-06-25 2022-06-08 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
KR102435253B1 (ko) 2020-06-30 2022-08-24 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11733931B1 (en) * 2020-07-13 2023-08-22 Meta Platforms, Inc. Software defined hybrid flash storage memory controller

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020108014A1 (en) * 2001-02-05 2002-08-08 M-Systems Flash Disk Pioneers Ltd. Method for fast wake-up of a flash memory system
US20080177935A1 (en) * 2007-01-18 2008-07-24 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US20090144477A1 (en) * 2007-11-29 2009-06-04 International Business Machines Corporation Method and system for adding or removing a logical unit of a usb mass storage device

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6170066B1 (en) 1995-09-29 2001-01-02 Intel Corporation Power-off recovery management for sector based flash media managers
KR100577380B1 (ko) 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
KR100449708B1 (ko) 2001-11-16 2004-09-22 삼성전자주식회사 플래시 메모리 관리방법
KR100526188B1 (ko) 2003-12-30 2005-11-04 삼성전자주식회사 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리
KR100704618B1 (ko) 2004-01-19 2007-04-10 삼성전자주식회사 플래시 메모리의 데이터 복구 장치 및 방법
KR101272642B1 (ko) 2005-08-03 2013-06-10 쌘디스크 코포레이션 플래시 메모리시스템 내의 데이터 저장 용량의 리클레이밍
EP1960863A2 (en) 2005-12-13 2008-08-27 SanDisk Corporation Logically-addressed file storage
KR100755700B1 (ko) 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법
KR101354152B1 (ko) 2006-12-18 2014-01-27 삼성전자주식회사 비휘발성 데이터 저장장치에 구비된 가상 파일 시스템의작업 스케줄링 방법 및 장치
KR101437397B1 (ko) 2007-10-31 2014-09-05 삼성전자주식회사 비휘발성 메모리 장치의 데이터 관리 방법 및 맵핑 테이블업데이트 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020108014A1 (en) * 2001-02-05 2002-08-08 M-Systems Flash Disk Pioneers Ltd. Method for fast wake-up of a flash memory system
US20080177935A1 (en) * 2007-01-18 2008-07-24 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US20090144477A1 (en) * 2007-11-29 2009-06-04 International Business Machines Corporation Method and system for adding or removing a logical unit of a usb mass storage device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190027279A (ko) * 2017-09-06 2019-03-14 에스케이텔레콤 주식회사 플래시 저장 장치에서의 선택적 소거 코딩을 이용한 데이터 손실 복원 방법 및 장치

Also Published As

Publication number Publication date
US9645918B2 (en) 2017-05-09
KR101993704B1 (ko) 2019-06-27
US20140059275A1 (en) 2014-02-27

Similar Documents

Publication Publication Date Title
KR101993704B1 (ko) 플래시 메모리를 기반으로 하는 저장 장치 및 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법
US11636032B2 (en) Memory system, data storage device, user device and data management method thereof
CN109213440B (zh) 存储器系统、存储器控制器及其操作方法
KR102413755B1 (ko) 리텐션 특성에 의한 성능 저하를 복구하는 저장 장치의 동작 방법 및 이를 포함하는 데이터 처리 시스템의 동작 방법
US10339046B1 (en) Data moving method and storage controller
US10782909B2 (en) Data storage device including shared memory area and dedicated memory area
US20100174853A1 (en) User device including flash and random write cache and method writing data
US20100211820A1 (en) Method of managing non-volatile memory device and memory system including the same
US20110208898A1 (en) Storage device, computing system, and data management method
US10061695B2 (en) Memory system and operating method thereof
KR20210111527A (ko) 메모리 시스템에서 가비지 컬렉션을 수행하는 장치 및 방법
US20110040930A1 (en) Method for Accessing Flash Memory Device and Memory System Including the Same
KR20100056750A (ko) 불휘발성 메모리 시스템 및 그것의 액세스 방법
KR20200019421A (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
KR20200114212A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN112306898A (zh) 存储设备、其操作方法及包括其的电子设备
KR20220103378A (ko) 메모리 시스템에 저장된 데이터를 처리하는 장치 및 방법
KR20220090020A (ko) 비휘발성 메모리 시스템이 생성한 메타데이터를 전송하는 장치 및 방법
KR20210124705A (ko) 메모리 시스템 내 맵 정보를 제어하는 장치 및 방법
KR20230098094A (ko) 메모리 디바이스의 조각 모음을 위한 시스템 및 방법
CN109002265B (zh) 一种数据处理的方法以及相关装置
KR101716348B1 (ko) 메모리 시스템, 그것의 동작 방법, 그리고 그것을 포함하는 컴퓨팅 시스템
KR20220086934A (ko) 비휘발성 메모리 시스템의 저널링 제어 장치 및 방법
KR20210142863A (ko) 데이터 처리 시스템의 동작 효율성을 높이기 위한 장치 및 방법
KR20220032826A (ko) 메모리 시스템 내 맵 정보를 제어 및 저장하는 장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right