KR20090028507A - 비휘발성 메모리 에러 보정 시스템 및 방법 - Google Patents
비휘발성 메모리 에러 보정 시스템 및 방법 Download PDFInfo
- Publication number
- KR20090028507A KR20090028507A KR1020087027702A KR20087027702A KR20090028507A KR 20090028507 A KR20090028507 A KR 20090028507A KR 1020087027702 A KR1020087027702 A KR 1020087027702A KR 20087027702 A KR20087027702 A KR 20087027702A KR 20090028507 A KR20090028507 A KR 20090028507A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- payload
- metadata
- error correction
- ecc
- Prior art date
Links
Images
Classifications
-
- 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
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
- H04L1/0052—Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
Abstract
비휘발성 메모리는 제 1 페이로드 데이터 영역에 연관된 제 1 리던던시 메모리 및 제 1 페이로드 데이터를 갖는다. 제 1 리던던트 메모리 영역은 제 1 부분, 제 2 부분, 및 제 3 부분을 갖는다. 제 1 부분은 제 1 페이로드 데이터 영역에 연관된 제 1 페이로드 에러 보정 코드(ECC) 데이터를 갖는다. 제 2 부분은 제 1 페이고드 데이터 영역과 연관된 제 1 메타 데이터를 포함한다. 제 3 부분은 제 1 메타데이터에 연관된 제 1 메타데이터 ECC 데이터를 포함한다.
비휘발성 메모리, 페이로드 데이터 영역, 리던던시 메모리, 페이로드 데이터, 에러 보정 코드 데이터, 메타데이터
Description
본 발명은 일반적으로 메모리 시스템들에 관한 것으로, 특히 에러 보정을 갖는 비휘발성 메모리 시스템들에 관한 것이다.
셀룰러 폰들, 디지털 뮤직 플레이어, 썸 드라이브들(thumb drives) 및 다른 휴대용 디바이스들과 같은 가전 디바이스들(consumer electronic devices)은 압축된 디지털 오디오 및 비디오 데이터를 디코딩하기 위한 알고리즘 및 사용자 인터페이스를 디스플레이하기 위한 알고리즘과 같은 더욱더 복잡한 알고리즘들을 실행한다. 이들 알고리즘들이 복잡성이 증가함에 따라, 이러한 알고리즘을 저장하기 위한 메모리의 사이즈 또한 증가한다.
제조사들이 점점 NAND 플래시 및 NOR 플래시 메모리 디바이스들을 포함하는 플래시 메모리 디바이스들과 같은 비휘발성 메모리 디바이스들에 착수하고 있다. 전형적으로, 비휘발성 메모리 디바이스들은 메모리 페이지들(memory pages) 및 메모리 블록들과 같은 로직 유닛에 데이터를 저장한다. 종종, 데이터는 특정 페이지에 기록되고 그 페이지 내의 위치로부터 판독될 수 있다. 일반적으로, 블록은 삭제될 수 있는 데이터의 가장 작은 유닛이다.
전형적인 플래시 메모리 디바이스에서, 각 페이지는 페이로드 데이터 영역(payload data area) 및 때때로 오버헤드 영역 또는 메타데이터 영역(metadata area)으로 불리는 리던던트 메모리 영역(redundant memory area)을 갖는다. 페이지의 리던던트 메모리 영역은 페이지에 관련된 정보, 페이지 내의 데이터에 관한 정보, 및 페이지에 대한 에러 보정 절차와 연관된 데이터를 저장한다.
플래시 메모리와 같은 비휘발성 메모리 디바이스들에 데이터를 액세스 및 저장하는 것은 전형적으로 가상 어드레싱(virtual addressing)을 사용한다. 비휘발성 메모리 디바이스들은 용도에 따라 사용할 수 있고, 그러한 것으로서, 고체 상태 비휘발성 메모리 디바이스 내의 섹터들은 에러가 없는 데이터를 저장하기 위해 용량을 잃을 수 있다. 불량 섹터들의 분류(cataloging) 및 섹터 맵들(sector maps)의 생성은 전형적으로 데이터 섹터를 판독하고 특정 코드 값들에 대해 상기 시스템 데이터를 체크함으로써 수행된다. 일반적으로, 데이터 섹터의 데이터와 연관된 에러 보정 코드(ECC)는 데이터의 잡음을 보정하는데 이용하기 위해 리던던트 데이터 영역에 포함된다. 예를 들어, 데이터가 메모리에 기록될 때, ECC는 기록될 데이터에 기초하여 계산되고, ECC는 (예를 들어, 리던던트 메모리 영역의) 데이터와 함께 메모리에 저장된다. 데이터가 액세스될 때, 액세스된 데이터로부터 새로운 ECC가 계산되고 계산된 ECC는 상기 데이터와 함께 저장된 상기 ECC와 비교된다. 계산된 ECC와 저장된 ECC 사이에 차이가 있으면, 데이터는 오류가 있을 수 있고 섹터는 불량일 수 있다. 많은 예들에서, ECC들은 후속 메모리 시스템들 또는 프로세서들로의 전송 전에 데이터를 보정하기 위해 이용될 수 있다.
ECC 방법들이 메모리 에러들을 해결하지만, 비휘발성 메모리에서 ECC 데이터의 판독 및 오류가 있는 데이터에 에러 보정을 수행하는 프로세스는 시간 소비적인 프로세스이다. 이에 따라, 비휘발성 메모리를 위한 개선된 에러 보정 시스템 및 방법이 필요하다.
일 실시예에서, 비휘발성 메모리는 제 1 페이로드 데이터 영역 및 제 1 페이로드 데이터 영역과 연관된 제 1 리던던트 메모리 영역을 갖는다. 제 1 리던던트 메모리 영역은 제 1 부분, 제 2 부분, 및 제 3 부분을 갖는다. 제 1 부분은 제 1 페이로드 데이터 영역과 연관된 제 1 페이로드 에러 보정 코드(ECC) 데이터를 포함한다. 제 2 부분은 제 1 페이로드 데이터 영역과 연관된 제 1 메타데이터를 포함한다. 제 3 부분은 제 1 메타데이터와 연관된 제 1 메타데이터 ECC 데이터를 포함한다.
다른 실시예에서, 시스템은 비휘발성 메모리 및 에러 보정 모듈을 갖는다. 비휘발성 메모리는 페이로드 데이터 영역과 연관된 페이로드 에러 보정 코드(ECC) 데이터 및 페이로드 데이터 영역과 연관된 메타데이터 ECC 데이터를 갖는다. 에러 보정 모듈은 메타데이터 ECC 데이터 수신에 응답하여 에러 보정을 수행하는 로직을 포함한다.
다른 실시예에서, 데이터 페이로드와 관련된 데이터 보호 코드(data protection code)가 생성된다. 데이터 보호 코드에 관련된 메타데이터 보호 코드가 생성된다. 데이터 페이로드는 비휘발성 메모리의 페이로드 데이터 영역에 저장되고 데이터 보호 코드 및 메타데이터 보호 코드는 상기 비휘발성 메모리의 리던던트 데이터 영역에 저장된다.
본 발명은 첨부된 도면들을 참조함으로써 더 잘 이해될 것이고, 본원의 특징 및 장점들이 당업자에게 명백하다.
도 1은 프로세싱 시스템의 특정한 예시적인 실시예의 일부의 블록도.
도 2는 도 1의 시스템과 같은, 프로세싱 시스템에 이용하기 위한 분할된 비휘발성 메모리의 블록도.
도 3은 도 2의 비휘발성 메모리의 리던던트 메모리 영역부의 선택된 콘텐트들을 예시하는 개괄적인 도면.
도 4는 도 1의 시스템과 같은, 프로세싱 시스템에 이용하기 위한 에러 보정 모듈의 특정 실시예의 블록도.
도 5는 도 1의 시스템과 같은, 프로세싱 시스템에 이용하기 위한 범용 메모리 인터페이스 모듈 및 에러 보정 모듈의 특정 실시예의 블록도.
도 6은 비휘발성 메모리에 데이터를 기록하는 방법의 흐름도.
도 7은 비휘발성 메모리로부터 데이터를 판독하는 방법의 흐름도.
상이한 도면들에서 동일한 참조 번호들의 이용은 유사하거나 동일한 아이템들을 나타낸다.
도 1은 특정 예시적인 프로세싱 시스템(100)의 일부의 블록도이다. 시스 템(100)은 중앙 처리 유닛(CPU; 112), 비휘발성 메모리(104), 범용 메모리 인터페이스(GPMI; 106), 에러 검출/보정 모듈(108), 및 캐시 또는 랜덤 액세스 메모리(RAM; 110)와 같은 휘발성 메모리를 포함한다. 에러 보정된 데이터(112) 및 비휘발성 메모리(104)로부터 전달된 데이터(114)는 RAM(110)에 저장될 수 있다. CPU(102), 비휘발성 메모리(104), GPMI(106), 에러 검출/보정 모듈(108), 및 RAM(110)은 통신 버스(116)를 통해 통신할 수 있게 결합된다.
일반적으로, CPU(102)는 소프트웨어 프로그램들과 같은 컴퓨터 판독가능 명령들을 프로세스한다. 동작 동안, CPU(102)는 특정 데이터에 대한 액세스를 요청하기 위해 RAM(110) 및 비휘발성 메모리(104)로 메모리 액세스 요청들을 생성한다. GPMI(106)는 메모리 액세스 요청들을 수신하고, 요청된 페이로드 데이터를 검색하고, 페이로드 데이터 및 연관된 에러 검출 코드 및 에러 보정 코드(ECC) 데이터를 에러 검출/보정 모듈(108)에 제공할 수 있다. 에러 검출/보정 모듈(108)은 페이로드 데이터 내의 에러들의 위치들 및 값들을 식별하기 위해 페이로드 데이터를 프로세스할 수 있다. 에러 검출/보정 모듈(108)은 식별된 위치들 및 값들에 기초하여 에러들을 보정할 수 있고 에러 보정된 데이터(112)를 RAM(110)에 저장할 수 있다. 구현에 따라, GPMI(106)는 요청된 데이터를 RAM(110)에 저장을 위해 버스(116)를 통해 전달할 수 있다. 에러 검출/보정 모듈(108)은 에러 검출 및 GPMI(106)에 의해 제공된 ECC 데이터에 기초하여 프로세싱하기 위해 RAM(110)으로부터 전달된 데이터(114)를 로딩할 수 있다.
일반적으로, 비휘발성 메모리(104)는 데이터 페이로드 영역 및 리던던트 데 이터 영역으로 분할될 수 있다. 페이로드 데이터는 데이터 페이로드 영역에 저장될 수 있고, 페이로드 데이터와 연관된 에러 검출 및 에러 보정 데이터는 리던던트 데이터 영역에 저장될 수 있다. 부가적으로, 에러 검출 및 에러 보정 데이터에 관련된 메타데이터 에러 보정 데이터는 리던던트 데이터 영역에 저장될 수 있거나 특정한 구현에 따라, 메타데이터 리던던트 데이터 영역에 저장될 수 있다.
도 2는 도 1의 프로세싱 시스템과 같은 프로세싱 시스템과 사용하기 위한 분할 비휘발성 메모리(104)를 도시한다. 비휘발성 메모리(104)는 페이로드 데이터 영역(204)과 리던던트 데이터 영역(206)으로 분할된다. 페이로드 데이터 영역(204)은 대표적 페이로드 영역들(208, 210, 212, 214)을 포함한다. 특정 실시예에서, 페이로드 영역들(208-214)의 각각은 페이로드 데이터의 512 바이트들까지 포함할 수 있다.
리던던트 데이터 영역(206)은 개별 페이로드 영역들(208, 210, 212, 214) 각각과 연관되는 리던던트 데이터를 포함한다. 도시된 것과 같은 리던던트 데이터 영역(206)은 패리티 영역들(216, 220, 224, 228, 232)과 신드롬 영역들(218, 222, 226, 230)을 포함한다. 특정 실시예에서, 패리티 영역들(216, 220, 224, 228, 232) 각각과 신드롬 영역들(218, 222, 226, 230) 각각은 페이로드 영역들(208, 210, 212, 214) 중 하나의 페이로드 데이터에 관련된 정보의 12 바이트들까지 포함한다.
예를 들어, 페이로드 영역(208)은 페이로드 데이터의 512 바이트들을 포함한다. 패리티 영역(216)과 신드롬 영역(218) 각각은 패리티 데이터의 12 바이트들과 신드롬 데이터의 12 바이트들을 각각 포함한다. 패리티 데이터의 12 바이트들과 신드롬 데이터의 12 바이트들은 페이로드 영역(208)의 페이로드 데이터의 512 바이트들과 연관된다. 특정 실시예에서, 패리티 영역들(216, 220, 224, 228, 232) 각각은 정렬 패딩의 3 개의 추가 바이트들로 8 개의 9-비트 심볼들을 포함한다. 심볼 영역들(218, 222, 226, 230, 234) 각각은 정렬 패딩의 3 개의 추가 바이트들로 8 개의 9-비트 심볼들을 포함한다.
일반적으로, 패리티 영역(232)에 저장된 메타데이터 패리티 데이터 그리고 신드롬 데이터(234)에 저장된 계산된 메타데이터 신드롬 데이터는 패리티 영역들(216, 220, 224, 228)의 패리티 데이터 그리고 신드롬 영역들(218, 222, 226, 230)의 신드롬 데이터와 각각 연관된다. 추가로, 리던던트 데이터 영역(206)은 보조 저장소(236)의 20 바이트들을 포함한다. 메타데이터 패리티 데이터와 메타데이터 신드롬 데이터는 패리티 영역들(216, 220, 224, 228)과 신드롬 영역들(218, 222, 226, 230)에 저장된 데이터의 패리티 데이터와 신드롬 데이터를 나타낸다. 일 실시예에서, 패리티 데이터와 신드롬 데이터는 페이로드 데이터의 메타데이터를 나타낸다. 패리티 영역(232)과 신드롬 영역(234)에 저장된 데이터는 메타데이터의 메타데이터를 나타낸다.
일반적으로, 도 2의 비휘발성 메모리(104)의 분할들과 페이로드 영역들(204, 206)은 대표적 2K 페이지에 대한 시스템 메모리 풋프린트를 나타낸다. 에러 검출/보정 모듈(108)의 신드롬 생성 모듈(도 4에 도시됨)로부터 데이터는 신드롬 영역(234)과 보조 저장소(236)에 저장된 정보의 32 비트들을 포함한다.
대안적인 실시예에서, 분할들과 페이로드 영역들은 4K 페이지 크기에 대해 조절될 수 있다. 예를 들어, 데이터 페이로드 영역(204)은 8 개의 페이로드 영역들을 포함하도록 확장될 수 있고, 이들 각각은 약 512 바이트들의 정보를 갖는다. 리던던트 데이터 영역(206)의 패리티 영역들(216, 220, 224, 228)의 각각 그리고 신드롬 영역들(218, 222, 226, 230)의 각각은 패리티 데이터의 20 바이트들과 신드롬 데이터의 20 바이트들을 저장하도록 유사하게 확장될 수 있다. 이 경우, 패리티 데이터 영역(232)과 신드롬 데이터 영역(234)은 패리티 영역들(216, 220, 224, 228)과 신드롬 영역들(218, 222, 226, 230)과 연관된 패러티와 신드롬 데이터의 12 바이트들을 포함할 수 있지만, 보조 데이터 영역(236)의 보조 데이터는 증가될 수 있다. 한 경우, 보조 데이터는 약 정보의 68 바이트들로 증가된다. 페이로드 패러티/신드롬 영역들은 그러므로 정렬 패딩(alignment padding)의 2 개의 바이트들로 16 개의 9-비트 심볼들로 구성될 수 있고, 보조 패러티/신드롬 영역(236)은 정렬 패딩의 3 바이트들로 8 개의 9-비트 심볼들로 구성될 수 있다. 다른 실시예에서, 메타데이터 ECC 데이터는 분리된 데이터 영역에 저장될 수 있다.
다른 실시예에서, 리던던트 데이터 영역(206)과 페이로드 데이터 영역(204)은 분산될 수 있다. 이 경우, 패리티 영역들(216, 220, 224, 228)과 신드롬 영역들(218, 222, 226, 230)은 비연속적 메모리 어드레스 위치들에 있을 수 있다. 예를 들면, 페이로드 데이터 영역(204)의 페이로드 데이터는 리던던트 데이터 영역들(206)의 리던던트 데이터 파티션들과 산재될 수 있는, 다양한 메모리 어드레스들에서 개별 페이로드 분할들에 저장될 수 있다. 예를 들면, 페이로드 영역(208), 연관된 패리티 영역(216), 및 신드롬 영역(218)은 비휘발성 메모리(104) 내의 인접 메모리 분할들에 저장될 수 있다.
일반적으로, 패러티와 신드롬 데이터는 페이로드 데이터 내의 데이터 에러들을 검출하여 보정하기 위해 에러 검출/보정 모듈(108)에 의해 사용될 수 있는 정보를 제공한다. 더욱이, 패러티/신드롬 데이터가 에러들을 포함하면, 메타데이터 ECC 데이터는 그런 에러들을 검출하여 보정하기 위해 에러 검출/보정 모듈(108)에 의해 사용될 수 있다.
도 3은 비휘발성 메모리(104)의 리던던트 메모리 영역(206)의 일부의 선택된 컨텐트를 도시한다. 일반적으로, 리던던트 메모리 영역(206)은, 도 2에 도시된 것처럼, 페이로드 패리티 데이터와 페이로드 신드롬 데이터를 포함할 수 있는, 에러 보정 데이터(302)를 포함한다. 추가로, 리던던트 메모리 영역(206)은, 메타데이터 패리티 데이터와 메타데이터 신드롬 데이터를 포함할 수 있는, 에러 보정 코드(ECC) 데이터(304)를 포함한다. 추가로, 리던던트 메모리 영역(206)은 논리 어드레스 정보(306), 데이터 블록 상태 정보(308), 주기적 리던던시 검사(cyclic redundancy check; CRC) 데이터(310), 및 메타데이터와 연관된 다른 데이터(312)를 포함할 수 있다.
일반적으로, 페이로드 데이터는 비휘발성 메모리의 페이로드 데이터 영역에 저장되고, 페이로드 데이터와 연관된 리던던트 데이터는 비휘발성 메모리의 리던던트 데이터 영역에 저장된다. 리던던시 데이터는 제 1 페이로드 데이터 영역과 연관된 제 1 페이로드 에러 보정 코드(ECC) 데이터, 및 제 1 페이로드 데이터 영역과 연관된 제 1 메타데이터를 포함한다. 제 1 메타데이터와 연관된 메타데이터 ECC 데이터는 또한 리던던트 데이터 영역에 저장될 수 있다. 메타데이터 ECC 데이터는 메모리로부터 페이로드 데이터를 검색할 필요가 없이, 검색되어 리던던트 데이터에서 에러들을 보정하기 위해 사용될 수 있다. 제 1 메타데이터는 주기적 리던던시 검사(CRC) 데이터, 또는 다른 유형들의 에러 검출 데이터를 포함할 수 있다. 대안적으로, 제 1 메타데이터는, 페이로드 데이터와 연관된 메타데이터 또는 페이로드 데이터의 에러를 보정하기 위해 에러 보정 모듈에 의해 사용될 수 있는, 에러 신드롬을 포함할 수 있다.
도 4는, 도 1의 시스템(100)과 같이, 프로세싱 시스템과 사용하기 위해 에러 검출/보정 모듈(108)의 특정 실시예의 블록도이다. 에러 검출/보정 모듈(108)은 신드롬 생성 모듈(402), 에러 방정식 해결기 및 평가기(406), 에러 보정 유닛(407), 그리고 AHB 버스 마스터 중개자 및 제어기(408)를 포함한다. AHB 버스 마스터 중개자 및 제어기(408)는 신드롬 검색 및 에러 보정에 대한 액세스 요청들에 대해 가중된 계층적 중개를 수행한다.
일반적으로, AHB 버스 마스터 중개기 및 제어기(408)는 시스템(100)의 다른 모듈들 및 구성성분들과 통신하기 위해 버스(116)에 에러 검출/보정 모듈(108)을 결합시킨다. 일반적으로, AHB 버스 마스터 중개기 및 제어기(408)는 버스트(burst) 동작들, 고정된 우선순위 중개 등을 수행하여 데이터 트랜잭션들에 대한 높은 대역폭과 낮은 지연을 제공한다. 더욱이, AHB 버스 마스터 중개기 및 제어기(408)는 NAND 인터페이스(GPMI(106))로부터 스톨들(stalls)을 제한한다.
일반적으로, 신드롬 생성 모듈(402)은 범용 메모리 인터페이스(general purpose memory interface;GPMI;106)를 통해 비휘발성 메모리(104)로부터 데이터 블록들을 수신한다. 데이터 블록들은 고정된 양의 페이로드 데이터와 연관된 고정된 양의 페이로드 데이터와 패리티 데이터를 포함할 수 있다. 신드롬 생성 모듈(402)은 또한 데이터 블록과 연관된 제어 정보를 수신할 수 있다. 신드롬 생성 모듈(402)은 페이로드 및 패리티 데이터로부터 신드롬 데이터를 계산한다. 신드롬 생성 모듈(402)은 버스 마스터 중개기 및 제어기(408)로 페이로드 데이터, 패리티 데이터, 및 계산된 신드롬들을 제공한다.
버스 마스터 중개기 및 제어기(408)는 페이로드 데이터, 패리티 데이터, 계산된 신드롬 정보, 및 제어 정보를 수신하기 위해 비동기 선입선출(first in first out;FIFO)을 포함할 수 있다. 더욱이, 버스 마스터 중개기(408)는, FIFO 레지스터가 채워진 때, 신드롬 생성 모듈(402)로 흐름 제어 신호를 제공할 수 있다.
대안적으로, 버스 마스터 중개기 및 제어기(408) 및 에러 방정식 해결기 및 평가기(406)가 에러 프로세싱을 위해 이용가능할 때까지, 신드롬 생성 모듈(402)은, 도 1의 RAM(110)과 같이, 시스템 메모리 또는 다른 메모리 위치에 페이로드 데이터, 패리티 데이터, 신드롬 정보, 및 제어 정보를 저장할 수 있다.
에러 방정식 해결기(error equation solver) 및 평가기(evaluator)(406)는 버스 마스터 중개기(bus master arbiter) 및 제어기(408)로부터 페이로드 데이터(payload data)의 신드롬들(syndromes)(410)을 수신한다. 에러 방정식 해결기 및 평가기(406)는 신드롬들(410)을 처리하여 심볼 인덱스(symbol index)(412) 및 심볼 마스크(414)를 생성한다. 심볼 인덱스(412)는 하나 이상의 에러들을 포함하는 심볼들을 식별하고, 심볼 마스크(414)는 에러를 보정하도록 보완되어야(complemented) 하는 심볼내의 특정 비트들을 나타낸다. 에러 방정식 해결기 및 평가기(406)는 버스 마스터 중개기 및 제어기(408)가 다음 세트의 신드롬들(410)을 제공할 수 있도록, 프로세싱이 완료될 때 버스 마스터 중개기 및 제어기(408)를 통지한다. 에러 방정식 해결기 및 평가기(406)는 에러 인덱스들(412) 및 마스크들(414)의 쌍들을 에러 보정 유닛(error correction unit)(407)에 제공하는데, 에러 보정 유닛은 버스 마스터 중개기 및 제어기(408)를 통해서 특정 비트 에러들을 보완한다. 에러 방정식 해결기 및 평가기(406)는 또한 얼마나 많은 보정들이 요구가 되는지를 나타내는 표시와 페이로드 데이터는 버스 마스터 중개기 및 제어기(408)에 교정이 불가능하다는 표시를 제공할 수 있다.
일반적으로, 신드롬 생성 모듈(syndrome generation module)(402)이 에러들을 포함하는 것으로서 데이터의 블록을 마킹(marking)한다면, 버스 마스터 중개기 및 제어기(408)는 키 방정식 해결기(key equation solver)를 통해서 에러 보정을 스케줄링(scheduling)한다. 따라서, 신드롬 생성 모듈(402)은 데이터의 블록들 상에서 에러 검출을 수행하고, 에러 보정 프로세스는 단지 에러들이 감지될 때, 에러 방정식 해결기 및 평가기(406)에 의해서 수행된다.
버스 마스터 중개기 및 제어기(408)는 에러 인덱스 및 에러 마스크를 이용하여 메모리 블록 내의 데이터 비트들을 보완하도록 적응될 수 있다. 보정된 데이터는 시스템 메모리, 캐시 메모리(cache memory) 또는 RAM 메모리와 같은 일시적인 메모리, 비휘발성 메모리(104)와 같은 비휘발성 메모리, 및/또는 이들의 임의의 조합에 저장될 수 있다.
일반적으로, 에러 방정식 해결기 및 평가기(406)는 데이터의 보정가능한 블록에 대해 에러 인덱스(412) 및 에러 마스크(414)를 제공할 수 있고, 데이터의 한 블록은 n-심볼들과 2t-패리티 심볼들(n-symbols minus 2t-parity symbols)의 차를 포함한다. n-심볼들은 심볼들(예를 들면, 도 2의 페이로드 데이터 영역들에서 512 심볼들과 같은)에서 블록 크기(size)를 나타내고, 심볼(t)는 교정가능한 에러들의 수를 나타낸다. 일 실시예에서, 512 바이트 블록내의 보정가능한 에러들의 수는 4 에러들일 수 있다. 다른 실시예에서, 512 바이트 블록내의 보정가능한 에러들의 수는 8 에러들일 수 있다. 이용된 에러 보정 결과들에 따라, 더 많은 또는 더 적은 수의 에러들이 보정될 수 있다.
신드롬 생성 모듈(402)은 2t 신드롬들을 계산한다. 에러 방정식 해결기 및 평가기(406)는 2t 알려지지 않은 변수들로 한 세트의 2t 선형 방정식들을 생성한다. 에러 방정식 해결기 및 평가기(406)는 유클리드의 호제법(Euclidean algorithm)을 이용하여 상기 세트의 방정식들을 해석하는데, 이는 2*t차(예를 들면, x8 또는 x16)의 특별한 다항식을 2t 신드롬들로부터 형성된 신드롬 다항식으로 나눈다. 일단 나눗셈의 결과가 보정가능한 에러들 (t)의 수보다 적거나 또는 같은 나머지의 차수이면, 에러 방정식 해결기 및 평가기(406)는 알고리즘을 종료하고 에러 인덱스(412) 및 에러 마스크(414)를 결정하기 위해 에러 평가기 다항식(error evaluator polynomial) 및 에러 로케이터 다항식(error locator polynomial)을 생성한다.
도 5는 도 1의 시스템(100)과 같은 프로세싱 시스템으로 이용을 위해 에러 보정 모듈 및 범용 메모리 인터페이스(general purpose memory interface; GPMI) 모듈을 가지는 에러 보정 시스템(500)의 일 실시예의 블록도이다. 시스템(500)은 범용 메모리 인터페이스(GPMI) 병렬 입력/출력(502), 신드롬 생성기(402), 에러 보정 모듈(108), 버스 마스터 중개기 및 제어기(408), 범용 메모리 인터페이스 및 계수기들(504), 비동기식 선입선출(first input first output; FIFO) 레지스터(506), 및 버스(bus)(116)을 포함한다. GPMI 병렬 입력/출력(502)은 통신적으로 GPMI 및 계수기들(504)들에 결합되고 신드롬 생성기(402)에 결합된다. 부가적으로, GPMI 병렬 입력/출력(502)은 비휘발성 메모리(104)에 결합될 수 있다.
신드롬 생성기(402)는 비동기식 FIFO 레지스터(506)와 결합되고, GPMI 및 계수기들(504)에 결합된다. 비동기식 FIFO 레지스터(506)는 또한 GPMI 및 계수기들(504)과 연결되고 버스 마스터 중개기 및 제어기(408)와 연결된다. GPMI 및 계수기들(504)은 버스 마스터 중개기 및 제어기(408)와 연결되고 에러 보정 모듈(108)과 연결된다.
에러 보정 모듈(108)은 키 방정식 해결기(key equation solver; KES) 인터페이스(512), 키 방정식 해결기(514), 체인 검색 및 포니 평가기(Chein search and Forney evaluator)(516), 변환기를 어드레스(address)하기 위한 심볼(518), 하나 이상의 레지스터들(520), 및 에러 보정 모듈(522)을 포함한다. KES 인터페이 스(512)는 버스 마스터 중개기 및 제어기(408)와 결합되고, 키 방정식 해결기(514)과 결합되며, 에러 보정 모듈(522)과 결합된다. 체인 검색 및 포니 평가기(516)는 변환기를 어드레스하기 위한 심볼(518)과 연결되고, 이는 하나 이상의 레지스터들(520) 및 에러 보정 모듈(522)과 연결될 수 있다. 에러 보정 모듈(522)은 버스 마스터 중개기 및 제어기(408)와 연결된다.
버스 마스터 중개기 및 제어기(408)는 버스 마스터 인터페이스(508), 중개기 및 제어기(510)를 포함한다. 버스 마스터 인터페이스(508)는 버스(bus)(116)와 연결되고, 중개기 및 제어기(510)는 GPMI 및 계수기들(504)에 연결되고, 비동기식 FIFO(506)에 연결되고, KES 인터페이스(512)에 연결되며, 에러 보정 모듈(522)과 연결된다.
일반적으로, GPMI 병렬 입력/출력(502)은 GPMI 및 계수기들(504)에 어드레스 정보(address information)를 제공한다. 신드롬 생성 모듈(402)은 GPMI 및 계수기들(504)에 블록 번호를 제공한다. 부가적으로, 신드롬 생성 모듈(402)은 계산된 신드롬 데이터, 패리티 데이터, 및 제어 정보와 함께 비동기식 FIFO(506)에 페이로드 데이터 블록들을 제공한다. 판독 동작들시에, 페이로드 데이터 블록들은 신드롬 생성 모듈(402)에 의해서 처리되고 비동기식 FIFO(506)에 전달된다(passed). 일 특정 구현에서, 마지막 쓰기 동작을 제외하고, 신드롬 생성 모듈(402)의 출력 워드(output word)는 32 비트들의 데이터(페이로드, 패리티, 또는 신드롬 비트들 중 어느 하나를 의미함) 및 4 플래그(flag) 비트들로 구성된다. 페이로드 데이터 블록의 마지막 출력 워드는 어떤 조건들이 프로세싱 시간을 줄일 수 있는 블록들 내에서 검출될 수 있는지를 식별하는 상태 워드(status word)일 수 있다. 예를 들면, 신드롬 생성 모듈(402)이 에러를 검출하지 않는다면, 에러 보정은 회피될 수 있다(avoided). 비동기식 FIFO(506)는 흐름 제어 신호(flow control signal)를 신드롬 생성 모듈(402)에 제공하여 데이터 블록들 및 신드롬 정보의 전달을 제어할 수 있다. 데이터 블록, 연관된 패리티, 및 신드롬들 정보는 비동기식 FIFO(506)에 기록될 수 있다.
게다가, GPMI 및 계수기들(504)로부터 전달되고, 신드롬 생성 모듈(402)로부터 버스 마스터 중개기 및 제어기(408)로 전달되는 모드 비트(mode bit), 메모리 어드레스들(memory addresses), 채널 수 등과 같은 다수의 제어 신호들이 존재한다. 전형적으로, 제어 정보는 페이로드 데이터 블록의 시작(beginning)에 포함될 수 있다.
비동기식 FIFO(506)는 데이터, 신드롬 정보, 패리티 데이터, 및 제어 정보를 GPMI 및 계수기들(504)에 제공한다. 일반적으로, 제어 정보는 새로운 데이터 블록의 제 1 워드(word), 데이터 블록 전달의 시작과 끝, 및 상태 워드 플래그를 나타내는 비트 플래그들(bit flags)을 포함할 수 있다. 비동기식 FIFO(506)의 제어 로직(control logic)은 FIFO가 새로운 데이터에 대해 충분하지 못한 공간을 가질 때마다, FIFO의 상태를 모니터링(monitoring)하고 전체적인 조건(full condition)을 신드롬 생성 모듈(402)에 보고(report)할 수 있다.
GPMI 및 계수기들(504)은 데이터 및 신드롬 정보를 KES 인터페이스(512)에 전달한다. KES 인터페이스(512)는 에러 검출을 위해서 계산된 신드롬 데이터를 키 방정식 해결기(514)에 제공한다. 데이터의 블록이 에러가 없는 것으로 마킹(marking)된다면, GPMI 및 계수기들(504)은 KES 인터페이스(512)를 경유하여, 중개기 및 제어기(510)에 데이터의 블록을 전달할 수 있다. 키 방정식 해결기(514)는 체인 검색 및 포니 평가기 유닛(516)에 에러 검출 정보를 제공한다.
일단 키 방정식 해결기(514)가 에러 검출을 완료하면, KES 인터페이스(512)는 에러 검출 모듈(522)에 블록 정보를 제공한다. 체인 검색 및 포니 평가기(CF) 유닛(516)은 데이터 블록에 대한 에러 마스크들 및 에러 인덱스들을 계산하고 그들을 에러 검출 유닛(522)에 제공한다. 변환기를 어드레스하기 위한 심볼(518)은 심볼 인덱스를 시스템 워드-정렬된 어드레스(system word-aligned address)로 변환하고 심볼 마스크를 워드-정렬된 마스크(word-aligned mask)로 변환한다.
에러 검출 모듈(512)은 워드 판독-수정-기록(read-modity-write) 동작을 수행하여 에러 보정을 완료한다. 시스템의 동작 모드에 따라, 판독-기록-수정(read-write-modify) 보정들의 수는 다양할 수 있다. 예를 들면, 8-비트 모드에 대해서 16 판독-수정-기록 보정들까지일 수 있고, 4-비트 모드에 대해서 8 판독-수정-기록 보정들까지 일 수 있다.
일반적인 판독 동작에 집중된 상기 논의에서, 에러 보정은 다수의 방식으로 적용될 수 있다는 것을 주의해야 한다. 예를 들면, 페이로드 데이터에 대한 변경들은 또한 메타데이터에 대한 변경들 및 비휘발성 메모리의 리던던트 데이터(redundant data)에 저장된 메타데이터 ECC 데이터에 대한 변경들을 요구할 수 있다. 페이로드 데이터에서 검출된 에러들은 메타데이터를 이용하여 보정될 수 있 다. 메타데이터에서 에러들은 메타데이터 ECC 데이터를 이용하여 보정될 수 있다. 복구 프로세스는 페이로드 데이터, (패리티 데이터와 같은) 페이로드 에러 검출 데이터, 메타데이터, 메타데이터 ECC 데이터 등에 적용될 수 있다. 메타데이터, 패리티 데이터, 메타데이터 에러 보정 코드(ECC) 데이터, 및 페이로드 데이터에 개별적으로 저장함으로써, 에러 보정 모듈(108)은 데이터 에러들을 효율적으로 보정하기 위해 하나 이상의 데이터 요소들을 액세스할 수 있다.
도 6은 비휘발성 메모리에 데이터를 기록하는 방법의 흐름도이다. 메모리 기록 동작은 비휘발성 메모리에 데이터의 불록을 기록하는 것으로 개시된다(블록 602). 데이터 블록에 대한 패리티 데이터 및 신드롬 데이터가 계산된다(블록 604). 메타데이터 에러 보정 코드(ECC) 데이터는 패리티 데이터 및 신드롬 데이터에 대해 계산된다(블록 606). 데이터의 블록은 비휘발성 메모리의 페이로드 데이터에 기록된다(블록 608). 패리티 데이터, 신드롬 데이터, 및 메타데이터 ECC 데이터는 비휘발성 메모리의 리던던트 데이터 영역에 기록된다(블록 610).
일반적으로, 각각의 기록 동작은 에러 보정 모듈이 페이로드 데이터에 기초하여 신드롬 데이터를 생성하고 신드롬 데이터에 기초하여 메타데이터 ECC 데이터를 생성하게 한다. 에러 보정 프로세스 동안, 메타데이터 ECC 데이터는 에러 보정 모듈에 의해 신드롬 데이터를 보정하기 위해 이용될 수 있고, 신드롬 데이터는 페이로드 데이터를 보정하기 위해 이용될 수 있다. 이들 에러 보정 프로세스들은 서로로부터 순차적으로 또는 독립적으로 수행될 수 있다.
도 7은 비활성 메모리로부터 페이로드 데이터를 판독하는 방법의 순서도이 다. 메모리 판독 동작은 비휘발성 메모리로부터 페이로드 데이터를 판독하는 것을 개시한다(블록 702). 페이로드 데이터는 신드롬 생성 모듈에 의해 수신된다(블록 704). 신드롬 생성 모듈은 페이로드 데이터에 관련된 복수의 신드롬들을 계산한다(블록 706). 신드롬 생성 모듈은 계산된 신드롬들을 에러 계산기에 제공한다(블록 708). 에러 보정기의 키 방정식 해결기(key equation solver)는 신드롬들로부터 페이로드 데이터 에러를 계산한다(블록 710). 에러 계산기의 체인 검색 및 포니 계산기는 페이로드 데이터 에러에 기초하여 에러 마스크들 및 에러 인덱스들을 생성한다(블록 712). 에러 계산기의 에러 보정 모듈은 에러 마스크들 및 에러 인덱스들에 기초하여 데이터 블록 내에 비트들을 보상한다(블록 714).
일반적으로, 비휘발성 메모리로부터 페이로드 데이터의 판독은 도 7에 관련하여 기술된 바와 같이 진행할 수 있다. 대안으로, 에러가 비휘발성 메모리의 리던던트 데이터 영역내에 저장된 페이로드 메타데이터 또는 페이로드 패리티 데이터에서 검출되는 경우, 에러 보정 모듈은 페이로드 메타데이터에 연관된 메타데이터 에러 보정 코드(ECC) 데이터를 검색한다. 이후, 메타데이터 ECC 데이터는 페이로드 메타데이터에 관련된 (블록 706에서와 같은) 상기의 복수의 신드롬들을 계산하기 위해 이용된다. 키 방정식 해결기는 신드롬들로부터 페이로드 메타데이터 에러를 계산한다 체인 검색 및 포니 계산기는 페이로드 메타데이터 에러에 기초하여 에러 마스크들 및 에러 인덱스들을 생성한다. 에러 보정 모듈은 에러 마스크들 및 에러 인덱스들에 기초하여 페이로드 메타데이터내 비트들을 보상한다. 그러므로, 페이로드 데이터의 메타데이터는 페이로드 데이터에 또 로딩하지 않고 리던던트 데 이터 영역에 저장된 메타데이터 ECC 데이터로부터 복구될 수 있어, 시간 및 계산 리소스들을 절약한다.
비휘발성 메모리의 리던던트 데이터 영역에 메타데이터 및 에러 검출 데이터를 저장하고 리던던트 데이터 영역 내 개별적으로 메타데이터 및 에러 검출 데이터에 연관된 메타데이터 에러 보정 코드(ECC) 데이터를 저장함으로써, 에러 보정 모듈내 로직은 페이로드 데이터를 또한 로딩해야 할 필요없이 페이로드 데이터의 메타데이터내 및 페이로드 데이터에 비트 에러들을 보정할 수 있다.
메타데이터 ECC 데이터는 페이로드 데이터의 메타데이터와 연관된 신드롬을 포함할 수 있다. 비휘발성 메모리는 메타데이터 ECC 데이터뿐만 아니라 페이로드 ECC 데이터를 포함할 수 있다. 데이터 페이로드 내 각각의 데이터 페이로드는 리던던트 데이터 영역내 대응하는 패리티 데이터 영역 및 신드롬 데이터 영역을 가질 수 있다. 각각의 대응하는 패리티 데이터 영역 및 신드롬 데이터 영역 쌍은 리던던트 데이터 영역내 저장된 대응하는 메타데이터 ECC 데이터를 포함할 수 있다. 따라서, 제 1 데이터 페이로드는 리던던트 데이터 영역에 저장된 제 1 패리티 데이터 및 제 1 메타데이터를 가질 수 있다. 제 1 패리티 데이터 및 제 1 메타데이터는 대응하는 제 1 메타데이터 ECC 데이터를 가질 수 있다. 제 2 데이터 페이로드는 리던던트 데이터 영역에 저장된 제 2 패리티 데이터 및 제 2 메타데이터를 가질 수 있다. 일 실시예에서, 제 1 메타데이터 ECC 데이터는 제 1 및 제 2 패리티 데이터에 대한 메타데이터 ECC 데이터 및 제 1 및 제 2 메타데이터를 포함한다. 제 2 실시예에서, 제 2 메타데이터 ECC 데이터는 제 2 패리티 데이터 및 제 2 메타데 이터에 대한 메타데이터 ECC 데이터를 포함한다.
상술된 주요 사항은 예시적으로 고려되고 제한되는 것은 아니며, 첨부된 청구항들은 본 발명의 정신 및 범위내에 있는 모든 이러한 변경들, 개선들, 및 다른 실시예들을 포함하도록 의도된다. 따라서, 법에 의해 허락되는 최대 범위에 대하여, 본 발명의 범위는 후속하는 청구항들 및 그들의 균등물들의 최대 넓은 허용가능한 해석에 의해 결정되는 것이다.
Claims (23)
- 비휘발성 메모리에 있어서,제 1 페이로드 데이터 영역;상기 제 1 페이로드 데이터 영역에 연관된 제 1 리던던트 메모리 영역을 포함하고,상기 제 1 리던던트 메모리 영역은:상기 제 1 페이로드 데이터 영역에 연관된 제 1 페이로드 에러 보정 코드(ECC) 데이터를 포함하는 제 1 부분;상기 제 1 페이로드 데이터 영역에 연관된 제 1 메타데이터를 포함하는 제 2 부분; 및상기 제 1 메타데이터에 연관된 제 1 메타데이터 ECC 데이터를 포함하는 제 3 부분을 포함하는, 비휘발성 메모리.
- 제 1 항에 있어서,제 2 페이로드 데이터 영역을 더 포함하고,상기 제 1 메타데이터는 상기 제 1 페이로드 데이터 영역 및 상기 제 2 페이로드 데이터 영역에 연관되는, 비휘발성 메모리.
- 제 2 항에 있어서,상기 제 1 리던던트 메모리 영역은 상기 제 2 페이로드 데이터 영역에 연관된 제 2 페이로드 에러 보정 코드(ECC) 데이터를 포함하는, 비휘발성 메모리.
- 제 1 항에 있어서,상기 제 1 페이로드 에러 보정 코드(ECC) 데이터는 패리티 데이터 및 신드롬 데이터를 포함하는, 비휘발성 메모리.
- 제 1 항에 있어서,상기 제 1 페이로드 데이터 영역은 512 바이트의 메모리 공간을 포함하는, 비휘발성 메모리.
- 제 1 항에 있어서,상기 제 1 메타데이터는 주기적 리던던시 검사(CRC) 데이터를 포함하는, 비휘발성 메모리.
- 제 1 항에 있어서,상기 제 1 메타데이터는 블록 상태 데이터를 포함하는, 비휘발성 메모리.
- 제 1 항에 있어서,상기 제 1 메타데이터는 상기 제 1 페이로드 데이터 영역에 연관된 논리적 어드레스 데이터를 포함하는, 비휘발성 메모리.
- 제 1 항에 있어서,제 2 페이로드 영역;상기 제 2 페이로드 데이터 영역에 연관된 제 2 리던던트 메모리 영역을 더 포함하고,상기 제 2 리던던트 메모리 영역은:상기 제 2 페이로드 영역에 연관된 제 2 페이로드 에러 보정 코드(ECC) 데이터를 갖는 제 1 부분;상기 제 2 페이로드 영역에 연관된 제 2 메타데이터를 갖는 제 2 부분; 및상기 제 2 메타데이터에 연관된 제 2 메타데이터 ECC 데이터를 포함하는 제 3 부분을 포함하는, 비휘발성 메모리.
- 시스템에 있어서:페이로드 데이터 영역에 연관된 페이로드 에러 보정 코드(ECC) 데이터 및 상기 페이로드 데이터 영역에 연관된 메타데이터 ECC 데이터를 포함하는 비활성 메모리; 및상기 메타데이터 ECC 데이터의 수신에 응답하여 에러 보정을 수행하기 위한 로직을 포함하는 에러 보정 모듈을 포함하는, 시스템.
- 제 10 항에 있어서,상기 메타데이터 ECC 데이터는 에러 신드롬(error syndrome)을 포함하고,상기 에러 보정 모듈은 상기 에러 신드롬을 생성하기 위한 신드롬 생성 모듈을 포함하는, 시스템.
- 제 10 항에 있어서,상기 에러 보정 모듈은 상기 비휘발성 메모리로부터 액세스된 메타데이터의 에러를 보정하기 위해 상기 에러 신드롬에 기초하여 에러 보정 정보를 생성하기 위해 키 생성 모듈을 포함하는, 시스템.
- 제 12 항에 있어서,상기 에러 보정 정보는 에러 인덱스 및 에러 마스크를 포함하는, 시스템.
- 제 10 항에 있어서,상기 비휘발성 메모리는 페이로드 ECC 데이터 및 메타데이터 ECC 데이터를 포함하고, 각각은 제 2 페이로드 데이터 영역에 연관되는, 시스템.
- 제 12 항에 있어서,상기 에러 보정 모듈은 상기 메타데이터에 리드-솔로몬 에러 보정(Reed-Solomon error correction)을 수행하는, 시스템.
- 데이터 페이로드에 관련된 데이터 보호 코드를 생성하는 단계;상기 데이터 보호 코드에 관련된 메타데이터 보호 코드를 생성하는 단계; 및비휘발성 메모리의 페이로드 데이터 영역에 상기 데이터 페이로드를 저장하고 상기 비휘발성 메모리의 리던던트 데이터 영역에 상기 데이터 보호 코드 및 상기 메타데이터 보호 코드를 저장하는 단계를 포함하는, 방법.
- 제 16 항에 있어서,상기 데이터 보호 코드는 에러 검출 데이터 및 에러 보정 데이터를 포함하는, 방법.
- 제 17 항에 있어서,상기 에러 검출 데이터는 패리티 데이터를 포함하는, 방법.
- 제 16 항에 있어서,상기 데이터 보호 코드는 주기적 리던던시 검사(CRC) 데이터 및 에러 보정 코드(ECC) 데이터를 포함하는, 방법.
- 제 16 항에 있어서,상기 메타데이터 보호 코드는 상기 데이터 보호 코드에 관련된 에러 보정 코 드(ECC) 데이터를 포함하는, 방법.
- 제 16 항에 있어서,상기 데이터 보호 코드를 생성하는 단계는, 상기 데이터 페이로드에 대하여 적어도 하나의 패리티 데이터 및 에러 보정 코드(ECC) 데이터를 계산하는 단계를 포함하는, 방법.
- 제 16 항에 있어서,상기 메타데이터 보호 코드를 생성하는 단계는 메타데이터 에러 보정 코드(ECC) 데이터를 계산하는 단계를 포함하는, 방법.
- 시스템에 있어서:비휘발성 메모리에 액세스하는 에러 보정 모듈을 포함하고,상기 에러 보정 모듈은 상기 비휘발성 메모리로부터 검색가능한 데이터의 블록에 연관된 복수의 신드롬들을 생성하기 위한 로직을 포함하고, 상기 데이터의 블록내 비트 에러들을 보상하기 위한 로직을 더 포함하고, 상기 비휘발성 메모리로부터 검색된 메타데이터에서 비트 에러들을 보정하기 위해 메타데이터 에러 보정 코드(ECC) 데이터를 이용하기 위한 로직을 포함하는, 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/436,937 | 2006-05-18 | ||
US11/436,937 US20070268905A1 (en) | 2006-05-18 | 2006-05-18 | Non-volatile memory error correction system and method |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20090028507A true KR20090028507A (ko) | 2009-03-18 |
Family
ID=38711911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020087027702A KR20090028507A (ko) | 2006-05-18 | 2007-03-14 | 비휘발성 메모리 에러 보정 시스템 및 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20070268905A1 (ko) |
KR (1) | KR20090028507A (ko) |
CN (1) | CN101473308A (ko) |
WO (1) | WO2007136447A2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8694873B2 (en) | 2011-05-02 | 2014-04-08 | Samsung Electronics Co., Ltd. | Memory system and error correction method |
Families Citing this family (176)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8122322B2 (en) * | 2007-07-31 | 2012-02-21 | Seagate Technology Llc | System and method of storing reliability data |
JP4564520B2 (ja) | 2007-08-31 | 2010-10-20 | 株式会社東芝 | 半導体記憶装置およびその制御方法 |
US8185706B2 (en) * | 2008-04-30 | 2012-05-22 | Apple Inc. | Copyback optimization for memory system |
US8495454B2 (en) * | 2008-07-14 | 2013-07-23 | Marvell World Trade Ltd. | Methods, apparatuses, systems, and architectures for quickly and reliably encoding and/or decoding system data |
JP5363460B2 (ja) * | 2008-07-30 | 2013-12-11 | パナソニック株式会社 | 誤り訂正機能付きコントローラ、誤り訂正機能付き記憶装置、及び誤り訂正機能付きシステム |
US8255774B2 (en) | 2009-02-17 | 2012-08-28 | Seagate Technology | Data storage system with non-volatile memory for error correction |
US9063886B2 (en) * | 2009-09-18 | 2015-06-23 | Apple Inc. | Metadata redundancy schemes for non-volatile memories |
US8726126B2 (en) | 2010-03-23 | 2014-05-13 | Apple Inc. | Non-regular parity distribution detection via metadata tag |
WO2012037032A2 (en) * | 2010-09-15 | 2012-03-22 | Sandisk Technologies Inc. | System and method of distributive ecc processing |
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US8892981B2 (en) | 2010-09-30 | 2014-11-18 | Apple Inc. | Data recovery using outer codewords stored in volatile memory |
US8601313B1 (en) | 2010-12-13 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for a data reliability scheme in a solid state memory |
US8601311B2 (en) | 2010-12-14 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory |
US8615681B2 (en) | 2010-12-14 | 2013-12-24 | Western Digital Technologies, Inc. | System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss |
US8954647B2 (en) | 2011-01-28 | 2015-02-10 | Apple Inc. | Systems and methods for redundantly storing metadata for non-volatile memory |
US8700950B1 (en) | 2011-02-11 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for data error recovery in a solid state subsystem |
US8700951B1 (en) * | 2011-03-09 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
US20120324148A1 (en) * | 2011-06-19 | 2012-12-20 | Paul Roger Stonelake | System and method of protecting metadata from nand flash failures |
JP5770026B2 (ja) | 2011-06-20 | 2015-08-26 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
CN103389920B (zh) * | 2012-05-09 | 2016-06-15 | 深圳市腾讯计算机系统有限公司 | 一种磁盘坏块的自检测方法和装置 |
US8954809B2 (en) * | 2012-07-25 | 2015-02-10 | Texas Instruments Incorporated | Method for generating descriptive trace gaps |
US8938656B2 (en) | 2012-09-14 | 2015-01-20 | Sandisk Technologies Inc. | Data storage device with intermediate ECC stage |
US8996951B2 (en) | 2012-11-15 | 2015-03-31 | Elwha, Llc | Error correction with non-volatile memory on an integrated circuit |
CN103092727B (zh) * | 2013-01-18 | 2015-08-26 | 大唐移动通信设备有限公司 | Flash存储介质上的数据纠错方法和装置 |
US9069695B2 (en) | 2013-03-14 | 2015-06-30 | Apple Inc. | Correction of block errors for a system having non-volatile memory |
US9075960B2 (en) * | 2013-03-15 | 2015-07-07 | Now Technologies (Ip) Limited | Digital media content management apparatus and method |
JP5657079B1 (ja) | 2013-10-24 | 2015-01-21 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置 |
CN103594120B (zh) * | 2013-10-31 | 2018-08-21 | 西安紫光国芯半导体有限公司 | 以读代写的存储器纠错方法 |
US8874835B1 (en) | 2014-01-16 | 2014-10-28 | Pure Storage, Inc. | Data placement based on data properties in a tiered storage device system |
US9317357B2 (en) * | 2014-03-20 | 2016-04-19 | International Business Machines Corporation | Management of microcode errors in a storage operation |
JP6318769B2 (ja) * | 2014-03-28 | 2018-05-09 | 富士通株式会社 | ストレージ制御装置、制御プログラム、および制御方法 |
US20150281743A1 (en) * | 2014-04-01 | 2015-10-01 | Silicon Image, Inc. | Orthogonal Data Organization for Error Detection and Correction in Serial Video Interfaces |
US9003144B1 (en) | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
US9836234B2 (en) | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
US11960371B2 (en) | 2014-06-04 | 2024-04-16 | Pure Storage, Inc. | Message persistence in a zoned system |
US8850108B1 (en) | 2014-06-04 | 2014-09-30 | Pure Storage, Inc. | Storage cluster |
US9213485B1 (en) | 2014-06-04 | 2015-12-15 | Pure Storage, Inc. | Storage system architecture |
US9612952B2 (en) | 2014-06-04 | 2017-04-04 | Pure Storage, Inc. | Automatically reconfiguring a storage memory topology |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
US11399063B2 (en) | 2014-06-04 | 2022-07-26 | Pure Storage, Inc. | Network authentication for a storage system |
US11652884B2 (en) | 2014-06-04 | 2023-05-16 | Pure Storage, Inc. | Customized hash algorithms |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
US11068363B1 (en) | 2014-06-04 | 2021-07-20 | Pure Storage, Inc. | Proactively rebuilding data in a storage cluster |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US9021297B1 (en) | 2014-07-02 | 2015-04-28 | Pure Storage, Inc. | Redundant, fault-tolerant, distributed remote procedure call cache in a storage system |
US8868825B1 (en) | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
US11604598B2 (en) | 2014-07-02 | 2023-03-14 | Pure Storage, Inc. | Storage cluster with zoned drives |
US10114757B2 (en) | 2014-07-02 | 2018-10-30 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US11886308B2 (en) | 2014-07-02 | 2024-01-30 | Pure Storage, Inc. | Dual class of service for unified file and object messaging |
US9811677B2 (en) | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
US10853311B1 (en) | 2014-07-03 | 2020-12-01 | Pure Storage, Inc. | Administration through files in a storage system |
US9747229B1 (en) | 2014-07-03 | 2017-08-29 | Pure Storage, Inc. | Self-describing data format for DMA in a non-volatile solid-state storage |
US8874836B1 (en) | 2014-07-03 | 2014-10-28 | Pure Storage, Inc. | Scheduling policy for queues in a non-volatile solid-state storage |
TWI512750B (zh) * | 2014-07-30 | 2015-12-11 | Phison Electronics Corp | 資料儲存方法、記憶體控制電路單元及記憶體儲存裝置 |
US9495255B2 (en) * | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US9483346B2 (en) | 2014-08-07 | 2016-11-01 | Pure Storage, Inc. | Data rebuild on feedback from a queue in a non-volatile solid-state storage |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US9766972B2 (en) | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
US9558069B2 (en) | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
CN105335299B (zh) * | 2014-08-12 | 2018-10-02 | 群联电子股份有限公司 | 数据存储方法、存储器控制电路单元及存储器存储装置 |
US10079711B1 (en) | 2014-08-20 | 2018-09-18 | Pure Storage, Inc. | Virtual file server with preserved MAC address |
US9652321B2 (en) * | 2014-09-23 | 2017-05-16 | Intel Corporation | Recovery algorithm in non-volatile memory |
US9558066B2 (en) * | 2014-09-26 | 2017-01-31 | Intel Corporation | Exchanging ECC metadata between memory and host system |
CN105808151B (zh) * | 2014-12-29 | 2019-09-27 | 华为技术有限公司 | 固态硬盘存储设备和固态硬盘存储设备的数据存取方法 |
US9948615B1 (en) | 2015-03-16 | 2018-04-17 | Pure Storage, Inc. | Increased storage unit encryption based on loss of trust |
US11294893B2 (en) | 2015-03-20 | 2022-04-05 | Pure Storage, Inc. | Aggregation of queries |
US9940234B2 (en) | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
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 |
US9672125B2 (en) | 2015-04-10 | 2017-06-06 | Pure Storage, Inc. | Ability to partition an array into two or more logical arrays with independently running software |
US10140149B1 (en) | 2015-05-19 | 2018-11-27 | Pure Storage, Inc. | Transactional commits with hardware assists in remote memory |
US9817576B2 (en) | 2015-05-27 | 2017-11-14 | Pure Storage, Inc. | Parallel update to NVRAM |
US10846275B2 (en) | 2015-06-26 | 2020-11-24 | Pure Storage, Inc. | Key management in a storage device |
US10983732B2 (en) | 2015-07-13 | 2021-04-20 | Pure Storage, Inc. | Method and system for accessing a file |
US11232079B2 (en) | 2015-07-16 | 2022-01-25 | Pure Storage, Inc. | Efficient distribution of large directories |
US10108355B2 (en) | 2015-09-01 | 2018-10-23 | Pure Storage, Inc. | Erase block state detection |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
TWI566096B (zh) * | 2015-09-11 | 2017-01-11 | 慧榮科技股份有限公司 | 資料儲存系統與其相關方法 |
US10853266B2 (en) | 2015-09-30 | 2020-12-01 | Pure Storage, Inc. | Hardware assisted data lookup methods |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US10007457B2 (en) | 2015-12-22 | 2018-06-26 | Pure Storage, Inc. | Distributed transactions with token-associated execution |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a storage system |
US11231858B2 (en) | 2016-05-19 | 2022-01-25 | Pure Storage, Inc. | Dynamically configuring a storage system to facilitate independent scaling of resources |
US10691567B2 (en) | 2016-06-03 | 2020-06-23 | Pure Storage, Inc. | Dynamically forming a failure domain in a storage system that includes a plurality of blades |
US11861188B2 (en) | 2016-07-19 | 2024-01-02 | Pure Storage, Inc. | System having modular accelerators |
US11706895B2 (en) | 2016-07-19 | 2023-07-18 | Pure Storage, Inc. | Independent scaling of compute resources and storage resources in a storage system |
US11449232B1 (en) | 2016-07-22 | 2022-09-20 | Pure Storage, Inc. | Optimal scheduling of flash operations |
US10768819B2 (en) | 2016-07-22 | 2020-09-08 | Pure Storage, Inc. | Hardware support for non-disruptive upgrades |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US10216420B1 (en) | 2016-07-24 | 2019-02-26 | Pure Storage, Inc. | Calibration of flash channels in SSD |
US11604690B2 (en) | 2016-07-24 | 2023-03-14 | Pure Storage, Inc. | Online failure span determination |
US11080155B2 (en) | 2016-07-24 | 2021-08-03 | Pure Storage, Inc. | Identifying error types among flash memory |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US11734169B2 (en) | 2016-07-26 | 2023-08-22 | Pure Storage, Inc. | Optimizing spool and memory space management |
US10366004B2 (en) | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11797212B2 (en) | 2016-07-26 | 2023-10-24 | Pure Storage, Inc. | Data migration for zoned drives |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US11955187B2 (en) | 2017-01-13 | 2024-04-09 | Pure Storage, Inc. | Refresh of differing capacity NAND |
US10979223B2 (en) | 2017-01-31 | 2021-04-13 | Pure Storage, Inc. | Separate encryption for a solid-state drive |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US11016667B1 (en) | 2017-04-05 | 2021-05-25 | Pure Storage, Inc. | Efficient mapping for LUNs in storage memory with holes in address space |
US10944671B2 (en) | 2017-04-27 | 2021-03-09 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US10516645B1 (en) | 2017-04-27 | 2019-12-24 | Pure Storage, Inc. | Address resolution broadcasting in a networked device |
US10141050B1 (en) | 2017-04-27 | 2018-11-27 | Pure Storage, Inc. | Page writes for triple level cell flash memory |
US11467913B1 (en) | 2017-06-07 | 2022-10-11 | Pure Storage, Inc. | Snapshots with crash consistency in a storage system |
US11782625B2 (en) | 2017-06-11 | 2023-10-10 | Pure Storage, Inc. | Heterogeneity supportive resiliency groups |
US11138103B1 (en) | 2017-06-11 | 2021-10-05 | Pure Storage, Inc. | Resiliency groups |
US11947814B2 (en) | 2017-06-11 | 2024-04-02 | Pure Storage, Inc. | Optimizing resiliency group formation stability |
US10425473B1 (en) | 2017-07-03 | 2019-09-24 | Pure Storage, Inc. | Stateful connection reset in a storage cluster with a stateless load balancer |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US10877827B2 (en) | 2017-09-15 | 2020-12-29 | Pure Storage, Inc. | Read voltage optimization |
US10210926B1 (en) | 2017-09-15 | 2019-02-19 | Pure Storage, Inc. | Tracking of optimum read voltage thresholds in nand flash devices |
US11024390B1 (en) | 2017-10-31 | 2021-06-01 | Pure Storage, Inc. | Overlapping RAID groups |
US10496330B1 (en) | 2017-10-31 | 2019-12-03 | Pure Storage, Inc. | Using flash storage devices with different sized erase blocks |
US10515701B1 (en) | 2017-10-31 | 2019-12-24 | Pure Storage, Inc. | Overlapping raid groups |
US10545687B1 (en) | 2017-10-31 | 2020-01-28 | Pure Storage, Inc. | Data rebuild when changing erase block sizes during drive replacement |
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 |
US10990566B1 (en) | 2017-11-20 | 2021-04-27 | Pure Storage, Inc. | Persistent file locks in a storage system |
US10719265B1 (en) | 2017-12-08 | 2020-07-21 | Pure Storage, Inc. | Centralized, quorum-aware handling of device reservation requests in a storage system |
US10929053B2 (en) | 2017-12-08 | 2021-02-23 | Pure Storage, Inc. | Safe destructive actions on drives |
US10929031B2 (en) | 2017-12-21 | 2021-02-23 | Pure Storage, Inc. | Maximizing data reduction in a partially encrypted volume |
US10733053B1 (en) | 2018-01-31 | 2020-08-04 | Pure Storage, Inc. | Disaster recovery for high-bandwidth distributed archives |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
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 |
US10931450B1 (en) | 2018-04-27 | 2021-02-23 | Pure Storage, Inc. | Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers |
US10853146B1 (en) | 2018-04-27 | 2020-12-01 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
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 |
US11438279B2 (en) | 2018-07-23 | 2022-09-06 | Pure Storage, Inc. | Non-disruptive conversion of a clustered service from single-chassis to multi-chassis |
US11520514B2 (en) | 2018-09-06 | 2022-12-06 | Pure Storage, Inc. | Optimized relocation of data based on data characteristics |
US11354058B2 (en) | 2018-09-06 | 2022-06-07 | Pure Storage, Inc. | Local relocation of data stored at a storage device of a storage system |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US11868309B2 (en) | 2018-09-06 | 2024-01-09 | Pure Storage, Inc. | Queue management for data relocation |
US10454498B1 (en) | 2018-10-18 | 2019-10-22 | Pure Storage, Inc. | Fully pipelined hardware engine design for fast and efficient inline lossless data compression |
US10976947B2 (en) | 2018-10-26 | 2021-04-13 | Pure Storage, Inc. | Dynamically selecting segment heights in a heterogeneous RAID group |
US11334254B2 (en) | 2019-03-29 | 2022-05-17 | Pure Storage, Inc. | Reliability based flash page sizing |
US11775189B2 (en) | 2019-04-03 | 2023-10-03 | Pure Storage, Inc. | Segment level heterogeneity |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
US11714572B2 (en) | 2019-06-19 | 2023-08-01 | Pure Storage, Inc. | Optimized data resiliency in a modular storage system |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US11893126B2 (en) | 2019-10-14 | 2024-02-06 | Pure Storage, Inc. | Data deletion for a multi-tenant environment |
US11847331B2 (en) | 2019-12-12 | 2023-12-19 | Pure Storage, Inc. | Budgeting open blocks of a storage unit based on power loss prevention |
US11704192B2 (en) | 2019-12-12 | 2023-07-18 | Pure Storage, Inc. | Budgeting open blocks based on power loss protection |
US11416144B2 (en) | 2019-12-12 | 2022-08-16 | Pure Storage, Inc. | Dynamic use of segment or zone power loss protection in a flash device |
US11188432B2 (en) | 2020-02-28 | 2021-11-30 | Pure Storage, Inc. | Data resiliency by partially deallocating data blocks of a storage device |
US11507297B2 (en) | 2020-04-15 | 2022-11-22 | Pure Storage, Inc. | Efficient management of optimal read levels for flash storage systems |
US11256587B2 (en) | 2020-04-17 | 2022-02-22 | Pure Storage, Inc. | Intelligent access to a storage device |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US11416338B2 (en) | 2020-04-24 | 2022-08-16 | Pure Storage, Inc. | Resiliency scheme to enhance storage performance |
US11768763B2 (en) | 2020-07-08 | 2023-09-26 | Pure Storage, Inc. | Flash secure erase |
CN112181866B (zh) * | 2020-08-27 | 2024-03-26 | 航天东方红卫星有限公司 | 一种基于卫星在轨有效载荷数据处理的数据传输分系统 |
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 |
US11409608B2 (en) * | 2020-12-29 | 2022-08-09 | Advanced Micro Devices, Inc. | Providing host-based error detection capabilities in a remote execution device |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
US11630593B2 (en) | 2021-03-12 | 2023-04-18 | Pure Storage, Inc. | Inline flash memory qualification in a storage system |
US11507597B2 (en) | 2021-03-31 | 2022-11-22 | Pure Storage, Inc. | Data replication to meet a recovery point objective |
US11892983B2 (en) | 2021-04-29 | 2024-02-06 | EMC IP Holding Company LLC | Methods and systems for seamless tiering in a distributed storage system |
US11740822B2 (en) * | 2021-04-29 | 2023-08-29 | EMC IP Holding Company LLC | Methods and systems for error detection and correction in a distributed storage system |
US11832410B2 (en) | 2021-09-14 | 2023-11-28 | Pure Storage, Inc. | Mechanical energy absorbing bracket apparatus |
CN115297071B (zh) * | 2022-07-15 | 2023-10-27 | 中国航空无线电电子研究所 | 一种arinc664交换机交换引擎对seu和mbu容错设计方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4584686A (en) * | 1983-12-22 | 1986-04-22 | Optical Storage International | Reed-Solomon error correction apparatus |
US6119262A (en) * | 1997-08-19 | 2000-09-12 | Chuen-Shen Bernard Shung | Method and apparatus for solving key equation polynomials in decoding error correction codes |
US5956743A (en) * | 1997-08-25 | 1999-09-21 | Bit Microsystems, Inc. | Transparent management at host interface of flash-memory overhead-bytes using flash-specific DMA having programmable processor-interrupt of high-level operations |
US6636901B2 (en) * | 1998-01-30 | 2003-10-21 | Object Technology Licensing Corp. | Object-oriented resource lock and entry register |
JP3975245B2 (ja) * | 1999-12-16 | 2007-09-12 | 株式会社ルネサステクノロジ | 記録再生装置および半導体メモリ |
US7398451B2 (en) * | 2001-08-09 | 2008-07-08 | Adaptive Networks, Inc. | Error correction process and mechanism |
US6920581B2 (en) * | 2002-01-02 | 2005-07-19 | Intel Corporation | Method and apparatus for functional redundancy check mode recovery |
TW567411B (en) * | 2002-09-09 | 2003-12-21 | Hon Hai Prec Ind Co Ltd | The method and apparatus of CRC code allocation in flash ROM |
US20040078747A1 (en) * | 2002-10-21 | 2004-04-22 | Miller David H. | Generalized forney algorithm circuit |
US7203828B2 (en) * | 2002-11-29 | 2007-04-10 | Sigmatel, Inc. | Use of NAND flash for hidden memory blocks to store an operating system program |
US20040153902A1 (en) * | 2003-01-21 | 2004-08-05 | Nexflash Technologies, Inc. | Serial flash integrated circuit having error detection and correction |
US6912610B2 (en) * | 2003-03-28 | 2005-06-28 | Emulex Design & Manufacturing Corporation | Hardware assisted firmware task scheduling and management |
US20070083697A1 (en) * | 2005-10-07 | 2007-04-12 | Microsoft Corporation | Flash memory management |
-
2006
- 2006-05-18 US US11/436,937 patent/US20070268905A1/en not_active Abandoned
-
2007
- 2007-03-14 WO PCT/US2007/006386 patent/WO2007136447A2/en active Application Filing
- 2007-03-14 CN CNA2007800171821A patent/CN101473308A/zh active Pending
- 2007-03-14 KR KR1020087027702A patent/KR20090028507A/ko not_active Application Discontinuation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8694873B2 (en) | 2011-05-02 | 2014-04-08 | Samsung Electronics Co., Ltd. | Memory system and error correction method |
US9197247B2 (en) | 2011-05-02 | 2015-11-24 | Samsung Electronics Co., Ltd. | Memory system and error correction method |
Also Published As
Publication number | Publication date |
---|---|
WO2007136447A3 (en) | 2008-11-20 |
CN101473308A (zh) | 2009-07-01 |
WO2007136447A2 (en) | 2007-11-29 |
US20070268905A1 (en) | 2007-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20090028507A (ko) | 비휘발성 메모리 에러 보정 시스템 및 방법 | |
US7844880B2 (en) | Error correction for flash memory | |
US8010875B2 (en) | Error correcting code with chip kill capability and power saving enhancement | |
US6976194B2 (en) | Memory/Transmission medium failure handling controller and method | |
US6973613B2 (en) | Error detection/correction code which detects and corrects component failure and which provides single bit error correction subsequent to component failure | |
US7761779B2 (en) | Access control apparatus, access control system, processor, access control method, memory access control apparatus, memory access control system, and memory access control method | |
US8468416B2 (en) | Combined group ECC protection and subgroup parity protection | |
US7900118B2 (en) | Flash memory system and method for controlling the same | |
US7761780B2 (en) | Method, apparatus, and system for protecting memory | |
US7231585B2 (en) | Error correction for flash memory | |
US20080282128A1 (en) | Method of Error Correction Code on Solid State Disk to Gain Data Security and Higher Performance | |
US7188296B1 (en) | ECC for component failures using Galois fields | |
US7587658B1 (en) | ECC encoding for uncorrectable errors | |
US20100241932A1 (en) | Error detector/corrector, memory controller, and semiconductor memory device | |
US20140006904A1 (en) | Encoding information in error correcting codes | |
US20040225944A1 (en) | Systems and methods for processing an error correction code word for storage in memory components | |
US20230236931A1 (en) | Instant write scheme with delayed parity/raid | |
US20150318871A1 (en) | Error correction with secondary memory | |
US11726665B1 (en) | Memory extension with error correction | |
CN111221746B (zh) | 数据储存系统与其相关方法 | |
US20220206901A1 (en) | Providing host-based error detection capabilities in a remote execution device | |
JP6342013B2 (ja) | 不揮発性メモリ・アレイを含むデータ・ストレージ・システムを動作させるための方法、システム及びコンピュータ・プログラム | |
US8365055B2 (en) | High performance cache directory error correction code | |
US9400715B1 (en) | System and method for interconnecting storage elements | |
JP2006323434A (ja) | データ処理装置及びそのメモリ訂正方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |