KR20160144960A - 폴라 코드들을 이용한 비대칭 에러 정정 및 플래시 메모리 재기록 - Google Patents
폴라 코드들을 이용한 비대칭 에러 정정 및 플래시 메모리 재기록 Download PDFInfo
- Publication number
- KR20160144960A KR20160144960A KR1020167021326A KR20167021326A KR20160144960A KR 20160144960 A KR20160144960 A KR 20160144960A KR 1020167021326 A KR1020167021326 A KR 1020167021326A KR 20167021326 A KR20167021326 A KR 20167021326A KR 20160144960 A KR20160144960 A KR 20160144960A
- Authority
- KR
- South Korea
- Prior art keywords
- rti
- message
- data
- vector
- value
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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
- H03M13/13—Linear codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/154—Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Error Detection And Correction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
변화하는 데이터 값들에서 블록 소거 동작을 방지할 수 있는, 메모리 디바이스들에서 데이터의 표현을 위한 코드들을 생성하기 위한 기술들이 개시된다. 이진 디지트들(비트들)을 포함하는 데이터 값들이, 코드워드들로 지칭되는 일반화된 코드들을 사용하여 인코딩 및 디코딩될 수 있어서, 코드워드들은 블록 소거 방지 코드를 포함할 수 있고, 여기서 데이터 메시지 m의 이진 디지트들이 인코딩된 데이터 메시지가 데이터 디바이스의 다수의 메모리 셀들에 저장될 수 있도록 인코딩될 수 있고, 일단 메모리 셀 값이 제 1 로직 값으로부터 제 2 로직 값으로 변경되면, 메모리 셀에 대한 블록 소거 동작까지, 후속하여 수신된 메시지들에 무관하게, 메모리 셀의 값이 제 2 로직 값에서 유지될 수 있다. 유사하게, 다수의 이진 디지트들의 소스 데이터 값들이 개시된 블록 소거 방지 코드로 인코딩된 입력 코드워드를 포함하는 수신된 데이터 메시지는, 추정된 소스 데이터 메시지를 복원하기 위해 데이터 디바이스에 디코딩될 수 있다.
Description
관련 출원들에 대한 상호 참조
[0001]
본 출원은, Eyal En Gad, Yue Li, Anxiao Jiang, Jehoshua Bruck, Michael Langberg 및 Joerg Kliewer에 의해 “Polar Coding for Noisy Write-Once Memories”라는 명칭으로 2014년 1월 17일에 출원된 미국 가출원 일련 번호 제 61/928,749호의 35 U.S.C. § 119 (e) 하에서의 우선권을 주장하고, Eyal En Gad, Yue Li, Anxiao Jiang, Jehoshua Bruck, Michael Langberg 및 Joerg Kliewer에 의해 “Polar Coding for Noisy Write-Once Memories”라는 명칭으로 2014년 6월 27일에 출원된 미국 가출원 일련 번호 제 62/018,434 호의 35 U.S.C. § 119 (e) 하에서의 우선권을 주장한다. 이러한 선출원들의 출원 일자들의 우선권은 이로써 주장되며, 그로 인해, 선출원들의 개시는 모든 목적을 위해 인용에 의해 포함된다.
연방 정부 지원 연구 개발에 관한 진술
[0002]
본 연구는 NSF 교부금 CIF-1218005, CCF-1017632, CCF-1161774 및 CCF-1320785, NSF CAREER 어워드 CCF-0747415 및 허가 번호 2010075 하에서 US-이스라엘 양국간 과학 재단(BSF)에 의해 부분적으로 지원되었다.
[0003]
본 명세서에서 달리 명시하지 않으면, 본 섹션에 기술된 내용들은 본 출원의 청구항에 대한 종래 기술이 아니며 본 섹션에 포함함으로써 종래 기술인 것으로 인정되는 것은 아니다. 본 개시는 일반적으로 데이터 저장 디바이스들 및 이러한 디바이스들에 대한 시스템들 및 방법들에 관한 것이다. 다양한 예들에서, 데이터 저장 디바이스, 예컨대 플래시 메모리 디바이스들에서의 데이터 변조 기술들이 개시된다.
[0004]
플래시 메모리들은 현재 비휘발성 메모리(NVM) 시장의 거의 90%를 차지하는, 전자적인 비휘발성 메모리들의 일 타입니다. 오늘날, 수 십억 개의 플래시 메모리들은, 주로 이들의 높은 성능 및 물리적 내구성으로 인해, 이동형, 내장형 및 대용량 저장 시스템들에 사용된다. 플래시 메모리들의 예시적인 응용예들은, 셀 폰들, 디지털 카메라, USB 플래시 드라이브들, 컴퓨터들, 센서들 및 더 많은 기기들을 포함한다. 플래시 메모리들은 이제 때때로 하드 디스크들과 같은 자기 디스크들을 대체하기 위해 사용된다.
[0005]
플래시 메모리 디바이스는, 로직 "1"의 메모리 셀 레벨 또는 로직 "0"의 메모리 셀 레벨 중 하나인 전압 전하를 저장할 수 있는 메모리 셀들을 포함한다. 즉, 셀 전압 레벨은 로직 레벨 또는 이진 디지트의 수치적 표현에 대응한다. 셀 레벨을 변경(예를 들어, 셀 전압 전하를 변경)하면 저장된 이진 디지트 값이 변경된다. 종래의 플래시 메모리들의 한계는 제 1 로직 레벨로부터 제 2 로직 레벨, 예컨대 로직 "1"로부터 로직 "0"으로의 셀 전압 레벨의 변경에 고비용이 드는 것이었다. 이러한 변경을 수행하기 위해, "블록 소거" 동작이 수행된다. 셀 또는 셀들의 그룹에서의 데이터 값이 새로운 값들을 나타내기 위해 변경될 때, 블록 소거들이 전형적으로 수행된다. 블록 소거는, 블록 소거를 수행하기 위한 시간 및 전력과 같은 리소스 사용의 측면에서 비교적 비용이 많이 든다. 플래시 메모리 디바이스들의 동작은, 이러한 블록 소거 리소스 요구들이 감소되면 더욱 효율적일 것이다.
[0006]
데이터 값들을 변경하는데 있어서 블록 소거 동작을 방지하는, 데이터 디바이스들의 데이터 값들의 표시를 위한 코드들을 생성하기 위한 기술들이 개시된다. 특히, 이진 디지트들(비트들)을 포함하는 데이터 값들이, 코드워드들로 지칭되는 데이터 표시 코드들을 이용하여 인코딩 및 디코딩될 수 있어서, 코드워드들은 블록 소거 방지 코드를 포함한다. 본 명세서에 설명된 바와 같이, 블록 소거 방지 코드는, 인코딩된 데이터 메시지가 데이터 디바이스의 다수의 메모리 셀들에 저장될 수 있도록 데이터 메시지의 이진 디지트들(m)이 인코딩될 수 있는 코드일 수 있고, 일단 메모리 셀 값이 제 1 로직 값에서 제 2 로직 값으로 변경되면, 메모리 셀의 값이, 메모리 셀의 값이 메모리 셀에 대한 블록 소거 동작까지는, 추후에 수신된 메시지에 무관하게, 제 2 로직 값으로 유지될 수 있다. 특히, 코드워드들은 메모리 디바이스의 다수의 셀들에 의한 표시를 위해 구성될 수 있어서, 일단 셀 값이 로직 "0"에서 로직 "1"로 변경되면, 대응하는 저장된 데이터 값이 변경되더라도, 이 셀의 값은 로직 "1"로 유지될 수 있다. 이는 개시된 코드워드들에 의해 표시된 데이터 값을 변경하기 위한 블록 소거에 대한 필요성을 방지 또는 그렇지 않으면 감소시킬 수 있다. 유사하게, 다수의 이진 디지트들의 소스 데이터 값들이 개시된 블록 소거 방지 코드로 인코딩된 입력 코드워드를 포함하는 수신된 데이터 메시지는, 추정된 소스 데이터 메시지를 복원하기 위해 데이터 디바이스에 디코딩될 수 있다. 따라서, 데이터 메시지(m)는 통신 채널을 통해 데이터 디바이스에서 수신될 수 있고 메시지(m)의 이진 디지트들은 블록 소거 방지 코드의 코드워드를 나타내도록 인코딩을 위해 디바이스에서 프로세싱될 수 있고, 인코딩된 복수의 이진 디지트들을 포함하는 데이터 메시지는 원래의 소스 데이터 이진 디지트들을 복원하도록 디코딩될 수 있다.
[0007]
현재 개시된 기술들은 메모리 디바이스의 단일 레벨 셀(SLC) 타입에 매우 적합하며, 이는 로직 "0" 및 로직 "1"에 대응하는 두 개의 셀 전하 레벨들 중 하나를 저장하는 메모리 셀의 타입이다. 본 개시에 따른 SLC 메모리 디바이스의 일례는, 통신 채널을 통해 메시지를 수신할 수 있고 메시지를 구성하는 이진 디지트들을 인코딩할 수 있고, 또는 메모리 디바이스는 통신 채널을 통해 코드워드를 수신할 수 있고 추정된 디코딩된 코드워드를 생성하여 원래 메시지를 복원할 수 있다. 개시된 기술들은 또한 메모리 디바이스의 다중 레벨 셀(MLC) 타입과 잘 작동하며, 이는 다수의 전하 레벨들, 전형적으로 4 또는 8 전하 레벨들을 저장하는 메모리 셀들을 이용하는 디바이스의 타입이다.
[0008]
다양한 예들이 두 개의 통신 세팅들: (1) 비대칭 채널 세팅 및 (2) 알려진 인코더 세팅을 갖는 채널을 포함할 수 있는 효율적인 코딩 방식들을 개시한다. 이러한 통신 세팅들은 비휘발성 메모리들은 물론, 광학 및 브로드캐스트 통신에서 사용될 수 있다. 본 개시는 비선형 폴라 코드들에 기초할 수 있는 코딩 방식들을 개시하며, 여기서 설명된 코딩 방식들은 전술한 통신 세팅 토폴로지들을 사용하는 시스템들 및 디바이스들의 성능을 향상시킬 수 있다.
[0009]
이하의 논의에서, 본 명세서에 개시된 블록 소거 방지 코드들은 통신 채널 ―이 통신 채널을 통해 데이터 메시지가 채널 용량에 대해 최대화되거나 그렇지 않으면 증가되도록 전송됨― 의 데이터 비트 전달 레이트를 이네이블하는 코드워드들을 제공한다는 것을 보여준다. 즉, 개시된 블록 소거 방지 코드는, 인코딩된 데이터 메시지가 데이터 디바이스의 다수의 메모리 셀들에 저장될 수 있도록 데이터 메시지의 이진 디지트들(m)이 인코딩될 수 있는 코드의 특성을 제공할 수 있고, 일단 메모리 셀 값이 제 1 로직 값에서 제 2 로직 값으로 변경되면, 메모리 셀의 값이, 메모리 셀의 값이 메모리 셀에 대한 블록 소거 동작까지는, 추후에 수신된 메시지에 무관하게, 제 2 로직 값으로 유지될 수 있지만, 부가적으로, 개시된 블록 소거 방지 코드들은 통신 채널을 통한 데이터 전달이 통신 채널의 최대 또는 그렇지 않으면 증가된 채널 용량이 되게 하는 코드일 수 있다.
[0010]
전술한 요약은 단지 예시적이며 어떤 식으로도 제한하려는 의도는 아니다. 예시된 양상들, 실시예들, 기술들, 시스템들, 동작 방법들, 및 전술한 특징들에 부가하여, 추가의 양상들, 실시예들, 기술들, 시스템들, 동작 방법들, 및 특징들이 이하의 상세한 설명 및 도면을 참조하여 명백할 것이다.
[0011]
본 개시의 전술한 특징 및 다른 특징들이, 첨부된 도면들을 참조하며, 이하의 설명 및 첨부된 청구항들로부터 더욱 충분하게 명백하게 될 것이다. 이러한 도면들이 본 개시에 따른 단지 몇몇 실시예들을 묘사하며, 결국 본 개시의 범위를 제한하지 않는 것임을 이해하면서, 본 개시는 첨부된 도면의 사용을 통해 추가의 특이성 및 세부 사항으로 설명될 것이며, 도면들 모두는 본 명세서에 제시된 적어도 몇몇 실시예들에 따라 배열된다.
[0012] 도 1은 본 명세서에 개시된 바와 같이 데이터 메시지를 인코딩하기 위한 다양한 예들에 따라 구성된 메모리 디바이스에서 수행될 수 있는 동작들을 예시하는 흐름도이다.
[0013] 도 2는 본 명세서에 개시된 바와 같이 데이터 메시지를 디코딩하기 위한 다양한 예들에 따라 구성된 메모리 디바이스에서 수행될 수 있는 동작들을 예시하는 흐름도이다.
[0014] 도 3은 본 명세서에 개시된 바와 같이 데이터 메시지를 인코딩하기 위한 다양한 예들에 따라 구성된 메모리 디바이스에서 수행될 수 있는 동작들을 예시하는 흐름도이다.
[0015] 도 4는 본 명세서에 개시된 바와 같이 데이터 메시지를 디코딩하기 위한 다양한 예들에 따라 구성된 메모리 디바이스에서 수행될 수 있는 동작들을 예시하는 흐름도이다.
[0016] 도 5는 본 명세서에 개시된 바와 같이 데이터 메시지를 인코딩하기 위한 다양한 예들에 따라 구성된 메모리 디바이스에서 수행될 수 있는 동작들을 예시하는 흐름도이다.
[0017] 도 6은 본 명세서에 개시된 바와 같이 데이터 메시지를 디코딩하기 위한 다양한 예들에 따라 구성된 메모리 디바이스에서 수행될 수 있는 동작들을 예시하는 흐름도이다.
[0018] 도 7은 현재 개시된 기술에 따라 구성된 메모리 디바이스의 예를 도시한 도면이다.
[0019] 도 8은 도 7에 묘사된 바와 같은 메모리 디바이스와 통신하기 위해 도 1-6의 동작들을 수행하기 위한 예시적인 컴퓨터 장치의 블록도이다.
[0020] 도 9는 본 명세서에 개시된 다양한 방식에 따라 동작하는 예시적인 메모리 디바이스의 데이터 흐름을 도시하는 블록도이다.
[0012] 도 1은 본 명세서에 개시된 바와 같이 데이터 메시지를 인코딩하기 위한 다양한 예들에 따라 구성된 메모리 디바이스에서 수행될 수 있는 동작들을 예시하는 흐름도이다.
[0013] 도 2는 본 명세서에 개시된 바와 같이 데이터 메시지를 디코딩하기 위한 다양한 예들에 따라 구성된 메모리 디바이스에서 수행될 수 있는 동작들을 예시하는 흐름도이다.
[0014] 도 3은 본 명세서에 개시된 바와 같이 데이터 메시지를 인코딩하기 위한 다양한 예들에 따라 구성된 메모리 디바이스에서 수행될 수 있는 동작들을 예시하는 흐름도이다.
[0015] 도 4는 본 명세서에 개시된 바와 같이 데이터 메시지를 디코딩하기 위한 다양한 예들에 따라 구성된 메모리 디바이스에서 수행될 수 있는 동작들을 예시하는 흐름도이다.
[0016] 도 5는 본 명세서에 개시된 바와 같이 데이터 메시지를 인코딩하기 위한 다양한 예들에 따라 구성된 메모리 디바이스에서 수행될 수 있는 동작들을 예시하는 흐름도이다.
[0017] 도 6은 본 명세서에 개시된 바와 같이 데이터 메시지를 디코딩하기 위한 다양한 예들에 따라 구성된 메모리 디바이스에서 수행될 수 있는 동작들을 예시하는 흐름도이다.
[0018] 도 7은 현재 개시된 기술에 따라 구성된 메모리 디바이스의 예를 도시한 도면이다.
[0019] 도 8은 도 7에 묘사된 바와 같은 메모리 디바이스와 통신하기 위해 도 1-6의 동작들을 수행하기 위한 예시적인 컴퓨터 장치의 블록도이다.
[0020] 도 9는 본 명세서에 개시된 다양한 방식에 따라 동작하는 예시적인 메모리 디바이스의 데이터 흐름을 도시하는 블록도이다.
[0021]
본 상세한 설명의 컨텐츠는 다음 표제에 따라 구성되어 있다:
I. 서론
A. 에러 정정 코드들 및 플래시 메모리들
B. 이전 작업에 대한 관계
II. 비대칭 포인트-투-포인트 채널들
III. 넌-캐주얼 인코더 상태 정보를 갖는 채널
A. 특정한 경우들
B. 저하된 채널들에 대한 멀티코딩 구조
C. 저하 없는 멀티코딩 구조
IV. 예시적인 실시예들
첨부 A(정리 6의 증명)
첨부 B(보조 정리 6a의 증명)
첨부 C(정리 7의 증명)
[0022]
I. 서론
[0023]
이하의 논의에서, 에러 정정 코드들 및 플래시 메모리들은 일반적으로 "서론" 섹션에서 설명된다. 섹션 II, 비대칭 포인트-투-포인트 채널들은, 비대칭 통신 채널들을 고려하며, 여기서 데이터 값들을 인코딩 및 디코딩하기 위한 코드들은 이러한 통신 채널들의 비균일한 입력 분포를 수용한다. 채널 용량 달성 코드를 위한 파라미터들이 논의되며, "구조 A"로 지칭되는 이러한 채널들에 대한 코드 생성 기술이 설명된다. 채널 용량 달성 코드의 유도는 알려진 채널 코딩 정리들(예컨대, 채널 코딩 정리 및 분극 정리) 및 Bhattacharyya 파라미터들의 관점에서 설명된다. 섹션 III, 넌- 캐주얼 인코더 상태 정보를 갖는 채널들에서, 상이한 채널 용량 달성 코드들이, 채널 상태 정보가 이용가능한 통신 채널들에 사용하기 위해 설명된다. 이러한 코드들은 플래시 메모리 상황에 적합할 수 있고, 여기서 블록 소거 동작들은 리소스 집약적일 수 있고 방지 또는 감소되어야 한다. 편의상 "구조 B" 및 "구조 C"로 지칭되는 기술들인, 두 특정 코드 생성 기술들이 채널 상태 정보를 갖는 통신 채널들에 대해 논의된다. 섹션 III에서, 섹션 II의 정리들 및 정의들에 부가하여 정리들 및 정의들이 개시된 채널 용량 달성 코드들을 유도하기 위해 사용된다. 섹션 IV, 예시적인 실시예들은, 구조 A, 구조 B 및 구조 C 기술들을 포함하며, 본 명세서의 설명에 따른 인코딩 및 디코딩을 위한 기술들을 실행할 수 있는 하드웨어 및 소프트웨어의 구현들을 논의한다.
[0024]
A. 에러 정정 코드들 및 플래시 메모리들
[0025]
비대칭 채널 코딩은 다양한 애플리케이션들, 예컨대 비휘발성 메모리들에서 유용할 수 있으며, 여기서 전기적 메커니즘들은 지배적으로 비대칭일 수 있다(예를 들어, Y. Cassuto, M. Schwartz, V. Bohossian, and J. Bruck, “Codes For Asymmetric Limited-Magnitude Errors With Application To Multilevel Flash Memories”, IEEE Trans. On Information Theory, Vol. 56, No. 4, pp. 1582-1595, April 2010 참조). 비대칭 채널 코딩은 또한, 광학 통신에서 유용할 수 있으며, 여기서 광자들이 검출(1→0)되는 것이 실패할 수 있지만, 스퓨리어스 광자들의 생성(0→1) 은 가능하지 않을 수 있다. 이러한 디바이스들의 메모리 상태가 기록 시도들의 레이트에 영향을 줄 수 있기 때문에, 알려진 인코더를 이용한 채널 코딩은 또한, 비휘발성 메모리들에 유용할 수 있다. 알려진 인코더를 이용한 채널 코딩은 또한, 브로드캐스트 통신들에 유용할 수 있으며, 여기서 채널 코딩은 높은 통신 레이트들을 달성하기 위해 Marton의 코딩 방식에서 사용될 수 있다.
[0026]
본 애플리케이션에서 다양한 기술적 논의들이 폴라 코딩 기술들에 속할 수 있다. 폴라 코딩 기술들은 통신 레이트 및 계산상 복잡도 모두의 측면에서 매우 효율적일 수 있으며, 분석 및 이해하기가 비교적 쉬울 수 있다. 폴라 코드들은 Arikan에 의해 소개되었고(예를 들어, E. Arikan, “Channel Polarization: A Method For Constructing Capacity-Achieving Codes For Symmetric Binary-Input Memoryless Channels”, IEEE Trans. on Information Theory, Vol. 55, No. 7, pp. 3051-3073, July 2009 참조), 이진 입력 메모리 없는 채널들의 대칭 용량을 달성한다.
[0027]
Gallager의 방식(R. G. Gallager, Information Theory and Reliable Communication, Wiley, 1968, p. 208) 및 두 폴라 코드들의 연쇄(D. Sutter, J. Renes, F. Dupuis, and R. Renner, “Achieving The Capacity Of Any DMC Using Only Polar Codes”, in Information Theory Workshop (ITW), 2012 IEEE, Sept 2012, pp. 114-118)를 이용한 사전-맵핑을 포함하여, 비대칭 채널들에 대한 몇몇 폴라 코딩 방식들이 최근에 제안되었다. 더욱 직접적인 접근법이, J. Honda and H. Yamamoto, “Polar coding without alphabet extension for asymmetric models”, IEEE Trans. on Information Theory, Vol. 59, No. 12, pp. 7829-7838, 2013에서 제안되었으며, 이는 비선형 폴라 코드들을 사용하는 비대칭 채널들의 용량을 달성하지만, 블록 길이에서 지수 함수적인 저장 공간을 포함하는 큰 부울 함수들을 사용한다. 본 발명의 개시는 이러한 방식에 대한 변경을 설명하며, 이는 부울 함수(Boolean function)의 사용을 제거하고, 블록 길이의 선형 기능에 대한 태스크들의 인코딩 및 디코딩의 감소된 저장 요건을 초래할 수 있다.
[0028]
본 발명의 개시는 인코더에서 채널에 관한 부가 정보의 이용성에 대한 비선형 방식의 일반화를 추가로 설명한다. 이러한 방식은 폴라 멀티코딩 방식으로 지칭될 수 있으며, 이는 알려진 인코더를 이용한 채널들의 용량을 달성한다. 이러한 방식은 비휘발성 메모리들, 예컨대 플래시 메모리들 및 위상 변경 메모리들, 그리고 브로드캐스트 채널들에 유용할 수 있다.
[0029]
플래시 메모리들의 일 특성은 기록 시도에 대한 메모리 셀들의 응답이 메모리의 이전 콘텐츠에 의해 영향받을 수 있다는 것이다. 이는 에러 정정 방식들의 디자인을 복잡하게 하고, 결국 플래시 시스템들이 기록 전에 셀들의 콘텐츠를 소거하게 하는 원인이 되며, 그로 인해 지연 효과를 제거한다. 그러나 플래시 메모리들에서 소거 동작은 리소스 소모적일 수 있고, 따라서 기록 전에 소거를 수반하지 않는 단순한 코딩 방식은 솔리드 스테이트 드라이브들의 성능을 현저하게 향상시킬 수 있다. 본 명세서에는 제안된 폴라 멀티코딩 방식의 두 예들이 개시되어 있다.
[0030]
B. 이전 작업에 대한 관계
[0031]
알려진 인코더를 이용한 채널 코딩의 연구는, Gelfand 및 Pinsker에 의해 유도된 채널 용량(앞선 Gelfand 및 Pinsker, “Coding For Channel With Random Parameters" 참조)과 함께 Kusnetsov 및 Tsybakov(A. Kusnetsov and B. S. Tsybakov, “Coding In A Memory With Defective Cells”, translated from Problemy Peredachi Informatsii, Vol. 10, No. 2, pp. 52-60, 1974)에 의해 개시되었다. Gelfand 및 Pinsker의 알려진 인코딩 기술은 브로드캐스트 채널들의 용량 구역에 대해 내부 제한을 설정하도록 Marton에 의해 앞서 사용되었다(K. Marton, “A Coding Theorem For The Discrete Memoryless Broadcast Channel”, IEEE Trans. on Information Theory, Vol. 25, No. 3, pp. 306-311, May 1979). 낮은 복잡도 용량 달성 코드들은, 격자 코드들을 사용하여 연속한 채널들에 대해 우선 제안되었다(예를 들어, R. Zamir, S. Shamai, and U. Erez, “Nested Linear/Lattice Codes For Structured Multiterminal Binning”, IEEE Trans. On Information Theory, Vol. 48, No. 6, pp. 1250-1276, June 2002 참조). 개별 채널들에서, 정보 임베딩의 대칭적인 특정한 경우에 대해, 폴라 코드를 사용하여 제 1 의 낮은 복잡도 용량 달성 방식이 제안되었다(예를 들어, S. Korada and R. Urbanke, “Polar Codes Are Optimal For Lossy Source Coding,” IEEE Trans. On Information Theory, Vol. 56, No. 4, pp. 1751-1768, April 2010, Section VIII.B 참조). 플래시 메모리 재기록의 애플리케이션에 대한 이러한 방식의 변경은, 한 번 기록(write-once) 메모리로 불리는 모델을 고려하여, D. Burshtein and A. Strugatski, “Polar Write Once Memory Codes”, IEEE Trans. On Information Theory, Vol. 59, No. 8, pp. 5088-5101, Aug. 2013에서 제안되었다. 랜덤 추출기들에 기반한, 이러한 애플리케이션에 대한 추가의 방식은 최근에, A. Gabizon and R. Shaltiel, “Invertible Zero-Error Dispersers And Defective Memory With Stuck-At Errors”, in APPROX-RANDOM, 2012, pp. 553-564에서 또한 제안되었다.
[0032]
본 개시의 몇몇 양상들은, 앞선 Burshtein and Strugatski, “Polar Write Once Memory Codes” 및 A. Gabizon and R. Shaltiel, “Invertible Zero-Error Dispersers And Defective Memory With Stuck-At Errors”, in APPROX-RANDOM, 2012, pp. 553-564에서 고려된 것과 비교될 수 있는 셋업과 관련된다. 언급된 두 방식들에 비해 현재 개시된 기술들의 기여는, 본 명세서에 설명된 방식들은 잡음을 또한 포함하는 재기록 모델의 용량을 달성할 수 있는 반면, Burshtein and Strugatski, “Polar Write Once Memory Codes” and in Gabizon and Shaltiel, “Invertible Zero-Error Dispersers And Defective Memory With Stuck-At Errors”에 개시된 방식들은 잡음 없는 경우의 용량을 달성할 수 있다. 에러 정정은 현대의 플래시 메모리 시스템들에서 유용한 성능이다. 잡음 용량의 낮은 복잡도 실현성은 멀티코딩 기술을 사용하여 동반될 수 있다.
[0033]
앞선 Gabizon and Shaltiel, “Invertible Zero-Error Dispersers And Defective Memory With Stuck-At Errors”와 비교하면, 현재 개시된 기술들은 입력 비용 제한을 갖는 용량을 달성함으로써 개선된 성능을 초래할 수 있고, 이는 또한 다수의 재기록 라운드 동안 코드 레이트들의 합을 최대화 또는 그렇지 않으면 증가시키기 위해 재기록 모델들에 유용하다. 앞선 Burshtein 및 Strugatski “Polar Write Once Memory Codes”와 비교하면, 현재 개시된 기술들은 인코더와 디코더 사이의 공유된 랜덤의 포함을 제거하거나 그렇지 않으면 감소시킴으로써 향상된 성능을 초래할 것이고, 이는 실질적인 코딩 성능에 영향을 줄 수 있다. 공유된 랜덤의 제거 또는 감소는 비선형 폴라 코드들의 사용에 의해 달성될 수 있다. 본 명세서에서 고려된 추가의 코딩 방식은 또한 공유된 랜덤을 수반하지 않는다. X. Ma, “Write-Once-Memory Codes By Source Polarization”(2004년 5월 현재, 온라인, [arxiv.org/abs/1405.6262]의 인터넷 URL에서 이용가능함)를 참조하라. 그러나, 앞선 Ma, “Write-Once-Memory Codes By Source Polarization”에서 추가의 코딩 방식은 단지 잡음 없는 경우만을 고려한다.
[0034]
Marton 코딩 기술이 구성 요소로서 멀티코딩 기술을 포함하기 때문에, 알려진 인코더들을 이용한 채널에 대한 폴라 코딩은 또한 브로드캐스트 채널들의 상황에서 최근에 연구되었다. 코딩 기술이, N. Goela, E. Abbe, and M. Gastpar, “Polar Codes For Broadcast Channels”, in Proc. IEEE Int. Symp. on Information Theory (ISIT), July 2013, pp. 1127-1131에서, 최근에 브로드캐스트 채널들에 대해 제시되었다. 현재 개시된 기술들은 독립적으로 전개되었고, 앞선 Goela et al., “Polar Codes For Broadcast Channels”에서 발견되거나, 제안되거나 그렇지 않으면 개시되지 않은 적어도 3개의 새로운 기여들을 제공한다. 첫째, 비선형 폴라 코드들의 변경된 방식을 사용함으로써, 현재 개시된 기술들은 블록 길이의 지수 함수에서 선형 함수로 감소된 저장 요건들을 초래할 수 있다. 둘째, 현재 개시된 방식들은 플래시 메모리 재기록 및 데이터 저장소의 애플리케이션에 연결될 수 있으며, 이는 이전 작업에서 고려되지 않았다. 셋째, Goela et al., “Polar Codes For Broadcast Channels”에서의 분석은 저하의 특정 기술적 조건을 나타내는 채널들에 대해 유지된다. 본 발명에서, 재기록 모델은 성능 저하 상태를 나타내는 기록 잡음으로 간주되고, 이 방식이 고려된 모델의 용량을 달성하는 것이 본 명세서에서 보여진다.
[0035]
브로드캐스트 채널에 대한 폴라 코딩에 관한 다른 문서는 최근에, Mondelli et. al.; see M. Mondelli, S. H. Hassani, I. Sason, and R. Urbanke, “Achieving Marton's Region For Broadcast Channels Using Polar Codes”(2014년 1월, 온라인, [arxiv.org/abs/1401.6060]의 인터넷 URL에서 이용가능함)에 의해 공표되었다. 이 문서는, 채널 저하의 상태의 바이패스를 허용하는 "체이닝(chaining)"으로 불리는 방법을 제안했다. 본 개시에서, 체이닝 방법은 플래시 메모리 재기록 애플리케이션 및 새로운 비선형 폴라 코딩 방식에 관련되고, 제안된 멀티코딩 방식에 적용된다. 이는 알려진 인코더 모델 및 Marton의 내부 경계의 달성과 함께 선형 저장을 허용하여, 채널 저하의 수반을 제거 또는 감소시킨다. 더욱이, 본 개시는 플래시 메모리 애플리케이션에 대한 체이닝 방식을 논의하고, 플래시 메모리 시스템들에 대한 이러한 예의 적용성을 설명한다.
[0036]
본 개시의 다음 논의 섹션은 비대칭 채널들에 대한 비선형 폴라 코딩 방식을 제안하며, 이는 부울 함수들의 지수적 저장을 수반하지 않는다. 계속되는 추가의 섹션들은, 플래시 메모리들의 재기록을 위한 특정한 경우들을 포함하여, 알려진 인코더를 이용한 채널들에 대한 폴라 멀티코딩 방식을 설명할 것이다.
[0037]
II. 비대칭 포인트-투-포인트 채널들
[0038]
주석: 인 양의 정수들에 대해, 이 집합 을 나타내고, 은 집합 을 나타낸다고 하자. 의 부분 집합 가 주어지면, 는 에 대해 의 여집합을 나타내고, 여기서 은 문맥으로부터 명확하다. 가 길이 의 벡터를 나타내고, 가 에서 지수들을 갖는 엘리먼트들을 삭제함으로써 로부터 획득된 길이 의 벡터를 나타낸다고 하자.
[0039]
이러한 섹션 전체를 통해, 이진 입력 알파벳들을 가진 채널들이 고려된다. 그러나 이러한 섹션의 결과들은 다양한 예들, 예컨대, R. Mori and T. Tanaka, “Channel Polarization On Q-Ary Discrete Memoryless Channels By Arbitrary Kernels”, in IEEE Int. Symp. on Information Theory (ISIT), June 2010, pp. 894-898; W. Park and A. Barg, “Polar Codes For Q-Ary Channels, q = 2r”, IEEE Trans. on Information Theory, Vol. 59, No. 2, pp. 955-969, Feb 2013; A. Sahebi and S. Pradhan, “Multilevel Polarization Of Polar Codes Over Arbitrary Discrete Memoryless Channels”, in Communication, Control, and Computing (Allerton), 2011, 49th Annual Allerton Conference on Communication, Control, and Computing, Sep. 2011, pp. 1718-1725; E. Sasoglu, I. Telatar, and E. Arikan, “Polarization For Arbitrary Discrete Memoryless Channels”, in Information Theory Workshop, 2009. ITW 2009. IEEE, Oct. 2009, pp. 144-148; 및 E. Sasoglu, “Polarization and Polar Codes,” Foundation Trends in Communications and Information Theory, Vol. 8, No. 4, pp. 259-381, 2012 (온라인, [dx.doi.org/10.1561/0100000041]의 인터넷 URL에서 이용가능함)에서 설명된 방법들을 이용하여 더 많은 어려움 없이 비-이진 알파벳들에 확장될 수 있다. 폴라 코딩의 일 양상은, 폴라 코딩이 랜덤 벡터들의 엔트로피들에 대한 Hadamard 변환의 분극 효과를 이용할 수 있다는 것이다. 입력 랜덤 변수 , 출력 랜덤 변수 , 및 에 대한 한 쌍의 조건부 확률 매스 함수(pmfs) 를 갖는 이진 입력 메모리 없는 채널 모델을 고려하라. n을, 블록 길이로 또한 지칭되는 채널 사용들의 수를 나타내는 2의 지수라고 하자. 채널 용량은 충분히 큰 블록 길이에 대해 요구가능한 정도로 작게 디코딩 에러의 확률이 만들어지는 레이트에 대해 상한으로서 고려될 수 있다. 다양한 예들에서, 채널 용량은 X 및 Y의 상호 정보에 의해 주어질 수 있다.
[0040]
정리 1. ( 채널 코딩 정리)(T. M. Cover and J. A. Thomas, Elements of Information Theory (2nd ed.). Wiley, 2006, Chapter 7 참조). 개별 메모리 없는 채널의 용량 은 에 의해 주어질 수 있다.
[0041]
Hadamard 변환은 매트릭스 를 갖는 원소수 2의 필드에 대해 랜덤 벡터 의 곱일 수 있으며, 여기서 및 는 Kronecker 거듭제곱을 나타낸다. 다시 말해서, 은 아래의 블록 매트릭스에 의해 에 대해 귀납적으로 설명될 수 있다:
[0042]
본 개시의 일 양상은 에 대해 조건부 엔트로피 의 거동을 포함한다. 매트릭스 는 을 랜덤 벡터 로 변환하여, 조건부 엔트로피 는 분극된다. 예를 들어, 인 지수들의 에 근접한 일부에 대해, 조건부 엔트로피 는 1에 근접하고, 지수들의 나머지 거의 모두에 대해, 조건부 엔트로피 는 0에 근접한다. 이러한 결과는 앞선 E. Arikan에 의한 “Channel Polarization”에 나타났다. "분극 정리"는 아래에서 분극 효과를 수학적으로 표현한다.
[0043]
정리 2. ( 분극 정리)(앞선 E. Arikan, “Source Polarization”, in Proc. IEEE Int. Symp. on Information Theory (ISIT), 2010, pp. 899-903; 정리, 1 참조). 전술한 바와 같이 이 제공된다고 하자. 임의의 에 대해, Y가 주어진 경우 X의 함수로서 조건부 엔트로피 가 다음과 같이 주어진다:
그러면:
이러한 분극 효과는, 블록 길이에서 다항식인 러닝 타임을 갖는 대칭 채널들의 용량을 달성할 수 있는 코딩방식의 설계에 대해 사용될 수 있다. 약하게 대칭인 채널들의 용량은 입력 알파벳에 대한 균일한 분포, 예를 들어, 에 의해 달성될 수 있다(예를 들어, T. M. Cover and J. A. Thomas, Elements of Information Theory (2d ed.), Wiley, 2006, Theorem 5.2.1 therein 참조). 약하게 대칭인 채널들은 출력 알파벳에 대해 균일한 분포를 갖도록 고려될 수 있고, 여기서 상이한 입력들이 주어질 경우 출력의 조건부 분포들은 서로의 순열일 수 있다. 이 섹션에서 입력 알파벳이 이진수인 것으로 고려될 수 있기 때문에, 용량 달성 분포는 이며, 따라서 아래의 등식(1)이 도출된다:
[0044]
(조건부 엔트로피가 집합 의 정의 만큼 작을 수 있기 때문에) 에서 각각의 지수에 대해, 조건부 확률 은 0 또는 1에 근접할 수 있다. 결과적으로, 및 가 주어지면 랜덤 변수 가 신뢰가능하게 추정될 수 있다. 이러한 실현들은 후속하는 다양한 코딩 방식들을 달성하기 위해 사용될 수 있다. 인코더는 소스 메시지를 가진 서브벡터 를, 그리고 디코더와 공유된, 균일하게 분포된 랜덤 비트들을 가진 서브 벡터 를 할당함으로써 벡터 를 생성할 수 있다. 랜덤 공유는 분석에 유용할 수 있지만, 확률적 방법에 의해 불필요한 것으로 드러날 것이다. 등식 (1)은 설명된 코딩 방식이 채널 용량을 달성할 수 있다고 암시한다. 디코딩은 지수 1에서 위로 n까지, 반복적으로 수행될 수 있다. 각각의 반복에서, 디코더는 반복의 세트 멤버십에 따라 공유된 정보 또는 최대 우도 추정을 이용하여 비트 를 추정할 수 있다. 가 에 있는 비트들 의 추정은 성공적일 수 있는데, 그 이유는 이러한 비트들이 디코더에 미리 알려졌기 때문이다. 비트들의 나머지는 비교적 높은 확률로 올바르게 추정될 수 있어서, 높은 확률로 전체 메시지의 만족스런 디코딩을 초래한다.
[0045]
그러나 이러한 추론은 비대칭 채널들로 직접 전환하지 않을 수 있다. 비대칭 채널들의 용량 달성 입력 분포는, 일반적으로, 균일하지 않을 수 있다(예를 들어, S. Golomb, “The limiting behavior of the z-channel (corresp.)”, IEEE Trans. on Information Theory, Vol. 26, No. 3, pp. 372-372, May 1980, e.g., 참조). Hadamard 변환이 전단사일 수 있기 때문에, 결과적으로 분극된 벡터 의 용량 달성 분포가 또한 비균일할 수 있다. 가능한 하나의 문제는 메시지의 균일한 비트들을 할당하는 것 또는 공유된 랜덤이 의 분포를 변경할 수 있고, 결과적으로 또한 조건부 엔트로피들 (또한 확률 체인 룰 을 주목)을 변경시킬 수 있다.
[0046]
이러한 전술한 상황을 관리하기 위해, 의 분포에서의 변경은 미미한 것으로 유지될 수 있고, 따라서 디코딩 에러의 확률에 대한 그 영향도 또한 미미할 수 있다. 이를 달성하기 위해, 에 대한 조건부 엔트로피들 이 고려될 수 있다. 분극이 채널의 전이 확률들에 무관하게 발생할 수 있기 때문에, 출력 Y가 결정적 변수이고, 엔트로피들 이 또한 분극되는 정리 2에 의해 결론지어지는 잡음 없는 채널이 고려된다. 이러한 분극에 대해, 지수의 의 부분은 높은 엔트로피 를 허용할 수 있다. 의 분포에서 미미하거나 그렇지 않으면 감소된 변경을 초래하기 위해, 메시지의 균일한 비트들의 할당들 및 공유된 랜덤은 높은 엔트로피 를 가진 지수들에 대해 제한될 수 있다.
[0047]
변경된 코딩 방식은 전술한 관측의 결과로서 구현될 수 있다. 높은 엔트로피 를 가진 위치들은 균일하게 분포된 비트들이 할당될 수 있지만, 나머지 위치들에는 의 확률 매스 함수(pmf)가 할당될 수 있다. 정리 2의 표기와 유사하게, 높은 엔트로피 를 가진 지수들의 세트가 로 표시될 수 있다. 신뢰가능한 디코딩을 달성하기 위해, 신뢰가능하게 디코딩될 수 있는 의 지수들에 메시지 비트들이 배치되어서, 이들의 엔트로피들 은 낮을 수 있다. 메시지 비트들이 교점 에 배치될 수 있다. 지수가 에 있지 않은 위치들은 신뢰가능한 디코딩을 위해 미리 디코더에 알려질 수 있다. 앞선 작업은 인코더와 디코더 사이의 랜덤 부울 함수들을 공유하고, pmf()에 따라 도출하고, 이러한 함수에 따라 에 지수를 할당하도록 제안했다. 예를 들어, 앞선, Goela and Gastpar, “Polar Codes For Broadcast Channels”, supra; Honda and Yamamoto, “Polar Coding Without Alphabet Extension For Asymmetric Models”을 참조하라. 그러나 본 개시는, 부울 함수들에 대해 요구되는 저장소가 n에서 지수적일 수 있음을 고려하고, 결국 본 개시는 효율적인 대안을 제안한다.
[0048]
부울 함수를 방지하기 위해, 의 여집합이 3개의 디스조인트 세트들로 분할될 수 있다. 첫째, 교점 에서의 지수들에, 인코더와 디코더 사이에서 공유될 수 있는, 균일하게 분포된 랜덤 비트들이 할당될 수 있다. 대칭적인 경우에서와 같이, 이러한 랜덤 공유는 필수적이지는 않을 것이다. 의 비트들의 나머지(세트 의 비트들)가 확률 를 가진 값 에 랜덤하게 할당될 수 있다(여기서, 는 채널의 용량 달성 분포인 pmf()에 따라 계산된다). 의 지수들은 신뢰가능하게 디코딩될 수 있지만, 의 지수들은 그렇지 않다. 다행스럽게도, 세트 는 작은 것으로 도시되며, 따라서 개별적으로 이러한 위치들은 소멸하거나 그렇지 않으면 코드 레이트에 감소된 영향을 가질 수 있다.
[0049]
소스 메시지가 교점 의 지수들에 위치되는 것을 고려함으로써, 코드 레이트는 채널 용량에 접근하는 것으로 나타날 수 있다. 이러한 교점의 점근적인 부분은 다음과 같이 도출될 수 있다:
[0050]
방식의 더욱 정교한 정의를 위해, 소위 Bhattacharyya 파라미터가 조건부 엔트로피 대신에, 의 서브세트들의 선택에서 사용될 수 있다. Bhattacharyya 파라미터들은 엔트로피들에 유사한 방식으로 분극될 수 있고, 디코딩 에러의 확률을 제한하기 위해 유용할 수 있다. 별개의 랜덤 값 Y 및 Bernoulli 랜덤 값 X에 대해, Bhattacharyya 파라미터 Z가 다음과 같이 주어질 수 있다:
[0051]
다양한 폴라 코딩 논문이, 랜덤 값 X가 균일하게 분포될 때 등식(3)과 일치할 수 있는 Bhattacharyya 파라미터에 대해 조금 상이한 정의를 사용할 수 있음을 주목하라. Bhattacharyya 파라미터는, 디코딩 에러의 확률 및 엔트로피 모두에 대한 추정으로서 간주될 수 있다. Bhattacharyya 파라미터와 조건부 엔트로피 사이의 이하의 관계는 이하의 제한 1에서 규정된 바와 같이 관측될 수 있다.
[0052]
명제 1. (E. Arikan, “Source Polarization”, in Proc. IEEE Int. Symp. on Information Theory (ISIT), 2010, pp. 899-903; 명제 2 참조).
[0054]
균일하게 분포된 소스 메시지 m은 로서 구현될 수 있고, 인코더 및 디코더 모두에 알려진 결정적 벡터 는 로서 구현될 수 있다. 서브세트 및 지수 의 경우, 함수 는 의 엘리먼트들의 순서화된 리스트에서 의 랭크를 나타내기 위해 사용될 수 있다. 확률들 및 는 앞선 Honda and Yamamoto, “Polar Coding Without Alphabet Extension For Asymmetric Models”(이하의 Section III.B (Multicoding Construction for Degraded Channels) 참조)에서 설명된 바와 같이 귀납적 방법에 의해 계산될 수 있다.
[0055]
구조 A. 이 섹션은 후속하는 참조의 편의를 위해 소위 "구조 A"로 지칭되는 구조를 설명하며, 이는 메시지를 인코딩하는 것의 출력으로서 코드워드들을 생성하고 입력 코드워드를 디코딩하는 것의 출력으로서 추정된 메시지를 생성하기 위해 비대칭 채널들에 적합한 방식들을 인코딩 및 디코딩하기 위한 예시적인 동작들을 제공한다.
[0056]
예시적인 메시지 인코딩 방식
[0057]
예시적인 입력 디코딩 방식
[0058]
구조 A의 전술한 이러한 방식에서 예시적인 관심 특성들은 달성된 용량 및 낮은 알고리즘 복잡도일 수 있다. 디코딩 에러의 확률이 소멸되거나 그렇지 않고 용량 미만의 임의의 레이트에 대해 블록 길이에 따라 감소되면, 코딩 방식들의 시퀀스는 채널 용량을 달성하는 것으로 일컬어진다. 이하의 정리 3은 전술한 구조 A의 방식의 관측으로부터 제안된다.
[0059]
정리 3. 전술한 예시적인 인코딩 및 디코딩 방식들을 갖는 구조 A는 낮은 계산상 복잡도를 가진 채널 용량(정리 1)을 달성한다.
[0060]
다음 섹션에서, 일반화된 구조가 그 용량 달성 특성들의 설명과 함께 예시된다. 따라서, 정리 3은 더욱 일반적인 정리의 추론으로서 뒤따른다.
[0061]
III. 넌 - 캐주얼 인코더 상태 정보를 갖는 채널
[0062]
이 섹션에서, 구조 A는 인코더에서 채널 상태 정보의 이용가능성에 대해 일반화된다. 플래시 메모리들에서의 재기록이 고려되고, 이러한 애플리케이션에 대한 모델의 두 예시적인 경우들이 제시된다. 셀-투-셀 간섭의 메카니즘으로 인해, 메모리 없는 채널의 가정은 플래시 메모리들에 매우 정확한 것은 아닐 수 있지만, 이 가정은 그럼에도 유익한 실제 성능을 갖는 코딩 방식들의 설계에 유용하다. 본 개시에서 고려되는 플래시 메모리들의 일 특징은 (단일 레벨 셀들에서) 데이터 셀 레벨을 "1"에서 "0"으로 변경하는 높은 비용이다. 이러한 변경을 수행하기 위해, 동작, 소위 "블록 소거"가 구현될 수 있다. 블록 소거 동작을 방지하기 위해 재기록이 고려될 수 있다. 예를 들어, 레벨 "1"을 가진 셀에 대한 재기록 시도는, 이것이 소거 동작이 아니기 때문에, 셀 레벨에 영향을 주지 않을 수 있다. 통신 용어에서, 채널은 개별 상태를 갖는 것으로 고려될 수 있다. 상태는 "메모리 없음"으로 고려될 수 있는데, 예를 들어, 상이한 셀들의 상태는 독립적으로 분포될 수 있다. 이러한 가정은 완벽하게 정확하지는 않을 수 있는데, 그 이유는 재기록 방식에서 메모리 상태는 메모리에 대한 앞선 기록에 의해 결정될 수 있고, 여기서 코드워드 지수들은 필수적으로 독립적으로 분포될 필요가 없을 수 있다. 그러나 용량 달성 코드들이 사용될 수 있기 때문에, 독립적으로 그리고 동등하게 분포된(i.i.d) 가정은, 셀 출력들을 나타내는 상이한 Bernoulli 랜덤 값들의 거동에 대해 합리적인 접근일 수 있다.
[0063]
모든 n개의 셀들의 상태는 기록 프로세스의 시작 이전에 기록기에 대해 이용가능한 것으로 가정될 수 있다. 통신 용어에서, 이러한 종류의 상태 유용성은 "넌-캐주얼"로 지칭될 수 있다. 이러한 세팅은 또한 브로드캐스트 채널들을 통한 통신을 위해 Marton 코딩 방법에서 유용할 수 있다. 따라서, 뒤따를 멀티코딩 방식들은 이러한 세팅에서 기여로서 또한 기능할 수 있다. 고려되는 모델의 일 예시적인 경우는 잡음 없는 한 번 기록 메모리 모델이다. 설명된 모델은 또한, “rank-modulation rewriting codes”로 불리는 코드들의 타입에 대한 기반으로서 기능할 수 있다(예를 들어, E. En Gad, E. Yaakobi, A. Jiang, and J. Bruck, “Rank-Modulation Rewrite Coding For Flash Memories”(온라인, 2013년 12월 현재, [//arxiv.org/abs/1312.0972]의 URL에서 이용가능함) 참조). 따라서, 본 개시에 제안된 방식들은 또한 랭크 변조 재기록 코드들의 설계에 유용할 수 있다.
[0064]
채널 상태는 파라미터 λ를 가진 Bernoulli 랜덤 변수 로 표현될 수 있고, 확률 로 나타낸다. 전술한 바와 같이, 상태 "1"(예를 들어, 로직 "1")의 셀은 "1"의 값으로 기록될 수 있다(블록 소거 방지). 파라미터 λ가 높은 경우, 메모리 셀의 용량은 작을 수 있는데, 그 이유는 단지 몇몇 셀들이 기록 프로세스에서 변경에 이용가능할 수 있고 결국 정보의 작은 양이 저장될 수 있기 때문이다. 그 결과, 장래의 기록들에서 메모리의 용량은 코드북의 선택에 의해 영향받을 수 있다. 높은 Hamming 가중치의 많은 코드워드들을 포함하는 코드북은 장래의 기록들의 파라미터 λ를 높게 할 수 있고, 결국 장래의 기록들의 용량은 낮을 수 있다. 그러나 코드북의 예상된 Hamming 가중치를 낮게 강제하는 것은 현재 기록의 용량을 감소시킬 수 있다. 이러한 트레이드-오프를 해결하기 위해, 다수의 기록들에 대한 코드 레이트들의 합이 밸런싱된 결과를 달성하기 위해 조정될 수 있다. 많은 경우에, 코드북 가중치에 대한 제한들은 합 레이트를 엄격하게 증가시킬 수 있다(예를 들어, C. Heegard, “On The Capacity Of Permanent Memory”, in IEEE Trans. Information Theory, Vol. 31, No. 1, pp. 34-42, January 1985 참조). 따라서, 입력 비용 제한은 본 명세서에 설명된 모델에서 고려될 수 있다.
[0065]
본 명세서에서 고려되는 일반적인 모델은, 인코더에서 상태 정보가 넌-캐주얼하게 이용가능한 경우, 개별적인 메모리 없는 상태 및 입력 비용 제한을 갖는 개별적인 메모리 없는 채널일 수 있다. 채널 입력, 상태 및 출력은 각각 로 표기될 수 있고, 이들 각각의 유한 알파벳들은 로 표기될 수 있다. 랜덤 변수들은 X, S 및 Y로 표기될 수 있고, 랜덤 벡터들은 로 표기될 수 있으며, 여기서, n은 블록 길이이다. 상태는 확률 매스 함수(pmf) 에 따라 분포되는 것으로 고려될 수 있고, 채널의 조건부 pmf들은 로 표기될 수 있다. 입력 비용 제한은 다음과 같이 표현될 수 있다:
입력 비용 제한 및 알려진 인코더를 이용한 채널 용량은 Gelfand-Pinsker 정리의 확장에 의해 결정될 수 있다(예를 들어, A. El Gamal and Y. Kim, Network Information Theory, Cambridge University Press, 2012, Equation 7.7 at p. 186 참조). 비용 제한은 Gamal 참조에서 조금 상이하게 정의될 수 있지만, 용량은 변경에 의해 실질적으로 영향받지 않을 수 있다.
[0066]
정리 4. ( 비용 제한을 갖는 Gelfand - Pinsker 정리)(예를 들어, 앞선 Gamal and Kim, Network Information Theory, Equation (7.7) at p. 186 참조). 상태 정보가 인코더에서만 넌-캐주얼하게 이용가능한 경우, DM 상태 를 갖는 개별적인 메모리 없는 채널의 용량(DMC), 및 입력 비용 제한 B는 다음과 같이 주어진다:
[0067]
본 명세서에 개시된 예시적인 코딩 방식은 정리 4에서 언급된 용량을 달성할 수 있다. 앞선 섹션과 유사하게, 보조 랜덤 변수 V가 이진수인 경우에 처리가 이용가능할 수 있다. 플래시 메모리에서, 이러한 경우는 메모리의 단일 레벨 셀(SLC) 타입에 대응할 수 있다. 위의 섹션 II, 비대칭 포인트-투-포인트 채널들에서 언급한 바와 같이, 비 이진수 경우(이는 다중 레벨 셀(MLC) 메모리에 대응할 것임)에 대한 설명된 방식의 확장이 가능하다. 이진 랜덤 변수에 대한 제한은 채널 출력 Y에 적용되지 않을 수 있다. 따라서, 저밀도 패리티 체크(LDPC) 코드들로서 알려진 코드들을 이용하여 플래시 메모리들에서 사용되는 소프트 디코딩 방법에 유사하게, 셀 전압이 디코더에서 더욱 정확하게 판독될 수 있어서, 코딩 성능을 향상시킬 수 있다.
[0068]
정리 4의 용량을 달성할 수 있는 예시적인 방식이, 이하에서 서브섹션 C, “Multicoding Construction without Degradation”에서 구조 C로서 섹션 III, 넌-캐주얼 인코더 상태 정보를 이용한 채널들에서 이하에서 설명된다. 용량 달성 결과는 이하의 정리, 정리 5에서 요약될 수 있다.
[0069]
정리 5. 구조 C는 낮은 계산상 복잡도로 비용 제한(정리 4)에 따라 Gelfand-Pinsker 정리의 용량을 획득한다.
[0070]
정리 4의 세팅의 예시적인 경우는, (상태 정보 없이) 입력 비용 제한을 갖는 채널 코딩의 세팅이다. 따라서, 정리 5는 또한, 구조 C가 입력 비용 제한에 따라 채널 코딩의 세팅의 용량을 달성할 수 있다는 것을 암시할 수 있다. 이러한 섹션 III에서, 플래시 메모리의 재기록에 유용한 Gelfand-Pinsker 모델의 특정한 두 경우들이 개시된다. 그 후, 섹션 III에서, 모델의 특정한 두 경우들에 대응하는 예시적인 구조 방식들의 두 버젼들이 설명될 것이다.
[0071]
A. 특정한 경우들
[0072]
우선, 플래시 메모리 재기록에 대한 매우 자연스런 모델인 예시적인 특정한 경우가 이하에서 설명될 것이다.
[0073]
예 1. 세트들 모두가 {0, 1}과 동일하다고 하고, 상태 확률 매스 함수(pmf)가 라고 하자. 이 모델은 단일 레벨 셀 플래시 메모리에 대응할 수 있다. s=0일 때, 셀은 이진 비대칭 채널로 거동할 수 있는데, 그 이유는 셀 상태가 기록 시도와 간섭하지 않을 수 있기 때문이다. s=1일 때, 시도된 실제 값에 무관하게, 셀은 1의 값이 기록되도록 시도된 것처럼 거동할 수 있다. 그러나 기록 프로세스 또는 이후의 임의의 시간 동안 에러가 여전히 발생할 수도 있다. 따라서, s=1일 때, 셀이 입력 "1"을 갖는 이진 비대칭 채널로 거동할 수 있다고 일컬어질 수 있다. 형식적으로, 채널 pmf들은 다음과 같이 주어질 수 있다:
[0075]
본 명세서에 개시된 코딩 방식은, 정리 4의 용량을 달성하는 Gelfand 및 Pinsker의 코딩 방식에서와 같이, 보조 변수 V에 기초할 수 있다. Gelfand-Pinsker 코딩 방식은 계산상 비능률적일 수 있다. 현재 개시된 기술들의 일 양상은 동일한 레이트를, 효율적인 계산으로 달성한다. 일반적인 Gelfand-Pinsker 세팅들에 대한 코딩 방식들의 구조는 더 많은 제한된 구조에 기초할 수 있다. 첫째, 제한된 구조가 설명될 것이다. 그 다음, 제한된 구조는 더 많은 일반적인 경우로 확장될 수 있다. 제한은 코드 설계에 대해 선택된 보조 변수 V와 관련될 수 있다. 제한은 이하에서 제공되듯이, 채널 저하로 불리는 특성에 적용될 수 있다.
[0076]
채널 저하에 대한 예. 예를 들어, Gamal and Kim, Network Information Theory, supra, at p. 112 참조. 개별 메모리 없는 채널(DMC) 은, 에 대해 확률적으로 저하(또는 단순히 저하)되고, W가 등식 을 만족하도록 가 존재하는 경우, 로 표기된다.
[0077]
본 명세서에 개시된 제 1 코딩 방식은 이하의 특성이 유지되는 채널들의 용량을 달성할 수 있다.
[0079]
예 1의 모델이 용량 최대화를 위한 특성의 저하 조건을 만족시키는 지는 알려지지 않는다. 그러나 모델의 "정확도"의 일부를 희생시키면서, 모델이 용량 최대화를 위한 특성을 만족시키도록 모델이 변경될 수 있다.
예를 들어, s=1이면, 채널 출력은 1일 수 있고, s=0이면 채널은 이진 대칭 채널로 거동할 수 있다. 이는 로직 "0"에서 로직 "1"로 셀 레벨을 변경하는 것에 대한 제한에 대응할 수 있다. 이러한 제한을 넘어선 확률론적 잡음 모델은 전체적으로 자연스럽지 않을 수 있고, 저하 조건을 만족시키기 위해 선택될 수 있다. 비용 제한은 로 주어질 수 있다.
[0081]
전술한 예 2의 모델은 용량 최대화에 대한 특성의 저하 조건을 만족시킬 수 있다. 이를 증명하기 위해, 정리 4에서 Gelfand-Pinsker 용량을 최대화하거나 그렇지 않으면 증가시키는 함수들 및 이 이러한 저하 조건을 만족시키기 위해 결정될 수 있다. 이러한 함수들은 이하의 정리들에서 구축될 수 있다.
[0082]
정리 6. 예 2의 채널의 용량은 다음과 같다:
[0083]
정리 6은 C. Heegard, “On The Capacity Of Permanent Memory,” IEEE Trans. Information Theory, Vol. 31, No. 1, pp. 34-42, January 1985; 정리 4에 유사할 수 있다. 정리 6의 증명은 이하의 첨부 A에 설명된다. 상한은 상태 정보가 디코더에서도 또한 이용가능하다는 가정에 의해 획득될 수 있고, 하한은 정리의 문구에 따라 함수들 및 을 세팅함으로써 획득될 수 있다. 예 2에서의 모델이 용량 최대화에 대한 특성의 저하 조건을 충족시킨다는 증명은 정리 6과 관련된 이하의 보조 정리에 의해 완성될 수 있다.
[0084]
보조 정리 6a. 예 2의 모델에 대한 정리 6의 기능들을 달성하는 용량은 용량 최대화에 대한 특성의 저하 조건을 충족시킨다. 즉, 채널 은 채널 과 관련하여 저하된다.
[0085]
보조 정리 6a는 아래의 첨부 B에 제공되며, 결과적으로, 예 2의 모델의 용량은 본 명세서에 개시된 예시적인 코딩 방식에 의해 달성될 수 있다. 다음 서브섹션에서, 예 2의 및 용량 최대화를 위한 특성을 충족시키는 임의의 모델의 용량을 달성할 수 있는 더 간단한 코딩 방식이 설명된다.
[0086]
B. 저하된 채널들을 위한 멀티코딩 구조
[0087]
섹션 2에서 논의되었던 비대칭 채널 코딩의 세팅은 용량 최대화를 위한 특성을 충족시킬 수 있다. 비대칭 채널 코딩의 경우, 상태는 결정론적 변수로서 간주될 수 있고, 결국 W는 (전술한) 채널 저하에 대한 정의마다 결정론적임은 물론, 그에 의해 용량 최대화에 대한 특성을 충족시키도록 선택될 수 있다. 이는 본 섹션에서 제시된 구조가 비대칭 채널에 대한 구조 A의 일반화일 수 있다는 것을 암시한다.
[0088]
구조는 Gelfand-Pinsker 방식과 유사한 체계를 가질 수 있다. 인코더는 우선, 구조 A에서 설명된 것과 유사한 방식으로 벡터 를 찾을 수 있으며, 여기서 랜덤 변수 가 로 대체되고, 랜덤 변수 가 로 대체된다. 랜덤 변수 V는, 등식 (6)에서 레이트 표현을 최대화하는 pmf들 에 따라 취해질 수 있다. 그 다음, 코드워드 에서 각각의 비트 가 등식(6)을 최대화하는 함수 에 의해 계산될 수 있다. 예 2의 모델을 사용하면, 함수 및 가 정리 6에 따라 사용될 수 있다. 마찬가지로, 등식(2)를 고려하면, 대체들은 코드들의 비대칭 레이트가 일 것이라고 암시하며, 이는 정리 4의 Gelfand-Pinsker 용량을 달성한다(Bhattacharyya 파라미터들에 대한 정리 2의 연결은 명제 1의 고려를 통해 달성될 수 있음). 코딩 방식은 이하와 같이 공식적으로 설명될 수 있다.
[0089]
구조 B. 이번 섹션은, 메시지를 인코딩하는 것의 출력으로서 코드워드를 생성하고, 입력 코드워드를 디코딩하는 것의 출력으로서 추정된 메시지를 생성하기 위해 인코딩 및 디코딩 방식들에 대한 예시적인 동작들을 제공하는 구조를 설명한다.
[0090]
예시적인 메시지 인코딩 방식
[0091]
예시적인 입력 디코딩 방식
구조 B의 비대칭적 성능이 이하의 정리에서 표명될 수 있다.
[0092]
정리 7. 용량 최대화에 대한 특성이 유지되면, 구조 B는 낮은 계산상 복잡도로 정리 4의 용량을 달성한다.
[0093]
정리 7의 증명은 첨부 C에 제공된다. 다음 서브섹션은 용량 최대화를 위한 특성이 저하 요건을 제거하기 위한 방법을 설명한다. 이는 또한 예 1의 더욱 현실적인 모델의 용량의 달성을 허용할 것이다.
[0094]
C. 저하 없는 멀티코딩 구조
[0095]
체이닝 아이디어가, 용량 최대화에 대한 특성의 저하 조건을 나타내지 않는 모델들의 용량을 달성하는, 앞선 Mondelli 및 Hassani, “Achieving Marton's Region For Broadcast Channels Using Polar Codes,”에 제안되었다. Modelli 등에서, 체이닝 아이디어가 브로드캐스트 통신 및 포인트-투-포인트 유니버셜 코딩의 상황에서 제시되었다. 체이닝 아이디어는 본 명세서에서, 예 1을 통해 플래시 메모리 재기록의 애플리케이션에 연결될 수 있다. 후속하는 체이닝 기술이 채널 용량에 대한 더 늦은 수렴의 가격으로 구현될 수 있고, 결국 더 낮은 비-점근적 코드 레이트가 실현될 수 있다는 것을 또한 주목해야 한다.
[0096]
저하된 채널들에 대해 구조 B의 특징은 사이드 채널에 통신될 세트 로부터 유래될 수 있다. 부분 이 n에 따라 소멸되면, 구조 B는 채널 용량을 달성할 수 있다. 부분 이 소멸되지 않는 경우에, 등식(2)와 유사하게, 세트는 다음과 같다:
[0097]
서브벡터 는 n개의 셀들의 추가의 코드 블록의 지수들 의 서브세트에 저장될 수 있다. 추가의 블록은 원래의 블록과 동일한 코딩 기술을 이용할 수 있다. 따라서, 추가의 블록은 추가의 메시지 비트들을 저장하기 위해 셀들의 대략 을 사용할 수 있고, 채널 용량이 근접될 수 있다. 그러나 추가의 블록은 세트 를 갖는 원래 블록과 동일한 어려움을 가질 수 있다. 이를 해결하기 위해, 전체 k개의 블록에서 전송하는 동일한 솔루션이 반복적으로 적용될 수 있는데, k개의 블록들 각각은 길이 n을 갖는다. 각각의 블록은 채널 용량에 접근할 수 있는 소스 메시지(또는 그 부분)를 저장할 수 있다. 블록 k의 “문제가 있는” 비트들이 또 다른 블록을 사용하여 저장될 수 있지만, 이러한 추가의 블록은 상태 정보를 고려하지 않고 코딩될 수 있어서, 동일한 어려움에 직면하지 않을 수 있다. 따라서, 마지막 블록은 레이트 손실을 유발할 수 있지만, 이러한 손실은 k의 큰 값들에 대해 소멸될 수 있는 부분(1/k) 일 수 있다. 이하의 설명에서, 예시적인 구조는 메시지의 j번째 블록의 지수 i를 로 표시할 수 있으며, 다른 벡터들에 대해서도 유사하다. 벡터들 그 자체는 또한 2차원, 예를 들어, 로 표시될 수 있다.
[0098]
구조 C. 본 섹션은 메시지를 인코딩한 것의 결과로서 코드워드를 생성하고 그리고 입력 코드워드를 디코딩한 것의 결과로서 추정된 메시지를 생성하도록 인코딩 및 디코딩 방식들에 대한 예시적인 연산들을 제공하는 구조를 설명한다.
[0100]
예시적인 메시지 인코딩 방식
[0101]
예시적인 입력 디코딩 방식
출력: 메시지 추정
[0102]
구조 B 및 C는 또한 Marton의 구역에서 브로드캐스트 채널들을 통해 통신하기 위해 사용될 수 있으며, 예를 들어, 앞선 Goela and Gastpar, “Polar Codes For Broadcast Channels”; 및 Mondelli et al., “Achieving Marton's Region For Broadcast Channels Using Polar Codes” 참조. 구조 B 및 C는 이러한 앞선 결과들을 향상시킬 수 있는데 그 이유는 이들이 선형 저장 요건을 갖는 용량을 입증가능하게 달성하기 때문이다.
[0103]
구조 C는 용량 최대화를 위한 특성의 저하 요건 없이, 낮은 복잡도로 정리 4의 용량을 달성할 수 있다. 이러한 결과는 정리 5에 명시되었다. 정리 5의 증명은 정리 7 및 레이트 손실이 k의 큰 값에 따라 소멸될 수 있다는 사실로부터 직접 도출된다. 구조 C는 적절한 용량 달성 함수 를 사용하여, 예 1의 플래시 메모리 재기록의 현실적인 모델에 유용할 수 있다.
[0104]
IV. 예시적인 실시예들
[0105]
이하의 설명들은 첨부한 도면의 예시에 관한 것이며, 여기서 도 1은 본 명세서에 개시된 바와 같은 데이터 메시지를 디코딩하기 위한 다양한 예들에 따라 구조된 메모리 디바이스에서 수행될 수 있는 동작들을 예시하는 흐름도이며, 특히 구조 A에 따른 코드워드로 데이터 값을 인코딩하기 위한 데이터 인코딩 동작들을 도시한다. 추가의 도면들에서, 도 2는 본 명세서에 개시된 바와 같이 데이터를 디코딩하기 위한 다양한 예들에 따라 구조된 메모리 디바이스에서 수행될 수 있는 동작들을 예시하고 특히 구조 A에 따라 코드워드로부터 데이터 값을 복원하기 위한 예시적인 디코딩 동작들을 표현하는 블록도이다. 도 3은 본 명세서에 설명된 바와 같이 데이터 메시지를 인코딩하기 위한 다양한 예들에 따라 구조된 메모리/데이터 디바이스에서 수행될 수 있는 동작들을 예시하고, 특히 예 1에 따라 데이터 값을 코드워드로 인코딩하기 위한 예시적인 데이터 인코딩 동작들을 나타내는 흐름도이다. 도 4는 본 명세서에 설명된 바와 같이 데이터 메시지를 디코딩하기 위한 다양한 예들에 따라 구조된 메모리 디바이스에서 수행될 수 있는 동작들을 예시하고, 특히 예 1에 따라 데이터 값을 코드워드로부터 복원하기 위한 예시적인 데이터 디코딩 동작들을 나타내는 흐름도이다. 도 5는 본 명세서에 설명된 바와 같이 데이터 메시지를 인코딩하기 위한 다양한 예들에 따라 구조된 메모리 디바이스에서 수행될 수 있는 동작들을 예시하고, 특히 예 2에 따라 데이터 값을 코드워드로 인코딩하기 위한 예시적인 데이터 인코딩 동작들을 나타내는 흐름도이다. 도 6은 본 명세서에 설명된 바와 같이 데이터 메시지를 디코딩하기 위한 다양한 예들에 따라 구조된 메모리 디바이스에서 수행될 수 있는 동작들을 예시하고, 특히 예 2에 따라 데이터 값을 코드워드로부터 복원하기 위한 예시적인 데이터 디코딩 동작들을 나타내는 흐름도이다. 도 1, 2, 3, 4, 5 및 6의 동작들은, 예를 들어, 추가로 이하에서 설명되는 도 7, 8 및 9에 예시된 디바이스 실시예들에 의해 수행될 수 있다.
[0106]
도 1은 통신 채널을 통해 수신된 메시지로부터 코드워드를 생성하기 위해 프로세서에 대해 현재 개시된 기술에 따라 구조된 데이터 디바이스를 동작시키는 예시적인 방법(100)을 도시한다. 전술한 바와 같이, 도 1의 동작들은, 예시적인 인코딩 방식을 위해 구조 A와 관련하여 전술된 기술에 대응할 수 있다. 방법(100)은 블록들(105, 110, 115, 120, 125 및 130) 중 하나 이상에 의해 예시된 바와 같이 하나 이상의 동작들, 조치들 또는 기능들을 포함할 수 있다. 도 1에서 개별적인 블록들로 도시되었지만, 다양한 블록들이, 특정 구현에 따라, 추가의 블록들로 분리되거나, 몇몇 블록들로 결합되거나, 추가의 블록으로 보충되거나, 변경되거나 제거될 수 있다.
[0107]
블록(105)에서, 프로세스가 시작될 수 있다. 다음 블록(110), "메시지 수신"이 블록(105)에 뒤따를 수 있으며, 여기서 입력 메시지 m이 수신될 수 있다. 몇몇 예들에서, 수신된 메시지 m이 인코딩되어 데이터 저장소에 저장될 것이며, 여기서 메시지 m은 메시지 채널을 통해 수신된 비트들의 시퀀스를 포함할 수 있고, 로 지정될 수 있다. 도 1의 블록(110) 이후에, 코드워드를 생성하기 위한 동작인, 블록(115)이 뒤따를 수 있다. 몇몇 예들에서, 코드워드 는 블록(115)에 예시된 동작들에 따라 비트마다 생성될 수 있다:
[0108]
블록(120)에 뒤이어 블록(125)이 뒤따를 수 있으며, 여기서 이전의 동작들에 의해 형성된 벡터 가 저장될 수 있다. 몇몇 예들에서, 블록(125)의 동작은 다음을 포함할 수 있다:
본 개시의 관점에서, 당업자는 균일한 입력 분포를 갖는 주지된 폴라 코드를 이용하여 벡터 를 저장하는 방법을 이해할 것이다. 메모리 디바이스의 동작은 블록(130)에서 추가의 동작으로 블록(125)으로부터 계속될 수 있다.
[0109]
도 1의 동작들은 인코딩될 값을 포함하는 메시지의 수신을 예시한다. 개시된 제한된 동작을 충족시키는 전술한 바와 같은 코드워드들이 생성될 수 있으며, 여기서, 일단 셀 값이 로직 "0"에서 로직 "1"로 변경되면, 대응하는 저장된 데이터 값이 변경되더라도, 이 셀의 값은 로직 "1"로 유지되도록, 코드워드들이 다수의 셀들에 의한 표현을 위해 구성된다.
[0110]
도 2는 통신 채널을 통해 수신된 메시지(예를 들어, 잡음 벡터)를 디코딩함으로써 추정된 메시지(예를 들어, 복원된 메시지)를 생성하기 위해 프로세서에 대해 현재 개시된 기술에 따라 구성된 데이터 디바이스를 동작시키는 예시적인 방법(200)을 도시한다. 즉, 도 2는 데이터 디바이스의 예시적인 동작을 도시하며, 여기서 인코딩된 데이터 값에 대응하는 이진 디지트들을 포함하는 메시지를 데이터 디바이스가 수신한다. 수신된 메시지는, 통신 채널에서 에러를 나타내는 잡음 항목과 함께, 인코딩된 원래의 소스 데이터 값으로서 추정될 수 있다. 전술한 바와 같이, 도 2의 동작들은, 예시적인 디코딩 방식을 위해 구조 A와 관련하여 전술된 기술에 대응할 수 있다. 방법200은 블록들(205, 210, 215, 220, 225, 및 230) 중 하나 이상에 의해 예시된 바와 같이 하나 이상의 동작들, 조치들 또는 기능들을 포함할 수 있다. 도 2에서 개별적인 블록들로 도시되었지만, 다양한 블록들이, 특정 구현에 따라, 추가의 블록들로 분리되거나, 몇몇 블록들로 결합되거나, 추가의 블록으로 보충되거나, 변경되거나 제거될 수 있다.
[0111]
블록(205)에서, 프로세스가 시작될 수 있다. 블록(205)에 뒤이어, 데이터 값을 복원하기 위해 디코딩될 벡터 를 포함할 수 있는, 입력 메시지가 수신되는, 다음 블록(210) "메시지...를 수신"이 뒤따를 수 있다. 벡터 는 데이터 메시지가 수신되는 데이터 채널로부터 잡음 항목을 포함하도록 표현될 수 있으며, 여기서 벡터 는 로서 표현될 수 있다. 블록(210)에 뒤이어 블록(215), "벡터 ...를 추정"이 뒤따르며, 여기서 원래 데이터 값을 나타내는 추정 값 는 비트와이즈 방식으로 생성될 수 있다. 몇몇 예들에서, 벡터 추정은 에 의해 벡터 를 추정함으로써 주어질 수 있다. 블록(215)에 뒤이어 블록(220), "벡터 ...를 추정"이 뒤따를 수 있다. 몇몇 실시예들에서, 추정 는 이하에 따라 비트마다 계산될 수 있다:
블록(220)에 뒤이어 블록(225), "추정된 메시지 을 리턴"이 뒤따르며, 여기서, 추정된 메시지 값 (추정된 원래 소스 데이터 값)이 결정되고 리턴될 수 있다. 몇몇 예들에서, 추정된 메시지는 다음과 같이 결정될 수 있다:
메모리 디바이스의 동작은 블록(230)에서 추가의 동작으로 계속될 수 있다.
[0112]
도 2의 데이터 동작들은 디코딩될 하나 이상의 값들을 포함하는 메시지를 수신할 수 있어서, 전술한 코드워드를 포함할 수 있는 메시지가 수신되고, 여기서 코드워드는 메모리 셀 입력 x 및 메모리 셀 출력 y를 갖는 비대칭 채널에 적합한 프로세스에서 생성되었고, 메모리 셀의 수는 n개 일 수 있다. 도 2의 동작들을 통해 달성될 수 있는 구조 A에 대해, 메모리 셀의 앞선 상태가 고려되지 않을 수 있다. 따라서, 수신된 코드워드가 디코딩될 수 있고 원래 저장된 값의 추정 m이 복원될 수 있도록, 일단 셀 값이 로직 "0"에서 로직 "1"로 변경되면, 이 셀의 값이 로직 "0" 또는 로직 "1" 중 하나로 재기록될 수 있도록, 코드워드들이 다수의 셀들에 의한 표현을 위해 구성될 수 있다.
[0113]
도 3은 통신 채널을 통해 수신된 메시지로부터 코드워드를 생성하기 위해 프로세서에 대해 현재 개시된 기술에 따라 구성된 데이터 디바이스를 동작시키는 예시적인 방법(300)을 도시한다. 방법(300)은 블록들(305, 310, 315, 320, 325, 및 330) 중 하나 이상에 의해 예시된 바와 같이 하나 이상의 동작들, 조치들 또는 기능들을 포함할 수 있다. 도 3에서 개별적인 블록들로 도시되었지만, 다양한 블록들이, 특정 구현에 따라, 추가의 블록들로 분리되거나, 몇몇 블록들로 결합되거나, 추가의 블록으로 보충되거나, 변경되거나 제거될 수 있다.
[0114]
블록(305)에서, 프로세스가 시작될 수 있다. 블록(305)에 뒤이어 다음 블록(310), "메시지 m... 및 상태 s... 수신"이 뒤따를 수 있으며, 여기서 입력 메시지 및 상태가 수신될 수 있다. 몇몇 예들에서, 메시지 m이 인코딩되어 데이터 저장소에 저장되며, 메시지 m은 로 지정될 수 있고, 상태 s는 로 지정될 수 있다. 블록(310)에 뒤이어 블록(315)가 뒤따를 수 있고, 여기서 코드워드가 생성될 수 있다. 몇몇 예들에서, 코드워드 는 블록(315)에 예시된 동작들에 따라 비트마다 생성될 수 있다:
블록(315)에 뒤이어 블록(320)이 뒤따르며, 여기서 값 v는 이하에 따라 계산될 수 있다:
[0115]
블록(320)에 뒤이어 블록(325)이 뒤따를 수 있으며, 여기서 이전의 동작들에 의해 형성된 벡터 가 저장될 수 있다. 몇몇 예들에서, 블록(325)의 동작은 다음을 포함할 수 있다:
본 개시의 관점에서, 당업자는 균일한 입력 분포를 갖는 주지된 폴라 코드를 이용하여 벡터를 저장하는 방법을 이해할 것이다. 메모리 디바이스의 동작은 블록(325)에서 추가의 동작으로 블록(330)으로부터 계속될 수 있다.
[0116]
도 3의 동작들은 인코딩될 값을 포함하는 메시지의 수신을 예시한다. 개시된 제한된 동작을 충족시키는 전술한 바와 같은 코드워드들이 생성될 수 있으며, 여기서, 일단 셀 값이 로직 "0"에서 로직 "1"로 변경되면, 대응하는 저장된 데이터 값이 변경되더라도, 이 셀의 값은 로직 "1"로 유지되도록, 코드워드들이 다수의 셀들에 의한 표현을 위해 구성된다.
[0117]
도 4는 통신 채널을 통해 수신된 메시지(예를 들어, 잡음 벡터)를 디코딩함으로써 추정된 메시지(예를 들어, 복원된 메시지)를 생성하기 위해 프로세서에 대해 현재 개시된 기술에 따라 구성된 데이터 디바이스를 동작시키는 예시적인 방법(400)을 도시한다. 예를 들어, 도 4는 데이터 디바이스의 예시적은 동작을 도시하며, 여기서 데이터 디바이스는, 통신 채널에서 에러를 표현하는 잡음과 함께, 인코딩된 데이터 값에 대응하는 이진 디지트들을 포함하는 메시지를 수신할 수 있다. 전술한 바와 같이, 도 4의 동작들은, 예 1과 관련하여 전술된 디코딩 기술에 대응할 수 있다. 방법(400)은 블록들(405, 410, 415, 420, 425, 및 430) 중 하나 이상에 의해 예시된 바와 같이 하나 이상의 동작들, 조치들 또는 기능들을 포함할 수 있다. 도 4에서 개별적인 블록들로 도시되었지만, 다양한 블록들이, 특정 구현에 따라, 추가의 블록들로 분리되거나, 몇몇 블록들로 결합되거나, 추가의 블록으로 보충되거나, 변경되거나 제거될 수 있다.
[0118]
블록(405)에서, 프로세스가 시작될 수 있다. 블록(405)에 뒤이어 다음 블록(410), "메시지...를 수신"이 뒤따를 수 있고, 여기서 데이터 값을 복원하기 위해 디코딩될 벡터 y 를 포함하는 입력 메시지가 수신된다. 벡터 y 는 데이터 메시지가 수신되는 통신 채널로부터 잡음을 포함할 수 있고, 여기서 벡터 y는 로서 표현될 수 있다. 블록(410)에 뒤이어 블록(415), "벡터 ...를 추정"이 뒤따르며, 여기서 원래 데이터 값을 나타내는 추정 값 는 비트와이즈 방식으로 생성될 수 있다. 몇몇 예들에서, 벡터 추정은 에 의해 벡터 를 추정함으로써 주어질 수 있다. 블록(415)에 뒤이어 블록(420), "벡터 ...를 추정"이 뒤따를 수 있다. 일부 예들에서, 1에서 n까지의 각각의 에 대해,
와 같이 에 의해 을 추정하는 것에 따라 벡터 추정이 비트마다 계산될 수 있다. 블록(420)에 뒤이어 블록(425), "추정된 메시지 m을 리턴"이 뒤따르며, 여기서, 추정된 메시지 값 m(추정된 원래 소스 저장된 값)이 결정되고 리턴될 수 있다. 몇몇 예들에서, 추정된 메시지는 다음과 같이 결정될 수 있다:
메모리 디바이스의 동작은 블록(430)에서 추가의 동작으로 계속될 수 있다.
[0119]
도 4의 데이터 동작들이 디코딩될 하나 이상의 값들을 포함하는 메시지를 수신할 수 있어서, 전술한 바와 같이 코드워드를 포함할 수 있는 메시지가 수신되며, 여기서 코드워드는 설명된 제한된 동작을 충족시킬 수 있는 프로세스에서 생성되었으며, 여기서 일단 셀 값이 로직 "0"에서 로직 "1"로 변경되면, 대응하는 저장된 데이터 값이 변경되더라도 이 셀의 값이 로직 "1"로 유지될 수 있도록 다수의 셀들에 의한 표현을 위해 코드워드들이 구성될 수 있다. 수신된 코드워드가 디코딩될 수 있고, 원래 저장된 값의 추정 m이 복원될 수 있다.
[0120]
도 5는 데이터 메시지를 인코딩하기 위한 다양한 예들에 따라 구성된 메모리 디바이스에서 동작들을 수행하기 위해 현재 개시된 기술에 따라 구성된 데이터 디바이스를 동작시키는 예시적인 방법(500)을 도시하며, 특히 데이터 값을 예 2에 따라 코드워드로 인코딩하기 위한 예시적인 데이터 인코딩 동작들을 나타낸다. 방법(500)은 블록들(505, 510, 515, 520, 525 및 550) 중 하나 이상에 의해 예시된 바와 같이 하나 이상의 동작들, 조치들 또는 기능들을 포함할 수 있다. 도 5에서 개별적인 블록들로 도시되었지만, 다양한 블록들이, 특정 구현에 따라, 추가의 블록들로 분리되거나, 몇몇 블록들로 결합되거나, 추가의 블록으로 보충되거나, 변경되거나 제거될 수 있다.
[0121]
블록(505)에서, 프로세스가 시작될 수 있다. 블록(505)에 뒤이어 다음 블록(510)이 뒤따를 수 있고, 여기서 입력 데이터 메시지가 수신될 수 있고, 이 메시지는 값 m 및 상태 s를 포함하며, m은 인코딩되어 데이터 저장소에 저장될 값이며, 메시지 및 상태 는 입력으로서 수신될 수 있으며, 에 대해 크기 인 의 임의의 서브세트이다. 블록(510)에 뒤이어 블록(515)이 뒤따를 수 있으며, 여기서 블록(515)에서 설명된 동작들에 따라, 코드워드 가 비트마다 생성될 수 있다:
블록(515)에 뒤이어 블록(520)이 뒤따를 수 있고, 여기서 값 v는 이하에 따라 계산될 수 있다:
[0122]
블록(520)에 뒤이어 블록(525)이 뒤따를 수 있으며, 여기서 이전의 동작들에 의해 형성된 벡터 가 저장될 수 있다. 블록(525)의 동작은 다음을 포함할 수 있다:
본 개시의 이득을 갖는 당업자는 균일한 입력 분포를 갖는 주지된 폴라 코드를 이용하여 벡터를 저장하는 방법을 이해할 것이다. 메모리 디바이스의 동작은 블록(550)에서 계속될 수 있다.
[0123]
따라서, 도 5의 데이터 동작들은 인코딩될 값을 포함하는 데이터 메시지를 수신할 수 있고, 그 다음 개시된 제한된 동작을 충족시키는 전술한 바와 같은 코드워드들이 생성될 수 있으며, 여기서, 일단 셀 값이 로직 "0"에서 로직 "1"로 변경되면, 대응하는 저장된 데이터 값이 변경되더라도, 이 셀의 값은 로직 "1"로 유지되도록, 코드워드들이 다수의 셀들에 의한 표현을 위해 구성된다.
[0124]
도 6은 데이터 메시지를 디코딩하기 위한 다양한 예들에 따라 구성된 메모리 디바이스에서 동작들을 수행하기 위해 현재 개시된 기술에 따라 구성된 데이터 디바이스를 동작시키는 예시적인 방법(600)을 도시하며, 특히 예 2에 따라 코드워드를 추정된 복원 데이터 값으로 디코딩하기 위한 예시적인 데이터 디코딩 동작들을 나타낸다. 예를 들어, 도 6은 데이터 디바이스의 예시적은 동작을 도시하며, 여기서 데이터 디바이스는, 통신 채널에서 에러를 표현할 수 있는 잡음과 함께, 인코딩된 데이터 값에 대응할 수 있는 이진 디지트들을 포함하는 메시지를 수신할 수 있다. 방법(600)은 블록들(605, 610, 615, 620, 625 및 630) 중 하나 이상에 의해 예시된 바와 같이 하나 이상의 동작들, 조치들 또는 기능들을 포함할 수 있다. 도 6에서 개별적인 블록들로 도시되었지만, 다양한 블록들이, 특정 구현에 따라, 추가의 블록들로 분리되거나, 몇몇 블록들로 결합되거나, 추가의 블록으로 보충되거나, 변경되거나 제거될 수 있다.
[0125]
블록(605)에서, 프로세스가 시작될 수 있다. 블록(605)에 뒤이어 다음 블록(610)이 뒤따를 수 있으며, 여기서 입력 데이터 메시지가 수신될 수 있고, 메시지는 데이터 값을 복원하기 위해 디코딩될 벡터 값 y를 포함하며, y는 데이터 메시지가 수신되는 데이터 채널로부터 잡음 및 잡음 벡터 를 포함할 수 있고, 도 6의 동작들은 원래 소스 저장된 값을 포함하는 데이터 값 m 또는 추정된 메시지를 리턴할 수 있다. 블록(610)에 뒤이어 블록(615)이 뒤따를 수 있고, 여기서 원래 데이터 값을 나타내는 추정된 값 가 비트마다 생성될 수 있고, 벡터 추정은 에 의해 벡터 를 추정하고 라고 함으로써 주어질 수 있다. 블록(615)에 뒤이어 블록(620)이 뒤따를 수 있고, 여기서 블록(620)에 예시된 3개의 동작들 중 하나에 따라, 추정 가 비트마다 계산될 수 있다:
블록(620)에 뒤이어 블록(625)이 뒤따를 수 있고, 여기서, 추정된 메시지 값 m(추정된 원래 소스 저장 값)이, 리턴될 수 있는 추정된 메시지 이도록 계산에 따라 리턴될 수 있다. 메모리 디바이스의 동작은 블록(630)에서 추가의 동작으로 계속될 수 있다.
[0126]
따라서, 도 6의 데이터 동작들은 디코딩될 값을 포함하는 데이터 메시지를 수신할 수 있어서, 앞서 개시된 바와 같이 코드워드가 수신될 수 있고, 설명된 제한된 동작을 충족시키는 프로세스에서 코드워드들이 생성될 수 있으며, 여기서, 일단 셀 값이 로직 "0"에서 로직 "1"로 변경되면, 대응하는 저장된 데이터 값이 변경되더라도, 이 셀의 값은 로직 "1"로 유지되도록, 코드워드들이 다수의 셀들에 의한 표현을 위해 구성된다. 수신된 코드워드가 디코딩될 수 있고 원래 저장된 값의 추정 m이 복원될 수 있다.
[0127]
도 7은 현재 개시된 기술에 따라 구성된 메모리 디바이스의 일 실시예의 예시이다. 메모리 디바이스, 예컨대 도 7의 데이터 디바이스(708)는 메모리(702) 및 메모리 제어기(704)를 포함할 수 있고, 호스트 디바이스(706)에 커플링될 수 있다. 메모리(702) 및 호스트 디바이스(706)는 각각 메모리 제어기(704)에 커플링될 수 있다. 메모리 제어기(704)는 메모리의 인터페이스(712), 호스트 인터페이스(714), 데이터의 버퍼(716), 에러 정정 코드(ECC) 블록(718) 및 프로세서(710)를 포함할 수 있다. 호스트 디바이스(706)는 메모리 제어기(704)의 호스트 인터페이스(714)에 커플링될 수 있다. 프로세서(710)는 마이크로제어기, 마이크로프로세서, 프로세서 코어, 맞춤 설계된 로직, 또는 본 개시의 다양한 양상들에 따라 메모리 인터페이스(712) 및 호스트 인터페이스(714)와 협력하도록 구성될 수 있는 임의의 다른 적절한 디바이스로서 구현될 수 있다.
[0128]
도 7은 메모리(702)가, 호스트 디바이스(706)와 통신하도록 또한 배열되는 메모리의 제어기(704)에 의해 액세스될 수 있음을 도시한다. 메모리(702)는 본 명세서에 기재된 것과 같은 블록 소거 방지 방식에 따라 표현된 데이터를 저장하는 데 사용될 수 있다.
메모리(702)는 예를 들어, 복수의 메모리 셀들을 갖는 플래시 메모리 디바이스로서 구현될 수 있고, 여기서 하나 이상의 이진 디지트들(비트들)을 포함하는 데이터가 저장될 수 있다.
[0129]
메모리(702) 및 메모리 제어기(704)는 호스트 디바이스(706) 외부에 있거나 단일 컴포넌트 또는 시스템으로 호스트 디바이스(706)와 통합될 수 있는 데이터 디바이스(708)로서 협력적으로 동작할 수 있다. 예를 들어, 데이터 디바이스(708)는, USB 연결을 통해, 호스트 컴퓨터로서 실현되는 호스트 디바이스(706)와 통신하는 플래시 메모리 디바이스(예컨대, "썸 드라이브")를 포함할 수 있거나, 데이터 디바이스(708)는 호스트 컴퓨터용 데이터를 저장하는 솔리드 스테이트 드라이브(SSD) 디바이스를 포함할 수 있다. 대안적으로, 데이터 디바이스(708)는 스마트 폰, 네트워크 라우터, MP3 플레이어 또는 기타 디바이스와 같이, 메모리가 블록 소거 방지 방식을 채용하는 단일 시스템 또는 컴포넌트를 포함하도록 적합한 호스트 디바이스(706)와 통합될 수 있다.
[0130]
메모리 제어기(704)는, 메모리 인터페이스(712)를 통해 메모리(702)와의 통신을 관리하도록 구성될 수 있는 프로세서(710)의 제어 하에서 동작할 수 있다. 프로세서(710)는 호스트 인터페이스(714)를 통해 호스트(706) 디바이스와의 통신을 관리하도록 또한 구성될 수 있다. 따라서, 메모리 제어기(704)는 호스트 디바이스(706)와 메모리(702) 사이의 데이터 전송을 관리하도록 구성될 수 있다. 메모리 제어기(704)는 또한, 메모리(702)와 호스트 디바이스(706) 사이의 송신을 위해 데이터 값들이 일시적으로 저장될 수 있는 데이터의 버퍼(716)를 포함한다. 메모리 제어기(704)는 또한, 데이터가 유지될 수 있는 에러 정정 코드(ECC) 블록(718)을 포함할 수 있다. 예를 들어, ECC 블록(718)은 블록 소거 방지 방식을 위해 에러 정정 및 데이터 인코딩/디코딩 동작들을 수행하기 위해 데이터 및 프로그램 코드를 포함할 수 있는 저장소 디바이스로 구현될 수 있다. ECC 블록(718)은, 메모리(702)에 사용될 에러 정정 코드를 위한 파라미터들, 예컨대 수신된 심볼들과 에러 정정 심볼들 사이의 전환을 위해 프로그래밍된 동작들을 포함할 수 있거나, ECC 블록은 코드워드들 또는 다른 데이터를 위한 룩업 테이블들을 포함할 수 있는 식이다. 본 명세서에 설명된 컴포넌트들 사이에서 송신 및 전달되는 심볼들, 코드워드, 데이터 등은, 복수의 이진 디지트들("비트들")을 포함할 수 있다. 메모리 제어기(704)는 데이터를 디코딩하고 그리고 데이터를 인코딩하기 위해 전술된 동작들을 수행할 수 있다. 데이터 버퍼(716), ECC(718) 및 프로세서(710)는 호스트 인터페이스(714) 및 메모리 인터페이스(712)와 상호 연결 및 링크될 수 있다. 실시예들과 관련하여 설명된 컴포넌트들 사이의 모든 연결들 및 인터페이스들(712, 714)은, 예를 들어, 복수의 물리적 회로 연결들, 예컨대 복수의 전기-도전성 연결들을 포함할 수 있다. 컴포넌트들 사이의 연결들은 또한 또는 대안적으로, 예를 들어, 광 연결들, 라디오 주파수 연결들, 및 컴포넌트들 사이에서 비트들을 통신, 전송 및 전달하기 위한 다른 기술들을 포함할 수 있다.
[0131]
데이터 디바이스를 동작시키기 위해, 디바이스로부터 데이터를 판독하기 위해, 데이터 디바이스를 프로그래밍하기 위해 전술한 동작들과 인코딩 및 디코딩은 도 1 내지 6에 도시된 동작들에 의해, 그리고/또는 프로세서(710)와 데이터 디바이스(708)의 관련된 컴포넌트들에 의해 수행될 수 있는 다른 동작들에 의해 수행될 수 있다. 예를 들어, USB 썸 드라이브에서의 블록 소거 방지 방식의 구현에서, 도 7에 도시된 데이터 디바이스(708)의 모든 컴포넌트들이 USB 썸 드라이브 내에 포함될 수 있다.
[0132]
프로세싱 컴포넌트들, 예컨대 메모리 제어기(704) 및 프로세서(710)는 소프트웨어 또는 하드웨어 또는 이 둘의 결합에서 제어 로직의 형태로 다양한 실시예들에 따라 구현될 수 있으며, 프로그램 메모리, 또는 펌웨어 등으로부터 소프트웨어 프로그램 명령들을 실행하는 프로세서들을 포함할 수 있다. 호스트 디바이스(706)는 컴퓨터 장치를 포함할 수 있다. 컴퓨터 장치는 또한, 도 1-6의 동작들 및/또는 몇몇 실시예들에서 다른 동작들을 수행할 수 있다.
[0133]
도 8은 도 7에 묘사된 바와 같은 메모리 디바이스와 통신하기 위해 도 1-6의 동작들을 수행하기 위한 예시적인 컴퓨터 장치의 블록도이다. 예를 들어, 도 8은, 호스트 디바이스(예컨대, 호스트 디바이스(706))로서 수행하기에 충분하고 도 1-6의 동작들 및/또는 다른 동작들을 수행하기에 충분한 컴퓨터 시스템(800)의 블록 다이어그램이다. 컴퓨터 시스템(800)은 현재 개시된 기술의 실시예들을 통합하고 본 명세서에 설명된 동작들을 수행할 수 있다. 컴퓨터 시스템(800)은 전형적으로, 하나 이상의 프로세서들(805), 시스템 버스(810), 메모리 서브시스템(820) 및 파일 저장소 서브시스템(825)을 포함하는 저장소 서브시스템(815), 사용자 인터페이스 출력 디바이스들(830), 사용자 인터페이스 입력 디바이스들(835), 통신 서브시스템(840) 및 다른 컴포넌트들을 포함할 수 있으며, 이들 모두는 서로 동작가능하게 커플링될 수 있다.
[0134]
다양한 실시예들에서, 컴퓨터 시스템 (800)은 하나 이상의 프로세서들(805)과 같은 컴퓨터 컴포넌트들을 포함할 수 있다. 파일 저장소 서브 시스템(825)은 다양한 메모리 저장소 디바이스들, 예컨대, 메모리 서브시스템(820)의 리드 온리 메모리(ROM) (845) 및 랜덤 액세스 메모리(RAM)(850), 및 직접 액세스 저장소 디바이스, 예컨대 디스크 드라이브들을 포함할 수 있다. 주지된 바와 같이, 직접 액세스 저장소 디바이스는, 본 명세서에 설명된 바와 같이 동작하는 블록 소거 방지 데이터 디바이스를 포함할 수 있다.
[0135]
사용자 인터페이스 출력 디바이스들(830)은, 평판 디스플레이들, 터치스크린들, 표시 등, 오디오 디바이스들, 힘 피드백 디바이스들 또는 다른 장치들을 포함하는 다양한 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들(835)은 컴퓨터 마우스, 트랙볼, 트랙패드, 조이스틱, 무선 원격, 드로잉 태블릿, 음성 명령 시스템, 눈 트래킹 시스템 또는 다른 디바이스들을 포함하는 다양한 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들(835)은, 사용자 인터페이스 출력 디바이스들(830) 상에 나타나는 객체들, 아이콘들, 텍스트 등을 버튼의 클릭 등과 같은 명령을 통해, 사용자가 전형적으로 선택하게 할 수 있다.
[0136]
통신 서브시스템(840)의 실시예들은 전형적으로, 이더넷 카드, 모뎀(전화, 위성, 케이블, ISDN), (비동기) DSL(digital subscriber line) 유닛, 파이어와이어(IEEE 1394) 인터페이스, USB 인터페이스 또는 다른 디바이스들을 포함한다. 예를 들어, 통신 서브 시스템(840)은, 통신 네트워크들 및 다른 외부 시스템들(855)(예를 들어, LAN이나 인터넷과 같은 네트워크)에, 파이어와이어 버스에, 또는 기타에 커플링될 수 있다. 다른 실시예들에서, 통신 서브시스템(840)은 컴퓨터 시스템(800)의 마더보드 상에 물리적으로 통합될 수 있거나, 소프트웨어 프로그램, 이를 테면, 소프트 DSL을 포함할 수 있거나 하는 식이다.
[0137]
RAM(850) 및 파일 저장소 서브시스템(825)은, 데이터, 예컨대,실행가능한 컴퓨터 코드, 휴먼 판독 가능 코드 등을 포함하여, 하나 이상의 프로세서들에 의한 실행에 응답하여 본 명세서에 설명된 동작들을 수행하기 위한 프로그램 명령들, 코드워드들 및 에러 정정 코드 파라미터들을 저장하도록 구성된 유형의 비일시적 매체의 예들이다. 유형의 비일시적 매체의 다른 타입들은 프로그램 제품 매체, 예컨대 플로피 디스크들, 착탈식 하드 디스크들, 광 저장소 매체, 예컨대 CD들, DVD들 및 하드 코드 매체, 반도체 메모리들 예컨대 플래시 메모리들, 리드 온리 메모리(ROM)들, 배터리 기반(battery-backed) 휘발성 메모리들, 네트워킹된 저장소 디바이스들 등을 포함할 수 있다. 파일 저장소 서브시스템(825)은, 프로세서들(805)에 의한 동작 및 실행을 위해, 프로그램 물건 매체로부터 저장소 서브시스템(815)을 데이터를 전달할 수 있는 판독기 서브시스템들을 포함할 수 있다.
[0138]
컴퓨터 서브시스템(800)은 또한, DNS, TCP/IP, UDP/IP 및 HTTP/HTTPS 프로토콜들 등과 같은 네트워크(예를 들어, 통신 네트워크 및 다른 시스템들(855))를 통한 통신을 이네이블하는 소프트웨어를 포함할 수 있다. 다른 실시예들에서, 다른 통신 소프트웨어 및 전송 프로토콜들, 예를 들어, IPX 등이 사용될 수 있다.
[0139]
많은 다른 하드웨어 및 소프트웨어 구성들이 현재 개시된 기술에 사용하기에 적합하다. 예를 들어, 컴퓨터 시스템(800)은 데스트탑, 포터블, 랙 마운티드 또는 태블릿 구성을 가질 수 있다. 추가적으로, 컴퓨터 시스템(800)은 네트워킹된 컴퓨터들의 시리즈일 수 있다. 또한, 다양한 마이크로프로세서들이 고려되고, 하나 이상의 프로세서들(805), 예컨대, 미국 캘리포니아 산타 클라라 소재 인텔사의 PENTIUM™ 마이크로프로세서; 미국 캘리포니아 서니베일 소재 Advanced Micro Devices Inc.의 OPTERON™ 또는 ATHLON XP™ 마이크로프로세서 등에 적합하다. 추가로, 미국 워싱톤 레드몬드 소재 Microsoft Corporation의 WINDOWS?, WINDOWS XP?, WINDOWS VISTA? 등, 미국 캘리포니아 산타 클라라의 Sun Microsystems, Inc의 SOLARIS?, 다양한 Linux 및 UNIX 분포 등과 같은 다양한 운영 체재가 고려되고 적합하다. 또 다른 실시예들에서, 전술한 기술들은 칩 또는 보조 프로세싱 보드(예를 들어, 프로그램가능한 로직 디바이스 또는 그래픽 프로세서 유닛) 상에서 구현될 수 있다.
[0140]
현재 개시된 기술들은 소프트웨어 또는 하드웨어 또는 이 둘의 결합에서 제어 로직의 형태로 구현될 수 있다. 제어 로직은, 현재 개시된 기술의 실시예들에 개시된 동작들의 세트를 수행하도록 명령 프로세싱 디바이스에 지시하도록 적응되는 복수의 명령들로서 정보 저장 매체에 저장될 수 있다. 본 개시 및 본 명세서에 제공된 기술들에 기초하여, 현재 개시된 기술을 구현하기 위한 다른 방식들 및/또는 방법들이 가능하다.
[0141]
본 명세서에 개시된 블록 소거 방지 방식들은 송신 및 저장을 위해 데이터를 인코딩 및 디코딩하기 위한 다양한 시스템들에서 구현될 수 있다. 즉, 코드워드들이 블록 소거 방지 방식에 따라 정보 채널을 통해 소스로부터 수신될 수 있고 이들의 대응하는 데이터 값들로 디코딩될 수 있고 목적지, 예컨대 메모리 또는 프로세서에 제공될 수 있으며, 저장 또는 송신을 위한 데이터 값들이 정보 채널을 통해 소스로부터 수신될 수 있고 블록 소거 방지 방식으로 인코딩될 수 있다.
[0142]
블록 소거 방지 방식에 따라 데이터를 인코딩 및 디코딩하는 동작들이 도 9에서와 같이 도시될 수 있으며, 이는 본 명세서에 설명된 블록 소거 방지 방식들에 따라 동작하는 메모리 디바이스(902)에서의 데이터 흐름을 도시한다. 도 9에서, 디바이스는, 블록 소거 방지 방식을 사용하여 정보 값들(906)을 저장 및 리트리브하도록 구성될 수 있는 데이터 변조(DM) 제어기(904)를 포함한다. DM 제어기(904)는 데이터 값들을 코드워드들로 인코딩하고 코드워드들을 데이터 값으로 디코딩하기 위한 인코더/디코더(908)를 포함할 수 있다. DM 제어기(904)는 데이터 값들을 인코딩할 수 있고, 소스/목적지 블록(910)으로 코드워드들을 제공할 수 있고, 소스/목적지 블록(910)으로부터 코드워드들을 디코딩할 수 있고 대응하는 데이터 값들을 제공할 수 있다. 데이터 흐름의 양방향 성질이 "데이터 값들"(912) 및 "코드워드들"(914)로 라벨링된 양방향 화살표들로 표시된다. DM 제어기(904)는 인터페이스들을 포함하며, 이를 통해 DM 제어기(904)는 데이터 값들 및 정보 값들(코드워드들)을 수신 및 제공할 수 있다. 화살표들(912, 914)은 인터페이스들을 나타내며, 이를 통해 데이터 값들 및 코드워드들이 수신 및 제공될 수 있고, 이는 집합적으로 통신 채널들을 포함할 수 있다.
[0143]
정보 값들(906)은 데이터 값들 및 코드워드들을 포함하는 데이터를 물리적으로 표현하기 위해 컴포넌트(들)를 포함할 수 있다. 예를 들어, 정보 값들(906)은 메모리 셀들의 전하 레벨들을 나타낼 수 있어서, 다수의 셀들이 가상 셀로서 동작하도록 구성될 수 있으며, 가상 셀에서 셀들의 전하 레벨들은 블록 소거 방지 방식들의 치환을 결정할 수 있다. 데이터 값들이 수신되어 블록 소거 방지 방식의 치환에 대해 인코더/디코더(908)에 의해 인코딩될 수 있고 셀들의 전하 레벨들이 상응하게 조정될 수 있고, 코드워드들은 셀 전하 레벨들 ―이로부터 대응하는 데이터 값이 결정될 수 있음― 에 따라 인코더/디코더(908)에 의해 결정될 수 있다. 대안적으로 또는 부가적으로, 정보 값들(906)은 송신된 신호, 예컨대, 신호 주파수, 크기 또는 지속 기간의 특징들을 나타낼 수 있어서, 셀들 또는 빈들이 신호 특징들에 의해 정의될 수 있고 블록 소거 방지 방식들의 치환을 결정할 수 있다. 셀들의 물리적 표현을 위한 다른 방식들이 본 명세서의 설명의 관점에서 가능하다.
[0144]
본 개시는, 다양한 양상들의 예시들로서 의도된, 본 출원에서 개시된 특정 실시예들의 관점으로 제한되어서는 안 된다. 많은 변경들 및 변화들이 그 사상 및 범위를 벗어나지 않고 행해질 수 있다. 본 명세서에 얼거된 것 외에도, 본 개시의 범위 내의 기능적으로 동일한 방법들 및 장치들이 전술한 설명들로부터 가능하다. 이러한 변경들 및 변화들이 첨부된 청구항들의 범위 내에 속하도록 의도된다. 본 개시는, 첨부된 청구항들이 자격을 주는 등가물의 전체 범위와 함께, 첨부된 청구항들에 의해서만 제한되어야 한다. 본 개시는, 물론 변할 수 있는, 특정 방법들, 반응물들, 화합물들, 조성물들 또는 생물학적 시스템들에 제한되지 않는다. 본 명세서에 이용된 용어는 특정 실시예들만을 설명하기 위한 것이며 제한하려고 의도되지 않는다.
[0145]
본 명세서의 실질적으로 임의의 복수 및/또는 단수 항목들의 사용에 관하여, 기술 분야의 당업자는, 상황 및/또는 애플리케이션에 적절한 경우, 복수로부터 단수로 변환할 수 있고 그리고/또는 단수로부터 복수로 변환할 수 있다. 다양한 단수/복수 치환들이 명확화를 위해 본 명세서에 명확하게 설명될 수 있다.
[0146]
일반적으로, 본 명세서, 및 특히 첨부된 청구항들(예를 들어, 첨부된 청구항들의 본문)에 사용된 용어들은 일반적으로 "개방적인" 용어로서 의도된다(예를 들어, "포함"이라는 용어는 "포함하지만 제한적이지 않은"으로 해석되어야 하고, "갖는"이라는 용어는 "적어도 갖는"으로 해석되어야 하며, "구비"라는 용어는 "구비하지만 제한하지 않는"으로 해석되는 식이다). 제출된 청구항 열거의 특정한 번호가 의도되면, 이러한 의도는 청구항에서 명시적으로 열거될 것이며, 이러한 인용의 부재시 이러한 의도는 존재하지 않는다. 예를 들어, 이해를 위한 의도로서, 청구항 인용의 삽입을 위해, 이하의 첨부된 청구항들은 "적어도 하나" 및 "하나 이상"이라는 서론 문구의 사용을 포함할 수 있다. 그러나 이러한 문구들의 사용은, 동일한 청구항이 "하나 이상" 또는 "적어도 하나"라는 서론 문구 및 부정 관사들(예를 들어, 부정 관사는 "적어도 하나" 또는 "하나 이상"을 의미하도록 해석되어야 함)을 포함하더라도, 부정관사에 의한 청구항 열거의 제출이, 단지 하나의 이러한 열거를 포함하는 실시예들에 대해 이러한 제출된 청구항 열거를 포함하는 임의의 특정 청구항을 제한한다고 암시하도록 구성되어서는 안 되며; 청구항 열거를 제출하기 위해 사용되는 정관사들의 사용에 대해서도 마찬가지이다. 게다가, 제출된 청구항 열거의 특정 번호가 명확하게 열거되면, 이러한 열거는 적어도 열거된 번호를 의미하도록 해석되어야 한다(예를 들어, 다른 수식어구 없이, "두 개의 열거"의 기본적인 열거는 적어도 두 개의 열거들 또는 둘 이상의 열거들을 의미한다). 더욱이, "A ,B 및 C 등 중 적어도 하나"와 유사한 컨벤션이 사용되는 이러한 예들에서, 일반적으로 이러한 구성은 컨벤션(예를 들어, "A, B 및 C 중 적어도 하나를 갖는 시스템"이 제한적이지 않게, A만, B만, C만, A와 B를 함께, A와 C를 함께, B와 C를 함께, 그리고/또는 A, B 및 C를 함께, 등을 갖는 시스템들에 포함될 것임)에 대해 이해되는 것과 같은 관점에서 의도된다. "A ,B 또는 C 등 중 적어도 하나"와 유사한 컨벤션이 사용되는 이러한 예들에서, 일반적으로 이러한 구성은 컨벤션(예를 들어, "A, B 또는 C 중 적어도 하나를 갖는 시스템"이 제한적이지 않게, A만, B만, C만, A와 B를 함께, A와 C를 함께, B와 C를 함께, 그리고/또는 A, B 및 C를 함께, 등을 갖는 시스템들에 포함될 것임)에 대해 이해되는 것과 같은 관점에서 의도된다. 상세한 설명이든, 청구항이든, 또는 도면이든, 둘 이상의 대안적인 항목들을 나타내는 임의의 선언적 단어 및/또는 문구는 항목들 중 하나, 항목들 중 어느 하나, 항목들 모두를 포함하는 가능성들을 고려하도록 이해되어야 한다. 예를 들어, 문구 "A 또는 B"는 "A" 또는 "B" 또는 "A 및 B"의 가능성들을 포함하도록 이해될 것이다.
[0147]
게다가, 본 개시의 특징들 또는 양상들이 Markush 그룹들의 관점에서 설명되는 경우, 본 개시는 또한 그로 인해, Markush 그룹들의 멤버들의 서브그룹 또는 임의의 개별 멤버의 관점에서 설명된다.
[0148]
문서화된 설명을 제공하는 관점에서와 같이, 임의의 그리고 모든 목적들을 위해, 본 명세서에 설명된 모든 범위들은 또한 임의의 그리고 모든 가능한 서브레인지들 및 이들의 서브레인지들의 결합들을 포함한다. 임의의 리스팅된 범위는 동일한 범위가 적어도 동일한 절반, 1/3, 1/4, 1/5, 1/10 등으로 나뉘는 것을 충분히 설명하고 가능하게 하는 것으로 쉽게 인식될 수 있다. 비제한적인 예로서, 본 명세서에 설명된 각각의 범위는 하부 1/3, 중간 1/3 및 상부 1/3 등으로 쉽게 나뉠 수 있다. "~까지", "적어도", "~보다 큰", "~보다 작은" 등과 같은 모든 표현들은 열거된 수를 포함하고 전술한 바와 같이 서브레인지로 순차적으로 나뉠 수 있는 범위들을 지칭한다. 끝으로, 범위는 각각의 개별 멤버를 포함한다. 따라서, 예를 들어, 1-3개의 셀들을 갖는 그룹은 1, 2 또는 3개의 셀들을 갖는 그룹들로 지칭된다. 유사하게, 1-5개의 셀들을 갖는 그룹은 1, 2, 3, 4 또는 5개의 셀들을 갖는 그룹들로 지칭되는 식이다.
[0149]
다양한 양상들 및 실시예들이 본 명세서에 설명되었지만, 다른 양상들 및 실시예들이 가능하다. 본 명세서에 개시된 다양한 양상들 및 실시예들은 설명의 목적을 위한 것이고 제한을 의도하는 것은 아니며, 진정한 범위 및 사상은 아래 리스트된 청구항들에 의해 나타난다.
[0150]
첨부 A
[0151]
본 첨부에서, 정리 6이 제공된다. 유사한 결과가 앞선 Heegard, “On The Capacity Of Permanent Memory,”; 정리 4에서 증명되었다. 상이한 증명이 여기에 제시된다. 상태 정보가 디코더에 대해 또한 이용가능할 수 있다고 가정함으로써 용량에 대한 상한이 획득될 수 있다. 이러한 경우, 코딩 방식은 셀들의 부분 를 무시할 수 있고, 셀들의 나머지는, 입력 비용 제한을 갖는 이진 대칭 채널에 따라 코딩될 수 있다. 이 채널에 대해:
[0152]
더욱이:
[0153]
상태 을 갖는 셀들에 대한 비용 제한을 증가시키기 위해, 상태 을 갖는 셀들에 대해 채널 입력 을 할당하는 것이 가능하다. 이런 방식으로, 상태 을 갖는 셀들에 대한 비용 제한은 이 될 수 있다. 및 이 1/2 미만의 에서 증가하고 있을 수 있기 때문에, 결과적으로 이고 따라서 또한 결과적으로 이다. 따라서, 결과로서:
[0154]
이는 상한의 증명을 완료한다.
레이트 표현을 계산함으로써 직접 획득될 수 있다.
[0159]
따라서:
그러므로:
[0160]
첨부 B
[0162]
이러한 채널 W를 확인하기 위해, 우선 다음을 주목해야 한다:
[0163]
등식(16)은 등식(9)로부터 직접 도출될 수 있는데, 그 이유는:
여기서 (a)는 전체 확률의 법칙에서 도출되며, (b)는 조건부 확률의 정의로부터 도출되고, (c)는 등식(8) 및 (16)으로부터 도출된다.
[0166]
다음으로, 등식(15)는 앞에 제공된 W에 대해 유지되는 것이 보여진다:
[0167]
따라서, 채널 W는 등식 (15)를 충족할 수 있고 결국 보조 정리가 유지된다.
[0168]
첨부 C
[0169]
본 첨부에서, 정리 7이 증명된다. 정리 7의 복잡한 주장은, 앞선 Honda 및 Yamamoto, “Polar Coding Without Alphabet Extension For Asymmetric Models,” at Section III.B에서 설명된다. 증명은 구조 B의 점근적 레이트에서 시작할 수 있다. 을 보이는 것이 의도된다. 가 에 대해 저하될 수 있기 때문에, N. Goela, E. Abbe, 및 M. Gastpar, “Polar Codes For Broadcast Channels”, in Proc. IEEE Int. Symp. on Information Theory (ISIT), July 2013, pp. 1127-1131로부터 이고 따라서 라는 보조 정리 4가 도출된다. 따라서, 다음이 참일 수 있다:
여기서 세트들의 정의에 의해 상등이 도출된다. 정리의 증명을 완료하기 위해, 다음 섹션에서, 비용이 제한을 충족할 수 있음을 보이고, 그 다음 섹션 B, 디코딩 에러의 확률에서 디코딩 에러 확률이 소멸될 수 있음이 보여진다.
[0170]
A. 예상된 입력 비용
규정:
[0173]
이제, 프로즌 벡터가 균일하게 유도된다고 가정하고, 그 랜덤 벡터 특성을 로 나타낸다. 다음으로, 랜덤 프로즌 벡터에 대해 비용의 예상을 계산하고, 이러한 예상이 제한을 충족시키는 지를 보인다. 동일한 것이 에러의 확률에 대해 보일 수 있고, 제한 및 낮은 에러 확률 모두를 충족시킬 수 있는 적어도 하나의 프로즌 벡터가 존재한다는 것이 보일 수 있다. 예상은 다음과 같이 획득될 수 있다:
[0174]
조인트 pmf를 규정:
[0175]
그러면:
[0176]
임을 증명하기 위해, 다음으로 이 보여진다. 이를 보이기 위해, 디코딩 에러의 확률의 증명을 위해 또한 사용될 수 있는 약간 우세한 관계가 증명된다. 우선, 조인트 pmf가 제공된다:
[0177]
그 다음,
이며, 여기서, 삼각 부등식으로부터 부등식이 도출된다. 그리고 예상 비용의 증명은 정리 7과 관련할 수 있는 이러한 증명에서 정리 7a로 지정된, 이하의 보조 정리로 완료될 수 있다. 정리 7a는 디코딩 에러의 확률을 위해 또한 유용할 수 있다.
[0178]
정리 7a.
(b)는 체인 룰로부터 도출되고,
(c)는 텔리스코핑 확장
(e)는 다시 체인 룰로부터 도출되며,
(f)는 Pinsker의 부등식으로부터 도출되며(예를 들어, 앞선 Cover 및 Thomas, Elements of Information Theory, 보조 정리 11.6.1 참조)
(g)는 Jensen의 부등식으로부터 도출되고,
[0181]
B. 디코딩 에러의 확률
[0182]
가 한 쌍의 벡터들의 세트라고 하면, 는 디코딩 의 결과일 수 있고, 는 및 를 충족할 수 있다. 블록 디코딩 에러 이벤트는 로 주어질 수 있다. 임의의 타이-브레이킹 룰에 따라 (11)에 주어진 디코딩하에서, 각각의 모든 쌍 는 다음을 충족시킨다:
로 획득될 수 있다.
[0186]
그 다음:
여기서, 제 1 부등식은 삼각 부등식으로부터 도출될 수 있다. 합에서의 각각의 항목은 다음에 의해 경계 지어질 수 있다:
Claims (36)
- 데이터 디바이스를 동작시키기 위한 방법으로서,
통신 채널을 통해 상기 데이터 디바이스에 의해 메시지 을 수신하는 단계;
블록 소거 방지 코드의 코드워드를 프로세싱된 메시지 의 복수의 이진 디지트들이 나타내도록 상기 메시지 을 프로세싱하는 단계 ―여기서, 메모리 셀의 값이 제 1 로직 값에서 제 2 로직 값으로 변경된 후, 상기 메모리 셀에 대한 블록 소거 동작까지, 후속하여 수신되는 메시지들에 무관하게, 상기 메모리 셀의 값이 상기 제 2 로직 값에서 유지되도록, 상기 프로세싱된 메시지 의 이진 디지트들이 상기 데이터 디바이스의 복수의 메모리 셀들을 나타냄―; 및
상기 데이터 디바이스의 메모리 셀들에 상기 프로세싱된 메시지 을 저장하는 단계를 포함하는,
데이터 디바이스를 동작시키기 위한 방법. - 제 1 항에 있어서,
상기 메시지 은 수식
에 의해 정의되며, 상기 통신 채널은 수식 에 의해 정의되는 상태 를 가지며,
상기 메시지 을 프로세싱하는 단계는,
가 임의의 벡터라고 하고; 1에서 까지의 각각의 에 대해 그리고 1에서 n까지의 각각의 에 대해 를
에 할당하는 것에 따라 값들 를 상기 이진 디지트들에 할당하기 위해 상기 메시지 을 프로세싱하는 단계를 포함하며;
상기 메시지 을 프로세싱하는 단계는:
를 계산하는 단계 ―여기서, 1에서 까지의 각각의 에 대해, 는 수식 에 의해 정의되고, 에 대해 이고, 는 크로네커 멱(Kronecker power)을 나타냄―; 및
각각의 에 대해, 값 를 저장하는 단계를 더 포함하는, 데이터 디바이스를 동작시키기 위한 방법. - 데이터 디바이스를 동작시키기 위한 방법으로서,
상기 데이터 디바이스의 통신 채널을 통해 메시지 를 수신하는 단계 ―상기 메시지 는 인코딩된 데이터 값에 대응하는 이진 디지트들을 포함하고, 상기 통신 채널에서 에러를 나타내는 잡음 항목을 갖는 상기 인코딩된 데이터 값을 나타내는 벡터 를 포함함―;
블록 소거 방지 코드의 코드워드를 벡터 가 포함하도록 디코딩된 상기 메시지 를 나타내는 상기 벡터 를 추정하는 단계 ―여기서, 메모리 셀의 값이 로직 "0"에서 로직 "1"로 변경된 후, 대응하는 저장된 데이터 값이 추후에 변경되더러도, 상기 메모리 셀의 상기 값이 로직 "1"에서 유지되도록, 상기 메시지 의 이진 디지트들이 상기 데이터 디바이스의 복수의 메모리 셀들에 의한 표현을 위해 구성된 코드워드에 의해 표현됨―; 및
상기 메시지 의 수신된 인코딩된 데이터 값의 추정된 디코딩된 값에 대응하는 추정된 원래의 데이터 값으로서 상기 추정된 벡터 를 리턴하는 단계를 포함하는, 데이터 디바이스를 동작시키기 위한 방법. - 복수의 메모리 셀들을 갖는 데이터 디바이스의 메모리를 제어하기 위한 메모리 제어기로서,
통신 채널을 통해 데이터 메시지 을 수신하도록 구성된 인터페이스; 및
상기 메시지 의 복수의 이진 디지트들이 블록 소거 방지 코드의 코드워드를 나타내도록 상기 메시지 을 프로세싱하고 ―메모리 셀의 값이 제 1 로직 값에서 제 2 로직 값으로 변경된 후, 상기 메모리 셀에 대한 블록 소거 동작까지, 후속하여 수신되는 메시지들에 무관하게, 상기 메모리 셀의 값이 상기 제 2 로직 값에서 유지되도록, 상기 메시지 의 이진 디지트들이 상기 데이터 디바이스의 복수의 메모리 셀들을 나타냄―, 그리고 상기 데이터 디바이스의 메모리 셀들에 상기 프로세싱된 메시지 을 저장하도록 구성되고, 상기 인터페이스에 커플링된 프로세서를 포함하는,
메모리 제어기. - 제 13 항에 있어서,
상기 메시지 은 수식
에 의해 정의되며, 상기 통신 채널은 수식 에 의해 정의되는 상태 를 가지며,
상기 메시지 을 프로세싱하기 위해, 상기 프로세서는,
가 임의의 벡터라고 하고; 1에서 까지의 각각의 에 대해 그리고 1에서 n까지의 각각의 에 대해 를
중 하나에 할당하는 것에 따라 값들 를 상기 이진 디지트들에 할당하기 위해 상기 메시지 을 프로세싱하도록 구성되고;
상기 메시지 을 프로세싱하기 위해, 상기 프로세서는:
를 계산하고 ―여기서, 1에서 까지의 각각의 에 대해, 는 수식 에 의해 정의되고, ―여기서, 에 대해 이고, 는 크로네커 멱(Kronecker power)을 나타냄―; 그리고
각각의 에 대해, 값 를 저장하도록 추가로 구성되는, 메모리 제어기. - 데이터 디바이스의 메모리를 제어하기 위한 메모리 제어기로서,
상기 데이터 디바이스의 통신 채널을 통해 메시지 를 수신하기 위한 인터페이스 ―상기 메시지 는 인코딩된 데이터 값에 대응하는 이진 디지트들을 포함하고, 상기 통신 채널에서 에러를 나타내는 잡음 항목을 갖는 상기 인코딩된 데이터 값을 나타내는 벡터 를 포함함―;
벡터 가 블록 소거 방지 코드의 코드워드를 포함하도록, 디코딩된 상기 메시지 를 나타내는 상기 벡터 를 추정하고 ―여기서, 메모리 셀의 값이 로직 "0"에서 로직 "1"로 변경된 후, 대응하는 저장된 데이터 값이 추후에 변경되더러도, 상기 메모리 셀의 상기 값이 로직 "1"에서 유지되도록, 상기 메시지 의 이진 디지트들이 상기 데이터 디바이스의 복수의 메모리 셀들에 의한 표현을 위해 구성된 코드워드에 의해 표현됨―, 그리고 상기 메시지 의 수신된 인코딩된 데이터 값의 추정된 디코딩된 값에 대응하는 추정된 원래의 데이터 값으로서 상기 추정된 벡터 를 리턴하도록 구성되고, 상기 인터페이스에 커플링되는 프로세서를 포함하는, 메모리 제어기. - 데이터 디바이스로서,
데이터 값들을 저장하도록 구성된 메모리; 및
프로세싱된 메시지 의 복수의 이진 디지트들이 블록 소거 방지 코드의 코드워드를 나타내도록, 통신 채널을 통해 상기 데이터 디바이스에 의해 수신되는 메시지 을 프로세싱하고 ―메모리 셀의 값이 제 1 로직 값에서 제 2 로직 값으로 변경된 후, 상기 메모리 셀에 대한 블록 소거 동작까지, 후속하여 수신되는 메시지들에 무관하게, 상기 메모리 셀의 값이 상기 제 2 로직 값에서 유지되도록, 상기 프로세싱된 메시지 의 이진 디지트들이 상기 데이터 디바이스의 복수의 메모리 셀들을 나타냄―, 그리고 상기 데이터 디바이스의 메모리 셀들에 상기 프로세싱된 메시지 을 저장하도록 구성되고, 상기 메모리에 커플링되는 메모리 제어기를 포함하는,
데이터 디바이스. - 제 25 항에 있어서,
상기 메시지 은 수식
에 의해 정의되며, 상기 통신 채널은 수식 에 의해 정의되는 상태 를 가지며,
상기 메시지 을 프로세싱하기 위해, 상기 메모리 제어기는,
가 임의의 벡터라고 하고; 1에서 까지의 각각의 에 대해 그리고 1에서 n까지의 각각의 에 대해 를
중 하나에 할당하는 것에 따라 값들 를 상기 이진 디지트들에 할당하기 위해 상기 메시지 을 프로세싱하고;
를 계산하고 ―여기서, 1에서 까지의 각각의 에 대해, 는 수식 에 의해 정의되고, ―여기서, 에 대해 이고, 는 크로네커 멱(Kronecker power)을 나타냄―; 그리고
각각의 에 대해, 값 를 저장하도록 구성되는, 데이터 디바이스. - 데이터 디바이스로서,
데이터 값들을 저장하도록 구성된 메모리;
상기 데이터 디바이스의 통신 채널을 통해 데이터 메시지 를 수신하도록 구성되고 상기 메모리에 커플링된 메모리 제어기 ―상기 메시지 는 인코딩된 데이터 값에 대응하는 이진 디지트들을 포함하고, 상기 통신 채널에서 에러를 나타내는 잡음 항목을 갖는 상기 인코딩된 데이터 값을 나타내는 벡터 를 포함함―; 및
벡터 가 블록 소거 방지 코드의 코드워드를 포함하도록, 디코딩된 상기 메시지 를 나타내는 상기 벡터 를 추정하고 ―메모리 셀의 값이 로직 "0"에서 로직 "1"로 변경된 후, 대응하는 저장된 데이터 값이 추후에 변경되더러도, 상기 메모리 셀의 상기 값이 로직 "1"에서 유지되도록, 상기 메시지 의 이진 디지트들이 상기 데이터 디바이스의 복수의 메모리 셀들에 의한 표현을 위해 구성된 코드워드에 의해 표현됨―, 그리고 상기 메시지 의 수신된 인코딩된 데이터 값의 추정된 디코딩된 값에 대응하는 추정된 원래의 데이터 값으로서 상기 추정된 벡터 를 리턴하도록 구성되고, 상기 메모리에 커플링된 프로세서를 포함하는, 데이터 디바이스.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461928749P | 2014-01-17 | 2014-01-17 | |
US61/928,749 | 2014-01-17 | ||
US201462018434P | 2014-06-27 | 2014-06-27 | |
US62/018,434 | 2014-06-27 | ||
PCT/US2015/011430 WO2015108995A1 (en) | 2014-01-17 | 2015-01-14 | Asymmetric error correction and flash-memory rewriting using polar codes |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20160144960A true KR20160144960A (ko) | 2016-12-19 |
Family
ID=53543402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167021326A KR20160144960A (ko) | 2014-01-17 | 2015-01-14 | 폴라 코드들을 이용한 비대칭 에러 정정 및 플래시 메모리 재기록 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10379945B2 (ko) |
KR (1) | KR20160144960A (ko) |
CN (1) | CN107077886A (ko) |
WO (1) | WO2015108995A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10379945B2 (en) | 2014-01-17 | 2019-08-13 | California Institute Of Technology | Asymmetric error correction and flash-memory rewriting using polar codes |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10191803B2 (en) * | 2015-01-30 | 2019-01-29 | California Institute Of Technology | Rewriting flash memories by message passing |
US10231121B2 (en) * | 2015-06-24 | 2019-03-12 | Lg Electronics Inc. | Security communication using polar code scheme |
KR20180021324A (ko) * | 2016-08-19 | 2018-03-02 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
CN115664583A (zh) | 2017-01-09 | 2023-01-31 | 中兴通讯股份有限公司 | 一种数据处理方法和装置 |
CN107659318B (zh) * | 2017-11-07 | 2021-05-18 | 东南大学 | 一种自适应的极化码译码方法 |
US10339971B1 (en) | 2017-12-19 | 2019-07-02 | International Business Machines Corporation | Sequential data storage with rewrite using dead-track detection |
EP3811274A1 (en) * | 2018-06-21 | 2021-04-28 | Technische Universität München | Method and unit of operating a storage means, storage means and system for data processing |
CN117176185B (zh) * | 2023-10-18 | 2024-02-09 | 苏州元脑智能科技有限公司 | 一种基于极化码的数据编解码方法、装置和存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0900440B1 (en) | 1996-05-22 | 2003-07-30 | Macronix International Co., Ltd. | Flash memory device with multiple checkpoint erase suspend logic |
CN1492447A (zh) * | 2003-09-22 | 2004-04-28 | 中兴通讯股份有限公司 | 一种快闪存储设备的驱动方法 |
CN100476758C (zh) * | 2007-08-14 | 2009-04-08 | 北京佳讯飞鸿电气股份有限公司 | 一种基于nor flash芯片的数据存储实现方法 |
KR101422704B1 (ko) * | 2008-01-21 | 2014-07-25 | 삼성전자주식회사 | 소거 스트레스를 줄일 수 있는 전하 트랩형 플래시 메모리장치 그리고 그것의 프로그램 및 소거 방법 |
US8386883B2 (en) * | 2009-02-24 | 2013-02-26 | International Business Machines Corporation | Lengthening life of a limited life memory |
US8780620B2 (en) * | 2010-09-20 | 2014-07-15 | The Texas A&M University | Information representation and coding for nonvolatile memories |
WO2013134735A1 (en) * | 2012-03-08 | 2013-09-12 | California Institute Of Technology | Rank-modulation rewriting codes for flash memories |
US9632866B2 (en) * | 2012-09-28 | 2017-04-25 | Duke University | Systems for and methods of extending lifetime of non-volatile memory |
WO2014116301A1 (en) * | 2013-01-24 | 2014-07-31 | California Institute Of Technology | Joint rewriting and error correction in write-once memories |
KR20160144960A (ko) | 2014-01-17 | 2016-12-19 | 캘리포니아 인스티튜트 오브 테크놀로지 | 폴라 코드들을 이용한 비대칭 에러 정정 및 플래시 메모리 재기록 |
-
2015
- 2015-01-14 KR KR1020167021326A patent/KR20160144960A/ko not_active Application Discontinuation
- 2015-01-14 WO PCT/US2015/011430 patent/WO2015108995A1/en active Application Filing
- 2015-01-14 CN CN201580014774.2A patent/CN107077886A/zh active Pending
- 2015-01-14 US US15/112,156 patent/US10379945B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10379945B2 (en) | 2014-01-17 | 2019-08-13 | California Institute Of Technology | Asymmetric error correction and flash-memory rewriting using polar codes |
Also Published As
Publication number | Publication date |
---|---|
WO2015108995A1 (en) | 2015-07-23 |
CN107077886A (zh) | 2017-08-18 |
US10379945B2 (en) | 2019-08-13 |
US20160335156A1 (en) | 2016-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20160144960A (ko) | 폴라 코드들을 이용한 비대칭 에러 정정 및 플래시 메모리 재기록 | |
Sala et al. | Dynamic threshold schemes for multi-level non-volatile memories | |
US9916197B2 (en) | Rank-modulation rewriting codes for flash memories | |
JP5567378B2 (ja) | 不揮発性メモリの適応型エンデュランス・コーディング方法及びシステム | |
JP4818381B2 (ja) | 半導体メモリ装置 | |
Gad et al. | Asymmetric error correction and flash-memory rewriting using polar codes | |
US20120096328A1 (en) | Multi-write endurance and error control coding of non-volatile memories | |
Hussain et al. | Design of LT codes with equal and unequal erasure protection over binary erasure channels | |
TWI510000B (zh) | 用於結合錯誤編碼與調變方案之裝置及方法 | |
JP5468184B2 (ja) | ソリッドステートドライブのための消去カウントを軽減した高機能データ符号化 | |
EP3182601B1 (en) | Data processing method and system based on quasi-cyclic ldpc | |
CN110598867A (zh) | 一种量子态信息转化方法 | |
JP2020510931A (ja) | 非2値コンテキスト・ミキシング方法、非2値コンテキスト・ミキシング圧縮器および圧縮解除器を備えるデータ・ストレージ・システム、ならびにコンピュータ・プログラム | |
US8832525B2 (en) | Memory controller with low density parity check code decoding capability and relevant memory controlling method | |
US10326473B2 (en) | Symbol-based coding for NAND flash devices | |
WO2023059517A1 (en) | Systems for estimating bit error rate (ber) of encoded data using neural networks | |
Gad et al. | Rank-modulation rewriting codes for flash memories | |
WO2018157263A1 (en) | Generalized polar codes | |
CN108432170B (zh) | 用于多码分布式存储的装置和方法 | |
US10191803B2 (en) | Rewriting flash memories by message passing | |
CN108628698B (zh) | 计算crc编码的方法和装置 | |
US9985647B2 (en) | Encoder and decoder design for near-balanced codes | |
KR102098247B1 (ko) | 메모리 시스템에서 데이터를 인코딩 및 디코딩하기 위한 방법 및 장치 | |
KR102607761B1 (ko) | 극 부호를 이용하는 복호화를 위한 복호 위치 제어 정보 생성 방법 및 장치 | |
KR20180021324A (ko) | 저장 장치 및 그것의 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Withdrawal due to no request for examination |