문맥 (context)
텍사스 인스투르먼트사(Texas Instruments)에 의해 발행된, " 어플리케이션 보고서 SPRA805(2002년 6월)" 표제 "TMS320C6200 DSP 플랫폼에서의 가변 길이 디코딩"에서 프로그램 가능한 신호 프로세서상에서의 가변 길이 디코딩 구현이 공개되었다.
가변 길이 인코딩은 통상적으로 대중화된 MPEG 포맷에서 비디오 데이터와 같은 데이터의 압축 인코딩에 사용된다. 가변 길이 인코딩의 잘 알려진 형태는 소위 허프만 인코딩(Huffmann encoding)이다. 가변 길이 코드에서 상이한 인코딩된 숫자 값들은 상호 간에 상이한 비트 수를 가지는 코드 워드(code word)를 사용하여 인코딩되어, 가장 자주 발생하는 숫자 값은 가장 짧은 코드 워드를 사용하여 인코딩된다. 이것은 인코딩된 데이터의 저장 및/또는 전송동안 저장 요구 및/또는 요구되는 전송 대역폭을 감소시킨다.
숫자 값의 스트림이 인코딩될 때, 일련의 그러한 코드 워드는 비트 스트링을 형성하도록 연결된다. 각각의 가변 길이 코드워드는 그 코드워드보다 더 큰 길이의 임의의 다른 코드워드의 시작에서도 발생하지 않는 일련의 비트값으로 구성된다. 그 결과, 코드워드의 길이는 코드워드의 시작부터의 비트 스트링에 있는 비트로부터 결정될 수 있다. 원칙적으로, 디코딩은 룩업 메커니즘(lookup mechanism)에 의해 구현될 수 있으며, 이 메커니즘은 인코딩된 워드에서 발생할 수 있는 최대수의 비트를 취하고, 및 코드 워드의 코드워드 길이 및 디코딩된 워드를 찾기 위한 테이블에서 어드레스로서 이들 비트를 사용한다( 만약 실제 코드워드가 최대 길이보다 작은 경우, 코드워드의 비트로 시작하는 어드레스에서의 테이블에서 모든 입력은 동일한 코드워드 길이 및 디코딩된 코드 워드를 포함한다).
실제 코드에 대해, 상기 어플리케이션 보고서 SPRA805에서 설명된 바와 같이, 더 작은 룩업 테이블이 사용될 수 있다. 이 목적을 위해, 코드워드의 시작으로부터의 선행 0 또는 선행 1의 카운트는 룩업 테이블 어드레스를 형성하기 위해 사용된다. 이것은 실제 코드가 일반적으로 동일한 길이의 코드 워드에 대한 동일한 헤더(header) 파트(헤더 파트는 논리 1 또는 0으로 구성된다)를 사용한다는 사실에 근거한다. 이 경우 룩업 동작은 헤더 파트로부터 떨어진 코드워드에서 첫번째 비트에 따라오는 위치에서의 다수의 비트값과 조합하여, 이 카운트를 구성하는 룩업 테이블을 사용한다. 카운트가 선행 1 또는 선행 0의 수보다 더 적은 비트를 가지고 나타날 수 있으므로, 이것은 룩업 어드레스 공간을 감소시킨다.
가변 길이 디코딩의 다양한 실시예가 존재한다. 물론 디코딩 프로세스는 디코딩 기능만을 실행하도록 설계된 회로를 사용하여 구현될 수 있다. 그러나, 통상적으로, 적합하게 프로그래밍된 프로세서가 사용되며, 이는 또한 가변 길이 디코딩을 제외한 다른 기능(즉, MPEG 디코딩의 다른 부분)들도 수행하기 위해, 프로그래밍된 명령을 실행한다. 프로그래밍된 프로세서의 사용은 이들 다른 기능에 추가하여 가변 길이 디코딩을 수행하는데 거의 적은 또는 어떠한 추가적인 회로도 필요하지 않다는 이점을 가진다.
상기 어플리케이션 보고서 SPRA805는 가변 길이 디코딩 속도를 높이기 위한 "NORM" 명령어의 사용을 설명한다. NORM 명령은 플로팅 포인트 계산에 관련하여 알려져 있는데, 여기서 이 명령은 숫자의 시작에서 잉여(redundant) 부호 비트(연속적인 1 또는 0)의 개수의 카운트를 결정하도록 사용된다. 가변 길이 디코딩과 관련하여, 이 명령은 코드워드 길이 및 디코딩된 워드를 검색하는 룩업 어드레스를 형성하기 위해 사용될 수 있다.
가변 길이 디코딩 프로그램은 TMS320C62000 DSP가 매번 연속적인 코드워드를 포함하는 비트 스트링의 다음 부분을 오퍼랜드 레지스터로 이동하도록 한다. 이들 부분은 이들이 다음 코드워드 비트로 매번 시작하도록 선택된다. 상기 프로그램은 오퍼랜드의 시작으로부터 연속적인 1 또는 0의 카운트를 획득하기 위해 NORM 명령을 사용하며, 이 카운트를 가지고 프로그램은 룩업 테이블에서 어드레스를 형성한다. 이 어드레스를 가지는 룩업 테이블로써, 프로그램은 코드워드의 길이를 결정하고, 이 코드워드 길이로부터 비트 스트링에 있는 다음 코드워드의 시작이 결정된다. 이후, 그 다음 코드워드로부터 시작하는 새로운 오퍼랜드가 비트 스트링으로부터 형성되고, 이후 프로세스가 반복된다.
TMS320C62000과 같은 DSP(디지털 신호 프로세서)에서, 프로그램으로부터의 명령은 실행 속도를 높이기 위해 병렬로 실행될 수 있다. 그러나 가변 길이 인코딩의 경우, 이는 단지 제한된 범위에 대해서만 사용될 수 있는데, 이는 코드워드의 길이가 다음 코드워드가 처리될 수 있기 전에 매번 결정되어야 하기 때문이다. 이것은 가변 길이 디코딩을 비효율적으로 만든다. 개선을 위한 부분이 발견된다.
지시문 (instruction)
주어진 원문을 읽고 필요한 정보를 파악하여, 원문에 근거해 질문에 답하라.
질문 (question)
가변 길이 인코딩 방식에서 DSP(디지털 신호 프로세서)의 명령을 병렬로 실행하여 속도를 높이는 것이 제한적인 범위에서만 사용될 수 있는 이유는 무엇인가?
추론 과정 (compact_reasoning)
-
1과제 해석
task_interpretationDSP에서 가변 길이 인코딩 시 병렬 명령 실행이 제한되는 조건과 그 이유를 파악한다.
- 가변 길이 인코딩의 경우, 이는 단지 제한된 범위에 대해서만 사용될 수 있는데
-
2정보 추출
information_extraction병렬 실행이 제한되는 구체적인 기술적 제약 조건을 추출한다.
- 코드워드의 길이가 다음 코드워드가 처리될 수 있기 전에 매번 결정되어야 하기 때문이다.
-
3근거 선택
evidence_selection병렬 처리를 방해하는 핵심 인과 관계를 선별한다.
- 코드워드의 길이가 다음 코드워드가 처리될 수 있기 전에 매번 결정되어야 하기 때문이다.
-
4논리 통합
logical_integration코드워드 길이 결정의 선행 조건이 다음 코드워드 처리에 영향을 미친다는 점을 연결한다.
-
5결론 도출
conclusion_formulation다음 코드워드를 처리하기 위해서는 반드시 이전 코드워드의 길이가 먼저 결정되어야 한다는 의존성 때문에 병렬 실행이 제한됨을 도출한다.
- 코드워드의 길이가 다음 코드워드가 처리될 수 있기 전에 매번 결정되어야 하기 때문이다.
-
6답변 생성
answer_generation질문에 대해 문맥에 근거한 이유를 서술형으로 작성한다.
- 코드워드의 길이가 다음 코드워드가 처리될 수 있기 전에 매번 결정되어야 하기 때문이다.
최종 답변 (final_answer)
가변 길이 인코딩에서는 다음 코드워드가 처리되기 전에 반드시 현재 코드워드의 길이가 매번 결정되어야 하기 때문에 병렬 실행이 제한된 범위에서만 사용될 수 있다.
핵심 해석 (core_interpretation)
가변 길이 코드워드의 길이는 다음 코드워드가 처리되기 전에 매번 결정되어야 하므로, DSP에서 명령을 병렬로 실행하여 속도를 높이는 방식은 제한된 범위에서만 사용된다.