KR20080048971A - 에이알피 인터리브를 가지는 터보 코드의 경합 방지 메모리매핑 기법을 위한 주소 생성 - Google Patents
에이알피 인터리브를 가지는 터보 코드의 경합 방지 메모리매핑 기법을 위한 주소 생성 Download PDFInfo
- Publication number
- KR20080048971A KR20080048971A KR1020070122802A KR20070122802A KR20080048971A KR 20080048971 A KR20080048971 A KR 20080048971A KR 1020070122802 A KR1020070122802 A KR 1020070122802A KR 20070122802 A KR20070122802 A KR 20070122802A KR 20080048971 A KR20080048971 A KR 20080048971A
- Authority
- KR
- South Korea
- Prior art keywords
- turbo
- memory
- decoding
- decoders
- memories
- Prior art date
Links
Images
Classifications
-
- 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/27—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 using interleaving techniques
- H03M13/2771—Internal interleaver for turbo codes
- H03M13/2775—Contention or collision free turbo code internal interleaver
-
- 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
-
- 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/27—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 using interleaving techniques
- H03M13/275—Interleaver wherein the permutation pattern is obtained using a congruential operation of the type y=ax+b modulo c
- H03M13/2753—Almost regular permutation [ARP] interleaver
-
- 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/27—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 using interleaving techniques
- H03M13/276—Interleaving address generation
-
- 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2957—Turbo codes and 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/65—Purpose and implementation aspects
- H03M13/6566—Implementations concerning memory access contentions
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
ARP(almost regular permutation) 인터리브를 가지는 터보 코드의 경합 방지 메모리 매핑을 하기 위한 주소 생성 기법이 제공된다. 본 발명의 새로운 수단은, 디코딩 프로세싱의 인터리브 역 순서(π-1)에 상응하는 어떤 주소 매핑(A)에 기초하는 인덱스 함수(F)를 이용하는 예측 주소 생성 기법이다. 병렬 터보 디코딩 프로세싱에 따라, 메모리 뱅크 위치들로부터 데이터 요소들을 순차적으로 액세싱하는 방법으로 자연 순서(natural order) 단계의 디코딩 프로세싱을 수행하는 대신에, 터보 코딩에서 사용된 매핑과 인터리브 함수 (π)에 기초한 인덱스 함수 (F)에 기초하여 주소들에 대한 액세싱이 수행된다. 다른 말로 하면, 자연 순서 단계의 디코딩 프로세싱에 대해, 메모리 뱅크 위치들로부터 데이터 요소들을 액세싱하는 것이 순차적이지 않다는 것이다. 상기 인덱스 함수 (F)는 인터리브 (π) 순서 단계의 디코딩 프로세싱이, 메모리 뱅크 위치들로부터 데이터 요소들을 순차적으로 액세싱하도록 한다.
Description
본 발명은 전반적으로 통신 시스템에 관련된 것이다. 더 상세하게는, 본 발명은 터보 코딩을 사용하는 통신 시스템에 관련된 것이다.
데이터 통신 시스템들은 오랜 기간 동안 계속적인 발전이 이뤄지고 있다. 최근에 상당한 관심을 끌게 된 통신 시스템으로는, 반복적 오류 정정 코드들(iterative error correction codes)을 사용하는 통신 시스템이 있다. 그 중에서도, 최근에 관심을 받아 온 통신 시스템의 한 특정한 방식은 바로 터보 코드(반복적 오류 정정 코드의 한 방식)를 사용하는 시스템이었다. 반복 코드들을 가지는 통신 시스템들은 주어진 신호 대 잡음비(signal to noise ratio, SNR)에 대해서, 종종 다른 방식의 코드들에 비해 더 낮은 비트 오류율(bit error rate, BER)을 달성할 수 있다.
이 분야의 기술 개발에 있어서, 지속적이고 중요한 방향은, 어떤 통신 시스템 내에서 주어진 BER을 달성하는 데에 요구되는 SNR을 낮추려고 끊임없이 시도하 는 것이었다. 이상적인 목표는 통신 채널에서 샤논의 한계(Shannon's limit)에 도달할 수 있도록 노력하는 것이었다. 샤논의 한계는, 어떤 특정한 SNR을 가지는 어떤 통신 채널 내에서, 그 통신 채널을 통해 오류가 전혀 없는(error free) 전송을 달성할 수 있을 경우의 데이터 전송률(data rate)이라고 볼 수 있다. 다른 말로 표현하면, 샤논의 한계는 어떤 주어진 변조 방식 및 코드 레이트(code rate)에 대해서, 채널 용량이 가질 수 있는 이론상의 경계라 할 수 있다.
상대적으로 낮은 데이터 처리율(data throughput rates)로 동작하기는 하지만, 그러한 상대적으로 낮은 오류율을 제공할 수 있는 터보 코드를 이용하는 것은 통신 채널 내에 대량의 잡음이 발생하는 통신 시스템들 내지 실질적으로 오류가 없는 통신이 가장 높은 우선순위를 차지하는 분야의 맥락(context)에서 주로 인정되어 왔다. 터보 코딩의 가장 초기의 응용 분야들 중 하나는, 정확한(즉, 이상에 가깝도록 오류가 없는) 통신이 핵심적인 설계 기준으로 요구되는 분야에 관련된 우주 응용 분야였다. 기술 개발의 방향은 이후에 지상 응용 분야 및 소비자 관련 응용 분야들을 개발하는 쪽으로 움직였다. 여전히, 우주 관련 응용 분야의 유산에 기초하여, 터보 코딩 분야에서의 개발 노력의 초점은, 높은 처리량을 달성하는 쪽보다는 상대적으로 낮은 오류 플로어(error floor)를 구현하는 쪽으로 계속되었다.
더 최근에 와서는, 이 기술분야의 초점은, 더 높은 양의 처리량을 지원하면서도 터보 코드의 맥락(context) 내에서 제공되어 왔던 상대적으로 낮은 오류 플로어를 여전히 유지하면서 동작할 수 있는 그러한 터보 코딩과 관련된 파생 기술들(variants)을 개발하는 방향으로 가고 있다.
사실, 통신 시스템들에서 처리량의 요구 조건이 증가함에 따라, 복수의 프로세서들과 복수의 메모리 뱅크들을 사용한 병렬 터보 디코딩도 필수적으로 되고 있다. 현재 많은 시스템들이 넓은 범위의 코드워드 크기를 지원하고 있다. 따라서, 병령 터보 디코더 설계에 있어서 효율과 유연성은 대단한 중요성을 지닌다.
일반적으로 말해서, 터보 코드를 사용하는 통신 시스템의 맥락에서 보면, 통신 채널의 한쪽 끝에는 인코더 기능을 가진 제1 통신 장치가 있고, 이 통신 채널의 다른 쪽 끝에는 디코더 기능을 가진 제2 통신 장치가 있다. 많은 사례들에서, 이러한 두 통신 장치들 중 어느 하나 또는 모두가 인코더 기능 및 디코더 기능(예를 들면, 양방향 통신 시스템 내에서의)을 가질 수 있다.
3GPP LTE의 채널 코딩 시스템 내에서는, 넓은 범위의 블록 크기(예를 들어, 터보 코드 블록 길이)를 공급하고 제공할 필요성 내지 그러한 요청이 있다. 더 나아가, 이러한 시스템의 터보 디코딩은 대단히 높은 데이터 처리량과 큰 블록 사이즈가 바람직하기 때문에, 일반적으로 병렬 디코딩 설계를 이용하여 구현될 필요가 있다. 병렬 디코딩은 경합 방지 메모리 액세싱(다시 말해, 어떤 한 터보 디코더(병렬 배치된 일단의 터보 디코더들 중의 하나)가 어떤 주어진 시점에 유일하게 메모리(병렬 배치된 일단의 메모리들 중의 하나)에 액세스하는 것)을 필요로 한다.
본 발명은 도면의 간단한 설명, 발명의 상세한 설명 및 청구범위 등을 통해 더욱 자세히 설명될 장치 및 동작의 방법들에 관한 것이다.
본 발명의 일 측면에 따르면, 터보 코딩된 신호에 대한 병렬 디코딩을 수행하도록 동작하는 터보 디코더가 제공되는데, 상기 터보 디코더는,
복수의 터보 디코더들; 및
복수의 메모리들을 포함하며,
상기 복수의 터보 디코더들은 상기 제1 메모리에 대한 읽기 및 쓰기를 수행하도록 동작하고;
제1 디코딩 반복(iteration) 동안에는
자연적 순서 단계(natural order phase)의 디코딩 프로세싱을 수행할 때에, 상기 복수의 터보 디코더들의 각 터보 디코더는 상기 복수의 메모리들 중 하나의 대응하는 메모리로부터 정보를 검색(retrieve)하고 처리하도록 동작하되, 상기 대응하는 메모리는 상기 복수의 터보 디코더들 및 상기 복수의 메모리들 사이의 경합 방지 매핑(contention-free mapping)에 기초하여 결정되고, 상기 하나의 대응되는 메모리 내에서 상기 정보에 할당되는 첫 번째 위치는 상기 하나의 대응되는 메모리의 주소 매핑에 기초한 인덱스 함수에 기초하고;
인터리빙 순서 단계(interleaved order phase)의 디코딩 프로세싱을 수행할 때에, 상기 복수의 터보 디코더들의 각 터보 디코더는 상기 복수의 메모리들 중 대응하는 하나의 제1 메모리 내의 첫 번째 메모리 위치로부터 정보를 검색하고 처리하도록 동작하며,
제2 디코딩 반복 동안에는
자연적 순서 단계의 디코딩 프로세싱을 수행할 때에, 상기 복수의 터보 디코더들의 각 터보 디코더는 상기 복수의 메모리들 중 하나의 대응되는 메모리로부터 정보를 복원하고 처리하도록 동작하되, 상기 대응되는 메모리는 상기 복수의 터보 디코더들 및 상기 복수의 메모리들 사이의 경합 방지 매핑에 기초하여 결정되고, 상기 하나의 대응되는 메모리 내에서 상기 정보에 할당되는 두 번째 위치는 상기 하나의 대응되는 메모리의 상기 주소 매핑에 기초한 상기 인덱스 함수에 기초하며;
인터리빙 순서 단계의 디코딩 프로세싱을 수행할 때, 상기 복수의 터보 디코더들의 각 터보 디코더는 상기 복수의 메모리들 중 대응되는 하나의 제2 메 모리 내의 두 번째 메모리 위치로부터 정보를 검색하고 처리하도록 동작하며, 또한
상기 복수의 터보 디코더들은 상기 터보 코딩된 신호로 인코딩된 적어도 하나의 비트로 구성된 최적 추정치(best estimate)를 생성하도록 동작한다.
바람직하게는, 상기 터보 디코더는 상기 하나의 대응되는 메모리의 상기 주소 매핑에 기초하여 상기 인덱스 함수를 생성하도록 동작하는 예측 주소 모듈(anticipatory address module)을 더 포함한다.
바람직하게는, 상기 터보 디코더는 상기 터보 코딩된 신호의 반복적인 디코딩 프로세싱 동안에 상기 복수의 터보 디코더들 및 상기 복수의 메모리들 사이의 경합 방지 메모리 매핑을 수행하도록 동작하는 프로세싱 모듈(processing module)을 더 포함한다.
바람직하게는, 상기 터보 코딩된 신호를 생성하는 터보 인코딩 동안에는 상기 터보 코딩된 신호는 ARP(almost regular permutation) 인터리빙(interleaving)을 거친다.
바람직하게는, 터보 디코딩을 수행할 때, 상기 복수의 터보 디코더들 중 한 터보 디코더는 부가 정보(extrinsic information)에 대해 ARP 인터리빙을 수행하고, 그에 의해 "사전 확률(a priori probability, app)" 정보를 생성하도록 동작한다.
바람직하게는, 상기 복수의 터보 디코더들 중 한 터보 디코더는
상기 터보 코딩된 신호와 연관된 복수의 메트릭들을 수신하고, 상기 복수의 메트릭들을 상기 하나의 대응되는 메모리에 저장하며, 상기 하나의 대응되는 메모 리 내에 저장된 상기 복수의 메트릭들의 상기 주소 매핑에 기초하여 상기 인덱스 함수를 생성하도록 동작하는 예측 주소 모듈(anticipatory address module);
상기 복수의 메트릭들에 대해 SISO(soft-in/soft-out) 디코딩을 수행함으로써 제1 부가 정보를 계산하도록 동작하는 제1 SISO 디코더;
상기 제1 부가 정보에 대해 인터리빙을 수행함으로써 제1 "사전 확률(app)" 정보를 생성하도록 동작하는 인터리버 모듈(interleaver module);
상기 제1 app 정보에 대해 SISO 디코딩을 수행하도록 동작함으로써 제2 부가 정보를 생성하도록 동작하는 제2 SISO 디코더;
상기 제2 부가 정보에 대해 디-인터리빙(de-interleaving)을 수행함으로써 제2 app 정보를 생성하도록 동작하는 디-인터리버(de-interleaver); 및
상기 제2 SISO 디코더에 의해 생성된 가장 최근의 부가 정보를 처리함으로써 상기 터보 코딩된 신호 내에 인코딩된 정보 비트의 최적 추정치들(best estimates)을 생성하도록 동작하는 출력 프로세서(output processor)를 포함한다.
바람직하게는, 상기 터보 디코더는 시간 공유(time sharing) 기법을 이용함으로써, 상기 복수의 터보 디코더들이 자연 순서 단계의 디코딩 프로세싱과 인터리빙 순서 단계 디코딩 프로세싱을 모두 수행하도록 하며,
인터리빙 순서 단계의 디코딩 프로세싱을 수행하는 때에, 상기 복수의 터보 디코더들에 의해 상기 복수의 메모리들의 주소들이 순차적으로 액세스된다.
바람직하게는, 상기 복수의 터보 디코더들은 제1 개수의 터보 디코더들을 포함하며, 상기 복수의 메모리들은 제2 개수의 메모리들을 포함한다.
바람직하게는, 상기 터보 디코더는 무선 개인 통신 장치 내에 구현된다.
바람직하게는, 상기 터보 디코더는 통신 장치 내에 구현되고,
상기 통신 장치는 위성 통신 시스템, 무선 통신 시스템, 유선 통신 시스템 및 광 통신 시스템 중의 적어도 한 가지 내에 구현된다.
본 발명의 다른 측면에 따르면, 터보 코딩된 신호에 대해 병렬 디코딩(parallel decoding)을 수행하도록 동작하는 터보 디코더가 제공되며, 상기 터보 디코더는
복수의 터보 디코더들;
복수의 메모리들; 및
상기 복수의 메모리 중 하나의 대응되는 메모리의 주소 매핑에 기초하여 인덱스 함수를 생성하도록 동작하는 예측 주소 모듈을 포함하고,
상기 복수의 터보 디코더들은 상기 복수의 메모리들에 대해 읽기 및 쓰기 동작을 수행하도록 동작하며,
제1 디코딩 반복 동안에는
자연적 순서 단계 디코딩 프로세싱을 수행할 때에는, 상기 복수의 터보 디코더들의 각 터보 디코더는 상기 복수의 메모리들 중 하나의 대응되는 메모리로부터 정보를 검색하고 처리하도록 동작하되, 상기 대응되는 메모리는 상기 복수의 터보 디코더들 및 상기 복수의 메모리들 사이의 경합 방지 매핑에 기초하여 결정되고, 상기 하나의 대응되는 메모리 내의 상기 정보에 할당된 첫 번째 위치는 상기 하나의 대응되는 메모리의 상기 주소 매핑에 기초한 상기 인덱스 함수에 기초하 고,
인터리빙 순서 단계 디코딩 프로세싱을 수행할 때에는, 상기 복수의 터보 디코더들의 각 터보 디코더는 상기 복수의 메모리들 중 대응되는 하나의 제1 메모리 내의 첫 번째 메모리 위치로부터 정보를 검색하고 처리하도록 동작하며,
제2 디코딩 반복 동안에는
자연적 순서 단계 디코딩 프로세싱을 수행할 때에는, 상기 복수의 터보 디코더들의 각 터보 디코더는 상기 복수의 메모리들 중 하나의 대응되는 메모리로부터 정보를 검색하고 처리하도록 동작하여, 상기 대응되는 메모리는 상기 복수의 터보 디코더들 및 상기 복수의 메모리들 사이에 경합 방지 매핑에 기초하여 결정되고, 상기 하나의 대응되는 메모리 내의 상기 정보에 할당된 두 번째 위치는 상기 하나의 대응되는 메모리의 상기 주소 매핑에 기초한 상기 인덱스 함수에 기초하고,
인터리빙 순서 단계 디코딩 프로세싱을 수행할 때에는, 상기 복수의 터보 디코더들의 각 터보 디코더는 상기 복수의 메모리들 중 대응되는 하나의 제2 메모리 내의 두 번째 메모리 위치로부터 정보를 검색하고 처리하도록 동작하며,
상기 복수의 터보 디코더들은 상기 터보 코딩된 신호로 인코딩된 적어도 하나의 비트의 최적 추정치를 생성하도록 동작한다.
바람직하게는, 상기 터보 코딩된 신호를 생성하는 터보 인코딩 동안에, 상기 터보 코딩된 신호는 ARP(almost regular permutation) 인터리빙을 거치며,
터보 디코딩을 수행할 때에는, 상기 복수의 터보 디코더들 중 어떤 터보 디 코더는 부가 정보(extrinsic information)에 대해 ARP 인터리빙을 수행하고, 그에 의해 "사전 확률(a priori probability, app)" 정보를 생성하도록 동작한다.
바람직하게는, 상기 터보 디코더는 시간 공유(time sharing) 기법을 이용함으로써, 상기 복수의 터보 디코더들이 자연 순서 단계의 디코딩 프로세싱과 인터리빙 순서 단계 디코딩 프로세싱을 모두 수행하도록 하며,
인터리빙 순서 단계의 디코딩 프로세싱을 수행하는 때에, 상기 복수의 터보 디코더들에 의해 상기 복수의 메모리들의 주소들이 순차적으로 액세스된다.
바람직하게는, 상기 복수의 터보 디코더들은 제1 개수의 터보 디코더들을 포함하며, 상기 복수의 메모리들은 제2 개수의 메모리들을 포함한다.
바람직하게는, 상기 터보 디코더는 무선 개인 통신 장치 내에 구현된다.
바람직하게는, 상기 터보 디코더는 통신 장치 내에 구현되고,
상기 통신 장치는 위성 통신 시스템, 무선 통신 시스템, 유선 통신 시스템 및 광 통신 시스템 중의 적어도 한 가지 내에 구현된다.
본 발명의 다른 측면에 따르면, 터보 코딩된 신호의 디코딩 방법이 제공되며, 상기 디코딩 방법은,
통신 채널로부터 터보 코딩된 신호를 수신하는 단계;
상기 터보 코딩된 신호로부터 인코딩된 블록을 추출(extract)하기 위해 전처리(pre-processing)를 수행하는 단계;
상기 인코딩된 블록을 복수의 서브 블록들로 분할하되 상기 복수의 서브 블록들의 각 서브 블록이 대응되는 복수의 데이터를 포함하도록 하는 단계;
상기 복수의 서브 블록들 중 제1 서브 블록의 제1 복수 데이터를 복수의 메모리 뱅크 중 제1 메모리 뱅크에 저장하는 단계;
상기 복수의 서브 블록들 중 제2 서브 블록의 제2 복수 데이터를 상기 복수의 메모리 뱅크들 중 제2 메모리 뱅크에 저장하는 단계;
상기 터보 코딩된 신호의 자연적 순서 단계 디코딩 프로세싱을 수행할 때에는, 상기 제1 메모리 뱅크로부터 상기 제1 복수의 데이터의 요소들에 접근하기 위한 그리고 상기 제2 메모리 뱅크들로부터 상기 제2 복수의 데이터의 요소들에 접근하기 위한 인덱스 함수를 결정하는 단계를 포함하는, 예측 주소 생성을 수행하는 단계;
상기 제1 메모리 뱅크로부터 상기 제1 복수의 데이터의 제1 인덱스-정의된(index-defined) 요소를 검색(retrieving)하고, 이에 대해 터보 자연적 순서(turbo natural order) 단계 디코딩 프로세싱을 수행하는 단계;
상기 제2 메모리 뱅크로부터 상기 제2 복수의 데이터의 제2 인덱스 정의된 요소를 검색하고, 이에 대해 터보 자연적 순서 단계 디코딩 프로세싱을 수행하는 단계;
상기 제1 메모리 뱅크로부터 상기 제1 복수의 데이터의 제1 요소를 검색하고, 이에 대해 인터리빙된 자연적 순서(interleaved natural order) 단계 디코딩 프로세싱을 수행하는 단계;
상기 제2 메모리 뱅크로부터 상기 제2 복수의 데이터의 제2 요소를 검색하고, 이에 대해 인터리빙된 자연적 순서 단계 디코딩 프로세싱을 수행하는 단계;
병렬 터보 디코딩 프로세싱에 따라 복수의 디코딩 프로세서들을 이용하여 상기 인코딩된 블록을 터보 디코딩하는 단계; 및
상기 터보 코딩된 신호 내의 인코딩된 정보 비트들의 최적 추정치들을 생성하는 단계를 포함한다.
바람직하게는, 상기 디코딩 방법은 상기 하나의 대응되는 메모리의 상기 주소 매핑에 기초하여 상기 인덱스 함수를 생성하는 단계를 더 포함한다.
바람직하게는, 상기 터보 코딩된 신호를 생성하는 터보 인코딩 동안에, 상기 터보 코딩된 신호는 ARP(almost regular permutation) 인터리빙을 거치며, 상기 디코딩 방법은
터보 디코딩을 수행할 때에는, 상기 복수의 터보 디코더들 중 한 터보 디코더는 부가 정보(extrinsic information)에 대해 ARP 인터리빙을 수행하고, 그에 의해 "사전 확률(a priori probability, app)" 정보를 생성하는 단계를 더 포함한다.
바람직하게는, 상기 디코딩 방법은 통신 장치 내에 구현되고, 또한
상기 통신 장치는 위성 통신 시스템, 무선 통신 시스템, 유선 통신 시스템 및 광 통신 시스템 중의 적어도 한 가지 내에 구현된다.
본 발명에 관한 이러한 장점들 그리고 그 밖의 장점들, 측면들 및 신규한 특징들은 이와 관련하여 예시된 실시예들의 세부사항들과 더불어, 다음의 상세한 설명 및 도면들로부터 더 완벽하게 이해될 수 있을 것이다.
본 발명에서는 병렬 터보 디코딩 프로세싱에 따라, 메모리 뱅크 위치들로부 터 데이터 요소들을 순차적으로 액세싱하는 식으로 자연 순서(natural order) 단계의 디코딩 프로세싱을 수행하는 대신에, 터보 코딩에서 사용된 매핑과 인터리브 함수 (π)에 기초한 인덱스 함수 (F)에 기초하여 주소들에 대한 액세싱이 수행된다. 다른 말로 하면, 자연 순서 단계의 디코딩 프로세싱에 대해, 메모리 뱅크 위치들로부터 데이터 요소들을 액세싱하는 것이 순차적이지 않다는 것이다. 상기 인덱스 함수 (F)는 인터리브 (π) 순서 단계의 디코딩 프로세싱이, 메모리 뱅크 위치들로부터 데이터 요소들을 순차적으로 액세싱하도록 한다. 따라서 매우 빠르고 간단한 메모리 매핑이 구현될 수 있다.
많은 통신 시스템들이 터보 코드의 이용을 구현하고 있다. 터보 코드들을 사용할 수 있는 잠재적인 응용 분야들이 많이 있지만, 본 명세서에서는 특히 임의의 개수의 정보 비트들을 지원하는 3GPP 채널 코드에 적용할 수 있는 수단이 제공된다. 본 명세서에서 제공되는 본 발명의 다양한 측면들을 이용하여 지원될 수 있는 예시적인 비트들의 개수는 WCDMA나 HSPDA에 대해서는 40에서 5114개이고 LTE에 대해서는 더 많을 수 있다.
UTRA-UTRAN LTE(Long Term Evolution)이나 3GPP SAE(System Architecture Evolution)에 관한 추가적인 정보는 다음 인터넷 웹 사이트
www.3gpp.org
에서 찾아 볼 수 있다.
3GPP LTE의 채널 코딩 시스템 내에서는, 넓은 범위의 블록 크기(예를 들어, 터보 코드 블록 길이)를 공급하고 제공할 필요성 내지 그러한 바람이 있다. 더 나아가, 이러한 시스템의 터보 디코딩은 대단히 높은 데이터 처리량과 큰 블록 사이즈가 바람직하기 때문에, 일반적으로 병렬 디코딩 설계를 이용하여 구현될 필요가 있다. 병렬 디코딩은 경합 방지 메모리 액세싱(다시 말해, 어떤 한 터보 디코더(병렬 배치된 일단의 터보 디코더들 중의 하나)가 어떤 주어진 시점에 유일하게 메모리(병렬 배치된 일단의 메모리들 중의 하나)에 액세스하는 것)을 필요로 한다. 터보 코딩은 3GPP LTE 채널 코딩을 위해 제안되었다. 이러한 코딩 시스템에 대하여, 참고 문헌[1]에 나타난 ARP(almost regular permutation)이라고 알려진 대수적 인터리브(algebraic interleave) 기법은 여러 후보 중 하나로 고려된다.
디지털 통신 시스템의 목적은 디지털 데이터를 한 장소나 하위 시스템으로부터 다른 장소나 하위 시스템으로, 무오류(error free) 내지 용납될 수 있을 정도의 낮은 오류율로 전달하는 것이다. 도 1에 나타난 바와 같이, 데이터는 매우 다양한 통신 시스템들 내에서 다양한 통신 채널들, 자기 매체, 유선, 무선, 광 케이블, 동케이블 내지 그 밖의 매체를 거쳐 전송될 수 있다.
도 1은 통신 시스템(100)의 실시예를 예시한 것이다.
도 1을 참조하면, 이 실시예의 통신 시스템(100)은 통신 채널(199)을 포함하는데, 상기 통신 채널(199)은, 상기 통신 채널(199)의 한쪽 끝에 위치하게 된 한 통신 장치(110)(인코더(114)를 가지는 송신기(112)와, 디코더(118)를 가지는 수신기(116)를 포함함)를, 상기 통신 채널(199)의 다른 쪽 끝에 위치하게 된 다른 통신 장치(120)(이는 인코더(128)를 가지는 송신기(126)와, 디코더(124)를 가지는 수신 기(122)를 포함함)에 통신가능하도록 결합시킨다. 어떤 실시예에서는, 상기 통신 장치들(110, 120)의 어느 한쪽이 단지 한 송신기 또는 한 수신기만을 포함할 수 있다. 상기 통신 채널(199)을 구현할 수 있는 매체에는 다양한 서로 다른 종류들(예를 들어, 위성 접시들(132, 134)을 이용하는 위성 통신 채널(130), 통신탑들(142, 144)과 지역 안테나들(152, 154)을 이용하는 무선 통신 채널(140), 유선 통신 채널(150) 내지 전기 광 인터페이스(electrical to optical(E/O) interface)(162) 및 광 전기 인터페이스(O/E interface)(164)를 이용하는 광섬유 통신 채널(160) 등)이 있다. 추가적으로, 하나 이상의 여러 형태의 매체들이 함께 구현되고, 서로 인터페이싱되어, 상기 통신 채널(199)을 형성할 수도 있다.
도 2는 터보 디코더(200)의 실시예를 예시한 것이다. 수신된 신호(예를 들어, 통상적으로 통신 채널을 통해 수신되는 신호)는 상기 수신 신호(201)로부터 I(정위상, in-phase), Q(쿼드러쳐, quadrature) 성분들을 추출하는 I,Q 추출 모듈(202)로 제공된다. 이는 수신기의 전처리(pre-processing)로서 볼 수 있으며, 여하한 적절한 주파수 변환(전형적으로는, 필요한 경우에 반송파 주파수에서 다운 컨버전되는 등의 변환)을 포함할 수 있다. 상기 I, Q는 이어서 그 변조 방식의 적절한 컨스텔레이션(constellation) 및 매핑(mapping)에 따라 매핑될 수 있다. 다음으로, 상기 매핑된 I, Q는 메트릭 생성부(metric generator)(204)를 통과한다. 상기 메트릭 생성부(204)는, 해당 변조 방식의 적절한 컨스텔레이션 및 매핑 조건 내에서, 상기 수신된 I, Q로부터 적절한 컨스텔레이션 포인트들(constellation points)까지로 측정되는 적절한 메트릭들(241)을 생성한다. 상기 메트릭들은 해당 변조 방 식 내에서 컨스텔레이션 포인트들의 매핑에 의해 인덱싱되며, 해당 변조 방식 내에서, 실제로 수신된 심볼의 위치로부터 예측된 컨스텔레이션 포인트 위치까지의 적절히 스케릴링된 유클리드 거리라고 볼 수 있다.
터보 디코딩 프로세스 및 기능들을 더 살펴보면, 상기 메트릭 생성부(204)에 의해 계산된 메트릭들(241)은 이어서 제1 소프트인/소프트아웃(soft-in/soft-out, SISO 0) 디코더(210)와 제2 SISO 1 디코더(230)로 동시에 제공된다. 트렐리스 코딩(trellis coding)(예를 들어, 터보 트렐리스 코딩 변조(turbo trellis coded modulation, TTCM)과 같은 코딩)의 맥락(context)에서 보면, 상기 제1 SISO 0 디코더(210) 및 제2 SISO 1 디코더(230)의 각각은 순방향 메트릭들(알파값들) 및 역방향 메트릭들(베타값들)과, 이용된 격자에 따른 부수적 값들(extrinsic values)을 계산한다.
이들 알파 값들, 베타값들 및 부수적 값들은 디코딩될 대상이 되는 하나의 프레임 내의 각 심볼마다 모두 계산된다. 이러한 알파, 베타 및 부수적 값들의 계산은 모두 상기 트렐리스에 기초하여 이뤄진다.
상기 제1 SISO 0 디코더(210)에서 먼저 시작하자면, 상기 부가 값들(extrinsics)(211)이 계산된 후에, 이들은 인터리버(interleaver, π)(220)를 통과하고, 이 이후에 "사전 확률(a priori probability, app)" 정보(221)라 하여 상기 제2 SISO 1 디코더(230)로 전달된다. 이와 유사하게, 상기 제2 SISO 1 디코더(230) 내에서 부가 값들(231)이 계산된 후에 이들은 디인터리버(de-interleaver, π-1)(240)를 통과하고, 이어서 상기 제1 SISO 0 디코더(210)로 "사전 확률(app)" 정보(241)로 전달된다. 상기 터보 디코더(200)의 반복 디코딩 프로세스 내에서, 한 번의 디코딩 반복은 두 번의 SISO 연산들을 수행하는 것을 포함한다는 점을 주목한다. 이는 다시 말해, 반복 디코딩 프로세싱은 상기 제1 SISO 0 디코더(210)과 상기 제2 SISO 1 디코더(230)를 모두 통과하여야 한다는 것이다.
높은 수준의 신뢰성(confidence)이 달성되고 또한 어떤 해(solution)에 수렴(converge)한 후에, 또는 사전에 결정된 회수의 디코딩 반복 연산들이 수행된 후에, 상기 제 SISO 1 디코더(230)의 출력은 출력 프로세서(output processor)(250)로 출력으로서 전달된다. 상기 SISO들(210, 230)에서 이뤄지는 연산은 수신된 심볼 내에 포함된, 그 심볼의 소프트 심볼 판정(soft symbol decision)을 계산하는 것이라고 일반적으로 말할 수 있다. 이러한 소프트 심볼 판정은 몇몇 실시예들에서는 진정한 비트 레벨에서 수행될 수 있다. 상기 출력 프로세서(250)는 이러한 소프트 심볼 판정 결과를 이용하여, 본래의 터보 코딩된 신호 내에 인코딩되어 있던 정보 비트들(상기 신호(201)가 원천적으로 발생하여 인가된 통신 채널의 다른 쪽 끝에 있는 터보 인코더의 내에서 통상적으로 인코딩됨)에 대한 최적 추정치들(best estimates)(251)(예를 들어 하드 비트/심볼 판정(hard bit/symbol decisions))을 생성한다.
상기 인터리버(π)(220) 내에서 수행되는 각각의 인터리빙 동작은 참조 번호 291로 나타난 것과 같은 ARP 인터리브의 실시예를 이용하여 수행될 수 있다. 또한, 상기 디인터리버(π-1)(240) 내에서 수행되는 디인터리빙이 ARP 디인터리브의 실시예를 이용하여 수행되는 그러한 실시예들도 있다.
본 명세서에서 제공되는 많은 실시예들은 ARP(almost regular permutation) 인터리브에 관한 다양한 실시예들을 이용한다. 어떤 구조에 있어서, ARP 인터리빙과 ARP 디인터리빙을 모두 수행하는 데에 이용될 수 있는 수단에 관하여 더욱 상세한 내용이 아래에 제공된다. 그러기에 앞서, 비교 분석을 위해 먼저 정규 순열(regular permutation)을 고려해보고자 한다.
도 3은 단일한 SISO(soft-in/soft-out) 디코더를 사용하거나 또는 SISO 디코더들로 구성된 단일 어레이를 사용하여 동작하는, 시간 공유(time-sharing) 방식을 가지는 터보 디코더의 실시예를 예시한 것이다. 이 실시예는 단일 SISO 디코더 또는 SISO 디코더들로 이뤄진 단일 어레이를 이용하여, 터보 디코딩 프로세싱(즉 병렬 터보 디코딩 프로세싱)에 따라 SISO 0 및 SISO 1 디코딩 연산들을 모두 수행한다. MUX(305)는 정보 비트(information bits)(301)와 잉여 비트(redundancy bits)(302)를 수신하여 선택적으로 SISO 디코더(310)에 제공하도록 동작한다. 이 실시예에서 상기 SISO 디코더(310)는 또한 통합된 인터리버(π)(320)와 통합된 디인터리버(π-1)(340)를 포함한다. 상기 MUX(305)의 선택 신호 입력은, 정보 비트(301)와 잉여 비트(302) 중 어느 쪽이 상기 SISO 디코더(310)로 제공되어 SISO 0 디코딩 프로세싱이나 SISO 1 디코딩 프로세싱 중 어느 한 가지를 수행하도록 선택하는 것으로 결정하는 신호의 짝수 번째 단계 신호(even phase)(303)에 따라 동작 한다.
어떤 실시예에서는, 참조 번호 312로 나타낸 것과 같이, 자연 순서 단계의 디코딩(예를 들어 SISO 0 디코딩 연산들과 같이)을 수행하는 경우에, 메모리 엔트리들(entries)에 대한 액세싱은 상기 선택 신호(303)가 상기 MUX(305)에 대해 짝수 번째 단계를 가리킬 때에 수행된다. 또한, 인터리빙(π) 순서 단계의 디코딩(예를 들어, SISO 1 디코딩 연산들과 같이)을 수행하는 경우에는, 메모리 항목들에 대한 액세싱은 상기 선택 신호(303)가 상기 MUX(305)에 대해 홀수 번째 단계(odd phase)를 가리킬 때에 수행된다.
도 4는 터보 디코딩에 적용될 수 있는 병렬 디코딩의 실시예(400)를 예시한 것이다. 보다시피, 터보 코딩된 신호 내에 포함된 한 정보 블록의 블록 길이(401)는 L로 표시되어 있다. 이는 터보 디코딩을 거칠 예정인 인코딩된 블록이라고 불려질 수도 있다. 상기 블록은 복수의 윈도우들로 분할되며, 각 윈도우는 참조 번호 402로 나타나 있듯이 W=L/M의 크기를 가진다. 한 병렬 디코딩 구현 회로 내에 배치된 프로세서들의 수는 M으로 표시되며(참조 번호 404로 나타남), M은 L에 대해 한 약수(factor)라는 점을 주목한다(즉, M은 L을 나머지가 없이 나눌 수 있다).
사이클 0(즉, 터보 디코딩의 반복 디코딩 프로세서 중의 첫 번째 디코딩 반복 구간) 동안에, 각 윈도우의 해당 음영 부분들(shaded portions)로 나타낸 것과 같이, 각 윈도우의 첫 번째 부분이 처리된다. 이어서, 사이클 1(즉, 터보 디코딩의 반복 디코딩 프로세서 중의 두 번째 디코딩 반복 구간) 동안에, 각 윈도우의 해당 음영 부분들로 나타낸 것과 같이, 각 윈도우의 두 번째 부분이 처리된다. 이러한 동작은 사이클 W-1(즉, 터보 디코딩의 반복 디코딩 프로세서 중의 마지막 디코딩 반복 구간) 동안에, 각 윈도우의 해당 음영 부분들로 나타낸 것과 같이, 각 윈도우의 마지막 부분이 처리될 때까지 계속된다.
각 사이클 동안에, 각 윈도우의 주어진 부분이, 복수의 디코딩 프로세서들(예를 들어, 복수의 터보 디코더들)로 구현된 병렬 실시예 내의 하나의 디코딩 프로세서(예를 들어, 하나의 터보 디코더)를 이용하여 처리된다.
도 5는 자연적 및 인터리빙되지 않은 순서(natural/non-interleaved order)를 위해 디코딩 프로세서들(터보 코딩된 신호의 병렬 디코딩에 구현되는 것과 같은)을 분할(partitioning)하는 한 실시예를 예시한 것이다. 이 도면은 도 4에 마찬가지로 상응한다. 예를 들어, 윈도우 크기 W, 프로세서의 수 M 및 블록 길이 L 등의 규칙은, 참조 번호 502에 의해 나타내었듯이 앞의 실시예와 동일하다(즉, W=L/M이나 M·W=L 등). 추가적으로 인터리브 인덱스(interleave index)가 참조 번호 501에 의해 I={0,1,...,L-1}로 나타나 있다.
M 개의 디코딩 프로세서들을 이용하는 점을 수반하는 병렬 터보 디코딩 프로세싱에 따라, 사이클 0(즉, 터보 디코딩의 반복 디코딩 프로세싱 중 첫 번째 디코딩 반복 연산) 동안에, 처리되는 각 윈도우의 각각의 첫 번째 부분들은 다음과 같다.
1. 프로세서 0은 정보 블록의 블록 0을 처리한다.
2. 프로세서 1은 정보 블록의 블록 W을 처리한다.
3. 프로세서 2는 정보 블록의 블록 2W을 처리한다.
...
s. 프로세서 s는 정보 블록의 블록 sW을 처리한다(s는 정수).
...
M-1. 프로세서 M-1은 정보 블록의 블록 (M-1)W을 처리한다.
사이클 1(즉, 터보 디코딩의 반복 디코딩 프로세싱 중 두 번째 디코딩 반복 연산) 동안에, 처리되는 각 윈도우의 각각의 두 번째 부분들은 다음과 같다.
1. 프로세서 0은 정보 블록의 블록 1을 처리한다.
2. 프로세서 1은 정보 블록의 블록 W+1을 처리한다.
3. 프로세서 2는 정보 블록의 블록 2W+1을 처리한다.
...
s. 프로세서 s는 정보 블록의 블록 sW+1을 처리한다(s는 정수).
...
M-1. 프로세서 M-1은 정보 블록의 블록 (M-1)W+1을 처리한다.
이러한 프로세스는 사이클 W-1(즉, 터보 디코딩의 반복 디코딩 프로세싱 중 마지막 디코딩 반복 연산) 동안에 다음과 같이 각 윈도우의 각각의 마지막 부분들이 처리될 때까지 계속된다.
1. 프로세서 0은 정보 블록의 블록 W-1을 처리한다.
2. 프로세서 1은 정보 블록의 블록 W+W-1을 처리한다.
3. 프로세서 2는 정보 블록의 블록 W+2W-1을 처리한다.
...
s. 프로세서 s는 정보 블록의 블록 sW+W-1을 처리한다(s는 정수).
...
M-1. 프로세서 M-1은 정보 블록의 블록 (M-1)W+W-1을 처리한다.
t번째 디코딩 사이클에서 설정되는 상기 인덱스는 다음과 같다(역시 참조 번호 503으로 나타낸 것과 같다).
도 6은 인터리빙(interleaved, π)된 순서를 위해 디코딩 프로세서들(600)(터보 코딩된 신호의 병렬 디코딩에 구현되는 것과 같은)을 분할하는 한 실시예를 예시한 것이다. 이 도면은 마찬가지로 도 4에 상응한다. 예를 들어, 윈도우 크기 W, 프로세서의 수 M 및 블록 길이 L 등의 규칙은, 참조 번호 602에 의해 나타내었듯이 앞의 실시예와 동일하다(즉, W=L/M이나 M·W=L 등). 추가적으로 인터리브 인덱스(interleave index)가 참조 번호 601에 의해 I={0,1,...,L-1}로 나타나 있다.
M 개의 디코딩 프로세서들을 이용하는 점을 수반하는 병렬 터보 디코딩 프로세싱에 따라, 사이클 0(즉, 터보 디코딩의 반복 디코딩 프로세싱 중 첫 번째 디코딩 반복 연산) 동안에, 처리되는 각 윈도우의 각각의 첫 번째 부분들은 다음과 같다(주의: 이들은 인터리빙된(π) 부분들이다).
1. 프로세서 0은 정보 블록의 블록 π(0)을 처리한다.
2. 프로세서 1은 정보 블록의 블록 π(W)을 처리한다.
3. 프로세서 2는 정보 블록의 블록 π(2W)을 처리한다.
...
s. 프로세서 s는 정보 블록의 블록 π(sW)을 처리한다(s는 정수).
...
M-1. 프로세서 M-1은 정보 블록의 블록 π((M-1)W)을 처리한다.
사이클 1(즉, 터보 디코딩의 반복 디코딩 프로세싱 중 두 번째 디코딩 반복 연산) 동안에, 처리되는 각 윈도우의 각각의 두 번째 부분들은 다음과 같다.
1. 프로세서 0은 정보 블록의 블록 π(1)을 처리한다.
2. 프로세서 1은 정보 블록의 블록 π(W+1)을 처리한다.
3. 프로세서 2는 정보 블록의 블록 π(2W+1)을 처리한다.
...
s. 프로세서 s는 정보 블록의 블록 π(sW+1)을 처리한다(s는 정수).
...
M-1. 프로세서 M-1은 정보 블록의 블록 π((M-1)W+1)을 처리한다.
이러한 프로세스는 사이클 W-1(즉, 터보 디코딩의 반복 디코딩 프로세싱 중 마지막 디코딩 반복 연산) 동안에 다음과 같이 각 윈도우의 각각의 마지막 부분들이 처리될 때까지 계속된다.
1. 프로세서 0은 정보 블록의 블록 π(W-1)을 처리한다.
2. 프로세서 1은 정보 블록의 블록 π(W+W-1)을 처리한다.
3. 프로세서 2는 정보 블록의 블록 π(2W+W-1)을 처리한다.
...
s. 프로세서 s는 정보 블록의 블록 π(sW+W-1)을 처리한다(s는 정수).
...
M-1. 프로세서 M-1은 정보 블록의 블록 π((M-1)W+W-1)을 처리한다.
t번째 디코딩 사이클에서 설정되는 상기 인덱스는 다음과 같다(역시 참조 번호 603으로 나타낸 것과 같다).
메모리 매핑 M은 만약 다음 관계가 성립하는 경우에는 경합 방지(contention-free)이다.
t번째 사이클의 인덱스 세트(index set) 내의 요소들은 서로 다른 메모리 뱅크들(즉, 복수의 병렬 배치된 터보 디코더들을 지원하기 위해 배정된 복수의 메모리 장치들에 속하는 서로 다른 메모리 장치들)로 매핑되어야 한다는 점을 주목한다.
도 7a는 자연적이고 인터리빙되지 않은 순서 단계(natural/non-interleaved order phase)를 위해 병렬 디코딩에 대해 메모리 매핑(memory mapping)을 하는 한 실시예(700)를 예시한 것이다.
도 7b는 인터리빙된 순서 단계를 위해 병렬 디코딩에 대해 메모리 매핑을 하는 한 실시예(메모리들 중 하나에 들어 있는 내용을 보여줌)(702)를 예시한 것이다.
도 7a 및 도 7b는 서로 간에 관련지어 고려되어야 한다. 이 실시예들(700, 702)의 각각은 4 개의 메모리 뱅크들(메모리(741), 메모리(742), 메모리(743) 및 메모리(744)로 묘사됨)을 이용한다. 하나의 인코딩된 블록이 복수의 하위 블록들로 분할되고 있음이 나타나 있다. 이 특정 인코딩 블록은 4W 개의 데이터 위치들(data locations)을 포함한다.
자연 순서 단계에서는, 첫 번째 하위 블록은 데이터 위치 0, 1에서 시작하여 최대 W-1까지 간다. 두 번째 하위 블록은 데이터 위치 W, W+1을 가지고 시작하여 2W-1까지 계속된다. 세 번째 하위 블록은 데이터 위치 2W, 2W+1을 가지고 시작하여 3W-1까지 계속된다. 네 번째 하위 블록은 데이터 위치 3W, 3W+1을 가지고 시작하여 4W-1까지 계속된다.
사이클 0에서는, 상기 첫 번째 하위 블록의 첫 번째 데이터(즉, 데이터 위치 0에 있는 데이터)가 메모리(742)의 첫 번째 위치에 저장된다.
사이클 0에서는, 상기 두 번째 하위 블록의 첫 번째 데이터(즉, 데이터 위치 W에 있는 데이터)가 메모리(743)의 첫 번째 위치에 저장된다.
사이클 0에서는, 상기 세 번째 하위 블록의 첫 번째 데이터(즉, 데이터 위치 2W에 있는 데이터)가 메모리(741)의 첫 번째 위치에 저장된다.
사이클 0에서는, 상기 네 번째 하위 블록의 첫 번째 데이터(즉, 데이터 위치 3W에 있는 데이터)가 메모리(744)의 첫 번째 위치에 저장된다.
사이클 1에서는, 상기 첫 번째 하위 블록의 두 번째 데이터(즉, 데이터 위치 1에 있는 데이터)가 메모리(741)의 첫 번째 위치에 저장된다.
사이클 1에서는, 상기 두 번째 하위 블록의 두 번째 데이터(즉, 데이터 위치 W+1에 있는 데이터)가 메모리(744)의 첫 번째 위치에 저장된다.
사이클 1에서는, 상기 세 번째 하위 블록의 두 번째 데이터(즉, 데이터 위치 2W+1에 있는 데이터)가 메모리(742)의 첫 번째 위치에 저장된다.
사이클 1에서는, 상기 네 번째 하위 블록의 두 번째 데이터(즉, 데이터 위치 3W+1에 있는 데이터)가 메모리(743)의 첫 번째 위치에 저장된다.
이러한 프로세스는 인코딩된 블록 내의 모든 데이터 요소들이 상기 네 개의 메모리 뱅크들 내의 해당하는 메모리 위치에 저장될 때까지 계속된다. 어느 메모리 뱅크에 특정 데이터 요소가 저장될 것인지에 관한 배정 문제는 거기에 이용된 매핑에 달려 있다.
인터리빙 (π)을 수행한 후에, 인터리빙된 인코딩 블록도 또한 복수의 하위 블록들로 분할된 것과 같이 나타난다. 이 경우의 특정한 인코딩된 블록은 4W 개의 데이터 위치를 포함한다.
인터리빙된 순서 단계에서는, 첫 번째 하위 블록은 데이터 위치 π(0), π(1)로 시작하여 π(W-1)까지 계속된다. 두 번째 하위 블록은 데이터 위치 π(W), π(W+1)로 시작하여 π(2W-1)까지 계속된다. 세 번째 하위 블록은 데이터 위치π(2W), π(2W+1)로 시작하여 π(3W-1)까지 계속된다. 네 번째 하위 블록은 데이터 위치 π(3W), π(3W+1)로 시작하여 π(4W-1)까지 계속된다.
사이클 0에서는, 상기 첫 번째 하위 블록의 첫 번째 데이터(즉, 데이터 위치 π(0)에 있는 데이터)가 메모리(741)의 첫 번째 위치에 저장된다.
사이클 0에서는, 상기 두 번째 하위 블록의 첫 번째 데이터(즉, 데이터 위치 π(W)에 있는 데이터)가 메모리(744)의 첫 번째 위치에 저장된다.
사이클 0에서는, 상기 세 번째 하위 블록의 첫 번째 데이터(즉, 데이터 위치 π(2W)에 있는 데이터)가 메모리(743)의 첫 번째 위치에 저장된다.
사이클 0에서는, 상기 네 번째 하위 블록의 첫 번째 데이터(즉, 데이터 위치 π(3W)에 있는 데이터)가 메모리(742)의 첫 번째 위치에 저장된다.
사이클 1에서는, 상기 첫 번째 하위 블록의 두 번째 데이터(즉, 데이터 위치 π(1)에 있는 데이터)가 메모리(742)의 첫 번째 위치에 저장된다.
사이클 1에서는, 상기 두 번째 하위 블록의 두 번째 데이터(즉, 데이터 위치 π(W+1)에 있는 데이터)가 메모리(741)의 첫 번째 위치에 저장된다.
사이클 1에서는, 상기 세 번째 하위 블록의 두 번째 데이터(즉, 데이터 위치 π(2W+1)에 있는 데이터)가 메모리(742)의 첫 번째 위치에 저장된다.
사이클 1에서는, 상기 네 번째 하위 블록의 두 번째 데이터(즉, 데이터 위치 π(3W+1)에 있는 데이터)가 메모리(744)의 첫 번째 위치에 저장된다.
이러한 프로세스는 인터리빙된 인코딩 블록 내의 모든 데이터 요소들이 상기 네 개의 메모리 뱅크들 내의 해당하는 메모리 위치에 저장될 때까지 계속된다. 어느 메모리 뱅크에 특정 데이터 요소가 저장될 것인지에 관한 배정 문제는 거기에 이용된 매핑에 달려 있다.
이러한 매핑의 경우에 상기 인터리빙된 순서 단계의 사이클 1에서 경합 방지가 되지 않는다는 점, 즉 첫 번째 하위 블록의 두 번째 데이터(즉 위치 π(1)에 있는 데이터)와 세 번째 하위 블록의 두 번째 데이터(즉, π(2W+1)에 있는 데이터)가 모두 동일한 메모리(742)에 매핑된다는 점을 주목한다.
도 8은 병렬 디코딩을 수행하는 터보 디코더로서, 터보 디코더들과 메모리들 사이에 경합 방지 메모리 매핑(contention-free memory mapping)이 결여되어 경합이 발생하는 터보 디코더(800)의 실시예를 예시한 것이다.
이 터보 디코더(800)는 복수의 터보 디코더들(821 내지 827), 복수의 메모리들(841 내지 847)과 프로세싱 모듈(830)을 포함한다. 상기 프로세싱 모듈(830)은 상기 복수의 터보 디코더들(821 내지 827) 및 상기 복수의 메모리들(841 내지 847) 사이의 메모리 매핑을 수행하도록 동작한다. 나타난 바와 같이, 하나 이상의 디코더들이 어떤 주어진 시점에 동일한 메모리에 액세스하려고 하고 있다. 특히, 터보 디코더(821)와 터보 디코더(822)가 메모리(841)에 액세스하려 하고 있고, 터보 디코더(824)와 터보 디코더(825)는 메모리(845)에 액세스하려 하고 있다. 또한, 터보 디코더(827)와 또 다른 터보 디코더(생략 표시(...)로 표시된 부분에 포함된 한 터보 디코더)가 메모리(847)에 액세스하려 하고 있다. 이는 경합을 일으키고, 또한 성능 저하를 유발한다.
도 9는 병렬 디코딩을 수행하는 터보 디코더(900)로서, 터보 디코더들과 메모리들 사이에 경합 방지 메모리 매핑 때문에 경합이 전혀 일어나지 않는 터보 디코더의 실시예를 예시한 것이다.
이 터보 디코더(900)는 복수의 터보 디코더들(921 내지 927), 복수의 메모리들(941 내지 947)과 프로세싱 모듈(930)을 포함한다. 상기 프로세싱 모듈(930)은 상기 복수의 터보 디코더들(921 내지 927) 및 상기 복수의 메모리들(941 내지 947) 사이의 메모리 매핑을 수행하도록 동작한다. 나타난 바와 같이, 어떤 주어진 시점에 어떤 하나의 메모리에는 오직 하나의 디코더가 액세스한다. 이는 상기 복수의 터보 디코더들(921 내지 927) 및 상기 복수의 메모리들(941 내지 947) 사이에 진정한 경합 방지 메모리 매핑이라 할 수 있다.
도 10 및 도 11은 통신 시스템의 다른 실시예들을 예시한 것들이다.
도 10의 통신 시스템(1000)을 참조하면, 상기 통신 시스템(1000)은 어떤 통신 장치(1010)를 포함하며, 이는 통신 채널(1099)을 통해 또 다른 장치(1090)에 결합되어 있다. 상기 통신 장치(1010)는 병렬로 구현된 터보 디코더로서 구체화되는 디코더(1021)를 포함하는데, 상기 터보 디코더는 경합 방지 메모리 매핑을 사용하도록 동작할 수 있다.
상기 통신 장치(1010)가 상기 통신 채널(1099)을 통해 결합되어 있는 상대편 장치(1090)는 또 다른 통신 장치(1092)일 수도 있고, 저장 매체(1094)(예를 들어, 하드디스크 드라이브(hard disk drive, HDD)의 맥락에 속하는 것과 같은), 또는 그 밖의 여하한 형태의, 신호들을 수신하고 송신할 수 있는 장치들이 될 수 있다. 일 부 실시예들에서는, 상기 통신 채널(1099)은, 제1 시간 동안에는 제1 신호의 송신을 수행하고, 제2 시간 동안에는 제2 신호의 수신을 수행하도록 동작하는 양방향 통신 채널이다. 만약 원한다면, 풀 듀플렉스 통신(full duplex communication)도 또한 사용될 수 있으며, 이 경우에는 상기 통신 장치(1010) 및 상기 상대편 장치(1090)의 각각이 서로에 대해 동시에 송신 및 수신할 수 있다.
상기 통신 장치(1010)의 디코더(1021)는 터보 디코더(1020), 프로세싱 모듈(1030) 및 메모리(1040)를 포함한다. 상기 프로세싱 모듈(1030)은 상기 메모리(1040)와 연결되어 있어, 상기 메모리(1040)는 상기 프로세싱 모듈(1030)이 특정 기능들을 수행하도록 활성화시키는 동작 명령어들을 저장한다.
일반적으로 말해서, 상기 프로세싱 모듈(1030)은, 반복적 디코딩 프로세싱을 수행하는 동안에 상기 터보 디코더(1020) 및 상기 메모리(1040) 사이의 경합 방지 메모리 매핑을 수행하도록 동작한다.
여기에서 설명되는 다른 프로세싱 모듈 뿐만 아니라, 상기 프로세싱 모듈(1030)은 이하에서 설명되는 여러 방식으로 구현될 수 있다. 일 실시예에서, 상기 프로세싱 모듈(1030)은 엄밀히 말하자면 회로의 형태로 구현될 수 있다. 이와 달리, 상기 프로세싱 모듈(1030)이, 마치 디지털 신호 처리장치(digital signal processor, DSP) 내지 유사한 형태의 장치 내에서 이용될 수 있는 것과 같은 소프트웨어의 형태로서 엄밀한 의미로 구현될 수 있다. 또 다른 실시예에서는, 상기 프로세싱 모듈(1030)은 물론, 본 발명의 범위 및 사상으로부터 벗어남이 없이, 하드웨어 및 소프트웨어의 조합으로서 구현될 수도 있다.
또 다른 실시예에 있어서, 상기 프로세싱 모듈(1030)은 공유되는 처리 장치(shared processing device)나, 개별적인 처리 장치들(individual processing devices), 또는 복수의 처리 장치들을 이용하여 구현될 수 있다. 그러한 처리 장치는 마이크로프로세서(microprocessor), 마이크로컨트롤러(microcontroller), 디지털 신호 처리 장치(digital signal processor), 마이크로컴퓨터(microcomputer), 중앙 처리 장치(central processing unit), FPGA(field programmable gate array), PLD(programmable logic device), 상태 머신(state machine), 논리 회로, 아날로그 회로, 디지털 회로, 내지 그 밖에 동작을 지시하는 명령어들에 기초하여 신호들(아날로그 신호 또는 디지털 신호)을 조작할 수 있는 여하한 장치들이 될 수 있다. 상기 프로세싱 모듈(1030)은, 상기 프로세싱 모듈(1030)로 하여금, 상기 터보 디코더(1020)와 상기 메모리(1040) 사이의 적절한 경합 방지 메모리 매핑을 수행하는 것을 수행하도록 하는, 그러한 동작 명령어들을 저장하도록 동작하는 상기 메모리(1040)에 연결될 수 있다.
그러한 메모리(1040)는 단일한 메모리 장치 또는 복수의 메모리 장치들일 수 있다. 그러한 메모리 장치는 읽기 전용 메모리(read-only memory), 임의 접근 메모리(random access memory), 휘발성 메모리(volatile memory), 비휘발성 메모리(non-volatile memory), 정적 메모리(static memory), 동적 메모리(dynamic memory), 플래쉬 메모리(flash memory) 및 기타 디지털 정보를 저장할 수 있는 여하한 장치가 될 수 있다. 상기 프로세싱 모듈(1030)이 그 기능들 중 하나 또는 그 이상의 기능들을 상태 머신, 아날로그 회로, 디지털 회로 내지 논리 회로를 통해 구현한 경우에, 상기 상응하는 동작에 관한 명령어들을 저장하는 메모리는 상기의 상태 머신, 아날로그 회로, 디지털 회로 내지 논리 회로들로 구성된 회로부와 함께 칩에 내장될 수 있다는 점을 주목한다.
도 11의 통신 시스템(1100)을 참조하면, 이 실시예는 앞의 실시예와 다소 유사하다. 상기 통신 시스템(1100)은 어떤 통신 장치(1110)를 포함하며, 이는 통신 채널(1199)을 통해 또 다른 장치에 결합되어 있다. 상기 통신 장치(1110)는 터보 디코더(1120)를 포함하며, 상기 터보 디코더(1120)는 그 자체로 복수의 터보 디코더들(1121 및 1122)로 구성된다. 상기 통신 장치(1110)는 또한 메모리(1140)를 포함하며, 상기 메모리(1140)는 그 자체로 복수의 메모리들(1141 및 1142)로 구성된다. 프로세싱 모듈(1130)은 반복적 디코딩 프로세싱을 수행하는 동안에 상기 터보 디코더들(1121 및 1122) 및 상기 메모리들(1141 및 1142) 사이의 경합 방지 메모리 매핑을 수행하도록 동작한다.
도 12a, 12b, 12c, 12d는 터보 디코더들 및 메모리들 사이의 여러 가지의 연속하는 경합 방지 메모리 매핑 예들을 예시한 것들이다. 이들 네 개의 도면들은 서로 연관되어 고려되어야 한다.
어떤 통신 장치가 터보 디코더를 포함하는데, 그 터보 디코더는 그 자체로 복수의 터보 디코더들(1221, 1222 및 1223)을 포함한다. 그러한 통신 장치는 또한 메모리를 포함하는데, 그 메모리는 그 자체로 복수의 메모리들(1241, 1242 및 1243)로 구성된다. 프로세싱 모듈(1230)은 반복적 디코딩 프로세싱을 수행하는 동안에 상기 복수의 터보 디코더들(1221, 1222 및 1223) 및 상기 복수의 메모리 들(1241, 1242, 1243) 사이의 경합 방지 메모리 매핑을 수행하도록 동작한다.
어떤 주어진 시점에서, 상기 프로세싱 모듈(1230)은 그 시점에 어떤 주어진 메모리에 대해 오직 하나의 터보 디코더만이 액세스하는 것을 보장하도록 동작할 수 있다. 예를 들어, 프로세싱 모듈(1230)은 시점 1에서 첫 번째 경합 방지 메모리 매핑을, 참조 번호 1201로 나타난 바와 같이 수행할 수 있다. 상기 프로세싱 모듈(1230)은 시점 2에서 두 번째 경합 방지 메모리 매핑을, 참조 번호 1202로 나타난 바와 같이 수행할 수 있다. 상기 프로세싱 모듈(1230)은 시점 3에서 세 번째 경합 방지 메모리 매핑을, 참조 번호 1203로 나타난 바와 같이 수행할 수 있다. 상기 프로세싱 모듈(1230)은 시점 4에서 네 번째 경합 방지 메모리 매핑을, 참조 번호 1204로 나타난 바와 같이 수행할 수 있다. 나타난 바와 같이, 이들 네 개의 도면들 각각에서는 어떤 주어진 시점에 어떤 하나의 메모리에는 오직 하나의 디코더가 연결되어 있다.
나타난 바와 같이, 상기 복수의 터보 디코더들(1221, 1222 및 1223) 및 상기 복수의 메모리들(1241, 1242, 1243) 사이의 경합 방지 메모리 매핑은 터보 코딩된 신호의 반복적 디코딩 프로세싱 동안에, 시간의 함수로서 변화될 수 있다.
도 13a 및 13b는 병렬 터보 디코딩 프로세싱을 수행하기 위해 사용되는 복수의 프로세서들과 복수의 메모리 뱅크들의 간단한 예를 나타낸 실시예들(1301, 1302)을 예시한 것들이다.
이들 실시예들(1301, 1302)의 각각은 4 개의 메모리 뱅크들과 같은 복수의 메모리 뱅크들을 이용할 수 있다.
첫 번째 디코딩 사이클 동안에, 실시예(1301)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 자연적 순서의 경우에 다음과 같다.
또한, 첫 번째 디코딩 사이클 동안에, 실시예(1301)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 인터리빙된 (π) 순서의 경우에 다음과 같다.
두 번째 디코딩 사이클 동안에, 실시예(1302)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 자연적 순서의 경우에 다음과 같다.
또한, 두 번째 디코딩 사이클 동안에, 실시예(1302)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 인터리빙된 (π) 순서의 경우에 다음과 같다.
이어지는 디코딩 사이클들(즉 디코딩 반복 연산들) 동안에, 프로세서들과 메모리들 사이의 상기 메모리 매핑은 다음과 같다.
세 번째 디코딩 사이클(자연적 순서/인터리빙된 순서)은 각각
네 번째 디코딩 사이클(자연적 순서/인터리빙된 순서)은 각각
다섯 번째 디코딩 사이클(자연적 순서/인터리빙된 순서)은 각각
여섯 번째 디코딩 사이클(자연적 순서/인터리빙된 순서)은 각각
알 수 있다시피, 이러한 자연적 순서와 인터리빙된 순서의 경우 모두 경합 방지가 된다.
도 14는 정규 순열(regular permutation)(1400)의 실시예를 예시한 것이다. 이러한 정규 순열(1400)은 다른 말로는 순환 순열(circular permutation)이라고도 할 수 있다. 예를 들어, 이 정규(순환) 순열(1400)은 다음과 같이 정의될 수 있다.
여기서, L은 프레임 크기이고, gcd(P,L)=1이며, 이는 만약 j≠j'이면 π(j)≠π(j')임을 의미한다.
상기 정규 순열(1400)의 구현은 상대적으로 직선적이나, 성능은 그다지 좋지는 않다.
참고 문헌 [1]에서 소개된 바 있는 정보 블록 크기 L=CW(즉, C는 L의 약수(divider))의 ARP(almost regular permutation)는 다음과 같이 정의된다.
여기서, P는 L과 서로소(relative prime)이며, θ는 상수이며, A(x) 및 B(x)는 {0,1,...,C-1}에 대해 정의된 정수 함수이다. 상기 정의된 함수가 순열이라는 점(즉 일대일 등)을 확실히 하기 위해, 참고 문헌 [1]에서는 A(x) 및 B(x)는 다음과 같이 제약을 가진다.
여기서, α 및 β는 정수 함수(integer functions)들이다. 상기 참고 문헌에서는, C를 ARP의 디더링 사이클(dithering cycle)이라고 부른다.
예를 들어, C=4이면
이다.
ARP 인터리브의 첫 번째 예는 아래와 같이 제공된다.
다음을 뜻한다.
만약 다음의 입력들이 이러한 ARP 인터리브(π)에 제공된다면,
0,1,2,3, x 4,5,6,7, x 8,9,10,11, x 12,13,14,15, x 16,17,18,19, x 20,21,22,23이고 이 경우의 출력은 다음과 같다.
0,11,22,5, x 4,15,2,9, x 8,19,6,13, x 12,23,10,17, x 16,3,14,21, x 20,7,18,1.
ARP 인터리브의 또 다른 예가 여기에 제공된다.
만약 다음의 입력들이 이러한 ARP 인터리브 (π)에 제공된다면,
0,1,2,3, x 4,5,6,7, x 8,9,10,11, x 12,13,14,15, x 16,17,18,19이고
이 경우의 출력은 다음과 같다.
1,6,16,15, x 13,18,8,7, x 5,10,0,19, x 17,2,12,11, x 9,14,4,3.
ARP에 대해서도 특별한 경우들이 몇 가지 있다.
사례 1.
A(x)=Cα(x) 및 B(x)=Cβ(x)
θ=0인 때에는, 참고 문헌[1]의 수학식 (10), (11) 및 (12)이다.
θ=3, C=4인 때에는 참고 문헌[2] France Telecom, GET, "Enhancement of Rel. 6 turbo Code" 3GPP TSG RAN WG1#43, R1-051310, 2005이다.
θ=3, C=4 및 8인 때는, 참고 문헌[3] Motorola, "A contention-free interleaver design for LTE code", 3GPP TSG RAN WG1#47의 표 1과 같다.
사례 2.
참고 문헌[1]의 수학식 (13).
추가적으로, ARP의 몇몇 성질들이 아래와 같이 제공된다.
성질 1.
x0 = x1 mod C이고 이는 π(x0) = π(x1) mod C이다.
증명: x1 = x0 + kC라고 하자. 그러면 π(x1) - π(x0) = PkC = 0 mod C.
성질 2.
π는 순열이고, 이는 Ψ이 전단사(bijection)임을 내포한다.
증명: 이고, 이지만 이라 가정한다. u0 modulo C에 합동(congruent)인 L/C 요소가 {0,1,...,L-1} 내에 있고, u1 modulo C에 합동인 또 다른 L/C 요소가 있다. 그렇다면 성질 1에 따라, π(u)가 동일한 합동 modulo C를 가지는 2L/C 요소 u가 존재한다. 이는 위에서 π가 순열이라는 가정에 모순된다.
성질 3.
Ψ는 전단사이고 그러면 π는 순열이다.
증명: 이고, 이나, 이라고 가정하자. u0 = x0 mod C이고 u1 = x1 mod C라고 하자. 만약 u0 ≠ u1이면, 그렇다면 Ψ가 전단사이므로 π(x0) mod C ≠ π(x1) mod C이다. 따라서, π(x1) - π(x0) = PkC mod L이다. gcd(P,L) = 1이고 C│L이기 때문에, PkC mod L = 0 은 k = 0 이거나 또는 k가 L/C의 약수임을 의미한다. k의 범위에 따라, 모순을 피할 수 없다. 따라서, π(x0) = π(x1)은 오직 x0 = x1일 때에만 일어난다.
성질 4.
명백하게, π(x)는 다음과 같이 다시 쓸 수 있다.
여기서,
도 15a 및 15b는 복수의 메모리 뱅크들에 관한 MOD 메모리 매핑의 실시예들을 예시한 것들이다.
다른 형태의 메모리 매핑을 가지고 계속 설명하자면, 참고 문헌 [1]과 [2] 에는 아래와 같이 정의된 모듈라 매핑(modular mapping, 축약해서 MOD mapping)이라고도 하는 메모리 매핑 방식이 또 있다.
이 MOD 매핑 방식에 따르면(다시 한번, M은 디코딩 프로세서의 수이다),
여기서, M은 디코딩 프로세서의 수이고, C는 ARP 인터리브 (π)의 주기이며, M은 C의 배수이다.
이들 실시예들(1501, 1502)의 각각은 gcd(W,M)=1인 경우의 MOD 매핑 상황에 상응한다. 또한, 이들 실시예(1501, 1502)는 인덱스 셋팅이 (W=5, C=4, M=4 및 gcd(W,M)=1)에 대해 MOD 매핑을 이용한 것이다.
각 실시예(1501, 1502)는 4 개의 메모리 뱅크들을 가지는 복수의 메모리 뱅크들(1510)을 이용한다.
첫 번째 디코딩 사이클 동안에, 실시예(1501)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 자연적 순서의 경우에 다음과 같다.
또한, 첫 번째 디코딩 사이클 동안에, 실시예(1501)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 인터리빙 (π) 순서의 경우에 다음 과 같다.
두 번째 디코딩 사이클 동안에, 실시예(1502)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 자연적 순서(natural order)의 경우에 다음과 같다.
또한, 두 번째 디코딩 사이클 동안에, 실시예(1502)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 인터리빙 (π) 순서의 경우에 다음과 같다.
이어지는 디코딩 사이클들(예를 들어 디코딩 반복 연산들) 동안에, 프로세서들과 메모리들 사이의 메모리 매핑은 다음과 같다.
세 번째 디코딩 사이클(자연적 순서/인터리빙 순서)은 각각
네 번째 디코딩 사이클(자연적 순서/인터리빙 순서)은 각각
다섯 번째 디코딩 사이클(자연적 순서/인터리빙 순서)은 각각
본 실시예에서 알 수 있듯이, 자연적 순서와 인터리빙 순서 모두 경합이 방지된다.
그러나, 상술한 많은 실시예들, 특히 터보 인코딩과 터보 디코딩 시에 ARP 인터리브 (π)를 이용하는 실시예들은, 이용 가능한 디코딩 프로세서들의 수, M에대한 제약이 있다. 예를 들어, 앞의 실시예들은 디코딩 프로세서들의 수 M이 반드시 정보 블록의 길이 L의 약수가 되어야 한다.
다음은 임의로 선택된 수(M)의 디코딩 프로세서들이 병렬 터보 디코딩 프로세싱을 수행하는 데에 이용될 수 있도록 하는 수단을 제공한다.
그렇게 함으로써, 스케쥴링된(scheduled) 블록 길이 L'가 적합하게 선택되어, 임의 선정된 개수인 M 개의 디코딩 프로세서들이 경합 방지 특성을 가진 적절한 메모리 매핑과 관련하여 이용될 수 있도록 한다.
도 16a 및 16b는 상기 간단한 예에 따른 복수의 메모리 뱅크들에 관한 MOD 메모리 매핑의 실시예들로서, 충돌(collision) 현상들이 발생하여 상기 메모리 매핑이 경합 방지(contention free)되지 않음을 보인다. 또한, 이러한 실시예들(1601, 1602)은 인덱스 세트들(W=6, C=4, M=4, 및 gcd(W,M)≠1)에 대해 MOD 매핑을 이용한 것이다.
이러한 실시예들(1601, 1602) 각각은 4개의 메모리 뱅크를 가지는 복수의 메모리 뱅크들(1610)을 이용한다.
첫 번째 디코딩 사이클 동안에, 실시예(1601)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 자연적 순서의 경우에 다음과 같다.
또한, 첫 번째 디코딩 사이클 동안에, 실시예(1601)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 인터리빙 (π) 순서의 경우에 다음과 같다.
두 번째 디코딩 사이클 동안에, 실시예(1602)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 자연적 순서의 경우에 다음과 같다.
또한, 두 번째 디코딩 사이클 동안에, 실시예(1602)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 인터리빙 (π) 순서의 경우에 다음과 같다.
이어지는 디코딩 사이클들(예를 들어 디코딩 반복 연산들) 동안에, 프로세서들과 메모리들 사이의 메모리 매핑은 다음과 같다.
세 번째 디코딩 사이클(자연적 순서/인터리빙 순서)은 각각
네 번째 디코딩 사이클(자연적 순서/인터리빙 순서)은 각각
다섯 번째 디코딩 사이클(자연적 순서/인터리빙 순서)은 각각
여섯 번째 디코딩 사이클(자연적 순서/인터리빙 순서)은 각각
본 실시예에서 알 수 있듯이, 자연적 순서와 인터리빙 순서 모두 경합이 방지된다.
메모리 매핑의 다른 형태로 아래의 참고 문헌 [4]에 정의된 분할 매핑(division mapping)(축약해서, DIV 매핑)이 있다.
이러한 DIV 매핑 접근에 따르면,
여기서, W는 병렬 디코딩 구조의 윈도우 사이즈이다.
i번째 디코딩 사이클에서 인덱스 셋팅은 아래와 같다.
여기서, M은 프로세서의 수이고, C는 ARP 인터리브(π)의 주기이다.
또한, M이 비(ratio) L/C의 팩터(factor)이면, ARP 인터리브(π)에서 매핑은 사실상 경합 방지가 가능하다.
그러나, 아래의 참고 문헌 [3] 및 [4]의 실시예들은 이러한 성질을 가지지 않는다.
도 17a 및 17b는 복수의 메모리 뱅크들에 관한 DIV 메모리 매핑의 실시예들을 예시한 것들이다. 이러한 실시예들(1701, 1702) 각각은 M이 L/C를 나누는 상황에 대응한다. 또한, 이러한 실시예들(1701, 1702)은 인덱스 셋팅(C=4, M은 L/C=6의 약수인 3 및 W=8)에 대한 DIV 매핑을 이용한 것이다.
각각의 실시예(1701, 1702)는 3개의 메모리 뱅크를 가지는 복수의 메모리 뱅크들(1710)을 이용한다.
첫 번째 디코딩 사이클 동안에, 실시예(1701)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 자연적 순서의 경우에 다음과 같다.
또한, 첫 번째 디코딩 사이클 동안에, 실시예(1701)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 인터리빙 (π) 순서의 경우에 다음과 같다.
두 번째 디코딩 사이클 동안에, 실시예(1702)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 자연적 순서의 경우에 다음과 같다.
또한, 두 번째 디코딩 사이클 동안에, 실시예(1702)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 인터리빙 (π) 순서의 경우에 다음과 같다.
이어지는 디코딩 사이클들(예를 들어, 디코딩 반복 연산들) 동안에, 프로세서들과 메모리들 사이의 메모리 매핑은 다음과 같다.
세 번째 디코딩 사이클(자연적 순서/인터리빙 순서)은 각각
네 번째 디코딩 사이클(자연적 순서/인터리빙 순서)은 각각
다섯 번째 디코딩 사이클(자연적 순서/인터리빙 순서)은 각각
여섯 번째 디코딩 사이클(자연적 순서/인터리빙 순서)은 각각
일곱 번째 디코딩 사이클(자연적 순서/인터리빙 순서)은 각각
여덟 번째 디코딩 사이클(자연적 순서/인터리빙 순서)은 각각
본 실시예에서 알 수 있듯이, 자연적 순서와 인터리빙 순서 모두 경합이 방지된다.
도 18a 및 18b는 상기 간단한 예에 따른 복수의 메모리 뱅크들에 관한 DIV 메모리 매핑의 실시예들로서, 충돌 현상들이 발생하여 상기 메모리 매핑이 경합 방 지되지 않음을 보인다.
이러한 실시예들(1801, 1802) 각각은 M이 L/C의 팩터(factor)가 아닌 경우에 대응한다. 다시 말해, M은 L/C로 나누지 못한다. 또한, 이러한 실시예들(1801, 1802)은 인덱스 셋팅(C=4, M은 L/C=6의 팩터(factor)가 아닌 4, 윈도우 사이즈 W=6)에 대해 DIV 매핑을 이용한 것이다.
이러한 실시예들(1801, 1802) 각각은 4개의 메모리 뱅크를 가지는 복수의 메모리 뱅크들(1810)을 이용한다.
첫 번째 디코딩 사이클 동안에, 실시예(1801)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 자연적 순서의 경우에 다음과 같다.
또한, 첫 번째 디코딩 사이클 동안에, 실시예(1801)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 인터리빙 (π) 순서의 경우에 다음과 같다.
두 번째 디코딩 사이클 동안에, 실시예(1802)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 자연적 순서의 경우에 다음과 같다.
또한, 두 번째 디코딩 사이클 동안에, 실시예(1802)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 인터리빙 (π) 순서의 경우에 다음 과 같다.
이어지는 디코딩 사이클들(예를 들어, 디코딩 반복 연산들) 동안에, 프로세서들과 메모리들 사이의 메모리 매핑은 다음과 같다.
세 번째 디코딩 사이클(자연적 순서/인터리빙 순서)은 각각
네 번째 디코딩 사이클(자연적 순서/인터리빙 순서)은 각각
다섯 번째 디코딩 사이클(자연적 순서/인터리빙 순서)은 각각
여섯 번째 디코딩 사이클(자연적 순서/인터리빙 순서)은 각각
본 실시예에서 알 수 있듯이, 자연적 순서는 경합이 방지되지만, 인터리빙 순서는 경합이 방지되지 않는다.
상술한 ARP 인터리브(π)에 따르면, ARP 인터리브(π)를 위한 새로운 경합 방지 메모리 매핑은 아래와 같다( 또는 ADD 매핑으로 표시된다). 임의의 크기의 ARP 인터리브(π)에 대해, 다음의 메모리 매핑은 경합이 방지된다.
여기서, C는 ARP의 주기이고, M은 프로세서의 개수이며, 이때 M은 C의 배수이고(예를 들어, m이 정수일 때, M=mC), W는 병렬 디코딩의 윈도우 사이즈이며, q는 qW=0mod(M)의 성질을 가지는 가장 작은 양의 정수이다.
임의의 사이즈의 ARP 인터리브에 대해 그리고 임의의 수인 M개의 병렬 배치된 디코더들을 이용할 경우에, 복수의 프로세서들과 복수의 메모리들(예를 들어, 메모리 뱅크들) 사이의 이러한 ADD 매핑은 경합이 방지된다.
이러한 ADD 매핑은 t 번째 디코딩 사이클에, 인덱스 세트를 서로 다른 메모리들(예를 들어, 메모리 뱅크들)에 대해 아래와 같이 매핑한다.
도 19a 및 19b는 상기 간단한 예에 따른 복수의 메모리 뱅크들에 관한 ADD 메모리 매핑의 실시예들로서, 아무런 충돌 현상(collisions)도 발생하지 않아 상기 메모리 매핑이 경합 방지됨을 보인다.
이러한 실시예들(1901, 1902) 각각은 C=4, 윈도우 사이즈 W=6, q=2, qW=12인 경우에 대응한다.
이러한 실시예들(1901, 1902) 각각은 4개의 메모리 뱅크를 가지는 복수의 메모리 뱅크들(1910)을 이용한다.
첫 번째 디코딩 사이클 동안에, 실시예(1901)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 자연적 순서의 경우에 다음과 같다.
또한, 첫 번째 디코딩 사이클 동안에, 실시예(1901)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 인터리빙 (π) 순서의 경우에 다음과 같다.
두 번째 디코딩 사이클 동안에, 실시예(1902)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 자연적 순서의 경우에 다음과 같다.
또한, 두 번째 디코딩 사이클 동안에, 실시예(1902)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 인터리빙 (π) 순서의 경우에 다음과 같다.
이어지는 디코딩 사이클들(예를 들어, 디코딩 반복 연산들) 동안에, 프로세서들과 메모리들 사이의 메모리 매핑은 다음과 같다.
세 번째 디코딩 사이클(자연적 순서)은
세 번째 디코딩 사이클(인터리빙 순서)은
네 번째 디코딩 사이클(자연적 순서)은
네 번째 디코딩 사이클(인터리빙 순서)은
다섯 번째 디코딩 사이클(자연적 순서)은
다섯 번째 디코딩 사이클(인터리빙 순서)은
여섯 번째 디코딩 사이클(자연적 순서)은
여섯 번째 디코딩 사이클(인터리빙 순서)은
본 실시예에서 알 수 있듯이, 자연적 순서 및 인터리빙 순서는 모두 경합이 방지된다.
도 20은 M=2C인 복수의 메모리 뱅크들에 관한 ADD 메모리 매핑의 실시예로 서, 아무런 충돌 현상도 발생하지 않아 상기 메모리 매핑이 경합 방지됨을 보인다.
이러한 실시예(2000)는 C=4, m=2, 윈도우 사이즈 W=3, q=8, qW=24인 경우에 대응한다.
이러한 실시예(2000)는 8개의 메모리 뱅크를 가지는 복수의 메모리 뱅크들(2010)을 이용한다.
첫 번째 디코딩 사이클 동안에, 실시예(2001)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 자연적 순서의 경우에 다음과 같다.
또한, 첫 번째 디코딩 사이클 동안에, 실시예(2001)에 나타난 바와 같은 메모리 매핑은 터보 디코딩 프로세싱을 수행하는 인터리빙 (π) 순서의 경우에 다음과 같다.
이어지는 디코딩 사이클들(예를 들어, 디코딩 반복 연산들) 동안에, 프로세서들과 메모리들 사이의 메모리 매핑은 다음과 같다.
두 번째 디코딩 사이클(자연적 순서)은
두 번째 디코딩 사이클(인터리빙 순서)은
세 번째 디코딩 사이클(자연적 순서)은
세 번째 디코딩 사이클(인터리빙 순서)은
본 실시예에서 알 수 있듯이, 자연적 순서 및 인터리빙 순서는 모두 경합이 방지된다.
도 21은 병렬 터보 디코딩 프로세싱의 ADD 매핑 및 자연 순서 단계에 관한 직선적 주소 생성(straightforward address generation)의 실시예를 예시한 것이다. 자연적 순서를 이용한 직선적 주소 생성은 다음과 같다.
상기 직선적 주소 생성(2100)은 다양한 종류의 메모리 매핑에 적용될 수 있으나, 구현할 경우에 결과적으로 초래되는 복잡도는 때때로 바람직하지 않으며, 때때로 디코딩 속도의 저하와 같은 악영향을 초래할 수 있다는 점을 예상할 수 있다.
도 21을 참조하면, 본 실시예는 ADD 매핑(즉, 의 메모리 매핑)을 이용하고, 본 실시예(2100)는 참조 부호 2102에 나타난 바와 같이 C=4, 윈도우 사이즈 W=6, q=2, qW=12인 경우에 대응한다. 또한, 4개의 프로세서들(프로세서 P0 2110, 프로세서 P1 2111, 프로세서 P2 2112, 및 프로세서 P3 2113) 및 4개의 메모리 뱅크들(메모리 뱅크 B0 2120, 메모리 뱅크 B1 2121, 메모리 뱅크 B2 2122, 및 메모리 뱅크 B3 2123)이 있다.
터보 디코딩 프로세싱(예를 들어, SISO 0 디코딩 동작들)의 자연적 순서 단계에 따르면, 참조 부호 2103에 나타난 바와 같이 주소들은 연속적으로 액세스된다. 매핑(이 경우, ADD 매핑)은 어떤 특정 메모리 뱅크로부터 어떤 데이터가 어떤 프로세서에 공급되는지를 결정한다. 그럼에도 불구하고, 다음과 같은 내용을 알 수 있다.
1. 각 메모리 뱅크의 최상위 데이터 엔트리는 시점 0에서 액세스된다.
2. 각 메모리 뱅크의 최상위에서 두 번째인 데이터 엔트리는 시점 1에서 액세스된다.
3. 각 메모리 뱅크의 최상에서 세 번째인 데이터 엔트리는 시점 2에서 액세스된다.
4. 각 메모리 뱅크의 최상에서 네 번째인 데이터 엔트리는 시점 3에서 액세스된다.
5. 각 메모리 뱅크의 최하에서 두 번째인 데이터 엔트리는 시점 4에서 액세스된다.
6. 각 메모리 뱅크의 최하위 데이터 엔트리는 시점 5에서 액세스된다.
도 22는 병렬 터보 디코딩 프로세싱의 ADD 매핑 및 인터리빙된(π) 순서 단계에 관한 직선적 주소 생성의 실시예를 예시한 것이다. 도 22는 도 21과 함께 고 려되어야 할 것이다.
터보 디코딩 프로세싱(예를 들어, SISO 1 디코딩 동작들)의 인터리빙(π) 순서 단계에 따르면, 주소들은 참조 부호 2104에 나타난 바와 같이 메모리 매핑(M) 및 사용된 인터리브(π)에 따라 달라지는 순서로 액세스된다(즉, 반드시 연속적일 필요는 없다). 상기 매핑(이 경우, ADD 매핑)은 어떤 특정 메모리 뱅크로부터 어떤 데이터를 어떤 프로세서로 공급할지 결정한다. 그럼에도 불구하고, 각 메모리 뱅크를 고려할 때 다음과 같은 내용을 알 수 있다.
메모리 뱅크 B0 2120을 고려하면,
1. 메모리 뱅크 B0 2120의 최상위 데이터 엔트리는 시점 0에서 액세스된다.
2. 메모리 뱅크 B0 2120의 최하위 데이터 엔트리는 시점 1에서 액세스된다.
3. 메모리 뱅크 B0 2120의 최상위에서 세 번째 데이터 엔트리는 시점 2에서 액세스된다.
4. 메모리 뱅크 B0 2120의 최상위에서 두 번째 데이터 엔트리는 시점 3에서 액세스된다.
5. 메모리 뱅크 B0 2120의 최하위에서 두 번째 데이터 엔트리는 시점 4에서 액세스된다.
6. 메모리 뱅크 B0 2120의 최상위에서 네 번째 데이터 엔트리는 시점 5에서 액세스된다.
메모리 뱅크 B1 2121을 고려하면,
1. 메모리 뱅크 B1 2121의 최상위 데이터 엔트리는 시점 0에서 액세스된다.
2. 메모리 뱅크 B1 2121의 최상위에서 네 번째 데이터 엔트리는 시점 1에서 액세스된다.
3. 메모리 뱅크 B1 2121의 최상위에서 세 번째 데이터 엔트리는 시간 2에서 액세스된다.
4. 메모리 뱅크 B1 2121의 최하위 데이터 엔트리는 시점 3에서 액세스된다.
5. 메모리 뱅크 B1 2121의 최하위에서 두 번째 데이터 엔트리는 시점 4에서 액세스된다.
6. 메모리 뱅크 B1 2121의 최상위에서 두 번째 데이터 엔트리는 시점 5에서 액세스된다.
메모리 뱅크 B2 2122 및 메모리 뱅크 B3 2123을 고려할 때, 유사한 관찰 결과가 얻어질 수 있다.
도 23은 ADD 매핑하기 위한 직선적 주소 생성을 구현한 디코딩 아키텍처의 일 실시예를 예시한 것이다. 도 23은 도 21 및 22와 함께 고려될 수 있다. 크로스-바 스위치(cross-bar switch)(2310)는 각 메모리 뱅크에서 적절한 프로세서로 데이터 값을 적절히 제공하는데 사용된다. 위에서 적절한 제공이란 역시 메모리 매핑(M) 함수 및 사용된 인터리브(π)이다. 각 메모리 뱅크들의 매핑에 따라(예를 들어, 어떤 프로세서로 어떤 주어진 디코딩 시간 동안에 특정 메모리 뱅크 내의 각 데이터 엔트리가 공급되어야 하는지)(상기 4개의 메모리 뱅크들의 상기 메모리 매핑은 , , , 및 로 나타난다.), 만약 인 경우, 메모리 뱅크 주소 및 그 메모리 뱅크 내의 그 특정 위치에 있는 데이터 값 모 두에 대해 함으로써, 프로세스 인덱스들은 적절한 메모리 뱅크 인덱스들로 매핑된다.
도 23을 참조하면, 동작은 아래와 같이 서술될 수 있다.
2. 프로세서 Ps는 xs에 대한 메모리 위치의 뱅크 및 주소에 대하여 M(xs)(예를 들어, 어떤 메모리 뱅크) 및 A(xs)(예를 들어, 그 메모리 뱅크 내의 어떤 위치)를 계산한다.
3. 상기 크로스-바(cross-bar) 스위치(2310)는 M(xs)의 집합에 따라 각 프로세서 Ps와 그에 상응하는 뱅크 M(xs)를 연결하도록 설정된다.
4. 프로세스 Ps로부터 제공된 주소 A(xs)는 상응하는 뱅크 M(xs)에 보내짐으로써, 비트 위치 xs에서의 값인 L(xs)이 액세스될 수 있다.
다른 방식으로 설명하면, 상기 주소 매핑은 아래와 같을 수 있다.
병렬 터보 디코딩 프로세싱의 자연적 순서 단계에서는, 주소들은 순차적으로 액세스되는데, 이러한 구현은 상대적으로 빠르고 간단하다.
병렬 터보 디코딩 프로세서의 인터리빙(π) 순서 단계에서는, 주소들은 상기 프로세서들에 의해 계산된 후, 적절한 메모리 뱅크로 보내진다. 이것은 매우 긴 사이클 시간을 가지며, 상기 크로스-바 스위치(2310)는 상기 메모리 뱅크들과 프로세 서들 사이에서 메모리 주소들 및 데이터 값들의 제공 및 트랜스레이팅(translating) 모두에 대해 요구된다.
도 24는 병렬 터보 디코딩 프로세싱의 ADD 매핑 및 자연 순서 단계에 관한 예측 주소 생성(anticipatory address generation)의 실시예를 예시한 것이다. 여기서 개시된 새로운 접근에 의해 병렬 터보 디코딩 프로세싱에 따라 주소 생성에 소요되는 사이클 시간이 크게 줄어든다. 주소 생성의 상기 수단은 일반적으로 예측 주소 생성이라고 한다.
먼저, 주소 매핑은 아래와 같이 가정된다.
각 메모리 뱅크가, 상기 크로스-바 스위치를 통해 프로세서들로부터 주소 시퀀스를 공급받아야 하는 대신에, 자기 자신의 주소 시퀀스를 계산하는 것이 가능한지에 대한 의문이 생길 수 있다. 위에서 가정한 주소 매핑()이 이용된다면, 이러한 방식이 실제로 수행될 수는 있겠지만 그 구현은 대단히 어렵다.
본 명세서에서는 새로운 접근 방식을 제공하는데, 이 방식에 따르면, 병렬 터보 디코딩 프로세싱의 인터리빙(π) 순서 단계의 사이클 t에서 메모리 뱅크 b의 데이터 값의 비트 인덱스 x를 제공하는, F 라고 참조되는 인덱스 함수가 계산된다. 예를 들어, 후술되는 인덱스 함수(F)는 이러한 특정한 주소 매핑()을 위해 계산된다.
그러나, 상술한 식 는 mod(W)에 대해 몇 개의 합동(congruence)을 가질 수 있으므로, 이러한 인덱스 함수 F는 일반적으로 이런 특정 주소 매핑()에 대해 구성하기가 매우 어렵다. 이에 대한 하나의 예외는 DIV 메모리 매핑(예를 들어, )일 수 있고, 이는 주소가 그러한 특정 메모리 매핑의 경우에서는 s에 대해 독립적이기 때문이다.
또한, 역 인터리브 은 다음의 함께 양도된 미국 가특허 출원 및 미국 실용 특허 출원(이들 출원들에 포함된 내용은 이로써 본 명세서에 그 전체로서 모든 목적에 대해 참고 문헌으로서 통합된다)에 기재된 바와 같이 또 다른 ARP 인터리브(π)로 평가될 수 있다.
1. 미국 가출원 일련 번호 60/872,367, "Turbo decoder employing ARP(almost regular permutation) interleave and inverse thereof as de-interleave"(대리인 서류 번호 BP5864), 2006년 12월 1일에 출원되어 진행 중
2. 미국 실용 출원 일련 번호 11/657,819, "Turbo decoder employing ARP(almost regular permutation) interleave and inverse thereofas de-interleave"(대리인 서류 번호 BP5861), 2007년 1월 25일에 출원되어 진행 중
자연적 순서 단계(4개의 프로세서들을 고려할 때)은 아래와 같다.
0, 1, 2, 3, 4, 5×6, 7, 8, 9, 10 11×12, 13, 14, 15, 16, 17×18, 19, 20, 21,22, 23.
인터리빙 순서 단계(4개의 프로세서들을 고려할 때)은 아래와 같다.
0, 11, 22, 5, 4, 15×2, 9, 8, 19, 6, 13×12, 23, 10, 17, 16, 3×14, 21, 20, 7,18, 1.
다시 도 24를 참조하면, 자연적 순서를 이용하는 주소 생성(2400)은 아래와 같다.
이러한 예측 주소 생성(2400)은 다양한 종류의 메모리 매핑에 적용될 수 있고, 이는 상술된 직선적 주소 생성에 비교할 때, 크게 향상된 디코딩 속도를 제공한다.
도 24를 참조하면, 이 실시예는 ADD 매핑(즉, 인 메모리 매핑)을 사용하고, 또한, 이 실시예(2400)는 참조 부호 2402에 나타난 C=4, 윈도우 사이즈 W=6, q=2, 및 qW=12인 경우에 대응한다. 또한, 4개의 프로세서들(프로세서 P1 2410, 프로세서 P1 2411, 프로세서 P2 2412, 및 프로세서 P3 2413) 및 4개의 메모리 뱅크들(메모리 뱅크 B0 2420, 메모리 뱅크 B1 2421, 메모리 뱅크 B2 2422, 및 메모리 뱅크 B3 2423)이 있다.
터보 디코딩 프로세싱(예를 들어, SISO 0 디코딩 동작들)의 자연적 순서 단계에 따르면, 주소들은 참조 부호 2402에 나타난 바와 같이, 사용된 메모리 매핑(M) 및 인터리브(π)에 따라 달라지는 순서로 액세스된다(즉, 반드시 순차적으로 액세스되지 않는다). 이러한 매핑(이 경우, ADD 매핑)은 어떤 특정 메모리 뱅크로부터 어떤 데이터가 어떤 프로세서에 공급될지 결정한다. 그럼에도 불구하고, 각 메모리 뱅크를 고려할 때, 아래와 같은 내용을 알 수 있다.
메모리 뱅크 B0 2420을 고려하면,
1. 메모리 뱅크 B0 2420의 최상위 데이터 엔트리는 시점 0에서 액세스된다.
2. 메모리 뱅크 B0 2420의 최상위에서 네 번째 데이터 엔트리는 시점 1에서 액세스된다.
3. 메모리 뱅크 B0 2420의 최상위에서 세 번째 데이터 엔트리는 시점 2에서 액세스된다.
4. 메모리 뱅크 B0 2420의 최하위 데이터 엔트리는 시점 3에서 액세스된다.
5. 메모리 뱅크 B0 2420의 최하위에서 두 번째 데이터 엔트리는 시점 4에서 액세스된다.
6. 메모리 뱅크 B0 2420의 최상위에서 두 번째 데이터 엔트리는 시점 5에서 액세스된다.
메모리 뱅크 B1 2421을 고려하면,
1. 메모리 뱅크 B1 2421의 최상위 데이터 엔트리는 시점 0에서 액세스된다.
2. 메모리 뱅크 B1 2421의 최하위 데이터 엔트리는 시점 1에서 액세스된다.
3. 메모리 뱅크 B1 2421의 최상위에서 세 번째 데이터 엔트리는 시점 2에서 액세스된다.
4. 메모리 뱅크 B1 2421의 최상위에서 두 번째 데이터 엔트리는 시점 3에서 액세스된다.
5. 메모리 뱅크 B1 2421의 최하위에서 두 번째 데이터 엔트리는 시점 4에서 액세스된다.
6. 메모리 뱅크 B1 2421의 최상위에서 네 번째 데이터 엔트리는 시점 5에서 액세스된다.
메모리 뱅크 B2 2422 및 메모리 뱅크 B3 2423을 고려할 때, 유사한 결과가 얻어질 수 있다.
도 25는 병렬 터보 디코딩 프로세싱의 ADD 매핑 및 인터리빙된(π) 순서 단계에 관한 예측 주소 생성의 실시예를 예시한 것이다. 도 25는 도 24와 함께 고려될 수 있다.
터보 디코딩 프로세싱(예를 들어, SISO 1 디코딩 동작들)의 인터리빙 (π) 순서에 따라, 참조 부호 2402에 나타난 바와 같이 주소들은 순차적으로 액세스된다. 이러한 매핑(이 경우, ADD 매핑)은 어떤 특정 메모리 뱅크로부터 어떤 데이터가 어떤 프로세서로 제공되는지 결정한다. 그럼에도 불구하고, 아래와 같은 내용을 알 수 있다.
1. 각 메모리 뱅크의 최상위 데이터 엔트리는 시점 0에서 액세스된다.
2. 각 메모리 뱅크의 최상위에서 두 번째 데이터 엔트리는 시점 1에서 액세스된다.
3. 각 메모리 뱅크의 최상위에서 세 번째 데이터 엔트리는 시점 2에서 액세스된다.
4. 각 메모리 뱅크의 최상위에서 네 번째 데이터 엔트리는 시점 3에서 액세스된다.
5. 각 메모리 뱅크의 최하위에서 두 번째 데이터 엔트리는 시점 4에서 액세스된다.
6. 각 메모리 뱅크의 최하위 데이터 엔트리는 시점 5에서 액세스된다.
도 26은 ADD 매핑하기 위한 예측 주소 생성을 위해 구현된 디코딩 아키텍처 의 일 실시예를 예시한 것이다. 도 26은 도 24 및 25와 함께 고려될 수 있다. 인덱스 함수(F)를 사용함으로써, 복잡도를 크게 감소시키고, 디코딩 속도를 크게 향상시킬 수 있다.
크로스-바 스위치(2610)는 각 메모리 뱅크에서 적절한 프로세서로 데이터 값을 적절하게 제공하기 위해 이용되는데, 하지만 이러한 실시예는 도 23에 도시된 실시예에 비해 훨씬 덜 복잡하다. 이 경우 적절한 제공이란 역시 메모리 매핑(M) 함수 및 사용된 인터리브 (π)이다. 각 메모리 뱅크들의 매핑에 따라(예를 들어, 어떤 프로세서로 어떤 주어진 디코딩 시간 동안에 특정 메모리 뱅크 내의 각 데이터 엔트리가 공급되어야 하는지)(상기 4개의 메모리 뱅크들의 상기 메모리 매핑은 , , , 및 로 나타난다.), 만약 인 경우, 메모리 뱅크 내의 그 특정 위치에 있는 데이터 값에 대해서만 함으로써, 프로세스 인덱스들은 적절한 메모리 뱅크 인덱스들로 매핑된다. 다시 말해, 도 23의 실시예와 달리 더이상 메모리 뱅크 주소를 고려할 필요가 없다(즉, 메모리 뱅크 주소 및 데이터 값들 모두 고려되지 않고, 메모리 뱅크 내의 특정 위치에서 오직 데이터 값만이 고려된다).
도 26을 참조하면, 동작은 아래와 같이 서술될 수 있다.
2. 프로세서 Ps는 xs에 대한 메모리 위치의 뱅크에 대하여 M(xs)(예를 들어, 어떤 메모리 뱅크)를 계산한다.
3. 크로스-바 스위치(2610)는 M(xs)의 집합에 따라 각 프로세서 Ps와 대응 뱅크 M(xs)를 연결하도록 설정된다.
4. 동시에, 각 메모리 뱅크의 메모리 생성부는 어드레스 A(xs)를 결정하여, 비트 위치 xs에서 값인 L(xs)는 액세스되고, 크로스-바 스위치(2610)를 통해 적절한 프로세서로 공급될 수 있다.
다른 방식으로 설명하면, 상기 주소 매핑은 아래와 같을 수 있다.
병렬 터보 디코딩 프로세싱의 자연적 순서 단계에서는, 주소들은 각 메모리 뱅크에 대응하는 각 메모리 생성부에 의해 계산된다. 예를 들어, 메모리 생성부(2620)는 계산된 인덱스 함수(F)를 사용하여, 메모리 뱅크 B0에 저장된 서브 블록의 데이터 엔트리의 주소에 대한 정보를 제공한다. 유사하게, 메모리 생성부(2621)는 계산된 인덱스 함수(F)를 사용하여, 메모리 뱅크 B1에 저장된 서브 블록의 데이터 엔트리의 주소에 대한 정보를 제공한다. 또한 유사하게, 메모리 생성부(2622)는 계산된 인덱스 함수(F)를 사용하여, 메모리 뱅크 B2에 저장된 서브 블록의 데이터 엔트리의 주소에 대한 정보를 제공하고, 메모리 생성부(2623)는 계산된 인덱스 함수(F)를 사용하여, 메모리 뱅크 B3에 저장된 서브 블록의 데이터 엔트리의 주소에 대한 정보를 제공한다.
병렬 터보 디코딩 프로세싱의 인터리빙(π) 순서 단계에서, 주소들은 매우 간단하고 빠르게 단순히 순차적으로 액세스된다. 이와 같이 메모리 생성부를 사용 하여 인덱스 함수(F)를 기초로 주소들을 계산함으로써, 병렬 터보 디코딩 프로세싱에 따른 매우 향상된 디코딩 속도가 가능하다.
상기 예측 주소 생성에 따라, 어드레스 매핑은 초기에 다음과 같이 가정된다.
각 메모리 뱅크가, 크로스-바 스위치를 통해 프로세서들로부터 주소 시퀀스들이 공급되어야만 하는 대신 자신의 주소 시퀀스를 계산하는 것이 가능한지에 대한 의문이 생길 수 있다. 상기 가정된 주소 매핑()이 이용된다면, 이것은 상대적으로 쉽게 수행될 수 있으며, 결과적으로 더욱 단순한 구현을 제공할 수 있다.
이것은 병렬 터보 디코딩 프로세싱의 자연적 순서 단계의 사이클 t에서 메모리 뱅크 b의 데이터 값의 비트 인덱스 x를 제공하는 인덱스 함수(F)를 사용한다. 예를 들어, 후술되는 인덱스 함수(F)는 이러한 특정 주소 매핑()을 위해 계산된다.
인덱스 함수(F)를 사용하는 예측 주소 생성은 특정 어플리케이션에 요구되는 여하한 특정 메모리 매핑(M)에 적용될 수 있다.
그 결과, 인덱스 함수는 다음과 같다.
이에 대한 증명은 아래와 같다.
그 결과, 인덱스 함수는 아래와 같다.
이에 대한 증명은 아래와 같다.
그 결과, 인덱스 함수는 아래와 같다.
이에 대한 증명은 아래와 같다.
상술한 바와 같이, 이러한 새로운 주소 함수, 는 각 메모리 뱅크가 자신의 주소 시퀀스를 계산하여, 적절한 메모리 뱅크 액세스를 수행하여, 병렬 터보 디코딩 프로세싱에서 사용을 위한 적절한 데이터 부분을 적절한 프로세서에 공급하는 것을 허락한다.
이러한 새로운 예측 주소 생성의 이점 중 하나는 감소된 사이클 시간이다. 메모리 뱅크 자신들(또는 각 메모리 뱅크에 연결된 메모리 생성부들, 또는 집적된 메모리 생성부)은 그들의 주소가 프로세서들로부터 공급될 때까지 기다리는 대신에 그들 자신이 주소들을 생성할 수 있고, 그 결과 크로스-바 스위치를 통하여 메모리 뱅크들로 전달된다.
또한, 이러한 새로운 주소 함수, 는, 크로스-바 스위치가 단지 데이터의 전달 방향 설정(steering)을 수행하기만 하면 되므로(즉, 주소들이 메모리 생성부들에 의해 현지에서 생성되므로), 하드웨어 구현에 필요한 면적을 줄일 수 있다. 이러한 점은 메모리 뱅크들과 프로세서들 사이에 주소들 및 데이터 모두에 대한 공급 및 방향 설정 모두를 수행해야만 하는 다른 크로스-바 스위치와 대조적이라 할 수 있다. 더 나아가, 이러한 새로운 주소 함수, 는 병렬 터보 디코딩 프로세싱에서 총 혼잡도(net congestion)를 줄일 수 있다. 왜냐하면, 주소들이 크로스-바 스위치를 통하여 프로세서들로부터 설정되는 대신에 메모리 생성부들에 의해 현지에서(locally) 생성되기 때문이다.
도 27은 복수의 메모리 뱅크 내에 저장된 데이터에 액세스하기 위해 두 개로 크게 분리된 복수의 SISO 디코더들과 예측 주소 생성 기법을 사용하는 터보 디코더의 실시예를 예시한 것이다. 다른 실시예들에서 나타난 바와 같이, 수신된 신호(예를 들어, 통신 채널로부터 전형적으로 수신된)는 수신 신호(2701)로부터 I, Q(in-phase and quadrature) 성분을 추출하는 I,Q 추출 모듈(extraction module, 2702)로 공급된다. 이것은 수신부 전처리(pre-processing)로 보여질 수 있고, 적절한 주파수 변환(필요한 경우, 반송파(carrier) 주파수로부터 다운 컨버전)을 포함할 수 있다. I, Q는 해당 변조 방식에 따른 적절한 컨스텔레이션(constellation) 및 매핑에 따라 매핑될 수 있다. 그 다음, 매핑된 I, Q는 메트릭 생성부(metric generator, 2704)로 전달된다. 메트릭 생성부(2704)는 수신된 I, Q로부터 변조의 적절한 배치 및 매핑 내의 배치 포인트로 측정된 적절한 메트릭(2705)을 생성한다. 메트릭은 변조 내에서 배치 포인트들의 매핑에 의해 인덱스된다. 이러한 메트릭들은 실제 수신된 심볼의 위치에서 모듈 내의 예측된 배치 포인트 위치까지 스케일링된 유클리드 거리(Euclidian distance)로 나타낼 수 있다.
터보 디코딩 프로세스 및 기능성(functionality)에 대해 계속하자면, 메트릭 생성부(2704)에 의해 계산된 메트릭(2705)은 예측 주소 생성 모듈(2707)로 제공된다. 처음에, 예측 주소 생성 모듈(2707)은 수신된 데이터 블록을 복수의 서브 블록으로 분할할 수 있다. 이러한 서브 블록들 각각은 대응하는 복수의 데이터를 포함한다. 서브 블록 각각의 각 데이터는 복수의 메모리 뱅크들(2790) 중 하나의 메모리 뱅크 내의 메모리 위치에 저장된다. 복수의 메모리 뱅크들(2790)은 많은 메모리 뱅크들(B0 2791, ..., Bn 2792)을 포함한다. 데이터들이 메모리 뱅크들(2790)에 위치함에 따라 각 서브 블록의 이러한 데이터의 위치에 기초하여, 예측 주소 생성 모듈(2707)은 또한 터보 디코딩 프로세싱(예를 들어, SISO 0 디코딩 동작들)의 자연적 순서 단계를 수행할 때 개개의 데이터 엔트리의 각각의 주소의 적절한 액세싱을 위해 사용되는 적절한 인덱스 함수(예를 들어, F)를 생성할 수 있다.
그 다음, 이러한 인덱스 함수는 복수의 메모리 생성부들(예를 들어, 다른 실시예들에서 기술된 바와 같이)에 의해 사용될 수 있으므로, 병렬 터보 디코딩 프로세싱 내에서 사용되는 것과 같이 다수의 디코딩 프로세서들이 개입될 필요없이 적절한 주소가 즉시 생성될 수 있다.
그 다음, 적절한 주소는 SISO(soft-in/soft-out) 0 디코더들(2710)의 제1 어레이(array) 배치에 의해 사용되기 위해 공급된다. SISO 0 디코더들(2710)의 제1 어레이는 SISO 0(2711), ..., 및 SISO 0(2712)에 의해 도시된 바와 같이 많은 수의 SISO 0 디코더들을 포함한다. SISO 0 디코더들(2710)의 어레이의 각 SISO 디코더는 특정 메모리 뱅크들(2790) 중 하나 내의 특정 메모리 위치 내에 저장된 데이터의 SISO 디코딩을 수행할 수 있다.
메트릭 생성부(2704)에 의해 먼저 계산된 메트릭(2705)은 또한 SISO 1 디코더들(2730)의 제2 어레이에 제공된다. SISO 1 디코더들(2730)의 이러한 어레이는 SISO 1(2731), ..., SISO 1(2732)에 의해 도시된 바와 같이 많은 수의 SISO 1 디코더들을 포함한다. SISO 1 디코더들(2730)의 어레이의 각 SISO 디코더는 특정 메모리 뱅크들(2790) 중 하나 내의 특정 메모리 위치 내에 저장된 데이터의 SISO 디코딩을 수행할 수 있다.
트렐리스 코딩(예를 들어, 터보 트렐리스 코딩된 변조(Turbo Trellis Coded Modulation, TTCM))의 맥락(context)에서 보았을 때, SISO 0 디코더(2710)의 제1 어레이 및 SISO 1 디코더(2730)의 제2 어레이의 각각은, 특정 디코딩 반복 연산을 하면서 계속 업데이트되는 상응하는 메모리 위치들 각각에 있는 개별 데이터 엔트리들 각각에 대해 사용되는 트렐리스에 따라, 순방향 메트릭들(알파값들, alphas), 역방향 메트릭들(베타값들, betas), 및 부가 값들(extrinsic values)을 계산한다.
이러한 알파, 베타, 및 부가 값들 모두는 디코딩될 프레임 내의 각 심볼에 대해 계산된다. 이러한 알파, 베타, 및 부가 값들의 계산은 모두 트렐리스에 기초 한다.
SISO 0 디코더들(2710)의 제1 어레이에서 시작하자면, 부가 값들(2711)이 계산된 이후, 이 부가 값들은 인터리버(π) (2720)로 전달되고, 이 이후에 "사전 확률(a priori probability(app))" 정보(2721)로서 SISO 1 디코더들(2730)의 제2 어레이로 전달된다. SISO 1 디코더들(2730)의 제2 어레이에 의해 메모리 뱅크들(2790) 내의 데이터에 액세싱하는 것은, 인덱스 함수(F)를 사용하기 때문에, 터보 디코딩 프로세싱(예를 들어, SISO 1 디코딩 동작들)의 인터리빙(π) 순서 단계에 따라 순차적으로 수행된다는 점을 주목한다.
이와 유사하게, SISO 1 디코더들(2730)의 제2 어레이 내에서 부가 값들(2731)이 계산된 후, 이들 부가 값들은 디-인터리버(π-1)(2740)로 전달되고, 이 이후에 "사전 확률(app)" 정보(2741)로서 예측 주소 생성 모듈(2707)로 전달된다. 이러한 예측 주소 생성 모듈(2707)은, 터보 디코딩 프로세싱(예를 들어, SISO 0 디코딩 동작들)의 자연적 순서 단계를 수행할 때, 개별 데이터 엔트리들의 주소의 적절한 접근을 위해 적절한 인덱스 함수(예를 들어, F)를 사용할 수 있도록 동작한다. 다른 실시예들과 같이, 터보 디코딩 프로세싱(예를 들어, SISO 0 디코딩 동작들)의 자연적 순서 단계를 수행할 때에 개별 데이터 엔트리들의 주소들에 대한 접근은 순차적이지 않다. 즉, 이것은 인터리브 (π)과 마찬가지로, 사용된 특정 메모리 매핑에 기초한 다른 순서로 수행된다.
터보 디코더(2700)의 반복적인 디코딩 프로세스 내에 포함되는 하나의 디코 딩 반복 연산은 이러한 두 SISO 동작의 수행을 포함한다는 점을 주목한다. 즉, 반복적인 디코딩 프로세스는 SISO 0 디코더들(2710)의 제1 어레이 및 SISO 1 디코더들(2730)의 제2 어레이 모두를 통해 통과해야한다.
높은 수준의 신뢰성(confidence)이 달성되고 또한 어떤 해(solution)에 수렴한 후에, 또는 사전에 결정된 회수의 디코딩 반복 연산들이 수행된 후에, 상기 제 SISO 1 디코더(2730)의 제2 어레이의 출력은 출력 프로세서(2750)로 출력값으로서 전달된다. SISO 0 디코더들(2710)의 어레이 및 SISO 1 디코더들(2730)의 어레이의 동작은 일반적으로 수신된 심볼 내에 포함된 심볼의 소프트 심볼 판정(soft symbol decisions)의 계산이라 불릴 수 있다. 이러한 소프트 심볼 판정은 몇몇 실시예들에서는 진정한 비트 레벨에서 수행될 수 있다. 상기 출력 프로세서(2750)는 이러한 소프트 심볼 판정 결과를 이용하여, 본래의 터보 코딩된 신호 내에 인코딩되어 있던 정보 비트들(상기 신호(2701)가 원천적으로 발생하여 인가된 통신 채널의 다른 쪽 끝에 있는 터보 인코더의 내에서 통상적으로 인코딩됨)에 대한 최적 추정치들(best estimates)(2751)(예를 들어 하드 비트/심볼 판정(hard bit/symbol decisions))을 생성한다.
상기 인터리버(π)(2720) 내에서 수행되는 각각의 인터리빙 동작은 참조 번호 2791로 나타난 것과 같은 ARP 인터리브의 실시예를 이용하여 수행될 수 있다. 또한, 상기 디인터리버(π-1)(2740) 내에서 수행되는 디인터리빙이 ARP 디인터리브의 실시예를 이용하여 수행되는 그러한 실시예들도 있다.
도 28은 복수의 메모리 뱅크 내에 저장된 데이터에 액세스하기 위해 복수의 SISO 디코더들과 예측 주소 생성 기법을 사용하는 터보 디코더의 실시예를 예시한 것이다. 다른 실시예에서 나타난 바와 같이, 수신된 신호(예를 들어, 통신 채널로부터 전형적으로 수신된)는 수신된 신호(2801)로부터 I, Q(in-phase 및 quadrature) 성분을 추출하는 I,Q 추출 모듈(2802)로 공급된다. 이것은 수신부 전처리로 보여질 수 있고, 적절한 주파수 변환(일반적으로, 필요한 경우, 반송파 주파수로부터 다운 컨버전)을 포함할 수 있다. 그 다음, I, Q는 해당 변조 방식의 적절한 컨스텔레이션 및 매핑에 따라 매핑될 수 있다. 그 다음, 매핑된 I, Q는 메트릭 생성부(2804)로 전달된다. 메트릭 생성부(2804)는 수신된 I, Q로부터 해당 변조 방식의 적절한 컨스텔레이션 및 매핑 내의 컨스텔레이션 포인트까지로 측정된 적절한 메트릭(2805)을 생성한다. 메트릭은 그러한 변조 방식의 컨스텔레이션 포인트의 매핑에 의해 인덱스된다. 이러한 메트릭은 실제 수신된 심볼의 위치로부터 그 변조 방식에 속하는 예상된 컨스텔레이션 포인트 위치까지의 스케일링된 유클리드 거리라고 이해될 수 있다.
터보 디코딩 프로세스 및 기능성(functionality)을 계속 다루자면, 메트릭 생성부(2804)에 의해 계산된 메트릭(2805)은 예측 주소 생성 모듈(2807)로 제공된다. 처음에, 예측 주소 생성 모듈(2807)은 수신된 데이터 블록을 복수의 서브 블록으로 분할할 수 있다. 이러한 서브 블록들 각각은 대응하는 복수의 데이터를 포함한다. 서브 블록 각각의 각 데이터는 복수의 메모리 뱅크들(2890) 중 하나의 메모리 뱅크 내의 메모리 위치에 저장된다. 복수의 메모리 뱅크들(2890)은 많은 메모리 뱅크들(B0 2891, ..., Bn 2892)을 포함한다. 데이터들이 메모리 뱅크들(2890)에 자리 잡음에 따라, 각 서브 블록의 이러한 데이터의 위치에 기초하여, 예측 주소 생성 모듈(2807)은 또한 터보 디코딩 프로세싱(예를 들어, SISO 0 디코딩 동작들)의 자연적 순서 단계를 수행할 때 개개의 데이터 엔트리의 각각의 주소의 적절한 액세싱을 위해 사용되는 적절한 인덱스 함수(예를 들어, F)를 생성할 수 있다. 다른 실시예에서 기술된 바와 같이, 터보 디코딩 프로세싱(예를 들어, SISO 0 디코딩 동작들)의 자연적 순서 단계를 수행할 때, 개별 데이터 엔트리 각각의 주소의 접근은 순차적이지 않다. 즉, 인터리빙(π)과 마찬가지로, 사용된 특정 메모리 매핑에 기초하여 달라지는 순서이다.
그 다음, 이러한 인덱스 함수는 복수의 메모리 생성부들(예를 들어, 다른 실시예들에서 기술된 바와 같이)에 의해 사용될 수 있으므로, 병렬 터보 디코딩 프로세싱 내에서 사용되는 것과 같이 다중의 디코딩 프로세서들과 연관될 필요 없이 적절한 주소가 즉시 생성될 수 있다.
그 다음, 적절한 주소는 SISO 0 및 SISO 1 디코딩 동작들 모두를 수행할 수 있는 SISO(soft-in/soft-out) 디코더들(2810)의 제1 어레이(array) 배치에 의해 사용되기 위해 공급된다. SISO 디코더들(2810)의 이러한 어레이는 SISO(2811), ..., 및 SISO(2812)에 의해 도시된 바와 같이 많은 수의 SISO 디코더들을 포함한다. SISO 디코더들(2810)의 어레이의 각 SISO 디코더는 특정 메모리 뱅크들(2890)(SISO 0 및 SISO 1 디코딩 동작들을 위한) 중 하나 내의 특정 메모리 위치 내에 저장된 데이터의 SISO 디코딩을 수행할 수 있다.
메트릭 생성부(2804)에 의해 먼저 계산된 메트릭(2805)은 또한 참조 부호 2809에 도시된 바와 같이 초기 SISO 1 디코딩 동작을 수행하기 위한 SISO 디코더들(2810)의 어레이에 공급된다.
트렐리스 코딩(예를 들어, 터보 트렐리스 코딩된 변조(Turbo Trellis Coded Modulation, TTCM))의 맥락(context)에서 보았을 때, SISO 0 디코더(2810)의 제1 어레이 및 SISO 1 디코더(2830)의 제2 어레이의 각각은, 특정 디코딩 반복 연산을 하면서 계속 업데이트되는 상응하는 메모리 위치들 각각에 있는 개별 데이터 엔트리들 각각에 대해 사용되는 트렐리스에 따라, 순방향 메트릭들(알파값들, alphas), 역방향 메트릭들(베타값들, betas), 및 부가 값들(extrinsic values)을 계산한다.
이러한 알파, 베타, 및 부가 값들 모두는 디코딩될 프레임 내의 각 심볼에 대해 계산된다. 이러한 알파, 베타, 및 부가 값들의 계산은 모두 트렐리스에 기초한다.
SISO 디코더들(2810)의 어레이에 의해 수행되는 것과 같은 첫 번째 디코딩 연산(즉, SISO 0)으로부터 시작하자면, 부가 값들(2811)이 계산된 이후, 이 부가 값들은 인터리버(π) (2820)로 전달되고, 이 이후에 "사전 확률(a priori probability(app))" 정보(2821)로서 SISO 디코더들(2830)의 어레이로 되돌아(back) 전달된다. SISO 1 디코딩 동작을 수행할 때에, SISO 디코더들(2830)의 어레이에 의해 메모리 뱅크들(2890) 내의 데이터에 액세싱하는 것은, 인덱스 함수(F)를 사용하기 때문에, 터보 디코딩 프로세싱(예를 들어, SISO 1 디코딩 동작들)의 인터리빙(π) 순서 단계에 따라 차례로 수행된다는 점을 주목한다.
이와 유사하게, SISO 디코더들(2810) 내에서(즉, SISO 1 디코딩 동작이 수행되는 동안) 부가 값들(2831)이 계산된 후, 이 부가값들은 디-인터리버(π-1)(2840)으로 전달되고, 이는 "사전 확률(app)" 정보(2841)로서 상기 예측 주소 생성 모듈(2807)로 전달된다. 이 예측 주소 생성 모듈은, 터보 디코딩 프로세싱(예를 들어, SISO 0 디코딩 동작들)의 자연적 순서 단계를 수행할 때, 개별 데이터 엔트리들의 주소의 적절한 접근을 위해 적절한 인덱스 함수(예를 들어, F)를 사용할 수 있도록 동작한다.
터보 디코더(2800)의 반복적인 디코딩 프로세스 내에 포함되는 하나의 디코딩 반복 연산은 이러한 두 SISO 동작의 수행을 포함한다는 점을 주목한다. 즉, 반복적인 디코딩 프로세스는 SISO 0 디코더들(2810)의 제1 어레이 및 SISO 1 디코더들(2830)의 제2 어레이 모두를 통해 통과해야한다.
높은 수준의 신뢰성이 달성되고 또한 어떤 해에 수렴한 후에, 또는 사전에 결정된 회수의 디코딩 반복 연산들이 수행된 후에, 상기 제 SISO 디코더들(2810)의 어레이의 출력(SISO 1 디코딩 연산들을 수행한 후에)은 출력 프로세서(2850)로 출력값으로서 전달된다. SISO 디코더들(2810) 어레이의 동작은 일반적으로 수신된 심볼 내에 포함된 심볼의 소프트 심볼 판정을 계산하는 것이라 불릴 수 있다. 이러한 소프트 심볼 판정은 몇몇 실시예들에서는 진정한 비트 레벨에서 수행될 수 있다. 상기 출력 프로세서(2850)는 이러한 소프트 심볼 판정 결과를 이용하여, 본래의 터보 코딩된 신호 내에 인코딩되어 있던 정보 비트들(상기 신호(2801)가 원천적으로 발생하여 인가된 통신 채널의 다른 쪽 끝에 있는 터보 인코더의 내에서 통상적으로 인코딩됨)에 대한 최적 추정치들(best estimates)(2851)(예를 들어 하드 비트/심볼 판정)을 생성한다.
인터리버(π)(2820) 내에서 수행되는 개별 인터리빙은 참조 부호 2891에 나타난 바와 같이 ARP 인터리브의 실시예를 이용하여 수행될 수 있다. 또한, 디-인터리버(π-1)(2840) 내에서 수행되는 디-인터리빙은 ARP 디-인터리브의 실시예를 이용하여 수행될 수 있다. 본 실시예에서 나타난 바와 같이, SISO 디코더들(2810)의 단일 어레이는 SISO 0 및 SISO 1 디코딩 동작들 모두를 수행할 수 있다. 또한, 단일 모듈은 인터리버(π)(2820) 및 디-인더리버(π-1)(2840)의 기능성 모두를 수행하기 위해 사용될 수 있다. 특히 사용된 인터리브(π)가 ARP 형태인 경우, 디-인터리브(π-1)는 ARP 형태인 인터리브(π)로부터 생성될 수 있다. 일 실시예에서, 단일 모듈, 소프트웨어, 하드웨어, 및/또는 그들의 조합은 병렬 터보 디코딩 프로세싱에 따라 인터리빙(π) 및 디-인터리빙(π-1) 둘 다의 기능을 수행하기 위해 사용될 수 있다.
도 29는 터보 코딩된 신호를 디코딩하는 방법의 일 실시예를 예시한 것이다. 블록(2910)에 도시된 바와 같이, 방법(2900)은 통신 채널로부터 터보 코딩된 신호를 수신함으로써 시작된다. 방법(2900)은 블록(2920)에 도시된 바와 같이, 터보 코딩된 신호로부터 인코딩된 블록을 추출하기 위한 전처리를 수행하는 단계로서 이어 진다. 방법(2900)은 블록(2930)에 도시된 바와 같이, 인코딩된 블록을 복수의 서브 블록들로 분할함으로써 계속된다. 여기서, 각 서브 블록 자신은 복수의 데이터를 포함한다.
방법(2900)은 블록(2930)에 도시된 바와 같이, 복수의 서브 블록들의 복수의 데이터를 복수의 메모리 뱅크 내에 저장하는 단계로 이어진다. 방법(2900)은 블록(2950)에 도시된 바와 같이, 복수의 메모리 뱅크 내에 저장된 복수의 서브 블록들의 복수의 데이터에 접근하기 위해 예측 주소 생성(예를 들어, 인덱스 함수)을 수행하는 단계로 이어진다. 방법(2900)은 블록(2960)에 도시된 바와 같이, 병렬 터보 디코딩 프로세싱에 따라 복수의 디코딩 프로세서들을 이용하여 인코딩된 블록(즉, 복수의 서브 블록 각각의 데이터)을 터보 디코딩하는 단계로 이어진다. 방법(2900)은 또한, 블록(2970)에 도시된 바와 같이, 터보 코딩된 신호 내에 인코딩된 정보 비트들의 최적 추정치를 생성하는 단계로 이어진다.
도 30은 터보 코딩된 신호를 디코딩하는 방법의 다른 실시예를 예시한 것이다. 먼저, 어떤 실시예에서, 방법(3000)은 블록들(도 29의 방법 2900의 2910, 2920, 2930, 및 2940)에 도시된 동작들과 유사하게 수행한다.
블록(3010)에 도시된 바와 같이, 방법(3000)은 복수의 메모리 뱅크들 내에 저장된 복수의 서브 블록들의 복수의 데이터에 접근하기 위해 예측 주소 생성(예를 들어, 인덱스 함수 F)을 수행한다.
방법(3000)은 블록(3020)에 도시된 바와 같이, 병렬 터보 디코딩 프로세싱에 따라 복수의 디코딩 프로세서들을 이용하여 인코딩된 블록(즉, 복수의 서브 블록들 내의 데이터)의 첫 번째 SISO 디코딩(예를 들어, SISO 0, 자연적 순서 단계)을 수행하고, 그 결과 제1 부가 정보를 생성하는 단계로 이어진다.
방법(3000)은 블록(3030)에 도시된 바와 같이 제1 부가 정보를 인터리빙하고, 그 결과 제1 사전 확률(a priori probability) 정보를 생성하는 단계로 이어진다.
방법(3000)은 블록(3040)에 도시된 바와 같이 병렬 터보 디코딩 프로세싱에 따라 복수의 디코딩 프로세서들을 이용하여 인코딩된 블록(즉, 복수의 서브 블록들 내의 데이터)의 두 번째 SISO 디코딩(예를 들어, SISO 1, 인터리빙 순서 단계)를 수행하고, 그 결과 제2 부가 정보를 생성하는 단계로 이어진다.
참조 부호 3051에 도시된 바와 같이 추가적인 디코딩 동작을 수행할 때, 방법(3000)은 블록(3050)에 도시된 바와 같이 제2 부가 정보를 디-인터리빙하고, 제2 사전 확률 정보를 생성하는 단계로 이어진다. 그 다음, 방법(3000)은 블록(3010)으로 돌아가서 다음 디코딩 반복에 대해 예측 주소 생성을 수행한다.
그러나, 참조 부호 3041에 도시된 바와 같이, 마지막 디코딩 반복이 수행되면(예를 들어, SISO 0 및 SISO 1 디코딩 동작들이 모두 수행되고, 특히 마지막 SISO 1 디코딩 동작이 수행된 이후), 방법(3000)은 블록(3060)에 도시된 바와 같이 터보 코딩된 신호 내의 인코딩된 정보 비트들의 최적 추정치들을 생성하는 단계로 이어진다.
본 발명은 지금까지 특정된 기능들의 수행 및 이들 사이의 관계들을 예시한 방법 단계들을 이용하여 위와 같이 설명되었다. 이러한 기능적인 구성 블록들 및 방법 단계들의 경계 및 순서(boundaries and sequences)는 설명의 편의를 위해 임의적으로 설명되었다. 이러한 특정 기능들 및 이들 사이의 관계들이 적절하게 수행되는 한, 그와 다른 경계 및 순서도 정의될 수 있다. 그러한 어떠한 다른 경계 또는 순서들도 청구 범위에 기재된 발명의 영역 및 사상 내에 포함된다.
본 발명은 또한 몇몇 중요 기능들의 수행을 예시한 기능적인 구성 블록들을 이용하여 위와 같이 설명되었다. 이러한 구성 블록들의 경계는 설명의 편의를 위해 임의적으로 정의되었다. 상기 중요 기능들이 적절히 수행되는 한, 이와 다른 경계도 정의될 수 있다. 유사하게, 순서도의 블록들도 역시 중요한 기능(functionality)을 예시하기 위해 정의되었다. 순서도 블록의 경계들 및 순서는 다른 식으로 정의되었어도 여전히 그러한 중요한 기능을 수행할 수 있을 것이다. 기능적인 구성 블록들과 순서도 블록들 및 순서들에 대한 그러한 다른 식의 정의들은 따라서 청구 범위에 기재된 발명의 영역 및 사상 내에 포함된다.
당해 기술 분야의 통상의 기술을 가진 자는 또한 이러한 기능적 구성 블록들 및 이 명세서에 있는 그 밖의 예시적인 블록들, 모듈 및 구성품은, 예시된 대로 구현되거나, 또는 개별 부품, 주문형 집적 회로(application specific integrate circuits, ASIC), 적절한 소프트웨어 등을 실행하는 프로세서들, 또는 이들의 조합들에 의해 구현될 수 있다는 점을 또한 인지할 수 있을 것이다.
더 나아가, 비록 상술한 실시예를 이용하여 간단 명료함 및 이해를 목적으로 상세하게 설명하였지만, 본 발명은 이러한 실시예들에 한정되지 않는다. 본 발명의 사상과 범위가 첨부된 청구 범위의 기재에 의해서만 제한되는 바대로, 당해 기술 분야의 통상의 지식을 가진 자에게 본 발명의 사상과 범위 내에서 다양한 변화와 변경이 실시될 수 있음은 명백할 것이다.
[참고문헌]
1. C. Berrou, Y. Saouter, C. Douillard, S.Kerouedan, 및 M. Jezequel, "Designing good permutatios for turbo codes: towards a single model," 2004 IEEE International Conference on Communications (ICC), Vol.:1, pp:341-345, 20-24 2004년 6월.
2. France Telecom, GET, "Enhancement of Rel. 6 turbo Code," 3GPP TSG RAN WG1#43, R1-051310, 2005.
3. Motorola, "A contention-free interleaver design for LTE codes," 3GPP TSG RAN WG1#47.
4. A. Nimbalker, T. E. Fuja, D. J. Costello, Jr. T.K. Blankenship 및 B. Classon, "Contention-Free Interleavers," IEEE ISIT 2004, 시카고, 미국, 2004년 6월 27일-7월 2일.
도 1은 통신 시스템의 실시예를 예시한 것이다.
도 2는 터보 디코더의 실시예를 예시한 것이다.
도 3은 단일한 SISO(soft-in/soft-out) 디코더를 사용하거나 또는 SISO 디코더들로 구성된 단일 어레이를 사용하여 동작하는, 시간 공유(time-sharing) 방식을 가지는 터보 디코더의 실시예를 예시한 것이다.
도 4는 터보 디코딩에 적용될 수 있는 병렬 디코딩의 실시예를 예시한 것이다.
도 5는 자연적 및 인터리빙되지 않은 순서(natural/non-interleaved order)를 위해 디코딩 프로세서들(터보 코딩된 신호의 병렬 디코딩에 구현되는 것과 같은)을 분할(partitioning)하는 한 실시예를 예시한 것이다.
도 6은 인터리빙(π)된 순서(interleaved order)를 위해 디코딩 프로세서들(터보 코딩된 신호의 병렬 디코딩에 구현되는 것과 같은)을 분할하는 한 실시예를 예시한 것이다.
도 7a은 자연적이고 인터리빙되지 않은 순서 단계(natural/non-interleaved order phase)을 위해 병렬 디코딩에 대해 메모리 매핑(memory mapping)을 하는 한 실시예를 예시한 것이다.
도 7b는 인터리빙된 순서 단계을 위해 병렬 디코딩에 대해 메모리 매핑을 하는 한 실시예(메모리들 중 하나에 들어 있는 내용을 보여줌)를 예시한 것이다.
도 8은 병렬 디코딩을 수행하는 터보 디코더로서, 터보 디코더들과 메모리들 사이에 경합 방지 메모리 매핑(contention-free memory mapping)이 결여되어 경합이 발생하는 터보 디코더의 실시예를 예시한 것이다.
도 9는 병렬 디코딩을 수행하는 터보 디코더로서, 터보 디코더들과 메모리들 사이에 경합 방지 메모리 매핑 덕분에 경합이 전혀 일어나지 않는 터보 디코더의 실시예를 예시한 것이다.
도 10 및 도 11은 통신 시스템의 다른 실시예들을 예시한 것들이다.
도 12a, 12b, 12c, 12d는 터보 디코더들 및 메모리들 사이의 여러 가지의 연속하는 경합 방지 메모리 매핑 예들을 예시한 것들이다.
도 13a 및 13b는 병렬 터보 디코딩 프로세싱을 수행하기 위해 사용된 복수의 프로세서들과 복수의 메모리 뱅크들의 간단한 예를 나타낸 실시예들을 예시한 것들이다.
도 14는 정규 순열(regular permutation)의 실시예를 예시한 것이다.
도 15a 및 15b는 복수의 메모리 뱅크들에 관한 MOD 메모리 매핑의 실시예들을 예시한 것들이다.
도 16a 및 16b는 상기 간단한 예에 따른 복수의 메모리 뱅크들에 관한 MOD 메모리 매핑의 실시예들로서, 충돌 현상들(collisions)이 발생하여 상기 메모리 매핑이 경합 방지되지 않음을 보인다.
도 17a 및 17b는 복수의 메모리 뱅크들에 관한 DIV 메모리 매핑의 실시예들을 예시한 것들이다.
도 18a 및 18b는 상기 간단한 예에 따른 복수의 메모리 뱅크들에 관한 DIV 메모리 매핑의 실시예들로서, 충돌 현상들이 발생하여 상기 메모리 매핑이 경합 방지되지 않음을 보인다.
도 19a 및 19b는 상기 간단한 예에 따른 복수의 메모리 뱅크들에 관한 ADD 메모리 매핑의 실시예들로서, 아무런 충돌 현상도 발생하지 않아 상기 메모리 매핑이 경합 방지됨을 보인다.
도 20은 M=2C인 복수의 메모리 뱅크들에 관한 ADD 메모리 매핑의 실시예로서, 아무런 충돌 현상도 발생하지 않아 상기 메모리 매핑이 경합 방지됨을 보인다.
도 21은 병렬 터보 디코딩 프로세싱의 ADD 매핑 및 자연 순서 단계에 관한 직선적 주소 생성(straightforward address generation)의 실시예를 예시한 것이다.
도 22는 병렬 터보 디코딩 프로세싱의 ADD 매핑 및 인터리빙 (π) 순서 단계에 관한 직선적 주소 생성의 실시예를 예시한 것이다.
도 23은 ADD 매핑하기 위한 직선적 주소 생성을 구현한 디코딩 아키텍처의 일 실시예를 예시한 것이다.
도 24는 병렬 터보 디코딩 프로세싱의 ADD 매핑 및 자연 순서 단계에 관한 예측 주소 생성(anticipatory address generation)의 실시예를 예시한 것이다.
도 25는 병렬 터보 디코딩 프로세싱의 ADD 매핑 및 인터리빙 (π) 순서 단계에 관한 예측 주소 생성의 실시예를 예시한 것이다.
도 26은 ADD 매핑하기 위한 예측 주소 생성을 위해 구현된 디코딩 아키텍처의 일 실시예를 예시한 것이다.
도 27은 복수의 메모리 뱅크 내에 저장된 데이터에 액세스하기 위해 두 개로 분리된 복수의 SISO 디코더들과 예측 주소 생성 기법을 사용하는 터보 디코더의 실시예를 예시한 것이다.
도 28은 복수의 메모리 뱅크 내에 저장된 데이터에 액세스하기 위해 복수의 SISO 디코더들과 예측 주소 생성 기법을 사용하는 터보 디코더의 실시예를 예시한 것이다.
도 29는 터보 코딩된 신호를 디코딩하는 방법의 일 실시예를 예시한 것이다.
도 30은 터보 코딩된 신호를 디코딩하는 방법의 다른 실시예를 예시한 것이다.
Claims (10)
- 터보 코딩된 신호에 대한 병렬 디코딩을 수행하도록 동작하는 터보 디코더에 있어서, 상기 터보 디코더는복수의 터보 디코더들; 및복수의 메모리들을 포함하며,상기 복수의 터보 디코더들은 상기 제1 메모리에 대한 읽기 및 쓰기를 수행하도록 동작하고;제1 디코딩 반복(iteration) 동안에는자연적 순서 단계(natural order phase)의 디코딩 프로세싱을 수행할 때에, 상기 복수의 터보 디코더들의 각 터보 디코더는 상기 복수의 메모리들 중 하나의 대응하는 메모리로부터 정보를 검색(retrieve)하고 처리하도록 동작하되, 상기 대응하는 메모리는 상기 복수의 터보 디코더들 및 상기 복수의 메모리들 사이의 경합 방지 매핑(contention-free mapping)에 기초하여 결정되고, 상기 하나의 대응되는 메모리 내에서 상기 정보에 할당되는 첫 번째 위치는 상기 하나의 대응되는 메모리의 주소 매핑에 기초한 인덱스 함수에 기초하고;인터리빙 순서 단계(interleaved order phase)의 디코딩 프로세싱을 수행할 때에, 상기 복수의 터보 디코더들의 각 터보 디코더는 상기 복수의 메모리들 중 대응하는 하나의 제1 메모리 내의 첫 번째 메모리 위치로부터 정보를 검색하고 처리하도록 동작하며,제2 디코딩 반복 동안에는자연적 순서 단계의 디코딩 프로세싱을 수행할 때에, 상기 복수의 터보 디코더들의 각 터보 디코더는 상기 복수의 메모리들 중 하나의 대응되는 메모리로부터 정보를 복원하고 처리하도록 동작하되, 상기 대응되는 메모리는 상기 복수의 터보 디코더들 및 상기 복수의 메모리들 사이의 경합 방지 매핑에 기초하여 결정되고, 상기 하나의 대응되는 메모리 내에서 상기 정보에 할당되는 두 번째 위치는 상기 하나의 대응되는 메모리의 상기 주소 매핑에 기초한 상기 인덱스 함수에 기초하며,인터리빙 순서 단계의 디코딩 프로세싱을 수행할 때, 상기 복수의 터보 디코더들의 각 터보 디코더는 상기 복수의 메모리들 중 대응되는 하나의 제2 메모리 내의 두 번째 메모리 위치로부터 정보를 검색하고 처리하도록 동작하며, 또한상기 복수의 터보 디코더들은 상기 터보 코딩된 신호로 인코딩된 적어도 하나의 비트로 구성된 최적 추정치(best estimate)를 생성하도록 동작하는 것을 특징으로 하는 터보 디코더.
- 청구항 1에 있어서, 상기 하나의 대응되는 메모리의 상기 주소 매핑에 기초하여 상기 인덱스 함수를 생성하도록 동작하는 예측 주소 모듈(anticipatory address module)을 더 포함하는 것을 특징으로 하는 터보 디코더.
- 청구항 1에 있어서, 상기 터보 코딩된 신호의 반복적인 디코딩 프로세싱 동 안에 상기 복수의 터보 디코더들 및 상기 복수의 메모리들 사이의 경합 방지 메모리 매핑을 수행하도록 동작하는 프로세싱 모듈(processing module)을 더 포함하는 것을 특징으로 하는 터보 디코더.
- 청구항 1에 있어서, 상기 터보 코딩된 신호를 생성하는 터보 인코딩 동안에는 상기 터보 코딩된 신호는 ARP(almost regular permutation) 인터리빙(interleaving)을 거치는 것을 특징으로 하는 터보 디코더.
- 청구항 1에 있어서, 터보 디코딩을 수행할 때, 상기 복수의 터보 디코더들 중 어떤 터보 디코더는 부가 정보(extrinsic information)에 대해 ARP 인터리빙을 수행하고, 그에 의해 "사전 확률(a priori probability, app)" 정보를 생성하도록 동작하는 것을 특징으로 하는 터보 디코더.
- 청구항 1에 있어서, 상기 복수의 터보 디코더들 중 한 터보 디코더는상기 터보 코딩된 신호와 연관된 복수의 메트릭들을 수신하고, 상기 복수의 메트릭들을 상기 하나의 대응되는 메모리에 저장하며, 상기 하나의 대응되는 메모리 내에 저장된 상기 복수의 메트릭들의 상기 주소 매핑에 기초하여 상기 인덱스 함수를 생성하도록 동작하는 예측 주소 모듈(anticipatory address module);상기 복수의 메트릭들에 대해 SISO(soft-in/soft-out) 디코딩을 수행함으로써 제1 부가 정보를 계산하도록 동작하는 제1 SISO 디코더;상기 제1 부가 정보에 대해 인터리빙을 수행함으로써 제1 "사전 확률(app)" 정보를 생성하도록 동작하는 인터리버 모듈(interleaver module);상기 제1 app 정보에 대해 SISO 디코딩을 수행하도록 동작함으로써 제2 부가 정보를 생성하도록 동작하는 제2 SISO 디코더;상기 제2 부가 정보에 대해 디-인터리빙(de-interleaving)을 수행함으로써 제2 app 정보를 생성하도록 동작하는 디-인터리버(de-interleaver); 및상기 제2 SISO 디코더에 의해 생성된 가장 최근의 부가 정보를 처리함으로써 상기 터보 코딩된 신호 내에 인코딩된 정보 비트의 최적 추정치들을 생성하도록 동작하는 출력 프로세서(output processor)를 포함하는 것을 특징으로 하는 터보 디코더.
- 터보 코딩된 신호에 대해 병렬 디코딩을 수행하도록 동작하는 터보 디코더에 있어서, 상기 터보 디코더는복수의 터보 디코더들;복수의 메모리들; 및상기 복수의 메모리 중 하나의 대응되는 메모리의 주소 매핑에 기초하여 인덱스 함수를 생성하도록 동작하는 예측 주소 모듈을 포함하고,상기 복수의 터보 디코더들은 상기 복수의 메모리들에 대해 읽기 및 쓰기 동작을 수행하도록 동작하며,제1 디코딩 반복 동안에는자연적 순서 단계 디코딩 프로세싱을 수행할 때에는, 상기 복수의 터보 디코더들의 각 터보 디코더는 상기 복수의 메모리들 중 하나의 대응되는 메모리로부터 정보를 검색하고 처리하도록 동작하되, 상기 대응되는 메모리는 상기 복수의 터보 디코더들 및 상기 복수의 메모리들 사이의 경합 방지 매핑에 기초하여 결정되고, 상기 하나의 대응되는 메모리 내의 상기 정보에 할당된 첫 번째 위치는 상기 하나의 대응되는 메모리의 상기 주소 매핑에 기초한 상기 인덱스 함수에 기초하고,인터리빙 순서 단계 디코딩 프로세싱을 수행할 때에는, 상기 복수의 터보 디코더들의 각 터보 디코더는 상기 복수의 메모리들 중 대응되는 하나의 제1 메모리 내의 첫 번째 메모리 위치로부터 정보를 검색하고 처리하도록 동작하며,제2 디코딩 반복 동안에는자연적 순서 단계 디코딩 프로세싱을 수행할 때에는, 상기 복수의 터보 디코더들의 각 터보 디코더는 상기 복수의 메모리들 중 하나의 대응되는 메모리로부터 정보를 검색하고 처리하도록 동작하여, 상기 대응되는 메모리는 상기 복수의 터보 디코더들 및 상기 복수의 메모리들 사이에 경합 방지 매핑에 기초하여 결정되고, 상기 하나의 대응되는 메모리 내의 상기 정보에 할당된 두 번째 위치는 상기 하나의 대응되는 메모리의 상기 주소 매핑에 기초한 상기 인덱스 함수에 기초하고,인터리빙 순서 단계 디코딩 프로세싱을 수행할 때에는, 상기 복수의 터보 디코더들의 각 터보 디코더는 상기 복수의 메모리들 중 대응되는 하나의 제2 메모리 내의 두 번째 메모리 위치로부터 정보를 검색하고 처리하도록 동작하며,상기 복수의 터보 디코더들은 상기 터보 코딩된 신호로 인코딩된 적어도 하나의 비트의 최적 추정치를 생성하도록 동작하는 것을 특징으로 하는 터보 디코더.
- 청구항 7에 있어서, 상기 터보 코딩된 신호를 생성하는 터보 인코딩 동안에 상기 터보 코딩된 신호를 ARP 인터리빙을 수행하고;터보 디코딩을 수행할 때, 상기 복수의 터보 디코더들 중 어떤 터보 디코더는 부가 정보에 대해 ARP 인터리빙을 수행하도록 동작하여 "사전 확률(app)" 정보를 생성하는 것을 특징으로 하는 터보 디코더.
- 터보 코딩된 신호의 디코딩 방법에 있어서,통신 채널로부터 터보 코딩된 신호를 수신하는 단계;상기 터보 코딩된 신호로부터 인코딩된 블록을 추출(extract)하기 위해 전처리(pre-processing)를 수행하는 단계;상기 인코딩된 블록을 복수의 서브 블록들로 분할하되 상기 복수의 서브 블록들의 각 서브 블록이 대응되는 복수의 데이터를 포함하도록 하는 단계;상기 복수의 서브 블록들 중 제1 서브 블록의 제1 복수 데이터를 복수의 메모리 뱅크 중 제1 메모리 뱅크에 저장하는 단계;상기 복수의 서브 블록들 중 제2 서브 블록의 제2 복수 데이터를 상기 복수의 메모리 뱅크들 중 제2 메모리 뱅크에 저장하는 단계;상기 터보 코딩된 신호의 자연적 순서 단계 디코딩 프로세싱을 수행할 때에는, 상기 제1 메모리 뱅크로부터 상기 제1 복수의 데이터의 요소들에 접근하기 위한 그리고 상기 제2 메모리 뱅크들로부터 상기 제2 복수의 데이터의 요소들에 접근하기 위한 인덱스 함수를 결정하는 단계를 포함하는, 예측 주소 생성을 수행하는 단계;상기 제1 메모리 뱅크로부터 상기 제1 복수의 데이터의 제1 인덱스-정의된(index-defined) 요소를 검색(retrieving)하고, 이에 대해 터보 자연적 순서(turbo natural order) 단계 디코딩 프로세싱을 수행하는 단계;상기 제2 메모리 뱅크로부터 상기 제2 복수의 데이터의 제2 인덱스 정의된 요소를 검색하고, 이에 대해 터보 자연적 순서 단계 디코딩 프로세싱을 수행하는 단계;상기 제1 메모리 뱅크로부터 상기 제1 복수의 데이터의 제1 요소를 검색하고, 이에 대해 인터리빙된 자연적 순서(interleaved natural order) 단계 디코딩 프로세싱을 수행하는 단계;상기 제2 메모리 뱅크로부터 상기 제2 복수의 데이터의 제2 요소를 검색하고, 이에 대해 인터리빙된 자연적 순서 단계 디코딩 프로세싱을 수행하는 단계;병렬 터보 디코딩 프로세싱에 따라 복수의 디코딩 프로세서들을 이용하여 상기 인코딩된 블록을 터보 디코딩하는 단계; 및상기 터보 코딩된 신호 내의 인코딩된 정보 비트들의 최적 추정치들(best estimates)을 생성하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
- 청구항 9에 있어서, 상기 하나의 대응되는 메모리의 상기 주소 매핑에 기초하여 상기 인덱스 함수를 생성하는 단계를 더 포함하는 것을 특징으로 하는 디코딩 방법.
Applications Claiming Priority (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US86183206P | 2006-11-29 | 2006-11-29 | |
US60/861,832 | 2006-11-29 | ||
US87236706P | 2006-12-01 | 2006-12-01 | |
US60/872,367 | 2006-12-01 | ||
US87271606P | 2006-12-04 | 2006-12-04 | |
US60/872,716 | 2006-12-04 | ||
US87930107P | 2007-01-08 | 2007-01-08 | |
US60/879,301 | 2007-01-08 | ||
US11/810,989 | 2007-06-07 | ||
US11/810,989 US7831894B2 (en) | 2006-10-10 | 2007-06-07 | Address generation for contention-free memory mappings of turbo codes with ARP (almost regular permutation) interleaves |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080048971A true KR20080048971A (ko) | 2008-06-03 |
KR100926907B1 KR100926907B1 (ko) | 2009-11-17 |
Family
ID=39370993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070122802A KR100926907B1 (ko) | 2006-11-29 | 2007-11-29 | 에이알피 인터리브를 가지는 터보 코드의 경합 방지 메모리매핑 기법을 위한 주소 생성 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP1942578A1 (ko) |
KR (1) | KR100926907B1 (ko) |
CN (1) | CN101192837B (ko) |
HK (1) | HK1121868A1 (ko) |
TW (1) | TWI422166B (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140142365A (ko) * | 2012-04-11 | 2014-12-11 | 마이크론 테크놀로지, 인크 | 프로그램 상태들과 데이터 패턴들 사이의 매핑 |
US9762352B2 (en) | 2013-12-24 | 2017-09-12 | Huawei Technologies Co., Ltd. | Decoding method and receiving apparatus in wireless communication system |
US10270470B2 (en) | 2013-03-07 | 2019-04-23 | Huawei Technologies Co., Ltd. | Polar code decoding method and decoder |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102231632B (zh) * | 2011-05-26 | 2013-04-10 | 大唐移动通信设备有限公司 | Turbo编码/ Turbo译码方法及装置 |
US8934581B2 (en) * | 2012-04-24 | 2015-01-13 | Telefonaktiebolaget L M Ericsson (Publ) | Method and apparatus for soft symbol processing in a communication receiver |
CN103840842A (zh) * | 2014-03-05 | 2014-06-04 | 华为技术有限公司 | 一种译码器 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001050614A2 (en) * | 2000-01-03 | 2001-07-12 | Icoding Technology, Inc. | System and method for high speed processing of turbo codes |
US6789218B1 (en) * | 2000-01-03 | 2004-09-07 | Icoding Technology, Inc. | High spread highly randomized generatable interleavers |
AU2001259481B2 (en) * | 2000-05-03 | 2004-05-20 | University Of Southern California | Reduced-latency soft-in/soft-out module |
WO2002067435A1 (en) * | 2001-02-23 | 2002-08-29 | Koninklijke Philips Electronics N.V. | Turbo decoder system comprising parallel decoders |
US6392572B1 (en) * | 2001-05-11 | 2002-05-21 | Qualcomm Incorporated | Buffer architecture for a turbo decoder |
KR100594043B1 (ko) * | 2004-11-08 | 2006-06-30 | 삼성전자주식회사 | 고속 터보 디코더에서 병행방식의 디 래이트 매칭을수행하는 입력 버퍼 장치 |
JP2006217072A (ja) * | 2005-02-01 | 2006-08-17 | Matsushita Electric Ind Co Ltd | ターボ復号装置及びターボ復号方法 |
CN100508405C (zh) * | 2005-11-11 | 2009-07-01 | 清华大学 | 提高Turbo码译码速度的并行译码方法及译码装置 |
CN100571097C (zh) * | 2005-11-25 | 2009-12-16 | 上海宣普实业有限公司 | 一种用于Turbo码译码器中减少存储资源的方法 |
-
2007
- 2007-10-26 EP EP07021040A patent/EP1942578A1/en not_active Withdrawn
- 2007-11-29 CN CN2007101938847A patent/CN101192837B/zh not_active Expired - Fee Related
- 2007-11-29 KR KR1020070122802A patent/KR100926907B1/ko not_active IP Right Cessation
- 2007-11-29 TW TW096145352A patent/TWI422166B/zh not_active IP Right Cessation
-
2008
- 2008-09-30 HK HK08110866.2A patent/HK1121868A1/xx not_active IP Right Cessation
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140142365A (ko) * | 2012-04-11 | 2014-12-11 | 마이크론 테크놀로지, 인크 | 프로그램 상태들과 데이터 패턴들 사이의 매핑 |
US10270470B2 (en) | 2013-03-07 | 2019-04-23 | Huawei Technologies Co., Ltd. | Polar code decoding method and decoder |
US9762352B2 (en) | 2013-12-24 | 2017-09-12 | Huawei Technologies Co., Ltd. | Decoding method and receiving apparatus in wireless communication system |
Also Published As
Publication number | Publication date |
---|---|
TWI422166B (zh) | 2014-01-01 |
CN101192837A (zh) | 2008-06-04 |
KR100926907B1 (ko) | 2009-11-17 |
CN101192837B (zh) | 2011-04-06 |
EP1942578A1 (en) | 2008-07-09 |
HK1121868A1 (en) | 2009-04-30 |
TW200841608A (en) | 2008-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100955305B1 (ko) | 큐피피 인터리브를 갖는 병렬 터보 디코딩을 위한 공식적플렉서블 충돌 방지 메모리 억세싱 | |
US7827473B2 (en) | Turbo decoder employing ARP (almost regular permutation) interleave and arbitrary number of decoding processors | |
US20160119001A1 (en) | Methods, apparatus, and systems for coding with constrained interleaving | |
US8532209B2 (en) | Methods, apparatus, and systems for coding with constrained interleaving | |
US9048877B2 (en) | Turbo code parallel interleaver and parallel interleaving method thereof | |
US20150039962A1 (en) | Methods, apparatus, and systems for coding with constrained interleaving | |
WO2002078196A1 (en) | Method and coding means for error-correction utilizing concatenated parity and turbo codes | |
KR100926907B1 (ko) | 에이알피 인터리브를 가지는 터보 코드의 경합 방지 메모리매핑 기법을 위한 주소 생성 | |
US8473829B2 (en) | Address generation for contention-free memory mappings of turbo codes with ARP (almost regular permutation) interleaves | |
EP1786109A1 (en) | Block encoding and decoding method and apparatus, with controllable decoding latency | |
Gnaedig et al. | Design of three-dimensional multiple slice turbo codes | |
JP2014209785A (ja) | 複数のコード・タイプをプログラマブル復号する方法および装置 | |
US7975203B2 (en) | Quadratic polynomial permutation (QPP) interleaver providing hardware savings and flexible granularity adaptable to any possible turbo code block size | |
WO2009150612A1 (en) | Reconfigurable turbo interleaver for multiple standards | |
JP2004511179A (ja) | 断片的脱インターリーブ | |
KR100912600B1 (ko) | 임의 개수의 정보 비트들을 위한 테일바이팅 터보 코드 | |
US20080133997A1 (en) | Turbo decoder employing ARP (almost regular permutation) interleave and inverse thereof as de-interleave | |
KR100355452B1 (ko) | 엠에이피 방식을 사용한 터보 복호기 | |
KR100988908B1 (ko) | 터보 치환기 및 그것을 포함한 터보 복호기 | |
Arif et al. | A Noval Design of Deterministic Interleaver for Turbo Codes |
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 | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20121101 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20131101 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20141204 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20151106 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20161025 Year of fee payment: 8 |
|
LAPS | Lapse due to unpaid annual fee |