KR101175680B1 - 비트스트림 프로세서의 구동방법 - Google Patents

비트스트림 프로세서의 구동방법 Download PDF

Info

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
Application number
KR1020080131863A
Other languages
English (en)
Other versions
KR20100073243A (ko
Inventor
이성원
허세완
석정희
노태문
김종대
Original Assignee
광운대학교 산학협력단
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 광운대학교 산학협력단, 한국전자통신연구원 filed Critical 광운대학교 산학협력단
Priority to KR1020080131863A priority Critical patent/KR101175680B1/ko
Priority to US12/481,748 priority patent/US7956773B2/en
Publication of KR20100073243A publication Critical patent/KR20100073243A/ko
Application granted granted Critical
Publication of KR101175680B1 publication Critical patent/KR101175680B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion 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

비트스트림 프로세서의 구동방법{DRIVING METHOD OF BITSTREAM PROCESSOR}
본 발명은 비트스트림 프로세서에 관한 것으로, 더욱 상세하게는 축약된 테이블 룩업을 사용하는 비트스트림 프로세서에 관한 것이다.
본 발명은 지식경제부 및 정보통신연구진흥원의 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. 테이블 룩업 방식으로 비트스트림을 처리하는 비트스트림 프로세서의 구동방법에 있어서:
    상기 비트스트림은 제1 및 제2 데이터 부(Data part)를 포함하되,
    상기 제1 데이터 부의 0 또는 1의 개수를 카운트하는 단계;
    상기 카운트한 결과와 상기 제2 데이터 부를 결합하는 단계; 및
    상기 결합된 결과의 최상위 비트를 제외한 나머지 비트들의 비트 순서를 바꾸는 단계를 포함하는 구동방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 카운트한 결과는 테이블 룩업의 테이블 프리픽스인 것을 특징으로 하는 구동방법.
  4. 제 1 항에 있어서,
    상기 비트스트림은 4비트 단위로 처리되는 구동방법.
  5. 제 1 항에 있어서,
    상기 카운트한 결과는 3비트를 포함하는 구동방법.
  6. 제 1 항에 있어서,
    상기 결합된 결과는 테이블 룩업의 인덱스로 사용되는 구동방법.
KR1020080131863A 2008-12-23 2008-12-23 비트스트림 프로세서의 구동방법 KR101175680B1 (ko)

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)

* Cited by examiner, † Cited by third party
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 可変長復号装置および再生端末

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