KR20200066538A - 시스톨릭 어레이 구조를 가지는 뉴럴 네트워크 가속기 - Google Patents
시스톨릭 어레이 구조를 가지는 뉴럴 네트워크 가속기 Download PDFInfo
- Publication number
- KR20200066538A KR20200066538A KR1020190041651A KR20190041651A KR20200066538A KR 20200066538 A KR20200066538 A KR 20200066538A KR 1020190041651 A KR1020190041651 A KR 1020190041651A KR 20190041651 A KR20190041651 A KR 20190041651A KR 20200066538 A KR20200066538 A KR 20200066538A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- processing element
- neural network
- kernel
- array
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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 Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Combined Controls Of Internal Combustion Engines (AREA)
- Memory System (AREA)
Abstract
본 발명은 처리 소자들이 시스톨릭 어레이(systolic array) 구조로 구성된 뉴럴(neural) 네트워크 가속기에 관한 것이다. 본 발명의 하나의 실시 예에 따른 뉴럴 네트워크 가속기는 제1 특징(feature) 데이터 및 제2 특징 데이터를 포함하는 복수의 특징 데이터 및 제1 커널(kernel) 데이터 및 제2 커널 데이터를 포함하는 복수의 커널(kernel) 데이터를 저장하도록 구성된 메모리, 제1 특징 데이터와 제1 커널 데이터를 기반으로 연산을 수행하고, 제1 특징 데이터를 출력하도록 구성된 제1 처리 소자(processing element), 제어 신호에 기초하여 제1 처리 소자로부터 출력되는 제1 특징 데이터 및 메모리로부터 출력되는 제2 특징 데이터 중 하나를 선택하고, 선택된 특징 데이터를 출력하도록 구성된 선택 회로, 선택된 특징 데이터와 제1 커널 데이터 및 제2 커널 데이터 중 하나를 기반으로 연산을 수행하도록 구성된 제2 처리 소자, 및 복수의 특징 데이터 및 복수의 커널 데이터와 연관된 뉴럴 네트워크 특성에 따라 제어 신호를 생성하도록 구성된 제어기를 포함한다.
Description
본 발명은 반도체 장치에 관한 것으로써, 좀 더 상세하게는 처리 소자들이 시스톨릭 어레이(systolic array) 구조로 구성된 뉴럴(neural) 네트워크 가속기에 관한 것이다.
최근 뉴럴 네트워크 기반의 데이터 처리 기법이 발전됨에 따라 높은 연산 능력을 가지는 연산 장치가 요구되고 있다. 뉴럴 네트워크 기반의 연산에 있어서, 일정한 패턴의 알고리즘에 따라 데이터가 처리되므로, 단순 병렬 연산에 높은 성능을 가지는 그래픽 처리 장치(GPU; graphic processing unit)가 주로 활용되고 있다. 그러나, GPU는 그래픽 연산 처리에 최적화된 아키텍처로써 전력소모가 크기 때문에 전력 공급이 제한되는 분야에 사용되기 힘들다.
이러한 기존 연산 장치들의 문제점을 해결하기 위해, 매트릭스 연산 및 입력 데이터 재사용에 최적화된 시스톨릭 어레이 구조의 뉴럴 네트워크 가속기가 사용되고 있다. 시스톨릭 어레이 구조의 뉴럴 네트워크 가속기는 2차원 배열 형태로 배치된 처리 소자(PE; processing element)들을 포함한다. 2차원 배열 형태로 배치된 처리 소자들은 수신된 입력 데이터를 기반으로 연산을 수행하고, 주변의 처리 소자들로 수시된 입력 데이터를 순차적으로 전달할 수 있다.
이러한 일반적인 시스톨릭 어레이 구조의 뉴럴 네트워크 가속기에서는 데이터가 전달되는 방향이 고정적이기 때문에 뉴럴 네트워크 특성에 따라 가속기의 활용률이 낮아질 수 있다. 즉, 뉴럴 네트워크 특성에 따라 일부 처리 소자들만이 연산 수행에 사용될 수 있다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명의 목적은 시스톨릭 어레이 구조의 뉴럴 네트워크 가속기의 활용률을 향상시키기 위한 뉴럴 네트워크 가속기를 제공하는데 있다.
본 발명의 하나의 실시 예에 따른 뉴럴 네트워크 가속기는 제1 특징(feature) 데이터 및 제2 특징 데이터를 포함하는 복수의 특징 데이터 및 제1 커널(kernel) 데이터 및 제2 커널 데이터를 포함하는 복수의 커널(kernel) 데이터를 저장하도록 구성된 메모리, 상기 제1 특징 데이터와 상기 제1 커널 데이터를 기반으로 연산을 수행하고, 상기 제1 특징 데이터를 출력하도록 구성된 제1 처리 소자(processing element), 제어 신호에 기초하여 상기 제1 처리 소자로부터 출력되는 상기 제1 특징 데이터 및 상기 메모리로부터 출력되는 상기 제2 특징 데이터 중 하나를 선택하고, 선택된 특징 데이터를 출력하도록 구성된 선택 회로, 상기 선택된 특징 데이터와 상기 제1 커널 데이터 및 상기 제2 커널 데이터 중 하나를 기반으로 연산을 수행하도록 구성된 제2 처리 소자, 및 상기 복수의 특징 데이터 및 상기 복수의 커널 데이터와 연관된 뉴럴 네트워크 특성에 따라 상기 제어 신호를 생성하도록 구성된 제어기를 포함한다.
하나의 실시 예에 있어서, 상기 복수의 특징 데이터가 제1 매트릭스로 표현되고, 상기 복수의 커널 데이터가 제2 매트릭스로 표현되는 경우, 상기 뉴럴 네트워크 특성은 상기 제1 매트릭스의 크기 및 상기 제2 매트릭스의 크기 정보를 포함할 수 있다.
하나의 실시 예에 있어서, 상기 선택 회로로부터 상기 제1 특징 데이터가 선택되는 경우, 상기 제2 처리 소자는 상기 제1 특징 데이터와 상기 제2 커널 데이터를 기반으로 연산을 수행하도록 구성될 수 있다.
하나의 실시 예에 있어서, 상기 선택 회로로부터 상기 제2 특징 데이터가 선택되는 경우, 상기 제2 처리 소자는 상기 제2 특징 데이터와 상기 제1 커널 데이터 및 상기 제2 커널 데이터 중 하나를 기반으로 연산을 수행하도록 구성될 수 있다.
하나의 실시 예에 있어서, 상기 메모리는 상기 제1 처리 소자와 상기 제2 처리 소자 사이에 위치할 수 있다.
하나의 실시 예에 있어서, 상기 제1 처리 소자에 의해 생성된 제1 연산 결과 및 상기 제2 처리 소자에 의해 생성된 제2 연산 결과는 상기 메모리에 저장될 수 있다.
하나의 실시 예에 있어서, 상기 제1 처리 소자 및 상기 제2 처리 소자는 시스톨릭(systolic) 어레이 구조를 형성할 수 있다.
본 발명의 하나의 실시 예에 따른 뉴럴 네트워크 가속기는 제1 입력 데이터 및 제2 입력 데이터를 포함하는 복수의 입력 데이터를 저장하도록 구성된 메모리, 상기 제1 입력 데이터를 기반으로 연산을 수행하도록 구성된 제1 처리 소자 및 상기 제1 처리 소자로부터 출력되는 상기 제1 입력 데이터 및 상기 메모리로부터 출력되는 상기 제2 입력 데이터 중 선택된 하나를 기반으로 연산을 수행하도록 구성된 제2 처리 소자를 포함하는 처리 소자 어레이, 및 상기 복수의 입력 데이터와 연관된 뉴럴 네트워크 특성에 따라 상기 제2 처리 소자에서 연산될 입력 데이터를 선택하도록 구성된 제어기를 포함할 수 있다.
하나의 실시 예에 있어서, 상기 뉴럴 네트워크 특성은 상기 복수의 입력 데이터로 구성되는 매트릭스 크기 정보를 포함할 수 있다.
하나의 실시 예에 있어서, 상기 제1 입력 데이터는 제1 특징 데이터를 포함하고, 상기 제2 입력 데이터는 제2 특징 데이터를 포함할 수 있다.
하나의 실시 예에 있어서, 상기 제1 처리 소자는 상기 제1 특징 데이터와 상기 제1 처리 소자로 전달되는 커널 데이터를 기반으로 연산을 수행하고, 상기 제2 처리 소자는 상기 제1 특징 데이터 및 상기 제2 특징 데이터 중 하나와 상기 제2 처리 소자로 전달되는 커널 데이터를 기반으로 연산을 수행할 수 있다.
하나의 실시 예에 있어서, 상기 제어기로부터의 제어 신호에 기초하여 상기 제1 처리 소자로부터 출력되는 상기 제1 입력 데이터 및 상기 메모리로부터 출력되는 상기 제2 입력 데이터 중 하나를 선택하여 상기 제2 처리 소자로 제공하는 선택 회로를 더 포함할 수 있다.
하나의 실시 예에 있어서, 상기 처리 소자 어레이는 상기 제1 처리 소자를 포함하는 제1 서브 어레이, 및 상기 제2 처리 소자를 포함하는 제2 서브 어레이를 포함할 수 있다.
하나의 실시 예에 있어서, 상기 선택 회로는 상기 제1 서브 어레이와 상기 제2 서브 어레이 사이의 데이터 경로 상에 위치할 수 있다.
하나의 실시 예에 있어서, 상기 처리 소자 어레이는 시스톨릭 어레이 구조를 형성할 수 있다.
본 발명의 실시 예에 따른 시스톨릭 어레이 구조의 뉴럴 네트워크 가속기는 뉴럴 네트워크 특성에 따라 처리 소자들 간의 데이터 전달 경로를 조절하여 낮은 비용으로 뉴럴 네트워크 가속기의 활용률을 향상시킬 수 있다.
도 1은 본 발명의 하나의 실시 예에 따른 뉴럴 네트워크 가속기의 블록도를 보여준다.
도 2는 도 1의 뉴럴 네트워크 가속기의 하나의 예시를 상세하게 보여주는 블록도이다.
도 3은 도 1의 뉴럴 네트워크 가속기의 다른 예시를 상세하게 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 뉴럴 네트워크 가속기의 구현 예시를 보여준다.
도 5a는 도 4의 뉴럴 네트워크 가속기가 처리하기 위한 입력 특징 맵과 커널 데이터의 하나의 예시를 보여준다.
도 5b는 도 5a의 입력 특징 맵 및 커널 데이터의 합성곱 연산을 위한 변환 매트릭스를 보여준다.
도 5c는 도 4의 뉴럴 네트워크 가속기가 도 5b의 복수의 특징 데이터와 복수의 커널 데이터의 곱셈을 수행하는 예시를 보여준다.
도 6a는 도 4의 뉴럴 네트워크 가속기가 처리하기 위한 입력 특징 맵과 커널 데이터의 다른 예시를 보여준다.
도 6b는 도 6a의 입력 특징 맵 및 커널 데이터의 합성곱 연산을 위한 변환 매트릭스를 보여준다.
도 6c는 도 4의 뉴럴 네트워크 가속기가 도 6b의 복수의 특징 데이터와 복수의 커널 데이터의 곱셈을 수행하는 예시를 보여준다.
도 7a는 도 4의 뉴럴 네트워크 가속기가 처리하기 위한 입력 특징 맵과 커널 데이터의 다른 예시를 보여준다.
도 7b는 도 7a의 입력 특징 맵 및 커널 데이터의 합성곱 연산을 위한 변환 매트릭스를 보여준다.
도 7c는 도 4의 뉴럴 네트워크 가속기가 도 7b의 복수의 특징 데이터와 복수의 커널 데이터의 곱셈을 수행하는 예시를 보여준다.
도 2는 도 1의 뉴럴 네트워크 가속기의 하나의 예시를 상세하게 보여주는 블록도이다.
도 3은 도 1의 뉴럴 네트워크 가속기의 다른 예시를 상세하게 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 뉴럴 네트워크 가속기의 구현 예시를 보여준다.
도 5a는 도 4의 뉴럴 네트워크 가속기가 처리하기 위한 입력 특징 맵과 커널 데이터의 하나의 예시를 보여준다.
도 5b는 도 5a의 입력 특징 맵 및 커널 데이터의 합성곱 연산을 위한 변환 매트릭스를 보여준다.
도 5c는 도 4의 뉴럴 네트워크 가속기가 도 5b의 복수의 특징 데이터와 복수의 커널 데이터의 곱셈을 수행하는 예시를 보여준다.
도 6a는 도 4의 뉴럴 네트워크 가속기가 처리하기 위한 입력 특징 맵과 커널 데이터의 다른 예시를 보여준다.
도 6b는 도 6a의 입력 특징 맵 및 커널 데이터의 합성곱 연산을 위한 변환 매트릭스를 보여준다.
도 6c는 도 4의 뉴럴 네트워크 가속기가 도 6b의 복수의 특징 데이터와 복수의 커널 데이터의 곱셈을 수행하는 예시를 보여준다.
도 7a는 도 4의 뉴럴 네트워크 가속기가 처리하기 위한 입력 특징 맵과 커널 데이터의 다른 예시를 보여준다.
도 7b는 도 7a의 입력 특징 맵 및 커널 데이터의 합성곱 연산을 위한 변환 매트릭스를 보여준다.
도 7c는 도 4의 뉴럴 네트워크 가속기가 도 7b의 복수의 특징 데이터와 복수의 커널 데이터의 곱셈을 수행하는 예시를 보여준다.
이하, 첨부된 도면들을 참조하여 본 발명의 실시 예들이 상세하게 설명된다. 이하의 설명에서, 상세한 구성들 및 구조들과 같은 세부적인 사항들은 단순히 본 발명의 실시 예들의 전반적인 이해를 돕기 위하여 제공된다. 그러므로 본 발명의 기술적 사상 및 범위로부터의 벗어남 없이 본문에 기재된 실시 예들의 변형들은 통상의 기술자 의해 수행될 수 있다. 더욱이, 명확성 및 간결성을 위하여 잘 알려진 기능들 및 구조들에 대한 설명들은 생략된다. 본 명세서에서 사용된 용어들은 본 발명의 기능들을 고려하여 정의된 용어들이며, 특정 기능에 한정되지 않는다. 용어들의 정의는 상세한 설명에 기재된 사항을 기반으로 결정될 수 있다.
이하의 도면들 또는 상세한 설명에서의 모듈들 또는 구성 요소들은 도면에 도시되거나 또는 상세한 설명에 기재된 구성 요소 이외에 다른 것들과 연결될 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 직접적 또는 비직접적일 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 통신에 의한 연결이거나 또는 물리적인 접속일 수 있다.
다르게 정의되지 않는 한, 본문에서 사용되는 기술적 또는 과학적인 의미를 포함하는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 지닌 자에 의해 이해될 수 있는 의미를 갖는다. 일반적으로 사전에서 정의된 용어들은 관련된 기술 분야에서의 맥락적 의미와 동등한 의미를 갖도록 해석되며, 본문에서 명확하게 정의되지 않는 한, 이상적 또는 과도하게 형식적인 의미를 갖도록 해석되지 않는다.
도 1은 본 발명의 하나의 실시 예에 따른 뉴럴 네트워크 가속기의 블록도를 보여준다. 뉴럴 네트워크 가속기(100)는 뉴럴 네트워크를 기반으로 데이터를 처리할 수 있다. 구체적으로, 뉴럴 네트워크 가속기(100)는 입력 특징 맵(input feature map)과 커널(kernel) 데이터를 기반으로 연산을 수행하고, 연산 결과로서 출력 특징 맵(output feature map)을 산출할 수 있다. 예를 들어, 뉴럴 네트워크 가속기(100)가 이미지 데이터를 처리하는 경우, 입력 특징 맵은 이미지 데이터에 대응하고, 커널 데이터는 이미지 데이터를 필터링하기 위한 필터(또는, 가중치(weight))일 수 있다. 입력 특징 맵이 필터링되는 경우, 출력 특징 맵이 산출될 수 있다.
이하에서는, 설명의 편의를 위해, 입력 특징 맵이 복수의 특징 데이터를 포함하고, 복수의 커널 데이터를 이용하여 입력 특징 맵을 처리하는 것으로 가정한다. 즉, 뉴럴 네트워크 가속기(100)는 복수의 특징 데이터 및 복수의 커널 데이터를 기반으로 연산을 수행할 수 있다. 그러나, 본 발명이 이에 한정되는 것은 아니며, 본 발명은 하나 이상의 특징 데이터 및 하나 이상의 커널 데이터를 기반으로 연산을 수행할 수 있다.
뉴럴 네트워크 가속기(100)는 별도의 칩 또는 장치로 구현되거나 다른 칩 또는 장치에 포함되어 구현될 수 있다. 예를 들어, 뉴럴 네트워크 가속기(100)는 뉴럴 프로세싱 장치(NPU; Neural Processing Unit)와 같은 뉴럴 프로세싱 전용 하드웨어로 구현될 수 있다. 또는, 뉴럴 네트워크 가속기(100)는 그래픽 처리 장치(GPU)에 포함될 수 있다.
도 1을 참조하면, 뉴럴 네트워크 가속기(100)는 메모리(110), 처리 소자 어레이(120) 및 제어기(130)를 포함할 수 있다. 메모리(110)는 입력 데이터(IDAT)를 저장할 수 있다. 메모리(110)는 제어기(130)의 제어에 따라 저장된 입력 데이터(IDAT)를 처리 소자 어레이(120)로 제공할 수 있다. 입력 데이터(IDAT)는 처리 소자 어레이(120)를 통해 처리될 데이터로서, 특징 데이터 및 커널 데이터 중 적어도 하나를 포함할 수 있다.
처리 소자 어레이(120)는 복수의 처리 소자(PE; Processing Element)들(PE1-PE8)을 포함할 수 있다. 제1 내지 제4 처리 소자들(PE1-PE4)은 제1 서브 어레이(121)에 포함되고, 제5 내지 제8 처리 소자들(PE5-PE8)은 제2 서브 어레이(122)에 포함될 수 있다.
처리 소자(PE)는 메모리(110)로부터 제공되는 입력 데이터(IDAT)를 기반으로 연산을 수행할 수 있다. 예를 들어, 처리 소자(PE)는 입력 데이터(IDAT)를 기반으로 덧셈 연산 또는 곱셈 연산 등을 수행할 수 있다. 예를 들어, 처리 소자(PE)는 덧셈기(adder), 곱셈기(multiplier) 및 누적기(accumulator) 중 적어도 하나를 포함할 수 있다.
각각의 처리 소자(PE)는 입력 데이터(IDAT)를 수신하고, 주변의 처리 소자(PE)들로 입력 데이터(IDAT)를 전달할 수 있다. 처리 소자(PE)는 처리 소자 어레이(120)의 행(row) 방향으로 입력 데이터(IDAT)를 전달할 수 있다. 예를 들어, 제1 처리 소자(PE1)는 메모리(110)로부터 제공된 입력 데이터(IDAT)를 제2 처리 소자(PE2)로 전달할 수 있다. 또는, 처리 소자(PE)는 처리 소자 어레이(120)의 열(column) 방향으로 입력 데이터(IDAT)를 전달할 수 있다. 예를 들어, 제3 처리 소자(PE3)는 메모리(110)로부터 제공된 입력 데이터(IDAT)를 제1 처리 소자(PE1)로 전달할 수 있다. 이와 같이, 처리 소자(PE)는 특정 방향(예를 들어, 행 및 열 방향 중 적어도 하나)으로 입력 데이터(IDAT)를 순차적으로 전달할 수 있다. 처리 소자(PE)는 메모리(110) 또는 다른 처리 소자(PE)로부터 전달된 입력 데이터(IDAT)를 기반으로 연산을 수행할 수 있다. 즉, 처리 소자 어레이(120)는 시스톨릭 어레이(systolic array) 구조를 가질 수 있다.
제2 서브 어레이(122)의 처리 소자(PE)는 제1 서브 어레이(121)의 처리 소자(PE)로부터 입력 데이터(IDAT)를 수신하거나 메모리(110)로부터 입력 데이터(IDAT)를 수신할 수 있다. 예를 들어, 제5 처리 소자(PE5)는 제2 처리 소자(PE2)로부터 출력되는 입력 데이터(IDAT)를 수신하거나 메모리(110)로부터 출력되는 입력 데이터(IDAT)를 수신할 수 있다. 이 경우, 제5 처리 소자(PE5)는 수신되는 입력 데이터(IDAT)를 기반으로 연산을 수행하고, 제6 처리 소자(PE6)로 입력 데이터(IDAT)를 전달할 수 있다.
메모리(110)로부터 출력된 입력 데이터(IDAT)가 제2 서브 어레이(122)로 전달되는 경우, 제1 서브 어레이(121)로부터 출력되는 입력 데이터(IDAT)는 제2 서브 어레이(122)로 전달되지 않을 수 있다. 제1 서브 어레이(121)로부터 출력되는 입력 데이터(IDAT)가 제2 서브 어레이(122)로 전달되는 경우, 메모리(110)로부터 출력된 입력 데이터(IDAT)가 제2 서브 어레이(122)로 전달되지 않을 수 있다. 제2 서브 어레이(122)로 전달되는 입력 데이터(IDAT)의 경로는 제어기(130)에 의해 제어될 수 있다. 즉, 서브 어레이들(121, 122) 사이의 입력 데이터(IDAT) 전달 경로가 변경될 수 있다.
제어기(130)는 메모리(110) 및 처리 소자 어레이(120)의 동작을 제어할 수 있다. 제어기(130)는 수신된 뉴럴 네트워크 특성(NNC)을 기반으로 메모리(110) 및 처리 소자 어레이(120)의 동작을 제어할 수 있다. 뉴럴 네트워크 특성(NNC)은 연산 대상인 입력 데이터(IDAT)에 연관된 정보를 포함할 수 있다. 뉴럴 네트워크 특성(NNC)은 입력 데이터(IDAT)에 따라 달라질 수 있다. 예를 들어, 입력 데이터(IDAT)가 특징 데이터 및 커널 데이터를 포함하는 경우, 뉴럴 네트워크 특성(NNC)은 특징 데이터의 매트릭스(matrix) 크기(행 또는 열의 개수) 및 커널 데이터의 매트릭스 크기에 대한 정보를 포함할 수 있다.
제어기(130)는 뉴럴 네트워크 특성(NNC)에 따라 서브 어레이들(121, 122) 사이의 입력 데이터(IDAT) 전달 경로를 제어할 수 있다. 예를 들어, 제어기(130)는 제1 서브 어레이(121)로부터 출력되는 입력 데이터(IDAT)가 제2 서브 어레이(122)로 전달되도록 메모리(110) 및 처리 소자 어레이(120)를 제어할 수 있다. 또는, 제어기(130)는 메모리(110)로부터 출력되는 입력 데이터(IDAT)가 제2 서브 어레이(122)로 전달되도록 메모리(110) 및 처리 소자 어레이(120)를 제어할 수 있다. 예를 들어, 뉴럴 네트워크 특성(NNC)은 외부의 호스트(host)로부터 제공될 수 있다.
상술한 바와 같이, 본 발명의 실시 예에 따르면, 뉴럴 네트워크 특성(NNC)에 따라 처리 소자(PE)들 사이의 입력 데이터(IDAT) 전달 경로가 변경될 수 있다. 뉴럴 네트워크 특성(NNC)에 따라 처리 소자(PE)들 사이의 데이터 전달 경로가 제어됨에 따라 뉴럴 네트워크 특성(NNC)에 최적화된 시스톨릭 어레이 구조가 구성될 수 있다. 따라서, 입력 데이터(IDAT)와 연관된 뉴럴 네트워크 특성(NNC)이 달라지더라도 최적화된 시스톨렉 어레이 구조를 구성하여 효율적으로 연산이 수행될 수 있으므로, 뉴럴 네트워크 가속기(100)의 활용률이 높아질 수 있다.
도 1에는 처리 소자 어레이(120)가 2개의 서브 어레이들(121, 122)을 포함하고, 각각의 서브 어레이가 4개의 처리 소자(PE)들을 포함하는 것으로 도시되었으나, 본 발명이 이에 한정되는 것은 아니다. 예를 들어, 처리 소자 어레이(120)는 다양한 개수의 서브 어레이들 및 처리 소자(PE)들을 포함할 수 있다. 이하에서는, 설명의 편의를 위해, 각 서브 어레이가 4개의 처리 소자들을 포함하는 예시를 기준으로 뉴럴 네트워크 가속기(100)의 동작을 설명할 것이다.
도 2는 도 1의 뉴럴 네트워크 가속기의 하나의 예시를 상세하게 보여주는 블록도이다. 도 2를 참조하면, 뉴럴 네트워크 가속기(200)는 메모리(210), 제1 서브 어레이(220), 선택 회로(230), 제2 서브 어레이(240) 및 제어기(250)를 포함할 수 있다.
메모리(210)는 복수의 특징 데이터(FDAT) 및 복수의 커널 데이터(KDAT)를 저장할 수 있다. 즉, 메모리(210)는 도 1의 입력 데이터(IDAT)로서 특징 데이터(FDAT) 및 커널 데이터(KDAT)를 저장할 수 있다. 메모리(210)는 제어기(250)의 제어에 따라 특징 데이터(FDAT) 및 커널 데이터(KDAT)를 처리 소자(PE)로 제공할 수 있다. 예를 들어, 메모리(210)는 DRAM(Dynamic RAM), SDRAM(Synchronous RAM) 등과 같은 휘발성 메모리, 및/또는 PRAM(Phase-change RAM), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.
제1 서브 어레이(220)는 제1 내지 제4 처리 소자들(PE1-PE4)을 포함할 수 있다. 제1 서브 어레이(220)는 메모리(210)로부터 제1 특징 데이터(FDAT1) 및 제1 커널 데이터(KDAT1)를 수신할 수 있다. 제1 서브 어레이(220)는 내부의 처리 소자(PE)들을 통해 메모리(210)로부터 수신된 제1 특징 데이터(FDAT1)를 출력할 수 있다. 제1 서브 어레이(220)로부터 출력된 제1 특징 데이터(FDAT1)는 선택 회로(230)로 입력될 수 있다. 예를 들어, 제1 특징 데이터(FDAT1) 및 제1 커널 데이터(KDAT1)는 제3 처리 소자(PE3)로 제공될 수 있다. 제3 처리 소자(PE3)는 제1 특징 데이터(FDAT1) 및 제1 커널 데이터(KDAT1)를 기반으로 연산을 수행할 수 있다. 제3 처리 소자(PE3)는 제1 특징 데이터(FDAT1)를 제4 처리 소자(PE4)로 전달할 수 있다. 또한, 제3 처리 소자(PE3)는 제1 커널 데이터(KDAT1)를 제1 처리 소자(PE1)로 전달할 수 있다. 제4 처리 소자(PE4)는 제3 처리 소자(PE3)로부터 전달된 제1 특징 데이터(FDAT1)를 기반으로 연산을 수행하고, 제1 특징 데이터(FDAT1)를 선택 회로(230)로 출력할 수 있다. 이 경우, 제4 처리 소자(PE4)는 제1 커널 데이터(KDAT1)가 아닌 다른 커널 데이터를 기반으로 연산을 수행할 수 있다.
선택 회로(230)는 제1 서브 어레이(220)로부터의 데이터 경로와 메모리(210)로부터의 데이터 경로 중 하나를 선택할 수 있다. 선택 회로(230)는 제어기(250)로부터 제공되는 제어 신호(CS)에 기초하여 데이터 경로를 선택하고, 선택된 데이터 경로로 제공되는 데이터를 선택 데이터(SDAT)로서 출력할 수 있다. 출력된 선택 데이터(SDAT)는 제2 서브 어레이(240)로 제공될 수 있다. 예를 들어, 제1 서브 어레이(220)로부터의 데이터 경로가 선택되는 경우, 선택 회로(230)는 선택 데이터(SDAT)로서 제1 서브 어레이(220)로부터 출력되는 제1 특징 데이터(FDAT1)를 출력할 수 있다. 메모리(210)로부터의 데이터 경로가 선택되는 경우, 선택 회로(230)는 선택 데이터(SDAT)로서 메모리(210)로부터 출력되는 제2 특징 데이터(FDAT2)를 출력할 수 있다.
도 2에는 메모리(210)로부터 제2 특징 데이터(FDAT2)가 선택 회로(230)로 출력되는 것으로 도시되었지만, 본 발명이 이에 한정되는 것은 아니다. 예를 들어, 제1 서브 어레이(220)로부터의 데이터 경로가 선택되는 경우, 메모리(210)는 선택 회로(230)로 어떠한 데이터를 출력하지 않을 수 있다. 즉, 메모리(210)로부터의 데이터 경로가 선택되는 경우에만 메모리(210)가 제2 특징 데이터(FDAT2)를 선택 회로(230)로 출력할 수 있다.
제2 서브 어레이(240)는 제5 내지 제8 처리 소자들(PE5-PE8)을 포함할 수 있다. 제2 서브 어레이(240)는 선택 회로(230)로부터 제공되는 선택 데이터(SDAT) 및 메모리(210)로부터 제공되는 제2 커널 데이터(KDAT2)를 수신할 수 있다. 예를 들어, 선택 데이터(SDAT)로서 제1 특징 데이터(FDAT1)가 제공되는 경우, 제7 처리 소자(PE7)는 제1 특징 데이터(FDAT1) 및 제2 커널 데이터(KDAT2)를 기반으로 연산을 수행할 수 있다. 제7 처리 소자(PE7)는 제1 특징 데이터(FDAT1)를 제8 처리 소자(PE8)로 전달할 수 있다. 제8 처리 소자(PE8)는 전달된 제1 특징 데이터(FDAT1)를 기반으로 연산을 수행할 수 있다. 이 경우, 제8 처리 소자(PE8)는 제2 커널 데이터(KDAT2)와 다른 커널 데이터를 기반으로 연산을 수행할 수 있다.
도 2에는 메모리(210)가 제2 커널 데이터(KDAT2)를 제2 서브 어레이(240)로 출력하는 것으로 도시되었으나, 본 발명이 이에 한정되는 것은 아니다. 예를 들어, 메모리(210)는 제1 서브 어레이(220)로 출력하는 커널 데이터(KDAT)와 동일한 제1 커널 데이터(KDAT1)를 제2 서브 어레이(240)로 출력할 수 있다. 이 경우, 메모리(210)로부터의 데이터 경로가 선택되어, 제2 특징 데이터(FDAT2)가 제2 서브 어레이(240)로 제공될 수 있다.
제어기(250)는 메모리(210), 제1 서브 어레이(220), 선택 회로(230) 및 제2 서브 어레이(240)의 동작을 제어할 수 있다. 제어기(250)는 뉴럴 네트워크 특성(NNC)에 따라 선택 회로(230)로 제공될 제어 신호(CS)를 생성할 수 있다. 예를 들어, 뉴럴 네트워크 특성(NNC)에 따라 특징 데이터(FDAT)와 커널 데이터(KDAT)의 매트릭스 크기를 고려하여 제어 신호(CS)를 생성할 수 있다. 제어기(250)는 제1 서브 어레이(220)로부터 출력되는 제1 특징 데이터(FDAT1)가 제2 서브 어레이(240)로 전달되도록 제어 신호(CS)를 생성할 수 있다. 또는, 제어기(250)는 메모리(210)로부터 출력되는 제2 특징 데이터(FDAT2)가 제2 서브 어레이(240)로 전달되도록 제어 신호(CS)를 생성할 수 있다. 제어기(250)는 뉴럴 네트워크 특성(NNC)에 따라 특징 데이터(FDAT)와 커널 데이터(KDAT)의 효율적인 연산을 위해 제2 서브 어레이(240)로 입력되는 데이터 경로를 변경할 수 있다.
제1 서브 어레이(220) 및 제2 서브 어레이(240)의 각각의 처리 소자(PE)에 의해 생성된 연산 결과는 메모리(210)에 저장될 수 있다. 예를 들어, 연산 결과는 특징 데이터(FDAT) 또는 커널 데이터(KDAT)가 처리 소자(PE)로 전달된 경로의 역 방향으로 전달되어 메모리(210)에 저장될 수 있다.
도 2에 도시된 바와 같이, 제1 서브 어레이(220) 및 제2 서브 어레이(240)는 행 방향으로 배치될 수 있다. 이 경우, 선택 회로(230)는 제1 서브 어레이(220)와 제2 서브 어레이(240) 사이에 위치할 수 있다. 그러나, 본 발명이 이에 한정되는 것은 아니다.
도 3은 도 1의 뉴럴 네트워크 가속기의 다른 예시를 상세하게 보여주는 블록도이다. 도 3을 참조하면, 뉴럴 네트워크 가속기(300)는 메모리(310), 제1 서브 어레이(320), 선택 회로(330), 제2 서브 어레이(340) 및 제어기(350)를 포함할 수 있다. 메모리(310), 제1 서브 어레이(320), 선택 회로(330), 제2 서브 어레이(340) 및 제어기(350)의 동작은 도 2의 메모리(210), 제1 서브 어레이(220), 선택 회로(230), 제2 서브 어레이(240) 및 제어기(250)의 동작과 실질적으로 동일 또는 유사할 수 있으므로, 중복되는 설명은 생략될 수 있다.
도 2에 도시된 바와 다르게, 제1 서브 어레이(320) 및 제2 서브 어레이(340)는 열 방향으로 배치될 수 있다. 이 경우, 제1 서브 어레이(320) 및 제2 서브 어레이(340) 사이에 메모리(310)가 위치할 수 있다. 메모리(310)가 서브 어레이들(320, 340) 사이에 배치됨에 따라 메모리(310)는 제1 서브 어레이(320) 및 제2 서브 어레이(340) 각각으로 특징 데이터(FDAT) 및 커널 데이터(KDAT)를 효율적으로 전달할 수 있다.
도 4는 본 발명의 실시 예에 따른 뉴럴 네트워크 가속기의 구현 예시를 보여준다. 도 4를 참조하면, 뉴럴 네트워크 가속기(400)는 메모리(410), 복수의 서브 어레이들(421-424) 및 복수의 선택 회로들(431-433)을 포함할 수 있다. 서브 어레이들(421-424)은 복수의 처리 소자들(PE1-PE16)을 포함하고, 선택 회로들(431-433)은 복수의 멀티플렉서들(S1-S6)을 포함할 수 있다. 뉴럴 네트워크 가속기(400)는 도 1 내지 도 3에서 설명된 제어기를 더 포함할 수 있으나, 설명의 단순화를 위해, 제어기가 생략된다. 도 4에 도시된 바와 같이, 선택 회로들(431-433) 각각은 두 서브 어레이들 사이의 데이터 경로 상에 배치될 수 있다. 예를 들어, 제1 선택 회로(431)는 제1 서브 어레이(421) 및 제2 서브 어레이(422) 사이에 배치될 수 있다.
메모리(410)는 뉴럴 네트워크 가속기(400)를 통해 처리될 특징 데이터 및 커널 데이터를 저장할 수 있다. 메모리(410)는 특징 데이터 전달 경로를 따라 처리 소자(PE)들로 특징 데이터를 제공하고, 커널 데이터 전달 경로를 따라 처리 소자(PE)들로 커널 데이터를 제공할 수 있다. 예를 들어, 메모리(410)는 복수의 특징 데이터 중 하나를 제1 처리 소자(PE1)로 전달할 수 있다. 제1 처리 소자(PE1)로 전달된 특징 데이터는 제2 처리 소자(PE2)로 전달될 수 있다. 메모리(410)는 복수의 커널 데이터 중 하나를 제3 처리 소자(PE3)로 전달할 수 있다. 제3 처리 소자(PE3)로 전달된 커널 데이터는 제1 처리 소자(PE1)로 전달될 수 있다. 제1 처리 소자(PE1)는 메모리(410)로부터 전달된 특징 데이터 및 제3 처리 소자(PE3)로부터 전달된 커널 데이터를 기반으로 연산을 수행할 수 있다.
멀티플렉서들(S1-S6)은 대응하는 제어 신호들(CS1-CS6)에 기초하여 처리 소자(PE)로부터 출력된 특징 데이터와 메모리(410)로부터 출력된 특징 데이터 중 하나를 선택하여 출력할 수 있다. 즉, 멀티플렉서들(S1-S6)을 제어하여 처리 소자(PE)들 사이의 특징 데이터 전달 경로가 변경될 수 있다. 예를 들어, 제1 멀티플렉서(S1)는 제1 제어 신호(CS1)에 기초하여 제2 처리 소자(PE2)로부터 출력되는 특징 데이터와 메모리(410)로부터 출력되는 특징 데이터 중 하나를 제5 처리 소자(PE5)로 출력할 수 있다. 제3 멀티플렉서(S3)는 제3 제어 신호(CS3)에 기초하여 제8 처리 소자(PE8)로부터 출력되는 특징 데이터와 메모리(410)로부터 출력되는 특징 데이터 중 하나를 제10 처리 소자(PE10)로 출력할 수 있다.
도 4에 도시된 바와 같이, 뉴럴 네트워크 가속기(400)는 뉴럴 네트워크 특성(NNC)에 따라 처리 소자(PE)들 사이의 특징 데이터 전달 경로를 변경할 수 있다. 이에 따라, 뉴럴 네트워크 특성(NNC)에 따라 처리 소자(PE)들로 전달되는 특징 데이터가 달라질 수 있고, 뉴럴 네트워크 가속기(400)는 효율적으로 특징 데이터를 처리할 수 있다.
이하에서는, 도 5a 내지 도 7c를 참조하여 다양한 뉴럴 네트워크 특성(NNC)에 따른 도 4의 뉴럴 네트워크 가속기(400)의 동작을 구체적으로 설명할 것이다.
도 5a는 도 4의 뉴럴 네트워크 가속기가 처리하기 위한 입력 특징 맵과 커널 데이터의 하나의 예시를 보여준다. 도 5a를 참조하면, 하나의 입력 특징 맵과 4개의 커널 데이터가 도시된다. 하나의 입력 특징 맵은 2 차원의 3 X 3 매트릭스(F)로 표현되고, 4개의 커널 데이터는 2 차원의 2 X 2 매트릭스들(K1-K4)로 표현될 수 있다. 도 4의 뉴럴 네트워크 가속기(400)는 도 5a의 입력 특징 맵 및 커널 데이터를 기반으로 연산을 수행할 수 있다. 예를 들어, 뉴럴 네트워크 가속기(400)는 입력 특징 맵과 각각의 커널 데이터를 이용하여 합성곱(convolution) 연산을 수행할 수 있다. 합성곱 연산을 위해, 도 5b에 도시된 바와 같이, 입력 특징 맵은 매트릭스(N)로 변환되고 커널 데이터는 매트릭스(M)로 변환될 수 있다.
도 5b는 도 5a의 입력 특징 맵 및 커널 데이터의 합성곱 연산을 위한 변환 매트릭스를 보여준다. 도 5b의 매트릭스(N)는 도 5a의 입력 특징 맵의 변환 매트릭스이고, 매트릭스(M)는 도 5a의 4개의 커널 데이터의 변환 매트릭스이다. 매트릭스(N)는 도 5a의 입력 특징 맵이 커널 데이터의 크기에 따라 분류된 복수의 특징 데이터(FDAT1-FDAT4)를 포함할 수 있다. 각각의 특징 데이터는 커널 데이터의 크기에 따라 4개의 특징 값들을 포함할 수 있다. 예를 들어, 제1 커널 데이터(FDAT1)는 제1 특징 값(f1), 제2 특징 값(f2), 제4 특징 값(f4) 및 제5 특징 값(f5)을 포함할 수 있다. 매트릭스(M)는 제1 내지 제4 커널 데이터(KDAT1-KDAT4)를 포함할 수 있다. 커널 데이터(KDAT1-KDAT4)는 도 5a의 2 X 2 매트릭스들(K1-K4)에 대응할 수 있다.
뉴럴 네트워크 가속기(400)는 매트릭스(N)와 매트릭스(M)의 곱셈을 통해 입력 특징 맵과 4개의 커널 데이터의 합성곱 연산을 수행할 수 있다. 연산 수행 결과, 출력 특징 맵이 산출될 수 있다.
매트릭스(N) 및 매트릭스(M)의 행 및 열에 대한 정보는 뉴럴 네트워크 특성(NNC)에 대한 정보로서 뉴럴 네트워크 가속기(400)로 제공될 수 있다. 뉴럴 네트워크 가속기(400)는 제공된 뉴럴 네트워크 특성(NNC)에 기초하여 각 구성 요소들의 동작을 제어하여 매트릭스(N)와 매트릭스(M)의 곱셈을 수행할 수 있다.
도 5c는 도 4의 뉴럴 네트워크 가속기가 도 5b의 복수의 특징 데이터와 복수의 커널 데이터의 곱셈을 수행하는 예시를 보여준다. 뉴럴 네트워크 가속기(400)는 뉴럴 네트워크 특성(NNC)으로서 매트릭스(N)의 행 크기가 '4'(즉, 4개의 특징 데이터(FDAT1-FDAT4))이고, 매트릭스(M)의 열 크기가 '4'(즉, 4개의 커널 데이터(KDAT1-KDAT4))인 정보를 수신할 수 있다. 이러한 뉴럴 네트워크 특성(NNC)에 따라 뉴럴 네트워크 가속기(400)의 각 구성 요소들의 동작이 아래와 같이 제어될 수 있다.
도 5c를 참조하면, 제1 내지 제4 특징 데이터(FDAT1-FDAT4) 및 제1 내지 제4 커널 데이터(KDAT1-KDAT4)는 메모리(410)에 저장될 수 있다. 메모리(410)는 제1 특징 데이터(FDAT1) 및 제2 특징 데이터(FDAT2)를 제1 서브 어레이(421)로 제공하고, 제3 특징 데이터(FDAT3) 및 제4 특징 데이터(FDAT4)를 제2 선택 회로(432)로 제공할 수 있다. 메모리(410)는 제1 커널 데이터(KDAT1) 및 제2 커널 데이터(KDAT2)를 제1 서브 어레이(421) 및 제4 서브 어레이(424)로 제공하고, 제3 커널 데이터(KDAT3) 및 제4 커널 데이터(KDAT4)를 제2 서브 어레이(422) 및 제3 서브 어레이(423)로 제공할 수 있다. 이 경우, 메모리(410)는 특징 데이터 또는 커널 데이터의 복수의 값들을 순차적으로 제공할 수 있다. 예를 들어, 제1 특징 데이터(FDAT1)를 제3 처리 소자(PE3)로 제공하는 경우, 메모리(410)는 (f1, f2, f4, f5)의 순서로 제1 특징 데이터(FDAT1)를 제공할 수 있다. 또한, 제1 커널 데이터(KDAT1)를 제3 처리 소자(PE3)로 제공하는 경우, 메모리(410)는 (k1, k2, k3, k4) 순서로 제1 커널 데이터(KDAT1)를 제공할 수 있다.
제3 처리 소자(PE3)는 제1 특징 데이터(FDAT1) 및 제1 커널 데이터(KDAT1)를 기반으로 연산을 수행할 수 있다. 예를 들어, 제3 처리 소자(PE3)는 입력되는 제1 특징 데이터(FDAT1)의 값과 제1 커널 데이터(KDAT1)의 값을 곱하고 곱셈 결과를 누적할 수 있다. 이에 따라, 제3 처리 소자(PE3)는 연산 결과로서 (f1*k1+f2*k2+f4*k3+f5*k4)를 산출할 수 있다.
제3 처리 소자(PE3)는 제1 특징 데이터(FDAT1)를 제4 처리 소자(PE4)로 전달하고, 제1 커널 데이터(KDAT1)를 제1 처리 소자(PE1)로 전달할 수 있다. 이에 따라, 제1 처리 소자(PE1)는 제2 특징 데이터(FDAT2) 및 제1 커널 데이터(KDAT1)를 기반으로 연산을 수행할 수 있고, 제4 처리 소자(PE4)는 제1 특징 데이터(FDAT1) 및 제2 커널 데이터(KDAT2)를 기반으로 연산을 수행할 수 있다. 마찬가지로, 제2 처리 소자(PE2)는 제2 특징 데이터(FDAT2) 및 제2 커널 데이터(KDAT2)를 기반으로 연산을 수행할 수 있다.
제1 서브 어레이(421)로부터 출력되는 제1 특징 데이터(FDAT1) 및 제2 특징 데이터(FDAT2)가 제2 서브 어레이(422)로 전달되도록 제1 선택 회로(431)가 제어될 수 있다. 예를 들어, 제1 멀티플렉서(S1)는 제1 제어 신호(CS1)에 기초하여 제2 처리 소자(PE2)로부터 출력된 제2 특징 데이터(FDAT2)를 제5 처리 소자(PE5)로 출력할 수 있다. 제2 멀티플렉서(S2)는 제2 제어 신호(CS2)에 기초하여 제4 처리 소자(PE4)로부터 출력된 제1 특징 데이터(FDAT1)를 제7 처리 소자(PE7)로 출력할 수 있다.
제5 내지 제8 처리 소자들(PE5-PE8) 각각은 전달된 특징 데이터 및 커널 데이터를 기반으로 연산을 수행할 수 있다. 즉, 제5 내지 제8 처리 소자들(PE5-PE8)은 제1 및 제2 특징 데이터(FDAT1, FDAT2)와 제3 및 제4 커널 데이터(KDAT3, KDAT4)를 기반으로 연산을 수행할 수 있다. 제2 서브 어레이(422)로 전달된 제1 및 제2 특징 데이터(FDAT1, FDAT2)는 제2 선택 회로(432)로 출력될 수 있다.
메모리(410)로부터 출력되는 제3 특징 데이터(FDAT3) 및 제4 특징 데이터(FDAT4)가 제3 서브 어레이(423)로 전달되도록 제2 선택 회로(432)가 제어될 수 있다. 제3 멀티플렉서(S3)로부터 제1 특징 데이터(FDAT1)가 출력되는 경우, 제10 처리 소자(PE10)는 제8 처리 소자(PE8)의 연산 결과와 중복되는 연산 결과를 산출할 수 있다. 마찬가지로, 제4 멀티플렉서(S4)로부터 제2 특징 데이터(FDAT2)가 출력되는 경우, 제12 처리 소자(PE12)는 제6 처리 소자(PE6)의 연산 결과와 중복되는 연산 결과를 산출할 수 있다. 따라서, 제3 멀티플렉서(S3) 및 제4 멀티플렉서(S4)로부터 제3 특징 데이터(FDAT3) 및 제4 특징 데이터(FDAT4)가 각각 출력되도록 제3 제어 신호(CS3) 및 제4 제어 신호(CS4)가 생성될 수 있다. 이에 따라, 제10 처리 소자(PE10)로 제3 특징 데이터(FDAT3)가 전달되고, 제12 처리 소자(PE12)로 제4 특징 데이터(FDAT4)가 전달될 수 있다.
제9 내지 제12 처리 소자들(PE9-PE12) 각각은 전달된 특징 데이터 및 커널 데이터를 기반으로 연산을 수행할 수 있다. 즉, 제9 내지 제12 처리 소자들(PE9-PE12)은 제3 및 제4 특징 데이터(FDAT3, FDAT4)와 제3 및 제4 커널 데이터(KDAT3, KDAT4)를 기반으로 연산을 수행할 수 있다. 제3 서브 어레이(423)로 전달된 제3 및 제4 특징 데이터(FDAT3, FDAT4)는 제3 선택 회로(433)로 출력될 수 있다.
제3 서브 어레이(423)로부터 출력되는 제3 특징 데이터(FDAT3) 및 제4 특징 데이터(FDAT4)가 제4 서브 어레이(424)로 전달되도록 제3 선택 회로(433)가 제어될 수 있다. 예를 들어, 제5 멀티플렉서(S5)는 제5 제어 신호(CS5)에 기초하여 제9 처리 소자(PE9)로부터 출력되는 제3 특징 데이터(FDAT3)를 출력할 수 있다. 제6 멀티플렉서(S6)는 제6 제어 신호(CS6)에 기초하여 제11 처리 소자(PE11)로부터 출력되는 제4 특징 데이터(FDAT4)를 출력할 수 있다.
제13 내지 제16 처리 소자들(PE13-PE16) 각각은 전달된 특징 데이터 및 커널 데이터를 기반으로 연산을 수행할 수 있다. 즉, 제13 내지 제16 처리 소자들(PE13-PE16)은 제3 및 제4 특징 데이터(FDAT3, FDAT4)와 제1 및 제2 커널 데이터(KDAT1, KDAT2)를 기반으로 연산을 수행할 수 있다.
처리 소자들(PE1-PE16)의 연산에 따라 산출된 연산 결과는 처리 소자들(PE1-PE16) 각각의 내부 레지스터에 저장될 수 있다. 이후, 연산 결과는 처리 소자를 통해 메모리(410)로 전달될 수 있다. 이에 따라, 메모리(410)에는 도 5a의 입력 특징 맵과 커널 데이터의 합성곱 연산 결과인 출력 특징 맵이 저장될 수 있다.
도 5c에서는 제1 및 제2 커널 데이터(KDAT1, KDAT2)가 제4 서브 어레이(424)로 제공되고, 제3 및 제4 커널 데이터(KDAT3, KDAT4)가 제3 서브 어레이(423)로 제공되는 것으로 도시되었으나, 본 발명이 이에 한정되는 것은 아니다. 예를 들어, 메모리(410)는 제1 및 제2 커널 데이터(KDAT1, KDAT2)를 제3 서브 어레이(423)로 출력하고, 제3 및 제4 커널 데이터(KDAT3, KDAT4)를 제4 서브 어레이(424)로 출력할 수 있다.
도 6a는 도 4의 뉴럴 네트워크 가속기가 처리하기 위한 입력 특징 맵과 커널 데이터의 다른 예시를 보여준다. 도 6a를 참조하면, 하나의 입력 특징 맵과 8개의 커널 데이터가 도시된다. 하나의 입력 특징 맵은 2 차원의 2 X 3 매트릭스(F)로 표현되고, 8개의 커널 데이터는 2 차원의 2 X 2 매트릭스들(K1-K8)로 표현될 수 있다. 도 4의 뉴럴 네트워크 가속기(400)는 도 6a의 입력 특징 맵 및 커널 데이터를 기반으로 연산을 수행할 수 있다. 예를 들어, 뉴럴 네트워크 가속기(400)는 입력 특징 맵과 각각의 커널 데이터를 이용하여 합성곱 연산을 수행할 수 있다. 합성곱 연산을 위해, 도 6b에 도시된 바와 같이, 입력 특징 맵은 매트릭스(N)로 변환되고 커널 데이터는 매트릭스(M)로 변환될 수 있다.
도 6b는 도 6a의 입력 특징 맵 및 커널 데이터의 합성곱 연산을 위한 변환 매트릭스를 보여준다. 도 6b의 매트릭스(N)는 도 6a의 입력 특징 맵의 변환 매트릭스이고, 매트릭스(M)는 도 6a의 8개의 커널 데이터의 변환 매트릭스이다. 매트릭스(N)는 도 6a의 입력 특징 맵이 커널 데이터의 크기에 따라 분류된 복수의 특징 데이터(FDAT1-FDAT2)를 포함할 수 있다. 각각의 특징 데이터는 커널 데이터의 크기에 따라 4개의 특징 값들을 포함할 수 있다. 예를 들어, 제1 특징 데이터(FDAT1)는 제1 특징 값(f1), 제2 특징 값(f2), 제4 특징 값(f4) 및 제5 특징 값(f5)을 포함할 수 있다. 매트릭스(M)는 제1 내지 제8 커널 데이터(KDAT1-KDAT8)를 포함할 수 있다. 커널 데이터(KDAT1-KDAT8)는 도 6a의 2 X 2 매트릭스들(K1-K8)에 대응할 수 있다.
뉴럴 네트워크 가속기(400)는 매트릭스(N)와 매트릭스(M)의 곱셈을 통해 입력 특징 맵과 8개의 커널 데이터의 합성곱 연산을 수행할 수 있다. 연산 수행 결과, 출력 특징 맵이 산출될 수 있다.
매트릭스(N) 및 매트릭스(M)의 행 및 열에 대한 정보는 뉴럴 네트워크 특성(NNC)에 대한 정보로서 뉴럴 네트워크 가속기(400)로 제공될 수 있다. 뉴럴 네트워크 가속기(400)는 제공된 뉴럴 네트워크 특성(NNC)에 기초하여 각 구성 요소들의 동작을 제어하여 매트릭스(N)과 매트릭스(M)의 곱셈을 수행할 수 있다.
도 6c는 도 4의 뉴럴 네트워크 가속기가 도 6b의 복수의 특징 데이터와 복수의 커널 데이터의 곱셈을 수행하는 예시를 보여준다. 뉴럴 네트워크 가속기(400)는 뉴럴 네트워크 특성(NNC)으로서 매트릭스(N)의 행 크기가 '2'(즉, 2개의 특징 데이터(FDAT1-FDAT2))이고, 매트릭스(M)의 열 크기가 '8'(즉, 8개의 커널 데이터(KDAT1-KDAT8))인 정보를 수신할 수 있다. 이러한 뉴럴 네트워크 특성(NNC)에 따라 뉴럴 네트워크 가속기(400)의 각 구성 요소들의 동작이 아래와 같이 제어될 수 있다.
도 6c를 참조하면, 제1 및 제2 특징 데이터(FDAT1, FDAT2), 제1 내지 제8 커널 데이터(KDAT1-KDAT8)는 메모리(410)에 저장될 수 있다. 메모리(410)는 제1 특징 데이터(FDAT1) 및 제2 특징 데이터(FDAT2)를 제1 서브 어레이(421)로 제공할 수 있다. 메모리(410)는 제1 및 제2 커널 데이터(KDAT1, KDAT2)를 제1 서브 어레이(421), 제3 및 제4 커널 데이터(KDAT3, KDAT4)를 제2 서브 어레이(422), 제5 및 제6 커널 데이터(KDAT5, KDAT6)를 제3 서브 어레이(423) 및 제7 및 제8 커널 데이터(KDAT7, KDAT8)를 제4 서브 어레이(424)로 제공할 수 있다.
제1 및 제2 특징 데이터(FDAT1, FDAT2)가 제1 서브 어레이(421)로부터 제4 서브 어레이(424)로 전달되도록 제1 내지 제3 선택 회로들(431-433)이 제어될 수 있다. 이에 따라, 제1 서브 어레이(421)는 제1 및 제2 특징 데이터(FDAT1, FDAT2)와 제1 및 제2 커널 데이터(KDAT1, KDAT2)를 기반으로 연산을 수행할 수 있다. 제2 서브 어레이(422)는 제1 및 제2 특징 데이터(FDAT1, FDAT2)와 제3 및 제4 커널 데이터(KDAT3, KDAT4)를 기반으로 연산을 수행할 수 있다. 제3 서브 어레이(423)는 제1 및 제2 특징 데이터(FDAT1, FDAT2)와 제5 및 제6 커널 데이터(KDAT5, KDAT6)를 기반으로 연산을 수행할 수 있다. 제4 서브 어레이(424)는 제1 및 제2 특징 데이터(FDAT1, FDAT2)와 제7 및 제8 커널 데이터(KDAT7, KDAT8)를 기반으로 연산을 수행할 수 있다. 이와 같이, 제1 내지 제16 처리 소자들(PE1-PE16)을 통해 도 6b의 매트릭스(N) 및 매트릭스(M)의 곱셈 연산이 수행될 수 있다. 처리 소자들(PE1-PE16)의 연산에 의해 생성된 연산 결과는 메모리(410)에 저장될 수 있다.
도 7a는 도 4의 뉴럴 네트워크 가속기가 처리하기 위한 입력 특징 맵과 커널 데이터의 다른 예시를 보여준다. 도 7a를 참조하면, 4개의 입력 특징 맵과 8개의 커널 데이터가 도시된다. 4개의 입력 특징 맵은 2 차원의 2 X 3 매트릭스들(F1-F4)로 표현되고, 8개의 커널 데이터는 2 차원의 2 X 2 매트릭스들(K1-K8)로 표현될 수 있다. 각각의 입력 특징 맵은 2개의 커널 데이터에 대응할 수 있다. 예를 들어, 입력 특징 맵(F1)은 커널 데이터(K1) 및 커널 데이터(K2)에 대응할 수 있다.
도 4의 뉴럴 네트워크 가속기(400)는 도 7a의 입력 특징 맵 및 커널 데이터를 기반으로 연산을 수행할 수 있다. 예를 들어, 뉴럴 네트워크 가속기(400)는 각각의 입력 특징 맵 및 대응하는 2개의 커널 데이터를 이용하여 합성곱 연산을 수행할 수 있다. 합성곱 연산을 위해, 도 7b에 도시된 바와 같이, 4개의 입력 특징 맵들은 4개의 매트릭스들(N1-N4)로 변환되고 8개의 커널 데이터는 4개의 매트릭스들(M1-M4)로 변환될 수 있다.
도 7b는 도 7a의 입력 특징 맵 및 커널 데이터의 합성곱 연산을 위한 변환 매트릭스를 보여준다. 도 7b의 매트릭스들(N1-N4)은 도 7a의 매트릭스들(F1-F4)의 변환 매트릭스이고, 매트릭스들(M1-M4)은 도 7a의 매트릭스들(K1-K8)의 변환 매트릭스이다. 매트릭스들(N1-N4)은 도 7a의 입력 특징 맵들이 커널 데이터의 크기에 따라 분류된 복수의 특징 데이터(FDAT1-FDAT8)를 포함할 수 있다. 예를 들어, 매트릭스(N1)는 제1 및 제2 특징 데이터(FDAT1-FDAT2)를 포함할 수 있다. 각각의 특징 데이터는 커널 데이터의 크기에 따라 4개의 특징 값들을 포함할 수 있다. 예를 들어, 제1 커널 데이터(FDAT1)는 제1 특징 값(f1), 제2 특징 값(f2), 제4 특징 값(f4) 및 제5 특징 값(f5)을 포함할 수 있다. 매트릭스들(M1-M4)은 제1 내지 제8 커널 데이터(KDAT1-KDAT8)를 포함할 수 있다. 예를 들어, 매트릭스(M1)는 제1 및 제2 커널 데이터(KDAT1-KDAT2)를 포함할 수 있다. 커널 데이터(KDAT1-KDAT8)는 도 7a의 2 X 2 매트릭스들(K1-K8)에 대응할 수 있다.
뉴럴 네트워크 가속기(400)는 매트릭스들(N1-N4) 및 매트릭스들(M1-M4)을 기반으로 매트릭스 곱셈을 통해 입력 특징 맵과 커널 데이터의 합성곱 연산을 수행할 수 있다. 예를 들어, 매트릭스(N1)와 매트릭스(M1)의 곱셈을 통해 도 7a의 입력 특징 맵(F1)과 커널 데이터(K1, K2)의 합성곱 연산을 수행할 수 있다. 연산 수행 결과, 출력 특징 맵이 산출될 수 있다.
매트릭스들(N1-N4) 및 매트릭스들(M1-M4)의 행 및 열에 대한 정보는 뉴럴 네트워크 특성(NNC)에 대한 정보로서 뉴럴 네트워크 가속기(400)로 제공될 수 있다. 뉴럴 네트워크 가속기(400)는 제공된 뉴럴 네트워크 특성(NNC)에 기초하여 각 구성 요소들의 동작을 제어하여 매트릭스들(N1-N4)과 매트릭스들(M1-M4)의 곱셈을 수행할 수 있다.
도 7c는 도 4의 뉴럴 네트워크 가속기가 도 7b의 복수의 특징 데이터와 복수의 커널 데이터의 곱셈을 수행하는 예시를 보여준다. 뉴럴 네트워크 가속기(400)는 뉴럴 네트워크 특성(NNC)으로서 매트릭스들(N1-N4) 각각의 행 크기가 '2'(즉, 2개의 특징 데이터)이고, 매트릭스들(M1-M4) 각각의 열 크기가 '2'(즉, 2개의 커널 데이터)인 정보를 수신할 수 있다. 이러한 뉴럴 네트워크 특성(NNC)에 따라 뉴럴 네트워크 가속기(400)의 각 구성 요소들의 동작이 아래와 같이 제어될 수 있다.
도 7c를 참조하면, 제1 내지 제8 특징 데이터(FDAT1-FDAT8) 및 제1 내지 제8 커널 데이터(KDAT1-KDAT8)는 메모리(410)에 저장될 수 있다. 메모리(410)는 제1 특징 데이터(FDAT1) 및 제2 특징 데이터(FDAT2)를 제1 서브 어레이(421)로 제공할 수 있다. 메모리(410)는 제3 특징 데이터(FDAT3) 및 제4 특징 데이터(FDAT4)를 제1 선택 회로(431)로 제공할 수 있다. 메모리(410)는 제5 특징 데이터(FDAT5) 및 제6 특징 데이터(FDAT6)를 제2 선택 회로(432)로 제공할 수 있다. 메모리(410)는 제7 특징 데이터(FDAT7) 및 제8 특징 데이터(FDAT8)를 제3 선택 회로(433)로 제공할 수 있다. 메모리(410)는 제1 및 제2 커널 데이터(KDAT1, KDAT2)를 제1 서브 어레이(421), 제3 및 제4 커널 데이터(KDAT3, KDAT4)를 제2 서브 어레이(422), 제5 및 제6 커널 데이터(KDAT5, KDAT6)를 제3 서브 어레이(423) 및 제7 및 제8 커널 데이터(KDAT7, KDAT8)를 제4 서브 어레이(424)로 제공할 수 있다.
제1 서브 어레이(421)는 제1 및 제2 특징 데이터(FDAT1, FDAT2)와 제1 및 제2 커널 데이터(KDAT1, KDAT2)를 기반으로 연산을 수행할 수 있다. 제1 서브 어레이(421)는 제1 및 제2 특징 데이터(FDAT1, FDAT2)를 제1 선택 회로(431)로 출력할 수 있다. 제1 선택 회로(431)는 메모리(410)로부터 출력된 제3 및 제4 특징 데이터(FDAT3, FDAT4)가 제2 서브 어레이(422)로 전달되도록 제어될 수 있다.
제2 서브 어레이(422)는 제3 및 제4 특징 데이터(FDAT3, FDAT4)와 제3 및 제4 커널 데이터(KDAT3, KDAT4)를 기반으로 연산을 수행할 수 있다. 제2 서브 어레이(422)는 제3 및 제4 특징 데이터(FDAT3, FDAT4)를 제2 선택 회로(432)로 출력할 수 있다. 제2 선택 회로(432)는 메모리(410)로부터 출력된 제5 및 제6 특징 데이터(FDAT5, FDAT6)가 제3 서브 어레이(423)로 전달되도록 제어될 수 있다.
제3 서브 어레이(423)는 제5 및 제6 특징 데이터(FDAT5, FDAT6)와 제5 및 제6 커널 데이터(KDAT5, KDAT6)를 기반으로 연산을 수행할 수 있다. 제3 서브 어레이(423)는 제5 및 제6 특징 데이터(FDAT5, FDAT6)를 제3 선택 회로(433)로 출력할 수 있다. 제3 선택 회로(433)는 메모리(410)로부터 출력된 제7 및 제8 특징 데이터(FDAT7, FDAT8)가 제4 서브 어레이(424)로 전달되도록 제어될 수 있다. 제4 서브 어레이(424)는 제7 및 제8 특징 데이터(FDAT7, FDAT8)와 제7 및 제8 커널 데이터(KDAT7, KDAT8)를 기반으로 연산을 수행할 수 있다.
이에 따라, 제1 내지 제16 처리 소자들(PE1-PE16)을 통해 도 7b의 매트릭스들(N1-N4) 및 매트릭스들(M1-M4)의 곱셈 연산이 수행될 수 있다. 이 경우, 각각의 서브 어레이에서 병렬적으로 매트릭스 연산이 수행될 수 있다. 예를 들어, 제1 서브 어레이(421)에 의한 매트릭스(N1) 및 매트릭스(M1)의 곱셈과 제2 서브 어레이(422)에 의한 매트릭스(N2) 및 매트릭스(M2)의 곱셈은 병렬적으로 수행될 수 있다. 처리 소자들(PE1-PE16)의 연산에 의해 생성된 연산 결과는 메모리(410)에 저장될 수 있다.
상술한 바와 같이, 뉴럴 네트워크 가속기(400)는 특징 데이터와 커널 데이터에 연관된 뉴럴 네트워크 특성(NNC)에 따라 처리 소자들 간의 데이터 전달 경로를 변경할 수 있다. 즉, 뉴럴 네트워크 가속기(400)는 뉴럴 네트워크 특성(NNC)에 따라 각 구성 요소들을 제어하고, 특징 데이터와 커널 데이터의 합성곱 연산을 수행할 수 있다. 이에 따라, 뉴럴 네트워크 가속기(400)의 활용률이 향상될 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100, 200, 300, 400: 뉴럴 네트워크 가속기
110, 210, 310, 410: 메몰
120: 처리 소자 어레이
121, 220, 320: 제1 서브 어레이
122, 240, 340: 제2 서브 어레이
130, 250, 350: 제어기
230, 330: 선택 회로
110, 210, 310, 410: 메몰
120: 처리 소자 어레이
121, 220, 320: 제1 서브 어레이
122, 240, 340: 제2 서브 어레이
130, 250, 350: 제어기
230, 330: 선택 회로
Claims (15)
- 제1 특징(feature) 데이터 및 제2 특징 데이터를 포함하는 복수의 특징 데이터 및 제1 커널(kernel) 데이터 및 제2 커널 데이터를 포함하는 복수의 커널(kernel) 데이터를 저장하도록 구성된 메모리;
상기 제1 특징 데이터와 상기 제1 커널 데이터를 기반으로 연산을 수행하고, 상기 제1 특징 데이터를 출력하도록 구성된 제1 처리 소자(processing element);
제어 신호에 기초하여 상기 제1 처리 소자로부터 출력되는 상기 제1 특징 데이터 및 상기 메모리로부터 출력되는 상기 제2 특징 데이터 중 하나를 선택하고, 선택된 특징 데이터를 출력하도록 구성된 선택 회로;
상기 선택된 특징 데이터와 상기 제1 커널 데이터 및 상기 제2 커널 데이터 중 하나를 기반으로 연산을 수행하도록 구성된 제2 처리 소자; 및
상기 복수의 특징 데이터 및 상기 복수의 커널 데이터와 연관된 뉴럴 네트워크 특성에 따라 상기 제어 신호를 생성하도록 구성된 제어기를 포함하는 뉴럴 네트워크 가속기. - 제 1 항에 있어서,
상기 복수의 특징 데이터가 제1 매트릭스로 표현되고, 상기 복수의 커널 데이터가 제2 매트릭스로 표현되는 경우, 상기 뉴럴 네트워크 특성은 상기 제1 매트릭스의 크기 및 상기 제2 매트릭스의 크기 정보를 포함하는 뉴럴 네트워크 가속기. - 제 1 항에 있어서,
상기 선택 회로로부터 상기 제1 특징 데이터가 선택되는 경우, 상기 제2 처리 소자는 상기 제1 특징 데이터와 상기 제2 커널 데이터를 기반으로 연산을 수행하도록 구성된 뉴럴 네트워크 가속기. - 제 1 항에 있어서,
상기 선택 회로로부터 상기 제2 특징 데이터가 선택되는 경우, 상기 제2 처리 소자는 상기 제2 특징 데이터와 상기 제1 커널 데이터 및 상기 제2 커널 데이터 중 하나를 기반으로 연산을 수행하도록 구성된 뉴럴 네트워크 가속기. - 제 1 항에 있어서,
상기 메모리는 상기 제1 처리 소자와 상기 제2 처리 소자 사이에 위치하는 뉴럴 네트워크 가속기. - 제 1 항에 있어서,
상기 제1 처리 소자에 의해 생성된 제1 연산 결과 및 상기 제2 처리 소자에 의해 생성된 제2 연산 결과는 상기 메모리에 저장되는 뉴럴 네트워크 가속기. - 제 1 항에 있어서,
상기 제1 처리 소자 및 상기 제2 처리 소자는 시스톨릭(systolic) 어레이 구조를 형성하는 뉴럴 네트워크 가속기. - 제1 입력 데이터 및 제2 입력 데이터를 포함하는 복수의 입력 데이터를 저장하도록 구성된 메모리;
상기 제1 입력 데이터를 기반으로 연산을 수행하도록 구성된 제1 처리 소자 및 상기 제1 처리 소자로부터 출력되는 상기 제1 입력 데이터 및 상기 메모리로부터 출력되는 상기 제2 입력 데이터 중 선택된 하나를 기반으로 연산을 수행하도록 구성된 제2 처리 소자를 포함하는 처리 소자 어레이; 및
상기 복수의 입력 데이터와 연관된 뉴럴 네트워크 특성에 따라 상기 제2 처리 소자에서 연산될 입력 데이터를 선택하도록 구성된 제어기를 포함하는 뉴럴 네트워크 가속기. - 제 8 항에 있어서,
상기 뉴럴 네트워크 특성은 상기 복수의 입력 데이터로 구성되는 매트릭스 크기 정보를 포함하는 뉴럴 네트워크 가속기. - 제 8 항에 있어서,
상기 제1 입력 데이터는 제1 특징 데이터를 포함하고, 상기 제2 입력 데이터는 제2 특징 데이터를 포함하는 뉴럴 네트워크 가속기. - 제 10 항에 있어서,
상기 제1 처리 소자는 상기 제1 특징 데이터와 상기 제1 처리 소자로 전달되는 커널 데이터를 기반으로 연산을 수행하고,
상기 제2 처리 소자는 상기 제1 특징 데이터 및 상기 제2 특징 데이터 중 하나와 상기 제2 처리 소자로 전달되는 커널 데이터를 기반으로 연산을 수행하는 뉴럴 네트워크 가속기. - 제 8 항에 있어서,
상기 제어기로부터의 제어 신호에 기초하여 상기 제1 처리 소자로부터 출력되는 상기 제1 입력 데이터 및 상기 메모리로부터 출력되는 상기 제2 입력 데이터 중 하나를 선택하여 상기 제2 처리 소자로 제공하는 선택 회로를 더 포함하는 뉴럴 네트워크 가속기. - 제 12 항에 있어서,
상기 처리 소자 어레이는,
상기 제1 처리 소자를 포함하는 제1 서브 어레이; 및
상기 제2 처리 소자를 포함하는 제2 서브 어레이를 포함하는 뉴럴 네트워크 가속기. - 제 13 항에 있어서,
상기 선택 회로는 상기 제1 서브 어레이와 상기 제2 서브 어레이 사이의 데이터 경로 상에 위치하는 뉴럴 네트워크 가속기. - 제 8 항에 있어서,
상기 처리 소자 어레이는 시스톨릭 어레이 구조를 형성하는 뉴럴 네트워크 가속기.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/677,835 US20200175355A1 (en) | 2018-11-30 | 2019-11-08 | Neural network accelerator with systolic array structure |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180153140 | 2018-11-30 | ||
KR20180153140 | 2018-11-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200066538A true KR20200066538A (ko) | 2020-06-10 |
KR102441747B1 KR102441747B1 (ko) | 2022-09-14 |
Family
ID=71087239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190041651A KR102441747B1 (ko) | 2018-11-30 | 2019-04-09 | 시스톨릭 어레이 구조를 가지는 뉴럴 네트워크 가속기 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102441747B1 (ko) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220101961A (ko) * | 2021-01-12 | 2022-07-19 | 성균관대학교산학협력단 | 시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 방법 및 디바이스 |
US11521953B1 (en) | 2019-03-18 | 2022-12-06 | Kepler Computing Inc. | 3D stacked ferroelectric compute and memory |
US11694940B1 (en) | 2021-08-06 | 2023-07-04 | Kepler Computing Inc. | 3D stack of accelerator die and multi-core processor die |
US11784164B2 (en) | 2019-05-31 | 2023-10-10 | Kepler Computing Inc. | 3D stacked compute and memory with copper-to-copper hybrid bond |
US11836102B1 (en) * | 2019-03-20 | 2023-12-05 | Kepler Computing Inc. | Low latency and high bandwidth artificial intelligence processor |
US11844223B1 (en) | 2019-05-31 | 2023-12-12 | Kepler Computing Inc. | Ferroelectric memory chiplet as unified memory in a multi-dimensional packaging |
US12086410B1 (en) | 2019-05-31 | 2024-09-10 | Kepler Computing Inc. | Ferroelectric memory chiplet in a multi-dimensional packaging with I/O switch embedded in a substrate or interposer |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050076847A (ko) * | 2004-01-24 | 2005-07-28 | 학교법인 포항공과대학교 | 시스톨릭 배열 구조를 가지는 미지 신호 분리 장치 및병렬로 연결된 미지 신호 분리 장치를 포함하는 하드웨어장치 |
KR20060017703A (ko) * | 2004-08-21 | 2006-02-27 | 학교법인 포항공과대학교 | 시스톨릭 배열 구조를 가지는 미지 신호 분리 장치 |
US20160267111A1 (en) * | 2015-03-11 | 2016-09-15 | Microsoft Technology Licensing, Llc | Two-stage vector reduction using two-dimensional and one-dimensional systolic arrays |
KR20170005562A (ko) * | 2015-07-06 | 2017-01-16 | 삼성전자주식회사 | 데이터를 병렬적으로 처리하는 장치 및 방법 |
US20170103316A1 (en) * | 2015-05-21 | 2017-04-13 | Google Inc. | Computing convolutions using a neural network processor |
KR20170135752A (ko) * | 2016-05-31 | 2017-12-08 | 삼성전자주식회사 | 효율적인 스파스 병렬 위노그래드 기반 컨볼루션 체계 |
US20180307980A1 (en) * | 2017-04-24 | 2018-10-25 | Intel Corporation | Specialized fixed function hardware for efficient convolution |
-
2019
- 2019-04-09 KR KR1020190041651A patent/KR102441747B1/ko active IP Right Grant
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050076847A (ko) * | 2004-01-24 | 2005-07-28 | 학교법인 포항공과대학교 | 시스톨릭 배열 구조를 가지는 미지 신호 분리 장치 및병렬로 연결된 미지 신호 분리 장치를 포함하는 하드웨어장치 |
KR20060017703A (ko) * | 2004-08-21 | 2006-02-27 | 학교법인 포항공과대학교 | 시스톨릭 배열 구조를 가지는 미지 신호 분리 장치 |
US20160267111A1 (en) * | 2015-03-11 | 2016-09-15 | Microsoft Technology Licensing, Llc | Two-stage vector reduction using two-dimensional and one-dimensional systolic arrays |
US20170103316A1 (en) * | 2015-05-21 | 2017-04-13 | Google Inc. | Computing convolutions using a neural network processor |
KR20170005562A (ko) * | 2015-07-06 | 2017-01-16 | 삼성전자주식회사 | 데이터를 병렬적으로 처리하는 장치 및 방법 |
KR20170135752A (ko) * | 2016-05-31 | 2017-12-08 | 삼성전자주식회사 | 효율적인 스파스 병렬 위노그래드 기반 컨볼루션 체계 |
US20180307980A1 (en) * | 2017-04-24 | 2018-10-25 | Intel Corporation | Specialized fixed function hardware for efficient convolution |
Non-Patent Citations (2)
Title |
---|
Hanif, Muhammad Abdullah, et al. MPNA: A massively-parallel neural array accelerator with dataflow optimization for convolutional neural networks. arXiv preprint arXiv:1810.12910. 2018.10.30.* * |
Xin, Chen, et al. COSY: an energy-efficient hardware architecture for deep convolutional neural networks based on systolic array. 2017 IEEE 23rd ICPADS. IEEE. 2017.* * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11521953B1 (en) | 2019-03-18 | 2022-12-06 | Kepler Computing Inc. | 3D stacked ferroelectric compute and memory |
US11764190B1 (en) | 2019-03-18 | 2023-09-19 | Kepler Computing Inc. | 3D stacked compute and memory with copper pillars |
US11836102B1 (en) * | 2019-03-20 | 2023-12-05 | Kepler Computing Inc. | Low latency and high bandwidth artificial intelligence processor |
US12086410B1 (en) | 2019-05-31 | 2024-09-10 | Kepler Computing Inc. | Ferroelectric memory chiplet in a multi-dimensional packaging with I/O switch embedded in a substrate or interposer |
US11784164B2 (en) | 2019-05-31 | 2023-10-10 | Kepler Computing Inc. | 3D stacked compute and memory with copper-to-copper hybrid bond |
US11844223B1 (en) | 2019-05-31 | 2023-12-12 | Kepler Computing Inc. | Ferroelectric memory chiplet as unified memory in a multi-dimensional packaging |
KR20220101961A (ko) * | 2021-01-12 | 2022-07-19 | 성균관대학교산학협력단 | 시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 방법 및 디바이스 |
US11829699B1 (en) | 2021-08-06 | 2023-11-28 | Kepler Computing Inc. | Method to segregate logic and memory into separate dies for thermal management in a multi-dimensional packaging |
US11791233B1 (en) | 2021-08-06 | 2023-10-17 | Kepler Computing Inc. | Ferroelectric or paraelectric memory and logic chiplet with thermal management in a multi-dimensional packaging |
US11841757B1 (en) | 2021-08-06 | 2023-12-12 | Kepler Computing Inc. | Method and apparatus for cycle-by-cycle clock gating of ferroelectric or paraelectric logic and CMOS based logic |
US11899613B1 (en) | 2021-08-06 | 2024-02-13 | Kepler Computing Inc. | Method and apparatus to process an instruction for a distributed logic having tightly coupled accelerator core and processor core in a multi-dimensional packaging |
US12001266B1 (en) | 2021-08-06 | 2024-06-04 | Kepler Computing Inc. | Method and apparatus for managing power of ferroelectric or paraelectric logic and CMOS based logic |
US12019492B1 (en) | 2021-08-06 | 2024-06-25 | Kepler Computing Inc. | Method and apparatus for managing power in a multi-dimensional packaging |
US12026034B1 (en) | 2021-08-06 | 2024-07-02 | Kepler Computing Inc. | Method and apparatus for heuristic-based power gating of non-CMOS logic and CMOS based logic |
US11694940B1 (en) | 2021-08-06 | 2023-07-04 | Kepler Computing Inc. | 3D stack of accelerator die and multi-core processor die |
Also Published As
Publication number | Publication date |
---|---|
KR102441747B1 (ko) | 2022-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102441747B1 (ko) | 시스톨릭 어레이 구조를 가지는 뉴럴 네트워크 가속기 | |
US11809514B2 (en) | Expanded kernel generation | |
US20200034148A1 (en) | Compute near memory convolution accelerator | |
US20200234124A1 (en) | Winograd transform convolution operations for neural networks | |
KR102139213B1 (ko) | 디램 기반 프로세싱 유닛 | |
KR102672941B1 (ko) | 딥러닝 가속기를 위한 고 대역폭 메모리 기반 메모리 룩업 엔진 | |
AU2008202591B2 (en) | High speed and efficient matrix multiplication hardware module | |
US11487845B2 (en) | Convolutional operation device with dimensional conversion | |
US5421019A (en) | Parallel data processor | |
JP3251421B2 (ja) | 半導体集積回路 | |
JP2022540548A (ja) | エネルギー効率的な入力オペランド固定アクセラレータにおいて小チャネルカウント畳み込みを実施するためのシステムおよび方法 | |
US9922696B1 (en) | Circuits and micro-architecture for a DRAM-based processing unit | |
US11640303B2 (en) | Calculating device | |
US20180121130A1 (en) | Software stack and programming for dpu operations | |
US10649771B2 (en) | Semiconductor device | |
US20200175355A1 (en) | Neural network accelerator with systolic array structure | |
US12106098B2 (en) | Semiconductor device | |
CN116710912A (zh) | 一种矩阵乘法器及矩阵乘法器的控制方法 | |
JP7401513B2 (ja) | ハードウェアにおけるスパース行列乗算 | |
WO2022179075A1 (zh) | 一种数据处理方法、装置、计算机设备及存储介质 | |
WO2023279414A1 (en) | Dynamic tile parallel neural network accelerator | |
US20220083314A1 (en) | Flexible accelerator for a tensor workload | |
US20230195836A1 (en) | One-dimensional computational unit for an integrated circuit | |
CN114912596A (zh) | 面向稀疏卷积神经网络的多chiplet系统及其方法 | |
KR20200063958A (ko) | 차원 변환이 가능한 컨볼루션 연산 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |