KR20080012088A - Method of performing log base 2 operation in k-bit microprocessor, scale factor decoding method using the same, record media recored program for realizing the same, and apparatus for performing log base 2 operation - Google Patents
Method of performing log base 2 operation in k-bit microprocessor, scale factor decoding method using the same, record media recored program for realizing the same, and apparatus for performing log base 2 operation Download PDFInfo
- Publication number
- KR20080012088A KR20080012088A KR1020060073129A KR20060073129A KR20080012088A KR 20080012088 A KR20080012088 A KR 20080012088A KR 1020060073129 A KR1020060073129 A KR 1020060073129A KR 20060073129 A KR20060073129 A KR 20060073129A KR 20080012088 A KR20080012088 A KR 20080012088A
- Authority
- KR
- South Korea
- Prior art keywords
- value
- bit
- log base
- zero count
- input value
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
도 1은 일반 디지털 신호 처리시 로그 베이스 2 연산 방법을 설명하는 순서도이다. 1 is a flowchart illustrating a
도 2는 32-비트 RISC에서 입력 정수값에 대한 이진수로 표현된 코드와 CLZ의 값을 나타내는 도표이다.FIG. 2 is a diagram showing the values of CLZ and code expressed in binary to input integer values in 32-bit RISC.
도 3은 본 발명의 일실시예에 따른 디지털 신호 처리시 로그 베이스 2 연산 방법을 설명하는 순서도이다. 3 is a flowchart illustrating a
도 4는 본 발명의 다른 실시예에 따른 반올림을 적용하는 경우의 로그 베이스 2 연산 방법을 설명하는 순서도이다. 4 is a flowchart illustrating a
도 5는 32-비트 RISC에서 종래의 로그 베이스 2 연산 방법을 처리하는 경우와 본 발명의 로그 베이스 2 연산 방법을 처리하는 경우의 소요되는 클럭 사이클을 비교한 도표이다.FIG. 5 is a diagram comparing clock cycles required when the
도 6은 본 발명의 일실시예에 따른 K-비트 RISC에서의 로그 베이스 2 연산 장치를 나타내는 블록도이다. 6 is a block diagram illustrating an apparatus for calculating a
<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>
610 : CLZ 처리부 620 : 연산부610: CLZ processing unit 620: arithmetic unit
본 발명은 K-비트(K는 자연수) 마이크로 프로세서에서의 로그 베이스 2 연산 수행 방법에 관한 것으로, 더욱 상세하게는 로그 베이스 2 연산 처리시 소요되는 클럭 사이클을 줄일 수 있는 K-비트(K는 자연수) 마이크로 프로세서에서의 로그 베이스 2 연산 수행 방법에 관한 것이다. The present invention relates to a method of performing a
디지털 신호처리 분야에서는 수학적인 모델링 및 기타 초월 함수(log, exp, cos, sin 등)를 자주 이용한다. 그 중에서도 로그 연산 방법 중의 한 가지인 로그 베이스 2 (log2) 연산은 디지털 신호 처리 분야 중 스케일 펙터 디코딩(scale factor decoding) 등에서 사용된다. In the field of digital signal processing, mathematical modeling and other transcendental functions (log, exp, cos, sin, etc.) are often used. Among them, log base 2 (log 2 ), which is one of logarithmic methods, is used in scale factor decoding and the like in the field of digital signal processing.
로그 베이스 2 연산은 예를 들어 MP3(MPEG1 Audio layer-3) 파일 디코딩 또는 WMA(Window Media Audio) 디코딩시 스케일 팩터 디코딩하는 경우에 사용된다. The
스케일 펙터 처리 과정은 매 디코딩시마다 처리되는 과정으로서 연산량 부분에서도 약 15% 정도의 많은 점유율을 차지한다. The scale factor processing process is performed at every decoding process and occupies a large share of about 15% in the computational amount.
일반 디지털 신호 처리에서는 로그 베이스 2(log2)를 연산하기 위해 일반적으로 다음과 C 언어로된 소스 코드를 사용하여 프로그래밍한다. In general digital signal processing, to program log base 2 (log 2 ), programming is usually done using the following C source code.
[소스 코드 1][Source code 1]
int LOG2_Floor(int i)int LOG2_Floor (int i)
{{
int iLog2 = 0; 초기값 설정 int iLog2 = 0; Initial value setting
while (((int)i >> iLog2) > 1) ; >>는 우측 쉬프트로서 ÷2 의미 while (((int) i >> iLog2)> 1); >> means ÷ 2 as right shift
iLog2++; iLog2를 1증가 iLog2 ++; iLog2 increased by 1
return iLog2; iLog2값을 리턴 return iLog2; Returns iLog2 Value
} }
[소스 코드 2][Source code 2]
int LOG2_Ceil(int i) int LOG2_Ceil (int i)
{{
int iLog2 = 0; int iLog2 = 0;
while (((int)1 << iLog2) > i); <<는 좌측 쉬프트로서 ×2 의미 while (((int) 1 << iLog2)> i); << means × 2 left shift
iLog2++; iLog2 ++;
return iLog2; return iLog2;
} }
예를 들어, log23을 연산하고자 하는 경우, 입력 i = 3 (십진수) = 0b11(이진 수)로 놓으면, 출력 값 iLog2는 소스 코드 1의 LOG2_Floor()를 사용하는 경우는 log23의 값(1.584…)에서 소수점이하값을 잘라낸 1이 얻어지고, 출력 값 iLog2는 소스 코드 2의 LOG2_Ceil()를 사용하는 경우는 log23의 값(1.584…)에 소수점값이 있는 경우 반올림하여 2가 얻어진다. For example, if you want to compute
또한, 입력 i = 536870912 (십진수) = 0x20000000(16진수) = 0b100000000000000000000000000000(2진수)인 경우 출력 값 iLog2는 소스 코드 1의 LOG2_Floor()를 사용하는 경우와 소스 코드 2의 LOG2_Ceil()를 사용하는 경우 모두 29로 동일하다.Also, if the input i = 536870912 (decimal) = 0x20000000 (hexadecimal) = 0b100000000000000000000000000000 (binary), the output value iLog2 uses LOG2_Floor () in
또한, 입력 i = 536871912(십진수) = 0x 200003E8(16진수) = 0b100000000000000000001111101000(2진수)인 경우 출력 값은 소스 코드 1의 LOG2_Floor()를 사용하는 경우는 29 이고, 소스 코드 2의 LOG2_Ceil()를 사용하는 경우는 30이다. Also, if input i = 536871912 (decimal) = 0x 200003E8 (hexadecimal) = 0b100000000000000000001111101000 (binary), the output value is 29 when using LOG2_Floor () in
소스 코드 1 및 소스 코드 2를 실제로 32-bit RISC(Reduced Instruction Set Computer)인 ARM9E에서 수행한 경우 아래 소스 코드 3 및 소스 4의 어셈블러로 각각 컴파일 된다. 아래 소스 코드 3 및 4는 아뮬레이터(ARMULATOR)에서 크로스-어셈(CROSS-ASM)으로 분석한 코드이다. If
[소스 코드 3] [Source code 3]
[LOG2_Floor() 동작][LOG2_Floor () behavior]
a1) MOV r1, r0 ; load input i a1) MOV r1, r0; load input i
b1) MOV r0, #0 ; load 0 b1) MOV r0, # 0;
Go_toGo_to
c1) MOV r2, r1, ASR r0 ; i >> iLog2 c1) MOV r2, r1, ASR r0; i >> iLog2
d1) CMP r2, #1 ; if((i >> iLog2) > 1) (비교) d1) CMP r2, # 1; if ((i >> iLog2)> 1) (compare)
e1) ADDGT r0, r0, #1 ; iLog2++ e1) ADDGT r0, r0, # 1; iLog2 ++
f1) BGT Go_to ; jump to Go_to (분기) f1) BGT Go_to; jump to Go_to (branch)
g1) BX r14 ; return iLog2 g1) BX r14; return iLog2
[소스 코드 4] [Source code 4]
[LOG2_Ceil() 동작][LOG2_Ceil () behavior]
a2) MOV r2, r0 ; load input i a2) MOV r2, r0; load input i
b2) MOV r0, #0 ; load 0 b2) MOV r0, # 0;
c2) MOV r1, #1 ; load 1 c2) MOV r1, # 1;
Go_toGo_to
d2) MOV r3, r1, LSL r0 ; 1 << iLog2 d2) MOV r3, r1, LSL r0; 1 << iLog2
e2) CMP r3, r2 ; if((1 << iLog2) < i) (비교) e2) CMP r3, r2; if ((1 << iLog2) <i) (compare)
f2) ADDLT r0, r0, #1 ; iLog2++ f2) ADDLT r0, r0, # 1; iLog2 ++
g2) BLT Go_to ; jump to Go_to (분기) g2) BLT Go_to; jump to Go_to (branch)
h2) BX r14 ; return iLog2 h2) BX r14; return iLog2
도 1은 일반 디지털 신호 처리시 로그 베이스 2 연산 방법을 설명하는 순서 도이다. 초기화 단계(10)는 입력값을 초기화하는 단계로서 상기 소스 코드 3의 a1) 및 b1) 단계를 포함하고, 소스 코드 4의 a2), b2) 및 c2) 단계를 포함한다. 비교 및 분기 처리 단계(단계 12)는 상기 소스 코드 3의 c1), d1), e1) 및 f1) 단계를 포함하고, 소스 코드 4의 d2), e2), f2) 및 g2) 단계를 포함한다.1 is a flowchart illustrating a
상기와 같은 소스 코드 3 및 4에서의 동작을 32-bit RISC인 ARM9E에서 수행하는 경우 소요되는 사이클(cycle) 수는 다음과 같다. The number of cycles required when the above operations in the
먼저, 소스 코드 3에 나타난 LOG2_Floor()를 사용하는 경우(여기서, N은 2N에서의 지수 N을 의미함)는 다음의 사이클이 소요된다. First, using LOG2_Floor () shown in
Step1) 입력 값 및 기타 초기화에 필요한 사이클은 7 사이클Step 1) 7 cycles for input value and other initialization
Step2) 비교 및 분기에 필요한 7 사이클 Step2) 7 cycles required for comparison and branching
Step3) 최종 소요 사이클 = 7 + 7*(N+1) (모든 경우)Step3) Final Cycle = 7 + 7 * (N + 1) (all cases)
그 다음, 소스 코드 4에 나타난 LOG2_Ceil()를 사용하는 경우(여기서, N은 2N에서의 지수 N을 의미함)는 다음의 사이클이 소요된다. Next, using LOG2_Ceil () shown in
Step1) 입력 값 및 기타 초기화에 필요한 사이클은 7+1=8 사이클(소스 코드 4의 반올림 역할을 수행하는 "MOV r1, #1" 코드에 의해 1사이클 추가됨)Step1) Input cycles and other cycles required for initialization are 7 + 1 = 8 cycles (added by one cycle by the code "MOV r1, # 1" which rounds source code 4)
Step2) 비교 및 분기에 필요한 7 사이클Step2) 7 cycles required for comparison and branching
Step3) 최종 소요 사이클 = 8 + 7*(N+1) (입력값(i)가 2의 거듭제곱인 경우)Step3) Final Cycle = 8 + 7 * (N + 1) (when input value (i) is a power of 2)
최종 소요 사이클 = 8 + 7*(N+2) (입력값(i)가 2의 거듭제곱이 아닌 경우) Last Cycle = 8 + 7 * (N + 2) (if input (i) is not a power of 2)
여기서 비교와 분기의 횟수는 N에 비례하게 되므로 비교와 분기에 소요되는 총 사이클수는 입력값의 크기와 관계있는 N에 비례하게 된다. Since the number of comparisons and branches is proportional to N, the total number of cycles for comparisons and branches is proportional to N related to the magnitude of the input value.
따라서, 로그 베이스 2 연산을 종래의 WMA(Window Media Audio) 디코더의 프로페셔널 버전 스펙(professional version specification) 등에 개시된 바와 같이 비교/분기 루틴을 사용하여 구현하는 경우 필요한 비교 및 분기 루틴의 횟수에 비례하여 로그 베이스 2 연산에 소요되는 총 사이클 수가 증가하며, 입력값의 크기에 따라서 소요되는 총 사이클 수가 크게 증가하게된다. Therefore, log
그 결과, 로그 베이스 2 연산을 이용하여 스케일 팩터 디코딩 연산을 수행하는 WMA 디코딩 또는 MP3(MPEG1 Audio layer-3) 디코딩시 연산에 소요되는 사이클 수가 증가되어 연산 시간이 증가되므로 효율적인 디코딩을 수행할 수 없는 문제점이 있다.As a result, the WMA decoding or the MPEG1 Audio layer-3 (MP3) decoding, which performs the scale factor decoding operation using the
따라서, 본 발명의 제1 목적은 K-비트(K는 자연수) 마이크로 프로세서에서 로그 베이스 2 연산 수행시 소요되는 클럭 사이클 수를 줄일 수 있는 K-비트 마이크로 프로세서에서의 로그 베이스 2 연산 방법 및 이를 수행하는 프로그램을 기록한 기록 매체를 제공하는 것이다. Accordingly, a first object of the present invention is to perform a
본 발명의 제2 목적은 상기 로그 베이스 2 연산 방법을 이용한 스케일 팩터 디코딩 방법 및 이를 수행하는 프로그램을 기록한 기록 매체를 제공하는 것이다. A second object of the present invention is to provide a scale factor decoding method using the
또한, 본 발명의 제3 목적은 K-비트(K는 자연수) 마이크로 프로세서에서 로 그 베이스 2 연산 수행시 소요되는 클럭 사이클 수를 줄일 수 있는 로그 베이스 2 연산 장치를 제공하는 것이다.It is also a third object of the present invention to provide a
상술한 본 발명의 제1 목적을 달성하기 위한 본 발명의 일측면에 따른 K-비트(K는 자연수) 마이크로 프로세서에서의 로그 베이스 2 연산 수행 방법은 K-비트 이진 입력값-여기서, 이진 입력값은 자연수임-에 대하여 선행 제로 카운트 연산을 수행하여 선행 제로 카운트 연산값을 산출하는 단계; 및 K-1 및 K 중의 하나와 상기 선행 제로 카운트 연산값과의 차이값을 상기 K-비트 이진 입력값에 대한 로그 베이스 2 연산 결과값으로 출력하는 단계를 포함한다. 상기 K-비트 이진 입력값에 대한 로그 베이스 2 연산 결과값은 미리 설정된 플래그(flag) 비트에 저장된 이진값이 제1 이진값을 가지는 경우 K-1와 상기 선행 제로 카운트 연산값과의 차이값이 될 수 있다. 상기 K-비트 이진 입력값에 대한 로그 베이스 2 연산 결과값은 미리 설정된 플래그(flag) 비트에 저장된 이진값이 제2 이진값을 가지는 경우 K와 상기 선행 제로 카운트 연산값과의 차이값이 될 수 있다. 상기 로그 베이스 2 연산 수행 방법은 MP3(MPEG1 Audio layer-3) 디코딩시 스케일 팩터 디코딩에 사용될 수 있다. 상기 로그 베이스 2 연산 수행 방법은 WMA(Window Media Audio) 디코딩시 스케일 팩터 디코딩에 사용될 수 있다. 상기 K-비트 마이크로 프로세서는 32-비트 RISC(Reduced Instruction Set Computer)가 될 수 있다.According to an aspect of the present invention for achieving the above-described first object of the present invention, a method for performing log-
본 발명의 제2 목적을 달성하기 위한 본 발명의 일측면에 따른 K-비트(K는 자연수) 마이크로 프로세서에서의 로그 베이스 2 연산을 이용한 스케일 팩터 디코 딩 방법은 K-비트 이진 입력값-여기서, 이진 입력값은 자연수임-에 대하여 선행 제로 카운트 연산을 수행하여 선행 제로 카운트 연산값을 산출하는 단계; K-1 및 K 중의 하나와 상기 선행 제로 카운트 연산값과의 차이값을 상기 K-비트 이진 입력값에 대한 로그 베이스 2 연산 결과값으로 출력하는 단계; 및 상기 로그 베이스 2 연산 결과값에 기초하여 스케일 팩터 디코딩을 수행하는 단계를 포함한다. According to an aspect of the present invention for achieving a second object of the present invention, a scale factor decoding method using a log-
본 발명의 제3 목적을 달성하기 위한 본 발명의 일측면에 따른 K-비트(K는 자연수) 마이크로 프로세서에서의 로그 베이스 2 연산 장치는 K-비트 이진 입력값-여기서, 이진 입력값은 자연수임-에 대하여 선행 제로 카운트 연산을 수행하여 선행 제로 카운트 연산값을 산출하는 선행 제로 카운트 처리부; 및 K-1과 상기 선행 제로 카운트 연산값과의 차이값을 상기 K-비트 이진 입력값에 대한 로그 베이스 2 연산 결과값으로 출력하는 연산부를 포함한다. 상기 K-비트 마이크로 프로세서는 32-비트 RISC(Reduced Instruction Set Computer)가 될 수 있다. Log-
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다. As the invention allows for various changes and numerous embodiments, particular embodiments will be illustrated in the drawings and described in detail in the written description. However, this is not intended to limit the present invention to specific embodiments, it should be understood to include all modifications, equivalents, and substitutes included in the spirit and scope of the present invention. In describing the drawings, similar reference numerals are used for similar elements.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르 게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is for the purpose of describing particular example embodiments only and is not intended to be limiting of the present invention. Singular expressions include plural expressions unless the context clearly indicates otherwise. In this application, the terms "comprise" or "have" are intended to indicate that there is a feature, number, step, operation, component, part, or combination thereof described in the specification, and one or more other features. It is to be understood that the present invention does not exclude the possibility of the presence or the addition of numbers, steps, operations, components, components, or a combination thereof.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art. Terms such as those defined in the commonly used dictionaries should be construed as having meanings consistent with the meanings in the context of the related art, and shall not be construed in ideal or excessively formal meanings unless expressly defined in this application. Do not.
본 발명은 컴퓨터가 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있으며, 또한, 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. The present invention can be embodied as computer readable codes on a computer readable recording medium. The computer-readable recording medium includes all kinds of recording devices in which data that can be read by a computer system is stored. Examples of computer-readable recording media include ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage device, and the like, and are also implemented in the form of a carrier wave (for example, transmission over the Internet). It also includes. The computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하 게 설명하고자 한다. 이하, 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다. Hereinafter, with reference to the accompanying drawings, it will be described in detail a preferred embodiment of the present invention. Hereinafter, the same reference numerals are used for the same components in the drawings, and duplicate descriptions of the same components are omitted.
종래의 디지털 신호 처리시 로그 베이스 2 (log2) 연산은 비교 루틴 및 분기 루틴을 포함하므로 많은 클럭 사이클을 필요로 한다. 본 발명에서는 디지털 신호 처리시 로그 베이스 2 (log2) 연산에 소요되는 클럭 사이클을 효율적으로 줄이기 위해 선행 제로 카운트(CLZ; Count Leading Zero) 연산을 이용한다. 예를 들어, 선행 제로 카운트(CLZ) 연산은 ARM9 시리즈 중 32-비트 RISC인 ARMv5E에서 제공되는 선행 제로 카운트(CLZ) 명령어를 이용하여 구현할 수 있다. Log base 2 (log 2 ) operations in conventional digital signal processing require many clock cycles because they include a comparison routine and a branch routine. In the present invention, in order to efficiently reduce clock cycles required for log base 2 (log 2 ) operations in digital signal processing, a leading counting zero (CLZ) operation is used. For example, the leading zero count (CLZ) operation can be implemented using the leading zero count (CLZ) instruction provided in ARMv5E, a 32-bit RISC of the ARM9 series.
CLZ 연산은 최상위 비트에서 처음으로 1이 나온 비트(즉, 첫번째 유효 숫자) 사이에 0이 몇 개나 있는가를 카운트한다. 예를 들어, 다음과 같은 방식으로 동작된다. The CLZ operation counts how many zeros are between the most significant bit of the first bit (that is, the first significant digit). For example, it works in the following manner.
PRE r1 = 0b 0000 0000 0000 0000 0000 0000 0001 0000PRE r1 = 0b 0000 0000 0000 0000 0000 0000 000 1 0000
CLZ r0, r1CLZ r0, r1
POST r0 = 27POST r0 = 27
상기 예를 살펴보면, 최상위 비트로부터 0이 27번 나온 후 처음으로 1이 나왔으므로 CLZ 연산 결과값 r0에는 27이 리턴된다. CLZ 연산은 첫번째 유효 숫자 앞에 0이 몇 개나 있는지 센다. 32-비트 RISC에서 사용되는 선행 제로 카운트 명령어에서는 첫번째 유효 숫자 앞에 0이 만약 한 비트도 없다면 32를 리턴한다. In the above example, since 0 is 27 times from the most significant bit and 1 is first, 27 is returned in the CLZ operation result r0. The CLZ operation counts the number of zeros before the first significant digit. The leading zero count instruction used in 32-bit RISC returns 32 if there is no bit before the first significant digit.
도 2는 32-비트 RISC에서 입력 정수값에 대한 이진수로 표현된 코드와 CLZ의 값을 나타내는 도표이다. 도 2의 'x'는 '1' 또는 '0' 둘 중의 임의의 값을 가질 수 있다.FIG. 2 is a diagram showing the values of CLZ and code expressed in binary to input integer values in 32-bit RISC. 'X' of FIG. 2 may have any value of either '1' or '0'.
CLZ 명령어는 그 수를 정규화해야 하는 루틴에서 매우 유용하게 사용할 수 있다. 정수(integer)의 가장 중요한 비트인 첫번째 유효 숫자(leading one)이 알려진 비트 위치에 있을 때, 상기 정수는 "정규화되었다"고 한다. 예를 들어 정수 9를 이진값으로 표현하면 0b00001001이 되는데, 여기서 유효 숫자는 1001이고, 맨 왼에 있는 1이 바로 첫번째 유효 숫자(leading one)이다. The CLZ instruction is very useful for routines that need to normalize their numbers. When the first leading digit, the most significant bit of an integer, is at a known bit position, the integer is said to be "normalized." For example, the
뉴톤-랩슨(Newton-Raphson) 나눗셈을 구현하거나 부동소수점 형식으로의 변환을 위해서는 정규화가 필요하다. 정규화는 알고리즘을 계산하거나 몇몇 스케줄링 루틴에서 사용되는 우선 순위 디코더에서도 유용하게 사용된다. 상기와 같은 어플리케이션에서는 정규화값과 정규화 값에 도달하는 데 필요한 시프트 값을 둘 다 알아야 한다. Normalization is required to implement Newton-Raphson division or to convert to floating-point format. Normalization is also useful for priority decoders used in computing algorithms or in some scheduling routines. In such an application, both the normalization value and the shift value required to reach the normalization value must be known.
CLZ 값은 정수를 정규화하기 위해 ARMv5E와 같은 32-비트 RISC에서는 첫 번째 유효 숫자가 31번째 비트에 위치하도록 왼쪽으로 시프트 할 때의 시프트할 갯수로 사용된다. The CLZ value is used as the number of shifts when shifting left so that the first significant digit is located in the 31st bit in 32-bit RISC, such as ARMv5E.
도 3은 본 발명의 일실시예에 따른 디지털 신호 처리시 로그 베이스 2 연산 방법을 설명하는 순서도이고, 도 4는 본 발명의 다른 실시예에 따른 반올림을 적용하는 경우의 로그 베이스 2 연산 방법을 설명하는 순서도이다. 도 3 및 도 4는 K-비트 RISC(Reduced Instruction Set Computer)를 사용한 디지털 신호 처리시 로그 베이스 2 연산 방법을 예로 들어 설명한다. 여기서, K값은 예를 들어 32가 될 수 있다. 3 is a flowchart illustrating a
도 3을 참조하면, K-비트 입력값 (i)를 로드(load)한다(단계 301). Referring to FIG. 3, the K-bit input value i is loaded (step 301).
상기 입력값(i)의 최상위 비트에서 처음으로 1이 나온 비트를 나타내는 첫번째 유효 숫자 비트(leading one) 사이의 0의 개수를 카운트한다(단계 303). The number of zeros between the first significant digit bit representing the first bit in the most significant bit of the input value i is counted (step 303).
그다음, (K-1)와 상기 0의 개수간의 차이값을 구한다(단계 305). 상기 (K-1)과 상기 0의 개수간의 차이값이 상기 입력값 (i)에 대한 log2i값이다. Then, the difference between K-1 and the number of zeros is obtained (step 305). The difference between (K-1) and the number of zeros is the log 2 i value for the input value (i).
도 4를 참조하면, K-비트 입력값 (i)를 로드(load)하고(단계 401), 상기 입력값(i)의 최상위 비트에서 처음으로 1이 나온 비트를 나타내는 첫번째 유효 숫자 비트(leading one) 사이의 0의 개수를 카운트한 후(단계 403), K와 상기 0의 개수와의 차이값을 산출한다(단계 405). 도 4는 로그 베이스 2 연산 결과값 log2i이 소수점 이하값을 가지는 경우에 반올림을 적용하여 1을 더해주므로 (K-1)와 상기 0의 개수와의 차이값을 구하는 대신 K와 상기 0의 개수간의 차이값을 구한다. 즉, 로그 베이스 2 연산 결과값 log2i이 소수점 이하값을 가지는 경우 K와 상기 0의 개수간의 차이값이 상기 입력값 (i)에 대해 반올림을 적용한 log2i값이다. Referring to FIG. 4, the first significant digit bit (leading one) indicating the first bit of the first bit of the most significant bit of the input value (i) is loaded (step 401). After counting the number of zeros (), the difference value between K and the number of zeros is calculated (step 405). FIG. 4 adds 1 by applying rounding when the
도 3의 선행 제로 카운트를 이용한 로그 베이스 2 연산 방법은 아래와 같이 인라인 어셈 함수로 구현할 수 있다. The
[소스 코드 5][Source code 5]
__inline int LOG2_Floor(int i)__inline int LOG2_Floor (int i)
{{
int iLog2; int iLog2;
__asm ; asm 이하의 { }에 포함된 코드는 어셈블리 코드임을 의미함 __asm; Code contained in {} below asm means assembly code
{ {
CLZ iLog2, i CLZ iLog2, i
} }
return (31 - iLog2); return (31-iLog2);
} }
도 4의 선행 제로 카운트를 이용한 로그 베이스 2 연산 방법은 아래와 같이 인라인 어셈 함수로 구현할 수 있다. The
[소스 코드 6][Source code 6]
__inline int LOG2_Ceil(int i)__inline int LOG2_Ceil (int i)
{{
int iLog2;int iLog2;
__asm ; asm 이하의 { }에 포함된 코드는 어셈블리 코드임을 의미함 __asm; Code contained in {} below asm means assembly code
{ {
CLZ iLog2, i CLZ iLog2, i
} }
return (32 - iLog2); return (32-iLog2);
} }
소스 코드 5 및 6을 참조하면, 입력값 i가 입력되고, 선행 제로 카운트(CLZ) 처리를 통해 iLog2에 0의 개수가 저장된다. 선행 제로 카운트(CLZ) 값을 이용하여 소스 코드 5에 나타난 바와 같이 결과값(31 - iLog2)을 리턴 처리를 해 주면 원하는 로그 베이스2 연산 결과 (log2i)가 나온다. 소스 코드 6에서는 소정의 플래그(flag) 비트에 저장된 이진값이 LOG2_Ceil()함수를 실행하도록 지시하는 경우 반올림 처리를 위해 결과값(32 - iLog2)을 리턴 처리해주어 반올림 처리된 로그 베이스 2 연산 결과 (log2i)를 얻는다. 예를 들어, 상기 사용자에 의해 미리 설정된 플래그 비트의 이진값이 0인 경우는 로그 베이스 2 연산 결과값 log2i이 소수점 이하값을 가지지 않는 경우를 처리하는 LOG2_Floor()함수를 실행하는 경우를 나타내고, 상기 플래그 비트의 이진값이 1인 경우는 로그 베이스 2 연산 결과값 log2i이 소수점 이하값을 가지는 경우를 처리하는 LOG2_Ceil()함수를 실행하는 경우를 나타낼 수 있다.Referring to the
종래의 도 1의 로그 베이스 2 연산 방법에 따르면 비교/분기의 횟수가 입력 값(i)에 비례하기 때문에 입력 값(i)에 따라 비례적으로 [7 + 7*(N+1)] 또는 [8 + 7*(N+1)] 또는 [8 + 7*(N+2)] 사이클을 소요하게 된다. According to the
도 3 및 도 4의 본 발명의 실시예에 따른 디지털 신호 처리시 로그 베이스 2 연산 방법은 종래의 도 1의 로그 베이스 2 연산 방법과 비교하면, 기존의 비교 루틴 및 분기 루틴으로 이루어진 반복 루프(loop)가 없어지고, 반복적인 루프가 없이 직접 연산 처리가 되어 로그 베이스 2 연산 결과값을 산출할 수 있다. The
본 발명의 실시예들에 따는 로그 베이스 2 연산 방법을 32-bit RISC에 적용 할 경우에 CLZ 연산을 이용하여 비교/분기 과정을 제거함으로써 로그 베이스 2 연산 결과를 도출할 때까지 입력 값의 크기에 상관없이 3 사이클을 소요된다. 왜냐하면, 입력값을 로드(load) 하는데 1 사이클, 선행 제로 카운트(CLZ) 명령어를 수행하는데 1 클럭 사이클, CLZ 처리한 결과값을 리턴 처리하는데 1 클럭 사이클을 소요하기 때문이다. When the
따라서, 본 발명의 실시예에 따른 디지털 신호 처리시 로그 베이스 2 연산 방법을 32-비트 RISC등을 이용한 디지털 신호 처리에 적용할 경우 로그 베이스 2 연산에 소요되는 클럭 사이클 수는 비교 루틴의 횟수, 분기 루틴의 횟수 및 입력값의 크기에 무관하게 일정한 값을 가진다. 즉, 본 발명의 실시예들에 따른 디지털 신호 처리시 로그 베이스 2 연산 방법은 종래 입력 값에 비례적으로 클럭 사이클이 소요되는 것이 아니라, 어떠한 입력 값을 갖더라도 일정한 수의 클럭 사이클이 소요된다. 그결과, 로그 베이스 2 연산 처리시 연산량을 크게 줄일 수 있다. Therefore, when the
도 5는 32-비트 RISC에서 종래의 로그 베이스 2 연산 방법을 처리하는 경우와 본 발명의 로그 베이스 2 연산 방법을 처리하는 경우의 소요되는 클럭 사이클을 비교한 도표이다. 도 5는 32-비트 RISC의 일종인 ARM946E-S를 사용하여 측정한 클럭 사이클 수를 나타낸다. N은 2N에서의 지수 N을 의미한다. 도 6은 도 5의 LOG2_Ceil()함수를 적용할 때 종래의 로그 베이스 2 연산 방법을 처리하는 경우와 본 발명의 로그 베이스 2 연산 방법을 처리하는 경우의 소요되는 클럭 사이클을 비교한 도표이다. FIG. 5 is a diagram comparing clock cycles required when the
도 5 및 도 6에 도시된 바와 같이, 종래의 로그 베이스 2 연산은 N에 비례적으로 사이클이 증가하지만 제안된 연산은 N과는 상관없이 3 사이클이 소요된다.As shown in Figs. 5 and 6, the
도 5는 입력값(i)가 모두 2의 거듭 제곱인 경우만을 도시하였고, 도 6은 입력값(i)가 2의 거듭 제곱인 경우와 거듭 제곱이 아닌 경우를 모두 도시하였다. 도 6을 참조하면, LOG2_Ceil()함수를 적용할 때 입력값(i)가 1, 2, 4, 8, 16, …, 1024 와 같이 2의 거듭 제곱인 경우에는 소요되는 클럭 사이클수는 (8+7*(N+1))이고, 입력값(i)가 3, 5, 6, 7, 9, … 와 같이 2의 거듭 제곱이 아닌 경우에는 소요되는 클럭 사이클수는 (8+7*(N+2))이다. FIG. 5 illustrates only the case where the input values i are all powers of two, and FIG. 6 illustrates both the case where the input values i are powers of two and non-power squares. Referring to FIG. 6, when the LOG2_Ceil () function is applied, the input value i is 1, 2, 4, 8, 16,... In the case of 2 power, such as 1024, the number of clock cycles required is (8 + 7 * (N + 1)), and the input value (i) is 3, 5, 6, 7, 9,... As shown in the following figure, the number of clock cycles required is not (8 + 7 * (N + 2)).
도 7은 본 발명의 일실시예에 따른 K-비트 RISC에서의 로그 베이스 2 연산 장치를 나타내는 블록도이다. 7 is a block diagram illustrating an apparatus for calculating a
도 7을 참조하면, 본 발명의 일실시예에 따른 로그 베이스 2 연산 장치는 CLZ 처리부(710) 및 연산부(720)을 포함한다. Referring to FIG. 7, the
CLZ 처리부(710)에서는 K-비트 입력값 i를 입력받아 선행 제로 카운트(CLZ) 연산을 수행한다. 구체적으로, CLZ 처리부(710)에서는 K-비트 입력값(i)의 최상위 비트에서 처음으로 1이 나온 비트를 나타내는 첫번째 유효 숫자 비트(leading one) 사이의 0의 개수를 카운트하여 CLZ 결과값을 출력한다. The
연산부(720)에서는 CLZ 결과값을 입력받아 (K-1)과 CLZ 결과값과의 차이값을 산출한다. 즉, CLZ 결과값을 입력받아 (K-1)에서 CLZ 결과값을 빼준다. 또는, 연산부(720)에서는 사용자에 의해 미리 설정된 플래그(flag) 비트에 저장된 이진값이 소정값을 가지는 경우 로그 베이스 2 연산 결과값 log2i이 소수점 이하값을 가지는 경우 반올림을 적용하기 위하여 CLZ 결과값을 입력받아 K와 CLZ 결과값간의 차이값을 구한다. 예를 들어, 플래그(flag) 비트에 저장된 이진값이 1인 경우 상기 반올림을 적용하기 위하여 CLZ 결과값을 입력받아 K와 CLZ 결과값간의 차이값을 구할 수 있다. The
로그 베이스 2 연산 장치는 로그 베이스 2 연산 결과값 log2i이 소수점 이하값을 가지는 경우에는 반올림을 적용하기 위하여 상기 (K-1)과 CLZ 결과값과의 차이값에 1을 가산하는 가산기(730)을 더 포함할 수도 있다. The
본 발명의 실시예들에 따른 로그 베이스 2 연산은 MP3(MPEG1 Audio layer-3) 디코딩시 스케일 팩터 디코딩에 사용될 수 있다. MP3 디코더는 파서(parser), 허프만 디코딩(Huffman decoding)부, 역양자화(Inverse Quantization)부 및 IMDCT를 포함한다. 구체적으로, MP3 파일의 디코딩 과정은 먼저 외부로부터 입력되는 MP3 형식의 비트스트림을 입력버퍼에 담고, 입력버퍼의 데이터를 이용하여 스케일 팩터값을 읽고, 사이드 정보(side information) 및 스케일 팩터에 의해 허프만 디코딩, 역양자화 및 주파수 영역에서의 시간 영역으로의 변환(IMDCT)등을 수행한 다음 최종 오디오 데이터를 생성한다. The
MP3 방식에서는 오디오 대역 전체에 대하여 양자화를 실시하지 않고 스케일 팩터 밴드(scalefactor band)라는 주파수 대역으로 나누어 영역 데이터를 스케일링하여 원래의 오디오 신호를 복구한다. 스케일 팩터는 밴드 단위로 나뉘어져 적용된 다. 스케일 팩터 복호부에서 사이드 정보로부터 역양자화의 스케일이 복호된다. 상기 역양자화(Inverse Quantization) 과정에서 스케일 팩터 디코딩을 하기 위한 사전 과정으로서 로그 베이스 2 연산을 적용하여 스케일 팩터(scalefactor)의 계수(coefficient) 값을 구하고, 쉬프터에서 메모리에 저장된 소정 개수의 스케일 팩터를 상기 로그 베이스 2 연산 결과값(스케일 팩터의 계수값)에 상응하는 횟수만큼 좌측으로 쉬프트 하여 원하는 다수의 스케일 팩터를 얻음으로써 스케일 팩터 디코딩을 수행한다. In the MP3 method, the original audio signal is recovered by scaling the region data by dividing it into a frequency band called a scale factor band without performing quantization on the entire audio band. The scale factor is divided into bands. In the scale factor decoding unit, the scale of inverse quantization is decoded from the side information. In the inverse quantization process, a
하기의 소스 코드 7은 MP3 디코딩시 스케일 펙터 선택 정보(scfsi, scalefactor selection information)처리부에서 사용되는 스케일 팩터(scalefactor)의 계수(coefficient) 값을 구하는 루틴의 슈도-코드(Pseudo-Code)를 나타낸다.
[소스 코드 7][Source code 7]
Int mp3_Scfsi(A,B,C)Int mp3_Scfsi (A, B, C)
{{
for i=0 to A do ; A는 입력인자로 Spectrum 값의 수 for i = 0 to A do; A is the number of Spectrum values
xr_sum = pow(abs(xr(i))); Spectrum을 이용하여 energy 계산 xr_sum = pow (abs (xr (i))); Calculation of energy using Spectrum
en_tot = log2_floor(xr_sum); total energy를 구함 en_tot = log 2_floor (xr_sum); Find total energy
for j=0 to B do ; B는 입력인자로 subband(sb) 수 for j = 0 to B do; B is the number of subband (sb) as input factors
top = lbl(j)+bw(j)-1; bandwidth별로 계산하기 위함 top = lbl (j) + bw (j) -1; To calculate by bandwidth
for k=lbl(j) to top do for k = lbl (j) to top do
energy = pow(abs(xr(i))); 각 bandwidth별 energy 계산 energy = pow (abs (xr (i))); Calculation of energy for each bandwidth
en(j) = log2_floor(energy); 각 band별 energy 계산 en (j) = log 2_floor (energy); Calculation of energy for each band
xm(j) = log2_floor(C(j)); 각 band 별 가용 가능한 왜곡(distortion) 값을 계산 xm (j) = log 2_floor (C (j)); Calculate the available distortion values for each band
}}
상기 소스 코드 7은 스케일 펙터 디코딩을 하기 위한 사전 정보를 구하는 단계로서 알고리즘 변경에 의해 log2_floor 또는 log2_ceil을 사용할 수 있다.The
또는, 본 발명의 실시예들에 따른 로그 베이스 2 연산은 WMA 디코딩시 스케일 팩터 디코딩부에서 사용될 수 있다. 하기의 소스 코드 8은 WMA 디코딩시 스케일 펙터 처리 부에서 스케일 팩터(scalefactor)의 계수(coefficient) 값을 구하는 루틴의 슈도-코드(Pseudo-Code)를 나타낸다. Alternatively, the
[소스 코드 8][Source Code 8]
Int PreScaleCoeff(A,B,C,D)Int PreScale Coeff (A, B, C, D)
{{
for i=0 to A do ; A는 입력인자로 가변임 for i = 0 to A do; A is variable as input factor
if(B==1) if (B == 1)
maxQuantStep = m_qfltMaxQuantStep; 양자화 스텝의 최대값 선택 maxQuantStep = m_qfltMaxQuantStep; Select maximum value of quantization step
ctMaxVal >>= maxQuantStep; coefficient에 영향 주는 최대값 결정 ctMaxVal >> = maxQuantStep; Determine maximum value affecting coefficient
cLeftShiftBits = C- LOG2_Ceil(ctMaxVal); ctMaxVal은 1부터 234까 지의 정수임. LOG2_Ceil(ctMaxVal) 결과값의 범위는 0~34임. C는 입력인자로 사용 가능한 계수의 최대치로서 1부터 30까지의 정수임. cLeftShiftBits은 계수를 생성시켜주는 쉬프트(shift)값임. cLeftShiftBits = C- LOG2_Ceil (ctMaxVal); ctMaxVal is an integer from 1 to 2 34 . LOG2_Ceil (ctMaxVal) The result range is 0 ~ 34. C is the maximum value of the coefficient that can be used as an input factor and is an integer from 1 to 30. cLeftShiftBits is a shift value that generates coefficients.
if (cLeftShiftBits >0) ; cLeftShiftBits가 양수인 경우의 처리 if (cLeftShiftBits> 0); Handling when cLeftShiftBits is Positive
for j= 0 to iHi do for j = 0 to iHi do
rgiCoefRecon[j] <<= cLeftShiftBits; scalefactor coefficient를 j개 만큼 cLeftShiftBits를 이용하여 만듦. rgiCoefRecon [j] << = cLeftShiftBits; By using j cLeftShiftBits scale factor coefficients.
else ; cLeftShiftBits가 음수인 경우의 처리 else; Handling when cLeftShiftBits is Negative
for j= 0 to iHi do for j = 0 to iHi do
rgiCoefRecon[j] >>= -cLeftShiftBits; rgiCoefRecon [j] >> = -cLeftShiftBits;
}}
또는, 본 발명의 실시예들에 따른 로그 베이스 2 연산은 WMA 디코딩시 패킷 헤더 디코딩과정에서도 사용될 수 있다. 또는, 본 발명의 실시예들에 따른 로그 베이스 2 연산은 MP3 디코딩시 파서(parser)에서 패킷 헤더 디코딩하는 과정에서도 사용될 수 있다.Alternatively, the
상기와 같은 K-비트(K는 자연수) 마이크로 프로세서에서의 로그 베이스 2 연산 수행 방법, 상기 로그 베이스 2 연산을 이용한 스케일 팩터 디코딩 방법 및 K-비트(K는 자연수) 마이크로 프로세서에서의 로그 베이스 2 연산 장치에 따르면, 종래의 로그 베이스 2 연산 방법에서 사용되던 비교 루틴 및 분기 루틴으로 이루어진 반복 루프(loop)를 사용하지 않고 CLZ 연산을 이용하여 입력값에 대한 로그 베이스 2 연산 결과값을 산출할 수 있다. A method of performing a
따라서, 비교 루틴 및 분기 루틴으로 이루어진 반복 루프(loop)를 사용하지 않고 CLZ 연산을 이용하여 로그 베이스 2 연산 결과를 도출하므로 본 발명의 실시예들에 따른 로그 베이스 2 연산 방법을 32-비트 RISC등에 적용할 경우 로그 베이스 2 연산에 소요되는 클럭 사이클 수는 비교 루틴의 횟수, 분기 루틴의 횟수 및 입력값의 크기에 무관하게 일정한 값을 가진다. Therefore, the
따라서, 본 발명의 실시예들에 따른 로그 베이스 2 연산 방법은 종래 입력 값에 비례적으로 클럭 사이클이 소요되는 것이 아니라 어떠한 입력 값을 갖더라도 일정한 수의 클럭 사이클만이 소요되므로 로그 베이스 2 연산 처리시 연산량을 크게 줄일 수 있다. 특히, 본 발명의 실시예들에 따른 로그 베이스 2 연산 방법을 WMA(Window Media Audio) 디코딩시 스케일 팩터 디코딩 및 MP3(MPEG1 Audio layer-3) 디코딩시 스케일 팩터 디코딩에 적용할 경우 연산량을 크게 줄일 수 있다.Accordingly, the
이상 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.Although described with reference to the embodiments above, those skilled in the art will understand that the present invention can be variously modified and changed without departing from the spirit and scope of the invention as set forth in the claims below. Could be.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060073129A KR100801326B1 (en) | 2006-08-02 | 2006-08-02 | Method of performing log base 2 operation in k-bit microprocessor, scale factor decoding method using the same, record media recored program for realizing the same, and apparatus for performing log base 2 operation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060073129A KR100801326B1 (en) | 2006-08-02 | 2006-08-02 | Method of performing log base 2 operation in k-bit microprocessor, scale factor decoding method using the same, record media recored program for realizing the same, and apparatus for performing log base 2 operation |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080012088A true KR20080012088A (en) | 2008-02-11 |
KR100801326B1 KR100801326B1 (en) | 2008-02-19 |
Family
ID=39340457
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020060073129A KR100801326B1 (en) | 2006-08-02 | 2006-08-02 | Method of performing log base 2 operation in k-bit microprocessor, scale factor decoding method using the same, record media recored program for realizing the same, and apparatus for performing log base 2 operation |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100801326B1 (en) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2495801A1 (en) | 1980-12-05 | 1982-06-11 | Thomson Csf | LOGARITHMIC SIGNAL PROCESSING DEVICE, RADAR DIVERSITY OPERATING RADAR APPLICATION AND RADAR COMPRISING SUCH A DEVICE |
KR0182169B1 (en) * | 1996-08-16 | 1999-05-15 | 삼성전자주식회사 | Log arithmathic value calculator |
US5951629A (en) | 1997-09-15 | 1999-09-14 | Motorola, Inc. | Method and apparatus for log conversion with scaling |
KR20060081848A (en) * | 2005-01-10 | 2006-07-13 | 삼성전자주식회사 | Display controller with contrast strech function and method thereof |
-
2006
- 2006-08-02 KR KR1020060073129A patent/KR100801326B1/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
KR100801326B1 (en) | 2008-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2438235C1 (en) | Apparatus and method for low-complexity combinatorial coding of signals | |
EP2159790B1 (en) | Audio encoding method, audio decoding method, audio encoding device, audio decoding device, program, and audio encoding/decoding system | |
EP2062149A2 (en) | Apparatus and method for low complexity combinatorial coding of signals | |
JP6490846B2 (en) | Decoding device, method thereof, program, and recording medium | |
EP2191381A1 (en) | Encoding and/or decoding digital content | |
EP1801691A1 (en) | Information encoding method, decoding method, common multiplier estimation method, device using these methods, program, and recording medium | |
RU2375743C2 (en) | Method of creating presentation of calculation result, linearly varying with square value | |
KR102615901B1 (en) | Differential data in digital audio signals | |
US9425820B2 (en) | Vector quantization with non-uniform distributions | |
US8593321B2 (en) | Computation apparatus and method, quantization apparatus and method, and program | |
KR20010042988A (en) | Method and apparatus for decoding an audio signal | |
KR100801326B1 (en) | Method of performing log base 2 operation in k-bit microprocessor, scale factor decoding method using the same, record media recored program for realizing the same, and apparatus for performing log base 2 operation | |
Lee et al. | High quality MPEG-audio layer III algorithm for a 16-bit DSP | |
US8601039B2 (en) | Computation apparatus and method, quantization apparatus and method, and program | |
WO2009032740A2 (en) | Fast computation of products by dyadic fractions with sign-symmetric rounding errors | |
JP5463485B2 (en) | Audio device for 1-bit signal | |
JP3059429B2 (en) | Decryption device | |
US6882976B1 (en) | Efficient finite length POW10 calculation for MPEG audio encoding | |
Steeb | Mathematical tools in signal processing with C++ & Java simulations | |
Yen et al. | An efficient implementation of a low-complexity MP3 algorithm with a stream cipher | |
Ryan et al. | Sound and Fourier Series | |
Law et al. | A full-compliance MP3 decoder using DSP | |
Uzelac et al. | A fast MPEG audio layer III software decoder | |
O'Callaghan | Implementation of a MPEG 1 layer I audio decoder with variable bit lengths | |
JPH11288365A (en) | Power calculation device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130221 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20140203 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20150129 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20180129 Year of fee payment: 11 |