KR102541465B1 - 기계 학습 및 심층 학습 응용들을 위한 적응적 행렬 곱셈 가속기 - Google Patents

기계 학습 및 심층 학습 응용들을 위한 적응적 행렬 곱셈 가속기 Download PDF

Info

Publication number
KR102541465B1
KR102541465B1 KR1020190149107A KR20190149107A KR102541465B1 KR 102541465 B1 KR102541465 B1 KR 102541465B1 KR 1020190149107 A KR1020190149107 A KR 1020190149107A KR 20190149107 A KR20190149107 A KR 20190149107A KR 102541465 B1 KR102541465 B1 KR 102541465B1
Authority
KR
South Korea
Prior art keywords
circuit
multiplication unit
internal buffer
product
buffer circuit
Prior art date
Application number
KR1020190149107A
Other languages
English (en)
Other versions
KR20200102332A (ko
Inventor
동옌 지앙
디민 니우
홍종 정
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20200102332A publication Critical patent/KR20200102332A/ko
Application granted granted Critical
Publication of KR102541465B1 publication Critical patent/KR102541465B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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
    • 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/3802Instruction prefetching
    • 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/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Complex Calculations (AREA)
  • Cable Transmission Systems, Equalization Of Radio And Reduction Of Echo (AREA)

Abstract

적응적 행렬 곱셈기가 제공된다. 일부 실시 예들에서, 행렬 곱셈기는 제1 곱셈 유닛, 제2 곱셈 유닛, 메모리 로드 회로, 그리고 외부 버퍼 회로를 포함한다. 제1 곱셈 유닛은 제1 내부 버퍼 회로 및 제2 내부 버퍼 회로를 포함하고, 제2 곱셈 유닛은 제1 내부 버퍼 회로 및 제2 내부 버퍼 회로를 포함한다. 메모리 로드 회로는 버스트 메모리 액세스 모드의 단일 버스트에서, 메모리로부터의 데이터를 제1 곱셈 유닛의 제1 내부 버퍼 및 제2 곱셈 유닛의 제1 내부 버퍼에 로드하도록 구성된다.

Description

기계 학습 및 심층 학습 응용들을 위한 적응적 행렬 곱셈 가속기{ADAPTIVE MATRIX MULTIPLICATION ACCELERATOR FOR MACHINE LEARNING AND DEEP LEARNING APPLICATIONS}
본 기재에 따른 실시 예들의 하나 또는 그보다 많은 측면들은 프로세싱 회로들, 더 상세하게는 행렬들을 곱하는 회로에 관한 것이다.
기계 학습 응용들, 특히 심층 신경망들(deep neural networks)을 사용하는 응용들은 행렬 곱셈들인 대부분의 연산들을 수반한다. 일부 응용들에서, 행렬 곱셈은 전체 심층 신경망의 실행 시간의 대부분을 소비할 수 있다. 예를 들어, 행렬들을 곱하기 위한 시스템은 심층 신경망의 성능을 개선하는데 효과적으로 도움이 될 수 있다.
본 발명의 목적은 기계 학습 및 심층 학습을 가속할 수 있는 적응적 곱셈기를 제공하는 데에 있다.
일부 실시 예들에 따르면, 제1 곱셈 유닛; 제2 곱셈 유닛; 메모리 로드 회로; 그리고 외부 버퍼 회로를 포함하고, 제1 곱셈 유닛은 제1 내부 버퍼 회로 및 제2 내부 버퍼 회로를 포함하고, 제2 곱셈 유닛은 제1 내부 버퍼 회로 및 제2 내부 버퍼 회로를 포함하고, 메모리 로드 회로는 버스트 메모리 액세스 모드의 단일 버스트에서 메모리로부터 데이터를 상기 제1 곱셈 유닛의 상기 제1 내부 버퍼 회로로, 그리고 상기 제2 곱셈 유닛의 상기 제1 내부 버퍼 회로로 로드하도록 구성되는 시스템이 제공된다.
일부 실시 예들에서, 상기 곱셈 유닛은 덧셈 회로를 포함하고, 그리고 상기 제1 곱셈 유닛은, 상기 제1 곱셈 유닛의 상기 제1 내부 버퍼 회로의 제1 요소와 상기 제1 곱셈 유닛의 상기 제2 내부 버퍼 회로의 제1 요소의 제1 곱을 형성하고, 상기 제1 곱을 상기 덧셈 회로로 전송하고, 상기 제1 곱셈 유닛의 상기 제1 내부 버퍼 회로의 제2 요소와 상기 제1 곱셈 유닛의 상기 제2 내부 버퍼 회로의 제2 요소의 제2 곱을 형성하고, 그리고 상기 제2 곱을 상기 덧셈 회로로 전송하도록 구성된다.
일부 실시 예들에서, 상기 제1 곱셈 유닛은: 상기 제1 곱을 형성하도록 구성되는 제1 곱셈 회로; 그리고 상기 제2 곱을 형성하도록 구성되는 제2 곱셈 회로를 포함한다.
일부 실시 예들에서, 상기 덧셈 회로는, 상기 제1 곱과 상기 제2 곱의 제1 합을 형성하고, 그리고 상기 제1 합을 상기 외부 버퍼 회로로 전송하도록 구성된다.
일부 실시 예들에서, 상기 제2 곱셈 유닛은 덧셈 회로를 포함하고, 그리고 상기 제2 곱셈 유닛은, 상기 제2 곱셈 유닛의 상기 제1 내부 버퍼 회로의 제1 요소와 상기 제2 곱셈 유닛의 상기 제2 내부 버퍼 회로의 제1 요소의 제3 곱을 형성하고, 상기 제3 곱을 상기 제2 곱셈 유닛의 상기 덧셈 회로로 전송하고, 상기 제2 곱셈 유닛의 상기 제1 내부 버퍼 회로의 제2 요소와 상기 제2 곱셈 유닛의 상기 제2 내부 버퍼 회로의 제2 요소의 제4 곱을 형성하고, 그리고 상기 제4 곱을 상기 제2 곱셈 유닛의 상기 덧셈 회로로 전송하도록 구성된다.
일부 실시 예들에서, 상기 제2 곱셈 유닛의 상기 덧셈 회로는, 상기 제3 곱과 상기 제4 곱의 제2 합을 형성하고, 그리고 상기 제2 합을 상기 외부 버퍼 회로로 전송하도록 구성되고, 그리고 상기 외부 버퍼 회로는 상기 제1 합 및 상기 제2 합을 더하도록 구성된다.
일부 실시 예들에서, 상기 제1 곱셈 유닛은 덧셈 회로를 포함하고, 상기 제1 곱셈 유닛의 상기 제1 내부 버퍼 회로는 제1 미니-버퍼 및 제2 미니-버퍼를 포함하고, 상기 제1 곱셈 유닛의 상기 제2 내부 버퍼 회로는 제1 미니-버퍼 및 제2 미니-버퍼를 포함하고, 상기 제1 곱셈 유닛은, 상기 제1 곱셈 유닛의 상기 제1 내부 버퍼의 상기 제1 미니-버퍼의 제1 요소와 상기 제1 곱셈 유닛의 상기 제2 내부 버퍼의 상기 제1 미니-버퍼의 제1 요소의 제1 곱을 형성하고, 상기 제1 곱을 상기 덧셈 회로로 전송하고, 상기 제1 곱셈 유닛의 상기 제1 내부 버퍼의 상기 제2 미니-버퍼의 제1 요소와 상기 제1 곱셈 유닛의 상기 제2 내부 버퍼의 상기 제2 미니-버퍼의 제1 요소의 제2 곱을 형성하고, 그리고 상기 제2 곱을 상기 덧셈 회로로 전송하도록 구성된다.
일부 실시 예들에서, 상기 제1 곱셈 유닛은, 상기 제1 곱셈 유닛의 상기 제1 내부 버퍼의 상기 제1 미니-버퍼의 제2 요소와 상기 제1 곱셈 유닛의 상기 제2 내부 버퍼의 상기 제1 미니-버퍼의 제1 요소의 제3 곱을 형성하고, 상기 제3 곱을 상기 덧셈 회로로 전송하고, 상기 제1 곱셈 유닛의 상기 제1 내부 버퍼의 상기 제2 미니-버퍼의 제2 요소와 상기 제1 곱셈 유닛의 상기 제2 내부 버퍼의 상기 제2 미니-버퍼의 제1 요소의 제4 곱을 형성하고, 그리고 상기 제4 곱을 상기 덧셈 회로로 전송하도록 더 구성된다.
일부 실시 예들에서, 상기 덧셈 회로는 상기 제1 곱 및 상기 제2 곱의 제1 합을 형성하고, 그리고 상기 제1 합을 상기 외부 버퍼 회로로 전송하도록 구성되고, 그리고 상기 외부 버퍼는 상기 제1 합을 상기 외부 버퍼 회로의 제1 요소에 저장하도록 구성된다.
일부 실시 예들에서, 상기 덧셈 회로는 상기 제3 곱과 상기 제4 곱의 제2 합을 형성하고, 그리고 상기 제2 합을 상기 외부 버퍼 회로로 전송하도록 더 구성되고, 그리고 상기 외부 버퍼 회로는 상기 제2 합을 상기 외부 버퍼 회로의 제2 요소에 저장하도록 구성된다.
일부 실시 예들에서, 상기 제1 곱셈 유닛은 덧셈 회로를 더 포함하고, 그리고 상기 곱셈 유닛은, 상기 제1 곱셈 유닛의 상기 제1 내부 버퍼 회로의 제1 요소와 상기 제1 곱셈 유닛의 상기 외부 버퍼 회로의 제1 요소의 제1 곱을 형성하고, 상기 제1 곱을 상기 덧셈 회로로 전송하고, 상기 제1 곱셈 유닛의 상기 제1 내부 버퍼 회로의 제2 요소와 상기 제1 곱셈 유닛의 상기 외부 버퍼 회로의 제2 요소의 제2 곱을 형성하고, 그리고 상기 제2 곱을 상기 덧셈 회로로 전송하도록 구성된다.
일부 실시 예들에서, 상기 덧셈 회로는, 상기 제1 곱과 상기 제1 곱의 제1 합을 형성하고, 그리고 상기 제1 합을 상기 제2 내부 버퍼 회로의 제1 요소에 저장하도록 구성된다.
일부 실시 예들에서, 상기 제1 곱셈 유닛은: 상기 제1 곱을 형성하도록 구성되는 제1 곱셈 회로; 그리고 상기 제2 곱을 형성하도록 구성되는 제2 곱셈 회로를 포함한다.
일부 실시 예들에서, 제1 엔티티 및 제2 엔티티를 포함하고, 상기 제1 엔티티는 상기 제1 곱셈 유닛 및 상기 제2 곱셈 유닛을 포함한다.
일부 실시 예들에서, 상기 메모리 로드 회로는 상기 제1 엔티티로부터 읽기 요청들을 수신하고, 상기 제2 엔티티로부터 읽기 요청들을 수신하고, 그리고 상기 읽기 요청들을 중재하도록 구성된다.
일부 실시 예들에서, 상기 메모리 로드 회로는 메모리로부터 행렬의 일부를 상기 행렬의 상기 일부의 요소들이 전치되는 방식으로 상기 제1 곱셈 유닛의 상기 제2 내부 버퍼 회로에 로드하도록 구성된다.
일부 실시 예들에 따르면, 제1 곱셈 유닛; 제2 곱셈 유닛; 메모리 로드 회로; 메모리 저장 회로; 그리고 외부 버퍼 회로를 포함하고, 상기 제1 곱셈 유닛은: 곱셈 회로; 제1 내부 버퍼 회로; 제2 내부 버퍼 회로; 상기 곱셈 회로의 입력에 연결된 공통 포트를 구비한 곱셈 회로 입력 멀티플렉서; 상기 곱셈 회로의 출력에 연결된 공통 포트를 구비한 곱셈 회로 출력 멀티플렉서; 그리고 상기 제2 내부 버퍼 회로의 출력에 연결된 공통 포트를 구비한 제2 내부 버퍼 회로 출력 멀티플렉서를 포함하는 시스템이 제공된다.
일부 실시 예들에서, 상기 제1 곱셈 유닛의 제1 상태에서, 상기 곱셈 회로 입력 멀티플렉서는 상기 제2 내부 버퍼 회로 출력 멀티플렉서로부터의 데이터를 상기 곱셈 회로의 제1 입력에 전달하도록 구성되고, 상기 곱셈 회로 출력 멀티플렉서는 상기 곱셈 회로의 출력으로부터의 데이터를 상기 출력 버퍼 회로로 전달하도록 구성되고, 그리고 상기 제2 내부 버퍼 회로 출력 멀티플렉서는 상기 제2 내부 버퍼 회로로부터의 데이터를 상기 곱셈 회로 입력 멀티플렉서에 전달하도록 구성된다.
일부 실시 예들에서, 상기 곱셈 유닛의 제2 상태에서, 상기 곱셈 회로 입력 멀티플렉서는 상기 출력 버퍼 회로로부터의 데이터를 상기 곱셈 회로의 상기 제1 입력에 전달하도록 구성되고, 상기 곱셈 회로 출력 멀티플렉서는 상기 곱셈 회로의 상기 출력으로부터의 데이터를 상기 제2 내부 버퍼 회로로 전달하도록 구성되고, 그리고 상기 제2 내부 버퍼 회로 출력 멀티플렉서는 상기 제2 내부 버퍼 회로로부터의 데이터를 상기 메모리 저장 회로로 전달하도록 구성된다.
일부 실시 예들에 따르면, 제1 곱셈 유닛; 제2 곱셈 유닛; 메모리로부터의 데이터를 로딩하기 위한 수단; 그리고 출력 버퍼 회로를 포함하고, 상기 제1 곱셈 유닛은 제1 내부 버퍼 회로 및 제2 내부 버퍼 회로를 포함하고, 상기 제2 곱셈 유닛은 제1 내부 버퍼 회로 및 제2 내부 버퍼 회로를 포함하고, 상기 메모리로부터의 데이터를 로딩하기 위한 수단은 상기 메모리로부터의 데이터를 버스트 메모리 액세스 모드의 단일 버스트로 상기 제1 곱셈 유닛의 상기 제1 내부 버퍼 회로 및 상기 제2 곱셈 유닛의 상기 제1 내부 버퍼 회로로 로드하도록 구성되는 시스템이 제공된다.
일부 실시 예들에 따르면, 제1 값을 저장하는 프로세싱 회로의 제1 레지스터에 응답하여, 행렬 곱의 제1 인자인 제1 행렬과 상기 행렬 곱의 제2 인자인 제2 행렬의 상기 행렬 곱을 계산하는 단계; 제2 값을 저장하는 상기 제1 레지스터에 응답하여, 행렬 곱의 제1 인자인 상기 제1 행렬의 전치 행렬과 상기 행렬 곱의 제2 인자인 제2 행렬의 상기 행렬 곱을 계산하는 단계; 제3 값을 저장하는 상기 제1 레지스터에 응답하여, 행렬 곱의 제1 인자인 상기 제1 행렬과 상기 행렬 곱의 제2 인자인 상기 제2 행렬의 전치 행렬의 상기 행렬 곱을 계산하는 단계; 제4 값을 저장하는 상기 제1 레지스터에 응답하여, 행렬 곱의 제1 인자인 상기 제1 행렬의 상기 전치 행렬과 상기 행렬 곱의 제2 인자인 상기 제2 행렬의 상기 전치 행렬의 상기 행렬 곱을 계산하는 단계; 그리고 제5 값을 저장하는 상기 제1 레지스터에 응답하여, 행렬 곱의 제1 인자인 상기 제1 행렬과 상기 행렬 곱의 제2 인자인 벡터의 상기 행렬 곱을 계산하는 단계를 포함하는 곱셈들을 수행하기 위한 방법이 제공된다.
일부 실시 예들에 따르면, 제1 추상화(abstract) 버퍼에 저장된 제1 행렬 및 제2 추상 버퍼에 저장된 제2 행렬의 행렬 곱을 계산하는 단계; 그리고 상기 행렬 곱을 제3 추상 버퍼에 저장하는 단계를 포함하고, 제4 값을 저장하는 제2 레지스터에 응답하여, 상기 제1 추상 버퍼는 제1 물리 버퍼에 매핑되고, 상기 제2 추상 버퍼는 제2 물리 버퍼에 매핑되고, 그리고 상기 제3 추상 버퍼는 제3 물리 버퍼에 매핑되고, 그리고 제5 값을 저장하는 제2 레지스터에 응답하여, 상기 제1 추상 버퍼는 상기 제1 물리 버퍼에 매핑되고, 상기 제2 추상 버퍼는 상기 제3 물리 버퍼에 매핑되고, 그리고 상기 제3 추상 버퍼는 상기 제2 물리 버퍼에 매핑되는 곱셈들을 수행하기 위한 방법이 제공된다.
일부 실시 예들에서, 방법은 곱셈될 행렬들의 차원들에 기반하여 상기 제2 레지스터에 상기 제4 값 또는 상기 제5 값을 저장하는 단계를 더 포함한다.
일부 실시 예들에 따르면, 버스트 모드에서 메모리로부터 프로세싱 회로의 제1 유닛의 제1 버퍼로 그리고 상기 프로세싱 회로의 제2 유닛의 제1 버퍼로 제1 행렬의 일부를 읽는 단계; 메모리로부터 상기 프로세싱 유닛의 상기 제1 유닛의 제2 버퍼로 그리고 상기 제2 유닛의 제2 버퍼로 제2 행렬의 일부를 읽는 단계; 그리고 상기 제1 유닛의 상기 제1 버퍼에 저장된 요소들 및 상기 제2 유닛의 상기 제1 버퍼에 저장된 요소들의 행렬 곱을 계산하는 단계를 포함하는 방법이 제공된다.
일부 실시 예들에서, 상기 제1 유닛은 상기 프로세싱 유닛의 제1 엔티티이고, 상기 제2 유닛은 상기 프로세싱 유닛의 제2 엔티티이다.
본 발명에 따르면, 다양한 형태로 행렬들의 곱셈을 계산할 수 있는 적응적 행렬 곱셈기가 제공된다. 따라서, 기계 학습 및 심층 학습이 가속될 수 있다.
본 기재의 이러한 그리고 다른 특색들 및 장점들이 상세한 설명, 청구항들, 그리고 첨부된 도면들을 참조하여 이해되고 인식될 것이다.
도 1a는 본 기재의 실시 예에 따른 행렬 곱셈을 위한 회로의 블록도이다.
도 1b는 본 기재의 실시 예에 따른 행렬 곱셈을 위한 회로의 블록도이다.
도 2는 본 기재의 실시 예에 따른 행렬 차원도이다.
도 3a는 본 기재의 실시 예에 따른 데이터 배열도이다.
도 3b는 본 기재의 실시 예에 따른 데이터 배열도이다.
도 4a는 본 기재의 실시 예에 따른 행렬 곱셈을 위한 회로의 일부의 블록도이다.
도 4b는 본 기재의 실시 예에 따른 행렬 곱셈을 위한 회로의 일부의 블록도이다.
도 4c는 본 기재의 실시 예에 따른 행렬 곱셈을 위한 회로의 일부의 블록도이다.
도 5a는 본 기재의 실시 예에 따른 데이터 배열도이다.
도 5b는 본 기재의 실시 예에 따른 데이터 배열도이다.
도 6a는 본 기재의 실시 예에 따른 데이터 배열도이다.
도 6b는 본 기재의 실시 예에 따른 데이터 배열도이다.
도 7은 본 기재의 실시 예에 따른 데이터 배열도이다.
도 8a는 본 기재의 실시 예에 따른 데이터 배열도이다.
도 8b는 본 기재의 실시 예에 따른 데이터 배열도이다.
도 9a는 본 기재의 실시 예에 따른 행렬 곱셈을 위한 회로의 블록도이다.
도 9b는 본 기재의 실시 예에 따른 행렬 곱셈을 위한 회로의 블록도이다.
도 9c는 본 기재의 실시 예에 따른 행렬 곱셈을 위한 회로의 블록도이다.
첨부된 도면들과 연관되어 아래에 제공되는 상세한 설명은 본 기재에 따라 제공되는 적응적 행렬 곱셈기의 모범적인 실시 예들의 설명으로서 의도되며, 본 기재가 구성되거나 또는 활용될 수 있는 유일한 형태들을 나타내는 것으로 의도되지 않는다. 여기의 설명은 예시적인 실시 예들과 연관된 본 기재의 특색들을 제공한다. 그러나 동일한 또는 등가적인 기능들 및 구조들이 본 기재의 범위 내에 포함되는 것으로 의도될 수 있는 다른 실시 예들에 의해 달성될 수 있음이 이해될 것이다. 여기에서 다르게 언급되지 않으면, 유사한 참조 번호들은 유사한 요소들 또는 특색들을 가리키는 것으로 의도된다.
도 1a는 일부 실시 예들에 따른 적응적 행렬 곱셈기의 예를 보여준다. 도 1a의 적응적 행렬 곱셈기는 네 개의 곱셈 유닛들(110)(U0 내지 U3으로 명명됨)을 포함하는 하나의 엔티티(105)를 포함한다. 아래에서 엔티티들(105)이 더 상세히 논의된다. 곱셈 유닛들(110)의 각각은(예를 들어, 8개) 곱셈기들 또는 '곱셈 회로들(405)(도 4a 내지 도 4c 참조)'의 어레이(112)를 포함한다. 곱셈 유닛들(110)의 각각은 제1 내부 버퍼 회로(115), 제2 내부 버퍼 회로(120), 그리고 임시 내부 버퍼 회로(125)를 더 포함한다. 곱셈 유닛들(110)의 각각은 '데이터 워드들'로 참조될 수 있는 계산 유닛들에서 동작(예를 들어, 프로세스)할 수 있다. 응용에 의존하여, 데이터 워드는 8비트 정수(INT8), 16비트 정수(INT16), 32비트 정수(INT32), 16비트 부동 소수점(FP16), 또는 32비트 부동 소수점(FP32)일 수 있다.
일부 실시 예들은 행렬 곱셈들 또는 행렬들과 벡터들의 곱셈들을 수행하도록 채용될 수 있다. 일부 실시 예들에서, 곱셈 프로세스는 하나 또는 그보다 많은 레지스터들(예를 들어, 아래에서 더 상세히 논의되는 레지스터 모듈(180))에 저장된 값들에 의해 적어도 부분적으로 제어될 수 있다. 행렬 곱셈은 가환적(commutative)이지 않고, 따라서, 예를 들어, 일반적으로 'A x B'의 행렬 곱은 'B x A'의 행렬 곱과 같지 않다. 일부 실시 예들은 하나 또는 그보다 많은 레지스터들의 제어 하에 다양한 곱셈들을 수행할 수 있으며, 아래에서 더 상세히 기술되는 바와 같이, 다양한 곱셈들은 두 개의 행렬들의 곱을 계산하는 것, 하나의 행렬과 다른 행렬의 전치 행렬(transpose)의 곱, 두 개의 행렬들의 전치 행렬들의 곱, 또는 행렬과 벡터의 곱을 계산하는 것을 포함한다.
임시 내부 버퍼 회로(125)는 누산기(135) 및 버퍼(140)(예를 들어, 레지스터들의 어레이)를 포함하는 외부 버퍼 회로(130)에 연결된다. 적응적 행렬 곱셈기는 제1 내부 버퍼 회로(115)를 위한 제1 로드 엔티티 모듈(150)(또는 메모리 로드 회로), 제2 내부 버퍼 회로(120)를 위한 제2 로드 엔티티 모듈(150), 그리고 외부 버퍼 회로(130)를 위한 로드 유닛(155)(또는 로드 회로)을 포함할 수 있다. 로드 엔티티 모듈들(150) 및 로드 유닛(155)은 메모리 브릿지(165)를 통해 하나 또는 그보다 많은 메모리들(162)과 통신할 수 있다. 일부 실시 예들에서, 로드 엔티티 모듈들(150)은 메모리들(162)로부터 버스트 모드로 읽기 동작들을 수행하며, 즉 메모리들로 전송되는 단일 읽기 명령에 응답하여 복수의 데이터 워드들이 메모리들로부터 반환될 수 있다. 버스트 모드의 동작은 메모리들(162) 중 어느 하나가 읽기 명령에 응답하여 하나의 데이터 워드만을 전송하는 모드의 동작보다 매우 높은 데이터 스루풋(throughput)을 유발할 수 있다. 메모리 저장 회로(170)(또는 메모리 저장 유닛)는 또한 메모리 브릿지(165)를 통해 하나 또는 그보다 많은 메모리들(162)과 통신할 수 있으며, 계산들의 결과들을 메모리들(162)에 저장할 수 있다.
제어 회로(175)는 적응적 행렬 곱셈기 내의 다른 회로들의 동작을 제어할 수 있고, 그리고 레지스터 모듈(180)을 통해 호스트로부터 명령들을 수신(그리고 상태 정보를 호스트로 반환)할 수 있다.
제1 내부 버퍼 회로(115) 및 제2 내부 버퍼 회로(120)의 각각은 미니-버퍼들의 어레이, 예를 들어 곱셈 회로들의 어레이(112) 내의 곱셈 회로들의 각각에 대해 하나의 미니-버퍼를 포함한다. 미니-버퍼들의 각 어레이는 개념적으로 요소들의 행렬을 형성하는 것으로 여겨지고, 행렬의 각 열(column)은 미니-버퍼들의 하나에 대응하고, 각 행(row)은 요소들의 세트에 대응하고, 각 행의 요소들은 각 미니 버퍼로부터 하나씩이고, 각 행에 대응하는 요소들 모두는 각 미니-버퍼 내의 동일 위치에 존재한다. 예를 들어, 제1 행은 각 미니-버퍼의 제1 요소에 대응할 수 있다.
동작에서, 곱셈 회로들의 어레이(112)는 미니-버퍼들의 행들의 내적들(dot products)을 형성할 수 있다. 여기에서 사용되는 바와 같이, 동일 길이의 두 개의 벡터들(예를 들어, 하나의 행렬의 행과 다른 하나의 행렬의 열)의 '내적'은 벡터들의 요소들의 요소-단위(element-wise) 곱들의 합을 의미한다. 곱셈 회로들의 어레이(112)는, 예를 들어, (i) 제1 내부 버퍼 회로(115)의 미니-버퍼들의 어레이의 제1행과 (ii) 제2 내부 버퍼 회로(120)의 미니-버퍼들의 어레이의 제1행의 내적을 형성하고, 이후에 (i) 제1 내부 버퍼 회로(115)의 미니-버퍼들의 어레이의 제2행과 (ii) 제2 내부 버퍼 회로(120)의 미니-버퍼들의 어레이의 제1행의 내적을 형성할 수 있다. 행렬 곱셈을 수행하는 이러한 연산들의 사용은 아래에서 더 상세히 논의된다.
도 1b는 각각 두 개의 곱셈 유닛들(110)을 구비한 두 개의 엔티티들(105)을 갖는 적응적 행렬 곱셈기의 예를 보여준다. 적응적 행렬 곱셈기에 포함되는 엔티티들(105)의 수, 그리고 엔티티(105) 당 곱셈 유닛들(110)의 수의 선택은 적응적 행렬 곱셈기가 의도되는 응용에 기반하여, 그리고 하드웨어 자원들에 기반하여 행해진다. 적응적 행렬 곱셈기에 포함되는 엔티티들(105)의 수, 그리고 엔티티(105) 당 곱셈 유닛들(110)의 수는 설계 시에, 또는 시스템 시동(startup) 시에 선택될 수 있으며, 또는 동작 동안 실시간으로 변경될 수 있다. 일부 실시 예들에서, 메모리들(162)로부터의 데이터는 폭(예를 들어, 128비트)을 갖는 데이터 버스에서 곱셈 유닛들(110)로 전송된다. 유닛의 미니-버퍼들의 수는 데이터 워드의 폭에 대한 데이터 버스의 폭의 비율에 기반하여(예를 들어, 동일하게) 선택될 수 있다. 엔티티 당 유닛들의 수는 메모리 버스 대역폭/속도 대 계산(곱셈)에 필요한 사이클들에 기반하여(예를 들어, 동일하게) 선택될 수 있으며, 다른 마이크로-아키텍처 인자들(factors)에 의해 미세 조정된다(fine-tuned). 메모리 액세스 동작들의 그래뉼래러티(granularity, 세분도)는 '타일(tile)'로 참조(명명)될 수 있는 사각형, 정사각형, 또는 일차원 어레이이다. 타일은 'R_TW x C_TW'로 파라미터화(parameterized) 될 수 있으며, 'R_TW'는 '1, 2, 4 내지 2r'의 범위 내의 값을 갖는 타일 행 폭이고, 'r'은 양의 정수(즉, 타일 행 폭은 '1, 2, 내지 2의 r 승의 다른 수')이다. 'C_TW'는 '1, 2, 4, 내지 2c'의 범위 내의 값을 갖는 타일 열 폭이다(즉, 타일 열 폭은 '1, 2, 내지 2의 c 승인 다른 수). 각 타일은 다수의 워드들을 포함한다. 사이즈는 적응적 행렬 곱셈기가 의도되는 응용의 요구들에 기반하여 선택될 수 있다. 적응적 행렬 곱셈기가 의도되는 응용의 요구들에 기반하여, 그리고 구현 요구들에 기반하여, 각 타일은, 메모리로부터 페치(fetch)된 후에, 제1 내부 버퍼 회로(115), 제2 내부 버퍼 회로(120), 또는 FIFO 또는 레지스터들과 같은 온-칩 저장소에 저장될 수 있다.
예시적으로 행렬 곱셈을 사용하면, 두 개의 타일들(A, B)의 곱은 계산되고 그리고 제3 타일(C)을 형성할 수 있다.
Figure 112019119008519-pat00001
수학식 1에서, i는 0 내지 M이고, j는 0 내지 N이고, p는 0 내지 K이다.
메모리 타일들(A, B)은 제1 내부 버퍼 회로(115) 및 제2 내부 버퍼 회로(120)에 로드될 수 있다. 필요한 경우, 곱(C)은 타일(C)의 형태로 메모리들(162)로 다시 전송되기 전에 임시 내부 버퍼 회로(125)에 저장될 수 있다.
도 2는 일부 실시 예들의 예로서, 두 개의 행렬들이 두 개의 온-칩 버퍼들(예를 들어, 제1 내부 버퍼 회로(115) 및 제2 내부 버퍼 회로(120))로 페치되고, 그리고 그들의 곱이 메모리에 다시 기입되는 예를 보여준다. 제1 타일(타일 A)의 사이즈는 'R_TW x C_TW = 12 x 8 워드들'이고, 제2 타일(타일 B)의 사이즈는 'R_TW x C_TW = 8 x 4 워드들'이고, 그리고 제3 타일(타일 C)의 사이즈는 'R_TW x C_TW = 12 x 4 워드들'이다.
제1 내부 버퍼 회로(115) 및 제2 내부 버퍼 회로(120)는 도 2에서 '엔트리 x 폭'으로 표시된 저장 용량을 가질 수 있으며, 폭은 버퍼 회로 내의 미니-버퍼들의 수이고, 엔트리(또는 깊이)는 각 미니-버퍼가 저장할 수 있는 엔트리들의 수이다. 도 2의 예에서, 제1 내부 버퍼 회로(115)에 대해, '엔트리 x 폭'은 '12 엔트리들 x 8 미니-버퍼들'이다. 제2 내부 버퍼 회로(120)에 대해, '엔트리 x 폭'은 '4 엔트리들 x 8 미니-버퍼들'이다. 외부 버퍼 회로(130)에 대해, '엔트리 x 폭'은 '12 엔트리들 x 4 미니-버퍼들'이다. 미니-버퍼 폭은 예시적으로 여기에서 32비트 폭인 1 워드이다. 수학식 1의 곱셈들을 병렬로 처리하기 위해, 제2 내부 버퍼 회로(120)는 메모리의 타일 B 영역으로부터 '전치된(transposed)' 형태로 로드될 수 있고, 그리고 곱셈을 시작하기 전에 채워질 수 있다. 일부 신경망 응용들에서, 행렬 A는 크고 상수일 수 있거나 또는 드물게 변화하고, 그리고 행렬 B는 매우 더 작을 수 있고 그리고 빈번하게 변화할 수 있다. 행렬 B에 대한 레이턴시는 성능의 중요한 척도일 수 있으며, 따라서, 다수의 엔트리들을 사용하는 것은 높은 레이턴시를 유발할 수 있으므로, 각 미니-버퍼에 다수의 엔트리들을 갖는 제2 내부 버퍼 회로(120)는 거의 사용되지 않을 수 있다. 이러한 시스템에서, 제2 내부 버퍼 회로(120)의 각 미니-버퍼의 엔트리들의 수는 제1 내부 버퍼 회로(115)의 각 미니-버퍼의 엔트리들의 수보다 매우 작을(예를 들어, 2 및 8 사이의 계수(factor)만큼 작은(예를 들어, 3인 계수만큼 작은)) 수 있다.
일부 실시 예들에서, 각 온-칩 '버퍼'는 적응적 행렬 곱셈기가 의도되는 응용의 요구들, 그리고 마이크로-아키텍처 요구들에 의존하여 버퍼, FIFO 또는 레지스터들일 수 있다.
도 3a 및 도 3b를 참조하면, 예시적으로, 로드 엔티티 모듈들(150) 및 로드 유닛(155)은 한 번에 메모리로부터 온-칩 버퍼로 하나의 행렬 타일을 로드하고, 필요한 경우에 아래에서 더 상세히 기술되는 바와 같이 행렬 전치(transposing)를 수행할 수 있다. 일부 실시 예들에서, 로드 유닛 및 로드 엔티티의 기본 기능들은 유사하다. 로드 유닛은 하나의 버퍼(예시적으로 8 미니-버퍼들을 갖는)를 채우고, 로드 엔티티는 메모리로부터의 데이터가 버스트 전송일 때 동시에 다수의 버퍼들을 채울 수 있다. 메모리 저장 회로(170)는 외부 버퍼 회로(130)의 내용물들을 메모리의 타일 C 영역에 저장한다. 일부 실시 예들에서, 메모리로 재기입되는 결과들의 전치는 필요하지 않다. 또한, 로드 엔티티 모듈들(150) 및 로드 유닛(155)이 미사용된 미니-버퍼들에 대한 버퍼 인에이블(BE)을 비활성화(예를 들어, BE 비트를 영으로 설정) 함으로써 부분 타일을 처리하므로, 타일이 자신이 읽혀지는 온-칩 버퍼를 채우지 않을 경우 타일 데이터의 패딩(padding)은 필요하지 않다. 마찬가지로, 메모리 저장 회로(170)는 미니-버퍼 데이터를 메모리에 저장할 때 '워드 인에이블'을 설정함으로써 부분 타일을 처리할 수 있다. 도 3a 및 도 3b에서, 타일 A의 사이즈는 12 x 8 워드들이고, 타일 B의 사이즈는 8 x 4 워드들이고, 그리고 타일 C의 사이즈는 12 x 4 워드들(도 2에서와 같이)이다. 도 3a 및 도 3b에 도시된 예에서, 타일들의 사이즈들(차원들(M, N, K)의 의미는 도 2에 도시된 것과 같음)은 'M_TW=12', 'N_TW=4, 그리고 'K_TW=8'이고, 데이터 사이즈들은 'M=8', 'N=3', 그리고 'K=5' 이다.
예를 들어, 버퍼 A의 제1행 및 버퍼 B의 제1행의 제1 내적(dot product)(90의 값을 갖는 제1 내적)이 먼저 계산되고, 그리고 버퍼 C의 제1 엔트리에 저장된다. 버퍼 A의 제1행 및 버퍼 B의 제2행의 제2 내적(100의 값을 갖는 제2 내적)이 두 번째로 계산되고, 그리고 버퍼 C의 제2 엔트리에 저장된다. 다른 실시 예들에서, 버퍼 A의 제2행 및 버퍼 B의 제1행의 내적이 대신 두 번째로 계산될 수 있다.
수학식 1의 'C(0,0) = ∑i A(0, i) X B(i, 0)'의 곱셈의 예가 도 4a에 도시된다. 위에서 언급된 바와 같이, 각 곱셈 유닛(110)은 곱셈기들의 어레이(405)(또는 곱셈 회로들), 예를 들어 병렬로 구동하는 FP32 곱셈기들 및 덧셈기(410)(또는 덧셈 회로)를 포함할 수 있다. 제1 내부 버퍼 회로(115)는 미니-버퍼들의 어레이(예를 들어, 각각 12 엔트리들을 갖는 8 미니-버퍼들)를 포함할 수 있고, 제2 내부 버퍼 회로(120)는 또한 미니-버퍼들의 어레이(예를 들어, 각각 4 엔트리들을 갖는 8 미니-버퍼들)를 포함할 수 있다. 도 4a의 예에서, 외부 버퍼 회로(130)는 각각 12개의 엔트리들을 갖는 네 개의 미니-버퍼들을 갖는다. 도 4b 및 도 4c는 수학식 1의 'C(0,1) = ∑i A(0, i) X B(i, 1)' 및 'C(1,0) = ∑i A(1, i) X B(i, 0)'의 곱셈들을 각각 보여준다.
로드 엔티티 모듈들(150)의 각각은 버스트 전송으로서 메모리로부터 다수의 행렬 타일들을 페치하고, 적절하게 행렬 전치 동작들을 수행하고(아래에서 더 상세히 논의되는 바와 같이), 그리고 엔티티(105)를 위한 연관된 온-칩 버퍼들을 채운다.
도 5a 및 도 5b는 타일 버스트들에서 메모리로부터 네 개의 곱셈 유닛들(110)을 갖는 엔티티(105)의 세 개의 곱셈 유닛들(110)의 세 개의 제1 내부 버퍼 회로들(115)로의 행렬(행렬 A)의 로딩을 보여준다. 행렬 데이터는 도시된 바와 같이 스트라이핑(striping) 방법으로 동시에 세 개의 제1 내부 버퍼 회로들(115)에 로드된다.
도 6a 및 도 6b는 메모리(도 6a)로부터 네 개의 곱셈 유닛들(110)을 갖는 엔티티(105)의 세 개의 곱셈 유닛들(110)의 세 개의 제2 내부 버퍼 회로들(120)로의 행렬(행렬 B)의 로딩을 보여준다. 이 예에서 행렬 B는 'LDB=N(여기서 LDB = N은 도 6의 예에 도시된 바와 같이, 행렬 B를 메모리에 N 차원으로 로딩함을 나타낸다)'를 갖고 '정상적으로(normally)'(전치되지 않고) 메모리에 저장되므로, 행렬 B 타일들은 메모리로부터 개별적으로 페치된다. 세 개의 제2 내부 버퍼 회로들(120)은 전체 행렬이 로드된 후에 병렬로 실행(예를 들어, 각 곱셈 회로들(405)에 병렬로 입력(페치)됨)될 수 있다(이들은 병렬로 또는 하나씩 채워질 수 있지만, 필요한 데이터가 구비되면 병렬로 실행될 수 있음. 하나씩 실행할 필요가 없다). 도 6a 및 도 6b에 표시된 '에포크(Epoch)'는 외부 루프 번호(또는 횟수)(outer loop number)이다. 도 1 내지 도 6은 옵션들 중 하나의 예임에 유의하여야 한다. 이들은 일부 실시 예들에서 행렬 곱셈기가 어떻게 동작하는지를 설명하는 예들에 불과하며, 본 기재를 한정하는 것으로 이해되지 않아야 한다. 예를 들어, 요소들의 수들(예를 들어, 엔티티들(105)의 수 및 곱셈 유닛(110)의 수)은 예시적인 것에 불과하며, 이 분야에 숙련된 자에 의해 이해되는 바와 같이, 다른 실시 예들에서 다를 수 있다. 동작 에포크(외부 루프)가 또한 도 7에 보여진다.
도 7은 제1 행렬(A)이 네 개의 곱셈 유닛들(110)을 갖는 엔티티(105)의 세 개의 곱셈 유닛들(110)의 세 개의 제1 내부 버퍼 회로들(115)에 어떻게 저장되는지, 그리고 제2 행렬(B)의 일부가 네 개의 곱셈 유닛들(110)을 갖는 엔티티(105)의 세 개의 곱셈 유닛들(110)의 세 개의 제2 내부 버퍼 회로들(120)에 어떻게 저장되는지의 예를 보여준다. 곱들은 세 개의 에포치크에 걸쳐 형성되며, 각 에포크에서 제2 행렬(B)의 새로운 부분이 세 개의 제2 내부 버퍼 회로들(120)에 로드된다. 도 7의 예에서, 네 개의 곱셈 유닛들(110)을 구비한 하나의 엔티티, 제1 내부 버퍼 회로들(115)의 각각의 여덟 개의 미니-버퍼들, 그리고 제2 내부 버퍼 회로들(120)의 각각의 여덟 개의 미니-버퍼들이 있다. 타일 사이즈들은 'M_TW = 12', 'N_TW = 4', 그리고 'K_TW = 8'이고, 데이터 사이즈들은 'M = 12', 'N = 10', 그리고 'K = 20'이다. K 차원에 하나의 내부 루프가 있고, M 차원에 하나의 중간 루프가 있다. 이러한 내부 루프들은 병렬로 실행된다. 그리고 세 개의 에포크들(외부 루프들)은 도 6a 및 도 6b, 그리고 도 7에 도시된 수학식 1의 행렬 곱셈 연산을 완료하는데 사용된다.
도 8a 및 도 8b를 참조하면, 로드 엔티티 모듈들(150) 및 로드 유닛(155) 모두는 행렬이 메모리로부터 페치되면서 전치될 때 행렬 전치를 처리할 수 있다. 도 8a는 전치 행렬의 예이고 그리고 메모리 내의 행렬의 배열을 보여준다. 도 8b는 네 개의 곱셈 유닛들(110)을 구비한 엔티티(105)의 세 개의 곱셈 유닛들(110)의 세 개의 제2 내부 버퍼 회로들(120) 내의 행렬의 배열을 보여준다. 행렬 타일들은 메모리로부터 버스트들로 페치되고, 그리고 제2 내부 버퍼 회로들(120)에 로드된다. 세 개의 제2 내부 버퍼 회로들(120)은 도 8a 및 도 8b에 보여지는 바와 같이 데이터 버스트들로 동시에 채워진다.
도 9a 및 도 9b는 적응적 행렬 곱셈기의 두 개의 서로 다른 구성들을 보여준다. 도 9a의 구성('옵션 1'로 참조될 수 있는)에서, N 차원이 내부 루프이고, 그리고 도 9b의 구성('옵션 2'로 참조될 수 있는)에서 K 차원이 내부 루프이다. 전자(옵션 1)는 수행될 계산의 사이즈가 N 차원보다 클 때에 더 효율적일 수 있고, 그리고 후자(옵션 2)는 수행될 계산의 사이즈가 K 차원보다 클 때에 더 효율적일 수 있다. 일부 실시 예들에서, 도 9c(옵션 1 및 옵션 2 모두를 지원하는)를 참조하면, 멀티플렉서들(905)이 두 개의 구성들 사이를 선택하는데 사용된다. 각 멀티플렉서는 공통 포트(910)를 포함하는 세 개의 포트들을 가질 수 있다. 도 9c의 세 개의 멀티플렉서들은 곱셈 회로의 입력에 연결된 공통 포트(910)를 구비한 곱셈 회로 입력 멀티플렉서, 곱셈 회로의 출력에 연결된 공통 포트(910)를 구비한 곱셈 회로 출력 멀티플렉서, 그리고 제2 내부 버퍼 회로의 출력에 연결된 공통 포트(910)를 구비한 제2 내부 버퍼 회로 출력 멀티플렉서를 포함한다.
옵션 2를 구현하는 제1 상태에서, 곱셈 회로 입력 멀티플렉서는 제2 내부 버퍼 회로 출력 멀티플렉서로부터의 데이터를 곱셈 회로의 제1 입력에 전달하도록 구성되고, 곱셈 회로 출력 멀티플렉서는 곱셈 회로의 출력으로부터의 데이터를 외부 버퍼 회로로 전달하도록 구성되고, 그리고 제2 내부 버퍼 회로 출력 멀티플렉서는 제2 내부 버퍼 회로로부터의 데이터를 곱셈 회로 입력 멀티플렉서로 전달하도록 구성된다.
옵션 1을 구현하는 제2 상태에서, 곱셈 회로 입력 멀티플렉서는 외부 버퍼 회로로부터의 데이터를 곱셈 회로의 제1 입력으로 전달하도록 구성되고, 곱셈 회로 출력 멀티플렉서는 곱셈 회로의 출력으로부터의 데이터를 제2 내부 버퍼 회로로 전달하도록 구성되고, 그리고 제2 내부 버퍼 회로 출력 멀티플렉서는 제2 내부 버퍼 회로로부터의 데이터를 메모리 저장 회로로 전달하도록 구성된다.
두 개의 구성들 중 하나의 선택은 설계 시에(예를 들어, 적응적 행렬 곱셈기가 제조되는 집적 회로 내에서 하드 와이어(hard wired))로 행해질 수 있고, 또는 실시간으로(도 9c에 도시된 바와 같이 멀티플렉서들을 이용하여) 행해질 수 있다. 멀티플렉서들은 호스트에 의해 제어(레지스터 모듈(180)을 통해)될 수 있고, 또는 이들은 적응적 행렬 곱셈기 내의 특수 제어 회로에 의해 실시간으로 자동적으로 제어될 수 있다.
일부 실시 예들에서, 적응적 행렬 곱셈기 또는 그것의 일부는 프로세싱 회로에 구현된다. '프로세싱 회로'의 용어는 여기에서 데이터 또는 디지털 신호들을 처리하도록 채용된 하드웨어, 펌웨어, 그리고 소프트웨어의 임의의 조합을 의미하도록 사용된다. 프로세싱 회로 하드웨어는, 예를 들어, 응용 특화 집적 회로들(ASIC들), 범용 또는 특수 목적 중앙 처리 유닛들(CPU들), 디지털 신호 프로세서들(DSP들), 그래픽 프로세싱 유닛들(GPU들), 그리고 필드 프로그래머블 게이트 어레이들(FPGA들)과 같은 프로그램 가능한 로직 장치들을 포함할 수 있다. 여기에서 사용되는 바와 같이, 프로세싱 회로에서, 각 기능은 해당 기능을 수행하도록 구성된(즉, 하드-와이어된) 하드웨어에 의해, 또는 비임시의 저장 매체에 저장된 명령들을 실행하도록 구성된 CPU와 같은 더 범용의 하드웨어에 의해 수행된다. 프로세싱 회로는 단일 인쇄 회로 기판(PCB)에 또는 몇몇 상호 연결된 PCB들에 걸쳐 제작될 수 있다. 프로세싱 회로는 다른 프로세싱 회로들을 포함할 수 있다. 예를 들어, 프로세싱 회로는 PCB 상에서 서로 연결된 두 개의 프로세싱 회로들, FPGA 및 CPU를 포함할 수 있다.
여기에서 사용되는 바와 같이, 어떤 것의 '일부'는 어떤 것의 전부 또는 전부보다 적은 것을 의미한다. 따라서, 행렬의 일부는 행렬 전체 또는 행렬의 요소들의 전부를 포함하지 않는 행렬의 일부일 수 있다. 행렬의 사각형 또는 정사각형 부분은 또한 행렬이다. 여기에서 사용되는 바와 같이, 두 개의 행렬들(A, B)의 '행렬 곱'('A x B'로 표기될 수 있는)은 수학식 1의 요소들의 행렬이며, 특수한 경우들로서 행렬 및 벡터의 곱, 그리고 두 개의 벡터들의 내적(dot product)을 포함한다. 여기에서 사용되는 바와 같이, '행렬 곱셈'은 행렬 곱의 계산을 가리킨다.
일부 실시 예들에서, 일반적인 곱셈기는 레지스터 설정들에 의해 다음의 행렬 곱셈들을 지원하도록 구성 가능하다.
'(C := A x B)'(A 및 B는 행렬들). 행렬-행렬 곱셈.
'(C := TA x B)', '(C := A xTB) 및 (C := TA xTB)'(A 및 B는 행렬들이고, 행렬에 선행하는 'T'는 전치 연산을 가리킴). 전치된 행렬 곱셈들. 및
'(Y := A x X)'. 행렬-행렬 곱셈의 특수 사례로서 행렬-벡터 곱셈.
범용 곱셈기는 선택된 곱셈 옵션에 기반하여 서로 다른 A/B/C 버퍼들을 나타내는 추상화된 버퍼 X, 버퍼 Y, 버퍼 O에 의해 서로 다른 곱셈 옵션들을 적응적으로 선택하도록 더 구성 가능할 수 있다. 메모리 버스트 트랜잭션(처리)은 병렬로 실행되는 다수의 유닛들, 다수의 엔티티들과 함께 최대화될 수 있다.
'제1', '제2', '제3' 등의 용어들이 여기에서 다양한 요소들, 구성 요소들, 영역들, 계층들, 그리고/또는 섹션들을 기술하는데 사용되지만, 이러한 요소들, 구성 요소들, 영역들, 계층들, 그리고/또는 섹션들은 이러한 용어들에 의해 한정되지 않아야 함이 이해될 것이다. 이러한 용어들은 하나의 요소, 구성 요소, 영역, 계층 또는 섹션을 다른 하나의 요소, 구성 요소, 영역, 계층 또는 섹션으로부터 구별하기 위해서만 사용된다. 따라서, 여기에서 논의되는 제1 요소, 구성 요소, 영역, 계층 또는 섹션은 일부 실시 예들의 사상 및 범위로부터 멀어지지 않으면서 제2 요소, 구성 요소, 영역, 계층 또는 섹션으로 명명될 수 있다.
여기에서 사용되는 용어는 특정한 실시 예들을 설명하는 목적만을 위한 것이며, 일부 실시 예들의 한정을 의도하지 않는다. 여기에서 사용되는 바와 같이, '실질적으로', '약' 및 유사한 용어들은 근사화의 용어들로 사용되며 정도의 용어들로 사용되지 않고, 이 분야에 통상의 기술을 가진 자에 의해 이해될 수 있는 측정된 또는 계산된 값들의 자명한 편차들을 고려함을 의도한다. 여기에서 사용되는 바와 같이, '메이저(major) 구성 요소'의 용어는 제조물 또는 제품 내의 다른 단일 구성 요소의 양보다 더 큰 양으로 제조물, 폴리머 또는 제품에 존재하는 구성 요소를 가리킨다. 반대로, '프라이머리(primary) 구성 요소'는 제조물, 폴리머 또는 제품의 무게의 적어도 50% 이상인 구성 요소를 가리킨다. 여기에서 사용되는 바와 같이, 복수의 항목들에 적용될 때, '메이저 부분'의 용어는 해당 항목들의 적어도 절반을 의미한다.
여기에서 사용되는 바와 같이, 단수 형태들은 문맥이 명확히 다르게 지칭하지 않으면 복수 형태들 또한 포함하는 것으로 의도된다. 이 명세서에서 사용될 때, '포함한다' 그리고/또는 '포함하는'의 용어들은 언급된 특색들, 정수들, 단계들, 동작들, 요소들, 그리고/또는 구성 요소들의 존재를 명시하며, 하나 또는 그보다 많은 다른 특색들, 정수들, 단계들, 동작들, 요소들, 구성 요소들, 그리고/또는 이들의 그룹들의 존재 또는 추가를 배제하지 않는다. 여기에서 사용되는 바와 같이, '그리고/또는'의 용어는 연관되어 언급된 항목들의 하나 또는 그보다 많은 것들의 임의의 그리고 모든 조합들을 포함한다. 요소들의 목록에 선행할 때, '적어도 하나의'와 같은 표현들은 요소들의 목록 전체를 수식하며, 목록의 개별 요소들을 수식하지 않는다. 또한, 실시 예들을 설명할 때, '수 있다'의 사용은 '본 기재의 하나 또는 그보다 많은 실시 예들'을 참조한다. 또한, '모범적인'의 용어는 예시 또는 사례를 참조하는 것을 의도한다. 여기에서 사용되는 바와 같이, '사용한다', '사용하는', 그리고 '사용된'의 용어들은 '활용한다', '활용하는', 그리고 '활용된'의 용어들과 각각 동의어인 것으로 여겨질 수 있다.
요소 또는 계층이 다른 하나의 요소 또는 계층의 '위에 있는', '연결된', '결합된', 또는 '인접한' 것으로 참조될 때, 이는 다른 요소 또는 계층의 바로 위에, 바로 연결된, 바로 결합된, 또는 바로 인접할 수 있으며, 또는 하나 또는 그보다 많은 끼어드는 요소들 또는 계층들이 존재할 수 있다. 반대로, 요소 또는 계층이 다른 하나의 요소 또는 계층의 '바로 위에', '바로 연결된', '바로 결합된', 또는 '바로 인접한' 것으로 참조될 때, 끼어드는 요소들 또는 계층들은 존재하지 않는다.
여기에서 인용된 임의의 수치적 범위는 인용된 범위 내에 포함된 동일한 수치적 정확도의 모든 부분 범위들을 포함하는 것을 의도한다. 예를 들어, '1.0 내지 10.0'의 범위는 인용된 최소 값 '1.0' 및 인용된 최대 값 '10.0' 사이(그리고 이들을 포함하는)의 모든 부분 범위들, 즉 2.4 내지 7.6과 같은 1.0과 같거나 그보다 큰 최소 값과 10.0과 같거나 그보다 작은 최대 값을 갖는다. 여기에서 인용된 임의의 최대 수치 한정은 그 안에 포함된 모든 더 낮은 수치 한정들을 포함함을 의도하며, 이 명세서에서 인용된 임의의 최소 수치 한정은 여기에 포함된 모든 더 높은 수치 한정들을 포함함을 의도한다.
적응적 행렬 곱셈기의 모범적인 실시 예들이 여기에서 상세히 기술되고 설명되었지만, 많은 수정들 및 변경들이 이 분야에 숙련된 자들에게 자명할 것이다. 따라서, 이 기재의 원리들에 따라 구현되는 적응적 행렬 곱셈기는 여기에 상세히 기술된 것과 다르게 실시될 수 있음이 이해될 것이다. 본 기재는 또한 다음의 청구항들 및 그것들의 등가적인 것들에 의해 정의된다.
105: 엔티티
110: 곱셈 유닛들
U0~U3: 곱셈 유닛들
112: 어레이
115: 제1 내부 버퍼 회로
120: 제2 내부 버퍼 회로
125: 임시 내부 버퍼 회로
130: 외부 버퍼 회로
135: 누산기
140: 버퍼
150: 로드 엔티티 모듈
155: 로드 유닛
162: 메모리들
165: 메모리 브릿지
170: 메모리 저장 회로
175: 제어 회로
180: 레지스터 모듈

Claims (20)

  1. 시스템에 있어서:
    제1 곱셈 유닛;
    제2 곱셈 유닛;
    메모리 로드 회로; 그리고
    외부 버퍼 회로를 포함하고,
    상기 제1 곱셈 유닛은 제1 내부 버퍼 회로 및 제2 내부 버퍼 회로를 포함하고,
    상기 제2 곱셈 유닛은 제1 내부 버퍼 회로 및 제2 내부 버퍼 회로를 포함하고,
    상기 메모리 로드 회로는 상기 제1 곱셈 유닛의 상기 제1 내부 버퍼 회로에 연결되고 그리고 상기 제2 곱셈 유닛의 상기 제2 내부 버퍼 회로에 연결되고,
    상기 메모리 로드 회로는 버스트 메모리 액세스 모드의 단일 버스트에서 메모리로부터 데이터를 상기 제1 곱셈 유닛의 상기 제1 내부 버퍼 회로로, 그리고 상기 제2 곱셈 유닛의 상기 제1 내부 버퍼 회로로 로드하도록 구성되는 시스템.
  2. 제1항에 있어서,
    상기 곱셈 유닛은 덧셈 회로를 포함하고, 그리고
    상기 제1 곱셈 유닛은,
    상기 제1 곱셈 유닛의 상기 제1 내부 버퍼 회로의 제1 요소와 상기 제1 곱셈 유닛의 상기 제2 내부 버퍼 회로의 제1 요소의 제1 곱을 형성하고,
    상기 제1 곱을 상기 덧셈 회로로 전송하고,
    상기 제1 곱셈 유닛의 상기 제1 내부 버퍼 회로의 제2 요소와 상기 제1 곱셈 유닛의 상기 제2 내부 버퍼 회로의 제2 요소의 제2 곱을 형성하고, 그리고
    상기 제2 곱을 상기 덧셈 회로로 전송하도록 구성되는 시스템.
  3. 제2항에 있어서,
    상기 제1 곱셈 유닛은:
    상기 제1 곱을 형성하도록 구성되는 제1 곱셈 회로; 그리고
    상기 제2 곱을 형성하도록 구성되는 제2 곱셈 회로를 포함하는 시스템.
  4. 제2항에 있어서,
    상기 덧셈 회로는,
    상기 제1 곱과 상기 제2 곱의 제1 합을 형성하고, 그리고
    상기 제1 합을 상기 외부 버퍼 회로로 전송하도록 구성되는 시스템.
  5. 제4항에 있어서,
    상기 제2 곱셈 유닛은 덧셈 회로를 포함하고, 그리고
    상기 제2 곱셈 유닛은,
    상기 제2 곱셈 유닛의 상기 제1 내부 버퍼 회로의 제1 요소와 상기 제2 곱셈 유닛의 상기 제2 내부 버퍼 회로의 제1 요소의 제3 곱을 형성하고,
    상기 제3 곱을 상기 제2 곱셈 유닛의 상기 덧셈 회로로 전송하고,
    상기 제2 곱셈 유닛의 상기 제1 내부 버퍼 회로의 제2 요소와 상기 제2 곱셈 유닛의 상기 제2 내부 버퍼 회로의 제2 요소의 제4 곱을 형성하고, 그리고
    상기 제4 곱을 상기 제2 곱셈 유닛의 상기 덧셈 회로로 전송하도록 구성되는 시스템.
  6. 제5항에 있어서,
    상기 제2 곱셈 유닛의 상기 덧셈 회로는,
    상기 제3 곱과 상기 제4 곱의 제2 합을 형성하고, 그리고
    상기 제2 합을 상기 외부 버퍼 회로로 전송하도록 구성되고, 그리고
    상기 외부 버퍼 회로는 상기 제1 합 및 상기 제2 합을 더하도록 구성되는 시스템.
  7. . 제1항에 있어서,
    상기 제1 곱셈 유닛은 덧셈 회로를 포함하고,
    상기 제1 곱셈 유닛의 상기 제1 내부 버퍼 회로는 제1 미니-버퍼 및 제2 미니-버퍼를 포함하고,
    상기 제1 곱셈 유닛의 상기 제2 내부 버퍼 회로는 제1 미니-버퍼 및 제2 미니-버퍼를 포함하고,
    상기 제1 곱셈 유닛은,
    상기 제1 곱셈 유닛의 상기 제1 내부 버퍼의 상기 제1 미니-버퍼의 제1 요소와 상기 제1 곱셈 유닛의 상기 제2 내부 버퍼의 상기 제1 미니-버퍼의 제1 요소의 제1 곱을 형성하고,
    상기 제1 곱을 상기 덧셈 회로로 전송하고,
    상기 제1 곱셈 유닛의 상기 제1 내부 버퍼의 상기 제2 미니-버퍼의 제1 요소와 상기 제1 곱셈 유닛의 상기 제2 내부 버퍼의 상기 제2 미니-버퍼의 제1 요소의 제2 곱을 형성하고, 그리고
    상기 제2 곱을 상기 덧셈 회로로 전송하도록 구성되는 시스템.
  8. 제7항에 있어서,
    상기 제1 곱셈 유닛은,
    상기 제1 곱셈 유닛의 상기 제1 내부 버퍼의 상기 제1 미니-버퍼의 제2 요소와 상기 제1 곱셈 유닛의 상기 제2 내부 버퍼의 상기 제1 미니-버퍼의 제1 요소의 제3 곱을 형성하고,
    상기 제3 곱을 상기 덧셈 회로로 전송하고,
    상기 제1 곱셈 유닛의 상기 제1 내부 버퍼의 상기 제2 미니-버퍼의 제2 요소와 상기 제1 곱셈 유닛의 상기 제2 내부 버퍼의 상기 제2 미니-버퍼의 제1 요소의 제4 곱을 형성하고, 그리고
    상기 제4 곱을 상기 덧셈 회로로 전송하도록 더 구성되는 시스템.
  9. 제8항에 있어서,
    상기 덧셈 회로는 상기 제1 곱 및 상기 제2 곱의 제1 합을 형성하고, 그리고 상기 제1 합을 상기 외부 버퍼 회로로 전송하도록 구성되고, 그리고
    상기 외부 버퍼는 상기 제1 합을 상기 외부 버퍼 회로의 제1 요소에 저장하도록 구성되는 시스템.
  10. 제9항에 있어서,
    상기 덧셈 회로는 상기 제3 곱과 상기 제4 곱의 제2 합을 형성하고, 그리고 상기 제2 합을 상기 외부 버퍼 회로로 전송하도록 더 구성되고, 그리고
    상기 외부 버퍼 회로는 상기 제2 합을 상기 외부 버퍼 회로의 제2 요소에 저장하도록 구성되는 시스템.
  11. 제1항에 있어서,
    상기 제1 곱셈 유닛은 덧셈 회로를 더 포함하고, 그리고
    상기 곱셈 유닛은,
    상기 제1 곱셈 유닛의 상기 제1 내부 버퍼 회로의 제1 요소와 상기 제1 곱셈 유닛의 상기 외부 버퍼 회로의 제1 요소의 제1 곱을 형성하고,
    상기 제1 곱을 상기 덧셈 회로로 전송하고,
    상기 제1 곱셈 유닛의 상기 제1 내부 버퍼 회로의 제2 요소와 상기 제1 곱셈 유닛의 상기 외부 버퍼 회로의 제2 요소의 제2 곱을 형성하고, 그리고
    상기 제2 곱을 상기 덧셈 회로로 전송하도록 구성되는 시스템.
  12. 제11항에 있어서,
    상기 덧셈 회로는,
    상기 제1 곱과 상기 제1 곱의 제1 합을 형성하고, 그리고
    상기 제1 합을 상기 제2 내부 버퍼 회로의 제1 요소에 저장하도록 구성되는 시스템.
  13. 제11항에 있어서,
    상기 제1 곱셈 유닛은:
    상기 제1 곱을 형성하도록 구성되는 제1 곱셈 회로; 그리고
    상기 제2 곱을 형성하도록 구성되는 제2 곱셈 회로를 포함하는 시스템.
  14. 제1항에 있어서,
    제1 엔티티 및 제2 엔티티를 포함하고,
    상기 제1 엔티티는 상기 제1 곱셈 유닛 및 상기 제2 곱셈 유닛을 포함하는 시스템.
  15. 제14항에 있어서,
    상기 메모리 로드 회로는 상기 제1 엔티티로부터 읽기 요청들을 수신하고, 상기 제2 엔티티로부터 읽기 요청들을 수신하고, 그리고 상기 읽기 요청들을 중재하도록 구성되는 시스템.
  16. 제1항에 있어서,
    상기 메모리 로드 회로는 메모리로부터 행렬의 일부를 상기 행렬의 상기 일부의 요소들이 전치되는 방식으로 상기 제1 곱셈 유닛의 상기 제2 내부 버퍼 회로에 로드하도록 구성되는 시스템.
  17. 시스템에 있어서:
    제1 곱셈 유닛;
    제2 곱셈 유닛;
    메모리 로드 회로;
    메모리 저장 회로; 그리고
    외부 버퍼 회로를 포함하고,
    상기 제1 곱셈 유닛은:
    곱셈 회로;
    제1 내부 버퍼 회로;
    제2 내부 버퍼 회로;
    상기 곱셈 회로의 입력에 연결된 공통 포트를 구비한 곱셈 회로 입력 멀티플렉서;
    상기 곱셈 회로의 출력에 연결된 공통 포트를 구비한 곱셈 회로 출력 멀티플렉서; 그리고
    상기 제2 내부 버퍼 회로의 출력에 연결된 공통 포트를 구비한 제2 내부 버퍼 회로 출력 멀티플렉서를 포함하고,
    상기 곱셈 회로 출력 멀티플렉서는 상기 곱셈 회로 및 상기 제2 내부 버퍼 회로에 연결되는 시스템.
  18. 제17항에 있어서,
    상기 제1 곱셈 유닛의 제1 상태에서,
    상기 곱셈 회로 입력 멀티플렉서는 상기 제2 내부 버퍼 회로 출력 멀티플렉서로부터의 데이터를 상기 곱셈 회로의 제1 입력에 전달하도록 구성되고,
    상기 곱셈 회로 출력 멀티플렉서는 상기 곱셈 회로의 출력으로부터의 데이터를 상기 외부 버퍼 회로로 전달하도록 구성되고, 그리고
    상기 제2 내부 버퍼 회로 출력 멀티플렉서는 상기 제2 내부 버퍼 회로로부터의 데이터를 상기 곱셈 회로 입력 멀티플렉서에 전달하도록 구성되는 시스템.
  19. 제18항에 있어서,
    상기 곱셈 유닛의 제2 상태에서,
    상기 곱셈 회로 입력 멀티플렉서는 상기 외부 버퍼 회로로부터의 데이터를 상기 곱셈 회로의 상기 제1 입력에 전달하도록 구성되고,
    상기 곱셈 회로 출력 멀티플렉서는 상기 곱셈 회로의 상기 출력으로부터의 데이터를 상기 제2 내부 버퍼 회로로 전달하도록 구성되고, 그리고
    상기 제2 내부 버퍼 회로 출력 멀티플렉서는 상기 제2 내부 버퍼 회로로부터의 데이터를 상기 메모리 저장 회로로 전달하도록 구성되는 시스템.
  20. 시스템에 있어서:
    제1 곱셈 유닛;
    제2 곱셈 유닛;
    메모리로부터의 데이터를 로딩하기 위한 수단; 그리고
    외부 버퍼 회로를 포함하고,
    상기 제1 곱셈 유닛은 제1 내부 버퍼 회로 및 제2 내부 버퍼 회로를 포함하고,
    상기 제2 곱셈 유닛은 제1 내부 버퍼 회로 및 제2 내부 버퍼 회로를 포함하고,
    상기 메모리로부터의 데이터를 로딩하기 위한 수단은 상기 제1 곱셈 유닛의 상기 제1 내부 버퍼 회로에 연결되고 그리고 상기 제2 곱셈 유닛의 상기 제1 내부 버퍼 회로에 연결되고,
    상기 메모리로부터의 데이터를 로딩하기 위한 수단은 상기 메모리로부터의 데이터를 버스트 메모리 액세스 모드의 단일 버스트로 상기 제1 곱셈 유닛의 상기 제1 내부 버퍼 회로 및 상기 제2 곱셈 유닛의 상기 제1 내부 버퍼 회로로 로드하도록 구성되는 시스템.
KR1020190149107A 2019-02-21 2019-11-19 기계 학습 및 심층 학습 응용들을 위한 적응적 행렬 곱셈 가속기 KR102541465B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962808729P 2019-02-21 2019-02-21
US62/808,729 2019-02-21
US16/407,064 2019-05-08
US16/407,064 US11475102B2 (en) 2019-02-21 2019-05-08 Adaptive matrix multiplication accelerator for machine learning and deep learning applications

Publications (2)

Publication Number Publication Date
KR20200102332A KR20200102332A (ko) 2020-08-31
KR102541465B1 true KR102541465B1 (ko) 2023-06-08

Family

ID=72141899

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190149107A KR102541465B1 (ko) 2019-02-21 2019-11-19 기계 학습 및 심층 학습 응용들을 위한 적응적 행렬 곱셈 가속기

Country Status (5)

Country Link
US (3) US11475102B2 (ko)
JP (1) JP7273746B2 (ko)
KR (1) KR102541465B1 (ko)
CN (1) CN111597501A (ko)
TW (1) TWI789558B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112434255B (zh) * 2020-12-03 2023-12-08 成都海光微电子技术有限公司 向量-矩阵运算和数据处理方法、乘法器和处理器芯片
US11556337B2 (en) 2021-04-12 2023-01-17 Analog Devices International Unlimited Company Parallel matrix multiplication technique optimized for memory fetches
US20230068168A1 (en) * 2021-08-18 2023-03-02 Micron Technology, Inc. Neural network transpose layer removal

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180189063A1 (en) 2016-12-30 2018-07-05 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
WO2018126073A1 (en) 2016-12-30 2018-07-05 Lau Horace H Deep learning hardware

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1808863A1 (en) * 2006-01-16 2007-07-18 Deutsche Thomson-Brandt Gmbh Method and apparatus for recording high-speed input data into a matrix of memory devices
US7805479B2 (en) 2006-03-28 2010-09-28 Michael Andrew Moshier Scalable, faster method and apparatus for montgomery multiplication
US7792895B1 (en) 2006-06-16 2010-09-07 Nvidia Corporation Efficient matrix multiplication on a parallel processing device
US8051124B2 (en) 2007-07-19 2011-11-01 Itt Manufacturing Enterprises, Inc. High speed and efficient matrix multiplication hardware module
CA2843929C (en) 2011-09-15 2018-03-27 Exxonmobil Upstream Research Company Optimized matrix and vector operations in instruction limited algorithms that perform eos calculations
US9201848B2 (en) 2012-07-27 2015-12-01 The United States Of America As Represented By The Secretary Of The Air Force Floating point matrix multiplication co-processor
US9384168B2 (en) * 2013-06-11 2016-07-05 Analog Devices Global Vector matrix product accelerator for microprocessor integration
US10061748B2 (en) 2015-12-11 2018-08-28 Sap Se Adaptive tile matrix representation and multiplication
US10073815B2 (en) 2016-05-31 2018-09-11 Palo Alto Research Cener Incorporated System and method for speeding up general matrix-matrix multiplication on the GPU
US10528321B2 (en) 2016-12-07 2020-01-07 Microsoft Technology Licensing, Llc Block floating point for neural network implementations
US10146738B2 (en) * 2016-12-31 2018-12-04 Intel Corporation Hardware accelerator architecture for processing very-sparse and hyper-sparse matrix data
US11132599B2 (en) 2017-02-28 2021-09-28 Microsoft Technology Licensing, Llc Multi-function unit for programmable hardware nodes for neural network processing
US10090067B1 (en) * 2017-05-30 2018-10-02 Seagate Technology Llc Data storage device with rewritable in-place memory
US10902087B2 (en) * 2018-10-31 2021-01-26 Advanced Micro Devices, Inc. Device and method for accelerating matrix multiply operations as a sum of outer products

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180189063A1 (en) 2016-12-30 2018-07-05 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
WO2018126073A1 (en) 2016-12-30 2018-07-05 Lau Horace H Deep learning hardware

Also Published As

Publication number Publication date
TWI789558B (zh) 2023-01-11
JP2020135899A (ja) 2020-08-31
CN111597501A (zh) 2020-08-28
US11475102B2 (en) 2022-10-18
US20200272479A1 (en) 2020-08-27
US20230041850A1 (en) 2023-02-09
KR20200102332A (ko) 2020-08-31
TW202032389A (zh) 2020-09-01
JP7273746B2 (ja) 2023-05-15
US20200356375A1 (en) 2020-11-12

Similar Documents

Publication Publication Date Title
US20230041850A1 (en) Adaptive matrix multiplication accelerator for machine learning and deep learning applications
CN107689948B (zh) 应用于神经网络硬件加速系统的高效数据访存管理装置
CN111340200B (zh) 用于执行人工神经网络正向运算的装置和方法
US9110778B2 (en) Address generation in an active memory device
KR20170126997A (ko) 신경망 프로세서의 벡터 컴퓨테이션 유닛
Dang et al. CUDA-enabled Sparse Matrix–Vector Multiplication on GPUs using atomic operations
CN114222970A (zh) 处理系统中的矩阵数据重用技术
CN109863477A (zh) 具有本地化存储器的矩阵处理器
US9146696B2 (en) Multi-granularity parallel storage system and storage
KR20200108774A (ko) 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법
US20240119114A1 (en) Matrix Multiplier and Matrix Multiplier Control Method
US9082476B2 (en) Data accessing method to boost performance of FIR operation on balanced throughput data-path architecture
US9171593B2 (en) Multi-granularity parallel storage system
CN110580519A (zh) 一种卷积运算结构及其方法
CN109902821B (zh) 一种数据处理方法、装置及相关组件
KR20210113099A (ko) 조정 가능한 기능-인-메모리 컴퓨팅 시스템
US20230259282A1 (en) Core group memory processsing unit architectures and configurations
CN111694513A (zh) 包括循环指令存储器队列的存储器器件和方法
CN115860080A (zh) 计算核、加速器、计算方法、装置、设备、介质及系统
CN111143766A (zh) 人工智能处理器处理二维复数矩阵的方法和设备
KR20230068992A (ko) 가속을 통한 신경망 훈련
JP7180751B2 (ja) ニューラルネットワーク回路
Poromaa Parallel algorithms for triangular sylvester equations: Design, scheduling and scalability issues
EP4195027A1 (en) Computational circuit with hierarchical accumulator
Cain et al. Convolution processing unit featuring adaptive precision using dynamic reconfiguration

Legal Events

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