KR20100033507A - 새로운 불량 블록 검출 - Google Patents
새로운 불량 블록 검출 Download PDFInfo
- Publication number
- KR20100033507A KR20100033507A KR1020107000248A KR20107000248A KR20100033507A KR 20100033507 A KR20100033507 A KR 20100033507A KR 1020107000248 A KR1020107000248 A KR 1020107000248A KR 20107000248 A KR20107000248 A KR 20107000248A KR 20100033507 A KR20100033507 A KR 20100033507A
- Authority
- KR
- South Korea
- Prior art keywords
- block
- error
- read
- page
- memory device
- Prior art date
Links
Images
Classifications
-
- 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/2017—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 memory access, memory control or I/O control functionality is redundant
-
- 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/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
- 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
- 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
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/85—Active fault masking without idle spares
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Dram (AREA)
Abstract
NAND 플래시와 같은 비휘발성 집적 회로 메모리 디바이스(106)로부터 데이터를 판독하는 장치 및 방법에 관한 것이다. 예컨대, 개시된 기술은 오퍼레이팅 시스템(104)의 디바이스 드라이버(110)로 구현될 수 있다. 판독 동작 동안에 에러가 추적된다. 판독 동작 동안에 충분한 에러가 관측되면(204), 그 블록은 소거가 요구되거나 블록의 페이지에 대한 기입이 요구될 때 폐기된다(210, 212, 214, 310). 일 실시예는 정정할 수 없는 에러로부터 데이터를 복구하는 기술이다. 예컨대, 판독 모드는 데이터 복구를 시도하는 더욱 신뢰성 있는 판독 모드로 변경될 수 있다(410). 일 실시예는 또한 에러 정정 코드 데이터의 디코딩에 의해 데이터가 정정 가능한지의 여부(430)에 상관없이 메모리 디바이스로부터 데이터를 리턴시킨다(106).
Description
본 발명의 실시예들은 일반적으로 집적 회로에 관한 것이다. 특히, 실시예들은 메모리 회로용 소프트웨어 또는 하드웨어에 관한 것이다.
플래시 메모리는 소거 가능하고 재프로그래밍 가능한 비휘발성 집적 회로 메모리의 일종이다. 플래시 메모리에서, 메모리 셀들은 소거를 위해 "블록들"로 배열된다. 블록은 소거된 후, 원한다면 프로그래밍 준비가 된다. NOR 플래시 메모리는 데이터 검색을 위해 개개의 바이트에 대한 액세스를 제공하나 비교적 밀도가 낮은 플래시 메모리의 일종이다.
NAND 플래시 메모리는 비교적 밀도가 높은 플래시 메모리의 일종이다. 직렬로 접속된 셀들의 컬럼들을 형성함으로써 부분적으로 고밀도를 달성한다. 또한, NAND 플래시 메모리의 경우, 데이터의 페이지와 같이 바이트의 비교적 큰 그룹으로 데이터를 프로그래밍 및 액세스한다. 예컨대, 페이지는 어레이의 로우 또는 로우의 일부에 대응할 수 있다.
통상은 동시에 데이터의 "페이지"로 NAND 플래시 메모리 어레이에 대한 데이터 기입 및 판독을 행한다. 예컨대, 페이지는 2,048의 데이터 바이트와 64의 스페어 바이트로 이루어진 2,112 바이트를 가질 수 있다. 스페어 바이트는 통상은 에러 정정 코드(ECC), 웨어-레벨링(wear-leveling) 정보, 또는 다른 오버헤드 데이터용으로 이용된다. 에러 정정 코드는 저장된 데이터의 강건성을 증가시킨다. 통상적으로, 블록 코드의 형태를 이용하여 순환 잉여 검사(CRC) 체크섬, 해밍(Hamming) 코드, 리드-솔로몬(Reed-Solomon) 에러 정정 등의 에러 정정 코드를 생성한다. 이들 에러 정정 코드는 데이터 바이트의 판독 시에 에러가 있는지를 검출하고 통상은 그 에러가 에러 정정 코드의 능력을 벗어나지 않는다면 그 데이터 바이트에서 에러를 정정할 수 있다.
플래시 메모리는 많이 이용된다. 예로는 플래시 메모리 하드 드라이브(하드 드라이브 대체), USB 플래시 드라이브 또는 썸(thumb) 드라이브, 모바일 폰, 디지털 카메라, 디지털 미디어 플레이어, 게임, 메모리 카드, 내비게이션 디바이스, 퍼스널 디지털 어시스턴트, 컴퓨터 등이 있다. 한도 내에서, 에러 정정 코드는 데이터 바이트의 데이터에서 많은 에러를 정정할 수 있다. 그러나, 그 한도를 벗어나면, 통상은 에러가 있는 데이터를 정정할 수 없다. 종래 기술의 한가지 단점은 에러를 정정할 수 없게 될 때까지 대개는 너무 늦는다는 점이다.
데이터 저장에 플래시 메모리를 이용하는 다수의 디바이스는 또한 오퍼레이팅 시스템을 이용한다. 오퍼레이팅 시스템은 하드웨어와 다른 소프트웨어 간의 추상화 계층으로서 기능한다. 예컨대, 오퍼레이팅 시스템의 파일 시스템 및 디바이스 드라이버는 통상은 메모리 디바이스에 저장된 데이터에의 액세스를 제공한다. 오퍼레이팅 시스템 내에는 추가의 계층이 존재할 수 있다.
도 1은 CPU(102) 형태의 마이크로프로세서, 오퍼레이팅 시스템(104), 메모리 디바이스(106)를 포함하는 처리 환경의 일부의 예를 도시한다. 메모리 디바이스(106)는 NAND 플래시 메모리 디바이스일 수 있다. 오퍼레이팅 시스템(104)은 파일 시스템(108)과 디바이스 드라이버(110)를 더 포함한다. 오퍼레이팅 시스템(104)은 1 이상의 파일 시스템과 1 이상의 디바이스 드라이버, 그리고 본 발명과는 관련없는 다른 컴포넌트들을 지원할 수 있다는 것을 알 것이다. 또한, DRAM과 같은 휘발성 메모리 디바이스(114)와 직접 메모리 액세스(DMA) 컨트롤러(116)가 도시되어 있다.
CPU(102)는 오퍼레이팅 시스템(104)의 코드를 포함하는 명령어들을 실행한다. 파일 시스템(108)의 코드는 메모리 디바이스(106)에 대한 논리적 어드레스와 같은 로우 레벨 정보와, 파일명 및 디렉토리와 같은 하이 레벨 정보 간의 추상화를 제공한다. 디바이스 드라이버(110)의 코드는 통상은 메모리 디바이스(106)에/로부터의 데이터 전송을 위한 로우 레벨 정보를 취급한다. 디바이스 드라이버(110)는 CPU(102)가 메모리 디바이스(106)에 직접 액세스(프로세서 입력/출력으로 알려짐)하기 위한 코드를 제공하거나, 메모리 디바이스(106)에/로부터의 데이터 전송을 위해 버스 제어를 취급하도록 DMA 컨트롤러(116)를 활성화하는 코드를 제공할 수 있다. DMA 컨트롤러(116)의 이용은 CPU(102)가 자유롭게 다른 태스크들을 취급할 수 있도록 한다.
프로세서 입력/출력(PIO)과 DMA 입력/출력은 모두, 디바이스 드라이버(110)가 기입 동작 및 판독 동작과 관련된 ECC 정보를 취급할 수 있다. 다수의 오퍼레이팅 시스템에는, 각종 상이한 타입의 메모리 디바이스에 대한 판독 및 기입을 지원하는 다수의 디바이스 드라이버가 존재한다. 파일 시스템(108)에 의한 맵핑 이외에도, 다수의 NAND 플래시 메모리 디바이스는, 불량 블록 관리 및 웨어아웃(wear out) 관리에, 논리적 어드레스와 물리적 어드레스 간의, 플래시 변환 계층이라고 하는, 가상 맵핑을 이용한다.
이들 도면 및 관련 설명은 본 발명의 특정 실시예들을 예시하기 위한 것이며 제한하고자 하는 것은 아니다.
도 1은 CPU, 오퍼레이팅 시스템 및 메모리 디바이스를 포함하는 처리 환경을 도시한다.
도 2는 메모리 디바이스로부터 데이터의 페이지를 판독하기 위한 프로세스의 실시예를 일반적으로 예시하는 흐름도이다.
도 3은 열화된 블록의 사전 폐기(proactive retirement)를 위한 프로세스의 실시예를 일반적으로 예시하는 흐름도이다.
도 4는 정정할 수 없는 에러를 가진 것으로 판정된 데이터를 복구하기 위한 프로세스의 실시예를 예시하는 흐름도이다.
도 1은 CPU, 오퍼레이팅 시스템 및 메모리 디바이스를 포함하는 처리 환경을 도시한다.
도 2는 메모리 디바이스로부터 데이터의 페이지를 판독하기 위한 프로세스의 실시예를 일반적으로 예시하는 흐름도이다.
도 3은 열화된 블록의 사전 폐기(proactive retirement)를 위한 프로세스의 실시예를 일반적으로 예시하는 흐름도이다.
도 4는 정정할 수 없는 에러를 가진 것으로 판정된 데이터를 복구하기 위한 프로세스의 실시예를 예시하는 흐름도이다.
NAND 플래시와 같은 비휘발성 집적 회로 메모리 디바이스로부터 데이터를 판독하는 장치 및 방법에 관한 것이다. 예컨대, 이들 기술은 오퍼레이팅 시스템의 디바이스 드라이버로 구현될 수 있다. 판독 동작 동안에 에러의 적어도 일부 히스토리가 유지(예컨대, 추적)된다. 페이지에 대한 판독 동작은 통상은 대응하는 블록에 대한 소거 동작 또는 페이지의 프로그래밍보다 매우 자주 일어난다. 이들 판독 동작 동안에 만나고 추적되는 에러는 판독되는 페이지 및 블록의 신뢰성의 표시를 제공할 수 있다.
판독 동작 동안에 충분한 에러가 관측되면, 그 블록은 폐기용으로 표시(예컨대, 지정)된다. 그 블록은 예컨대 그 블록에 대한 소거 또는 기입(프로그래밍)이 요청될 때 그 블록을 불량 블록 테이블에 부가함으로써 폐기될 수 있다.
일 실시예는 정정할 수 없는 에러로부터 데이터를 복구하는 기술을 포함한다. 예컨대, 판독 모드는 데이터 복구를 시도하는 더욱 신뢰성 있는 판독 모드로 변경될 수 있다. 이 판독 모드는 덜 적극적인 타이밍을 가질 수 있다. 일 실시예는 또한 에러 정정 코드 데이터의 디코딩에 의해 데이터가 정정되었는지의 여부에 상관없이 메모리 디바이스로부터 데이터를 리턴시킨다. 통상적으로 크게 실패하는 하드 디스크 디바이스와는 대조적으로, 집적 회로 메모리 디바이스는 통상은 에러 정정이 실패할지라도 대부분의 데이터가 이용 가능하게 남겨지는 소량의 비트 실패를 갖는다.
개시된 기술을 구현한 오퍼레이팅 시스템의 디바이스 드라이버는 소프트웨어로(코드로), 하드웨어로(모듈로), 또는 소프트웨어와 하드웨어의 조합으로 구현될 수 있다. 또한, NAND 플래시 메모리의 상황에서 기재하였으나, 본원에 기재한 원리 및 이점은 다른 형태의 비휘발성 집적 회로에도 적용 가능할 것이다. 본원에 기재한 이익 및 특징을 모두 제공하지 않는 실시예들을 포함한, 본 발명의 다른 실시예들은 당업자에게는 명백할 것이다.
도 2는 메모리 디바이스(106)(도 1)로부터 데이터의 페이지를 판독하고 에러 히스토리를 유지하기 위한 프로세스를 일반적으로 예시하는 흐름도이다. 일 실시예에서, 이 프로세스는 오퍼레이팅 시스템의 디바이스 드라이버(110)(도 1)에 의해 실행되고, 메모리 디바이스(106)는 NAND 플래시 메모리 디바이스이다. 예시한 프로세스는 다양하게 변경될 수 있다는 것을 당업자는 알 것이다. 예컨대, 다른 실시예에서, 예시한 프로세스의 각종 부분들을 조합하거나, 엇갈린 순서로 재배열하거나, 제거하거나 할 수 있다. 프로세스의 시작에서, 대응하는 에러 정정 코드 데이터와 함께 메모리 디바이스에 데이터가 이미 저장되어 있는 것으로 한다.
예시한 프로세스의 실시예는 일반적으로 메모리 디바이스(106)(도 1)의 블록의 단일 페이지를 판독하는 것과 관련하여 기재할 것이다. 카운터를 이용하여 블록에 대한 에러 히스토리를 유지한다. 메모리 디바이스(106)는 많은 블록을 가지며, 에러 추적을 위해 블록 당 하나의 카운터를 가질 수 있다. 일 실시예에서, 카운터 어레이를 이용하여 카운터들을 저장한다. 블록에 대한 카운터가 10의 값과 같은 미리 정해진 값일 수 있는 특정 임계 레벨 MAX에 도달할 때, 프로세스는 그 블록을 조기 폐기된 것으로 판정한다. 예컨대, 도 3과 관련하여 더욱 상세하게 후술하는 바와 같이 블록을 소거하거나 블록의 페이지를 기입할 때 블록을 폐기시킬 수 있다. 휘발성 또는 비휘발성 메모리를 이용하여 카운터들을 저장할 수 있다. 그러나, 강건성을 위해, 통상은 메모리 디바이스(106) 그 자체와는 상이한 디바이스에 그러한 종류의 정보를 저장하는 것이 바람직하다. 일 실시예에서, 파워업 시에 히스토리가 리셋되도록 파워업 시에 카운터들이 리셋된다. 이러한 리셋은 블록에서의 불시의 열화에 대하여 비교적 빠른 응답을 제공한다.
프로세스는 메모리 디바이스(106)(도 1)의 특정 페이지에 대한 판독의 요구를 수신함으로써 시작한다. 그 요구는, 파일 시스템(108)(도 1)으로부터와 같이, 디바이스 드라이버(110)(도 1)보다는 오퍼레이팅 시스템(104)(도 1)의 상위 계층으로부터의 서브루틴 호출에 의한 것일 수 있다. 프로세스는 CPU(102)로 하여금 메모리 디바이스(106)와 통신하게 하는 머신 코드나 CPU(102)로 하여금 DMA 컨트롤러(116)에게 메모리 디바이스(106)와 통신하도록 지시하게 하는 명령어들과 같은 로우 레벨 명령어들을 이용하여 특정 페이지를 요구한다(202). 메모리 디바이스(106)는 메모리 어레이(들)에 내부적으로 액세스하여 페이지에 대한 데이터를 제공한다. ECC 데이터를 디코딩하여 에러가 존재하는지를 검출하고, 또한 에러가 존재하고 정정할 수 있다면 에러를 정정한다. ECC의 디코딩은 소프트웨어 기능이거나 하드웨어 기능일 수 있다. 일 실시예에서, ECC의 인코딩 및 디코딩은 디바이스 드라이버(110)에 의해 실행되는 기능이다. 다른 실시예에서, ECC의 인코딩 및 디코딩은 DMA 컨트롤러(116)의 기능이다.
프로세스는 페이지 판독 시에 하나 이상의 에러가 검출되었는지의 여부를 판정한다(204). 에러는 정정 가능할 수도 그렇지 않을 수도 있다. 에러 검출 프로세스 동안에 에러를 만나지 않은 경우, 프로세스는 (그 페이지에 대응하는 블록에 대한 카운터를 업데이트하지 않고) 나와, 파일 시스템(108)(도 1)과 같은 디바이스 드라이버(110)(도 1)의 호출 루틴으로 "OK" 상태를 리턴시킨다. 요구된 데이터는 메모리 디바이스(106)(도 1)의 출력 버퍼에서 이용 가능하고, 데이터 버스에 대한 논리적 어드레스에서, 다른 버퍼 등의 다른 위치로 전달될 수 있다.
에러(들)이 발생한 것으로 프로세스가 판정하면(204), 프로세스는 에러 정정 코드(ECC) 데이터의 디코딩에 의해 에러(들)을 정정할 수 있는지의 여부를 판정한다(206). ECC의 한도 내에서 에러(들)을 정정할 수 있다면, 프로세스는 정정된 에러(들)이 어느 정도인지를 판정한다(208). 예컨대, 일 실시예에서, 프로세스는 정정되지 않은 데이터를 정정된 데이터와 비교하여 에러수의 카운트를 취득한다. 이와 달리, 에러 정정 코드에 의해 정정하기에는 에러가 너무 많은 경우에는, 프로세스는 그 블록을 조기 폐기된 것으로 표시한다(210). 일 실시예에서, 카운터를 임계값 MAX로 설정하여 조기 폐기의 표시를 제공한다. 블록을 조기 폐기된 것으로 표시하는 것은 실제로 블록을 폐기시킨 것과 동일하지 않다.
블록을 불량 블록 테이블에 부가하는 것과 같이 블록을 불량으로 마킹함으로써 블록을 폐기시킬 수 있다. 불량 블록 테이블은 통상은 메모리 디바이스(106)(도 1) 그 자체에 저장된다. 그러나, 블록으로부터의 데이터가 더 이상 요구되지 않을 때까지, 블록은 아직 불량으로 마킹되지 않을 것이다. 블록을 불량으로 마킹하는 것은 블록에 대한 판독 액세스를 방지할 것이다. 따라서, 일 실시예에서, 프로세스는 도 3과 관련하여 보다 상세히 후술하는 바와 같이 소거 동작이 요구되거나 기입 동작이 요구될 때까지 블록을 불량으로 마킹하는 것을 기다린다. 일 실시예에서, 프로세스는 파일 시스템(108)(도 1)과 같은 호출 루틴으로 에러를 리턴시키고, 블록을 폐기시키는 절차를 개시한다.
일 실시예에서, 프로세스는 조기 폐기 표시 상태(210)로부터 데이터 복구를 시도하는 데이터 복구 프로세스로 진행한다. 그러한 데이터 복구 프로세스의 일 실시예에 대해서는 도 4와 관련하여 보다 상세히 후술할 것이다. 다른 실시예에서, 프로세스는 조기 폐기 표시 상태(210)로부터 전진하여, 파일 시스템(108)(도 1)과 같은 디바이스 드라이버의 호출 루틴으로 "판독 에러" 상태를 리턴시키고, 나간다.
에러(들)을 정정할 수 있는지를 판정하는 단계(206)를 다시 참조하여, 에러(들)을 정정할 수 있다면, 프로세스는 ECC가 정정한 에러(들)이 어느 정도인지를 판정한다(208). 비교적 적은 것으로 또는 비교적 많은 것으로 간주되는 에러수는 특정 메모리 디바이스(106)(도 1)의 특성 및 페이지 사이즈에 의존할 수 있다. 당업자는 적절한 임계값을 쉽게 판정할 수 있을 것이다. 또한, 예시한 판정 단계(208)는 바이너리, 즉 2개의 가능한 결정이지만, 하나 이상의 중간 레벨도 이용 가능하다는 것을 알 것이다.
일 실시예에서, 2048 바이트 페이지(ECC를 포함하지 않음)인 경우, 페이지에 정정 가능한 에러가 1개 있는 것을 "적다"라고 하고, 정정 가능한 에러가 2개 이상 있는 것을 "많다"라고 한다. 이 예에서, 페이지에 정정 가능한 에러가 1개 있는 경우, 프로세스는 판정 단계(208)로부터 카운터 증분 상태(212)로 진행하고, 정정 가능한 에러가 1개보다 많은 경우에, 프로세스는 판정 단계(208)로부터 조기 폐기 표시 상태(214)로 진행한다.
카운터 증분 상태(212)에서, 프로세스는 판독되는 페이지의 특정 블록에 대해 카운트 1씩 카운터를 증분시킨다. 카운터 어레이는 메모리 디바이스(106)(도 1)의 다수의 블록에 대한 각종 카운트, 예컨대 메모리 디바이스(106)의 블록 당 하나의 카운터를 저장할 수 있다. 블록이 많은 페이지를 포함하면, 다수의 페이지로부터의 에러가 특정 블록에 대한 카운트에 기여할 수 있다. 프로세스는 디바이스 드라이버(110)(도 1)의 호출 루틴, 예컨대 파일 시스템(108)(도 1)으로 "OK" 상태를 리턴시키고, 나간다. 관측되는 바와 같이, 블록의 동일한 페이지 또는 다른 페이지들이 에러와 함께 반복적으로 판독되면, 블록에 대한 카운터에 저장되는 카운트는 증가할 것이다. 카운트는 블록의 페이지(들)을 판독하면서 만나는 에러 히스토리를 저장한다.
비교적 많은 에러, 예컨대 2개 이상의 에러를 만난 경우에 이용하는 판정 단계(208)의 경로를 다시 참조하면, 조기 폐기 표시 상태(214)에서, 프로세서는 카운터를 업데이트하여 블록을 조기 폐기된 것으로 지정한다. 예컨대, 카운터는 상태(210)과 관련하여 기재하는 바와 같이 임계 레벨 MAX로 설정될 수 있다. 예시한 실시예에서, 상태(210) 및 상태(214)는 각각 카운터를 임계 레벨 MAX로 설정하여 블록을 조기 폐기된 것으로 지정한다. 다른 실시예에서, 상태(214)는 상태(212)의 증분과 크거나 같은, 그러나 상태(210)로부터의 카운터 값의 급등보다 작을 수도 있는 증분으로 카운터를 조정한다. 프로세스는 디바이스 드라이버(110)(도 1)의 호출 루틴, 예컨대 파일 시스템(108)(도 1)으로 "OK" 상태를 리턴시키고, 나간다. 도 2에 예시한 프로세스는 열화되어 폐기될 블록을 식별한다. 블록에 새로운 데이터를 기입할 때와 같이 비교적 늦은 때 보다는, 블록으로부터 데이터를 판독할 때와 같이 비교적 조기에 열화 블록을 인식하는 것이 신뢰성 면에 있어서 이로울 수 있다.
도 3은 열화된 블록의 사전 폐기를 위한 프로세서를 일반적으로 예시하는 흐름도이다. 일 실시예에서, 이 프로세스는 오퍼레이팅 시스템의 디바이스 드라이버에 의해 실행되고, 메모리 디바이스는 NAND 플래시 메모리 디바이스이다. 예시한 프로세스는 다양하게 변경될 수 있다는 것을 당업자는 알 것이다. 예컨대, 다른 실시예에서, 예시한 프로세스의 각종 부분들을 조합하거나, 엇갈린 순서로 재배열하거나, 제거하거나 할 수 있다. NAND 플래시 메모리에서는, 페이지 레벨에서 판독 또는 기입을 행하는 반면, 블록 레벨에서 소거를 행한다.
프로세스는 메모리 디바이스로부터 블록을 소거하는 요구나 블록의 페이지에 기입하는 요구에 의해 개시된다. 예컨대, 그 요구는 오퍼레이팅 시스템(104)(도 1)의 파일 시스템(108)(도 1)으로부터 올 수 있다. 그 요구는 데이터 업데이트, 데이터 삭제, 포맷팅 등의 상황에서 일어날 수 있다.
프로세스는 소거되는 블록이나 기입되는 페이지의 대응 블록과 연관된 에러 히스토리를 검색한다(310). 예컨대, 에러 히스토리는 도 2와 관련하여 전술한 카운트일 수 있다.
프로세스는 블록이 신뢰성 있는 것인지를 판정한다(320). 블록이 신뢰성 있는 것으로 간주되면, 프로세스는 메모리 디바이스(106)(도 1)에게 블록을 소거(330)하도록 지시한다. 프로세스는 소거 프로세스 또는 기입 프로세스 동안에 메모리 디바이스(106) 내에서 에러가 일어났는지의 여부를 판정한다(350). 메모리 디바이스(106)가 에러없이 블록을 소거하거나 페이지에 기입하는 것으로 한다면, 프로세스는 파일 시스템(108)(도 1)과 같은 호출 루틴에 대한 "OK" 상태로 나간다. 비트 스틱(stick)과 같이 에러 또는 기입 프로세스에서 에러가 있다면, 프로세스는 에러 상태로 나갈 수 있다.
블록이 신뢰성 없는 것으로 간주되면, 프로세스는 요구된 소거 또는 기입 동작을 거절(360)하고 I/O 에러와 같은 에러 상태로 나간다. 예컨대, 카운터가 잠재적으로 신뢰성 없는 블록의 식별을 위한 임계값 이상인 경우에 블록을 신뢰성 없는 것으로 간주할 수 있다. 에러 상태에 응답하여, 파일 시스템(108)(도 1)과 같은 상위 계층 호출 루틴은 디바이스 드라이버(110)(도 1)에게 블록을 불량으로 마킹하도록 요구하기 전에 블록의 (있다면) 이전에 기입된 페이지를 리클레임(reclaim)할 수 있다. 이전에 기입된 페이지와 현재 기입 페이지는 상이한 블록에 기입될 수 있다. 블록을 불량으로 마킹한 후에는, 그 블록을 이용할 수 없다. 일부 메모리 디바이스에서, 블록을 불량으로 마킹하는 것은 메모리 디바이스(106)(도 1)에 있는 불량 블록 테이블에 블록을 부가함으로써 달성된다. 일 실시예에서, 불량 블록 테이블에 블록을 부가하는 것은 또한 파일 시스템(108)의 요구로 디바이스 드라이버(110)(도 1)에 의해 취급된다. 블록의 조기 폐기는 블록이 불량으로 되기 전에 블록을 폐기시킬 수 있다는 이점이 있다. 이것은 미래의 데이터 손실을 피할 수 있도록 해준다.
도 4는 정정할 수 없는 에러로 판정된 데이터를 복구하기 위한 프로세스를 일반적으로 예시하는 흐름도이다. 일 실시예에서, 이 프로세스는 오퍼레이팅 시스템(104)(도 1)의 디바이스 드라이버(110)(도 1)에 의해 실행되고, 메모리 디바이스(106)(도 1)는 NAND 플래시 메모리 디바이스이다. 예시한 프로세스는 다양하게 변경될 수 있다는 것을 당업자는 알 것이다. 예컨대, 다른 실시예에서, 예시한 프로세스의 각종 부분들을 조합하거나, 엇갈린 순서로 재배열하거나, 제거하거나 할 수 있다.
일 실시예에서, 프로세스는 메모리 디바이스로부터 판독된 데이터의 에러를 정정할 수 없게 된 때에 시작한다. 에러 정정 코드(ECC)가 정정할 에러가 너무 많은 경우에 에러를 정정할 수 없게 된다. 예컨대, 프로세스는 도 2의 조기 폐기 표시 상태(210)에 이어서 시작할 수 있다.
상태(410)에서, 프로세스는 정정 가능한 데이터 판독을 시도하는 판독 동작 모드를 변경한다. 대부분의 컴퓨터 시스템은 정상 동작(고속 판독 모드) 동안에 가장 적합한 속도로 메모리 디바이스(106)(도 1)와 같은 메모리 디바이스에 액세스하도록 구성된다. 일 실시예에서, 그 판독 동작 모드는 신뢰성 있는 판독 모드로 변경된다. 이것은 예컨대 버스 속도를 늦추는 것, 레이턴시를 늘리는 것 등을 포함할 수 있다. 다른 예에서, 판독 모드는 직접 메모리 액세스(DMA) 모드로부터 액세스 제어에 마이크로프로세서를 이용하는 모드로 변경될 수 있는데, 이것은 프로세서 입력/출력, 즉 PIO로도 알려져 있다. 통상적으로, DMA 모드는 마이크로프로세서가 자유롭게 다른 태스크들을 실행할 수 있게 하기 때문에 바람직하다. 그러나, PIO의 경우, 마이크로프로세서는 DMA보다 더 많은 제어로 판독 동작을 실행할 수 있다. 예컨대, 프로세스는 셀 폰의 스피커와 같이 노이즈를 생성하는 디바이스의 일시적인 불능화를 요구할 수 있다. 다른 예에서, 프로세스는 메모리 디바이스(106)에 대한 타이밍을 신중히 늦출 수 있다. 당업자는 다른 기술들도 용이하게 결정할 수 있을 것이다. 이들 기술의 각종 특징도 조합 가능하다.
프로세스는 메모리 디바이스로부터 이전에 판독된 페이지의 판독을 요구한다(420). 이러한 판독은 재판독에 해당한다. 에러 정정 코드 데이터도 검색하고 재적용하여 데이터가 현재 정정 가능한지를 판정한다. 많은 상황에서, 더 신뢰성 있는 모드를 이용하여 판독 후 데이터를 정정할 수 있다. 데이터가 정정 가능하다면, 프로세스는 정정된 데이터를 제공하고(440), "OK" 상태로 나간다.
데이터가 정정 불가능하다면, 프로세스는 재시도 여부를 판정하거나(450), 에러가 있는 데이터를 제공한다(460). 재시도 판정(450) 또는 데이터 제공은 예컨대 루프 카운터, 타이머 등에 기초하여 행해질 수 있다. 프로세스는 데이터를 재판독하는 상태(410) 또는 판독 상태(420)로 리턴할 수 있다. 프로세스가 상태(410)로 리턴하면, 상이한(예컨대, 제3, 제4 등) 판독 모드도 시도할 수 있다. 예컨대, 하나 이상의 신뢰성 있는 판독 모드가 존재하면, 각종 판독 모드의 특징들을 개별적으로 및/또는 조합하여 시도할 수 있다.
데이터가 아직 정정 불가능하다면, 일 실시예는 그럼에도 불구하고 에러가 있는 데이터를 제공한다(460). 크게 실패하는 경향이 있는 하드 디스크 디바이스와 달리, NAND 플래시와 같은 고체 상태 디바이스에서의 에러는 대개 단일 비트 실패로 특징지어진다. 페이지가 정정 불가능한 경우 에러수는 통상은 1 비트보다 많지만, 에러가 있는 데이터를 리턴하는 것이 데이터를 리턴하지 않는 것보다 나을 수 있다. 예컨대, 많은 경우에, 에러가 있는 데이터의 부분은 중요하지 않을 것이다. 예컨대, 프로그램 코드가 페이지에 저장되는 경우, 에러가 있는 부분은 반드시 실행되는 것이 아닌 코드의 부분에 해당할 수 있다. 대조적으로, 데이터를 제공하지 않는 경우, 전체 페이지의 데이터를 이용할 수 없고, 그 경우 프로그램은 거의 항상 기능을 멈춘다.
일 실시예는 비휘발성 집적 회로 메모리 디바이스의 블록을 모니터링하는 방법으로서, 상기 방법은 에러 정정 코드들을 디코딩하여 상기 메모리 디바이스의 블록의 데이터의 페이지가 적어도 하나의 에러를 가지고 판독되었는지의 여부를 판정하는 단계; 및 적어도 상기 페이지가 적어도 하나의 에러를 가지고 판독된 경우에 판독된 페이지에 대응하여 상기 메모리 디바이스의 블록에 대한 에러 히스토리를 유지하는 단계 - 상기 에러 히스토리는 상기 블록의 조기 폐기 여부를 표시하는 데에 이용됨 - 를 포함한다.
일 실시예는 비휘발성 집적 회로 메모리 디바이스의 블록들을 관리하는 방법으로서, 상기 방법은 메모리 블록을 소거하거나 상기 메모리 블록의 페이지에 기입하는 커맨드를 수신하는 단계; 및 상기 블록의 하나 이상의 페이지에 대한 판독 동작들과 연관된 에러 히스토리에 적어도 부분적으로 기초하여 소거 또는 기입을 불능화하는 단계를 포함한다.
일 실시예는 비휘발성 집적 회로 메모리 디바이스로부터 데이터의 페이지에 액세스하는 방법으로서, 상기 방법은 상기 메모리 디바이스로부터 데이터의 페이지의 판독을 요구하는 단계; 상기 페이지와 연관된 에러 정정 코드들(ECC)을 검사하는 단계; 및 상기 데이터의 페이지가 어떤 정정 불가능한 에러들을 포함하고 있는지의 여부와 상관없이 상기 데이터의 페이지가 정확하게 판독된 것을 표시하는 상태를 오퍼레이팅 시스템에 제공하는 단계를 포함한다.
일 실시예는 비휘발성 집적 회로 메모리 디바이스의 블록을 표시하기 위한 하나 이상의 표시를 유지하는 방법으로서, 상기 방법은 메모리 블록의 적어도 하나의 페이지에 대하여 실행되는 적어도 하나의 판독 동작의 일부로서 검출되는 에러가 에러 정정 코드의 디코딩에 의해 정정될 수 없다는 판정, 또는 상기 메모리 디바이스의 블록들에 대해 수집된 에러 히스토리가 상기 블록에 대한 이전 판독 동작 동안에 적어도 하나의 에러가 발생한 것을 표시한다는 판정 중 적어도 하나의 판정에 적어도 부분적으로 응답하여 상기 블록의 추가의 소거 또는 재프로그래밍을 방지하는 단계를 포함한다.
일 실시예는 비휘발성 집적 회로 메모리 디바이스의 블록을 모니터링하는 장치로서, 상기 장치는 에러 정정 코드들을 디코딩하여 상기 메모리 디바이스의 블록의 데이터의 페이지가 적어도 하나의 에러를 가지고 판독되었는지의 여부를 판정하도록 구성된 모듈; 및 적어도 상기 페이지가 적어도 하나의 에러를 가지고 판독된 경우에 판독된 페이지에 대응하여 상기 메모리 디바이스의 블록에 대한 에러 히스토리를 유지하도록 구성된 모듈 - 상기 에러 히스토리는 상기 블록의 조기 폐기 여부를 표시하는 데에 이용됨 - 을 포함한다.
이상 각종 실시예들을 기재하였다. 이들 특정 실시예들에 관하여 기재하였으나, 본 기재는 예시적인 것이지 제한적인 것이 아니다. 당업자라면 첨부한 청구 범위에 규정된 본 발명의 기술적 사상 내에서 각종 변형 및 응용이 가능할 것이다.
Claims (23)
- 비휘발성 집적 회로 메모리 디바이스의 블록을 모니터링하는 방법으로서,
에러 정정 코드들을 디코딩하여 상기 메모리 디바이스의 블록의 데이터의 페이지가 적어도 하나의 에러를 가지고 판독되었는지의 여부를 판정하는 단계; 및
적어도 상기 페이지가 적어도 하나의 에러를 가지고 판독된 경우에 판독된 페이지에 대응하여 상기 메모리 디바이스의 블록에 대한 에러 히스토리를 유지하는 단계 - 상기 에러 히스토리는 상기 블록의 조기 폐기(retire) 여부를 표시하는 데에 이용됨 -
를 포함하는 방법. - 제1항에 있어서,
상기 에러 히스토리를 유지하는 단계는, 상기 적어도 하나의 에러가 하나의 에러에 해당하는 것으로 판정한 것에 응답하여 적어도 부분적으로 증분되는 카운트를 유지하는 단계를 더 포함하고,
상기 블록의 조기 폐기는 상기 카운트가 임계값에 도달한 것에 응답하여 표시되는 방법. - 제2항에 있어서,
상기 메모리 디바이스를 이용하여 디바이스의 파워업 시에 상기 카운트를 리셋(reset)하는 단계를 더 포함하는 방법. - 제1항에 있어서,
상기 에러 히스토리를 유지하는 단계는, 상기 블록의 페이지를 판독할 때 다수의 에러를 만난 경우에 상기 블록의 조기 폐기를 표시하도록 상기 에러 히스토리를 업데이트하는 단계를 더 포함하고,
정정되지 않은 데이터와 정정된 데이터를 비교하여 에러수의 카운트를 판정하는 방법. - 제1항에 있어서,
상기 에러 히스토리를 유지하는 단계는, 상기 에러 히스토리에 대한 카운트를 적어도 임계값으로 설정하는 단계를 포함하고,
상기 카운트가 적어도 상기 임계값에 도달하면 상기 블록의 조기 폐기를 표시하는 방법. - 제1항에 있어서,
상기 적어도 하나의 에러는 정정 불가능한 다수의 에러를 포함하고,
상기 데이터의 복구를 시도하는 데이터 복구 프로세스를 개시하는 단계를 더 포함하는 방법. - 제1항에 있어서,
상기 적어도 하나의 에러는 에러 정정 코드들(ECC)의 디코딩에 의해 정정 불가능한 다수의 에러를 포함하고, 상기 페이지는 제1 판독 모드를 이용하여 판독된 것이고,
상이한 판독 모드로 변경하고 상기 페이지를 재판독하는 단계를 더 포함하는 방법. - 제1항에 있어서,
상기 적어도 하나의 에러는 정정 불가능한 에러들을 포함하고,
정정 불가능한 에러가 판독되더라도 성공적인 판독 동작의 오퍼레이팅 시스템으로 상태를 리턴시키는 단계를 더 포함하는 방법. - 제1항에 있어서,
상기 메모리 디바이스의 블록에 대한 에러 히스토리를 상기 메모리 디바이스 그 자체와는 상이한 디바이스에 유지하는 단계를 더 포함하는 방법. - 제1항에 있어서,
상기 메모리 디바이스는 NAND 플래시 메모리 디바이스를 포함하는 방법. - 제1항에 있어서,
상기 방법은 오퍼레이팅 시스템에 의해 실행되는 방법. - 비휘발성 집적 회로 메모리 디바이스의 블록들을 관리하는 방법으로서,
메모리 블록을 소거하거나 상기 메모리 블록의 페이지에 기입하는 커맨드를 수신하는 단계; 및
상기 블록의 하나 이상의 페이지에 대한 판독 동작들과 연관된 에러 히스토리에 적어도 부분적으로 기초하여 소거 또는 기입을 불능화(disable)하는 단계
를 포함하는 방법. - 제12항에 있어서,
상기 블록의 이전에 기입된 페이지들을 리클레임(reclaim)하고 상기 블록의 이용을 불능화하는 단계를 더 포함하는 방법. - 제12항에 있어서,
상기 불능화 단계는 상기 메모리 디바이스에 있는 불량 블록 테이블에 상기 블록을 부가하여 상기 블록을 불량으로 마킹하는 단계를 포함하는 방법. - 제12항에 있어서,
상기 블록의 하나 이상의 페이지에 대한 판독 동작들 동안에 만난 에러 카운트를 검사하는 단계를 더 포함하는 방법. - 비휘발성 집적 회로 메모리 디바이스로부터 데이터의 페이지에 액세스하는 방법으로서,
상기 메모리 디바이스로부터 데이터의 페이지의 판독을 요구하는 단계;
상기 페이지와 연관된 에러 정정 코드들(ECC)을 검사하는 단계; 및
상기 데이터의 페이지가 어떤 정정 불가능한 에러들을 포함하고 있는지의 여부와 상관없이 상기 데이터의 페이지가 정확하게 판독된 것을 표시하는 상태를 오퍼레이팅 시스템에 제공하는 단계
를 포함하는 방법. - 제16항에 있어서,
상기 디바이스로부터 데이터를 판독함에 있어서 적어도 제1 판독 동작 모드와 상기 제1 판독 동작 모드보다 느린 제2 판독 동작 모드가 선택 가능하고, 상기 페이지의 판독을 요구하는 단계는,
초기 판독의 디코딩으로 정정 불가능한 에러가 생긴 것으로 판정하는 단계 - 상기 초기 판독은 상기 제1 판독 동작 모드를 이용하여 실행됨 - ;
상기 제1 판독 동작 모드로부터 상기 제2 판독 동작 모드로 변경하는 단계; 및
상기 페이지의 또 다른 판독을 요구하는 단계를 더 포함하는 방법. - 제17항에 있어서,
상기 제1 판독 동작 모드는 직접 메모리 액세스(DMA)를 포함하고, 상기 제2 판독 동작 모드는 액세스 제어에 마이크로프로세서를 이용하는 것을 포함하는 방법. - 제17항에 있어서,
루프 카운터에 적어도 부분적으로 기초하여 상기 페이지의 또 다른 판독을 요구할지를 판정하는 단계를 더 포함하는 방법. - 제17항에 있어서,
타이머에 적어도 부분적으로 기초하여 상기 페이지의 또 다른 판독을 요구할지를 판정하는 단계를 더 포함하는 방법. - 제16항에 있어서,
오퍼레이팅 시스템의 드라이버에 의해 상기 방법을 실행하는 단계를 더 포함하는 방법. - 비휘발성 집적 회로 메모리 디바이스의 블록을 표시하기 위한 하나 이상의 표시를 유지하는 방법으로서,
메모리 블록의 적어도 하나의 페이지에 대하여 실행되는 적어도 하나의 판독 동작의 일부로서 검출되는 에러가 에러 정정 코드의 디코딩에 의해 정정될 수 없다는 판정, 또는 상기 메모리 디바이스의 블록들에 대해 수집된 에러 히스토리가 상기 블록에 대한 이전 판독 동작 동안에 적어도 하나의 에러가 발생한 것을 표시한다는 판정 중 적어도 하나의 판정에 적어도 부분적으로 응답하여 상기 블록의 추가의 소거 또는 재프로그래밍을 방지하는 단계
를 포함하는 방법. - 비휘발성 집적 회로 메모리 디바이스의 블록을 모니터링하는 장치로서,
에러 정정 코드들을 디코딩하여 상기 메모리 디바이스의 블록의 데이터의 페이지가 적어도 하나의 에러를 가지고 판독되었는지의 여부를 판정하도록 구성된 모듈; 및
적어도 상기 페이지가 적어도 하나의 에러를 가지고 판독된 경우에 판독된 페이지에 대응하여 상기 메모리 디바이스의 블록에 대한 에러 히스토리를 유지하도록 구성된 모듈 - 상기 에러 히스토리는 상기 블록의 조기 폐기 여부를 표시하는 데에 이용됨 -
을 포함하는 장치.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/759,585 | 2007-06-07 | ||
US11/759,585 US7765426B2 (en) | 2007-06-07 | 2007-06-07 | Emerging bad block detection |
PCT/US2008/063938 WO2008154119A1 (en) | 2007-06-07 | 2008-05-16 | Emerging bad block detection |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147030099A Division KR101557736B1 (ko) | 2007-06-07 | 2008-05-16 | 새로운 불량 블록 검출 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100033507A true KR20100033507A (ko) | 2010-03-30 |
KR101522744B1 KR101522744B1 (ko) | 2015-05-26 |
Family
ID=39628943
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147030099A KR101557736B1 (ko) | 2007-06-07 | 2008-05-16 | 새로운 불량 블록 검출 |
KR1020107000248A KR101522744B1 (ko) | 2007-06-07 | 2008-05-16 | 새로운 불량 블록 검출 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147030099A KR101557736B1 (ko) | 2007-06-07 | 2008-05-16 | 새로운 불량 블록 검출 |
Country Status (8)
Country | Link |
---|---|
US (4) | US7765426B2 (ko) |
EP (3) | EP2162822B1 (ko) |
JP (1) | JP2010529557A (ko) |
KR (2) | KR101557736B1 (ko) |
CN (2) | CN102880521B (ko) |
AT (1) | ATE514131T1 (ko) |
TW (1) | TWI370355B (ko) |
WO (1) | WO2008154119A1 (ko) |
Families Citing this family (244)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7765426B2 (en) * | 2007-06-07 | 2010-07-27 | Micron Technology, Inc. | Emerging bad block detection |
KR101473344B1 (ko) * | 2007-08-24 | 2014-12-17 | 삼성전자 주식회사 | 플래시 메모리를 스토리지로 사용하는 장치 및 그 동작방법 |
KR101413736B1 (ko) * | 2007-09-13 | 2014-07-02 | 삼성전자주식회사 | 향상된 신뢰성을 갖는 메모리 시스템 및 그것의웨어-레벨링 기법 |
TW200919448A (en) * | 2007-10-17 | 2009-05-01 | Silicon Motion Inc | Storage device and method of accessing a status thereof |
US8074145B2 (en) * | 2007-11-12 | 2011-12-06 | Harris Corporation | Memory system and related method using software-defined radio with write-protected, non-volatile memory |
TWI381390B (zh) * | 2008-04-10 | 2013-01-01 | Phison Electronics Corp | 快閃記憶體的損壞區塊辨識方法、儲存系統及其控制器 |
US20100332942A1 (en) * | 2008-09-10 | 2010-12-30 | Arm Limited | Memory controller for NAND memory using forward error correction |
US8510614B2 (en) * | 2008-09-11 | 2013-08-13 | Mediatek Inc. | Bad block identification methods |
US8161354B2 (en) * | 2008-10-16 | 2012-04-17 | Genesys Logic, Inc. | Flash memory controller having configuring unit for error correction code (ECC) capability and method thereof |
US9170897B2 (en) | 2012-05-29 | 2015-10-27 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing solid-state storage reliability |
US9063874B2 (en) | 2008-11-10 | 2015-06-23 | SanDisk Technologies, Inc. | Apparatus, system, and method for wear management |
WO2010054410A2 (en) * | 2008-11-10 | 2010-05-14 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for predicting failures in solid-state storage |
US9449719B2 (en) * | 2008-12-19 | 2016-09-20 | Seagate Technology Llc | Solid-state storage device including a high resolution analog-to-digital converter |
WO2010123493A1 (en) * | 2009-04-21 | 2010-10-28 | Agere Systems, Inc. | Error-floor mitigation of codes using write verification |
US8151137B2 (en) * | 2009-05-28 | 2012-04-03 | Lsi Corporation | Systems and methods for governing the life cycle of a solid state drive |
US8176367B2 (en) | 2009-05-28 | 2012-05-08 | Agere Systems Inc. | Systems and methods for managing end of life in a solid state drive |
US8549384B1 (en) * | 2009-06-26 | 2013-10-01 | Marvell International Ltd. | Method and apparatus for determining, based on an error correction code, one or more locations to store data in a flash memory |
US8321727B2 (en) * | 2009-06-29 | 2012-11-27 | Sandisk Technologies Inc. | System and method responsive to a rate of change of a performance parameter of a memory |
US8910002B2 (en) * | 2009-08-24 | 2014-12-09 | OCZ Storage Solutions Inc. | NAND flash-based storage device with built-in test-ahead for failure anticipation |
KR101678909B1 (ko) * | 2009-09-17 | 2016-11-23 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 소거 리프레쉬 방법 |
TWI408688B (zh) * | 2009-10-12 | 2013-09-11 | Phison Electronics Corp | 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 |
US8312349B2 (en) | 2009-10-27 | 2012-11-13 | Micron Technology, Inc. | Error detection/correction based memory management |
US8429468B2 (en) * | 2010-01-27 | 2013-04-23 | Sandisk Technologies Inc. | System and method to correct data errors using a stored count of bit values |
US8327226B2 (en) * | 2010-02-03 | 2012-12-04 | Seagate Technology Llc | Adjustable error correction code length in an electrical storage device |
US20110230711A1 (en) * | 2010-03-16 | 2011-09-22 | Kano Akihito | Endoscopic Surgical Instrument |
US8341339B1 (en) | 2010-06-14 | 2012-12-25 | Western Digital Technologies, Inc. | Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk |
US8959284B1 (en) | 2010-06-28 | 2015-02-17 | Western Digital Technologies, Inc. | Disk drive steering write data to write cache based on workload |
US9146875B1 (en) | 2010-08-09 | 2015-09-29 | Western Digital Technologies, Inc. | Hybrid drive converting non-volatile semiconductor memory to read only based on life remaining |
US9268499B1 (en) | 2010-08-13 | 2016-02-23 | Western Digital Technologies, Inc. | Hybrid drive migrating high workload data from disk to non-volatile semiconductor memory |
US8639872B1 (en) | 2010-08-13 | 2014-01-28 | Western Digital Technologies, Inc. | Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk |
US9058280B1 (en) | 2010-08-13 | 2015-06-16 | Western Digital Technologies, Inc. | Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time |
US8683295B1 (en) | 2010-08-31 | 2014-03-25 | Western Digital Technologies, Inc. | Hybrid drive writing extended error correction code symbols to disk for data sectors stored in non-volatile semiconductor memory |
US8775720B1 (en) | 2010-08-31 | 2014-07-08 | Western Digital Technologies, Inc. | Hybrid drive balancing execution times for non-volatile semiconductor memory and disk |
US8782334B1 (en) | 2010-09-10 | 2014-07-15 | Western Digital Technologies, Inc. | Hybrid drive copying disk cache to non-volatile semiconductor memory |
US8589655B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of I/O in an SSD environment |
US8468318B2 (en) | 2010-09-15 | 2013-06-18 | Pure Storage Inc. | Scheduling of I/O writes in a storage environment |
US12008266B2 (en) | 2010-09-15 | 2024-06-11 | Pure Storage, Inc. | Efficient read by reconstruction |
US8732426B2 (en) | 2010-09-15 | 2014-05-20 | Pure Storage, Inc. | Scheduling of reactive I/O operations in a storage environment |
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US8589625B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of reconstructive I/O read operations in a storage environment |
US11275509B1 (en) | 2010-09-15 | 2022-03-15 | Pure Storage, Inc. | Intelligently sizing high latency I/O requests in a storage environment |
US8775868B2 (en) | 2010-09-28 | 2014-07-08 | Pure Storage, Inc. | Adaptive RAID for an SSD environment |
US8825977B1 (en) * | 2010-09-28 | 2014-09-02 | Western Digital Technologies, Inc. | Hybrid drive writing copy of data to disk when non-volatile semiconductor memory nears end of life |
US8825976B1 (en) | 2010-09-28 | 2014-09-02 | Western Digital Technologies, Inc. | Hybrid drive executing biased migration policy during host boot to migrate data to a non-volatile semiconductor memory |
US9244769B2 (en) | 2010-09-28 | 2016-01-26 | Pure Storage, Inc. | Offset protection data in a RAID array |
US8670205B1 (en) | 2010-09-29 | 2014-03-11 | Western Digital Technologies, Inc. | Hybrid drive changing power mode of disk channel when frequency of write data exceeds a threshold |
US8699171B1 (en) | 2010-09-30 | 2014-04-15 | Western Digital Technologies, Inc. | Disk drive selecting head for write operation based on environmental condition |
US8612798B1 (en) | 2010-10-21 | 2013-12-17 | Western Digital Technologies, Inc. | Hybrid drive storing write data in non-volatile semiconductor memory if write verify of disk fails |
US8427771B1 (en) | 2010-10-21 | 2013-04-23 | Western Digital Technologies, Inc. | Hybrid drive storing copy of data in non-volatile semiconductor memory for suspect disk data sectors |
US8429343B1 (en) | 2010-10-21 | 2013-04-23 | Western Digital Technologies, Inc. | Hybrid drive employing non-volatile semiconductor memory to facilitate refreshing disk |
US8560759B1 (en) | 2010-10-25 | 2013-10-15 | Western Digital Technologies, Inc. | Hybrid drive storing redundant copies of data on disk and in non-volatile semiconductor memory based on read frequency |
US9069475B1 (en) | 2010-10-26 | 2015-06-30 | Western Digital Technologies, Inc. | Hybrid drive selectively spinning up disk when powered on |
US8422296B2 (en) | 2010-12-22 | 2013-04-16 | HGST Netherlands B.V. | Early detection of degradation in NAND flash memory |
US8422303B2 (en) | 2010-12-22 | 2013-04-16 | HGST Netherlands B.V. | Early degradation detection in flash memory using test cells |
US8599609B2 (en) | 2010-12-22 | 2013-12-03 | HGST Netherlands B.V. | Data management in flash memory using probability of charge disturbances |
US8369143B2 (en) | 2010-12-22 | 2013-02-05 | HGST Netherlands B.V. | Early detection of degradation in NOR flash memory |
US8649215B2 (en) | 2010-12-22 | 2014-02-11 | HGST Netherlands B.V. | Data management in flash memory using probability of charge disturbances |
IT1403899B1 (it) * | 2010-12-30 | 2013-11-08 | Incard Sa | Metodo e sistema per controllare la perdita di affidabilita' di una memoria non volatile |
WO2012100087A2 (en) | 2011-01-19 | 2012-07-26 | Fusion-Io, Inc. | Apparatus, system, and method for managing out-of-service conditions |
US8966184B2 (en) | 2011-01-31 | 2015-02-24 | Intelligent Intellectual Property Holdings 2, LLC. | Apparatus, system, and method for managing eviction of data |
KR101739878B1 (ko) * | 2011-02-22 | 2017-05-26 | 삼성전자주식회사 | 컨트롤러, 이의 동작방법, 및 상기 컨트롤러를 포함한 메모리 시스템 |
US8560922B2 (en) | 2011-03-04 | 2013-10-15 | International Business Machines Corporation | Bad block management for flash memory |
TW201239893A (en) * | 2011-03-25 | 2012-10-01 | Silicon Motion Inc | Method for enhancing data protection performance, and associated personal computer and storage medium |
KR20120128014A (ko) | 2011-05-16 | 2012-11-26 | 삼성전자주식회사 | 불휘발성 메모리 장치의 동작 방법 및 불휘발성 메모리 장치를 포함하는 메모리 시스템의 동작 방법 |
US9086983B2 (en) | 2011-05-31 | 2015-07-21 | Micron Technology, Inc. | Apparatus and methods for providing data integrity |
US8693252B2 (en) | 2011-07-12 | 2014-04-08 | Samsung Electronics Co., Ltd. | Method and system for adjusting read voltage in flash memory device |
KR101824068B1 (ko) | 2011-07-28 | 2018-03-15 | 삼성전자주식회사 | 메모리 컨트롤러 구동방법, 및 메모리 컨트롤러를 포함하는 메모리 시스템, 메모리 카드 및 휴대용 전자장치 |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
US11636031B2 (en) | 2011-08-11 | 2023-04-25 | Pure Storage, Inc. | Optimized inline deduplication |
US8630056B1 (en) | 2011-09-12 | 2014-01-14 | Western Digital Technologies, Inc. | Hybrid drive adjusting spin-up profile based on cache status of non-volatile semiconductor memory |
US8909889B1 (en) | 2011-10-10 | 2014-12-09 | Western Digital Technologies, Inc. | Method and apparatus for servicing host commands by a disk drive |
US8977804B1 (en) | 2011-11-21 | 2015-03-10 | Western Digital Technologies, Inc. | Varying data redundancy in storage systems |
US9268701B1 (en) | 2011-11-21 | 2016-02-23 | Western Digital Technologies, Inc. | Caching of data in data storage systems by managing the size of read and write cache based on a measurement of cache reliability |
US8977803B2 (en) | 2011-11-21 | 2015-03-10 | Western Digital Technologies, Inc. | Disk drive data caching using a multi-tiered memory |
US8904091B1 (en) | 2011-12-22 | 2014-12-02 | Western Digital Technologies, Inc. | High performance media transport manager architecture for data storage systems |
US9767032B2 (en) | 2012-01-12 | 2017-09-19 | Sandisk Technologies Llc | Systems and methods for cache endurance |
US8719540B1 (en) | 2012-03-15 | 2014-05-06 | Pure Storage, Inc. | Fractal layout of data blocks across multiple devices |
US9047187B2 (en) * | 2012-06-28 | 2015-06-02 | Intel Corporation | Defect management in memory systems |
CN103631721A (zh) * | 2012-08-23 | 2014-03-12 | 华为技术有限公司 | 一种隔离内存中坏块的方法及*** |
US8793558B2 (en) * | 2012-08-27 | 2014-07-29 | Freescale Semiconductor, Inc. | Adaptive error correction for non-volatile memories |
US8930776B2 (en) | 2012-08-29 | 2015-01-06 | International Business Machines Corporation | Implementing DRAM command timing adjustments to alleviate DRAM failures |
KR101991437B1 (ko) * | 2012-08-30 | 2019-06-20 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 그의 동작방법 |
US10623386B1 (en) | 2012-09-26 | 2020-04-14 | Pure Storage, Inc. | Secret sharing data protection in a storage system |
US11032259B1 (en) | 2012-09-26 | 2021-06-08 | Pure Storage, Inc. | Data protection in a storage system |
US8745415B2 (en) | 2012-09-26 | 2014-06-03 | Pure Storage, Inc. | Multi-drive cooperation to generate an encryption key |
JP2014086062A (ja) * | 2012-10-29 | 2014-05-12 | Sony Corp | 記憶制御装置、記憶装置、情報処理システム、および、記憶制御方法 |
US8959281B1 (en) | 2012-11-09 | 2015-02-17 | Western Digital Technologies, Inc. | Data management for a storage device |
US8935592B2 (en) * | 2012-11-20 | 2015-01-13 | Arm Limited | Apparatus and method for correcting errors in data accessed from a memory device |
US9116822B2 (en) | 2012-12-07 | 2015-08-25 | Micron Technology, Inc. | Stopping criteria for layered iterative error correction |
US9646039B2 (en) | 2013-01-10 | 2017-05-09 | Pure Storage, Inc. | Snapshots in a storage system |
US11768623B2 (en) | 2013-01-10 | 2023-09-26 | Pure Storage, Inc. | Optimizing generalized transfers between storage systems |
US11733908B2 (en) | 2013-01-10 | 2023-08-22 | Pure Storage, Inc. | Delaying deletion of a dataset |
US10908835B1 (en) | 2013-01-10 | 2021-02-02 | Pure Storage, Inc. | Reversing deletion of a virtual machine |
CN103116550A (zh) * | 2013-01-11 | 2013-05-22 | 深圳市硅格半导体有限公司 | 切换闪存中物理块工作模式的方法和装置 |
US9690953B2 (en) * | 2013-03-14 | 2017-06-27 | Apple Inc. | Generating efficient reads for a system having non-volatile memory |
US9025364B2 (en) * | 2013-03-14 | 2015-05-05 | Micron Technology, Inc. | Selective self-reference read |
EP3005117A4 (en) * | 2013-05-29 | 2017-01-18 | Hewlett-Packard Enterprise Development LP | Invoking an error handler to handle an uncorrectable error |
KR102252379B1 (ko) * | 2013-06-24 | 2021-05-14 | 삼성전자주식회사 | 메모리 시스템 및 이의 독출 방법 |
US9141176B1 (en) | 2013-07-29 | 2015-09-22 | Western Digital Technologies, Inc. | Power management for data storage device |
US9070379B2 (en) | 2013-08-28 | 2015-06-30 | Western Digital Technologies, Inc. | Data migration for data storage device |
US9164828B2 (en) | 2013-09-26 | 2015-10-20 | Seagate Technology Llc | Systems and methods for enhanced data recovery in a solid state memory system |
US9424179B2 (en) | 2013-10-17 | 2016-08-23 | Seagate Technology Llc | Systems and methods for latency based data recycling in a solid state memory system |
US10019352B2 (en) | 2013-10-18 | 2018-07-10 | Sandisk Technologies Llc | Systems and methods for adaptive reserve storage |
US9201729B2 (en) | 2013-10-21 | 2015-12-01 | Seagate Technology, Llc | Systems and methods for soft data utilization in a solid state memory system |
US9378840B2 (en) | 2013-10-28 | 2016-06-28 | Seagate Technology Llc | Systems and methods for sub-zero threshold characterization in a memory cell |
US8917471B1 (en) | 2013-10-29 | 2014-12-23 | Western Digital Technologies, Inc. | Power management for data storage device |
US9323467B2 (en) | 2013-10-29 | 2016-04-26 | Western Digital Technologies, Inc. | Data storage device startup |
US10365858B2 (en) | 2013-11-06 | 2019-07-30 | Pure Storage, Inc. | Thin provisioning in a storage device |
US10263770B2 (en) | 2013-11-06 | 2019-04-16 | Pure Storage, Inc. | Data protection in a storage system using external secrets |
US11128448B1 (en) | 2013-11-06 | 2021-09-21 | Pure Storage, Inc. | Quorum-aware secret sharing |
US9276609B2 (en) | 2013-11-16 | 2016-03-01 | Seagate Technology Llc | Systems and methods for soft decision generation in a solid state memory system |
US9389937B2 (en) | 2013-11-19 | 2016-07-12 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Managing faulty memory pages in a computing system |
US9208086B1 (en) | 2014-01-09 | 2015-12-08 | Pure Storage, Inc. | Using frequency domain to prioritize storage of metadata in a cache |
US9576683B2 (en) | 2014-02-06 | 2017-02-21 | Seagate Technology Llc | Systems and methods for hard error reduction in a solid state memory device |
US9378810B2 (en) | 2014-02-11 | 2016-06-28 | Seagate Technology Llc | Systems and methods for last written page handling in a memory device |
US10656864B2 (en) | 2014-03-20 | 2020-05-19 | Pure Storage, Inc. | Data replication within a flash storage array |
US9443616B2 (en) * | 2014-04-02 | 2016-09-13 | Seagate Technology Llc | Bad memory unit detection in a solid state drive |
US9431129B2 (en) * | 2014-04-30 | 2016-08-30 | Qualcomm Incorporated | Variable read delay system |
US9779268B1 (en) | 2014-06-03 | 2017-10-03 | Pure Storage, Inc. | Utilizing a non-repeating identifier to encrypt data |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US11399063B2 (en) | 2014-06-04 | 2022-07-26 | Pure Storage, Inc. | Network authentication for a storage system |
US9218407B1 (en) | 2014-06-25 | 2015-12-22 | Pure Storage, Inc. | Replication and intermediate read-write state for mediums |
US10496556B1 (en) | 2014-06-25 | 2019-12-03 | Pure Storage, Inc. | Dynamic data protection within a flash storage system |
US10296469B1 (en) | 2014-07-24 | 2019-05-21 | Pure Storage, Inc. | Access control in a flash storage system |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US9558069B2 (en) | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
US9864761B1 (en) | 2014-08-08 | 2018-01-09 | Pure Storage, Inc. | Read optimization operations in a storage system |
US10430079B2 (en) | 2014-09-08 | 2019-10-01 | Pure Storage, Inc. | Adjusting storage capacity in a computing system |
US10164841B2 (en) | 2014-10-02 | 2018-12-25 | Pure Storage, Inc. | Cloud assist for storage systems |
US10430282B2 (en) | 2014-10-07 | 2019-10-01 | Pure Storage, Inc. | Optimizing replication by distinguishing user and system write activity |
US9489132B2 (en) | 2014-10-07 | 2016-11-08 | Pure Storage, Inc. | Utilizing unmapped and unknown states in a replicated storage system |
US9727485B1 (en) | 2014-11-24 | 2017-08-08 | Pure Storage, Inc. | Metadata rewrite and flatten optimization |
US9773007B1 (en) | 2014-12-01 | 2017-09-26 | Pure Storage, Inc. | Performance improvements in a storage system |
US9588842B1 (en) | 2014-12-11 | 2017-03-07 | Pure Storage, Inc. | Drive rebuild |
US9552248B2 (en) | 2014-12-11 | 2017-01-24 | Pure Storage, Inc. | Cloud alert to replica |
US9864769B2 (en) | 2014-12-12 | 2018-01-09 | Pure Storage, Inc. | Storing data utilizing repeating pattern detection |
US10545987B2 (en) | 2014-12-19 | 2020-01-28 | Pure Storage, Inc. | Replication to the cloud |
US10296354B1 (en) | 2015-01-21 | 2019-05-21 | Pure Storage, Inc. | Optimized boot operations within a flash storage array |
US11947968B2 (en) | 2015-01-21 | 2024-04-02 | Pure Storage, Inc. | Efficient use of zone in a storage device |
US9710165B1 (en) | 2015-02-18 | 2017-07-18 | Pure Storage, Inc. | Identifying volume candidates for space reclamation |
TWI602185B (zh) * | 2015-03-04 | 2017-10-11 | 旺宏電子股份有限公司 | 記憶體裝置及其操作方法 |
US10082985B2 (en) | 2015-03-27 | 2018-09-25 | Pure Storage, Inc. | Data striping across storage nodes that are assigned to multiple logical arrays |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US10652103B2 (en) | 2015-04-24 | 2020-05-12 | Goldman Sachs & Co. LLC | System and method for handling events involving computing systems and networks using fabric monitoring system |
CN106155585B (zh) * | 2015-05-13 | 2020-05-15 | 爱思开海力士有限公司 | 自适应读取干扰收回策略 |
US10140149B1 (en) | 2015-05-19 | 2018-11-27 | Pure Storage, Inc. | Transactional commits with hardware assists in remote memory |
US10310740B2 (en) | 2015-06-23 | 2019-06-04 | Pure Storage, Inc. | Aligning memory access operations to a geometry of a storage device |
US9547441B1 (en) | 2015-06-23 | 2017-01-17 | Pure Storage, Inc. | Exposing a geometry of a storage device |
KR20170028825A (ko) | 2015-09-04 | 2017-03-14 | 퓨어 스토리지, 아이앤씨. | 압축된 인덱스들을 사용한 해시 테이블들에서의 메모리 효율적인 스토리지 및 탐색 |
US11269884B2 (en) | 2015-09-04 | 2022-03-08 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US9417809B1 (en) | 2015-12-07 | 2016-08-16 | International Business Machines Corporation | Efficient management of page retirement in non-volatile memory utilizing page retirement classes |
US9620227B1 (en) * | 2016-01-08 | 2017-04-11 | Western Digital Technologies, Inc. | Characterizing and operating a non-volatile memory device |
CN105843700B (zh) * | 2016-03-25 | 2019-01-15 | 中国科学院微电子研究所 | 一种控制器 |
TWI576699B (zh) | 2016-03-31 | 2017-04-01 | 慧榮科技股份有限公司 | 紀錄資料區塊的使用時間的方法及其裝置 |
US10133503B1 (en) | 2016-05-02 | 2018-11-20 | Pure Storage, Inc. | Selecting a deduplication process based on a difference between performance metrics |
US10452297B1 (en) | 2016-05-02 | 2019-10-22 | Pure Storage, Inc. | Generating and optimizing summary index levels in a deduplication storage system |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US10146604B2 (en) * | 2016-08-23 | 2018-12-04 | Oracle International Corporation | Bad block detection and predictive analytics in NAND flash storage devices |
US10162523B2 (en) | 2016-10-04 | 2018-12-25 | Pure Storage, Inc. | Migrating data between volumes using virtual copy operation |
US10613974B2 (en) | 2016-10-04 | 2020-04-07 | Pure Storage, Inc. | Peer-to-peer non-volatile random-access memory |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
US10191662B2 (en) | 2016-10-04 | 2019-01-29 | Pure Storage, Inc. | Dynamic allocation of segments in a flash storage system |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
US10185505B1 (en) | 2016-10-28 | 2019-01-22 | Pure Storage, Inc. | Reading a portion of data to replicate a volume based on sequence numbers |
US10359942B2 (en) | 2016-10-31 | 2019-07-23 | Pure Storage, Inc. | Deduplication aware scalable content placement |
US10452290B2 (en) | 2016-12-19 | 2019-10-22 | Pure Storage, Inc. | Block consolidation in a direct-mapped flash storage system |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
US10204693B2 (en) * | 2016-12-31 | 2019-02-12 | Western Digital Technologies, Inc. | Retiring computer memory blocks |
US11093146B2 (en) | 2017-01-12 | 2021-08-17 | Pure Storage, Inc. | Automatic load rebalancing of a write group |
KR20180090422A (ko) | 2017-02-02 | 2018-08-13 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
JP2018156556A (ja) * | 2017-03-21 | 2018-10-04 | 東芝メモリ株式会社 | 計算機システム及びメモリデバイス |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US12045487B2 (en) | 2017-04-21 | 2024-07-23 | Pure Storage, Inc. | Preserving data deduplication in a multi-tenant storage system |
US11403019B2 (en) | 2017-04-21 | 2022-08-02 | Pure Storage, Inc. | Deduplication-aware per-tenant encryption |
US10944671B2 (en) | 2017-04-27 | 2021-03-09 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US10831935B2 (en) | 2017-08-31 | 2020-11-10 | Pure Storage, Inc. | Encryption management with host-side data reduction |
US10776202B1 (en) | 2017-09-22 | 2020-09-15 | Pure Storage, Inc. | Drive, blade, or data shard decommission via RAID geometry shrinkage |
US10789211B1 (en) | 2017-10-04 | 2020-09-29 | Pure Storage, Inc. | Feature-based deduplication |
US10884919B2 (en) | 2017-10-31 | 2021-01-05 | Pure Storage, Inc. | Memory management in a storage system |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
CN108039191A (zh) * | 2017-12-20 | 2018-05-15 | 宣城新维保网络技术有限公司 | 一种存储器模拟测试方法 |
US11586498B2 (en) * | 2018-01-12 | 2023-02-21 | Micron Technology, Inc. | Read retry scratch space |
US11010233B1 (en) | 2018-01-18 | 2021-05-18 | Pure Storage, Inc | Hardware-based system monitoring |
US11144638B1 (en) | 2018-01-18 | 2021-10-12 | Pure Storage, Inc. | Method for storage system detection and alerting on potential malicious action |
US10970395B1 (en) | 2018-01-18 | 2021-04-06 | Pure Storage, Inc | Security threat monitoring for a storage system |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
US11494109B1 (en) | 2018-02-22 | 2022-11-08 | Pure Storage, Inc. | Erase block trimming for heterogenous flash memory storage devices |
US20190294346A1 (en) * | 2018-03-26 | 2019-09-26 | International Business Machines Corporation | Limiting simultaneous failure of multiple storage devices |
US11934322B1 (en) | 2018-04-05 | 2024-03-19 | Pure Storage, Inc. | Multiple encryption keys on storage drives |
TWI649754B (zh) * | 2018-04-16 | 2019-02-01 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
US11995336B2 (en) | 2018-04-25 | 2024-05-28 | Pure Storage, Inc. | Bucket views |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US10678433B1 (en) | 2018-04-27 | 2020-06-09 | Pure Storage, Inc. | Resource-preserving system upgrade |
US10678436B1 (en) | 2018-05-29 | 2020-06-09 | Pure Storage, Inc. | Using a PID controller to opportunistically compress more data during garbage collection |
US11003537B2 (en) * | 2018-05-29 | 2021-05-11 | Micron Technology, Inc. | Determining validity of data read from memory by a controller |
US11436023B2 (en) | 2018-05-31 | 2022-09-06 | Pure Storage, Inc. | Mechanism for updating host file system and flash translation layer based on underlying NAND technology |
US10776046B1 (en) | 2018-06-08 | 2020-09-15 | Pure Storage, Inc. | Optimized non-uniform memory access |
US11281577B1 (en) | 2018-06-19 | 2022-03-22 | Pure Storage, Inc. | Garbage collection tuning for low drive wear |
US11869586B2 (en) | 2018-07-11 | 2024-01-09 | Pure Storage, Inc. | Increased data protection by recovering data from partially-failed solid-state devices |
US11133076B2 (en) | 2018-09-06 | 2021-09-28 | Pure Storage, Inc. | Efficient relocation of data between storage devices of a storage system |
US11194759B2 (en) | 2018-09-06 | 2021-12-07 | Pure Storage, Inc. | Optimizing local data relocation operations of a storage device of a storage system |
US10747613B2 (en) * | 2018-09-07 | 2020-08-18 | Toshiba Memory Corporation | Pooled frontline ECC decoders in memory systems |
US11169726B2 (en) | 2018-09-13 | 2021-11-09 | Toshiba Memory Corporation | Pool-level storage management |
US10846216B2 (en) | 2018-10-25 | 2020-11-24 | Pure Storage, Inc. | Scalable garbage collection |
US11113409B2 (en) | 2018-10-26 | 2021-09-07 | Pure Storage, Inc. | Efficient rekey in a transparent decrypting storage array |
CN109828894B (zh) * | 2018-12-27 | 2022-06-21 | 东软集团股份有限公司 | 设备状态数据的采集方法、装置、存储介质和电子设备 |
US11194473B1 (en) | 2019-01-23 | 2021-12-07 | Pure Storage, Inc. | Programming frequently read data to low latency portions of a solid-state storage array |
CN111522500A (zh) * | 2019-02-01 | 2020-08-11 | 睿宽智能科技有限公司 | 重复读取方法 |
US11588633B1 (en) | 2019-03-15 | 2023-02-21 | Pure Storage, Inc. | Decommissioning keys in a decryption storage system |
US11334254B2 (en) | 2019-03-29 | 2022-05-17 | Pure Storage, Inc. | Reliability based flash page sizing |
US11397674B1 (en) | 2019-04-03 | 2022-07-26 | Pure Storage, Inc. | Optimizing garbage collection across heterogeneous flash devices |
US11775189B2 (en) | 2019-04-03 | 2023-10-03 | Pure Storage, Inc. | Segment level heterogeneity |
US10990480B1 (en) | 2019-04-05 | 2021-04-27 | Pure Storage, Inc. | Performance of RAID rebuild operations by a storage group controller of a storage system |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
US11487665B2 (en) | 2019-06-05 | 2022-11-01 | Pure Storage, Inc. | Tiered caching of data in a storage system |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US10929046B2 (en) | 2019-07-09 | 2021-02-23 | Pure Storage, Inc. | Identifying and relocating hot data to a cache determined with read velocity based on a threshold stored at a storage device |
US11422751B2 (en) | 2019-07-18 | 2022-08-23 | Pure Storage, Inc. | Creating a virtual storage system |
US11086713B1 (en) | 2019-07-23 | 2021-08-10 | Pure Storage, Inc. | Optimized end-to-end integrity storage system |
US11963321B2 (en) | 2019-09-11 | 2024-04-16 | Pure Storage, Inc. | Low profile latching mechanism |
US11403043B2 (en) | 2019-10-15 | 2022-08-02 | Pure Storage, Inc. | Efficient data compression by grouping similar data within a data segment |
US11567670B2 (en) | 2019-10-25 | 2023-01-31 | Samsung Electronics Co., Ltd. | Firmware-based SSD block failure prediction and avoidance scheme |
US11625481B2 (en) | 2019-11-22 | 2023-04-11 | Pure Storage, Inc. | Selective throttling of operations potentially related to a security threat to a storage system |
US11520907B1 (en) | 2019-11-22 | 2022-12-06 | Pure Storage, Inc. | Storage system snapshot retention based on encrypted data |
US11651075B2 (en) | 2019-11-22 | 2023-05-16 | Pure Storage, Inc. | Extensible attack monitoring by a storage system |
US11645162B2 (en) | 2019-11-22 | 2023-05-09 | Pure Storage, Inc. | Recovery point determination for data restoration in a storage system |
US11675898B2 (en) | 2019-11-22 | 2023-06-13 | Pure Storage, Inc. | Recovery dataset management for security threat monitoring |
US11687418B2 (en) | 2019-11-22 | 2023-06-27 | Pure Storage, Inc. | Automatic generation of recovery plans specific to individual storage elements |
US11657155B2 (en) | 2019-11-22 | 2023-05-23 | Pure Storage, Inc | Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system |
US11500788B2 (en) | 2019-11-22 | 2022-11-15 | Pure Storage, Inc. | Logical address based authorization of operations with respect to a storage system |
US11615185B2 (en) | 2019-11-22 | 2023-03-28 | Pure Storage, Inc. | Multi-layer security threat detection for a storage system |
US11341236B2 (en) | 2019-11-22 | 2022-05-24 | Pure Storage, Inc. | Traffic-based detection of a security threat to a storage system |
US11720692B2 (en) | 2019-11-22 | 2023-08-08 | Pure Storage, Inc. | Hardware token based management of recovery datasets for a storage system |
US11941116B2 (en) | 2019-11-22 | 2024-03-26 | Pure Storage, Inc. | Ransomware-based data protection parameter modification |
US11720714B2 (en) | 2019-11-22 | 2023-08-08 | Pure Storage, Inc. | Inter-I/O relationship based detection of a security threat to a storage system |
US11755751B2 (en) | 2019-11-22 | 2023-09-12 | Pure Storage, Inc. | Modify access restrictions in response to a possible attack against data stored by a storage system |
US11340979B2 (en) * | 2019-12-27 | 2022-05-24 | Seagate Technology Llc | Mitigation of solid state memory read failures with a testing procedure |
KR20210123884A (ko) * | 2020-04-06 | 2021-10-14 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
US20220027464A1 (en) * | 2020-07-23 | 2022-01-27 | Nxp Usa, Inc. | Systems and methods for constraining access to one time programmable storage elements |
US11500753B2 (en) | 2020-09-02 | 2022-11-15 | Samsung Electronics Co., Ltd. | Multi-non-volatile memory solid state drive block-level failure prediction with unified device log |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6256642B1 (en) * | 1992-01-29 | 2001-07-03 | Microsoft Corporation | Method and system for file system management using a flash-erasable, programmable, read-only memory |
US5657332A (en) * | 1992-05-20 | 1997-08-12 | Sandisk Corporation | Soft errors handling in EEPROM devices |
JP3941149B2 (ja) * | 1996-12-03 | 2007-07-04 | ソニー株式会社 | 半導体不揮発性記憶装置 |
US5923897A (en) * | 1996-04-01 | 1999-07-13 | Microsoft Corporation | System for adapter with status and command registers to provide status information to operating system and processor operative to write eject command to command register |
US5715193A (en) * | 1996-05-23 | 1998-02-03 | Micron Quantum Devices, Inc. | Flash memory system and method for monitoring the disturb effect on memory cell blocks due to high voltage conditions of other memory cell blocks |
WO2001022232A1 (fr) * | 1999-09-17 | 2001-03-29 | Hitachi, Ltd. | Memoire dans laquelle le nombre de corrections d'erreurs est enregistre |
US6832329B2 (en) * | 2001-02-08 | 2004-12-14 | International Business Machines Corporation | Cache thresholding method, apparatus, and program for predictive reporting of array bit line or driver failures |
US6614689B2 (en) | 2001-08-13 | 2003-09-02 | Micron Technology, Inc. | Non-volatile memory having a control mini-array |
US6948026B2 (en) | 2001-08-24 | 2005-09-20 | Micron Technology, Inc. | Erase block management |
JP4034949B2 (ja) | 2001-09-06 | 2008-01-16 | 株式会社ルネサステクノロジ | 不揮発性半導体記憶装置 |
US6895285B2 (en) * | 2002-05-23 | 2005-05-17 | American Megatrends, Inc. | Computer system status monitoring |
US6895464B2 (en) * | 2002-06-03 | 2005-05-17 | Honeywell International Inc. | Flash memory management system and method utilizing multiple block list windows |
US6948041B2 (en) | 2002-10-24 | 2005-09-20 | Micron Technology, Inc. | Permanent memory block protection in a flash memory device |
JP4073799B2 (ja) * | 2003-02-07 | 2008-04-09 | 株式会社ルネサステクノロジ | メモリシステム |
JP2004259324A (ja) * | 2003-02-24 | 2004-09-16 | Alpine Electronics Inc | 記録装置の動作制御装置および記録装置の動作制御方法 |
JP4299558B2 (ja) * | 2003-03-17 | 2009-07-22 | 株式会社ルネサステクノロジ | 情報記憶装置および情報処理システム |
JP2004005628A (ja) * | 2003-05-01 | 2004-01-08 | Mitsubishi Electric Corp | 二重化メモリシステム |
US7203874B2 (en) | 2003-05-08 | 2007-04-10 | Micron Technology, Inc. | Error detection, documentation, and correction in a flash memory device |
US7173852B2 (en) * | 2003-10-03 | 2007-02-06 | Sandisk Corporation | Corrected data storage and handling methods |
US7012835B2 (en) | 2003-10-03 | 2006-03-14 | Sandisk Corporation | Flash memory data correction and scrub techniques |
US6975538B2 (en) | 2003-10-08 | 2005-12-13 | Micron Technology, Inc. | Memory block erasing in a flash memory device |
US20050144524A1 (en) * | 2003-12-04 | 2005-06-30 | International Business Machines Corporation | Digital reliability monitor having autonomic repair and notification capability |
US7370260B2 (en) * | 2003-12-16 | 2008-05-06 | Freescale Semiconductor, Inc. | MRAM having error correction code circuitry and method therefor |
US7272758B2 (en) | 2004-08-31 | 2007-09-18 | Micron Technology, Inc. | Defective memory block identification in a memory device |
JP3942612B2 (ja) | 2004-09-10 | 2007-07-11 | 東京エレクトロンデバイス株式会社 | 記憶装置、メモリ管理方法及びプログラム |
KR100645058B1 (ko) * | 2004-11-03 | 2006-11-10 | 삼성전자주식회사 | 데이터 신뢰성을 향상시킬 수 있는 메모리 관리 기법 |
US7275190B2 (en) | 2004-11-08 | 2007-09-25 | Micron Technology, Inc. | Memory block quality identification in a memory device |
JP4691355B2 (ja) * | 2004-12-28 | 2011-06-01 | 日本電産サンキョー株式会社 | 不揮発性メモリ |
US9092361B2 (en) * | 2005-07-15 | 2015-07-28 | Panasonic Intellectual Property Management Co., Ltd. | Nonvolatile storage device, memory controller, and defective region detection method |
US20070047327A1 (en) | 2005-08-31 | 2007-03-01 | Micron Technology, Inc. | Erase method for flash memory |
US7478268B2 (en) * | 2005-09-13 | 2009-01-13 | International Business Machines Corporation | Deallocation of memory in a logically-partitioned computer |
US7512847B2 (en) * | 2006-02-10 | 2009-03-31 | Sandisk Il Ltd. | Method for estimating and reporting the life expectancy of flash-disk memory |
JP4840859B2 (ja) * | 2006-05-10 | 2011-12-21 | ルネサスエレクトロニクス株式会社 | 半導体装置、及び起動方法 |
US7809994B2 (en) * | 2006-05-17 | 2010-10-05 | Sandisk Corporation | Error correction coding for multiple-sector pages in flash memory devices |
US7765426B2 (en) * | 2007-06-07 | 2010-07-27 | Micron Technology, Inc. | Emerging bad block detection |
US8276043B2 (en) * | 2008-03-01 | 2012-09-25 | Kabushiki Kaisha Toshiba | Memory system |
-
2007
- 2007-06-07 US US11/759,585 patent/US7765426B2/en active Active
-
2008
- 2008-05-16 CN CN201210298956.5A patent/CN102880521B/zh active Active
- 2008-05-16 KR KR1020147030099A patent/KR101557736B1/ko active IP Right Grant
- 2008-05-16 EP EP20080755737 patent/EP2162822B1/en active Active
- 2008-05-16 CN CN200880018929XA patent/CN101681281B/zh active Active
- 2008-05-16 JP JP2010511237A patent/JP2010529557A/ja active Pending
- 2008-05-16 AT AT08755737T patent/ATE514131T1/de not_active IP Right Cessation
- 2008-05-16 EP EP20110165755 patent/EP2372549B1/en active Active
- 2008-05-16 WO PCT/US2008/063938 patent/WO2008154119A1/en active Application Filing
- 2008-05-16 EP EP20110165727 patent/EP2367110B1/en active Active
- 2008-05-16 KR KR1020107000248A patent/KR101522744B1/ko active IP Right Grant
- 2008-05-28 TW TW097119742A patent/TWI370355B/zh active
-
2010
- 2010-07-19 US US12/839,048 patent/US7954004B2/en active Active
-
2011
- 2011-05-26 US US13/116,407 patent/US8930771B2/en active Active
-
2015
- 2015-01-02 US US14/588,869 patent/US9405639B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP2372549B1 (en) | 2013-06-26 |
EP2162822A1 (en) | 2010-03-17 |
JP2010529557A (ja) | 2010-08-26 |
CN102880521B (zh) | 2015-09-30 |
US20100287410A1 (en) | 2010-11-11 |
US20080307270A1 (en) | 2008-12-11 |
CN102880521A (zh) | 2013-01-16 |
TW200912631A (en) | 2009-03-16 |
KR101557736B1 (ko) | 2015-10-06 |
KR20140141684A (ko) | 2014-12-10 |
US9405639B2 (en) | 2016-08-02 |
EP2367110A1 (en) | 2011-09-21 |
EP2162822B1 (en) | 2011-06-22 |
WO2008154119A1 (en) | 2008-12-18 |
TWI370355B (en) | 2012-08-11 |
CN101681281B (zh) | 2012-10-10 |
US20150121128A1 (en) | 2015-04-30 |
EP2367110B1 (en) | 2013-06-26 |
US20110239061A1 (en) | 2011-09-29 |
US7765426B2 (en) | 2010-07-27 |
CN101681281A (zh) | 2010-03-24 |
EP2372549A1 (en) | 2011-10-05 |
US8930771B2 (en) | 2015-01-06 |
KR101522744B1 (ko) | 2015-05-26 |
US7954004B2 (en) | 2011-05-31 |
ATE514131T1 (de) | 2011-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101522744B1 (ko) | 새로운 불량 블록 검출 | |
US9817725B2 (en) | Flash memory controller, data storage device, and flash memory control method with volatile storage restoration | |
US8694855B1 (en) | Error correction code technique for improving read stress endurance | |
US8271515B2 (en) | System and method for providing copyback data integrity in a non-volatile memory system | |
US8412879B2 (en) | Hybrid implementation for error correction codes within a non-volatile memory system | |
JP4560408B2 (ja) | 不揮発性記憶装置の制御方法 | |
US9817752B2 (en) | Data integrity enhancement to protect against returning old versions of data | |
US8732553B2 (en) | Memory system and control method thereof | |
US10635527B2 (en) | Method for processing data stored in a memory device and a data storage device utilizing the same | |
US9824007B2 (en) | Data integrity enhancement to protect against returning old versions of data | |
US9129689B2 (en) | Tracking erase pulses for non-volatile memory | |
WO2014164134A2 (en) | Detecting effect of corrupting event on preloaded data in non-volatile memory | |
JP2004220068A (ja) | メモリカード及びメモリへのデータ書き込み方法 | |
US20220254435A1 (en) | Semiconductor storage device and error processing method for defective memory cell in the device | |
CN111324291A (zh) | 一种存储器 | |
JP2012155818A (ja) | 半導体集積回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
A107 | Divisional application of patent | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20180502 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20190521 Year of fee payment: 5 |