KR101790165B1 - 메모리 시스템 및 그것의 메타 데이터 관리 방법 - Google Patents

메모리 시스템 및 그것의 메타 데이터 관리 방법 Download PDF

Info

Publication number
KR101790165B1
KR101790165B1 KR1020110079152A KR20110079152A KR101790165B1 KR 101790165 B1 KR101790165 B1 KR 101790165B1 KR 1020110079152 A KR1020110079152 A KR 1020110079152A KR 20110079152 A KR20110079152 A KR 20110079152A KR 101790165 B1 KR101790165 B1 KR 101790165B1
Authority
KR
South Korea
Prior art keywords
metadata
stored
log
memory device
log data
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020110079152A
Other languages
English (en)
Other versions
KR20130016941A (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 KR1020110079152A priority Critical patent/KR101790165B1/ko
Priority to US13/551,718 priority patent/US9195583B2/en
Publication of KR20130016941A publication Critical patent/KR20130016941A/ko
Application granted granted Critical
Publication of KR101790165B1 publication Critical patent/KR101790165B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

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

메모리 시스템 및 그에 대한 메타 데이터 관리 방법에 관하여 개시한다.
메타 데이터 관리 방법은 메타 데이터가 변경되는 경우에 로그 데이터를 구성하는 로그 엔트리 정보를 생성시키는 단계, 상기 생성되는 로그 엔트리 정보의 개수가 초기 설정된 임계 개수에 도달될 때 복수의 그룹으로 분할된 메타 데이터들 중에서 하나의 그룹의 메타 데이터를 선택하는 단계 및, 상기 선택된 하나의 그룹의 메타 데이터와 상기 로그 데이터를 비휘발성 메모리 장치에 저장하는 단계를 포함한다.

Description

메모리 시스템 및 그것의 메타 데이터 관리 방법{Memory system and meta data managing method thereof}
본 발명은 메모리 시스템 및 그에 대한 데이터 관리 방법에 관한 것으로서, 특히 메모리 시스템 및 그에 대한 메타 데이터 관리 방법에 관한 것이다.
비휘발성 메모리 장치는 전원이 차단되더라도 저장된 정보를 보존할 수 있는 메모리 장치이다. 비휘발성 메모리 장치의 일예로는 플래시 메모리 등이 있다. 메모리 시스템에서는 비휘발성 메모리 장치를 관리하기 위한 메타 데이터를 이용한다. 이에 따라서 메모리 시스템의 성능을 향상시키기 위하여 메타 데이터를 효율적으로 관리하는 기술이 필요하게 되었다.
본 발명의 목적은 메모리 시스템에서의 메타 데이터를 효과적으로 저장하여 복원하는 메타 데이터 관리 방법을 제공하는데 있다.
본 발명의 다른 목적은 메타 데이터를 효과적으로 관리하는 메모리 시스템을 제공하는데 있다.
본 발명의 기술적 사상의 일면에 따른 일실시 예에 의한 메타 데이터 관리 방법은 메타 데이터가 변경되는 경우에 로그 데이터를 구성하는 로그 엔트리 정보를 생성시키는 단계, 상기 생성되는 로그 엔트리 정보의 개수가 초기 설정된 임계 개수에 도달될 때 복수의 그룹으로 분할된 메타 데이터들 중에서 하나의 그룹의 메타 데이터를 선택하는 단계 및, 상기 선택된 하나의 그룹의 메타 데이터와 상기 로그 데이터를 비휘발성 메모리 장치에 저장하는 단계를 포함한다.
본 발명의 일실시 예에 따르면, 상기 분할된 하나의 그룹의 메타 데이터와 로그 데이터를 비휘발성 메모리 장치의 한 페이지에 함께 저장할 수 있다.
본 발명의 일실시 예에 따르면, 상기 하나의 그룹의 메타 데이터와 상기 로그 데이터를 비휘발성 메모리 장치의 서로 다른 페이지에 저장할 수 있다.
본 발명의 일실시 예에 따르면, 상기 분할된 메타 데이터 및 로그 데이터가 저장되는 순서를 나타내는 정보를 상기 비휘발성 메모리 장치에 저장하는 단계를 더 포함할 수 있다.
본 발명의 일실시 예에 따르면, 상기 로그 엔트리의 개수가 초기 설정된 임계 개수에 도달될 때 라운드-로빈(round-robin) 방식으로 돌아가면서 복수의 그룹으로 분할된 메타 데이터들 중에서 하나의 그룹의 메타 데이터를 선택할 수 있다.
본 발명의 일실시 예에 따르면, 상기 로그 엔트리의 개수가 초기 설정된 임계 개수에 도달될 때 복수의 그룹으로 분할된 메타 데이터들 중에서 메타 데이터 변경에 따라서 업데이트된 그룹의 메타 데이터들을 라운드-로빈(round-robin) 방식으로 돌아가면서 하나의 그룹의 메타 데이터를 선택할 수 있다.
본 발명의 일실시 예에 따르면, 상기 로그 데이터를 비휘발성 메모리 장치에 저장한 후에는 상기 로그 데이터를 구성하는 로그 엔트리 정보를 삭제하는 단계를 더 포함할 수 있다.
본 발명의 일실시 예에 따르면, 상기 비휘발성 메모리 장치에 저장된 로그 데이터를 이용하여 메타 데이터를 복원 처리하는 단계를 더 포함할 수 있다.
본 발명의 일실시 예에 따르면, 상기 메타 데이터를 복원 처리하는 단계는 메모리 시스템에서 비정상적인 파워 오프 상태가 발생되고 나서 파워 온 되는 경우에 실행될 수 있다.
본 발명의 일실시 예에 따르면, 상기 메타 데이터를 분할된 그룹 단위로 단계적으로 복원 처리할 수 있다.
본 발명의 일실시 예에 따르면, 상기 메타 데이터를 복원 처리하는 단계는 상기 비휘발성 메모리 장치에 저장된 순서대로 유효한 로그 데이터 및 그룹 단위의 메타 데이터를 읽어내는 단계 및, 상기 읽어낸 로그 데이터를 재생하여 상기 로그 데이터보다 이전에 저장된 그룹 단위의 유효한 메타 데이터를 복원 처리하는 단계를 포함할 수 있다.
본 발명의 일실시 예에 따르면, 상기 비휘발성 메모리 장치로부터 로그 데이터 및 메타 데이터를 읽어내는 프로세스와 상기 로그 데이터를 재생하여 메타 데이터를 복원시키는 프로세스를 동시에 수행할 수 있다.
본 발명의 기술적 사상의 다른 면에 따른 메모리 시스템은 데이터를 저장하는 비휘발성 메모리 장치, 복수의 그룹으로 분할된 메타 데이터 및 로그 데이터를 구성하는 로그 엔트리 정보를 일시적으로 저장하는 버퍼 메모리 및, 상기 비휘발성 메모리 장치에서의 메타 데이터 변경을 발생시키는 동작에 따라서 상기 버퍼 메모리에 저장된 메타 데이터를 업데이트하고, 상기 메타 데이터 변경에 상응하는 로그 엔트리 정보를 생성시켜 상기 버퍼 메모리에 저장하며, 상기 버퍼 메모리에 저장된 로그 엔트리 정보의 개수가 초기 설정된 임계 개수에 도달될 때 상기 버퍼 메모리에 저장된 복수의 그룹으로 분할된 메타 데이터들 중에서 순차적으로 선택된 하나의 그룹의 메타 데이터와 상기 로그 데이터를 상기 비휘발성 메모리 장치에 저장하는 메모리 컨트롤러를 포함한다.
본 발명의 일실시 예에 따르면, 상기 메모리 컨트롤러는 비정상적인 파워 오프 상태가 발생되고 나서 파워 온 되는 경우에 상기 비휘발성 메모리 장치에 저장된 순서대로 유효한 로그 데이터 및 그룹 단위의 메타 데이터를 읽어내고, 상기 읽어낸 로그 데이터를 재생하여 메타 데이터를 복원시킬 수 있다.
본 발명의 일실시 예에 따르면, 상기 메모리 컨트롤러는 상기 비휘발성 메모리 장치로부터 로그 데이터 및 메타 데이터를 읽어내는 프로세스와 로그 데이터를 재생하여 메타 데이터를 복원시키는 프로세스를 동시에 수행할 수 있다.
본 발명에 의하면 메타 데이터가 변경되어도 메타 데이터 전체를 비휘발성 메모리 장치에 쓰지 않고 분할된 일부분의 메타 데이터와 변경 사항을 담고 있는 로그 데이터를 비휘발성 메모리 장치에 쓰도록 메모리 시스템을 제어함으로써, 메타 데이터 저장 시간을 줄일 수 있는 효과가 발생된다.
그리고, 메타 데이터를 부분적으로 읽어내고, 로그 데이터를 이용하여 메타 데이터를 부분적으로 복원 처리함으로써, 메타 데이터 복원 시간을 줄일 수 있는 효과가 발생된다. 특히, 로그 데이터의 사이즈를 제한하면 메타 데이터 복원 시간을 일정하게 유지할 수 있는 효과가 발생된다.
도 1은 본 발명의 일실시 예에 따른 메모리 시스템의 구성도이다.
도 2는 도 1에 도시된 버퍼 메모리에 저장되는 정보들의 예를 도시한 것이다.
도 3은 도 1에 도시된 비휘발성 메모리 장치의 정보 저장 영역의 구조를 도시한 것이다.
도 4는 도 1에 도시된 비휘발성 메모리 장치의 세부적인 구성을 도시한 것이다.
도 5는 메모리 시스템의 소프트웨어 구조를 보여주는 도면이다.
도 6은 도 5에 도시된 플래시 변환 레이어(FTL)의 세부 구조를 보여주는 도면이다.
도 7은 비휘발성 메모리 장치에서의 메타 데이터 및 로그 데이터를 저장하는 예를 보여주는 도면이다.
도 8은 본 발명의 일실시 예에 따른 메타 데이터 관리 방법의 흐름도이다.
도 9는 본 발명의 일실시 예에 따른 분할된 메타 데이터와 로그 데이터를 순차적으로 비휘발성 메모리 장치에 저장하는 방법의 흐름도이다.
도 10은 본 발명의 일실시 예에 따른 메타 데이터 복원 방법의 흐름도이다.
도 11은 분할된 메타 데이터 및 로그 데이터가 도 14와 같이 비휘발성 메모리 장치에 저장된 상태에서 전원이 비정상적으로 차단된 경우에, 메타 데이터 복원 과정을 보여주는 흐름도이다.
도 12는 분할된 메타 데이터 및 로그 데이터가 도 15와 같이 비휘발성 메모리 장치에 저장된 상태에서 전원이 비정상적으로 차단된 경우에, 메타 데이터 복원 과정을 보여주는 흐름도이다.
도 13은 분할된 메타 데이터 및 로그 데이터가 도 16과 같이 비휘발성 메모리 장치에 저장된 상태에서 전원이 비정상적으로 차단된 경우에, 메타 데이터 복원 과정을 보여주는 흐름도이다.
도 14는 본 발명의 일실시 예에 따라 분할된 메타 데이터 및 로그가 순차적으로 비휘발성 메모리 장치에 저장되는 상태의 일 예를 보여주는 도면이다.
도 15는 본 발명의 일실시 예에 따라 분할된 메타 데이터 및 로그가 순차적으로 비휘발성 메모리 장치에 저장되는 상태의 다른 예를 보여주는 도면이다.
도 16은 본 발명의 다른 실시 예에 따라 분할된 메타 데이터 및 로그가 순차적으로 비휘발성 메모리 장치에 저장되는 상태의 일 예를 보여주는 도면이다.
도 17은 본 발명의 실시 예들에 따른 컴퓨터 시스템의 응용 예를 나타내는 블록도이다.
도 18은 본 발명의 실시 예들에 따른 메모리 카드의 응용 예를 나타내는 블록도이다.
도 19는 본 발명의 실시 예들에 따른 솔리드 스테이트 드라이브의 응용 예를 나타내는 블록도이다.
도 20은 본 발명의 실시 예들에 따른 메모리 시스템을 포함하는 네트워크 시스템의 응용 예를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다. 본 발명의 실시 예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 일실시 예에 따른 메모리 시스템의 구성도이다.
도 1에 도시된 바와 같이, 메모리 시스템(100)은 프로세서(110), 버퍼 메모리(120), 메모리 컨트롤러(130), 비휘발성 메모리 장치(140) 및, 호스트 인터페이스(150)를 포함한다.
프로세서(110)는 메모리 시스템의 전반적인 동작을 제어한다. 세부적으로, 호스트 기기로부터 수신되는 커맨드를 해독하고, 해독된 결과에 따른 동작을 수행하도록 메모리 시스템(100)을 제어한다.
호스트 인터페이스(150)는 메모리 시스템(100)과 접속되는 호스트 기기와의 데이터 교환 프로토콜을 구비하고 메모리 시스템(100)과 호스트 기기를 상호 연결한다. 호스트 인터페이스(150)는 SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 또는 SAS(Serial Attached Small Computer System) 인터페이스일 수 있다. 그러나 이는 예시일 뿐 이에 제한되는 것은 아니다.
메모리 컨트롤러(130)는 비휘발성 메모리 장치(140)와 전기적으로 연결되어 있다. 메모리 컨트롤러(130)는 비휘발성 메모리 장치(140)와 커맨드, 어드레스, 데이터 등을 주고받는다. 즉, 메모리 컨트롤러(130)는 독출 동작 시에는 독출 커맨드 및 어드레스를 비휘발성 메모리 장치(140)에 제공하고, 기입 동작 시에는 기입 커맨드, 어드레스, 그리고 데이터를 제공한다. 메모리 컨트롤러(130)는 버퍼 메모리(120)에 저장된 메타 데이터를 이용하여 호스트 기기로부터 수신되는 논리적 주소를 물리적 주소로 변환시키는 처리를 수행할 수 있다.
메타 데이터(meta data)란 사용자 데이터 또는 비휘발성 메모리 장치(140)를 관리하기 위하여 메모리 시스템(100)에서 생성된 데이터이다. 메타 데이터는 논리적 주소(Logical Address)를 비휘발성 저장 장치(140)의 물리적 어드레스(Physical Address)로 변환시키는데 이용되는 맵핑(mapping) 정보를 포함하고, 비휘발성 저장 장치(140)의 메모리 공간을 관리하기 위한 정보들도 포함할 수 있다.
메모리 컨트롤러(130)는 메모리 시스템(100)에 전원이 공급되면 비휘발성 메모리 장치(140)에 저장되어 있는 복수의 그룹(조각)으로 분할된 메타 데이터들을 순차적으로 읽어내어 버퍼 메모리(120)에 저장하기 위한 커맨드 및 어드레스를 생성시킨다. 메모리 컨트롤러(130)는 비휘발성 메모리 장치(140)에서의 메타 데이터 변경을 발생시키는 동작에 따라서 버퍼 메모리(120)에 저장된 메타 데이터를 업데이트하고, 메타 데이터 변경에 상응하는 로그 엔트리(log entry) 정보를 생성시켜 버퍼 메모리(120)에 저장하도록 메모리 시스템(100)을 제어한다. 로그 엔트리 정보에는 메타 데이터의 변경을 복원하는데 필요한 정보가 포함된다. 일 예로서, 로그 엔트리 정보는 메타 데이터의 변경이 발생한 동작을 나타내는 타입에 대한 정보 및 메타 데이터의 변경을 복원하기 위한 실질적인 데이터를 포함할 수 있다. 메타 데이터의 변경이 발생한 동작을 나타내는 타입에 대한 정보로는 라이트 동작, 블록 할당 동작, 페이지 복사 동작 등의 메타 데이터를 변경시킬 수 있는 모든 동작(operation)에 대한 타입을 정의하는 정보들이 포함될 수 있다. 그리고, 메타 데이터의 변경을 복원하기 위한 실질적인 데이터에는 논리적 주소, 이전 물리적 주소, 새로운 물리적 주소 등이 포함될 수 있다. 로그 데이터는 로그 엔트리 정보들로 구성된다.
메모리 컨트롤러(130)는 버퍼 메모리(120)에 저장된 로그 엔트리 정보의 개수가 초기 설정된 임계 개수에 도달될 때마다 버퍼 메모리(120)에 저장된 복수의 그룹으로 분할된 메타 데이터들 중에서 선택된 하나의 그룹의 메타 데이터와 로그 데이터를 비휘발성 메모리 장치(140)에 저장하도록 메모리 시스템(100)을 제어한다. 일 예로서, 버퍼 메모리(120)에 할당된 로그 엔트리 영역에 로그 엔트리 정보가 모두 채워질 때 버퍼 메모리(120)에 저장된 복수의 그룹으로 분할된 메타 데이터들을 라운드-로빈(round-robin) 방식으로 돌아가면서 하나의 그룹의 메타 데이터를 선택하고, 선택된 하나의 그룹의 메타 데이터와 로그 데이터를 비휘발성 메모리 장치(140)에 저장할 수 있다. 일 예로서, 도 2와 같이 메타 데이터가 (n+1)개 그룹인 MD_0 ~ MD_n 로 분할되어 저장되어 있는 경우에, MD_0부터 MD_n까지 라운드-로빈 방식으로 돌아가면서 순차적으로 한 그룹씩의 메타 데이터를 선택하여 로그 데이터와 함께 비휘발성 메모리 장치(140)에 저장할 수 있다. 비휘발성 메모리 장치(140)에 로그 데이터를 저장하고 나서, 메모리 컨트롤러(130)는 버퍼 메모리(120)에 저장된 로그 엔트리 정보들을 삭제한다. 이에 따라서, 버퍼 메모리(120)에 할당된 로그 엔트리 영역은 비워진다.
메모리 컨트롤러(130)는 비정상적인 파워 오프(power off) 상태가 발생되고 나서 파워 온(power on) 되는 경우에 비휘발성 메모리 장치(140)에 저장된 순서대로 유효한 로그 데이터 및 분할된 그룹 단위로 유효한 메타 데이터를 읽어내어 메타 데이터를 복원시키도록 메모리 시스템(100)을 제어한다. 여기에서, 비정상적인 파워 오프 상태는 메모리 시스템(100)으로 파워 오프 명령이 수신되지 않은 상태에서 메모리 시스템(100)에 공급되는 전원이 차단되는 상태를 의미한다.
메모리 컨트롤러(130)의 제어 동작에 따라서 수행되는 메타 데이터 관리 방법에 대해서는 아래의 흐름도 도 8 ~ 도 13에서 상세히 설명되어질 것이다.
참고적으로, 메모리 컨트롤러(130)와 버퍼 메모리(120)를 하나의 칩으로 설계할 수도 있다. 그리고, 프로세서(110)와 메모리 컨트롤러(130)를 하나의 칩으로 설계할 수도 있다. 또한, 프로세서(110), 버퍼 메모리(120), 메모리 컨트롤러(130) 비휘발성 메모리 장치(140) 및, 호스트 인터페이스(150)를 하나의 칩으로 설계할 수도 있다.
버퍼 메모리(120)에는 호스트 기기로부터 전송된 데이터 및 메모리 컨트롤러(130)에서 생성된 데이터가 임시로 저장되거나 호스트 기기로 전송될 데이터를 임시로 저장된다. 또한, 버퍼 메모리(120)에는 메타 데이터 및 로그 데이터를 저장할 수 있는 영역이 할당되어 있다. 버퍼 메모리(120)는 DRAM, SRAM 등으로 구현될 수 있다.
도 2는 버퍼 메모리(120)에 저장되는 정보들의 예를 도시한 것이다.
도 2를 참조하면, 버퍼 메모리(120)에는 복수개의 그룹으로 분할된 메타 데이터가 저장되는 예를 보여준다. 그리고, 버퍼 메모리(120)에 저장되는 로그 데이터는 제한된 개수의 로그 엔트리로 구성될 수 있다. 일 예로서, 메타 데이터를 비휘발성 메모리 장치(140)의 물리적인 페이지 저장 단위로 분할할 수 있다. 그리고, 멀티 플레인(multi-plane)에 걸쳐있는 페이지를 내부에서 임의의 크기로 분할하여 로그 데이터와 메타 데이터의 일부를 저장할 수도 있다. 또한, 비휘발성 메모리 장치(140)의 하나의 물리적인 페이지에 하나의 그룹의 메타 데이터와 로그 데이터를 함께 저장할 수 있도록 메타 데이터의 분할 사이즈와 로그 데이터를 구성하는 로그 엔트리의 개수를 결정할 수도 있다. 메타 데이터는 논리적 어드레스를 기준으로 복수개의 그룹으로 분할될 수 있다. 도 2를 참조하면, 메타 데이터가 (n+1)개 분할되어 있다는 것을 보여준다.
비휘발성 메모리 장치(140)를 플래시 메모리로 구현한 경우에, 플래시 메모리의 하나의 물리적인 페이지에 하나의 그룹의 메타 데이터(MD_i)와 로그 데이터를 함께 저장하는 일 예를 도 7에 도시하였다.
비휘발성 메모리 장치(140)는 비휘발성 반도체 메모리 장치로 구현될 수 있으며, 구체적으로 플래시 메모리, PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 등으로 구현될 수 있다.
도 3을 참조하면, 비휘발성 메모리 장치(140)의 저장 영역은 고정 정보 영역(31), 루트(root) 정보 영역(32) 및, 데이터 영역(33)으로 나눌 수 있다.
고정 정보 영역(31)에는 파일 시스템에 대한 정보, 버전, 블록 당 페이지 수 등의 비휘발성 메모리 장치(140)의 고유한 정보가 저장될 수 있다.
루트 정보 영역(32)에는 메타 데이터를 구성하는 메타 데이터 조각(그룹)들의 저장 순서에 대한 정보 및 메타 데이터가 저장된 위치 정보가 저장된다. 로그 데이터와 하나의 그룹의 메타 데이터가 한 페이지에 함께 저장되도록 로그 데이터의 로그 엔트리 개수와 메타 데이터의 분할 사이즈를 결정한 경우에는 로그 데이터가 저장되는 위치 정보를 별도로 루트 정보 영역(32)에 저장할 필요가 없다. 그러나, 분할된 메타 데이터와 로그 데이터를 페이지를 달리하여 저장하는 경우에는 하나의 그룹의 메타 데이터가 저장된 위치 정보와 로그 데이터가 저장된 위치 정보를 각각 루트 정보 영역(32)에 저장한다. 그리고, 로그 데이터와 메타 데이터가 각각 저장되는 시간에 대한 정보(time stamp) 또는 저장 순서에 대한 정보를 루트 정보 영역(32)에 저장할 수 있다. 또한, 루트 정보 영역(32)에는 정상적인 파워 오프가 되었는지를 나타내는 플래그 정보가 저장될 수 있다.
데이터 영역(33)에는 메타 데이터, 로그 데이터 및 사용자 데이터가 저장된다. 메타 데이터는 비휘발성 메모리 장치(140)인 플래시 메모리의 물리적인 페이지 저장 단위로 분할될 수 있다. 또한, 플래시 메모리의 하나의 물리적인 페이지에 하나의 그룹의 메타 데이터와 로그 데이터를 함께 저장할 수 있도록 메타 데이터의 분할 사이즈와 로그 데이터를 구성하는 로그 엔트리의 개수를 결정할 수도 있다. 그리고, 메타 데이터는 논리적 어드레스를 기준으로 복수개의 그룹으로 분할될 수 있다. 데이터 영역(33)을 메타 데이터 저장 영역과 사용자 데이터 영역으로 세분화하여 구분할 수도 있다.
일 예로서, 비휘발성 메모리 장치(140)를 플래시 메모리로 구현한 세부적인 구성을 도 4에 도시하였다.
도 4에 도시된 바와 같이, 플래시 메모리(140')는 셀 어레이(10), 페이지 버퍼(20), 제어 회로(30) 및 로우 디코더(40)를 포함한다.
셀 어레이(10)는 트랜지스터에 일정 전압을 인가하는 방식으로 데이터가 기입되는 영역이다. 셀 어레이(10)는 워드라인들(WL0~WLm-1) 및 비트라인들(BL0~BLn-1)이 교차한 곳에 형성된 메모리 셀들을 포함한다. 여기에서, m 및 n은 자연수이다. 도 4에서는 하나의 메모리 블록이 도시되어 있으나 셀 어레이(10)는 복수의 메모리 블록들을 포함할 수 있다. 각각의 메모리 블록들은 각 워드 라인들(WL0~WLm-1)에 대응되는 페이지들을 포함하고 있다. 그리고 페이지들 각각은 해당 워드라인에 연결된 복수의 메모리 셀들을 포함한다. 플래시 메모리(140')는 블록 단위로 소거 동작을 수행하고, 페이지 단위로 프로그램 동작 혹은 읽기 동작을 수행한다.
메모리 셀 어레이(10)는 셀 스트링(cell string) 구조를 갖는다. 각각의 셀 스트링은 스트링 선택 라인(String Selection Line; SSL)에 연결되는 스트링 선택 트랜지스터(SST), 복수의 워드라인들(WLO ~ WLm-1)에 각각 연결된 복수의 메모리 셀들(MC0 ~ MCm-1), 그리고 접지 라인(Ground Section Line; GSL)에 연결된 접지 선택 트랜지스터(GST)를 포함한다. 여기에서, 스트링 선택 트랜지스터(SST)는 비트라인과 스트링 채널 사이에 연결되고, 접지 선택 트랜지스터(GST)는 스트링 채널과 공통 소스 라인(Common Source Line; CSL) 사이에 연결된다.
페이지 버퍼(20)는 복수의 비트라인들(BL0~BLn-1)을 통해 셀 어레이(10)에 연결된다. 페이지 버퍼(20)는 선택된 워드라인에 연결된 메모리 셀들에 기입할 데이터를 임시로 저장하거나 또는 선택된 워드라인에 연결된 메모리 셀들로부터 독출된 데이터를 임시로 저장한다.
제어 회로(30)는 기입 또는 독출 동작 그리고 소거 동작에 필요한 각종 전압들을 생성하고, 제어 신호들을 수신하여 플래시 메모리(140')의 제반 동작을 제어한다.
로우 디코더(40)는 선택 라인들(SSL, GSL) 및 복수의 워드라인들(WL0~WLm-1)을 통해 셀 어레이(10)에 연결된다. 로우 디코더(20)는 기입 동작 또는 독출 동작 시 어드레스를 입력받고, 입력된 어드레스에 따라 어느 하나의 워드라인을 선택한다. 여기에서 선택된 워드라인에는 기입 동작이 수행되거나 또는 독출 동작이 수행될 메모리 셀들이 연결되어 있다.
또한, 로우 디코더(40)는 선택된 워드라인, 비선택된 워드라인들, 그리고 선택 라인들(SSL, GSL)로 프로그램 동작 또는 읽기 동작에 필요한 전압들(예를 들어, 프로그램 전압, 패스 전압, 읽기 전압, 스트링 선택 전압, 접지 선택 전압)을 인가한다.
각각의 메모리 셀은 한 비트의 데이터 혹은 2비트 이상의 데이터를 저장할 수 있다. 하나의 메모리 셀에 한 비트의 데이터를 저장하는 메모리 셀은 싱글 레벨 셀(Single Level Cell; SLC)이라고 불린다. 그리고, 하나의 메모리 셀에 2비트 이상의 데이터를 저장하는 메모리 셀은 멀티 레벨 셀(Multi Level Cell; MLC)이라고 불린다. 싱글 레벨 셀은 문턱 전압에 따라 소거 상태(Erase State) 또는 프로그램 상태(Program State)를 갖는다.
플래시 메모리(140')에서 데이터의 기입 및 독출은 페이지 단위로 수행되고, 전기적 소거는 블록 단위로 이루어진다. 또한, 기입 전에 블록의 전기적 소거 작업이 요구된다. 이에 따라서, 덮어쓰기가 불가능하다.
덮어쓰기가 불가능한 메모리 장치에서는 사용자 데이터를 사용자가 원하는 물리적 영역에 기입할 수 없다. 따라서 사용자로부터 기입 또는 독출을 위하여 액세스를 요청받는 경우, 사용자로부터 기입 또는 독출이 요청된 영역을 논리적 어드레스로, 실제로 데이터가 저장되어 있는 또는 데이터가 저장될 물리적 영역을 물리적 어드레스로 분류하여 사용자 데이터에 대한 논리적 어드레스를 물리적 어드레스로 변환시키는 어드레스 변환 동작이 필요하다.
도 5 ~ 도 6을 참조하여 메모리 시스템(100)에서 메타 데이터를 이용하여 어드레스를 변환하는 과정을 설명하기로 한다.
도 5는 메모리 시스템(100)의 소프트웨어 구조를 보여주는 블록도이다. 도 5에서는 일 예로서, 메모리 시스템(100)을 구성하는 비휘발성 메모리 장치(140)를 플래시 메모리로 구현한 경우의 메모리 시스템(100)의 소프트웨어 구조를 보여준다.
도 5를 참조하면, 메모리 시스템(100)은 애플리케이션(510), 파일 시스템(520), 플래시변환 계층(530), 그리고 플래시 메모리(540)순으로 소프트웨어 계층 구조를 갖는다.
애플리케이션(510)은 사용자의 입력에 응답하여 사용자 데이터를 가공하는 펌웨어를 의미한다. 예를 들어, 애플리케이션(510)은 워드 프로세서와 같은 문서 처리 소프트웨어, 계산 소프트웨어, 웹 브라우저와 같은 문서 뷰어가 될 수 있다. 애플리케이션(510)은 사용자의 입력에 응답하여 사용자 데이터를 처리하고, 처리된 사용자 데이터를 플래시 메모리(540)에 저장하기 위한 명령을 파일 시스템(520)에 전달한다. 애플리케이션(510)은 메모리 시스템(100) 외부의 호스트 기기에 위치 할 수 있다.
파일 시스템(520)은 플래시 메모리(540)에 사용자 데이터를 저장하기 위해 사용되는 구조 또는 소프트웨어를 의미한다. 파일 시스템(520)은 애플리케이션(510)으로부터의 명령에 응답하여, 사용자 데이터가 저장될 논리적 주소를 할당한다. 파일 시스템(520)의 일종으로 FAT(File Allocation Table) 파일 시스템, NTFS 등이 있다.
플래시 변환 계층(Flash Translation Layer; FTL, 530)은 파일 시스템으로부터 전달받은 논리적 주소를 플래시 메모리(540)에서의 읽기/쓰기 동작을 위한 물리적 주소로의 변환 과정을 수행한다. 플래시 변환 계층(530)은 세부적으로 도 6과 같이 구분될 수 있다.
도 6을 참조하면, 플래시 변환 계층(FTL; 530)은 주소 변환 계층(Address Translation Layer; ATL, 530-1), 가상 플래시 계층(Virtual Flash Layer; VFL, 530-2) 및 플래시 인터페이스 계층(Flash Interface Layer; FIL, 530-3)을 포함한다.
주소 변환 계층(530-1)은 파일 시스템(520)으로부터 전송된 논리적 주소(Logical Address; 일 예로서, LBA)를 논리적 페이지 주소(Logical Page Address)로 변환시킨다. 주소 변환 계층(530-1)은 호스트 기기에서 전송된 논리적 주소에 대하여 플래시 메모리(540)의 논리적 페이지 주소가 맵핑되어 있는 맵핑 정보를 이용하여 주소 변환 과정을 수행할 수 있다. 이러한 맵핑 정보는 메타 데이터에 포함되어 있으며, 메타 데이터는 플래시 메모리(540)에 저장되어 있다. 도 3을 참조하면, 메타 데이터의 저장 위치 정보는 루트 정보 영역(32)에 저장되어 있다. 따라서, 메모리 시스템(100)이 초기화되는 경우에 루트 정보 영역(32)에 저장된 데이터들을 독출하여 메타 데이터가 저장된 위치 정보를 찾아낼 수 있다. 도 1을 참조하면, 메모리 시스템(100)이 초기화될 때 플래시 메모리(540)로부터 읽어낸 메타 데이터는 버퍼 메모리(120)에 저장되고, 버퍼 메모리(120)에 저장된 메타 데이터를 이용하여 메모리 컨트롤러(130)에서 논리적 주소(Logical Address)를 논리적 페이지 주소(Logical Page Address)로 변환시킬 수 있다.
주소 맵핑 방법은 페이지 맵핑 방법 또는 블록 맵핑 방법을 이용할 수 있다. 페이지 맵핑 방법은 페이지 단위로 주소를 맵핑 동작을 수행하고, 블록 맵핑 방법은 블록 단위로 주소 맵핑 동작을 수행하는 방식이다. 또한, 페이지 맵핑과 블록 맵핑을 혼합한 혼합 맵핑 방법이 적용될 수도 있다.
메타 데이터에는 논리적 주소(Logical Address; 일 예로서 LBA)를 플래시 메모리(540)의 물리적 어드레스(Physical Address)인 블록 어드레스 및 페이지 어드레스로 변환시키기 위한 맵핑 정보가 포함되어 있다. 그리고, 메타 데이터에는 각 블록의 이레이즈 상태나 각 페이지의 유효성(validity)을 나타내는 정보가 포함될 수 있으며, 각 페이지에 대한 기입 회수 등에 대한 정보가 포함될 수도 있다.
가상 플래시 계층(530-2)은 메타 데이터에 포함된 맵핑 정보를 이용하여 주소 변환 계층(530-1)에서 변환된 논리적 페이지 주소를 가상 페이지 주소(Virtual Page Address)로 변환하는 과정을 수행한다. 여기에서, 가상 페이지 주소는 플래시 메모리(540)의 물리적 주소에 대응될 수 있다. 참고적으로, 가상 페이지 주소는 배드 블록(bad block)을 제외한 플래시 메모리(540)의 물리적 블록에 대응될 수 있다. 메타 데이터에는 논리적 페이지 주소를 가상 페이지 주소로 변환시키는 맵핑 정보가 포함되어 있다.
플래시 인터페이스 계층(530-3)은 가상 플래시 계층의 가상 페이지 주소를 플래시 메모리(540)의 물리적 페이지 주소로 변환하는 과정을 수행한다. 메타 데이터에는 가상 페이지 주소를 물리적 페이지 주소로 변환시키는데 필요한 정보가 포함되어 있다.
그리고, 플래시 메모리(540)의 하드웨어를 제어하기 위한 로우 레벨 드라이버, 플래시 메모리(540)로부터 읽어낸 데이터의 에러를 정정하기 위한 에러 정정 코드 처리 및 오류 블록 관리 등을 위한 모듈이 플래시 인터페이스 계층(530-3)에 포함될 수 있다.
다시 도 1을 참조하면, 위에서 설명한 메모리 컨트롤러(130)에서 수행되는 프로세스들의 일부를 프로세서(110)에서 수행되도록 펌웨어를 설계할 수도 있다. 그리고, 프로세서(110) 또는 메모리 컨트롤러(130)를 하나의 프로세서 또는 컨트롤러로 통합하여 메모리 시스템(100)을 제어하도록 설계할 수도 있다.
다음으로, 도 8의 흐름도를 참조하여 본 발명의 일실시 예에 따른 메타 데이터 관리 방법을 설명하기로 한다.
도 8에 도시된 메타 데이터 관리 방법은 도 1에 도시된 메모리 시스템(100)의 메모리 컨트롤러(130)에 제어 동작에 의하여 수행될 수 있다. 설명의 편의를 위하여 비휘발성 저장 장치(140)를 플래시 메모리로 한정하여 설명하기로 한다. 물론, 본 발명의 메모리 시스템(100)을 구성하는 비휘발성 저장 장치(140)가 플래시 메모리로 한정되지 않고, PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 등으로 구현될 수 있는 것은 당연한 사실이다.
우선, 메타 데이터를 복수의 그룹으로 분할하여 비휘발성 저장 장치(140)에 저장한다(S101). 메타 데이터는 논리적 주소를 플래시 메모리와 같은 비휘발성 저장 장치(140)의 물리적 어드레스(Physical Address)로 변환시키는데 이용되는 맵핑 정보를 포함하고, 비휘발성 저장 장치(140)의 저장 공간을 관리하기 위한 정보들도 포함할 수 있다. 일 예로서, 메타 데이터를 플래시 메모리의 물리적인 페이지 저장 단위로 분할할 수 있다. 또한, 도 7과 같이, 플래시 메모리의 하나의 물리적인 페이지에 하나의 그룹의 메타 데이터와 로그 데이터를 함께 저장할 수 있도록 메타 데이터의 분할 사이즈와 로그 데이터를 구성하는 로그 엔트리의 개수를 결정할 수도 있다. 일 예로서, 메타 데이터는 논리적 어드레스를 기준으로 복수개의 그룹으로 분할할 수 있다. 복수의 그룹으로 분할된 메타 데이터들은 각 그룹별로 플래시 메모리의 다른 물리적 주소에 저장한다. 이에 따라서, 도 3을 참조하면, 플래시 메모리의 루트 정보 영역(32)에는 각 그룹별 메타 데이터가 저장되어 있는 물리적 주소가 저장된다. 일 예로서, 각 그룹별 메타 데이터가 페이지 단위로 분할된 경우에는 각 그룹별 메타 데이터가 저장된 플래시 메모리의 블록에 대한 주소와 페이지 주소가 플래시 메모리의 루트 정보 영역(32)에 저장된다.
다음으로, 메모리 시스템(100)은 분할된 그룹 단위로 메타 데이터를 관리한다(S102). 세부적으로, 다음과 같이 방식으로 업데이트된 메타 데이터 및 로그 데이터를 플래시 메모리에 저장하고, 또한 저장된 로그 데이터를 이용하여 메타 데이터를 복원 처리한다.
(1) 본 발명에서 제안하는 메타 데이터 저장 방식
메타 데이터를 일정한 사이즈로 나누고 각각을 MD_i라고 하자. 여기에서, i=0,1,2,..., n 이고, (n+1)은 메타 데이터를 나눈 개수이다. 즉, 분할된 메타 데이터의 그룹 개수가 된다. 그리고, 분할된 하나의 그룹의 메타 데이터(MD_i)는 메타 데이터를 구성하는 하나의 메타 데이터 조각에 해당된다.
업데이트된 메타 데이터는 버퍼 메모리(120) 상에 바로 반영하고, 업데이트 되기 이전의 메타 데이터로부터 복원할 수 있는 로그 데이터는 따로 저장한다. 로그 데이터가 할당된 사이즈에 모두 저장되면, 로그 데이터와 분할된 일부 그룹의 메타 데이터를 선택하여 로그 데이터와 같은 시점에 플래시 메모리에 쓴다.
어떤 시점(Tj)에 플래시 메모리에 쓴 i번째 메타 데이터의 일부분을 MD_i(Tj)라고 하자. 그리고, 같은 시점(Tj)에 쓴 로그 데이터를 Log(Tj)라고 하자.
이 경우에 MD_i(Tj)는 Log(Tk) k≤j인 로그 데이터를 모두 반영하고 있다. 반대로, MD_i(Tj)는 Log(Tk) j<k인 로그 데이터를 재생(replay)하여 복원가능하다.
그리고, MD_i(Tj)를 플래시 메모리에 쓸 경우, j<k인 MD_i(Tk)는 무효한 메타 데이터가 된다.
위와 같은 특징을 이용하여 분할된 메타 데이터 조각 MD_i를 라운드-로빈(round-robin) 방식으로 선택하여 순차적으로 저장한다. 이 경우 MD_i1을 선택하여 쓴 시점(Tj1) 부터 한 바퀴 돌아서 MD_i2를 쓴 시점(Tj2)이 지난 후, j<j1인 Log(Tj)는 무효한 로그 데이터가 된다. 또한, 시점 (Tj1)과 (Tj2) 사이에 쓴 MD_i(Tj)에 대해서 MD_i(Tk)인 메타 데이터는 무효화된다.
(2) 본 발명에서 제안하는 메타 데이터 복원 방식
메타 데이터 조각을 플래시 메모리에 쓴 시점대로 읽어낸다. 다만, 유효한 조각만 읽어낸다. 그리고, 해당 시점에 플래시 메모리에 쓰인 로그 데이터가 유효한 것이면 해당 로그 데이터도 읽어낸다.
로그 데이터를 읽어낸 후에, 로그 데이터를 쓴 시점 이전에 쓴 메타 데이터 조각에 대해서는 로그 데이터를 이용하여 복원 처리한다. 만약에 로그 데이터에 남아있는 복원 정보가 아직 읽어내지 않은 메타 데이터 조각인 경우에는 복원 처리를 하지 않는다.
마지막에 쓰인 메타 데이터 조각과 로그 데이터를 읽을 때까지 위의 과정을 반복한다.
예를 들어, MD_i0(Tj0)를 처음에 플래시 메모리로부터 읽어내고, 시점(Tj1) 이전의 로그 데이터는 모두 무효화된 것으로 가정하고, 시점(Tj2) 까지 로그 데이터와 메타 데이터 조각이 쓰여졌다고 가정하자.
그러면, j0≤j≤j1를 만족하는 시점에 쓰인 메타 데이터 조각 MD_i(Tj)는 로그 데이터는 읽지 않고 메타 데이터만 읽는다. 또한, j1≤j≤j2를 만족하는 시점에 쓰인 메타 데이터 조각 MD_i(Tj)와 Log(Tj)를 같이 읽고, 읽어낸 Log(Tj)를 이용하여 MD_i(TK)(k<j)인 메타 데이터 조각에 대하여 복원 처리한다.
그리고, 로그 데이터를 재생하여 메타 데이터를 복원하는 과정과 메타 데이터 조각과 로그 데이터를 읽는 시간을 중첩시킬 수도 있다.
다음으로, 본 발명의 일실시 예에 따른 분할된 메타 데이터와 로그 데이터를 비휘발성 메모리 장치(일 예로서, 플래시 메모리)에 저장하는 방법에 대하여 도 9의 흐름도를 참조하여 설명하기로 한다.
도 9의 흐름도는 메모리 시스템(100)이 파워 온 된 상태에서 파워 오프가 발생되기 전까지의 메타 데이터를 관리하는 방법에 대하여 도 9의 흐름도를 참조하여 설명하기로 한다.
우선, 메모리 컨트롤러(130)는 비휘발성 메모리 장치(140)인 플래시 메모리로부터 분할된 메타 데이터 조각들을 읽어내어 버퍼 메모리(120)에 저장한다(S201). 즉, 메모리 시스템(100)이 파워 온 상태로 되면, 메모리 컨트롤러(130)는 플래시 메모리로부터 메타 데이터의 조각에 해당되는 각 그룹의 메타 데이터를 읽어내어 버퍼 메모리(120)에 저장한다. 일 예로서 메타 데이터가 4개의 그룹(조각)으로 분할된 경우에, 버퍼 메모리(120)에는 도 16 ~ 도 18과 같이 4개 그룹의 메타 데이터 MD_0, MD_1, MD_2, MD_3이 각각 저장된다.
참고적으로, 플래시 메모리의 루트 정보 영역(32)에 정상적인 파워 오프가 발생되었다는 것을 나타내는 플래그 정보가 저장되어 있는 경우에는 메타 데이터의 복원이 필요하지 않게 된다. 플래그 정보가 비정상적인 파워 오프가 발생된 것을 나타내는 경우에는 아래의 도 11 ~ 도 13의 흐름도에서 상세히 설명 되어질 것이다.
다음으로, 메모리 시스템(100)에서 메타 데이터 변경을 발생시키는 동작을 수행하는 경우에 버퍼 메모리(120)에 저장된 메타 데이터를 업데이트시키고 메타 데이터 변경에 상응하는 로그 엔트리 정보를 생성시켜 버퍼 메모리(120)에 저장한다(S202). 즉, 플래시 메모리에 데이터를 쓰는 동작과 같은 메타 데이터 변경을 발생시키는 동작을 수행하는 경우에, 메모리 컨트롤러(130)는 변경되는 메타 데이터가 포함된 그룹의 메타 데이터를 버퍼 메모리(120)로부터 찾아내어 해당 그룹의 메타 데이터를 업데이트시킨다. 이와 더불어, 메모리 컨트롤러(130)는 로그 엔트리 정보를 생성시켜 버퍼 메모리(120)에 저장한다. 로그 엔트리 정보에는 메타 데이터의 변경이 발생한 동작을 나타내는 타입에 대한 정보 및 메타 데이터의 변경을 복원하기 위한 실질적인 데이터를 포함할 수 있다.
다음으로, 메모리 컨트롤러(130)는 생성된 로그 엔트리 정보의 개수가 초기 설정된 임계 개수(Vth)에 도달되는지를 판단한다(S203). 일 예로서, 버퍼 메모리(120)에 할당된 로그 엔트리 영역에 로그 엔트리 정보가 모두 채워졌는지 여부로 로그 엔트리 정보의 개수가 초기 설정된 임계 개수(Vth)에 도달되는지를 판단할 수도 있다.
단계203(S203)의 판단 결과 로그 엔트리 정보의 개수가 초기 설정된 임계 개수(Vth)에 도달되지 않은 경우에는 단계202(S202)로 피드백 된다.
만일, 단계203(S203)의 판단 결과 로그 엔트리 정보의 개수가 초기 설정된 임계 개수(Vth)에 도달된 경우에, 메모리 컨트롤러(130)는 버퍼 메모리(120)에 저장된 복수 그룹의 메타 데이터 중에서 하나의 그룹의 메타 데이터를 선택한다(S204). 일 예로서, 모든 그룹의 메타 데이터에 대하여 라운드-로빈(round-robin) 방식으로 돌아가면서 순차적으로 선택할 수 있다. 다른 예로서, 업데이트가 발생된 그룹의 메타 데이터에 대해서만 라운드-로빈(round-robin) 방식으로 돌아가면서 순차적으로 선택할 수도 있다.
다음으로, 단계204(S204)에서 선택한 하나의 그룹의 메타 데이터와 로그 데이터를 버퍼 메모리(120)에서 읽어내어 비휘발성 메모리 장치(140)인 플래시 메모리에 저장한다(S205).
다음으로, 단계205(S205)에서 저장된 메타 데이터에 관련된 루트 정보를 플래시 메모리에 저장하고, 버퍼 메모리(120)에 저장된 로그 엔트리 정보를 삭제한다(S206). 여기에서, 메타 데이터에 관련된 루트 정보에는 메타 데이터 및 로그 데이터가 저장된 플래시 메모리의 물리적 위치 정보 및 그룹별 메타 데이터의 저장 순서에 대한 정보가 포함될 수 있다.
다음으로, 메모리 시스템(100)에서 파워 오프가 발생되는지를 판단하여(S207) 파워 오프가 발생된 경우에는 단계를 종료하고, 그렇지 않은 경우에는 단계202(S202)로 피드백 된다. 참고적으로, 정상적인 파워 오프 상태가 발생된 경우에는 버퍼 메모리(120)에서 업데이트된 모든 그룹의 메타 데이터를 비휘발성 메모리 장치(140)에 저장하고 나서 메모리 시스템(100)에 공급되는 전원을 차단시킬 수 있다.
도 9의 흐름도에 따라서 플래시 메모리에 로그 데이터와 메타 데이터가 저장되는 예를 도 14 ~ 도 16에 도시하였다.
일 예로서, 4개 그룹의 메타 데이터 MD_0 ~ MD_3이 라운드-로빈 방식으로 돌아가면서 선택되고, 선택된 하나의 그룹의 메타 데이터와 로그 데이터가 함께 비휘발성 메모리 장치(플래시 메모리)에 저장되는 경우의 예를 도 14 및 도 15에 도시하였다.
다른 예로서, 업데이트된 그룹의 메타 데이터에 대해서만 라운드-로빈 방식으로 돌아가면서 선택하고, 선택된 하나의 그룹의 메타 데이터와 로그 데이터가 함께 비휘발성 메모리 장치(플래시 메모리)에 저장되는 경우의 예를 도 16에 도시하였다.
도 14를 참조하면, 로그 엔트리 영역에 로그 엔트리 정보가 모두 채워지는 첫 번째 시점의 로그 데이터를 Log_0라 하고, 이 때 선택된 메타 데이터 조각이 0번 그룹의 메타 데이터 MD_0인 경우에 (MD_0, Log_0)가 첫 번째 시점에 플래시 메모리에 동시에 저장된다. 첫 번째 시점에 플래시 메모리에 MD_0이 저장되면 플래시 메모리에 이전에 저장되어 있던 MD_0은 무효화된다. 참고적으로, 무효화된 메타 데이터 조각에는 빗금을 쳤다.
로그 엔트리 영역에 로그 엔트리 정보가 모두 채워지는 두 번째 시점의 로그 데이터를 Log_1이라 하고, 이 때 선택된 메타 데이터 조각이 1번 그룹의 메타 데이터 MD_1인 경우에 (MD_1, Log_1)가 두 번째 시점에 플래시 메모리에 동시에 저장된다. 두 번째 시점에 플래시 메모리에 MD_1이 저장되면 플래시 메모리에 이전에 저장되어 있던 MD_1은 무효화된다.
로그 엔트리 영역에 로그 엔트리 정보가 모두 채워지는 세 번째 시점의 로그 데이터를 Log_2라 하고, 이 때 선택된 메타 데이터 조각이 2번 그룹의 메타 데이터 MD_2인 경우에 (MD_2, Log_2)가 세 번째 시점에 플래시 메모리에 동시에 저장된다. 세 번째 시점에 플래시 메모리에 MD_2가 저장되면 플래시 메모리에 이전에 저장되어 있던 MD_2는 무효화된다.
다음으로, 도 15를 참조하면, 로그 엔트리 영역에 로그 엔트리 정보가 모두 채워지는 첫 번째 시점의 로그 데이터를 Log_0라 하고, 이 때 선택된 메타 데이터 조각이 0번 그룹의 메타 데이터 MD_0인 경우에 (MD_0, Log_0)가 첫 번째 시점에 플래시 메모리에 동시에 저장된다. 첫 번째 시점에 플래시 메모리에 MD_0이 저장되면 플래시 메모리에 이전에 저장되어 있던 MD_0은 무효화된다. 참고적으로, 무효화된 메타 데이터 조각에는 빗금을 쳤다.
로그 엔트리 영역에 로그 엔트리 정보가 모두 채워지는 두 번째 시점의 로그 데이터를 Log_1이라 하고, 이 때 선택된 메타 데이터 조각이 1번 그룹의 메타 데이터 MD_1인 경우에 (MD_1, Log_1)가 두 번째 시점에 플래시 메모리에 동시에 저장된다. 두 번째 시점에 플래시 메모리에 MD_1이 저장되면 플래시 메모리에 이전에 저장되어 있던 MD_1은 무효화된다.
로그 엔트리 영역에 로그 엔트리 정보가 모두 채워지는 세 번째 시점의 로그 데이터를 Log_2라 하고, 이 때 선택된 메타 데이터 조각이 2번 그룹의 메타 데이터 MD_2인 경우에 (MD_2, Log_2)가 세 번째 시점에 플래시 메모리에 동시에 저장된다. 세 번째 시점에 플래시 메모리에 MD_2가 저장되면 플래시 메모리에 이전에 저장되어 있던 MD_2는 무효화된다.
로그 엔트리 영역에 로그 엔트리 정보가 모두 채워지는 네 번째 시점의 로그 데이터를 Log_3라 하고, 이 때 선택된 메타 데이터 조각이 3번 그룹의 메타 데이터 MD_3인 경우에 (MD_3, Log_3)가 네 번째 시점에 플래시 메모리에 동시에 저장된다. 세 번째 시점에 플래시 메모리에 MD_3이 저장되면 플래시 메모리에 이전에 저장되어 있던 MD_3은 무효화된다. 네 번째 시점에서 모든 그룹의 메타 데이터가 선택되어 플래시 메모리에 저장된다.
로그 엔트리 영역에 로그 엔트리 정보가 모두 채워지는 다섯 번째 시점의 로그 데이터를 Log_0라 하고, 0번 그룹의 메타 데이터 MD_0이 선택되어 (MD_0, Log_0)가 다섯 번째 시점에 플래시 메모리에 동시에 저장된다. 다섯 번째 시점에 플래시 메모리에 (MD_0, Log_0)가 저장되면 플래시 메모리에 이전에 저장되어 있던 (MD_0, Log_0)은 무효화된다.
도 16을 참조하면, 로그 엔트리 영역에 로그 엔트리 정보가 모두 채워지는 시점에 업데이트된 그룹의 메타 데이터가 MD_1과 MD_3인 경우에 로그 엔트리 정보가 모두 채워질 때마다 MD_1과 MD_3이 라운드-로빈 방식으로 선택되고, 선택된 하나의 그룹의 메타 데이터와 로그 데이터 순차적으로 플래시 메모리에 저장되는 예를 보여준다.
다음으로, 본 발명의 일실시 예에 따른 메타 데이터 복원 방법을 도 10의 흐름도를 참조하여 설명하기로 한다.
우선, 메모리 컨트롤러(130)는 메모리 시스템(100)이 파워 온(power on) 되는지를 판단한다(S301).
단계301(S301)의 판단 결과 메모리 시스템(100)이 파워 온 된 경우에, 비휘발성 메모리 장치(140, 일 예로서 플래시 메모리)에 저장된 순서에 따라서 그룹 단위로 유효한 메타 데이터 및 로그 데이터를 독출한다(S302). 만일, 플래시 메모리에 유효한 로그 데이터가 저장되어 있지 않은 경우에는 유효한 메타 데이터만을 그룹별로 독출한다. 메타 데이터와 로그 데이터가 저장된 위치 정보 및 저장 순서에 대한 정보는 플래시 메모리의 루트 정보 영역(32)으로부터 얻을 수 있다.
다음으로, 메모리 컨트롤러(130)는 독출된 로그 데이터를 이용하여 메타 데이터를 순차적으로 복원 처리한다(S303). 일 예로서, 독출된 로그 데이터에 근거하여 로그 데이터보다 이전에 저장된 유효한 메타 데이터를 복원 처리할 수 있다. 그리고, 로그 데이터 및 메타 데이터를 독출하는 프로세스와 로그 데이터를 재생하여 메타 데이터를 복원시키는 프로세스를 수행하는 시간을 중첩시킬 수 있다.
그러면, 본 발명의 일실시 예에 따른 메타 데이터 복원 방법의 구체적인 예를 도 11 ~ 도 13의 흐름도를 참조하여 설명하기로 한다.
도 11은 도 14와 같이 비휘발성 저장 장치(140)에 메타 데이터와 로그 데이터가 저장된 상태에서 T1 시점에 비정상적인 파워 오프가 발생된 경우에 메타 데이터를 복원하는 동작을 보여주는 흐름도이다.
메모리 컨트롤러(130)는 메모리 시스템(100)이 파워 온 되는지를 판단한다(S401).
메모리 시스템(100)이 파워 온 되는 경우에 메모리 컨트롤러(130)는 비휘발성 메모리 장치(140, 일 예로서 플래시 메모리)의 루트 정보 영역(32)에 저장된 메타 데이터와 로그 데이터의 위치 정보 및 저장 순서에 대한 정보를 검색하고, 검색된 정보를 이용하여 플래시 메모리에 저장된 순서대로 유효한 그룹의 메타 데이터를 독출한다.
도 14를 참조하면 MD_3이 시간적으로 가장 먼저 플래시 메모리에 저장된 유효한 메타 데이터임을 알 수 있다.
이에 따라서, MD_3을 읽어내어 버퍼 메모리(120)에 저장한다(S402).
MD_3 다음에 (MD_0, Log_0)가 플래시 메모리에 저장되었으므로, (MD_0, Log_0)를 읽어내어 버퍼 메모리(120)에 저장한다(S403).
Log_0이 쓰여진 시점 이전에 MD_3이 플래시 메모리에 쓰여졌으므로, Log_0에 근거하여 버퍼 메모리(120)에 저장된 MD_3을 복원 처리하고, (MD_0, Log_0) 다음에 플래시 메모리에 저장된 (MD_1, Log_1)을 읽어내어 버퍼 메모리(120)에 저장한다(S404). 총 메타 복원 시간을 단축시키기 위하여 MD_3을 복원 처리하는 프로세스와 (MD_1, Log_1)를 읽어내는 프로세스를 동시에 수행할 수 있다.
Log_1이 쓰여진 시점 이전에 MD_0 및 MD_3이 플래시 메모리에 쓰여졌으므로, Log_1에 근거하여 버퍼 메모리(120)에 저장된 MD_0 및 MD_3을 각각 복원 처리하고, (MD_1, Log_1) 다음에 플래시 메모리에 저장된 (MD_2, Log_2)을 읽어내어 버퍼 메모리(120)에 저장한다(S405). MD_0 및 MD_3을 복원 처리하는 프로세스와 (MD_2, Log_2)를 읽어내는 프로세스를 동시에 수행할 수 있다.
Log_2가 쓰여진 시점 이전에 MD_1, MD_0 및 MD_3이 플래시 메모리에 쓰여졌으므로, Log_2에 근거하여 버퍼 메모리(120)에 저장된 MD_1, MD_0 및 MD_3을 각각 복원 처리한다(S406). 도 14를 참조하면, (MD_2, Log_2) 이후에 플래시 메모리에 저장된 메타 데이터 및 로그 데이터가 없으므로 복원 과정을 종료한다.
도 12는 도 15와 같이 메타 데이터와 로그 데이터가 저장된 상태에서 T2 시점에 비정상적인 파워 오프가 발생된 경우에 메타 데이터를 복원하는 동작을 보여주는 흐름도이다.
메모리 컨트롤러(130)는 메모리 시스템(100)이 파워 온 되는지를 판단한다(S501).
메모리 시스템(100)이 파워 온 되는 경우에 메모리 컨트롤러(130)는 비휘발성 메모리 장치(140, 일 예로서 플래시 메모리)의 루트 정보 영역(32)에 저장된 메타 데이터와 로그 데이터의 위치 정보 및 저장 순서에 대한 정보를 검색하고, 검색된 정보를 이용하여 플래시 메모리에 저장된 순서대로 유효한 메타 데이터를 독출한다.
도 15를 참조하면 MD_1이 시간적으로 가장 먼저 플래시 메모리에 저장된 유효한 메타 데이터임을 알 수 있다.
이에 따라서, (MD_1, Log_1)를 읽어내어 버퍼 메모리(120)에 저장한다(S502). 가장 먼저 플래시 메모리에 저장된 유효한 데이터를 읽어낼 때 로그 데이터는 읽어내지 않아도 상관이 없다. 이에 따라서, MD_1만을 읽어내어 버퍼 메모리(120)에 저장할 수도 있다.
(MD_1, Log_1) 다음에 (MD_2, Log_2)가 플래시 메모리에 저장되었으므로, (MD_2, Log_2)를 읽어내어 버퍼 메모리(120)에 저장한다(S503).
Log_2가 쓰여진 시점 이전에 MD_1이 플래시 메모리에 쓰여졌으므로, Log_2에 근거하여 버퍼 메모리(120)에 저장된 MD_1을 복원 처리하고, (MD_2, Log_2) 다음에 플래시 메모리에 저장된 (MD_3, Log_3)을 읽어내어 버퍼 메모리(120)에 저장한다(S504). MD_1을 복원 처리하는 프로세스와 (MD_3, Log_3)를 읽어내는 프로세스를 동시에 수행할 수 있다.
Log_3이 쓰여진 시점 이전에 MD_2 및 MD_1이 플래시 메모리에 쓰여졌으므로, Log_3에 근거하여 버퍼 메모리(120)에 저장된 MD_2 및 MD_1을 각각 복원 처리하고, (MD_3, Log_3) 다음에 플래시 메모리에 저장된 (MD_0, Log_0)을 읽어내어 버퍼 메모리(120)에 저장한다(S505). MD_2 및 MD_1을 복원 처리하는 프로세스와 (MD_0, Log_0)를 읽어내는 프로세스를 동시에 수행할 수 있다.
Log_0이 쓰여진 시점 이전에 MD_3, MD_2 및 MD_1이 플래시 메모리에 쓰여졌으므로, Log_0에 근거하여 버퍼 메모리(120)에 저장된 MD_3, MD_2 및 MD_1을 각각 복원 처리한다(S506). 도 15를 참조하면, (MD_0, Log_0) 이후에 플래시 메모리에 저장된 메타 데이터 및 로그 데이터가 없으므로 복원 과정을 종료한다.
도 13은 도 16과 같이 메타 데이터와 로그 데이터가 저장된 상태에서 T3 시점에 비정상적인 파워 오프가 발생된 경우에 메타 데이터를 복원하는 동작을 보여주는 흐름도이다.
메모리 컨트롤러(130)는 메모리 시스템(100)이 파워 온 되는지를 판단한다(S601).
메모리 시스템(100)이 파워 온 되는 경우에 메모리 컨트롤러(130)는 비휘발성 메모리 장치(140, 일 예로서 플래시 메모리)의 루트 정보 영역(32)에 저장된 메타 데이터와 로그 데이터의 위치 정보 및 저장 순서에 대한 정보를 검색하고, 검색된 정보를 이용하여 플래시 메모리에 저장된 순서대로 유효한 메타 데이터를 독출한다.
도 16을 참조하면 MD_0이 시간적으로 가장 먼저 플래시 메모리에 저장된 유효한 메타 데이터임을 알 수 있다.
이에 따라서, MD_0을 읽어내어 버퍼 메모리(120)에 저장한다(S602).
MD_0 다음에 유효한 MD_2가 플래시 메모리에 저장되었으므로, MD_2를 읽어내어 버퍼 메모리(120)에 저장한다(S603).
MD_2 다음에 유효한 (MD_3, Log_3)이 플래시 메모리에 저장되었으므로, (MD_3, Log_3)를 읽어내어 버퍼 메모리(120)에 저장한다(S604).
Log_3이 쓰여진 시점 이전에 MD_2 및 MD_0이 플래시 메모리에 쓰여졌으므로, Log_3에 근거하여 버퍼 메모리(120)에 저장된 MD_2 및 MD_0을 각각 복원 처리하고, (MD_3, Log_3) 다음에 플래시 메모리에 저장된 (MD_1, Log_1)을 읽어내어 버퍼 메모리(120)에 저장한다(S605). MD_2 및 MD_0을 복원 처리하는 프로세스와 (MD_1, Log_1)를 읽어내는 프로세스를 동시에 수행할 수 있다.
Log_1이 쓰여진 시점 이전에 MD_3, MD_2 및 MD_0이 플래시 메모리에 쓰여졌으므로, Log_1에 근거하여 버퍼 메모리(120)에 저장된 MD_3, MD_2 및 MD_0을 각각 복원 처리한다(S606). 도 16을 참조하면, (MD_1, Log_1) 이후에 플래시 메모리에 저장된 메타 데이터 및 로그 데이터가 없으므로 복원 과정을 종료한다.
메모리 시스템에서 비정상적으로 파워 오프가 발생된 경우에 위에서 설명한 바와 같은 동작에 의하여 메타 데이터를 복원할 수 있게 된다.
본 발명에 따르면, 메모리 시스템(100)에 일정한 데이터 패턴을 쓰기 위한 데이터와 명령을 호스트 기기에서 메모리 시스템(100)에 인가하고 나서, 메모리 시스템(100)을 구성하는 비휘발성 메모리 장치(140)로 전송되어 쓰여지는 데이터를 확인할 때 메타 데이터가 특정 사이즈 단위로 일정하게 쓰여진다는 사실을 알 수 있다.
또한, 본 발명에 따르면 메타 데이터 복원 과정에서는 비휘발성 메모리 장치(140)로부터 분할된 각 그룹의 메타 데이터를 특정 시간 간격을 두고 순차적으로 읽어내어 버퍼 메모리(120)에 저장된다는 사실을 알 수 있다. 특정 시간 간격은 복원 처리하는데 쓰인 로그 양에 따라 달라지지만 메타 데이터를 읽은 순서대로 대체로 증가하는 추세를 보인다.
도 17은 본 발명의 실시 예에 따른 컴퓨터 시스템 장치를 나타내는 블록도이다.
본 발명의 실시 예에 따른 컴퓨터 시스템(1000)은 버스(1600)에 전기적으로 연결된 프로세서(CPU, 1200), RAM(1300), 사용자 인터페이스(UI, 1400) 및 메모리 시스템(1100)을 구비한다. 메모리 시스템(1100)은 메모리 컨트롤러(1110) 및 메모리 장치(1120)를 포함한다. 메모리 장치(1120)에는 프로세서(1200)에 의해서 처리된 또는 처리될 데이터가, 메모리 컨트롤러(1110)를 통해 저장될 것이다. 도 17의 메모리 시스템(1100)에는 본 발명의 실시 예에 따른 메모리 시스템(100)이 적용될 수 있다. 본 발명의 실시 예에 따른 컴퓨터 시스템(1000)은 파워 공급 장치(1500)를 더 구비할 수 있다.
본 발명의 실시 예에 따른 컴퓨터 시스템(1000)은 모바일 장치인 경우, 컴퓨터 시스템의 파워 공급 장치(1500)는 배터리 일 수 있으며, 베이스밴드 칩셋(baseband chipset)과 같은 모뎀이 추가적으로 제공될 수도 있다. 또한, 본 발명의 실시 예에 따른 컴퓨터 시스템 장치(1000)에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명한 사항인 바, 더 자세한 설명은 생략한다.
도 18은 본 발명의 실시 예에 따른 메모리 카드를 나타내는 블록도이다.
도 18을 참조하면, 본 발명의 실시 예에 따른 메모리 카드(2000)는, 메모리 컨트롤러(2020) 및 메모리 장치(2010)를 구비한다. 메모리 컨트롤러(2020)는 입출력 수단(2030)을 통해 수신되는 외부의 호스트의 요청에 응답하여 메모리 장치(2010)로의 데이터 기입 또는 메모리 장치(2010)로부터의 데이터 독출을 제어한다. 본 발명의 실시 예에 따른 메모리 카드(2000)의 메모리 컨트롤러(2020)는 상기와 같은 제어 동작을 수행하기 위해, 각각 호스트 및 메모리 장치(2010)와의 인터페이스를 수행하는 인터페이스 및 RAM 등을 구비할 수 있다. 본 발명의 실시 예에 따른 메모리 카드(2000)는 도 1의 메모리 시스템(100)으로 구현될 수 있다.
도 18의 메모리 카드(2000)는 컴팩트 플래시 카드(CFC: Compact Flash Card), 마이크로 드라이브(Micro drive), 스마트 미디어 카드(SMC: Smart Media Card) 멀티미디어 카드(MMC: Multimedia Card), 보안 디지털 카드(SDC: Security Digital Card), 메모리 스틱(Memory Stick), 및 USB 플래시 메모리 드라이버 등으로 구현될 수 있다.
도 19는 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD: Solid State Drive)를 나타내는 도면이다.
도 19를 참조하면, 본 발명의 실시 예에 따른 SSD(3000)는 SSD 컨트롤러(3020) 및 메모리 장치(3010)를 포함한다. SSD 컨트롤러(3020)는 프로세서(3021), RAM(3022), 호스트 인터페이스(3023) 및 메모리 컨트롤러(3024)를 구비할 수 있다. SSD 컨트롤러(3020) 및 메모리 장치(3010)는 도 1에 도시된 메모리 시스템(100)으로 구현될 수 있다.
프로세서(3021)는 호스트 기기(미도시)의 요청(명령, 어드레스, 데이터)에 응답하여 메모리 컨트롤러(3024)가 메모리 장치(3010)와 데이터를 송수신 하도록 제어한다. 본 발명의 실시 예에 따른 SSD의 프로세서(3021) 및 메모리 컨트롤러(3024)는 하나의 ARM 프로세서로 구현될 수도 있다. SSD 제어 동작에 필요한 데이터는 RAM(3022)에 로딩될 수 있다. 또한, 메모리 장치(3010)에서 읽어낸 데이터 또는 메모리 장치(3010)에 쓰여질 데이터를 일시적으로 RAM(3022)에 저장할 수 있다.
호스트 인터페이스(3023)는 호스트의 요청을 수신하여 프로세서(3022)로 전송하거나, 메모리 장치(3010)로부터 전송된 데이터를 호스트로 전송한다. 호스트 인터페이스(3023)는USB(Universal Serial Bus), MMC(Man Machine Communication), PCI-E(Peripheral Component Interconnect-Express), SATA(Serial Advanced Technology Attachment), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Device Interface), 그리고 IDE(Intelligent Drive Electronics) 등과 같은 다양한 인터페이스 프로토콜로, 호스트와 인터페이스 할 수 있다.
도 20은 SSD를 포함하는 서버 시스템 및 네트워크 시스템을 나타내는 도면이다.
도 20을 참조하면, 본 발명의 실시 예에 따른 네트워크 시스템(4000)은 네트워크를 통해 연결되는 서버 시스템(4100) 및 다수의 단말들(4200_1~4200_n)을 포함할 수 있다. 본 발명의 실시 예에 따른 서버 시스템(4100)은 네트워크에 연결되는 다수의 단말들(4200_1~4200_n)로부터 수신되는 요청을 처리하는 서버(4120) 및 단말들(4200_1~4200_n)로부터 수신되는 요청에 대응되는 데이터를 저장하는 SSD를 포함할 수 있다. 이때, 도 20의 SSD(4110)는 도 19의 SSD(3000)일 수 있다. 즉, 도 20의 SSD(4110)는 SSD 컨트롤러(3020) 및 메모리 장치(3010)로 구현될 수 있다.
한편, 상기에서 설명된 본 발명에 따른 플래시 메모리 시스템은 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 본 발명에 따른 메모리 시스템은 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 MetricQuad 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), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100 : 메모리 시스템 110 : 프로세서
120 : 버퍼 메모리 130 : 메모리 컨트롤러
140 : 비휘발성 메모리 장치 150 : 호스트 인터페이스
160 : 버스 1000 : 컴퓨터 시스템
1100 : 메모리 컨트롤러 1120 : 메모리 장치
1200 : 프로세서 1300 : RAM
1400 : 사용자 인터페이스 1500 : 파워 공급 장치
2000 : 메모리 카드 2010 : 메모리 장치
2020 : 메모리 컨트롤러 3000 : 솔리드 스테이트 드라이브(SSD)
3010 : 메모리 장치 3020 : SSD 컨트롤러
3021 : 프로세서 3022 : RAM
3023 : 호스트 인터페이스 3024 : 메모리 컨트롤러
4000 : 네트워크 시스템 4100 : 서버 시스템
4110 : SSD 4120 : 서버
4200_1 ~ 4200_n : 다수의 단말들

Claims (20)

  1. 비휘발성 메모리 장치로부터 복수의 그룹으로 분할된 초기 설정된 사이즈의 메타 데이터 조각들을 읽어내어 버퍼 메모리에 저장하는 단계;
    메타 데이터가 변경되는 경우에 로그 데이터를 구성하는 로그 엔트리 정보를 생성시키는 단계;
    상기 생성되는 로그 엔트리 정보의 개수가 초기 설정된 임계 개수에 도달될 때 상기 버퍼 메모리에 저장되어 있는 복수의 그룹으로 분할된 메타 데이터 조각들 중에서 하나의 그룹의 메타 데이터 조각을 선택하는 단계;
    상기 선택된 하나의 그룹의 메타 데이터 조각과 상기 로그 데이터를 각각 상기 비휘발성 메모리 장치에 저장하는 단계; 및
    상기 로그 데이터를 상기 비휘발성 메모리 장치에 저장한 후에 상기 버퍼 메모리에서 상기 로그 데이터를 구성하는 로그 엔트리 정보를 삭제하는 단계를 포함하고,
    상기 로그 엔트리 정보는 상기 메타 데이터의 변경을 복원하는데 필요한 정보를 포함하며,
    상기 하나의 그룹의 메타 데이터 조각을 선택하는 단계는 상기 버퍼 메모리에 저장된 상기 복수의 그룹으로 분할된 메타 데이터 조각들 중에서 업데이트 발생 유무에 관계없이 라운드-로빈 방식에 따라 순차적으로 하나의 그룹의 메타 데이터 조각을 선택하는 것을 특징으로 하는 메타 데이터 관리 방법.
  2. 제1항에 있어서, 상기 선택된 하나의 그룹의 메타 데이터 조각과 상기 로그 데이터를 비휘발성 메모리 장치의 한 페이지에 함께 저장하는 것을 특징으로 하는 메타 데이터 관리 방법.
  3. 제1항에 있어서, 상기 선택된 하나의 그룹의 메타 데이터 조각과 상기 로그 데이터를 상기 비휘발성 메모리 장치의 서로 다른 페이지에 저장하는 것을 특징으로 하는 메타 데이터 관리 방법.
  4. 제1항에 있어서, 상기 선택된 하나의 그룹의 메타 데이터 조각 및 로그 데이터가 저장되는 순서를 나타내는 정보를 상기 비휘발성 메모리 장치에 저장하는 단계를 더 포함함을 특징으로 하는 메타 데이터 관리 방법.
  5. 제1항에 있어서, 상기 로그 엔트리의 개수가 초기 설정된 임계 개수에 도달될 때 복수의 그룹으로 분할된 메타 데이터 조각들 중에서 메타 데이터 변경에 따라서 업데이트된 그룹의 메타 데이터 조각들을 라운드-로빈(round-robin) 방식으로 돌아가면서 하나의 그룹의 메타 데이터를 선택하는 것을 특징으로 하는 메타 데이터 관리 방법.
  6. 제1항에 있어서, 상기 비휘발성 메모리 장치에 저장된 로그 데이터를 이용하여 메타 데이터를 복원 처리하는 단계를 더 포함함을 특징으로 하는 메타 데이터 관리 방법.
  7. 제6항에 있어서, 상기 메타 데이터를 복원 처리하는 단계는 메모리 시스템에서 비정상적인 파워 오프 상태가 발생되고 나서 파워 온 되는 경우에 실행되는 것을 특징으로 하는 메타 데이터 관리 방법.
  8. 제6항에 있어서, 상기 메타 데이터를 복원 처리하는 단계는
    상기 비휘발성 메모리 장치에 저장된 순서에 따라서 로그 데이터 및 그룹 단위의 메타 데이터 조각을 읽어내는 단계; 및
    상기 읽어낸 로그 데이터를 재생하여 상기 로그 데이터보다 이전에 저장된 그룹 단위의 메타 데이터 조각을 복원 처리하는 단계를 포함함을 특징으로 하는 메타 데이터 관리 방법.
  9. 제6항에 있어서, 상기 메타 데이터를 복원 처리하는 단계는
    제1 시점에 저장된 제1 로그 데이터를 재생하여 상기 제1 로그 데이터보다 이전에 저장된 그룹 단위의 메타 데이터 조각을 복원 처리하는 동작과 상기 제1 시점 보다 늦은 제2 시점에 저장된 제2 로그 데이터 및 그룹 단위의 메타 데이터 조각을 읽어내는 동작을 동시에 수행하는 것을 특징으로 하는 메타 데이터 관리 방법.
  10. 제1항에 있어서, 상기 로그 엔트리 정보는 상기 메타 데이터의 변경이 발생되는 동작을 나타내는 타입에 대한 정보 및 상기 메타 데이터의 변경을 복원하기 위한 데이터를 포함함을 특징으로 하는 메타 데이터 관리 방법.
  11. 제10항에 있어서, 상기 메타 데이터의 변경이 발생되는 동작을 나타내는 타입에 대한 정보는 적어도 라이트 동작, 블록 할당 동작 또는 페이지 복사 동작에 대한 타입을 정의하는 정보를 포함함을 특징으로 하는 메타 데이터 관리 방법.
  12. 제10항에 있어서, 상기 메타 데이터의 변경을 복원하기 위한 데이터는 논리적 주소, 이전 물리적 주소 및 새로운 물리적 주소에 대한 정보를 포함함을 특징으로 하는 메타 데이터 관리 방법.
  13. 제1항에 있어서, 상기 선택된 하나의 그룹의 메타 데이터 조각을 상기 비휘발성 메모리 장치에 저장하고 나서, 상기 비휘발성 메모리 장치에 이전에 저장되어 있던 상기 선택된 하나의 그룹의 메타 데이터 조각과 동일한 그룹의 메타 데이터 조각을 무효화 처리하는 것을 특징으로 하는 메타 데이터 관리 방법.
  14. 데이터 및 복수의 그룹으로 분할된 초기 설정된 사이즈의 메타 데이터 조각들을 저장하는 비휘발성 메모리 장치;
    상기 복수의 그룹으로 분할된 메타 데이터 조각 및 로그 데이터를 구성하는 로그 엔트리 정보를 일시적으로 저장하는 버퍼 메모리; 및
    메타 데이터 변경을 발생시키는 동작에 따라서 상기 버퍼 메모리에 저장된 그룹 단위의 메타 데이터 조각들의 업데이트 동작, 로그 엔트리 정보를 생성시켜 상기 버퍼 메모리에 저장하는 동작 및, 상기 버퍼 메모리에 저장된 로그 엔트리 정보의 개수가 초기 설정된 임계 개수에 도달될 때 상기 버퍼 메모리에 저장된 복수의 그룹으로 분할된 메타 데이터 조각들 중에서 하나의 그룹의 메타 데이터 조각과 상기 로그 데이터를 상기 비휘발성 메모리 장치에 저장하는 동작을 수행하는 메모리 컨트롤러를 포함하고,
    상기 메모리 컨트롤러는 상기 버퍼 메모리에 저장된 로그 엔트리 정보의 개수가 초기 설정된 임계 개수에 도달될 때 상기 버퍼 메모리에 저장된 복수의 그룹으로 분할된 메타 데이터 조각들 중에서 업데이트 발생 유무에 관계없이 라운드-로빈 방식에 따라 순차적으로 하나의 그룹의 메타 데이터 조각을 선택하고, 상기 선택된 하나의 그룹의 메타 데이터 조각과 로그 데이터를 함께 상기 비휘발성 메모리 장치에 저장하는 것을 특징으로 하는 메모리 시스템.
  15. 제14항에 있어서, 상기 메모리 컨트롤러는 비정상적인 파워 오프 상태가 발생되고 나서 파워 온 되는 경우에 상기 비휘발성 메모리 장치에 저장된 순서대로 로그 데이터 및 그룹 단위의 메타 데이터 조각을 읽어내고, 상기 읽어낸 로그 데이터를 재생하여 메타 데이터 조각을 복원시키는 것을 특징으로 하는 메모리 시스템.
  16. 제14항에 있어서, 상기 메모리 컨트롤러는 상기 로그 엔트리의 개수가 초기 설정된 임계 개수에 도달될 때 복수의 그룹으로 분할된 메타 데이터 조각들 중에서 메타 데이터 변경에 따라서 업데이트된 그룹의 메타 데이터 조각들을 라운드-로빈(round-robin) 방식으로 돌아가면서 하나의 그룹의 메타 데이터를 선택하고, 상기 선택된 하나의 그룹의 메타 데이터 조각과 로그 데이터를 함께 상기 비휘발성 메모리 장치에 저장하는 것을 특징으로 하는 메모리 시스템.
  17. 제14항에 있어서, 상기 메모리 컨트롤러는 상기 메타 데이터 변경을 발생시키는 동작에 따라서 상기 메타 데이터의 변경이 발생되는 동작을 나타내는 타입에 대한 정보 및 상기 메타 데이터의 변경을 복원하기 위한 데이터를 포함하는 상기 로그 엔트리 정보를 생성시켜 상기 버퍼 메모리에 저장하는 동작을 수행하는 것을 특징으로 하는 메모리 시스템.
  18. 제14항에 있어서, 상기 메모리 컨트롤러는 상기 로그 데이터를 상기 비휘발성 메모리 장치에 저장한 후에 상기 버퍼 메모리에서 상기 로그 데이터를 구성하는 로그 엔트리 정보를 삭제하는 동작을 수행하는 것을 특징으로 하는 메모리 시스템.
  19. 제14항에 있어서, 상기 메모리 컨트롤러는 상기 선택된 하나의 그룹의 메타 데이터 조각을 상기 비휘발성 메모리 장치에 저장하고 나서, 상기 비휘발성 메모리 장치에 이전에 저장되어 있던 상기 선택된 하나의 그룹의 메타 데이터 조각과 동일한 그룹의 메타 데이터 조각을 무효화 처리하는 것을 특징으로 하는 메모리 시스템.
  20. 제14항에 있어서, 상기 메모리 컨트롤러는 상기 버퍼 메모리에 저장된 로그 엔트리 정보의 개수가 초기 설정된 임계 개수에 도달될 때 상기 선택된 하나의 그룹의 메타 데이터 조각을 상기 비휘발성 메모리 장치의 제1위치에 저장하는 동작 및 상기 로그 데이터를 상기 비휘발성 메모리 장치의 제2위치에 저장하는 동작을 수행하고,
    상기 메타 데이터는 논리적 주소를 상기 비휘발성 메모리 장치의 물리적 주소를 변환시키기 위한 매핑 정보를 포함함을 특징으로 하는 메모리 시스템.
KR1020110079152A 2011-08-09 2011-08-09 메모리 시스템 및 그것의 메타 데이터 관리 방법 Active KR101790165B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110079152A KR101790165B1 (ko) 2011-08-09 2011-08-09 메모리 시스템 및 그것의 메타 데이터 관리 방법
US13/551,718 US9195583B2 (en) 2011-08-09 2012-07-18 Methods of managing meta data in a memory system and memory systems using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110079152A KR101790165B1 (ko) 2011-08-09 2011-08-09 메모리 시스템 및 그것의 메타 데이터 관리 방법

Publications (2)

Publication Number Publication Date
KR20130016941A KR20130016941A (ko) 2013-02-19
KR101790165B1 true KR101790165B1 (ko) 2017-11-20

Family

ID=47678262

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110079152A Active KR101790165B1 (ko) 2011-08-09 2011-08-09 메모리 시스템 및 그것의 메타 데이터 관리 방법

Country Status (2)

Country Link
US (1) US9195583B2 (ko)
KR (1) KR101790165B1 (ko)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11126379B2 (en) 2019-11-25 2021-09-21 SK Hynix Inc. Memory system
US11194520B2 (en) 2017-10-27 2021-12-07 SK Hynix Inc. Memory system and operating method thereof
US11366763B2 (en) 2019-02-27 2022-06-21 SK Hynix Inc. Controller including cache memory, memory system, and operating method thereof
US11436148B2 (en) 2020-06-30 2022-09-06 SK Hynix Inc. Memory controller and method of operating the same
US11449235B2 (en) 2020-06-25 2022-09-20 SK Hynix Inc. Storage device for processing merged transactions and method of operating the same
US11494313B2 (en) 2020-04-13 2022-11-08 SK Hynix Inc. Cache memory including dedicated areas, storage device and method for storing data in the dedicated areas of the cache memory
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
US11599464B2 (en) 2020-05-21 2023-03-07 SK Hynix Inc. Memory controller and method of operating the same
US11934309B2 (en) 2020-04-13 2024-03-19 SK Hynix Inc. Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device
US12118241B2 (en) 2017-10-27 2024-10-15 SK Hynix Inc. Memory controller, memory system, and operating method thereof

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130124778A1 (en) * 2011-11-10 2013-05-16 Greenliant Llc Method of storing host data and meta data in a nand memory, a memory controller and a memory system
CN104346292B (zh) * 2013-08-05 2017-10-24 慧荣科技股份有限公司 用来管理一记忆装置的方法、记忆装置与控制器
US9431113B2 (en) * 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
JP5482946B1 (ja) * 2013-08-09 2014-05-07 富士ゼロックス株式会社 画像出力システム及びプログラム
US9135113B2 (en) 2013-10-08 2015-09-15 Apple Inc. Recovery from programming failure in non-volatile memory
US9535628B2 (en) 2013-10-10 2017-01-03 Apple Inc. Memory system with shared file system
KR102094393B1 (ko) 2013-11-18 2020-03-27 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
TWI498902B (zh) * 2013-11-28 2015-09-01 Phison Electronics Corp 資料管理方法、記憶體儲存裝置及記憶體控制電路單元
US11194667B2 (en) 2014-02-07 2021-12-07 International Business Machines Corporation Creating a restore copy from a copy of a full copy of source data in a repository that is at a different point-in-time than a restore point-in-time of a restore request
US10176048B2 (en) 2014-02-07 2019-01-08 International Business Machines Corporation Creating a restore copy from a copy of source data in a repository having source data at different point-in-times and reading data from the repository for the restore copy
US11169958B2 (en) 2014-02-07 2021-11-09 International Business Machines Corporation Using a repository having a full copy of source data and point-in-time information from point-in-time copies of the source data to restore the source data at different points-in-time
US10372546B2 (en) 2014-02-07 2019-08-06 International Business Machines Corporation Creating a restore copy from a copy of source data in a repository having source data at different point-in-times
US9354872B2 (en) * 2014-04-24 2016-05-31 Xitore, Inc. Apparatus, system, and method for non-volatile data storage and retrieval
US10048962B2 (en) 2014-04-24 2018-08-14 Xitore, Inc. Apparatus, system, and method for non-volatile data storage and retrieval
US10387446B2 (en) 2014-04-28 2019-08-20 International Business Machines Corporation Merging multiple point-in-time copies into a merged point-in-time copy
CN104090858A (zh) * 2014-06-10 2014-10-08 中兴通讯股份有限公司 数据传输方法及装置
KR102403202B1 (ko) * 2015-03-13 2022-05-30 삼성전자주식회사 메타 데이터 관리자를 포함하는 메모리 시스템 및 동작 방법
KR102611292B1 (ko) * 2016-06-22 2023-12-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102475798B1 (ko) * 2016-07-14 2022-12-12 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102530262B1 (ko) * 2016-07-21 2023-05-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102739832B1 (ko) 2016-11-24 2024-12-09 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그의 동작 방법
KR20180058328A (ko) * 2016-11-24 2018-06-01 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
US11100996B2 (en) 2017-08-30 2021-08-24 Micron Technology, Inc. Log data storage for flash memory
US10997065B2 (en) 2017-11-13 2021-05-04 SK Hynix Inc. Memory system and operating method thereof
CN109976664B (zh) * 2017-12-28 2024-01-19 北京忆恒创源科技股份有限公司 固态存储设备的日志数据组织
US10372355B2 (en) 2017-12-29 2019-08-06 Micron Technology, Inc. Managing partial superblocks in a NAND device
US11204841B2 (en) * 2018-04-06 2021-12-21 Micron Technology, Inc. Meta data protection against unexpected power loss in a memory system
KR102549346B1 (ko) 2018-07-24 2023-06-28 삼성전자주식회사 솔리드 스테이트 드라이브 및 그의 메타 데이터 액세스 방법
KR102709146B1 (ko) 2018-08-09 2024-09-25 삼성전자주식회사 저장 장치의 데이터 액세스 방법, 데이터 관리 방법 및 이를 수행하는 저장 장치
KR102553261B1 (ko) * 2018-10-10 2023-07-07 삼성전자 주식회사 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 스토리지 장치, 및 상기 메모리 컨트롤러의 동작 방법
US11016889B1 (en) 2019-12-13 2021-05-25 Seagate Technology Llc Storage device with enhanced time to ready performance
KR20210115954A (ko) * 2020-03-17 2021-09-27 에스케이하이닉스 주식회사 컨트롤러 및 메모리 시스템
US11132140B1 (en) * 2020-04-24 2021-09-28 Seagate Technology, Llc Processing map metadata updates to reduce client I/O variability and device time to ready (TTR)
KR20240062319A (ko) * 2022-10-31 2024-05-09 삼성전자주식회사 플래시 메모리를 기반으로 하는 메모리 시스템 및 그것의 메타 데이터 관리 방법
US20240320143A1 (en) * 2023-03-20 2024-09-26 Micron Technology, Inc. Memory with improved incomplete active performance loss task completion detection

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050080762A1 (en) 2003-10-10 2005-04-14 Katsuya Nakashima File storage apparatus
US20090113112A1 (en) 2007-10-25 2009-04-30 Ye Kyung-Wook Data storage device, memory system, and computing system using nonvolatile memory device

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070096429A (ko) 2006-03-24 2007-10-02 부산대학교 산학협력단 빠른 마운팅을 지원하는 낸드 플래시 메모리에 적용되는파일시스템
JP2010152514A (ja) 2008-12-24 2010-07-08 Toshiba Corp メモリシステム
US8793429B1 (en) * 2011-06-03 2014-07-29 Western Digital Technologies, Inc. Solid-state drive with reduced power up time

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050080762A1 (en) 2003-10-10 2005-04-14 Katsuya Nakashima File storage apparatus
US20090113112A1 (en) 2007-10-25 2009-04-30 Ye Kyung-Wook Data storage device, memory system, and computing system using nonvolatile memory device

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11194520B2 (en) 2017-10-27 2021-12-07 SK Hynix Inc. Memory system and operating method thereof
US12118241B2 (en) 2017-10-27 2024-10-15 SK Hynix Inc. Memory controller, memory system, and operating method thereof
US11366763B2 (en) 2019-02-27 2022-06-21 SK Hynix Inc. Controller including cache memory, memory system, and operating method thereof
US11126379B2 (en) 2019-11-25 2021-09-21 SK Hynix Inc. Memory system
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
US12222855B2 (en) 2019-11-25 2025-02-11 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
US11494313B2 (en) 2020-04-13 2022-11-08 SK Hynix Inc. Cache memory including dedicated areas, storage device and method for storing data in the dedicated areas of the cache memory
US11934309B2 (en) 2020-04-13 2024-03-19 SK Hynix Inc. Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device
US12332784B2 (en) 2020-04-13 2025-06-17 SK Hynix Inc. Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device
US11599464B2 (en) 2020-05-21 2023-03-07 SK Hynix Inc. Memory controller and method of operating the same
US11449235B2 (en) 2020-06-25 2022-09-20 SK Hynix Inc. Storage device for processing merged transactions and method of operating the same
US11436148B2 (en) 2020-06-30 2022-09-06 SK Hynix Inc. Memory controller and method of operating the same

Also Published As

Publication number Publication date
KR20130016941A (ko) 2013-02-19
US9195583B2 (en) 2015-11-24
US20130042054A1 (en) 2013-02-14

Similar Documents

Publication Publication Date Title
KR101790165B1 (ko) 메모리 시스템 및 그것의 메타 데이터 관리 방법
KR102739997B1 (ko) 스토리지 장치 및 상기 스토리지 장치의 동작 방법
KR101888074B1 (ko) 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법
US8904090B2 (en) Non-volatile memory device, devices having the same, and method of operating the same
US8996959B2 (en) Adaptive copy-back method and storage device using same
US9747170B2 (en) Non-volatile multi-level cell memory system and method of performing adaptive data back-up in the system
US9075531B2 (en) Storage device
US8788894B2 (en) Method of enhancing error correction performance and storage device using the method
US20160179422A1 (en) Method of performing garbage collection and raid storage system adopting the same
KR20130078973A (ko) 메모리 장치의 불량 저장 영역 관리 방법 및 이를 이용한 저장 장치
CN109801669A (zh) 具有软读取挂起方案的存储器系统及其操作方法
KR20190138419A (ko) 메모리 시스템 및 그것의 동작방법
KR102475798B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20200011832A (ko) 메모리 시스템에서의 데이터 처리 방법 및 장치
KR20160050394A (ko) 메모리 시스템 및 상기 메모리 시스템의 동작 방법
KR20200074647A (ko) 메모리 시스템 및 그것의 동작방법
CN111352854B (zh) 存储装置、控制器及操作存储装置的方法
KR20240115798A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR20180111158A (ko) 메모리 시스템 및 그의 동작 방법
CN114596898A (zh) 存储器系统及其操作方法
KR20180076425A (ko) 컨트롤러 및 컨트롤러의 동작 방법
KR102234725B1 (ko) 컨트롤러 및 메모리 시스템 및 메모리 시스템의 동작 방법
KR101784816B1 (ko) 비휘발성 메모리 시스템
US11182108B2 (en) Memory system, memory controller, and operation method
KR20190102790A (ko) 컨트롤러 및 그 동작 방법과, 이를 포함하는 메모리 시스템

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20110809

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20160809

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20110809

Comment text: Patent Application

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20170929

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20171019

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20171020

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20210929

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20220927

Start annual number: 6

End annual number: 6

PR1001 Payment of annual fee