KR101284471B1 - 다중-레벨 시스템에서의 비트와이즈 동작들 및 장치 - Google Patents

다중-레벨 시스템에서의 비트와이즈 동작들 및 장치 Download PDF

Info

Publication number
KR101284471B1
KR101284471B1 KR1020127013353A KR20127013353A KR101284471B1 KR 101284471 B1 KR101284471 B1 KR 101284471B1 KR 1020127013353 A KR1020127013353 A KR 1020127013353A KR 20127013353 A KR20127013353 A KR 20127013353A KR 101284471 B1 KR101284471 B1 KR 101284471B1
Authority
KR
South Korea
Prior art keywords
bit
symbols
bits
data
symbol
Prior art date
Application number
KR1020127013353A
Other languages
English (en)
Other versions
KR20120060249A (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 KR20120060249A publication Critical patent/KR20120060249A/ko
Application granted granted Critical
Publication of KR101284471B1 publication Critical patent/KR101284471B1/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • 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/1072Adding 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 multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/25Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
    • H03M13/253Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with concatenated codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/353Adaptation to the channel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2933Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using a block and a convolutional code
    • H03M13/2936Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using a block and a convolutional code comprising an outer Reed-Solomon code and an inner convolutional code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

시스템은 복수의 심볼들의 각각의 심볼이 다중레벨 송신 채널을 사용한 전달을 위한 사용자 데이터 심볼에서 1 비트 이상의 정보를 표현하는 다중-레벨 인코딩을 사용한다. 사용자 데이터 심볼들은 디지털 비트와이즈 형태로 표현되어, 각각의 심볼이 복수의 비트들로서 표시되고 각각의 비트가 상이한 에러 확률을 겪도록 한다. 에러 수정 절차가 복수의 비트들의 각각의 비트와 관련되는 상이한 에러 확률을 기반으로 하여 적용된다. 상기 채널은 모자이크 타일 구조를 지원하도록 구성될 수 있고, 각각의 타일은 채널 심볼을 포함하여, 선택된 타일이 다른 타일들과 상이한 집합적인 에러 확률을 갖는다. 전체 이용 가능한 수정 능력을 기반으로 하여 선택된 타일에 선택된 양의 에러 수정 능력을 할당하기 위하여 타일 구조에 커스터마이징된 코딩이 적용될 수 있다.

Description

다중-레벨 시스템에서의 비트와이즈 동작들 및 장치{BITWISE OPERATIONS AND APPARATUS IN A MULTI-LEVEL SYSTEM}
관련 출원
본 출원은 내용들이 본원에 참조에 의해 통합되는 2008년 3월 24일자로 출원된 미국 가특허출원 일련 번호 제61/039,016호로부터 우선권을 주장한다.
본 출원은 일반적으로 다중-레벨 정보 시스템(multi-level information system)들에 관한 것이며, 특히 다중레벨 시스템에서의 비트와이즈 동작들에 관한 장치 및 방법에 관한 것이다.
종래 기술은 단일 비트 시스템들에서 수행되었던 다양한 유형들의 동작들의 예들로 충만하다. 출원인들은 다중레벨 시스템들의 상황에서의 이와 같은 동작들의 실행이 이하에 더 밝혀지는 바와 같이, 적어도 효율 및 에러 수정의 경쟁 상대에 대해 문제가 될 수 있는 방식으로 단일 비트 시스템들에 의해 크게 영향을 받았다고 여긴다.
관련 기술의 상기 예들 및 이와 관련된 한계들은 독점적인 것이 아니라, 설명적인 것으로 의도된다. 관련 기술의 다른 한계들이 명세서의 판독 및 도면들의 연구 시에 당업자들에게 명백해질 것이다.
다음의 실시예들 및 이의 양상들은 범위를 제한하는 것이 아니라, 예시적이고 설명적인 것으로 의도되는 시스템들, 도구들 및 방법들과 함께 기술 및 설명된다. 다양한 실시예들에서, 상술된 문제점들 중 하나 이상이 감소 또는 제거되었지만, 다른 실시예들은 다른 개선들과 관련된다.
일반적으로, 시스템은 복수의 사용자 데이터 심볼들의 각각의 심볼이 다중레벨 송신 채널을 사용한 전달을 위한 사용자 데이터 심볼 스트림(user data symbol stream)에서 1 비트 이상의 정보를 표현하는 다중-레벨 데이터 인코딩(multi-level data encoding)을 사용한다. 본 명세서의 하나의 양상에서, 방법 및 관련 장치가 설명된다. 상기 전달과 관련하여, 사용자 데이터 심볼들은 디지털 비트와이즈 형태(digital bitwise form)로 표현되어, 각각의 심볼이 복수의 비트들로서 표시되고, 상기 복수의 비트들의 각각의 비트가 상이한 에러 확률을 겪는다. 상기 복수의 비트들의 각각의 비트와 관련되는 상이한 에러 확률을 기반으로 하여, 전달되는 각각의 사용자 데이터 심볼의 비트와이즈 디지털 형태에 대해, 에러 수정 절차가 상기 복수의 비트들에 적용되어, 상기 복수의 비트들 중 적어도 하나의 비트에 대한 에러 수정 능력이 상기 복수의 비트들 중 또 다른 비트와 관련되는 또 다른 에러 수정 능력과 상이하도록 한다.
본 명세서의 또 다른 양상에서, 다중레벨 송신 채널을 사용하여 사용자 데이터를 전달하는 시스템의 부분으로서, 방법 및 관련 장치가 설명된다. 다중레벨 송신 채널은 복수의 비트와이즈 데이터 심볼들을 지원하도록 구성되며, 상기 비트와이즈 데이터 심볼들 각각은 1 이상의 비트의 정보를 표현하여, 각각의 비트와이즈 데이터 심볼이 복수의 비트들로 구성되고, 상기 복수의 비트들의 각각의 비트가 상이한 에러 확률을 겪는다. 모자이크 데이터 구조(mosaic data structure)가 각각의 비트에 대한 상이한 에러 확률을 기반으로 하여 다중레벨 채널의 바트와이즈 데이터 심볼들에 적용되고, 상기 모자이크 데이터 구조는 모자이크 타일(mosaic tile)들의 배열로 형성되고, 모자이크 타일들 각각은 채널 심볼을 수용하여, 모자이크 타일들 중 선택된 모자이크 타일이 다른 모자이크 타일에 할당된 비트들의 상이한 그룹을 기반으로 하는 모자이크 타일들 중 적어도 하나의 다른 모자이크 타일을 특징지우는 또 다른 집합적인 에러 확률과 상이한, 선택된 모자이크 타일에 할당된 비트들의 선택된 그룹의 에러 확률을 기반으로 하는 집합적인 에러 확률에 의해 특징지워지도록 구성된다. 사용자 데이터는 채널 심볼들 중 적어도 일부에서의 적어도 하나의 에러들의 수정을 위한 에러 수정 능력을 제공하는 방식으로 채널 심볼들로 인코딩되며, 상기 에러들은 다중레벨 채널을 통한 전달에 기인한다. 채널 심볼들은 모자이크 타일들 내로 도입된다. 그 후, 인코딩의 에러 수정 능력이 선택된 모자이크 타일 내의 비트들의 선택된 그룹 내에서 발생하는 에러들을 수정하기 위하여 복수의 비트들 중 적어도 선택된 비트에 선택된 양만큼, 그리고 복수의 비트들 중 적어도 하나의 다른 비트에 상이한 양만큼 적용되도록 사용자 데이터가 채널 심볼들로부터 복구된다.
본 명세서의 또 다른 양상에서, 복수의 사용자 데이터 심볼들의 각각의 심볼이 다중레벨 송신 채널을 사용한 전달을 위한 사용자 데이터 심볼 스트림에서 1 비트 이상의 정보를 표현하는 다중-레벨 데이터 인코딩을 사용하는 시스템의 부분으로서, 방법 및 관련 장치가 설명된다. 전달과 관련하여, 사용자 데이터 심볼들은 디지털 비트와이즈 형태로 표현되어, 각각의 심볼이 복수의 비트들로서 표시되고, 복수의 비트들의 각각의 비트가 데이터 심볼들 중 하나의 일부를 형성하고, 각각의 데이터 심볼의 각각의 비트가 상이한 비트 위치를 포함한다. 각각의 데이터 심볼의 선택된 비트 위치로부터의 적어도 하나의 선택된 비트가 선택된 암호화/해독 절차를 겪는 비트스트림에서 전달되어, 비트스트림의 선택된 암호화 양이 전달 동안 상이한 비트 위치에서의 적어도 하나의 다른 비트에 적용되는 또 다른 암호화/해독과 상이하도록 한다.
본 명세서의 또 다른 양상에서, 복수의 사용자 데이터 심볼들의 각각의 심볼이 다중레벨 송신 채널을 사용한 전달을 위한 사용자 데이터 심볼 스트림에서 1 비트 이상의 정보를 표현하는 다중-레벨 데이터 인코딩을 사용하는 시스템의 부분으로서, 방법 및 관련 장치가 설명된다. 전달과 관련하여, 사용자 데이터 심볼들은 디지털 비트와이즈 형태로 표현되어, 각각의 심볼이 복수의 비트들로서 표시되고, 복수의 비트들의 각각의 비트가 데이터 심볼들 중 하나의 일부를 형성하고, 각각의 데이터 심볼의 각각의 비트가 상이한 비트 위치를 포함한다. 각각의 데이터 심볼의 선택된 비트 위치로부터의 적어도 하나의 선택된 비트가 선택된 압축/압축해제를 겪는 비트스트림에서 전달되어, 비트스트림의 선택된 압축 양이 전달 동안 상이한 비트 위치에서의 적어도 하나의 다른 비트에 적용되는 또 다른 압축 양과 상이하도록 한다.
상술된 예시적 양상들 및 실시예들 이외에, 부가적인 양상들 및 실시예들이 도면들을 참조하고 다음의 설명들을 연구함으로써 명백해질 것이다.
예시적 실시예들이 도면들을 참조하여 설명된다. 본원에 개시된 실시예들 및 도면들이 제한적이라기보다는 오히려, 설명적이도록 의도된다.
도 1은 윈도우 내의 확률 밀도 펑션(probability density function)을 나타내는 단일 비트 윈도우의 상황에서의 확률에 대한 관심 변수(variable of interest)를 도시한 그래프(graph)이다.
도 2는 각각의 값과 관련되는 영역들을 분리하는 수직선들과 함께 4개의 값들 각각에 대한 확률 밀도 펑션을 나타내는 2 비트 다중-레벨 시스템의 상황에서의 확률에 대한 관심 변수의 그래프이다.
도 3은 각각의 값과 관련되는 영역을 디마킹(demarking)하는 수직선들에 의해 분리되는 4개의 값들 각각에 대한 확률 밀도 펑션을 나타내는 4 비트 다중-레벨 시스템의 상황에서의 확률에 대한 관심 변수의 그래프이다. 또한, 2개의 예시적 전하 분포들이 비트 에러 레이트(bit error rate)들 간의 변화를 설명하기 위하여 도시되어 있다.
도 4는 비트간 에러 레이트(bit-to-bit error rate)을 설명하기 위하여 여기서 도시된, 4 비트 다중-레벨 시스템에서의 각각의 비트에 대한 에러 레이트의 플롯(plot)들을 포함하는 신호 대 잡음비에 대한 비트 에러 레이트의 그래프이다.
도 5는 비트마다 변화할 수 있는 에러 수정 능력을 구현하는 시스템의 하나의 실시예를 도시한 블록도이다.
도 6은 도 5의 시스템의 동작의 하나의 실시예를 도시한 흐름도이다.
도 7은 비트마다 변화할 수 있는 데이터 압축 능력을 가지는 데이터 압축을 구현하는 시스템의 하나의 실시예를 도시한 블록도이다.
도 8은 도 7의 시스템의 동작의 하나의 실시예를 도시한 흐름도이다.
도 9는 비트마다 변화할 수 있는 암호화 능력을 가지는 데이터 암호화를 구현하는 시스템의 하나의 실시예를 도시한 블록도이다.
도 10은 도 9의 시스템의 동작의 하나의 실시예를 도시한 흐름도이다.
도 11a는 2 비트 심볼 값을 인터리빙(interleaving) 및 디인터리빙(deinterleaving)하는 하나의 실시예의 도식도이다.
도 11b는 도 11a의 2개의 인터리브들 사이에서 수정 능력을 할당하는 하나의 실시예의 도식도이다.
도 12는 4 비트 값 또는 심볼을 각각 저장할 수 있는 120개의 메모리 셀들의 배열 상에 부과될 수 있는 데이터 구조의 하나의 실시예의 도식도이다.
도 13은 내부에 포함된 인터리브들 및 심볼들의 다른 양상들을 설명하기 위하여 여기서 도시된 도 12의 데이터 구조의 또 다른 도식도이다.
도 14는 도 12 및 13의 데이터 모자이크 내로 심볼들을 패킹(packing)하는 방법의 하나의 실시예를 도시한 흐름도이다.
도 15는 4 비트 값 또는 심볼을 각각 저장할 수 있는 40개의 메모리 셀들의 배열 상에 부과될 수 있는 데이터 구조의 하나의 실시예의 도식도이다.
도 16은 내부에 포함된 인터리브들 및 심볼들의 다른 양상들을 설명하기 위하여 여기서 도시된 도 15의 데이터 구조의 또 다른 도식도이다.
도 17은 본 명세서에 따라 동작하는 제어기에 의해 수행될 수 있는 인코딩 방법의 하나의 실시예를 도시한 흐름도이다.
도 18은 본 명세서에 따른 동작하는 제어기에 의해 수행될 수 있는 디코딩 동작의 하나의 실시예를 도시한 흐름도이다.
도 19는 본 명세서에 따른 제어기의 인코딩 기능에 관련되는 구성요소를 포함하는 제어기의 하나의 실시예의 블록도이다.
도 20은 본 명세서에 따른 제어기의 디코딩 기능에 관련되는 구성요소를 포함하는 제어기의 하나의 실시예의 블록도이다.
다음의 설명은 당업자가 본 발명을 행하고 사용할 수 있도록 하기 위하여 제공되며, 본 출원 및 이의 요건들의 상황에서 제공된다. 설명된 실시예들에 대한 다양한 변경들이 당업자들에게 용이하게 명백할 것이며, 본원에 설명된 일반적인 원리들이 다른 실시예들에 적용될 수 있다. 따라서, 본 발명은 제시된 실시예들로 제한되는 것이 아니라, 첨부된 청구항들의 범위 내에서 정의되는 바와 같이, 변경들 및 등가물들을 포함하는 본원에 설명된 원리들 및 특징들과 일치하는 가장 넓은 범위를 부여받아야 한다. 도면들은 크기대로 도시되어 있지 않고, 관심 특징들을 가장 양호하게 설명한다고 생각되는 방식으로 사실상 도식적이라는 점이 주의된다. 설명적 용어는 도면들에서 제공된 다양한 뷰(view)들에 대하여 독자의 이해를 강화하기 위하여 채택될 수 있고, 결코 제한하고자 하는 것이 아니다.
종래의 단일 비트 시스템은 일반적으로 도 1의 수평 x 축을 따른 관심 변수의 각각의 가능한 값에 대한 발생들의 수의 정규 분포인 확률 밀도 펑션을 나타내는 도 1에 의해 도시되는, 참조 번호 10에 의해 일반적으로 표시된 윈도우 내의 정보의 존재 또는 부재에 의해 특징지워진다. 따라서, 도 1의 수직 y축은 확률에 대응한다. 수평 축은 예로서, 플래시 메모리(flash memory)(NROM, NAND, NOR)와 같은 전자 저장 디바이스에서의 전하, 상 변화 매체 저장 디바이스(상 변화 메모리(PRAM, 나노튜브(nanotube)들))에서의 저항, 자기 저장 디바이스(프로브 저장장치(probe storage))에서의 자기 모멘트(magnetic memont) 또는 자기 스핀 방향(magnetic spin direction), 송신 채널에서 송신된 정보의 위상각(위상 시프트 키잉(Phase Shift Keying: PSK)), 채널에서 송신된 정보의 진폭 또는 크기(진폭 변호(AM)), 펄스 진폭 변조(Pulse Amplitude Modulation: PAM)), 채널에서 송신된 델타 주파수(주파수 변조(FM)), 주파수 시프트 키잉(Frequency Shift Keying: FSK)), 커패시턴스 변화(강유전체 랜덤 액세스 메모리(FERAM), 또는 분자 저장장치), 또는 상기의 것들의 임의의 조합을 포함하는 임의의 적절한 변수를 나타낼 수 있다. 도 1에 의해 임베딩(embedding)되는 개념이 일반적으로 현재 공지되고, 아마도 아직 개발되지 않은 모든 공지된 송신 또는 저장 채널에 일반적으로 적용된다는 점이 인식되어야 한다. 이 특징으로부터, 정보 에러 레이트가 통계적으로 결정될 수 있다. 단일 비트 스트림에서, 에러는 비트 에러 레이트(Bit Error Rate: BER)라고 칭해질 수 있다. 단일 비트 시스템들의 현재 예들은 대부분의 디지털 전기통신 채널들 및 디스크 드라이브들 및 테이프 드라이브들과 같은 자기 레코딩(magnetic recording), DRAM(동적 랜덤 액세스), SRAM(정적 랜덤 액세스) 및 SLC(단일 레벨 셀) 플래시 메모리와 같은 반도체 저장장치이다.
다중-레벨 시스템은 1 비트 이상의 정보를 각각 표현하는 심볼들의 사용에 의해 특징지워진다. 이와 같은 다중-레벨 시스템에서, 심볼 스트림은 다중 비트의 정보가 시스템에서 송신 또는 저장되는 심볼들을 표현하기 위해 필요한 다중레벨 송신 채널을 사용하여 전달될 수 있다. 본 명세서의 상황에서, 다중레벨 송신 채널은 예를 들어, 임의의 적절한 유형의 메모리 셀들과 같은, 심볼들, 전자기 신호들, 광 신호들을 전달하는데 사용될 수 있는 임의의 매체 또는 수단, 및 더 일반적으로, 어떤 측정 가능한 물리적 파라미터에 의해 특징지워지는 상술된 바와 같은 변수들을 구현하는 방식으로 기능할 수 있는 임의의 디바이스라고 간주된다. 본원에서 밝혀졌던 인식들이 이하에 더 설명되는 바와 같이, 1 비트 이상의 정보를 표현하는 심볼들의 이진 디지털 표현을 사용하는 본질적으로 임의의 형태의 송신 채널에 적용 가능하다는 점이 인식되어야 한다.
비-제한적인 예로서, 2 비트 다중레벨 시스템은 각각의 레벨에 2-비트 값을 할당하는 도 2에 의해 도시된 바와 같이, 단일 심볼로서 표현된 정보의 4개의 가능한 값들을 사용하며, 각각의 레벨은 관련된 확률 밀도 펑션와 함께 도시되며, 일반적으로 한 번에 이중 하나만이 사용될 것이다. 도 1에서와 같이, x 축은 적절한 관심 변수에 대응하는 반면, y 축은 확률에 대응한다. 4개의 이용 가능한 레벨들은 윈도우들 00, 01, 10 및 11로서 표시된다. 하나의 실시예에서, 이 심볼은 값들 A, B, C, 및 D로서 표현될 수 있고, 이러한 4개의 값들 각각은 유일하다. 플래시 메모리 셀의 예를 사용하면, 이와 같은 시스템은 단일 메모리 위치에서 전하의 4개의 상이한 양들 또는 레벨들 각각을 선택적으로 저장하는 능력에 의해 구현될 수 있다.
도식적으로, 에러 확률에 대한 비트 위치의 영향이 4 비트의 16 레벨 다중레벨 시스템을 나타내는 도 3을 참조하여 인식될 수 있다. 이 도면에서 두꺼운 수직선들이 편의상 대응하는 베이스 10 값들로 또한 라벨링(labelling)되었던 이웃하는 값들 사이의 경계들을 나타낸다는 점이 인식되어야 한다. 실선 12로 플롯팅(plotting)되고 3(0011)의 값으로 도시된 하나의 분포에 대하여, 최상위 비트(Most Significant Bit: MSB)에서의 에러 확률이 상대적으로 작다. 즉, MSB에서 에러를 생성하기 위하여 리드 백 값(read back value)이 5개의 레벨들만큼 우측으로 위치되어야 할 것이다. 그러나, 대조적으로, 점선을 사용하고 8(1000)의 값으로 도시되는 또 다른 분포 14에 대하여, 바로 좌측의 레벨이 MSB의 변화를 나타내기 때문에, MSB에서 에러를 생성하는 상대적으로 더 높은 확률이 입증된다. 그러나, 두 경우들 모두에서, 좌측 또는 우측 중 하나로의 분포의 시프트가 LSB에서 에러를 생성할 것이다. 이러한 결과들을 고려하여, 출원인들은 이 다중-레벨 심볼 내의 각각의 비트에 대한 에러 확률이 상이하다는 점을 인식하였다. 더욱이, 각각의 비트의 에러 확률은 심볼 내의 데이터 값의 펑션이다. 즉, 에러 확률은 다중레벨 심볼 내의 비트의 위치를 기반으로 하여 변화한다. 심볼이 자신이 표현하는 비트들의 수에서 더 커짐에 따라, LSB 및 MSB 사이의 에러 확률의 차이가 더 커지고, 심볼들 내의 각각의 연속적인 비트가 상이한 에러 확률을 나타낼 것이다. 비트 기반으로 각각의 비트를 독립적으로 취급하는 시스템은 종래 기술 시스템들에서 통상적인 바와 같이 바이트 또는 워드 또는 심볼과 같은 비트들의 그룹 내의 모든 비트들을 취급하는 시스템에 반대되는 바와 같이 비트와이즈 동작들이 수행되는 비트와이즈 시스템이라고 칭해진다. 상기 논의가 독자의 이해를 용이하게 하기 위하여 판독 동작 면에서 행해졌지만, 출원인들이 이 근심이 더 논의되는 바와 같이 다중레벨 심볼의 비트와이즈 변환의 결과로서 발생한다는 것을 인식하였다는 점이 인식되어야 한다.
SNR에 대한 비트 에러 레이트를 도시한 그래프인 도 4를 이제 참조하면, 이 클래스의 송신 또는 저장 채널들에 대한 신호 대 잡음 비(SNR)의 표준 정의는 (전력 또는 전압 데시벨(power or voltage decibel)들 중 하나로 표현되는 신호 분포의 표준 편차(시그마)에 의해 나누어지는 윈도우의 폭이다. 큰 시그마를 갖는 넓은 분포는 낮은 SNR을 갖는다. 상기의 설명들에 따른 출원인들의 인식들 때문에, 출원인들은 각각의 비트에 대한 에러 확률을 분할하였고(CellBERB0-CellBERB3으로서 표시됨), 결과적인 곡선들을 도 4에서 데시벨(dB) 단위의 전압 SNR의 펑션으로서 제공되는 비트 에러 레이트(BER)로서 플롯팅하였다. CELLBER0가 가장 높은 BER을 나타내는 반면, CELLBER1-CELLBER3이 점진적으로 감소하는 BER을 나타낸다는 점이 인식될 수 있다. 평균 BER 곡선이 CELLBER로서 도시되어 있다. 에러 확률이 SNR 및 BER을 기반으로 하여 교환 가능하게 간주될 수 있다는 점이 주의되어야 한다. 즉, 상대적으로 더 양호한 BER을 갖는 시스템이 상대적으로 더 높은 SNR을 갖는 시스템과 등가이다.
도 4에 의해 입증된 바와 같이, 그리고 상기에서 밝혀졌던 에러 확률의 비트간 변화가 모든 다중-레벨 시스템들에서 발생한다는 점이 본원에서 인식된다. 비트간 에러 확률의 차이는 비-심볼 비트와이즈 에러 수정 코드들의 효율성을 감소시킨다. 이러한 코드들은 컨볼루션(convolution), 터보(turbo) 및 저밀도 패리티 코드(Low Density Parity Code: LDPC), 비트들의 시리즈(series)를 인코딩하고 에러 확률이 모든 비트들에 대해 동일하다고 예상되는 코드들의 클래스들을 포함하지만, 이에 제한되지 않는다. 이것은 비트들이라기보다는 오히려 심볼들의 시리즈를 인코딩하는 리드 솔로몬(Reed Solomon) 또는 BCH 코드들과 같은 심볼 유형 코딩 시스템들과 대조적이다. 대조적으로, 비트와이즈 시리즈 코딩된 시스템에 대하여, 종래 기술의 기본적인 가정들 중 하나는 시리즈 내의 모든 비트들이 동일한 에러 확률을 갖는다는 것이다. 그러나, 다중-레벨 시스템에서, 출원인들은 이 가정이 유효하지 않다는 점을 인식하였다. 이 때문에, 비트와이즈 코드 변환을 포함하는 다중-레벨 시스템은 동일한 비트간 에러 확률의 가정이 행해질 때 자신의 잠재적인 성능에 도달하지 못할 것이다.
비트와이즈 코드의 2개 이상의 비트들이 마치 자신들이 동일한 에러 확률을 겪는 것처럼 프로세싱될 때마다, 시스템의 성능이 자신의 잠재적인 성능을 성취하지 못할 것이라는 점이 인식된다. 출원인들은 시스템 모델링(system modeling)을 기반으로 하여 이 저하를 경험적으로 관측하였다. 각각의 비트의 개별적인 에러 확률을 기반으로 하여 각각의 비트를 다루는 것이 어떤 다른 방식으로 고려될 수 없는 성능 저하를 해결한다는 점이 또한 관측되었다. 출원인들은 각각의 비트에 대한 커스터마이징(customizing)된 상이한 에러 확률에 따라 이와 같은 코드의 각각의 비트를 다루거나 핸들링(handling)하는 종래 기술에서의 임의의 시스템을 알지 못한다.
임의의 소정 클래스의 코딩 시스템에 대하여, 코드의 수정 능력 및 코드의 효율 사이에 트레이드오프(tradeoff)가 항상 존재한다. 모든 코딩 시스템들의 수정 능력은 정보 비트들로 리던던시 비트(redundancy bit)들을 인코딩하는 것에서 발생되어, 에러들이 리던던시 정보를 사용하여 수정될 수 있다. 추가되는 리던던트 정보가 더 많을수록, 코드가 더 많은 수정 능력을 갖는다. 그러나, 대조적으로, 추가되는 리던던트 정보가 많을수록, 코딩 시스템이 더 비효율적이 된다. 코딩 시스템에 대한 트레이드 오프는 코드의 수정 능력 및 효율 사이의 평형이다. 코딩 시스템 설계에서의 다른 트레이드오프는 코드들의 선택 및 이들의 구현 복잡성이다. 그레이 코드(gray code) 또는 컨스텔레이션 맵핑(constellation mapping)과 같은 간단한 하드 임계값 검출 및 맵핑 펑션(hard threshold detection and mapping fucntion)들이 구현하기 매우 용이하고, 100% 효율을 가지지만, 또한 수정 능력이 없다. 컨볼루션 인코딩 및 비터비 디코딩(biterbi decoding)과 같은 더 복잡한 코드 시스템들은 구현하기 어렵지만, 효율 손실의 댓가로 수정 능력들을 제공한다. LDPC와 같은 훨씬 더 복잡한 코드들은 매우 크고 어려운 구현들을 댓가로 더 높은 코딩 효율을 갖는 훨씬 더 양호한 수정 능력을 갖는다.
상기의 내용들을 기반으로 하는, 도 5에서 참조 번호 20에 의해 일반적으로 도시된 하나의 실시예 및 도 6에 의해 도시된 관련 방법에서, 다중-레벨 시스템의 비트들 사이의 BER의 차이는 각각의 비트의 에러 확률에 대해 커스터마이징되는 코딩 시스템들을 통해 다루어진다. LSB 및 다음의 더 높은 비트에 대한 하나의 실시예는 상이한 소정 효율 및 수정 능력을 각각 가지는 2개의 상이한 컨볼루션 코드들의 사용에 있다. 하나의 코드는 구체적으로 LSB의 SNR/에러 확률을 위해 설계되고, 다른 코드는 구체적으로 다음의 더 높은 비트의 SNR/에러 확률을 위해 설계된다. 전체적인 효과는 더 높은 수정 능력을 갖는 더 효율적인 시스템이다. 도 5의 4 비트 시스템의 각각의 비트는 이 방식으로 핸들링된다. 도 5는 연속적인 4 비트 값들이 수신되도록 직렬화기(serializer)(22)에 도착하는 4 비트의 비트와이즈 코드를 도시한다(도 6의 단계 100 참조). 직렬화기는 각각의 인입 비트에 대해 전용 라인으로 출력한다. 그 후, 인코드 시스템들 0 내지 3으로 표시된 복수의 인코드 시스템들은 라인들 b0 내지 b3 상에 도착한 비트들을 개별적으로 인코딩하여, 각각의 라인이 상이한 에러 확률을 기반으로 하여 핸들링되도록 한다(도 6의 단계 102 참조). 인코딩된 라인들 be0 내지 be3은 인코드 시스템들을 역직렬화기(deserializer)(103)에 연결시킨다(도 6의 단계 104 참조). 상술된 바와 같이, 더 많은 수정 능력을 부과하는 인코딩은 일반적으로 본원에서 리던던시 비트들이라고 교환 가능하게 칭해질 수 있는 상대적으로 더 많은 패리티 비트들을 도입할 것이다. 이 점에서, be0은 그 후에 나머지 라인들보다 더 큰 데이터 양을 지닌다고 예상될 것이며, 비트 순서에서의 각각의 증가하는 비트가 상대적으로 더 적은 패리티 비트들을 필요로 할 것이며, b3가 가장 적은 데이터 양을 지닌다. 소정 크기의 라인들 b0 내지 b3 상의 입력 데이터의 인입 블록에 대해 라인들 be0 내지 be3이 지니게 되는 데이터의 양의 상대적인 차이들을 보상하기 위하여, 패딩 비트(padding bit)들(예를 들어, 0(zero)들)이 라인들 be1 내지 be3 상에 추가되어, 입력 블록에 응답하고 추가된 패리티 비트들을 포함하는, be0 상의 출력 블록과 동일한 길이에 대응하는 출력 블록을 생성할 수 있다. 이 패딩 기능이 역직렬화기(103)의 부분 또는 별도의 블록으로서 인코딩 블록들 내에 구현될 수 있다는 점이 주의된다. 라인들 be0 내지 be3이 지니게 되는 데이터의 양의 상대적인 차이들을 보상하는데 있어서 유용한 또 다른 실시예는 각각의 라인에 대해 상이한 코딩 시스템들을 사용하는 것에 있다. 예로서, LSB(be0)에 대해 LDPC의 높은 수정 능력 및 상대적으로 양호한 효율을 사용하고 나서, 다음 비트(be1)에 대해 터보 코드를 사용하고 난 후, 다음 비트(be2)에 대해 컨볼루션 코드를 사용하는, 등의 시스템을 고려하자. 각각의 코딩 시스템은 연속적으로 더 효율적이며, 자신의 에러 수정 능력이 연속적으로 덜 강력하다. 그러나, 전체적인 시스템은 가장 높은 전체 효율로 각각의 코딩 시스템의 가장 양호한 성능에 최적화될 수 있다. 게다가, 각각의 비트 라인에서의 데이터의 양이 데이터의 총량보다 더 적기 때문에 이러한 시스템들 중 어느 하나의 구현이 또한 간소화될 수 있다. LDPC의 경우에, 구현 복잡성이 코드가 동작하는 데이터 블록의 크기에 비례한다. 상기 예에서, be0 라인은 전체 데이터 블록의 데이터 양의 1/4을 가지므로, 더 작은 LDPC 구현을 사용할 수 있다.
데이터가 전달 및 직렬화기(105)에 의한 수신을 위해 역직렬화기(103)로부터 다중-레벨 송신 채널로 전달된다(도 6의 단계 106 참조). 송신 채널의 종점을 형성하는 직렬화기(105)로부터, 각각의 비트에 대응하는 데이터가 인코딩된 비트 라인들 be0 내지 be3 상으로 라우팅(routing)되고, 디코드 시스템들 0 내지 3 중 각각의 디코드 시스템들에 의해 수신된다(도 6의 단계 108 참조). 각각의 디코드 시스템은 당업자에 의해 양호하게 인식되는 방식으로 인코딩 시스템들 중 대응하는 인코드 시스템과 정합한다. 그 후, 디코드 시스템들 0 내지 3은 도 6의 단계 110에서, 인코딩을 제거하고 비트 데이터를 비트 라인들 b0 내지 b3 상으로 배치한다. 패딩 비트들이 직렬화기, 디코드 시스템들 또는 설명의 명확화를 위해 도시되지 않은 별도의 기능 블록에 의해 제거될 수 있다는 점이 주의된다. 비트 라인들 b0 내지 b3은 역직렬화기(111)에 연결되며, 상기 역직렬화기는 그 후에 도 6의 단계(112)에서 성능 제약들을 겪는 원래 비트와이즈 데이터(original bitwise data)를 재생한다.
도 5의 시스템의 일반적인 형태에서, 인코드/디코드 블록들은 컨볼루션 코딩으로 제한되지 않는다. 예를 들어, LDPC 코드가 LSB 상에 적용될 수 있고, 컨볼루션 코드가 다음의 더 높은 비트 상에 적용될 수 있다. 다중-레벨 시스템이 2 또는 4 비트로부터 8 또는 16 이상의 비트로 성장함에 따라, 구현되는 특정 비트의 최적의 효율 및 코드 수정 능력들을 위해 각각 설계된 동수의 상이한 코드 레이트들 또는 코딩 시스템들이 존재할 수 있다. 따라서, 특정 라인 상의 인코딩/디코딩의 유형은 임의의 다른 라인에 대해 선택되는 인코딩/디코딩의 유형과 관계없이 커스터마이징될 수 있다. 이 방식으로, 상술된 강화된 성능에 수반되어, 현저하고 지금까지 보지 못한 정도의 유연성(flexibility)이 제공된다.
상기의 내용을 고려하여, 시스템 내의 각각의 비트의 SNR에 대해 최적으로 설계된 코딩 시스템이 제조된다. 예를 들어, LDPC 코딩 시스템이 마치 모든 비트들이 동일한 에러 확률을 각각 겪는 것처럼 모든 비트들에 대해 구현될 수 있는 종래의 설계에서와 같이 모든 비트들에 대해서라기보다는 오히려, 가장 낮은 SNR 비트들에 대해서 상대적으로 더 복잡한 인코딩 시스템들을 사용함으로써 구현 복잡성이 감소될 수 있다는 점이 인식되어야 한다. 예를 들어, 하나의 실시예에서, LDPC 구현이 상기 시스템에서 LSB에 대해서만 필요한 경우에, 그 LDPC 섹션(LDPC section)은 모든 4 비트들이 LDPC 코딩을 겪게 하는 구현의 크기의 1/4이 되도록 할 수 있다. 이 점에서, 용어 "코딩"은 집합적으로 인코딩 및 관련 디코딩 프로세스를 칭한다.
이 상황에서, 적어도 부분적으로, 상기에 밝혀졌던 특정 내용들을 기반으로 하여 이용 가능한 다수의 다른 실시예들을 논의하는 것이 적합하다. 따라서, 도 5와 함께 도 7이 이제 주목된다. 도 7은 도 5의 시스템과 동일한 시스템을 도시하지만, 인코드/디코드 시스템들 0 내지 3이 압축/압축해제 시스템들 0 내지 3으로 교체되었다.
도 6 및 8의 비교는 도 6의 인코드 단계 102가 도 8의 압축 단계 200으로 교체되었고 도 6의 디코드 단계 110이 도 8의 압축 단계 210으로 교체되었다는 점을 제외하고는, 동작들이 유사한 방식으로 수행된다는 것을 나타낸다. 특히, 각각의 비트 라인은 정합된 쌍의 압축 및 압축해제 시스템들을 포함하여, 비트 라인들 be0 내지 3의 각각의 비트 라인이 다른 비트 라인들 상에서 사용되는 압축과 본질적으로 관계없는 압축을 겪는다.
압축을 위한 데이터의 재구성이 도 7 및 8에 의해 포함되어 있다. 종래 기술에서, 가변 비트 수들의 바이트들 또는 워드들 또는 심볼들의 형태의 데이터 값들이 데이터 압축 알고리즘을 통해 프로세싱된다. 본 실시예는 이 제약을 일축하고, 인입 정보를 데이터에서 표현된 비트들의 수에 대응하는 개별적인 비트 스트림들의 시리즈로 변환한다. 예를 들어, 데이터의 바이트가 데이터의 8 비트 스트림들을 가지며, 워드가 16 비트 스트림들을 가지는, 등등이 될 것이다. 그 후, 각각의 비트 스트림이 개별적으로 압축된다. 하나의 스트림에 대한 압축 알고리즘은 또 다른 스트림에 대한 압축 알고리즘과 상이할 수 있다. 다수의 압축 알고리즘들은 각각의 데이터 비트 스트림이 원래 데이터 내의 비트의 특성들을 기반으로 하여 압축되도록 한다.
상이한 압축들이 적용되는 방법의 예로서, 크기 정보라고 통칭되는 서명되지 않은 진폭 정보인 데이터를 고려하자. 주식 시장에서 판매되는 주식들의 수의 볼륨(volume)이 이와 같은 데이터의 예이다. 이 유형의 데이터에 대하여, 통상적으로, 최대 이진 값이 작은 값들보다 훨씬 덜 빈번하게 발생하므로, 이 데이터의 이진 표현의 MSB가 1인 것보다 더 자주 0이다. 그러므로, MSB는 동일한 데이터의 LSB보다 더 많은 임의의 수의 상이한 알고리즘들을 통해 압축될 수 있다. LSB는 MSB 상에서 사용된 알고리즘 이외의 알고리즘이 사용되었던 경우에 자신이 더 효율적으로 압축되도록 하는 상이한 특성들을 가질 수 있다. 각각의 비트가 차례로 그 특정 비트의 특성들에 대해 독립적으로 최적화될 수 있다는 점이 인식된다.
또 다른 실시예가 이제 도 9를 처음 참조하여 설명될 것이다. 이 도면을 도 5 및 7과 비교하는 것이 적합하다. 따라서, 도 9의 시스템은 도 5 및 7의 시스템들과 본질적으로 동일하지만, 도 5의 인코드/디코드 시스템들 0 내지 3이 암호화/해독 시스템들 0 내지 3으로 교체되었다.
도 6 및 10의 비교는 도 6의 인코드 단계 102가 도 8의 암호화 단계 220으로 교체되었고 도 6의 디코드 단계(110)가 도 10의 해독 단계 230으로 교체되었다는 점을 제외하고는, 동작들이 유사한 방식으로 형성된다는 것을 나타낸다. 특히, 각각의 비트 라인은 정합된 쌍의 암호화 및 해독 시스템들을 포함하여, 비트 라인들 be0 내지 3의 각각의 비트 라인이 다른 비트 라인들 상에서 사용되는 암호화와 본질적으로 관계없는 암호화를 겪는다.
암호화를 위한 데이터의 재구성이 도 9 및 10에 의해 포함되어 있다. 종래 기술에서, 가변 비트 수들의 바이트들, 워드들 또는 심볼들의 형태의 데이터 값들은 이러한 데이터 값들 각각이 한 단위로서 핸들링되는 데이터 암호화 알고리즘을 통해 프로세싱된다. 도 9에서, 니블(nibble)(4 비트) 형태의 인입 정보가 우선 데이터에서 표현된 비트들의 수에 대응하는 개별적인 비트 스트림들의 시리즈로 변환된다. 예를 들어, 데이터의 바이트가 데이터의 8 비트 스트림들에 대응하고, 워드가 16 비트 스트림들에 대응하거나 16 비트 스트림을을 발생시키는, 등등일 것이다. 그 후, 각각의 비트 스트림이 개별적으로 암호화된다. 하나의 스트림에 대한 암호화 알고리즘은 또 다른 스트림에 대한 암호화 알고리즘과 상이할 수 있다. 다수의 암호화 알고리즘들은 각각의 데이터 비트 스트림이 독립적으로 암호화되도록 한다. 예로서, 암호화 키가 비트 라인마다 상이할 수 있고/있거나, 암호화 알고리즘 및/또는 암호화 키의 길이가 상이할 수 있다. 예를 들어, 비트 라인들 be0 내지 be3 각각은 상이한 양들의 암호화 능력을 제공하기 위하여 상이한 암호화 키 및/또는 상이한 암호화 알고리즘을 겪을 수 있다.
상이한 암호화들이 적용되는 방법의 예로서, 오늘날 통용되는 PGP(Pretty Good Privacy) 보안 트랜잭션(secure transaction)을 고려하자. 이 종래 기술 시스템에서, 2명의 당사자(party)들 사이에서 공유되는 암호화 키가 발생되고, 메시지가 비트와이즈 방식으로 암호화된다. 일반적으로, 이와 같은 종래 기술 시스템에서의 암호화의 강도는 암호화 키 내의 비트들의 수에 의해 결정된다. 그러나, 본 명세서에 따르면, 종래 기술의 비트와이즈 시스템에서와 같이 동일한 길이의 키로 각각의 비트를 개별적으로 암호화함으로써, 유효한 암호화 키 길이가 증가된다. 이 특징은 적어도 2개의 방식들에서 사용될 수 있다: 하나는 반드시 해독을 겪을 더 많은 암호화 시스템들을 제공함으로써 더 강한 암호화/해독 시스템을 만드는 것을 제공한다. 또 다른 것은 더 짧은 키 길이로 암호화/해독의 동일하거나 등가의 레벨의 보안을 유지하는 것을 제공한다. 후자의 비-제한적인 예로서, 한 번에 64 비트에 대해 동작하는 큰 시스템을 고려하자. 한 번에 모든 64 비트에 대해 동작하는 하나의 키 길이를 갖는 시스템은 각 비트에 대해 하나씩, 더 짧은 키를 갖는 64개의 시스템들과 복제될 수 있다. 키 발생이 암호화/해독 프로세스에 관련된 가장 길고 가장 복잡한 절차이기 때문에, 동일한 보안 레벨을 갖는 더 짧은 키들을 발생시키는 것이 유리하다.
도 5 내지 10을 고려하여, 다른 유형들의 동작들이 에러 검출 관련 인코딩, 데이터 압축 및 보안 암호화를 포함하는 상기의 특정한 비-제한적 예들을 고려하여 어떤 특정 목적을 성취하기 위하여, 비트 라인들의 각각의 비트 라인에 특수화된 코딩을 도입하고 나서, 비트 라인들의 각각의 비트 라인으로부터 특수화된 코딩을 제거할 시에 사용하는데 매우-적합할 수 있다는 점이 인식되어야 한다.
다중-레벨 저장 매체를 기반으로 한 저장 시스템들에서의 에러 수정 코드들의 적용에 대하여 이제 부가적인 세부사항들을 참조한다. 플래시 메모리는 예시적인 매체로서 유지되지만, 저장 셀 당 1 비트 이상을 저장할 수 있는 다른 기술들이 동등하게 적용 가능한 것으로 간주된다. 성능 개선이 2개의 상이한 환경들에서의 사용에 관련되는 기술들의 상황에서 개시되어 있다: (1) 제 1 환경은 표준 NAND 플래시 회로 토폴로지(topology) 및 인터페이스(interface)들을 사용하는 종래 기술의 셀 메모리 당 2-비트의 사용에 있고, (2) 제 2 환경은 상술된 바와 같은 시스템과 함께 사용하기 위해 커스터마이징된 메모리 디바이스 회로 및 인터페이스들에서의 셀 메모리 당 2 비트 이상의 사용에 있다. 2개의 기술들 모두는 (플래시 메모리를 포함하는) 다중-레벨 시스템들에 대해 상기에서 밝혀졌던 인식을 이용하며, 여기서, 각각의 셀은 더 높은 중요도의 비트들보다 더 작은 중요도의 비트들에 대해 더 높은 에러 확률을 나타낸다.
셀 당 2 비트 실시예들을 포함하는 종래의 플래시 메모리에서의 에러 수정이 전형적으로 BCH 코드들로서 공지된 비트-수정 코드들의 구현들을 통하여 전개되었다. 이러한 코드들은 랜덤으로 발생하는 단일-비트 에러들을 수정할 시에 효율적이다. 대조적으로, 리드-솔로몬 코드들은 각각의 심볼이 특정 수의 비트를 포함하는 것으로 정의되는 다중-비트 심볼들을 수정할 수 있다. 예를 들어, 8-비트 심볼들을 사용하고, 단일 8-비트 심볼에 포함된 비트들의 임의의 서브셋을 하나의 단위로 수정하는 바이트-수정 리드-솔로몬 코드가 구성될 수 있다. 개시된 기술들이 BCH 또는 리드-솔로몬 코드들 중 하나를 사용하여 구현될 수 있을지라도, 논의는 리드-솔로몬 코드들이 심볼 당 다중 비트들을 수정하는 능력을 제공하기 때문에 리드 솔로몬 코딩과 관련된다. 예로서, 소정의 데이터 블록에 대하여, 리드 솔로몬 코드는 임의의 소정 심볼에 의해 포함되는 비트 에러들의 수와 관계없이, 특정 수의 심볼들을 수정할 수 있다. 즉, 소정의 심볼에 대하여, 이 심볼의 비트들 모두가 에러가 있을 수 있고, 상기 심볼은 에러가 있는 심볼들의 총 수가 코드의 수정 능력을 초과하지 않는 한, 수정될 수 있을 것이다.
직전에 언급된 바와 같이, 리드-솔로몬 및 BCH 코드들이 블록 코드들이기 때문에, 이들을 적용하는 것은 데이터가 블록 단위로 인코딩 및 디코딩되는 것을 필요로 한다. 종래 기술에서, 리드-솔로몬 또는 BCH ECC 코딩은 데이터의 블록을 포함하는 모든 심볼들에 제공되는 동일한 가중치(weight)로 ECC 패리티를 계산하도록 구성된다. "인터리빙"이라고 칭해는 관련 개념은 데이터 블록을 각각이 ECC 인코딩을 개별적으로 겪는 2개 이상의 부분들로 분할하는 분할 기술이다. 용어 "인터리빙"은 통상적으로 시퀀스 내의 교호하는 심볼들을 개별적인 그룹들로 그룹화하는 기술에 적용된다 - 다른 분할 기술들이 동등한 유효성(validity)으로 적용될 수 있지만, 구현의 간소화로 인해, 인터리빙 기술이 유용하다. 통상적으로, ECC 또는 BCH 인코딩의 종래 기술 애플리케이션은 서로 길이가 동일하거나 거의 동일한 인터리브들을 사용한다. 실제적인 용어들에서, 블록을 인터리빙하는 것은 블록을 다수의 부분들로 슬라이싱(slicing)하는 것과 동일하고, 상기 각각의 부분은 그 후에 ECC 인코딩 및 디코딩에 대해 독립적인 유닛으로서 다루어진다. 종래 기술과 달리, 본원에서 사용된 인터리브들은 가변 길이로 이루어질 수 있고, 여전히 인터리브들로서 카테고리화(categorizing)된다. 이 가변성은 인터리브들마다 부가되는 상이한 수들의 패리티 심볼들의 결과일 수 있지만(즉, 수정 코드의 T 값이 다중레벨 시스템에서의 비트 위치 에러 고려사항들을 기반으로 하여 변화하지만), 이와 같은 가변성은 다른 방식들로 발생할 수 있고, 본원의 내용들과 일치하는 방식에서 다루어질 수 있다.
출원인들이 인지하는 종래 기술의 해결책들이 에러 수정 능력에 대해 각각의 인터리브에 동등한 가중치를 제공한다는 점이 인식되어야 한다. 이것은 n'-k'개의 메시지 심볼들을 각각 가지는 0, 1, 2, ... , I-1로 넘버링되는 I개의 인터리브들 각각에 대해, 각각의 인터리브가 k'개의 패리티 심볼들로 인코딩된다는 것을 의미하고, 여기서, n'은 심볼들의 총 수이고, k'는 패리티 심볼들의 총 수이며, n'-k'는 메시지 심볼들이라고 칭해질 수 있는 사용자 데이터 심볼들의 총 수이다.
본 명세서의 하나의 양상에서, 저장된 심볼들 각각에서의 비트의 중요도를 기반으로 하여 저장된 데이터와 관련되는 비트-레벨 에러의 상이한 확률들에 의해 필요한 수정을 평형화하기 위하여 더 효율적인 사용이 소정의 메모리 내의 이용 가능한 여분의 메모리 심볼들로 이루어질 수 있다. 2개의 변화들이 이하에 설명된다. 제 1 변화는 2-비트 메모리 심볼들이 저장되고 있는 경우에 적용되고, 제 2 변화는 심볼 당 3-비트 또는 그 이상의 더 일반적인 경우이다. 2개의 변화들 모두에서, 각각의 심볼에서의 LSB가 이의 수반된 MSB 또는 LSB보다 더 크고 MSB보다 더 작은 중요도를 갖는 비트들보다 더 높은 에러 확률을 갖는다. TCM 인코딩이 또한 적용되어 패리티 비트들이 추가되는 더 넓은 심볼들의 경우에, TCM 디코더 자신은 리드-솔로몬 코드들에 의해 수정될 수 있는 에러 시그너처(error signature)들에 자신의 특성들을 추가한다. 즉, TCM은 일반적으로 비트들의 그룹들로서 나타나는 디코딩 에러들을 추가하므로; 수정이 메모리 심볼들 내의 비트 중요도의 펑션으로서 변화하는 에러 확률들 뿐만 아니라, TCM 디코더에 의해 만들어지는 디코딩 에러들 부근의 "버스티니스(burstiness)"이라고 칭할 수 있는 버스트(burst)들에서 에러들이 나타날 경향에 관련된다.
(1) 표준 회로 토폴로지 및 표준 인터페이스를 갖는 2-레벨 NAND 플래시
유용하게 적용되는 기술은 특정 요건들이 메모리 자신에 의해 충족될 수 있다면, 셀 당 2 비트 이상을 저장하는 디바이스들 내의 저장 매체에 할당되는 ECC 패리티의 사용에서의 현저한 개선을 나타낸다. 이 기술에 따르면, 이용 가능한 ECC 패리티는 재-분할되어, 각각의 더 많은 패리티 비트들이 에러들을 가질 확률이 가장 높은 데이터에 대해 에러들을 수정하는데 사용되고; 더 적은 패리티 비트들이 에러들을 가질 확률이 더 적은 데이터 비트들에 대한 에러 수정에 할당된다. 이 방식으로, 더 양호한 메모리 성능이 고정된 예산(budget)의 이용 가능한 패리티 비트들로 성취될 수 있다. 표준 플래시 메모리에서, 저장된 이용 가능한 패리티는 각각의 페이지(page)에 부가되는 고정된 양이다. 따라서, 이와 같은 고정된 패리티 비트 예산에 의한 표준 플래시에 대한 결과는 가까운 패리티 비트들의 더 양호한 이용도이다.
상기에서 밝혀진 바와 같이, 수정 능력의 이 재-할당은 다중-레벨 저장에서, 데이터 심볼(즉, 메모리 셀에 저장될 수 있는 다중-비트 데이터 값)의 LSB가 동일한 데이터 심볼의 MSB보다 에러가 있을 확률이 더 높다는 인식을 기반으로 한다. 종래 기술에서는, 데이터 블록 내의 모든 LSB들이 MSB들과 동일한 수의 패리티 심볼들과 관련되는 ECC 인코드/디코드 프로세스들에 의해 증명되는 바와 같은 이 사실의 임의의 인식이 있는 것처럼 보이지 않는다. 본 논의가 다중-레벨 시스템의 메모리 셀로 데이터 심볼을 저장하고 상기 메모리 셀로부터 데이터 심볼을 검색하는 것과 관련되는 것과 같은 심볼 대 비트 스트림 변환의 결과로서 LSB를 더 큰 에러 확률을 겪는 값이라고 칭한다는 점이 인식되어야 한다. 즉, 예로서, 관심 LSB는 메모리 셀이 16개의 값들을 저장할 수 있을 때, 4 비트 값의 비트 0일 것이다. 이와 같은 4 비트 및 동일한 값들은 본원에서 예를 들어, 리드 솔로몬 심볼들과 같은 ECC 인코딩 심볼들과 혼동되지 않도록 "데이터 심볼들"이라고 칭해질 것이다.
본 명세서는 무엇보다도 데이터 블록의 LSB들에 대해서만 결정되는 한 세트의 패리티 심볼들을 생성함으로써 LSB와 관련되는 수정 능력을 비례적으로 커스터마이징하기 위하여 LSB를 인코딩할 수 있는 비트스트림 ECC 인코딩(예를 들어, 도 5 및 6 참조)을 사용함으로써 이 상황을 다룬다. 도 6에 의해 증명된 바와 같이, 커스터마이징된 수정 능력은 중요도의 순서로 각각의 비트에 적용될 수 있다. 따라서, 수정 코드의 T 값이 비트마다 변화한다는 점이 인식되어야 한다. 이러한 내용들의 관점에서 구성되는 인코더는 더 작은 중요도의 비트들에 비해 더 중요한 비트들에 대한 패리티 필드(parity field)들을 트렁케이팅(truncating)하도록 구성될 수 있다. 이 방식으로, 상기 인코더의 구성은 소정의 플래시 메모리에 대해 이용 가능한 패리티 자원들을 커스터마이징된 방식으로 정합시킬 수 있지만, 비례적으로 MSB들보다 LSB들에 더 많은 패리티 심볼들을 할당할 수 있다. 협동하는 디코더는 상기 디코더의 반대 펑션을 수행하지만, 더 큰 중요도의 비트들에 비해 더 작은 중요도의 비트들에 대해 발생하는 더 많은 에러들을 수정할 수 있다.
(2) TCM을 사용하는 커스텀 회로 토폴로지 및 커스텀 인터페이스를 갖는 n-레벨 NAND 플래시
상기에서 인식된 바와 같이, 다중-레벨 저장 시스템은 각각의 데이터 심볼 내의 비트들의 중요도에 따라 변화하는 비트 에러 확률들을 갖는다. TCM 코딩은 컨볼루션 코드를 통해 각각의 데이터 심볼의 LSB(또는 LSB보다 중요도가 더 크지만 MSB보다 중요도가 더 작은 비트들)에 더 로버스트한 코딩을 적용함으로써 이 사실을 취급하는데 사용될 수 있고, 더 일반적인 컨스텔레이션 맵핑이 각각의 데이터 심볼의 나머지 비트들에 적용될 수 있다. 이 인코딩의 효과는 리드백 상에서 발생하는 LSB 에러들의 프리도미넌스(predominance)의 수정 뿐만 아니라, 또한 발생하는 더 중요한 비트 에러들의 더 작은 빈도를 제공하는 것이다. 그러나, 디코딩 프로세스는 ECC 수정의 다음 레벨, 이 경우에, 리드-솔로몬 코드가 그 후에 수정하는 것을 목표로 하는 일부 에러들을 손실한다. TCM 디코더의 동작이 크기의 순서들에 의해 리드백 시퀀스에서 자연적인 에러 빈도를 감소시키는 것일지라도, 에러들이 여전히 TCM 디코더의 출력에서 나타날 수 있다. 이러한 TCM 디코더 에러들은 2개의 현저한 특성들을 갖는다:
(1) 에러 확률들이 여전히 디코딩된 데이터 심볼들의 비트 중요도와 관련하여 비트 단위로(bit-by-bit)로 분포된다. 각각의 디코딩된 데이터 심볼의 중요도가 낮을수록, 에러를 겪을 확률이 더 커진다. 그럼에도 불구하고, 디코딩 에러들이 디코더에 의해 리턴되는 각각의 심볼의 어느 하나 또는 모든 비트들 상에서 발생할 수 있다.
(2) 많은 디코딩 에러들이 격리된 방식으로 디코딩된 데이터 심볼들의 개별적인 비트들 상에서 발생할지라도, 디코딩 에러들이 그룹들에서 나타날 경향이 존재하고, 비트들의 이러한 그룹들이 잘못되는 경우들에서, 후속 ECC 수정 설계가 큰 정도로 이들을 수정할 수 있어야 한다.
리드-솔로몬 에러 수정의 종래 기술 구현들은 충분한 오버헤드(overhead)가 제공된다면, 상기 특성들로 에러들을 수정할 수 있다. 본 명세서는 어떤 의미에서, 강화된 효율의 이점과 함께, 동일한 결과를 성취하기 위해 매우 감소된 오버헤드를 가능하게 함으로써, 종래 기술 방법들에 대한 개선을 용이하게 한다. 강화된 효율의 이점과 함께 매우 감소된 오버헤드는 에러 확률이 비트 단위로 변화한다는 점을 인식하고 이 특성에 의존하여 적어도 다른 비트들에 관계없이 LSB들을 인코딩하고; 조직적 방식으로 비-LSB들을 인코딩함으로써 제공된다. 따라서, LSB 에러들 뿐만 아니라, 상관된 비-LSB 에러들의 프리도미넌스가 종래 기술 방법들에 의해 나타나는 효율보다 더 큰 효율로 수정된다.
종래 기술에 대한 본 명세서의 양상들
(1) 표준 회로 토폴로지 및 표준 인터페이스를 갖는 2-레벨 NAND 플래시(예시적)에 대하여.
ECC 패리티로서의 사용에 이용 가능한 여분 바이트들의 더 효율적인 이용도가 평균적으로, 종래 기술 구현들에서보다 블록 당 더 많은 데이터 에러들이 수정될 수 있다는 결과와 함께 제공받는다. 이것은 이어서, 달리 가능한 것보다 더 신뢰 가능하고/하거나 더 긴 수명의 메모리를 가능하게 한다. 어떤 의미에서 보면, 메모리는 자신의 수명에 걸쳐 더 큰 정도로 저하될 수 있지만, 상기 저하와 관련된 에러들이 사용되는 수정 방식의 전체 수정 능력을 초과하는 어떤 수의 에러들까지 수정 가능할 것이기 때문에, 상대적으로 더 긴 시간 기간 동안 유용하게 유지될 수 있다.
(2) 커스텀 인터페이스로 구성된 커스텀 메모리에서의 셀 당 2-비트 또는 그 이상을 갖는 NAND 메모리(예시적)에 대하여, 소정 정도의 수정 능력을 유지하기 위하여 시스템이 ECC 인코딩에 대한 종래 기술 방법들에 의해 가능한 것보다 블록 당 상당히 더 적은 ECC 패리티 심볼들을 사용하는 것이 가능하다. 물론, 이 개선은 ECC 구현들에 대한 종래 기술 방법들에 비하여 더 높은 밀도, 더 신뢰 가능한 메모리에서 명백해질 수 있다.
도 11a 및 11b는 2-비트 심볼들이 하나의 실시예에서 관리될 수 있는 하나의 방식을 도시한다.
도 11a에서, 2-비트 메모리 심볼들(240)의 시리즈의 코딩되지 않은 인터리브들(240 및 242)로의 변환이 도식적으로 표현되어 있다. 심볼들은 셀 당 2 비트 메모리 위치들에 저장된 값들을 나타낼 수 있다. 각각의 2-비트 심볼을 이의 MSB 및 LSB로 분할함으로써 2개의 별도의 인터리브들을 구성하는 것이 도시되어 있다. MSB는 도면에서 인터리브들 중 상부 인터리브를 구성하거나 상기 상부 인터리브에 추가되고, LSB는 순차적인 방식으로 다른 하부 인터리브를 구성하거나 상기 하부 인터리브에 추가된다. 상기 프로세스는 화살표들(246)에 의해 표시된 바와 같이 가역적이다. 이 방식으로 구성된 2개의 인터리브들은 도 11b에 도시된 방법에 따라 리드-솔로몬 인코딩될 수 있다.
도 11b는 리드-솔로몬 패리티에 이용 가능한 예산된 양의 오버헤드가 도 11a에서 구성된 인터리브들의 인코딩에 할당될 수 있는 하나의 실시예를 도시한 도식도이다. 무엇보다도, 도 11a에서 구성된 인터리브들이 비트들의 시퀀스로부터 각각의 인터리브 상에 작용하는 리드-솔로몬 검사바이트 계산 프로세스에 의해 직접적으로 인코딩될 수 있는 리드-솔로몬 심볼들의 시퀀스로 변환되었다고 가정된다. 그 후, ECC 인코딩이 인터리브들에 대해 수행될 수 있다. 그렇게 하는 절차는 (리드-솔로몬 당업자들에게 익숙한) 종래 방법들에 따르거나 또는 인터리브들의 개별적인 취급을 포함할 수 있다. 어느 경우든지, 결과는 각각의 인터리브를 수반하는 잔여 심볼들(검사바이트들)의 시리즈를 발생시키는 리드-솔로몬 인코딩이다. 도 11b는 K개의 오버헤드 심볼들의 세트가 잔여 심볼들의 전체 세트에 대해 이용 가능할 수 있다는 것을 도시한다. 그러나, 본 예에서, 이 전체 중 K/2+R이 (에러가 있을 확률이 가장 높은 LSB들을 포함하는) 인터리브 0에 할당될 수 있고, K/2-R이 에러가 있을 확률이 더 적은 (MSB들을 포함하는) 인터리브 1에 할당될 수 있다. R은 본 예에서, K의 값의 1/2 미만인 임의의 값일 수 있다. 따라서, 커스터마이징된 에러 수정이 비트 중요도를 기반으로 하여 적용되었다. 지금까지 밝혀졌던 개념들을 더 복잡한 상황들로 확장시키는 추가적인 예들이 이하에 제공될 것이다. 더 큰 수의 패리터 심볼들이 인터리브 0의 LSB에 전용되었다는 것이 인식될 수 있다.
다중-계층 코딩 시스템이 적어도 2개의 인코드 및 2개의 디코드 블록들을 포함한다는 점이 인식되어야 한다. 다중-레벨 채널 또는 매체는 1 비트 이상에 의해 표현되는 디지털 형태로 정보를 전달 또는 저장하도록 한다. 1 비트 시스템은 일반적으로 단일 레벨 시스템이라고 칭해진다. 2 비트는 디지털로 완전히 표현하기 위해 적어도 4개의 레벨들을 필요로 하고, 3 비트는 8개의 레벨들을 필요로 하며, 4 비트는 16개의 레벨들을 필요로 하며, 이런 식으로 2^n 방식으로 진행된다. 상술된 바와 같이, 다중-레벨 메모리 셀들에 실제로 저장되는 값들은 본원에서 데이터 심볼들이라고 칭해진다.
다중-레벨 채널과 함께 리드 솔로몬(RS) 에러 수정을 코딩 시스템들의 외부 층으로서 사용하고 트렐리스 코딩된 변조(Trellis Coded Modulation: TCM)를 코딩 시스템의 내부 층으로서 사용하는 시스템에서, 상이한 시스템들 사이의 심볼 크기들이 상이한 크기들로 이루어지는 것이 통상적이다. 전형적인 시스템에서, 정보(즉, 실제 사용자 데이터)는 8 비트 바이트로서 표현된다. 리드 솔로몬 인코딩 시스템은 통상적으로 8 비트 이외의 심볼 크기들을 갖는다. 예를 들어, 디스크 드라이브 RS 시스템들은 통상적으로 10 비트 심볼들을 사용한다. 반면에, 트렐리스 코딩된 변조에서, 코딩은 3 비트로부터 6 비트 심볼 크기들로 변화할 수 있고, 다중레벨 채널들은 2 이상의 비트를 나타내기 위하여 임의의 수의 레벨들을 포함할 수 있다. TCM의 특성은 에러들이 버스트들로 발생하는 경향이 있도록 한다. 이것은 TCM 코딩 시스템의 컨볼루션/비터비 부분의 특성이다. 다수의 에러들을 다수의 심볼들에 걸쳐 분배하는 것과 반대되는 바와 같이, 다수의 에러들이 하나의 RS 심볼에서만 발생할 때, 에러들의 버스트들이 리드 솔로몬 시스템에서 가장 양호하게 핸들링된다는 점이 인식되어야 한다. 인식되는 바와 같이, 출원인들은 이러한 2개의 상이한 코딩 시스템들의 특성들이 각각의 시스템의 강도들을 가장 양호하게 사용하는 방식으로 메모리 셀들 내에 상이한 시스템들의 비트들 및 심볼들을 배열 또는 맵핑하는데 이바지한다는 것을 인식하였다.
다중레벨 채널에서, 상술된 바와 같이, 최하위 비트가 가장 높은 에러 확률을 갖는다. 이 때문에, 그리고 하나의 예시적 실시예에서, 최대 가능도 검출기(maximum likelihood detector)와 함께 컨볼루션 코드가 LSB에 대해서만 사용되는 반면, 최상위 비트들은 컨스텔레이션 맵핑을 통하여 코딩될 수 있다. 그러나, TCM 코딩이 그 후에, 패리티 비트들을 발생시켜서, 최상위 비트들보다 더 많은 최하위 비트들이 존재하도록 한다. LSB들에서 에러들이 발생할 때, 상기 에러들이 MSB에 대한 컨스텔레이션 선택에 영향을 줄 수 있고, 이것이 훨씬 더 많은 에러들을 발생시킨다는 점이 인식되어야 한다. 더욱이, 에러들의 버스트가 TCM 밖에서 발생한다면, 최하위 비트에 영향을 줄 확률이 더 높다. 따라서, 수정 시스템은 에러들의 더 큰 버스트에 걸쳐 RS 시스템의 수정 능력을 효율적으로 확산시키도록 동작하는 방식으로 리드 솔로몬 심볼들을 부과함으로써 이익을 얻을 수 있다.
도 12를 참조하면, 데이터 구조 또는 모자이크가 일반적으로 참조 번호 100에 의해 표시되고, 도식적으로 도시되어 있다. 데이터 구조(260)는 설명적인 목적들을 위하여 30개의 셀들 각각의 4개의 로우(row)들(262a 내지 262d)에서 도시되고 번호가 점선 직사각형들 내에서 지정되는 메모리 셀들(M1 내지 M120) 배열 상에 부과될 수 있다. 이러한 메모리 셀들은 순차적인 방식으로 어드레싱 가능할 수 있지만, 이것이 필요조건은 아니다. 본 예에서, 각각의 메모리 셀은 4 비트 값을 데이터 심볼로서, 예를 들어, 플래시 메모리 셀 내의 어떤 전하량으로서 저장한다. 대응하는 비트 값들이 도면에서 각각의 로우에 인접한 비트 0 내지 비트 3으로서 라벨링된다. 또한, 데이터의 4개의 인터리브들의 분포가 맵 전체에 걸쳐 도시되며, 각각의 인터리브는 데이터의 4개의 블록들의 각각의 블록으로부터 생성되는 리드 솔로몬 심볼들을 포함한다. 인터리브들을 형성하는 다양한 영역들을 도시하는 키(270)가 제공된다는 점이 주의된다. 각각의 타일에 의해 수용되는 심볼은 채널 심볼이라고 칭해질 수 있다. 제 1 인터리브는 제 1 인터리브를 포함하는 그러한 비트 위치들에 적용되는 대각선 크로스 해치(diagonal cross hatch)를 사용하여 도시된다. 제 2 인터리브는 제 2 인터리브를 포함하는 그러한 비트 위치들에 적용되는 수평 크로스 해치를 사용하여 도시된다. 제 3 인터리브는 제 3 인터리브를 포함하는 그러한 비트 위치들에 적용되는 수직 크로스 해치를 사용하여 도시된다. 제 4 인터리브는 이 데이터를 포함하는 비트 위치들에 적용되는 크로스 해치를 사용하지 않고 도시된다. 데이터 구조(260)는 부가적으로 각각이 소정의 시간에 하나의 10 비트 리드 솔로몬 심볼을 포함할 수 있는 모자이크 타일들의 패턴으로 구성되는 모자이크를 메모리 셀들 상에 부과한다. 본 예에서, 처음의 30개의 메모리 셀들이 도시되어 있고, 이러한 메모리 셀들의 비트들은 할당된 모자이크 타일(Mosaic Tile: MT) 번호들(MT-1a 내지 MT-11a)을 할당받는다. 적어도 10개의 리드 솔로몬 비트 위치들이 각각의 모자이크 타일에 의해 둘러싸이고, 개별적인 리드 솔로몬 비트 번호들이 0 내지 9로서 각각의 모자이크 타일 내에서 지정된다. MT-2a 내지 MT-6a 및 MT-8a 내지 MT-11a에 대하여, 리드 솔로몬 비트 번호들은 인접한 메모리 셀의 비트들을 사용하는 것으로 진행하기 이전에, 도시된 바와 같이, 메모리 셀들의 비트들 1 내지 3에 걸쳐 정렬될 수 있는 사형 방식(serpentine fashion)이라고 칭하는 것으로 배열된다. 예를 들어, MT-2a에서, 메모리 셀 3의 비트들 1 내지 3은 리드 솔로몬 비트들 1 내지 3을 각각 포함한다. 메모리 셀 4의 비트 3은 리드 솔로몬 비트 0을 포함한다. 메모리 셀 2의 비트들 1 내지 3은 리드 솔로몬 비트들 4 내지 6을 각각 포함하고, 메모리 셀 1의 비트들 1 내지 3은 리드 솔로몬 비트들 7 내지 9를 포함한다. 사형 방식으로 배열되는 리드 솔로몬 비트들을 포함하는 모자이크 타일들은 사형 타일들이라고 칭해질 수 있다. 대조적으로, MT-1a 및 MT-7a는 이러한 2개의 MT들이 이러한 2개의 리드 솔로몬 심볼들 내에서 메모리 셀들 1 내지 30에 대해 모두 비트 0들을 포함하기 때문에, "플랫 타일(flat tile)들"이라고 칭해질 수 있다. 이러한 플랫 타일들이 그룹으로서 선택되는 최하위 비트와 관련되는 비트스트림을 포함하는 한, 이러한 플랫 모자이크 타일들에 대한 집합적인 에러 확률이 모자이크 타일들 모두에 대해 최대 에러 확률을 나타낸다는 점이 인식되어야 한다. 또 다른 타일로의 할당을 위해 비트들의 상이한 그룹을 선택하는 것은 비트들의 상이한 그룹이 더 작은 에러 확률과 관련되는 비트들을 포함하기 때문에, 더 작은 집합적인 에러 확률을 발생시킨다. 서브젝트 플랫 타일(subject flat tile)이 사형 타일들에 의해 포함되는 10개의 비트 위치들과 반대되는 바와 같이, 15개의 비트 위치들을 포함한다는 점이 주의된다. 5개의 여분의 비트 위치들은 내부에 저장된 리드 솔로몬 심볼의 10개의 비트 위치들 전체에 걸쳐 분포되는 "x"를 사용하여 식별된다. x 위치들은 메모리 셀들의 비트 0과 관련되는 증가된 에러 확률을 보상하기 위하여 본 실시예에서 메모리 셀들의 비트 0에 적용되는 TCM 인코딩에 의해 결정되는 패리티 비트들이다.
도 12를 계속 참조하면, MT-1a 내지 MT-11a의 패턴은 도면에 도시된 11개의 MT들의 각각의 연속적인 그룹에 대해 반복된다. 이 점에서, 아래첨자들 a 내지 d는 특정 MT가 나타나는 로우를 지정하기 위하여 적용되었지만, 이와 같은 지정들이 설명적인 명확화를 위하여 제한된 수의 MT들에 적용되었다. 그러나, MT들의 콘텐트(content)들이 미리결정된 방식으로 인터리브들 사이에서 회전한다는 점을 이해하는 것이 중요하다. 도 13은 각각의 MT가 인터리브 및 이와 관련된 RS 심볼의 지정을 가지는, 도 12의 모자이크를 도시한다. 각각의 MT는 Ix Sy로서 라벨링되고, 여기서, x 및 y는 인터리브의 번호 및 상기 인터리브의 부분으로서의 리드 솔로몬 심볼의 번호를 나타낸다.
본 실시예에서, MT-1a는 TCM 인코딩이 적용되었던 인터리브 1의 제 1 RS 심볼(I1S1)을 포함한다. MT-2a는 인터리브 2의 제 1 RS 심볼(I2S1)을 포함하고; MT-3a는 인터리브 3의 제 1 RS 심볼(I3S1)을 포함하고; MT-4a는 인터리브 4의 제 1 RS 심볼(I4S1)을 포함한다. 그 후, MT-5a는 인터리브 1의 제 2 RS 심볼(I1S2)을 포함하고, MT-6a는 인터리브 2의 제 2 RS 심볼(I2S2)을 포함한다. MT-6a가 MT-1a의 리딩 에지(leading edge)라고 칭해질 수 있는 것에서 실제로 경계(280) 앞에 있는 RS 비트들 0 내지 4를 포함한다는 점이 인식되어야 한다. 이 때문에, MT-7a는 TCM 인코딩을 포함하는, 제 3 인터리브의 제 2 RS 심볼(I3S2)을 포함한다. 그 후, MT-8a는 제 4 인터리브의 제 2 RS 심볼(I4S2)을 포함하고; MT-9a는 제 1 인터리브의 제 3 RS 심볼(I1S3)을 포함하고; MT-10a는 제 2 인터리브의 제 3 RS 심볼(I2S3)을 포함하고; MT-11a는 제 3 인터리브의 제 3 RS 심볼(I3S3)을 포함한다. 그 후, 인터리브들 사이의 회전은 제 4 인터리브의 제 3 RS 심볼(I4S3)을 포함하는 MT-1b에 의해 계속되며, 후속 MT들의 콘텐트들이 도면에서 명백하다. 정션(junction)(282)에서, MT-6b의 RS 비트 위치들 0 내지 4가 MT-1b의 리딩 에지(282)라고 칭해질 수 있는 것 앞에 있다는 것이 도 12에서 인식될 수 있다. 이 때문에, MT-7b는 제 2 인터리브의 제 5 RS 심볼(I2S5)을 포함한다. 도시된 모든 메모리 셀들은 설명된 맵핑을 겪는다. 맵핑 패턴 전체가 설명되었고 도면의 모자이크가 이제 반복될 수 있다는 점이 인식되어야 한다. 각각의 인터리브에 대하여, 11개의 RS 심볼들이 메모리 배열에서 맵 아웃(map out)된다는 점이 인식될 수 있다. 더구나, 각각의 인터리브가 플랫 타일들 중 하나에서 두 번 나타나기 때문에 인터리브들 사이의 에러 확률들을 평형화하는 방식으로 다양한 인터리브들로부터의 심볼들이 모자이크 타일들 사이에서 분포된다. 예로서, 10 비트의 리드 솔로몬 심볼 크기가 4 비트 데이터 심볼 크기와 함께 선택되었다. 이 선택이 제한인 것으로 의도되지 않고, 밝혀졌던 개념들이 RS 심볼 크기들 및 데이터 심볼 크기들의 광범위한 조합에 적용 가능한 것으로 간주된다는 점이 이해되어야 한다.
도 14를 참조하면, 도 12 및 13의 모자이크를 생성하는 패킹 기술의 하나의 실시예를 도시하는 흐름도가 제공된다. 처음에, 300에서, RS 심볼들이 패킹을 준비하기 위하여 직렬화될 수 있다. 302에서, 플랫 타일에 RS 심볼이 로딩(loading)된다. 이 심볼은 TCM 인코딩을 포함할 수 있다. 304에서, 다음의 사형 타일에 RS 심볼이 로딩된다. 306에서, 패킹될 추가적인 심볼들이 유지되는지가 테스트를 통해 결정된다. 패킹될 추가적인 심볼들이 유지되지 않는 경우에, 프로세스는 310에서 종료된다. 그러나, 추가적인 심볼들이 존재하는 경우에, 312에서, 로딩받을 최종 사형 타일의 임의의 비트들이 경계를 가로질렀는지를 결정하기 위하여 리딩 경계가 테스트된다. 일부 경우들에서, 최종 사형 타일의 비트들은 마치 경계가 가로질러진 것처럼 다루어지는 경계에 대해 완전하게 패킹될 수 있다. 어느 경우든지, 그 후에, 302에서, 다음 플랫 타일에 심볼이 로딩된다. 비트들이 경계를 능가하지 않거나 최종 사형 타일이 경계에 대해 완전하게 패킹되지 않은 경우에, 304에서 다음 사형 타일이 로딩받는다. 이 패킹 기술이 넓은 적용성을 가지고 있다고 간주된다. 예를 들어, 상기 기술은 리드 솔로몬 심볼들의 사용으로 제한되지 않고, 광범위한 모자이크들 및 관련된 타일 패턴들에 용이하게 적응될 수 있다. 이러한 타일 패턴들은 사형 패턴을 겪는 적어도 2개의 다른 데이터 비트들과 함께 하나 이상의 데이터 비트를 플랫 타일을 겪도록 할 수 있다. 더구나, 플랫 타일들은 상이한 길이들로 이루어질 수 있어서, 상이한 경계들이 상이한 시간들에서 테스트될 수 있다.
도 15를 참조하면, 데이터 구조의 하나의 실시예가 일반적으로 참조 번호 400에 의해 표시되고, 도식적으로 도시되어 있다. 데이터 구조(400)는 10의 4개의 그룹들에서 도시된 메모리 셀들(M1 내지 M40)의 배열 상에 부과될 수 있다. 본 예에서, 각각의 메모리 셀은 4 비트 값들을 저장하고, 최우측 컬럼(column)은 비트 0 값을 표시하고, 비트들 1 내지 4은 비트 0 컬럼의 좌측에 도시되어 있다. 이러한 메모리 셀들은 순차적인 방식으로 어드레싱 가능할 수 있지만, 이것이 필요조건은 아니다. 또한, 데이터의 4개의 인터리브들의 분포가 상기 데이터 구조 전체에 걸쳐 도시되어 있고, 각각의 인터리브가 데이터의 4개의 블록들의 각각의 블록으로부터 생성될 수 있는 리드 솔로몬 심볼들을 포함한다. 인터리브들을 형성하는 다양한 영역들을 도시하는 키(402)가 제공된다는 점이 주의된다. 제 1 인터리브는 제 1 인터리브를 포함하는 그러한 비트 위치들에 적용되는 직각으로 교차하는 크로스 해치를 사용하여 도시된다. 제 2 인터리브는 제 2 인터리브를 포함하는 그러한 비트 위치들에 적용되는 수직 크로스 해치를 사용하여 도시된다. 제 3 인터리브는 이 데이터를 포함하는 비트 위치들에 적용되는 크로스 해치를 사용하지 않고 도시된다. 제 4 인터리브는 이 데이터를 포함하는 비트 위치들에 적용되는 수평 크로스 해치를 사용하여 도시된다. 데이터 구조(400)는 부가적으로 각각이 소정의 시간에 하나의 10 비트 리드 솔로몬 심볼을 포함할 수 있는 모자이크 타일들의 패턴으로 이루어지는 모자이크를 메모리 셀들 상에 부과한다. 본 예에서, 처음의 40개의 메모리 셀들이 도시되어 있고, 이러한 메모리 셀들의 비트들이 할당된 모자이크 타일(MT) 번호들 MT1 내지 MT16을 할당받는다. TCM 인코딩이 본 예에서 비트 0에 적용되어, 10개의 리드 솔로몬 비트 위치들이 각각의 모자이크 타일에 의해 둘러싸이고, 개별적인 리드 솔로몬 비트 번호들이 0 내지 9로서 각각의 모자이크 타일 내에서 지정된다는 점이 주의된다. MT-2 내지 MT-4, MT-6 내지 MT-8, MT-10 내지 MT-12, 및 MT14 내지 MT16에 대하여, 리드 솔로몬 비트 번호들은 인접한 메모리 셀의 비트들을 사용하는 것으로 진행하기 이전에, 도시된 바와 같이, 메모리 셀들의 비트들 1 내지 3에 걸쳐 정렬되는 사형 방식으로 배열된다. 예를 들어, MT-2에서, 메모리 셀 2의 비트들 1 내지 3은 리드 솔로몬 비트들 4 내지 6을 각각 포함한다. 메모리 셀 1의 비트들 1 내지 3은 리드 솔로몬 비트들 7 내지 9를 각각 포함한다. 사형 패턴으로 배열되는 리드 솔로몬 비트들을 포함하는 모자이크 타일들은 사형 타일들이라고 칭해질 수 있다. 대조적으로, MT-1, MT-5, MT-9 및 MT-13은 이러한 4개의 MT들이 4개의 리드 솔로몬 심볼들 내에서 메모리 셀들 1 내지 40에 대해 모두 비트 0들을 포함하기 때문에, "플랫 타일들"이라고 칭해질 수 있다. 다시, 플랫 타일들은 모든 메모리 셀에 대해 비트 0 값들을 포함함으로써 단일 리드 솔로몬 심볼에서 나타나는 에러들의 버스트의 가능도를 증가시키기 때문에, 에러를 겪을 확률이 가장 높아서, RS 코드의 전체 수정 능력이 상술된 바와 같이, 그러나 TCM 인코딩을 사용함이 없이, 에러들 모두를 수정할 수 있는 확률이 더 높다.
도 15와 함께 도 16을 참조하면, 도 16은 타일들을 명확하게 도시하기 위하여 메모리 셀들 및 메모리 셀 비트들의 개별적인 지정들이 없지만, 인터리브 및 심볼 번호에 따라 각각의 타일에 의해 포함된 RS 심볼들의 지정들을 갖는 도 15의 모자이크 타일들을 도시한다. 구체적으로는, 타일들은 도 12에서와 같이 도 16에서 IxSy로서 지정되며, 여기서, x는 인터리브 번호이고, y는 관련된 인터리브에 대한 심볼 번호이다. 따라서, 예로서, I2S4는 제 2 인터리브의 제 4 RS 심볼이다. 도시된 바와 같이, 추가적인 에러 보호가 타일 위치들 사이의 4개의 인터리브들 사이의 회전을 통해 실현되어, 어느 하나의 인터리브가 상대적으로 더 큰 에러 확률을 겪지 않도록 한다는 점이 인식되어야 한다. 즉, 각각의 인터리브는 전체 모자이크의 도시된 완전한 시퀀스 동안 플랫 타일 위치(도 15의 비트 0)에서 한 번 나타난다. 따라서, 메모리 셀 비트 0과 관련된 에러 확률이 인터리브들 사이에서 균일하게 분포된다. 도 15 및 16의 도시된 모자이크가 예로서 제공되었고, 밝혀졌던 내용들이 광범위한 데이터 배열들에 적용될 수 있다는 점이 주의된다.
지금까지의 명세서 및 도면들을 사용하면, 당업자가 본원의 내용들을 고려하여 제어기 또는 유사한 장치 및 관련 방법들을 용이하게 구현할 수 있다고 간주된다. 다음의 명세서 및 후속 도면들은 부가적인 설명을 위하여 제공된다.
데이터 저장 시스템에 대한 제어기는 호스트 컴퓨터(host computer)가 각각 상기 저장 시스템의 매체로 정보를 저장하고 상기 저장 시스템의 매체로부터 정보를 검색하는 것을 가능하게 하는 디바이스이다. 제어기는 데이터가 저장될 수 있는 어드레싱 가능한 저장 유닛들의 세트를 자신의 호스트에 제공한다. 제어기는 호스트에 의해 발행된 명령들을 수신 및 실행함으로써 자신의 호스트 대신하여 이러한 유닛들에 액세스하고, 이러한 명령들을 저-레벨 판독/기록 및 매체와의 다른 트랜잭션들로 변환하는 기능을 구현한다. 용어 "호스트" 또는 "호스트 컴퓨터"의 정의는 호스트 및 제어기 사이의 명령-레벨 상호작용들의 결과로서 호스트로, 그리고 호스트로부터 데이터를 전달하는 인터페이스를 통하여 제어기에 연결되는 임의의 디바이스이다. 이 정의에 의하여, 호스트는 애플리케이션 프로그램(application program)들을 실행하는 컴퓨터일 수도 있거나 그렇지 않을 수도 있고; 많은 가능성들 중 하나의 예로서, 호스트는 (RAID 제어기와 같은) 또 다른 메모리 제어기일 수 있다. 이 인터페이스의 설계는 유일할 수 있고, 표준-기반 사양들에 의해 정의되는 많은 인터페이스들 중 하나를 따를 수 있다. 저장 시스템 내에 저장 매체를 포함하는, 양방향에서의 데이터 전달은 제어기에 의해 제공되는 1차 서비스(primary service)이다. 제어기 기능은 전형적으로 하드웨어 및 소프트웨어 요소들의 조합으로서 구현된다; 특정 혼합은 특히 성능 및 비용에 관해 행해진 선택들에 기인하는 아키텍처(architecture)를 포함한다. 통상적으로, 본래 하드웨어 또는 소프트웨어 중 하나로서 구현되는 펑션들의 유형들이 존재한다. 선택이 존재하는 경우에, 판정 기준은 통상적으로 비용 및/또는 성능에 관련된 고려사항들 사이의 절충을 기반으로 한다. 보조적인 제어기 서비스들이 매체 자원들을 관리하고, 저장 및 검색된 정보의 무결성(integrity)을 보증한다. 제어기에 포함될 수 있지만, 강제적이지 않은 추가적인 서비스들은 예를 들어, 데이터 보안, 또는 파워 관리일 수 있다.
제어기의 구현은 반드시 제어기가 설계되는 시스템 역할에 특정된다. 어떤 종류(들)의 호스트 및 이로부터 예상된 수요들, 뿐만 아니라, 저장 매체 자체의 기술 및 범위가 기능적인 설계 요건들이 발생될 수 있는 일부 고려사항들이다. NAND 플래시 메모리의 경우에, NAND 플래시 디바이스들에 대한 제어기들의 설계에서 설정된 관행이 존재한다.
NAND 플래시를 목표로 하는 제어기 설계는 본 문서에서 예시적이다. 다중-레벨 NAND 플래시 저장장치의 특정 요구들을 지원하는 제어기의 양상들이 또한 상 변화 메모리(P-RAM) 및 저항성 메모리(R-RAM)를 포함하지만, 이에 제한되지 않는 다른 비휘발성 저장 기술들에 적용된다.
에러 없는 정보를 성공적으로 저장 및 검색하는 비휘발성 매체로 이루어지는 데이터 저장 시스템은 메모리 디바이스들을 포함하는 각각의 셀에 다중 레벨들을 저장할 때 과장되는 매체 결함들을 극복하기 위하여, 예를 들어, 도 1 내지 17과 관련하여 상술된 바와 같이, 다양한 기술들을 사용할 수 있다. 매체 결함들은 각각의 셀에 저장된 레벨들의 수와 관계없이 잡음의 형태를 취하며, 각각의 셀 및 이의 이웃들 사이의 상호작용들은 잡음에 추가되는 왜곡들을 발생시킬 수 있다. 셀 당 저장된 레벨들의 수가 클수록, 잡음의 영향이 커져서, 에러 없는 데이터를 저장 및 검색하는 기술들이 더 적은 레벨들의 저장에 대한 대응하는 기술들보다 더 로버스트해야 한다(통상적으로 더 큰 정교화, 및 더 많은 코딩 오버헤드를 필요로 한다).
다음은 수용 가능한 잡음 양을 특징으로 하는 매체 셀들 내의 3 이상의 비트들(심볼 당 8개 이상의 레벨들)의 셀-당 저장에 특히 적합한 메커니즘 및 관련 방법을 생성하는 적어도 하나의 실시예를 설명한다. 이 메커니즘을 적용하게 되면, 잡음 앞에서의 데이터 저장 용량, 저장 용량, 검색 성능, 적용 유연성, 및 구현의 경제성이 최적으로 평형화된다. 상기 메커니즘의 실현 및 비휘발성 메모리 매체로의 이의 적용은 설명되는 시스템의 기초이다.
간략히 말하면, 장치 및 관련 방법은 바로 밑에 목록화되는 4개의 요소들(이중 거의 하나가 상술되었다) 중 하나 이상의 어떤 조합에 의해 데이터 저장 에러 검출 및 수정 프로세스를 수행하는 하드웨어 및 소프트웨어의 구성에 의해 실현될 수 있다:
(1) 트렐리스 코딩된 변조(TCM),
(2) 비트 스트림 인코딩,
(3) 부속 에러 검출 및 수정 펑션, 및
(4) 시스템-지향 선-보상 및 후-보상 펑션들(선택적)
이러한 요소들 4개 모두는 특정 제어기 설계의 상황에서 비-일반적일 수 있다. 각각은 자신의 비헤이비어(behavior) 및 성능의 경계들 정의하는 어떤 세트의 파라미터들로 구성될 수 있고, 메커니즘은 특정 잡음 특성들, 뿐만 아니라, 비트-밀도 세팅들의 범위를 각각 갖는 매체 디바이스들의 범위를 수용하기 위하여 "조정 가능"할 수 있다. 제어기의 "조정가능성(tunability)" 속성은 제어기에 의한 동작의 과정 동안 변화할 수 있는 메모리 매체의 특성들에 따라 상술된 파라미터들을 변화시키는 능력을 제공할 수 있다.
상기의 요소들 (1), (2), 및 (3)은 한편으로는 데이터를 메모리 매체에 저장하기 이전에 데이터를 인코딩하는 방법 및 장치의 형태, 및 다른 한편으로는 데이터가 메모리 매체로부터 검색된 이후에 데이터를 디코딩하는 방법 및 장치의 형태를 취할 수 있다. 상기의 요소 (4)는 (1), (2), 및 (3)의 인코드 및 디코드 프로세스들과 동시에, 그리고 (1), (2), 및 (3)의 인코드 및 디코드 프로세스들과 거의 관계없이 동작하는 방법 및 장치를 포함한다. 그러나, 선-보상 및 후-보상 장치, 즉, 요소 (4)는 제어기에서의 데이터 흐름들을 모니터링하고, 이 점에서, 인코드 및 디코드 흐름들과 통합되는 제어기 구성요소이다; 실제 보상은 인코딩 또는 디코딩 흐름을 통과하는 데이터로의 보상 값들의 적용을 통해 발생한다. 인코딩 및 디코딩 양상들은 일반적으로 모든 이와 같은 제어기들이 판독 및 기록 프로세스들을 지원한다는 점에서 메모리 제어기들에 공통이다. 그러나, 설명된 시스템의 특성들을 구별하는 것은 종래 기술 판독 및 기록 프로세스들을 사용하는 시스템으로부터 이와 같은 제어기를 구별한다.
제어기에서의 TCM 인코딩 및 디코딩은 특정 메모리 매체로 최적의 성능을 성취하기 위하여 상술된 "조정가능성" 속성을 사용하여 구성될 수 있다. 프로그래밍 가능한 구성 파라미터들은 각각의 TCM 심볼의 컨볼루션 다항식(convolution polynomial)들, 코드 펑쳐 다항식(code puncture polynomial)들, 컨스텔레이션 맵핑 평션들, 및 컨볼루션으로 인코딩된 서브셋을 포함한다.
이 시스템에서의 인코딩은 상술된 바와 같이, TCM 심볼들이 각각의 TCM 심볼 내의 각각의 비트의 실패 확률에 따라 부속 에러 검출 및 수정(ECC) 펑션의 코드워드들로 할당되는 방법 및 대응하는 장치일 수 있다. 예를 들어, 다중-레벨 저장 시스템에서, 심볼 내의 더 낮은 중요도의 비트들이 더 큰 중요도의 비트들보다 더 높은 에러 확률을 나타내는 상기에 인식된 특성에 따라, 상기 인코딩/디코딩 펑션은 더 중요한 비트들보다 대응적으로 더 많은 ECC 능력을 TCM 심볼들로부터의 덜 중요한 비트들에 할당한다. 게다가, 디코딩 실패의 이벤트(event)에서 에러들을 전파하는 경향이 있는 TCM 디코딩 펑션에 의해 표시되는 비헤이비어 때문에, 디코딩 실패 이벤트들과 상관되고, 엄격하게 말하면, (상술된 바와 같이) 더 중요한 비트들에 대한 덜 중요한 비트의 더 높은 에러 확률에 의해 결정되지 않는 다수의 비트 에러들이 디코딩된 TCM 심볼 스트림에서 관측된다. 따라서, 구현된 바와 같은 설명된 시스템의 추가적인 속성은 ECC 수정 능력 및 더 중요한 비트들에 대한 덜 중요한 비트들의 상대적인 확률과 TCM 에러 전파의 조합 사이의 가장 양호한 가능한 평형을 제공하기 위한 에러 수정 능력으로의 TCM 심볼들의 할당일 수 있다.
부속 에러 검출 및 수정(ECC) 펑션은 검출 프로세스 동안 에러가 있는 정보를 검출 및 수정하는 임의의 인코딩 및 디코딩 프로세스일 수 있다. TCM과 함께 사용될 때 가장 바람직한 ECC 구현은 다수의 인터리브 리드-솔로몬 코드를 사용하는 것일 수 있다. 그러나, 최적의 BCH 사용에 대한 대응하는 인코딩 파라미터들이 리드-솔로몬 사용에 대한 대응하는 인코딩 파라미터들과 상이할지라도, (예로서) 좁은 의미의 BCH가 동등한 유효성으로 사용될 수 있다. 다른 실시예들은 아직 개발되지 않은 부속 ECC 펑션들을 사용할 수 있다.
선-보상 및 후-보상은 선-보상의 경우에 TCM 심볼 스트림이 기록되기 이전에, 또는 후-보상의 경우에 TCM 심볼 스트림이 디코딩되기 이전에 TCM 심볼 스트림에 수정들을 팩터-인(factor-in)하는 방법 및 장치의 정점들일 수 있다. 장치 및 관련 방법 면에서, 전체 보상 방식은 인코딩 프로세스 및 디코딩 프로세스과 관계없이 동작함으로써 여러 어려움들을 극복할 수 있고, (제어기의 소프트웨어에 의한 감독 태만(supervisory oversight) 이외의) 제어기의 임베딩된 마이크로제어기 상에 프로세싱 오버헤드를 부과하지 않을 수 있다. 상기 보상 방식은 흐름 내의 데이터가 실제 디코딩 흐름과 관계없이 잡음을 완화시키기 위하여 조정될 수 있는 방법에 관한 정보를 축적하기 위하여 제어기에서 인코딩 및 디코딩 흐름들을 모니터링함으로써 기능한다. 상기 방법 및 장치는 데이터 스트림들에 실제로 선-보상 또는 후-보상을 적용하기 위하여 제어기에 의해 사용되는 배열을 유지하기 위해 축적된 정보를 사용한다(통상적으로 검색 테이블-기반 방법). 검색 테이블 기반 방법과 결합된 보상 하드웨어의 일반성은 자체로 유용하다. 보상 유연성이 유용하게도, 상기에 목록화된 4개의 요소들의 조합들을 사용해서도 유지될 수 있고, 이 유연성은 매체와 관련된 양호하게-이해되는 데이터 왜곡 비헤이비어들을 보상하는 것 뿐만 아니라, 예측하지 않은 효과들, 및 비-선형 효과들조차도 프로그램적으로 보상하는 것을 가능하게 한다.
인코딩 설명
참조 번호 1000에 의해 일반적으로 표시되고 상기 내용들에 따라 동작하고 있는 제어기에 의해 실행 가능한 인코딩 방법의 하나의 실시예를 도시한 도 17이 이제 주목된다. 일반적으로, 도 17은 이 도면의 상부에서의 인코딩되지 않은 심볼들에서 시작하고 프로세스의 인코딩된 결과를 구성하는 선-보상된 TCM 심볼들의 출력으로 이 도면의 하부에서 종료되는 인코딩 흐름을 도시한다. 방법(1000)의 각각의 단계가 바로 밑에 설명된다.
단계(1100)에서, 앞으로 "사용자 데이터 심볼들"이라고 칭해지는 코딩되지 않은 심볼들이 다양한 방식들로 획득될 수 있다는 점이 인식되어야 한다. 간소화를 위하여, 사용자 데이터 심볼들이 인코더에 공급될 수 있는 모든 가능한 방식들이 "소스(source)"라고 칭해진다. 예를 들어, 심볼들은 제어기 내부 또는 외부에 있을 수 있는 버퍼 메모리(buffer memory)에 포함될 수 있다. 이와 같은 메모리-버퍼링된 심볼들이 어떤 다른 위치로부터 메모리로 전달된 이후에, 메모리로부터 상기 인코딩 흐름 내로 판독될 수 있다. 또 다른 예로서, 사용자 데이터 심볼들이 제어기(및 이의 소속된 메모리 디바이스들)에 의해 명령들을 발행하고, 데이터를 송신 및 수신하는 호스트 컴퓨터에 직접적으로 연결되는 소스로서 인터페이스로부터 직접적으로 소싱(sourcing)될 수 있다. 또 다른 가능성으로서, 사용자 데이터 심볼들은 제어기 자체 내부에서 발생될 수 있다.
사용자 데이터 심볼들은 또한 인코딩 흐름을 제어하는 파라미터들인 특정 파라미터들에 의해 정의되는 2개의 특성들을 가질 수 있다. 이러한 파라미터들은 심볼 포맷(symbol format) 및 블록 길이이다.
심볼 포맷은 저장 및 검색되는 데이터의 궁극적인 사용자에 의해 이해되는 바와 같은 각각의 심볼의 폭이다. 다중-레벨 레코딩 시스템들에서, 저장 및 검색된 심볼의 폭은 자체가 가변적일 수 있고, 파라미터로서의 폭은 "비트 밀도" 세팅이라고 칭해질 수 있다. 궁극적인 사용자는 제어기에 연결된 호스트 컴퓨터일 수 있지만, 제어기 자체일 수도 있다. 사용자 데이터 심볼은 통상적으로 8-비트 폭이다. 사용자 데이터 심볼들은 8-비트 단위의 배수들의 시리즈만큼, 증분으로서 또는 한 번에 32-비트(또는 4 심볼)만큼, 또는 8-비트 단위의 서브-배수들의 시리즈, 예를 들어, 증분 당 4-비트만큼, 이러한 8-비트 단위의 시리즈로서 인코딩 프로세스에 전달될 수 있다. 사용자 데이터 심볼들의 폭은 특정 실시예와 함께 동작하도록 설계되는 임의의 값일 수 있다.
블록 길이는 일반적으로 파일-지향 저장 디바이스들에 의해 인식되는 사용자 데이터 심볼들의 저장 및 검색에 따른 특성이다. 인코딩 및 디코딩 방법들은 자신들이 데이터 심볼들이 수가 유한하도록 인코딩되는 것을 필요로 하도록 설계되며, 이 유한한 수는 무엇이든지 간에, "블록 길이"라고 칭해진다. 제어기의 일부 실시예들에서, 가변 블록 길이들이 수용될 수 있지만, 가능한 블록 길이들의 수가 무한하기보다는 오히려, 유한한 경향일 있을 수 있다. 블록 길이들의 수에 대한 하드 제약(hard constraint)이 존재하지 않지만, 정확한 수를 정의하는 것이 제어기에 의해 실행된 태스크 세트(task set)를 간소화하는데 도움이 된다. 메모리 디바이스들에서의 블록 길이들은 몇 다스(dozen) 이하의 사용자 심볼들로부터 몇 천개의 사용자 심볼들까지의 범위일 수 있고; 일부 서브시스템들은 특정 길이를 전체 저장 디바이스에 의해 채택된 세트 파라미터로서 유지하고, 일부 메모리 시스템들은 1 이상의 블록 길이가 적용되도록 할 수 있고, 다른 메모리 시스템들은 블록 길이 파라미터가 허용된 가능성들 내에서 동적으로 변화하도록 할 수 있다. 부속 블록 길이 파라미터들은 상기 파라미터들이 사용자 데이터 심볼들의 블록들에 결코 사용되지 않을지라도 소정의 메모리 서브시스템에 존재할 수 있다. 그 대신에, 이러한 부속 블록 길이들은 다른 트랜잭션들 중에서, 파일 시스템과 함께 전달되는 메타-데이터, 내부 어드레싱 및 웨어 레벨링(wear leveling)과 같은 비-사용자-데이터 트랜잭션들의 클래스들에 사용될 수 있다.
따라서, 인코딩 방법(1000)은 인코딩되지 않은 심볼들의 검색(1100)으로부터 획득되는 사용자 데이터의 블록-길이 시퀀스들에 적용될 수 있다.
예로서, 단계(1102)에서, 사용자 데이터 심볼들이 리드-솔로몬 심볼들로 변환된다. 임의의 소정의 제어기 실시예에서, 사용자 데이터 심볼들은 인코딩 및 디코딩 데이터 경로 폭을 구성하는 사용자 데이터 심볼들의 어떤 배수로 각각 이루어지는 단위들의 시리즈로서 제공될 수 있고, 이 데이터 경로 폭은 시스템의 본질적인 특성들을 변화시킴이 없이 제어기 실시예마다 변화할 수 있다. 마찬가지로, 리드 솔로몬 프로세싱과 관련된 제어기의 실시예의 구성요소들이 희망하는 시스템 속속들을 변경함이 없이 다수의 가능성들 사이로부터 데이터 경로 폭을 사용할 수 있다. 특정 제어기 구현이 예를 들어, 리드 솔로몬 대신에 좁은-의미의 BCH 실현, 또는 임의의 다른 적절한 ECC를 사용하는 것이 가능할 것이기 때문에, 리드 솔로몬 인코딩의 사용이 또한 예시적이다. 더구나, 아직 개발되지 않은 부속 에러 수정 기술이 적합한 것으로 발견될 수 있다.
심볼 변환은 일반적으로 폭 변환이다; 정보가 변환을 행하는 프로세스에서 추가되지 않는다. 하나의 예외는 사용자 심볼들의 정수(integral number)의 리드-솔로몬 심볼들의 정수로의 변환을 완료하기 위하여 채움 비트(fill bit)들이 최종적인 리드-솔로몬 심볼에 추가되는 상황이다.
예를 들어, 사용자 데이터 블록 길이는 24*8, 즉, 192 비트를 포함하는 24 바이트로서 선택될 수 있고; 리드-솔로몬 심볼 크기는 9 비트로서 선택될 수 있다. 그래서, 사용자 데이터 포맷으로부터 리드-솔로몬 포맷으로의 변환은 24개의 사용자 데이터 심볼들(바이트들)의 22개의 9-비트 리드 솔로몬 심볼들로의 변환일 것이다. 22*9=198이기 때문에, 결과적인 리드-솔로몬 심볼들에서의 비트들의 수는 24개의 사용자 데이터 바이트들에서의 비트들의 수를 22*9-24*8=6 비트만큼 초과하므로, 상기 변환으로부터 발생되는 최종적인 리드 솔로몬 심볼은 사용자 데이터 블록으로부터 획득되는 3 비트 이외에 6개의 채움 비트들로 이루어진다.
단계(1102)의 결과는 리드-솔로몬 심볼들의 블록으로서 표현되는 사용자 데이터 블록이다. 리드-솔로몬 심볼 크기가 사용자 데이터 심볼 크기와 상이할 때, 결과적인 리드-솔로몬 심볼들의 심볼 카운트(symbol count)가 사용자 데이터 심볼 카운트와 상이하다. 리드-솔로몬 심볼이 사용자 데이터 심볼보다 더 많은 비트들을 포함하는 경우에, 이 카운트는 사용자 데이터 심볼 카운트보다 더 작고, 리드-솔로몬 심볼이 사용자 데이터 심볼보다 더 적은 비트를 포함하게 되는 경우에, 반대일 것이다. 물론, 이 흐름은 예시적이어서, 리드 솔로몬 대신에 좁은 의미의 BCH가 적용되어야 하는 경우에, 심볼들은 비트들일 것이며, 각각의 프로세스 단계에서 제공되는 비트들의 수는 리드-솔로몬 심볼 배수라기보다는 오히려 비트 배수일 것이다.
단계(1102)에 의해 발생된 심볼들은 상기 심볼들이 사용자 데이터 포맷으로부터의 변환의 결과일지라도, 상기 심볼들이 여전히 (최종적인 심볼에 삽입된 채움 비트들의 가능성으로) 사용자 데이터 정보만을 포함한다는 점에서 코딩되지 않는다.
RS 인코드 단계(1104)는 패리티 계산 단계이다. 리드-솔로몬이 본 논의에서 예시적인 흐름이기 때문에, 인코딩 프로세스는 좁은-의미의 BCH에 대해 동등하게 유효할 것이며, BCH 인코딩 프로세스가 또한 패리티 계산 펑션일 것이다. 어느 경우든지, 패리티 계산 프로세스는 리드-솔로몬(또는 BCH) 심볼들을 입력으로서 취하고, 각각 리드-솔로몬(또는 BCH) 심볼들의 형태로 패리티를 부가함으로써 종료된다. 이 프로세스 단계는 입력으로서 제공되는 심볼들의 동일한 블록 더하기 패리티를 포함하는 심볼들의 추가적인 세트를 출력으로서 생성한다.
RS(또는 BCH) 패리티 계산 직후에 선택적인 랜덤화 단계(도시되지 않음)가 수행될 수 있다. 랜덤화는 심볼 값들 및 후속 인코딩(및 디코딩) 프로세스들 둘 모두에 무관한 방식으로 심볼들을 랜덤화하는 변환 펑션을 적용함으로써 성취될 수 있고; 결과적으로, 역변환이 리드-백 및 디코딩 프로세스들 동안 용이하게 적용된다. 랜덤화 단계는 실제 데이터에서 나타날 수 있는 패턴들의 영향에 대한 인코딩 및 디코딩 흐름들에서의 민감도(sensitivity)들을 최소화한다. 특정 데이터 패턴들에 대한 민감도에 대한 경향은 본 명세서의 내용과 관련된 당업자들 사이에서 통상적으로 관측되는 현상이다. 패리티 심볼들의 수는 특정 인코딩과 관련된 파라미터들에 의해 결정된다. 이들 중에서 키는 선택된 인코딩(리드-솔로몬이든지 또는 BCH이든지 간에)의 심볼들에서의 수정 능력, 및 인코딩된 인터리브들의 수이다.
인코딩 단계(1104)의 결과는 형태가 당업자들에게 인식 가능한 관행에 따르는 인코딩된 심볼들의 블록이다. 리드 솔로몬 코드가 사용되는 경우에, 출력 블록은 인터리브들의 수 및 리드-솔로몬 수정 능력에 의해 정의되는 심볼들의 추가적인 수를 포함하는 패리티 필드보다 앞서는 단계(1102)로부터의 입력 심볼들과 동일한 길이인 메시지 부분으로 이루어진다. 메시지 심볼들 및 패리티 심볼들이 랜덤화될 수 있어서, 메시지 부분의 값들이 원래 메시지와 상이할 수 있고, 패리티 부분이 인코더에 의해 계산된 패리티 심볼들에 대해 랜덤화될 수 있다는 점이 주의되어야 한다. BCH가 사용되는 경우에, 출력 심볼들은 패리티 필드보다 앞서는 원래 사용자 데이터 메시지의 비트들을 포함한다. BCH 패리티 필드는 선택된 BCH 구성의 비트 수정 능력, 및 인터리브들의 수를 포함하지만, 이에 제한되지 않는 BCH 파라미터들에 따르는 특정 수의 비트들을 포함한다. 단계(1104)로부터의 결과에서의 BCH 패리티 크기의 나머지 디터미넌트(determinant)는 특정 구현에 대한 정의 발생기 다항식(defining generator plynomial)의 구성이다.
단계(1106)에서, RS 심볼들이 상술된 바와 같은 비트스트림 인코딩(예를 들어, 도 12 참조)을 사용하여 인코딩되지 않은 TCM 심볼들로 변환된다. 이 단계가 또 다른 데이터 변환 펑션이지만, 사용자 데이터의 리드-솔로몬(또는 BCH) 심볼들로의 변환과 대조적으로, 단계(1106)는 인코딩되지 않은 TCM 심볼들의 블록을 생성하기 위하여 인입 심볼들로의 인코딩 규칙들의 적용을 포함한다. 인코딩 규칙들은 리드-솔로몬(또는 BCH) 심볼들을 예로서, 도 12 및 13과 관련하여 설명되고 도 14의 방법에 의해 구현되는 모자이크 구조의 형태 및 특성들을 가질 수 있는 데이터 구조로 재편하는 변환을 구성한다. 이 단계는 선택된 리드-솔로몬(또는 BCH) 실현을 선택된 TCM 실현과 통합하여, 이들이 함께 수정 능력 및 인코딩 오버헤드의 최적으로 조합으로 인코딩을 제공하도록 협동할 수 있게 하기 위하여 본 명세서에 따라 제조된 제어기의 특정 실시예들에 특정된다. 상기 변환은 차례로, 변환 프로세스에서 파라미터들에 영향을 주는 리드-솔로몬(또는 BCH) 및 TCM 인코더 구성에서의 파라미터들에 민감하다. 이러한 파라미터들은 다음을 포함한다:
리드-솔로몬 또는 (BCH)에 대하여, 심볼 크기, 심볼 수정 능력(T), 및 인터리브들의 수.
TCM에 대하여, 컨볼루션으로 인코딩되는 각각의 인코딩되지 않은 TCM 심볼로부터의 비트들의 수, 컨볼루션 다항식, 및 펑쳐 구성.
단계(1106)의 결과는 리드-솔로몬 인코딩 및 랜덤화에 의해 변환되었고, TCM 인코더의 심볼 폭과 맞춰지도록 크기조절(resizing)되었던 심볼들의 블록이다. 변환(1106)의 결과에 따라, 단계(1104)로부터의 심볼 세트가 LSB 에러들의 더 높은 상대적인 확률 뿐만 아니라, (디코더에서의 TCM 디코딩 에러들에 기인하는) LSB들에서의 에러들과의 비-LSB들(즉, LSB보다 더 큰 중요도의 비트들)에서의 에러들의 상관에 따라서 TCM 입력 심볼들에 전용된 RS(또는 BCH) 인터리브들을 갖는 TCM 심볼들로 할당된다. 그러므로, RS(또는 BCH) 및 TCM의 구성들에 대한 단계(1106)에서의 특정 흐름 정의는 인코딩되지 않은 TCM 심볼들을 예를 들어, 상술되고 도 12 및 13에 의해 도시된 포맷에 따르는 데이터 구조로서 정의할 수 있다. 이 기준에 의하여, 결과는 가장 높은 수정 능력을 가장 높은 에러 확률을 가지는 LSB에 적용하는 것이다.
TCM 인코딩 단계(1108)는 단계(1106)로부터의 심볼들을 사용한다. 이 프로세스는 당업계에서 양호하게 이해되며, 기술 문헌에서 많은 예들이 존재한다. 특정 인코딩 프로세스는 제어기에 의해 액세스되는 메모리 매체에 동조될 수 있어서, 상이한 제어기 실시예들이 적절한 구성 파라미터들과 맞춰질 수 있다. 이 의미에서, TCM 구성은 수반된 리드-솔로몬(또는 BCH) 실현들의 구성 뿐만 아니라, 인코딩 프로세스 단계에 대한 디터미넌트일 수 있다.
TCM 인코딩(1108)의 결과는 인코딩된 TCM 심볼들의 블록이다. 이러한 블록들은 비휘발성 매체에 적절한 형태(전하량, 저항, 등)로 저장될 정확한 다중-레벨 메모리 셀 저장 목표들을 나타낸다는 의미에서 "퓨어(pure)"이다. 이 포인트에서, 인코딩 프로세스는 RS(또는 BCH) 패리티 및 TCM 오버헤드의 형태로 코딩 오버헤드를 추가하였다. 이것은 명시적으로 단계(1102)에서 수행될 수 있는 랜덤화 및 컨볼루션 인코더의 동작에 둘 모두에 의해 랜덤화된 데이터이다. 따라서, 흐름의 이 포인트에서 이용 가능한 심볼들은 더 이상 사용자 데이터로서 인식 가능하지 않다. 그럼에도 불구하고, 심볼들은 기록 및 판독 프로세스 동안 유도되는 데이터 에러가 수정될 수 있는 리던던시 및 완전히 복구된 원래 (저장된) 데이터 심볼들을 포함한다.
선-보상 단계(1110)는 일부 실시예들에서 옵션(option)으로서 적용될 수 있다. 데이터 저장에 대한 다른 방법들과 같이, 공지된 왜곡들을 대항하기 위하여 데이터가 매체로 기록되기 이전에 데이터에 보상을 적용하는 것이 가능하다. 비휘발성 저장 기술들의 경우에, 일부 왜곡 메커니즘들이 양호하게-이해되며, 일부는 최근의 비휘발성 기술들과 같이, 양호하게-이해되지 않을 수 있다. 결과적으로, 선-보상은 예를 들어, NAND 플래시와 같은 메모리에서의 공지된 메커니즘들에 대한 조정들을 행하지만, 다른 유형들의 메모리에 대해 재프로그래밍되도록 유연성을 가지는 일반화된 프로세스를 적용할 수 있다.
만약 본 실시예에서 적용된다면, 선-보상의 결과는 인코딩되고 보상된 TCM 심볼들의 블록이다. 단계(1110)로서, 이러한 심볼들은 어느 비휘발성 저장 매체가 제어기에 소속되든지 간에 기록 프로세스 동안 적용될 실제 메모리 셀 목표 값들을 나타낸다.
인코딩된 심볼들의 전달은 단계(1110)로부터 단계(1112)로 정점에 달하는 결과적인 심볼들을 제공한다.
디코딩 설명
도 18을 참조하면, 참조 번호 1200에 의해 일반적으로 표시되고, 본 명세서에 따라 구성되는 제어기에 의해 사용될 수 있는 디코딩 방법의 하나의 실시예가 이제 주목된다.
인코딩된 심볼 검색 단계(1201)는 제어기가 저장 매체로부터 TCM 심볼들을 검색하는데 사용할 수 있는 일반화된 판독 방법을 나타낸다. 디코더로의 심볼들의 소스로서 NAND 플래시로부터의 다중-레벨 심볼들의 검색을 지원하는 판독 방법은 하나의 적합하지만 비-제한적인 예이다. 다른 기술들의 다중-레벨 디바이스들에 소속되는 판독 프로세스들과 같이, 또 다른 적합한 예가 상-변화 메모리(PCM) 디바이스로부터의 다중-레벨 심볼들의 검색을 지원하는 판독 방법에 있다. 유사하게, 다른 비휘발성 메모리 디바이스들로부터의 심볼들의 검색을 지원하는 판독 방법들이 추가적인 예들의 역할을 한다.
인코딩된 심볼들의 판독(1201)이 인코딩된 TCM 심볼들의 시퀀스들을 발생시킨다는 점이 인식되어야 한다. 소정의 시퀀스는 단일 데이터 블록에 대응할 수 있다. 이 포인트에서, 심볼들은 예를 들어, 메모리 매체로부터 검색되는 프로세스에서의 조정 없이 수신되었다. 그러므로, 심볼들은 메모리 매체에 저장된 바와 같고, 아직 리드-백 장치에 의해 프로세싱되지 않은 바와 같은 데이터 심볼들을 나타낸다. TCM 디코딩 방법의 특성들 및 요건들에 따르면, 이러한 심볼들은 각각의 메모리 셀에 저장되는 데이터 비트들의 수(예를 들어, 3 비트, 4 비트, 또는 그 이상)에 대응하는 데이터 부분, 및 상기 값의 데이터 부분만으로 가능한 것보다 더 큰 정확도로 다중-레벨 메모리 셀 타겟 값을 핀포인팅(pinpointing)하는 "소프트" 부분을 포함한다. 통상적으로, 각각의 샘플의 데이터 더하기 소프트 비트들은 메모리 셀의 콘텐트들을 감지한 이후에 획득되는 아날로그 대 디지털 변환(ADC)의 결과이다; 이 변환은 (1201)에서의 인코딩된 심볼 판독 프로세스의 부분이다.
선택적인 후-보상 단계가 1202에서 적용될 수 있다. 이 단계와 관련하여, 원래 목표화된 심볼 값들에 대한 왜곡들이 이러한 심볼들이 특정 메모리 셀들에 저장되고 나서, 판독/검색 방법에 의해 검색되는 것의 부산물로서 발생한다는 점이 인식되어야 한다. 이러한 왜곡들이 제어기에서의 하나 이상의 프로세스들에 의해 이해되고 재생 가능하다는 점에서, 후-보상이 적용될 수 있다.
만약 적용된다면, 후-보상(1202)은 여전히 TCM-인코딩된 형태인 보상된 TCM 심볼들의 시퀀스들을 발생시킨다. 인코딩된 심볼 판독 단계(1201)로부터 리턴된 심볼들로부터 예측 가능한 왜곡들을 제거함으로써, 검색된 심볼들에 존재하는 잡음의 일부가 제거되어, 에러 수정 오버헤드가 후-보상 없이 있었던 것에 비해 남아있는 디코딩 단계들의 필요한 에러 수정 오버헤드를 감소시킨다. 그러므로, 후-보상은 잡음을 감소시키는데 도움이 될 수 있다. 실제로, 디코딩 프로세스의 이 포인트에서의 심볼들은 잡음이 적다는 것을 제외하고는, 단계(1201)로부터 직접적으로 획득된 것과 동일한 심볼들이다. 후-보상을 사용하지 않는 실시예에서, 단계(1204)는 인코딩된 심볼 판독 프로세스(1201)에 의해 검색된 심볼들에 대해 직접적으로 동작할 수 있다.
TCM 디코드 단계(1204)는 인코더로 원래 입력된 심볼들과 동일하거나(거의 동일한) 심볼들을 생성함으로써 예를 들어, 단계(1202)로부터 획득된 TCM 심볼들을 디코딩한다. 결과 심볼들 중 일부가 인코더로 입력된 원래 심볼들과 상이할 때, 편차는 일반적으로 인코딩된 입력 심볼들의 오해(misinterpretation)에 기인한 TCM 디코딩 에러(들)의 결과이다. 통상적으로, 인코딩된 심볼의 인코더 전달 단계(1112)(도 17 참조)의 인코딩된 심볼의 디코더 검색 단계(1201)와의 병치(juxtaposition)를 통하여 도입되는 왜곡들은 결과적인 에러들을 제거하는 TCM 디코더의 능력을 초과하는 잡음을 발생시켰다. 이것은 또한 어떠한 선-보상 및 후-보상 단계들이 인코딩된 심볼들의 인코더 전달 단계 및 인코딩된 심볼의 디코더 검색 단계와 나란히 실행될 수 있는지의 관점에서이다. TCM 디코딩은 제어기 및 데이터 통신 기술의 당업자에 의해 양호하게 이해되지만, 본원의 내용들의 관점에서 구현될 때 지금까지 보이지 않은 장점들을 제공하는 것으로 간주된다. 이와 같이, 당업자가 이 전체 명세서로 본원에 설명된 TCM 프로세스들을 실행하는 것이 가능하다고 간주된다.
TCM 인코딩(도 17 참조)에 따르는 하나의 결과가 심볼 세트의 확장에 있고, 상기 확장은 도 18의 디코딩 프로세스에 의해 반대로 된다는 점이 인식되어야 한다.
TCM-디코딩된 TCM 심볼들은 TCM 디코드 단계(1204)의 결과이다. 이러한 심볼들은 도 17의 단계(1106)의 비트스트림 인코딩과 함께 리드-솔로몬 대 TCM 변환에 의해 시행되는 비트스트림 프로그래밍 구조를 포함한다. 이와 같이, (이와 같은 오해들이 발생할 수 있다는 점에서) TCM 디코드 단계에 의한 시퀀스 오해에 의해 도입되는 에러 구성들은 이러한 심볼들 내에 예측 가능한 방식으로 분포된다. 이 예측 가능한 분포는 발생하는 에러들이 최대로 반대로 될 수 있는 방식으로 후속 디코딩 단계들과 수반될 수 있다.
단계(1206)에서, 디코딩된 TCM 심볼들의 리드-솔로몬 심볼들로의 변환은 TCM 심볼들의 시퀀스를 재포맷하여, 이들이 리드-솔로몬 심볼들의 대응하는 시퀀스가 되도록 한 결과이다. 다른 ECC 방법들이 본 명세서의 내용들의 경계들 내에서 여전히 유지되면서, 사용될 수 있어서, 이 단계에서의 변환이 동등한 유효성으로 (예를 들어,) 좁은-의미의 BCH 코드로부터 심볼들로의 변환일 수 있다. 단계(1206)는 TCM 심볼들의 리드-솔로몬 심볼들로의 재-패킹이며, 상기 변환이 완료된 이후에, 인코딩 프로세스(도 17) 동안 추가된 비트스트림 인코딩이 여전히 존재한다는 점을 주의하는 것이 중요하다.
단계(1206)에 의해 생성된 심볼들은 TCM 심볼 대 예시적인 리드-솔로몬 심볼 변환의 결과이다. (TCM 심볼들의 부속 ECC 심볼들 - 예를 들어, 리드-솔로몬으로의 변환 이외의) 단계(1206)의 하나의 펑션은 TCM으로부터의 변환의 부분으로서의 도 12 및 13에 의해 도시된 데이터 구조들로부터의 변환일 수 있다. 이 포인트에서의 심볼은 예로서 리드-솔로몬으로서 도시된 도 18에서, ECC 코드로부터의 인코딩되지 않은 심볼들이다. 다른 ECC 방법들이 적용될 수 있고, 하나의 주목할 만한 실시예는 좁은-의미의 BCH이다. 여기서 사용된 ECC 방법과 관계없이, 인코딩 흐름 동안 도입되는 인코딩이 이러한 심볼들 내에 존재한다는 점이 주의된다. 즉, RS의 경우에, RS 패리티 심볼들이 존재한다.
RS 디코드 단계(1208)는 단계(1206)로부터 수신된 심볼들을 디코딩한다. 디코딩은 도 17의 RS 인코드 단계(1104)에 의해 원래 발생된 심볼들에 대한 디코딩 심볼들에서 존재할 수 있는 차이들을 제거한다. 제거될 수 있는 이와 같은 차이들의 범위는 구현의 펑션이다. 또한, RS 인코딩 동안 추가되는 패리티 심볼들이 제거된다. 이 단계는 리드-솔로몬 이외의 어떤 방법이 선택되는 경우에 개념적으로, 그리고 실제적으로 동일하다. 그러나, 임의의 실시예에서, 수행되는 디코딩은 인코딩 단계 동안 수행되는 것의 반대(reversal)이어서, 인코딩 및 디코딩 둘 모두가 동일한 ECC 구성에 의해 정의된다. 단계(1206)는 또한 인코드 프로세스에서 사용되었던 것의 랜덤화를 반대로 한다.
디코딩된 RS 심볼들은 저장 및 검색 프로세스로부터의 왜곡들에 기인하는 모든 데이터 에러들이 적어도 코드들의 능력 내에서 제거되었다는 의미에서 "클린(clean)"이다. 심볼들의 성공적으로 디코딩된 블록에 대하여, 이러한 심볼들은 리드-솔로몬 인코더에 원래 입력된 리드-솔로몬 메시지 심볼들과 동일하다.
단계(1210)는 실제로 이 단계의 결과가 사용자 데이터 심볼들의 원래 세트이어야 한다는 의미에서 디코딩 흐름의 최종 단계이다. 단계(1208)로부터의 예시적인 리드-솔로몬 심볼들이 사용자 데이터 심볼들로 변환된다. 여전히 효력 있는 인코딩 때문에, 상기 단계는 리드-솔로몬으로부터 사용자 데이터 심볼들로의 심볼 크기의 간단한 변화보다 더 많다: 여기서 수행된 펑션은 더 큰 중요도의 비트들을 포함하는 인터리브들과 상이한 바와 같이 더 작은 중요도의 비트들을 포함하는 ECC 인터리브들로부터 사용자 바이트들을 리어셈블링(reassembling)하는 것이다. 일부 인터리브들은 LSB들만을 포함하고, 일부 인터리브들은 더 큰 중요도의 비트들을 포함한다. 이것은 도 17의 인코딩 단계(1102)에 의해 수행되는 순방향 변환의 정반대이도록 의도된다는 점에서 또 다른 역변환이다.
사용자 데이터 심볼들은 디코딩 흐름으로부터의 출력 심볼들이다. 상기 심볼들은 인코더의 소스(100)에 의해 원래 제공되었던 심볼들과 동일하다.
단계(1212)에서, 단계(1210)로부터의 사용자 심볼들이 목적지로 송신된다. 인코더의 인코딩되지 않은 심볼 검색 단계와 같이, 이 단계가 많은 적절한 방식들이 존재하며, 이의 완전한 목록화는 본 명세서의 전체 무결성에 필요하지 않다.
인코딩 장치
도 19는 비휘발성 메모리에 대한, 점선 사각형 내에 도시된 제어기(1300)의 하나의 실시예를 도시하는 블록도이다. 소스(1301)는 제어기 실시예마다 변화할 수 있다. 통상적으로, 소스는 메모리이지만, 시스템의 희망하는 속성들을 변화시킴이 없이 제어기에서 다른 배열들이 존재할 수 있다. 전체 인코더(1300)에 대하여, 소스는 사용자 데이터 심볼들을 공급한다.
입력 심볼 대 RS 심볼 패커(packer)(즉, RS 인코더)가 참조 번호 1302에 의해 표시된다. 통상적으로 8-비트 사용자 데이터 심볼 값들의 배수로서의 입력 심볼들이 소스(1301)로부터 획득된다. 패커(1302)는 8-비트 값들의 각각의 세트를 리드-솔로몬 심볼들의 세트로 변환하고, 단계 당 하나의 입력 단위에 대해 동작할 수 있다. 입력 단위들은 임의의 크기로 이루어질 수 있지만, 통상적으로, 단위 크기는 하나의 입력 심볼 또는 몇 개의 입력 심볼들 중 하나이고, 상기 입력 심볼들은 사용자 데이터 심볼들로 구성된다. 입력 심볼들은 시퀀스로서 제공되고, 패커(1302)는 인코딩될 정확한 시퀀스 길이를 위해 구성된다. 입력 시퀀스를 포함하는 사용자 데이터 심볼들의 수가 결과로서 생기는 리드-솔로몬 심볼들의 수와 상이할 확률이 있기 때문에, 심볼들 내의 블록 길이가 패커(1302)에 대한 2개의 값들을 가질 수 있다. (심볼들 내의) 하나의 값은 사용자 데이터 심볼들 내의 블록 길이이고, 다른 값은 리드-솔로몬 심볼들 내의 블록 길이이다. 사용자 데이터 심볼들의 수가 리드-솔로몬 심볼들의 정수로 변환되지 않을 때, 패커는 리드 솔로몬 심볼들의 최종 출력 블록 내의 리드-솔로몬 심볼들의 정수배를 성취하기 위하여 최종 리드-솔로몬 출력 심볼 내로 삽입될 필요가 있는 채움 비트들의 수를 결정할 수 있다.
하나의 실시예에서, 사용자 입력 심볼들은 통상적으로 예상되는 것인 하나에 대해 8-비트이고, 리드-솔로몬 심볼들은 하나에 대해 9-비트일 수 있다. 이것은 각각의 9개의 입력 심볼들이 8개의 리드-솔로몬 심볼들로 균일하게 맵핑될 것이라는 것을 의미한다. 또 다른 실시예에서, 100 바이트(입력 심볼들)의 데이터 블록이 89개의 9-비트 리드-솔로몬 심볼들 상으로 맵핑될 것이며, 상기 시퀀스의 최종 리드-솔로몬 심볼은 자신의 9 비트 중 8 비트만이 사용된다. 이 경우에, RS 패커는 발생될 최종 리드-솔로몬 심볼 내로 채움 비트를 삽입함으로써 상기 시퀀스를 끝낼 수 있다. 많은 실시예들이 가능하지만, RS 패커를 구성하는 것에 관하여 유연한 방법이 사용될 수 있다는 점이 명백하다.
리드-솔로몬 코드의 사용이 예시적인 경우이고, 이와 같이, 실시예들의 하나의 클래스만을 나타낸다는 점이 주의되어야 한다. 리드-솔로몬 구성들이 인코딩의 상황에서 최적인 것이 발견되었지만, 제한 없이 리드-솔로몬 대신 다른 방법들이 사용될 수 있고, 가장 두드러진 것이 아마도 좁은-의미의 BCH 코드이다. 물론, 이 전체 명세서의 범위 내에서 여전히 유지되면서, 아직 개발되지 않은 다른 적절한 방법들이 적용될 수 있다.
리드-솔로몬 검사바이트 계산기(1303)는 자신이 종래 기술의 메모리 제어기들에 적용되는 바와 같이 양호하게 이해된다는 점에서 통상적이다. 검사바이트 계산기(1303)는 추가적인 리드-솔로몬 심볼들의 세트를 결정하고, 입력 심볼들의 세트에 추가적인 심볼들을 부가한다. 부가된 심볼들은 패리티 심볼들이라고 칭해질 수 있고, 결합된 입력 심볼들 더하기 부가된 패리티는 리드-솔로몬 코드워드를 포함한다. 유연성을 위하여, 리드-솔로몬 인코드/디코드 또는 다른 적절한 구성들이 프로그래머빌리티(programmability)에 의하여 적응 가능할 수 있어서, 하나의 실시예에서의 검사바이트 계산기가 가변 수정 능력(T), 및/또는 가변 수의 인터리브들을 수용할 수 있다. 일부 실시예들에서, 프로그래밍 가능한 심볼 폭이 마찬가지로 프로그래밍 가능한 파라미터일 수 있다. 프로그래밍 가능한 파라미터들의 범위는 특정 제어기 아키텍처 및 선택된 메모리 매체 기술에 따를 수 있다.
리드-솔로몬 검사바이트 계산기(1303)는 인코드 및 디코드 펑션들에서 존재할 수 있는 패턴-민감도들을 최소화하기 위하여 인코딩된 리드-솔로몬 코드워드들에 적용되는 랜덤화 펑션을 포함할 수 있다. 선택된 랜덤화 펑션은 임의의 소정 실시예에 대하여, 자신이 랜덤화하는 데이터 값들과 관계없이 동작할 수 있어서, 기록된 데이터가 메모리로부터 검색된 이후에 리턴되는 데이터 에러들에 의해 영향을 받지 않는다.
리드-솔로몬 대 TCM 심볼 변환기(1304)는 모자이크 타일 패턴을 구현하고 RS 대 TCM 심볼 변환을 수행하기 위하여 예를 들어, 도 12 및 13과 관련하여 상술된 특징들 중 하나를 성취한다. 상기 변환기는 TCM이 자신에 제공된 각각의 심볼의 최하위 부분을 컨볼루션으로 인코딩할 수 있고, TCM 컨스텔레이션 맵핑 변환에 의해 나머지 최상위 부분을 인코딩할 수 있는 방식을 인식하는 리드-솔로몬 심볼로부터의 비트들을 TCM 심볼들로 할당하는 인코딩 펑션이다. 하나의 실시예에서, 인코더의 컨볼루션 부분에 할당된 각각의 TCM 심볼의 최하위 부분은 이것이 또한 중요도의 순서를 증가시킴으로써 일반적으로 LSB보다 더 많을 수 있을지라도, 단일 비트(즉, LSB)이다. 그 후, 각각의 심볼의 남아 있는 비트들은 컨스텔레이션 맵핑 펑션에 의해서만 변환되는 최상위 부분이다. 리드-솔로몬 대 TCM 변환은 상기 방법이 동작하기 위해 적정하게 실행되어야 하는 두 가지 것들을 행한다: 첫째, 상기 변환은 하나의 리드-솔로몬 심볼의 비트들을 하나 이상의 TCM 심볼들로 할당한다. 하나의 실시예에서, TCM 심볼의 폭은 통상적으로 리드-솔로몬 심볼의 폭보다 더 작고, 할당은 그 후에 각각의 리드-솔로몬 심볼을 하나 이상의 TCM 심볼로 맵핑하도록 한다. 다중-레벨 심볼들(3 비트 뜨는 그 이상)의 TCM 인코딩과 함께 동작하는 리드-솔로몬(또는 BCH) 구성들은 일반적으로 다수의 인터리브들이 에러 수정 성능 면에서 최적인 것을 필요로 한다. 그러므로, 패커(1304)의 하나의 특징에서, 리드-솔로몬 심볼들은 인터리브들에 따라 TCM 심볼들로 패킹될 수 있다. 이것은 상술된 모자이크 데이터 구조(도 12 및 13 참조)의 실행 길이 특성에 대하여, 결과적인 TCM 심볼들을 구성하는 비트들이 결정론적 방식으로 리드-솔로몬으로부터 취해진다는 것을 의미한다. 최소한, 각각의 결과적인 TCM 심볼 내의 각각의 LSB가 TCM LSB들에 대해 지정된 인터리브로부터의 리드-솔로몬 심볼로부터 취해진다. 인터리브에 의한 LSB들 및 MSB들의 할당은 회전을 나타내어, 1304의 변환의 하나의 단계에서, LSB들의 세트가 인터리브 0의 리드-솔로몬 심볼로부터 취해질 수 있고, 변환의 또 다른 단계에서, LSB들의 세트가 인터리브 1의 리드-솔로몬 심볼로부터 취해지도록 한다.회전은 블록들이 변환될 때 반복되어, 블록의 과정에 걸쳐, 각각의 리드-솔로몬 인터리브가 LSB들의 거의 동일한 수를 할당받는다. 동일한 종류의 회전이 LSB보다 더 큰 중요도의 TCM 비트들에 적용되어, 블록의 과정에 걸쳐, 각각의 리드-솔로몬 인터리브가 차례로, 동일한 수의 LSB들 및 MSB들을 각각 가지게 된다. 리드-솔로몬 인터리브들의 총수는 변화할 수 있다(도 12 및 13은 하나의 예시적인 경우를 나타낸다).
TCM 인코딩 방법이 컨볼루션 인코딩이 원 데이터 스트림의 LSB들에 대해서만 수행되는 것이라는 점이 상기에서 가정된다. 충분히 큰 수의 레벨들이 메모리 디바이스들로 목표화되는 시나리오에서, 이 방법은 각각의 심볼로부터의 더 작은 중요도의 비트들이 컨볼루션으로 인코딩되는 것이 될 수 있다. 예를 들어, 가설 다중-레벨 시스템은 더 작은 중요도의 2 비트가 컨볼루션으로 인코딩되는 반면, 더 큰 중요도의 4 비트가 컨볼루션으로 인코딩되지 않는 6-비트 TCM 심볼들을 목표로 할 수 있다. 더욱이, 이러한 더 작은 중요도 비트들 각각의 컨볼루션 인코딩은 서로 상이할 수 있다. 최하위 비트가 가장 높은 에러 확률을 가지므로, 상기 방법은 최하위 비트보다 더 낮은 에러 확률을 갖는 다음의 최하위 비트보다 더 높은 에러 수정 능력들의 컨볼루션 코드를 적용할 수 있다. 다음의 최하위 비트는 이 비트 위치의 에러 확률에 따른 에러 수정 능력들을 갖는 컨볼루션 코드를 사용할 수 있다. 이 경우에, 인코딩 구성은 리드-솔로몬(또는 다른) 코드의 심볼들이 이 구성 사실과 통합되는 프로세스에 의해 TCM 심볼들 내로 분포될 필요가 있기 때문에, 더 복잡할 것이다. 출원인들은 본원에 설명된 바와 같은 비트 당 컨볼루션 코드들의 종래 기술에서의 임의의 사용을 알지 못한다.
리드-솔로몬 심볼들로부터 TCM 심볼들로의 변환기(1304)에 의해(그리고, 역변환을 수행하는 아직 개발되지 않은 디코더에 의해 반대로) 수행되는 변환에 대한 하나의 고려사항은 컨볼루션으로 인코딩된 결과에서의 입력 심볼들의 수를 확장시키는 TCM의 컨볼루션 인코딩과 관련된다. 더욱이, 대부분의 제어기 구성들에서, 이 확장은 또한 인코딩 프로세스에 의해 부과되는 총 TCM 오버헤드를 억제함으로써 추가된 리던던시의 범위를 변경하는(상기 범위를 최소화하는) 펑쳐 파라미터의 결과이다. 따라서, 리드-솔로몬 대 TCM 심볼 변환은 확장의 형태를 정확히 이해해야 하며, 심볼들이 인코딩될 때 발생할 확장을 위해 결과적인 TCM 심볼들 내로 플레이스홀더(placeholder)들(점유되지 않은 비트 값들)을 삽입해야 한다. 종래 기술의 TCM 구현들의 경우에, 이 효과(및 관련된 요건)가 당업자들에 의해 양호하게 이해된다.
다중-레벨 저장 및 검식 시스템이 일반화된 방식으로 비휘발성 메모리를 목표로 할 수 있기 때문에, 다중-레벨 저장 시스템을 구현하는 제어기는 유연할 수 있으므로, 메모리 셀 타겟 값 당 비트들의 수의 변화를 포함하는 메모리 구성들의 범위를 프로그램적으로 목표로 할 수 있다. 따라서, 인코더(및 디코더)는 인코딩(및 디코딩) 구성들의 범위에 걸쳐 프로그래밍 가능할 수 있다. 리드-솔로몬 대 TCM 심볼 변환의 경우에, 이와 같은 파라미터들은 리드-솔로몬 인터리브들의 수, TCM 컨볼루션 펑션, 컨볼루션으로 인코딩되는 더 작은 중요도의 TCM 비트들의 수, TCM 심볼들의 폭ㅍ, 및 TCM 펑쳐 구성을 포함한다.
TCM 인코더(1305)는 RS 심볼 변환기(1304)에 의해 생성되는 코딩되지 않은 TCM 심볼들에 대해 TCM 인코딩 동작을 수행한다. TCM 인코딩의 방법들 및 구현들은 예를 들어, 명칭이 "Channel coding with Multilevel/Phase Signals" - IEEE Trans. Info. Theory vol. IT 28, No.1, Jan 1982, pp 55-67인 Ungerboeck의 오래전 논문에 의해 설명된 바와 같이 양호하게 이해되지만, 이 전체 명세서의 관점에서 구현될 때 지금까지 보이지 않았던 장점들을 제공한다고 간주된다. 더욱이, 어떤 정도의 프로그래머빌리티가 TCM의 종래 기술의 경우에서 항상 인식되지는 않을지라도, 종래 기술과 더 구별될 것이라고 여겨진다.
TCM 인코더(1305)로부터의 출력은 인코딩된 TCM 심볼들의 세트이다. 이 형태에서, 각각의 심볼은 데이터 비트들를 포함하는 메모리 셀 목표 값을 디지털 형태로 나타낸다(예를 들어, 4-비트 TCM 심볼은 4-비트 메모리 셀 목표 값을 나타낸다).
선-보상 수정기(1306) 및 선-보상 오프셋 계산기(1307)는 제어기에서 선-보상을 구현할 수 있지만, 보상이 선택적이며 필요조건이 아니라는 점이 다시 주의된다. 구성요소(1306)가 일반적으로 수정 적용 펑션, 통상적으로 가산기를 구현하고, 아이템(1307)이 일반적으로 계산 펑션을 구현한다는 점이 주의된다. 1307에서, 계산 펑션은 현재 블록보다 정보의 하나 이상의 다른 블록들의 판독을 포함할 수 있다(블록은 도면에서 설명되는 흐름에 의해 프로세싱된다). 그러므로, 선-보상은 현재 블록에 적용될 때, 현재 블록 이외에 하나 이상의 이전 블록들의 판독의 정점일 수 있고, 1307에 의해 제공된 계산 단계는 단계(1306)를 통하여 현재 블록에 적용되는 보상 오프셋들을 계산하는데 사용될 수 있는 그러한 이전 블록들로부터의 통계치들을 축적함으로써 성취될 수 있다.
선-보상 수정기(1306) 및 선-보상 오프셋 가산기(1307)의 동작으로부터의 결과적인 심볼들은 이 포인트에서 메모리 내로 기록될 준비가 된 메모리 셀 저장 목표 값들이다. 각각의 메모리 셀 저장 목표 값이 메모리 매체 내의 특정 셀을 위해 의도되기 때문에, 선-보상 및 기록 방법들은 기록 심볼들이 자신들의 의도된 셀들로 향하도록 하는 것에 관하여 조정될 수 있다. 선-보상은 이러한 블록들로 입력되었던 보상되지 않은 TCM 심볼들에 대한 상당한 변화들을 포함할 수 있다. 첫째로, 입력 심볼들이 TCM 심볼의 폭(메모리 심볼 폭)만큼만의 심볼 당 비트들을 가지는 반면, 선-보상된 심볼은 서브-메모리-비트 정확도로 메모리 셀 저장 목표 값을 핀포인팅하는 소프트 비트들만큼 증가될 수 있다. 둘째로, 보상 오프셋이 소프트 비트들(그리고, 일부 경우들에서, 적용된 보상 오프셋의 범위에 따라, 또한 메모리 비트들)을 사용할 수 있다.
목적지(1308)는 보상 심볼들이 향하게 되는 일반화된 위치이다. 특정 실시예들은 이 전체 명세서의 범위 내에 유지되면서, 제어기마다 변화할 수 있다. 인코딩 방식에서, 인코딩되고 선-보상된 심볼들이 메모리 자체 내로 기록될 준비가 되지만, 제어기 아키텍처에 따라, 이 포인트로부터 메모리로의 경로가 다소 직접적일 수 있다. 궁극적으로, 목적지의 특성은 제어기의 아키텍처의 펑션이고, 본원의 내용들이 적용되고 있는 한, 유연하게 해석되어야 한다.
디코딩 장치
점선 사각형 내에 도시된 다중-레벨 비휘발성 메모리 제어기(1400)의 하나의 실시예를 도시한 블록도인 도 2가 이제 주목된다.
최초에, 코딩되지 않은 TCM 심볼들이 이 블록도에서 디코딩을 위한 심볼들의 임의의 적절한 발생기(originator)의 일반화된 표현인 소스(1401)로부터 제어기(1400)로 발행된다. 소스로부터 나오는 심볼들은 궁극적으로 메모리 매체로부터 상기 심볼들을 검색하는 판독 프로세스에 의해 획득되는 메모리 심볼들이다. 이들이 메모리로부터 디코더 내로 따르는 경로는 제어기의 실시예들에 따라 변화할 수 있다.
보상 자체가 선택적이지만, 이 실시예에서, 후-보상 오프셋 가산기(1402) 및 후-보상 오프셋 계산기(1403)가 사용될 수 있다. 하나의 실시예에서, 후보상 오프셋 가산기(1402)는 디코더의 데이터 경로 내에 위치될 수 있고, 후보상 오프셋 계산기(1403)는 디코더의 후-보상 펑션 및 인코더의 선-보상 펑션 사이에서 공유되는 또 다른 제어기 구성요소일 수 있다(보상에 대한 SGxx).
소스(1401)는 TCM 심볼(메모리 심볼)의 중요한 (데이터) 비트 및 소프트 비트들을 포함하는 코딩되지 않은 TCM 심볼들을 가산기(1402)에 제공한다. 소프트 비트들의 수는 제어기 및 메모리 디바이스의 유형에 따를 수 있고; 일반적으로 TCM 비트들 자체들 이외에 3 또는 4 비트일 수 있다. 가산기(1402)의 동작은 일반적으로 현재의 TCM 심볼에 (통상적으로 수정을 가산함으로써) 수정을 적용하는 것이다. 따라서, 가산기(1402)의 출력은 대응하는 코딩되지 않은 TCM 심볼(TCM 비트 더하기 소프트 비트)이고, 이 결과는 후-보상 방법에 의해, 심볼 기반으로 하는 보상되지 않은 입력의 잡음이 더 작은 버전이어야 한다. 보상된 출력은 아직 설명되지 않은 TCM 디코더로의 입력의 역할을 한다. 그렇지 않은 경우에, 소스(1401)는 후보상이 사용되지 않는 실시예에서 TCM 인코더에 직접적으로 심볼들을 공급할 수 있다.
당업자가 이 전체 명세서로 적절한 TCM 디코더(1404)를 용이하게 구현할 수 있다고 간주된다. 이 점에서, 일반화된 TCM 디코더는 통신 공학 기술들에서 양호하게 이해된다. 이의 주 구조들은 TCM 컨스텔레이션 맵핑 펑션 및 역추적 메모리를 갖는 소프트 비터비 디코더를 포함한다. TCM 디코더는 판독 프로세스에 의해 공급되는 프로세싱되지 않은 TCM 심볼들을 수신하며, 상기 심볼들 각각은 소프트 비트를 포함할 수 있고, 인코딩되지 않은 TCM 심볼들의 형태를 가지는 심볼들의 디코딩된 세트(즉, 펑쳐된 컨벌루션 확장에 대한 플레이스홀더들을 포함하는 소프트 비트를 갖지 않는 TCM 심볼들)를 리턴시킨다.
RS 심볼 언패커(RS symbol unpacker)(1405)에 대한 TCM 심볼은 인코더(도 19)에서 심볼 패커(1304)의 패킹 프로세스를 반대로 하도록 구성된다. 이와 같이, 상기 언패커는 패커(1304)에서의 순방향 변환과 동일한 세트의 특징들 및 제약들, 뿐만 아니라, 인코딩의 반대 구현을 갖는다.
일반적으로, 언패커(1405)는 TCM 디코더로부터 후-보상되고 디코딩된 TCM 심볼들을 수신하고, 자신의 출력에서 리드-솔로몬 심볼들을 발생시킨다. 이 블록에 의해 구현되는 변환 프로세스는 인코딩 프로세스의 변환 프로세스의 정반대이다. 구성들이 TCM 파라미터들(컨볼루션, 펑쳐, 컨볼루션에서의 LSB들의 수)에 대해 변화할 수 있기 때문에, 이 기능적 블록의 구성은 자신이 디코딩하는 모든 데이터 블록의 인코딩된 구성을 엄밀하게 반대로 해야 한다.
언패커(1405)로부터의 결과적인 리드-솔로몬 심볼들은 인코더의 리드-솔로몬 대 TCM 변환으로 입력되는 각각의 리드-솔로몬 심볼에 대응한다.
리드-솔로몬 디코더(1406)는 제어기에서 실행되는 최종 에러 수정 단계를 수행한다. 디코더(1406)는 데이터를 기록하기 이전에 리드-솔로몬 인코더에 의해 발생되는 패리티 심볼들 더하기 리드-솔로몬 메시지 심볼들의 정확한 수를 TCM 심볼 대 리드-솔로몬 심볼 변환기로부터 수신해야 한다. 전체적으로, 이러한 심볼들은 TCM 디코더에 의해 전가된 디코딩 에러들을 포함할 수 있는 리턴된 메시지를 포함한다. 리드-솔로몬 디코더(1406)의 동작은 임의의 에러들이 입력 심볼들 내에 실제로 존재하는지를 결정하고, 존재한다면 에러들을 수정하고, 디코딩된 결과를 사용자 데이터 심볼들로서 출력하는 것이다.
에러 수정 코드로서 리드-솔로몬을 갖는 제어기의 구현이 예시적이다는 점이 상술되었다. 본 명세서의 상황에서, 예를 들어, 좁은-의미의 BCH가 동등한 유효성으로 제어기에서 사용될 수 있다.
에러 수정 코드에서의 인터리빙의 역할은 상기 명세서의 관점에서 이점들을 제공할 수 있다. 이 점에서, 리드-솔로몬 디코더는 특정 다중-레벨메모리 셀 저장 목표 값들 및 특정 메모리 디바이스 기술들을 수반하는 임의의 적용된 인코딩 및 TCM 구성들과 일치하는 인터리빙 구성들이 가능할 수 있다. 이 의미에서, 리드-솔로몬 디코더(및 인코더)는 필요한 시스템 유연성을 지원하는데 충분한 프로그래머빌리티가 가능할 수 있고, 이를 위해, 디코더는 에러 수정 능력(T), 및 인터리브들의 수에 대해 반드시 재구성 가능할 수 있다.
인코더(도 19)에서 실행되는 랜덤화 펑션의 역을 구현하는 랜덤화해제 유닛(de-randomization unit)은 리드-솔로몬 디코더의 부분일 수 있다.
리드-솔로몬 디코딩은 패리티 심볼들을 제거하도록 하여, 메시지의 원래 데이터 부분만이 출력으로 제공된다. 디코더의 출력에서의 메시지 심볼들은 원래 데이터를 나타내지만, 상기 데이터는 여전히 리드-솔로몬 심볼들로서 구성된다.
변환기(1407)는 리드-솔로몬 심볼들을 수신하고, 이들을 사용자 데이터 심볼들로 재패킹한다. 심볼 변환기(1407)로부터의 출력은 1 바이트 폭일 수 있고, 이 경우에, 변환된 출력이 단계 당 1 바이트씩 송신되거나, 또는 상기 출력이 바이트보다 더 크거나 바이트의 일부일 수 있다. 출력이 최적으로 더 넓은 메모리의 폭(예를 들어, 32-비트)일 수 있는 실시예들에서, 변환기(1407)는 폭 확장을 수행할 수 있고, 전체 워드가 이용 가능해질 때마다 전체 워드를 출력할 수 있다.
목적지(1408)는 디코더 다음에 올 수 있는 다양한 제어기 구성요소들의 일반화된 표현이다. 본 명세서의 다른 도면들에 도시된 다른 소스 및 목적지들과 같이, 이 목적지는 본원의 내용들이 실제로 유지되면서, 다양한 유연한 방식들로 구현될 수 있다.
상기의 설명은 단지 설명을 위해 제공되었다. 상기의 설명은 모든 것을 규명하거나 본 발명을 개시된 정확한 형태 또는 형태들로 제한하고자 하는 것이 아니며, 상기의 내용들에 비추어서 다른 변경들 및 변화들이 가능할 수 있고, 당업자들은 어떤 변경들, 교환들, 추가들 및 이의 서브-조합들을 인식할 것이다.
대체적인 요약에서, 상기의 것은 적어도 다음을 개시한다. 시스템은 복수의 심볼들의 각각의 심볼이 다중레벨 송신 채널을 사용한 전달을 위한 사용자 데이터 심볼 스트림에서 1 비트 이상의 정보를 표현하는 다중-레벨 데이터 인코딩을 사용한다. 사용자 데이터 심볼들은 디지털 비트와이즈 형태로 표현되어, 각각의 심볼이 복수의 비트들로서 표시되고, 각각의 비트가 상이한 에러 확률을 겪는다. 에러 수정 절차가 복수의 비트들의 각각의 비트와 관련되는 상이한 에러 확률을 기반으로 하여 적용된다. 상기 채널은 모자이크 타일 구조를 지원하도록 구성될 수 있고, 각각의 타일은 채널 심볼을 포함하여, 선택된 타일이 다른 타일들과 상이한 집합적인 에러 확률을 갖는다. 전체 이용 가능한 수정 능력을 기반으로 하여 선택된 타일에 선택된 양의 에러 수정 능력을 할당하기 위하여 커스터마이징된 코딩이 타일 구조에 적용될 수 있다.

Claims (14)

  1. 복수의 사용자 데이터 심볼들의 각각의 심볼이 다중레벨 송신 채널을 사용한 전달을 위한 사용자 데이터 심볼 스트림에서 1 비트 이상의 정보를 표현하는 다중-레벨 데이터 인코딩을 사용하는 시스템에서의 비트와이즈 동작들을 수행하는 방법에 있어서,
    상기 전달과 관련하여, 상기 사용자 데이터 심볼들을 디지털 비트와이즈 형태로 표현하여, 각각의 심볼이 복수의 비트들로서 표시되고 상기 복수의 비트들의 각각의 비트가 상기 데이터 심볼들 중 하나의 일부를 형성하고 각각의 데이터 심볼의 각각의 비트가 상이한 비트 위치를 포함하도록 하는 단계; 및
    선택된 암호화/해독 절차를 겪는 비트스트림에서 각각의 데이터 심볼의 선택된 비트 위치로부터 적어도 하나의 선택된 비트를 전달하여, 상기 비트스트림의 선택된 암호화 양이 상기 전달 동안 상이한 비트 위치에서의 적어도 하나의 다른 비트에 적용되는 또 다른 암호화/해독과 상이하도록 하는 단계를 포함하는, 비트와이즈 동작들을 수행하는 방법.
  2. 청구항 1에 있어서,
    상기 선택된 비트는 LSB이고, 상기 선택된 암호화/해독 절차는 상기 복수의 비트들 중 적어도 하나의 다른 비트에 적용되는 또 다른 암호화/해독 절차보다 더 큰 레벨의 암호화 능력을 제공하는, 비트와이즈 동작들을 수행하는 방법.
  3. 청구항 1에 있어서,
    각각의 비트 위치의 비트들은 상이한 비트스트림들을 사용하여 전달되고, 각각의 비트스트림을 상이한 암호화/해독 절차를 겪게 하는, 비트와이즈 동작들을 수행하는 방법.
  4. 복수의 사용자 데이터 심볼들의 각각의 심볼이 다중레벨 송신 채널을 사용한 전달을 위한 사용자 데이터 심볼 스트림에서 1 비트 이상의 정보를 표현하는 다중-레벨 데이터 인코딩을 사용하는 시스템에서의 비트와이즈 동작들을 수행하는 방법에 있어서,
    상기 전달과 관련하여, 상기 사용자 데이터 심볼들을 디지털 비트와이즈 형태로 표현하여, 각각의 심볼이 복수의 비트들로서 표시되고 상기 복수의 비트들의 각각의 비트가 상기 데이터 심볼들 중 하나의 일부를 형성하고 각각의 데이터 심볼의 각각의 비트가 상이한 비트 위치를 포함하도록 하는 단계; 및
    선택된 압축/압축해제 절차를 겪는 비트스트림에서 각각의 데이터 심볼의 선택된 비트 위치로부터 적어도 하나의 선택된 비트를 전달하여, 상기 비트스트림의 선택된 압축 양이 상기 전달 동안 상이한 비트 위치에서의 적어도 하나의 다른 비트에 적용되는 또 다른 압축 양과 상이하도록 하는 단계를 포함하는, 비트와이즈 동작들을 수행하는 방법.
  5. 청구항 4에 있어서,
    각각의 비트 위치의 비트들은 상이한 비트스트림들을 사용하여 전달되고, 각각의 비트스트림을 상이한 압축/압축해제 절차를 겪게 하는, 비트와이즈 동작들을 수행하는 방법.
  6. 청구항 4에 있어서,
    상기 비트스트림을 역직렬화하여 역직렬화된 데이터를 형성하는 단계;
    상기 역직렬화된 데이터를 상기 다중레벨 송신 채널을 통해 송신하여 송신된 데이터를 형성하는 단계; 및
    상기 송신된 데이터가 수신된 데이터로서 수신될 때 그것을 직렬화하는 단계를 포함하는, 비트와이즈 동작들을 수행하는 방법.
  7. 청구항 6에 있어서,
    상기 수신된 데이터를 압축해제하는 단계를 더 포함하는, 비트와이즈 동작들을 수행하는 방법.
  8. 청구항 4에 있어서,
    비트스트림에서 각각의 데이터 심볼의 선택된 비트 위치로부터 적어도 하나의 선택된 비트를 전달하는 것은, 복수의 비트스트림들을 전달하는 것을 포함하고,
    각각의 비트스트림을 독립적으로 압축하는 단계를 더 포함하는, 비트와이즈 동작들을 수행하는 방법.
  9. 청구항 8에 있어서,
    각각의 비트스트림은 상이한 암호화 키를 사용하여 압축되는, 비트와이즈 동작들을 수행하는 방법.
  10. 청구항 1에 있어서,
    상기 비트스트림을 역직렬화하여 역직렬화된 데이터를 형성하는 단계;
    상기 역직렬화된 데이터를 상기 다중레벨 송신 채널을 통해 송신하여 송신된 데이터를 형성하는 단계; 및
    상기 송신된 데이터가 수신된 데이터로서 수신될 때 그것을 직렬화하는 단계를 포함하는, 비트와이즈 동작들을 수행하는 방법.
  11. 청구항 10에 있어서,
    상기 수신된 데이터를 압축해제하는 단계를 더 포함하는, 비트와이즈 동작들을 수행하는 방법.
  12. 청구항 1에 있어서,
    비트스트림에서 각각의 데이터 심볼의 선택된 비트 위치로부터 적어도 하나의 선택된 비트를 전달하는 것은, 복수의 비트스트림들을 전달하는 것을 포함하고,
    각각의 비트스트림을 독립적으로 암호화하는 단계를 더 포함하는, 비트와이즈 동작들을 수행하는 방법.
  13. 청구항 12에 있어서,
    각각의 비트스트림은 상이한 암호화 키를 사용하여 암호화되는, 비트와이즈 동작들을 수행하는 방법.
  14. 청구항 12에 있어서,
    각각의 비트스트림은 상이한 암호화 알고리즘을 사용하여 암호화되는, 비트와이즈 동작들을 수행하는 방법.
KR1020127013353A 2008-03-24 2009-03-19 다중-레벨 시스템에서의 비트와이즈 동작들 및 장치 KR101284471B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US3901608P 2008-03-24 2008-03-24
US61/039,016 2008-03-24
US12/403,546 US8627165B2 (en) 2008-03-24 2009-03-13 Bitwise operations and apparatus in a multi-level system
US12/403,546 2009-03-13
PCT/US2009/037646 WO2009120571A2 (en) 2008-03-24 2009-03-19 Bitwise operations and apparatus in a multi-level system

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020107023711A Division KR101272963B1 (ko) 2008-03-24 2009-03-19 다중-레벨 시스템에서의 비트와이즈 동작들 및 장치

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020127027594A Division KR101312127B1 (ko) 2008-03-24 2009-03-19 다중-레벨 시스템에서의 비트와이즈 동작들 및 장치

Publications (2)

Publication Number Publication Date
KR20120060249A KR20120060249A (ko) 2012-06-11
KR101284471B1 true KR101284471B1 (ko) 2013-07-09

Family

ID=41090072

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020127013353A KR101284471B1 (ko) 2008-03-24 2009-03-19 다중-레벨 시스템에서의 비트와이즈 동작들 및 장치
KR1020107023711A KR101272963B1 (ko) 2008-03-24 2009-03-19 다중-레벨 시스템에서의 비트와이즈 동작들 및 장치
KR1020127027594A KR101312127B1 (ko) 2008-03-24 2009-03-19 다중-레벨 시스템에서의 비트와이즈 동작들 및 장치

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020107023711A KR101272963B1 (ko) 2008-03-24 2009-03-19 다중-레벨 시스템에서의 비트와이즈 동작들 및 장치
KR1020127027594A KR101312127B1 (ko) 2008-03-24 2009-03-19 다중-레벨 시스템에서의 비트와이즈 동작들 및 장치

Country Status (5)

Country Link
US (3) US8627165B2 (ko)
EP (1) EP2255278B1 (ko)
KR (3) KR101284471B1 (ko)
CN (1) CN101978349B (ko)
WO (1) WO2009120571A2 (ko)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8316249B2 (en) * 2007-02-16 2012-11-20 Georgia Tech Research Corporation Variable scaling for computing elements
US8627165B2 (en) * 2008-03-24 2014-01-07 Micron Technology, Inc. Bitwise operations and apparatus in a multi-level system
KR20100050789A (ko) * 2008-11-06 2010-05-14 삼성전자주식회사 메모리 장치 및 그것을 포함하는 메모리 시스템
TWI426384B (zh) * 2009-09-10 2014-02-11 Robustflash Technologies Ltd 資料寫入方法與系統
US8495476B2 (en) * 2009-12-17 2013-07-23 Samsung Electronics Co., Ltd System and method for coding and interleaving for short frame support in visible light communication
EP2559036A1 (en) * 2010-04-15 2013-02-20 Ramot at Tel-Aviv University Ltd. Multiple programming of flash memory without erase
US8254167B2 (en) * 2010-05-17 2012-08-28 Seagate Technologies Llc Joint encoding of logical pages in multi-page memory architecture
US20110286271A1 (en) * 2010-05-21 2011-11-24 Mediatek Inc. Memory systems and methods for reading data stored in a memory cell of a memory device
US8615703B2 (en) 2010-06-04 2013-12-24 Micron Technology, Inc. Advanced bitwise operations and apparatus in a multi-level system with nonvolatile memory
US11336303B2 (en) 2010-06-04 2022-05-17 Micron Technology, Inc. Advanced bitwise operations and apparatus in a multi-level system with nonvolatile memory
US8750062B2 (en) 2010-07-30 2014-06-10 Hewlett-Packard Development Company, L.P. Memory element and method for determining the data state of a memory element
US8499227B2 (en) 2010-09-23 2013-07-30 Micron Technology, Inc. Memory quality monitor based compensation method and apparatus
US9125087B2 (en) * 2011-10-22 2015-09-01 Qualcomm Incorporated Systems and methods for header compression
CN104025594A (zh) * 2011-11-08 2014-09-03 瑞典爱立信有限公司 视频编码中的瓦片大小
US10289600B2 (en) 2013-08-08 2019-05-14 Qualcomm Incorporated Reducing transmitter encoding jitter in a C-PHY interface using multiple clock phases to launch symbols
US9276731B2 (en) * 2013-08-08 2016-03-01 Qualcomm Incorporated N-phase signal transition alignment
US10353775B1 (en) * 2014-08-06 2019-07-16 SK Hynix Inc. Accelerated data copyback
US9690656B2 (en) 2015-02-27 2017-06-27 Microsoft Technology Licensing, Llc Data encoding on single-level and variable multi-level cell storage
US9786386B2 (en) 2015-02-27 2017-10-10 Microsoft Technology Licensing, Llc Dynamic approximate storage for custom applications
US9577854B1 (en) 2015-08-20 2017-02-21 Micron Technology, Inc. Apparatuses and methods for asymmetric bi-directional signaling incorporating multi-level encoding
US10367530B2 (en) 2016-01-14 2019-07-30 Qualcomm Incorporated Unified code block segmentation providing a cyclic redundancy check for low density parity check code codewords
US10365833B2 (en) 2016-01-22 2019-07-30 Micron Technology, Inc. Apparatuses and methods for encoding and decoding of signal lines for multi-level communication architectures
US9768913B1 (en) * 2016-03-09 2017-09-19 Samsung Electronics Co., Ltd System and method for multiple input multiple output (MIMO) detection with soft slicer
CN105978976A (zh) * 2016-05-13 2016-09-28 中国建设银行股份有限公司 信息处理系统及方法
US10742390B2 (en) * 2016-07-13 2020-08-11 Novatek Microelectronics Corp. Method of improving clock recovery and related device
CN106254327A (zh) * 2016-07-28 2016-12-21 努比亚技术有限公司 信息处理装置及方法
US10164817B2 (en) * 2017-03-21 2018-12-25 Micron Technology, Inc. Methods and apparatuses for signal translation in a buffered memory
US10354723B2 (en) * 2017-06-29 2019-07-16 SK Hynix Inc. Memory device and method for programming the same
US10283187B2 (en) * 2017-07-19 2019-05-07 Micron Technology, Inc. Apparatuses and methods for providing additional drive to multilevel signals representing data
US10043557B1 (en) 2017-10-10 2018-08-07 Micron Technology, Inc. Apparatuses and methods for parallel I/O operations in a memory
US11436537B2 (en) 2018-03-09 2022-09-06 Raytheon Company Machine learning technique selection and improvement
US11340603B2 (en) 2019-04-11 2022-05-24 Raytheon Company Behavior monitoring using convolutional data modeling
US11507847B2 (en) 2019-07-25 2022-11-22 Raytheon Company Gene expression programming
US11321462B2 (en) 2018-04-10 2022-05-03 Raytheon Company Device behavior anomaly detection
DE102019107002A1 (de) * 2018-03-29 2019-10-02 Nvidia Corporation Verringerung der kopplung und des leistungsrauschens an einer pam-4-i/o-schnittstelle
WO2019199769A1 (en) 2018-04-10 2019-10-17 Raytheon Company Cyber chaff using spatial voting
WO2019199777A1 (en) * 2018-04-10 2019-10-17 Raytheon Company Encryption using spatial voting
US10812102B2 (en) * 2018-06-29 2020-10-20 Apple Inc. Efficient data encoding
US10691537B2 (en) * 2018-10-12 2020-06-23 Western Digital Technologies, Inc. Storing deep neural network weights in non-volatile storage systems using vertical error correction codes
US10965786B2 (en) * 2018-10-31 2021-03-30 At&T Intellectual Property I, L.P. Adaptive fixed point mapping for uplink and downlink fronthaul
US10511324B1 (en) * 2018-11-01 2019-12-17 Fungible, Inc. Data processing unit having hardware-based range encoding and decoding
US10922026B2 (en) 2018-11-01 2021-02-16 Fungible, Inc. Data processing unit having hardware-based range encoding and decoding
US10937465B2 (en) 2019-02-21 2021-03-02 Raytheon Company Anomaly detection with reduced memory overhead
US11341235B2 (en) 2019-02-21 2022-05-24 Raytheon Company Anomaly detection with adaptive auto grouping
CN110336644B (zh) * 2019-07-15 2020-12-15 杭州泽铭睿股权投资有限公司 一种高维调制下的分层编码方法
US11353527B2 (en) * 2019-07-19 2022-06-07 Shanghai United Imaging Healthcare Co., Ltd. Systems and methods for waveform determination in magnetic resonance imaging
US10917110B1 (en) * 2019-09-02 2021-02-09 Ati Technologies Ulc Multiple symbol decoder
US11404136B2 (en) * 2020-12-16 2022-08-02 Micron Technology, Inc. Memory device protection using interleaved multibit symbols
CN115225202B (zh) * 2022-03-01 2023-10-13 南京大学 一种级联译码方法
US11916570B1 (en) * 2022-11-11 2024-02-27 Texas Instruments Incorporated Codeword format for data storage

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060090114A1 (en) * 2002-05-31 2006-04-27 Duffy Dominic G Data processing apparatus and method

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6307868B1 (en) * 1995-08-25 2001-10-23 Terayon Communication Systems, Inc. Apparatus and method for SCDMA digital data transmission using orthogonal codes and a head end modem with no tracking loops
US5790570A (en) 1996-08-30 1998-08-04 Cornell Research Foundation, Inc. Concatenated trellis coded modulation and linear block codes
US6034996A (en) 1997-06-19 2000-03-07 Globespan, Inc. System and method for concatenating reed-solomon and trellis codes
US6405338B1 (en) * 1998-02-11 2002-06-11 Lucent Technologies Inc. Unequal error protection for perceptual audio coders
US6567475B1 (en) 1998-12-29 2003-05-20 Ericsson Inc. Method and system for the transmission, reception and processing of 4-level and 8-level signaling symbols
US6311306B1 (en) * 1999-04-26 2001-10-30 Motorola, Inc. System for error control by subdividing coded information units into subsets reordering and interlacing the subsets, to produce a set of interleaved coded information units
AU2001284709A1 (en) * 2000-08-02 2002-02-13 Vidicast Ltd. Data encryption and decryption using error correction methodologies
US6981202B2 (en) * 2001-01-08 2005-12-27 Nokia Corporation Method and system for allocating convolutional encoded bits into symbols before modulation for wireless communication
US6981196B2 (en) * 2001-07-25 2005-12-27 Hewlett-Packard Development Company, L.P. Data storage method for use in a magnetoresistive solid-state storage device
US7142612B2 (en) 2001-11-16 2006-11-28 Rambus, Inc. Method and apparatus for multi-level signaling
US7197690B2 (en) * 2002-05-31 2007-03-27 Broadcom Corporation Bandwidth efficient coded modulation scheme based on MLC (multi-level code) signals having multiple maps
FR2840477B1 (fr) 2002-06-03 2005-02-04 Nortel Networks Ltd Procede d'adaptation de liens radio et unite de controle mettant en oeuvre le procede
US7359313B2 (en) 2002-06-24 2008-04-15 Agere Systems Inc. Space-time bit-interleaved coded modulation for wideband transmission
US7379505B2 (en) 2003-02-13 2008-05-27 Broadcom Corporation Method and apparatus for performing trellis coded modulation of signals for transmission on a TDMA channel of a cable network
EP1779575A1 (en) * 2004-08-17 2007-05-02 Nokia Corporation Methods and apparatus for balancing modulation in cellular communications over noisy channels
US7493457B2 (en) * 2004-11-08 2009-02-17 Sandisk Il. Ltd States encoding in multi-bit flash cells for optimizing error rate
EP1819056B1 (en) * 2004-12-02 2013-07-17 Mitsubishi Electric Corporation Decoding device and communication device
US7526715B2 (en) * 2005-10-17 2009-04-28 Ramot At Tel Aviv University Ltd. Probabilistic error correction in multi-bit-per-cell flash memory
US8020060B2 (en) * 2006-01-18 2011-09-13 Sandisk Il Ltd Method of arranging data in a multi-level cell memory device
US7388781B2 (en) * 2006-03-06 2008-06-17 Sandisk Il Ltd. Multi-bit-per-cell flash memory device with non-bijective mapping
KR101472545B1 (ko) * 2007-01-19 2014-12-16 코닌클리케 필립스 엔.브이. 무선 디바이스의 발견을 가능하게 하는 장치 및 방법
US7856067B2 (en) * 2007-04-04 2010-12-21 The Aerospace Corporation Unequal hierarchical communications modulation method
US8051358B2 (en) 2007-07-06 2011-11-01 Micron Technology, Inc. Error recovery storage along a nand-flash string
US8627165B2 (en) * 2008-03-24 2014-01-07 Micron Technology, Inc. Bitwise operations and apparatus in a multi-level system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060090114A1 (en) * 2002-05-31 2006-04-27 Duffy Dominic G Data processing apparatus and method

Also Published As

Publication number Publication date
EP2255278A4 (en) 2014-04-16
US20140093076A1 (en) 2014-04-03
US20160269147A1 (en) 2016-09-15
US20090241006A1 (en) 2009-09-24
KR101312127B1 (ko) 2013-09-26
US9374343B2 (en) 2016-06-21
US10355815B2 (en) 2019-07-16
WO2009120571A3 (en) 2009-11-26
CN101978349A (zh) 2011-02-16
KR20120123733A (ko) 2012-11-09
WO2009120571A2 (en) 2009-10-01
KR101272963B1 (ko) 2013-06-10
KR20100139063A (ko) 2010-12-31
US8627165B2 (en) 2014-01-07
EP2255278B1 (en) 2020-03-04
KR20120060249A (ko) 2012-06-11
CN101978349B (zh) 2014-01-08
EP2255278A2 (en) 2010-12-01

Similar Documents

Publication Publication Date Title
KR101284471B1 (ko) 다중-레벨 시스템에서의 비트와이즈 동작들 및 장치
JP5232014B2 (ja) 符号化及び信号処理機能を有するフラッシュメモリ
JP5232013B2 (ja) フラッシュメモリにおける誤り訂正のための方法およびシステム
JP6960877B2 (ja) メモリシステム
EP2559036A1 (en) Multiple programming of flash memory without erase
US10417088B2 (en) Data protection techniques for a non-volatile memory array
WO2011121490A1 (en) Two -level bch codes for solid state storage devices
US20160342466A1 (en) Data encoding in solid-state storage apparatus
US11474920B2 (en) Dynamic mapping of logical to physical memory for increased performance

Legal Events

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

Payment date: 20160617

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170703

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180703

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190625

Year of fee payment: 7