KR102057371B1 - 저장 시스템에서 오류 정정 인코딩된 데이터의 리던던시 - Google Patents

저장 시스템에서 오류 정정 인코딩된 데이터의 리던던시 Download PDF

Info

Publication number
KR102057371B1
KR102057371B1 KR1020170030458A KR20170030458A KR102057371B1 KR 102057371 B1 KR102057371 B1 KR 102057371B1 KR 1020170030458 A KR1020170030458 A KR 1020170030458A KR 20170030458 A KR20170030458 A KR 20170030458A KR 102057371 B1 KR102057371 B1 KR 102057371B1
Authority
KR
South Korea
Prior art keywords
codewords
flash memory
data
redundancy
memory blocks
Prior art date
Application number
KR1020170030458A
Other languages
English (en)
Other versions
KR20170106237A (ko
Inventor
리차드 데이비드 바른트
마지드 네르마티 아나라키
Original Assignee
웨스턴 디지털 테크놀로지스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 웨스턴 디지털 테크놀로지스, 인코포레이티드 filed Critical 웨스턴 디지털 테크놀로지스, 인코포레이티드
Publication of KR20170106237A publication Critical patent/KR20170106237A/ko
Application granted granted Critical
Publication of KR102057371B1 publication Critical patent/KR102057371B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0706Error 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/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0706Error 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/073Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems

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)

Abstract

오류 정정 인코딩된 데이터의 리던던시를 제공하는 디바이스는 적어도 하나의 프로세서 회로를 포함한다. 적어도 하나의 프로세서 회로는 상응하는 코드워드들을 생성하도록 데이터 아이템들 상에서 오류 정정 인코딩을 수행하도록 구성되며, 데이터 아이템들 중 적어도 하나는 데이터 아이템들 중 적어도 다른 하나와 상이한 길이를 가질 수 있고 코드워드들 각각은 동일한 길이이다. 적어도 하나의 프로세서 회로는 코드워드들에 적어도 부분적으로 기반하여 리던던시 데이터 아이템을 생성하도록 추가로 구성된다. 적어도 하나의 프로세서 회로는 적어도 하나의 플래시 메모리 회로의 개별적 블록들에 코드워드들 및 리던던시 데이터 아이템을 기록하도록 추가로 구성된다.

Description

저장 시스템에서 오류 정정 인코딩된 데이터의 리던던시{REDUNDANCY OF ERROR CORRECTION ENCODED DATA IN A STORAGE SYSTEM}
본 설명은 일반적으로 오류 정정 인코딩된 데이터의 리던던시를 제공하는 것을 포함하는 오류 정정 코딩에 관한 것이다.
플래시 메모리 시스템에서, 복수 배열 독립 디스크(RAID) 기법은 데이터 리던던시 또는 성능 개선을 위해 다수의 플래시 구성 요소를 단일 논리 유닛, 예를 들어, 스트라이프 또는 리던던시 스트라이프로 결합하는데 사용될 수 있다. 예를 들어, 배타적 논리합 작동이 그 다음 부가 블록에 기록되는 리던던시 데이터를 생성하기 위해 블록의 세트에 기록되는 코드워드 상에서 수행될 수 있다. 코드워드들 중 하나가 이후에 손실되거나 적절하게 디코딩될 수 없으면, 손실된 코드워드는 리던던시 데이터와 함께 (다른 코드워드들이 정확하게 디코딩될 수 있다고 가정하고) 다른 코드워드들을 사용하여 복구될 수 있다.
본 논제 기술의 일정 특징들이 첨부된 청구항들에 제시된다. 그러나 설명을 위해, 본 논제 기술의 여러 개의 실시예가 이하의 도면들에 제시된다.
도 1은 하나 이상의 구현에 따른 오류 정정 인코딩된 데이터의 리던던시를 제공할 수 있는 예시적 플래시 메모리 시스템을 도시한다.
도 2는 하나 이상의 구현에 따른 오류 정정 인코딩된 데이터의 리던던시를 제공하는 시스템의 예시적 인코딩 프로세스의 흐름도를 도시한다.
도 3은 하나 이상의 구현에 따른 오류 정정 인코딩된 데이터의 리던던시를 제공하는 시스템의 예시적 디코딩 프로세스의 흐름도를 도시한다.
도 4는 하나 이상의 구현에 따른 오류 정정 인코딩된 데이터의 리던던시를 제공하는 시스템의 예시적 리던던시 스트라이프를 도시한다.
도 5는 하나 이상의 구현에 따른 오류 정정 인코딩된 데이터의 리던던시에 대한 시스템에서의 반전된 로그 우도율(LLR)을 나타내는 전압 분포들의 세트를 도시한다.
도 6은 하나 이상의 구현에 따른 오류 정정 인코딩된 데이터의 리던던시에 대한 시스템에서의 반전된 로그 우도율(LLR)을 나타내는 전압 분포들의 세트를 도시한다.
도 7은 하나 이상의 구현에 따른 오류 정정 인코딩된 데이터의 리던던시에 대한 시스템에서의 높은 페이지 및 낮은 페이지 LLR 계산들을 나타내는 전압 분포들의 세트를 도시한다.
도 8은 하나 이상의 구현에 따른 인코딩되지 않은 데이터의 리던던시를 제공하는 시스템의 예시적 리던던시 스트라이프를 도시한다.
이하에 제시되는 상세한 설명은 본 논제 기술의 다양한 구성을 설명하기 위한 것이며 본 논제 기술이 실행될 수 있는 구성들만을 나타내려는 것이 아니다. 첨부 도면들은 본원에 포함되고 상세한 설명의 일부를 구성한다. 상세한 설명은 본 논제 기술의 철저한 이해를 제공하기 위해 구체적 상세들을 포함한다. 그러나, 본 논제 기술은 본원에 제시되는 구체적 상세들에 제한되지 않고 하나 이상의 구현을 사용하여 실행될 수 있다. 하나 이상의 경우에, 구조들 및 구성 요소들은 본 논제 기술의 개념들을 모호하게 하는 것을 피하기 위해 블록도 형태로 도시된다.
오류 정정 인코딩된 데이터의 리던던시를 제공하는 본 논제 시스템에서, 플래시 메모리의 블록들의 세트에 기록될 데이터 아이템들은 우선 저밀도 패리티 체크(LDPC) ECC와 같은 오류 정정 코딩(ECC)을 사용하여 코드워드들로 인코딩된다. 각각의 코드워드의 길이는 동일하지만; 각각의 코드워드를 생성하는데 사용되는 코드율은, 예를 들어, 각각의 코드워드가 기록되고 있는 블록의 무결성에 따라 다를 수 있다(또는 동일할 수 있다). 예를 들어, 블록의 무결성이 높으면(예를 들어, 비트 오류들에 보다 영향을 받지 않으면), 코드율은 높을 수 있고, 블록의 무결성이 낮으면(예를 들어, 비트 오류들에 보다 영향을 받기 쉬우면), 코드율은 낮을 수 있다.
본 논제 시스템에서, 인코딩된 데이터 아이템들,, 예를 들어, 코드워드들의 리던던시를 제공하기 위해, 2진 작동, 예를 들어, 배타적 논리합 2진 작동이 리던던시 데이터(또는 패리티 데이터)를 생성하도록 인코딩된 데이터 아이템들 상에서 수행된다. 코드워드들 각각이 동일한 길이이므로, 본 논제 시스템은 임의의 패딩, 예를 들어, 제로 패딩을 코드워드들 중 임의의 것에 추가할 필요 없이 리던던시 데이터를 생성하여, 프로세싱 및 전력 리소스들을 보존할 수 있다. 하나 이상의 구현에서, 코드워드들 및 생성된 리던던시 데이터는 집합적으로 스트라이프 또는 리던던시 스트라이프로 지칭될 수 있다. 코드워드들 및 리던던시 데이터 각각은 플래시 메모리의 개별적 블록들에 기록될 수 있다. 본 논제 시스템은 다른 코드워드들이 적절하게 디코딩될 수 있다고 가정하고, 리던던시 데이터 및 다른 코드워드들에 적어도 기반하여 코드워드들 중 적어도 하나를 이후에 복구할 수 있다. 리던던시 데이터가 코드워드로 인코딩되지 않으므로, 리던던시 데이터는 디코딩될 필요가 없어, 프로세싱 및 전력 리소스들을 추가로 보존한다.
도 1은 하나 이상의 구현에 따른 오류 정정 인코딩된 데이터의 리던던시를 제공하는 시스템을 구현할 수 있는 예시적 플래시 메모리 시스템(100)을 도시한다. 그러나, 도시된 구성 요소들 모두가 필요하지 않을 수도 있고, 하나 이상의 구현은 도면에 도시되지 않은 부가 구성 요소들을 포함할 수 있다. 구성 요소들의 구성 및 타입의 변화들이 본원에 제시되는 청구항들의 사상 또는 범위로부터 벗어나지 않고 이루어질 수 있다. 부가 구성 요소들, 상이한 구성 요소들 또는 더 소수의 구성 요소가 제공될 수 있다.
시스템(100)은 플래시 메모리 디바이스(110) 및 호스트 디바이스(130)를 포함한다. 플래시 메모리 디바이스(110)는 하나 이상의 플래시 메모리 회로(112A 내지 112N), 제어기(114), 랜덤 액세스 메모리(RAM)(122) 및 인터페이스(124)를 포함한다. 제어기(114)는 ECC 디코더들과 같은 하나 이상의 디코더(116) 및 ECC 인코더들과 같은 하나 이상의 인코더(118)를 포함한다. 하나 이상의 디코더(116) 및/또는 하나 이상의 인코더(118)는 제어기(114)의 하나 이상의 전용 회로일 수 있고/있거나 제어기(114) 상에서 실행하는 펌웨어를 통하여 구현될 수 있다.
플래시 메모리 디바이스(110)의 인터페이스(124)는 플래시 메모리 디바이스(110)를 호스트 디바이스(130)에 결합시킨다. 인터페이스(124)는 개인용 컴퓨터 메모리 카드 국제 협회(PCMCIA) 인터페이스, 직렬 AT 부착(SATA) 인터페이스, 범용 직렬 버스(USB) 인터페이스와 같은 유선 인터페이스일 수 거나, 또는 일반적으로 어떠한 유선 인터페이스여도 된다. 대안적으로 또는 부가적으로, 인터페이스(124)는 무선 SATA, 블루투스와 같은 무선 인터페이스일 수 거나, 또는 일반적으로 어떠한 무선 인터페이스여도 된다.
제어기(114)는 플래시 메모리 회로들(112A 내지 112N)로부터 데이터를 판독하고, 이것들로 데이터를 기록하도록 작동 가능하다. 플래시 메모리 회로들(112A 내지 112N)은 NAND 블록들 및/또는 NOR 블록들과 같은 하나 이상의 블록을 각각 포함할 수 있다. 제어기(114)는 플래시 메모리 회로들(112A 내지 112N)로부터/로 데이터를 판독하는 것/기록하는 것을 돕기 위해 RAM(122)을 활용할 수 있다. 예를 들어, RAM(122)은 속도 제어를 위한 버퍼로서 사용될 수 있거나, 그렇지 않으면 플래시 메모리 회로들(112A 내지 112N)로부터/로 데이터를 판독/기록하기 위해 제어기(114)에 의해 활용되는 정보(예를 들어, 변수, 논리적 대 물리적 어드레스 매핑 테이블, 내구성/보유 데이터, 설정 등)를 저장하는데 사용될 수 있다. RAM(122)이 휘발성 메모리일 수 있으므로, 제어기(114)는 플래시 메모리 회로들(112A 내지 112N) 중 하나 이상에 정보를 영속적으로 저장할 수 있다. 플래시 메모리 디바이스(110)가 파워 온될 때, 제어기(114)는 하나 이상의 플래시 메모리 회로(112A 내지 112N)로부터 정보를 회수하고 정보를 RAM(122)에 저장할 수 있다.
제어기(114)는 플래시 메모리 회로들(112A 내지 112N)로부터/로 데이터를 판독하는 것 및/또는 기록하는 것과 함께 보안 기법(예를 들어, 암호화), 오류 정정 코딩 기법(예를 들어, LDPC), 압축 기법, 리던던시 기법(예를 들어, 복수 배열 독립 디스크(RAID) 기법) 등과 같은 하나 이상의 알고리즘 또는 기법을 구현할 수 있다. 예를 들어, 제어기(114)는 플래시 메모리 회로들(112A 내지 112N)에 기록되는 데이터에 대한 보호를 제공하기 위해 리던던시 기법들과 함께 오류 정정 코딩을 사용할 수 있다. 이러한 점에서, 제어기(114)의 인코더(118)는 제어기(114)에 의해 지시되는 코드율로 호스트 디바이스(130)로부터 수신되는 데이터 아이템들의 세트를 코드워드들의 세트로 인코딩할 수 있다. 제어기(114)는 그 다음 코드워드들의 세트로부터 리던던시 데이터를 생성하고 플래시 메모리 회로들(112A 내지 112N)의 개별적 블록들에 각각의 코드워드 및 리던던시 데이터를 기록한다. 하나 이상의 구현에서, 제어기(114)는 각각의 코드워드 및 리던던시 데이터를 개별적 플래시 메모리 회로들(112A 내지 112N)에 기록하여, 플래시 메모리 회로들(112A 내지 112N) 중 임의의 하나의 고장이 데이터 손실을 야기하지 않는다. 인코딩된 데이터 아이템들로부터 리던던시 데이터를 생성하는 예시적 프로세스가 도 2와 관련하여 이하에 추가로 논의된다.
플래시 메모리 회로들(112A 내지 112N)의 무결성이 시간이 지남에 따른 사용으로 저하되어, 플래시 메모리 회로들(112A 내지 112N)로부터 판독되는 데이터와 연관된 원시 비트 오류율(RBER)을 증가시키므로, 데이터 아이템들 각각을 인코딩하기 위해 인코더(118)에 의해 사용되는 코드율은 인코딩된 데이터 아이템들이 기록되고 있는 블록들의 무결성에 따라 다를 수 있다. 예를 들어, 플래시 메모리 회로들(112A 내지 112N)은 최대수의 데이터 전송 작동, 예를 들어, 프로그램-소거(P/E) 사이클들 및/또는 판독/기록 작동들을 신뢰 가능하게 수행하도록 설계될 수 있고, 플래시 메모리 회로들(112A 내지 112N)의 무결성은 사이클 카운트가 증가하고/하거나 플래시 메모리 회로들(112A 내지 112N)이 최대수의 판독 및/또는 기록 작동에 접근하거나 이것들을 뛰어 넘음에 따라, 저하될 수 있다. 시간이 지남에 따른/사용에 따른 이러한 저하를 처리하기 위해, 제어기(114)는 플래시 메모리 회로들(112A 내지 112N)의 무결성이 저하됨에 따라, 인코더(118)에 의해 사용되는 코드율이 감소하여, 데이터에 대한 부가 보호를 제공하는 가변 코드율 오류 정정 코딩을 활용한다.
주어진 블록에 데이터를 기록하는데 사용할 적절한 코드율을 결정하기 위해, 제어기(114)는 플래시 메모리 회로들(112A 내지 112N)의 블록들의 무결성을 모니터링할 수 있다. 모니터링은, 예를 들어, 플래시 메모리 회로들(112A 내지 112N)로부터 판독되는 데이터와 연관된 RBER, 및/또는 플래시 메모리 회로들(112A 내지 112N)의 기대 수명, 예를 들어, 플래시 메모리 회로들(112A 내지 112N)의 블록들이 신뢰 가능하게 수행하도록 설계되는 최대수의 판독 및/또는 기록에 관한 선험 경험적 데이터에 기반할 수 있다. 제어기(114)가 플래시 메모리 회로들(112A 내지 112N)의 블록들의 무결성이 임계량 미만으로 저하되었다고 판단할 때, 제어기(114)는 오류 정정 코딩을 수행하기 위해 인코더(118)에 의해 사용되는 코드율을 변경할(예를 들어 감소시킬) 수 있다. 하나 이상의 구현에서, 제어기(114)는 상이한 RBER 임계치들과 상이한 코드율들 사이의 연관성들을 포함하는 테이블을, 예를 들어, RAM(122)에 저장할 수 있다. 이러한 방식으로, 제어기(114)는 모니터링된 RBER이 변화됨에 따라, 코드율을 순응적으로 변경할 수 있다.
제어기(114)가 플래시 메모리 회로들(112A 내지 112N)로부터 코드워드들 및 리던던시 데이터를 이후에 판독할 때, 제어기(114)의 디코더(116)는 도 3에 대하여 이하에 추가로 논의되는 바와 같이, 다른 코드워드들이 디코딩 가능하다고 가정하고, 리던던시 데이터 및 다른 코드워드들을 사용하여 적어도 하나의 손실된 코드워드를 복구할 수 있다. 제어기(114)는 그 다음 디코딩된 코드워드들로부터 데이터 아이템들을 얻고 데이터 아이템들을 인터페이스(124)를 통하여 호스트 디바이스(130)에 제공한다.
하나 이상의 구현에서, 플래시 메모리 회로들(112A 내지 112N) 중 하나 이상, 제어기(114), 디코더(116), 인코더(118), RAM(122) 및/또는 인터페이스(124), 및/또는 이들의 하나 이상의 부분은 소프트웨어(예를 들어, 펌웨어, 서브루틴들 및/또는 코드)로 구현될 수 있고/있거나, 하드웨어(예를 들어, 주문형 반도체(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA), 프로그램 가능 로직 디바이스(PLD), 제어기, 상태 기계, 게이티드 로직, 이산 하드웨어 구성 요소들 및/또는 임의의 다른 적절한 디바이스)로 구현될 수 있고/있거나, 둘 다의 조합일 수 있다.
도 2는 하나 이상의 구현에 따른 오류 정정 인코딩된 데이터의 리던던시를 제공하는 시스템의 예시적 인코딩 프로세스(200)의 흐름도를 도시한다. 설명하기 위한 목적으로, 예시적 프로세스(200)를 도 1의 제어기(114) 및 인코더(118)를 참조하여 본원에 설명하지만; 예시적 프로세스(200)는 도 1의 제어기(114) 및/또는 인코더(118)에 제한되지 않고, 예시적 프로세스(200)의 하나 이상의 블록은 제어기(114)의 하나 이상의 다른 구성 요소에 의해 수행될 수 있다. 추가로 설명하기 위한 목적으로, 예시적 프로세스(200)의 블록들을 일련으로 또는 연속적으로 일어나는 것으로 본원에 설명한다. 그러나, 예시적 프로세스(200)의 다수의 블록은 동시에 일어날 수 있다. 게다가, 예시적 프로세스(200)의 블록들은 도시된 순서로 수행될 필요가 없고/없거나 예시적 프로세스(200)의 블록들 중 하나 이상은 수행될 필요가 없다.
제어기(114)는 호스트 디바이스(130)로부터 인터페이스(124)를 통하여 데이터의 스트림과 같은 데이터를 수신하며, 데이터는 플래시 메모리 회로들(112A 내지 112N) 중 하나 이상에 기록될 것이다(202). 제어기(114)는 RAM(122)에 수신된 데이터의 일부 또는 모두를 버퍼링할 수 있다. 제어기(114)는 데이터를 기록할 블록들의 세트를 식별한다(204). 플래시 메모리 회로들(112A 내지 112N)의 블록들이 시간이 지남에 따른 사용으로 열화되므로, 제어기(114)는, 예를 들어, 블록들이 플래시 메모리 회로들(112A 내지 112N)에 걸쳐 실질적으로 균일하게 열화되는 것을 보장하기 위해 웨어 레벨링 또는 웨어 밸런싱 체계를 구현할 수 있다. 따라서, 제어기(114)는, 예를 들어, 플래시 메모리 회로들(112A 내지 112N)에서의 평균 블록보다 더 적은 웨어를 갖는 하나 이상의 이용 가능한 블록을 식별할 수 있다. 블록들의 세트에서의 블록의 수는 제어기(114)에 의해 구현되는 RAID 기법의 스트라이프 크기에 의존할 수 있다. 예를 들어, 32의 스트라이프 크기의 경우, 데이터를 저장하는데 사용되는 블록들의 세트에서의 31개의 블록 그리고 리던던시 데이터를 저장하는데 사용되는 1개의 부가 블록이 있을 수 있다.
제어기(114)는, 예를 들어, 식별된 블록들의 무결성에 적어도 부분적으로 기반하여 식별된 블록들과 연관된 코드율들을 결정한다(206). 하나 이상의 구현에서, 플래시 메모리 디바이스(110)가 파워 온될 때, 또는 그 후에 언제든, 예를 들어, 그 후에 주기적으로, 제어기(114)는 하나 이상의 플래시 메모리 회로(112A 내지 112N) 및/또는 하나 이상의 플래시 메모리 회로(112A 내지 112N)의 개별 블록들과 연관된 비트 오류율을 결정한다. 제어기(114)는 식별된 블록들 및/또는 식별된 블록들을 포함하는 하나 이상의 플래시 메모리 회로(112A 내지 112N)의 비트 오류율들에 적어도 부분적으로 기반하여 식별된 블록들과 연관된 코드율들을 결정할 수 있다. 하나 이상의 구현에서, 스트라이프 크기는 플래시 메모리 디바이스(110)에서의 플래시 메모리 회로(112A 내지 112N)의 수에 부분적으로 기반할 수 있다.
제어기(114)는 블록들과 연관된 코드율들에 적어도 부분적으로 기반하여 수신된 데이터를 데이터 아이템들로 파싱(parsing)한다(208). 코드율이 블록마다 달라, 각각의 블록에 저장될 수 있는 상이한 양의 데이터를 야기할 수 있으므로, 제어기(114)는 수신된 데이터를 다양한 길이들의 데이터 아이템들로 분할할 수 있다. 수신된 데이터 스트림과 같은 수신된 데이터로부터 파싱되는 예시적 데이터 아이템들은 도 4 및 도 8과 관련하여 이하에 추가로 논의된다. 제어기(114)의 인코더(118)는 그 다음 인코딩된 데이터 아이템들, 예를 들어, 코드워드들을 생성하도록 데이터 아이템들 상에서 저밀도 패리티 체크 오류 정정 코딩과 같은 오류 정정 코딩을 수행한다(210).
데이터 아이템들을 코드워드들로 인코딩한 후에, 제어기(114)는, 예를 들어, 코드워드들 상에서 비트와이즈 배타적 논리합(XOR) 작동을 수행함으로써 코드워드들에 적어도 부분적으로 기반하여 리던던시 데이터를 생성한다(212). 코드워드들이 모두 동일한 길이로 인코딩되므로, 제어기(114)는 제로 패딩과 같은 임의의 패딩을 코드워드들 중 임의의 것에 추가할 필요 없이 리던던시 데이터를 생성하여, 프로세싱 및 전력 리소스들을 보존할 수 있다. 하나 이상의 구현에서, 리던던시 데이터(P)는 이하의 식 1을 사용하여 결정될 수 있으며, 여기서, Ci는 코드워드들을 나타낸다.
Figure 112017024000772-pat00001
(식 1)
제어기(114)는 플래시 메모리 회로들(112A 내지 112N)의 연관된 블록들로 코드워드들을 기록한다(214). 제어기(114)는 또한 플래시 메모리 회로들(112A 내지 112N)의 부가 블록으로 리던던시 데이터를 기록한다(216). 리던던시 데이터가 유효한 코드워드가 아니므로, 예를 들어, 오류 정정 코딩을 사용하여 인코딩되지 않으므로, 리던던시 데이터는 오류들에 보다 영향을 받기 쉬울 수 있다. 따라서, 제어기(114)는 최고 무결성을 갖고/갖거나 코드워드들을 저장하는 블록들 중 임의의 것의 최고 무결성 이상의 무결성을 갖는 블록에 리던던시 데이터를 기록할 수 있다.
도 3은 하나 이상의 구현에 따른 오류 정정 인코딩된 데이터의 리던던시를 제공하는 시스템의 예시적 디코딩 프로세스(300)의 흐름도를 도시한다. 설명하기 위한 목적으로, 예시적 프로세스(300)를 도 1의 제어기(114) 및 디코더(116)를 참조하여 본원에 설명하지만; 예시적 프로세스(300)는 도 1의 제어기(114) 및/또는 디코더(116)에 제한되지 않고, 예시적 프로세스(300)의 하나 이상의 블록은 제어기(114)의 하나 이상의 다른 구성 요소에 의해 수행될 수 있다. 추가로 설명하기 위한 목적으로, 예시적 프로세스(300)의 블록들을 일련으로 또는 연속적으로 일어나는 것으로 본원에 설명한다. 그러나, 예시적 프로세스(300)의 다수의 블록은 동시에 일어날 수 있다. 게다가, 예시적 프로세스(300)의 블록들은 도시된 순서로 수행될 필요가 없고/없거나 예시적 프로세스(300)의 블록들 중 하나 이상은 수행될 필요가 없다.
제어기(114)는 플래시 메모리 회로들(112A 내지 112N) 중 하나 이상에 저장되는 하나 이상의 데이터 아이템에 대한 호스트 디바이스(130)로부터의 요청을, 예를 들어, 인터페이스(124)를 통하여 수신한다(302). 제어기(114)는 플래시 메모리 회로들(112A 내지 112N) 중 하나 이상의 블록들로부터 요청된 데이터 아이템들과 연관된 코드워드들의 세트를 회수한다(304). 제어기(114)의 디코더(116)는 회수된 코드워드들을 디코딩하고/하거나 정정하기 위해 오류 정정 디코딩을 수행한다(306). 제어기(114)는 코드워드들 중 임의의 것이 블록들로부터 적절하게 판독될 수 없고/없거나 오류 정정 디코딩을 사용하여 적절하게 디코딩될/정정될 수 없는지 여부를 판단한다(308). 제어기(114)가 코드워드들 모두가 적절하게 판독되고 디코딩되었다고/정정되었다고 판단하면, 제어기(114)는 정정된 코드워드들로부터 데이터 아이템들을 얻고(318), 예를 들어, 인터페이스(124)를 통해 호스트 디바이스(130)로 데이터 아이템들을 제공한다(320).
제어기(114)가 코드워드들 중 하나가 연관된 블록으로부터 적절하게 판독되지 않았고/않았거나 적절하게 디코딩되지/정정되지 않았다고 판단하면, 제어기(114)는 플래시 메모리 회로들(112A 내지 112N) 중 하나의 다른 블록으로부터 디코딩 불가능한 코드워드와 연관된 리던던시 데이터를 회수한다(310). 하나 이상의 구현에서, 제어기(114)가 회수된 리던던시 데이터과 연관된 코드워드들의 세트의 각각의 코드워드(예를 들어, 리던던시 스트라이프의 각각의 코드워드)를 이미 회수하지 않았으면, 리던던시 스트라이프의 임의의 남은 코드워드를 제어기(114)가 회수하고, 디코더(116)가 디코딩한다. 리던던시 데이터가 인코딩된 코드워드가 아니므로, 제어기(114)의 디코더(116)는 리던던시 데이터를 디코딩하려/정정하려 시도하지 않는다.
제어기(114)는 디코딩 불가능한 코드워드를 복구하려 시도하기 위해 하드 디코딩을 수행한 후 리던던시 데이터 및 적절하게 판독되고 디코딩되었던/정정되었던 다른 코드워드들을 사용함으로써 디코딩 불가능한 코드워드를 복구하려 시도한다(312). 예를 들어, 제어기(114)는 적절하게 판독되고/되거나 디코딩되지/정정되지 않았을 수 있는 코드워드를 복구하려 시도하기 위해 다른 코드워드들 및 리던던시 데이터 상에서 XOR 작동을 수행할 수 있다.
하나 이상의 구현에서, 적절하게 판독되고/되거나 디코딩될 수 없는 코드워드는 Ck로 나타내어질 수 있고, 다른 정정된 코드워드들은 Ci로 나타내어질 수 있고, 리던던시 데이터는 P로 나타내어질 수 있다. 이러한 경우에, 추정된 Ck, 예를 들어, Ck’가 이하의 식 2를 사용하여 얻어질 수 있고 그 다음 코드워드(Ck)를 얻도록 디코딩될/정정될 수 있다.
Figure 112017024000772-pat00002
(식 2)
식 2에서, Cs
Figure 112017024000772-pat00003
으로서 결정될 수 있는 오류 없는 항이고, P’는
Figure 112017024000772-pat00004
으로서 결정될 수 있으며, 여기서, P는 플래시 메모리 회로에 기록되었던 정확한 리던던시 데이터이고 e는 플래시 메모리 회로에서의 저장에 기인하여 P에 추가되는 오류이다. 리던던시 데이터(P)가 유효한 코드워드가 아니므로, P로부터 생성되는 임의의 오류가 코드워드(Ck)에 추가될 것이다. 따라서, Ck가 가능한 코드율들 중 임의의 것을 가질 수 있으므로, Ck가 복구될 수 있는 것을 보장하기 위해, 리던던시 데이터(P)는 가장 이용 가능한 블록, 예를 들어, 최고 무결성을 갖는 이용 가능한 블록, 그리고/또는 적어도 리던던시 데이터와 연관된 코드워드들을 저장하는 블록들만큼 높은 무결성을 갖는 이용 가능한 블록에 기록되어야 한다. 이러한 방식으로, Ck에 추가되는 P에 생성되는 임의의 오류는 Ck의 정정 능력을 초과하지 않을 것이다. 더욱이 일부 경우에, Ck는 오류들이 가장 이용 가능한 블록에 저장되는 P에서 생성될 때, 더 낮은 코드율로 인코딩되어, 더 양호한 성능/더 적은 수의 반복을 야기할 수 있다.
제어기(114)가 코드워드가 하드 디코딩을 사용하여 복구 가능하다고 판단하면(314), 제어기(114)는 정정된 코드워드들로부터 데이터 아이템들을 얻고(318), 예를 들어, 인터페이스(124)를 통해 호스트 디바이스(130)로 데이터 아이템들을 제공한다(320). 제어기(114)가 코드워드가 하드 디코딩을 사용하여 복구 가능하지 않다고 판단하면(314), 제어기(114)의 디코더(116)는 디코딩 불가능한 코드워드를 복구하려 시도하기 위해 소프트 디코딩을 수행하고 리던던시 데이터 및 디코딩된/정정된 코드워드들을 사용하여 코드워드를 복구하려 시도한다(316).
소프트 디코딩에서, 디코더(116)는 로그 우도율(LLR)값들을 생성하기 위해 리던던시 데이터(P)를 포함하는 블록을 다수 회 판독한다. LLR 값들은 리던던시 데이터(P)와 관련되는 데이터 및/또는 테이블들에 기반하여 계산될 수 있다. 게다가, Ck에 상응하는 LLR 값들은 또한, 예를 들어, 이하의 식 3 및/또는 식 4를 사용하여 P에 상응하는 LLR 값들로부터 계산되며, 식 4는 식 3의 요소들의 재그룹화이다.
Figure 112017024000772-pat00005
(식 3)
Figure 112017024000772-pat00006
(식 4)
식 3에서, de는 판독된 셀 전압의 이상적 위치(예를 들어, 분포들의 중심)까지의 판독된 셀 전압의 거리이다. 리던던시(또는 패리티) 데이터(P)에서의 각각의 비트(i)의 경우, LLR 값(LLRi p)은 이하의 식 5을 사용하여 계산된다.
Figure 112017024000772-pat00007
(식 5)
de가 식 3 및 식 4 둘 다에서 동일한 성분이므로, 분포들은 동일하게 남는다. 그러나, Cs=1일 때, 분포들은 반전되며, 이는 이하의 식 6 및 식 7에 도시된 바와 같이, 그리고 도 5에 대하여 이하에 추가로 논의되는 바와 같이, Pi=1에 대한 상응하는 분포가 Pi=0과 관련될 것이고 그 반대도 그렇다는 것을 의미한다.
Figure 112017024000772-pat00008
(식 6)
Figure 112017024000772-pat00009
(식 7)
하나 이상의 구현에서, 플래시 메모리 회로들(112A 내지 112N) 중 하나 이상은 다중 레벨 셀들(MLCs)일 수 있고/있거나 이것들을 포함할 수 있다. MLC 플래시의 경우, 더 높은 페이지 및 더 낮은 페이지 LLR들이 계산되고 그 다음
Figure 112017024000772-pat00010
의 값에 기반하여, 계산된 LLR의 부호는 Ck의 코드로 LLR을 전환시키기 위해 플립될 필요가 있을 수 있다. 이하에 추가로 논의되는 도 6 및 도 7은 Cs i=1일 때의 더 높은/더 낮은 페이지 분포 반전을 도시한다. 모든 경우에, Cs i=1일 때, 상응하는 비트에 대해 계산된 LLR의 부호는 플립될 것이다. Ck로부터의 데이터 아이템은 얻어지거나 반전된 LLR들로의 코드워드들의 성공적 디코딩 후에 복구되고(318), 데이터 아이템들은 그 다음 호스트 디바이스(130)로 제공된다(320).
도 4는 하나 이상의 구현에 따른 오류 정정 인코딩된 데이터의 리던던시를 제공하는 시스템의 예시적 리던던시 스트라이프(400)를 도시한다. 그러나, 도시된 구성 요소들 모두가 필요할 수 있는 것은 아니고, 하나 이상의 구현은 도면에 도시되지 않은 부가 구성 요소들을 포함할 수 있다. 구성 요소들의 구성 및 타입의 변화들이 본원에 제시되는 청구항들의 사상 또는 범위로부터 벗어나지 않고 이루어질 수 있다. 부가 구성 요소들, 상이한 구성 요소들 또는 더 소수의 구성 요소가 제공될 수 있다.
예시적 리던던시 스트라이프(400)는 다수의 코드워드(410A 내지 410N) 및 리던던시(또는 패리티) 데이터(420)를 포함한다. 예시적 리던던시 스트라이프(400)에서, 리던던시 데이터(420)는 수신된 데이터가 코드워드들(410A 내지 410N)로 인코딩된 후에 생성된다. 코드워드들(410A 내지 410N) 및 리던던시 데이터(420)는 플래시 메모리 회로들(112A 내지 112N)의 개별적 블록들에 각각 기록된다. 하나 이상의 구현에서, 코드워드들(410A 내지 410N) 및 리던던시 데이터(420) 각각은 개별적 플래시 메모리 회로들(112A 내지 112N)의 개별적 블록들 상에 저장될 수 있어, 플래시 메모리 회로들(112A 내지 112N) 중 임의의 하나의 고장이 데이터 손실을 야기하지 않는다.
코드워드들(410A 내지 410N)은 데이터 부분(412A 내지 412N)(예를 들어, 호스트 디바이스(130)로부터 수신되는 파싱된 데이터, 및 패리티 부분(414A 내지 414N)을 각각 포함할 수 있다. 코드워드들이 각각 상이한 코드율들과 연관될 수 있으므로, 데이터 부분들(412A 내지 412N) 중 하나 이상 및/또는 패리티 부분들(414A 내지 414N) 중 하나 이상의 길이들은 다를 수 있다. 그러나, 코드워드들(410A 내지 410N) 각각은 동일한 코드워드 길이를 갖는다. 리던던시 데이터(420)가 오류 정정 코딩을 사용하여 인코딩되지 않으므로, 리던던시 데이터(420)는 개별적 데이터 및 패리티 부분들을 포함하지 않는다.
도 5는 하나 이상의 구현에 따른 오류 정정 인코딩된 데이터의 리던던시에 대한 시스템에서의 반전된 로그 우도율(LLR)을 나타내는 전압 분포들(502, 504)의 세트를 도시한다. 그러나, 도시된 구성 요소들 모두가 필요하지 않을 수도 있고, 하나 이상의 구현은 도면에 도시되지 않은 부가 구성 요소들을 포함할 수 있다. 구성 요소들의 구성 및 타입의 변화들이 본원에 제시되는 청구항들의 사상 또는 범위로부터 벗어나지 않고 이루어질 수 있다. 부가 구성 요소들, 상이한 구성 요소들 또는 더 소수의 구성 요소가 제공될 수 있다.
제1 전압 분포들(502)은 정상적 전압 분포들인 반면에, 제2 전압 분포들(504)은 반전된 전압 분포들이다. 따라서, Ci s=1일 때, 제2의(반전된) 전압 분포들(504)이 LLR 값들을 계산하기 위한 기준으로서 사용되고, Ci s=0일 때, 제1의(정상적) 전압 분포들(502)이 LLR 값들을 계산하기 위한 기준으로서 사용된다.
도 6은 하나 이상의 구현에 따른 오류 정정 인코딩된 데이터의 리던던시에 대한 시스템에서의 반전된 로그 우도율(LLR)을 나타내는 전압 분포들(602, 604)의 세트를 도시한다. 그러나, 도시된 구성 요소들 모두가 필요하지 않을 수도 있고, 하나 이상의 구현은 도면에 도시되지 않은 부가 구성 요소들을 포함할 수 있다. 구성 요소들의 구성 및 타입의 변화들이 본원에 제시되는 청구항들의 사상 또는 범위로부터 벗어나지 않고 이루어질 수 있다. 부가 구성 요소들, 상이한 구성 요소들 또는 더 소수의 구성 요소가 제공될 수 있다.
제1 전압 분포들(602)은 정상적 전압 분포들인 반면에, 제2 전압 분포들(604)은 반전된 전압 분포들이다. 따라서, Ci s=1일 때, 제2의(반전된) 전압 분포들(604)이 LLR 값들을 계산하기 위한 기준으로서 사용되고, Ci s=0일 때, 제1의(정상적) 전압 분포들(602)이 LLR 값들을 계산하기 위한 기준으로서 사용된다.
도 7은 하나 이상의 구현에 따른 오류 정정 인코딩된 데이터의 리던던시에 대한 시스템에서의 높은 페이지 및 낮은 페이지 LLR 계산들을 나타내는 전압 분포들(702, 704)의 세트를 도시한다. 그러나, 도시된 구성 요소들 모두가 필요하지 않을 수도 있고, 하나 이상의 구현은 도면에 도시되지 않은 부가 구성 요소들을 포함할 수 있다. 구성 요소들의 구성 및 타입의 변화들이 본원에 제시되는 청구항들의 사상 또는 범위로부터 벗어나지 않고 이루어질 수 있다. 부가 구성 요소들, 상이한 구성 요소들 또는 더 소수의 구성 요소가 제공될 수 있다.
제1 전압 분포들(702)은 정상적 전압 분포들인 반면에, 제2 전압 분포들(704)은 반전된 전압 분포들이다. 따라서, Ci s=1일 때, 제2의(반전된) 전압 분포들(704)이, 예를 들어, MLC 플래시에 대한 높은 페이지 및 낮은 페이지 LLR 값들을 계산하기 위한 기준으로서 사용되고, Ci s=0일 때, 제1의(정상적) 전압 분포들(702)이, 예를 들어, MLC 플래시에 대한 높은 페이지 및 낮은 페이지 LLR 값들을 계산하기 위한 기준으로서 사용된다.
도 8은 하나 이상의 구현에 따른 인코딩되지 않은 데이터의 리던던시를 제공하는 시스템의 예시적 리던던시 스트라이프(800)를 도시한다. 그러나, 도시된 구성 요소들 모두가 필요하지 않을 수도 있고, 하나 이상의 구현은 도면에 도시되지 않은 부가 구성 요소들을 포함할 수 있다. 구성 요소들의 구성 및 타입의 변화들이 본원에 제시되는 청구항들의 사상 또는 범위로부터 벗어나지 않고 이루어질 수 있다. 부가 구성 요소들, 상이한 구성 요소들 또는 더 소수의 구성 요소가 제공될 수 있다.
예시적 리던던시 스트라이프(800)는 다수의 코드워드(810A 내지 410N) 및 리던던시(또는 패리티) 데이터(820)를 포함한다. 코드워드들(810A 내지 810N) 각각은 데이터 부분(412A 내지 412N) 및 패리티 부분(414A 내지 414N)을 포함한다. 리던던시 데이터(820)는 또한 데이터 부분(812) 및 패리티 부분(814)을 포함한다. 예시적 리던던시 스트라이프(800)에서, 리던던시 데이터(820)의 데이터 부분(812)은 데이터 부분들(412A 내지 412N) 상에서 오류 정정 코딩을 수행하기 전에 생성된다.
코드워드들(810A 내지 810N)의 데이터 부분들(412A 내지 412N)이 (예를 들어, 코드워드들(810A 내지 810N)을 생성하는데 사용되는 상이한 코드율들로 인해) 다양한 길이일 수 있으므로, 데이터 부분들(412A 내지 412B)의 일부는, 예를 들어, 데이터 부분들(412A 내지 412N) 모두가 동일한 길이이라는 것을 보장하도록 리던던시 데이터(820)의 데이터 부분(812)을 생성하기 위해 패딩될, 예를 들어, 제로 패딩될 필요가 있을 수 있다. 제로 패딩이, 예를 들어, 제어기(114)에 의해 데이터 부분(412A 내지 412N)에 첨부되어, 부가 전력 및 프로세싱 리소스들을 필요로 한다.
리던던시 데이터(820)가 생성된 후에, 제로 패딩(813A 내지 813B)은 제어기(114)에 의해 제거되어, 부가 전력 및 프로세싱 리소스들을 추가로 필요로 한다. 데이터 부분들(412A 내지 412N)은 그 다음 코드워드들(810A 내지 810N)의 패리티 부분들(414A 내지 414N)을 생성하도록 인코딩되고, 리던던시 데이터(820)의 데이터 부분(812)은 리던던시 데이터(820)의 패리티 부분(814)을 생성하도록 인코딩된다. 코드워드들(810A 내지 810N) 및 리던던시 데이터(820)는 플래시 메모리 회로들(112A 내지 112N)의 개별적 블록들에 각각 기록된다. 하나 이상의 구현에서, 코드워드들(810A 내지 810N) 및 리던던시 데이터(820) 각각은 개별적 플래시 메모리 회로들(112A 내지 112N)의 개별적 블록들 상에 저장될 수 있어, 플래시 메모리 회로들(112A 내지 112N) 중 임의의 하나의 고장이 데이터 손실을 야기하지 않는다.
제로 패딩(813A 내지 813B)이 리던던시 데이터(820)를 생성하도록 데이터 아이템들(810A 내지 810B) 중 일부에 추가되므로, 손실된 코드워드를 복구하기 위해, 다른 코드워드들(810A 내지 810N) 각각(뿐만 아니라 리던던시 데이터(820))는 정정될 필요가 있고, 제로 패딩(813A 내지 813B)은 데이터 아이템들(810A 내지 810B)에 재첨부될 필요가 있다. 손실된 코드워드는 그 다음 하드 및/또는 소프트 디코딩을 사용하여 복구될 수 있다. 따라서 하나 이상의 구현에서, 제로 패딩(813A 내지 813B)이 인코딩 및 디코딩 둘 다 동안 추가되고 제거될 필요가 있고, 리던던시 데이터(820)가 손실된 코드워드를 복구하기 위해 디코딩될 필요가 있으므로, 리던던시 스트라이프(800)를 사용하여 손실된 코드워드를 복구하는 것은 리던던시 스트라이프(400)를 사용하여 손실된 코드워드를 복구하는 것보다 더 많은 전력 및/또는 프로세싱 리소스들을 활용할 수 있다.
본 발명의 범위 내의 구현들은 하나 이상의 명령어를 인코딩하는 유형의 컴퓨터 판독 가능 저장 매체(또는 하나 이상의 타입의 다수의 유형의 컴퓨터 판독 가능 저장 매체)를 사용하여 부분적으로 또는 전부 실현될 수 있다. 유형의 컴퓨터 판독 가능 저장 매체는 본질적으로 비일시적일 수도 있다.
컴퓨터 판독 가능 저장 매체는 명령어들을 실행시킬 수 있는 임의의 프로세싱 전자 기기 및/또는 프로세싱 회로망을 포함하는 범용 또는 특수 목적 컴퓨팅 디바이스에 의해 판독되거나, 기록되거나, 액세스될 수 있는 임의의 저장 매체일 수 있다. 예를 들어, 제한 없이, 컴퓨터 판독 가능 매체는 RAM, DRAM, SRAM, T-RAM, Z-RAM 및 TTRAM과 같은 임의의 휘발성 반도체 메모리를 포함할 수 있다. 컴퓨터 판독 가능 매체는 ROM, PROM, EPROM, EEPROM, NVRAM, 플래시, nvSRAM, FeRAM, FeTRAM, MRAM, PRAM, CBRAM, SONOS, RRAM, NRAM, 레이스트랙 메모리, FJG 및 밀리피드 메모리와 같은 임의의 비휘발성 반도체 메모리를 포함할 수도 있다.
게다가, 컴퓨터 판독 가능 저장 매체는 광 디스크 저장소, 자기 디스크 저장소, 자기 테이프, 다른 자기 저장 디바이스들 또는 하나 이상의 명령어를 저장할 수 있는 임의의 다른 매체와 같은 임의의 비반도체 메모리를 포함할 수 있다. 일부 구현에서, 유형의 컴퓨터 판독 가능 저장 매체는 컴퓨팅 디바이스에 직접 결합될 수 있는 반면에, 다른 구현들에서, 유형의 컴퓨터 판독 가능 저장 매체는, 예를 들어, 하나 이상의 유선 연결, 하나 이상의 무선 연결 또는 이들의 임의의 조합을 통하여 컴퓨팅 디바이스에 간접적으로 결합될 수 있다.
명령어들은 직접 실행 가능할 수 있거나 실행 가능 명령어들을 개발하는데 사용될 수 있다. 예를 들어, 명령어들은 실행 가능하거나 실행 불가능한 기계 코드로서 또는 실행 가능하거나 실행 불가능한 기계 코드를 생성하도록 컴파일될 수 있는 높은 레벨 언어의 명령어들로서 실현될 수 있다. 게다가, 명령어들은 데이터로서 실현될 수도 있거나 데이터를 포함할 수도 있다. 컴퓨터 실행 가능 명령어들은 루틴, 서브루틴, 프로그램, 데이터 구조체, 객체, 모듈, 애플리케이션, 애플릿, 함수 등을 포함하는 임의의 형식으로 체계화될 수도 있다. 당업자에 의해 인지되는 바와 같이, 명령어들의 수, 구조체, 시퀀스 및 체계를 포함하지만, 이에 제한되지 않는 상세들은 근원적인 로직, 함수, 프로세싱 및 출력을 달리하지 않고 상당히 달라질 수 있다.
위의 논의가 주로 소프트웨어를 실행시키는 마이크로프로세서 또는 다중 코어 프로세서들과 관련 있지만, 하나 이상의 구현이 주문형 반도체들(ASICs) 또는 필드 프로그램 가능 게이트 어레이들(FPGAs)과 같은 하나 이상의 집적 회로에 의해 수행된다. 하나 이상의 구현에서, 그러한 집적 회로들은 회로 그 자체 상에 저장되는 명령어들을 실행시킨다.
당업자는 본원에 설명하는 다양한 예시적인 블록, 모듈, 요소, 구성 요소, 방법 및 알고리즘이 전자 하드웨어, 컴퓨터 소프트웨어 또는 둘 다의 조합들로서 구현될 수 있다는 점을 이해할 것이다. 하드웨어 및 소프트웨어의 이러한 상호 교환 가능성을 예시하기 위해, 다양한 예시적인 블록, 모듈, 요소, 구성 요소, 방법 및 알고리즘을 이들의 기능성의 면에서 일반적으로 상술하였다. 그러한 기능성이 하드웨어로서 구현되는지 아니면 소프트웨어로서 구현되는지는 전체 시스템에 부과되는 특정 응용 및 설계 제약들에 따른다. 당업자는 각각의 특정 응용에 대해 여러 방식으로 설명한 기능성을 구현할 수 있다. 다양한 구성 요소 및 블록은 본 논제 기술의 범위로부터 벗어나지 않으면서 모두 상이하게 구성될 수 있다(예를 들어, 상이한 순서로 배열되거나, 상이한 방식으로 분할될 수 있다).
개시된 프로세스들의 블록들의 임의의 특정 순서 또는 체계가 예시적 접근법들의 예시라는 점이 이해된다. 설계 선호도들에 기반하여, 프로세스들의 블록들의 특정 순서 또는 체계가 재구성되거나 모든 예시된 블록이 수행될 수 있다는 점이 이해된다. 블록들 중 임의의 것은 동시에 수행될 수 있다. 하나 이상의 구현에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 더욱이, 상술한 실시예들에서 다양한 시스템 구성 요소의 분리는 모든 실시예에서 그러한 분리를 필요로 하는 것으로 이해되지 않아야 하고, 설명한 프로그램 구성 요소들 및 시스템들이 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품으로 패키징될 수 있다는 점이 이해되어야 한다.
본 명세서 및 본 출원의 임의의 청구항에 사용되는, “기지국(base station)”, “수신기(receiver)”, “컴퓨터(computer)”, “서버(server)”, “프로세서(processor)” 및 “메모리(memory)”란 용어들은 모두 전자적이거나 다른 기술적인 디바이스들을 지칭한다. 이러한 용어들은 사람들 또는 사람들의 그룹들을 배제한다. 본 명세서의 목적으로, “표시하다(display)” 또는 “표시하는(displaying)”이란 용어들은 전자 디바이스 상에서 표시하는 것을 의미한다.
본원에 사용되는, 항목들 중 임의의 것을 구분하는 “및(and)” 또는 “또는(or)”이란 용어를 갖는 일련의 항목들에 앞서는 “~중 적어도 하나(at least one of)”란 어구는 목록의 각각의 구성원(즉, 각각의 항목)보다는 오히려 전체로서 목록을 수식한다. “~중 적어도 하나”란 어구는 목록으로 나열된 각각의 항목의 적어도 하나의 선택을 필요로 하지 않으며; 오히려, 상기 어구는 항목들 중 임의의 하나의 적어도 하나, 및/또는 항목들의 임의의 조합의 적어도 하나, 및/또는 항목들 각각의 적어도 하나를 포함하는 의미를 가능하게 한다. 예로서, “A, B 및 C 중 적어도 하나(at least one of A, B, and C)” 또는 “A, B 또는 C 중 적어도 하나(at least one of A, B, or C)”란 어구들은 각각 단지 A, 단지 B 또는 단지 C; A, B 및 C의 임의의 조합; 및/또는 A, B 및 C 각각의 적어도 하나를 지칭한다.
“~이도록 구성되는(configured to)”, “~이도록 작동 가능한(operable to)” 및 “~이도록 프로그래밍되는(programmed to)”이란 서술어들은 대상의 임의의 특정한 유형이거나 무형의 변경을 의미하지 않고, 오히려, 상호 교환 가능하게 사용되는 것으로 의도된다. 하나 이상의 구현에서, 작동 또는 구성 요소를 모니터링하고 제어하도록 구성되는 프로세서는 작동을 모니터링하고 제어하도록 프로그래밍되는 프로세서 또는 작동을 모니터링하고 제어하도록 작동 가능한 프로세서를 의미할 수도 있다. 마찬가지로, 코드를 실행시키도록 구성되는 프로세서는 코드를 실행시키도록 프로그래밍되거나 코드를 실행시키도록 작동 가능한 프로세서로 해석될 수 있다.
일 양태, 양태, 다른 양태, 일부 양태, 하나 이상의 양태, 일 구현, 구현, 다른 구현, 일부 구현, 하나 이상의 구현, 일 실시예, 실시예, 다른 실시예, 일부 실시예, 하나 이상의 실시예, 일 구성, 구성, 다른 구성, 일부 구성, 하나 이상의 구성, 본 논제 기술, 발명, 본 발명, 이들의 다른 변형들 등과 같은 어구들은 편의를 위한 것이고 그러한 어구(들)와 관련되는 개시가 본 논제 기술에 필수적이거나 그러한 개시가 본 논제 기술의 모든 구성에 적용된다는 것을 의미하지 않는다. 그러한 어구(들)와 관련되는 개시는 모든 구성, 또는 하나 이상의 구성에 적용될 수 있다. 그러한 어구(들)와 관련되는 개시는 하나 이상의 예를 제공할 수 있다. 일 양태 또는 일부 양태와 같은 어구는 하나 이상의 양태를 지칭할 수 있고 그 반대도 그렇고, 이는 다른 전술한 어구들에 마찬가지로 적용된다.
“예시적인(exemplary)”이란 단어는 “일 예, 사례 또는 예시의 역할을 하는(serving as an example, instance, or illustration)”을 의미하도록 본원에 사용된다. “예시적인” 또는 일 “예”로서 본원에 설명하는 임의의 실시예는 다른 실시예들에 비해 바람직하거나 유리한 것으로 반드시 해석되는 것은 아니어야 한다. 더욱이, “포괄하다(include),” “가지다(have)” 등이란 용어가 상세한 설명 또는 청구항들에 사용되는 범위에서, 그러한 용어는 “포함하다(comprise)”가 청구항에서 연결어로서 채용될 때 해석되는 것과 같이, “포함하다”란 용어와 유사한 방식으로 포괄적인 것으로 의도된다.
당업자에게 알려져 있거나 이후에 알려지게 되는 본 발명 전체에 걸쳐 설명하는 다양한 양태의 요소들에 대한 모든 구조적 및 기능적 동등물은 명확히 참조로 본원에 포함되고 청구항들에 의해 포함되는 것으로 의도된다. 더욱이, 본원에 개시되는 어떤 것도 그러한 개시가 청구항들에 명확히 상술되는지 여부에 관계 없이 대중에게 전용인 것으로 의도되지 않는다. 어떤 청구항 요소도 요소가 “~에 대한 수단(means for)”이란 어구를 사용하여 명확히 상술되거나, 방법 청구항의 경우에, 요소가 “~에 대한 단계(step for)”란 어구를 사용하여 상술되지 않는다면, 35 U.S.C. §112, 제6항의 조항들 하에서 해석되지 않아야 한다.
앞선 설명은 당업자가 본원에 설명하는 다양한 양태를 실행하는 것을 가능하게 하도록 제공된다. 이러한 양태들에 대한 다양한 변경이 당업자에게 손쉽게 명백할 것이고, 본원에 정의되는 포괄적 원리들이 다른 양태들에 적용될 수 있다. 따라서, 청구항들은 본원에 나타내어지는 양태들에 제한되는 것으로 의도되지 않고, 표현 청구항들과 일치하는 전체 범위가 부여될 것이며, 단수형의 요소에 대한 언급은 상세하게 그렇게 진술되지 않는다면, “하나 및 단지 하나(one and only one)”를 의미하는 것으로 의도되지 않고, 오히려 “하나 이상(one or more)”을 의미하는 것으로 의도된다. 상세하게 달리 진술되지 않는다면, “일부(some)”란 용어는 하나 이상을 지칭한다. 남성형 단어의 대명사들(예를 들어, 그의(his))은 여성형 단어 및 중성 단어(예를 들어, 그녀의(her) 및 그것의(its))를 포함하고 그 반대도 그렇다. 주제들 및 부제들은 존재한다면, 편의를 위해서만 사용되고 본 발명을 제한하지 않는다.

Claims (20)

  1. 디바이스에 있어서,
    적어도 하나의 프로세서 회로를 포함하고, 상기 적어도 하나의 프로세서 회로는,
    복수의 개별적 플래시 메모리 블록들 각각의 무결성(integrity)들에 기반하여 데이터를 인코딩하기 위한 복수의 코드율(code rate)들을 결정하도록;
    복수의 코드워드(codeword)들을 생성하도록 복수의 데이터 아이템들에 오류 정정 인코딩(error correction encoding)을 수행하도록 - 상기 복수의 데이터 아이템들 중 적어도 하나는 상기 복수의 데이터 아이템들 중 적어도 다른 하나와는 상이한 길이를 포함하고, 상기 복수의 코드워드들 각각은 동일한 코드워드 길이를 포함함 - ;
    상기 복수의 코드워드들 중 다수의 코드워드들을 사용하여 연산(operation)을 수행하는 것에 적어도 부분적으로 기반하여 리던던시 데이터 아이템(redundancy data item)을 생성하도록;
    상기 복수의 코드워드들 각각을 플래시 메모리 회로들 중 각 하나의 플래시 메모리 회로의 플래시 메모리 블록들 중 각 하나의 플래시 메모리 블록에 기록하도록; 그리고
    상기 리던던시 데이터 아이템을 상기 플래시 메모리 회로들과는 개별적인 다른 플래시 메모리 회로 내의 적어도 하나의 추가 블록에 기록하도록 - 상기 적어도 하나의 추가 블록은 상기 복수의 코드워드들을 포함하는 상기 플래시 메모리 블록들과는 개별적이고, 상기 적어도 하나의 추가 블록의 무결성은 상기 복수의 개별적 플래시 메모리 블록들 중 임의의 개별적 플래시 메모리 블록의 최고(highest) 무결성보다 더 큼 - 구성되는 것인, 디바이스.
  2. 제1항에 있어서, 상기 복수의 데이터 아이템들은 복수의 코드율들로 인코딩되고, 상기 복수의 데이터 아이템들 중 적어도 하나는 상기 복수의 데이터 아이템들 중 적어도 다른 하나와는 상이한 코드율로 인코딩되는 것인, 디바이스.
  3. 제2항에 있어서, 상기 적어도 하나의 프로세서 회로는 또한,
    호스트 디바이스로부터 데이터 스트림을 수신하도록; 그리고
    상기 복수의 코드율들에 적어도 부분적으로 기반하여 상기 데이터 스트림을 상기 복수의 데이터 아이템들로 파싱하도록(parse) 구성되는 것인, 디바이스.
  4. 제1항에 있어서, 상기 복수의 코드워드들 중 적어도 하나는, 상기 복수의 코드워드들 중 다른 코드워드들과 함께 상기 리던던시 데이터 아이템을 사용하여 복구 가능한 것인, 디바이스.
  5. 제1항에 있어서, 상기 적어도 하나의 프로세서 회로는 또한, 상기 복수의 코드워드들에 비트 배타적 논리합 연산(bitwise exclusive-or operation)을 수행하는 것에 적어도 부분적으로 기반하여 상기 리던던시 데이터 아이템을 생성하도록 구성되는 것인, 디바이스.
  6. 유형의(tangible) 컴퓨터 판독 가능 저장 매체에 저장되는 명령어들을 포함하는 매체에 저장된 컴퓨터 프로그램에 있어서, 상기 명령어들은,
    복수의 플래시 메모리 블록들 각각으로부터, 복수의 코드워드들 중 연관된 코드워드를 리트리빙(retrieve)하기 위한 명령어들 - 상기 복수의 코드워드들 중 적어도 하나는 복수의 코드율들 중, 상기 복수의 코드워드들 중 적어도 다른 하나와는 상이한 코드율로 인코딩되고, 상기 복수의 코드율들은 상기 복수의 플래시 메모리 블록들의 무결성에 기반하여 결정되고, 상기 복수의 코드워드들 각각은 동일한 코드워드 길이를 포함함 - ;
    복수의 정정된 코드워드들을 생성하도록 상기 복수의 코드워드들 각각에서 오류 정정 디코딩을 수행하기 위한 명령어들;
    상기 복수의 코드워드들 중 디코딩될 수 없는 적어도 하나를 식별하기 위한 명령어들;
    상기 복수의 플래시 메모리 블록들과는 개별적인 다른 블록으로부터, 리던던시 데이터 아이템을 리트리빙하기 위한 명령어들 - 상기 다른 블록은 상기 복수의 플래시 메모리 블록들을 저장하는 복수의 플래시 메모리 회로들과는 개별적인 플래시 메모리 회로로부터 리트리빙됨 - ; 및
    상기 복수의 코드워드들 중, 상기 복수의 정정된 코드워드들 및 상기 리던던시 데이터 아이템에 적어도 부분적으로 기반하여 디코딩될 수 없는 적어도 하나를 복구하기 위한 명령어들을 포함하는 것인, 매체에 저장된 컴퓨터 프로그램.
  7. 제6항에 있어서, 상기 명령어들은,
    상기 복수의 코드워드들 중 상기 복구된 적어도 하나 및 상기 복수의 정정된 코드워드들 둘 다로부터 복수의 데이터 아이템들을 리트리빙하기 위한 명령어들; 및
    상기 복수의 데이터 아이템들을 호스트 디바이스에 제공하기 위한 명령어들을 더 포함하는 것인, 매체에 저장된 컴퓨터 프로그램.
  8. 제7항에 있어서, 상기 복수의 데이터 아이템들 중 적어도 하나는, 상기 복수의 데이터 아이템들 중 적어도 다른 하나와는 상이한 길이를 포함하는 것인, 매체에 저장된 컴퓨터 프로그램.
  9. 제6항에 있어서, 상기 리던던시 데이터 아이템은 유효한 코드워드가 아닌 것인, 매체에 저장된 컴퓨터 프로그램.
  10. 제6항에 있어서, 상기 오류 정정 디코딩은 저밀도 패리티 체크 오류 정정 디코딩(low-density parity check error correction decoding)을 포함하는 것인, 매체에 저장된 컴퓨터 프로그램.
  11. 방법에 있어서,
    복수의 플래시 메모리 블록들의 각각의 블록에 대해, 상기 플래시 메모리 블록의 무결성에 기반하여 복수의 코드율들 중 연관된 코드율을 결정하는 단계;
    상기 복수의 플래시 메모리 블록들의 각각의 블록에 대해, 복수의 데이터 아이템들 중 한 데이터 아이템을 식별하는 단계 - 상기 데이터 아이템은 상기 복수의 코드율들 중 연관된 코드율에 적어도 부분적으로 기반하여 결정되는 길이를 가짐 - ;
    상기 복수의 플래시 메모리 블록들의 각각의 블록에 대해, 복수의 코드워드들 중 연관된 코드워드를 생성하도록 상기 복수의 데이터 아이템들 중 각각의 데이터 아이템에 오류 정정 인코딩을 수행하는 단계;
    상기 복수의 코드워드들 각각에 적어도 부분적으로 기반하여 리던던시 데이터 아이템을 생성하는 단계;
    상기 복수의 플래시 메모리 블록들 중 각 하나의 플래시 메모리 블록 상의 상기 복수의 플래시 메모리 블록들의 각각의 블록에, 상기 연관된 코드워드를 기록하는 단계; 및
    상기 리던던시 데이터 아이템에 오류 정정 인코딩을 수행하지 않고, 상기 복수의 플래시 메모리 블록들과는 개별적인 적어도 하나의 추가 블록에, 상기 리던던시 데이터 아이템을 기록하는 단계 - 상기 적어도 하나의 추가 블록은 상기 복수의 플래시 메모리 블록들과는 개별적인 다른 플래시 메모리 회로에 기록되고, 상기 적어도 하나의 추가 블록의 무결성은 상기 복수의 플래시 메모리 블록들의 최고 무결성보다 큼 - 를 포함하는, 방법.
  12. 제11항에 있어서, 상기 복수의 플래시 메모리 블록들 중 제1 블록과 연관된 상기 복수의 코드율들 중 제1 코드율은, 상기 복수의 플래시 메모리 블록들 중 제2 블록과 연관된 상기 복수의 코드율들 중 제2 코드율과는 상이한 것인, 방법.
  13. 제12항에 있어서, 상기 복수의 코드워드들 각각은 동일한 코드워드 길이를 갖는 것인, 방법.
  14. 제11항에 있어서, 상기 복수의 코드워드들 중 적어도 하나는 상기 복수의 코드워드들 중 다른 코드워드들 및 상기 리던던시 데이터 아이템으로부터 복구 가능한 것인, 방법.
  15. 제11항에 있어서, 상기 복수의 코드워드들 각각에 적어도 부분적으로 기반하여 리던던시 데이터 아이템을 생성하는 단계는, 상기 복수의 코드워드들 각각에 비트 배타적 논리합 연산을 수행하는 것에 적어도 부분적으로 기반하여 상기 리던던시 데이터 아이템을 생성하는 단계를 더 포함하는 것인, 방법.
  16. 제 11 항에 있어서,
    호스트 디바이스로부터 데이터 스트림을 수신하는 단계; 및
    상기 데이터 스트림을 상기 복수의 데이터 아이템들로 파싱하는 단계를 더 포함하는, 방법.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020170030458A 2016-03-11 2017-03-10 저장 시스템에서 오류 정정 인코딩된 데이터의 리던던시 KR102057371B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/068,491 2016-03-11
US15/068,491 US10198313B2 (en) 2016-03-11 2016-03-11 Redundancy of error correction encoded data in a storage system

Publications (2)

Publication Number Publication Date
KR20170106237A KR20170106237A (ko) 2017-09-20
KR102057371B1 true KR102057371B1 (ko) 2019-12-18

Family

ID=59700335

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170030458A KR102057371B1 (ko) 2016-03-11 2017-03-10 저장 시스템에서 오류 정정 인코딩된 데이터의 리던던시

Country Status (4)

Country Link
US (1) US10198313B2 (ko)
KR (1) KR102057371B1 (ko)
CN (1) CN107179961B (ko)
DE (1) DE102017001420B4 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102706994B1 (ko) * 2016-09-07 2024-09-19 에스케이하이닉스 주식회사 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
JP6725375B2 (ja) * 2016-09-14 2020-07-15 キオクシア株式会社 メモリシステムおよび方法
US9881643B1 (en) * 2017-05-15 2018-01-30 Western Digital Technologies, Inc. Data storage device generating extended redundancy to compensate for track squeeze
US10379952B2 (en) * 2017-06-16 2019-08-13 Western Digital Technologies, Inc. Data recovery and regeneration using parity code
US10649867B2 (en) * 2017-12-15 2020-05-12 Western Digital Technologies, Inc. RAID array rebuild assist from external array copy
US10644727B2 (en) 2018-01-11 2020-05-05 Western Digital Technologies, Inc. Code rate switching mechanism for flash memory
US11003529B2 (en) * 2018-03-22 2021-05-11 Winbond Electronics Corp. Encoding method and memory storage apparatus using the same
KR102706725B1 (ko) * 2018-07-03 2024-09-19 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이의 동작 방법
TWI698881B (zh) * 2018-07-13 2020-07-11 華邦電子股份有限公司 編碼方法及使用所述編碼方法的記憶體儲存裝置
US10747614B2 (en) 2018-07-23 2020-08-18 Micron Technology, Inc. Hybrid iterative error correcting and redundancy decoding operations for memory sub-systems
KR102678314B1 (ko) * 2018-08-03 2024-06-25 삼성전자주식회사 유저 데이터에 대한 에러 정정을 수행하는 에러 정정 회로 및 이를이용한 에러 정정 방법
CN111294142A (zh) * 2018-12-10 2020-06-16 华为技术有限公司 一种卫星通信方法及装置
CN112151104B (zh) * 2019-06-28 2023-08-15 华邦电子股份有限公司 存储器存放装置及其动态数据修复的方法
US11269645B2 (en) 2020-03-11 2022-03-08 Western Digital Technologies, Inc. Storage system and method for implementing an encoder, decoder, and/or buffer using a field programmable gate array
US11567828B2 (en) 2020-07-09 2023-01-31 SK Hynix Inc. Asymmetric LLR generation using assist-read
US11775381B2 (en) * 2021-09-17 2023-10-03 Micron Technology, Inc. Redundancy metadata schemes for RAIN protection of large codewords

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012518224A (ja) 2009-02-18 2012-08-09 マイクロン テクノロジー, インク. メモリコントローラ及び方法におけるデータ完全性

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8321597B2 (en) 2007-02-22 2012-11-27 Super Talent Electronics, Inc. Flash-memory device with RAID-type controller
US20090022242A1 (en) * 2007-07-18 2009-01-22 Texas Instruments Incorporated Systems and methods for increased data rate modes using multiple encoders/decoders
WO2009078006A2 (en) * 2007-12-18 2009-06-25 Densbits Technologies Ltd. Apparatus for coding at a plurality of rates in multi-level flash memory systems, and methods useful in conjunction therewith
EP2592553B1 (en) * 2008-03-11 2015-11-18 Agere Systems, Inc. Methods and apparatus for storing data in a multi-level cell flash memory device with cross-page sectors, multi-page coding and per-page coding
KR101398200B1 (ko) * 2008-03-18 2014-05-26 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
US8438455B2 (en) 2008-12-31 2013-05-07 Intel Corporation Error correction in a solid state disk
US8402217B2 (en) 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US8700950B1 (en) 2011-02-11 2014-04-15 Western Digital Technologies, Inc. System and method for data error recovery in a solid state subsystem
US9032269B2 (en) * 2011-07-22 2015-05-12 Sandisk Technologies Inc. Systems and methods of storing data
US9424128B2 (en) 2011-08-12 2016-08-23 Futurewei Technologies, Inc. Method and apparatus for flexible RAID in SSD
US9026887B2 (en) * 2012-03-15 2015-05-05 Micron Technology, Inc. Physical page, logical page, and codeword correspondence

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012518224A (ja) 2009-02-18 2012-08-09 マイクロン テクノロジー, インク. メモリコントローラ及び方法におけるデータ完全性

Also Published As

Publication number Publication date
CN107179961B (zh) 2019-12-31
DE102017001420A1 (de) 2017-09-14
US20170262332A1 (en) 2017-09-14
US10198313B2 (en) 2019-02-05
CN107179961A (zh) 2017-09-19
DE102017001420B4 (de) 2020-03-26
KR20170106237A (ko) 2017-09-20

Similar Documents

Publication Publication Date Title
KR102057371B1 (ko) 저장 시스템에서 오류 정정 인코딩된 데이터의 리던던시
US9319073B2 (en) Mitigation of write errors in multi-level cell flash memory through adaptive error correction code decoding
TWI674767B (zh) 用於nand快閃記憶體的渦輪乘積碼
US10447301B2 (en) Optimal LDPC bit flip decision
US8719677B2 (en) Using ECC encoding to verify an ECC decode operation
US9037943B2 (en) Identification of non-volatile memory die for use in remedial action
TW201626224A (zh) 使用來自多個儲存單元與一同位儲存單元的可靠性資訊以針對該等儲存單元中的一錯誤者恢復資料的技術
KR101550762B1 (ko) 연접 오류 정정 장치
US9559727B1 (en) Stopping rules for turbo product codes
US11016844B2 (en) Error correction code structure
US10574272B2 (en) Memory system
TWI460733B (zh) 具有低密度奇偶校驗碼解碼能力的記憶體控制裝置及方法
US20210141685A1 (en) System and method for improving efficiency and reducing system resource consumption in a data integrity check
CN109471808B (zh) 具有数据可靠性机制的存储系统及其操作方法
US20210091792A1 (en) Memory system
US11150813B2 (en) Memory system
US20180203625A1 (en) Storage system with multi-dimensional data protection mechanism and method of operation thereof
US9584159B1 (en) Interleaved encoding
US11734107B2 (en) Decoding scheme for error correction code structure
US20160080004A1 (en) Memory controller and decoding method
CN108170554B (zh) 一种nand的数据编码方法和装置
TWI551058B (zh) 最小-總和演算法之低密度奇偶校驗碼解碼器及其解碼方法
US11923868B1 (en) Stall mitigation in iterative decoders
US20240063819A1 (en) Iterative decoder with a dynamic maximum stop condition
US11551774B2 (en) Memory system and method of controlling non-volatile memory

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant