KR20200032005A - 산술 논리 유닛, 데이터 처리 시스템, 방법 및 모듈 - Google Patents

산술 논리 유닛, 데이터 처리 시스템, 방법 및 모듈 Download PDF

Info

Publication number
KR20200032005A
KR20200032005A KR1020190113463A KR20190113463A KR20200032005A KR 20200032005 A KR20200032005 A KR 20200032005A KR 1020190113463 A KR1020190113463 A KR 1020190113463A KR 20190113463 A KR20190113463 A KR 20190113463A KR 20200032005 A KR20200032005 A KR 20200032005A
Authority
KR
South Korea
Prior art keywords
unit
input
difference
determining
output
Prior art date
Application number
KR1020190113463A
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 애피컬 리미티드
Publication of KR20200032005A publication Critical patent/KR20200032005A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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
    • 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
    • G06F7/4833Logarithmic number system
    • 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/5235Multiplying only using indirect methods, e.g. quarter square method, via logarithmic domain
    • 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/5443Sum of products
    • 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
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Nonlinear Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Neurology (AREA)
  • Memory System (AREA)
  • Complex Calculations (AREA)

Abstract

가산 논리 유닛(300)은 제1 입력(310a) 및 제2 입력(310b)의 합(320i)을 결정하기 위한 가산 유닛(320); 및 합(320i) 및 제3 입력(310c)을 사용하여 출력(340)을 결정하기 위한 대수 가산 유닛(330)을 포함한다. 출력(340)은 제1 입력(310a), 제2 입력(310b) 및 제3 입력(310c)이 대수 도메인으로 표현되는 경우에 대수 도메인으로 표현되는 곱셈 누산 출력이다.

Description

산술 논리 유닛, 데이터 처리 시스템, 방법 및 모듈{ARITHMETIC LOGIC UNIT, DATA PROCESSING SYSTEM, METHOD AND MODULE}
본 발명은 산술 논리 유닛, 데이터 처리 모듈, 시스템 및 방법에 관한 것이다. 보다 구체적으로, 산술 논리 유닛, 데이터 처리 모듈, 시스템 및 방법은 대수 도메인에서 동작하며, 입력 및 출력은 대수 도메인에 있다.
최신 컴퓨팅 장치에 의해 수행되는 많은 기능 및 프로세스는 종종 장치의 하드웨어 내에서 기능의 구현을 요구한다. 보다 작은 장치에서 속도와 처리 능력이 향상되어야 한다는 것은 각 기능에 필요한 영역을 감소할 필요가 있다는 것을 의미한다. 특히 신경망의 출현으로, 신경망 가속기가 점점 일반화되고 있다. 신경망 가속기는 전형적으로 각각 하나 이상의 곱셈기 누산기('MAC') 유닛을 포함하는 다수의 산술 논리 유닛('ALU')을 포함한다. 일반적인 MAC 유닛(100)은 도 1에 도시된다. MAC 유닛(100)은 복수개의 입력(110a, 110b, 110c)을 수신하도록 배치되어, 곱셈 누산 동작을 수행한다:
(수식 1)
d = a * b + c
MAC 유닛(100)은 곱셈부(120), 및 가산부(130)를 포함한다. MAC 유닛(100)이 16 비트 입력(110a, 110b, 110c)을 수신하도록 구성된 경우, 곱셈부(120)는 15 개의 16 비트 가산기를 포함할 것이고, 가산부(130)는 하나의 32 비트 가산기를 포함할 것이다. 결과적으로, 하나의 MAC 유닛(100)은 ALU 내에서 비교적 넓은 영역을 필요로 한다. 따라서, 더 많은 수의 MAC 유닛(100)이 단일 ALU 내에 포함될 수 있도록 각 MAC 유닛(100)에 의해 요구되는 영역을 감소시키고, 따라서 특정 장치의 처리 능력 및 속도를 증가시키는 것이 바람직하다.
본 발명의 제1 양태에 따르면, 산술 논리 유닛이 제공되며, 상기 산술 논리 유닛은: 제1 입력과 제2 입력의 합을 결정하기 위한 가산 유닛; 및 합과 제3 입력을 사용하여 출력을 결정하기 위한 대수 가산 유닛을 포함하고, 출력은 제1, 제2 및 제3 입력이 대수 도메인으로 표현되는 경우에 대수 도메인으로 표현되는 곱셈 누산 출력이다.
본 발명의 제2 양태에 따르면, 데이터 처리 시스템이 제공되며, 상기 데이터 처리 시스템은 프로세서; 하나 이상의 산술 논리 유닛을 포함하는 신경망 가속기; 및 저장 장치를 포함하며, 상기 산술 논리 유닛은 대수 도메인에서 데이터 처리 동작을 수행하도록 구성된다.
본 발명의 제3 양태에 따르면, 출력을 생성하기 위한 데이터 처리 모듈이 제공되며, 상기 모듈은: 제1 입력과 제2 입력 사이의 최대값을 결정하기 위한 최대 검출 유닛; 상기 제1 입력과 상기 제2 입력 사이의 차이를 결정하기 위한 차이 유닛; 및 상기 차이의 정수 부분과 분수 부분을 결정하기 위한 분수 분리 유닛을 포함하며, 여기서 출력은 제1 입력 및 제2 입력이 대수 도메인으로 표현되는 경우 대수 도메인으로 표현된다.
본 발명의 제4 양태에 따르면, 데이터 처리 방법이 제공되며, 상기 방법은 제1 입력 및 제2 입력을 수신하는 단계; 제1 입력과 제2 입력 사이의 최대값을 결정하는 단계; 제1 입력과 제2 입력 사이의 차이를 결정하는 단계; 상기 차이의 정수 부분 및 분수 부분을 결정하는 단계; 분수 부분의 역수를 계산하는 단계; 정수 부분만큼 역을 시프트하여 시프트된 값을 생성하는 단계; 데이터 프로세서에 의해 사용하기 위한 출력을 생성하기 위해 시프트된 값 및 최대값을 추가하는 단계를 포함하며, 여기서 출력은 제1 입력 및 제2 입력이 대수 도메인으로 표현되는 경우 대수 도메인으로 표현된다.
추가의 특징은 단지 예로서 주어진 다음의 설명으로부터 명백해질 것이며, 첨부 도면을 참조하여 유사한 참조 번호가 유사한 특징을 나타 내기 위해 사용된다.
도 1은 공지된 승산기 누산기 유닛을 개략적으로 도시한다;
도 2는 예에 따른 데이터 처리 방법을 도시한 흐름도;
도 3은 예에 따른 승신기 누산기 유닛을 개략적으로 도시한다;
도 4는 예에 따른 도 3의 승산기 누산기 유닛의 대수 가산 모듈의 내부 구성 요소를 개략적으로 도시한다;
도 5는 예에 따른 산술 논리 유닛을 개략적으로 도시한다;
도 6은 도 2의 신경망 가속기의 내부 구성 요소를 개략적으로 도시한다; 및
도 7은 예에 따른 데이터 처리 방법과 함께 사용하기 위한 컴퓨터 장치를 개략적으로 도시한다.
예에 따른 방법, 시스템, 모듈 및 산술 논리 유닛의 세부 사항은 도면을 참조하여 다음의 설명으로부터 명백해질 것이다. 설명의 목적으로 이 설명에서, 특정 예의 수개의 특정 세부 사항이 설명된다. 본 명세서에서 '예' 또는 유사한 언어에 대한 언급은 예와 관련하여 기술된 특정 특징, 구조 또는 특성이 적어도 하나의 예에 포함되지만 반드시 다른 예에 포함되는 것은 아님을 의미한다. 또한, 특정 예는 특정 특징이 생략되고 및/또는 반드시 간략화되어 예시의 기초가 되는 개념의 이해 및 이해를 용이하게 하기 위해 개략적으로 설명됨에 유의해야 한다.
도 2는 예에 따른 데이터 처리 방법(200)을 도시한 흐름도이다. 데이터 처리 방법(200)은 도 3의 MAC 유닛(이하 설명)과 같은 곱셈기-누산기(MAC)의 일부로서 구현될 수 있다.
데이터 처리 방법(200)의 아이템(210)에서, 제1 및 제2 입력이 수신된다. 제1 및 제2 입력은 대수 도메인으로 표현된 비트 값이다. 즉, 도 1에 도시된 입력(110a)과 같은 제1 입력은 다음과 같이 표현될 수 있다.
(수식 2)
Figure pat00001
유사하게, 도 1에 도시된 입력(110b)과 같은 제2 입력은 다음과 같이 표현 될 수있다.
(수식 3)
Figure pat00002
일부 실시예에서, 하나 이상의 입력이 이전 처리의 결과일 수 있으며, 예를 들어, 입력 중 하나는 처리 장치 또는 시스템에 대한 2 개의 다른 입력의 합일 수 있음을 이해할 것이다.
2 개의 입력을 수신하면, 2 개의 입력의 최대값은 단계 220에서 결정되어,
(수식 4)
Figure pat00003
또한, 단계 230에서 제1 입력과 제2 입력 사이의 차이가 또한 결정된다. 일부 실시예들에서, 단계 230에서, 차이의 절대 값이 계산된다. 방법에 대한 입력에 따라, 계산된 차이는 0보다 작을 수 있으며, 이 경우 차이의 절대값이 얻어질 수 있음을 이해할 것이다. 따라서:
(수식 5)
Figure pat00004
단계(240)에서, 단계(230)에서 계산된 차이의 정수 및 분수 부분이 결정된다. 일부 실시예들에서, 이것은 단계(230)로부터의 차이의 결과를 가장 가까운 전체 값으로 내림하고, 단계(230)에서 계산된 차이로부터 내림된 결과를 빼서 분수 부분을 결정함으로써 결정된다. 즉:
(수식 6)
Figure pat00005
(수식 7)
Figure pat00006
단계(250)에서, 차이의 소수 부분이 반전된다. 즉, 이진법으로 작동할 때 단계(250)에서의 반전 단계는 논리 NOT으로 작동한다. 예를 들어, 분수 부분이 00110011인 경우, 반전된 분수 부분은 11001100과 같다. 즉:
(수식 8)
Figure pat00007
반전된 분수 부분은 단계(260)에서 차이의 정수 부분과 동일한 수의 비트만큼 비트 시프트 라이트(bit-shifted right)된다. 그러나, 이진수에서, 이는 베이스 10(즉, 10 진수)에서 동작할 때 비트 시프트 라이트로 표시되고, 이는 정수 부분의 거듭 제곱을 2로 나눈 값을 나타내다. 즉, 이진수로:
(수식 9)
Figure pat00008
또는 십진수로 :
(수식 10)
Figure pat00009
단계(270)에서, 단계(260)에서 계산된 시프트된 값과 단계(220)에서 계산된 최대값이 함께 추가되고, 단계(280)에서 데이터 프로세서로 출력된다. 즉:
(수식 11)
Figure pat00010
요약하면, 방법(200)의 단계들(210 내지 280) 각각은 수학 방정식을 사용하여 표현되지만, 각각의 방정식 2 내지 11은 대수 도메인 가산을 수행되도록 하드웨어로, 예를 들어 AND, OR, NOR, XOR, 및 NOT 과 같은 논리 게이트의 사용을 통해 구현될 수 있다, 즉:
(수식 12)
Figure pat00011
도 3은 대수 도메인에서 사용하기 위한 MAC 유닛(300)을 개략적으로 도시한다. MAC 유닛(300)는 상술한 수식 2, 3의 A 및 B와 같은 대수 도메인으로 표현되는 3 개의 입력(310A, 310B, 310C)을 각각 수신한다. MAC 유닛(300)은 제1 모듈(320) 및 제2 모듈(330)을 포함한다. 제1 모듈(320)은 제1 입력(310a)과 제2 입력(310b) 사이의 곱셈을 결정하기 위한 가산 모듈이다. MAC 유닛이 대수 도메인에서 작동함에 따라 :
(수식 13)
Figure pat00012
따라서, 로그 도메인에서 동작하면 도 1의 곱셈부(120)와 같은 곱셈부에 대한 요구 사항이 제거된다. 16 비트 입력 값이 사용되는 경우, 도 1과 관련하여 위에서 언급한 15개의 16 비트 가산기는 더 이상 필요하지 않다.
그러나, MAC 유닛(300)는 대수 도메인에서 동작함에 따라, 도 1의 MAC 유닛(100)의 가산부(130)는 선형 도메인에서 가산 기능을 수행하도록 설계되었으므로 정확한 출력값(140)을 더 이상 제공하지 않을 수 있다. 따라서, 대수 가산 모듈(330)이 필요하다. 대수 가산 모듈(330)은 도 2와 관련하여 위에서 설명된 방법에 따라 출력(340)을 계산할 수 있다. 대수 가산 모듈(330)은 제1 모듈(320)로부터 중간 출력(320i) 및 대수 도메인으로 표현된 제3 입력(310c)을 수신한다. 이는 도 1 의 MAC 유닛(100)을 사용하여 선형 도메인에서 대응하는 출력(140)과 비교할 때 최대 상대 오차가 6 % 인 대수 도메인으로 표현된 출력(340)을 초래할 수 있고, 따라서 비용 및 전력 소비를 감소시키면서 정확한 결과를 보장할 수 있고, 프로세싱 장치가 동일한 영역에 더 많은 수의 MAC 유닛(300)을 포함하도록 한다.
일 실시예에서, 대수 가산 모듈(330)은 도 4와 같은 하드웨어로 구현될 수 있다. 도 4는 도 3의 MAC 유닛(300)의 대수 가산 모듈(330)의 내부 구성 요소의 예를 개략적으로 도시한다. 선형 도메인에서 실질적으로 동등한 곱셈 누산 함수와 비교할 때 오차 정도가 변하는, 대수 도메인에서의 곱셈 누산 함수에 기초하여 유사한 출력을 달성하기 위해 다른 방법 및 모듈이 사용될 수 있음을 이해해야 한다.
전술한 바와 같이, 대수 가산 모듈(330)은 제3 입력(310c) 및 도 3의 MAC 유닛(300)의 제1 모듈(320)의 중간 출력(320i)을 수신할 수 있다. 제3 입력(310c) 및 중간 출력(320i)은 대수 도메인으로 표현될 수 있다. 대수 가산 모듈(330)은 전술한 도 2의 방법(200)에 따른 대수 가산을 수행하기 위한 복수개의 유닛(410-460)을 포함한다.
제3 입력(310c) 및 중간 출력(320i)은 최대 검출 유닛(410)에 제공될 수 있다. 최대 검출 유닛(410)은 제3 입력(310c) 및 중간 출력(320i)의 최대값을 결정하기 위하여 하드웨어 예를 들면 AND, OR, NOR, XOR 및 NOT과 같은 논리 게이트를 포함할 수 있다.
제3 입력(310c) 및 중간 출력(320i)은 또한 제3 입력(310c)과 중간 출력(320i) 사이의 차이를 결정할 수 있는 차이 유닛(420)에 제공될 수 있다. 차이 유닛(420)은 차이를 계산하기 위해 제3 입력(310c)으로부터 중간 출력(320i)을 먼저 감산하기 위한 논리 게이트 및/또는 다른 구성 요소를 포함할 수 있다. 차이 유닛(420)은 또한 특정 입력의 계수(modulus)를 결정하고 및/또는 제3 입력(310c) 및 중간 출력(320i) 중 어느 것이 더 큰지를 결정하기 위한 논리 게이트 및/또는 다른 구성 요소를 포함할 수 있다. 예를 들어, 중간 출력(320i)이 제3 입력(310c)보다 큰 경우, 이것은 분수 분리 유닛(430)으로 출력된다. 제3 입력(310c)이 중간 출력(320i)보다 큰 다른 예에서, 값은 반전될 수 있어서, 차이 유닛(420)은 제3 입력(320c)으로부터 중간 출력(320i)을 감산하거나, 또는 대안적으로 상기와 동일한 감산을 수행하고(즉, 중간 출력(320i)으로부터 제3 입력(320c)을 감산) 그 후 계수를 결정하기 위한 로직을 이용하여 결과의 절대값을 계산한다. 두 예에서, 결과는 동일하고, 분수 분리 유닛(430)에 제공된다.
분수 분리 유닛(430)은 차이 유닛(420)의 출력으로부터 정수 부분 및 분수 부분을 생성한다. 분수 분리 유닛(430)은 정수 부분 및 분수 부분을 각각 생성하기 위한 정수 결정 유닛(432) 및 분수 결정 유닛(434)을 포함한다. 정수(432) 및 분수(434) 결정 유닛 모두는 정수 및 분수 부분을 생성하기 위한 논리 게이트 및/또는 다른 구성 요소를 포함한다.
정수 결정 유닛(432)은 입력값 - 이 입력값은 차이 유닛(420)의 출력임 - 을 가장 가까운 정수로 내림하기 위한 논리 게이트 및/또는 구성 요소를 포함한다. 즉, 정수 결정 유닛(432)은 플로어 함수의 등가를 차이 유닛(420)의 출력에 적용한다.
분수 결정 유닛(434)은 차이 유닛(420)의 출력과 정수 결정 유닛(432)의 출력 사이의 차이를 결정할 수 있는 로직을 포함한다. 이는 정수 결정 유닛(432)의 출력과 차이 유닛(420)을 감산함으로써 달성된다.
분수 결정 유닛(434)의 출력은 반전 유닛(440)에 제공된다. 반전 유닛(440) 은 분수 결정 유닛(434)의 출력을 반전시키기 위한 논리 NOT 게이트를 포함한다. 예를 들어, 분수 결정 유닛(434)의 출력은 01110110 이면, 반전 유닛(440)의 출력은 10001001이 될 것이다.
반전 유닛(440)의 출력은 분수 결정 유닛(430)의 정수 결정 유닛(432)의 출력과 함께 시프트 유닛(450)에 제공된다. 시프트 유닛(450)은 비트 시프트 라이트를 수행하기 위한 레지스터로서 논리 게이트 및/또는 다른 구성 요소를 포함하며, 여기서 반전 유닛(440)의 출력은 정수 결정 유닛의 출력을 나타내는 비트의 수만큼 시프트 라이트된다. 반전 유닛(440)의 출력이 10001001 인 상기 예를 계속하여, 정수 결정 유닛(432)의 출력이 4 인 경우, 시프트 유닛(450)의 출력은 00001000 이되고, 여기서 10001001은 4비트만큼 시프트 라이트 되었다.
변속 유닛(450)의 출력은 최대 검출 유닛(410)에 의해 출력된 제3 입력(310c) 및 중간 출력(320i)의 최대값과 함께 가산 유닛(460)에 제공된다. 가산 유닛(460)은 최대 검출 유닛(410) 및 시프트 유닛(450)의 출력을 결정하기 위한 논리 게이트 및/또는 다른 구성 요소를 포함한다. 가산 유닛(460)의 출력(340)은 (도 6과 관련하여 후술될 것처럼) 신경망 가속기와 같은 다른 구성 요소 또는 데이터 프로세서에서 사용하기 위해 제공될 수 있다.
대수 도메인에서 동작하는 도 3의 300과 같은 승산기 누산기의 일부로서 이용되는 경우, 출력(340)은 적어도 도 1의 MAC 유닛(100)과 같은 선형 도메인에서 동작하는 공지된 승산기 누산기의 승산 누산 출력(140)의 대수 표현의 근사치이다.
도 5는 예에 따른 산술 논리 유닛('ALU')(500)을 개략적으로 도시한다. ALU(500)는 데이터 처리 동작을 수행하도록 구성될 수 있다. 도 5에서, ALU(도 7 과 관련하여 후술되는 시스템(700)과 같은 시스템에서의 다수의 ALU 중 하나 일 수 있음)는 도 3 및 도 4와 관련하여 상술한 것처럼 대수 도메인에서 동작하는 MAC 유닛(300)을 포함할 수 있다. 다른 예에서, 그런 데이터 처리 시스템을 위한 ALU는 다른 구성 요소를 포함할 수 있거나, 또는 도 3과 관련하여 전술한 것처럼 대수 도메인에서 및 도 1과 관련하여 전술한 것처럼 선형 도메인에서 모두 동작하는 복수개의 MAC 유닛(100, 300)을 포함할 수 있다. 도 5의 MAC 유닛(300)의 데이터 처리 동작은 대수 도메인에서 승산 가산 동작을 수행하도록 구성된다. 이는 이 예에서는 상술한 신경망인 머신 러닝 시스템의 분류 단계를 구현하는데 사용될 수 있다.
본 명세서에 설명된 예에서, ALU(500)는 데이터 처리 동작의 출력을 수신하도록 구성된 레지스터를 포함 할 수 있으며, 레지스터는 미리 결정된 데이터 크기의 이진 데이터를 저장하도록 배열된 복수의 단일 비트 저장 장치를 포함한다. 예를 들어, ALU(500)가 제1 모듈(310)을 이용한 가산 동작 및 제2 모듈(320)을 이용한 대수 가산 동작(예를 들면, 도 2에 설명된 방법에 따른)을 수행하도록 구성된 도 3과 관련하여 전술한 MAC 유닛(300)과 같은 MAC 유닛을 포함하는 경우, 데이터 처리 동작은 가산 동작 또는 대수 가산 동작으로 간주될 수 있다. 데이터 처리 동작이 가산 동작이면, 레지스터는 가산 동작의 출력을 수신하도록 구성된다. 반대로, 데이터 처리 동작이 가산 동작이면, 레지스터는 대수 가산 동작의 출력을 수신하도록 구성된다.
도 5의 예에서, ALU(500)에 대한 입력(510a, 510b, 510c)은 스토리지(도시되지 않음)로부터 검색될 수 있다. 스토리지는 예를 들면 ALU(500) 외부에 있을 수 있으며, 및 DDR-SDRAM(더블 데이터 레이트 동기식 다이내믹 랜덤 액세스 메모리)와 같은 랜덤 억세스 메모리(RAM)일 수 있다. 다른 예에서, 스토리지는 ROM(Read Only Memory)과 같은 비휘발성 메모리 또는 플래시 메모리와 같은 SSD(Solid - State Drive)일 수 있거나 이를 포함할 수 있다. 예에서의 스토리지는 추가 저장 장치, 예를 들어 자기, 광학 또는 테이프 매체, CD(compact disc), DVD(digital versatile disc) 또는 다른 데이터 저장 매체를 포함할 수 있다. 스토리지는 컴퓨터 장치로부터 제거 가능하거나 제거 불가능할 수 있다.
입력들(510a, 510b, 510c)은 선형 도메인으로 저장될 수 있고, 따라서 MAC 유닛(300)과 호환되지 않을 것이다. 따라서, 입력들(510a, 510b, 510c)은 대수 도메인으로 변환될 필요가 있을 것이다. 따라서, ALU(500)는 선형 도메인의 입력(510a, 510b, 510c)을 대수 도메인으로 변환하여 ALU(500)의 MAC 유닛(300)에 대한 입력(310a, 310b, 310a)으로서 사용될 수 있도록 대수 변환 유닛(520)을 포함할 수 있다. 도 5의 ALU(500)는 단일 MAC 유닛(300) 및 단일 대수 변환 유닛(520)을 도시하지만, ALU(500)는 단일 대수 변환 유닛(520) 또는 대안적으로 복수개의 MAC 유닛(300)과 관련된 복수개의 대수 변환 유닛(520)에 각각 연결된 복수의 MAC 유닛을 포함할 수 있다.
일부 예에서, ALU(500)는 복수의 레지스터를 포함할 수 있으며, 각각은 다양한 스테이지에서 데이터를 저장하도록 배열된다. 예를 들어, 각각의 입력(510a, 510b, 510c)은 스토리지로부터 하나 이상의 입력 레지스터들로 전송될 수 있다. 입력 레지스터는 대수 변환과 같은 데이터 처리 동작에 입력(피산술자라고도 함)을 제공한다. ALU(500)는 또한 대수 변환 유닛(520)으로부터 대수 변환 출력을 수신하기 위한, 추가 데이터 처리 동작, 이 예 에서 MAC 유닛(300)의 제1 모듈(310)에 의해 구현된 가산 동작에 입력을 제공하도록 배치된 복수의 중간 레지스터를 포함할 수 있다. 이 예에서 ALU가 복수의 데이터 처리 동작들을 수행할 수 있기 때문에, 가산 동작은 제1 데이터 처리 동작으로 간주될 수 있다.
MAC 유닛(300)의 출력(340)은 또한 추가 데이터 처리 동작에 사용하기 위해 하나 이상의 레지스터에 저장될 수 있다. 일부 실시예들에서, 출력(340)은 또한/또는 대안적으로 스토리지에 저장될 수 있으며, 이는 전술한 바와 같이 입력들(510a, 510b, 510c)과 동일한 스토리지이거나 동일하지 않을 수 있다.
도 5에 도시된 ALU(500)는 대수 변환 유닛(320)을 포함하지만, ALU(500)를 포함하는 시스템 및/또는 데이터 프로세서는 대수 도메인에서만 동작할 수 있으므로, 그러한 대수 변환 유닛(320)을 필요로 하지 않는다. 다르게는, 대수 변환 유닛(320)은 ALU(500)의 외부에 있을 수 있으며, 예를 들어 대수 변환 유닛(320)은 (도 6과 관련하여 후술되는 바와 같이)프로세서 또는 신경망 가속기의 일부일 수 있다.
신경망의 고전력 소비로 인하여, 예를 들면 화상 또는 다른 데이터의 분류 동안, 신경망의 처리는, 이 프로세스에 전용인 신경망 가속기(600)를 이용하여 수행될 수 있다. 신경망 가속기(600)의 내부 구성 요소가 도 6에 개략적으로 도시되어 있다.
신경망 가속기(600)는 복수의 ALU(500a, 500b, 500c)를 포함한다. ALU(500a) 중 하나의 구성 요소는 전술한 도 5 에 보다 상세히 도시되어 있다. ALU들(500a, 500b, 500c) 각각은 예를 들어 신경망에 요구되는 컨볼루션을 수행하기 위해 사용될 수 있는 전술한 바와 같이 승산 누산 동작을 수행하도록 구성된다.
신경망 가속기(600)는 예를 들면 컴퓨터 장치(도 7과 관련하여 후술하는 것과 같은)의 다른 구성 요소로부터 신경망으로의 입력이 수신될 수 있는 인터페이스(630)를 포함한다. 예를 들면, CPU는 신경망 가속기(600)의 ALU(500a, 500b, 500c) 중 하나와 같이 ALU에 의해 실행되도록 배치되는 데이터 처리 동작에 관한 적어도 하나 개의 파라미터를 결정하도록 구성된 소프트웨어를 포함할 수 있다. 일반적으로 ALU는 적어도 하나의 MAC 유닛(300)(일반적으로 MAC 유닛의 어레이)을 포함하지만, 다른 ALU도 가능하다. 일반적으로, ALU(500)는 이진수에 대해 산술 및 비트 연산을 수행할 수 있는 임의의 전자 회로인 것으로 간주될 수 있다. 따라서, 적어도 하나의 파라미터는 인터페이스(630)를 통해 신경망 가속기(600)로 전송될 수 있다. 다른 예들에서, 적어도 하나의 파라미터는 예를 들어 하드웨어를 사용하여 신경망 가속기(600) 자체에 의해 결정될 수 있다.
인터페이스(630)를 통해 신경망 가속기(600)에 의해 수신될 수 있는 다른 입력은 신경망을 이용하여 분류될 이미지를 나타내는 이미지 데이터 및 학습 후 신경망과 관련된 커널(kernel)을 나타내는 커널 데이터를 포함한다. 예를 들어, 신경망은 컴퓨터 장치에 의해 또는 예를 들어 GPU를 사용하는 컴퓨터 시스템 또는 외부 컴퓨터 장치에 의해 학습될 수 있다. 학습의 출력은 미리 결정된 신경망 아키텍처와 관련된 복수의 커널일 수 있다(예를 들어, 다른 커널이 다층 신경망 아키텍처의 서로 다른 각각의 계층과 관련됨). 커널 데이터는 커널의 각 요소가 각각 가중치에 해당하는 것으로 간주될 수 있기 때문에 이미지 데이터에 적용될 가중치를 나타내는 가중치 데이터에 해당하는 것으로 간주될 수 있다. 이러한 가중치들 각각은 이미지 패치와 커널의 컨볼루션의 일부로서 이미지 패치의 대응하는 픽셀 값으로 곱해질 수있다.
도 6의 신경망 가속기(600)는 신경망 가속기(600)가 CPU와는 독립적으로 스토리지에 직접적으로 억세스하도록 허용하는 다이렉트 메모리 억세스(DMA)를 또한 포함한다. 이는 신경망 가속기(600)가 입력 데이터의 분류를 수행할 수 있는 속도를 향상시킬 수 있다. 예를 들어, 신경망 가속기(600)는 직접 메모리 액세스 모듈(620)을 사용하여 CPU가 이용가능할 때까지 기다릴 필요없이 스토리지(메인 메모리 또는 시스템 메모리 일 수 있음)로부터 직접 분류 프로세스에 입력되는 입력에 액세스 할 수있다. 예를 들어, 적어도 하나의 파라미터, 이미지 데이터 및 커널 데이터는 스토리지에 저장되고 신경망 가속기(600)에 의해 스토리지로부터 검색될 수 있다.
신경망 가속기(600)는 ALU(500a, 500b, 500c)에 의해 구현되는 분류 공정에 입력을 저장하는데 사용될 수 있는 정적 랜덤 액세스 메모리(SRAM)(610)를 포함한다. 예를 들어, SRAM은 일반적으로 스토리지보다 액세스가 빠른 신경망 가속기(600)의 온칩 또는 로컬 메모리 일 수 있다. SRAM은 복수의 개별 저장 영역을 포함할 수 있다. 예를 들어, 이미지 데이터는 커널 데이터와 다른 저장 영역에 저장될 수 있다(일부 경우에는, 동일한 저장 영역에 저장될 수 있지만).
도 2의 방법과 같은 예에 따른 데이터 처리 방법과 함께 사용하기 위한 컴퓨터 장치(700)의 예가 도 7에 개략적으로 도시되어있다. 도 7의 컴퓨터 장치(700)는 개인용 컴퓨터이다. 그러나, 다른 예에서, 본 명세서에 기술된 방법은 스마트 폰, 랩탑, 태블릿 또는 온보드 컴퓨터 장치와 같은 다른 컴퓨터 장치를 사용하여 수행될 수 있으며, 이는 자동차와 같은 차량에 결합되거나 장착될 수 있다.
컴퓨터 장치(700)는 적어도 하나의 프로세서를 포함한다. 이 예에서, 컴퓨터 장치(700)는 중앙 프로세서 유닛(CPU)(710)을 포함한다. 컴퓨터 장치(700)는 또한 신경망을 사용하여 적어도 데이터의 분류를 구현하기 위한 전용 프로세서인 신경망 가속기(600)를 포함한다. 그러나, 다른 예들에서, 컴퓨터 장치(700)는 마이크로 프로세서, 범용 프로세서, 이미지 신호 프로세서(ISP), 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), FPGA(Field Programmable Gate Array) 또는 다른 프로그래머블 논리 장치, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 구성 요소, 또는 여기에 설명된 기능들을 수행하도록 설계된 임의의 적절한 조합과 같은 다른 또는 대안적인 프로세서를 포함할 수 있다. 컴퓨터 장치(700)는 또한 컴퓨팅 장치의 조합, 예를 들어 DSP와 마이크로프로세서의 조합, 복수의 마이크로 프로세서, DSP 코어와 함께 하는 하나 이상의 마이크로프로세서, 또는 임의의 다른 구성으로 구현된 프로세서를 포함할 수 있다. 컴퓨터 장치는 또한 또는 대안적으로 적어도 하나의 그래픽 프로세싱 유닛(GPU)을 포함할 수 있다.
도 7의 CPU(710)는 예를 들어 신경망을 제어 또는 구성하도록 구성된 소프트웨어와 신경망 가속기(600) 사이의 인터페이스를 제공하는 드라이버(720)를 포함하며, 신경망 가속기(600)는 신경망을 구현하기 위한 처리를 수행하도록 구성된다. 그러나, 다른 예들에서, 신경망은 CPU 또는 GPU와 같은 보다 일반적인 프로세서를 사용하여 구현될 수 있다.
도 7의 컴퓨터 장치(700)는 또한 컴퓨터 장치(700)의 스토리지(750)에 대한 액세스를 제어하는데 사용될 수 있는 동적 메모리 제어기(DMC)(740)를 포함한다. 스토리지(750)는 예를 들어 신경망 가속기(600)의 외부에 있으며, DDR-SDRAM(이중 데이터 속도 동기식 동적 랜덤 액세스 메모리)과 같은 RAM(Random Access Memory)일 수 있다. 다른 예들에서, 스토리지(750)는 ROM(Read Only Memory)과 같은 비 휘발성 메모리 또는 플래시 메모리와 같은 SSD(Solid-State Drive) 일 수 있거나 이를 포함할 수 있다. 예에서 스토리지(750)는 추가 저장 장치, 예를 들어 자기, 광학 또는 테이프 매체, CD(compact disc), DVD(digital versatile disc) 또는 다른 데이터 저장 매체를 포함할 수 있다. 스토리지(750)는 컴퓨터 장치(700)로부터 제거 가능하거나 제거 불가능할 수 있다.
도 7의 예에서 컴퓨터 장치(700)의 구성 요소는 시스템 버스(760)를 사용하여 상호연결된다. 이는 데이터가 다양한 구성 요소 사이에서 전송될 수 있게 한다. 버스(760)는 임의의 적합한 인터페이스 또는 버스 이거나 이를 포함할 수 있다. 예를 들어, AXI(Advanced eXtensible Interface)와 같은 ARM® AMBA®(Advanced Microcontroller Bus Architecture) 인터페이스가 사용될 수 있다.
전술한 바와 같이, 도 7의 예에서 컴퓨터 장치(700)는 신경망의 분류 단계를 구현하도록 배치될 수 있다.
전술한 예에서의 처리 단계의 순서는 단지 예일 뿐이다. 다른 예에서, 이들 처리 단계는 다른 순서로 수행될 수 있다.
임의의 하나의 예와 관련하여 설명된 임의의 특징은 단독으로 또는 설명된 다른 특징과 조합하여 사용될 수 있고, 임의의 다른 예의 하나 이상의 특징 또는 임의의 조합과 조합하여 사용될 수 있음을 이해해야 한다. 또한, 첨부된 청구 범위의 범주를 벗어나지 않으면서 상술되지 않은 균등물 및 수정이 또한 채용될 수 있다.

Claims (17)

  1. 산술 논리 유닛으로서:
    제1 입력 및 제2 입력의 합을 결정하기 위한 가산 유닛; 및
    상기 합과 제3 입력을 사용하여 출력을 결정하기 위한 대수 가산 유닛을 포함하되,
    상기 출력은 제1, 제2 및 제3 입력이 대수 도메인으로 표현되는 경우에 대수 도메인으로 표현되는 승산 누산 출력인, 산술 논리 유닛.
  2. 청구항 1에 있어서, 제1 및 제2 입력 중 적어도 하나를 생성하기 위하여 데이터를 선형 도메인으로부터 대수 도메인으로 변환하기 위한 대수 변환 유닛을 포함하는, 산술 논리 유닛.
  3. 청구항 1 또는 청구항 2에 있어서, 상기 출력을 수신하도록 배치된 하나 이상의 레지스터를 포함하며, 상기 하나 이상의 레지스터는 복수개의 단일 비트 저장 장치를 포함하는, 산술 논리 유닛.
  4. 청구항 3에 있어서, 상기 제3 입력은 하나 이상의 레지스터로부터 유도되는, 산술 논리 유닛.
  5. 청구항 1 내지 청구항 4 중 어느 한 항에 있어서, 상기 대수 가산 유닛은 대수 도메인으로 표현된 차이의 정수 부분 및 분수 부분을 결정하는 논리 요소를 포함하는, 산술 논리 유닛.
  6. 청구항 1 내지 청구항 5 중 어느 한 항에 기재된 산술 논리 유닛을 포함하는, 신경망 가속기.
  7. 데이터 처리 시스템으로서,
    프로세서;
    하나 이상의 산술 논리 유닛을 포함하는 신경망 가속기; 및
    스토리지를 포함하되,
    상기 산술 논리 유닛은 대수 도메인에서 데이터 처리 동작을 수행하도록 구성되는, 데이터 처리 시스템.
  8. 청구항 7에 있어서, 상기 프로세서는:
    중앙 처리 유닛;
    이미지 신호 프로세서;
    디지털 신호 프로세서;
    어플리케이션 특정 집적 회로; 또는
    필드 프로그래머블 게이트 어레이
    중 임의의 하나인, 데이터 처리 시스템.
  9. 청구항 7 또는 청구항 8에 있어서, 상기 산술 논리 유닛은 청구항 1 기재의 산술 논리 유닛인, 데이터 처리 시스템.
  10. 출력을 생성하기 위한 데이터 처리 모듈로서:
    제1 입력과 제2 입력 사이의 최대값을 결정하기 위한 최대 검출 유닛;
    상기 제1 입력과 상기 제2 입력 사이의 차이를 결정하기 위한 차이 유닛; 및
    상기 차이의 정수 부분 및 분수 부분을 결정하기 위한 분수 분리 유닛을 포함하되,
    상기 출력은 제1 입력 및 제2 입력이 대수 도메인으로 표현되는 경우에 대수 도메인으로 표현되는, 데이터 처리 모듈.
  11. 청구항 10에 있어서, 상기 차이 유닛은 상기 차이의 절대값을 결정하기 위한 모듈러스 유닛을 포함하는, 데이터 처리 모듈.
  12. 청구항 10 또는 청구항 11에 있어서, 상기 분수 분리 유닛은 상기 차이를 라운딩(rounding)하기 위한 라운딩 모듈 및 상기 제1 차이와 라운딩된 차이 사이의 제2 차이를 결정하기 위한 제2 감산 유닛을 포함하는, 데이터 처리 모듈.
  13. 청구항 10 내지 청구항 12 중 어느 한 항에 있어서,
    상기 분수 부분의 역(inverse)을 결정하기 위한 반전 유닛;
    상기 역을 상기 정수 부분만큼 시프트하여 시프트된 값을 생성하기 위한 시프트 유닛; 및
    출력을 결정하기 위한 가산 유닛을 포함하되,
    상기 출력은 시프트된 값과 최대값의 합인, 데이터 처리 모듈.
  14. 데이터 처리 방법으로서,
    제1 입력 및 제2 입력을 수신하는 단계;
    상기 제1 입력과 상기 제2 입력 사이의 최대값을 결정하는 단계;
    상기 제1 입력과 상기 제2 입력 사이의 차이를 결정하는 단계;
    상기 차이의 정수 부분 및 분수 부분을 결정하는 단계;
    상기 분수 부분의 역을 계산하는 단계;
    상기 역을 상기 정수 부분만큼 시프트하여 시프트된 값을 생성하는 단계; 및
    데이터 프로세서에 의해 사용하기 위한 출력을 생성하기 위해 시프트된 값 및 최대값을 가산하는 단계를 포함하되,
    상기 출력은 상기 제1 입력과 상기 제2 입력이 대수 도메인으로 표현되는 경우에 대수 도메인으로 표현되는, 데이터 처리 방법.
  15. 청구항 14에 있어서, 상기 데이터 프로세서는:
    중앙 처리 유닛;
    이미지 신호 프로세서 ;
    디지털 신호 프로세서 ;
    애플리케이션 특정 집적 회로 ; 또는
    필드 프로그래머블 게이트 어레이 중 임의의 하나를 포함하는, 데이터 처리 방법.
  16. 청구항 14 또는 청구항 15에 있어서, 차이를 결정하는 단계는 차이의 절대값을 결정하는 단계를 더 포함하는, 데이터 처리 방법.
  17. 청구항 14 내지 청구항 16 중 어느 한 항에 있어서, 정수 부분과 분수 부분을 결정하는 단계는 라운드된 값을 생성하기 위하여 차이를 라운딩하는 단계 및 상기 차이와 상기 라운드된 값 사이의 제2 차이를 계산하는 단계를 포함하는, 데이터 처리 방법.
KR1020190113463A 2018-09-17 2019-09-16 산술 논리 유닛, 데이터 처리 시스템, 방법 및 모듈 KR20200032005A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1815141.5 2018-09-17
GB1815141.5A GB2577132B (en) 2018-09-17 2018-09-17 Arithmetic logic unit, data processing system, method and module

Publications (1)

Publication Number Publication Date
KR20200032005A true KR20200032005A (ko) 2020-03-25

Family

ID=64013242

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190113463A KR20200032005A (ko) 2018-09-17 2019-09-16 산술 논리 유닛, 데이터 처리 시스템, 방법 및 모듈

Country Status (4)

Country Link
US (1) US11169782B2 (ko)
KR (1) KR20200032005A (ko)
CN (1) CN110908714A (ko)
GB (1) GB2577132B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11693625B2 (en) * 2019-12-04 2023-07-04 Flex Logix Technologies, Inc. Logarithmic addition-accumulator circuitry, processing pipeline including same, and methods of operation

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4720809A (en) * 1984-09-21 1988-01-19 University Of Florida Hybrid floating point/logarithmic number system arithmetic processor
US4727508A (en) * 1984-12-14 1988-02-23 Motorola, Inc. Circuit for adding and/or subtracting numbers in logarithmic representation
US5944774A (en) * 1997-09-26 1999-08-31 Ericsson Inc. Methods apparatus and computer program products for accumulating logarithmic values
US20110153995A1 (en) * 2009-12-18 2011-06-23 Electronics And Telecommunications Research Institute Arithmetic apparatus including multiplication and accumulation, and dsp structure and filtering method using the same
CN106447036B (zh) * 2015-10-08 2019-03-15 上海兆芯集成电路有限公司 执行随机舍入的神经网络单元
CN107220025B (zh) * 2017-04-24 2020-04-21 华为机器有限公司 处理乘加运算的装置和处理乘加运算的方法

Also Published As

Publication number Publication date
GB201815141D0 (en) 2018-10-31
US11169782B2 (en) 2021-11-09
GB2577132B (en) 2021-05-26
US20200089474A1 (en) 2020-03-19
GB2577132A (en) 2020-03-18
CN110908714A (zh) 2020-03-24

Similar Documents

Publication Publication Date Title
US10817260B1 (en) Reducing dynamic power consumption in arrays
EP3460726B1 (en) Hardware implementation of a deep neural network with variable output data format
US11249721B2 (en) Multiplication circuit, system on chip, and electronic device
CA3083043C (en) System and method of floating point multiply operation processing
US10860050B2 (en) Apparatus and methods for non-linear function operations
CN107305484B (zh) 一种非线性函数运算装置及方法
KR20150145167A (ko) 단채널 컨볼루션 레이어를 위한 처리 방법 및 장치, 및 다채널 컨볼루션 레이어를 위한 처리 방법 및 장치
KR20200140703A (ko) 머신 학습 가속기들에 대한 넓은 승산-가산기 트리가 있는 부동-소수점 내적 하드웨어
US9870200B2 (en) Decimal and binary floating point rounding
KR102591638B1 (ko) 3-경로 단일 곱셈-누산기 설계를 위한 고속 근경로 솔루션
CN112528219A (zh) 存储器装置及其运算方法、计算设备
US10140090B2 (en) Computing and summing up multiple products in a single multiplier
KR20200032005A (ko) 산술 논리 유닛, 데이터 처리 시스템, 방법 및 모듈
Yamada et al. A 20.5 TOPS multicore SoC with DNN accelerator and image signal processor for automotive applications
US9448767B2 (en) Three-term predictive adder and/or subtracter
WO2019082511A1 (ja) 演算装置及び車載制御装置
Jothin et al. High performance modified static segment approximate multiplier based on significance probability
CN111596886A (zh) 混合矩阵乘法流水线
US20140372493A1 (en) System and method for accelerating evaluation of functions
US10146504B2 (en) Division using the Newton-Raphson method
US8924447B2 (en) Double precision approximation of a single precision operation
WO2024036429A1 (en) Paillier cryptosystem with improved performance
Jothin et al. High performance static segment on-Chip memory for image processing applications
Fathi et al. Improving Accuracy, Area and Speed of Approximate Floating-Point Multiplication Using Carry Prediction
US20190303102A1 (en) Output value generator circuit, processor, output value generation method and non-transitory computer readable medium

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal