KR102546244B1 - 모픽 스토리지 장치 - Google Patents
모픽 스토리지 장치 Download PDFInfo
- Publication number
- KR102546244B1 KR102546244B1 KR1020220171596A KR20220171596A KR102546244B1 KR 102546244 B1 KR102546244 B1 KR 102546244B1 KR 1020220171596 A KR1020220171596 A KR 1020220171596A KR 20220171596 A KR20220171596 A KR 20220171596A KR 102546244 B1 KR102546244 B1 KR 102546244B1
- Authority
- KR
- South Korea
- Prior art keywords
- flash memory
- requirements
- physical flash
- memory blocks
- program
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle 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/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
- 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/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- 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/079—Root cause analysis, i.e. error or fault diagnosis
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0631—Configuration or reconfiguration of storage systems by allocating resources to 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
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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
- 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
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- 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
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)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Detection And Correction Of Errors (AREA)
- Debugging And Monitoring (AREA)
- Memory System (AREA)
Abstract
본 발명은, 솔리드 스테이트 드라이브의 스토리지를 사용하는 어플리케이션의 요구 사항들에 따라, 물리 플래시 메모리 블록들 및 소거 및 프로그램 방법들을 선택하는 솔리드 스테이트 드라이브를 제공한다. 솔리드 스테이트 드라이브의 마모 추적기는 프로그램 및 소거 사이클들을 카운트하고, 솔리드 스테이트 드라이브의 원 비트 오류율 추적기는 솔리드 스테이트 드라이브로부터 읽히는 데이터의 원 비트 오류율을 모니터링한다. 어플리케이션은 어플리케이션에 의해 저장되는 데이터의 예상 저장 시간에 대응하는 허용 가능 보존 시간 및 플래시 메모리에 대한 프로그램 및 읽기 시간에 대응하는 평균 응답 시간에 관한 요구 사항들을 솔리드 스테이트 드라이브에게 제공한다. 솔리드 스테이트 드라이브는 요구 사항들을 충족시키는 데에 적합한 물리 플래시 메모리 블록들을 식별하고, 식별된 물리 플래시 메모리 블록들 중의 스토리지 공간을 어플리케이션에게 할당한다.
Description
본 발명에 따른 실시 예들의 하나 이상의 측면들은 플래시 메모리에 관한 것으로서, 좀 더 구체적으로는 다양한 환경들에 맞게 플래시 메모리 장치의 동작을 조절하기 위한 시스템 및 방법에 관한 것이다.
플래시 메모리는 데이터의 보존 시간(Retention Time)이 다양한 요인들에 의존할 수 있는 영구적인 스토리지의 한 유형이다. 예로서, 플래시 메모리 셀에서의 데이터의 보존 시간은 그 셀이 겪었던 프로그램 및 소거 사이클(Program and Erase Cycle)들의 횟수, 이용된 소거 방법, 및 이용된 프로그램 방법에 의존할 수 있다. 플래시 메모리를 이용하는 다양한 어플리케이션(Application)들은 상이한 요구 사항(Requirement)들을 가질 수 있는데, 예로서, 몇몇 어플리케이션들은 아주 긴 보존 시간들을 요구할 수 있고, 그리고 다른 어플리케이션들은 짧은 보존 시간들만을 요구할 수 있다. 짧은 보존 시간들만을 요구하는 어플리케이션들에 대해, 긴 보존 시간들을 제공하는 방식으로 플래시 메모리를 동작시키는 것은 유익하지 않을 수 있고, 예로서, 저하된 성능을 야기할 수 있다.
따라서, 다양한 환경들에 맞게 플래시 메모리 장치의 동작을 조절하기 위한 시스템 및 방법이 필요하다.
본 개시의 실시 예들의 양상들은, 솔리드 스테이트 드라이브(Solid State Drive)의 스토리지를 사용하는 어플리케이션의 요구 사항(Requirement)들에 따라, 물리 플래시 메모리 블록(Physical Flash Memory Block)들 및 소거 및 프로그램 방법들을 선택할 수 있는 솔리드 스테이트 드라이브를 제공할 수 있다. 솔리드 스테이트 드라이브의 마모 추적기(Wear-out Tracker)는 프로그램 및 소거 사이클(Program and Erase Cycles)들을 카운트할 수 있고, 솔리드 스테이트 드라이브의 원 비트 오류율(Raw Bit Error Rate) 추적기는 솔리드 스테이트 드라이브로부터 읽히는 데이터의 원 비트 오류들을 모니터링할 수 있다. 어플리케이션은 어플리케이션에 의해 저장되는 데이터의 예상 저장 시간에 대응하는 허용 가능 보존 시간(Allowable Retention Time) 및 플래시 메모리에 대한 프로그램 및 읽기 시간들에 대응하는 평균 응답 시간에 관한 요구 사항들을 솔리드 스테이트 드라이브에게 제공할 수 있다. 솔리드 스테이트 드라이브는 요구 사항들을 충족시키는 데에 적합한 물리 플래시 메모리 블록들을 식별할 수 있고, 식별된 물리 플래시 메모리 블록들 중의 스토리지 공간을 어플리케이션에게 할당할 수 있다.
본 발명의 일 실시 예는 호스트(Host)에 연결되는 솔리드 스테이트 드라이브에서, 복수의 물리 플래시 메모리 블록을 포함하는 플래시 메모리의 부분들을 할당하기 위한 방법을 제공할 수 있다. 일 실시 예에 따른 방법은: 플래시 메모리 상에서, 복수의 비트 오류 카운트(Bit Error Count)를 생성하는 오류 정정 코드 디코딩 연산(Error Correcting Code Decoding Operation)을 포함하는 복수의 읽기 동작을 수행하는 단계; 복수의 비트 오류 카운트로부터, 복수의 물리 플래시 메모리 블록 중 하나 이상에 대한 원 비트 오류율을 계산하는 단계; 복수의 물리 플래시 메모리 블록 각각에 대해 수행되는 프로그램 및 소거 사이클들을 카운트하는 단계; 복수의 프로그램 방법 각각에 관하여, 원 비트 오류율 및 프로그램 및 소거 사이클들의 카운트된 횟수로부터, 복수의 물리 플래시 메모리 블록 중 하나 이상에 대한 평균 응답 시간 및 추정된 허용 가능 보존 시간을 계산하는 단계; 호스트 상에서 동작하는 제 1 어플리케이션으로부터, 제 1 집합의 요구 사항들을 수신하는 단계; 평균 응답 시간 및 추정된 허용 가능 보존 시간에 기초하여, 복수의 물리 플래시 메모리 블록 중 하나 이상이 제 1 집합의 요구 사항들을 충족시키는 데에 적합한지 여부를 판별하는 단계; 제 1 집합의 요구 사항들을 충족시키는 데에 적합한 물리 플래시 메모리 블록들의 제 1 목록을 형성하는 단계; 제 1 어플리케이션으로부터, 스토리지 공간의 할당에 대한 요청을 수신하는 단계; 및 제 1 목록으로부터의 제 1 물리 플래시 메모리 블록을 제 1 어플리케이션에게 할당하는 단계를 포함할 수 있다.
일 실시 예에서, 복수의 프로그램 방법은: 제 1 스텝 크기(Step Size)를 활용하는 ISPP(Incremental Step Pulse Programming) 방법; 및 제 2 스텝 크기를 활용하는 ISPP 방법을 포함할 수 있다. 제 1 스텝 크기는 제 2 스텝 크기보다 클 수 있다.
일 실시 예에서, 제 1 집합의 요구 사항들은 요구되는 허용 가능 보존 시간 및 요구되는 평균 응답 시간을 포함할 수 있다.
일 실시 예에서, 복수의 물리 플래시 메모리 블록 중 하나 이상이 제 1 집합의 요구 사항들을 충족시키는 데에 적합한지 여부를 판별하는 단계는: 복수의 프로그램 방법 중 어느 프로그램 방법에 관하여, 계산된 평균 응답 시간이 요구되는 평균 응답 시간보다 작은지 여부; 및 계산된 추정된 허용 가능 보존 시간이 요구되는 허용 가능 보존 시간보다 큰지 여부를 판별하는 단계를 포함할 수 있다.
일 실시 예에 따른 방법은: 제 1 물리 플래시 메모리 블록을 소거하는 단계를 더 포함할 수 있다.
일 실시 예에서, 제 1 물리 플래시 메모리 블록을 소거하는 단계는: 제 1 물리 플래시 메모리 블록이 얕은 소거 처리(Shallow Erase Process)에 의해 제 1 집합의 요구 사항들을 충족시키는 데에 적합하도록 유지되는 것으로 예측되는 경우, 얕은 소거 처리를 채용하는 단계; 및 제 1 물리 플래시 메모리 블록이 얕은 소거 처리에 의해 제 1 집합의 요구 사항들을 충족시키는 데에 적합하도록 유지되지 않는 것으로 예측되는 경우, 일반 소거 처리(Normal Erase Process)를 채용하는 단계를 포함할 수 있다.
일 실시 예에서, 복수의 물리 플래시 메모리 블록 중 하나 이상에 대한 평균 응답 시간 및 추정된 허용 가능 보존 시간을 계산하는 단계는: 보존 시간에 대한 함수로서의 비트 오류 카운트들에 대해 선형 핏(Linear Fit)을 수행하는 단계; 및 선형 핏이 최대 수용 가능 원 비트 오류율을 초과하는 보존 시간을 추정된 허용 가능 보존 시간으로서 계산하는 단계를 포함할 수 있다.
일 실시 예에서, 최대 수용 가능 원 비트 오류율은 백만 비트들 당 한 비트의 오류일 수 있다.
일 실시 예에 따른 방법은: 호스트 상에서 동작하는 제 2 어플리케이션으로부터, 제 1 집합의 요구 사항들과 상이한 제 2 집합의 요구 사항들을 수신하는 단계; 평균 응답 시간 및 추정된 허용 가능 보존 시간에 기초하여, 복수의 물리 플래시 메모리 블록 중 하나 이상이 제 2 집합의 요구 사항들을 충족시키는 데에 적합한지 여부를 판별하는 단계; 제 2 집합의 요구 사항들을 충족시키는 데에 적합한 물리 플래시 메모리 블록들의 제 2 목록을 형성하는 단계; 제 2 어플리케이션으로부터, 스토리지 공간의 할당에 대한 요청을 수신하는 단계; 및 제 2 목록으로부터의 제 2 물리 플래시 메모리 블록을 제 2 어플리케이션에게 할당하는 단계를 더 포함할 수 있다.
일 실시 예에 따른 방법은: 제 2 물리 플래시 메모리 블록을 소거하는 단계를 더 포함할 수 있다.
일 실시 예에서, 제 2 물리 플래시 메모리 블록을 소거하는 단계는: 제 2 물리 플래시 메모리 블록이 얕은 소거 처리에 의해 제 2 집합의 요구 사항들을 충족시키는 데에 적합하도록 유지되는 것으로 예측되는 경우, 얕은 소거 처리를 채용하는 단계; 및 제 2 물리 플래시 메모리 블록이 얕은 소거 처리에 의해 제 2 집합의 요구 사항들을 충족시키는 데에 적합하도록 유지되지 않는 것으로 예측되는 경우, 일반 소거 처리를 채용하는 단계를 포함할 수 있다.
본 발명의 일 실시 예는 플래시 메모리 및 스토리지 컨트롤러를 포함하는 솔리드 스테이트 드라이브를 제공할 수 있다. 플래시 메모리는 각각이 복수의 물리 페이지(Physical Page)를 포함하는 복수의 물리 플래시 메모리 블록을 포함할 수 있다. 스토리지 컨트롤러는 모픽 엔진(Morphic Engine) 및 스토리지 가상화기(Storage Virtualizer)를 포함할 수 있다. 모픽 엔진은 NAND 컨트롤러, 마모 추적기, 및 원 비트 오류율 추적기를 포함할 수 있다. 스토리지 가상화기는 가상 스토리지 테이블(Virtual Storage Table), 및 클러스터링 엔진(Clustering Engine)을 포함할 수 있다. NAND 컨트롤러는 복수의 비트 오류 카운트를 생성하는 오류 정정 코드 디코딩 연산)을 포함하는 복수의 읽기 동작을 플래시 메모리 상에서 수행할 수 있다. 원 비트 오류율 추적기는, 복수의 비트 오류 카운트로부터, 복수의 물리 플래시 메모리 블록 중 하나 이상에 대한 원 비트 오류율을 계산할 수 있다. 마모 추적기는 복수의 물리 플래시 메모리 블록 중 하나 이상에 대해 수행되는 프로그램 및 소거 사이클들을 카운트할 수 있다. 클러스터링 엔진은, 복수의 프로그램 방법 각각에 관하여, 원 비트 오류율 및 프로그램 및 소거 사이클들의 카운트된 횟수로부터, 복수의 물리 플래시 메모리 블록 중 하나 이상에 대한 평균 응답 시간 및 추정된 허용 가능 보존 시간을 계산할 수 있다. 가상 스토리지 테이블은, 호스트 상에서 동작하는 제 1 어플리케이션으로부터, 제 1 집합의 요구 사항들을 수신할 수 있다. 클러스터링 엔진은: 가상 스토리지 테이블로부터 제 1 집합의 요구 사항들을 수신하고; 평균 응답 시간 및 추정된 허용 가능 보존 시간에 기초하여, 복수의 물리 플래시 메모리 블록 중 하나 이상이 제 1 집합의 요구 사항들을 충족시키는 데에 적합한지 여부를 판별하고; 제 1 집합의 요구 사항들을 충족시키는 데에 적합한 물리 플래시 메모리 블록들의 제 1 목록을 형성하고; 제 1 어플리케이션으로부터, 스토리지 공간의 할당에 대한 요청을 수신하고; 제 1 목록으로부터의 제 1 물리 플래시 메모리 블록을 제 1 어플리케이션에게 할당할 수 있다.
일 실시 예에서, 복수의 프로그램 방법은: 제 1 스텝 크기를 활용하는 ISPP 방법; 및 제 2 스텝 크기를 활용하는 ISPP 방법을 포함할 수 있다. 제 1 스텝 크기는 제 2 스텝 크기보다 클 수 있다.
일 실시 예에서, 제 1 집합의 요구 사항들은 요구되는 허용 가능 보존 시간 및 요구되는 평균 응답 시간을 포함할 수 있다.
일 실시 예에서, 클러스터링 엔진은, 복수의 물리 플래시 메모리 블록 중 하나 이상이 제 1 집합의 요구 사항들을 충족시키는 데에 적합한지 여부를 판별하기 위해: 복수의 프로그램 방법 중 어느 프로그램 방법에 관하여, 계산된 평균 응답 시간이 요구되는 평균 응답 시간보다 작은지 여부; 및 계산된 추정된 허용 가능 보존 시간이 요구되는 허용 가능 보존 시간보다 큰지 여부를 판별할 수 있다.
일 실시 예에서, NAND 컨트롤러는 제 1 물리 플래시 메모리 블록을 소거할 수 있다.
일 실시 예에서, NAND 컨트롤러는, 제 1 물리 플래시 메모리 블록을 소거하기 위해: 제 1 물리 플래시 메모리 블록이 얕은 소거 처리에 의해 제 1 집합의 요구 사항들을 충족시키는 데에 적합하도록 유지되는 것으로 예측되는 경우, 얕은 소거 처리를 채용하고; 제 1 물리 플래시 메모리 블록이 얕은 소거 처리에 의해 제 1 집합의 요구 사항들을 충족시키는 데에 적합하도록 유지되지 않는 것으로 예측되는 경우, 일반 소거 처리를 채용할 수 있다.
일 실시 예에서, 클러스터링 엔진은, 복수의 물리 플래시 메모리 블록 중 하나 이상에 대하여, 성능 척도에 대한 함수로서의 추정된 허용 가능 보존 시간을 계산하기 위해: 보존 시간에 대한 함수로서의 비트 오류 카운트들에 대해 선형 핏을 수행하고; 선형 핏이 최대 수용 가능 원 비트 오류율을 초과하는 보존 시간을 추정된 허용 가능 보존 시간으로서 계산할 수 있다.
일 실시 예에서, 최대 수용 가능 원 비트 오류율은 백만 비트들 당 한 비트의 오류일 수 있다.
일 실시 예에서, 가상 스토리지 테이블은, 호스트 상에서 동작하는 제 2 어플리케이션으로부터, 제 1 집합의 요구 사항들과 상이한 제 2 집합의 요구 사항들을 수신할 수 있다. 클러스터링 엔진은: 가상 스토리지 테이블로부터 제 2 집합의 요구 사항들을 수신하고; 평균 응답 시간 및 추정된 허용 가능 보존 시간에 기초하여, 복수의 물리 플래시 메모리 블록 중 하나 이상이 제 2 집합의 요구 사항들을 충족시키는 데에 적합한지 여부를 판별하고; 제 2 집합의 요구 사항들을 충족시키는 데에 적합한 물리 플래시 메모리 블록들의 제 2 목록을 형성하고; 제 2 어플리케이션으로부터, 스토리지 공간의 할당에 대한 요청을 수신하고; 제 2 목록으로부터의 제 2 물리 플래시 메모리 블록을 제 2 어플리케이션에게 할당할 수 있다.
본 발명의 실시 예들은 다양한 환경들에 맞게 플래시 메모리 장치의 동작을 조절할 수 있다. 따라서, 본 발명의 실시 예들은 장치의 성능 및 수명 측면의 혜택들을 가져올 수 있다.
도 1a는 보존 시간에 대한 함수로서의 원 비트 오류율의 그래프이다.
도 1b는 프로그램 및 소거 사이클들의 횟수에 대한 함수로서의 원 비트 오류율의 그래프이다.
도 2a는 본 발명의 실시 예에 따른 전압 스텝 시퀀스(Voltage Step Sequence)의 도면이다.
도 2b는 본 발명의 실시 예에 따른 전압 스텝 시퀀스의 도면이다.
도 3a는 본 발명의 실시 예에 따른 프로그램 상태 및 소거 상태에 대한 전압 분포들의 그래프이다.
도 3b는 본 발명의 실시 예에 따른 프로그램 상태 및 소거 상태에 대한 전압 분포들의 그래프이다.
도 4는 본 발명의 실시 예에 따른 보존 시간에 대한 함수로서의 원 비트 오류율의 그래프이다.
도 5a는 하드 디스크 드라이브(Hard Disk Drive)에 대한 4축(Four-axis) 특성의 도면이다.
도 5b는 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브에 대한 4축 특성의 도면이다.
도 5c는 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브에 대한 4축 특성의 도면이다.
도 5d는 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브에 대한 4축 특성의 도면이다.
도 6은 본 발명의 실시 예에 따른 호스트 및 솔리드 스테이트 드라이브의 블록도이다.
도 7은 본 발명의 실시 예에 따른 모픽 시스템(Morphic System)의 블록도이다.
도 8은 본 발명의 실시 예에 따른 모픽 엔진의 블록도이다.
도 9는 본 발명의 실시 예에 따른 스토리지 가상화기의 블록도이다.
도 10a는 본 발명의 실시 예에 따른 복수의 씬 클러스터링 엔진(Thin Clustering Engine)을 포함하는 시스템의 블록도이다.
도 10b는 본 발명의 실시 예에 따른 복수의 씩 클러스터링 엔진(Thick Clustering Engine)을 포함하는 시스템의 블록도이다.
도 1b는 프로그램 및 소거 사이클들의 횟수에 대한 함수로서의 원 비트 오류율의 그래프이다.
도 2a는 본 발명의 실시 예에 따른 전압 스텝 시퀀스(Voltage Step Sequence)의 도면이다.
도 2b는 본 발명의 실시 예에 따른 전압 스텝 시퀀스의 도면이다.
도 3a는 본 발명의 실시 예에 따른 프로그램 상태 및 소거 상태에 대한 전압 분포들의 그래프이다.
도 3b는 본 발명의 실시 예에 따른 프로그램 상태 및 소거 상태에 대한 전압 분포들의 그래프이다.
도 4는 본 발명의 실시 예에 따른 보존 시간에 대한 함수로서의 원 비트 오류율의 그래프이다.
도 5a는 하드 디스크 드라이브(Hard Disk Drive)에 대한 4축(Four-axis) 특성의 도면이다.
도 5b는 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브에 대한 4축 특성의 도면이다.
도 5c는 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브에 대한 4축 특성의 도면이다.
도 5d는 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브에 대한 4축 특성의 도면이다.
도 6은 본 발명의 실시 예에 따른 호스트 및 솔리드 스테이트 드라이브의 블록도이다.
도 7은 본 발명의 실시 예에 따른 모픽 시스템(Morphic System)의 블록도이다.
도 8은 본 발명의 실시 예에 따른 모픽 엔진의 블록도이다.
도 9는 본 발명의 실시 예에 따른 스토리지 가상화기의 블록도이다.
도 10a는 본 발명의 실시 예에 따른 복수의 씬 클러스터링 엔진(Thin Clustering Engine)을 포함하는 시스템의 블록도이다.
도 10b는 본 발명의 실시 예에 따른 복수의 씩 클러스터링 엔진(Thick Clustering Engine)을 포함하는 시스템의 블록도이다.
첨부되는 도면들과 연관하여 아래에서 서술되는 상세한 설명은 본 발명에 따라 제공되는 모픽 스토리지 장치(Morphic Storage Device)의 예시적인 실시 예들의 설명으로서 의도되고, 본 발명이 구성되거나 활용되는 유일한 형태들을 표현하도록 의도되지는 않는다. 이러한 설명은 도시되는 실시 예들과 연관하여 본 발명의 특징들을 서술한다. 그러나, 본 발명의 사상 및 범위 내에 포함되도록 의도되는 다른 실시 예들에 의해 동일한 또는 동등한 기능들 및 구조들이 달성될 수 있음이 이해될 것이다. 여기서 다른 경우에 나타낸 것과 같이, 같은 요소 번호들은 같은 요소들 또는 특징들을 지시하도록 의도된다.
솔리드 스테이트 드라이브(Solid State Drive)들과 같은 플래시 메모리 장치들은 몇몇 측면들에서 하드 디스크 드라이브(Hard Disk Drive)들과 같은 다른 영구적인 메모리 장치들과는 상이한 특성들을 갖는 영구적인 메모리 장치들이다. 플래시 메모리에서, 플로팅 게이트(Floating Gate) 상의 전하(Charge)는 정보를 저장하기 위해 이용될 수 있고, 이 전하는 시간 흐름에 따라 플로팅 게이트에서 누설될 수 있는데, 이로써 저장된 정보의 손실 또는 부분적인 손실을 야기할 수 있다. 게다가, 시간 흐름에 따라 데이터가 손실되는 정도는 여러 요인들에 의존한다.
도 1a를 참조하면, 플래시 메모리로부터 읽히는 데이터에서의 원 비트 오류율(Raw Bit Error Rate, RBER)은 나타낸 것처럼 보존 시간(Retention Time), 즉 데이터가 기록된 때와 그 데이터가 읽힌 때 사이의 시간에 의존할 수 있다. 비트 오류율은 또한 장치의 자체 성질(Nature)에도 의존할 수 있는데, 상이한 제조사들에 의해 만들어진 장치들은 보존 시간에 대한 함수로서 상이한 오류율들을 보여줄 수 있다.
도 1b를 참조하면, 원 비트 오류율은 보존 시간뿐만 아니라, 플래시 메모리가 영향을 받아 온 프로그램 및 소거 사이클(Program and Erase Cycle)들의 횟수에도 의존할 수 있는데, 더 긴 시간 구간들에 걸쳐 데이터를 저장하는 플래시 메모리의 능력은 프로그램 및 소거 사이클들의 횟수의 증가에 따라 저하될 수 있다. 도 1b에서, 곡선(105)은 3년 보존시의 오류율을 보여주고, 곡선(110)은 1년 보존시의 오류율을 보여주고, 곡선(115)는 3개월 보존시의 오류율을 보여주고, 곡선(120)은 3주 보존시의 오류율을 보여주고, 곡선(125)은 3일 보존시의 오류율을 보여주고, 곡선(130)은 프로그램 간섭시의 오류율을 보여주고, 곡선(135)은 1일 보존시의 오류율을 보여주고, 곡선(140)은 읽기시의 오류율을 보여주고, 곡선(145)은 소거시의 오류율을 보여준다.
도 2a 및 도 2b를 참조하면, ISPP(Incremental Step Pulse Programming)가 이용되는 경우, 프로그램 동작에 대해 이용되는 스텝 크기(Step Size)는 전하가 플로팅 게이트 상에 놓일 수 있는 정확도에 영향을 줄 수 있다. 따라서, 모든 다른 요인들이 동일할 때, 더 작은 스텝 크기가 이용될수록, 원 비트 오류율이 더 낮아진다. 그러나, 더 작은 스텝 크기를 이용하는 것은 프로그램 동작이 완료되는 것을 더 오래 걸리게 한다.
도 3a 및 도 3b를 참조하면, 메모리를 소거하기 위해 얕은 소거 처리(Shallow Erase Process)를 이용하는 것(도 3b)은 일반 소거 처리(도 3a)에 비해 연장된 수명(즉, 많은 횟수의 프로그램 및 소거 사이클들 후의 더 긴 허용 가능(Allowable) 보존 시간)을 가능하게 할 수 있고, 얕은 소거 처리는 일반 소거 처리보다 메모리를 질적으로 덜 저하시키는 경향을 보인다. 여기에서 이용되는 것처럼, "허용 가능 보존 시간"은 수용할만한(Acceptable) 원 비트 오류율을 유지하면서 데이터가 플래시 메모리에 저장된 채로 남아 있는 시간의 양이다.
허용 가능 보존 시간은 수용할만한 원 비트 오류율에 의존할 수 있다. 몇몇 실시 예에서, 수용할만한 원 비트 오류율은 10-6, 즉 백만 비트들 당 하나이다. 그러나, 얕은 소거 처리는 플로팅 게이트 상에 저장될 수 있는 전하 값들의 범위를 감소시킬 수 있기 때문에, 동일한 내력을 갖는 장치에 대하여, 얕은 소거 처리를 이용하는 것은 일반 소거 처리를 이용하는 것에 비해 어느 주어진 프로그램 및 소거 사이클 동안 더 높은 비트 오류율을 야기할 수 있다.
이처럼, 프로그램 및 소거 처리들을 선택하는 것은 적용되는 보존 시간의 요구 사항(Requirement)들을 고려하여 이루어질 수 있다. 예로서, 웹 캐싱(Web-caching)과 같은 몇몇 어플리케이션(Application)들은 며칠의 보존 시간들만을 요구하는 반면, 다른 어플리케이션들은 1년 이상의 보존 시간들을 요구할 수 있다. 예로서, 며칠의 보존 시간만을 요구하는 어플리케이션에 대하여, 많은 횟수의 프로그램 및 소거 사이클들의 영향을 받아온 플래시 메모리의 물리 블록을 이용하는 것이 수용할만하거나 더 큰 스텝 크기를 이용하여 ISPP를 이용하는 것이 가능할 수 있다.
도 4를 참조하면, 예로서, 긴 허용 가능 보존 시간(415)을 제공하는 플래시 메모리의 물리 블록 및 소거 및 프로그램 처리들(원 비트 오류율의 곡선(410)으로 표현됨)은 스토리지에 긴 시간 동안 남을 것으로 예상되는 데이터를 위해 이용될 수 있다. 더 짧은 허용 가능 보존 시간(420)으로도 충분한 데이터는 더 짧은 허용 가능 보존 시간을 제공하는 처리들(425)(예컨대, 얕은 소거 처리들, 또는 큰 스텝 크기를 이용하는 ISPP)을 이용하여 다루어질 수 있다.
도 5a 내지 도 5d를 참조하면, 하드 디스크 드라이브 또는 솔리드 스테이트 드라이브와 같은 영구적인 스토리지 장치는 몇몇 주요 특성들을 가질 수 있다. 예로서, 이러한 장치는 처리량(Throughput) 또는 레이턴시(Latency)의 측면 또는 읽기 동작, 소거 동작, 또는 쓰기(또는 프로그램) 동작을 수행하는 데에 요구되는 시간의 측면에서, 주어진 수준의 성능을 제공할 수 있다.
솔리드 스테이트 드라이브에 관하여, 소거 동작 또는 프로그램 동작을 완료하는 데에 요구되는 시간은 읽기 동작을 완료하는 데에 요구되는 시간과 상당히 다를 수 있고(예컨대, 소거 동작 또는 프로그램 동작을 완료하는 데에 요구되는 시간이 더 김), 평균 응답 시간이 장치의 성능을 특징짓기 위해 이용될 수 있다. 이 평균 응답 시간은 읽기 시간, 소거 시간, 및 프로그램 시간으로부터 계산될 수 있고, 기록된 데이터의 각 조각에 대한 읽기들의 횟수의 일반적인 비율, 및 긴 소거 및 프로그램 시간들의 영향을 줄이기 위한 버퍼링(Buffering)과 같은 완화 조치들의 이용을 고려하여 계산될 수 있다.
몇몇 실시 예에서, 평균 응답 시간은 다음과 같이 정의될 수 있다.
여기서, Nread 및 Nwrite는 각각 특정 시간 구간(예컨대, 10초)에 걸친 벤치마킹 테스트(Benchmarking Test)에 의해 수행되는 읽기들 및 쓰기들의 횟수이고, Tread,i 및 Twrite,i는 각각 테스트 동안의 i번째 읽기 시간 및 i번째 쓰기 시간이다.
장치는 특정 수명을 가질 수 있는데, 수명은 하드 디스크 드라이브에 대하여는 움직이는 부분들에 의해 겪게 되는 마모(Wear)의 속도(Rate)에 의해 결정될 수 있고, 솔리드 스테이트 드라이브에 대하여는 프로그램 및 소거 사이클들로부터 기인하는 저하에 의해 결정될 수 있다. 장치는 용량, 즉 그 장치가 저장할 수 있는 데이터의 최대량, 및 허용 가능 보존 시간을 가질 수 있다.
도 5a 및 도 5b로부터, 예로서, 하드 디스크 드라이브가 솔리드 스테이트 드라이브보다 더 큰 용량 및 더 긴 보존 시간을 가질 수 있지만, 더 짧은 수명 및 더 느린 응답 시간(즉, 낮은 성능)을 가질 수 있음을 볼 수 있다. 유사하게, 도 5c 및 도 5d로부터, 제 1 어플리케이션(도 5d의 "app1")이 솔리드 스테이트 드라이브의 디폴트(Default) 특성들(도 5c)에 비해 높은 성능의 요구 사항들 및 짧은 보존 시간의 요구 사항들을 가질 수 있고, 제 2 어플리케이션(도 5d의 "app2")이 낮은 성능의 요구 사항들 및 긴 보존 시간의 요구 사항들을 가질 수 있음을 볼 수 있다.
도 6을 참조하면, 일 실시 예에서, 호스트(610)는 솔리드 스테이트 드라이브(615)에 연결될 수 있고, 영구적인 스토리지를 위해 솔리드 스테이트 드라이브(615)를 이용할 수 있다. 솔리드 스테이트 드라이브(615)는 영구적인 스토리지를 제공하도록 구성되는 인클로저(Enclosure)에서 독립되어 있는 유닛(Self-contained Unit)일 수 있다.
솔리드 스테이트 드라이브(615)는 스토리지 인터페이스를 통해, 예로서, 스토리지 동작들을 위해 호스트(610)에 의해 관습적으로 이용되는 커넥터 및 규약(Protocol)을 통해, 호스트(610)에 연결될 수 있다. 커넥터 및 규약은, 예로서, SATA(Serial Advanced Technology Attachment), Fibre Channel, SAS(Serial Attached SCSI), NVMe(Non Volatile Memory Express) 등을 따르거나, 또는 이더넷(Ethernet) 또는 USB(Universal Serial Bus)와 같은 좀 더 범용인 인터페이스를 따를 수 있다.
솔리드 스테이트 드라이브(615)의 플래시 메모리(620)는 물리 플래시 메모리 블록들(630)(또는, "플래시 블록들" 또는 "플래시 메모리 블록들") 및 물리 페이지들(635)로 구조화될 수 있다. 물리 플래시 메모리 블록(630)은 한 번의 동작으로 소거될 수 있는 메모리의 가장 작은 단위일 수 있고, 물리 페이지(635)는 한 번의 동작으로 기록될 수 있는 메모리의 가장 작은 단위일 수 있다. 각 물리 플래시 메모리 블록(630)은 복수의 물리 페이지(635)를 포함할 수 있다.
호스트(610)는 논리 페이지 번호(Logical Page Number)들로 지시되는 스토리지 접근 요청들을 이용하여 대용량 스토리지 장치와 상호작용할 수 있고, 예로서, 어떤 논리 페이지 번호의 페이지에 데이터를 저장할 것을 요청하거나, 어떤 논리 페이지 번호의 페이지에 저장된 데이터를 읽을 것을 요청하거나, 또는 어떤 논리 페이지 번호의 페이지에 저장된 데이터를 소거할 것을 요청할 수 있다. 솔리드 스테이트 드라이브(615)에 대하여, 정적인(Static) 논리 대 물리 맵핑(Logical to Physical Mapping)은 이용되지 않을 수 있는데, 이는 읽기/쓰기 크기와 소거 크기 사이의 차이가, 데이터를 하나의 물리 위치로부터 다른 곳으로 끊임없이 이동시키는 가비지 컨트롤 메커니즘(Garbage Control Mechanism)에 영향을 주기 때문이고, 따라서 동적인(Dynamic) 논리 대 물리 맵핑이 필요하다.
플래시 변환 계층(Flash Translation Layer)은 동적으로 논리 페이지 번호들을 물리 페이지 번호(Physical Page Number)들로 변환 또는 맵핑할 수 있다. 새로운 데이터가 어떤 논리 페이지 번호의 페이지의 데이터에 겹쳐 기록(Overwrite)될 경우, 플래시 변환 계층은, 그 논리 페이지 번호에 현재 대응하는 물리 페이지(635)를 포함하는 물리 플래시 메모리 블록(630)을 소거하는 대신, 이 물리 페이지(635)가 무효(Invalid)인 것으로 표시할 수 있고, 그 논리 페이지 번호를 새로운 물리 페이지(635)로 맵핑하기 위해 논리 페이지 번호들로부터 물리 페이지들(635)로의 맵핑을 갱신할 수 있고, 그 새로운 데이터를 그 새로운 물리 페이지(635)에 기록할 수 있다. 플래시 변환 계층은 솔리드 스테이트 드라이브(615)의 스토리지 컨트롤러(625)(예컨대, 마이크로 컨트롤러) 상에서 동작하는 소프트웨어로 구현될 수 있다.
플래시 메모리(620)로의 프로그램을 위해 호스트(610)로부터 수신되는 데이터는 오류 정정 코드(Error Correcting Code)를 이용하여 인코딩될 수 있고, 데이터가 플래시 메모리(620)로부터 읽히는 경우, 원 데이터 읽기(Raw Data Read)는 오류 정정 코드 디코딩 연산을 이용하여 처리될 수 있는데, 이로써 정정된 오류들을 포함하는 디코딩된 데이터 및 비트 오류 카운트(Bit Error Count), 즉 오류 정정 코드 디코딩 연산에 의해 정정되었던 비트 오류들의 개수의 카운트를 생성할 수 있다.
플래시 변환 계층은 때때로 "가비지 콜렉션(Garbage Collection)"으로 불리는 동작을 수행할 수 있다. 이 동작에서, 무효인 것으로 표시되었던 물리 페이지들(635)의 상당 부분(예컨대, 설정된 문턱값을 초과하는 부분)을 포함하는 어떤 물리 플래시 메모리 블록(630)에 남아있는 유효(Valid)한 물리 페이지들(635)이 하나 이상의 다른 물리 플래시 메모리 블록들(630)의 물리 페이지들(635)로 이동한 후에, 그 물리 플래시 메모리 블록(630)이 소거될 수 있고, 이로써 새롭게 소거된 물리 플래시 메모리 블록(630)이 새로운 데이터의 기록을 위해 가용(Available)하게 될 수 있다.
복수의 어플리케이션이 호스트(610)에서 동작(예컨대, 실행)할 수 있고, 입력/출력 요청들(예컨대, 소거 요청들, 프로그램(쓰기) 요청들, 및 읽기 요청들)을 생성할 수 있는데, 이 입력/출력 요청들은 솔리드 스테이트 드라이브(615)로 전송될 수 있다. 이러한 각 어플리케이션은 영구적인 스토리지의 특성들에 대한 요구 사항들, 예로서, 최대로 수용할만한 평균 응답 시간 및 최소로 허용 가능한 보존 시간을 특정하는 요구 사항들을 가질 수 있다.
몇몇 실시 예에서, 이 요구 사항들은 어느 물리 플래시 메모리 블록들(630)이 어플리케이션을 위해 데이터를 저장하는 데에 이용될 수 있는지 판별하기 위해 솔리드 스테이트 드라이브(615)에 의해 이용될 수 있고, 예로서, 어플리케이션을 위해 데이터를 기록할 때에 이용될 스텝 크기를 선택하기 위해 솔리드 스테이트 드라이브(615)에 의해 이용될 수 있다.
각 어플리케이션은, 동작을 시작할 때, 자신을 솔리드 스테이트 드라이브(615)에게 인식시키고 자신의 스토리지 요구 사항들을 솔리드 스테이트 드라이브(615)에게 보내서, 솔리드 스테이트 드라이브(615)에 등록할 수 있다. 이런 방식으로, 솔리드 스테이트 드라이브(615)는 어떤 어플리케이션에 의해 생성되는 입력/출력 요청들이 그 어플리케이션의 요구 사항들을 충족시키는 방식으로 다루어지도록 보장할 수 있다. 해당 요구 사항들에 따라 입력/출력 요청들에 적응적으로(Adaptively) 응답하는 솔리드 스테이트 드라이브(615)의 특성은 여기서 "모픽(Morphic)"으로 불릴 것이다.
도 7을 참조하면, 몇몇 실시 예에서, 어플리케이션들로부터의 요청들에 기초하여 플래시 메모리를 어플리케이션들에게 할당하기 위해, 스토리지 컨트롤러(625)에 모픽 엔진(Morphic Engine, 710) 및 스토리지 가상화기(Storage Virtualizer, 715)가 채용될 수 있다. 모픽 엔진(710)은 스토리지 가상화기(715)를 통해 어플리케이션들에 의해 보내지는 입력/출력 요청들을 다루기 위해 NAND 플래시 인터페이스(720)에 연결될 수 있다.
도 8을 참조하면, 몇몇 실시 예에서, 모픽 엔진(710)은 원 비트 오류율 추적기(810), 마모(Wear-out) 추적기(815), 보존 예측기(820), 및 NAND 컨트롤러(825)를 포함할 수 있다.
원 비트 오류율 추적기(810)는 각 물리 플래시 메모리 블록(630)의 원 비트 오류율을 모니터링할 수 있다. 원 비트 오류율 추적기(810)는 이를 달성하기 위해, 호스트 요청들에 응답하여 플래시 메모리로부터 데이터가 읽히는 때마다 비트 오류 카운트를 추적할 수 있다. 몇몇 실시 예에서, 비트 오류 카운트는 플래시 변환 계층에서 추가 엔트리(Entry)로서 기록될 수 있다.
원 비트 오류율 추적기(810)는 또한, 예로서, 호스트에 의해 요청된 읽기 동작들이 물리 플래시 메모리 블록(630)에서 수행되지 않는 어느 때에 그 물리 플래시 메모리 블록(630)에서의 원 비트 오류율의 갱신된 측정치를 얻기 위해, "샘플링(Sampling)" 읽기 동작들(즉, 호스트 요청들에 기인하지 않는 읽기 동작들)을 수행할 수 있다. 이런 방식으로, 원 비트 오류율 추적기(810)는, 시간 흐름에 따라, 각 물리 플래시 메모리 블록(630)에 대해 관측된 비트 오류율을 나열하는 테이블을 생성할 수 있다.
몇몇 실시 예에서, 이 테이블은 각 물리 플래시 메모리 블록(630)에 대해 여러 엔트리를 가질 수 있고, 예로서, 큰 스텝 크기를 이용하여 ISPP로 프로그램된 메모리 셀들에 대한 제 1 관측된 원 비트 오류율, 및 작은 스텝 크기를 이용하여 ISPP로 프로그램된 메모리 셀들에 대한 제 2 관측된 원 비트 오류율을 가질 수 있다. 이 테이블은 솔리드 스테이트 드라이브(615)로의 전력 공급이 일시적으로 중단되는 경우에 보존되도록 불휘발성 메모리(예컨대, 플래시 메모리(620))에 저장될 수 있다.
마모 추적기(815)는 플래시 메모리 상에서 수행되는 프로그램 및 소거 동작들을 모니터링할 수 있고, 각 물리 플래시 메모리 블록(630)에 대해 수행된 프로그램 및 소거 사이클들의 횟수를 카운트할 수 있다. 몇몇 실시 예에서, 플래시 변환 계층에서 웨어 레벨링(Wear-leveling)의 목적으로도 프로그램 및 소거 사이클들의 횟수가 추적될 수 있다. 이러한 방식으로, 마모 추적기(815)는, 시간 흐름에 따라, 물리 플래시 메모리 블록(630) 상에서 수행되었던 프로그램 및 소거 사이클들의 횟수를 (각 물리 플래시 메모리 블록(630)에 대해) 나열하는 테이블을 생성할 수 있다.
몇몇 실시 예에서, 이 테이블은 각 물리 플래시 메모리 블록(630)에 대해 여러 엔트리를 가질 수 있고, 예로서, 얕은 소거 처리를 이용하여 수행된 프로그램 및 소거 사이클들의 제 1 카운트, 및 일반 소거 처리를 이용하여 수행된 프로그램 및 소거 사이클들의 별개의 제 2 카운트를 가질 수 있다. 이 테이블은 솔리드 스테이트 드라이브(615)로의 전력 공급이 일시적으로 중단되는 경우에 보존되도록 불휘발성 메모리(예컨대, 플래시 메모리(620))에 저장될 수 있다.
보존 예측기(820)는 다양한 소거 및 프로그램 방법 각각에 대한 각 물리 플래시 메모리 블록(630)의 허용 가능 보존 시간을 추정하기 위해 이용될 수 있다. 일 실시 예에서, 보존 예측기(820)는 (원 비트 오류율 추적기(810)로부터 알려진 바에 따라) 보존 시간에 대한 함수로서의 비트 오류율에 대해 선형 핏(Linear Fit)(또는, 지수 핏(Exponential Fit))을 수행할 수 있고, 이 핏의 원 비트 오류율이 문턱값, 즉 최대로 수용할만한 원 비트 오류율(예컨대, 백만 비트들 당 한 비트의 오류)과 동일한 경우의 보존 시간의 값으로서 허용 가능 보존 시간을 계산할 수 있다. 몇몇 실시 예에서, 보존 예측기(820)는 허용 가능 보존 시간을 계산하기 위해 마모 추적기(815)에 의해 생성되는 테이블을 참조할 수 있다. 몇몇 실시 예에서, 문턱값은 프로그램 가능한 변수(Programmable Variable)일 수 있다.
NAND 컨트롤러(825)는 블록 및 페이지 수준의 읽기, 쓰기, 및 소거 커맨드들을 발행(Issue)하여 플래시 메모리(620)와 직접 상호작용할 수 있는 드라이버 루틴(Driver Routine)일 수 있다. NAND 컨트롤러(825)는 플래시 메모리(620)로부터 읽힌 원 데이터의 비트 오류들을 검출하고 정정하는 오류 정정 코드 디코딩 알고리즘을 처리할 수 있다. NAND 컨트롤러(825)는 또한 보존 예측기(820)로부터 스토리지 가상화기(715)로 정보를 전달할 수 있다. NAND 컨트롤러(825)는 나아가 소거 처리(예컨대, 얕은 소거 또는 일반 소거가 이용되는지) 및 프로그램 처리(예컨대, ISPP를 이용하는 프로그램 동작에 채용될 스텝 크기)에 대한 제어를 제공할 수 있다.
도 9를 참조하면, 스토리지 가상화기(715)에서, 가상 스토리지 테이블(910)은, 솔리드 스테이트 드라이브(615)에 등록된 각 어플리케이션에 대하여, 예로서, 최대로 수용할만한 평균 응답 시간 및 최소로 허용 가능한 보존 시간을 지시하는 요구 사항들의 집합을 저장할 수 있다. 이 요구 사항들은 또한 얼마나 많은 블록들이 어플리케이션에 의해 잠재적으로 이용될 것인지를 지시하는 용량 요구 사항을 포함할 수 있다.
클러스터링 엔진(Clustering Engine, 915)은 가상 스토리지 테이블(910)로부터 정보를 수신할 수 있고, 솔리드 스테이트 드라이브(615)에 등록된 각 어플리케이션에 대한 클러스터 목록(Cluster List)을 생성할 수 있는데, 클러스터란 보존 예측기(820)의 계산에 따라 각 어플리케이션의 요구 사항들을 충족시키는 데에 적합한 물리 플래시 메모리 블록들(630)의 집합일 수 있고, 클러스터 목록은 클러스터에 있는 물리 플래시 메모리 블록들(630)의 목록일 수 있다.
(플래시 변환 계층의 일부분일 수 있는) 어드레스 변환 블록(Address Translation Block, 920)은 논리 페이지 어드레스들을 플래시 메모리(620)의 물리 페이지 어드레스들로 맵핑하는 교차 참조 테이블(Cross Reference Table)을 유지할 수 있다.
하나 이상의 클러스터들의 구성원인 물리 플래시 메모리 블록(630)이 소거될 때마다, 클러스터링 엔진(915)은 그 물리 플래시 메모리 블록(630)이 여전히 클러스터들의 구성원의 자격을 갖는지(Eligible) 여부를 재평가할 수 있고(자격은 잠재적으로 추가의 프로그램 및 소거 사이클들에 의해 영향을 받을 수 있음), 따라서 클러스터들 및 클러스터 목록들을 갱신할 수 있다.
물리 플래시 메모리 블록(630)이 클러스터에 대응하는 어플리케이션의 요구사항들을 충족시키는 데에 적합한 경우, 즉 몇몇 프로그램 방법에 대하여(예컨대 ISPP에 이용될 몇몇 스텝 크기에 대하여) 어플리케이션의 평균 응답 시간의 요구 사항 및 허용 가능한 보존 시간의 요구 사항 모두가 함께 또는 동시에 충족되는 경우, 그 물리 플래시 메모리 블록(630)이 그 클러스터의 구성원의 자격을 갖는 것으로 여겨질 수 있다.
어플리케이션이 가용 물리 플래시 메모리 블록들(630) 중 어느 것에 대해서도 너무 엄격한 요구 사항들을 갖는 경우, 그 요구 사항들을 가장 잘 충족시키는 하나 이상의 물리 플래시 메모리 블록들(630)이 그 어플리케이션을 위한 클러스터의 구성원의 자격을 갖는 것으로 여겨질 수 있다. 이 상황에서, 그 어플리케이션은 그것의 요구 사항들을 충족시키지 않는 물리 플래시 메모리 블록들(630)이 그것에 할당되었다는 알림을 받을 수 있다. 이 결정은, 물리 플래시 메모리 블록(630)이 갓 소거된 경우에 가장 최근의 삭제가 얕은 소거 처리를 이용하여 수행되었는지 또는 일반 소거 처리를 이용하여 수행되었는지 여부를 포함하여, 그 물리 플래시 메모리 블록(630)이 겪었던 프로그램 및 소거 사이클들의 내력을 고려하여 이루어질 수 있다.
몇몇 실시 예에서, 가비지 콜렉션 동안, 가비지 콜렉션에 의해 재사용되는 블록의 삭제는 그 블록이 특정 어플리케이션에 할당될 때까지 연기될 수 있다. 이 실시 예에서, 그 블록이 일반 소거를 이용하여 소거되면 클러스터에 대응하는 어플리케이션의 요구 사항들을 충족시키는 데에 적합하게 될 경우, 클러스터링 엔진(915)은 그 블록을 그 클러스터에 포함시킬 수 있다. 그 블록이 어플리케이션에 할당된 후, 그 블록이 그 어플리케이션의 요구 사항들을 충족하도록 만들기에 얕은 소거로 충분한 경우, 그 블록은 얕은 소거를 이용하여 소거될 수 있다. 그렇지 않으면, 그 블록은 일반 소거를 이용하여 소거될 수 있다.
어떤 동작에서, 어플리케이션이 영구적인 스토리지의 할당에 대한 요청을 생성하는 경우, 그 요청은 가상 스토리지 테이블(910)에 의해 수신될 수 있는데, 이로써 하나 이상의 자격을 갖는 물리 플래시 메모리 블록들(630), 즉 그 어플리케이션의 요구 사항들을 충족시키는 물리 플래시 메모리 블록들(630)의 목록에 대하여 클러스터링 엔진(915)으로의 요청을 생성할 수 있다. 그 뒤, 어드레스 변환 블록(920)은 하나 이상의 자격을 갖는 물리 플래시 메모리 블록들(630) 내에 어플리케이션에 의해 요청된 스토리지 영역(들)을 할당할 수 있고, 논리 페이지 번호들로부터 물리 페이지 번호들로의 맵핑을 갱신할 수 있다.
어플리케이션이 나중에 솔리드 스테이트 드라이브(615)에 데이터를 기록하는 경우, 프로그램 동작은 그 어플리케이션의 요구 사항들과 일치하는 프로그램 파라미터들(예컨대, 평균 응답 시간의 요구 사항을 충족시키기에는 충분히 크고 허용 가능한 보존 시간의 요구 사항을 충족시키기에는 충분히 작은 스텝 크기를 이용하는 ISPP)을 이용하여 수행될 수 있다.
도 10a 및 도 10b를 참조하면, 몇몇 실시 예에서, 복수의 솔리드 스테이트 드라이브(615)가 함께 연결되어, 호스트(610)로 스토리지를 제공하는 논리 스토리지 계층(Logical Storage Layer)을 형성할 수 있다. 이러한 실시 예에서, 스토리지 할당의 결정들이 클러스터링 정보에 따라 이루어질 수 있도록 클러스터링 정보를 공유하는 것이 도움될 수 있다.
예로서, 도 10a에서, 어플리케이션이 (스토리지 인터페이스(1010) 및 두 번째 인터페이스(1015)를 통해) 많은 양의 스토리지에 대한 할당 요청을 생성하는 경우, 솔리드 스테이트 드라이브들(615)의 각 씬 클러스터링 엔진(Thin Clustering Engine)들(1025)에 의해 생성된 클러스터 목록들의 사본들을 유지하는 중앙집중식 클러스터링 엔진(Centralized Clustering Engine, 1020)은 하나 이상의 솔리드 스테이트 드라이브들(615)의 하나 이상의 자격을 갖는 물리 플래시 메모리 블록들(630)로부터 공간을 할당할 수 있다.
도 10b의 실시 예에서, 각 솔리드 스테이트 드라이브(615)는 씩 클러스터링 엔진(Thick Clustering Engine, 1030)을 포함할 수 있는데, 씩 클러스터링 엔진(1030)은 자신의 고유의 클러스터 목록에 더하여 다른 씩 클러스터링 엔진들(1030) 각각의 클러스터 목록들의 사본들을 유지할 수 있다. 이 실시 예에서, 솔리드 스테이트 드라이브(615)가 (스토리지 인터페이스(1010) 및 두 번째 인터페이스(1015)를 통해) 그 솔리드 스테이트 드라이브(615)의 자격을 갖는 물리 플래시 메모리 블록들(630) 내의 가용량을 초과하는 양의 스토리지에 대한 할당 요청을 수신하는 경우, 그 솔리드 스테이트 드라이브(615)는 충족되지 않은 할당 요구 사항에 대한 요청을 다른 솔리드 스테이트 드라이브(615)로 전파(Propagate)할 수 있다(이로써, 결과적으로, 그 솔리드 스테이트 드라이브(615)가 요청을 수용하지 못하는 경우, 충족되지 않은 할당 요구 사항에 대한 요청을 다른 솔리드 스테이트 드라이브(615)로 전파할 수 있다).
앞의 내용을 고려하면, 솔리드 스테이트 드라이브(615)는 소거 및 프로그램 파라미터들을 조절하고 어플리케이션의 요구 사항들에 잘 맞는 물리 플래시 메모리 블록들(630)을 선택함으로써, 다양한 어플리케이션들의 스토리지 요구 사항들을 효율적으로 충족시킬 수 있다. 이런 방식으로, 예로서, 긴 보존 시간을 요구하는 어플리케이션들에게는 긴 보존 시간이 제공될 수 있고, 더 짧은 보존 시간만을 요구하는 어플리케이션들에게는, 대응하는 성능 향상과 함께, 더 짧은 보존 시간이 제공될 수 있다.
여기에서 설명된 본 발명의 실시 예들에 따른 솔리드 스테이트 드라이브(615) 및/또는 다른 관련 있는 장치들 또는 구성 요소들은 적절한 하드웨어, 펌웨어(예컨대, ASIC(Application-specific Integrated Circuit)), 소프트웨어, 또는 그것들의 적절한 조합을 활용하여 구현될 수 있다. 예로서, 솔리드 스테이트 드라이브(615)의 다양한 구성 요소는 하나의 집적 회로 칩 또는 별개의 집적 회로 칩들 상에 형성될 수 있다. 나아가, 솔리드 스테이트 드라이브(615)의 다양한 구성 요소는 연성 인쇄 회로 필름(Flexible Printed Circuit Film), TCP(Tape Carrier Package), 또는 PCB(Printed Circuit Board) 상에 구현되거나, 솔리드 스테이트 드라이브(615)와 동일한 기판 상에 형성될 수 있다.
나아가, 솔리드 스테이트 드라이브(615)의 다양한 구성 요소는 여기에서 설명된 다양한 기능을 수행하기 위해 하나 이상의 컴퓨팅 장치들의 하나 이상의 프로세서들 상에서 동작하고 컴퓨터 프로그램 명령어(Computer Program Instruction)들을 실행하고 다른 시스템 구성 요소들과 상호작용하는 프로세스(Process) 또는 스레드(Thread)일 수 있다. 컴퓨터 프로그램 명령어들은, 예로서, RAM(Random Access Memory)과 같은 표준 메모리 장치를 이용하여 컴퓨팅 장치에 구현될 수 있는 메모리에 저장될 수 있다. 컴퓨터 프로그램 명령어들은, 예로서, CD-ROM, 플래시 드라이브 등과 같은 다른 비 일시적으로 컴퓨터로 읽힐 수 있는 매체(Non-transitory Computer-readable Media)에 저장될 수도 있다.
또한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자(이하, 통상의 기술자)는, 본 발명의 예시적인 실시 예들의 범위를 벗어나지 않고 다양한 컴퓨팅 장치의 기능이 단일 컴퓨팅 장치에 결합 또는 집적되거나 특정 컴퓨팅 장치의 기능이 하나 이상의 다른 컴퓨팅 장치들에 걸쳐 분산될 수 있음을 인식할 것이다.
스토리지 컨트롤러(625)는 프로세싱 회로(Processing Circuit) 그 자체이거나, 프로세싱 회로를 포함할 수 있다. 여기서 "프로세싱 회로"라는 용어는 데이터 또는 디지털 신호들을 처리하기 위해 채용되는 하드웨어, 펌웨어, 및 소프트웨어의 어떠한 조합이든 포함하도록 의도된다. 프로세싱 회로의 하드웨어는, 예로서, ASICs(Application Specific Integrated Circuits), 범용 또는 전용의 CPU(Central Processing Unit)들, DSP(Digital Signal Processor)들, GPU(Graphic Processing Unit)들, 및 FPGA(Field Programmable Gate Array)들과 같은 프로그램 가능한 논리 장치들을 포함할 수 있다.
여기에서 이용되는 바에 따른 프로세싱 회로에서, 각 기능은 그 기능을 수행하도록 구성되는 하드웨어, 즉 고정 배선(Hard-wired), 또는 비 일시적인 스토리지 매체에 저장된 명령어들을 실행하도록 구성되는 CPU와 같은 좀 더 범용인 하드웨어에 의해 수행될 수 있다. 프로세싱 회로는 단일 PWB(Printed Wiring Board) 상에 제작되거나, 상호연결된 여러 PWB들에 걸쳐 분산될 수 있다. 프로세싱 회로는 다른 프로세싱 회로들을 포함할 수 있다. 예로서, 프로세싱 회로는 PWB 상에서 상호연결되는 두 개의 프로세싱 회로들, FPGA, 및 CPU를 포함할 수 있다.
다양한 부분, 구성 요소, 영역, 계층 및/또는 구역을 설명하기 위해 "제 1", "제 2", "제 3" 등과 같은 용어들이 여기에서 이용되었으나, 이 부분들, 구성 요소들, 영역들, 계층들 및/또는 구역들은 이 용어들에 의해 한정되지 않아야 함이 이해될 것이다. 이 용어들은 단지 하나의 부분, 구성 요소, 영역, 계층 또는 구역을 다른 부분, 구성 요소, 영역, 계층 또는 구역과 구별하기 위해 이용될 뿐이다. 따라서, 위에서 논의된 제 1 부분, 구성 요소, 영역, 계층 또는 구역은 본 발명의 사상 및 범위를 벗어나지 않고 제 2 부분, 구성 요소, 영역, 계층 또는 구역으로도 불릴 수 있다.
여기에서 "밑", "아래", "하단", "하", "위", "상단" 등과 같이 공간적으로 상대적인 용어들은 도면들에 도시된 바에 따라 하나의 부분 또는 특징의 다른 부분(들) 또는 특징(들)에 대한 관계를 설명하기 위해 설명의 편의상 이용될 수 있다. 공간적으로 상대적인 이러한 용어들은 도면들에 묘사된 방향에 더하여, 이용 중인 또는 동작 중인 장치의 다른 방향들을 포함하도록 의도됨이 이해될 것이다. 예로서, 도면들의 장치가 뒤집히는 경우, 다른 부분들 또는 특징들의 "아래" 또는 "밑" 또는 "하"에 있는 것으로 설명된 부분들은 그 다른 부분들 또는 특징들의 "위"로 향하게 될 것이다. 따라서, "아래" 및 "하"의 예시적인 용어들은 위 및 아래의 방향 모두를 포함할 수 있다. 장치는 다른 방향으로 향할 수 있고(예컨대, 90도 회전하거나 다른 방향들로 놓일 수 있음), 여기에서 이용되는 공간적으로 상대적인 어구들은 그에 맞추어 해석되어야 한다. 나아가, 두 계층 "사이"에 한 계층이 있는 것으로 언급되는 경우, 그 계층은 두 계층 사이의 유일한 계층일 수 있고, 또는 더 끼워진(Interleaving) 하나 이상의 계층들이 존재할 수도 있음이 이해될 것이다.
여기에서 이용되는 용어는 특정 실시 예들을 설명하려는 목적을 위한 것일 뿐이고 본 발명을 한정하도록 의도되지는 않는다. 여기에서 이용되는 바에 따른 "실질적으로", "대략", 및 그 밖의 유사한 용어들은 수준에 관한 용어로서가 아니라 비슷함(Approximation)의 용어로서 이용되고, 통상의 기술자에 의해 인식될 측정 또는 계산 값들의 내재적인 편차들을 설명하도록 의도되지는 않는다. 여기에서 이용되는 바에 따른 "주요 구성 요소"의 용어는 중량(Weight)으로 적어도 절반의 요소를 이루는 구성 요소를 의미하고, "주요 부분"의 용어는 복수의 항목에 적용되었을 경우에 그 항목들의 적어도 절반을 의미한다.
여기에서 이용되는 바에 따른 "한" 및 "하나"의 단수 형태들은, 문맥상 분명히 달리 지시하지 않으면, 복수 형태들 역시 포함하도록 의도된다. "포함한다" 및/또는 "구성된다"의 용어들은, 이 명세서에서 이용되는 경우에, 진술된 특징들, 정수들, 단계들, 동작들, 부분들, 및/또는 구성 요소들의 존재를 명시하지만, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 부분들, 구성 요소들, 및/또는 그것들의 모음의 존재 또는 추가를 불가능하게 하지는 않는다. 여기에서 이용되는 바에 따른 "및/또는"의 용어는 나열된 관련 항목들 중 하나 이상의 어떠한 그리고 모든 조합들을 포함한다. "적어도 하나"와 같은 표현들은 요소들의 목록에 선행할 경우에 요소들의 전체 목록을 수식하고 목록의 개별 요소들을 수식하지는 않는다. 나아가, "할 수 있다"의 이용은 본 발명의 실시 예들을 설명할 때에 "본 발명의 하나 이상의 실시 예들"을 나타낸다. 또한, "예시"의 용어는 예 또는 실례를 나타내도록 의도된다. 여기에서 이용되는 바에 따른 "이용"의 용어는 "활용"의 용어와 유의어인 것으로 고려될 수 있다.
한 부분 또는 계층이 다른 부분 또는 계층 "위에 놓이거나", "연결되거나", 또는 "인접하는" 것으로 언급되는 경우, 그 부분 또는 계층은 다른 부분 또는 계층의 직접 위에 놓이거나, 직접 연결되거나, 바로 인접할 수도 있고, 또는 더 끼워진 하나 이상의 부분들 또는 계층들이 존재할 수도 있음이 이해될 것이다. 반대로, 한 부분 또는 계층이 다른 부분 또는 계층의 "직접 위에 놓이거나", "직접 연결되거나", 또는 "바로 인접하는" 것으로 언급되는 경우, 더 끼워진 부분들 또는 계층들은 존재하지 않는다.
여기에서 언급되는 어떤 수치 범위는 언급된 범위 내에 포함되는 동일한 수치 정밀도(Precision)의 모든 하위 범위들을 포함하도록 의도된다. 예로서, "1.0 내지 10.0"의 범위는 언급된 최소값 1.0 및 언급된 최대값 10.0 사이의 모든 하위 범위들, 즉 1.0 이상의 최소값 및 10.0 이하의 최대값을 갖는 하위 범위들, 예로서 2.4 내지 7.6을 포함하도록 의도된다. 여기에서 언급되는 최대 수치 상한은 거기에 포함되는 모든 더 낮은 수치 상한들을 포함하도록 의도되고, 이 명세서에서 언급되는 최소 수치 하한은 거기에 포함되는 모든 더 높은 수치 하한들을 포함하도록 의도된다.
여기에서 모픽 스토리지 장치의 실시 예들이 구체적으로 설명되고 도시되었으나, 많은 수정 및 변형이 통상의 기술자에게 명확할 것이다. 따라서, 본 발명의 원리에 따라 구성되는 모픽 스토리지 장치는 여기에서 구체적으로 설명된 바와 달리 구현될 수 있음이 이해되어야 한다. 본 발명은 또한 아래의 청구항들 및 그것들의 균등물들로 정의된다.
620 : 플래시 메모리 630 : 물리 플래시 메모리 블록
635 : 물리 페이지
1025 : 씬 클러스터링 엔진 1030 : 씩 클러스터링 엔진
635 : 물리 페이지
1025 : 씬 클러스터링 엔진 1030 : 씩 클러스터링 엔진
Claims (7)
- 호스트에 연결된 솔리드 스테이트 드라이브(Solid State Drive)에서, 복수의 물리 플래시 메모리 블록들을 포함하는 플래시 메모리의 부분들을 할당하는 방법에 있어서:
상기 복수의 물리 플래시 메모리 블록들의 각각에 대해 수행되는 프로그램 및 소거 사이클들의 횟수를 카운트하는 단계;
복수의 프로그램 방법들의 각각에 관하여, 원 비트 오류율 및 상기 프로그램 및 소거 사이클들의 횟수로부터, 하나 이상의 물리 플래시 메모리 블록들에 대한, 평균 응답 시간 및 추정된 허용 가능 보존 시간을 계산하는 단계;
상기 호스트에서 실행되는 제 1 어플리케이션으로부터, 요구되는 허용 가능 보존 시간 또는 요구되는 평균 응답 시간을 포함하는 제 1 집합의 요구 사항들을 수신하는 단계;
하나 이상의 물리 플래시 메모리 블록들에 대해, 상기 제 1 집합의 요구 사항들을 충족하기에 적합한지 판별하는 단계;
상기 제 1 어플리케이션으로부터 스토리지 공간의 할당에 대한 요청을 수신하는 단계; 및
상기 제 1 집합의 요구 사항들을 충족하기에 적합한 제 1 물리 플래시 메모리 블록을, 상기 제 1 어플리케이션에 할당하는 단계를 포함하는 방법. - 제 1 항에 있어서,
상기 플래시 메모리 상에서 복수의 읽기 동작들을 수행하는 단계로서, 하나 이상의 읽기 동작들은 오류 정정 코드 디코딩 연산을 포함하고, 상기 오류 정정 코드 디코딩 연산은 비트 오류 카운트를 생성하는 것; 그리고
복수의 비트 오류 카운트들로부터, 상기 복수의 물리 플래시 메모리 블록들 중 하나 이상에 대한 상기 원 비트 오류율을 계산하는 단계를 더 포함하는 방법. - 제 1 항에 있어서,
물리 플래시 메모리 블록들의 제 1 목록을 형성하는 단계로서, 상기 제 1 목록 내의 상기 물리 플래시 메모리 블록들은 상기 제 1 집합의 요구 사항들을 충족하기에 적합한 것을 더 포함하되,
상기 제 1 집합의 요구 사항들을 충족하기에 적합한 제 1 물리 플래시 메모리 블록을, 상기 제 1 어플리케이션에 할당하는 단계는, 상기 제 1 목록으로부터의 상기 제 1 물리 플래시 메모리 블록을, 상기 제 1 어플리케이션에 할당하는 단계를 포함하는 방법. - 제 3 항에 있어서,
상기 호스트에서 실행되는 제 2 어플리케이션으로부터, 상기 제 1 집합의 요구 사항들과 다른 제 2 집합의 요구 사항들을 수신하는 단계;
하나 이상의 물리 플래시 메모리 블록들에 대해, 상기 제 2 집합의 요구 사항들을 충족하기에 적합한지 판별하는 단계;
물리 플래시 메모리 블록들의 제 2 목록을 형성하는 단계로서, 상기 제 2 목록 내의 상기 물리 플래시 메모리 블록들은 상기 제 2 집합의 요구 사항들을 충족하기에 적합한 것;
상기 제 2 어플리케이션으로부터 스토리지 공간의 할당에 대한 요청을 수신하는 단계; 및
상기 제 2 목록으로부터의 제 2 물리 플래시 메모리 블록을, 상기 제 2 어플리케이션에 할당하는 단계를 더 포함하는 방법. - 제 1 항에 있어서,
상기 복수의 프로그램 방법들은:
제1 프로그램 전압; 및
제2 프로그램 전압을 포함하고,
상기 제2 프로그램 전압은 상기 제1 프로그램 전압보다 큰 방법. - 삭제
- 제 1 항에 있어서,
하나 이상의 물리 플래시 메모리 블록들에 대해, 상기 제 1 집합의 요구 사항들을 충족하기에 적합한지 판별하는 단계는:
상기 복수의 프로그램 방법들 중 임의의 프로그램 방법에 관하여,
상기 계산된 평균 응답 시간이 상기 요구되는 평균 응답 시간보다 작은지 여부; 및
상기 계산된 추정된 허용 가능 보존 시간이 상기 요구되는 허용 가능 보존 시간보다 큰지 여부를 판별하는 단계를 포함하는 방법.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662352509P | 2016-06-20 | 2016-06-20 | |
US62/352,509 | 2016-06-20 | ||
US15/242,433 | 2016-08-19 | ||
US15/242,433 US10055159B2 (en) | 2016-06-20 | 2016-08-19 | Morphic storage device |
KR1020170018819A KR102477581B1 (ko) | 2016-06-20 | 2017-02-10 | 모픽 스토리지 장치 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170018819A Division KR102477581B1 (ko) | 2016-06-20 | 2017-02-10 | 모픽 스토리지 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20230004358A KR20230004358A (ko) | 2023-01-06 |
KR102546244B1 true KR102546244B1 (ko) | 2023-06-22 |
Family
ID=60659470
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170018819A KR102477581B1 (ko) | 2016-06-20 | 2017-02-10 | 모픽 스토리지 장치 |
KR1020220171596A KR102546244B1 (ko) | 2016-06-20 | 2022-12-09 | 모픽 스토리지 장치 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170018819A KR102477581B1 (ko) | 2016-06-20 | 2017-02-10 | 모픽 스토리지 장치 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10055159B2 (ko) |
JP (1) | JP6847764B2 (ko) |
KR (2) | KR102477581B1 (ko) |
CN (1) | CN107526543B (ko) |
TW (2) | TWI708143B (ko) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US12008266B2 (en) | 2010-09-15 | 2024-06-11 | Pure Storage, Inc. | Efficient read by reconstruction |
US10275165B2 (en) * | 2016-09-12 | 2019-04-30 | Toshiba Memory Corporation | Memory controller |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
US12039165B2 (en) | 2016-10-04 | 2024-07-16 | Pure Storage, Inc. | Utilizing allocation shares to improve parallelism in a zoned drive storage system |
US11947814B2 (en) | 2017-06-11 | 2024-04-02 | Pure Storage, Inc. | Optimizing resiliency group formation stability |
US12032848B2 (en) | 2021-06-21 | 2024-07-09 | Pure Storage, Inc. | Intelligent block allocation in a heterogeneous storage system |
US11520514B2 (en) | 2018-09-06 | 2022-12-06 | Pure Storage, Inc. | Optimized relocation of data based on data characteristics |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10949113B2 (en) * | 2018-01-10 | 2021-03-16 | SK Hynix Inc. | Retention aware block mapping in flash-based solid state drives |
US11132133B2 (en) | 2018-03-08 | 2021-09-28 | Toshiba Memory Corporation | Workload-adaptive overprovisioning in solid state storage drive arrays |
US12001688B2 (en) | 2019-04-29 | 2024-06-04 | Pure Storage, Inc. | Utilizing data views to optimize secure data access in a storage system |
US10656847B2 (en) | 2018-05-10 | 2020-05-19 | International Business Machines Corporation | Mitigating asymmetric transient errors in non-volatile memory by proactive data relocation |
CN108845765B (zh) * | 2018-05-31 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种nand数据读取方法、系统、设备及存储介质 |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US11163452B2 (en) * | 2018-09-24 | 2021-11-02 | Elastic Flash Inc. | Workload based device access |
JP7178916B2 (ja) | 2019-01-29 | 2022-11-28 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP2020149123A (ja) * | 2019-03-11 | 2020-09-17 | キオクシア株式会社 | メモリシステム、及びメモリシステムの制御方法 |
US11086705B2 (en) * | 2019-03-18 | 2021-08-10 | International Business Machines Corporation | Managing the reliability of pages in non-volatile random access memory |
US11288007B2 (en) * | 2019-05-16 | 2022-03-29 | Western Digital Technologies, Inc. | Virtual physical erase of a memory of a data storage device |
KR102680521B1 (ko) * | 2019-06-18 | 2024-07-04 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11714572B2 (en) | 2019-06-19 | 2023-08-01 | Pure Storage, Inc. | Optimized data resiliency in a modular storage system |
US12001684B2 (en) | 2019-12-12 | 2024-06-04 | Pure Storage, Inc. | Optimizing dynamic power loss protection adjustment in a storage system |
KR20210088916A (ko) | 2020-01-07 | 2021-07-15 | 에스케이하이닉스 주식회사 | 이전에 발생한 에러 분석을 통해 에러대응동작을 선택하기 위한 메모리 시스템 및 메모리 시스템을 포함하는 데이터 처리 시스템 |
US11507297B2 (en) | 2020-04-15 | 2022-11-22 | Pure Storage, Inc. | Efficient management of optimal read levels for flash storage systems |
US11416338B2 (en) | 2020-04-24 | 2022-08-16 | Pure Storage, Inc. | Resiliency scheme to enhance storage performance |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US11768763B2 (en) | 2020-07-08 | 2023-09-26 | Pure Storage, Inc. | Flash secure erase |
US11354190B2 (en) * | 2020-08-13 | 2022-06-07 | Western Digital Technologies, Inc. | Using over provisioning space for selectively storing block parity |
KR20220021167A (ko) * | 2020-08-13 | 2022-02-22 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US11681448B2 (en) | 2020-09-08 | 2023-06-20 | Pure Storage, Inc. | Multiple device IDs in a multi-fabric module storage system |
US11513974B2 (en) | 2020-09-08 | 2022-11-29 | Pure Storage, Inc. | Using nonce to control erasure of data blocks of a multi-controller storage system |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US11630593B2 (en) | 2021-03-12 | 2023-04-18 | Pure Storage, Inc. | Inline flash memory qualification in a storage system |
US12099742B2 (en) | 2021-03-15 | 2024-09-24 | Pure Storage, Inc. | Utilizing programming page size granularity to optimize data segment storage in a storage system |
US20220365707A1 (en) * | 2021-05-12 | 2022-11-17 | Samsung Electronics Co., Ltd. | System and method for fine granular retention control in storage devices |
US11832410B2 (en) | 2021-09-14 | 2023-11-28 | Pure Storage, Inc. | Mechanical energy absorbing bracket apparatus |
US11994723B2 (en) | 2021-12-30 | 2024-05-28 | Pure Storage, Inc. | Ribbon cable alignment apparatus |
CN116469442B (zh) * | 2022-03-23 | 2024-05-03 | 武汉置富半导体技术有限公司 | 芯片数据保持时间的预测方法、装置及存储介质 |
US12099410B2 (en) * | 2022-12-01 | 2024-09-24 | Solid State Storage Technology Corporation | Statistics table of solid state storage device and using method thereof |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013047913A (ja) * | 2011-08-29 | 2013-03-07 | Toshiba Corp | 情報処理装置、情報処理装置の制御方法、制御ツール、及びホスト装置 |
WO2015155860A1 (ja) * | 2014-04-09 | 2015-10-15 | 株式会社日立製作所 | 情報記憶装置及び情報記憶装置の制御方法 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4140018A1 (de) * | 1991-12-04 | 1993-06-09 | Bts Broadcast Television Systems Gmbh, 6100 Darmstadt, De | Verfahren und schaltungsanordnung zum decodieren von rs-codierten datensignalen |
US7903806B1 (en) * | 2000-01-05 | 2011-03-08 | Canoga Perkins Corp. | Expert call analyzer and next generation telephony network configuration system |
US20050081080A1 (en) * | 2003-10-14 | 2005-04-14 | International Business Machines Corporation | Error recovery for data processing systems transferring message packets through communications adapters |
US7593259B2 (en) * | 2006-09-13 | 2009-09-22 | Mosaid Technologies Incorporated | Flash multi-level threshold distribution scheme |
JP2008287404A (ja) * | 2007-05-16 | 2008-11-27 | Hitachi Ltd | 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法 |
JP2009163782A (ja) * | 2007-12-13 | 2009-07-23 | Toshiba Corp | 半導体記憶装置 |
JP2009251627A (ja) * | 2008-04-01 | 2009-10-29 | Panasonic Corp | メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム |
ATE539403T1 (de) * | 2008-06-24 | 2012-01-15 | Sandisk Il Ltd | Verfahren und vorrichtung zur fehlerkorrektur nach der löschanzahl eines festkörperspeichers |
US8464143B2 (en) | 2009-01-12 | 2013-06-11 | Board Of Regents Of The Nevada System Of Higher Education | Error detection method |
US8433985B2 (en) | 2010-03-29 | 2013-04-30 | Intel Corporation | Error correction mechanisms for flash memories |
US8489855B2 (en) | 2010-05-07 | 2013-07-16 | Ocz Technology Group Inc. | NAND flash-based solid state drive and method of operation |
US9170933B2 (en) | 2010-06-28 | 2015-10-27 | International Business Machines Corporation | Wear-level of cells/pages/sub-pages/blocks of a memory |
CN103329103B (zh) * | 2010-10-27 | 2017-04-05 | 希捷科技有限公司 | 使用用于基于闪存的数据存储的自适应ecc技术的方法和设备 |
US20140359381A1 (en) * | 2011-11-02 | 2014-12-04 | The University Of Tokyo | Memory controller and data storage device |
US8862967B2 (en) * | 2012-03-15 | 2014-10-14 | Sandisk Technologies Inc. | Statistical distribution based variable-bit error correction coding |
US9251019B2 (en) | 2012-05-29 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system and method for managing solid-state retirement |
US20130346812A1 (en) * | 2012-06-22 | 2013-12-26 | Micron Technology, Inc. | Wear leveling memory using error rate |
US8862810B2 (en) | 2012-09-27 | 2014-10-14 | Arkologic Limited | Solid state device write operation management system |
JP5528525B2 (ja) * | 2012-11-19 | 2014-06-25 | 京セラ株式会社 | 携帯情報端末 |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9007842B2 (en) * | 2013-03-12 | 2015-04-14 | Seagate Technology Llc | Retention detection and/or channel tracking policy in a flash memory based storage system |
US9122589B1 (en) | 2013-06-28 | 2015-09-01 | Emc Corporation | Data storage system with unified system cache |
US9195401B2 (en) | 2014-02-18 | 2015-11-24 | University Of Florida Research Foundation, Inc. | Method and apparatus for virtual machine live storage migration in heterogeneous storage environment |
JP6174502B2 (ja) * | 2014-02-21 | 2017-08-02 | 株式会社ゼンリン | 経路探索装置、経路探索方法、コンピュータプログラム、および、データ構造 |
US9419655B2 (en) | 2014-04-04 | 2016-08-16 | Seagate Technology Llc | Error correction code (ECC) selection using probability density functions of error correction capability in storage controllers with multiple error correction codes |
US9916237B2 (en) * | 2014-12-12 | 2018-03-13 | Sandisk Technologies Llc | Model based configuration parameter management |
US10430112B2 (en) * | 2014-12-22 | 2019-10-01 | Sandisk Technologies Llc | Memory block cycling based on memory wear or data retention |
US20170160338A1 (en) | 2015-12-07 | 2017-06-08 | Intel Corporation | Integrated circuit reliability assessment apparatus and method |
-
2016
- 2016-08-19 US US15/242,433 patent/US10055159B2/en active Active
-
2017
- 2017-02-10 KR KR1020170018819A patent/KR102477581B1/ko active IP Right Grant
- 2017-04-18 TW TW109121230A patent/TWI708143B/zh active
- 2017-04-18 TW TW106112839A patent/TWI699647B/zh active
- 2017-05-19 JP JP2017099640A patent/JP6847764B2/ja active Active
- 2017-06-16 CN CN201710455905.1A patent/CN107526543B/zh active Active
-
2018
- 2018-07-25 US US16/045,639 patent/US10489075B2/en active Active
-
2022
- 2022-12-09 KR KR1020220171596A patent/KR102546244B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013047913A (ja) * | 2011-08-29 | 2013-03-07 | Toshiba Corp | 情報処理装置、情報処理装置の制御方法、制御ツール、及びホスト装置 |
WO2015155860A1 (ja) * | 2014-04-09 | 2015-10-15 | 株式会社日立製作所 | 情報記憶装置及び情報記憶装置の制御方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107526543A (zh) | 2017-12-29 |
JP6847764B2 (ja) | 2021-03-24 |
US10489075B2 (en) | 2019-11-26 |
TWI708143B (zh) | 2020-10-21 |
KR20170142841A (ko) | 2017-12-28 |
TWI699647B (zh) | 2020-07-21 |
JP2017228287A (ja) | 2017-12-28 |
CN107526543B (zh) | 2022-02-01 |
TW201800945A (zh) | 2018-01-01 |
US20170364298A1 (en) | 2017-12-21 |
US10055159B2 (en) | 2018-08-21 |
US20190018604A1 (en) | 2019-01-17 |
KR20230004358A (ko) | 2023-01-06 |
KR102477581B1 (ko) | 2022-12-14 |
TW202040366A (zh) | 2020-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102546244B1 (ko) | 모픽 스토리지 장치 | |
US11355197B2 (en) | Memory system with nonvolatile cache and control method thereof | |
US9507711B1 (en) | Hierarchical FTL mapping optimized for workload | |
US10170195B1 (en) | Threshold voltage shifting at a lower bit error rate by intelligently performing dummy configuration reads | |
US9298608B2 (en) | Biasing for wear leveling in storage systems | |
CN108369818B (zh) | 一种闪存设备的刷新方法和装置 | |
US20170242625A1 (en) | Apparatus for ssd performance and endurance improvement | |
US8495320B1 (en) | Method and apparatus for storing data in a flash memory including single level memory cells and multi level memory cells | |
US8560770B2 (en) | Non-volatile write cache for a data storage system | |
US10956317B2 (en) | Garbage collection in non-volatile memory that fully programs dependent layers in a target block | |
Grupp et al. | The Harey Tortoise: Managing Heterogeneous Write Performance in {SSDs} | |
US9946473B2 (en) | Efficiently managing unmapped blocks to extend life of solid state drive | |
US10126970B2 (en) | Paired metablocks in non-volatile storage device | |
US10489076B2 (en) | Morphic storage device | |
US20220043713A1 (en) | Meta Data Protection against Unexpected Power Loss in a Memory System | |
CN112689829A (zh) | 用于就地数据替代媒体的混合式耗损均衡 | |
US10459839B1 (en) | Accelerating garbage collection of flushed logical erase blocks in non-volatile memory | |
US11698742B2 (en) | Garbage collection in a memory component using an adjusted parameter | |
CN111381776A (zh) | 用于存储器装置的方法、系统和计算机可读媒体 | |
TW202038106A (zh) | 儲存裝置、儲存裝置的控制方法及記錄媒體 | |
US20140372707A1 (en) | Wear Leveling in a Memory System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |