KR102315278B1 - 데이터를 연산하는 방법 및 장치. - Google Patents

데이터를 연산하는 방법 및 장치. Download PDF

Info

Publication number
KR102315278B1
KR102315278B1 KR1020150091388A KR20150091388A KR102315278B1 KR 102315278 B1 KR102315278 B1 KR 102315278B1 KR 1020150091388 A KR1020150091388 A KR 1020150091388A KR 20150091388 A KR20150091388 A KR 20150091388A KR 102315278 B1 KR102315278 B1 KR 102315278B1
Authority
KR
South Korea
Prior art keywords
data
difference value
unit
operator
determined
Prior art date
Application number
KR1020150091388A
Other languages
English (en)
Other versions
KR20160038716A (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 삼성전자 주식회사
Priority to JP2015159616A priority Critical patent/JP2016071861A/ja
Priority to US14/869,227 priority patent/US10120650B2/en
Publication of KR20160038716A publication Critical patent/KR20160038716A/ko
Application granted granted Critical
Publication of KR102315278B1 publication Critical patent/KR102315278B1/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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Advance Control (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)

Abstract

데이터를 연산하는 방법은, 입력된 제 1 데이터와 기 저장된 제 2 데이터의 차이 값을 획득하는 단계; 상기 획득된 차이 값에 기초하여, 상기 제 1 데이터가 연산된 결과에 대응하는 제 3 데이터를 획득하는 방법을 결정하는 단계; 및 적어도 하나의 연산기를 이용하여 상기 결정된 방법에 따른 연산을 수행하는 단계;를 포함한다.

Description

데이터를 연산하는 방법 및 장치.{Method and apparatus for calculating data}
데이터를 연산하는 방법 및 장치에 관한다.
부동소수점 방식으로 표현된 데이터를 연산하는 중앙 처리 장치(CPU) 또는 그래픽 처리 장치(GPU)는 데이터에 대응하는 수를 수리함수에 대입하여 연산을 수행할 수 있다.
이때, 중앙 처리 장치 또는 그래픽 처리 장치에는 입력 가능한 모든 데이터의 연산에 필요한 정보를 포함하는 룩업 테이블을 이용하여 연산을 수행할 수 있다. 그러나, 정확한 연산 결과가 도출되기 위해서는 룩업 테이블에 저장된 정보의 수가 많아야 하기에, 방대한 저장 공간이 요구되는 문제가 있다.
또한, 중앙 처리 장치 또는 그래픽 처리 장치가 수리함수를 다항식의 형태로 근사화하여 연산을 수행할 수도 있다. 그러나, 정확한 연산 결과가 도출되기 위해서는 고차의 다항식에 대한 연산이 요구되기에, 연산시에 논리 게이트의 스위칭이 과도하게 발생되는 문제가 있다.
한편, 중앙 처리 장치 또는 그래픽 처리 장치는 동일한 명령어에 대하여 복수의 데이터를 한번에 처리할 수 있다. 이때, 처리 대상이 되는 데이터 간에는 집약성이 있을 수 있다. 다시 말해, 한번에 처리되는 데이터들이 소정의 구간에 집약되어 존재할 수 있다. 따라서, 중앙 처리 장치 또는 그래픽 처리 장치가 집약성이 있는 데이터를 순차적으로 처리(즉, 데이터를 연산)할 때, 룩업 테이블에 저장되는 정보의 양을 줄이고, 연산시에 발생하는 논리 게이트의 스위칭 횟수를 저감시킬 수 있는 방법에 대한 요구가 증대되고 있다.
데이터를 연산하는 방법 및 장치를 제공하는데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는데 있다. 해결하려는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
일 측면에 따른 데이터를 연산하는 방법은, 입력된 제 1 데이터와 기 저장된 제 2 데이터의 차이 값을 획득하는 단계; 상기 획득된 차이 값에 기초하여, 상기 제 1 데이터가 연산된 결과에 대응하는 제 3 데이터를 획득하는 방법을 결정하는 단계; 및 적어도 하나의 연산기를 이용하여 상기 결정된 방법에 따른 연산을 수행하는 단계;를 포함한다.
다른 측면에 따른 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체를 포함한다.
또 다른 측면에 따른 데이터를 연산하는 장치는, 입력된 제 1 데이터와 기 저장된 제 2 데이터의 차이 값을 획득하는 획득부; 상기 획득된 차이 값에 기초하여, 상기 제 1 데이터가 연산된 결과에 대응하는 제 3 데이터를 획득하는 방법을 결정하는 결정부; 및 상기 결정된 방법에 따른 연산을 수행하는 연산부;를 포함한다.
상술한 바에 따르면, 데이터 연산 장치는 이전에 입력된 데이터와 현재 입력된 데이터 사이의 차이 값을 계산하고, 계산된 차이 값을 이용하여 현재 입력된 데이터에 대한 연산을 수행한다. 따라서, 데이터 연산 장치에 따르면, 룩업 테이블에 저장되는 정보의 양을 줄일 수 있고, 곱셈 연산이 수행됨에 따라 발생되는 논리 게이트들의 스위칭 횟수를 감소시킬 수 있다.
도 1은 일 실시예에 따른 데이터 연산 장치의 일 예를 도시한 구성도이다.
도 2a 내지 도 2b는 일 실시예에 따른 수리함수 및 입력 데이터의 일 예를 설명하기 위한 도면들이다.
도 3은 중앙 처리 장치 또는 그래픽 처리 장치에 포함된 연산기가 룩업 테이블에 저장된 계수들을 이용하여 연산을 수행하는 일 예를 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 데이터 연산 장치가 동작하는 일 예를 설명하기 위한 흐름도이다.
도 5는 일 실시예에 따른 데이터 연산 장치의 다른 예를 도시한 구성도이다.
도 6은 일 실시예에 따른 데이터 연산 장치의 또 다른 예를 도시한 구성도이다.
도 7은 일 실시예에 따른 연산부에 포함된 단일 연산기의 일 예를 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 연산부가 복수의 연산기들을 이용하여 연산을 수행하는 일 예를 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 데이터를 연산하는 방법의 일 예를 나타내는 흐름도이다.
도 10은 일 실시예에 따른 데이터를 연산하는 방법의 다른 예를 나타내는 흐름도이다.
이하에서는 도면을 참조하여 본 발명의 실시예들을 상세히 설명한다. 본 발명의 하기 실시예는 본 발명을 구체화하기 위한 것일 뿐 본 발명의 권리 범위를 제한하거나 한정하지 않는다. 또한, 본 발명의 상세한 설명 및 실시예로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 유추할 수 있는 것은 본 발명의 권리범위에 속하는 것으로 해석된다.
도 1은 일 실시예에 따른 데이터 연산 장치의 일 예를 도시한 구성도이다.
도 1을 참조하면, 데이터 연산 장치(100)는 획득부(110), 결정부(120) 및 연산부(130)를 포함한다. 도 1에 도시된 데이터 연산 장치(100)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
또한, 도 1에 도시된 데이터 연산 장치(100)의 획득부(110), 결정부(120) 및 연산부(130)는 하나 또는 복수 개의 프로세서에 해당할 수 있다. 프로세서는 다수의 논리 게이트들의 어레이로 구현될 수도 있고, 범용적인 마이크로 프로세서와 이 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 또한, 다른 형태의 하드웨어로 구현될 수도 있음을 본 실시예가 속하는 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
획득부(110)는 입력된 제 1 데이터와 기 저장된 제 2 데이터의 차이 값을 획득한다. 여기에서, 제 1 데이터 및 제 2 데이터는 부동소수점 방식으로 표현된 수에 대응하는 데이터를 의미한다. 예를 들어, 제 1 데이터 및 제 2 데이터는 서로 인접성이 강한 데이터일 수 있고, 서로 인접성이 강하다고 함은 제 1 데이터가 연산된 결과와 제 2 데이터가 연산된 결과가 동일하거나 매우 비슷한 결과를 나타내는 것을 의미한다. 제 1 데이터와 제 2 데이터가 각각 부동소수점 방식으로 표현된 수에 대응하기에, 획득부(110)가 획득하는 제 1 데이터와 제 2 데이터의 차이 값도 소정의 수로 표현될 수 있다.
중앙 처리 장치(CPU) 또는 그래픽 처리 장치(GPU)는 입력된 데이터를 이용하여 수리함수를 연산할 수 있다. 다시 말해, 중앙 처리 장치 또는 그래픽 처리 장치는 부동소수점 방식으로 표현된 수를 피연산자(operand)로 하여 수리함수에 대입한 결과를 출력할 수 있다. 여기에서, 수리함수는 소정의 함수에 대한 역(reciprocal)함수, 역 제곱근(reciprocal square root)함수, 밑수가 2인 로그 함수, 밑이 2인 지수 함수, 삼각 함수 등을 의미할 수 있으나, 이에 한정되지 않는다. 이때, 수리함수에 대입되는 입력 데이터가 특정한 구간에 포함되는 경우라면 동일한 결과 값이 출력될 수 있다. 이하, 도 2를 참조하여 수리함수에 대하여 구체적으로 설명한다.
도 2a 내지 도 2b는 일 실시예에 따른 수리함수 및 입력 데이터의 일 예를 설명하기 위한 도면들이다.
도 2a에는 수리함수의 예로서 밑수가 2인 로그 함수(210)와 밑이 2인 지수 함수(220)가 도시되어 있다. 도 2에 도시된 함수들(210, 220)은 서로 역함수의 관계를 갖는다. 또한, 도 2b에는 중앙 처리 장치 또는 그래픽 처리 장치에 이전에 입력된 데이터를 나타내는 제 2 데이터(230)의 일 예와 현재 입력된 데이터를 나타내는 제 1 데이터(240)의 일 예가 도시되어 있다.
중앙 처리 장치 또는 그래픽 처리 장치가 입력 데이터를 수리함수에 대입한 결과인 출력 데이터는, 입력 데이터가 소정의 범위 내의 값일 경우에 동일하거나 매우 유사한 값을 나타낼 수 있다. 예를 들어, 중앙 처리 장치가 입력 데이터를 로그 함수(210)에 대입하여 출력 데이터를 생성한다고 가정하면, 로그 함수(210)의 기울기가 작은 구간에 포함된 복수의 데이터가 중앙 처리 장치에 입력된 경우, 각각의 데이터에 대응하는 출력 데이터는 서로 동일하거나 매우 유사할 수 있다.
일반적으로, 중앙 처리 장치 또는 그래픽 처리 장치에 연속적으로 입력되는 데이터는 소정의 범위에 포함될 수 있다. 예를 들어, 그래픽 처리 장치에 제 2 데이터(230)가 입력된 이후에 제 1 데이터(240)가 입력된다고 가정하면, 제 1 데이터(240)와 제 2 데이터(230)는 소정의 범위에 포함된 유사한 숫자일 수 있다.
예를 들어, 제 2 데이터(230)가 부동 소수점 방식으로 표현된 10.000001에 대응하는 8 bit의 데이터이고, 제 1 데이터(240)가 부동 소수점 방식으로 표현된 10.000010에 대응하는 8 bit의 데이터라고 가정하면, 제 2 데이터(230)와 제 1 데이터(240)는 하위 2 개의 bit들(250)만 다르고, 상위 6 개의 bit들은 동일한 값을 갖는다.
따라서, 중앙 처리 장치 또는 그래픽 처리 장치가 제 2 데이터(230)를 수리함수에 대입한 결과 값과 그래픽 처리 장치가 제 1 데이터(240)를 수리함수에 대입한 결과 값은 서로 동일하거나 매우 유사할 수 있다. 따라서, 중앙 처리 장치 또는 그래픽 처리 장치는 수리함수에 대응하는 다항식에 입력 데이터를 대입함으로써 연산을 수행할 수 있고, 이때 다항식에 포함된 계수들은 룩업 테이블(look-up table)에 미리 저장될 수 있다.
도 3은 중앙 처리 장치 또는 그래픽 처리 장치에 포함된 연산기가 룩업 테이블에 저장된 계수들을 이용하여 연산을 수행하는 일 예를 설명하기 위한 도면이다.
일반적으로, 중앙 처리 장치 또는 그래픽 처리 장치는 입력 데이터(310)를 다항식에 대입함으로써 수리함수에 대응하는 결과를 획득한다. 예를 들어, 수리함수가 밑수가 2인 로그 함수(210)라고 가정하면, 중앙 처리 장치 또는 그래픽 처리 장치는 로그 함수(210)에 대응하는 다항식에 입력 데이터(310)를 대입함으로써 연산을 수행할 수 있다. 이때, 다항식 연산에 요구되는 계수들은 룩업 테이블(320)에 저장될 수 있다.
중앙 처리 장치 또는 그래픽 처리 장치에 입력 데이터(310)가 입력되면, 룩업 테이블(320)에서 입력 데이터(310)의 연산에 이용되는 계수들이 독출된다. 연산기(330)는 입력 데이터(310)와 룩업 테이블(320)에서 독출된 계수들을 이용하여 연산을 수행하고, 연산의 결과인 출력 데이터(340)를 출력한다. 따라서, 연산기(330)가 수행하는 연산의 정확도가 높아지기 위해서는, 중앙 처리 장치 또는 그래픽 처리 장치에 입력될 수 있는 모든 입력 데이터(310)에 대응하는 계수들이 룩업 테이블(320)에 저장되어야 한다.
한편, 중앙 처리 장치 또는 그래픽 처리 장치에 연속적으로 입력되는 데이터가 서로 유사한 경우, 이전에 입력된 데이터와 현재 입력된 데이터 사이의 차이를 이용하여 현재 입력된 데이터에 대한 연산이 수행된다면, 룩업 테이블(320)에 저장되어야 하는 정보의 양을 줄일 수 있다. 본 발명의 일 실시예에 따른 데이터 연산 장치(100)는 이전에 입력된 데이터와 현재 입력된 데이터 사이의 차이 값을 계산하고, 계산된 차이 값을 이용하여 현재 입력된 데이터에 대한 연산을 수행한다. 따라서, 데이터 연산 장치(100)에 따르면 룩업 테이블에 저장되는 정보의 양을 줄일 수 있고, 곱셈 연산이 수행됨에 따라 발생되는 논리 게이트들의 스위칭 횟수를 줄일 수 있다.
다시 도 1을 참조하면, 결정부(120)는 획득된 차이 값에 기초하여 제 1 데이터가 연산된 결과에 대응하는 제 3 데이터를 획득하는 방법을 결정한다. 여기에서, 제 3 데이터는 제 1 데이터가 데이터 연산 장치(100)에 입력되었을 때, 데이터 연산 장치(100)에서 출력되는 데이터를 의미한다. 다시 말해, 결정부(120)는 제 1 데이터가 입력된 경우에 제 3 데이터를 획득할 수 있는 방법을 결정하고, 상술한 방법은 획득부(110)에 의하여 획득된 제 1 데이터와 제 2 데이터의 차이 값에 기초하여 결정된다.
예를 들어, 결정부(120)는 획득부(110)로부터 제 1 데이터와 제 2 데이터의 차이 값을 수신하고, 수신된 차이 값을 소정의 임계 값과 비교할 수 있다. 그리고, 결정부(120)는 비교 결과에 기초하여 제 3 데이터를 획득하는 방법을 결정할 수 있다.
만약, 제 1 데이터와 제 2 데이터의 차이 값이 임계 값을 초과하는 경우, 결정부(120)는 제 1 데이터를 이용하여 연산을 수행하는 방법(이하, “전체 연산”이라고 함)을 선택할 수 있다. 또한, 제 1 데이터와 제 2 데이터의 차이 값이 임계 값 이하인 경우, 결정부(120)는 제 1 데이터와 제 2 데이터의 차이 값과 제 2 데이터가 연산된 결과를 이용하여 연산을 수행하는 방법(이하, “차등 연산”이라고 함)을 선택할 수 있다.
연산부(130)는 적어도 하나의 연산기를 이용하여, 결정부(120)에 의하여 결정된 방법에 따른 연산을 수행한다. 다시 말해, 연산부(130)는 전체 연산 또는 차등 연산을 통하여 제 3 데이터를 도출한다.
이때, 차등 연산에는 제 1 데이터와 제 2 데이터의 차이 값 또는 제 1 데이터에 따라 결정된 계수가 이용될 수 있다. 여기에서, 계수는 데이터 연산 장치(100)에 포함된 룩업 테이블에서 독출될 수 있고, 룩업 테이블에는 제 1 데이터와 제 2 데이터의 차이 값 또는 제 1 데이터에 대응하여 계수가 매핑되어 있을 수 있다.
연산부(130)는 데이터 연산 장치(100)에 포함된 적어도 하나의 연산기를 이용하여 연산을 수행할 수 있다. 예를 들어, 연산부(130)는 단일 연산기를 이용하여 연산을 수행할 수도 있고, 전체 연산을 수행하는데 이용되는 제 1 연산기 또는 차등 연산을 수행하는데 이용되는 제 2 연산기를 이용하여 연산을 수행할 수도 있다. 여기에서, 연산부(130)가 단일 연산기를 이용하여 연산을 수행하는 경우, 연산부(130)는 단일 연산기의 일부만을 이용하여 연산을 수행할 수도 있다. 이때, 단일 연산기는 N 비트의 곱셈 연산 및 N/2 비트의 곱셈 연산을 수행할 수 있는 다중 정밀도(multi-precision) 연산기일 수 있으나, 이에 한정되지 않는다.
이하, 도 4를 참조하여, 결정부(120)가 연산 방법을 결정하고, 연산부(130)가 연산을 수행하는 일 예를 설명한다.
도 4는 일 실시예에 따른 데이터 연산 장치가 동작하는 일 예를 설명하기 위한 흐름도이다.
도 4에 도시된 각 단계들은 도 1에 도시된 데이터 연산 장치(100)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라 하더라도 도 1에 도시된 데이터 연산 장치(100)에 관하여 이상에서 기술된 내용은 도 4에 도시된 방법에도 적용됨을 알 수 있다.
410 단계에서, 획득부(110)는 제 1 데이터를 수신한다. 다시 말해, 제 1 데이터는 데이터 연산 장치(100)에 입력된다. 여기에서, 제 1 데이터는 데이터 연산 장치(100)에 의하여 연산의 대상이 되는 데이터를 의미하며, 그래픽 연산 장치에 포함된 쉐이더에서 처리되는 데이터일 수 있다. 예를 들어, 제 1 데이터는 부동소수점 방식으로 표현된 수에 대응하는 데이터일 수 있으나, 이에 한정되지 않는다.
420 단계에서, 제 1 데이터는 데이터 연산 장치(100)에 포함된 저장부에 저장된다. 그리고, 저장부에서 제 2 데이터가 독출된다. 여기에서, 제 2 데이터는 제 1 데이터가 입력되기 직전에 데이터 연산 장치(100)로 입력된 데이터를 의미한다. 다시 말해, 데이터 연산 장치(100)에는 제 2 데이터가 입력된 이후에 제 1 데이터가 순차적으로 입력된다.
430 단계에서, 획득부(110)는 제 1 데이터와 제 2 데이터의 차등 데이터를 획득한다. 여기에서, 차등 데이터는 제 1 데이터와 제 2 데이터 사이의 차이 값 또는 제 1 데이터와 제 2 데이터 사이의 변화량에 대응하는 데이터를 의미한다. 제 1 데이터 및 제 2 데이터는 각각 부동 소수점 방식으로 표현된 수에 대응하는 데이터일 수 있기에, 획득부(110)는 제 1 데이터와 제 2 데이터를 이용하여 차등 데이터를 획득할 수 있다.
예를 들어, 획득부(110)는 아래의 수학식 1에 따라 차등 데이터를 획득할 수 있다.
Figure 112015062252300-pat00001
수학식 1에서 adiff는 차등 데이터를 의미하고, an +1은 제 1 데이터를 의미한다. 또한, an은 제 2 데이터를 의미한다.
440 단계에서, 결정부(120)는 차등 데이터가 임계 값 이하인지 여부를 판단한다. 여기에서, 임계 값은 사용자에 의하여 미리 설정될 수도 있고, 사용자의 개입 없이 데이터 연산 장치(100)가 자동으로 설정할 수도 있다. 이때, 임계 값은 데이터의 연산 결과에 대하여 요구되는 정확도에 따라 설정될 수 있다.
만약, 차등 데이터가 임계 값을 초과한다고 판단되면 450 단계로 진행하고, 차등 데이터가 임계 값 이하라고 판단되면 460 단계로 진행한다.
450 단계에서, 연산부(130)는 전체 연산을 수행한다. 다시 말해, 결정부(120)는 제 3 데이터를 생성하는 방법으로서 제 1 데이터를 이용하여 연산을 수행하는 방법(즉, 전체 연산)을 결정하고, 연산부(130)는 전체 연산을 수행하여 제 3 데이터를 생성한다. 예를 들어, 연산부(130)는 수리함수에 제 1 데이터를 대입함으로써 제 3 데이터를 생성할 수도 있고, 수리함수에 대응하는 다항식에 제 1 데이터를 대입함으로써 제 3 데이터를 생성할 수도 있다.
460 단계에서, 연산부(130)는 차등 연산을 수행한다. 다시 말해, 결정부(120)는 제 3 데이터를 생성하는 방법으로서 차등 데이터를 이용하여 연산을 수행하는 방법(즉, 차등 연산)을 결정하고, 연산부(130)는 차등 연산을 수행하여 제 3 데이터를 생성한다.
예를 들어, 연산부(130)는 아래의 수학식 2에 따라 차등 연산을 수행할 수 있다.
Figure 112015062252300-pat00002
수학식 2에서, c*an +1은 제 3 데이터를 의미하고, an은 제 2 데이터를 의미한다. 또한, adiff는 차등 데이터를 의미한다. 또한, c는 룩업 테이블에서 독출된 계수를 의미하고, 연산부(130)는 제 1 데이터에 기초하여 룩업 테이블에서 c를 독출할 수 있다.
수학식 2에 따르면, 연산부(130)는 제 2 데이터, 차등 데이터 및 룩업 테이블로부터 독출된 계수를 이용하여 제 3 데이터를 생성하는 연산을 수행할 수 있다. 따라서, 연산부(130)가 수리함수에 대응하는 다항식 전체를 연산할 필요가 없기에, 연산부(130)가 동작할 때에 발생되는 논리 게이트의 스위칭 횟수가 저감될 수 있다.
도 5는 일 실시예에 따른 데이터 연산 장치의 다른 예를 도시한 구성도이다.
도 5를 참조하면, 데이터 연산 장치(101)는 획득부(110), 결정부(120), 연산부(130) 및 저장부(140)를 포함한다. 도 5에 도시된 데이터 연산 장치(101)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 5에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
또한, 도 5에 도시된 데이터 연산 장치(101)의 획득부(110), 결정부(120) 및 연산부(130)는 하나 또는 복수 개의 프로세서에 해당할 수 있다. 프로세서는 다수의 논리 게이트들의 어레이로 구현될 수도 있고, 범용적인 마이크로 프로세서와 이 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 또한, 다른 형태의 하드웨어로 구현될 수도 있음을 본 실시예가 속하는 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
또한, 도 5에 도시된 데이터 연산 장치(101)의 획득부(110), 결정부(120) 및 연산부(130)는 도 1에 도시된 데이터 연산 장치(101)의 획득부(110), 결정부(120) 및 연산부(130)와 동일하다. 따라서, 이하에서는 구체적인 설명을 생략한다.
저장부(140)는 차등 데이터 및 제 1 데이터를 저장한다. 또한, 저장부(140)는 제 2 데이터를 저장한다. 다시 말해, 저장부(140)는 데이터 연산 장치(101)에 입력되는 데이터를 저장할 수 있다. 예를 들어, 저장부(140)는 데이터 연산 장치(101)에 입력되는 제 1 데이터 및 제 2 데이터를 저장할 수 있고, 획득부(110)로부터 차등 데이터를 수신하여 저장할 수 있다. 그리고, 저장부(140)는 연산부(130)가 동작하는 방식(예를 들어, 전체 연산을 수행 또는 차등 연산을 수행)에 따라 연산부(130)에게 저장된 정보를 제공하고, 연산부(130)로부터 제 3 데이터를 수신하여 저장한다.
또한, 룩업 테이블은 저장부(140)에 저장될 수도 있고, 별도의 구성으로 데이터 연산 장치(100)에 포함될 수도 있다. 룩업 테이블에는 연산부(130)가 연산을 수행하는 데에 이용하는 계수들이 저장되어 있음은 도 4를 참조하여 상술한 바와 같다. 이하, 도 6을 참조하여, 데이터 연산 장치(102)에 저장부(140)와 룩업 테이블(150)이 별도의 구성으로 포함되어 있는 일 예를 설명한다.
도 6은 일 실시예에 따른 데이터 연산 장치의 또 다른 예를 도시한 구성도이다.
도 6을 참조하면, 데이터 연산 장치(102)는 획득부(110), 결정부(120), 연산부(130), 저장부(140) 및 룩업 테이블(150)을 포함한다. 도 6에 도시된 데이터 연산 장치(102)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 6에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
또한, 도 6에 도시된 데이터 연산 장치(102)의 획득부(110), 결정부(120) 및 연산부(130)는 하나 또는 복수 개의 프로세서에 해당할 수 있다. 프로세서는 다수의 논리 게이트들의 어레이로 구현될 수도 있고, 범용적인 마이크로 프로세서와 이 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 또한, 다른 형태의 하드웨어로 구현될 수도 있음을 본 실시예가 속하는 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
도 5에 도시된 데이터 연산 장치(101)와 비교하면, 도 6에 도시된 데이터 연산 장치(102)는 저장부(140)와 룩업 테이블(150)을 별도의 구성으로 포함한다.
획득부(110)는 제 1 데이터(610)를 수신한다. 다시 말해, 제 1 데이터(610)는 데이터 연산 장치(102)에 입력된다. 뿐만 아니라, 제 1 데이터(610)는 저장부(140)에 저장되고, 연산부(130)에 전송된다. 또한, 제 1 데이터(610)는 룩업 테이블(150)에 전송되어, 계수를 독출하기 위한 자료로 이용된다.
저장부(140)는 기 저장된 제 2 데이터를 획득부(110)로 전송한다. 다시 말해, 저장부(140)는 제 1 데이터가 입력되기 직전에 데이터 연산 장치(102)에 입력된 제 2 데이터를 저장한다. 그리고, 제 1 데이터가 입력되면, 저장부(140)는 기 저장된 제 2 데이터를 획득부(110)에 전송한다.
획득부(110)는 제 1 데이터(610)와 제 2 데이터의 차등 데이터를 획득한다. 예를 들어, 획득부(110)는 상술한 수학식 1에 기초하여 차등 데이터를 획득할 수 있다. 그리고, 획득부(110)는 차등 데이터를 결정부(120) 및 연산부(130)로 전송한다.
결정부(120)는 차등 데이터가 임계 값 이하인지 여부를 판단한다. 여기에서, 임계 값은 사용자에 의하여 미리 설정될 수도 있고, 사용자의 개입 없이 데이터 연산 장치(102)가 자동으로 설정할 수도 있음은 도 4를 참조하여 상술한 바와 같다.
만약, 차등 데이터가 임계 값을 초과한다고 판단되면, 결정부(120)는 연산부(130)에게 전체 연산을 수행할 것을 지시한다. 또한, 차등 데이터가 임계 값 이하라고 판단되면, 결정부(120)는 연산부(130)에게 차등 연산을 수행할 것을 지시한다.
연산부(130)는 결정부(120)의 지시에 따라 전체 연산 또는 차등 연산을 수행한다. 이때, 전체 연산은 연산부(130)가 수리함수에 대응하는 다항식에 제 1 데이터(610)를 대입함으로써 수행될 수 있음은 도 4를 참조하여 상술한 바와 같다.
한편, 룩업 테이블(150)에서는 제 1 데이터(610)에 기초하여 계수가 독출되고, 연산부(130)에 전송된다. 따라서, 연산부(130)는 제 1 데이터(610), 획득부(110)로부터 전송된 차등 데이터 및 룩업 테이블(150)로부터 전송된 계수를 이용하여 차등 연산을 수행할 수 있다. 예를 들어, 연산부(130)는 상술한 수학식 2에 기초하여 차등 연산을 수행할 수 있다. 연산부(130)가 전체 연산 또는 차등 연산을 수행함으로써 제 3 데이터(620)가 생성된다.
한편, 연산부(130)는 단일 연산기를 이용하여 전체 연산 또는 차등 연산을 수행할 수 있다. 이때, 연산부(130)는 단일 연산기의 일부를 이용하여 전체 연산 또는 차등 연산을 수행할 수 있다. 예를 들어, 단일 연산기는 N 비트의 곱셈 연산 및 N/2 비트의 곱셈 연산을 수행하는 다중 정밀도(multi-precision) 연산기를 의미할 수 있다.
또한, 연산부(130)는 복수의 연산기들을 이용하여 전체 연산 또는 차등 연산을 수행할 수도 있다. 다시 말해, 연산부(130)는 전체 연산을 수행하는데 이용되는 연산기와 차등 연산을 수행하는데 이용되는 연산기를 별도로 포함할 수도 있다.
이하, 도 7을 참조하여 연산부(130)에 포함된 단일 연산기의 일 예를 설명하고, 도 8을 참조하여 연산부(130)가 복수의 연산기들을 이용하여 전체 연산 또는 차등 연산을 수행하는 일 예를 설명한다.
도 7은 일 실시예에 따른 연산부에 포함된 단일 연산기의 일 예를 설명하기 위한 도면이다.
도 7에는 다중 정밀도 연산기에 포함된 부분적 발생기(710)의 일 예가 도시되어 있다. 다중 정밀도 연산기는 N 비트의 곱셈 연산 및 N/2 비트의 곱셈 연산을 수행할 수 있다. 여기에서, N은 2 이상의 자연수를 의미한다. 이하에서는, N 비트의 입력 데이터와 N/2 비트의 입력 데이터에 인접성이 존재하는 것으로 가정한다.
일 예로서, N 비트의 곱셈 연산이 수행되고, 연산에 이용되는 승수를 A={AN -1, AN-2, …, A0}, 피승수를 B={BN -1, BN -2, …, B0}라고 가정하면, 도 7에 도시된 부분적 발생기(710)에 입력되는 데이터(a0, a1, …, a5, b0, b1, …, b5)의 예는 아래와 같다.
a0 = {AN -1, …, AN /2}, a1 = {AN /2-1, …, A0}, a2 = {AN -1, …, A3N/4}, a3 = {A3N/4-1, …, AN /2}, a4 = {AN /2-1, …, AN /4}, a5 = {AN /4-1, …, A0}
b0 = {BN -1, …, BN /2}, b1 = {BN /2-1, …, B0}, b2 = {BN -1, …, B3N/4}, b3 = {B3N/4-1, …, BN/2}, b4 = {BN /2-1, …, BN /4}, b5 = {BN /4-1, …, B0}
다른 예로서, N/2 비트의 곱셈 연산이 수행되고, 연산에 이용되는 제 1 승수를 A={AN/2-1, AN /2-2, …, A0}, 제 1 피승수를 B={BN /2-1, BN /2-2, …, B0}, 제 2 승수를 C={CN /2-1, CN/2-2, …, C0}, 제 2 피승수를 D={DN /2-1, DN /2-2, …, D0}라고 가정하면, 도 7에 도시된 부분적 발생기(710)에 입력되는 데이터(a0, a1, …, a5, b0, b1, …, b5)의 예는 아래와 같다.
a0 = 0, a1 = 0, a2 = {AN /2-1, …, AN /4}, a3 = {AN /4-1, …, A0}, a4 = {CN /2-1, …, CN /4}, a5 = {CN /4-1, …, C0}
b0 = 0, b1 = 0, b2 = {BN /2-1, …, BN /4}, b3 = {BN /4-1, …, B0}, b4 = {DN /2-1, …, DN /4}, b5 = {DN /4-1, …, D0}
N 비트의 곱셈 연산 및 N/2 비트의 곱셈 연산이 수행되는 경우, 부분적 발생기(710)에는 멀티플렉서(multiplexer)에 의하여 상술한 예들과 같은 데이터(a0, a1, …, a5, b0, b1, …, b5)가 선택적으로 입력된다. 따라서, 단일 연산기(즉, 다중 정밀도 연산기)가 N 비트의 곱셈 연산 및 N/2 비트의 곱셈 연산을 수행할 때, 하위 비트에서의 변화된 값들만 독립적으로 누적될 수 있다. 따라서, 단일 연산기가 수행해야 하는 연산량이 줄고, 연산시에 발생되는 논리 게이트의 스위칭 횟수가 감소될 수 있다.
도 8은 일 실시예에 따른 연산부가 복수의 연산기들을 이용하여 연산을 수행하는 일 예를 설명하기 위한 도면이다.
도 8에는 연산부(800)에 전체 연산을 수행하는데 이용되는 제 1 연산기(810)와 차등 연산을 수행하는데 이용되는 제 2 연산기(820)가 별도로 포함된 일 예가 도시되어 있다. 또한, 연산부(800)에는 제 1 연산기(810) 및 제 2 연산기(820)외에 제 1 선택기(831), 제 2 선택기(832) 및 덧셈기(840)가 더 포함될 수 있다.
또한, 도 8에 도시된 제 1 연산기(810), 제 2 연산기(820), 제 1 선택기(831), 제 2 선택기(832) 및 덧셈기(840)는 하나 또는 복수 개의 프로세서에 해당할 수 있다. 프로세서는 다수의 논리 게이트들의 어레이로 구현될 수도 있고, 범용적인 마이크로 프로세서와 이 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 또한, 다른 형태의 하드웨어로 구현될 수도 있음을 본 실시예가 속하는 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
제 1 연산기(810)는 전체 연산을 수행한다. 예를 들어, 제 1 연산기(810)는 제 1 데이터를 이용하여 제 3 데이터를 생성하는데 필요한 연산을 수행할 수 있다. 다시 말해, 제 1 연산기(810)는 수리함수에 대응하는 다항식에 제 1 데이터(an+1)를 대입함으로써 제 3 데이터(c*an+1)를 생성할 수 있다. 제 2 연산기(820)는 차등 연산에 필요한 차등 데이터(c*adiff)를 생성할 수 있다.
필요에 따라, 제 1 연산기(810) 및 제 2 연산기(820)에는 룩업 테이블에서 독출된 계수(c)가 입력되어 연산에 이용될 수 있다.
제 1 선택기(831)는 저장부(140)로부터 독출된 데이터 및 제 1 연산기(810)가 생성한 제 3 데이터 중 어느 하나를 선택한다. 여기에서, 저장부(140)로부터 독출된 데이터는 이 전에 연산되어 저장되어 있는 제 2 데이터에 계수가 곱해진 데이터(c*an)가 될 수 있다. 또한, 제 2 선택기(832)는 제 2 선택기(832)에 입력되는 0 및 제 2 연산기(820)가 생성한 차등 데이터 중 어느 하나를 선택한다.
일 예로서, 결정부(120)가 전체 연산에 따라 제 3 데이터를 생성하는 것으로 결정하면, 제 1 연산기(810)가 동작하고, 제 2 연산기(820)의 동작은 차단(isolation)된다. 이때, 제 1 선택기(831)는 제 1 연산기(810)가 생성한 제 3 데이터를 선택하고, 제 2 선택기(820)는 0을 선택한다.
다른 예로서, 결정부(120)가 차등 연산에 따라 제 3 데이터를 생성하는 것으로 결정하면, 제 2 연산기(820)가 동작하고, 제 1 연산기(810)의 동작은 차단된다. 이때, 제 2 선택기(832)는 제 2 연산기(820)가 생성한 차등 데이터를 선택하고, 제 1 선택기(831)는 저장부(140)로부터 독출된 데이터를 선택한다.
덧셈기(840)는 제 1 선택기(831) 및 제 2 선택기(832)로부터 전송된 데이터의 덧셈 연산을 수행한다.
일 예로서, 결정부(120)가 전체 연산에 따라 제 3 데이터를 생성하는 것으로 결정한 경우, 덧셈기(840)는 제 1 선택기(831)로부터 전송된 제 3 데이터와 제 2 선택기(832)로부터 전송된 0을 더한다. 결과적으로, 덧셈기(840)는 제 1 연산기(810)가 연산한 제 3 데이터를 출력할 수 있다.
다른 예로서, 결정부(120)가 차등 연산에 따라 제 3 데이터를 생성하는 것으로 결정한 경우, 덧셈기(840)는 제 1 선택기(831)로부터 전송된 데이터와 제 2 선택기(832)로부터 전송된 차등 데이터를 더한다. 따라서, 덧셈기(840)는 차등 연산에 따른 제 3 데이터를 출력할 수 있다.
저장부(140)는 덧셈기(840)로부터 출력된 데이터를 저장한다. 또한, 제 1 선택기(831)에게 저장된 데이터를 출력할 수 있다.
도 9는 일 실시예에 따른 데이터를 연산하는 방법의 일 예를 나타내는 흐름도이다.
도 9는 본 실시예에 따른 데이터를 연산하는 방법을 나타낸 흐름도이다. 도 9를 참조하면, 데이터를 연산하는 방법은 도 1, 도 6 및 도 7에 도시된 데이터 연산 장치(100)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라 하더라도 도 1, 도 6 및 도 7에 도시된 데이터 연산 장치(100)에 관하여 이상에서 기술된 내용은 도 9의 데이터를 연산하는 방법에도 적용됨을 알 수 있다.
910 단계에서, 획득부(110)는 입력된 제 1 데이터와 기 저장된 제 2 데이터의 차이 값을 획득한다. 여기에서, 제 1 데이터 및 제 2 데이터는 부동소수점 방식으로 표현된 수에 대응하는 데이터를 의미한다. 데이터 연산 장치(100)에는 제 2 데이터가 입력된 이후에 제 1 데이터가 순차적으로 입력될 수 있다.
920 단계에서, 결정부(120)는 획득된 차이 값에 기초하여, 제 1 데이터가 연산된 결과에 대응하는 제 3 데이터를 획득하는 방법을 결정한다. 다시 말해, 결정부(120)는 910 단계에서 획득된 차이 값에 기초하여, 제 1 데이터 전체를 이용하여 제 3 데이터를 획득하는 제 1 방법(즉, 전체 연산) 및 상기 차이 값에 제 1 데이터에 따라 결정된 계수를 곱한 값과 제 2 데이터에 상기 계수를 곱한 값을 이용하여 제 3 데이터를 획득하는 제 2 방법(즉, 차등 연산) 중 어느 하나를 결정한다. 여기에서, 제 2 방법은 상술한 수학식 2에 따라 제 3 데이터를 획득하는 방법이 될 수 있다.
930 단계에서, 연산부(130)는 적어도 하나의 연산기를 이용하여 920 단계에서 결정된 방법에 따른 연산을 수행한다. 일 예로서, 연산부(130)는 단일 연산기를 이용하여 전체 연산 또는 차등 연산을 수행할 수 있다. 이때, 단일 연산기는 다중 정밀도 연산기를 의미할 수 있다. 다른 예로서, 연산부(130)는 복수의 연산기들을 이용하여 전체 연산 또는 차등 연산을 수행할 수도 있다.
도 10은 일 실시예에 따른 데이터를 연산하는 방법의 다른 예를 나타내는 흐름도이다.
도 10 본 실시예에 따른 데이터를 연산하는 방법을 나타낸 흐름도이다. 도 10을 참조하면, 데이터를 연산하는 방법은 도 1, 도 6 및 도 7에 도시된 데이터 연산 장치(100)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라 하더라도 도 1, 도 6 및 도 7에 도시된 데이터 연산 장치(100)에 관하여 이상에서 기술된 내용은 도 10의 데이터를 연산하는 방법에도 적용됨을 알 수 있다.
한편, 도 10의 1010 단계는 도 9의 910 단계와 동일한바, 이하에서는 구체적인 설명을 생략한다.
1020 단계에서, 결정부(120)는 1010 단계에서 획득된 차이 값을 소정의 임계 값과 비교한다. 여기에서, 임계 값은 사용자에 의하여 미리 설정될 수도 있고, 사용자의 개입 없이 데이터 연산 장치(100)가 자동으로 설정할 수도 있다. 이때, 임계 값은 데이터의 연산 결과에 대하여 요구되는 정확도에 따라 설정될 수 있다.
만약, 차이 값이 임계값을 초과한다고 판단되면 1030 단계로 진행하고, 차이 값이 임계 값 이하라고 판단되면 1040 단계로 진행한다.
1030 단계에서, 연산부(130)는 제 1 데이터를 이용하여 제 3 데이터를 획득하는 연산을 수행한다. 예를 들어, 연산부(130)는 수리함수에 제 1 데이터를 대입함으로써 제 3 데이터를 생성할 수도 있고, 수리함수에 대응하는 다항식에 제 1 데이터를 대입함으로써 제 3 데이터를 생성할 수도 있다.
1040 단계에서, 연산부(130)는 1010 단계에서 획득된 차이 값과 제 2 데이터가 연산된 결과를 이용하여 제 3 데이터를 획득하는 연산을 수행한다. 예를 들어, 연산부(130)는 상술한 수학식 2에 따른 연산을 수행함으로써 제 3 데이터를 획득할 수 있다.
한편, 1030 단계 및 1040 단계를 수행하는 연산부(130)에 단일 연산기 또는 복수의 연산기들이 포함될 수 있음은 도 9의 930 단계를 참조하여 상술한 바와 같다.
상술한 바에 따르면, 데이터 연산 장치(100)는 이전에 입력된 데이터와 현재 입력된 데이터 사이의 차이 값을 계산하고, 계산된 차이 값을 이용하여 현재 입력된 데이터에 대한 연산을 수행한다. 따라서, 데이터 연산 장치(100)에 따르면, 룩업 테이블에 저장되는 정보의 양을 줄일 수 있고, 곱셈 연산이 수행됨에 따라 발생되는 논리 게이트들의 스위칭 횟수를 감소시킬 수 있다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 방법들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
100: 데이터 연산 장치
110: 획득부
120: 결정부
130: 연산부

Claims (23)

  1. 입력된 제 1 데이터와 기 저장된 제 2 데이터의 차이 값을 획득하는 단계;
    상기 획득된 차이 값에 기초하여, 상기 제 1 데이터가 연산된 결과에 대응하는 제 3 데이터를 획득하는 제 1 및 제 2 방법 중 하나의 방법을 결정하는 단계; 및
    적어도 하나의 연산기를 이용하여 상기 결정된 방법에 따른 연산을 수행하는 단계;를 포함하고,
    상기 제 1 방법은 상기 제 1 데이터에 기초하여 제 1 정확도를 갖는 연산을 제 1 횟수만큼 수행함으로써 제 3 데이터를 획득하는 방법이고,
    상기 제 2 방법은 상기 차이 값에 기초하여 제 2 정확도를 갖는 연산을 제 2 횟수만큼 수행함으로써 제 3 데이터를 획득하는 방법이고,
    상기 제 2 정확도는 상기 제 1 정확도보다 낮고, 상기 제 2 횟수는 상기 제 1 횟수보다 적은, 데이터를 연산하는 방법.
  2. 제 1 항에 있어서,
    상기 결정하는 단계는
    상기 차이 값을 기 설정된 임계 값과 비교하고, 상기 비교 결과에 따라 상기 제 3 데이터를 획득하는 방법을 결정하는 방법.
  3. 제 2 항에 있어서,
    상기 연산하는 단계는
    상기 차이 값이 상기 임계 값을 초과하는 경우에는 상기 제 1 데이터를 이용하여 상기 제 3 데이터를 획득하는 연산을 수행하고, 상기 차이 값이 상기 임계 값 이하인 경우에는 상기 차이 값과 상기 제 2 데이터가 연산된 결과를 이용하여 상기 제 3 데이터를 획득하는 연산을 수행하는 방법.
  4. 제 1 항에 있어서,
    상기 연산하는 단계는
    상기 차이 값 또는 상기 제 1 데이터에 따라 결정된 계수를 이용하여 상기 제 1 데이터를 연산하는 방법.
  5. 제 4 항에 있어서,
    상기 결정된 계수는 상기 차이 값 또는 상기 제 1 데이터에 대응하여 저장된 복수의 계수들 중 선택된 값인 방법.
  6. 제 1 항에 있어서,
    상기 제 1 방법은 상기 제 1 데이터 전체를 이용하여 연산을 수행하는 방법이고, 상기 제 2 방법은 상기 차이 값에 상기 제 1 데이터에 따라 결정된 계수를 곱한 값 및 상기 제 2 데이터에 상기 계수를 곱한 값의 덧셈 연산을 수행하는 방법인 방법.
  7. 제 1 항에 있어서,
    상기 차이 값 및 상기 제 1 데이터를 저장하는 단계;를 더 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 연산하는 단계는
    상기 결정된 방법에 따라 단일 연산기의 일부를 이용하여 상기 연산을 수행하는 방법.
  9. 제 8 항에 있어서,
    상기 단일 연산기는 N 비트의 곱셈 연산 및 N/2 비트의 곱셈 연산을 수행하는 다중 정밀도(multi-precision) 연산기를 포함하는 방법.
  10. 제 1 항에 있어서,
    상기 연산하는 단계는
    복수의 연산기들 중에서 상기 결정된 방법에 따라 선택된 서로 다른 연산기를 이용하여 상기 연산을 수행하는 방법.
  11. 삭제
  12. 삭제
  13. 입력된 제 1 데이터와 기 저장된 제 2 데이터의 차이 값을 획득하는 획득부;
    상기 획득된 차이 값에 기초하여, 상기 제 1 데이터가 연산된 결과에 대응하는 제 3 데이터를 획득하는 제 1 방법 및 제 2 방법 중 하나의 방법을 결정하는 결정부; 및
    상기 결정된 방법에 따른 연산을 수행하는 연산부;를 포함하고,
    상기 연산부는
    상기 제 1 방법에 따르는 경우 상기 제 1 데이터에 기초하여 제 1 정확도를 갖는 연산을 제 1 횟수만큼 수행함으로써 제 3 데이터를 획득하고,
    상기 제 2 방법에 따르는 경우 상기 차이 값에 기초하여 제 2 정확도를 갖는 연산을 제 2 횟수만큼 수행함으로써 제 3 데이터를 획득하고,
    상기 제 2 정확도는 상기 제 1 정확도보다 낮고, 상기 제 2 횟수는 상기 제 1 횟수보다 적은, 데이터를 연산하는 장치.
  14. 제 13 항에 있어서,
    상기 결정부는
    상기 차이 값을 기 설정된 임계 값과 비교하고, 상기 비교 결과에 따라 상기 제 3 데이터를 획득하는 방법을 결정하는 장치.
  15. 제 14 항에 있어서,
    상기 연산부는
    상기 차이 값이 상기 임계 값을 초과하는 경우에는 상기 제 1 데이터를 이용하여 상기 제 3 데이터를 획득하는 연산을 수행하고, 상기 차이 값이 상기 임계 값 이하인 경우에는 상기 차이 값과 상기 제 2 데이터가 연산된 결과를 이용하여 상기 제 3 데이터를 획득하는 연산을 수행하는 장치.
  16. 제 13 항에 있어서,
    상기 연산부는
    상기 차이 값 또는 상기 제 1 데이터에 따라 결정된 계수를 이용하여 상기 제 1 데이터를 연산하는 장치.
  17. 제 16 항에 있어서,
    상기 결정된 계수는 상기 차이 값 또는 상기 제 1 데이터에 대응하여 저장된 복수의 계수들 중 선택된 값인 장치.
  18. 제 13 항에 있어서,
    상기 제 1 방법은 상기 제 1 데이터 전체를 이용하여 연산을 수행하는 방법이고, 상기 제 2 방법은 상기 차이 값에 상기 제 1 데이터에 따라 결정된 계수를 곱한 값 및 상기 제 2 데이터에 상기 계수를 곱한 값의 덧셈 연산을 수행하는 방법인 장치.
  19. 제 13 항에 있어서,
    상기 차이 값 및 상기 제 1 데이터를 저장하는 저장부;를 더 포함하는 장치.
  20. 제 13 항에 있어서,
    상기 연산부는 단일 연산기를 포함하고, 상기 연산은 상기 결정된 방법에 따라 상기 연산부의 일부에서 수행되는 장치.
  21. 제 20 항에 있어서,
    상기 단일 연산기는 N 비트의 곱셈 연산 및 N/2 비트의 곱셈 연산을 수행하는 다중 정밀도(multi-precision) 연산기를 포함하는 장치.
  22. 제 13 항에 있어서,
    상기 연산부는 복수의 연산기들을 포함하고, 상기 연산은 상기 결정된 방법에 따라 선택된 서로 다른 연산기에서 수행되는 장치.
  23. 삭제
KR1020150091388A 2014-09-30 2015-06-26 데이터를 연산하는 방법 및 장치. KR102315278B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015159616A JP2016071861A (ja) 2014-09-30 2015-08-12 データを演算する方法及びその装置
US14/869,227 US10120650B2 (en) 2014-09-30 2015-09-29 Method and apparatus for calculating data

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020140132014 2014-09-30
KR20140132014 2014-09-30

Publications (2)

Publication Number Publication Date
KR20160038716A KR20160038716A (ko) 2016-04-07
KR102315278B1 true KR102315278B1 (ko) 2021-10-21

Family

ID=53879339

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150091388A KR102315278B1 (ko) 2014-09-30 2015-06-26 데이터를 연산하는 방법 및 장치.

Country Status (4)

Country Link
EP (1) EP3002676A1 (ko)
JP (1) JP2016071861A (ko)
KR (1) KR102315278B1 (ko)
CN (1) CN105468566B (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298369B1 (en) 1998-09-30 2001-10-02 Stmicroelectronics, Inc. High speed multiplier
US20030149712A1 (en) 2002-02-01 2003-08-07 Robert Rogenmoser Higher precision divide and square root approximations
US6711596B1 (en) 1999-05-14 2004-03-23 University Of Newcastle Upon Tyne Method and apparatus for determining the approximate valve of a logarithmic function

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5260898A (en) * 1992-03-13 1993-11-09 Sun Microsystems, Inc. Result cache for complex arithmetic units
US6282556B1 (en) * 1999-10-08 2001-08-28 Sony Corporation Of Japan High performance pipelined data path for a media processor
KR100325430B1 (ko) * 1999-10-11 2002-02-25 윤종용 상이한 워드 길이의 산술연산을 수행하는 데이터 처리장치 및 그 방법
US7702169B2 (en) * 2005-08-18 2010-04-20 Qualcomm Incorporated Systems, methods, and apparatus for table construction and use in image processing
CA2839345A1 (en) * 2011-06-14 2012-12-20 Zhou Wang Method and system for structural similarity based rate-distortion optimization for perceptual video coding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298369B1 (en) 1998-09-30 2001-10-02 Stmicroelectronics, Inc. High speed multiplier
US6711596B1 (en) 1999-05-14 2004-03-23 University Of Newcastle Upon Tyne Method and apparatus for determining the approximate valve of a logarithmic function
US20030149712A1 (en) 2002-02-01 2003-08-07 Robert Rogenmoser Higher precision divide and square root approximations

Also Published As

Publication number Publication date
KR20160038716A (ko) 2016-04-07
CN105468566A (zh) 2016-04-06
CN105468566B (zh) 2021-03-05
JP2016071861A (ja) 2016-05-09
EP3002676A1 (en) 2016-04-06

Similar Documents

Publication Publication Date Title
JP6977864B2 (ja) 推論装置、畳み込み演算実行方法及びプログラム
US20180211152A1 (en) Automated methods for conversions to a lower precision data format
JP2020513120A5 (ko)
US10268451B2 (en) Method and processing apparatus for performing arithmetic operation
US8504954B1 (en) Methodology for automatically generating series-approximated components
US9626631B2 (en) Analysis device, analysis method, and program
US20160085511A1 (en) Arithmetic processing method and arithmetic processor
US20190377548A1 (en) Arithmetic processing apparatus, control method, and recording medium
KR102315278B1 (ko) 데이터를 연산하는 방법 및 장치.
US11527067B2 (en) Electronic device, action instance generation method, and recording medium
JP7051025B2 (ja) シミュレーション実行システム、シミュレーション実行方法およびシミュレーション実行プログラム
EP2950213B1 (en) Method, apparatus, and system for migrating virtual machine
JP2016201108A (ja) 数学的関数を計算するためのシステム及び方法
US10776077B2 (en) Method, apparatus and recording medium for processing division calculation
JP2012238925A5 (ko)
KR20160052218A (ko) 데이터 시트에서의 계산 결과의 자동 입력 방법
JP5765266B2 (ja) 性能評価方法、情報処理装置およびプログラム
US10120650B2 (en) Method and apparatus for calculating data
KR102281047B1 (ko) 4개의 입력 내적 회로를 사용하는 삼각 함수 계산
WO2018150588A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
US9858710B2 (en) Method and apparatus for representing cordinate values of bounding box of object
US11944460B2 (en) Method and apparatus for determining sharpness of pulse wave signal
KR20160061701A (ko) 서로 다른 정확도를 갖는 연산기들을 이용하여 데이터를 처리하는 방법 및 장치
JP7370498B2 (ja) データ分析装置、データ分析プログラムおよびデータ分析方法
CN111144104B (zh) 文本相似度的确定方法、装置和计算机可读存储介质

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right