KR102272518B1 - 시스톨릭 어레이 장치 - Google Patents
시스톨릭 어레이 장치 Download PDFInfo
- Publication number
- KR102272518B1 KR102272518B1 KR1020200031518A KR20200031518A KR102272518B1 KR 102272518 B1 KR102272518 B1 KR 102272518B1 KR 1020200031518 A KR1020200031518 A KR 1020200031518A KR 20200031518 A KR20200031518 A KR 20200031518A KR 102272518 B1 KR102272518 B1 KR 102272518B1
- Authority
- KR
- South Korea
- Prior art keywords
- processing unit
- preprocessor
- post
- memory unit
- bit
- Prior art date
Links
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/78—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
-
- 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
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/386—Special constructional features
- G06F2207/3884—Pipelining
- G06F2207/3892—Systolic array
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Neurology (AREA)
- Databases & Information Systems (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Algebra (AREA)
- Advance Control (AREA)
Abstract
시스톨릭 어레이 장치는 시스톨릭 어레이를 구성하는 복수의 프로세싱 엘리먼트(Processing Element)에서 반복되는 전용 로직을 제거하여 PE의 외부의 입력단에 배치하여 전처리함으로써 PE의 연산 지연, 면적, 전력 소모, 하드웨어 자원을 줄일 수 있는 효과가 있다.
Description
본 발명은 시스톨릭 어레이 장치에 관한 것으로서, 더욱 상세하게는 시스톨릭 어레이를 구성하는 복수의 프로세싱 엘리먼트(Processing Element)에서 반복되는 전용 로직을 제거하여 PE의 외부의 입력단에 배치하여 전처리함으로써 PE의 연산 지연, 면적, 전력 소모를 줄일 수 있는 시스톨릭 어레이 장치에 관한 것이다.
인공 신경망(Artificial Neural Network; ANN)은 생물학적인 신경망과 유사한 방식으로 데이터 또는 정보를 처리할 수 있다. 인공 신경망의 은닉 계층이 2개 이상인 경우를 심층 신경망(Deep Neural Network)이라 하며, 최근 활발히 연구되고 있다.
심층 신경망은 데이터 처리를 위하여 방대한 양의 계산량이 요구하는데, 이를 위하여 행렬 곱셈에 최적화된 회로인 시스톨릭 어레이(Systolic Array)를 적용한다.
시스톨릭 어레이는 동일한 동작을 하는 많은 PE(Processing Element)들로 이루어져 있으며, 동시에 많은 연산을 할 수 있다.
시스톨릭 어레이를 이용한 연산 기술은 오래 전부터 사용되는 방법이며, 최근에 위의 컨볼루션 신경망과 같은 딥 신경망(Deep Neural Network)을 처리하기 위해 많이 사용되고 있다.
도 1 및 도 2는 종래 기술에 따른 시스톨릭 어레이 구조를 나타낸 도면이다.
종래 기술은 2차원 배열로 상호 연결된 PE(10)이고, 제1 메모리부(20)로부터 입력 행렬 A를 입력받고, 제2 메모리부(30)로부터 입력 행렬 B를 입력받고, 두 개의 3×3 입력 행렬 A와 B의 곱을 수행한 후, 동일한 크기의 행렬 C를 생성하는 3×3 시스톨릭 어레이 구조이다.
입력 행렬 A는 왼쪽 가장자리의 PE(10)에 제공되고, 오른쪽 방향으로 전달되고, 입력 행렬 B는 상부의 PE(10)에 제공되고, 하부 방향으로 전달된다.
각각의 PE(10)는 곱셈 연산을 수행하는 곱셈기와 누적 유닛을 포함하고, 누적 결과를 누적 레지스터에 축적된다.
예를 들어, PE11은 제1 클록 사이클(t1)에서 입력 a11과, 입력 b11을 곱셈 연산을 수행한다. PE11은 제2 클록 사이클(t2)에서 입력 a12과, 입력 b21을 곱셈 연산을 수행하고, 이전 사이클인 제1 클록 사이클에서 입력된 a11과 b11을 각각 PE12와 PE21로 전달한다.
동일한 클록 사이클에서 PE12는 입력 a11와 입력 b12을 곱셈 연산하고, PE21은 입력 a21과 입력 b11을 곱셈 연산한다.
PE11은 제3 클록 사이클(t3)에서 입력 a13과 입력 b31을 곱셈 연산하고, 제4 클록 사이클(t4)에서 최종 결과 C11를 출력한다. PE12와 PE21은 제5 클록 사이클(t5)에서 행렬 c12와 c21의 결과를 출력한다. 이러한 방법으로 입력 행렬의 값이 시스톨릭 어레이의 각 구성요소로 전파되고, 출력 행렬이 계산된다.
도 3은 종래 기술에 따른 시스톨릭 어레이 구조의 상세 구성을 나타낸 도면이다.
종래 기술에 따른 시스톨릭 어레이 구조는 2차원 배열로 상호 연결된 PE(10)로 이루어져 있다.
각각의 PE(10)는 XDL(X Dedicated Logic)(11), YDL(Y Dedicated Logic)(12), ML(Main Logic)(13), 누산기(14) 및 PDL(P Dedicated Logic)(15)를 포함한다. 종래 기술의 시스톨릭 어레이 구조는 XDL(11), YDL(12), ML(13)이 하나의 곱셈기를 구성한다.
XDL(11)은 곱셈기 로직 중 입력 X에만 의존하는 로직이고, YDL(12)은 곱셈기 로직 중 입력 Y에만 의존하는 로직이고, ML(13)은 곱셈기 로직 중 XDL(11)과 YDL(12)이 아닌 나머지 부분으로 정의된다. 즉, 하나의 곱셈기는 XDL(11), YDL(12), ML(13)로 분해 가능하다.
XDL(11)은 제1 메모리부(20)로부터 임의의 사이클에서 X축 방향으로 전송되는 입력 행렬 A를 수신하여 연산을 수행한다.
YDL(12)은 제2 메모리부(30)로부터 임의의 사이클에서 Y축 방향으로 전송되는 입력 행렬 B를 수신하여 연산을 수행한다.
ML(13)은 XDL(11)로부터 처리된 결과와 YDL(12)로부터 처리된 결과를 이용하여 곱셈 연산의 핵심 부분을 수행한다.
누산기(14)는 곱셈기(13)의 곱셈 결과를 누적할 수 있다.
PDL(15)은 누산기(14)에서 누적된 결과를 최종 처리하여 PE(10)의 밖으로 내보낸다.
PE(10)는 곱셈기(13), 누산기(14), PDL(15)를 이용하여 곱셈 누산 연산을 수행하고, 곱셈 누산 연산을 반복적으로 수행하여 내적 연산(Dot-Product)을 수행할 수 있다.
이와 같이, 시스톨릭 어레이는 각각의 PE(10)를 구성하는 복수의 엘리먼트가 처리해야 하는 연산량으로 인하여 하드웨어 자원의 요구가 증가하며, 빠른 속도와 높은 효율을 달성하지 못하는 문제점이 있었다.
이와 같은 문제점을 해결하기 위하여, 본 발명은 시스톨릭 어레이를 구성하는 복수의 프로세싱 엘리먼트(Processing Element)에서 반복되는 전용 로직을 제거하여 PE의 외부의 입력단에 배치하여 전처리함으로써 PE의 연산 지연, 면적, 전력 소모를 줄일 수 있는 시스톨릭 어레이 장치를 제공하는데 그 목적이 있다.
본 발명은 시스톨릭 어레이를 구성하는 복수의 프로세싱 엘리먼트(Processing Element)에서 반복되는 전용 로직을 제거하여 PE의 외부의 출력단에 배치하여 후처리함으로써 PE의 연산 지연, 면적, 전력 소모를 줄일 수 있는 시스톨릭 어레이 장치를 제공하는데 그 목적이 있다.
상기 목적을 달성하기 위한 본 발명의 특징에 따른 시스톨릭 어레이 장치는,
제1 메모리부에 저장된 값인 X를 X'로 변형하여 전달하는 제1 전처리부;
제2 메모리부에 저장된 값인 Y를 Y'로 변형하여 전달하는 제2 전처리부; 및
2차원 배열로 상호 연결되고, 상기 제1 전처리부가 좌측에서 병렬로 각각 연결되고, 상기 제2 전처리부가 상단에서 병렬로 각각 연결되고, 상기 제1 전처리부로부터 좌측에서 상기 X'를 각각 입력받고, 상기 제2 전처리부로부터 상단에서 상기 Y'를 각각 입력받는 복수의 PE(Processing Element)를 포함하는 것을 특징으로 한다.
본 발명의 특징에 따른 시스톨릭 어레이 장치는,
2차원 배열로 상호 연결되고, 입력 행렬 X가 저장된 제1 메모리부가 좌측에서 병렬로 각각 연결되고, 입력 행렬 Y가 저장된 제2 메모리부가 상단에서 병렬로 각각 연결되고, 상기 제1 메모리부로부터 좌측에서 상기 X를 각각 입력받고, 상기 제2 메모리부로부터 상단에서 상기 Y를 각각 입력받는 복수의 PE(Processing Element); 및
상기 각각의 PE로부터 출력된 P를 후처리하여 P'로 변형하여 출력하는 후처리부를 포함하는 것을 특징으로 한다.
전술한 구성에 의하여, 본 발명은 시스톨릭 어레이를 구성하는 복수의 프로세싱 엘리먼트(Processing Element)에서 반복되는 전용 로직을 제거하여 PE의 외부의 입력단에 배치하여 전처리함으로써 PE의 연산 지연, 면적, 전력 소모, 하드웨어 자원을 줄일 수 있는 효과가 있다.
도 1 및 도 2는 종래 기술에 따른 시스톨릭 어레이 구조를 나타낸 도면이다.
도 3은 종래 기술에 따른 시스톨릭 어레이 구조의 상세 구성을 나타낸 도면이다.
도 4는 본 발명의 실시예에 따른 전처리부를 구비한 시스톨릭 어레이 장치의 구성을 나타낸 도면이다.
도 5는 본 발명의 제1 실시예에 따른 전처리부를 구비한 시스톨릭 어레이 장치의 일례를 나타낸 도면이다.
도 6은 본 발명의 제2 실시예에 따른 전처리부를 구비한 시스톨릭 어레이 장치의 다른 일례를 나타낸 도면이다.
도 7은 본 발명의 실시예에 따른 후처리부를 구비한 시스톨릭 어레이 장치의 구성을 나타낸 도면이다.
도 8은 본 발명의 실시예에 따른 후처리부를 구체화한 모습을 나타낸 도면이다.
도 9는 본 발명의 다른 실시예에 따른 후처리부의 구성을 나타낸 도면이다.
도 3은 종래 기술에 따른 시스톨릭 어레이 구조의 상세 구성을 나타낸 도면이다.
도 4는 본 발명의 실시예에 따른 전처리부를 구비한 시스톨릭 어레이 장치의 구성을 나타낸 도면이다.
도 5는 본 발명의 제1 실시예에 따른 전처리부를 구비한 시스톨릭 어레이 장치의 일례를 나타낸 도면이다.
도 6은 본 발명의 제2 실시예에 따른 전처리부를 구비한 시스톨릭 어레이 장치의 다른 일례를 나타낸 도면이다.
도 7은 본 발명의 실시예에 따른 후처리부를 구비한 시스톨릭 어레이 장치의 구성을 나타낸 도면이다.
도 8은 본 발명의 실시예에 따른 후처리부를 구체화한 모습을 나타낸 도면이다.
도 9는 본 발명의 다른 실시예에 따른 후처리부의 구성을 나타낸 도면이다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이와 같이, 시스톨릭 어레이는 각각의 PE(10)를 구성하는 복수의 엘리먼트가 처리해야 하는 연산량으로 인하여 하드웨어 자원의 요구가 증가하며, 빠른 속도와 높은 효율을 달성하지 못하는 문제점이 있었다.
본 발명의 시스톨릭 어레이 장치는 텐서 프로세싱 유니트(Tensor Processing Unit), GPU(Graphic Processing Unit) 등에 적용될 수 있다.
도 4는 본 발명의 실시예에 따른 전처리부를 구비한 시스톨릭 어레이 장치의 구성을 나타낸 도면이다.
본 발명의 실시예에 따른 전처리부를 구비한 시스톨릭 어레이 장치는 제1 메모리부(101)에 저장된 값인 X를 X'로 변형하여 전달하는 제1 전처리부(110)와, 제2 메모리부(102)에 저장된 값인 Y를 Y'로 변형하여 전달하는 제2 전처리부(120) 및 2차원 배열로 상호 연결되고, 제1 전처리부(110)가 좌측에서 병렬로 각각 연결되고, 제2 전처리부(120)가 상단에서 병렬로 각각 연결되고, 제1 전처리부(110)로부터 좌측에서 X'를 각각 입력받고, 제2 전처리부(120)로부터 상단에서 Y'를 각각 입력받는 복수의 PE(Processing Element)를 포함한다.
제1 전처리부(110)와 제2 전처리부(120)는 PE(130)를 구성하는 복수의 엘리먼트(Element) 중에서 공통되는 일부 엘리먼트 또는 연산 기능을 PE(130)의 외부에 배치하여 전처리함으로써 PE(130)의 내부에서 연산량을 감소시키는 기능을 수행한다.
여기서, 엘리먼트는 PE(130)의 내부 구성요소로서 XDL(11), YDL(12), ML(13), 누산기(14) 및 PDL(15)를 나타낸다.
시스톨릭 어레이는 제1 메모리부(101)에 저장된 n-bit X를 전처리하여 m-bit X'로 변환한 후, PE(130)로 전달하고, 제2 메모리부(102)에 저장된 n-bit Y를 전처리하여 m-bit Y'로 변환한 후, PE(130)로 전달할 수 있다. 여기서, m은 n보다 큰 정수를 의미한다.
다른 실시예로서, 시스톨릭 어레이는 제1 메모리부(101)에 저장된 X를 전처리하여 Signed Digit Number 형태의 X'로 변환한 후, PE(130)로 전달하고, 제2 메모리부(102)에 저장된 Y를 전처리하여 Signed Digit Number 형태의 Y'로 변환한 후, PE(130)로 전달할 수 있다.
또 다른 실시예로서, 시스톨릭 어레이는 제1 메모리부(101)에 저장된 Binary Encoding된 X를 전처리하여 Non Binary Encoding 형태의 X'로 변환한 후, PE(130)로 전달하고, 제2 메모리부(102)에 저장된 Binary Encoding 형태의 Y를 전처리하여 Non Binary Encoding 형태의 Y'로 변환한 후, PE(130)로 전달할 수 있다.
제1 전처리부(110)와 제2 전처리부(120)의 일례를 하기의 도 5와 도 6에 상세하게 설명한다.
도 5는 본 발명의 제1 실시예에 따른 전처리부를 구비한 시스톨릭 어레이 장치의 일례를 나타낸 도면이다.
본 발명의 제1 실시예에 따른 시스톨릭 어레이는 각각의 PE(130)에서 반복되는 전용 로직을 제거하여 PE(130)의 외부의 입력단을 나타내는 제1 전처리부(110)와 제2 전처리부(120)에 배치함으로써 PE(130)의 연산 지연, 면적, 전력 소모를 줄일 수 있다.
제1 전처리부(110)는 XDL(11)이고, 제2 전처리부(120)는 YDL(12)이며, PE(130)는 ML(13), 누산기(14)를 포함한다.
본 발명의 제1 실시예는 PE(130)의 내부에 배치된 XDL(11)과 YDL(12)를 외부에 배치하여 전용 전처리함으로써 각각의 PE(130)에서 수행되는 연산량과 하드웨어 자원을 감소시키는 효과가 있다.
도 6은 본 발명의 제2 실시예에 따른 전처리부를 구비한 시스톨릭 어레이 장치의 일례를 나타낸 도면이다.
본 발명의 제2 실시예에 따른 시스톨릭 어레이 장치는 각각의 PE(130)에서 반복되는 전용 전처리 로직을 제거하여 PE(130)의 외부에 입력단을 나타내는 제1 전처리부(110)와 제2 전처리부(120)에 배치하여 PE(130)의 연산 지연, 면적, 전력 소모를 줄일 수 있다.
제1 전처리부(110)는 부스 리코더(Booth Recoder)를 적용하여 Binary Number를 Signed Digit Number로 변환한다.
제2 전처리부(120)는 덧셈기를 이용하여 Y로부터 3Y로 연산한다. 이렇게 전처리된 결과물인 Signed Digit Number, Y, 3Y를 PE(130)에 전달함으로써 PE(130)의 연산 속도를 높일 수 있다.
시스톨릭 어레이는 왼쪽 가장자리에서 입력되는 입력 행렬 X을 병렬로 사전 처리하는데, X를 Radix-8 부스 인코딩으로 각각 사전 처리하는 제1 전처리부(110)와, 상단 가장자리에서 입력되는 입력 행렬의 요소 Y를 Y+2Y = 3Y로 각각 사전 처리하는 제2 전처리부(120)를 포함한다.
제1 전처리부(110)는 Radix-8 부스 인코딩 처리된 결과를 각각의 PE(130)로 전달한다. 다시 말해, 제1 전처리부(110)는 승수(Multiplier)(X)를 입력받아 이를 부스 알고리즘에 따라 인코딩하고, 인코딩된 승수를 각각의 PE(130)로 전달한다.
제2 전처리부(120)는 피승수(Multiplicand) Y+2Y를 사전 처리하여 Y와 3Y를 각각의 PE(130)로 전송한다.
부스 인코딩 곱셈기는 승수(Multiplier)의 비트들을 부스 알고리즘에 의해 인코딩하여 부스 인코딩 단위로 피승수(Multiplicand)의 인코드 값을 결정하고, 부스 인코딩 단위의 인코드 값을 이용하여 부분 곱들을 가산함으로써 승수와 피승수의 곱셈 연산을 수행하는 회로이다. 이때, 승수를 인코딩하는 비트수의 단위인 기수(Radix)를 높일수록 승수와 피승수의 부분 곱의 개수를 줄일 수 있다.
각각의 PE(130)는 부분곱 생성부, 웰러스 트리(Wallace Tree) 회로 및 캐리 전파 가산기(Carry Propagate Adder)를 포함한다.
부분곱 생성부는 제1 전처리부(110)로부터 수신한 인코딩된 승수와 제2 전처리부(120)는 피승수(Multiplicand) Y와 3Y를 이용하여 복수의 부분곱(Partial Product)을 생성한다.
웰러스 트리 회로는 복수의 부분곱을 3 : 2의 압축기를 이용하여 제1 부분합과 제2 부분합으로 압축하여 캐리 전파 가산기로 전달한다.
캐리 전파 가산기는 제1 부분합과 제2 부분합을 입력받고, 이를 합하여 곱셈 연산을 수행한다.
각각의 PE(130)는 부스 인코딩과 피승수 3Y의 연산이 포함되어 있지 않고, Radix 8을 이용하기 때문에 파이프라인 컷 셋(Pipeline Cut Sets) 레지스터 비용을 상당히 감소시킬 수 있다.
시스톨릭 어레이는 제1 메모리부(101)에 저장된 X를 부스 인코딩하여 부스 인코딩된 형태의 X'로 변환한 후, PE(130)로 전달하고, 제2 메모리부(102)에 저장된 Y를 Y+2Y = 3Y로 전처리하여 Y, 3Y를 PE(130)로 전달한다.
도 7은 본 발명의 실시예에 따른 후처리부를 구비한 시스톨릭 어레이 장치의 구성을 나타낸 도면이고, 도 8은 본 발명의 실시예에 따른 후처리부를 구체화한 모습을 나타낸 도면이다.
본 발명의 실시예에 따른 시스톨릭 어레이 장치는 2차원 배열로 상호 연결되고, 입력 행렬 X가 저장된 제1 메모리부(101)가 좌측에서 병렬로 각각 연결되고, 입력 행렬 Y가 저장된 제2 메모리부(102)가 상단에서 병렬로 각각 연결되고, 제1 메모리부(101)로부터 좌측에서 X를 각각 입력받고, 제2 메모리부(102)로부터 상단에서 Y를 각각 입력받는 복수의 PE(Processing Element)(130) 및 각각의 PE(130)로부터 출력된 P를 후처리하여 P'로 변형하여 출력하는 후처리부(140)를 포함한다.
후처리부(140)는 복수의 PDL(142)로 이루어져 있다.
각각의 PDL(142)는 각각의 PE(130)에서 출력된 Redundant Binary Number P를 처리하여 Binary Number 'P'로 변환한 후 출력할 수 있다.
각각의 PDL(142)는 각각의 PE(130)에서 출력된 n-bit P를 후처리하여 m-bit P'로 변환한 후 출력할 수 있다. 여기서, n은 m보다 큰 정수를 의미한다.
각각의 PDL(142)는 각각의 PE(130)에서 출력된 Non-Binary Encoding 형태의 P를 전처리하여 Binary Encoding 형태의 P'로 변환한 후 출력할 수 있다.
각각의 PDL(142)는 각각의 PE(130)에서 출력된 복수의 Binary 수들의 결합 P를 덧셈기로 덧셈 후 하나의 Binary 수 P'로 변환한 후 출력할 수 있다.
각각의 PDL(142)는 각각의 PE(130)에서 출력된 정규화되지 않은 부동 소수점 수 P를 정규화된 부동 소수점 수 P'로 변환하여 출력할 수 있다.
각각의 PDL(142)는 각각의 PE(130)에서 출력된 수 P를 올림, 반올림 또는 버림한 어림수 P'로 변환하여 출력할 수 있다.
도 9는 본 발명의 다른 실시예에 따른 후처리부의 구성을 나타낸 도면이다.
도 9는 도 8의 PDL(142)를 덧셈기로 구성한 일례를 나타낸 것이다.
각각의 PDL(142)는 각각의 PE(130)에서 출력된 P=(p0, p1)를 p0 + p1로 덧셈한 P'로 변환하여 출력할 수 있다.
이상에서 본 발명의 실시예는 장치 및/또는 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하기 위한 프로그램, 그 프로그램이 기록된 기록 매체 등을 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.
101: 제1 메모리부
102: 제2 메모리부
110: 제1 전처리부
120: 제2 전처리부
130: PE
140: 후처리부
102: 제2 메모리부
110: 제1 전처리부
120: 제2 전처리부
130: PE
140: 후처리부
Claims (10)
- 제1 메모리부에 저장된 값인 X를 X'로 변형하여 전달하는 제1 전처리부;
제2 메모리부에 저장된 값인 Y를 Y'로 변형하여 전달하는 제2 전처리부; 및
2차원 배열로 상호 연결되고, 상기 제1 전처리부가 좌측에서 병렬로 각각 연결되고, 상기 제2 전처리부가 상단에서 병렬로 각각 연결되고, 상기 제1 전처리부로부터 좌측에서 상기 X'를 각각 입력받고, 상기 제2 전처리부로부터 상단에서 상기 Y'를 각각 입력받는 복수의 PE(Processing Element)를 포함하는 것을 특징으로 하는 시스톨릭 어레이 장치. - 제1항에 있어서,
상기 제1 전처리부와 상기 제2 전처리부는 곱셈 로직의 일부를 포함하는 것을 특징으로 하는 시스톨릭 어레이 장치. - 제1항에 있어서,
상기 제1 전처리부는 상기 제1 메모리부에 저장된 값인 n-bit X를 전처리하여 m-bit X'로 변형한 후 상기 각각의 PE로 전달하고,
상기 제2 전처리부는 상기 제2 메모리부에 저장된 값인 n-bit Y를 전처리하여 m-bit Y'로 변형한 후 상기 각각의 PE로 전달하며,
상기 각각의 PE는 상기 제1 전처리부로부터 좌측에서 상기 m-bit X'를 각각 입력받고, 상기 제2 전처리부로부터 상단에서 상기 m-bit Y'를 각각 입력받으며, m은 n보다 큰 정수인 것을 특징으로 하는 시스톨릭 어레이 장치. - 제1항에 있어서,
상기 제1 전처리부는 상기 제1 메모리부에 저장된 값인 n-bit X를 전처리하여 Signed Digit Number 형태의 X'로 변형한 후 상기 각각의 PE로 전달하고,
상기 제2 전처리부는 상기 제2 메모리부에 저장된 값인 n-bit Y를 전처리하여 Signed Digit Number 형태의 Y'로 변형한 후 상기 각각의 PE로 전달하며,
상기 각각의 PE는 상기 제1 전처리부로부터 좌측에서 상기 Signed Digit Number 형태의 X'를 각각 입력받고, 상기 제2 전처리부로부터 상단에서 상기 Signed Digit Number 형태의 Y'를 각각 입력받는 것을 특징으로 하는 시스톨릭 어레이 장치. - 제1항에 있어서,
상기 제1 전처리부는 상기 제1 메모리부에 저장된 값인 X를 부스 인코딩하여 부스 인코딩된 형태의 X'로 변형한 후 상기 각각의 PE로 전달하고,
상기 제2 전처리부는 상기 제2 메모리부에 저장된 값인 Y를 Y+2Y = 3Y로 전처리하여 Y와 3Y를 상기 각각의 PE로 전달하며,
상기 각각의 PE는 상기 제1 전처리부로부터 좌측에서 상기 부스 인코딩된 형태의 X'를 각각 입력받고, 상기 제2 전처리부로부터 상단에서 상기 Y와 3Y를 각각 입력받는 것을 특징으로 하는 시스톨릭 어레이 장치. - 2차원 배열로 상호 연결되고, 입력 행렬 X가 저장된 제1 메모리부가 좌측에서 병렬로 각각 연결되고, 입력 행렬 Y가 저장된 제2 메모리부가 상단에서 병렬로 각각 연결되고, 상기 제1 메모리부로부터 좌측에서 상기 X를 각각 입력받고, 상기 제2 메모리부로부터 상단에서 상기 Y를 각각 입력받는 복수의 PE(Processing Element); 및
상기 각각의 PE로부터 출력된 P를 후처리하여 P'로 변형하여 출력하는 후처리부를 포함하는 것을 특징으로 하는 시스톨릭 어레이 장치. - 제6항에 있어서,
상기 후처리부는 상기 각각의 PE의 출력된 n-bit P를 후처리하여 m-bit P'로 변환한 후 출력하며, n은 m보다 큰 정수인 것을 특징으로 하는 시스톨릭 어레이 장치. - 제6항에 있어서,
상기 후처리부는 상기 각각의 PE의 출력된 Redundant Binary Number P를 후처리하여 Binary Number P'로 변환한 후 출력하는 것을 특징으로 하는 시스톨릭 어레이 장치. - 제6항에 있어서,
상기 후처리부는 상기 각각의 PE의 출력된 복수의 Binary Number들의 결합 P를 덧셈기로 후처리하여 하나의 Binary Number P'로 변환한 후 출력하는 것을 특징으로 하는 시스톨릭 어레이 장치. - 제6항에 있어서,
상기 후처리부는 곱셈 누산 로직의 일부를 포함하는 것을 특징으로 하는 시스톨릭 어레이 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200031518A KR102272518B1 (ko) | 2020-03-13 | 2020-03-13 | 시스톨릭 어레이 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200031518A KR102272518B1 (ko) | 2020-03-13 | 2020-03-13 | 시스톨릭 어레이 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102272518B1 true KR102272518B1 (ko) | 2021-07-05 |
Family
ID=76899455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200031518A KR102272518B1 (ko) | 2020-03-13 | 2020-03-13 | 시스톨릭 어레이 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102272518B1 (ko) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060017703A (ko) * | 2004-08-21 | 2006-02-27 | 학교법인 포항공과대학교 | 시스톨릭 배열 구조를 가지는 미지 신호 분리 장치 |
US8406334B1 (en) * | 2010-06-11 | 2013-03-26 | Xilinx, Inc. | Overflow resistant, fixed precision, bit optimized systolic array for QR decomposition and MIMO decoding |
CN104462021A (zh) * | 2014-11-11 | 2015-03-25 | 江苏中兴微通信息科技有限公司 | 基于高速脉动阵列及Givens变换的基向量矩阵压缩装置 |
KR20190065144A (ko) | 2017-12-01 | 2019-06-11 | 한국전자통신연구원 | 뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법 |
KR20190099931A (ko) * | 2018-02-20 | 2019-08-28 | 삼성전자주식회사 | 시스톨릭 배열(Systolic Array)을 이용하여 딥 러닝(Deep Learning) 연산을 수행하는 방법 및 장치 |
-
2020
- 2020-03-13 KR KR1020200031518A patent/KR102272518B1/ko active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060017703A (ko) * | 2004-08-21 | 2006-02-27 | 학교법인 포항공과대학교 | 시스톨릭 배열 구조를 가지는 미지 신호 분리 장치 |
US8406334B1 (en) * | 2010-06-11 | 2013-03-26 | Xilinx, Inc. | Overflow resistant, fixed precision, bit optimized systolic array for QR decomposition and MIMO decoding |
CN104462021A (zh) * | 2014-11-11 | 2015-03-25 | 江苏中兴微通信息科技有限公司 | 基于高速脉动阵列及Givens变换的基向量矩阵压缩装置 |
KR20190065144A (ko) | 2017-12-01 | 2019-06-11 | 한국전자통신연구원 | 뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법 |
KR20190099931A (ko) * | 2018-02-20 | 2019-08-28 | 삼성전자주식회사 | 시스톨릭 배열(Systolic Array)을 이용하여 딥 러닝(Deep Learning) 연산을 수행하는 방법 및 장치 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wang et al. | Efficient hardware architectures for deep convolutional neural network | |
Yepez et al. | Stride 2 1-D, 2-D, and 3-D Winograd for convolutional neural networks | |
CN109543140B (zh) | 一种卷积神经网络加速器 | |
Mohanty et al. | Memory footprint reduction for power-efficient realization of 2-D finite impulse response filters | |
Abdelgawad et al. | High speed and area-efficient multiply accumulate (MAC) unit for digital signal prossing applications | |
CN109284824B (zh) | 一种基于可重构技术的用于加速卷积和池化运算的装置 | |
CN110851779B (zh) | 用于稀疏矩阵运算的脉动阵列架构 | |
CN112540743B (zh) | 面向可重构处理器的有无符号乘累加器及方法 | |
KR20190089685A (ko) | 데이터를 처리하는 방법 및 장치 | |
CN116450217A (zh) | 一种多功能定点乘法和乘累加运算装置及方法 | |
Kakde et al. | Design of area and power aware reduced Complexity Wallace Tree multiplier | |
CN110716751B (zh) | 高并行度计算平台、系统及计算实现方法 | |
JP2022181161A (ja) | ハードウェアにおけるスパース行列乗算 | |
KR102272518B1 (ko) | 시스톨릭 어레이 장치 | |
CN116205244B (zh) | 一种数字信号处理结构 | |
CN110659014B (zh) | 乘法器及神经网络计算平台 | |
Mandloi et al. | Power and delay efficient fir filter design using ESSA and VL-CSKA based booth multiplier | |
Ahish et al. | Design of high performance Multiply-Accumulate Computation unit | |
Véstias et al. | Efficient design of low bitwidth convolutional neural networks on FPGA with optimized dot product units | |
CN112836793B (zh) | 浮点可分离卷积计算加速装置、系统以及图像处理方法 | |
Mironov et al. | Analysis of multiplier architectures for neural networks hardware implementation | |
JP2007500388A (ja) | 長整数乗算器 | |
Alsayyab et al. | FPGA Implementation of MAC Unit for Artificial Neural Network Accelerators | |
CN113986194A (zh) | 基于预处理的神经网络近似乘法器实现方法及装置 | |
KR101527103B1 (ko) | 이산 코사인 변환 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |