KR100475246B1 - 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의디코딩 성능 향상 방법 및 이를 위한 기록 매체 - Google Patents
고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의디코딩 성능 향상 방법 및 이를 위한 기록 매체 Download PDFInfo
- Publication number
- KR100475246B1 KR100475246B1 KR10-2001-0065335A KR20010065335A KR100475246B1 KR 100475246 B1 KR100475246 B1 KR 100475246B1 KR 20010065335 A KR20010065335 A KR 20010065335A KR 100475246 B1 KR100475246 B1 KR 100475246B1
- Authority
- KR
- South Korea
- Prior art keywords
- fixed
- point
- audio file
- processor
- code
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/10527—Audio or video recording; Data buffering arrangements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/00007—Time or data compression or expansion
- G11B2020/00014—Time or data compression or expansion the compressed signal being an audio signal
- G11B2020/00057—MPEG-1 or MPEG-2 audio layer III [MP3]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/10527—Audio or video recording; Data buffering arrangements
- G11B2020/10537—Audio or video recording
- G11B2020/10546—Audio or video recording specifically adapted for audio data
- G11B2020/10555—Audio or video recording specifically adapted for audio data wherein the frequency, the amplitude, or other characteristics of the audio signal is taken into account
- G11B2020/10583—Audio or video recording specifically adapted for audio data wherein the frequency, the amplitude, or other characteristics of the audio signal is taken into account parameters controlling audio interpolation processes
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
본 발명에 따른 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의 디코딩 성능 향상 방법은, 압축된 엠펙1 오디오 화일을 음성으로 재생하기 위하여 디코딩하는 방법에 있어서, 압축된 엠펙 오디오 화일 중 부동 소수점을 이용하여 이루어진 원시코드 데이터에 대하여 디코딩을 위한 코드의 변수 또는 상수에 대한 정수 단어 길이를 결정하고, 사칙 연산을 고려하여 각 변수에 대한 단어 길이를 재조정하여 고정 소수점을 이용하는 코드 데이터로 변환하는 고정 소수점 변환 단계와, 고정 소수점으로 변환된 코드 데이터에 대하여 프로세서 측면 및 메모리 사용측면에 따라 최적하기 위하여 상기 변환된 데이터의 형태를 변환하는 최적화 단계와, 최적화된 코드 데이터에 대하여 디코딩을 수행할 프로세서에 상응하는 기계어로 변환하여 디코딩의 성능을 향상시키는 기계어 변환 단계를 수행한다.
본 발명에 의하면, 저가의 낮은 성능 프로세서를 가지고 엠펙1 오디오 디코더를 실시간으로 재생이 가능하며, 엠펙 비디오와의 동시 재생으로 동영상을 모바일 환경에서나 내장형 시스템에서 재생할 수 있다.
Description
본 발명은 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의 디코딩 성능 향상 방법 및 이를 위한 기록 매체에 관한 것이다.
도 1은 엠펙1 국제규격에서 정의하고 있는 오디오 스트림의 디코딩 절차를 도시하고 있다. 도 1을 참조하여 오디오 스트림의 디코딩 과정을 살펴보면, 도시된 바와 같이, 오디오 디코딩 과정은 엠펙1으로 압축된 파일 스트림을 접근하여 읽어들이는 과정(S1), 그 읽어들인 파일 스트림의 헤더를 분석하여 기본 정보를 추출 및 비트 할당 정보를 해독하는 과정(S2), 허프만 데이터를 해독하는 과정(S3), 샘플 데이터를 재양자화하는 과정(S4), 스케일 팩터 정보를 해독하는 과정(S5), 이들을 조합해서 IMDCT(Inverse Modified Discrete Cosine Transform)하는 과정(S6), 서브밴드 필터의 합성과정(S7)으로 이루어질 수 있다.
신호처리 알고리즘을 위해 파일 스트림을 처리할 때, 대부분의 경우 실시간 동작보다는 알고리즘 자체 동작의 정확성에 염두를 두기 때문에 부동 소수점으로 구현이 된다.
그러나, 실시간을 요하는 응용(application)에서는 프로세서의 고성능을 요구하거나 고정 소수점으로의 변환이 필요하며, 특히 응용에 많이 이용되는 MP3(엠펙1오디오의 한 부분)에 대한 고정소수점 변환은 아직 이루어지지 않은 상황이며 전용 ASIC이나 신호처리에 적합한 DSP를 사용하는 실정이어서 보다 효율적인 구현이 필요하다.
도 2는 부동소수점과 고정소수점사이의 16비트 데이터 표현방식을 나타낸다. 도 2를 참조하여 부동소수점과 고정소수점사이의 16비트 데이터 표현의 차이점을 살펴보자.
고정 소수점의 경우에는 프로세서가 0x5800(정수로 22528)로 인식하지만, 부동 소수점의 경우에는 도면의 부재번호 101 및 102에 의해 표시되는 가상의 이진점(소수점) 위치에 따라 각각 2.75와 5.5로 인식하게 된다. 부재번호 101에 의한 이진점의 경우에는 데이터의 표현 범위가 -4 ~ +4이고, 부재번호 102에 의한 이진점의 경우에는 -8 ~ +8까지 데이터의 표현이 가능하다. 하지만, 데이터 표현 정밀도는 101은 10-13 으로 102의 10-12 보다 정밀하다. 따라서 이 둘의 상호 관계를 염두에 두고 변환을 수행해야 한다.
이에 따라, 신호처리 알고리즘의 효율적인 구현이 필요하게 되었다. 종래에는 엠펙1 오디오 디코더의 구현 경우에는 전용 칩(ASIC)을 사용하고 있으나, 이런 전용 칩을 사용하게 되면 알고리즘의 사소한 변화에도 다시 칩을 제작해야 하는 어려움과, 이에 따른 구현의 시간이 많이 소요되어 현대의 빠른 기술개발 변화에 능동적으로 대처하기 어렵다.
이를 위해서는 원시코드를 변환하여 단지 소프웨어만으로 복잡한 신호처리를 실시간으로 처리할 수 있는 기술과 다양한 프로세서에 엠펙1 알고리즘 구현 가능한 기술이 요청된다.
뿐만 아니라, 현대는 이동형이나 내장형의 장치가 많이 사용되고 있는데, 이러한 장치에 사용되는 메모리는 그 용량이 제한되고, 전력의 소모를 보다 낮출 필요가 있다.
따라서, 데이터의 표현을 간결하게 하여 적은 메모리를 사용하는 기술이 필요하며, 메모리의 접근을 최소로 줄여 전력소모가 최소화되도록 하는 기술이 요구된다.
아울러, Advanced RISC Machines (ARM )RISC 프로세서의 경우, 다른 프로세서보다 컴파일러의 효율이 좋고 전력의 소모가 적어 이런 프로세서의 특징을 이용한 엠펙 알고리즘의 성능 향상과 기계어로의 변환 방법이 대두될 것임에 따라 이에 대한 연구가 필요하게 되었다.
본 발명은 이러한 종래의 문제점의 해결 및 필요성에 의해 안출된 것으로, 압축된 엠펙1 오디오 화일을 음성으로 재생하기 위한 디코딩 작업이 저가의 프로세서에서도 가능하도록 메모리와 프로세서 성능을 고려하여 디코딩 성능을 향상시키는 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의 디코딩 성능 향상 방법 및 이를 위한 기록 매체를 제공하는데 그 목적이 있다.
이러한 목적을 달성하기 위한 본 발명에 따른 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의 디코딩 성능 향상 방법의 일측면에 의하면, 압축된 엠펙1 오디오 화일을 음성으로 재생하기 위하여 디코딩하는 방법에 있어서, 압축된 엠펙 오디오 화일 중 부동 소수점을 이용하여 이루어진 원시코드 데이터에 대하여 디코딩을 위한 코드의 변수 또는 상수에 대한 정수 단어 길이를 결정하고, 사칙 연산을 고려하여 각 변수에 대한 단어 길이를 재조정하여 고정 소수점을 이용하는 코드 데이터로 변환하는 고정 소수점 변환 단계와, 고정 소수점으로 변환된 코드 데이터에 대하여 프로세서 측면 및 메모리 사용측면에 따라 최적하기 위하여 변환된 데이터의 형태를 변환하는 최적화 단계와, 최적화된 코드 데이터에 대하여 디코딩을 수행할 프로세서에 상응하는 기계어로 변환하여 디코딩의 성능을 향상시키는 기계어 변환 단계를 수행한다.
또한, 본 발명에 따른 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의 디코딩 성능 향상 방법을 수행하기 위한 기록 매체는, 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의 디코딩 성능 향상 방법을 수행하기 위해, 디지탈 처리장치에 의해 실행될 수 있는 명령어들의 프로그램이 유형적으로 구현되어 있으며, 디지탈 처리장치에 의해 판독될 수 있는 기록매체에 있어서, 압축된 엠펙 오디오 화일 중 부동 소수점을 이용하여 이루어진 원시코드 데이터에 대하여 디코딩을 위한 코드의 변수 또는 상수에 대한 정수 단어 길이를 결정하고, 사칙 연산을 고려하여 각 변수에 대한 단어 길이를 재조정하여 고정 소수점을 이용하는 코드 데이터로 변환하는 고정 소수점 변환 단계와, 고정 소수점으로 변환된 코드 데이터에 대하여 프로세서 측면 및 메모리 사용측면에 따라 최적하기 위하여 변환된 데이터의 형태를 변환하는 최적화 단계와, 최적화된 코드 데이터에 대하여 디코딩을 수행할 프로세서에 상응하는 기계어로 변환하여 디코딩의 성능을 향상시키는 기계어 변환 단계를 포함한다.
이하, 첨부된 도면을 참조하여 본 발명을 상세히 설명하도록 하자.
도 3은 본 발명에 따른 처리 단계를 도시하고 있다. 도 3을 참조하면, 본 발명에 따른 신호 처리 방법은 부동 소수점 코드를 고정 소수점 코드로 변환하는 고정 소수점 변환 단계(S10)와, 변환 전후의 음질의 저하가 원하는 범위내에서 고정 소수점의 코드를 프로세서 성능 측면과 메모리 사용측면에서 최적화 시키는 최적화 단계(S20)와, ARM Risc CPU에 맞는 기계어 변환 단계(S30)를 수행한다.
고정 소수점 변환 단계(S10)는 부동 소수점(Floating point) 코드(원시코드)에서 고정 소수점 (Fixed point)으로 변환하는 기능을 수행한다. 고정 소수점의 변환을 위해서는 코드의 변수나 상수에 대한 정수 단어 길이를 결정해야 한다. 정수 단어 길이(IWL: integer word length)는 아래의 두 식으로 결정된다.
여기에서 R(x)는 변수나 상수(x)에서 평균(m)과 표준편차(б)에 의해서 결정되는 변수이며 W(x)는 R(x)에 대한 정수 단어 길이이다.
예를 들면, 원시코드와 변환 코드사이의 변수에서 오버플로가 발생하지 않도록 데이터의 변수 타입을 프로세서가 지원하는 최대의 데이터 타입 즉 int(Integer:4바이트)를 사용할 수 있다.
아울러, 속도 향상보다는 음질의 저하를 막기 위하여 고도의 정밀도를 요구하는 곳에서는 승산의 결과를 64비트로 저장하도록 할 수 있다.
도 4는 코드 변환 전후의 음질 저하의 정도를 보여주는 것으로, 스테레오의 좌측 채널(103)과 우측 채널(104)의 변환 전후 데이터를 빼서 2배로 확대한 것이다. 파형의 차이가 없는 것으로 보아 음질이 거의 차이가 나지 않음을 확인할 수 있다.
한편, 신호 처리방법을 수행함에 있어서는 많은 프로세서의 점유율을 차지하는 사칙연산의 변환이 중요하다.
도 6은 덧셈/뺄셈/곱셈과 나눗셈에 대한 변환 실례를 보여주는 것이다. 덧셈/뺄셈의 경우에는 도 6의 111에서 112의 변환처럼 in[2],in[10],in[14],i6_의 정수 단어 길이와 상수의 정수 단어 길이를 결정한 다음 tmp3_의 정수 단어 길이를 정한다.
두 수의 곱 셈에서는 소수점의 위치에 관계없이 결과값을 계산가능하므로 정수 단어 길이에 대한 고려가 없어도 되지만, 덧셈이나 뺄셈의 경우에는 i6_나 in[x]와 상수의 곱셈 결과의 정수 단어 길이가 같아야 소수점이 위치가 동일하므로 연산이 이루어질 수 있으므로 이를 동일하게 하기 위한 쉬프트연산이 들어간다.
한편, 곱셈에서 두 수의 곱셈한 결과 값의 정수 단어 길이는 두수의 각각의 정수 단어 길이의 더한 값과 같으며 이 값은 데이터 타입의 표현 가능한 비트수의 범위를 초과하면 안됨에 따라 적당한 쉬프트의 연산이 이루어져야 한다.
도 6에서 부동소수점의 상수들은 IWL를 9로 설정한 경우이며 in[x]의 경우에는 IWL이 10으로 설정되어 결과적으로 in[x]와 상수의 IWL은 19로 i6_와 동일하게 설정된다. Tmp3_의 경우에는 이들이 세번 혹은 네번의 덧셈이 수행되므로, IWL이 21로 설정된다.
도 6의 is_ratio[i](113)의 IWL을 9로 설정하고 스케일링하여 1과의 덧셈의 이진점을 맞추기 위해 1에 29을 곱한다. 보다 큰 수를 곱하면 is_ratio[i]의 해상도는 좋아지지만, 나눗셈으로 인한 lr[1][sb][ss]의 해상도가 떨어지므로 이 둘의 상호작용을 고려한 정수 단어 길이를 정한다. 즉, 나눗셈의 경우에는 연산 결과의 몫이 너무 작아지지 않은 범위에서 젯수의 값이 충분하도록 한다.
다음은 고정 소수점의 코드를 최적화 시키는 단계(S20)에 대하여 설명해 보자.
변환 전후의 음질 저하가 원하는 범위내에 있게 하기 위해, 고정 소수점의 코드를 프로세서 성능 측면과 메모리 사용측면에서 최적화 시키는 과정에서는 변수의 오버플로가 일어나지 않는 범위내에서 메모리 사용을 최소화하도록 데이터의 형태를 바꾸는 과정이 포함된다.
즉, 1바이트(char형) 혹은 2바이트(short형)로 표현 가능한 데이터를 4바이트(int형)로 표현한다면 메모리의 사용은 4배 혹은 2배가 증가된다. 한편 형 변환이 가능하더라고 RISC 프로세서의 특성상 속도의 향상과 음질의 저하를 고려해서 그대로 사용되는 경우도 있다.
일례로, 서브밴드 합성필터의 경우에는 2바이트의 변수로 데이터를 표현하는데 음질에 아무 차이가 없지만 알고리즘의 성능을 위해서 4바이트 데이터로 표현할 수 있다. 이는 RISC 프로세서가 메모리를 접근할 때 한 명령어로 여러 데이터를 한번에 가져올 수 있도록 고려한 경우이다.
도 5에는 최적화하는 구체적인 방법들이 구체적으로 나열되어 있으며, 아래에서 몇 가지 코드내에 있는 실례를 들어 최적화 구현 과정을 설명해보자.
즉, 쉬프트 연산 줄이기(S21), 초월함수나 사칙연산의 테이블화(S22), 테이블의 사칙연산화(S23), 합성 필터의 분기 횟수 감소(S24), RISC프로세서의 특징을 이용한 루프 합성, 루프 전개, 배열 병합, 구조체 내 데이터의 재배치(S25) 등의 다양한 방법이 적용되어 최적화 고정 소수점 C코드를 생성할 수 있다.
쉬프트 연산 줄이기(S21)는 정수 단어 길이가 다른 두 변수나 상수사이의 사칙연산 특히 덧셈이나 뺄셈을 할 때, 두 변수간의 연산이 올바르게 수행되려면 이진점을 맞추어야하고 이를 수행하기 위해서 쉬프트연산을 이용하게 된다.
그러나, 이진점을 맞추기 위한 쉬프트 연산이 많아지면 오히려 프로세서에 오버헤드를 작용하여 프로세서의 성능을 저하시키게 된다. 실례로 도 2의 부재번호 101에 이진점을 갖는 변수 A와 부재번호 102에 이진점을 갖는 변수 B가 있다고 가정하고, 이들의 연산이 수행되려면 변수 A를 우측으로 1비트 쉬프트 시켜 정수 단어 길이를 하나 늘려 덧셈이나 뺄셈 연산을 하는 방법이 있을 수 있으며, 변수 B를 좌측으로 1비트 쉬프트시켜 변수 B의 정수 단어 길이를 하나 줄여 연산을 수행방법이 있을 수 있다.
변수 A,B의 정수 단어 길이를 같게 하려 할 때는, 오디오 음질의 저하를 막는 범위내에서 변수 A,B의 정수 단어 길이를 조정하거나 둘의 평균 위치에 이진점을 두어 정수 단어 길이를 같게 한다. 이렇게 하면, 정수 단어 길이에 의한 쉬프트 연산을 없앰으로써 프로세서의 성능을 개선시킬 수 있다. 또한 도 6의 경우처럼 각각의 덧셈이 수행되기 전에 쉬프트 연산이 수행되는데 예를 들면, 수학식 2의 연산을 통해 쉬프트 연산을 줄여 연산을 간결하게 할 수 있다.
초월함수나 사칙연산의 테이블화(S22)는 신호처리 알고리즘의 프로세서 점유율이 큰 사칙연산 중의 나눗셈이나 여현함수나 지수함수/로그함수 등의 초월함수 경우에는 상당한 프로세서의 클럭을 요구하는데 약간의 메모리 증가를 감수하면서 초월함수를 테이블화시켜서 성능 향상을 꾀할 수 있다.
도 7은 초월함수의 테이블화를 보여주는 도면으로, 예를 들면 gr_info->global_gain 변수 의해 복잡한 지수함수 값(221)이 결정되는데, 이런 곱셈, 뺄셈과 지수함수를 포함한 복잡한 식을 테이블(223)로 만들어 사용하여 메모리 한번 접근(222)으로 연산이 수행되도록 하였다. 메모리의 사용은 4(int 형) *256바이트만큼 더 이용한 셈이다. 실제 사용되는 메모리는 0의 개수가 126(224)개이고 1048576의 상수가 46(225)개이므로 이를 하나씩 계산하여 170*4바이트만큼을 제외하면 된다. 약간의 메모리 증가로 상당히 많은 프로세서의 클럭 소모를 한번의 메모리 접근으로 해결할 수 있다.
테이블의 사칙연산화(S23)는 위의 경우와 반대의 상황으로 신호처리 알고리즘의 디코딩시 많이 호출되지 않으면서(프로세서의 점유율이 낮으면서) 메모리를 많이 차지하고 있는 테이블인 경우에는 프로세서 성능을 약간 감수하면서 이를 적당한 사칙연산으로 대체함으로써 많은 메모리를 절약할 수 있다. 도 8은 테이블의 사칙연산화의 실례로 많은 메모리를 차지하는 테이블을 몫과 나머지 계산하는 나눗셈 하나로 대체한 경우이다. 테이블(234)(236)을 살펴보면, 이 테이블이 어떤 값에 대해서 젯수 18로 나눗셈하여 얻은 몫과 나머지임을 위한 것임을 알수 있다. 나눗셈의 몫을 위한 인자 ss_div[i] (231) 값과 나머지를 위한 인자 ss_mod[i](232)값을 가지고 각각의 테이블(233)(235)을 참조하여 나눗셈을 수행하는 과정이다. 여기에 사용되는 메모리는 몫을 위한18*32바이트와 나머지를 위한18*32바이트가 소요되며 이것을 간단한 나눗셈으로 대체하면 i/18(237)과 i%18(238)으로 되며 나눗셈 한번으로 몫과 나머지가 결정되므로 연산 하나로 많은 메모리를 절약할수 있다.
서브밴드 합성필터의 분기횟수 감소(S24)에 대하여 알아보자. 서브밴드 합성 필터는 프로세서의 시간 점유율이 상당히 큰 함수이며 배열의 크기를 다소 크게 늘려 메모리를 많이 사용하더라도 분기문을 제거함으로써 다음의 캐쉬를 고려한 메모리 접근법에서 설명하듯이 캐쉬 참조 실패(cache miss)를 줄여주고 메모리 접근을 줄여 전력소모면과 성능면에서 많은 향상을 가져다준다. 또한 배열의 곱셈에서 순환 어드레스에 의한 조건문 대신 리니어(linear) 어드레스를 사용으로 분기문을 최소화시킬 수 있다.
루프(loop)합성, 루프전개, 배열병합, 구조체내 데이터 재배열(S25)에 대하여 알아보자.
루프합성은 두 개이상의 루프에서 루프 횟수가 같을 때, 하나의 루프로 합성하면 시간적 캐쉬 참조 실패를 많이 억제할 수 있고, 분기 명령을 줄일 수 있어 성능 향상을 시켜준다. 즉, 한 루프에서 사용되는 변수가 다른 루프에서 다시 참조될 경우 캐쉬에서 사라질 경우가 발생하지만 하나의 루프로 구현하면 같은 루프내에서 메모리를 접근하므로 캐쉬 실패확률이 떨어진다. 루프전개의 경우에는 프로세서의 점유율이 많은 함수나 루프에 대해서 루프를 풀어 헤쳐서 반복문의 조건을 줄이므로써 분기횟수을 줄여 프로세서의 성능 향상을 얻는다.
배열 병합의 경우에는 캐쉬의 공간적 참조실패를 고려한 방법으로 성능향상에 도움이 된다. 구조체내 데이터의 배열이 데이터 형에 따라 적절하게 정렬이 되지 않으면 메모리의 손실이 발생한다. 이러한 경우에는 데이터의 형을 고려한 구조체내의 멤버의 재배열은 메모리의 여백을 줄여 밀도있는 메모리 사용을 할 수 있다. 프로세서의 대부분은 2바이트, 4바이트 메모리 정렬을 하고 메모리 접근은 1바이트(char), 2바이트(short) 그리고 4바이트(int)로 하게 되는데 데이터 정렬시 char를 두개 혹은 4개를 연달아 배열하거나 char 두개에 short를 한 개 정렬시키면 메모리의 공백이 없이 밀도있게 메모리의 사용이 가능하다.
기계어 변환 단계(S30)에 대하여 알아보자. 기계어 변환 단계(S30)는 특정 프로세서를 대상으로 하는 기계어의 변환과정이다. ARM 프로세서는 전력 소모가 적어 이동형과 내장형에 많이 사용되는데 본 발명에서는 ARM 프로세서에 대한 부분 기계어화를 수행하여 보다 빠른 성능과 적은 전력 소모의 효과를 얻도록 한다.
도 9에는 기계어화하는 구체적인 방법들이 구체적으로 나열되어 있으며, 아래에서 몇 가지 코드내에 있는 실례를 들어 최적화 구현 과정을 설명해보자.
도시된 바와 같이, ARM 프로세서의 특성을 이용한 쉬프트를 이용한 곱셈(S31)과 캐쉬 참조 실패를 고려한 메모리 접근법(S32)을 사용한다.
쉬프트를 이용한 곱셈(S31)에 대하여 설명해 보자. 신호처리 알고리즘 상에는 많은 상수 곱셈이 존재하는데 이를 기계어화 할 때 쉬프트 명령어를 이용하여 성능 향상을 시킬수 있다. 도 10은 쉬프트를 이용한 곱셈의 예를 나타낸 도면이다. 도 10을 참조하면, 먼저 상수 10를 곱하고 하나의 변수를 더하는 과정은 부재번호 311, 312에 나타나는데, Ra를 좌로 2비트 쉬프트시키므로써 4를 곱하는 효과를 얻고, 여기에 Ra를 더해 5*Ra(311)가 되도록 한다. 다음으로 다시 Ra를 좌로 1비트 쉬프트해서 (Ra*5)*2의 효과를 얻고, 여기에 Rc를 더해서 원하는 Ra*10+Rc의 값을 Ra에 넣는다. 실제 예에서는 in[6]*222(313)를 계산하는 것인데 실제로는 in[6]의 값을 메모리에서 레지스터로 로드(load)하는 과정(314)과 상수 222를 또 다른 레지스터에 로드해서 이 둘의 레지스터를 곱하는 과정이 필요하다.
하지만, 쉬프트를 이용하면 in[6]로드 과정(314)과 v4(in[6])를 좌로 4비트 쉬프트시켜 v4*16의 효과를 얻고, 여기에 v4를 더하므로써 v4*17(lr)를 얻게 된다(315). 다음에 v4의 값을 좌로 7비트 쉬프트해서 (v4*128)의 값을 얻고 여기에서 lr를 빼면 (v4*128)-lr = v4*128-v4*17 = v4*111의 값을 얻게 된다(316). 이를 좌로 1비트 쉬프트시키면 원하는 값인 v4*111*2=v4*222를 얻게 된다(317). 여기서는, 도 6의 8비트 우로 쉬프트한 것을 고려하여 우로 7비트를 쉬프트한다. 메모리를 두번 접근해서 곱하는 것보다는 메모리 접근은 한번하고 레지스터의 값을 계산하는 것이 보다 프로세서에의 클럭이 줄어든다.
캐쉬 참조 실패를 고려한 메모리 접근법(S32)에 대하여 알아보면, 캐쉬 참조 실패를 고려한 메모리 접근법(S32)은 위에서도 언급했듯이 캐쉬 참조 실패를 고려한 메모리 접근법은 서브밴드 합성 필터에서의 분기문 감소 및 하나의 명령어로 다중 메모리 접근하여 메모리 접근의 최소화하는 방법, 루프 병합에 의한 시간적 캐쉬 참조 실패 감소, 배열 병합에의한 공간적 캐쉬 참조 실패 감소등의 캐쉬를 고려한 방법으로 성능 향상을 얻도록 한다. 서브밴드의 분기문 감소는 최적화 단계(S20)에서 구현된 결과이고, 다중 메모리의 접근법의 경우에는 ARM 프로세서에서 지원하는 명령어 중 메모리의 다중 레지스터 로드 명령어를 사용하여 한 번 메모리 접근 명령어로 다중 메모리 접근 효과를 얻는 방법이다.
이것은 최적화 단계(S20)에서의 메모리 증가를 감수하면서 데이터를 4바이트로 확장시켜서 가능하도록 하였다. 배열의 병합을 수행하는 경우에 한 루프에서 사용되는 배열의 크기가 동일하고 동시에 연산에 사용될 때 이 둘의 데이터를 별개로 해서 접근하면 캐쉬의 공간적 제약으로 인해 캐쉬 참조 실패가 발생할 수 있다. 하지만 둘의 데이터를 인터리브시켜서 메모리 저장하고 접근하면 위와 같은 캐쉬의 공간적 제약으로 인한 캐쉬 참조 실패는 많이 줄일 수 있다.
본 발명에 의하면, 저가의 낮은 성능 프로세서를 가지고 엠펙1 오디오 디코더를 실시간으로 재생이 가능하며, 엠펙 비디오와의 동시 재생으로 동영상을 모바일 환경에서나 내장형 시스템에서 구현이 가능하다.
이 뿐만 아니라, 현재 시중에 많이 나오고 있는 엠피 3파일을 오직 소프트웨어만 가지고 재생이 가능하므로 구현에 걸리는 시간이 많이 단축된다. 부가적으로 성능의 개선이 이루어졌을 경우에도 소프트웨어이므로 수정 구현이 용이하다.
메모리의 제한이 심한 엠피 3 재생기나 PDA등의 핸드헬드(Hand-held) 장치에서 고정 소수점으로 구현함으로써 많은 메모리 사용을 최소화할수 있으며 메모리의 접근이 많이 축소되므로 소모 전력의 최소화에도 도움이 되며 이에 따라 이동형 장치의 밧데리 수명이 늘어나는 효과를 가져온다.
또한, 현존하는 엠피3 재생기는 단지 엠펙-1 오디오 디코더 중의 계층(layer)3을 이용한 압축파일의 재생이지만 본 발명의 프로그램으로 대체되면 모든 계층의 압축파일을 재생키는 것이 가능하다.
도 1은 일반적인 엠펙1 오디오 디코더 (계층3)의 구성도.
도 2는 부동 소수점과 고정소수점 사이의 데이터 표현예를 나타낸 도면.
도 3은 본 발명에 따른 엠펙1 오디오 디코더의 성능 향상 구현방법의 과정을 나타낸 도면.
도 4은 본 발명에 따른 엠펙1 오디오 디코더의 성능 향상 구현 전후의 음질의 변질차이를 나타내는 그래프.
도 5는 본 발명에 따른 고정 소수점 코드의 최적화 방법을 나타내는 도면.
도 6은 본 발명에 따른 부동소수점에서 고정소수점으로의 변환예를 나타낸 도면.
도 7은 본 발명에 따른 초월함수 데이터를 데이블화하는 예를 나타낸 도면.
도 8은 본 발명에 따른 테이블형태의 데이터를 사칙연산화하는 예를 나타낸 도면.
도 9는 본 발명에 따른 기계어화를 수행하는 예를 나타내는 도면.
도 10은 본 발명에 따른 쉬프트를 이용한 곱셈의 예를 나타낸 도면.
Claims (10)
- 압축된 엠펙1 오디오 화일을 음성으로 재생하기 위하여 디코딩하는 방법에 있어서,상기 압축된 엠펙 오디오 화일 중 부동 소수점을 이용하여 이루어진 원시코드 데이터에 대하여 디코딩을 위한 코드의 변수 또는 상수에 대한 정수 단어 길이를 다음의 수학식에 의해 결정하고, 사칙 연산을 고려하여 각 변수에 대한 단어 길이를 재조정하여 고정 소수점을 이용하는 코드 데이터로 변환하는 고정 소수점 변환 단계와,상기 고정 소수점으로 변환된 코드 데이터에 대하여 프로세서 측면 및 메모리 사용측면에 따라 최적하기 위하여 쉬프트 연산 줄이기, 초월함수나 사칙연산의 테이블화, 테이블의 사칙 연산화, 합성필터의 분기 횟수감소, RISC 프로세서의 특징을 이용한 루프 합성, 루프 전개, 배열 병합, 구조체 내의 데이터 재배치 중 적어도 한가지 방법에 의해 고정 소수점의 코드를 최적화시키는 최적화 단계와,상기 최적화된 코드 데이터에 대하여 디코딩을 수행할 프로세서에 상응하는 기계어로 변환하여 디코딩의 성능을 향상시키는 기계어 변환 단계를 수행하는 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의 디코딩 성능 향상 방법.[수학식](R(x)는 변수 또는 상수(x)에서 평균(μ)과 표준편차(σ)에 의해서 결정되는 변수이며, W(x)는 R(x)에 대한 정수 단어 길이)
- 삭제
- 제 1항에 있어서, 상기 최적화 단계는,정수 단어 길이가 다른 변수간의 연산시, 상기 변수들의 평균 위치에 이진점을 두어 정수 단어 길이를 동일하게 하여 상기 변수들에 대한 정수 단어 길이를 최적화하는 단계를 포함하는 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의 디코딩 성능 향상 방법.
- 제 1항에 있어서, 상기 최적화 단계는,프로세서 점유율이 큰 사칙연산 중의 나눗셈, 여현함수, 지수함수/로그함수 등의 초월함수 연산을 테이블화시키는 단계를 포함하는 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의 디코딩 성능 향상 방법.
- 제 1항에 있어서, 상기 최적화 단계는,프로세서의 점유율에 비하여 메모리 차지율이 높은 테이블 데이터를 사칙연산으로 대체하는 단계를 포함하는 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의 디코딩 성능 향상 방법.
- 제 1항에 있어서, 상기 최적화 단계는,서브밴드 합성 필터에서 분기문을 줄이기 위해 배열의 곱셈에서 리니어 어드레스를 사용하는 단계를 포함하는 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의 디코딩 성능 향상 방법.
- 제 1항에 있어서, 상기 최적화 단계는,두 개이상의 루프에서 루프 횟수가 같을때 하나의 루프로 합성, 프로세서의 점유율이 많은 함수나 루프에 대한 루프 전개, 배열 병합을 통해 구조체내 데이터의 재배치를 수행하는 단계를 포함하는 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의 디코딩 성능 향상 방법.
- 제 1항에 있어서, 기계어 변환 단계는,상수 곱셈 연산에 대하여 쉬프트 명령어를 사용하여 기계어화를 수행하는 단계를 포함하는 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의 디코딩 성능 향상 방법.
- 제 1항에 있어서, 기계어 변환 단계는,ARM 프로세서에서 지원하는 명령어 중 메모리의 다중 레지스터 로드 명령어를 사용하여 한 번 메모리 접근 명령어로 다중 메모리 접근을 수행하여 기계어 변환을 하는 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의 디코딩 성능 향상 방법.
- 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의 디코딩 성능 향상 방법을 수행하기 위해, 디지탈 처리장치에 의해 실행될 수 있는 명령어들의 프로그램이 유형적으로 구현되어 있으며, 디지탈 처리장치에 의해 판독될 수 있는 기록매체에 있어서,상기 압축된 엠펙 오디오 화일 중 부동 소수점을 이용하여 이루어진 원시코드 데이터에 대하여 디코딩을 위한 코드의 변수 또는 상수에 대한 정수 단어 길이를 다음의 수학식에 의해 결정하고, 사칙 연산을 고려하여 각 변수에 대한 단어 길이를 재조정하여 고정 소수점을 이용하는 코드 데이터로 변환하는 고정 소수점 변환 단계와,상기 고정 소수점으로 변환된 코드 데이터에 대하여 프로세서 측면 및 메모리 사용측면에 따라 최적하기 위하여 쉬프트 연산 줄이기, 초월함수나 사칙연산의 테이블화, 테이블의 사칙 연산화, 합성필터의 분기 횟수감소, RISC 프로세서의 특징을 이용한 루프 합성, 루프 전개, 배열 병합, 구조체 내의 데이터 재배치 중 적어도 한가지 방법에 의해 고정 소수점의 코드를 최적화시키는 최적화 단계와,상기 최적화된 코드 데이터에 대하여 디코딩을 수행할 프로세서에 상응하는 기계어로 변환하여 디코딩의 성능을 향상시키는 기계어 변환 단계를 포함하는 기록매체.[수학식](R(x)는 변수 또는 상수(x)에서 평균(μ)과 표준편차(σ)에 의해서 결정되는 변수이며, W(x)는 R(x)에 대한 정수 단어 길이)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2001-0065335A KR100475246B1 (ko) | 2001-10-23 | 2001-10-23 | 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의디코딩 성능 향상 방법 및 이를 위한 기록 매체 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2001-0065335A KR100475246B1 (ko) | 2001-10-23 | 2001-10-23 | 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의디코딩 성능 향상 방법 및 이를 위한 기록 매체 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20030034409A KR20030034409A (ko) | 2003-05-09 |
KR100475246B1 true KR100475246B1 (ko) | 2005-03-10 |
Family
ID=29565925
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2001-0065335A KR100475246B1 (ko) | 2001-10-23 | 2001-10-23 | 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의디코딩 성능 향상 방법 및 이를 위한 기록 매체 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100475246B1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100947065B1 (ko) * | 2007-02-26 | 2010-03-10 | 삼성전자주식회사 | 무손실 오디오 부호화/복호화 방법 및 장치 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5754456A (en) * | 1996-03-05 | 1998-05-19 | Intel Corporation | Computer system performing an inverse cosine transfer function for use with multimedia information |
KR19990066552A (ko) * | 1998-01-30 | 1999-08-16 | 김영환 | 이산코사인변환/역이산코사인변환 프로세서 |
KR20000070020A (ko) * | 1997-08-01 | 2000-11-25 | 사이러스 로직, 인크. | 혼합된 고정 소수점 또는 부동 소수점 및 블럭 스케일 부동 소수점 연산자를 가진 적응 필터 시스템 |
KR20010104060A (ko) * | 2000-05-12 | 2001-11-24 | 송문섭 | 보코더 시스템에서 고정소수점 연산방법 |
-
2001
- 2001-10-23 KR KR10-2001-0065335A patent/KR100475246B1/ko not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5754456A (en) * | 1996-03-05 | 1998-05-19 | Intel Corporation | Computer system performing an inverse cosine transfer function for use with multimedia information |
KR20000070020A (ko) * | 1997-08-01 | 2000-11-25 | 사이러스 로직, 인크. | 혼합된 고정 소수점 또는 부동 소수점 및 블럭 스케일 부동 소수점 연산자를 가진 적응 필터 시스템 |
KR19990066552A (ko) * | 1998-01-30 | 1999-08-16 | 김영환 | 이산코사인변환/역이산코사인변환 프로세서 |
KR20010104060A (ko) * | 2000-05-12 | 2001-11-24 | 송문섭 | 보코더 시스템에서 고정소수점 연산방법 |
Also Published As
Publication number | Publication date |
---|---|
KR20030034409A (ko) | 2003-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7130952B2 (en) | Data transmit method and data transmit apparatus | |
US5768292A (en) | Error handling process for MPEG decoder | |
US5572209A (en) | Method and apparatus for compressing and decompressing data | |
US8682680B2 (en) | Methods and apparatuses for bit stream decoding in MP3 decoder | |
KR20050067142A (ko) | 데이터 저장 시스템에서 심볼 빈도 레벨링 | |
WO1998047247A1 (en) | Interpolative compression of sampled-data signals | |
CN110943744B (zh) | 数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置 | |
US20020013633A1 (en) | Audio processor and audio data processing method | |
JP3714935B2 (ja) | 改善されたハフマンデコーディング方法及び装置 | |
Lal et al. | E^ 2MC: Entropy Encoding Based Memory Compression for GPUs | |
KR100760976B1 (ko) | 프로그래머블 프로세서에서 mpeg-2 또는 mpeg-4aac 오디오 복호 알고리즘을 처리하기 위한 연산 회로및 연산 방법 | |
KR20200012861A (ko) | 디지털 오디오 신호에서의 차분 데이터 | |
US20020147753A1 (en) | Methods and systems for raising a numerical value to a fractional power | |
KR100475246B1 (ko) | 고정 소수점 코드 변환을 이용한 엠펙1 오디오 화일의디코딩 성능 향상 방법 및 이를 위한 기록 매체 | |
JP2003503740A (ja) | 音声信号復号化方法と装置 | |
US20060155957A1 (en) | Encoding method for very long instruction word (VLIW) DSP processor and decoding method thereof | |
KR100509009B1 (ko) | 소프트웨어 및 하드웨어 루프 압축 기능을 갖는 선입선출기록/후입선출 판독 트레이스 버퍼 | |
CN111431539B (zh) | 一种神经网络数据的压缩方法、装置及计算机可读存储介质 | |
Fältman et al. | A hardware implementation of an MP3 decoder | |
US7075462B2 (en) | Speeding up variable length code decoding on general purpose processors | |
JP3639424B2 (ja) | アドレス発生回路 | |
JP2021129143A (ja) | デコード装置 | |
Fajardo et al. | Reducing the I/O Bottleneck by a Compression Strategy. | |
JP3222967B2 (ja) | ディジタル信号処理装置 | |
JP2006162774A (ja) | 信号処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130205 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20140123 Year of fee payment: 10 |
|
LAPS | Lapse due to unpaid annual fee |