KR20210028265A - 고속 비휘발성 스토리지 장치 복구 기술 - Google Patents
고속 비휘발성 스토리지 장치 복구 기술 Download PDFInfo
- Publication number
- KR20210028265A KR20210028265A KR1020217005907A KR20217005907A KR20210028265A KR 20210028265 A KR20210028265 A KR 20210028265A KR 1020217005907 A KR1020217005907 A KR 1020217005907A KR 20217005907 A KR20217005907 A KR 20217005907A KR 20210028265 A KR20210028265 A KR 20210028265A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- memory device
- indication
- incomplete
- reset
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/24—Resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0727—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
- G06F11/076—Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
-
- 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
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
-
- 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
-
- 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/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- 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/0614—Improving the reliability of storage systems
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- 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
- G06F2212/1024—Latency reduction
-
- 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/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
메모리 디바이스의 가속 복구 기술을 제공하기 위한 기술이 본 명세서에서 개시된다. 이러한 기술은 예기치 않은 리셋 이벤트 이후에 플래시 메모리 디바이스와 같은, 그러나 이에 한정되지 않는, 메모리 디바이스의 복구를 허용할 수 있다.
Description
우선권 주장
본 출원은 2018년 8월 3일 출원된 Palmer의 미국 정규 특허 출원 제16/054,096호(사건 번호: 303.G77US1), "FAST NON-VOLATILE STORAGE DEVICE RECOVERY TECHNIQUES"에 대한 우선권을 주장하며, 그 내용 전문이 본 명세서에 참고로 포함된다.
메모리 디바이스는 일반적으로 컴퓨터 또는 기타 전자 장치의 내부, 반도체, 집적 회로로 제공된다. 휘발성 및 비휘발성 메모리를 포함하여 다양한 유형의 메모리가 있다. 휘발성 메모리는 데이터를 유지하는 데 전력이 필요할 수 있으며, 특히 RAM(Random-Access Memory), DRAM(Dynamic Random-Access Memory) 및 SDRAM(Synchronous Dynamic Random-Access Memory)을 포함한다. 비휘발성 메모리는 전원이 공급되지 않을 때 저장된 데이터를 유지하여 영구 데이터를 제공할 수 있으며 NAND 플래시 메모리, NOR 플래시 메모리, 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), 3D XPoint ™ 메모리 등을 포함할 수 있다.
메모리 셀은 일반적으로 매트릭스 또는 어레이로 배열된다. 여러 매트릭스 또는 어레이를 하나의 메모리 디바이스로 결합할 수 있으며, 여러 디바이스를 결합하여 SSD(Solid-State Drive), UFSTM(Universal Flash Storage) 장치, MultiMediaCard(MMC) 솔리드 스테이트 저장 장치, 임베디드 MMC 장치(eMMC™) 등과 같은 메모리 시스템의 저장 볼륨을 형성할 수 있다.
메모리 시스템은 메모리 디바이스를 동작 시키거나 외부 시스템과 인터페이스하기 위해 논리 기능을 수행하는 하나 이상의 프로세서 또는 다른 메모리 제어기를 포함할 수 있다. 메모리 매트릭스 또는 어레이는 다수의 물리적 페이지로 구성된 다수의 메모리 셀 블록을 포함할 수 있다. 메모리 시스템은 메모리 디바이스와 들과 호스트 사이에서 데이터(예를 들어, 사용자 데이터 및 관련 무결성 데이터, 예를 들어 오류 데이터 및 어드레스 데이터 등)를 전송하기 위한 판독 또는 기록 동작, 메모리 디바이스로부터 데이터를 소거하기 위한 소거 동작, 또는 하나 이상의 다른 메모리 동작 수행과 같은 메모리 동작과 관련하여 호스트로부터 명령을 수신할 수 있다.
메모리는 예를 들어 개인용 컴퓨터, 휴대용 메모리 스틱, 디지털 카메라, 휴대폰, MP3 플레이어와 같은 휴대용 음악 플레이어, 영화 플레이어, 및 기타 전자 장치를 포함한, 광범위한 전자 애플리케이션을 위한 휘발성 및 비휘발성 데이터 저장소로 활용된다. 메모리 셀은 어레이로 배열될 수 있으며 이러한 어레이가 메모리 디바이스에서 사용된다.
많은 전자 장치는 여러개의 메인 구성요소, 즉, 호스트 프로세서(예를 들어, 중앙 처리 장치(CPU) 또는 기타 메인 프로세서); 메인 메모리(예를 들어, 동적 RAM(DRAM), 모바일 또는 저전력 DDR SDRAM(Double-Data-rate synchronous DRAM) 등과 같은 하나 이상의 휘발성 또는 비휘발성 메모리 디바이스); 및 저장 장치(예를 들어, 비휘발성 메모리(NVM) 장치, 예를 들어 플래시 메모리, 읽기 전용 메모리(ROM), SSD, MMC 또는 기타 메모리 카드 구조 또는 조립체, 또는 휘발성 및 비휘발성 메모리의 조합, 등)를 포함한다. . 특정 예에서, 전자 장치는 사용자 인터페이스(예: 디스플레이, 터치 스크린, 키보드, 하나 이상의 버튼 등), 그래픽 처리 장치(GPU), 전력 관리 회로, 기저 대역 프로세서 또는 하나 이상의 트랜시버 회로, 등을 포함한다.
반드시 축척대로 그려지지는 않은 도면에서, 동일한 숫자는 다른 도면에서 유사한 구성요소를 설명할 수 있다. 서로 다른 문자 접미사를 가진 동일한 숫자는 유사한 구성요소의 서로 다른 경우를 나타낼 수 있다. 도면은 일반적으로 본 문서에서 논의된 다양한 실시예를 제한이 아닌 예로서 예시한다.
도 1은 호스트 및 메모리 디바이스를 포함하는 환경의 예를 나타낸다.
도 2는 일반적으로 예시적인 리셋 가속기 레지스터를 도시한다.
도 3은 일반적으로 본 주제에 따른 리셋 가속기 레지스터의 다른 예를 도시한다.
도 4는 일반적으로 메모리 디바이스의 예기치 않은 리셋으로부터 복구하기 위해 리셋 가속기 레지스터를 사용하는 예시적인 방법의 흐름도를 도시한다.
도 5는 본 명세서에서 논의된 기술(예를 들어, 방법론) 중 임의의 하나 이상이 수행될 수 있는 예시적인 머신의 블록도를 도시한다.
도 1은 호스트 및 메모리 디바이스를 포함하는 환경의 예를 나타낸다.
도 2는 일반적으로 예시적인 리셋 가속기 레지스터를 도시한다.
도 3은 일반적으로 본 주제에 따른 리셋 가속기 레지스터의 다른 예를 도시한다.
도 4는 일반적으로 메모리 디바이스의 예기치 않은 리셋으로부터 복구하기 위해 리셋 가속기 레지스터를 사용하는 예시적인 방법의 흐름도를 도시한다.
도 5는 본 명세서에서 논의된 기술(예를 들어, 방법론) 중 임의의 하나 이상이 수행될 수 있는 예시적인 머신의 블록도를 도시한다.
NAND 기반 스토리지를 포함하는 플래시 메모리 디바이스는 예기치 않은 전력 손실 후에 또는 진행중인 메모리 동작을 중단하고 리셋을 유발할 수 있는 기타 다른 이벤트 후에 복구하기가 번거로울 수 있다. 이러한 복구 프로세스는 메모리 제어기가 예기치 않은 이벤트 직전에 메모리 디바이스가 수행한 작업을 먼저 확인해야하기 때문에 느려질 수 있다. 중단된 메모리 작업이 결정되면 메모리 제어기는 적절한 복구 작업과 순서를 결정할 수 있다.
비휘발성 저장 장치는 전력 레일 전압 강하(power rail voltage droop), 워치 독 타임 아웃(watch dog time out), 명령 SRAM 비트 플립을 포함하지만 이에 제한되지 않는 여러 이유로 예기치 않은 이벤트에 노출될 수 있다. 복구 작업은 리셋 전에 메모리 디바이스가 수행한 작업과 완료되지 않은 작업을 정리하고 메모리 디바이스를 알려진 상태로 복구할 수 있는 메모리 작업 유형을 결합하는 데 상당한 시간이 걸릴 수 있으므로 매우 느릴 수 있다. 비휘발성 메모리 디바이스의 현재 복구 프로세스는 메모리 디바이스에 복잡한 알고리즘을 통합하여 예를 들어, 파워-업 시에, 복구 작업이 필요한지 여부를 결정한다. 메모리 동작 중에 리셋이 발생하면, 페이지는 부분적으로 프로그래밍되고 판독 가능하거나, 부분적으로 프로그래밍되고 판독 불가능하거나, 분명히 비어 있지만 부분적으로 프로그래밍되거나, 또는 이들의 조합이 될 수 있다. 복잡한 복구 알고리즘은 열려있는 각 메모리 블록을 확인하고, 각 열려있는 블록에서 잠재적인 메모리 작업 오류를 조사하고, 수정 사항을 적용하여 메모리 디바이스를 알려진 작동 상태로 복구한다.
본 발명자는 예기치 않은 이벤트에서 어떤 주요 메모리 작업이 진행 중인지 신속하게 판단하는 기술을 인식하여, 메모리를 검사하고 예기치 않은 리셋시 시작되었지만 완료되지 않은 작업을 추론하려 시도하는 복잡한 알고리즘의 필요성을 제거했다. 특정 예에서, 메모리 시스템은 리셋 가속기 레지스터를 포함한다. 리셋 가속기 레지스터는 메모리 시스템 제어기가 프로세스-내 메모리 작업의 스크래치 패드를 유지하는 데 사용할 수 있는 비휘발성 레지스터이다. 특정 예들에서, 메모리 제어기는 메모리 동작이 개시될 때 리셋 가속기 레지스터에 표시를 설정할 수 있다. 일부 예들에서, 표시는 메모리 디바이스의 리셋시에 어떤 동작이 완료되지 않은 채로 남아 있는지에 대한 검색에 집중하는 것을 도울 수 있는 특정 메모리 동작과 관련된 전용 플래그 또는 비트일 수 있다. 일반 스크래치 패드와 달리 리셋 가속기 레지스터는 메모리 디바이스의 리셋 이벤트 후 메모리 디바이스를 시작할 때 리셋되지 않는 비휘발성 레지스터이며, 특정 예에서는 단지 메모리 작업 상태를 추적하기 위한 용도이다. 일부 예들에서, 표시는 동작이 액세스하는 메모리 시스템의 위치를 포함하지만 이에 제한되지 않는 동작에 대한 추가 정보를 포함할 수 있다. 특정 예에서, 메모리 동작이 진행됨에 따라, 메모리 제어기 또는 하나 이상의 다이 제어기는 리셋시 메모리 제어기가 특정 메모리 동작의 어떤 하위 동작이 아직 완료되지 않았거나 진행 중인지 결정할 수 있도록 표시를 업데이트할 수 있다. .
도 1은 통신 인터페이스를 통해 통신하도록 구성된 호스트(105) 및 메모리 디바이스(110)를 포함하는 환경(100)의 예를 예시한다. 호스트(105) 또는 메모리 디바이스(110)는 IoT 장치(예: 냉장고 또는 기타 기기, 센서, 모터 또는 액추에이터, 이동 통신 장치, 자동차, 휴대폰, 드론, 등)와 같은 다양한 제품(150)에 포함되어, 제품(150)의 프로세싱, 통신, 또는 제어를 지원할 수 있다.
메모리 디바이스(110)는 메모리 제어기(115)와, 예를 들어 하나 이상의 개별 메모리 다이(예를 들어, 3차원(3D) NAND 다이의 스택)를 포함하는 메모리 어레이(120)를 포함한다. 3D 아키텍처 반도체 메모리 기술에서, 수직 구조는 여러 계층으로 적층되고, 물리적 페이지를 형성하도록 결합되어, 주어진 풋 프린트(즉, 폼 팩터)에서 메모리 디바이스(예: 저장 장치)의 저장 밀도를 증가시킨다. 일 예에서, 메모리 디바이스(110)는 호스트(105)의 개별 메모리 또는 저장 장치 구성요소일 수 있다. 다른 예에서, 메모리 디바이스(110)는 호스트(105)의 하나 이상의 다른 구성요소와 함께 적층되거나 달리 포함된 집적 회로(예를 들어, 시스템 온 칩(SOC), 다이, 등)의 일부일 수 있다.
하나 이상의 통신 인터페이스가 메모리 디바이스(110)와 호스트(105)의 하나 이상의 다른 구성요소, 예컨대 SATA(Serial Advanced Technology Attachment) 인터페이스, PCI(Peripheral Component Interconnect Express) 인터페이스, USB(Universal Serial Bus) 인터페이스, UFS 인터페이스, eMMC ™ 인터페이스 또는 하나 이상의 기타 커넥터 또는 인터페이스 사이에서 데이터를 전송하는 데 사용될 수 있다. 호스트(105)는 호스트 시스템, 전자 장치, 프로세서, 메모리 카드 판독기 또는 메모리 디바이스(110) 외부의 하나 이상의 다른 전자 장치를 포함할 수 있다. 일부 예들에서, 호스트(105)는 도 4의 머신(400)를 참조하여 논의된 구성요소들 중 일부 또는 전부를 가진 머신일 수 있다. 데이터는 데이터가 전송될 때(예를 들어, 메모리 어레이에서 읽기 또는 쓰기 전에) 데이터를 일시적으로 저장하기 위한 하나 이상의 래치를 포함할 수 있는 입력/출력(I/O) 버스를 통해 메모리 디바이스(110) 및 다른 구성요소 사이에서 전송될 수 있다.
메모리 제어기(115)는 호스트(105)로부터 명령을 수신할 수 있고, 메모리 어레이의 메모리 셀, 평면, 서브블록, 또는 페이지 중 하나 이상에서 데이터를 전달하는(가령, 기록 또는 소거, 또는 판독) 등, 메모리 어레이와 통신할 수 있다. 메모리 제어기(115)는 무엇보다도 하나 이상의 구성요소 또는 집적 회로를 포함하는 회로 또는 펌웨어를 포함할 수 있다. 예를 들어, 메모리 제어기(115)는 메모리 어레이(120) 간의 액세스를 제어하도록, 그리고 호스트(105)와 메모리 디바이스(110) 사이에 변환 계층을 제공하도록 구성된 하나 이상의 메모리 제어 유닛, 회로, 제어 회로 또는 구성요소를 포함할 수 있다. 메모리 제어기(115)는 메모리 어레이(120)에서 데이터를 전송하기 위한 하나 이상의 I/O 회로(및 대응 래치), 라인 또는 인터페이스를 포함할 수 있다. 메모리 제어기(115)는 메모리 관리자(125) 및 어레이 제어기(135)를 포함할 수 있다.
어레이 제어기(135)는 무엇보다도 메모리 제어기(115)에 연결된 메모리 디바이스(110)의 하나 이상의 메모리 셀에서 데이터를 기록하거나, 데이터를 판독하거나, 소거하는 것과 관련된 메모리 동작을 제어하도록 구성된 회로 또는 구성요소를 포함할 수 있다. 메모리 동작은 예를 들어 호스트(105)로부터 수신된 호스트 명령에 기초할 수 있거나 메모리 관리자(125)에 의해 내부적으로 생성될 수 있다(예를 들어, 웨어 레벨링, 오류 검출 또는 수정, 등과 관련하여).
어레이 제어기(135)는 에러 정정 코드(ECC) 구성요소(140)를 포함할 수 있으며, 이는 무엇보다도 메모리 제어기(115)에 연결된 메모리 디바이스(110)의 하나 이상의 메모리 셀에서 데이터를 기록하거나 판독하는 것과 관련된 에러를 검출하거나 정정하도록 구성된 ECC 엔진 또는 다른 회로를 포함할 수 있다. 예를 들어, ECC 구성요소(140)는, 다수의 메모리 동작을 수행하는 것과 관련된 비트 오류율(BER)을 검출하거나 계산할 수 있다. BER은 I/O 버스의 래치에서 발생하는 비트 오류, 제어기(115)의 내부 오류, 하나 이상의 NAND 어레이에서 발생하는 오류 또는 메모리 디바이스(110)의 다중 레벨 셀(MLC) 중 하나 이상에 대응할 수 있다. 메모리 제어기(115)는 호스트(105)와 메모리 디바이스(110) 사이에 전송되는 데이터의 무결성을 유지하면서 또는 저장된 데이터의 무결성을 유지하면서(예를 들어, 중복 RAID 스토리지 등을 사용하여), 다양한 동작 또는 데이터 저장과 관련된 오류 발생(예를 들어, 비트 오류, 동작 오류, 충돌 상태, 스톨(stalls), 끊김(hang ups) 등)을 능동적으로 감지하고 복구하도록 구성될 수 있고, 차후 오류를 방지하기 위해 고장난 메모리 리소스(가령, 메모리 셀, 메모리 어레이, 페이지, 블록, 등)를 제거(가령, 폐기)할 수 있다. 어레이 제어기(135)는 저장 및 추적을 위해 검출된 BER 정보를 메모리 관리자(125)로 전송할 수 있다. 메모리 제어기(115)는 호스트로부터 수신된 메모리 명령을 추적하는 명령 큐(미도시)를 포함할 수 있다. 큐의 명령은 선입 선출(FIFO) 방식, 스택 방식, 순서없이, 우선순위에 따라, 또는 임의의 다른 적절한 순서로 제어기(115)에 의해 실행될 수 있다.
설명된 메모리 디바이스(110)는 메모리 어레이(120)와 관련된 리셋 가속기 레지스터(160)를 포함한다. 일부 구현에서, 메모리 디바이스(110)의 제어기(115)는 아래 설명되는 바와 같이 리셋 가속기 레지스터(160)의 기능을 구현하도록 구성된 제어 회로를 포함할 수 있다. 다른 구현에서, 리셋 가속기 레지스터(160)는 설명된 기능을 구현하기 위한 독립적인 제어 회로를 포함할 수 있다. 또 다른 구현에서, 제어 회로는 리셋 가속기 레지스터(160)의 설명된 기능을 구현하기 위해 리셋 가속기 레지스터(160)와 제어기(115) 사이에서 분할될 수 있다. 도시된 예에서, 어레이 제어기(135)는 메모리 제어기(115)의 일부를 형성하고, 리셋 가속기 레지스터(160)는 어레이 제어기의 일부를 형성한다. 다른 구현에서, 리셋 가속기 레지스터(160)는 외장형일 수 있고 및/또는 어레이 제어기(135) 외부에 있을 수 있다. 예를 들어, 리셋 가속기 레지스터(160)(또는 그 임의의 개별 구성요소)는 환경(100) 내 하나 이상의 구성요소에 결합된 독립적인 구성요소일 수 있다. 그러나 리셋 가속기 레지스터(160)의 추가 기능을 제공하는, 물리적으로 위치한, 구조는 데이터 손실없이 메모리 디바이스(110)의 예기치 않은 중단과 메모리 디바이스(110)의 후속 동작 사이의 복구 시간을 감소시킨다.
메모리 관리자(125)는 무엇보다도 다양한 메모리 관리 기능과 연관된, 다수의 구성요소 또는 집적 회로와 같은, 회로 또는 펌웨어를 포함할 수 있다. 본 설명의 목적을 위해, 예시적인 메모리 동작 및 관리 기능이 NAND 메모리의 맥락에서 설명될 것이다. 당업자는 다른 형태의 비휘발성 메모리가 유사한 메모리 동작 또는 관리 기능을 가질 수 있음을 인식할 것이다. 이러한 NAND 관리 기능에는 웨어 레벨링(예: 가비지 수집 또는 재확보), 오류 감지(예: BER 모니터링) 또는 수정, 블록 폐기 또는 하나 이상의 기타 메모리 관리 기능이 포함된다. 메모리 관리자(125)는 호스트 명령(예를 들어, 호스트로부터 수신된 명령)을 장치 명령(예를 들어, 메모리 어레이의 동작과 관련된 명령, 등)으로 파싱 또는 포맷하거나, 어레이 제어기(135) 또는 메모리 디바이스(110)의 하나 이상의 다른 구성요소를 위해 (예를 들어, 다양한 메모리 관리를 수행하기 위한) 장치 명령을 생성할 수 있다.
메모리 관리자(125)는 메모리 디바이스(110)의 하나 이상의 구성요소와 관련된 다양한 정보(예를 들어, 메모리 제어기(115)에 연결된 하나 이상의 메모리 셀 또는 메모리 어레이와 관련된 다양한 정보)를 유지하도록 구성된 관리 테이블(130)의 세트를 포함할 수 있다. 예를 들어, 관리 테이블(130)은 메모리 제어기(115)에 결합된 하나 이상의 메모리 셀 블록에 대한 블록 에이지, 블록 소거 카운트, 오류 이력, 오류 파라미터 정보, 호스트 리셋 타임아웃 값, 메모리 동작 명령 대기 시간 또는 하나 이상의 오류 카운트(예: 쓰기 동작 오류 카운트, 판독 비트 오류 카운트, 판독 동작 오류 카운트, 소거 오류 카운트 등)를 포함할 수 있다. 특정 예들에서, 하나 이상의 오류 카운트(예를 들어, 오류 파라미터)의 검출된 오류의 수가 임계 값(예를 들어, 허용 가능한 오류 임계 값)보다 높으면, 비트 오류는 수정 불가능한 비트 오류라고할 수 있다. 관리 테이블(130)은 무엇보다도, 수정 가능하거나 수정 불가능한 비트 오류의 카운트를 유지할 수 있다.
메모리 어레이(120)는 예를 들어, 다수의 디바이스, 평면, 서브블록, 블록 또는 페이지에 배열된 다수의 메모리 셀을 포함할 수 있다. 예를 들어, 48GB TLC NAND 메모리 디바이스는 페이지 당 18,592 바이트(16,384 + 2208 바이트), 블록 당 1536 페이지, 평면 당 548 블록, 및 디바이스 당 4 개 이상의 평면을 포함할 수 있다. 또 다른 예로, 32GB MLC 메모리 디바이스(셀당 2 비트 데이터 저장(즉, 4 개의 프로그래밍 가능 상태))는 페이지 당 18,592 바이트(B)의 데이터(16,384 + 2208 바이트), 블록 당 1024 페이지, 548을 포함할 수 있다. 평면 당 548 블록, 디바이스 당 4 개의 평면을 포함할 수 있으나, 대응하는 TLC 메모리 디바이스로서 필요한 쓰기 시간의 절반과 프로그램/소거(P/E) 사이클의 두배를 가진다. 다른 예에는 다른 수치 또는 배열이 포함될 수 있다. 일부 예에서, 메모리 디바이스 또는 그 일부는 SLC 모드 또는 원하는 MLC 모드(예: TLC, QLC 등)에서 선택적으로 동작할 수 있다.
동작시, 데이터는 전형적으로 메모리 디바이스(110)에서 페이지 단위로 기록 또는 판독되고 블록 단위로 소거된다. 그러나, 하나 이상의 메모리 동작(예를 들어, 읽기, 쓰기, 소거 등)은 필요에 따라 더 크거나 작은 메모리 셀 그룹에서 수행될 수 있다. 메모리 디바이스(110)의 데이터 전송 크기는 일반적으로 페이지라고하는 반면, 호스트의 데이터 전송 크기는 일반적으로 섹터라고한다.
상이한 유형의 메모리 셀 또는 메모리 어레이(120)는 상이한 페이지 크기를 제공할 수 있거나 그와 관련된 상이한 양의 메타 데이터를 요구할 수 있다. 예를 들어, 서로 다른 메모리 디바이스 유형은 서로 다른 비트 오류율을 가질 수 있으며, 이는 데이터 페이지의 무결성을 보장하는 데 필요한 다른 양의 메타 데이터로 이어질 수 있다(예: 더 높은 비트 오류율을 가진 메모리 디바이스는 비트 오류율이 낮은 메모리 디바이스보다 더 많은 바이트의 오류 수정 코드 데이터를 요구할 수 있음). 예를 들어, MLC NAND 플래시 장치는 대응하는 단일 레벨 셀(SLC) NAND 플래시 장치보다 높은 비트 오류율을 가질 수 있다. 따라서 MLC 장치는 해당 SLC 장치보다 오류 데이터에 대해 더 많은 메타 데이터 바이트를 요구할 수 있다.
도 2는 일반적으로 예시적인 리셋 가속기 레지스터(260)를 예시한다. 리셋 가속기 레지스터(260)는 도시된 바와 같은 다중 비트 레지스터, 다중 워드 레지스터, 등과 같은 다중 셀 레지스터를 포함할 수 있다. 특정 예에서, 각 셀은 예기치 않은 리셋 이벤트 경우 또는 그 직전에 메모리 디바이스의 인-프로세스 활동 또는 작동에 관한 정보를 제공할 수 있다. 예를 들어, 리셋 가속기 레지스터(260)의 제 1 셀(예를 들어, 비트)(MO_1)이 설정되면, 제 1 메모리 연산이 예기치 않은 리셋 이벤트 시점 또는 그 부근에 처리 중(in-process)이었음을 나타낼 수 있으며, 설정되지 않은 경우, 예기치 않은 리셋 이벤트 발생 시점 또는 그 부근에 제 1 메모리 연산이 처리되지 않고 있음을 나타낸다. 특정 예들에서, 도 1의 메모리 제어기와 같은 메모리 제어기는, 적절한 메모리 작업이 시작되면 각 셀(MO_1, MO_2, ..., MO_N)을 설정할 수 있으며, 메모리 작업이 완료되면 셀을 리셋할 수 있다. 메모리 작업에는 사용자 데이터 블록의 가비지 수집, 내부 데이터 블록의 가비지 수집, 사용자 데이터 리프레시, 내부 데이터 리프레시, 읽기 오류 처리, 쓰기 오류 처리, 웨어 레벨링, 블록 폐기, 호스트 읽기, 호스트 쓰기, 전원 켜기 복구, 등이 포함될 수 있고, 이에 제한되지 않는다.
특정 예들에서, 리셋 가속기 레지스터는 일반 상태(GS) 요소를 포함하는데, 이 요소는 설정될 때, 예기치 않은 리셋 이벤트 발생시 적어도 하나의 메모리 동작이 진행 중이었음을 나타내고, 설정되지 않은 경우, 예기치 않은 리셋 이벤트 발생시 메모리 디바이스가 아이들 상태였고 식별된 동작들 중 어느 것도 수행하지 않고 있었음을 나타낸다. 예기치않은 리셋 이벤트 발생시 리셋되면서 메모리 작업이 진행 중이 아니었다는 사실을 발견하면 메모리 제어기는 메모리 작업이 진행 중이라는 증거를 찾기 위해 각 열린 메모리 블록을 검색하는 프로세스를, 그리고, 어떤 특정 작업이 진행 중이 었는지에 대한 증거를 평가하기 위한 추가 시간을, 건너뛸 수 있다. 따라서, 리셋 가속기 레지스터(260)의 구현은 예기치 않은 리셋 이벤트 후에 시스템을 백업하고 실행하는 데있어서 상당한 시간 절약을 나타낼 수 있다. 일반 상태(GS) 요소가 설정되거나 "완료되지 않음" 임계 값을 충족하거나 "완료 됨" 또는 "유휴" 임계 값을 충족하지 않는 경우, 메모리 제어기는 리셋 가속기 레지스터(260)의 요소 또는 다른 셀의 특정 메모리 작업 상태를 평가하기 시작하여, 메모리 디바이스가 호스트 메모리 요청을 서비스할 수 있도록하기 위해, 어떤 메모리 동작이 완료, 복구 또는 교정되어야 할지를 결정할 수 있다.
도 3은 일반적으로 본 주제에 따른 리셋 가속기 레지스터(360)의 다른 예를 도시한다. 리셋 가속기 레지스터(360)는 도 2의 레지스터와 유사한 제 1 레코드(361)를 포함할 수 있다. 제 1 레코드는 예기치 않은 리셋 이벤트가 발생한 시점 또는 그 시점 가까이에서 메모리 활동에 대한 일반적인 개요를 제공할 수 있다. 특정 예들에서, 제 1 레코드(361)의 일 요소는 설정될 때 메모리 동작 중 적어도 하나가 예기치 않은 리셋 이벤트의 시간에 처리 중이었음을 나타내고, 설정되지 않은 경우 예기치 않은 리셋 이벤트가 발생했을 때 메모리 디바이스가 유휴 상태였으며 식별된 메모리 작업을 수행하지 않았음을 나타내는 일반적 상태 표시를 제공할 수 있다. 제 1 레코드(361)의 다른 요소는 예기치 않은 리셋 이벤트의 시간에 또는 그 근처에서 처리 중이었거나 처리 중이 아니었던 상이한 유형의 메모리 동작(MO_1, MO_2, ..., MO_N)의 표시를 제공할 수 있다. 리셋 가속기 레지스터(360)의 다른 레코드는 리셋 가속기 레지스터(360)의 제 1 레코드(361)의 요소와 연관되거나 매핑될 수 있으며, 레코드와 연관되거나 매핑된 요소(MO_1, MO_2, ..., MO_N)에 의해 표시되는 메모리 동작에 관한 상세 정보를 포함할 수 있다. 그러한 상세한 정보는 메모리 동작과 관련된 하나 이상의 물리적 어드레스, 메모리 동작과 관련된 서브-프로세스 활동의 표시, 메모리 동작과 관련된 호스트 LBA 또는 이들의 조합을 포함할 수 있지만 이에 제한되지 않는다.
리셋 이벤트 또는 심지어 논-리셋 이벤트로부터 시작될 때, 메모리 제어기는 완료되지 않은 상태로 남아있을 수 있는 각 메모리 동작을 발견하기 위해 리셋 가속기 레지스터의 제 1 레코드(361)를 평가할 수 있다. 메모리 제어기는 예를 들어, 다른 레코드(362)를 제 1 레코드(361)의 요소에 매핑하는 링크를 통해, 리셋 가속기 레지스터의 다른 레코드(362)를 추가로 평가하여, 완료되지 않은 동작의 상태에 대한 보다 상세한 정보를 수집하고 분석할 수 있다. 이러한 상세 정보를 통해 메모리 제어기는, 블록에서 작동할 때 메모리 작업이 완료되지 않았는지 여부, 복구 작업이 적절한 지 여부, 그리고 어떤 복구 작업을 착수하고 편성해야하는지 여부를 결정하기 위해 모든 개방 NAND 메모리 블록을 분석하는 것을 피할 수 있다. 특정 예들에서, 리셋 가속기 레지스터(360)는 각각의 개방 메모리 블록에 액세스함없이 복구 동작을 선택 및 개시하는 데 필요한 정보를 메모리 제어기에 제공할 수 있다. 특정 예, 특히 모바일 컴퓨팅 환경이나 또는 장치가 종종 유휴 상태 인 경우, 메모리 제어기가 기존 알고리즘에 필요한 많은 정리 및 수정 또는 복구 흐름을 건너 뛰고 메모리 디바이스가 호스트 명령을 서비스할 수 있는 상태로 신속하게 돌아갈 수 있도록 함으로써, 고객 경험을 크게 향상시킬 수 있다.
도 4는 메모리 디바이스의 예기치 않은 리셋으로부터 복구하기 위해 리셋 가속기 레지스터를 사용하는 예시적인 방법(400)의 흐름도를 일반적으로 예시한다. 401에서, 예기치 않은 전원 차단 또는 공급 전압 강하 중과 같이 예기치 않은 리셋을 경험한 후 전자 장치 또는 메모리 디바이스가 다시 시작될 때, 메모리 제어기는 메모리 디바이스의 리셋 가속기 레지스터의 일 요소를 미완료 임계 값에 비교할 수 있다. 403에서 비교가 완료되지 않은 임계 값을 충족하는 경우, 리셋 가속 레지스터는 예기치 않은 리셋 이벤트가 발생했을 때 하나 이상의 메모리 작업이 진행 중이었음을 나타낸다. 403에서, 비교가 미완료 임계 값을 만족하지 않으면, 405에서 메모리 제어기를 활성화하거나 다른 프로세스를 활성화하여 호스트로부터의 메모리 요청을 서비스할 수 있다. 이 방법은 본 주제의 범위를 벗어나지 않고 하나 이상의 비교에 대해 완료된 임계 값을 사용할 수 있음이 이해된다.
407에서, 일반 상태(GS) 요소가 메모리 디바이스를 재시작할 때 완료되지 않은 메모리 동작을 나타내는 경우, 메모리 제어기는 리셋 가속기 레지스터의 특정 상태 요소를 완료된 임계 값 또는 완료되지 않은 임계 값과 비교하여, 예기치 않은 리셋 이벤트 시에 또는 그 근처의 시점에 어떤 특정 메모리 동작이 진행 중이었는지를 결정할 수 있다. 409에서, 메모리 제어기는 리셋 가속기 레지스터의 특정 상태 요소에 의해 표시되는 예기치 않은 리셋 이벤트의 영향을 받을 수 있는 메모리의 정리 및 복구를 편성하고 개시할 수 있다. 정리 및 복구 작업을 완료한 후, 405에서, 메모리 제어기를 활성화하거나 다른 프로세스를 활성화하여 호스트의 메모리 요청을 처리할 수 있다.
특정 예들에서, 리셋 가속기 레지스터는 일반 상태(GS) 비트 요소 및 여러 특정 상태 비트 요소를 갖는 다중 비트 레지스터일 수 있다. 일부 예에서, 리셋 가속기 레지스터는 다중-워드 레지스터로서, 그 일반 상태(GS) 요소는 단일 워드 또는 단일 비트이고 특정 상태 요소는 비트, 워드 또는 비트와 워드의 조합이다. 예를 들어, 각각의 특정 상태 요소는 또한 거기에 매핑된 리셋 가속기 레지스터의 하나 이상의 워드를 가질 수 있다. 매핑된 워드에는 특정 상태 요소가 나타내는 특정 메모리 작업에 대한 추가 세부 정보가 포함될 수 있다. 이러한 정보는 메모리 작업과 관련된 물리적 어드레스, 메모리 작업을 시작하는 호스트 요청의 복사 또는 표현, 특정 메모리 작업의 서브프로세스와 관련된 상태 정보, 등을 포함할 수 있지만 이에 제한되지 않는다. 이러한 정보의 양 및 특이성은, 복구 활동이 유익한 지 결정하거나 복구 활동의 어떤 유형과 일정이 적절한 지 결정하기 위해, 요구될 수 있는 메모리의 무차별적 대입 직접 분석의 양과 직접 관련될 수 있다. 리셋 가속기 레지스터에서 이러한 정보를 쉽게 사용할 수 있으면, 예기치 않은 리셋 이벤트가 발생했을 때 또는 그 근처의 시점에서 어떤 메모리가 처리 중이었는지 아닌지 여부를 결정하기 위해 메모리의 복잡한 무차별 대입 분석을 적용하는 데 시간을 낭비하지 않아도된다.
일부 기존 메모리 디바이스에서, 상태 정보는 메모리 디바이스가 동작하는 동안 유지되지만, 상태 정보는 휘발성 메모리, 또는 그렇지 않으면 리셋 이벤트 후 메모리 디바이스가 시작될 때 리셋되는 메모리에서 유지된다. 특정 예들에서, 본 주제에 따른 메모리 디바이스는 메모리 디바이스의 시동시 리셋 가속기 레지스터를 리셋하지 않는다.
도 5는 본 명세서에서 논의된 임의의 하나 이상의 기술(예를 들어, 방법론)이 수행할 수 있는 예시적인 머신(500)의 블록도를 도시한다. 대안적인 실시예에서, 머신(500)는 독립형 장치로서 동작할 수 있거나 다른 머신에 연결(예를 들어, 네트워킹)될 수 있다. 네트워크 배치에서, 머신(500)은 서버 머신, 클라이언트 머신, 또는 서버-클라이언트 네트워크 환경에서 두가지 다의 용량으로 동작할 수 있다. 일 예에서, 머신(500)은 피어-투-피어(P2P)(또는 다른 분산 된) 네트워크 환경에서 피어 머신으로서 동작할 수 있다. 머신(500)은 개인용 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), 개인용 디지털 비서(PDA), 모바일 전화, 웹 기기, IoT 장치, 자동차 시스템 또는 해당 머신에 의해 취해질 조치를 지정하는 명령어(순차적 또는 기타)를 실행할 수 있는 임의의 머신일 수 있다. 또한, 하나의 머신 만이 예시되어 있지만, "머신"라는 용어는 클라우드 컴퓨팅, SaaS(Software as a Service), 기타 컴퓨터 클러스터 구성과 같이, 여기에서 논의된 방법론 중 임의의 하나 이상을 수행하기 위해 명령어 세트(또는 다중 세트)를 개별적으로 또는 공동으로 실행하는 임의의 머신 모음을 포함하는 것으로 간주되어야한다.
본 명세서에 설명된 예는 로직, 구성요소, 장치, 패키지 또는 메커니즘을 포함하거나 이에 의해 작동할 수 있다. 회로는 하드웨어(예: 단순 회로, 게이트, 로직 등)를 포함하는 유형의 실체에 구현된 회로의 모음(예: 세트)이다. 회로 멤버십은 시간이 지남에 따라 유연하고, 근본적인 하드웨어 변동성이 있을 수 있다. 회로에는 작동할 때 단독으로 또는 조합하여 특정 작업을 수행할 수 있는 구성원(members)이 포함된다. 일 예에서, 회로의 하드웨어는 특정 동작(예를 들어, 유선배선)을 수행하도록 불변적으로 설계될 수 있다. 일 예에서, 회로의 하드웨어는 특정 동작의 명령어를 인코딩하도록 물리적으로 수정된 컴퓨터 판독 가능 매체(예: 불변의 질량 입자, 등의 자기적, 전기적, 이동 가능한 배치)를 포함하는 가변적으로 연결된 물리적 구성요소(예: 실행 유닛, 트랜지스터, 단순 회로 등)를 포함할 수 있다. 물리적 구성요소를 연결할 때 하드웨어 구성요소의 기본 전기적 특성이 예를 들어 절연체에서 도체로 또는 그 반대로 변경된다. 이 명령어에 따라, 참여 하드웨어(예: 실행 유닛 또는 로딩 메커니즘)가 작동 중 특정 작업의 일부를 수행하도록 가변 연결을 통해 하드웨어에서 회로의 구성원을 생성할 수 있다. 따라서, 컴퓨터 판독 가능 매체는 장치가 동작할 때 회로의 다른 구성요소에 통신적으로 결합된다. 일 예에서, 물리적 구성요소 중 임의의 것이 하나보다 많은 회로의 하나보다 많은 구성원에서 사용될 수 있다. 예를 들어, 작동 중에, 실행 유닛은 한 시점에서 제 1 회로군의 제 1 회로에서 사용될 수 있고, 상이한 시간에 제 1 회로군의 제 2 회로에 의해, 또는 제 2 회로군의 제 3 회로에 의해 재사용될 수 있다.
머신(예: 컴퓨터 시스템)(500)(예: 호스트(105), 메모리 디바이스(110) 등)은 처리 장치(502)(예: 하드웨어 프로세서, 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 하드웨어 프로세서 코어, 또는 이들의 임의의 조합, 가령, 메모리 디바이스(110)의 메모리 제어기, 등), 메인 메모리(504)(예: 읽기 전용 메모리(ROM), 플래시 메모리, 동적 동기식 DRAM(SDRAM) 또는 램버스 DRAM(RDRAM) 등과 같은 랜덤 액세스 메모리(DRAM), 정적 메모리(506)(예: 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM) 등) 및 데이터 저장 시스템(518)을 포함할 수 있고, 이들 중 일부 또는 전부는 인터링크(예를 들어, 버스)(530)를 통해 서로 통신할 수 있다.
처리 장치(502)는 마이크로 프로세서, 중앙 처리 장치 등과 같은 하나 이상의 범용 처리 장치를 나타낼 수 있다. 보다 구체적으로, 처리 장치는 복합 명령 세트 컴퓨팅(CISC) 마이크로 프로세서, 감소 명령 세트 컴퓨팅(RISC) 마이크로 프로세서, 매우 긴 명령어 워드(VLIW) 마이크로 프로세서, 또는 다른 명령 세트를 구현하는 프로세서 또는 명령어 세트의 조합을 구현하는 프로세서일 수 있다. 처리 장치(502)는 또한 주문형 집적 회로(ASIC), 현장 프로그래밍 가능 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 처리 장치일 수 있다. 처리 장치(502)는 본 명세서에서 논의된 동작 및 단계를 수행하기 위한 명령어(526)를 실행하도록 구성될 수 있다. 컴퓨터 시스템(500)은 네트워크(520)를 통해 통신하기 위한 네트워크 인터페이스 장치(508)를 더 포함할 수 있다.
데이터 저장 시스템(518)은 여기서 설명되는 방법 또는 기능들 중 하나 이상을 구현하는 한 세트 이상의 명령어(526) 또는 소프트웨어를 저장하고 있는 머신 판독 가능 저장 매체(524)(컴퓨터 판독 가능 매체라고도 함)를 포함할 수 있다. 명령어(526)는, 또한 머신 판독가능 저장 매체를 구성하는, 컴퓨터 시스템(500), 메인 메모리(504) 및 처리 장치(502)에 의해 실행되는 동안 메인 메모리(504) 내에 또는 처리 장치(502) 내에 완전히 또는 적어도 부분적으로 위치할 수 있다. 머신 판독 가능 저장 매체(524), 데이터 저장 시스템(518), 또는 메인 메모리(504)는 도 1의 메모리 디바이스(110)에 대응할 수 있다.
일 구현에서, 명령어(526)는 도 4의 방법 또는 도 1, 도 2, 또는 도 3 중 어느 하나 이상의 리셋 가속기 레지스터(160, 260, 360)를 사용하여 가속 리셋 복구 기능을 구현하기 위한 명령어를 포함한다. 머신 판독 가능 저장 매체(524)가 예시적인 구현에서 단일 매체인 것으로 도시되었지만, "머신 판독 가능 저장 매체"라는 용어는 하나 이상의 명령어 세트를 저장하는 단일 매체 또는 다중 매체를 포함하는 것으로 간주되어야한다. "머신 판독 가능 저장 매체"라는 용어는 본 개시의 방법들 중 어떤 하나 이상을 머신으로 하여금 수행하게 하는, 머신에 의한 실행을 위한 명령어 세트를 저장 또는 인코딩할 수 있는, 임의의 매체를 포함하는 것으로 취급되어야 한다. 따라서, "머신 판독 가능한 저장 매체"라는 용어는 고체 메모리, 광학 매체 및 자기 매체를 포함하지만 이에 제한되지 않는 것으로 간주되어야한다. 일 예에서, 대량 머신 판독 가능 매체는 불변(예를 들어, 나머지) 질량을 갖는 복수의 입자를 갖는 머신 판독 가능 매체를 포함한다. 따라서 대량의 머신 판독 가능 매체는 일시적인 전파 신호가 아니다. 대량 머신 판독 가능 매체의 특정 예는 비휘발성 메모리, 가령, 반도체 메모리 디바이스(예를 들어, EPROM(Electrically Programmable Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory)) 및 플래시 메모리 디바이스, 자기 디스크, 가령, 내부 하드 디스크 및 제거가능 디스크, 자기광학 디스크, 및 CD-ROM 및 DVD-ROM 디스크를 포함할 수 있다.
머신(500)은 디스플레이 유닛, 영숫자 입력 장치(예를 들어, 키보드) 및 사용자 인터페이스(UI) 내비게이션 장치(예를 들어, 마우스)를 더 포함할 수 있다. 일 예에서, 디스플레이 유닛, 입력 장치 또는 UI 내비게이션 장치 중 하나 이상은 터치 스크린 디스플레이일 수 있다. 머신은 신호 생성 장치(예: 스피커) 또는 GPS(Global Positioning System) 센서, 나침반, 가속도계 또는 하나 이상의 다른 센서와 같은 하나 이상의 센서이다. 머신(500)은 하나 이상의 주변 장치(예: 프린터, 카드 리더기 등)의 통신 또는 제어를 위해 직렬(예: 범용 직렬 버스(USB)), 병렬, 또는 기타 유선 또는 무선(예: 적외선(IR), 근거리 통신(NFC) 등) 연결과 같은 출력 제어기를 포함할 수 있다.
명령어(526)(예를 들어, 소프트웨어, 프로그램, 운영 체제(OS) 등) 또는 기타 데이터는 데이터 저장 장치(518)에 저장되어 처리 장치(502)에 의해 사용하기 위해 주 메모리(504)에 의해 액세스될 수 있다. 주 메모리(504)(예를 들어, DRAM)는 일반적으로 빠르지만 휘발성이며, 따라서 "오프" 조건에 있을 때를 포함하여 장기간 저장에 적합한 데이터 저장 장치(518)(가령, SSD)와는 상이한 유형의 저장 장치이다. 명령어(526) 또는 데이터는 일반적으로 처리 장치(502)에 의해 사용하기 위해 주 메모리(504)에 로드된다. 주 메모리(504)가 가득 차면, 데이터 저장 장치(518)로부터의 가상 공간이 할당되어, 주 메모리(504)를 보완한다. 그러나 데이터 저장 장치(518)가 일반적으로 주 메모리(504)보다 느리고 쓰기 속도는 일반적으로 읽기 속도보다 두 배 이상 느리기 때문에, 가상 메모리를 사용하면 (주메모리(504), 가령, DRAM(504)에 반해) 저장 장치 대기 시간으로 인해 사용자 경험을 크게 줄일 수 있다. 또한, 가상 메모리를 위한 데이터 저장 장치(518)의 사용은 데이터 저장 장치(518)의 사용 가능한 수명을 크게 감소시킬 수 있다.
가상 메모리와 대조적으로, 가상 메모리 압축(예를 들어, Linux ™ 커널 기능 "ZRAM")은 데이터 저장 장치(518)로의 페이징을 방지하기 위해 메모리의 일부를 압축된 블록 저장소로 사용한다. 페이징은 이러한 데이터를 데이터 저장 장치(518)에 기록할 필요가 있을 때까지 압축된 블록에서 발생한다. 가상 메모리 압축은 주 메모리(504)의 사용 가능한 크기를 증가시키면서 데이터 저장 장치(518)의 웨어(wear)를 감소시킨다.
모바일 전자 장치 또는 모바일 저장 장치에 최적화된 저장 장치는 전통적으로, MMC 솔리드 스테이트 저장 장치(예를 들어, 마이크로시큐어 디지털(microSD ™) 카드 등)를 포함한다. MMC 장치에는 호스트(예: 호스트 장치)와 함께 여러 개의 병렬 인터페이스(예: 8 비트 병렬 인터페이스)가 포함되어 있으며, 이들은 종종 호스트로부터 제거가능하고, 분리된다. 대조적으로, eMMC ™ 장치는 회로 기판에 부착되고, 직렬 ATA ™(Serial AT(Advanced Technology) Attachment 또는 SATA) 기반 SSD 장치에 필적하는 읽기 속도를 갖는 호스트의 구성요소로 간주된다. 그러나 가상 또는 증강 현실 장치를 완전히 활성화하고 증가하는 네트워크 속도를 활용하는 등 모바일 장치 성능에 대한 요구는 계속 증가하고 있다. 이러한 요구에 대응하여 저장 장치는 병렬에서 직렬 통신 인터페이스로 전환되었다. 제어기 및 펌웨어를 포함한 UFS(Universal Flash Storage) 장치는 전용 읽기/쓰기 경로가 있는 저전압 차동 신호(LVDS) 직렬 인터페이스를 사용하여 호스트와 통신하여, 읽기/쓰기 속도를 더욱 향상시킨다.
명령어(524)는 또한 다수의 전송 프로토콜(예를 들어, 프레임 릴레이, 인터넷 프로토콜(IP), 전송 제어 프로토콜(TCP), 사용자 데이터 그램 프로토콜(UDP), 하이퍼 텍스트 전송 프로토콜(HTTP) 등)) 중 어느 하나를 사용하여 네트워크 인터페이스 장치(508)를 통해 전송 매체를 이용하여 네트워크(520)를 거쳐 송신 또는 수신된다. 예시적인 통신 네트워크는 특히, 근거리 통신망(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) 네트워크, 등을 포함할 수 있다. 일 예에서, 네트워크 인터페이스 장치(508)는 네트워크(520)에 연결하기 위한 하나 이상의 물리적 잭(예를 들어, 이더넷, 동축 또는 전화 잭) 또는 하나 이상의 안테나를 포함할 수 있다. 일 예에서, 네트워크 인터페이스 장치(508)는 단일 입력 다중 출력(SIMO), 다중 입력 다중 출력(MIMO) 또는 다중 입력 단일 출력(MISO) 기술 중 적어도 하나를 사용하여 무선으로 통신하는 복수의 안테나를 포함할 수 있다. "전송 매체"라는 용어는 머신(500)에 의한 실행을 위한 명령어를 저장, 인코딩 또는 전달할 수 있는 임의의 무형 매체를 포함하는 것으로 간주되며, 이러한 소프트웨어의 통신을 용이하게하는 디지털 또는 아날로그 통신 신호 또는 기타 무형 매체를 포함한다.
상기 상세한 설명은 상세한 설명의 일부를 형성하는 첨부 도면에 대한 참조를 포함한다. 도면은 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시한다. 이들 실시예는 본 명세서에서 "예"라고도한다. 이러한 예는 도시되거나 설명된 요소에 추가하여 요소를 포함할 수 있다. 그러나, 본 발명자들은 또한 도시되거나 기술된 요소만이 제공되는 예를 고려한다. 더욱이, 본 발명자들은 또한 특정 예(또는 이의 하나 이상의 측면)와 관련하여 또는 여기서 도시 또는 설명되는 다른 예(또는 이의 하나 이상의 측면)와 관련하여, 도시되거나 설명된 요소의 임의의 조합 또는 순열(또는 이의 하나 이상의 측면)을 사용하는 예들을 고려한다.
추가 참고 사항 및 예
예 1은 메모리 디바이스의 제 1 시작(start-up)에서, 메모리 디바이스의 리셋 가속기 레지스터의 일반 상태 요소를 제 1 미완료 임계 값과 비교하는 단계; 메모리 디바이스의 제 1 시작에서 상기 일반 상태 요소가 미완료 메모리 작업을 나타냄을 결정하고, 이러한 결정에 응답하여, 상기 리셋 가속기 레지스터의 특정 상태 요소를 제 2 미완료 임계 값에 비교하여, 하나 이상의 특정 미완료 메모리 작업을 결정할 수 있는 단계 - 상기 특정 상태 요소 각각은 특정 메모리 작업들의 그룹 중 각자의 특정 메모리 작업의 상태를 나타냄; 상기 리셋 가속기 레지스터의 특정 상태 요소를 통해 미완료로 표시된 메모리 작업 그룹의 각 특정 메모리 작업과 관련된 정리 복구 작업(clean-up recovery operations)을 실행하는 단계; 및 메모리 디바이스의 제 2 시작 시에, 일반 상태 요소가 미완료 메모리 작업을 나타내지 않음을 결정하고, 그러한 결정에 응답하여 메모리 디바이스가 호스트 명령에 응답할 수 있게하는 단계를 포함하는 방법이다.
예 2에서, 예 1의 주제는, 메모리 디바이스 시작시 리셋 가속기 레지스터를 리셋하지 않는 단계를 포함한다.
예 3에서, 예 1-2 중 어느 하나의 주제로서, 특정 상태 요소들 중 제 1 특정 상태 요소가 비교에 응답하여 미완료 임계 값을 만족하지 않는 경우, 리셋 가속기 레지스터의 제 2 특정 상태 요소를 체크하는 단계; 및 제 1 특정 상태 요소가 비교에 대한 응답으로 미완료 임계 값을 충족하는 경우, 시작 이전에 메모리 디바이스의 최종 셧다운 전에 처리 중이었던 메모리 디바이스의 작업을 완료하기 위해 제 1 정리 복구 작업을 실행하는 단계를 포함한다.
예 4에서, 예 3의 주제로서, 제 1 특정 상태 요소는 가비지 수집 작업을 표시한다.
예 5에서, 예 3-4 중 어느 하나의 주제로서, 제 1 특정 상태 요소는 리프레시 작업을 나타낸다.
예 6에서, 예 3-5 중 어느 하나의 주제로서, 제 1 특정 상태 요소는 웨어 레벨링 작업을 표시한다.
예 7에서, 예 3-6 중 어느 하나의 주제로서, 제 1 특정 상태 요소는 블록 폐기 작업을 표시한다.
예 8에서, 예 3-7 중 어느 하나의 주제로서, 제 1 특정 상태 요소는 호스트 읽기 또는 쓰기 작업을 표시한다.
예 9에서, 예 3-8 중 어느 하나의 주제로서, 제 1 특정 상태 요소는 전원 공급 복구 작업을 표시한다.
예 10은 비휘발성 메모리 셀 그룹; 비휘발성, 리셋 가속기 레지스터; 및 비휘발성 메모리 셀 그룹에 동작가능하게 결합된 처리 장치를 포함하는 메모리 디바이스로서, 상기 처리 장치는: 비휘발성 메모리 셀 그룹에 대한 다수의 메모리 작업 중 제 1 메모리 작업을 개시하는 작업; 다수의 메모리 작업 중 어느 하나가 개시되었으나 미완료 상태임을 나타내도록 리셋 가속기 레지스터의 일반 표시를 설정하는 작업; 제 1 메모리 작업이 개시되었으나 미완료 상태임을 나타내도록 리셋 가속기 레지스터의 제 1 표시를 설정하는 작업; 및 제 1 메모리 작업의 완료에 대한 응답으로 제 1 표시를 리셋하는 작업을 수행하도록 구성된다.
예 11에서, 예 10의 주제로서, 상기 메모리 디바이스의 시작시, 상기 처리 장치는, 리셋 가속기 레지스터의 일반 표시를 제 1 임계 값과 비교하는 작업; 일반 표시가 제 1 임계 값을 만족할 때 리셋 가속기 레지스터의 제 1 표시를 미완료 임계 값과 비교하는 작업; 및 제 1 표시가 미완료 임계 값을 충족하면 제 1 메모리 작업을 완료하는 작업을 수행하도록 또한 구성된다.
예 12에서, 예 11의 주제로서, 상기 제 1 메모리 작업을 완료하는 상기 작업은 상기 제 1 표시에 매핑된 상기 리셋 가속기 레지스터의 레코드로부터 상기 메모리 디바이스의 물리적 어드레스를 불러오는 작업을 포함하고, 상기 물리적 어드레스는 제 1 메모리 작업과 관련된 비휘발성 메모리 셀의 그룹의 비휘발성 메모리 셀의 일 영역과 관련된다.
예 13에서, 예 11-12 중 어느 하나의 주제로서, 제 1 표시는 데이터 블록의 가비지 수집을 표시한다.
예 14에서, 예 11-13 중 어느 하나의 주제로서, 제 1 표시는 데이터 블록의 리프레시를 나타낸다.
예 15에서, 예 11-14 중 어느 하나의 주제에 있어서, 제 1 표시는 웨어 레벨링 작업을 나타낸다.
예 16에서, 예 11-15 중 어느 하나의 주제로서, 제 1 표시는 판독 오류 처리를 표시한다.
예 17에서, 예 11-16 중 어느 하나의 주제로서, 제 1 표시는 쓰기 오류 처리를 표시한다.
예 18에서, 예 11 내지 17 중 어느 하나의 주제로서, 제 1 표시는 블록 폐기를 표시한다.
예 19에서, 예 11-18 중 어느 하나의 주제로서, 제 1 표시는 호스트 기록 작업을 처리하는 것을 나타낸다.
예 20에서, 예 11 내지 19 중 어느 하나의 주제로서, 제 1 표시는 호스트 읽기 활동을 처리하는 것을 표시한다.
예 21은 처리 회로에 의해 실행될 때 처리 회로로 하여금 예 1-20 중 임의의 것을 구현하는 작업을 수행하게하는 명령어를 포함하는 적어도 하나의 머신 판독 가능 매체이다.
예 22는 예 1-20 중 임의의 것을 구현하는 수단을 포함하는 장치이다.
예 23은 예 1-20 중 어느 하나를 구현하기 위한 시스템이다.
예 24는 예 1-20 중 어느 하나를 구현하기 위한 방법이다.
이 문서에서, "일" 또는 "하나"라는 용어는 어떤 다른 용례에 독립적인, 하나 또는 하나보다 많은, 또는, "적어도 하나" 또는 "하나 이상"의 용례를 포함하는 것으로 사용된다. 이 문서에서 "또는"이라는 용어는 비-배타적 인 의미로 사용되거나 "A 또는 B"에는 달리 명시되지 않을 경우, "A(B는 아님)", "B(A는 아님)"및 "A 및 B"가 포함될 수 있다. 첨부된 청구 범위에서, "포함하는"(including) 및 "여기서"(in which)라는 용어는 각각 용어 "포함하는"(comprising) 및 "여기서"(wherein)의 평이한 영어 등가물로 사용된다. 또한, 다음 청구 범위에서, "포함하는"(including) 및 "포함하는"(comprising)이라는 용어는 개방형이다. 일 청구항에서 이러한 용어 뒤에 나열된 요소 외에 요소를 포함하는 시스템, 장치, 물품 또는 프로세스는 여전히 해당 청구함의 범위에 속하는 것으로 간주된다. 또한, 다음의 청구 범위에서 용어 "제 1", "제 2" 및 "제 3" 등은 단지 라벨로서 사용되며, 그 대상에 수치적 요구 사항을 부과하려는 의도가 아니다.
다양한 예에서, 본 명세서에 설명된 구성요소, 제어기, 프로세서, 유닛, 엔진 또는 테이블은 무엇보다도 물리적 장치에 저장된 물리적 회로 또는 펌웨어를 포함할 수 있다. 본 명세서에서 사용된 바와 같이, "프로세서"는 마이크로 프로세서, 마이크로 제어기, 그래픽 프로세서, 디지털 신호 프로세서(DSP), 또는 일 그룹의 프로세서 또는 멀티 코어 장치들을 포함한 임의의 다른 유형의 프로세서 또는 처리 회로와 같은, 그러나 이에 제한되지 않는, 임의의 유형의 계산 회로를 의미한다.
본 명세서에서 사용된 메모리 셀을 동작시키는 것은 메모리 셀에서의 읽기, 쓰기 또는 소거를 포함한다. 의도된 상태로 메모리 셀을 배치하는 동작은 본 명세서에서 "프로그래밍"이라고 하며, 메모리 셀에서의 기록 또는 소거를 모두 포함할 수 있다(예를 들어, 메모리 셀은 소거된 상태로 프로그래밍될 수 있다).
본 개시의 하나 이상의 실시예에 따르면, 메모리 디바이스의 내부 또는 외부에 위치한 메모리 제어기(예: 프로세서, 제어기, 펌웨어 등)는 결정(예: 선택, 설정, 웨어 사이클의 양 또는 웨어 상태(예: 웨어 사이클 기록, 발생에 따른 메모리 디바이스의 작동 카운팅, 메모리 디바이스의 개시되는 작동 추적, 웨어 상태에 대응하는 메모리 디바이스 특성 평가, 등)를 결정(가령, 선택, 세팅, 조정, 계산, 변경, 정리, 통신, 적응, 유도, 정의, 활용, 수정, 적용, 등)할 수 있다.
본 개시의 하나 이상의 실시예들에 따르면, 메모리 액세스 디바이스는 각각의 메모리 동작과 함께 메모리 디바이스에 웨어 사이클 정보를 제공하도록 구성될 수 있다. 메모리 디바이스 제어 회로(예를 들어, 제어 로직)는 웨어 사이클 정보에 대응하는 메모리 디바이스 성능 변화를 보상하도록 프로그래밍될 수 있다. 메모리 디바이스는 웨어 사이클 정보를 수신하고, 웨어 사이클 정보에 응답하여 하나 이상의 동작 파라미터(예를 들어, 값, 특성)를 결정할 수 있다.
본 명세서에 설명된 방법 예는 적어도 부분적으로 머신, 장치 또는 컴퓨터로 구현될 수 있다. 일부 예는 위의 예에서 설명된 바와 같은 방법을 수행하도록 전자 장치를 구성하도록 동작 가능한 명령어로 인코딩된 컴퓨터 판독 가능 매체, 장치 판독 가능 매체, 또는 머신 판독 가능 매체를 포함할 수 있다. 이러한 방법의 구현은 마이크로 코드, 어셈블리 언어 코드, 상위 레벨 언어 코드 등과 같은 코드를 포함할 수 있다. 이러한 코드는 다양한 방법을 수행하기 위한 컴퓨터 판독 가능 명령어를 포함할 수 있다. 코드는 컴퓨터 프로그램 제품의 일부를 형성할 수 있다. 또한, 코드는 실행 중 또는 다른 시간에서와 같이, 하나 이상의 휘발성 또는 비휘발성의 유형의 컴퓨터 판독 가능 매체에 유형적으로 저장될 수 있다. 이러한 유형의 컴퓨터 판독 가능 매체의 예에는 하드 디스크, 이동식 자기 디스크, 이동식 광학 디스크(예: 콤팩트 디스크 및 디지털 비디오 디스크), 자기 카세트, 메모리 카드 또는 스틱, 랜덤 액세스 메모리(RAM), ROM(읽기 전용 메모리), SSD(Solid State Drive), UFS(Universal Flash Storage) 장치, eMMC(embedded MMC) 장치 등이 있다.
상기 설명은 제한적인 것이 아니라 예시를 위한 것이다. 예를 들어, 전술한 예(또는 그 하나 이상의 측면)는 서로 조합하여 사용될 수 있다. 상기 설명을 검토할 때 당업자에 의해 다른 실시예가 사용될 수 있다. 청구 범위의 범위 또는 의미를 해석하거나 제한하는 데 사용되지 않음을 이해하여야 한다. 또한, 위의 상세한 설명에서, 본 개시를 간소화하기 위해 다양한 특징들이 함께 그룹화될 수 있다. 이것은 주장되지 않은 공개된 기능이 주장에 필수적이라는 의도로 해석되어서는 안된다. 오히려, 본 발명의 주제는 특정 개시된 실시예의 모든 특징보다 적을 수 있다. 따라서, 다음의 청구항은 상세한 설명에 통합되고, 각 청구항은 별개의 실시예로서 그 자체로 존재하며, 이러한 실시예는 다양한 조합 또는 순열로 서로 결합될 수 있는 것으로 고려된다. 본 발명의 범위는 첨부된 청구 범위를 참조하여, 그러한 청구 범위가 부여되는 등가물의 전체 범위와 함께 결정되어야한다.
Claims (20)
- 메모리 디바이스의 제 1 시작(start-up)에서, 메모리 디바이스의 리셋 가속기 레지스터의 일반 상태 요소를 제 1 미완료 임계 값과 비교하는 단계;
메모리 디바이스의 제 1 시작에서, 상기 일반 상태 요소가 미완료 메모리 작업을 나타냄을 결정하고, 이러한 결정에 응답하여, 상기 리셋 가속기 레지스터의 특정 상태 요소를 제 2 미완료 임계 값에 비교하여, 하나 이상의 특정 미완료 메모리 작업을 결정할 수 있는 단계 - 상기 특정 상태 요소 각각은 특정 메모리 작업들의 그룹 중 각자의 특정 메모리 작업의 상태를 나타냄;
상기 리셋 가속기 레지스터의 특정 상태 요소를 통해 미완료로 표시된 메모리 작업 그룹의 각 특정 메모리 작업과 관련된 정리 복구 작업(clean-up recovery operations)을 실행하는 단계; 및
메모리 디바이스의 제 2 시작 시에, 일반 상태 요소가 미완료 메모리 작업을 나타내지 않는다고 결정하고, 그러한 결정에 응답하여 메모리 디바이스가 호스트 명령에 응답할 수 있게하는 단계를 포함하는, 방법. - 제 1 항에 있어서, 메모리 디바이스 시작시, 리셋 가속기 레지스터를 리셋하지 않는 단계를 포함하는, 방법.
- 제 1 항 내지 제 2 항 중 어느 한 항에 있어서,
특정 상태 요소들 중 제 1 특정 상태 요소가 비교에 응답하여 미완료 임계 값을 만족하지 않는 경우, 리셋 가속기 레지스터의 제 2 특정 상태 요소를 체크하는 단계; 및
제 1 특정 상태 요소가 비교에 대한 응답으로 미완료 임계 값을 충족하는 경우, 시작 이전에 메모리 디바이스의 최종 셧다운 전에 처리 중이었던 메모리 디바이스의 작업을 완료하기 위해 제 1 정리 복구 작업을 실행하는 단계를 포함하는, 방법. - 제 3 항에 있어서, 상기 제 1 특정 상태 요소는 가비지 수집 작업을 나타내는 방법.
- 제 3 항에 있어서, 상기 제 1 특정 상태 요소는 리프레시 작업을 나타내는 방법.
- 제 3 항에 있어서, 상기 제 1 특정 상태 요소는 웨어 레벨링 작업(wear leveling operation)을 나타내는 방법.
- 제 3 항에 있어서, 상기 제 1 특정 상태 요소는 블록 폐기 작업을 나타내는 방법.
- 제 3 항에 있어서, 상기 제 1 특정 상태 요소는 호스트 읽기 또는 쓰기 작업을 나타내는 방법.
- 제 3 항에 있어서, 상기 제 1 특정 상태 요소는 파워-온 복구 작업을 나타내는 방법.
- 메모리 디바이스로서,
비휘발성 메모리 셀 그룹;
비휘발성, 리셋 가속기 레지스터; 및
비휘발성 메모리 셀 그룹에 동작가능하게 결합된 처리 장치를 포함하되, 상기 처리 장치는
비휘발성 메모리 셀 그룹에 대한 다수의 메모리 작업 중 제 1 메모리 작업을 개시하는 작업;
다수의 메모리 작업 중 어느 하나가 개시되었으나 미완료 상태임을 나타내도록 리셋 가속기 레지스터의 일반 표시를 설정하는 작업;
제 1 메모리 작업이 개시되었으나 미완료 상태임을 나타내도록 리셋 가속기 레지스터의 제 1 표시를 설정하는 작업; 및
제 1 메모리 작업의 완료에 대한 응답으로 제 1 표시를 리셋하는 작업을 수행하도록 구성되는, 메모리 디바이스. - 제 10 항에 있어서, 상기 메모리 디바이스의 시작시, 상기 처리 장치는,
리셋 가속기 레지스터의 일반 표시를 제 1 임계 값과 비교하는 작업;
일반 표시가 제 1 임계 값을 만족할 때 리셋 가속기 레지스터의 제 1 표시를 미완료 임계 값과 비교하는 작업; 및
제 1 표시가 미완료 임계 값을 충족하면 제 1 메모리 작업을 완료하는 작업을 수행하도록 또한 구성되는, 메모리 디바이스. - 제 11 항에 있어서, 상기 제 1 메모리 작업을 완료하는 상기 작업은 상기 제 1 표시에 매핑된 상기 리셋 가속기 레지스터의 레코드로부터 상기 메모리 디바이스의 물리적 어드레스를 불러오는 작업을 포함하고, 상기 물리적 어드레스는 제 1 메모리 작업과 관련된 비휘발성 메모리 셀의 그룹의 비휘발성 메모리 셀의 일 영역과 관련된, 메모리 디바이스.
- 제 11 항에 있어서, 상기 제 1 표시는 데이터 블록의 가비지 수집을 나타내는 메모리 디바이스.
- 제 11 항에 있어서, 상기 제 1 표시는 데이터 블록의 리프레시를 나타내는 메모리 디바이스.
- 제 11 항에 있어서, 상기 제 1 표시는 웨어 레벨링 작업을 나타내는 메모리 디바이스.
- 제 11 항에 있어서, 상기 제 1 표시는 판독 에러 핸들링을 나타내는 메모리 디바이스.
- 제 11 항에 있어서, 상기 제 1 표시는 기록 에러 핸들링을 나타내는 메모리 디바이스.
- 제 11 항에 있어서, 상기 제 1 표시는 블록 폐기를 나타내는 메모리 디바이스.
- 제 11 항에 있어서, 상기 제 1 표시는 호스트 기록 작업을 처리하는 것을 나타내는 메모리 디바이스.
- 제 11 항에 있어서, 상기 제 1 표시는 호스트 판독 활동을 처리하는 것을 나타내는 메모리 디바이스.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/054,096 US10733104B2 (en) | 2018-08-03 | 2018-08-03 | Fast non-volatile storage device recovery techniques |
US16/054,096 | 2018-08-03 | ||
PCT/US2019/044926 WO2020028818A1 (en) | 2018-08-03 | 2019-08-02 | Fast non-volatile storage device recovery techniques |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210028265A true KR20210028265A (ko) | 2021-03-11 |
Family
ID=69228733
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217005907A KR20210028265A (ko) | 2018-08-03 | 2019-08-02 | 고속 비휘발성 스토리지 장치 복구 기술 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10733104B2 (ko) |
KR (1) | KR20210028265A (ko) |
CN (1) | CN112673356B (ko) |
WO (1) | WO2020028818A1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10733104B2 (en) | 2018-08-03 | 2020-08-04 | Micron Technology, Inc. | Fast non-volatile storage device recovery techniques |
CN111753337B (zh) * | 2020-07-02 | 2023-02-21 | 上海电器科学研究所(集团)有限公司 | 一种储能电池管理系统意外断电soc处理方法 |
KR20220028692A (ko) * | 2020-08-31 | 2022-03-08 | 주식회사 엘엑스세미콘 | 플래시 메모리의 리셋 기능을 갖는 모바일 폰 및 그의 플래시 메모리 제어 장치 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5787484A (en) * | 1996-08-08 | 1998-07-28 | Micron Technology, Inc. | System and method which compares data preread from memory cells to data to be written to the cells |
US5754567A (en) * | 1996-10-15 | 1998-05-19 | Micron Quantum Devices, Inc. | Write reduction in flash memory systems through ECC usage |
US5956289A (en) * | 1997-06-17 | 1999-09-21 | Micron Technology, Inc. | Clock signal from an adjustable oscillator for an integrated circuit |
US6804763B1 (en) * | 2000-10-17 | 2004-10-12 | Igt | High performance battery backed ram interface |
US7533214B2 (en) * | 2002-02-27 | 2009-05-12 | Microsoft Corporation | Open architecture flash driver |
US7536506B2 (en) * | 2004-06-21 | 2009-05-19 | Dot Hill Systems Corporation | RAID controller using capacitor energy source to flush volatile cache data to non-volatile memory during main power outage |
US7701764B2 (en) * | 2006-05-17 | 2010-04-20 | Micron Technology, Inc. | Apparatus and method for reduced peak power consumption during common operation of multi-NAND flash memory devices |
US8145866B2 (en) * | 2008-05-27 | 2012-03-27 | Micron Technology, Inc. | Selective register reset |
WO2012001917A1 (ja) * | 2010-06-29 | 2012-01-05 | パナソニック株式会社 | 不揮発性記憶システム、メモリシステム用の電源回路、フラッシュメモリ、フラッシュメモリコントローラ、および不揮発性半導体記憶装置 |
CN101916201B (zh) * | 2010-08-06 | 2015-05-27 | 中兴通讯股份有限公司 | 一种基于Android移动终端冷启动的方法和装置 |
US9514838B2 (en) | 2011-05-31 | 2016-12-06 | Micron Technology, Inc. | Apparatus including memory system controllers and related methods for memory management using block tables |
KR101845512B1 (ko) | 2011-08-10 | 2018-04-04 | 삼성전자주식회사 | 메모리 시스템의 초기화 방법 |
US9378830B2 (en) | 2013-07-16 | 2016-06-28 | Seagate Technology Llc | Partial reprogramming of solid-state non-volatile memory cells |
US9478292B2 (en) * | 2013-10-27 | 2016-10-25 | Sandisk Technologies Llc | Read operation for a non-volatile memory |
KR20160051328A (ko) | 2014-11-03 | 2016-05-11 | 에스케이하이닉스 주식회사 | 데이터 복구 방법 및 이를 사용한 비휘발성 메모리 시스템 |
WO2016122520A1 (en) * | 2015-01-29 | 2016-08-04 | Hewlett-Packard Development Company, L.P. | Resuming a system-on-a-chip device |
KR20180030319A (ko) * | 2016-09-13 | 2018-03-22 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
US10733104B2 (en) | 2018-08-03 | 2020-08-04 | Micron Technology, Inc. | Fast non-volatile storage device recovery techniques |
-
2018
- 2018-08-03 US US16/054,096 patent/US10733104B2/en active Active
-
2019
- 2019-08-02 WO PCT/US2019/044926 patent/WO2020028818A1/en active Application Filing
- 2019-08-02 KR KR1020217005907A patent/KR20210028265A/ko not_active Application Discontinuation
- 2019-08-02 CN CN201980059073.9A patent/CN112673356B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US10733104B2 (en) | 2020-08-04 |
WO2020028818A1 (en) | 2020-02-06 |
CN112673356A (zh) | 2021-04-16 |
US20200042452A1 (en) | 2020-02-06 |
CN112673356B (zh) | 2022-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10852964B2 (en) | Host-resident translation layer validity check techniques | |
US11899574B2 (en) | L2P translation techniques in limited RAM systems to increase random write performance using multiple L2P caches | |
US11157404B2 (en) | Remapping techniques for a range of logical block addresses in a logical to physical table of NAND storage | |
US11687469B2 (en) | Host-resident translation layer validity check techniques | |
US11734170B2 (en) | Host-resident translation layer validity check | |
CN111352864B (zh) | 快闪存储器持久性高速缓存技术 | |
US11721388B2 (en) | Large file integrity techniques | |
US10923202B2 (en) | Host-resident translation layer triggered host refresh | |
US20200319823A1 (en) | Large data read techniques | |
CN112673356B (zh) | 快速非易失性存储装置恢复技术 | |
US9037781B2 (en) | Method for managing buffer memory, memory controllor, and memory storage device | |
KR20210028264A (ko) | 호스트 상주 변환 레이어 유효성 검사 | |
US11656794B2 (en) | Host timeout avoidance in a memory device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |