KR101446832B1 - 메모리 맵핑 기술 - Google Patents
메모리 맵핑 기술 Download PDFInfo
- Publication number
- KR101446832B1 KR101446832B1 KR1020117031311A KR20117031311A KR101446832B1 KR 101446832 B1 KR101446832 B1 KR 101446832B1 KR 1020117031311 A KR1020117031311 A KR 1020117031311A KR 20117031311 A KR20117031311 A KR 20117031311A KR 101446832 B1 KR101446832 B1 KR 101446832B1
- Authority
- KR
- South Korea
- Prior art keywords
- block
- pages
- volatile memory
- toc
- candidate block
- 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/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
-
- 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)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
비휘발성 메모리의 메모리 맵핑 기술이 개시되며, 이 기술에서 논리적 섹터들은 휘발성 및 비휘발성 메모리의 데이터 구조를 사용하여 물리적 페이지들로 맵핑된다. 일부 구현예에서, 비휘발성 메모리의 제1 룩업 테이블은 논리적 섹터들을 물리적 페이지들로 직접 맵핑한다. 휘발성 메모리의 제2 룩업 테이블은 비휘발성 메모리의 제1 룩업 테이블의 물리적 어드레스를 저장한다. 일부 구현예에서, 휘발성 메모리의 캐시는 가장 최근에 기록된 논리적 섹터들의 물리적 어드레스들을 저장한다. 또한, 폐기물 수집 및 복원 동작에 사용될 수 있는 블록 콘텐트를 설명하는 블록 TOC가 개시된다.
Description
[관련 출원]
본 출원은 "Memory Mapping Techniques"라는 명칭으로 2008년 2월 4일 출원된 미국 임시출원 제 61/026,095 호의 우선권에 대한 이익을 청구하며, 그 임시출원 전체가 본 명세서에서 참조문헌으로 인용된다.
본 출원은 "Memory Mapping Architecture"라는 명칭으로 2008년 8월 18일 출원된 미국 특허출원 제12/193,563 호(대리인 사건 번호 22748-0012001) 및 "Memory Restore & Garbage Collection"이라는 명칭으로 2008년 8월 18일 출원된 미국 특허출원 제12/193,613 호(대리인 사건 번호 22748-0013001)와 관련되며, 그 각각의 특허출원의 전체는 본 명세서에서 참조문헌으로 인용된다.
본 발명은 일반적으로 메모리 맵핑에 관한 것이다.
플래시 메모리는 전기적으로 소거가능한 프로그램가능 판독 전용 메모리(EEPROM)의 한 형태이다. 플래시 메모리는 비휘발성이고 비교적 밀도가 높기 때문에, 이러한 플래시 메모리들은 핸드헬드 컴퓨터, 이동 전화기, 디지털 카메라, 휴대용 음악 플레이어, 및 다른 스토리지 솔루션(예컨대, 자기 디스크)이 부적합한 다른 많은 장치에 파일 및 다른 영구적인 객체를 저장하기 위해 사용된다. 불행하게도, 플래시는 두 가지 제약을 받고 있다. 첫째, 비트들은 단지 큰 메모리 블록을 소거함으로써 지울 수 있다. 둘째, 각 블록은 제한된 횟수만큼 소거될 수 있으며, 그 후 각 블록은 더 이상 신뢰성 있게 데이터를 저장할 수 없게 된다. 이러한 제약들로 인해, 플래시 메모리를 효과적으로 사용하기 위해서는 종종 복잡한 데이터 구조 및 알고리즘이 필요하다. 이와 같은 알고리즘 및 데이터 구조는 제자리 아닌(not-in-place) 데이터의 갱신을 효율적으로 지원하고, 소거 횟수를 줄여주며, 장치 내 블록들의 사용(wear)을 레벨화하는데 사용된다.
플래시 메모리는 페이지를 포함하는 블록이 먼저 소거되지 않으면 제자리(in-place) 갱신을 지원하지 않거나 물리적 메모리 페이지에 재기록하지 않는다. 이러한 단점을 극복하기 위해, 종종 하드웨어 및/또는 소프트웨어 계층이 플래시 서브시스템에 부가된다. 종종 플래시 변환 계층(FTL)이라 지칭되는 이러한 계층은 플래시 메모리와 함께 논리적 섹터를 물리적 메모리 페이지로 맵핑함으로써 보조 저장 장치를 모방할 수 있다. 많은 플래시 기반 장치들의 경우, FTL은 하드웨어 제어기로서 구현된다. 제어기는 소량의 휘발성 메모리(예컨대, RAM)와 함께 프로세서 또는 마이크로컨트롤러를 포함할 수 있다. 제어기는 파일 시스템(예컨대, 논리적 섹터)으로부터의 판독/기록 요청을 특정 플래시 블록 상의 판독/기록 동작으로 변환하고, 오손 블록(dirty blocks)을 소거하고 자유 블록(free blocks)을 이용하도록 "폐기물 수집"(GC)을 개시하는 역할을 담당할 수 있다.
무작위 액세스 또는 갱신을 필요로 하는 플래시 장치(예컨대, 스마트폰)는 FTL이 추가의 판독/기록 및 GC 동작을 실행하게 할 수 있다. 이러한 추가의 동작들은 장치 거동을 예측 불가능하게 하고 현저한 성능 저하를 초래할 수 있다.
비휘발성 메모리의 메모리 맵핑 기술이 개시되며, 상기 기술에서 논리적 섹터들은 휘발성 및 비휘발성 메모리의 데이터 구조를 사용하여 물리적 페이지들로 맵핑된다. 일부 구현예에서, 비휘발성 메모리의 제1 룩업 테이블(lookup table)은 논리적 섹터들을 물리적 페이지들로 직접 맵핑한다. 휘발성 메모리의 제2 룩업 테이블은 비휘발성 메모리의 제1 룩업 테이블의 위치를 저장한다. 일부 구현예에서, 휘발성 메모리의 캐시는 가장 최근에 기록된 논리적 섹터들의 물리적 어드레스들을 저장한다. 또한, 폐기물 수집 및 복원 동작에 사용될 수 있는 블록 콘텐트를 설명하는 블록 TOC가 개시된다.
개시된 메모리 맵핑 기술은 통상적인 플래시 메모리 블록 맵핑 기술에 비해 여러가지 장점을 제공한다. 이들 중 일부의 장점은, 이것으로 제한되지 않지만, 1) 논리적 섹터들을 물리적 페이지들로 직접 맵핑함으로써 블록 맵핑을 필요로 하지 않으며, 2) 현재 블록의 모든 페이지들이 할당될 때까지 새로운 블록들을 할당할 필요가 없으며, 3) 상이한 논리적 영역들에 상이한 저널링(journaling) 블록들을 할당할 필요가 없으며, 그리고 4) 현재 블록의 모든 페이지들이 할당될 때까지 GC 동작을 트리거할 필요가 없다는 것이다.
비휘발성 메모리의 메모리 맵핑 기술이 개시되며, 이 기술에서 논리적 섹터들은 휘발성 및 비휘발성 메모리의 데이터 구조를 사용하여 물리적 페이지들로 맵핑된다. 일부 구현예에서, 비휘발성 메모리의 제1 룩업 테이블은 논리적 섹터들을 물리적 페이지들로 직접 맵핑한다. 휘발성 메모리의 제2 룩업 테이블은 비휘발성 메모리의 제1 룩업 테이블의 물리적 어드레스를 저장한다. 일부 구현예에서, 휘발성 메모리의 캐시는 가장 최근에 기록된 논리적 섹터들의 물리적 어드레스들을 저장한다. 또한, 폐기물 수집 및 복원 동작에 사용될 수 있는 블록 콘텐트를 설명하는 블록 TOC가 개시된다.
도 1은 인덱스 테이블 및 인덱스 콘텐츠 테이블(TOC)을 사용하여 논리적 섹터를 물리적 페이지로 직접 맵핑하기 위한 예시적인 메모리 맵핑 구조를 예시하는 블록도이다.
도 2a 내지 도 2b는 도 1에 도시된 메모리 맵핑 구조를 사용하는 예시적인 판독 동작의 흐름도이다.
도 3a 내지 도 3c는 도 1의 메모리 맵핑 구조를 사용하는 예시적인 기록 동작의 흐름도이다.
도 4a 내지 도 4b는 도 1의 메모리 맵핑 구조를 사용하는 예시적인 복원 동작의 흐름도이다.
도 5a는 도 1 내지 도 4 및 도 7의 메모리 구조 및 동작을 구현하기 위한 예시적인 메모리 서브시스템의 블록도이다.
도 5b는 도 1 내지 도 4 및 도 7의 메모리 구조 및 동작을 구현하기 위한 메모리 서브시스템을 포함하는 예시적인 장치의 시스템 구조를 예시하는 블록도이다.
도 6은 블록 콘텐츠 테이블을 갖는 예시적인 현재 데이터 블록을 예시한다.
도 7은 도 6의 블록 콘텐츠 테이블을 사용하는 예시적인 GC 동작의 흐름도이다.
도 2a 내지 도 2b는 도 1에 도시된 메모리 맵핑 구조를 사용하는 예시적인 판독 동작의 흐름도이다.
도 3a 내지 도 3c는 도 1의 메모리 맵핑 구조를 사용하는 예시적인 기록 동작의 흐름도이다.
도 4a 내지 도 4b는 도 1의 메모리 맵핑 구조를 사용하는 예시적인 복원 동작의 흐름도이다.
도 5a는 도 1 내지 도 4 및 도 7의 메모리 구조 및 동작을 구현하기 위한 예시적인 메모리 서브시스템의 블록도이다.
도 5b는 도 1 내지 도 4 및 도 7의 메모리 구조 및 동작을 구현하기 위한 메모리 서브시스템을 포함하는 예시적인 장치의 시스템 구조를 예시하는 블록도이다.
도 6은 블록 콘텐츠 테이블을 갖는 예시적인 현재 데이터 블록을 예시한다.
도 7은 도 6의 블록 콘텐츠 테이블을 사용하는 예시적인 GC 동작의 흐름도이다.
시스템 개요
도 1은 룩업 테이블을 사용하여 논리적 섹터를 물리적 페이지로 맵핑하기 위한 예시적인 메모리 맵핑 구조(100)를 예시하는 블록도이다. 일부 구현예에서, 휘발성 메모리(예컨대, RAM)의 룩업 테이블(102)은 비휘발성 메모리(예컨대, 플래시 메모리)의 룩업 테이블(106)의 위치(예컨대, 물리적 어드레스)를 저장한다. 룩업 테이블(106)은 데이터 페이지들(108)의 물리적 어드레스들을 저장한다. 일부 구현예에서, 휘발성 메모리의 캐시(104)는 고속 판독이 가능하도록 최근에 기록된 논리적 섹터의 물리적 어드레스를 저장한다. 도시된 예에서, 룩업 테이블(102)은 인덱스 TOC(102)라고도 지칭되고, 룩업 테이블(106)은 인덱스 테이블(106) 또는 인덱스 페이지라고도 지칭되며, 캐시(104)는 인덱스 테이블 캐시(104)라고도 지칭된다.
이러한 구조(100)에 있어서, 인덱스 TOC(102)는 인덱스 테이블(106)이 비휘발성 메모리에 저장될 수 있게 한다. 이는 전형적으로 제어기에서 사용가능한 소량의 RAM은 제어기의 가격, 면적 및 전력 소모의 상승으로 인하여 축척될 수 없기 때문에 유리하다. 일부 구현예에서, 휘발성 메모리는 자신의 가용성 또는 다른 트리거 이벤트 및/또는 동작 모드에 기초하여 동적으로 구성될 수 있다.
휘발성 메모리의 예시적인 데이터 구조
일부 구현예에서, 데이터 블록은 휘발성 메모리에 저장되며, 블록 상태 데이터(예컨대, 자유(free), 불량(bad), 할당(allocated), 현재(current)), 유효 페이지 번호, 소거 카운트 및 에러 정정 코드(ECC) 픽스(fix) 카운트를 포함할 수 있는 블록 테이블과 연관될 수 있다.
일부 구현예에서, 인덱스 TOC(102)의 각 엔트리는 인덱스 테이블(106) 엔트리의 비휘발성 메모리에 물리적 어드레스를 저장하고 인덱스 테이블 캐시(104)에 엔트리에 대한 포인터를 저장한다. 소정의 인덱스 테이블(106) 엔트리가 인덱스 테이블 캐시(104)에 저장되지 않음을 표시하기 위해 어드레스 0xff 또는 다른 적절한 표시자가 인덱스 TOC(102) 엔트리에 배치될 수 있다.
일부 구현예에서, 휘발성 메모리(예컨대, RAM)에는 다음의 구조들, 즉, 인덱스 테이블 캐시의 다수의 자유 엔트리, 현재 데이터 블록(예컨대, 기록 또는 갱신 동작에 사용 중인 블록), 현재 블록의 다음 자유 페이지에 대한 포인터, 현재 블록 TOC(예컨대, 블록에 저장되어 논리적 섹터를 블록 내 페이지로 맵핑하는 정보를 포함하는 TOC), 현재 인덱스 블록(예컨대, 인덱스 갱신에 사용 중인 블록), 인덱스 블록의 다음 자유 페이지에 대한 포인터, 현재 인덱스 블록 TOC 및 다수의 자유 블록이 할당되어야 한다.
일부 구현예에서, 인덱스 테이블 캐시(104)의 각 엔트리는, 이것으로 제한되지 않지만, 데이터를 저장하는 버퍼(예컨대, 2K 버퍼), 상태 데이터(예컨대, 양호(clean), 오손(dirty), 자유(free)), 카운터(예컨대, 특정 블록이 액세스 되는 횟수를 표시하는 직렬 카운터 또는 카운트)를 포함할 수 있다.
전술한 데이터 구조는 예시적이며, 응용에 따라 다른 데이터 구조들이 사용될 수 있다. 블록 TOC와 같은 데이터 구조는 다른 도면을 참조하여 더 상세히 설명된다.
예시적인 판독 동작
도 2a 내지 도 2b는 도 1에 도시된 메모리 맵핑 구조를 사용하는 예시적인 판독 동작(200)의 흐름도이다.
도 2a를 참조하면, 일부 구현예에서, 판독 동작(200)은 하나 이상의 논리적 섹터(202)와 연관된 판독 요청을 획득함으로써 시작할 수 있다. 예를 들어, 판독 요청은 파일 시스템에 의해 발행될 수 있다. 판독 요청은 제1 섹터 번호 및 다수의 연속 섹터들을 포함할 수 있다. 요청되는 각각의 논리적 섹터에 대하여(204), 휘발성 메모리의 인덱스 TOC(예컨대, 인덱스 TOC(102))가 체크되어(206) 현재의 논리적 섹터와 연관된 데이터 페이지 어드레스가 그 휘발성 메모리의 인덱스 테이블 캐시(예컨대, 인덱스 테이블 캐시(104))에 저장되어 있는지를 결정한다. 만일 데이터 페이지 어드레스가 인덱스 테이블 캐시에 저장되어 있으면(208), 데이터 페이지 어드레스가 인덱스 테이블 캐시로부터 판독되고(210) 비휘발성 메모리에서 판독 동작을 수행하도록 사용된다(212).
만일 데이터 페이지 어드레스가 인덱스 테이블 캐시에 저장되어 있지 않으면(208), 데이터 페이지 어드레스를 저장하는 관련 인덱스 테이블 엔트리의 물리적 페이지 어드레스가 인덱스 TOC로부터 판독되고(214), 데이터 페이지 어드레스를 저장하는 관련 인덱스 테이블 엔트리가 인덱스 테이블 엔트리로부터 판독되어 인덱스 테이블 캐시에 저장된다(216). 이후에, 데이터 페이지 어드레스는 인덱스 테이블 캐시로부터 판독되고(210) 비휘발성 메모리에서 판독 동작을 수행하도록 사용될 수 있다(212).
만일 논리적 섹터가 더 처리되어야 한다면(204), 판독 동작을 위해 논리적 섹터가 모두 처리될 때까지 전술한 단계들이 반복 수행된다(200).
일부 구현예에서, 만일 단계(216) 동안에 인덱스 테이블 캐시가 충만(full) 상태이면, 인덱스 테이블 캐시 내 오래된 데이터 페이지 어드레스들은 비휘발성 메모리의 인덱스 테이블로부터 판독된 새로운 데이터 페이지 어드레스들을 위한 공간을 만들도록 플러싱(flushed)될 수 있다. 인덱스 테이블 캐시의 플러싱은 비휘발성 메모리에서의 불필요한 기록 동작을 트리거할 수 있다. 불필요한 기록 동작을 방지하기 위해, 휘발성 메모리에 오버플로(overflow) 버퍼가 생성되어 비휘발성 메모리의 인덱스 테이블로부터 판독된 데이터 페이지 어드레스를 저장하는데 사용될 수 있다. 오버플로 버퍼는 판독 동작(200)에서 사용되는 데이터 페이지 어드레스를 획득하기 위해 판독될 수 있다. 따라서, 휘발성 메모리에서 오버플로 버퍼를 생성하면 판독 동작 동안에 비휘발성 메모리로의 불필요한 기록 동작을 방지할 수 있다.
도 1을 참조하면, 휘발성 메모리의 인덱스 TOC(102)는 판독될 데이터 페이지(108)의 물리적 페이지 어드레스를 저장하는 인덱스 테이블(106)에 관한 정보를 포함한다. 인덱스 테이블(106)은 휘발성 메모리의 인덱스 테이블 캐시(104)에 저장되거나 비휘발성 메모리의 인덱스 블록에 저장될 수 있다. 만일 인덱스 테이블(106)이 인덱스 테이블 캐시(104)에 저장되어 있으면, 인덱스 테이블(106)은 인덱스 테이블 캐시(104)로부터 판독되어 비휘발성 메모리에서 판독될 데이터 페이지(108)의 물리적 어드레스를 찾는데 사용될 수 있다. 만일 인덱스 테이블(106)이 인덱스 테이블 캐시(104)에 저장되지 않으면, 데이터 페이지 어드레스는 비휘발성 메모리의 인덱스 테이블(106)의 관련 엔트리로부터 인덱스 테이블 캐시(104)로 판독될 수 있다. 데이터 페이지 어드레스는 인덱스 테이블 캐시(104)로부터 판독되어 비휘발성 메모리의 데이터 페이지(108)에서 판독 동작을 수행하기 위해 사용될 수 있다.
일부 구현예에서, 판독 동작(200)은 판독할 논리적 섹터 번호(Lpn) 및 다수의 연속적인 논리적 섹터를 획득한다. 판독 동작(200)은 논리적 섹터 번호를 비휘발성 메모리의 물리적 위치들로 맵핑한다. 페이지 사이즈가 2KB라고 가정하면, 판독 동작(200)을 위한 일부 예시적인 단계들이 아래와 같이 의사 코드(pseudo code)를 사용하여 설명될 수 있다.
단계 1: indexPage = readPhysicalPage(TOC[Lpn/512])
단계 2: dataBuffer = readPhysicalPage(indexPage[Lpn%512])
단계 3: dataBuffer로 복귀
여기서 readPhysicalPage는 포인터를 물리적 페이지로 복귀시키는 함수이고, TOC[] 및 indexPage[]는 각기 TOC 엔트리 및 indexPage 엔트리를 저장하기 위한 어레이이며, 512는 인덱스 테이블 엔트리에 의해 맵핑되는 데이터 페이지의 개수이다(512*4bytes = 2KB). 이 예에서, 타입 indexPage는 인덱스 테이블의 시작 어드레스(포인터)를 저장하고, 타입 dataBuffer는 판독될 논리적 섹터 번호 Lpn에 대응하는 데이터 페이지들의 시작 어드레스(포인터)를 저장한다.
예시적인 기록 동작
도 3a 내지 도 3c는 도 1에 도시된 구조를 사용하는 예시적인 기록 동작(300)의 흐름도이다.
도 3a 및 3b를 참조하면, 일부 구현예에서 기록 동작(300)은 하나 이상의 논리적 섹터들과 연관된 기록 요청을 획득함으로써 시작할 수 있다(302). 예를 들어, 기록 요청은 파일 시스템에 의해 발행될 수 있다. 기록 요청은 제1 논리적 섹터 어드레스 및 기록할 다수의 연속적인 논리적 섹터들을 포함할 수 있다. 요청되는 각각의 논리적 섹터에 대하여(303), 만일 현재 데이터 블록이 충만 상태이면(304), 도 6을 참조하여 설명된 바와 같이 블록 TOC를 현재 데이터 블록의 페이지(예컨대, 최종 페이지)에 기록한다(306).
현재 데이터 블록은 갱신에 사용되는 액티브(active) 블록일 수 있다. 블록 TOC는 블록의 모든 페이지를 설명하는 비휘발성 메모리의 페이지(예컨대, 블록의 최종 페이지)일 수 있다. 블록 TOC는 도 4a 내지 도 4b를 참조하여 설명된 바와 같이 전체 블록을 스캐닝(판독)하지 않고 휘발성 메모리(예컨대, RAM)에 임시 인덱스 테이블을 재구성하는 복원 동작에서 사용될 수 있다. 블록 TOC는 또한 도 7을 참조하여 설명되는 바와 같은 GC 동작에서도 사용될 수 있다.
도 3b를 참조하면, 만일 자유 블록(free blocks)이 사용가능하면(308), 사용가능한 자유 블록은 새로운 현재 데이터 블록으로서 할당될 수 있다(312). 만일 어떤 자유 블록도 사용가능하지 않다면(308)(예컨대, 자유 블록의 개수가 임계치 미만이라면), 자유 블록의 임계 개수가 충족될 때까지 GC 동작이 수행되어 자유 블록을 생성할 수 있다(310). 자유 블록은 현재 데이터 블록으로서 할당될 수 있다(312). 만일 현재 데이터 블록이 충만 상태가 아니면(304), 기록 동작(300)은 도 3c에 도시된 단계(314)로 진행한다.
일부 구현예에서, 현재 데이터 블록의 블록 TOC는 현재 데이터 블록이 충만 상태이고 새로운 현재 데이터 블록이 할당될 때까지 휘발성 메모리에 저장될 수 있다. 그때, 오래된 현재 데이터 블록의 블록 TOC는 비휘발성 메모리(예컨대, 현재 데이터 블록의 최종 페이지)에 기록될 수 있고, 새로운 현재 데이터 블록의 블록 TOC는 휘발성 메모리에서 리셋될 수 있다.
도 3c를 참조하면, 기록 동작은 페이지들을 현재 데이터 블록에 순차적으로 기록하고 휘발성 메모리의 현재 블록 TOC를 갱신함으로써 계속된다(314). 현재 데이터 블록의 유효 페이지 카운트는 갱신된다(예컨대, 적절한 수만큼 증가되거나 감소된다). 만일 인덱스 테이블 캐시가 기록된 섹터와 연관된 인덱스 페이지를 포함하면, 그 인덱스 테이블 캐시는 갱신된다(320). 일부 구현예에서, 유효 페이지 카운트는 블록 테이블(513, 도 5)에 저장될 수 있다.
만일 기록된 섹터와 연관된 인덱스 테이블 엔트리가 인덱스 테이블 캐시 내에 없고(318), 인덱스 테이블 캐시 내에 사용가능한 자유 공간이 존재하면(322), 인덱스 페이지는 인덱스 TOC에 저장된 위치를 사용하여 비휘발성 메모리로부터 판독되고 휘발성 메모리의 인덱스 테이블 캐시에 저장된다(326). 만일 캐시 내에 자유 공간이 존재하지 않으면(322), 오래된 캐시 페이지들은 비휘발성 메모리로 플러싱되어(324) 캐시 내에 공간을 확보하여 비휘발성 메모리로부터 판독된 새로운 페이지들을 저장할 수 있다. 인덱스 테이블 캐시 내에 공간이 확보된 후, 단계(322)의 조건이 충족되고, 인덱스 페이지는 인덱스 TOC에 저장된 위치를 사용하여 비휘발성 메모리로부터 판독되고 휘발성 메모리의 인덱스 테이블 캐시에 저장된다(326).
일부 구현예에서, 기록 동작(300)은 논리적 섹터 번호(Lpn) 및 기록할 다수의 연속적인 논리적 섹터들을 획득한다. 이후에, 기록 동작(300)은 갱신에 사용되는 모든 페이지들을 비휘발성 메모리의 현재 데이터 블록에 순차적으로 저장한다. 새로운 현재 데이터 블록은 현재 데이터 블록이 충만 상태이면 갱신을 위해 할당될 수 있다. 만일 새로운 현재 데이터 블록이 할당될 필요가 있고 자유 블록이 충분치 않으면, GC 동작이 수행되어 자유 블록을 얻을 수 있다. 기록 동작(300)은 아래와 같이 의사 코드를 사용하여 설명될 수 있다.
단계 1: 새로운 블록을 할당한다(선택적).
단계 2: 만일 새로운 블록이 필요하고 자유 블록이 충분치 않으면, GC 동작을 수행하여 자유 블록을 생성한다(선택적).
단계 3: Lpn을 나타내는 dataBuffer를 현재 데이터 블록(Cvbn)에 기록하고 물리적 페이지 번호(Vpn)를 메모리에 저장한다.
단계 4: Lpn과 연관된 인덱스 페이지가 인덱스 캐시 내에 존재하는지를 체크한다. 만일 존재한다면, 단계 6으로 진행한다.
단계 5: 인덱스 캐시가 충만 상태인지를 체크한다. 만일 그렇지 않다면, 단계 7로 진행한다.
단계 6: 캐시로부터 인덱스 페이지들 중 하나를 기록하여 인덱스 TOC의 엔트리와 연관된 엔트리를 플래싱(flash)하고 갱신한다.
단계 7: Lpn과 연관된 인덱스 페이지를 인덱스 캐시로 판독한다. 즉, indexPage = readPhysicalPage(TOC[Lpn/512]).
단계 8: Lpn과 연관된 인덱스 페이지의 엔트리를 갱신한다. 즉, indexPage[Lpn%512] = Vpn.
전술한 단계 1 및 2는 선택적이라는 것에 주목하자. 단계 1은 현재 데이터 블록 상태(예컨대, 현재 블록이 얼마나 충만 상태인지)에 좌우되고 단계 2는 사용가능한 자유 블록이 얼마나 되는지에 좌우될 것이다.
추가의 판독/기록 동작을 실행하는 것을 방지하기 위해, 인덱스 테이블 페이지들 중 일부는 휘발성 메모리(예컨대, 제어기 내의 RAM)에 저장될 수 있다. 이들 페이지는 캐싱된(cached) 인덱스 테이블 페이지로서 규정될 수 있다. 캐시 사이즈는 동적으로 구성될 수 있고, 예컨대, 시스템 RAM 가용성 및/또는 동작 모드에 따라 결정될 수 있다. 예시적인 동작 모드는, 예를 들어, iPod® "싱크(sync) 모드"일 수 있고, 여기서 음악은 호스트 컴퓨터의 음악 라이브러리와 동기된다. "싱크" 모드에서, 예를 들어, 버퍼들은 공간 확보되어 기록/판독 메모리 동작을 위해 사용될 수 있다.
블록 TOC를 사용하는 예시적인 폐기물 수집
GC 동작은 일단 매체가 충분히 사용되면 다음 갱신에 더 이상 유효하지 않는 데이터가 차지하는 자유 블록에 사용될 수 있다. "최적 후보(best candidate)" 블록은 최소량의 유효 페이지를 갖는 블록일 수 있다. GC 동작을 시작하기 위해서는, 이것으로 제한되지 않지만, 자유 블록의 개수가 규정된 한계치 미만에 속할 때, 판독/기록 방해 저하(장시간 동안 소거되지 않는 오래된 블록을 리프레시)에 응답하여, 새로운 불량 블록이 발견되는 등을 포함하는 여러 가지 트리거가 있을 수 있다.
GC 동작은 블록 TOC로부터 판독된 페이지 메타데이터로부터 이익을 얻을 수 있다. GC 동작은 전형적으로 속도가 느리며, 각 페이지 메타데이터가 판독되어(효과적으로는 전체 페이지를 판독하는 것을 의미함) 그 메타데이터가 실제로 블록 내의 유효 페이지들 중 하나에 해당하는지를 확인하는 것을 필요로 한다. 관련 부분의 페이지 메타데이터는 제어기가 불필요한 메모리 액세스를 실행하지 않고 GC 동작을 효과적으로 관리하게 하는 블록 TOC에 의해 제공된다.
일부 구현예에서, 현재 인덱스 블록의 블록 TOC가 생성되어 휘발성 메모리에 상주한다. 각각의 블록 TOC 엔트리는 현재 데이터 블록의 한 페이지에 대응할 수 있다. 현재 데이터 블록의 각 페이지가 기록됨에 따라, 블록 TOC 내의 대응하는 엔트리는 그 페이지에 대응하는, 대응하는 논리적 섹터 번호로 갱신된다. 현재 데이터 블록이 충만 상태이면, 블록 TOC는 현재 데이터 블록의 최종 페이지에 기록된다. 예를 들어, 도 6에 도시된 바와 같이, 블록 TOC(602)는 완전(full) 블록(600)의 최종 페이지(예컨대, 페이지 N)에 기록될 수 있다. 블록 TOC(602)가 최종 페이지에 기록된 후, 새로운 블록은 현재 데이터 블록으로서 할당될 수 있다.
새로운 블록이 사용가능하지 않으면, 완전 블록을 확보하기 위해 GC 동작이 실행될 수 있다. GC 동작을 위한 "최적 후보 블록"은 최소량의 유효 페이지들을 갖는 완전 블록인데, 그 이유는 무효 페이지들은 블록이 소거되기 전에 새로운 블록에 복사되지 못하기 때문이다. 따라서, GC 동작을 위한 "최적 후보 블록"을 결정하기 위해, 메모리 시스템은 각각의 완전 블록의 유효 페이지들의 카운트를 결정한다. 주어진 페이지가 유효한지를 결정하기 위해, 그 페이지는 블록으로부터 판독되어 비휘발성 메모리의 인덱스 테이블(106)의 대응하는 엔트리와 상호 참조(cross-reference)될 수 있다. 그러나, 이러한 상호 참조 동작은 원치 않는 기록 동작을 트리거하여 인덱스 페이지들을 비휘발성 메모리의 인덱스 테이블(106)로부터 휘발성 메모리의 캐시로 전달할 수 있다. 불필요한 기록 동작을 줄이기 위해, 메모리 시스템은 페이지들에 대응하는 논리적 섹터 번호들을 블록 TOC의 엔트리로부터 판독하여 그 페이지들이 유효한지를 결정할 수 있다. 일부 구현예에서, 블록 TOC 엔트리들은 논리적 섹터 번호들과 인덱스 테이블 페이지들의 상호 참조를 간략화하도록 분류된다(예컨대, 유사한 논리적 섹터 번호들을 클러스터(cluster)하기 위해 오름 차순으로 분류된다). 동일한 논리적 섹터 번호들에 대응하는 페이지들은 무효이며, 전체 페이지를 판독하지 않고 소거될 수 있다. 일부 구현예에서, 유효 페이지 카운트는 도 6에 도시된 바와 같이, 휘발성 메모리(도 5a 및 도 5b)의 블록 테이블(513)에 저장될 수 있다.
예시적인 폐기물 수집 동작
도 7은 도 6의 블록 TOC를 사용하는 예시적인 GC 동작(700)의 흐름도이다. 일부 구현예에서, GC 동작(700)은 블록 테이블을 판독하여 후보 블록을 결정(702)하고, 후보 블록의 블록 TOC를 판독하여 블록의 콘텐트를 설명하는 메타데이터를 획득(704)하는 것을 포함할 수 있다. 이 예에서, 정보는 그 블록의 페이지들과 연관된 논리적 섹터 번호들을 포함한다.
일부 구현예에서, 논리적 섹터 번호들은 분류 기준에 따라 분류(예컨대, 오름 차순으로 분류)된다(706). 이러한 분류의 결과 분류된 논리적 섹터 번호들을 인덱스 페이지들과 상호 참조하는 다음 단계를 용이하게 하도록 유사한 논리적 섹터 번호들을 클러스터링하여 후보 블록의 무효 페이지들을 결정하게 된다(708). 후보 블록의 무효 페이지들은 현재 블록이 소거되기 전에는 새로운 블록에 복사되지 않는다. 각각의 유효 페이지는 비휘발성 메모리로부터 휘발성 메모리로 판독된다. 기록 섹터 프로세스는, 예컨대, 도 3a 내지 도 3c를 참조하여 설명되는 새로운 페이지를 기록하는 프로세스를 사용하여 실행되어 페이지를 현재 블록에 기록한다.
블록 TOC를 사용하는 예시적인 복원 동작
도 4a 내지 도 4b는 도 1의 구조를 사용하는 예시적인 복원 동작(400)의 흐름도이다. 복원 동작(400)은 천재지변(예컨대, 정전)으로 인해 손실될 수 있는 인덱스 테이블(106) 및 인덱스 TOC(102)를 재생성하는데 사용될 수 있다. 일부 구현예에서, 복원 동작(400)은 각 블록의 제1 페이지를 판독함으로써 시작한다(402). 만일 블록이 자유롭게 되면(404), 그 블록은 인덱스 테이블에 자유 블록으로 설정된다(406). 만일 블록이 자유롭지 않고(404) 블록이 인덱스 블록이면(408), 인덱스 블록은 소거되고(410) 블록 테이블에 자유 블록으로 설정될 수 있다(406). 만일 블록이 자유롭지도 않고 인덱스 블록도 아니면(408), 그 블록은 그들의 수명에 따라 분류되는 할당된 블록의 리스트에 삽입될 수 있다(412).
도 4b를 참조하면, 분류된 리스트의 각 블록에 대하여, 단계들(415-422)은 다음과 같이 수행될 수 있다. 블록 TOC는 블록으로부터 판독된다(415). 만일 블록 TOC가 존재하면(416), 블록 TOC를 사용하여 휘발성 메모리의 임시 인덱스 테이블을 갱신할 수 있다(418). 만일 블록 TOC가 존재하지 않으면(416), 블록의 각 페이지는 완전 블록 스캔을 사용하여 판독될 수 있고(420), 유효 페이지 카운트 및 임시 인덱스 테이블이 갱신된다(422). 분류된 블록들이 단계들(415-422)에 의해 처리된 후, 임시 인덱스 테이블은 비휘발성 메모리에 기록될 수 있고(424), 인덱스 TOC는 휘발성 메모리 내에 생성될 수 있으며(426), 그리고 임시 인덱스 테이블은 휘발성 메모리에서 해제될 수 있다(428).
일부 구현예에서, 리스트는 블록의 수명에 기초하여 오름 차순으로 분류되어, "가장 새로운(youngest)" 또는 가장 최근에 할당된 데이터는 분류된 리스트의 상부에 위치되도록 한다. 이는 분류된 순서대로 "가장 새로운" 것으로부터 "가장 오래된" 것으로 이동하면서 각 논리적 섹터의 가장 새로운 복사본이 사용가능하도록 보장한다.
일부 구현예에서, 작은 메모리 공간(footprint)을 대상으로 복원 동작(400)을 할 수 있도록 인덱스 테이블을 부분적으로 복원할 수 있다. 이는, 예컨대, 휘발성 메모리가 임시 인덱스 테이블을 수용하기에 충분히 크지 않은 경우에 발생할 수 있다. 이 경우에, 복원 동작(400)은 인덱스 테이블의 부분을 커버하는 버퍼를 할당할 수 있다. 복원 동작을 매 반복하게 되면 할당된 인덱스 버퍼에 의해 커버될 수 있는 데이터 범위를 다시 맵핑시킨다. 반복 횟수는 인덱스 버퍼의 사이즈에 비례할 수 있다. 예를 들어, 대형 인덱스 버퍼는 각각의 반복이 대규모 데이터 범위를 커버할 것이기 때문에 반복을 더 적게 필요로 할 것이다.
예시적인 메모리 서브시스템
도 5a는 도 1 내지 도 4 및 도 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)에 액세스하여 인덱스 TOC(512)를 판독함으로써 비휘발성 메모리(504)의 인덱스 테이블(516)의 페이지 어드레스를 획득한다. 프로세서(508)는 판독/기록 동작 동안에 인덱스 테이블(516)의 물리적 어드레스를 사용하여 데이터 페이지(518)로의 메모리 맵핑을 수행할 수 있다. 블록 테이블(513)은 도 7을 참조하여 설명된 바와 같이 "최적 후보 블록"을 결정하는데 사용될 수 있는 블록들의 유효 페이지 카운트를 저장할 수 있다.
일부 구현예에서, 데이터 페이지(518), 인덱스 TOC(512) 및/또는 인덱스 테이블(516)은 하나 이상의 상이한 메모리 장치에서 구현될 수 있다.
도 5b는 도 1 내지 도 4 및 도 7의 메모리 구조 및 동작을 구현하는 메모리 서브시스템을 포함하는 예시적인 장치(520)를 예시하는 블록도이다. 일부 구현예에서, 장치(520)는, 예컨대, 미디어 플레이어 장치, 개인 휴대 정보 단말기(personal digital assistant), 이동 전화기, 휴대용 컴퓨터, 디지털 카메라 등과 같은 휴대용 장치이다.
장치(520)는 호스트 제어기 (또는 소위 "시스템 온 칩(System-on-Chip)" 또는 "SoC")(522) 및 비휘발성 메모리(528)를 포함한다. 장치(520)는 호스트 제어기(522) 및 비휘발성 메모리(528) 외부에 추가의 메모리를 선택적으로 포함할 수 있다. 호스트 제어기(522)는 하나 이상의 프로세서(524) 및 휘발성 메모리(526)를 포함한다. 일부 구현예에서, 휘발성 메모리(526)는 정적 랜덤 액세스 메모리(SRAM)이다. 호스트 제어기(522)는 도 2 내지 도 4를 참조하여 설명된 동작을 포함하여 각종 프로세싱 동작 및 입력/출력 동작을 수행한다. 예를 들어, 호스트 제어기(522)는 사용자 입력을 수신하여 처리하고, 출력을 생성하며, 미디어(예컨대, 오디오, 비디오, 그래픽스) 디코딩 및 프로세싱 동작, 다른 프로세싱 동작 등을 수행할 수 있다. 호스트 제어기(522)는 휘발성 메모리(526)로부터 데이터를 판독하고 그 휘발성 메모리(526)에 데이터를 기록할 수 있다. 호스트 제어기(522)는 또한 인터페이스(도시되지 않음)를 통해 비휘발성 메모리(528)에 판독 또는 기록 동작을 발행할 수 있다.
일부 구현예에서, 비휘발성 메모리(528)는 NAND 플래시 메모리이다. 다른 일부 구현예에서, 비휘발성 메모리(528)는, 예컨대, NOR 플래시 메모리, 다른 형태의 고상(solid state) 메모리, 또는 하드 디스크 드라이브와 같은 또 다른 형태의 비휘발성 메모리이다. 장치(520)는 또한 명료성을 기하기 위해 도 5b에서 생략된 하나 이상의 다른 컴포넌트를 포함할 수 있다.
다수의 구현예들이 설명되었다. 그럼에도 불구하고, 다양한 변경이 이루어질 수 있음이 이해될 것이다. 예를 들어, 하나 이상의 구현예의 구성요소들은 결합, 삭제, 변경, 또는 보완되어 또 다른 구현예를 구성할 수 있다. 또 다른 예로서, 도면에 도시된 논리 흐름은 원하는 결과를 성취하기 위해 도시된 특정 순서 또는 순차적인 순서를 필요로 하지 않는다. 추가로, 설명된 흐름으로부터 다른 단계들이 제공될 수 있거나, 또는 단계들이 제거될 수 있고, 또한 다른 컴포넌트들이 설명된 시스템에 부가되거나 그 시스템으로부터 제거될 수 있다. 따라서, 다른 구현예들은 다음의 청구범위의 범주 내에 속한다.
Claims (20)
- 블록 테이블을 저장하도록 구성된 휘발성 메모리; 및
상기 휘발성 메모리와 비휘발성 메모리에 연결된 프로세서
를 포함하고,
상기 프로세서는,
상기 블록 테이블로부터 데이터를 판독하고,
상기 블록 테이블로부터의 상기 판독된 데이터에 의존하여 상기 비휘발성 메모리에 포함된 복수의 블록 중 후보 블록을 결정하고 - 상기 복수의 블록 중 각각의 블록은 블록 TOC(Table of Contents)를 포함하고, 상기 블록 TOC는 복수의 논리적 섹터 번호를 포함하는 블록 메타데이터를 포함하며, 각각의 논리적 섹터 번호는 해당 블록에 포함된 복수의 페이지 중 각각의 페이지에 대응됨 -,
상기 후보 블록의 해당 블록 TOC로부터 후보 블록 메타데이터를 판독하고,
분류 기준에 의존하여 상기 후보 블록 메타데이터에 포함된 복수의 논리적 섹터 번호를 분류하고,
상기 분류된 복수의 논리적 섹터 번호에 의존하여 상기 후보 블록에 포함된 복수의 페이지 중 무효 페이지들을 결정하도록 구성된,
장치. - 제1항에 있어서,
상기 프로세서는 상기 후보 블록의 상기 복수의 페이지 중 유효 페이지들을 상기 휘발성 메모리로 복사하도록 더 구성되고, 상기 유효 페이지들은 결정된 무효 페이지들을 제외하는, 장치. - 제2항에 있어서,
상기 프로세서는 상기 휘발성 메모리에 저장된 상기 유효 페이지들을 상기 복수의 블록 중 하나의 블록에 기록하도록 더 구성되는, 장치. - 삭제
- 제1항에 있어서,
상기 블록 TOC는 상기 비휘발성 메모리 내의 상기 후보 블록에 저장되는, 장치. - 제2항에 있어서,
상기 유효 페이지들을 상기 휘발성 메모리로 복사하기 위해, 상기 프로세서는 상기 후보 블록을 소거하도록 더 구성되는, 장치. - 제1항에 있어서,
상기 분류 기준에 의존하여 상기 논리적 섹터 번호들을 분류하기 위해, 상기 프로세서는 상기 논리적 섹터 번호들을 오름차순으로 분류하도록 더 구성되는, 장치. - 비휘발성 메모리에 포함된 복수의 블록으로부터 후보 블록을 결정하는 단계 - 상기 복수의 블록 중 각각의 블록은 블록 TOC 및 복수의 페이지를 포함하고, 상기 블록 TOC는 복수의 논리적 섹터 번호를 포함하는 블록 메타데이터를 포함하며, 각각의 논리적 섹터 번호는 해당 블록에 포함된 복수의 페이지 중 각각의 페이지에 대응됨 - ;
상기 후보 블록의 해당 블록 TOC로부터 후보 블록 메타데이터를 판독하는 단계;
분류 기준에 의존하여 상기 후보 블록 메타데이터에 포함된 복수의 논리적 섹터 번호를 분류하는 단계; 및
상기 분류된 복수의 논리적 섹터 번호에 의존하여 상기 후보 블록에 포함된 복수의 페이지 중 무효 페이지들을 결정하는 단계
를 포함하는 방법. - 제8항에 있어서,
상기 복수의 페이지 중 유효 페이지들을 휘발성 메모리로 복사하는 단계
를 더 포함하고,
상기 복수의 페이지 중 상기 유효 페이지들은 상기 결정된 무효 페이지들을 제외하는, 방법. - 제9항에 있어서,
상기 휘발성 메모리에 저장된 상기 유효 페이지들을 상기 비휘발성 메모리에 포함된 상기 복수의 블록 중의 하나의 블록에 기록하는 단계
를 더 포함하는, 방법. - 제10항에 있어서,
상기 하나의 블록은 상기 후보 블록을 포함하는, 방법. - 제8항에 있어서,
상기 후보 블록을 결정하는 단계는 블록 테이블을 판독하는 단계
를 포함하는, 방법. - 제8항에 있어서,
상기 무효 페이지들을 결정하는 단계는 상기 복수의 논리적 섹터 번호를 복수의 인덱스 페이지와 비교하는 단계
를 포함하는, 방법. - 제9항에 있어서,
상기 유효 페이지들을 복사하는 단계는 상기 후보 블록을 소거하는 단계
를 포함하는, 방법. - 비휘발성 메모리 - 상기 비휘발성 메모리는 복수의 블록을 포함하고, 상기 복수의 블록 중 각각의 블록은 복수의 페이지를 포함함 - ;
블록 테이블을 저장하도록 구성된 휘발성 메모리; 및
상기 비휘발성 메모리와 상기 휘발성 메모리에 연결된 프로세서
를 포함하고,
상기 프로세서는,
상기 블록 테이블로부터 데이터를 판독하고,
상기 블록 테이블로부터의 상기 판독된 데이터에 의존하여 복수의 블록으로부터 후보 블록을 결정하고 - 상기 복수의 블록 중 각각의 블록은 블록 TOC를 포함하고, 상기 블록 TOC는 복수의 논리적 섹터 번호를 포함하는 블록 메타데이터를 포함하며, 각각의 논리적 섹터 번호는 해당 블록에 포함된 복수의 페이지 중 각각의 페이지에 대응됨 -,
상기 후보 블록의 해당 블록 TOC로부터 후보 블록 메타데이터를 판독하고,
분류 기준에 의존하여 상기 후보 블록 메타데이터에 포함된 복수의 논리적 섹터 번호를 분류하고,
상기 분류된 복수의 논리적 섹터 번호에 의존하여 상기 후보 블록에 포함된 복수의 페이지 중 무효 페이지들을 결정하도록 구성되는,
시스템. - 제15항에 있어서,
상기 프로세서는 상기 후보 블록의 상기 복수의 페이지 중의 유효 페이지들을 상기 휘발성 메모리로 복사하도록 더 구성되고, 상기 유효 페이지들은 결정된 무효 페이지들을 제외하는, 시스템. - 제16항에 있어서,
상기 프로세서는 상기 휘발성 메모리 내에 저장된 상기 유효 페이지들을 상기 복수의 블록 중의 하나의 블록에 기록하도록 더 구성되는, 시스템. - 삭제
- 제15항에 있어서,
상기 블록 TOC는 상기 비휘발성 메모리 내의 상기 후보 블록 내에 저장되는, 시스템. - 제16항에 있어서,
상기 유효 페이지들을 상기 휘발성 메모리로 복사하기 위해, 상기 프로세서는 상기 후보 블록을 소거하도록 더 구성되는, 시스템.
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US2609508P | 2008-02-04 | 2008-02-04 | |
US61/026,095 | 2008-02-04 | ||
US12/193,563 US20090198952A1 (en) | 2008-02-04 | 2008-08-18 | Memory Mapping Architecture |
US12/193,563 | 2008-08-18 | ||
US12/193,613 | 2008-08-18 | ||
US12/193,613 US8397014B2 (en) | 2008-02-04 | 2008-08-18 | Memory mapping restore and garbage collection operations |
US12/193,528 US8417893B2 (en) | 2008-02-04 | 2008-08-18 | Memory mapping techniques |
US12/193,528 | 2008-08-18 | ||
PCT/US2009/032886 WO2009100031A1 (en) | 2008-02-04 | 2009-02-02 | Memory mapping techniques |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107019699A Division KR101173775B1 (ko) | 2008-02-04 | 2009-02-02 | 메모리 맵핑 기술 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120008079A KR20120008079A (ko) | 2012-01-25 |
KR101446832B1 true KR101446832B1 (ko) | 2014-10-07 |
Family
ID=40932801
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020117031311A KR101446832B1 (ko) | 2008-02-04 | 2009-02-02 | 메모리 맵핑 기술 |
KR1020107019699A KR101173775B1 (ko) | 2008-02-04 | 2009-02-02 | 메모리 맵핑 기술 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107019699A KR101173775B1 (ko) | 2008-02-04 | 2009-02-02 | 메모리 맵핑 기술 |
Country Status (5)
Country | Link |
---|---|
US (3) | US8397014B2 (ko) |
EP (2) | EP2255288A1 (ko) |
JP (1) | JP2011511388A (ko) |
KR (2) | KR101446832B1 (ko) |
WO (1) | WO2009100031A1 (ko) |
Families Citing this family (183)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8200887B2 (en) | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
US9384818B2 (en) | 2005-04-21 | 2016-07-05 | Violin Memory | Memory power management |
US11010076B2 (en) | 2007-03-29 | 2021-05-18 | Violin Systems Llc | Memory system with multiple striping of raid groups and method for performing the same |
US9632870B2 (en) * | 2007-03-29 | 2017-04-25 | Violin Memory, Inc. | Memory system with multiple striping of raid groups and method for performing the same |
US8365040B2 (en) | 2007-09-20 | 2013-01-29 | Densbits Technologies Ltd. | Systems and methods for handling immediate data errors in flash memory |
US8694715B2 (en) | 2007-10-22 | 2014-04-08 | Densbits Technologies Ltd. | Methods for adaptively programming flash memory devices and flash memory systems incorporating same |
WO2009072100A2 (en) | 2007-12-05 | 2009-06-11 | Densbits Technologies Ltd. | Systems and methods for temporarily retiring memory portions |
WO2009074978A2 (en) | 2007-12-12 | 2009-06-18 | Densbits Technologies Ltd. | Systems and methods for error correction and decoding on multi-level physical media |
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 |
US8972472B2 (en) | 2008-03-25 | 2015-03-03 | Densbits Technologies Ltd. | Apparatus and methods for hardware-efficient unbiased rounding |
US20090307409A1 (en) * | 2008-06-06 | 2009-12-10 | Apple Inc. | Device memory management |
US8321652B2 (en) * | 2008-08-01 | 2012-11-27 | Infineon Technologies Ag | Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks |
US8219781B2 (en) | 2008-11-06 | 2012-07-10 | Silicon Motion Inc. | Method for managing a memory apparatus, and associated memory apparatus thereof |
US20100138575A1 (en) | 2008-12-01 | 2010-06-03 | Micron Technology, Inc. | Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices |
US8370603B2 (en) | 2008-12-23 | 2013-02-05 | Apple Inc. | Architecture for address mapping of managed non-volatile memory |
US20100174887A1 (en) | 2009-01-07 | 2010-07-08 | Micron Technology Inc. | Buses for Pattern-Recognition Processors |
US8819385B2 (en) * | 2009-04-06 | 2014-08-26 | Densbits Technologies Ltd. | Device and method for managing a flash memory |
US8458574B2 (en) | 2009-04-06 | 2013-06-04 | Densbits Technologies Ltd. | Compact chien-search based decoding apparatus and method |
US8438453B2 (en) | 2009-05-06 | 2013-05-07 | Apple Inc. | Low latency read operation for managed non-volatile memory |
US8321647B2 (en) * | 2009-05-06 | 2012-11-27 | Apple Inc. | Multipage preparation commands for non-volatile memory systems |
TWI455133B (zh) * | 2009-05-26 | 2014-10-01 | Silicon Motion Inc | 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器 |
US8296503B2 (en) * | 2009-05-26 | 2012-10-23 | Mediatek Inc. | Data updating and recovering methods for a non-volatile memory array |
CN102576330B (zh) | 2009-06-12 | 2015-01-28 | 提琴存储器公司 | 具有持久化无用单元收集机制的存储系统 |
CA2766231C (en) * | 2009-06-26 | 2017-01-17 | Simplivity Corporation | Namespace file system accessing an object store |
US8495332B2 (en) * | 2009-07-24 | 2013-07-23 | Apple Inc. | Controller for optimizing throughput of read operations |
US8516219B2 (en) * | 2009-07-24 | 2013-08-20 | Apple Inc. | Index cache tree |
US8468293B2 (en) * | 2009-07-24 | 2013-06-18 | Apple Inc. | Restore index page |
US9330767B1 (en) | 2009-08-26 | 2016-05-03 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Flash memory module and method for programming a page of flash memory cells |
US8995197B1 (en) | 2009-08-26 | 2015-03-31 | Densbits Technologies Ltd. | System and methods for dynamic erase and program control for flash memory device memories |
US8838877B2 (en) * | 2009-09-16 | 2014-09-16 | Apple Inc. | File system derived metadata for management of non-volatile memory |
EP2302637B1 (fr) | 2009-09-21 | 2014-09-03 | STMicroelectronics (Rousset) SAS | Méthode d'écriture de données dans une mémoire non volatile, protegée contre l'arrachement |
FR2950463B1 (fr) * | 2009-09-21 | 2011-12-09 | St Microelectronics Rousset | Procede de lecture d'une memoire non volatile au moyen de metadonnees et d'une table de correspondance |
US8730729B2 (en) | 2009-10-15 | 2014-05-20 | Densbits Technologies Ltd. | Systems and methods for averaging error rates in non-volatile devices and storage systems |
US8724387B2 (en) | 2009-10-22 | 2014-05-13 | Densbits Technologies Ltd. | Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages |
US9323994B2 (en) | 2009-12-15 | 2016-04-26 | Micron Technology, Inc. | Multi-level hierarchical routing matrices for pattern-recognition processors |
US8443167B1 (en) | 2009-12-16 | 2013-05-14 | Western Digital Technologies, Inc. | Data storage device employing a run-length mapping table and a single address mapping table |
US9037777B2 (en) | 2009-12-22 | 2015-05-19 | Densbits Technologies Ltd. | Device, system, and method for reducing program/read disturb in flash arrays |
JP4802284B2 (ja) * | 2010-01-29 | 2011-10-26 | 株式会社東芝 | 半導体記憶装置及びその制御方法 |
US8194340B1 (en) | 2010-03-18 | 2012-06-05 | Western Digital Technologies, Inc. | Disk drive framing write data with in-line mapping data during write operations |
US8687306B1 (en) | 2010-03-22 | 2014-04-01 | Western Digital Technologies, Inc. | Systems and methods for improving sequential data rate performance using sorted data zones |
US8856438B1 (en) | 2011-12-09 | 2014-10-07 | Western Digital Technologies, Inc. | Disk drive with reduced-size translation table |
US9330715B1 (en) | 2010-03-22 | 2016-05-03 | Western Digital Technologies, Inc. | Mapping of shingled magnetic recording media |
US8693133B1 (en) | 2010-03-22 | 2014-04-08 | Western Digital Technologies, Inc. | Systems and methods for improving sequential data rate performance using sorted data zones for butterfly format |
US8699185B1 (en) | 2012-12-10 | 2014-04-15 | Western Digital Technologies, Inc. | Disk drive defining guard bands to support zone sequentiality when butterfly writing shingled data tracks |
US8745317B2 (en) | 2010-04-07 | 2014-06-03 | Densbits Technologies Ltd. | System and method for storing information in a multi-level cell memory |
IT1399916B1 (it) * | 2010-04-30 | 2013-05-09 | Balluchi | Dispositivo di memoria ad accesso di registro indicizzato |
US8381018B2 (en) * | 2010-05-21 | 2013-02-19 | Mediatek Inc. | Method for data recovery for flash devices |
US9104546B2 (en) * | 2010-05-24 | 2015-08-11 | Silicon Motion Inc. | Method for performing block management using dynamic threshold, and associated memory device and controller thereof |
US10360143B2 (en) * | 2010-07-01 | 2019-07-23 | Qualcomm Incorporated | Parallel use of integrated non-volatile memory and main volatile memory within a mobile device |
US8621321B2 (en) | 2010-07-01 | 2013-12-31 | Densbits Technologies Ltd. | System and method for multi-dimensional encoding and decoding |
EP2413329B1 (en) | 2010-07-28 | 2014-03-26 | Fujitsu Semiconductor Europe GmbH | Electronic apparatuses |
US8850160B2 (en) | 2010-08-23 | 2014-09-30 | Apple Inc. | Adaptive write behavior for a system having non-volatile memory |
US8964464B2 (en) | 2010-08-24 | 2015-02-24 | Densbits Technologies Ltd. | System and method for accelerated sampling |
US8667248B1 (en) | 2010-08-31 | 2014-03-04 | Western Digital Technologies, Inc. | Data storage device using metadata and mapping table to identify valid user data on non-volatile media |
JP5010723B2 (ja) | 2010-09-22 | 2012-08-29 | 株式会社東芝 | 半導体記憶制御装置 |
US8954664B1 (en) | 2010-10-01 | 2015-02-10 | Western Digital Technologies, Inc. | Writing metadata files on a disk |
US8756361B1 (en) | 2010-10-01 | 2014-06-17 | Western Digital Technologies, Inc. | Disk drive modifying metadata cached in a circular buffer when a write operation is aborted |
US9063878B2 (en) | 2010-11-03 | 2015-06-23 | Densbits Technologies Ltd. | Method, system and computer readable medium for copy back |
US8850100B2 (en) | 2010-12-07 | 2014-09-30 | Densbits Technologies Ltd. | Interleaving codeword portions between multiple planes and/or dies of a flash memory device |
US8417914B2 (en) * | 2011-01-06 | 2013-04-09 | Micron Technology, Inc. | Memory address translation |
US8990665B1 (en) | 2011-04-06 | 2015-03-24 | Densbits Technologies Ltd. | System, method and computer program product for joint search of a read threshold and soft decoding |
US8996790B1 (en) | 2011-05-12 | 2015-03-31 | Densbits Technologies Ltd. | System and method for flash memory management |
US9110785B1 (en) | 2011-05-12 | 2015-08-18 | Densbits Technologies Ltd. | Ordered merge of data sectors that belong to memory space portions |
US9501392B1 (en) | 2011-05-12 | 2016-11-22 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Management of a non-volatile memory module |
US9372792B1 (en) | 2011-05-12 | 2016-06-21 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Advanced management of a non-volatile memory |
US9396106B2 (en) | 2011-05-12 | 2016-07-19 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Advanced management of a non-volatile memory |
US9195592B1 (en) | 2011-05-12 | 2015-11-24 | Densbits Technologies Ltd. | Advanced management of a non-volatile memory |
US9514838B2 (en) * | 2011-05-31 | 2016-12-06 | Micron Technology, Inc. | Apparatus including memory system controllers and related methods for memory management using block tables |
US8793429B1 (en) | 2011-06-03 | 2014-07-29 | Western Digital Technologies, Inc. | Solid-state drive with reduced power up time |
US8756382B1 (en) | 2011-06-30 | 2014-06-17 | Western Digital Technologies, Inc. | Method for file based shingled data storage utilizing multiple media types |
US9104614B2 (en) * | 2011-09-16 | 2015-08-11 | Apple Inc. | Handling unclean shutdowns 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 |
US9213493B1 (en) | 2011-12-16 | 2015-12-15 | Western Digital Technologies, Inc. | Sorted serpentine mapping for storage drives |
US8819367B1 (en) | 2011-12-19 | 2014-08-26 | Western Digital Technologies, Inc. | Accelerated translation power recovery |
US8612706B1 (en) | 2011-12-21 | 2013-12-17 | Western Digital Technologies, Inc. | Metadata recovery in a disk drive |
US8947941B2 (en) | 2012-02-09 | 2015-02-03 | Densbits Technologies Ltd. | State responsive operations relating to flash memory cells |
US8996788B2 (en) | 2012-02-09 | 2015-03-31 | Densbits Technologies Ltd. | Configurable flash interface |
CN102609364A (zh) * | 2012-02-14 | 2012-07-25 | 华中科技大学 | 缓存交换方法 |
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 |
US20130275709A1 (en) | 2012-04-12 | 2013-10-17 | Micron Technology, Inc. | Methods for reading data from a storage buffer including delaying activation of a column select |
US8996793B1 (en) | 2012-04-24 | 2015-03-31 | Densbits Technologies Ltd. | System, method and computer readable medium for generating soft information |
US8838937B1 (en) | 2012-05-23 | 2014-09-16 | Densbits Technologies Ltd. | Methods, systems and computer readable medium for writing and reading data |
US8879325B1 (en) | 2012-05-30 | 2014-11-04 | Densbits Technologies Ltd. | System, method and computer program product for processing read threshold information and for reading a flash memory module |
US9524248B2 (en) | 2012-07-18 | 2016-12-20 | Micron Technology, Inc. | Memory management for a hierarchical memory system |
US9921954B1 (en) | 2012-08-27 | 2018-03-20 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Method and system for split flash memory management between host and storage controller |
US8392428B1 (en) | 2012-09-12 | 2013-03-05 | DSSD, Inc. | Method and system for hash fragment representation |
KR101992934B1 (ko) | 2012-11-14 | 2019-06-26 | 삼성전자주식회사 | 메모리 시스템 및 이의 동작 방법 |
US9368225B1 (en) | 2012-11-21 | 2016-06-14 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Determining read thresholds based upon read error direction statistics |
US9069659B1 (en) | 2013-01-03 | 2015-06-30 | Densbits Technologies Ltd. | Read threshold determination using reference read threshold |
US9703574B2 (en) | 2013-03-15 | 2017-07-11 | Micron Technology, Inc. | Overflow detection and correction in state machine engines |
US9448965B2 (en) | 2013-03-15 | 2016-09-20 | Micron Technology, Inc. | Receiving data streams in parallel and providing a first portion of data to a first state machine engine and a second portion to a second state machine |
US9136876B1 (en) | 2013-06-13 | 2015-09-15 | Densbits Technologies Ltd. | Size limited multi-dimensional decoding |
US9405672B2 (en) | 2013-06-25 | 2016-08-02 | Seagate Technology Llc | Map recycling acceleration |
US10956324B1 (en) * | 2013-08-09 | 2021-03-23 | Ellis Robinson Giles | System and method for persisting hardware transactional memory transactions to persistent memory |
US9582426B2 (en) * | 2013-08-20 | 2017-02-28 | International Business Machines Corporation | Hardware managed compressed cache |
CN104424110B (zh) * | 2013-09-10 | 2017-11-14 | Lsi公司 | 固态驱动器的主动回收 |
US9413491B1 (en) | 2013-10-08 | 2016-08-09 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System and method for multiple dimension decoding and encoding a message |
US9348694B1 (en) | 2013-10-09 | 2016-05-24 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Detecting and managing bad columns |
US9786388B1 (en) | 2013-10-09 | 2017-10-10 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Detecting and managing bad columns |
US9397706B1 (en) | 2013-10-09 | 2016-07-19 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System and method for irregular multiple dimension decoding and encoding |
KR102116258B1 (ko) | 2013-12-24 | 2020-06-05 | 삼성전자주식회사 | 메모리 시스템 및 그것을 포함하는 유저 장치 |
US9536612B1 (en) | 2014-01-23 | 2017-01-03 | Avago Technologies General Ip (Singapore) Pte. Ltd | Digital signaling processing for three dimensional flash memory arrays |
US10120792B1 (en) | 2014-01-29 | 2018-11-06 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Programming an embedded flash storage device |
KR102254392B1 (ko) | 2014-05-12 | 2021-05-25 | 삼성전자주식회사 | 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템 |
US9542262B1 (en) | 2014-05-29 | 2017-01-10 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Error correction |
US9892033B1 (en) | 2014-06-24 | 2018-02-13 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Management of memory units |
US9584159B1 (en) | 2014-07-03 | 2017-02-28 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Interleaved encoding |
US9972393B1 (en) | 2014-07-03 | 2018-05-15 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Accelerating programming of a flash memory module |
US9449702B1 (en) | 2014-07-08 | 2016-09-20 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Power management |
US8953269B1 (en) | 2014-07-18 | 2015-02-10 | Western Digital Technologies, Inc. | Management of data objects in a data object zone |
US10747449B2 (en) * | 2014-07-31 | 2020-08-18 | Toshiba Memory Corporation | Reduction of power use during address translation via selective refresh operations |
US9875055B1 (en) | 2014-08-04 | 2018-01-23 | Western Digital Technologies, Inc. | Check-pointing of metadata |
US9378149B1 (en) | 2014-08-29 | 2016-06-28 | Emc Corporation | Method and system for tracking modification times of data in a storage system |
TWI604307B (zh) * | 2014-10-31 | 2017-11-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及快閃記憶體控制方法 |
US9524211B1 (en) | 2014-11-18 | 2016-12-20 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Codeword management |
KR20160067303A (ko) * | 2014-12-03 | 2016-06-14 | 울산과학기술원 | 실러 도포 품질 검사 장치 및 이를 이용한 실러 도포 품질 검사 방법 |
CN105701021B (zh) * | 2014-12-10 | 2021-03-02 | 慧荣科技股份有限公司 | 数据储存装置及其数据写入方法 |
WO2016109570A1 (en) | 2014-12-30 | 2016-07-07 | Micron Technology, Inc | Systems and devices for accessing a state machine |
US11366675B2 (en) | 2014-12-30 | 2022-06-21 | Micron Technology, Inc. | Systems and devices for accessing a state machine |
WO2016109571A1 (en) | 2014-12-30 | 2016-07-07 | Micron Technology, Inc | Devices for time division multiplexing of state machine engine signals |
KR102391678B1 (ko) | 2015-01-22 | 2022-04-29 | 삼성전자주식회사 | 저장 장치 및 그것의 서스테인드 상태 가속 방법 |
US10305515B1 (en) | 2015-02-02 | 2019-05-28 | Avago Technologies International Sales Pte. Limited | System and method for encoding using multiple linear feedback shift registers |
US9652157B2 (en) * | 2015-03-19 | 2017-05-16 | International Business Machines Corporation | Accelerated non-volatile memory recirculation processing |
CN106796588B (zh) | 2015-06-03 | 2019-11-22 | 华为技术有限公司 | 索引表的更新方法和设备 |
US10628255B1 (en) | 2015-06-11 | 2020-04-21 | Avago Technologies International Sales Pte. Limited | Multi-dimensional decoding |
US9851921B1 (en) | 2015-07-05 | 2017-12-26 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Flash memory chip processing |
TWI554884B (zh) * | 2015-07-21 | 2016-10-21 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 |
KR20170012629A (ko) | 2015-07-21 | 2017-02-03 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US9645922B2 (en) | 2015-09-10 | 2017-05-09 | HoneycombData Inc. | Garbage collection in SSD drives |
CN105278876B (zh) * | 2015-09-23 | 2018-12-14 | 华为技术有限公司 | 一种固态硬盘的数据擦除方法及装置 |
US9612967B1 (en) * | 2015-09-25 | 2017-04-04 | Dell Products, L.P. | Cache load balancing by reclaimable block migration |
CN106557432B (zh) * | 2015-09-29 | 2019-08-06 | 群联电子股份有限公司 | 缓冲存储器管理方法、存储器控制电路单元及存储装置 |
US10691964B2 (en) | 2015-10-06 | 2020-06-23 | Micron Technology, Inc. | Methods and systems for event reporting |
US10846103B2 (en) | 2015-10-06 | 2020-11-24 | Micron Technology, Inc. | Methods and systems for representing processing resources |
US10977309B2 (en) | 2015-10-06 | 2021-04-13 | Micron Technology, Inc. | Methods and systems for creating networks |
US10331364B2 (en) * | 2015-10-16 | 2019-06-25 | Cnex Labs, Inc. | Method and apparatus for providing hybrid mode to access SSD drive |
TWI584122B (zh) * | 2015-11-17 | 2017-05-21 | 群聯電子股份有限公司 | 緩衝記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 |
KR20170060206A (ko) * | 2015-11-23 | 2017-06-01 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN106776376B (zh) * | 2015-11-24 | 2019-08-06 | 群联电子股份有限公司 | 缓冲存储器管理方法、存储器控制电路单元及存储装置 |
US9740609B1 (en) | 2016-02-19 | 2017-08-22 | International Business Machines Corporation | Garbage collection techniques for a data storage system |
US9954558B1 (en) | 2016-03-03 | 2018-04-24 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Fast decoding of data stored in a flash memory |
US10254969B2 (en) * | 2016-05-13 | 2019-04-09 | Seagate Technology Llc | Data refresh in flash memory |
US10146555B2 (en) | 2016-07-21 | 2018-12-04 | Micron Technology, Inc. | Adaptive routing to avoid non-repairable memory and logic defects on automata processor |
CN106445832A (zh) * | 2016-09-06 | 2017-02-22 | 深圳市先天海量信息技术有限公司 | 闪存存储系统的地址映射方法及装置 |
US10019311B2 (en) | 2016-09-29 | 2018-07-10 | Micron Technology, Inc. | Validation of a symbol response memory |
US10268602B2 (en) | 2016-09-29 | 2019-04-23 | Micron Technology, Inc. | System and method for individual addressing |
US10929764B2 (en) | 2016-10-20 | 2021-02-23 | Micron Technology, Inc. | Boolean satisfiability |
US10592450B2 (en) | 2016-10-20 | 2020-03-17 | Micron Technology, Inc. | Custom compute cores in integrated circuit devices |
TWI613652B (zh) * | 2017-03-27 | 2018-02-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及其操作方法 |
US10152258B1 (en) * | 2017-06-13 | 2018-12-11 | Sap Se | Big block allocation of persistent main memory |
US10534718B2 (en) * | 2017-07-31 | 2020-01-14 | Micron Technology, Inc. | Variable-size table for address translation |
US10289561B2 (en) | 2017-08-08 | 2019-05-14 | Samsung Electronics Co., Ltd. | Nonvolatile memory devices and methods of controlling the same |
US10620955B2 (en) | 2017-09-19 | 2020-04-14 | International Business Machines Corporation | Predicting a table of contents pointer value responsive to branching to a subroutine |
US10713050B2 (en) | 2017-09-19 | 2020-07-14 | International Business Machines Corporation | Replacing Table of Contents (TOC)-setting instructions in code with TOC predicting instructions |
US10725918B2 (en) | 2017-09-19 | 2020-07-28 | International Business Machines Corporation | Table of contents cache entry having a pointer for a range of addresses |
US10884929B2 (en) | 2017-09-19 | 2021-01-05 | International Business Machines Corporation | Set table of contents (TOC) register instruction |
US10705973B2 (en) | 2017-09-19 | 2020-07-07 | International Business Machines Corporation | Initializing a data structure for use in predicting table of contents pointer values |
US11061575B2 (en) | 2017-09-19 | 2021-07-13 | International Business Machines Corporation | Read-only table of contents register |
US10896030B2 (en) | 2017-09-19 | 2021-01-19 | International Business Machines Corporation | Code generation relating to providing table of contents pointer values |
WO2019113729A1 (en) * | 2017-12-11 | 2019-06-20 | Micron Technology, Inc. | Scheme to improve efficiency of garbage collection in cached flash translation layer |
US11082231B2 (en) * | 2017-12-29 | 2021-08-03 | Intel Corporation | Indirection directories for cryptographic memory protection |
CN108563532B (zh) * | 2018-02-28 | 2021-01-19 | 深圳和而泰家居在线网络科技有限公司 | 数据处理方法及相关装置 |
TWI679538B (zh) * | 2018-03-31 | 2019-12-11 | 慧榮科技股份有限公司 | 資料儲存系統之控制單元以及邏輯至物理映射表更新方法 |
CN108710578B (zh) * | 2018-04-20 | 2022-07-26 | 深圳市战音科技有限公司 | 基于闪存的数据存储方法和装置 |
US10852968B2 (en) | 2018-05-07 | 2020-12-01 | Apple Inc. | Techniques for managing memory allocation within a storage device to improve operation of a camera application |
KR102620255B1 (ko) * | 2018-05-18 | 2024-01-04 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
US10795604B2 (en) * | 2018-07-23 | 2020-10-06 | Western Digital Technologies, Inc. | Reporting available physical storage space of non-volatile memory array |
CN110968527B (zh) * | 2018-09-30 | 2024-05-28 | 北京忆恒创源科技股份有限公司 | Ftl提供的缓存 |
KR20200085513A (ko) | 2019-01-07 | 2020-07-15 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템 |
KR102708925B1 (ko) * | 2019-01-11 | 2024-09-25 | 에스케이하이닉스 주식회사 | 메모리 시스템에서의 유효 데이터 체크 방법 및 장치 |
TWI698749B (zh) * | 2019-03-13 | 2020-07-11 | 慧榮科技股份有限公司 | 資料儲存裝置與資料處理方法 |
KR20200114009A (ko) * | 2019-03-27 | 2020-10-07 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11088846B2 (en) * | 2019-03-28 | 2021-08-10 | Intel Corporation | Key rotating trees with split counters for efficient hardware replay protection |
US10860233B2 (en) * | 2019-04-12 | 2020-12-08 | Samsung Electronics Co., Ltd. | Half-match deduplication |
CN110287201A (zh) * | 2019-07-02 | 2019-09-27 | 重庆紫光华山智安科技有限公司 | 数据访问方法、装置、设备及存储介质 |
KR102689981B1 (ko) * | 2019-08-29 | 2024-08-01 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
FR3106422B1 (fr) * | 2020-01-20 | 2021-12-10 | Continental Automotive | Passerelle de communication de trames de données pour véhicule automobile |
US11522917B2 (en) | 2020-06-10 | 2022-12-06 | Arista Networks, Inc. | Scalable network processing segmentation |
CN114153400B (zh) * | 2021-12-08 | 2024-01-30 | 国仪石油技术(无锡)有限公司 | 一种用于测井仪器中的数据存储方法 |
US11874770B2 (en) * | 2022-05-12 | 2024-01-16 | Western Digital Technologies, Inc. | Indexless logical-to-physical translation table |
CN115145489B (zh) * | 2022-07-22 | 2023-03-24 | 北京熵核科技有限公司 | 一种基于缓存结构的对象扫描方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020009564A (ko) * | 1999-02-17 | 2002-02-01 | 데이비드 존 새비쥐, 알란 웰시 싱클레어 | 메모리 시스템 |
JP2005107599A (ja) * | 2003-09-26 | 2005-04-21 | Tdk Corp | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4323987A (en) | 1980-03-28 | 1982-04-06 | Pitney Bowes Inc. | Power failure memory support system |
US4323967A (en) * | 1980-04-15 | 1982-04-06 | Honeywell Information Systems Inc. | Local bus interface for controlling information transfers between units in a central subsystem |
JP2582487B2 (ja) | 1991-07-12 | 1997-02-19 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 半導体メモリを用いた外部記憶システム及びその制御方法 |
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 | メモリカード |
US6000006A (en) | 1997-08-25 | 1999-12-07 | Bit Microsystems, Inc. | Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage |
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 | 不揮発性記憶装置、不揮発性記憶装置の制御方法、および、不揮発性記憶装置を制御するプログラムを記録した情報記録媒体 |
US6799242B1 (en) * | 1999-03-05 | 2004-09-28 | Sanyo Electric Co., Ltd. | Optical disc player with sleep mode |
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 |
JP4362248B2 (ja) * | 2001-09-03 | 2009-11-11 | パイオニア株式会社 | 情報記録再生装置およびコンピュータプログラム |
US6711663B2 (en) * | 2001-11-15 | 2004-03-23 | Key Technology Corporation | Algorithm of flash memory capable of quickly building table and preventing improper operation and control system thereof |
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 |
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 |
US7330938B2 (en) * | 2004-05-18 | 2008-02-12 | Sap Ag | Hybrid-cache having static and dynamic portions |
JP4209820B2 (ja) * | 2004-07-15 | 2009-01-14 | 株式会社ハギワラシスコム | メモリカードシステム及び該メモリカードシステムで使用されるライトワンス型メモリカード、ホストシステムと半導体記憶デバイスとからなるシステム |
JP4688584B2 (ja) | 2005-06-21 | 2011-05-25 | 株式会社日立製作所 | ストレージ装置 |
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 |
US20070083697A1 (en) * | 2005-10-07 | 2007-04-12 | Microsoft Corporation | Flash memory management |
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 |
US7870122B2 (en) | 2007-04-23 | 2011-01-11 | Microsoft Corporation | Self-tuning index for flash-based databases |
US8037112B2 (en) * | 2007-04-23 | 2011-10-11 | Microsoft Corporation | Efficient access of flash databases |
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 |
-
2008
- 2008-08-18 US US12/193,613 patent/US8397014B2/en active Active
- 2008-08-18 US US12/193,563 patent/US20090198952A1/en not_active Abandoned
- 2008-08-18 US US12/193,528 patent/US8417893B2/en not_active Expired - Fee Related
-
2009
- 2009-02-02 KR KR1020117031311A patent/KR101446832B1/ko not_active IP Right Cessation
- 2009-02-02 WO PCT/US2009/032886 patent/WO2009100031A1/en active Application Filing
- 2009-02-02 EP EP09709432A patent/EP2255288A1/en not_active Withdrawn
- 2009-02-02 KR KR1020107019699A patent/KR101173775B1/ko not_active IP Right Cessation
- 2009-02-02 EP EP11184176A patent/EP2423819A1/en not_active Withdrawn
- 2009-02-02 JP JP2010545943A patent/JP2011511388A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020009564A (ko) * | 1999-02-17 | 2002-02-01 | 데이비드 존 새비쥐, 알란 웰시 싱클레어 | 메모리 시스템 |
JP2005107599A (ja) * | 2003-09-26 | 2005-04-21 | Tdk Corp | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2255288A1 (en) | 2010-12-01 |
US20090198952A1 (en) | 2009-08-06 |
US8397014B2 (en) | 2013-03-12 |
US20090198902A1 (en) | 2009-08-06 |
WO2009100031A1 (en) | 2009-08-13 |
JP2011511388A (ja) | 2011-04-07 |
US8417893B2 (en) | 2013-04-09 |
KR101173775B1 (ko) | 2012-08-16 |
KR20120008079A (ko) | 2012-01-25 |
EP2423819A1 (en) | 2012-02-29 |
KR20100114535A (ko) | 2010-10-25 |
US20090198947A1 (en) | 2009-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101446832B1 (ko) | 메모리 맵핑 기술 | |
KR101257989B1 (ko) | 인덱스 페이지 복구 | |
US8510500B2 (en) | Device driver including a flash memory file system and method thereof and a flash memory device and method thereof | |
US8516219B2 (en) | Index cache tree | |
US7516295B2 (en) | Method of remapping flash memory | |
CN108038026B (zh) | 一种基于闪存的数据快速恢复方法与系统 | |
KR100684887B1 (ko) | 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법 | |
KR100771521B1 (ko) | 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법 | |
US8825946B2 (en) | Memory system and data writing method | |
US20100125694A1 (en) | Memory device and management method of memory device | |
TW201005745A (en) | Wear leveling method and storage system and controller using the same | |
US11204864B2 (en) | Data storage devices and data processing methods for improving the accessing performance of the data storage devices | |
KR20100115090A (ko) | 버퍼를 고려한 가비지 컬렉션 기법 | |
CN110515550B (zh) | 一种sata固态硬盘冷热数据分离的方法及其装置 | |
KR20090107098A (ko) | 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법 | |
JP2024043337A (ja) | メモリシステム | |
JP2013206307A (ja) | メモリ制御装置、データ記憶装置及びメモリ制御方法 | |
KR100982440B1 (ko) | 단일 플래시 메모리의 데이터 관리시스템 | |
KR101791855B1 (ko) | 스토리지 장치 및 이의 공간 재수거 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |