KR102410166B1 - 이종 곱셈-누셈 유닛을 이용하는 심층 신경망의 가속기 - Google Patents

이종 곱셈-누셈 유닛을 이용하는 심층 신경망의 가속기 Download PDF

Info

Publication number
KR102410166B1
KR102410166B1 KR1020190154605A KR20190154605A KR102410166B1 KR 102410166 B1 KR102410166 B1 KR 102410166B1 KR 1020190154605 A KR1020190154605 A KR 1020190154605A KR 20190154605 A KR20190154605 A KR 20190154605A KR 102410166 B1 KR102410166 B1 KR 102410166B1
Authority
KR
South Korea
Prior art keywords
unit
units
array
neural network
deep neural
Prior art date
Application number
KR1020190154605A
Other languages
English (en)
Other versions
KR20210065625A (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 고려대학교 산학협력단
Priority to KR1020190154605A priority Critical patent/KR102410166B1/ko
Priority to US16/985,415 priority patent/US20210158133A1/en
Publication of KR20210065625A publication Critical patent/KR20210065625A/ko
Priority to KR1020220022943A priority patent/KR102410168B1/ko
Application granted granted Critical
Publication of KR102410166B1 publication Critical patent/KR102410166B1/ko

Links

Images

Classifications

    • 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
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology

Landscapes

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

Abstract

본 출원의 일 실시예에 따르는 심층 신경망의 가속기는 제1 연산 유닛을 포함하는 제1 서브어레이와 제2 연산 유닛을 포함하는 제2 서브어레이를 포함하는 유닛어레이를 포함하고, 상기 제1 및 제2 연산 유닛은 서로 다른 크기를 가지고, 상기 제1 및 제2 연산 유닛의 크기는 심층 신경망 연산을 수행함에 따라 각 연산 유닛에 누적되는 각 중요도 누적 값에 비례하고, 상기 각 중요도 누적 값은 상기 각 연산 유닛에 맵핑되는 가중치 별 중요도를 누적한 값이다.

Description

이종 곱셈-누셈 유닛을 이용하는 심층 신경망의 가속기{DEEP NEURAL NETWORK ACCELERATOR USING HETEROGENEOUS MULTIPLY-ACCUMULATE UNIT}
본 출원은 이종 곱셈-누셈 유닛을 이용하는 심층 신경망의 가속기에 관한 것이다.
심층 신경망(Deep Neural Network, DNN)은 많은 파라미터와 연산량을 기반으로 이미지 인식/분류, 객체 탐지 등 여러 응용 분야에서 최고(state of the art)의 성능을 보이고 있다.
이러한 DNN 연산은 많은 연산량이 필요하기 때문에, CPU, GPU 등의 범용프로세서 외에 많은 수의 곱셈-누산 유닛들로 구성되는 DNN 전용 가속기가 널리 사용되고 있다.
구체적으로, DNN 가속기의 저전력 구현을 위해서는 공급 전압 강하(supply voltage scaling)가 가장 효과적인 방법이며, 공급 전압 강하를 통해 보다 낮은 공급 전압에서 가속기를 동작시킬수록 전력 소모를 줄일 수 있다.
이때, 낮은 공급 전압으로 인한 곱셈-누산 유닛의 타이밍 오류(timing error) 발생에 의해 DNN 연산 성능이 감소하는 문제가 있기 때문에, 공급 전압 강하에 제한이 생긴다.
특히, 타이밍 오류 발생 확률은 곱셈-누산 유닛의 하드웨어 크기에 따라 달라지는데, 동일한 곱셈-누산 연산을 수행하더라도 하드웨어의 크기가 클수록 크리티컬 패스 딜레이(critical path delay)가 짧아져서 타이밍 오류 발생 확률은 낮아질 수 있다.
그러나, 종래의 DNN 가속기는 단일한 크기의 곱셈-누산 유닛으로 설계되므로, 저전압 동작 시 타이밍 오류 발생으로 인해 제한적인 공급 전압 강하만이 가능한 문제가 있다.
본 출원의 목적은, DNN 연산결과 정확도(DNN Accuracy)에 대한 감소 없이, 공급 전압 강하 제한을 보다 더 감소시킬 수 있는 심층 신경망의 가속기를 제공하기 위한 것이다.
본 출원의 일 실시예에 따르는 심층 신경망의 가속기는 제1 연산 유닛을 포함하는 제1 서브어레이와 제2 연산 유닛을 포함하는 제2 서브어레이를 포함하는 유닛어레이를 포함하고, 상기 제1 및 제2 연산 유닛은 서로 다른 크기를 가지고, 상기 제1 및 제2 연산 유닛의 크기는 심층 신경망 연산을 수행함에 따라 각 연산 유닛에 누적되는 각 중요도 누적 값에 비례하고, 상기 각 중요도 누적 값은 상기 각 연산 유닛에 맵핑되는 가중치 별 중요도를 누적한 값이다.
실시예에 있어서, 기저장된 입력 특징 맵의 활성화를 상기 유닛어레이에 순차적으로 제공하는 활성화부, 기설정된 각 3차원 필터로부터 1차원으로 벡터링된 복수의 가중치 패턴들을 상기 유닛어레이에 맵핑하여, 각 연산 유닛에 서로 다른 가중치를 각각 제공하는 가중치부 및 상기 각 연산 유닛에 제공되는 각 활성화와 각 가중치의 곱에 해당하는 부분합을 컬럼방향으로 누적하는 누적부를 포함한다.
실시예에 있어서, 상기 제1 및 제2 연산 유닛 각각은, 적어도 하나의 트랜지스터들을 포함하는 곱셈기, 상기 곱셈기와 상기 활성화부를 연결하는 제1 곱셈 플립플롭, 상기 곱셈기와 상기 가중치부를 연결하는 제2 곱셈 플립플롭, 상기 곱셈기를 통해 출력받는 제1 부분합과 부분합 누적 경로를 따라 출력받는 제2 부분합을 누산하는 누산기 및 상기 제1 및 제2 부분합의 누산 값을 지연시키는 제1 누산 플립플롭를 포함한다.
실시예에 있어서, 상기 복수의 가중치 패턴들 각각은 복수의 가중치들을 포함하고, 상기 복수의 가중치 패턴들의 개수는 적어도 하나의 서브어레이의 개수에 대응된다.
실시예에 있어서, 상기 복수의 가중치들은 상기 적어도 하나의 서브어레이 중 하나의 서브어레이에 일대일 맵핑된다.
실시예에 있어서, 상기 유닛어레이는 컬럼 방향 및 로우 방향으로 상기 제1 및 제2 연산 유닛을 포함하는 복수의 연산 유닛들이 배열된다.
실시예에 있어서, 상기 복수의 연산 유닛들은 서브어레이 별로 서로 다른 크기를 가진다.
실시예에 있어서, 상기 복수의 연산 유닛들은 컬럼 방향으로 인접한 한쌍의 연산 유닛별로 서로 다른 크기를 가진다.
실시예에 있어서, 상기 복수의 연산 유닛들은 연산 유닛 블록 별로 서로 다른 크기를 가지고, 상기 연산 유닛 블록은 컬럼 방향으로 인접한 적어도 네개의 연산 유닛을 포함한다.
실시예에 있어서, 상기 유닛어레이는, 상기 로우 방향에 대응되는 복수의 활성화 전파 경로들과 상기 컬럼 방향에 대응되는 복수의 부분합 누적 경로들을 따라, 상기 심층 신경망 연산을 수행한다.
본 출원의 다른 실시예에 따른 심층 신경망의 가속기는, 컬럼 방향으로 인접하고, 서로 다른 크기를 가지는 제1 및 제2 연산 유닛, 컬럼 방향으로 인접하고, 서로 다른 크기를 가지고, 상기 제1 및 제2 연산 유닛에 대해 로우 방향으로 인접하는 제3 및 제4 연산 유닛을 포함하는 유닛어레이, 상기 제1 연산 유닛과 상기 제3 및 제4 연산 유닛 중 어느 하나 사이를 제1 활성화 전파 경로로 결정하는 제1 멀티플렉서, 상기 제2 연산 유닛과 상기 제3 및 제4 연산 유닛 중 다른 하나 사이를 제2 활성화 전파 경로로 결정하는 제2 멀티플렉서 및 상기 어느 하나가 상기 제3 연산 유닛인 경우, 상기 제1 활성화 전파 경로를 지연시키는 활성화 전파 지연 플립플롭을 포함한다.
실시예에 있어서, 상기 제1 연산 유닛에 맵핑된 가중치의 중요도가 상기 제2 연산 유닛에 맵핑된 가중치의 중요도보다 큰 경우, 상기 제1 연산 유닛의 크기는 상기 제2 연산 유닛의 크기보다 큰 크기를 가진다.
실시예에 있어서, 상기 제4 연산 유닛에 맵핑되는 가중치의 중요도가 상기 제3 연산 유닛에 맵핑되는 제3 가중치 데이터의 중요도보다 큰 경우, 상기 제1 멀티플렉서는, 상기 제1 및 제4 연산 유닛 사이를 상기 제1 활성화 전파 경로로 결정하고, 상기 제2 멀티플렉서는, 상기 제2 및 제3 연산 유닛 사이를 상기 제2 활성화 전파 경로로 결정한다.
실시예에 있어서, 상기 제4 연산 유닛에 맵핑되는 가중치의 중요도가 상기 제3 연산 유닛에 맵핑되는 가중치의 중요도보다 작은 경우, 상기 제1 멀티플렉서는, 상기 제1 및 제4 연산 유닛 사이를 상기 제1 활성화 전파 경로로 결정하고, 상기 제2 멀티플렉서는, 상기 제2 및 제3 연산 유닛 사이를 상기 제2 활성화 전파 경로로 결정한다.
실시예에 있어서, 상기 제1 및 제2 멀티플렉서는 2대1 멀티플렉서이다.
본 출원의 또 다른 실시예에 따른 심층 신경망의 가속기는 복수의 연산 유닛들을 포함하는 유닛어레이, 상기 유닛어레이에 활성화들을 제공하는 활성화부로부터 상기 활성화들을 제공받아 지연시키는 복수의 활성화 지연 플립플롭들 및 상기 복수의 활성화 지연 플립플롭들을 통해 지연되는 상기 활성화들에 기초하여, 상기 복수의 연산 유닛들에 대한 활성화 전파 경로를 4개의 연산 유닛 단위로 결정하는 전파경로 결정부를 포함한다.
실시예에 있어서, 상기 복수의 활성화 지연 플립플롭들의 개수는 복수의 연산 유닛들의 개수에 대응된다.
실시예에 있어서, 상기 유닛어레이는 상기 복수의 연산 유닛들 중 서로 다른 크기를 가진 제1 내지 제4 연산 유닛을 포함하는 제1 서브어레이 및 상기 제1 서브어레이에 대해 로우 라인 방향으로 인접하고, 서로 다른 크기를 가진 제5 내지 제8 연산 유닛을 포함하는 제2 서브어레이를 포함하고, 상기 제1 내지 제4 연산 유닛은 상기 제1 내지 제4 연산 유닛 순으로 큰 크기를 가진다.
실시예에 있어서, 상기 전파경로 결정부는, 상기 제5 연산 유닛에 대응되는 제1 사선 라인 활성화 지연 플립플롭들을 이용하여, 상기 제5 연산 유닛에 대한 제1 내지 제4 활성화 전파 경로 중 어느 하나를 선택하는 제5 멀티플렉서, 상기 제6 연산 유닛에 대응되는 제2 사선 라인 활성화 지연 플립플롭들을 이용하여, 상기 제6 연산 유닛에 대한 제1 내지 제4 활성화 전파 경로 중 다른 하나를 선택하는 제6 멀티플렉서, 상기 제7 연산 유닛에 대응되는 제3 사선 라인 활성화 지연 플립플롭들을 이용하여, 상기 제7 연산 유닛에 대한 제1 내지 제4 활성화 전파 경로 중 또 다른 하나를 선택하는 제7 멀티플렉서 및 상기 제8 연산 유닛에 대응되는 제4 사선 라인 활성화 지연 플립플롭들을 이용하여, 상기 제8 연산 유닛에 대한 제1 내지 제4 활성화 전파 경로 중 나머지 하나를 선택하는 제8 멀티플렉서를 포함한다.
실시예에 있어서, 상기 제5 내지 제8 멀티플렉서는 4대1 멀티플렉서이다.
본 출원의 실시 예에 따른 심층 신경망의 가속기는 DNN 연산결과 정확도(DNN Accuracy)에 대한 감소 없이, 공급 전압 강하 제한을 보다 더 감소시킬 수 있다.
도 1은 본 출원의 실시예에 따른 심층 신경망의 가속기에 대한 블록도이다.
도 2는 도 1의 하나의 연산 유닛에 대한 블록도이다.
도 3은 도 1의 심층 신경망의 가속기를 구체적으로 보여주는 도이다.
도 4는 도 1의 복수의 시계열 가중치 패턴들에 대한 일 예이다.
도 5a는 도 1의 제1 및 제2 서브어레이에 맵핑된 시계열 가중치 데이터를 설명하는 도이다.
도 5b는 도 5a의 시계열 가중치 데이터의 중요도 누적 값에 대응되는 제1 및 제2 서브어레이의 크기를 설명하는 도이다.
도 6은 본 출원의 다른 실시예에 따른 심층 신경망의 가속기에 대한 블록도이다.
도 7은 도 6의 제1 및 제2 활성화 전파 경로를 설명하는 도이다.
도 8은 본 출원의 또 다른 실시예에 따른 심층 신경망의 가속기(12)에 대한 블록도이다.
도 9는 도 8의 제2 서브어레이에 대한 블록도이다.
도 10은 도 8의 활성화 전파 경로를 설명하는 도이다.
도 11은 본 출원의 다른 실시예에 따른 심층 신경망의 가속기에 대한 블록도이다.
본 명세서에 개시되어 있는 본 출원의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 출원의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 출원의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 출원의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 출원의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 출원의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 출원의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1구성요소는 제2구성요소로 명명될 수 있고, 유사하게 제2구성요소는 제1구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 출원을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 출원이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 출원의 실시예에 따른 심층 신경망의 가속기(10)에 대한 블록도이고, 도 2는 도 1의 유닛어레이(100)에 대한 일 예를 나타내는 도이며, 도 3은 도 2의 유닛어레이(100)에 맵핑되는 복수의 가중치 패턴들에 대한 일 예이다.
도 1과 도 2를 참조하면, 심층 신경망의 가속기(10)는 유닛어레이(100), 활성화부(200), 가중치부(300) 및 누적부(400)를 포함할 수 있다.
먼저, 유닛어레이(100)는 컬럼 방향 및 로우 방향으로 배열된 복수의 연산 유닛들(110_11~110_NM)을 포함할 수 있다. 여기서, 복수의 연산 유닛들(110_11~110_NM) 각각은 곱셈과 누산이 가능한 곱셈-누산 유닛(Multiply-Accumulate Unit)일 수 있다.
예를 들면, 복수의 연산 유닛들(110_11~110_NM)은 복수의 컬럼 라인들 및 복수의 로우 라인들을 따라 유닛어레이(100)에 배열될 수 있다. 여기서, 복수의 컬럼 라인들 및 복수의 로우 라인들은 복수의 연산 유닛들(110_11~110_NM)의 위치를 특정하기 위한 가상의 선들일 수 있다.
또한, 유닛어레이(100)는 상기 로우 방향에 대응되는 복수의 활성화 전파 경로들과 상기 컬럼 방향에 대응되는 복수의 부분합 누적 경로들을 따라, 심층 신경망 연산(Deep Neural Network 연산, 이하'DNN 연산')을 수행할 수 있다.
또한, 유닛어레이(100)는 로우 방향으로 배열되는 적어도 하나의 서브어레이들(101_1~101_M)로 구분될 수 있다. 여기서, 적어도 하나의 서브어레이들(101_1~101_M)은 컬럼 방향으로 배열되는 제1 내지 제N 로우 연산 유닛들(예컨대, 110_11~110_N1)을 포함할 수 있다. 이때, 복수의 제1 내지 제M 로우 연산 유닛들(예컨대, 110_11~110_N1, 110_12~110_N2,...)은 복수의 연산 유닛들(110_11~110_NM)일 수 있다.
실시예에 따른 유닛어레이(100)는 제1 연산 유닛(예컨대, 110_11)을 포함하는 제1 서브어레이(101_1)와 제2 연산 유닛(예컨대, 110_12)을 포함하는 제2 서브어레이(101_2)를 포함할 수 있다. 여기서, 제1 및 제2 연산 유닛(예컨대, 110_11, 110_12)은 서로 다른 크기를 가질 수 있다.
실시예에 따라, 제1 및 제2 연산 유닛(예컨대, 110_11, 110_12)의 크기는 DNN 연산을 수행함에 따라 각 연산 유닛에 누적되는 각 중요도 누적 값에 각각 비례할 수 있다. 여기서, 각 중요도 누적 값은 DNN 연산을 수행함에 따라 각 연산 유닛에 맵핑되는 가중치 별 중요도를 누적한 값일 수 있다.
구체적으로, 제1 연산 유닛(예컨대, 110_11)의 크기는 DNN 연산을 수행함에 따라 제1 연산 유닛(예컨대, 110_11)에 누적되는 중요도 누적 값에 비례하고, 제2 연산 유닛(예컨대, 110_12)의 크기는 DNN 연산을 수행함에 따라 제2 연산 유닛(예컨대, 110_12)에 누적되는 중요도 누적 값에 비례할 수 있다.
도 2에 도시된 바와 같이, 제1 연산 유닛(예컨대, 110_11)의 크기가 제2 연산 유닛(예컨대, 110_12)의 크기보다 큰 경우, 제1 연산 유닛(예컨대, 110_11)에 누적되는 중요도 누적 값은 제2 연산 유닛(예컨대, 110_12)에 누적되는 중요도 누적 값보다 클 수 있다.
다음으로, 활성화부(200)는 복수의 버퍼들(210_1~210_N)을 포함할 수 있다. 구체적으로, 복수의 버퍼들(210_1~210_N)은 입력 특징 맵(Ifmap)의 활성화들(a11~a31)을 개별적으로 미리 저장할 수 있다. 또한, 복수의 버퍼들(210_1~210_N)은 입력 특징 맵(Ifmap)의 활성화들(a11~a31)을 로우 방향으로 순차적이고 개별적으로 유닛어레이(100)에 제공할 수 있다.
다음으로, 가중치부(300)는 복수의 가중치 패턴들을 서브어레이 별로 유닛어레이(100)에 제공할 수 있다. 여기서, 복수의 가중치 패턴들(WP_1~WP_M)은 기설정된 각 3차원 필터로부터 1차원으로 벡터링된 복수의 가중치들일 수 있다. 이때, 복수의 가중치들은 부분합을 계산하기 위한 데이터일 수 있다.
구체적으로, 가중치부(300)는 복수의 가중치 패턴들(WP_1~WP_M)을 유닛어레이(100)에 서브어레이 별로 맵핑하여, 각 연산 유닛에 서로 다른 가중치를 각각 제공할 수 있다. 예를 들면, 도 3에 도시된 바와 같이, 복수의 가중치 패턴들(WP_1~WP_M)의 개수는 적어도 하나의 서브어레이들(101_1~101_M)의 개수에 대응될 수 있다. 이때, 하나의 가중치 패턴(예컨대, WP_1)은 적어도 하나의 서브어레이들(101_1~101_M) 중 하나의 서브어레이(101_1)에 일대일 맵핑될 수 있다.
다음으로, 누적부(400)는 컬럼 방향으로 누적되는 부분합을 서브어레이 별로 누적하기 위하여, 복수의 누적기들(410_1~410_M)을 포함할 수 있다. 구체적으로, 복수의 누적기들(410_1~410_M)은 활성화부(200)를 통해 각 연산 유닛에 제공되는 각 활성화와 가중치부(300)를 통해 제공된 각 가중치의 곱에 해당하는 부분합을 컬럼 방향으로 누적할 수 있다.
예를 들면, 복수의 누적기들(410_1~410_M) 중 제1 누적기(예컨대, 410_1)는 제1 서브어레이(101_1)를 통해 출력되는 제1 부분합 누적 값을 누적하고, 복수의 누적기들(410_1~410_M) 중 제2 누적기(예컨대, 410_2)는 제2 서브어레이(101_2)를 통해 출력되는 제2 중요도 누적 값을 누적할 수 있다. 이때, 제1 서브어레이(101_1)는 DNN 연산을 수행함에 따라 제1 부분합 누적 값을 출력할 수 있다. 또한, 제2 서브어레이(101_2)는 DNN 연산을 수행함에 따라 제2 부분합 누적값을 출력할 수 있다.
본 출원의 실시예에 따른 심층 신경망의 가속기(10)는 각 중요도 누적 값에 비례하는 크기를 가지고, 서로 다른 크기를 가진 제1 및 제2 연산 유닛(예컨대, 110_11, 110_12)을 포함하는 유닛어레이(100)와 활성화부(200), 가중치부(300) 및 누적부(400)를 통해 DNN 연산을 수행할 수 있다. 이에 따라, 심층 신경망의 가속기(10)는 DNN 연산결과 정확도(DNN Accuracy)에 대한 감소 없이, 공급 전압 강하 제한을 보다 더 감소시킬 수 있다.
도 4는 도 1의 하나의 연산 유닛(예컨대, 110_11)에 대한 블록도이다.
도 1 내지 도 4를 참조하면, 복수의 연산 유닛들 각각(예컨대, 110_11)은 곱셈기(120_11), 제1 곱셈 플립플롭(130_11), 제2 곱셈 플립플롭(140_11), 누산기(150_11) 및 제1 누산 플립플롭(160_11)을 포함할 수 있다.
구체적으로, 곱셈기(120_11)는 적어도 하나의 트랜지스터들을 포함하고, 제1 곱셈 플립플롭(130_11)은 곱셈기(120_11)와 활성화부(200) 사이에 위치할 수 있다.
다음으로, 제2 곱셈 플립플롭(140_11)은 곱셈기(120_11)와 활성화부(200) 사이에 위치할 수 있다.
다음으로, 누산기(150_11)는 곱셈기(120_11)를 통해 출력받는 제1 부분합과 부분합 누적 경로를 통해 출력받는 제2 부분합을 더하여 누산할 수 있다. 여기서, 부분합 누적 경로는 컬럼 라인 방향으로 인접한 연산 유닛들을 연결한 경로일 수 있다. 예를 들면, 부분합 누적 경로는 유닛어레이(100)의 복수의 컬럼 라인들에 대응될 수 있다.
다음으로, 제1 누산 플립플롭(160_11)은 누산기(150_11)를 통해 출력되는 제1 및 제2 부분합의 누산 값을 지연시키고, 부분합 누적 경로를 통해 하측 컬럼 라인 방향으로 인접한 연산 유닛(예컨대, 110_21)으로 출력할 수 있다.
실시예에 따른 복수의 연산 유닛들(110_11~110_NM) 각각은 곱셈기(예컨대, 111_N1)의 양측에 위치한 크리티컬 경로(Critical Path)를 포함할 수 있다. 이러한 크리티컬 경로(Critical Path)에서, 곱셈기(예컨대, 111_N1)에 포함된 적어도 하나 이상의 트랜지스터들의 크기는 지연(Delay)을 감소시킬 수 있다.
예를 들면, 곱셈기(예컨대, 111_N1)에 포함된 적어도 하나 이상의 트랜지스터들의 크기가 작은 경우, 크리티컬 경로(Critical Path)에서 지연(Delay)을 증가시킬 수 있다. 또한, 곱셈기(예컨대, 111_N1)에 포함된 적어도 하나 이상의 트랜지스터들의 크기가 큰 경우, 크리티컬 경로(Critical Path)에서 지연(Delay)을 감소시킬 수 있다. 즉, 크리티컬 경로 지연(Critical Path Delay)은 복수의 연산 유닛들(110_11~110_NM) 각각의 크기에 반비례할 수 있다.
도 5a는 도 1의 제1 및 제2 서브어레이(101_1, 101_2)에 맵핑되는 제1 및 제2 가중치 패턴을 설명하는 도이고, 도 5b는 도 5a의 제1 및 제2 가중치 패턴과 에러율 사이의 관계를 설명하는 도이다.
도 1 내지 도 5a를 참조하면, 누적부(400)는 제1 서브어레이(101_1)를 통해 출력되는 제1 중요도 누적 값의 평균(WP_A1)과 제2 서브어레이(101_2)를 통해 출력되는 제2 중요도 누적 값의 평균(WP_A2)을 비교할 수 있다. 여기서, 제1 가중치 패턴(WP_1)은 가중치부(300)를 통해 제1 서브어레이(101_1)에 맵핑되고, 제2 시계열 가중치 데이터(WP_1)는 가중치부(300)를 통해 제2 서브어레이(101_2)에 맵핑될 수 있다.
구체적으로, 누적부(400)는 제1 가중치 패턴(WP_1)이 맵핑된 제1 서브어레이(101_1)를 통해 출력되는 제1 중요도 누적 값을 누적하고, 제2 서브어레이(101_2)를 통해 출력되는 제2 중요도 누적 값을 누적할 수 있다. 이때, 누적부(400)는 제1 중요도 누적 값의 평균(WP_A1)을 계산하고, 제2 중요도 누적 값의 평균(WP_A2)을 계산할 수 있다. 이후, 누적부(400)는 제1 서브어레이(101_1)에 대응되는 제1 중요도 누적 값의 평균(WP_A1)과 제2 서브어레이(101_2)에 대응되는 제2 중요도 누적 값의 평균(WP_A2)을 비교할 수 있다.
실시예에 따른 제1 및 제2 서브어레이(101_1, 101_2)는 누적부(400)를 통해 계산된 제1 및 제2 중요도 누적 값의 평균(WP_A1, WP_A2)에 비례하는 크기를 가질 수 있다. 예를 들면, 제1 및 제2 중요도 누적 값의 평균(WP_A1, WP_A2)이 서로 다른 경우, 제1 서브어레이(101_1)의 각 연산 유닛(110_11~110_N1)의 크기와 제2 서브어레이(101_2)의 각 연산 유닛(110_12~110_N2)의 크기는 서로 다른 크기를 가질 수 있다.
도 5b에 도시된 바와 같이, 누적부(400)를 통해 계산된 중요도 누적 값의 평균은 타이밍 오류 발생율(timing error rate)에 비례할 수 있다. 즉, 복수의 연산 유닛들(110_11~110_NM) 각각의 크기는 누적부(400)를 통해 계산된 중요도 누적 값의 평균에 비례하는 동시에, 타이밍 오류 발생율에 비례할 수 있다.
일 실시예에 따라, 복수의 연산 유닛들(110_11~110_NM) 각각은 서브어레이 별로 서로 동일한 크기를 가질 수 있다. 예를 들면, 제1 서브어레이(101_1)는 제1 연산 유닛(예컨대, 110_11)과 제1 연산 유닛(예컨대, 110_11)과 동일한 컬럼 라인 방향에 위치한 제1 나머지 연산 유닛들(예컨대, 110_21~110_N1)을 포함할 수 있다. 여기서, 제1 연산 유닛(예컨대, 110_11)과 제1 나머지 연산 유닛들(예컨대, 110_21~110_N1)은 서로 동일한 크기를 가질 수 있다. 이때, 제1 연산 유닛(예컨대, 110_11)과 제1 나머지 연산 유닛들(예컨대, 110_21~110_N1)은 제2 서브어레이(101_2)의 제2 연산 유닛(예컨대, 110_32)과 제2 나머지 연산 유닛들(예컨대, 110_12, 110_22, 110_42~110_N2)의 크기와 서로 다른 크기를 가질 수 있다.
다른 실시예에 따라, 복수의 연산 유닛들(110_11~110_NM)은 컬럼 방향으로 인접한 한쌍의 연산 유닛 별로 서로 다른 크기를 가질 수 있다. 예를 들면, 제1 및 제3 연산 유닛(예컨대, 110_11, 110_21)은 컬럼 방향으로 인접하고, 서로 다른 크기를 가질 수 있다. 다음으로, 제4 및 제5 연산 유닛(예컨대, 110_12, 110_22)은 컬럼 방향으로 인접하고, 서로 다른 크기를 가질 수 있다. 이때, 제1 및 제3 연산 유닛(예컨대, 110_11, 110_21)과 제4 및 제5 연산 유닛(예컨대, 110_12, 110_22)은 로우 방향으로 인접한 위치에 배열될 수 있다.
여기서, 제1 및 제3 연산 유닛(예컨대, 110_11, 110_21)의 크기 각각은 제1 연산 유닛(예컨대, 110_11)에 맵핑된 중요도 누적 값과 제3 연산 유닛(예컨대, 110_11, 110_21)에 맵핑된 중요도 누적 값 사이의 평균에 대응될 수 있다. 또한, 제4 및 제5 연산 유닛(예컨대, 110_12, 110_22)의 크기 각각은 제4 연산 유닛(예컨대, 110_12)에 맵핑된 중요도 누적 값과 제5 연산 유닛(예컨대, 110_22)에 맵핑된 중요도 누적 값 사이의 평균에 대응될 수 있다.
예를 들면, 제1 및 제3 연산 유닛(예컨대, 110_11, 110_21)의 중요도 누적 값의 평균이 제4 및 제5 연산 유닛(예컨대, 110_12, 110_22)의 중요도 누적 값의 평균보다 큰 경우, 제1 및 제3 연산 유닛(예컨대, 110_11, 110_21)의 크기는 제4 및 제5 연산 유닛(예컨대, 110_12, 110_22)의 크기보다 클 수 있다. 이때, 제1 및 제3 연산 유닛(예컨대, 110_11, 110_21)과 제4 및 제5 연산 유닛(예컨대, 110_12, 110_22)은 서로 다른 크기를 가질 수 있다.
또 다른 실시예에 따라, 복수의 연산 유닛들(110_11~110_NM)은 연산 유닛 블록 별로 서로 다른 크기를 가질 수 있다. 여기서, 연산 유닛 블록은 컬럼 방향으로 인접한 적어도 네개의 연산 유닛(예컨대, 110_11, 110_21, 110_31, 110_41)을 포함할 수 있다.
도 6은 본 출원의 다른 실시예에 따른 심층 신경망의 가속기(11)에 대한 블록도이고, 도 7은 도 6의 제1 및 제2 활성화 전파 경로를 설명하는 도이다.
도 6과 도 7을 참조하면, 심층 신경망의 가속기(11)는 유닛어레이(100), 활성화부(200), 가중치부(300), 제1 및 제2 멀티플렉서(510, 520) 및 활성화 전파 지연 플립플롭(530)를 포함할 수 있다. 이하, 도 1에서 설명된 동일한 부재번호의 유닛어레이(100), 활성화부(200) 및 가중치부(300)에 대한 중복된 설명은 생략될 것이다.
먼저, 유닛어레이(100)는 제1 및 제2 연산유닛(예컨대, 110_11, 110_21)과 제3 및 제4 연산유닛(예컨대, 110_12, 110_22)을 포함할 수 있다.
구체적으로, 제1 및 제2 연산유닛(예컨대, 110_11, 110_21)은 컬럼 방향으로 인접하고, 서로 다른 크기를 가질 수 있다. 다음으로, 제3 및 제4 연산유닛(예컨대, 110_12, 110_22)은 컬럼 방향으로 인접하고, 서로 다른 크기를 가지며, 제1 및 제2 연산유닛(예컨대, 110_11, 110_21)에 대해 로우 라인 방향으로 인접할 수 있다.
실시예에 따라, 제1 및 제2 연산유닛(예컨대, 110_11, 110_21)의 크기는 제1 및 제2 연산유닛에 맵핑된 각 가중치 데이터의 중요도 크기에 대응될 수 있다.
예를 들면, 제2 연산유닛(예컨대, 110_21)에 맵핑된 가중치의 중요도가 제1 연산유닛(예컨대, 110_11)에 맵핑된 가중치의 중요도보다 작은 경우, 제2 연산유닛(예컨대, 110_21)은 제1 연산유닛(예컨대, 110_11)보다 작은 크기를 가질 수 있다.
다음으로, 제1 멀티플렉서(510)는 제1 및 제2 연산 유닛(예컨대, 110_11, 110_21) 중 어느 하나와 제3 연산 유닛(예컨대, 110_12)을 제1 활성화 전파 경로에 연결할 수 있다. 도 7에 도시된 바와 같이, 제1 활성화 전파 경로는 DNN 연산에 미치는 영향(More Robustness)이 큰 데이터 플로우 방향을 의미할 수 있다. 이때, 제1 멀티플렉서(510)는 2대1 멀티플렉서일 수 있다.
예를 들면, 제1 멀티플렉서(510)는 컬럼 방향으로 이웃한 제1 및 제2 연산 유닛(예컨대, 110_11, 110_21) 중 크기가 큰 크기를 갖는 하나의 연산 유닛(예컨대, 110_11)과 제3 연산 유닛(예컨대, 110_12) 사이를 제1 활성화 전파 경로로 결정할 수 있다.
다음으로, 제2 멀티플렉서(520)는 제1 및 제2 연산 유닛(예컨대, 110_11, 110_21) 중 다른 하나와 제4 연산 유닛(예컨대, 110_22)을 제2 활성화 전파 경로에 연결할 수 있다. 도 7에 도시된 바와 같이, 제2 활성화 전파 경로는 DNN 연산에 미치는 영향(Less Robustness)이 작은 데이터 플로우 방향을 의미할 수 있다. 이때, 제2 멀티플렉서(520)는 2대1 멀티플렉서일 수 있다.
예를 들면, 제2 멀티플렉서(520)는 컬럼 방향으로 이웃한 제1 및 제2 연산 유닛(예컨대, 110_11, 110_21) 중 크기가 작은 크기를 갖는 하나의 연산 유닛(예컨대, 110_21)과 제4 연산 유닛(예컨대, 110_22) 사이를 제2 활성화 전파 경로로 결정할 수 있다.
일 실시예에 따라, 제4 연산 유닛(예컨대, 110_22)에 맵핑되는 가중치의 중요도가 제3 연산 유닛(예컨대, 110_22)에 맵핑되는 가중치의 중요도보다 큰 경우, 제1 멀티플렉서(510)는 제1 및 제4 연산 유닛(예컨대, 110_11, 110_22)를 제1 활성화 전파 경로에 연결할 수 있다. 이때, 제2 멀티플렉서(520)는 제2 및 제3 연산 유닛(예컨대, 110_12, 110_21)을 제2 활성화 전파 경로에 연결할 수 있다.
다른 실시예에 따라, 제4 연산 유닛(예컨대, 110_22)에 맵핑되는 가중치의 중요도가 제3 연산 유닛(예컨대, 110_22)에 맵핑되는 가중치의 중요도보다 작은 경우, 제1 멀티플렉서(510)는 제1 및 제3 연산 유닛(예컨대, 110_11, 110_21)를 제1 활성화 전파 경로에 연결할 수 있다. 이때, 제2 멀티플렉서(520)는 제2 및 제4 연산 유닛(예컨대, 110_12, 110_22)을 제2 활성화 전파 경로에 연결할 수 있다.
다음으로, 활성화 전파 지연 플립플롭(530)은 어느 하나가 제3 연산 유닛(예컨대, 110_12)인 경우, 제1 및 제2 활성화 전파 경로를 동기화 시키기 위하여, 제1 활성화 전파 경로를 지연시킬 수 있다.
도 8은 본 출원의 또 다른 실시예에 따른 심층 신경망의 가속기(12)에 대한 블록도이고, 도 9는 도 8의 제2 서브어레이(예컨대, 101_2)에 대한 블록도이며, 도 10은 도 8의 활성화 전파 경로를 설명하는 도이다.
도 8내지 도 10를 참조하면, 심층 신경망의 가속기(12)는 유닛어레이(100), 활성화부(200), 가중치부(300) 및 활성화 전파 스위칭부(700)를 포함할 수 있다. 이하, 도 1에서 설명된 동일한 부재번호의 유닛어레이(100), 활성화부(200) 및 가중치부(300)에 대한 중복된 설명은 생략될 것이다.
먼저, 유닛어레이(100)는 컬럼 방향 및 로우 방향으로 배열된 복수의 연산 유닛들(110_11~110_NM)을 포함할 수 있다.
실시예에 따른 유닛어레이(100)는 로우 방향으로 인접한 제1 및 제2 서브어레이(예컨대, 101_1, 101_2)를 포함할 수 있다.
구체적으로, 제1 서브어레이(예컨대, 101_1)는 서로 다른 크기를 가진 제1 내지 제4 연산 유닛(예컨대, 110_11~110_41)을 포함할 수 있다. 이때, 제1 내지 제4 연산 유닛(예컨대, 110_11~110_41)은 제1 내지 제4 연산 유닛(예컨대, 110_11~110_41) 순으로 큰 크기를 가질 수 있다. 예를 들면, 제1 연산 유닛(예컨대, 110_11)은 제1 내지 제4 연산 유닛(예컨대, 110_11~110_41) 중 가장 큰 크기를 가질 수 있다.
다음으로, 제2 서브어레이(예컨대, 101_2)는 서로 다른 크기를 가진 제5 내지 제8 연산 유닛(예컨대, 110_12~110_42)을 포함할 수 있다.
다음으로, 복수의 활성화 지연 플립플롭들(710_1~710_N)은 활성화부(200)를 통해 활성화들을 제공받아 지연시킬 수 있다. 이때, 복수의 활성화 지연 플립플롭들(710_1~710_N)의 개수는 복수의 연산 유닛들(110_11~110_NM)의 개수에 대응될 수 있다. 즉, 복수의 활성화 지연 플립플롭들(710_1~710_N)은 복수의 연산 유닛들(110_11~110_NM)에 대응되는 적어도 하나의 서브어레이(101_1~101_M)에 포함될 수 있다.
구체적으로, 제1 서브어레이(예컨대, 101_1)는 제1 내지 제4 연산 유닛(예컨대, 110_11~110_41)에 대응되는 제1 내지 제4 활성화 지연 플립플롭(예컨대, 710_1~710_4)을 포함할 수 있다. 또한, 제2 서브어레이(예컨대, 101_2)는 제5 내지 제8 연산 유닛(예컨대, 110_12~110_42)에 대응되는 제5 내지 제8 활성화 지연 플립플롭(예컨대, 710_5~710_8)을 포함할 수 있다.
다음으로, 활성화 전파 스위칭부(700)는 복수의 활성화 지연 플립플롭들(710_1~710_N)을 통해 지연되는 활성화들에 기초하여, 복수의 연산 유닛들(110_11~110_NM)에 대한 활성화 전파 경로를 4개의 연산 유닛 단위로 결정할 수 있다.
실시예에 따른 활성화 전파 스위칭부(700)는 제5 내지 제8 멀티플렉서(750~780)를 이용하여, 제5 내지 제8 연산 유닛(예컨대, 110_12~110_42)에 대한 제1 내지 제4 활성화 전파 경로를 결정할 수 있다.
구체적으로, 제5 멀티플렉서(750)는 제5 연산 유닛(110_12)에 대응되는 제1 사선 라인 활성화 지연 플립플롭들(721_1~721_4)을 통해 출력되는 활성화들에 기초하여, 제5 연산 유닛(110_12)에 대한 제1 내지 제4 활성화 전파 경로 중 어느 하나를 선택할 수 있다.
다음으로, 제6 멀티플렉서(760)는 제6 연산 유닛(110_22)에 대응되는 제2 사선 라인 활성화 지연 플립플롭들(722_1~722_4)을 통해 출력되는 활성화들에 기초하여, 제6 연산 유닛(110_22)에 대한 제1 내지 제4 활성화 전파 경로 중 다른 하나를 선택할 수 있다.
다음으로, 제7 멀티플렉서(770)는 제7 연산 유닛(110_32)에 대응되는 제3 사선 라인 활성화 지연 플립플롭들(723_1~723_4)을 통해 출력되는 활성화들에 기초하여, 제7 연산 유닛(110_32)에 대한 제1 내지 제4 활성화 전파 경로 중 또 다른 하나를 선택할 수 있다.
다음으로, 제8 멀티플렉서(780)는 제8 연산 유닛(110_42)에 대응되는 제4 사선 라인 활성화 지연 플립플롭들(724_1~724_4)을 통해 출력되는 활성화들에 기초하여, 제8 연산 유닛(110_42)에 대한 제1 내지 제4 활성화 전파 경로 중 나머지 하나를 선택할 수 있다.
도 11은 본 출원의 다른 실시예에 따른 심층 신경망의 가속기(13)에 대한 블록도이다.
도 11을 참조하면, 심층 신경망의 가속기(13)는 유닛어레이(100), 활성화부(200), 가중치부(300), 누적부(400), 타이밍 오류 검출부(800) 및 곱셈 결과 생략 회로(900)를 포함할 수 있다.
먼저, 타이밍 오류 검출부(800)는 복수의 연산 유닛들(110_11~110_NM)에 대한 기설정된 타이밍 출력시간에 기초하여, 복수의 연산 유닛들(110_11~110_NM) 각각으로부터 DNN 연산에 따른 타이밍 오류를 검출할 수 있다.
다음으로, 곱셈 결과 생략 회로(900)는 타이밍 오류 검출부(800)를 통해 검출되는 각 타이밍 오류에 기초하여, 복수의 연산 유닛들(110_11~110_NM) 각각에 포함된 곱셈기의 동작을 차단시킬 수 있다.
본 출원은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 출원의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10, 11, 12: 심층 신경망의 가속기
100: 유닛어레이
200: 활성화부
300: 가중치부
400: 누적부

Claims (20)

  1. 제1 연산 유닛을 포함하는 제1 서브어레이와 제2 연산 유닛을 포함하는 제2 서브어레이를 포함하는 유닛어레이를 포함하고,
    상기 제1 및 제2 연산 유닛은 서로 다른 크기를 가지고,
    상기 제1 및 제2 연산 유닛의 크기는 심층 신경망 연산을 수행함에 따라 각 연산 유닛에 누적되는 각 중요도 누적 값에 비례하고,
    상기 각 중요도 누적 값은 상기 각 연산 유닛에 맵핑되는 서로 다른 가중치를 고려한 누적값인, 심층 신경망의 가속기.
  2. 제1항에 있어서,
    기저장된 입력 특징 맵의 활성화를 상기 유닛어레이에 순차적으로 제공하는 활성화부;
    기설정된 각 3차원 필터로부터 1차원으로 벡터링된 복수의 가중치 패턴들을 상기 유닛어레이에 맵핑하여, 각 연산 유닛에 서로 다른 가중치를 각각 제공하는 가중치부; 및
    상기 각 연산 유닛에 제공되는 각 활성화와 각 가중치의 곱에 해당하는 부분합을 컬럼방향으로 누적하는 누적부를 포함하는, 심층 신경망의 가속기.
  3. 제2항에 있어서,
    상기 제1 및 제2 연산 유닛 각각은, 적어도 하나의 트랜지스터들을 포함하는 곱셈기;
    상기 곱셈기와 상기 활성화부를 연결하는 제1 곱셈 플립플롭;
    상기 곱셈기와 상기 가중치부를 연결하는 제2 곱셈 플립플롭;
    상기 곱셈기를 통해 출력받는 제1 부분합과 부분합 누적 경로를 따라 출력받는 제2 부분합을 누산하는 누산기; 및
    상기 제1 및 제2 부분합의 누산 값을 지연시키는 제1 누산 플립플롭를 포함하는, 심층 신경망의 가속기.
  4. 제2항에 있어서,
    상기 복수의 가중치 패턴들 각각은 복수의 가중치들을 포함하고, 상기 복수의 가중치 패턴들의 개수는 적어도 하나의 서브어레이의 개수에 대응되는, 심층 신경망의 가속기.
  5. 제4항에 있어서,
    상기 복수의 가중치들은 상기 적어도 하나의 서브어레이 중 하나의 서브어레이에 일대일 맵핑되는, 심층 신경망의 가속기.
  6. 제1항에 있어서,
    상기 유닛어레이는 컬럼 방향 및 로우 방향으로 상기 제1 및 제2 연산 유닛을 포함하는 복수의 연산 유닛들이 배열되는, 심층 신경망의 가속기.
  7. 제6항에 있어서,
    상기 복수의 연산 유닛들은 서브어레이 별로 서로 다른 크기를 가지는, 심층 신경망의 가속기.
  8. 제6항에 있어서,
    상기 복수의 연산 유닛들은 컬럼 방향으로 인접한 한쌍의 연산 유닛별로 서로 다른 크기를 가지는, 심층 신경망의 가속기.
  9. 제6항에 있어서,
    상기 복수의 연산 유닛들은 연산 유닛 블록 별로 서로 다른 크기를 가지고,
    상기 연산 유닛 블록은 컬럼 방향으로 인접한 적어도 네개의 연산 유닛을 포함하는, 심층 신경망의 가속기.
  10. 제6항에 있어서,
    상기 유닛어레이는, 상기 로우 방향에 대응되는 복수의 활성화 전파 경로들과 상기 컬럼 방향에 대응되는 복수의 부분합 누적 경로들을 따라, 상기 심층 신경망 연산을 수행하는, 심층 신경망의 가속기.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020190154605A 2019-11-27 2019-11-27 이종 곱셈-누셈 유닛을 이용하는 심층 신경망의 가속기 KR102410166B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190154605A KR102410166B1 (ko) 2019-11-27 2019-11-27 이종 곱셈-누셈 유닛을 이용하는 심층 신경망의 가속기
US16/985,415 US20210158133A1 (en) 2019-11-27 2020-08-05 Deep neural network accelerator using heterogeneous multiply-accumulate unit
KR1020220022943A KR102410168B1 (ko) 2019-11-27 2022-02-22 이종 곱셈-누셈 유닛을 이용하는 심층 신경망의 가속기

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190154605A KR102410166B1 (ko) 2019-11-27 2019-11-27 이종 곱셈-누셈 유닛을 이용하는 심층 신경망의 가속기

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020220022943A Division KR102410168B1 (ko) 2019-11-27 2022-02-22 이종 곱셈-누셈 유닛을 이용하는 심층 신경망의 가속기

Publications (2)

Publication Number Publication Date
KR20210065625A KR20210065625A (ko) 2021-06-04
KR102410166B1 true KR102410166B1 (ko) 2022-06-20

Family

ID=75974278

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020190154605A KR102410166B1 (ko) 2019-11-27 2019-11-27 이종 곱셈-누셈 유닛을 이용하는 심층 신경망의 가속기
KR1020220022943A KR102410168B1 (ko) 2019-11-27 2022-02-22 이종 곱셈-누셈 유닛을 이용하는 심층 신경망의 가속기

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020220022943A KR102410168B1 (ko) 2019-11-27 2022-02-22 이종 곱셈-누셈 유닛을 이용하는 심층 신경망의 가속기

Country Status (2)

Country Link
US (1) US20210158133A1 (ko)
KR (2) KR102410166B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI838797B (zh) * 2022-07-22 2024-04-11 臺灣發展軟體科技股份有限公司 記憶體裝置及用於記憶體內運算的資料重排方法
CN116980423B (zh) * 2023-09-21 2024-02-09 浪潮电子信息产业股份有限公司 模型调度方法、装置、计算系统、设备及可读存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3132996B2 (ja) * 1995-03-02 2001-02-05 三菱電機株式会社 ネットワークの経路設定方法及びネットワークの経路設定装置
US20130111188A9 (en) 2003-07-24 2013-05-02 Martin Vorbach Low latency massive parallel data processing device
EP3469521A4 (en) * 2016-06-09 2020-02-26 Progress, Inc. NEURONAL NETWORK AND LEARNING METHOD OF NEURONAL NETWORK
US10891538B2 (en) * 2016-08-11 2021-01-12 Nvidia Corporation Sparse convolutional neural network accelerator
US9910638B1 (en) * 2016-08-25 2018-03-06 Advanced Micro Devices, Inc. Computer-based square root and division operations
US9779786B1 (en) * 2016-10-26 2017-10-03 Xilinx, Inc. Tensor operations and acceleration
KR102335955B1 (ko) * 2016-11-07 2021-12-08 한국전자통신연구원 컨볼루션 신경망 시스템 및 그것의 동작 방법
US10817587B2 (en) * 2017-02-28 2020-10-27 Texas Instruments Incorporated Reconfigurable matrix multiplier system and method
US11222260B2 (en) * 2017-03-22 2022-01-11 Micron Technology, Inc. Apparatuses and methods for operating neural networks
WO2018211349A1 (ja) * 2017-05-19 2018-11-22 株式会社半導体エネルギー研究所 半導体装置
KR102143928B1 (ko) * 2018-02-05 2020-08-13 고려대학교 산학협력단 인공 신경망 장치 및 그 동작 방법
US20210004668A1 (en) * 2018-02-16 2021-01-07 The Governing Council Of The University Of Toronto Neural network accelerator
KR102065672B1 (ko) * 2018-03-27 2020-01-13 에스케이텔레콤 주식회사 합성곱 연산을 위한 장치 및 방법
US11501141B2 (en) * 2018-10-12 2022-11-15 Western Digital Technologies, Inc. Shifting architecture for data reuse in a neural network
US11740870B2 (en) * 2019-03-29 2023-08-29 Stmicroelectronics S.R.L. Convolutional network hardware accelerator device, system and method
US12067373B2 (en) * 2019-09-25 2024-08-20 Arm Limited Hybrid filter banks for artificial neural networks
US11194549B2 (en) * 2019-10-25 2021-12-07 Arm Limited Matrix multiplication system, apparatus and method
US10969431B1 (en) * 2019-12-23 2021-04-06 Intel Corporation Error-tolerant architecture for power-efficient computing
KR20210126398A (ko) * 2020-04-10 2021-10-20 에스케이하이닉스 주식회사 시스톨릭 어레이를 갖는 신경망 연산 장치

Also Published As

Publication number Publication date
KR20210065625A (ko) 2021-06-04
US20210158133A1 (en) 2021-05-27
KR102410168B1 (ko) 2022-06-22
KR20220029611A (ko) 2022-03-08

Similar Documents

Publication Publication Date Title
KR102410168B1 (ko) 이종 곱셈-누셈 유닛을 이용하는 심층 신경망의 가속기
US8924455B1 (en) Multiplication of matrices using systolic arrays
Farrukh et al. Power efficient tiny yolo cnn using reduced hardware resources based on booth multiplier and wallace tree adders
Sorokin Implementation of high-speed fixed-point dividers on FPGA
US20240119114A1 (en) Matrix Multiplier and Matrix Multiplier Control Method
Wang et al. Design of high-throughput fixed-point complex reciprocal/square-root unit
Mukherjee et al. Counter based low power, low latency Wallace tree multiplier using GDI technique for on-chip digital filter applications
Sun et al. A floating-point accumulator for FPGA-based high performance computing applications
US11429850B2 (en) Performing consecutive mac operations on a set of data using different kernels in a MAC circuit
Yamamoto et al. A systematic methodology for design and analysis of approximate array multipliers
TWI688895B (zh) 快速向量乘累加電路
Ye et al. Static error analysis and optimization of faithfully truncated adders for area-power efficient FIR designs
Kobayashi et al. Towards a low-power accelerator of many FPGAs for stencil computations
Ago et al. The parallel FDFM processor core approach for neural networks
Mody et al. Study of approximate compressors for multiplication using FPGA
Sunny et al. Area efficient high speed approximate multiplier with carry predictor
US10908879B2 (en) Fast vector multiplication and accumulation circuit
Fu et al. Accelerating 3D convolution using streaming architectures on FPGAs
KN VLSI implementation of high speed area efficient arithmetic unit using vedic mathematics
CN116796816B (zh) 处理器、计算芯片和计算设备
Takamaeda-Yamazaki et al. Accelerating deep learning by binarized hardware
Goodman et al. A hardware implementation of the discrete Pascal transform for image processing
El-Atfy et al. Accelerating matrix multiplication on fPGAs
Langade et al. Design of improved systolic array multiplier and its implementation on FPGA
Prathyusha et al. Designing a Mac Unit Using Approximate Multiplier

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant