KR101911589B1 - 솔리드 스테이트 드라이브들에서의 물리적-대-논리적 맵핑을 위한 방법들, 디바이스들 및 시스템들 - Google Patents

솔리드 스테이트 드라이브들에서의 물리적-대-논리적 맵핑을 위한 방법들, 디바이스들 및 시스템들 Download PDF

Info

Publication number
KR101911589B1
KR101911589B1 KR1020157011769A KR20157011769A KR101911589B1 KR 101911589 B1 KR101911589 B1 KR 101911589B1 KR 1020157011769 A KR1020157011769 A KR 1020157011769A KR 20157011769 A KR20157011769 A KR 20157011769A KR 101911589 B1 KR101911589 B1 KR 101911589B1
Authority
KR
South Korea
Prior art keywords
pages
physical
page
logical
volatile memory
Prior art date
Application number
KR1020157011769A
Other languages
English (en)
Other versions
KR20150084817A (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 KR20150084817A publication Critical patent/KR20150084817A/ko
Application granted granted Critical
Publication of KR101911589B1 publication Critical patent/KR101911589B1/ko

Links

Images

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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

Landscapes

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

Abstract

데이터 저장 디바이스는 미리 결정된 물리적 위치에 각각 저장된 물리적 페이지들을 저장하는 복수의 비-휘발성 메모리 디바이스들을 포함한다. 제어기는 메모리 디바이스들에 결합될 수도 있고, 제어기가 물리적 페이지들에 저장된 데이터를 논리적으로 레퍼런싱하는 것을 가능하게 하는 L-페이지 번호와 각각 연관된 복수의 물리적 페이지들 (L-페이지들) 에 저장된 데이터를 액세스를 하도록 구성될 수도 있다. 휘발성 메모리는, 제어기가 각각의 L-페이지에 저장된 데이터의, 물리적 페이지들 내의 물리적 위치를 결정하는 것을 가능하게 하는 논리적-대-물리적 어드레스 변환 맵을 포함할 수도 있다. 제어기는 메모리 디바이스들에서, 물리적-대-논리적 대응성들을 정의하는 저널들을 유지하도록 구성될 수도 있고, 각각의 저널은 물리적 페이지들의 미리 결정된 범위를 커버하며 하나 이상의 물리적 페이지들을 각각의 L-페이지에 연관시키는 복수의 엔트리들을 포함한다. 제어기는 스타트업 시에 저널들을 판독할 수도 있고 판독된 저널들로부터 어드레스 변환 맵을 재구축할 수도 있다.

Description

솔리드 스테이트 드라이브들에서의 물리적-대-논리적 맵핑을 위한 방법들, 디바이스들 및 시스템들{METHODS, DEVICES AND SYSTEMS FOR PHYSICAL-TO-LOGICAL MAPPING IN SOLID STATE DRIVES}
솔리드 스테이트 드라이브 (SSD) 들에서의 플래시 메모리의 특성으로 인해, 데이터는 전형적으로 페이지들에 의해 프로그래밍되고 블록들에 의해 소거된다. SSD 에서의 페이지는 사이즈에 있어서 8 내지 16 킬로바이트 (KB) 이고, 블록은 큰 수의 페이지들 (예를 들어, 256 또는 512) 로 구성된다. 따라서, SSD 에서의 특별한 물리적 위치 (예를 들어, 페이지) 는 자기적 하드 디스크 드라이브에서 가능한 바와 같이, 동일한 블록 내의 페이지들에서 데이터를 오버라이팅하지 않고 직접 오버라이팅될 수 없다. 이와 같이, 어드레스 인디렉션 (address indirection) 이 필요하다. SSD 들과 같은 데이터 저장 디바이스들 상에서 플래시 메모리를 관리하며 호스트 시스템과 인터페이싱하는 종래의 데이터 저장 디바이스 제어기들은 플래시 변환 계층 (FTL) 의 일부인 논리적 블록 어드레싱 (LBA) 으로서 알려진 논리적-대-물리적 (L2P) 맵핑 시스템을 이용한다. 새로운 데이터가 들어와서 이미 기록된 더 과거의 데이터를 대체할 때, 데이터 저장 디바이스 제어기는 새로운 데이터로 하여금 새로운 위치에 기록되게 하고, 새로운 물리적 위치를 지시하도록 논리적 맵핑을 업데이트하게 한다. 과거의 물리적 위치는 더 이상 유효 데이터를 보유하지 않으므로, 그것은 궁극적으로 그것이 다시 기록될 수 있기 전에 소거되어야 할 필요가 있을 것이다.
종래에는, 큰 L2P 맵 테이블이 논리적 엔트리들을 SSD 상의 물리적 어드레스 장소들에 맵핑한다. 동적 랜덤 액세스 메모리 (DRAM) 와 같은 휘발성 메모리에서 상주할 수도 있는 이 큰 L2P 맵 테이블은 대개 기록들이 들어옴에 따라 업데이트되고, 작은 섹션들에서 비-휘발성 메모리에 저장된다. 예를 들어, 랜덤한 기록 (random writing) 이 발생할 경우, 시스템은 하나의 엔트리만을 업데이트시켜야 할 수도 있지만, 그럼에도 불구하고, 업데이트되지 않았던 엔트리들을 포함하는 전체 테이블 또는 그 부분을 비-휘발성 메모리에 저장해야 할 수도 있고, 이것은 본질적으로 비효율적이다.
도 1 은 SSD 를 위한 종래의 논리적 블록 어드레싱 (LBA) 방식의 양태들을 도시한다. 그것에 도시된 바와 같이, 맵 테이블 (104) 은 데이터 저장 디바이스의 플래시 메모리 (106) 에 대해 정의된 매 논리적 블록 (102) 에 대한 하나의 엔트리를 포함한다. 예를 들어, 512 바이트 논리적 블록들을 지원하는 64 GB SSD 는 그 자신을 125,000,000 논리적 블록들을 가지는 것으로 호스트에게 제시할 수도 있다. 맵 테이블 (104) 에서의 하나의 엔트리는 플래시 메모리 (106) 에서의 125,000,000 논리적 블록들의 각각의 현재의 위치를 포함한다. 종래의 SSD 에서는, 플래시 페이지가 정수 개의 논리적 블록들을 보유한다 (즉, 논리적 블록이 플래시 페이지들을 전역에 걸쳐있지는 않는다). 이 기존의 예에서, 8 KB 플래시 페이지는 (사이즈 512 바이트들의) 16 논리적 블록들을 유지할 것이다. 그러므로, 논리적-대-물리적 맵 테이블 (104) 에서의 각각의 엔트리는 논리적 블록이 그 위에 저장되는 플래시 다이를 식별하는 필드 (108), 논리적 블록이 그 위에 저장되는 플래시 블록을 식별하는 필드 (110), 플래시 블록 내에서 플래시 페이지를 식별하는 또 다른 필드 (112), 및 논리적 블록 데이터가 식별된 플래시 페이지에서 어디에서 시작하는지를 식별하는 플래시 페이지 내에서의 오프셋을 식별하는 필드 (114) 를 포함한다. 맵 테이블 (104) 의 큰 사이즈는 테이블이 SSD 제어기 내부에서 보유되는 것을 방지한다. 종래에는, 큰 맵 테이블 (104) 이 SSD 제어기에 접속된 외부 DRAM 에서 보유된다. 맵 테이블 (104) 은 휘발성 DRAM 에 저장되므로, SSD 가 스타트업할 때에 그것은 복원되어야 하고, 이것은 테이블의 큰 사이즈로 인해 긴 시간이 걸릴 수 있다.
논리적 블록이 판독될 때, 맵 테이블 (104) 에서의 대응하는 엔트리는 판독되어야 할 플래시 메모리에서의 위치를 결정하기 위하여 판독된다. 다음으로, 판독는 맵 테이블 (104) 에서의 대응하는 엔트리에서 특정된 플래시 페이지에 대해 수행된다. 판독된 데이터가 플래시 페이지에 대해 이용가능할 때, 맵 엔트리에 의해 특정된 오프셋에서의 데이터는 SSD 로부터 호스트로 전송된다. 논리적 블록이 기록될 때, 맵 테이블 (104) 에서의 대응하는 엔트리는 논리적 블록의 새로운 위치를 반영하도록 업데이트된다. 논리적 블록이 기록될 때, 플래시 메모리는 초기에 논리적 블록의 적어도 2 개의 버전들; 즉, (맵 테이블 (104) 에 의해 지시된) 유효한 가장 최근에 기록된 버전과, 오래된 것이며 맵 테이블 (104) 에서 임의의 엔트리에 의해 더 이상 지시되지 않는 적어도 하나의 다른, 더 과거의 그 버전을 포함할 것이라는 것에 주목해야 한다. 이 "오래된 (stale)" 데이터는, 미래의 이용을 위해 확인되어야 하고, 수집되어야 하고, 소거되어야 하고, 이용가능하게 되어야 하는 공간을 점유하는 가비지 (garbage) 로서 지칭된다.
도 1 은 SSD 들을 위한 종래의 논리적 블록 어드레싱 (LBA) 방식의 양태들을 도시한다.
도 2 는 하나의 실시형태에 따라 데이터 저장 디바이스의 물리적 및 논리적 데이터 편성 (organization) 의 양태들을 도시하는 도면이다.
도 3 은 하나의 실시형태에 따라, 논리적-대-물리적 어드레스 변환 맵 및 그 예시적인 엔트리들을 도시한다.
도 4 는 하나의 실시형태에 따라, 논리적-대-물리적 어드레스 변환 맵을 업데이트하고 S-저널 엔트리를 생성하기 위한 방법의 양태들을 도시한다.
도 5 는 하나의 실시형태에 따른 S-저널의 블록도이다.
도 6 은 하나의 실시형태에 따라, S-저널의 하나의 엔트리의 예시적인 편성을 도시한다.
도 7 은 하나의 실시형태에 따른 수퍼블록 (S-블록) 의 블록도이다.
도 8 은 하나의 실시형태에 따라, 수퍼 페이지 (S-페이지) 의 또 다른 도면을 도시한다.
도 9 (a) 는 하나의 실시형태에 따라, 논리적-대-물리적 어드레스 변환 맵, S-저널들 및 S-블록들 사이의 관계들을 도시한다.
도 9 (b) 는 하나의 실시형태에 따른 S-저널 맵의 블록도이다.
도 10 은 하나의 실시형태에 따라, 논리적-대-물리적 어드레스 변환 맵을 업데이트하는 방법의 양태들을 예시하는 블록도이다.
도 11 은 하나의 실시형태에 따라, 논리적-대-물리적 어드레스 변환 맵을 업데이트하는 방법의 추가의 양태들을 예시하는 블록도이다.
도 12 는 하나의 실시형태에 따라, 논리적-대-물리적 어드레스 변환 맵을 업데이트하는 방법의 더 추가의 양태들을 예시하는 블록도이다.
도 13 은 하나의 실시형태에 따라, 논리적-대-물리적 어드레스 변환 맵을 업데이트하는 방법의 더 추가의 양태들을 예시하는 블록도이다.
도 14 는 하나의 실시형태에 따라, S-저널들 및 S-저널 맵을 업데이트하는 방법의 양태들을 예시하는 블록도이다.
도 15 는 하나의 실시형태에 따라, S-저널들 및 S-저널 맵을 업데이트하는 방법의 추가의 양태들을 예시하는 블록도이다.
도 16 은 하나의 실시형태에 따라, S-저널들 및 S-저널 맵을 업데이트하는 방법의 더 추가의 양태들을 예시하는 블록도이다.
도 17 은 하나의 실시형태에 따라, S-저널들 및 S-저널 맵을 업데이트하는 방법의 더 추가의 양태들을 예시하는 블록도이다.
도 18 은 하나의 실시형태에 따라, 가비지 수집의 양태들을 예시하는 블록도이다.
도 19 는 하나의 실시형태에 따라, 가비지 수집의 추가의 양태들을 예시하는 블록도이다.
도 20 은 하나의 실시형태에 따라, 가비지 수집의 더 추가의 양태들을 예시하는 블록도이다.
도 21 은 하나의 실시형태에 따라, 가비지 수집의 더 추가의 양태들을 예시하는 블록도이다.
도 22 는 하나의 실시형태에 따라, 시스템 블록을 가비지 수집하는 양태들을 예시하는 블록도이다.
도 23 은 하나의 실시형태에 따라, 시스템 블록을 가비지 수집하는 추가의 양태들을 예시하는 블록도이다.
도 24 는 하나의 실시형태에 따라, 시스템 블록을 가비지 수집하는 더 추가의 양태들을 예시하는 블록도이다.
도 25 는 하나의 실시형태에 따라, 시스템 블록을 가비지 수집하는 다른 양태들을 예시하는 블록도이다.
도 26 은 하나의 실시형태에 따라, 시스템 블록을 가비지 수집하는 또 다른 양태들을 예시하는 블록도이다.
시스템 개요
도 2 는 하나의 실시형태에 따라 데이터 저장 디바이스의 물리적 및 논리적 데이터 편성의 양태들을 도시하는 도면이다. 하나의 실시형태에서, 데이터 저장 디바이스는 SSD 이다. 또 다른 실시형태에서, 데이터 저장 디바이스는 플래시 메모리 및 회전하는 자기적 저장 매체들을 포함하는 하이브리드 드라이브이다. 개시물은 SSD 및 하이브리드 구현예들 양자에 적용가능하지만, 단순함을 위하여, 다양한 실시형태들은 SSD-기반 구현예들을 참조하여 설명된다. 하나의 실시형태에 따른 데이터 저장 디바이스는 참조 번호 218 로 도시된 바와 같은 호스트에 결합되도록 구성될 수도 있다. 호스트 (218) 는 논리적 블록 어드레싱 (LBA) 방식을 사용할 수도 있다. LBA 사이즈는 일반적으로는 고정되지만, 호스트는 LBA 의 사이즈를 동적으로 변동시킬 수 있다. 예를 들어, LBA 사이즈는 인터페이스 및 인터페이스 모드에 의해 변동될 수도 있다. 실제로, 512 바이트들이 가장 보편적이지만, 512+ (520, 528 등) 및 4 KB+ (4 KB+8, 4K+16 등) 포맷들과 같이, 4 KB 또한 더욱 보편적으로 되고 있다. 도면에 도시된 바와 같이, 데이터 저장 디바이스 제어기 (202) 는 페이지 레지스터 (204) 를 포함할 수도 있거나 이에 결합될 수도 있다. 페이지 레지스터 (204) 는 제어기 (202) 가 데이터 저장 디바이스로부터 데이터를 판독하고 데이터를 데이터 저장 디바이스에 저장하는 것을 가능하게 하도록 구성될 수도 있다. 제어기 (202) 는 호스트 (218) 로부터의 데이터 액세스 명령들에 응답하여 플래시 메모리 디바이스들의 어레이로부터의 데이터를 프로그래밍하고 판독하도록 구성될 수도 있다. 본원에서의 설명은 플래시 메모리를 일반적으로 참조하지만, 메모리 디바이스들의 어레이는 플래시 집적 회로들, 칼코게나이드 (Chalcogenide) RAM (C-RAM), 상 변화 메모리 (PC-RAM 또는 PRAM), 프로그래밍가능한 금속화 셀 RAM (PMC-RAM 또는 PMCm), 오보닉 통합 메모리 (OUM), 저항성 RAM (RRAM), NAND 메모리 (예를 들어, 단일-레벨 셀 (SLC) 메모리, 멀티-레벨 셀 (MLC) 메모리, 또는 그 임의의 조합), NOR 메모리, EEPROM, 강유전성 메모리 (FeRAM), 자기저항성 RAM (MRAM), 다른 개별 NVM (비-휘발성 메모리) 칩들, 또는 그 임의의 조합과 같은 다양한 타입들의 비-휘발성 메모리 디바이스들 중의 하나 이상을 포함할 수도 있다는 것이 이해된다.
페이지 레지스터 (204) 는 제어기 (202) 가 어레이로부터 데이터를 판독하고 데이터를 어레이에 저장하는 것을 가능하게 하도록 구성될 수도 있다. 하나의 실시형태에 따르면, 플래시 메모리 디바이스들의 어레이는 다이 (예를 들어, 128 다이들) 에서의 복수의 비-휘발성 메모리 디바이스들을 포함할 수도 있고, 그 각각은 도 2 에서 206 으로 도시된 바와 같은 복수의 블록들을 포함한다. 다른 페이지 레지스터들 (204) (도시되지 않음) 은 다른 다이 상의 블록들에 결합될 수도 있다. 함께 그룹화된 플래시 블록들의 조합은 수퍼블록 또는 S-블록으로 불릴 수도 있다. 일부의 실시형태들에서, S-블록을 형성하는 개별적인 블록들은 하나 이상의 다이들, 평면들 또는 입도의 다른 레벨들로부터 선택될 수도 있다. 그러므로, S-블록은 함께 조합되는, 하나 이상의 다이 전역에 확산된 복수의 플래시 블록들을 포함할 수도 있다. 이러한 방식으로, S-블록은 플래시 관리 시스템 (FMS) 이 동작하는 유닛을 형성할 수도 있다. 일부의 실시형태들에서, 메모리 디바이스들이 평면들과 같은 구조들로 하위-분할되는 다이들을 포함할 때의 경우 (즉, 블록들이 개별적인 평면들로부터 취해질 수도 있음) 와 같이, S-블록을 형성하는 개별적인 블록들은 다이 레벨에서와는 상이한 입도에 따라 선택될 수도 있다. 하나의 실시형태에 따르면, 할당, 소거 및 가비지 수집은 S-블록 레벨에서 수행될 수도 있다. 다른 실시형태들에서, FMS 는 페이지들, 블록들, 평면들, 다이들, 등과 같은 다른 논리적 그룹들에 따라 데이터 동작들을 수행할 수도 있다.
결국, 플래시 블록들 (206) 의 각각은 복수의 플래시 페이지들 (F-페이지들) (208) 을 포함한다. 각각의 F-페이지는 예를 들어, 16 KB 와 같은 고정된 사이즈일 수도 있다. 하나의 실시형태에 따르면, F-페이지는 주어진 플래시 디바이스에 대한 프로그램의 최소 유닛의 사이즈이다. 도 2 에서 또한 도시된 바와 같이, 각각의 F-페이지 (208) 는 이하 E-페이지들 (210) 로 지칭되는 복수의 물리적 페이지들을 수용하도록 구성될 수도 있다. 용어 "E-페이지" 는 에러 정정 코드 (ECC) 가 적용되었던, 플래시 메모리에 저장된 데이터 구조를 지칭한다. 하나의 실시형태에 따르면, E-페이지 (210) 는 데이터 저장 디바이스 내에서의 물리적 어드레싱을 위한 토대를 형성할 수도 있고, 플래시 판독 데이터 전송의 최소 유닛을 구성할 수도 있다. 그러므로, E-페이지 (210) 는 (예를 들어, 2 KB와 같은) 미리 결정된 고정된 사이즈일 수도 있고 (그러나 그럴 필요는 없음), ECC 시스템의 페이로드 (예를 들어, 호스트 데이터) 의 사이즈를 결정할 수도 있다. 하나의 실시형태에 따르면, 각각의 F-페이지 (208) 는 미리 결정된 복수의 E-페이지들 (210) 을 그 경계들 내에 맞추도록 구성될 수도 있다. 예를 들어, 16 KB 사이즈 F-페이지들 (208) 및 E-페이지 (210) 당 2 KB 의 고정된 사이즈가 주어지면, 8 개의 E-페이지들 (210) 은 도 2 에서 도시된 바와 같이, 단일 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-페이지) 구성이 도입된다. 도 2 에서 참조 번호 212 로 나타낸 L-페이지는 FMS 에 의해 이용된 어드레스 변환의 최소 유닛을 포함할 수도 있다. 하나의 실시형태에 따르면, 각각의 L-페이지는 L-페이지 번호와 연관될 수도 있다. 그러므로, L-페이지들 (212) 의 L-페이지 번호들은 제어기 (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+ 의 최대 비압축된 사이즈에 의해 정의된 범위 내에서 변동될 수도 있다. 다른 사이즈들 및 범위들이 구현될 수도 있다. 도 2 에서 도시된 바와 같이, L-페이지들 (212) 은 E-페이지 (210) 의 경계들과 정렬될 필요가 없다. 실제로, L-페이지들 (212) 은 F-페이지 (208) 및/또는 E-페이지 (210) 경계와 정렬되는 시작 어드레스를 가지도록 구성될 수도 있지만, 또한, F-페이지 (208) 또는 E-페이지 (210) 의 경계들 중의 어느 하나와 정렬되지 않도록 구성될 수도 있다. 즉, L-페이지 시작 어드레스는 도 2 에서 도시된 바와 같이, F-페이지들 (208) 의 시작 또는 종료 어드레스들, 또는 E-페이지들 (210) 의 시작 또는 종료 어드레스들 중의 어느 하나로부터의 비-제로 오프셋에서 위치될 수도 있다. L-페이지들 (212) 은 사이즈에 있어서 고정되지 않고 고정된 사이즈의 E-페이지들 (210) 보다 더 작을 수도 있으므로, 1 초과의 L-페이지 (212) 는 단일 E-페이지 (210) 내에 맞을 수도 있다. 유사하게, L-페이지들 (212) 이 E-페이지들 (210) 보다 사이즈에 있어서 더 클 수도 있으므로, L-페이지들 (212) 은 1 초과의 E-페이지에 걸쳐 있을 수도 있고, 심지어, 도 2 에서 번호 217 로 도시된 F-페이지들 (210) 의 경계들과 교차할 수도 있다.
예를 들어, LBA 사이즈가 512 또는 512+ 바이트들일 경우, 압축되지 않은 L-페이지 (212) 가 4 KB 내지 4 KB+ 일 수도 있는 것을 고려하면, 예를 들어, 최대 8 개의 순차적인 LBA 들이 4 KB L-페이지 (212) 내로 팩킹될 수도 있다. 하나의 실시형태에 따르면, 압축 후에, 물리적 사이즈가 최소 사이즈에서 수 바이트들로부터 전체 사이즈에서 수천 바이트들까지 걸쳐 있을 수도 있으므로, L-페이지 (212) 의 정확한 논리적 사이즈는 중요하지 않다는 것에 주목해야 한다. 예를 들어, 4 TB SSD 디바이스에 대하여, 30 비트들의 어드레싱은 각각의 L-페이지 (212) 를 어드레싱하여, 이러한 SSD 에서 잠재적으로 존재할 수 있었던 L-페이지들의 양에 대해 커버하기 위하여 이용될 수도 있다.
도 3 은 하나의 실시형태에 따라, 논리적-대-물리적 어드레스 변환 맵 및 그 예시적인 엔트리들을 도시한다. 호스트 데이터는 L-페이지들 (212) 에서 호스트에 의해 레퍼런싱되고, 데이터 저장 디바이스는 하나 이상의 인접한 E-페이지들 (210) 에서 L-페이지들 (212) 을 저장하므로, 논리적-대-물리적 어드레스 변환 맵은 제어기 (202) 가 L-페이지 (212) 의 L-페이지 번호를 하나 이상의 E-페이지들 (210) 에 연관시키는 것을 가능하게 하기 위해 요구된다. 이러한 논리적-대-물리적 어드레스 변환 맵은 도 3 에서 302 로 도시되어 있고, 하나의 실시형태에서, L-페이지 (212) 당 하나의 엔트리를 가지는 선형 어레이이다. 이러한 논리적-대-물리적 어드레스 변환 맵 (302) 은 DRAM 또는 SRAM 과 같은 휘발성 메모리에 저장될 수도 있다. 도 3 은 또한, 도 3 에서의 L-페이지들 (212) 이 L-페이지 1, L-페이지 2, L-페이지 3 및 L-페이지 4 로서 나타낸 L-페이지 번호들과 연관되는 4 개의 상이한 L-페이지들 (212) 에 대한 논리적-대-물리적 어드레스 변환 맵에서의 엔트리들을 도시한다. 하나의 실시형태에 따르면, 데이터 저장 디바이스에 저장된 각각의 L-페이지는 논리적-대-물리적 어드레스 변환 맵 (302) 에서의 단일의 그리고 고유한 엔트리에 의해 지시될 수도 있다. 따라서, 이와 함께 개발되고 있는 예에서는, 4 개의 엔트리들이 도시되어 있다. 302 로 도시된 바와 같이, 맵 (302) 에서의 각각의 엔트리는, 레퍼런싱되고 있는 L-페이지의 시작 어드레스, 물리적 페이지 (예를 들어, E-페이지) 내의 시작 어드레스의 오프셋 및 L-페이지의 길이를 포함하는 물리적 페이지 (예를 들어, E-페이지) 의 식별정보를 포함할 수도 있는 L-페이지 번호를 포함할 수도 있다. 추가적으로, 복수의 ECC 비트들은 맵 엔트리에 대한 에러 정정 기능성을 제공할 수도 있다. 예를 들어, 그리고 도 3 에서 도시된 바와 같이, 그리고 2 KB 의 E-페이지 사이즈를 가정하면, L-페이지 1 은 논리적-대-물리적 어드레스 변환 맵 (302) 에서 다음과 같이 레퍼런싱될 수도 있다: E-페이지 (1003), 오프셋 (800), 길이 (1624), 그 다음으로 미리 결정된 수의 ECC 비트들 (도시되지 않음). 즉, 물리적 어드레스의 측면에서, L-페이지 1 의 시작은 E-페이지 (1003) 내에 있고 (정렬되지 않음), 800 바이트들과 동일한 E-페이지 (1003) 의 시작 물리적 위치로부터의 오프셋에 위치되어 있다. 또한, 압축된 L-페이지 1 은 1,624 바이트들을 확장하고, 이것에 의해, E-페이지 경계를 E-페이지 (1004) 에 교차시킨다. 그러므로, E-페이지들 (1003 및 1004) 은 각각 L-페이지 번호 L-페이지 1 에 의해 나타낸 L-페이지 (212) 의 부분을 저장한다. 유사하게, L-페이지 번호 L-페이지 2 에 의해 레퍼런싱된 압축된 L-페이지는 E-페이지 (1004) 내에 전체적으로 저장되고, 400 바이트들의 그 내부의 오프셋에서 시작되며 E-페이지 (1004) 내에서 696 바이트들만을 확장한다. L-페이지 번호 L-페이지 3 과 연관된 압축된 L-페이지는 E-페이지 (1004) 내에서 (L-페이지 2 의 경계로부터 단지 24 바이트들 떨어져 있는) 1,120 바이트들의 오프셋에서 시작하고, 4,096 바이트들을 E-페이지 (1005) 를 지나서, 그리고 E-페이지 (1006) 내로 확장한다. 그러므로, L-페이지 번호 L-페이지 3 과 연관된 L-페이지는 E-페이지 (1004) 의 부분, E-페이지 (1005) 의 전부, 및 E-페이지 (1006) 의 부분에 걸쳐 있다. 최종적으로, L-페이지 번호 L-페이지 4 와 연관된 L-페이지는 E-페이지 (1006) 내에서 1,144 바이트들의 오프셋에서 시작하고, E-페이지 (1007) 에 완전히 걸쳐 있게 하기 위하여 3,128 바이트들을 확장하여, F-페이지 경계를 다음 F-페이지의 E-페이지 (1008) 내로 교차시킨다.
집합적으로, 논리적-대-물리적 어드레스 변환 맵 (302) 의 각각의 엔트리를 이루는 이 구성성분 식별자 필드들 (E-페이지, 오프셋, 길이 및 ECC) 의 각각은 예를 들어, 사이즈에 있어서 8 바이트들일 수도 있다. 즉, 예시적인 4 TB 드라이브에 대하여, E-페이지의 어드레스는 사이즈에 있어서 32 비트들일 수도 있고, 오프셋은 (4 KB 에 이르는 E-페이지 데이터 부분들에 대해) 사이즈에 있어서 12 비트들일 수도 있고, 길이는 사이즈에 있어서 10 비트들일 수도 있고, ECC 필드가 제공될 수도 있다. 다른 편성들 및 비트-폭들이 가능하다. 이러한 8 바이트 엔트리는, 제어기 (202) 가 플래시 저장장치 내에서 L-페이지들에서 기록된 호스트 데이터를 추적하는 것을 가능하게 하기 위하여, L-페이지가 기록되거나 수정될 때마다 생성될 수도 있다. 논리적-대-물리적 어드레스 변환 맵에서의 이 8-바이트 엔트리는 LPN 의 L-페이지 번호에 의해 인덱싱될 수도 있다. 다시 말해서, 하나의 실시형태에 따르면, L-페이지 번호는 논리적-대-물리적 어드레스 변환 맵 (302) 으로의 인덱스로서 기능한다. 4 KB 섹터 사이즈의 경우, LBA 는 LPN 과 동일하다는 것에 주목해야 한다. 그러므로, LPN 은 휘발성 메모리 내에서 엔트리의 어드레스를 구성할 수도 있다. 제어기 (202) 가 호스트 (218) 로부터 판독 명령을 수신할 때, LPN 은 공급된 LBA 로부터 유도될 수도 있고, 논리적-대-물리적 어드레스 변환 맵 (302) 으로 인덱싱하여 플래시 메모리에서 판독되어야 할 데이터의 위치를 추출하기 위하여 이용될 수도 있다. 제어기 (202) 가 호스트로부터 기록 명령을 수신할 때, LPN 은 LBA 로부터 구성될 수도 있고, 논리적-대-물리적 어드레스 변환 맵 (302) 이 수정될 수도 있다. 예를 들어, 그 내부의 새로운 엔트리가 생성될 수도 있다. 논리적-대-물리적 어드레스 변환 맵 (302) 을 저장하는 휘발성 메모리의 사이즈에 따라, LPN 은 단일 엔트리에서 저장될 수도 있거나, 예를 들어, 논의 중인 L-페이지의 시작 어드레스를 포함하는 E-페이지를 식별하는 제 1 엔트리 (플러스 ECC 비트들) 및 오프셋 및 길이를 식별하는 제 2 엔트리 (플러스 ECC 비트들) 로 분해될 수도 있다. 그러므로, 하나의 실시형태에 따르면, 이 2 개의 엔트리들은 함께 플래시 메모리 내의 단일 L-페이지에 대응하고 이를 지시할 수도 있다. 다른 실시형태들에서, 논리적-대-물리적 어드레스 변환 맵 엔트리들의 특정 포맷은 위에서 도시된 예들과 상이할 수도 있다.
S-저널들 및 S-저널 맵
논리적-대-물리적 어드레스 변환 맵 (302) 이 휘발성 메모리에 저장될 수도 있으므로, 그것은 휘발성 메모리에 대한 전력의 스타트업 또는 임의의 다른 손실 시에 재구축될 필요가 있을 수도 있다. 그러므로, 이것은 일부의 메커니즘 및 정보가 비-휘발성 메모리에 저장될 것을 요구하며, 이 메커니즘 및 정보는 제어기 (202) 가 스타트업 후에 또는 전력-고장 (power-fail) 이벤트 후에 L-페이지들이 비-휘발성 메모리에서 어디에 저장되는지를 "인지" 할 수 있기 전에 논리적-대-물리적 어드레스 변환 맵 (302) 을 재구축하는 것을 가능하게 할 것이다. 하나의 실시형태에 따르면, 이러한 메커니즘 및 정보는 시스템 저널 (System Journal) 또는 S-저널 (S-Journal) 로 불릴 수도 있는 구성에서 구체화된다. 하나의 실시형태에 따르면, 제어기 (202) 는 복수의 비-휘발성 메모리 디바이스들에서 (예를 들어, 하나 이상의 다이, 채널 또는 평면에서의 블록들 (206) 중의 하나 이상에서) 물리적-대-논리적 어드레스 대응성 (correspondence) 들을 정의하는 복수의 S-저널들을 유지하도록 구성될 수도 있다. 하나의 실시형태에 따르면, 각각의 S-저널은 물리적 페이지들 (예를 들어, E-페이지들) 의 미리 결정된 범위를 커버한다. 하나의 실시형태에 따르면, 각각의 S-저널은 복수의 저널 엔트리들을 포함할 수도 있고, 각각의 엔트리는 E-페이지들과 같은 하나 이상의 물리적 페이지들을 각각의 L-페이지의 L-페이지 번호에 연관시키도록 구성될 수도 있다. 하나의 실시형태에 따르면, 제어기 (202) 가 재시작할 때마다, 또는 논리적-대-물리적 어드레스 변환 맵 (302) 이 부분적으로 또는 전체적으로 재구축되어야 할 때마다, 제어기 (202) 는 S-저널들을 판독하고, S-저널 엔트리들로부터 판독된 정보로부터, 논리적-대-물리적 어드레스 변환 맵 (302) 을 재구축한다.
도 4 는 하나의 실시형태에 따라, 논리적-대-물리적 어드레스 변환 맵을 업데이트하고 S-저널 엔트리를 생성하기 위한 방법의 양태들을 도시한다. 그것에 도시된 바와 같이, L-페이지가 기록되거나 이와 다르게 블록 (B41) 에서 도시된 바와 같이 업데이트될 때마다, 논리적-대-물리적 어드레스 변환 맵 (302) 이 최신 상태로 유지되는 것을 보장하기 위하여, 논리적-대-물리적 어드레스 변환 맵 (302) 은 B42 에서 도시된 바와 같이 업데이트될 수도 있다. B43 에서 도시된 바와 같이, 업데이트된 L-페이지의 위치를 지시하는 정보를 그 내부에 저장하는 S-저널 엔트리가 또한 생성될 수도 있다. 이러한 방식으로, 논리적-대-물리적 어드레스 변환 맵 (302) 및 S-저널들 양자는 새로운 기록들이 발생할 때 (예를 들어, 호스트가 비-휘발성 메모리에 기록들을 발행할 때, 가비지 수집/웨어 레벨링 (wear leveling) 이 발생할 때, 등) 에 업데이트된다. 그러므로, 어드레스 변환 데이터의 전력-안전 사본을 유지하기 위한 비-휘발성 메모리 디바이스들로의 기록 동작들은 기록 증폭 (WA) 이 감소되도록, 논리적-대-물리적 어드레스 변환 맵의 전부 또는 부분을 재저장하는 대신에, (사이즈에 있어서 단지 수 바이트들일 수도 있는) 새롭게 생성된 저널 엔트리들에 의해 트리거되도록 구성될 수도 있다. S-저널들의 업데이팅은, 제어기 (202) 가 새롭게 업데이트된 L-페이지를 액세스할 수 있다는 것과, 재시작 시에, 또는 논리적-대-물리적 어드레스 변환 맵이 저장되는 휘발성 메모리에 영향을 주는 다른 정보-소거 전력 이벤트 시에, 논리적-대-물리적 어드레스 변환 맵 (302) 이 재구성될 수도 있다는 것을 보장한다. 또한, 논리적-대-물리적 어드레스 변환 맵 (302) 을 재구축함에 있어서의 그 유용성에 추가하여, S-저널들은 효과적인 가비지 수집 (GC) 을 가능하게 함에 있어서 유용하다. 실제로, S-저널들은 모든 L-페이지 번호들에 대한 최종 시간 업데이트를 포함할 수도 있고, 또한, 오래된 엔트리들, 즉, 유효 L-페이지를 지시하지 않는 엔트리들을 포함할 수도 있다.
하나의 실시형태에 따르면, S-저널들은 비-휘발성 메모리에 기록된 주요 플래시 관리 데이터일 수도 있다. S-저널들은 주어진 S-블록에 대한 맵핑 정보를 포함할 수도 있고, 주어진 S-블록에 대한 물리적-대-논리적 (P2L) 정보를 포함할 수도 있다. 도 5 는 하나의 실시형태에 따라, S-저널의 양태들을 도시하는 블록도이다. 그것에 도시된 바와 같이, 각각의 S-저널 (502) 은 5 비트들을 이용하여 어드레싱가능한, 506 으로 도시된 바와 같은 예를 들어, 32 E-페이지들과 같은 비-휘발성 메모리의 미리 결정된 물리적 영역을 커버한다. 각각의 S-저널 (502) 은, S-저널에 대한 다른 정보를 포함할 수 있었던 헤드 (504) 의 일부일 수도 있는 S-저널 번호에 의해 식별될 수도 있다. S-저널 번호는 S-저널에 의해 커버된 제 1 물리적 페이지의 어드레스의 부분을 포함할 수도 있다. 예를 들어, S-저널 (502) 의 S-저널 번호는 예를 들어, S-저널 (502) 에 의해 커버된 제 1 E-페이지 어드레스의 27 최상위 비트들을 포함할 수도 있다.
도 6 은 하나의 실시형태에 따라, S-저널 (502) 의 하나의 엔트리 (602) 의 예시적인 편성을 도시한다. S-저널 (502) 의 각각의 엔트리 (602) 는, E-페이지들에서 물리적으로 어드레싱되는 하나의 L-페이지의 시작 어드레스를 지시할 수도 있다. 각각의 엔트리 (602) 는 예를 들어, 시작 L-페이지를 포함하는 E-페이지의 어드레스의 최하위 비트 (LSb) 들의 수 (예를 들어, 5) 를 포함할 수도 있다. 전체 E-페이지 어드레스는 이 5 LSb 들을 헤더 (504) 에서의 S-저널 번호의 27 MSb 들과 연결시킴으로써 얻어진다. 추가적으로, 엔트리 (602) 는 L-페이지 번호, 식별된 E-페이지 내의 그 오프셋 및 그 사이즈를 포함할 수도 있다. 예를 들어, S-저널의 각각의 엔트리 (602) 는 이 S-저널 엔트리에 의해 커버된 제 1 E-페이지의 어드레스의 5 LSb 들, L-페이지 번호의 30 비트들, E-페이지 오프셋의 9 비트들 및 L-페이지 사이즈의 10 비트들을 포함할 수도 있어서, 약 7 바이트들의 전체적인 사이즈까지 추가할 수도 있다. 다양한 다른 내부 저널 엔트리 포맷들은 다른 실시형태들에서 이용될 수도 있다.
하나의 실시형태에 따르면, L-페이지들에 저장된 데이터의 압축 또는 호스트 구성에서의 가변성으로 인해, 가변적인 수의 L-페이지들이 506 으로 도시된 바와 같이, 32 E-페이지들과 동일한 물리적 구역과 같은 물리적 구역에 저장될 수도 있다. L-페이지들의 사이즈들에서의 압축 및 구성성분 가변성의 이용의 결과로, S-저널들은 가변적인 수의 엔트리들을 포함할 수도 있다. 예를 들어, 하나의 실시형태에 따르면, 최대 압축에서, L-페이지는 사이즈에 있어서 24 바이트들일 수도 있고, S-저널은 S-저널 엔트리 (602) 당 하나의 L-페이지인 동일한 수의 L-페이지들을 레퍼런싱하는 2500 을 초과하는 엔트리들을 포함할 수도 있다.
위에서 언급된 바와 같이, S-저널은 주어진 S-블록에 대한 맵핑 정보를 포함하도록 구성될 수도 있다. 더욱 정확하게는, 하나의 실시형태에 따르면, S-저널들은 주어진 S-블록 내에서 E-페이지들의 미리 결정된 범위에 대한 맵핑 정보를 포함한다. 도 7 은 하나의 실시형태에 따른 S-블록의 블록도이다. 그것에 도시된 바와 같이, S-블록 (702) 은 다이 당 (도 2 에서 206 으로 또한 도시된 바와 같은) 하나의 플래시 블록 (F-블록) 을 포함할 수도 있다. 그러므로, S-블록은, 플래시 관리 시스템의 유닛을 형성하기 위하여 함께 조합되는, 다이 당 하나의 F-블록인 F-블록들의 집합으로서 생각될 수도 있다. 하나의 실시형태에 따르면, 할당, 소거 및 GC 는 S-블록 레벨에서 관리될 수도 있다. 도 7 에서 도시된 바와 같이, 각각의 F-블록 (704) 은 예를 들어, 256 또는 512 F-페이지들과 같은 복수의 플래시 페이지들 (F-페이지) 을 포함할 수도 있다. 하나의 실시형태에 따르면, F-페이지는 주어진 비-휘발성 메모리 디바이스에 대한 프로그램의 최소 유닛의 사이즈일 수도 있다. 도 8 은 하나의 실시형태에 따라, 수퍼 페이지 (S-페이지) 를 도시한다. 그것에 도시된 바와 같이, S-페이지 (802) 는 S-블록의 F-블록 당 하나의 F-페이지를 포함할 수도 있어서, S-페이지가 전체 S-블록 전역에 걸쳐 있음을 의미할 수도 있다.
다양한 데이터 구조들 사이의 관계들
도 9 (a) 는 하나의 실시형태에 따라, 논리적-대-물리적 어드레스 변환 맵, S-저널 맵 및 S-블록들 사이의 관계들을 도시한다. 참조번호 902 는 (하나의 실시형태에서 DRAM 에 저장된) 논리적-대-물리적 어드레스 변환 맵에서의 엔트리를 나타낸다. 하나의 실시형태에 따르면, 논리적-대-물리적 어드레스 변환 맵에서 L-페이지 당 하나의 엔트리 (902) 가 있을 수도 있다는 점에서, 논리적-대-물리적 어드레스 변환 맵은 L-페이지 번호에 의해 인덱싱될 수도 있다. 플래시 메모리에서의 L-페이지의 시작의 물리적 어드레스 및 그 사이즈는 맵 엔트리 (902) 에서; 즉, E-페이지 어드레스, E-페이지 내의 오프셋 및 L-페이지의 사이즈에 의해 주어질 수도 있다. 더 이전에 언급된 바와 같이, L-페이지는 그 사이즈에 따라, 하나 이상의 E-페이지들에 걸쳐 있을 수도 있고, 마찬가지로 F-페이지들 및 F-블록들에 걸쳐 있을 수도 있다.
904 로 도시된 바와 같이, 휘발성 메모리 (예를 들어, DRAM) 는 또한 시스템 저널 (S-저널) 맵을 저장할 수도 있다. S-저널 맵에서의 엔트리 (904) 는 S-저널이 비-휘발성 메모리에서 어디에 물리적으로 위치되는지에 관련된 정보를 저장한다. 예를 들어, L-페이지의 시작이 저장되는 E-페이지 물리적 어드레스의 27 MSb 들은 (도 5 에서 이전에 도시된 바와 같이) S-저널 번호를 구성할 수도 있다. 휘발성 메모리에서의 S-저널 맵 엔트리 (904) 는 또한, 시스템 E-페이지들에서 레퍼런싱된, 비-휘발성 메모리에서의 S-저널의 어드레스를 포함할 수도 있다. 휘발성 메모리에서의 S-저널 맵 엔트리 (904) 로부터, 시스템 S-블록 정보 (908) 가 추출될 수도 있다. 시스템 S-블록 정보 (908) 는 시스템 S-블록 (시스템 밴드에서의 S-블록) 에 의해 인덱싱될 수도 있고, S-블록에 관한 다른 정보 중에서, 시스템 S-블록에서의 임의의 자유로운 또는 이용된 공간의 사이즈를 포함할 수도 있다. 또한, S-저널 맵 엔트리 (904) 로부터, 비-휘발성 메모리 (910) 에서의 레퍼런싱된 S-저널의 물리적 위치 (시스템 밴드에서 E-페이지들의 측면에서 표현됨) 가 추출될 수도 있다.
하나의 실시형태에 따르면, 시스템 밴드는 L-페이지 데이터를 포함하지 않고, 파일 관리 시스템 (FMS) 메타-데이터및 정보를 포함할 수도 있다. 시스템 밴드는 오직 신뢰성 및 전력 고장 단순화를 위하여 더 하위 페이지로서 구성될 수도 있다. 정상적인 동작 동안에는, 시스템 밴드가 가비지 수집 동안을 제외하고는 판독될 필요가 없다. 시스템 밴드는 전체적인 WA 최적화를 위한 데이터 밴드보다 상당히 더 높은 오버프로비저닝 (overprovisioning) 을 제공받을 수도 있다. 다른 밴드들은, L-페이지 데이터를 포함할 수도 있으며 빈번하게 업데이트되는 핫 밴드 (Hot Band) 와, 덜 빈번하게 업데이트될 수도 있으며, GC 의 결과로서 수집되었을 수도 있는 데이터와 같은 더욱 정적인 데이터를 포함할 수도 있는 콜드 밴드 (Cold Band) 를 포함한다. 하나의 실시형태에 따르면, 시스템, 핫 및 콜드 밴드들은 S-블록 기초에 의해 할당될 수도 있다.
위에서 언급된 바와 같이, 비-휘발성 메모리에서의 이 S-저널들의 각각은 S-저널 엔트리들의 집합을 포함할 수도 있고, 예를 들어, 32 E-페이지들 가치의 데이터를 커버할 수도 있다. 비-휘발성 메모리 (910) 에서의 이 S-저널들은 제어기 (202) 가 휘발성 메모리에서의 논리적-대-물리적 어드레스 변환 맵뿐만 아니라, 휘발성 메모리에서 S-저널 맵, 사용자 S-블록 정보 (906), 및 시스템 S-블록 정보 (908) 를 재구축하는 것을 가능하게 한다.
도 9 (b) 는 하나의 실시형태에 따른 S-저널 맵 (912) 의 블록도이다. S-저널 맵 (912) 은 S-블록 번호에 의해 인덱싱될 수도 있고, 그 각각의 엔트리는, 결국, 그 S-블록의 E-페이지들의 미리 결정된 수 (예를 들어, 32) 를 커버할 수도 있는 그 S-블록에 대한 제 1 S-저널의 시작을 지시할 수도 있다. 제어기 (202) 는 S-저널들의 맵을 구축하거나 재구축하며 결과적인 S-저널 맵을 휘발성 메모리에 저장하도록 추가로 구성될 수도 있다. 즉, 재시작 시에, 또는 전력이 고장나는 또 다른 이벤트의 발생 시에, 또는 에러 복구에 후속하는 재시작 후에, 제어기 (202) 는 복수의 S-저널들을 미리 결정된 순차적인 순서로 판독할 수도 있고, 순차적으로 판독된 복수의 S-저널들에 기초하여 비-휘발성 메모리 디바이스들에 저장된 S-저널들의 맵을 구축할 수도 있고, 구축된 S-저널 맵 (912) 을 휘발성 메모리에 저장할 수도 있다.
논리적-대-물리적 어드레스 변환 맵 업데이팅
도 10 내지 도 13 은 하나의 실시형태에 따라, 논리적-대-물리적 어드레스 변환 맵을 업데이트하는 방법의 양태들을 예시하는 블록도들이다. 도 10 에서 도시된 바와 같이, 논리적-대-물리적 어드레스 변환 맵 (1002) 은 3,012 바이트들의 길이를 가지는 L-페이지 100 에 대한 엔트리 (예를 들어, L-페이지의 위치) 를 포함한다. 이 예에서, L-페이지 100 은 1006 으로 도시된 바와 같이, S-블록 15 에 저장된다. 제어기 (202) 에서의, 또는 제어기 (202) 에 결합된 (정적 랜덤 액세스 메모리 (SRAM) 와 같은) 버퍼 (1004) 는, L-페이지 100 이 상주하는 S-블록 15 에 대한 P2L 정보를 포함하는 S-저널을 저장할 수도 있다. 버퍼 (1004) 에서 도시되어 있는 것은 실제로 일부의 실시형태들에서는 DRAM 에서 상주할 수도 있다. 그 엔트리들이 S-블록에 의해 인덱싱되는 사용자 S-블록 정보 (906) 는 각각의 S-블록에 대하여, S-블록에 관한 다른 정보 중에서, S-블록에서의 자유로운 또는 이용된 공간의 (예를 들어, 정확하거나 근사한) 사이즈를 포함할 수도 있다. 도 10 에서 도시된 바와 같이, S-블록 15 에 대한 사용자 S-블록 정보 (906) 에서의 엔트리가 도시되어 있다. 도 10 은 L-페이지 100 에 대한 업데이트가 제어기 (202) 에 의해 프로세싱되기 전에 이 구성성분 기능적 블록들의 예시적인 상태를 도시한다.
도 11 에서 1102 로 도시된 바와 같이, 업데이트된 L-페이지 100 은 1,534 바이트들의 새로운 길이로 수신된다. 업데이트된 L-페이지 100 의 수신에 응답하여, L-페이지 100 정보는 논리적-대-물리적 어드레스 변환 맵 (1002) 으로부터 페치될 수도 있고, (지금은 쓸모없는) L-페이지 100 의 길이 (3,012 바이트들) 는 그로부터 추출될 수도 있으며 S-블록 15 의 추적된 자유 공간 값을 이에 대응하여 그리고 정확하게 증가시키기 위하여 이용될 수도 있다. 특히, L-페이지 100 에 대한 원래의 데이터가 지금은 오래되어서 (예를 들어, 쓸모없음), 사용자 S-블록 정보 (906) 는 S-블록 15 가 지금은 자유 공간의 3,012 추가적인 바이트들을 가짐을 표시하는 데이터로 업데이트될 수도 있다.
도 12 에서 도시된 바와 같이, 논리적-대-물리적 어드레스 변환 맵 (1002) 은 업데이트된 L-페이지를 수용하기 위하여 업데이트될 수도 있다. 예를 들어, 길이 정보는 지금은 1,534 바이트들이다. 그 후, 업데이트가 발생하는 S-블록 15 의 특별한 부분에 대한 버퍼 (1004) 에서의 S-저널은 길이 정보를 포함하는 새로운 L-페이지 정보로 지금 업데이트될 수도 있고, 예를 들어, 압축기로부터 새롭게 수신된 L-페이지는 버퍼 (1004) 내로 판독될 수도 있다. 새로운 L-페이지가 버퍼에 있는 동안, 논리적-대-물리적 어드레스 변환 맵 (1002) 에서의 L-페이지 100 에 대한 엔트리는 "1" 로 표기된 화살표에 의해 도시된 바와 같이, 버퍼에서의 그 위치를 일시적으로 반영할 수도 있다. 더 이후의 업데이트된 L-페이지 100 은 여전히 버퍼 (1004) 에서 지금 업데이트된 S-저널에서의 새롭게 생성된 엔트리에 의해 특정된 E-페이지 어드레스로, 핫 S-블록 (1008) 으로 플러시 (flush) 될 수도 있다. 논리적-대-물리적 어드레스 변환 맵 (1002) 에서의 맵핑 테이블 엔트리는 화살표 "2" 에 의해 제안된 바와 같이, L-페이지의 최종 목적지의 물리적 E-페이지 어드레스 및 오프셋을 반영하도록 업데이트된다.
도 13 에서 도시된 바와 같이, 예를 들어, 충분한 수의 새로운 엔트리들을 누적한 후와 같은, 시간에 있어서의 약간 더 이후의 시점에서, 휘발성 메모리 버퍼 (1004) 에서의 S-저널은 시스템 S-블록 (1010) 과 같은 비-휘발성 메모리에 기록될 수도 있다. 시스템 S 블록 (1010) 은 S-저널들을 저장하기 위하여 제어기 펌웨어에 의해 할당된 플래시 메모리의 부분일 수도 있다. 비-휘발성 메모리에서의 S-저널의 저장은 필요에 따라, 논리적-대-물리적 어드레스 변환 맵의 더 이후의 재구성을 가능하게 한다.
S-저널들 및 S-저널 맵 업데이팅
도 14 내지 도 17 은 하나의 실시형태에 따라, 시스템 밴드에서 S-저널들 및 S-저널 맵을 업데이트하는 방법의 양태들을 예시하는 블록도들이다. 도면들은 L-페이지 100 에 대한 동일한 예의 업데이트에 의해 트리거링된 S-저널의 업데이트 메커니즘들에 관련된 추가적인 세부사항들을 예시한다. 그것에 도시된 바와 같이, 휘발성 메모리 (예를 들어, 동기식 동적 랜덤-액세스 메모리 (SDRAM)) 에서의 S-저널 맵 (1402) 은, L-페이지 100 과 연관된 P2L 맵핑 데이터를 포함하는 S-저널의, 비-휘발성 메모리에서의 물리적 위치를 지시하는 엔트리를 포함할 수도 있다. 예시적인 예에서, 관련 있는 S-저널 (즉, L-페이지 100 을 저장하는 S-블록 15 의 특별한 부분에 대한 S-저널) 은 E-페이지 42 에서 시작하는 (1408 에서의) 시스템 S-블록 3 에서 위치된다.
그 후, 도 15 에서 도시된 바와 같이, L-페이지 100 은 1,534 바이트들의 길이로 업데이트된다. 다음으로, 현재의 L-페이지 100 에 관한 정보 (예를 들어, E-페이지 어드레스, 오프셋 및 길이) 는 논리적-대-물리적 어드레스 변환 맵 (1002) 으로부터 페치될 수도 있다. 그 후, L-페이지 100 을 저장하는 E-페이지의 어드레스는 S-저널 엔트리를 S-저널 맵 (1402) 내에서 위치시키기 위하여 이용된 S-저널 번호를 추출하기 위하여 이용될 수도 있다. 예를 들어, 본원의 경우에 있어서, 도 5 및 도 6 에서 도시된 바와 같이, S-저널 번호는 제 1 32-비트 E-페이지 어드레스의 27 MSb 들을 포함할 수도 있다. 다음으로, 이 S-저널 번호는 위치를 얻기 위하여 S-저널 맵 (1402) 으로 인덱싱하기 위하여 이용될 수도 있고, 이 위치는 그 때에 관심대상 S-저널을 포함하는 시스템 S-블록을 식별하기 위하여 이용될 수도 있다. 그 후, 도 15 에서 도시된 바와 같이, 시스템 S-블록 정보 (908) 는, L-페이지 100 에 대한 최근의 업데이트를 고려하여, 그 엔트리에 의해 이전에 점유된 공간이 지금은 할당해제 (de-allocate) 되었으므로, S-블록 3 에서 S-저널에서의 L-페이지 100 에 대한 저널 엔트리가 지금은 무효라는 사실을 반영하도록 업데이트될 수도 있다. 그 할당해제된 공간은 지금은 자유 공간이고, 설명되어야 한다. 대안적으로, 이용된 공간은 설명될 수도 있고, 자유 공간은 그로부터 유도될 수도 있다. 그러므로, S-블록 3 에 대한 시스템 S-블록 정보 (908) 에서의 엔트리는 하나의 S-저널 엔트리에 의해 취해진 공간만큼, 즉, 본원에서 개발되고 있는 예시적인 구현예에서는 7 바이트들만큼 증분될 수도 있다. 그 후, 이 빈 공간은 시스템 밴드의 GC 동안에 고려될 수도 있다.
도 16 에서 도시된 바와 같이, 다음으로, L-페이지 100 은 1005 로 도시된 바와 같이, 버퍼 (1004) 에 기록될 수도 있고, 그 후에, 논리적-대-물리적 어드레스 변환 맵 (1002) 은 (L-페이지 100 이 저장되는 물리적 위치를 표시하는) 버퍼 (1004) 를 지시하며 업데이트된 L-페이지 100 의 길이 (본원에서 개발되고 있는 예에서의 1,534) 를 저장하기 위하여 업데이트될 수도 있다. 이 시점에서, 시스템 S-블록 3 은 L-페이지 100 을 포함하는 것으로서 참조번호 1006 에서 S-블록 15 를 지시하는 S-저널 엔트리를 여전히 포함한다는 것에 주목해야 한다. 그러나, S-블록 3 에 대한 시스템 S-블록 정보는, 참조번호 1408 에서의 시스템 S-블록 3 내의 지금은 쓸모없게 된 S-저널 엔트리에 의해 현재 점유된 공간이 사실상, 자유 공간임을 표시하도록 업데이트되었다.
도 16 은 또한 버퍼에서의 상이한 S-저널을 도시한다. 하나의 실시형태에서, 버퍼 (1004) 에서의 S-저널은 개방 핫 S-블록 7 에 기록된 새로운 L-페이지들을 기록하기 위한 것이다. 이 예에서, (비-휘발성 메모리로 아직 플러싱되지 않았던) 버퍼 (1004) 에서의 S-저널은 도 16 에서 1007 에서의 화살표에 의해 표시된 바와 같이, (지금은 또한 버퍼에서의) 업데이트된 L-페이지 100 의 L-페이지 번호 및 그 길이 정보로 업데이트된다. L-페이지 100 은 지금은, 도 16 에서 1404 에서 레퍼런싱된 바와 같이, 버퍼 (1004) 로부터 현재의 개방 핫 S-블록 7 로 플러시될 수도 있다. 그 시점에서, 버퍼에서의 S-저널은, 업데이트된 L-페이지 100 이 비-휘발성 메모리로 기록되었음을 반영하도록 업데이트된다. 대안적으로, 논리적-대-물리적 어드레스 변환 맵 (1002) 및 S-저널은, 업데이트된 L-페이지 100 이 비-휘발성 메모리로 기록되기 전에, 업데이트된 L-페이지 100 의 어드레스로 업데이트될 수도 있다. 하나의 실시형태에서, 그 S-저널에서의 업데이트된 엔트리는 도 6 에서 이전에 도시된 바와 같이, 논리적-대-물리적 어드레스 변환 맵 (1002) 에서의 새로운 L-페이지 100 의 엔트리에 의해 지시된 E-페이지와, L-페이지 100 에 대한 추가적인 정보를 포함할 것이다.
도 17 에서 도시된 바와 같이, 충분한 데이터를 누적한 후, 버퍼 (1004) 에서의 S-저널은 (1406 에서 레퍼런싱된) 개방 시스템 S-블록 1 로 기록될 수도 있다. 이 예에서, 이 S-저널은 개방 시스템 S-블록 1 의 E-페이지 19 로 기록된다. S-저널 맵 (1402) 은 지금, S-블록 15 의 부분이 시스템 S-블록 3, E-페이지 42 에 저장되어 있음을 표시하는 하나의 엔트리를 포함한다. 그러나, S-블록 15 내의 L-페이지 100 의 과거의 위치로 지시된 그 S-저널 내의 엔트리는 더 이상 유효하지 않다. S-저널 맵 (1402) 은 또한, S-블록 7 에 대한 S-저널이 시스템 S-블록 1, E-페이지 19 에 저장되어 있음을 표시하는 하나의 엔트리를 포함한다. 그 S-저널은 업데이트된 L-페이지 100 의 비-휘발성 메모리에서의 위치로서, 1404 에서의 개방 핫 S-블록 7 을 지시하는 유효 엔트리를 포함한다. 이러한 방식으로, P2L 정보를 포함하는 S-저널들은 버퍼 (1004) 에서 업데이트되고, 궁극적으로 비-휘발성 메모리로 기록된다. 추가적으로, S-저널 맵 (1402) 은 이러한 새롭게 업데이트된 S-저널들을 지시하기 위하여 적당하게 업데이트될 수도 있다. 또한, 논리적-대-물리적 어드레스 변환 맵 (1002) 은 정확한 개방 핫 S-블록을 지시하기 위하여 적당하게 업데이트될 수도 있다.
유익하게도, 새로운 기록 시에, 본원에서 도시되고 설명된 바와 같은 S-저널 구성은 기록 오버헤드를 최소화한다. 하나의 실시형태에 따르면, 새로운 기록 동작은 비-휘발성 메모리에서 새로운 S-저널 엔트리를 기록하는 것을 필요하게 한다. 생성된 L-페이지 당 작은 양의 S-저널 엔트리 데이터 (예를 들어, 본원에서 설명된 바와 같이 7 바이트들) 만이 있으므로, 시스템 데이터 기록들로 인한 WA 는 종래의 시스템들에 비해 감소된다. S-저널 데이터는 사실상 대량의 명령 이력이다. 업데이트된 S-저널 데이터는 풀업 (pool up) 되고, 시스템 밴드로 순차적으로 기록된다. 생성되는 맵핑 정보가 기록되어야 할 데이터와 동일하므로, 본원에서 도시되고 설명된 S-저널 시스템은 효율적이며, 논리적-대-물리적 맵의 전부 또는 부분과는 반대로, 변화되는 것만이 비-휘발성 (예를 들어, 플래시) 메모리로 기록되므로, 추가적인 변화되지 않은 엔트리들이 없다.
전력 가동시에, 휘발성 메모리에서 논리적-대-물리적 어드레스 변환 맵을 재구축하기 위하여, 시스템 밴드에서의 모든 S-저널 데이터가 판독될 수도 있고 DRAM 으로 프로세싱될 수도 있다. 하나의 실시형태에 따르면, 이것은 S-블록들이 시스템 밴드에 할당되는 순서로 행해진다. 하나의 실시형태에서는, 큰 데이터 부하가 급속하게 발생하여 전력-가동 타이밍 요건을 충족시키는 것을 가능하게 하기 위하여 하드웨어 지원이 이용된다 (이것은 필수적으로 명령 이력으로부터 논리적-대-물리적 어드레스 변환 맵을 생성하고 있으므로, 이것은 하드웨어 없이는 실용적이지 않을 수도 있다). 하나의 실시형태에 따르면, S-저널 맵은 또한 시스템 밴드에 저장된 유효한 S-저널들을 지시하기 위하여 전력-가동 시에 구성된다.
사용자 데이터 S-블록들의 가비지 수집
도 18 내지 도 21 은 하나의 실시형태에 따라, 가비지 수집의 양태들을 예시하는 블록도들이다. 그것에 도시된 바와 같이, 사용자 S-블록 정보 (906) 에서의 데이터는 가비지 수집하기 위한 "최상의" S-블록을 선택하기 위하여 스캐닝될 수도 있다. 어느 S-블록을 가비지 수집할 것인지를 선택하기 위하여 평가될 수도 있는 다수의 기준들이 있다. 예를 들어, 가비지 수집하기 위한 최상의 S-블록은 자유 공간의 최대의 양 및 최저 프로그램 소거 (PE) 카운트를 가지는 그 S-블록일 수도 있다. 대안적으로, 이러한 및/또는 다른 기준들은 가비지 수집되어야 할 S-블록을 선택하기 위하여 가중처리될 수도 있다. 예시의 목적들을 위하여, 도 18 내지 도 21 에서 가비지 수집되도록 선택된 S-블록은 S-블록 15 이고, 이것은 사용자 S-블록 정보 (906) 내의 정보 엔트리 15 에 의해 레퍼런싱되어, 일부의 양 + 자유 공간의 3,012 바이트들 (최근에 쓸모없게 된 L-페이지 100 을 설명하기 위한 추가적인 3,012 바이트들) 을 보여준다. 사용자 S-블록 정보 (906) 는 정보의 다른 항목들 중에서, 어느 S-블록을 가비지 수집할 것인지를 판단함에 있어서 평가될 수도 있는, 각각의 추적된 S-블록이 거친 PE 사이클들의 수의 러닝 카운트를 포함할 수도 있다. 1006 으로 도시된 바와 같이, S-블록 15 는 유효 데이터 (빗금표시된 블록들) 및 무효 데이터 (빗금표시되지 않은 블록들) 의 혼합을 가진다.
S-블록 15 는 GC 에 대해 선택되었으므로, S-저널 맵 (도 9b 에서 912 참조) 은 그 S-블록에 대한 대응하는 S-저널들의 비-휘발성 메모리에서의 위치 (예를 들어, E-페이지 어드레스) 를 발견하기 위하여 참고될 수도 있다 (예를 들어, S-블록 번호에 의해 인덱싱됨). 일 예를 예시하기 위하여, S-저널 맵 (912) 에 의해 지시된 하나의 S-저널은 S-저널 번호 (E-페이지 어드레스의 27 MSb) 를 이용하여 위치되고, 도 18 에서 도시된 바와 같이 버퍼 (1004) 로 판독된다. 즉, S-저널 맵 (912) 에 의해 지시된 시스템 S-블록 (1804) 에서의 1 개 이상의 E-페이지들이 액세스되고, 그 위치에서 시작하는 저장된 S-저널은 버퍼 (1004) 로 판독될 수도 있다. 하나의 실시형태에서는, S-저널이 하나 이상의 E-페이지들에 걸쳐 있을 수도 있으므로, S-저널 맵은 또한 S-저널의 길이를 포함할 수도 있다. S-저널은 상당히 클 수도 있으므로, 조각들로 판독될 수도 있고 이용가능할 경우에 프로세싱될 수도 있다.
그 후, 버퍼 (1004) 내의 S-저널에서의 각각의 P2L 엔트리는 그 다음으로 논리적-대-물리적 어드레스 변환 맵 (1802) 에서의 대응하는 엔트리와 비교될 수도 있다. 버퍼 (1004) 내의 S-저널에서의 각각의 엔트리에 대하여, 그 엔트리의 L-페이지에 대한 물리적 어드레스가 논리적-대-물리적 어드레스 변환 맵 (1802) 에서 대응하는 엔트리에서의 동일한 L-페이지의 물리적 어드레스와 일치하는지 여부가 결정될 수도 있다. 2 개가 일치할 경우, S-저널에서의 그 엔트리는 유효하다. 반대로, S-저널에서의 L-페이지에 대한 어드레스가 논리적-대-물리적 어드레스 변환 맵에서의 그 L-페이지에 대한 엔트리와 일치하지 않을 경우, S-저널에서의 그 엔트리는 유효하지 않다.
하나의 실시형태에 따르면, 유효 엔트리들은 그 엔트리들이 파싱 및 비교되고 있는 S-저널에서 발견되므로, 도 19 에서 도시된 바와 같이, 레퍼런싱된 L-페이지들은 S-블록 15 으로부터 판독될 수도 있고 버퍼 (1004) 로 기록될 수도 있다. 동일한 프로세스는 전체 S-블록이 프로세싱될 때까지 S-블록 15 를 커버하는 다른 S-저널들에 대해 이용될 수도 있다. 또한, 참조번호 1006 으로 도 19 에서 도시된 바와 같이, S-블록 15 는 지금은 무효 데이터만을 포함한다. 이것은 S-블록 15 에 대한 S-저널들에서의 엔트리들에 의해 유효한 것으로 표시된 데이터가 보존되었고 새로운 S-블록으로 곧 이동될 것이기 때문이다. 예시된 예에서는, 시스템 S-블록 (1804) 에서의 S-블록 15 의 일 예의 S-저널에서의 엔트리들이 이러한 무효 데이터를 지시하므로, 그 S-저널은 빗금표시되는 것으로 도시되어, 그것이 이제 오래된 것임을 표시한다. 다음으로, 논리적-대-물리적 어드레스 변환 맵 (1802) 이 업데이트될 수도 있어서, 버퍼 (1004) 로 판독된 유효 데이터에 대한 새로운 E-페이지 시작 어드레스를 생성할 수도 있다. 논리적-대-물리적 어드레스 변환 맵의 업데이트 동안, 맵은 유효 엔트리들에 대해 다시 검사될 수도 있고 원자성 (atomicity) 을 보장하기 위하여 맵 업데이트 프로세스 동안에 차단될 수도 있다. 유효 데이터는 또한, 하나의 실시형태에서 콜드 S-블록 (1801) 에 대한 것인 S-저널 (1005) 에서 새로운 S-저널 엔트리들이 생성되는 것을 필요로 할 것이다.
하나의 실시형태에서는, 도 20 에서 도시된 바와 같이, 다음으로, 유효 데이터가 콜드 S-블록 (1801) 으로 기록될 수도 있다 (핫 S-블록은 가비지 수집된 데이터가 아니라 최근에 기록된 호스트 데이터에 대해 이용됨). 약간 더 이후의 시간에서 (예를 들어, 충분한 수의 엔트리들이 파퓰레이트된 후), S-저널 (1005) 은 시스템 밴드에서 시스템 S-블록 (1804) 으로 기록될 수도 있다. S-블록 15 는 지금은 가비지 수집되었고, 사용자 S-블록 정보 (906) 는 지금 전체 S-블록 15 이 자유 공간임을 표시한다. S-블록 15 는 그 후에 소거될 수도 있고, 그 PE 카운트는 업데이트될 수도 있고, 새로운 기록들을 위하여 이용가능하게 될 수도 있다. 무효 S-저널은 시스템 S-블록 (1804) 에서 여전히 존재하는 것에 주목해야 한다. 이 무효 S-저널에 의해 점유된 시스템 밴드에서의 플래시 메모리 내의 공간은 약간 더 이후의 시간에 가비지 수집될 수도 있다.
시스템 S-블록들에 대한 가비지 수집
도 22 내지 도 26 은 하나의 실시형태에 따라, 시스템 블록을 가비지 수집하는 양태들을 예시하는 블록도들이다. 도 22 내지 도 26 에서 개발되고 있는 예에서는, 도 22 에서 레퍼런싱된 2208 로 도시된 시스템 S-블록 3 이 가비지 수집을 위해 선택되었다고 가정된다. 일단 시스템 S-블록이 선택되었으면, 선택된 시스템 S-블록 내의 E-페이지들의 전부 (그리고 확장에 의해, 그 내부에 포함된 모든 S-저널들) 는 버퍼 (1004) 로 (순차적으로 또는 비-순차적으로) 판독될 수도 있다.
도 23 에서 제안된 바와 같이, 다음으로, 버퍼 (1004) 로 판독된 S-저널들 중의 하나 이상에 대한 S-저널 번호들은 S-저널들의 헤더들로부터 추출될 수도 있다. 다음으로, 각각의 이러한 시스템 S-저널 번호는 S-저널 맵 (2202) 에서 룩업하여 대응하는 S-저널이 여전히 유효한지 여부를 결정하기 위하여 이용될 수도 있다. 하나의 실시형태에 따르면, 무효 S-저널들은, S-저널들이 물리적으로 그 위에 저장되는 가장 업데이트된 정보를 가지는 S-저널 맵 (2202) 에서의 대응하는 엔트리에 의해 S-저널 번호가 일치하지 않는 그러한 S-저널들이다. 예를 들어, S-저널 번호 "12345" 에 대한 S-저널 맵 (2202) 에서의 엔트리가 시스템 S-블록 120 내의 E-페이지를 지시할 경우, S-블록 3 에서의 S-저널 "12345" 의 사본은 쓸모없다. 마찬가지로, S-저널 맵 엔트리가 그 대신에 S-저널 "12345" 가 현재 상주하는 S-블록 3 으로부터의 E-페이지를 지시할 경우, S-저널 "12345" 는 여전히 유효하다.
하나의 실시형태에서, 가비지 수집되고 있는 유효 S-저널은 유효 및 무효 엔트리들의 혼합을 포함할 수도 있고, 이에 따라, 엔트리들의 개별적인 검사가 필요하게 된다. 도 24 에서 도시된 바와 같이, 다음으로, 각각의 유효 S-저널 (2402) 에서의 각각의 엔트리는 메모리 내의 논리적-대-물리적 어드레스 변환 맵 (1802) 에서의 대응하는 엔트리와 일치될 수도 있다. 즉, 각각의 S-저널 엔트리에 의해 레퍼런싱된 L-페이지의 E-페이지 어드레스는 논리적-대-물리적 어드레스 변환 맵 (1802) 에서 특정된 L-페이지의 E-페이지 어드레스와 비교될 수도 있다. 2 개가 일치할 경우, 그 S-저널 엔트리는 유효하다. 하나의 실시형태에 따르면, S-저널에서의 E-페이지 내의 E-페이지 어드레스 및 오프셋을 논리적-대-물리적 어드레스 변환 맵 (1802) 에서 특정된 L-페이지의 E-페이지 내의 E-페이지 어드레스 및 오프셋과 비교하는 것이 필요할 수도 있다. 반대로, S-저널에서의 L-페이지에 대한 E-페이지 어드레스 (또는 E-페이지 어드레스 및 오프셋) 가 어드레스 변환 맵 (1802) 에서의 그 L-페이지에 대한 엔트리에서의 E-페이지 어드레스 (또는 E-페이지 어드레스 및 오프셋) 와 일치하지 않을 경우, S-저널에서의 그 엔트리는 유효하지 않다.
하나의 실시형태에 따르면, 유효 엔트리들은 (그 엔트리들이 파싱 및 비교되고 있는) S-저널 (2402) 에서 식별되므로, 도 25 에서 도시된 바와 같이, 이들은 S-저널 (2402) 의 새로운 버전 (2502) 으로 복사될 수도 있다. 하나의 실시형태에 따르면, S-저널 (2502) 은 S-저널 (2402) 의 그것과 동일한 S-저널 번호를 가질 수도 있다. 이러한 방식으로, GC 에 대해 선택된 S-블록으로부터 버퍼 (1004) 로 로딩된 각각의 S-저널은 우선 저널 레벨에서 유효 또는 무효인 것으로 결정될 수도 있고, 그 다음으로, 유효인 것으로 결정될 경우, 유효 엔트리들만을 포함하도록 밀집 (compact) 될 수도 있다. 하나의 실시형태에 따르면, 무효 S-저널 엔트리들은 S-저널 (2502) 의 새로운 버전으로 간단하게 복사되지 않는다. 따라서, S-저널의 새로운 버전 (2502) 은 그 더 과거의 버전 (2402) 보다 더 작을 것이라고 (즉, 더 적은 엔트리들을 포함함) 예상되어, S-저널 (2402) 이 하나 이상의 쓸모없는 엔트리들을 가졌던 것으로 추정한다. S-저널이 모든 유효 엔트리들을 가질 경우, 그 새로운 버전의 사이즈는 동일하게 유지될 것이라는 것에 주목해야 한다.
도 26 에서 도시된 바와 같이, 다음으로, S-저널 (2502) (지금은 무효이거나 쓸모없는 S-저널 (2402) 의 새로운 버전) 은 도 26 에서, 개방 시스템 S-블록 1, 참조 번호 2206 인 현재의 개방 시스템 S-블록으로 기록될 수도 있다. 그 후, S-저널 맵 (2202) 은 개방 시스템 S-블록 1 에서의 S-저널 (2502) 의 새로운 위치로 업데이트될 수도 있다. 이 프로세스의 종료 시에, 시스템 S-블록 3 (2208) 내의 S-저널들은 가비지 수집되었고, 다음으로, 시스템 S-블록 3 은 소거될 수도 있고 미래의 프로그래밍을 위하여 이용가능하게 될 수도 있다.
개시물의 어떤 실시형태들이 설명되었지만, 이 실시형태들은 오직 예로서 제시되었으며, 개시물의 범위를 제한하도록 의도된 것은 아니다. 실제로, 본원에서 설명된 신규한 방법들, 디바이스들, 및 시스템들은 다양한 다른 형태들로 구체화될 수도 있다. 또한, 개시물의 사상으로부터 이탈하지 않으면서, 본원에서 설명된 방법들 및 시스템들의 형태에서의 다양한 생략들, 교체들 및 변화들이 행해질 수 있다. 동반된 청구항들 및 그 등가물들은 개시물의 범위 및 사상 내에 속하는 바와 같은 이러한 형태들 또는 수정들을 포괄하도록 의도된 것이다. 예를 들어, 당해 분야의 당업자들은 다양한 실시형태들에서, 실제의 물리적 및 논리적 구조들이 도면들에서 도시된 것들과는 상이할 수도 있다는 것을 인식할 것이다. 실시형태에 따라서는, 위의 예에서 설명된 어떤 단계들이 제거될 수도 있고, 다른 것들이 추가될 수도 있다. 또한, 위에서 개시된 특정 실시형태들의 특징들 및 속성들은, 그 모든 것이 본 개시물의 범위 내에 속하는 추가적인 실시형태들을 형성하기 위하여 다양한 방법들로 조합될 수도 있다. 본 개시물은 어떤 바람직한 실시형태들 및 응용들을 제공하지만, 본원에서 기재된 특징들 및 장점들의 전부를 제공하지 않는 실시형태들을 포함하는, 당해 분야의 당업자들에게 명백한 다른 실시형태들은 또한 이 개시물의 범위 내에 있다. 따라서, 본 개시물의 범위는 첨부된 청구항들에 대한 참조에 의해서만 정의되도록 의도된다.

Claims (45)

  1. 데이터 저장 디바이스에 있어서,
    각각이 복수의 물리적 페이지들을 저장하도록 구성된 복수의 비-휘발성 메모리 디바이스들로서, 상기 복수의 물리적 페이지들 각각은 상기 복수의 비-휘발성 메모리 디바이스들 내의 미리 결정된 물리적 위치에 저장되는 것인, 상기 복수의 비-휘발성 메모리 디바이스들;
    제어기가, 하나 이상의 물리적 페이지 내에서, 복수의 논리적 페이지들 (L-페이지) 에 저장된 데이터의 물리적 위치를 결정하는 것을 가능하게 하도록 구성된 논리적-대-물리적 어드레스 변환 맵을 포함하는 휘발성 메모리; 및
    상기 복수의 비-휘발성 메모리 디바이스들에 결합되고, 상기 복수의 비-휘발성 메모리 디바이스들에 데이터를 프로그래밍하며 상기 복수의 비-휘발성 메모리 디바이스들로부터 데이터를 판독하도록 구성된 상기 제어기로서, 상기 데이터는 상기 복수의 논리적 페이지들 (L-페이지들) 에 저장되고, 상기 복수의 L-페이지들 각각은, 상기 제어기가, 상기 논리적-대-물리적 어드레스 변환 맵을 사용하여 상기 물리적 페이지들 중 하나 이상에 저장된 데이터를 논리적으로 레퍼런싱하는 것을 가능하게 하도록 구성되는 L-페이지 번호와 연관되고, 상기 논리적-대-물리적 어드레스 변환 맵 내의 엔트리는 상기 논리적-대-물리적 어드레스 변환 맵 내의 상기 엔트리에 적용되는 에러 정정 코드 비트들의 사이즈 또는 상기 L-페이지의 길이 중 적어도 하나와 L-페이지 번호 사이의 연관성을 포함하는 것인, 상기 제어기
    를 포함하고,
    상기 제어기는 상기 복수의 비-휘발성 메모리 디바이스들에서, 물리적-대-논리적 대응성들을 정의하는 복수의 저널들을 유지하도록 구성되고, 상기 복수의 저널들 각각은 저널 번호와 연관되고, 각각의 저널은 물리적 페이지들의 미리 결정된 범위를 커버하며 복수의 저널 엔트리들을 포함하고, 각각의 엔트리는 하나 이상의 물리적 페이지를 각각의 L-페이지에 연관시키도록 구성되고, 상기 제어기는 스타트업 시에 상기 복수의 저널들을 판독하며 상기 휘발성 메모리에 저장된 상기 논리적-대-물리적 어드레스 변환 맵을 상기 판독된 복수의 저널들로부터 재구축하도록 구성되는 것인, 데이터 저장 디바이스.
  2. 제 1 항에 있어서,
    상기 제어기는 또한, 상기 복수의 L-페이지들 중 하나에 대한 업데이트 시에 상기 복수의 저널들 중 하나에 새로운 엔트리를 생성하도록 구성되는 것인, 데이터 저장 디바이스.
  3. 제 2 항에 있어서,
    변환 데이터의 전력-안전 사본을 유지하기 위한 상기 비-휘발성 메모리 디바이스들에의 기록 동작들은, 기록 증폭이 감소되도록, 상기 논리적-대-물리적 어드레스 변환 맵의 적어도 일부분들을 저장하는 대신에, 새롭게 생성된 저널 엔트리들에 의해 트리거링되도록 구성되는 것인, 데이터 저장 디바이스.
  4. 제 2 항에 있어서,
    상기 새로운 엔트리는 상기 업데이트된 L-페이지의 시작의 물리적 위치를 물리적 페이지 내에 표시하는 것인, 데이터 저장 디바이스.
  5. 제 2 항에 있어서,
    상기 제어기는 또한, 업데이트되기 전의 상기 L-페이지의 길이에 대응하는 양만큼 자유 공간 어카운팅을 업데이트하도록 구성되는 것인, 데이터 저장 디바이스.
  6. 제 2 항에 있어서,
    상기 제어기는 또한, 하나 이상의 물리적 페이지 내에서, 상기 업데이트된 L-페이지의 상기 L-페이지 번호에 의해 레퍼런싱된 상기 데이터의 상기 물리적 위치로 상기 논리적-대-물리적 어드레스 변환 맵을 업데이트하도록 구성되는 것인, 데이터 저장 디바이스.
  7. 제 1 항에 있어서,
    상기 복수의 L-페이지들 중 적어도 하나는 물리적 페이지 경계들과 정렬되지 않는 것인, 데이터 저장 디바이스.
  8. 제 1 항에 있어서,
    상기 물리적 페이지들은 에러 정정 코드 (Error Correcting Code; ECC) 페이지들 (E-페이지들) 로서 구현되고, 상기 복수의 비-휘발성 메모리 디바이스들은 복수의 플래시 메모리 블록들을 포함하고, 각각의 플래시 메모리 블록은 복수의 플래시 메모리 페이지들 (F-페이지들) 을 포함하고, 상기 F-페이지들 각각은 복수의 E-페이지들을 포함하고, 상기 복수의 E-페이지들 각각은 상기 복수의 비-휘발성 메모리 디바이스들 내의 미리 결정된 물리적 위치에 저장되는 것인, 데이터 저장 디바이스.
  9. 제 1 항에 있어서,
    각각이 디바이스 당 하나 이상의 플래시 메모리 블록을 포함하는 복수의 수퍼 블록들 (S-블록들) 을 더 포함하고, 상기 복수의 저널 엔트리들 각각은 상기 S-블록의 상기 물리적 페이지들 중 하나 이상을 각각의 L-페이지에 연관시키도록 구성되는 것인, 데이터 저장 디바이스.
  10. 제 9 항에 있어서,
    상기 제어기는 또한, 적어도,
    가비지 (garbage) 수집을 위하여 상기 복수의 S-블록들 중 하나를 선택하는 것;
    상기 선택된 S-블록에 대한 저널에서의 각각의 엔트리를 상기 논리적-대-물리적 어드레스 변환 맵에서의 엔트리들과 비교하고, 매칭하는 엔트리들을 유효한 것으로서 지정하며 매칭하지 않는 엔트리들을 무효한 것으로서 지정하는 것;
    상기 유효한 엔트리들에 대응하는 상기 L-페이지들을 판독하는 것;
    상기 판독된 L-페이지들을 상기 복수의 비-휘발성 메모리 디바이스들 내의 각각의 물리적 어드레스들에 기록하는 것;
    상기 각각의 물리적 어드레스들을 가리키도록 상기 유효한 엔트리들에 대한 상기 논리적-대-물리적 어드레스 변환 맵을 업데이트하는 것; 및
    상기 논리적-대-물리적 어드레스 변환 맵이 업데이트되었던 상기 엔트리들에 대하여 새로운 저널 엔트리들을 생성하는 것
    에 의해 가비지 수집하도록 구성되는 것인, 데이터 저장 디바이스.
  11. 제 10 항에 있어서,
    상기 복수의 S-블록들 중 하나를 선택하는 것은, 어느 S-블록을 선택할 것인지를 결정함에 있어서 자유 공간 및 프로그램 소거 (program erase; PE) 카운트를 가중하는 것을 포함하는 것인, 데이터 저장 디바이스.
  12. 제 9 항에 있어서,
    상기 제어기는 또한, 적어도,
    가비지 수집을 위하여 상기 복수의 S-블록들 중 하나를 선택하는 것;
    상기 선택된 S-블록의 상기 물리적 페이지들을 판독하는 것;
    상기 선택된 S-블록의 상기 판독된 물리적 페이지들에서의 L-페이지 번호들을 상기 논리적-대-물리적 어드레스 변환 맵에서의 엔트리들과 비교하고, 매칭하는 엔트리들을 유효한 것으로서 지정하며 매칭하지 않는 엔트리들을 무효한 것으로서 지정하는 것;
    상기 유효한 엔트리들에 대응하는 상기 L-페이지들을 상기 복수의 비-휘발성 메모리 디바이스들 내의 각각의 물리적 어드레스들에 기록하는 것;
    상기 각각의 물리적 어드레스들을 가리키도록 상기 유효한 엔트리들에 대한 상기 논리적-대-물리적 어드레스 변환 맵을 업데이트하는 것; 및
    상기 논리적-대-물리적 어드레스 변환 맵이 업데이트되었던 상기 엔트리들에 대하여 새로운 저널 엔트리들을 생성하는 것
    에 의해 가비지 수집하도록 구성되는 것인, 데이터 저장 디바이스.
  13. 제 1 항에 있어서,
    각각의 저널 번호는 상기 저널에 의해 커버된 제 1 물리적 페이지의 어드레스의 미리 결정된 수의 최상위 비트들을 포함하는 것인, 데이터 저장 디바이스.
  14. 제 1 항에 있어서,
    상기 복수의 저널 엔트리들 각각은,
    L-페이지 번호, 및
    물리적 어드레스 위치
    를 포함하는 것인, 데이터 저장 디바이스.
  15. 제 1 항에 있어서,
    상기 복수의 저널 엔트리들 각각은,
    L-페이지 번호;
    물리적 페이지의 물리적 어드레스 위치; 및
    L-페이지 사이즈
    를 포함하는 것인, 데이터 저장 디바이스.
  16. 제 1 항에 있어서,
    상기 복수의 저널 엔트리들 각각은,
    L-페이지의 시작을 포함하는 물리적 페이지의 어드레스의 미리 결정된 수의 최하위 비트들;
    어드레스;
    L-페이지 사이즈; 및
    상기 물리적 페이지로의 오프셋
    을 포함하는 것인, 데이터 저장 디바이스.
  17. 제 1 항에 있어서,
    상기 복수의 L-페이지들은 압축되며 사이즈에 있어서 변동되도록 구성되고, 상기 복수의 저널 엔트리들은 더 작은 사이즈의 더 많은 수의 L-페이지들 또는 더 큰 사이즈의 더 적은 수의 L-페이지들을 레퍼런싱하도록 구성되는 것인, 데이터 저장 디바이스.
  18. 제 1 항에 있어서,
    상기 제어기는 또한, 스타트업 시에 상기 복수의 저널들을 미리 결정된 순차적인 순서로 판독하며 상기 휘발성 메모리에 저장된 논리적-대-물리적 어드레스 변환 맵을 상기 순차적으로 판독된 복수의 저널들에 기초하여 재구축하도록 구성되는 것인, 데이터 저장 디바이스.
  19. 제 1 항에 있어서,
    상기 제어기는 또한, 상기 복수의 저널들에 기초하여 저널 맵을 구축하도록 구성되는 것인, 데이터 저장 디바이스.
  20. 제 1 항에 있어서,
    상기 제어기는 또한,
    스타트업 시에 상기 복수의 저널들을 미리 결정된 순차적인 순서로 판독하고;
    상기 비-휘발성 메모리 디바이스들에 저장된 상기 저널들의 맵을 상기 순차적으로 판독된 복수의 저널들에 기초하여 구축하고;
    상기 구축된 상기 저널들의 맵을 상기 휘발성 메모리에 저장하도록 구성되는 것인, 데이터 저장 디바이스.
  21. 제 1 항에 있어서,
    주어진 L-페이지와 연관된 저널 엔트리들 중에서, 상기 주어진 L-페이지와 연관된 최종 시간 (last-in-time) 업데이트된 저널 엔트리만이 유효한 것인, 데이터 저장 디바이스.
  22. 제 1 항에 있어서,
    상기 제어기는 또한, 상기 휘발성 메모리에 상기 복수의 저널들의 시스템 저널 맵을 유지하도록 구성되고, 상기 시스템 저널 맵에서의 각각의 엔트리는 상기 복수의 저널들 중 하나가 저장되는 상기 비-휘발성 메모리 디바이스들에서의 위치를 가리키는 것인, 데이터 저장 디바이스.
  23. 휘발성 메모리 및 복수의 비-휘발성 메모리 디바이스들을 포함하는 데이터 저장 디바이스를 제어하는 방법에 있어서, 상기 복수의 비-휘발성 메모리 디바이스들 각각은 복수의 물리적 페이지들을 저장하도록 구성되고, 상기 복수의 물리적 페이지들 각각은 상기 복수의 비-휘발성 메모리 디바이스들 내의 미리 결정된 물리적 위치에 저장되는 것인, 상기 데이터 저장 디바이스를 제어하는 방법으로서,
    복수의 논리적 페이지들 (L-페이지들) 에 데이터를 저장하는 단계로서, 상기 복수의 L-페이지들 각각은, 제어기가, 상기 물리적 페이지들 중 하나 이상에 저장된 데이터를 논리적으로 레퍼런싱하는 것을 가능하게 하도록 구성되는 L-페이지 번호와 연관되는 것인, 상기 데이터를 저장하는 단계;
    상기 휘발성 메모리에서 논리적-대-물리적 어드레스 변환 맵을 유지하는 단계로서, 상기 논리적-대-물리적 어드레스 변환 맵은 상기 물리적 페이지들 중 하나 이상 내에서, 각각의 L-페이지에 저장된 상기 데이터의 물리적 위치의 결정을 가능하게 하도록 구성되고, 상기 논리적-대-물리적 어드레스 변환 맵 내의 엔트리는 상기 논리적-대-물리적 어드레스 변환 맵 내의 상기 엔트리에 적용되는 에러 정정 코드 비트들의 사이즈 또는 상기 L-페이지의 길이 중 적어도 하나와 L-페이지 번호 사이의 연관성을 포함하는 것인, 상기 논리적-대-물리적 어드레스 변환 맵을 유지하는 단계;
    상기 복수의 비-휘발성 메모리 디바이스들에서 물리적-대-논리적 대응성들을 정의하는 복수의 저널들을 유지하는 단계로서, 상기 복수의 저널들 각각은 저널 번호와 연관되고, 각각의 저널은 물리적 페이지들의 미리 결정된 범위를 커버하며 각각이 복수의 저널 엔트리들을 포함하고, 각각의 엔트리는 하나 이상의 물리적 페이지들을 각각의 L-페이지에 연관시키도록 구성되는 것인, 상기 복수의 저널들을 유지하는 단계; 및
    스타트업 시에 상기 복수의 저널들을 판독하며 휘발성 메모리에 저장된 상기 논리적-대-물리적 어드레스 변환 맵을 상기 판독된 복수의 저널들에 기초하여 재구축하는 단계
    를 포함하는, 데이터 저장 디바이스를 제어하는 방법.
  24. 제 23 항에 있어서,
    상기 복수의 L-페이지들 중 하나에 대한 업데이트 시에 상기 복수의 저널들 중 하나에 새로운 엔트리를 생성하는 단계를 더 포함하는, 데이터 저장 디바이스를 제어하는 방법.
  25. 제 24 항에 있어서,
    기록 증폭이 감소되도록, 상기 논리적-대-물리적 어드레스 변환 맵의 적어도 일부분들을 저장하는 대신에, 새롭게 생성된 저널 엔트리들에 기초하여 변환 데이터의 전력-안전 사본을 유지하기 위하여 상기 비-휘발성 메모리 디바이스들에 대한 기록 동작들을 트리거링하는 단계를 더 포함하는, 데이터 저장 디바이스를 제어하는 방법.
  26. 제 24 항에 있어서,
    상기 새로운 엔트리는 상기 업데이트된 L-페이지의 시작의 물리적 위치를 물리적 페이지 내에 표시하는 것인, 데이터 저장 디바이스를 제어하는 방법.
  27. 제 24 항에 있어서,
    업데이트되기 전의 상기 L-페이지의 길이에 대응하는 양만큼 자유 공간 어카운팅을 업데이트하는 단계를 더 포함하는, 데이터 저장 디바이스를 제어하는 방법.
  28. 제 23 항에 있어서,
    상기 데이터를 저장하는 단계는, 물리적 페이지 경계들과 정렬되지 않는 위치에 상기 복수의 L-페이지들 중 적어도 하나를 저장하는 단계를 포함하는 것인, 데이터 저장 디바이스를 제어하는 방법.
  29. 제 23 항에 있어서,
    상기 물리적 페이지들은 에러 정정 코드 (ECC) 페이지들 (E-페이지들) 로서 구현되고, 상기 복수의 비-휘발성 메모리 디바이스들은 복수의 플래시 메모리 블록들을 포함하고, 각각의 플래시 메모리 블록은 복수의 플래시 메모리 페이지들 (F-페이지들) 을 포함하고, 상기 F-페이지들 각각은 복수의 E-페이지들을 포함하고, 상기 복수의 E-페이지들 각각은 상기 복수의 비-휘발성 메모리 디바이스들 내의 미리 결정된 물리적 위치에 저장되는 것인, 데이터 저장 디바이스를 제어하는 방법.
  30. 제 24 항에 있어서,
    하나 이상의 물리적 페이지들 내에서, 상기 업데이트된 L-페이지의 상기 L-페이지 번호에 의해 레퍼런싱된 상기 데이터의 상기 물리적 위치로 상기 논리적-대-물리적 어드레스 변환 맵을 업데이트하는 단계를 더 포함하는, 데이터 저장 디바이스를 제어하는 방법.
  31. 제 23 항에 있어서,
    상기 복수의 비-휘발성 메모리 디바이스들은, 각각이 디바이스 당 하나 이상의 플래시 메모리 블록들을 포함하는 복수의 수퍼 블록들 (S-블록들) 을 포함하고, 상기 복수의 저널 엔트리들 각각은 상기 S-블록의 상기 물리적 페이지들 중 하나 이상을 각각의 L-페이지에 연관시키도록 구성되는 것인, 데이터 저장 디바이스를 제어하는 방법.
  32. 제 31 항에 있어서,
    가비지 수집을 위하여 S-블록을 선택하는 단계;
    상기 선택된 S-블록에 대한 저널에서의 각각의 엔트리를 상기 논리적-대-물리적 어드레스 변환 맵에서의 엔트리들과 비교하고, 매칭하는 엔트리들을 유효한 것으로서 지정하며 매칭하지 않는 엔트리들을 무효한 것으로서 지정하는 단계;
    상기 유효한 엔트리들에 대응하는 상기 L-페이지들을 판독하는 단계;
    상기 판독된 L-페이지들을 상기 복수의 비-휘발성 메모리 디바이스들 내의 각각의 물리적 어드레스들에 기록하는 단계;
    상기 각각의 물리적 어드레스들을 가리키도록 상기 유효한 엔트리들에 대한 상기 논리적-대-물리적 어드레스 변환 맵을 업데이트하는 단계; 및
    상기 논리적-대-물리적 어드레스 변환 맵이 업데이트되었던 상기 엔트리들에 대하여 새로운 저널 엔트리들을 생성하는 단계
    를 더 포함하는, 데이터 저장 디바이스를 제어하는 방법.
  33. 제 32 항에 있어서,
    상기 S-블록을 선택하는 단계는, 어느 S-블록을 선택할 것인지를 결정함에 있어서 자유 공간 및 프로그램 소거 (PE) 카운트를 가중하는 것을 포함하는 것인, 데이터 저장 디바이스를 제어하는 방법.
  34. 제 33 항에 있어서,
    상기 저널 번호는 상기 저널에 의해 커버된 제 1 물리적 페이지의 어드레스의 미리 결정된 수의 최상위 비트들을 포함하는 것인, 데이터 저장 디바이스를 제어하는 방법.
  35. 제 31 항에 있어서,
    가비지 수집을 위하여 상기 복수의 S-블록들 중 하나를 선택하는 단계;
    상기 선택된 S-블록의 상기 물리적 페이지들을 판독하는 단계;
    상기 선택된 S-블록의 상기 판독된 물리적 페이지들에서의 L-페이지 번호들을 상기 논리적-대-물리적 어드레스 변환 맵에서의 엔트리들과 비교하고, 매칭하는 엔트리들을 유효한 것으로서 지정하며 매칭하지 않는 엔트리들을 무효한 것으로서 지정하는 단계;
    상기 유효한 엔트리들에 대응하는 상기 L-페이지들을 상기 복수의 비-휘발성 메모리 디바이스들 내의 각각의 물리적 어드레스들에 기록하는 단계;
    상기 각각의 물리적 어드레스들을 가리키도록 상기 유효한 엔트리들에 대한 상기 논리적-대-물리적 어드레스 변환 맵을 업데이트하는 단계; 및
    상기 논리적-대-물리적 어드레스 변환 맵이 업데이트되었던 엔트리들에 대하여 새로운 저널 엔트리들을 생성하는 단계
    를 더 포함하는, 데이터 저장 디바이스를 제어하는 방법.
  36. 제 23 항에 있어서,
    상기 복수의 저널 엔트리들 각각은,
    L-페이지 번호, 및
    물리적 어드레스 위치
    를 포함하는 것인, 데이터 저장 디바이스를 제어하는 방법.
  37. 제 23 항에 있어서,
    상기 복수의 저널 엔트리들 각각은,
    L-페이지 번호;
    물리적 페이지의 물리적 어드레스 위치; 및
    L-페이지 사이즈
    를 포함하는 것인, 데이터 저장 디바이스를 제어하는 방법.
  38. 제 23 항에 있어서,
    상기 복수의 저널 엔트리들 각각은,
    L-페이지의 시작을 포함하는 물리적 페이지의 어드레스의 미리 결정된 수의 최하위 비트들,
    어드레스,
    L-페이지 사이즈, 및
    상기 물리적 페이지로의 오프셋
    을 포함하는 것인, 데이터 저장 디바이스를 제어하는 방법.
  39. 제 23 항에 있어서,
    상기 복수의 L-페이지들이 사이즈에 있어서 변동되도록 상기 복수의 L-페이지들을 선택적으로 압축하는 단계를 더 포함하고, 상기 복수의 저널들은 더 작은 사이즈의 더 많은 수의 L-페이지들 또는 더 큰 사이즈의 더 적은 수의 L-페이지들을 레퍼런싱하도록 구성되는 것인, 데이터 저장 디바이스를 제어하는 방법.
  40. 제 23 항에 있어서,
    스타트업 시에 상기 복수의 저널들을 판독하며 상기 논리적-대-물리적 어드레스 변환 맵을 재구축하는 단계는, 스타트업 시에 상기 복수의 저널들을 미리 결정된 순차적인 순서로 판독하는 단계 및 휘발성 메모리에 저장된 상기 논리적-대-물리적 어드레스 변환 맵을 상기 판독된 복수의 저널들에 기초하여 재구축하는 단계를 포함하는 것인, 데이터 저장 디바이스를 제어하는 방법.
  41. 제 23 항에 있어서,
    상기 제어기는 또한, 상기 복수의 저널들에 기초하여 저널 맵을 구축하도록 구성되는 것인, 데이터 저장 디바이스를 제어하는 방법.
  42. 제 23 항에 있어서,
    스타트업 시에 상기 복수의 저널들을 미리 결정된 순차적인 순서로 판독하는 단계;
    상기 비-휘발성 메모리 디바이스들에 저장된 상기 저널들의 맵을 상기 순차적으로 판독된 복수의 저널들에 기초하여 구축하는 단계; 및
    상기 구축된 상기 저널들의 맵을 상기 휘발성 메모리에 저장하는 단계
    를 더 포함하는, 데이터 저장 디바이스를 제어하는 방법.
  43. 제 23 항에 있어서,
    주어진 L-페이지와 연관된 저널 엔트리들 중에서, 상기 주어진 L-페이지와 연관된 최종 시간 업데이트된 저널 엔트리만이 유효한 것인, 데이터 저장 디바이스를 제어하는 방법.
  44. 제 23 항에 있어서,
    상기 휘발성 메모리에서 상기 복수의 저널들의 시스템 저널 맵을 유지하는 단계를 더 포함하고, 상기 시스템 저널 맵에서의 각각의 엔트리는 상기 복수의 저널들 중 하나가 저장되는 상기 비-휘발성 메모리 디바이스들에서의 위치를 가리키는 것인, 데이터 저장 디바이스를 제어하는 방법.
  45. 데이터 저장 디바이스 제어기로서,
    휘발성 메모리 및 복수의 비-휘발성 메모리 디바이스들에 결합되도록 구성된 프로세서로서, 상기 복수의 비-휘발성 메모리 디바이스들 각각은 상기 복수의 비-휘발성 메모리 디바이스들 내의 미리 결정된 물리적 위치에 복수의 물리적 페이지들을 저장하도록 구성되고, 상기 프로세서는 또한, 상기 복수의 비-휘발성 메모리 디바이스들에 데이터를 프로그래밍하며 상기 복수의 비-휘발성 메모리 디바이스들로부터 데이터를 판독하도록 구성되고, 상기 데이터는 복수의 논리적 페이지들 (L-페이지들) 에 저장되고, 상기 복수의 L-페이지들 각각은, 상기 프로세서가, 상기 물리적 페이지들 중 하나 이상에 저장된 데이터를 논리적으로 레퍼런싱하는 것을 가능하게 하도록 구성되는 L-페이지 번호와 연관되고, 상기 휘발성 메모리는, 상기 프로세서가, 하나 이상의 물리적 페이지들 내에서, 각각의 L-페이지에 저장된 상기 데이터의 물리적 위치를 결정하는 것을 가능하게 하도록 구성된 논리적-대-물리적 어드레스 변환 맵을 저장하도록 구성되는 것인, 상기 프로세서
    를 포함하고,
    상기 논리적-대-물리적 어드레스 변환 맵 내의 엔트리는 상기 논리적-대-물리적 어드레스 변환 맵 내의 상기 엔트리에 적용되는 에러 정정 코드 비트들의 사이즈 또는 상기 L-페이지의 길이 중 적어도 하나와 L-페이지 번호 사이의 연관성을 포함하고,
    상기 프로세서는 또한, 상기 복수의 비-휘발성 메모리 디바이스들에서, 물리적-대-논리적 대응성들을 정의하는 복수의 저널들을 유지하도록 구성되고, 상기 복수의 저널들 각각은 저널 번호와 연관되고, 각각의 저널은 물리적 페이지들의 미리 결정된 범위를 커버하며 복수의 저널 엔트리들을 포함하고, 각각의 엔트리는 하나 이상의 물리적 페이지를 각각의 L-페이지에 연관시키도록 구성되고, 상기 프로세서는 스타트업 시에 상기 복수의 저널들을 판독하며 상기 휘발성 메모리에 저장된 상기 논리적-대-물리적 어드레스 변환 맵을 상기 판독된 복수의 저널들로부터 재구축하도록 구성되는 것인, 데이터 저장 디바이스 제어기.
KR1020157011769A 2012-10-05 2013-09-30 솔리드 스테이트 드라이브들에서의 물리적-대-논리적 맵핑을 위한 방법들, 디바이스들 및 시스템들 KR101911589B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/645,822 2012-10-05
US13/645,822 US9268682B2 (en) 2012-10-05 2012-10-05 Methods, devices and systems for physical-to-logical mapping in solid state drives
PCT/US2013/062723 WO2014055445A1 (en) 2012-10-05 2013-09-30 Methods, devices and systems for physical-to-logical mapping in solid state drives

Publications (2)

Publication Number Publication Date
KR20150084817A KR20150084817A (ko) 2015-07-22
KR101911589B1 true KR101911589B1 (ko) 2018-10-24

Family

ID=50433685

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157011769A KR101911589B1 (ko) 2012-10-05 2013-09-30 솔리드 스테이트 드라이브들에서의 물리적-대-논리적 맵핑을 위한 방법들, 디바이스들 및 시스템들

Country Status (8)

Country Link
US (1) US9268682B2 (ko)
EP (1) EP2904496A4 (ko)
JP (1) JP6210570B2 (ko)
KR (1) KR101911589B1 (ko)
CN (1) CN105027090B (ko)
AU (1) AU2013327582B2 (ko)
HK (1) HK1216443A1 (ko)
WO (1) WO2014055445A1 (ko)

Families Citing this family (175)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9176859B2 (en) 2009-01-07 2015-11-03 Siliconsystems, Inc. Systems and methods for improving the performance of non-volatile memory operations
US10079048B2 (en) 2009-03-24 2018-09-18 Western Digital Technologies, Inc. Adjusting access of non-volatile semiconductor memory based on access time
US9753847B2 (en) 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
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
US8959284B1 (en) 2010-06-28 2015-02-17 Western Digital Technologies, Inc. Disk drive steering write data to write cache based on workload
US9058280B1 (en) 2010-08-13 2015-06-16 Western Digital Technologies, Inc. Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time
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
US9021192B1 (en) 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US9069475B1 (en) 2010-10-26 2015-06-30 Western Digital Technologies, Inc. Hybrid drive selectively spinning up disk when powered on
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
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US9195530B1 (en) 2011-09-06 2015-11-24 Western Digital Technologies, Inc. Systems and methods for improved data management 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
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US9268701B1 (en) 2011-11-21 2016-02-23 Western Digital Technologies, Inc. Caching of data in data storage systems by managing the size of read and write cache based on a measurement of cache reliability
US8959416B1 (en) 2011-12-16 2015-02-17 Western Digital Technologies, Inc. Memory defect management using signature identification
US9348741B1 (en) 2011-12-19 2016-05-24 Western Digital Technologies, Inc. Systems and methods for handling write data access requests in data storage devices
US9053008B1 (en) 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
US9977612B1 (en) 2012-05-11 2018-05-22 Western Digital Technologies, Inc. System data management using garbage collection and logs
US9170932B1 (en) 2012-05-22 2015-10-27 Western Digital Technologies, Inc. System data storage mechanism providing coherency and segmented data loading
US8954653B1 (en) 2012-06-26 2015-02-10 Western Digital Technologies, Inc. Mechanisms for efficient management of system data in data storage systems
US8924832B1 (en) 2012-06-26 2014-12-30 Western Digital Technologies, Inc. Efficient error handling mechanisms in data storage systems
US8966343B2 (en) 2012-08-21 2015-02-24 Western Digital Technologies, Inc. Solid-state drive retention monitor using reference blocks
US9507523B1 (en) 2012-10-12 2016-11-29 Western Digital Technologies, Inc. Methods, devices and systems for variable size logical page management in a solid state drive
US9489296B1 (en) 2012-10-17 2016-11-08 Western Digital Technologies, Inc. Methods, devices and systems for hardware-based garbage collection 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
US9032271B2 (en) 2012-12-07 2015-05-12 Western Digital Technologies, Inc. System and method for lower page data recovery in a solid state drive
US8954655B2 (en) 2013-01-14 2015-02-10 Western Digital Technologies, Inc. Systems and methods of configuring a mode of operation in a solid-state memory
US8972655B2 (en) 2013-01-21 2015-03-03 Western Digital Technolgies, Inc. Initialization of a storage device
US9495288B2 (en) * 2013-01-22 2016-11-15 Seagate Technology Llc Variable-size flash translation layer
US9274966B1 (en) 2013-02-20 2016-03-01 Western Digital Technologies, Inc. Dynamically throttling host commands to disk drives
US9454474B2 (en) 2013-03-05 2016-09-27 Western Digital Technologies, Inc. Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
US8924824B1 (en) 2013-03-12 2014-12-30 Western Digital Technologies, Inc. Soft-decision input generation for data storage systems
US8990668B2 (en) 2013-03-14 2015-03-24 Western Digital Technologies, Inc. Decoding data stored in solid-state memory
US9448738B2 (en) 2013-03-15 2016-09-20 Western Digital Technologies, Inc. Compression and formatting of data for data storage systems
US9335950B2 (en) 2013-03-15 2016-05-10 Western Digital Technologies, Inc. Multiple stream compression and formatting of data for data storage systems
US9218279B2 (en) 2013-03-15 2015-12-22 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
US9338927B2 (en) 2013-05-02 2016-05-10 Western Digital Technologies, Inc. Thermal interface material pad and method of forming the same
US9195293B1 (en) 2013-05-03 2015-11-24 Western Digital Technologies, Inc. User controlled data storage device power and performance settings
US9632926B1 (en) 2013-05-16 2017-04-25 Western Digital Technologies, Inc. Memory unit assignment and selection for internal memory operations in data storage systems
US9081700B2 (en) 2013-05-16 2015-07-14 Western Digital Technologies, Inc. High performance read-modify-write system providing line-rate merging of dataframe segments in hardware
US9170938B1 (en) 2013-05-17 2015-10-27 Western Digital Technologies, Inc. Method and system for atomically writing scattered information in a solid state storage device
US9280200B1 (en) 2013-05-20 2016-03-08 Western Digital Technologies, Inc. Automatic peak current throttle of tiered storage elements
US9740248B2 (en) 2013-06-07 2017-08-22 Western Digital Technologies, Inc. Component placement within a solid state drive
US9274978B2 (en) 2013-06-10 2016-03-01 Western Digital Technologies, Inc. Migration of encrypted data for data storage systems
US9436630B2 (en) 2013-06-11 2016-09-06 Western Digital Technologies, Inc. Using dual phys to support multiple PCIe link widths
US9830257B1 (en) 2013-06-12 2017-11-28 Western Digital Technologies, Inc. Fast saving of data during power interruption in data storage systems
US9665501B1 (en) 2013-06-18 2017-05-30 Western Digital Technologies, Inc. Self-encrypting data storage device supporting object-level encryption
US9304560B2 (en) 2013-06-19 2016-04-05 Western Digital Technologies, Inc. Backup power for reducing host current transients
GB2515539A (en) * 2013-06-27 2014-12-31 Samsung Electronics Co Ltd Data structure for physical layer encapsulation
US9208101B2 (en) 2013-06-26 2015-12-08 Western Digital Technologies, Inc. Virtual NAND capacity extension in a hybrid drive
US9583153B1 (en) 2013-06-28 2017-02-28 Western Digital Technologies, Inc. Memory card placement within a solid state drive
US9042197B2 (en) 2013-07-23 2015-05-26 Western Digital Technologies, Inc. Power fail protection and recovery using low power states in a data storage device/system
US9141176B1 (en) 2013-07-29 2015-09-22 Western Digital Technologies, Inc. Power management for data storage device
US9442668B1 (en) 2013-08-29 2016-09-13 Western Digital Technologies, Inc. Adaptive power management control with performance feedback
US9263136B1 (en) 2013-09-04 2016-02-16 Western Digital Technologies, Inc. Data retention flags in solid-state drives
US9304709B2 (en) 2013-09-06 2016-04-05 Western Digital Technologies, Inc. High performance system providing selective merging of dataframe segments in hardware
US10444998B1 (en) 2013-10-24 2019-10-15 Western Digital Technologies, Inc. Data storage device providing data maintenance services
US9330143B2 (en) 2013-10-24 2016-05-03 Western Digital Technologies, Inc. Data storage device supporting accelerated database operations
US9007841B1 (en) 2013-10-24 2015-04-14 Western Digital Technologies, Inc. Programming scheme for improved voltage distribution in solid-state memory
US8917471B1 (en) 2013-10-29 2014-12-23 Western Digital Technologies, Inc. Power management for data storage device
US9323467B2 (en) 2013-10-29 2016-04-26 Western Digital Technologies, Inc. Data storage device startup
US9286176B1 (en) 2013-11-08 2016-03-15 Western Digital Technologies, Inc. Selective skipping of blocks in an SSD
US9270296B1 (en) 2013-11-13 2016-02-23 Western Digital Technologies, Inc. Method and system for soft decoding through single read
US9529710B1 (en) 2013-12-06 2016-12-27 Western Digital Technologies, Inc. Interleaved channels in a solid-state drive
US10140067B1 (en) 2013-12-19 2018-11-27 Western Digital Technologies, Inc. Data management for data storage device with multiple types of non-volatile memory media
US9542278B2 (en) * 2013-12-26 2017-01-10 Silicon Motion, Inc. Data storage device and flash memory control method
US9036283B1 (en) 2014-01-22 2015-05-19 Western Digital Technologies, Inc. Data storage device with selective write to a first storage media or a second storage media
US9337864B1 (en) 2014-01-29 2016-05-10 Western Digital Technologies, Inc. Non-binary LDPC decoder using binary subgroup processing
US9250994B1 (en) 2014-02-05 2016-02-02 Western Digital Technologies, Inc. Non-binary low-density parity check (LDPC) decoding using trellis maximization
US9384088B1 (en) 2014-02-24 2016-07-05 Western Digital Technologies, Inc. Double writing map table entries in a data storage system to guard against silent corruption
US9354955B1 (en) 2014-03-19 2016-05-31 Western Digital Technologies, Inc. Partial garbage collection for fast error handling and optimized garbage collection for the invisible band
US9348520B2 (en) 2014-03-24 2016-05-24 Western Digital Technologies, Inc. Lifetime extension of non-volatile semiconductor memory for data storage device
US9268487B2 (en) 2014-03-24 2016-02-23 Western Digital Technologies, Inc. Method and apparatus for restricting writes to solid state memory when an end-of life condition is reached
US9448742B2 (en) 2014-03-27 2016-09-20 Western Digital Technologies, Inc. Communication between a host and a secondary storage device
TWI522804B (zh) 2014-04-23 2016-02-21 威盛電子股份有限公司 快閃記憶體控制器以及資料儲存裝置以及快閃記憶體控制方法
US9564212B2 (en) 2014-05-06 2017-02-07 Western Digital Technologies, Inc. Solid-state memory corruption mitigation
US9690696B1 (en) 2014-05-14 2017-06-27 Western Digital Technologies, Inc. Lifetime extension of memory for data storage system
US9472222B2 (en) 2014-05-16 2016-10-18 Western Digital Technologies, Inc. Vibration mitigation for a data storage device
US9959203B2 (en) 2014-06-23 2018-05-01 Google Llc Managing storage devices
US9275741B1 (en) 2014-09-10 2016-03-01 Western Digital Technologies, Inc. Temperature compensation management in solid-state memory
US9418699B1 (en) 2014-10-09 2016-08-16 Western Digital Technologies, Inc. Management of sequentially written data
US9405356B1 (en) 2014-10-21 2016-08-02 Western Digital Technologies, Inc. Temperature compensation in data storage device
US9823859B2 (en) 2014-11-06 2017-11-21 Western Digital Technologies, Inc. Mechanical shock mitigation for data storage
US10915256B2 (en) * 2015-02-25 2021-02-09 SK Hynix Inc. Efficient mapping scheme with deterministic power transition times for flash storage devices
US9857995B1 (en) 2015-03-09 2018-01-02 Western Digital Technologies, Inc. Data storage device and method providing non-volatile memory buffer for real-time primary non-volatile memory protection
US9785563B1 (en) 2015-08-13 2017-10-10 Western Digital Technologies, Inc. Read command processing for data storage system based on previous writes
US9668337B2 (en) 2015-09-08 2017-05-30 Western Digital Technologies, Inc. Temperature management in data storage devices
US9727261B2 (en) 2015-09-24 2017-08-08 Western Digital Technologies, Inc. Weighted programming patterns in solid-state data storage systems
US9836232B1 (en) 2015-09-30 2017-12-05 Western Digital Technologies, Inc. Data storage device and method for using secondary non-volatile memory for temporary metadata storage
US10013174B2 (en) 2015-09-30 2018-07-03 Western Digital Technologies, Inc. Mapping system selection for data storage device
US9620226B1 (en) 2015-10-30 2017-04-11 Western Digital Technologies, Inc. Data retention charge loss and read disturb compensation in solid-state data storage systems
CN106843744B (zh) * 2015-12-03 2020-05-26 群联电子股份有限公司 数据程序化方法与存储器储存装置
US10126981B1 (en) 2015-12-14 2018-11-13 Western Digital Technologies, Inc. Tiered storage using storage class memory
US9940034B2 (en) 2016-01-25 2018-04-10 International Business Machines Corporation Reducing read access latency by straddling pages across non-volatile memory channels
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
US10157004B2 (en) * 2016-04-14 2018-12-18 Sandisk Technologies Llc Storage system and method for recovering data corrupted in a host memory buffer
CN107544866B (zh) * 2016-06-29 2021-01-05 北京忆恒创源科技有限公司 一种日志更新方法与装置
CN107544912B (zh) * 2016-06-29 2021-09-03 北京忆恒创源科技股份有限公司 一种日志记录方法、加载方法及其装置
CN107544913B (zh) * 2016-06-29 2021-09-28 北京忆恒创源科技股份有限公司 一种ftl表快速重建方法与装置
CN106201778B (zh) * 2016-06-30 2019-06-25 联想(北京)有限公司 信息处理方法及存储设备
US9946463B2 (en) * 2016-07-12 2018-04-17 Western Digital Technologies, Inc. Compression of indirection tables
CN106155919B (zh) * 2016-07-26 2019-06-11 深圳市瑞耐斯技术有限公司 一种3d闪存的控制方法及控制系统
US10387303B2 (en) 2016-08-16 2019-08-20 Western Digital Technologies, Inc. Non-volatile storage system with compute engine to accelerate big data applications
KR20180019419A (ko) 2016-08-16 2018-02-26 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 그 동작방법
CN107870867B (zh) * 2016-09-28 2021-12-14 北京忆芯科技有限公司 32位cpu访问大于4gb内存空间的方法与装置
CN107870870B (zh) * 2016-09-28 2021-12-14 北京忆芯科技有限公司 访问超过地址总线宽度的内存空间
US10540102B2 (en) * 2016-09-30 2020-01-21 Amazon Technologies, Inc. Physical media aware spacially coupled journaling and replay
US10489289B1 (en) 2016-09-30 2019-11-26 Amazon Technologies, Inc. Physical media aware spacially coupled journaling and trim
US10747678B2 (en) 2016-10-27 2020-08-18 Seagate Technology Llc Storage tier with compressed forward map
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
KR20180051706A (ko) 2016-11-07 2018-05-17 삼성전자주식회사 어드레스 맵핑 테이블의 에러 정정을 수행하는 메모리 시스템
TWI591533B (zh) * 2016-11-25 2017-07-11 慧榮科技股份有限公司 可用於資料儲存裝置之資料儲存方法與資料回復程序、以及採用這些方法的資料儲存裝置
US10613973B1 (en) 2016-12-28 2020-04-07 Amazon Technologies, Inc. Garbage collection in solid state drives
US10565123B2 (en) 2017-04-10 2020-02-18 Western Digital Technologies, Inc. Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module
CN108733575B (zh) * 2017-04-20 2022-12-27 深圳市得一微电子有限责任公司 一种断电重启后逻辑对物理映像表的重建方法、固态硬盘
KR102458312B1 (ko) 2017-06-09 2022-10-24 삼성전자주식회사 스토리지 장치 및 이의 동작 방법
US10845866B2 (en) * 2017-06-22 2020-11-24 Micron Technology, Inc. Non-volatile memory system or sub-system
US10649661B2 (en) * 2017-06-26 2020-05-12 Western Digital Technologies, Inc. Dynamically resizing logical storage blocks
US11113159B2 (en) 2017-06-30 2021-09-07 Intel Corporation Log structure with compressed keys
US10628326B2 (en) * 2017-08-21 2020-04-21 Micron Technology, Inc. Logical to physical mapping
US10474528B2 (en) 2017-10-02 2019-11-12 Western Digital Technologies, Inc. Redundancy coding stripe based on coordinated internal address scheme across multiple devices
US10379948B2 (en) 2017-10-02 2019-08-13 Western Digital Technologies, Inc. Redundancy coding stripe based on internal addresses of storage devices
US10877898B2 (en) * 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
US10884947B2 (en) * 2017-11-17 2021-01-05 SK Hynix Inc. Methods and memory systems for address mapping
KR20190083051A (ko) * 2018-01-03 2019-07-11 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
TWI670594B (zh) * 2018-01-18 2019-09-01 慧榮科技股份有限公司 資料儲存裝置
KR102527132B1 (ko) * 2018-01-19 2023-05-02 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN110096452B (zh) * 2018-01-31 2024-05-28 北京忆恒创源科技股份有限公司 非易失随机访问存储器及其提供方法
TWI679538B (zh) 2018-03-31 2019-12-11 慧榮科技股份有限公司 資料儲存系統之控制單元以及邏輯至物理映射表更新方法
US10725941B2 (en) 2018-06-30 2020-07-28 Western Digital Technologies, Inc. Multi-device storage system with hosted services on peer storage devices
US10409511B1 (en) 2018-06-30 2019-09-10 Western Digital Technologies, Inc. Multi-device storage system with distributed read/write processing
KR102612918B1 (ko) * 2018-07-27 2023-12-13 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
US10901848B2 (en) 2018-08-03 2021-01-26 Western Digital Technologies, Inc. Storage systems with peer data recovery
US10649843B2 (en) 2018-08-03 2020-05-12 Western Digital Technologies, Inc. Storage systems with peer data scrub
US10592144B2 (en) 2018-08-03 2020-03-17 Western Digital Technologies, Inc. Storage system fabric with multichannel compute complex
US10831603B2 (en) 2018-08-03 2020-11-10 Western Digital Technologies, Inc. Rebuild assist using failed storage device
US10824526B2 (en) 2018-08-03 2020-11-03 Western Digital Technologies, Inc. Using failed storage device in peer-to-peer storage system to perform storage-centric task
US10877810B2 (en) 2018-09-29 2020-12-29 Western Digital Technologies, Inc. Object storage system with metadata operation priority processing
US10769062B2 (en) 2018-10-01 2020-09-08 Western Digital Technologies, Inc. Fine granularity translation layer for data storage devices
US10956071B2 (en) 2018-10-01 2021-03-23 Western Digital Technologies, Inc. Container key value store for data storage devices
TWI709042B (zh) * 2018-11-08 2020-11-01 慧榮科技股份有限公司 用來進行關於容錯式磁碟陣列的映射資訊管理之方法與裝置以及儲存系統
US10740231B2 (en) 2018-11-20 2020-08-11 Western Digital Technologies, Inc. Data access in data storage device including storage class memory
US10983918B2 (en) * 2018-12-31 2021-04-20 Micron Technology, Inc. Hybrid logical to physical caching scheme
US11182258B2 (en) 2019-01-04 2021-11-23 Western Digital Technologies, Inc. Data rebuild using dynamic peer work allocation
US11061598B2 (en) * 2019-03-25 2021-07-13 Western Digital Technologies, Inc. Optimized handling of multiple copies in storage management
TWI698744B (zh) * 2019-04-10 2020-07-11 慧榮科技股份有限公司 資料儲存裝置及邏輯至物理位址映射表之更新方法
US11226904B2 (en) * 2019-04-26 2022-01-18 Hewlett Packard Enterprise Development Lp Cache data location system
US10997085B2 (en) 2019-06-03 2021-05-04 International Business Machines Corporation Compression for flash translation layer
US11237893B2 (en) * 2019-06-26 2022-02-01 Western Digital Technologies, Inc. Use of error correction-based metric for identifying poorly performing data storage devices
US10825535B1 (en) * 2019-08-28 2020-11-03 Micron Technology, Inc. Intra-code word wear leveling techniques
US10977189B2 (en) 2019-09-06 2021-04-13 Seagate Technology Llc Reducing forward mapping table size using hashing
TWI724550B (zh) * 2019-09-19 2021-04-11 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
US11016905B1 (en) 2019-11-13 2021-05-25 Western Digital Technologies, Inc. Storage class memory access
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
CN111338990B (zh) * 2020-02-12 2021-01-12 合肥康芯威存储技术有限公司 一种数据存储装置及数据存储方法与存储系统
JP2021149549A (ja) 2020-03-19 2021-09-27 キオクシア株式会社 ストレージ装置およびアドレス変換テーブルのキャッシュ制御方法
US11249921B2 (en) 2020-05-06 2022-02-15 Western Digital Technologies, Inc. Page modification encoding and caching
US11726921B2 (en) * 2020-05-21 2023-08-15 Seagate Technology Llc Combined page footer for parallel metadata storage
CN113885778B (zh) * 2020-07-02 2024-03-08 慧荣科技股份有限公司 数据处理方法及对应的数据储存装置
CN113961140A (zh) 2020-07-02 2022-01-21 慧荣科技股份有限公司 数据处理方法及对应的数据储存装置
US11360671B2 (en) * 2020-07-22 2022-06-14 Seagate Technology Llc Region-specific directed offline scan for hard disk drive
US11550724B2 (en) 2020-08-14 2023-01-10 Samsung Electronics Co., Ltd. Method and system for logical to physical (L2P) mapping for data-storage device comprising nonvolatile memory
KR20220032826A (ko) 2020-09-08 2022-03-15 에스케이하이닉스 주식회사 메모리 시스템 내 맵 정보를 제어 및 저장하는 장치 및 방법
US20210223979A1 (en) * 2021-03-16 2021-07-22 Intel Corporation On-ssd-copy techniques using copy-on-write
CN115563026B (zh) * 2022-12-07 2023-04-14 合肥康芯威存储技术有限公司 一种映射表的重建方法及数据存储设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130091322A1 (en) 2011-10-06 2013-04-11 Mstar Semiconductor, Inc. Electronic System and Memory Managing Method Thereof

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7886108B2 (en) 2000-01-06 2011-02-08 Super Talent Electronics, Inc. Methods and systems of managing memory addresses in a large capacity multi-level cell (MLC) based flash memory device
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
US8266367B2 (en) 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
US7610438B2 (en) 2000-01-06 2009-10-27 Super Talent Electronics, Inc. Flash-memory card for caching a hard disk drive with data-area toggling of pointers stored in a RAM lookup table
US7526599B2 (en) * 2002-10-28 2009-04-28 Sandisk Corporation Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
US20040088474A1 (en) 2002-10-30 2004-05-06 Lin Jin Shin NAND type flash memory disk device and method for detecting the logical address
US20040109376A1 (en) 2002-12-09 2004-06-10 Jin-Shin Lin Method for detecting logical address of flash memory
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
JP2005293774A (ja) 2004-04-02 2005-10-20 Hitachi Global Storage Technologies Netherlands Bv ディスク装置の制御方法
US7441067B2 (en) 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling
KR101404083B1 (ko) 2007-11-06 2014-06-09 삼성전자주식회사 반도체 디스크 및 그것의 동작 방법
US7363421B2 (en) 2005-01-13 2008-04-22 Stmicroelectronics S.R.L. Optimizing write/erase operations in memory devices
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US20070016721A1 (en) 2005-07-18 2007-01-18 Wyse Technology Inc. Flash file system power-up by using sequential sector allocation
US20070094445A1 (en) 2005-10-20 2007-04-26 Trika Sanjeev N Method to enable fast disk caching and efficient operations on solid state disks
US7509471B2 (en) 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
JP4633802B2 (ja) 2005-12-09 2011-02-16 パナソニック株式会社 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法
US7711923B2 (en) 2006-06-23 2010-05-04 Microsoft Corporation Persistent flash memory mapping table
KR100843543B1 (ko) 2006-10-25 2008-07-04 삼성전자주식회사 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
US8316206B2 (en) * 2007-02-12 2012-11-20 Marvell World Trade Ltd. Pilot placement for non-volatile memory
JP4939234B2 (ja) * 2007-01-11 2012-05-23 株式会社日立製作所 フラッシュメモリモジュール、そのフラッシュメモリモジュールを記録媒体として用いたストレージ装置及びそのフラッシュメモリモジュールのアドレス変換テーブル検証方法
US20080288712A1 (en) 2007-04-25 2008-11-20 Cornwell Michael J Accessing metadata with an external host
US20080282024A1 (en) 2007-05-09 2008-11-13 Sudeep Biswas Management of erase operations in storage devices based on flash memories
US8095851B2 (en) 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
KR101436505B1 (ko) 2008-01-03 2014-09-02 삼성전자주식회사 메모리 장치
JP4919983B2 (ja) * 2008-02-21 2012-04-18 ヒタチグローバルストレージテクノロジーズネザーランドビーブイ データ記憶装置及びデータ記憶装置におけるデータ管理方法
TWI375956B (en) 2008-02-29 2012-11-01 Phison Electronics Corp Block management methnd for flash memory, controller and storage sysetm thereof
KR101398200B1 (ko) 2008-03-18 2014-05-26 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
KR101398212B1 (ko) 2008-03-18 2014-05-26 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
US8180954B2 (en) 2008-04-15 2012-05-15 SMART Storage Systems, Inc. Flash management using logical page size
KR101518199B1 (ko) 2008-05-23 2015-05-06 삼성전자주식회사 오류 정정 장치, 그 방법 및 상기 장치를 포함하는 메모리장치
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
US8412880B2 (en) 2009-01-08 2013-04-02 Micron Technology, Inc. Memory system controller to manage wear leveling across a plurality of storage nodes
US8255774B2 (en) 2009-02-17 2012-08-28 Seagate Technology Data storage system with non-volatile memory for error correction
KR20100104623A (ko) 2009-03-18 2010-09-29 삼성전자주식회사 데이터 처리 시스템 및 그것의 부호율 제어 스킴
KR101571693B1 (ko) 2009-04-15 2015-11-26 삼성전자주식회사 동작 수행 중 다른 요청을 우선 처리할 수 있는 비휘발성 메모리 컨트롤러, 이를 포함하는 시스템 및 그 관리 방법
US8219776B2 (en) 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US20100306451A1 (en) 2009-06-01 2010-12-02 Joshua Johnson Architecture for nand flash constraint enforcement
US20110004720A1 (en) * 2009-07-02 2011-01-06 Chun-Ying Chiang Method and apparatus for performing full range random writing on a non-volatile memory
US8688894B2 (en) 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
US8463983B2 (en) 2009-09-15 2013-06-11 International Business Machines Corporation Container marker scheme for reducing write amplification in solid state devices
US20110072333A1 (en) 2009-09-24 2011-03-24 Innostor Technology Corporation Control method for flash memory based on variable length ecc
US8745353B2 (en) 2009-10-23 2014-06-03 Seagate Technology Llc Block boundary resolution for mismatched logical and physical block sizes
US8364929B2 (en) 2009-10-23 2013-01-29 Seagate Technology Llc Enabling spanning for a storage device
US8255661B2 (en) 2009-11-13 2012-08-28 Western Digital Technologies, Inc. Data storage system comprising a mapping bridge for aligning host block size with physical block size of a data storage device
JP4738536B1 (ja) 2010-01-29 2011-08-03 株式会社東芝 不揮発性メモリのコントローラ及び不揮発性メモリの制御方法
US8327226B2 (en) 2010-02-03 2012-12-04 Seagate Technology Llc Adjustable error correction code length in an electrical storage device
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
US8458417B2 (en) 2010-03-10 2013-06-04 Seagate Technology Llc Garbage collection in a storage device
US20110252289A1 (en) 2010-04-08 2011-10-13 Seagate Technology Llc Adjusting storage device parameters based on reliability sensing
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US20120173795A1 (en) 2010-05-25 2012-07-05 Ocz Technology Group, Inc. Solid state drive with low write amplification
US8533550B2 (en) 2010-06-29 2013-09-10 Intel Corporation Method and system to improve the performance and/or reliability of a solid-state drive
TWI455144B (zh) 2010-07-22 2014-10-01 Silicon Motion Inc 使用於快閃記憶體的控制方法與控制器
CN102567221B (zh) * 2010-12-29 2015-06-10 群联电子股份有限公司 数据管理方法、存储器控制器与存储器储存装置
US8458133B2 (en) * 2011-01-24 2013-06-04 Apple Inc. Coordinating sync points between a non-volatile memory and a file system
US8732431B2 (en) 2011-03-06 2014-05-20 Micron Technology, Inc. Logical address translation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130091322A1 (en) 2011-10-06 2013-04-11 Mstar Semiconductor, Inc. Electronic System and Memory Managing Method Thereof

Also Published As

Publication number Publication date
EP2904496A4 (en) 2016-06-01
AU2013327582B2 (en) 2019-01-17
AU2013327582A1 (en) 2015-05-14
WO2014055445A1 (en) 2014-04-10
EP2904496A1 (en) 2015-08-12
HK1216443A1 (zh) 2016-11-11
KR20150084817A (ko) 2015-07-22
CN105027090A (zh) 2015-11-04
JP6210570B2 (ja) 2017-10-11
CN105027090B (zh) 2018-03-09
US20140101369A1 (en) 2014-04-10
US9268682B2 (en) 2016-02-23
JP2015530685A (ja) 2015-10-15

Similar Documents

Publication Publication Date Title
KR101911589B1 (ko) 솔리드 스테이트 드라이브들에서의 물리적-대-논리적 맵핑을 위한 방법들, 디바이스들 및 시스템들
US10055345B2 (en) Methods, devices and systems for solid state drive control
US9817577B2 (en) Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
KR101948381B1 (ko) 고체 상태 드라이브에서 프래그먼티드 펌웨어 테이블 재구축을 위한 방법들, 데이터 저장 디바이스들 및 시스템들
US10254983B2 (en) Atomic write command support in a solid state drive
US9792067B2 (en) Trim command processing in a solid state drive
US9513831B2 (en) Method and system for atomically writing scattered information in a solid state storage device
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
GRNT Written decision to grant