KR101916206B1 - 고체 상태 드라이브에서 자유 공간 어카운트와 함께 재구축되는 2 스테이지 파워 온 맵을 위한 방법들, 디바이스들, 및 시스템들 - Google Patents

고체 상태 드라이브에서 자유 공간 어카운트와 함께 재구축되는 2 스테이지 파워 온 맵을 위한 방법들, 디바이스들, 및 시스템들 Download PDF

Info

Publication number
KR101916206B1
KR101916206B1 KR1020157027180A KR20157027180A KR101916206B1 KR 101916206 B1 KR101916206 B1 KR 101916206B1 KR 1020157027180 A KR1020157027180 A KR 1020157027180A KR 20157027180 A KR20157027180 A KR 20157027180A KR 101916206 B1 KR101916206 B1 KR 101916206B1
Authority
KR
South Korea
Prior art keywords
page
volatile memory
logical
map
journal
Prior art date
Application number
KR1020157027180A
Other languages
English (en)
Other versions
KR20150128773A (ko
Inventor
앤드류 제이 톰린
저스틴 존스
로드니 엔 뮬렌도어
Original Assignee
웨스턴 디지털 테크놀로지스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 웨스턴 디지털 테크놀로지스, 인코포레이티드 filed Critical 웨스턴 디지털 테크놀로지스, 인코포레이티드
Publication of KR20150128773A publication Critical patent/KR20150128773A/ko
Application granted granted Critical
Publication of KR101916206B1 publication Critical patent/KR101916206B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

데이터 저장 디바이스는 복수의 블록들을 포함하는 비휘발성 메모리를 포함하고, 각각의 블록은 미리 정해진 물리적 로케이션들에서 복수의 물리적 페이지들을 저장하도록 구성된다. 제어기는 복수의 논리적 페이지들에 저장된 데이터를 프로그램 및 판독한다. 휘발성 메모리는 각각의 논리적 페이지에 저장된 데이터의 물리적 로케이션의 결정을 하나 이상의 물리적 페이지들 내에서 실행하게 하도록 구성된 논리적 투 물리적 어드레스 변환 맵을 포함한다. 복수의 저널들이 저장될 수도 있으며, 각각의 저널은 각각의 논리적 페이지에 하나 이상의 물리적 페이지들을 연관시키는 복수의 저널 엔트리들을 포함한다. 기동시, 제어기는 상기 복수의 저널들의 적어도 일부를 소정 순서로 판독하고 맵을 재구축하고, 맵이 재구축된 후 데이터 액세스 커맨드들을 프로세싱할 준비가 되어 있음 (readiness) 을 표시하고; 데이터 액세스 커맨드들을 프로세싱할 준비가 되어 있음을 표시한 후, 상기 맵으로부터 테이블을 재구축하고, 이에 기초하여 가비지 수집을 위한 블록(들) 을 선택할 수도 있다.

Description

고체 상태 드라이브에서 자유 공간 어카운트와 함께 재구축되는 2 스테이지 파워 온 맵을 위한 방법들, 디바이스들, 및 시스템들{METHODS, DEVICES AND SYSTEMS FOR TWO STAGE POWER-ON MAP REBUILD WITH FREE SPACE ACCOUNTING IN A SOLID STATE DRIVE}
고체 상태 드라이브들 (solid state drives; SSDs) 에 있어서 플래시 메모리의 특성으로 인하여, 통상적으로 데이터는 페이지들마다 프로그래밍되고 블록들마다 소거된다. SSD 에서의 페이지는 통상적으로 그 사이즈가 8-16 킬로바이트들 (KB) 이고 블록은 많은 수의 페이지들 (예를 들어, 256 또는 512) 로 구성된다. 따라서, SSD 에서의 특정 물리적 로케이션 (예를 들어, 페이지) 는 자기적 하드 디스크 드라이브에서 가능한 바와 같이, 동일한 블록 내의 페이지들에 데이터를 오버라이팅함이 없이 직접 오버라이팅될 수 없다. 이에, 어드레스 인디렉션이 요구된다. 데이터 저장 디바이스 상의 플래시 메모리를 관리하고 호스트 시스템과 인터페이스하는 통상의 데이터 저장 디바이스 제어기들은 플래시 변환 층 (Flash translation layer; FTL) 의 부분인 논리적 블록 어드레싱 (logical block addressing; LBA) 으로 알려진 L2P (Logical-to-Physical) 매핑 시스템을 이용한다. 새로운 데이터가 이미 기록된 더 오래된 데이터를 대체하기 시작할 때, 데이터 저장 디바이스 제어기는 (데이터 저장 디바이스가 오래된 데이터를 직접 오버라이팅할 수 없기 때문에) 새로운 데이터가 새로운 로케이션에 기록되게 하고 새로운 물리적 로케이션을 적시하도록 논리적 매핑을 업데이트한다. 이 연접에서, 오래된 물리적 로케이션은 더이상 유효 데이터를 유지하지 않는다. 이로써, 오래된 물리적 로케이션은 다시 기록될 수 있기 전에 결국 소거될 필요가 있다.
통상적으로, 대형 L2P 맵 테이블이 SSD 상에서 논리적 엔트리들을 물리적 어드레스 로케이션들에 매핑한다. 이 대형 L2P 맵 테이블은 통상 기록들이 시작할 때 소형 섹션들에 저장된다. 예를 들어, 랜덤 기록이 발생하면, 시스템은 오직 하나의 엔트리만을 업데이트해야 할 수도 있지만, 그럼에도 불구하고 시스템은 업데이트되지 않았던 엔트리들을 포함한 전체 테이블 또는 부분을 저장해야 할 수도 있는데 이는 본질적으로 비효율적이다.
도 1 은 데이터 저장 디바이스들에 대한 통상의 논리적 블록 어드레싱 (Logical Block Addressing; LBA) 방식의 양태들을 나타낸다. 여기에 도시된 바와 같이, 맵 테이블 (104) 은 데이터 저장 디바이스의 플래시 메모리 (106) 에 대해 정의된 모든 논리적 블록 (102) 마다 하나의 엔트리를 포함한다. 예를 들어, 512 바이트 논리적 블록들을 지원하는 64 GB 데이터 저장 디바이스는 125,000,000 개의 논리적 블록들을 갖는 것으로서 호스트에 자체 제공할 수도 있다. 맵 테이블 (104) 에서의 하나의 엔트리는 플래시 메모리 (106) 에 125,000 개의 논리적 블록들의 각각의 현재 로케이션을 포함한다. 통상의 데이터 저장 디바이스에서, 플래시 페이지는 정수개의 논리적 블록들을 유지한다 (즉, 논리적 블록은 플래시 페이지들 전반에 걸쳐있지 않다). 통상의 예에서, 8 KB 플래시 페이지는 (512 바이트의 사이즈들로 된) 16 개의 논리적 블록들을 유지한다. 따라서, 논리적 투 물리적 맵 테이블 (104) 에서의 각각의 엔트리는 LBA 가 저장된 다이를 식별하는 필드 (108), LBA 가 저장된 플래시 블록을 식별하는 필드 (110), 플래시 블록 내의 플래시 페이지를 식별하는 다른 필드 (112), 및 LBA 데이터가 식별된 플래시 페이지에서 시작하는 경우를 식별하는 플래시 페이지 내의 오프셋을 식별하는 필드 (114) 를 포함한다. 맵 테이블 (104) 의 대형 사이즈는 테이블이 SSD 제어기 내에 유지되는 것을 금지한다. 통상적으로 대형 맵 테이블 (104) 은 SSD 제어기에 접속된 외부 DRAM 에 유지된다. 맵 테이블 (104) 이 휘발성 DRAM 에 저장될 때, 이는 SSD 가 파워업 할 때 리스토어되어야 하는데, 이는 대형 테이블 사이즈로 인하여 오랜 시간이 걸릴 수 있다.
논리적 블록이 기록될 때, 맵 테이블 (104) 에서의 대응하는 엔트리는 논리적 블록의 새로운 로케이션을 반영하도록 업데이트된다. 논리적 블록이 판독될 때, 맵 테이블 (104) 에서의 대응하는 엔트리는 플래시 메모리에서의 판독될 로케이션을 결정하도록 판독되어야 한다. 그 후, 맵 테이블 (104) 에서의 대응하는 엔트리에서 특정된 플래시 페이지에 대해 판독이 수행된다. 판독된 데이터가 플래시 페이지에 가용될 때, 맵 엔트리에 의해 특정된 오프셋에서의 데이터가 플래시 디바이스로부터 호스트로 트랜스퍼된다. 논리적 블록이 기록될 때, 데이터의 "오래된" 버전을 유지하는 플래시 메모리는 "가비지" (즉, 더 이상 유효하지 않은 데이터) 가 된다. 논리적 블록이 기록될 때, 플래시 메모리는 초기에 적어도 두개의 버전들의 논리적 블록 ; 즉, (맵 테이블 (104) 에 의해 적시된) 유효한, 가장 최근에 기록된 버전, 및 비유효 (stale) 한 맵 테이블 (104) 에서 어떠한 엔트리도 더 이상 적시되지 않는 적어도 하나의 다른 더 오래된 버전을 포함할 것임을 주지해야 한다. 이들 "비유효" 엔트리들은 가비지라 지칭되며, 이는 수집되고 소거되고 장래의 이용에 가용되기 위하여 어카운트되어야 하는 공간들을 점유한다. 이 프로세스는 "가비지 수집"으로 알려져 있다.
셧다운 또는 다른 파워 인터럽트 이벤트 시에, 맵 테이블 (104) 이 저장되는 휘발성 메모리의 컨텐츠들은 더 이상 유효하지 않다. 따라서, 맵 테이블 (104) 은 재구축되어야 한다. 이 프로세스의 목표들은 1) 논리적 투 물리적 관계들의 일관성있는 맵을 생성하는 것, 및 2) 메모리 시스템의 정규 동작을 인에이블하는 것이다. 이 정규 동작은 준비 시간 (time-to-ready) 제약들에 의해 데이터 액세스 커맨드들의 서비스화를 실행하고 메모리 시스템으로 하여금 가비지 수집 동작들에 대한 최상의 블록을 고르게 해야 한다. 가비지 수집에 대한 최상의 블록을 고르는 것은 결국 다른 가능한 팩터들 중에서 메모리 블록들 내의 자유 공간에 대해 정확히 어카운트하는 것을 수반한다.
맵 테이블 (104) 을 재구축하는 통상의 방법은 RAM 이 랜덤 상태에서 (즉, 유효 ECC 없이) 파워 온할 때, 휘발성 메모리 내의 모든 메모리 로케이션들을 먼저 제로로 초기화하는 것을 포함한다. 그 후, L2P 맵은 비휘발성 메모리에 저장된 매핑 정보로부터 재구축될 수도 있으면서 자유 공간 어카운트를 동시에 수행해야 한다. 이들 동작들은 장시간의 랜덤 판독 및 랜덤 기록을 수반하며, 이는 상당한 시간이 걸리며 궁극적으로 파워업시 호스트 판독 및 기록에 대한 드라이브의 준비 시간을 지연시킨다.
통상적으로, 드라이브가 데이터 액세스 커맨드들을 서비스할 준비에 있는 호스트에 대해 리포트할 수 있기 전에 맵 재구축 및 자유 공간 어카운트 양쪽 모두가 완료되어야 한다.
도 1 은 SSD들에 대한 통상의 논리적 블록 어드레싱 방식의 양태들을 나타낸다.
도 2 는 일 실시형태에 따른 데이터 저장 디바이스의 블록도이다.
도 3 은 일 실시형태에 따른 데이터 저장 디바이스의 물리적 및 논리적 데이터 편성의 양태들을 나타내는 다이어그램이다.
도 4 는 일 실시형태에 따라, 논리적 투 물리적 어드레스 변환 맵 및 이것의 예시적인 엔트리들을 나타낸다.
도 5 는 일 실시형태에 따라, 논리적 투 물리적 어드레스 변환 맵을 업데이트하고 S-저널 엔트리를 생성하는 방법의 양태들을 나타낸다.
도 6 은 일 실시형태에 따른 S-저널의 블록도이다.
도 7 은 일 실시형태에 따라, S-저널의 하나의 엔트리의 예시적인 편성을 나타낸다.
도 8 은 일 실시형태에 따른 슈퍼블록 (S-블록) 의 블록도이다.
도 9 는 일 실시형태에 따른 슈퍼 페이지 (S-페이지) 의 다른 도면을 나타낸다.
도 10 의 (a) 는 일 실시형태에 따라 논리적 투 물리적 어드레스 변환과, S-저널들 및 S-블록들 간의 관계들을 나타낸다.
도 10 의 (b) 는 일 실시형태에 따른 S-저널 맵의 블록도이다.
도 11 은 일 실시형태에 따라, 2 스테이지 파워 온 논리적 투 물리적 맵 재구축을 수행하는 방법의 흐름도이다.
도 12 는 일 실시형태에 따라, 2 스테이지 파워 온 논리적 투 물리적 맵 재구축을 수행하는 방법의 추가의 양태들을 설명하는 블록도이다.
도 13 은 일 실시형태에 따라 유효 사이즈 정보 테이블의 표현을 나타낸다.
도 14 는 일 실시형태에 따라, 자유 공간 어카운트와 함께 2 스테이지 파워 온 논리적 투 물리적 맵 재구축을 수행하는 방법의 양태들을 설명하는 블록도이다.
도 15 는 일 실시형태에 따라, 가비지 수집의 양태들을 나타내는 블록도이다.
도 16 은 일 실시형태에 따라, 가비지 수집의 추가의 양태들을 나타내는 블록도이다.
도 17 은 일 실시형태에 따라, 가비지 수집의 더욱 추가의 양태들을 나타내는 블록도이다.
도 18 은 일 실시형태에 따라, 가비지 수집의 또 다른 추가의 양태들을 나타내는 블록도이다.
시스템 개요
도 2 는 일 실시형태에 따른 데이터 저장 디바이스의 물리적 및 논리적 데이터 편성의 양태들을 나타내는 다이어그램이다. 일 실시형태에서, 데이터 저장 디바이스는 SSD 이다. 다른 실시형태에서, 데이터 저장 디바이스는 플래시 메모리 및 회전형 자기적 저장 매체를 포함하는 하이브리드 드라이브이다. 본 개시물은 SSD 및 하이브리드 구현들 양쪽 모두에 적용가능하지만, 설명의 간략화를 위하여, 여러 실시형태들이 SSD-기반 구현들을 참조로 설명된다. 일 실시형태에 따른 데이터 저장 디바이스 제어기 (202) 는 도면 부호 218 로 도시된 바와 같이 호스트에 커플링되도록 구성될 수도 있다. 제어기는 제어기에 의해 수행되는 것으로서 아래 설명된 기능들의 일부 또는 전부를 실행하는 하나 이상의 프로세서들을 포함할 수도 있다. 호스트 (218) 는 논리적 블록 어드레싱 ( logical block addressing; LBA) 방식을 이용할 수도 있다. LBA 사이즈는 통상 고정되어 있는 반면, 호스트는 LBA 사이즈를 동적으로 변경할 수도 있다. 예를 들어, LBA 사이즈는 인터페이스 또는 인터페이스 모드에 의해 변경될 수도 있다. 실제로, 512+ (520, 528 등) 및 4 KB+ (4 KB+8, 4K+16 등) 포맷들에서와 같이, 512 바이트들이 가장 일반적인 반면, 4 KB 가 또한 보다 일반적이다. 여기에 도시된 바와 같이, 데이터 저장 디바이스 제어기 (202) 는 페이지 레지스터 (204) 를 포함할 수도 있거나 이에 커플링될 수도 있다. 페이지 레지스터 (204) 는 제어기 (202) 로 하여금 데이터 저장 디바이스로부터 데이터를 판독하고 이에 데이터를 저장하게 하도록 구성될 수도 있다. 제어기 (202) 는 호스트 (218) 로부터의 데이터 액세스 커맨드들에 응답하여 플래시 메모리 디바이스들의 어레이로부터 데이터를 프로그래밍 및 판독하도록 구성될 수도 있다. 여기에서의 설명은 플래시 메모리를 지칭하고 있지만, 메모리 디바이스들의 어레이는 다른 유형의 비휘발성 메모리 디바이스들, 이를 테면, 플래시 집적 회로들, C-RAM (Chalcogenide RAM), PC-RAM 또는 PRAM (Phase Change Memory), PMC-RAM 또는 PMCm (Programmable Metallization Cell RAM), OUM (Ovonic Unified Memory), RRAM (Resistance RAM), NAND 메모리 (예를 들어, SLC (single-level cell)) 메모리, MLC (multi-level cell) 메모리, 또는 이들의 임의의 조합), NOR 메모리, EEPROM, FeRAM (Ferroelectric Memory), MRAM (Magnetoresistive RAM), 다른 별도의 NVM (non-volatile memory) 칩들, 또는 이들의 임의의 조합을 포함하고 있음을 이해해야 한다.
페이지 레지스터 (204) 는 제어기 (202) 로 하여금 어레이로부터 데이터를 판독하고 이에 데이터를 저장하게 하도록 구성될 수도 있다. 일 실시형태에 따르면, 플래시 메모리 디바이스들의 어레이는 다이 (예를 들어, 128 개의 다이들) 에 복수의 비휘발성 메모리 디바이스들을 포함할 수도 있고, 이들 각각은 도 2 의 206 으로 도시된 바와 같이, 복수의 블록들을 포함한다. 다른 페이지 레지스터들 (204; 도시 생략) 은 다른 다이 상의 블록들에 커플링될 수도 있다. 함께 그룹화된 플래시 블록들의 조합은 슈퍼블록, 또는 S-블록으로 지칭될 수도 있다. 일부 실시형태들에서, S-블록을 형성하는 개별적인 블록들은 하나 이상의 다이들, 평면들, 또는 다른 세분화도 레벨들로부터 선택될 수도 있다. S-블록은 이에 따라, 함께 결합된 하나 이상의 다이들을 가로질러 확산되어 있는 복수의 플래시 블록들을 포함할 수도 있다. 이 방식으로, S-블록은 플래시 관리 시스템 (Flash Management System; FMS) 이 동작하는 유닛을 형성할 수도 있다. 일부 실시형태들에서, S-블록을 형성하는 개별적인 블록들은 메모리 디바이스들이 평면들과 같은 구조들로 세분화된 다이들을 포함하는 경우와 같은 다이 레벨에서와는 상이한 세분화도에 따라 선택될 수도 있다 (즉, 블록들은 개별적인 평면들로부터 취해질 수도 있음). 일 실시형태에 따라, 할당, 소거, 및 가비지 수집이 S-블록 레벨에서 수행될 수도 있다. 다른 실시형태들에서, FMS 는 페이지들, 블록들, 평면들, 다이들 등과 같은 다른 논리적 그룹화들에 따라 데이터 동작들을 수행할 수도 있다.
이어서, 각각의 플래시 블록들 (206) 은 복수의 플래시 페이지들 (F-페이지들)(208) 을 포함한다. 각각의 F-페이지는 고정된 사이즈, 이를 테면, 예를 들어, 16 KB 로 구성될 수도 있다. 일 실시형태에 따른 F-페이지는 주어진 플래시 디바이스에 대한 프로그램의 최소 유닛의 사이즈이다. 도 3 에 도시된 바와 같이, 각각의 F-페이지 (208) 는 이하, E-페이지들 (210) 로 지칭되는 복수의 물리적 페이지들을 수용하도록 구성될 수도 있다. 용어 "E-페이지" 는 에러 정정 코드 (error correcting code; ECC) 가 적용되었던 플래시 메모리에 저장된 데이터 구조를 지칭한다. 일 실시형태에 따르면, E-페이지 (210) 는 데이터 저장 디바이스 내에서의 물리적 어드레싱을 위한 기반을 형성할 수도 있고, 플래시 판독 데이터 트랜스퍼의 최소 유닛을 구성할 수도 있다. 따라서, E-페이지 (210) 는 미리 정해진 고정된 사이즈 (이를 테면, 예를 들어, 2 KB) 로 구성될 수도 있고 (그러나 이 사이즈로 될 필요가 있는 것은 아니며) ECC 시스템의 페이로드의 사이즈 (예를 들어, 호스트 데이터) 를 결정할 수도 있다. 일 실시형태에 따르면, 각각의 F-페이지 (208) 는 그 바운더리 내에서 미리 정해진 복수의 E-페이지들 (210) 을 고정시키도록 구성될 수도 있다. 예를 들어, E-페이지 (210) 당 2 KB 의 고정된 사이즈 및 16 KB 사이즈 F-페이지들 (208) 가 주어지면, 도 3 에 도시된 바와 같이, 8 개의 E-페이지들 (210) 이 단일의 F-페이지들 (208) 내에 고정된다. 어떠한 경우에도, 일 실시형태에 따르면, ECC 를 포함하는 E-페이지들 (210) 의 2의 배수의 거듭제급이 F-페이지 (208) 내에 고정되도록 구성될 수도 있다. 각각의 E-페이지 (210) 는 데이터 부분 (214) 을 포함할 수도 있고, E-페이지 (210) 가 위치되는 곳에 의존하여, 또한 ECC 부분 (216) 을 포함할 수도 있다. 데이터 부분 (214) 도 ECC 부분 (216) 도 사이즈에 있어서 고정될 필요는 없다. E-페이지의 어드레스는 플래시 메모리 내의 E-페이지의 로케이션을 고유하게 식별한다. 예를 들어, E-페이지의 어드레스는 플래시 채널, 식별된 플래시 채널 내의 특정 다이, 다이 내의 특정 블록, 특정 F-페이지, 및 마지막으로 식별된 F-페이지 내의 E-페이지를 특정할 수도 있다.
호스트에 의해 데이터 저장 디바이스 상의 물리적 어드레싱과 논리적 블록 어드레싱 사이를 브리징하기 위하여, 논리적 페이지 (L-페이지) 구성이 도입된다. 도 3 에서 도면 부호 212 로 표기된 L-페이지는 FMS 에 의해 이용된 어드레스 변환의 최소 유닛을 포함할 수도 있다. 일 실시형태에 따르면, 각각의 L-페이지는 L-페이지 넘버와 연관될 수도 있다. 따라서, L-페이지 넘버의 L-페이지들 (212) 은 제어기 (202) 로 하여금 물리적 페이지들, 이를 테면, E-페이지들 (210) 중 하나 이상에 저장된 호스트 데이터를 논리적으로 참조하게 하도록 구성될 수도 있다. L-페이지 (212) 는 또한 압축의 기본 유닛으로서 이용될 수도 있다. 일 실시형태에 따르면, F-페이지들 (208) 및 E-페이지들 (210) 과 달리, L-페이지들 (212) 은 사이즈가 고정되어 있지 않고, 저장될 데이터의 압축시 가변성으로 인하여 사이즈가 변경될 수도 있다. 데이터의 압축 능력이 변하기 때문에, 한 유형의 4 KB 데이터량이 2 KB L-페이지로 압축될 수도 있는 한편, 상이한 유형의 4 KB 데이터량이 예를 들어, 1 KB L-페이지로 압축될 수도 있다. 따라서, 이러한 압축으로 인하여, L-페이지들의 사이즈는 예를 들어, 24 바이트의 최소 압축 사이즈 내지 예를 들어, 4 KB 또는 4 KB+ 의 최대 비압축 사이즈로 정의되는 범위 내에서 변경될 수도 있다. 다른 사이즈들 및 범위들이 구현될 수도 있다. 도 3 에 도시된 바와 같이, L-페이지들 (212) 이 E-페이지 (210) 의 바운더리들과 정렬될 필요는 없다. 실제로, L-페이지들 (212) 은 F-페이지 (208) 및/또는 E-페이지 (210) 바운더리와 정렬된 시작 어드레싱를 갖도록 구성될 수도 있지만 또한 F-페이지 (208) 또는 E-페이지(210) 의 바운더리들 중 어느 것과 정렬되지 않도록 구성될 수도 있다. 즉, L-페이지 시작 어드레스는 도 3 에 도시된 바와 같이, F-페이지들 (208) 의 시작 또는 종료 어드레스들 또는 E-페이지들 (210) 의 시작 또는 종료 어드레스들로부터의 비제로 오프셋에 위치될 수도 있다. L-페이지들 (212) 이 사이즈가 고정되어 있지 않고 고정된 사이즈의 E-페이지들 (210) 보다 더 작을 수도 있기 때문에, 하나 보다 많은 L-페이지 (212) 가 단일의 E-페이지 (210) 내에서 고정될 수도 있다. 이와 유사하게, L-페이지들 (212) 이 사이즈가 E-페이지들 (210) 보다 더 클 수도 있기 때문에, L-페이지들 (212) 은 하나보다 많은 E-페이지 범위에 걸쳐 있을 수도 있고, 심지어 도 3 에 도면 부호 217 로 도시된 바와 같이, F-페이지들 (208) 의 바운더리들을 가로지를 수도 있다.
예를 들어, LBA 사이즈가 512 또는 512+ 바이트인 경우, 압축되지 않은 L-페이지 (212) 가 4 KB 내지 4 KB+ 일 수도 있는 것으로 주어지면, 예를 들어, 8개의 순차적 LBA들의 최대값이 4 KB L-페이지 (212) 로 팩킹될 수도 있다. 일 실시형태에 따르면, 압축 후에 물리적 사이즈가 최소 사이즈에서수 바이트들로부터 전체 사이즈에서 수 천 바이트들까지의 범위에 걸쳐있을 수도 있기 때문에, L-페이지 (212) 의 정확한 논리적 사이즈는 중요하지 않음을 주지해야 한다. 예를 들어, 4TB SSD 디바이스에서, 30 비트의 어드레싱을 이용하여 이러한 SSD 에 잠재적으로 존재할 수 있는 각각의 L-페이지 (212) 를 어드레싱할 수도 있다.
어드레스 변환 맵 및 관련된 데이터 구조들
도 4 는 일 실시형태에 따라, 논리적 투 물리적 어드레스 변환 맵 및 이것의 예시적인 엔트리들을 나타낸다. 호스트 데이터가 L-페이지들 (212) 에서 호스트에 의해 참조될 때 그리고 데이터 저장 디바이스가 L-페이지들 (212) 을 하나 이상의 연속하는 E-페이지들 (210) 에 저장할 때, 제어기 (202) 로 하여금 L-페이지 (212) 의 L-페이지 넘버를 하나 이상의 E-페이지들 (210) 에 연관시키기 위해 논리적 투 물리적 어드레스 변환 맵이 요구된다. 이러한 논리적 투 물리적 어드레스 변환 맵은 도 4 에서 302 에 도시되어 있으며, 일 실시형태에서 L-페이지 (212) 마다 하나의 엔트리를 갖는 선형 어레이이다. 이러한 논리적 투 물리적 어드레스 변환 맵 (302) 은 휘발성 메모리, 이를 테면, DRAM 또는 SRAM 에 저장될 수도 있다. 도 4 는 또한 도 4 에서의 L-페이지들 (212) 이 L-페이지 1, L-페이지 2, L-페이지 3 및 L-페이지 4 로서 표기된 L-페이지 넘버들과 연관되어 있는 4 개의 상이한 L-페이지들 (212) 에 대한 논리적 투 물리적 어드레스 변환 맵에서의 엔트리들을 나타낸다. 일 실시형태에 따르면, 데이터 저장 디바이스에 저장된 각각의 L-페이지는, 논리적 투 물리적 어드레스 변환 맵 (302) 에서의 단일의 그리고 고유한 엔트리에 의해 적시될 수도 있다. 이에 따라, 여기에 전개되고 있는 예에서는 4 개의 엔트리들이 도시된다. 302 에 도시된 바와 같이, 맵 (302) 에서의 각각의 엔트리는 L-페이지 넘버를 포함할 수도 있으며, 이 수는 참조되고 있는 L-페이지의 시작 어드레스, 물리적 페이지 (예를 들어, E-페이지) 내의 시작 어드레스의 오프셋, 및 L-페이지의 길이를 포함하는 물리적 페이지 (예를 들어, E-페이지) 의 식별을 포함할 수도 있다. 추가로, 복수의 ECC 비트들은 맵 엔트리에 대한 에러 정정 기능을 제공할 수도 있다. 예를 들어, 그리고 도 4 에 도시된 바와 같이, 그리고 2 KB 의 E-페이지 사이즈인 것으로 하면, L-페이지 1 은 다음과 같이 논리적 투 물리적 어드레스 변환 맵 (302) 에서 참조될 수도 있다: E-페이지 (1003), 오프셋 (800), 길이 (1624), 이에 후속하여 미리 정해진 수의 ECC 비트들 (도시 생략). 즉, 물리적 어드레스 관점에서, L-페이지 1 의 시작은 E-페이지 (1003) 내에 있고 (E-페이지와 정렬되지 않음), 800 바이트들과 동일한 E-페이지 (1003) 의 시작하는 물리적 로케이션으로부터의 오프셋에 위치된다. 압축된 L-페이지 1 은 또한 1,624 바이트로 확장하고, 이에 의해 E-페이지 (1004) 의 E-페이지 바운더리를 가로지른다. 따라서, E-페이지들 (1003 및 1004) 각각은 L-페이지 넘버 (L-페이지 1) 에 의해 표기되는 L-페이지 (212) 의 일부분을 저장한다. 이와 유사하게, L-페이지 넘버 (L-페이지 2) 에 의해 참조되는 압축된 L-페이지는 E-페이지 (1004) 내에 전체적으로 저장되며, 400 바이트의 내부의 오프셋에서 시작하며, E-페이지 (1004) 내에서 오직 696 바이트들만을 확장한다. L-페이지 넘버 (L-페이지 3) 와 연관된 압축된 L-페이지는 1,120 바이트의 오프셋 (L-페이지 2 의 바운더리로부터 단지 24 바이트만큼 떨어져 있음) 에서 E-페이지 (1004) 내에서 시작하며, E-페이지 (1005) 를 지나서 E-페이지 (1006) 로 4,096 바이트를 확장한다. 따라서, L-페이지 넘버 (L-페이지 3) 와 연관된 L-페이지는 E-페이지 (1004) 의 일부분, E-페이지 (1005) 의 전부 및 E-페이지 (1006) 의 일부에 걸쳐 있다. 마지막으로, L-페이지 넘버 (L-페이지 4) 와 연관된 L-페이지는 1,144 바이트의 오프셋에서 E-페이지 (1006) 내에서 시작하며, E-페이지 (1007) 에 전체적으로 걸쳐 있고 F-페이지 바운더리를 가로질러 다음 F-페이지의 E-페이지 (1008) 로 3,128 바이트를 확장한다.
총괄적으로, 논리적 투 물리적 어드레스 변환 맵 (302) 의 각각의 엔트리를 구성하는 이들 구성 식별자 필드들 (E-페이지, 오프셋, 길이 및 ECC) 각각은 예를 들어, 그 사이즈가 8 바이트일 수도 있다. 즉, 예시적인 4 TB 드라이브에서, E-페이지의 어드레스는 사이즈가 32 비트일 수도 있고, 오프셋은 사이즈가 (최대 4 KB 까지의 E-페이지 데이터 부분들에 대해) 12 비트일 수도 있고, 길이는 사이즈가 10 비트일 수도 있고 그리고 ECC 필드가 제공될 수도 있다. 다른 편성들 및 비트 폭들이 가능하다. 이러한 8 바이트 엔트리는 L-페이지가 기록되거나 변경될 때마다 생성되어, 제어기 (202) 로 하여금 플래시 저장부 내에서 L-페이지들에 기록된 호스트 데이터의 트랙을 유지하게 할 수도 있다. 논리적 투 물리적 어드레스 변환 맵에서의 이 8-바이트 엔트리는 L-페이지 넘버 또는 LPN 에 의해 인덱싱될 수도 있다. 즉, 일 실시형태에 따르면, L-페이지 넘버는 논리적 투 물리적 어드레스 변환 맵 (302) 으로의 인덱스로서 기능한다. 4 KB 섹터 사이즈의 경우에, LBA 는 LPN 과 동일함을 주지해야 한다. 따라서, LPN 은 휘발성 메모리 내의 엔트리의 어드레스를 구성할 수도 있다. 제어기 (202) 가 호스트 (218) 로부터 판독 커맨드를 수신할 때, LPN 은 제공받은 LBA 로부터 유도될 수도 있고, 논리적 투 물리적 어드레스 변환 맵 (302) 으로의 인덱스에 이용되어 플래시 메모리에서 판독될 데이터의 로케이션을 추출할 수도 있다. 제어기 (202) 가 호스트로부터 기록 커맨드를 수신할 때, LPN 는 LBA 로부터 구성될 수도 있고, 논리적 투 물리적 어드레스 변환 맵 (302) 이 변경될 수도 있다. 예를 들어, 내부에서 새로운 엔트리가 생성될 수도 있다. 논리적 투 물리적 어드레스 변환 맵 (302) 을 저장하는 휘발성 메모리의 사이즈에 의존하여, LPN 은 단일의 엔트리에 저장될 수도 있거나, 또는 예를 들어, (ECC 비트를 플러스한) 당해 L-페이지의 시작 어드레스를 포함한 E-페이지를 식별하는 제 1 엔트리, 및 (ECC 비트를 플러스한) 오프셋 및 길이를 식별하는 제 2 엔트리로 나누어질 수도 있다. 일 실시형태에 따르면, 이에 따라, 이들 2 개의 엔트리들은 함께, 플래시 메모리 내에서 단일의 L-페이지에 대응하여 L-페이지를 적시할 수도 있다. 다른 실시형태들에서, 논리적 투 물리적 어드레스 변환 맵의 특정 포맷이 위에 도시된 예들과는 상이할 수도 있다.
논리적 투 물리적 어드레스 변환 맵 (302) 이 휘발성 메모리에 저장될 수도 있기 때문에, 기동시에 또는 휘발성 메모리에 대한 임의의 다른 전력 손실시에 반드시 재구축되어야 한다. 따라서, 이는 L-페이지가 기동후 또는 전력 실패 이벤트 후에 비휘발성 메모리에서 어디에 저장되는지를 제어기가 "인지"할 수 있기 전에, 제어기 (202) 로 하여금 논리적 투 물리적 어드레스 변환 맵 (302) 을 재구성하게 하는 일부 메카니즘 및 정보가 비휘발성 메모리에 저장되는 것을 필요로 한다. 일 실시형태에 따르면, 이러한 메카니즘 및 정보는 시스템 저널 또는 S-저널이라 지칭될 수도 있는 구성에 따라 구체화될 수도 있다. 일 실시형태에 따르면, 제어기 (202) 는 복수의 비휘발성 메모리 디바이스들에서 (예를 들어, 하나 이상의 다이, 채널, 또는 평면에서 블록들 (206) 중 하나 이상에서), 물리적 투 논리적 어드레스 대응관계들을 정의하는 복수의 S-저널을 유지하도록 구성될 수도 있다. 일 실시형태에 따르면, 각각의 S-저널은 물리적 페이지들 (예를 들어, E-페이지들) 의 미리 정해진 범위를 커버할 수도 있다. 일 실시형태에 따르면, 각각의 S-저널은 복수의 저널 엔트리들을 포함할 수도 있으며, 각각의 엔트리는 하나 이상의 물리적 페이지들, 이를 테면, E-페이지들을 각각의 L-페이지의 L-페이지 넘버에 연관시키도록 구성된다. 일 실시형태에 따르면, 제어기 (202) 가 재시작할 때마다 또는 논리적 투 물리적 어드레스 변환 맵 (302) 이 재구축될 때마다, 제어기 (202) 는 S-저널들을 판독하고, S-저널 엔트리들로부터 판독된 정보로부터, 논리적 투 물리적 어드레스 변환 맵 (302) 을 재구축한다.
도 5 는 일 실시형태에 따라, 논리적 투 물리적 어드레스 변환 맵을 업데이트하고 S-저널 엔트리를 생성하는 방법의 양태들을 나타낸다. 여기에 도시된 바와 같이, 논리적 투 물리적 어드레스 변환 맵 (302) 이 최신으로 유지되는 것을 보장하기 위하여, L-페이지가 블록 (B51) 에 도시된 바와 같이, 기록되거나 달리 업데이트될 때마다, 논리적 투 물리적 어드레스 변환 맵 (302) 은 B52 에 도시된 바와 같이 업데이트될 수도 있다. B53 에 도시된 바와 같이, S-저널 엔트리가 또한 생성되어, 그 내부에 업데이트된 L-페이지의 로케이션을 적시하는 정보를 저장할 수도 있다. 이 방식으로, 논리적 투 물리적 어드레스 변환 맵 (302) 및 S-저널들은, 새로운 기록들이 발생할 때 (예를 들어, 호스트가 비휘발성 메모리에 대한 기록들을 발행할 때, 가비지 수집/웨어 레벨링 (wear leveling) 이 발생할 때 등) 업데이트된다. 어드레스 변환 데이터의 전력 절감 카피를 유지하기 위한 비휘발성 메모리 디바이스들에 대한 기록 동작들은 이에 따라, 기록 증폭 (Write Amplification; WA) 이 감소되도록 논리적 투 물리적 어드레스 변환 맵의 일부분 또는 전부를 재저장하는 대신에, 새롭게 생성된 S-저널 엔트리들 (이는 사이즈가 단지 수 바이트일 수도 있음) 에 의해 트리거되도록 구성될 수도 있다. S-저널들의 업데이트는 제어기 (202) 가 새롭게 업데이트된 L-페이지애 액세스할 수 있는 것, 및 논리적 투 물리적 어드레스 변환 맵이 저장되는 비휘발성 메모리에 영향을 주는 재시작시 또는 다른 정보 소거 전력 이벤트 시에 논리적 투 물리적 어드레스 변환 맵 (302) 이 재구성될 수도 있는 것을 보장한다. 또한, 논리적 투 물리적 어드레스 변환 맵 (302) 을 재구축하는데 있어 이들의 유용성에 더하여, S-저널들은 효과적인 가비지 수집 (Garbage Collection; GC) 을 실행함에 있어서 유용하다. 실제로, S-저널들은 모든 L-페이지 넘버들에 대한 최종 시간 (last-in-time) 업데이트를 포함할 수도 있고, 유효 L-페이지를 적시하지 않은 엔트리들인 비유효 엔트리들을 또한 포함할 수도 있다.
일 실시형태에 따르면, S-저널은 매체에 기록된 메인 플래시 관리 데이터를 구성할 수도 있다. 일 실시형태에 따르면, S-저널들은 주어진 S-블록에 대한 매핑 정보를 포함할 수도 있고, 주어진 S-블록에 대한 P2L (Physical-to-Logical) 정보를 포함할 수도 있다. 도 6 은 일 실시형태에 따른 S-저널의 양태들을 나타내는 블록도이다. 여기에서 그리고 일 실시형태에 따라 도시된 바와 같이, 각각의 S-저널 (602) 은 비휘발성 메모리의 미리 정해진 물리적 영역, 이를 테면, 예를 들어, 5 비트를 이용하여 어드레싱가능한, 606 으로 도시된 바와 같은 32 개의 E-페이지들을 커버한다. 각각의 S-저널 (602) 은 S-저널 넘버 (604) 에 의해 식별될 수도 있다. 호스트 데이터에 대한 P2L 정보를 저장하기 위해 이용되는 S-저널 넘버 (604) 는 S-저널에 의해 커버되는 제 1 물리적 페이지의 어드레스의 일부분을 포함할 수도 있다. 예를 들어, S-저널 (602) 의 S-저널 넘버 (604) 는 예를 들어, S-저널 (602) 에 의해 커버되는 제 1 E-페이지의 27 MSb들을 포함할 수도 있다.
도 7 은 일 실시형태에 따라, S-저널 (602) 의 하나의 엔트리 (702) 의 예시적인 편성을 나타낸다. S-저널 (602) 의 각각의 엔트리 (702) 는 E-페이지들에서 물리적으로 어드레싱되는 하나의 L-페이지의 시작 어드레스를 적시할 수도 있다. 각각의 엔트리 (702) 는 예를 들어, L-페이지의 시작 E-페이지를 포함하는 E-페이지의 LSb들의 넘버 (예를 들어, 5) 를 포함할 수도 있다. 전체 E-페이지 어드레스는 헤더에서의 S-저널 넘버의 27 MSb들과 이들 5 LSb들을 연결함으로써 얻어질 수도 있다. 엔트리 (702) 는 그 후, L-페이지 넘버, 식별된 E-페이지 내의 자신의 오프셋, 및 자신의 사이즈를 포함할 수도 있다. 예를 들어, 데이터 밴드 S-저널 (602) 의 각각의 엔트리는 약 7 바이트의 전체적인 사이즈를 추가하여, S-저널 엔트리에 의해 커버되는 제 1 E-페이지의 5 LSb들, L-페이지 넘버의 30 비트, E-페이지 오프셋의 9 비트, 및 L-페이지 사이즈의 10 비트를 포함할 수도 있다. 여러 다른 내부 저널 엔트리 포맷들이 다른 실시형태들에서 이용될 수도 있다.
일 실시형태에 따르면, L-페이지들에 저장된 데이터의 압축 또는 호스트 구성 시에 가변성으로 인하여, L-페이지들의 가변 넘버가 물리적 영역에, 이를 테면, 도 6 에 606 으로 도시된 바와 같이 32 개의 E-페이지들과 동일한 물리적 영역에 저장될 수도 있다. L-페이지들의 사이즈들에서의 압축 사용 및 결과적인 가변성의 결과로서, S-저널들 (602) 은 가변 넘버의 엔트리들을 포함할 수도 있다. 예를 들어, 일 실시형태에 따르면, 최대 압축시, L-페이지는 사이즈가 24 바이트일 수도 있고 S-저널 (602) 은 동일한 넘버의 L-페이지들, S-저널 엔트리 (702) 당 하나의 L-페이지를 참조하는 2,500 초과의 엔트리들을 포함할 수도 있다.
위에 주지된 바와 같이, S-저널들 (602) 은 주어진 S-블록에 대하여 매핑 정보를 포함하도록 구성될 수도 있고, 주어진 S-블록에 대하여 P2L 정보를 포함할 수도 있다. 보다 정확하게는, 일 실시형태에 따르면, S-저널들 (602) 은 주어진 S-블록 내의 미리 정해진 범위의 E-페이지들에 대한 매핑 정보를 포함할 수도 있다. 도 8 은 일 실시형태에 따른 슈퍼블록 (S-블록) 의 블록도이다. 여기에 도시된 바와 같이, S-블록 (802) 은 (도 2 에 또한 206 으로 도시된 바와 같은) 하나의 플래시 블록 (F-블록)(804) 을 포함할 수도 있다. 따라서, S-블록 (802) 은 플래시 관리 시스템의 유닛을 형성하도록 함께 결합되는 F-블록들 (다이 당 하나의 F-블록) 의 수집을 가져올 수도 있다. 일 실시형태에 따르면, 할당, 소거 및 GC 는 슈퍼블록 레벨에서 관리될 수도 있다. 도 8 에 도시된 바와 같이, 각각의 F-블록 (804) 은 복수의 플래시 페이지들 (F-페이지), 이를 테면, 예를 들어, 256 또는 512 개의 F-페이지들을 포함할 수도 있다. 일 실시형태에 따르면, F-페이지는 주어진 비휘발성 메모리 디바이스에 대한 프로그램의 최소 유닛의 사이즈로 이루어질 수도 있다. 도 9 는 일 실시형태에 따른 슈퍼 페이지 (S-페이지) 를 나타낸다. 여기에 도시된 바와 같이, S-페이지 (803) 는 S-블록의 블록당 하나의 F-페이지를 포함하며, 이는 S-페이지 (803) 가 전체 S-블록 (802) 의 범위에 걸쳐 있음을 의미힌다.
도 10 의 (a) 는 일 실시형태에 따라 논리적 투 물리적 어드레스 변환과, S-저널들 및 S-블록들 간의 관계들을 나타낸다. 도면 부호 (902) 는 논리적 투 물리적 어드레스 변환 맵을 지칭한다. 일 실시형태에 따르면, 논리적 투 물리적 어드레스 변환 맵에서의 L-페이지 당 논리적 투 물리적 어드레스 변환 맵 (902) 에서의 하나의 엔트리가 존재할 수도 있다는 점에서, 논리적 투 물리적 어드레스 변환 맵 (902) 은 L-페이지 넘버에 의해 인덱싱될 수도 있다. 플래시 메모리에서의 L-페이지의 시작의 물리적 어드레스 및 그 사이즈는 맵 엔트리에서, 즉, E-페이지 어드레스, E-페이지 어드레스 내의 오프셋 및 L-페이지의 사이즈에 의해 주어질 수도 있다. 이전에 주지된 바와 같이, L-페이지는 그 사이즈에 의존하여, 하나 이상의 E-페이지들의 범위에 걸쳐 있을 수도 있고, F-페이지들 및 블록들의 범위에도 또한 걸쳐 있을 수도 있다.
904 로 도시된 바와 같이, 휘발성 메모리 (예를 들어, DRAM) 는 또한 S-저널 맵을 저장할 수도 있다. S-저널 맵 (904) 에서의 엔트리는 S-저널이 비휘발성 메모리에 물리적으로 위치되는 곳에 관련된 정보를 저장한다. 예를 들어, L-페이지의 시작이 저장된 E-페이지 물리적 어드레스의 27 MSb들이 S-저널 넘버를 구성할 수도 있다. 휘발성 메모리에서의 S-저널 맵 (904) 는 또한 시스템 E-페이지로 참조되는 비휘발성 메모리에서의 S-저널의 어드레스를 포함할 수도 있다. 휘발성 메모리에서의 S-저널 맵 (904) 으로부터, 시스템 S-블록 정보 (908) 가 추출될 수도 있다. 시스템 S-블록 정보 (908) 는 시스템 S-블록 (시스템 밴드에서의 S-블록) 에 의해 인덱싱될 수도 있고, S-블록에 관한 정보 중에서 무엇보다도, 시스템 S-블록에서의 임의의 자유 공간 또는 이용된 공간의 사이즈를 포함할 수도 있다. S-저널 맵 (904) 으로부터 또한, 비휘발성 메모리 (910) 에서의 S-저널들의 물리적 로케이션이 추출될 수도 있다.
일 실시형태에 따라, 시스템 밴드는 L-페이지 데이터를 포함하지 않고, 모든 파일 관리 시스템 (FMS) 메타 데이터 및 정보를 포함할 수도 있다. 시스템 밴드는 신뢰도 및 전력 실패 단순성을 위해서만 하위 페이지로서 구성될 수도 있다. 정규 동작 동안에, 시스템 밴드는 가비지 수집 동안을 제외하고는 판독될 필요가 없다. 일 실시형태에 따르면, 시스템 밴드는 전체적인 WA 최적화에 대한 데이터 밴드보다 상당히 더 높은 오버프로비져닝을 제공받을 수도 있다. 다른 밴드들은 L-페이지 데이터를 포함할 수도 있고 빈번하게 업데이트되는 핫밴드, 및 가비지 수집 프로세스로부터 보류된 정적 데이터를 저장하는 메모리의 물리적 영역이고 빈번하지 않게 업데이트될 수도 있는 콜드 밴드를 포함할 수도 있다. 일 실시형태에 따르면, 시스템, 핫 및 콜드 밴드들은 S-블록 기반으로 제어기 펌웨어에 의해 할당될 수도 있다.
위에서 주지된 바와 같이, 비휘발성 메모리에서의 이들 S-저널들의 각각은 S-저널 엔트리들의 수집을 포함할 수도 있고 예를 들어, 32 E-페이지 가치의 데이터를 커버할 수도 있다. 비휘발성 메모리 (910) 에서의 S-저널들은 제어기 (202) 로 하여금 기동시 비휘발성 메모리에서의 S-저널 엔트리들에 액세스하게 하고, 제어기 (202) 로 하여금 휘발성 메모리에서 논리적 투 물리적 어드레스 변환 맵 (902) 뿐만 아니라 S-저널 맵 (904), S-블록 정보 (906), 및 시스템 S-블록 정보 (908) 를 재구축하게 한다.
비휘발성 메모리에서의 S-저널들은 또한 비유효 L-페이지 정보 전부를 포함할 수도 있고, 이에 의해 제어기 (202) 로 하여금 휘발성 메모리에서의 논리적 투 물리적 어드레스 변환 맵 (902) 및 S-저널 맵 (904) 이 재구축된 후에 GC 를 행하게 한다. 따라서, S-저널들은 시간의 경과에 따라 논리적 투 물리적 어드레스 변환 맵 (902) 에 대한 모든 업데이트들의 순차적인 인력을 포함하는 것이라 할 수도 있다.
도 10 의 (b) 는 일 실시형태에 따른 S-저널 맵 (904) 의 다른 도면의 블록도이다. S-저널 맵 (904) 은 각각의 S-블록에 대해 복수의 S-저널 엔트리들을 참조할 수도 있다. 일 실시형태에 따르면, S-블록 넘버는 S-저널 넘버의 MSb 일 수도 있다. S-저널 맵 (904) 의 사이즈는 S-블록 당 S-블록 엔트리들의 넘버의 S-블록 넘버의 배수에 상관될 수도 있다. 따라서, S-저널 맵 (904) 으로의 인덱싱은 S-블록 넘버 (S-저널 넘버의 MSb) 및 S-블록 넘버에 대한 S-저널 엔트리를 참조함으로써 수행될 수도 있다. 제어기 (202) 는 또한, S-저널들의 맵을 구축 또는 재구축하고, 휘발성 메모리에 결과적인 S-저널 맵 (904) 을 저장하도록 구성될 수도 있다. 예를 들어, 기동시, 또는 전력이 실패한 다른 이벤트의 발생시 또는 에러 복구에 후속하는 재시작 후에, 제어기 (202) 는 미리 정해진 순차적인 순서로 복수의 S-저널들을 판독할 수도 있고, 순차적으로 판독된 복수의 S-저널들에 기초하여 비휘발성 메모리 디바이스들에 저장된 S-저널들의 맵을 구축할 수도 있고 휘발성 메모리에 구축된 S-저널 맵 (904) 을 저장할 수도 있다. 특히, 재구축된 S-저널 맵 (904) 은 각각의 S-저널의 최신 기록된 버전에 대한 물리적 로케이션을 포함하도록 구성될 수도 있다. 실제로, 일 실시형태에 따르면, S-저널 맵 (904) 의 재구축에 있어서, 보다 오래된 S-저널들의 물리적 로케이션은 더 새로운 S-저널이 발견될 때 오버라이팅될 수도 있다. 달리 설명하면, 일 실시형태에 따르면, S-저널 맵 (904) 은 유효한 것으로 결정된 판독된 S-저널들에 기초하여 프로세서 (202) 에 의해 재구축될 수도 있다.
2-스테이지 맵 재구축
일 실시형태에 따르면, 파워온시, 어드레스 변환 맵 재구축 및 자유 공간 어카운트가 두개의 별개의 스테이지들로 나누어질 수도 있다. 제 1 스테이지에서, 어드레스 변환 맵은 비휘발성 메모리의 시스템 밴드에서 저장된 S-저널들로부터 재구축될 수도 있다. 위에 주지된 바와 같이, 시스템 밴드는 FMS 메타 데이터 및 정보를 포함하는 비휘발성 메모리의 부분일 수도 있다. 사후 전력 전력실패 동작들의 신뢰도 및 단순화를 위하여, 시스템 밴드는 하위 페이지 전용 동작을 위해 구성될 수도 있고, 이에 의해 MLC 플래시 메모리의 하위 페이지의 어떠한 변질 (corruption) 가능성도 회피할 수도 있다. 또한, 시스템 밴드는 (이는 모든 L-페이지 데이터를 저장하고 핫 밴드 및 콜드 밴드 양쪽 모두를 포함하는) 전체적인 WA 최적화를 위한 데이터 밴드보다 상당히 더 오버프로비져닝될 수도 있다.
일 실시형태에 따르면 그리고 도 11 의 B151 로 도시된 바와 같이, 논리적 투 물리적 어드레스 변환 맵 (902) 을 재구축하기 위하여, 모든 S-저널들이 판독될 수도 있다. 모든 S-저널들을 판독하는 것은 제어기 (202) 로 하여금 각각의 S-저널의 각각의 엔트리로부터, 각각의 L-페이지 넘버와 연관된 각각의 L-페이지의 사이즈 및 정확한 물리적 로케이션을 추출하게 한다. 일 실시형태에서, 모든 S-저널들이 판독되고 물리적 투 논리적 정보가 이들로부터 추출되어 휘발성 메모리에서의 논리적 투 물리적 어드레스 변환 맵 (902) 에 저장된 후, 제어기 (202) 는 전체 비휘발성 메모리에 저장된 L-페이지들 모두에 대하여 어카운트하여 매핑할 것이다. 얼마나 많은 S-저널들이 판독되는지는, 비휘발성 메모리의 사이즈 뿐만 아니라 각각의 S-저널 (예를 들어, 일 실시형태에 따르면, 32 개의 E-페이지들) 에 의해 커버되는 물리적 페이지들의 범위에 적어도 부분적으로 의존한다. 또한, 일 실시형태에 따르면, S-저널 구성은 가상 어드레싱 범위에 관련된 정보를 저장하는 것 및 휘발성 메모리에 다른 파일 관리 테이블들을 저장하기 위하여 이용될 수도 있다.
일 실시형태에 따르면, S-저널들이 물리적 투 논리적 정보의 모두를 총괄적으로 포함하도록 구성될 수도 있을 때, 그리고 많은 L-페이지들이 여러번 업데이트될 가능성이 있을 때 S-저널들이 판독되는 순서는 중요하다. 실제로, S-저널들이 (적어도 L-페이지들이 저장된 S-블록의 최종 가비지 수집 이래) L-페이지들에 대한 업데이트들의 완전한 이력을 총괄적으로 저장하도록 구성될 수도 있을 때, 일 실시형태에서, S-저널들은 블록 (B151) 으로 나타낸 바와 같이, 이들이 생성되었던 순서로 판독된다. 이는 도 12 에 그래픽적으로 도시되어 있으며, 여기에서, S-저널들이 순서대로 판독될 때, L2P 변환 맵 엔트리 (1602) 는 동일한 L-페이지에 대한 비교적 뒤에 생성된 S-저널 엔트리에서의 대응하는 맵 엔트리 (1602) 에 의해 S-저널 엔트리가 순차적으로 대체될 때 더 이른 시간에서부터 생성된다. 이 방식으로, (가능성있는 바와 같이) 특정 L-페이지들에 대한 수개의 업데이트들이 존재하면, S-저널들이 생성되는 순서대로 S-저널들을 판독하는 것은, 무효 S-저널 엔트리들 (즉, L-페이지의 현재 로케이션을 적시하지 않은 S-저널 엔트리들) 이 유효 엔트리들 (즉, L-페이지의 현재 로케이션을 적시한 S-저널 엔트리들) 에 앞서 판독되는 것을 보장한다. 이는 결과적으로 특정 L-페이지에 대한 S-저널 엔트리에서의 가장 최근 시간이 그 L-페이지에 대한 유효 맵 엔트리 (1602) 를 생성하는데 이용되는 것을 보장한다. S-저널들이 생성되었던 순서대로의 S-저널들의 이러한 순차적인 판독 및 L-페이지에 대한 S-저널 엔트리의 최종 판독이 가장 현재의 판독임을 보장하는 것은 재구축된 논리적 투 물리적 어드레스 변환 맵 (902) 이 일관성있는 것, 즉 비휘발성 메모리 내에 정확한 물리적 로케이션들에 논리적 페이지들을 정확하게 매핑하는 것을 보장한다. 일 실시형태에 따르면, 비휘발성 메모리에 저장된 S-저널들이 판독될 때, S-저널 맵 (904)(도 10 의 (b) 참조) 은 또한 각각의 판독된 S-저널의 S-저널 넘버 및 어드레스로부터 재구성될 수도 있다. S-저널 맵 (904) 은 휘발성 메모리에 저장될 수도 있다.
일 실시형태에 따르면, 도시되고 여기에서 설명된 2 스테이지 프로세스의 일 실시형태의 제 1 스테이지에서, 제어기 (202) 는 기동시에, S-저널이 B151 에서 도시된 바와 같이 생성되었던 순서로 복수의 S-저널들의 각각을 판독하고, 판독된 복수의 S-저널들로부터 휘발성 메모리에서의 논리적 투 물리적 어드레스 변환 맵 (902) 을 재구축하도록 구성될 수도 있다. 즉, 제어기 (202) 는 판독된 S-저널 엔트리들로부터 물리적 로케이션 정보 (예를 들어, 비휘발성 메모리에서의 E-페이지 내의 길이 및 시작 어드레스) 로 논리적 투 물리적 어드레스 변환 맵 (902) 을 파퓰레이션할 수도 있다. 이 방식으로 데이터 저장 디바이스에 저장된 각각의 L-페이지는, 논리적 투 물리적 어드레스 변환 맵 (902) 에서의 단일의 그리고 고유한 엔트리에 의해 적시될 수도 있다. 일 실시형태에 따르면, 제어기 (202) 는 판독된 S-저널들의 각각에서의 각각의 엔트리에 대한 휘발성 메모리에 기록 동작 (예를 들어, 8 바이트 기록) 을 수행할 수도 있다. 그러나, 실시형태들은 여기에서 도시되고 설명된 에시적인 8 바이트 사이즈들로 제한되지 않으며 다른 구현들이 가능함을 이해해야 한다.
일 실시형태에 따르면, 모든 S-저널들이 판독된 후, 그리고 논리적 투 물리적 어드레스 변환 맵 (902) 으로서, S-저널 맵 (904) 및 임의의 요구되는 테이블들이 휘발성 메모리에서 재구축된 후, 데이터 저장 디바이스는 B152 에 도시된 바와 같이, 호스트(들)(218) 에 데이터 액세스 커맨드들을 프로세싱할 준비가 되어 있음을 리포트할 수도 있다. 데이터 저장 디바이스는 이 제 1 스테이지의 완료시, 어떠한 자유 공간 어카운트 동작들을 아직 수행하지 않았고 이에 따라 가비지 수집 동작들을 최적으로 수행할 준비가 아직 되어 있지 않음을 주지해야 한다. 실제로, 가비지 수집에 대한 최적의 블록 선택이 개별적인 S-블록들 내의 자유 공간에 적어도 부분적으로 의존하는 실시형태에서, 제어기 (202) 는 이 제 1 스테이지의 종료시, 자유 공간 어카운트가 아직 수행되지 않았기 때문에, 가비지 수집에 대한 최적의 S-블록이 어느 것인지를 아직 인지하지 못한다. 가비지 수집 활동들을 위한 S-블록을 선택하는데 있어서 고려 사항들 중 하나는 각각의 S-블록에서 가용성있는 자유 공간의 양을 특정하는 것을 포함할 수도 있다. 예를 들어, 제어기 (202) 는 가비지 수집 활동들을 수행하려 하는 다음 S-블록으로서 자유공간의 최대량을 갖는 S-블록을 선택할 수도 있다. 일 실시형태에 따르면, 제어기 (202) 는 또한 가비지 수집할 다음 최상의 S-블록을 식별한 것 뿐만 아니라 그 후의 다음 최상의 S-블록에 대하여 식별할 수도 있으며, 이후 동일하게 이루어질 수 있음을 주지한다.
일 실시형태에 따르면, 적어도 논리적 투 물리적 어드레스 변환 맵 (902) 이 재구축된 후, 그리고 데이터 저장 디바이스가 그 준비가 되어 있음을 리포트하여 데이터 액세스 커맨드들을 프로세싱한 후, 현재의 2 스테이지 파워 온 절차의 제 2 스테이지가 수행될 수도 있다. 일 실시형태에 따르면, 적어도 논리적 투 물리적 어드레스 변환 맵 (902) 이 재구축된 후, 그리고 데이터 저장 디바이스가 그 준비가 되어 있음을 리포트하여 데이터 액세스 커맨드들을 프로세싱한 후, 하나 이상의 테이블들이 재구축된 논리적 투 물리적 어드레스 변환 맵 (902) 으로부터 재구축될 수도 있고 그리고 재구축된 테이블(들)에 기초하여 복수의 S-블록들 중 하나 이상이 도 11 의 B153 에 도시된 바와 같이 가비지 수집을 위하여 선택될 수도 있다. 이를 행하기 위하여, 제어기 (202) 는 다른 가능한 액션들 중 무엇보다도, 논리적 투 물리적 어드레스 변환 맵 (902) 이 재구축된 후 복수의 S-블록들 각각에서의 자유 공간의 양을 포함하는 자유 공간 테이블을 재구축할 수도 있다. 이러한 자유 공간 테이블(들) 을 재구축하기 위하여, 복수의 블록들에서의 자유 공간의 양이 계산될 수도 있다. 제어기 (202) 가 각각의 S-블록에서의 자유 공간의 양을 추적하는 것 대신에, 일 실시형태에 따라, 제어기 (202) 는 각각의 S-블록에서의 유효 데이터의 양을 추적할 수도 있다. 각각의 S-블록에 대한 이러한 정보는 논리적 투 물리적 어드레스 변환 맵 (902) 에서 쉽게 이용가능할 수도 있고, 이 맵은 비휘발성 메모리에서의 각각의 L-페이지의 사이즈의 레코드를 포함하도록 구성될 수도 있다. 각각의 S-블록에서의 유효 데이터의 양으로부터 그리고 S-블록들의 사이즈의 인지에 의해, 제어기 (202) 는 S-블록들의 미리 정해진 사이즈로부터 (논리적 투 물리적 어드레스 변환 맵 (902) 의 판독으로부터 얻어진) 각각의 S-블록에서의 유효 데이터의 사이즈를 추출함으로써 각각의 S-블록에서의 자유 공간의 양을 계산할 수도 있다. S-블록에 저장된 유효 데이터의 양과 그 사이즈 사이의 차이는 각각의 S-블록 내의 자유 공간의 양에 관련되거나 또는 동일할 수도 있다. 이에 따라, 논리적 투 물리적 어드레스 변환 맵 (902) 의 단일의 순차적 판독으로부터 또는 논리적 투 물리적 어드레스 변환 맵 (902) 이 재구축되고 있을 때 각각의 S-블록에서의 유효 데이터의 양을 업데이트함으로써 각각의 S-블록에서의 자유 공간의 양이 제어기 (202) 에 의해 계산될 수도 있다. 누적된 (즉, 논리적 투 물리적 어드레스 변환 맵 (902) 에서의 엔트리들에 걸쳐 합산된) 각각의 S-블록에서의 자유 공간의 양은 예를 들어, 휘발성 메모리에 유지된 테이블에 저장될 수도 있다. 예를 들어, 시스템 블록 정보 테이블 (908) (예를 들어, 도 10 의 (a) 를 참조) 이 이러한 목적을 위해 이용될 수도 있다. 대안으로서, 제어기 (202) 는 각각의 S-블록에 대한 유효 데이터의 누적된 사이즈를 이용하여 별개의 유효 사이즈의 정보 테이블을 생성 및 파퓰레이션할 수도 있다. 도 13 의 테이블 (1702) 에 도시된 바와 같이, S-블록 1 은 내부에 총 450 MB 의 유효 데이터가 저장되어 있으며, S-블록 2 는 내부에 총 1.5 TB 의 유효 데이터가 저장되어 있다. S-블록의 사이즈가 선험적으로 알려질 때, 각각의 S-블록의 양은 쉽게 계산될 수도 있다. 다른 실시형태에서, 자유 공간 양의 계산은 논리적 투 물리적 어드레스 변환 맵 (902) 으로부터의 정보에 기초하여 자유 공간의 양을 직접 합산하는 것에 의해 수행된다.
일 실시형태에 따르면, 데이터 저장 디바이스는 논리적 투 물리적 어드레스 변환 맵 (902) 의 재구축 (그리고 선택적으로 다른 하우스킵핑 활동들, 이를 테면, S-저널 맵 (904) 및 다른 테이블들을 휘발성 메모리에 파퓰레이션하는 것) 이 완료된 후 자신이 호스트 커맨드들을 프로세싱할 준비가 되어 있음을 리포트한다. 이러한 실시형태에서, 데이터 저장 디바이스는 호스트를 프로세싱 (즉, 데이터 액세스) 과 동시에, 및/또는 그 이후에 (예를 들어, 자유 공간 테이블(들) 을 재구축하는 것을 포함한) 자유 공간 어카운트 동작들을 수행하도록 구성된다. 이러한 인입 호스트 커맨드들은 제 2 스테이지가 수행되는 동안에 S-블록들의 자유 공간 어카운트를 변경할 수도 있다. 일 실시형태는 각각의 S-블록에 존재하는 유효 데이터의 양에서의 이러한 변경들을 고려한다.
예를 들어, 논리적 투 물리적 어드레스 변환 맵 (902) 의 재구축 후에, 맵 (902) 은 그 시작에서부터 종료로 순차적으로 판독될 수도 있다. 제어기 (202) 는 도 14 에서의 1902 에 도시된 바와 같이 현재 일관성있는 논리적 투 물리적 어드레스 변환 맵 (902) 의 판독 동안에 포인터를 추적하도록 구성될 수도 있다. 일 실시형태에 따르면, 호스트 커맨드들을 프로세싱하는 동안에 이러한 자유 공간 어카운트를 수행함에 있어서, 제어기 (202) 는 기록 커맨드의 결과로서 변경된 L-페이지가 제어기 (202) 에 의해 어카운트되는 자유 공간에 대해 이미 프로세싱되었던 L-페이지 넘버와 연관되는지, 또는 L-페이지가 순차적으로 논리적 투 물리적 어드레스 변환 맵 (902) 을 판독할 때 제어기 (202) 에 의해 아직 판독되지 않았던 L-페이지 넘버와 연관되는지의 여부에 의존하여 다르게 동작하도록 구성될 수도 있다. 일 실시형태에 따라, 도 14 에 도면 부호 1904 에서 "새로운 기록 1" 로 제안된 바와 같이, 기록 커맨드의 결과로서 변경된 L-페이지가 제어기 (202) 에 의해 어카운트되는 자유 공간에 대해 이미 프로세싱되었던 L-페이지 넘버와 연관되면, 제어기 (202) 는 위에 설명된 방식으로 자유 공간 어카운트를 수행할 수도 있다. 제어기 (202) 가 이미 자유 공간에 대해 현재 업데이트된 L-페이지에 대응하는 엔트리를 이미 프로세싱하였고 업데이트된 L-페이지가 저장된 S-블록에 대한 유효 데이터의 그 실행 카운트에 그 길이를 추가하였기 때문에 이 자유 공간 어카운트는 이 경우에 필수적일 수도 있다. 업데이트된 길이는 L-페이지의 이전 길이와 동일한 것이 가능하며, 이 경우, 유효 데이터의 실행 카운트는 L-페이지가 동일한 S-블록에 기록되면 변경되지 않는다. 그러나, 실행된 기록이 L-페이지에 대한 길이에 대한 변경을 가져오거나 또는 상이한 S-블록에 기록되면, S-블록에서의 데이터의 누적된 사이즈는 실제로 변경된다. 따라서, 각각의 S-블록에서 자유 공간의 정확한 어카운트를 유지하는 것은 제어기 (202) 가 돌아가서, L-페이지에 대한 업데이트의 결과로서 이용가능하게 되는 자유 공간을 적절하게 어카운트하는 것을 필요로 한다.
그러나, 기록 커맨드의 결과로서 변경된 L-페이지가 제어기 (202) 에 의해 자유 공간에 대해 아직 프로세싱되지 않았던 L-페이지 넘버와 연관되면, 일 실시형태는 제어기 (202) 로 하여금 자유 공간 어카운트 활동들을 수행하는 것을 보류하고 논리적 투 물리적 어드레스 변환 맵 (902) 의 순차적 판독을 계속 진행하는 것을 허용한다. 실제로, 실행된 기록 커맨드 결과들이, L-페이지 넘버가 제어기 (202) 에 의해 아직 판독중에 있는 L-페이지에 대한 업데이트를 가져오면, 이를 테면, 도면 부호 1906 에서 참조된 "새로운 기록 2" 의 경우라면, 그 포인터 (1902) 가 현재 새롭게 업데이트된 L-페이지의 L-페이지 넘버에 도달할 때 제어기 (202) 가 테이블 (1702) 에서의 유효 데이터의 사이즈를 정확하게 누적하기 때문에, 자유 공간 어카운트에 대한 별도의 프로세싱이 수행될 필요가 없다.
일 실시형태에 따르면, 비휘발성 메모리의 블록들 (206) 은 예를 들어, 셀 당 2 비트를 저장하는 멀티 레벨 셀들 (Multi-Level Cells; MLC) 을 포함할 수도 있다. MLC 디바이스에서, 적어도 하위 페이지와 상위 페이지가 존재하며 이는 연속적이지 않을 수도 있다. MLC 의 하위 페이지는 그 상위 페이지에 앞서 통상 프로그래밍된다. MLC 디바이스에서의 셀 전압들의 분포 때문에, 상위 페이지를 프로그래밍할 때 또는 프로그래밍하는 동안 전력이 인터럽트되면 MLC 의 하위 페이지를 변질시킬 가능성이 존재한다. 실제로, 프로그래밍 동안에, MLC 에 의해 저장된 전하는, 원하는 논리 상태를 표시하는 원하는 전압에 도달할 때까지 점차적으로 계단식 형태로 증가한다. 일 실시형태에 따라, 이는 S-저널들이 저장된 시스템 밴드가 증가된 신뢰도를 위한 블록에서의 하위 페이지들만을 이용하도록 구성될 수도 있기 때문이다.
하위 페이지 변질 에러들을 추가로 완화시키기 위해, 일 실시형태는 비휘발성 버퍼를 이용하여, 적어도 각각의 MLC 의 하위 페이지 및 상위 페이지 양쪽 모두가 프로그래밍될 때까지 업데이트된 L-페이지들을 일시적으로 저장한다. 하위 페이지 및 상위 페이지들이 연속적이지 않기 때문에, 비휘발성 저장부는 MLC 의 하위 페이지 및 상위 페이지 양쪽 모두를 저장할 만큼 충분히 크게 구성될 수도 있다. 즉, 비휘발성 버퍼는 데이터 저장 디바이스에 대한 전력 손실 후에 하위 페이지 변질로부터의 복구를 가능하게 하도록 적어도 충분히 크도록 구성될 수도 있다. 이러한 비휘발성 버퍼는 도 2 에 도면 부호 211 로 도시된다. 비휘발성 버퍼 (211) 는 원형 버퍼로서 구성될 수도 있다. 제어기 (202) 는 일 실시형태에 따라 비휘발성 버퍼 (211) 에서의 비휘발성 메모리에 기록된 데이터를 누적하도록 구성될 수도 있다. 이를 위하여, 제어기 (202) 는 버퍼 (211) 에 공간을 할당하고 버퍼 (211) 에 할당된 공간에 누적된 데이터를 기록할 수도 있다. 그 후, 누적된 데이터의 적어도 일부분은 버퍼 (211) 에서의 할당된 공간에 그리고 비휘발성 메모리의 하위 페이지에 저장될 수도 있다. 이후의 일정 시점에서, 이전에 프로그래밍된 하위 페이지에 대응하는 상위 페이지가 자체적으로 프로그래밍되고, 이 때, 비휘발성 버퍼 (211) 에서의 이전에 할당된 공간은 추가의 인입 데이터에 대한 여지를 위하여 할당해제될 수도 있다. 유리하게, 이러한 비휘발성 버퍼 (211) 의 제공 및 새롭게 업데이트된 L-페이지들의 내부의 일시적 저장은 누적된 데이터가 비휘발성 버퍼 (211) 에서의 할당된 공간에 기록된 후, 제어기 (202) 로 하여금 기록 확인응답을 생성하여 호스트 (218) 에 전송하게 한다. 따라서, 이 확인응답은 비휘발성 메모리에서 데이터가 프로그래밍된 후 확인응답이 전송된 경우에 있는 것 보다 더 일찍 전송될 수도 있는 한편, 이러한 백업 전력 메카니즘들, 이를 테면, 슈퍼 커패시터 또는 배터리 백킹된 NAND 의 이용을 회피하게 한다. 예를 들어, 비휘발성 버퍼 (211) 는 DRAM 과 대등한 속도에서 동작하면서 비휘발성 방식으로 데이터를 저장하고 있는 MRAM (Magnetic Random Access Memory) 을 포함할 수도 있다. 이러한 비휘발성 버퍼 (211) 를 이용하여, 전력 손실 후에 전력이 데이터 저장 디바이스에 복구된 후 제어기로 하여금 비휘발성 버퍼 (211)로부터 데이터를 판독하게 하고 판독된 데이터의 적어도 일부분을 비휘발성 메모리에 저장하게 한다. 도 2 에 209 로 도시된 바와 같이, 데이터는 누적될 수도, 기록될 수도 그리고 S-페이지들의 유닛들로 비휘발성 버퍼 (211) 에 저장될 수도 있다.
일 실시형태에 따르면, 비휘발성 버퍼 (211) 는 제어기 (202) 로 하여금 비휘발성 버퍼 (211) 에 저장된 L-페이지들을 판독하게 하고 이로부터 판독된 논리적 페이지들을 이용하여 논리적 투 물리적 어드레스 변환 맵 (902) 을 재구축하게 한다. 기동 동안에, 논리적 투 물리적 어드레스 변환 맵 (902) 을 재구축할 때, 제어기 (202) 는 콜드 밴드에 저장된 L-페이지들에 대응하는 시스템 밴드에서 S-저널들을 판독하도록 구성될 수도 있다. 콜드 밴드는 최근 가비지 수집된 L-페이지들의 저장을 위하여 지정된, 제어기 (202) 에 의해 할당된 비휘발성 메모리의 부분일 수도 있다. 그러나, 콜드 밴드는 대응하는 상위 페이지가 아직 프로그래밍되지 않은 하위 페이지들에서 "안전하지 않은" L-페이지 데이터를 저장하는 것도 가능하다. 이러한 하위 페이지 데이터는 제어기에 의해 기록 커맨드가 실행되어야 하면 하위 페이지 변질의 위험에 있을 수도 있으며 이는 대응하는 상위 페이지의 프로그래밍을 가져온다. 이 하위 페이지 변질은 따라서 논리적 투 물리적 어드레스 변환 맵 (902) 의 일관성에 영향을 주며, 이는 데이터 저장 디바이스에 대해 잠재적으로 치명적일 수도 있는 에러를 가져온다.
비휘발성 메모리가 MLC 를 포함하는 일 실시형태에 따르면, 논리적 투 물리적 어드레스 변환 맵 (902) 의 재구축시에, 제어기 (202) 는 대응하는 상위 페이지가 프로그래밍된 하위 페이지에 저장된 안전한 L-페이지들에 대응하는 그 엔트리들을 초과하지 않게, 콜드 대역에 대응하는 S-저널들을 판독하도록 구성될 수도 있다. 이는 이후의 실행된 기록 커맨드가 논리적 투 물리적 어드레스 변환 맵 (902) 을 재구축하는데 이용되는 데이터의 하위 페이지 변질을 가져올 수 없는 것을 보장한다. 또한, 일 실시형태에 따르면, 대응하는 상위 페이지가 프로그래밍되지 않았던 하위 페이지에 저장된 안전하지 않은 L-페이지들에 대응하는 콜드 대역에 대응하는 S-저널들의 엔트리들에 대해, 제어기 (202) 는 또한, 이러한 안전하지 않은 L-페이지들에 대응하는 엔트리들을 포함하는 S-저널들을 프로세싱하는 것을 정지하고 그 대신에 비휘발성 버퍼 (211) 로부터 안전하지 않은 L-페이지들을 판독하고 이들을 비휘발성 메모리에 기록하도록 구성될 수도 있다. 이는 이어서 논리적 투 물리적 어드레스 변환 맵 (902) 에 대한 업데이트들 및 대응하는 S-저널 엔트리들 및/또는 새로운 S-저널들을 생성한다. 이 절차는 이러한 엔트리들을 포함하는 S-저널(들) (예를 들어, 대응하는 상위 페이지가 프로그래밍되지 않았던 하위 페이지에 저장된 안전하지 않은 L-페이지들을 포함하는 콜드 밴드에 대응하는 S-저널들의 엔트리들) 에 의해 참조된 하나 이상의 최종 기록된 S-블록들에 대하여 수행될 수도 있다. 이러한 하나 이상의 S-블록들은 이후에 가비지 수집될 수도 있다. 이 방식으로, 비휘발성 버퍼 (211) 는 논리적 투 물리적 어드레스 변환 맵 (902) 의 재구성 동안에 잠재적으로 안전하지 않은 L-페이지들을 복구 (도 11 의 맵 재구축의 스테이지 1) 하고, 적절하게 가비지 수집을 스케쥴링 (도 11 의 맵 재구축의 스테이지 2) 에 이용될 수도 있다. 다른 실시형태들에서, 안전하지 않은 페이지들에 관련된 추가적인 프로세싱은 콜드 밴드 데이터 대신에 다른 유형의 데이터에 대해 수행된다.
에를 들어, 3.2 TB 데이터 저장 디바이스를 고려하여 본다. 통상의 데이터 저장 디바이스들은 맵 테이블 (104) (도 1) 이 저장될 휘발성 메모리를 판독하는 것을 필요로 할 수도 있다. 이는 이어서 휘발성 메모리에서의 ECC 가 설정되지 않았기 때문에 초기 절차를 필요로 한다. 이는 휘발성 메모리 사이즈가 16 GB 정도인 것으로 가정하면, 예를 들어, 2 초 정도 소요될 수도 있다. 이후, 통상의 데이터 저장 디바이스는 맵 테이블 (104) 을 재구축하기 위해 그리고 자유 공간 정보를 업데이트하기 위해 16 GB 의 랜덤 판독들이 인터리브된 16 GB 의 기록들을 수행해야 할 수도 있다. 이후에는 통상의 데이터 저장 디바이스는 호스트 커맨드들을 수락하여 서비스할 준비에 있음을 리포트만 할 수도 있다. 이와 대조적으로, 현재의 2 스테이지 파워 업 절차를 수행하기 위하여, 일 실시형태는 이전의 휘발성 메모리를 판독하는 것을 필요로 하지 않고 따라서 모든 엔트리들이 기록될 때까지 휘발성 메모리를 판독하는 것을 필요로 하지 않는다. 실제로, 일 실시형태에 따르면, 제조 설비를 남기기 전에, 데이터 저장 디바이스는 트리밍되어 이에 의해 유효 엔트리들을 가진 논리적 투 물리적 어드레스 변환 맵 (902) 을 사전 파퓰레이션할 수도 있다. 이후, 휘발성 메모리에 대한 16 GB 의 랜덤 기록들은 비휘발성 메모리로부터의 모든 S-저널들을 재구축되고 일관성있는 논리적 투 물리적 어드레스 변환 맵 (902) 에 대해 수행될 수도 있다. 이 초기 스테이지에서 그리고 임의의 자유 공간 어카운트 활동들을 수행하기 전에, 제어기 (202) 는 호스트 데이터 액세스 커맨드들을 서비할 준비에 있음을 리포트할 수도 있다. 따라서, 데이터 액세스 커맨드들을 실행할 준비에 있음을 리포트한 후에, 제어기 (202) 는 자유 공간 어카운트 활동들의 부분으로서, 유효 데이터 테이블 (1702)(도 13) 를 업데이트하기 위해 6.4 GB 의 순차적 휘발성 메모리 판독들을 수행할 수도 있다. 이후, 데이터 액세스 커맨드들을 수행하는 동안 그리고 수행한 후에, 데이터 저장 디바이스는 최상의 S-블록(들) 을 선택하여 가비지 수집을 행할 수도 있다. 일 실시형태에 따르면, 제어기 (202) 는 여기에서 이용가능한 자유 공간의 양에 적어도 부분적으로 기초하여 이러한 S-블록(들) 을 선택하도록 구성될 수도 있다. 일 실시형태에 따르면, 제어기 (202) 는 가비지 수집을 위한 최대 자유 공간을 갖는 S-블록(들) 을 선택할 수도 있다. 유리하게, 일 실시형태에 따르면, 이러한 자유 공간 어카운트 및 블록 선택은 데이터 액세스 커맨드들을 수락하여 실행하는 드라이브 상에서 그리고 하드웨어에서 수행될 수도 있다.
가비지 수집
도 15 내지 도 18 은 일 실시형태에 따라, 가비지 수집의 양태들을 나타내는 블록도들이다. 유저 S-블록 정보 테이블 (906; 도 10 의 (a)) 은 가비지 수집할 "최상의" S-블록을 선택하도록 스캐닝될 수도 있다. 어느 S-블록을 가비지 수집할 것인지를 선택하도록 평가될 수도 있는 복수의 기준들이 존재한다. 예를 들어, 가비지 수집할 최상의 S-블록은 최대 양의 자유 공간 및 최소의 프로그램 소거 (PE) 카운트를 갖는 S-블록일 수도 있다. 대안으로서, 이들 및/또는 다른 기준들은 가비지 수집될 S-블록을 선택하도록 가중처리될 수도 있다. 예시의 목적을 위하여, 도 15 내지 도 18 에서 가비지 수집되도록 선택되는 S-블록은 1502 로 도시된 S-블록 15 이다. 유저 S-블록 정보 테이블 (906)(도 10 의 (a)) 은 다른 정보 아이템들 중 무엇보다도, 어느 S-블록을 가비지 수집할지를 결정하는데 있어서 평가될 수도 있는 각각의 추적된 S-블록에 의해 진행된 복수의 PE 사이클들의 실행 카운트를 포함할 수도 있음을 주지해야 한다. 1502 에 도시된 바와 같이, S-블록 15 는 유효 데이터 (해시된 블록들) 및 무효 데이터 (해시되지 않은 블록들) 의 혼합을 갖는다.
S-블록 15 가 GC 를 위해 선택되었다면, S-저널 맵 (도 10 의 (b) 에서의 904 참조) 은 그 S-블록에 대한 대응하는 S-저널(들) 의 비휘발성 메모리에서의 로케이션을 찾도록 참고될 수도 있다 (예를 들어, S-블록 넘버로 인덱싱됨). 그 후, S-저널 맵 (904) 에 의해 적시된 S-저널은 S-저널 넘버의 헤더 (예를 들어, 27 LSB) 를 이용하여 위치되고 도 15 에 도시된 바와 같이 버퍼 (1009) 내에 판독된다. 즉, S-저널 맵 (904) (도 10 의 (b))에 의해 적시된 시스템 블록 S-블록 (1804) 에서의 E-페이지가 액세스되고 그 로케이션에서 시작하는 저장된 S-저널은 버퍼 (1009) 내에 판독될 수도 있다. 이후에, 버퍼 (1009) 에서의 S-저널에서 각각의 물리적 투 논리적 엔트리가 그 후 논리적 투 물리적 어드레스 변환 맵 (1802) 에서의 대응하는 엔트리에 비교될 수도 있다. 즉, S-저널에서의 L-페이지의 어드레스는 논리적 투 물리적 어드레스 변환 맵 (1802) 에서의 L-페이지의 어드레스와 비교될 수도 있다. 버퍼 (1009) 에서의 S-저널에서의 각각의 엔트리에 대해, 그 엔트리의 L-페이지에 대한 어드레스가 논리적 투 물리적 어드레스 변환 맵 (1802) 에서의 대응하는 엔트리에서의 L-페이지의 어드레스에 매칭하는지의 여부를 결정할 수도 있다. 2개가 매칭하면, 그 엔트리는 유효하다. 반대로, S-저널에서의 L-페이지에 대한 어드레스가 논리적 투 물리적 어드레스 변환 맵 (1802) 에서의 L-페이지에 대한 엔트리와 매칭하지 않으면, S-저널에서의 엔트리가 유효하지 않다. 일 실시형태에 따르면, 엔트리들이 파싱되고 비교되는 S-저널에서 유효 엔트리들이 발견되면, 이들은 도 16 에 도시된 바와 같이 버퍼 (1009) 에 기록될 수도 있다. S-블록 15 에 대한 각각의 S-저널을 프로세싱한 후에, 또한 도 16 에서 도면 부호 1502 로 도시된 바와 같이, S-블록 15 는 이때 오직 무효 데이터만을 포함한다. 시스템 S-블록 (1804) 에서의 S-저널에서의 엔트리들이 이러한 무효 데이터를 적시하기 때문에, 시스템 S-블록 (1804) 에서의 S-저널은 해시된 것으로 도시되어, 이것이 현재 "비유효함"을 표시한다. 그 후, 논리적 투 물리적 어드레스 변환 맵 (1802) 가 업데이트될 수도 있고, 버퍼 (1009) 내에 판독되는 유효 데이터에 대한 새로운 E-페이지 시작 어드레스를 생성할 수도 있다. 논리적 투 물리적 어드레스 변환 맵의 업데이트 동안에 맵 (1802) 은 유효 엔트리들에 대하여 재체크될 수도 있고, 원자가를 보장하도록 맵 업데이트 프로세스 동안에 로킹될 수도 있음을 주지한다. 그 후 유효 데이터는 도 17 에 도시된 바와 같이, 콜드 S-블록 (1801) 에 대해 기록될 수도 있다 (핫 블록은 가비지 수집된 데이터가 아닌 최근 기록된 호스트 데이터에 이용된다). 이어서, 이는 도 18 에서 1302 로 도시된 바와 같이, 콜드 S-블록 (1801) 에 대한 새로운 S-저널을 생성한다. 그 후 일정 시간에 (예를 들어, 충분한 수의 엔트리들이 파퓰레이션된 후에), S-저널 (1302) 이 시스템 밴드에서의 시스템 S-블록 (1804) 에 기록될 수도 있다. 이때 S-블록 15 가 가비지 수집되고 그 공간은 데이터 S-블록 정보 (908) 에서의 S-블록 15 에 대한 자유 공간 어카운트에 추가될 수도 있다. 시스템 S-블록 정보 (908) 는 이때, 전체적인 S-블록 15 가 자유공간임을 표시하며, 이는 이후 소거될 수도 있고, 그 PE 카운트는 업데이트되고 호스트 데이터에 대해 이용가능하게 된다. 무효 S-저널이 S-블록 15 에 여전히 존재함을 주지해야 한다. 이 무효 S-저널에 의해 점유되는 시스템 밴드에서의 플래시 메모리에서의 공간은 그 후 일정 시간에 가비지 수집되고 소거되고 재이용될 수도 있다.
본 개시물의 특정 실시형태들이 개시되어 있지만, 이들 실시형태들은 단지 예시로서만 제시되었으며, 본 개시물의 범위를 제한하도록 의도되지 않는다. 실제로, 여기에 설명된 신규의 방법들, 디바이스들, 및 시스템들은 다른 여러 형태들로 구현될 수도 있다. 또한, 여기에 개시된 방법들 및 시스템들의 형태에서의 여러 생략들, 치환들, 및 변경들이 본 개시물의 사상에 벗어남이 없이 이루어질 수도 있다. 첨부된 청구범위 및 그 등가물들은 본 개시물의 범위 및 사상 내에 드는 이러한 형태들 또는 변경들을 커버하도록 의도된다. 예를 들어, 당해 기술 분야의 당업자는 여러 실시형태들에서, 실제 물리적인 그리고 논리적인 구조들이 도면들에 도시된 것과 상이할 수도 있음을 이해할 것이다. 실시형태에 의존하여, 위의 예에서 설명된 특정 단계들은 제거될 수도 있고, 다른 것들이 추가될 수도 있다. 또한, 위에 개시된 특정 실시형태들의 속성들 및 특징들은 추가적인 실시형태들을 형성하도록 상이한 방식들로 결합될 도 있고 이 모든 것도 또한 본 개시물의 범위 내에 들어온다. 본 개시물이 선호되는 실시형태들 및 애플리케이션들을 제공하고 있지만, 여기에 설명된 특징들 및 이점들 모두를 제공하는 것은 아닌 실시형태들을 포함한, 당해 기술 분야의 당업자에게 명백한 다른 실시형태들도 또한 이 개시물의 범위 내에 있다. 따라서, 본 개시물의 범위는 첨부된 청구범위를 참조로만 정의되도록 의도된다.

Claims (27)

  1. 복수의 블록들을 포함하는 비휘발성 메모리에 결합하도록 구성된 데이터 저장 디바이스 제어기에 있어서, 각각의 블록은 미리 결정된 물리적 로케이션(physical location)들에서 복수의 물리적 페이지들을 저장하도록 구성되고, 상기 데이터 저장 디바이스 제어기는,
    상기 비휘발성 메모리에 데이터를 프로그래밍하고 상기 비휘발성 메모리로부터 상기 데이터를 판독하도록 구성된 프로세서로서, 상기 데이터는 복수의 논리적 페이지들에 저장되는 것인, 상기 프로세서;
    상기 프로세서로 하여금 하나 이상의 물리적 페이지 내에서 각각의 논리적 페이지에 저장된 데이터의 물리적 로케이션을 결정하게 하도록 구성된 논리적-물리적 어드레스 변환 맵(logical-to-physical address translation map)을 포함하는 휘발성 메모리; 및
    상기 비휘발성 메모리에 저장된 복수의 저널(journal)들 - 각각의 저널은, 상기 복수의 블록들 중 적어도 하나에 대응하고 각각의 논리적 페이지에 하나 이상의 물리적 페이지를 연관시키는 복수의 저널 엔트리들을 포함함 -
    을 포함하고,
    상기 복수의 저널들 각각은 상기 복수의 블록들 중 하나의 블록 내에서 물리적 페이지들의 미리 결정된 범위를 커버하고,
    상기 데이터 저장 디바이스 제어기는, 기동시에,
    상기 복수의 저널들 각각을 순서대로 판독하고, 상기 복수의 저널들 각각의 판독으로부터 상기 휘발성 메모리에서 상기 맵을 재구축하고,
    상기 맵이 재구축된 후 데이터 액세스 커맨드들을 프로세싱할 준비가 되어 있음(readiness)을 표시하고,
    데이터 액세스 커맨드들을 프로세싱할 준비가 되어 있음을 표시한 후, 상기 맵으로부터 테이블을 재구축하고, 상기 재구축된 테이블에 기초하여, 상기 복수의 블록들 중 가비지 수집(garbage collection)을 위한 적어도 하나의 블록을 선택하고,
    상기 선택된 블록에 대한 대응하는 저널을 찾아서 상기 대응하는 저널 내의 임의의 엔트리들이 상기 선택된 블록 상의 유효 데이터를 가리키는지 여부를 결정하고,
    상기 선택된 블록으로부터 상기 비휘발성 메모리 내의 다른 블록으로, 상기 대응하는 저널에 의해 표시된 모든 유효 데이터를 이전(relocate)시키며,
    상기 유효 데이터를 저장한 상기 다른 블록에 대한 새로운 저널을 생성하도록 구성된 것인, 복수의 블록들을 포함하는 비휘발성 메모리에 결합하도록 구성된 데이터 저장 디바이스 제어기.
  2. 제1항에 있어서,
    상기 프로세서는 또한, 상기 복수의 저널들 각각이 판독될 때 상기 휘발성 메모리에서 저널 맵을 구축하도록 구성되며,
    상기 저널 맵은 상기 판독된 저널들 각각의 상기 비휘발성 메모리 내의 물리적 로케이션을 지정하는 것인, 데이터 저장 디바이스 제어기.
  3. 제1항에 있어서,
    상기 비휘발성 메모리는 멀티 레벨 셀(Multi-Level Cell; MLC)을 포함하며,
    상기 프로세서는 또한, 적어도, 논리적 페이지가 저장된 비휘발성 메모리의 하위 페이지에 대응하는 상위 페이지가 프로그래밍될 때 까지 비휘발성 버퍼에 각각의 논리적 페이지를 저장하도록 구성된 것인, 데이터 저장 디바이스 제어기.
  4. 제3항에 있어서,
    상기 프로세서는 또한, 상기 비휘발성 버퍼에 저장된 논리적 페이지들을 판독하고, 상기 비휘발성 버퍼로부터 판독된 상기 논리적 페이지들을 이용하여 상기 맵을 재구축하도록 구성된 것인, 데이터 저장 디바이스 제어기.
  5. 제1항에 있어서,
    상기 비휘발성 메모리는 멀티 레벨 셀(MLC)을 포함하고,
    상기 비휘발성 메모리는 최근에 가비지 수집된 유효 논리적 페이지들을 포함한 물리적 영역을 포함하며,
    상기 프로세서는 또한, 대응하는 상위 페이지가 프로그래밍된 비휘발성 메모리의 하위 페이지에 저장된 안전한 논리적 페이지들에 대응하는 엔트리들을 넘지 않고서 상기 물리적 영역에 대응하는 저널들을 판독하도록 구성된 것인, 데이터 저장 디바이스 제어기.
  6. 제5항에 있어서,
    상기 대응하는 상위 페이지가 프로그래밍되지 않은 하위 페이지에 저장된 안전하지 않은 논리적 페이지들에 대응하는 상기 물리적 영역에 대응하는 저널들의 엔트리들에 대해, 상기 프로세서는 또한, 상기 유효 데이터가 가비지 수집되었던 블록의 하나 이상의 물리적 페이지를 연관시킨 저널들을 판독하도록 구성된 것인, 데이터 저장 디바이스 제어기.
  7. 데이터 저장 디바이스에 있어서,
    비휘발성 메모리, 및
    제1항의 상기 데이터 저장 디바이스 제어기
    를 포함하는, 데이터 저장 디바이스.
  8. 복수의 블록들을 포함한 비휘발성 메모리를 포함하는 데이터 저장 디바이스를 제어하기 위한 방법에 있어서, 각각의 블록은 미리 결정된 물리적 로케이션들에서 복수의 물리적 페이지들을 저장하도록 구성되고, 상기 방법은,
    상기 비휘발성 메모리에 데이터를 프로그래밍하고 상기 비휘발성 메모리로부터 상기 데이터를 판독하는 단계로서, 상기 데이터는 복수의 논리적 페이지들에 저장되는 것인, 상기 데이터를 프로그래밍하고 판독하는 단계;
    하나 이상의 물리적 페이지 내에서 각각의 논리적 페이지에 저장된 데이터의 물리적 로케이션의 결정을 가능하게 하도록 구성된 논리적-물리적 어드레스 변환 맵을 휘발성 메모리에서 유지하는 단계; 및
    상기 비휘발성 메모리에서 복수의 저널들 - 각각의 저널은, 상기 복수의 블록들 중 적어도 하나에 대응하고 각각의 논리적 페이지에 하나 이상의 물리적 페이지를 연관시키는 복수의 저널 엔트리들을 포함하고, 상기 복수의 저널들 각각은 상기 복수의 블록들 중 하나의 블록 내에서 물리적 페이지들의 미리 결정된 범위를 커버함 - 을 유지하는 단계;
    기동시에,
    상기 복수의 저널들 각각을 순서대로 판독하고, 상기 복수의 저널들 각각의 판독으로부터 상기 휘발성 메모리에서 상기 맵을 재구축하는 단계;
    상기 맵이 재구축된 후 데이터 액세스 커맨드들을 프로세싱할 준비가 되어 있음을 표시하는 단계;
    데이터 액세스 커맨드들을 프로세싱할 준비가 되어 있음을 표시한 후, 상기 맵으로부터 테이블을 재구축하고, 상기 재구축된 테이블에 기초하여, 상기 복수의 블록들 중 가비지 수집을 위한 적어도 하나의 블록을 선택하는 단계;
    상기 선택된 블록에 대한 대응하는 저널을 찾아서 상기 대응하는 저널 내의 임의의 엔트리들이 상기 선택된 블록 상의 유효 데이터를 가리키는지 여부를 결정하는 단계;
    상기 선택된 블록으로부터 상기 비휘발성 메모리 내의 다른 블록으로, 상기 대응하는 저널에 의해 표시된 모든 유효 데이터를 이전시키는 단계; 및
    상기 유효 데이터를 저장한 상기 다른 블록에 대한 새로운 저널을 생성하는 단계
    를 포함하는, 복수의 블록들을 포함한 비휘발성 메모리를 포함하는 데이터 저장 디바이스를 제어하기 위한 방법.
  9. 제8항에 있어서,
    상기 복수의 저널들 각각이 판독될 때 상기 휘발성 메모리에서 저널 맵을 구축하는 단계
    를 더 포함하며,
    상기 저널 맵은 상기 판독된 저널들 각각의 상기 비휘발성 메모리 내의 물리적 로케이션을 지정하는 것인, 데이터 저장 디바이스를 제어하기 위한 방법.
  10. 제8항에 있어서,
    상기 비휘발성 메모리는 멀티 레벨 셀(MLC)을 포함하며,
    상기 방법은,
    적어도, 논리적 페이지가 저장된 비휘발성 메모리의 하위 페이지에 대응하는 상위 페이지가 프로그래밍될 때 까지 비휘발성 버퍼에 각각의 논리적 페이지를 저장하는 단계
    를 더 포함하는, 데이터 저장 디바이스를 제어하기 위한 방법.
  11. 제10항에 있어서,
    상기 비휘발성 버퍼에 저장된 논리적 페이지들을 판독하는 단계, 및 상기 비휘발성 버퍼로부터 판독된 상기 논리적 페이지들을 이용하여 상기 맵을 재구축하는 단계
    를 더 포함하는, 데이터 저장 디바이스를 제어하기 위한 방법.
  12. 제8항에 있어서,
    상기 비휘발성 메모리는 멀티 레벨 셀(MLC)을 포함하고,
    상기 비휘발성 메모리는 가비지 수집 프로세스로부터 보유된 데이터를 저장한 메모리의 물리적 영역을 포함하며,
    상기 방법은,
    대응하는 상위 페이지가 프로그래밍된 비휘발성 메모리의 하위 페이지에 저장된 안전한 논리적 페이지들에 대응하는 엔트리들을 넘지 않고서 상기 물리적 영역에 대응하는 저널들을 판독하는 단계
    를 더 포함하는, 데이터 저장 디바이스를 제어하기 위한 방법.
  13. 제12항에 있어서,
    상기 대응하는 상위 페이지가 프로그래밍되지 않은 하위 페이지에 저장된 안전하지 않은 논리적 페이지들에 대응하는 상기 물리적 영역에 대응하는 저널들의 엔트리들에 대해, 상기 방법은, 상기 유효 데이터가 가비지 수집되었던 블록의 하나 이상의 물리적 페이지를 연관시킨 저널들을 판독하는 단계를 더 포함하는, 데이터 저장 디바이스를 제어하기 위한 방법.
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
KR1020157027180A 2013-03-05 2014-02-28 고체 상태 드라이브에서 자유 공간 어카운트와 함께 재구축되는 2 스테이지 파워 온 맵을 위한 방법들, 디바이스들, 및 시스템들 KR101916206B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/786,352 US9454474B2 (en) 2013-03-05 2013-03-05 Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
US13/786,352 2013-03-05
PCT/US2014/019681 WO2014137842A1 (en) 2013-03-05 2014-02-28 Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020187031705A Division KR101965549B1 (ko) 2013-03-05 2014-02-28 고체 상태 드라이브에서 자유 공간 어카운트와 함께 재구축되는 2 스테이지 파워 온 맵을 위한 방법들, 디바이스들, 및 시스템들

Publications (2)

Publication Number Publication Date
KR20150128773A KR20150128773A (ko) 2015-11-18
KR101916206B1 true KR101916206B1 (ko) 2018-11-08

Family

ID=51489331

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020157027180A KR101916206B1 (ko) 2013-03-05 2014-02-28 고체 상태 드라이브에서 자유 공간 어카운트와 함께 재구축되는 2 스테이지 파워 온 맵을 위한 방법들, 디바이스들, 및 시스템들
KR1020187031705A KR101965549B1 (ko) 2013-03-05 2014-02-28 고체 상태 드라이브에서 자유 공간 어카운트와 함께 재구축되는 2 스테이지 파워 온 맵을 위한 방법들, 디바이스들, 및 시스템들

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020187031705A KR101965549B1 (ko) 2013-03-05 2014-02-28 고체 상태 드라이브에서 자유 공간 어카운트와 함께 재구축되는 2 스테이지 파워 온 맵을 위한 방법들, 디바이스들, 및 시스템들

Country Status (7)

Country Link
US (2) US9454474B2 (ko)
EP (1) EP2965208B1 (ko)
KR (2) KR101916206B1 (ko)
CN (1) CN105009094B (ko)
AU (1) AU2014226246B2 (ko)
HK (1) HK1216197A1 (ko)
WO (1) WO2014137842A1 (ko)

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9400744B2 (en) * 2012-10-30 2016-07-26 Mangstor, Inc. Magnetic random access memory journal for multi-level cell flash memory
US9495288B2 (en) * 2013-01-22 2016-11-15 Seagate Technology Llc Variable-size flash translation layer
KR20150111937A (ko) 2013-01-30 2015-10-06 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 비휘발성 메모리 기록 메커니즘
US9606729B2 (en) * 2013-03-15 2017-03-28 Skyera, Llc Apparatus and method for insertion and deletion in multi-dimensional to linear address space translation
US9535828B1 (en) 2013-04-29 2017-01-03 Amazon Technologies, Inc. Leveraging non-volatile memory for persisting data
US9213633B2 (en) * 2013-04-30 2015-12-15 Seagate Technology Llc Flash translation layer with lower write amplification
US9170939B1 (en) * 2013-09-26 2015-10-27 Western Digital Technologies, Inc. Early de-allocation of write buffer in an SSD
US9612773B2 (en) * 2013-11-21 2017-04-04 Samsung Electronics Co., Ltd. User device having a host flash translation layer (FTL), a method for transferring an erase count thereof, a method for transferring reprogram information thereof, and a method for transferring a page offset of an open block thereof
US9772781B2 (en) * 2013-11-27 2017-09-26 Ngd Systems, Inc. System and method for supporting atomic writes in a flash translation layer
TWI522804B (zh) * 2014-04-23 2016-02-21 威盛電子股份有限公司 快閃記憶體控制器以及資料儲存裝置以及快閃記憶體控制方法
US9703699B2 (en) * 2014-09-17 2017-07-11 Kabushiki Kaisha Toshiba Hybrid-HDD policy for what host-R/W data goes into NAND
TWI546666B (zh) * 2014-11-03 2016-08-21 慧榮科技股份有限公司 資料儲存裝置以及快閃記憶體控制方法
WO2016115737A1 (en) 2015-01-23 2016-07-28 Hewlett-Packard Development Company, L.P. Aligned variable reclamation
KR20160111222A (ko) * 2015-03-16 2016-09-26 에스케이하이닉스 주식회사 반도체 메모리 장치 및 메모리 컨트롤러를 포함하는 메모리 시스템, 그것을 포함하는 컴퓨팅 시스템
US20160291887A1 (en) * 2015-03-30 2016-10-06 Kabushiki Kaisha Toshiba Solid-state drive with non-volatile random access memory
US9880770B2 (en) 2015-09-02 2018-01-30 SK Hynix Inc. Supporting invalidation commands for non-volatile memory
TWI579696B (zh) * 2015-11-06 2017-04-21 群聯電子股份有限公司 資料重建方法與系統及其記憶體控制電路單元
US10255004B2 (en) * 2015-11-16 2019-04-09 Marvell World Trade Ltd. Systems and methods for managing address-mapping data in memory devices
KR20170081118A (ko) * 2015-12-30 2017-07-11 삼성전자주식회사 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치, 스토리지 장치의 동작 방법, 그리고 스토리지 장치를 액세스하는 액세스 방법
US10162561B2 (en) 2016-03-21 2018-12-25 Apple Inc. Managing backup of logical-to-physical translation information to control boot-time and write amplification
US10126962B2 (en) * 2016-04-22 2018-11-13 Microsoft Technology Licensing, Llc Adapted block translation table (BTT)
US9940261B2 (en) * 2016-05-05 2018-04-10 Western Digital Technology, Inc. Zoning of logical to physical data address translation tables with parallelized log list replay
US20180024751A1 (en) * 2016-07-19 2018-01-25 Western Digital Technologies, Inc. Metadata management on a storage device
US10229000B2 (en) * 2016-08-09 2019-03-12 Seagate Llc Erasure codes to prevent lower page corruption in flash memory
KR20180019419A (ko) 2016-08-16 2018-02-26 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 그 동작방법
US10540102B2 (en) * 2016-09-30 2020-01-21 Amazon Technologies, Inc. Physical media aware spacially coupled journaling and replay
US10459644B2 (en) * 2016-10-28 2019-10-29 Western Digital Techologies, Inc. Non-volatile storage system with integrated compute engine and optimized use of local fast memory
CN108121663B (zh) * 2016-11-29 2022-05-03 群联电子股份有限公司 数据存储方法、存储器存储装置及存储器控制电路单元
US10380028B2 (en) 2016-12-30 2019-08-13 Western Digital Technologies, Inc. Recovery of validity data for a data storage system
US9811269B1 (en) * 2016-12-30 2017-11-07 Intel Corporation Achieving consistent read times in multi-level non-volatile memory
US20180224859A1 (en) * 2017-02-08 2018-08-09 Ford Global Technologies, Llc Tornado Detection Systems And Methods
KR20180128588A (ko) * 2017-05-24 2018-12-04 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
TWI633437B (zh) * 2017-05-26 2018-08-21 慧榮科技股份有限公司 偵測使用中邏輯頁面之資料儲存裝置與資料儲存方法
US11221956B2 (en) * 2017-05-31 2022-01-11 Seagate Technology Llc Hybrid storage device with three-level memory mapping
US10275361B2 (en) * 2017-05-31 2019-04-30 Seagate Technology Llc Managing multiple namespaces in a non-volatile memory (NVM)
KR102458312B1 (ko) * 2017-06-09 2022-10-24 삼성전자주식회사 스토리지 장치 및 이의 동작 방법
CN107301073B (zh) * 2017-06-23 2021-06-15 郑州云海信息技术有限公司 一种基于固态硬盘系统的配置信息检索方法及其装置
JP2019050066A (ja) * 2017-09-07 2019-03-28 株式会社東芝 ハードディスク装置および制御方法
KR102369402B1 (ko) * 2017-09-20 2022-03-02 삼성전자주식회사 스토리지 장치, 이의 동작 방법 및 스토리지 장치를 포함하는 스토리지 시스템
JP2019057172A (ja) * 2017-09-21 2019-04-11 東芝メモリ株式会社 メモリシステムおよび制御方法
KR20190043863A (ko) * 2017-10-19 2019-04-29 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR102469958B1 (ko) * 2017-10-27 2022-11-25 삼성전자주식회사 블록 주소 없이 액세스되는 불휘발성 메모리 장치 및 그 동작 방법
JP6982468B2 (ja) * 2017-10-27 2021-12-17 キオクシア株式会社 メモリシステムおよび制御方法
KR102418856B1 (ko) * 2017-11-02 2022-07-07 삼성전자주식회사 데이터 저장 장치
US10896125B2 (en) * 2017-11-17 2021-01-19 SK Hynix Inc. Garbage collection methods and memory systems for hybrid address mapping
US10445230B2 (en) * 2017-12-08 2019-10-15 Macronix International Co., Ltd. Managing block arrangement of super blocks
US10552145B2 (en) * 2017-12-12 2020-02-04 Cypress Semiconductor Corporation Memory devices, systems, and methods for updating firmware with single memory device
CN112055843B (zh) * 2017-12-13 2024-02-06 美光科技公司 同步化nand逻辑到物理表区跟踪
US10949113B2 (en) * 2018-01-10 2021-03-16 SK Hynix Inc. Retention aware block mapping in flash-based solid state drives
KR20190095825A (ko) * 2018-02-07 2019-08-16 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
TWI714830B (zh) * 2018-02-13 2021-01-01 緯穎科技服務股份有限公司 目錄資料的管理方法與記憶體裝置
US10592354B2 (en) * 2018-03-20 2020-03-17 Microsoft Technology Licensing, Llc Configurable recovery states
CN108681509B (zh) * 2018-04-20 2022-04-08 江苏华存电子科技有限公司 一种快速建立闪存映射表的方法
KR20200015247A (ko) * 2018-08-03 2020-02-12 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10909030B2 (en) * 2018-09-11 2021-02-02 Toshiba Memory Corporation Enhanced trim command support for solid state drives
US10713163B2 (en) 2018-09-11 2020-07-14 Toshiba Memory Corporation Set aware system data and mapping tables
KR20200057473A (ko) * 2018-11-16 2020-05-26 삼성전자주식회사 스토리지 장치 및 이를 포함하는 스토리지 시스템
CN109634873A (zh) * 2018-12-10 2019-04-16 浪潮(北京)电子信息产业有限公司 固态盘存储主机系统日志信息方法、装置、设备及介质
US10871907B2 (en) * 2018-12-31 2020-12-22 Micron Technology, Inc. Sequential data optimized sub-regions in storage devices
US11175850B2 (en) * 2019-01-03 2021-11-16 Toshiba Memory Corporation Selective erasure of data in a SSD
US11061598B2 (en) * 2019-03-25 2021-07-13 Western Digital Technologies, Inc. Optimized handling of multiple copies in storage management
US11269552B2 (en) * 2019-06-14 2022-03-08 Micron Technology, Inc. Multi-pass data programming in a memory sub-system having multiple dies and planes
US11144448B2 (en) * 2019-08-05 2021-10-12 Micron Technology, Inc. Memory sub-system for managing flash translation layers table updates in response to unmap commands
US11734175B2 (en) 2019-08-22 2023-08-22 SK Hynix Inc. Storage device and method of operating the same
KR20210023203A (ko) * 2019-08-22 2021-03-04 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20210076497A (ko) 2019-12-16 2021-06-24 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
KR20210034378A (ko) 2019-09-20 2021-03-30 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그것의 동작 방법
US11436101B2 (en) 2019-09-19 2022-09-06 Samsung Electronics Co., Ltd. Rebuild directory/block allocation map from embedded data block information in file system disk
US11762769B2 (en) 2019-09-20 2023-09-19 SK Hynix Inc. Memory controller based on flush operation and method of operating the same
CN110688070B (zh) * 2019-09-27 2022-10-11 江苏芯盛智能科技有限公司 固态硬盘数据表的管理方法、装置、存储介质及电子设备
US11086786B2 (en) * 2019-12-09 2021-08-10 Westem Digital Technologies, Inc. Storage system and method for caching a single mapping entry for a random read command
CN113127376B (zh) * 2019-12-30 2024-02-27 阿里巴巴集团控股有限公司 固态驱动器的控制方法、装置及设备
US11194709B2 (en) * 2019-12-30 2021-12-07 Micron Technology, Inc. Asynchronous power loss recovery for memory devices
CN111581126B (zh) * 2020-05-08 2023-08-01 苏州浪潮智能科技有限公司 一种基于ssd的日志数据保存方法、装置、设备和介质
KR20220096329A (ko) 2020-12-31 2022-07-07 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN112817879B (zh) * 2021-01-11 2023-04-11 成都佰维存储科技有限公司 垃圾回收方法、装置、可读存储介质及电子设备
JP2023001494A (ja) * 2021-06-21 2023-01-06 キオクシア株式会社 メモリシステムおよび制御方法
CN113590503B (zh) * 2021-07-23 2024-03-22 合肥康芯威存储技术有限公司 一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统
CN113590502B (zh) * 2021-07-23 2024-03-22 合肥康芯威存储技术有限公司 一种非挥发性记忆体存储设备的垃圾回收方法与垃圾回收系统
US11615020B2 (en) * 2021-08-12 2023-03-28 Micron Technology, Inc. Implementing mapping data structures to minimize sequentially written data accesses
CN114415942B (zh) * 2021-12-21 2022-11-04 联芸科技(杭州)股份有限公司 L2p映射表重建方法及固态硬盘
US20240028259A1 (en) * 2022-07-21 2024-01-25 Micron Technology, Inc. Buffer allocation for reducing block transit penalty

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030101327A1 (en) 2001-11-16 2003-05-29 Samsung Electronics Co., Ltd. Flash memory management method
US20110099323A1 (en) 2009-10-27 2011-04-28 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US20110125954A1 (en) 2009-11-23 2011-05-26 Phison Electronics Corp. Data storage method for flash memory, and flash memory controller and flash memory storage system using the same
US20140082261A1 (en) 2011-10-05 2014-03-20 Lsi Corporation Self-journaling and hierarchical consistency for non-volatile storage

Family Cites Families (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6856556B1 (en) 2003-04-03 2005-02-15 Siliconsystems, Inc. Storage subsystem with embedded circuit for protecting against anomalies in power signal from host
US20090193184A1 (en) * 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
US7502256B2 (en) 2004-11-30 2009-03-10 Siliconsystems, Inc. Systems and methods for reducing unauthorized data recovery from solid-state storage devices
US7509474B2 (en) 2005-06-08 2009-03-24 Micron Technology, Inc. Robust index storage for non-volatile memory
US7653778B2 (en) 2006-05-08 2010-01-26 Siliconsystems, Inc. Systems and methods for measuring the useful life of solid-state storage devices
US7765373B1 (en) 2006-06-27 2010-07-27 Siliconsystems, Inc. System for controlling use of a solid-state storage subsystem
US8108692B1 (en) 2006-06-27 2012-01-31 Siliconsystems, Inc. Solid-state storage subsystem security solution
US7447807B1 (en) 2006-06-30 2008-11-04 Siliconsystems, Inc. Systems and methods for storing data in segments of a storage subsystem
US7509441B1 (en) 2006-06-30 2009-03-24 Siliconsystems, Inc. Systems and methods for segmenting and protecting a storage subsystem
KR100855467B1 (ko) * 2006-09-27 2008-09-01 삼성전자주식회사 이종 셀 타입을 지원하는 비휘발성 메모리를 위한 맵핑장치 및 방법
US8161227B1 (en) 2006-10-30 2012-04-17 Siliconsystems, Inc. Storage subsystem capable of programming field-programmable devices of a target computer system
US8549236B2 (en) 2006-12-15 2013-10-01 Siliconsystems, Inc. Storage subsystem with multiple non-volatile memory arrays to protect against data losses
US7596643B2 (en) 2007-02-07 2009-09-29 Siliconsystems, Inc. Storage subsystem with configurable buffer
US7774525B2 (en) 2007-03-13 2010-08-10 Dell Products L.P. Zoned initialization of a solid state drive
US7685337B2 (en) 2007-05-24 2010-03-23 Siliconsystems, Inc. Solid state storage subsystem for embedded applications
US7685338B2 (en) 2007-05-24 2010-03-23 Siliconsystems, Inc. Solid state storage subsystem for embedded applications
US7685374B2 (en) 2007-07-26 2010-03-23 Siliconsystems, Inc. Multi-interface and multi-bus structured solid-state storage subsystem
US8095851B2 (en) 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US8078918B2 (en) 2008-02-07 2011-12-13 Siliconsystems, Inc. Solid state storage subsystem that maintains and provides access to data reflective of a failure risk
US7962792B2 (en) 2008-02-11 2011-06-14 Siliconsystems, Inc. Interface for enabling a host computer to retrieve device monitor data from a solid state storage subsystem
JP2009211215A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
US7733712B1 (en) 2008-05-20 2010-06-08 Siliconsystems, Inc. Storage subsystem with embedded circuit for protecting against anomalies in power signal from host
WO2009143885A1 (de) * 2008-05-28 2009-12-03 Hyperstone Gmbh Verfahren zum adressieren von seitenorientierten nichtflüchtigen speichern
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
US8583835B1 (en) 2008-08-06 2013-11-12 Siliconsystems, Inc. Command portal for executing non-standard storage subsystem commands
US8375151B1 (en) 2009-02-12 2013-02-12 Siliconsystems, Inc. Command portal for securely communicating and executing non-standard storage subsystem commands
US9176859B2 (en) 2009-01-07 2015-11-03 Siliconsystems, Inc. Systems and methods for improving the performance of non-volatile memory operations
US8090899B1 (en) 2009-03-04 2012-01-03 Western Digital Technologies, Inc. Solid state drive power safe wear-leveling
US10079048B2 (en) 2009-03-24 2018-09-18 Western Digital Technologies, Inc. Adjusting access of non-volatile semiconductor memory based on access time
US8176295B2 (en) 2009-04-20 2012-05-08 Imation Corp. Logical-to-physical address translation for a removable data storage device
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US8254172B1 (en) 2009-09-30 2012-08-28 Western Digital Technologies, Inc. Wear leveling non-volatile semiconductor memory based on erase times and program times
US8243525B1 (en) 2009-09-30 2012-08-14 Western Digital Technologies, Inc. Refreshing non-volatile semiconductor memory by reading without rewriting
US8261012B2 (en) 2009-10-30 2012-09-04 Western Digital Technologies, Inc. Non-volatile semiconductor memory comprising power fail circuitry for flushing write data in response to a power fail signal
US8135903B1 (en) 2009-10-30 2012-03-13 Western Digital Technologies, Inc. Non-volatile semiconductor memory compressing data to improve performance
US8397107B1 (en) 2009-12-11 2013-03-12 Western Digital Technologies, Inc. Data storage device employing data path protection using both LBA and PBA
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
US8316176B1 (en) 2010-02-17 2012-11-20 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification
US8407449B1 (en) 2010-02-26 2013-03-26 Western Digital Technologies, Inc. Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8713066B1 (en) 2010-03-29 2014-04-29 Western Digital Technologies, Inc. Managing wear leveling and garbage collection operations in a solid-state memory using linked lists
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) * 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US8886870B2 (en) 2010-05-25 2014-11-11 Marvell World Trade Ltd. Memory access table saving and restoring system and methods
US8341339B1 (en) 2010-06-14 2012-12-25 Western Digital Technologies, Inc. Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk
US8612669B1 (en) 2010-06-28 2013-12-17 Western Digital Technologies, Inc. System and method for performing data retention in solid-state memory using copy commands and validity and usage data
US8447920B1 (en) 2010-06-29 2013-05-21 Western Digital Technologies, Inc. System and method for managing data access in non-volatile memory
US8521972B1 (en) 2010-06-30 2013-08-27 Western Digital Technologies, Inc. System and method for optimizing garbage collection in data storage
WO2012014140A2 (en) 2010-07-27 2012-02-02 International Business Machines Corporation Logical to physical address mapping in storage systems comprising solid state memory devices
US8639872B1 (en) 2010-08-13 2014-01-28 Western Digital Technologies, Inc. Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk
US8775720B1 (en) 2010-08-31 2014-07-08 Western Digital Technologies, Inc. Hybrid drive balancing execution times for non-volatile semiconductor memory and disk
US8661189B2 (en) 2010-08-31 2014-02-25 Apple Inc. Systems and methods for trimming logical block addresses corresponding to a data structure residing in non-volatile memory
US8638602B1 (en) 2010-09-10 2014-01-28 Western Digital Technologies, Inc. Background selection of voltage reference values for performing memory read operations
US8769190B1 (en) 2010-09-15 2014-07-01 Western Digital Technologies, Inc. System and method for reducing contentions in solid-state memory access
US8788779B1 (en) 2010-09-17 2014-07-22 Western Digital Technologies, Inc. Non-volatile storage subsystem with energy-based performance throttling
US8612804B1 (en) 2010-09-30 2013-12-17 Western Digital Technologies, Inc. System and method for improving wear-leveling performance in solid-state memory
US8601313B1 (en) 2010-12-13 2013-12-03 Western Digital Technologies, Inc. System and method for a data reliability scheme in a solid state memory
US8615681B2 (en) 2010-12-14 2013-12-24 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss
US8601311B2 (en) 2010-12-14 2013-12-03 Western Digital Technologies, Inc. System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory
US8458435B1 (en) 2010-12-20 2013-06-04 Western Digital Technologies, Inc. Sequential write thread detection
US8392635B2 (en) 2010-12-22 2013-03-05 Western Digital Technologies, Inc. Selectively enabling a host transfer interrupt
US8683113B2 (en) 2011-02-04 2014-03-25 Western Digital Technologies, Inc. Concurrently searching multiple devices of a non-volatile semiconductor memory
US8909851B2 (en) * 2011-02-08 2014-12-09 SMART Storage Systems, Inc. Storage control system with change logging mechanism and method of operation thereof
US8700950B1 (en) 2011-02-11 2014-04-15 Western Digital Technologies, Inc. System and method for data error recovery in a solid state subsystem
US8700951B1 (en) 2011-03-09 2014-04-15 Western Digital Technologies, Inc. System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata
US8769232B2 (en) 2011-04-06 2014-07-01 Western Digital Technologies, Inc. Non-volatile semiconductor memory module enabling out of order host command chunk media access
US8862804B2 (en) 2011-04-29 2014-10-14 Western Digital Technologies, Inc. System and method for improved parity determination within a data redundancy scheme in a solid state memory
US8751728B1 (en) 2011-04-29 2014-06-10 Western Digital Technologies, Inc. Storage system bus transfer optimization
US9021178B2 (en) 2011-05-02 2015-04-28 Western Digital Technologies, Inc. High performance path for command processing
US8503237B1 (en) 2011-05-18 2013-08-06 Western Digital Technologies, Inc. System and method for data recovery in a solid state storage device
US8793429B1 (en) 2011-06-03 2014-07-29 Western Digital Technologies, Inc. Solid-state drive with reduced power up time
US8719531B2 (en) 2011-06-14 2014-05-06 Western Digital Technologies, Inc. System and method for performing data retention that incorporates environmental conditions
US8423722B1 (en) 2011-08-26 2013-04-16 Western Digital Technologies, Inc. System and method for high performance command processing in solid state drives
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US9690694B2 (en) * 2011-09-27 2017-06-27 Sandisk Technologies, Llc Apparatus, system, and method for an address translation layer
TWI432962B (zh) * 2011-10-06 2014-04-01 Mstar Semiconductor Inc 電子系統及其記憶體管理方法
US8977803B2 (en) 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Disk drive data caching using a multi-tiered memory
US8724422B1 (en) 2012-02-29 2014-05-13 Western Digital Technologies, Inc. System and method for charging back-up charge storage element for data storage device using spindle phase switching elements
US9003224B2 (en) 2012-04-25 2015-04-07 Western Digital Technologies, Inc. Managing unreliable memory in data storage systems
US8788778B1 (en) 2012-06-04 2014-07-22 Western Digital Technologies, Inc. Garbage collection based on the inactivity level of stored data
US8966343B2 (en) 2012-08-21 2015-02-24 Western Digital Technologies, Inc. Solid-state drive retention monitor using reference blocks
US8788880B1 (en) 2012-08-22 2014-07-22 Western Digital Technologies, Inc. Efficient retry mechanism for solid-state memory failures
US9268682B2 (en) 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
US8972826B2 (en) 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
US9177638B2 (en) 2012-11-13 2015-11-03 Western Digital Technologies, Inc. Methods and devices for avoiding lower page corruption in data storage devices
US8954694B2 (en) 2012-11-15 2015-02-10 Western Digital Technologies, Inc. Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive
US9021339B2 (en) 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
US9059736B2 (en) 2012-12-03 2015-06-16 Western Digital Technologies, Inc. Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme
US20140223255A1 (en) 2012-12-18 2014-08-07 Western Digital Technologies, Inc. Decoder having early decoding termination detection
US9430376B2 (en) 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030101327A1 (en) 2001-11-16 2003-05-29 Samsung Electronics Co., Ltd. Flash memory management method
US20110099323A1 (en) 2009-10-27 2011-04-28 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US20110125954A1 (en) 2009-11-23 2011-05-26 Phison Electronics Corp. Data storage method for flash memory, and flash memory controller and flash memory storage system using the same
US20140082261A1 (en) 2011-10-05 2014-03-20 Lsi Corporation Self-journaling and hierarchical consistency for non-volatile storage

Also Published As

Publication number Publication date
KR20180121700A (ko) 2018-11-07
AU2014226246A1 (en) 2015-09-17
US20140258588A1 (en) 2014-09-11
EP2965208A4 (en) 2016-12-14
AU2014226246B2 (en) 2019-04-18
CN105009094B (zh) 2019-04-12
WO2014137842A1 (en) 2014-09-12
EP2965208B1 (en) 2019-08-14
US20170010823A1 (en) 2017-01-12
KR20150128773A (ko) 2015-11-18
US9454474B2 (en) 2016-09-27
US9817577B2 (en) 2017-11-14
KR101965549B1 (ko) 2019-04-03
EP2965208A1 (en) 2016-01-13
HK1216197A1 (zh) 2016-10-21
CN105009094A (zh) 2015-10-28

Similar Documents

Publication Publication Date Title
KR101916206B1 (ko) 고체 상태 드라이브에서 자유 공간 어카운트와 함께 재구축되는 2 스테이지 파워 온 맵을 위한 방법들, 디바이스들, 및 시스템들
US10254983B2 (en) Atomic write command support in a solid state drive
US9792067B2 (en) Trim command processing in a solid state drive
US10055345B2 (en) Methods, devices and systems for solid state drive control
US9513831B2 (en) Method and system for atomically writing scattered information in a solid state storage device
KR101948381B1 (ko) 고체 상태 드라이브에서 프래그먼티드 펌웨어 테이블 재구축을 위한 방법들, 데이터 저장 디바이스들 및 시스템들
JP6210570B2 (ja) ソリッドステートドライブにおける物理論理マッピングのための方法、装置及びシステム
US9507523B1 (en) Methods, devices and systems for variable size logical page management in a solid state drive

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent