KR101579711B1 - 플래시 변환 층(ftl) 데이터베이스 저널링 기법들 - Google Patents
플래시 변환 층(ftl) 데이터베이스 저널링 기법들 Download PDFInfo
- Publication number
- KR101579711B1 KR101579711B1 KR1020157004728A KR20157004728A KR101579711B1 KR 101579711 B1 KR101579711 B1 KR 101579711B1 KR 1020157004728 A KR1020157004728 A KR 1020157004728A KR 20157004728 A KR20157004728 A KR 20157004728A KR 101579711 B1 KR101579711 B1 KR 101579711B1
- Authority
- KR
- South Korea
- Prior art keywords
- journaling
- data structure
- chunk
- volatile memory
- chunks
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Retry When Errors Occur (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
방법은 비휘발성 메모리 및 휘발성 메모리를 포함하는 저장 디바이스에서, 데이터 저장을 관리하기 위해 사용된 관리 정보를 비휘발성 메모리에 저장하는 적어도 하나의 데이터 구조를 유지시키되, 상기 데이터 구조의 적어도 일부가 휘발성 메모리에 저장되도록, 유지시키는 단계를 포함한다. 저널링 청크의 시퀀스는 저장 디바이스의 동작 동안 생성되고, 각각의 저널링 청크는 데이터 구조의 각자의 슬라이스, 및 시퀀스 내의 이전 저널링 청크 이후에 데이터 구조에서 발생한 하나 이상의 변화들을 포함한다. 저널링 청크들의 시퀀스는 비휘발성 메모리에 저장된다. 저장 디바이스에서의 정전에서 복구될 시, 데이터 구조는 저장된 저널링 청크들을 사용하여 복원된다.
Description
본 발명은 일반적으로 데이터 저장에 관한 것으로, 특히 비휘발성 저장 디바이스들에서 저널링(journaling)을 하는 방법들 및 시스템들에 관한 것이다.
다양한 메모리 시스템들은, 데이터를 저장하기 위해 플래시 메모리 등의 비휘발성 메모리를 사용한다. 플래시 메모리 디바이스들은 플래시 관리부 또는 플래시 변환 층(Flash translation layer, FTL)으로 지칭되는 관리 층에 의해 전형적으로 관리된다. 다른 테스크들 중에서, FTL은 정전(electrical power interruption)들 전후에 플래시 메모리의 동작을 전형적으로 관리한다.
본 명세서에 기술된 본 발명의 실시예는 비휘발성 메모리 및 휘발성 메모리를 포함하는 저장 디바이스에서 방법을 제공한다. 방법은 데이터 저장을 관리하기 위해 사용된 관리 정보를 비휘발성 메모리에 저장하는 적어도 하나의 데이터 구조를 유지시키되, 상기 데이터 구조의 적어도 일부가 휘발성 메모리에 저장되도록, 유지시키는 단계를 포함한다. 저널링 청크들(journaling chunks)의 시퀀스는 저장 디바이스의 동작 동안 생성되고, 각각의 저널링 청크는 데이터 구조의 각자의 슬라이스, 및 시퀀스 내의 이전 저널링 청크 이후에 데이터 구조에서 발생한 하나 이상의 변화들을 포함한다. 저널링 청크들의 시퀀스는 비휘발성 메모리에 저장된다. 저장 디바이스에서의 정전에서 복구될 시, 데이터 구조는 저장된 저널링 청크들을 사용하여 복원된다.
몇몇 실시예들에서, 데이터 구조는 논리적 주소들을 비휘발성 메모리 내의 각자의 물리적 저장 위치들에 맵핑하는 것을 포함한다. 추가로 또는 대안으로, 데이터 구조는 비휘발성 메모리의 각자의 메모리 블록들의 파라미터들의 데이터베이스를 포함한다.
개시된 실시예에서, 저널링 청크들의 시퀀스를 생성하는 단계는, 변화들을 축적하는 단계, 및 축적된 변화들이 미리 정의된 데이터 크기에 도달할 시에, 데이터 구조의 축적된 변화들 및 슬라이스를 포함한 저널링 청크를 저장하는 단계를 포함한다. 실시예에서, 저널링 청크들의 시퀀스를 생성하는 단계는, 주어진 저널링 청크에 저장된 변화들에, 주어진 저널링 청크에 저장된 데이터 구조의 슬라이스에 관련되지 않은 적어도 하나의 변화를 포함하는 단계를 포함한다.
또 다른 실시예에서, 저널링 청크들의 시퀀스를 생성하는 단계는, 연속적인 저널링 청크들에, 데이터 구조를 주기적으로 스캐닝하는 각자의 연속적인 슬라이스들을 저장하는 단계를 포함한다. 여전히 또 다른 실시예에서, 저널링 청크들의 시퀀스를 생성하는 단계는, 각각의 저널링 청크에, 각자의 슬라이스가 얻어지는 데이터 구조 내의 각자의 위치를 가리키는 표시(indication)를 저장하는 단계를 포함한다.
여전히 또 다른 실시예에서, 적어도 하나의 데이터 구조는 다수의 데이터 구조들을 포함하고 각각의 저널링 청크는 다수의 데이터 구조들의 각자의 슬라이스들을 포함한다. 계속해서 또 다른 실시예에서, 데이터 구조를 복원하는 단계는, 정전 이전에 비휘발성 메모리에 가장 최근에 기입된 마지막 저널링 청크를 확인하는 단계, 데이터 구조의 첫번째 유효 슬라이스(valid slice)를 포함하는 첫번째 저널링 청크를 확인하는 단계, 및 비휘발성 메모리에서 저널링 청크들을 복구하되, 확인된 첫번째 저널링 청크에서 확인된 마지막 저널링 청크까지 복구하는 단계를 포함한다. 저널링 청크들을 복구하는 단계는, 주어진 저널링 청크에서 판독된 주어진 변화를 적용하되, 주어진 변화에 의해 지칭되는 슬라이스가 이미 복구되었다는 것을 검증할 시에만, 적용하는 단계를 포함할 수 있다.
본 발명의 실시예에 따라서, 비휘발성 메모리, 휘발성 메모리 및 프로세서를 포함한 저장 디바이스가 추가적으로 제공된다. 프로세서는 데이터 저장을 관리하기 위해 사용된 관리 정보를 비휘발성 메모리에 저장하는 적어도 하나의 데이터 구조를 유지시키되, 상기 데이터 구조의 적어도 일부가 휘발성 메모리에 저장되도록, 유지시키고, 상기 저장 디바이스의 동작 동안, 저널링 청크들의 시퀀스를 생성하고 - 각각의 저널링 청크는 데이터 구조의 각자의 슬라이스, 및 시퀀스 내의 이전 저널링 청크 이후에 데이터 구조에서 발생한 하나 이상의 변화들을 포함함 -, 저널링 청크들의 시퀀스를 비휘발성 메모리에 저장하고 저장 디바이스에서의 정전에서 복구될 시, 저장된 저널링 청크들을 사용하여, 데이터 구조를 복원하도록 구성된다.
본 발명은 다음 도면들과 함께 그의 실시예들의 후속하는 상세한 설명들에서 보다 충분히 이해될 것이다.
도 1은 본 발명의 실시예에 따라, 메모리 시스템을 개략적으로 예시하는 블록 다이어그램이고;
도 2는 본 발명의 실시예에 따라, 데이터베이스 저널링 기법을 개략적으로 예시하는 다이어그램이고;
도 3은 본 발명의 실시예에 따라, 데이터베이스 저널링용 방법을 개략적으로 예시한 플로차트이며; 그리고
도 4는 본 발명의 실시예에 따라, 데이터베이스 복구 기법을 개략적으로 예시하는 다이어그램이다.
도 2는 본 발명의 실시예에 따라, 데이터베이스 저널링 기법을 개략적으로 예시하는 다이어그램이고;
도 3은 본 발명의 실시예에 따라, 데이터베이스 저널링용 방법을 개략적으로 예시한 플로차트이며; 그리고
도 4는 본 발명의 실시예에 따라, 데이터베이스 복구 기법을 개략적으로 예시하는 다이어그램이다.
개요
본 명세서에 기술된 본 발명의 실시예들은 비휘발성 저장 디바이스들에서 정전들에 맞선 보호를 위한 개선 방법들 및 시스템들을 제공한다.
몇몇 실시예들에서, 저장 디바이스는 NAND 플래시 메모리 등의 비휘발성 메모리, 및 비휘발성 메모리에서 데이터 저장을 관리하는 프로세서를 포함한다. 프로세서는 데이터 저장을 위해 사용되는 관리 정보를 비휘발성 메모리에 저장하는 적어도 하나의 데이터 구조를 유지시킨다. 데이터 구조는 예를 들어, 논리적/물리적 주소 변환 테이블(logical-to-physical address translation table) 및/또는 메모리 블록 파라미터 데이터베이스를 포함할 수 있다.
데이터 구조의 적어도 일부는 저장 디바이스의 랜덤 액세스 메모리(Random Access Memory, RAM) 등의 휘발성 메모리에 저장된다. 그러한 바와 같이, 데이터 구조는 정전에 맞서서 보호되어야 한다. 본 명세서에 기술된 몇몇 실시예들에서, 프로세서는 정기적인 저널링 기법을 적용함으로써, 데이터 구조를 보호한다.
전형적으로 구현될 시, 프로세서는 데이터 구조를 대량의 연속적인 슬라이스들로 분할한다. 저장 디바이스의 동작 동안, 프로세서는, 데이터 구조에서 일어나는 변화들을 점차적으로 축적한다. 축적된 변화들이 미리 정의된 데이터 크기에 도달할 시에, 프로세서는, 이전 저널링 청크 이후에 발생한 변화들을 포함하고 그리고 또한 데이터 구조의 그 다음 슬라이스를 포함하는 "저널링 청크"를 생성한다. 그 후, 프로세서는 저널링 청크를 비휘발성 메모리에 저장한다.
다시 말하면, 프로세서는 저널링 청크들의 시퀀스를 연속적으로 생성 및 저장하고, 그 결과 각각의 청크는 이전 청크 이후에 데이터 구조에서 발생한 변화들과 더불어, 데이터 구조의 각자의 슬라이스를 포함한다. 그러나, 주어진 청크에 저장된 변화들은 전체 데이터 구조에 관련될 수 있다(주어진 청크에 저장된 개별적인 슬라이스에는 반드시 관련되는 것이 아님).
저널링 청크들의 시퀀스는 정전의 이벤트에서 프로세서가 데이터 구조를 복원하는 것을 가능케 한다. 예시의 복구 기법은 이하에서 더 기술된다.
프로세서가 다량보다는 오히려 소량의 청크들 내의 데이터 구조 및 변화들을 백업하기 때문에, 개시된 저널링 기법은 저장 성능에서의 저하를 거의 또는 전혀 일으키지 않는다. 게다가, 이러한 기법은 정전 후에 프로세서가 데이터 구조를 고속으로 복원하는 것을 가능케 한다.
데이터 구조들의 슬라이스들이 빈번한 휴지기들(intervals)에서 백업되기 때문에, 백업되기에 필요한 변화들의 수는 상대적으로 적다. 결과적으로, 변화들의 적은 수가 복구 동안 적용되기에 필요할 뿐이다. 이러한 특징은 또한, 임의의 주어진 시간에서 비휘발성 메모리에 여전히 백업되지 않아왔던 변화들의 수, 즉, 정전으로 인해 손실될 변화들을 감소시킨다.
게다가, 청크 크기 및 청크 내의 개별적인 필드들의 크기들을 선택할 시의 유연성은, 운영시간 저장 성능과 복구 시간 간의 임의의 원하는 트레이드-오프에 대해 저널링 기법을 조정하는 것을 허용한다. 프로세서가 저널링 청크들을 저장하는 레이트(rate)는 전형적으로 가변적이고 활성 레벨에 의존한다: 집중적인 저장 동안, 변화들은 신속하게 축적되고, 저널링 청크들은 빠르게 채워지고 저널링 레이트는 높아진다. 아이들 시간들 동안, 변화들은 서서히 축적되고 이에 따라 저널링 레이트는 감소된다.
시스템 설명
도 1은 본 발명의 실시예에 따라, 메모리 시스템을 개략적으로 예시하는 블록 다이어그램이다. 본 예시에서, 메모리 시스템은 솔리드 스테이트 드라이브(Solid state Drive, SSD)(24)에 데이터를 저장하는 컴퓨터(20)를 포함한다. 컴퓨터(20)는, 예를 들어, 모바일, 태블릿 또는 퍼스널 컴퓨터를 포함할 수 있다. 컴퓨터는 호스트로 역할하는 중앙 프로세싱 유닛(Central Processing Unit, CPU)(26)을 포함한다.
대안 실시예들에서, 호스트는 임의의 다른 적합한 프로세서 또는 컨트롤러를 포함할 수 있고 저장 디바이스는 임의의 다른 적합한 디바이스를 포함할 수 있다. 예를 들어, 호스트는 기업용 저장 시스템의 저장 컨트롤러를 포함할 수 있고 저장 디바이스는 SSD 또는 SSD들의 어레이를 포함할 수 있다. 비휘발성 저장 디바이스들에 데이터를 저장하는 호스트들의 다른 예시들은 모바일 폰들, 디지털 카메라들, 미디어 플레이어들 및 제거 가능한 메모리 카드들 또는 디바이스들을 포함한다.
SSD(24)는 CPU(26)용 데이터를 비휘발성 메모리에, 본 예시에서는 하나 이상의 NAND 플래시 메모리 디바이스들(34)에 저장한다. 대안 실시예들에서, SSD(24) 내의 비휘발성 메모리는 예를 들어, NOR 플래시, 차지 트랩 플래시(Charge Trap Flash, CTF), 상 변화 RAM(Phase Change RAM, PRAM), 자기저항 RAM(Magnetoresistive RAM, MRAM) 또는 강유전체 RAM(Ferroelectric RAM, FeRAM) 등의 임의의 다른 적합한 타입의 비휘발성 메모리를 포함할 수 있다.
SSD 컨트롤러(30)는 SSD의 다양한 저장 및 관리 테스크들을 실행한다. SSD 컨트롤러는 또한 메모리 컨트롤러로 일반적으로 지칭된다. SSD 컨트롤러(30)는 CPU(26)와 통신을 하는 호스트 인터페이스(38), 플래시 디바이스들(34)과 통신을 하는 메모리 인터페이스(46), 및 SSD의 다양한 프로세싱 테스크들을 수행하는 프로세서(42)를 포함한다.
SSD(24)는 휘발성 메모리를, 본 예시에서는 랜덤 액세스 메모리(Random Access Memory, RAM)(50)를 더 포함한다. 도 1의 실시예에서, RAM(50)은 SSD 컨트롤러(30)의 일부로 도시되지만, RAM은 대안으로 SSD 컨트롤러에서 분리될 수 있다. RAM(50)은 예를 들어, 정적 RAM(Static RAM, SRAM), 동적 RAM(Dynamic RAM, DRAM), 2 개의 RAM 타입들의 조합, 또는 임의의 다른 적합한 타입의 휘발성 메모리를 포함할 수 있다.
SSD 컨트롤러(30), 및 특히 프로세서(42)는 하드웨어에서 구현될 수 있다. 대안으로, SSD 컨트롤러는 적합한 소프트웨어를 운영하는 마이크로프로세서, 또는 하드웨어 및 소프트웨어 요소들의 조합을 포함할 수 있다.
도 1의 구성은 개념의 명료성을 위해 전적으로 도시된 대표적인 구성이다. 임의의 다른 적합한 SSD 또는 다른 메모리 시스템 구성은 또한 사용될 수 있다. 다양한 인터페이스들, 어드레싱 회로들, 타이밍 및 시퀀싱 회로들, 및 디버깅 회로들과 같은, 본 발명의 원리들을 이해하기 위해 필요하지 않은 요소들이 명료함을 위해 도면에서 생략되었다. 몇몇 적용들, 예를 들면, 비-SSD 적용들에서, SSD 컨트롤러(30)의 기능들은 적합한 메모리 컨트롤러에 의해 수행된다.
도 1에 도시된 대표적인 시스템 구성에서, 메모리 디바이스들(34) 및 SSD 컨트롤러(30)는 별개의 집적 회로(Integrated Circuit, IC)들로서 구현된다. 그러나, 대안 실시예들에서, 메모리 디바이스들 및 SSD 컨트롤러는 단일 다-칩 패키지(Multi-Chip Package, MCP) 또는 시스템 온 칩(System on Chip, SoC) 내의 별개의 반도체 다이(die)들 상에 집적화될 수 있고 내부 버스에 의해 상호연결될 수 있다. 더욱이, 대안으로, SSD 컨트롤러 회로 몇몇 또는 모두는, 메모리 디바이스들(34) 중 하나 이상이 배치된 동일 다이 상에 놓여 있을 수 있다. 더욱이, 대안으로, SSD 컨트롤러(30)의 기능성 몇몇 또는 모두는 소프트웨어에서 구현될 수 있고 컴퓨터 내의 CPU(26) 또는 다른 프로세서에 의해 수행될 수 있다. 몇몇 실시예들에서, CPU(26) 및 SSD 컨트롤러(30)는 동일 다이 상에서, 또는 동일 디바이스 패키지 내의 별개의 다이들 상에서 제작될 수 있다.
몇몇 실시예들에서, 프로세서(42)는 본 명세서에 기술된 기능들을 수행하기 위해 소프트웨어에서 프로그래밍되는 범용 프로세서를 포함한다. 소프트웨어는 예를 들어 네트워크를 통해, 전자 형태로 프로세서에 다운로딩될 수 있거나, 그것은 대안으로 또는 추가로, 자기, 광학, 또는 전자 메모리 등의 비-일시적 유형 매체(non-transitory tangible media) 상에 제공되고/되거나 저장될 수 있다.
몇몇 실시예들에서, SSD 컨트롤러(30)의 프로세서(42)는, 플래시 디바이스들(34) 내의 데이터 저장을 관리하는, 소프트웨어에 전형적으로 구현된 관리 층을 운영한다. 관리 층은 플래시 변환 층(FTL) 또는 플래시 관리부로 지칭된다. 이러한 관리 층의 일부로서, 프로세서(42)는, 데이터 저장에 사용된 관리 정보를 플래시 디바이스들에 저장하는 하나 이상의 데이터 구조들을 유지시킨다. 프로세서는 SSD의 동작 동안 관리 정보를 연속적으로 업데이팅한다.
프로세서(42)는 임의의 적합한 수 및 타입들의 데이터 구조들을 유지시켜, 임의의 적합한 타입의 관리 정보를 담을 수 있다. 일 예시의 타입의 데이터 구조는, 호스트에 의해 규정된 논리적 주소들(논리적 블록 주소(Logical Block Address)들 - LBA들로도 지칭됨)을, 플래시 디바이스들(34) 내의 각자의 물리적 저장 위치들에 맵핑하는 논리적/물리적 주소 변환부를 포함한다.
또 다른 예시에서, 데이터 구조는 플래시 디바이스들(34)의 메모리 블록들의 파라미터들의 데이터베이스, 예를 들면, 메모리 블록들의 활용 정보, 블록 상태, 및/또는 메모리 블록들에 데이터가 프로그래밍되고 판독되기 위해 사용된 저장 파라미터들을 포함할 수 있다.
후속되는 설명에서, 프로세서(42)는 2 개의 데이터 구조들 - 논리적/물리적 주소 변환 테이블(가상/물리적 맵핑(Virtual-to-Physical mapping) - V2P라고도 지칭됨) 및 블록 데이터베이스(Block Database, BDB)를 유지시킨다. V2P 및 BDB 중 적어도 일부는 RAM(50)에 저장된다. 정전에 맞서 RAM(50)에 저장된 관리 정보를 보호하여 관리 정보의 손실을 막는 것은 중요하다. 많은 현실적인 경우들에서, 관리 정보의 손실은 거대 양의 저장 데이터에 심각한 손상을 입힐 수 있다.
강력한 저널링 기법
도 2는 본 발명의 실시예에 따라, 데이터베이스 저널링 기법을 개략적으로 예시하는 다이어그램이다. 본 예시는 V2P 테이블(60) 및 BDB(64)를 도시한다. 프로세서(42)는 V2P 테이블(60)을 다수의 슬라이스들(62)로 분할하고 BDB(64)를 다수의 슬라이스들(66)로 분할한다. 주어진 데이터 구조의 슬라이스들은 전형적으로 크기가 균일하다.
V2P 테이블 및 BDB를 플래시 디바이스들(34)에 백업하기 위해서, 프로세서(42)는 SSD의 동작 동안 저널링 청크들(68)의 시퀀스를 생성한다. 각각의 저널링 청크(68)는 V2P 테이블(60)의 각자의 슬라이스(62)를 저장하는 V2P 스냅샷 필드(snapshot field)(70), BDB(64)의 각자의 슬라이스(66)를 저장하는 BDB 스냅샷 필드(72), 및 이전 저널링 청크(68) 이후에 V2P 테이블에서 그리고 BDB에서 발생한 변화들을 저장하는 변화들 필드(74)를 포함한다. 실시예에서, 각각의 청크는 각자의 슬라이스들이 얻어지는 V2P 테이블 내의 그리고 BDB 내의 위치들을 가리키는 표시들을 포함한다.
전형적으로, 프로세서(42)는, 청크의 변화들 필드(74)가 완전하게 채워지자마자, 각각의 저널링 청크(68)를 플래시 디바이스들(34)에 저장한다. 다시 말하면, 프로세서(42)는 현재 청크의 변화들 필드(74)를, V2P 테이블에서 그리고 BDB에서 이루어진 변화들로 끊임없이 업데이팅한다. 변화들 필드가 채워질 시에, 즉, 축적된 변화들이 필드(74)의 크기에 도달할 시에, 프로세서(42)는 저널링 청크를 플래시 디바이스들(34)에 기입한다.
동작의 이러한 모드에서, 청크들을 저장하는 레이트는 가변적이며, 데이터 구조들의 가변성의 레벨에 의존한다. 아이들 시간들 동안, 변화들은 서서히 축적되고 필드(74)는 상대적으로 오랜 지속 시간 이후에 완전하게 채워진다. 집중적인 저장 활성 동안, 변화들은 빠르게 축적되고, 필드(74)는 빠르게 완전하게 채워지며, 그러므로, 플래시 디바이스들로 청크들을 기입하는 레이트는 증가하게 된다.
전형적으로, 프로세서(42)는 V2P 테이블(60) 및 BDB(64)를 한 슬라이스씩 주기적으로 스캐닝한다. 주어진 데이터 구조의 마지막 슬라이스를 청크(68)에 저장한 이후에, 프로세서(42)는 전형적으로 랩 어라운드(wrap around)를 하고 데이터 구조의 첫번째 슬라이스를 다시 백업하기 시작한다. 프로세서(42)는 가장 최근에 플래시 디바이스들로 백업된 슬라이스들(62 및 66)의 위치들을 추적하는 포인터들을 갖추고 있다. 주어진 데이터 구조의 말단에 도달하게 될 시에, 각자의 포인터는 데이터 구조의 시작에 대해 랩-어라운드를 한다.
청크들(68)을 저장하기 위해 필요한 메모리 공간은, 증분 변화들을 저장하기 위한 추가적인 메모리 공간과 더불어, 각각의 데이터 구조의 단일 인스턴스(single instance)를 저장하는 것을 전형적으로 허용하여야 한다. 전형적으로, 프로세서(42)는 저널링 청크들이 저장된, 플래시 디바이스들(34) 내의 위치들을 추적한다. 이러한 위치들은 전형적으로 플래시 디바이스들에 백업되는데, 그 이유는 이들이 정전의 이벤트에서 너무 많이 손실될 수 있기 때문이다.
주어진 청크(68)에서, 필드(74) 내의 변화들이 동일 청크의 필드들(70 및 72)에 저장된 특정 슬라이스들(62 및 66)에 반드시 관련되지 않는다라는 것을 주목하여야 한다. 일반적으로, 주어진 청크에 저장된 변화들은 데이터 구조들의 임의의 부분에 관련될 수 있다.
주어진 슬라이스(62 또는 66)를 청크(68)에 기입하는 것은, 전형적으로 원자의 동작으로 정의된다. 다시 말하면, 프로세서(42)는 주어진 슬라이스의 기입 동안, 데이터 구조들에 대한 임의의 변화들을 전형적으로 허용하지 않는다. 청크들(68)에 저장된 변화들은 다양한 타입들의 변화들을 포함할 수 있다. 그러나, 일반적으로, 변화들은 슬라이스들 및 변화들에 기반하여, 전체 데이터 구조의 복원을 가능케 하도록 정의된다.
도 3은 본 발명의 실시예에 따라, 데이터베이스 저널링용 방법을 개략적으로 예시한 플로차트이다. 방법은 초기화 단계(80)에서, 새로운 청크를 초기화하고 백업될 그 다음 슬라이스들(62 및 66)을 가리키기 위해 주기적인 포인터들을 증분시키는 것을 SSD 컨트롤러(30)의 프로세서(42)로 시작한다.
프로세서(42)는 청크 충전 단계(84)에서, 현재 청크를 그 다음의 데이터 구조 슬라이스들로 충전시킨다. 본 예시에서, 프로세서(42)는 현재 청크의 필드(70)에 그 다음의 V2P 테이블 슬라이스(62)를 복제하고 현재 청크의 필드(72)에는 그 다음의 BDB 테이블 슬라이스(66)를 복제한다.
프로세서(42)는 변화 축적 단계(88)에서, SSD에서의 데이터 저장 동안, 데이터 구조들에서(예를 들면, V2P 맵핑에서, 그리고 BDB에서) 실행되는 변화들을 축적하기 시작한다. 프로세서(42)는 현재 생성된 청크(68)의 변화들 필드(74)에 새로운 변화들을 추가한다. 프로세서(42)는 검사 단계(92)에서, 변화들 필드가 채워졌는지를 검사한다.
변화들 필드가 여전히 채워지지 않은 경우, 방법은 위를 향하여 단계(88)로 되돌아가고 프로세서(42)는 V2P 및 BDB 변화들을 계속해서 축적한다. 변화들 필드가 채워지는 경우, 프로세서(42)는 청크 저장 단계(96)에서, 현재 청크(68)를 플래시 디바이스들(34)에 저장한다. 그 후, 방법은 위를 향하여 단계(80)로 되돌아가서, 초기화하고 그 다음의 청크를 채우기 시작한다.
도 3의 플로는 명료성을 위해 전적으로 선택된 예시 플로이다. 대안 실시예들에서, 임의의 다른 적합한 동작들의 플로가 사용될 수 있다.
정전 후의 데이터베이스 복원
정전에서 복구될 시에, 프로세서(42)는 플래시 디바이스들(34)에 저장된 저널링 청크들을 사용하여, V2P 테이블(60) 및 BDB(64)를 복원한다. 예시 실시예에서, 프로세서(42)는 다음과 같이 (주어진 데이터 구조에 대해) 복구 프로세스를 수행한다:
· 프로세서(42)는 플래시 디바이스들에 기입된 가장 최근의 청크(68)를 확인한다. 이러한 청크는 마지막 청크로 지칭된다.
· 각각의 데이터 구조의 공지된 크기를 사용하여, 프로세서(42)는, 데이터 구조의 첫번째 유효 슬라이스를 갖추고 있는, 저장된 청크(68)를 확인한다. 이러한 청크는 첫번째 청크로 지칭된다.
· 프로세서(42)는 저장된 청크들을 플래시 디바이스들에서 판독하되, 상기에서 확인된 첫번째 청크부터 상기에서 확인된 마지막 청크까지 판독한다.
· 각각의 판독된 청크에 대해, 프로세서(42)는 청크에서의 슬라이스를, RAM(50) 내의 적절한 위치에 복제한다. 그 후, 프로세서(42)는 판독된 청크에서 변화들을 검토한다. 주어진 변화가, RAM에 이미 복구된 슬라이스에 관련된 경우, 프로세서(42)는 규정된 변화를 적용한다. 그렇지 않다면, 프로세서는 그것을 적용함 없이 변화를 폐기시킨다(변화는 후기의 청크에서 복제될 후기의 슬라이스에 의해 차지되어야 함).
이러한 프로세스 후에, 프로세서(42)는 다양한 포인터들을 데이터 구조들로 되돌아 가게 하고 정상 운영시간 동작으로 이동한다. 이 시점에서, 프로세서(42)는 도 3의 방법을 사용하여 데이터 구조들을 계속해서 백업한다. 필요한 경우, 제2 복구 프로세스는 제1 복구 전에 저장된 청크들을 사용하여 실행될 수 있다. 다시 말하면, 정전에서의 복구 후에 프로세서(42)가 데이터 구조의 완전한 베이스라인 백업을 실행할 필요는 없다.
도 4는 본 발명의 실시예에 따라, 데이터베이스 복구 기법을 개략적으로 예시하는 다이어그램이다. 본 예시는 개시된 기술들의 여러 가지의 추가 특징들을 입증한다. 이러한 예시에서, 다수의 저널링 청크들(68)은 N 개의 플래시 다이들을 가로질러 병행식으로, 예를 들면, 다중-면(multi-plane) 기입 명령들을 사용하여 저장된다. 저장된 청크들의 복구는 또한 다중-면 판독 명령들을 사용하여 실행될 수 있다. 이러한 저장 부류는 백업 및 복구 둘 다의 속도를 증가시킨다.
도 4에서의 화살표들은, 저널링 청크들에서의 V2P 및 BDB 슬라이스들을 RAM(50) 내의 V2P 및 BDB에 복제하고 청크들에서 규정된 변화들을 적용하는 프로세스를 나타낸다. 화살표들 몇몇은, 프로세서(42)가 각자의 변화들을 적용한다는 것을 의미하는 "VALID"로 나타낸다. 전술된 바와 같이, 프로세서에 의해 폐기된 변화들은 "IRRELEVANT"로 나타낸다.
전술된 실시예들은 예로서 인용된다는 것이, 그리고 본 발명은 위에서 특히 도시되고 설명된 것으로 제한되는 것은 아니라는 것이 이해될 것이다. 오히려, 본 발명의 범주는 본 명세서에서 전술된 다양한 특징들의 조합들 및 하위-조합들 둘 모두뿐만 아니라, 전술한 설명을 읽을 때 당업자에게 떠오를 것이고 종래 기술에서 개시되지 않은 변형들 및 수정들을 포함한다. 본 특허 출원에 참조로서 포함된 문헌들은, 임의의 용어들이 이들 포함된 문헌들에서 본 명세서에 명시적으로 또는 내재적으로 이루어진 정의와 상충하는 방식으로 정의되어 있는 경우에는 본 명세서 내의 정의만이 고려되어야 한다는 점을 제외하면, 본 출원의 통합 부분인 것으로 간주되어야 한다.
Claims (20)
- 비휘발성 메모리 및 휘발성 메모리를 포함하는 저장 디바이스에서, 데이터 저장을 관리하기 위해 사용된 관리 정보를 상기 비휘발성 메모리에 저장하는 적어도 하나의 데이터 구조를 유지시키되, 상기 데이터 구조의 적어도 일부가 상기 휘발성 메모리에 저장되도록, 유지시키는 단계;
상기 저장 디바이스의 동작 동안, 저널링 청크들(journaling chunks)의 시퀀스를 생성하는 단계 - 각각의 저널링 청크는 상기 데이터 구조의 각자의 슬라이스, 및 상기 시퀀스 내의 이전 저널링 청크 이후에 상기 데이터 구조에서 발생한 하나 이상의 변화들을 포함함 -;
상기 저널링 청크들의 상기 시퀀스를 상기 비휘발성 메모리에 저장하는 단계; 및
상기 저장 디바이스에서의 정전(electrical power interruption)에서 복구될 시, 상기 저장된 저널링 청크들을 사용하여, 상기 데이터 구조를 복원하는 단계를 포함하는, 방법. - 제1항에 있어서, 상기 데이터 구조는 논리적 주소들을 상기 비휘발성 메모리 내의 각자의 물리적 저장 위치들에 맵핑하는 것을 포함하는, 방법.
- 제1항에 있어서, 상기 데이터 구조는 상기 비휘발성 메모리의 각자의 메모리 블록들의 파라미터들의 데이터베이스를 포함하는, 방법.
- 제1항에 있어서, 상기 저널링 청크들의 상기 시퀀스를 생성하는 단계는, 상기 변화들을 축적하는 단계, 및 상기 축적된 변화들이 미리 정의된 데이터 크기에 도달할 시에, 상기 데이터 구조의 상기 축적된 변화들 및 상기 슬라이스를 포함한 상기 저널링 청크를 저장하는 단계를 포함하는, 방법.
- 제1항에 있어서, 상기 저널링 청크들의 상기 시퀀스를 생성하는 단계는, 주어진 저널링 청크에 저장된 상기 변화들에, 상기 주어진 저널링 청크에 저장된 상기 데이터 구조의 상기 슬라이스에 관련되지 않은 적어도 하나의 변화를 포함하는 단계를 포함하는, 방법.
- 제1항에 있어서, 상기 저널링 청크들의 상기 시퀀스를 생성하는 단계는, 연속적인 저널링 청크들에, 상기 데이터 구조를 주기적으로 스캐닝하는 각자의 연속적인 슬라이스들을 저장하는 단계를 포함하는, 방법.
- 제1항에 있어서, 상기 저널링 청크들의 상기 시퀀스를 생성하는 단계는, 각각의 저널링 청크에, 상기 각자의 슬라이스가 얻어지는 상기 데이터 구조 내의 각자의 위치를 가리키는 표시(indication)를 저장하는 단계를 포함하는, 방법.
- 제1항에 있어서, 상기 적어도 하나의 데이터 구조는 다수의 데이터 구조들을 포함하고, 각각의 저널링 청크는 상기 다수의 데이터 구조들의 각자의 슬라이스들을 포함하는, 방법.
- 제1항에 있어서, 상기 데이터 구조를 복원하는 단계는, 상기 정전 이전에 상기 비휘발성 메모리에 가장 최근에 기입된 마지막 저널링 청크를 확인하는 단계, 상기 데이터 구조의 첫번째 유효 슬라이스(valid slice)를 포함하는 첫번째 저널링 청크를 확인하는 단계, 및 상기 비휘발성 메모리에서 상기 저널링 청크들을 복구하되, 상기 확인된 첫번째 저널링 청크에서 상기 확인된 마지막 저널링 청크까지 복구하는 단계를 포함하는, 방법.
- 제9항에 있어서, 상기 저널링 청크들을 복구하는 단계는, 주어진 저널링 청크에서 판독된 주어진 변화를 적용하되, 상기 주어진 변화에 의해 지칭되는 상기 슬라이스가 이미 복구되었다는 것을 검증할 시에만, 적용하는 단계를 포함하는, 방법.
- 저장 디바이스로서,
비휘발성 메모리;
휘발성 메모리; 및
데이터 저장을 관리하기 위해 사용된 관리 정보를 상기 비휘발성 메모리에 저장하는 적어도 하나의 데이터 구조를 유지시키되, 상기 데이터 구조의 적어도 일부가 상기 휘발성 메모리에 저장되도록, 유지시키고, 상기 저장 디바이스의 동작 동안, 저널링 청크들의 시퀀스를 생성하고 - 각각의 저널링 청크는 상기 데이터 구조의 각자의 슬라이스, 및 상기 시퀀스 내의 이전 저널링 청크 이후에 상기 데이터 구조에서 발생한 하나 이상의 변화들을 포함함 -, 상기 저널링 청크들의 상기 시퀀스를 상기 비휘발성 메모리에 저장하며, 그리고 상기 저장 디바이스에서의 정전에서 복구될 시, 상기 저장된 저널링 청크들을 사용하여, 상기 데이터 구조를 복원하도록 구성된 프로세서를 포함하는, 저장 디바이스. - 제11항에 있어서, 상기 데이터 구조는 논리적 주소들을 상기 비휘발성 메모리 내의 각자의 물리적 저장 위치들에 맵핑하는 것을 포함하는, 저장 디바이스.
- 제11항에 있어서, 상기 데이터 구조는 상기 비휘발성 메모리의 각자의 메모리 블록들의 파라미터들의 데이터베이스를 포함하는, 저장 디바이스.
- 제11항에 있어서, 상기 프로세서는, 상기 변화들을 축적하고, 상기 축적된 변화들이 미리 정의된 데이터 크기에 도달할 시에, 상기 데이터 구조의 상기 축적된 변화들 및 상기 슬라이스를 포함한 상기 저널링 청크를 저장하도록 구성된, 저장 디바이스.
- 제11항에 있어서, 상기 프로세서는, 주어진 저널링 청크에 저장된 상기 변화들에, 상기 주어진 저널링 청크에 저장된 상기 데이터 구조의 상기 슬라이스에 관련되지 않은 적어도 하나의 변화를 포함하도록 구성된, 저장 디바이스.
- 제11항에 있어서, 상기 프로세서는, 연속적인 저널링 청크들에, 상기 데이터 구조를 주기적으로 스캐닝하는 각자의 연속적인 슬라이스들을 저장하도록 구성된, 저장 디바이스.
- 제11항에 있어서, 상기 프로세서는, 각각의 저널링 청크에, 상기 각자의 슬라이스가 얻어지는 상기 데이터 구조 내의 각자의 위치를 가리키는 표시를 저장하도록 구성된, 저장 디바이스.
- 제11항에 있어서, 상기 적어도 하나의 데이터 구조는 다수의 데이터 구조들을 포함하고, 각각의 저널링 청크는 상기 다수의 데이터 구조들의 각자의 슬라이스들을 포함하는, 저장 디바이스.
- 제11항에 있어서, 상기 프로세서는, 상기 정전 이전에 상기 비휘발성 메모리에 가장 최근에 기입된 마지막 저널링 청크를 확인하고, 상기 데이터 구조의 첫번째 유효 슬라이스를 포함하는 첫번째 저널링 청크를 확인하며, 그리고 상기 비휘발성 메모리에서 상기 저널링 청크들을 복구하되, 상기 확인된 첫번째 저널링 청크에서 상기 확인된 마지막 저널링 청크까지 복구함으로써, 상기 데이터 구조를 복원하도록 구성된, 저장 디바이스.
- 제19항에 있어서, 상기 프로세서는, 주어진 저널링 청크에서 판독된 주어진 변화를 적용하되, 상기 주어진 변화에 의해 지칭되는 상기 슬라이스가 이미 복구되었다는 것을 검증할 시에만, 적용하도록 구성된, 저장 디바이스.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/630,176 | 2012-09-28 | ||
US13/630,176 US8880786B2 (en) | 2012-09-28 | 2012-09-28 | Flash translation layer (FTL) database journaling schemes |
PCT/US2013/059375 WO2014052016A1 (en) | 2012-09-28 | 2013-09-12 | Flash translation layer (ftl) database journaling schemes |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150038290A KR20150038290A (ko) | 2015-04-08 |
KR101579711B1 true KR101579711B1 (ko) | 2015-12-22 |
Family
ID=49261779
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157004728A KR101579711B1 (ko) | 2012-09-28 | 2013-09-12 | 플래시 변환 층(ftl) 데이터베이스 저널링 기법들 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8880786B2 (ko) |
EP (1) | EP2901282B1 (ko) |
JP (1) | JP5982576B2 (ko) |
KR (1) | KR101579711B1 (ko) |
CN (1) | CN104603760B (ko) |
TW (1) | TWI474170B (ko) |
WO (1) | WO2014052016A1 (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102225618B1 (ko) * | 2014-09-30 | 2021-03-12 | 한화테크윈 주식회사 | 실패 시나리오로부터 기록된 데이터의 시간 관련 메타데이터의 공간 효율적인 복구 |
CN107544866B (zh) * | 2016-06-29 | 2021-01-05 | 北京忆恒创源科技有限公司 | 一种日志更新方法与装置 |
CN113590504B (zh) * | 2016-06-29 | 2024-09-03 | 北京忆恒创源科技股份有限公司 | 存储日志帧以及日志条目的固态硬盘 |
KR102259256B1 (ko) * | 2017-05-16 | 2021-06-02 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
CN107220145B (zh) * | 2017-05-19 | 2021-06-01 | 北京计算机技术及应用研究所 | 一种闪存数据库数据恢复的方法 |
US10635654B2 (en) | 2017-06-12 | 2020-04-28 | Samsung Electronics Co., Ltd. | Data journaling for large solid state storage devices with low DRAM/SRAM |
US10997065B2 (en) * | 2017-11-13 | 2021-05-04 | SK Hynix Inc. | Memory system and operating method thereof |
KR20210012085A (ko) | 2019-07-23 | 2021-02-03 | 삼성전자주식회사 | 저널 리플레이를 개선하기 위한 스토리지 장치, 그것의 동작 방법, 및 스토리지 장치를 포함하는 전자 장치 |
US11681635B2 (en) * | 2020-09-07 | 2023-06-20 | Mellanox Technologies, Ltd. | Secure flash controller |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100030999A1 (en) * | 2008-08-01 | 2010-02-04 | Torsten Hinz | Process and Method for Logical-to-Physical Address Mapping in Solid Sate Disks |
KR20100062551A (ko) * | 2008-12-02 | 2010-06-10 | 삼성전자주식회사 | 메모리 장치, 그것을 포함한 메모리 시스템 및 그것의 맵핑정보 복원 방법 |
JP2012014735A (ja) * | 2011-10-04 | 2012-01-19 | Hitachi Ltd | 記憶装置システム及びデータ回復方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7089349B2 (en) * | 2003-10-28 | 2006-08-08 | Sandisk Corporation | Internal maintenance schedule request for non-volatile memory system |
US8452929B2 (en) * | 2005-04-21 | 2013-05-28 | Violin Memory Inc. | Method and system for storage of data in non-volatile media |
US8015433B2 (en) * | 2006-09-13 | 2011-09-06 | Hitachi Global Storage Technologies Netherlands B.V. | Disk drive with nonvolatile memory for storage of failure-related data |
JP2008243138A (ja) * | 2007-03-29 | 2008-10-09 | Hitachi Ltd | ストレージシステム及びデータ復元方法 |
KR101464338B1 (ko) * | 2007-10-25 | 2014-11-25 | 삼성전자주식회사 | 불휘발성 메모리 장치를 이용한 데이터 저장장치, 메모리시스템, 그리고 컴퓨터 시스템 |
US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
US8255774B2 (en) * | 2009-02-17 | 2012-08-28 | Seagate Technology | Data storage system with non-volatile memory for error correction |
US8364931B2 (en) * | 2009-06-29 | 2013-01-29 | Mediatek Inc. | Memory system and mapping methods using a random write page mapping table |
CN102004706B (zh) * | 2009-09-01 | 2012-09-19 | 联芯科技有限公司 | 一种基于ftl的闪存擦写掉电保护方法 |
JP5377175B2 (ja) * | 2009-09-08 | 2013-12-25 | 株式会社東芝 | コントローラ、及びデータ記憶装置 |
WO2012020544A1 (ja) * | 2010-08-11 | 2012-02-16 | 日本電気株式会社 | データ処理システム、データ処理方法、およびプログラム |
US8631209B2 (en) * | 2012-01-26 | 2014-01-14 | Upthere, Inc. | Reusable content addressable stores as building blocks for creating large scale storage infrastructures |
-
2012
- 2012-09-28 US US13/630,176 patent/US8880786B2/en active Active
-
2013
- 2013-09-12 JP JP2015531341A patent/JP5982576B2/ja active Active
- 2013-09-12 CN CN201380044512.1A patent/CN104603760B/zh active Active
- 2013-09-12 WO PCT/US2013/059375 patent/WO2014052016A1/en active Application Filing
- 2013-09-12 EP EP13770574.5A patent/EP2901282B1/en active Active
- 2013-09-12 KR KR1020157004728A patent/KR101579711B1/ko active IP Right Grant
- 2013-09-26 TW TW102134877A patent/TWI474170B/zh not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100030999A1 (en) * | 2008-08-01 | 2010-02-04 | Torsten Hinz | Process and Method for Logical-to-Physical Address Mapping in Solid Sate Disks |
KR20100062551A (ko) * | 2008-12-02 | 2010-06-10 | 삼성전자주식회사 | 메모리 장치, 그것을 포함한 메모리 시스템 및 그것의 맵핑정보 복원 방법 |
JP2012014735A (ja) * | 2011-10-04 | 2012-01-19 | Hitachi Ltd | 記憶装置システム及びデータ回復方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20150038290A (ko) | 2015-04-08 |
CN104603760A (zh) | 2015-05-06 |
US20140095765A1 (en) | 2014-04-03 |
JP5982576B2 (ja) | 2016-08-31 |
TW201416857A (zh) | 2014-05-01 |
CN104603760B (zh) | 2017-07-21 |
JP2015527682A (ja) | 2015-09-17 |
EP2901282A1 (en) | 2015-08-05 |
WO2014052016A1 (en) | 2014-04-03 |
EP2901282B1 (en) | 2016-07-20 |
US8880786B2 (en) | 2014-11-04 |
TWI474170B (zh) | 2015-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101579711B1 (ko) | 플래시 변환 층(ftl) 데이터베이스 저널링 기법들 | |
CN105843550B (zh) | 用于减少读取干扰错误的存储器系统和方法 | |
US9075710B2 (en) | Non-volatile key-value store | |
CN105593943B (zh) | 具有动态擦除块组合机制的数据贮存系统及其操作方法 | |
US8046528B2 (en) | Data writing method for flash memory, and flash memory controller and storage device thereof | |
US8411519B2 (en) | Selective retirement of blocks | |
US8984247B1 (en) | Storing and reconstructing mapping table data in a data storage system | |
TWI634426B (zh) | 管理邏輯至實體轉譯資訊的備份以控制開機時間以及寫入放大 | |
US10877900B1 (en) | Enabling faster and regulated device initialization times | |
US9058288B2 (en) | Redundant storage in non-volatile memory by storing redundancy information in volatile memory | |
US9575844B2 (en) | Mass storage device and method of operating the same to back up data stored in volatile memory | |
KR101679530B1 (ko) | 이용 가능한 메모리 공간에 기초한 이중화 저장 장치 구성의 선택 | |
WO2015126518A2 (en) | High performance persistent memory | |
US20160034341A1 (en) | Orphan block management in non-volatile memory devices | |
US11960766B2 (en) | Data storage device and method for accidental delete protection | |
KR101548452B1 (ko) | 비휘발성 메모리 기반의 전자 장치의 메타 데이터 복원 방법 및 장치 | |
WO2015116100A1 (en) | Managing data using a number of non-volatile memory arrays | |
US11880603B2 (en) | Storage system and method for preserving overwritten data to allow a future rollback | |
CN103389943A (zh) | 控制装置、存储装置及存储控制方法 | |
US9880926B1 (en) | Log structured reserved zone for a data storage device | |
Luo et al. | A NAND flash management algorithm with limited on-chip buffer resource | |
KR101545077B1 (ko) | 비휘발성 메모리 기반의 전자 장치의 메타 데이터 복원 방법 및 장치 | |
KR20120138566A (ko) | 다층 셀 플래시 메모리의 버퍼 관리 방법 및 장치 | |
Lee et al. | A-PLR: accumulative backup of mapping information for power loss recovery | |
CN108228243A (zh) | Emmc初始化方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20181115 Year of fee payment: 4 |