KR100240372B1 - 데이타를 부호화 및 복호화하는 장치 및 방법 - Google Patents
데이타를 부호화 및 복호화하는 장치 및 방법 Download PDFInfo
- Publication number
- KR100240372B1 KR100240372B1 KR1019950033942A KR19950033942A KR100240372B1 KR 100240372 B1 KR100240372 B1 KR 100240372B1 KR 1019950033942 A KR1019950033942 A KR 1019950033942A KR 19950033942 A KR19950033942 A KR 19950033942A KR 100240372 B1 KR100240372 B1 KR 100240372B1
- Authority
- KR
- South Korea
- Prior art keywords
- codeword
- data
- bit
- memory
- execution
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4006—Conversion to or from arithmetic code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Image Processing (AREA)
Abstract
내용 없음.
Description
제1도는 종래의 2진 엔트로피 부호기 및 복호기를 나타내는 블럭도이다.
제2a도는 본 발명에 의한 복호화 시스템을 나타내는 블럭도이다.
제2b도는 본 발명에 의한 부호화 시스템의 일실시예를 보여주는 블럭도이다.
제2c도는 병렬로 문맥상자를 처리하는 본 발명에 의한 복호화시스템의 일실시예를 보여주는 블럭도이다.
제2d도는 병렬로 확률클래스를 처리하는 본 발명에 의한 복호화 시스템의 일실시예를 보여주는 블럭도이다.
제3도는 본 발명에 의한 논 인터리브(non-interleaved) 부호열을 예시한 예시도이다.
제4도는 예시적인 데이타 세트로부터 유도된 것과 같은 인터리브 부호열의 일실시예를 나타낸 예시도이다.
제5도는 본 발명에 의한 R코더(coder)용 확률추정표와 비트열 발생기의 일실시예이다.
제6도는 본 발명의 부호기의 일실시예의 블럭도이다.
제7도는 본 발명의 비트 발생기의 일실시예의 블럭도이다.
제8도는 본 발명에 의한 재정돈(reorder)장치의 일실시예의 블럭도이다.
제9도는 본 발명의 실행계수 재정돈 장치의 일실시예의 블럭도이다.
제10도는 본 발명의 실행계수 재정돈 장치의 다른 실시예의 블럭도이다.
제11도는 본 발명의 비트팩킹 장치의 일실시예의 블럭도이다.
제12도는 본 발명의 팩킹 논리의 일실시예의 블럭도이다.
제13도는 본 발명의 부호기 비트 발생기의 블럭도이다.
제14a도는 본 발명의 복호화 시스템의 일실시예의 블럭도이다.
제14b도는 본 발명의 복호기의 블럭도이다.
제14c도는 본 발명의 FIFO 구조의 일실시예의 블럭도이다.
제15a도는 본 발명의 복호화 파이프라인의 일실시예이다.
제15b도는 본 발명의 복호기의 일실시예이다.
제16a도는 본 발명의 쉬프트의 일실시예의 블럭도이다.
제16b도는 본 발명의 쉬프트의 다른 실시예의 블럭도이다.
제17도는 외부 문맥 모델을 구비한 시스템의 블럭도이다.
제18도는 외부 문맥 모델을 구비한 다른 시스템의 블럭도이다.
제19도는 본 발명에 의한 복호기의 일실시예의 블럭도이다.
제20도는 별도의 비트 발생기를 갖는 부호기의 일실시예의 블럭도이다.
제21도는 본 발명의 비트 발생기의 일실시예의 블럭도이다.
제22도는 본 발명의 긴 실행장치의 일실시예의 블럭도이다.
제23도는 본 발명의 짧은 실행장치의 일실시예의 블럭도이다.
제24도는 본 발명의 초기화 및 제어 논리의 일실시예의 블럭도이다.
제25도는 스누퍼복호기를 이용하여 데이타를 재정돈하는 일실시예의 블럭도이다.
제26도는 재배열 장치의 다른 실시예의 블럭도이다.
제27도는 합병큐(merged queue)를 이용한 재배열장치의 다른 실시예의 블럭도이다.
제28도는 본 발명을 이용한 고대역폭 시스템의 블럭도이다.
제29도는 본 발명을 이용한 대역폭 매칭 시스템의 블럭도이다.
제30도는 본 발명을 이용한 대역폭 매칭 시스템의 블럭도이다.
제31도는 본 발명에 의한 부호화된 데이타 메모리의 일실시예이다.
제32도는 본 발명에 의한 복호화의 타이밍도이다.
이 출원은 1993년 2월 10에 출원된 미국출원 08/016,035 "Method And Apparatus For Parallel Decoding and Encoding of data"의 일부 계속 출원인, 1993년 12월 23일에 출원된 미국출원 08/172,646 "Method And Apparatus For Parallel Encoding and Decoding of Data"의 일부 계속 출원이다.
[발명의 분야]
본 발명의 데이타 압축 및 복원 시스템 분야에 관한 것으로, 특히 압축 및 복원 시스템에 있어서 데이타를 병렬로 부호화 및 복호화하는 방법 및 장치에 관한 것이다.
[발명의 배경]
오늘날, 데이타 압축은 특히 많은 양의 데이타를 저장하고 전송하는데 폭넓게 이용된다. 선행기술로 많은 다른 데이타 압축기술이 존재한다. 압축기술은 손실코딩과 무손실코딩의 두 개의 큰 범주로 구분할 수 있다. 손실코딩은 정보의 손실을 일으키고, 원 데이타의 완벽한 재구성을 보장하지 않는 코딩을 뜻한다. 무손실 압축에서는, 모든 정보가 보존되고, 그 데이타는 완벽한 재구성을 허용하는 방식으로 압축된다.
무손실압축에 있어서, 입력 기호들은 출력부호어로 변환된다. 만일 성공적으로 압축된다면, 상기 부호어는 입력기호의 수보다 적은 비트로 표시된다. 부손실코딩방법은 사전적인 방식의 코딩(예를 들어, Lempel-Ziv), 실행길이부호화, 계수상의 코딩, 그리고 엔트로피 코딩을 포함한다.
엔트로피 코딩은 알려졌거나 추정된 기호확률을 이용하여 엔트로피 한계에 근사하게 데이타의 압축을 시도하는 무손실코딩방법으로 구성된다. 엔트로피 부호는 호프만(huffman)부호, 산술부호, 및 2진 엔트로피 부호를 포함한다. 2진 엔트로피 부호는 오직 2진(예/아니오)결정에서만 작동하는, 흔히 최대 가능 기호(MPS)와 최소가능기호(LPS)로 표현되는 무손실 부호이다. 2진 엔트로피 부호의 예로서는 IBM의 Q-부호와 B-부호로 불려지는 부호를 들 수 있다. B-부호에 대한 더 많은 정보가 1993년 12월 21일 J. D. Allen에 부여된 미국특허 5,272,478 "엔트로피 코팅방법 및 장치"에 개시되어 있다. 또한, 이에 관련된 정보는 1993년 3월 30일 미국유타주의 Snowbird에서 열린 Proc. Data COMPRESSION CONFERENCE에서 M.J.Gormish 및 J.D.All의 "FINITE STATE MACHINT BINARY CODING"에도 개시되어 있다. B-부호는 압축하기 위해 유한 상태의 장치를 사용하는 2진 엔트로피 부호이다.
제1도는 종래의 2진 엔트로피 부호를 이용한 압축 및 복원시스템을 보여주는 블럭도이다. 부호화하기 위해, 데이타가 물맥모델(CM)(101)에 입력된다. CM(101)은 입력되는 데이타를 2진 결정의 집합 또는 열로 변환시키고, 각 결정에 대한 문맥상자를 제공한다. 2진 결정의 순서와 그들과 연관된 문맥 상자 모두는 CM(101)으로부터 확률추정모듈(PEM)(102)로 출력된다. PEM(102)은 각 문맥상자를 수신하고 각 2진 결정을 위해 확률추정을 생성한다. 실제 확률추정은 일반적으로 P 클래스로 불려지는 클래스로 표현한다. 각 P 클래스는 확률의 범위로 사용된다. PEM(102)은 또한 2진 결정(결과)이 그것의 보다 가능한 상태가 있는지 여부(즉, 그 결정이 MPS에 일치하는지의 여부)를 결정한다. 비트열 발생기(BG)모듈(103)은 확률추정(즉, P 클래스) 및 2진 결정이 가능하였는지 여부의 판단을 입력으로써 수신한다. 그 결과로, BG 모듈(103)은 원래 입력데이타를 나타내고 제로 또는 더 많은 비트로 출력하는 압축된 데이타열을 만든다.
복호화하기 위하여, CN(104)은 PEM(105)으로 문맥상자를 제공하고, PEM(105)은 문맥상자에 근거한 확률클래스(P클래스)를 BG 모듈(106)로 제공한다. BG 모듈(106)은 확률클래스를 수신하도록 연결된다. 확률클래스와 압축된 데이타를 입력받은 BG 모듈(106)은 2진결정(즉, 사건)이 그것의 가장 가능한 상태에 있는지 여부를 나타내는 비트를 되보낸다. PEM(105)은 그 비트를 수신하고, 그 수신된 비트에 근거하여 확률추정을 갱신하고, 그 결과를 CM(104)에 보낸다. CM(104)은 상기 귀환된 비트를 수신한다. 그리고 그 귀환된 비트를 사용하여 원데이타를 생성하고, 다음 2진결정을 위해 문맥상자를 갱신한다.
IBM의 Q-부호와 B-부호 같은 2진 엔트로피코드를 사용하는 복호기가 같은 문제점은 하드웨어로 실행되었을 때 조차 너무 느리다는 것이다. 그 운용은 큰 하나의 느림 궤환루프를 필요로 한다. 복호화과정을 다시 설명하면, 문맥모델(CM)은 문맥을 만들기 위해 문맥을 이용한다. 비트열 발생기는 다음 비트가 가능한 결과인지 아닌지를 결정하기 위하여 확률클래스와 압축된 데이타를 이용한다. 확률추정모듈은 가능(likely)/불가능(unlikely) 결과를 이용하여 결과비트를 생산하고, 문맥상자에 대한 확률추정을 갱신한다. 문맥모델은 상기 결과비트를 이용하여 과거데이타의 기록을 갱신한다. 상기 모든 단계는 단일비트의 복호화를 위해 요구된다. 문맥 모델은 다음 문맥을 제공하기 전에 그 기록을 갱신하기 위하여 결과 비트를 기다려야 했기 때문에 비트의 복호화는 기다려야 하는 것이다.
다음 비트를 복호화하기 전에 궤환루프가 완결되는 것을 기다리는 것은 피하는 것이 좋다. 다시 말해서, 압축된 데이타를 복호화하는 속도를 증가시키기 위하여 한번에 하나 이상의 비트 또는 부호어를 복호화하는 것이 좋다.
2진 엔트로피 부호를 이용한 복호기들의 또 다른 문제점은 가변길이 데이타를 처리하여야 한다는 것이다. 대부분의 시스템에 있어서, 복호화될 부호어들은 다양한 길이를 가진다. 선택적으로, 다른 시스템들은 가변길이 부호(부호화되지 않은 데이타)를 부호화한다. 가변길이 데이타를 처리할 때, 부호화 또는 복호화동작을 위한 정확한 다음 데이타를 제공하도록 비트레벨로 데이타를 쉬프트할 필요가 있다.
데이타열에 있어서의 이와 같은 비트레벨조작은 가격이 많이 소요되고 및/또는 하드웨어/소프트웨어를 느리게 할 수 있는 것이다. 더구나, 종래의 시스템은 이 쉬프트가 시간 임계궤환 루프내에서 행하여지는 것을 요하기 때문에 복호기의 성능을 제한한다.
또한, 임계시간 루프로부터 데이타열의 비트 레벨조작을 제거하는 것이 또한 이익적일 것이며, 그래서 속도를 높이기 위해 병렬화는 사용할 수 있다.
본 발명은 무손실 압축/복원 시스템을 제공한다. 또한 본 발명은 각각 병렬로 데이타를 부호화하고 복호화하는 실시간 부호기와 실시간 복호기를 제공한다. 본 발명에 의한 부호기와 복호기는 고속 및 저렴한 비용의 하드웨어에서 실시간 부호화와 실시간 복호화 모두를 이행하는 균형있는 병렬엔트로피시스템을 만든다.
본 발명에 의하면 데이타를 압축하고 복원하는 장치 및 방법을 설명한다. 본 발명은 부호기에 의해 생성되는 정보를 복호화하는 복호기를 갖는 압축시스템에 사용하는 부호기가 제공된다. 본 발명에 의한 부호기는 데이타에 응답하여 부호어정보를 생산하는 부호를 포함한다. 또한 상기 부호기는 부호로부터의 부호어정보에 대한 응답으로 부호화된 데이타열을 발생하는 재정돈장치를 포함한다. 상기 재정돈장치는 복호화순서로 부호어를 배열하는 실행계수 재정돈장치와, 가변길이 부호어를 합하여 고정길이 인터리브어(interleaved word)로 하고, 그 고정길리 인터리브어를 복호기가 요구하는 순서로 출력하는 비트팩장치를 구한다.
[발명의 상세한 설명]
데이타를 병렬로 부호화 및 복호화하는 방법 및 장치에 대하여 설명한다. 다음의 설명에서는 본 발명의 바람직한 실시예를 완전한 이해를 제공하기 위하여 특정수의 비트, 부호기의 수, 특정한 확률, 데이타의 종류등과 같은 여러 가지 특정항목들이 열거되어 있다.
이 분야에서 통상의 지식을 가진 자는 본 발명이 이들 특정항목이 없더라도 실시될 수 있다는 것을 이해할 것이다. 또한, 잘 알려진 회로는 본 발명이 불명료하게 되는 것을 피하기 위하여 세부도 보다 블럭형태로 나타내었다.
다음의 상세한 설명의 몇몇 부분은 컴퓨터메모리내의 데이타 비트상의 동작을 나타내는 알고리즘과 기호표시로 설명된다. 이들 알고리즘 설명과 표시는 그 기술에 숙련된 다름 사람들에게 그 작업의 요지를 가장 효과적으로 전하기 위하여 데이타 처리기술에 있어서 숙련된 사람들에게 사용되는 수단이다. 알고리즘은 여기에서 그리고 일반적으로 원하는 결과로 이끄는 일관성 있는 순서의 단계들로 표현된다. 그 단계들은 물리적인 양의 조작을 요구한다. 일반적으로, 필요하지 않더라도, 이양들은 저장, 전송, 병합, 비교 기타 조작이 가능한 전기적 또는 자기적 신호의 형태를 취한다. 이들 신호들을 비트, 값, 원소, 기호, 문자, 용어, 수, 또는 비슷한 것들이라고 호칭함은 통상의 습관상의 이유로 때때로 편리함이 증명되었다.
그러나, 이 모든 것들과 유사한 용어들이 적절한 물리적 량들과 연결된 것이고, 이들 량에 적용된 편리한 표시인 것을 유의해야 한다. 별도로 언급하지 않는 한, 본 발명을 통하여 "처리하는", "연산하는", "계산하는", "판단하는", "표시하는", 또는 이와 비슷한 표현들은 컴퓨터 시스템의 레지스터내에서 물리적(전자적) 수치로 표현되는 데이타를 조작하고, 이들을 컴퓨터 시스템의 기억장치 또는 레지스터 또는 다른 정보저장장치 또는 전송 및 표시장치내에서 물리적인 수치로 표시되는 다른 데이타로 변환시키는 컴퓨터 시스템 또는 유사한 전기적 연산장치의 동작과 처리를 의미한다.
본 발명은 또한 상기 조작을 수행하는 장치에 관한 것이다. 이 장치는 바라는 목적을 위하여 특별히 구축되거나, 또는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재배열된 범용컴퓨터로 구성될 수 있다. 여기에 제시된 알고리즘과 디스플레이들은 어떤 특정한 컴퓨터 또는 다른 장치들과 본래부터 관련된 것은 아니다. 다양한 일번적인 용도의 기계들은 여기서 가르키는 바에 따른 프로그램과 함께 사용하거나 또는 요구되는 방법의 단계들을 수행하기 위해 보다 특별한 장치로 쉽게 구축되는 것을 증명할 수 있다. 갖가지 이 기계들을 위하여 요구되는 구조는 아래에 설명될 것이다. 그리고, 본 발명은 어떤 특정 프로그래밍 언어로 설명하지 않는다. 여기에 설명된 것처럼, 다양한 프로그래밍 언어가 본 발명의 관점을 이행하는데 사용될 수 있는 것이다.
[병렬 엔트로피 부호화]
본 발명은 병렬 엔트로피 부호화 시스템을 제공한다. 이 시스템은 부호기와 복호기를 포함한다. 이 실시예에서, 상기 부호기는 실시간으로 데이타의 부호화를 수행한다. 마찬가지로 일실시예에서는, 본 발명의 복호기는 실시간으로 데이타의 복호화를 수행한다. 동시에, 실시간 부호기와 실시간 복호기가 균형있는 부호화시스템을 형성한다.
본 발명은 병렬로 부호화된 데이타를 무손실로 복호화하는 시스템을 제공한다. 상기 데이타는 다수의 복호화 자원을 이용하여 병렬로 복호화된다. 다수의 복호화 자원들 각각에 복호화될 데이타열로부터 데이타(예, 부호어)가 할당된다. 데이타열의 배정은 복호화 자원들이 데이타를 동시에 복호화하는 도중에 발생함으로써, 데이타열을 병렬로 복호화한다. 복호화 자원을 효율적으로 이용하는 방법으로 데이타의 배정을 가능하게 하기 위하여, 데이타열이 정돈된다. 이것을 데이타열의 병렬화라고 한다. 데이타의 정돈은 각 복호화 자원이 어떤 또는 모든 부호화된 데이타를 문맥 모델로부터 궤환을 기다리지 않고 복호화할 수 있게 된다.
제2a도는 종래의 느린 궤환루프가 없는 본 발명에 의한 복호화 시스템을 예시한 것이다. 입력버퍼(204)는 부호화된 데이타(즉, 부호어)와 복호기(205)로부터 궤환신호를 수신하고, 미리 결정된 순서(예를 들어, 문맥상자순서)에 의해 부호화된 데이타를 본 발명의 복호기(205)로 공급하며 복호기(205)는 부호화된 데이타를 복호화 한다. 못호기(205)는 여러 복호기들(예, 205A, 205B, 205C 등)을 포함한다.
일 실시예에서, 복호기 205A, 205B, 205C 등 각각은 문맥의 그룹에 대한 데이타가 제공된다. 복호기(205)내의 각 복호기에는 입력버퍼(204)로부터 문맥의 그룹내의 모든 문맥상자에 대한 부호화된 데이타가 공급된다. 이 데이타를 이용하여 각 복호기 205A, 205B, 205C 등은 자신의 문맥상자 그룹에 대한 복호화된 데이타를 생성한다. 상기 문맥모델은 문맥상자의 특정그룹과 부호화된 데이타를 연관하도록 할 필요는 없다.
부호화된 데이타는 복호기(205)에 의하여 복호화된 데이타 저장장치(207)(예, 207A, 207B, 207C 등)로 전송된다. 복호화된 데이타 저장장치(207)는 부호화되지도 복호화되지도 않은 데이타가 아닌 실행계수와 같은 중간데이타를 저장할 수 있음을 주목할 필요가 있다. 이 경우에서, 복호화된 데이타 저장장치(207)는 엔트로피 부호화된 것이 아닌 압축형식으로 데이타를 저장한다.
독립적으로 작용하는 문맥모델(206)은 궤환신호에 답하여 복호화된 데이타 저장장치(207)(즉, 207A, 207B, 207C 등)로부터 앞서 복호화된 데이타를 수신하도록 연결되고, 이 데이타를 복호화된 데이타 저장장치(207)로 보낸다. 따라서 두 개의 독립적인 궤환루프, 즉, 첫번째는 복호기(205)와 입력버퍼(204) 사이에 그리고 두번째 것은 문맥모듈(206)과 복호화된 데이타 저장장치(207) 사이에 존재한다. 큰 궤환루프가 제거되기 때문에, 복호기(205)의 복호기들(예, 205A, 205B, 205C 등)은 이들이 입력버퍼(204)로부터 수신되자마자 연관된 부호어를 복호화할 수 있다.
문맥모듈은 부호화시스템의 기억장치부를 제공하고 메모리에 따라 데이타 집합(예, 화상)을 다른 범주(예, 문맥상자들)로 나눈다. 본 발명에 있어서는, 상기 문맥상자들은 독립적으로 정렬된 데이타 집합으로 여겨진다. 일실시예에 있어서, 문맥상자의 각 그룹은 확률추정모델을 가지고, 각 문맥상자는 자신의 상태(확률추정모델로 분배된)를 가진다. 그리하여, 각 문맥상자는 다른 확률추정 모델 그리고/또는 비트-열 발생기를 사용할 수 있다.
이와 같이 데이타는 정렬되거나, 병렬화되고 데이타열로부터의 데이타는 복호화를 위해 개개의 부호기로 배정된다.
[전형적인 엔트로피 부호화 모델에 병렬화를 추가]
데이타열을 병렬화하기 위하여, 상기 데이타는 문맥, 확률, 타일링(tiling), 부호어순서(부호어들에 근거한)등 중 어느 것에 따라 분할될 수 있다. 부호화된 데이타열의 재정돈은 병렬화나, 데이타를 병렬화하는데 사용되는 방법 또는 어떤 다른 점에서의 확률과 독립적이다. 문맥모델(CM)에 의해 분화된 데이타에 의해 공급된 본 발명의 부호화 시스템의 병렬부호기 부분이 제2b도에 도시되어 있다.
제2b도에서, 문맥의존 병렬부호기부는 문맥모델(CM)(214)과, 확률추정모듈(PEMs)(215-217)와, 비트열 발생기(BGs)(218-220)를 포함한다. CM(214)은 부호화된 입력데이타를 수신하도록 연결된다. CM(214)은 또한 PEMs(215-217)와 연결된다. PEMs(215-217)은 또한 BGs(218-220)와 각각 연결되고, 상기 BGs(218-220)는 부호열 1, 2, 3을 각각 출력한다. PEM과 BG쌍 각각은 부호기를 포함한다. 그래서, 병렬부호기는 세 개의 부호기로 보여진다. 비록 세 개의 병렬부호기만 도시되어 있으나 어떤 수의 부호기들도 사용될 수 있다.
CM(214)은 통상의 CM과 같은 방법으로 데이타열을 다른 문맥상자들로 분할하고 다수의 열을 병렬 하드웨어 부호화자원으로 보낸다. 개개의 문맥들 또는 문맥그룹들은 별도의 확률추정기(PEMs)(215-217)와 비트 발생기(BGs)(218-219)로 보내진다. BGs(218-220) 각각은 부호화된 데이타 열을 출력한다.
제2c도는 본 발명에 의한 복호화 시스템의 복호기의 일실시예에 관한 블럭도이다. 제2c도에서, 문맥의존 병렬복호기는 BGs(221-223)와 PEMs(224-226)와, CM(227)로 구성된다. 부호열 1-3은 각각 BGs(221-223)로 연결된다. BGs(221-223)는 또한 PEMs(224-225)에 각각 연결되고, PEMs(224-226)는 재구성된 입력데이타를 출력하는 CM(227)과 연결된다. 상기 입력데이타는 부호열 1-3으로 나타난 여러개의 부호열로부터 온다. 각각의 PEM과 BG에 하나의 부호열이 할당된다. 각각의 BG(221-223)는 2진결정이 보다 가능성이 있는 상태에 있는지 여부를 나타내는 비트를 되보내고, 그 PEMs(224-226)는 복호화된 비트(예, 2진결정)를 되보낸다. PEMs(224-226)의 각각은 부호가 입력부호열로부터 데이타열을 만드는 것임을 나타내는 BGs(221-223) 중 하나와 연관된다. CM(227)은 비트열 발생기로부터 복호화된 비트를 적절한 순서로 선택하여 복호화된 데이타열을 생성하고 이에 의해 원데이타를 재생한다. 이와 같이 CM(227)은 적절한 PEM과 BG로부터 복원된 데이타 비트를 얻고, 사실상 원 순서로 데이타를 재정돈한다. 이 설계의 제어는 데이타열의 역방향으로 흐르는 것이 주목된다. BG 및 PEM은 CM(227)이 이 데이타를 필요로 하기 전에 하나 이상의 비트를 앞에 유지시키면서 데이타를 복호화시킬 수 있다. 선택적으로 CM(227)은 한 BG와 PEM으로부터 비트를 요청(수신이 아닌)할 수 있고, 그 다음에 초기 요청된 비트를 사용하기 전에 다른 BGs와 PEMs로부터 하나 이상의 비트를 요청할 수 있다.
제2c도에 보여준 구성은 PEM과 BG를 견고하게 연결하도록 설계된 것이다. IBM Q-부호기는 견고하게 연결된 PEM과 BG를 갖는 부호기의 좋은 예이다. 이들 사이의 국부궤환루프는 시스템 성능에 근본적인 제약을 주지는 않는다.
다른 설계에서, PEM은 데이타를 미분하여 그것을 병렬 BG 장치로 전송할 수 있다.
그래서, 오직 하나의 PEM과 CM이 있을 수 있고, BG는 복제된다. 적응적 호프만(HUFFMAN) 부호화와 한정상태기계 부호화가 이 방식으로 사용된다.
데이타를 미분하고 이를 병렬 BG로 전송하기 위해 PEM을 사용하는 유사한 복호화시스템이 제2d도에 도시되어 있다. 이 경우에, 확률 클래스는 병렬로 처리되고, 각 비트 열 발생기는 특정 확률클래스로 할당되고 그 결과의 지식을 수신한다. 제2d도에서, 부호화된 데이타열 1-3은 다수의 비트열 발생기(예, BG232, BG233, BG234 등)중의 하나에 수신되도록 연결된다. 각 비트열 발생기는 PEM(235)과 연결된다. PEM(235)는 또한 CM(236)과 연결된다. 이 구성에서, 각 비트열 발생기는 부호화된 데이타를 복호화하고, 그 복호화의 결과가 PEM(235)(CM 236 대신에)에 의해 선택된다. 각 비트열 발생기는 하나의 확률클래스와 연관된 출처(즉, 부호화된 데이타가 어떤 문맥상자로부터 나올 수 있는)로부터 부호화된 데이타를 수신한다. PEM(235)은 확률클래스를 이용하여 비트열 발생기를 선택한다. 그 확률클래스는 CM(236)에 의해 제공된 문맥상자에 의해 지배된다. 이 방법에서, 복호화된 데이타는 병렬로 확률클래스를 처리함에 의해 만들어진다. 다수의 실행이 본 발명의 병렬복호화시스템에 대하여 존재한다. 일 실시예에서, 다중 문맥상자에 부합되는 부호화된 데이타열이 여러 부호기들의 요구에 의해 정돈된 한 열로 삽입될 수 있다. 본 발명의 일실시예에 있어서, 상기 부호화된 데이타는 그 데이타가 하나의 열내의 복호기내로 전달되더라도 각 부호기에 데이타가 계속하여 공급되도록 정렬된다.
본 발명은 화상데이타를 포함한 모든 종류의 데이타에 동작함을 주목할 필요가 있다. 집적회로로 싸게 복제될 수 있는 소형의 간단한 부호기를 이용함으로써 부호화된 데이타가 병렬로 신속히 복호화될 수 있다. 일실시예에서, FPGA(Field Programmable gate array) 또는 ASIC(a standard cell application specific integrated circuit) 칩을 이용하여 하드웨어에 부호기를 부여할 수 있다. 병렬 간단한 비트열 발생기를 조합함으로써 부호화된 데이타의 복호화가 종래 복호기의 속도를 초과하여 일어날 수 있게 되며, 반면 압축효과는 종래 복호화시스템과 같거나 이를 능가하는 것이다.
[다중 데이타열의 채널 정돈]
시스템 성능에 영향을 미치는 여러 가지 상이한 설계쟁점과 문제가 있다. 이들 중 몇몇에 대하여 언급한다. 그러나, 제2b도, 제2c도 그리고 제2d도에서 보여 주는 실시예들은 다중부호열을 사용한다. 이 실시예를 적용시킬 수 있는 병렬채널을 구비한 시스템을 예상할 수 있는데 다중 전화선, 디스크드라이브의 다중헤드등이 그러한 것들이다.
몇몇 응용에 있어서는 오직 하나의 채널이 이용가능하거나 편리하다. 실제로, 다중채널이 요구되면 개개의 부호열의 버스트(bursty) 특성 때문에, 대역폭의 이용이 빈약할 수 있다.
일 실시예에서, 부호열은 연쇄되고, 복호기로 끊임없이 전송된다. 프리페이스헤드는 각 열의 최초 비트위치를 가르키는 포인터들을 포함한다. 제3도는 이 데이타의 배열의 일예를 나타낸다. 제3도에서, 세 개의 포인터(301-303)가 각각 부호열 1, 2, 3의 연관된 부호에 있어서의 시작위치를 가르킨다. 완전히 압축된 데이타 파일은 버퍼에서 복호기에 이용가능하다. 필요하다면, 부호어는 적절한 포인터를 통해, 적절한 위치로 재검색된다. 그후 포인터는 그 부호열의 다음 부호어로 업 데이트된다.
이 방법은 실용적인 목적을 위해 전체 부호화된 프레임이 복호기 및 부호기에 저장될 필요가 있음을 유의해야 한다. 실시간 시스템 또는 보다 버스트가 적은 데이타 흐름이 요구된다면 두 개의 프레임 버퍼는 부호기와 복호기 모두에서 뱅킹하는데 사용될 수 있다.
[부호어 순서의 데이타 순서]
복호기는 주어진 결정된 순서로 부호어를 복호화함이 주목된다. 병렬코딩에서, 부호열에 대한 요청순서는 결정성이다. 그래서, 병렬부호열로부터의 부호어가 부호기에서 오른쪽 정렬순서로 삽입될 수 있다면, 단일 부호열은 충분할 것이다. 부호어는 실시간 기준(just-in-time basis)으로 동일한 순서로 복호기에 보내진다.
부호기에서, 복호기의 모델은 부호어 순서를 결정하고, 단일열로 부호어를 묶는다. 이 모델은 실제 복호기일 수 있다.
병렬복호화 요소로 데이타를 송부할 때 생기는 문제점들은 데이타가 가변 길이일 때 발생한다. 가변길이의 부호어의 열을 분해하는 것은 비트 쉬프트를 사용하여 부호어를 정렬할 것을 필요로 한다. 비트 쉬프트는 하드웨어에서 수행시 비싸거나/그리고 느린 경우가 많다. 비트 쉬프트제어는 특정한 부호어의 크기에 의존한다. 이 제어 궤환루프는 가변길이 쉬프팅이 빠르게 이행되는 것을 막는다. 만일 그 열의 분해처리가 다중 복호기를 따라 잡기에 충분히 빠르지 않는 단일 비트 쉬프트에서 이행된다면 단일열을 가진 다중 복호기의 장점은 실현될 수 없다.
본 발명에 의해 제공된 해결책은 부호화된 데이타를 병렬부호로 분배하는 문제점을 복호화를 위한 가변길이부호어의 배정으로부터 분리한다. 각 독립적인 부호열에서의 부호어는 인터리브어(interleaved words)로 불려지는 고정길이어로 패킹된다. 그 채널의 복호기 끝에서 이 인터리브어들은 빠른 하드웨어 데이타선과 간단한 제어회로를 갖는 병렬복호기장치로 분배될 수 있다. 하나의 부호어를 완성하기에 충분한 최소의 비트가 각 인터리브어에 포함되도록 인터리브어의 길이가 최대 부호어 길이보다 더 긴 것이 편리하다. 그 인터리브어는 부호어의 전부와 일부를 포함할 수 있다. 제4도는 병렬부호어 열집합의 예를 인터리브하는 것을 보여준다.
이 단어들은 복호기에서의 요구에 따라 인터리브된다. 각 독립적인 복호기는 전체 인터리브어(삽입어)를 수신한다. 그 비트 쉬프팅동작은 시스템의 병렬을 지속하면서 각 부호기에서 국부적으로 행해진다. 제4도에서 각 인터리브어안의 첫 부호어가 집합(set)에서 가장 최소로 유지하는 부호어임을 주목하라. 예를들어, 첫번째 삽입된 단어는 부호열 1로부터 오고 최저의 부호어로 시작한다(즉, 1번). 이것은 부호열 2에서 첫번에 삽입된 어에 의해 후속된 후 부호열 3에서 첫번째 삽입될 어로 이어진다. 그러나, 이미 정돈된 인터리브어에 완전하게 포함되지 않는 다음 최저 부호어는 7번이다.
그러므로, 그 열에서 다음 단어는 부호열 2의 두번째 인터리브어이다.
다른 실시예에서, 연속세트의 인터리브어(예, 열 1에서 부호어 8번으로 시작하는 부호어, 열 2에서 부호어 7번으로 시작하는 부호어, 열 3에서 부호어 11로 시작하는 부호어)가 인터리브 부호열로 삽입되는 순서는 앞의 인터리브어 세트의 첫번째 부호어에 근거한다(예, 열에서 부호어 1번으로 시작하는 부호어, 열 2에서 부호어 2번으로 시작하는 부호어, 열 3에서 부호어 4번으로 시작하는 부호어). 그리고, 첫부호열을 최저수로 가진 인터리브어로부터 첫부호어를 최고수로 가진 인터리브어로 정돈된다. 그래서, 이 경우에는 부호어 1번으로 시작하는 인터리브어가 첫번이기 때문에, 열 1번에서 다음 인터리브어는 인터리브열로 삽입되는 인터리브어 두번째 그룹의 첫번째이며 그후 열 2에서의 다음 인터리브어에 의해 이어지고, 열 3에서 다음 인터리브어로 이어지는 인터리브어의 두번째 그룹이 인터리브열로 삽입된 후에 열 2에서 다음 인터리브어가 그 열에서 삽입되는 다음 인터리브어일 수 있다. 왜냐하면, 부호어 7번이 두번째 인터리브어 그룹에서 최저단어이기 때문이다(열 1에서 부호어 8로 이어지고, 열 3에서 부호어 11로 이어지는).
데이타열을 위한 모델러로써 실제 복호기를 사용함은 모든 설계선택을 설명하고 인터리브어생성을 지연한다. 어쨋든 부호기와 복호기 모두를 갖는 이중 시스템에 대하여는 대단한 비용은 아니다. 이는 결정성 순서에서 소요되는 어떠한 병렬세트의 가변길이 데이타 언어로 일반화될 수 있다.
[병렬 복호화를 위한 부호 및 비트-열 발생기의 종류]
본 발명은 병렬로 복제되는 비트열 발생요소로써 Q-부호기 또는 B-부호기 같은 이미 존재하는 부호기를 사용할 수 있다. 그러나, 다른 부호 및 부호기들도 사용될 수 있다. 본 발명에 의하여 사용된 부호기들과 이들에 연관된 부호들이 간단한 부호기이다.
본 발명에 있어서, Q-부호기에 의하여 사용되는 산술부호, 또는 B-부호기에 의하여 사용되는 다중상태 부호같은 복잡한 부호대신에 간단한 부호를 갖는 비트열 발생기의 사용이 더 이익이다. 간단한 부호는 복잡한 부호보다 하드웨어 수행이 훨씬 빠르고 간단하며, 실리콘을 덜 필요로 하는 잇점이 있다.
본 발명의 또 다른 잇점은 부호화효율이 개선될 수 있다는 것이다. 제한된 양의 상태 정보를 사용하는 부호는 모든 확률에 대하여 완벽하게 샤논 엔트로피 한계에 이를 수 없다. 단일 비트-열 발생기가 다중 확률이나 문맥을 처리할 수 있도록 하는 이 분야에서 알려진 하드웨어 구현 또는 코드는 부호화 효율을 감소시키는 문제점이 있다. 다중 문맥 또는 확률 클래스를 필요로 하는 문제점을 제거하는 것은 샤논 엔트로피 한계에 보다 근접되는 코드를 사용할 수 있게 한다.
[R-부호]
본 발명의 일실시예에 사용되는 부호(그리고 부호기)는 R-부호라 한다. R-부호는 다양한 수의 동일한 입력기호들을 부호어로 변환시키는 적응적 부호이다. 일 실시예에서, R-부호는 파라미터화(parameterize)되기 때문에 많은 다른 확률들이 단일 부호기 설계로 처리될 수 있다. 더구나, 본 발명의 R-부호는 간단한 고속하드웨어로 해독될 수 있다.
본 발명에 있어서, 부호화 또는 부호화를 수행하기 위해 R-부호기에 의해 R-부호들이 사용된다. 일실시예에서, R-부호기는 비트열 발생기와 확률추정모듈이 결합된 것이다.
예를 들어, 제1도에서, R-부호기는 확률추정모듈(102)과, 비트열 발생기(103)의 조합을, 비트열 발생기(106) 및 확률 추정모듈(105)의 조합을 포함한다.
부호어들은 최대 가능기호(MPS)의 실행을 나타낸다. MPS는 확률이 50% 이상인 이진결정의 결과를 나타낸다. 반면에, 최소 가능기호(LPS)는 확률이 50% 이하인 2진 결정의 결과를 나타낸다. 두 결과가 동등할 때, 부호기와 복호기가 같이 지칭되는한, MPS 또는 LPS 어느 것으로 지칭하느냐 하는 것은 중요하지 않다. MAXRUN으로 불려지는 주어진 변수에 대하여 압축화일에서의 결과 비트 순차가 표 1에 나타나 있다.
[표 1] 비트 발생부호화
부호화하기 위하여, 실행에서의 MPS의 수는 간단한 계수기에 의해 계수된다. 계수값이 MAXRUN 계수값과 같으면, 부호어 0은 부호열로 방출되고 계수기는 리셋된다. LPS가 계수된다면, LPS 이전에 MPS 기호의 수를 유일하게 서술하는 비트 N 앞의 1이 부호열로 방출된다(실행길이를 설명하기 위한 많은 방법이 N 비트를 할당한다). 다시 계수기는 리셋된다. N에 필요한 비트수는 MAXRUN의 값에 의존함을 주목하라. 또한 부호어의 1의 보수가 사용될 수 있음을 주목하라.
복호화하기 위하여, 부호열에서 첫번째 비트가 0이라면, MAXRUN의 값은 MPS 계수기에 넣어지고, LPS 표시가 제거된다. 그리고 0비트는 폐기된다. 첫번째 비트가 1이라면, 다음 비트들은 비트 N을 추출하기 위하여 검사되고, 적절한 계수(N)가 MPS 계수기에 넣어지고, LPS 표시기는 셋트된다. 그 다음 IN 부호어를 포함한 부호열 비트는 폐기된다.
R-부호들은 표 1의 규칙에 의해 발생된다. 주어진 R-부호 Rx(k)는 MAXRUN에 의하여 정의된다. 예를들면 ;
Rx(k)에 대한 MAXRUN=X × 2k-1,
그래서,
R2(k)에 대한 MAXRUN=2 × 2k-1,
R3(k)에 대한 MAXRUN=3 × 2k-1,
등등.....
R 부호는 골롬(Golomb) 부호의 부분집합이라는 것에 주목하라. 또한 라이스(Rice) 부호는 단지 R2(·)부호를 사용하는 것에 주목하라. 본 발명의 R 부호는 R2(K) 및 R3(K)부호 모두의 사용을 허락하며, 필요한 경우 다른 Rn(K) 부호 사용을 허락한다. 일실시예에 있어서, R2(K)와 R3(K) 부호가 사용된다. Rn은 n=2에 대해 존재하며, n은 어떤 홀수(예, R2, R3, R5, R7, R9, R11, R13, R15)와 같다는 것에 주목하라. 일 실시예에서 R2(K) 부호에 대해, 실행계수 r은 N으로 부호화된다.
실행계수 r은 K 비트로 설명되며, 1N은 K+1 비트로 표현된다. 또한 일실시예에서, R3(K) 부호에 대해서, N 비트는 N<2(k-1)또는 n2(k-1)경우 및 k-1 또는 k비트를 나타내기 위해 혹은 실행계수 r을 포현하기 위해 1 비트를 포함할 수 있으며, 변수 N은 총 K 또는 K+1 비트로 각각 표현된다. 다른 실시예에서, N의 1의 보수가 부호어에 사용될 수 있다. 이 경우, MPS는 많은 Os를 갖는 부호열을 생산하는 경향이 있으며 LPS는 많은 ls를 갖는 부호열을 생산하는 경향이 있다.
표 2, 3, 4 및 5는 본 발명의 일실시예에서 사용된 효율적인 몇몇 R 부호들을 도식화한 것이다. 다른 길이를 갖는 실행부호 역시 본 발명에 사용될 수 있다는 것에 유의해야 한다. R2(2)에 대한 또 다른 샐행부호의 예가 표 6에 도시되어 있다. 표 7 및 8은 각각 다른 실시예에 사용되는 부호들의 예를 나타낸 것이다.
[표 2] R2(0)
[표 3] R1(1)
[표 4] R3(1)
[표 5] R2(2)
[표 6] Alternative R2(2)
[표 7] Alternative R3(2) Code
[표 8]
Another Alternative R2(2) Code
[부호에 대한 확률 추정모델]
일실시예에서, R2(0) 부호는 부호화를 실행하지 않는 것이다. 0 입력은 0으로 부호화되며, 1 입력은 1로 부호화되고(또는 이와 반대) 50% 확률을 갖는 것이 최적상태이다.
현재 가장 좋은 실시예인 R2(1) 부호는 0.707(즉, 70%)에 가까운 확률이 최적 상태이며 R3(1) 부호는 0.794(79.4%)의 확률이 최적상태이다. 아래의 표 9는 최적 실행부호 길이를 도식화한 것이며, 여기서 확률스큐는 다음 방정식에 의해 정의된다.
확률스큐=-log(LPS)
[표 9]
최적확률은 비록 낮은 k값에서 만큼 높은 k값에서도 다르지는 않지만, 확률 스큐에 의해 표시되는 바와 같이, 부호들은 확률범위가 비교적 고르게 공간이 분포한다는 점에서 거의 최적상태에 가깝다.
보호가 최적인 확률에서 기준이 만들어진다. 사실, 단지 R2(2)만이 엔트로피 곡선을 만족시킨다. 진정한 관심사는 어떤 확률 범위가 주어진 그룹에서 모든 다른 R부호보다 더 좋은 R 부호인가이다. 다음의 표가 R2 부호계층 및 R2와 R3 부호의 계층에 대한 확률범위를 제공한다.
0부터 12가지의 R2 부호 계층에 대해 그 범위는 아래의 표 10에서와 같다. 예를들어, R2 부호만이 사용될 때, R2(0)는 0.5<확률<0.6180일 때 가장 좋다.
유사하게, R2(1)은 0.6180<확률<0.7862일 때 가장 좋다.
[표 10] 0-12의 R2코드
R2와 R3 부호의 계층에 대해 해들이 아래의 표 11에 있다. 예를 들어, R2와 R3부호가 사용될 때, R2(1)는 0.6180<확률<0.7862일 때 최상이다.
[표 11] 길이 13이하인 R2 및 R3 코드
고정된 K에 대한 R2(K)를 실행길이 부호(run-length code)라고 부른다. 그러나, 고정된 K는 확률범위에 대해서만 가장 좋다. 최적확률 부근에서 부호화했을 때 본 발명에 따른 R 부호는 대략 동일 주파수로 0과 1N 부호를 사용한다. 다시 말해서 본 발명에 의한 R 부호기는 부호를 출력하는 시간의 반은 한가지 부호를 출력하고 나머지 반은 다른 한가지 부호를 출력한다. 0과 1N 부호의 수를 시험하는 것에 의해 가장 좋은 부호가 사용되고 있는지를 판단할 수 있다. 즉, 너무 많은 1N 부호가 출력되면, 실행길이가 너무 길게 된다. 다른 한편으로, 너무 많은 0 부호가 출력되면 실행길이가 너무 짧아진다.
랭돈(Langdon)에 의해 사용된 확률 추정 모델은 소스 확률이 현 추정치 위에 있는지 또는 아래에 있는지를 결정하기 위해 각 부호의 첫번째 비트를 시험한다. 1983년 10월 발행 IBM 기술보고서 Vol 26, No 2B G.G.Langdon의 "An Adaptive Run-Length Coding Algorithsm"를 참조바란다. 이 판단에 기초하면 k가 증가하거나 감소한다. 예를 들어, MPS를 표시하는 부호가 보여진다면, 확률추정치는 너무 낮은 값이 된다. 그러므로, Langdon에 따르면, 각 0부호에 대하여 k는 1대씩 증가한다. LPS(즉, IN 부호)가 이어지는 MAXRUN MPS 보다 더 작은 값을 표시하는 부호가 보여진다면, 확률추정치가 너무 높게 된다. 그러므로, Langdon에 따르면, 각 IN 부호에 대하여 K는 1씩 감소한다.
본 발명은 1씩 단순 증가하거나 감소하는 모든 부호어보다 더 복잡한 확률 추정을 가능하게 한다. 본 발명은 사용부호를 결정하는 확률 추정모듈 상태를 포함한다. 부호는 상태표 또는 상태 기계를 사용하여 상태에 부여된다.
본 발명의 일실시예에서, 확률추정치 변화량은 모든 부호어 출력을 설명한다.
그러므로, 확률추정모듈은 부호어가 0 또는 1로 시작했는지에 따라 확률추정치를 감소시키거나 증가시키거나 한다. 예를 들면, "0" 부호어가 출력된다면, MPS 확률추정치의 증가가 발생한다. 다른 한편으로, "1" 부호어가 출력되면 MPS 확률추정치가 감소한다.
종래의 Langdon 부호기는 각 부호어에 대하여 R2(K) 부호 및 증가되었거나 감소된 K값만을 사용하였다. 본 발명은 상태표 또는 상태 장치와 함께 선택적으로 R2(K) 및 R3(K) 부호를 사용하여 적응속도(adaptation rate)를 적용할 수 있게 한다.
즉, 소량의 정지 데이타가 있다면, 적응속도가 더 많은 최적 코딩을 위해 더 빨라져야 하고, 정지 데이타량이더 많은 곳에서는 나머지 데이타에 더 효율 좋은 압축을 달성하는 코딩이 되도록 적응시간이 더 길어진다. 여러 가지의 상태변화가 발생하는 곳에서, 응용특성은 적응시간이 더 길어진다. 여러 가지의 상태변화가 발생하는 곳에서, 응용특성은 적응속도에 영향을 줄 수 있다. R 부호의 특성 때문에, R 부호의 추정은 간단하고 하드웨어를 거의 필요로 하지 않은 반면에, 매우 강력하다. 제33도는 MPS 확률대 코딩 효율(엔트로피에 관해 정규화된 부호길이)의 그래프를 표시한다. 제33도는 본 발명의 몇몇 R 부호가 확률공간을 어떻게 점유하는지를 보여준다. 하나의 예로서, 제33도는 대략 0.55의 MPS 확률에 대해 R2(0)부호의 효율은 엔트로피 한계인 1.01(또는 1% 이하)이다. 이에 반하여, R2(1) 부호는 엔트로피 한계 1.09(9% 이하)이다. 이 예는 특정의 낮은 확률 경우에 대하여 잘못된 부호를 사용한 경우 코딩 효율에서 8% 손실을 일으킨다는 것을 보여준다.
R3(K)부호와의 결합은 더 많은 확률공간이 더 큰 효율을 갖도록 한다. 본 발명에 따른 확률추정 상태표의 예가 제5도에 도시되어 있다. 제5도를 참조하면, 확률추정 상태표는 상태계수 및 표에서 별도의 상태 각각과 관련된 부호를 보여준다. 상기 표는 양의 상태와 음의 상태 모두를 포함하는 것이 주목된다. 상기 표는 37양의 상태와 37음의 상태 및 제로 상태를 구비한다. 음의 상태는 양의 상태와 다른 MPS를 의미한다. 일 실시예에서 음의 상태는 MPS가 1일 때 사용될 수 있고 양의 상태는 MPS가 0일 때 사용될 수 있으며, 또한 그 반대도 가능하다. 제5도에 도시된 표는 단지 하나의 예이며, 다른 표들은 더 많거나 작은 상태를 가질 수 있으며, 다른 할당 상태를 가질 수 있다.
초기에, 상기 부호기는 확률 추정치가 0.50인 R2(0) 부호(즉, 노주(NO) 부호) 상태인 0상태에 있다. 각 부호어가 처리된 후에 상기 부호어의 첫째 비트에 따라 상태 계수기는 증가되거나 감소된다. 일 실시예에서, 0인 부호어는 상태 계수기의 크기를 증가시키고; 1로 시작하는 부호어는 상태 계수기의 크기를 감소시킨다. 그러므로, 모든 부호어는 상태 계수기에 의한 상태변화를 일으키게 한다. 다시 말해서 확률추정 모듈은 상태를 변화시킨다. 그러나, 연속되는 상태들이 같은 부호에 관련될 수 있다. 이 경우에, 확률추정치는 모든 부호어의 부호를 변화시키는 것 없이 달성될 수 있다. 다시 말하면, 상태는 모든 부호어에 대해 변화된다. 그러나, 상기 상태는 특정시간에 동일확률로 맵핑되어 있다. 예를 들면, 5 내지 -5의 상태는 R2(0) 부호를 사용하는 반면에, 6부터 11까지 그리고 -6부터 -11까지의 상태들은 R2(1) 부호를 사용한다. 본 발명의 상태표를 사용하면, 확률추정치는 비선형방식으로 동일 코더에 머무르게 한다.
동일 R 부호를 갖는 보다 많은 상태들이 더 낮은 확률에 대하여 포함된다는 것에 유의해야 한다. 낮은 확률로 잘못된 부호를 사용할 때 효율의 손실이 크기 때문에 이 과정이 실행된다. 실행 길이 부호상태 테이블의 성질은 각 부호어에 이어지는 상태들 사이에 전송하는 것이다. 부호를 모든 상태로 변화시키도록 설계된 상태표에서, 낮은 확률로 상태들 사이에서 토글링(toggling)할 때, 엔트로피 효율 한계치에 가까운 부호와 엔트로피 효율 한계치로부터 멀리 있는 부호 사이에서 상기 부호는 토글한다. 그러므로 (부호된 데이타 비트들 수에 대한) 패널티가 상태들 사이의 과도기간에 발생한다. Langdon의 확률추정모듈과 같은 종래기술의 확률추정모듈은 이러한 패널티 때문에 성능이 떨어진다. 더 높은 확률을 갖는 실행길이 부호에서, 잘못된 부호 때문에 발생하는 패널티는 그리 크지는 않다. 그러므로, 본 발명에서는, 부가상태가 더 낮은 확률로 부가되어 두 개의 정확한 상태 사이의 토글 변화가 증가됨으로써 코딩 비효율을 감소시킨다.
특정실시예에서, 부호기는 초기 확률 추정상태를 가질 수 있다. 다시 말하면, 부호기는 사전에 결정된 하나의 상태, 즉 상태 18과 같은 상태에서 시작할 수 있다. 하나의 실시예에서, 상태가 다른 표가 사용되어 얼마간의 상태들은 첫번째 소수의 기호들이 빠른 적용을 위해 사용되며, 두번째 상태표가 느린 적응이 확률추정치를 세밀히 조정하기 위해 나머지 기호들에 대해 사용된다. 이 실행방식으로, 상기 부호기는 코딩 처리에서 더 빠르게 더 효율좋은 부호를 사용할 수 있다. 또 다른 실시예에서, 부호 열은 각 내용에 대해 초기 확률 추정치를 정할 수 있다. 일실시예에서, 증가와 감소는 고정된 수(예, 1)를 따라 발생하지 않는다. 대신에, 확률추정상태는 이미 처리되는 데이타 량 또는 데이타 변화량에 따른 변수에 의해 증가될 수 있다. 이러한 표의 예가 아래의 표 21-25에 기술되어 있다.
상태표가 대칭이라면, 제5도의 표가 보여주는 바와 같이, 그것(0 상태를 포함)의 반은 저장되거나 하드웨어로 구현될 필요가 있다. 일 실시예에서, 상태수가 대칭의 잇점을 갖는 부호크기(1s) 보수형으로 저장된다. 이 실행 방식에 있어서, 상기 표는 상태를 결정하기 위해 1의 보수의 절대값을 취하고 그리고 MPS가 1 또는 0인지를 판단하기 위해 부호를 시험함으로써 이용될 수 있다. 상태의 절대값이 표를 색인하기 위해 사용되고 하나의 보수의 절대값 계산과정이 간단하기 때문에 상태를 증대 및 감소시키는데 필요한 하드웨어를 줄일 수 있게 한다.
또다른 실시예에서, 하드웨어의 더 좋은 효율을 위해, 상태표 대신 하드 와이어드는 프로그램 가능한 상태장치로 대치할 수 있다. 변환기를 부호화하는 하드 와이어드 상태는 상태표의 하나의 실행도구이다.
[평형 병렬 엔트로피 시스템에 대한 검토]
본 발명은 평형 병렬 엔트로피 코딩(부호화) 시스템을 제공한다. 평형 병렬 엔트로피 코딩 시스템은 고속 및 저비용 하드웨어로 수행되는 실시간 부호화 및 실시간 복호화를 포함한다. 본 발명은 한정하는 것은 아니나 기록 가능한 광 디스크나 자기 디스크의 실시간 압축/압축해제, 컴퓨터 회로망 데이타의 실시간 압축/압축해제, 멀티 기능(예, 복사기, 팩시밀리, 스캐너, 프린터등) 장치에서 압축된 화상 데이타의 실시간 압축/압축해제, 및 오디오 데이타의 실시간 압축/압축해제 등과 같은 수많은 무손실 부호화 적용처에 사용될 수 있다.
부호기의 성능을 정할 때에는 주의가 필요하다. 부호기의 성능을 정하는 것은 충분히 빠르게 부호화하는 데이타 채널이 주어진 원 데이타에 대한 특정속도를 달성한 부호기와 설계에 관계가 있다. 그러나, 여러 응용에서, 목표는 부호기가 부호화된 데이타 채널을 효율적으로 사용하는 것이다. 부호화된 데이타 채널의 이용은 오리지날 데이타 인터페이스의 최대 버스트 속도, 부호기속도 그리고 압축된 데이타에 의해 영향을 받는다.
이러한 효과의 영향은 부호기에 버퍼링되는 량에 따라 데이타의 국부적인 량에 대해 고려되어야 한다. 부호기 속도와 고 압축률을 유지하는 동안 그리고 최대 버스트 속도를 유지하는 동안 부호화되는 데이타 채널을 효율적으로 이용하는 부호기를 갖는 것이 바람직스럽다.
이하, 본 발명의 부호기에 대하여 설명한다. 부호기와 함께 사용될 수 있는 복호기가 또한 함께 설명한다.
[본 발명에서의 실시간 부호화]
제6도는 본 발명의 부호화시스템의 블록도이다. 일 실시예에서, 본 발명의 부호기는 실시간 부호화를 실행한다. 제6도를 참조하면, 부호화시스템(600)은 오리지날 데이타(601)에 반응하여 부호어(코드워드)정보(604)의 형태로 코드화된 정보를 발생시키는 문맥모델 및 상태 메모리(603)와 결합된 부호기(602)를 구비한다. 부호어정보(604)는 재정돈장치(606)에 의해 수신되고, 재정돈메모리(607)에 결합된다. 부호어정보(604)에 반응하여 재정돈장치(606)는 재정돈메모리(607)와 결합되어 부호화된 데이타열(608)을 발생시킨다. 부호화시스템(600)은 부호어에서 동작되는 것에 한정되지 않고, 다른 실시예로서, 불연속 아날로그 파형, 변수길이 비트패턴, 채널기호, 알파벳, 사건들 등 본 발명의 기술적 사상을 사용하는 것들에서 동작할 수 있다.
부호기(602)는 문맥모델(CM), 확률추정장치(PEM) 및 비트열 발생기(BG)를 포함한다. 부호기(602)에서의 문맥모델과 PEM(확률추정장치)는 근본적으로 복호기에서의 그것과 동일하다(데이타 흐름 방향은 제외). 부호기(602)의 비트발생기는 복호기 비트발생기와 유사하여 아래에 설명된다.
부호기(602)에 의한 부호결과는 오리지날 데이타를 나타내는 0 또는 그 이상의 비트들이다. 이 실시예에서 비트열 발생기의 출력은 하나 또는 그 이상의 제어신호를 포함한다. 이러한 제어신호들은 비트열내에서 데이타로의 제어경로를 제공한다.
일실시예에서, 부호어정보는 실행표시시작, 실행 표시끝, 부호어 및 부호어용 실행계수의 수(그것이 분맥 또는 확률클래스이던 간에) 확인 색인으로 구성될 수 있다.
본 발명의 비트열 발생기의 일실시예에 대하여 설명한다.
재정돈장치(606)는 부호기(602)의 비트열 발생기에 의해 발생된 비트들 및 제어신호들을 수신하며 코드화된 데이타를 발생시킨다.
하나의 실시예에서, 재정돈장치(606)에 의한 부호화된 데이타 출력은 인터리브어로 된 열을 포함한다.
일실시예에 있어서, 재정돈장치(606)는 두 개의 기능을 실행한다. 재정돈장치(606)는 부호기가 생성하는 실행 끝 부호어로부터 복호기가 필요로 하는 실행시작 부호어까지의 부호어를 이동시키며, 변수길이부호어를 고정길이를 갖는 인터리브어와 결합시키며 복호기가 요구하는 적당한 순서로 그들을 출력한다.
재정돈장치(606)는 일시적인 재정돈메모리(607)를 사용한다. 하나의 실시예에서, 부호화는 워크스테이션에서 실행되며, 일시재정돈 메모리(607)는 100M 바이트 이상의 크기이다.
본 발명의 균형잡힌 시스템에서, 일시재정돈 메모리(607)는 훨씬 작으며(예, 대략 1K 바이트) 고정적이다. 이와 같이, 일실시예에서는, 복호기 또는 비트레이트(출력이 실행완료점에 만들어질 때와 같은)가 요구하는 메모리를 증가시킬지라도, 실시간 부호화를 고정된 메모리량을 사용하면서 실행된다. 본 발명의 복호기는 예를 들면 암시적인, 명시적인 또는 인스트림 시그널링을 사용하여 기록장치의 한정된 메모리의 효과를 측정할 수 있다. 재정돈장치(606)는 기록에 이용되는 한정된 메모리를 갖지만, 필요한 메모리는 한정적이 아니다.
실행큐의 시작을 위한 실행 끝에 대한 제한성 메모리의 영향 및 인터리브어 재정돈에 대한 영향 모두 고려하여야 한다.
하나의 실시예에서, 본 발명의 부호화시스템(그리고 이에 상응하는 복호화시스템)은 한 개의 집적회로(IC)를 사용하여 부호화(또는 복호화)를 수행한다.
또 다른 실시예에서, 하나의 집적회로(IC)가 그 부호기, 복호기 및 메모리를 포함하는 본 발명의 부호기시스템을 포함한다.
별도의 외부 메모리가 부호화과정을 돕기 위해 부가될 수 있다.
멀티칩 모듈 또는 집적회로(IC)는 부호화/복호화 하드웨어 및 메모리를 포함할 수 있다.
본 발명의 부호화시스템은 N 인자까지 만큼 유효 밴드폭을 증가시키려는 시도를 할 수 있다. 달성된 압축이 N : 1 보다 작으면, 코드화된 데이타 채널은 충분히 이용될 수 있지만 효과적인 밴드폭 증가는 압축율과 같을 뿐이다.
달성된 압축률이 M : 1 보다 크다면 유효밴드폭은 여분의 밴드폭이 기록가능하게 될 것이다. 양쪽의 경우에, 달성된 압축률은 본 부호화시스템에서 나타나는 버퍼링양에 의해 정해진 데이타의 국부영역 이상이어야 한다.
[본 발명의 부호기용 비트 발생기]
제7도는 본 발명의 부호기용 비트 발생기의 일실시예를 보여준다. 비트발생기(701)는 입력으로서 확률클래스과 부호화되지 않은 비트(예, MPS 또는 LPS 표시)를 수신하기 위해 결합된다. 입력에 대한 반응에서, 비트발생기(701)는 다중신호들을 출력한다. 그 출력신호들중 두 개는 실행의 시작과 종료(각 부호어가 실행을 나타낸다) 시작신호(711) 그리고 종료신호(712)를 각각 표시하는 제어신호이다.
시작과 종료하는 실행과정이 동시에 가능하다. 실행이 시작되거나 종료되었을 때, "색인" 출력(713)은 부호화하지 않은 확률클래스(또는 문맥)의 표시를 구성한다. 하나의 실시예에서, 색인출력(713)은 몇몇 메모리 뱅크에서 각 확률클래스가 복사되어지는 시스템에 대한 뱅크 확인 비트와 확률클래스 비트의 조합을 표시한다. 부호어출력(714)은 실행이 종료되었을 때 비트발생기로부터 부호어를 출력하기 위해 사용된다.
메모리(702)는 비트발생기(701)와 결합되며 주어진 확률클래스에 대한 실행카운트를 포함한다. 비트가 발생하는 동안, 비트발생기(701)는 색인(예, 확률클래스)을 사용하여 메모리(702)로부터 데이타를 읽어들인다. 메모리(701)로부터 읽어들인 후에, 비트발생기(701)는 다음과 같이 비트 발생과정을 실행한다. 첫째, 실행계수가 0이라면, 시작신호(711)는 실행의 시작을 표시한다. 그리고 나서, 부호화되지 않은 비트가 LPS와 같다면, 종료신호(712)가 실행의 끝을 표시한다. 또한, 부호화 되지 않은 비트가 LPS와 같다면, 부호어(714)는 부호어가 1N 부호어이며 실행계수가 클리어, 즉 0으로 설정(실행이 종료되었으므로)된다는 것을 표시하기 위해 설정된다. 부호화되지 않은 비트가 LPS와 같지 않다면, 실행계수는 증가되고 실행계수가 최대 실행계수와 같은지를 시험과정이 결정한다.
만약, 그렇다면, 종료신호(712)가 출력되며, 부호어출력(714)은 0으로 설정되고 실행계수는 클리어(예, 실행계수가 0로 설정된다)된다. 만약 시험과정이 실행계수가 최대값이 아니라고 결정하면, 실행계수는 증가된다. 색인신호(714)는 입력으로서 수신된 확률클래스를 나타낸다.
본 발명에서, IN부호어의 발생은 어떤 부가정보없이 그들의 길이가 결정될 수 있도록 실행된다. 표 12는 복호기 및 부호기용 R3(2)부호어의 IN부호어를 표시한다. 복호기는 "IN"부호어 내의 "1" 비트가 LSB이라는 것과 "N"계수부가 적절히 MSB...LSB 순으로 되어 있다는 것을 예상한다. 복소기순서에서, 변수길이부호어는 어떤 특정 부호가 사용되었는지를 아는 것이 없이 0을 채워 넣은 부호어와 구분되어질 수 있다. 부호기순서에서, 부호어는 역전되며 최상위 "1"비트의 위치는 "IN"부호어의 길이를 표시한다. 부호기순서로 부호어를 발생시키기 위해 계수값은 역전되어야 한다. 이것은 부호어가 LSB순으로 정렬되도록 13 비트를 역전시키고 나서 그것을 쉬프트시킴으로써 달성된다.
아래에 상세히 설명된 것처럼, 비트팩장치는 부호어를 복호기순으로 다시 역전시킨다. 그러나, 이러한 부호어의 역전은 그것이 쉬프트 과정을 수행해야 하기 때문에, 비트팩장치(606)의 복잡성을 증가시키지는 않는다.
[표 12] R3(2) 부호어용 "IN" 부호어 표시값
R3 부호에 대해, "N" 부호어를 발생시키기 위해서는 "1"의 뒤에 이어지는 비트가 짧은 계수값을 갖는지 긴 계수값을 갖는지를 표시할 것을 요구한다.
다중 메모리 뱅크를 사용함으로써, 본 발명은 파이프라인을 허용한다.
예를 들어, 다중 포트 메모리의 경우, 기록동작이 이전의 부호화되지 않은 비트용 메모리에 대해 일어나는 반면에 읽기 동작은 현재의 부호화되지 않은 비트용 메모리에 대해 일어난다.
[변경 AHDL 샘플 설계]
본 발명에 의한 부호기 비트발생기의 일실시예는 FPGA를 포함한다. 그 설계는 모든 R2 및 R3 부호를 R2(12)까지 취급한다. AHDL(Altera Hardware 서술언어) 소스 부호가 아래에 리스트로 기록된다.
그 설계는 제13도에 보이는 것처럼, 다수의 부분으로 구성된다.
첫째, "ENCBG(1301)"은 실행의 시작, 종료 및 계속을 다루는 논리를 결정하는 설계상의 주요 부분이다. 둘째, "KEXPAND(1302)"는 확률클래스를 최대 실행길이, 변수길이 마스크 및 R3 부호용 첫째 부호어의 길이로 연장하기 위해서 사용된다. "KEXPAND(1302)"는 동일명칭을 갖는 복호기기능과 같다. 셋째, "LPSCW(1303)는 입력으로 확률클래스에 대한 계수값과 정보를 취하며, "IN" 부호어를 발생시킨다.
그 설계는 두 개의 파이프라인 단계를 사용한다. 첫째 파이프라인 단계동안, 계수가 증가되며, 확률클래스 확장되고 R3 부호어에 대한 감산과 비교연산이 실행된다. 다른 연산전부는 둘째 파이프라인 단계에서 실행된다.
[본 발명의 재정돈(reoder) 장치]
제8도는 재정돈장치의 일실시예에 대한 블록도이다. 제8도를 참조하면, 기록장치(606)는 실행계수 재정돈장치(801)와 비트패킹장치(802)로 구성된다. 실행계수재정돈장치(801)는 부호기에 의해 생성된 실행의 종료부터 복호기에 의해 요구되는 실행의 시작까지 부호어를 이동시키는 반면에, 비트패킹장치(802)는 변수길이부호어를 고정길이 인터리브어에 결합시키며 그들을 복호기가 요구하는 적당한 순서로 출력한다.
"스누퍼" 복호기는 어떤 복호기에 대해서 재정돈을 하기 위해 사용될 수 있으며, 여기서 복호기가 부호기에 포함되며 부호어가 실제 복호기가 필요로 하는 순서로 데이타를 요청한다. 스누퍼복호기를 지원하기 위해, 실행계수재정돈 과정이 각 스트립에 대해 독립적으로 실행된다. 쉽게 모델화될 수 있는 복호기를 위해 다중시간스탬프큐(multiple time stamped queues) 또는 단일 합병큐(single merged queue)가 재정돈과정에 사용될 수 있다. 일실시예에서, 각 부호어의 재정돈은 실행큐같은 데이타 구조를 사용함으로써 달성될 수 있으며 다수의 부호화된 데이타 흐름열의 사용과는 독립적이다.
재정돈 수행방법에 대하여 설명한다.
부호기에서 실행되는 첫째 재배정돈과정이 실행계수가 실행초기에(복호기가 복호화 과정에서 요구하는 것처럼) 결정되도록 실행계수 각각을 재정돈한다.
이 재정돈과정은 부호기의 실행이 종료될 때까지 실행계수(그리고 부호어)가 어떤 값을 갖는지를 결정하지 못하기 때문에 필요하다.
그러므로, 복호기가 데이타흐름열 속으로 실행계수를 다시 복호화할 수 있도록 데이터부호화과정으로부터 생성된 실행계수 결과는 재정돈된다.
제8도를 다시 참고하면, 본 발명의 재정돈장치(606)는 실행계수재정돈장치(801)와 비트팩장치(802)로 구성된다. 실행계수재정돈장치(801)는 시작신호(711), 종료신호(712), 색인신호(713) 및 부호어(714)를 구비하는 다수의 입력을 수신하기 위해 결합된다.
이러한 신호들은 제9도의 실행계수재정돈장치와 관련하여 더 상세히 설명될 것이다. 입력에 반응하여, 실행계수 재정돈장치(801)는 부호어(803)와 신호(804)를 발생시킨다. 신호(804)는 실행계수를 리셋트할 시기를 표시한다. 부호어(803)는 비트팩장치(803)에 의해 수신된다. 부호어(803)에 반응하여 비트팩장치(802)가 인터리브어(803)를 발생시킨다.
실행계수재정돈장치(801)와 비트팩장치(802)에 대하여 보다 상세히 설명한다.
[실행계수재정돈장치]
상기한 바와 같이, 부호어에 의해 부호화된 데이타의 시작 부분이 필요한 때에 복호기는 부호어를 수신한다.
그러나, 부호기는 부호어에 의해 부호화된 데이타의 끝부분까지 부호어의 존재를 알지 못한다.
실행계수재정돈장치(801)의 하나의 실시예에 대한 블럭도가 제9도에 도시된다.
도시된 실시예는 네개의 인터리브 흐름열을 수용한다. 여기서 각 인터리브어는 16비트이고 부호어는 하나의 비트부터 13개 비트까지 그 길이가 변화한다. 이러한 경우에, 재정돈장치(300)는 모든 데이타 흐름을 취급하기 위해 파이프 라인화된다.
더욱이, 확률클래스와 실행계수와 함께 결합시키는 부호기는 작동되는 실행계수의 최대수가 어떤 순간에도 작아지도록 사용되며, 본 실시예에 대해서 25라고 가정된다. 본 발명은 네 개의 인터리브 데이타 흐름, 16 비트의 인터리브어 또는 1 내지 13비트의 부호어길이에 한정되지 않으며, 그리고 16 비트 가량의 인터리브어와 1부터 13비트까지 연장되는 부호어길이를 갖는 이보다 많고 적은 데이타 흐름에 대하여도 사용될 수 있는 것이다
제9도를 참조하면, 포인터메모리(901)가 색인입력(713)을 받도록 결합되며 멀티 플렉서(MUX; 902) 하나의 입력에 연결된 어드레스 출력을 생성한다.
MUX(902)의 다른 2개의 입력은 헤드계수(903)로부터 헤드포인터 형태로 된 어드레스 및 꼬리계수(904)로부터 꼬리포인터 형태로 된 어드레스를 받도록 결합되어 있다.
MUX(902)의 출력은 부호어메모리(908)에 연결되고 이를 접근(access)하는데 사용되는 어드레스이다.
색인입력(713) 역시 MUX(905)에 입력으로 연결된다.
MUX(905)의 다른 입력은 부호어입력(714)에 연결된다.
MUX(905)의 출력은 유효검출모듈(906)의 입력 및 데이타버스(907)에 연결된다. 데이타버스(907)는 부호어메모리(908)와 MUX(905)의 입력에 연결된다.
데이타버스(907)에 또한 연결된 것은 제어모듈(909)의 출력이다.
제어모듈(909)의 입력을 분리시키기 위해 시작(스타트) 입력(711)과 종료(엔드) 입력(712)이 연결된다.
유효검출모듈(906)의 출력은 부호어출력(803)과 신호(804)(제9도)를 포함한다. 실행계수재정돈장치(801)는 제어로직(도시되지 않음)을 포함하여, 실행계수재정돈장치(801)의 여러 성분들의 작동을 조정한다.
반복을 위해 색인입력(713)은 실행을 확인한다. 일실시예에서, 그 색인은 25개의 확률클래스중 하나를 가르킨다. 그런 경우에는, 색인을 나타내기 위하여 5비트가 필요하다. 만일 확률클래스의 다중 뱅크가 사용된다면, 여분의 비트는 특정한 뱅크를 상술하기 위해 필요할 것임이 주목된다. 색인입력은 실행계수에 대한 확률클래스를 식별한다. 부호어입력(714)은 실행의 종료가 발생한 때는 부호어이고, 다른 경우에는 "관계없음(don't care)"이다. 시작입력(711)과 종료입력(712)은 실행이 시작인지 종료인지 또는 둘다인지의 여부를 가리키는 제어신호이다. 실행이 단일의 비코드화된 비트로 구성될 때, 동시에 시작하고 종료한다.
실행계수재정돈장치(801)는 그것의 입력신호에 대한 응답으로 그 비트발생기에 의해 발생된 실행계수를 재정돈한다. 부호어메모리(908)는 재정돈 기간동안 부호어를 저장한다. 일실시예에서, 부호어메모리(908)는 한때에 활성화될 수 있는 실행계수의 수보다 더 크다. 이것은 더 나은 압축을 이끈다. 만일 부호어메모리가 한때에 활성화될 수 있는 실행계수의 수보다 작다면, 이것은 실제적으로 메모리에 유지될 수 있는 수에 대한 활성실행계수의 수를 제한한다. 좋은 압축을 제공하는 시스템에 있어서, 긴 실행계수를 가진 한 부호어를 위한 데이타가 축적되는 동안 종종 짧은 실행계수를 가진 많은 부호어들이 시작할 것이다(그리고, 아마도 또한 종료한다). 이것은 완료되기 전에 강제로 긴 실행이 아웃되는 것을 피하기 위해 큰 메모리를 가질 것을 요구한다.
포인터메모리(901)는 실행중인 확률클래스의 부호어 메모리 위치의 주소를 저장하고, 랜덤억세스 형태로 부호어메모리(908)를 어드레스한다. 포인터 메모리(901)는 실행중인 각 확률 클래스에 대하여 부호어 메모리(908)내에 주소를 위한 저장위치를 가진다. 일단 특정한 확률클래스에 대한 실행이 완료하면 그 확률클래스에 대하여 포인터 메모리에 저장된 어드레스는 부호어 메모리(908)에 접근하는데 사용되며, 완전해진 부호어가 그 위치에서 부호어 메모리(908)로 쓰여진다. 그때까지, 부호어 메모리(908)안의 위치는 무효 엔트리를 포함한다. 그래서, 포인터 메모리(901)는 각 실행계수에 대한 무효 부호어의 위치를 저장한다.
머리(헤드)계수기(903)와 꼬리계수기(904) 또한 부호어 메모리(908)에 접근하기 위한 어드레스를 저장한다. 머리계수기(903)와 꼬리계수기(904)를 사용함으로써 부호어 메모리(908)가 큐 또는 순환버퍼(즉, FIFO 메모리)로써 어드레스 될 수 있게 한다. 꼬리계수기(904)는 부호어의 부호어 메모리(908)로의 삽입이 가능하도록 부호어 메모리(908)안의 다음 가능위치의 주소를 포함한다. 머리계수기(903)는 출력될 다음 부호어의 부호어 메모리(908)내의 주소를 포함한다. 다시 말해서 머리계수기(903)는 부호어메모리(908)로부터 지워질 다음 부호어의 부호어 메모리 주소를 포함한다. 포인터 메모리(901)안의 각 가능한 색인(예, 확률클래스)을 위한 위치는 꼬리계수기(904)가 실행이 종료될 때 목적부호어가 부호어 메모리(908)의 그 위치에 놓일 수 있도록 실행이 시작되는 곳에 기억되도록 사용된다.
제어모듈(909)은 엔트리가 유효부호어 데이타를 저장했는지의 여부를 나타내기 위해서 부호어 메모리(908)내에 저장된 데이타의 부분으로써 유효신호를 발생한다. 예를들어, 유효비트가 논리 1이라면, 그 부호어 메모리 위치는 무효데이타를 포함한다. 유효검출모듈(906)은 부호어 메모리(908)로부터 부호어가 판독될 때 마다 메모리 위치가 유효부호어를 포함하는지 여부를 판단한다. 일실시예에서, 유효검출모듈(906)은 메모리 위치가 유효부호어인지 특정무효 부호인지를 검출한다.
새로운 실행이 시작할 때, 무효데이타 엔트리는 부호어 메모리(908)에 넣어진다. 그 무효 데이타 엔트리는 부호어(코드워드) 메모리(908) 내에 저장된 데이타의 열에서 공간홀더로서의 역할을 하고 그래서 그 실행의 부호어는 실행이 완료될 때(복호기를 모델링하기 위한 정돈을 확실히 하기 위해) 메모리내의 정확한 위치에 저장된다. 일실시예에서, 그 무효데이타 엔트리는 멀티플렉스(905)를 통해 색인을 포함하고, 제어모듈(909)로부터 무효표시(예, 무효비트)를 포함한다. 무효엔트리가 저장된 부호어 메모리(908)안의 주소는 꼬리포인터(904)에 의해 주어지고, 순차적으로 부호어 메모리(908)안의 실행계수를 위한 위치의 암시로써 포인터 메모리(901)에 저장된다. 그 데이타의 암시는 완전해진 실행계수(예, 재정돈된 실행계수)로써 부호어메모리(908)안의 머리포인터(903)와 꼬리포인터(904) 사이에 나타난다. 무효메모리 위치의 최대수는 1이 실행계수의 수인 곳의 0에서 1-1이다. 부호어가 실행의 종료에서 완전해질 때, 실행계수는 포인터 메모리(901)안에 저장된 주소를 이용하여 부호어 메모리(908)에 채워진다.
실행이 시작될 때, 실행을 위한 색인은 부호어메모리(908)에 저장된다. 그래서 만일 부호어 메모리(908)의 실행이 아직 완전해지지 않았지만 가득 찼다면, 그 색인은 부합한 실행계수를 리셋하기 위하여 신호(804)와 함께 사용된다. 부호어 메모리(908)안에 부호어 또는 색인들을 저장하는데 덧붙여서 "유효" 비트로 불려지는 한 비트는 이들 2가지 종류의 데이타중 어느 것이 저장되는 것을 나타내는데 사용된다.
만일 실행의 끝 또는 시작이 아니라면, 그 실행계수 재정돈 장치는 사용되지 않는다. 만일 실행이 시작이지만 끝이 아니고 메모리가 찼다면, 부호어는 부호어 메모리(908)로부터 출력된다. 출력되는 부호어는 그 확률클래스에 대한 머리포인터(903)에 포함된 주소에 저장된 부호어이다. 그리고, 실행이 시작이지만 끝이 아니라면(메모리가 찼는지의 여부와 상관없이), 색인입력(713)은 꼬리포인터(904)에 의해 가리켜진 주소에 멀티플렉스(905)를 통해 부호어 메모리(908)로 쓰여진다. 꼬리포인터(904)는 색인입력(713)(예, 확률클래스를 위한 포인터 메모리(901)안의 위치에)의 데이타에 의해 가리켜진 주소에 포인터 메모리(901)로 쓰여진다. 꼬리포인터(904)가 쓰여진 후에, 꼬리포인터(904)는 증가된다.
만일 실행이 끝이지만 시작이 아니라면, 그 주소는 색인(확률클래스)에 부합하는 포인터 메모리(901)안에 저장된 주소는 판독되고 부호어 입력(714)의 완전해진 부호어를 저장하기 위해서 부호어 메모리안의 위치로써 사용된다.
만일 실행이 시작이고 끝이라면(즉, 실행이 동시에 시작하고 끝난다면), 그리고 메모리가 찼다면, 부호어는 부호어 메모리(908)로부터 출력된다. 그 다음에, 실행이 시작이고 끝이라면(메모리가 찼는지의 여부와 상관없이), 부호어 입력(714)은 꼬리포인터(904)에 의해 지정된 주소에 부호어 메모리(908)로 쓰여진다. 꼬리포인터(904)는 그리고 다음 가능위치(예, 1이 증가됨)를 포함하기 위하여 증가된다.
본 발명에 있어서, 실행계수재정돈장치(801)는 다른 시간에 부호어를 출력할 수 있다. 일실시예에서, 부호어들은 유효이거나 무효일 때 출력될 수 있다. 부호어는 만일 메모리가 꽉찬 상태가 존재하고 실행이 완전해지지 않았다면 무효일 때 출력될 수 있다. 무효부호어는 또한 최소비율(즉, 비율조절을 위해)을 획득하기 위하여 출력될 수 있다. 또한, 무효부호어는 모든 데이타가 실행계수 재정돈될 때 또는 그 실행계수재정돈 장치가 리셋동작의 결과로 부호어 메모리(908)의 중간중재자로 점프할 때, 부호어 메모리(908)를 플러시(flush)하기 위해서 출력될 수 있다.
그런 경우에, 복호기가 그 부호기가 이런 방식으로 동작함을 알아차려야만 한다.
상기한 바에 따라서, 부호어는 부호어 메모리(908)가 찰 때마다 출력된다. 일단 메모리가 차면, 부호어 메모리(908)로 입력(즉, 새로운 부호어가 시작될 때)될 때마다 부호어 메모리(908)로부터 출력에 기인하지 않음을 주목하라. 말하자면, 이전에 할당된 메모리 위치로 그 결과 부호어가 기록에 이어지는 실행의 완료는 메모리풀 출력이 발생하는 원인이 아니다. 유사하게, 실행이 끝나고 포인터 메모리(901)안의 부합된 주소와 머리계수기(903)안의 주소가 일치할 때, 부호어는 즉시 출력될 수 있고, 그 머리계수기(903)는 그 다음에 부호어 메모리(908)에 접근함없이 증가될 수 있다. 일실시예에서, 메모리풀 상태는 그 꼬리포인터가 증가된 후에 꼬리포인터(904)가 그 머리포인터(903)와 같을 때 발생한다. 그래서, 꼬리포인터(904)가 증가될 때마다, 상기 실행계수재정돈장치(801)안의 제어로직은 꼬리포인터(904)와 머리포인터(903)를 비교하고, 만일 같다면, 그 제어로직은 부호어메모리(908)가 찼다고 판단하여 부호어를 출력한다. 또 다른 실시예에서, 부호어는 메모리가 차기에 앞서 출력될 수 있다. 예를 들어, 머리(포인터)에 의해 지정된 큐부호에 유효부호어가 포함된다면, 그것은 출력될 수 있다. 이것은 거기에서 부호어의 상태를 결정하기 위해 큐의 시작이 반복적으로 검사되어야 함을 요구한다. 상기 부호어 메모리(908)가 파일의 부호화의 끝에서 비워짐을 주목하라.
실행계수재정돈장치(801)를 이용하면, 부호어는 머리포인터(903)에 의해 지정된 주소에 부호어 메모리(908)로부터 첫판독값(예, 데이타)에 의해 출력된다. 부호어의 출력은 제어로직을 이용하여 제어되고, 좌표지정된다. 유효검출모듈(906)은 부호어가 유효인지 여부를 결정하는 테스트를 이행한다. 다시 말하면, 유효검출모듈(906)은 부호어가 유효인지 여부를 판단한다. 일실시예에서, 유효검출모듈(906)은 각 엔트리를 저장한 유효비트의 체킹에 의해 어떤 엔트리의 유효치를 결정한다. 그 값이 부호어라면(즉, 부호어가 유효라면), 그 값은 부호어로써 출력된다. 다른말로, 만일 그 값이 부호어가 아니라면(즉, 부호어가 무효라면), 현재 실행계수만큼 긴 최소한 MPS의 실행을 가진 임의의 부호어가 출력될 수 있다. "0" 부호어는 정확히 말하면 지금까지는 현재 실행을 나타내고 출력될 수 있는 한 부호어이다. 출력된 후에, 메모리 포인터(903)는 부호어 메모리(908)안의 다음 위치로 증가된다(58-19 선택적으로 "IN"을 가진 최단 허용실행길이를 이용하여 복호기가 LPS를 방사하기 전에 부호어가 강제 출력됐는지를 체크하는 것을 허용한다).
일실시예에서, 실행계수재정돈장치(801)는 두 클럭순환시간으로 동작한다. 첫클럭순환에서, 입력은 실행계수재정돈장치(801)로 수신된다. 두번째 클럭순환에서, 부호어 메모리(908)로부터 출력이 발생한다.
머리포인터(903)가 유효부호어로 지정될 때마다 부호어가 출력되는 반면에, 버퍼가 찰 때 오직 부호어가 출력되는 것이 몇몇 이행에서 이루어질 수 있다. 이것은 그 시스템이 부호어의 수의 형태로 가변지연 대신 고정지연을 가지는 원인이 된다.
그래서, 부호어안에 상수지연이 있다. 재정돈지연이 다른 방법에서는, 예를 들어 부호화된 또는 원데이타의 수, 여전히 가변임을 주목하라. 메모리(908)가 출력이 만들어지기 전에 채우는 것을 허용함에 의해, 출력은 사이클당 부호어를 생산한다. 만일 부호어 메모리 위치가 무효로써 표시된다면, 그 비사용된 비트는 실행계수를 위한 것(즉, 그 위치를 채워야만 하는 문맥상자 또는 확률클래스가 거기에 저장된다)의 증명을 저장할 수 있다. 이 정보는 메모리가 가득찬 경우를 구동하는데 유용하다. 특히(명확하게), 그 정보는 이 특정실행길이의 부호어가 완료되지 않았고 이제 완료됨에 틀림없는 비트발생기에 나타내기 위해 사용될 수 있다. 이런 경우에서, 판단은 무효부호어를 출력시키고, 그리고 극성은 메모리 풀상태에 의해 발생될 수 있다. 그래서, 그 시스템이 실행계수기를 리셋할 때, 그 정보는 비트발생기와 시행계수에 의하여 그 시스템이 다시 시작될 때를 나타낸다.
색인입력에 관하여는, 확률클래스의 뱅크가 사용될 때 파이프라이닝 이유를 위하여 그 색인은 뱅크동일을 포함한다. 즉, 특정 확률클래스를 위하여 다중 실행계수가 존재할 수 있다. 예를들어, 두 실행계수가 80% 부호를 위해 사용될 수 있고, 그것의 하나가 사용된 후에 다른 것이 사용된다.
부호어가 가변길이기 때문에, 그들은 그들의 길이를 결정되는 것을 허용하는 방법으로 부호어 메모리(908)에 저장되어야 한다. 그 크기는 명백하게 저장하는 것이 가능한 반면에, 메모리 용량은 최소화되지 않는다. R-부호에서, 메모리에 제로값의 저장은 한 비트 "0"부호어를 나타낼 수 있고, "IN" 부호어는 우선 부호기가 첫번째 "1"비트로부터 길이를 결정하는데 사용될 수 있도록 저장될 수 있다.
만일 부호어 메모리(908)가 다중포트(예, 듀얼포트)된다면, 이 설계는 한 클럭사이클당 한 부호어가 구동되기 위하여 파이프 라인될 수 있다. 부호어 메모리(908)안의 어떤 위치라도 다중 포트로부터 접근될 수 있기 때문에, 부호어 메모리(908)안의 위치는 이를테면 부호 또는 부호어가 저장될 때, 또 다른 부분이 읽혀질 수 있는 동안, 이를테면 부호어가 출력될 때 기록될 수 있다. 그런 경우에 있어서, 멀티플레서는 다중데이타와 주소버스를 부양하기 위하여 수정되어야 함을 주목하라.
부호기가 "0"부호어를 출력하고 부호어 메모리가 차서 실행계수기를 리셋할 때마다, 복호기는 동일해야만 한다. 이것은 복호기가 부호기의 부호어 메모리 큐를 모델할 것을 요구한다. 이것이 이루어진 방법은 다음에 설명될 것이다.
CMOS 이행에서 전력을 이행하기 위하여 계수기가 "0" 부호어가 무효실행으로 출력될 때 "IN" 부호어는 억제될 수 있음을 주목하라. 이것은 복호화된 "IN" 부호어가 유효이기 때문이고, 반면에 오직 "0" 부호어만이 무효될 수 있다.
[문맥에 근거한 변형 실시예]
제10도는 문맥(확률클래스에 대립하는 것으로)에 따라서 수신된 데이타를 재정돈하는 실행계수재정돈장치의 또다른 실시예의 블럭도이다. 실행계수재정돈장치(1000)는 R-부호를 이용하여 재정돈을 이행한다. 제10도에서, 재정돈장치(1000)는 포인터메모리(1001)와 머리계수기(1002)와, 꼬리계수기(1003)와, 데이타 멀티 플렉서(MUX)(1004)와, 주소 MUX(1005)와, 연산길이블럭(1006)과, 유효검출블럭(1007)과 부호어 메모리(1008)를 포함한다. 부호어 메모리(1008)는 재정돈 동안 부호어를 저장한다. 포인터 메모리(1001)는 실행도중의 문맥상자를 위한 부호어 메모리 위치를 위한 주소를 저장한다. 머리계수기(1002)와 꼬리계수기(1003)는 부호어 메모리(1008)가 포인터메모리(1001)에 의한 랜덤억세스 형태로 지정됨에 더하여 큐 또는 순환버퍼로써 지정되도록 한다. R-부호를 위하여, 메모리에 제로값의 저장은한 비트 "0"부호어로 나타낼 수 있고, "IN" 부호어들은 우선 부호기가 첫번째 "1"비트로부터 길이를 결정할 수 있게 되도록 하기 위하여 저장될 수 있다. 연산길이모듈(1006)은 우선 부호기처럼 동작한다(만일 다른 가변길이 부호가 사용된다면, 명확하게 길이를 저장하기 위하여 log2비트를 추가하는 것보다 부호어의 시작을 표시하기 위하여 "1"비트를 추가하는 것이 메모리에 더 효율적이다). 시핸계수재정돈장치(1000)는 또한 그 성분(1001-1008)의 동작을 제어하고 조화시키는 뒷단 제어로직을 포함한다.
실행계수재정돈장치(1000)의 동작은 확률추정에 근거한 실행계수재정돈장치와 매우 유사하다. 새로운 실행이 시작되면, 문맥상자를 포함한 무효엔트리는 꼬리포인터(1003)에 의하여 지시된 주소에 부호어 메모리(1008)로 쓰여진다. 꼬리포인터(1003) 주소는 그 다음에 현재 실행계수의 문맥상자의 주소로 포인터 메모리(1001)안에 저장된다. 그 다음 꼬리포인터(1003)는 증가된다. 실행이 완료될 때, 실행계수에 부합하는 포인터 메모리(1001)안의 포인터는 포인터 메모리(1001)로부터 판독되고 그 부호어는 병렬로 부호어 메모리(1008)에 그 포인터에 의해 지정된 위치에 기록된다. 만일 실행의 시작 또는 끝이 모두 아니라면, 그리고 머리포인터(1002)의 주소에 의해 나타난 부호어 메모리(1008)안의 위치가 무효데이타를 포함하지 않는다면, 머리포인터에 의해 지정된 부호어는 판독되고 출력된다. 그 다음에 머리 포인터는 증가된다. 그 경우를 위해 실행이 동시에 시작되고 종료될 때, 부호어는 부호어 메모리(1008)에 꼬리포인터(1003)에 의해 지정된 주소로 쓰여지고 그 다음에 꼬리포인터(1003)는 증가된다.
유사하게, 실행이 끝나고 포인터 메모리(1001)안의 부합되는 주소와 머리계수기(1002)안의 주소가 같을 때, 부호어는 즉시 출력될 수 있고 머리계수기(1002)안의 값은 부호어 메모리(1008)에 접근함 없이 증가될 수 있다.
"문맥에 의한" 실행계수 시스템에서, 모든 문맥은 포인터 메모리(1001)안의 메모리위치를 요구한다. 그래서 BG와 PEM상태 메모리의 폭은 이 메모리를 충족시키기 위하여 확장 될수 있다. 포인터 메모리(1001)의 폭은 부호어 메모리 주소를 위하여 필요한 크기와 같다.
부호어 메모리(1008)안의 위치의 수는 특정한 실행에서 설계자에 의해 선택될 수 있다. 이 메모리의 제한된 크기는 압축효율이 감소되고, 그래서 비용/압축 교환이다. 그 부호 이 메모리의 폭은 유효/무효 표시를 위한 가장 큰 부호어 펄스 한 비트의 크기와 같다.
다음의 표 13에 보여준 R2(2) 부호를 이용한 예는 재정돈을 설명하는데 사용될 것이다.
표 14는 데이타가 문맥에 의해 라벨 붙여지고 재정돈(0=MPS, 더 가능한 부호 : 1=LPS, 덜 가능한 부호)되는 것을 보여준다. 단지 두 문맥상자이다. 비부호화된 비트번호는 비부호화된 비트클럭 사이클안의 회수를 나타낸다. 실행의 시작과 종료는 나타나고 부호어는 실행의 끝에 보여진다.
[표 13] R2(3) 코드
[표 14] 부호화될 데이타 예
데이타예의 재정돈동작 표 15에 보여진다. 이 예에서는 과포화되지 않을 정도로 충분히 큰 4개의 위치(0-3)를 가진 부호어 메모리가 사용된다. 어떤 문맥 또는 출력부호어를 위한 실행의 시작 또는 끝인 동작후의 시스템의 상태를 각열이 보여준다. "X"는 "don't care"인 메모리 위치를 나타내는데 사용된다. 실행이 끝난 부호화된 비트들중, 하나 이상의 부호어가 출력되고, 그것은 시스템 상태에서 서너개의 변경에 원인이 된다.
[표 15] 재정돈 동작의 예
표 15에서, 머리와 꼬리포인터는 제로로 초기화되고, 부호어 메모리(예, 큐)안에 아무것도 포함되지 않음을 나타낸다. 포인터메모리는 각 문맥에 하나씩인 두 개의 저장위치를 가진 것으로 나타난다. 각 위치는 비트 번호 1에 우선하여 "don't care" 값을 가진다. 상기 부호어 메모리는 4개의 부호어의 폭을 나타내고 모든 초기값을 "don't care"이다.
비트번호 1로 수신된 데이타에 대한 응답으로, 머리포인터는 부호어 메모리 위치 0을 가리키도록 유지한다. 복호기가 다음 데이타를 기대할 것이기 때문에, 다음 가능부호어 메모리 위치 0은 상기 부호어로 할당되고 무효값이 메모리 위치 0에 쓰여진다. 문맥이 제로이기 때문에, 부호어가 할당된 부호어 메모리 위치의 주소는 제로문맥(포인터 메모리 위치 0)을 위해 포인터 메모리 위치에 저장된다. 그래서, "0"은 포인터 메모리 위치 0에 저장된다. 상기 고리 포인터는 다음 부호어 메모리 위치 1로 증가된다.
비트번호 2에 부합하는 데이타에 대한 응답으로, 머리계수기는 첫번째 메모리 위치를 가리키도록 유지한다(출력없이 증가되었기 때문에, 상기 데이타가 두번째 문맥, 문맥 1에 부합되기 때문에, 다음 부호어메모리 위치는 또리 포인터에 의해 지시되는 한 부호어 메모리 위치 1로써 부호어에게 할당되고, 무효값이 쓰여진다. 그 주소, 부호어 위치 1은 문맥 1에 부합하는 포인터 메모리 위치로 쓰여진다. 즉, 두번째 부호어 메모리 위치의 주소는 포인터 메모리 위치 1로 쓰여진다. 그 다음에 꼬리포인터는 증가된다.
비트 번호 3에 부합되는 데이타에 대한 응답으로, 재정돈장치는 실행이 시작도 끝도 아니므로 사용되지 않는다.
비트 번호 4에 부합하는 데이타에 대한 응답으로, 실행의 끝은 문맥 1로 가리켜진다.
그래서 부호어 "101"은 문맥 1을 위해 포인터 메모리 위치에 의해 지시되는 한 문맥 1(부호어 메모리 위치 1)에 할당된 부호어 메모리 위치로 쓰여진다. 상기 머리와 꼬리포인터는 동일하게 유지되고, 문맥 1을 위한 포인터 메모리 위치안의 값은 다시 사용되지 않을 것이다. 그래서 "don't care"이다.
비트번호 5에 부합되는 데이타에 대한 응답으로, 재정돈장치는 실행이 시작 또는 끝이 아니므로 무효이다.
비트번호 6에 부합하는 데이타에 대한 응답으로, 비트 2를 위한 상기 설명된 것처럼 같은 종류의 동작이 발생한다.
비트번호 7에 부합하는 데이타에 대한 응답으로, 문맥 0을 위한 부호어를 위한 실행의 끝이 발생한다. 이 경우에서, 부호어 "0"은 문맥 0(포인터 메모리 위치 0)을 위한 포인터 메모리 위치에 의해 지시되는 한 상기 부호어 메모리 위치(부호어 메모리 위치 0)로 쓰여진다.
그 다음에 상기 포인터 메모리 위치안의 값은 다시 사용되지 않을 것이다. 그래서 그것은 "don't care"이다. 또한 머리포인터에 의해 지시된 부호어 메모리 위치는 유효데이타를 포함한다. 그래서, 상기 유효데이타는 출력되고 머리포인터는 증가된다. 머리포인터 증가는 그것이 유효부호어를 포함한 또 다른 부호어 메모리 위치를 가리키는 원인이 된다.
그래서, 이 부호어는 출력되고, 상기 머리포인터는 다시 증가된다. 이 예에서, 부호어 메모리가 완전히 찰 때의 대립으로써 그들이 가능할 때 부호어가 출력됨이 주목된다.
비 부호화된 비트를 통한 처리는 상기한 설명에 따른 발생이 계속된다. 부호어 메모리 위치가 특정한 문맥을 구비한 이용을 가리키지 않고 그래서 어떤 문맥으로부터의 부호어들도 데이타화일의 부호화 내내 특정 부호어 메모리 위치에 저장될 수 있음을 주목하라.
[비트팩 장치]
비트팩킹은 전에 재정돈장치에 의해 처리된 데이타 앞뒤로 비트팩킹을 보여주는 제4도에 설명한다. 제4도의 뒷부분에서 복호기에 의해 사용의 순서를 나타내는 1부터 16으로 된 16개의 가변길이 부호어가 보여진다. 모든 부호어는 세 개의 부호화된 열중 하나에 할당된다. 각 부호화된 열의 데이타는 인터리브어로 불려지는 고정길이어로 쪼개진다(단일 가변길이 부호어가 두 개의 인터리브어로 쪼개질 수 있음을 주목하라). 이 예에서, 인터리브어는 특정 인터리브어안의 첫번째 가변길이 부호어(또는 부분적인 부호어)의 순서가 인터리브어의 순서로 결정되도록 한개의 인터리브열로 정돈된다. 다른 종류의 정돈 기준으로 이행될 수 있다. 다중 부호화된 열을 인터리브 하는 잇점은 데이타를 전송하기 위한 단일 부호화된 데이타 채널이 이용될 수 있고, 가변길이 쉬프팅이 병렬 또는 파이프 라인으로 각 열을 위해 이행될 수 있다는 것이다.
본 발명의 비트팩 장치(802)는 실행계수재정돈장치(801)로부터 가변길이 부호어를 수신하고, 그들을 인터리브어로 팩한다. 비트팩장치(802)는 가변길이 부호어의 구동을 이행하는 논리와, 수정된 순서로 고정길이 인터리브어를 출력하는 병합된 큐 형태의 재정돈장치를 포함한다. 일실시예에서, 부호어가 클럭사이클당 한 부호어 위의 비율로 실행계수재정돈장치로부터 수신된다. 비트팩 장치(802)의 일실시예의 블럭도를 제11도에 보여준다. 다음의 실시예에서 4개의 인터리브열이 사용되고, 각 인터리브어는 16비트이고, 부호어는 하나로부터 13비트 길이로 변경된다. 일실시예에서, 단일비트팩 장치는 모든 열을 구동하기 위하여 파이프 라인된다. 본 발명에 의한 비트팩 장치(802)가 듀얼-포트 메모리(또는 레지스터 파일)를 사용한다면, 클럭사이클당 하나의 인터리브어를 출력할 수 있다. 이것은 여분의 부호기를 가지고 지속되기 위하여 요구된 것보다 더 빠를 수 있다.
제11도를 다시 보면, 비트팩 장치(802)는 팩킹논리(1101)와, 열계수기(1102)와, 메모리(1103)와, 꼬리포인터(1104)와 머리계수기(1105)를 포함한다. 열계수기(1102)는 또한 메모리(1103)와 연결된다. 또한 꼬리포인터(1104)와 머리계수기(1105)가 메모리와 연결된다.
열계수기(1102)는 현재 입력부호어와 연관된 인터리브 열의 트랙을 유지한다. 일 실시예에서, 열계수기(1102)는 반복적으로 0부터 N-1까지 열을 계수하며, 상기 N은 열의 수이다. 열계수기(1102)가 N-1에 도달할 때마다, 0 부터 다시 계수를 시작한다. 일실시예에서, 열계수기(1102)는 2-비트 계수기이고 0부터 3까지(4개의 인터리브열을 위하여) 계수한다. 일실시예에서 열계수기(1102)는 제로로 초기화된다(예를들어, 국부리셋을 통해서).
팩킹 논리(1101)는 현재 입력된 부호어를 인터리브어를 형성하기에 앞서서 입력부호어들로 병합한다. 부호어의 각 길이는 변경될 수 있다. 그래서, 패킹논리(1101)는 일련 가변길이 부호어들을 고정길이 부호어로 묶는다. 상기 패킹논리(1101)에 의해 생성된 인터리브어는 순서대로 메모리(1103)에 출력되고 그들이 출력될 우선시간까지 메모리(1103)에 저장된다. 일실시예에서, 메모리(1103)는 16비트어를 가진 고정랜덤 접근메모리(SRAM) 또는 레지스터 파일이다.
인터리브어는 메모리(1103)에 저장된다. 본 발명에 있어서, 메모리(1103)의 크기는 두 케이스들을 구동하기에 충분할 정도로 크다. 한 케이스는 하나의 인터리브열이 최소 길이 부호어를 가지고 다른 인터리브열이 최대 길이 부호어를 가지는 평균동작 케이스이다. 이 첫번째 케이스는 3×13=39개의 메모리 위치를 요구한다. 다른 케이스는 다시 하나의 열이 최소 길이 또는 짧은 부호어를 가지고 다른 것이 최대길이 또는 긴 부호어를 가지는 초기화케이스이다. 두번째 케이스에서, 2×3×13=78개의 기억위치가 필요한 반면에, PEM의 동작은 56의 꽉맞는 바운드를 허용한다.
열계수기(1102)와 꼬리포인터(1104)와 협동하여 메모리(1103)는 재정돈을 이행한다. 열계수기(1102)는 메모리(1103)에 수신되는 부호어의 현재열을 나타낸다. 각 인터리브열은 최소한 하나의 꼬리포인터와 관계된다. 꼬리포인터(1104)와 머리계수기(1105)는 부호어의 재정돈을 이행한다. 열당 두 개의 꼬리포인터를 구비한 이유는 인터리브어 N-1안의 데이타가 다음 부호어의 시작을 포함할 때 복호기에 의해 재요청되는 인터리브어 N에 의한다. 한 꼬리포인터는 주어진 인터리브열로부터 다음 인터리브어를 저장할 메모리(1103)내의 위치를 결정한다. 다른 꼬리포인터는 다음 하나의 인터리브어를 저장할 메모리의 위치를 결정한다. 이것은 인터리브터어 N의 위치가 인터리브어 N-1의 복호기가 재요청할 시간이 알려질 때 지정되도록 한다. 일실시예에서, 포인터들은 8개의 6-비트 레지스터(열당 두개의 꼬리포인터)이다.
일실시예에서, 부호화의 시작에서, 꼬리포인터(1104)는 첫번째 8개의 인터리브어(각 열로부터 두개)들이 메모리(1103)안에 각 열로부터 순서적으로 하나씩 저장되기 위하여 놓인다. 초기화 후에, 팩킹논리(1101)가 특정부호열을 위한 새 인터리브어를 시작할 때마다, "다음" 꼬리포인터는 "다음의 " 꼬리포인터의 값으로 지정되고, 상기 부호 열을 위한 "다음의" 꼬리포인터 다음 가능한 메모리 위치로 지정된다. 그래서, 각 열당 두개의 꼬리포인터가 있다. 또 다른 실시예에서, 각 열마다 단지 하나의 꼬리포인터가 사용되고 상기 꼬리포인터는 다음 인터리브어가 메모리(1103)내에 저장될 곳을 가리킨다.
머리계수기(1105)는 비트팩장치(802)로부터 출력될 다음 인터리브어의 기억위치를 결정하기 위하여 사용된다. 상기 설명된 실시예에서, 상기 머리계수기(1105)는 동시에 전체 인터리브어가 출력되기 위하여 증가되는 6-비트 계수기로 구성된다.
메모리(1103)는 재정돈을 위해 사용되는데에 더하여, 또한 부호기와 채널 사이의 FIFO 버퍼로써 사용될 수 있다. 그것은 재정돈을 위해 요구되는 메모리보다 더 커야 이루어지고, 그래서 FIFO-almost-full 신호는 채널이 부호기로써 지속될 수 없을 때 부호기를 시간지연시키기 위하여 사용될 수 있다. 사이클당 한 비트 부호기는 사이클당 하나의 인터리브어를 발생할 수 없다. 부호기가 채널로 잘 조화될 때, 채널은 인터리브어의 모든 사이클을 용인하지 않을 것이고, 몇몇 FIFO 버퍼가 필요하다. 예를들어, 16-비트 인터리브어 모든 32 클럭 사이클을 수락할 수 있는 채널은 압축비가 2 : 1 이상이었을 때 2 : 1의 효과적인 대역폭확장으로 잘 조화된 설계이어야 한다.
[본 발명에 의한 팩킹 논리]
팩킹논리의 블럭도를 제12도에 보여준다. 제12도를 보면, 팩킹논리(1101)는 크기장치(1201)와, 어큐뮬레이터의 집합(1202)과, 쉬프터(1203)와, MUX(1204)와, 레지스터의 집합(1205)과, OR 게이트논리(1206)를 구비한다. 크기장치(1201)는 부호어가 수신되도록 연결되고 어큐뮬레이터(1202)와 연결된다. 상기 부호어 뿐만 아니라 어큐뮬레이터는 쉬프터(1203)와 연결된다. 쉬프터(1203)는 MUX(1204)와 OR 게이트 논리(1206)와 연결된다.
상기 레지스터 또한 OR 게이트 논리(1206)와 연결된다.
일실시예에서, 부호어는 사용되지 않는 비트는 제로로된 13-비트 버스로 입력된다. 이 제로로된 비사용된 비트는 크기장치(1201)안의 우선부호기가 "IN" 부호어의 길이를 결정하는데 사용될 수 있고, "0" 부호어를 위한 크기를 생성할 수 있도록 "IN" 부호어안의 "1"안에 인접한다.
어큐뮬레이터(1202)는 각 인터리브열에 하나씩인 다수의 어큐뮬레이터로 구성된다. 각 인터리브열을 위한 어큐뮬레이터는 이미 현재 인터리브어안의 비트수의 레코드를 획득한다. 일 실시예에서, 각 어큐뮬레이터는 4-비트 가산기(with carry out)와 각 열을 위해 사용되는 4-비트 레지스터를 구비한다. 일 실시예에서, 상기 가산기의 출력은 어큐뮬레이터의 출력이다. 또다른 실시예에서, 상기 레지스터의 출력이 어큐뮬레이터의 출력이다. 크기장치(1201)로부터 수신되는 부호어의 크기를 이용하여, 어큐뮬레이터는 그 열을 위한 현재 인터리브어를 포함한 레지스터로 현재 부호어를 잇기 위해서 쉬프트할 비트수를 결정한다.
어큐뮬레이터의 현재값에 근거하여, 상기 쉬프터(1203)는 그것이 우선적으로 그 인터리브어안의 어떤 우선 부호어를 따르기 위해 현재 부호어를 할당한다. 그래서 부호기안의 데이타는 복호기순서로 쉬프트된다. 쉬프터(1203)의 출력은 28 비트이고, 그것은 13-비트 부호어가 현재 인터리브어안의 15-비트로 부가되어야 할 경우에 구동한다. 그래서 현재 부호어로부터 비트는 출력될 28비트의 12비트 높게 된다. 쉬프터(1203)가 궤환없이 구동되고 그래서 파이프라인 될 수 있음을 주목하라. 일실시예에서, 쉬프터(1203)는 원통쉬프터를 구비한다.
레지스터(1205)는 현재 인터리브어의 비트를 저장한다. 일실시예에서, 각 인터리브열을 위한 16-비트 레지스터는 현재 인터리브어에 우선 비트를 홀드한다.
처음에, 열의 부호어는 쉬프터(1203)에 의해 수신되고, 반면에 크기 장치(1201)는 열에 부합하는 어큐뮬레이터로 부호어의 크기를 나타낸다. 어큐뮬레이터는 국부리셋을 통해 제로로 지정된 초기화값을 가진다. 어큐뮬레이터가 제로이기 때문에, 부호어는 쉬프트되지 않고, 그 다음에 열에 부합하는 레지스터의 내용을 가진 OR 논리(1206)를 이용하여 OR된다. 그러나, 몇몇 실시예에서는 IN부호어는 인터리브어의 시작에서 조차 우선적으로 할당되기 위하여 쉬프트되어야 한다. 이 레지스터는 제로로 초기화되고, 그래서 OR동작의 결과는 부호어가 OR 논리(1206)의 결과로 최적(right-most) 비트 위치로 넣어지는 것이고, MUX(1204)를 통해 열로부터 다음 부호어까지 저장하기 위하여 레지스터로 궤환된다. 그래서, 초기에 쉬프터(1203)는 통과로 동작한다. 첫번째 부호어안의 비트의 수는 이제 어큐뮬레이터내에 저장된다. 그 열의 다음 부호어가 수신되면 어큐뮬레이터안의 상기 값은 쉬프터(1203)로 보내지고 부호어는 인터리브어내의 어떤 우선적인 입력비트로 병합하기 위한 비트의 수로 왼쪽으로 쉬프트된다. 쉬프트된 어의 다른 비트위치에 제로가 놓여진다. 그 열에 부합하는 레지스터로부터의 비트들은 OR 논리(1206)를 이용하여 쉬프터(1203)로부터의 비트와 병합된다. 만일 어큐뮬레이터가 이행표시(예, 신호)를 생산하지 않는다면, 더 많은 비트가 현재 인터리브어를 완료하기 위하여 요구되고, OR 동작의 결과 데이타는 MUX(1204)를 통하여 레지스터로 다시 저장된다.
일실시예에서, MUX(1204)는 2 : 1 멀티플렉서로 구성된다. 어큐뮬레이터가 이행을 생성할 때, OR 논리(1206)로부터의 OR된 데이타의 16비트는 완료된 인터리브어이고 그 다음에 출력된다. MUX(1204)는 레지스터가 첫 16 이후의 어떤 추가된 비트(예, 12비트 이상 28 비트 이하가 쉬프터(1203)로부터 출력된다)를 로드하는 원인이 되고, 나머지는 제로로 채운다.
MUX(1204)와 인터리브어의 출력의 제어는 어큐뮬레이터로부터의 이행신호로 된다. 일 실시예에서, 멀티프렉서(1204)는 항상 제로로 출력되는 하나를 가진 입력중 4개를 구비한 16개의 2 : 1 멀티플렉서로 구성된다.
[재정돈 옵션]
본 발명은 데이타의 재정돈을 이행하기 위하여 다수개의 옵션을 제공한다. 예를들어, 다중 부호열을 가진 시스템에 있어서, 부호열들은 제4도에 보인 인터리브어들로 재정돈되어야 한다. 본 발명은 인터리브어로 재정돈을 완성하기 위한 수많은 방법을 제공한다.
인터리브어로 데이타를 재정돈하는 한 방법은 제25도에 보여진 것처럼 스누퍼복호기를 사용한 것이다. 제25도를 보면, 다수의 실행계수재정돈 장치(2501A-n)는 부호어 열과 함께 부호어 정보가 수신되도록 연결된다. 각 부호어 출력과 크기 출력이 발생하고, 분할된 비트팩킹 논리(1101)장치, 예컨대 비트팩킹장치(2502A-n)는 부호어가 출력되도록 연결되고, 크기는 상기 실행계수재정돈장치(2501A-n)중 하나로부터 출력된다. 비트팩킹 논리장치(2502A-n)는 MUX(2503)와 스누퍼복호기(2504)에 연결되어 인터리브어를 출력한다. 복호기(2504)는 MUX로 수신되고 부호열로 출력될 인터리브어가 MUX(2503)에 나타나는 선택제어신호를 제공한다.
각 부호화된 데이타열은 제8도의 실행계수재정돈장치(801)를 구비한 실행계수재정돈장치를 가진다. 각 비트팩 장치는 가변길이 부호어를 고정크기 인터리브어, 아마 단어당 8, 16, 또는 32 비트로 병합한다. 상기에 설명한 것처럼 각 비트팩장치는 레지스터들과 쉬프팅회로를 포함한다. 복호기(2504)는 모든 비트팩장치로부터(제25도에 보여주는 분할된 버스들로 또는 보통버스를 통하여) 인터리브어로 접근하는 충분히 사용할 수 있는 복호기(BG, PEM, CM을 포함한)를 구비한다. 복호기(2504)가 비트팩 장치들중 하나로부터 인터리브어가 선택될 때마다. 그 단어는 부호열로 전송된다. 순시하는 끝에 상기 복호기가 상기 동일한 스누퍼복호기처럼 같은 순서로 데이타를 요청할 것이므로, 그 인터리브어는 적당한 순서로 전송된다.
스누퍼복호기를 가진 부호기는 반이중 시스템에서 유혹적일지도 모르고, 그리고 스누퍼복호기는 또한 보통 복호기로써 사용될 수 있다. 스누퍼복호기 접근의 잇점은 어떤 결정론적인 복호기와도 호환할 수 있는 것이다. 다음에 설명되는 스누퍼복호기에 의존함 없는 대체 해결법은 하드웨어비용을 감소하기 위하여 복호기의 간단한 모델을 사용한다. 같은 클럭사이클에서 다수의 부호어를 복호화하는 복호기에 대하여 복호기 그 자체보다 하드웨어가 적은 복호기를 모델링하는 것이 불가능하며 이는 스누퍼복호기의 사용을 요구한다.
후술하는 바와 같이 단지 사이클당 기껏해야 하나의 부호어를 복호화하는 복호기의 간단한 모델이 존재한다.
기껏해야 사이클당 하나의 부호어를 복호화하는 파이프라인된 복호기 시스템의 데이타를 재정돈하는 또 다른 기술은 부호화된 데이타의 복호기의 재요청모델에 필요한 유일한 정보는 부호어(독립적으로 각 부호화된 데이타 열을 위한 부호어가 아니라 모든 부호어들을 고려한)의 순서를 아는 것이란 사실에 근거한다. 그것이 실행 계수재정돈장치에 들어갈 때 시간스탬프(time stamp)가 각 부호어와 연결된다면, 비트팩된 인터리브어가 그것과 연관된 오래된 시간스탬프를 가지던지간에 그것은 출력될 다음 인터리브 부호어이다.
전형적인 부호기를 재정돈하는 장치는 제26도의 블럭형태이다. 제26도에서, 부호화시스템은 시간 stamp 정보가 각 실행계수재정돈장치(2501A-n)에서도 수신됨을 제외하고 제25도에 설명된 것과 동일하다. 이 시간 스템프정보는 또한 비트팩장치(2502A-n)로 향한다. 비트팩장치(2502A-n)는 인터리브어를 MUX(2503)로 제공하고 그것과 연관된 시간 스템프를 놀리(2601)로 제공한다. 논리(2601)는 제어신호를 부호열로 출력될 그 인터리브어를 선택하기 위해서 MUX(2503)로 제공한다.
일실시예에서, 스누퍼복호기는 가장 오래된 시간 스템프를 가진 부호어(또는 부호어의 일부)를 가진 비트팩장치(2502A-n)를 결정하는 간단한 비교에 의해 교체된다. 그런 시스템은 시간 스템프를 가진 다수의 큐로써 MUX(2503)로 나타난다. 논리(2601)는 간단하게 다양한 큐들 사이에서 선택한다. 각 실행계수재정돈장치(1503A-n)의 논리는 오직 실행이 시작될 때 시간 스템프를 쓰기 위해서(실행 계수 재정돈장치(801)로부터) 근소하게 변경된다. 각 실행계수 재정돈장치(2501A-n)는 부호어메모리내에 시간 스템프를 저장하기 위하여 갖추어져 있다. 모든 부호어를 낱낱이 열거하기에 충분한 비트를 가지고 시간 스템프를 저장하는 것이 효과적이지만, 몇몇 실시예에서, 더 적은 수의 비트가 사용된다.
시간 스템프를 가진 다수의 큐를 사용한 단계의 간단한 묘사를 다음에 보인다. 그 묘사는 당업자에게는 용이하게 인식될 수 있다. 이것은 그 부호기의 동작이다. 같은 부호어에 의해 실행이 시작되고 끝난 경우에 간단하게 끝나지 않는다. 그 동안은 각 부호화된 기호(비록 연습에서 모든 체크가 만들어질 필요는 없지만)를 위해 검사될 수 있다. 인터리브어는 크기에서 32비트로 된 것으로 간주한다.
프로그램
복호기 동작은 비록 부호어가 큐에 저장될 필요가 없지만 유사하다. 큐에서 부호어의 시간 스템프를 저장하는 것은 여전히 필요하다.
상기에 설명된 시간 스템프의 함수는 부호어의 순서정보가 저장되는데 사용된다. 같은 개념을 표현하는 동등한 방법은 모든 부호어를 위한 큐, 즉 병합된 큐의 사용에 의한다. 병합된큐 큐시스템에서, 제27도에 나타난 것처럼, 단일 실행계수재정돈장치(2701)는 모든 인터리브열들을 위해 사용된다. 실행계수재정돈장치(2701)는 부호어를 발생하고, 크기와 열은 비트팩장치(2502A-n)로 출력되고, 비트팩장치는 인터리브어를 MUX(2053)로 출력하고, 위치정보를 논리(2702)로 출력한다. 상기 MUX(2503)는 인터리브어를 부호열의 일부로써 출력한다.
임의의 열에 대해 실행계수재정돈 메모리는 각 부호의 인터리브열(ID)을 저장한다. 각 인터리브열은 자신의 머리 포인터를 가진다.
비드 패킹 장치가 보다 많은 데이타를 필요로 하는 경우 해당하는 헤드 포인터는 새로운 인터리브어를 형성하는데 필요한 가능한 많은 부호어를 불러오는데 사용된다.
이는 어느 것이 적절한 열부분인지 결정하기 위하여 많은 부호어메모리 위치를 살펴봄을 포함한다.
선택적으로 이는 연결된 리스트를 이행하기 위하여 부가적인 필드에 대한 부호어메모리를 살펴봄을 포함할 수 있다.
본 발명에서의 인터리브방법은 고정열 배당을 갖는 병합큐를 사용한다. 이 방법은 병합큐 케이스에서와 같이 하나의 꼬리포인터를 사용하기 때문에 시간 스템프를 필요로 하지 않는다. 또한 앞서의 경우에서와 같이 다중 헤드(머리) 포인터를 사용하기 때문에 특정열로부터 데이타를 출력시키는데 있어서 오버헤드가 없다.
이를 위하여 다음 롤에 따라 인터리브열에의 부호어 할당이 수행된다. N열에 대하여 : 열 M mod N에 부호어 M이 부여된다.
인터리브열은 이 방법에 따라 어떠한 문맥 상자나 확률클래스로부터 부호어를 가질 수 있다는 것이 주목된다.
열의 수가 2(power of two)라면, M mod N은 보다 많은 현저한 비트들중 몇몇을 제거하여 계산될 수 있다.
예를 들어 부호어 재정돈메모리가 12 비트로 어드레스되고 4 인터리브열이 사용되는 것을 가정한다.
꼬리포인터의 길이는 12비트이며 2개의 가장 덜 현저한 비트가 다음 부호어 부호화열을 식별한다.
10비트를 갖는 4개의 머리 포인터는 각각 2개의 가장 덜 현저한 비트를 4개의 가능한 조합 각각에 묵시적으로 할당한다. 꼬리 및 머리 포인터 모두는 정상 2진 계수로서 증분된다.
복호기에 있어서, 시프터는 인터리브어를 저장하기 위한 레지스터를 갖는다.
이 시프터들은 적절히 배열된 부호화된 데이타를 비트발생기로 보낸다.
이 비트발생기들이 몇몇 부호화된 데이타를 사용할 때 이는 시프터에게 알려진다.
상기 시프터는 적절히 배열된 데이타를 다음 인터리브열로부터 전달한다.
만일 부호화된 데이타 열의 수가 N이라면, 시프터는 사용된 데이타를 이동시키기 위해 N-1 클럭사이클을 가지고 특정 인터리브열을 다시 사용하기 전에 다른 인터리브 부호어를 요청한다.
[본 발명의 복호기]
본 발명은 제한된 재정돈메모리를 갖는 실시간 부호기를 지원하는 복호기를 포함한다.
일실시예에 있어서 이 복호기는 또한 각 문맥상자 대신 각 확률클래스에 대한 실행계수를 유지함으로서 메모리 요구 및 복잡성을 감소시킨다.
[본 발명의 복호기시스템의 일 실시예]
제14a도를 본 발명의 복호기 하드웨어시스템의 일실시예에 관한 블럭도를 예시한 것이다.
제14a도는 참고하면, 복호기시스템(1400)은 최선-인(first-in)/최선-아웃(first-out)(FIFO) 구조(1401), 복호기(1402), 메모리(1403) 및 문맥모델(1404)을 포함한다. 복호기(602)는 다중복호기를 포함한다.
부호화된 데이타(1410)는 FIFO구조(1410)에 의해 수용되게 연결된다. FIFO구조(1401)는 복호기(1402)에 부호화된 데이타를 공급하도록 연결된다.
복호기(1402)는 메모리(1403) 및 문맥모델(1404)에 연결된다.
문맥모델(1404)은 또한 메모리(1403)에 연결된다.
문맥모델(604)의 출력은 복호화데이타(1411)를 포함한다.
시스템(1400)에서, FIFO구조(1401)에 입력된 부호화된 데이타(1410)는 정돈되고 인터리브된다.
FIFO구조(1401)는 적절한 배열로 데이타를 포함한다.
상기 열은 복호기(1402)로 이송된다.
복호기(1402)는 이들 열로부터 병렬 및 결정 배열로 된 데이타를 필요로 한다.
복호기(1402)가 부호화된 데이타를 필요로 하는 배열은 비사소한 것(non-trivial)이나 랜덤은 아니다.
복호기 대신 부호기에서 이 배열로 부호어를 배열함으로써 부호화된 데이타는 단일열로 인터리브될 수 있는 것이다.
다른 실시예에 있어서, 부호화된 데이타(1410)는 단일 열의 비-인터리브 데이타를 포함하며, 여기서는 각 문맥상자, 이 문맥클래스 혹은 확률클래스에 대한 데이타가 데이타 열에 부착되어 있다.
이 경우에 있어서는 FIFO(1410)가 데이타가 적절히 분획될 수 있도록 데이타를 복호기(1402)로 보내기 전에 모든 부호화된 데이타를 수용하기 위해 저장부위(1410)으로 대체된다.
부호화된 데이타(1410)가 FIFO(1401)로 수용됨에 따라 문맥모델(1404)은 현재의 문맥상자를 측정한다.
일실시예에 있어서, 문맥모델(1404)은 앞서의 화소(pixels) 및/혹은 비트를 근서로 현재의 문맥상자를 결정한다.
도시되지는 않았으나 문맥모델(1404)에 대하여 라인 버퍼링을 포함시킬 수 있다.
라인버퍼링은 필요한 데이타를 제공하고 혹은 복제함으로써 문맥모델(1404)이 현재의 문맥상자를 결정한다.
예를 들어 문맥이 현재의 화소 부근에 있는 화소값을 근거로 하는 경우 특정 문맥을 제공하는데 사용되는 부근에 있는 화소들의 화소값을 저장하기 위해 라인버퍼링을 사용할 수 있다.
문맥 상자에 응답하여, 복호기시스템(1400)은 메모리(1403)로부터 현재의 문맥상자에 대한 복호기 상태를 불러오게 할 수 있다.
일실시예에 있어서, 이 복호기 상태는 확률추정모듈(PEM) 상태와 비트발생기 상태를 포함한다.
PEM상태는 새로운 부호어를 복호화하는 경우에 어느 부호를 사용할지를 결정한다.
한편 비트발생기 상태는 현재 실행에서 비트의 기록을 유지한다. 이 상태는 문맥 모델(1404)이 제공한 어드레스에 응답하여 메모리(1403)로부터 복호기(1402)로 제공된다.
상기 어드레스는 상기 문맥 상자에 해당하는 정보를 저장하는 메모리(1403) 내의 위치에 접근한다.
일단 현재 문맥상자에 대한 복호기상태가 메모리(1403)로부터 호출되면, 시스템(1400)은 다음의 미압축된 비트를 결정하고, 복호기상태를 프로세싱한다. 그 후 복호기(1402)는 새로운 부호어를 복호화하고, 필요하면, 실행계수를 갱신한다.
상기 비트 발생상태 뿐만 아니라 필요하면 PEM 상태가 업데이트된다. 그후, 복호기(1402)는 새로운 부호상태를 메모리(1403)에 기재한다.
제14b도는 본 발명의 복호기의 일실시예를 예시한 것이다.
제14b도는 참조하면, 복호기는 시프팅 논리(1431), 비트발생논리(1432), "뉴(New) K" 논리(1433), PEM 업데이트논리(1434), 뉴(New) 부호어논리(1435), PEM 상태-캐쉬논리(1436), 코드-마스크 논리(1437), 코드-MaxPL, 마스크 및 P3 슬릿(Slit) 확장논리(1438), 복호기논리(1439), 멀티플렉서(1440), 및 실행계수 업데이트논리(1441)를 포함한다.
시프팅논리(1431)는 상태입력(1442) 뿐만 아니라 부호화된 데이타입력(1443)을(메모리로부터) 받도록 연결되어 있다.
시프팅논리(1431)의 출력은 또한 입력으로써 비트 발생논리 1432, "뉴-K" 발생논리(1433) 및 PEM 업데이타논리(1434)에 연결된다.
비트발생논리(1432)는 또한 상태입력(1442)을 받고 복호화된 데이타 출력을 생성하도록 문맥모델에 연결되어 있다.
뉴-K 논리(1433)는 코드-마스크 논리(1437)의 입력에 연결된 출력을 발생시킨다.
PEM 업데이트논리(1434)는 또한 상태입력(1442)에 연결되어 상태출력(메모리에 대한)을 생성한다.
상태입력(1442)은 또한 뉴-부본어논리(1435)와 PEM 상태-코드논리(1436)의 입력에 연련되어 있다. PEM 상태-코드논리(1436)의 출력은 학장살리(1438)에 의해 수용하게 연결되어 있어 확장논리(1438)의 출력은 복호논리(1439) 및 실행계수 업데이트논리(1441)에 연결되어 있다.
복호논리에 대한 다른 입력은 코드-마스크(1437)의 출력에 연결되어 있다.
복호논리(1439)의 출력은 MUX(1440)의 하나의 입력에 연결되어 있다. MUX(1440)의 다른 입력은 상태입력(1442)에 연결되어 있다. MUX(1440)의 선택입력은 뉴 부호어 논리(1435)의 출력에 연결되어 있다.
MUX(1440) 및 확장논리(1438)의 출력은 코드-마스크 논리(1437)의 축력과 함께 실행계수 업데이트논리(1441)의 2개의 입력에 연결되어 있다.
실행계수 업데이트논리(1441)의 출력은 메모리에 대한 상태 출력에 포함한다.
시프팅논리(1431)는 부호데이타열로부터 데이타를 이동시킨다.
부호화된 데이타 입력과 상태 입력을 기준으로, 비트발생논리(1432)는 문맥모델에 대하여 복호화된 데이타를 발생한다.
뉴-K 논리(1433) 역시 쉬프트인 데이타(Shifted in data)와 상태입력을 이용하여 새로운 값의 K를 발생한다.
일실시예에서, 뉴 K 논리(1433)는 PEM상태 및 부호화된 데이타의 제1비트를 이용하여 새로운 K값을 발생한다.
이 새로운 K값을 기준으로 코드-마스크 논리(1437)는 다음 부호어에 대한 RLZ 마스크를 생성한다.
이 RLZ 마스크는 복호논리(709)와 실행계수 업데이트논리(1441)로 보내진다.
PEM 업데이트논리(1434)는 PEM 상태를 업데이트 한다.
일실시예에서, PEM 상태는 현재 상태를 이용하여 업데이트 한다. 업데이트된 상태는 메모리로 보내진다.
새로운 부호어논리(1435)는 새로운 부호어가 필요한지 여부를 결정한다.
PEM 상태-코드논리(1436)는 상태입력(1442)을 이용하여 복호화용 코드를 결정한다.
이 부호는 확장논리(1438)에 입력되어 최대 실행길이, 현재의 마스크 및 R3 스프릿트값을 생성한다.
복호논리(1439)는 부호어를 복호화하여 실행계수출력을 생성한다. MUX(1440)은 복호논리(1439)로부터의 출력이나 실행계수 업데이트논리(1441)로의 상태입력(1442)을 선택한다. 실행계수 업데이트논리(1441)는 실행계수를 업데이트 한다.
본 발명의 복호기(1430)를 포함한 복호화시스템(1400)은 파이프라인방식으로 동작한다.
일실시예에 있어서, 본 발명의 복호화시스템(600)은 모두 파이프라인방식으로 문맥상자를 결정하고 확률을 추정하며, 부호어를 복호화하며 실행계수로부터 비트를 생성한다.
복호화시스템의 파이프라인 구조의 일실시예를 제15a도에 도시하였다. 제15a도를 참조하면, 본 발명의 파이프라인된 복호화 과정의 일실시예를 1-6의 6단계로 도시하였다.
제1단계에서 현재의 문맥상자가 결정된다(1501).
제2단계에서는 문맥상자가 결정된 후 문맥상자에 대한 현재의 복호기상태가 메모리로부터 호출되는 메모리판독이 일어난다(1502). 상기한 바와 같이 복호기상태는 PEM상태와 비트발생기상태를 포함한다.
제3단계에서는 복구된 비트가 생성되며(1503), 이에 따라 비트가 문맥모델에 사용가능하게 된다.
제3단계 동안에는 2개의 다른 동작이 수행된다.
PEM상태가 부호형태로 변환되고(1504) 새로운 부호어가 복호화되어야 하는지 여부에 대한 결정(1505)이 제3단계에서 일어나는 것이다.
제4단계 동안에는, 복호화시스템이 부호어를 처리하고 그리고/또는 실행계수를 업데이트한다(1506).
이 과정에는 여러 가지 보조-동작이 관여된다.
예를 들어 다음 실행계수를 결정하기 위해 부호어가 복호화되거나 혹은 현재의 부호에 대하여 실행계수가 업데이트된다(1506).
새로운 부호어를 복호화할 때 필요하면 보다 많은 부호화데이타가 입력 FIFO로부터 호출된다.
제4단계에서의 다른 보조-동작은 PEM상태를 업데이트 하는 것이다(1507).
마지막으로 제4단계에서는 현재 부호어의 실행계수가 0이라면 다음 부호에 대하여 실행길이 제로 부호어가 무엇인지를 결정하는데 새로운 PEM상태가 사용된다.
본 발명의 복호화 파이프라인의 제5단계 동안에는 업데이트된 PEM상태를 갖는 복호기상태가 메모리내에 기재되고(1509), 다음 부호어에 대한 시프팅이 시작된다(1510).
제6단계에서는 다음 부호어에 대한 시프팅이 완료된다(1510).
본 발명의 파이프 라인된 복호화는 실제 복호화 처리를 시작할 것인지에 대한 결정으로 시작한다.
이 결정은 본 발명의 복호기에 충분한 데이타가 존재하는지 여부에 달려있다.
FIFO로부터의 충분한 데이타가 없다면, 복호화시스템은 가동하지 않는다.
다른 경우에 있어서, 복호기로부터 모든 데이타 출력을 받을 수 없는 주변장치에 복호화된 데이타를 출력할 때에도 이 복호화 시스템은 정지될 수 있다.
예를 들어 복호기가 비데오 디스플레이 인터페이스 및 이에 관련된 비데오회로에 출력을 제공할 때 이 비데오는 아주 느릴 수 있으며, 이때 복호기는 비데오를 따라 가기 위해 정지할(stall)필요가 있는 것이다.
복호화 처리개시에 대한 결정이 일단 이루어지면, 현재의 문맥상자가 문맥모델에 의해 결정된다.
본 발명에서는, 앞서의 데이타를 검사함으로써 현재의 문맥 상자가 확인된다.
이같은 앞서의 데이타는 라인 버퍼내에 저장될 수 있으며 현재의 라인 및/또는 앞서의 라인으로부터 온 데이타를 포함한다.
예를 들어, 문맥 본형에서, 주어진 비트에 대한 경우, 라인 버퍼로부터의 비트는 앞서의 데이타에 관한 본형을 이용하여 설계가능하며, 현재 데이타에 대한 문맥상자가 시험되는 앞서의 데이타가 그 본형과 일치하는지 여부에 따라 선택된다.
이를 라인 버퍼는 비트 쉬프트 레지스터를 포함할 수 있다.
n-비트 화상의 각 비트평면에 대하여 하나의 본형을 사용할 수 있다.
일실시예에 있어서, 문맥상자는 다음 파이프 라인 단계동안 어드레스를 메모리에 출력함으로써 선택된다.
이 어드레스는 비트평면을 식별하기 위해 3비트와 같이 미리 정해진 비트수를 포함한다.
3비트를 사용함으로써, 화소데이타내의 비트위치를 식별할수 있다.
문맥을 결정하는데 사용되는 본형(template)은 어드레스의 일부로써 나타낼 수도 있다.
비트평면을 식별하는데 사용되는 비트의 본형을 식별하는 비트는 합해져서 이들 비트로 정해진 문맥상자에 대한 상태정보를 합유하는 메모리내의 특정위치에 대한 어드레스를 만들 수도 있다.
예를 들어 특정호소내의 비트위치를 결정하기 위한 3비트와 본형에서 앞서의 화소 각각에서 같은 위치에 있는 10개의 앞서의 비트를 이용함으로써, 13-비트 문맥 어드레스를 생성할 수 있는 것이다.
문맥 모델에 의해 생성된 어드레스를 이용하여, 메모리(예컨대 RAM)를 억세스하여 상태정보를 얻을 수 있다.
이 상태는 PEM 상태를 포함한다.
PEM 상태는 현재의 확률 추정을 포함한다.
하나 이상의 상태가 같은 코드를 사용하기 때문에, PEM 상태는 확률 클래스나 코드지정을 포함하지 않으며, 차라리 제5도에 도시된 표와 같은 표내의 색인을 포함한다.
또한 제5도의 표를 사용할 때에는 PEM 상태는 현재의 PEM 상태가 표의 +혹은 -축에 있는지 여부를 식별하는 수단으로써 가장 가능성 있는 기호(MPS)를 제공한다.
비트 발생상태는 계수값과 LPS가 존재하는지의 지시를 포함할 수 있다.
일실시예에서, 현재 실행에 대한 MPS 값 역시 다음 부호어를 복호화하기 위해 포함된다.
본 발명에서는 실행계수에 필요한 공간을 줄이기 위해 메모리내에 비트발생기 상태를 저장한다.
각 문맥에 대한 계수용 시스템내의 공간 비용이 낮다면, 상기 비트 발생상태는 메모리내에 저장할 필요는 없는 것이다.
일단 제4단계가 종료하면, 새로운 비트발생기 상태와 PEM상태가 메모리에 기재된다.
또한, 제5단계에서는 부호화된 데이타열이 다음 부호어로 쉬프트된다.
이 쉬프트 동작은 제6단계에서 종료된다.
제14c도는 2개의 복호기에 대한 인터리브어 버퍼링을 예시하는 본 발명의 FIFO구조(1401)의 일실시예에 대한 블록도이다.
어떠한 수의 복호기도 본 발명의 기술을 이용하여 지원될 수 있다.
도시한 바와 같이 입력데이타와 FIFO는 2개의 인터리브어를 충분히 보지할 정도로 넓다.
FIFO(1401)는 FIFO(1460), 레지스터(1461-1462), MUX(1463-1464) 및 제어블록(1465)을 포함한다. 2개의 입력부호어는 입력 인터리브어로 연결되어 있다.
FIFO(1460)의 출력은 레지스터(1461-1462)에 대한 입력부에 연결된다. MUX(1463)에 대한 입력은 레지스터(1461, 1462)의 출력부에 연결된다.
제어블록(1465)은 FIFO(1460), 레지스터(1461, 1462) 그리고 MUX(1463, 1464)에 기준신호를 제공하도록 연결된다.
인터리브어는 2개의 복호기에 제공된 출력데이타(출력데이타 1 및 2)이다. 각각의 복호기는 현재 어가 사용되었으며 다음에 새로운 어가 필요한 것이라는 것을 나타내는 요청신호를 사용한다.
복호기로부터의 이 요청신호는 제어블록(1465)의 입력부에 연결된다. 제어블록(1465)은 또한 메모리부로부터 보다 많은 신호를 요청하기 위한 FIFO 요청신호를 출력한다.
처음에는 FIFO 및 레지스터(1461, 1462)는 데이타로 채워져 있으며 제어장치(1465)내의 유효 플립플롭(1465)이 세팅되어 있다.
요청이 있을 때마다 상기 제어블록(1465)은 하기표 16에 도시된 논리에 따라 데이타를 제공한다.
[표 16]
제15b도는 본 발명의 복호기의 다른 개념을 예시한 것이다.
제15b도를 참조하면, 가변길이(부호화된) 데이타가 복호기내에 입력된다. 복호기는 고정길이(복호화된) 데이타를 출력한다.
이 출력은 또한 입력으로서 복호기내에 수신되는 지연 피드백으로써 피드백된다.
본 발명의 복호기에서는 복호화에 사용되는 가변길이 시프팅은 약간의 지연후 사용 가능한 복호화된 데이타에 기초한다.
이 피드백 지연은 지연허용 복호기(delay tolerant decoders)에서 처리율을 감소시키지는 않는다.
입력 가변 길이 데이타는 제4도와 관련하여 기술한 바와 같은 고정길이 인터리브어로 나뉘어진다.
상기 복호기는 제16a도에 기술된 바와 같이 고정길이어를 사용한다.
이같이 본 발명은 지연허용 복호기를 제공한다.
본 발명의 지연허용 복호기는 가변길이 데이타를 병렬로 처리할 수 있게 한다.
종래의 허프만(Huffman) 복호기와 같은 복호기는 지연허용성(delay tolerant)이 아니였다.
모든 앞서의 부호어를 복호화하여 결정한 정보는 다음 부호어를 복호화하는데 필요한 가변길이 쉬프팅을 수행할 것이 요구된다. 반면, 본 발명은 지연허용 복호기를 제공하는 것이다.
[복호화 시스템에서의 쉬프팅]
본 발명의 복호기는 복호화를 위해 인터리브어를 적절한 비트 발생기로 쉬프트시키기 위한 쉬프팅논리를 제공한다.
본 발명의 쉬프트는 어떠한 특정형태의 "문맥(by context)" 혹은 "확률(by probability)" 병렬성을 필요로 하지 않는다.
열 M mod N에 부호어 M을 부여하는 부호기(C 언어에 있어서의 M % N)(여기서 N은 열의 수마다)를 가정한다.
본 발명에서는 현재 열로부터의 부호화된 데이타가 부호어가 요청될 때까지 나타난다.
오직 그때만 데이타가 다음열로 스위칭된다.
제16도는 본 발명의 복호기에 대한 쉬프트의 일실시예를 예시한 것이다.
쉬프터(1600)는 4데이타열에 대하여 설계되어 있다.
이에 따라 각 쉬프팅 동작에 대하여 4의 클럭사이클이 가능하다.
인터리브어는 16비트이고 가장 긴 부호어는 13비트이다.
제16도를 참조하면, 쉬프터(1600)는 인터리브된 부호화 데이타로부터 입력을 받도록 연결된 4개의 레지스터(1601-1604)를 포함한다.
레지스터(1601-1604) 각각의 출력은 MUX(1605)에 대한 입력으로서 연결되어 있다.
MUX(1605)의 출력은 레지스터(1607), MUX 및 레지스터(1608-1610) 및 사이즈유니트(1611)에 입력으로서 연결되어 있다.
사이즈유니트(1611)의 출력은 어큐뮬레이터(1612)에 연결된다. 어큐뮬레이터(1612)의 출력은 피드백되고 바렐쉬프터(1606)에 연결된다.
레지스터(1607)의 출력을 MUX 및 레지스터(1608)에 입력으로 연결된다.
MUX 및 레지스터(1608)의 출력은 MUX 및 레지스터(309)에 입력으로서 연결된다.
MUX 및 레지스터(1609)의 출력은 MUX 및 레지스터(1610)에 입력으로서 연결된다.
MUX 및 레지스터(1610)의 출력은 정돈된 부호화 데이타이다.
일실시예에 있어서, 레지스터(1601-1604)는 16-비트레지스터이며, 바렐쉬프터(1606)는 32비트-13비트 바렐쉬프터이고 어큐뮬레이터(1612)는 4-비트 어큐뮬레이터이다.
레지스터(1601-1604)는 FIFO로부터 16-비트어를 받아들이고 이들을 바렐쉬프터(1606)에 입력한다.
바렐쉬프트(1606)에는 항상 최소 32비트의 미복호화 데이타가 제공된다.
2개의 16비트어의 부호화데이타 시작과 함께 4개의 레지스터(1601-1604)가 초기화 된다.
이에 따라 각 열(Stream)에 대하여 항상 최소 하나의 새로운 부호어가 사용가능하게 된다.
R-부호에 대하여, 부호어 사이즈유니트(1611)는 "0" 또는 "IN" 부호어가 존재하는지 여부 및 "IN" 부호어라면 "1" 후에 얼마만큼의 비트가 현재 부호어의 부분인지를 결정한다.
동일한 기능을 제공하는 상기 사이즈유니트에 대하여 제12도에서 기술하였다.
다름 부호에 대하여는 부호어의 사이즈 결정방법은 이 분야에서 잘 알려져 있다.
쉬프터(1600)는 4개의 레지스터, 그중 3개는 멀티플렉스된 출력으로 이루어진 FIFO를 포함한다.
레지스터(1607-1610)의 각 레지스터는 최소 하나의 부호어를 보유함으로써 레지스터 및 멀티플렉서의 폭이 가장 길 수 있는 부호어를 장착할 13 비트이다.
각 레지스터는 또한 이와 관련된 하나의 제어 플립-플롭을 가지며(도시되지 않음), 이는 특정 레지스터가 부호어를 포함하는지 여부 혹은 부호어를 제공하도록 바렐쉬프터(1606)를 기다리고 있는지 여부를 나타낸다.
FIFO는 결코 비지 않을 것이다. 클럭사이클당 오직 하나의 부호어만이 사용될 수 있으며, 클럭사이클당 하나의 부호어가 쉬프트 될 수 있다.
쉬프팅을 수행하기 위한 지연은 이 시스템이 4부호어 앞에 개시됨으로써 보상된다.
각각의 부호어가 배열된 부호화데이타출력으로 쉬프팅됨에 따라 레지스터(1607-1610)내의 다른 부호어들은 쉬프트 다운된다.
FIFO내에 남은 부호어는 레지스터(1620)에 저장되며, 바렐쉬프터(1606)는 레지스터(1607-1609)를 채우기 위해 부호어가 MUX(1605)를 통해 레지스터(1601-1604)로부터 판독되게 한다.
FIFO는 부호어가 레지스터(1608)로 쉬프트 되자마자 다음 부호어로써 레지스터(1607)를 채우도록 설계될 수 있다.
바렐쉬프터(1606), 부호어사이즈 계산기(1611) 및 어큐뮬레이터(1612)는 가변길이 쉬프팅을 조절한다.
어큐뮬레이터(1612)는 4개의 레지스터를 가지며, 각 부호화된 데이타열에 대하여 하나씩 가지며 이들 각각은 각각의 데이타 열에 대하여 현재의 부호어 배열을 포함한다.
어큐뮬레이터(1612)는 바렐쉬프터(1606)를 제어하는데 사용되는 4개의 비트어큐뮬레이터이다.
어큐뮬레이터(1612)가 부호어 사이즈유니트(1611)로부터 입력된 값만큼 그 값을 증대시킨다.
어큐뮬레이터(1612)가 오버플로우되면(즉, 쉬프트카운트가 16이상이 될 때마다) 레지스터(1601-1604)는 쉬프트를 위해 클럭된다.
모든 다른 16 비트쉬프트는 새로운 32비트 워드가 FIFO로부터 요청하게 한다.
어큐뮬레이터(1611)로의 입력은 부호어의 사이즈이며, 이는 현재 부호 및 현재 부호의 첫번째 1 또는 2비트에 의해 결정된다.
레지스터(1601-1604)는 부호화 개시전에 부호화된 데이타로 초기화되어야 한다는 점도 몇몇 실시예에서 주목된다.
시스템에 의해 부호어가 요청되면, FIFO내의 레지스터는 출력되어 부호어가 출력을 향해 이동한다.
상기 바렐쉬프터(1606)가 새로운 부호어를 전달할 준비가 되어 있는 경우 이는 FIFO내의 첫번째 빈 레지스터내로 멀티플레스된다.
본 실시예에서는, 비트 발생기로부터의 다음 부호어 신호가 열(Stream)을 절환시킬 결정이 나기 전에 수신된다.
만일 그 결정전에 비트발생기로부터의 다음 부호어신호를 수신할 것을 보증할 수 없다면 제16b도에 도시된 바와 같은 룩-어헤드(look-ahead) 시스템을 사용할 수 있다.
제16b도를 참조하면, 룩어헤드를 사용하는 쉬프터(1620)가 블럭도로 나타나 있다.
쉬프터(1620)는 현재의 부호화 데이타와 다음 부호화 데이타의 출력을 생성하는 쉬프터(1600)를 포함한다.
현재의 부호화 데이타는 부호어 프리프로세싱 논리유니트(1621)의 입력과 부호어 프로세싱유니트(1624)의 입력에 연결되어 있다.
다음 부호화 데이타는 부호어 프리프로세싱 논리유니트(1622)의 입력에 연결된다.
프리프로세싱 논리유니트(1621, 1622)로부터 나온 출력은 MUX(1623)의 입력에 연결된다.
MUX의 출력은 부호어 프로세싱논리(1624)의 다른 입력에 연결된다.
부호어를 사용하는 논리는 부호어 프리프로세싱논리와 부호어 프로세싱 논리의 2분으로 나뉘어진다.
2개의 동일한 파이프라인 프리프로세싱 유니트(1621-1622)는 인터리브열이 쉬프트 되기 전에 작동한다.
프리프로세싱 유니트(1621-1622)중 하나는 열이 스위치되면 적절한 정보를 발생하고 스위치되지 않으면 다른 하나가 정보를 발생한다.
열(Stream)이 스위칭 되면 적절한 부호어 프리프로세싱의 출력은 MUX(1623)에 의해 적절한 부호어로 동작을 완료하는 부호어 프로세싱논리(1624)로 멀티플렉스 된다.
[옵칩 메모리(off Chip Memory) 및 문맥모델]
일실시예에 있어서, 외부메모리나 외부 문맥모델을 위하여는 다중 칩을 사용하는 것이 바람직할 수 있다.
이들 실시예에 있어서, 비트를 발생시키고 또한 그 비트를 다중 집적회로가 사용되는 문맥모델에 사용가능하게 하는 것 사이에는 지연을 감소시키는 것이 바람직하다.
제17도는 각 문맥에 대하여 메모리와 함께 외부 문맥칩(1701)과 코더칩(1702) 모두를 갖는 시스템의 일실시예에 관한 블럭도이다.
코더칩에서 문맥모델에 관한 유니트만이 도시되어 있으며, 이 분야에서 숙련된 자라면 코더칩(1702)이 비트발생, 확률추정등을 포함하고 있다는 것을 알 것이다.
제17도에서, 코더칩(1702)은 제로오더 문맥모델(1703), 문맥모델(1704, 1705), 선택논리(1706), 메모리제어(1707) 및 메모리 (1708)를 포함한다.
제로오더 문맥모델(1703)과 문맥모델(1704, 1705)은 선택논리 (1705)의 입력에 연결되는 출력을 생성한다. 선택논리(1706)의 다른 입력은 외부 문맥모델칩(1701)의 출력에 연결되어 있다.
선택논리(1706)의 출력은 메모리(1708)의 입력에 연결되고, 메모리(1708)의 입력에는 메모리제어(1707)의 출력이 연결된다.
선택논리(1706)는 외부 문맥모델이나 내부 문맥모델(예컨대 제로오더 문맥모델(1703), 문맥모델(1704), 문맥모델(1705)중 어느 것이 사용될 수 있게 한다.
선택논리(1706)는 외부 문맥모델(1701)이 사용될 때라도 문맥모델(1703)의 내부 제로오더 부분이 사용될 수 있게 한다.
제로오더 문맥모델(1703)은 하나 이상의 비트를 제공하는 반면 외부문맥 모델칩(1701)은 그 나머지를 제공한다.
예를 들어 제로오더 문맥모델(1703)로부터 바로 앞의 비트를 피드백하고 검색할 수 있는 반면, 앞서의 비트는 외부 문맥모델(1701)로 간다.
이와 같은 방법으로 시간관련 정보는 온칩(on-chip)으로 남아 있으며, 최근 발생된 비트에 대한 오프-칩(off-chip) 통신지연을 막아준다.
제18도는 외부 문맥모델(1801)과 외부 메모리(1803) 및 코더칩(1802)을 갖는 하나의 시스템의 블럭도이다.
이에 의하면, 몇몇 메모리 어드레스라인은 외부 문맥모델(1801)에 의해 구동되는 반면 나머지는 복호기칩(1802)의 "제로오더" 문맥모델에 의해 구동된다.
즉, 직전의 복호화 사이클로부터의 문맥은 제로오더 문맥모델에 의해 구동된다.
이에 따라 복호기칩이 최소통신지연으로 바로 직전으로부터 문맥 정보를 제공할 수 있다.
문맥모델칩(1802)은 보다 과거의 복호화 비트를 사용하여 나머지 문맥 정보를 선행함으로써 통신지연을 가능하게 한다.
많은 경우에 있어서, 직전으로부터의 문맥 정보는 제로오더 마코프(Markov)상태이고, 더 과거로부터의 문맥정보는 보다 높은 오더 마코프상태이다.
제18도에 도시된 실시예는 외부 문맥모델칩(1802)에 제로오더모델을 실시하는데 있어서 통신지연을 제거한다.
그러나 복호기칩(1802)과 메모리(1803)에 기인하여 비트발생지연에 대한 문맥상자 결정은 여전히 있을 수 있는 것이다.
다른 메모리 구조 역시 사용될 수 있다. 예를 들어 하나의 칩내에 문맥모델과 메모리를 갖고 다른 칩내에 부호를 갖는 시스템을 사용할 수 있다.
또한 시스템이 몇몇 문맥에 대하여 사용되는 내부 메모리와 다른 문맥에 대하여 사용되는 외부 메모리를 갖는 코더칩을 포함할 수도 있다.
[메모리를 이용한 비트발생기]
제19도는 메모리를 이용한 파이프라인 비트발생기를 갖는 복호기를 도시한 것이다.
제19도에서 복호기(1900)는 문맥모델(1901), 메모리(1902), PEM 상태- 코드블럭(1903), 파이프라인 비트발생기(1905), 메모리(1904) 및 쉬프터(1906)를 포함한다.
문맥모델(1901)의 입력은 파이프라인 비트열 발생기(1905)로부터 나온 복호화데이타를 포함한다.
쉬프터(1906)의 입력은 부호화데이타를 받도록 연결되어 있다.
문맥모델(1901)의 출력은 메모리(1902)에 입력으로 연결된다. 메모리(1902)의 출력은 PEM 상태-코드(1903)에 연결된다.
PEM 상태-코드(1903)의 출력과 쉬프터(1906)로부터의 배열된 부호와 데이타 출력은 비트발생기(1905)의 입력에 연결되어 있다.
메모리(1904)는 또한 2-방향성 버스를 이용하여 비트발생기(1905)에 연결되어 있다. 비트발생기(1905)의 출력은 복호화된 데이타이다.
문맥모델(1901)은 그 입력상의 부호화데이타에 응답하여 문맥상자를 출력한다.
이 문맥상자는 확률상태를 얻기 위해 문맥상자를 기초로 한 억세스메모리(1902)에 대한 어드레스로서 사용된다.
확률상태는 확률상태에 응답하여 확률클래스를 발생시키는 PEM 상태-코드 모듈(1903)에 의해 수신된다.
이 확률 클래스는 그후 실행계수를 얻기 위해 억세스 메모리(1904)에 대한 어드레스로써 사용된다.
그후 실행계수는 비트 발생기(1905)에 의해 복호화 데이타를 생성하도록 사용된다.
일실시예에서, 메모리(1902)는 1024×7 비트메모리(여기서 1024는 다른 문맥의 수이다)를 포함한다.
반면, 메모리 1904는 25×14 비트메모리(여기서 25는 다른 실행계수이다)를 포함한다.
비트발생기상태(실행 계수 등)는 문맥상자가 아닌 확률 클래스와 관련되어 있기 때문에 비트가 문맥모델에 사용되기 전에 부가적인 파이프라인지연이 있을 수 있다.
비트발생기상태를 업데이트시키는 것은 다중 클럭 사이클을 요하므로 각 확률 클래스에 대하여는 다중 비트발생기 상태가 사용될 것이다.
예를 들어 파이프라인이 6 클럭 사이클이라면, 비트발생기 상태메모리는 확률클래스당 6엔트리를 가질 것이다.
적절한 메모리 위치를 설정하기 위해 계수가 사용된다.
확률클래스당 다중 엔트리의 경우에 있어서도 그 메모리의 크기는 전형적으로 문맥의 수 보다 적을 것이다.
이 메모리는 SRAM 다중 뱅크나 멀티포트 레지스터 파일과 함께 사용될 수 있다.
하나의 실행계수가 다중 문맥과 관련되기 때문에 하나의 확률 추정상태를 업-그래이드시켜야 한다.
일실시예에서 실행이 종결되게 하는 문맥의 PEM상태가 업데이트된다.
다시 판독되기 전에 실행계수를 읽고, 변형하고 기재하는 대신 변형이 완료되자마자 실행계수를 다시 사용할 수 있다.
제32도는 본 발명의 일실시예에 있어서의 복호 동작의 타이밍도이다.
제32도를 참조하면, 3주기 복호동작이 도시되어 있다.
타이밍도의 왼쪽에는 신호명칭이 열거되어 있다.
어느 한 주기동안의 신호의 효력은 그 주기동안의 막대(bar)로써 나타내고 있다.
특정 경우에 있어서, 유효 신호를 공급하고 신호를 발생시키는 장치 또는 논리가 점선으로 표시된 박스내에서 유효 신호 표시 주위에 나타나 있다.
여기에 개시된 특정요소 및 유니트의 예가 함께 제공된다.
다른 주기내로 확장하는 신호의 어느 부위는 그 신호가 다른 주기내로 확장하는 것으로 나타난 시간에 대하여만 신호의 유효성을 나타낸다.
또한 특정신호가 1주기 이상 동안 별도로 유효한 것으로 나타나 있다.
이 같은 예는 제2주기의 끝의 어느 점에서 유효하고 제3주기동안 다시 유효한 일시 실행계수신호이다.
이는 이 신호가 단지 주기의 끝에서 레지스트 된다는 것을 나타낸다.
의존성 리스트가 하기표 17에 나타나 있는 바, 이는 같거나 앞선 클럭 주기로부터 현재까지 그 신호가 유효한 것으로 특정된 의존성을 열거하고 있다.
[표 17]
* CM=문맥모델, SH=쉬프터, BG=비트발생기, PEM=확률추정기
** {}내는 앞서의 클럭사이클로부터의 의존성을 의미한다.
++일실시예에 있어서, 대부분의 PEM 상태를 업데이트하기 위한 조합논리는 "PEM"테이블 단계에서 수행되며, "PEM 업데이트"는 단지 멀티플렉스 동작이다.
[묵시적 신호]
몇몇 실시예에 있어서, 복호기는 부호기의 유한 재정돈버퍼를 모델링해야만 한다. 일실시예에 있어서, 이 모델링은 묵시적 신호(implicit signalling)로써 성취된다.
부호기에 관하여 앞서 설명한 바와 같이, 부호기에 부호어가 개시되면 적절한 버퍼내에 부호어가 채널상에 위치하는 순서대로 부호어에 대한 공간이 보호된다. 버퍼내의 마지막 공간이 새로운 부호어를 위해 확보되면, 몇몇 부호어가 완전히 결정되었는지 여부에 관하여 압축비트열내에 위치되게 된다.
일부 부호어가 완결되어야 할 때, 그동안 접수된 심볼을 정확히 특정화하는 짧은 부호어가 선택될 수는 있다.
예컨대, R-코더시스템에 있어서, 최대 실행길이 128인 실행코드내에서 일련의 100MPS>에 대한 부호어를 미리 완결시킬 필요가 있을 때 128MPS에 대한 부호어를 사용할 수 있다. 왜냐하면 이는 첫번째 100 심볼을 정확히 특정하기 때문이다.
선택적으로 100MPS를 특정화하고 그후 LPS가 후속되는 부호어가 사용될 수 있다.
부호어가 완결될 때 이는 재정돈버퍼로부터 제거하여 부호열에 첨가될 수 있다.
이는 앞서 완결된 부호어가 부호열 내에 위치하게 한다.
만일 하나의 일부 부호어의 완성결과 전체 버퍼로부터 부호어를 제거하면 부호화는 계속할 수 있다.
만일 하나의 버퍼가 여전히 꽉 차 있다면, 다음 부호어는 다시 완결되고 부호옆에 부가되어야 한다.
이 과정은 꽉 찬 버퍼가 더 이상 차지 않을 때까지 계속된다.
복호기는 각각의 비트 발생기 상태 정보 메모리 위치에 대하여 계수기를 이용하여 묵시적 시그널링을 위해 부호화를 모델링할 수 있다.
일실시예에 있어서, 각각의 실행계수기(본 실시예에서는 확률 클래스)는 부호기내의 헤드나 꼬리 계수기와 같은 크기인(예를 들어 6비트) 계수기를 갖는다.
새로운 실행이 개시될 때마다(새로운 부호어가 호출된다) 이에 상응하는 계수에 부호어 메모리의 크기가 로딩된다. 실행이 개시될 때마다(새로운 부호어가 호출된다) 모든 계수기는 감소된다. 0에 도달하는 어떠한 계수기도 상응하는 실행이 계수가 클리어되게 한다(그리고 LPS 존재 플랙이 클리어된다).
[유한 메모링용 시그널링에 대한 선택]
본 발명에서 실시간 부호화는 LPS에 의해 후속되지 않고 최대 실행길이가 아닌 MPS의 복호기 처리실행을 요한다.
이는 부호기가 MPS실행을 시작할 때 생기나 그 실행이 종료할 때까지 기다릴 충분히 제한된 재정돈 메모리를 갖고 있지 않다.
이 조건은 이 문맥상자가 사용된 다음에 새로운 부호어가 복호화 될 것을 요하며, 이 조건은 복호기에 신호되어야 한다.
이하 복호기를 변경시키는 3가지 방법에 대하여 기술한다.
버퍼가 채워져 있을 때 아웃되는 문맥상자나 확률클래스에 대한 실행계수는 리세트되어야 한다. 이를 효율적으로 수행하기 위하여 문맥상자나 확률클래스를 부호어 메모리내에 저장시키는 것이 유익하다. 이는 단지 아직 관련된 부호어를 갖지 않은 실행에 대하여만 필요하기 때문에 부호어를 저장하는데 사용된 메모리를 나눌 수 있다.
몇몇 시스템에서는 불완전한 부호어를 아웃시키는 대신 비트가 채워져 있을 때 버퍼 계류중인 어 또한 부호어의 문맥/확률 클래스내에 비트를 넣을 수 있다.
복호기는 이를 검지하고 이에 상응하는 (잘못된) 문맥상자나 확률클래스를 이용한다.
인스트림 시그널은 복호기를 신호하기 위해 부호어를 사용하는 일실시예에 있어서, R2(K) 및 R3(K) 부호정의가 LPS에 의해 후속되지 않은 비-최대길이 실행 MPS를 포함하도록 변경된다.
이는 부호어에 1비트를 추가함으로써 수행되며, 이는 최저확률로 야기되어야 한다.
이로 인해 비-최대길이 실행계수에 대하여 독특하게 복호화가능한 프리픽스(PREFIX)를 가능하게 한다.
하기표 18은 열 시그널링을 가능하게 하는 R2(2)부호 대체를 보여준다.
이 방법의 불리한 점은 R-부호 복호화 논리가 변경되어야 하고, 최저확률로 부호어가 야기될 때마다 압축비율이 발생한다는 것이다.
몇몇 실시예에 있어서, 복호기는 시간스탬프를 이용하여 묵시적 시그널링을 수행한다.
계수기는 부호어가 요청될 때마다 증대시킴으로써 현재 "시각"의 트랙을 유지한다.
또한 부호어가 개시될 때는 언제나 현재 "시간"이 부호어에 관련된 메모리내에 저장된다.
부호어가 첫번째 사용된 후는 언제라도 상응하는 저장된 "시각" 값과 부호기의 재정돈버퍼의 크기를 더하여 현재 "시각"과 비교한다.
현재"시각"의 더 큰 경우는 묵시적 신호가 발생하여 새로운 부호어가 요청된다.
이같이 부호기내의 유한 재정돈메모리가 시뮬레이트되었다.
일실시예에서 "시각" 값에 대하여 충분한 비트가 사용되어 모든 부호어가 열거될 수 있게 한다.
소요되는 메모리를 줄이기 위하여, 시간 스탬프에 사용되는 비트를 최소한으로 유지한다.
시간 스템프가 작은 수의 비트를 이용하면 시간값을 재사용하도록 계수기가 재사용시각을 재기전에 모든 묵은 시간스탬프가 노트되는 것을 주의해야 한다.
큐나 비트 발생기 상태 메모리에 대한 어드레스 비트의 수 중에서 보다 큰 것을 N이라고 한다. N+1비트의 시간스탬프를 사용할 수 있다.
비트발생기 상태메모리는 다중어세스를 지원해야 하며, 아마 복호화 비트당 2개의 판독 및 2개의 쓰기일 것이다.
상기 비트발생기 상태 메모리를 통해 순환시키기 위하여 계수기가 사용되며 복호화된 각 비트에 대하여 한번 증대시킨다.
너무 오래된 메모리 위치는 클리어되어 다음에 사용시 새로운 부호어가 호출된다.
이로인해 어떠한 값이 재사용되기 전에 모든 시간 스탬프가 점검된다.
만일 비트발생기 상태 메모리가 큐(queue)보다 적다면, 계수속도(시간스탬프 계수기)와 필요한 메모리 대역폭은 감소될 수 있다. 이는 각 시간스탬프(비트 발생기 상태 메모리당 하나)가 전체 큐를 사용하는 필요한 사이클 수당 오직 한번 체크되어야 하기 때문이다.
또한 시간스탬프를 다른 메모리에 저장하는 것을 필요한 메모리 대역폭을 줄일 수 있다. 일부 실행에 대하여 부호어 "0"을 사용하는 시스템에서는 "IN"부호어에 대하여 시간스탬프를 체크할 필요가 없다. 일부 실행에 대하여 부호어는 "IN"을 사용하는 시스템에서는, 상기 시간스탬프는 LPS를 발생시키기 전에 체크되어야 한다. 몇몇 실시예에 있어서, 묵시적 시그널링이 복호화동안 큐(queue)와 함께 실시된다. 이방법은 복호화하는 동안 부호화를 수행하는 하드웨어가 사용가능한 경우는 하프두프렉스 시스템에 유익할 수 있다.
큐의 작용은 부호화동안과 거의 같다.
새로운 부호어가 요청되면, 그 색인이 큐내에 위치하고 부당한 것(invalid)으로 표시된다. 부호어로부터의 데이타가 완료되면, 그 큐엔트리는 정당한 것(vaild)으로 표시된다.
새로운 부호어에 대한 여유를 주기 위해 데이타가 큐로부터 빠져 나옴에 따라, 그 빠져 나온 데이타가 부당한 것으로 표시되면 그 색인으로부터의 비트발생기 상태정보는 클리어된다.
이 클리어닝 동작은 비트발생기 상태메모리가 부가적인 기재동작을 지지할 수 있을 것을 요구한다.
대조적으로 명시적 시그널링은 압축데이타로서 버퍼 오버플로우와 통신한다.
일예가 모든 정상적인 문맥상자 복호에 대하여 한번 또는 복호화하는 모든 부호어에 대하여 한번 사용되는 보조 문맥상자를 갖는 것이다.
이 보조 문맥상자로부터 복호화된 비트는 새로운-부호어-필요한 조건이 야기되는지와 새로운 부호어가 상응하는 정상적인 문맥상자에 대하여 복호화되어야 하는지를 나타낸다.
이 경우에 있어서, 이 특별문맥에 대한 부호어는 적절히 재정돈되어야 한다. 이 문맥의 사용은 재정돈유니터에 알려진 어떤 기능이며(전형적으로 이는 각 부호어에 대하여 한번 사용된다), 상기 보조문맥을 재정돈시키는데 필요한 메모리는 묵시적으로 바운드되거나 모델링될 수 있다.
또한 이 보조문맥에 허용된 기능코드는 제한될 수 있다.
묵시적 시그널링은 새로운 부호어가 복호화되어야 하는 것을 나타내는 신호를 발생하기 위해 복호화될 때 부호기의 제한된 버퍼를 모델링한다.
일실시예에 있어서, 각 문맥에 대하여 시간스탬프가 유지된다. 일실시예에 있어서, 버퍼를 재정돈하는 부호기의 유한 사이즈가 직접 모델링된다.
하프듀플렉스 시스템에서는, 복호화동안 부호기의 재정돈회로가 사용가능하기 때문에, 이를 복호기에 대한 신호를 발생시키는데 사용될 수 있다.
묵시적 시그널링의 성취방법은 부호기가 전체 버퍼조건을 인식하고 처리하는 방법에 달려있다. 고정할당을 갖는 합병된 큐를 이용한 시스템에 대하여는 다중헤드포인터를 사용함으로써 "버퍼플(buffer full)"이 의미하는 것을 선택할 수 있다. 부호기에 대한 설례가 주어지면 적절한 모델설계가 가능한 것이다.
다음은 고정열 배정을 갖는 합병큐에 대하여 부호기 동작 및 복호기에 의해 사용하기 위한 모델을 제공한다.
이 실시예에 대하여는, 재정돈버퍼가 256 위치를 갖고, 4 인터리브열이 사용되며, 각 인터리브어는 16비트인 것으로 가정한다.
버퍼가 256엔트리를 포함할 때, 엔트리는 257번째 부호어에 대한 엔트리가 큐내에 위치하기 전에 비트팩터(예를들어 비트팩 유니트)로 보내져야 한다. 필요하면 엔트리는 보다 일찍 보내질 수 있다.
몇몇 시스템에서는 버퍼에서 첫번째 엔트리를 제거함은 전체 인터리브 부호어를 완결하기 위해 충분한 비트를 제거할 것을 요한다. 따라서 만일 1-비트 부호어가 가능하면, 부호어 0 제거는 16비트 인터리브어에 대하여 부호어 4, 8, 12, ..., 52, 56, 60을 또한 제거할 것을 요한다.
이들 모든 버퍼엔트리가 정당 엔트리를 갖는 것을 확실히 하기 위하여, 메모리가 꽉 차 있기 때문에 엔트리를 채워지게 하는 것은 새로운 부호어가 들어가는 위치에서 어드레스 64, 192 위치에서 수행될 수 있다(256-16×4=192).
복호기에는 각 확률에 대한 계수기가 있다. 실행개시를 위해 새로운 부호어가 사용시 계수에는 192가 로딩된다. 어떠한 확률에 의해 새로운 부호어가 사용될 때마다, 모든 계수는 감소된다.
어떤 계수기가 0에 이르려면, 그 확률에 대한 실행길이는 0으로 세트된다(그리고 LPS 존재 플랙은 클리어된다).
각 부호화된 데이타 열에 대하여 하나의 뱅크가 있는 다중 RAM 뱅크(다중-포트 메모리, 고속 메모리로 시뮬레이션등)을 사용하는 것이 편리할 것이다.
이는 모든 비트팩 유니트가 데이타를 동시에 받아들이게 하며, 그리하여 특정열에 대한 다중 부호어 판독됨을 방해하지 않게 된다.
다른 시스템에서는, 다중 비트팩 유니트가 버퍼내에 저장시 부호어오더를 기준으로 하나의 메모리를 조정하여야 한다.
이들 시스템에서는, 버퍼로부터 엔트리를 제거하는 것이 인터리브어를 완결할 수 없을 수도 있다.
각 비트팩 유니트는 전형적으로 인터리브어의 몇몇 부분을 순차적으로 수신한다.
각 비트팩 유니트는 최소 가장 짧은 부호어 길이와 같은 비트수(1비트) 그리고 최대 가장 긴 부호어 길이와 같은 비트수(13비트)를 받는다. 인터리브어는 이들이 완결될 때까지는 방출될 수 없으며, 초기화의 순서대로 방출되어야 한다.
본 실시예에서는, 비트팩 유니트가 13 인터리브어를 버퍼할 수 있으며, 이는 최대길이 부호어로 완결시킬 수 있는 인터리브어의 최대수이며, 반면 다른 열은 최소길이 부호어를 수신하는 계류중인 인터리브어를 갖는다.
모든 부호어가 메모리의 2기재 및 1판독을 요하는 시스템은 2기재 및 2판독을 수행하는 시스템보다 하드웨어 실시가 보다 덜 바람직하다.
만일 4열을 갖는 예시적인 시스템에 대하여 필요하다면, 비트팩 유니트 1 및 2가 하나의 메모리 판독(READ) 사이클을 분배하고 비트팩 유니트 1 및 3이 다른 판독사이클(혹은 다른 중재 조합)을 분배할 수 있을 것이다.
이는 필요한 버퍼링의 크기를 줄이지는 않으나 비트팩 유니트내의 이송속도를 보다 크게 할 것이다.
이는 비트팩 유니트가 부호화된 데이타 채널의 용량을 보다 잘 이용할 수 있게 할 것이다.
[고정크기 메모리를 갖는 시스템]
확률클래스당 여러개의 비트 발생 상태를 갖는 시스템의 한가지 잇점은 고정크기 메모리가 오버 플로우될 때 손실코딩을 지원할 수 있다는 것이다. 이는 프레임 버퍼에 대한 화상압축 및 기타 단지 제한된 량의 부호화 데이타를 저장할 수 있는 응용에 대하여 유용할 수 있다. 고정된 크기 메모리를 갖는 시스템에 대하여 각 확률에 대한 다중 비트 발생기 상태는 각각 데이타의 일부에 할당된다.
예컨대, 8 상태 각각은 8비트 데이타에 대한 특정 비트 평면에 할당될 수 있다.
이 경우에, 다음 부호어를 순차적으로 제공하는 쉬프터와는 대조적으로 데이타의 각 부분에 쉬프터가 또한 부여된다.
이 데이타는 비트 평면에 의해 분할될 필요가 없다. 또한 부호기에서는, 인터리빙이 수행되지 않으며, 각 데이타 부분은 단지 비트팩킹된다. 메모리는 데이타의 각 부분에 할당된다.
부호화 데이타에 대한 메모리 관리가 고정크기 메모리내의 모든 데이타를 저장하는 시스템 및 최대 허용 가능한 대역폭을 갖는 채널내에 데이타를 전달하는 시스템에 대하여 존재한다.
이들 시스템에 있어서는, 손실시스템에의 적절한 열화가 요구된다.
다른 열의 데이타가 다른 중요성을 갖는 데이타에 대하여 사용되므로써 충분한 저장이나 대역폭이 없을 때 보다 덜 중요한 열이 저장되거나 전달되지 않게 한다.
메모리 이용시, 보다 덜 중요한 데이타 열이 중요한 데이타 열을 복호화시킬 능력을 상실함이 없이 제거되는 것이 가능하게 어세스되도록 부호화데이타가 저장되어야 한다. 부호화데이타는 가변길이이므로 동적 메모리 할당이 사용될 수 있다.
제31도는 3부호화된 데이타열에 대한 동적 메모리 할당을 예시한 것이다.
레지스터 파일(3100)(혹은 기타 저장부)은 각 열에 대한 포인터와 다음의 자유 메모리 위치를 나타내는 다른 포인터를 갖는다. 메모리(3101)는 고정크기 페이지로 나뉘어진다.
처음에, 열에 부여된 각 포인터가 메모리의 페이지 개시 및 다음 이용가능한 메모리 페이지에 대한 자유 포인터를 지적한다. 특정열로부터의 부호화 데이타는 해당하는 포인터에 의해 어드레스된 메모리 위치에 저장된다. 그후 이 포인터는 다음 메모리의 위치저지 증분된다.
포인터가 현재 페이지에 대한 최대치에 이르면 다음과 같이 된다.
다음 자유 페이지(자유 포인터에 저장된)의 개시 어드레스가 현재 페이지와 함께 저장된다(부호화된 데이타 메모리 부분이나 레지스터 파일중 어느 것이 사용될 수 있다). 현재의 포인터가 다음 자유 페이지에 세트된다. 자유포인터가 증대된다.
이들 작용은 특정열에 대하여 다음 페이지 메모리를 할당하고 할당순서가 복호화동안 결정될 수 있도록 링크를 제공한다.
메모리내의 모든 페이지가 사용중이고, 메모리내에 가장 덜 중요한 데이타 보다는 중요한 열로부터의 데이타가 더 있다면, 3가지중 한가지가 행해질 수 있다.
모든 3가지 경우에 있어서, 가장 덜 중요한 데이타 옆에 부여된 메모리는 보다 중요한 데이타열로 재부여되고 가장 덜 중요한 데이타 열로부터 더 이상의 데이타는 저장되지 않는다.
첫째, 가장 덜 중요한 열에 의해 현재 사용되는 페이지는 보다 중요한 데이타로 단순 부여된다.
가장 전형적인 엔트로피부호가 내부상태 정보를 이용하기 때문에 앞서 그 페이지에 저장된 가장 덜 중요한 데이타 모두는 상실된다.
둘째, 가장 덜 중요한 열에 의해 현재 사용되는 페이지는 보다 중요한 데이타 열로 단순 부여된다. 앞서의 경우와는 달리 포인터는 페이지 끝으로 세트되고 보다 중요한 데이타가 페이지에 기재되기 때문에 이에 해당하는 포인터는 감소된다. 이는 보다 중요한 데이타 열이 전체 페이지를 필요로 하지 않는다면 가장 덜 중요한 데이타를 페이지 시작부분에 보존한다는 잇점이 있다.
셋째, 가장 덜 중요한 데이타가 재부여되는 현재 페이지 대신에, 가장 덜 중요한 데이타의 어떠한 페이지라도 재부여된다.
이는 모든 페이지에 대한 부호화 데이타가 독립적으로 부호화될 것을 요구하며, 이는 성취된 압축을 감소시킬 수 있다. 이는 또한 모든 페이지 시작에 해당하는 미부호화된 데이타가 식별될 것을 필요로 한다.
가장 덜 중요한 데이타의 어떠한 페이지도 폐기될 수 있기 때문에 손실코팅으로의 열화에 보다 큰 탄력성이 이용가능하다.
상기 3가지 선택은 화상전체 부위에 걸쳐 고정된 압축율을 얻는 시스템에 특히 유익하다. 특정수의 메모리 페이지를 화상부분에 할당할 수 있다. 보다 덜 중요한 데이타가 유지되는 여부는 특정부위에 얻은 압축에 달려있다(어느 부위에 부여된 메모리는 만일 무손실 압축이 부여된 메모리 량보다 적게 요구한다면 완전히 이용되지 못할 수 있다).
화상부위상에서 고정된 압축율을 얻는 것은 화상영역에 대한 랜덤 어세스를 지원할 수 있는 것이다.
양단부(both ends)로부터 각 페이지(page)내로 데이타를 기록하는 능력은 시스템내에서 전체 메모리량을 보다 효율적으로 이용할 수 있도록 사용된다. 모든 페이지가 할당되면, 단부에 충분한 여유공간을 갖는 임의의 페이지는 사용을 위해서 단부로부터 할당된다. 한 페이지의 양단부를 사용하는 능력은 2가지의 데이타 타입이 만나는 기억장소(location)의 트랙(track)을 잡는 것에 대한 대가에 비교된다(이것은 상기 두가지 데이타 타입중 하나의 데이타 타입이 중요하지 않고 단지 중복으로 쓰여지는 경우와는 다르다).
데이타가 메모리에 저장되는 것 대신에 채널로 전송되는 시스템을 살펴보면, 상태된 크기의 메모리 페이지가 사용되지만, 스트림(stream)당 단지 하나의 페이지가 필요하다(또는 만약 핑퐁잉(ping-ponging)이 채널을 위한 완충역할을 제공하도록 필요로 되는 경우에는 아마 두 개의 페이지, 이와 같은 경우 하나의 페이지에 기록하는 동안에, 나머지 하나의 페이지는 출력을 위한 준비를 하고 있다). 메모리의 한 페이지가 가득차면, 채널로 전송하고, 상기 메모리 기억장소(location)는 상기 페이지가 전송되는 즉시 재사용된다. 몇가지 응용예에 있어서, 메모리의 페이지 크기는 채널내에서 사용되는 데이타 패킷(data packets)의 크기 또는 패킷크기의 배수로 된다. 몇몇 통신시스템에 있어서, ATM(Asynchronous Transfer Mode)를 예를들면, 우선순위 체계(Priorities)가 패킷에 할당(assign)된다. ATM은 우선권, 차선권의 두가지의 우선순위레벨을 갖는다.
차선된 패킷은 충분한 대역폭이 유효한 경우에만 전송된다. 쓰레스홀드(Athreshold)는 스트림이 우선권임과 동시에 차선권임을 결정하기 위해서 사용된다. 또다른 방법은 쓰레스홀드보다 중요하지 않은 스트림을 전송하지 않도록 부호기(encoder)에서 쓰레스홀드를 사용하도록 된다.
[각 부호를 위한 분리된 비트발생기]
제20도는 각 코드를 위한 분리된 비트발생기를 갖는 시스템의 블럭도이다. 상기 제20도를 참조하면, 복호화 시스템(2000)은 문맥모델(context model)(2001), 메모리(2002), PEM 상태-코드(state-to-code) 블록(2003), 복호기(2004), 비트발생기(2005A-n), 및 쉬프터(2006)로 구성된다. 상기 문맥모델(2001)의 출력은 메모리(2002)의 입력에 결합된다. 상기 메모리(2002)의 출력은 PEM 상태-코드 블록(2003)의 입력에 결합된다. 상기 PEM 상태-코드 블럭(2003)의 출력은 복호기(2004)의 입력에 결합된다. 상기 복호기(2004)의 출력은 비트발생기(2005A-n)의 입력에 결합된다. 또한 비트발생기(2005A-n)는 쉬프터(2006)로부터 부호화된 데이타 출력을 받도록 결합된다.
상기 문맥모델(2001), 메모리(2002), 그리고 PEM 상태-코드 블록(2003)은 제19도내 대응블록처럼 동작한다. 상기 문맥모델(2001)은 문맥상자(context bin)을 발생시킨다. 상기 메모리(2002)는 상기 문맥상자에 기초한 확률상태(probability state)를 출력한다. 상기 확률상태는 각 확률상태를 위한 확률등급(probability class)을 발생시키는 PEM 상태-코드 블록(2003)에 의해서 받아들여진다. 복호기(2004)는 다수의 비트발생기(2005A-n)중에 하나의 비트발생기가 확률등급을 복호화할 수 있도록 한다(상기 복호기(2004)는 잘 알려져 있는 74×138 3 : 8 복호기와 유사한 M-2M복호기 회로이다 ---엔트로피 부호화 복호기가 아님을 주목하라). 각 코드가 분리된 하나의 비트 발생기를 갖기 때문에, 몇몇 비트발생기는 R-코드와는 다른 코드를 사용한다. 특히 거의 확률 60%를 위한 코드는 R2(0)와 R2(1) 사이에 확률공간을 더 배치토록 하기 위해서 사용될 수도 있다. 예를들어, 테이블 19는 이와 같은 코드를 기술하고 있다.
[표 19]
만약 요망속도로 수용하는 것이 필요로 되면, 하나 또는 그 이상의 비트에 대한 전치-복호화(pre-decoding)가 복호화된 데이타가 유효함을 신속하게 보증하도록 행해질 수도 있다. 몇몇 실시예(embodimends)에 있어서, 큰 실행계수 모든 클럭사이클을 갱신할 수 있는 필요한 사항을 무효로 하는 것, 긴코드(long codes)에 대해 코드어 복호화와 실행계수화 둘이 분할된다.
상기 R2(0)를 위한 비트발생기는 복잡하지 않다. 하나의 코드어는 비트가 요구되는 매 시간에 요구되어진다. 상기 발생된 비트는 간단한 부호어(MPS를 갖는 XORed)이다.
예를들어, R2(1), R3(1), R2(2)와 R3(2)과 같은, 짧은 실행길이(short run length)을 위한 부호는 하기 방법으로 처리된다. 상기 부호어내의 모든 비트는 복호화되어 작은 계수기(각각 1, 2, 또는 3 비트)와 하나의 LPS 현재 비트(present bit)로 구성되는 상태 장치(state machine)내에 저장된다. 상기 계수기와 LPS 현재 비트는 하나의 R-코드 복호기처럼 동작한다.
K>2 인 R2(K)와 R3(K)과 같이, 보다 긴 코드를 위한 비트 발생기는 제21도에 도시된 바와 같이 2개의 유니트내로 분할된다. 제21도를 참조하면, K>2 인 R2(K)코드를 위한 비트발생기 구조는 짧은 실행 유니트(2101)와 긴 실행유니트(2120)를 갖추고 있음을 보이고 있다. 비록 상기 구조가 R2(K>2)코드를 가지고 사용하기 위함이고, 그 구조의 동작은 코드 R3(K>21)(그리고, 이 기술분야의 당업자에게는 자명한)에 대해서도 유사할 것이다.
짧은 실행유니트(2101)는 비트발생기내로 입력으로써의 인에이블신호(enablesignal)와 코드어[0..2]와 "모든 영(ZEROS)인" 신호와 "계수 영(ZERO)" 신호(영(ZERO)의 계수를 지시함), 긴 실행유니트(2102)로부터의 두 신호를 받도록 결합된다.
상기 입력에 대한 응답이 있어서, 짧은 실행 유니트(2101)는 복호화된 비트와 다음 신호지시(next signal indication)를 출력하는데, 상기 다음 신호지시는 새로운 코드어를 필요로 하는 신호이다. 또한 짧은 실행유니트(2101)는 긴 실행유니트(2102)로 계수 인에이블 신호, 계수로드(LOAD)신호와 계수 최대신호를 발생시킨다. 또한 긴 실행유니트(2102)는 상기 비트 발생기에 입력으로써 코드어[K..3]을 받아들이도록 결합된다.
짧은 실행유니트(2101)는 최고 길이 4까지의 실행길이를 처리하여 R2(2) 비트발생기와 유사하다. 하나의 실시예(embodiment)에 있어서, 짧은 실행유니트(2101)는 모든 R2(K>2) 코드에 대해서도 동일하다. 긴 실행유니트(2102)의 목적은 상기 실행의 마지막 1-4 비트가 출력되어질 때를 결정하는 것이다. 긴 실행유니트(2102)는 입력(inputs), AND로직과 K를 갖는 크기내에서 변화하는 계수기를 갖는다.
이와 같이 본 발명은 지연 허용 복호기를 제공한다.
긴 실행유니트(2102)의 한 실시예가 제22도에 도시되어 있다. 상기 제22도를 참조하면, 상기 긴 실행유니트(2102)는 코드어[K..3]을 받도록 결합된 AND 로직(2201)을 구성하여 만일 코드어내 모든 비트가 1인 경우에 로칼(local) 1로써 "모두 1(all ONES)"를 출력하고, 그로 인해서 전류코드어가 IN 코드어이고 실행계수는 4보다 적음을 지시하고 있다. NOT 로직(2202)은 상기 코드어를 받도록 결합되어 그것을 반전시킨다. 상기 NOT 로직(2202)의 출력은 비트계수기(2203)의 한 입력에 결합된다.
상기 비트계수기(2203)는 또한 인에이블 신호, 계수로드(LOAD) 신호와 계수 최대신호를 받도록 결합된다. 상기 입력에 대한 응답이 있어서, 상기 비트 계수기(2203)는 계수 영(ZERO)신호를 발생시킨다.
하나의 실시예(embodiment)에 있어서, 상기 계수기(2003)는 K-2 비트 계수기이며 4개 MPS와 가능한한 몇 개의 나머지에 대한 실행으로 긴 실행계수를 브레이크(break)하도록 사용된다. 상기 계수 인에이블 신호는 4개 MPS가 출력되고 상기 계수기가 감소함을 지시한다. 상기 계수로드(LOAD) 신호는 "IN" 코드어를 복호화하고 상기 계수기가 코드어 비트 K가 3까지에 대한 보수(complement)로 가득차게 되는 경우에 사용된다. 상기 계수 최대 신호는 "0" 코드어를 복호화하고 상기 계수기가 최대치로 가득차는 경우에 사용된다. 계수 영(ZERO) 출력신호는 상기 계수기가 영(ZERO)으로 되는 경우를 지시한다.
상기 짧은 실행계수유니트(2101)의 일실시는 제23도에 도시되어 있다. 제23도를 참조하면, 상기 짧은 실행계수 유니트는 제어모듈(2301), 2-비트 계수기(2302)와 3-비트계수기(2303)를 포함한다. 상기 제어모듈(2301)은 인에이블신호, 코드어[0..2], 그리고 모두 1(all ones)과 상기 긴 실행계수 유니트로부터의 계수 영(ZERO)신호를 받는다. 상기 2-비트 계수기는 보다 긴 실행부인 MPS의 4비트 실행을 계수하기 위해서 사용된다. R2(2) 계수기와 LPS 비트(총 3비트)(2303)는 실행의 종료시점에서 1-4비트를 발생시키기 위해서 사용된다. 상기 인에이블 입력은 하나의 비트가 비트출력상태에서 발생되어야 함을 지시한다. 상기 단정(assert)되지 않을 때에는 계수영(ZERO) 입력은 4MPS의 실행이 출력되어야 함을 지시한다.
상기 MPS 계수기(2302)가 영(ZERO)에 도달하는 경우에 언제나, 상기 계수 인에이블 출력은 단정된다. 상기 계수 영(ZERO) 입력이 단정되면, 상기 LPS가 사용되는 R2(2) 계수기 또는 새로운 코드어가 복호화되어 그 다음의 출력이 단정된다.
새로운 코드어가 복호화되는 경우, 수행될 동작은 상기 코드어 입력에 의해 결정된다. 만약 입력이 "0" 코드어이면, 상기 MPS 계수기(2302)가 사용되고 상기 계수 최대출력이 단정된다. "IN" 코드어에 대해, 상기 코드어중 첫번째 3비트는 상기 R2(2)계수기와 LPS(2303)내로 실리고(LOADED), 상기 계수 로드 출력은 단정된다.
만약 상기 모두 1(all ones) 입력이 단정되는 경우에는 상기 R2(2) 계수기와 LPS 2303이 비트를 발생시키기 위해서 사용되고; 그렇지 않은 경우에는 상기 MPS계수기가 상기 계수 영(ZERO)입력이 단정될 때까지 사용된다.
하나의 시스템 사시도로부터, 코드의 개수는 전형적으로 25 또는 그 이하인 작동이 양호한 시스템에 비해 작을 것이다. 비트를 위해 필요한 멀티플렉서의 크기와 그다음의 코드어 출력과 특별한 비트발생기를 인에이블링시키기 위한 복호기는 빠른 동작에 대한 한계를 짓는다. 또한, 상기 시스템으로부터의 팬-출력(fan-out)이 고속동작을 위해 충분히 높으면 안된다.
각각의 코드에 대한 분리된 비트 발생기는 전송(pipelining)을 승인한다. 만약 모든 코드어가 결과적으로 적어도 2비트가 되는 경우에는 코드어에 대한 처리동작이 하나의 사이클 대신에 두 개의 사이클내 전송된다. 이는 만약 상기 비트발생기가 시스템의 금지영역(limiting portion)에 있는 경우에는 상기 복호기의 속도를 2배로 늘린다. 이것을 달성하기 위한 한가지 방법은 상기 실행길이 영코드어(상기 코드어는 LPS를 단자 지시한다)에 그 다음의 비복호화된 비트인 하나의 비트가 뒤따르도록 되면 된다. 이들은 RN(K)+1 코드로 불리우며 항상 적어도 2비트를 부호화한다.
상기 R2(0) 코드어와 아마도 몇 개의 다른 짧은 코드어가 속도 향상을 위해서 전송될 필요는 없음을 강조한다.
분리되는 비트발생기는 사용을 위해 함축적인 신호 표시(implicit signaling)에 적합하다. 유한 메모리를 부호화하기 위한 함축적인 신호표시는 다음의 방법으로 수행될 수 있다. 각각의 비트발생기는 대기행렬 어드레스의 크기, 예를들어, 크기 512 대기행렬(Queue)이 사용되는 경우 9비트인 계수기를 갖는다. 새로운 코드어가 비트발생기에 의해 사용될 때마다, 상기 계수기는 최대치로 가득 찬다. 임의의 비트 발생기가 코드어를 요구하는 시간마다, 모든 비트발생기를 위한 계수기가 감소된다. 계수기가 영(zero)에 이를 때마다, 상기 해당 비트발생기의 상태가 클리어된다(예를 들면, 상기 MPS계수기, 상기 R2(2)계수기와 LPS와 상기 긴 실행계수기는 클리어된다). 비록 특별한 비트발생기가 인에블되지 않는 경우도 상기 클리어링이 발생되므로, 상태계수에는 문제가 없다.
[각각의 문맥상자를 위한 메모리의 초기화]
각각의 문맥상자를 위한 메모리의 경우에 있어서는 확률측정정보를 보유하고, 부가적인 메모리 대역폭이 상기 복호기(예를들어, 상기 메모리)를 매우 빠르게 초기화 하기 위해서 요구되어진다.
복호기를 초기화하는 것은 복호기가 많은 문맥들을 구비하고, 그것들이 모두 클리어될 필요가 있을 때 문제될 수 있다. 복호기가 많은 문맥들(1K 또는 그 이상)을 부양하고 메모리가 전체적으로 클리어될 수 없을 때, 설명할 수 없을 만큼 큰, 클럭사이클의 수는 메모리를 클리어할 것이 요구된다.
문맥을 신속히 클리어하기 위해 본 발명의 몇몇 실시예에서는 각 문맥과 함께 저장된 비트, 여기서는 "초기화상태 비트"라 하는 여분의 비트를 사용한다. 이와 같이 각 문맥에 대하여 PEM 상태 (예를들어 8비트)와 함께 여분의 비트를 저장한다.
각 문맥상자를 위한 메모리와 초기 제어논리를 제24도에 보인다. 제24도에 따르면, 문맥 메모리(2401)는 레지스터(2402)와 연결된다. 일실시예에서, 레지스터(2402)는 초기화된 상태 상자를 위하여 현재 본래의 상태를 나타내는 하나의 비트 레지스터를 구비한다. 레지스터(2402)는 XOR 논리(2403)의 한 입력으로 연결된다. 또 다른 XOR 논리(2403)의 입력은 메모리(2401)의 출력으로 연결된다. XOR 논리(2403)의 출력은 유효신호이고 제어논리(2404)의 입력으로 연결된다. 제어논리(2404)의 나머지 입력들은 계수기(2405)의 출력과 문맥상자의 신호로 연결된다. 제어논리(2404)의 출력은 MUXs(2406-2407)의 선택 입력들로 연결되고 계수기(405)의 입력과 연결된다. 또 다른 제어논리(2404)의 출력은 MUX(2408)의 선택입력과 연결된다. MUX(2406)의 입력들은 계수기(2405)의 출력과 연결되고 문맥상자표시이다. MUX(2406)의 출력은 메모리(2401)와 연결된다. MUX(2407)의 출력들은 새로운 PEM상태와 연결되고 제로이다. MUX(2407)의 출력은 메모리(2401)의 한 입력과 연결되고 초기 PEM 상태는 MUX(2408)의 입력으로 연결된다. MUX(2408)의 출력은 상기 PEM 상태 아웃이다.
레지스터(2402)내의 값은 복호화동작의 모든 발생(예, 각 데이타 집합, 각 복호화된 비트)으로 구현된다. XOR 논리(2403)는 접근된 메모리 위치가 이 복호화동작에 대하여 합당한지의 여부를 결정하기 위하여 접근된 메모리 위치의 유효성과 레지스터 값을 비교한다. 그 초기화된 상태 비트가 레지스터(2402)내의 고유상태와 맞는지를 체크하는 것은 XOR 논리(2403)에서 이루어진다. 만일 메모리(2401)내의 그 데이타가 유효하지 않다면, 제어논리(2404)는 그 데이타가 부호논리에 의한 상태에 의하여 부시되고 초기 PEM 상태가 대신에 사용되는 원인이 된다. MUX(2408)을 이용하여 이것을 이룬다. 새로운 PEM 상태가 메모리에 쓰여질 때, 초기화된 비트는 그 레지스터의 현재 값으로 놓이고, 그리하여 그것은 다시 접근될 때 유효로 여겨질 것이다.
모든 문맥상자 메모리 엔트리는 그것의 초기화된 상태 비트를 또 다른 복호화동작이 시작되기 전에 그 레지스터의 현재 값으로 지정해야만 한다. 모든 메모리 위치에 걸친 계수기(2405)는 그들이 초기화된 것을 확인한다. 문맥상자가 사용되지만 그것의 PEM 상태가 갱신되지 않을 때 마다, 그 비사용된 기록주기는 테스트 또는 나타낸 메모리 위치를 계수기(2405)로 갱신하는데 사용된다. 복호화동작이 완료된 후에, 계수기(2405)가 최대값에 도달되지 않았다면, 남은 문맥상자들은 다음 동작을 실행하기 전에 초기화된다. 다음의 논리는 제어동작에 사용된다.
[빠른 적용의 PEM]
본 발명에 사용된 PEM은 이용가능한 데이타의 양에도 불구하고 빠른 적용을 허용하는 적응구조를 포함할 수 있다. 그렇게 됨으로써, 본 발명은 초기에 더 빨리 적용하고 더 많은 데이타를 이용하고, 더 정확한 추정을 제공함으로써 더 느리게 적용하는 복호화를 허용한다. 더하여, PEM은 필드프로그래머블 게이트어레이(FPGA)또는 PEM 상태 표/장치의 ASIC 구현으로 고정될 수 있다.
다음의 표 20-25는 확률추정상태장치의 수를 묘사한다. 어떤 표들은 하드웨어 비용을 절감하기 위해, R3 부호를 사용하지 않거나 긴 부호를 사용하지 않는다. 표20을 제외한 모든 표들은 첫번째 LPS가 발생될 때까지 부호화의 시작시 빠르게 적응하기 위하여 사용되어 "빠른 적응"의 특별한 상태에 사용된다. 이 빠른 적응 상태는 테이블에 초기화된다. 예를들어, 표 21에서, 복호화를 시작할 때, 현재 상태는 상태 0이다. 만일 MPS가 발생하면, 복호기는 상태 35로 변한다. MPS가 발생되는 한 복호기는 상태 35로부터 이상으로 변하고, 마침내는 상태 28로 변한다. 만일 LPS가 언제라도 발생하면, 복호기는 BOLDED 빠른 적응 상태들 외에 수신된 데이타의 수정 확률 추정상태를 나타내는 상태로 변한다.
각 표에서, MPS의 어떤 수가 수신된 후에, 복호기는 빠른 적응 상태에서 변함을 주목하라. 요구된 실시예에 있어서, 빠른 적응상태들이 존재될 때, 재시작하는 복호화과정은 제외하고 그것들을 되돌리는 기술은 없다(다른 실시예들에서, 상태표는 더 빠른 적응을 허용함으로써 이런 빠르게 적응하는 상태들을 재-입력하도록 설계될 수 있다. 빠른 적응은 데이타 입력에 의지하여 표 변화가 단지 한상태위로 또는 아래로 변하도록 현재 상태 0에 대하여 표 엔트리를 변경함에 의하여 특별한 표에서 제거될 수 있음을 주목하라.
모든 표에서 각 상태의 데이타는 그 상태, 양의 변경에서의 다음 상태(증가)와 음의 변경에서의 다음 상태(감소)에 대한 부호이다. 별표는 MPS가 감소갱신에 있어서 변경해야 할 상태를 나타낸다.
[표 20]
* Switch MPS
[표 21]
MPS 로전환
[표 22]
* Switch MPS
[표 23]
* Switch MPS
[표 24]
* Switch MPS
[표 25]
* Switch MPS
확률추정에 빠른 적응을 추가하는 것은 단지 부호화의 시작에 도움이 된다. 다른 방법들은 문맥상자의 통계치가 우선적으로 서술된 PEM 상태보다 더 신속하게 변할 때 부호화동안 적응을 재건하도록 사용될 수 있다.
부호화동안 내내 빠른 적응을 획득하는 한 방법은 PEM 상태의 갱신에 가속항을 추가하는 것이다. 이 가속은 모든 부호를 일정한 횟수(즉, 8)로 반복함으로써 PEM 상태표로 병합될 수 있다. 그리고 나서 가속항 M(즉, 8)으로 반복함으로써 PEM 상태표로 병합될 수 있다. 그리고 나서 가속항 M(즉, 음의 정소)은 갱신될 때 현재 상태로부터 추가되거나 빼질 수 있다. M이 1일 때, 그 시스템은 가속이 없는 것처럼 구동하고 가장 느린 적응이 발생한다. M이 1보다 클때, 빠른 적응이 발생한다. 초기에, M은 처음부터 빠른 적응을 제공하도록 1보다 더 큰 어떤 값으로 지정될 수 있다.
M의 값을 변경하는데 있어서 본 발명의 한 방법은 연속되는 부호어의 수에 기초한다. 예를들어, 설정된 부호어의 수가 연속적으로 발생되었다면, M의 값은 증가된다. 예를들어, 4개의 연속부호어가 "0" "0" "0" "0" 또는 "IN" "IN" "IN" "IN"이라면, M의 값은 증가된다. 다른 한편으로, "0"과 "IN" 사이의 스위칭 형태의 부호어는 M의 값을 감소시킨다. 예를들어, 4개의 연속부호어가 "0" "IN" "0" "IN" 또는 "0" "IN" "0" "IN"이라면 M의 값은 감소된다.
가속의 또 다른 방법은 각 부호가 S번 반복되고, S가 음의 정수인 상태표를 이용한다. S는 역가속변수이다. S가 하나일 때 적응은 빠르고, S가 크면 적응은 느리다.
S의 값은 처음부터 빠른 적응을 제공하도록 초기에 지정될 수 있다. 위에 설명된 것과 같은 유사한 방법을 이용하면, S의 값은 4개의 연속 부호어가 "0" "0" "0" "0" 이거나 "IN" "IN" "IN" "IN"일 때 변경될 수 있다. 그런 경우에서, S의 값은 감소된다. 대조적으로, 만일 4개의 연속부호어가 "0" "IN" "0" "IN"이거나 "IN" "0" "IN" "0"이라면 S의 값은 증가된다.
연속부호어의 정의는 여러 가지 의미를 가질 수 있다. "문맥에 의한" 시스템에 있어서, 연속부호어는 문맥상자에서의 연속적인 부호어로 적용된다. "확률에 의한" 시스템에 있어서, 연속부호어는 하나의 확률클래스에서의 연속부호어로 적용된다.
양자택일로, 다른 시스템에서의 연속부호어는 (문맥상자 또는 확률클래스에 관계없이) 전체적으로 연속적인 부호어로 적용된다. 이 세가지 예에서, 부호어의 기록을 얻도록 요구된 저장비트들은 각각 3X 문맥상자의 수, 3X 확률클래스의 수와 3이다.
각 문맥상자에 대해 획득한 가속은 최상의 적응을 제공할 수 있다. 빈약한 탐색은 종종 비부호화된 데이타에서 전체적인 변경을 일으키므로, 가속결정은 전체적으로 또한 좋은 적응을 제공한다.
[시스템 응용]
압축시스템의 장점은 데이타 집합에 대한 저장구조가 감소하는 것이다. 본 발명에 의한 병렬시스템은 무손실 무효화시스템에 의하여 현재 이행되는 응융을 대신할 수 있고, 오디오, 문서, 데이타베이스, 컴퓨터를 실행할 수 있는, 또는 다른 디지탈 데이타, 신호 또는 기호들을 구동하는 시스템에 적용될 수 있다. 전형적인 무손실 부호화시스템은 JFEG와 MPEG와 같은 화상압축 표준에 있어서 팩시밀리 압축, 데이타 베이스 압축, 그래픽 화상의 비트맵 압축, 그리고 전송계수의 압축을 포함한다. 본 발명은 작은 효율의 하드웨어 구현과 고속을 요구하지 않는 응용에서 조차 훌륭한 선택적인 상대적으로 빠른 소프트웨어 구현을 허용한다.
본 발명이 선행기술에 비한 진짜 장점은 부호화에 대해 특별하게 고속에서 구동하는 가능성이다. 이 방법에서, 본 발명은 고속 컴퓨터 네트워크같은 고가의 고속채널을 충분하게 이용할 수 있다. 제28도는 그런 시스템을 나타내고, 상기 시스템에 있어서, 방송데이타 또는 고속 컴퓨터 네트워크는 데이타를 부호화시스템에 제공한다.
그 부호화시스템은 출력데이타를 생산하도록 그 데이타를 병렬로 부호화한다. 현재 (Q-코더 같음) 하드웨어 엔트로피는 이런 시스템의 처리량은 느리다. 모든 이런 시스템들은 고가의 높은 대역폭을 가지도록 설계된다. 그것은 복호기가 느린 처리량을 가지기 위하여 계수기를 생기게 한다. 본 발명의 병렬시스템은 단지 이런 높은 대역폭을 지니지 않고, 그것은 실제적으로 그 데이타가 압축된 형태로 전송될 수 있기 때문에 유효한 대역폭을 증가시킨다.
본 발명에 의한 병렬시스템은 또한 ISDN, CD-ROM, SCSI 같은 적당히 빠른 채널외에 더 유효한 대역폭을 얻는데 적절하다. 그런 대역폭에 매칭된 시스템을 제29도에 보여준다. 상기와 같이 CD-ROM, Ethernet, SCSI(Small Computer Standard Interface) 또는 다른 유사한 자원값은 자원으로부터 데이타는 부호화시스템(2901)과 연결되고, 그 부호화시스템은 그 데이타를 출력을 얻기 위하여 수신하고 복호화한다. 이 채널들은 여전히 몇몇 코더들보다 빠르다. 종종 이런 채널들은 멀티미디어에 근거한 실시간 비디오 또는 컴퓨터 같은 채널이 가진 것보다 더 많은 대역폭을 요구하는 데이타 자원을 제공하곤 한다. 본 발명에 의한 시스템은 대역폭 정합역할을 수행할 수 있다.
본 발명에 의한 시스템을 HDTV(High Definition Television)과 MPEG 비디오 스탠다드 같은 실시간 비디오 시스템의 엔트로피 코더부에 대한 특별한 선택이다. 상기와 같은 시스템을 제30도에 보인다. 제30도에서, 실시간 비디오 시스템은 압축된 화상데이타와 연결되는 복호화시스템(3001)을 포함한다. 시스템(3001)은 데이타를 복호화하고 그것을 무손실 복호기(3002)로 출력한다. 무손실 복호기(3002)는 전송, 색변환 그리고 부샘플링하는 HDTV 또는 MPEG 복호기부이다. 모니터(3003)는 텔레비젼 또는 비디오 모니터일 수 있다.
그러나 본 발명의 많은 변경과 변용은 이상의 설명을 읽은 후에 기술에 있어서 원기술의 사람에게 아무 의심없이 장치로 될 것이므로, 묘사의 방식에 의하여 서술되고 보여진 특별한 실시예는 결코 고의로 한계지으려 한 것이 아님을 이해할 것이다.
그래서, 앞서 실시예의 세부사항에 대한 언급은 본 발명의 필수요소를 열거한 청구의 범위를 고의로 한계 지은 것이 아니다.
Claims (111)
- 데이타열에 응답하여 다수의 부호어로 구성되고 데이타열을 대표하는 부호어정보를 생성하며 병렬로 처리되는 데이타열의 데이타로부터 다중부호어를 생성하는 단계; 및 부호어정보에 응답하여 부호화된 데이터를 생성하며, 출력되는 부호어순서가 각 부호어에 의해 표시되는 데이터열의 시작부분에 기초하도록 부호어정보의 다수 부호어의 각각이 출력되는 단계로 이루어진 데이타열 부호화방법.
- 제1항에 있어서, 다수의 부호어 각각이 각 실행의 초기에 출력되는 것을 특징으로 하는 데이타열 부호화방법.
- 제1항에 있어서, 상기 부호화된 데이타를 생성하는 단계가 가변길이부호어를 고정길이 데이타구조로 결합하는 단계를 포함함을 특징으로 하는 데이타열 부호화방법.
- 제3항에 있어서, 상기 각 고정길이 데이타구조가 인터리브어를 구비함을 특징으로 하는 데이타열 부호화방법.
- 제1항에 있어서, 부호화된 데이타를 출력하여 복호순서로 부호어를 정돈하는 단계를 더 포함함을 특징으로 하는 데이타열 부호화방법.
- 제1항에 있어서, 부호어를 정돈하는 단계를 더 포함함을 특징으로 하는 데이타열 부호화방법.
- 제1항에 있어서, 상기 부호어정보를 생성하는 단계가 부호어의 확률상태를 발생하는 단계와, 상기 확률상태를 근거하여 비트발생코드를 선택하는 단계와, 확률클래스와 연관된 계수를 획득하기 위하여 메모리에 접근하는 단계를 구비함을 특징으로 하는 데이타열 부호화방법.
- 데이타열을 수신하여 부호어를 포함하는 부호어정보를 생성하며 데이터를 병열로 처리하여 다중 부호어를 생성하는 부호기와, 상기 부호기에 연결되어 부호기로 부터 입력되는 부호어정보에 응답하여 부호화된 데이터를 생성하여 복호기순서로 부호기에 의해 생성된 부호어를 재정돈해서 각 부호어에 의해 표시되는 데이터열의 시작부분을 근거로 하여 부호어의 순서를 결정하는 재정돈장치를 구비함을 특징으로 하는 데이타열을 부호화하는 부호화장치.
- 제8항에 있어서, 상기 재정돈장치가 부호어의 크기를 지시하는 방법으로 상기 부호어를 저장하는 것을 특징으로 하는 부호화장치.
- 제9항에 있어서, 1N 부호어가 재정돈되어 최적 신호 "1"비트가 각 부호어길이를 나타내는 것을 특징으로 하는 부호화장치.
- 제8항에 있어서, 상기 재정돈장치가, 각 실행의 초기에 부호어정보의 다수 부호어 각각을 생성하는 적어도 하나의 실행계수 재정돈장치와, 가변길이 부호어를 고정길이 데이터구조로 결합하는 적어도 하나의 비트팩장치로 이루어진 것을 특징으로 하는 부호화장치.
- 제11항에 있어서, 상기 각각의 고정길이 데이터구조의 각각이 인터리브어를 구비함을 특징으로 하는 부호화장치.
- 제8항에 있어서, 상기 재정돈장치가 부호어를 정돈함을 특징으로 하는 부호화시스템.
- 제13항에 있어서, 상기 재정돈장치에 연결되어 순서대로 부호어를 저장하는 메모리를 더 포함하는 것을 특징으로 하는 부호화장치.
- 제8항에 있어서, 상기 부호기가, 문맥모델과, 상기 문맥모델과 연결되는 확률추정장치와, 상기 확률추정장치에 연결되어 데이타열에 반응하여 부호어를 생성하는 비트발생기로 이루어진 것을 특징으로 하는 부호화장치.
- 제15항에 있어서, 상기 부호기가 다수의 실행계수를 저장하는 메모리를 구비하며, 상기 메모리가 확률추정장치의 확률클래스를 이용하여 다수의 실행계수의 하나를 제공하도록 부호어정보의 일부를 출력하는 비트발생기로 접근됨을 특징으로 하는 부호화장치.
- 제15항에 있어서, 상기 비트발생기구조가, 색인과 MPS/LPS 표시에 응답하여 부호어정보를 제공하는 비트발생기와, 상기 비트발생기에 연결되어 비트발생기에 실행계수를 제공하는 메모리로 구성되며, 상기 비트발생기가 색인을 근거로 하여 메모리를 판독하고 상기 판독에 의해 얻어지는 데이터를 기초로 하여 비트발생을 실행하는 것을 특징으로 하는 부호화장치.
- 제17항에 있어서, 상기 부호어정보가 MPS/LPS 표시가 실행의 시작을 구성하는지를 여부를 나타내는 제1신호와, MPS/LPS 표시가 실행의 종료를 구성하는지 여부를 나타내는 제2신호와, 부호어출력으로 이루어진 것을 특징으로 하는 부호화장치.
- 제11항에 있어서, 상기 비트팩장치가 인터리브어를 정돈하여 부호화된 정보를 각 열의 각 인터리브어의 N번째 이전 부호어에 따라 정돈된 인터리브어로서 생성하는 것을 특징으로 하는 부호화장치.
- 제11항에 있어서, 상기 재정돈장치는 부호열로 출력되는 인터리브어를 선택하는 스누퍼복호기를 구비함을 특징으로 하는 부호화장치.
- 제20항에 있어서, 상기 재정돈장치는, 다수의 비트팩장치와 연결되는 다수의 실행계수 재정돈장치를 구비하며, 사기 비트팩장치의 각각은 인터리브어를 생성하고 상기 스누퍼복호기는 부호열로 출력되는 다수의 인터리브어로부터 하나의 인터리브어를 선택하는 것을 특징으로 하는 부호화장치.
- 제11항에 있어서, 부호어정보가 TIME STAMP를 포함하고 재정돈장치가 연관된 TIME STAMP에 근거한 인터리브어를 출력하기 위한 논리를 구비함을 특징으로 하는 부호화장치.
- 제22항에 있어서, 상기 재정돈장치가 다수의 비트팩장치에 연결되는 실행계수재정돈장치를 구비하고, 상기 논리가 연관된 시간 스탬프에 근거하여 출력되는 인터리브어의 원인이 되는 것을 특징으로 하는 부호화장치.
- 제23항에 있어서, 상기 인터리브어가 가장 오래된 시간 스탬프에 근거하여 출력되는 것을 특징으로 하는 부호화장치.
- 제11항에 있어서, 단일큐가 다수의 비트팩장치에 부호어를 공급하고, 다수의 비트팩장치는 부호열의 일부분으로써 출력되는 인터리브어를 생성하는 것을 특징으로 하는 부호화장치.
- 제25항에 있어서, 상기 단일 큐는 단일 실행계수 재정돈장치를 구비하고, 논리는 부호열로써 출력되는 다음의 인터리브어를 결정하는 것을 특징으로 하는 부호화장치.
- 제11항에 있어서, 상기 단일 큐는 단일 비트팩장치에 부호어를 공급하는 것을 특징으로 하는 부호화장치.
- 부호기에 의해 생성되는 정보를 복호화하는 복호기를 포함하는 압축장치에 사용되는 부호화장치에 있어서, 데이터에 응답하여 부호어 정보를 생산하여 출력하는 부호기와, 상기 부호기에 연결되어 부호기로부터 입력되는 부호어정보에 응답하여 부호화된 데이타열을 생성하며, 각 부호어를 대응하는 데이타의 시작위치에 위치시키는 실행계수 재정돈장치 및 상기 실행계수 재정돈장치에 연결되어 상기 실행계수 재정돈장치로부터 부호어를 수신하여 가변길이부호어를 다중의 고정길이 인터리브어로 결합하고 복호기에 의해 획득된 순서로 다중의 고정길이 인터리브어를 출력하는 비트팩장치로 이루어진 재정돈장치를 구비한 것을 특징으로 하는 부호화장치.
- 제28항에 있어서, 상기 재정돈장치는 재정돈 동안 부호어를 저장하는 메모리를 더 포함하는 것을 특징으로 하는 부호화장치.
- 제28항에 있어서, 상기 부호기가 문맥모듈과, 상기 문맥모듈과 연결되는 확류추정장치와, 상기 확률추정장치와 연결되는 비트열발생기를 구비함을 특징으로 하는 부호화장치.
- 제30항에 있어서, 상기 실행계수 재정돈장치가, 부호어를 저장하는 제1메모리와, 상기 제1메모리에 큐로서 주소를 지정하는 제1인디케이터 및 제2인디케이터를 구비하며, 상기 제1인디케이터가 제1메모리의 출력으로써 표시되는 제1엔트리를 가리키고 제2인디케이터가 제1메모리에서 다음의 유용하고 비할당된 저장위치로서 표시되는 제2엔트리를 가리키는 것을 특징으로 하는 부호화장치.
- 제31항에 있어서, 각 색인을 위해 부호어를 저장하기 위한 제1메모리에서 현재 할당되는 위치에 부합하는 주소정보를 저장하는 포인터메모리를 더 포함하는 것을 특징으로 하는 부호화장치.
- 제32항에 있어서, 상기 각 색인이 확률클래스를 나타냄을 특징으로 하는 부호화장치.
- 제32항에 있어서, 상기 각 색인이 최소한 하나의 문맥을 나타냄을 특징으로 하는 부호화장치.
- 제28항에 있어서, 상기 재정돈장치가 부호어를 저장하는 부호어 메모리큐와, 출력을 위해 적어도 하나의 부호어를 표시하는 헤드포인터와, 부호어 메모리큐로 부호어를 삽입하는 적어도 하나의 메모리위치를 표시하는 꼬리포인터를 구비하는 것을 특징으로 하는 부호화장치.
- 제35항에 있어서, 부호어 메모리큐의 각 부호어엔트리는 유효한 표시를 포함하며, 헤드포인터가 부호어의 주소를 특정짓고 부호어를 위한 유효표시가 그것의 유효성을 나타낼 때 부호어메모리큐로부터 부호어가 출력되는 것을 특징으로 하는 부호화장치.
- 제28항에 있어서, 상기 비트팩장치는 재정돈장치로부터 부호어를 수신하고 다수의 열을 위해 인터리브어와 부호어를 혼합하는 비트팩킹논리를 포함하는 것을 특징으로 하는 부호화장치.
- 제37항에 있어서, 상기 비트팩킹논리는 다수의 축적기와 다수의 레지스터를 더 포함하며, 연관된 열에 대한 인터리브어를 저장하는 다수의 레지스터 각각이 연관된 레지스터에서 다음 위치를 나타내어 열에 대한 현재 부호어를 저장하는 다수 어큐뮬레이터의 하나 및 다수 열의 하나와 연관되어 다수의 열중 하나의 열에 대한 각 부호어가 연관된 어큐뮬레이터의 값에 근거하여 상기 하나의 열과 관련된 레지스터의 문맥에 부가되는 것을 특징으로 하는 부호화장치.
- 제38항에 있어서, 다수의 어큐뮬레이터에 연결되어 상기 다수의 어큐뮬레이터로부터의 적어도 하나의 신호에 응답하여 부호어를 쉬프팅시키는 쉬프터를 구비하고, 상기 부호어는 각 인터리브어내에 적어도 2개의 부호어의 팩부위에 대한 어큐뮬레이터 값을 기준으로 하여 다수의 레지스터 중 하나의 문맥에 부가되도록 쉬프트되는 것을 특징으로 하는 부호화장치.
- 제37항에 있어서, 복호기에 의해 할당되는 순서로 인터리브어를 저장하는 재정돈메모리를 더 포함하는 것을 특징으로 하는 부호화장치.
- 제40항에 있어서, 다수의 인터리브데이타열에 대응하는 다수의 포인터를 더 포함하며, 다수의 포인터 각각은 다수 열의 각각에 대한 다음 인터리브어를 위한 재정돈메모리에서의 위치를 할당하는 것을 특징으로 하는 부호화장치.
- 제28항에 있어서, 각각이 부호화된 데이타열의 하나와 관련되는 다수의 실행계수 재정돈장치와, 각 부호화된 데이터열을 위한 인터리브어를 생성하는 다수의 비트팩장치와, 다수의 비트팩장치로부터 인터리브어를 부호화된 출력으로써 선택하는 복호기를 더 포함하는 것을 특징으로 하는 부호화장치.
- 제28항에 있어서, 각각이 부호화된 데이타열의 하나와 연관되어 다수의 부호어 및 다수의 부호어 각각과 연관된 시간 스탬프를 생성하는 다수의 실행계수 재정돈장치와, 각 부호화된 데이터열에 대한 인터리브어를 생성하는 비트팩장치와, 인터리브어의 각각에서 부호어의 시간스탬프에 근거하여 인터리브어의 각각을 선택하는 논리를 더 포함하는 것을 특징으로 하는 부호화장치.
- 제43항에 있어서, 상기 논리가 가장 오래된 시간 스탬프를 가진 부호어를 포함한 인터리브어를 선택함을 특징으로 하는 부호화장치.
- (정정) 제28항에 있어서, 상기 비트팩장치가 다수의 열중 하나로부터 부호어를 수신하도록 연결된 다수의 비트팩킹장치와 다음 열에 근거한 다수의 비트팩장치 각각으로부터 출력되는 인터리브어를 선택하기 위한 논리를 구비함을 특징으로 하는 부호화장치.
- (정정) 제28항에 있어서, 상기 재정돈장치가 제한 메모리를 구비함을 특징으로 하는 부호화장치.
- 데이타에 근거하여 색인들을 생성하는 색인발생기와, 상기 색인발생기에 연결되어 색인발생기로부터 입력되는 색인에 근거하여 확률추정을 제공하는 상태표를 구비하며, 상기 상태표는 제1다수상태와 제2다수상태를 포함하고 각각의 상태가 부호와 대응하며, 제1다수상태에서 이행이 실행될 때의 상기 제1다수상태에 대응하는 서로 다른 부호들 사이의 이행이 제2다수상태에서 이행될 때의 상기 제2다수상태에 대응하는 서로 다른 부호들 사이의 이행 보다 빠른 것을 특징으로 하는 데이타를 처리하는 부호화장치.
- 제47항에 있어서, 다수의 제1상태가 설정된 수의 색인만을 위해 사용되는 것을 특징으로 하는 부호화장치.
- 제47항에 있어서, 다수의 제1상태가 상태표를 초기에 색인화하는 설정된 수의 색인만을 위해 사용되는 것을 특징으로 하는 부호화장치.
- 제47항에 있어서, 제1다수상태의 각각이 R2부호와 연관된 것을 특징으로 하는 부호화장치.
- 제48항에 있어서, 제1다수상태가 제2다수상태로의 적어도 하나의 이행을 포함하여 설정된 수의 색인후에 상태표가 제1다수상태로부터 제2다수상태로 이행되는 것을 특징으로 하는 부호화장치.
- 제47항에 있어서, 제1다수상태의 각각이 서로 다른 부호와 연관되는 것을 특징으로 하는 부호화장치.
- 제47항에 있어서, 상태표가 최소가능기호에 응답하여 제1다수상태의 하나로부터 제2다수상태중 하나로 이행되는 것을 특징으로 하는 부호화장치.
- 제47항에 있어서, 상태장치가 최대가능기호에 응답하여 상태를 증가시키는 것을 특징으로 하는 부호화장치.
- 데이터를 기초로 하여 색인을 발생하는 색인발생기와, 상기 색인발생기에 연결되어 색인발생기로부터 입력되는 색인에 근거하여 확률추정을 제공하며, 각각이 부호와 대응하는 다수의 상태를 포함하고 모든 부호가 설정된 수만큼 반복되는 상태표로 구성되며, 제1기간 동안의 상태들 사이의 제1이행비율이 제2기간동안의 제2이행비율과는 다르게 되도록 상태표의 상태들 사이의 이행이 수정가능한 가속항에 근거하여 발생하는 것을 특징으로 하는 데이터를 처리하는 부호화장치.
- 제55항에 있어서, 상태표의 갱신이 가속항이 증가 또는 감소에 의한 PEM 상태의 수정으로 이루어진 것을 특징으로 하는 부호화장치.
- 제56항에 있어서, 가속항이 설정된 수로 구성될 때 적응적 가속이 발생하지 않는 것을 특징으로 하는 부호화장치.
- 제56항에 있어서, 가속항이 실행 부호어의 수를 기초로 하여 갱신되는 것을 특징으로 하는 부호화장치.
- 제58항에 있어서, 실행 부호어가 문맥내의 실행 부호어로 이루어진 것을 특징으로 하는 부호화장치.
- 제58항에 있어서, 실행 부호어가 확률클래스내의 실행 부호어로 이루어진 것을 특징으로 하는 부호화장치.
- 제56항에 있어서, 가속항이 교대하는 부호어의 수에 근거하여 갱신되는 것을 특징으로 하는 부호화장치.
- (2회정정) 데이타열을 수신하는 다수의 비트열발생기와, 상기 다수의 비트열발생기에 연결되어 비트열발생기에 확률추정을 제공하는 상태표로 구성되며, 상기 다수의 비트열발생기는 n의 다중값에 대한 Rn(k) 부호를 사용하는 확률추정에 응답해서 데이타열의 각 부호어에 대한 복호화된 결과를 생성하고 상태표는 제1다수상태 및 제2다수상태를 포함하여 제1다수상태들 사이에서 이행이 실행될 때의 제1다수상태의 서로 다른 부호들 사이의 이행이 제2다수상태들 사이에서 이행이 이행이 실행될 때의 부호들 사이의 이행 보다 더 빠른 것을 특징으로 하는 다수의 부호어의 데이타열을 복호화하는 엔트로피복호기.
- 제62항에 있어서, 상기 제1다수상태의 각각이 R2(k)부호를 포함하는 것을 특징으로 엔트로피복호기.
- 제62항에 있어서, 상기 제1다수상태가 초기화 동안에만 사용되는 것을 특징으로 엔트로피복호기.
- 데이타열을 수신하는 다수의 비트열발생기와, 상기 비트열발생기에 연결되어 색인에 근거하여 생성된 확률추정을 상기 비트열 발생기에 제공하고 각각이 부호에 대응하는 다수의 상태를 포함하여 모든 부호들이 설정 횟수만큼 반복하는 상태표로 구성되며, 제1기간 동안의 상태들 사이의 제1이행비율이 제2기간 동안의 제2이행비율과는 다르도록 상태표의 상태들 사이의 수정가능한 가속항을 근거로 발생하는 것을 특징으로 하는 다수 부호어의 데이타열을 복호화하는 엔트로피복호기.
- 제62항에 있어서, 상태표의 모든 부호들이 일정한 회수 반복하는 것을 특징으로 엔트로피복호기.
- 제66항에 있어서, 상태표의 갱신이 가속항에 의한 PEM상태의 수정으로 이루어진 것을 특징으로 엔트로피복호기.
- 제67항에 있어서, 가속항이 설정된 수로 구성될 때 적응적가속이 발생하지 않는 것을 특징으로 엔트로피복호기.
- 제67항에 있어서, 상기 가속항이 실행 부호어의 수를 기초로 하여 갱신되는 것을 특징으로 엔트로피복호기.
- 제67항에 있어서, 상기 가속항이 교대하는 부호어의 수를 기초로 하여 갱신되는 것을 특징으로 엔트로피복호기.
- 데이타열을 수신하여 정렬된 부호화 데이터를 출력하며 가변길이 쉬프팅장치를 포함하여 데이터열로부터 부호어를 쉬프트하는 쉬프터와, 상기 쉬프터와 연결되어 부호어형태를 결정하는 부호어로서 상기 정렬된 부호화 데이터를 수신하는 실행길이 복호기와, 상기 실행길이 복호기에 연결되어 실행길이 복호기가 실행길이를 발생하고 각 부호어에 응답하는 LPS의 생성여부를 표시하도록 실행길이 복호기용 부호를 결정하여 출력하는 확률추정장치와, 쉬프팅장치에 응답하여 열로부터 부호어를 수신하도록 연결되어 정렬된 부호화 데이터를 일련의 부호어로서 출력하는 다수의 레지스터를 포함하여 구성된 복수의 인터리브어를 복호화하는 복호기.
- 제71항에 있어서, 상기 레지스터의 일부가 다수의 레지스터중 다른 레지스터로부터 혹은 데이타열로부터 데이터를 수신하도록 연결되는 것을 특징으로 하는 복호기.
- 제71항에 있어서, 상기 가변길이쉬프팅장치는 열로부터 다수의 레지스터로 데이터를 쉬프트하는 배럴쉬프트를 포함하는 것을 특징으로 하는 복호기.
- 제71항에 있어서, 상기 쉬프터는 다수의 레지스터를 갖는 FIFO로 구성되며, 레지스터의 각각은 인터리브된 부호화 데이터로부터 데이타를 입력으로 수신하고 상기 다수의 레지스터중 적어도 하나가 상기 다수의 레지스터중 다른 레지스터로부터 부호어를 수신하도록 연결된 것을 특징으로 하는 복호기.
- 제71항에 있어서, 상기 쉬프터는, 부호어 데이타를 수신하도록 연결되어 각각이 다수열의 하나와 구별되도록 연결되는 제1다수레지스터와, 상기 제1다수레지스터의 각각으로부터 부호어 데이타를 다수열의 하나로부터의 입력 및 출력 부호어로서 동시에 수신하도록 상기 제1다수레지스터에 연결된 멀티플렉서와, 상기 멀티플렉서의 출력과 연결되어 정렬된 부호화데이터 같이 상기 멀티플렉서로부터 부호어데이터를 쉬프트하는 배럴쉬프터와, 상기 배럴쉬프터와 연결되어 부호어를 쉬프트하는 비트의 수를 나타내는 논리와, 상기 멀티플렉서(1605)로부터 부호어를 수신하도록 연결된 다수의 레지스터를 포함하며, 상기 다수 레지스터의 각각은 인터리브된 부호화데이타로부터의 입력데이터로서 데이터를 수신하고 상기 다수 레지스터의 적어도 하나가 다수레지스터의 다른 하나로부터 부호어를 수신하도록 연결된 FIFO구조로 이루어진 것을 특징으로 하는 복호기.
- 데이타를 수신하는 FIFO구조와, 문맥을 제공하는 문맥모듈과, 문맥모델에 연결되어 상태정보를 저장하여 상기 문맥모듈에 의해 제공되는 각 문맥에 응답하여 상태정보를 제공하는 메모리와, FIFO구조 및 메모리로에 연결되어 상기 FIFO구조와 메모리로부터 부호화 데이타를 수신하여 FIFO구조에 의해 제공된 부호어를 메모리의 상태정보를 사용하여 복호화하고 다수의 부호를 위해 생성되는 실행계수를 상기 문맥모듈에 제공하는 다수의 복호기로 구성된 데이타를 복호화하는 복호화장치.
- 제76항에 있어서, 상기 FIFO구조가 부호화된 데이타를 문맥과 확률클래스와 무관한 다수의 복호기에 공급하는 것을 특징으로 하는 복호화장치.
- 제76항에 있어서, 상기 복호기가 실행계수를 저장하며 확률클래스에 근거하여 접근 가능한 실행계수메모리로 이루어진 것을 특징으로 하는 복호화장치.
- 제76항에 있어서, 상기 FIFO구조가 2개의 복호기에 대한 데이타를 제공하는 것을 특징으로 하는 복호화장치.
- 제76항에 있어서, 상기 FIFO구조가 각 복호기에 하나씩 다수의 출력을 구비한 것을 특징으로 하는 복호화장치.
- 제80항에 있어서, 상기 FIFO구조가 한쌍의 멀티플렉서와 상기 한쌍의 멀티플렉서를 선택하여 부호어를 각 복호기에 공급하는 제어논리를 구비한 것을 특징으로 하는 복호화장치.
- 제81항에 있어서, 상기 한싸의 멀티플렉서가 다수의 복호기중 하나로부터 수신되는 요구에 기초하여 제어논리에 의해 선택되는 것을 특징으로 하는 복호화장치.
- 입력데이타를 수신하도록 연결되어 부호화 데이타를 다수의 열형태로 생성하여 표준의 집합을 근거로 해서 상기 부호화 데이타를 다수열의 하나에 할당하는 부호화부와, 부호화된 데이타의 다수열을 저장하며, 부호화부에 연결되어 과포화상태인 경우 덜 중요한 부호화 데이타를 폐기하는 고정 크기 메모리를 구비한 것을 특징으로 하는 입력데이타를 부호화하는 부호화장치.
- 제83항에 있어서, 상기 메모리는 다수의 저장영역을 구비하며 상기 다수의 저장영역에 저장된 부호화 데이타는 중요등급의 부호화 데이터로 이루어진 것을 특징으로 하는 부호화장치.
- 제84항에 있어서, 하나의 중요등급의 부호화 데이타가 다른 중요등급의 부호화 데이타를 저장하는 메모리의 적어도 하나의 저정영역에 저장되는 것을 특징으로 하는 부호화장치.
- 제85항에 있어서, 상기 하나의 중요등급의 부호화 데이타가 메모리의 적어도 하나의 저장영역의 다른 중요등급의 부호화 데이타에 겹쳐 기록되는 것을 특징으로 하는 부호화장치.
- 계수값에 기초하여 접근하는 다수의 문맥을 초기화하는 단계와, 현재 문맥의 PEM상태를 구하는 단계로 구성되며, 상기 PEM상태를 구하는 단계는 PEM상태를 표시하는 각 문맥을 위해 저장표시에 접근하는 단계, 현재 문맥의 수와 계수값을 비교하여 현재의 작동에 대해 접근된 메모리위치가 명백한지를 결정하여 위치가 이미 초기화되었음을 계수값이 표시하면 데이타를 명백하게 결정하는 단계, 문맥에 대해 초기 PEM상태를 사용하고 접근된 메모리위치의 데이타가 명백하지 않을 때 문맥에 대한 현재 PEM상태를 무시하는 단계, 데이타가 명백한 경우 문맥을 위해 현재 할당된 PEM상태를 사용하는 단계를 구비하여 이루어진 데이타를 부호화하는 장치의 다수 문맥을 초기화하는 방법.
- 제87항에 있어서, PEM상태가 변하는 경우 새로운 PEM상태를 기록하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- (2회정정)문맥상자를 제공하는 문맥모델과, 상기 문맥모델과 연결되어 문맥상자에 기초하여 확률상태를 제공하는 메모리와, 상기 메모리에 연결되어 확률상태에 기초하여 확률클래스를 발생하는 논리와, 상기 논리에 연결되어 상기 확률클래스를 기초로 하여 가능 신호를 발생하는 복호기와, 상기 복호기에 부호화된 데이타를 수신하도록 연결된 다수의 비트발생기로 구성되며, 상기 다수 비트발생기의 각각이 적어도 하나의 별개 부호에 전용되고 복호기가 확률클래스에 기초하여 다수 비트발생기중 하나를 인에이블시켜서 다수 비트발생기중 하나가 부호화된 데이타를 복호화하는 것을 특징으로 하는 입력데이타를 복호화하는 복호기.
- 제89항에 있어서, 다수 비트발생기의 적어도 하나가 R-부호를 사용하여 데이타를 복호화하고 다수 비트발생기의 적어도 하나가 비 R-부호를 사용하여 데이타를 복호화하는 것을 특징으로 하는 복호기.
- 제89항에 있어서, 짧은 실행길이용 비트발생기가 R-부호 복호기로서 작동하는 것을 특징으로 하는 복호기.
- 제89항에 있어서, 긴 실행길이용 비트발생기가 제1설정길이의 부호를 처리하는 짧은 실행장치와 다른 나머지 비트를 처리하고 상기 나머지 비트가 출력하게 된다면 이를 결정하는 긴실행장치로 이루어진 것을 특징으로 하는 복호기.
- 문맥상자를 제공하는 단계와, 확률상태를 얻기 위해 문맥상자를 이용하여 메모리에 접근하는 단계와, 상기 확률상태를 기초로 하여 확률클래스를 발생하는 단계와, 다수의 비트발생기의 하나를 인에이블시켜 다수 비트발생기의 각각이 복호화에 사용되는 적어도 하나의 별개 부호에 전용되고 상기 다수 비트발생기의 하나가 부호화된 데이타를 복호화하는 단계로 구성된 입력데이타를 복호화하는 방법.
- 문맥상자를 제공하는 문맥모델과, 상기 문맥모델에 연결되어 문맥상자를 기초로 하여 확률상태를 제공하는 메모리와, 상기 메모리에 연결되어 확률상태를 기초로 하여 확률클래스를 발생하는 논리와, 상기 논리에 연결되어 확률클래스를 기초로 하여 인에이블신호를 발생하는 부호기와, 입력된 데이타가 수신되도록 상기 부호기에 연결된 다수의 비트발생기로 구성되며, 상기 다수 비트발생기의 각각이 적어도 하나의 별개 부호에 전용되고 부호기가 확률클래스에 기초하여 다수 비트발생기의 하나를 인에이블하여 상기 다수 비트발생기의 하나가 입력데이타를 부호화하는 것을 특징으로 하는 입력데이타를 부호화하는 부호화장치.
- 제94항에 있어서, 다수의 비트발생기중 적어도 하나가 R-부호를 사용하여 데이타를 부호화하고 상기 다수의 비트발생기중 적어도 하나가 비 R-부호를 사용하여 데이타를 부호화하는 것을 특징으로 하는 부호화장치.
- 제94항에 있어서, 짧은 실행길이용 비트발생기가 R-부호 부호기로서 작동하는 것을 특징으로 하는 부호화장치.
- 제94항에 있어서, 긴 실행길이용 비트발생기가 제1설정길이의 부호를 처리하는 짧은 실행장치와 나머지 비트를 처리하여 상기 나머지 비트가 출력된다면 이를 결정하는 긴 실행장치로 이루어진 것을 특징으로 하는 부호화장치.
- (2회정정)문맥상자를 제공하는 단계와, 확률상태를 얻기 위해 문맥상자를 사용하여 메모리에 접근하는 단계와, 상기 확률상태를 기초로 하여 확률클래스를 발생하는 단계와, 다수 비트발생기의 하나를 인에이블시켜서 상기 다수 비트발생기의 각각이 적어도 하나의 별개 부호에 전용되어, 비트열발생기의 하나가 입력데이타를 부호화하도록 상기 하나의 별개 부호만을 부호화에 사용하는 단계를 구비한 입력데이타를 부호화하는 방법.
- 새로운 실행이 시작될 때 부호화 동안 사용된 부호어 메모리의 크기에 대응하는 계수값이 각 실행계수에 관계된 계수기에 로딩되어 실행 계수에 대한 새로운 부호어가 호출될 때 상기 실행값이 로딩되는 단계와, 부호어가 호출되는 시간마다 실행값을 감소하는 단계와, 계수가 0으로 감소될 때 상기 새로운 부호어에 연관된 비트발생상태를 클리닝하는 단계를 구비한 복수의 부호어를 가진 부호화 데이타를 복호화하는 방법.
- 제99항에 있어서, 각 실행계수가 PEM상태와 대응하는 것을 특징으로 하는 방법.
- 제99항에 있어서, 각 실행계수가 문맥상자와 대응하는 것을 특징으로 하는 방법.
- 부호어가 요청될 때마다 현재 회수표시를 포함하는 계수값을 증가하는 단계와, 제1부호어가 시작될 때 계수값을 저장된 횟수표시로 저장하는 단계와, 부호기 메모리의 크기에 더해진 저장된 회수표시를 현재의 횟수표시와 비교하여, 현재의 회수표시가 부호기 메모리의 크기가 더해진 저장된 회수표시 보다 클 경우 제1부호어에 대한 비트발생상태가 클리어되고 제2부호어가 요청되는 단계를 구비한 것을 특징으로 하는 다수의 부호어를 갖는 부호화 데이타를 복호화하는 방법.
- 제102항에 있어서, 상기 저장된 회수표시는 시간 스탬프를 포함하는 것을 특징으로 하는 방법.
- 제102항에 있어서, 후속 부호어를 위해 저장된 횟수표시를 다시 사용하는 단계가 더 포함된 것을 특징으로 하는 방법.
- 부호어에 대응하는 색인을 상기 부호어가 요청될 때 큐에 저장하는 단계와, 큐에 색인의 엔트리를 무효로써 표시하는 단계와, 엔트리에 부호어를 저장하고 부호어가 완전한 경우 상기 엔트리를 유효로써 표시하는 단계와, 복호화되는 데이타를 큐로부터 출력하여 큐엔트리가 유효인 경우 복호화를 위해 부호어를 출력하는 단계와, 큐엔트리로부터 데이타를 출력하고 큐로부터 데이타가 출력될 때 큐엔트리가 무효로 표시되는 경우 복호기에 데이타가 무효임을 표시하여 무효로 표시된 큐로부터 수신되는 데이타에 응답해서 복호기에 의해 비트발생 상태정보를 클리어하는 단계를 구비한 다수의 부호어를 갖는 부호화 데이타의 복호화 방법.
- 다수의 집적회로로 구성되어 문맥을 제공하는 문맥모델링장치와, 상기 문맥모델링장치에 연결되어 상태정보를 저장하고 문맥모델링장치에 의해 제공되는 각 문맥에 응답하여 상기 상태정보를 제공하는 메모리와, 상기 메모리에 연결되어, 최소가능기호가 후속되지 않은 최적 기호의 적어도 하나의 비-최대길이실행을 포함하는 다수의 R-부호와 같은 상태정보를 사용해서 부호어를 복호화하는 다수의 복호기를 구비한 부호화데이타를 복호화하는 복호기.
- 제106항에 있어서, 비-최대길이실행계수는 유일하게 복호화 가능한 프리픽스를 보유하는 것을 특징으로 하는 복호기.
- 제17항에 있어서, 상기 비트발생기의 비트발생상태가 갱신되고 상기 비트발생기가 메모리에 기록되는 갱신된 상태전에 재사용되는 것을 특징으로 하는 부호화장치.
- 제108항에 있어서, 상기 비트발생기는 읽기-수정-쓰기 순환의 수정 상태동안 재사용되는 것을 특징으로 하는 부호화장치.
- 제17항에 있어서, 상기 비트발생기는 메모리에 갱신된 상태를 기록하기 전에 재사용될 때 비-최소길이 실행계수를 발생하는 것을 특징으로 하는 부호화장치.
- 제17항에 있어서, 상기 비트발생기는 각 실행길이가 적어도 하나의 부호화되지 않은 비트가 후속되도록 정의된 R-부호를 사용하여 데이타를 부호화하여 동일한 실행길이를 갖는 2개의 부호어가 열에서 복호화되지 않은 것을 특징으로 하는 부호화장치.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US31611694A | 1994-09-30 | 1994-09-30 | |
US8/316116 | 1994-09-30 | ||
US08/316,116 | 1994-09-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR960012741A KR960012741A (ko) | 1996-04-20 |
KR100240372B1 true KR100240372B1 (ko) | 2000-01-15 |
Family
ID=23227538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019950033942A KR100240372B1 (ko) | 1994-09-30 | 1995-09-30 | 데이타를 부호화 및 복호화하는 장치 및 방법 |
Country Status (10)
Country | Link |
---|---|
JP (1) | JP3272580B2 (ko) |
KR (1) | KR100240372B1 (ko) |
CN (1) | CN1136659C (ko) |
CA (1) | CA2156889C (ko) |
DE (1) | DE19536401B4 (ko) |
FR (1) | FR2725330B1 (ko) |
GB (1) | GB2293735B (ko) |
NL (1) | NL1001317C2 (ko) |
RU (1) | RU2117388C1 (ko) |
TW (1) | TW410311B (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100842042B1 (ko) | 2007-07-16 | 2008-06-30 | 충남대학교산학협력단 | 암호화된 실행코드에 대하여 동적으로 복호화할 수 있게 한코드블록 암호화 방법 |
KR20110047700A (ko) * | 2009-10-30 | 2011-05-09 | 삼성전자주식회사 | 복호화 가속화를 위한 엔트로피 부호화 방법과 그 장치 및 엔트로피 복호화 방법과 그 장치 |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2311704B (en) * | 1995-08-31 | 1998-04-15 | Ricoh Kk | Method and apparatus for compressing arbitrary data |
US5654703A (en) * | 1996-06-17 | 1997-08-05 | Hewlett-Packard Company | Parallel data compression and decompression |
US5963716A (en) * | 1996-12-02 | 1999-10-05 | Hewlett-Packard Company | Bi-directional data stream decompression |
US6222468B1 (en) * | 1998-06-04 | 2001-04-24 | Ricoh Company, Ltd. | Adaptive coding with adaptive speed |
MXPA04000912A (es) | 2001-11-22 | 2004-04-02 | Matsushita Electric Ind Co Ltd | Metodo de codificacion de longitud variable y metodo de decodificacion de longitud variable. |
KR20040098060A (ko) * | 2002-04-08 | 2004-11-18 | 가부시키가이샤 에이팅구 | 네트워크게임방법, 네트워크게임단말기 및 서버 |
US7555540B2 (en) * | 2003-06-25 | 2009-06-30 | Microsoft Corporation | Media foundation media processor |
US7346832B2 (en) * | 2004-07-21 | 2008-03-18 | Qualcomm Incorporated | LDPC encoding methods and apparatus |
US7395490B2 (en) * | 2004-07-21 | 2008-07-01 | Qualcomm Incorporated | LDPC decoding methods and apparatus |
US7788106B2 (en) | 2005-04-13 | 2010-08-31 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Entropy coding with compact codebooks |
US7991610B2 (en) | 2005-04-13 | 2011-08-02 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Adaptive grouping of parameters for enhanced coding efficiency |
KR100818268B1 (ko) * | 2005-04-14 | 2008-04-02 | 삼성전자주식회사 | 오디오 데이터 부호화 및 복호화 장치와 방법 |
US7716551B2 (en) * | 2005-12-07 | 2010-05-11 | Microsoft Corporation | Feedback and frame synchronization between media encoders and decoders |
KR100717587B1 (ko) * | 2006-07-05 | 2007-05-15 | 주식회사 대우일렉트로닉스 | 광정보 검출 방법 및 장치, 광정보 처리장치 |
US9319700B2 (en) | 2006-10-12 | 2016-04-19 | Qualcomm Incorporated | Refinement coefficient coding based on history of corresponding transform coefficient values |
US8325819B2 (en) | 2006-10-12 | 2012-12-04 | Qualcomm Incorporated | Variable length coding table selection based on video block type for refinement coefficient coding |
US8565314B2 (en) | 2006-10-12 | 2013-10-22 | Qualcomm Incorporated | Variable length coding table selection based on block type statistics for refinement coefficient coding |
US8599926B2 (en) | 2006-10-12 | 2013-12-03 | Qualcomm Incorporated | Combined run-length coding of refinement and significant coefficients in scalable video coding enhancement layers |
CA2667727C (en) | 2006-11-14 | 2014-07-08 | Nippon Telegraph And Telephone Corporation | Information source encoding method and decoding method, apparatuses therefor, programs therefor, and storage media which store the programs |
CN101247496B (zh) * | 2007-02-13 | 2012-10-10 | 华晶科技股份有限公司 | 动态调整影像讯框的方法 |
EP2297856B1 (en) * | 2008-07-11 | 2023-01-04 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Method for encoding a symbol, method for decoding a symbol, method for transmitting a symbol from a transmitter to a receiver, encoder, decoder and system for transmitting a symbol from a transmitter to a receiver |
CA2904730C (en) * | 2009-05-29 | 2023-11-21 | Mitsubishi Electric Corporation | Image encoding device, image decoding device, image encoding method, and image decoding method |
CN102055483B (zh) * | 2009-10-29 | 2013-05-08 | 鸿富锦精密工业(深圳)有限公司 | 熵解码装置 |
EP2362657B1 (en) * | 2010-02-18 | 2013-04-24 | Research In Motion Limited | Parallel entropy coding and decoding methods and devices |
US8769686B2 (en) | 2010-02-26 | 2014-07-01 | Futurewei Technologies, Inc. | System and method for securing wireless transmissions |
CN103119849B (zh) * | 2010-04-13 | 2017-06-16 | 弗劳恩霍夫应用研究促进协会 | 概率区间分割编码器和译码器 |
CA2799763A1 (en) * | 2010-07-13 | 2012-01-19 | Research In Motion Limited | Methods and devices for data compression using context-based coding order |
KR101676477B1 (ko) * | 2010-07-21 | 2016-11-15 | 삼성전자주식회사 | 컨텍스트 기반의 무손실 부호화 장치 및 방법, 그리고 복호화 장치 및 방법 |
US8650456B2 (en) * | 2010-09-08 | 2014-02-11 | Marvell World Trade Ltd. | Decoder based data recovery |
US8913666B2 (en) * | 2010-10-01 | 2014-12-16 | Qualcomm Incorporated | Entropy coding coefficients using a joint context model |
CN102457284B (zh) * | 2010-10-29 | 2014-09-03 | 池勇潮 | 数字数据压缩/解压缩方法及其系统 |
JP5570437B2 (ja) * | 2011-01-12 | 2014-08-13 | 三菱電機株式会社 | エントロピー符号化装置、エントロピー復号装置、エントロピー符号化方法及びエントロピー復号方法 |
JP5809292B2 (ja) | 2011-01-14 | 2015-11-10 | ジーイー ビデオ コンプレッション エルエルシー | エントロピー符号化および復号化スキーム |
US8995523B2 (en) * | 2011-06-03 | 2015-03-31 | Qualcomm Incorporated | Memory efficient context modeling |
WO2013050612A1 (en) * | 2011-10-06 | 2013-04-11 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Entropy coding buffer arrangement |
JP2013214832A (ja) * | 2012-03-30 | 2013-10-17 | Fujitsu Ltd | 圧縮及び伸長システム、圧縮装置、伸長装置、圧縮及び伸長方法、圧縮プログラム及び伸長プログラム |
EP2901643B1 (en) | 2012-09-28 | 2017-03-22 | Telefonaktiebolaget LM Ericsson (publ) | An apparatus for, a method of, and a network server for detecting data patterns in a data stream |
US9990202B2 (en) | 2013-06-28 | 2018-06-05 | Intel Corporation | Packed data element predication processors, methods, systems, and instructions |
US9432696B2 (en) | 2014-03-17 | 2016-08-30 | Qualcomm Incorporated | Systems and methods for low complexity forward transforms using zeroed-out coefficients |
US9516345B2 (en) | 2014-03-17 | 2016-12-06 | Qualcomm Incorporated | Systems and methods for low complexity forward transforms using mesh-based calculations |
CN105828083A (zh) * | 2015-01-06 | 2016-08-03 | 中兴通讯股份有限公司 | 数据流的解码方法及装置 |
GB2539239B (en) * | 2015-06-10 | 2017-10-04 | Gurulogic Microsystems Oy | Encoders, decoders and methods utilizing mode symbols |
JP2019515592A (ja) * | 2016-05-10 | 2019-06-06 | 華為技術有限公司Huawei Technologies Co.,Ltd. | データ送信方法、データ受信方法、送信デバイス、および受信デバイス |
CN109075806B (zh) * | 2016-05-13 | 2023-07-18 | 英特尔公司 | 极化码构造和编码 |
JP7027706B2 (ja) * | 2017-06-15 | 2022-03-02 | ソニーグループ株式会社 | 送信装置、受信装置、送信方法、受信方法及び記録媒体 |
CN107623524B (zh) * | 2017-07-01 | 2020-07-31 | 中山大学 | 一种基于硬件的Huffman编码方法及系统 |
CN111384963B (zh) * | 2018-12-28 | 2022-07-12 | 上海寒武纪信息科技有限公司 | 数据压缩解压装置和数据解压方法 |
US11184021B2 (en) | 2019-03-15 | 2021-11-23 | Samsung Electronics Co., Ltd. | Using predicates in conditional transcoder for column store |
TWI825305B (zh) * | 2019-04-16 | 2023-12-11 | 南韓商三星電子股份有限公司 | 轉換編碼器及進行轉換編碼的方法及製品 |
CN110635807B (zh) * | 2019-08-05 | 2022-10-21 | 湖南遥昇通信技术有限公司 | 一种数据编码方法及译码方法 |
US11146433B2 (en) * | 2020-03-11 | 2021-10-12 | Nxp B.V. | High data rate transmission using minimum energy coding with ultra wide band modulation |
CN112383313B (zh) * | 2020-10-10 | 2023-08-04 | 中科驭数(北京)科技有限公司 | 一种并行数据解码装置及方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3394352A (en) * | 1965-07-22 | 1968-07-23 | Electronic Image Systems Corp | Method of and apparatus for code communication |
CA1291820C (en) * | 1986-09-15 | 1991-11-05 | William B. Pennebaker | Probability estimation based on decision history |
CA1291821C (en) * | 1986-09-15 | 1991-11-05 | Glen G. Langdon, Jr. | Arithmetic coding encoder and decoder system |
US5097261A (en) * | 1989-11-22 | 1992-03-17 | International Business Machines Corporation | Data compression for recording on a record medium |
EP0442548B1 (fr) * | 1990-01-30 | 1995-08-02 | Laboratoires D'electronique Philips S.A.S. | Dispositifs de codage et de décodage à longueur variable de signaux numériques |
US5045852A (en) * | 1990-03-30 | 1991-09-03 | International Business Machines Corporation | Dynamic model selection during data compression |
KR950000286B1 (ko) * | 1992-05-28 | 1995-01-12 | 삼성전자 주식회사 | 산술 부호화 장치 및 방법 |
US5475388A (en) * | 1992-08-17 | 1995-12-12 | Ricoh Corporation | Method and apparatus for using finite state machines to perform channel modulation and error correction and entropy coding |
US5272478A (en) * | 1992-08-17 | 1993-12-21 | Ricoh Corporation | Method and apparatus for entropy coding |
GB2272612B (en) * | 1992-11-06 | 1996-05-01 | Roke Manor Research | Improvements in or relating to ATM signal processors |
KR0134166B1 (ko) * | 1992-11-24 | 1998-04-22 | 모리시타 요이찌 | 영상신호기록장치 |
US5583500A (en) * | 1993-02-10 | 1996-12-10 | Ricoh Corporation | Method and apparatus for parallel encoding and decoding of data |
US5381145A (en) * | 1993-02-10 | 1995-01-10 | Ricoh Corporation | Method and apparatus for parallel decoding and encoding of data |
US5414423A (en) * | 1993-04-29 | 1995-05-09 | International Business Machines Corporation | Stabilization of probability estimates by conditioning on prior decisions of a given context |
-
1995
- 1995-08-24 CA CA002156889A patent/CA2156889C/en not_active Expired - Fee Related
- 1995-09-07 TW TW084109370A patent/TW410311B/zh not_active IP Right Cessation
- 1995-09-07 GB GB9518375A patent/GB2293735B/en not_active Expired - Fee Related
- 1995-09-29 NL NL1001317A patent/NL1001317C2/nl not_active IP Right Cessation
- 1995-09-29 CN CNB951172328A patent/CN1136659C/zh not_active Expired - Fee Related
- 1995-09-29 RU RU95116587A patent/RU2117388C1/ru not_active IP Right Cessation
- 1995-09-29 FR FR9511521A patent/FR2725330B1/fr not_active Expired - Fee Related
- 1995-09-29 JP JP25379295A patent/JP3272580B2/ja not_active Expired - Fee Related
- 1995-09-29 DE DE19536401A patent/DE19536401B4/de not_active Expired - Fee Related
- 1995-09-30 KR KR1019950033942A patent/KR100240372B1/ko not_active IP Right Cessation
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100842042B1 (ko) | 2007-07-16 | 2008-06-30 | 충남대학교산학협력단 | 암호화된 실행코드에 대하여 동적으로 복호화할 수 있게 한코드블록 암호화 방법 |
KR20110047700A (ko) * | 2009-10-30 | 2011-05-09 | 삼성전자주식회사 | 복호화 가속화를 위한 엔트로피 부호화 방법과 그 장치 및 엔트로피 복호화 방법과 그 장치 |
KR101631944B1 (ko) * | 2009-10-30 | 2016-06-20 | 삼성전자주식회사 | 복호화 가속화를 위한 엔트로피 부호화 방법과 그 장치 및 엔트로피 복호화 방법과 그 장치 |
US9398306B2 (en) | 2009-10-30 | 2016-07-19 | Samsung Electronics Co., Ltd. | Entropy encoding/decoding method and apparatus for accelerating video decoding |
Also Published As
Publication number | Publication date |
---|---|
TW410311B (en) | 2000-11-01 |
KR960012741A (ko) | 1996-04-20 |
JP3272580B2 (ja) | 2002-04-08 |
RU2117388C1 (ru) | 1998-08-10 |
GB9518375D0 (en) | 1995-11-08 |
CA2156889A1 (en) | 1996-03-31 |
DE19536401B4 (de) | 2006-07-20 |
NL1001317A1 (nl) | 1996-04-01 |
GB2293735B (en) | 1997-10-22 |
FR2725330B1 (fr) | 1999-01-22 |
CN1136659C (zh) | 2004-01-28 |
NL1001317C2 (nl) | 1998-01-21 |
DE19536401A1 (de) | 1996-04-04 |
JPH08116266A (ja) | 1996-05-07 |
GB2293735A (en) | 1996-04-03 |
FR2725330A1 (fr) | 1996-04-05 |
CA2156889C (en) | 1999-11-02 |
CN1133512A (zh) | 1996-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100240372B1 (ko) | 데이타를 부호화 및 복호화하는 장치 및 방법 | |
US5717394A (en) | Method and apparatus for encoding and decoding data | |
JP7545406B2 (ja) | エントロピコーディングにおいて等確率シンボルをハンドリングするための方法およびデバイス | |
CN114556956A (zh) | 使用旁路子流和经熵编码子流的低时延编码 | |
US5583500A (en) | Method and apparatus for parallel encoding and decoding of data | |
US5381145A (en) | Method and apparatus for parallel decoding and encoding of data | |
US6885319B2 (en) | System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms | |
US6819271B2 (en) | Parallel compression and decompression system and method having multiple parallel compression and decompression engines | |
EP0443255A2 (en) | Method and apparatus for carrying-over control in arithmetic entropy coding | |
RU95116587A (ru) | Способ и устройство кодирования и декодирования данных | |
US4563671A (en) | Coding technique | |
GB2306279A (en) | Apparatus for decoding data | |
JPH08251586A (ja) | ランレングス復号化装置 | |
CN107801044B (zh) | 后向适应装置与相关方法 | |
US6094151A (en) | Apparatus and method for finite state machine coding of information selecting most probable state subintervals | |
US6940909B2 (en) | Video decoding during I-frame decode at resolution change | |
JP4061104B2 (ja) | コンテキストモデルによるラン・スキップカウントに基づくメモリアクセス及びスキッピング | |
JP3230933B2 (ja) | データ伸長装置、データ伸長方法、デコーディング装置、デコーディング方法、エンコーディング装置、及びエントロピー・デコーダ | |
EP1644820B1 (en) | Single memory with multiple shift register functionality | |
CN108769697B (zh) | 基于时间交织流水线架构的jpeg-ls压缩系统及方法 | |
CA2273144C (en) | Apparatus and system for decoding data | |
JP3032161B2 (ja) | 可変長復号化器のメモリインタフェース回路 | |
CN116601873A (zh) | 分块熵流的级联 | |
KR19980027650A (ko) | Mpeg-1 및 mpeg-2 비디오 역양자기 회로 | |
JP3293382B2 (ja) | データ圧縮装置及びデータ伸長装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
J201 | Request for trial against refusal decision | ||
AMND | Amendment | ||
B701 | Decision to grant | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20111019 Year of fee payment: 13 |
|
FPAY | Annual fee payment |
Payment date: 20121019 Year of fee payment: 14 |
|
LAPS | Lapse due to unpaid annual fee |