KR20090100245A - 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조 및 방법 - Google Patents

디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조 및 방법 Download PDF

Info

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
Application number
KR1020090019181A
Other languages
English (en)
Other versions
KR101063814B1 (ko
Inventor
이찬호
Original Assignee
숭실대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 숭실대학교산학협력단 filed Critical 숭실대학교산학협력단
Publication of KR20090100245A publication Critical patent/KR20090100245A/ko
Application granted granted Critical
Publication of KR101063814B1 publication Critical patent/KR101063814B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/57Arithmetic 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/575Basic 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/491Computations with decimal numbers radix 12 or 20.
    • G06F7/492Computations with decimal numbers radix 12 or 20. using a binary weighted representation within each denomination
    • G06F7/493Computations 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/494Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/491Computations with decimal numbers radix 12 or 20.
    • G06F7/492Computations with decimal numbers radix 12 or 20. using a binary weighted representation within each denomination
    • G06F7/493Computations 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/496Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods 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/72Methods 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/723Modular 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

디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조 및 방법{Efficient Architecture of Square Root and Inverse Square Root Arithmetic Units for Implementation}
본 발명은 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조 및 방법에 관한 것으로, 더욱 세부적으로는 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)에서 얻은 값에
Figure 112009013784400-PAT00001
를 곱해야 하지만, 이러한 연산을 하는 것 보다는 도 3과 도 4에 나타난 바와 같이, 짝수와 홀수인 경우에 대해 각각 별도의 참조테이블(310,320,330,340)을 구현함으로서, 상기
Figure 112009013784400-PAT00002
를 곱하는 곱셈기를 사용했을 경우에 비해 면적과 연산속도 면에서 이득을 볼 수 있다. 최종적으로 2차 참조테이블(330,340)에서 얻은 값과 b를 곱하고, 그 결과를 1차 참조테이블(310,320)의 값과 더하여 프래션 부분의 결과값을 얻을 수 있다.
하기의 수학식 1은 부동소수점(100)의 구성을 수학식으로 표현하고 있다.
Figure 112009013784400-PAT00003
여기서, bias는 32 bit 형식의 경우 127이다.
상기 수학식 1에 제곱근과 역제곱근 연산을 적용하면 sign bit가 0일 때는 Nan(Not a number)가 되고, 0일 때는 각각 하기의 수학식 2와 수학식 3을 얻을 수 있다.
Figure 112009013784400-PAT00004
Figure 112009013784400-PAT00005
상기 수학식 2와 수학식 3에서 e-bias가 홀수가 될 경우, 2로 나누면 연산의 나머지가 발생하여 2의 지수에 소수점 이하의 수가 남게 되어 연산이 복잡해지고, 최종 결과의 오차가 커지는 결과를 가져온다.
따라서, 이를 수학식 4와 수학식 5와 같이 보정하여 연산을 수행한다.
Figure 112009013784400-PAT00006
Figure 112009013784400-PAT00007
이 경우, 지수 부분은 간단한 더하기, 빼기와 논리 쉬프트를 통하여 연산이 가능하므로 프랙션(Fraction)에 대해서만 제곱근과 역제곱근 연산을 수행하면 된다, 이 연산을 Taylor 전개식을 이용하여 수행할 수 있다.
하기의 수학식 6은 Taylor 전개식을 나타내고 있으며, 이는 미분과 나눗셈 연산의 반복으로 하드웨어 구조에 적합하지 않게 보이지만 h 값이 작아질수록 고차항들의 값이 급격히 작아진다는 성질을 이용하면 2차항 이상의 항들을 무시하고, 연산이 가능해지므로 한 번의 곱셈과 덧셈만으로 근사값을 얻을 수 있다.
Figure 112009013784400-PAT00008
주어진 부동소수점 형태의 표현 방식에서 프랙션(Fraction) 부분은 항상 1과 2사이의 값을 갖게 되므로, x+h를 1+a+b (1>a>>b)로 치환하여 b에 대하여 1차항까 지 전개하면 수학식 7과 수학식 8을 얻을 수 있으며, 전개된 연산 수식이 부분선형 근사 방식을 사용하기에 매우 적합한 형태를 보이게 된다.
Figure 112009013784400-PAT00009
Figure 112009013784400-PAT00010
여기서, 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)

  1. 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조에 있어서,
    부호(110)와 바이어스된 지수부(120) 및 프랙션(130)으로 구성되는 부동소수점(100) 또는 정수를 포함하는 고정소수점(200)의 이진 입력 값이 선택적으로 입력되는 참조테이블(300)과 연산기(400)로 구성되되, 상기 프랙션(130) 부분을 1+a+b (1>a>>b)로 표시하여, 상기 1+a의 제곱근 값과 역제곱근 값은 참조테이블(300)로 입력되고, 상기 b 값은 연산기(400)로 입력되는 것을 특징으로 하는 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조.
  2. 제 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개의 덧셈기 및 하나의 지수 연산기로 구성되는 것을 특징으로 하는 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조.
  3. 제 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개의 곱셈기와 하나의 덧셈기 및 지수 연산기로 구성되는 것을 특징으로 하는 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조.
  4. 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산방법에 있어서,
    1+a+b (1>a>>b)로 구성되는 부동소수점(100) 또는 정수를 포함하는 고정소수점(200) 중 어느 하나의 이진 입력 값이 참조테이블(300)과 연산기(400)로 선택적으로 입력되되, 상기 1+a의 제곱근 값과 역제곱근 값은 참조테이블(300)로 입력 및 저장되어, 상기 연산기(400)로 입력되는 b 값과 함께 보간 연산을 수행하여 1사이클 이내의 잠복기를 거쳐 결과값을 계산하는 것을 특징으로 하는 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산방법.
  5. 제 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)의 크기를 조절하는 것을 특징으로 하는 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산방법.
  6. 제 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)의 크기를 조절하는 것을 특징으로 하는 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산방법.
  7. 제 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)의 크기를 조절하는 것을 특징으로 하는 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산방법.
  8. 제 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)의 크기를 조절하는 것을 특징으로 하는 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산방법.
KR1020090019181A 2008-03-18 2009-03-06 디지털 회로 구현을 위한 효율적인 제곱근과 역제곱근 연산기 구조 및 방법 KR101063814B1 (ko)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102336535B1 (ko) * 2021-10-05 2021-12-08 (주) 가온칩스 테일러 급수를 이용한 제곱근 연산 방법 및 이를 이용한 장치

Cited By (1)

* Cited by examiner, † Cited by third party
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