KR20090071823A - 다기능 연산장치 및 방법 - Google Patents

다기능 연산장치 및 방법 Download PDF

Info

Publication number
KR20090071823A
KR20090071823A KR1020070139733A KR20070139733A KR20090071823A KR 20090071823 A KR20090071823 A KR 20090071823A KR 1020070139733 A KR1020070139733 A KR 1020070139733A KR 20070139733 A KR20070139733 A KR 20070139733A KR 20090071823 A KR20090071823 A KR 20090071823A
Authority
KR
South Korea
Prior art keywords
log
vector
adder
programmed
pmul
Prior art date
Application number
KR1020070139733A
Other languages
English (en)
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 KR1020070139733A priority Critical patent/KR20090071823A/ko
Priority to US12/059,092 priority patent/US20090172053A1/en
Publication of KR20090071823A publication Critical patent/KR20090071823A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 행렬연산, 벡터연산, 초월함수의 구현대상 연산이 하나의 연산장치로 통합하여 구현되는 다기능 연산장치 및 방법에 관한 것으로서, GPU(graphics processing unit)에 필요한 모든 연산을 하나의 연산 장치로 통합하여줌으로써 하드웨어의 면적이 줄어들고, 행렬-벡터 곱을 제외한 모든 연산이 단일 주기 스루풋(single-cycle throughput)을 달성하도록 하고, 행렬-벡터 곱에 대해서도 2주기 스루풋(2-cycle throughput)을 달성하도록 함으로써, GPU의 소형화 및 고성능화가 가능하므로 휴대기기와 같은 내장형 시스템을 위한 3차원 그래픽 시스템의 전체 전력소모, 크기, 성능을 향상시킬 수 있다.
로그변환기, 역로그변환기, PMUL, PADD, 스루풋

Description

다기능 연산장치 및 방법{Arithmetic apparatus for multi-function unit and Method}
본 발명은 다기능 연산장치 및 방법에 관한 것으로서, 특히 휴대단말기, 내장형 시스템 및 컴퓨터시스템에서 널리 사용되는 3차원 그래픽 프로세서 (GPU)를 위한 연산 장치를 저전력화, 소형화 및 고속화하기 위한 다기능 연산장치 및 방법에 관한 것이다.
일반적으로 기존의 3차원 그래픽 프로세서는 PC기반의 고성능 컴퓨터시스템을 대상으로 설계되었기 때문에, 면적과 전력소모가 컸다.
현재, 실시간 3차원 그래픽 분야는 하드웨어의 개선과 활용의 증가에 따라서 매우 빠른 속도로 발전하고 있다. 예전에는 CPU에서 구현하던 기능을 그래픽 하드웨어로 넘겨줌으로써 성능을 높이고 CPU는 그래픽 이외의 다른 작업에 몰두할 수 있게 되었다.
그러나, 최근에 휴대전화나 PDA와 같은 휴대단말기 상에서 3차원 그래픽 프 로세서에 대한 수요가 증가하고 있고, 그 요구 사양 또한 점차적으로 증가하여 PC 기반의 그래픽 프로세서에서 채택되었던 프로그램 가능한 그래픽 파이프라인을 채택하게 되었다.
하지만, 휴대 시스템은 그 특성상 면적과 전력소모가 크기 때문에, 면적과 전력소모에서 많은 제약을 가지게 된다.
따라서 기존의 PC 기반 시스템을 대상으로 제안된 그래픽 프로세서는 휴대 시스템에는 사용하기 적합하지 않는 문제점이 있다.
따라서, 상기와 같은 문제점을 해결하기 위하여, 본 발명에서는 GPU에서 필요한 행렬 연산을 2 주기 스루풋(2-cycle throughput)으로 처리하고, 벡터 및 초월함수 연산을 단일주기 스루풋(single-cycle throughput)으로 처리함으로써, GPU의 스루풋(throughput)을 크게 증가시키고, 이들을 하나의 연산 장치에 통합 구현함으로써 저전력화 및 소형화가 가능한 다기능 연산장치 및 방법을 제공하는 것을 기술적 과제로 한다.
이러한 기술적 과제를 달성하기 위한 본 발명에 따른 다기능 연산장치는 행렬연산, 벡터연산, 초월함수의 구현대상 연산이 하나의 연산장치로 통합하여 구현되는 다기능 연산장치에 있어서, 3차원 그래픽 연산을 위하여 입력된 값을 로그 도메인으로 변환하는 로그변환기와, 상기 로그 변환기의 결과값과 3차원 그래픽 연산을 위하여 입력된 값을 서로 합산하기 위한 제1 가산기와, 상기 제1 가산기의 결과값과 3차원 그래픽 연산을 위하여 입력된 값을 이용하여 구현대상 연산을 수행하도록 프로그래밍되는 PMUL(Programmable Multiplier)과, 상기 PMUL 결과값을 자리 이동시키기 위한 쉬프터와, 상기 로그변환기의 결과값과 상기 쉬프터의 결과값을 합산하기 위한 제2 가산기와, 상기 제2 가산기의 결과값을 지수 도메인으로 변환하기 위한 역로그 변환기와, 상기 역로그 변환기 결과값과 3차원 그래픽 연산을 위하여 입력된 값을 이용하여 구현대상 연산을 수행하도록 프로그래밍되는 PADD(Progammable Adder)를 포함하여 구성될 수 있다.
또한, 상기 다기능 연산장치는 행렬연산을 구현하기 위한 가산기를 더 포함하여 구성될 수 있다.
상기 벡터연산 및 상기 초월함수의 연산은 1주기 스루풋(single-cycle throughput)으로 이루어지며, 상기 행렬연산은 2주기 스루풋(two-cycle throughput)으로 이루어질 수 있다.
상기 로그변환기는 구간별로 세분화하여 근사시키는 구간별 선형 근사법으로 구현되는 것이 바람직하다.
상기 구간은 입력이 ‘1’에 가까운 구간인 것이 바람직하다.
상기 로그 도메인으로 변환시 초월함수는 Taylor 급수로 전개하여 변환되는 것이 바람직하다.
상기 Taylor 급수 전개에서 첫째 항은 로그변환기와 곱셈기를 거치지 않고 직접 PADD에서 합산하는 것이 바람직하다.
상기 PMUL은 하나의 32b× 24b 곱셈기를 재구성가능하도록 하여 행렬-벡터 곱셈 계산에 필요한 4개의 역로그 변환기, 벡터 곱셈, 나눗셈, 제곱근 계산 및 벡터 선형보간, 내적 계산에 필요한 4개의 로그 변환기, 벡터외적 계산시에 필요한 각 2개의 로그변환기 및 역로그 변환기, 멱함수 계산에 필요한 32b× 24b 곱셈기, 초월함수의 Taylor 급수 전개에 필요한 4개의 32b× 6b 곱셈기로 모두 사용가능하다.
상기 PMUL은 로그 변환시 로그변환을 위한 LUT(Look Up Table)을 추가하여 로그 변환기 및 곱셈기에 공통으로 필요한 합산 트리를 공유하며, 역로그변환시 역로그변환을 위한 LUT(Look Up Table)를 추가하여 합산트리를 공유하도록 프로그래밍되는 것이 바람직하다.
상기 PADD는 하나의 PADD를 재구성 가능하도록 하여 벡터 곱셈-합산 연합 (Multiply-Add), 외적(cross product), 행렬-벡터 곱의 구현을 위하여 4-way SIMD 가산기로 프로그래밍되고, 내적(dot product) 및 삼각함수의 구현을 위하여 하나의 5-입력 합산트리로 프로그래밍되는 것이 바람직하다.
상기 벡터 선형 보간은 상기 제1 가산기를 이용하여 연산 수행한 다음 PMUL로 구현하는 것이 바람직하다.
2개의 변수를 가지는 로그 함수는 아래 수식에 의하여,
Figure 112007094246972-PAT00001
상기 로그 변환기와 상기 PMUL의 로그변환기를 직렬로 연결하여 구현하는 것이 바람직하다.
상기와 같이 구성된 다기능 연산장치를 이용한 다기능 연산방법에 있어서,
벡터연산 및 초월함수의 연산은 로그 도메인으로 변환하여 연산을 행하고 다시 변환하는 1주기 스루풋(single-cycle throughput)으로 구현되고, 행렬연산은 2주기 스루풋(two-cycle throughput)으로 구현되도록 프로그래밍되는 것이 바람직하다.
상기 행렬연산시 PMUL이 4개의 역로그 변환기로 프로그래밍되며, PADD는 SIMD(Single Instruction Multiple Data) 가산기로 프로그래밍되는 것이 바람직하다.
상기 2주기 스루풋은 행렬-벡터곱 연산시 4-엘리먼트 벡터를 2개의 페이스로 구분하여, 제1 페이스에 대하여 로그 도메인으로 변환하여 연산을 행하고 다시 변환하여 합산하는 제1 과정과, 제2 페이스에 대하여 로그 도메인으로 변환하여 연산을 행하고 다시 변환하여 합산하는 제2 과정으로 이루어지는 것이 바람직하다.
상기 로그 도메인으로 변환시 구간별로 세분화하여 근사시키는 구간별 선형근사법으로 변환하는 것이 바람직하다.
상기 벡터외적 연산시 PMUL이 각 2개의 로그 변환기 및 역로그 변환기로 프로그래밍되며, PADD는 SIMD(Single Instruction Multiple Data) 가산기로 프로그래밍되는 것이 바람직하다.
상기 세분화하여 근사시키는 구간은 입력이 ‘1’에 가까운 구간인 것이 바람직하다.
상기 로그 도메인으로 변환시 초월함수는 Taylor 급수로 전개하여 변환하는 것이 바람직하다.
상기 Taylor 급수 전개에서 첫째 항은 로그변환기와 곱셈기를 거치지 않고 직접 PADD에서 합산하는 것이 바람직하다.
상기한 바와 같이, 본 발명은 GPU(graphics processing unit)에 필요한 모든 연산을 하나의 연산 장치로 통합하여줌으로써 하드웨어의 면적이 줄어들고, 행렬-벡터 곱을 제외한 모든 연산이 단일 주기 스루풋(single-cycle throughput)을 달성하도록 하고, 행렬-벡터 곱에 대해서도 2주기 스루풋(2-cycle throughput)을 달성하도록 함으로써, GPU의 소형화 및 고성능화가 가능하므로 휴대기기와 같은 내장형 시스템을 위한 3차원 그래픽 시스템의 전체 전력소모, 크기, 성능을 향상시킬 수 있다.
이하, 상기와 같이 구성된 다기능 연산장치에 대하여 도면을 참조하여 상세하게 설명하기로 한다.
도 1은 본 발명에 따른 다기능 연산장치의 전체 구성을 나타내는 도면이고, 도 2a 및 2b는 본 발명에 따른 다기능 연산장치의 로그변환방법을 설명하기 위한 도면이며, 도 3a 및 3b는 본 발명에 따른 다기능 연산장치의 역로그 변환방법을 설명하기 위한 도면이고, 도 4는 본 발명에 따른 다기능 연산장치의 PMUL(programmable multiplier)의 구성을 나타낸 도면이며, 도 5는 본 발명에 따른 다기능 연산장치의 PADD(programmable adder)의 구성을 나타낸 도면이다.
도 1에 나타난 바와 같이, 본 발명에 따른 연산장치는 4-channel, 5-stage의 파이프라인으로 구성되어 있으며, stage 1에는 입력 데이터를 로그 도메인으로 변 환하는 로그 변환기(10), stage 2에는 구현하고자 하는 연산에 따라 프로그램가능한 PMUL(programmable multiplier, 30)를 포함하고 있다. stage 3에는 로그도메인의 연산결과를 고정/부동 소수점 결과로 변환하기 위한 역로그 변환기(50)를 포함하고 있으며, stage 4에는 구현대상 연산에 따라 프로그램가능한 PADD(programmable adder, 70)를 포함하고 있다. stage 5에는 아래에서 설명할 행렬연산을 구현하기 위한 누산기(80)를 포함하고 있다.
여기서, 상기 stage1은 상기 로그변환기(10)의 결과값과 3차원 그래픽 연산을 위하여 입력된 값을 서로 합산하기 위한 제1 가산기(20)를 더 포함하고, 상기 stage2는 상기 PMUL(30) 결과값을 자리 이동시키기 위한 쉬프터(40)를 더 포함하며, 상기 stage3은 상기 로그변환기(10)의 결과값과 상기 쉬프터(40)의 결과값을 합산하기 위한 제2 가산기(50)를 더 포함하여 구성된다.
특히, 본 발명은 저전력 동작을 위하여 입출력 데이터로 고정 소수점 수 체계 (Fixed-Point Number System) 혹은 부동 소수점 수 체계 (Floating-Point Number System)의 데이터를 처리하며, 연산의 복잡도를 줄이기 위해 입력으로 받은 고정 혹은 부동 소수점 데이터를 로그 도메인의 데이터인 로그 수 체계 (Logarithmic Number System; LNS)로 변환하여 계산한다. 이렇게 로그 수로 계산된 데이터는 입출력 형식인 고정/부동 소수점 데이터로 변환되어 출력된다.
이때, 고정/부동 소수점 데이터를 LNS의 데이터로 변환하는 로그 변환기의 정확도가 연산의 정확도를 결정지으므로, 로그 변환기의 변환 에러를 줄이는 것이 중요하다.
또한, 본 발명에서는 저전력으로 로그 변환기를 구현하기 위하여 구간별 선형 근사법(piecewise linear approximation)을 사용한다. 이 로그 변환기에서는 소수부분은 [0,1]의 값에 대해서 구간을 나누어 각 구간을 선형으로 근사화 하고, 정수 부분은 고정 소수점 데이터일 경우 소수점으로부터 leading one의 위치를 count함으로써 구할 수 있으며, 부동 소수점 데이터일 경우 지수 (exponent)부분을 취함으로써 얻을 수 있다. 이 때, 로그 함수에서는 입력데이터가 ‘1’에 가까워질수록 출력데이터가 ‘0’에 가까워지므로, 이 구간에서는 작은 에러값도 원 값에 대한 비율 (%)은 크게 나타나는 문제점을 가지고 있다.
이를 해결하기위해 본 발명에서는 ‘1’에 가까운 구간에서는 근사 구간을 더욱 세분하여 근사화 함으로써 에러를 줄이는 기법을 제안하였다.
도 2a 및 2b에서는 본 발명에 따른 구간별 선형 근사에 기반하는 로그 변환법과 이를 이용한 구간별 선형 근사를 LUT(lookup table, 15), CSA(Carry Save Adder, 16) 및 CPA(Carry Propagation Adder, 17)로 구성된 가산기 트리(adder tree)로 구현하는 장치를 설명하는 것으로서, ‘1’에 가까운 구간에서는 더욱 세분하여 근사화함으로써 에러를 줄이기 위한 방법을 사용하였다.
도 3a 및 3b에서는 본 발명에 따른 역로그 변환법과 이를 이용한 장치를 설명하기 위한 것으로서, 도 2에서 처럼 로그 도메인에서 연산된 결과값을 고정 및 부동 소수점 결과, 즉 지수 도메인으로 변환하는 역로그변환법으로서, 구간별 선형 근사를 위한 LUT(65), CSA(66) 및 CPA(67)로 구성된 가산기 트리로 구현되는 장치를 사용하여 에러를 줄이기 위한 방법을 사용하였다.
도 4에서는 본 발명에 따른 다기능 연산장치의 PMUL(programmable multiplier)의 구성을 설명하기 위함이다.
한편, 벡터 연산들은 8개의 로그 변환기를 필요로 하지만 로그도메인의 Booth 곱셈기는 필요로 하지 않는 반면, 초월함수는 1개의 로그 변환기와 로그 도메인에서의 Booth 곱셈기를 필요로 한다.
기존의 발명에서는 벡터 연산과 초월함수 연산을 함께 구현하기 위해서 stage 1에 8개의 로그 변환기를 두었으며, 로그 도메인인 stage 2에 Booth 곱셈기를 두었다. 하지만, 이는 벡터 연산에 대해서는 Booth 곱셈기가 낭비되고, 초월함수에 대해서는 7개의 로그 변환기가 낭비되는 결과를 초래하였다.
따라서, 도4 에 나타난 바와 같이, 본 발명에서는 적응적 수 변환법(Adaptive Number Conversion)을 이용하여 8개의 로그 변환기 중 4개는 stage 1에 두고, 나머지 4개는 stage 2에 두고 로그 변환기 및 Booth 곱셈기에 공통으로 필요한 가산기 트리(adder tree)를 공유하여 프로그램 가능하도록 도 4의 PMUL을 만들어, 벡터 연산에 대해서는 로그 변환기로, 초월함수에 대해서는 Booth 곱셈기로 각각 프로그램 되도록 함으로써, 불필요한 낭비를 줄여주게 된다.
또한, PMUL에 역로그 변환을 위한 LUT(36)를 추가하고 가산기 트리는 공유하여 역로그 변환기로도 프로그램할 수 있도록 하여, 행렬-벡터 곱셈, 벡터 외적 등 에도 활용할 수 있도록 하였다.
상기 PMUL은 하나의 32b× 24b 곱셈기를 재구성가능하도록 하여 행렬-벡터 곱셈 계산에 필요한 4개의 역로그 변환기, 벡터 곱셈, 나눗셈, 제곱근 계산 및 벡터 선형보간, 내적 계산에 필요한 4개의 로그 변환기, 벡터외적 계산시에 필요한 각 2개의 로그변환기 및 역로그 변환기, 멱함수 계산에 필요한 32b× 24b 곱셈기, 초월함수의 Taylor 급수 전개에 필요한 4개의 32b× 6b 곱셈기로 모두 사용가능하다.
도 5는 본 발명에 따른 다기능 연산장치의 PADD(programmable adder)의 구성을 설명하기 위함이다.
이는 벡터 곱셈-합산 연합 (Multiply-Add), 외적 (cross product), 행렬-벡터 곱 구현을 위해서는 4-way SIMD(Single Instruction Multiple Data) 가산기로 프로그램되고, 내적 (dot product) 및 삼각함수 구현을 위해서는 하나의 5-입력 합산 트리(5-input adder tree)로 프로그램될 수 있다.
상기와 같이 구성된 본 발명에 따른 다기능 연산장치는 GPU에 사용되는 연산들의 복잡도를 줄이기 위하여 합산과 뺄셈을 제외한 모든 연산을 로그 도메인으로 변환하여 수행하여, 로그 도메인에서는 곱셈이 합산, 나눗셈이 뺄셈, 제곱근이 쉬프트, 그리고 멱함수가 곱셈으로 연산의 복잡도가 줄어드는 장점이 있다.
이를 위해서는 입력 값을 로그 도메인으로 변환해주는 로그 변환기와, 로그 도메인에서 계산된 값을 다시 원래의 도메인으로 변환해주는 역로그 변환기가 필요하다. 특히, 초월함수들 (삼각함수, 쌍곡선함수 및 그들의 역함수)의 연산 복잡도를 감소시키기 위해서 본 발명에서는 이들을 Taylor 급수로 전개하여, 이를 로그 도메인에서 계산함으로써 초월함수들에 대한 연산의 복잡도를 낮추어 처리할 수 있도록 하였다.
한편, 기존 발명중에도 로그 도메인에서의 연산을 이용함으로써 성능을 증가시킨 예가 있지만, 멱함수와 삼각함수까지 하나의 연산 장치에 통합 구현하여 단일 주기 스루풋(single-cycle throughput)에 구현한 예는 없었다.
본 발명에서는 GPU에서 필요한 행렬 연산을 2주기 스루풋(2-cycle throughput)으로 처리하고, 벡터 및 초월함수 연산을 단일 주기 스루풋(single-cycle throughput)으로 처리함으로써, GPU의 스루풋을 크게 증가시키고, 이들을 하나의 연산 장치에 통합 구현함으로써 저전력화 및 소형화가 가능하도록 하였다.
이하, 본 발명에서 제안한 각 연산에 대한 구현 방법을 설명하면 다음과 같다.
1. 행렬-벡터 곱 (Matrix-Vector Multiplication)
3차원 그래픽에서 요구되는 지오메트리 변환(geometry transformation)을 수행하기 위해서는 4x4 행렬과 4-엘리먼트(element) 벡터의 곱셈이 필요하다. 수식 (1)에서 보인바와 같이, 이는 16개의 곱셈 연산을 필요로 하는데, 이는 로그 도메 인에서 20개의 로그 변환기, 16의 가산기, 16개의 역로그 변환기를 필요로 한다.
Figure 112007094246972-PAT00002
(1)
3차원 그래픽에서 지오메트리 변환(geometry transformation) 행렬의 원소들은 하나의 3차원 물체를 변환하는 동안 고정되므로, 행렬원소들은 연산이 시작되기 전 미리 로그 도메인으로 변환될 수 있다.
따라서, 수식 (1)의 연산을 구현하기 위해 필요한 20개의 로그변환기 개수는 벡터 원소 변환만을 위한 4개의 로그변환기로 줄어들게 되어, 4개의 로그 변환기, 16개의 가산기, 16개의 역로그 변환기가 수식 (1)을 위해 필요하게 된다.
이를 본 발명에서 제안하는 4-way 연산기에 구현하기 위해 수식 (1)에서 보인바와 같이 2 페이스(phase)로 나누어 구현하면 1 페이스에 2개의 로그 변환기, 8개의 가산기, 8개의 역로그 변환기만이 필요하게 된다. 이때 필요한 8개의 가산기는 stage 1과 stage 3의 제1 및 제2 가산기들을 이용하면 되고, 8개의 역로그 변환기는 stage 3의 4개 역로그 변환기와 stage 2의 PMUL을 4개의 역로그 변환기로 프로그램 함으로써 구현할 수 있다.
stage 2의 역로그 변환 결과들과 stage 3의 역로그 변환 결과들은 PADD를 4-way SIMD 가산기로 프로그램 하여 더함으로써 페이스 1의 연산 결과를 얻을 수 있고, 이 같은 과정을 반복하여 페이스 2결과를 얻어 stage 5의 누산기를 통해 phase 1,2의 결과를 누적함으로써 최종 연산결과를 얻을 수 있다. 이와 같은 방법으로 기존의 4-way 연산기에서 4 주기 스루풋(4-cycle throughput)으로 구현하던 행렬-벡터 곱셈을 2 주기 스루풋(2-cycle throughput)으로 향상시킬 수 있다.
2. 벡터 합산, 뺄셈 (Add, Subtract)
합산, 뺄셈은 로그 도메인으로 변환하지 않고, 고정/부동 소수점 도메인에서 처리한다. 이는 도 1에 나타난 stage 1의 제1 가산기(20)를 이용한다.
3. 벡터 곱셈, 나눗셈, 제곱근 (Multiply, Divide, Square-root) 및 합산 연합연산 (Multiply-Add, Divide-Add, Sqrt-Add)
수식 (2)에서와 같이, 곱셈, 나눗셈, 제곱근은 로그 도메인에서 각각 합산, 뺄셈, 쉬프트 연산으로 변환하여 처리한다. 이를 위해 도 1에 나타난 stage 2의 PMUL(30)은 4개의 로그 변환기로 프로그램되며, stage 2의 시프터(shifter, 40)와 stage 3의 제 2가산기를 이용한다. 또한, 이들과 합산의 연합연산은 도 1에 나타난 stage 4의 가산기들을 이용한다.
Figure 112007094246972-PAT00003
(2)
여기서,
Figure 112007094246972-PAT00004
.
4. 벡터 선형 보간 (Linear interpolation)
수식 (3)과 같이,
Figure 112007094246972-PAT00005
는 뺄셈 수행 후 로그변환을 필요로 한다. 이를 위해, stage 2의 PMUL(30)은 로그 변환기로 프로그램 되며, stage 1의 제1 가산기(20)를 이용해 뺄셈을 수행한 후 로그 변환을 수행한다.
Figure 112007094246972-PAT00006
(3)
5. 벡터 내적 (Dot-product) 및 외적 (Cross-product)
벡터 내적은 두 벡터의 각 요소들 간의 곱으로 이루어진 항들의 합으로 정의된다. 따라서 각 벡터 요소들 간의 곱은 2번에서 설명한 바와 같이 로그 도메인에서 수행한 후, 고정/부동 소수점 도메인으로 역로그 변환을 하여 그 곱셈 결과들을 합함으로써 구하도록 한다. 이를 위해 stage 2의 PMUL(30)은 4개의 로그 변환기로 프로그램 된다.
벡터 외적은 수식 (4)에서 보이는 바와 같이, 6개의 곱셈을 필요로 하므로 12개의 로그 변환기, 6개의 가산기, 6개의 역로그 변환기를 필요로 하지만 6개의 서로 다른 피연산자(operand)만을 사용하므로 필요한 로그 변환기의 수를 6개로 줄일 수 있다.
Figure 112007094246972-PAT00007
(4)
따라서, stage 2에 있는 PMUL(30)을 2개의 로그 변환기와 2개의 역로그 변환기로 프로그램 함으로써, 외적에 필요한 6개의 로그변환기 및 6개의 역로그 변환기를 stage 1, 2, 3의 변환기들로부터 마련할 수 있고 6개의 가산기들은 stage 3에 있는 제2 가산기들(60) 및 stage 1의 제1 가산기들(20)로부터 마련할 수 있다.
6. 로그 함수 (log x y)
기존 발명에서는 로그 함수의 밑수는 임의의 상수였지만, 본 발명에서는 2개의 변수를 가지는 로그 함수를 구현한다. 2개 변수를 가지는 로그 함수는 수식 (5)와 같이 로그 도메인 연산을 이용하여 구현할 수 있다.
Figure 112007094246972-PAT00008
(5)
수식 (5)는 연속된 2개의 로그 변환기를 필요로 하는데 이는 stage 2의 PMUL(30)을 2개의 로그 변환기로 프로그램하여, stage 1과 stage 2의 로그변환기를 직렬로 연결함으로써 구현할 수 있다.
7. 멱함수 (power)
멱함수는 연산의 복잡도가 큰 함수중의 하나이지만, 로그 도메인에서는 수식 (6)과 같이 곱셈으로 계산이 가능하다.
Figure 112007094246972-PAT00009
(6)
따라서, 본 발명에서는 PMUL을 도 4에 보인바와 같이 하나의 풀-워드(full-word) 곱셈기(35)로 프로그램 가능하도록 만듦으로써, 멱함수의 계산이 가능하도록 하였다.
8. 삼각함수 (삼각(trigonometric)함수, 쌍곡선(hyperbolic)함수, 역삼각(inverse-trigonometric)함수, 역쌍곡선(inverse-hyperbolic)함수 포함)
삼각함수(삼각함수, 쌍곡선함수, 역삼각함수, 역쌍곡선함수 포함)와 같은 경우, Taylor 급수 전개를 통하여 삼각함수도 로그 도메인으로 변환되도록 하여 연산의 복잡도를 줄였다. 삼각함수에 대한 Taylor 급수 전개에 사용되는 각 항들을 계산하기 위해서는 각 항에 대하여 입력 값의 멱함수와 계수 곱셈이 요구되는데 이를 로그 도메인으로 변환하면 수식 (7)과 같이 곱셈과 합산으로 변환된다.
Figure 112007094246972-PAT00010
(7)
여기서,
Figure 112007094246972-PAT00011
이고,
Figure 112007094246972-PAT00012
Figure 112007094246972-PAT00013
는 각각 양의 실수 및 정수이다.
여기서 필요한 곱셈은 PMUL을 4-way 곱셈기로 프로그램 함으로써 구현한다. 이 곱셈기는 도 4에 나타나 있으며, 이는 전체로서 하나의 풀 워드(full-word) 곱 셈기로도 구성될 수 있고, 4-way 서브웨이(sub-word) 곱셈기와 계수를 위한 가산기로도 구성될 수 있다.
이렇게 구해진 항들은 도 5에 나타난 바와 같이, PADD를 5-input 합산 트리로 프로그램 하여 합산함으로써 삼각함수를 구현할 수 있다.
위의 식에서 삼각함수들에 대한 Taylor 급수 전개 시 첫째 항은 항상 상수 '1' 이거나 1차항이 되므로, 이는 로그 변환기와 곱셈기를 통하지 않고 도 5에 나타난 바와 같이 합산 트리에 직접 더해지도록 함으로써 하나의 로그 변환기와 곱셈기를 줄일 수 있다. 이로 인해 각 삼각함수를 5개항의 Taylor 급수로 근사화 함으로써 근사화에 따르는 에러를 줄였다.
이상에서 보는 바와 같이, 본 발명이 속하는 기술 분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 하고, 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
도 1은 본 발명에 따른 다기능 연산장치의 전체 구성을 나타내는 도면,
도 2a 및 2b는 본 발명에 따른 다기능 연산장치의 로그변환방법을 설명하기 위한 도면,
도 3a 및 3b는 본 발명에 따른 다기능 연산장치의 역로그 변환방법을 설명하기 위한 도면,
도 4는 본 발명에 따른 다기능 연산장치의 PMUL(programmable multiplier)의 구성을 나타낸 도면,
도 5는 본 발명에 따른 다기능 연산장치의 PADD(programmable adder)의 구성을 나타낸 도면이다.

Claims (20)

  1. 행렬연산, 벡터연산, 초월함수의 구현대상 연산이 하나의 연산장치로 통합하여 구현되는 다기능 연산장치에 있어서,
    3차원 그래픽 연산을 위하여 입력된 값을 로그 도메인으로 변환하는 로그변환기;
    상기 로그 변환기의 결과값과 3차원 그래픽 연산을 위하여 입력된 값을 서로 합산하기 위한 제1 가산기;
    상기 제1 가산기의 결과값과 3차원 그래픽 연산을 위하여 입력된 값을 이용하여 구현대상 연산을 수행하도록 프로그래밍되는 PMUL(Programmable Multiplier);
    상기 PMUL 결과값을 자리 이동시키기 위한 쉬프터;
    상기 로그변환기의 결과값과 상기 쉬프터의 결과값을 합산하기 위한 제2 가산기;
    상기 제2 가산기의 결과값을 지수 도메인으로 변환하기 위한 역로그 변환기;
    상기 역로그 변환기 결과값과 3차원 그래픽 연산을 위하여 입력된 값을 이용하여 구현대상 연산을 수행하도록 프로그래밍되는 PADD(Progammable Adder);를 포함하는, 다기능 연산장치.
  2. 제1항에 있어서,
    상기 다기능 연산장치는 행렬연산을 구현하기 위한 가산기를 더 포함하는, 다기능 연산장치.
  3. 제1항에 있어서,
    상기 벡터연산 및 상기 초월함수의 연산은 1주기 스루풋(single-cycle throughput)으로 이루어지며, 상기 행렬연산은 2주기 스루풋(two-cycle throughput)으로 이루어지는, 다기능 연산장치.
  4. 제1항에 있어서,
    상기 로그변환기는 구간별로 세분화하여 근사시키는 구간별 선형 근사법으로 구현되는, 다기능 연산장치.
  5. 제4항에 있어서,
    상기 구간은 입력이 ‘1’에 가까운 구간인, 다기능 연산장치.
  6. 제1항에 있어서,
    상기 로그 도메인으로 변환시 초월함수는 Taylor 급수로 전개하여 변환되는, 다기능 연산장치.
  7. 제6항에 있어서,
    상기 Taylor 급수 전개에서 첫째 항은 로그변환기와 곱셈기를 거치지 않고 직접 PADD에서 합산하는, 다기능 연산장치.
  8. 제1항에 있어서,
    상기 PMUL은 하나의 32b× 24b 곱셈기를 재구성가능하도록 하여 행렬-벡터 곱셈 계산에 필요한 4개의 역로그 변환기, 벡터 곱셈, 나눗셈, 제곱근 계산 및 벡터 선형보간, 내적 계산에 필요한 4개의 로그 변환기, 벡터외적 계산시에 필요한 각 2개의 로그변환기 및 역로그 변환기, 멱함수 계산에 필요한 32b× 24b 곱셈기, 초월함수의 Taylor 급수 전개에 필요한 4개의 32b× 6b 곱셈기로 모두 사용가능한, 다기능 연산장치.
  9. 제8항에 있어서,
    상기 PMUL은 로그 변환시 로그변환을 위한 LUT(Look Up Table)을 추가하여 로그 변환기 및 곱셈기에 공통으로 필요한 합산 트리를 공유하며, 역로그변환시 역로그변환을 위한 LUT(Look Up Table)를 추가하여 합산트리를 공유하도록 프로그래밍되는, 다기능 연산장치.
  10. 제1항에 있어서,
    상기 PADD는 하나의 PADD를 재구성 가능하도록 하여 벡터 곱셈-합산 연합 (Multiply-Add), 외적(cross product), 행렬-벡터 곱의 구현을 위하여 4-way SIMD 가산기로 프로그래밍되고, 내적(dot product) 및 삼각함수의 구현을 위하여 하나의 5-입력 합산트리로 프로그래밍되는, 다기능 연산장치.
  11. 제8항에 있어서,
    상기 벡터 선형 보간은 상기 제1 가산기를 이용하여 연산 수행한 다음 PMUL로 구현하는, 다기능 연산장치.
  12. 제8항에 있어서,
    2개의 변수를 가지는 로그 함수는 아래 수식에 의하여,
    Figure 112007094246972-PAT00014
    상기 로그 변환기와 상기 PMUL의 로그변환기를 직렬로 연결하여 구현하는, 다기능 연산장치.
  13. 제1항에 따른 다기능 연산장치를 이용한 다기능 연산방법에 있어서,
    벡터연산 및 초월함수의 연산은 로그 도메인으로 변환하여 연산을 행하고 다시 변환하는 1주기 스루풋(single-cycle throughput)으로 구현되고, 행렬연산은 2주기 스루풋(two-cycle throughput)으로 구현되도록 프로그래밍되는, 다기능 연산방법.
  14. 제13항에 있어서,
    상기 행렬연산시 PMUL이 4개의 역로그 변환기로 프로그래밍되며, PADD는 SIMD(Single Instruction Multiple Data) 가산기로 프로그래밍되는, 다기능 연산방법.
  15. 제13항에 있어서,
    상기 2주기 스루풋은 행렬-벡터곱 연산시 4-엘리먼트 벡터를 2개의 페이스로 구분하여,
    제1 페이스에 대하여 로그 도메인으로 변환하여 연산을 행하고 다시 변환하여 합산하는 제1 과정; 및
    제2 페이스에 대하여 로그 도메인으로 변환하여 연산을 행하고 다시 변환하여 합산하는 제2 과정; 으로 이루어지는, 다기능 연산방법.
  16. 제13항에 있어서,
    상기 로그 도메인으로 변환시 구간별로 세분화하여 근사시키는 구간별 선형근사법으로 변환하는, 다기능 연산방법.
  17. 제13항에 있어서,
    상기 벡터외적 연산시 PMUL이 각 2개의 로그 변환기 및 역로그 변환기로 프로그래밍되며, PADD는 SIMD(Single Instruction Multiple Data) 가산기로 프로그래밍되는, 다기능 연산방법.
  18. 제16항에 있어서,
    상기 세분화하여 근사시키는 구간은 입력이 ‘1’에 가까운 구간인, 다기능 연산방법.
  19. 제13항에 있어서,
    상기 로그 도메인으로 변환시 초월함수는 Taylor 급수로 전개하여 변환하는, 다기능 변환방법.
  20. 제13항에 있어서,
    상기 Taylor 급수 전개에서 첫째 항은 로그변환기와 곱셈기를 거치지 않고 직접 PADD에서 합산하는, 다기능 연산방법.
KR1020070139733A 2007-12-28 2007-12-28 다기능 연산장치 및 방법 KR20090071823A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070139733A KR20090071823A (ko) 2007-12-28 2007-12-28 다기능 연산장치 및 방법
US12/059,092 US20090172053A1 (en) 2007-12-28 2008-03-31 Arithmetic apparatus for multi-function unit and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070139733A KR20090071823A (ko) 2007-12-28 2007-12-28 다기능 연산장치 및 방법

Publications (1)

Publication Number Publication Date
KR20090071823A true KR20090071823A (ko) 2009-07-02

Family

ID=40799856

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070139733A KR20090071823A (ko) 2007-12-28 2007-12-28 다기능 연산장치 및 방법

Country Status (2)

Country Link
US (1) US20090172053A1 (ko)
KR (1) KR20090071823A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101118594B1 (ko) * 2008-12-02 2012-02-27 한국과학기술원 룩업 테이블 공유 장치 및 방법
US9104584B2 (en) 2010-12-30 2015-08-11 Samsung Electronics Co., Ltd. Apparatus and method for performing a complex number operation using a single instruction multiple data (SIMD) architecture
KR102199517B1 (ko) * 2019-08-07 2021-01-07 충남대학교산학협력단 다기능 연산장치

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140324936A1 (en) * 2013-04-30 2014-10-30 Texas Instruments Incorporated Processor for solving mathematical operations
US9304971B2 (en) 2013-06-27 2016-04-05 International Business Machines Corporation Lookup table sharing for memory-based computing
JP6102645B2 (ja) * 2013-09-11 2017-03-29 富士通株式会社 積和演算回路及び積和演算システム
CN103577149B (zh) * 2013-11-20 2017-02-08 华为技术有限公司 Hba兼容处理方法、装置及系统
KR102338863B1 (ko) 2015-09-09 2021-12-13 삼성전자주식회사 연산을 제어하기 위한 장치 및 방법
US10474458B2 (en) * 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US11244718B1 (en) * 2020-09-08 2022-02-08 Alibaba Group Holding Limited Control of NAND flash memory for al applications

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997012331A1 (en) * 1995-09-28 1997-04-03 Motorola Inc. Method and system for performing a convolution operation
US6055556A (en) * 1997-08-15 2000-04-25 Motorola, Inc. Apparatus and method for matrix multiplication
US6003058A (en) * 1997-09-05 1999-12-14 Motorola, Inc. Apparatus and methods for performing arithimetic operations on vectors and/or matrices
US5951629A (en) * 1997-09-15 1999-09-14 Motorola, Inc. Method and apparatus for log conversion with scaling
JP4274633B2 (ja) * 1999-06-23 2009-06-10 株式会社ルネサステクノロジ 累乗演算装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101118594B1 (ko) * 2008-12-02 2012-02-27 한국과학기술원 룩업 테이블 공유 장치 및 방법
US9104584B2 (en) 2010-12-30 2015-08-11 Samsung Electronics Co., Ltd. Apparatus and method for performing a complex number operation using a single instruction multiple data (SIMD) architecture
KR102199517B1 (ko) * 2019-08-07 2021-01-07 충남대학교산학협력단 다기능 연산장치

Also Published As

Publication number Publication date
US20090172053A1 (en) 2009-07-02

Similar Documents

Publication Publication Date Title
KR20090071823A (ko) 다기능 연산장치 및 방법
JP2021536076A (ja) 乗算累積回路
Nam et al. Power and area-efficient unified computation of vector and elementary functions for handheld 3D graphics systems
CN109634558B (zh) 可编程的混合精度运算单元
CN110222833B (zh) 一种用于神经网络的数据处理电路
Kodali et al. FPGA implementation of vedic floating point multiplier
Prabhu et al. A delay efficient vedic multiplier
Nam et al. A low-power unified arithmetic unit for programmable handheld 3-D graphics systems
Gao et al. Efficient realization of bcd multipliers using fpgas
CN110458277B (zh) 适用于深度学习硬件加速器的可配置精度的卷积硬件结构
KR102199517B1 (ko) 다기능 연산장치
KR100649111B1 (ko) 3차원 그래픽 시스템의 연산장치 및 그 방법
JPH09212485A (ja) 2次元idct回路
Akhil et al. Delay and Area analysis of hardware implementation of FFT using FPGA
CN115357214A (zh) 一种兼容非对称多精度混合乘累加运算的运算单元
KR101722215B1 (ko) 이산 여현 변환 장치 및 방법
Ismail et al. Hybrid logarithmic number system arithmetic unit: A review
CN114492771A (zh) 神经网络处理单元及系统
Hsiao et al. Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system
Naregal et al. Design and implementation of high efficiency vedic binary multiplier circuit based on squaring circuits
Bokade et al. CLA based 32-bit signed pipelined multiplier
Vinh et al. FPGA Implementation of Trigonometric Function Using Loop-Optimized Radix-4 CORDIC
Karthik et al. Design and implementation of 64 bit high speed vedic multiplier
Singh et al. Design and synthesis of single precision floating point division based on newton-raphson algorithm on fpga
Sharma et al. Implementation of single precision conventional and fused floating point add-sub unit using Verilog

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application