KR102428033B1 - 트랜스포즈드 콘볼루션 하드웨어 가속장치 - Google Patents
트랜스포즈드 콘볼루션 하드웨어 가속장치 Download PDFInfo
- Publication number
- KR102428033B1 KR102428033B1 KR1020200024840A KR20200024840A KR102428033B1 KR 102428033 B1 KR102428033 B1 KR 102428033B1 KR 1020200024840 A KR1020200024840 A KR 1020200024840A KR 20200024840 A KR20200024840 A KR 20200024840A KR 102428033 B1 KR102428033 B1 KR 102428033B1
- Authority
- KR
- South Korea
- Prior art keywords
- unit
- matrix
- input
- data
- unit operation
- 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
- 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
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Artificial Intelligence (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
입력 데이터 행렬에 커널 행렬로 트랜스포즈드 콘볼루션 연산하여 출력 데이터 행렬을 생성하기 위한 데이터를 생성하는 연산장치를 공개한다. 상기 연산장치는 상기 커널 행렬로부터 추출된 제1서브커널 행렬의 각 가중 요소값에 대응하는 단위연산부들로 이루어진 제1단위연산부 그룹으로서, 상기 제1단위연산부 그룹에 속한 상기 단위연산부들은 상기 제1서브커널 행렬의 인덱스 순서에 따라 서로 직렬로 연결되어 있는, 상기 제1단위연산부 그룹을 포함한다.
Description
본 발명의 컴퓨팅 기술에 관한 것으로서, 특히 트랜스포즈드 콘볼루션을 실행하는 하드웨어에 관한 것이다.
트랜스포즈드 콘볼루션은 신경망의 연산 단위 중 하나이다. 입력 데이터에 트랜스포즈드 콘볼루션 연산을 수행하기 위하여, 입력 데이터에 '0'을 추가하는 제로 패딩 작업이 수행된다. 제로 패딩된 입력 데이터에 커널을 곱하게 되면 '0'에 대한 곱셈 연산들이 추가된다. 트랜스포즈드 콘볼루션 연산을 반도체 회로에서 처리하게 된다면, 이러한 제로 패딩의 결과 하드웨어 자원의 사용량이 증가한다는 문제가 있다.
트랜스포즈드 콘볼루션은 신경망에서 사용되는 연산 단위이며, 개념 적으로 스트라이드(stride)가 2 이상인 콘볼루션의 역변환에 해당된다. 트랜스포즈드 콘볼루션은 주로 생성적 적대 신경망(GaN: Generative adversarial network) 혹은 영상 화질 개선 처리 신경망(Super Resolution, Deblur 신경망 등) 등에 사용된다. 트랜스포즈드 콘볼루션을 처리하는 일반적인 방법은 입력 데이터의 사이에 '0'을 추가하고 이 데이터를 입력으로 하여 콘볼루션을 계산하는 것이다.
도 1은 3x3 크기의 커널을 갖는 트랜스포즈드 콘볼루션을 계산하는 예를 나타낸다.
도 1에서 입력 데이터는 A, B, C, ...., H 등으로 구성되어 있고, 커널의 각 성분(weight, 가중치)은 W00 내지 W22 로 표현되어 있다. 입력 데이터에 0을 추가하여 제로 패딩된(zero-added) 입력 데이터를 만들고 이 데이터에 콘볼루션을 적용한다. B, C, F, G 4개의 입력값으로부터 UL, UR, LL, LR의 4개 출력값이 계산되며, C, D, G, H로부터 UL', UR', LL', LR' 의 4개의 출력값이 계산됨을 쉽게 이해할 수 있다. 예컨대, UL, UR, LL, LR은 각각 W00B+W02C+W20F+W22G, W01C+W21G, W10F+W12G, W11G의 값을 갖는다.
이러한 방식은 데이터 저장 공간과 연산량이 증가하는 문제를 발생시킨다. 입력 데이터 한 개당 세 개의 '0' 값이 추가되므로, 처리해야 할 데이터의 양이 4배로 증가한다. 이로 인해 원본 입력 데이터보다 많은 저장 메모리 공간이 필요하게 된다. 또한 데이터의 증가는 콘볼루션 계산의 연산량 증가로 이어지게 되는데, 증가한 연산의 많은 부분이 '0'과의 곱셈 혹은 덧셈이기 때문에 실제 계산 결과에 영향을 주지 않는 불필요한 연산이 많이 포함되게 된다. 예에서 출력값 UL, UR, LL, LR 각각에 대해 아홉 번씩 종 36 번의 곱셈이 이루어지는데, 이 중 27 번의 곱셈은 입력 데이터에 추가된 '0'과의 곱셈이다.
본 발명에서는, 종래 기술에 따른 상술한 문제점을 해결하고자, 신경망의 연산 단위의 하나인 트랜스포즈드 콘볼루션을 계산하기 위한 하드웨어 가속장치의 구조를 제안하고자 한다.
본 발명에서는, 트랜스포즈드 콘볼루션을 처리함에 있어 입력 데이터에 '0'을 추가하는 과정을 제거한 하드웨어 계산장치를 제안하고자 한다.
본 발명의 일 관점에 따라 제공되는 하드웨어 구조는, 입력 데이터에 '0'을 추가하는 과정 없이 트랜스포즈드 콘볼루션을 계산한다. 이를 위하여, 입력값과 가중치를 곱한 중간 결과값을 임시 레지스터와 데이터 버퍼에 저장해 두고 있다가 최종결과에 활용한다.
기존의 방식으로는 예컨대 커널 크기가 3x3 일때 4개의 출력값 계산에 필요한 곱셈의 수가 총 4*(3*3)=36 이지만, 본 발명의 일 실시예에 따라 제안된 하드웨어를 사용하면 3*3=9회의 곱셈 만으로 4개의 결과값을 계산할 수 있어 연산량이 감소하게 된다. 이는, 기존의 방식으로는 입력에 추가된 '0' 에 대한 곱셈이 포함되지만, 본 발명에 따르면 '0'에 대한 곱셈이 제거되기 때문이다.
본 발명의 일 관점에 따라 제공되는 하드웨어에서는, 입력 데이터를 순차적으로 읽어서 사용하기 때문에 메모리 액세스를 담당하는 하드웨어 구조가 단순해진다. 입력 데이터를 단 한 번씩만 사용하게 된다.
본 발명의 일 관점에 따라, 입력 데이터 행렬(2)에 커널 행렬(20)로 트랜스포즈드 콘볼루션 연산하여 출력 데이터 행렬(30)을 생성하기 위한 데이터를 생성하는 연산장치(1)를 제공할 수 있다. 상기 연산장치는, 상기 입력 데이터 행렬의 입력 요소값들을 출력하는 입력 데이터 제공부(40); 및 상기 커널 행렬로부터 추출된 제1서브커널 행렬의 각 가중 요소값에 대응하는 단위연산부들로 이루어진 제1단위연산부 그룹으로서, 상기 제1단위연산부 그룹에 속한 상기 단위연산부들은 상기 제1서브커널 행렬의 인덱스 순서에 따라 서로 직렬로 연결되어 있는, 상기 제1단위연산부 그룹;을 포함한다. 이때, 각각의 상기 단위연산부(10)는 연산 데이터 입력단자(11), 스트림 데이터 입력단자(12), 및 스트림 데이터 출력단자(13)를 포함하며, 직렬로 연결되어 서로 인접한 두 개의 상기 단위연산부들 중 업스트림 단위연산부의 상기 스트림 데이터 출력단자에서 출력된 값은 다운스트림 단위연산부의 상기 스트림 데이터 입력단자에 입력되도록 되어 있고, 각각의 상기 단위연산부의 상기 연산 데이터 입력단자에는 상기 입력 데이터 제공부가 출력하는 상기 입력 데이터 행렬의 입력 요소값이 입력되며, 상기 제1단위연산부 그룹에 속한 상기 단위연산부들 중 최하류 단위연산부의 상기 스트림 데이터 출력단자는 상기 출력 데이터 행렬을 구성하는 데이터를 출력하도록 되어 있다.
이때, 상기 연산장치는, 상기 제1서브커널 행렬 내의 인접한 두 개의 행들 중 상측 행의 마지막 가중 요소값에 대응하는 단위연산부와 하측 행의 첫 번째 가중 요소값에 대응하는 단위연산부 사이에 직렬로 연결된 제1데이터 버퍼부;를 더 포함할 수 있다. 그리고 상기 제1데이터 버퍼부는, 상기 제1데이터 버퍼부의 입력단자에 연결된 단위연산부의 스트림 데이터 출력단자로부터 출력된 출력값을 버퍼링하여 상기 제1데이터 버퍼부의 출력단자에 연결된 단위연산부의 스트림 데이터 입력단자에 제공하도록 되어 있을 수 있다.
이때, 상기 입력 데이터 제공부는, 상기 입력 데이터 행렬의 입력 요소값들을 매 연산사이클마다 순차적으로 출력하도록 되어 있을 수 있다.
이때, 상기 제1서브커널 행렬은, 상기 커널 행렬의 홀수 번째 행들의 홀수 번째 가중 요소값들로 구성되어 있거나, 상기 커널 행렬의 홀수 번째 행들의 짝수 번째 가중 요소값들로 구성되어 있거나, 상기 커널 행렬의 짝수 번째 행들의 홀수 번째 가중 요소값들로 구성되어 있거나, 또는 상기 커널 행렬의 짝수 번째 행들의 짝수 번째 가중 요소값들로 구성되어 있을 수 있다.
이때, 상기 연산장치는, 상기 커널 행렬로부터 추출된 제2서브커널 행렬의 각 가중 요소값에 대응하는 단위연산부들로 이루어진 제2단위연산부 그룹; 상기 커널 행렬로부터 추출된 제3서브커널 행렬의 각 가중 요소값에 대응하는 단위연산부들로 이루어진 제3단위연산부 그룹; 및 상기 커널 행렬로부터 추출된 제4서브커널 행렬의 각 가중 요소값에 대응하는 단위연산부들로 이루어진 제4단위연산부 그룹;을 더 포함할 수 있다. 그리고 각각의 상기 단위연산부 그룹에 속한 상기 단위연산부들은, 각각의 상기 단위연산부 그룹에 대응하는 상기 서브커널 행렬의 인덱스 순서에 따라 서로 직렬로 연결되어 있을 수 있다.
이때, 각각의 상기 단위연산부 그룹에 속한 상기 단위연산부들 중 최상류 단위연산부의 상기 스트림 데이터 입력단자에는 영(0)이 입력되고, 각각의 상기 단위연산부 그룹에 속한 상기 단위연산부들 중 최하류 단위연산부의 상기 스트림 데이터 출력단자는 상기 출력 데이터 행렬을 구성하는 데이터를 출력하도록 되어 있을 수 있다.
이때, 상기 제1서브커널 행렬은, 상기 커널 행렬의 홀수 번째 행들의 홀수 번째 가중 요소값들로 구성되어 있고, 상기 제2서브커널 행렬은, 상기 커널 행렬의 홀수 번째 행들의 짝수 번째 가중 요소값들로 구성되어 있고, 상기 제3서브커널 행렬은, 상기 커널 행렬의 짝수 번째 행들의 홀수 번째 가중 요소값들로 구성되어 있고, 그리고 상기 제4서브커널 행렬은, 상기 커널 행렬의 짝수 번째 행들의 짝수 번째 가중 요소값들로 구성되어 있을 수 있다.
이때, 상기 연산장치는, 복수 개의 상기 서브커널 행렬들 중 특정 서브커널 행렬 내의 인접한 두 개의 행들 중 상측 행의 마지막 가중 요소값에 대응하는 단위연산부와 하측 행의 첫 번째 가중 요소값에 대응하는 단위연산부 사이에 직렬로 연결된 데이터 버퍼부;를 더 포함할 수 있다. 그리고 상기 데이터 버퍼부는, 상기 데이터 버퍼부의 입력단자에 연결된 단위연산부의 스트림 데이터 출력단자로부터 출력된 출력값을 버퍼링하여 상기 데이터 버퍼부의 출력단자에 연결된 단위연산부의 스트림 데이터 입력단자에 제공하도록 되어 있고, 상기 특정 서브커널 행렬은, 복수 개의 상기 서브커널 행렬들 중 두 개 이상의 행을 갖는 서브커널 행렬일 수 있다.
이때, 상기 입력 데이터 행렬은 C개의 열로 구성되며, 상기 커널 행렬의 열(column)의 개수는 N개이며, 상기 데이터 버퍼부는, 상기 제1데이터 버퍼부의 입력단자를 통해 입력된 값을, C-ceil(N/2) 회 또는 C-floor(N/2) 회의 연산사이클 후에 상기 제1데이터 버퍼부의 출력단자를 통해 출력하도록 되어 있을 수 있다.
이때, 상기 입력 데이터 행렬은 C개의 열로 구성되며, 상기 커널 행렬의 열(column)의 개수는 N개이며, 상기 제1데이터 버퍼부는, 상기 제1데이터 버퍼부의 입력단자를 통해 입력된 값을, C-ceil(N/2)회 또는 C-floor(N/2)의 연산사이클 후에 상기 제1데이터 버퍼부의 출력단자를 통해 출력하도록 되어 있을 수 있다.
이때, 상기 입력 데이터 제공부는, 상기 입력 데이터 행렬의 입력 요소값들을 매 연산사이클마다 순차적으로 출력하도록 되어 있으며, 상기 입력 데이터 행렬 중 특정 행에 포함된 입력 요소값들은 상기 제특정 행보다 하측에 있는 다른 행에 포함된 입력 요소값들보다 먼저 출력되며, 상기 입력 데이터 행렬 중 임의의 행에 포함된 입력 요소값들 중 특정 열의 입력 요소값은 상기 특정 열보다 오른쪽에 있는 다른 열의 입력 요소값들보다 먼저 출력될 수 있다.
이때, 상기 커널 행렬의 임의의 가중 요소값은 상기 제1서브커널 행렬, 상기 제2서브커널 행렬, 상기 제3서브커널 행렬, 및 상기 제4서브커널 행렬 중 적어도 하나에 포함될 수 있다.
이때, 상기 제1단위연산부 그룹에 속한 상기 단위연산부들 중 최상류 단위연산부의 상기 스트림 데이터 입력단자에는 영(0)이 입력될 수 있다.
이때, 각각의 상기 단위연산부는, 상기 연산 데이터 입력단자에 입력된 연산 데이터 입력값(Input)에 상기 커널 행렬의 가중 요소값들 중 상기 단위연산부에 대응하는 가중 요소값을 곱하는 곱셈기(multiplier)(120); 및 상기 스트림 데이터 입력단자(12)에 입력된 스트림 데이터 입력값(PSUM_in)에 상기 곱셈기(120)의 출력값을 더하는 덧셈기(adder)(130);를 포함할 수 있다. 그리고 상기 덧셈기(120)의 출력값은 상기 단위연산부(10)의 상기 스트림 데이터 출력단자를 통해 출력될 수 있다.
이때, 상기 덧셈기(120)의 출력값을 상기 단위연산부(10)의 상기 스트림 데이터 출력단자를 통해 출력되는 스트림 데이터 출력값(Output)으로서 출력하는 레지스터(register)(130);를 더 포함할 수 있다.
본 발명의 다른 관점에 따라 상술한 연산장치를 포함하는 반도체 칩이 제공될 수 있다.
본 발명의 또 다른 관점에 따라 상술한 연산장치를 포함하는 반도체 칩을 포함하는 컴퓨팅장치가 제공될 수 있다.
본 발명의 또 다른 관점에 따라, 입력 데이터 행렬(2)에 커널 행렬(20)로 트랜스포즈드 콘볼루션 연산하여 출력 데이터 행렬(30)을 구성하는 데이터(LL, LR, UL, UR)를 생성하는 연산장치(1)가 제공될 수 있다. 상기 연산장치는, 상기 입력 데이터 행렬의 입력 요소값들을 매 연산사이클마다 순차적으로 출력하는 입력 데이터 제공부(40); 상기 커널 행렬의 홀수 번째 행들의 홀수 번째 가중 요소값들로 구성되는 제1서브커널 행렬(21)의 각 가중 요소값에 대응하는 단위연산부들(100, 102, 120, 122)로 이루어진 제1단위연산부 그룹(51)으로서, 상기 단위연산부들은 상기 제1서브커널 행렬(21)의 인덱스 순서에 따라 서로 직렬로 연결되어 있는, 상기 제1단위연산부 그룹(51); 및 상기 제1서브커널 행렬(21) 내의 인접한 두 개의 행들 중 상측 행의 마지막 가중 요소값(W02)에 대응하는 단위연산부(102)와 하측 행의 첫 번째 가중 요소값(W20)에 대응하는 단위연산부(120) 사이에 직렬로 연결된 제1데이터 버퍼부(201);를 포함한다. 그리고 각각의 상기 단위연산부(10)는 연산 데이터 입력단자(11), 스트림 데이터 입력단자(12), 및 스트림 데이터 출력단자(13)를 포함하며, ① 직렬로 연결되어 서로 인접한 두 개의 상기 단위연산부들 중 업스트림 단위연산부의 데이터 출력단자에서 출력된 값은 다운스트림 단위연산부의 상기 스트림 데이터 입력단자에 입력되도록 되어 있고, ② 상기 제1단위연산부 그룹에 속한 상기 단위연산부들 중 최상류 단위연산부의 상기 스트림 데이터 입력단자에는 영(0)이 입력되고, 그리고 ③ 각각의 상기 단위연산부의 상기 연산 데이터 입력단자에는 상기 입력 데이터 제공부가 출력하는 상기 입력 데이터 행렬의 입력 요소값이 입력된다. 그리고 상기 제1데이터 버퍼부는, 상기 제1데이터 버퍼부의 입력단자에 연결된 단위연산부의 스트림 데이터 출력단자로부터 출력된 출력값을 버퍼링하여 상기 제1데이터 버퍼부의 출력단자에 연결된 단위연산부의 스트림 데이터 입력단자에 제공하도록 되어 있다.
이때, 상기 연산장치는, 상기 커널 행렬의 홀수 번째 행들의 짝수 번째 가중 요소값들로 구성되는 제2서브커널 행렬(22)의 각 가중 요소값에 대응하는 단위연산부들(101, 121)로 이루어진 제2단위연산부 그룹(52)으로서, 상기 제2단위연산부 그룹(52)에 포함된 상기 단위연산부들은 상기 제2서브커널 행렬(22)의 인덱스 순서에 따라 서로 직렬로 연결되어 있는, 상기 제2단위연산부 그룹(52); 및 상기 제2서브커널 행렬(22) 내의 인접한 두 개의 행들 중 상측 행의 마지막 입력 요소값(W01)에 대응하는 단위연산부(101)와 하측 행의 첫 번째 입력 요소값(W21)에 대응하는 단위연산부(121) 사이에 직렬로 연결된 제2데이터 버퍼부(202);를 더 포함할 수 있다.
이때, 상기 연산장치는, 상기 커널 행렬의 짝수 번째 행들의 홀수 번째 가중 요소값들로 구성되는 제3서브커널 행렬(23)의 각 가중 요소값에 대응하는 단위연산부들로 이루어진 제3단위연산부 그룹(53)으로서, 상기 제3단위연산부 그룹에 포함된 상기 단위연산부들은 상기 제3서브커널 행렬의 인덱스 순서에 따라 서로 직렬로 연결되어 있는, 상기 제3단위연산부 그룹;을 더 포함할 수 있다.
이때, 상기 연산장치는, 상기 제3서브커널 행렬(23) 내의 인접한 두 개의 행들 중 상측 행의 마지막 입력 요소값에 대응하는 단위연산부와 하측 행의 첫 번째 입력 요소값에 대응하는 단위연산부 사이에 직렬로 연결된 제3데이터 버퍼부(203);를 더 포함할 수 있다.
이때, 상기 연산장치는, 상기 커널 행렬의 짝수 번째 행들의 짝수 번째 가중 요소값들로 구성되는 제4서브커널 행렬(24)의 각 가중 요소값에 대응하는 단위연산부들로 이루어진 제4단위연산부 그룹(54);을 더 포함할 수 있다.
이때, 상기 제4단위연산부 그룹에 포함된 상기 단위연산부들은 상기 제4서브커널 행렬의 인덱스 순서에 따라 서로 직렬로 연결되어 있을 수 있다.
이때, 상기 연산장치는, 상기 제4서브커널 행렬(24) 내의 인접한 두 개의 행들 중 상측 행의 마지막 입력 요소값에 대응하는 단위연산부와 하측 행의 첫 번째 입력 요소값에 대응하는 단위연산부 사이에 직렬로 연결된 제4데이터 버퍼부(204);를 더 포함할 수 있다.
이때, 각각의 상기 단위연산부는, 상기 연산 데이터 입력단자에 입력된 연산 데이터 입력값(Input)에 상기 커널 행렬의 가중 요소값들 중 상기 단위연산부에 대응하는 가중 요소값을 곱하는 곱셈기(multiplier)(120); 상기 스트림 데이터 입력단자(12)에 입력된 스트림 데이터 입력값(PSUM_in)에 상기 곱셈기(120)의 출력값을 더하는 덧셈기(adder)(130); 및 상기 덧셈기(120)의 출력값을 상기 단위연산부(10)의 상기 스트림 데이터 출력단자를 통해 출력되는 스트림 데이터 출력값(Output)으로서 출력하는 레지스터(register)(130);를 포함할 수 있다.
본 발명에 따르면, 신경망의 연산 단위의 하나인 트랜스포즈드 콘볼루션을 계산하기 위한 하드웨어 가속장치의 구조가 제공될 수 있다.
본 발명에 따르면, 트랜스포즈드 콘볼루션을 처리함에 있어 입력 데이터에 '0'을 추가하는 과정을 제거한 하드웨어 계산장치가 제공될 수 있다.
본 발명에 따르면, 입력 데이터에 '0'을 추가하는 과정 없이 트랜스포즈드 콘볼루션을 계산할 수 있다. 이로 인해 추가의 데이터 저장 메모리가 요구되지 않는다는 효과가 있다.
본 발명에 따르면, 입력 데이터를 순차적으로 읽어서 사용하기 때문에 메모리 액세스를 담당하는 하드웨어 구조가 단순해진다는 효과가 있다.
본 발명에 따르면, 입력 데이터를 단 한 번씩만 사용하게 되므로, 동일한 입력 데이터를 중복하여 읽으면서 생기는 전력 낭비나 시간 지연이 발생하지 않는다는 효과가 있다.
도 1은 3x3 크기의 커널을 갖는 트랜스포즈드 콘볼루션을 계산하는 예를 나타낸다.
도 2는 본 발명의 일 실시예에 따라 제공되는, 커널 크기가 3x3 인 트랜스포즈드 콘볼루션을 계산하기 위한 하드웨어 가속 장치의 구조를 나타낸 것이다.
도 3는 본 발명의 일 실시예에서 정의하는 단위연산부의 구조 및 입출력 특성을 나타낸 도면이다.
도 4 내지 도 7은 본 발명의 일 실시예에서 정의하는 커널 행렬, 서버커널 행렬, 단위연산부 그룹, 및 단위연산부와 데이터 버퍼 간의 직렬연결 관계를 설명하기 위한 도면이다.
도 8 및 도 9는 도 2에 나타낸 커널 크기가 3x3 인 트랜스포즈드 콘볼루션을 계산하기 위한 하드웨어 가속기의 동작 원리를 설명하기 위한 예시이다.
도 10은 본 발명의 일 실시예에 따라 제공되는, 커널 크기가 4x4 인 트랜스포즈드 콘볼루션을 계산하기 위한 하드웨어 가속 장치의 구조를 나타낸 것이다.
도 11은 본 발명의 일 실시예에 따라 제공되는, 커널 크기가 5x5 인 트랜스포즈드 콘볼루션을 계산하기 위한 하드웨어 가속 장치의 구조를 나타낸 것이다.
도 12는 본 발명의 일 실시예에 따라 제공되는 반도체 칩 및 컴퓨팅 장치를 설명하는 다이어그램이다.
도 13은 본 발명의 일 실시예에 따라 연산장치에 입력 데이터 행렬을 제공하는 부분과 연산장치로부터 출력된 출력 데이터 행렬을 이용하는 부분을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따라 제공되는, 커널 크기가 3x3 인 트랜스포즈드 콘볼루션을 계산하기 위한 하드웨어 가속 장치의 구조를 나타낸 것이다.
도 3는 본 발명의 일 실시예에서 정의하는 단위연산부의 구조 및 입출력 특성을 나타낸 도면이다.
도 4 내지 도 7은 본 발명의 일 실시예에서 정의하는 커널 행렬, 서버커널 행렬, 단위연산부 그룹, 및 단위연산부와 데이터 버퍼 간의 직렬연결 관계를 설명하기 위한 도면이다.
도 8 및 도 9는 도 2에 나타낸 커널 크기가 3x3 인 트랜스포즈드 콘볼루션을 계산하기 위한 하드웨어 가속기의 동작 원리를 설명하기 위한 예시이다.
도 10은 본 발명의 일 실시예에 따라 제공되는, 커널 크기가 4x4 인 트랜스포즈드 콘볼루션을 계산하기 위한 하드웨어 가속 장치의 구조를 나타낸 것이다.
도 11은 본 발명의 일 실시예에 따라 제공되는, 커널 크기가 5x5 인 트랜스포즈드 콘볼루션을 계산하기 위한 하드웨어 가속 장치의 구조를 나타낸 것이다.
도 12는 본 발명의 일 실시예에 따라 제공되는 반도체 칩 및 컴퓨팅 장치를 설명하는 다이어그램이다.
도 13은 본 발명의 일 실시예에 따라 연산장치에 입력 데이터 행렬을 제공하는 부분과 연산장치로부터 출력된 출력 데이터 행렬을 이용하는 부분을 설명하기 위한 도면이다.
이하, 본 발명의 실시예를 첨부한 도면을 참고하여 설명한다. 그러나 본 발명은 본 명세서에서 설명하는 실시예에 한정되지 않으며 여러 가지 다른 형태로 구현될 수 있다. 본 명세서에서 사용되는 용어는 실시예의 이해를 돕기 위한 것이며, 본 발명의 범위를 한정하고자 의도된 것이 아니다. 또한, 이하에서 사용되는 단수 형태들은 문구들이 이와 명백히 반대의 의미를 나타내지 않는 한 복수 형태들도 포함한다.
도 2는 본 발명의 일 실시예에 따라 제공되는, 커널 크기가 3x3 인 트랜스포즈드 콘볼루션을 계산하기 위한 하드웨어 가속 장치의 구조를 나타낸 것이다.
하드웨어 가속장치는 입력 데이터를 공급하는 입력 버퍼, 기본 연산 장치(PE: Processing Element). 중간 계산 결과값을 저장하기 위한 데이터 버퍼 메모리를 포함할 수 있다.
본 명세서에서 상기 입력 버퍼, 및 상기 기본 연산장치는 각각 입력 데이터 제공부, 및 단위연산부라고 지칭될 수 도 있다.
상기 입력 버퍼는 입력 데이터룰 순차적으로 단위연산부에 공급한다. 동일한 시점, 즉 동일한 연산 사이클에서 모든 PE에 동일한 입력 데이터가 공급된다.
본 명세서에서 상기 입력 버퍼가 각 연산 사이클 마다 출력하는 개별적인 데이터인 상기 입력 데이터의 값을 입력 요소값이라고 지칭할 수 있다.
PE는 상기 입력 요소값과 PE에 설정된 가중치를 곱셈기를 이용하여 곱하고, 이 곱셈의 결과값과 PE에 입력된 또 다른 입력값인 PSUM_in 율 더하는 기능을 수행할 수 있다. 일반적으로 상기 입력 요소값과 상기 가중치는 벡터이므로 상기 곱셈기에서는 내적을 계산할 수 있다.
본 발명의 일 실시예에서 커널 크기와 동일한 개수의 PE(Processing Element)가 사용될 수 있으며, 각 PE는 커널의 한 성분에 해당하는 가중치 (weight)룰 가지고 있을 수 있다. 도 2에서 PE(i,j)는 Wij에 해당하는 가중치를 가지고 있다.
본 발명의 일 실시예에서는 커널 크기와 같은 개수의 PE를 사용할 수 있다. 그러나 다른 실시예에서는 하나의 PE를 반복하여 사용하여 사용할 수도 있다.
도 2에 나타낸 데이터 버퍼는 복수 개의 계산 중간 결과값(PSUM : Partial sum)을 저장하는 장치이며, 도 2에 나타낸 실시예에서는 PE(0,2)와 PE(0,1)에서 계산된 중간 결과값을 저장하고, PE(2,0)과 PE(2,1)에 이 저장된 데이터를 전달한다. 그리고 PE(1,1), PE(1,2), PE(2,1), PE(2,2)의 출력이 트랜스포즈드 콘볼루션 계산 결과값이 된다.
이하, 도 2 내지 도 5를 참조하여 본 발명의 일 실시예에 따른 하드웨어 가속장치의 구조를 더 자세히 설명한다.
도 3는 본 발명의 일 실시예에서 정의하는 단위연산부의 구조 및 입출력 특성을 나타낸 도면이다.
도 4 내지 도 7은 본 발명의 일 실시예에서 정의하는 커널 행렬, 서버커널 행렬, 단위연산부 그룹, 및 단위연산부와 데이터 버퍼 간의 직렬연결 관계를 설명하기 위한 도면이다.
본 발명의 일 실시예에 따라 제공되는 트랜스포즈드 콘볼루션 연산장치, 간단히 연산장치(1)는, 입력 데이터 행렬(2)에 커널 행렬(20)로 트랜스포즈드 콘볼루션 연산하여 출력 데이터 행렬(30)을 구성하는 데이터(LL, LR, UL, UR)를 생성하는 장치이다.
입력 데이터 행렬(2)은 R*C의 크기를 가질 수 있다. 즉, 입력 데이터의 폭(width)는 C이고, 입력 데이터의 높이(height)는 R일 수 있다.
상기 연산장치(1)는, 입력 데이터 제공부(40), 제1단위연산부 그룹(51), 제2단위연산부 그룹(52), 제3단위연산부 그룹(53), 제4단위연산부 그룹(54), 제1데이터 버퍼부(201), 및 제2데이터 버퍼부(202)를 포함할 수 있다. 제1단위연산부 그룹(51), 제2단위연산부 그룹(52), 제3단위연산부 그룹(53), 및 제4단위연산부 그룹(54),는 각각 도 4, 도 5, 도 6, 및 도 7에 제시되어 있다.
입력 데이터 제공부(40)는 상기 입력 데이터 행렬(2)의 입력 요소값들(A, B, C, D, E, F, G, H)을 매 연산사이클마다 순차적으로 출력할 수 있다. 예컨대 시간의 흐름에 따라 매 연산사이클마다 A → B → C → D → E → F → G → H의 순서로 상기 입력 요소값들을 출력할 수 있다.
제1단위연산부 그룹(51)는, 도 4에 제시된 바와 같이, 상기 커널 행렬(20)의 홀수 번째 행들의 홀수 번째 가중 요소값들로 구성되는 제1서브커널 행렬(21)의 각 가중 요소값(W00, W02, W20, W22)에 대응하는 단위연산부들(100, 102, 120, 122)로 이루어진 그룹이다. 제1단위연산부 그룹(51)에 포함된 상기 단위연산부들은 상기 제1서브커널 행렬(21)의 인덱스 순서(00, 02, 20, 22)에 따라 서로 직렬로 연결되어 있을 수 있다. 즉, 도 4에 예시한 바와 같이, 단위연산부(100) → 단위연산부(102) → 단위연산부(120) → 단위연산부(122)의 순서로 직렬 연결되어 있을 수 있다.
도 4에 나타내었듯이, 본 명세서에서 Wxy에 대응하는 임의의 요소를 (x,y)로 표기할 수 있다. 예컨대 Wxy라는 가중치는 간단히 (x,y)로 표현될 수 있으며, Wxy라는 가중치에 대응하는 단위연산부는 PE(x,y)로 표현될 수 있다.
제2단위연산부 그룹(52)은, 도 5에 제시된 바와 같이, 상기 커널 행렬(20)의 홀수 번째 행들의 짝수 번째 가중 요소값들로 구성되는 제2서브커널 행렬(22)의 각 가중 요소값(W01, W21)에 대응하는 단위연산부들(101, 121)로 이루어진 그룹이다. 제2단위연산부 그룹(52)에 포함된 상기 단위연산부들은 상기 제2서브커널 행렬(22)의 인덱스 순서(01, 21)에 따라 서로 직렬로 연결되어 있을 수 있다. 즉, 도 5에 예시한 바와 같이, 단위연산부(101) → 단위연산부(121)의 순서로 직렬 연결되어 있을 수 있다.
제3단위연산부 그룹(53)은, 도 6에 제시된 바와 같이, 상기 커널 행렬(20)의 짝수 번째 행들의 홀수 번째 가중 요소값들로 구성되는 제3서브커널 행렬(23)의 각 가중 요소값(W10, W12)에 대응하는 단위연산부들(110, 112)로 이루어진 그룹이다. 제3단위연산부 그룹(53)에 포함된 상기 단위연산부들은 상기 제3서브커널 행렬(23)의 인덱스 순서(10, 12)에 따라 서로 직렬로 연결되어 있을 수 있다. 즉, 도 6에 예시한 바와 같이, 단위연산부(110) → 단위연산부(112)의 순서로 직렬 연결되어 있을 수 있다.
제4단위연산부 그룹(54)은, 도 7에 제시된 바와 같이, 상기 커널 행렬(20)의 짝수 번째 행들의 짝수 번째 가중 요소값들로 구성되는 제4서브커널 행렬(24)의 각 가중 요소값(W11)에 대응하는 단위연산부들(111)로 이루어진 그룹이다.
본 발명의 바람직한 실시예에서, 연산장치(1)에 포함되는 모든 단위연산부(10)들의 총 개수는, 연산장치(1)에서 사용되는 커널 행렬(20)의 요소들의 총 개수와 동일할 수 있다. 그리고 본 발명의 바람직한 실시예에서, 상기 모든 단위연산부(10)들은 총 4개의 단위연산부 그룹 중 어느 하나에 속할 수 있다.
실시예에 따라, 각각의 상기 단위연산부 그룹에는 복수 개의 단위연산부들이 포함되어 있을 수도 있고, 또는 오직 한 개의 단위연산부만이 포함되어 있을 수도 있다. 하나의 단위연산부 그룹에 복수 개의 단위연산부들이 포함되어 있는 경우, 상기 복수 개의 단위연산부들은 서로 직렬로 연결되어 있을 수 있다. 이때, 상기 직렬 연결의 순서는, 상기 복수 개의 단위연산부들에 대응하는 서브커널 행렬에 포함된 인덱스의 순서에 따를 수 있다.
제1데이터 버퍼부(201)는, 상기 제1서브커널 행렬(21) 내의 인접한 두 개의 행들 중 상측 행의 마지막 가중 요소값(W02)에 대응하는 단위연산부(102)와 하측 행의 첫 번째 가중 요소값(W20)에 대응하는 단위연산부(120) 사이에 직렬로 연결되어 있을 수 있다. 이때, 도 4의 예에서, 상기 상측 행은 가중 요소값(W00, W02)으로 구성되는 행이고, 상기 하측 행은 가중 요소값(W20, W22)으로 구성되는 행이다.
제2데이터 버퍼부(202)는, 제2서브커널 행렬(22) 내의 인접한 두 개의 행들 중 상측 행의 마지막 입력 요소값(W01)에 대응하는 단위연산부(101)와 하측 행의 첫 번째 입력 요소값(W21)에 대응하는 단위연산부(121) 사이에 직렬로 연결되어 있을 수 있다. 이때, 도 5의 예에서, 상기 상측 행은 가중 요소값(W01)으로 구성되는 행이고, 상기 하측 행은 가중 요소값(W21)으로 구성되는 행이다.
제3서브커널 행렬(23) 및 제4서브커널 행렬(24)은 모두 각각 총 1개의 행으로만 이루어진다. 이와 같이 서브커널 행렬이 1개의 행으로만 이루어진 경우, 상기 서브커널 행렬에 대응하는 단위연산부 그룹에는 상술한 데이터 버퍼부가 포함되지 않을 수 있다.
각각의 상기 단위연산부(10)는, 도 3에 제시한 바와 같이, 연산 데이터 입력단자(11), 스트림 데이터 입력단자(12), 및 스트림 데이터 출력단자(13)를 포함할 수 있다.
이때, 도 3에 제시하였듯이, 인접한 두 개의 상기 단위연산부들 중 업스트림 단위연산부(10up)의 데이터 출력단자(13)에서 출력된 값은 다운스트림 단위연산부(10down)의 상기 스트림 데이터 입력단자(12)에 입력되도록 되어 있을 수 있다.
그리고 도 4 내지 도 7에 제시하였듯이, 각각의 상기 단위연산부 그룹에 포함된 단위연산부들 중 최상류 단위연산부(100, 101, 110, 또는 111)의 상기 스트림 데이터 입력단자(12)에는 영('0')이 입력될 수 있다.
이때, 도 2에 나타낸 각각의 모든 상기 단위연산부(10)의 상기 연산 데이터 입력단자(11)에는 상기 입력 데이터 제공부(40)가 출력하는 상기 입력 데이터 행렬(2)의 입력 요소값이 동시에 입력될 수 있다.
그리고 도 4 내지 도 7에 제시하였듯이, 각각의 상기 단위연산부 그룹에 포함된 단위연산부들 중 최하류 단위연산부(122, 121, 112, 111)는 각각, 도 2에 제시한 출력 데이터 행렬(30)을 구성하는 데이터 중 UL, UR, LL, LR을 출력할 수 있다.
상기 데이터 버퍼부(201 또는 202)는, 상기 데이터 버퍼부(201 또는 202)의 입력단자에 연결된 단위연산부(102 또는 101)의 스트림 데이터 출력단자(13)로부터 출력된 출력값을 버퍼링하여 상기 데이터 버퍼부(201 또는 202)의 출력단자에 연결된 단위연산부(120 또는 121)의 스트림 데이터 입력단자(12)에 제공하도록 되어 있을 수 있다.
도 3을 살펴보면, 각각의 단위연산부(10)는, 상기 연산 데이터 입력단자(11)에 입력된 연산 데이터 입력값(Input)에 상기 커널 행렬(20)의 가중 요소값(Wxy)들 중 상기 단위연산부(10)에 대응하는 가중 요소값을 곱하는 곱셈기(multiplier)(120); 및 상기 스트림 데이터 입력단자(12)에 입력된 스트림 데이터 입력값(PSUM_in)에 상기 곱셈기(120)의 출력값을 더하는 덧셈기(adder)(130)를 포함할 수 있다. 상기 덧셈기(120)의 출력값은 상기 단위연산부(10)의 상기 스트림 데이터 출력단자(13)를 통해 출력될 수 있다.
각각의 단위연산부(10)는, 상기 덧셈기(120)의 출력값을 상기 단위연산부(10)의 상기 스트림 데이터 출력단자를 통해 출력되는 스트림 데이터 출력값(Output)으로서 출력하는 레지스터(register)(130)를 더 포함할 수 있다.
이때, 상기 입력 데이터 행렬(2)의 열의 개수는 C개일 수 있다. 즉, 입력 데이터의 폭(width)은 C일 수 있다. 이때, 상기 데이터 버퍼부(201, 202)에 입력된 값은, (C-2) 사이클 후에 상기 데이터 버퍼부로부터 출력되도록 되어 있을 수 있다.
도 8 및 도 9는 도 2에 나타낸 커널 크기가 3x3 인 트랜스포즈드 콘볼루션을 계산하기 위한 하드웨어 가속기의 동작 원리를 설명하기 위한 예시이다.
도 8은 j번째 연산사이클에서 각 단위연산부(10)의 연산 데이터 입력단자(11)에 모두 F가 입력된 직후의 상태를 나타낸 것이다.
도 9는 j+1번째 연산사이클에서 각 단위연산부(10)의 연산 데이터 입력단자(11)에 모두 G가 입력된 직후의 상태를 나타낸 것이다.
j+1번째 연산사이클에서 입력 데이터 행렬(2) 중 입력 요소값 B, C, F, G를 기초로 출력 데이터 행렬(30)의 요소값 UL1, UR1, LL1, LR1가 생성될 수 있다.
또한, 도 9에서 단위연산부(120)에서는 W00C+W02D+W20G가 출력되었는데, 이는 제1데이터버퍼(Data Buffer 0)가 2개의 연산사이클 만큼의 딜레이를 제공하기 때문이다. 도 9에서, 제1데이터버퍼(Data Buffer 0)가 제공하는 딜레이가 연산사이클의 2개에 해당하는 이유는, 위 입력 데이터 행렬(2)의 총 열의 개수인 C가 4의 크기를 갖는다고 설정하였기 때문이다. 즉, 제1데이터버퍼(Data Buffer 0)가 제공하는 딜레이는 (C-2) 개의 연산사이클에 해당한다. 만일, 제1데이터버퍼(Data Buffer 0)가 없었다면, 도 9에서 단위연산부(120)에서는 W00C+W02D+W20G가 아니라 W00E+W02F+W20G가 출력되었어야 한다.
마찬가지로 j번째 연산사이클에서는, 단위연산부(112, 111, 122, 121)는 입력 데이터 행렬(2) 중 입력 요소값 A, B, E, F를 기초로 하는 출력 데이터 행렬(30)의 요소값 LL0, LR0, UL0, UR0를 출력할 수 있다.
만일 j+2번째 연산사이클이 실행된다면, 단위연산부(112, 111, 122, 121)는 입력 데이터 행렬(2) 중 입력 요소값 C, D, G, H를 기초로 하는 출력 데이터 행렬(30)의 요소값 LL2, LR2, UL2, UR2를 출력할 수 있다.
입력 데이터 제공부(40)가 입력 데이터 행렬(2)의 첫 번째 행의 입력 요소값 A, B, C, D를 출력하는 연산사이클 동안에 단위연산부(112, 111, 122, 121)가 출력하는 데이터는 이용되지 않으며, 입력 데이터 제공부(40)가 입력 데이터 행렬(2)의 두 번째 행의 입력 요소값 E, F, G, H를 출력하는 연산사이클 동안에 단위연산부(112, 111, 122, 121)가 출력하는 데이터가 출력 데이터 행렬(30)의 생성에 이용될 수 있다.
도 10은 본 발명의 일 실시예에 따라 제공되는, 커널 크기가 4x4 인 트랜스포즈드 콘볼루션을 계산하기 위한 하드웨어 가속 장치의 구조를 나타낸 것이다.
도 10의 구조는 도 2에 제시한 구조가 확장된 것이다.
도 10에서, 상기 제1단위연산부 그룹은 단위연산부(PE(0,0)), 단위연산부(PE(0,2)), 단위연산부(PE(2,0)), 단위연산부(PE(2,2))으로 이루어지고; 상기 제2단위연산부 그룹은 단위연산부(PE(0,1)), 단위연산부(PE(0,3)), 단위연산부(PE(2,1)), 단위연산부(PE(2,3))으로 이루어지고; 상기 제3단위연산부 그룹은 단위연산부(PE(1,0)), 단위연산부(PE(1,2)), 단위연산부(PE(3,0)), 단위연산부(PE(3,2))으로 이루어지고; 상기 제4단위연산부 그룹은 단위연산부(PE(1,1)), 단위연산부(PE(1,3)), 단위연산부(PE(3,1)), 단위연산부(PE(3,3));로 이루어질 수 있다.
도 10에서 사용되는 4*4 커널 행렬은, 홀수 번째 행들의 홀수 번째 가중 요소값들로 구성되는 제1서브커널 행렬(21); 홀수 번째 행들의 짝수 번째 가중 요소값들로 구성되는 제2서브커널 행렬(22); 짝수 번째 행들의 홀수 번째 가중 요소값들로 구성되는 제3서브커널 행렬(23); 짝수 번째 행들의 짝수 번째 가중 요소값들로 구성되는 제4서브커널 행렬(24);로 구분될 수 있다.
이때, 도 10에서, 제1단위연산부 그룹(51)은, 상기 제1서브커널 행렬(21)의 각 가중 요소값에 대응하는 단위연산부들로 이루어질 수 있고; 제2단위연산부 그룹(52)은, 상기 제2서브커널 행렬(22)의 각 가중 요소값에 대응하는 단위연산부들로 이루어질 수 있고; 제3단위연산부 그룹(53)은, 상기 제3서브커널 행렬(23)의 각 가중 요소값에 대응하는 단위연산부들로 이루어질 수 있고; 제4단위연산부 그룹(54)은, 상기 제4서브커널 행렬(24)의 각 가중 요소값에 대응하는 단위연산부들로 이루어질 수 있다.
도 11은 본 발명의 일 실시예에 따라 제공되는, 커널 크기가 5x5 인 트랜스포즈드 콘볼루션을 계산하기 위한 하드웨어 가속 장치의 구조를 나타낸 것이다.
도 11의 구조는 도 2에 제시한 구조가 확장된 것이다.
도 11에서, 상기 제1단위연산부 그룹은 단위연산부(PE(0,0)), 단위연산부(PE(0,2)), 단위연산부(PE(0,4)), 단위연산부(PE(2,0)), 단위연산부(PE(2,2)), 단위연산부(PE(2,4)), 단위연산부(PE(4,0)), 단위연산부(PE(4,2)), 단위연산부(PE(4,4))로 이루어지고; 상기 제2단위연산부 그룹은 단위연산부(PE(0,1)), 단위연산부(PE(0,3)), 단위연산부(PE(2,1)), 단위연산부(PE(2,3)), 단위연산부(PE(4,1)), 단위연산부(PE(4,3))으로 이루어지고; 상기 제3단위연산부 그룹은 단위연산부(PE(1,0)), 단위연산부(PE(1,2)), 단위연산부(PE(1,4)), 단위연산부(PE(3,0)), 단위연산부(PE(3,2)), 단위연산부(PE(3,4))로 이루어지고; 상기 제4단위연산부 그룹은 단위연산부(PE(1,1)), 단위연산부(PE(1,3)), 단위연산부(PE(3,1)), 단위연산부(PE(3,3))으로 이루어질 수 있다.
도 11에서 사용되는 5*5 커널 행렬은, 홀수 번째 행들의 홀수 번째 가중 요소값들로 구성되는 제1서브커널 행렬(21); 홀수 번째 행들의 짝수 번째 가중 요소값들로 구성되는 제2서브커널 행렬(22); 짝수 번째 행들의 홀수 번째 가중 요소값들로 구성되는 제3서브커널 행렬(23); 짝수 번째 행들의 짝수 번째 가중 요소값들로 구성되는 제4서브커널 행렬(24)로 구분될 수 있다.
이때, 도 11에서, 제1단위연산부 그룹(51)은, 상기 제1서브커널 행렬(21)의 각 가중 요소값에 대응하는 단위연산부들로 이루어질 수 있고; 제2단위연산부 그룹(52)은, 상기 제2서브커널 행렬(22)의 각 가중 요소값에 대응하는 단위연산부들로 이루어질 수 있고; 제3단위연산부 그룹(53)은, 상기 제3서브커널 행렬(23)의 각 가중 요소값에 대응하는 단위연산부들로 이루어질 수 있고; 제4단위연산부 그룹(54)은, 상기 제4서브커널 행렬(24)의 각 가중 요소값에 대응하는 단위연산부들로 이루어질 수 있다.
본 발명의 일 실시예에서, 상기 입력 데이터 행렬(2)이 C개의 열로 구성되며, 상기 커널 행렬(20)의 열(column)의 개수는 N이라고 가정할 수 있다. 이때, 각각의 상기 데이터 버퍼부는, 상기 데이터 버퍼부의 입력단자를 통해 입력된 값을, C-ceil(N/2)회 또는 C-floor(N/2)의 연산사이클 후에 상기 제1데이터 버퍼부의 출력단자를 통해 출력하도록 되어 있을 수 있다.
예컨대, 도 2에서 상기 커널 행렬(20)의 열(column)의 개수는 N=3이다. 이때, 도 2의 'Data Buffer 0'는 C-ceil(N/2) = C-ceil(3/2) = C-2 개의 연산사이클에 해당하는 입출력 딜레이를 제공하고, 'Data Buffer 1'은 C-floor(N/2) = C-floor(3/2)=C-1 개의 연산사이클에 해당하는 입출력 딜레이를 제공할 수 있다.
예컨대, 도 10에서 상기 커널 행렬(20)의 열(column)의 개수는 N=4이다. 이때, 도 10의 'Data Buffer 0-0' 및 'Data Buffer 1-0' 은 C-ceil(N/2) = C-ceil(4/2) = C-2 개의 연산사이클에 해당하는 입출력 딜레이를 제공하고, 'Data Buffer 0-1' 및 'Data Buffer 1-1'은 C-floor(N/2) = C-floor(4/2)=C-2 개의 연산사이클에 해당하는 입출력 딜레이를 제공할 수 있다.
예컨대, 도 11에서 상기 커널 행렬(20)의 열(column)의 개수는 N=5이다. 이때, 도 11의 'Data Buffer 0-0' 및 'Data Buffer 1-0' 및 'Data Buffer 2-0' 은 C-ceil(N/2) = C-ceil(5/2) = C-3 개의 연산사이클에 해당하는 입출력 딜레이를 제공하고, 'Data Buffer 0-1' 및 'Data Buffer 1-1' 및 및 'Data Buffer 2-1'은 C-floor(N/2) = C-floor(5/2)=C-2 개의 연산사이클에 해당하는 입출력 딜레이를 제공할 수 있다.
도 2, 도 10, 및 도 11에서 확인할 수 있듯이, 도 2 내지 도 9를 통해 설명한 본 발명의 사상은, 크기가 N*N인 임의의 커널 행렬에 대하여 수정 없이 확장될 수 있다(N은 2 이상의 자연수).
또한, 본 기술분야의 평균적 기술수준을 가진 자라면, 도 2 내지 도 9를 통해 설명한 본 발명의 사상을, 크기가 N*M인 임의의 커널 행렬에 대하여 수정 없이 확장할 수 있다는 점을 이해할 수 있다(N은 2 이상의 자연수, M은 2 이상의 자연수, N과 M은 서로 개별적으로 설정 가능함).
도 2 내지 도 9에서는 트랜스포즈드 콘볼루션을 위한 제로 패딩 업스케일을 위한 스케일이 2인 경우만 예시하였다. 그러나 본 기술분야의 평균적 기술수준을 가진 자라면, 본 발명의 사상을 상기 스케일이 3 이상이 경우에 대해서도 확장할 수 있다는 점을 이해할 수 있다.
도 12는 본 발명의 일 실시예에 따라 제공되는 반도체 칩 및 컴퓨팅 장치를 설명하는 다이어그램이다.
본 발명의 일 실시예에 따라, 도 2 내지 도 11을 통해 설명한 연산장치(1), 즉 트랜스포즈드 콘볼루션 연산장치(1)를 포함하는 신경망 처리 장치(3)가 제공될 수 있다. 신경망 처리 장치(3)는 신경망 처리 전용 회로일 수 있으며, 예컨대 신경망 가속기, 딥러닝 프로세서, 또는 NPU(Neural Processing Unit)일 수 있다.
본 발명의 일 실시예에 따라, 신경망 처리 장치(3)를 포함하는 반도체 칩(4)이 제공될 수 있다. 반도체 칩(4)은 예컨대 SoC 또는 ASIC일 수 있다.
상기 연산장치(1)는 CPU, 메모리, 및 NPU를 포함하는 컴퓨팅 장치에서, 상기 NPU의 서브 모듈로 이용될 수 있다.
본 발명의 일 실시예에 따라, 반도체 칩(4)을 포함하는 컴퓨팅 장치(5)가 제공될 수 있다. 컴퓨팅 장치(5)는 예컨대, 데이터 저장부(61), 사용자 인터페이스부(62), 전원부(63), 제2 반도체 칩(64), 장치 인터페이스부(65), 및 네트워크 인터페이스부(66) 등을 더 포함할 수 있다.
도 13은 본 발명의 일 실시예에 따라 연산장치에 입력 데이터 행렬을 제공하는 부분과 연산장치로부터 출력된 출력 데이터 행렬을 이용하는 부분을 설명하기 위한 도면이다.
도 13을 참조하여 설명하면, 입력 데이터 행렬 제공부(901)는 연산장치(1)에게 상기 입력 데이터 행렬(2)을 포함하는 데이터를 제공할 수 있다. 이때, 입력 데이터 행렬 제공부(901)는, 예컨대 신경망의 특정 층을 구현하는 회로의 출력 데이터이거나, 또는 반도체 칩(4)에 제공된 영상 입력 정보를 제공하는 회로일 수 있다.
출력 데이터 행렬 수용부(902)는 연산장치(1)가 출력한 출력 데이터 행렬(30)을 포함하는 데이터를 수신하여 이용할 수 있다. 이때, 출력 데이터 행렬 수용부(902)는 신경망의 특정 층을 구현하는 회로일 수 있다.
상술한 본 발명의 실시예들을 이용하여, 본 발명의 기술 분야에 속하는 자들은 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에 다양한 변경 및 수정을 용이하게 실시할 수 있을 것이다. 특허청구범위의 각 청구항의 내용은 본 명세서를 통해 이해할 수 있는 범위 내에서 인용관계가 없는 다른 청구항에 결합될 수 있다.
Claims (16)
- 입력 데이터 행렬에 커널 행렬로 트랜스포즈드 콘볼루션 연산하여 출력 데이터 행렬을 생성하기 위한 데이터를 생성하는 연산장치로서,
상기 입력 데이터 행렬의 입력 요소값들을 출력하는 입력 데이터 제공부; 및
상기 커널 행렬로부터 추출된 제1서브커널 행렬의 각 가중 요소값에 대응하는 단위연산부들로 이루어진 제1단위연산부 그룹으로서, 상기 제1단위연산부 그룹에 속한 상기 단위연산부들은 상기 제1서브커널 행렬의 인덱스 순서에 따라 서로 직렬로 연결되어 있는, 상기 제1단위연산부 그룹;
을 포함하며,
각각의 상기 단위연산부는 연산 데이터 입력단자, 스트림 데이터 입력단자, 및 스트림 데이터 출력단자를 포함하며,
직렬로 연결되어 서로 인접한 두 개의 상기 단위연산부들 중 업스트림 단위연산부의 상기 스트림 데이터 출력단자에서 출력된 값은 다운스트림 단위연산부의 상기 스트림 데이터 입력단자에 입력되도록 되어 있고,
각각의 상기 단위연산부의 상기 연산 데이터 입력단자에는 상기 입력 데이터 제공부가 출력하는 상기 입력 데이터 행렬의 입력 요소값이 입력되며,
상기 제1단위연산부 그룹에 속한 상기 단위연산부들 중 최하류 단위연산부의 상기 스트림 데이터 출력단자는 상기 출력 데이터 행렬을 구성하는 데이터를 출력하도록 되어 있는,
연산장치. - 제1항에 있어서,
상기 제1서브커널 행렬 내의 인접한 두 개의 행들 중 상측 행의 마지막 가중 요소값에 대응하는 단위연산부와 하측 행의 첫 번째 가중 요소값에 대응하는 단위연산부 사이에 직렬로 연결된 제1데이터 버퍼부;
를 더 포함하며,
상기 제1데이터 버퍼부는, 상기 제1데이터 버퍼부의 입력단자에 연결된 단위연산부의 스트림 데이터 출력단자로부터 출력된 출력값을 버퍼링하여 상기 제1데이터 버퍼부의 출력단자에 연결된 단위연산부의 스트림 데이터 입력단자에 제공하도록 되어 있는,
연산장치. - 제1항에 있어서,
상기 입력 데이터 제공부는, 상기 입력 데이터 행렬의 입력 요소값들을 매 연산사이클마다 순차적으로 출력하도록 되어 있는,
연산장치. - 제1항에 있어서,
상기 제1서브커널 행렬은,
상기 커널 행렬의 홀수 번째 행들의 홀수 번째 가중 요소값들로 구성되어 있거나,
상기 커널 행렬의 홀수 번째 행들의 짝수 번째 가중 요소값들로 구성되어 있거나,
상기 커널 행렬의 짝수 번째 행들의 홀수 번째 가중 요소값들로 구성되어 있거나, 또는
상기 커널 행렬의 짝수 번째 행들의 짝수 번째 가중 요소값들로 구성되어 있는,
연산장치. - 제1항에 있어서,
상기 커널 행렬로부터 추출된 제2서브커널 행렬의 각 가중 요소값에 대응하는 단위연산부들로 이루어진 제2단위연산부 그룹;
상기 커널 행렬로부터 추출된 제3서브커널 행렬의 각 가중 요소값에 대응하는 단위연산부들로 이루어진 제3단위연산부 그룹; 및
상기 커널 행렬로부터 추출된 제4서브커널 행렬의 각 가중 요소값에 대응하는 단위연산부들로 이루어진 제4단위연산부 그룹;
을 더 포함하며,
각각의 상기 단위연산부 그룹에 속한 상기 단위연산부들은, 각각의 상기 단위연산부 그룹에 대응하는 상기 서브커널 행렬의 인덱스 순서에 따라 서로 직렬로 연결되어 있는,
연산장치. - 제5항에 있어서,
각각의 상기 단위연산부 그룹에 속한 상기 단위연산부들 중 최상류 단위연산부의 상기 스트림 데이터 입력단자에는 영(0)이 입력되고,
각각의 상기 단위연산부 그룹에 속한 상기 단위연산부들 중 최하류 단위연산부의 상기 스트림 데이터 출력단자는 상기 출력 데이터 행렬을 구성하는 데이터를 출력하도록 되어 있는,
연산장치. - 제5항에 있어서,
상기 제1서브커널 행렬은, 상기 커널 행렬의 홀수 번째 행들의 홀수 번째 가중 요소값들로 구성되어 있고,
상기 제2서브커널 행렬은, 상기 커널 행렬의 홀수 번째 행들의 짝수 번째 가중 요소값들로 구성되어 있고,
상기 제3서브커널 행렬은, 상기 커널 행렬의 짝수 번째 행들의 홀수 번째 가중 요소값들로 구성되어 있고, 그리고
상기 제4서브커널 행렬은, 상기 커널 행렬의 짝수 번째 행들의 짝수 번째 가중 요소값들로 구성되어 있는,
연산장치. - 제5항에 있어서,
복수 개의 상기 서브커널 행렬들 중 특정 서브커널 행렬 내의 인접한 두 개의 행들 중 상측 행의 마지막 가중 요소값에 대응하는 단위연산부와 하측 행의 첫 번째 가중 요소값에 대응하는 단위연산부 사이에 직렬로 연결된 데이터 버퍼부;
를 더 포함하며,
상기 데이터 버퍼부는, 상기 데이터 버퍼부의 입력단자에 연결된 단위연산부의 스트림 데이터 출력단자로부터 출력된 출력값을 버퍼링하여 상기 데이터 버퍼부의 출력단자에 연결된 단위연산부의 스트림 데이터 입력단자에 제공하도록 되어 있고,
상기 특정 서브커널 행렬은, 복수 개의 상기 서브커널 행렬들 중 두 개 이상의 행을 갖는 서브커널 행렬인,
연산장치. - 제8항에 있어서,
상기 입력 데이터 행렬은 C개의 열로 구성되며,
상기 커널 행렬의 열(column)의 개수는 N개이며,
상기 데이터 버퍼부는, 상기 데이터 버퍼부의 입력단자를 통해 입력된 값을, C-ceil(N/2)회 또는 C-floor(N/2)의 연산사이클 후에 상기 데이터 버퍼부의 출력단자를 통해 출력하도록 되어 있는,
연산장치. - 제2항에 있어서,
상기 입력 데이터 행렬은 C개의 열로 구성되며,
상기 커널 행렬의 열(column)의 개수는 N개이며,
상기 제1데이터 버퍼부는, 상기 제1데이터 버퍼부의 입력단자를 통해 입력된 값을, C-ceil(N/2)회 또는 C-floor(N/2)의 연산사이클 후에 상기 제1데이터 버퍼부의 출력단자를 통해 출력하도록 되어 있는,
연산장치. - 제1항에 있어서,
상기 입력 데이터 제공부는, 상기 입력 데이터 행렬의 입력 요소값들을 매 연산사이클마다 순차적으로 출력하도록 되어 있으며,
상기 입력 데이터 행렬 중 특정 행에 포함된 입력 요소값들은 상기 특정 행보다 하측에 있는 다른 행에 포함된 입력 요소값들보다 먼저 출력되며,
상기 입력 데이터 행렬 중 임의의 행에 포함된 입력 요소값들 중 특정 열의 입력 요소값은 상기 특정 열보다 오른쪽에 있는 다른 열의 입력 요소값들보다 먼저 출력되는,
연산장치. - 제5항에 있어서,
상기 커널 행렬의 임의의 가중 요소값은 상기 제1서브커널 행렬, 상기 제2서브커널 행렬, 상기 제3서브커널 행렬, 및 상기 제4서브커널 행렬 중 적어도 하나에 포함된,
연산장치. - 제1항에 있어서, 상기 제1단위연산부 그룹에 속한 상기 단위연산부들 중 최상류 단위연산부의 상기 스트림 데이터 입력단자에는 영(0)이 입력되는, 연산장치.
- 제1항 내지 제13항 중 어느 한 항의 연산장치를 포함하는 반도체 칩.
- 제1항 내지 제13항 중 어느 한 항의 연산장치를 포함하는 반도체 칩을 포함하는 컴퓨팅장치.
- 입력 데이터 행렬에 커널 행렬로 트랜스포즈드 콘볼루션 연산하여 출력 데이터 행렬을 생성하기 위한 데이터를 생성하는 연산장치로서,
상기 입력 데이터 행렬의 입력 요소값들을 출력하는 입력 데이터 제공부;
상기 커널 행렬로부터 추출된 제1서브커널 행렬의 각 가중 요소값에 대응하는 단위연산부들로 이루어진 제1단위연산부 그룹으로서, 상기 제1단위연산부 그룹에 속한 상기 단위연산부들은 상기 제1서브커널 행렬의 인덱스 순서에 따라 서로 직렬로 연결되어 있는, 상기 제1단위연산부 그룹; 및
상기 제1서브커널 행렬 내의 인접한 두 개의 행들 중 상측 행의 마지막 가중 요소값에 대응하는 단위연산부와 하측 행의 첫 번째 가중 요소값에 대응하는 단위연산부 사이에 직렬로 연결된 제1데이터 버퍼부;
를 포함하며,
상기 제1단위연산부 그룹에 속한 상기 단위연산부들 중 최하류 단위연산부의 스트림 데이터 출력단자는 상기 출력 데이터 행렬을 구성하는 데이터를 출력하도록 되어 있는,
연산장치.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200024840A KR102428033B1 (ko) | 2020-02-28 | 2020-02-28 | 트랜스포즈드 콘볼루션 하드웨어 가속장치 |
PCT/KR2021/001814 WO2021172797A1 (ko) | 2020-02-28 | 2021-02-10 | 트랜스포즈드 콘볼루션 하드웨어 가속장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200024840A KR102428033B1 (ko) | 2020-02-28 | 2020-02-28 | 트랜스포즈드 콘볼루션 하드웨어 가속장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210109798A KR20210109798A (ko) | 2021-09-07 |
KR102428033B1 true KR102428033B1 (ko) | 2022-08-02 |
Family
ID=77490279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200024840A KR102428033B1 (ko) | 2020-02-28 | 2020-02-28 | 트랜스포즈드 콘볼루션 하드웨어 가속장치 |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR102428033B1 (ko) |
WO (1) | WO2021172797A1 (ko) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9449257B2 (en) * | 2012-12-04 | 2016-09-20 | Institute Of Semiconductors, Chinese Academy Of Sciences | Dynamically reconstructable multistage parallel single instruction multiple data array processing system |
US10621486B2 (en) * | 2016-08-12 | 2020-04-14 | Beijing Deephi Intelligent Technology Co., Ltd. | Method for optimizing an artificial neural network (ANN) |
KR101879207B1 (ko) * | 2016-11-22 | 2018-07-17 | 주식회사 루닛 | 약한 지도 학습 방식의 객체 인식 방법 및 장치 |
EP3330898A1 (en) * | 2016-12-01 | 2018-06-06 | Altera Corporation | Method and apparatus for performing different types of convolution operations with the same processing elements |
WO2018189728A1 (en) * | 2017-04-14 | 2018-10-18 | Cerebras Systems Inc. | Floating-point unit stochastic rounding for accelerated deep learning |
KR102526103B1 (ko) * | 2017-10-16 | 2023-04-26 | 일루미나, 인코포레이티드 | 심층 학습 기반 스플라이스 부위 분류 |
KR20190051697A (ko) * | 2017-11-07 | 2019-05-15 | 삼성전자주식회사 | 뉴럴 네트워크의 디컨벌루션 연산을 수행하는 장치 및 방법 |
KR20190136891A (ko) * | 2018-05-30 | 2019-12-10 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
-
2020
- 2020-02-28 KR KR1020200024840A patent/KR102428033B1/ko active IP Right Grant
-
2021
- 2021-02-10 WO PCT/KR2021/001814 patent/WO2021172797A1/ko active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2021172797A1 (ko) | 2021-09-02 |
KR20210109798A (ko) | 2021-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10810483B2 (en) | Superpixel methods for convolutional neural networks | |
JP7007488B2 (ja) | ハードウェアベースのプーリングのシステムおよび方法 | |
US11556613B2 (en) | Methods and systems for implementing a convolution transpose layer of a neural network | |
CN111684473B (zh) | 提高神经网络阵列的性能 | |
CN108205701B (zh) | 一种执行卷积计算的系统及方法 | |
Yepez et al. | Stride 2 1-D, 2-D, and 3-D Winograd for convolutional neural networks | |
Wang et al. | Factorized convolutional neural networks | |
CN110119809B (zh) | 对神经网络中非对称量化数据执行mac运算的装置和方法 | |
JP6927320B2 (ja) | 推論装置、畳み込み演算実行方法及びプログラム | |
JP2023109847A (ja) | 機械学習のための画像変換 | |
JP7261226B2 (ja) | 演算処理装置 | |
EP3093757A2 (en) | Multi-dimensional sliding window operation for a vector processor | |
WO2022121474A1 (zh) | 优化神经网络卷积残差结构的方法、系统、设备及介质 | |
CN116075821A (zh) | 表格卷积和加速 | |
CN110580519A (zh) | 一种卷积运算结构及其方法 | |
KR102428033B1 (ko) | 트랜스포즈드 콘볼루션 하드웨어 가속장치 | |
JP7251354B2 (ja) | 情報処理装置、情報処理プログラム、及び情報処理方法 | |
CN116090518A (zh) | 基于脉动运算阵列的特征图处理方法、装置以及存储介质 | |
KR20220158768A (ko) | 기계 학습 가속을 위한 전력 감소 | |
CN112801275A (zh) | 一种加强通道重排和融合的卷积神经网络模块的实现方法 | |
Erzar et al. | Fast Incremental Image Reconstruction with CNN-enhanced Poisson Interpolation | |
CN112580796A (zh) | 用于神经网络的剪枝方法、装置以及系统 | |
CN113704172B (zh) | 基于脉动阵列的转置卷积和卷积加速器芯片设计方法 | |
TWI835562B (zh) | 機器學習優化電路及其方法 | |
EP4361890A1 (en) | Implementing a scatter function on a neural network accelerator |
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 |