KR20070100637A - 라운딩 연산 방법 및 이 연산 장치 - Google Patents
라운딩 연산 방법 및 이 연산 장치 Download PDFInfo
- Publication number
- KR20070100637A KR20070100637A KR1020070026935A KR20070026935A KR20070100637A KR 20070100637 A KR20070100637 A KR 20070100637A KR 1020070026935 A KR1020070026935 A KR 1020070026935A KR 20070026935 A KR20070026935 A KR 20070026935A KR 20070100637 A KR20070100637 A KR 20070100637A
- Authority
- KR
- South Korea
- Prior art keywords
- bits
- rounding
- multiplier
- bit
- input data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
고속의 저정밀도 승산기를 사용하여, 연산 처리를 고속화하고, 또한 연산의 출력 정밀도를 확보한다. 연산 장치는, 복수(K)의 zbit로 이루어지는 입력 데이터IN1∼INK의 집합을 입력하는 라운딩 처리부(10)를 가지고 있다. 라운딩 처리부(10)는, 각 32bit의 입력 데이터IN1∼INK 중 상위 z/2bit의 특정 영역 A의 사용 상태에 따라, 확보하는 비트 필드 C를 선택하여 z/2로 라운딩한다. 라운딩 처리 결과, 버려진 비특정 영역 B의 하위(16-n)bit의 시프트 정보 SHIFT는, 메모리 영역(21-1)에 격납된다. 라운딩된 각 16bit의 데이터 D10-1∼D10-K는, 승산기(30)로 승산 된다. 자릿수 조정부(40)에서는, 메모리 영역(21-1∼21-k)에 각각 격납된 시프트 정보 SHIFT를 기초로, 승산 결과 D30을 왼쪽으로 시프트하여 자릿수를 조정한다.
연상 장치, 입력 데이터, 라운딩 처리부, 승산 결과
Description
도 1은 본 발명의 실시예 1을 나타내는 연산 장치의 설명도이다.
도 2는 종래의 MP3파일을 디코드하는 처리의 플로우를 나타내는 도면이다.
도 3은 종래의 특허문헌 1에 기재된 라운딩 연산 방법을 나타내는 도면이다.
도 4는 도 1(2)의 (a), (b)의 경우의 라운딩 연산 방법을 나타내는 설명도이다.
도 5는 도 1의 라운딩 연산 방법을 포함하는 승산처리를 나타내는 플로챠트이다.
도 6은 본 발명의 실시예와 종래의 연산 정밀도를 비교한 도면이다.
도 7은 본 발명의 실시예 2에 있어서의 연산 장치의 처리 내용을 나타내는 도면이다.
도 8은 도 7의 라운딩 연산 방법을 포함하는 승산처리를 나타내는 플로챠트이다.
도 9는 본 발명의 실시예 3에 있어서의 연산 장치의 처리 내용을 나타내는 도면이다.
도 10은 도 9의 라운딩 연산 방법을 포함하는 승산처리를 나타내는 플로챠트이다.
[도면의 주요부분에 대한 부호의 설명]
10,10-1,10-2 : 라운딩 처리부 20,20-1 : 메모리
21-1∼21-K : 메모리 영역 30 : 승산기
40 : 자릿수 조정부
본 발명은, 예를 들면 고정소수점 연산에 있어서 저정밀도의 승산기를 사용하여 연산 결과의 정밀도를 향상시킴과 동시에 연산을 고속화하기 위한 라운딩 연산 방법 및 이 연산 장치에 관한 것이다.
종래, 예를 들면 음성압축 기술인 MP3(MPEG-1 Audio Layer 3)를 디코드(해독)하는 디코더에서는, 고속승산처리를 필요로 한다.
도 2는, 종래의 MP3파일을 디코드하는 처리의 플로우(흐름)를 나타내는 도면이다. MP3의 디코드에 있어서는, 도시하지 않은 디코더는, 17비트(이하 「bit」라고 한다.)의 MP3파일 1로부터 읽어들인 데이터를 기초로(스텝S1), 물리량으로서 의미가 있는 행렬 데이터를 생성하는 역 양자화 처리를 행한다(스텝S2). 디코더는, 역 양자화하여 얻어진 17bit의 각 행렬의 요소를, 도시하지 않은 고속의 16bit의 승산기에 입력하기 위해(스텝S3), 16bit데이터 2로 라운딩할(즉, 0은 버리고 1을 올림)필요가 있다(스텝S4). 그렇게 하기 위해서는, MP3파일 1의 최상위bit(이하 「MSB」라고 한다.)또는 최하위 bit(이하 「LSB」라고 한다.)를 버려야 한다. 라운딩된 데이터는, 승산기에서 연산되어(스텝S5), 디코더로부터 출력된다(스텝S6).
그러나, 먼저 설명한 데이터를 16bit로 라운딩하는 처리(스텝S4)에 있어서, LSB를 버리면 데이터 정밀도가 악화된다. 이에 대하여 MSB를 버리면 데이터가 MSB까지 풀로 사용할 경우, 데이터가 의도하지 않은 수치로 라운딩되어, 그 결과, 디코드한 소리가 왜곡될 우려가 있다.
이러한 라운딩의 문제를 해결하기 위한 방법이, 종래의 특허문헌 1에서 제안되고 있다.
[특허문헌 1] 미국 특허 제6,360,204B1
도 3은, 종래의 특허문헌 1에 기재된 라운딩 연산 방법을 나타내는 도면이다.
이 라운딩 연산 방법에서는, 아래와 같이 라운딩 처리를 연구함으로써, 오디오 디코더의 정밀도를 향상시키고 있다.
승수 3 및 피승수 4가 각각 sbit의 시그널 프로세서(Digital signal processor, 이하 「DSP」라고 한다.)에 의한 오디오 데이터를 사용한 승산 결과 5는, 최대 2s bit가 되므로, 이것을 다음과 같은 순서로 sbit로 라운딩한다.
우선, 승산 결과 5의 상위 sbit 또는 하위 sbit의 어느 것을 확보할지를 선 택한다. 일반적으로, 상위 bit의 라운딩 처리에서는 라운딩 정밀도가 낮고, 하위 bit의 라운딩 처리에서는 라운딩 정밀도가 높다. 이들의 선택 방법은 임의이다. 다음에 상위 sbit를 확보하는 경우에는, 데이터의 포화의 유무(즉, MSB까지 사용하고 있는 지 여부)를 확인하여(스텝S10), 포화되지 않았으면 라운딩 처리를 행하고(스텝S11), 포화되었으면 라운딩하지 않는다.
종래의 라운딩 연산 방법에 의해, sbit의 DSP에 실장한 오디오 디코더의 정밀도를 향상시키는 것이 가능하게 되지만, 도 3에 나타나 있는 바와 같이 선택가능한 정밀도가 상위 bit를 확보하는 경우와 하위 bit를 확보하는 경우, 2가지로 한정되는 문제가 있으며, 어플리케이션(응용)도 오디오 디코더로 한정되어 있다.
요컨대, 종래의 라운딩 연산 방법 혹은 연산 장치에서는, 예를 들면 범용의 마이크로세서(이하 「MCU」라고 한다.)에 있어서, bit수가 적은 저정밀도의 승산기를 사용하여 승산을 고속화함과 동시에, 연산 데이터의 정밀도를 유연하게 선택하여 확보하는 것이 곤란하고, 또한, 대상 어플리케이션을 오디오 디코더로 한정하지 않고 적용하는 것이 곤란했다.
청구항 1에 따른 발명의 라운딩 연산 방법에서는, zbit(단, z≥2)로 이루어지는 입력 데이터 중 상위 nbit(단, z>n≥2)의 특정 영역이 사용되고 있는 지를 판 정하여, 상기 특정 영역이 사용되고 있지 있으면, 상기 입력 데이터에 있어서의 상기 상위 nbit와 하위(z/2-n)bit를 버려서 z/2bit값으로 라운딩하고, 상기 특정 영역이 사용되고 있으면, 상기 입력 데이터에 있어서의 하위 z/2bit를 버려 z/2bit로 라운딩한다.
이 청구항 1의 라운딩 연산 방법을 사용한 청구항 4에 따른 발명의 연산 장치에서는, 라운딩 처리 수단과, 기억 수단과, z/2bit의 승산기와, 자릿수 조정수단을 가지고 있다.
상기 라운딩 처리 수단은, 각각 zbit(단, z≥2)로 이루어지는 승수 및 피승수가 입력되어, 상기 승수 및 상기 피승수 중 각 상위 nbit(단, z>n≥2)의 특정 영역이 각각 사용되고 있는 지를 판정하여, 상기 특정 영역이 사용되고 있지 않으면, 상기 승수 및 상기 피승수에 있어서의 상기 상위 nbit와 하위(z/2-n)bit를 버려 z/2bit값으로 각각 라운딩하고, 상기 특정 영역이 사용되고 있으면, 상기 승수 및 상기 피승수에 있어서의 하위 z/2bit를 버려 z/2bit로 각각 라운딩한다. 상기 기억 수단은, 상기 버려진 각 bit수의 정보를 각각 기억한다. 상기 승산기는, 상기 라운딩 처리 수단에 의해 라운딩된 상기 승수와 상기 피승수를 승산하여 승산 결과를 출력한다. 또한 상기 자릿수 조정수단은, 상기 기억 수단에 기억된 상기 bit수의 정보를 기초로 상기 승산 결과를 시프트하여 자릿수를 조정한다.
이와 같이, 청구항 1, 4의 라운딩 연산 방법 혹은 연산 장치에서는, 라운딩 처리에 있어서, 확보하는 비트 필드(복수bit)를 상위 비트 필드 혹은 하위 비트 필드와 조건에 의해 선택하고, 또한 어플리케이션에 의해 정밀도를 조정 가능하게 함 으로써, 고속의 저정밀도 승산기를 사용하여 연산 처리를 고속화하고, 또한, 연산의 출력 정밀도를 확보하고 있다.
청구항 2에 따른 발명의 라운딩 연산 방법에서는, zbit(단, z≥2)로 이루어지는 입력 데이터 중 상위 z/2bit의 특정 영역이 몇 비트 사용되고 있는 지를 판정하여, 상기 특정 영역이 xbit(단, 0≤x≤z/2)사용되고 있으면, 상기 입력 데이터에 있어서의 상위(z/2-x)bit와 하위 xbit를 버려서 z/2bit로 라운딩한다.
이 청구항 2의 라운딩 연산 방법을 사용한 청구항 5에 따른 발명의 연산 장치에서는, 라운딩 처리 수단과, 기억 수단과, z/2bit의 승산기와, 자릿수 조정수단을 가지고 있다.
상기 라운딩 처리 수단, 각각 zbit(단, z≥2)로 이루어지는 승수 및 피승수가 입력되어, 상기 승수 및 상기 피승수 중 각 상위 z/2bit의 특정 영역이 몇 bit사용되고 있는 지를 판정하여, 상기 특정 영역이 xbit(단, 0≤x≤z/2)사용되고 있으면, 상기 승수 및 상기 피승수에 있어서의 상위(z/2-x)bit와 하위 xbit를 버려 z/2bit로 각각 라운딩한다. 상기 기억 수단은, 상기 버려진 각 bit수의 정보를 각각 기억한다. 상기 승산기는, 상기 라운딩 처리 수단에 의해 라운딩된 상기 승수와 상기 피승수를 승산하여 승산 결과를 출력한다. 또한 상기 자릿수 조정수단은, 상기 기억 수단에 기억된 상기 비트수의 정보를 기초로 상기 승산 결과를 시프트하여 자릿수를 조정한다.
이와 같이, 청구항 2, 5의 라운딩 연산 방법 혹은 연산 장치에서는, 라운딩처리에 있어서, 확보하는 하위 비트 필드(복수bit)의 범위를 조건에 의해 동적으로 변화시킴으로써, 고속의 저정밀도 승산기를 사용하여 연산 처리를 고속화하고, 또한, 연산의 출력 정밀도를 확보하고 있다.
청구항 3에 따른 발명의 라운딩 연산 방법에서는, 각각 zbit(단, z≥2)로 이루어지는 복수의 입력 데이터에 있어서, 상기 각 입력 데이터 중 상위 z/2bit의 특정 영역이 몇비트 사용되고 있는 지를 검출하여, 사용되고 있는 bit수의 최대값 x (단, 0≤x≤z/2)을 구하고, 상기 각 입력 데이터에 있어서의 상위(z/2-x)bit와 하위 xbit를 버려 z/2bit로 각각 라운딩한다.
이 청구항 3의 라운딩 연산 방법을 사용한 청구항 6에 따른 발명의 연산 장치에서는, 라운딩 처리 수단과, 기억 수단과, z/2bit의 승산기와, 자릿수 조정수단을 가지고 있다.
상기 라운딩 처리 수단은, 각각 zbit(단, z≥2)로 이루어지는 복수의 승수 및 피승수가 입력되며, 상기 복수의 승수 및 피승수 중 각 상위 z/2bit의 특정 영역이 몇bit사용되고 있는 지를 검출하여, 사용되고 있는 bit수의 최대값x (단, 0≤x≤z/2)을 구하고, 상기 승수 및 상기 피승수에 있어서의 상위(z/2-x)bit와 하위 xbit를 버려 z/2bit로 각각 라운딩한다. 상기 기억 수단은, 상기 버려진 bit수의 정보를 기억한다. 상기 승산기는, 상기 라운딩 처리 수단에 의해 라운딩된 상기 승수와 상기 피승수를 승산하여 승산 결과를 출력한다. 또한 상기 자릿수 조정수단은, 상기 기억 수단에 기억된 상기 bit수의 정보를 기초로 상기 승산 결과를 시프트하여 자릿수를 조정한다.
이와 같이, 청구항 3, 6의 라운딩 연산 방법 혹은 연산 장치에서는, 라운딩 처리에 있어서, 라운딩하는 bit수를 계산 단위로 유지함으로써, 연산의 출력 정밀도를 확보하여 기억 용량을 삭감하고 있다.
고정소수점 연산에 있어서의 라운딩 연산 방법에서는, zbit(단, z≥2)로 이루어지는 입력 데이터 중 상위 nbit(단, z>n≥2)의 특정 영역이 사용되고 있는 지를 판정하여, 상기 특정 영역이 사용되고 있지 않으면, 상기 입력 데이터에 있어서의 상기 상위 nbit와 하위(z/2-n)bit를 버려 z/2bit값으로 라운딩하고, 상기 특정 영역이 사용되고 있으면, 상기 입력 데이터에 있어서의 하위 z/2bit를 버려 z/2bit로 라운딩한다.
[실시예 1]
(실시예 1의 구성)
도 1(1), (2)는, 본 발명의 실시예 1을 나타내는 연산 장치의 설명도이며, 동 도면(1)은 개략의 구성도 및 동 도면(2)는 처리 내용을 나타내는 도면이다.
이 연산 장치는, 예를 들면MP3의 디코드의 어플리케이션에 사용되는 고정소수점 연산의 승산을 행하는 장치이며, 복수(K)의 zbit(예를 들면 32bit)로 이루어지는 입력 데이터IN1∼INK의 집합을 입력하는 라운딩 처리 수단(예를 들면 라운딩 처리부)(10)을 가지고 있다. 라운딩 처리부(10)는, 각 32bit의 입력 데이터IN1∼INK중 상위 nbit(고정 값)의 특정 영역 A의 사용 상태에 따라, 확보하는 비트 필드 C를 선택하여 z/2(예를 들면 16bit)로 라운딩하는 기능을 가지고 있다.
즉, 라운딩 처리부(10)는, 각 입력 데이터IN1∼INK에 대해, 상위 nbit 의 특정 영역 A가 사용되고 있는 지를 판정하여, 특정 영역 A가 사용되고 있지 않으면(도 1(2)의 (a)의 경우), 이 상위 nbit의 특정 영역 A와, 나머지 (32-n)bit의 비특정 영역 B중 하위(z/2-n=16-n)bit를 버려, 확보하는 비트 필드 C를 선택하여 16bit값으로 라운딩하고, 특정 영역 A가 사용되고 있으면 (도 1(2)의 (b)의 경우), 비특정 영역 B중 16bit를 버려, 확보하는 비트 필드 C를 선택하여 16bit값으로 라운딩하는 기능을 가지고 있다.
이러한 라운딩 처리부(10)에는, 기억 수단(예를 들면 메모리)(20) 및 z/2bit(예를 들면 18bit)의 승산기(30)가 접속되고, 또한 그 메모리(20) 및 승산기(30)에, 자릿수 조정수단(예를 들면 자릿수 조정부)(40)이 접속되어 있다.
메모리(20)는, 라운딩할 때 잘라 버린 각 bit수의 정보(즉, bit폭의 정보)를 시프트 정보 SHIFT로서 보존하기 위한 복수(K)의 메모리 영역(21-1∼21-K)을 가지고 있다. 18bit의 승산기(30)는, 라운딩된 복수의 16bit의 데이터 D10-1∼D10-K 중에서, 승수가 되는 16bit의 데이터와 피승수가 되는 16bit의 데이터를 각각 승산 하여, 각 32bit의 승산 결과 D30을 자릿수 조정부(40)에 출력하는 회로이다. 자릿수 조정부(40)는, 각 메모리 영역(21-1∼21-K)에 보존된 각 시프트 정보 SHIFT를 기초로, 각 승산 결과 D30을 각각 시프트하여 자릿수를 조정하는 것이다.
라운딩 처리부(10) 및 자릿수 조정부(40)는, 산술논리 유닛 (이하 「ALU」라고 한다.)혹은 시프터 등으로 구성되어 있다.
(실시예 1의 라운딩 연산 방법을 포함하는 승산처리)
도 4는, 도 1(2)의 (a), (b)의 경우의 라운딩 연산 방법을 나타내는 설명도 이다. 도 5는, 도 1의 라운딩 연산 방법을 포함하는 승산처리를 나타내는 플로챠트이다.
32bit의 입력 데이터IN1∼INK의 집합에 대한 승산처리는, 도 5의 플로챠트에 따라 아래와 같이 실행된다.
승산처리가 개시되고(스텝S20), 32bit의 입력 데이터IN1∼INK의 집합이 라운딩 처리부(10)에 입력되면(스텝S21), 이 라운딩 처리부(10)에서는, 어느 입력 데이터(예를 들면IN1,IN2)가 상위 nbit(예를 들면 3bit)의 특정 영역 A를 사용하고 있는 지를 판정하여(스텝S22), 이 판정 결과에 의거하여 라운딩 처리를 행한다(스텝S23-1,S23-2).
예를 들면 도 4의 (a)의 경우와 같이 , 입력 데이터IN1이 상위 nbit(=3bit)의 특정 영역 A를 사용하고 있지 않으면 (“000”), 이 상위 nbit(=3bit)와 비특정 영역 B의 하위(16-n)bit(=13bit)를 버려 (즉, MSB로부터 “0”을 삽입하여 (16-n)=13bit만 오른쪽으로 시프트하여), 확보하는 비트 필드 C를 선택하여 16bit값으로 라운딩한다(스텝S23-1).
이에 대하여 도 4의 (b)의 경우와 같이, 입력 데이터IN2가 상위 nbit(=3bit)의 특정 영역 A를 사용하고 있으면 (“101”), 비특정 영역 B의 하위 16bit를 버려(즉, MSB으로부터 “0”을 삽입하여 16bit만 오른쪽으로 시프트하여), 확보하는 비트 필드 C를 선택하여 16bit값으로 라운딩한다(스텝S23-2).
도 4의 (a)의 라운딩 처리 결과, 버려진 비특정 영역 B의 하위(16-n)=13bit의 시프트 정보 SHIFT를 메모리 영역 21-1에 격납한다(스텝S24-1). 또한, 도 4의 (b)의 라운딩 처리 결과, 버려진 비특정 영역 B의 하위 16bit의 시프트 정보 SHIFT를 메모리 영역 21-2에 격납한다(스텝S24-2).
다른 입력 데이터IN3∼INK에 대해서도, 마찬가지로 라운딩 처리한다. 메모리 영역(21-1∼21-K)은, 입력 데이터IN1∼INK의 개수만큼 준비되어 있으므로, 각 입력 데이터IN1∼INK에 대응하는 시프트 정보 SHIFT는, 각 메모리 영역 20-1∼20-K에 개별적으로 격납된다.
라운딩된 각 16bit의 데이터 D10-1∼D10-K는, 승산기(30)로 승산 되어(스텝S25), 32bit의 승산 결과 D30가 자릿수 조정부(40)에 보내진다. 자릿수 조정부(40)에서는, 메모리 영역(21-1∼21-k)에 각각 격납된 시프트 정보 SHIFT를 기초로, 승산 결과 D30을 왼쪽으로 시프트하여 자릿수를 조정하고(스텝S26), 출력 데이터OUT를 출력하여 처리를 종료한다(스텝S27).
(실시예 1의 효과)
본 실시예 1에 의하면, 다음 (1)∼ (4)와 같은 효과가 있다.
(1)라운딩 처리를 연구하고 있으므로, 연산 결과의 정밀도를 확보하는 것이 가능하다.
(2) 16bit의 승산기(30)를 사용할 수 있기 때문에, 예를 들면 16bit적화연산을 고속으로 실행할 수 있는 프로세서에서는, 고속화하는 것이 가능하게 된다.
(3)확보하는 비트 필드 C의 bit수(nbit)를 조정함으로써, 어플리케이션에 맞는 정밀도를 확보하는 것이 가능하다.
(4)도 6(1), (2)는, 본 발명의 실시예와 종래의 연산 정밀도를 비교한 도면 으로, 동 도면(1)은 비교한 시뮬레이션 결과를 나타내는 도면 및 동 도면(2)는 동 도면(1)의 연산 정밀도를 구하는 방법을 나타내는 도면이다.
도 6(2)에 나타나 있는 바와 같이 연산 정밀도(즉, 라운딩의 오차)를 구할 경우, 여러개(예를 들면 128개)의 입력 데이터IN1∼INK를 연산 장치에 입력하고, 연산 결과의 참 값 50과 라운딩한 값 51과의 오차 52를 구하여, 이 오차 52의 평균값을 구하면 된다. 오차 52의 평균값은, 하기의 RMS(실효가VRMS)로 나타낼 수 있다.
[수 1]
도 6(1)의 시뮬레이션 결과는, 상위 16bit를 확보했을 경우(종래의 곡선 53)의 정밀도(RMS종래의 직선 54)와 본 발명의 실시예 1을 사용했을 경우(실시예 1의 곡선 55)의 정밀도(RMS실시예의 직선 56)를 비교한 것이다. 예로서, 128샘플의 32bit입력값을 각각 16bit값으로 라운딩하여, 32bit입력값과의 오차를 나타내고 있다. 이 시뮬레이션 결과에 의하면, RMS종래의 직선 54와 RMS실시예의 직선 56으로부터, 종래의 연산 정밀도보다도 본 실시예 1의 연산 정밀도 쪽이 오차가 작고 정밀도가 높은 것을 알 수 있다.
[실시예 2]
(실시예 2의 구성)
도 7은, 본 발명의 실시예 2에 있어서의 연산 장치의 처리 내용을 나타내는 도면으로, 실시예 1을 나타내는 도면 1(2)안의 요소와 공통 요소에는 공통 부호가 붙여지고 있다.
본 실시예 2의 연산 장치는, 실시예 1과는 처리 내용이 다른 라운딩 처리 수단(예를 들면 라운딩 처리부)(10-1)과, 실시예 1과 같은 기억 수단(예를 들면 메모리)(20), z/2bit(예를 들면 18bit)의 승산기(30) 및 자릿수 조정수단(예를 들면 자릿수 조정부)(40)로 구성되어 있다.
라운딩 처리부(10-1)는, 각 32bit의 입력 데이터IN1∼INK중 상위 z/2bit의 특정 영역 A의 사용 상태에 따라, 확보하는 비트 필드 C를 데이터 개별적으로 동적으로 변화시켜서 z/2(예를 들면 16bit)로 라운딩하는 기능을 가지고 있다. 다시 말해, 이 라운딩 처리부(10-1)는, 각 입력 데이터IN1∼INK에 대해서, 상위 nbit의 특정 영역 A가 몇 bit사용되고 있는 지를 판정하여, xbit(0≤x≤z/2)사용되고 있으면, 특정 영역 A의 상위(z/2-x)bit와, 비특정 영역 B의 하위 xbit를 버려, 확보하는 비트 필드 C를 선택하여 16bit값으로 라운딩하는 기능을 가지고 있다.
실시예 1과 마찬가지로, 라운딩 처리시에 잘라 버린 비트 폭의 정보는 시프트 정보 SHIFT로서, 메모리(20)안에 준비된 데이터 개수분의 메모리 영역(21-1∼21-K)에 보존되고, 승산기(30)로 승산된 승산 결과의 자릿수를, 자릿수 조정부(40)로 시프트하여 조정하기 위해 사용되는 구성으로 되어 있다.
(실시예 2의 라운딩 연산 방법을 포함하는 승산처리)
도 8은, 도 7의 라운딩 연산 방법을 포함하는 승산처리를 나타내는 플로챠트이며, 실시예 1을 나타내는 도 5안의 요소와 공통 요소에는 공통 부호가 붙여지고 있다.
32bit의 입력 데이터IN1∼INK의 집합에 대한 승산처리는, 도 8의 플로챠트에 따라서 아래와 같이 실행된다.
승산처리가 개시되어(스텝S20), 32bit의 입력 데이터IN1∼INK의 집합이 라운딩 처리부(10-1)에 입력되면(스텝S21), 이 라운딩 처리부(10-1)에서는, 어느 입력 데이터(예를 들면IN1,IN2)가 상위 z/2bit(예를 들면 16bit)의 특정 영역 A를 몇bit(xbit)사용하고 있는 지를 판정한다(스텝S32). 입력 데이터(예를 들면IN1,IN2)가 특정 영역 A를 xbit(0≤x≤16)사용하고 있다고 하면, 특정 영역 A의 상위(16-x)bit와, 비특정 영역 B의 하위 xbit를 버려, 확보하는 비트 필드 C를 선택하여 16bit값으로 라운딩한다(스텝S33).
예를 들면 입력 데이터IN1이 특정 영역 A안의 x(=3)bit를 사용하고 있을 경우, 이 특정 영역 A의 상위(16-x=13)bit와, 비특정 영역 B의 하위 x (= 3)bit를 버려 16bit값으로 라운딩한다. 또한, 입력 데이터IN2가 특정 영역A안의 x(=5)bit를 사용하고 있을 경우, 이 특정 영역 A의 상위(16-x=11)bit와, 비특정 영역 B의 하위 x (= 5)bit를 버려 16bit값으로 라운딩한다.
라운딩 처리 결과, 버려진 비특정 영역 B의 하위 xbit의 시프트 정보 SHIFT를 메모리 영역 21-1,21-2에 격납한다(스텝S34). 다른 입력 데이터IN3∼INK에 대해서도, 마찬가지로 라운딩 처리한다. 실시예 1과 마찬가지로, 메모리 영역(21-1∼21-K)은, 입력 데이터IN1∼INK개수만큼 준비하고 있으므로, 각 입력 데이터IN1∼INK에 대응하는 시프트 정보 SHIFT는, 각 메모리 영역(21-1∼21-K)에 개별적으로 격납된다.
라운딩된 각 16bit의 데이터 D10-1∼D10-K는, 실시예 1과 마찬가지로, 승산기(30)로 승산되어(스텝S25), 32bit의 승산 결과 D30이 자릿수 조정부(40)에 보내진다. 자릿수 조정부(40)에서는, 메모리 영역(20-1∼20-k)에 각각 격납된 시프트 정보 SHIFT를 기초로, 승산 결과 D30을 왼쪽으로 시프트하여 자릿수를 조정하고(스텝S26), 처리를 종료한다(스텝S27).
(실시예 2의 효과)
본 실시예 2에 의하면, 실시예 1의 효과(1), (2)와 동일한 효과가 있으며, 또한 다음 (4)와 같은 효과가 있다.
(4)확보하는 bit수를 동적으로 변화시킴으로써, bit수가 허용할 수 있는 정밀도를 확보할 수 있기 때문에, 실시예 1과 비교하여 승산기(30)에 의한 연산 결과정밀도를 개선하는 것이 가능하게 된다. 이것에 관해서, 도 6과 동일한 시뮬레이션 결과에 의하면, 실시예 1보다도 정밀도를 향상할 수 있었다.
[실시예 3]
(실시예 3의 구성)
도 9는, 본 발명의 실시예 3에 있어서의 연산 장치의 처리 내용을 나타내는 도면으로, 실시예 1을 나타내는 도면 1(2)안의 요소와 공통 요소에는 공통 부호가 붙여지고 있다.
본 실시예 3의 연산 장치는, 실시예 1과는 처리 내용의 다른 라운딩 처리 수단(예를 들면 라운딩 처리부)(10-2)와, 실시예 1과는 기억 용량의 다른 기억 수단(예를 들면 메모리)(20-1)과, 실시예 1과 동일한 z/2bit(예를 들면 18bit)의 승산기(30) 및 자릿수 조정수단(예를 들면 자릿수 조정부)(40)로 구성되어 있다.
라운딩 처리부(10-2)는, 각 zbit(예를 들면 32bit)의 입력 데이터IN1∼INK의 상위 z/2bit(예를 들면16bit)의 특정 영역 A의 사용 상태에 따라, 확보하는 비트 필드 C를 동적으로 변화시켜서 z/2(예를 들면 16bit)로 라운딩하는 기능을 가지고 있다. 다시 말해, 이 라운딩 처리부(10-2)는, 복수의 입력 데이터 데이터IN1∼INK중 각 상위 nbit(예를 들면 16bit)의 특정 영역 A가 몇비트 사용되고 있는지를 검출하여, 사용되고 있는 비트수의 최대값x (단, 0≤x≤z/2)을 구하고, 입력 데이터IN1∼INK에 있어서의 상위(z/2-x)bit와 하위 xbit를 버려 z/2bit로 각각 라운딩하는 기능을 가지고 있다.
라운딩할 때 잘라 버린 비트 폭의 정보는 시프트 정보 SHIFT로서, 메모리 20-1안의 메모리 영역 21-1에 보존된다. 시프트 정보 SHIFT는, 데이터의 계산 단위(데이터 집합) 마다 유지되고, 승산기(30)로 승산된 승산 결과의 자릿수를, 자릿수 조정부(40)로 시프트하여 조정하기 위해 사용되는 구성으로 되어 있다.
(실시예 3의 라운딩 연산 방법을 포함하는 승산처리)
도 10은, 도 9의 라운딩 연산 방법을 포함하는 승산처리를 나타내는 플로챠트이며, 실시예 1을 나타내는 도 5안의 요소와 공통 요소에는 공통 부호가 붙여지 고 있다.
32bit의 입력 데이터IN1∼INK의 집합에 대한 승산처리는, 도 10의 플로챠트에 따라서 아래와 같이 실행된다.
승산처리가 개시되어(스텝S20), 32bit의 입력 데이터IN1∼INK의 집합이 라운딩 처리부(10-2)에 입력되면(스텝S21), 이 라운딩 처리부(10-2)에서는, 데이터 집합의 zbit(예를 들면 32bit)길이의 각 입력 데이터IN1∼INK가, 상위 z/2bit(예를 들면 16bit)의 특정 영역 A를 몇bit사용하고 있는지를 검출한다(스텝S42). 사용하고 있는 bit수의 최대값이 xbit(0≤x≤16)라고 하면, 각 입력 데이터IN1∼INK의 상위(16-x)bit와 하위 xbit를 버려, 확보하는 비트 필드 C를 선택하여 16bit값으로 라운딩한다(스텝S43).
예를 들면 입력 데이터IN1이 특정 영역A안의 x(=4)bit를 사용하고, 입력 데이터IN2가 5bit를 사용하고, 입력 데이터INK가 3bit를 사용하고 있을 경우, 사용하고 있는 bit수의 최대값 x가 5bit가 된다. 그래서, 각 입력 데이터IN1∼INK의 상위 (16-x=11) bit와 하위 x (= 5)bit를 버려 16bit값으로 라운딩한다.
라운딩 처리 결과, 각 입력 데이터IN1∼INK에 있어서 버려진 비특정 영역 B의 하위 x(= 5)bit의 시프트 정보 SHIFT를 메모리 영역 21-1에 격납한다(스텝S44). 버려지는 bit수(=5)는, 데이터 집합의 각 입력 데이터IN1∼INK에 있어서 공통이다. 이 때문에, 메모리 영역 21-1은 1개 준비하여, 각 데이터 공통으로 사용한다.
라운딩된 각 16bit의 데이터 D10-1∼D10-K는, 실시예 1과 마찬가지로, 승산 기(30)로 승산 되어(스텝S25), 32bit의 승산 결과 D30이 자릿수 조정부(40)에 보내진다. 자릿수 조정부(40)에서는, 메모리 영역 21-1에 격납된 시프트 정보 SHIFT를 기초로, 승산 결과 D30을 왼쪽으로 시프트하여 자릿수를 조정하고(스텝S26), 처리를 종료한다(스텝S27).
(실시예 3의 효과)
본 실시예 3에 의하면, 실시예 1의 효과(1), (2)와 동일한 효과가 있으며, 또한 다음 (5)와 같은 효과가 있다.
(5)계산 단위 마다 시프트 정보 SHIFT를 일괄하여 관리하므로, 실시예 2와 비교하여, 메모리 용량을 삭감하는 것이 가능하게 된다. 이것에 관해서, 도 6과 같은 시뮬레이션 결과에 의하면, 실시예 1과 실시예 2의 중간의 정밀도를 확보할 수 있었다.
(변형예)
본 발명은 실시예 1∼3에 한정되지 않고, 여러가지의 이용 형태나 변형이 가능하다. 이 이용 형태나 변형예로서는, 예를 들면 다음의 (I), (II)와 같은 것이 있다.
(I)연산 장치를 구성하는 라운딩 처리부(10,10-1,10-2), 승산기(30) 및 자릿수 조정부(40)의 bit수는 임의이며, 또한 이들의 연산 장치를 도시한 것 이외에 다른 구성으로 변경해도 좋다.
(II)실시예 1∼3에서는, MP3의 디코드를 예에 들었지만, 본 발명은, 승산기(30)를 사용하는 연산의 고속화 등의 목적으로 데이터를 라운딩할 필요가 있는 종류들의 어플리케이션에 있어서 정밀도를 확보하는 것을 가능하게 한다.
청구항 1, 4에 따른 발명에 의하면, 다음 (i)∼ (iii)과 같은 효과가 있다.
(i)라운딩 처리를 연구하고 있으므로, 연산 결과의 정밀도를 확보하는 것이 가능하다.
(ii)원하는(z/2bit)의 승산기를 사용할 수 있기 때문에, 예를 들면 z/2bit적화연산을 고속으로 실행할 수 있는 프로세서에서는, 고속화하는 것이 가능하게 된다.
(iii)확보하는 비트 필드의 bit수를 조정함으로써, 어플리케이션에 맞는 정밀도를 확보하는 것이 가능하다.
청구항 2, 5에 따른 발명에 의하면, 청구항 1, 4의 효과(i), (ii)와 동일한 효과가 있으며, 또한 확보하는 bit수를 동적으로 변화시킴으로써, bit수가 허용할 수 있는 정밀도를 확보할 수 있기 때문에, 청구항 1, 4와 비교하여 승산기에 의한 연산 결과 정밀도를 개선하는 것이 가능하게 된다.
청구항 3, 6에 따른 발명에 의하면, 청구항 1, 4의 효과(i), (ii)와 동일한 효과가 있으며, 또한 계산 단위마다 시프트 정보를 일괄하여 관리하므로, 청구항 2, 5에 따른 발명과 비교하여, 메모리 용량을 삭감하는 것이 가능하게 된다.
Claims (6)
- z비트(단, z≥2)로 이루어지는 입력 데이터 중 상위 n비트(단, z>n≥2)의 특정 영역이 사용되고 있는 지를 판정하여,상기 판정 결과에 있어서 상기 특정 영역이 사용되고 있지 않으면, 상기 입력 데이터에 있어서의 상기 상위 n비트와 하위(z/2-n)비트를 버려 z/2비트 값으로 라운딩하고,상기 판정 결과에 있어서 상기 특정 영역이 사용되고 있으면, 상기 입력 데이터에 있어서의 하위 z/2비트를 버려 z/2비트로 라운딩하는 것을 특징으로 하는 라운딩 연산 방법.
- z비트(단, z≥2)로 이루어지는 입력 데이터 중 상위 z/2비트의 특정 영역이 몇비트 사용되고 있는 지를 판정하여,상기 입력 데이터에 있어서 상기 특정 영역이 x비트(단, 0≤x≤z/2)사용되고 있으면, 상기 입력 데이터에 있어서의 상위(z/2-x)비트와 하위 x비트를 버려 z/2비트로 라운딩하는 것을 특징으로 하는 라운딩 연산 방법.
- 각각 z비트(단, z≥2)로 이루어지는 복수의 입력 데이터에 있어서, 상기 각 입력 데이터 중 상위 z/2비트의 특정 영역이 몇비트 사용되고 있는 지를 검출하여, 사용되고 있는 비트수의 최대값 x (단, 0≤x≤z/2)를 구하고,상기 각 입력 데이터에 있어서의 상위(z/2-x)비트와 하위 x비트를 버려 z/2비트로 각각 라운딩하는 것을 특징으로 하는 라운딩 연산 방법.
- 각각 z비트(단, z≥2)로 이루어지는 승수 및 피승수가 입력되어, 상기 승수 및 상기 피승수 중 각 상위 n비트(단, z>n≥2)의 특정 영역이 각각 사용되고 있는 지를 판정하여, 상기 특정 영역이 사용되고 있지 않으면, 상기 승수 및 상기 피승수에 있어서의 상기 상위 n비트와 하위(z/2-n)비트를 버려 z/2비트 값으로 각각 라운딩하고, 상기 특정 영역이 사용되고 있으면, 상기 승수 및 상기 피승수에 있어서의 하위 z/2비트를 버려 z/2비트로 각각 라운딩하는 라운딩 처리 수단과,상기 버려진 각 비트수의 정보를 각각 기억하는 기억 수단과,상기 라운딩 처리 수단에 의해 라운딩된 상기 승수와 상기 피승수를 승산하여 승산 결과를 출력하는 z/2비트의 승산기와,상기 기억 수단에 기억된 상기 비트수의 정보를 기초로 상기 승산 결과를 시프트하여 자릿수를 조정하는 자릿수 조정수단을 가지는 것을 특징으로 하는 연산 장치.
- 각각 z비트(단, z≥2)로 이루어지는 승수 및 피승수가 입력되어, 상기 승수 및 상기 피승수 중 각 상위 z/2비트의 특정 영역이 몇비트 사용되고 있는 지를 판정하여, 상기 특정 영역이 x비트(단, 0≤x≤z/2)사용되고 있으면, 상기 승수 및 상기 피승수에 있어서의 상위(z/2-x)비트와 하위 x비트를 버려서 z/2비트로 각각 라운딩하는 라운딩 처리 수단과,상기 버려진 각 비트수의 정보를 각각 기억하는 기억 수단과,상기 라운딩 처리 수단에 의해 라운딩된 상기 승수와 상기 피승수를 승산하여 승산 결과를 출력하는 z/2비트의 승산기와,상기 기억 수단에 기억된 상기 비트수의 정보를 기초로 상기 승산 결과를 시프트하여 자릿수를 조정하는 자릿수 조정수단을 가지는 것을 특징으로 하는 연산 장치.
- 각각 z비트(단, z≥2)로 이루어지는 복수의 승수 및 피승수가 입력되며, 상기 복수의 승수 및 피승수 중 각 상위 z/2비트의 특정 영역이 몇비트 사용되고 있는지를 검출하여, 사용되고 있는 비트수의 최대값x (단, 0≤x≤z/2)를 구하고, 상기 승수 및 상기 피승수에 있어서의 상위(z/2-x)비트와 하위 x비트를 버려 z/2비트로 각각 라운딩하는 라운딩 처리 수단과,상기 버려진 비트수의 정보를 기억하는 기억 수단과,상기 라운딩 처리 수단에 의해 라운딩된 상기 승수와 상기 피승수를 승산하 여 승산 결과를 출력하는 z/2비트의 승산기와,상기 기억 수단에 기억된 상기 비트수의 정보를 기초로 상기 승산 결과를 시프트하여 자릿수를 조정하는 자릿수 조정수단을 가지는 것을 특징으로 하는 연산 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006105931A JP4457084B2 (ja) | 2006-04-07 | 2006-04-07 | 演算装置 |
JPJP-P-2006-00105931 | 2006-04-07 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20070100637A true KR20070100637A (ko) | 2007-10-11 |
Family
ID=38576820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070026935A KR20070100637A (ko) | 2006-04-07 | 2007-03-20 | 라운딩 연산 방법 및 이 연산 장치 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7912888B2 (ko) |
JP (1) | JP4457084B2 (ko) |
KR (1) | KR20070100637A (ko) |
CN (1) | CN101051261B (ko) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5239387B2 (ja) | 2008-02-21 | 2013-07-17 | 株式会社Jvcケンウッド | データ変換装置、プログラム、及び方法 |
JP6567213B2 (ja) * | 2017-02-22 | 2019-08-28 | 三菱電機株式会社 | デジタル演算処理回路 |
CN109194307B (zh) * | 2018-08-01 | 2022-05-27 | 南京中感微电子有限公司 | 数据处理方法及系统 |
JP6795560B2 (ja) * | 2018-08-22 | 2020-12-02 | ファナック株式会社 | 制御装置および軸送り制御方法 |
JP6795559B2 (ja) * | 2018-08-22 | 2020-12-02 | ファナック株式会社 | 制御装置および軸送り制御方法 |
CN109903145B (zh) * | 2018-11-20 | 2023-07-11 | 创新先进技术有限公司 | 数据核对方法、装置、设备及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5644522A (en) * | 1993-11-30 | 1997-07-01 | Texas Instruments Incorporated | Method, apparatus and system for multiply rounding using redundant coded multiply result |
US6233672B1 (en) * | 1997-03-06 | 2001-05-15 | Advanced Micro Devices, Inc. | Piping rounding mode bits with floating point instructions to eliminate serialization |
US6223198B1 (en) * | 1998-08-14 | 2001-04-24 | Advanced Micro Devices, Inc. | Method and apparatus for multi-function arithmetic |
US6360204B1 (en) | 1998-04-24 | 2002-03-19 | Sarnoff Corporation | Method and apparatus for implementing rounding in decoding an audio signal |
CN1591824A (zh) * | 2003-08-26 | 2005-03-09 | 中国科学院微电子中心 | 40位带舍入功能的快速累加累减器电路实现结构 |
-
2006
- 2006-04-07 JP JP2006105931A patent/JP4457084B2/ja not_active Expired - Fee Related
-
2007
- 2007-03-15 US US11/724,207 patent/US7912888B2/en not_active Expired - Fee Related
- 2007-03-20 KR KR1020070026935A patent/KR20070100637A/ko not_active Application Discontinuation
- 2007-03-20 CN CN2007100881875A patent/CN101051261B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20070239817A1 (en) | 2007-10-11 |
CN101051261B (zh) | 2011-04-27 |
JP4457084B2 (ja) | 2010-04-28 |
JP2007280082A (ja) | 2007-10-25 |
US7912888B2 (en) | 2011-03-22 |
CN101051261A (zh) | 2007-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8271571B2 (en) | Microprocessor | |
KR20070100637A (ko) | 라운딩 연산 방법 및 이 연산 장치 | |
US10101970B2 (en) | Efficient modulo calculation | |
CN108733413B (zh) | 数据处理装置和数据处理方法 | |
US10296290B2 (en) | Digital signal processor | |
CN110109646A (zh) | 数据处理方法、装置和乘加器及存储介质 | |
US7725522B2 (en) | High-speed integer multiplier unit handling signed and unsigned operands and occupying a small area | |
US20110153995A1 (en) | Arithmetic apparatus including multiplication and accumulation, and dsp structure and filtering method using the same | |
US20120284318A1 (en) | Digital Filter Implementation for Exploiting Statistical Properties of Signal and Coefficients | |
KR20080050226A (ko) | 모듈러 곱셈 장치 및 설계 방법 | |
US8933731B2 (en) | Binary adder and multiplier circuit | |
CN116484927A (zh) | 基于线性折线拟合的Sigmoid激活函数电路 | |
EP3921942A1 (en) | Encoding special value in anchored-data element | |
US20210141601A1 (en) | Digital calculation processing circuit | |
JP4219926B2 (ja) | 電子回路中で乗算演算または除算演算を行う方法およびその装置 | |
US6725360B1 (en) | Selectively processing different size data in multiplier and ALU paths in parallel | |
Raj et al. | A paradigm of distributed arithmetic (DA) approaches for digital FIR filter | |
JP4129280B2 (ja) | バレルシフト装置 | |
US20080183789A1 (en) | Interpolation fir filter and method thereof | |
US6681236B2 (en) | Method of performing operations with a variable arithmetic | |
JP4783319B2 (ja) | ダイナミックレンジスケール回路 | |
CN118113251A (zh) | 一种基于Vedic方法的多位乘法器 | |
JPH11288365A (ja) | 巾乗算出装置 | |
KR20070018981A (ko) | 복소수 로그 alu | |
Hasanin | Design and implementation of low complexity fast Fourier transform architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |