KR20090100245A - 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조 및 방법 - Google Patents
디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조 및 방법 Download PDFInfo
- Publication number
- KR20090100245A KR20090100245A KR1020090019181A KR20090019181A KR20090100245A KR 20090100245 A KR20090100245 A KR 20090100245A KR 1020090019181 A KR1020090019181 A KR 1020090019181A KR 20090019181 A KR20090019181 A KR 20090019181A KR 20090100245 A KR20090100245 A KR 20090100245A
- Authority
- KR
- South Korea
- Prior art keywords
- square root
- value
- odd
- reference table
- operator
- 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- 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/491—Computations with decimal numbers radix 12 or 20.
- G06F7/492—Computations with decimal numbers radix 12 or 20. using a binary weighted representation within each denomination
- G06F7/493—Computations with decimal numbers radix 12 or 20. using a binary weighted representation within each denomination the representation being the natural binary coded representation, i.e. 8421-code
- G06F7/494—Adding; Subtracting
-
- 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/491—Computations with decimal numbers radix 12 or 20.
- G06F7/492—Computations with decimal numbers radix 12 or 20. using a binary weighted representation within each denomination
- G06F7/493—Computations with decimal numbers radix 12 or 20. using a binary weighted representation within each denomination the representation being the natural binary coded representation, i.e. 8421-code
- G06F7/496—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/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/723—Modular exponentiation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
Abstract
본 발명은 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조 및 방법에 관한 것으로, 3차원 그래픽 연산 등의 응용 분야에서 연산기를 효율적으로 구현하기 위한 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조 및 방법에 관한 것이다. 부호(110)와 바이어스된 지수부(120) 및 프랙션(130)으로 구성되는 부동소수점(100) 또는 정수를 포함하는 고정소수점(200)의 이진 입력 값이 선택적으로 입력되는 참조테이블(300)과 연산기(400)로 구성되되, 상기 프랙션(130) 부분을 1+a+b (1>a>>b)로 표시하여, 상기 1+a의 제곱근 값과 역제곱근 값은 참조테이블(300)로 입력되고, 상기 b 값은 연산기(400)로 입력된다. 따라서, 본 발명은 부동소수점 및 고정소수점 형태의 입력을 위한 제곱근기 및 역제곱근기의 구조는 반복법을 사용하지 않고, Taylor 전개식을 이용하여 참조테이블과 부분 선형 보간법을 사용하여 참조테이블 크기를 줄이면서도 결과값의 정밀도를 높이고, 1사이클 이내의 잠복기를 갖는 연산기를 구현할 수 있다.
3차원 그래픽, 제곱근기, 역제곱근기, 부동소수점, Taylor 전개식
Description
본 발명은 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조 및 방법에 관한 것으로, 더욱 세부적으로는 3차원 그래픽 연산 등의 응용 분야에서 연산기를 효율적으로 구현하기 위한 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조 및 방법에 관한 것이다.
모바일 환경에 적합한 부동소수점 덧셈기, 곱셈기 그리고 나눗셈기 등에 대하여 많은 효과적인 알고리즘들이 발표되었고, 이러한 알고리즘을 기반으로 설계된 연산기들이 모바일을 위한 3차원 그래픽 프로세서에 적용되고 있다.
한편, 3차원 그래픽 처리를 위한 조명처리 엔진과 셰이더 프로세서에는 초월함수 연산기가 이용되는데, 상기 초월함수 연산은 사칙연산에 비해 훨씬 많은 연산량을 요구하므로 모바일 환경에 적합한 하드웨어 구조를 설계하기가 더 어렵다.
3차원 그래픽 연산에서 조명효과는 3차원 객체를 구성하는 각 정점의 색상정보를 결정하는 것을 말하며, 상기 조명효과는 광원의 종류 및 그 수에 따라 연산량 이 증가되는 특성을 갖고 있다. 이러한 이유로 조명연산 단계는 기하 단계 전체 동작 중에서 가장 많은 연산량을 갖는다.
제곱근과 역제곱근 연산은 이러한 조명연산에서의 정점에서 광원을 향하는 단위 벡터와 Specular 연산에 사용되는 h 벡터(Half Vector)를 얻는 연산에 필요하며 셰이더의 기본 연산기로도 사용 가능하며, 일반적으로 제곱근 및 역제곱근의 연산방법은 반복법과 실함수에 의한 근사법으로 구분할 수 있으며, 상기 반복법에는 직접 계산법(Direct Methods), Newton Raphson 공식에 기반한 알고리즘, 그리고 정규화 기법(Normalization Techniques) 등이 있다.
상기 Newton Raphson 공식은 하드웨어의 복잡도 및 연산량을 증가시키는 나눗셈 연산을 필요로 하기 때문에 모바일 환경의 하드웨어 설계에는 잘 사용되지 않으며, 직접 계산법의 하나인 Non-restoring 방식이 하드웨어로 구현될 때 가장 많이 사용되고 있다.
그러나, 이러한 반복법들은 제곱근 값을 얻기 위하여 반복적인 연산을 수행하므로 하드웨어로 구현될 경우 잠복기(Latency)가 증가하는 단점을 가지고 있다. 한편, 참조테이블을 이용하여 함수값을 구하는 방식의 연산은 간단해지나 결과값의 정확성을 높이기 위해서는 참조테이블의 크기가 커지는 단점이 있다.
상술한 바와 같은 문제점을 해결하기 위하여, 본 발명에서는 반복적인 연산을 피하고 복잡한 연산을 최소화하면서 OpenGL ES 기반의 3차원 조명효과 연산에 필요한 오차범위를 만족하는 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조 및 방법을 제공하는데 목적이 있다.
목적을 달성하기 위한 구성으로는 부호와 바이어스된 지수부 및 프랙션으로 구성되는 부동소수점 또는 정수를 포함하는 고정소수점의 이진 입력 값이 선택적으로 입력되는 참조테이블과 연산기로 구성되되, 상기 프랙션 부분을 1+a+b (1>a>>b)로 표시하여, 상기 1+a의 제곱근 값과 역제곱근 값은 참조테이블로 입력되고, 상기 b 값은 연산기로 입력된다.
본 발명의 다른 구성으로서, 상기 부동소수점이 입력되는 참조테이블은 상기 1+a의 제곱근 값 또는 1+a의 역제곱근 값이 저장되는 1차짝수 및 1차홀수 참조테이블과, 상기 1+a의 역제곱근 값 또는 1+a의 3/2승의 역수 값이 저장되는 2차짝수 및 2차홀수 참조테이블로 구성되고, 상기 b 값이 입력되는 연산기는 1개의 곱셈기와 1개의 덧셈기 및 하나의 지수 연산기로 구성된다.
본 발명의 또 다른 구성으로서, 상기 정수를 포함하는 고정소수점이 입력되는 참조테이블은 정규화 과정을 거쳐 1과 2사이의 크기로 변환되어 a와 b로 입력되되, 상기 1+a의 제곱근 값 또는 1+a의 역제곱근 값이 저장되는 1차짝수 및 1차홀수 참조테이블과, 상기 1+a의 역제곱근 값 또는 1+a의 3/2승의 역수 값이 저장되는 2차짝수 및 2차홀수 참조테이블로 구성되고, 상기 b 값이 입력되는 연산기는 1개의 곱셈기와 하나의 덧셈기 및 지수 연산기로 구성된다.
목적을 달성하기 위한 방법으로는 1+a+b (1>a>>b)로 구성되는 부동소수점 또는 정수를 포함하는 고정소수점 중 어느 하나의 이진 입력 값이 참조테이블과 연산기로 선택적으로 입력되되, 상기 1+a의 제곱근 값과 역제곱근 값은 참조테이블로 입력 및 저장되어, 상기 연산기로 입력되는 b 값과 함께 보간 연산을 수행하여 1사이클 이내의 잠복기를 거쳐 결과값을 계산한다.
본 발명의 다른 방법으로서, 상기 부동소수점의 제곱근 계산은 프랙션(Fraction) 부분을 1+a+b (1>a>>b)로 표시하고, 상기 1+a의 제곱근 값을 지수부 값에 따라 1차짝수 참조테이블(Primary even LUT)과 1차홀수 참조테이블(Primary odd LUT)에 저장하며, 상기 1+a의 역제곱근 값을 2차짝수 참조테이블(Secondary even LUT)과 2차홀수 참조테이블(Secondary odd LUT)에 저장하여, 상기 연산기로 입력되는 b 값과 함께 보간 연산을 수행하여 1사이클 이내의 잠복기를 거쳐 결과값을 계산하고, 상기 각 참조테이블에 저장된 값과 a, b의 비트 수에 따라 결과의 정확도와 연산기의 크기를 조절한다.
본 발명의 또 다른 방법으로서, 상기 부동소수점의 역제곱근 계산은 프랙션(Fraction) 부분을 1+a+b (1>a>>b)로 표시하고, 상기 1+a의 역제곱근 값을 지수부 값에 따라 1차짝수 참조테이블(Primary even LUT)과 1차홀수 참조테이블(Primary odd LUT)에 저장하며, 상기 1+a의 3/2승의 역수 값을 2차짝수 참조테이 블(Secondary even LUT)과 2차홀수 참조테이블(Secondary odd LUT)에 저장하여, 상기 연산기로 입력되는 b 값과 함께 보간 연산을 수행하여 1사이클 이내의 잠복기를 거쳐 결과값을 계산하고, 상기 각 참조테이블에 저장된 값과 a, b의 비트 수에 따라 결과의 정확도와 연산기의 크기를 조절한다.
본 발명의 또 다른 방법으로서, 상기 정수를 포함하는 고정소수점의 제곱근 계산은 입력값을 정규화 과정을 거쳐 1과 2사이의 크기로 변환하여 a와 b로 입력하고, 상기 1+a의 제곱근 값을 지수부 값에 따라 1차짝수 참조테이블(Primary even LUT)과 1차홀수 참조테이블(Primary odd LUT)에 저장하며, 상기 1+a의 역제곱근 값을 2차짝수 참조테이블(Secondary even LUT)과 2차홀수 참조테이블(Secondary odd LUT)에 저장하여, 상기 연산기로 입력되는 b 값과 함께 보간 연산을 수행하여 1사이클 이내의 잠복기를 거쳐 결과값을 계산하고, 상기 각 참조테이블에 저장된 값과 a, b의 비트 수에 따라 결과의 정확도와 연산기의 크기를 조절한다.
본 발명의 또 다른 방법으로서, 상기 정수를 포함하는 고정소수점의 역제곱근 계산은 입력값을 정규화 과정을 거쳐 1과 2 사이의 크기로 변환하여 a와 b로 입력하고, 상기 1+a의 역제곱근 값을 지수부 값에 따라 1차짝수 참조테이블(Primary even LUT)과 1차홀수 참조테이블(Primary odd LUT)에 저장하며, 상기 1+a의 3/2승의 역수 값을 2차짝수 참조테이블(Secondary even LUT)과 2차홀수 참조테이블(Secondary odd LUT)에 저장하여, 상기 연산기로 입력되는 b 값과 함께 보간 연산을 수행하여 1사이클 이내의 잠복기를 거쳐 결과값을 계산하고, 상기 각 참조테이블에 저장된 값과 a, b의 비트 수에 따라 결과의 정확도와 연산기의 크기를 조절 한다.
상기한 바와 같이, 본 발명은 부동소수점 및 고정소수점 형태의 입력을 위한 제곱근기 및 역제곱근기의 구조는 반복법을 사용하지 않고, Taylor 전개식을 이용하여 참조테이블과 부분 선형 보간법을 사용하여 참조테이블 크기를 줄이면서도 결과값의 정밀도를 높이고, 1사이클 이내의 잠복기를 갖는 연산기를 구현할 수 있다.
또한, 참조테이블에 저장값의 크기를 조절하면 원하는 정밀도를 갖는 연산기를 구현할 수 있어, 3차원 그래픽 연산뿐 아니라 다른 분야에서도 부동소수점 및 고정소수점 형식의 제곱근과 역제곱근 연산이 필요한 경우에 적용 가능하다.
도 1은 IEEE-754 표준에 따른 부동소수점 형식의 이진수 표현 방식과 정수를 포함하는 고정소수점 형식의 이진수 표현 방식을 나타낸 참고도이고, 도 2는 본 발명에 따른 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조를 나타낸 개략도이고, 도 3은 본 발명에 따른 부동소수점 형식의 이진수 제곱근 및 역제곱근을 구하기 위한 연산기 블럭도이고, 도 4는 본 발명에 따른 정수를 포함하는 고정소수점 형식의 이진수 제곱근 및 역제곱근을 구하기 위한 연산기 블럭도이다.
이하, 도면을 참고로 구성요소를 설명하면 다음과 같다.
도 1은 IEEE-754 표준에 따른 부동소수점 형식의 이진수 표현 방식과 정수를 포함하는 고정소수점 형식의 이진수 표현 방식을 나타낸 참고도로서, 도 1(a)는 부동소수점 형식을 나타내며, 도 1(b)는 고정소수점 형식을 나타내고 있다.
연산기에 입력되는 상기 부동소수점 형식의 이진수 값은 가장 널리 이용되는 IEEE-754 표준에 따르면, 부호(110)인 s, 바이어스된 지수부(120)인 e, 프랙션(Fraction)(130)인 f의 세 부분으로 구성된다.
도 2는 본 발명의 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조를 나타낸 개략도로서, 상기 부호(110)와 바이어스된 지수부(120) 및 프랙션(130)으로 구성되는 부동소수점(100) 또는 정수를 포함하는 고정소수점(200)의 이진 입력 값이 선택적으로 입력되는 참조테이블(300)과 연산기(400)로 구성되되, 상기 프랙션(130) 부분을 1+a+b (1>a>>b)로 표시하여, 상기 1+a의 제곱근 값과 역제곱근 값은 참조테이블(300)로 입력되고, 상기 b 값은 연산기(400)로 입력된다.
도 3은 상기 부동소수점(100) 형식의 이진수 제곱근 및 역제곱근을 구하기 위해서 상기 도 2의 연산기 구조를 세부적으로 나타낸 블럭도로서, 상기 부동소수점(100)이 입력되는 참조테이블(300)은 상기 1+a의 제곱근 값 또는 1+a의 역제곱근 값이 저장되는 1차짝수 및 1차홀수 참조테이블(310,320)과, 상기 1+a의 역제곱근 값 또는 1+a의 3/2승의 역수 값이 저장되는 2차짝수 및 2차홀수 참조테이블(330,340)로 구성되고, 상기 b 값이 입력되는 연산기(400)는 2개의 곱셈기와 2개의 덧셈기 및 하나의 뺄셈기로 구성된다.
또한, 도 4는 상기 정수를 포함하는 고정소수점(200) 형식의 이진수 제곱근 및 역제곱근을 구하기 위해서 상기 도 2의 연산기 구조를 세부적으로 나타낸 블럭도로서, 상기 정수를 포함하는 고정소수점(200)이 입력되는 참조테이블(300)은 정규화 과정을 거쳐 1과 2사이의 크기로 변환되어 a와 b로 입력되되, 상기 1+a의 제 곱근 값 또는 1+a의 역제곱근 값이 저장되는 1차짝수 및 1차홀수 참조테이블(310,320)과, 상기 1+a의 역제곱근 값 또는 1+a의 3/2승의 역수 값이 저장되는 2차짝수 및 2차홀수 참조테이블(330,340)로 구성되고, 상기 b 값이 입력되는 연산기(400)는 2개의 곱셈기와 하나의 덧셈기로 구성된다.
상기와 같이 구성되는 본 발명의 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산방법은 1+a+b로 구성되는 부동소수점(100) 또는 정수를 포함하는 고정소수점(200) 중 어느 하나의 이진 입력 값이 참조테이블(300)과 연산기(400)로 선택적으로 입력되되, 상기 1+a의 제곱근 값과 역제곱근 값은 참조테이블(300)로 입력 및 저장되어, 상기 연산기(400)로 입력되는 b 값과 함께 보간 연산을 수행하여 1사이클 이내의 잠복기를 거쳐 결과값을 계산한다.
상기 부동소수점(100)의 제곱근 계산은 도 3에서, 프랙션(Fraction) 부분을 1+a+b (1>a>>b)로 표시하고, 상기 1+a의 제곱근 값을 지수부 값에 따라 1차짝수 참조테이블(Primary even LUT)(310)과 1차홀수 참조테이블(Primary odd LUT)(320)에 저장하며, 상기 1+a의 역제곱근 값을 2차짝수 참조테이블(Secondary even LUT)(330)과 2차홀수 참조테이블(Secondary odd LUT)(340)에 저장하여, 상기 연산기(400)로 입력되는 b 값과 함께 보간 연산을 수행하여 1사이클 이내의 잠복기를 거쳐 결과값을 계산하고, 상기 각 참조테이블(310,320,330,340)에 저장된 값과 a, b의 비트 수에 따라 결과의 정확도와 연산기(400)의 크기를 조절한다.
또한, 상기 부동소수점(100)의 역제곱근 계산은 도 3에서, 프랙션(Fraction) 부분을 1+a+b (a>>b)로 표시하고, 상기 1+a의 역제곱근 값을 지수부 값에 따라 1차 짝수 참조테이블(Primary even LUT)(310)과 1차홀수 참조테이블(Primary odd LUT)(320)에 저장하며, 상기 1+a의 3/2승의 역수 값을 2차짝수 참조테이블(Secondary even LUT)(330)과 2차홀수 참조테이블(Secondary odd LUT)(340)에 저장하여, 상기 연산기(400)로 입력되는 b 값과 함께 보간 연산을 수행하여 1사이클 이내의 잠복기를 거쳐 결과값을 계산하고, 상기 각 참조테이블(310,320,330,340)에 저장된 값과 a, b의 비트 수에 따라 결과의 정확도와 연산기(400)의 크기를 조절한다.
상기 정수를 포함하는 고정소수점(200)의 제곱근 계산은 도 4에서, 입력값을 정규화 과정을 거쳐 1과 2사이의 크기로 변환하여 a와 b로 입력하고, 상기 1+a의 제곱근 값을 지수부 값에 따라 1차짝수 참조테이블(Primary even LUT)(310)과 1차홀수 참조테이블(Primary odd LUT)(320)에 저장하며, 상기 1+a의 역제곱근 값을 2차짝수 참조테이블(Secondary even LUT)(330)과 2차홀수 참조테이블(Secondary odd LUT)(340)에 저장하여, 상기 연산기(400)로 입력되는 b 값과 함께 보간 연산을 수행하여 1사이클 이내의 잠복기를 거쳐 결과값을 계산하고, 상기 각 참조테이블(310,320,330,340)에 저장된 값과 a, b의 비트 수에 따라 결과의 정확도와 연산기(400)의 크기를 조절한다.
또한, 상기 정수를 포함하는 고정소수점(200)의 역제곱근 계산은 도 4에서, 입력값을 정규화 과정을 거쳐 1과 2 사이의 크기로 변환하여 a와 b로 입력하고, 상기 1+a의 역제곱근 값을 지수부 값에 따라 1차짝수 참조테이블(Primary even LUT)(310)과 1차홀수 참조테이블(Primary odd LUT)(320)에 저장하며, 상기 1+a의 3/2승의 역수 값을 2차짝수 참조테이블(Secondary even LUT)(330)과 2차홀수 참조테이블(Secondary odd LUT)(340)에 저장하여, 상기 연산기(400)로 입력되는 b 값과 함께 보간 연산을 수행하여 1사이클 이내의 잠복기를 거쳐 결과값을 계산하고, 상기 각 참조테이블(310,320,330,340)에 저장된 값과 a, b의 비트 수에 따라 결과의 정확도와 연산기(400)의 크기를 조절한다.
상기 참조테이블(300)에서 b와 관련된 값을 제거함으로써 참조테이블(300)의 크기를 줄이면서 원하는 오차범위를 만족시킬 수 있다. 즉, a와 b를 각각 몇 bit로 결정하느냐에 따라 정밀도와 참조테이블(300)의 크기가 결정되는데, a가 커지면 정밀도는 좋아지지만 참조테이블(300)이 커져 연산기(400)의 크기가 증가하고, b가 커지면 참조테이블(300)의 크기는 작아지지만 정밀도가 떨어지게 된다.
또한, 참조테이블(300)에 저장된 값의 bit 수에 따라 정밀도가 달라지는데, 그 크기가 클수록 정밀도가 좋아지며, 따라서 프랙션 a, b의 크기와 참조테이블(300)에 저장된 값의 bit 수에 따라 원하는 정밀도를 결정할 수 있다. 한편 e-bias 값이 홀수 일 때는 참조테이블(300)에서 얻은 값에 를 곱해야 하지만, 이러한 연산을 하는 것 보다는 도 3과 도 4에 나타난 바와 같이, 짝수와 홀수인 경우에 대해 각각 별도의 참조테이블(310,320,330,340)을 구현함으로서, 상기 를 곱하는 곱셈기를 사용했을 경우에 비해 면적과 연산속도 면에서 이득을 볼 수 있다. 최종적으로 2차 참조테이블(330,340)에서 얻은 값과 b를 곱하고, 그 결과를 1차 참조테이블(310,320)의 값과 더하여 프래션 부분의 결과값을 얻을 수 있다.
하기의 수학식 1은 부동소수점(100)의 구성을 수학식으로 표현하고 있다.
여기서, bias는 32 bit 형식의 경우 127이다.
상기 수학식 1에 제곱근과 역제곱근 연산을 적용하면 sign bit가 0일 때는 Nan(Not a number)가 되고, 0일 때는 각각 하기의 수학식 2와 수학식 3을 얻을 수 있다.
상기 수학식 2와 수학식 3에서 e-bias가 홀수가 될 경우, 2로 나누면 연산의 나머지가 발생하여 2의 지수에 소수점 이하의 수가 남게 되어 연산이 복잡해지고, 최종 결과의 오차가 커지는 결과를 가져온다.
따라서, 이를 수학식 4와 수학식 5와 같이 보정하여 연산을 수행한다.
이 경우, 지수 부분은 간단한 더하기, 빼기와 논리 쉬프트를 통하여 연산이 가능하므로 프랙션(Fraction)에 대해서만 제곱근과 역제곱근 연산을 수행하면 된다, 이 연산을 Taylor 전개식을 이용하여 수행할 수 있다.
하기의 수학식 6은 Taylor 전개식을 나타내고 있으며, 이는 미분과 나눗셈 연산의 반복으로 하드웨어 구조에 적합하지 않게 보이지만 h 값이 작아질수록 고차항들의 값이 급격히 작아진다는 성질을 이용하면 2차항 이상의 항들을 무시하고, 연산이 가능해지므로 한 번의 곱셈과 덧셈만으로 근사값을 얻을 수 있다.
주어진 부동소수점 형태의 표현 방식에서 프랙션(Fraction) 부분은 항상 1과 2사이의 값을 갖게 되므로, x+h를 1+a+b (1>a>>b)로 치환하여 b에 대하여 1차항까 지 전개하면 수학식 7과 수학식 8을 얻을 수 있으며, 전개된 연산 수식이 부분선형 근사 방식을 사용하기에 매우 적합한 형태를 보이게 된다.
여기서, 1+a와 관련된 값들은 참조테이블에 저장하고, b와 관련된 값을 연산하여 오차를 보정한다.
따라서, 본 발명은 반복적인 연산을 피하고 복잡한 연산을 최소화하면서 OpenGL ES 기반의 3차원 조명효과 연산에 필요한 오차범위를 만족하는 것으로, 실함수에 의한 근사법으로 가장 잘 알려진 방법인 Taylor 전개식을 기반으로 하며, 이를 부동소수점 형식에 맞는 가장 간략한 다항식의 형태로 전개한 수식을 사용하고, 또한 이렇게 전개된 수식은 참조테이블(LUT)과 부분선형(Piecewise Linear) 근사 방식으로 연산 가능하다.
상기 참조테이블은 IEEE-754 단정도(Single Precision) 및 모바일 환경을 위 해 축소된 24 bit 부동소수점 형식에 공통적으로 사용할 수 있으며, 참조된 값에 대한 간단한 보정 연산을 수행하여 OpenGL ES 1.x에서 요구하는 10-5의 정밀도를 만족시키면서 참조테이블의 크기를 줄일 수 있고, 본 발명의 제곱근 및 역제곱근 연산의 하드웨어 구조는 축소된 참조테이블 및 간단한 덧셈, 곱셈 등의 연산으로 구성되기 때문에 하드웨어 복잡도를 최소화할 수 있으며, 1사이클 이내의 잠복기 후에 연산 결과를 얻을 수 있다.
본 발명은 특정의 실시 예와 관련하여 도시 및 설명하였지만, 첨부된 특허청구범위에 의해 나타난 발명의 사상 및 영역으로부터 벗어나지 않는 한도 내에서 다양한 개조 및 변화가 가능하다는 것을 당업계에서 통상의 지식을 가진 자라면 누구나 쉽게 알 수 있을 것이다.
도 1은 IEEE-754 표준에 따른 부동소수점 형식의 이진수 표현 방식과 정수를 포함하는 고정소수점 형식의 이진수 표현 방식을 나타낸 참고도.
도 2는 본 발명에 따른 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조를 나타낸 개략도.
도 3은 본 발명에 따른 부동소수점 형식의 이진수 제곱근 및 역제곱근을 구하기 위한 연산기 블럭도.
도 4는 본 발명에 따른 정수를 포함하는 고정소수점 형식의 이진수 제곱근 및 역제곱근을 구하기 위한 연산기 블럭도.
<도면의 주요 부분에 대한 부호 설명>
100 : 부동소수점 110 : 부호
120 : 바이어스된 지수부 130 : 프랙션
200 : 고정소수점 300 : 참조테이블
310 : 1차짝수 참조테이블 320 : 1차홀수 참조테이블
330 : 2차짝수 참조테이블 340 : 2차홀수 참조테이블
400 : 연산기
Claims (8)
- 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조에 있어서,부호(110)와 바이어스된 지수부(120) 및 프랙션(130)으로 구성되는 부동소수점(100) 또는 정수를 포함하는 고정소수점(200)의 이진 입력 값이 선택적으로 입력되는 참조테이블(300)과 연산기(400)로 구성되되, 상기 프랙션(130) 부분을 1+a+b (1>a>>b)로 표시하여, 상기 1+a의 제곱근 값과 역제곱근 값은 참조테이블(300)로 입력되고, 상기 b 값은 연산기(400)로 입력되는 것을 특징으로 하는 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조.
- 제 1항에 있어서,상기 부동소수점(100)이 입력되는 참조테이블(300)은 상기 1+a의 제곱근 값 또는 1+a의 역제곱근 값이 저장되는 1차짝수 및 1차홀수 참조테이블(310,320)과, 상기 1+a의 역제곱근 값 또는 1+a의 3/2승의 역수 값이 저장되는 2차짝수 및 2차홀수 참조테이블(330,340)로 구성되고, 상기 b 값이 입력되는 연산기(400)는 1개의 곱셈기와 1개의 덧셈기 및 하나의 지수 연산기로 구성되는 것을 특징으로 하는 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조.
- 제 1항에 있어서,상기 정수를 포함하는 고정소수점(200)이 입력되는 참조테이블(300)은 정규화 과정을 거쳐 1과 2사이의 크기로 변환되어 a와 b로 입력되되, 상기 1+a의 제곱근 값 또는 1+a의 역제곱근 값이 저장되는 1차짝수 및 1차홀수 참조테이블(310,320)과, 상기 1+a의 역제곱근 값 또는 1+a의 3/2승의 역수 값이 저장되는 2차짝수 및 2차홀수 참조테이블(330,340)로 구성되고, 상기 b 값이 입력되는 연산기(400)는 1개의 곱셈기와 하나의 덧셈기 및 지수 연산기로 구성되는 것을 특징으로 하는 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조.
- 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산방법에 있어서,1+a+b (1>a>>b)로 구성되는 부동소수점(100) 또는 정수를 포함하는 고정소수점(200) 중 어느 하나의 이진 입력 값이 참조테이블(300)과 연산기(400)로 선택적으로 입력되되, 상기 1+a의 제곱근 값과 역제곱근 값은 참조테이블(300)로 입력 및 저장되어, 상기 연산기(400)로 입력되는 b 값과 함께 보간 연산을 수행하여 1사이클 이내의 잠복기를 거쳐 결과값을 계산하는 것을 특징으로 하는 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산방법.
- 제 4항에 있어서,상기 부동소수점(100)의 제곱근 계산은 프랙션(Fraction) 부분을 1+a+b (1>a>>b)로 표시하고, 상기 1+a의 제곱근 값을 지수부 값에 따라 1차짝수 참조테이블(Primary even LUT)(310)과 1차홀수 참조테이블(Primary odd LUT)(320)에 저장하 며, 상기 1+a의 역제곱근 값을 2차짝수 참조테이블(Secondary even LUT)(330)과 2차홀수 참조테이블(Secondary odd LUT)(340)에 저장하여, 상기 연산기(400)로 입력되는 b 값과 함께 보간 연산을 수행하여 1사이클 이내의 잠복기를 거쳐 결과값을 계산하고, 상기 각 참조테이블(310,320,330,340)에 저장된 값과 a, b의 비트 수에 따라 결과의 정확도와 연산기(400)의 크기를 조절하는 것을 특징으로 하는 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산방법.
- 제 4항에 있어서,상기 부동소수점(100)의 역제곱근 계산은 프랙션(Fraction) 부분을 1+a+b (1>a>>b)로 표시하고, 상기 1+a의 역제곱근 값을 지수부 값에 따라 1차짝수 참조테이블(Primary even LUT)(310)과 1차홀수 참조테이블(Primary odd LUT)(320)에 저장하며, 상기 1+a의 3/2승의 역수 값을 2차짝수 참조테이블(Secondary even LUT)(330)과 2차홀수 참조테이블(Secondary odd LUT)(340)에 저장하여, 상기 연산기(400)로 입력되는 b 값과 함께 보간 연산을 수행하여 1사이클 이내의 잠복기를 거쳐 결과값을 계산하고, 상기 각 참조테이블(310,320,330,340)에 저장된 값과 a, b의 비트 수에 따라 결과의 정확도와 연산기(400)의 크기를 조절하는 것을 특징으로 하는 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산방법.
- 제 4항에 있어서,상기 정수를 포함하는 고정소수점(200)의 제곱근 계산은 입력값을 정규화 과 정을 거쳐 1과 2사이의 크기로 변환하여 a와 b로 입력하고, 상기 1+a의 제곱근 값을 지수부 값에 따라 1차짝수 참조테이블(Primary even LUT)(310)과 1차홀수 참조테이블(Primary odd LUT)(320)에 저장하며, 상기 1+a의 역제곱근 값을 2차짝수 참조테이블(Secondary even LUT)(330)과 2차홀수 참조테이블(Secondary odd LUT)(340)에 저장하여, 상기 연산기(400)로 입력되는 b 값과 함께 보간 연산을 수행하여 1사이클 이내의 잠복기를 거쳐 결과값을 계산하고, 상기 각 참조테이블(310,320,330,340)에 저장된 값과 a, b의 비트 수에 따라 결과의 정확도와 연산기(400)의 크기를 조절하는 것을 특징으로 하는 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산방법.
- 제 4항에 있어서,상기 정수를 포함하는 고정소수점(200)의 역제곱근 계산은 입력값을 정규화 과정을 거쳐 1과 2 사이의 크기로 변환하여 a와 b로 입력하고, 상기 1+a의 역제곱근 값을 지수부 값에 따라 1차짝수 참조테이블(Primary even LUT)(310)과 1차홀수 참조테이블(Primary odd LUT)(320)에 저장하며, 상기 1+a의 3/2승의 역수 값을 2차짝수 참조테이블(Secondary even LUT)(330)과 2차홀수 참조테이블(Secondary odd LUT)(340)에 저장하여, 상기 연산기(400)로 입력되는 b 값과 함께 보간 연산을 수행하여 1사이클 이내의 잠복기를 거쳐 결과값을 계산하고, 상기 각 참조테이블(310,320,330,340)에 저장된 값과 a, b의 비트 수에 따라 결과의 정확도와 연산기(400)의 크기를 조절하는 것을 특징으로 하는 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080024743 | 2008-03-18 | ||
KR20080024743 | 2008-03-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090100245A true KR20090100245A (ko) | 2009-09-23 |
KR101063814B1 KR101063814B1 (ko) | 2011-09-08 |
Family
ID=41358604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090019181A KR101063814B1 (ko) | 2008-03-18 | 2009-03-06 | 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101063814B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102336535B1 (ko) * | 2021-10-05 | 2021-12-08 | (주) 가온칩스 | 테일러 급수를 이용한 제곱근 연산 방법 및 이를 이용한 장치 |
-
2009
- 2009-03-06 KR KR1020090019181A patent/KR101063814B1/ko not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102336535B1 (ko) * | 2021-10-05 | 2021-12-08 | (주) 가온칩스 | 테일러 급수를 이용한 제곱근 연산 방법 및 이를 이용한 장치 |
Also Published As
Publication number | Publication date |
---|---|
KR101063814B1 (ko) | 2011-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Leon et al. | Approximate hybrid high radix encoding for energy-efficient inexact multipliers | |
US8812575B2 (en) | Decimal floating-point square-root unit using Newton-Raphson iterations | |
US8751555B2 (en) | Rounding unit for decimal floating-point division | |
US8805917B2 (en) | Parallel redundant decimal fused-multiply-add circuit | |
US20080208945A1 (en) | Method to compute an approximation to the reciprocal of the square root of a floating point number in ieee format | |
Oberman et al. | A high-performance area-efficient multifunction interpolator | |
Joldes | Rigorous polynomial approximations and applications | |
JPWO2007096982A1 (ja) | 演算処理装置および演算処理方法 | |
De Caro et al. | High-performance special function unit for programmable 3-D graphics processors | |
WO2013109532A1 (en) | Algebraic processor | |
Sunesh et al. | Design and implementation of fast floating point multiplier unit | |
US9851947B2 (en) | Arithmetic processing method and arithmetic processor having improved fixed-point error | |
US9852540B2 (en) | Graphics lighting engine including log and anti-log units | |
KR101063814B1 (ko) | 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조 및 방법 | |
Gustafsson et al. | Approximate floating-point operations with integer units by processing in the logarithmic domain | |
Pande et al. | Design and implementation of floating point divide-add fused architecture | |
Lin et al. | A low-error and ROM-free logarithmic arithmetic unit for embedded 3D graphics applications | |
US10353671B2 (en) | Circuitry and method for performing division | |
KR100974190B1 (ko) | 부동 소수점을 이용한 복소수 곱셈방법 | |
CN114217764A (zh) | 一种基于国产异构众核平台的高精度浮点数模拟方法 | |
JP2761145B2 (ja) | 開平演算装置 | |
Chatzianastasiou et al. | An Efficient FPGA-based Axis-Aligned Box Tool for Embedded Computer Graphics | |
Liu et al. | An efficient floating-point multiplier for digital signal processors | |
JP2023161967A (ja) | 演算装置、演算方法及びプログラム | |
KR20230006397A (ko) | 온-더-플라이 변환 |
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: 20140709 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20150609 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20160627 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20170703 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |