KR20190019798A - 채널 편파 코드의 연속 제거 리스트 디코딩을 위한 효율적인 생존 메모리 아키텍처 - Google Patents
채널 편파 코드의 연속 제거 리스트 디코딩을 위한 효율적인 생존 메모리 아키텍처 Download PDFInfo
- Publication number
- KR20190019798A KR20190019798A KR1020170149378A KR20170149378A KR20190019798A KR 20190019798 A KR20190019798 A KR 20190019798A KR 1020170149378 A KR1020170149378 A KR 1020170149378A KR 20170149378 A KR20170149378 A KR 20170149378A KR 20190019798 A KR20190019798 A KR 20190019798A
- Authority
- KR
- South Korea
- Prior art keywords
- group
- subgroups
- intermediate value
- value
- equal
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0057—Block codes
- H04L1/0058—Block-coded modulation
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3746—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/43—Majority logic or threshold decoding
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/45—Soft decoding, i.e. using symbol reliability information
- H03M13/458—Soft decoding, i.e. using symbol reliability information by updating bit probabilities or hard decisions in an iterative fashion for convergence to a final decoding result
-
- 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/65—Purpose and implementation aspects
- H03M13/6572—Implementations using a tree structure, e.g. implementations in which the complexity is reduced by a tree structure from O(n) to O (log(n))
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
- H04L1/0054—Maximum-likelihood or sequential decoding, e.g. Viterbi, Fano, ZJ algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0057—Block codes
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Artificial Intelligence (AREA)
- Error Detection And Correction (AREA)
Abstract
메모리 모듈에서 채널 편파 코드를 디코딩하는 동안 생성된 생존자 데이터를 저장하는 방법은, 채널 편파 코드를 디코딩하는데 사용되는 디코더 유닛의 개수에 대응하는 리스트 크기를 설정하는 단계와, 입력 비트들의 스트림을 디코더 유닛에 입력하는 단계와, 입력 비트들을 순차적으로 디코딩하는 단계를 포함한다. 각각의 입력 비트는 각각의 입력 비트 전에 디코딩된 모든 이전 입력 비트들을 이용하여 디코딩된다. 방법은, 디코딩된 입력 비트들 중에서 복수의 생존 비트들을 선택하는 단계와, 선택된 생존 비트들을 2진 트리 구성으로 메모리 모듈에 저장하는 단계를 포함한다. 2진 트리 구성의 각각의 레벨에서의 에지의 개수는 리스트 크기를 초과하지 않는다.
Description
본 발명은 채널 편파 코드(channel polarization code)의 연속 제거 리스트 디코딩(successive cancellation list decoding)을 위한 효율적인 생존 메모리(survivor memory) 아키텍처에 관한 것으로, 더욱 상세하게는, 메모리 모듈에서 채널 편파 코드를 디코딩하는 동안 생성되는 생존 데이터를 저장하는 방법 및 이를 구현하는 채널 편파 코드 디코딩 시스템에 관한 것이다.
노이즈 채널 코딩에 대한 이론에 따라, 소정의 코딩 접근 방식을 이용함으로써, 에러 없이, 디지털 정보가 노이즈 채널을 통해 신뢰성 있게 전송될 수 있는 방식들이 있다. 채널은 특정 대역폭을 가질 수 있고, 소정의 코딩 기술은 다른 것보다 더 큰 간접 비용을 가진다. 채널에 노이즈가 더 많을수록, 신뢰성 있는 전환(transition)을 보장하는데 필요한 코딩 기술의 간접 비용이 더 커진다. 따라서, 노이즈 채널은 종종 매우 느린 데이터 전송률을 가진다.
노이즈 채널을 위한 최적 데이터 전송률("성취 능력(achieving capacity)"이라 함)을 이론적으로 제공할 수 있는 코딩을 위한 하나의 접근 방식은 폴라 코드(polar code)의 사용을 포함한다. 폴라 코딩에서, 이상적으로(수학적 용어에서는 "점근적으로(asymptotically)"), 전송하는 정보의 성공적인 신뢰성 있는 전송이 보장되는 완벽 채널(perfect channel)과, 정보를 전송하는 것이 이론적으로 불가능한 무용 채널(useless channel)인 2가지 종류의 채널이 생성된다. 실제로는, 유효한 데이터는 완벽 채널을 통해 전송되고, 미리 정해진/고정된 정보는 무용 채널을 통해 전송된다. 리스트 연속 제거 디코딩 기술이 폴라 코딩을 수행하는데 사용될 수 있다.
플래시 메모리 소자의 용량이 증가하고 크기가 감소함에 따라, 정확하게 프로그래밍된 메모리 셀들이 부정확한 상태로 자발적으로 점프하는 가능성이 증가한다. 이러한 자발적인 점프는 플래시 메모리 소자에 저장된 데이터에 오류를 일으킬 수 있다.
이러한 고집적 플래시 메모리 소자에서 신뢰성을 증가시키기 위한 하나의 접근 방식은 에러 정정 코드(error correction code; ECC)를 이용하여 그 내에 데이터를 저장하는 것이다("채널 코딩"). 이 경우에, 플래시 메모리 내의 데이터의 저장과, 그로부터의 데이터의 검색은 노이즈 채널과 유사하게 취급되고, 데이터를 저장하는 경우 채널 코딩을 적용하고, 데이터를 검색하는 경우 채널 디코딩을 적용함으로써, 데이터의 무결성이 보존될 수 있다.
본 발명의 기술적 사상이 이루고자 하는 과제 중 하나는, 메모리 모듈에서 채널 편파 코드를 디코딩하는 동안 생성되는 생존 데이터를 저장하는 방법 및 이를 구현하는 채널 편파 코드 디코딩 시스템을 제공하는 데 있다.
본 발명의 예시적인 실시예에 따라, 메모리 모듈에서 채널 편파 코드(channel polarization code)를 디코딩하는 동안 생성된 생존자 데이터를 저장하는 방법은 리스트 크기를 설정하는 단계를 포함한다. 리스트 크기는 채널 편파 코드를 디코딩하는데 사용되는 디코더 유닛의 개수에 대응한다. 방법은, 입력 비트들의 스트림을 디코더 유닛에 입력하는 단계와, 입력 비트들을 순차적으로 디코딩하는 단계를 더 포함한다. 각각의 입력 비트는 각각의 입력 비트 전에 디코딩된 모든 이전 입력 비트들을 이용하여 디코딩된다. 방법은, 디코딩된 입력 비트들 중에서 복수의 생존 비트들을 선택하는 단계와, 선택된 생존 비트들을 2진 트리 구성으로 메모리 모듈에 저장하는 단계를 더 포함한다. 2진 트리 구성의 각각의 레벨에서의 에지의 개수는 리스트 크기를 초과하지 않는다.
예시적인 실시예에서, 입력 비트들은 리스트 연속 제거 디코딩 기술(list successive cancellation decoding)을 이용하여 순차적으로 디코딩된다.
예시적인 실시예에서, 리스트 연속 제거 디코딩 기술을 이용하여 입력 비트들을 순차적으로 디코딩하는 것은, 복수의 중간값들을 계산하는 것을 포함한다. 중간값은, 각각의 입력 비트 전에 디코딩된 이전 입력 비트들의 값들에 대한 복수의 추측들에 기초하여 각각의 입력 비트를 디코딩함으로써 계산된다. 각각의 추측은 0이거나 1인 비트 값에 대응한다.
예시적인 실시예에서, 방법은, LLR(log-likelihood ratio) 기술을 이용하여 복수의 추측들 중에서 복수의 가장 가능성 있는 추측들을 선택하는 단계와, 메모리 모듈에 선택된 가장 가능성 있는 추측들을 유지하는 단계와, 가장 가능성 있는 추측들로서 선택되지 않은 복수의 추측들로부터 추측들을 폐기하는 단계를 더 포함한다.
예시적인 실시예에서, 선택된 생존 비트들을 2진 트리 구성으로 메모리 모듈에 저장하는 단계는, 복수의 중간값으로부터의 중간값의 제1 그룹을 복수의 중간값으로부터의 중간값의 제2 그룹과 비교하는 단계를 포함한다. 제1 및 제2 그룹은 서브 그룹으로 분할되고, 각각의 서브 그룹은 후속 디코딩 프로세스의 복수의 스테이지들 중 하나의 스테이지 동안 획득된 중간값에 대응한다. 비교는 스테이지별 기반으로 이루어진다. 각각의 스테이지는 2진 트리 구성의 레벨들 중 한 레벨에 대응한다. 선택된 생존 비트들을 저장하는 단계는, 비교 결과에 기초하여 2진 트리 구성의 레벨들의 각각에서 에지를 생성하는 단계를 더 포함한다.
예시적인 실시예에서, 비교 결과에 기초하여 2진 트리 구성의 레벨들의 각각에서 에지를 생성하는 단계는, 제1 그룹의 서브 그룹으로부터의 중간값들을 제2 그룹의 서브 그룹으로부터의 대응하는 중간값들과 비교하는 단계와, 비교된 중간값들이 1과 동일한 제1 그룹의 서브 그룹에서의 중간값과 0과 동일한 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 왼쪽 에지만 생성하는 단계와, 비교된 중간값들이 0과 동일한 제1 그룹의 서브 그룹에서의 중간값과 1과 동일한 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 오른쪽 에지만 생성하는 단계와, 비교된 중간값들이 1과 동일한 제1 그룹의 서브 그룹에서의 중간값과 1과 동일한 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 왼쪽 에지와 오른쪽 에지를 모두 생성하는 단계와, 비교된 중간값들이 0과 동일한 제1 그룹의 서브 그룹에서의 중간값과 0과 동일한 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 왼쪽 에지와 오른쪽 에지의 어느 것도 생성하지 않는 단계를 포함한다. 꼭지점은 비교된 중간값들에 대응한다.
예시적인 실시예에서, 왼쪽 에지는 0의 값을 나타내고, 오른쪽 에지는 1의 값을 나타낸다.
예시적인 실시예에서, 왼쪽 에지는 1의 값을 나타내고, 오른쪽 에지는 0의 값을 나타낸다.
예시적인 실시예에서, 비교하는 단계의 결과에 기초하여 2진 트리 구성의 레벨들의 각각에서 에지를 생성하는 단계는, 제1 그룹의 서브 그룹으로부터의 중간값들을 제2 그룹의 서브 그룹으로부터의 대응하는 중간값들과 비교하는 단계와, 비교된 중간값들이 0과 동일한 제1 그룹의 서브 그룹에서의 중간값과 1과 동일한 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 왼쪽 에지만 생성하는 단계와, 비교된 중간값들이 1과 동일한 제1 그룹의 서브 그룹에서의 중간값과 0과 동일한 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 오른쪽 에지만 생성하는 단계와, 비교된 중간값들이 1과 동일한 제1 그룹의 서브 그룹에서의 중간값과 1과 동일한 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 왼쪽 에지와 오른쪽 에지를 모두 생성하는 단계와, 비교된 중간값들이 0과 동일한 제1 그룹의 서브 그룹에서의 중간값과 0과 동일한 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 왼쪽 에지와 오른쪽 에지의 어느 것도 생성하지 않는 단계를 포함한다. 꼭지점은 비교된 중간값들에 대응한다.
예시적인 실시예에서, 비교하는 단계의 결과에 기초하여 2진 트리 구성의 레벨들의 각각에서 에지를 생성하는 단계는, 제1 그룹의 서브 그룹으로부터의 중간값들을 제2 그룹의 서브 그룹으로부터의 대응하는 중간값들과 비교하는 단계와, 비교된 중간값들이 1과 동일한 제1 그룹의 서브 그룹에서의 중간값과 0과 동일한 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 왼쪽 에지만 생성하는 단계와, 비교된 중간값들이 0과 동일한 제1 그룹의 서브 그룹에서의 중간값과 1과 동일한 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 오른쪽 에지만 생성하는 단계와, 비교된 중간값들이 0과 동일한 제1 그룹의 서브 그룹에서의 중간값과 0과 동일한 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 왼쪽 에지와 오른쪽 에지를 모두 생성하는 단계와, 비교된 중간값들이 1과 동일한 제1 그룹의 서브 그룹에서의 중간값과 1과 동일한 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 왼쪽 에지와 오른쪽 에지의 어느 것도 생성하지 않는 단계를 포함한다. 꼭지점은 비교된 중간값들에 대응한다.
예시적인 실시예에서, 비교하는 단계의 결과에 기초하여 2진 트리 구성의 레벨들의 각각에서 에지를 생성하는 단계는, 제1 그룹의 서브 그룹으로부터의 중간값들을 제2 그룹의 서브 그룹으로부터의 대응하는 중간값들과 비교하는 단계와, 비교된 중간값들이 0과 동일한 제1 그룹의 서브 그룹에서의 중간값과 1과 동일한 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 왼쪽 에지만 생성하는 단계와, 비교된 중간값들이 1과 동일한 제1 그룹의 서브 그룹에서의 중간값과 0과 동일한 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 오른쪽 에지만 생성하는 단계와, 비교된 중간값들이 0과 동일한 제1 그룹의 서브 그룹에서의 중간값과 0과 동일한 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 왼쪽 에지와 오른쪽 에지를 모두 생성하는 단계와, 비교된 중간값들이 1과 동일한 제1 그룹의 서브 그룹에서의 중간값과 1과 동일한 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 왼쪽 에지와 오른쪽 에지의 어느 것도 생성하지 않는 단계를 포함한다. 꼭지점은 비교된 중간값들에 대응한다.
예시적인 실시예에서, 메모리 모듈은 플래시 메모리이다.
본 발명의 예시적인 실시예에 따라, 채널 편파 코드 디코딩 시스템은, 메모리 모듈과, 입력 비트들의 스트림을 수신하여 순차적으로 디코딩하는 복수의 디코더 유닛을 포함한다. 입력 비트들을 채널 편파 코드를 나타낸다. 각각의 입력 비트는 각각의 입력 비트 전에 디코딩된 모든 이전 입력 비트를 이용하여 디코딩된다. 채널 편파 코드 디코딩 시스템은, 리스트 크기를 설정하고, 디코딩된 입력 비트들 중에서 복수의 생존 비트들을 선택하는 프로세서를 더 포함한다. 리스트 크기는 디코더 유닛의 전체 개수에 대응한다. 채널 편파 코드 디코딩 시스템은, 프로세서의 제어 하에서 2진 트리 구성으로 메모리 모듈 내에 선택된 생존 비트들을 저장하도록 메모리 모듈을 제어하는 메모리 컨트롤러를 더 포함한다. 2진 트리 구성의 각각의 레벨에서의 에지의 개수는 리스트 크기를 초과하지 않는다.
예시적인 실시예에서, 각각의 디코더 유닛은 리스트 연속 제거 디코딩 기술을 이용하여 입력 비트들을 디코딩하는 리스트 연속 제거 디코더 유닛이다.
예시적인 실시예에서, 디코더 유닛은 복수의 중간값들을 계산함으로써 리스트 연속 제거 디코딩 기술을 이용하여 입력 비트들을 디코딩한다. 중간값은, 각각의 입력 비트 전에 디코딩된 이전 입력 비트들의 값들에 대한 복수의 추측들에 기초하여 각각의 입력 비트를 디코딩함으로써 계산된다. 각각의 추측은 0이거나 1인 비트 값에 대응한다.
예시적인 실시예에서, 프로세서의 제어 하에서 2진 트리 구성으로 메모리 모듈 내에 선택된 생존 비트들을 저장하도록 메모리 모듈을 제어하는 메모리 컨트롤러는, 복수의 중간값으로부터의 중간값의 제1 그룹을 복수의 중간값으로부터의 중간값의 제2 그룹과 비교한다. 제1 및 제2 그룹은 서브 그룹으로 분할되고, 각각의 서브 그룹은 후속 디코딩 프로세스의 복수의 스테이지들 중 하나의 스테이지 동안 획득된 중간값에 대응한다. 비교는 스테이지별 기반으로 이루어진다. 각각의 스테이지는 2진 트리 구성의 레벨들 중 한 레벨에 대응한다. 메모리 모듈을 제어하는 메모리 컨트롤러는 비교 결과에 기초하여 2진 트리 구성의 레벨들의 각각에서 에지를 생성한다.
도 1은, 본 발명의 예시적인 실시예에 따라, 입력 비트가 입력되고 노이즈 관찰이 출력되는 노이즈 채널의 일례를 도시한다.
도 2는, 본 발명의 예시적인 실시예에 따라, 4의 리스트 크기를 갖는 리스트 디코더 유닛의 생존자(survivor)를 도시하는 부분 2진 트리를 도시한다.
도 3은, 본 발명의 예시적인 실시예에 따라, 2진 트리의 각각의 레벨에 대응하는 a_i(l) 및 b_i(l)의 대응하는 값이 2진 트리 위에 놓이는 도 2의 부분 2진 트리를 도시한다.
도 4는, 본 발명의 예시적인 실시예에 따라, 메모리 모듈에서 채널 편파 코드를 디코딩하는 동안 생성된 생존 데이터를 저장하는 방법을 나타내는 흐름도이다.
도 5a 및 5b는, 본 발명의 예시적인 실시예에 따라, 생존자 복사(survivor copy) 동작 이전 및 이후의 디코더 유닛 및 메모리 모듈을 도시한다.
도 6은, 본 발명의 예시적인 실시예에 따라, 디코더 유닛 및 3개의 메모리 모듈을 포함하는 포인터 기반 아키텍처를 도시한다.
도 7은, 본 발명의 예시적인 실시예에 따라, N = 2에 대한 부분 합(partial sum) 배열을 나타내는 채널 디코딩 그래프를 도시한다.
도 8은, 본 발명의 예시적인 실시예에 따라, N = 4에 대한 부분 합 배열을 나타내는 채널 디코딩 그래프를 도시한다.
도 9는, 본 발명의 예시적인 실시예에 따라, N = 8에 대한 부분 합 배열을 나타내는 채널 디코딩 그래프를 도시한다.
도 10은, 본 발명의 예시적인 실시예에 따라, 꼭지점(vertex)의 프로세스 배열 시퀀스를 디코딩 그래프에 도시한다.
도 11은, 본 발명의 예시적인 실시예에 따른 채널 편파 코드 디코딩 시스템을 도시한다.
도 2는, 본 발명의 예시적인 실시예에 따라, 4의 리스트 크기를 갖는 리스트 디코더 유닛의 생존자(survivor)를 도시하는 부분 2진 트리를 도시한다.
도 3은, 본 발명의 예시적인 실시예에 따라, 2진 트리의 각각의 레벨에 대응하는 a_i(l) 및 b_i(l)의 대응하는 값이 2진 트리 위에 놓이는 도 2의 부분 2진 트리를 도시한다.
도 4는, 본 발명의 예시적인 실시예에 따라, 메모리 모듈에서 채널 편파 코드를 디코딩하는 동안 생성된 생존 데이터를 저장하는 방법을 나타내는 흐름도이다.
도 5a 및 5b는, 본 발명의 예시적인 실시예에 따라, 생존자 복사(survivor copy) 동작 이전 및 이후의 디코더 유닛 및 메모리 모듈을 도시한다.
도 6은, 본 발명의 예시적인 실시예에 따라, 디코더 유닛 및 3개의 메모리 모듈을 포함하는 포인터 기반 아키텍처를 도시한다.
도 7은, 본 발명의 예시적인 실시예에 따라, N = 2에 대한 부분 합(partial sum) 배열을 나타내는 채널 디코딩 그래프를 도시한다.
도 8은, 본 발명의 예시적인 실시예에 따라, N = 4에 대한 부분 합 배열을 나타내는 채널 디코딩 그래프를 도시한다.
도 9는, 본 발명의 예시적인 실시예에 따라, N = 8에 대한 부분 합 배열을 나타내는 채널 디코딩 그래프를 도시한다.
도 10은, 본 발명의 예시적인 실시예에 따라, 꼭지점(vertex)의 프로세스 배열 시퀀스를 디코딩 그래프에 도시한다.
도 11은, 본 발명의 예시적인 실시예에 따른 채널 편파 코드 디코딩 시스템을 도시한다.
이하, 본 발명의 예시적인 실시예가 첨부된 도면을 참조하여 더욱 완전하게 설명될 것이다. 유사한 도면 부호는 첨부된 도면 전체에 걸쳐 유사한 요소를 나타낼 수 있다.
본 발명의 예시적인 실시예는 메모리 모듈에서 채널 편파 코드를 디코딩하는 동안 생성된 생존 데이터(survivor data)(예를 들어, 생존 비트)를 효율적으로 저장하는 것에 관한 것이다.
본 발명의 예시적인 실시예들에 따라, 메모리 모듈(메모리 소자라고도 함)은 비휘발성 메모리를 나타낸다. 예를 들어, 비휘발성 메모리는 플래시 메모리일 수 있거나, 플래시 메모리 칩으로 구성될 수 있지만, 본 발명은 이에 한정되지 않는다. 플래시 메모리는 데이터를 저장하기 위한 비휘발성 메모리를 대표한다. 본 발명의 예시적인 실시예들에 따라, 플래시 메모리는, 예를 들어, NAND 또는 VNAND 플래시 메모리를 포함할 수 있다. 플래시 메모리는 단일 레벨 셀(single-level cell; SLC), 다중 레벨 셀(multi-level cell; MLC) 또는 3중 레벨 셀(triple-level cell; TLC) 플래시 메모리 등일 수 있다. 플래시 메모리는 임의의 특정 용량이나 구성에 한정되지 않는다. 예를 들어, 물리적 블록의 개수, 물리적 블록 당 물리적 페이지의 개수, 물리적 페이지 당 섹터의 개수 및 섹터의 크기는 변경될 수 있다. 본 명세서에서 생존 데이터가 메모리 모듈 내에 저장되는 것으로 설명될 때, 생존 데이터는 컴퓨터 레지스터들이 아니라, 전술한 메모리 모듈 내에 저장되고 있는 것으로 이해될 수 있다.
본 명세서에서 사용되는 "유닛(unit)"이라는 용어는 소정의 작업을 수행하는 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)과 같은 소프트웨어나 하드웨어 컴포넌트를 의미하지만, 이에 한정되지 않는다. 유닛 또는 모듈은 어드레싱 가능한 저장 매체에 상주하도록 구성되고 하나 이상의 프로세서에서 실행되도록 구성될 수 있다. 본 명세서에서 "유닛" 및 "모듈"이라는 용어는 교환 가능하게 사용될 수 있다. 본 명세서에서 사용되는 바와 같이, "리스트 디코더(list decoder) 유닛"이라는 용어는 단일 디코더 유닛 또는 채널 편파 코드를 함께 디코딩하는 디코더 유닛들의 집합적인 그룹을 지칭하는 것으로 이해될 수 있다. "디코더", "디코더 유닛" 및 "디코더 회로"는 폴라 코드를 디코딩하기 위하여 사용되는 디코더를 설명하기 위하여 본 명세서에서 교환 가능하게 사용될 수 있다.
따라서, 유닛은, 예로서, 소프트웨어 컴포넌트, 객체 지향 소프트웨어 컴포넌트, 클래스 컴포넌트 및 태스크(task) 컴포넌트, 프로세스, 함수, 속성, 프로시저, 서브 루틴, 프로그램 코드의 세그먼트, 드라이버, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조, 테이블, 어레이 및 변수와 같은 컴포넌트를 포함할 수 있다. 컴포넌트 및 유닛 또는 모듈에서 제공되는 기능은 더 적은 컴포넌트 및 유닛 또는 모듈로 결합될 수 있거나, 추가의 컴포넌트 및 유닛 또는 모듈로 더 분할될 수 있다.
폴라 코딩에서, 정보는 완벽 채널을 따라 전송되고, 무용 채널은 메모리 모듈에 저장된 정보를 디코딩하는 장치에게 알려지거나 또는 수신된 전송을 디코딩하는 장치에 의해 알려진 고정된 값을 반송하기 위하여 미리 정해진다. 채널의 값이 알려지지 않으면 폴라 코드를 디코딩하는 것이 실패할 수 있기 때문에, 무용 채널의 고정된 값은 디코딩 단(decoding end)에서 알려져 있다. 따라서, 이러한 무용 채널은 예를 들어 0과 같은 미리 정해진 값만을 전송하도록 구성될 수 있다. 디코딩에서 디코더 유닛에 의해 어느 채널이 무용 채널인지 설정될 수 있다는 것이 이해되며, 이에 따라 디코더 유닛은 이러한 채널들을 위한 디코딩된 정보를 예를 들어 0과 같은 미리 정해진 값으로 할당하는 것을 알 수 있다.
채널 편파 동안, 벡터(u_1, u_2, ..., u_N)에서의 정보(예를 들어, 입력 비트)는 노이즈 채널(예를 들어, 메모리 모듈, 통신 채널 등)으로 입력되어 노이즈 관찰(noisy observation)(y_1, y_2, ..., y_N)(예를 들어, 채널을 통해 출력된 입력 비트의 노이즈가 낀 형태)에 기초하여 디코딩된다. 여기에서, N은 디코딩될 비트의 전체 개수를 나타낸다. 디코딩의 각각의 스테이지에서, 새로운 비트는 이미 디코딩된 비트에 대한 정보에 기초하여 디코딩된다. 예를 들어, 비트 u_i는 비트 u_1, u_2, ..., u_(i-1) 및 노이즈 관찰(y_1, y_2, ..., y_N)의 전체(예를 들어, 노이즈가 낀 형태의 비트의 전체)에 기초하여 디코딩된다. 도 1은 입력 비트가 입력되고 노이즈 관찰이 출력되는 이러한 노이즈 채널(101)의 일례를 도시한다. 리스트 연속 제거 디코딩이 채널 편파 동안 수행될 수 있다.
리스트 연속 제거 디코딩이 수행될 때, 디코딩 프로세스의 각각의 스테이지에서, L개의 생존 후보의 리스트가 유지된다. 예를 들어, 리스트 연속 제거 디코딩 동안, 각각의 스테이지에서, 이전의 디코딩된 값이 현재 값을 디코딩하는데 사용된다. 일부 상황에서, 값은 알려져 있지 않다. 이러한 상황에서, 알려지지 않은 값이 0이라는 가정에 기초하여 제 1 디코딩 동작이 수행될 수 있고, 알려지지 않은 값이 1이라는 가정에 기초하여 제2 디코딩 동작이 수행될 수 있다. 따라서, 알려지지 않은 값이 추측된다고(예를 들어, 0으로 추측되거나 1로 추측된다고) 말할 수 있고, 디코딩은 이러한 추측들의 모두에 기초하여 진행한다. 디코딩 프로세스의 마지막에, 어느 추측이 정확한 것인지 판단될 수 있다.
그러나, 모든 추측을 유지하는 것(모든 추측을 메모리에 저장하는 것)은 매우 많은 양의 리소스(예를 들어, 메모리 및 처리 요건)를 필요로 한다. 따라서, 소정의 개수의 추측이 메모리에 유지될 수 있고, 소정 개수의 추측은 폐기될 수 있다. 유지되는 추측의 개수는 디코딩 동안 사용되는 디코더 유닛의 개수에 대응하는 리스트 크기에 대응한다. 예를 들어, 크기 10의 리스트에 대하여, 10개의 가장 가능성 있는 추측이 유지된다. 그러나, 10개의 디코더 유닛이 있고, 각각의 디코더 유닛이 2개의 값(예를 들어, 0과 1을 추측하기 때문에, 20개의 추측이 디코딩 동안 이루어지고, 전술한 바와 같이, 이러한 20개의 추측 중 10개는 유지되지 않는다. 유지되는 10개의 가장 가능성 있는 추측은 생존자(survivor)라 한다(생존 비트(survivor bit)라고도 한다). 리스트 디코딩은 생존 비트를 이용하여 계속된다. 각각의 스테이지에서, 어느 추측이 유지될 예정인 생존자인지가 결정된다. 리스트 연속 제거 디코딩 동안 이루어진 각각의 추측은 상이한 중간값을 제공한다. 처리가 값이 0으로 추측되는 시나리오와 값이 1로 추측되는 시나리오 모두에 대하여 수행되기 때문에, 많은 상이한 중간값 세트가 생성된다.
LLR(Log-likelihood ratio)가 가장 가능성 있는 추측을 판단하는데 사용될 수 있다. 예를 들어, LLR은, 이전에 디코딩된 비트와 노이즈 관찰에 기초하여, 추측되는 값이 0에 더 유사한지 또는 1에 더 유사한지에 대한 확률을 판단하기 위하여 활용될 수 있다. LLR이 활용될 때, 중간값은 중간 LLR 값이라 할 수 있다(LLR이 중간값에 도달하는데 활용되기 때문이다). 예를 들어, LLR을 이용하여, 알려지지 않은 값이 0인 확률이 계산되고, 알려지지 않은 값이 1인 확률이 계산되며, 더 높은 확률을 갖는 값이 가장 가능성 있는 추측으로서 선택된다.
리스트 연속 제거 디코딩의 각각의 스테이지에서, L개의 생존 후보의 리스트가 유지된다. U_i는 스테이지 i에서의 디코딩이 끝난 후에 디코딩되는 L개의 생존 후보의 세트를 나타낸다:
U_i = {(u_1(l), u_2(l), ..., u_i(l)) \in {0,1}^i : l \in [L] }
전술한 바와 같이, 디코딩의 각각의 스테이지에서, 어느 추측이 유지될 예정인 생존자인지가 결정된다. 그 다음, U_i에서의 각각의 생존자(u_1, ..., u_i)가 복사되고, 단일의 새로운 비트를 이용하여 (u_1, ..., u_i, 0) 와 (u_1, ..., u_i, 1)로 확장된다. U_i^*는 새로운 2L개의 생존자를 나타낸다. 2L개의 확률(또는 유사한 비례 함수)가 다음에 기초하여 평가된다:
Pr(y_1, ..., y_N|(u_1(l),u_2(l), ..., u_i(l), 0)), l\in [L]
및
Pr(y_1, ..., y_N|(u_1(l),u_2(l), ..., u_i(l), 1)), l\in [L]
L개의 생존자의 새로운 리스트 U_{i+1}은 2L개의 확률 중 가장 높은 L개의 확률을 성취하는 U_i^*에서 L개의 벡터로 설정된다. 예를 들어, 각각의 스테이지에서, 정확한 것이 되는 더 높은 확률을 갖는 추측(예를 들어, 0 또는 1)이 노이즈 관찰(y_1, y_2, ..., y_N)에 기초하여 선택된다. 이러한 방식으로 연속 리스트 디코딩을 활용하는 것은 폴라 채널 코딩에서 개선된 성능을 제공한다.
비교예에서, 폴라 코드의 디코딩은 모든 U 값과(예를 들어, 모든 생존자를 유지한다), 이전에 디코딩된 U 값의 부분 집합의 소정의 XOR 값과(여기에서는 부분 합(partial sum)이라 한다), 각각의 레지스터 입력에 제어 가능한 멀티플렉서(multiplexer; MUX) 모듈이 제공되는 레지스터에서 평가되는 임시 LLR 값에 대한 소정의 추가 포인터를 유지한다. 이 상황에서는, "U 값"과 "생존자"라는 용어는 교환 가능하게 사용될 수 있다. MUX의 입력은 리스트에서 다른 생존자의 모든 대응하는 레지스터에서 나온다. 폴라 코드의 리스트 디코딩은 전형적으로 이러한 방식으로 구현된다. 이 구현은 모든 생존 메모리 유닛의 내용을 단일 클록에서 다른 생존 메모리로 복사하는 것을 가능하게 하고, 폴라 코드의 리스트 디코딩 동안 정확한 생존 관리를 가능하게 한다. 그러나, 이 구현은 하드웨어 컴포넌트를 위해 필요한 물리적 공간 및 전력 소비 모두에 관하여 높은 비용을 가진다.
본 발명의 예시적인 실시예는 채널 편파 코드를 디코딩하는 동안 사용되는 리스트 연속 제거 디코딩 기술 동안 생존 관리에 대한 개선되고 효율적인 접근 방식을 제공한다. 생존 관리에 대한 개선된 접근 방식은 비교예에 비하여 더 적은 리소스를 필요로 하는 메모리 모듈 내에 생존 데이터(예를 들어, 생존 비트)를 저장하는 효율적인 방식을 포함한다. 예를 들어, 비교예에서의 다른 기술과는 달리, 예시적인 실시예에 의해 제공된 디코딩 기술은 레지스터 및 멀티플렉서의 사용 없이(결과적으로, 멀티플렉서의 입력 및 출력을 라우팅하는데 사용되는 버스에 대한 필요성 없이) 구현될 수 있다. 예시적인 실시예에 의해 제공되는 디코딩 기술이 메모리 모듈에서 구현되고 데이터가 컴퓨터 레지스터와 멀티플렉서에 의해 저장되고 관리되는 것을 요구하지 않기 때문이, 더 적은 공간이 디코딩 회로에서 점유된다.
예를 들어, 예시적인 실시예는 디코딩 단계/스테이지의 각각에서 현재 처리되고 유지된 L개의 생존자의 메모리를 유지하는 개선된 스킴을 제공하며, 이는 아래에서 상세히 설명될 것이다. 예를 들어, U 값(예를 들어, 생존자)에 관하여, 예시적인 실시예에 따라, 전술한 바와 같이, 레지스터와 MUX 유닛을 활용하지 않고(따라서, 레지스터와 MUX 유닛 사이의 추가적인 라우팅 없이) U 값이 관리될 수 있다. 예시적인 실시예는 비용이 드는 복사 동작에 대한 필요성 없이 정규의 메모리 블록에 U 값을 저장하는 능력을 제공한다. 부분 합에 관하여, 예시적인 실시예는 포인터만이 복사되는 포인터 기반의 메모리를 활용하는 저장 아키텍처를 제공한다. 또한, 예시적인 실시예에 따라, 중간 LLR 값을 위하여 사용되는 동일한 포인터가 또한 부분 합 값을 위하여 사용될 수 있다. 이러한 실시예에서, 부분 합에 관한 복사 동작이 중간 LLR 값을 위하여 이미 사용되고 있는 포인터 복사 절차와 결합될 수 있기 때문에, 정규의 메모리 블록 모듈이 부분 합을 위하여 사용되고, 전형적으로 부분 합을 위하여 구체적으로 요구되는 추가 레지스터 및 추가 복사 동작이 필요하지 않다.
비교예에서, 값을 스위칭하는 레지스터에서 구현되는 포인터의 사용이 폴라 코드의 리스트 디코딩의 일부 단계 동안 사용될 수 있기 때문에, 이는 전형적으로 중간 LLR 값을 위하여만 사용된다. 즉, 전형적으로, 폴라 코드의 리스트 디코딩 동안, 레지스터에서 구현되는 포인터는 중간 LLR 값을 위하여 사용될 수 있지만, U 값과 부분 합 값을 관리하는데 사용되지 않는다; 대신에, 효율적이지 않은 스위칭 회로를 포함하는 큰 레지스터 블록이 전형적으로 U 값과 부분 합을 관리하는데 사용될 수 있다. 대조적으로, 본 발명의 예시적인 실시예에 따르면, 도 2 내지 4를 참조하여 아래에서 더욱 상세히 설명되는 바와 같이, U 값에 관하여, "좌우" 생존자의 효율적인 동적 분류(sorting) 프로세스가 레지스터 및/또는 포인터를 활용하지 않고 메모리 블록에서 구현 가능하다. 부분 합 값에 관하여, 본 발명의 예시적인 실시예는 중간 LLR 값을 위하여 이미 사용된 동일한 포인터를 활용하는 포인터 기반의 생존 메모리의 구조적인 구현을 제공하여, 효율성을 개선한다. 예를 들어, 아래에서 상세히 설명되는 바와 같이, 예시적인 실시예는 어떠한 기계도 중복시키지 않고(예를 들어, LLR 중간값을 위한 전용 기계를 요구하지 않고) 부분 합 값을 위하여 LLR 중간값을 위해 사용되는 동일한 기계(예를 들어, 동일한 디코더 유닛과 메모리 모듈)를 활용한다.
본 발명의 예시적인 실시예에 따라, 여분의 비트가 각 생존 비트마다 저장된다. 따라서, 본 명세서에서 설명된 비교예에 비하여, L 길이-N 생존자를 저장하는데 필요한 메모리의 양이 2배가 된다. 예시적인 실시예에 따라 본 명세서에서 설명된 스킴은 레지스터가 아닌 메모리 모듈에 구현 가능하다. 또한, 본 명세서에서 설명된 스킴은 비교예에서 사용되는 복잡한 MUX 입력 스위칭 로직 및 각각의 레지스터마다 필요한 라우팅을 필요로 하지 않는다.
여기에서, 메모리 값은 a_i(l) 및 b_i(l)에 따라 표시되고, 여기에서 i/in[N]은 로우(row) 인덱스이고, l/in[L]은 컬럼(column) 인덱스이다. L은 리스트 크기를 나타내고, N은 메모리에 입력되는 전체 비트를 나타낸다. 전체로서, N*2L 생존 비트가 유지된다(NL 생존 비트 대신에). 메모리 값은 디코딩 절차 동안 라인별로 설정된다. i번째 절차 스테이지에서, 0에 의해 확장된 l번째 생존자가 L개의 생존자 내에 유지되는 경우에 그리고 그 경우에만 a_i(l)은 1로 설정된다. 유사하게, l번째 생존자가 추가적인 하나의 비트 확장으로 유지되는 경우에 그리고 그 경우에만 b_i(l)은 1로 설정된다. 생존 확장이 L 생존자 경로 내에서 다음 디코딩 스테이지(i+1번째 스테이지)로 유지되지 않을 때, 비트는 0으로 설정된다.
도 2는 본 발명의 예시적인 실시예에 따라 4의 리스트 크기를 갖는 리스트 디코더 유닛의 생존자를 나타내는 부분 2진 트리를 도시한다.
도 3은 2진 트리의 각각의 레벨에 대응하는 a_i(l) 및 b_i(l)의 대응하는 값이 2진 트리 위에 놓이는 도 2의 부분 2진 트리를 도시한다.
도 2 및 도 3을 참조하면, 각각의 단계에서, 2진 트리(201/301)가 확장된다. 그러나, 리스트 크기가 4이기 때문에, 단지 4개의 에지가 유지된다. 즉, 도 2 및 3에 도시된 바와 같이, 각각의 단계에서, 최대 4개의 에지가 유지된다. 대응하는 a_i(l) 및 b_i(l)는 아래에서 도시되고, 각각의 세미콜론은 데이터의 새로운 로우를 나타낸다:
a = [1; 11; 1100; 1000; 0100; 1000]
및
b = [1; 11; 0101; 1011; 0111; 0011]
생존자는 전후로 메모리 내용을 판독함으로써 재생될 수 있다. 예를 들어, 도 2 및 도 3에서 도시된 트리를 하부로부터 위로 탐색하면, 마지막 로우는 a = 1000 및 b = 0011이다. 그 결과, 4개의 꼭지점(vertex)이 도시된다: 제1 a 비트가 1이고 제1 b 비트가 0이기 때문에, 0 에지를 가지지만 1 에지를 가지지 않는 제1(예를 들어, 가장 왼쪽) 꼭지점, 제2 a 비트와 제2 b 비트가 모두 0이기 때문에 에지를 가지지 않는 제2 꼭지점, 제3 a 비트가 0이고 제3 b 비트가 1이기 때문에, 0 에지를 가지지 않지만 1 에지를 가지는 제3 꼭지점, 및 제4 a 비트가 0이고 제4 b 비트가 1이기 때문에, 0 에지를 가지지 않지만 1 에지를 가지는 제4(예를 들어, 가장 오른쪽) 꼭지점.
트리의 하부로부터 상부로 이동하는 다음 로우는 a = 0100 및 b = 0111이다. 그 결과, 4개의 꼭지점이 도시된다: 제1 a 비트와 제1 b 비트가 모두 0이기 때문에, 에지를 가지 않는 제1(예를 들어, 가장 왼쪽) 꼭지점, 제2 a 비트와 제2 b 비트가 모두 1이기 때문에 0 에지와 1 에지를 모두 가지는 제2 꼭지점, 제3 a 비트가 0이고 제3 b 비트가 1이기 때문에, 0 에지를 가지지 않지만 1 에지를 가지는 제3 꼭지점, 및 제4 a 비트가 0이고 제4 b 비트가 1이기 때문에, 0 에지를 가지지 않지만 1 에지를 가지는 제4(예를 들어, 가장 오른쪽) 꼭지점.
트리의 하부로부터 상부로 이동하는 다음 로우는 a = 1000 및 b = 1011이다. 그 결과, 4개의 꼭지점이 도시된다: 제1 a 비트와 제1 b 비트가 모두 1이기 때문에, 0 에지와 1 에지를 가지는 제1(예를 들어, 가장 왼쪽) 꼭지점, 제2 a 비트와 제2 b 비트가 모두 0이기 때문에 에지를 가지지 않는 제2 꼭지점, 제3 a 비트가 0이고 제3 b 비트가 1이기 때문에, 0 에지를 가지지 않지만 1 에지를 가지는 제3 꼭지점, 및 제4 a 비트가 0이고 제4 b 비트가 1이기 때문에, 0 에지를 가지지 않지만 1 에지를 가지는 제4(예를 들어, 가장 오른쪽) 꼭지점.
트리의 하부로부터 상부로 이동하는 다음 로우는 a = 1100 및 b = 0101이다. 그 결과, 4개의 꼭지점이 도시된다: 제1 a 비트가 1이고 제1 b 비트가 0이기 때문에, 0 에지를 가지지만 1 에지를 가지지 않는 제1(예를 들어, 가장 왼쪽) 꼭지점, 제2 a 비트와 제2 b 비트가 모두 1이기 때문에 0 에지와 1 에지를 가지는 제2 꼭지점, 제3 a 비트와 제3 b 비트가 모두 0이기 때문에 에지를 가지지 않는 제3 꼭지점, 및 제4 a 비트가 0이고 제4 b 비트가 1이기 때문에, 0 에지를 가지지 않지만 1 에지를 가지는 제4(예를 들어, 가장 오른쪽) 꼭지점.
트리의 하부로부터 상부로 이동하는 다음 로우는 a = 11 및 b = 11이다. 그 결과, 2개의 꼭지점이 도시된다: 제1 a 비트와 제1 b 비트가 모두 1이기 때문에 0 에지와 1 에지를 가지는 제1 꼭지점, 및 제2 a 비트와 제2 b 비트가 모두 1이기 때문에 0 에지와 1 에지를 가지는 제2 꼭지점.
트리의 하부로부터 상부로 이동하는 다음 로우(예를 들어, 가장 위의 로우)는: a = 1 및 b = 1이다. 그 결과, a 비트와 b 비트가 모두 1이기 때문에 0 에지와 1 에지를 가지는 꼭지점이 도시된다.
어느 생존자가 어느 디코더 유닛에 속하는지 판단하기 위하여, 각각의 디코더 유닛은 log_2L 비트의 크기의 단일 포인터를 유지할 수 있고, 여기에서 L은 리스트 크기이다. 어느 디코더 유닛이 가장 효율적인 유닛인지 판단되면, 필요한 생존자의 복사가 마지막 로우의 어느 생존된 에지로부터 시작하는지 판단된다. 예시적인 실시예에서, 판단이 생존자 내의 데이터에 기초하는 경우에, 포인터는 유지되지 않는다. 이러한 경우는 생존자를 선택하는 것이 에러 검출 코드를 통해 구현되는 상황일 수 있다. 그러나, 에러 검출이, 예를 들어, 평가 동안 비트들이 비트별로 CRC(cyclic redundancy check) 검출기를 위하여 제공되는 CRC 구현에서 일반적인 바와 같이, 디코딩 절차 동안 수행된다면, 에러 검출 코드의 중간 내부 상태가 유지되고 복사된다. 이것이 전형적으로 전반적인 생존자 길이에 관하여 작은 개수의 비트에 이르기 때문에, 효율성이 유지된다.
도 4는, 본 발명의 예시적인 실시예에 따라, 메모리 모듈에서 채널 편파 코드를 디코딩하는 동안 생성된 생존 데이터를 저장하는 방법을 나타내는 흐름도이다.
블록(401)에서, 리스트 크기가 설정된다. 전술한 바와 같이, 리스트 크기는 채널 편파 코드 디코딩 프로세스에서 사용된 디코더의 개수에 대응한다. 예를 들어, 채널 편파 코드를 디코딩하는 것이 4개의 디코더를 이용하여 수행된다면, 리스트 크기는 4로 설정된다. 블록(402)에서, 입력 비트들의 스트림(예를 들어, 전술한 바와 같은 입력 비트들(u_1, u_2, ..., u_N))이 채널 편파 코드를 디코딩하기 위하여 사용되고 있는 디코더로 입력된다. 블록(403)에서, 입력 비트들이 순차적으로 디코딩된다. 전술한 바와 같이, 입력 비트들은 리스트 연속 제거 디코딩 기술을 이용하여 순차적으로 디코딩될 수 있다. 각각의 입력 비트는 각각의 입력 비트 전에 디코딩된 모든 이전 입력 비트들을 이용하여 디코딩된다. 예를 들어, 입력 비트들이 u_1, u_2, ..., u_N이면, 입력 비트 u_1의 값이 계산되고, 그 다음, 입력 비트 u_2의 값이 입력 비트 u_1의 계산된 값을 이용하여 계산되고, 이어, 입력 비트 u_3의 값이 입력 비트 u_1 및 u_2의 계산된 값을 이용하여 계산되고, 이어 유사하게 계속된다.
블록(404)에서, 복수의 생존 비트들이 블록(403)에서 계산된 디코딩된 입력 비트 중에서 선택된다. 블록(405)에서, 선택된 생존 비트들이 메모리 모듈에 저장된다. 선택된 생존 비트들은 2진 트리 구성으로 저장되고, 도 2 및 도 3을 참조하여 전술한 바와 같이, 2진 트리 구성의 각각의 레벨에서의 에지의 개수가 리스트 개수를 초과하지 않는다. 따라서, 리스트 크기가 4로 설정되면, 2진 트리 구성의 각각의 레벨에서의 에지의 개수는 4를 초과하지 않는다.
입력 비트들이 리스트 연속 제거 디코딩 기술을 이용하여 순차적으로 디코딩될 때, 복수의 중간값들이 계산된다. 중간값들은 디코딩 프로세스의 상이한 스테이지에서 디코더 유닛에 의해 계산된 값들이다. 중간값들은, 전술한 바와 같이, 입력 비트가 현재 디코딩되기 전에 디코딩된 이전 입력 비트들의 값들의 복수의 추측들에 기초하여 각각의 입력 비트를 디코딩함으로써 계산된다. 또한, 전술한 바와 같이, 각각의 추측은 0 또는 1인 비트 값에 대응한다.
예시적인 실시예에 따라, 메모리 모듈에서 채널 편파 코드를 디코딩하는 동안 생성된 생존자 데이터를 저장하는 방법은, LLR(log-likelihood ratio) 기술을 이용하여 복수의 추측들 중에서 복수의 가장 가능성 있는 추측들을 선택하는 단계와, 메모리 모듈에 선택된 가장 가능성 있는 추측들을 유지하는 단계와, 가장 가능성 있는 추측들로서 선택되지 않은 복수의 추측들로부터 추측들을 폐기하는 단계를 포함한다.
도 2 및 도 3을 다시 참조하면, 예시적인 실시예에 따라, 데이터 세트 a는 채널 편파 코드를 디코딩하는 동안 생성된 복수의 중간값들 중에서 제1 중간값 그룹에 대응하고, 데이터 세트 b는 채널 편파 코드를 디코딩하는 동안 생성된 복수의 중간값들 중에서 제2 중간값 그룹에 대응한다. 2진 트리 구성(201/301)으로 메모리 모듈에 생존 비트를 저장하는 프로세스는 다음의 방식으로 수행될 수 있다.
도 3에 도시된 바와 같이, 제1 중간값 그룹(데이터 세트 a)과 제2 중간값 그룹(데이터 세트 b)은 각각 복수의 비트 서브 그룹으로 분할된다. 각각의 서브 그룹은 순차적인 디코딩 프로세스의 스테이지 중 하나 동안 획득된 중간값에 대응한다(예를 들어, 입력 비트 u_1의 디코딩은 제1 스테이지에서 발생하고, 입력 비트 u_2의 디코딩은 제2 스테이지에서 발생하고, 입력 비트 u_3의 디코딩은 제3 스테이지에서 발생하는 등이다).
예를 들어, 도 3을 참조하여 설명되는 예시적인 디코딩 시나리오에서, 데이터 세트 a = [1; 11; 1100; 1000; 0100; 1000]이고, 데이터 세트 b = [1; 11; 0101; 1011; 0111; 0011]이다. 제1 중간값 그룹(데이터 세트 a)에서, 제1 비트 서브 그룹은 비트 1을 포함하고, 제2 비트 서브 그룹은 비트 11을 포함하고, 제3 비트 서브 그룹은 비트 1100을 포함하고, 제4 비트 서브 그룹은 비트 1000을 포함하고, 제5 비트 서브 그룹은 비트 0100을 포함하고, 제6 비트 서브 그룹은 비트 1000을 포함한다. 제2 중간값 그룹(데이터 세트 b)에서, 제1 비트 서브 그룹은 비트 1을 포함하고, 제2 비트 서브 그룹은 비트 11을 포함하고, 제3 비트 서브 그룹은 비트 0101을 포함하고, 제4 비트 서브 그룹은 비트 1011을 포함하고, 제5 비트 서브 그룹은 비트 0111을 포함하고, 제6 비트 서브 그룹은 비트 0011을 포함한다.
각각의 디코딩 스테이지는 2진 트리 구성(301)의 레벨에 대응한다. 예를 들어, 도 3을 계속 참조하면, a = 1 및 b = 1인 디코딩 프로세스의 제1 스테이지는 2진 트리 구성(301)의 레벨 0에 대응한다. a = 11 및 b = 11인 디코딩 프로세스의 제2 스테이지는 2진 트리 구성(301)의 레벨 1에 대응한다. a = 1100 및 b = 0101인 디코딩 프로세스의 제3 스테이지는 2진 트리 구성(301)의 레벨 2에 대응한다. a = 1000 및 b = 1011인 디코딩 프로세스의 제4 스테이지는 2진 트리 구성(301)의 레벨 3에 대응한다. a = 0100 및 b = 0111인 디코딩 프로세스의 제5 스테이지는 2진 트리 구성(301)의 레벨 4에 대응한다. a = 1000 및 b = 0011인 디코딩 프로세스의 제6 스테이지는 2진 트리 구성(301)의 레벨 5에 대응한다.
중간값들의 비교가 스테이지별 기반으로 이루어진다. 예를 들어, 도 3을 계속 참조하면, 스테이지 1에서, 데이터 세트 a의 제1 비트(비트 값 = 1)는 데이터 세트 b의 제1 비트(비트 값 = 1)에 비교된다. 스테이지 2에서, 데이터 세트 a의 제1 비트(비트 값 = 1)는 데이터 세트 b의 제1 비트(비트 값 = 1)에 비교되고, 데이터 세트 a의 제2 비트(비트 값 = 1)는 데이터 세트 b의 제2 비트(비트 값 = 1)에 비교된다. 스테이지 3에서, 데이터 세트 a의 제1 비트(비트 값 = 1)는 데이터 세트 b의 제1 비트(비트 값 = 0)에 비교되고, 데이터 세트 a의 제2 비트(비트 값 = 1)는 데이터 세트 b의 제2 비트(비트 값 = 1)에 비교되고, 데이터 세트 a의 제3 비트(비트 값 = 0)는 데이터 세트 b의 제3 비트(비트 값 = 0)에 비교되고, 데이터 세트 a의 제4 비트(비트 값 = 0)는 데이터 세트 b의 제4 비트(비트 값 = 1)에 비교된다. 스테이지 4에서, 데이터 세트 a의 제1 비트(비트 값 = 1)는 데이터 세트 b의 제1 비트(비트 값 = 1)에 비교되고, 데이터 세트 a의 제2 비트(비트 값 = 0)는 데이터 세트 b의 제2 비트(비트 값 = 0)에 비교되고, 데이터 세트 a의 제3 비트(비트 값 = 0)는 데이터 세트 b의 제3 비트(비트 값 = 1)에 비교되고, 데이터 세트 a의 제4 비트(비트 값 = 0)는 데이터 세트 b의 제4 비트(비트 값 = 1)에 비교된다. 스테이지 5에서, 데이터 세트 a의 제1 비트(비트 값 = 0)는 데이터 세트 b의 제1 비트(비트 값 = 0)에 비교되고, 데이터 세트 a의 제2 비트(비트 값 = 1)는 데이터 세트 b의 제2 비트(비트 값 = 1)에 비교되고, 데이터 세트 a의 제3 비트(비트 값 = 0)는 데이터 세트 b의 제3 비트(비트 값 = 1)에 비교되고, 데이터 세트 a의 제4 비트(비트 값 = 0)는 데이터 세트 b의 제4 비트(비트 값 = 1)에 비교된다. 스테이지 6에서, 데이터 세트 a의 제1 비트(비트 값 = 1)는 데이터 세트 b의 제1 비트(비트 값 = 0)에 비교되고, 데이터 세트 a의 제2 비트(비트 값 = 0)는 데이터 세트 b의 제2 비트(비트 값 = 0)에 비교되고, 데이터 세트 a의 제3 비트(비트 값 = 0)는 데이터 세트 b의 제3 비트(비트 값 = 1)에 비교되고, 데이터 세트 a의 제4 비트(비트 값 = 0)는 데이터 세트 b의 제4 비트(비트 값 = 1)에 비교된다.
2진 트리 구성(301)의 에지는 제1 중간값 그룹(데이터 세트 a)과 제2 중간값 그룹(데이터 세트 b)에 속하는 비트 서브 그룹들의 비교 결과에 기초하여 생성된다.
예를 들어, 2진 트리 구성(301)에서의 꼭지점은 제1 중간값 그룹(데이터 세트 a)과 제2 중간값 그룹(데이터 세트 b)에 속하는 비트에 대응한다. 도 3에서, 각각의 레벨에서, 왼쪽에서 오른쪽으로의 방향으로 배치된 꼭지점들은 데이터 세트 a 및 b에서 비트 1 내지 4에 각각 대응한다. 따라서, 레벨 0은, 데이터 세트 a 및 b가 단지 하나의 비트만을 포함하기 때문에, 하나의 꼭지점만을 포함하고, 레벨 1은 데이터 세트 a 및 b가 단지 2개의 비트만을 포함하기 때문에, 2개의 꼭지점만을 포함한다. 각각의 레벨 내의 각각의 꼭지점에서 생성된 에지들은, 전술한 바와 같이, 그 레벨에 대응하는 서브 그룹의 비트의 비교 결과에 기초하여 생성된다.
예시적인 실시예에서, 비교된 중간값들이 1과 동일한 제1 그룹(데이터 세트 a)의 서브 그룹에서의 중간값과 0과 동일한 제2 그룹(데이터 세트 b)의 서브 그룹에서의 중간값을 포함할 때, 단지 왼쪽 에지만이 꼭지점에서 생성된다. 이 대신에, 비교된 중간값들이 0과 동일한 제1 그룹(데이터 세트 a)의 서브 그룹에서의 중간값과 1과 동일한 제2 그룹(데이터 세트 b)의 서브 그룹에서의 중간값을 포함할 때, 단지 오른쪽 에지만이 꼭지점에서 생성된다. 이 대신에, 비교된 중간값들이 1과 동일한 제1 그룹(데이터 세트 a)의 서브 그룹에서의 중간값과 1과 동일한 제2 그룹(데이터 세트 b)의 서브 그룹에서의 중간값을 포함할 때, 왼쪽 에지와 오른쪽 에지 모두가 꼭지점에서 생성된다. 이 대신에, 비교된 중간값들이 0과 동일한 제1 그룹(데이터 세트 a)의 서브 그룹에서의 중간값과 0과 동일한 제2 그룹(데이터 세트 b)의 서브 그룹에서의 중간값을 포함할 때, 왼쪽 에지와 오른쪽 에지의 어느 것도 꼭지점에서 생성되지 않는다.
도 3에 도시된 예시적인 실시예에서, 왼쪽 에지는 0의 비트 값을 나타내고, 오른쪽 에지는 1의 비트 값을 나타낸다. 그러나, 예시적인 실시예는 이에 한정되지 않는다. 예를 들어, 예시적인 실시예에서, 왼쪽 에지는 1의 비트 값을 나타내고 오른쪽 에지는 1의 비트 값을 나타낼 수 있다.
2진 트리 표현(301)에서의 에지의 생성은 도 3에 개시된 스킴에 한정되지 않는다.
예를 들어, 예시적인 실시예에서, 비교된 중간값들이 0과 동일한 제1 그룹(데이터 세트 a)의 서브 그룹에서의 중간값과 1과 동일한 제2 그룹(데이터 세트 b)의 서브 그룹에서의 중간값을 포함할 때, 단지 왼쪽 에지만이 꼭지점에서 생성된다. 이 대신에, 비교된 중간값들이 1과 동일한 제1 그룹(데이터 세트 a)의 서브 그룹에서의 중간값과 0과 동일한 제2 그룹(데이터 세트 b)의 서브 그룹에서의 중간값을 포함할 때, 단지 오른쪽 에지만이 꼭지점에서 생성된다. 이 대신에, 비교된 중간값들이 1과 동일한 제1 그룹(데이터 세트 a)의 서브 그룹에서의 중간값과 1과 동일한 제2 그룹(데이터 세트 b)의 서브 그룹에서의 중간값을 포함할 때, 왼쪽 에지와 오른쪽 에지 모두가 꼭지점에서 생성된다. 이 대신에, 비교된 중간값들이 0과 동일한 제1 그룹(데이터 세트 a)의 서브 그룹에서의 중간값과 0과 동일한 제2 그룹(데이터 세트 b)의 서브 그룹에서의 중간값을 포함할 때, 왼쪽 에지와 오른쪽 에지의 어느 것도 꼭지점에서 생성되지 않는다.
예시적인 실시예에서, 비교된 중간값들이 1과 동일한 제1 그룹(데이터 세트 a)의 서브 그룹에서의 중간값과 0과 동일한 제2 그룹(데이터 세트 b)의 서브 그룹에서의 중간값을 포함할 때, 단지 왼쪽 에지만이 꼭지점에서 생성된다. 이 대신에, 비교된 중간값들이 0과 동일한 제1 그룹(데이터 세트 a)의 서브 그룹에서의 중간값과 1과 동일한 제2 그룹(데이터 세트 b)의 서브 그룹에서의 중간값을 포함할 때, 단지 오른쪽 에지만이 꼭지점에서 생성된다. 이 대신에, 비교된 중간값들이 0 동일한 제1 그룹(데이터 세트 a)의 서브 그룹에서의 중간값과 0 동일한 제2 그룹(데이터 세트 b)의 서브 그룹에서의 중간값을 포함할 때, 왼쪽 에지와 오른쪽 에지 모두가 꼭지점에서 생성된다. 이 대신에, 비교된 중간값들이 1 동일한 제1 그룹(데이터 세트 a)의 서브 그룹에서의 중간값과 1 동일한 제2 그룹(데이터 세트 b)의 서브 그룹에서의 중간값을 포함할 때, 왼쪽 에지와 오른쪽 에지의 어느 것도 꼭지점에서 생성되지 않는다.
예시적인 실시예에서, 비교된 중간값들이 0과 동일한 제1 그룹(데이터 세트 a)의 서브 그룹에서의 중간값과 1과 동일한 제2 그룹(데이터 세트 b)의 서브 그룹에서의 중간값을 포함할 때, 단지 왼쪽 에지만이 꼭지점에서 생성된다. 이 대신에, 비교된 중간값들이 1과 동일한 제1 그룹(데이터 세트 a)의 서브 그룹에서의 중간값과 0과 동일한 제2 그룹(데이터 세트 b)의 서브 그룹에서의 중간값을 포함할 때, 단지 오른쪽 에지만이 꼭지점에서 생성된다. 이 대신에, 비교된 중간값들이 0 동일한 제1 그룹(데이터 세트 a)의 서브 그룹에서의 중간값과 0 동일한 제2 그룹(데이터 세트 b)의 서브 그룹에서의 중간값을 포함할 때, 왼쪽 에지와 오른쪽 에지 모두가 꼭지점에서 생성된다. 이 대신에, 비교된 중간값들이 1 동일한 제1 그룹(데이터 세트 a)의 서브 그룹에서의 중간값과 1 동일한 제2 그룹(데이터 세트 b)의 서브 그룹에서의 중간값을 포함할 때, 왼쪽 에지와 오른쪽 에지의 어느 것도 꼭지점에서 생성되지 않는다.
포인터 기반의 아키텍처에서, 크기 L의 리스트를 위한 리스트 디코딩은 L개의 상이한 메모리 모듈에서 동작하는 L개의 디코더 유닛으로 유지된다. 새로운 리스트가 결정될 때(예를 들어, 새로운 정보 비트가 디코딩될 때), 리스트에서의 주어진 생존자는, 예를 들어 삭제될 다른 생존자를 위하여, 복제될 수 있다. 이 경우에, 다른 즉각적인 가설을 이용하여, 주어진 생존자에 대하여 2개의 새로운 디코더 유닛이 동작한다. 이것은, 예를 들어, 주어진 메모리 모듈로부터 다른 메모리 모듈로 생존자를 복사하는 것을 도시하는 도 5a 및 5b에 예시된다. 도 5a는 이러한 복사 동작 이전의 메모리 모듈(예를 들어, 메모리 모듈 1(501), 메모리 모듈 2(502) 및 메모리 모듈 3(503))과 디코더 유닛(예를 들어, 디코더 유닛 1(504), 디코더 유닛 2(505) 및 디코더 유닛 3(506))을 포함하고, 도 5b는 이러한 복사 동작 이후의 메모리 모듈(예를 들어, 메모리 모듈 1(501), 메모리 모듈 3(503) 및 메모리 모듈 1의 복사본(507))과 디코더 유닛(예를 들어, 디코더 유닛 1(504), 디코더 유닛 2(505) 및 디코더 유닛 3(506))을 포함한다. 도 5a 및 5b에 도시된 바와 같이, 디코더 유닛(2)의 생존자는 폐기되고, 디코더 유닛 2는 복사 동작 이전에 디코더 유닛 1에 의해 평가된 생존자의 브랜치(branch)에 동작하도록 설정된다. 그 결과, 메모리 모듈 1의 전체 내용이 메모리 모듈 2로 복사된다.
포인터 기반의 아키텍처에서, 생존 메모리 자체를 복사하는 대신에, 디코더 유닛이 함께 동작하는 메모리 모듈을 지시하는(point) 메모리 모듈 포인터가 활용된다. 일부 경우에, 예를 들어, 부분 합 메모리와 중간 LLR 메모리를 위하여, 각각의 디코더 유닛은 상이한 메모리 어드레스 공간을 위해 메모리 모듈 포인터 세트를 활용한다. 그 결과, 주어진 생존자로부터 이의 복사 목적지로의 메모리 모듈의 내용의 복사 대신에, 그 생존자에 대응하는 포인터만이 복사된다. 이는, 예를 들어, 도 6에 예시된다.
도 6을 참조하면, 디코더 유닛(601)은 2개의 포인터(605, 606)를 포함하고, 디코더 유닛(601)은 3개의 메모리 모듈(602, 603, 604)과 통신한다. 각각의 포인터는 메모리 모듈 1(602), 메모리 모듈 2(603) 및 메모리 모듈 3(604) 중 하나로 지시하도록 1, 2 또는 3의 값을 가질 수 있다. 2개의 어드레스 공간 그룹(예를 들어, 그룹 A 및 그룹 B)으로부터의 데이터는 디코더 유닛(601)에 의해 판독되거나 기록된다. 예를 들어, 그룹 A에 속하는 어드레스를 갖는 데이터가 판독되거나 기록될 때, 디코더 유닛(601)은 그룹 A 내의 어드레스에 대하여 포인터에 의해 설정된 메모리 모듈과 함께 동작한다. 디코더 유닛(601)에 의해 유지되는 생존자가 복사될 때(예를 들어, 다른 브랜치로 또는 그로부터), 크기가 클 수 있는 메모리 모듈은 복사되지 않는다; 대신에, 디코더 유닛(601)에 의해 유지된 포인터만이 복사된다. 이 경우에, 새로운 디코더 유닛이 이 생존자를 생성한 디코더 유닛과 동일한 데이터를 판독할 수 있다(예를 들어, 복사 동작 이전에). 데이터 기록 동작은 상이한 포인터 값으로 수행되어, 2개의 디코더 유닛이 복사와 동작으로부터 2개의 브랜치를 생성하게 한다.
예시적인 실시예에 따라, L개의 디코더 유닛(M_1, ..., M_L)은 각각 포인터 함수 P_l(adr)→[1:L]를 가지며, 여기에서, 1≤l≤L이다. 함수 포인터는 어드레스를 메모리 모듈로 매핑하고, M_l에 의한 판독 또는 기록 동작이 어드레스 adr에 대하여 수행될 때, 판독 또는 기록이 메모리 모듈 P_l(adr)로부터 수행된다. 포인터 함수는 상수일 수 있고, 어드레스 adr의 일부만이 포인트 함수의 관심 대상일 수 있고, 그리고/또는 상이한 포인트가 판독 및 기록 동작을 위하여 사용될 수 있다. 예시적인 실시예에 따라, 생존 데이터가 이미 판독되거나 사용되면 포인터 어드레스는 수정되어, 대응하는 어드레스 공간이 생존자의 양 브랜치에 대하여 상이한 기록 동작을 위하여 사용되게 한다. 기록 동작은 상수로 설정될 수 있다. 예를 들어, P_l은 어드레스 adr에 종속하지 않는 [1:L]의 순열일 수 있는 반면, 판독 포인터는 어드레스 adr에 종속할 수 있다. 주어진 어드레스 세트로부터의 모든 판독 동작이 끝나면, 포인터는 일정한 기록 포인터 순열에 따라 설정된다.
도 7은 N = 2에 대한 부분 합 배열을 나타내는 채널 디코딩 그래프(701)를 도시한다. 도 8은 N = 4에 대한 부분 합 배열을 나타내는 채널 디코딩 그래프(801)를 도시한다. 도 9는 N = 8에 대한 부분 합 배열을 나타내는 채널 디코딩 그래프(901)를 도시한다. 도 7 내지 9에서, N은 노이즈 채널(예를 들어, 메모리 모듈)로 입력된 비트의 개수를 나타낸다.
본 명세서에서, 부분 합 아키텍처가, 실제 물리적 매체에서 선형 어드레스 공간으로 변환될 수 있는, 컬럼과 로우 어드레스에 의해 형성된 어드레스 공간에 대하여 설명된다. 도 7 내지 9를 참조하면, 채널 디코딩 그래프가 메모리 배열을 예시하는데 사용된다. 그래프에서, X 형상의 서브 그래프에서의 각각의 하부 왼쪽 꼭지점이 부분 합의 비트를 저장할 수 있다. 이 부분 합은 이 꼭지점을 위한 LLR의 평가에 사용된다. 예를 들어, 이 부분 합 비트는 대응하는 꼭지점의 LLR의 평가에서 부호를 제어하여, 대응하는 X 형상 서브 그래프의 2개의 오른쪽 꼭지점의 LLR이 더해져야 하는지 빼져야 하는지 나타낸다. 도 7 내지 9에서, 부분 합은 동작이 표시된 부분 합을 필요로 하는 대응하는 하부의 왼쪽 꼭지점 다음에 표시된다.
도 7을 참조하면, 그래프는 2개의 가장 오른쪽 노드에 연결된 2개의 가장 왼쪽 노드를 포함하는 4개의 노드로 구성된다. 도 7에서, 유일한 부분 합은 u_1이다. 도 7에 도시된 바와 같이, N = 2일 때, 전체 그래프가 X 형상의 그래프이다. 도 8을 참조하면, 부분 합은 u_1, u_2, u_3 및 u_1 + u_2이다. 부분 합 u_1은 u_2의 판단을 위하여 LLR을 제공하는데 요구되고, 부분 합 u_2 및 u_1 + u_2는 중간 LLR 평가를 위하여 요구되고, 부분 합 u_3은 u_4의 판단에 있어서 LLR의 평가를 위하여 요구된다. 도 9를 참조하면, 부분 합은 u_1, u_2, u_3, u_4, u_5, u_6, u_1 + u_2, u_2 + u_4, u_3 + u_4, u_5 + u_6 및 u_1 + u_2 + u_3 + u_4이다.
예시적인 실시예에 따르면, 생존자 복사본은 컬럼 어드레스를 위한 포인터가 유지되는 경우에만 반송된다. 크기 L의 리스트에 대하여, L개의 메모리 모듈이 부분 합을 위하여 유지되고, 각각의 비트는 도 7 내지 9에 도시된 디코딩 그래프에서의 위치에 대응하는 로우 어드레스 및 컬럼 어드레스를 통해 어드레싱된다. 예를 들어, N = 4(도 8 참조)에 대하여, 생존자 복사가 이루어져야 하면, 부분 합 u_1 및 u_3이 판독되어야 하는 메모리 모듈이 복사된다. N = 8(도 9 참조)에 대하여, u_1, u_5, u_3 및 u_7이 판독되어야 하는 메모리 모듈은 단일 포인터 내에 복사된다. 유사하게, u_1 + u_2, u_5 + u_6, u_2 및 u_6이 판독되어야 하는 메모리 모듈과, u_1 + u_2 + u_3 + u_4, u_3 + u_4, u_2 + u_4 및 u_4이 판독되어야 하는 메모리 모듈은 단일 포인터 내에 복사된다. 그 결과, L개의 디코더 유닛(M_1, ..., M_L)의 각각은 필요한 부분 합이 어느 L 메모리 모듈로부터 판독되어야 하는지 각각의 디코더 유닛에 나타내는 logN 포인터의 리스트를 유지한다(공간 [1:L]로). 예를 들어, p_l^c를 디코더 유닛 M_l을 위한 포인터라 한다(여기에서, 1≤l≤L).
포인터 함수를 활용하면, 판독될 어드레스는 쌍 adr = (r, c)이고, 매핑은 컬럼 어드레스에만 의존한다. l 기계(M_l)가 로우 r 및 컬럼 c에서 부분 합을 판독하도록 요구될 때, 디코더 유닛은 메모리 모듈로부터 p_l^c를 판독한다. 더욱 구체적으로는, 디코더 유닛은 로우 r와 컬럼 c의 위치에서 부분 합을 판독한다. 디코더 유닛(M_l)의 모든 부분 합이 l 번째 메모리 모듈로 기록되고, 컬럼이 디코더 유닛에 의해 기록되면 l 번째 기계의 포인터 p_l^c가 1로 설정된다.
예시적인 실시예에 따라, 판독 및 기록 동작은 임의의 시간에 수행되지 않는다. 오히려, 디코딩 그래프 상의 동작을 참조하여, 꼭지점은 동일한 컬럼으로부터의 꼭지점의 가변 길이 연속 시퀀스로 동작된다. 또한, 이러한 시퀀스 내에서, 꼭지점은 디코딩 그래프에서 하부 로우로부터 상부 로우로 처리된다. 이 접근 방식은 이러한 연속 시퀀스 내의 순서에 관계없이 변하지 않는 디코딩 결과와 중간 LLR 값에 악영향을 미치지 않으며, 부분 합이 미래의 동작을 위하여 쉽게 제공될 수 있게 하는 이점을 제공한다. 이 프로세스 배열 시퀀스가 도 10에 도시된다.
도 10은, 본 발명의 예시적인 일 실시예에 따라, 꼭지점의 프로세스 배열 시퀀스를 디코딩 그래프(1001)에 도시한다.
도 10을 참조하면, 노드 1 내지 8은 채널 LLR 노드이다. 나머지 노드들은 다음의 순서로 처리된다:
1.
15, 13, 11, 9
2.
21, 17
3.
25
4.
29
5.
23, 19
6.
27
7.
31
8.
16, 14, 12, 10
9.
22, 18
10.
26
11.
30
12.
24, 20
13.
28
14.
32
14개의 그룹은 전형적인 연속 제거 배열 프로세스에 따른 그루핑에 대응한다. 그러나, 본 발명의 예시적인 실시예에 따라, 각각의 그룹 내의 노드를 임의로 처리하는 대신, 처리는 14개의 그룹에서 하부 로우로부터 상부 로우로 수행된다. 예를 들어, 그룹 1(예를 들어, 15에서 9로), 그룹 2(예를 들어, 21에서 17로), 그룹 5(예를 들어, 23에서 19로), 그룹 8(예를 들어, 16에서 10로) 등으로 도시된 바와 같이, 노드는 높은 숫자에서 낮은 숫자로 진행된다.
도 10을 계속 참조하면, 각각의 꼭지점 내에서, 2개의 판독 동작(각각 상이한 컬럼으로부터)과 단일의 기록 동작에 기초하는 부분 합의 단일 XOR 연산이 수행된다. 일부 경우에, 데이터가 이미 사용 가능하기 때문에, 또는 부분 합 연산이 필요하지 않거나 평가되지 않기 때문에, 판독 및 기록 동작은 불필요할 수 있다. N = 8일 때의 모든 부분 합 데이터의 평가가 도 9 및 10에 도시된 디코딩 그래프를 참조하여 여기에서 설명된다. 표 1은 N = 8일 때 모든 판독 및 기록 동작을 포함하는 상세한 부분 합 평가를 예시한다. 표 1에서의 어드레스는 도 10에서의 노드 번호에 대응한다.
처리된 노드 | 현재 처리에서 필요한 부분 합 | 평가된 부분 합 | 판독 값 | 기록 값 |
15, 13, 11, 9, 21, 17 | 부분 합 평가 없음 | |||
25 | u_1(노드 25의 LLR 결과에 기초하여 디코딩됨) | u_1은 어드레스 29에 기록된다 | ||
29 | u_2(노드 29의 LLR 결과에 기초하여 디코딩됨) | u_2는 어드레스 23에 기록된다 | ||
23 | u_2 | u_2 | ||
19 | u_2+u_1 | u_2+u_1 | u_2, u_1 | u_2+u_1은 어드레스 19에 기록된다 |
27 | u_3(노드 27의 LLR 결과에 기초하여 디코딩됨). | u_3은 어드레스 31에 기록된다 | ||
31 | u_3 | u_4(노드 31의 LLR 결과에 기초하여 디코딩됨) | u_3 | u_4는 어드레스 16에 기록된다 |
16 | u_4 | u_4 | ||
14 | u_2+u_4 | u_2+u_4 | u_2, u_4 | |
12 | u_3+u_4 | u_3+u_4 | u_3, u_4 | u_3+u_4는 어드레스 12에 기록된다 |
10 | u_1+u_2+u_3+u_4 | (u_1+u_2)+(u_3+u_4) | u_1+u_2, u_3+u_4 | |
22,18 | ||||
26 | u_5(노드 26의 LLR 결과에 기초하여 디코딩됨) | u_5는 어드레스 30에 기록된다 | ||
30 | u_5 | u_6(노드 26의 LLR 결과에 기초하여 디코딩됨) | u_5 | u_6은 어드레스 24에 기록된다 |
24 | u_6 | u_6 | ||
20 | u_5+u_6 | u_5+u_6 | u_5, u_6 | |
28 | u_7(노드 28의 LLR 결과에 기초하여 디코딩됨) | u_7은 어드레스 32에 기록된다 | ||
32 | u_7 | u_7 |
<N = 8에 대한 부분 합 평가 순서>
예시적인 실시예에 따르면, 컬럼이 처리되고 다음 컬럼으로 이동하기 전에 모든 중간 데이터가 판단되는 디코딩 스케줄 때문에, 모든 부분 합 정보가 주어진 컬럼으로부터 판독되면, 부분 합 정보는 추가 판독을 위하여 활용되지 않는다. 그 결과, LLR(부분 합 정보에 관한 부호를 제어한다)을 평가할 때, 부분 합은 고려된 컬럼의 노드를 처리한 동안 한 번만 활용된다. 예를 들어, 각각의 부분 합은 한 번 판독되어 사용되고, 다른 LLR 평가를 위하여 더 이상 활용되지 않는다. 그러나. 이 부분 합은 다른 부분 합의 평가를 위하여 활용된다. 본 발명의 예시적인 실시예에 따른 디코딩 스케줄은 하부 로우로부터 상부 로우로 노드를 처리함으로써 이 문제를 해결하여, 부분 합이 판독되고, 평가되고, 다른 컬럼으로 기록된다. 새로운 부분 합이 기록되는 컬럼은 이미 이전에 판독되고, 이 정보는 이 이상 필요하지 않다. 따라서, 컬럼이 기록되면, 이 컬럼 내의 모든 부분 합은 이미 판독되어 처리되고, 이에 따라 이러한 값들에 대한 포인터일 필요가 없다.
도 8을 다시 참조하면, N = 4일 때, 부분 합 u_3이 기록되면, 부분 합 u_1은 이미 사용되었고 후속 동작에서 판독되지 않는다(u_3은 다음에 판독될 데이터이다). 따라서, 이 컬럼에 대한 포인터는 u_1이 기록된 메모리 모듈이 아닌 u_3이 기록된 메모리 모듈에 따라 변경된다. N = 8일 때인 도 9와 표 1을 다시 참조하면, 부분 합 u_1 + u_2와 u_2가 동일한 메모리 모듈에 위치된다. 부분 합 u_5 + u_6과 u_6가 기록될 때, 부분 합 u_1 + u_2와 u_2는 더 이상 필요하지 않다. 따라서, 이 컬럼의 포인터는 u_1 + u_2와 u_2가 위치하는 위치 대신에 u_5 + u_6과 u_6이 기록되는 위치로 설정된다. 알 수 있는 바와 같이, 예시적인 실시예에 따라, 주어진 컬럼에 기록된 모든 부분 합 값은 동일한 2번의 복사 동작 사이에 연속으로 기록되었고, 따라서 동일한 생존자에 속한다. 이러한 부분 합의 전부는 동일한 생존자에 대응하고, 이에 따라 단일 포인터 위치(예를 들어, 컬럼 포인터)에 의해 유지된다. 이미 판독된 부분 합은 하부 로우로부터 상부 로우로 처리가 수행될 때 필요하지 않다. 그 결과, 예시적인 실시예에 따라, 이미 판독된 컬럼의 포인터는 유지되지 않는다.
도 11은, 본 발명의 예시적인 실시예에 따라, 채널 편파 코드 디코딩 시스템을 도시한다.
도 11에 도시된 채널 편파 코드 디코딩 시스템(1100)은, 전술한 바와 같이, 본 발명의 예시적인 실시예에 따른 메모리 모듈에서 채널 편파 코드를 디코딩하는 동안 생성된 생존자 데이터를 저장하는 방법을 구현할 수 있다. 예시적인 실시예에서, 채널 편파 코드 디코딩 시스템(1100)은 데이터 버스(1105)를 통해 서로 연결된 메모리 모듈(1101), 복수의 디코더 유닛(1102), 프로세서(1103) 및 메모리 컨트롤러(1104)를 포함한다. 각각의 디코더 유닛(1102)은 전술한 바와 같이 리스트 연속 제거 디코딩 기술을 이용하여 입력 비트를 디코딩하는 리스트 연속 제거 디코더 유닛일 수 있다. 메모리 모듈(1101)은 전술한 바와 같이 플래시 메모리일 수 있다. 메모리 컨트롤러(1104)는 프로세서(1103)의 제어 하에 있을 수 있고, 메모리 모듈(1101)을 제어할 수 있다.
본 발명이 이의 예시적인 실시예를 참조하여 도시되고 설명되었지만, 형태와 상세에 있어서 다양한 변화가 후술하는 청구범위에 의해 정의되는 본 발명의 기술적 사상과 범위를 벗어나지 않으면서 이루어질 수 있다는 것이 통상의 기술자에 의해 이해될 것이다.
101
노이즈 채널
201, 301 2진 트리
501, 502, 503 메모리 모듈
504, 505, 506 디코더
601 디코더
602, 603, 604 메모리 모듈
605, 606 포인터
701, 801, 901, 1001 채널 디코딩 그래프
1100 채널 편파 코드 디코딩 시스템
1101 메모리 모듈
1102 디코더 유닛
1103 프로세서
1104 메모리 컨트롤러
1105 버스
201, 301 2진 트리
501, 502, 503 메모리 모듈
504, 505, 506 디코더
601 디코더
602, 603, 604 메모리 모듈
605, 606 포인터
701, 801, 901, 1001 채널 디코딩 그래프
1100 채널 편파 코드 디코딩 시스템
1101 메모리 모듈
1102 디코더 유닛
1103 프로세서
1104 메모리 컨트롤러
1105 버스
Claims (20)
- 메모리 모듈에서 채널 편파 코드(channel polarization code)를 디코딩하는 동안 생성된 생존자 데이터를 저장하는 방법에 있어서,
상기 채널 편파 코드를 디코딩하는데 사용되는 디코더 유닛의 개수에 대응하는 리스트 크기를 설정하는 단계;
입력 비트들의 스트림을 상기 디코더 유닛에 입력하는 단계;
상기 입력 비트들을 순차적으로 디코딩하는 단계로서, 각각의 입력 비트는 상기 각각의 입력 비트 전에 디코딩된 모든 이전 입력 비트들을 이용하여 디코딩되는 단계;
디코딩된 상기 입력 비트들 중에서 복수의 생존 비트들을 선택하는 단계; 및
선택된 상기 생존 비트들을 2진 트리 구성으로 상기 메모리 모듈에 저장하는 단계로서, 상기 2진 트리 구성의 각각의 레벨에서의 에지의 개수는 상기 리스트 크기를 초과하지 않는 단계를 포함하는 생존자 데이터를 저장하는 방법. - 제1항에 있어서,
상기 입력 비트들은 리스트 연속 제거 디코딩 기술(list successive cancellation decoding)을 이용하여 순차적으로 디코딩되는 생존자 데이터를 저장하는 방법. - 제2항에 있어서,
리스트 연속 제거 디코딩 기술을 이용하여 상기 입력 비트들을 순차적으로 디코딩하는 것은,
복수의 중간값들을 계산하는 것을 포함하고,
상기 중간값은 상기 각각의 입력 비트 전에 디코딩된 상기 이전 입력 비트들의 값들에 대한 복수의 추측들에 기초하여 상기 각각의 입력 비트를 디코딩함으로써 계산되고, 각각의 추측은 0이거나 1인 비트 값에 대응하는 생존자 데이터를 저장하는 방법. - 제3항에 있어서,
LLR(log-likelihood ratio) 기술을 이용하여 상기 복수의 추측들 중에서 복수의 가장 가능성 있는 추측들을 선택하는 단계;
선택된 상기 가장 가능성 있는 추측들을 상기 메모리 모듈에 유지하는 단계; 및
상기 가장 가능성 있는 추측들로서 선택되지 않은 상기 복수의 추측들로부터 상기 추측들을 폐기하는 단계를 더 포함하는 생존자 데이터를 저장하는 방법. - 제3항에 있어서,
선택된 상기 생존 비트들을 2진 트리 구성으로 상기 메모리 모듈에 저장하는 단계는,
상기 복수의 중간값으로부터의 중간값의 제1 그룹을 상기 복수의 중간값으로부터의 중간값의 제2 그룹과 비교하는 단계; 및
상기 비교하는 단계의 결과에 기초하여 상기 2진 트리 구성의 레벨들의 각각에서 에지를 생성하는 단계
를 포함하고,
상기 제1 및 제2 그룹은 서브 그룹으로 분할되고, 각각의 서브 그룹은 후속 디코딩 프로세스의 복수의 스테이지들 중 하나의 스테이지 동안 획득된 중간값에 대응하고,
상기 비교하는 단계는 스테이지별 기반으로 이루어지고,
각각의 스테이지는 상기 2진 트리 구성의 레벨들 중 한 레벨에 대응하는 생존자 데이터를 저장하는 방법. - 제5항에 있어서,
상기 비교하는 단계의 결과에 기초하여 상기 2진 트리 구성의 레벨들의 각각에서 에지를 생성하는 단계는,
상기 제1 그룹의 서브 그룹으로부터의 중간값들을 상기 제2 그룹의 서브 그룹으로부터의 대응하는 중간값들과 비교하는 단계;
상기 비교된 중간값들이 1과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 0과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 왼쪽 에지만 생성하는 단계;
상기 비교된 중간값들이 0과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 1과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 상기 꼭지점에서 오른쪽 에지만 생성하는 단계;
상기 비교된 중간값들이 1과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 1과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 상기 꼭지점에서 상기 왼쪽 에지와 상기 오른쪽 에지를 모두 생성하는 단계; 및
상기 비교된 중간값들이 0과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 0과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 상기 꼭지점에서 상기 왼쪽 에지와 상기 오른쪽 에지의 어느 것도 생성하지 않는 단계를 포함하고,
상기 꼭지점은 상기 비교된 중간값들에 대응하는 생존자 데이터를 저장하는 방법. - 제6항에 있어서,
상기 왼쪽 에지는 0의 값을 나타내고, 상기 오른쪽 에지는 1의 값을 나타내는 생존자 데이터를 저장하는 방법. - 제6항에 있어서,
상기 왼쪽 에지는 1의 값을 나타내고, 상기 오른쪽 에지는 0의 값을 나타내는 생존자 데이터를 저장하는 방법. - 제5항에 있어서,
상기 비교하는 단계의 결과에 기초하여 상기 2진 트리 구성의 레벨들의 각각에서 에지를 생성하는 단계는,
상기 제1 그룹의 서브 그룹으로부터의 중간값들을 상기 제2 그룹의 서브 그룹으로부터의 대응하는 중간값들과 비교하는 단계;
상기 비교된 중간값들이 0과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 1과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 왼쪽 에지만 생성하는 단계;
상기 비교된 중간값들이 1과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 0과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 상기 꼭지점에서 오른쪽 에지만 생성하는 단계;
상기 비교된 중간값들이 1과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 1과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 상기 꼭지점에서 상기 왼쪽 에지와 상기 오른쪽 에지를 모두 생성하는 단계; 및
상기 비교된 중간값들이 0과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 0과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 상기 꼭지점에서 상기 왼쪽 에지와 상기 오른쪽 에지의 어느 것도 생성하지 않는 단계
를 포함하고,
상기 꼭지점은 상기 비교된 중간값들에 대응하는 생존자 데이터를 저장하는 방법. - 제9항에 있어서,
상기 왼쪽 에지는 0의 값을 나타내고, 상기 오른쪽 에지는 1의 값을 나타내는 생존자 데이터를 저장하는 방법. - 제9항에 있어서,
상기 왼쪽 에지는 1의 값을 나타내고, 상기 오른쪽 에지는 0의 값을 나타내는 생존자 데이터를 저장하는 방법. - 제5항에 있어서,
상기 비교하는 단계의 결과에 기초하여 상기 2진 트리 구성의 레벨들의 각각에서 에지를 생성하는 단계는,
상기 제1 그룹의 서브 그룹으로부터의 중간값들을 상기 제2 그룹의 서브 그룹으로부터의 대응하는 중간값들과 비교하는 단계;
상기 비교된 중간값들이 1과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 0과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 왼쪽 에지만 생성하는 단계;
상기 비교된 중간값들이 0과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 1과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 상기 꼭지점에서 오른쪽 에지만 생성하는 단계;
상기 비교된 중간값들이 0과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 0과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 상기 꼭지점에서 상기 왼쪽 에지와 상기 오른쪽 에지를 모두 생성하는 단계; 및
상기 비교된 중간값들이 1과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 1과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 상기 꼭지점에서 상기 왼쪽 에지와 상기 오른쪽 에지의 어느 것도 생성하지 않는 단계를 포함하고,
상기 꼭지점은 상기 비교된 중간값들에 대응하는 생존자 데이터를 저장하는 방법. - 제5항에 있어서,
상기 비교하는 단계의 결과에 기초하여 상기 2진 트리 구성의 레벨들의 각각에서 에지를 생성하는 단계는,
상기 제1 그룹의 서브 그룹으로부터의 중간값들을 상기 제2 그룹의 서브 그룹으로부터의 대응하는 중간값들과 비교하는 단계;
상기 비교된 중간값들이 0과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 1과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 왼쪽 에지만 생성하는 단계;
상기 비교된 중간값들이 1과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 0과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 상기 꼭지점에서 오른쪽 에지만 생성하는 단계;
상기 비교된 중간값들이 0과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 0과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 상기 꼭지점에서 상기 왼쪽 에지와 상기 오른쪽 에지를 모두 생성하는 단계; 및
상기 비교된 중간값들이 1과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 1과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 상기 꼭지점에서 상기 왼쪽 에지와 상기 오른쪽 에지의 어느 것도 생성하지 않는 단계를 포함하고,
상기 꼭지점은 상기 비교된 중간값들에 대응하는 생존자 데이터를 저장하는 방법. - 제1항에 있어서,
상기 메모리 모듈은 플래시 메모리인,
생존자 데이터를 저장하는 방법. - 메모리 모듈;
입력 비트들의 스트림을 수신하여 순차적으로 디코딩하는 복수의 디코더 유닛으로서, 상기 입력 비트들은 채널 편파 코드를 나타내고, 각각의 입력 비트는 상기 각각의 입력 비트 전에 디코딩된 모든 이전 입력 비트들을 이용하여 디코딩되는, 상기 복수의 디코더 유닛;
리스트 크기를 설정하고, 디코딩된 상기 입력 비트들 중에서 복수의 생존 비트들을 선택하는 프로세서로서, 상기 리스트 크기는 상기 디코더 유닛의 전체 개수에 대응하는, 상기 프로세서; 및
상기 프로세서의 제어 하에서 선택된 상기 생존 비트들을 2진 트리 구성으로 상기 메모리 모듈 내에 저장하도록 상기 메모리 모듈을 제어하는 메모리 컨트롤러로서, 상기 2진 트리 구성의 각각의 레벨에서의 에지의 개수는 상기 리스트 크기를 초과하지 않는, 상기 메모리 컨트롤러를 포함하는 채널 편파 코드 디코딩 시스템. - 제15항에 있어서,
각각의 상기 디코더 유닛은 리스트 연속 제거 디코딩 기술을 이용하여 상기 입력 비트들을 디코딩하는 리스트 연속 제거 디코더 유닛인 채널 편파 코드 디코딩 시스템. - 제16항에 있어서,
상기 디코더 유닛은 복수의 중간값들을 계산함으로써 상기 리스트 연속 제거 디코딩 기술을 이용하여 상기 입력 비트들을 디코딩하고,
상기 중간값은, 상기 각각의 입력 비트 전에 디코딩된 상기 이전 입력 비트들의 값들에 대한 복수의 추측들에 기초하여 상기 각각의 입력 비트를 디코딩함으로써 계산되고, 각각의 추측은 0이거나 1인 비트 값에 대응하는 채널 편파 코드 디코딩 시스템. - 제17항에 있어서,
상기 프로세서의 제어 하에서 선택된 상기 생존 비트들을 2진 트리 구성으로 상기 메모리 모듈 내에 저장하도록 상기 메모리 모듈을 제어하는 메모리 컨트롤러는,
상기 복수의 중간값으로부터의 중간값의 제1 그룹을 상기 복수의 중간값으로부터의 중간값의 제2 그룹과 비교하고,
비교 결과에 기초하여 상기 2진 트리 구성의 레벨들의 각각에서 에지를 생성하며,
상기 제1 및 제2 그룹은 서브 그룹으로 분할되고, 각각의 서브 그룹은 후속 디코딩 프로세스의 복수의 스테이지들 중 하나의 스테이지 동안 획득된 중간값에 대응하고,
상기 비교는 스테이지별 기반으로 이루어지고,
각각의 스테이지는 상기 2진 트리 구성의 레벨들 중 한 레벨에 대응하는 채널 편파 코드 디코딩 시스템. - 제18항에 있어서,
상기 비교 결과에 기초하여 상기 2진 트리 구성의 레벨들의 각각에서 에지를 생성하는 것은,
상기 제1 그룹의 서브 그룹으로부터의 중간값들을 상기 제2 그룹의 서브 그룹으로부터의 대응하는 중간값들과 비교하는 것;
상기 비교된 중간값들이 1과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 0과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 꼭지점에서 왼쪽 에지만 생성하는 것;
상기 비교된 중간값들이 0과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 1과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 상기 꼭지점에서 오른쪽 에지만 생성하는 것;
상기 비교된 중간값들이 1과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 1과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 상기 꼭지점에서 상기 왼쪽 에지와 상기 오른쪽 에지를 모두 생성하는 것; 및
상기 비교된 중간값들이 0과 동일한 상기 제1 그룹의 서브 그룹에서의 중간값과 0과 동일한 상기 제2 그룹의 서브 그룹에서의 중간값을 포함할 때, 상기 꼭지점에서 상기 왼쪽 에지와 상기 오른쪽 에지의 어느 것도 생성하지 않는 것을 포함하고,
상기 꼭지점은 상기 비교된 중간값들에 대응하는 채널 편파 코드 디코딩 시스템. - 제15항에 있어서,
상기 메모리 모듈은 플래시 메모리인 채널 편파 코드 디코딩 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/680,661 US10523367B2 (en) | 2017-08-18 | 2017-08-18 | Efficient survivor memory architecture for successive cancellation list decoding of channel polarization codes |
US15/680,661 | 2017-08-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190019798A true KR20190019798A (ko) | 2019-02-27 |
KR102355082B1 KR102355082B1 (ko) | 2022-01-25 |
Family
ID=65360803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170149378A KR102355082B1 (ko) | 2017-08-18 | 2017-11-10 | 채널 편파 코드의 연속 제거 리스트 디코딩을 위한 효율적인 생존 메모리 아키텍처 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10523367B2 (ko) |
KR (1) | KR102355082B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220114724A (ko) * | 2021-02-09 | 2022-08-17 | 아주대학교산학협력단 | 극 부호 연속 제거 비트 반전 복호 장치 및 방법 |
US12021619B2 (en) | 2022-11-21 | 2024-06-25 | Samsung Electronics Co., Ltd. | Method and device for performing PAC code-based hybrid decoding in wireless communication system |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106301387B (zh) * | 2016-08-15 | 2019-10-11 | 东南大学 | 一种分布式排序方法以及采用该方法构成crc辅助极化码连续消除列表译码器的方法 |
KR20210108789A (ko) | 2020-02-26 | 2021-09-03 | 삼성전자주식회사 | 채널 코딩에서 디코딩을 위한 장치 및 방법 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150106270A (ko) * | 2014-03-11 | 2015-09-21 | 삼성전자주식회사 | 폴라 부호의 리스트 복호 방법 및 이를 적용한 메모리 시스템 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010206570A (ja) | 2009-03-04 | 2010-09-16 | Sony Corp | 復号装置、復号方法 |
US8584847B2 (en) | 2011-06-21 | 2013-11-19 | A.G. Findings & Mfg. Co., Inc. | Portable device case with corner protection element |
US9176927B2 (en) * | 2011-11-08 | 2015-11-03 | The Royal Institution For The Advancement Of Learning/Mcgill University | Methods and systems for decoding polar codes |
US9503126B2 (en) * | 2012-07-11 | 2016-11-22 | The Regents Of The University Of California | ECC polar coding and list decoding methods and codecs |
CN104038234B (zh) | 2013-03-07 | 2017-09-29 | 华为技术有限公司 | 极性码的译码方法和译码器 |
US9317365B2 (en) * | 2014-03-06 | 2016-04-19 | Seagate Technology Llc | Soft decoding of polar codes |
-
2017
- 2017-08-18 US US15/680,661 patent/US10523367B2/en active Active
- 2017-11-10 KR KR1020170149378A patent/KR102355082B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150106270A (ko) * | 2014-03-11 | 2015-09-21 | 삼성전자주식회사 | 폴라 부호의 리스트 복호 방법 및 이를 적용한 메모리 시스템 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220114724A (ko) * | 2021-02-09 | 2022-08-17 | 아주대학교산학협력단 | 극 부호 연속 제거 비트 반전 복호 장치 및 방법 |
US12021619B2 (en) | 2022-11-21 | 2024-06-25 | Samsung Electronics Co., Ltd. | Method and device for performing PAC code-based hybrid decoding in wireless communication system |
Also Published As
Publication number | Publication date |
---|---|
US10523367B2 (en) | 2019-12-31 |
US20190058547A1 (en) | 2019-02-21 |
KR102355082B1 (ko) | 2022-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10771091B2 (en) | Flash memory apparatus and storage management method for flash memory | |
US10019355B2 (en) | Flash memory apparatus and storage management method for flash memory | |
KR101438072B1 (ko) | 소거 없는 플래시 메모리의 다중 프로그래밍 | |
KR102355082B1 (ko) | 채널 편파 코드의 연속 제거 리스트 디코딩을 위한 효율적인 생존 메모리 아키텍처 | |
JP2016042380A (ja) | クロス・ページ・セクタ、マルチ・ページ符号化およびパー・ページ符号化を使用して多重レベル・セル・フラッシュ・メモリ・デバイスにデータを記憶するための方法および装置 | |
US9935659B2 (en) | Performance optimization in soft decoding for turbo product codes | |
US9954558B1 (en) | Fast decoding of data stored in a flash memory | |
US10776019B2 (en) | Memory system and method of controlling nonvolatile memory | |
US20190286517A1 (en) | Memory system and method of controlling non-volatile memory | |
JP2020046871A (ja) | メモリシステム | |
JP2018133087A (ja) | メモリのメモリセル内のデータの処理 | |
KR101631128B1 (ko) | 크기조정 상수를 사용하는 가변 노드 업데이터를 갖는 ldpc 디코더 | |
JP2022124682A (ja) | メモリシステム | |
US9236886B1 (en) | Universal and reconfigurable QC-LDPC encoder | |
CN108306652A (zh) | 一种低复杂度极化码ca-scl译码器 | |
KR20230100620A (ko) | 다단 연결 코드를 사용하는 계층적 오류 정정 코드 디코딩 | |
US20240154624A1 (en) | Flash memory apparatus and storage management method for flash memory | |
KR20160116980A (ko) | Ldpc 복호기의 vss 알고리즘을 위한 h 행렬의 스케줄링 장치 및 그 방법 | |
CN112951313A (zh) | 用于纠错的存储控制器、包括其的存储设备及其操作方法 | |
US11886738B2 (en) | Memory system and memory control method | |
US20190286522A1 (en) | Ldpc decoding device, memory system including the same and method thereof | |
US11664822B2 (en) | Multidimensional encoding and decoding in memory system | |
CN111404558B (zh) | 一种Polar码译码的方法、译码器及计算机存储介质 | |
JP2021141369A (ja) | メモリシステム | |
CN111106837A (zh) | 一种ldpc译码方法、译码装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |