KR20140046386A - 고착 고장을 갖는 메모리 셀들을 수용하기 위한 데이터의 부호화 및 복호화 - Google Patents

고착 고장을 갖는 메모리 셀들을 수용하기 위한 데이터의 부호화 및 복호화 Download PDF

Info

Publication number
KR20140046386A
KR20140046386A KR1020130120076A KR20130120076A KR20140046386A KR 20140046386 A KR20140046386 A KR 20140046386A KR 1020130120076 A KR1020130120076 A KR 1020130120076A KR 20130120076 A KR20130120076 A KR 20130120076A KR 20140046386 A KR20140046386 A KR 20140046386A
Authority
KR
South Korea
Prior art keywords
matrix
data bits
control circuit
vector
bits
Prior art date
Application number
KR1020130120076A
Other languages
English (en)
Other versions
KR101637065B1 (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 KR20140046386A publication Critical patent/KR20140046386A/ko
Application granted granted Critical
Publication of KR101637065B1 publication Critical patent/KR101637065B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/14Implementation of control logic, e.g. test mode decoders
    • 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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/02Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using elements whose operation depends upon chemical change
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD

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)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

데이터 저장 시스템은, 메모리 셀들을 갖는 제어 회로 및 상기 메모리 셀들에 저장을 위해 제공된 데이터 비트들을 수신하도록 동작가능한 제어 회로를 포함한다. 상기 제어 회로는 제1 매트릭스를 수신하도록 동작할 수 있다. 상기 제1 매트릭스의 각 행은 데이터 비트들의 특정한 하나에 대응한다. 상기 제어 회로는 고착 고장들을 갖는 메모리 셀들의 서브세트에 저장을 위해 제공된 데이터 비트들에 대응하는 제1 매트릭스의 행들만 갖는 제2 매트릭스를 생성하도록 동작할 수 있다. 상기 제어 회로는 제2 매트릭스의 선형, 독립적인 열들을 갖는 제3 매트릭스를 생성하도록 동작할 수 있다. 상기 제어 회로는 상기 제3 매트릭스를 사용하여, 부호화된 데이터 비트들 및 중복 비트들을 생성하기 위해 데이터 비트들을 부호화하도록 동작할 수 있다.

Description

고착 고장을 갖는 메모리 셀들을 수용하기 위한 데이터의 부호화 및 복호화{ENCODING AND DECODING DATA TO ACCOMMODATE MEMORY CELLS HAVING STUCK-AT FAULTS}
본 발명은 데이터 저장 시스템에 관한 것으로, 특히, 고착 고장(stuck-at fault)을 갖는 메모리 셀들을 수용하기 위해 데이터를 부호화(encoding) 및 복호화(decoding)하기 위한 기술에 관한 것이다.
많은 데이터 통신 시스템들은 데이터의 에러들을 검출하고 정정하기 위해 에러 정정 인코더들 및 디코더들을 사용한다. 데이터 통신 시스템은 예컨대, 약 1×10-4의 비율로 생성되는 무작위 에러들을 정정할 수 있다. 약 1 ×10-4의 에러율에 대한 보호를 위해, 에러 정정 인코더는 그 입력 비트보다 약 10% 많은 비트들을 갖는 부호화된 비트들을 생성한다.
상 변화 메모리(phase change memory; PCM)는 비휘발성 메모리의 급이다. PCM 장치는 전통적인 비휘발성 플래시 메모리보다 많은 장점들을 가진다. 그러나 PCM 장치들은 열화(degradation)에 의해 유발되는 대량의 에러들을 발생할 수 있다. 예컨대, 하나의 PCM 장치는 약 1 ×10-2 이상의 비율로 에러들을 발생할 수 있다.
내구성의 한계로 인해 비휘발성 플래시 메모리들에 있어서의 에러율은 열화에 의해 두드러진다. 열화에 의해 야기되는 에러들은 고착(stuck-at) 고장들을 포함하며, 이들은 데이터 통신 시스템에 있어서 보편적인 무작위 에러들과 상이한 통계들을 갖는다.
일부 실시예들에 따르면, 데이터 저장 시스템은 메모리 셀들을 갖는 메모리 회로 및 제어 회로를 포함한다. 상기 제어 회로는 상기 메모리 셀들에 저장을 위해 제공되는 데이터 비트들을 수신하도록 동작할 수 있다. 상기 제어 회로는 제1 매트릭스를 수신하도록 동작할 수 있다. 상기 제1 매트릭스의 각 행(row)은 데이터 비트들의 특정한 하나에 대응한다. 상기 제어 회로는 고착 고장을 갖는 메모리 셀들의 서브세트에 저장을 위해 제공되는 데이터 비트들에 대응하는 유일한 제1 매트릭스의 행들을 갖는 제2 매트릭스를 생성하도록 동작할 수 있다. 상기 제어 회로는 제2 매트릭스의 선형의 독립적인 열(column)들을 갖는 제3 매트릭스를 생성하도록 동작할 수 있다. 상기 제어 회로는 상기 제3 매트릭스를 사용하여 부호화된 데이터 비트들 및 중복 비트들을 생성하기 위해 데이터 비트들을 부호화하도록 동작할 수 있다.
일부 실시예들에 따르면, 상기 제어 회로는 상기 메모리 셀들로부터 판독된 부호화된 데이터 비트들을 수신하도록 동작가능하고, 상기 제어 회로는 중복 비트들을 수신하도록 동작할 수 있다. 상기 제어 회로는 제1 매트릭스를 수신하도록 동작할 수 있다. 상기 제어 회로는 중복 비트들의 제1 서브세트에 기초하여 선택된 제1 매트릭스로부터 열들의 서브세트를 갖는 제2 매트릭스를 생성하도록 동작할 수 있다. 상기 제어 회로는 상기 중복 비트들의 제2 서브세트에 기초하여 제1 벡터를 생성하도록 동작할 수 있다. 상기 제어 회로는 상기 제1 벡터 및 제2 매트릭스에 기초하여 제2 벡터를 생성하도록 동작할 수 있다. 상기 제어 회로는, 데이터 비트들을 생성하기 위해 상기 제2 벡터를 상기 부호화된 데이터 비트들에 적용하도록 동작할 수 있다.
본 발명의 각종 목적들, 특징들 및 이점들을 이하의 상세한 설명 및 첨부 도면을 참조하면 명백해질 것이다.
도 1은 본 발명의 1 실시예에 따른, 데이터 저장 시스템의 일례를 도시한다.
도 2는 본 발명의 1 실시예에 따라서 고착 고장들을 갖는 메모리 셀들을 수용하기 위해 부호화된 데이터 비트들 및 중복 비트들을 생성하도록 데이터 비트들을 부호화하기 위한 동작의 예들을 도시한 흐름도이다.
도 3은 본 발명의 1 실시예에 따라서 고착 고장들을 갖는 메모리 셀들을 수용하기 위해 부호화된 데이터 비트들 및 중복 비트들을 발생하도록 데이터 비트들을 부호화하기 위한 더욱 상세한 동작들의 예를 도시한 흐름도이다.
도 4는 본 발명의 1 실시예에 따라서 중복 비트들을 사용하여, 데이터 비트들을 생성하도록 도 2 및/또는 도 3의 동작들에 의해 생성된 부호화된 데이터 비트들을 복호화하기 위한 동작들의 예를 도시한 흐름도이다.
도 5a-5e는 본 발명의 1 실시예에 따라서 도 3의 부호화 동작들이 일례의 인코딩 매트릭스들을 사용하여 데이터 비트들의 일례의 세트들에 적용될 수 있는 방법의 예들을 나타낸다.
이하에서는, 본 발명의 예시적인 실시형태들을 도면을 통해 보다 상세히 설명한다. 전체 도면에서, 서로 대응하는 부분에는 항상 동일한 도면부호가 부여된다.
전술한 일부 실시예들에 따르면, 인코더는 입력 데이터 비트들을 부호화하여, 부호화된 데이터 비트들 및 중복 비트들을 생성한다. 상기 인코더에 의해 생성된 부호화된 데이터 비트들은 메모리 회로의 메모리 셀들에 저장된다. 상기 부호화된 비트들은 고착 고장(stuck-at fault)들을 갖는 메모리 회로에 메모리 셀들을 수용한다. 상기 메모리 회로는 예컨대, 고착 고장들을 갖는 메모리 회로의 (예를 들면, 칼코겐화물 유리를 사용하는) 상 변화 메모리 회로 또는 다른 형태의 메모리로 될 수 있다.
고착 고장을 갖는 메모리 셀은 하나의 디지털 값만 저장할 수 있는 메모리 셀이다. 1의 고착 고장 값을 갖는 메모리 셀은 논리 하이(high)의 디지털 값만 저장할 수 있고, 0의 고착 고장 값을 갖는 메모리 셀은 논리 로우(low)의 디지털 값만 저장할 수 있다. 따라서 오직 논리 하이의 디지털 값은 1의 고착 고장 값(즉, 고착 1)을 갖는 메모리 셀로부터 판독될 수 있고, 오직 논리 로우의 디지털 값은 0의 고착 고장 값(즉, 고착 0)을 갖는 메모리 셀로부터 판독될 수 있다. 고착 고장들을 갖는 메모리 셀들은 일반적으로, 시간 경과에 따라 안정한 고착 고장 값들을 가진다.
메모리 회로 내의 어떤 메모리 셀들이 고착 고장들을 가질 경우, 고착 고장들의 디지털 값들 및 고착 고장들을 갖는 메모리 셀들의 어드레스들은 부호화 과정 전에 결정되고 인코더에 제공된다. 상기 인코더는 고착 고장들의 어드레스들 및 디지털 값들을 사용하여 상기 부호화된 데이터 비트들 및 중복 비트들을 생성한다. 상기 부호화된 데이터 비트들은 메모리 회로의 메모리 셀들에 저장된다. 상기 중복 비트들은 상기 부호화된 데이터 비트들과 동일한 메모리 회로 또는 다른 메모리 회로에 저장될 수 있다.
이어서, 상기 부호화된 데이터 비트들 및 중복 비트들은 메모리로부터 판독되고 디코더에 제공된다. 상기 디코더는, 중복 비트들을 사용하여 상기 부호화된 데이터 비트들을 복호화하여 데이터 비트들을 재생한다. 상기 디코더에 의해 재생된 데이터 비트들은, 메모리 회로에 있어서 공지의 고착 고장들에 의해 야기된 에러들을 포함하지 않는다.
본 명세서에 기재된 기술들은 다중 레벨 메모리 셀들에 대해 직접 적용할 수 있다. 다중 레벨 메모리 셀들은 메모리 셀당 하나 이상의 비트를 저장할 수 있다. 예컨대, 하나의 메모리 셀이 2 비트를 홀드하고, 또한 고착될 경우, 이들 2 비트들의 값은 고정되고, 이들은 두 개의 분리된 고착 고장 개소들로서 처리될 수 있다. 고착 고장들 중 하나의 위치가 알려져 있기 때문에, 다른 고착 고장의 위치 역시 알게 된다. 그 결과, 동일한 고착 고장 에러율에 대해, 단일 메모리 셀들에 대해 생성되는 중복 비트들보다 더 적은 중복 비트들이 다중 레벨 메모리 셀들에 대해 생성될 수 있다. 중복 비트들의 수는 예를 들면, 메모리 셀 당 비트들의 수와 동일한 팩터 만큼 적게 될 수 있다.
도 1은 본 발명의 1 실시예에 따른 데이터 저장 시스템(100)의 일례를 도시한다. 데이터 저장 시스템(100)은 제어 회로(101), 메모리 회로(102) 및 메모리 회로(103)를 포함한다. 제어 회로(101)는 예컨대, 메모리 제어 회로, 프로세서 회로, 또는 메모리 회로(102-103)에 저장을 위한 데이터 비트들을 부호화 및/또는 복호화하는 임의의 다른 형태의 제어 회로로 될 수 있다. 제어 회로(101)는 메모리 회로들(102-103)에 부호화된 데이터 비트들을 제공함과 아울러 메모리 회로들(102-103)로부터 부호화된 데이터 비트들을 수신한다. 상기 부호화된 데이터 비트들은 메모리 회로들(102,103) 중 어느 하나 또는 그 모두에 저장된다. 반복(redundant) 비트들은 상기 메모리 회로들(102,103) 중 어느 하나 또는 그 모두에 저장될 수 있다. 상기 부호화된 데이터 비트들 및 중복 비트들은 하나 이상의 온-칩 또는 외부 버스들을 통해 또는 다른 형태의 신호 라인들을 통해 제어 회로(101)와 메모리 회로들(102-103) 사이에서 전송된다. 상기 제어 회로(101), 메모리 회로(102) 및 메모리 회로(103)는 동일한 집적 회로 또는 분리된 집적 회로들로 이루어질 수 있다. 따라서 시스템(100)은 기 회로들(101-103)을 포함하는 단일 집적 회로 장치로 이루어질 수도 있다. 또는, 시스템(100)은 3개의 분리된 집적 회로 장치들(101-103)을 포함할 수도 있다.
도 2는 본 발명의 1 실시예에 따라서 고착 고장들을 갖는 메모리 회로에 메모리 셀들을 수용하기 위해 부호화된 데이터 비트들 및 중복 비트들을 생성하도록 데이터 비트들을 부호화하기 위한 동작의 예들을 도시한 흐름도이다. 메모리 회로 내의 메모리 셀들의 각각은 적어도 하나의 디지털 값을 저장한다. 상기 부호화된 데이터 비트들은 메모리 회로의 메모리 셀들에 저장된다. 하나 이상의 상기 메모리 셀들은 임의의 고착 고장을 갖는다. 고착 고장들을 갖는 메모리 셀들의 어드레스들 및 고착 고장들의 디지털 값은 도2의 동작들을 수행하기 전에 이미 알려져 있으며 인코더에 제공된다. 예컨대, 메모리 셀들이 고착 고장 거동과 일치하는 에러들을 제공한다는 것을 판단하기 위해 반복된 판독 및 기입 동작들이 행해질 수 있다. 도 2의 동작들에 의해 생성된 부호화된 데이터 비트들은 원래의 데이터 비트들 대신 메모리 셀들에 저장된다. 도 2의 동작들은 예컨대, 제어 회로(101)의 인코더에 의해 행해질 수도 있다.
처음에, 상기 인코더는 메모리 회로의 메모리 셀들에 저장을 위해 제공된다. 데이터 비트들 각각은 메모리 회로의 대응하는 메모리 셀에 저장을 위해 제공된다. 하나 이상의 데이터 비트들이, 공지의 고착 고장을 갖는 대응하는 메모리 셀에 저장을 위해 제공된다.
동작(201)에 있어서, 상기 인코더는 제1 매트릭스를 수신한다. 이 제1 매트릭스의 각 행은 데이터 비트들의 특정한 하나에 대응한다. 동작(202)에 있어서, 인코더는 고착 고장들을 갖는 메모리 셀들에 저장을 위해 제공되는 데이터 비트들에 대응하는 유일한 제1 매트릭스의 행들을 갖는 제2 매트릭스를 생성한다. 동작(203)에 있어서, 상기 인코더는 제2 매트릭스의 선형의 독립적인 열들을 갖는 제3 매트릭스를 생성한다. 동작(204)에 있어서, 상기 인코더는 제3 매트릭스를 사용하여 부호화된 데이터 비트들 및 중복 비트들을 생성하도록 상기 데이터 비트들을 부호화한다.
데이터 비트들에 있어서 그 대응의 고착 고장과 일치하지 않는 데이터 비트들의 디지털 값들은 부호화된 데이터 비트들 중 대응의 데이터 비트들을 생성하도록 반전된다. 데이터 비트들에 있어서 그 대응의 고착 고장과 일치하는 데이터 비트들의 디지털 값들은 부호화된 데이터 비트들 중 대응의 데이터 비트들을 생성하도록 반전되지 않는다. 여러 실시예들에 따르면, 중복 비트들은 다음과 같이 인덱스에 인덱스 비트들을 포함할 수도 있다.
이어서, 상기 부호화된 데이터 비트들은 메모리 회로에서 대응하는 메모리 셀들에 저장된다. 중복 비트들 역시 메모리에 저장된다. 상기 부호화된 데이터 비트들 및 중복 비트들은 동일한 메모리 회로 또는 다른 메모리 회로들에 저장될 수 있다. 예컨대, 상기 부호화된 데이터 비트들은 메모리 회로(102)에 저장될 수 있고 상기 중복 비트들은 메모리 회로(103)에 저장될 수 있다.
도 3은 본 발명의 1 실시예에 따라서 고착 고장들을 갖는 메모리 셀들을 수용하기 위해 부호화된 데이터 비트들 및 중복 비트들을 발생하도록 데이터 비트들을 부호화하기 위한 더욱 상세한 동작들의 예를 도시한 흐름도이다. 상기 부호화된 데이터 비트들은 메모리 회로의 메모리 셀들에 저장된다. 하나 이상의 메모리 셀들은 고착 고장들을 갖는다. 고착 고장들을 갖는 메모리 셀들의 어드레스들 및 고착 고장들의 디지털 값은 도 3에 도시된 동작들을 수행하기 전에 이미 알려져 있으며 인코더에 제공된다. 도 3의 동작들에 의해 생성된 부호화된 데이터 비트들은 입력 데이터 비트들 대신 메모리 셀들에 저장된다. 도 3의 동작들은 예컨대, 제어 회로(101)에 의해 행해질 수 있다.
처음에, 데이터 비트들이 메모리 회로의 메모리 셀들에 저장을 위해 제공된다. 데이터 비트들의 각각은, 메모리 회로의 대응하는 메모리 셀에 저장을 위해 제공된다. 공지의 고착 고장들을 갖는 대응하는 메모리 셀에 저장을 위해 상기 데이터 비트들의 서브세트가 제공된다. 상기 서브세트는 하나 이상의 데이터 비트들을 포함할 수 있다.
데이터 비트들을 부호화하는 프로세스에 앞서서 데이터 비트들의 각각에 대해 다른 행을 갖는 매트릭스 M이 생성된다. 매트릭스 M의 각 행은 데이터 비트들의 특정한 하나에 대응한다. s개의 고착 고장들을 갖는 메모리 셀들에 저장을 위해 제공되는 k개 데이터 비트들의 경우에, 매트릭스 M은 k개 행들을 갖고, 매트릭스 M의 s개 행들의 서브세트는 선형, 독립적이며, 이때 상기 s는 양의 정수 k보다 작은 양의 정수이다. 매트릭스 M은 k개 메모리 셀들에 저장되는 부호화된 데이터 비트들을 생성하도록 데이터 비트들을 부호화하기 위해 사용될 수 있으며, 상기 s개의 고착 고장들은 메모리 셀들 내의 임의의 위치에 있다.
일례로서, 매트릭스 M은 패리티 체크 코드와 같은 블록 코드를 사용하여 생성될 수 있다. 보다 구체적인 예에 의하면, 상기 매트릭스 M은, BCH 코드의 패리트 체크 매트릭스의 트랜스포즈(transpose; 뒤바뀜)를 취함으로써 생성되며, 이때 BCH는 Bose Chaudhuri Hocquenghem을 지칭한다. s개의 고착 고장들을 갖는 메모리 셀들에 저장을 위해 제공되는 데이터 비트들의 수 k의 경우에(상기에서 s<k), 다음과 같이, k와 동일한 블록 사이즈를 갖는 BCH 코드가 생성될 수 있다. m>2이고 또한 t<2m-1이라 놓으면, 블록 길이가 n=2m-1로 되도록 BCH 코드가 생성될 수 있고, 패리티 체크 비트들의 수는 m×t보다 적거나 같고, 최소 길이는 적어도 2t+1이며, 이는 또한, 상기 패리티 체크 매트릭스의 임의의 2t 열들이 선형, 독립적임을 의미한다. 그러므로, BCH 코드는 블록 길이 k=2log 2 (k+1)-1(따라서 m=log2(k+1)), 및 최소 길이 s+1(따라서 2t+1=s+1이고, 이에 따라 t=s/2)로 생성된다. 파라미터 n=k 및 t=s/2를 갖는 BCH 코드의 결과적인 패리티 체크 매트릭스 MP는 최대로 m×t=(s/2)log2(k+1) 행들 및 열들을 가지며, 이때 2t=s 열들의 임의의 서브세트는 선형, 독립적인 특성을 갖는다. 간단히 하기 위해, log2(k+1) 대신 log2k가 사용된다. 패리티 체크 매트릭스 MP의 트랜스포즈는 매트릭스 M이다. 따라서 본 실시예에서 매트릭스 M은 패리티 체크 매트릭스 MP의 트랜스포즈이다. 전술한 패리티 체크 비트들의 수는 패리티 체크 매트릭스 MP의 행들의 수에 대응하며, 이에 따라 뒤바뀐(transposed) 매트릭스 M에 있어서의 열들의 수로 된다.
도 3은 동작들 301 - 309를 도시한다. 동작 301에 있어서, 인코더는 매트릭스 MS를 생성하기 위해 고착 고장들을 갖는 메모리 셀들에 저장을 위해 제공된 데이터 비트들에 대응하는 매트릭스 M의 행들의 수 s를 선택한다. 동작 301에 사용된 매트릭스 M은 상기한 바와 같이, 또는 매트릭스 M의 임의의 행들이 선형, 독립적인 것을 보장하는 임의의 방법을 사용함으로써 BCH 코드의 패리티 체크 매트릭스로부터 생성되는 매트릭스이다. 고착 고장을 갖는 메모리 셀에 저장을 위해 제공된 데이터 비트들의 하나에 대응하는 매트릭스 M의 각 행은 매트릭스 MS의 행으로서 포함된다. 공지의 고착 고장들 없이 메모리 셀들에 저장을 위해 제공된 데이터 비트들에 대응하는 매트릭스 M의 행들은 매트릭스 MS에 포함되지 않는다. 따라서 매트릭스 MS는 BCH 코드가 사용된 경우, s개의 행수 및 (slog2(k+1))/2개의 열수를 갖는다. 매트릭스 MS는 풀 랭크(full rank)를 갖는데, 그 이유는 매트릭스 MS의 s 행들이 구성상 선형이고 독립적으로 되도록 보장되기 때문이다.
동작 302에 있어서, 인코더는, 완전히 반전가능한 스퀘어 매트릭스 M'S를 생성하도록 선형, 독립적인 매트릭스 s개의 MS의 열수를 선택한다. 매트릭스 MS의 열들의 각각은 특정 열 번호에 의해 식별된다. 스퀘어 매트릭스 M'S를 생성하기 위해 동작 302에서 선택되는 매트릭스 MS의 s개의 열들의 열 번호들은 열 번호 b1, b2, ... bS로서 지칭된다. 인코더는 매트릭스 M'S가 열 번호 b1, b2, ... bS에 의해 지시되는 매트릭스 MS의 s개의 열의 수만을 갖도록 한다. 동작 302에서 생성된 스퀘어 매트릭스 M'S는 s개의 행들 및 s개의 열들을 갖는다. 또한, 스퀘어 매트릭스 M'S는 선형, 독립적 열들의 풀 랭크를 가지며, 이에 따라 매트릭스 M'S는 완전히 반전가능하다. 일 실시예에서, 상기 인코더는 스퀘어 매트릭스 M'S를 생성하기 위해 매트릭스 MS의 기약 행 제형 행렬(reduced row echelon form; 기약 가우스 행렬)을 사용한다. MS를 행 제형 행렬로의 변환은 행 연산들의 시퀀스를 사용하여 행해진다.
공지의 고착 고장들을 갖는 대응하는 메모리 셀들에 저장을 위해 데이터 비트들의 서브세트가 제공된다. 인코더는 데이터 비트들의 서브세트를 그들의 대응하는 고착 고장들의 디지털 값과 비교하여, 그의 서브세트의 데이터 비트들이 그들의 대응하는 고착 고장들과 동일한 디지털 값들을 갖는지 및 그의 서브세트의 데이터 비트들이 그들의 대응하는 고착 고장들과 상이한 디지털 값들을 갖는지를 판단한다. 도 3의 동작 303에 있어서, 인코더는 그들의 대응하는 고착 고장들과 동일한 디지털 값들을 갖는 서브세트의 데이터 비트들 및 그들의 대응하는 고착 고장들과 상이한 디지털 값들을 갖는 서브세트의 데이터 비트들을 식별한다. 벡터 U는 s개의 값들을 갖는 1×s 벡터이다. 벡터 U는 i번째 고착 고장이 그의 대응하는 데이터 비트의 디지털 값과 일치한 경우 그의 i번째 위치에 0을 갖고 i번째 그 고착 고장이 그의 대응하는 데이터 비트의 디지털 값과 일치하지 않은 경우 그의 i번째 위치에 1을 갖는다.
동작 304에 있어서, 인코더는 식 M'S×V = U의 해를 구함으로써 벡터 V를 생성한다. 이 식은 해(solution)를 갖는 데, 그 이유는 매트릭스 M'S가 완전히 반전가능하기 때문이다. 인코더는 매트릭스 M'S를 반전한 다음, 반전된 매트릭스 M'S를 동작 303에서 생성된 벡터 U와 곱하여 벡터 V를 생성한다. 벡터 V는 s개의 값들을 갖는 s×1 벡터이다.
동작 305에 있어서, 인코더는, 매트릭스 M'S를 생성하기 위해 동작 302에서 선택된 매트릭스 MS의 열들 및 벡터 V를 지시하는 인덱스 비트들을 생성한다. 상기 인덱스 비트들은 중복 비트들이다. 인덱스 비트들은 동작 308에서 생성된 부호화된 데이터 비트들과 관련된 인덱스로서 제공된다. 상기 인덱스 비트들은 데이터 비트들을 재생하기 위해 상기 부호화된 데이터 비트들을 복호화하도록 디코더에 의해 사용된다.
동작 305의 실시예에서, 인코더는, 매트릭스 M'S를 생성하기 위해 동작 302에서 선택된 매트릭스 MS의 s개의 열들 b1, b2, ... bS의 각각을 식별하도록 특정 2진수를 생성한다. 이들 2진수들은 동작 305에서 생성된 인덱스 비트들의 제1 서브세트로서 제공된다. 따라서 이 실시예에 있어서, 인덱스 비트들의 제1 서브세트는, 매트릭스 M'S를 생성하기 위해 동작 302에서 선택된 매트릭스 MS의 열 번호들 b1, b2, ... bS의 각각을 식별한다. 매트릭스 M'S를 생성하기 위해 사용된 매트릭스 MS의 열 번호들 b1, b2, ... bS를 식별하는 2진수를 나타내도록 사용되는 인덱스 비트들의 수는 다음 식 (1)과 같이 나타내진다:
Figure pat00001
식 (1)은 (slog2k)/2<k인 한, k 비트 위치들로부터 s개의 고착 고장들의 정확한 비트 위치들을 기록하는 인덱스보다 적은 인덱스 비트들을 나타낸다.
동작 305에서, 인코더는 또한, 벡터 V의 값들을 나타내는 s개의 인덱스 비트들을 생성한다. 벡터 V의 값들을 나타내는 s개의 인덱스 비트들은 동작 305에서 생성된 인덱스 비트들의 제2 서브세트이다. 동작 305에서 생성된 인덱스 비트들의 총 수는 하기식 (2)와 같다:
인덱스 비트들의 총 수 = 2s + slog2log2k (2)
동작 305의 다른 실시예에 의하면, 인코더는 매트릭스 M'S를 생성하기 위해 동작 302에서 선택된 매트릭스 MS의 ((slog2k)/2-s 열 번호들의 각각을 식별하기 위해 특정 2진수를 생성한다. 이들 2진수들은 동작 305에서 생성된 인덱스 비트들의 제1 서브세트로서 제공된다. 이 실시예에 있어서, 인덱스 비트들의 제1 서브세트는 동작 302에서 매트릭스 M'S를 생성하기 위해 선택되지 않았던 매트릭스 MS의 열 번호들의 각각을 식별한다. 디코더는 매트릭스 M'S를 생성하기 위해 선택되지 않았던 매트릭스 MS의 열 번호들을 나타내는 인덱스에 서의 2진수들에 기초하여 매트릭스 M'S를 생성하기 위해 선택된 매트릭스 MS의 열들을 추정한다. 이 실시예에서, 인코더는 또한, 동작 305에서 벡터 V의 값들을 지시하는 s개의 인덱스 비트들을 생성한다.
인덱스 비트들에서 벡터 V만이 서브세트의 데이터 비트들이 그들의 대응하는 고착 고장들의 디지털 값들과 일치하는지 또는 일치하지 않는지에 의존한다. 나머지 인덱스 비트들은, 대응하는 메모리 셀들 내의 고착 고장들의 위치에만 의존한다. s개의 인덱스 비트들만, 동일한 메모리 셀들에 대해 상이한 세트의 데이터 비트들을 부호화할 때 변한다. 나머지 인덱스 비트들은 동일한 메모리 셀들에 대해 상이한 세트의 데이터 비트들을 데이터 비트들을 부호화할 때 그대로 남아있다.
매트릭스 M의 열들의 각각은 특정한 열 번호에 의해 식별된다. 매트릭스 M의 열들은, 매트릭스 MS의 대응하는 열들을 식별하는 동일한 열 번호들에 의해 식별된다. 동작 306에서, 인코더는 동작 302에서 매트릭스 M'S를 생성하도록 매트릭스 MS로부터 선택된 동일한 열 번호들 b1, b2, ... bS를 갖는 매트릭스 M으로부터 s개의 열들을 선택함으로써 매트릭스 M의 서브매트릭스 G를 생성한다. 서브매트릭스 G는 k개의 행들 및 s개의 열들을 갖는다. 인코더는 서브매트릭스 G가, 동작 302에서 매트릭스 M'S를 생성하도록 매트릭스 MS로부터 선택된 열 번호들 b1, b2, ... bS를 갖는 매트릭스 M으로부터 s개의 열들을 갖도록 한다.
동작 307에서, 인코더는 벡터 V를 서브매트릭스 G와 곱하여 벡터 W를 계산한다(즉, W = G × V). 벡터 W는 k 값을 갖는 k×1 벡터이며, 이때 k는 데이터 비트들의 수이다. 동작 308에서, 인코더는 벡터 W를 데이터 비트들에 적용하여 부호화된 데이터 비트들을 생성하도록 한다. 동작 308에서, 인코더는 1과 같은 벡터 W에 있어서의 대응하는 i번째 값을 갖는 i번째 데이터 비트들의 각각을 반전시키고 또한 0과 같은 벡터 W에서의 대응하는 i번째 값을 갖는 i번째 데이터 비트들의 각각을 반전시키지 않음으로써 부호화된 데이터 비트들을 생성한다. M'S×V = U이기 때문에, 고착 고장들을 갖는 메모리 셀들에 저장을 위해 제공된 부호화된 데이터 비트들의 서브세트는 그들의 대응하는 고착 고장들과 동일한 디지털 값들을 갖는다. 동작 309에 있어서, 인코더는 메모리 회로의 대응하는 메모리 셀들에 저장을 위해 상기 부호화된 데이터 비트들을 제공한다.
도 3에 대해 상기와 같이 기술되고 도시된 동작의 일부는 도 3에 도시된 순서와 다른 순서로 행해질 수도 있다. 예를 들면, 동작 306은 동작들 304-305에 앞서 행해질 수도 있다.
도 4는 본 발명의 1 실시예에 따라서 중복 비트들을 사용하여 데이터 비트들을 재생하도록 도 2 및/또는 도 3의 동작들에 의해 생성된 부호화된 데이터 비트들을 복호화하기 위한 동작들의 예를 도시한 흐름도이다. 처음에, 상기 부호화된 데이터 비트들은 메모리 회로의 메모리 셀들로부터 판독된다. 다음에, 상기 부호화된 데이터 비트들 및 인덱스 비트들(즉, 중복 비트들)은 제어 회로(101)와 같은 제어 회로의 디코더에 제공된다.
동작 401에 있어서, 디코더는 매트릭스 M을 수신한다. 동작 401에 있어서의 매트릭스 M은 도 3의 동작들에 있어서 부호화된 데이터 비트들을 생성하도록 사용된 것과 동일한 매트릭스 M이다. 매트릭스 M의 s개의 행들의 임의의 서브세트는 선형, 독립적이다. 동작 402에 있어서, 디코더는 인덱스 비트들의 제1 서브세트에 기초하여 선택된 매트릭스 M으로부터 열들을 갖는 매트릭스 M의 서브 매트릭스 G를 생성한다.
도 3에서 동작 305의 제1 실시예에 대해 기술된 바와 같이, 인덱스 비트들의 제1 서브세트는 매트릭스 M'S를 생성하기 위해 동작 302에서 선택된 매트릭스 MS의 열 번호들 b1, b2, ... bS의 각각을 식별한다. 도 3에서 동작 305의 제2 실시예에 대해 기술된 바와 같이, 인덱스 비트들의 제1 서브세트는 동작 302에서 매트릭스 M'S를 생성하도록 선택되지 않은 매트릭스 MS의 열 번호들의 각각을 식별한다.
동작 305의 제1 실시예에 있어서, 디코더는 서브 매트릭스 G가 동작 305에서 인덱스 비트들의 제1 서브세트에 의해 지시된 열 번호들 b1, b2, ... bS를 갖는 매트릭스 M으로부터 s개의 열들을 갖도록 한다. 동작 305의 제2 실시예에 있어서, 디코더는 서브 매트릭스 G가, 동작 305에서 인덱스 비트들의 제1 서브세트에 의해 지시되지 않은 열 번호들 b1, b2, ... bS를 갖는 매트릭스 M으로부터 s개의 열들을 갖도록 한다. 서브 매트릭스 G는 k개의 행들 및 s개의 열들을 갖는다.
도 3에 있어서, 동작 305에 대해 전술한 바와 같이, 인덱스 비트들의 제2 서브세트는 벡터 V의 s개의 값들을 나타낸다. 인덱스 비트들의 제2 서브세트는 s개의 비트들을 갖는다. 동작 403에서, 디코더는 인덱스 비트들의 제2 서브세트로부터 벡터 V를 생성한다. 동작 404에서, 디코더는 벡터 V 및 매트릭스 G에 기초하여 벡터 W를 생성한다. 상기 디코더는 식 W = G×V의 해를 구함으로써 벡터 W를 계산한다.
동작 405에 있어서, 디코더는 벡터 W를 부호화된 데이터 비트들에 적용하여 데이터 비트들을 재생하도록 한다. 동작 405에서, 디코더는 1과 같은 벡터 W에서의 대응하는 i번째 값을 갖는 i번째 부호화된 데이터 비트들의 각각을 반전시키고 또한 0과 같은 벡터 W에서의 대응하는 i번째 값을 갖는 i번째 부호화된 데이터 비트들의 각각을 반전시키지 않음으로써 데이터 비트들을 재생한다.
도 5a-5e는 본 발명의 1 실시예에 따라서 도 3의 부호화 동작들이 예시적 인코딩 매트릭스들을 사용하여 데이터 비트들의 예시적 세트들에 적용될 수 있는 방법의 예들을 도시한다. 도 5a는 0-7의 숫자를 붙인 비트 위치들을 갖는 8개 데이터 비트들의 예시적 세트를 도시한다. 상기 8개 데이터 비트들은 도 5a에 도시된 바와 같이 메모리 회로들의 8개의 대응하는 메모리 셀들에 저장을 위해 제공된다. 비트 위치 2, 4 및 7에 대응하는 메모리 셀들은 고착 고장들을 갖는다. 비트 위치들 2 및 4의 메모리 셀들은 도 5a에서 S0으로 나타낸 바와 같이 0으로 고착되고, 비트 위치 7의 메모리 셀은 도 5a에서 S1으로 나타낸 바와 같이 1로 고착된다.
도 5b는 4개의 예시적 인코딩 매트릭스 M, MS, M'S 및 G를 도시한다. 도 5b의 예에 있어서의 매트릭스 M은 8개의 행들 및 4개의 열들을 갖는다. 매트릭스 M의 8개 행들은 도 5b에서 행들 0-7로 나타낸다. 매트릭스 M의 8개 행들의 각각은 8개 데이터 비트들의 다른 하나에 대응한다. 8개 데이터 비트들은 대응하는 비트 위치 2, 4 및 7에 3개의 고착 고장들을 갖는 메모리 셀들에 저장을 위해 제공되기 때문에, 인코더는 매트릭스 MS가 동작 301에서 고착 고장들을 갖는 메모리 셀들에 대응하는 매트릭스 M의 단지 행들 2, 4, 및 7만 갖도록 한다. 매트릭스 M의 다른 행들은 매트릭스 MS에 부가되지 않는다. 매트릭스 MS는 3개의 행들 및 4개의 열들을 갖는다. 매트릭스 M 및 매트릭스 MS의 각각에 있어서의 4개 열들은 열 0, 1, 2 및 3이고, 이들은 각각, 도 5b에 있어서 열 번호들 00, 01, 10 및 11과 같은 2진수로 참조된다.
열 번호들 11, 10 및 00으로 나타낸 매트릭스 MS의 열 번호들은 선형, 독립적이다. 열 번호 01은 열 번호 11과 00의 선형 조합이다. 따라서, 인코더는 매트릭스 M'S가 도 5b에 도시된 바와 같이 열 번호들 11, 10 및 00을 갖는 매트릭스 MS의 3개의 열들을 갖도록 한다. 매트릭스 MS 및 매트릭스 M'S의 열 번호들 11, 10 및 00은, 각각, 동작 302에서 선택된 열 번호들 b1, b2 및 b3이다. 스퀘어 매트릭스(square matrix) M'S는 3개의 행 및 3개의 열을 갖는다. 매트릭스 MS의 열 번호 01은 매트릭스 M'S에 부가되지 않는다.
동작 306에 있어서, 인코더는 상기한 바와 같이 매트릭스 M의 서브 매트릭스 G를 생성한다. 서브 매트릭스 G는 매트릭스 M의 전체 8개 행들을 갖지만, 서브 매트릭스 G는 도 5b에 도시된 바와 같이, 열 번호들 11, 10 및 00을 갖는 매트릭스 M의 단지 3개의 열만 갖는다. 서브 매트릭스 G는 동작 302에서 매트릭스 M'S를 생성하도록 매트릭스 MS로부터 선택된 동일한 열 번호들 11, 10 및 00(즉, b1, b2 및 b3)을 갖는 매트릭스 M의 열들만 갖는다.
동작 303에 있어서, 인코더는 상기한 바와 같이 벡터 U를 생성한다. 비트 위치 2에 대응하는 메모리 셀들의 고착 고장은 도 5a에 도시된 바와 같이 비트 위치 2에서의 데이터 비트와 동일한 디지털 값을 갖기 때문에, 벡터 U의 제1 값은 도 5c에 도시된 바와 같이 0이다. 비트 위치 4 및 7에 대응하는 메모리 셀들의 고착 고장들은, 각각, 도 5a에 도시된 바와 같이 비트 위치 4 및 7에서의 데이터 비트들과 상이한 디지털 값들을 갖기 때문에, 벡터 U의 제2 값 및 제3 값은 도 5c에 도시된 바와 같이 1이다.
도 5c는 식 M'S×V = U의 해를 구함으로써 벡터 V를 생성하도록 동작 304를 행하는 인코더의 일례를 도시한다. 인코더는 M'S를 반전시킨 다음, M'S의 반전을 벡터 U와 곱하여 벡터 V를 생성한다. 벡터 V는 도 5c의 실시예에서 3×1이다.
도 5d는 식 W = G×V의 해를 구함으로써 벡터 W를 생성하도록 동작 307을 행하는 인코더의 일례를 도시한다. 도 5d의 실시예에서, 벡터 W는 8개의 값을 갖는 1×8 벡터이다. 인코더가 벡터 W를 계산한 후, 인코더는 벡터 W를 데이터 비트들에 적용하여 도 5e에 도시된 부호화된 데이터 비트들을 생성한다. 상기 인코더는, 예컨대, 벡터 W의 i번째 값 및 대응하는 i번째 데이터 비트의 각 쌍에 대해 모듈로 2(modulo 2)를 부가함으로써 벡터 W를 데이터 비트들에 적용하여 부호화된 데이터 비트들을 생성할 수도 있다.
도 5e는 또한, 상기 부호화된 데이터 비트들에 대한 인덱스 비트들을 도시한다. 첫 번째 두 개의 인덱스 비트들은 동작 305의 제2 실시예에 대해 앞에서 설명한 바와 같이, 매트릭스 M'S로 전달되지 않은 매트릭스 MS의 열의 열 번호 01을 나타낸다. 디코더는 동작 302에서 매트릭스 M'S로 전달되지 않은 매트릭스 MS의 열의 열 번호 01을 나타내는 첫 번째 두 개의 인덱스 비트들에 기초하여 매트릭스 M'S를 생성하도록 사용되는 매트릭스 MS의 3개 열들을 추정한다. 다음의 3개의 인덱스 비트들은 벡터 V의 값들(101)을 나타낸다.
다른 실시예에 따르면, 인덱스에 있어서의 인덱스 비트들의 수는 데이터 비트들의 수 k가 아주 큰 경우에 감소될 수 있다. 이 실시를 점근적(asymptotic) 개선이라 한다. 이 실시예에서, 데이터 비트들의 블록이 메모리 회로의 대응하는 메모리 셀들에 저장을 위해 제공된다. 어떤 파리미터 t의 경우에(이때 t는 양의 정수), 데이터 비트들의 블록은 서브 블록의 s/t 수로 분할되며, 이때 s는 메모리 회로의 대응하는 메모리 셀들에 있어서의 고착 고장들의 수이다. 데이터 비트들의 서브 블록들의 각각은 메모리 셀들의 서브세트에 대응한다. 메모리 셀들의 서브세트들의 각각은 고착 고장들을 갖는 메모리 셀들과 정확히 같은 수 t를 갖는다. 데이터 비트들의 서브 블록의 s/t 수에 있어서, 데이터 비트들의 번호들을
Figure pat00002
로 한다. 서브 블록들의 각각은 다른 번호의 데이터 비트들을 가질 수 있다. 이와 다르게, 서브 블록들의 일부 또는 전부는 동일한 번호의 데이터 비트들을 가질 수도 있다.
서브 블록들에 데이터 비트들의 번호들
Figure pat00003
를 저장하기 위해, 인코더는
Figure pat00004
와 같은 다수의 인덱스 비트들를 생성하며, 상기 식에서 k는 데이터 블록들에 있어서의 데이터 비트들의 총 수이다. 데이터 비트들의 서브 블록들의 각각에 대해, 인코더는
Figure pat00005
와 같은 인덱스에 있어서의 다수의 인덱스 비트들을 생성하는 도 3과 관련하여 기술한 에 대해 설명된 선형 대수 기술을 사용한다. 이 실시예에 대해 인코더에 의해 생성된 인덱스 비트들의 총 수는 식 (3)과 같다.
인덱스 비트들의 수 =
Figure pat00006
(3)
함수 log2log2x는 오목 함수(concave function)이다. 식 (3)에서 ai'들의 모두가 같을 때 식 (3)은 그 최대치에 있어서 서브 블록들의 각각이 동일한 비트 수를 갖는다. 하기 식 (4)는 서브 블록들의 각각이 동일한 비트 수를 가질 때 이 실시예에 대한 인코더에 의해 생성된 인덱스 비트들의 총 수를 나타낸다.
인덱스 비트들의 수=
Figure pat00007
(4)
이 실시예에서 인덱스의 인덱스 비트들의 수는 파라미터 t에 대해 최소화될 수 있다. 만일 q=k/s일 경우, t=(log2q)2은 이 실시예에서 인덱스의 인덱스 비트들의 수를 최소화한다. 이 값이 t일 때, 인덱스의 인덱스 비트들의 총 수는 하기 식 (5)에 나타낸 바와 같다.
인덱스 비트들의 수 =
Figure pat00008
식 (5) 두번째 항은 근사적으로 slog2log2q이다. 식 (5)의 나머지 항들의 각각은, q>3인 경우, s보다 적다. 따라서, 식 (5)는 하기 식 (6)에 나타낸 바와 같이 간소화 될 수 있다. 하기 식 (6)은 이 근사 식에 따라 인덱스 비트들의 최대 수를 나타낸다.
인덱스 비트들의 수 =
Figure pat00009
본 발명의 실시예들은 예컨대, 하드웨어, 소프트웨어, 및 프로그램 명령을 내장하는 컴퓨터 판독가능한 매체 중 하나 또는 이들의 조합을 사용하여 실시될 수 있다. 본 발명의 실시예들은, 컴퓨터상에 실행될 수 있는 일시적이 아닌 컴퓨터 판독가능한 매체에 저장되는 프로그램 코드로서 구현될 수 있다. 본 발명의 실시예들에 의해 실시되는 소프트웨어 및 본 발명의 결과들은, 반도체 메모리, 위상 변경 메모리, 하드 디스크 드라이브, 콤팩트 디스크(CD), 디지털 비디오 디스크(DVD), 기타 매체와 같은 컴퓨터 판독가능한 매체에 저장될 수 있다. 본 발명의 결과들은 프로세서에 의해 실행 또는 처리되고, 사용자에 표시되고, 네트워크상에 신호로 전송되는 등과 같은 각종 목적을 위해 사용될 수 있다. 본 발명의 실시예들은 또한, 네트워크를 통해 연결된 다수의 컴퓨터 시스템들이 분산 처리에 영향을 미치도록, 일시적이 아닌 컴퓨터 판독가능한 매체에 저장되는 컴퓨터 판독가능한 프로그램 코드로서 구현될 수도 있다.
본 발명의 예시적 실시예들의 상기 설명은 예시 및 기술의 목적으로 제시된 것이다. 상기 설명은 본 발명을 본 명세서에 기재된 예들로 한정하거나 모두 포함하도록 하는 것을 의도하지 않는다. 어떤 예에서, 본 발명의 특징들은 명시된 바와 같이 다른 특징들의 대응 사용 없이 채용될 수 있다. 본 발명의 관점을 벗어남이 없이, 많은 변경 예, 대체 예 및 변형 예들이 상기 기술의 관점에서 가능할 것이다.

Claims (21)

  1. 데이터 저장 시스템으로서,
    메모리 셀들을 갖는 메모리 회로; 및
    상기 메모리 셀들에 저장하기 위해 제공된 데이터 비트들을 수신하도록 동작가능한 제어 회로를 포함하고,
    상기 제어 회로는 제1 매트릭스를 수신하도록 동작할 수 있고, 상기 제1 매트릭스의 각 행은 데이터 비트들의 특정한 하나에 대응하고, 상기 제어 회로는, 고착 고장들을 갖는 메모리 셀들의 서브세트에 저장을 위해 제공된 데이터 비트들에 대응하는 제1 매트릭스의 행들만 갖는 제2 매트릭스를 생성하도록 동작가능 하고, 상기 제어 회로는, 제2 매트릭스의 선형, 독립적인 열들을 갖는 제3 매트릭스를 생성하도록 동작가능하며,
    상기 제어 회로는, 상기 제3 매트릭스를 사용하여, 부호화된 데이터 비트들 및 중복 비트들을 생성하기 위해 데이터 비트들을 부호화하도록 동작가능한, 데이터 저장 시스템.
  2. 제1항에 있어서, 상기 제어 회로는, 고착 고장을 갖는 메모리 셀들의 대응하는 하나에 저장을 위해 제공된 데이터 비트들의 각각을 고착 고장의 값과 비교하도록 동작가능하고, 상기 제어 회로는, 상기 메모리 셀들의 대응하는 하나의 고착 고장의 값과 상이한 값을 갖는 데이터 비트들의 각각을 식별하고 또한 상기 메모리 셀들의 대응하는 하나의 고착 고장의 값과 동일한 디지털 값을 갖는 데이터 비트들의 각각을 식별하는 제1 벡터를 생성하도록 동작가능한, 데이터 저장 시스템.
  3. 제2항에 있어서, 상기 제어 회로는, 제3 매트릭스를 반전시켜 제4 매트릭스를 생성하도록 동작가능하고, 상기 제어 회로는, 상기 제4 매트릭스를 제1 벡터와 곱하여 제2 벡터를 생성하도록 동작가능하고, 상기 메모리 회로는 메모리 셀들에 상기 부호화된 데이터 비트들을 저장하도록 동작가능한, 데이터 저장 시스템.
  4. 제3항에 있어서, 상기 제어 회로는, 상기 중복 비트들이 제2 벡터 및 제3 매트릭스에 있는 제2 매트릭스의 선형, 독립적인 열들을 나타내도록 동작가능한, 데이터 저장 시스템.
  5. 제3항에 있어서, 상기 제3 매트릭스에 있는 제2 매트릭스의 선형, 독립적인 열들은 열 번호들을 갖고, 상기 제어 회로는, 제3 매트릭스에 있는 제2 매트릭스의 선형, 독립적인 열들과 동일한 열 번호들을 갖는 제1 매트릭스로부터의 열들만 갖는 제5 매트릭스를 생성하도록 동작가능한, 데이터 저장 시스템.
  6. 제5항에 있어서, 상기 제어 회로는, 상기 제5 매트릭스를 제2 벡터와 곱하여 제3 벡터를 생성하도록 동작가능하고, 상기 제어 회로는 상기 제3 벡터를 데이터 비트들에 적용하여 상기 부호화된 데이터 비트들을 생성하도록 동작가능한, 데이터 저장 시스템.
  7. 제1항에 있어서, 상기 메모리 회로는 고착 고장들을 갖는 s개의 메모리 셀들을 포함하고, 상기 제1 매트릭스의 s개의 행들의 임의의 서브세트는 선형, 독립적인, 데이터 저장 시스템.
  8. 제1항에 있어서, 상기 제1 매트릭스는 BCH 코드의 패리티 체크 매트릭스를 트랜스포스(transpose)함으로써 생성되는, 데이터 저장 시스템.
  9. 데이터 저장 시스템으로서,
    메모리 셀들을 구비하는 메모리 회로; 및
    상기 메모리 셀들로부터 판독된 부호화된 데이터 비트들을 수신하도록 동작가능한 제어회로를 포함하고, 상기 제어 회로는 중복 비트들을 수신하도록 동작가능하며,
    상기 제어 회로는, 제1 매트릭스를 수신하도록 동작가능하고, 상기 제어 회로는, 상기 중복 비트들의 제1 서브세트에 기초하여 선택된 제1 매트릭스로부터의 열들의 서브세트를 갖는 제2 매트릭스를 생성하도록 동작가능하고, 상기 제어 회로는, 상기 중복 비트들의 제2 서브세트에 기초하여 제1 벡터를 생성하도록 동작가능하고, 상기 제어 회로는, 상기 제1 벡터 및 제2 매트릭스에 기초하여 제2 벡터를 생성하도록 동작가능하고,
    상기 제어 회로는, 상기 제2 벡터를 상기 부호화된 데이터 비트들에 적용하여 데이터 비트들을 생성하도록 동작가능한, 데이터 저장 시스템.
  10. 제9항에 있어서, 상기 제어 회로는, 제1 벡터를 제2 매트릭스와 곱함으로써 상기 제2 벡터를 생성하도록 동작가능한, 데이터 저장 시스템.
  11. 제9항에 있어서, 상기 제어 회로는, 상기 데이터 비트들의 대응하는 하나를 생성하기 위해 모듈로 2를 부가하여 상기 부호화된 데이터 비트들의 각각을 제2 벡터의 대응하는 값에 부가하도록 동작가능하고, 상기 제1 매트릭스는 BCH 코드의 패리티 체크 매트릭스를 트랜스포스함으로써 생성되는, 데이터 저장 시스템.
  12. 제9항에 있어서, 상기 제어 회로와 상기 메모리 회로는 하나의 집적 회로에 있는, 데이터 저장 시스템.
  13. 제9항에 있어서, 상기 제어 회로는 제1 집적 회로에 있고, 상기 메모리 회로는 제2 집적 회로에 있는, 데이터 저장 시스템.
  14. 데이터 저장 시스템을 위한 방법으로서,
    메모리 회로의 메모리 셀들에 저장을 위해 제공되는 데이터 비트들을 수신하는 단계;
    제1 매트릭스를 수신하는 단계로, 상기 제1 매트릭스의 각 행이 데이터 비트들의 다른 하나에 대응하는 단계;
    제어 회로를 사용하여, 고착 고장들을 갖는 메모리 셀들의 서브세트에 저장을 위해 제공된 데이터 비트들에 대응하는 제1 매트릭스의 행들만 갖는 제2 매트릭스를 생성하는 단계;
    상기 제어 회로를 사용하여, 상기 제2 매트릭스의 선형, 독립적인 열들만 갖는 제3 매트릭스를 생성하는 단계; 및
    상기 제어 회로를 사용하여, 상기 제3 매트릭스에 기초하여 부호화된 데이터 비트들 및 중복 비트들을 생성하도록 상기 데이터 비트들을 부호화하는 단계를 포함하는 데이터 저장 시스템을 위한 방법.
  15. 제14항에 있어서,
    상기 제어 회로를 사용하여, 고착 고장을 갖는 메모리 셀들의 대응하는 하나에 저장을 위해 제공된 데이터 비트들의 각각을 고착 고장의 값과 비교하는 단계; 및
    제어 회로를 사용하여, 상기 메모리 셀들의 대응하는 하나의 고착 고장의 값과 다른 값을 갖는 데이터 비트들의 각각을 식별하고 또한 상기 메모리 셀들의 대응하는 하나의 고착 고장의 값과 동일한 값을 갖는 데이터 비트들의 각각을 식별하는 제1 벡터를 생성하는 단계를 더 포함하는 데이터 저장 시스템을 위한 방법.
  16. 제15항에 있어서,
    상기 제어 회로를 사용하여, 상기 제3 매트릭스를 반전시켜 제4 매트릭스를 생성하도록 단계; 및
    상기 제어 회로를 사용하여, 상기 제4 매트릭스를 제1 벡터와 곱하여 제2 벡터를 생성하는 단계를 더 포함하는 데이터 저장 시스템을 위한 방법.
  17. 제16항에 있어서,
    상기 제어 회로를 사용하여 상기 제3 매트릭스에 기초하여 부호화된 데이터 비트들 및 중복 비트들을 생성하도록 상기 데이터 비트들을 부호화하는 단계는, 상기 중복 비트들이, 제2 벡터 및 제3 매트릭스에 있는 제2 매트릭스의 선형, 독립적인 열들을 나타내도록 하는 단계를 더 포함하는, 데이터 저장 시스템을 위한 방법.
  18. 제16항에 있어서, 상기 제3 매트릭스에 있는 제2 매트릭스의 선형, 독립적인 열들은 열 번호들을 갖고, 상기 방법은,
    상기 제어 회로를 사용하여, 제3 매트릭스에 있는 제2 매트릭스의 선형, 독립적인 열들과 동일한 열 번호들을 갖는 제1 매트릭스로부터 열들의 서브세트를 갖는 제5 매트릭스를 생성하는 단계를 더 포함하는 데이터 저장 시스템을 위한 방법.

  19. 제18항에 있어서,
    상기 제어 회로를 사용하여, 상기 제5 매트릭스를 제2 벡터와 곱하여 제3 벡터를 생성하는 단계를 더 포함하고;
    상기 제어 회로를 사용하여 상기 제3 매트릭스에 기초하여 부호화된 데이터 비트들 및 중복 비트들을 생성하도록 상기 데이터 비트들을 부호화하는 단계는, 상기 제3 벡터를 상기 데이터 비트들에 적용하여 상기 부호화된 데이터 비트들을 생성하는 단계를 더 포함하는 데이터 저장 시스템을 위한 방법.
  20. 데이터 저장 시스템을 위한 방법으로서,
    메모리 회로의 메모리 셀들로부터 판독된 부호화된 데이터 비트들을 수신하는 단계;
    중복 비트들을 수신하는 단계;
    제1 매트릭스를 수신하는 단계;
    제어 회로를 사용하여, 상기 중복 비트들의 제1 서브세트에 기초하여 선택된 제1 매트릭스로부터의 열들의 서브세트를 갖는 제2 매트릭스를 생성하는 단계;
    제어 회로를 사용하여, 상기 중복 비트들의 제2 서브세트에 기초하여 제1 벡터를 생성하는 단계;
    제어 회로를 사용하여, 상기 제1 벡터 및 제2 매트릭스에 기초하여 제2 벡터를 생성하는 단계; 및
    제어 회로를 사용하여, 상기 제2 벡터를 상기 부호화된 데이터 비트들에 적용하여 데이터 비트들을 생성하는 단계를 포함하는 데이터 저장 시스템을 위한 방법.
  21. 제20항에 있어서, 상기 제1 벡터 및 제2 매트릭스에 기초하여 제2 벡터를 생성하는 단계는, 상기 제1 벡터를 제2 매트릭스와 곱함으로써 제2 벡터를 생성하는 단계를 더 포함하는 데이터 저장 시스템을 위한 방법.
KR1020130120076A 2012-10-10 2013-10-08 고착 고장을 갖는 메모리 셀들을 수용하기 위한 데이터의 부호화 및 복호화 KR101637065B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/649,098 US9274884B2 (en) 2012-10-10 2012-10-10 Encoding and decoding data to accommodate memory cells having stuck-at faults
US13/649,098 2012-10-10

Publications (2)

Publication Number Publication Date
KR20140046386A true KR20140046386A (ko) 2014-04-18
KR101637065B1 KR101637065B1 (ko) 2016-07-06

Family

ID=49630277

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130120076A KR101637065B1 (ko) 2012-10-10 2013-10-08 고착 고장을 갖는 메모리 셀들을 수용하기 위한 데이터의 부호화 및 복호화

Country Status (5)

Country Link
US (1) US9274884B2 (ko)
JP (1) JP5805727B2 (ko)
KR (1) KR101637065B1 (ko)
DE (1) DE102013016681B4 (ko)
GB (1) GB2507413B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150060019A (ko) * 2013-11-25 2015-06-03 삼성전자주식회사 메모리 시스템에서 데이터를 인코딩 및 디코딩하기 위한 방법 및 장치
KR20210094666A (ko) * 2018-12-21 2021-07-29 마이크론 테크놀로지, 인크. 메모리 디바이스에서 데이터를 구성하는 장치 및 방법
KR20220014773A (ko) * 2020-07-29 2022-02-07 국방과학연구소 통신 파라미터 추정 장치 및 그 방법

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104658608B (zh) * 2013-11-22 2018-03-06 华为技术有限公司 存储设备的写入方法及写入装置
JP5918884B1 (ja) * 2015-05-12 2016-05-18 日本電信電話株式会社 復号装置、復号方法、およびプログラム
KR102565005B1 (ko) 2016-08-04 2023-08-07 에스케이하이닉스 주식회사 저항 변화 메모리의 수명 연장 방법 및 그 방법을 이용하는 데이터 저장 시스템
DE102016225081A1 (de) * 2016-12-15 2018-06-21 Robert Bosch Gmbh Vorrichtung und Verfahren zum Bestimmen der Pinpoint-Fähigkeit möglicher Fehler einer oder mehrerer Komponenten
KR20200126178A (ko) 2019-04-29 2020-11-06 삼성전자주식회사 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004362587A (ja) * 2003-06-04 2004-12-24 Hewlett-Packard Development Co Lp メモリシステム
KR100713206B1 (ko) * 2006-07-21 2007-05-02 연세대학교 산학협력단 다중고착 고장 진단을 위한 매칭 방법
KR20080102902A (ko) * 2007-05-22 2008-11-26 삼성전자주식회사 가변 부호화율을 가지는 ldpc 부호 설계 방법, 장치 및그 정보 저장 매체

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3949208A (en) 1974-12-31 1976-04-06 International Business Machines Corporation Apparatus for detecting and correcting errors in an encoded memory word
JPH06202963A (ja) * 1992-12-28 1994-07-22 Fujitsu Ltd メモリ故障検出回路
JPH09204365A (ja) * 1996-01-24 1997-08-05 Sony Corp メモリ検査符号発生回路
JP3452725B2 (ja) * 1996-06-11 2003-09-29 日本放送協会 トレリス軟判定誤り訂正回路およびトレリス変分調整方法
US6868022B2 (en) 2003-03-28 2005-03-15 Matrix Semiconductor, Inc. Redundant memory structure using bad bit pointers
US7069494B2 (en) * 2003-04-17 2006-06-27 International Business Machines Corporation Application of special ECC matrix for solving stuck bit faults in an ECC protected mechanism
US7533321B2 (en) * 2005-09-13 2009-05-12 International Business Machines Corporation Fault tolerant encoding of directory states for stuck bits
US8144037B2 (en) 2007-07-12 2012-03-27 Intellectual Ventures Fund 44 Llc Blocking for combinatorial coding/decoding for electrical computers and digital data processing systems
JP5143280B2 (ja) 2008-06-11 2013-02-13 エヌエックスピー ビー ヴィ 相変化メモリ及び制御方法
US8331168B2 (en) 2009-04-30 2012-12-11 International Business Machines Corporation Increased capacity heterogeneous storage elements
US8412987B2 (en) 2009-06-30 2013-04-02 Micron Technology, Inc. Non-volatile memory to store memory remap information
US8255742B2 (en) 2009-11-18 2012-08-28 Microsoft Corporation Dynamically replicated memory
US8839053B2 (en) 2010-05-27 2014-09-16 Microsoft Corporation Error correcting pointers for non-volatile storage
US8352839B2 (en) 2010-06-11 2013-01-08 International Business Machines Corporation Encoding data into constrained memory
US8634235B2 (en) 2010-06-25 2014-01-21 Macronix International Co., Ltd. Phase change memory coding
US8996955B2 (en) * 2011-11-16 2015-03-31 HGST Netherlands B.V. Techniques for storing data in stuck and unstable memory cells
US9235465B2 (en) * 2012-06-06 2016-01-12 University of Pittsburgh—of the Commonwealth System of Higher Education Recursively determined invertible set approach to correct multiple stuck-at faults in rewritable memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004362587A (ja) * 2003-06-04 2004-12-24 Hewlett-Packard Development Co Lp メモリシステム
KR100713206B1 (ko) * 2006-07-21 2007-05-02 연세대학교 산학협력단 다중고착 고장 진단을 위한 매칭 방법
KR20080102902A (ko) * 2007-05-22 2008-11-26 삼성전자주식회사 가변 부호화율을 가지는 ldpc 부호 설계 방법, 장치 및그 정보 저장 매체

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
C. Heegard, IEEE Trans. on Information Theory, Vol. IT-29, No. 6, November 1983, pages 831-842.* *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150060019A (ko) * 2013-11-25 2015-06-03 삼성전자주식회사 메모리 시스템에서 데이터를 인코딩 및 디코딩하기 위한 방법 및 장치
KR20210094666A (ko) * 2018-12-21 2021-07-29 마이크론 테크놀로지, 인크. 메모리 디바이스에서 데이터를 구성하는 장치 및 방법
US11710524B2 (en) 2018-12-21 2023-07-25 Micron Technology, Inc. Apparatuses and methods for organizing data in a memory device
KR20220014773A (ko) * 2020-07-29 2022-02-07 국방과학연구소 통신 파라미터 추정 장치 및 그 방법

Also Published As

Publication number Publication date
JP2014078945A (ja) 2014-05-01
KR101637065B1 (ko) 2016-07-06
DE102013016681B4 (de) 2019-12-05
US9274884B2 (en) 2016-03-01
GB2507413B (en) 2014-12-10
DE102013016681A1 (de) 2014-04-10
JP5805727B2 (ja) 2015-11-04
GB201317683D0 (en) 2013-11-20
GB2507413A (en) 2014-04-30
US20140101516A1 (en) 2014-04-10

Similar Documents

Publication Publication Date Title
KR101637065B1 (ko) 고착 고장을 갖는 메모리 셀들을 수용하기 위한 데이터의 부호화 및 복호화
US8331168B2 (en) Increased capacity heterogeneous storage elements
JP5923631B2 (ja) データ反転によってデータ記憶を改良するための装置および方法
KR101618925B1 (ko) 고착 고장을 갖는 메모리 셀에 비트를 저장하기 위한 기법
US8140945B2 (en) Hard component failure detection and correction
CN106469099B (zh) 在应用wom码的情况下的错误纠正
CA3053855C (en) Data-storage method and apparatus, and data-recovery method and apparatus
NL8104342A (nl) Rekenmachinesysteem, gebaseerd op een symboolkorrigerende kode met twee werkmodes.
JP2011514743A (ja) 受信したシンボル列におけるフェーズドバーストエラー、消失、シンボルエラー、及び、ビットエラーを検出及び訂正するための方法及びシステム
TW202011189A (zh) 分散式存儲系統、方法和裝置
WO2019246527A1 (en) Method and apparatus for improved data recovery in data storage systems
JP2017022651A (ja) 誤り訂正装置、半導体記憶装置、および誤り訂正方法
US20200233743A1 (en) Error correction code memory device and codeword accessing method thereof
KR101543081B1 (ko) 고착 고장을 갖는 메모리 셀을 수용하기 위한 리던던트 비트의 인코딩 및 디코딩
KR102007163B1 (ko) 인코더, 디코더 및 이를 포함하는 반도체 장치
JP5646723B2 (ja) 組合せ数体系を用いて符号化および復号するための方法
US11003528B2 (en) Memory system including an error correction function
Chen et al. A new Zigzag MDS code with optimal encoding and efficient decoding
KR20190138143A (ko) 패리티 체크 행렬 생성 장치, 그것의 동작 방법 및 그것에 의해 생성된 패리티 체크 행렬을 사용하는 에러 정정 회로
US9450617B2 (en) Distribution and replication of erasure codes
CN113422612B (zh) 编码方法、译码方法及相关装置、电子设备和存储介质
CN115599298A (zh) 一种编码/解码方法和系统
WO2017186871A1 (en) Data protection coding technique

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 4