KR102594484B1 - 시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 방법 및 디바이스 - Google Patents
시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 방법 및 디바이스 Download PDFInfo
- Publication number
- KR102594484B1 KR102594484B1 KR1020210004086A KR20210004086A KR102594484B1 KR 102594484 B1 KR102594484 B1 KR 102594484B1 KR 1020210004086 A KR1020210004086 A KR 1020210004086A KR 20210004086 A KR20210004086 A KR 20210004086A KR 102594484 B1 KR102594484 B1 KR 102594484B1
- Authority
- KR
- South Korea
- Prior art keywords
- input
- values
- link
- value
- column
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8046—Systolic arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
Abstract
본 발명의 시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 방법은 각각의 필터의 가중치 값들을 열 입력 링크를 통해 각각의 PE 체인들에 미리 로드하는 제1 단계, 미리 로드되는 필터의 가중치 값과 동일한 순서로 입력값을 열 입력 링크에 공급하는 제2 단계, 입력값 중 첫번째 입력값이 PE 체인들의 최상단부에 도달하면, 열 입력 링크에 매칭되는 열 출력 링크에 누적을 시작하는 제3 단계, 열 출력 링크를 통해 누적값이 이동하면서 열 입력 링크를 통해 공급되는 입력값과 마주하면, 마주하는 입력값과 해당 위치에 로드된 필터의 가중치 값들의 곱을 추가로 누적하면서 이동하는 제4 단계 및 이동되는 누적값이 PE 체인들의 최하단부에 도달하면, 곱셈 누적되는 출력값을 출력하는 제5 단계를 포함한다.
Description
본 발명은 시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 방법 및 디바이스에 관한 것으로, 더욱 자세하게는 종래의 격자 형태의 시스톨릭 어레이 구조를 변화시키지 않으면서도 깊이별 합성곱 연산을 위한 수행 속도를 개선시킬 수 있는 시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 방법 및 디바이스를 제공하는 것이다.
일반적인 시스톨릭 어레이는 곱셉 누적(multiply-and-accumuate) 연산을 하는 processing element(PE) 라는 기본 하드웨어 모듈을 격자 형태로 연결하여 행렬 곱 및 합성 곱 등의 연산 효율성을 높이는 구조이다. 일반적인 형태의 딥 뉴럴 네트워크나 convolutional neural network(CNN) 등의 경우 이러한 시스톨릭 어레이 구조를 사용하여 계산 효율성을 극대화할 수 있다.
최근 모바일이나 엣지 환경 등에서 CNN 기반 머신러닝 모델들의 높은 계산 요구량을 해소하고자 깊이별 합성곱(depthwise convolution)이라는 기법이 사용되고 있다. 깊이별 합성곱(depthwise convolution)은 합성곱 연산 시 입력 데이터의 각 채널이 하나의 필터 가중치 하고만 연결되어 절대적인 계산의 양을 줄일 수 있으나 하나의 입력값이 여러 번 재사용되지 않았다. 이와 같이, 낮은 재사용성을 가진 계산의 경우, 격자 형태로 PE들이 배치된 시스톨릭 어레이의 구조와 맞지 않아 시스톨릭 어레이의 사용률(utilization ratio)이 매우 낮아지게 된다. 예를 들어 PE들이 가로 세로 각 N 개씩(총 N2 개) 배치된 일반적인 시스톨릭 어레이의 경우 깊이별 합성곱 연산 시 N개의 PE만 사용되게 되어 시스톨릭 어레이의 계산 효율성이 1/N로 줄어들게 된다.
이러한 문제를 해결하기 위한 방법으로는 PE들을 격자 형태로 배치하는 것 외에 추가적인 데이터 경로(datapath 혹은 interconnect)를 연결하여 재사용성이 낮은 계산도 주어진 PE들을 최대한 활용할 수 있게 하는 방법들이 있으나 이렇게 PE들을 자유롭게 연결하기 위한 데이터 경로를 추가하기 위해서는 상당한 오버헤드가 발생하는 문제점이 있있다.
본 발명의 목적은 종래의 격자 형태의 시스톨릭 어레이 구조를 변화시키지 않으면서도 깊이별 합성곱 연산을 위한 수행 속도를 개선시킬 수 있는 시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 방법 및 디바이스를 제공하는 것이다.
본 발명에서 이루고자 하는 기술적 목적들은 이상에서 언급한 사항들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 이하 설명할 본 발명의 실시예들로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 고려될 수 있다.
이하에서는 본 발명의 실시예들로서 마이크로 LED 표시 장치 및 구동 방법에 대해서 설명한다.
본 발명의 시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 방법은 각각의 필터의 가중치 값들을 열 입력 링크를 통해 각각의 PE 체인들에 미리 로드하는 제1 단계; 미리 로드되는 상기 필터의 가중치 값과 동일한 순서로 입력값을 상기 열 입력 링크에 공급하는 제2 단계; 상기 입력값 중 첫번째 입력값이 상기 PE 체인들의 최상단부에 도달하면, 상기 열 입력 링크에 매칭되는 열 출력 링크에 누적을 시작하는 제3 단계; 상기 열 출력 링크를 통해 누적값이 이동하면서 상기 열 입력 링크를 통해 공급되는 상기 입력값과 마주하면, 마주하는 상기 입력값과 해당 위치에 로드된 상기 필터의 가중치 값들의 곱을 추가로 누적하면서 이동하는 제4 단계; 및 이동되는 상기 누적값이 상기 PE 체인들의 최하단부에 도달하면, 곱셈 누적되는 출력값을 출력하는 제5 단계;를 포함한다.
또한, 상기 제2 단계에서 상기 입력 값 원소들이 공급되는 순서는, 행 우선 순서로 상기 열 입력 링크에 공급되는 것을 포함할 수 있다.
또한, 상기 첫번째 입력값에 공급되는 상기 입력값들 중 일부 입력값 원소들은 두번째 입력값에 공급되는 입력값들과 중복되는 것을 포함할 수 있다.
또한, 상기 두번째 입력값은, 상기 첫번째 입력값과 중복되는 상기 입력값들을 제외하고, 나머지 입력값들을 공급하는 것을 포함할 수 있다.
또한, 상기 열 입력 링크에 공급되는 상기 입력값들 사이에 제로값이 공급되어 상기 열 입력 링크에 빈슬롯이 형성되는 것을 포함할 수 있다.
또한, 상기 제2 단계는, 상기 열 입력 링크에 빈슬롯이 형성되어 하나의 사이클에 대한 공백기가 발생하면, 상기 입력값과 다른 입력 값을 상기 열 입력 링크에 공급하여, 동시에 두 개의 깊이별 합성곱 연산을 중첩시켜 계산하는 것을 포함할 수 있다.
또한, 본 발명의 시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 디바이스는 상기 복수의 입력값과 복수의 필터의 가중치 값을 이용하여 깊이별 합성곱 연산을 수행하도록 제어하는 프로세서;와 상기 프로세서의 제어 하에 상기 복수의 입력값을 선택하여 열 입력 링크에 공급하는 먹스부;를 포함하고, 상기 프로세서는, 상기 필터의 가중치 값들을 상기 열 입력 링크를 통해 각각의 PE 체인들에 미리 로드하고, 미리 로드되는 상기 필터의 가중치 값과 동일한 순서로 입력값을 상기 열 입력 링크에 공급하고, 상기 입력값 중 첫번째 입력값이 상기 PE 체인들의 최상단부에 도달하면, 상기 열 입력 링크에 매칭되는 열 출력 링크에 누적을 시작하고, 상기 열 출력 링크를 통해 누적값이 이동하면서 상기 열 입력 링크를 통해 공급되는 상기 입력값과 마주하면, 마주하는 상기 입력값과 해당 위치에 로드된 상기 필터의 가중치 값들의 곱을 추가로 누적하면서 이동하고, 이동되는 상기 누적값이 상기 PE 체인들의 최하단부에 도달하면, 곱셈 누적되는 출력값을 출력하도록 제어하는 것을 포함한다.
또한, 상기 프로세서는, 상기 입력 값 원소들이 공급되는 순서를 행 우선 순서로 상기 열 입력 링크에 공급되도록 제어하는 것을 포함할 수 있다.
또한, 상기 프로세서는, 상기 첫번째 입력값에 공급되는 상기 입력값들 중 일부 입력값 원소들은 두번째 입력값에 공급되는 입력값들과 중복되는록 제어하는 것을 포함할 수 있다.
또한, 상기 프로세서는, 상기 두번째 입력값에서 상기 첫번째 입력값과 중복되는 상기 입력값들을 제외하고, 나머지 입력값들을 공급하도록 제어하는 것을 포함할 수 있다.
또한, 상기 프로세서는, 상기 열 입력 링크에 공급되는 상기 입력값들 사이에 제로값을 공급하여 상기 열 입력 링크에 빈슬롯이 형성되도록 제어하는 것을 포함할 수 있다.
또한, 상기 프로세서는, 상기 열 입력 링크에 빈슬롯이 형성되어 하나의 사이클에 대한 공백기가 발생하면, 상기 입력값과 다른 입력 값을 상기 열 입력 링크에 공급하여, 동시에 두 개의 깊이별 합성곱 연산을 중첩시켜 계산하도록 제어하는 것을 포함할 수 있다.
상술한 본 발명의 양태들은 본 발명의 바람직한 실시예들 중 일부에 불과하며, 본원 발명의 기술적 특징들이 반영된 다양한 실시예들이 당해 기술분야의 통상적인 지식을 가진 자에 의해 이하 상술할 본 발명의 상세한 설명을 기반으로 도출되고 이해될 수 있다.
본 발명의 실시예들에 따르면 다음과 같은 효과를 얻을 수 있다.
본 발명은 복잡한 가속기 구조 없이도 깊이별 합성곱 연산이 추가된 CNN모델들을 시스톨릭 어레이에 적용함으로써, 연산 속도를 개선할 수 있다.
본 발명은 모바일 환경에서도 CPU나 GPU등 범용 계산 장치가 아닌 뉴럴 네트워크에 특화된 시스톨릭 어레이를 낮은 오버헤드를 통해 적용시킬 수 있으므로 인공지능 모델을 사용하는 속도 및 전력 효율을 높일 수 있다.
본 발명의 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 이하의 본 발명의 실시예들에 대한 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 도출되고 이해될 수 있다. 즉, 본 발명을 실시함에 따른 의도하지 않은 효과들 역시 본 발명의 실시예들로부터 당해 기술분야의 통상의 지식을 가진 자에 의해 도출될 수 있다.
본 발명에 관한 이해를 돕기 위해 상세한 설명의 일부로 포함되고, 첨부된 도면들은 본 발명에 대한 다양한 실시예들을 제공한다. 또한, 첨부된 도면들은 상세한 설명과 함께 본 발명의 실시 형태들을 설명하기 위해 사용된다.
도 1은 본 발명의 시스톨릭 어레이의 전체 구조를 나타낸 도이다.
도 2는 본 발명의 일실시 예에 따른 각 PE 내부의 구조를 설명하기 위한 도이다.
도 3은 본 발명의 시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 방법을 설명하기 위한 도이다.
도 4는 본 발명의 일실시 예에 따라 깊이별 합성곱 연산시 PE들이 세로 형태로만 연결된 채로 사용되는 것을 설명하기 위한도이다.
도 5는 본 발명이 처리하고자 하는 깊이별 합성 곱 연산의 개념도를 설명하기 위한 도이다.
도 6은 본 발명의 일실시 예에 따라 각 개별 PE 체인이 깊이별 합성곱 연산을 수행하는 방법을 설명하기 위한 도이다.
도 7은 본 발명의 다른 실시 예에 따라 각 개별 PE 체인이 깊이별 합성곱 연산을 수행하는 방법을 설명하기 위한 도이다.
도 1은 본 발명의 시스톨릭 어레이의 전체 구조를 나타낸 도이다.
도 2는 본 발명의 일실시 예에 따른 각 PE 내부의 구조를 설명하기 위한 도이다.
도 3은 본 발명의 시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 방법을 설명하기 위한 도이다.
도 4는 본 발명의 일실시 예에 따라 깊이별 합성곱 연산시 PE들이 세로 형태로만 연결된 채로 사용되는 것을 설명하기 위한도이다.
도 5는 본 발명이 처리하고자 하는 깊이별 합성 곱 연산의 개념도를 설명하기 위한 도이다.
도 6은 본 발명의 일실시 예에 따라 각 개별 PE 체인이 깊이별 합성곱 연산을 수행하는 방법을 설명하기 위한 도이다.
도 7은 본 발명의 다른 실시 예에 따라 각 개별 PE 체인이 깊이별 합성곱 연산을 수행하는 방법을 설명하기 위한 도이다.
이하에서는 본 발명의 실시예들로서 시스톨릭 어레이를 이용하여 깊이별 합성곱 연상을 수행하는 방법 및 디바이스에 대해서 설명한다.
이하의 실시예들은 본 발명의 구성요소들과 특징들을 소정 형태로 결합한 것들이다. 각 구성요소 또는 특징은 별도의 명시적 언급이 없는 한 선택적인 것으로 고려될 수 있다. 각 구성요소 또는 특징은 다른 구성요소나 특징과 결합되지 않은 형태로 실시될 수 있다. 또한, 일부 구성요소들 및/또는 특징들을 결합하여 본 발명의 실시예를 구성할 수도 있다. 본 발명의 실시예들에서 설명되는 동작들의 순서는 변경될 수 있다. 어느 실시예의 일부 구성이나 특징은 다른 실시예에 포함될 수 있고, 또는 다른 실시예의 대응하는 구성 또는 특징과 교체될 수 있다.
도면에 대한 설명에서, 본 발명의 요지를 흐릴 수 있는 부분, 장치 및/또는 구성 등은 기술하지 않았으며, 당업자의 수준에서 이해할 수 있을 정도의 부분, 장치 및/또는 구성 또한 기술하지 아니하였다. 또한, 도면에서 동일한 도면 부호를 사용하여 지칭하는 부분은 장치 구성 또는 방법에서 동일한 구성 요소 또는 단계를 의미한다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함(comprising 또는 including)"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "~부" 또는 "~기" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미한다. 또한, "일(a 또는 an)", "하나(one)", "그(the)" 및 유사 관련어는 본 발명을 기술하는 문맥에 있어서(특히, 이하의 청구항의 문맥에서) 본 명세서에 달리 지시되거나 문맥에 의해 분명하게 반박되지 않는 한, 단수 및 복수 모두를 포함하는 의미로 사용될 수 있다.
또한, 본 발명의 실시예들에서 사용되는 특정(特定) 용어들 및/또는 기호들은 본 발명의 이해를 돕기 위해서 제공된 것이며, 이러한 특정 용어의 사용은 본 발명의 기술적 사상을 벗어나지 않는 범위에서 다른 형태로 변경될 수 있다.
도 1은 본 발명의 시스톨릭 어레이의 전체 구조를 나타낸 도이다.
도 1을 참조하면, 본 발명의 시스톨릭 어레이의 전체 구조는 2차원 배열 형태로 배치되는 처리 소자(PE; processing element, 이하 PE로 설명, 100)를 포함할 수 있다.
각각의 PE(100)는 가로 입력 링크(H1 내지 Hn), 세로 입력 링크(VI1 내지 VIn), 세로 출력 링크(VO1 내지 VOn)의 세 가지 종류의 데이터 링크를 가질 수 있다. 가로 입력 링크(H1 내지 Hn)는 행 입력 링크라 칭할 수 있고, 세로 입력 링크(VI1 내지 VIn)는 열 입력 링크라 칭할 수 있고, 세로 출력 링크(VO1 내지 VOn)는 열 출력 링크라 칭할 수 있다.
일반적인 행렬 연산이나 합성곱 연산의 경우 세로 입력 링크(VI1 내지 VIn)를 통해 가중치 값을 각 PE(100)의 레지스터에 로드하고, 가로 입력 링크를 통해 입력값을 공급해 주게 된다. 각 PE(100)는 입력값과 가중치 값을 곱하여 세로 출력 링크(VO1 내지 VOn)를 통해 누적하여 결과를 버퍼(CB, 300a 내지 300n)에 저장하게 된다.
이와 달리, 본 발명은 각 PE(100)에 후술할 먹스부(도 2 참조, 110)를 배치하여 깊이별 합성 곱 연산 시에 가로 입력 링크를 사용하지 않고 세로 입력 링크만을 사용하여 가중치 값 로드 및 입력 값 공급을 모두 처리할 수 있다.
PE 체인(200a 내지 200n)은 적어도 하나 이상의 PE(100)을 포함할 수 있다. PE 체인(200a 내지 200n)은 버퍼(300a, 내지 300n)와 전기적으로 연결되어 버퍼(300a 내지 300n)로부터 입력값 또는 필터의 가중치 값을 전송받을 수 있고, 출력값을 버퍼(300a 내지 300n)에 제공할 수 있다.
각각의 PE 체인(200a 내지 200n)은 세로 입력 링크(VI1 내지 VIn)(또는 열 입력 링크)와 세로 출력 링크(VO1 내지 VOn)(또는 열 출력 링크)를 포함할 수 있다.
세로 입력 링크(VI1 내지 VIn)(또는 열 입력 링크)와 세로 출력 링크(VO1 내지 VOn)(또는 열 출력 링크)는 서로 매칭되도록 배열될 수 있다. 세로 입력 링크(VI1 내지 VIn)(또는 열 입력 링크)의 최하단부와 세로 출력 링크(VO1 내지 VOn)(또는 열 출력 링크)의 최하단부는 버퍼(300a 내지 300n)와 가장 가깝게 배치될 수 있고, 세로 입력 링크(VI1 내지 VIn)(또는 열 입력 링크)의 최상단부와 세로 출력 링크(VO1 내지 VOn)(또는 열 출력 링크)의 최상단부는 버퍼(300a 내지 300n)와 가장 멀리 배치될 수 있다.
이에 대한 자세한 설명은 후술할 도 2 내지 도 6에서 설명하기로 한다.
도 2는 본 발명의 일실시 예에 따른 각 PE 내부의 구조를 설명하기 위한 도이다.
도 2를 참조하면, 본 발명의 일실시 예에 따른 PE(100)는 프로세서(10)와 전기적으로 연결되며, 프로세서(10)의 제어를 받을 수 있다.
PE(10)는 가중치 저장부(130), 먹스부(110), 곱셈 연산부(150) 및 덧셈 연산부(170)를 포함할 수 있다.
가중치 저장부(130)는 열 입력 링크(VIn)와 전기적으로 연결되며, 필터의 가중치 값을 곱셈 연산부(150)에 전송할 수 있다.
먹스부(110)는 가로 입력 링크(Hn)와 세로 입력 링크(VIn)(또는 열 입력 링크)와 전기적으로 연결되며, 곱셈 연산의 연산자인 입력값을 가로 입력 링크(Hn) 또는 세로 입력 링크(VIn)를 통해 전송받아 곱셈 연산부(150)에 전송할 수 있다. 일반적으로 가로 입력 링크는 행렬 곱셉이나 합성곱 연산 수행시 사용되며, 세로 링크는 가중치 로딩만을 위해 사용되나, 본 발명은 깊이별 합성곱 연산시에 먹스부(110)를 통해 입력값을 공급받을 수 있다. 즉, 본 발명은 PE(100)의 내부에 먹스부(110)를 배치함으로써, 일반 모드와 깊이별 합성곱 모드에 따라 곱셉기로의 입력을 가로 링크 또는 세로 링크에서 선택할 수 있다. 깊이별 합성곱은 깊이 우선 합성곱이라 칭할 수 있다.
곱셈 연산부(150)는 가중치 저장부(130)와 먹스부(110)와 전기적으로 연결되며, 이들로부터 전송되는 값을 곱셈 연산하여 덧셈 연산부(170)에 전송할 수 있다.
덧셈 연산부(170)는 세로 출력 링크와 전기적으로 연결되며, 세로 출력 링크(VOn)를 통해 전송되는 누적값을 곱셈 연산부에서 전송되는 값과 덧셈 연산하여 출력값을 출력할 수 있다.
도 3은 본 발명의 시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 방법을 설명하기 위한 도이다.
도 3을참조하면, 본 발명의 본 발명의 시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 방법은 제1 단계(S110) 내지 제5 단계(S150)를 포함할 수 있다.
제1 단계(S110)는 각각의 필터의 가중치 값들을 열 입력 링크를 통해 각각의 PE 체인들에 미리 로드할 수 있다. 제1 단계(S110)는 후술할 프로세서의 제어 하에 필터의 가중치 값을 사전에 열 입력 링크에 순차적으로 로드할 수 있다.
제2 단계(S120)는 미리 로드되는 필터의 가중치 값과 동일한 순서로 입력값을 열 입력 링크에 공급할 수 있다. 제2 단계는 후술할 프로세서의 제어 하에 입력값들을 열 입력 링크에 공급 또는 입력할 수 있다. 프로세서는 입력값을 미리 로드된 필터의 가중치 값에 기초하여 열 입력 링크에 공급 또는 입력할 수 있다. 제2 단계는 입력값을 순차적으로 위로 이동시킬 수 있다.
또한, 제2 단계(S120)에서 상기 입력 값 원소들이 공급되는 순서는 행 우선 순서로 열 입력 링크에 공급될 수 있다. 그리고 첫번째 입력값에 공급되는 입력값들 중 일부 입력값 원소들은 두번째 입력값에 공급되는 입력값들과 중복될 수 있다. 이에 두번째 입력값은 첫번째 입력값과 중복되는 입력값들을 제외하고, 나머지 입력값들을 공급할 수 있다. 이에 대한 자세한 설명은 후술하기로 한다.
제3 단계(S130)는 입력값 중 첫번째 입력값이 PE 체인들의 최상단부에 도달하면, 열 입력 링크에 매칭되는 열 출력 링크에 누적을 시작할 수 있다. 제3 단계(S130)는 프로세서의 제어 하에 열 입력 링크에 제일 먼저 입력된 입력값이 PE 체인들의 최상단부 또는 열 입력 링크의 최상단부에 센싱 또는 도달되면, 입력값과 필터의 가중치 값을 계산할 수 있다. 제3 단계는 프로세서의 제어 하에 입력값과 필터의 가중치 값을 계산한 누적 값을 열 입력 링크에 매칭되는 열 출력 링크에 누적할 수 있다.
제4 단계(S140)는 열 출력 링크를 통해 누적값이 이동하면서 열 입력 링크를 통해 공급되는 입력값과 마주하면, 마주하는 입력값과 해당 위치에 로드된 필터의 가중치 값의 곱을 추가로 누적하면서 이동할 수 있다. 제4 단계(S140)는 프로세서의 제어 하에 누적값을 순차적으로 아래로 이동시킬 수 있다. 제4 단계(S140)는 프로세서의 제어 하에 누적값이 열 입력 링크에 공급되는 입력값과 마주 또는 매칭되면, 매칭된 입력값과 해당 위치에 로드된 필터의 가중치 값의 곱을 추가하여 누적시킬 수 있다.
제5 단계(S150)는 이동되는 누적값이 PE 체인들의 최하단부에 도달하면, 곱셈 누적되는 출력값을 출력할 수 있다. 제5 단계(S150)는 프로세서의 제어 하에 열 출력 링크에 제일 먼저 누적된 누적값이 PE 체인들의 최하단부 또는 열 출력 링크의 최하단부에 센싱 또는 도달되면, 출력값을 출력할 수 있다. 출력값은 버퍼 (CB)에 저장될 수 있다.
도 4는 본 발명의 일실시 예에 따라 깊이별 합성곱 연산시 PE들이 세로 형태로만 연결된 채로 사용되는 것을 설명하기 위한도이다.
도 4를 참조하면, 본 발명의 깊이별 합성곱 연산에 사용되는 필터는 다양한 크기로 형성될 수 있다.
예를 들어, 본 발명의 깊이별 합성곱 연산에 사용되는 필터의 크기가 K x K 일 경우 각 PE 열마다 K2 개의 PE들이 사용될 수 있으며, 나머지는 유휴 상태로 유지될 수 있다. 이때 K는 2이상의 자연수일 수 있다.
본 발명의 깊이별 합성곱 연산에 사용되는 필터는 사용되는 K2 개의 PE 들의 세로 입력 링크(또는 열 입력 링크)와 세로 출력 링크(또는 열 출력 링크)들 만을 통해 사용함으로서, 실질적으로는 1차원으로 연결된 PE들의 체인을 이룰 수 있다.
이때 각 PE체인은 깊이별 합성곱의 개별 채널을 담당할 수 있다.
도 5는 본 발명이 처리하고자 하는 깊이별 합성 곱 연산의 개념도를 설명하기 위한 도이다.
도 5의 (a)에 도시된 바와 같이, 본 발명의 깊이별 합성곱 연산에 사용되는 필터의 크기가 K x K(K=2) 일 경우, 필터의 가중치 값은 W1, W2, W3 및 W4 일 수 있다.
예를 들어, W1가 필터의 (1,1) 칸에 입력되면, W2는 W1의 하측에 배치되는 (1,2) 칸에 입력될 수 있다. W3은 W1의 우측에 배치되는 (2,1) 칸에 입력될 수 있다. W4는 W2의 우측 그리고 W3의 하측에 배치되는 (2,2) 칸에 입력될 수 있다. 필터는 가중치맵이라 칭할 수 있다. W1 , W2, W3 및 W4는 순차적으로 입력될 수 있다.
필터의 가중치 값이 로드 또는 입력되면, 이에 기초하여 실직으로 동일한 순서로 필터에 입력 값이 입력될 수 있다. 입력값은 X1, X 2, X 3 및 X 4 일 수 있다.
예를 들어, X1가 입력필터의 (1,1) 칸에 입력되면, X2는 X1의 하측에 배치되는 (1,2) 칸에 입력될 수 있다. X3은 X1의 우측에 배치되는 (2,1) 칸에 입력될 수 있다. X4는 X2의 우측 그리고 X3의 하측에 배치되는 (2,2) 칸에 입력될 수 있다. 입력필터는 입력맵이라 칭할 수 있다. X1, X 2, X 3 및 X4는 순차적으로 입력될 수 있다.
프로세서는 입력필터에 입력된 각각의 입력값들(X1 부터 X4)을 입력필터에 매칭되는 필터에 입력된 각각의 필터의 가중치값들과 곱한 후 누적되는 출력값(Y1)을 생성할 수 있다.
프로세서는 수학식 1을 통해 출력값(Y1)을 계산할 수 있다.
[수학식 1]
이후, 두번째 출력값(Y3)을 생성하기 위해서는 도 5의 (b)에 도시된 바와 같이, 프로세서는 입력필터가 우측으로 한 칸 이동한 형태로 계산되고, 다음 행의 새로운 입력값들(X5 와 X6)이 계산에 새로 참여하게 되어 새 출력값을 계산할 수 있다.
도 6은 본 발명의 일실시 예에 따라 각 개별 PE 체인이 깊이별 합성곱 연산을 수행하는 방법을 설명하기 위한 도이다.
도 6을 참조하면, 본 발명의 일실시 예에 따라 실제 각 개별 PE 체인이 깊이별 합성곱 연산(A1,A3)을 수행하는 방법을 2x2 필터 크기를 사용하는 경우 각 cycle별 PE 체인의 상태를 표현한 것이다.
각각의 필터의 가중치 값들(W1부터 W4)은 프로세서의 제어 하에 미리 세로 입력 링크를 통해 각각의 PE들에 로드될 수 있다.
이후 입력값들은 프로세서의 제어 하에 가중치 값들(W1부터 W4)처럼 세로 입력 링크를 통해 공급될 수 있다.
이때 프로세서는 입력값이 입력되는 순서를 행 우선 (column-major) 순서로 로드할 수 있다. 즉, 프로세서는 각 필터에 해당되는 입력값들의 첫째 행의 입력값들(예: X1 과 X2)을 세로 입력 링크에 공급한 후, 다음 행의 입력값들(예: X3 과 X4)을 공급할 수 있다.
이와 같이, 프로세서가 행 우선 순서로 입력값들을 PE 체인에 공급하면 두 번째 입력값을 계산할 때 필요한 입력값들을 전부 다시 PE 체인에 입력시킬 필요없이 이전 계산에 사용되었던 입력값들(예: X1부터 X4) 외에 새로 필요한 입력값들 (예: X5 와 X6)만 입력시키면 되기 때문이다.
프로세서는 첫 번째 입력값(예: X1)이 열 입력 링크를 통해 PE 체인의 최상단부에 도달하게 되면(도 6의 cycle 4), 열 출력 링크를 통해 누적을 시작할 수 있다. 프로세서는 누적값이 열 출력 링크를 통해 이동하면서, 열 입력 링크를 통해 공급되는 입력값들과 마주치거나 매칭될 수 있다. 프로세서는 마주치거나 매칭되는 입력값과 해당 위치에 로드된 필터의 가중치 값의 곱을 추가로 누적하고, 누적된 누적값을 열 출력 링크를 통해 이동할 수 있다.
프로세서는 열 출력 링크를 통해 PE 체인의 최하단부에 누적값이 도달하게 되면(도 6의 cycle 8), 하나의 출력값을 위한 모든 곱셉 누적을 완성할 수 있다.
상술한 바와 같이, 프로세서는 열 출력 링크를 통해 누적값을 추가적으로 누적할 시 정확한 입력값들과 누적되게 하기 위해서 열 입력 링크를 통해 입력값을 공급할 때 각 입력값들 사이에 1 사이클의 공백기를 두도록 제어할 수 있다. 즉, 프로세서는 열 입력 링크에 공급되는 입력값들 사이에 제로값이 공급하여 열 입력 링크에 빈슬롯 또는 공백기를 형성함으로써, 누적값에 입력값을 정확하게 추가시킬 수 있다.
다시 말해, 프로세서는 첫 번째 입력값(X1)에 대한 계산이 시작되고 나서 2K cycle 이후에서야, 즉, 도 6에 도시되는 cycle 8에서 두 번째 출력값 (Y3)를 위한 첫 번째 입력값(X3)이 PE 체인의 최상단부에 도달하도록 제어할 수 있다. 이때부터 두 번째 출력값에 대한 누적 계산이 시작될 수 있다.
상술한 본 발명의 일실시 예에 따른 각 개별 PE 체인이 깊이별 합성곱 연산(A1,A3)을 수행하는 방법으로 깊이별 합성곱을 계산하게 되면 2K 사이클마다 하나의 출력값이 계산되게 되므로 기존 1/N의 계산효율을 가지던 시스톨릭 어레이에 비해 K/2 배의 효율 증가를 가져올 수 있다.
도 7은 본 발명의 다른 실시 예에 따라 각 개별 PE 체인이 깊이별 합성곱 연산을 수행하는 방법을 설명하기 위한 도이다.
도 7에 도시된 바와 같이, 본 발명의 다른 실시 예에 따라 각 개별 PE 체인이 깊이별 합성곱 연산을 수행하는 방법은 각 입력값 사이에 1사이클의 공백기가 생기는 것을 활용하여 한 번에 하나의 깊이별 합성곱 연산만을 수행하지 않고, 두 개의 깊이별 합성곱 연산(A,B)을 중첩시켜 계산할 수 있다.
본 발명의 다른 실시 예에 따른 각 개별 PE 체인이 깊이별 합성곱 연산을 수행하는 방법은 두 개의 깊이별 합성곱 연산(A,B)을 중첩시킴으로써, 계산 효율증가가 K/2 배가 아닌 K로 증가시킬 수 있다. 이럴 경우 매 2K 사이클마다 2개의 출력값을 생성할 수 있으므로 기존 기본 시스톨릭 어레이 구조 대비 총 K 배의 연산 속도 증가를 이룰 수 있다.
상술한 본 발명의 실시예들은 본 발명의 필수적 특징을 벗어나지 않는 범위에서 다른 특정한 형태로 구체화될 수 있다. 따라서, 상술한 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다. 또한, 특허청구범위에서 명시적인 인용 관계가 있지 않은 청구항들을 결합하여 실시예를 구성하거나 출원 후의 보정에 의해 새로운 청구항으로 포함할 수 있다.
Claims (12)
- 격자형 시스톨릭 어레이의 열 방향으로 배치된 PE(processing element) 체인들을 사용하여 깊이별 합성곱(Depthwise Convolution)의 각 채널별 연산을 수행하는 방법에 있어서,
각 채널의 2차원 필터 각각의 가중치 값들을 상기 열 방향 PE 체인의 입력 링크를 통해 각각의 PE에 미리 로드하는 제1 단계;
입력맵에서 상기 필터의 크기에 기반하여 입력값들의 범위가 설정되고, 미리 로드되는 상기 필터의 가중치 값과 동일한 순서로 상기 설정된 범위의 입력값들을 상기 열 입력 링크에 공급하는 제2 단계;
상기 공급된 입력값들 중 첫번째 입력값이 상기 PE 체인들의 최상단부에 도달하면, 상기 열 입력 링크의 역방향인 열 출력 링크에 누적을 시작하는 제3 단계;
상기 열 출력 링크를 통해 누적값이 이동하면서 상기 열 입력 링크를 통해 공급되는 상기 입력값들 중 하나의 입력값과 마주하면, 상기 마주하는 입력값과 해당 위치에 로드된 상기 필터의 가중치 값들의 곱을 추가로 누적하면서 이동하는 제4 단계; 및
이동되는 상기 누적값이 상기 PE 체인들의 최하단부에 도달하면, 곱셈 누적되는 출력값을 출력하는 제5 단계;
를 포함하고,
상기 곱셈 누적되는 출력값의 다음 출력값은, 상기 입력맵에서 하나의 열 만큼 우측으로 이동하여 설정된 다음 입력값들의 범위에 기반하여 상기 열 입력 링크에 공급된 상기 다음 입력값 범위 중 기 공급된 값이 아닌 신규 값만이 추가로 공급되어 기 공급된 입력값들을 중복 사용하여 출력된 것이고,
상기 열 입력 링크에 상기 설정된 범위의 입력값들을 공급할 때, 상기 공급된 입력값들 사이마다 빈 슬롯이 형성되는 것을 특징으로 하는 방법.
- 삭제
- 제1 항에 있어서,
상기 곱셈 누적되는 출력값의 연산에 사용되는 상기 입력값들 중 일부 입력값들은 두번째 출력값의 연산에 사용되는 입력값들 중 중복되는 값들을 추가로 공급하지 않고 상기 PE 체인들에 기 공급된 값을 다시 사용하는 것을 특징으로 하는 방법.
- 삭제
- 삭제
- 제1 항에 있어서,
상기 열 입력 링크에 빈 슬롯이 형성되어 하나의 사이클에 대한 공백기가 발생하면,
상기 설정된 범위의 입력값들과는 다른 세트의 입력값들을 상기 열 입력 링크에 공급하여, 동시에 두 가지의 깊이별 합성곱 연산을 중첩시켜 계산하는 것을 특징으로 하는 방법.
- 격자형 시스톨릭 어레이의 열 방향으로 배치된 PE(processing element) 체인들을 사용하여 깊이별 합성곱(Depthwise Convolution)의 각 채널별 연산을 수행하는 디바이스에 있어서,
복수의 입력값들과 2차원 필터의 복수의 가중치 값들을 이용하여 깊이별 합성곱 연산을 수행하도록 제어하는 프로세서;와
상기 프로세서의 제어 하에 상기 복수의 입력값들을 선택하여 상기 열 입력 링크에 공급하는 먹스부;를 포함하고,
상기 프로세서는,
상기 필터의 각각의 가중치 값들을 상기 열 입력 링크를 통해 각각의 PE 체인들에 미리 로드하고, 입력맵에서 상기 필터의 크기에 기반하여 입력값들의 범위가 설정되고, 미리 로드되는 상기 필터의 가중치 값과 동일한 순서로 상기 설정된 범위의 입력값들을 상기 열 입력 링크에 공급하고, 상기 공급된 입력값들 중 첫번째 입력값이 상기 PE 체인들의 최상단부에 도달하면, 상기 열 입력 링크의 역방향인 열 출력 링크에 누적을 시작하고, 상기 열 출력 링크를 통해 누적값이 이동하면서 상기 열 입력 링크를 통해 공급되는 상기 입력값들 중 하나의 입력값과 마주하면, 상기 마주하는 입력값과 해당 위치에 로드된 상기 필터의 가중치 값들의 곱을 추가로 누적하면서 이동하고, 이동되는 상기 누적값이 상기 PE 체인들의 최하단부에 도달하면, 곱셈 누적되는 출력값을 출력하도록 제어하고,
상기 곱셈 누적되는 출력값의 다음 출력값은, 상기 입력맵에서 하나의 열 만큼 우측으로 이동하여 설정된 다음 입력값들의 범위에 기반하여 상기 열 입력 링크에 상기 다음 입력값 범위 중 기 공급된 값이 아닌 신규 값만이 추가로 공급되어 기 공급된 입력값들을 중복 사용하여 출력된 것이고,
상기 열 입력 링크에 상기 설정된 범위의 입력값들을 공급할 때, 상기 공급된 입력값들 사이마다 빈 슬롯이 형성되는 것을 특징으로 하는 디바이스.
- 삭제
- 제7 항에 있어서,
상기 프로세서는,
상기 곱셈 누적되는 출력값의 연산에 사용되는 상기 입력값들 중 일부 입력값들은 두번째 출력값의 연산에 사용되는 입력값들 중 중복되는 값들을 추가로 공급하지 않고 상기 PE 체인들에 기 공급된 값을 다시 사용하도록 제어하는 것을 특징으로 하는 디바이스.
- 삭제
- 삭제
- 제7 항에 있어서,
상기 프로세서는,
상기 열 입력 링크에 빈 슬롯이 형성되어 하나의 사이클에 대한 공백기가 발생하면,
상기 설정된 범위의 입력값들과는 다른 세트의 입력값들을 상기 열 입력 링크에 공급하여, 동시에 두 가지의 깊이별 합성곱 연산을 중첩시켜 계산하도록 제어하는 것을 특징으로 하는 디바이스.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210004086A KR102594484B1 (ko) | 2021-01-12 | 2021-01-12 | 시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 방법 및 디바이스 |
US17/573,669 US20220222315A1 (en) | 2021-01-12 | 2022-01-12 | Method and device for operating depthwise convolution by using the systolic array |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210004086A KR102594484B1 (ko) | 2021-01-12 | 2021-01-12 | 시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 방법 및 디바이스 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220101961A KR20220101961A (ko) | 2022-07-19 |
KR102594484B1 true KR102594484B1 (ko) | 2023-10-27 |
Family
ID=82321881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210004086A KR102594484B1 (ko) | 2021-01-12 | 2021-01-12 | 시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 방법 및 디바이스 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220222315A1 (ko) |
KR (1) | KR102594484B1 (ko) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102414583B1 (ko) * | 2017-03-23 | 2022-06-29 | 삼성전자주식회사 | 머신 러닝을 수행하는 전자 장치 및 머신 러닝 수행 방법 |
KR102490862B1 (ko) * | 2017-09-14 | 2023-01-26 | 한국전자통신연구원 | 양방향 프로세싱 엘리먼트 어레이를 포함하는 신경망 가속기 |
KR102487535B1 (ko) * | 2018-02-20 | 2023-01-12 | 삼성전자주식회사 | 시스톨릭 배열(Systolic Array)을 이용하여 딥 러닝(Deep Learning) 연산을 수행하는 방법 및 장치 |
KR102441747B1 (ko) * | 2018-11-30 | 2022-09-14 | 한국전자통신연구원 | 시스톨릭 어레이 구조를 가지는 뉴럴 네트워크 가속기 |
-
2021
- 2021-01-12 KR KR1020210004086A patent/KR102594484B1/ko active IP Right Grant
-
2022
- 2022-01-12 US US17/573,669 patent/US20220222315A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20220101961A (ko) | 2022-07-19 |
US20220222315A1 (en) | 2022-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108205701B (zh) | 一种执行卷积计算的系统及方法 | |
KR102523263B1 (ko) | 하드웨어 기반 풀링을 위한 시스템 및 방법 | |
US11455370B2 (en) | Flattened input stream generation for convolution with expanded kernel | |
EP3539059B1 (en) | Performing kernel striding in hardware | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN106875013B (zh) | 用于多核优化循环神经网络的系统和方法 | |
US11461632B2 (en) | Method and apparatus for adapting parameters of neural network | |
KR20200098684A (ko) | 행렬 곱셈기 | |
CN109190758B (zh) | 用于展开卷积神经网络的张量数据的方法和装置 | |
EP3896615A1 (en) | Computation unit and method for performing computations for deep neural networks | |
KR102467203B1 (ko) | 뉴럴 네트워크 프로세서의 컨벌루션 연산 처리 방법 및 장치 | |
US20220164663A1 (en) | Activation Compression Method for Deep Learning Acceleration | |
CN111738433A (zh) | 一种可重配置的卷积硬件加速器 | |
WO2023065983A1 (zh) | 计算装置、神经网络处理设备、芯片及处理数据的方法 | |
WO2021120711A8 (zh) | 一种矩阵乘法器、数据处理方法、集成电路器件及处理器 | |
KR102594484B1 (ko) | 시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 방법 및 디바이스 | |
CN108197075B (zh) | 一种Inception结构的多核实现方法 | |
CN113313252A (zh) | 一种基于脉动阵列的深度可分离卷积实现方法 | |
CN112836823A (zh) | 基于循环重组和分块的卷积神经网络反向传播映射方法 | |
CN111859270A (zh) | 一种神经网络的卷积方法和装置 | |
Asgari et al. | Meissa: Multiplying matrices efficiently in a scalable systolic architecture | |
CN109558944B (zh) | 基于可配置卷积层的卷积神经网络的算法优化方法及装置 | |
CN109598335A (zh) | 一种二维卷积脉动阵列结构及实现方法 | |
JP7541163B2 (ja) | 伝搬レイテンシの短縮 | |
CN116882455A (zh) | 一种Pointwise卷积计算装置与方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |