KR101175680B1 - 비트스트림 프로세서의 구동방법 - Google Patents
비트스트림 프로세서의 구동방법 Download PDFInfo
- Publication number
- KR101175680B1 KR101175680B1 KR1020080131863A KR20080131863A KR101175680B1 KR 101175680 B1 KR101175680 B1 KR 101175680B1 KR 1020080131863 A KR1020080131863 A KR 1020080131863A KR 20080131863 A KR20080131863 A KR 20080131863A KR 101175680 B1 KR101175680 B1 KR 101175680B1
- Authority
- KR
- South Korea
- Prior art keywords
- bitstream
- table lookup
- present
- instruction
- processor
- Prior art date
Links
Images
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
-
- 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/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
Abstract
본 발명은 비트스트림 프로세서에 관한 것으로, 더욱 상세하게는 축약된 테이블 룩업을 사용하는 비트스트림 프로세서에 관한 것이다.
본 발명에 따른 비트스트림 프로세서는 가변길이의 데이터를 효율적으로 처리하기 위하여 일반목적 레지스터(GPR:General Purpose Register)에 비트스트림(bitstream) 전용 레지스터를 포함한다. 또한, 본 발명에 따른 비트스트림 프로세서는 전체 메모리 사이즈를 감소시키기 위하여 프리픽스(prefix) 방법이 적용된 테이블 룩업(Table Lookup)방식의 명령어(instruction)와 비트스트림(bitstream) 전용의 명령어(instruction)를 포함한다. 따라서, 본 발명에 따른 비트스트림 프로세서는 가변길이를 갖는 규격의 비트스트림 처리에 있어 성능을 향상시키며, 0의 개수를 미리 카운트한 프리픽스와 상기 비트스트림의 비트순서를 바꾸어 전체 테이블 사이즈를 감소시킨다.
Description
본 발명은 비트스트림 프로세서에 관한 것으로, 더욱 상세하게는 축약된 테이블 룩업을 사용하는 비트스트림 프로세서에 관한 것이다.
본 발명은 지식경제부 및 정보통신연구진흥원의 IT원천기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호 : 2006-S-006-03, 과제명 : 유비쿼터스 단말용 부품 모듈].
현재 VLC(Variable Length Code), CABAC(Context-Adaptive Binary Arithmetic Coding) 등의 비트스트림 코딩(bitstream Coding)에는 전용의 하드웨어나 범용의 임베디드 프로세서(Embedded Processor)가 사용된다. 전용의 하드웨어는 하나의 표준에 최적화되어 있다. 따라서, 전용의 하드웨어는 다양한 표준을 처리할 수 없으며 범용의 프로세서는 고정된 비트의 처리에 적합하도록 설계된다. 즉, 일반적인 프로세서는 가변길이의 데이터를 처리해야 하는 비트스트림 코딩에 있어서 부호를 결합하거나 나누기 위한 또는 가변길이부호의 위치를 보관하기 위한 여러 개의 레지스터가 필요하다. 따라서, 일반적인 프로세서는 비트스트림 코딩에 있어서 여러 단계의 명령어가 필요해 지는 등 비효율적인 면이 있다. 또한 일반적인 프 로세서는 가변길이부호와 고정길이부호 간의 변환을 위하여 테이블 룩업(Table Lookup) 방식을 사용하지만, 가변길이의 엔트로피 부호를 테이블 룩업에 사용할 경우 테이블 사이즈가 커지는 문제가 있다.
본 발명은 비트스트림을 코딩 또는 디코딩할 때 이용되는 축약된 테이블 룩업을 제공한다.
본 발명은 축약된 테이블 룩업을 사용하는 테이블 룩업 명령어(instruction)를 제공한다.
본 발명의 실시예에 따른 테이블 룩업 방식으로 비트스트림을 처리하는 비트스트림 프로세서의 구동방법은 상기 비트스트림은 제1 및 제2 데이터 부를 포함하되, 상기 제1 데이터 부의 0 또는 1의 개수를 카운트하는 단계; 및 상기 카운트한 결과와 상기 제2 데이터 부를 결합하는 단계를 포함한다.
실시 예로서, 상기 결합된 결과의 상기 최상위 비트를 제외한 나머지 비트들의 비트 순서를 바꾸는 단계를 더 포함한다.
본 발명은 0의 개수를 카운트한 값을 적용하여 테이블 룩업의 크기를 감소시킨다.
또한, 본 발명은 비트스트림 전용의 명령어을 사용하여, 연속적인 비트스트 림의 가변적인 데이터 처리를 효율적으로 처리한다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시예를 첨부된 도면을 참조하여 설명한다.
도 1은 본 발명의 실시예에 따른 비트스트림 프로세서를 도시한 블록도이다.
도 1을 참조하면, 본 발명의 실시예에 따른 비트스트림 프로세서(100)는 비트스트림 처리부(110), 실행부(120), 명령어 페치부(Instruction Fetch; 130), 프로세서 컨트롤부(Processor Controller ; 140) 및 메모리(Memory ; 150)를 포함한다.
비트스트림 처리부(110)는 메모리(150)로부터 비트스트림을 독출한다. 비트스트림 처리부(110)는 독출된 비트스트림을 축약된 테이블 룩업(reduced table lookup)에 따른 비트스트림으로 변환한다. 본 발명의 실시예에 따라 축약된 테이블 룩업에 따른 비트스트림을 변환하는 방법은 도 4 및 도 5에서 상세히 설명된다.
실행부(120)는 비트스트림 처리부(110)에서 축약된 테이블 룩업에 따른 비트스트림을 테이블 룩업에 따라 변환한다. 실행부(120)는 변환된 결과를 참조하여 메모리(150)를 억세스하기 위한 어드레스를 생성한다. 명령어 페치부(130)는 프로세서 컨트롤부(140)의 프로그램 카운터(PC)에 따라 비트스트림에 관련된 명령어를 페치한다. 프로세서 컨트롤부(140)는 비트스트림 처리부(110) 및 실행부(120)을 제어한다.
메모리(150)는 비트스트림 데이터를 저장한다. 본 발명의 실시예에 따른 메모리(150)는 DRAM(Dynamic Random Access Memory)으로 구성된다. 또한, 본 발명의 실시예에 따른 메모리(150)는 SRAM(Static Random Access Memory), 불휘발성 메모리 장치로 구성될 수 있다.
본 발명의 실시예에 따른 비트스트림 처리부는 도 2에서 상세히 설명된다. 또한, 비트스트림 처리부의 축약된 테이블 룩업에 따른 비트스트림을 생성하는 방법은 도 3 내지 도 5에서 상세히 설명된다.
본 발명의 실시예에 따른 비트스트림 프로세서(100)는 가변길이부호를 가진 비트스트림(Bitstream)을 처리한다. 비트스트림의 방식은 H.264, MPEG1, MPEG2 및 MPEG4 이 있다.
비트스트림 프로세서(100)는 연속되는 비트스트림을 처리하기 위해 전용의 비트스트림 레지스터(Bitstream Register)와 테이블 룩업 방식의 명령어를 사용하여 가변 길이의 데이터를 효율적으로 처리한다.
도 2는 도 1에 도시된 비트스트림 처리부를 상세히 도시한 블록도이다.
도 1 및 도 2를 참조하면, 본 발명의 실시예에 따른 비트스트림 프로세서(100)는 제1 및 제2 배럴 쉬프터(Barrel Shifter1-2 ; 111a-b), 제1 내지 제3 비트스트림 레지스터(Bitstream Register1-3 ; 112a-c), 제1 및 제2 멀티플렉서(MUX1-2 ; 113a-b), 리메인더(Remainder ; 114), 리메인더 캐리(RC:Remainder Carry ; 115), 0/1 카운터(116) 및 리포맷(Reformat ; 117)을 포함한다.
제1 및 제2 배럴 쉬프터(111a-b)는 64비트 단위로 처리한다. 제1 배럴 쉬프 터(111a)는 메모리(150)로부터 비트스트림을 입력받아 리메인더(114)의 제어에 따라 쉬프트하여 제1 멀티플렉서(113a)와 제1 비트스트림 레지스터(112a)에 출력한다.
제1 비트스트림 레지스터(112a)는 앞으로 사용하여야 할 32비트의 비트스트림을 저장한다. 제2 비트스트림 레지스터(112b)는 현재 사용하고 있는 32비트의 비트스트림을 저장한다. 그리고 제3 비트스트림 레지스터(112c)는 비트스트림 프로세서(100)가 사용하고 있는 32비트의 비트스트림이 저장된다.
리메인더(114)는 7비트로서 제2 비트스트림이 사용한 비트의 위치를 나타낸다. 또한, 리메인더(114)는 제1 및 제2 배럴 쉬프터(111a-b)의 쉬프트 어마운트(shift amount)가 된다. 리메인더(114)의 값이 32 이상인 경우 제2 비트스트림 레지스터(112b)의 비트스트림(bitstream)은 모두 사용되고, 제1 비트스트림 레지스터(112a)의 비트스트림이 사용된다. 이 경우 리메인더 캐리(115)는 1이 된다.
그리고, 새로운 32비트 단위의 비트스트림(bitstream)이 입력되고, 리메인더 캐리(115)는 0으로 클리어(Clear)되며, 제2 비트스트림 레지스터(112b)는 제1 비트스트림 레지스터(112a)의 데이터로 대체된다. 리메인더(114)는 현재 저장된 값에서 32를 뺄셈한 값을 가진다. 이로써, 리메인더(114)는 제2 비트스트림 레지스터(112b)가 사용된 비트의 위치를 나타낸다.
제2 배럴 쉬프터(111b)는 제1 및 제2 비트스트림 레지스터(112a-b)로부터 비트스트림을 입력받아 리메인더(114)에 제어에 따라 쉬프트하여 제3 비트스트림 레지스터(112c)에 저장한다. 제3 비트스트림 레지스터(112c)는 아직 변환 처리되지 않은 비트스트림 부분으로 일반 목적 레지스터(121)의 31번에 저장된다.
리포맷(117)은 비트스트림을 리버싱 비트 오더링을 실행한다. 리포맷의 구체적인 블록도와 동작은 도 4를 통하여 설명된다.
도 2에서 설명된 비트스트림의 처리는 비트스트림 명령어(instruction)를 통하여 구현된다. 비트스트림 명령어는 도 4 및 도 5에서 상세히 설명된다.
도 3은 본 발명의 실시예에 따른 테이블 룩업을 도시한 테이블이다.
도 3을 참조하면, 일반적인 테이블 룩업(31)은 본 발명의 실시예에 따른 테이블 룩업(32)으로 변환된다. 일반적인 테이블 룩업(31)은 가변길이코드(VLC) 전체를 테이블 룩업(table lookup)에 사용될 경우 테이블(table)의 사이즈가 커지는 문제가 있다.
따라서, 본 발명의 실시예에 따른 테이블 룩업(32)은 테이블 사이즈를 감소시킨 것이다.
즉, 테이블 룩업(32)은 비트스트림 선단 4비트(bit)(또는 8비트)가 0일 경우 이를 001(또는 010)으로 대체된다. 대체된 값은 테이블 프리픽스(Table Prefix)로 사용된다.
예를 들면, 테이블 룩업(32)에서 비트스트림의 선단의 4비트가 0이 아닌 경우 비트스트림에 000가 추가된다. 비트스트림의 선단에 4비트가 0인 경우 0인 4비트는 001로 대체된다. 비트스트림의 선단에 8비트가 0인 경우 0인 8비트는 010로 대체된다. 그렇지 않고, 비트스트림의 선단에 12비트가 0인 경우 0인 12비트는 011로 대체된다. 또한, 도 3에 도시되지는 않았으나 테이블 룩업(32)에 비트스트림의 선단에 14비트가 0인 경우 0인 14비트는 100로 대체된다.
발명의 실시예에 따른 테이블 룩업(32)을 구성하는 방법은 도 4 및 도 5에서 상세히 설명된다.
비트스트림 명령어 중 가장 중요한 명령어는 테이블 룩업 명령어(Table Lookup instruction)이다. 테이블 룩업 명령어는 비트스트림의 일부분을 이용하여 가변길이부호(VLC: Variable Length Code) 테이블(table)에서 데이터(data) 값을 구하여 도 2에 도시된 일반 목적 레지스터(121)로 전송한다.
바람직한 실시예에 따라, 본 발명은 파이프라인 구조(Pipelined architecture)에서 적은 싸이클(cycle)로 테이블 룩업을 처리하기 위하여 코드 길이(code length)에 의한 쉬프트(shift)가 이루어진다.
본 발명의 실시예에 따른 비트스트림 프로세서는 테이블 룩업에 적용되는 테이블 룩업 명령어(Table Lookup instruction)를 사용한다. 테이블 룩업 명령어는 인코딩(Encoding)을 실행하는 TLD 명령어과 디코딩(Decoding)을 실행하는 TLE 명령어를 포함한다.
예를 들면, 테이블 룩업 명령어로 TLD dr, sr, (imm1), imm2이 실행되는 것을 가정한다. 테이블 룩업 명령어 TLD는 현재 사용하는 비트스트림을 통해, 도 3에 도시된 테이블 인덱스(Table index)를 결정한 뒤, 얻은 테이블의 코드(code)값은 도 2에 도시된 일반 목적 레지스터(121)에 저장한다. 테이블 룩업 명령어 TLD의 변수(Immediate)는 제1 변수(imm1)과 제2 변수(imm2)을 포함한다.
제1 변수(Imm1)는 비트스트림의 앞단의 14개 이상 0를 위한 테이블 프리픽 스(Table prefix)로써, 프리픽스를 할 수 있는 최대 값을 나타낸다. 제1 변수(Imm1)은 일반적인 경우 생략 가능하다. 제2 변수(Imm2)는 1에서 8까지 임의로 결정될 수 있고, 비트스트림에서 몇 비트(bit)를 가져와서 테이블 룩업의 인덱스(index)를 구성할지를 결정한다. 본 발명의 실시예에 따른 테이블 룩업 명령어 TLD는 도 4에서 상세히 설명된다.
도 4는 본 발명의 실시예에 따른 테이블 룩업 명령어의 동작을 도시한 블록도이다.
도 2 및 도 4를 참조하면, 본 발명의 실시예에 따른 리포맷(117)은 4X1 멀티플렉서(117a), 인코더(Encoder ; 117b), 리버싱 비트 오더(Reversing Bit Order ; 117c), 디코더(Decoder ; 117d) 및 앤드 게이트(AND GATE ; 117e)를 포함한다.
인코더(117b)는 제3 비트스트림 레지스터(112c)의 저장된 비트스트림의 선단이 몇 비트까지가 영인지를 카운트하여 그 결과를 리버싱 비트 오더(117c)에 출력한다. 리버싱 비트 오더(117c)는 변환한 비트스트림의 압축의 효율을 향상하기 위하여 최상위 비트를 제외한 10 비트의 순서를 바꾸어 출력한다. 최상위 비트(MSB), 비트의 순서를 바뀐 데이터 및 디코더(117d)의 출력은 앤드 게이트(117e)를 통하여 출력된다.
도 5는 도 4에 도시된 테이블 룩업 명령에 따라 축약된 테이블 룩업의 생성을 도시한 블록도이다.
도 4 및 도 5를 참조하면, 비트스트림 처리부(110)는 테이블 룩업 명령어 TLD를 실행한다. 예를 들면, TLD dr, sr, 4 인스트럭션이 실행되는 것을 가정한다.
예를 들면, 제3 비트스트림 레지스터(BS)는 비트스트림 0000 0000 0010 0000 XXXX 저장한다. 비트스트림 0000 0000 0010 0000 XXXX는 8비트의 제1 데이터 부(Data part1 ; 51), 8비트의 제2 데이터 부(52) 및 4비트의 제3 데이터 부(53)을 포함한다. X는 돈캐어(Don't Care) 비트이다. 제3 데이터 부(53)는 4비트로 예시되었으나, 이보다 더 적거나 더 많은 비트가 포함될 수 있을 것이다.
비트스트림 0000 0000 0010 0000 XXXX 는 4비트 단위로 처리된다. 비트스트림 0000 0000 0010 0000 XXXX 에 있어서 앞단의 8비트는 0이다. 앞단의 8비트는 010로 대체된다. 즉 비트스트림 중 앞단에 0에 해당하는 만큼을 테이블 프리픽스로 대체된다. 따라서, 비트스트림은 3비트의 제1 데이터 부(54), 8비트의 제2 데이터 부(55) 및 4비트의 제3 데이터 부(53)을 포함한다.
3비트의 제1 데이터 부(54)과 8비트의 제2 데이터 부(52)에 있어서 최상위 비트를 제외하고 나머지 10비트의 순서는 뒤집힌다. 즉, 비트스트림은 최상위 비트를 결합하여 11비트의 데이터 부(55)으로 변환된다. 결합된 데이터의 비트 순서를 바꾸는 것은 테이블 룩업 마지막에 빈 공간이 많이 생기는 것을 막고 정확히 필요한 개수만큼으로 테이블 룩업을 구성하기 위함이다. 따라서, 본 발명의 실시예에 따른 테이블 룩업은 비트 순서를 바꿈으로서 테이블 룩업의 전체 크기를 감소시킨다.
최종적으로, 11비트의 데이터(55)와 나머지 4비트 데이터(53)는 결합되어 15비트 데이터(56)가 생성된다. 최종적으로 생성된 데이터(56)는 테이블 룩업의 인덱스로 사용된다.
메모리를 로드(Load)를 하는 테이블 룩업 명령어 TLD는 2 싸이클(cycle)로 동작한다. 즉, 제1 싸이클 동안 테이블 룩업 명령어 TLD는 테이블 인덱스(Table index) 생성 후, 테이블 값을 로드한다. 그리고, 제2 싸이클 동안 테이블 룩업 명령어 TLD는 로딩된 테이블 값의 하위 24비트인 코드값을 데이터 레지스터(dr)에 저장하고, 로딩된 테이블 값의 상위 8비트인 길이(length) 값을 통해 리메인더(rem)를 증가시킨다.
표 1은 상술한 테이블 룩업 명령어 TLD의 동작을 나타낸다.
TLD dr,sr,(imm1),imm2 ; mem[index] <= sr + {L0(BS)[2],bs<31 - imm2 : 31>},L0(BS)[0:1] : cycle 1 ; dr <= code(mem[index]) : cycle 2 ; rc/rem <= rem+ length(mem[index]) : cycle 2 |
본 발명의 실시예에 따른 테이블 룩업 명령어 TLE는 인코딩 시 비트스트림 레지스터에 있는 데이터를 테이블 룩업을 통해 가변길이 코드(VLC)로 변환하여 비트스트림 버퍼(bitstream buffer)로 전송한다. 따라서, 가변길이 코드(VLC)의 길이만큼 리메인더(Remainder)를 증가시킨다.
메모리를 로드(Load)를 하는 테이블 룩업 명령어 TLE는 2 싸이클로 동작한다. 즉, 제1 싸이클 동안 테이블 룩업 명령어 TLE는 테이블 인덱스(Table index) 생성 후, 테이블 값을 로드한다. 그리고, 제2 싸이클 동안 테이블 룩업 명령어 TLE는 로딩된 테이블 값의 하위 24비트인 코드값을 비트스트림 레지스터(bs)에 저장하고, 로딩된 테이블 값의 상위 8비트인 길이(length) 값을 통해 리메인더(rem)를 증가시킨다.
표 2은 상술한 테이블 룩업 명령어 TLE의 동작을 나타낸다.
TLE sr1, sr2 ; mem[index] <= sr1 + sr2 : cycle 1 ; bs <= code(mem[index]) : cycle 2 ; carry/rem <= rem+length(mem[index]) : cycle 2 |
본 발명은 그 밖의 비트스트림 명령어로서 LZS, LOS, REM, LBS, LBC, STS 및 STC를 포함한다. 본 발명에 따른 비트스트림 명령어 LZS는 도 2에 도시된 일반 목적 레지스터(121)의 31번째 레지스터를 통해 비트스트림을 읽어 앞단의 0(Leading 0s)의 개수를 카운트한다.
표 3은 상술한 테이블 룩업 명령어 LZS의 동작을 나타낸다.
LZS dr, sr ; dr <= leading0s(BS) ; carry/rem <= rem+leading0s(BS) |
본 발명에 따른 비트스트림 명령어 LOS는 도 2에 도시된 일반 목적 레지스터(121)의 31번째 레지스터를 통해 비트스트림을 읽어 앞단의 1(Leading 1s)의 개수를 카운트한다.
표 4은 상술한 테이블 룩업 명령어 LOS의 동작을 나타낸다.
LOS dr, sr ; dr <= leading1s(BS) ; carry/rem <= rem+leading0s(BS) |
본 발명에 따른 비트스트림 명령어 REM는 비트스트림의 데이터를 디코딩(decoding)없이 버릴 경우 리메인더 레지스터(rem)을 직접 제어한다. 예를 들면, 본 발명에 따른 비트스트림 명령어 REM는 소오스 레지스터(sr)의 sr[8]이 1이면 바이트 얼라인(byte align)하고 sr[9]이 1이면 16 비트 얼라인(bit align)을 한다.
표 5은 상술한 테이블 룩업 명령어 REM의 동작을 나타낸다.
REM sr ; carry/rem<5:0> <= rem<5:0>+sr<5:0> (1) Byte align REM[5:0] = ( REM[2:0] == 0 ) ? REM[5:0] : REM[5:0] & 6'b111000 + 6'b001000 (2) 16bit word align REM[5:0] = ( REM[3:0] == 0 ) ? REM[5:0] : REM[5:0] & 6'b110000 + 6'b010000 |
본 발명에 따른 비트스트림 명령어 LBS는 디코딩 시에 비트스트림 버퍼(Bitstream buffer)로부터 데이터를 비트스트림 레지스터로 효율적으로 보내기 위해 오토 인덱싱(auto-indexing)기능을 포함한다. 본 발명에 따른 비트스트림 명령어 LBC는 비트스트림 레지스터에 있는 데이터가 모두 사용되면 새로운 데이터를 공급하기 위해 리메인더 캐리(RC; Remainder Carry)가 set인 조건에서 동작한다.
표 6은 상술한 테이블 룩업 명령어 LBS 및 LBC의 동작을 나타낸다.
LBS sr, imm ; bs <= mem[sr]; sr <= sr+imm LBC sr, imm ; if (RC), bs <= mem[sr]; sr <= sr+imm |
본 발명에 따른 비트스트림 명령어 STS는 인코딩(Encoding) 시에 비트스트림 레지스터로부터 데이터를 비트스트림 버퍼로 효율적으로 보내기 위해 오토 인텍싱 기능을 포함한다. 본 발명에 따른 비트스트림 명령어 STC 는 가변부호화 된 데이터가 비트스트림 레지스터에 모두 쓰여지게 되면, 새로운 데이터를 공급하기 위해 rem의 carry (RC)가 set인 조건에서 동작한다.
표 7은 상술한 테이블 룩업 명령어 STS 및 STC의 동작을 나타낸다.
STS sr, imm ; mem[sr] <= bs; sr <= sr+imm STC sr, imm ; if (RC) mem[sr] <= bs; sr <= sr+imm |
따라서, 본 발명의 실시예에 따른 비트스트림 프로세서는 0의 개수를 미리 세는 테이블 프리픽스를 사용하여 전체 테이블 크기를 줄임으로써, 테이블을 사용하는 전체 메모리의 사이즈를 작소시키는 효과가 있다. 또한, 비트스트림(bitstream) 전용의 명령어(instruction)을 사용하여, 연속적인 비트스트림(bitstream)의 가변적인 데이터 처리를 효율적으로 처리 할 수 있다.
비트스트림(bitstream)의 가변적인 데이터 처리 과정에서 Table Lookup 과 비트스트림(bitstream) 전용의 명령어(instruction)을 사용하여 간단한 구조로 처리가 가능해짐으로써, 파이프라인 구조(Pipeline Architecture)에 설계하여 동작 스피드를 향상 시킬 수 있는 효과가 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
도 1은 본 발명의 실시예에 따른 비트스트림 프로세서를 도시한 블록도이다.
도 2는 도 1에 도시된 비트스트림 처리부를 상세히 도시한 블록도이다.
도 3은 본 발명의 실시예에 따른 테이블 룩업을 도시한 테이블이다.
도 4는 본 발명의 실시예에 따른 테이블 룩업 명령어의 동작을 도시한 블록도이다.
도 5는 도 4에 도시된 테이블 룩업 명령에 따라 축약된 테이블 룩업의 생성을 도시한 블록도이다.
* 도면의 주요 부분에 대한 부호 설명 *
100; 비트스트림 프로세서 110; 비트스트림 처리부
120; 실행부 130; 명령어 페치부
140; 프로그램 카운터 150; 메모리
Claims (6)
- 테이블 룩업 방식으로 비트스트림을 처리하는 비트스트림 프로세서의 구동방법에 있어서:상기 비트스트림은 제1 및 제2 데이터 부(Data part)를 포함하되,상기 제1 데이터 부의 0 또는 1의 개수를 카운트하는 단계;상기 카운트한 결과와 상기 제2 데이터 부를 결합하는 단계; 및상기 결합된 결과의 최상위 비트를 제외한 나머지 비트들의 비트 순서를 바꾸는 단계를 포함하는 구동방법.
- 삭제
- 제 1 항에 있어서,상기 카운트한 결과는 테이블 룩업의 테이블 프리픽스인 것을 특징으로 하는 구동방법.
- 제 1 항에 있어서,상기 비트스트림은 4비트 단위로 처리되는 구동방법.
- 제 1 항에 있어서,상기 카운트한 결과는 3비트를 포함하는 구동방법.
- 제 1 항에 있어서,상기 결합된 결과는 테이블 룩업의 인덱스로 사용되는 구동방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080131863A KR101175680B1 (ko) | 2008-12-23 | 2008-12-23 | 비트스트림 프로세서의 구동방법 |
US12/481,748 US7956773B2 (en) | 2008-12-23 | 2009-06-10 | Method of driving bit stream processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080131863A KR101175680B1 (ko) | 2008-12-23 | 2008-12-23 | 비트스트림 프로세서의 구동방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100073243A KR20100073243A (ko) | 2010-07-01 |
KR101175680B1 true KR101175680B1 (ko) | 2012-08-22 |
Family
ID=42265200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020080131863A KR101175680B1 (ko) | 2008-12-23 | 2008-12-23 | 비트스트림 프로세서의 구동방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7956773B2 (ko) |
KR (1) | KR101175680B1 (ko) |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4899149A (en) * | 1986-02-28 | 1990-02-06 | Gary Kahan | Method of and apparatus for decoding Huffman or variable-length coees |
US5181031A (en) * | 1991-07-30 | 1993-01-19 | Lsi Logic Corporation | Method and apparatus for decoding huffman codes by detecting a special class |
US5208593A (en) * | 1991-07-30 | 1993-05-04 | Lsi Logic Corporation | Method and structure for decoding Huffman codes using leading ones detection |
JP2888288B2 (ja) * | 1996-10-03 | 1999-05-10 | 日本電気株式会社 | 画像符号化装置 |
US5821886A (en) | 1996-10-18 | 1998-10-13 | Samsung Electronics Company, Ltd. | Variable length code detection in a signal processing system |
US5781134A (en) | 1996-10-18 | 1998-07-14 | Samsung Electronics Company, Ltd. | System for variable length code data stream position arrangement |
CN1306697A (zh) * | 1998-06-25 | 2001-08-01 | 赤道技术公司 | 可变长度编码与解码的处理电路和处理方法 |
KR100515413B1 (ko) | 2000-08-31 | 2005-09-15 | 매그나칩 반도체 유한회사 | 비트 스트림 처리기 |
US6563440B1 (en) * | 2001-10-19 | 2003-05-13 | Nokia Corporation | Apparatus and method for decoding Huffman codes using leading one/zero string length detection |
JP2006254225A (ja) * | 2005-03-11 | 2006-09-21 | Toshiba Corp | 可変長符号の復号装置及び復号方法 |
JP2008124600A (ja) | 2006-11-09 | 2008-05-29 | Matsushita Electric Ind Co Ltd | 可変長復号装置および再生端末 |
-
2008
- 2008-12-23 KR KR1020080131863A patent/KR101175680B1/ko not_active IP Right Cessation
-
2009
- 2009-06-10 US US12/481,748 patent/US7956773B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20100156680A1 (en) | 2010-06-24 |
US7956773B2 (en) | 2011-06-07 |
KR20100073243A (ko) | 2010-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Shi et al. | Bit permutation instructions for accelerating software cryptography | |
US5990812A (en) | Universally programmable variable length decoder | |
US7132963B2 (en) | Methods and apparatus for processing variable length coded data | |
US6246347B1 (en) | Controller for a variable length decoder | |
US6373412B1 (en) | Fast JPEG huffman encoding and decoding | |
US7286066B1 (en) | Acceleration of bitstream decoding | |
US7421563B2 (en) | Hashing and serial decoding techniques | |
US20050198471A1 (en) | Micro-controller for reading out compressed instruction code and program memory for compressing instruction code and storing therein | |
US20100284456A1 (en) | Execution Units for Context Adaptive Binary Arithmetic Coding (CABAC) | |
US7162617B2 (en) | Data processor with changeable architecture | |
US20110310966A1 (en) | Syntax element decoding | |
KR910000742B1 (ko) | 2진 데이타 압축·신장 처리장치 | |
CN101137061A (zh) | 映射方法和视频系统 | |
JP3860574B2 (ja) | データをバッファから抽出し且つバッファへロードする装置及び方法 | |
McGregor et al. | Architectural enhancements for fast subword permutations with repetitions in cryptographic applications | |
CN111563281A (zh) | 一种支持多种加解密算法的处理器及其实现方法 | |
KR100227273B1 (ko) | 가변길이 코드 데이터 스트림 위치정렬을 위한 시스템 | |
US6313767B1 (en) | Decoding apparatus and method | |
KR101175680B1 (ko) | 비트스트림 프로세서의 구동방법 | |
US7728744B2 (en) | Variable length decoder system and method | |
US20050174270A1 (en) | Programmable variable length decoder including interface of cpu processor | |
US20050114631A1 (en) | Processor device capable of cross-boundary alignment of plural register data and the method thereof | |
US7075462B2 (en) | Speeding up variable length code decoding on general purpose processors | |
US5784012A (en) | Variable-length code decoder | |
US6611211B2 (en) | Data mask coding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |