KR20210024430A - 메모리 디바이스에 있어서 논리 대 물리 맵 동기화 - Google Patents
메모리 디바이스에 있어서 논리 대 물리 맵 동기화 Download PDFInfo
- Publication number
- KR20210024430A KR20210024430A KR1020200104701A KR20200104701A KR20210024430A KR 20210024430 A KR20210024430 A KR 20210024430A KR 1020200104701 A KR1020200104701 A KR 1020200104701A KR 20200104701 A KR20200104701 A KR 20200104701A KR 20210024430 A KR20210024430 A KR 20210024430A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- updated portion
- memory device
- host
- updated
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Computer Security & Cryptography (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
관리되는 메모리 디바이스에 있어서 논리 대 물리(L2P) 맵(예를 들어, 테이블) 동기화를 위한 디바이스들 및 기술들이 여기에 설명된다. 예를 들어, 관리되는 메모리 디바이스에 있어서 L2P 맵의 평문 부분이 업데이트될 수 있다. 상기 L2P 맵의 상기 평문 부분을 업데이트하는 것에 응답하여, 상기 업데이트된 부분은 오퍼캐스팅되어 상기 L2P 맵의 상기 업데이트된 부분의 오퍼캐스팅된 버전이 생성될 수 있다. 상기 업데이트된 부분 및 상기 업데이트된 부분의 상기 오퍼캐스팅된 버전 양자는 상기 메모리 디바이스의 저장 장치에 저장될 수 있다. 호스트로부터 상기 L2P 맵의 상기 업데이트된 부분에 대한 요청이 수신될 때, 상기 메모리 디바이스는 상기 저장 장치로부터 상기 부분의 상기 오퍼캐스팅된 버전을 제공할 수 있다.
Description
메모리 디바이스들은 통상적으로 컴퓨터들 또는 다른 전자 디바이스들에 내부의 반도체 집적 회로들로서 제공된다. 휘발성 및 비휘발성 메모리를 비롯한 많은 상이한 유형의 메모리가 있다.
휘발성 메모리는 그것의 데이터를 유지하는데 전력을 필요로 하고, 다른 것들 중에서도, 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM) 또는 동기식 동적 랜덤 액세스 메모리(SDRAM)를 포함한다.
비휘발성 메모리는 전력이 공급되지 않을 때 저장된 데이터를 유지할 수 있고, 다른 것들 중에서도, 플래시 메모리, 판독 전용 메모리(ROM), 전기적 소거 가능 프로그램 가능 ROM(EEPROM), 정적 RAM(SRAM), 소거 가능 프로그램 가능 ROM(EPROM), 가변 저항 메모리 이를테면 상 변화 랜덤 액세스 메모리(PCRAM), 저항 랜덤 액세스 메모리(RRAM) 및 자기 저항 랜덤 액세스 메모리(MRAM) 또는 3D XPoint™ 메모리를 포함한다.
메모리는 통상적으로 가상인 논리 블록들, 및 물리 블록들로 설명 및 편성된다. 물리 블록들이 메모리 디바이스들에서의 물리적 구조들(예를 들어, 위치들)을 나타내는(예를 들어, 그것들의 어드레스들인) 한편, 논리 블록들은 물리 블록들에 유연한 인터페이스들을 제공하는 개념상 유사체들이다. 그에 따라, 예를 들어, 메모리 디바이스가 하나의 물리 블록으로부터 다른 물리 블록으로 이동하는 경우-예를 들어 제1 물리 블록을 가비지 수집하기 위해-제1 물리 블록으로부터 대응하는 논리 블록으로의 관계가 논리 블록을 통해 데이터에 액세스하는 호스트 동작들을 인터럽트하지 않고 전달될 수 있다. 물리와 논리 블록들 간 관계는 일반적으로 논리 대 물리(L2P, logical-to-physical) 매핑 또는 테이블로 지칭될 수 있는 데이터 구조에 유지된다. 메모리 디바이스의 물리적 구조가 크기 및 복잡도가 증가함에 따라, 보통 L2P 매핑도 그렇다. 이는 메모리 디바이스 제어기들이 대용량 L2P 매핑들을 관리할 수 있는 제한된 용량을 가질 때 문제가될 수 있다.
반드시 일정한 비율로 그려진 것은 아닌 도면들에서, 상이한 도면들에서 같은 부호들은 유사한 구성요소들을 기술할 수 있다. 끝에 붙은 첨자들이 상이한 같은 부호들은 유사한 구성요소들의 상이한 인스턴스들을 나타낼 수 있다. 도면들은 일반적으로 제한이 아닌 예로서, 본 문서에서 논의되는 다양한 실시 예를 도시한다.
도 1은 메모리 디바이스를 포함하는 환경의 일례를 도시한다.
도 2는 호스트-캐시된 논리 대 물리 맵으로 판독 요청을 수행하는 일례를 도시한다.
도 3은 기록 요청을 수행하고 물리 어드레스들을 리프레시하는 일례를 도시한다.
도 4는 물리 어드레스들을 오퍼캐스팅(obfuscating)하는 일례를 도시한다.
도 5는 효율적인 오퍼캐스팅된 논리 대 물리 매핑을 위한 시스템의 일례를 통한 데이터 흐름을 도시한다.
도 6은 관리되는 NAND 디바이스에 있어서 논리 대 물리 맵 동기화를 위한 방법의 일례의 흐름도를 도시한다.
도 7은 하나 이상의 실시 예가 구현될 수 있는 기계의 일례를 도시한 블록도이다.
도 1은 메모리 디바이스를 포함하는 환경의 일례를 도시한다.
도 2는 호스트-캐시된 논리 대 물리 맵으로 판독 요청을 수행하는 일례를 도시한다.
도 3은 기록 요청을 수행하고 물리 어드레스들을 리프레시하는 일례를 도시한다.
도 4는 물리 어드레스들을 오퍼캐스팅(obfuscating)하는 일례를 도시한다.
도 5는 효율적인 오퍼캐스팅된 논리 대 물리 매핑을 위한 시스템의 일례를 통한 데이터 흐름을 도시한다.
도 6은 관리되는 NAND 디바이스에 있어서 논리 대 물리 맵 동기화를 위한 방법의 일례의 흐름도를 도시한다.
도 7은 하나 이상의 실시 예가 구현될 수 있는 기계의 일례를 도시한 블록도이다.
호스트 부정 행위로부터 메모리 디바이스를 보호하는 기술이 후술된다. 다음 예들에서 호스트는 많은 메모리 디바이스 동작들(예를 들어, 판독, 기록 등)에 대한 L2P 매핑 관리를 돕기 위해 요청된다. 호스트 지원을 가능하게 하기 위해, 메모리 디바이스에 대한 L2P 매핑들이 호스트와 공유된다. 그러나, 이로 인해 메모리 디바이스에 일부 보안 문제가 발생할 수 있다. 후술될 디바이스들, 시스템들 및 기술들은 이러한 문제들 중 일부를 해결한다.
메모리 디바이스들은 개별 메모리 다이를 포함하며, 이는 예를 들어, 메모리 셀들의 하나 이상의 어레이를 포함하는 저장 영역을 포함하여, 하나의(또는 그 이상의) 선택된 저장 기술을 구현하는 것을 포함할 수 있다. 그러한 메모리 다이는 보통 메모리 어레이(들)를 동작시키기 위한 지원 회로를 포함할 것이다. 때로는 일반적으로 "관리되는 메모리 디바이스들"로서 알려져 있는 다른 예들은 하나 이상의 메모리 다이의 동작을 제어하도록 구성된 제어기 기능과 연관된 하나 이상의 메모리 다이의 어셈블리들을 포함한다. 그러한 제어기 기능은 여기서 후술될 "호스트"로서 외부 디바이스와의 상호 운용성을 단순화할 수 있다. 그러한 관리되는 메모리 디바이스들에서, 제어기 기능은 메모리 어레이를 또한 통합하는 하나 이상의 다이, 또는 별도의 다이 상에 구현될 수 있다. 다른 예들에서, 하나 이상의 메모리 디바이스는 제어기 기능과 조합되어 고체 상태 드라이브(SSD) 저장 볼륨을 형성할 수 있다.
본 개시의 실시 예들은 "관리되는 NAND" 디바이스들로 칭해지는 NAND 플래시 메모리 셀들을 구현하는 관리되는 메모리 디바이스들의 예에서 설명된다. 그러나, 이러한 예들은 본 개시의 범위를 제한하지 않으며, 이는 다른 형태들의 메모리 디바이스들로 그리고/또는 다른 형태들의 저장 기술을 이용하여 구현될 수 있다.
NOR 또는 NAND 아키텍처 반도체 메모리 어레이에서의 각 플래시 메모리 셀은 개별적으로 또는 집합적으로 하나 또는 다수의 프로그래밍된 상태로 프로그래밍될 수 있다. 예를 들어, 싱글 레벨 셀(SLC)은 두 개의 프로그래밍된 상태(예를 들어, 1 또는 0) 중 하나를 나타내어, 1 비트의 데이터를 나타낼 수 있다. 플래시 메모리 셀들은 또한 둘보다 많은 프로그램 상태를 나타낼 수 있어, 각 셀이 하나보다 많은 바이너리 디지트(예를 들어, 하나보다 많은 비트)를 나타낼 수 있기 때문에 메모리 셀들의 수를 증가시키지 않고도 보다 높은 밀도의 메모리들을 제조할 수 있다. 그러한 셀들은 멀티 상태 메모리 셀들, 멀티 디지트 셀들 또는 멀티 레벨 셀들(MLC들)로서 지칭될 수 있다. 특정 예들에서, MLC는 셀마다 2 비트의 데이터(예를 들어, 4개의 프로그래밍된 상태 중 하나)를 저장할 수 있는 메모리 셀을 지칭할 수 있고, 트리플 레벨 셀(TLC)은 셀마다 3 비트의 데이터(예를 들어, 8개의 프로그램된 상태 중 하나)를 저장할 수 있는 메모리 셀을 지칭할 수 있으며, 쿼드 레벨 셀(QLC)은 셀마다 4 비트의 데이터를 저장할 수 있다. MLC는 여기서 그보다 넓은 맥락으로, 셀마다 1보다 많은 비트의 데이터를 저장할 수 있는(즉, 2개 이상의 프로그래밍된 상태를 나타낼 수 있는) 임의의 메모리 셀을 지칭하기 위해 사용된다.
관리되는 메모리 디바이스들은 공인 산업 표준들에 따라 구성 및 작동될 수 있다. 예를 들어, 관리되는 NAND 디바이스들은(비제한적인 예들로서), 범용 플래시 저장 장치(UFS™) 디바이스, 또는 내장형 MMC 디바이스(eMMC™) 등일 수 있다. 예를 들어, 상기한 예들의 경우, UFS 디바이스들은 JEDEC(Joint Electron Device Engineering Council) 표준들(예를 들어, JEDEC UFS 플래시 저장 장치 3.0 등의 JEDEC 표준 JESD223D) 및/또는 그러한 표준에 대한 업데이트들 또는 후속 버전들에 따라 구성될 수 있다. 유사하게, 식별된 eMMC 디바이스들은 다시 "JEDEC eMMC 표준 5.1"의 JEDEC 표준 JESD84-A51 및/또는 그러한 표준에 대한 업데이트들 또는 후속 버전들에 따라 구성될 수 있다.
SSD는 다른 것들 중에서도, 컴퓨터의 주 저장 디바이스로 사용될 수 있으며, 예를 들어, 성능, 크기, 무게, 견고성, 작동 온도 범위 및 전력 소비에 대하여 이동 부분들을 갖는 종래의 하드 드라이브들에 비해 이점들을 갖는다. 예를 들어, SSD들은 탐색 시간, 레이턴시 또는 자기 디스크 드라이브들(예를 들어, 전기 기계적 등)과 연관된 다른 지연을 감소시킬 수 있다. SSD들은 내부 배터리 공급 요건들을 제거하기 위해 플래시 메모리 셀들과 같은 비휘발성 메모리 셀들을 사용함에 따라, 드라이브가 보다 다목적이고 컴팩트하게된다. 관리되는 메모리 디바이스들, 예를 들어 관리되는 NAND 디바이스들은 다양한 형태의 전자 디바이스에서 주요 또는 보조 메모리로 사용될 수 있고, 모바일 디바이스들에 통용된다.
SSD들 및 관리되는 메모리 디바이스들 양자는 다수의 다이 또는 논리 유닛(예를 들어, 논리 유닛 수 또는 LUN)을 포함하여 다수의 메모리 디바이스를 포함할 수 있고, 메모리 디바이스들을 작동시키거나 또는 외부 시스템들과 인터페이싱하는데 필요한 논리 기능들을 수행하는 하나 이상의 프로세서 또는 다른 제어기를 포함할 수 있다. 그러한 SSD들 및 관리되는 메모리 디바이스들은 다수의 메모리 어레이 및 그 주변 회로를 포함하는 하나 이상의 플래시 메모리 다이를 포함할 수 있다. 플래시 메모리 어레이들은 다수의 물리적 페이지로 편성된 메모리 셀들의 다수의 블록을 포함할 수 있다. 일부 예에서, SSD들은 또한 DRAM 또는 SRAM(또는 다른 형태들의 메모리 다이 또는 다른 메모리 구조들)을 포함할 수 있다. 유사하게, 관리되는 NAND 디바이스들은 NAND 저장 어레이와 별도로, 그리고 제어기 내에 또는 이와 별도로, 휘발성 및/또는 비휘발성 메모리의 하나 이상의 어레이를 포함할 수 있다. SSD들 및 관리되는 NAND 메모리 디바이스들 양자는 메모리 디바이스들과 호스트 간에서 데이터(예를 들어, 사용자 데이터 및 관련 무결성 데이터, 이를테면 에러 데이터 및 어드레스 데이터 등)를 전달하기 위한 판독 또는 기록 동작들, 또는 메모리 디바이스들에서 데이터를 소거하기 위한 소거 동작들과 같은 메모리 동작들과 관련하여 호스트로부터 명령들을 수신할 수 있다.
플래시 디바이스들과 같은 많은 저장 디바이스들은 변환 테이블들 또는 다른 데이터 구조들(여기서 맵들로 총칭됨)을 사용하여 논리 요소들(예를 들어, 페이지들 또는 블록들)을 논리 요소들의 물리 등가물들에 매핑한다. 이는 디바이스의 제어기가 디바이스의 저장 요소들의 성능 또는 수명을 증가시키기 위해 다양한 기술을 수행할 수 있게 한다. 예를 들어, NAND 플래시 셀들은 기록 또는 소거 사이클들에 따라 물리적으로 마모된다. 나아가, 이러한 디바이스들은 한 번에 많은 요소가 소거될 것을 필요로 한다(예를 들어, 블록 소거). 이러한 이슈들을 해결하기 위해, 제어기는 일반적으로 이용 가능한 셀들 주위에 기록들을 분산시키고(예를 들어, 이러한 셀들에서 마모를 감소시키기 위해) 블록을 소거하고 그에 따라 추가 공간을 확보하기 위해 블록들로부터 양호한 페이지들을 이동시킨다. 두 경우 모두, 소정의 페이지 또는 블록에 대한 호스트 어드레스는 변환 맵에 의해 그것이 참조하는 데이터가 상이한 물리적 페이지들 또는 블록들로 이동되더라도 일정할 수 있다.
변환 맵들은 일반적으로 제어기의 내부 메모리로 로딩된다. 맵 크기가 내부 메모리보다 큰 경우(예를 들어, 제어기의 동적 RAM(DRAM) 또는 정적 RAM(SRAM)과 같은 랜덤 액세스 메모리(RAM)에서), 맵의 일부가 내부 메모리에 로딩되고 맵의 나머지는 다른 저장 장치(예를 들어, NAND 플래시 어레이 요소들)에 저장된다. 내부 메모리에 변환 요청(예를 들어, 논리 대 물리(L2P) 매핑)이 없는 경우, 제어기는 맵의 내부 메모리 부분을 다른 저장 장치로부터의 적절한 부분으로 교체한다. 이러한 프로세스는 저장 디바이스에 대한 판독 또는 기록과 같은 동작들을 수행할 때 레이턴시들을 증가시킬 수 있다. 내부 메모리를 증가시키면 이러한 발생들을 감소시킬 수 있지만, 이는 소정의 응용 분야에서 용인할 수 없는 제조 및 전력 비용이 발생시킬 수 있다.
변환 맵들의 부분들을 내부 메모리 안팎으로 스와핑(swap)하는 문제를 해결하기 위해, 변환 맵들이 호스트(저장 디바이스보다 더 큰 메모리 자원들을 가질 수 있는)로 전달되어, 호스트가 소정의 동작이 적용되는 물리적 어드레스를 나타내게할 수 있다. 이는 호스트-캐시된 L2P 매핑으로 지칭되지만, 일부 상황에서는 호스트 성능 부스터(HPB), 통합 메모리 확장(UME) 또는 호스트 메모리 버퍼(HMB)로 지칭될 수도 있다. 이러한 배열들에서, 제어기는 궁극적으로 변환 맵들을 유지하고 변환 맵들의 변경을 호스트에 업데이트하는 것을 담당하지만, 실제로는 호스트가 제어기에 작동될 물리 어드레스들을 전통적인 명령 및 논리 어드레스와 함께 제공한다. 물리 어드레스가 호스트에 의해 제공되기 때문에, 제어기는 동작을 수행할 때 변환 맵들을 참조하지 않아도 되므로, 동작을 수행할 때 효율성을 높이거나 대기 시간을 줄일 수 있다. 물리 어드레스는 페이로드(예를 들어, 물리 어드레스 페이로드)로 캡슐화될 수 있다. 예를 들어, 일부 HPB 제안에서, 페이로드는 8 바이트인 하?胛?, 물리 어드레스는 4 바이트이다. 페이로드의 나머지 4 바이트는 다른 제어 목적들로 사용될 수 있다.
현재 호스트-캐시된 L2P 매핑 제안들은 여러 단점을 포함한다. 예를 들, 제어기가 호스트 메모리를 제어할 수 없다. 따라서, 호스트에 의해 L2P 매핑을 조작하는 것은 제어기에 의해 구현되는 데이터 보호를 우회할 수 있다. 그로 인해, 호스트의 악의적이거나 결함이 있는 소프트웨어가 제어기가 그것의 내부 변환 맵들에만 의존할 때 가능하지 않은 방식으로 저장 디바이스 상의 데이터를 손상시킬 수 있다.
오퍼캐스팅된 L2P 매핑들-여기서 호스트에 제공되는 물리 어드레스들이 암호화되거나, 그 외 제어기에 의해 탐지로부터 보호된다-은 제어기가 호스트-캐시된 L2P 매핑의 이점들을 이용할 수 있게 하면서 또한 데이터를 검증하고, 재전송 공격을 방지하고, 인가받지 않은 데이터의 수정을 방지하며, 웨어 레벨링 기술들과 같은 저장 디바이스의 독점적 동작들을 보호할 수 있다. 이러한 목표들은 요청으로부터의 논리 및 물리 어드레스 쌍을 사용하여 요청의 검증을 계산하는 것에 의해 실현될 수 있다. 이러한 검증은 저장된 검증 버전과 대조하여 검증이 통과했는지 여부를 결정할 수 있다. 예를 들어, 기록이 수행될 때, 제어기는 L2P 맵을 가질 것이다. 제어기는 논리 어드레스 및 물리 어드레스를 해싱(hashing)하고 결과를 저장할 수 있다. 기록된 데이터의 후속 판독시, 호스트는 호스트가 보유한 변환 맵 사본으로부터 논리 및 물리 어드레스를 제공한다. 제어기는 제공된 논리 및 물리 어드레스를 해싱하여 테스트 해시를 생성하고, 기록이 수행되었을 때 저장된 해시를 판독하며, 해시가 일치할 때 요청이 정확한 것으로 검증할 수 있다. 해시가 일치하지 않으면, 제어기는 내부 변환 맵들을 사용하여 제공된 논리 어드레스에 대해 정확한 물리 어드레스를 조회하고 정확한 데이터를 제공할 수 있다. 따라서, 제어기는 제공된 L2P 쌍이 정확할 때 호스트-캐시된 L2P 성능 향상을 구현하고,(예를 들어, 실수 또는 악의로 인해) 문제가 있을 때 전통적인 변환 맵을 조회하는 것으로 다시 적절히 돌아간다.
추가 기능을 제공하기 위해 검증에 추가 정보가 적용될 수 있다. 예를 들어, L2P 매핑으로 시퀀스 번호를 해싱하여 재전송 공격을 방지할 수 있다. 또한, 실제 물리 어드레스는 자체적으로 호스트가 제어기에 의해 제공된 변환 테이블로부터 오퍼캐스팅된 물리 어드레스를 제공하도록 오퍼캐스팅될 수 있다. 제어기는 변환 맵들을 참조하지 않고 실제 물리 어드레스를 확인하기 위해 물리 어드레스를 디-오퍼캐스팅한다. 이러한 방식으로, 제어기는 호스트-캐시된 L2P 매핑의 향상된 성능을 계속해서 누리면서 독점적 기술들을 보호하기 위해 호스트로부터 L2P 매핑의 내부 동작을 보호할 수 있다.
상술된 오퍼캐스팅된 호스트-캐시된 L2P 매핑에 대한 개선은 메모리 디바이스에 의해 수행되는 L2P 매핑들에 대한 변화에 응답하여 L2P 맵 테이블의 오퍼캐스팅 영역들을 포함한다. 이러한 변화는 웨어 레벨링 또는 가비지 콜렉션 동작들로 인해 발생할 수 있다. 그러한 동작들에서, L2P 매핑들에 대한 대량의 순차적 변화가 발생할 수 있다. 그러한 순차적인 동작들은 오퍼캐스팅된 매핑들로 효율적으로 처리될 수 있다. 따라서, L2P 매핑 업데이트시에 그러한 오퍼캐이션들을 수행하면 호스트에 의한 요청 이전에 오퍼캐스팅된 L2P 매핑들의 효율적인 전처리가 이루어질 수 있다. 호스트의 요청에 따라 L2P 맵 영역들을 오퍼캐스팅하면 처리 시간이 늘어나고 사용자 경험에 영향을 줄 수 있다. 관리되는 NAND 디바이스들은 통상적으로 처리(예를 들어, 암호화 엔진)를 위한 제한된 전력 및 다이 공간을 갖지만,(예를 들어, NAND 어레이에) 이용 가능한 대량의 저장 공간을 가지므로, 오퍼케이션 처리를 그러한 처리가 사용자 경험에 주는 영향을 줄일 기간으로 시간 이동시킬 수 있다. 추가 세부 사항들 및 예들이 아래에 제공된다.
여기서 논의된 변환 맵 변경을 채용하는 디바이스들은 많은 적용 예에 적합할 수 있다. 전자 디바이스들, 이를테면 모바일 전자 디바이스들(예를 들어, 스마트 폰, 태블릿 등), 자동차 어플리케이션들에 사용하기 위한 전자 디바이스들(예를 들어, 자동차 센서, 제어 유닛, 운전자 보조 시스템, 승객 안전 또는 안락 시스템 등) 및 인터넷에 연결된 가전 제품들 또는 디바이스들(예를 들어, 사물 인터넷(IoT, internet-of-things) 디바이스들 등)은 다른 것들 중에서도, 전자 디바이스의 유형, 사용 환경, 성능 기대치 등에 따라 다양한 저장 요구를 갖는다.
전자 디바이스들은 다음의 여러 주요 구성요소로 분류될 수 있다: 프로세서(예를 들어, 중앙 처리 유닛(CPU) 또는 다른 메인 프로세서); 메모리(예를 들어, 하나 이상의 휘발성 또는 비휘발성 RAM 메모리 디바이스, 이를테면 DRAM, 모바일 또는 저전력 이중 데이터 속도 동기식 DRAM(DDR SDRAM) 등); 및 저장 디바이스(예를 들어, 비휘발성 메모리(NVM) 디바이스, 이를테면 플래시 메모리, 판독 전용 메모리(ROM), SSD, MMC, 또는 다른 메모리 카드 구조 또는 어셈블리 등). 특정 예들에서, 전자 디바이스들은 사용자 인터페이스(예를 들어, 디스플레이, 터치 스크린, 키보드, 하나 이상의 버튼 등), 그래픽 처리 유닛(GPU), 전력 관리 회로, 기저 대역 프로세서 또는 하나 이상의 트랜시버 회로 등을 포함할 수 있다.
도 1은 통신 인터페이스를 통해 통신하도록 구성된 호스트 디바이스(105) 및 메모리 디바이스(110)를 포함하는 환경(100)의 일례를 도시한다. 호스트 디바이스(105) 또는 메모리 디바이스(110)는 다양한 제품(150), 이를테면 사물 인터넷(IoT) 디바이스들(예를 들어, 냉장고 또는 다른 가전 제품, 센서, 모터 또는 액추에이터, 모바일 통신 디바이스, 자동차, 드론 등)의 처리, 통신 또는 제어를 지원하기 위해 제품(150)에 포함될 수 있다.
메모리 디바이스(110)는 메모리 제어기(115) 및 예를 들어, 다수의 개별 메모리 다이(예를 들어, 3차원(3D) NAND 다이의 스택)를 포함하는 메모리 어레이(120)를 포함한다. 3D 아키텍처 반도체 메모리 기술에서, 수직 구조들이 적층되어, 티어들, 물리적 페이지들의 수, 그리고 그에 따라 메모리 디바이스(예를 들어, 저장 디바이스)의 밀도를 증가시킨다. 일례로, 메모리 디바이스(110)는 호스트 디바이스(105)의 별개의 메모리 또는 저장 디바이스 구성요소일 수 있다. 다른 예들에서, 메모리 디바이스(110)는 호스트 디바이스(105)의 하나 이상의 다른 구성요소와 적층되거나 그 외 포함되는 집적 회로(예를 들어, 시스템 온 칩(SOC) 등)의 일 부분일 수 있다.
메모리 디바이스(110)와 호스트 디바이스(105)의 하나 이상의 다른 구성요소 간에 데이터를 전송하기 위해 하나 이상의 통신 인터페이스, 이를테면 SATA(Serial Advanced Technology Attachment) 인터페이스, PCIe(Peripheral Component Interconnect Express) 인터페이스, USB(Universal Serial Bus) 인터페이스, UFS 인터페이스, eMMC™ 인터페이스 또는 하나 이상의 다른 커넥터 또는 인터페이스가 사용될 수 있다. 호스트 디바이스(105)는 호스트 시스템, 전자 디바이스, 프로세서, 메모리 카드 리더, 또는 메모리 디바이스(110) 외부의 하나 이상의 다른 전자 디바이스를 포함할 수 있다. 일부 예에서, 호스트(105)는 도 7의 기계(700)를 참조하여 논의될 구성요소들의 일부 또는 전부를 갖는 기계일 수 있다.
메모리 제어기(115)는 호스트(105)로부터 명령들을 수신할 수 있고, 이를테면 메모리 어레이(120)의 메모리 셀들, 평면들, 서브-블록들, 블록들 또는 페이지들 중 하나 이상으로(예를 들어, 기록 또는 소거) 또는 그것들로부터(예를 들어, 판독) 데이터를 전달하기 위해 메모리 어레이(120)와 통신할 수 있다. 메모리 제어기(115)는 다른 것들 중에서도, 하나 이상의 구성요소 또는 집적 회로를 포함하는 회로 또는 펌웨어를 포함할 수 있다. 예를 들어, 메모리 제어기(115)는 메모리 어레이(120)에 걸친 액세스를 제어하고 호스트(105)와 메모리 디바이스(110) 간 변환 계층을 제공하도록 구성된 하나 이상의 메모리 제어 유닛, 회로 또는 구성요소를 포함할 수 있다.
변환과 관련하여, 메모리 제어기(115)는 호스트-캐시된 L2P에서의 효율적인 오퍼캐스팅된 L2P 매핑을 위한 기술을 구현할 수 있다. 최고 레벨에서, 메모리 제어기(115)는 자체적인 활동에 기인하여 L2P 매핑들에 대한 업데이트들을 수행하면서 L2P 맵 오퍼캐이션들을 사전 계산한다. 이는 메모리 디바이스(115)가 동작을 수행할 시간 또는 용량을 갖는 기간들 동안 오퍼캐스팅된 L2P 매핑들을 우선적으로 사전 계산할 수 있다. 나아가, 유지보수 프로세스들에 대한 일부 제어로 인해, L2P 매핑들을 오퍼캐스팅하는 프로세스가 다른 시간들보다 효율적일 수 있다. 이러한 목적들을 달성하기 위해, 메모리 제어기(115)는 L2P 맵의 평문 부분으로부터 L2P 맵의 업데이트된 부분을 생성하도록 구성된다. 여기서는 L2P 맵이 실제 논리 블록 대 물리 블록 매핑들과 동기화되게 유지하도록 업데이트된다. 일례에서, 부분의 크기는 호스트(105)와 메모리 디바이스(110) 간 통신 프로토콜에 정의된다. 일례에서, 부분은 UFS 표준 제품군에 정의된 것과 같은 영역, 또는 서브-영역이다.
메모리 제어기(115)는 업데이트된 부분을 생성하는 것에 응답하여 L2P 맵의 업데이트된 부분을 오퍼캐스팅하도록 구성된다. 그에 따라, 오퍼캐스팅된 부분은 업데이트된 부분의 생성과 동시에(예를 들어, 동시에, 직후에 등으로) 생성된다. 이는 평문과 오퍼캐스팅된 버전들을 동기화된 상태로 유지하는 이점이 있다.
메모리 제어기(115)는 L2P 구조의 평문 부분에 대한 업데이트에 응답하여 L2P 구조의 업데이트된 부분을 오퍼캐스팅하도록 구성된다. 일례에서, 업데이트된 부분을 오퍼캐스팅하는 것은 업데이트된 부분을 암호화하는 것을 포함한다. 업데이트된 부분을 암호화하는 것은 메모리 제어기(115)의 일반적인 처리 회로(예를 들어, 프로세서 또는 디지털 신호 프로세서)를 통해, 또는 특정 암호화 구성 요소를 통해 실현될 수 있다. 예를 들어, 암호화는 Blowfish 또는 Skipjack과 같은 8 또는 16 바이트 블록 암호화 기술이다. 강력한 암호화 기술은 필요하지 않지만-호스트(105)가 논리 어드레스와 물리 어드레스들 간 패턴을 쉽게 식별할 수 없다면 오퍼캐이션은 충분히 강력하다-암호화 기술들은 널리 보급되어 있고 암호화 구성요소들은 메모리 제어기(115)에서 다른 용도들을 찾을 수 있다.
일례에서, 메모리 제어기(115)는 추가 요소, 트리거가 발생했을 때 업데이트된 구성요소의 오퍼케이션을 수행하도록 배열된다. 트리거를 사용하여, 메모리 제어기(115)는 업데이트된 부분의 오퍼캐스팅된 버전의 생성을 피할 수 있다. 일례에서, 트리거는 관리되는 NAND 디바이스에 의해 수행되는 유지보수 액션이다. 일례에서, 유지보수 액션은 가비지 수집 또는 웨어 레벨링 중 적어도 하나이다. 일례에서, 가비지 수집은 연속 가비지 수집(serializing garbage collection)이다. 일례에서, 가비지 수집 또는 웨어 레벨링 동작을 받고 업데이트된 부분에 대응하는 블록들은 순차적이다. 순차 동작들은 업데이트된 부분의 각 오퍼케이션으로 인해 평문과 오퍼캐스팅된 버전들의 매핑들 간에 많은 L2P 매핑이 동기화되기 때문에 비순차 동작들보다 더 효율적인 경향이 있다. 반대로, 일부 L2P 매핑만 부분적으로 변경되면, 이전 버전 상에서 호스트(105)는 보통 정확한 L2P 힌트들을 제공할 것이다. 그에 따라, 이러한 오퍼캐스팅된 L2P 부분을 리프레시하면 연속 가비지 수집과 같은 순차 동작만큼 많은 이점이 없다. 일례에서, 메모리 제어기(115)는 보다 순차적인 동작들을 수행하도록 유지 보수 동작을 변경하도록 배열된다.
일례에서, 메모리 제어기(115)는 동작(605)의 부분인 변화의 크기가 임계치를 초과 할 때 업데이트된 부분의 오퍼케이션을 수행하도록 배열된다. 이러한 측정은 오퍼케이션 동작에 의해 소비되는 시간 및 전력이 동작들 동안 호스트(105)로부터 L2P 힌트들을 개선하기에 너무 작은 변화에 낭비되지 않도록 보장한다.
메모리 제어기(115)는 업데이트된 부분 및 부분의 오퍼캐스팅된 버전을 저장 장치(예를 들어, NAND 어레이(120))에 저장하도록 구성된다. 그 다음, 호스트(105)로부터 업데이트된 부분에 대한 요청을 수신 한 후, 메모리 제어기(115)는 업데이트된 부분의 오퍼캐스팅된 버전을 호스트(150)에 제공하도록 배열된다. 일례에서, 제어기(115)는 호스트(105)의 전원이 켜진 후 호스트(105)가 메모리 디바이스(105)와 통신을 설정하는 것에 응답하여 호스트(105)에 변화를 제공하도록 배열된다. 오퍼캐스팅된 L2P 맵을 호스트(105)에 서빙하기 위한 제어기(115)의 이러한 설비는 호스트(150)에 대한 전력-온 응답성을 크게 증가시킬 수 있어, 사용자 경험에 영향을 미치지 않으면서 호스트(105)에 대한 보다 적극적인 전력 절감 기술들을 가능하게 한다.
이러한 캐시로부터 호스트(105)를 서빙하는 것-예를 들어, 이를테면 어레이(120) 내에 휘발성 저장 장치가 있든 또는 비휘발성 저장 장치가 있든-은 온-더-플라이 L2P 오퍼케이션을 제거함으로써 호스트 동작들에 대한 레이턴시를 개선한다. 따라서, 일례에서, 메모리 제어기(115)는 업데이트된 부분에 대한 호스트 요청에 응답하여 업데이트된 L2P 부분의 오퍼케이션을 수행하지 않도록 배열된다.
상술된 메모리 제어기(115) 배열에 여러 이점이 발생할 수 있다. 이러한 이점들 중 일부에는 보안, 레이턴시 단축, 절전 및 호스트 부팅 시간이 포함된다. 보안과 관련하여, 공격자가 그것의 부여된 논리 어드레스에 속하지 않는 데이터에 액세스할 수 있게 하여, 호스트 L2P 데이터가 부당 변경될 수 있다. 메모리 디바이스(110)가 오퍼캐스팅된 L2P 맵만을 NAND 어레이(120)에 저장할 때, 공격자가 보호된 물리적 위치들에 액세스하는데 더 큰 장애물들이 있다.
처리량, 대기 시간 또는 서비스 품질(QOS)과 관련하여, 호스트(105)는 온-더-플라이 오퍼케이션이 캐치 업하기를 기다리면서, 기능 정지 없이 많은 L2P 맵을 요청할 수 있다. 더 정확히 말하면, 오퍼캐스팅된 영역들의 캐싱된 버전들은 임의의 판독만큼 빠르게 호스트(105)에 서빙될 수 있다. 이러한 효율성으로 인해 1 내지 4 밀리초 이상의 시간을 절감할 수 있다.
절전과 관련하여, 저장 장치의 많은 영역이 대부분 판독 전용일 수 있다. 절전을 위해, 호스트(105) 또는 메모리 디바이스(110)는 절전 상태(예를 들어, 슬립 상태)로 자주 진입할 수 있다. 그러한 절전 상태들은 일반적으로 호스트(105)가 그것의 L2P 매핑의 사본을 잃게 하는데, 이는 위에서 언급한 바와 같이 단순히 캐싱된 사본을 저장 장치로부터 판독함으로써 개선된다.
메모리 관리기(125)는 다른 것들 중에서도, 다양한 메모리 관리 기능과 연관된 여러 구성요소 또는 집적 회로와 같은 회로 또는 펌웨어를 포함할 수 있다. 본 설명을 위해, 예시적인 메모리 동작 및 관리 기능들이 NAND 메모리의 상황에서 설명될 것이다. 해당 기술분야의 통상의 기술자는 다른 형태들의 비휘발성 메모리가 유사한 메모리 동작들 또는 관리 기능들을 가질 수 있음을 인식할 것이다. 그러한 NAND 관리 기능들은 웨어 레벨링(예를 들어, 가비지 수집 또는 재생), 에러 검출 또는 정정, 블록 폐기 또는 하나 이상의 다른 메모리 관리 기능을 포함한다. 메모리 관리기(125)는 호스트 명령들(예를 들어, 호스트로부터 수신되는 명령들)을 디바이스 명령들(예를 들어, 메모리 어레이의 동작과 연관된 명령들 등)로 파싱 또는 포맷팅하거나, 또는 어레이 제어기(135) 또는 메모리 디바이스(110)의 하나 이상의 다른 구성요소에 대한 디바이스 명령들(예를 들어, 다양한 메모리 관리 기능을 실현하기 위한)을 생성할 수 있다.
메모리 관리기(125)는 메모리 디바이스(110)의 하나 이상의 구성요소와 연관된 다양한 정보(예를 들어, 메모리 제어기(115)에 연결되는 메모리 어레이 또는 하나 이상의 메모리 셀와 연관된 다양한 정보)를 유지하도록 구성된 관리 맵 집합(130)을 포함할 수 있다. 예를 들어, 관리 맵들(130)은 메모리 제어기(115)에 연결되는 메모리 셀들의 하나 이상의 블록에 대한 블록 에이지, 블록 소거 카운트, 에러 이력 또는 하나 이상의 에러 카운트(예를 들어, 기록 동작 에러 카운트, 판독 비트 에러 카운트, 판독 동작 에러 카운트, 소거 에러 카운트 등)에 관한 정보를 포함할 수 있다. 특정 예들에서, 에러 카운트들 중 하나 이상에 대해 검출된 에러들의 수가 임계치를 초과할 경우, 비트 에러를 정정 불가능한 비트 에러라고 지칭할 수 있다. 관리 맵들(130)은 다른 것들 중에서도 정정 가능한 또는 정정 불가능한 비트 에러들의 카운트를 유지할 수 있다. 일례로, 관리 맵들(130)은 변환 맵들 또는 L2P 매핑을 포함할 수 있다.
어레이 제어기(135)는 다른 것들 중에서도, 메모리 제어기(115)에 연결되는 메모리 디바이스(110)의 하나 이상의 메모리 셀에 데이터를 기록하거나, 그것들로부터 데이터를 판독하거나, 또는 그것들을 소거하는 것과 연관된 메모리 동작들을 제어하도록 구성된 회로 또는 구성요소들을 포함할 수 있다. 메모리 동작들은 예를 들어, 호스트(105)로부터 수신되거나, 또는 메모리 관리기(125)에 의해(예를 들어, 웨어 레벨링, 에러 검출 또는 정정 등과 관련하여) 내부적으로 생성되는 호스트 명령들에 기초할 수 있다.
어레이 제어기(135)는 에러 정정 코드(ECC, error correction code) 구성요소(140)를 포함할 수 있으며, 이는 ECC 엔진 또는 메모리 제어기(115)에 연결되는 메모리 디바이스(110)의 하나 이상의 메모리 셀에 데이터를 기록하거나 그것들로부터 데이터를 판독하는 것과 연관된 에러들을 검출 또는 정정하도록 구성된 다른 회로를 포함할 수 있다. 메모리 제어기(115)는 호스트(105)와 메모리 디바이스(110) 간에 전달되는 데이터의 무결성을 유지 또는 저장된 데이터의 무결성을 유지하면서(예를 들어, 리던던트 RAID 저장 장치 등을 사용하여), 데이터의 다양한 동작 또는 저장과 연관된 에러 발생들(예를 들어, 비트 에러들, 동작 에러들 등)을 능동적으로 검출하고 그로부터 복구하도록 구성될 수 있고, 향후 에러들을 방지하기 위해 실패 메모리 자원들(예를 들어, 메모리 셀들, 메모리 어레이들, 페이지들, 블록들 등)을 제거(예를 들어, 폐기)할 수 있다.
메모리 어레이(120)는 예를 들어, 다수의 디바이스, 평면, 서브-블록, 블록 또는 페이지로 배열된 여러 메모리 셀을 포함할 수 있다. 일례로, 48 GB TLC NAND 메모리 디바이스는 페이지당 18,592 바이트(B)의 데이터(16,384 + 2208 바이트), 블록당 1536 페이지, 평면당 548 블록 및 디바이스당 4 이상의 평면을 포함할 수 있다. 다른 예로서, 32 GB MLC 메모리 디바이스(셀당 2 비트의 데이터(즉, 4개의 프로그램 가능 상태)를 저장하는)는 페이지당 18,592 바이트(B)의 데이터(16,384 + 2208 바이트), 블록당 1024 페이지, 평면당 548 블록, 디바이스당 4 평면, 그러나 대응하는 TLC 메모리 디바이스로서 절반의 필요 기록 시간 두 배의 프로그램/소거(P/E) 사이클을 포함할 수 있다. 다른 예들은 다른 숫자들 또는 배열들을 포함할 수 있다. 일부 예에서, 메모리 디바이스 또는 그 일 부분은 SLC 모드 또는 요구되는 MLC 모드(이를테면 TLC, QLC 등)에서 선택적으로 작동될 수 있다.
작동시, 데이터는 통상적으로 페이지 단위로 NAND 메모리 디바이스(110)에 기록되거나 그로부터 판독되고, 블록 단위로 소거된다. 그러나, 하나 이상의 메모리 동작(예를 들어, 판독, 기록, 소거 등)은 요구되는 바에 따라 보다 크거나 보다 작은 메모리 셀들의 그룹들에 관해 수행될 수도 있다. NAND 메모리 디바이스(110)의 데이터 전달 크기는 통상적으로 페이지로 지칭되는 반면, 호스트의 데이터 전달 크기는 통상적으로 섹터로 지칭된다.
데이터의 페이지는 다수의 바이트의 사용자 데이터(예를 들어, 다수의 섹터의 데이터를 포함하는 데이터 페이로드) 및 그에 대응하는 메타 데이터를 포함할 수 있지만, 페이지의 크기는 보통 사용자 데이터를 저장하깅 위해 사용된 바이트 수만을 지칭한다. 일례로, 4 KB의 페이지 크기를 갖는 데이터의 페이지는 4 KB의 사용자 데이터(예를 들어, 섹터 크기 512 B를 가정하여 8개의 섹터)뿐만 아니라 사용자 데이터에 대응하는 다수의 바이트(예를 들어, 32 B, 54 B, 224 B 등)의 메타 데이터, 이를테면 무결성 데이터(예를 들어, 에러 검출 또는 정정 코드 데이터), 어드레스 데이터(예를 들어, 논리 어드레스 데이터 등), 또는 사용자와 연관된 다른 메타 데이터를 포함할 수 있다.
상이한 유형들의 메모리 셀들 또는 메모리 어레이들(120)은 상이한 페이지 크기들을 제공할 수 있거나, 또는 그것들과 연관된 상이한 양의 메타 데이터를 필요로할 수 있다. 예를 들어, 상이한 메모리 디바이스 유형들은 상이한 비트 에러율을 가질 수 있으며, 이는 데이터의 페이지의 무결성을 보장하기 위해 필요한 메타 데이터의 양을 상이하게할 수 있다(예를 들어, 높은 비트 에러율을 갖는 메모리 디바이스는 보다 낮은 비트 에러율을 갖는 메모리 디바이스보다 더 많은 바이트의 에러 수정 코드 데이터를 필요로할 수 있다). 일례로, 멀티 레벨 셀(MLC) NAND 플래시 디바이스는 대응하는 싱글 레벨 셀(SLC) NAND 플래시 디바이스보다 더 높은 비트 에러율을 가질 수 있다. 그에 따라, MLC 디바이스는 대응하는 SLC 디바이스보다 더 많은 메타 데이터 바이트의 에러 데이터를 필요로할 수 있다.
도 2는 호스트-캐시된 L2P 맵(225)으로 판독 요청을 수행하는 일례를 도시한다. 호스트(210)는 도 1과 관련하여 상술된 호스트(105)로서 동작할 수 있고, 메모리 디바이스(205)는 또한 도 1과 관련하여 상술된 메모리 디바이스(110)로서 동작할 수 있다. 도시된 바와 같이, 호스트(210)는 L2P 매핑을 위한 변환 맵(225)의 완전히 이용 가능한 사본을 포함한다. 메모리 디바이스(205)는 변환 맵(220)의 일 부분만이 메모리 디바이스(205)에 이용 가능하다는 점을 제외하고는 동일한 변환 맵(220)을 포함한다. 변환 맵(220)의 음영된 매핑들은 메모리 디바이스(110)에 현재 이용 가능하지 않고(예를 들어, 그것의 RAM에 로딩될 수 없고), 메모리 디바이스(205)의 보다 느린 저장장치(예를 들어, NAND 셀들)에 저장된다.
도시된 바와 같이, 호스트(210)는 논리 어드레스(LA), 변환 테이블(225)을 참조하여 결정된 물리 어드레스(PA) 양자를 포함하는 판독 요청(215)을 한다. 토큰은 요청(215)의 정확성을 검증하기 위해 사용될 수 있다.. 도시된 예에서, 메모리 디바이스(205)는 판독 요청들의 정보를 사용하여 요청의 정확성-예를 들어, LA 및 PA가 일치하거나, 토큰이 PA와 함께 저장된 토큰과 일치하거나, 또는 양자-을 검증하고 변환 맵(220)을 참조하지 않고 판독을 수행한다. 이러한 상황에서, 판독이 논리 어드레스 'A'에 대한 것이었다면, 상기한 동작들은 메모리 디바이스(205)가 물리 어드레스 'AA'에서의 데이터가 판독되고 있었다는 것을 결정하기 위해 변환 맵(220)의 음영된 부분을 작업 메모리(예를 들어, RAM)에 로딩할 필요가 없기 때문에 판독을 수행할 때 처리량을 줄일 수 있다. 일례에서, 메모리 디바이스(205)는 호스트의 L2P 맵이 통용되는지를 나타내는 맵을 포함한다. 맵이 호스트 L2P 맵이 통용되지 않는다-이를테면 메모리 디바이스(205)의 L2P 맵이 호스트가 L2P 맵을 마지막으로 수신한 이후 변경되었다-는 것을 나타낸다면 메모리 디바이스는 검증을 스킵할 수 있고, 단순히 L2P 맵을 사용하여 PA를 색인한다. 이는 호스트의 정보의 통용이 신뢰될 수 없을 때, 추가 검증 처리 및 가능한 에러들을 방지한다.
도 3은 기록 요청을 수행하고 물리 어드레스들을 리프레시하는 일례를 도시한다. 호스트(210)는 각각 도 1 및 도 2와 관련하여 상술된 호스트(105) 또는 호스트(210)로서 동작할 수 있고, 메모리 디바이스(305)는 또한 각각 도 1 및 도 2와 관련하여 상술된 메모리 디바이스(110) 또는 메모리 디바이스(205)로서 동작할 수 있다. 여기서, 메모리 디바이스(305)는 논리 어드레스 'C'의 물리 어드레스를 'XX'로 업데이트하였다. 이러한 변경은 요소(340)에서 변환 테이블(320)에 반영된다. 그러나, 호스트(310)에 의해 보유되는 변환 맵(325)의 대응하는 요소(350)는 아직 정확한 매핑을 반영하지 않는다(예를 들어, 변환 맵(325)이 오래되었다). 이를 정정하기 위해, 메모리 디바이스(305)는 기록 요청에 응답하여 생성된 상태 메시지(315)를 통해 호스트(310)에 정정된 엔트리(345)를 갖는 중복 변환 맵(335)을 제공한다. 그 다음 호스트(310)는 차후 요청들을 위해 그것의 변환 맵(325)을 업데이트할 수 있다. 상태 메시지에 공간이 보통 제한되기 때문에(예를 들어, 일부 상태 메시지에는 단지 하나 또는 두 업데이트만 제출될 수 있음), 상태 메시지를위한 공간을 갖는 각 통신에서 상태가 큐잉 및 전달될 수 있다. 예를 들어, 에러 없이 명령을 완료시, 상태 데이터가 보통 사용되지 않으므로, 업데이트 상태 메시지를 호스트에 전달할 수 있다.
상술된 바와 같이, 메모리 디바이스(305)는 업데이트된 엔트리(340)에 대응하는 토큰을 생성할 수 있다. 이러한 토큰은 또한 예를 들어, 그것이 변환 맵(335)에 포함되지 않을 때 상태 요청에서 송신된다. 일례에서, 메모리 디바이스(305)의 카운터(330)가 토큰을 생성하는데 사용된다. 상술된 바와 같이, 이는 토큰 기법의 재전송 공격에 방어할 수 있다.
또한, 상술된 바와 같이, 맵은 호스트의 매핑 정보가 통용되지 않기 때문에 전통적인 L2P 맵 색인이 사용되어야 하는지 여부를 직접 결정하는데 사용될 수 있다.
도 4는 물리 어드레스들을 오퍼캐스팅(obfuscating)하는 일례를 도시한다. 호스트(410)는 각각 도 1 내지 도 3과 관련하여 상술된 호스트(105), 호스트(210) 또는 호스트(310)로서 동작할 수 있고, 메모리 디바이스(405)는 또한 각각 도 1 내지 도 3과 관련하여 상술된 메모리 디바이스(110), 메모리 디바이스(205) 또는 메모리 디바이스(305)로서 동작할 수 있다. 여기서, 메모리 디바이스(405)의 변환 맵(420)은 내부 물리 어드레스 대 논리 어드레스 매핑들을 포함하고 호스트(410)의 변환 맵(425)은 외부 물리 어드레스 내 동일한 논리 어드레스 매핑들을 포함한다. 메모리 디바이스(405)는 상태 메시지(415)를 통해 또는 다른 메모리 디바이스-호스트(410) 통신을 통해 맵(435)에서의 외부 물리 어드레스 매핑들을 전달한다. 상술된 바와 같이, 로컬 변환 맵(420) 색인을 피하기 위해, 내부 물리 어드레스들을 직접 도출하는데 외부 물리 어드레스들이 메모리 디바이스(405)에 의해 사용될 수 있다. 이러한 직접 도출을 실현하기 위한 기술은 메모리 디바이스(405)에 의해 보유된 키(430)로 맵(420)의 내부 물리 어드레스들을 대칭적으로 암호화하는 것이다. 암호화된 어드레스들은 업데이트 맵(435)에서의 호스트(410)로 전달된다. 호스트(410)는 외부 물리 어드레스들을 복호화하는 것이 아니라, 그것들을 호스트-캐시된 L2P 매핑 기술에 따라 사용하여 동작이 속하는 물리 어드레스를 나타낸다. 그 다음 메모리 디바이스(405)는 요청(예를 들어, 판독 또는 기록 요청)에서 외부 물리 어드레스를 복호화하는데 키(430)를 사용하며, 외부 물리 어드레스의 복호화된 형태는 내부 물리 어드레스이다. 상술된 바와 같이, 전체 물리 어드레스 페이로드(예를 들어, 물리 어드레스 및 제어 데이터)를 암호화하면 보다 양호한 결과를 제공할 수 있다. 이는 많은 보안 암호화 기술이 최소 8-바이트 블록 크기를 갖기 때문에 발생할 수 있다.
이러한 기술은 동일한 내부 물리 어드레스에 대해 상이한 외부 어드레스들을 제공하기 위해 시간에 흐르면서 시드, 상이한 키 등으로 증강될 수 있다. 내부 도출 요소들(예를 들어, 키, 시퀀스 번호, 랜덤 시드 등)이 호스트 변환 맵(425)과 동기화되는 경우, 메모리 디바이스(405)는 호스트(405)에 의해 제공되는 외부 물리 어드레스들로부터 내부 물리 어드레스를 직접 도출할 수 있다. 그에 따라, 도시된 바와 같이, 맵(420)에서 논리 어드레스 'C'에 대한 내부 물리 어드레스는 'CC'이다. 어드레스 'CC'의 이전의 암호화는 맵(425)에서 논리 어드레스 'C'에 대해 제시된 바와 같이 'KK'를 생성했다. 그러나, 도출 요소들의 변경(예를 들어, 변경된 키, 새로운 시드 등)은 이제 'CC'를 논리 요소 'C'에 대해 'WW'로 암호화시키며, 이는 맵(435)에서의 상태 메시지(415)에 호스트(405)로 전달되고 있다. 일단 수신되면, 맵(435)은 차후 요청들에 대해 자체 맵(425)을 업데이트하는데 호스트(405)에 의해 사용될 것이다.
도 5는 효율적인 오퍼캐스팅된 논리 대 물리 매핑을 위한 시스템의 일례를 통한 데이터 흐름을 도시한다. 호스트(505)는 각각 도 1 내지 도 4와 관련하여 상술된 호스트(105), 호스트(210), 호스트(310) 또는 호스트(410)로서 동작할 수 있고, 메모리 디바이스(510)는 또한 각각 도 1 내지 도 4와 관련하여 상술된 메모리 디바이스(110), 메모리 디바이스(205), 메모리 디바이스(305) 도는 메모리 디바이스(405)로서 동작할 수 있다. 도시된 바와 같이, 호스트(505)는 L2P 영역 맵들을 호스팅하기 위한 DRAM 버퍼를 갖는다. DRAM의 사용은 필수적이지는 않지만, SRAM 등과 비교할 때 DRAM의 수용 가능한 성능 및 감소된 비용으로 인한 것일 수 있다.
메모리 디바이스(510)가 유지보수 동작들을 수행하고 있을 때, 그것은 L2P 매핑들의 사본들을 NAND 어레이에 캐싱할 것이다(데이터 흐름 525). 도시된 바와 같이, "P" 배지는 평문 서브-영역 맵들을 나타낸다. 이러한 평문 영역 맵들을 업데이트한 유지보수 동작을 수행할 때, 메모리 디바이스(510)는 또한 암호화 엔진(520)을 사용하여 암호화된 맵들("E" 배지로 도시됨)을 NAND 어레이(530)에 생성 및 캐싱할 수 있다(데이터 흐름 515). 유지보수 동작들의 예는 가비지 수집 또는 웨어 레벨링을 포함할 수 있다.
가비지 수집은 백그라운드에서 유효한 물리 데이터를 이동하여 제거할 블록을 비운다. 일반적으로 가비지 수집은 논리적으로 순차적인 순서로 데이터를 선택하고 데이터를 연접 물리 블록들에 패킹한다. 이것이 L2P 매핑들에 적용될 때, 업데이트된 L2P 맵 세그먼트들은 백그라운드 구축된 사전 암호화된 서브-영역 맵으로서 NAND 어레이(530)에 암호화 및 저장하는데 쉽게 이용 가능하다.
나아가,웨어 레벨링은 블록에 대응하는 L2P 맵들의 수를 검출할 수 있고 그것들을 웨어 레벨링을 수행하는 동안 메모리 디바이스(510)의 작업 메모리로 로딩할 수 있다. 이는 보다 적은 L2P 맵들이 영향을 받는 논리 어드레스들에 대해 암호화되는 새로운 L2P 매핑들로 업데이트되게 할 수 있다.
호스트(505)가 메모리 디바이스(510)로부터 논리 블록 어드레스들(LBA들)을 요청할 때, 메모리 디바이스(510)는 호스트(505)에 의해 이미 체크 아웃된 영역 리스트 및 영역들을 참고한다. 이러한 정보는 NAND 어레이(530)로부터 호스트에 서빙할 오퍼캐스팅된 서브-영역들을 선택하는데 사용된다.
여기에 설명된 기술을 사용하면, 여러 이점이 발생한다. 예를 들어, 메모리 디바이스(510)의 보안은 예를 들어, L2P 매핑들이 오퍼캐스팅된 형태로 저장될 때 증가한다. 나아가, NAND 어레이(530)에서 오퍼캐스팅된 L2P 맵들의 사전-계산 및 캐싱을 통해 L2P 맵들을 호스트(505)에 제공할 때의 레이턴시가 단축된다. 사전-계산된 오퍼캐스팅된 맵들을 NAND 어레이(530)로부터 호스트로 전송함으로써 호스트(505)에 대한 보다 빠른 부팅 시간이 달성될 수도 있다.
호스트(505)는 또한 오퍼캐스팅된 L2P가 메모리 디바이스(510)로부터 호스트(505)로 더 빨리 전달되기 때문에 L2P 매핑들에 더 적은 DRAM을 충당함으로써 이익을 얻을 수 있다.
도 6은 관리되는 NAND 디바이스에 있어서 논리 대 물리 맵 동기화를 위한 방법의 일례의 흐름도를 도시한다. 방법(600)의 동작들은 하드웨어 컴퓨팅에 의해 수행된다. 그러한 컴퓨팅 하드웨어의 일례는 도 1과 관련하여 상술된 메모리 제어기(115) 또는 메모리 디바이스(110)의 다른 처리 회로, 다른 컴퓨터 구성요소들, 이를테면 외부 메모리 제어기를 포함할 수 있다.
동작 605에서, 관리되는 NAND 디바이스에 대한 L2P 맵의 평문 부분이 업데이트되어 업데이트된 부분을 생성한다. 일례에서, 부분의 크기는 관리되는 NAND와 호스트 간 통신 프로토콜에 정의된다.
동작 610에서, L2P 맵의 평문 부분을 업데이트하는 것에 응답하여, 업데이트된 부분을 오퍼캐스팅하여 업데이트된 부분의 오퍼캐스팅된 버전이 생성된다. 일례에서, 업데이트된 부분을 오퍼캐스팅하는 것은 업데이트된 부분을 암호화하는 것을 포함한다.
일례에서, 동작 610은 또한 트리거에 응답하여 수행된다. 일례에서, 트리거는 관리되는 NAND 디바이스에 의해 수행되는 유지보수 액션이다. 일례에서, 유지보수 액션은 가비지 수집 또는 웨어 레벨링 중 적어도 하나이다. 일례에서, 가비지 수집은 연속 가비지 수집(serializing garbage collection)이다. 일례에서, 가비지 수집 또는 웨어 레벨링 동작을 받고 업데이트된 부분에 대응하는 블록들은 순차적이다.
일례에서, 동작 610은 또한 동작 605의 부분인 변화의 크기가 임계를 초과하는 것에 응답하여 수행된다.
동작 615에서, 업데이트된 부분 및 부분의 오퍼캐스팅된 버전 양자가 저장 장치에 저장된다.
동작 620에서, 호스트로부터 업데이트된 부분에 대한 요청이 수신된다. 일례에서, 동작 610은 호스트로부터 업데이트된 부분에 대한 요청에 응답하여 수행되지 않는다.
동작 625에서, 호스트로부터 요청을 수신하는 것에 응답하여, 저장 장치로부터 호스트에 업데이트된 부분의 오퍼캐스팅된 버전을 제공한다.
도 7은 여기서 논의된 임의의 하나 이상의 기술(예를 들어, 방법론)이 수행할 수 있는 예시적인 기계(700)의 블록도를 도시한다. 대안적인 실시 예들에서, 기계(700)는 독립형 디바이스로서 작동할 수 있거나 다른 기계들에 연결(예를 들어, 네트워킹)될 수 있다. 네트워킹된 전개에서, 기계(700)는 서버-클라이언트 네트워크 환경들에서 서버 기계, 클라이언트 기계 또는 양자의 역할로 작동할 수 있다. 일례로, 기계(700)는 피어 투 피어(P2P)(또는 다른 분산된) 네트워크 환경에서 피어 기계으로서의 역할을할 수 있다. 기계(700)는 개인용 컴퓨터(PC), mapt PC, 셋톱 박스(STB), 개인용 정보 단말기(PDA), 모바일 전화, 웹 기기, IoT 디바이스, 자동차 시스템 또는 해당 기계이 취해질 조치들을 지정하는 명령들을 실행할 수 있는(순차적 또는 그 외) 임의의 기계일 수 있다. 나아가, 단일 기계만이 도시되어 있지만, "기계"라는 용어는 또한 클라우드 컴퓨팅, SaaS(Software as a Service), 기타 컴퓨터 클러스터 구성들과 같이, 여기서 논의된 임의의 하나 이상의 방법론을 수행하기 위한 명령들의 집합(또는 다수의 집합)을 개별적으로 또는 공동으로 실행하는 임의의 기계 집합을 포함하는 것으로 간주된다.
여기서 설명된 바와 같은 예들은 로직, 구성요소들, 디바이스들, 패키지들 또는 메커니즘들을 포함하거나 이에 의해 작동할 수 있다. 회로는 하드웨어(예를 들어, 단순 회로, 게이트, 논리 등)를 포함하는 유형의 개체들로 구현된 회로 집단(예를 들어, 집합)이다. 회로 자격은 시간이 지남에 따라 유연하고 기저 하드웨어 변동이 있을 수 있다. 회로들은 작동시 단독으로 또는 조합하여 특정 작업들을 수행할 수 있는 멤버들을 포함한다. 일례로, 회로의 하드웨어는 불변으로 특정 동작(예를 들어, 하드웨어에 내장된)을 수행하도록 설계될 수 있다. 일례로, 회로의 하드웨어는 특정 작업의 명령들을 인코딩하기 위해 물리적으로 변형된(예를 들어, 자기적으로, 전기적으로, 불변의 질량 입자들의 가동 배치 등) 컴퓨터 판독 가능 매체를 포함하여 물리적 구성들(예를 들어, 실행 유닛들, 트랜지스터들, 단순 회로들 등)에 가변적으로 연결되는 것을 포함할 수 있다. 물리적 구성요소들을 연결할 때, 하드웨어 구성요소의 기저 전기적 속성들은 예를 들어, 절연체에서 도체로 또는 그 반대로 변경된다. 명령들은 참여 하드웨어(예를 들어, 실행 유닛들 또는 로딩 메커니즘)가 작동 중에 특정 작업들의 부분들을 수행하기 위해 가변 연결을 통해 하드웨어에서 회로의 멤버들을 생성할 수 있게 한다. 따라서, 컴퓨터 판독 가능 매체는 디바이스가 작동할 때 회로의 다른 구성요소들에 통신 가능하게 연결된다. 일례로, 임의의 물리적 구성요소들은 하나보다 많은 회로의 하나 이상의 멤버에 사용될 수 있다. 예를 들어, 동작 하에서, 실행 유닛들은 한 시점에 제1 회로의 제1 회로에 사용될 수 있고, 상이한 시간에 제1 회로에서 제2 회로에 의해, 또는 제2 회로에서 제3 회로에 의해 재사용될 수 있다.
기계(예를 들어, 컴퓨터 시스템)(700)(예를 들어, 호스트 디바이스(105), 메모리 디바이스(110) 등)은 하드웨어 프로세서(702)(예를 들어, 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 하드웨어 프로세서 코어, 또는 이들의 임의의 조합, 이를테면 메모리 제어기(115) 등), 메인 메모리(704) 및 정적 메모리(706)를 포함할 수 있으며, 이들 중 일부 또는 전부는 인터링크(예를 들어, 버스)(708)를 통해 서로 통신할 수 있다. 기계(700)는 디스플레이 유닛(710), 영숫자 입력 디바이스(712)(예를 들어, 키보드) 및 사용자 인터페이스(UI) 내비게이션 디바이스(714)(예를 들어, 마우스)를 더 포함할 수 있다. 일례로, 디스플레이 유닛(710), 입력 디바이스(712) 및 UI 내비게이션 디바이스(714)는 터치 스크린 디스플레이일 수 있다. 기계(700)는 저장 디바이스(예를 들어, 구동 유닛)(721), 신호 생성 디바이스(718)(예를 들어, 스피커), 네트워크 인터페이스 디바이스(720) 및 하나 이상의 센서(716), 이를테면 GPS(global positioning system) 센서, 나침반, 가속도계 또는 다른 센서를 추가로 포함할 수 있다. 기계(700)는 하나 이상의 주변 디바이스(예를 들어, 프린터, 카드 리더 등)와 통신 또는 제어하기 위해 직렬(예를 들어, USB(universal serial bus), 병렬 또는 다른 유선 또는 무선(예를 들어, 적외선(IR), 근거리 통신(NFC) 등)) 연결과 같은 출력 제어기(728)를 포함할 수 있다.
저장 디바이스(716)는 여기에 설명된 기술들 또는 기능들 중 임의의 하나 이상에 의해 채용되거나 이용되는 하나 이상의 데이터 구조 또는 명령 집합(724)(예를 들어, 소프트웨어)이 저장되는 기계 판독 가능 매체(722)를 포함할 수 있다. 명령들(724)은 또한 기계(700)에 의해 실행되는 동안 메인 메모리(704) 내에, 정적 메모리(706) 내에, 또는 하드웨어 프로세서(702) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 예를 들어, 하드웨어 프로세서(702), 메인 메모리(704), 정적 메모리(706) 또는 저장 디바이스(716)의 하나 또는 임의의 조합은 기계 판독 가능 매체(722)를 구성할 수 있다.
기계 판독 가능 매체(722)가 단일 매체로서 도시되어 있지만, "기계 판독 가능 매체"라는 용어는 하나 이상의 명령(724)을 저장하도록 구성된 단일 매체 또는 다수의 매체(예를 들어, 중앙 집중식 또는 분산 데이터베이스, 또는 관련 캐시들 및 서버들)를 포함할 수 있다.
"기계 판독 가능 매체"라는 용어는 기계(700)에 의한 실행을 위한 명령들을 저장, 인코딩 또는 전달할 수 있고 기계(700)가 본 개시 내용의 기술들 중 임의의 하나 이상을 수행하게 하거나, 또는 그러한 명령들에 의해 사용되거나 그것들과 연관된 데이터 구조들을 저장, 인코딩 또는 전달할 수 있는 임의의 매체를 포함할 수 있다. 비제한적 기계 판독 가능 매체의 예들은 고체 상태 메모리, 및 광학 및 자기 매체를 포함할 수 있다. 일례로, 대용량 기계 판독 가능 매체는 불변(예를 들어, 움직이지 않는) 질량체를 갖는 복수의 입자를 갖는 기계 판독 가능 매체를 포함한다. 따라서, 대용량 기계 판독 가능 매체는 일시적 전파 신호들이 아니다. 대량 기계 판독 가능 매체의 구체적인 예들은: 비휘발성 메모리, 이를테면 반도체 메모리 디바이스(예를 들어, EPROM(Electrically Programmable Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory)) 및 플래시 메모리 디바이스; 자기 디스크, 이를테면 내부 하드 디스크 및 이동식 디스크; 광-자기 디스크; 및 CD-ROM 및 DVD-ROM 디스크를 포함할 수 있다.
명령들(724)(예를 들어, 소프트웨어, 프로그램, 운영 체제(OS) 등) 또는 다른 데이터는 저장 디바이스(721) 상에 저장되고, 프로세서(702)에 의해 사용하기 위해 메모리(704)에 의해 액세스될 수 있다. 메모리(704)(예를 들어, DRAM)는 통상적으로 빠르지 만 휘발성이며, 그에 따라 "오프" 조건에 있는 동안을 포함하여 장기 저장에 적합한 저장 디바이스(721)(예를 들어, SSD)와 상이한 유형의 저장 장치이다. 명령들(724) 또는 사용자 또는 기계(700)에 의해 사용되는 데이터는 통상적으로 프로세서(702)에 의한 사용을 위해 메모리(704)에 로딩된다. 메모리(704)가 가득 찰 때, 저장 디바이스(721)로부터의 가상 공간은 메모리(704)를 보충하기 위해 할당될 수 있다; 그러나, 저장 디바이스(721)는 통상적으로 메모리(704)보다 느리고, 기록 속도는 통상적으로 판독 속도보다 적어도 2배 느리기 때문에, 가상 메모리의 사용은(메모리(704), 예를 들어 DRAM과는 대조적으로) 저장 디바이스 레이턴시로 인해 사용자 경험을 크게 감소시킬 수 있다. 나아가, 가상 메모리에 저장 디바이스(721)를 사용하면 저장 디바이스(721)의 사용 가능한 수명을 크게 줄일 수 있다.
가상 메모리와 대조적으로, 가상 메모리 압축(예를 들어, Linux® 커널 특징 "ZRAM")은 메모리의 부분을 압축된 블록 저장 디바이스로서 사용하여 저장 디바이스(721)로의 페이징을 방지한다. 페이징은 그러한 데이터를 저장 디바이스(721)에 기록할 필요가 있을 때까지 압축된 블록에서 발생한다. 가상 메모리 압축은 사용 가능한 메모리(704)의 크기를 증가시키면서, 저장 디바이스(721) 상의 웨어를 감소시킨다.
모바일 전자 디바이스들 또는 모바일 저장 장치에 최적화된 저장 디바이스들은 전통적으로 MMC 고체 상태 저장 디바이스(예를 들어, microSD™(micro Secure Digital) 카드 등)를 포함한다. MMC 디바이스들은 호스트 디바이스와 다수의 병렬 인터페이스(예를 들어, 8-비트 병렬 인터페이스)를 포함하고, 종종 호스트 디바이스에서 분리 가능하고 이와 별개의 구성요소들이다. 대조적으로, eMMC™ 디바이스들은 회로 보드에 부착되어 있고 판독 속도가 직렬 ATA™(Serial AT(Advanced Technology) Attachment 또는 SATA) 기반 SSD 디바이스들에 필적하는 호스트 디바이스의 구성요소로 간주된다. 그러나 가상 또는 증강 현실 디바이스들을 완전히 활성화하고 네트워크 속도를 높이는 등 모바일 디바이스 성능에 대한 요구가 계속 증가하고 있다. 이러한 요구에 부응하여, 저장 디바이스들은 병렬에서 직렬 통신 인터페이스들로 전환되었다. 제어기들 및 펌웨어를 비롯한 UFS(Universal Flash Storage) 디바이스들은 전용 판독/기록 경로들이 있는 저전압 차동 신호(LVDS) 직렬 인터페이스를 사용하여 호스트 디바이스와 통신하여, 나아가 판독/기록 속도를 향상시킨다.
명령들(724)은 또한 다수의 전송 프로토콜(예를 들어, 프레임 릴레이, 인터넷 프로토콜(IP), 전송 제어 프로토콜(TCP), 사용자 데이터그램 프로토콜(UDP), 하이퍼텍스트 전송 프로토콜(HTTP) 등) 중 어느 하나를 이용하여 네트워크 인터페이스 디바이스(720)를 통해 전송 매체를 사용하여 통신 네트워크(726)을 통해 송신 또는 수신될 수 있다. 예시적인 통신 네트워크들은 다른 것들 중에서도, 근거리 통신망(LAN), 광역 통신망(WAN), 패킷 데이터 네트워크(예를 들어, 인터넷), 모바일 전화 네트워크(예를 들어, 셀룰러 네트워크), POTS(Plain Old Telephone) 네트워크, 및 무선 데이터 네트워크(예를 들어, Wi-Fi®로 알려진 IEEE(Institute of Electrical and Electronics Engineers) 802.11 표준 계열, WiMax®로 알려진 IEEE 802.16 표준 계열), IEEE 802.15.4 표준 계열, 피어 투 피어(P2P) 네트워크를 포함할 수 있다. 일례로, 네트워크 인터페이스 디바이스(720)는 통신 네트워크(726)에 연결하기 위한 하나 이상의 물리적 잭(예를 들어, 이더넷, 동축 또는 전화 잭) 또는 하나 이상의 안테나를 포함할 수 있다. 일례로, 네트워크 인터페이스 디바이스(720)는 단일 입력 다중 출력(SIMO), 다중 입력 다중 출력(MIMO), 또는 다중 입력 단일 출력(MISO) 기술 중 적어도 하나를 사용하여 무선으로 통신하기 위한 복수의 안테나를 포함한다. "전송 매체"라는 용어는 기계(700)에 의한 실행을 위한 명령들을 저장, 인코딩 또는 전달할 수 있는 임의의 무형 매체를 포함하는 것으로 간주되어야 하고, 그러한 소프트웨어의 통신을 가능하게 하기 위해 디지털 또는 아날로그 통신 신호들 또는 다른 무형 매체를 포함한다.
추가 예들:
예 1은 관리되는 메모리 디바이스에 있어서 논리 대 물리(L2P) 맵 동기화를 구현하기 위한 메모리 디바이스로서, 처리 회로; 및 명령들을 포함하는 저장 장치로서, 상기 명령들은 상기 처리 회로에 의해 실행될 때, 상기 처리 회로를: 상기 관리되는 메모리 디바이스에 대한 L2P 맵의 평문 부분을 업데이트된 부분으로서 업데이트하도록; 상기 L2P 맵의 상기 평문 부분을 업데이트하는 것에 응답하여, 상기 업데이트된 부분을 오퍼캐스팅하여 상기 업데이트된 부분의 오퍼캐스팅된 버전을 생성하도록; 상기 업데이트된 부분 및 상기 업데이트된 부분의 상기 오퍼캐스팅된 버전을 저장 장치에 저장하도록; 호스트로부터 상기 업데이트된 부분에 대한 요청을 수신하도록; 그리고 상기 요청을 수신하는 것에 응답하여, 상기 저장 장치로부터 상기 부분의 상기 오퍼캐스팅된 버전을 제공하도록 구성하는, 메모리 디바이스이다.
예 2에서, 예 1의 주제는, 상기 처리 회로가 상기 명령들에 의해 동작시 상기 평문 부분의 업데이트 및 트리거 양자에 응답하여 상기 업데이트된 부분을 오퍼캐스팅하도록 구성된다.
예 3에서, 예 2의 주제는, 상기 트리거가 상기 관리되는 NAND 디바이스에 의해 수행되는 유지보수 액션이다.
예 4에서, 예 3의 주제는 상기 유지보수 액션이 또는 또는 웨어 레벨링 중 적어도 하나이다.
예 5에서, 예 4의 주제는, 상기 가비지 수집이 연속 가비지 수집(serializing garbage collection)이다.
예 6에서, 예 4-5 중 임의의 예의 주제는 상기 가비지 수집 또는 웨어 레벨링 동작을 받고 상기 업데이트된 부분에 대응하는 블록들이 순차적이다.
예 7에서, 예 1-6 중 임의의 예의 주제는 상기 처리 회로가 상기 명령들에 의해 동작시 상기 평문 부분의 업데이트 및 상기 업데이트의 부분인 변화의 크기가 임계치를 초과하는 것 양자에 응답하여 상기 업데이트된 부분을 오퍼캐스팅하도록 구성된다.
예 8에서, 예 1-7 중 임의의 예의 주제는 상기 처리 회로가 상기 명령들에 의해 동작시 호스트로부터의 상기 업데이트된 부분에 대한 상기 요청에 응답하여 상기 업데이트된 부분을 오퍼캐스팅하도록 구성되지 않는다.
예 9에서, 예 1-8 중 임의의 예의 주제는 상기 업데이트된 부분을 오퍼캐스팅하기 위해, 상기 명령들은 상기 처리 회로를 상기 업데이트된 부분을 암호화하도록 구성한다.
예 10에서, 예 1-9 중 임의의 예의 주제는 상기 업데이트된 부분의 크기가 상기 관리되는 NAND와 상기 호스트 간 통신 프로토콜에 정의된다.
예 11은 관리되는 메모리 디바이스에 있어서 논리 대 물리(L2P) 맵 동기화를 위한 방법으로서, 상기 관리되는 메모리 디바이스에 대한 L2P 맵의 평문 부분을 업데이트된 부분으로서 업데이트하는 단계; 상기 L2P 맵의 상기 평문 부분을 업데이트하는 것에 응답하여, 상기 업데이트된 부분을 오퍼캐스팅하여 상기 업데이트된 부분의 오퍼캐스팅된 버전을 생성하는 단계; 상기 업데이트된 부분 및 상기 업데이트된 부분의 상기 오퍼캐스팅된 버전을 저장 장치에 저장하는 단계; 호스트로부터 상기 업데이트된 부분에 대한 요청을 수신하는 단계; 및 상기 요청을 수신하는 것에 응답하여, 상기 저장 장치로부터 상기 부분의 상기 오퍼캐스팅된 버전을 제공하는 단계를 포함하는, 방법이다.
예 12에서, 예 11의 주제는 상기 평문 부분을 업데이트하는 것에 응답하여 상기 업데이트된 부분을 오퍼캐스팅하는 단계가 또한 트리거에 응답한다.
예 13에서, 예 12의 주제는, 상기 트리거가 상기 관리되는 NAND 디바이스에 의해 수행되는 유지보수 액션이다.
예 14에서, 예 13의 주제는 상기 유지보수 액션이 또는 또는 웨어 레벨링 중 적어도 하나이다.
예 15에서, 예 14의 주제는, 상기 가비지 수집이 연속 가비지 수집이다.
예 16에서, 예 14-15 중 임의의 예의 주제는 상기 가비지 수집 또는 웨어 레벨링 동작을 받고 상기 업데이트된 부분에 대응하는 블록들이 순차적이다.
예 17에서, 예 11-16 중 임의의 예의 주제는 상기 평문 부분을 업데이트하는 것에 응답하여 상기 업데이트된 부분을 오퍼캐스팅하는 단계가 또한 상기 업데이트의 부분인 변화의 크기가 임계치를 초과하는 것에 응답한다.
예 18에서, 예 11-17 중 임의의 예의 주제는 상기 업데이트된 부분을 오퍼캐스팅하는 단계가 상기 호스트로부터의 상기 업데이트된 부분에 대한 요청에 응답하여 수행되지 않는다.
예 19에서, 예 11-18 중 임의의 예의 주제는 상기 업데이트된 부분을 오퍼캐스팅하는 단계가 상기 업데이트된 부분을 암호화하는 단계를 포함한다.
예 20에서, 예 11-19 중 임의의 예의 주제는 상기 업데이트된 부분의 크기가 상기 관리되는 NAND와 상기 호스트 간 통신 프로토콜에 정의된다.
예 21은 관리되는 메모리 디바이스에 있어서 논리 대 물리(L2P) 맵 동기화를 구현하기 위한 명령들을 포함하는 기계 판독 가능한 매체로서, 상기 명령들은 처리 회로에 의해 실행될 때, 상기 처리 회로로 하여금: 상기 관리되는 메모리 디바이스에 대한 L2P 맵의 평문 부분을 업데이트된 부분으로서 업데이트하는 동작들; 상기 L2P 맵의 상기 평문 부분을 업데이트하는 것에 응답하여, 상기 업데이트된 부분을 오퍼캐스팅하여 상기 업데이트된 부분의 오퍼캐스팅된 버전을 생성하는 동작들; 상기 업데이트된 부분 및 상기 업데이트된 부분의 상기 오퍼캐스팅된 버전을 저장 장치에 저장하는 동작들; 호스트로부터 상기 업데이트된 부분에 대한 요청을 수신하는 동작들; 및 상기 요청을 수신하는 것에 응답하여, 상기 저장 장치로부터 상기 부분의 상기 오퍼캐스팅된 버전을 제공하는 동작들을 수행하게 하는, 기계 판독 가능한 매체이다.
예 22에서, 예 21의 주제는 상기 평문 부분을 업데이트하는 것에 응답하여 상기 업데이트된 부분을 오퍼캐스팅하는 동작들이 또한 트리거에 응답한다.
예 23에서, 예 22의 주제는, 상기 트리거가 상기 관리되는 NAND 디바이스에 의해 수행되는 유지보수 액션이다.
예 24에서, 예 23의 주제는 상기 유지보수 액션이 또는 또는 웨어 레벨링 중 적어도 하나이다.
예 25에서, 예 24의 주제는, 상기 가비지 수집이 연속 가비지 수집이다.
예 26에서, 예 24-25 중 임의의 예의 주제는 상기 가비지 수집 또는 웨어 레벨링 동작을 받고 상기 업데이트된 부분에 대응하는 블록들이 순차적이다.
예 27에서, 예 21-26 중 임의의 예의 주제는 상기 평문 부분을 업데이트하는 것에 응답하여 상기 업데이트된 부분을 오퍼캐스팅하는 동작들이 또한 상기 업데이트의 부분인 변화의 크기가 임계치를 초과하는 것에 응답한다.
예 28에서, 예 21-27 중 임의의 예의 주제는 상기 업데이트된 부분을 오퍼캐스팅하는 동작들이 상기 호스트로부터의 상기 업데이트된 부분에 대한 요청에 응답하여 수행되지 않는다.
예 29에서, 예 21-28 중 임의의 예의 주제는 상기 업데이트된 부분을 오퍼캐스팅하는 동작들이 상기 업데이트된 부분을 암호화하는 동작들을 포함한다.
예 30에서, 예 21-29 중 임의의 예의 주제는 상기 업데이트된 부분의 크기가 상기 관리되는 NAND와 상기 호스트 간 통신 프로토콜에 정의된다.
예 31은 관리되는 메모리 디바이스에 있어서 논리 대 물리(L2P) 맵 동기화를 위한 시스템으로서, 상기 관리되는 메모리 디바이스에 대한 L2P 맵의 평문 부분을 업데이트된 부분으로서 업데이트하기 위한 수단들; 상기 L2P 맵의 상기 평문 부분을 업데이트하는 것에 응답하여, 상기 업데이트된 부분을 오퍼캐스팅하여 상기 업데이트된 부분의 오퍼캐스팅된 버전을 생성하기 위한 수단들; 상기 업데이트된 부분 및 상기 업데이트된 부분의 상기 오퍼캐스팅된 버전을 저장 장치에 저장하기 위한 수단들; 호스트로부터 상기 업데이트된 부분에 대한 요청을 수신하기 위한 수단들; 및 상기 요청을 수신하는 것에 응답하여, 상기 저장 장치로부터 상기 부분의 상기 오퍼캐스팅된 버전을 제공하기 위한 수단들을 포함하는, 시스템이다.
예 32에서, 예 31의 주제는 상기 평문 부분을 업데이트하는 것에 응답하여 상기 업데이트된 부분을 오퍼캐스팅하기 위한 수단들이 또한 트리거에 응답하여 동작한다.
예 33에서, 예 32의 주제는, 상기 트리거가 상기 관리되는 NAND 디바이스에 의해 수행되는 유지보수 액션이다.
예 34에서, 예 33의 주제는 상기 유지보수 액션이 또는 또는 웨어 레벨링 중 적어도 하나이다.
예 35에서, 예 34의 주제는, 상기 가비지 수집이 연속 가비지 수집이다.
예 36에서, 예 34-35 중 임의의 예의 주제는 상기 가비지 수집 또는 웨어 레벨링 동작을 받고 상기 업데이트된 부분에 대응하는 블록들이 순차적이다.
예 37에서, 예 31-36 중 임의의 예의 주제는 상기 평문 부분을 업데이트하는 것에 응답하여 상기 업데이트된 부분을 오퍼캐스팅하기 위한 수단들이 또한 상기 업데이트의 부분인 변화의 크기가 임계치를 초과하는 것에 응답하여 동작한다.
예 38에서, 예 31-37 중 임의의 예의 주제는 상기 업데이트된 부분을 오퍼캐스팅하기 위한 수단들이 상기 호스트로부터의 상기 업데이트된 부분에 대한 요청에 응답하여 상기 오퍼캐스팅된 부분을 업데이트하지 않는다.
예 39에서, 예 31-38 중 임의의 예의 주제는 상기 업데이트된 부분을 오퍼캐스팅하기 위한 수단들이 상기 업데이트된 부분을 암호화하기 위한 수단들을 포함한다.
예 40에서, 예 31-39 중 임의의 예의 주제는 상기 업데이트된 부분의 크기가 상기 관리되는 NAND와 상기 호스트 간 통신 프로토콜에 정의된다.
예 41는 처리 회로에 의해 실행될 때, 상기 처리 회로가 예 1 내지 40 중 임의의 예의 구현을 위한 동작들을 수행하게 하는 명령들을 포함하는 적어도 하나의 기계 판독 가능한 매체이다.
예 42은 예 1-40 중 임의의 예의 구현을 위한 수단들을 포함하는 장치이다.
예 43은 예 1-40 중 임의의 예의 구현을 위한 시스템이다.
예 44는 예 1-40 중 임의의 예의 구현을 위한 방법이다.
상기한 상세한 설명은 상세한 설명의 부분을 형성하는 첨부 도면들에 대한 참조를 포함한다. 도면들은 예로서 본 발명이 실시될 수 있는 구체적인 실시 예들을 도시한다. 이러한 실시 예들은 여기서 "예"라고도 한다. 그러한 예들은 도시되거나 설명된 것 이외의 요소들을 포함할 수 있다. 그러나, 본 발명자들은 또한 도시되거나 설명된 요소들만이 제공되는 예들을 고려한다. 또한, 본 발명자들은 또한 여기서 도시 또는 설명된 특정 예(또는 이의 하나 이상의 양태) 또는 다른 예들(또는 이의 하나 이상의 양태)에 대하여, 도시되거나 설명된 요소들(또는 이의 하나 이상의 양태)의 임의의 조합 또는 치환을 사용하는 예들을 고려한다.
본 문서에서, "한" 또는 "하나의"라는 용어는 특허 문서에서 일반적으로 사용되는 바와 같이, "적어도 하나" 또는 "하나 이상"의 임의의 다른 예 또는 사용과 무관하게 하나보다 많은을 포함하는 것으로 사용된다. 본 문서에서, "또는"이라는 용어는 달리 표기되지 않는 한, 비배타적인 것을 지칭하기 위해 또는 "A 또는 B"가 "A이지만 B는 아닌", "B이지만 A는 아닌" 그리고 "A 및 B"를 포함할 수 있도록 사용된다. 첨부된 청구항들에서, "포함하는" 및 "여기서"라는 용어들은 "포함한" 및 "이때"의 각각의 용어들의 알기 쉬운 영어와 동등한 것으로 사용된다. 또한, 이하의 청구범위에서, "포함하는" 및 "포함한"이라는 용어들은 개방형이며, 즉 청구범위에서 그러한 용어 뒤에 나열된 것 외에 요소들을 포함하는 시스템, 디바이스, 물품 또는 프로세스는 여전히 해당 청구항의 범위 내에 속하는 것으로 간주된다. 또한, 이하의 청구범위에서, "제1", "제2"및 "제3" 등의 용어들은 단지 라벨들로서 사용되며, 그것들의 목적에 수치적 요건들을 부과하도록 의도되지 않는다.
다양한 예에서, 여기에 설명된 구성요소들, 제어기들, 프로세서들, 유닛들, 엔진들 또는 맵들은 다른 것들 중에서도 물리적 디바이스 상에 저장된 물리적 회로 또는 펌웨어를 포함할 수 있다. 여기서 사용될 때, "프로세서"는 이에 제한되지는 않지만 마이크로 프로세서, 마이크로 제어기, 그래픽 프로세서, 디지털 신호 프로세서(DSP), 또는 프로세서들 또는 멀티 코어 디바이스들의 그룹을 비롯한 임의의 다른 유형의 프로세서 또는 처리 회로와 같은 임의의 유형의 계산 회로를 의미한다.
본 문서에서 사용될 때 "수평"이라는 용어는 임의의 시점에 기판의 실제 배향과 관계 없이, 웨이퍼 또는 다이의 기저와 같이 기판의 통상의 평면 또는 표면에 평행한 평면으로서 정의된다. 수직이라는 용어는 위에서 정의된 바와 같이 수평에 수직인 방향을 지칭한다. "상(on)", "위(over)" 및 "아래(under)"와 같은 전치사들은 기판의 배향에 관계없이 기판의 상부 또는 노출된 표면 상에 있는 통상의 평면 또는 표면에 대하여 정의되며; "상"은 ~ "상"에 놓이는 다른 구조물에 관한 하나의 구조물의 직접 접촉을 제시하도록 의도되는 한편(반대되는 표기가 없는 경우); "위" 및 "아래"라는 용어들은 이에 제한되지는 않지만 그에 따라 구체적으로 식별되지 않는 한 식별된 구조들 간의 직접 접촉을 명시적으로 포함하는 구조들(또는 층들, 특징부들 등)의 상대적 배치를 명시적으로 식별도록 의도된다. 유사하게, 구조가 수평 방향이 아니라 언급된 구조에 관해 수직으로 연장되더라도 그것이 어떤 시점에서 논의 중인 구성의 최외곽 부분인 경우에 구조가 언급된 구조 "위에" 있을 수 있기 때문에, "위" 및 "아래"라는 용어들은 수평 배향들로 제한되지 않는다.
웨이퍼 및 "기판"이라는 용어들은 여기서 일반적으로 그 위에 집적 회로들이 형성되는 임의의 구조를 나타내고, 그리고 또한 집적 회로 제조의 다양한 스테이지들 동안 그러한 구조들을 나타낸다. 따라서, 이하의 상세한 설명은 한정하는 의미로 취해지지 않으며, 다양한 실시 예의 범위는 첨부된 청구항들에 의해서만, 그러한 청구항들에 부여되는 등가물들의 전체 범위와 함께, 정의된다.
본 개시에 따라 여기에 설명된 다양한 실시 예는 메모리 셀들의 수직 구조(예를 들어, 메모리 셀들의 NAND 스트링들)를 이용하는 메모리를 포함한다. 여기서 사용될 때, 방향 형용사들은 메모리 셀들이 형성되는 기판의 표면에 관해 취해질 것이다(즉, 수직 구조는 기판 표면으로부터 연장되는 것으로 간주될 것이고, 수직 구조의 하단은 기판 표면에 가장 가까운 단부로 간주될 것이며, 수직 구조물의 상단은 기판 표면으로부터 가장 먼 단부로 간주될 것이다).
여기서 사용될 때, 수평, 수직, 법선, 평행, 수선 등과 같은 방향 형용사들은 상대적인 배향들을 지칭할 수 있고, 달리 언급되지 않는 한 특정 기하학적 속성들에 대한 엄격한 준수를 요구하지는 않는다. 예를 들어, 여기서 사용될 때, 수직 구조물은 기판의 표면에 엄격히 수선일 필요는 없지만, 대신에 기판의 표면에 대체로 수선일 수 있고, 기판의 표면과 예각을 형성할 수 있다(예를 들어, 60도 - 120도 등).
여기에 설명된 일부 실시 예에서, 상이한 도핑 구성이 소스측 선택 게이트(SGS), 제어 게이트(CG) 및 드레인측 선택 게이트(SGD)에 적용될 수 있으며, 이러한 예에서 이들 각각은 이러한 티어들(예를 들어, 폴리실리콘 등)이 에칭 용액에 노출될 때 상이한 에칭 속도들을 가질 수 있도록 하는 결과, 폴리실리콘으로 형성되거나 적어도 폴리실리콘을 포함할 수 있다. 예를 들어, 3D 반도체 디바이스에서 모놀리식 필라를 형성하는 공정에서, SGS 및 CG는 오목하게 형성할 수 있는 한편, SGD는 덜 오목하거나 오목하지 않을 수 있다. 그에 따라 이러한 도핑 구성들은 에칭 용액(예를 들어, 테트라메틸암모늄 하이드 록사이드(TMCH))을 사용함으로써 3D 반도체 디바이스에서 별개의 티어들(예를 들어, SGS, CG 및 SGD)로의 선택적 에칭을 가능하게할 수 있다.
메모리 셀이 작동은 여기서 사용될 때, 메모리 셀로부터 판독, 그에 기록 또는 그것을 소거하는 것을 포함한다. 의도된 상태로 메모리 셀을 배치하는 동작은 여기서 "프로그래밍"으로 지칭되고, 메모리 셀에 기록하거나 그로부터 소거하는 것 양자를 포함할 수 있다(예를 들어, 메모리 셀은 소거된 상태로 프로그래밍될 수 있다).
본 개시의 하나 이상의 실시 예에 따르면, 메모리 디바이스의 내부 또는 외부에 위치된 메모리 제어기(예를 들어, 프로세서, 제어기, 펌웨어 등)는(예를 들어, 웨어 사이클들을 기록, 그것들이 발생할 때 메모리 디바이스의 동작들을 카운팅, 그것이 개시하는 메모리 디바이스의 동작들을 추적, 웨어 상태에 대응하는 메모리 디바이스 특성들을 평가하여 등) 웨어 사이클들의 양 또는 웨어 상태를 결정(예를 들어, 선택, 설정, 조절, 컴퓨팅, 변경, 삭제, 통신, 구성, 유도, 정의, 이용, 수정, 적용 등)할 수 있다.
본 개시의 하나 이상의 실시 예에 따르면, 메모리 액세스 디바이스는 각 메모리 동작마다 웨어 사이클 정보를 메모리 디바이스에 제공하도록 구성될 수 있다. 메모리 디바이스 제어 회로(예를 들어, 제어 로직)는 웨어 사이클 정보에 대응하는 메모리 디바이스 성능 변화를 보상하도록 프로그래밍될 수 있다. 메모리 디바이스는 웨어 사이클 정보를 수신하고 웨어 사이클 정보에 응답하여 하나 이상의 작동 파라미터(예를 들어, 값, 특성)를 결정할 수 있다.
어떤 요소가 다른 요소 "상"에 있거나 "그에 연결"되거나 "그것과 연결"되는 것으로 언급될 때, 그것은 직접 다른 요소 상에 있거나 그에 연결되거나 그것과 연결될 수 있거나 중간에 다른 요소들이 존재할 수 있다는 것이 이해될 것이다. 대조적으로, 어떤 요소가 다른 요소 "바로 상"에 있거나 "그에 바로 연결"되거나 "그것과 바로 연결"되는 것으로 언급될 때, 그것은 중간에 다른 요소들 또는 층들이 존재할 수 없다. 도면들에서 두 개의 요소가 그것들을 연결하는 선으로 도시되어 있는 경우, 달리 표시되지 않는 한, 두 개의 요소는 연결되거나 직접 연결될 수 있다.
여기에 설명된 방법 예들은 적어도 부분적으로 기계 또는 컴퓨터 구현될 수 있다. 일부 예는 상기한 예들에 설명된 바와 같은 방법들을 수행하도록 전자 디바이스를 구성하도록 작동 가능한 명령들로 인코딩된 컴퓨터 판독 가능한 매체 또는 기계 판독 가능한 매체를 포함할 수 있다. 그러한 방법들의 구현은 코드, 이를테면 마이크로 코드, 어셈블리 언어 코드, 상위 레벨 언어 코드 또는 그 밖에 유사한 것을 포함할 수 있다. 그러한 코드는 다양한 방법을 수행하기 위한 컴퓨터 판독 가능한 명령들을 포함할 수 있다. 코드는 컴퓨터 프로그램 제품들의 부분들을 형성할 수 있다. 나아가, 코드는 이를테면 실행 동안 또는 다른 때에, 하나 이상의 휘발성 또는 비휘발성 유형의 컴퓨터 판독 가능한 매체 상에 유형으로 저장될 수 있다. 이러한 유형의 컴퓨터 판독 가능한 매체들의 예들은 하드 디스크, 착탈식 자기 디스크, 착탈식 광 디스크(예를 들어, 컴팩트 디스크 및 디지털 비디오 디스크), 자기 카세트, 메모리 카드 또는 스틱, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 고체 상태 드라이브(SSD), 유니버셜 플래시 저장(UFS) 디바이스, 내장형 MMC(eMMC, embedded MMC) 디바이스 및 기타 같은 종류의 것을 포함할 수 있다.
상기 설명은 제한적이 아니라 예시적인 것으로 의도된다. 예를 들어, 상술된 예들(또는 이의 하나 이상의 양태)은 서로 조합하여 사용될 수 있다. 상기 설명을 검토하면 이를테면 해당 기술분야의 통상의 기술자에 의해 다른 실시 예들이 사용될 수 있다. 그것은 청구항들의 범위 또는 의미를 해석하거나 제한하는데 사용되지 않을 것이라는 이해로 제출된다. 또한, 상기 상세한 설명에서, 다양한 특징은 본 개시를 간소화하기 위해 함께 그룹화될 수 있다. 이는 청구되지 않은 개시된 특징이 모든 청구항에 필수적인 것임을 의도하는 것으로 해석되어서는 안된다. 그보다, 본 발명의 대상은 개시된 특정 실시 예의 모든 특징보다 적을 수 있다. 그에 따라, 이하의 청구항들은 이에 의해 상세한 설명으로 통합되며, 각 청구항은 별개의 실시 예로서 독립되고, 그러한 실시 예들은 다양한 조합 또는 치환으로 서로 조합될 수 있는 것으로 고려된다. 본 발명의 범위는 첨부된 청구항들을 참조하여, 그러한 청구항들의 권리가 주어지는 균등물들의 전체 범위와 함께 결정되어야 한다.
Claims (25)
- 관리되는 메모리 디바이스에 있어서 논리 대 물리(L2P) 맵 동기화를 구현하기 위한 메모리 디바이스로서,
처리 회로; 및
명령들을 포함하는 저장 장치로서, 상기 명령들은 상기 처리 회로에 의해 실행될 때, 상기 처리 회로를:
상기 관리되는 메모리 디바이스에 대한 L2P 맵의 평문 부분을 업데이트된 부분으로서 업데이트하도록;
상기 L2P 맵의 상기 평문 부분을 업데이트하는 것에 응답하여, 상기 업데이트된 부분을 오퍼캐스팅하여 상기 업데이트된 부분의 오퍼캐스팅된 버전을 생성하도록;
상기 업데이트된 부분 및 상기 업데이트된 부분의 상기 오퍼캐스팅된 버전을 저장 장치에 저장하도록;
호스트로부터 상기 업데이트된 부분에 대한 요청을 수신하도록; 그리고
상기 요청을 수신하는 것에 응답하여, 상기 저장 장치로부터 상기 부분의 상기 오퍼캐스팅된 버전을 제공하도록 구성하는, 메모리 디바이스. - 청구항 1에 있어서, 상기 처리 회로는 상기 명령들에 의해 동작시 상기 평문 부분의 업데이트 및 트리거 양자에 응답하여 상기 업데이트된 부분을 오퍼캐스팅하도록 구성된, 메모리 디바이스.
- 청구항 2에 있어서, 상기 트리거는 상기 관리되는 NAND 디바이스에 의해 수행되는 유지보수 액션인, 메모리 디바이스.
- 청구항 3에 있어서, 상기 유지보수 액션은 또는 또는 웨어 레벨링 중 적어도 하나인, 메모리 디바이스.
- 청구항 4에 있어서, 상기 가비지 수집은 연속 가비지 수집(serializing garbage collection)인, 메모리 디바이스.
- 청구항 4에 있어서, 상기 가비지 수집 또는 웨어 레벨링 동작을 받고 상기 업데이트된 부분에 대응하는 블록들이 순차적인, 메모리 디바이스.
- 청구항 1에 있어서, 상기 처리 회로는 상기 명령들에 의해 동작시 상기 평문 부분의 업데이트 및 상기 업데이트의 부분인 변화의 크기가 임계치를 초과하는 것 양자에 응답하여 상기 업데이트된 부분을 오퍼캐스팅하도록 구성된, 메모리 디바이스.
- 청구항 1에 있어서, 상기 처리 회로는 상기 명령들에 의해 동작시 호스트로부터의 상기 업데이트된 부분에 대한 상기 요청에 응답하여 상기 업데이트된 부분을 오퍼캐스팅하도록 구성되지 않는, 메모리 디바이스.
- 청구항 1에 있어서, 상기 업데이트된 부분을 오퍼캐스팅하기 위해, 상기 명령들은 상기 처리 회로를 상기 업데이트된 부분을 암호화하도록 구성하는, 메모리 디바이스.
- 청구항 1에 있어서, 상기 업데이트된 부분의 크기는 상기 관리되는 NAND와 상기 호스트 간 통신 프로토콜에 정의되는, 메모리 디바이스.
- 관리되는 메모리 디바이스에 있어서 논리 대 물리(L2P) 맵 동기화를 위한 방법으로서,
상기 관리되는 메모리 디바이스에 대한 L2P 맵의 평문 부분을 업데이트된 부분으로서 업데이트하는 단계;
상기 L2P 맵의 상기 평문 부분을 업데이트하는 것에 응답하여, 상기 업데이트된 부분을 오퍼캐스팅하여 상기 업데이트된 부분의 오퍼캐스팅된 버전을 생성하는 단계;
상기 업데이트된 부분 및 상기 업데이트된 부분의 상기 오퍼캐스팅된 버전을 저장 장치에 저장하는 단계;
호스트로부터 상기 업데이트된 부분에 대한 요청을 수신하는 단계; 및
상기 요청을 수신하는 것에 응답하여, 상기 저장 장치로부터 상기 부분의 상기 오퍼캐스팅된 버전을 제공하는 단계를 포함하는, 방법. - 청구항 11에 있어서, 상기 평문 부분을 업데이트하는 것에 응답하여 상기 업데이트된 부분을 오퍼캐스팅하는 단계는 또한 트리거에 응답하는, 방법.
- 청구항 12에 있어서, 상기 트리거는 상기 관리되는 NAND 디바이스에 의해 수행되는 유지보수 액션인, 방법.
- 청구항 13에 있어서, 상기 유지보수 액션은 또는 또는 웨어 레벨링 중 적어도 하나인, 방법.
- 청구항 11에 있어서, 상기 평문 부분을 업데이트하는 것에 응답하여 상기 업데이트된 부분을 오퍼캐스팅하는 단계는 또한 상기 업데이트의 부분인 변화의 크기가 임계치를 초과하는 것에 응답하는, 방법.
- 관리되는 메모리 디바이스에 있어서 논리 대 물리(L2P) 맵 동기화를 구현하기 위한 명령들을 포함하는 기계 판독 가능한 매체로서, 상기 명령들은 처리 회로에 의해 실행될 때, 상기 처리 회로로 하여금:
상기 관리되는 메모리 디바이스에 대한 L2P 맵의 평문 부분을 업데이트된 부분으로서 업데이트하는 동작들;
상기 L2P 맵의 상기 평문 부분을 업데이트하는 것에 응답하여, 상기 업데이트된 부분을 오퍼캐스팅하여 상기 업데이트된 부분의 오퍼캐스팅된 버전을 생성하는 동작들;
상기 업데이트된 부분 및 상기 업데이트된 부분의 상기 오퍼캐스팅된 버전을 저장 장치에 저장하는 동작들;
호스트로부터 상기 업데이트된 부분에 대한 요청을 수신하는 동작들; 및
상기 요청을 수신하는 것에 응답하여, 상기 저장 장치로부터 상기 부분의 상기 오퍼캐스팅된 버전을 제공하는 동작들을 수행하게 하는, 기계 판독 가능한 매체. - 청구항 16에 있어서, 상기 평문 부분을 업데이트하는 것에 응답하여 상기 업데이트된 부분을 오퍼캐스팅하는 동작들은 또한 트리거에 응답하는, 기계 판독 가능한 매체.
- 청구항 17에 있어서, 상기 트리거는 상기 관리되는 NAND 디바이스에 의해 수행되는 유지보수 액션인, 기계 판독 가능한 매체.
- 청구항 18에 있어서, 상기 유지보수 액션은 또는 또는 웨어 레벨링 중 적어도 하나인, 기계 판독 가능한 매체.
- 청구항 19에 있어서, 상기 가비지 수집은 연속 가비지 수집인, 기계 판독 가능한 매체.
- 청구항 19에 있어서, 상기 가비지 수집 또는 웨어 레벨링 동작을 받고 상기 업데이트된 부분에 대응하는 블록들이 순차적인, 기계 판독 가능한 매체.
- 청구항 16에 있어서, 상기 평문 부분을 업데이트하는 것에 응답하여 상기 업데이트된 부분을 오퍼캐스팅하는 동작들은 또한 상기 업데이트의 부분인 변화의 크기가 임계치를 초과하는 것에 응답하는, 기계 판독 가능한 매체.
- 청구항 16에 있어서, 상기 업데이트된 부분을 오퍼캐스팅하는 동작들은 상기 호스트로부터의 상기 업데이트된 부분에 대한 요청에 응답하여 수행되지 않는, 기계 판독 가능한 매체.
- 청구항 16에 있어서, 상기 업데이트된 부분을 오퍼캐스팅하는 동작들은 상기 업데이트된 부분을 암호화하는 동작들을 포함하는, 기계 판독 가능한 매체.
- 청구항 16에 있어서, 상기 업데이트된 부분의 크기는 상기 관리되는 NAND와 상기 호스트 간 통신 프로토콜에 정의되는, 기계 판독 가능한 매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/548,107 | 2019-08-22 | ||
US16/548,107 US11138108B2 (en) | 2019-08-22 | 2019-08-22 | Logical-to-physical map synchronization in a memory device |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210024430A true KR20210024430A (ko) | 2021-03-05 |
KR102537119B1 KR102537119B1 (ko) | 2023-05-30 |
Family
ID=74645748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200104701A KR102537119B1 (ko) | 2019-08-22 | 2020-08-20 | 메모리 디바이스에 있어서 논리 대 물리 맵 동기화 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11138108B2 (ko) |
KR (1) | KR102537119B1 (ko) |
CN (1) | CN112416808A (ko) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11294825B2 (en) * | 2019-04-17 | 2022-04-05 | SK Hynix Inc. | Memory system for utilizing a memory included in an external device |
KR20200139913A (ko) | 2019-06-05 | 2020-12-15 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 메타 정보 저장 장치 |
KR20200122086A (ko) | 2019-04-17 | 2020-10-27 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 맵 세그먼트를 전송하는 방법 및 장치 |
KR20210001546A (ko) | 2019-06-28 | 2021-01-06 | 에스케이하이닉스 주식회사 | 슬립모드에서 메모리 시스템의 내부데이터를 전송하는 장치 및 방법 |
US11138108B2 (en) | 2019-08-22 | 2021-10-05 | Micron Technology, Inc. | Logical-to-physical map synchronization in a memory device |
US11556481B2 (en) | 2019-08-29 | 2023-01-17 | Micron Technology, Inc. | Increased efficiency obfuscated logical-to-physical map management |
US11615020B2 (en) | 2021-08-12 | 2023-03-28 | Micron Technology, Inc. | Implementing mapping data structures to minimize sequentially written data accesses |
CN114968949A (zh) | 2022-05-23 | 2022-08-30 | 三星(中国)半导体有限公司 | 缓存数据的方法、主机设备和存储系统 |
US20240111646A1 (en) * | 2022-09-30 | 2024-04-04 | Western Digital Technologies, Inc. | Hmb multi-segment optimal selection |
US11995349B2 (en) * | 2022-10-04 | 2024-05-28 | Silicon Motion, Inc. | Method and apparatus for performing access management of memory device in host performance booster architecture with aid of device side table information encoding and decoding |
US11994985B2 (en) * | 2022-10-04 | 2024-05-28 | Silicon Motion, Inc. | Method and apparatus for performing access management of memory device in host performance booster architecture with aid of device side table information encoding and decoding |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8356184B1 (en) * | 2009-06-25 | 2013-01-15 | Western Digital Technologies, Inc. | Data storage device comprising a secure processor for maintaining plaintext access to an LBA table |
US20150074329A1 (en) * | 2013-09-09 | 2015-03-12 | Kabushiki Kaisha Toshiba | Information processing device |
US20170075834A1 (en) * | 2015-09-14 | 2017-03-16 | Hyunseok Cha | Storage device and interrupt generation method thereof |
US20170083436A1 (en) * | 2015-09-22 | 2017-03-23 | Samsung Electronics Co., Ltd. | Memory controller, non-volatile memory system, and method operating same |
US20170242785A1 (en) * | 2016-02-23 | 2017-08-24 | Sandisk Technologies Llc | Efficient Implementation of Optimized Host-Based Garbage Collection Strategies Using Xcopy and Arrays of Flash Devices |
US20200142631A1 (en) * | 2018-11-05 | 2020-05-07 | Samsung Electronics Co., Ltd. | Data storage device and data storage system |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11487652B2 (en) * | 2018-04-23 | 2022-11-01 | Micron Technology, Inc. | Host logical-to-physical information refresh |
US11036651B2 (en) * | 2018-06-29 | 2021-06-15 | Micron Technology, Inc. | Host side caching security for flash memory |
KR20200100955A (ko) * | 2019-02-19 | 2020-08-27 | 에스케이하이닉스 주식회사 | 메모리 시스템의 맵 데이터 관리 방법 및 장치 |
US11138108B2 (en) | 2019-08-22 | 2021-10-05 | Micron Technology, Inc. | Logical-to-physical map synchronization in a memory device |
-
2019
- 2019-08-22 US US16/548,107 patent/US11138108B2/en active Active
-
2020
- 2020-08-20 CN CN202010842088.7A patent/CN112416808A/zh active Pending
- 2020-08-20 KR KR1020200104701A patent/KR102537119B1/ko active IP Right Grant
-
2021
- 2021-10-04 US US17/493,431 patent/US11914513B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8356184B1 (en) * | 2009-06-25 | 2013-01-15 | Western Digital Technologies, Inc. | Data storage device comprising a secure processor for maintaining plaintext access to an LBA table |
US20150074329A1 (en) * | 2013-09-09 | 2015-03-12 | Kabushiki Kaisha Toshiba | Information processing device |
US20170075834A1 (en) * | 2015-09-14 | 2017-03-16 | Hyunseok Cha | Storage device and interrupt generation method thereof |
US20170083436A1 (en) * | 2015-09-22 | 2017-03-23 | Samsung Electronics Co., Ltd. | Memory controller, non-volatile memory system, and method operating same |
US20170242785A1 (en) * | 2016-02-23 | 2017-08-24 | Sandisk Technologies Llc | Efficient Implementation of Optimized Host-Based Garbage Collection Strategies Using Xcopy and Arrays of Flash Devices |
US20200142631A1 (en) * | 2018-11-05 | 2020-05-07 | Samsung Electronics Co., Ltd. | Data storage device and data storage system |
Also Published As
Publication number | Publication date |
---|---|
CN112416808A (zh) | 2021-02-26 |
US20220027269A1 (en) | 2022-01-27 |
US11914513B2 (en) | 2024-02-27 |
US11138108B2 (en) | 2021-10-05 |
US20210056021A1 (en) | 2021-02-25 |
KR102537119B1 (ko) | 2023-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11983106B2 (en) | Host accelerated operations in managed NAND devices | |
KR102537119B1 (ko) | 메모리 디바이스에 있어서 논리 대 물리 맵 동기화 | |
US10936250B2 (en) | Host accelerated operations in managed NAND devices | |
US11886339B2 (en) | Secure logical-to-physical caching | |
US11704254B2 (en) | Host side caching security for flash memory | |
US12086077B2 (en) | Increased efficiency obfuscated logical-to-physical map management | |
US11989138B2 (en) | Host assisted operations in managed memory devices | |
CN113196245B (zh) | 主机常驻转换层有效性检查技术 | |
KR102377365B1 (ko) | 호스트 기반 플래시 메모리 유지관리 기술 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |