KR20220102824A - 룩업 테이블을 이용하여 비선형 함수를 연산하는 반도체 장치 - Google Patents

룩업 테이블을 이용하여 비선형 함수를 연산하는 반도체 장치 Download PDF

Info

Publication number
KR20220102824A
KR20220102824A KR1020210005215A KR20210005215A KR20220102824A KR 20220102824 A KR20220102824 A KR 20220102824A KR 1020210005215 A KR1020210005215 A KR 1020210005215A KR 20210005215 A KR20210005215 A KR 20210005215A KR 20220102824 A KR20220102824 A KR 20220102824A
Authority
KR
South Korea
Prior art keywords
circuit
function
semiconductor device
input value
value
Prior art date
Application number
KR1020210005215A
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 KR1020210005215A priority Critical patent/KR20220102824A/ko
Priority to US17/469,857 priority patent/US20220222251A1/en
Publication of KR20220102824A publication Critical patent/KR20220102824A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/556Logarithmic or exponential functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • 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
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • 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/544Methods 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 for evaluating functions by calculation
    • 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

Landscapes

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

Abstract

본 기술에 의한 반도체 장치는 함수값의 일정한 범위를 다수의 구간으로 구분하고 상기 다수의 구간에 대응하는 다수의 입력값을 저장하는 룩업 테이블; 및 룩업 테이블에서 주어진 입력값이 포함된 구간을 찾아 주어진 입력값에 대응하는 함수값을 생성하는 연산 회로를 포함한다.

Description

룩업 테이블을 이용하여 비선형 함수를 연산하는 반도체 장치{SEMICONDUCOR DEVICE FOR CALCULATING NON-LINEAR FUNCTION USING A LOOK-UP TABLE}
본 기술은 룩업 테이블을 이용하여 비선형 함수를 연산하는 반도체 장치에 관한 것이다.
CPU, GPU, 가속기 등을 이용한 신경망 연산에서 부동 소수점 체계의 수를 많이 사용하고 있다.
부동 소수점 형식의 일종인 Bfloat16은 16비트를 이용하여 숫자를 표시하는 방식인데 사인 비트 1개, 지수(exponent) 비트 8개, 가수(mantissa) 비트 7개를 포함한다.
신경망 연산 과정에서는 가중치 벡터와 입력 벡터를 이용한 곱셈 및 누적(MAC) 연산 결과를 입력으로 사용하는 활성화 함수 연산이 수행된다.
이때 활성화 함수는 일반적으로 비선형 함수로서 연산을 위해 룩업 테이블(LUT)을 이용할 수 있다.
종래의 기술에서는 자연수 내지 고정 소수점 방식의 숫자를 기반으로 하며 입력값(x)의 범위를 균등하게 나누고 이에 대응하는 함수값(y=f(x))을 미리 연산하여 룩업 테이블에 저장한다.
예를 들어 입력값의 범위가 0부터 5까지인 경우 입력값 0, 1, 2, 3, 4, 5에 대응하는 함수값을 미리 연산하고 미리 연산된 함수값을 룩업 테이블의 대응하는 주소에 저장한다.
부동 소수점 형식의 숫자는 지수가 1증가할 때마다 입력값 사이의 간격이 2배씩 증가한다. 즉 숫자의 형식상 입력값 사이의 간격을 균등하게 분배하기 어렵다.
이에 따라 부동 소수점 형식의 숫자를 이용하여 종래와 같이 입력값을 균등하게 구분하여 생성한 룩업 테이블을 참조하는 경우 함수값의 정확도에 큰 오차가 발생할 수 있다.
또한 입력값은 무한대의 범위를 가질 수 있으므로 연산의 정확도를 높이기 위해서는 룩업 테이블의 크기가 과도하게 증가할 수 있다.
KR 10-0498457 B1 US 2019/0384575 A1
Vangal, S. R. et al. "A 6.2-GFlops Floating-Point Multiply-Accumulator With Conditional Normalization." IEEE Journal of Solid-State Circuits 41 (2006): 2314-2323. Z. Luo and M. Martonosi, "Accelerating pipelined integer and floating-point accumulations in configurable hardware with delayed addition techniques," in IEEE Transactions on Computers, vol. 49, no. 3, pp. 208-218, March 2000, doi: 10.1109/12.841125.
본 기술은 부동 소수점 형식의 숫자가 입력값으로 제공되는 비선형 함수 연산에서 룩업 테이블을 사용하여 비선형 함수를 연산하는 반도체 장치를 제공한다.
본 발명의 일 실시예에 의한 반도체 장치는 함수값의 일정한 범위를 다수의 구간으로 구분하고 상기 다수의 구간에 대응하는 다수의 입력값을 저장하는 룩업 테이블; 및 룩업 테이블에서 주어진 입력값이 포함된 구간을 찾아 주어진 입력값에 대응하는 함수값을 생성하는 연산 회로를 포함한다.
본 기술을 통해 룩업 테이블을 이용하여 부동 소수점 형식의 숫자를 입력으로 하는 비선형 함수 연산의 정확도를 높일 수 있다.
본 기술을 통해 룩업 테이블의 저장 공간, 연산을 위한 추가 회로 면적을 과도하게 증가시키지 않으면서 연산의 정확도를 높일 수 있다.
도 1은 본 발명의 일 실시예에 의한 반도체 장치를 나타내는 블록도.
도 2는 비선형 함수의 일예를 나타내는 그래프.
도 3은 본 발명의 일 실시예에 의한 룩업 테이블을 나타내는 블록도.
도 4는 룩업 테이블의 주소와 대응하는 함수값의 관계를 나타내는 도표.
도 5는 본 발명의 일 실시예에 의한 연산 회로를 나타내는 블록도.
도 6은 본 발명의 다른 실시예에 의한 연산 회로를 나타내는 블록도.
도 7은 본 발명의 다른 실시예에 의한 반도체 장치를 나타내는 블록도.
이하에서는 첨부한 도면을 참조하여 본 발명의 실시예를 개시한다.
도 1은 본 발명의 일 실시예에 의한 반도체 장치(1000)를 나타내는 블록도이다.
반도체 장치(1000)는 룩업 테이블(100), 연산 회로(200), 제어 회로(300)를 포함한다.
본 실시예에서 룩업 테이블(100)은 주소에 대응하는 입력값(x)을 저장하는 점에서 종래의 기술과 상이하다.
룩업 테이블(100)의 구성과 이를 생성하는 방법에 대해서는 이하에서 구체적으로 개시한다.
연산 회로(200)는 룩업 테이블(100)을 조회하여 입력값(x)에 대응하는 함수값(y = f(x))을 출력한다.
연산 회로(200)는 신경망 연산에 많이 사용되는 곱셈 및 누적(MAC) 연산을 포함하는 일반 연산을 더 수행할 수 있다
예를 들어 연산 회로(200)는 두 벡터 사이의 MAC 연산을 수행하고 그 결과를 입력값으로 하는 함수값을 결정할 수 있다.
제어 회로(300)는 연산 회로(200)를 제어하여 함수 연산 또는 일반 연산을 수행하도록 제어할 수 있다.
도 2는 비선형 함수의 일예를 나타내는 그래프이다.
도 2의 그래프는 신경망 연산에서 활성화 함수로 사용되는 하이퍼 탄젠트 함수를 나타낸다.
하이퍼 탄젠트 함수는 x = 0을 중심으로 대칭적인 특징을 가지며 단조 증가하는 특성을 가진다.
본 실시예에서는 대칭성을 이용하여 함수값(y)이 0 이상인 경우만을 고려하여 룩업 테이블(100)을 생성한다.
먼저 함수값의 범위 즉 0에서 최대값 1 사이를 균등하게 분할한다.
본 실시예에서는 총 8개의 구간으로 나누며 각 구간의 크기는 1/8이 된다.
각 구간의 시작점은 룩업 테이블(100)의 주소에 대응한다.
예를 들어 함수값 y0 = f(x0)은 룩업 테이블의 주소 "000"에 대응하고 함수값 y7 = f(x7)은 룩업 테이블의 주소 "111"에 대응한다.
본 실시예에서는 룩업 테이블(100)에 함수값을 저장하는 것이 아니라 함수값에 대응하는 입력값(x)을 저장한다.
이에 따라 예를 들어 함수값 f(x0)에 대응하는 x0가 룩업 테이블의 주소 "000"에 저장되고 함수값 f(x7)에 대응하는 x7이 룩업 테이블의 주소 "111"에 저장된다.
이때 입력값은 하이퍼 탄젠트의 역함수를 미리 계산하여 결정된 값에 대응한다.
도 3은 도 2의 비선형 함수에 대응하는 룩업 테이블(100)을 나타낸다.
본 실시예에서 입력값(x)은 Bfloat16 형식으로 저장될 수 있다.
Bfloat16 데이터는 0번 부터 15번까지의 16비트 데이터로서 0번에서 6번까지의 7비트는 가수(mantissa) 비트, 7번에서 14번까지의 8비트는 지수(exponent) 비트, 15번 비트는 부호(sign) 비트에 대응한다.
가수 비트의 크기를 S, 가수 비트를 M, 지수 비트의 크기를 E으로 나타내는 경우 이에 대응하는 부동 소수는 다음 수학식 1로 표현될 수 있다.
Figure pat00001
예를 들어 가수 비트가 "0101010"인 경우 수학식 1에서 1.M은 1.0101010을 나타낸다.
도 1로 돌아가 연산 회로(200)는 룩업 테이블(100)을 조회하여 입력값이 속하는 구간에 대응하는 주소를 찾는다.
도 2와 같이 입력값이 0.875인 경우 대응하는 함수값은 주소 "101"에 대응하는 제 1 함수값과 주소 "110"에 대응하는 제 2 함수값의 사이에 존재한다.
연산 회로(200)는 제 1 함수값 또는 제 2 함수값을 입력값에 대응하는 함수값으로 결정할 수 있다.
구간의 개수가 충분히 큰 경우 제 1 함수값과 제 2 함수값의 차이가 작아지므로 제 1 함수값과 제 2 함수값 중 어느 하나를 선택하여도 실제 함수값과의 오차는 충분히 작아진다.
또 다른 실시에에서 연산 회로(200)는 제 1 함수값과 제 2 함수값을 보간하여 입력값에 대응하는 함수값으로 결정할 수 있다. 이때 보간 기법은 종래에 알려진 기법을 적용할 수 있다.
이하의 개시는 입력값(x)에 대응하는 함수값을 제 2 함수값으로 결정하는 것을 전제로한다.
본 실시예에서는 함수값의 범위를 균등하게 분할하므로 함수값와 주소의 관계를 간단한 연산을 통해 미리 알 수 있다.
즉 입력값에 대응하는 주소를 찾는 경우 해당 주소를 이용하여 입력값에 대응하는 함수값을 바로 도출할 수 있다.
예를 들어 최소값을 m, 최대값을 M, 전체 구간 개수를 N, 입력값이 속하는 구간의 번호를 A(A는 1 이상의 자연수)라고 하면 함수값은 다음과 같이 계산할 수 있다.
Figure pat00002
도 4는 룩업 테이블(100)의 주소와 대응하는 함수값의 관계를 나타내는 테이블이다.
도 4는 도 2의 그래프를 기준으로 하되 룩업 테이블(100)의 주소가 5비트인 점에서 차이가 있다.
이때 함수값의 최소값과 최대값은 미리 알고 있는 것으로 가정하는데 도 4에서 최소값은 0, 최대값은 1이다.
이에 따라 연속된 두 주소 사이의 함수값 간격은 1/32 = 0.03125이 된다.
도 4에서 각 주소에 대응하는 함수값은 주소 우측에 기재된 것과 같다.
도 4의 (a)는 각 주소에 대응하는 함수값을 Bfloat16 형태로 나타낸 것이다.
함수값을 Bfloat16 형식으로 변환하는 기법은 잘 알려진 것이므로 구체적인 설명을 생략한다.
도 4(a)에서 반전되어 표시된 부분은 주소에 대응하여 값이 달라지는 비트를 나타낸다.
주소를 이용하여 Bfloat16 형식의 함수값을 바로 도출할 수 있는 방법은 없다.
이에 따라 본 발명에서는 도 4(a)의 Bfloat16 형식의 숫자를 도 4(b)와 같은 형식의 숫자로 변환한다.
도 4(b)에서 지수 비트는 Bfloat16 형식에서 상위 5개의 지수 비트에 대응하고, 가수 비트는 총 16비트로 확장되었다.
도 4(b)는 총 22비트인데 이는 연산 회로(200)에서 연산 과정에서 사용되는 숫자의 비트 수와 일치한다.
도 4(b)의 가수는 주소와 일치하는 비트 배열을 포함하는데 이와 같은 형태가 되도록 도 4(a)의 Bfloat16 형식에서 도 4(b)에 도시된 형식으로 숫자를 변환하는 기술은 비인용문헌 1, 2 등을 통해 잘 알려진 기술이다.
이와 같이 연산 회로(200)는 입력값에 대응하는 주소를 찾는 경우 이를 통해 도 4(b)와 같은 형태의 숫자를 저장할 수 있다.
연산 회로(200)가 함수값을 출력하는 경우에는 내부에 저장된 도 4(b)와 같은 형식의 숫자를 Bfloat16 형식으로 변환하여 출력할 수 있다.
도 5는 본 발명의 일 실시예에 의한 연산 회로(200)를 나타내는 블록도이다.
연산 회로(200)는 입력값에 대응하는 함수값을 제공하는 함수 연산 뿐만 아니라 다양한 일반 연산을 수행할 수 있다.
연산 회로(200)는 제 1 레지스터(210), 제 2 레지스터(220), 제 1 변환 회로(230), ALU(240), 제 2 변환 회로(250)를 포함한다.
제 1 레지스터(210)는 Bfloat16 형식의 제 1 입력값(A)을 저장하고, 제 2 레지스터(220)는 Bfloat16 형식의 제 2 입력값(B)을 저장한다.
함수 연산이 아닌 일반 연산을 수행하는 경우 제 1 레지스터(210)와 제 2 레지스터(220)는 두 개의 피연산자를 저장한다.
함수 연산을 수행하는 경우 제 1 레지스터(210)는 룩업 테이블(100)에 저장된 입력값(xi)을 저장하고, 제 2 레지스터(220)는 입력값(x)을 저장한다.
제 1 변환 회로(230)는 도 4에 도시된 바와 같이 현재 룩업 테이블(100)의 주소를 도 4(b)와 같은 형식의 숫자로 변환한다.
제 1 변환 회로(230)는 변환 과정에서 제어 회로(300)에서 제공된 함수 정보(FT)를 이용할 수 있다.
제어 정보(CI)는 함수의 종류, 함수의 대칭성 정보, 함수값의 최소값 및 최대값 정보, 함수 연산 신호(FC)를 포함할 수 있다.
제 2 변환 회로(250)는 도 4(b) 형식의 숫자를 Bfloat16 형식으로 변환하여 출력한다.
제 1 변환 회로(230)와 제 2 변환 회로(250)의 구체적인 변환 기법은 도 4를 참조하여 설명한 바와 같으므로 구체적인 설명은 생략한다.
ALU(240)는 계산 회로(241), 누적기(242), 부호 조절 회로(243), 선택 회로(244), 선택 제어 회로(245)를 포함한다.
계산 회로(241)는 제어 회로(300)에 제공되는 연산 선택 신호(CS)에 따라 제 1 레지스터(210), 제 2 레지스터(220), 누적기(242)에 저장된 값을 입력으로 하는 다양한 연산을 수행할 수 있다.
이들에 저장된 값을 A, B, ACC라고 하면 예를 들어, A + B, A - B, A X B + ACC, ACC + A, ACC + B, ACC - A, ACC - B 등의 다양한 연산을 수행할 수 있다.
계산 회로(241)는 연속된 계산시 발생하는 오차를 줄이기 위하여 계산 결과를 22비트로 확장하여 출력할 수 있다.
22비트의 데이터는 예를 들어 Bfloat16 형식의 숫자에서 가수 비트와 지수 비트를 각각 증가시킨 형태일 수 있다.
선택 회로(244)는 계산 회로(241)의 출력 또는 부호 조절 회로(243)의 출력을 선택하여 출력한다.
선택 제어 회로(245)는 MAC 연산 등의 일반 연산을 수행하는 경우에 계산 회로(241)의 출력을 선택하도록 선택 회로(244)를 제어한다.
선택 제어 회로(245)는 함수 연산을 수행하는 경우 부호 비트(S)가 0이면 계산 회로(242)의 출력을 선택하고 부호 비트(S)가 1이면 부호 조절 회로(243)의 출력을 선택하도록 선택 회로(244)를 제어한다.
부호 비트(S)는 계산 회로(241)의 출력 데이터의 부호 비트(S)에 대응한다.
제어 회로(300)는 함수 연산 신호(FC)를 제공하여 함수 연산 또는 일반 연산을 지시할 수 있다.
일반 연산 중 MAC 연산을 수행하기 위해서 제 1 레지스터(210)와 제 2 레지스터(220)는 두 벡터의 원소를 순차적으로 입력받는다.
계산 회로(241)는 대응하는 두 원소를 곱하고 이를 누적기(242)에 저장된 값(ACC)과 더한 결과를 출력한다.
계산 회로(241)에서 수행하는 구체적인 연산 동작은 제어 회로(300)에서 제공된 연산 선택 신호(CS)에 따라 선택될 수 있다.
선택 회로(244)는 계산 회로(241)의 출력을 누적기(242)에 제공하고 누적기(242)는 선택 회로(244)의 출력을 이용하여 저장된 값을 갱신한다.
이러한 연산을 다수의 원소에 대해서 순차적으로 진행하여 두 벡터에 대한 MAC 연산이 완료될 수 있다.
제 2 변환 회로(250)는 누적기(246)에서 출력된 22비트의 데이터에서 지수 비트, 가수 비트를 Bfloat16 형식에 맞게 조절하여 연산 결과를 출력할 수 있다.
다음으로 함수 연산 동작을 개시한다.
함수 연산 시 제 2 레지스터(220)는 입력값(x)을 저장한다.
함수 연산 시 제 1 레지스터(210)는 룩업 테이블(100)에 저장된 입력값(xi)을 순차적으로 저장한다.
제어 회로(300)는 룩업 테이블(100)에 저장된 입력값(xi)을 순차적으로 읽어 제 1 레지스터(210)에 저장할 수 있다.
다른 실시예에서 제 1 레지스터(210)의 저장 공간을 증가시켜 룩업 테이블(100)에 저장된 다수의 입력값을 제 1 레지스터(210)에 저장할 수 있고 제 1 레지스터(210)에서 저장된 입력값을 순차적으로 출력하도록 제어할 수도 있다.
계산 회로(241)는 입력값(x)에서 저장된 입력값(xi)을 빼는 연산을 수행한다. 이 역시 제어 회로(300)에서 제공되는 연산 선택 신호(CS)에 따라 제어될 수 있다.
입력값(x)이 더 크면 계산 회로(241)에서 출력된 데이터의 사인 비트(S)는 0, 저장된 입력값(xi)이 더 크면 사인 비트(S)는 1이 된다.
사인 비트(S)가 0이면 룩업 테이블(100)에서 다음에 저장된 입력값(xi)을 이용하여 위의 동작을 반복한다.
이러한 반복 동작은 제어 회로(300)의 주소 카운트 동작에 따라 진행될 수 있다. 이때 룩업 테이블(100)의 주소는 연산 회로(200)에 제공된다.
사인 비트(S)가 1이 되면 전술한 동작이 종료된다.
예를 들어 도 2, 3을 참조하면 입력값(x)이 0.875이면 저장된 입력값이 x6이 되었을때 사인 비트(S)가 1이 된다.
제 1 변환 회로(230)는 룩업 테이블(100)에서 제공된 입력값(xi)에 대응하는 주소를 도 4(b)와 같은 형식으로 변환하여 출력한다.
부호 조절 회로(243)는 함수의 대칭성, 입력값(x)의 사인 비트(BS)를 참조하여 제 1 변환 회로(230)의 출력에서 부호를 조절하여 올바른 함수값을 출력한다.
함수의 대칭성에 관한 정보는 전술한 제어 정보(CI)를 참조할 수 있는데 이는 제 1 변환 회로(230)를 통해 제공받거나 제어 회로(300)에서 제공받을 수 있다.
이때 선택 제어 회로(245)는 부호 조절 회로(243)의 출력을 선택하고 누적기(242)는 부호 조절 회로(243)의 출력을 저장한다.
누적기(242)에 저장된 값(ACC)은 도 4(b)와 같은 형식을 가지며, 제 2 변환 회로(250)는 이를 도 4(a)와 같은 Bfloat16 형식으로 변환하여 출력할 수 있다.
도 6은 본 발명의 다른 실시예에 의한 연산 회로(200-1)를 나타내는 블록도이다.
도 6의 실시예에서 제 1 레지스터(210-1)와 2 레지스터(220-1)는 각각 16비트 원소를 8개씩 저장하는 점에서 도 5의 실시예와 상이하다.
연산 회로(200-1)는 8개의 ALU(240-1 ~ 240-8)를 포함하며 각각 대응하는 원소에 대한 연산을 병렬하여 수행할 수 있다.
다수의 ALU 각각의 구성 및 동작은 도 5에 도시한 것과 실질적으로 동일하므로 반복적인 설명은 생략한다.
다수의 ALU를 이용하여 일반 연산을 병렬적으로 수행하는 것은 도 5의 실시예로부터 용이하게 알 수 있으므로 구체적인 설명을 생략한다.
다수의 ALU를 이용하여 다수의 함수 연산을 병렬적으로 수행하는 것 역시 전술한 개시로부터 자명하다.
함수 연산 과정에서 제 1 변환 회로(230)는 룩업 테이블(100)의 현재 주소에 대응하는 함수값을 도 4(b)와 같은 형식으로 변환하여 다수의 ALU에 공통적으로 제공한다.
다수의 ALU는 각각 부호 비트(S)에 따라 제 1 변환 회로(230)의 출력에서 부호를 조절한 후 내부의 누적기에 저장할 수 있다.
제 2 변환 회로(250)는 다수의 ALU의 누적기에 저장된 값을 Bfloat16 형식으로 변환하여 출력한다.
이상의 개시는 단조 증가 또는 단조 감소하는 비선형 함수를 전제로 하지만 이상의 기술은 임의의 비선형 함수로 확장될 수 있다.
예를 들어 함수값이 단조 감소하거나 단조 증가하는지를 기준으로 입력값을 다수의 구간으로 분할하고 각 구간마다 독립적으로 룩업 테이블을 생성할 수 있다.
도 7은 본 발명의 다른 실시예에 의한 반도체 장치(1000-1)를 나타내는 블록도이다.
다수의 룩업 테이블(100-1 ~ 100-N)은 각각 함수값이 단조 증가 또는 단조 감소하는 구간에 대응한다.
각각의 룩업 테이블의 생성 방법 및 이를 이용한 함수 연산 방법은 전술한 바와 실질적으로 동일하므로 구체적인 설명은 생략한다.
본 발명의 권리범위는 이상의 개시로 한정되는 것은 아니다. 본 발명의 권리범위는 청구범위에 문언적으로 기재된 범위와 그 균등범위를 기준으로 해석되어야 한다.
100, 100-1, 100-N: 룩업 테이블
200: 연산 회로
300: 제어 회로
210: 제 1 레지스터
220: 제 2 레지스터
230: 제 1 변환 회로
240: ALU
250: 제 2 변환 회로
241: 계산 회로
242: 누적기
243: 부호 조절 회로
244: 선택 회로
245: 선택 제어 회로

Claims (12)

  1. 함수값의 일정한 범위를 다수의 구간으로 구분하고 상기 다수의 구간에 대응하는 다수의 입력값을 저장하는 룩업 테이블; 및
    상기 룩업 테이블에서 주어진 입력값이 포함된 구간을 찾아 상기 주어진 입력값에 대응하는 함수값을 생성하는 연산 회로
    를 포함하는 반도체 장치.
  2. 청구항 1에 있어서, 상기 다수의 입력값은 각각 상기 다수의 구간 중 어느 하나의 경계에 대응하는 반도체 장치.
  3. 청구항 2에 있어서, 상기 연산 회로는 상기 주어진 입력값이 포함된 구간의 경계에 대응하는 제 1 함수값 또는 제 2 함수값 중 어느 하나를 상기 대응하는 함수값으로 결정하는 반도체 장치.
  4. 청구항 2에 있어서, 상기 연산 회로는 상기 주어진 입력값이 포함된 구간의 경계에 대응하는 제 1 함수값과 제 2 함수값을 보간하여 상기 대응하는 함수값으로 결정하는 반도체 장치.
  5. 청구항 1에 있어서, 상기 연산 회로는 상기 룩업 테이블의 주소를 순차적으로 조회하여 상기 주어진 입력값이 포함된 구간을 발견하는 반도체 장치.
  6. 청구항 5에 있어서, 상기 연산 회로는
    룩업 테이블의 현재 주소에 대응하는 함수값을 출력하는 제 1 변환 회로; 및
    상기 주어진 입력값, 상기 현재 주소에 대응하여 저장된 입력값에 따라 상기 제 1 변환 회로의 출력을 저장하는 ALU
    를 포함하는 반도체 장치.
  7. 청구항 6에 있어서, 상기 ALU는
    상기 주어진 입력값과 상기 현재 주소에 대응하여 저장된 입력값에 대해서 뺄셈 연산을 수행하는 계산 회로; 및
    상기 계산 회로에서 출력된 신호의 부호에 따라 상기 제 1 변환 회로의 출력을 저장하는 누적기
    를 포함하는 반도체 장치.
  8. 청구항 7에 있어서, 상기 룩업 테이블의 상기 현재 주소를 지정하는 제어 회로를 더 포함하는 반도체 장치.
  9. 청구항 8에 있어서, 상기 제어 회로는 상기 뺄셈 결과 부호가 변경될 때까지 상기 현재 주소를 순차적으로 증가시키는 반도체 장치.
  10. 청구항 7에 있어서, 상기 ALU는 상기 계산 회로의 출력 결과에서 부호 비트에 따라 상기 계산 회로의 출력 또는 상기 제 1 변환 회로의 출력을 선택하여 상기 누적기에 제공하는 선택 회로를 더 포함하는 반도체 장치.
  11. 청구항 10에 있어서, 상기 주어진 입력값의 부호 비트와 상기 함수의 대칭성을 참조하여 상기 제 1 변환 회로의 출력의 부호를 조절하여 상기 선택 회로에 제공하는 부호 조절 회로를 더 포함하는 반도체 장치.
  12. 청구항 6에 있어서, 상기 저장된 입력값을 저장하는 제 1 레지스터와 상기 주어진 입력값을 저장하는 제 2 레지스터를 더 포함하는 반도체 장치.



KR1020210005215A 2021-01-14 2021-01-14 룩업 테이블을 이용하여 비선형 함수를 연산하는 반도체 장치 KR20220102824A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210005215A KR20220102824A (ko) 2021-01-14 2021-01-14 룩업 테이블을 이용하여 비선형 함수를 연산하는 반도체 장치
US17/469,857 US20220222251A1 (en) 2021-01-14 2021-09-08 Semiconducor device for computing non-linear function using a look-up table

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210005215A KR20220102824A (ko) 2021-01-14 2021-01-14 룩업 테이블을 이용하여 비선형 함수를 연산하는 반도체 장치

Publications (1)

Publication Number Publication Date
KR20220102824A true KR20220102824A (ko) 2022-07-21

Family

ID=82323096

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210005215A KR20220102824A (ko) 2021-01-14 2021-01-14 룩업 테이블을 이용하여 비선형 함수를 연산하는 반도체 장치

Country Status (2)

Country Link
US (1) US20220222251A1 (ko)
KR (1) KR20220102824A (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100498457B1 (ko) 2002-11-11 2005-07-01 삼성전자주식회사 메모리를 감소시키는 개선된 룩업 테이블 압축방법 및이를 이용하여 압축된 룩업 테이블을 가지는 비선형 함수발생장치 및 그 발생방법
US20190384575A1 (en) 2019-08-30 2019-12-19 Intel Corporation System to perform unary functions using range-specific coefficient sets

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100498457B1 (ko) 2002-11-11 2005-07-01 삼성전자주식회사 메모리를 감소시키는 개선된 룩업 테이블 압축방법 및이를 이용하여 압축된 룩업 테이블을 가지는 비선형 함수발생장치 및 그 발생방법
US20190384575A1 (en) 2019-08-30 2019-12-19 Intel Corporation System to perform unary functions using range-specific coefficient sets

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Vangal, S. R. et al. "A 6.2-GFlops Floating-Point Multiply-Accumulator With Conditional Normalization." IEEE Journal of Solid-State Circuits 41 (2006): 2314-2323.
Z. Luo and M. Martonosi, "Accelerating pipelined integer and floating-point accumulations in configurable hardware with delayed addition techniques," in IEEE Transactions on Computers, vol. 49, no. 3, pp. 208-218, March 2000, doi: 10.1109/12.841125.

Also Published As

Publication number Publication date
US20220222251A1 (en) 2022-07-14

Similar Documents

Publication Publication Date Title
CN108021537B (zh) 一种基于硬件平台的softmax函数计算方法
US7472149B2 (en) Arithmetic unit for approximating function
WO2020060769A1 (en) Multiply and accumulate circuit
US20030005006A1 (en) Fast system and method for producing a logarithmic signal approximation with variable precision
CN111915003A (zh) 一种神经网络硬件加速器
US6108682A (en) Division and/or square root calculating circuit
EP0372566A2 (en) Reciprocal arithmetic circuit with ROM table
CN111695671A (zh) 训练神经网络的方法及装置、电子设备
CN112651496A (zh) 一种处理激活函数的硬件电路及芯片
KR20220102824A (ko) 룩업 테이블을 이용하여 비선형 함수를 연산하는 반도체 장치
CN109379191B (zh) 一种基于椭圆曲线基点的点乘运算电路和方法
KR100326746B1 (ko) 비선형함수를근사시키기위한시스템및방법
US20200192633A1 (en) Arithmetic processing device and method of controlling arithmetic processing device
CN110837624A (zh) 一种针对sigmoid函数的近似计算装置
US20190171419A1 (en) Arithmetic processing device and control method of arithmetic processing device
CN114860193A (zh) 一种用于计算Power函数的硬件运算电路及数据处理方法
KR20160033550A (ko) 표현 가능한 수의 범위를 조절하는 방법 및 장치
JP3304257B2 (ja) ファジイ規則の前件部の帰属度を計算するための装置
KR20070018981A (ko) 복소수 로그 alu
EP1710690A1 (en) Multiplication circuitry
Hsiao et al. Multi-Precision Table-Addition Designs for Computing Nonlinear Functions in Deep Neural Networks
CN116227507B (zh) 一种用于进行双线性插值处理的运算装置
US11347478B2 (en) Analog arithmetic unit
US20210382694A1 (en) Method and device for finding square root
US11604854B2 (en) Apparatus and method for performing linear interpolation

Legal Events

Date Code Title Description
A201 Request for examination