KR101257989B1 - 인덱스 페이지 복구 - Google Patents
인덱스 페이지 복구 Download PDFInfo
- Publication number
- KR101257989B1 KR101257989B1 KR1020100071571A KR20100071571A KR101257989B1 KR 101257989 B1 KR101257989 B1 KR 101257989B1 KR 1020100071571 A KR1020100071571 A KR 1020100071571A KR 20100071571 A KR20100071571 A KR 20100071571A KR 101257989 B1 KR101257989 B1 KR 101257989B1
- Authority
- KR
- South Korea
- Prior art keywords
- index
- memory
- block
- page
- metadata
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- 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
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
비휘발성 메모리에 저장된 인덱스 페이지들을 복구하기 위한 기술이 개시되고, 여기서, 인덱스 페이지들은 논리 섹터들을 물리적 페이지들로 매핑한다. 휘발성 및 비휘발성 메모리내의 부가적인 데이터 구조가 인덱스 페이지들을 복구하기 위한 기술에 의해 이용될 수 있다. 몇몇 구현예에서, 비휘발성 메모리내의 데이터 블록들과 연관된 룩업 테이블은 논리 섹터들을 물리적 페이지들로 매핑하는 것에 관한 정보를 제공하는데 이용될 수 있다. 몇몇 구현예에서, 데이터 블록들 및 논리 섹터들 및/또는 인덱스 페이지들의 범위와 연관된 룩업 테이블이 이용될 수 있다.
Description
[관련 출원에 대한 참조]
본 출원은 2009년 7월 24일에 출원된 미국 출원 번호 제12/509,071호에 기초한 우선권을 주장한다.
본 발명의 주제는 일반적으로 메모리 매핑(memory mapping)에 관한 것이다.
플래시 메모리는 EEPROM(electrically erasable programmable read-only memory)의 일종이다. 플래시 메모리들이 비휘발성이고 비교적 고밀도이기 때문에, 이들은 핸드헬드 컴퓨터들, 모바일 폰들, 디지털 카메라들, 휴대용 음악 플레이어들, 및 다른 저장 솔루션들(예로, 자기 디스크들)이 부적합한 많은 다른 장치들에서 파일들 및 그 밖의 지속적 객체들을 저장하는 데에 사용된다. 유감스럽게도, 플래시 메모리는 두 가지의 한계로 인해 손해를 입는다. 첫째, 비트들이 메모리의 큰 블록을 소거함으로써만 클리어될 수 있다. 둘째, 각각의 블록이 제한된 횟수의 소거 동작들만을 견딜 수 있고, 그 후에는 데이터를 더 이상 신뢰성 있게 저장할 수 없게 된다. 이런 한계들로 인해, 플래시 메모리들을 효율적으로 사용하기 위해서 복잡한 데이터 구조들 및 알고리즘들이 종종 요구된다. 이런 알고리즘들 및 데이터 구조들은 데이터의 효과적인 제자리 아닌 갱신(not-in-place update)들을 지원하고, 소거 동작들의 횟수를 감축하고, 또한 장치 내의 블록들의 마모를 고르게(level) 하는 데에 사용된다.
플래시 메모리들은, 페이지를 포함하는 블록이 먼저 소거되지 않으면, 제자리(in-place) 갱신들을 지원하지 않거나 물리적 메모리 페이지들에 재기입한다. 이런 결점을 극복하기 위해서, 하드웨어 및/또는 소프트웨어 계층이 플래시 서브시스템에 종종 부가된다. 종종 FTL(flash translation layer)로서 지칭되는 이 층은 플래시 메모리와 함께 논리 섹터들을 물리적 메모리 페이지들로 매핑함으로써 2차 저장 장치를 모방(mimic)할 수 있다. 많은 플래시 기반 장치들에 있어서, FTL은 하드웨어에서의 컨트롤러로서 구현된다. 컨트롤러는 작은 용량의 휘발성 메모리(예로, RAM)와 함께 프로세서 또는 마이크로컨트롤러를 포함할 수 있다. 이 컨트롤러는 파일 시스템(예로, 논리 섹터)으로부터의 판독/기입 요청을 플래시의 특정 블록상의 판독/기입 동작으로 변환(translate)하고, 더티(dirty) 블록들을 소거하고 또한 자유(free) 블록들을 재생(reclaim)하는 폐영역 회수(garbage collection; GC)를 개시하는 것을 맡을 수 있다.
플래시 장치들은 논리 섹터들의 물리적 메모리 페이지들로의 매핑을 저장할 수 있다. FTL은 이 저장된 매핑을 사용하여 논리 섹터의 물리적 위치를 식별할 수 있다. 만일 저장된 매핑의 일부분(예로, 한 페이지)이 상실되면(예로, 데이터가 손상되면), FTL이 파일 시스템으로부터의 판독/기입 요청들을 변환하고 이를 수행하는 것을 못할 수 있다.
비휘발성 메모리에 저장된 인덱스 페이지들을 복구(restore)하기 위한 기술이 개시되었는데, 여기서 인덱스 페이지들은 논리 섹터들을 물리적 페이지들로 매핑한다. 휘발성 및 비발성 메모리에서의 추가의 데이터 구조들이 인덱스 페이지들을 복구하는 기술에 의해 사용될 수 있다. 몇몇 실시예들에서, 비휘발성 메모리에서의 데이터 블록들과 연관된 룩업 테이블이 논리 섹터들의 물리적 페이지들로의 매핑에 관한 정보를 제공하는 데에 사용될 수 있다. 몇몇 구현들에서, 데이터 블록들과 논리 섹터들 및/또는 인덱스 페이지들의 범위와 연관된 룩업 테이블이 사용될 수 있다.
개시된 인덱스 페이지 복구 기술은 플래시 메모리에 있어서 종래의 인덱스 페이지 복구 기술에 비해 몇 가지 이점들을 제공한다. 이런 이점들 중의 몇 가지로는, 1) 파일 시스템을 완전히 탑재할 필요 없이 단일 인덱스 페이지의 복구를 가능하게 하는 것과, 2) 손실된 인덱스 페이지의 실행 시간(run-time) 복구를 가능하게 하는 것과, 3) 손실된 인덱스 페이지를 복구하는 데에 장치를 리부팅할 필요를 없애주는 것이 있는데, 이것들에만 국한되지는 않는다.
도 1a는 룩업 테이블들을 사용하여 논리 섹터들을 물리적 페이지들로 매핑하는 예시적 메모리 매핑 아키텍처(100)를 도해하는 블록도.
도 1b는 데이터 페이지들 및 연관된 블록 TOC를 포함하는 예시적 데이터 블록을 도해하는 블록도.
도 2a 및 도 2b는 도 1a 및 도 1b에 도시된 메모리 매핑 아키텍처를 사용하는 예시적 인덱스 페이지 복구 동작의 흐름도.
도 3a 및 도 3b는 도 1a 및 도 1b에 도시된 메모리 매핑 아키텍처를 사용하는 또 다른 예시적 인덱스 페이지 복구 동작의 흐름도.
도 4는 도 1a 및 도 1b에 도시된 메모리 매핑 아키텍처를 사용하는 예시적 지연된 인덱스 페이지 복구 동작의 흐름도.
도 5a는 도 1 내지 도 4 및 도 6과 도 7의 메모리 아키텍처 및 동작들을 구현하기 위한 예시적 메모리 서브시스템의 블록도.
도 5b는 도 1 내지 도 4 및 도 6과 도 7의 메모리 아키텍처 및 동작들을 구현하기 위한 메모리 서브시스템을 포함하는 예시적 장치의 시스템 아키텍처를 도해하는 블록도.
도 6은 도 1a 및 도 1b에 관하여 앞서 설명한 메모리 아키텍처 내에서의 손실된 인덱스 페이지를 복구하는 데에 사용될 수 있는 예시적 인덱스 수퍼 블록의 블록도.
도 7은 도 1a 및 도 1b와 도 6에 도시된 메모리 매핑 아키텍처 내에서의 수 퍼 블록을 사용하는 예시적 인덱스 페이지 복구 동작의 흐름도.
도 1b는 데이터 페이지들 및 연관된 블록 TOC를 포함하는 예시적 데이터 블록을 도해하는 블록도.
도 2a 및 도 2b는 도 1a 및 도 1b에 도시된 메모리 매핑 아키텍처를 사용하는 예시적 인덱스 페이지 복구 동작의 흐름도.
도 3a 및 도 3b는 도 1a 및 도 1b에 도시된 메모리 매핑 아키텍처를 사용하는 또 다른 예시적 인덱스 페이지 복구 동작의 흐름도.
도 4는 도 1a 및 도 1b에 도시된 메모리 매핑 아키텍처를 사용하는 예시적 지연된 인덱스 페이지 복구 동작의 흐름도.
도 5a는 도 1 내지 도 4 및 도 6과 도 7의 메모리 아키텍처 및 동작들을 구현하기 위한 예시적 메모리 서브시스템의 블록도.
도 5b는 도 1 내지 도 4 및 도 6과 도 7의 메모리 아키텍처 및 동작들을 구현하기 위한 메모리 서브시스템을 포함하는 예시적 장치의 시스템 아키텍처를 도해하는 블록도.
도 6은 도 1a 및 도 1b에 관하여 앞서 설명한 메모리 아키텍처 내에서의 손실된 인덱스 페이지를 복구하는 데에 사용될 수 있는 예시적 인덱스 수퍼 블록의 블록도.
도 7은 도 1a 및 도 1b와 도 6에 도시된 메모리 매핑 아키텍처 내에서의 수 퍼 블록을 사용하는 예시적 인덱스 페이지 복구 동작의 흐름도.
시스템 개관
도 1a는 룩업 테이블들을 사용하여 논리 섹터들을 물리적 페이지들로 매핑하는 예시적 메모리 매핑 아키텍처(100)를 도해하는 블록도이다. 몇몇 구현들에서, 휘발성 메모리(예로, RAM)의 룩업 테이블(102)은 비휘발성 메모리(예로, 플래시 메모리)에서의 룩업 테이블(106)의 위치(예로, 물리적 주소)를 홀드(hold)한다. 룩업 테이블(106)은 데이터 페이지들(108)의 물리적 주소들을 홀드한다. 몇몇 구현들에서, 휘발성 메모리의 캐시(104)는 최근에 기입된 논리 섹터들의 물리적 주소들을 홀드하여 더 고속의 판독을 허용한다. 도시된 예에서, 룩업 테이블(102)은 인덱스 TOC(102)로도 지칭되고, 룩업 테이블(106)은 인덱스 테이블(106) 또는 인덱스 페이지로도 지칭되고, 캐시(104)는 인덱스 테이블 캐시(104)로도 지칭된다.
아키텍처(100)에서, 인덱스 TOC(102)는 인덱스 테이블(106)이 비휘발성 메모리에 저장되도록 하여 준다. 이는 컨트롤러들에서 전형적으로 이용가능한 작은 양의 RAM이 컨트롤러에서의 비용, 면적 및 전력 소모의 상승 때문에 그 크기를 조정할 수 없기 때문에 이점이 있다. 몇몇 구현들에서, 휘발성 메모리는 그 가용성 또는 다른 트리거 이벤트들 및/또는 동작 모드들에 기초하여 동적으로 설정될 수 있다.
인덱스 테이블(106)에 의한 논리 섹터들의 예시적
매핑
인덱스 테이블(106)은 예시적 인덱스 페이지들 1N을 갖는 것으로 묘사되어 있다. 예시적 인덱스 페이지들 1N의 각각은 논리 섹터들을 여러 데이터 페이지들(108)에게 매핑한다. 데이터 페이지들(108)은 데이터 블록들 1N에 포함되는 것으로서 묘사되어 있다. 예를 들어, 예시적 인덱스 페이지 1은 논리 섹터들을 데이터 블록 1 및 데이터 블록 N에게 매핑한다. 만일 인덱스 페이지가 손실되면(예로, 페이지 데이터가 손상되는 등과 같이), 인덱스 페이지 내에 포함된 논리 섹터 대 데이터 페이지 매핑들도 손실된다. 손실된 인덱스 페이지의 내용을 복구하기 위한 기술이 이하에 설명된다.
블록
TOC
를 갖는 예시적 데이터 블록
데이터 페이지들(108)이 예시적 블록 TOC들 1N 을 포함하는 것으로 묘사된다. 블록 TOC들의 각각은 데이터 블록에 대응하는 것으로서 묘사된다. 블록 TOC는 대응 데이터 블록에 저장될 수 있고 또한 블록 내의 페이지들을 논리 섹터들에게 매핑하는 정보를 포함할 수 있다. 이하에서 더 자세히 설명하는 대로, 데이터 블록들과 연관된 블록 TOC들이 손실된 인덱스 페이지를 재생성하는 데에 사용될 수 있다.
도 1b는 데이터 페이지들 및 연관된 블록 TOC(122)를 포함하는 예시적 데이터 블록(120)을 도해하는 블록도이다. 묘사된 대로, 예시적 데이터 블록(120)은 데이터 페이지들 1N을 포함한다. 블록 TOC(122)는 페이지 N의 일부분인 것으로 도시되었다. 블록 TOC(122)는 데이터 페이지들 1N를 대응 논리 섹터들로 매핑하는 정보를 저장할 수 있다.
휘발성 메모리 내의 예시적 데이터 구조들
몇몇 실시예들에서, 데이터 블록은, 블록 상태 데이터[예로, 프리(free), 배드(bad), 할당된, 현재의], 유효 페이지들 번호, 소거 카운트 및 에러 정정 코드(ECC) 픽스(fix) 카운트를 포함할 수 있는 휘발성 메모리에 저장된 블록 테이블(110)(블록 어레이로도 지칭됨)과 연관될 수 있다. 블록 테이블(110)은 가장 최근의 것(예로 가장 최근에 기입된 블록)으로부터 가장 오래된 것(예로, 가장 일찍이 기입된 블록)까지의 데이터 블록들을 리스팅하는 데이터 블록 나이(age) 구조(112)를 또한 포함할 수 있다. 블록 테이블(110)은 각각의 데이터 블록이 대응하는 논리 섹터들의 범위(예로, 최소 및 최대)를 제공하는 데이터 블록 범위 구조(114)를 추가로 포함할 수 있다. 몇몇 구현들에서, 데이터 블록 범위 구조(114)는 각각의 데이터 블록이 대응하는 인덱스 테이블(106) 내의 인덱스 페이지들의 범위(예로, 최소 및 최대)를 제공할 수 있다. 데이터 블록 범위 구조(114)는 블록 테이블(110) 내의 데이터 블록 엔트리들에 걸쳐서 구현될 수 있다.
몇몇 구현들에서, 인덱스 TOC(102)의 각각의 엔트리는 인덱스 테이블(106) 엔트리의 비휘발성 메모리 내의 물리적 주소 및 인덱스 테이블 캐시(104) 내의 엔트리에 대한 포인터를 저장한다. 주소 0xff 또는 그 밖의 적합한 표시자가 인덱스 TOC(102) 내에 배치될 수 있어서 바라는 인덱스 테이블(106)이 인덱스 테이블 캐시(104) 내에 저장되지 않았다는 것을 표시한다.
몇몇 구현들에서, 이하의 구조들은 휘발성 메모리(예로, RAM) 내에 할당될 필요가 있다: 인덱스 테이블 캐시 내의 프리 엔트리들의 수, 현재의 데이터 블록(예로, 기입 또는 갱신 동작들을 위해 사용되고 있는 블록), 현재 블록에서의 다음의 프리 페이지에 대한 포인터, 현재 블록 TOC(예로, 논리 섹터들을 블록 내의 페이지들에 매핑하기 위한 정보를 포함하는 블록에 저장된 TOC), 현재 인덱스 블록(예로, 인덱스 갱신들을 위해 사용되고 있는 블록), 인덱스 블록 내의 다음의 프리 페이지에 대한 포인터, 현재 인덱스 블록 TOC 및 프리 블록들의 수.
몇몇 구현들에서, 인덱스 테이블 캐시(104)의 각각의 엔트리는, 데이터를 홀드하기 위한 버퍼(예로, 2K 버퍼), 상태 데이터(예로, 클린, 더티, 프리), 카운터(예로, 시리얼 카운터 또는 이 특정 블록이 얼마나 자주 액세스 되었는지를 표시하는 카운트)를 포함할 수 있는데, 이것들에만 국한되는 것은 아니다.
이상 설명한 데이터 구조들은 예들이고, 그 밖의 데이터 구조들이 응용들에 기초하여 사용될 수 있다. 데이터 구조들은 다른 도면들을 참조하여 더 자세히 설명된다.
예시적 인덱스 페이지 복구 동작
도 2a 및 도 2b는 도 1a 및 도 1b에 도시된 메모리 매핑 아키텍처를 사용하는 예시적 인덱스 페이지 복구 동작(200)의 흐름도들이다. 동작(200)은 데이터 블록들의 블록 TOC들에 포함된 데이터 페이지 대 논리 섹터 매핑들을 사용하여 손실된 인덱스 페이지를 복구한다.
도 2a를 참조하면, 몇몇 구현들에서, 동작(200)은 비휘발성 메모리(202) 내의 데이터 페이지로부터 판독하라는 또는 데이터 페이지에 기입하라는 요청을 수신함으로써 시작할 수 있다. 수신된 요청을 처리하기 위한 시도에서, 인덱스 테이블(예로, 인덱스 테이블 106)은 요청된 데이터 페이지의 물리적 주소에 대해 컨설팅(consult)받을 수 있다. 요청된 데이터 페이지에 대한 논리 대 물리적 주소 매핑을 포함하는 인덱스 페이지가 손실된 것으로 식별될 수 있다(203). 인덱스 페이지는 만일 페이지가 에러들의 문턱 수(예로, 하나의 에러, 두 개의 에러 등)를 포함한다면 손실된 것으로 식별될 수 있다. 예를 들어, 인덱스 페이지는 에러가 단계(202)에서 구한 논리 대 물리적 주소 매핑에 포함되어 있다면, 손실된 것으로 식별될 수 있다. 체크섬 또는 CRC와 같은 다양한 에러 검출 기술이 사용될 수 있다. 비휘발성 메모리에서의 가장 새로운 데이터 블록(예로, 가장 최근에 기입된 데이터 블록)이 선택되고(204), 선택된 블록과 연관된 블록 TOC가 판독된다(205). 가장 새로운 데이터 블록이, 블록 테이블(110) 내의 데이터 블록 나이 구조(112)와 같은, 휘발성 메모리의 구조로부터 식별될 수 있다. 만일 선택된 데이터 블록에서의 페이지들 중의 어느 것이라도 손실된 인덱스 페이지(206)에 대응한다면, 각각의 대응 페이지에 대한 엔트리가 손실된 인덱스 페이지(206)에 부가된다. 데이터 페이지는, 만일 데이터 페이지가 손실된 인덱스 페이지 내에 포함된 논리 섹터에 의해 매핑된다면, 손실된 인덱스 페이지에 대응하는 것으로 결정될 수 있다. 블록 TOC 내에 포함된 데이터 페이지 대 인덱스 매핑은 이런 결정을 하는 데에 참조될 수 있다.
만일 손실된 인덱스 페이지가 엔트리를 추가한 후에 채워지지 않으면(예로, 완전히 재구축되지 않으면)(212), 또는 선택된 데이터 블록 내의 페이지들 중의 어느 것도 손실된 인덱스 페이지에 대응하지 않으면, 비휘발성 메모리에서의 다음의 최신의 데이터 블록이 선택되고(210) 단계들 (205) 및 (206)이 반복된다. 데이터 블록을 선택하고 그 블록 TOC를 손실된 인덱스 페이지의 논리 섹터들에 대하여 비교하는 이런 사이클은 손실된 인덱스 페이지가 완전히 재구축되기까지 반복된다. 일단 손실된 페이지가 차면(예로, 재구축되면), 재구축된 인덱스 페이지 내의 엔트리들이 파일 시스템과 교차 참조되어 삭제된(재생된) 데이터 페이지들을 식별할 수 있다(214). 인덱스 페이지는 자유(free)로운 데이터 페이지들을 추적하는 것을 책임질 수 있다. 재구축된 인덱스 페이지가 자유로운 데이터 페이지들을 정확하게 리스팅하는 것을 보장하기 위해서, 파일 시스템과의 교차 참조가 사용될 수 있다. 몇몇 구현들에서, 데이터 블록은 데이터 페이지가 자유로운지 또는 사용 중인지를 표시하는 (블록 TOC 내의 것과 같은) 메타데이터를 저장할 수 있다.
재구축된 인덱스 페이지의 인덱스 블록[예로, 인덱스 테이블(106) 내의 인덱스 페이지들의 블록]에 저장된 데이터는 비휘발성 메모리(216) 내의 새롭게 할당된 블록으로 이동될 수 있다. 인덱스 페이지상의 에러는 재구축된 인덱스 페이지가 그 내에 거주하는 블록과의 물리적 문제를 표시하는 것일 수 있다. 메모리 아키텍처(100)의 동작에 대한 인덱스 페이지들의 중요성을 놓고 볼 때, 잠재적으로 문제가 있는 블록으로부터 비휘발성 메모리 내의 새로운 블록으로 데이터를 이동시키는 것이 유리할 수 있다.
인덱스 페이지 복구 동작(200)은 이하와 같이 의사 코드(pseudo code)로 기술될 수 있다.
단계 1: 복구할 인덱스 페이지의 통지를 수신
단계 2: 가장 새로운 데이터 블록에 대한 블록 TOC를 손실된 인덱스 페이지에 의해 커버되는 논리 섹터들과 비교
단계 3: 만일 가장 새로운 데이터 블록 내의 임의의 페이지들이 손실된 인덱스 페이지에 의해 커버된다면, 각각의 대응 페이지에 대한 엔트리를 손실된 인덱스 페이지에 부가함
단계 4: 만일 손실된 인덱스 페이지가 차지 않으면(예로, 인덱스 페이지가 완전히 재구축되지 않으면) 이후 다음의 가장 최신의 데이터 블록에 대해 단계들 2-4를 반복함
단계 5: 만일 손실된 인덱스가 차면(에러, 인덱스 페이지가 완전히 재구축되었으면) 이후 재구축된 인덱스 페이지를 파일 시스템과 교차 참조하여 삭제된(재생된) 페이지들을 식별함(선택적)
단계 6: 손실된 인덱스 페이지의 인덱스 블록 내의 데이터를 새롭게 할당된 비휘발성 메모리의 블록에 이동시킴(선택적)
몇몇 구현들에서, 억지(brute force) 재구축이 수행될 수 있어서, 데이터 블록들 및 이들의 연관된 블록 TOC들이 순차적으로 리뷰되어 손실된 페이지를 재구축하게 된다. 대조적으로, 동작(200)은 데이터 블록들의 나이에 따라 데이터 블록들을 검색함으로써 손실된 인덱스 페이지에 관련한 데이터 블록들을 보다 효과적으로 로케이팅시키고자 시도한다. 동작(200)은 관련 데이터 블록들을 더 신속하게 로케이팅시킬 수 있고, 그에 따라 억지 접근법보다 손실된 인덱스 페이지를 더 빠르게 재구축할 수 있다. 블록의 나이에 기초하여 증가하는 순서로 데이터 블록들을 리뷰하는 것은 각각의 논리 섹터의 가장 현재의 복사본이 가장 최신의 것으로부터 가장 오래된 것으로 이동하는 동안 이용가능한 것을 보장한다.
또 다른 예시적 인덱스 페이지 복구 동작
도 3a 및 도 3b는 도 1a 및 도 1b에 도시된 메모리 매핑 아키텍처를 사용하는 또다른 예시적 인덱스 페이지 복구 동작 (300)의 흐름도들이다. 동작(300)은 데이터 블록 대 논리 섹터/인덱스 페이지 범위들 (예로, 데이터 블록 범위 구조 114) 및 데이터 블록들의 블록 TOC들 내에 포함된 데이터 페이지 대 논리 섹터 매핑들을 사용하여 손실된 인덱스 페이지를 복구한다.
도 3a를 참조하면, 몇몇 구현들에서, 동작(300)은 비휘발성 메모리(302) 내의 데이터 페이지로부터 판독하고 또는 그에 기입하라는 요청을 수신하여 시작할 수 있다. 수신된 요청을 처리하려는 시도에서, 인덱스 테이블[예로, 인덱스 테이블 106)]이 요청된 데이터 페이지의 물리적 주소에 대해 컨설팅받을 수 있다. 요청된 데이터 페이지에 대한 논리 대 물리적 주소 매핑을 포함하는 인덱스 페이지는 도 2a에 대하여 앞서 설명한 대로 손실 인덱스 페이지들을 식별하는 기술과 유사하게 손실된 것으로 식별될 수 있다(303). 데이터 블록과 연관된 범위가 식별된다(304). 앞서 설명한 대로, 범위(예로, 최소 및 최대)가 데이터 블록에 의해 커버되는 비휘발성 메모리 내의 인덱스 페이지들의 범위 또는 논리 섹터들의 범위일 수 있다. 범위 내에서의 데이터 블록에 의한 커버리지의 홀(hole)들은 무시될 수 있다 (예를 들어 데이터 블록에 의해 커버되지 않는 범위의 중앙에 있는 부분이 무시될 수 있다). 만일 식별된 범위가 손실된 인덱스 페이지(306)에 대응한다면, 이후 식별된 데이터 블록이 리뷰될 데이터 블록들의 리스트에 부가될 수 있다(308). 식별된 범위는 만일 인덱프 페이지에 의해 커버되는 논리 섹터가 식별된 범위 내에 든다면(만일 범위가 논리 섹터들을 커버한다면), 또는 만일 인덱스 페이지 자체가 식별된 범위 내에 든다면(만일 범위가 인덱스 페이지들을 커버한다면) 인덱스 페이지에 대응할 수 있다. 만일 손실된 인덱스 페이지(310)에 대하여 비교할 더 많은 데이터 블록 범위들이 있다면, 단계들(304-310)이 반복된다. 단계들(304-310)은 각각의 데이터 블록에 대한 범위가 비교될 때까지 반복될 수 있다.
도 3b를 참조하면, 데이터 블록이 리뷰될 데이터 블록들의 리스트로부터 선택된다(312). 도 2a 및 도 2b에 대하여 앞서 설명한 동작(200)의 부분과 유사하게, 선택된 데이터 블록과 연관된 블록 TOC는 판독되고(314) 또한 만일 선택된 데이터 블록 내의 페이지들 중의 임의의 것이 손실된 인덱스 페이지에 대응한다면(316), 엔트리는 선택된 데이터 블록 내의 각각의 대응 페이지에 대해 손실된 인덱스 페이지에 부가된다(318). 만일 손실된 인덱스 페이지가 차지 않았다면(예를 들어, 재구축이 아직 완결되지 않았다면)(320), 또는 선택된 데이터 블록 내의 페이지들중 어느 것도 손실된 인덱스 페이지(316)에 대응하지 않는다면, 리뷰될 데이터 블록들의 리스트가 컨설팅된다. 만일 리스트상에 더 많은 데이터 블록들이 있다면(322), 단계들 (312-322)가 반복된다. 단계들(312-322)는 인덱스 페이지가 재구축될 때까지 또는 리스트상에 더 이상의 데이터 블록들이 없을 때까지 반복될 수 있다. 만일 손실된 인덱스 페이지가 채워지면(예를 들어, 인덱스 내의 어떤 나머지 홀들도 없다면)(320) 또는 모든 데이터 블록들이 스캔되었다면(예를 들어 조사할 더 이상의 데이터 블록들이 없다면)(322), 인덱스 복구 동작은 완료된 것이다.
만일 손실된 인덱스 페이지가 채워지면(320) 또는 리뷰될 데이터 블록들의 리스트상에 더 이상의 데이터 블록들이 없다면(322), 재구축된 인덱스 페이지 내에 포함된 엔트리들이 파일 시스템과 교차 참조될 수 잇어서 도 2b를 참조하여 앞서 설명한 교차 참조와 유사하게 삭제된 페이지들(324)을 식별하게 된다. 손실된 인덱스 페이지의 인덱스 블록 내에 저장된 데이터는 도 2b를 참조하여 앞서 설명한 새로운 블록으로의 데이터의 이동에 유사하게 비휘발성 메모리(326)의 새롭게 할당된 블록에게 이동될 수 있다.
인덱스 페이지 복구 동작(300)이 이하와 같이 의사 코드로 기술될 수 있다.
단계 1: 복구할 인덱스 페이지의 통지를 수신
단계 2: 손실된 인덱스 페이지를 데이터 블록에 대한 논리 섹터들/인덱스 페이지들의 범위와 비교함
단계 3: 만일 인덱스 페이지가 범위 내에 든다면, 데이터 블록을 리뷰될 데이터 블록들의 리스트에 부가함
단계 4: 각각의 데이터 블록에 대해 단계들 2-3을 반복함
단계 5: 리뷰될 데이터 블록들의 리스트로부터 데이터 블록을 선택함
단계 6: 선택된 데이터 블록에 대한 블록 TOC를 손실된 인덱스 페이지에 의해 커버되는 논리 섹터들에 비교함
단계 7: 만일 선택된 데이터 블록 내의 임의의 페이지들이 손실된 인덱스 페이지에 의해 커버된다면, 각각의 대응 페이지에 대한 엔트리를 손실된 인덱스 페이지에 더함
단계 8: 만일 손실된 페이지가 채워지지 않았다면(예로, 인덱스 페이지가 완전히 재구축되지 않음), 리뷰될 데이터 블록들의 리스트상의 각각의 데이터 블록에 대해 단계들 5-8을 반복
단계 9: 손실된 인덱스 페이지가 채워지면(예로, 인덱스 페이지가 완전히 재구축됨) 삭제된(재생된) 페이지들을 식별하기 위해 재구축된 인덱스 페이지를 파일 시스템과 교차 참조함(선택적)
몇몇 구현들에서, 복구된 인덱스 페이지는 비휘발성 메모리의 또 다른 페이지로 이동될 수 있다. 인덱스 복구 동작이 수행되도록 야기하는 데이터 에러들은 인덱스 페이지가 그 내에서 저장되는 메모리 블록들과의 물리적 문제를 표시할 수 있다. 손실된 인덱스 페이지의 인덱스 블록 내의 데이터는 비휘발성 메모리의 새롭게 할당된 블록에게 이동될 수 있다.
인덱스 페이지 복구 동작(300)은 이하의 이점들을 제공할 수 있다: 1) 관련 데이터 블록들이 보다 빠르게 식별될 수 있다(예를 들어 관련성을 결정하기 위해 비휘발성 메모리로부터 블록 TOC들을 판독하는 대신에, 휘발성 메모리로부터의 페이지 범위들이 액세스될 수 있고 또한 손실된 인덱스 페이에 대하여 비교될 수 있다), 및 2) 인덱스 페이지 복구 효율성이 증가될 수 있다(예로, 관련 데이터 블록들만이 비휘발성 메모리로부터 판독된다).
예시적 지연된 인덱스 페이지 복구 동작
도 4는 도 1a 및 도 1b에 도시된 메모리 매핑 아키텍처를 사용하는 예시적 지연된 인덱스 페이지 복구 동작(400)의 흐름도이다. 동작(400)은 손실된 인덱스 페이지에서의 요청된 논리 섹터 대 데이터 페이지 매핑을 즉시 복구하고, 이후 장치가 유휴일 때의 이후의 시간에 인덱스 페이지의 복구를 스케줄링한다.
몇몇 실시예에서, 동작(400)은 비휘발성 메모리(402) 내의 데이터 페이지로부터 판독하거나 그에 기입하라는 요청을 수신함으로써 시작될 수 있다. 수신된 요청을 처리하려는 시도에서, 인덱스 테이블[가령, 인덱스 테이블(106)]은 요청된 데이터 페이지의 물리적 주소에 대해 컨설팅될 수 있다. 요청된 데이터 페이지에 대한 논리 대 물리적 주소 매핑을 포함하는 인덱스 페이지는, 도 2a에 대하여 전술한 바와 같은 손실된 인덱스 페이지들을 식별하는 기술과 유사하게, 손실로서 식별될 수 있다(404).
요청되는 데이터 페이지에 대한 물리적 주소는 다양한 인덱스 페이지 복구 기술, 가령 전술한 동작(200), 동작(300) 또는 브루트 포스(brute force) 기술을 이용하여 로케이팅될 수 있다(406). 예를 들어, 도 2a-2b 및 도 3a-3b에 대하여 전술한 바와 같이, 인덱스 페이지 복구 동작들(200, 300)은 전체 인덱스 페이지 대신에 손실될 인덱스 페이지 내에 단일 엔트리를 로케이팅 및 복구하도록 변경될 수 있을 것이다. 요청 데이터 페이지에 대한 물리적 주소가 로케이팅된 상태에서, 요청된 데이터 페이지에 대한 엔트리는 손실된 인덱스 페이지에 부가될 수 있다(408). 또한, 요청된 데이터 페이지로부터 판독하거나 그에 기입하라는 상기 수신된 요청은 로케이팅된 물리적 주소를 이용하여 수행될 수 있다.
전체 인덱스 페이지를 복구하도록 진행하는 대신에, 손실된 인덱스 페이지의 나머지 부분들의 재구축이 유휴 기간 동안의 수행을 위해 스케줄링될 수 있다(410). 예를 들어, 동작이 수행되고 있는 플래시 메모리 장치는 셀 폰, 휴대용 미디어 플레이어, 내장형 장치 등일 수 있다. 이 장치들 각각은 사용자가 그들을 활동적으로 사용하고 있지 않을 때 유휴 시간(idle time)을 경험할 것이다. 예를 들어, 휴대용 미디어 플레이어는 그것이 미디어(가령, 비디오, 음악 등)를 재생하고 있지 않거나 사용자로부터 입력을 수신하고 있지 않을 때 유휴 시간을 경험할 것이다. 유휴 기간 동안, 손실된 인덱스의 나머지 부분들(가령, 요청된 데이터 페이지에 대응하지 않은 부분들)이 재구축된다(412).
몇몇 실시예에서, 손실된 인덱스 페이지의 나머지 부분들의 재구축은, 플래시 메모리 장치가 외부 소스로부터 전력을 공급받는 때(가령, 장치가 충전되고 있음) 또는 휴대형 전원이 임계 레벨을 초과할 때(가령, 배터리가 50% 초과한 충전을 가짐)의 유휴 기간 동안 스케줄링된다. 예를 들어, 인덱스 페이지를 복구하는 것은 장치의 전하를 감소시킬 수 있는 플래시 메모리에 대한 집약적 처리일 수 있다.
인덱스 페이지의 재구축은 시간 집약적 태스크일 수 있다. 손실된 페이지의 즉시 필요한 부분만을 재구축함으로써, 동작(400)은 장치가 요청을 처리하고 장치가 사용중인 동안 성능에 영향을 미치지 않고 미래의 시간에 인덱스 페이지를 복구하는 동작을 하도록 해준다.
예시적 메모리 서브시스템들
도 5a는 도 1-4 및 6-7의 메모리 아키텍처 및 동작들을 구현하는 예시적 메모리 서브시스템의 블록도이다. 몇몇 실시예에서, 서브시스템(500)은 컨트롤러(502), 비휘발성 메모리(504) 및 호스트 인터페이스(506)를 포함할 수 있다. 컨트롤러(502)는 휘발성 메모리(510)(가령, RAM) 및 프로세서(508)를 포함할 수 있다. 휘발성 메모리(510)는 블록 TOC(512), 블록 테이블(513) 및 인덱스 테이블 캐시(514)을 저장할 수 있다. 휘발성 메모리(510)는 가용성 및 임의의 다른 적절한 인자들에 근거하여 프로세서(508)에 의해 동적으로 구성될 수 있다. 비휘발성 메모리(504)는 인덱스 테이블(516) 및 데이터 페이지들(518)을 포함할 수 있다. 서브시스템(500)은 명료성을 위해 도 5에서는 제외되었던 다른 컴포넌트들을 포함할 수 있다.
동작시, 호스트 인터페이스(506)는 버스(가령, IDE/ATT)를 통해 호스트 서브시스템으로부터 판독/기입 요청들을 얻을 수 있다. 호스트 인터페이스(506)는 데이터, 주소들 및 제어 신호들을 수신하기 위한 회로 및 소프트웨어를 포함할 수 있다. 판독/기입 요청들은 판독/기입을 위해 논리 섹터 번호 및 다수의 연속 논리 섹터를 포함할 수 있다.
프로세서(508)는 휘발성 메모리(510)에 액세스하고 인덱스 TOC(512)를 판독하여, 인텍스 테이블 캐시(514)가 논리 섹터에 대한 물리적 주소를 포함하는지를 판정할 수 있다. 만약 인덱스 테이블 캐시(514)가 물리적 주소들을 포함한다면, 물리적 주소들은 판독/기입 동작을 위해 사용된다. 만약 인덱스 테이블 캐시(514)가 물리적 주소를 포함하지 않는다면, 프로세서(508)는 휘발성 메모리(510)에 액세스하여 비휘발성 메모리(504) 내의 인덱스 테이블(516)의 페이지 주소를 얻기 위해 인덱스 TOC(512)를 판독할 것이다. 프로세서(508)는 판독/기입 동작 동안 데이터 페이지(518)에 대한 메모리 매핑을 수행하기 위해 인덱스 테이블(516) 내의 물리적 주소들을 이용할 수 있다. 블록 테이블(513)은, 최신 데이터 블록을 결정하는데 사용될 수 있는 블록들에 대한 블록 할당 번호들을 저장할 수 있다. 또한, 블록 테이블(513)은 도 1a, 도 2a-2b 및 도 3a-3b를 참조하여 기술된 바와 같이, 데이터 블록들에 대한 인덱스 페이지들 및/또는 논리 섹터들의 범위를 저장할 수 있다. 블록 내에 기입되는 인덱스 페이지들 및/또는 논리 섹터들의 범위를 구축하기 위해 다양한 기술들이 사용될 수 있다. 몇몇 실시예에서, 블록에 대한 범위 정보는 메모리 내에 유지될 수 있고 블록 업데이트 동안 갱신될 수 있다. 몇몇 실시예에서, 블록에 대한 범위 정보는, 블록 TOC를 판독하고 이를 스캐닝하여 연관된 블록에 대한 범위를 결정함으로써 식별될 수 있다.
몇몇 실시예에서, 데이터 페이지(518), 인덱스 TOC(512) 및/또는 인덱스 테이블(516)은 하나 이상의 상이한 메모리 장치에서 구현될 수 있다.
도 5b는 도 1-4 및 도 6-7의 메모리 아키텍처 및 동작들을 구현하기 위한 메모리 서브시스템을 포함하는 예시적 장치(520)를 나타내는 블록도이다. 몇몇 실시예에서, 장치(520)는 예를 들어, 미디어 플레이어 장치, PDA, 모바일 폰, 휴대용 컴퓨터들, 디지털 카메라들 등과 같은 휴대용 장치이다.
장치(520)는 호스트 컨트롤러(혹은, 소위 "시스템-온-칩" 또는 "SoC")(522) 및 비휘발성 메모리(528)를 포함한다. 장치(520)는 호스트 컨트롤러(522) 및 비휘발성 메모리(528)의 외부에 있는 부가적인 메모리를 선택적으로 포함할 수 있다. 호스트 컨트롤러(522)는 하나 이상의 프로세서(524) 및 휘발성 메모리(526)를 포함할 수 있다. 몇몇 실시예에서, 휘발성 메모리(526)는 SRAM이다. 호스트 컨트롤러(522)는 도 2-4를 참조하여 설명한 동작들을 포함하는, 다양한 처리 동작들과 입력/출력 동작들을 수행한다. 예를 들어, 호스트 컨트롤러(522)는 사용자 입력들을 수신 및 처리하고, 출력들을 생성하며, 미디어(가령, 오디오, 비디오, 그래픽) 디코딩 및 처리동작들, 다른 처리 동작들 등을 수행할 수 있다. 호스트 컨트롤러(522)는 휘발성 메모리(526)로부터 데이터를 판독할 수 있고 그것에 데이터를 기입할 수도 있다. 호스트 컨트롤러(522)는 또한 인터페이스(미도시)를 통해 비휘발성 메모리(528)에 대한 판독 또는 기입 동작들을 발행(issue)할 수 있다.
몇몇 실시예에서, 비휘발성 메모리(528)는 NAND 플래시 메모리이다. 몇몇 실시예에서, 비휘발성 메모리(528)는, 예컨대 NOR 플래시 메모리, 다른 유형의 고체 상태 메모리 또는 하드 디스크 드라이브와 같은, 다른 유형의 비휘발성 메모리이다. 장치(520)는 또한 명료성을 위해 도 5b에서는 제외되었던 하나 이상의 다른 컴포넌트를 포함할 수 있다.
예시적 인덱스 슈퍼
블록
도 6은 도 1a 및 도 1b에 관하여 전술한 메모리 아키텍처 내에 손실된 인덱스 페이지를 복구하는데 사용될 수 있는 예시적 인덱스 슈퍼 블록(600)의 블록도이다. 슈퍼 블록(600)은 손실된 인덱스 페이지가 데이터 블록들의 블록 TOC들에 의존함이 없이 복구될 수 있는 데이터 구조를 제공할 수 있다.
슈퍼 블록(600)은 블록들(602a-d)로 이루어질 수 있다. 도시된 예에서, 블록들(602a-d) 각각은 상이한 물리적 다이(die)로부터의 동일한 블록(가령 블록 1)이다. 처음의 세 개의 블록(602a-c)은 인덱스 페이지들(가령, 인덱스 테이블(106)로부터의 인덱스 페이지들)을 저장하는 블록들이다. 제4 블록(602d)은 패리티 비트들을 저장하는 블록이다. 블록들(602a-c)의 스트라이프들 상에서 XOR 동작을 수행하는 것은 블록(602d)에 저장되는 패리티 비트들을 도출할 수 있다. 슈퍼 블록 내의 스트라이프는 블록들 각각으로부터의 대응하는 비트들을 포함한다. 도시된 예에서, 각 로우(row)는 스트라이프(stripe)이다. 예를 들어, 제1 스트라이프에 대한 패리티 비트들은 다음 동작: 010 XOR 011 XOR 111 = 110을 수행함으로써 도출된다.
제4 블록(602d)에 저장된 패리티 비트들은 스트라이프 내의 다른 블록들상에서의 동일 XOR 동작을 수행함으로써 손실 인덱스 페이지를 복구하는데 사용될 수 있다. 예를 들어, 제4 스트라이프(604a-c)에서 블록 1(604b)과 연관된 비트들이 손실되었다. 604a, 604c 및 604d를 이용하여 XOR 동작을 수행하는 것은 비트들을 복구할 수 있도록 한다. 예를 들어, 패리티 비트들(110)은 다음 동작: 000 XOR 101 XOR 011 = 110을 수행함으로써 도출되었다. 비트들(604b)은 604a, 604c 및 604d를 이용하여 동일한 동작을 수행함으로써 복구될 수 있다. 예를 들어, 000 XOR 011 XOR 110 = 101.
슈퍼 블록(600)은 설명을 위해 제공된다. 임의의 수의 인덱스 블록들(가령, 2, 5, 10 등)은 패리티 비트들을 저장하는 블록과 함께 사용될 수 있다. 또한, 각 스트라이프 내의 비트들의 크기(워드, 더블 워드, 페이지 등)는 변할 수 있다. 인덱스 페이지 에러들을 정정하기 위해, ECC(error-correcting code)를 이용하는 것과 같이, 패리티 비트들 이외의 방법들이 사용될 수 있다.
슈퍼
블록을
이용한 예시적인 인덱스 페이지 복구 동작
도 7은 도 1a-1b 및 도 6에 도시된 메모리 매핑 아키텍처 내의 슈퍼 블록을 이용하는 예시적인 인덱스 페이지 복구 동작(700)의 흐름도이다. 인덱스 페이지 복구 동작(700)은 데이터 블록들 내에 포함되는 블록 TOC들을 이용하지 않고도 인덱스 페이지를 복구할 수 있다.
몇몇 실시예에서, 동작(700)은 비휘발성 메모리(702) 내에 데이터 페이지를 기입하거나 그로부터 데이터 페이지를 판독하라는 요청을 수신함으로써 시작될 수 있다. 수신된 요청을 처리하려는 시도에서, 인덱스 테이블[가령, 인덱스 테이블(106)]은 요청된 데이터 페이지의 물리적 주소에 대해 컨설팅될 수 있다. 요청된 데이터 페이지에 대한 논리 대 물리적 주소 매핑을 포함하는 인덱스 페이지는, 도 2a에 대하여 전술한 손실 인덱스 페이지들을 식별하는 기술과 유사하게, 손실로서 식별될 수 있다(703). 손실 인덱스 페이지에 대응하는 슈퍼 블록으로부터의 인덱스 페이지들의 스트라이프가 식별될 수 있다(704). 도 6에 도시된 슈퍼 블록을 예로서 참조하면, 인덱스 페이지(604b)가 손실된 경우, 스트라이프(604a-d)는 인덱스 페이지(604b)를 복구하기 위해 식별될 수 있다. 스트라이프 내의 다른 인덱스 페이지들은 에러들을 위해 검사될 수 있다(706). 스트라이프 내에 포함되는 다른 인덱스 페이지들 중 하나에 있는 에러는, 에러 정정을 위해 패리티 비트 또는 다른 기술(가령, ECC)을 이용하는 경우, 문제를 일으킬 수 있다(예를 들어, 패리티는, 스트라이프 내의 다른 인덱스 페이지가 손실된 경우, 인덱스 페이지를 정확하게 복구하지 않을 것이다). 만약 다른 인덱스 페이지들 중 하나가 에러를 포함하는 것으로 밝혀진 경우, 다른 인덱스 페이지 복구 동작[가령, 인덱스 복구 동작(200-400)]이 사용될 수 있다. 손실된 인덱스 페이지를 제외한 스트라이프로부터의 비트들은 (가령, XOR 동작을 이용하여) 조합되어 손실 인덱스 페이지를 재구축한다(708).
인덱스 페이지가 복구된 후에, 부가적인 단계(도시되지 않음)가 복구된 인덱스 페이지의 무결성을 보장하기 위해 수행될 수 있다. 이러한 부가적인 단계들은, 도 2b 및 3b를 참조하여 기술된 단계와 유사하게, 삭제된 페이지에 대해 파일 시스템을 교차 참조하는 단계(이것은 얼마나 자주 패리티 비트들이 갱신되는지에 기초할 필요가 없음) 및 손실된 인덱스 페이지에 대한 인덱스 블록을 비휘발성 메모리의 새로 할당된 블록으로 이동시키는 단계를 포함할 수 있다.
동작(700)은, 비휘발성 메모리 내의 데이터 블록에 대한 블록 TOC들을 액세스할 필요 없이 인덱스 페이지를 복구한다는 점에서 인덱스 페이지를 복구하는데 장점을 제공할 수 있다.
다수의 구현예가 기술되었다. 그렇지만, 다양한 수정이 행해질 수 있다는 것을 알 수 있다. 예컨대, 하나 이상의 구현예들의 엘리먼트들은 또 다른 구현예들을 형성하기 위해 결합, 삭제, 수정 또는 보충될 수 있다. 또 다른 예로서, 도면에 도시된 로직 플로우는 바람직한 결과를 얻기 위해 도시된 특정 순서, 또는 순차적인 순서를 요구하지는 않는다. 또한, 다른 단계들이 기술된 플로우로부터 제공될 수 있거나, 또는 단계들이 제거될 수 있으며, 다른 콤포넌트들이 기술된 시스템으로부터 부가될 수 있거나, 또는 제거될 수 있다. 따라서, 다른 구현예들은 다음의 특허청구범위의 범주 내에 있게 된다.
Claims (20)
- 논리 섹터들을 플래시 메모리 장치 내의 메모리의 물리적 페이지들로 매핑하는 인덱스의 적어도 일부분을 복구하기 위한 요청을 수신하는 단계;
상기 플래시 메모리 장치 내의 메모리의 블록과 연관된 제1 메타데이터를 판독하는 단계 - 상기 제1 메타데이터는 상기 메모리의 블록의 물리적 페이지들을 논리 섹터들로 매핑함 -;
상기 제1 메타데이터에 의해 매핑된 상기 메모리의 블록의 페이지가 상기 인덱스의 요청된 일부분에 대응하는 것을 식별하는 단계; 및
상기 인덱스의 요청된 일부분에 대응하는 것으로 식별된 페이지에 대응하는 엔트리를 상기 인덱스에 기입하는 단계
를 포함하고,
상기 메모리의 블록은, 상기 플래시 메모리 장치 내의 복수의 메모리의 블록들 각각이 얼마나 최근에 액세스 되었는지에 기초하여 상기 복수의 메모리의 블록들로부터 식별되는, 방법. - 제1항에 있어서,
상기 식별된 메모리의 블록은 가장 최근에 액세스된 것인, 방법. - 논리 섹터들을 플래시 메모리 장치 내의 메모리의 물리적 페이지들로 매핑하는 인덱스의 적어도 일부분을 복구하기 위한 요청을 수신하는 단계;
상기 플래시 메모리 장치 내의 메모리의 블록과 연관된 제1 메타데이터를 판독하는 단계 - 상기 제1 메타데이터는 상기 메모리의 블록의 물리적 페이지들을 논리 섹터들로 매핑함 -;
상기 제1 메타데이터에 의해 매핑된 상기 메모리의 블록의 페이지가 상기 인덱스의 요청된 일부분에 대응하는 것을 식별하는 단계; 및
상기 인덱스의 요청된 일부분에 대응하는 것으로 식별된 페이지에 대응하는 엔트리를 상기 인덱스에 기입하는 단계
를 포함하고,
상기 메모리의 블록은, 상기 플래시 메모리 장치 내의 복수의 메모리의 블록들의 각각에 대해 범위를 제공하는 제2 메타데이터에 기초하여 상기 복수의 메모리의 블록들로부터 식별되고, 상기 식별된 메모리의 블록에 대한 범위는 상기 인덱스의 요청된 일부분에 대응하는, 방법. - 제3항에 있어서,
상기 제2 메타데이터에 의해 제공된 범위는, 상기 복수의 블록들의 각각에 대해, 메모리의 블록에 의해 저장된 논리 섹터들의 범위를 포함하는 방법. - 제3항에 있어서,
상기 제2 메타데이터에 의해 제공된 범위는, 상기 복수의 블록들의 각각에 대해, 메모리의 블록에 대응하는 인덱스 페이지들의 범위를 포함하는 방법. - 제3항에 있어서,
상기 제2 메타데이터는 휘발성 메모리에 저장되는 방법. - 제1항에 있어서,
상기 플래시 메모리 장치가 유휴(idle)일 때 상기 인덱스의 요청된 일부분의 잔여 부분이 복구되도록 스케줄링하는 단계를 더 포함하는 방법. - 제1항에 있어서,
상기 인덱스의 요청된 일부분이 복구될 때까지 반복적으로 제1 메타데이터를 판독하고, 논리 섹터를 식별하고, 상기 식별된 페이지를 기입하는 단계를 더 포함하는 방법. - 제1항에 있어서,
상기 인덱스의 요청된 일부분에 기입되는 엔트리와 연관된 메모리가 삭제된 메모리에 관한 정보를 저장하는 파일 시스템과 상기 엔트리를 교차 참조(cross-referencing)함으로써 삭제된 것을 판정하는 단계; 및
상기 엔트리와 연관된 메모리가 삭제된 것을 표시하기 위해 상기 인덱스의 요청된 일부분에 상기 엔트리를 재기입하는 단계를 더 포함하는 방법. - 제1항에 있어서,
메모리의 새로운 블록을 할당하는 단계; 및
상기 인덱스와 연관된 메모리의 블록으로부터 상기 할당된 메모리의 새로운 블록으로 데이터를 전달하는 단계를 더 포함하는 방법. - 논리 섹터들을 플래시 메모리 장치 내의 메모리의 물리적 페이지들로 매핑하는 제1 인덱스 페이지의 적어도 일부분을 복구하기 위한 요청을 수신하는 단계 - 상기 제1 인덱스 페이지는, 상기 제1 인덱스 페이지를 제2 인덱스 페이지 및 메타데이터 페이지와 연관시키는 슈퍼 블록의 일부임 -;
상기 제2 인덱스 페이지의 적어도 일부분과 상기 메타데이터 페이지의 적어도 일부분을 조합함으로써 상기 인덱스의 요청된 일부분에 대한 데이터를 결정하는 단계; 및
상기 결정된 데이터를 상기 인덱스의 요청된 일부분에 기입하는 단계
를 포함하는 방법. - 제11항에 있어서,
상기 제1 인덱스, 상기 제2 인덱스, 및 상기 메타데이터는 상기 플래시 메모리 장치의 물리적으로 상이한 다이(die)들상에 저장되는 방법. - 제11항에 있어서,
상기 제2 인덱스 페이지의 일부분 및 상기 메타데이터 페이지의 일부분은 배타적-or (XOR) 연산을 이용하여 조합되어 상기 인덱스의 요청된 일부분을 복구하기 위한 데이터를 결정하는 방법. - 제11항에 있어서,
상기 메타테이터는, 상기 제1 인덱스 페이지와 상기 제2 인덱스 페이지를 XOR 연산을 이용하여 조합함으로써 이전에 생성된 패리티 정보를 포함하는 방법. - 비휘발성 메모리; 및
상기 비휘발성 메모리에 연결된 컨트롤러
를 포함하고,
상기 컨트롤러는, 논리 섹터들을 상기 비휘발성 메모리의 물리적 페이지들로 매핑하는 인덱스의 적어도 일부분을 복구하기 위한 요청을 수신하고, 상기 비휘발성 메모리의 블록과 연관된 제1 메타데이터를 판독하고 - 상기 제1 메타데이터는 상기 비휘발성 메모리에 저장되고, 상기 비휘발성 메모리의 블록의 물리적 페이지들을 논리 섹터들로 매핑함 -, 상기 제1 메타데이터에 의해 매핑된 상기 비휘발성 메모리의 블록의 페이지가 상기 인덱스의 요청된 일부분에 대응하는 것을 식별하고, 상기 인덱스의 요청된 일부분에 대응하는 것으로 식별된 페이지에 대응하는 엔트리를 상기 인덱스에 기입하도록 동작하며,
상기 메모리의 블록은, 상기 비휘발성 메모리의 복수의 메모리의 블록들 각각이 얼마나 최근에 액세스 되었는지에 기초하여 상기 복수의 메모리의 블록들로부터 식별되는, 시스템. - 제15항에 있어서,
상기 식별된 메모리의 블록은 가장 최근에 액세스된 것인, 시스템. - 비휘발성 메모리; 및
상기 비휘발성 메모리에 연결된 컨트롤러
를 포함하고,
상기 컨트롤러는, 논리 섹터들을 상기 비휘발성 메모리의 물리적 페이지들로 매핑하는 인덱스의 적어도 일부분을 복구하기 위한 요청을 수신하고, 상기 비휘발성 메모리의 블록과 연관된 제1 메타데이터를 판독하고 - 상기 제1 메타데이터는 상기 비휘발성 메모리에 저장되고, 상기 비휘발성 메모리의 블록의 물리적 페이지들을 논리 섹터들로 매핑함 -, 상기 제1 메타데이터에 의해 매핑된 상기 비휘발성 메모리의 블록의 페이지가 상기 인덱스의 요청된 일부분에 대응하는 것을 식별하고, 상기 인덱스의 요청된 일부분에 대응하는 것으로 식별된 페이지에 대응하는 엔트리를 상기 인덱스에 기입하도록 동작하며,
상기 메모리의 블록은, 상기 비휘발성 메모리의 복수의 메모리의 블록들의 각각에 대해 범위를 제공하는 제2 메타데이터에 기초하여 상기 복수의 메모리의 블록들로부터 식별되고, 상기 식별된 메모리의 블록에 대한 범위는 상기 인덱스의 요청된 일부분에 대응하는, 시스템. - 제17항에 있어서,
상기 제2 메타데이터에 의해 제공된 범위는, 상기 복수의 블록들의 각각에 대해, 메모리의 블록에 의해 저장된 논리 섹터들의 범위를 포함하는 시스템. - 제17항에 있어서,
상기 제2 메타데이터에 의해 제공된 범위는, 상기 복수의 블록들의 각각에 대해, 메모리의 블록에 대응하는 인덱스 페이지들의 범위를 포함하는 시스템. - 제17항에 있어서,
상기 제2 메타데이터를 저장하는 휘발성 메모리를 더 포함하는 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/509,071 | 2009-07-24 | ||
US12/509,071 US8468293B2 (en) | 2009-07-24 | 2009-07-24 | Restore index page |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110100232A Division KR20110117045A (ko) | 2009-07-24 | 2011-09-30 | 인덱스 페이지 복구 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110010580A KR20110010580A (ko) | 2011-02-01 |
KR101257989B1 true KR101257989B1 (ko) | 2013-04-24 |
Family
ID=43066897
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100071571A KR101257989B1 (ko) | 2009-07-24 | 2010-07-23 | 인덱스 페이지 복구 |
KR1020110100232A KR20110117045A (ko) | 2009-07-24 | 2011-09-30 | 인덱스 페이지 복구 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110100232A KR20110117045A (ko) | 2009-07-24 | 2011-09-30 | 인덱스 페이지 복구 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8468293B2 (ko) |
EP (1) | EP2282267A1 (ko) |
KR (2) | KR101257989B1 (ko) |
CN (1) | CN102483714B (ko) |
WO (1) | WO2011011480A1 (ko) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8812816B2 (en) * | 2010-03-23 | 2014-08-19 | Apple Inc. | Garbage collection schemes for index block |
US8726126B2 (en) * | 2010-03-23 | 2014-05-13 | Apple Inc. | Non-regular parity distribution detection via metadata tag |
US8762340B2 (en) * | 2010-05-14 | 2014-06-24 | Salesforce.Com, Inc. | Methods and systems for backing up a search index in a multi-tenant database environment |
US8204871B1 (en) * | 2010-09-28 | 2012-06-19 | Emc Corporation | Extended file mapping cache for fast input-output |
US8892981B2 (en) | 2010-09-30 | 2014-11-18 | Apple Inc. | Data recovery using outer codewords stored in volatile memory |
US8738882B2 (en) | 2011-06-03 | 2014-05-27 | Apple Inc. | Pre-organization of data |
US9104614B2 (en) | 2011-09-16 | 2015-08-11 | Apple Inc. | Handling unclean shutdowns for a system having non-volatile memory |
US8924632B2 (en) | 2011-09-16 | 2014-12-30 | Apple Inc. | Faster tree flattening for a system having non-volatile memory |
US9235502B2 (en) | 2011-09-16 | 2016-01-12 | Apple Inc. | Systems and methods for configuring non-volatile memory |
US9026496B1 (en) * | 2011-09-30 | 2015-05-05 | Emc Corporation | Efficient building of restore list |
US8554963B1 (en) | 2012-03-23 | 2013-10-08 | DSSD, Inc. | Storage system with multicast DMA and unified address space |
US8370567B1 (en) * | 2012-03-23 | 2013-02-05 | DSSD, Inc. | Storage system with self describing data |
US8392428B1 (en) | 2012-09-12 | 2013-03-05 | DSSD, Inc. | Method and system for hash fragment representation |
CN103049390B (zh) * | 2012-12-14 | 2016-03-09 | 华为技术有限公司 | 应用元数据的数据处理方法及存储系统 |
US9158678B2 (en) * | 2013-03-13 | 2015-10-13 | Kabushiki Kaisha Toshiba | Memory address management system and method |
US9069695B2 (en) | 2013-03-14 | 2015-06-30 | Apple Inc. | Correction of block errors for a system having non-volatile memory |
US20140281780A1 (en) * | 2013-03-15 | 2014-09-18 | Teradata Corporation | Error detection and recovery of transmission data in computing systems and environments |
CN103207916B (zh) * | 2013-04-24 | 2017-09-19 | 曙光信息产业(北京)有限公司 | 元数据处理的方法和装置 |
WO2015130314A1 (en) | 2014-02-28 | 2015-09-03 | Hewlett-Packard Development Company, L.P. | Mapping mode shift |
US9788067B2 (en) * | 2014-06-20 | 2017-10-10 | Ray Enterprises, LLC | Caching programming data |
US10127805B2 (en) * | 2014-06-20 | 2018-11-13 | Ray Enterprises Llc | Caching programming data |
US9600409B2 (en) * | 2014-08-29 | 2017-03-21 | EMC IP Holding Company LLC | Method and system for garbage collection in a storage system based on longevity of stored data |
US9378149B1 (en) | 2014-08-29 | 2016-06-28 | Emc Corporation | Method and system for tracking modification times of data in a storage system |
US10152412B2 (en) * | 2014-09-23 | 2018-12-11 | Oracle International Corporation | Smart flash cache logger |
US9792069B2 (en) * | 2014-09-29 | 2017-10-17 | Western Digital Technologies, Inc. | Offline deduplication for solid-state storage devices |
CN104317833B (zh) * | 2014-10-10 | 2019-03-26 | 深圳市锐明技术股份有限公司 | 一种恢复系统文件索引的方法及装置 |
WO2016159930A1 (en) | 2015-03-27 | 2016-10-06 | Hewlett Packard Enterprise Development Lp | File migration to persistent memory |
CN107209720B (zh) * | 2015-04-02 | 2020-10-13 | 慧与发展有限责任合伙企业 | 用于页面高速缓存的系统及方法以及存储介质 |
US10331364B2 (en) * | 2015-10-16 | 2019-06-25 | Cnex Labs, Inc. | Method and apparatus for providing hybrid mode to access SSD drive |
US10157004B2 (en) * | 2016-04-14 | 2018-12-18 | Sandisk Technologies Llc | Storage system and method for recovering data corrupted in a host memory buffer |
CN106339280B (zh) * | 2016-08-31 | 2019-05-24 | 四川效率源信息安全技术股份有限公司 | 一种重组展讯系统数据的方法 |
CN109032518A (zh) * | 2018-07-19 | 2018-12-18 | 江苏华存电子科技有限公司 | 一种闪存内超级块的类型识别方法 |
CN111611258B (zh) * | 2020-05-27 | 2023-09-19 | 杭州海康威视系统技术有限公司 | 流数据的恢复方法和存储设备 |
CN114328375A (zh) * | 2020-09-29 | 2022-04-12 | 伊姆西Ip控股有限责任公司 | 用于存储管理的方法、设备和计算机程序产品 |
CN112698984B (zh) * | 2020-12-17 | 2023-07-04 | 宁波三星医疗电气股份有限公司 | 嵌入式设备的数据库恢复方法、电子设备及介质 |
CN112700814B (zh) * | 2021-01-05 | 2024-08-16 | 潍柴动力股份有限公司 | Eeprom数据的读取方法、装置、电控设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030093610A1 (en) * | 2001-11-15 | 2003-05-15 | Lai Chen Nan | Algorithm of flash memory capable of quickly building table and preventing improper operation and control system thereof |
US20090150605A1 (en) | 2007-12-06 | 2009-06-11 | David Flynn | Apparatus, system, and method for converting a storage request into an append data storage command |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4323987A (en) * | 1980-03-28 | 1982-04-06 | Pitney Bowes Inc. | Power failure memory support system |
US5341330A (en) * | 1992-10-30 | 1994-08-23 | Intel Corporation | Method for writing to a flash memory array during erase suspend intervals |
US5404485A (en) | 1993-03-08 | 1995-04-04 | M-Systems Flash Disk Pioneers Ltd. | Flash file system |
US5689704A (en) * | 1994-03-04 | 1997-11-18 | Sony Corporation | Recording medium, recording/playback device which uses commands in character string form for audio system control |
US5935259A (en) * | 1996-09-24 | 1999-08-10 | Apple Computer, Inc. | System and method for preventing damage to media files within a digital camera device |
US6199076B1 (en) * | 1996-10-02 | 2001-03-06 | James Logan | Audio program player including a dynamic program selection controller |
JPH10260912A (ja) * | 1997-03-17 | 1998-09-29 | Mitsubishi Electric Corp | メモリカード |
SG82587A1 (en) * | 1997-10-21 | 2001-08-21 | Sony Corp | Recording apparatus, recording method, playback apparatus, playback method, recording/playback apparatus, recording/playback method, presentation medium and recording medium |
JPH11203191A (ja) * | 1997-11-13 | 1999-07-30 | Seiko Epson Corp | 不揮発性記憶装置、不揮発性記憶装置の制御方法、および、不揮発性記憶装置を制御するプログラムを記録した情報記録媒体 |
US6427186B1 (en) * | 1999-03-30 | 2002-07-30 | Frank (Fong-Long) Lin | Memory, interface system and method for mapping logical block numbers to physical sector numbers in a flash memory, using a master index table and a table of physical sector numbers |
JP3873523B2 (ja) * | 1999-05-21 | 2007-01-24 | ソニー株式会社 | 再生装置 |
ID27748A (id) * | 1999-05-28 | 2001-04-26 | Matsushita Electric Ind Co Ltd | Kartu memori semikonduktor, peralatan playback, peralatan perekam, metoda playback, metoda perekam dan medium perekam yang dapat dibaca komputer |
US7660941B2 (en) * | 2003-09-10 | 2010-02-09 | Super Talent Electronics, Inc. | Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories |
US6816856B2 (en) * | 2001-06-04 | 2004-11-09 | Hewlett-Packard Development Company, L.P. | System for and method of data compression in a valueless digital tree representing a bitset |
DE10127198A1 (de) * | 2001-06-05 | 2002-12-19 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Ermitteln einer physikalischen Adresse aus einer virtuellen Adresse unter Verwendung einer hierarchischen Abbildungsvorschrift mit komprimierten Knoten |
JP4362248B2 (ja) * | 2001-09-03 | 2009-11-11 | パイオニア株式会社 | 情報記録再生装置およびコンピュータプログラム |
US7139937B1 (en) * | 2002-08-15 | 2006-11-21 | Network Appliance, Inc. | Method and apparatus to establish safe state in a volatile computer memory under multiple hardware and software malfunction conditions |
US8041878B2 (en) * | 2003-03-19 | 2011-10-18 | Samsung Electronics Co., Ltd. | Flash file system |
US7028139B1 (en) * | 2003-07-03 | 2006-04-11 | Veritas Operating Corporation | Application-assisted recovery from data corruption in parity RAID storage using successive re-reads |
US20060008256A1 (en) * | 2003-10-01 | 2006-01-12 | Khedouri Robert K | Audio visual player apparatus and system and method of content distribution using the same |
JP3912355B2 (ja) * | 2003-10-14 | 2007-05-09 | ソニー株式会社 | データ管理装置、データ管理方法、不揮発性メモリ、不揮発性メモリを有する記憶装置及びデータ処理システム |
US20050251617A1 (en) * | 2004-05-07 | 2005-11-10 | Sinclair Alan W | Hybrid non-volatile memory system |
US7143120B2 (en) * | 2004-05-03 | 2006-11-28 | Microsoft Corporation | Systems and methods for automated maintenance and repair of database and file systems |
JP4209820B2 (ja) * | 2004-07-15 | 2009-01-14 | 株式会社ハギワラシスコム | メモリカードシステム及び該メモリカードシステムで使用されるライトワンス型メモリカード、ホストシステムと半導体記憶デバイスとからなるシステム |
US7366887B2 (en) * | 2005-07-11 | 2008-04-29 | Lenovo (Singapore) Pte. Ltd. | System and method for loading programs from HDD independent of operating system |
US20070016721A1 (en) * | 2005-07-18 | 2007-01-18 | Wyse Technology Inc. | Flash file system power-up by using sequential sector allocation |
JP5076411B2 (ja) * | 2005-11-30 | 2012-11-21 | ソニー株式会社 | 記憶装置、コンピュータシステム |
US7917723B2 (en) * | 2005-12-01 | 2011-03-29 | Microsoft Corporation | Address translation table synchronization |
US7711923B2 (en) * | 2006-06-23 | 2010-05-04 | Microsoft Corporation | Persistent flash memory mapping table |
KR100843543B1 (ko) * | 2006-10-25 | 2008-07-04 | 삼성전자주식회사 | 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법 |
JP4967680B2 (ja) * | 2007-01-23 | 2012-07-04 | ソニー株式会社 | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 |
US7596643B2 (en) * | 2007-02-07 | 2009-09-29 | Siliconsystems, Inc. | Storage subsystem with configurable buffer |
US8135900B2 (en) * | 2007-03-28 | 2012-03-13 | Kabushiki Kaisha Toshiba | Integrated memory management and memory management method |
KR101437397B1 (ko) * | 2007-10-31 | 2014-09-05 | 삼성전자주식회사 | 비휘발성 메모리 장치의 데이터 관리 방법 및 맵핑 테이블업데이트 방법 |
US8195912B2 (en) * | 2007-12-06 | 2012-06-05 | Fusion-io, Inc | Apparatus, system, and method for efficient mapping of virtual and physical addresses |
US8892831B2 (en) * | 2008-01-16 | 2014-11-18 | Apple Inc. | Memory subsystem hibernation |
US8397014B2 (en) * | 2008-02-04 | 2013-03-12 | Apple Inc. | Memory mapping restore and garbage collection operations |
US20090307409A1 (en) * | 2008-06-06 | 2009-12-10 | Apple Inc. | Device memory management |
-
2009
- 2009-07-24 US US12/509,071 patent/US8468293B2/en active Active
-
2010
- 2010-07-21 CN CN201080032931.XA patent/CN102483714B/zh not_active Expired - Fee Related
- 2010-07-21 WO PCT/US2010/042696 patent/WO2011011480A1/en active Application Filing
- 2010-07-23 KR KR1020100071571A patent/KR101257989B1/ko active IP Right Grant
- 2010-07-23 EP EP20100170700 patent/EP2282267A1/en not_active Withdrawn
-
2011
- 2011-09-30 KR KR1020110100232A patent/KR20110117045A/ko not_active Application Discontinuation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030093610A1 (en) * | 2001-11-15 | 2003-05-15 | Lai Chen Nan | Algorithm of flash memory capable of quickly building table and preventing improper operation and control system thereof |
US20090150605A1 (en) | 2007-12-06 | 2009-06-11 | David Flynn | Apparatus, system, and method for converting a storage request into an append data storage command |
Also Published As
Publication number | Publication date |
---|---|
US8468293B2 (en) | 2013-06-18 |
WO2011011480A1 (en) | 2011-01-27 |
KR20110117045A (ko) | 2011-10-26 |
KR20110010580A (ko) | 2011-02-01 |
CN102483714B (zh) | 2015-06-10 |
CN102483714A (zh) | 2012-05-30 |
EP2282267A1 (en) | 2011-02-09 |
US20110022780A1 (en) | 2011-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101257989B1 (ko) | 인덱스 페이지 복구 | |
US8397014B2 (en) | Memory mapping restore and garbage collection operations | |
US9665301B2 (en) | Methods and devices for storing user data along with addresses corresponding to physical pages storing valid data | |
US7890550B2 (en) | Flash memory system and garbage collection method thereof | |
US7516295B2 (en) | Method of remapping flash memory | |
KR101562781B1 (ko) | 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성 | |
KR101392701B1 (ko) | 메모리 장치를 위한 삽입된 매핑 정보 | |
KR101257990B1 (ko) | 인덱스 캐시 트리 | |
US8423710B1 (en) | Sequential writes to flash memory | |
CN108038026B (zh) | 一种基于闪存的数据快速恢复方法与系统 | |
US20100191897A1 (en) | System and method for wear leveling in a data storage device | |
CN104978281A (zh) | 数据存储设备中的数据完整性管理 | |
US20100125694A1 (en) | Memory device and management method of memory device | |
KR20080037283A (ko) | 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법 | |
JP2013065309A (ja) | 不揮発性メモリシステムのためのウィーブシーケンスカウンタ | |
US9292435B2 (en) | Memory device and method of operation | |
CN106557432B (zh) | 缓冲存储器管理方法、存储器控制电路单元及存储装置 | |
US7945762B2 (en) | Method and apparatus for memory management in a non-volatile memory system using a block table | |
TWI540428B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
KR101369408B1 (ko) | 스토리지 시스템 및 이의 데이터 전송 방법 | |
Hsu et al. | A version-based strategy for reliability enhancement of flash file systems | |
KR100982440B1 (ko) | 단일 플래시 메모리의 데이터 관리시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
A107 | Divisional application of patent | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20160318 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20170317 Year of fee payment: 5 |