KR20210057158A - 곱셈 및 누산 회로 - Google Patents

곱셈 및 누산 회로 Download PDF

Info

Publication number
KR20210057158A
KR20210057158A KR1020217011052A KR20217011052A KR20210057158A KR 20210057158 A KR20210057158 A KR 20210057158A KR 1020217011052 A KR1020217011052 A KR 1020217011052A KR 20217011052 A KR20217011052 A KR 20217011052A KR 20210057158 A KR20210057158 A KR 20210057158A
Authority
KR
South Korea
Prior art keywords
exponent
circuit
output
shared
mantissa
Prior art date
Application number
KR1020217011052A
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 KR20210057158A publication Critical patent/KR20210057158A/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/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/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
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49915Mantissa overflow or underflow in handling floating-point numbers
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

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

Abstract

부동 소수점 피연산자들을 곱하기 위한 회로들 및 방법이 제공된다. 지수 가산기 회로는 제1 지수와 제2 지수를 합산하고 출력 지수를 생성한다. 가수 곱셈기 회로는 제1 가수와 제2 가수를 곱하고 출력 가수를 생성한다. 제1 변환 회로는 출력 지수 및 출력 가수를 고정 소수점 수로 변환한다. 누산기 회로는 누산 레지스터의 콘텐츠들 및 고정 소수점 수를 누산된 값으로 합산하고 누산된 값을 누산 레지스터에 저장한다.

Description

곱셈 및 누산 회로
[0001] 본 개시내용은 일반적으로 곱셈 및 누산(MAC) 회로부에 관한 것이다.
[0002] 뉴럴 네트워크들은 계산 집약적인 애플리케이션들이다. VGG-16 CNN(convolutional neural network)과 같은 일부 대규모 뉴럴 네트워크들은 단일 이미지의 이미지 분류를 수행하기 위해 30 Gflops를 요구한다. 컴퓨테이션(computation)의 많은 부분이 곱셈 및 누산 연산들에 전념된다. 예컨대, 내적(dot product)들 및 스칼라 곱(scalar product)들을 컴퓨팅할 시에 곱셈 및 누산 연산들이 사용된다.
[0003] 컴퓨테이션 시간을 감소시키기 위해 하드웨어 가속기들이 사용되었다. 예시적인 하드웨어 가속기들은 ASIC(application-specific integrated circuit)들, FPGA(filed programmable gate array)들, 및 특수 목적 프로세서들, 이를테면 GPU(graphics processing unit)들을 포함한다. 하드웨어 가속기들에 의해 제공되는 성능 개선이 상당하지만, 전력 소비 및 데이터 대역폭 요건들의 증가도 역시 증가한다. 가중치들 및 입력 활성화들이 종종 32-비트 단일 정밀도 부동 소수점 값들로 저장되며, 하드웨어 가속기들은 32-비트 피연산자들에 대해 MAC 연산들을 수행한다.
[0004] 뉴럴 네트워크들의 컴퓨테이셔널 요건들을 감소시키기 위해 다수의 접근법들이 제안되었다. 일부 접근법들에서, 가중치들 및 입력 활성화들을 표현하는 데 사용되는 비트들의 수가 감소되며, 이는 컴퓨테이셔널 및 대역폭 요건들 둘 모두를 감소시킨다. 그러나, 이들 접근법들은 계층-특정 아키텍처들 및/또는 특정 트레이닝 절차를 요구할 수 있다. 일부 종래의 접근법들은 또한 복잡한 분류 태스크들에서 불량하게 수행될 수 있다.
[0005] 개시된 회로 어레인지먼트(arrangement)는 제1 지수와 제2 지수를 합산하고 출력 지수를 생성하도록 구성된 지수 가산기 회로를 포함한다. 가수 곱셈기 회로(mantissa multiplier circuit)는 제1 가수와 제2 가수를 곱하고 출력 가수를 생성하도록 구성된다. 제1 변환 회로는 지수 가산기 회로 및 가수 곱셈기 회로의 출력들에 커플링된다. 변환 회로는 출력 지수 및 출력 가수를 고정 소수점 수로 변환하도록 구성된다. 회로 어레인지먼트는 누산 레지스터 및 누산기 회로를 더 포함한다. 누산기 회로는 변환 회로 및 누산 레지스터에 커플링된다. 누산기 회로는 누산 레지스터의 콘텐츠들 및 고정 소수점 수를 누산된 값으로 합산하고 누산된 값을 누산 레지스터에 저장하도록 구성된다.
[0006] 개시된 방법은 제1 공유 지수 및 제2 공유 지수를 제1 및 제2 공유 지수 레지스터들에 각각 저장하는 단계를 포함한다. 방법은 제1 지수와 제2 지수를 합산하고 출력 지수를 생성한다. 방법은 추가로, 제1 가수와 제2 가수를 곱하고 출력 가수를 생성한다. 누산 레지스터의 콘텐츠들, 및 출력 지수 및 출력 가수에 기반한 값은 누산된 값으로 합산된다. 누산된 값은 누산 레지스터에 저장되고, 누산된 값의 지수는 제1 공유 지수, 제2 공유 지수, 및 누산된 값의 지수에 기반하여 확장 지수(expanded exponent)로 업데이트된다.
[0007] 다른 특징들은 후속하는 상세한 설명 및 청구항들을 고려할 때 인식될 것이다.
[0008] 회로들 및 방법들의 다양한 양상들 및 특징들은 다음의 상세한 설명의 검토 시에 그리고 도면들을 참조할 시에 자명해질 것이다.
[0009] 도 1은 곱셈기가 부동 소수점 값들에 대해 연산하고 누산기가 고정 소수점 값들에 대해 연산하는 MAC 회로를 도시한다.
[0010] 도 2는 비트-폭들이 부동 소수점 가중치 값들 및 입력 활성화 값들로부터 공유 지수들을 뽑아냄(factoring-out)으로써 감소된 입력 피연산자들에 대해 동작되는 MAC 회로를 도시한다.
[0011] 도 3은, 부동 소수점 곱셈기들 및 변환 회로들을 구현하는 프로그래밍가능 로직 회로부, 부분 누산을 구현하는 SIMD(single instruction multiple data) DSP(digital signal processor) 회로, 및 가산기 회로들을 구현하는 추가적인 프로그래밍가능 로직 회로부를 갖는 타겟 프로그래밍가능 집적 회로 상에서의 MAC 회로들의 어레이 또는 어레이의 일부의 예시적인 구현을 도시한다.
[0012] 도 4는, 부동 소수점 곱셈기들 및 변환 회로들을 구현하는 프로그래밍가능 로직 회로부, SIMD(single instruction multiple data) DSP(digital signal processor) 회로, 및 가산기 회로들을 구현하는 추가적인 프로그래밍가능 로직 회로부를 갖는 타겟 프로그래밍가능 집적 회로 상에서의 MAC 회로들의 어레이 또는 어레이의 일부의 예시적인 구현을 도시한다.
[0013] 도 5는 비트-폭들이 부동 소수점 가중치 값들 및 입력 활성화 값들로부터 공유 지수들을 뽑아냄으로써 감소된 입력 피연산자들에 대해 동작되는 MAC 회로를 도시한다.
[0014] 도 6은, 지수의 일부가 MAC 회로에서 부동 소수점 피연산자들로부터 뽑아내지고, 가수들을 곱하는 회로부가 여러 개의 낮은 비트-폭 곱셈들을 수행하는 큰-비트 곱셈기로서 구현되는 회로 어레인지먼트를 도시한다.
[0015] 도 7은, 피연산자들을 양자화함으로써 피연산자들의 비트-폭들을 감소시키고, MAC 회로에 의해 곱셈 및 누산 연산들을 수행하는 프로세스의 흐름도를 도시한다.
[0016] 도 8은 개시된 회로들 및 프로세스들이 구현될 수 있는 프로그래밍가능 집적 회로(IC)를 도시한다.
[0017] 다음의 설명에서, 다수의 특정한 세부사항들이 본 명세서에 제시되는 특정한 예들을 설명하기 위해 기재된다. 그러나, 하나 이상의 다른 예들 및/또는 이들 예들의 변경들이 아래에서 주어지는 모든 특정 세부사항들 없이도 실시될 수 있다는 것이 당업자에게 자명해야 한다. 다른 예시들에서, 잘 알려진 특징들은 본 명세서의 예들의 설명을 모호하게 하지 않기 위해 상세히 설명되지는 않는다. 예시의 용이함을 위해, 동일한 엘리먼트들 또는 동일한 엘리먼트의 부가적인 인스턴스들을 지칭하도록 동일한 참조 부호들이 상이한 다이어그램들에서 사용될 수 있다.
[0018] 개시된 접근법들은 네트워크 아키텍처에 대한 특수한 트레이닝 또는 수정들을 요구하지 않으면서 저정밀 동작들을 수행한다. 작은 비트-폭 컴퓨테이션들은 부동 소수점 곱셈들 및 고정 소수점 가산들을 수행하는 MAC 회로 및/또는 MAC 회로에 대한 부동 소수점 입력 값들의 양자화와 같은 특징들의 조합들에 의해 달성될 수 있다. MAC 회로에서 피연산자들의 비트-폭을 감소시키기 위한 하나의 접근법에서, 곱셈 연산들은 부동 소수점 곱셈을 사용하여 수행되고, 가산들은 고정 소수점 가산을 사용하여 수행된다. 피연산자들의 부동 소수점 표현에서, 지수는 지수를 항상 양수로 만드는 양으로 바이어싱(bias)된다. 예컨대, 부동 소수점 표현에서, 1 비트는 부호를 표현하고, NE = 지수를 표현하는 비트들의 수이고, NM = 가수를 표현하는 비트들의 수이며, 지수는 2NE-1 - 1로 바이어싱된다. 이러한 형식은 각각의 부동 소수점 수가 (-1)S * (1.M * 2E-bias)와 동일한 값을 갖도록 하는 숨겨진 비트를 암시하며, 여기서 S는 부호의 값이고, E는 지수의 값이고, M은 가수의 값이다.
[0019] 다른 특징에서, 부동 소수점 피연산자들의 비트-폭은 피연산자들을 양자화함으로써 감소된다. 예컨대, 공유 지수들은 가중치들 및 입력 활성화들의 세트를 포함할 수 있는 피연산자들로부터 뽑아진다. 가중치들 및 입력 활성화들에 대한 공유 지수들을 생성하는 것은 피연산자들을 표현하는 데 사용되는 비트들의 수를, 예컨대 1개의 부호 비트, 3개의 지수 비트들, 및 3개의 가수 비트들로 감소시킬 수 있다. 그에 의해, MAC 회로의 곱셈기는 작은 비트-폭 곱셈기로 감소될 수 있다. 대안적으로, 큰 비트-폭 곱셈기는 여러 개의 작은 비트-폭 곱셈들을 한번에 수행하는 데 사용될 수 있다. 예컨대, 곱셈기들은 FPGA(field programmable gate array)들 내의 룩업 테이블들에 의해 저렴하게 구현될 수 있다. MAC 회로 내의서의 누산은 부동 소수점 값들 또는 고정 소수점 연산들 중 어느 하나를 사용하여 수행될 수 있다.
[0020] 도 1은 곱셈기가 부동 소수점 값들에 대해 연산하고 누산기가 고정 소수점 값들에 대해 연산하는 MAC 회로(100)를 도시한다. 부동 소수점 가산기 구현에서 많은 수의 로직 레벨들 및 파이프라이닝(pipelining)과 연관된 제한들을 극복하기 위해, 하나의 접근법에서, 곱셈이 부동 소수점 곱셈기를 사용하여 수행되고, 곱셈기의 출력은 고정 소수점 값으로 변환되며, 최종 결과를 다시 원하는 포맷으로 변환하는 옵션과 함께 고정 소수점 가산을 사용하여 누산이 수행된다.
[0021] 예시적인 애플리케이션에서, MAC 회로(100)는 뉴럴 네트워크에서 사용되는 MAC 회로들의 어레이(도시되지 않음) 내의 MAC 회로의 하나의 인스턴스일 수 있다. 입력 부동 소수점 가중치 값이 레지스터(102)에서 제공되고, 입력 부동 소수점 입력 활성화 값이 레지스터(104)에서 제공된다. 가중치 값 및 입력 활성화 값은, XOR 회로(108), 가산기 회로(110), 및 곱셈기 회로(112)를 포함하는 부동 소수점 곱셈기 회로(106)에 입력된다.
[0022] 각각의 부동 소수점 값의 하나의 비트는 부호를 표시하고("부호 비트"), 비트들의 하나의 세트는 지수를 표현하며("지수 비트들"), 비트들의 다른 세트는 가수를 표현한다("가수 비트들"). 가중치 피연산자 및 입력 활성화 피연산자의 부호 비트들은 XOR 회로(108)에 입력되고, 지수 비트들은 가산기 회로(110)에 입력되며, 가수 비트들은 곱셈기 회로(112)에 입력된다.
[0023] 부동 소수점-고정 소수점 변환 회로(114)는 XOR 회로(108)로부터의 출력 부호 비트, 가산기 회로(110)로부터의 결과적인 지수, 및 곱셈기 회로(112)로부터의 곱을 입력한다. 변환 회로는, 부동 소수점 곱셈기에 의해 출력된 부호 비트, 지수 비트들, 및 가수 비트들에 의해 표현되는 바와 같은 부동 소수점 값을 고정 소수점 값으로 변환한다. 누산기 회로(116)는 변환 회로(114)로부터의 고정 소수점 값을 레지스터(118)에 저장된 누산된 값에 가산하고, 이어서 새로운 값으로 누산 레지스터를 업데이트한다.
[0024] 예시적인 애플리케이션에서, 일단 가중치 값들 및 입력 활성화 값들의 세트가 곱셈 및 누산되었다면, 고정 소수점-부동 소수점 변환 회로(120)는 누산 레지스터(118)로부터 결과를 판독하고 고정 소수점 값을 부동 소수점 값으로 변환하도록 가능해질 수 있다. 예컨대, 출력 값은 뉴럴 네트워크의 다음 계층에 대한 입력 값일 수 있다.
[0025] 도 2는 비트-폭들이 부동 소수점 가중치 값들 및 입력 활성화 값들로부터 공유 지수들을 뽑아냄으로써 감소된 입력 피연산자들에 대해 동작되는 MAC 회로(200)를 도시한다. 공유 지수들은 최종적으로 누산된 값으로 복원될 수 있다.
[0026] 예시적인 애플리케이션에서, MAC 회로(200)는 뉴럴 네트워크에서 사용되는 MAC 회로들의 어레이(도시되지 않음) 내의 MAC 회로의 하나의 인스턴스일 수 있다. 입력 부동 소수점 가중치 값이 레지스터(102)에서 제공되고, 입력 부동 소수점 입력 활성화 값이 레지스터(104)에서 제공된다. 각각의 입력 가중치 값 및 입력 활성화 값은, 공유 지수가 뽑아진 오리지널(original) 가중치 값 및 오리지널 입력 활성화 값의 양자화된 버전이다. 가중치 값들에 대한 공유 지수는 레지스터(202)에 저장될 수 있고, 입력 활성화 값들에 대한 공유 지수는 레지스터(204)에 저장될 수 있다. 가중치 피연산자 및 입력 활성화 피연산자의 부호 비트들은 XOR 회로(108)에 입력되고, 지수 비트들은 가산기 회로(110)에 입력되며, 가수 비트들은 곱셈기 회로(112)에 입력된다.
[0027] 부동 소수점 누산 또는 고정 소수점 누산 중 어느 하나는 XOR 회로(108), 가산기 회로(110), 및 곱셈기 회로(112)로부터의 부동 소수점 결과를 누산하는 데 사용될 수 있다. 예시적인 MAC 회로(200)는 고정 소수점 누산을 수행하며, 부동 소수점 값을 고정 소수점 값으로 변환하기 위한 부동 소수점-고정 소수점 변환 회로(114)를 포함한다. 부동 소수점 누산을 수반하는 구현이 도 5에 도시된다는 것을 유의한다.
[0028] 누산기 회로(116)는 변환 회로(114)로부터의 고정 소수점 값을 레지스터(118)에 저장된 누산된 값에 가산하고, 이어서 새로운 값으로 누산 레지스터를 업데이트한다.
[0029] 일단 가중치 값들 및 입력 활성화 값들의 세트가 곱셈 및 누산되었다면, 고정 소수점-부동 소수점 변환 회로(120)는 누산 레지스터(118)로부터 결과를 판독하고 고정 소수점 값을 부동 소수점 값으로 변환하도록 가능해질 수 있다. 지수 복원 회로(206)는 변환 회로(120)로부터의 부동 소수점 결과 값을 입력하고, 결과 값의 지수를 복원하여, 공유 지수 레지스터들(202 및 204)로부터의 공유 지수들을 포함한다. 예컨대, 지수 복원 회로(206)로부터의 출력 값은 뉴럴 네트워크의 다음 계층에 대한 입력 값일 수 있다.
[0030] 도 3은, 부동 소수점 곱셈기들 및 변환 회로들을 구현하는 프로그래밍가능 로직 회로부, SIMD(single instruction multiple data) DSP(digital signal processor) 회로, 및 가산기 회로들 및 누산을 구현하는 추가적인 프로그래밍가능 로직 회로부를 갖는 타겟 프로그래밍가능 집적 회로 상에서의 MAC 회로들(300)의 어레이 또는 어레이의 일부의 예시적인 구현을 도시한다.
[0031] 부동 소수점 곱셈 회로들(106), 변환 회로들(306, 308, 310, 312, 314, 316, 318, 및 320), SIMD DSP 회로들(302 및 304), 및 가산기 회로들(324, 326, 및 328)은 MAC 회로들의 어레이 또는 어레이의 일부를 구현할 수 있다. SIMD DSP 회로들(302)은 상이한 사이즈들의 피연산자들에 대해 다양한 산술 기능들을 수행하도록 구성가능하다. SIMD DSP 회로의 예시적인 구현은 XILINX®, Inc로부터의 FPGA(field programmable gate array)들에서 발견되는 DSP48E1 슬라이스이다.
[0032] 도 3의 예시적인 구현에서, 각각의 SIMD DSP 회로(302 및 304)는 쿼드(quad) 12-비트 가산기로 구성된다. SIMD DSP 회로(302)는 부동 소수점-고정 소수점 변환 회로들(306, 308, 310, 및 312)로부터의 고정 소수점 피연산자들을 누산한다. SIMD DSP 회로(304)는 부동 소수점-고정 소수점 변환 회로들(314, 316, 318, 및 320)로부터의 고정 소수점 피연산자들을 누산한다. 그에 의해, SIMD DSP 회로들은 다수의 MAC들의 누산 기능을 병렬로 수행한다. 예시적인 XILINX SIMD 회로가 또한 듀얼 24-비트 모드로 가산기를 구현할 수 있다.
[0033] 예시적인 구성에서, SIMD DSP 회로(302)는 변환기들(306 및 308)에 의해 제공된 값들을 합산하고 변환기들(310 및 312)에 의해 제공된 값을 병렬로 합산하여, 2개의 출력 값들을 병렬로 생성한다. 마찬가지로, SIMD DSP 회로(304)는 변환기들(314 및 316)에 의해 제공된 값들을 합산하고 변환기들(318 및 320)에 의해 제공된 값을 병렬로 합산하여, 2개의 출력 값들을 병렬로 생성한다. SIMD DSP 회로(302)로부터의 2개의 출력 값들은 하나의 값을 생성하는 가산기 회로(324)에 입력되며, SIMD DSP 회로(304)로부터의 2개의 출력 값들은 하나의 값을 생성하는 가산기 회로(326)에 입력된다. 가산기 회로들에 의해 출력된 값들은 가산기 회로(328)에 입력되며, 가산기 회로(328)는 변환기들(306, 308, 310, 312, 314, 316, 318, 및 320)에 의해 출력된 값들의 최종 합산을 생성한다.
[0034] 도 4는, 부동 소수점 곱셈기들 및 변환 회로들을 구현하는 프로그래밍가능 로직 회로부, 부분 누산을 구현하는 SIMD(single instruction multiple data) DSP(digital signal processor) 회로, 및 가산기 회로들을 구현하는 추가적인 프로그래밍가능 로직 회로부를 갖는 타겟 프로그래밍가능 집적 회로 상에서의 MAC 회로들(400)의 어레이 또는 어레이의 일부의 예시적인 구현을 도시한다. 도 3의 가산기 회로들(324 및 326)은 듀얼 24-비트 가산기로 구성되는 SIMD DSP 회로(402)에 의해 대체된다.
[0035] 예시적인 구성에서, SIMD DSP 회로(302)는 변환기들(306 및 308)에 의해 제공된 값들을 합산하고 변환기들(310 및 312)에 의해 제공된 값을 병렬로 합산하여, 2개의 출력 값들을 병렬로 생성한다. 마찬가지로, SIMD DSP 회로(304)는 변환기들(314 및 316)에 의해 제공된 값들을 합산하고 변환기들(318 및 320)에 의해 제공된 값을 병렬로 합산하여, 2개의 출력 값들을 병렬로 생성한다. SIMD DSP 회로(302)로부터의 2개의 출력 값들 및 SIMD DSP 회로(304)로부터의 2개의 출력 값들은 SIMD DSP 회로(402)에 입력된다. SIMD DSP 회로(402)는 SIMD DSP 회로(302)에 의해 제공된 2개의 값들을 합산하고, SIMD DSP 회로(304)에 의해 제공된 값을 병렬로 합산하여, 2개의 출력 값들을 병렬로 생성한다. SIMD DSP 회로(402)에 의해 출력된 값들은 가산기 회로(328)에 입력되며, 가산기 회로(328)는 변환기들(306, 308, 310, 312, 314, 316, 318, 및 320)에 의해 출력된 값들의 최종 합산을 생성한다.
[0036] 도 5는 비트-폭들이 부동 소수점 가중치 값들 및 입력 활성화 값들로부터 공유 지수들을 뽑아냄으로써 감소된 입력 피연산자들에 대해 동작되는 MAC 회로(500)를 도시한다. 공유 지수들은 최종적으로 누산된 값으로 복원될 수 있다.
[0037] 예시적인 애플리케이션에서, MAC 회로(500)는 뉴럴 네트워크에서 사용되는 MAC 회로들의 어레이(도시되지 않음) 내의 MAC 회로의 하나의 인스턴스일 수 있다. 입력 부동 소수점 가중치 값이 레지스터(102)에서 제공되고, 입력 부동 소수점 입력 활성화 값이 레지스터(104)에서 제공된다. 각각의 입력 가중치 값 및 입력 활성화 값은, 공유 지수가 뽑아진 오리지널(original) 가중치 값 및 오리지널 입력 활성화 값의 양자화된 버전이다. 가중치 값들에 대한 공유 지수는 레지스터(202)에 저장될 수 있고, 입력 활성화 값들에 대한 공유 지수는 레지스터(204)에 저장될 수 있다. 가중치 피연산자 및 입력 활성화 피연산자의 부호 비트들은 XOR 회로(108)에 입력되고, 지수 비트들은 가산기 회로(110)에 입력되며, 가수 비트들은 곱셈기 회로(112)에 입력된다.
[0038] 누산기 회로(502)는 XOR 회로(108), 가산기 회로(110), 및 곱셈기 회로(112)로부터의 부동 소수점 값과 레지스터(504)에 저장된 누산된 값의 부동 소수점 누산을 수행하고, 이어서 새로운 값으로 누산 레지스터를 업데이트한다.
[0039] 일단 가중치 값들 및 입력 활성화 값들의 세트가 곱셈 및 누산되었다면, 지수 복원 회로(206)는 누산 레지스터(504)로부터의 부동 소수점 결과 값을 입력하고, 결과 값의 지수를 복원하여, 공유 지수 레지스터들(202 및 204)로부터의 공유 지수들을 포함하도록 가능해질 수 있다. 예컨대, 지수 복원 회로(206)로부터의 출력 값은 뉴럴 네트워크의 다음 계층에 대한 입력 값일 수 있다.
[0040] 도 6은, 지수의 일부가 MAC 회로에서 부동 소수점 피연산자들로부터 뽑아내지고, 가수들을 곱하는 회로부가 여러 개의 낮은 비트-폭 곱셈들을 수행하는 큰-비트 곱셈기로서 구현되는 회로 어레인지먼트(600)를 도시한다. 저장 회로(602)는 가중치들과 같은 다수의 부동 소수점 피승수들(피연산자들)을 저장하고, 저장 회로(604)는 입력 활성화들과 같은 다수의 부동 소수점 승수들(피연산자들)을 저장한다. 예컨대, 저장 회로는 레지스터 뱅크들 또는 RAM(random access memory)들일 수 있다.
[0041] 피연산자 포맷팅 회로(606)는 다수의 피승수들의 가수들을 입력하고, 멀티-피승수 피연산자로 지칭될 수 있는 단일 피승수로 가수들을 결합하도록 구성된다. 멀티-피승수 피연산자는 레지스터(608)에 저장된다. 피연산자 포맷팅 회로는 또한, 다수의 승수들의 가수들을 입력하고, 멀티-승수 피연산자로 지칭될 수 있는 단일 승수로 승수들을 결합하도록 구성된다. 멀티-승수 피연산자는 레지스터(610)에 저장된다.
[0042] 예시적인 멀티-피승수 피연산자 및 멀티-승수 피연산자는 각각 레지스터들(608 및 610)에 나타나 있다. 멀티-피승수 피연산자 및 멀티-승수 피연산자는 각각 2개의 가수들을 포함하며, 각각의 가수는 "1.zzz"로 표기된다. 표기는 선두 비트 값 1이 삽입되고 zzz가 가수의 값들을 표현하는 4-비트 값을 표시하며, 이들은 이진 포인트 이후에 위치되고 피연산자 포맷터 회로(606)에 의해 추출된다. 레지스터(608) 내의 가수들은 블록들(612 및 614)에 의해 표시되고, 레지스터(610) 내의 가수들은 파선 블록들(616 및 618)에 의해 표시된다. 곱셈기 회로(620)의 출력으로부터의 곱들의 추출을 허용하기 위해 가수들 사이에서 패딩(padding)하기 위한 0의 비트 값들이 삽입된다.
[0043] 곱셈기 회로(620)는 레지스터(608) 내의 멀티-피승수 피연산자를 레지스터(610) 내의 멀티-승수 피연산자와 곱하고 결과적인 값을 레지스터(622)에 저장하도록 구성된다. 멀티-피승수 피연산자가 2개의 가수들을 갖고, 멀티-승수 피연산자가 2개의 가수들을 가지므로, 곱셈기 회로(620)로부터의 출력은 "가수 곱들"로 지칭될 수 있는 4개의 곱들을 포함한다. 가중치들은 wi로 표기될 수 있고, 입력 활성화들은 xi로 표기될 수 있다. 가중치들의 가수들은 wi(m)으로 표기될 수 있고, 입력 활성화들의 가수들은 xi(m)으로 표기될 수 있다. 블록들(618 및 616)에 의해 표시된 가중치 가수들은 각각 w1(m) 및 w2(m)일 수 있다. 블록들(614 및 612)에 의해 표시된 입력 활성화 가수들은 각각 x1(m) 및 x2(m)일 수 있다. 곱셈기 회로는 다음의 가수 곱들을 생성하며:
w1(m)* x1(m) = mm.mmmmmm
x1(m)* w2(m) = nn.nnnnnn
x2(m)* w1(m) = pp.pppppp
w2(m)* x2(m) = qq.qqqqqq
이들은 레지스터(622)에서 보여진다. 각각의 가수 곱의 이진 포인트는 2개의 최상위 비트들을 따르며, 예시의 목적들을 위해 포함된다.
[0044] 4개의 가수 곱들이 보여지지만, 유용한 곱들이 애플리케이션에 의존한다는 것을 인식할 것이다. 예컨대, 일부 애플리케이션들에서, 4개의 모든 곱들보다 적은 곱들이 유용할 수 있다.
[0045] 각각의 유용한 가수 곱에 대해, 부동 소수점 피연산자들의 지수들을 프로세싱하고, 누산을 수행하며, 공유 지수들의 값들을 누산된 값으로 복원하기 위해 회로(624)의 인스턴스가 제공된다. 따라서, 4개의 가수 곱들이 곱셈기 회로(620)에 의해 생성되고 4개의 모든 가수 곱들이 애플리케이션에서 유용하면, 회로(624)의 4개의 인스턴스들이 제공된다.
[0046] 회로(624)의 각각의 인스턴스는, 가수 곱이 생성되었던 가수들과 연관된 부동 소수점 피연산자들의 지수들을 입력하는 가산기 회로(626)를 포함한다. 부동 소수점 피연산자들의 지수들은 wi(e) 및 xj(e)로 표기된다. 따라서, wi(m) * xj(m)로부터 초래되는 가수 곱의 경우, 피연산자 포맷팅 회로(606)에 의해 추출되고 가산기 회로의 인스턴스에 입력되는 지수들은 wi(e) 및 xj(e)이다. 가산기 회로(626)의 출력(합산된 지수들)은 좌측 시프터 회로(628)에 입력되며, 그 좌측 시프터 회로(628)는 합산된 지수들에 의해 표시된 비트들의 수만큼 레지스터(622)에 의해 제공된 가수 곱들 중 하나를 좌측으로 시프트시킨다. 연접 회로(630)에 의해 도시된 바와 같이, 비트 값 0이 좌측 시프터 회로의 출력에 프리펜딩(prepend)된다. 부가적인 비트는 연접 회로(630)로부터 출력된 값에서 최상위 비트이다.
[0047] 피연산자 포맷터 회로(606)는 또한, 가수 곱이 생성되었던 가수들과 연관된 부동 소수점 피연산자들의 부호 비트들을 라우팅한다. 부동 소수점 피연산자들의 부호 비트들은 wi(s) 및 xj(s)로 표기된다. 따라서, wi(m) * xj(m)로부터 초래되는 가수 곱의 경우, 피연산자 포맷팅 회로(606)에 의해 추출되고 가산기 회로의 인스턴스에 입력되는 부호 비트들은 wi(s) 및 xj(s)이다. 부호 비트들은 XOR 회로(632)에 입력된다. 복제 회로(634)는 XOR 회로(632)에 의해 출력된 하나의 비트의 값을 복제하고, n-비트 값을 출력하며, 여기서 n은 연접 회로(630)의 출력의 비트 폭이다. 복제 회로(634)로부터의 n-비트 값 및 연접 회로로부터의 n-비트 값은 XOR 회로(636)에 입력되며, XOR 회로(636)는 wi * xj의 부동 소수점 곱의 고정 소수점 표현을 출력한다.
[0048] 누산기 회로(638)는 XOR 회로(636)로부터의 출력을 누산 레지스터(640)에 유지된 값과 합산하고, XOR 회로(632)로부터 출력된 비트는 캐리-인 비트(carry-in bit)로서 누산기(638)에 입력된다. 부호 비트의 곱(XOR 회로(632)의 출력)이 0일 때, 캐리 비트는 0이고, XOR 회로(636)는 제로들의 벡터를 출력하며, 효과적으로, 누산기에 대한 입력은 연접 회로(630)의 출력과 동일하고, 누산기 회로는 가산을 수행한다. 부호 비트의 곱(XOR 회로(632)의 출력)이 1일 때, 누산기 회로는 감산을 수행한다. XOR 회로(636), 및 XOR 회로(632)로부터의 캐리 비트는, 연접 회로(630)의 출력을 뒤집고(flip) 캐리 비트(+1)를 누산기 회로에 입력으로서 제공함으로써 2의 보수 감산을 가능하게 한다. 누산기 회로는 결과를 다시 누산 레지스터에 저장한다. 일단 모든 원하는 곱셈들 및 누산들이 완료되면, 고정 소수점-부동 소수점 변환 회로(642)는 누산된 고정 소수점 값 결과를 부동 소수점 값으로 변환하며, 그 부동 소수점 값은 레지스터(644)에 저장된다.
[0049] 가산기 회로(646)는 양자화된 가중치들의 공유 지수를 양자화된 입력 활성화들의 공유 지수에 가산하고, 결과적인 값은 가산기 회로(648)에 의해 레지스터(644)의 지수에 가산된다. 복원된 지수는 레지스터(644)로부터의 부호 비트 및 가수와 함께 레지스터(650)에 저장된다.
[0050] 도 7은 피연산자들을 양자화함으로써 피연산자들의 비트-폭들을 감소시키고, MAC 회로에 의해 곱셈 및 누산 연산들을 수행하는 프로세스의 흐름도를 도시한다. 가중치들 및 입력 활성화들은 피연산자들이며, 피연산자들의 비트 폭들은 다음의 논의에서 감소된다.
[0051] 블록(702)에서, 프로세스는 뉴럴 네트워크의 계층에서 사용되는 가중치들의 세트와 같은 가중치들의 세트의 최대 절대 값 wmax를 결정한다. wmax의 절대 값은 수치 표현에서 사용될 가장 큰 지수를 (밑수(base) 2에서) 결정할 것이다. 블록(704)에서, 프로세스는 뉴럴 네트워크의 계층에서 사용되는 입력 활성화들의 세트와 같은 입력 활성화들의 세트의 최대 절대 값 xmax를 결정한다. 예컨대, 입력 활성화들의 최대 절대 값은 트레이닝 데이터세트 또는 합성 이미지들의 작은 프랙션(fraction)을 입력들로서 사용하여, 주어진 계층의 활성화들을 등록한 이후 발견될 수 있다. xmax의 절대 값은 수치 표현에서 사용될 가장 큰 지수를 (밑수 2에서) 결정할 것이다.
[0052] 블록(706)에서, 프로세스는, 각각의 가중치 및 입력 활성화의 지수에 대해 할당될 비트들의 수인 α에 대한 값을 선택한다. α의 값은 가중치들 및 입력 활성화들의 범위를 결정하며, wmax 및 xmax에 의해 정의된 가장 큰 지수에 앵커링(anchor)된다. 예컨대, wmax = -0.6이면, 최대 지수는 -1이 될 것이다. 결과적으로, 표현될 수 있는 2의 가장 큰 거듭제곱은 2-1 = 0.5이다. α = 2이면, 2의 거듭제곱들의 22 = 4개의 상이한 절대 값들이 양자화된 값들, 즉 2-4, 2-3, 2-2 및 2-1에 의해 표현될 수 있다. 일단 가장 작은 지수가 알려지면, 값은 계층에 대한 공유 지수로서 사용될 수 있다. 각각의 가중치에 대해, 전체 지수와 공유 지수의 차이만이 인코딩될 필요가 있으며, 각각의 입력 활성화에 대해, 전체 지수와 공유 지수의 차이만이 인코딩될 필요가 있다.
[0053] 블록(708)에서, 프로세스는, 가중치들 및 입력 활성화들의 가수를 표현하는 데 사용되는 비트들의 수인 β를 선택한다. 비트들의 수는 2의 각각의 표현가능한 거듭제곱에 대한 스케일링 인자를 결정한다. 다시 말하면, β는 양자화된 가중치들 및 입력 활성화들의 정밀도를 결정한다. 예컨대, 2 비트들의 가수는 스케일링 인자들 1, 1.25, 1.5, 및 1.75를 표현할 수 있을 것이다. 표준 부동 소수점 표현에서와 같이, 스케일링 인자는 (모든-프랙셔널(all-fractional) 부호없는 고정 소수점 수에 대응하는) 가수를 이용하여 표현되는 수치 값 더하기 암묵적인 선두 1의 값을 갖는다.
[0054] α, β 및 공유 지수에 대한 값들이 입력 활성화들보다 가중치들에 대해 상이할 수 있다는 것을 유의한다.
[0055] 블록(710 및 712)에서, 비-양자화된 가중치들 및 입력 활성화들은 양자화된 값들로 변환된다. 가중치들 및 입력 활성화들은 양자화된 값으로 표현가능한 가장 가까운 값들에 맵핑된다. 절대 값이 표현가능한 가장 작은 비-제로의 절대 값보다 약간 낮으면, 값은 제로의 값에 맵핑될 수 있다(이러한 규칙의 상세사항들은 아래에서 제공되는 알고리즘을 연구하는 것으로부터 알려질 수 있다). 가중치 또는 입력 활성화가 표현가능한 최대 절대 값을 초과하면, 값은 그 최대 값에 맵핑될 수 있다. 표준 부동 소수점 표현과는 대조적으로, 개시된 양자화 접근법이 숫자-아님(not-a-number), 무한대, 및 비-정규 수(subnormal number)들과 같은 많은 특수한 경우들의 표현을 회피한다는 것을 유의한다. 지원되는 유일한 예외는 값 0이며, 이는 다음의 2개의 방식들 중 하나로, 즉 1) 부호 비트에 관계없이, 모든 지수 및 가수 비트들이 제로일 때 표현되는 특수한 경우로서, 또는 2) 가변 길이 인코딩과 함께 희소 계층(sparse layer)들을 압축하는 데 유용할 수 있는 부가적인 제로 비트를 사용하여 표현될 수 있다.
[0056] 주어진 계층의 가중치들을 변환하기 위한 절차는 아래의 실시예 1에서 보여지는 알고리즘에 의해 추가로 설명된다:
입력들: α, β, 및 wmax
초기화:
Figure pct00001
Figure pct00002
.
Figure pct00003
.
tlow보다 작은 절대 값을 갖는 모든 가중치들에 제로의 값을 할당한다.
Figure pct00004
tlow(경계포함(inclusive))와 tup 사이의 절대 값을 갖는 모든 가중치들에
Figure pct00005
의 절대 값을 할당한다. 수정된 가중치들의 부호를 유지한다.
tlow = tup
tup보다 크거나 그와 동일한 절대 값을 갖는 모든 가중치들에 ρ의 절대 값을 할당한다. 수정된 가중치들의 부호를 유지한다.
실시예 1
[0057] 실시예 1의 알고리즘은 xmax를 wmax로 대체함으로써 입력 활성화들을 변환하도록 수정될 수 있다.
[0058] 블록(714)에서, 양자화된 가중치들의 공유 지수 및 양자화된 입력 활성화들의 공유 지수는, 곱셈들 및 누산들로부터 생성된 최종 값이 적절한 크기로 복원될 수 있도록 저장된다. 예컨대, 도 2, 도 5 및 도 6의 회로들에 의해 도시되고 설명된 바와 같이, 블록(716)에서, MAC 회로는 양자화된 피연산자들을 사용하여 곱셈 및 누산 연산들을 수행하고, 블록(718)에서, 결과의 지수가 업데이트된다.
[0059] 도 8은 개시된 회로들 및 프로세스들이 구현될 수 있는 프로그래밍가능 집적 회로(IC)(800)를 도시한다. 프로그래밍가능 IC는 또한, 다른 프로그래밍가능 리소스들과 함께 필드 프로그래밍가능 게이트 어레이 로직(FPGA)을 포함하는 SOC(System On Chip)로 지칭될 수 있다. FPGA 로직은 어레이에서 여러가지 상이한 타입들의 프로그래밍가능 로직 블록들을 포함할 수 있다. 예컨대, 도 8은, 멀티-기가비트 트랜시버(MGT)들(801), 구성가능한 로직 블록(CLB)들(802), 랜덤 액세스 메모리 블록(BRAM)들(803), 입력/출력 블록(IOB)들(804), 구성 및 클록킹 로직(CONFIG/CLOCKS)(805), 디지털 신호 프로세싱 블록(DSP)들(806), 특수화된 입력/출력 블록들(I/O)(807), 예컨대 클록 포트들, 및 다른 프로그래밍가능 로직(808), 이를테면 디지털 클록 관리자들, 아날로그-디지털 변환기들, 시스템 모니터링 로직 등을 포함하는 많은 수의 상이한 프로그래밍가능 타일들을 포함하는 프로그래밍가능 IC(800)를 예시한다. FPGA 로직을 갖는 일부 프로그래밍가능 IC는 또한, 전용 프로세서 블록들(PROC)(810) 및 내부 및 외부 재구성 포트들(도시되지 않음)을 포함한다.
[0060] 일부 FPGA 로직에서, 각각의 프로그래밍가능 타일은, 각각의 인접한 타일 내의 대응하는 상호연결 엘리먼트로의 그리고 상호연결 엘리먼트로부터의 표준화된 연결들을 갖는 프로그래밍가능 상호연결 엘리먼트(INT)(811)를 포함한다. 따라서, 함께 취해진 프로그래밍가능 상호연결 엘리먼트들은 예시된 FPGA 로직에 대한 프로그래밍가능 상호연결 구조를 구현한다. 프로그래밍가능 상호연결 엘리먼트(INT)(811)는 또한, 도 8의 최상부에 포함된 예들에 의해 도시된 바와 같이, 동일한 타일 내의 프로그래밍가능 로직 엘리먼트로의 그리고 프로그래밍가능 로직 엘리먼트로부터의 연결들을 포함한다.
[0061] 예컨대, CLB(802)는, 사용자 로직 플러스(plus) 단일 프로그래밍가능 상호연결 엘리먼트(INT)(811)를 구현하도록 프로그래밍될 수 있는 구성가능한 로직 엘리먼트(CLE)(812)를 포함할 수 있다. BRAM(803)은 하나 이상의 프로그래밍가능 상호연결 엘리먼트들에 부가하여 BRAM 로직 엘리먼트(BRL)(813)를 포함할 수 있다. 통상적으로, 타일에 포함된 상호연결 엘리먼트들의 수는 타일의 높이에 의존한다. 예시된 BRAM 타일은 5개의 CLB들과 동일한 높이를 갖지만, 다른 수들(예컨대, 4)이 또한 사용될 수 있다. DSP 타일(806)은 적절한 수의 프로그래밍가능 상호연결 엘리먼트들에 부가하여 DSP 로직 엘리먼트(DSPL)(814)를 포함할 수 있다. IOB(804)는, 예컨대, 프로그래밍가능 상호연결 엘리먼트(INT)(811)의 하나의 인스턴스에 부가하여 입력/출력 로직 엘리먼트(IOL)(815)의 2개의 인스턴스들을 포함할 수 있다. 당업자들에게 자명할 바와 같이, 예컨대, I/O 로직 엘리먼트(815)에 연결된 실제 I/O 본드(bond) 패드들은 다양한 예시된 로직 블록들 위에 계층화된 금속을 사용하여 제조되며, 통상적으로, 입력/출력 로직 엘리먼트(815)의 영역으로 한정되지 않는다.
[0062] (도 8에서 음영으로 도시된) 다이의 중심 근방의 원주형(columnar) 영역은 구성, 클록 및 다른 제어 로직에 대해 사용된다. 이러한 열(column)로부터 연장되는 수평 영역들(809)은 프로그래밍가능 IC의 폭에 걸쳐 클록들 및 구성 신호들을 분배하는 데 사용된다. "원주형" 및 "수평" 영역들에 대한 참조가 세로 배향(portrait orientation)으로 도면을 보는 것에 관한 것임을 유의한다.
[0063] 도 8에 예시된 아키텍처를 이용하는 일부 프로그래밍가능 IC들은 프로그래밍가능 IC의 많은 부분을 구성하는 일반적인 열 구조를 방해하는 부가적인 로직 블록들을 포함한다. 부가적인 로직 블록들은 프로그래밍가능 블록들 및/또는 전용 로직일 수 있다. 예컨대, 도 8에 도시된 프로세서 블록(PROC)(810)은 CLB들 및 BRAM들의 수개의 열들에 걸쳐 있다.
[0064] 도 8이 예시적인 프로그래밍가능 IC 아키텍처만을 예시하도록 의도됨을 유의한다. 열 내의 로직 블록들의 수들, 열들의 상대적인 폭들, 열들의 수 및 순서, 열들에 포함된 로직 블록들의 타입들, 로직 블록들의 상대적인 사이즈들, 및 도 8의 최상부에 포함된 상호연결/로직 구현들은 순수하게 예시적이다. 예컨대, 실제 프로그래밍가능 IC에서, CLB들의 1개 초과의 인접 열은 통상적으로, 사용자 로직의 효율적인 구현을 용이하게 하기 위해, CLB들이 나타나는 곳마다 포함된다.
[0065] 개시된 회로 어레인지먼트들은, 누산 레지스터로부터의 고정 소수점 출력을 부동 소수점 출력으로 변환하도록 구성된 제2 변환 회로, 제1 공유 지수 및 제2 공유 지수의 저장을 위해 구성된 공유 지수 레지스터, 및 제1 공유 지수, 제2 공유 지수, 및 부동 소수점 출력의 지수에 기반하여 부동 소수점 출력의 지수를 확장 지수로 업데이트하도록 구성된 지수 복원 회로를 더 포함할 수 있다.
[0066] 개시된 회로 어레인지먼트들은 누산 레지스터의 출력에 커플링된 제2 변환 회로를 더 포함할 수 있다. 제2 변환 회로는 누산 레지스터로부터의 고정 소수점 값을 부동 소수점 값으로 변환하도록 구성될 수 있다.
[0067] 개시된 회로 어레인지먼트들은, 지수 가산기 회로의 복수의 인스턴스들, 가수 곱셈기 회로의 복수의 인스턴스들, 제1 변환 회로의 복수의 인스턴스들을 더 포함할 수 있다. 누산기 회로는 제1 변환 회로의 복수의 인스턴스들에 커플링될 수 있으며, 복수의 변환 회로들의 제2 쌍으로부터의 피연산자들의 제2 쌍을 합산하는 것과 병렬로 복수의 제1 변환 회로들의 제1 쌍으로부터의 피연산자들의 제1 쌍을 합산하도록 구성된 단일-명령-다중-데이터 가산기 회로를 포함할 수 있다.
[0068] 개시된 회로 어레인지먼트들은 뉴럴 네트워크를 더 포함할 수 있다. 뉴럴 네트워크는 MAC(multiply-and-accumulate) 회로들의 어레이를 포함할 수 있으며, 각각의 MAC 회로는 지수 가산기 회로, 가수 곱셈기 회로, 제1 변환 회로, 누산 레지스터, 및 누산기 회로의 개개의 인스턴스들을 포함할 수 있다.
[0069] 개시된 회로 어레인지먼트들은, 2개 이상의 부동 소수점 피승수들을 멀티-피승수 피연산자로 결합하고, 2개 이상의 부동 소수점 승수들을 멀티-승수 피연산자로 결합하도록 구성된 피연산자 포맷팅 회로를 더 포함할 수 있다. 가수 곱셈기 회로는 멀티-피승수 피연산자를 멀티-승수 피연산자와 곱하고, 4개 이상의 가수 곱들을 갖는 값을 출력하도록 구성될 수 있다. 개시된 회로 어레인지먼트들은 지수 가산기 회로의 4개 이상의 인스턴스들을 더 포함할 수 있으며, 각각의 인스턴스는 2개 이상의 부동 소수점 피승수들 중 하나의 피승수의 지수와 2개 이상의 부동 소수점 승수들 중 하나의 승수의 지수를 합산하고, 출력 지수를 생성하도록 구성될 수 있다. 개시된 회로 어레인지먼트들은, 지수 가산기 회로의 인스턴스들의 출력들에 각각 커플링되고 가수 곱셈기 회로의 인스턴스들에 각각 커플링된 제1 변환 회로의 4개 이상의 인스턴스들을 더 포함할 수 있다. 제1 변환 회로의 각각의 인스턴스는 출력 지수 및 가수 곱들 중 하나의 곱을 고정 소수점 수로 변환하도록 구성될 수 있다. 개시된 회로 어레인지먼트들은 누산 레지스터의 4개 이상의 인스턴스들 및 누산기 회로의 4개 이상의 인스턴스들을 더 포함할 수 있다. 누산기 회로의 각각의 인스턴스는, 누산 레지스터의 인스턴스들 중 하나의 인스턴스의 콘텐츠들과 고정 소수점 수를 누산된 값으로 합산하고, 누산된 값을 누산 레지스터의 인스턴스들 중 하나의 인스턴스에 저장하도록 구성될 수 있다. 개시된 회로 어레인지먼트들은 제2 변환 회로의 4개 이상의 인스턴스들을 더 포함할 수 있다. 제2 변환 회로의 각각의 인스턴스는 누산 레지스터의 인스턴스들 중 하나의 인스턴스로부터의 고정 소수점 출력을 부동 소수점 출력으로 변환하도록 구성될 수 있다. 개시된 회로 어레인지먼트들은 지수 복원 회로의 4개 이상의 인스턴스들을 더 포함할 수 있다. 지수 복원 회로의 각각의 인스턴스는, 제1 공유 지수, 제2 공유 지수, 및 부동 소수점 출력의 지수에 기반하여 제1 변환 회로의 인스턴스들 중 하나의 인스턴스로부터의 부동 소수점 출력의 지수를 확장 지수로 업데이트하도록 구성될 수 있다.
[0070] 개시된 회로 어레인지먼트들은, 제1 공유 지수가 2개 이상의 부동 소수점 피승수들의 공유 지수인 회로부를 더 포함할 수 있다.
[0071] 개시된 회로 어레인지먼트들은, 제2 공유 지수가 2개 이상의 부동 소수점 승수들의 공유 지수인 회로부를 더 포함할 수 있다.
[0072] 개시된 회로 어레인지먼트들은 제1 공유 지수와 제2 공유 지수를 합산하도록 구성된 공유 지수 가산기 회로를 더 포함할 수 있다.
[0073] 개시된 회로 어레인지먼트들은 제1 공유 지수와 제2 공유 지수를 합산하도록 구성된 공유 지수 가산기 회로를 더 포함할 수 있다.
[0074] 개시된 회로 어레인지먼트들은 뉴럴 네트워크가 MAC(multiply-and-accumulate) 회로들의 어레이를 포함하는 회로부를 더 포함할 수 있으며, 각각의 MAC 회로는 지수 가산기 회로, 가수 곱셈기 회로, 누산 레지스터, 누산기 회로, 제1 및 제2 공유 지수 레지스터들, 및 지수 복원 회로의 개개의 인스턴스들을 포함한다.
[0075] 개시된 방법들은, 피연산자 포맷팅 회로에 의해, 2개 이상의 부동 소수점 피승수들을 멀티-피승수 피연산자로 결합하는 단계; 피연산자 포맷팅 회로에 의해, 2개 이상의 부동 소수점 승수들을 멀티-승수 피연산자로 결합하는 단계를 더 포함할 수 있다. 곱셈은, 멀티-피승수 피연산자를 멀티-승수 피연산자와 곱하고, 4개 이상의 가수 곱들을 갖는 값을 출력하는 것을 포함할 수 있다. 개시된 방법들은, 지수 가산기 회로의 4개 이상의 인스턴스들의 각각의 인스턴스에 의해, 2개 이상의 부동 소수점 피승수들 중 하나의 피승수의 지수와 2개 이상의 부동 소수점 승수들 중 하나의 승수의 지수를 합산하고, 출력 지수를 생성하는 단계를 더 포함할 수 있다. 개시된 방법들은, 제1 변환 회로의 4개 이상의 인스턴스들의 각각의 인스턴스에 의해, 출력 지수 및 가수 곱들 중 하나의 곱을 고정 소수점 수로 변환하는 단계, 및 누산기 회로의 4개 이상의 인스턴스들에 의해, 누산기 레지스터의 4개 이상의 인스턴스들의 콘텐츠들과 고정 소수점 수를 누산된 값으로 합산하고, 누산된 값을 누산 레지스터의 인스턴스들 중 하나의 인스턴스에 저장하는 단계를 더 포함할 수 있다. 개시된 방법들은, 제2 변환 회로의 4개 이상의 인스턴스들에 의해, 누산 레지스터의 인스턴스들 중 하나의 인스턴스로부터의 고정 소수점 출력을 부동 소수점 출력으로 변환하는 단계, 및 지수 복원 회로의 4개 이상의 인스턴스들에 의해, 제1 공유 지수, 제2 공유 지수 및 부동 소수점 출력의 지수에 기반하여 제2 변환 회로의 인스턴스들 중 하나의 인스턴스로부터의 부동 소수점 출력의 지수를 확장 지수로 업데이트하는 단계를 더 포함할 수 있다.
[0076] 개시된 방법들은, 제1 공유 지수가 2개 이상의 부동 소수점 피승수들의 공유 지수인 것을 더 포함할 수 있다.
[0077] 개시된 방법들은, 제2 공유 지수가 2개 이상의 부동 소수점 승수들의 공유 지수인 것을 더 포함할 수 있다.
[0078] 개시된 방법들은 공유 지수 가산기 회로에 의해 제1 공유 지수와 제2 공유 지수를 합산하는 단계를 더 포함할 수 있다.
[0079] 개시된 방법들은 공유 지수 가산기 회로에 의해 제1 공유 지수와 제2 공유 지수를 합산하는 단계를 더 포함할 수 있다.
[0080] 개시된 방법들은 지수 복원 회로의 각각의 인스턴스에 의해 부동 소수점 출력의 지수와 공유 지수 가산기 회로의 출력을 합산하는 단계를 더 포함할 수 있다.
[0081] 개시된 방법들은, 제1 변환 회로에 의해, 출력 지수 및 출력 가수를 고정 소수점 값으로 변환하는 단계 - 고정 소수점 값은 출력 지수 및 출력 가수에 기반한 값임 -, 및 제2 변환 회로에 의해, 누산 레지스터로부터의 고정 소수점 값을 부동 소수점 값으로 변환하는 단계를 더 포함할 수 있다.
[0082] 일부 경우들에서, 양상들 및 특징들이 개별 도면들에서 설명될 수 있지만, 조합이 명시적으로 도시되지 않거나 또는 조합으로서 명시적으로 설명되지 않더라도, 하나의 도면으로부터의 특징들이 다른 도면의 특징들과 조합될 수 있음을 인식할 것이다.
[0083] 회로들 및 방법들은 곱셈 및 누산 연산들을 수행하기 위한 다양한 시스템들에 적용가능한 것으로 간주된다. 다른 양상들 및 특징들은 명세서를 고려할 시에 당업자들에게 자명할 것이다. 회로들 및 방법들은, ASIC(application specific integrated circuit)로서 또는 프로그래밍가능 로직 디바이스 상의 로직으로서 구현될 수 있다. 명세서 및 도면들은 단지 예들로서만 고려되며, 본 발명의 실제 범위는 다음의 청구항들에 의해 표시된다는 것이 의도된다.

Claims (12)

  1. 회로 어레인지먼트(arrangement)로서,
    제1 지수와 제2 지수를 합산하고 출력 지수를 생성하도록 구성된 지수 가산기 회로;
    제1 가수(mantissa)와 제2 가수를 곱하고 출력 가수를 생성하도록 구성된 가수 곱셈기 회로;
    상기 지수 가산기 회로 및 상기 가수 곱셈기 회로의 출력들에 커플링된 제1 변환 회로 - 상기 제1 변환 회로는 상기 출력 지수 및 상기 출력 가수를 고정 소수점 수로 변환하도록 구성됨 -;
    누산 레지스터; 및
    상기 변환 회로 및 상기 누산 레지스터에 커플링된 누산기 회로를 포함하며,
    상기 누산기 회로는 상기 누산 레지스터의 콘텐츠들 및 상기 고정 소수점 수를 누산된 값으로 합산하고 상기 누산된 값을 상기 누산 레지스터에 저장하도록 구성되는, 회로 어레인지먼트.
  2. 제1항에 있어서,
    상기 누산 레지스터로부터의 고정 소수점 출력을 부동 소수점 출력으로 변환하도록 구성된 제2 변환 회로;
    제1 공유 지수 및 제2 공유 지수의 저장을 위해 구성된 공유 지수 레지스터; 및
    상기 제1 공유 지수, 상기 제2 공유 지수, 및 상기 부동 소수점 출력의 지수에 기반하여 상기 부동 소수점 출력의 지수를 확장 지수(expanded exponent)로 업데이트하도록 구성된 지수 복원 회로를 더 포함하는, 회로 어레인지먼트.
  3. 제1항 또는 제2항에 있어서,
    상기 누산 레지스터의 출력에 커플링된 제2 변환 회로를 더 포함하며,
    상기 제2 변환 회로는 상기 누산 레지스터로부터의 고정 소수점 값을 부동 소수점 값으로 변환하도록 구성되는, 회로 어레인지먼트.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 지수 가산기 회로의 복수의 인스턴스(instance)들;
    상기 가수 곱셈기 회로의 복수의 인스턴스들;
    상기 제1 변환 회로의 복수의 인스턴스들을 더 포함하고;
    상기 누산기 회로는 상기 제1 변환 회로의 복수의 인스턴스들에 커플링되며, 복수의 변환 회로들의 제2 쌍으로부터의 피연산자들의 제2 쌍을 합산하는 것과 병렬로 복수의 제1 변환 회로들의 제1 쌍으로부터의 피연산자들의 제1 쌍을 합산하도록 구성된 단일-명령-다중-데이터 가산기 회로를 포함하는, 회로 어레인지먼트.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    MAC(multiply-and-accumulate) 회로들의 어레이를 포함하는 뉴럴 네트워크(neural network)를 더 포함하며,
    각각의 MAC 회로는 상기 지수 가산기 회로, 상기 가수 곱셈기 회로, 상기 제1 변환 회로, 상기 누산 레지스터, 및 상기 누산기 회로의 개개의 인스턴스들을 포함하는, 회로 어레인지먼트.
  6. 방법으로서,
    제1 공유 지수 및 제2 공유 지수를 제1 공유 지수 레지스터 및 제2 공유 지수 레지스터에 각각 저장하는 단계;
    제1 지수와 제2 지수를 합산하고 출력 지수를 생성하는 단계;
    제1 가수와 제2 가수를 곱하고 출력 가수를 생성하는 단계;
    상기 출력 지수 및 상기 출력 가수에 기반한 값과 누산 레지스터의 콘텐츠들을 누산된 값으로 합산하는 단계;
    상기 누산된 값을 상기 누산 레지스터에 저장하는 단계; 및
    상기 제1 공유 지수, 상기 제2 공유 지수, 및 상기 누산된 값의 지수에 기반하여 상기 누산된 값의 지수를 확장 지수로 업데이트하는 단계를 포함하는, 방법.
  7. 제6항에 있어서,
    피연산자 포맷팅 회로에 의해, 2개 이상의 부동 소수점 피승수(multiplicand)들을 멀티-피승수 피연산자로 결합하는 단계;
    상기 피연산자 포맷팅 회로에 의해, 2개 이상의 부동 소수점 승수(multiplier)들을 멀티-승수 피연산자로 결합하는 단계 - 상기 곱하는 것은, 상기 멀티-피승수 피연산자를 상기 멀티-승수 피연산자와 곱하고, 4개 이상의 가수 곱들을 갖는 값을 출력하는 것을 포함함 -;
    지수 가산기 회로의 4개 이상의 인스턴스들의 각각의 인스턴스에 의해, 상기 2개 이상의 부동 소수점 피승수들 중 하나의 피승수의 지수와 상기 2개 이상의 부동 소수점 승수들 중 하나의 승수의 지수를 합산하고, 출력 지수를 생성하는 단계;
    제1 변환 회로의 4개 이상의 인스턴스들의 각각의 인스턴스에 의해, 상기 출력 지수, 및 상기 가수 곱들 중 하나의 가수 곱을 고정 소수점 수로 변환하는 단계;
    누산기 회로의 4개 이상의 인스턴스들에 의해, 누산 레지스터의 4개 이상의 인스턴스들 중 하나의 인스턴스의 콘텐츠들과 상기 고정 소수점 수를 누산된 값으로 합산하고, 상기 누산된 값을 상기 누산 레지스터의 인스턴스들 중 하나의 인스턴스에 저장하는 단계;
    제2 변환 회로의 4개 이상의 인스턴스들에 의해, 상기 누산 레지스터의 인스턴스들 중 하나의 인스턴스로부터의 고정 소수점 출력을 부동 소수점 출력으로 변환하는 단계; 및
    지수 복원 회로의 4개 이상의 인스턴스들에 의해, 상기 제1 공유 지수, 상기 제2 공유 지수, 및 상기 부동 소수점 출력의 지수에 기반하여, 상기 제2 변환 회로의 인스턴스들 중 하나의 인스턴스로부터의 상기 부동 소수점 출력의 지수를 확장 지수로 업데이트하는 단계를 더 포함하는, 방법.
  8. 제7항에 있어서,
    상기 제1 공유 지수는 상기 2개 이상의 부동 소수점 피승수들의 공유 지수인, 방법.
  9. 제8항에 있어서,
    상기 제2 공유 지수는 상기 2개 이상의 부동 소수점 승수들의 공유 지수인, 방법.
  10. 제6항 내지 제9항 중 어느 한 항에 있어서,
    공유 지수 가산기 회로에 의해 상기 제1 공유 지수와 상기 제2 공유 지수를 합산하는 단계를 더 포함하는, 방법.
  11. 제6항 내지 제10항 중 어느 한 항에 있어서,
    상기 지수 복원 회로의 각각의 인스턴스에 의해, 상기 부동 소수점 출력의 지수와 상기 공유 지수 가산기 회로의 출력을 합산하는 단계를 더 포함하는, 방법.
  12. 제6항 내지 제11항 중 어느 한 항에 있어서,
    제1 변환 회로에 의해 상기 출력 지수 및 상기 출력 가수를 고정 소수점 값으로 변환하는 단계 - 상기 고정 소수점 값은 상기 출력 지수 및 상기 출력 가수에 기반한 값임 -; 및
    제2 변환 회로에 의해, 상기 누산 레지스터로부터의 고정 소수점 값을 부동 소수점 값으로 변환하는 단계를 더 포함하는, 방법.
KR1020217011052A 2018-09-19 2019-09-05 곱셈 및 누산 회로 KR20210057158A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/136,041 2018-09-19
US16/136,041 US10747502B2 (en) 2018-09-19 2018-09-19 Multiply and accumulate circuit
PCT/US2019/049760 WO2020060769A1 (en) 2018-09-19 2019-09-05 Multiply and accumulate circuit

Publications (1)

Publication Number Publication Date
KR20210057158A true KR20210057158A (ko) 2021-05-20

Family

ID=67998738

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217011052A KR20210057158A (ko) 2018-09-19 2019-09-05 곱셈 및 누산 회로

Country Status (6)

Country Link
US (1) US10747502B2 (ko)
EP (1) EP3853713A1 (ko)
JP (1) JP7476175B2 (ko)
KR (1) KR20210057158A (ko)
CN (1) CN112740171B (ko)
WO (1) WO2020060769A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023068489A1 (ko) * 2021-10-18 2023-04-27 삼성전자 주식회사 상이한 데이터 타입들을 지원하는 npu를 포함하는 전자 장치 및 그 제어 방법
KR102635978B1 (ko) * 2023-06-27 2024-02-13 주식회사 하이퍼엑셀 생성형 거대 언어 모델의 연산 가속을 위해 메모리대역폭 사용을 극대화하기 위한 혼합정밀도 mac 트리 구조

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2580171B (en) * 2018-12-21 2021-02-17 Imagination Tech Ltd Methods and systems for selecting quantisation parameters for deep neural networks using back-propagation
US11562247B2 (en) 2019-01-24 2023-01-24 Microsoft Technology Licensing, Llc Neural network activation compression with non-uniform mantissas
FR3097992B1 (fr) * 2019-06-25 2021-06-25 Kalray Opérateur d’addition et multiplication fusionnées pour nombres à virgule flottante de précision mixte réalisant un arrondi correct
FR3097993B1 (fr) * 2019-06-25 2021-10-22 Kalray Opérateur de produit scalaire de nombres à virgule flottante réalisant un arrondi correct
US11615301B2 (en) * 2019-09-03 2023-03-28 Microsoft Technology Licensing, Llc Lossless exponent and lossy mantissa weight compression for training deep neural networks
US11704052B2 (en) 2020-01-07 2023-07-18 SK Hynix Inc. Processing-in-memory (PIM) systems
US20220229633A1 (en) 2020-01-07 2022-07-21 SK Hynix Inc. Multiplication and accumulation(mac) operator and processing-in-memory (pim) device including the mac operator
US11829760B2 (en) 2020-01-07 2023-11-28 SK Hynix Inc. Processing-in-memory device and processing-in-memory system including the same
US11635911B2 (en) 2020-01-07 2023-04-25 SK Hynix Inc. Processing-in-memory (PIM) system and operating methods of the PIM system
US11663000B2 (en) * 2020-01-07 2023-05-30 SK Hynix Inc. Multiplication and accumulation(MAC) operator and processing-in-memory (PIM) device including the MAC operator
US11385837B2 (en) 2020-01-07 2022-07-12 SK Hynix Inc. Memory system
US11847451B2 (en) 2020-01-07 2023-12-19 SK Hynix Inc. Processing-in-memory (PIM) device for implementing a quantization scheme
US11983508B2 (en) 2020-01-07 2024-05-14 SK Hynix Inc. Processing-in-memory (PIM) system and operating methods of the PIM system
US11720354B2 (en) 2020-01-07 2023-08-08 SK Hynix Inc. Processing-in-memory (PIM) system and operating methods of the PIM system
US11908541B2 (en) 2020-01-07 2024-02-20 SK Hynix Inc. Processing-in-memory (PIM) systems
US11500629B2 (en) 2020-01-07 2022-11-15 SK Hynix Inc. Processing-in-memory (PIM) system including multiplying-and-accumulating (MAC) circuit
TW202141290A (zh) 2020-01-07 2021-11-01 韓商愛思開海力士有限公司 記憶體中處理(pim)系統和pim系統的操作方法
US11275562B2 (en) * 2020-02-19 2022-03-15 Micron Technology, Inc. Bit string accumulation
KR20210154502A (ko) * 2020-06-12 2021-12-21 삼성전자주식회사 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법
CN111767025B (zh) * 2020-08-04 2023-11-21 腾讯科技(深圳)有限公司 包括乘累加器的芯片、终端及浮点运算的控制方法
CN112558918B (zh) * 2020-12-11 2022-05-27 北京百度网讯科技有限公司 用于神经网络的乘加运算方法和装置
WO2022178339A1 (en) * 2021-02-21 2022-08-25 Redpine Signals Inc Floating point dot product multiplier-accumulator
CN113138748B (zh) * 2021-04-09 2023-08-29 广东工业大学 一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累加器
US20210326116A1 (en) * 2021-06-25 2021-10-21 Intel Corporation High precision decomposable dsp entity
CN113778523B (zh) * 2021-09-14 2024-04-09 北京升哲科技有限公司 一种数据处理方法、装置、电子设备及存储介质
CN114237550B (zh) * 2021-11-10 2023-10-13 电子科技大学 一种基于Wallace树的多输入移位求和累加器
US20220113940A1 (en) * 2021-12-22 2022-04-14 Martin Langhammer Systems and Methods for Structured Mixed-Precision in a Specialized Processing Block

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3144015A1 (de) * 1981-11-05 1983-05-26 Ulrich Prof. Dr. 7500 Karlsruhe Kulisch "schaltungsanordnung und verfahren zur bildung von skalarprodukten und summen von gleitkommazahlen mit maximaler genauigkeit"
US4615013A (en) * 1983-08-02 1986-09-30 The Singer Company Method and apparatus for texture generation
US4991131A (en) 1987-10-06 1991-02-05 Industrial Technology Research Institute Multiplication and accumulation device
US5247471A (en) * 1991-12-13 1993-09-21 International Business Machines Corporation Radix aligner for floating point addition and subtraction
JPH11212768A (ja) * 1998-01-23 1999-08-06 Sanyo Electric Co Ltd 対数値算出回路
JP2007079696A (ja) 2005-09-12 2007-03-29 Hitachi Kokusai Electric Inc 浮動小数点数のベクトル演算方法
KR100917862B1 (ko) 2007-12-14 2009-09-18 한국전자통신연구원 다중입력 다중출력 시스템에서 qr 분해 장치 및 그 방법
CN102520906A (zh) * 2011-12-13 2012-06-27 中国科学院自动化研究所 支持定浮点可重构的向量长度可配置的向量点积累加网络
US9575725B1 (en) * 2014-03-18 2017-02-21 Altera Corporation Specialized processing block with embedded pipelined accumulator circuitry
CN105607889A (zh) * 2015-10-29 2016-05-25 中国人民解放军国防科学技术大学 Gpdsp共享乘法器结构的定点浮点运算部件
GB201607713D0 (en) 2016-05-03 2016-06-15 Imagination Tech Ltd Convolutional neural network

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023068489A1 (ko) * 2021-10-18 2023-04-27 삼성전자 주식회사 상이한 데이터 타입들을 지원하는 npu를 포함하는 전자 장치 및 그 제어 방법
KR102635978B1 (ko) * 2023-06-27 2024-02-13 주식회사 하이퍼엑셀 생성형 거대 언어 모델의 연산 가속을 위해 메모리대역폭 사용을 극대화하기 위한 혼합정밀도 mac 트리 구조

Also Published As

Publication number Publication date
US10747502B2 (en) 2020-08-18
WO2020060769A1 (en) 2020-03-26
EP3853713A1 (en) 2021-07-28
JP2021536076A (ja) 2021-12-23
CN112740171B (zh) 2024-03-08
CN112740171A (zh) 2021-04-30
JP7476175B2 (ja) 2024-04-30
US20200089472A1 (en) 2020-03-19

Similar Documents

Publication Publication Date Title
JP7476175B2 (ja) 乗算累積回路
US9916131B2 (en) Techniques and devices for performing arithmetic
US8463835B1 (en) Circuit for and method of providing a floating-point adder
US11042360B1 (en) Multiplier circuitry for multiplying operands of multiple data types
KR102153791B1 (ko) 인공 신경망을 위한 디지털 뉴런, 인공 뉴런 및 이를 포함하는 추론 엔진
Jain et al. Design and development of efficient reversible floating point arithmetic unit
TWI776213B (zh) 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置
US5337266A (en) Method and apparatus for fast logarithmic addition and subtraction
CN114860193A (zh) 一种用于计算Power函数的硬件运算电路及数据处理方法
EP4231134A1 (en) Method and system for calculating dot products
Saini et al. Efficient implementation of pipelined double precision floating point unit on FPGA
Kumar et al. Simulation And Synthesis Of 32-Bit Multiplier Using Configurable Devices
THUAN A NOVEL QUOTIENT PREDICTION FOR FLOATING-POINT DIVISION
Essam et al. Design and Implementation of Low Power Posit Arithmetic Unit for Efficient Hardware Accelerators
Gowreesrinivas et al. Implementation and Analysis of Single Precision Floating Point Multiplication Using Vedic and Canonic Signed Digit Algorithm
Chittaluri Implementation of area efficient IEEE-754 double precision floating point arithmetic unit using Verilog
Pattan et al. An Efficient Implementation of Floating Point Multiplier
WO2023160868A1 (en) Method for the computation of a narrow bit width linear algebra operation
VARRI et al. A Novel Implementation of Floating Point Multiplier
JYOTHI et al. Implementation of Modified Booth Algorithm for Power Critical Applications
CN114174982A (zh) 用于乘法的计算单元、方法和计算机程序
CN116974517A (zh) 浮点数处理方法、装置、计算机设备和处理器
CN116610284A (zh) 用于计算点积的方法和系统
Varun et al. Efficient FPGA Implementation of Variable precision floating point Arithmetic using VHDL
Goudar et al. Design of Floating Point Multiplier using Modified Wallace & Dadda Algorithms

Legal Events

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