KR20220058944A - 메모리 매핑 디바이스 및 방법 - Google Patents

메모리 매핑 디바이스 및 방법 Download PDF

Info

Publication number
KR20220058944A
KR20220058944A KR1020227011433A KR20227011433A KR20220058944A KR 20220058944 A KR20220058944 A KR 20220058944A KR 1020227011433 A KR1020227011433 A KR 1020227011433A KR 20227011433 A KR20227011433 A KR 20227011433A KR 20220058944 A KR20220058944 A KR 20220058944A
Authority
KR
South Korea
Prior art keywords
mapping table
sequential
memory
memory device
sequential mapping
Prior art date
Application number
KR1020227011433A
Other languages
English (en)
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 KR20220058944A publication Critical patent/KR20220058944A/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
    • 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
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0658Controller construction arrangements
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • 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)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

플래시 메모리 디바이스의 플래시 메모리 어레이 내에 위치하는 순차적 매핑 테이블을 포함하는, 장치 및 방법이 개시된다. 선택된 예시는 전원이 켜질 때 캐시에 순차적 매핑 테이블을 로딩하고 순차적 매핑 테이블을 이용하여 판독 및 기록 동작을 수행하기 위한 플래시 메모리 디바이스의 펌웨어를 포함한다. 선택된 예시는 플래시 메모리 디바이스의 전원이 꺼질 때 플래시 메모리 어레이에 업데이트된 순차적 매핑 테이블을 저장하기 위한 플래시 메모리 디바이스의 펌웨어를 포함한다.

Description

메모리 매핑 디바이스 및 방법
본 개시의 실시예는 일반적으로 메모리의 물리적 위치에 대한 논리적 위치의 매핑에 관한 것으로서; 더 상세하게는 이러한 매핑을 위한 축소된 크기 데이터 구조에 관한 것이다.
메모리 디바이스는 호스트 시스템에 대한 데이터의 전자적 저장을 제공하는 반도체 회로이다(예를 들어, 컴퓨터 또는 다른 전자 디바이스). 메모리 디바이스는 휘발성 또는 비휘발성일 수 있다. 휘발성 메모리는 데이터를 유지하기 위해 전력을 요구하고, 그 중에서도, RAM(devices such as random-access memory), SRAM(static random-access memory), DRAM(dynamic random-access memory), 또는 SDRAM(synchronous dynamic random-access memory)을 포함한다. 비휘발성 메모리는 전력이 공급되지 않을 때 저장된 데이터를 유지할 수 있고, 그 중에서도, 플래시 메모리, ROM(read-only memory), EEPROM(electrically erasable programmable ROM), EPROM(erasable programmable ROM), PCRAM(phase change random access memory), RRAM(resistive random-access memory), 또는 MRAM(magnetoresistive random access memory)과 같은 저항 가변 메모리와 같은 디바이스를 포함한다.
호스트 시스템은 일반적으로 호스트 프로세서, 호스트 프로세서를 지원하기 위한 첫번째 주 메모리 용량(예를 들어, 종종 DRAM과 같은 휘발성 메모리), 및 주 메모리에 추가로 또는 별도로 데이터를 유지하기 위해 추가 저장소를 제공하는 하나 이상의 저장 시스템(예를 들어, 종종 플래시 메모리와 같은 비휘발성 메모리)을 포함한다.
메모리는 일반적으로 가상의 논리적 블록 및 물리적 블록에 의해 설명되고 정리된다. 물리적 블록은 하나 이상의 반도체 다이 내 위치의 실제 물리적 위치로 설명된다. 논리적 블록은 개념적이고, 소프트웨어 환경에서 사용될 수 있다. 이와 같은 메모리 구조에서, 매핑 테이블은 가상 블록이 어떻게 물리적 블록과 연관되는지를 추적하기 위해 사용될 수 있다. 메모리 디바이스는 크기와 복잡성이 증가함에 따라, 메모리 매핑 테이블의 효율을 향상시키기 위한 디바이스 및 방법이 요구된다.
메모리는 일반적으로 가상의 논리 블록에 의해 설명 및 정리되고, 물리적 블록과 연관된다. 물리적 블록은 하나 이상의 반도체 메모리 다이(die)와 같은 하나 이상의 메모리 어레이 내에 실제 물리적 위치로 설명된다. 논리적 블록은 개념적이고, 소프트웨어 환경에서 사용될 수 있다. 이와 같은 메모리 구조에서, 매핑 테이블과 같은 데이터 구조는 가상 블록이 어떻게 물리적 블록과 연관되는지를 추적하기 위해 사용될 수 있다. 메모리 디바이스는 크기와 복잡성이 증가함에 따라, 메모리 매핑 테이블의 효율을 향상시키기 위한 디바이스 및 방법이 요구된다.
반드시 일정한 비율로 도시되어 있지 않은 도면에서, 유사한 번호는 상이한 도면의 유사한 구성요소를 설명할 수 있다. 상이한 문자 접미사를 가진 유사한 숫자는 유사한 구성요소의 다른 인스턴스를 나타낼 수 있다. 도면은 제한이 아닌 예시로서 일반적으로 본 문서에서 논의된 다양한 실시예를 도시한다.
도 1은 호스트 디바이스 및 저장 시스템을 포함하는 예시적인 호스트 시스템을 도시한다.
도 2는 일부 예시적인 실시예에 따른 메모리 디바이스의 블록도를 도시한다.
도 3은 일부 예시적인 실시예에 따른 순차적 매핑 테이블을 도시한다.
도 4는 일부 예시적인 실시예에 따른 예시적인 방법 흐름도를 도시한다.
도 5a-5f는 일부 예시적인 실시예에 따른 일련의 예시적인 순차적 매핑 테이블 동작을 도시한다.
도 6은 일부 예시적인 실시예에 따른 예시적인 순차적 매핑 테이블을 도시한다.
도 7은 일부 예시적인 실시예에 따른 정보 처리 시스템의 예시적인 블록도를 도시한다.
아래의 설명 및 도면은 본 기술분야에서 통상의 지식을 가진 자가 실시할 수 있도록 특정 실시예를 충분히 도시한다. 다른 실시예는 구조적, 논리적, 전기적, 프로세스 및 기타 변경을 통합할 수 있다. 일부 실시예의 부분 및 특징은 다른 실시예의 부분 및 특징에 포함되거나 대체될 수 있다. 청구범위에 기재된 실시예는 그러한 청구범위의 모든 이용가능한 등가물을 포함한다.
플래시 장치와 같은 많은 저장 디바이스는 논리적 요소의 물리적 등가물에 논리적 요소(예를 들어, 페이지 또는 블록)를 매핑하는 변환 테이블("L2P 테이블"이라고 하는 변환 테이블)과 같은 데이터 구조를 사용한다. 이러한 L2P 테이블은 저장 디바이스에 종종 저장되고, 동작 동안, 테이블 또는 그 부분은 컨트롤러의 내부 메모리에 일반적으로 로딩된다. 테이블 크기가 내부 메모리(예를 들어, 컨트롤러의 SRAM(static RAM) 또는 동적 DRAM(dynamic RAM)과 같은 RAM(random access memory))보다 큰 경우, 테이블의 일부는 내부 메모리에 로딩되고 테이블의 나머지는 주 메모리 저장소(일부 실시예에서, NAND 플래시 메모리 저장소)와 같은 다른 저장소에 저장된다. 변환 요청(예를 들어, 논리적-대-물리적(L2P) 매핑)이 내부 메모리에 없는 경우, 컨트롤러는 내부 메모리 부분을 다른 저장소의 적절한 부분으로 교체한다. 이러한 프로세스는 저장 디바이스에 판독 또는 기록하는 것과 같은 동작을 수행할 때 대기 시간을 증가시킬 수 있다.
이러한 문제는 L2P 테이블의 일부를 저장하기 위한 제한된 가용 RAM을 포함하는 디바이스에서 악화되고, 이는 일반적으로 저장될 수 있는 L2P 테이블의 양에 대한 추가적인 제한이 된다. 본 명세서에서 설명된 실시예는 L2P 테이블의 전부 또는 일부의 축소된 크기 표현의 생성 및 사용을 포함한다. 후술하는 예시에서, 다중 순차적 논리적 주소가 다중 순차적 물리적 주소에 대응하는 경우, 대응은 시퀀스의 초기 논리적 주소, 시퀀스의 초기 물리적 주소, 및 순차적으로 대응하는 논리적 및 물리적 주소의 수로 표시될 수 있다.
예를 들어, 순차적 논리적 주소(논리적 블록 어드레스(LBAs)와 같은)에 대응하는 물리적 주소(물리적 블록 어드레스(PBAs)와 같은)의 시퀀스는 다음과 같이 나타낼 수 있다: PBAs의 시퀀스의 초기 블록의 PBA; 순차적인 LBAs의 그룹과 연관된 순차적인 LBAs의 그룹의 초기 블록의 LBA; 및 순차적인 LBAs의 그룹과 연관된 순차적인 PBAs의 수의 표시자. 본 설명의 목적을 위해, 아래에서 선택된 논의된 예시에서, 그러한 표현은 본 명세서에서 "순차적 매핑 테이블"이라고 하는 테이블에 제시될 수 있다. 많은 예시에서, 순차적 매핑 테이블은 비순차적 논리적 및 물리적 주소의 표현을 또한 포함할 것이다.
메모리 디바이스는 개별적인 메모리 다이를 포함하고, 이는 예를 들어, 메모리 셀의 하나 이상의 어레이를 포함하고 하나(또는 이상)의 선택된 저장 기술을 구현하는 저장 영역을 포함한다. 이러한 메모리 다이는 종종 메모리 어레이(들)을 동작시키기 위한 지원 회로부를 포함할 것이다. 때때로 일반적으로 "관리 메모리 디바이스(managed memory devices")로 알려진, 다른 실시예는 하나 이상의 메모리 다이의 동작을 제어하도록 기능적으로 구성된 컨트롤러와 관련된 하나 이상의 메모리 다이의 어셈블리를 포함한다. 이러한 컨트롤러는 이후 본 명세서에서 논의되는 것처럼 "호스트"와 같은 외부 디바이스와의 상호 운영성(interoperability)을 단순화할 수 있다. 이러한 관리 메모리 디바이스에서, 컨트롤러 기능은 메모리 어레이를 또한 통합하는 하나 이상의 다이, 또는 별도의 다이에 구현될 수 있다. 다른 실시예에서, 하나 이상의 메모리 디바이스는 SSD(solid-stage drive) 저장 볼륨을 형성하기 위해 컨트롤러 기능과 결합될 수 있다.
본 개시의 실시예는 "관리 NAND"라고 하는, NAND 플래시 메모리 셀을 구현하는 관리 메모리 디바이스의 예시에서 설명된다. 그러나, 이러한 실시예는 개시의 범위를 제한하지 않으며, 이는 메모리 디바이스의 다른 형태 및/또는 저장 기술의 다른 형태로 구현될 수 있다.
NOR 또는 NAND 아키텍처 반도체 메모리 어레이의 각각의 플래시 메모리 셀은 하나 또는 다수의 프로그램 된 상태로 개별적 또는 집합적으로 프로그램 될 수 있다. 예를 들어, SLC(single-level cell)는 데이터의 하나의 비트를 나타내는, 두 개의 프로그램 된 상태 중 하나(예를 들어, 1 또는 0)를 나타낼 수 있다. 플래시 메모리 셀은 두 개 이상의 프로그램 된 상태를 또한 나타낼 수 있고, 각각의 셀은 하나 이상의 이진수(예를 들어, 1비트 이상)를 나타낼 수 있으므로, 메모리 셀의 수를 늘리지 않고 고밀도 메모리의 제조를 가능하게 한다. 이러한 셀은 다중 상태 메모리 셀, 다중 숫자 셀(multi-digit cells) 또는 다중 레벨 셀(MLCs)로 지칭될 수 있다. 특정 예시에서, MLC는 셀 당 2비트의 데이터(예를 들어, 4개의 프로그램 된 상태 중 하나)를 저장할 수 있는 메모리 셀을 지칭할 수 있고. TLC(triple-level cell)는 셀 당 3비트의 데이터(예를 들어, 8개의 프로그램 된 상태 중 하나)를 저장할 수 있고, QLC(quad-level cell)는 셀 당 4 비트의 데이터를 저장할 수 있다. MLC는 셀 당 1비트 이상의 데이터를 저장할 수 있는(예를 들어, 2개 이상의 프로그램 된 상태를 나타낼 수 있는) 임의의 메모리 셀을 지칭하기 위해, 본 명세서에서 넓은 맥락에서 사용될 수 있다.
관리 메모리 디바이스는 인식된 산업 표준에 따라 구성되고 동작될 수 있다. 예를 들어, 관리 NAND 디바이스는 (비제한적 예시로서) UFS ??(Universal Flash Storage) 디바이스, eMMC??(embedded MMC) 디바이스 등일 수 있다. 예를 들어, 상기 예시의 경우에서, UFS 디바이스는 JEDEC(Joint Electron Device Engineering Council) 표준(예를 들어, JEDEC UFS Flash Storage 3.0 등으로 명명된 JEDEC 표준 JESD223D 및/또는 이러한 표준에 대한 업데이트 또는 후속 버전)에 따라 구성될 수 있다. 유사하게, 식별된 eMMC 디바이스는 다시 "JEDEC eMMC standard 5.1"로 명명된, JEDEC standard JESD84-A51 및/또는 이러한 표준에 대한 업데이트 또는 후속 버전에 따라 구성될 수 있다.
이들 사이에서, SSD는 컴퓨터의 주 저장 디바이스로 사용될 수 있고, 예를 들어, 성능, 크기, 무게, 경고성, 동작 온도 범위 및 전력 소비와 관련하여 움직이는 부품을 가진 기존의 하드 드라이브에 비해 이점을 제공할 수 있다. 예를 들어, SSD는 탐색 시간, 지연 속도, 또는 자기 디스크 드라이브(예를 들어, 전자 기계 등)와 관련된 기타 지연을 줄일 수 있다. SSD는 내부 배터리 공급 요구 사항을 없애기 위해 플래시 메모리 셀과 같은 비 휘발성 메모리 셀을 사용하며, 이에 따라 드라이브가 더 다양하고 소형화 되도록 한다. 예를 들어 관리 NAND 디바이스와 같은, 관리 메모리 디바이스는 다양한 형태의 전자 디바이스에서 기본 또는 보조 메모리로 사용될 수 있고, 모바일 디바이스에 일반적으로 사용된다.
SSD 및 관리 메모리 디바이스 둘 다 다수의 다이 또는 논리적 유닛(예를 들어, 논리적 유닛 번호 또는 LUNs)를 포함하는, 다수의 메모리 디바이스를 포함할 수 있고, 메모리 디바이스를 동작하거나 외부 시스템과 인터페이스하기 위해 요구되는 논리적 기능을 수행하는 하나 이상의 프로세서 또는 다른 컨트롤러를 포함할 수 있다. 이러한 SSD 및 관리 메모리 디바이스는 다수의 메모리 어레이 및 그 위의 주변기기 회로부를 포함하는 하나 이상의 플래시 메모리 다이를 포함할 수 있다. 플래시 메모리 어레이는 다수의 물리적 페이지로 구성된 메모리 셀의 다수의 블록을 포함할 수 있다. 일부 예시에서, SSD는 DRAM 또는 SRAM(또는 다른 형태의 메모리 다이 또는 기타 메모리 구조)를 또한 포함할 수 있다. 유사하게, 관리 NAND는 NAND 저장 어레이와 분리되고, 컨트롤러 내부 또는 분리된, 휘발성 및/또는 비휘발성 메모리의 하나 이상의 어레이를 포함할 수 있다. SSD 및 관리 NAND 디바이스 둘 다 메모리 디바이스 및 호스트 사이에서 데이터를 전송하기 위해 판독 또는 기록 동작, 또는 메모리 디바이스로부터 데이터를 삭제하기 위한 삭제 동작과 같은 메모리 동작과 관련하여 호스트로부터 커맨드를 수신할 수 있다.
도 1은 통신 인터페이스(I/F)(115)(예를 들어, 양방향 병렬 또는 직렬 통신 인터페이스)를 통해 통신하도록 구성된 저장 시스템(110) 및 호스트 디바이스(105)를 포함하는 예시적인 시스템(100)(예를 들어, 호스트 시스템)을 도시한다. 호스트 디바이스(105)는 호스트 프로세서(106)(예를 들어, 중앙 처리 장치(CPU) 또는 다른 프로세서 또는 프로세싱 디바이스) 또는 다른 호스트 회로부(예를 들어, 메모리 관리 유닛(MMU), 인터페이스 회로부, 평가 회로부(107) 등)를 포함할 수 있다. 특정 예시에서, 호스트 디바이스(105)는 주 메모리(108)(예를 들어, DRAM 등) 및 선택적으로 호스트 프로세서(106)의 동작을 지원하기 위해 정적 메모리(109)를 포함할 수 있다.
저장 시스템(110)은 범용 플래시 저장(universal flash storage, UFS) 디바이스, 내장 MMC(eMMC??) 디바이스, 또는 하나 이상의 다른 메모리 디바이스를 포함할 수 있다. 예를 들어, 저장 시스템(110)이 UFS 디바이스를 포함하는 경우, 통신 인터페이스(115)는 앞서 나타낸 JEDEC UFS 표준에서 정의된 바와 같은, 직렬 양방향 인터페이스를 포함할 수 있다. 다른 예시에서, 저장 시스템(110)이 eMMC 디바이스를 포함하는 경우, 통신 인터페이스(115)는 앞서 나타낸 EDEC eMMC 표준에서 정의된 바와 같은, 하나 이상의 커맨드 라인 및 다수의 병렬 양방향 데이터 라인(예를 들어, DAT[7:0])을 포함할 수 있다. 다른 예시에서, 저장 시스템(110)은 하나 이상의 다른 메모리 디바이스를 포함할 수 있거나, 통신 인터페이스(115)는 호스트 디바이스(105) 및 저장 시스템(110)에 따라, 하나 이상의 다른 인터페이스를 포함할 수 있다.
저장 시스템(110)은 메모리 컨트롤러(111) 및 비 휘발성 메모리(112)를 포함할 수 있다. 예시에서, 비 휘발성 메모리는 하나 이상의 플래시 메모리 디바이스와 같은 다수의 메모리 디바이스(예를 들어, 다이 또는 LUNs)를 포함할 수 있고, 각각은 그 위에 주변기기 회로부를 포함하고, 메모리 컨트롤러(111)에 의해 제어된다.
플래시 메모리 디바이스는 일반적으로 1-레지스터, 플로팅 게이트 메모리 셀의 하나 이상의 그룹을 포함한다. 플래시 메모리 어레이 아키텍처의 2개의 일반적 유형은 NAND 및 NOR 아키텍처를 포함한다. 메모리 어레이의 플로팅 게이트 메모리 셀은 일반적으로 매트릭스로 배열된다. 어레이의 행(row)에 있는 각 메모리 셀의 게이트는 액세스 라인(예를 들어, 워드 라인)에 결합된다. NOR 아키텍처에서, 어레이의 열(column)에 있는 각 메모리 셀의 드레인은 데이터 라인(예를 들어, 비트 라인)에 결합된다. NAND 아키텍처에서, 어레이의 열에 있는 각 메모리 셀의 드레인은 소스 라인과 비트 라인 사이에서 소스 대 드레인으로 직렬로 서로 결합된다.
NOR, NAND, 3D 크로스 포인트(3D Cross Point), FeRAM(Ferroelectric RAM), MRAM, 또는 하나 이상의 다른 아키텍처 반도체 메모리 어레이의 각 메모리 셀은 하나 또는 다수의 프로그램 된 상태에 개별적 또는 집합적으로 프로그램 될 수 있다. SLC(single-level cell)는 두 개의 프로그램 된 상태(예를 들어, 1 또는 0) 중 하나로 셀 당 1 비트의 데이터를 나타낼 수 있다. MLC(multi-level cell)는 다수의 프로그램 된 상태로 셀 당 2비트 이상의 데이터를 나타낼 수 있다 (예를 들어, 여기서 n은 데이터의 비트 수이다). 특정 예시에서, MLC는 4개의 프로그램 된 상태 중 하나로 2비트의 데이터를 저장할 수 있는 메모리 셀을 지칭할 수 있다. TLC(triple-level cell)는 8개의 프로그램 된 상태 중 하나로 셀 당 3비트의 데이터를 나타낼 수 있다. QLC(quad-level cell)는 16개의 프로그램 된 상태 중 하나로 셀 당 4비트의 데이터를 나타낼 수 있다. 표현 언어나 문맥에 의해 달리 명확하게 표시되지 않는 한, MLC는 셀 당 1비트 이상의 데이터를 저장할 수 있는(예를 들어, 2개 이상의 프로그램 된 상태를 나타낼 수 있는) 메모리 셀을 지칭하기 위해 본 명세서에서 넓은 문맥으로 사용된다.
저장 시스템(110)은 멀티미디어 카드(MMC) 솔리드 스테이트 디바이스(예를 들어, 마이크로 보안 디지털(SD) 카드 등)를 포함할 수 있다. MMC 디바이스는 호스트 디바이스(105)를 가진 다수의 병렬 인터페이스(예를 들어, 8비트 병렬 인터페이스)를 포함하고, 호스트 디바이스로부터 구성 요소를 종종 제거 가능하고 분리된다. 대조적으로, eMMC(embedded MMC) 디바이스는 회로 보드에 부착되고 SSD 디바이스에 기초하는 SATA(serial ATA)에 필적하는 판독 속도를 가진, 호스트 디바이스의 구성요소로 간주된다. 가상 또는 증강 현실 디바이스를 완전히 활성화하고, 증가하는 네트워크 속도를 활용하는 등과 같은 모바일 디바이스 성능에 대한 요구가 계속 증가함에 따라, 저장 시스템은 병렬에서 직렬 통신 인터페이스로 이동했다. 컨트롤러 및 펌웨어를 포함하는 UFS 디바이스는 전용 판독/기록 경로를 가진 저전력 차동 신호(low-voltage differential signaling, LVDS) 직렬 인터페이스를 이용하여 호스트 디바이스와 통신하여, 호스트 디바이스와 저장 시스템 사이의 판독/기록 속도를 더욱 향상시킨다.
3차원(3D) 아키텍처 반도체 메모리 디바이스 기술에서, 수직 플로팅 게이트 또는 전하 트래핑 저장 구조가 적층 될 수 있으며, 계층, 물리적 페이지의 수 및 이에 따른 메모리 디바이스의 메모리 셀의 밀도를 증가시킬 수 있다.
데이터는 종종 작은 단위로서 저장 시스템에 임의로 저장된다. 단일 유닛으로서 액세스 되더라도, 데이터는 소량의, 무작위 4-16k 단일 파일 판독으로 수신될 수 있다(예를 들어, 동작의 60%-80%가 16k보다 작음). 사용자는 물론 커널 애플리케이션도 데이터가 순차적인 응집 단위로서 저장될 수 있음을 나타내기 어렵다. 파일 시스템은 일반적으로 순차적인 검색 공간이 아닌 공간 사용을 최적화하도록 설계된다.
메모리 컨트롤러(111)는 호스트 디바이스(105)로부터 명령어를 수신할 수 있고, 비 휘발성 메모리 어레이(112)의 하나 이상의 메모리 셀에 데이터를 전송(예를 들어, 기록 또는 삭제)하거나 그로부터 데이터를 전송(예를 들어, 판독)하기 위해 비 휘발성 메모리(112)와 통신할 수 있다. 메모리 컨트롤러(111)는 무엇보다도, 다수의 구성요소 또는 집적회로와 같은 회로부 또는 펌웨어를 포함할 수 있다. 예를 들어, 메모리 컨트롤러(111)는 메모리 어레이에 걸친 액세스를 제어하고 호스트 디바이스(105)와 저장 시스템(100) 사이에 변환 계층을 제어하도록 구성된 하나 이상의 메모리 제어 유닛, 회로 또는 구성요소를 포함할 수 있다.
비 휘발성 메모리 어레이(112)(예를 들어, 3D NAND 아키텍처 반도체 메모리 어레이)는 예를 들어, 다수의 디바이스, 플레인, 블록 및/또는 물리적 페이지에 배열된 다수의 메모리 셀을 포함할 수 있다. 하나의 예로서, TLC 메모리 디바이스는 페이지 당 18,592 바이트(B)의 데이터, 블록 당 1536 페이지, 플레인 당 548 블록, 및 디바이스 당 4 플레인을 포함할 수 있다. 다른 예시로서, 셀 당 2비트 MLC 메모리 디바이스는 페이지 당 18,592 바이트(B)의 데이터, 블록 당 1024 페이지, 플레인 당 548 블록, 및 디바이스 당 4 플레인을 포함할 수 있으나, 대응하는 TLC메모리 디바이스로 절반의 요구되는 기록 시간 및 두 배의 프로그램/삭제(P/E) 사이클을 가진다. 다른 예시는 다른 숫자나 배열을 포함할 수 있다.
동작 시, 데이터는 일반적으로 페이지의 저장 시스템(110)에 기록되거나 그로부터 판독되고 블록에서 삭제된다. 그러나, 하나 이상의 메모리 동작(예를 들어, 판독, 기록, 삭제 등)은 원하는 대로 더 크거나 더 작은 메모리 셀 그룹에서 수행될 수 있다. 예를 들어, 오프로드 유닛에서 태그된 데이터의 부분 업데이트는 효율적으로 재기록 될 수 있도록 하기 위해 데이터 마이그레이션(data migration) 또는 가비지 수집(garbage collection) 중에 수집될 수 있다. 메모리 디바이스의 데이터 전송 크기는 일반적으로 페이지로 언급되는 반면, 호스트 디바이스의 데이터 전송 크기는 일반적으로 섹터라고 언급된다. 비록 데이터의 페이지는 사용자 데이터의 다수의 바이트(예를 들어, 데이터의 다수의 섹터를 포함하는 데이터 페이로드(payload)) 및 그에 대응하는 메타 데이터를 포함할 수 있고, 페이지의 크기는 종종 사용자 데이터를 저장하는데 사용된 바이트 수만을 언급할 수 있다. 예시로서, 4KB의 페이지 크기를 가진 데이터 페이지는 4KB의 사용자 데이터(예를 들어, 512B의 섹터 크기를 가정하는 8개의 섹터)뿐만 아니라 무결성 데이터(예를 들어, 오류 감지 또는 정정 코드 데이터), 주소 데이터(예를 들어, 논리적 주소 데이터, 등) 또는 사용자 데이터와 관련된 기타 메타 데이터와 같은 사용자 데이터에 대응하는 메타 데이터의 바이트 수(예를 들어, 32B, 54B, 224B 등)를 포함할 수 있다.
메모리 셀 또는 메모리 어레이의 상이한 유형은 상이한 페이지 크기를 제공할 수 있거나, 이와 관련된 상이한 양의 메타 데이터를 요구할 수 있다. 예를 들어, 상이한 메모리 디바이스 유형은 상이한 비트 오류율을 가질 수 있고, 이는 데이터의 페이지의 무결성을 보장하기 위해 필요한 메타 데이터의 양이 상이할 수 있다(예를 들어, 더 높은 비트 오류율을 가진 메모리 디바이스는 더 낮은 비트 오류율을 가진 메모리 디바이스 보다 더 많은 바이트의 오류 정정 코드 데이터를 요구할 수 있다.). 예시처럼, MLC NAND 플래시 디바이스는 대응하는 SLC NAND 플래시 디바이스보다 더 높은 비트 오류율을 가질 수 있다. 이와 같이, MLC 디바이스는 대응하는 SLC 디바이스보다 오류 데이터에 대해 더 많은 메타 데이터 바이트를 요구할 수 있다.
도 2는 도 1의 저장 시스템(110)의 예시적인 구현인 메모리 디바이스(200)의 블록도를 나타낸다. 컨트롤러(211)는 상호연결(214)을 통해 플래시 메모리 저장 어레이(212)에 결합된 것으로 도시된다. 도시된 예시에서, 컨트롤러(211) 및 플래시 메모리 저장 어레이(212) 둘 다 공통 기판(202)에 결합된다. 기판(202)은 마더보드 또는 컴퓨팅 디바이스의 다른 중간 기판에 연결되도록 구성될 수 있다. 연결은 인-라인 메모리 소켓과 같은 소켓 또는 솔더 범프 연결 등을 포함할 수 있다.
플래시 메모리 저장 어레이(212)의 일 예시는 NAND 저장 어레이를 포함한다. 플래시 메모리 저장 어레이(212)는 증가된 메모리 저장 용량을 위해 제공되는 다중 다이를 포함할 수 있다. 일 예시에서, 다중 다이는 다이를 위해 요구되는 물리적 공간의 양을 감소하기 위해 적층되나, 발명은 이에 제한되지 않는다. 다른 예시는 기판에 나란히 장착된 다이를 포함할 수 있다. 선택적 예시에서, 다이의 다중 스택은 플래시 메모리 저장 어레이(212)의 부분으로서 기판에 나란히 위치될 수 있다. NAND 이외의 다른 논리적 구성, 예를 들어, NOR 또는 메모리 셀의 다른 논리적 구성이 또한 사용될 수 있다.
컨트롤러(211)는 도 4-6을 참조하여 아래에서 설명된 예시적인 방법을 포함하는, 본 명세서에서 설명된 메모리 매핑 방법을 수행하도록 구성된다(예를 들어, 하드웨어 및/또는 소프트웨어 구현). 예를 들어, 컨트롤러(211)는 본 명세서에서 설명된 메모리 매핑 방법을 수행하기 위한 명령어를 저장한다. 본 예시에서, 명령어는 펌웨어(213)에 포함된다. 일 예시에서, 펌웨어(213)는 본 개시에서 설명된 것처럼 순차적 매핑 테이블(216)과 상호작용하도록 구성된다. 도 2의 예시에서, 순차적 매핑 테이블(216)은 플래시 메모리 저장 어레이(212) 내에 저장된다.
일 예시에서, 펌웨어(213)는 순차적 매핑 테이블(216)에 액세스하도록 구성된다. 일 예시에서, 펌웨어(213)는 순차적 매핑 테이블(216)에 기록하도록 구성된다. 일 예시에서, 펌웨어(213)는 순차적 매핑 테이블(216)을 생성하도록 구성된다. 일 예시에서, 펌웨어(213)는 순차적 매핑 테이블(216)을 편집 및/또는 수정하도록 구성된다. 일 예시에서, 펌웨어(213)는 개별적인 매핑 테이블(218)과 또한 상호작용하도록 구성된다. 펌웨어(213) 및 개별적인 매핑 테이블(218)의 상호작용 기능은 위에서 설명된 순차적 매핑 테이블과 유사하며, 액세스, 기록, 생성, 편집, 수정 등을 포함한다.
일 예시에서, 버퍼(222)는 컨트롤러(211)에 포함된다. 일 실시예에서, 펌웨어(213)는 매핑 테이블을 변경하는 기록 동작 및 삭제 동작과 같은 메모리 동작을 추적하기 위해 동작 동안 버퍼(222)를 활용하기 위해 컨트롤러(211)의 프로세서에 의해 실행될 수 있는 명령어를 포함한다. 정해진 시간에서, 버퍼(222)의 콘텐츠는 가장 최신의 매핑 정보를 저장하기 위해 순차적 매핑 테이블(216)에 기록될 수 있다. 버퍼를 활용하는 더 상세한 예시는 아래에서 더 상세히 설명된다.
일 예시에서, 캐시(224)는 컨트롤러(211)에 포함된다. 일 예시에서, 펌웨어(213)는 메모리 디바이스(200) 시작 시 캐시(224)로 순차적 매핑 테이블(216)을 로딩하기 위해 컨트롤러(211)의 프로세서에 의해 실행될 수 있는 명령어를 포함한다. 일 예시에서, 캐시(224)는 더 빠른 형태의 메모리, 예를 들어, SRAM(static random access memory)이다. 일 예시에서, 메모리 디바이스(200)의 전원이 꺼지면, 순차적 매핑 테이블(216)은 캐시(224)에서 메모리 저장 어레이(212)로 다시 기록된다.
도 3은 도 2의 메모리 디바이스(200)과 같은 메모리 디바이스를 동작하는데 활용될 수 있는 개별적인 매핑 테이블(310) 및 순차적 매핑 테이블(300)을 도시한다. 개별적인 매핑 테이블(310)에서, 제1 열(312)는 논리적 블록 어드레스(LBA)를 기록하고 제2 열(314)는 대응하는 물리적 주소(PPA)를 기록한다. LBA의 단일 저장 블록과 PPA의 단일 저장 블록 사이에는 개별적인 매핑 테이블(310)에서 일대일 대응이 존재한다. 개별적인 디스크립터(316)는 이러한 일대일 관계를 매핑한다. 각각의 개별적인 디스크립터는 하나의 LBA 및 하나의 PPA를 포함한다.
도시된 예시에서, 순차적 기록 동작은 개별적인 디스크립터의 그룹(318)에 의해 표현된다. 일 예시에서, 기록된 데이터의 순차적인(즉, 연속적인) 블록은 개별적인 LBAs 및 PPAs의 목록이 아니라 시작 주소 및 길이와 함께 순차적 매핑 테이블에 저장된다.
순차적 매핑 테이블(300)은 순차 기록을 위한 논리적 블록 시작 위치를 포함하는 제1 열(302), 대응하는 물리적 블록 시작 위치를 포함하는 제2 열(304), 및 순차 기록 동작의 길이가 얼마나 많은 블록인지를 기록하는 길이 열(306)을 도시한다.
도 3에서 알 수 있는 바와 같이, 개별적인 매핑 테이블(310)의 길이 그룹(318)은 단일 순차 디스크립터(301)로 크기가 상당히 감소된다. 대부분의 메모리 동작에서, 많은 수의 데이터 기록이 순차적일 것이다. 설명된 것처럼 순차적 매핑 테이블을 사용하면, 비록 순차적 매핑 테이블이 데이터의 원하는 블록을 찾는데 필요한 모든 정보가 포함되더라도, 순차적 매핑 테이블의 크기는 개별적인 매핑 테이블보다 현저하게 작을 수 있을 것이다.
일부 시스템에서, DRAM(dynamic random access memory)은 플래시 메모리 디바이스 내에 위치된다. DRAM 메모리는 플래시 메모리 어레이보다 액세스가 더 빠르다. 이와 같이, 개별적인 매핑 테이블(310)과 같은, 로컬 DRAM 메모리에 로딩된 매핑 테이블은 플래시 메모리 어레이에 저장된 데이터에 더 빠른 액세스를 제공한다. 그러나, DRAM 메모리는 이러한 시스템에 비용을 추가한다. 따라서, 다른 시스템에서, 로컬 DRAM 메모리는 제조 가격을 절감하기 위해 제거되고, 개별적인 매핑 테이블(310)과 같은 매핑 테이블의 작은 부분은 메모리 컨트롤러 내에서, 도 2의 캐시(224)와 같은 작은 캐시에 로딩된다. 일부 예시에서, 캐시(224)의 크기는 제한된다. 예를 들어, 캐시(224)의 크기는 개별적인 매핑 테이블(310)의 전체(예를 들어, 선택된 작은 부분)보다 작은 것이 동작 동안 캐시(224) 내에 로딩될 수 있도록 할 수 있다. 캐시의 제한된 크기로 인해, 캐시의 매핑 테이블의 선택된 작은 부분은 주어진 판독 요청에 필요한 부분이 아닐 수 있다. 이러한 상황에서, 컨트롤러는 플래시 메모리 어레이로부터 로딩되도록 매핑 테이블의 상이한 부분을 요청할 수 있고, 그러면 판독 요청이 완료될 수 있다. 캐시를 교체하고 매핑 테이블의 일부를 재로딩하는 이러한 동작은 오래 걸린다.
위에서 설명된 것처럼, 순차적 매핑 테이블(300)과 같은 순차적 매핑 테이블의 예시를 이용하여, 더 큰 부분 또는 전체 순차적 매핑 테이블이 메모리 컨트롤러의 캐시 메모리에 저장될 수 있다. 개별적인 매핑 테이블(310)과 비교하여, 순차적 매핑 테이블(300)의 상당히 감소된 크기가 도 3에 도시된다. 이러한 방식으로, 로컬 DRAM 메모리는 비용을 절감하기 위해 제거될 수 있고, 캐시에서 매핑 테이블 부분을 자주 교체하는 비교적 긴 동작이 감소되거나 제거될 수 있다. 일부 예시에서, 저장 시스템(110) 및/또는 메모리 디바이스(200)은 DRAM을 포함하지 않는다.
일 예시에서, 상당한 양의 데이터가 순차 기록으로서 플래시 메모리 어레이에 저장된다. 이와 같이, 상당한 양의 매핑이 위의 예시에서 설명된 것처럼 순차적 매핑 테이블로서 저장될 수 있다. 일부 예시에서, 일부 나머지 기록이 여전히 개별적인 기록일 수 있다. 일 예시에서, 개별적인 매핑 테이블이 나머지 비 순차적 기록을 설명하기 위해 순차적 매핑 테이블에 추가로 포함된다. 순차적 매핑 테이블 및 개별적인 매핑 테이블 모두를 가진 예시에서, 위에서 설명된 것처럼, 순차적 매핑 테이블의 감소된 크기로 인해 주어진 양의 매핑 테이블 또는 테이블들을 보유하는데 필요한 캐시의 크기가 감소된다.
도 4는 일 예시에 따른 메모리 디바이스의 동작의 방법을 도시한다. 도 4의 방법은 예를 들어, 위에서 설명된 것처럼, 시스템(110) 또는 메모리 디바이스(200)와 같은 메모리 디바이스에 의해 수행될 수 있고, 일부 예시에서는 메모리 디바이스(200)의 216으로 표시된 순차적 매핑 테이블을 생성하고 사용하도록 구현될 수 있으며, 일부 예시에서는 도 3의 300으로 표시된 바와 같이 일반적으로 형성될 수 있다. 동작(402)에서, 순차적 매핑 테이블(예를 들어, 순차적 매핑 테이블(216))은 메모리 디바이스(예를 들어, 시스템(110) 또는 디바이스(200))의 플래시 메모리(예를 들어, 플래시 메모리 저장 어레이(212))에 저장된다. 순차적 매핑 테이블은 논리적 블록 시작 위치를 포함하도록 저장된다. 동작(404)에서, 순차적 매핑 테이블은 물리적 블록 시작 위치를 포함하도록 저장된다. 동작(406)에서, 순차적 매핑 테이블은 순차적 블록 기록 길이를 포함하도록 저장된다. 동작(408)에서, 순차적 매핑 테이블은 메모리 디바이스 시작 시 컨트롤러 캐시(예를 들어, 캐시(224))에 로딩된다.
일 예시에서, 순차적 매핑 테이블은 매핑 필드에 저장된 모든 0으로 생성된다(예를 들어, 메모리 디바이스가 제조되는 시점에서). 동작 시, 메모리 컨트롤러의 펌웨어는 시스템의 동작 동안 순차 기록이 수행됨으로써 순차적 매핑 테이블에 엔트리를 생성하기 위해 컨트롤러의 프로세스에 의해 실행될 수 있는 명령어를 포함한다. 전원이 켜지는 일 예시에서, 순차적 매핑 테이블은 메모리 컨트롤러 내에 위치된 캐시 내의 플래시 메모리 어레이로부터 로딩된다. 예를 들어, 순차적 매핑 테이블의 대부분 또는 전체는 캐시에 로딩된다. 그러면 순차적 매핑 테이블의 전체 또는 대부분이 캐시 내에 맞기(fit) 때문에 캐시는 플래시 메모리 어레이 내에 위치를 빠르게 액세스할 수 있다.
동작 동안, 새로운 기록이 메모리 컨트롤러에 의해 수행될 수 있다. 새로운 기록이 순차 기록인 경우, 메모리 컨트롤러는 순차 기록이 얼마나 긴지 확인할 수 있다. 일 예시에서, 메모리 컨트롤러는 그러면 순차적 매핑 테이블의 다른 순차 기록과 비교하여 새로운 기록이 얼마나 긴지 확인하기 위해 순차적 매핑 테이블을 확인할 수 있다. 일 예시에서, 새로운 기록이 순차적 매핑 테이블에서 가장 짧은 기존 엔트리의 길이 보다 크거나 같은 경우에만 새로운 기록이 순차적 매핑 테이블에 추가될 것이다. 메모리 디바이스가 꺼지면, 순차적 매핑 테이블(예를 들어, 가장 최근에 추가/업데이트된 엔트리를 가진)은 캐시에서 플래시 메모리 저장 어레이(예를 들어, 플래시 메모리 저장 어레이(212))로 저장된다. 이후 메모리 디바이스의 전원을 켜면, 가장 최근에 저장된 순차적 매핑 테이블이 플래시 메모리 저장 어레이에서 캐시로 로딩된다.
판독 동작의 일 예시에서, 메모리 컨트롤러는 순차적 매핑 테이블에서 엔트리 중 하나의 범위 내에 요청된 데이터가 있는지를 확인하기 위해 순차적 매핑 테이블을 우선 확인할 것이다. 요청된 데이터가 순차적 매핑 테이블의 엔트리 중 하나에 포함된 것으로 판단되면, 데이터는 매핑 엔트리에 따라 검색될 것이다. 일 예시에서, 요청된 데이터가 순차적 매핑 테이블의 엔트리 중 하나에 포함되지 않은 것으로 판단된 경우, 개별적인 매핑 테이블이 검색될 수 있다. 개별적인 매핑 테이블의 추가적인 엔트리가 필요한 경우, 메모리 컨트롤러는 플래시 메모리 어레이로부터 개별적인 매핑 테이블의 일부를 호출하고 플래시 메모리 어레이 내의 위치가 결정되면 데이터 판독 동작을 완료할 수 있다. 일부 개별적인 매핑 테이블 검색이 여전히 필요할 수 있으나, 많은 데이터 기록이 순차적이기 때문에, 설명된 것처럼 순차적 매핑 테이블을 이용하는 것은 대부분의 요청된 데이터를 검색하는데 필요한 시간을 크게 감소시킨다.
이러한 상황이 흔하지 않으나, 일 예시에서, 예기치 않은 전원 손실이 동작 중 발생하면, 메모리 컨트롤러는 순차적 매핑 테이블을 모두 0으로 재설정할 수 있다. 이는 예기치 않은 전원 손실에서, 메모리 컨트롤러가 전원이 꺼진 후 플래시 메모리 어레이에 업데이트된 순차적 매핑 테이블을 저장할 수 없기 때문에, 순차적 매핑 테이블의 손상을 방지한다.
도 5a-5f는 상기에서 설명된 것처럼 순차적 매핑 테이블의 예시적인 동작을 도시한다. 도 5a에서, 일시적 매핑 디스크립터(TMD)(502)는 시작 시 모두 0으로 초기화된다. 기록이 수행된 다음, 0x200의 대응하는 PPA와 함께, 0x100 LBA가 TMD(502)에 기록된다.
도 5b에서, 0x101의 또 다른 LBA가 순차 기록으로서 기록되고 PPA 0x201이 대응하여 기록된다. TMD는 "1"의 길이에서 "2"의 길이로 업데이트된다.
도 5c에서, 또 다른 기록이 LBA 0x90 및 PPA0x202에 대해 수행된다. 이 기록이 순차적이지 않으므로, 일시적 매핑 디스크립터(TMD)에 기록되지 않는다. 도 5c에서, 예시적인 순차적 매핑 테이블(504)이 모두 0으로서 초기화되고, 도 5a 및 5b의 TMD가 순차적 매핑 테이블(504)의 매핑 디스크립터(503)에 기록된다. 도 5c-5f의 순차적 매핑 테이블(504)는 도시의 용이함을 위해 단지 4개의 매핑 디스크립터를 가진 것으로 도시된다. 실제로는 더 큰 순차적 매핑 테이블(504)이 사용될 수 있다. 도 5c에서, 순차적 매핑 테이블(504)가 0으로 초기화되기 때문에, TMD 데이터는 제1 MD 슬롯(MD0)에 기입된다.
도 5d는 상이한 상태의 순차적 매핑 테이블(504)을 도시하며, 여기서 모두 4개의 예시적인 매핑 디스크립터(503)가 채워진다. 도 5d의 예시에서, 도 5b의 TMD가 순차적 매핑 테이블(504)에 기록되면, 테이블(504)은 기록되기 위한 TMD 와 기존 MDs(503) 사이에 어떠한 중복이 있는지 알아보기 위해 우선 검사된다. 도 5d에서, 중복이 없으므로, 0x100, 0x200, 2의 TMD는 MD3에 기록된다. 그 길이가 "1"이고 새로운 TMD 길이가 "2"이므로, 이전 MD3 엔트리 0x90, 0x60, 1는 덮어 기록(overwritten)된다. 이러한 방식에서, 가장 높은 볼륨 엔트리만 순차적 매핑 테이블(504)에 저장되므로, 더 낮은 볼륨 엔트리는 덮어 기록된다. 더 낮은 볼륨 엔트리에 대한 매핑은 기존 테이블에 저장된 상태로 남아 있을 수 있고 순차적 매핑 테이블(504)을 사용하지 않고 액세스될 수 있다.
도 5e는 예시적인 순차적 매핑 테이블(504)를 도시하고, 여기서 0x100, 0x200, 2의 제안된 TMD는 순차적 매핑 테이블(504)의 모든 4개의 MDs(503)보다 더 짧다. 일 예시에서, 순차적 매핑 테이블(504)의 효율성을 최대화하기 위해, 이미 더 긴 순차 엔트리로 가득 차 있기 때문에, 0x100, 0x200, 2의 엔트리 TMD는 순차적 매핑 테이블(504)에 추가되지 않을 것이다.
도 5f는 예시적인 순차적 매핑 테이블(504)을 도시하고, 여기서 0x100, 0x200, 2의 제안된 TMD는 0xF0, 0x104, 20의 기존 MD3와 중첩된다. 이 경우, TMD는 MD3에 덮어 기록된다.
도 6은 예시적인 순차적 매핑 테이블(604)를 도시한다. 도 6의 예시에서, 판독 요청은 순차적 매핑 테이블(604)에서 0x35의 LBA를 찾고 있다. MD1에 기초하여, MD1에 대응하는 LBA(0x30, 0x3a)의 범위 내에서 0x35의 LBA가 결정된다. 이러한 예시에서, 0x25의 대응하는 PPA는 MD1에 기초한 순차적 매핑 테이블(604)로부터 결정된다.
도 7은 위의 예시에서 설명된 것처럼 메모리 디바이스 또는 시스템을 포함할 수 있는 예시적인 머신(700)의 블록도를 도시한다. 머신(700)은 도 3 및 5a-f와 관련하여 위에서 설명된 것처럼 컨트롤러의 프로세서에 의해 실행될 때 순차적 매핑 테이블을 생성 및/또는 그와 상호작용하는 명령어를 포함하는 펌웨어를 포함할 수 있다. 머신(700)은 위에서 설명된 것처럼 순차적 매핑 테이블을 활용하는 방법을 수행할 수 있다.
대안적인 실시예에서, 머신(700)은 독립형 디바이스로서 동작하거나 다른 머신에 연결(예를 들어, 네트워크)될 수 있다. 네트워크 배치에서, 머신(700)은 서버-클라이언트 네트워크 환경에서 서버 머신, 클라이언트 머신 또는 둘 모두의 능력으로 동작할 수 있다. 일 예시에서, 머신(700)은 P2P(peer-to-peer)(또는 다른 분산) 네트워크 환경에서 피어 머신으로서 동작할 수 있다. 머신(700)은 퍼스널 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), PDA(personal digital assistant), 모바일 전화기, 웹 어플라이언스(web appliance), IoT 디바이스, 자동차 시스템 또는 해당 시스템에 의해 수행되도록 행동을 지정하는 명령어(순차적 또는 기타)를 실행할 수 있는 임의의 머신일 수 있다. 또한, 단일 머신만 도시되어 있지만, "머신"이라는 용어는 클라우드 컴퓨팅, SaaS(software as a service), 다른 컴퓨터 클러스터 구성과 같은, 본 명세서에서 논의된 방법론 중 하나 이상을 수행하기 위해 명령어의 집합(또는 다중 세트)를 개별적 또는 공동으로 실행하는 머신의 임의의 집합을 포함하는 것으로 간주될 수 있다.
본 명세서에서 설명된 것처럼, 예시는 로직, 구성요소, 디바이스, 패키지 또는 메커니즘을 포함하거나 이에 의해 동작할 수 있다. 회로부는 하드웨어(예를 들어, 단순 회로, 게이트 로직 등)를 포함하는 개별 개체로 구현되는 회로의 집합(예를 들어, 세트)이다. 회로부 멤버쉽(membership)은 시간과 기본적인 하드웨어 가변성에 따라 유동적일 수 있다. 회로부는 단독 또는 조합으로, 동작 시 특정 작업을 수행할 수 있는 구성을 포함한다. 일 예시에서, 회로부의 하드웨어는 특정 작업을 수행하도록 불변하게 설계될 수 있다(예를 들어, 하드웨어에 내장된). 일 예시에서, 회로부의 하드웨어는 특정 동작의 명령어를 인코딩하기 위해 물리적으로 수정된 컴퓨터 판독가능한 매체(예를 들어, 자기적으로, 전기적으로, 불변 질량 입자의 이동가능한 배치 등)를 포함하는 가변적으로 연결된 물리적 구성요소(예를 들어, 실행 유닛, 트랜지스터, 단순 회로 등)를 포함할 수 있다. 물리적 구성 요소를 연결할 때, 하드웨어 구성요소의 기본 전기적 특성은 예를 들어, 절연체에서 도체 또는 그 반대로 변경된다. 명령어는 참여 하드웨어(예를 들어, 실행 유닛 또는 로딩 머신)가 동작 중 특정 작업의 일부를 수행하기 위해 가변 연결을 통해 하드웨어의 회로부의 구성을 생성하도록 할 수 있다. 따라서, 컴퓨터-판독가능한 매체는 디바이스가 동작할 때 회로부의 다른 구성요소에 통신 가능하게 결합된다. 일 예시에서, 물리적 구성요소 중 임의의 것은 하나 이상의 회로부 중 하나 이상의 구성에서 사용될 수 있다. 예를 들어, 동작 중, 실행 유닛은 한 시점에서 제1 회로부의 제1 회로에서 사용될 수 있고 제1 회로부의 제2 회로 또는 상이한 시점에서 제2 회로부의 제3 회로에 의해 재사용될 수 있다.
머신(700)(예를 들어, 컴퓨터 시스템, 호스트 시스템 등)은 프로세싱 디바이스(702)(예를 들어, 하드웨어 프로세서, 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 하드웨어 프로세서 코어, 또는 이들의 임의 조합 등), 주 메모리(704)(예를 들어, ROM(read-only memory), SDRAM(synchronous DRAM) 또는 RDRAM(Rambus DRAM)과 같은 DRAM(dynamic random-access memory) 등), 정적 메모리(706)(예를 들어, SRAM(static random-access memory) 등), 및 저장 시스템(718)을 포함할 수 있고, 이들 중 일부 또는 전부는 통신 인터페이스(730)(예를 들어, 버스)를 통해 서로 통신할 수 있다.
프로세싱 디바이스(702)는 마이크로프로세서, 중앙 처리 장치 등과 같은 하나 이상의 범용 목적 프로세싱 디바이스를 나타낼 수 있다. 보다 구체적으로, 프로세싱 디바이스는 CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서, 또는 다른 명령어 세트를 구현하는 프로세서 또는 명령어 세트의 조합을 구현하는 프로세서일 수 있다. 프로세싱 디바이스(702)는 또한 ASIC(application specific integrated circuit), FPGA(field programmable gate array), DSP(digital signal processor), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 프로세싱 디바이스일 수 있다. 프로세싱 디바이스(702)는 본 명세서에서 논의된 동작 및 단계를 수행하기 위한 명령어(726)를 실행하도록 구성될 수 있다. 컴퓨터 시스템(700)은 네트워크(720)에 거처 통신하기 위해 네트워크 인터페이스 디바이스(708)를 더 포함할 수 있다.
저장 시스템(718)은 머신-판독가능한 저장 매체(또한 컴퓨터-판독가능한 매체로 알려진)를 포함할 수 있고 이는 본 명세서에서 설명된 임의의 하나 이상의 방법론 또는 기능을 구현하는 하나 이상의 명령어(726)의 세트 또는 소프트웨어가 저장된다. 명령어(726)는 완전히 또는 적어도 부분적으로, 컴퓨터 시스템(700)에 의해 그 실행되는 동안 주 메모리(704) 내에 또는 프로세싱 디바이스(702)내에 또한 상주할 수 있고, 주 메모리(704) 및 프로세싱 디바이스(702)는 또한 머신-판독가능한 저장 매체를 또한 구성한다.
"머신-판독가능한 저장 매체"라는 용어는 하나 이상의 명령어의 세트를 저장하는 단일 매체 또는 다중 매체, 또는 머신에 의한 실행을 위한 명령어 세트를 저장하거나 인코딩할 수 있고 머신이 본 개시의 임의의 하나 이상의 방법론을 수행하도록 하는 임의의 매체를 포함하는 것으로 간주되어야 한다. "머신-판독가능한 저장 매체"라는 용어는 따라서 솔리드 스테이트 메모리, 광학 매체 및 자기 매체를 포함하지만 이에 제한되지 않는 것으로 간주되어야 한다. 일 예시에서, 질량 머신-판독 가능한 매체는 불변(예를 들어, 정지) 질량을 가진 복수의 입자를 갖는 기계-판독 가능한 매체를 포함한다. 따라서, 질량 머신-판독가능한 매체는 일시적인 전파 신호가 아니다. 질량 기계-판독가능한 매체의 특정 예시는 다음을 포함한다: 반도체 메모리 디바이스와 같은 비휘발성 메모리(예를 들어, EPROM(Electrically Programmable Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory)) 및 플래시 메모리 디바이스; 내부 하드 디스크 및 분리성 디스크와 같은 자기 디스크; 광자기 디스크(magneto-optical disk) 및 CD-ROM 및 DVD-ROM 디스크.
머신(700)은 디스플레이 유닛, 영숫자 입력 장치(예를 들어, 키보드), 및 사용자 인터페이스(UI) 탐색 장치(예를 들어, 마우스)를 더 포함할 수 있다. 일 예시에서, 하나 이상의 디스플레이 유닛, 입력 장치 또는 UI 탐색 장치는 터치 스크린 디스플레이일 수 있다. 머신은 단일 생성 디바이스(예를 들어, 스피커), 또는 GPS(global positioning system) 센서, 나침반, 가속도계 또는 하나 이상의 다른 센서와 같은 하나 이상의 센서일 수 있다. 머신(700)은 하나 이상의 주변기기 디바이스(예를 들어, 프린터, 카드 리더 등)와 통신 또는 제어하기 위해 직렬(예를 들어, USB(universal serial bus)), 병렬 또는 기타 유선 또는 무선(예를 들어, 적외선(IR), NFC(near field communication), 등) 연결과 같은 출력 컨트롤러를 포함할 수 있다.
저장 시스템(718)에 저장된 명령어(726)(예를 들어, 소프트웨어, 프로그램, 운영체제(OS) 등) 또는 다른 데이터는 프로세싱 디바이스(702)에 의한 사용을 위해 주 메모리(704)에 의해 액세스될 수 있다. 주 메모리(704)(예를 들어, DRAM)는 일반적으로 빠르지만, 휘발성이며, 따라서 "오프" 상태에 있는 동안을 포함하여, 장기 저장에 적합한 저장 시스템(718)(예를 들어, SSD)과 상이한 저장 유형이다. 사용자 또는 머신(700)에 의해 사용 중인 명령어(726) 또는 데이터는 프로세싱 디바이스(702)에 의한 사용 동안 주 메모리(704)에 일반적으로 로딩된다. 주 메모리(704)가 가득 차면, 저장 시스템(718)의 가상 공간은 주 메모리(704)를 보완하기 위해 할당될 수 있다; 그러나, 저장 시스템(718) 디바이스가 일반적으로 주 메모리(704)보다 느리고, 기록 속도는 일반적으로 판독 속도보다 적어도 2배 느리기 때문에, 가상 메모리의 사용은 저장 시스템 지연시간(주 메모리(704), 예를 들어, DRAM과 대조적으로)으로 인해 사용자 경험을 크게 줄일 수 있다. 또한, 가상 메모리를 위한 저장 시스템(718)의 사용은 저장 시스템(718)의 사용 가능한 수명을 크게 감소시킬 수 있다.
명령어(724)는 다수의 전송 프로토콜(예를 들어, 프레임 릴레이, IP(internet protocol), TCP(transmission control protocol), UDP(user datagram protocol), HTTP(hypertext transfer protocol) 등) 중 임의의 하나를 활용하여 네트워크 인터페이스 디바이스(708)를 통해 전송 매체를 이용하여 네트워크(720)를 통해 더 전송 또는 수신될 수 있다. 예시적인 통신 네트워크는 LAN(local area network), WAN(wide area network), 패킷 데이터 네트워크(예를 들어, 인터넷), 이동 전화 네트워크(예를 들어, 셀룰러 네트워크), POTS(Plain Old Telephone) 네트워크, 및 무선 데이터 네트워크(예를 들어, Wi-Fi®로 알려진 IEEE(Institute of Electrical and Electronics Engineers) 802.11 표준 제품군, WiMax®로 알려진 IEEE 802.16 표준 제품군), IEEE 802.15.4 표준 제품군, P2P(peer-to-peer) 네트워크 등을 포함할 수 있다. 일 예시에서, 네트워크 인터페이스 디바이스(708)는 네트워크(720)에 연결하기 위해 하나 이상의 물리적 잭(예를 들어, 이더넷, 동축 또는 전화 잭) 또는 하나 이상의 안테나를 포함할 수 있다. 일 예시에서, 네트워크 인터페이스 디바이스(708)는 적어도 하나의 SIMO(single-input multiple-output), MIMO(multiple-input multiple-output), 또는 MISO(multiple-input single-output (MISO) 기술을 이용하여 무선 통신하기 위한 복수의 안테나를 포함할 수 있다. "전송 매체"라는 용어는 머신(700)에 의한 실행 동안 명령어를 저장, 인코딩 또는 전달할 수 있는 임의의 무형 매체를 포함하는 것으로 간주되어야 하며, 이러한 소프트웨어의 통신을 용이하게 하기 위한 디지털 또는 아날로그 통신 신호 또는 다른 무형 매체를 포함한다.
위의 상세한 설명은 상세한 설명의 일부를 형성하는 첨부 도면에 대한 참조를 포함한다. 도면은 도시의 방법에 의해, 발명이 실시될 수 있는 특정 실시예를 도시한다. 이러한 실시예는 또한 "예시"로서 본 명세서에서 지칭된다. 이러한 예시는 도시되거나 설명된 것에 외에 다른 요소를 포함할 수 있다. 그러나, 본 발명자는 도시되거나 설명된 이러한 요소 만이 제공되는 예시를 또한 고려한다. 더욱이, 본 발명자는 또한 본 명세서에서 도시되거나 설명된 특정 예시(또는 하나 이상의 그 양태)에 관련하여 또는 다른 예시(또는 하나 이상의 그 양태)와 관련하여, 도시되거나 설명된 이러한 요소(또는 하나 이상의 그 양태)의 임의의 조합 또는 치환을 사용하는 예시를 고려한다.
이 문서에서 언급된 모든 간행물, 특허 및 특허 문서는 참조에 의해 개별적으로 통합된 것처럼, 그 전체가 본 명세서에서 참조에 의해 통합된다. 이러한 문서 및 참조에 의해 통합된 이러한 문서 사이에 사용이 일치하지 않는 경우, 통합된 참조의 사용이 이 문서의 사용을 보완하는 것으로 간주되어야 한다; 화해할 수 없는 불일치의 경우, 이 문서의 사용이 통제된다.
이 문서에서, "하나"라는 용어는 특허 문서에서 공통적으로 사용되며, "적어도 하나" 또는 "하나 이상"의 임의의 다름 예 또는 사용과 무관하게 하나 이상을 포함한다. 이 문서에서, "또는"이라는 용어는 특별한 지시가 없는 한, 비배타적 또는 "A 또는 B"가 "B가 아닌 A", "A가 아닌 B", 및 "A 및 B"를 포함하는 경우를 지칭한다. 첨부된 청구범위에서, "포함"이라는 용어는 "여기에"라는 용어는 각각 "포함" 및 "여기서"라는 용어의 평이한 영어 동의어로 사용된다. 또한, 다음의 청구범위에서, "포함하는"이라는 용어는 제약을 두지 않고, 즉, 청구항의 이러한 용어 뒤에 나열된 외에 요소를 포함하는 시스템, 디바이스, 물품 또는 프로세스는 여전히 해당 청구항의 범위에 속하는 것으로 간주된다. 또한, 다음 청구범위에서 "제1", "제2" 및 "제3" 등과 같은 용어는 단지 레이블로서 사용되고, 그 대상에 수치적 요구사항을 부과하려는 의도가 아니다.
다양한 예시에서, 본 명세서에서 설명된 구성요소, 컨트롤러, 프로세서, 유닛, 엔진 또는 테이블은 무엇보다도 물리적 회로부 또는 물리적 디바이스에 저장된 펌웨어를 포함할 수 있다. 본 명세서에서 사용된 것처럼, "프로세서"는 마이크로프로세서, 마이크로컨트롤러, 그래픽 프로세서, DSP(digital signal processor), 또는 프로세서 또는 다중-코어 디바이스의 그룹을 포함하는 프로세서 또는 프로세싱 회로의 기타 유형과 같은 계산 회로의 임의 유형을 의미하나 이에 제한되지 않는다.
본 명세서에서 사용된 것처럼, 메모리 셀을 동작하는 것은 메모리 셀을 판독, 기록 또는 삭제하는 것을 포함한다. 의도된 상태로 메모리 셀을 두는 동작은 본 명세서에서 "프로그래밍"이라고 지칭하며, 메모리 셀에 기록 또는 삭제하는 것 모두를 포함한다(예를 들어, 메모리 셀은 삭제된 상태로 프로그래밍 될 수 있음).
요소가 다른 요소 "상에", "에 연결된" 또는 "와 결합된" 것으로 언급될 때, 이는 다른 요소에 직접적으로 위에, 연결된 또는 결합된 것일 수 있거나 중간 요소가 존재할 수 있음을 이해해야 한다. 대조적으로, 요소가 다른 요소 "직접적으로 위에", "에 직접적으로 연결된" 또는 "에 직접적으로 결합된" 것으로 언급되는 경우, 중간 요소 또는 층이 존재하지 않는다. 두 개의 요소가 도면에서 이들 사이를 연결하는 선을 가진 것으로 도시된 경우, 달리 표시되지 않는 한 두 요소는 결합되거나 직접적으로 결합될 수 있다.
본 명세서에서 설명된 방법 예시는 적어도 부분적으로 머신 또는 컴퓨터 구현될 수 있다. 일부 예시는 상기의 예시에서 설명된 것처럼 방법을 수행하기 위해 전자 디바이스를 구성하도록 동작할 수 있는 명령어로 인코딩 된 컴퓨터 판독 가능한 매체 또는 머신-판독가능한 매체를 포함할 수 있다. 이러한 방법의 구현은 마이크로코드, 어셈블리 언어 코드, 고급 언어 코드 등과 같은 코드를 포함할 수 있다. 이러한 코드는 다양한 방법을 수행하기 위해 컴퓨터 판독 가능한 명령어를 포함할 수 있다. 코드는 컴퓨터 프로그램 제품의 부분을 형성할 수 있다. 또한, 코드는 실행 중 또는 다른 시간에서 같이, 하나 이상의 휘발성 또는 비휘발성 유형 컴퓨터-판독가능한 매체 상에 유형적으로 저장될 수 있다. 이러한 유형의 컴퓨터-판독 가능한 매체의 예시는 하드 디스크, 분리 가능한 자기 디스크, 분리 가능한 광학 디스크(예를 들어, 콤팩트 디스크 및 디지털 비디오 디스크), 자기 카세트, 메모리 카드 또는 스틱, RAM(random access memory), ROM(read only memory), 등을 포함하나, 이에 제한되지 않는다.
본 명세서에서 개시된 방법 및 장치를 더 잘 도시하기 위해, 실시예의 비 제한적 목록이 여기에 제공된다:
예시 1은 메모리 디바이스이다. 메모리 디바이스는 적어도 하나의 플래시 메모리 저장 어레이를 포함한다. 메모리 디바이스는 플래시 메모리 저장 어레이에 저장된 순차적 매핑 테이블을 포함하고, 여기서 순차적 매핑 테이블은 순차적 기록 엔트리의 수가 하나보다 큰 순차적 기록 엔트리를 포함하고, 순차적 매핑 테이블은 논리적 블록 시작 위치, 물리적 블록 시작 위치 및 순차적 블록 기록 길이를 포함한다.
예시 2에서, 예시 1의 주제는 개별적인 매핑 테이블을 더 포함하도록 선택적으로 구성된다.
예시 3에서, 예시 1-2 중 임의의 주제는 플래시 메모리 저장 어레이가 NAND 저장 어레이를 포함하도록 선택적으로 구성된다.
예시 4에서, 예시 1-3 중 임의의 주제는 메모리 디바이스 내에 컨트롤러를 더 포함하도록 선택적으로 구성되고, 컨트롤러는 호스트 디바이스의 전원이 꺼지면 호스트 디바이스로부터 순차적 매핑 테이블을 업데이트하기 위한 펌웨어를 포함한다.
예시 5에서, 예시 1-4 중 임의의 주제는 메모리 디바이스 내에 컨트롤러를 더 포함하도록 선택적으로 구성되고, 컨트롤러는 예기치 않은 전원 손실 시 순차적 매핑 테이블을 모두 0으로 재설정하기 위한 펌웨어를 포함한다.
예시 6은 시스템이다. 시스템은 프로세서를 포함하는 호스트 디바이스, 및 호스트 디바이스에 결합된 플래시 메모리 디바이스를 포함한다. 플래시 메모리 디바이스는 적어도 하나의 플래시 메모리 저장 어레이 및 플래시 메모리 저장 어레이 내에 저장된 순차적 매핑 테이블을 포함하고, 여기서 순차적 매핑 테이블은 순차적 기록 엔트리의 수가 하나 보다 큰 순차적 기록 엔트리를 포함하고, 순차적 매핑 테이블은 논리적 블록 시작 위치, 물리적 블록 시작 위치 및 순차적 블록 기록 길이에 대한 데이터 필드를 포함한다. 시스템은 컨트롤러 내에 순차적 매핑 테이블의 데이터를 로딩하기 위한 펌웨어를 포함하고, 여기서 컨트롤러는 플래시 메모리 디바이스 및 프로세서 사이를 인터페이스 하도록 구성된다.
예시 7에서, 예시 6의 주제는 플래시 메모리 저장 어레이 내에 위치된 개별적인 매핑 테이블을 더 포함하도록 선택적으로 구성된다.
예시 8에서, 예시 6-7 중 임의의 주제는 원하는 데이터가 순차적 매핑 테이블의 순차적 엔트리의 범위 내에 있는지를 확인함으로써 데이터를 검색하기 위한 펌웨어를 포함하고, 펌웨어는 원하는 데이터가 순차적 매핑 테이블의 순차적 엔트리의 범위 내에 없는 경우 개별적인 매핑 테이블을 검색하도록 더 구성된다.
예시 9에서, 예시 6-8 중 임의의 주제는 동작 동안 순차적 매핑 테이블을 업데이트 하기 위한 펌웨어를 컨트롤러가 포함하도록 선택적으로 구성된다.
예시 10에서, 예시 6-9 중 임의의 주제는 새로운 기록이 순차적 매핑 테이블의 가장 짧은 엔트리보다 순차적으로 더 긴 경우 순차적 매핑 테이블에 엔트리를 추가하는 펌웨어를 포함하도록 선택적으로 구성된다.
예시 11에서, 예시 6-10 중 임의의 주제는 전원이 꺼지면 플래시 메모리 저장 어레이에 업데이트된 순차적 매핑 테이블을 저장하기 위한 펌웨어를 컨트롤러가 포함하도록 선택적으로 구성된다.
예시 12에서, 예시 6-11 중 임의의 주제는 예기치 않은 전원 손실 시 순차적 매핑 테이블에 모두 0을 저장하기 위한 펌웨어를 포함하도록 선택적으로 구성된다.
예시 13은 방법이다. 방법은 메모리 디바이스의 플래시 메모리에 순차적 매핑 테이블을 저장하는 단계를 포함하고, 논리적 블록 시작 위치를 저장하는 단계, 물리적 블록 시작 위치를 저장하는 단계, 순차적 블록 기록 길이를 저장하는 단계, 및 메모리 디바이스의 시작 시 컨트롤러 캐시에 순차적 매핑 테이블을 로딩하는 단계를 포함한다.
예시 14에서, 예시 13의 주제는 순차적 매핑 테이블이 컨트롤러 내 버퍼에 구성 및 업데이트되고 메모리 디바이스의 전원이 꺼지면 플래시 메모리에 저장되도록 선택적으로 구성된다.
예시 15에서, 예시 13-14 중 임의의 주제는 제조 시 순차적 매핑 테이블을 모두 0으로 초기화하는 단계를 더 포함하도록 선택적으로 구성된다.
예시 16에서, 예시 13-15 중 임의의 주제는 예기치 않은 전원 손실 시 순차적 매핑 테이블을 모두 0으로 초기화하는 단계를 더 포함하도록 선택적으로 구성된다.
예시 17에서, 예시 13-16 중 임의의 주제는 오직 새로운 기록이 순차적 매핑 테이블의 가장 짧은 엔트리보다 순차적으로 더 긴 경우 순차적 매핑 테이블에 엔트리를 저장하는 단계를 더 포함하도록 선택적으로 구성된다.
예시 18에서, 예시 13-17 중 임의의 주제는 순차적 매핑 테이블의 순차적 엔트리의 범위 내에 원하는 데이터가 있는지를 확인함으로써 데이터를 검색하는 단계, 및 순차적 매핑 테이블의 순차적 엔트리의 범위 내에 원하는 데이터가 존재하지 않는 경우 개별적인 매핑 테이블을 검색하는 단계를 더 포함하도록 선택적으로 구성된다.
상기 설명은 예시를 위한 것이며 제한적이지 않다. 예를 들어, 상기 설명된 예시(또는 하나 이상의 그 양태)는 서로 조합되어 사용될 수 있다. 기술 분야의 통상의 기술자에 의해 상기의 설명을 검토할 때와 같이, 다른 실시예가 사용될 수 있다. 요약은 독자가 기술적 개시의 성격을 신속하게 확인할 수 있도록 37 C.F.R. §1.72(b)를 준수하기 위해 제공된다. 청구의 범위 또는 의미를 해석하거나 제한하는데 사용되지 않을 것이라는 양해 하에 제출된다. 또한, 상기의 상세한 설명에서, 다양한 특징이 개시를 간소화하기 위해 함께 그룹화될 수 있다. 이는 청구되지 않은 개시 특징이 임의의 청구항에 필수적이라는 의도로 해석되어서는 안 된다. 오히려, 발명의 주제는 특정 개시된 실시예의 모든 특징보다 적은 부분에 있을 수 있다. 따라서, 다음의 청구범위는 이에 상세한 설명에 통합되며, 각 청구항은 그 자체로 별도의 실시예로서 주장하며, 이러한 실시예는 다양한 조합 또는 치환으로 서로 결합될 수 있음이 고려된다. 발명의 범위는 첨부된 청구범위를 참조하여 결정되어야 하며, 이러한 청구범위에 해당하는 균등물의 전체 범위와 함께 결정되어야 한다.

Claims (26)

  1. 메모리 디바이스(memory device)에 있어서,
    메모리 셀의 물리적 블록(physical block)을 포함하는 적어도 하나의 메모리 저장 어레이;
    상기 메모리 디바이스에 저장된 명령어(instruction)에 대응하여 동작하는 컨트롤러를 포함하고, 상기 명령어는 상기 컨트롤러에 의해 실행될 때, 상기 컨트롤러가:
    상기 메모리 디바이스의 제1 판독 요청에 대응하여, 상기 메모리 디바이스 내에 저장된 순차적 매핑 테이블을 판독하는 것을 포함하는 동작을 수행하도록 하고, 상기 순차적 매핑 테이블은 논리적 블록 어드레스(LBA)와 상기 저장 어레이의 블록의 물리적 블록 어드레스(PBA)를 연관시키는 다중 순차 기록 엔트리를 포함하고, 상기 순차적 매핑 테이블은:
    순차적 LBAs의 제1 그룹에 대응하여 다수의 다중 순차적 PBAs를 식별하는 순차적 블록 기록 길이 표시자; 및
    상기 순차적 PBAs의 시작 PBA를 포함하는, 메모리 디바이스.
  2. 제1항에 있어서, 상기 동작은:
    상기 순차적 매핑 테이블을 참조하여, 상기 제1 판독 요청에 응답하는 다중 메모리 셀을 포함하는 다중 PBAs를 식별하는 것; 및
    상기 다중 PBAs를 액세스하고 상기 제1 판독 요청에 응답하여 상기 메모리 셀의 전기적 속성을 판독하는 것을 더 포함하는, 메모리 디바이스.
  3. 제2항에 있어서, 상기 메모리 셀의 물리적 블록 내의 메모리 셀은 페이지에 배열되고, 상기 제1 판독 요청에 응답하여 상기 메모리 셀의 전기적 속성을 판독하는 것은 각각의 물리적 블록에 배열된 다중 페이지를 판독하는 것을 포함하는, 메모리 디바이스.
  4. 제1항에 있어서, 상기 동작은:
    상기 메모리 저장 어레이에 저장된 논리적 대 물리적(L2P) 테이블의 적어도 일부를 판독하는 것; 및
    상기 L2P 테이블의 적어도 일부를 나타내는 상기 순차적 매핑 테이블을 생성하는 것을 더 포함하는, 메모리 디바이스.
  5. 제1항에 있어서, 상기 동작은:
    상기 메모리 디바이스에서 수행되는 물리적 블록 어드레스에 대한 순차적 기록을 식별하는 것; 및
    상기 메모리 디바이스에서 기록이 수행됨에 따라 상기 순차적 매핑 테이블의 디스크립터(descriptor)를 생성하는 것을 더 포함하는, 메모리 디바이스.
  6. 제5항에 있어서, 상기 동작은:
    상기 메모리 저장 어레이 내에 상기 순차적 매핑 테이블을 저장하는 것; 및
    상기 메모리 디바이스의 캐시 메모리에 상기 순차적 매핑 테이블을 기록하는 것을 더 포함하고,
    상기 순차적 매핑 테이블의 판독은 상기 캐시 메모리로부터 상기 순차적 매핑 테이블을 판독하는 것을 포함하는, 메모리 디바이스.
  7. 제6항에 있어서, 상기 캐시 메모리는 휘발성 메모리를 포함하는, 메모리 디바이스.
  8. 제7항에 있어서, 상기 캐시 메모리는 SRAM을 포함하는, 메모리 디바이스.
  9. 제1항에 있어서, 상기 순차적 매핑 테이블은:
    상기 저장 어레이에 관련된 LBAs;
    상기 저장 어레이의 PBAs; 및
    상기 순차적 블록 기록 길이 표시자에 대한 데이터 필드를 포함하는, 메모리 디바이스.
  10. 제1항에 있어서, 개별적인 매핑 테이블을 더 포함하는, 메모리 디바이스.
  11. 제1항에 있어서, 상기 플래시 메모리 저장 어레이는 NAND 저장 어레이를 포함하는, 메모리 디바이스.
  12. 제1항에 있어서, 상기 메모리 디바이스 내에 컨트롤러를 더 포함하고, 상기 컨트롤러는 호스트 디바이스의 전원이 꺼지면 상기 호스트 디바이스에서 상기 순차적 매핑 테이블을 업데이트하는 펌웨어를 포함하는, 메모리 디바이스.
  13. 제1항에 있어서, 상기 메모리 디바이스 내에 컨트롤러를 더 포함하고, 상기 컨트롤러는 예기치 않은 전원 손실 시 상기 순차적 매핑 테이블을 모두 0(zero)으로 재설정하는 펌웨어를 포함하는, 메모리 디바이스.
  14. 시스템에 있어서,
    프로세서를 포함하는 호스트 디바이스;
    상기 호스트 디바이스에 결합되는 플래시 메모리 디바이스-여기서, 상기 플래시 메모리 디바이스는:
    적어도 하나의 플래시 메모리 저장 어레이;
    상기 플래시 메모리 저장 어레이 내에 저장된 순차적 매핑 테이블을 포함하고, 상기 순차적 매핑 테이블은 순차적 기록 엔트리의 수가 1개 보다 큰 순차적 기록 엔트리를 포함하고, 상기 순차적 매핑 테이블은:
    논리적 블록 시작 위치;
    물리적 블록 시작 위치;
    순차적 블록 기록 길이에 대한 데이터 필드를 포함함-; 및
    상기 순차적 매핑 테이블에서 컨트롤러로 데이터를 로딩하는 펌웨어를 포함하고, 상기 컨트롤러는 상기 플래시 메모리 디바이스와 상기 프로세서 사이에 인터페이스하도록 구성되는, 시스템.
  15. 제14항에 있어서, 상기 플래시 저장 어레이 내에 위치하는 개별적인 매핑 테이블을 더 포함하는, 시스템.
  16. 제15항에 있어서, 상기 컨트롤러는 원하는 데이터가 상기 순차적 매핑 테이블의 순차적 엔트리의 범위 내에 있는지 확인하여 데이터를 검색하는 펌웨어를 포함하고; 및
    상기 펌웨어는 상기 원하는 데이터가 상기 순차적 매핑 테이블의 순차적 엔트리의 범위 내에 있지 않은 경우 상기 개별적인 매핑 테이블을 검색하도록 더 구성되는, 시스템.
  17. 제14항에 있어서, 상기 컨트롤러는 동작 동안 상기 순차적 매핑 테이블을 업데이트하는 펌웨어를 포함하는, 시스템.
  18. 제17항에 있어서, 상기 컨트롤러는 새로운 기록이 상기 순차적 매핑 테이블의 가장 짧은 엔트리보다 순차적으로 긴 경우에만 상기 순차적 매핑 테이블에 엔트리를 추가하는 펌웨어를 포함하는, 시스템.
  19. 제14항에 있어서, 상기 컨트롤러는 전원이 꺼지면 상기 플래시 메모리 저장 어레이에 업데이트된 순차적 매핑 테이블을 저장하는 펌웨어를 포함하는, 시스템.
  20. 제14항에 있어서, 상기 컨트롤러는 예기치 않은 전원 손실 시 상기 순차적 매핑 테이블에 모두 0(zero)을 저장하는 펌웨어를 포함하는, 시스템.
  21. 방법에 있어서,
    메모리 디바이스의 플래시 메모리에 순차적 매핑 테이블을 저장하는 단계로서,
    논리적 블록 시작 위치를 저장하는 단계;
    물리적 블록 시작 위치를 저장하는 단계;
    순차적 블록 기록 길이를 저장하는 단계를 포함하는, 상기 순차적 매핑 테이블을 저장하는 단계; 및
    상기 메모리 디바이스를 시작할 때 상기 순차적 매핑 테이블을 컨트롤러 캐시에 로딩하는 단계를 포함하는, 방법.
  22. 제21항에 있어서, 상기 순차적 매핑 테이블은 상기 컨트롤러 내의 버퍼에 구성 및 업데이트되고, 상기 메모리 디바이스의 전원이 꺼지면 상기 플래시 메모리에 저장되는, 방법.
  23. 제21항에 있어서, 제조 시 상기 순차적 매핑 테이블을 모두 0(zero)으로 초기화하는 단계를 더 포함하는, 방법.
  24. 제21항에 있어서, 예기치 않은 전원 손실 시 상기 순차적 매핑 테이블을 모두 0(zero)으로 초기화하는 단계를 더 포함하는, 방법.
  25. 제21항에 있어서, 새로운 기록이 상기 순차적 매핑 테이블의 가장 짧은 엔트리보다 순차적으로 긴 경우 상기 순차적 매핑 테이블에 엔트리만 추가하는 단계를 더 포함하는, 방법.
  26. 제21항에 있어서, 상기 원하는 데이터가 상기 순차적 매핑 테이블의 순차적 엔트리의 범위 내에 있는지 확인하여 데이터를 검색하는 단계; 및
    상기 원하는 데이터가 상기 순차적 매핑 테이블의 순차적 엔트리의 범위 내에 있지 않은 경우 상기 개별적인 매핑 테이블을 검색하는 단계를 더 포함하는, 방법.
KR1020227011433A 2019-09-10 2019-09-10 메모리 매핑 디바이스 및 방법 KR20220058944A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/105208 WO2021046725A1 (en) 2019-09-10 2019-09-10 Memory mapping device and method

Publications (1)

Publication Number Publication Date
KR20220058944A true KR20220058944A (ko) 2022-05-10

Family

ID=74866766

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227011433A KR20220058944A (ko) 2019-09-10 2019-09-10 메모리 매핑 디바이스 및 방법

Country Status (4)

Country Link
US (1) US11922012B2 (ko)
KR (1) KR20220058944A (ko)
CN (1) CN114556313A (ko)
WO (1) WO2021046725A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11922012B2 (en) 2019-09-10 2024-03-05 Micron Technology, Inc. Memory mapping device and method
US11615020B2 (en) * 2021-08-12 2023-03-28 Micron Technology, Inc. Implementing mapping data structures to minimize sequentially written data accesses
CN113892142A (zh) * 2021-08-31 2022-01-04 长江存储科技有限责任公司 存储器系统的固件的掉电测试

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8612666B2 (en) * 2009-06-30 2013-12-17 Intel Corporation Method and system for managing a NAND flash memory by paging segments of a logical to physical address map to a non-volatile memory
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
KR20110046243A (ko) * 2009-10-27 2011-05-04 삼성전자주식회사 사용자 장치 및 그것의 맵핑 데이터 관리 방법
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
US8667248B1 (en) * 2010-08-31 2014-03-04 Western Digital Technologies, Inc. Data storage device using metadata and mapping table to identify valid user data on non-volatile media
KR102449192B1 (ko) * 2015-09-10 2022-09-29 삼성전자주식회사 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법
TWI537729B (zh) 2015-10-15 2016-06-11 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
US10067881B2 (en) 2016-06-15 2018-09-04 Western Digital Technologies, Inc. Compression and caching for logical-to-physical storage address mapping tables
JP2018022275A (ja) * 2016-08-02 2018-02-08 東芝メモリ株式会社 半導体記憶装置
JP2018088137A (ja) * 2016-11-29 2018-06-07 東芝メモリ株式会社 半導体記憶装置
US10534718B2 (en) 2017-07-31 2020-01-14 Micron Technology, Inc. Variable-size table for address translation
US11269545B2 (en) * 2017-12-21 2022-03-08 Micron Technology, Inc. NAND logical-to-physical table region tracking
US11922012B2 (en) 2019-09-10 2024-03-05 Micron Technology, Inc. Memory mapping device and method

Also Published As

Publication number Publication date
CN114556313A (zh) 2022-05-27
WO2021046725A1 (en) 2021-03-18
US11922012B2 (en) 2024-03-05
US20220382453A1 (en) 2022-12-01

Similar Documents

Publication Publication Date Title
US10983918B2 (en) Hybrid logical to physical caching scheme
US11922053B2 (en) NAND logical-to-physical table region tracking
US11487653B2 (en) L2P translation techniques in limited RAM systems to increase random write performance using multiple L2P caches
US11609850B2 (en) Method of operating a memory with dynamically changeable attributes
US10970228B2 (en) Mapping table compression using a run length encoding algorithm
US11989557B2 (en) Large data read techniques
US11922012B2 (en) Memory mapping device and method
US11972294B2 (en) Allocation schema for a scalable memory area
US11663120B2 (en) Controlling NAND operation latency
US20210248078A1 (en) Flash memory persistent cache techniques
US10957381B1 (en) Metadata grouping for un-map techniques