KR20230096903A - 벡터 단위 누적 기반 비트-병렬 가변 정밀도를 이용하는 시스톨릭 어레이 구조 및 장치 - Google Patents

벡터 단위 누적 기반 비트-병렬 가변 정밀도를 이용하는 시스톨릭 어레이 구조 및 장치 Download PDF

Info

Publication number
KR20230096903A
KR20230096903A KR1020220182735A KR20220182735A KR20230096903A KR 20230096903 A KR20230096903 A KR 20230096903A KR 1020220182735 A KR1020220182735 A KR 1020220182735A KR 20220182735 A KR20220182735 A KR 20220182735A KR 20230096903 A KR20230096903 A KR 20230096903A
Authority
KR
South Korea
Prior art keywords
bit
input
pes
systolic array
node
Prior art date
Application number
KR1020220182735A
Other languages
English (en)
Inventor
신동엽
임용석
Original Assignee
한국전자기술연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자기술연구원 filed Critical 한국전자기술연구원
Publication of KR20230096903A publication Critical patent/KR20230096903A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8046Systolic arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

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

Abstract

본 발명은 벡터 단위 누적 기반 비트-병렬 가변 정밀도를 이용하는 시스톨릭 어레이 구조 및 장치에 관한 것이다. 본 발명의 일 실시예에 따른 구조는 다수의 PE(Processing Element)가 연결된 PE 어레이를 포함하는 시스톨릭 어레이(systolic array) 구조로서, 상기 각 PE는 비트 단위로 곱셈 및 누적 덧셈 연산을 수행하는 다수의 PPE를 포함하는 비트-병렬 구조가 적용되어, 벡터 단위의 누적을 통해 가변 정밀도 연산을 수행한다.

Description

벡터 단위 누적 기반 비트-병렬 가변 정밀도를 이용하는 시스톨릭 어레이 구조 및 장치{SYSTOLIC ARRAY STRUCTURE AND APPARATUS USING VECTOR UNIT ACCUMULATION BASED BIT-PARALLEL VARIABLE PRECISION}
본 발명은 시스톨릭 어레이(systolic array) 관련 기술에 관한 것으로서, 더욱 상세하게는 시스톨릭 어레이 구조에서 벡터 단위의 누적을 통해 가변 정밀도 연산 구현의 하드웨어 면적 및 전력소모 오버헤드(ovedhead)를 줄일 수 있는 기술에 관한 것이다.
딥러닝을 위한 인공신경망은 수많은 연산으로 구성되어 있지만, 연산마다 신경망의 결과 정확도에 미치는 영향이 다르다. 어떤 연산은 낮은 비트-정밀도로 수행해도 정확도에 영향이 적고, 어떤 연산은 높은 비트-정밀도로 수행하지 않으면 정확도가 크게 감소한다. 즉, 딥러닝 신경망에서 파라미터마다 요구되는 연산의 비트-정밀도에 차이가 있다. 또한, CNN (Convolutional Neural Network) 또는 NLP (Natural Language Processing) 등의 딥러닝 신경망 모델에 따라서도 처리하는 데이터의 범위와 요구되는 연산의 비트-정밀도에 큰 차이가 있다. 이에 따라, 딥러닝 신경망에서 비트-정밀도를 가변할 수 있다면 모든 연산에 동일한 비트-정밀도를 사용하는 것보다 효율적(즉, 동일 정확도 대비 연산량 감소)인 딥러닝 신경망 연산이 가능하다.
한편, 가변 정밀도 연산 구현을 위한 하드웨어 구조로는 크게 2가지 형태가 존재한다. 첫번째는 비트-시리얼 구조로서, 1bit부터 원하는 모든 정밀도 연산이 가능하지만 레이턴시(latency) 및 면적의 효율이 떨어진다. 두번째는 비트-병렬 구조로서, 기본 연산 유닛의 단위의 2배수로 늘어나는 정밀도 연산이 가능하다. 일례로, 비트-병렬 구조는 2bit × 2bit 연산을 기본 연산 유닛으로 할 경우, 2bit, 4bit 및 8bit의 곱셈 연산 처리가 가능하다. 이러한 비트-병렬 구조는 비트-시리얼 구조보다 정밀도의 커버 범위가 좁은 대신 정밀도 가변에 대한 오버헤드(overhead)가 적다.
한편, 시스톨릭 어레이(systolic array)는 행렬 연산의 효율을 높이기 위해 제안된 하드웨어 구조이다. 특히, 시스톨릭 어레이는 딥러닝의 주요 연산들이 행렬 연산에 기반하거나 행렬 연산으로 치환이 가능하므로, 딥러닝 가속기에 적용하기에 효율적인 구조에 해당한다.
하지만, 현재까지 가변 정밀도 연산 구현을 위해 비트-시리얼 구조만이 시스톨릭 어레이에 적용되어 왔을 뿐, 비트-병렬 구조를 시스톨릭 어레이에 적용한 기술은 전무한 실정이다.
다만, 상술한 내용은 단순히 본 발명에 대한 배경 정보를 제공할 뿐 기 공개된 기술에 해당하는 것은 아니다.
본 발명은 비트-병렬 구조를 시스톨릭 어레이에 적용한 기술을 제공하는데 그 목적이 있다.
즉, 본 발명은 비트-시리얼 구조 기반의 시스톨릭 어레이 대비 면적 및 전력 효율이 높은 비트-병렬 구조 기반의 가변 정밀도를 이용하는 시스톨릭 어레이 기술을 제공하는데 그 목적이 있다.
또한, 본 발명은 딥러닝 신경망 등에 따른 딥러닝 관련 연산을 처리하는 전자 장치(가령, 모바일, 에지, 또는 서버 등)에 대해 시스톨릭 어레이 기반 하드웨어를 적용할 수 있는 기술을 제공하는데 그 다른 목적이 있다.
다만, 본 발명이 해결하고자 하는 과제는 이상에서 언급한 과제에 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
상기와 같은 과제를 해결하기 위한 본 발명의 일 실시예에 따른 구조는 다수의 PE(Processing Element)가 연결된 PE 어레이를 포함하는 시스톨릭 어레이(systolic array) 구조로서, 상기 각 PE는 비트 단위로 곱셈 및 누적 덧셈 연산을 수행하는 다수의 PPE를 포함하는 비트-병렬 구조가 적용되어, 벡터 단위의 누적을 통해 가변 정밀도 연산을 수행한다.
상기 각 PE의 연산 결과들을 벡터 단위로 누적하고, 상기 PE들의 열(Column)에 해당하는 각 PC의 연산이 완료된 이후에 쉬프트(Shift)를 통한 조합이 수행될 수 있다.
하나의 PE 내에서 상기 각 PPE는, 2비트 단위에 대한 곱셈 연산을 수행하는 곱셈기; 및 비트 단위에 대한 누적 덧셈 연산을 수행하는 누산기;를 포함할 수 있다.
M비트(단, M은 2의 N 제곱수이며, N은 자연수) 단위에 대한 곱셈 연산이 2비트 단위의 곱셈 연산으로 치환되며, 하나의 PE 내에서 상기 각 PPE는 M2/4개의 PPE를 포함할 수 있다.
상기 PE들의 열에 해당하는 각 PC는 해당 PC 내에 포함된 각 PE에서 전달되는 부분합(partial sum, PS)을 누적하는 누적부를 더 포함하며, 상기 각 PC에서, 해당 PC 내의 각 PE에서 도출 곱셈 결과들이 각 PE 내에서 누적되지 않고 상기 PS로 전달되어 상기 누적부에서 한꺼번에 누적될 수 있다.
상기 SA는 M2/4개의 M비트 PS들을 각 자릿수에 맞게 시프트(shift)한 후에 더할 수 있다.
상기 각 PE에 입력되는 제1 및 제2 입력에 대해, 상기 제1 입력이 Pre-load되어 세팅되고, 상기 제2 입력은 시스톨릭하게 입력될 수 있다.
상기 가변 정밀도 연산은 딥러닝 관련 연산일 수 있다.
상기 제1 입력은 가중치(weight)이고, 상기 제2 입력은 입력층의 노드로부터 출력된 것이거나, 어느 한 은닉층의 노드에서 계산되어 다음 은닉층의 노드 또는 출력층의 노드에 입력되는 activation일 수 있다.
본 발명의 일 실시예에 따른 장치는, 메모리; 및 상기 메모리에 저장된 정보를 이용하는 프로세서;를 포함하고, 상기 프로세서는 다수의 PE(Processing Element)가 연결된 PE 어레이를 구비한 시스톨릭 어레이(systolic array) 구조를 포함하며, 상기 각 PE는 비트 단위로 곱셈 및 누적 덧셈 연산을 수행하는 다수의 PPE를 포함하는 비트-병렬 구조가 적용되어, 벡터 단위의 누적을 통해 가변 정밀도 연산을 수행한다.
상기와 같이 구성되는 본 발명은 비트-병렬 구조를 시스톨릭 어레이에 적용할 수 있는 이점이 있다. 이에 따라, 본 발명은 비트-시리얼 구조 기반의 시스톨릭 어레이 대비 면적 및 전력의 효율이 높은 하드웨어 구현이 가능하며, 정밀도 측면에서도 기본 연산 유닛을 조정하여 충분한 정밀도를 제공할 수 있는 이점이 있다.
또한, 본 발명은 벡터 단위 누적을 통해 비트-병렬 구조의 구현 오버헤드(overhead)를 최소화하여 면적 및 전력의 효율을 더욱 향상시킬 수 있는 이점이 있다.
즉, 비트-병렬 구조 기반의 시스톨릭 어레이는 비트-시리얼 구조 기반의 시스톨릭 어레이 보다 비트 정밀도의 커버 범위는 낮지만 이는 실제 1bit 단위의 가변이 딥러닝 신경망 성능 상 큰 차이를 보이지 않기 때문에, 하드웨어의 면적 및 전력 효율을 고려했을 때, 비트-병렬 구조 기반의 시스톨릭 어레이 구조가 반드시 필요하다.
이에 따라, 본 발명은 기본적인 비트-병렬 구조 기반의 가변 정밀도 연산을 적용하여 전체 시스톨릭 어레이 하드웨어의 면적 및 전력 효율을 크게 증가시킬 수 있을 뿐 아니라, 단순한 비트-병렬 구조 구현과 비교하여, 벡터 단위 연산 누적을 통해 가변 정밀도 연산 구현을 위한 하드웨어 오버헤드를 감소시킬 수 있는 이점이 있다.
즉, 본 발명은 비트-병렬 가변 정밀도 연산을 적용한 효율적인 시스톨릭 어레이 구조를 가지며, 벡터 단위 누적을 통해 비트-병렬 가변 정밀도 시스톨릭 어레이의 MUX 오버헤드를 최소화하여 기본적인 비트-병렬 가변 정밀도 연산 적용 대비 면적 및 전력 측면의 효율성을 향상시킬 수 있는 이점이 있다.
또한, 본 발명은 딥러닝 신경망 등에 따른 딥러닝 관련 연산을 처리하는 전자 장치(가령, 모바일, 에지, 또는 서버 등)에 대해 시스톨릭 어레이 기반 하드웨어를 적용할 수 있는 이점이 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 장치(100)의 대략적인 블록 구성도를 나타낸다.
도 2는 딥러닝 신경망 모델 중 하나인 MobileNet을 고정 비트-정밀도로 양자화(quantization) 했을 때와 가변(flexible) 비트-정밀도로 양자화 했을 때의 처리 시간(latency)과 정확도(top-1 accuracy)에 대한 성능 비교 그래프를 나타낸다.
도 3는 동일한 딥러닝 신경망 내에서 레이어 별로 비트-정밀도를 가변하는 일 예를 나타낸다.
도 4는 비트-시리얼 가변 정밀도 연산이 적용된 종래의 시스톨릭 어레이 구조에 대한 일 예를 나타낸다.
도 5는 도 4에서 처리 요소(Processing Element, PE)에 대한 대락적인 블록 구성도를 나타낸다.
도 6은 본 발명의 일 실시예에 따른 시스톨릭 어레이 기반의 하드웨어에 대한 구조에 대한 일 예를 나타낸다.
도 7은 도 6에서 처리 요소(Processing Element, PE) 및 PE의 column(PC)에 대한 상세 구성과, 그 동작에 대한 일 예를 나타낸다.
본 발명의 상기 목적과 수단 및 그에 따른 효과는 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며, 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 경우에 따라 복수형도 포함한다. 본 명세서에서, "포함하다", "구비하다", "마련하다" 또는 "가지다" 등의 용어는 언급된 구성요소 외의 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
본 명세서에서, "또는", "적어도 하나" 등의 용어는 함께 나열된 단어들 중 하나를 나타내거나, 또는 둘 이상의 조합을 나타낼 수 있다. 예를 들어, "A 또는 B", "A 및 B 중 적어도 하나"는 A 또는 B 중 하나만을 포함할 수 있고, A와 B를 모두 포함할 수도 있다.
본 명세서에서, "예를 들어" 등에 따르는 설명은 인용된 특성, 변수, 또는 값과 같이 제시한 정보들이 정확하게 일치하지 않을 수 있고, 허용 오차, 측정 오차, 측정 정확도의 한계와 통상적으로 알려진 기타 요인을 비롯한 변형과 같은 효과로 본 발명의 다양한 실시 예에 따른 발명의 실시 형태를 한정하지 않아야 할 것이다.
본 명세서에서, 어떤 구성요소가 다른 구성요소에 '연결되어' 있다거나 '접속되어' 있다고 기재된 경우, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성 요소에 '직접 연결되어' 있다거나 '직접 접속되어' 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해될 수 있어야 할 것이다.
본 명세서에서, 어떤 구성요소가 다른 구성요소의 '상에' 있다거나 '접하여' 있다고 기재된 경우, 다른 구성요소에 상에 직접 맞닿아 있거나 또는 연결되어 있을 수 있지만, 중간에 또 다른 구성요소가 존재할 수 있다고 이해되어야 할 것이다. 반면, 어떤 구성요소가 다른 구성요소의 '바로 위에' 있다거나 '직접 접하여' 있다고 기재된 경우에는, 중간에 또 다른 구성요소가 존재하지 않은 것으로 이해될 수 있다. 구성요소 간의 관계를 설명하는 다른 표현들, 예를 들면, '~사이에'와 '직접 ~사이에' 등도 마찬가지로 해석될 수 있다.
본 명세서에서, '제1', '제2' 등의 용어는 다양한 구성요소를 설명하는데 사용될 수 있지만, 해당 구성요소는 위 용어에 의해 한정되어서는 안 된다. 또한, 위 용어는 각 구성요소의 순서를 한정하기 위한 것으로 해석되어서는 안되며, 하나의 구성요소와 다른 구성요소를 구별하는 목적으로 사용될 수 있다. 예를 들어, '제1구성요소'는 '제2구성요소'로 명명될 수 있고, 유사하게 '제2구성요소'도 '제1구성요소'로 명명될 수 있다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일 실시예를 상세히 설명하도록 한다.
도 1은 본 발명의 일 실시예에 따른 장치(100)의 대략적인 블록 구성도를 나타낸다.
본 발명의 일 실시예에 따른 장치(100)(이하, "본 장치"라 지칭함)는 시스톨릭 어레이(systolic array) 구조를 포함하며, 해당 시스톨릭 어레이 구조를 통해 다수의 MAC(multiply and accumulation) 연산을 수행하는 장치이다. 특히, 본 장치(100)는 시스톨릭 어레이 구조에서 벡터 단위의 누적을 통해 가변 정밀도 연산 구현의 하드웨어 면적 및 전력소모 오버헤드(overhead)를 줄일 수 있다.
일례로, 본 장치(100)가 수행하는 연산으로는 딥러닝 관련 연산 등이 포함된 수 있으나, 이에 한정되는 것은 아니다. 다만, 딥러닝 관련 연산을 수행하는 경우, 본 장치(100)는 딥러닝을 위한 인공신경망(Artificial Neural Network)(이하, "딥러닝 신경망"이라 지칭함)을 포함할 수 있다.
예를 들어, 딥러닝 신경망은 Deep Neural Network(DNN), Convolutional Neural Network(CNN), Recurrent Neural Network(RNN), Restricted Boltzmann Machine(RBM), Deep Belief Network(DBN), 또는 Deep Q-Networks 등을 포함할 수 있으나, 이에 한정되는 것은 아니다.
이때, 딥러닝 신경망은 입력층(input layer), 은닉층(hidden layer) 및 출력층(output layer)를 각각 포함하며, 입력층, 은닉층 및 출력층은 각각 적어도 하나의 노드(또는 "뉴런"이라고도 지칭됨)를 포함한다. 물론, 딥러닝 신경망이므로, 은닉층은 복수개의 층으로 이루어진다. 하나의 노드에는 적어도 2개의 서로 다른 종류가 입력되는데, 제1 종류(즉, 제1 입력)는 가중치(weight)("W"라고도 지칭)이며, 제2 종류(즉, 제2 입력)는 통상적으로 입력(input)("I"라고도 지칭)이라고 지칭하는 것이다. 이때, 제2 종류의 입력(I)은 입력층의 노드로부터 출력되어 첫번째 은닉층의 노드에 입력되는 것이거나, 어느 한 은닉층의 노드에 대해 해당 노드의 값으로 계산된 것으로서("activation" 또는 "A"라고도 지칭함) 다음 은닉층의 노드 또는 출력층의 노드에 입력되는 것일 수 있다.
물론, CNN 등과 같은 이미지를 처리하는 딥러닝 신경망의 경우, 하나의 노드는 컨볼루션층(convolution layer) 또는 풀링층(pooling layer) 등에 포함된 피처맵(feature map) 또는 필터(또는 "커널"이라고도 지칭됨)의 매트릭스에서 하나의 원소를 지칭할 수 있다. 이 경우, 제1 종류인 가중치(W)는 필터의 원소가 가지는 값일 수 있으며, 제2 종류의 입력(I)은 입력층의 노드로부터 출력되어 첫번째 은닉층의 필터의 노드에 입력되는 것이거나, 어느 한 은닉층의 피처맵의 노드에 대해 해당 노드의 값으로 계산된 것으로서("activation" 또는 "A"라고도 지칭함) 다음 은닉층의 필터의 노드 또는 출력층의 노드에 입력되는 것일 수 있다.
또한, 딥러닝 관련 연산은 딥러닝 신경망의 히든층 또는 출력층의 각 노드에서 딥러닝과 관련되어 수행되는 연산으로서, 딥러닝의 학습(learning) 과정, 검증(validation) 과정, 테스트(test) 과정, 또는 인퍼런스(inference) 과정 등에 따라 수행되는 연산일 수 있다. 즉, 딥러닝 관련 연산은 딥러닝의 히든층 또는 출력층의 각 노드에서, 가중치(W)와 입력(I)에 대한 곱셈 연산과, 이러한 곱셈 연산 결과들에 대한 덧셈 연산인 MAC(multiply and accumulation) 연산 등을 포함할 수 있다.
본 장치(100)는 컴퓨팅이 가능한 전자 장치로서, 시스톨릭 어레이 구조에서 딥러닝 연산 시에 입력되는 2개 종류의 가중치(W) 및 입력(I)에 대한 MAC 연산 시에 벡터 단위의 누적을 통해 가변 정밀도 연산을 구현할 수 있다.
예를 들어, 전자 장치는 데스크탑 PC(desktop personal computer), 랩탑 PC(laptop personal computer), 태블릿 PC(tablet personal computer), 넷북 컴퓨터(netbook computer), 워크스테이션(workstation), PDA(personal digital assistant), 스마트폰(smart phone), 스마트패드(smart pad), 또는 휴대폰(mobile phone) 등의 범용 컴퓨팅 시스템이거나, 임베디드 리눅스(Embeded Linux) 등을 기반으로 구현된 전용의 임베디드 시스템일 수 있으나, 이에 한정되는 것은 아니다.
이러한 본 장치(100)는, 도 1에 도시된 바와 같이, 입력부(110), 통신부(120), 디스플레이(130), 메모리(140) 및 제어부(150)를 포함할 수 있다. 이때, 시스톨릭 어레이(systolic array) 구조 기반의 딥러닝 관련 연산을 위해, 메모리(140) 및 제어부(150)는 필수적인 구성에 해당할 수 있으며, 입력부(110), 통신부(120) 및 디스플레이(130)는 추가적인 구성에 해당할 수 있다.
입력부(110)는 다양한 사용자의 입력에 대응하여, 입력데이터를 발생시키며, 다양한 입력수단을 포함할 수 있다. 예를 들어, 입력부(110)는 키보드(key board), 키패드(key pad), 돔 스위치(dome switch), 터치 패널(touch panel), 터치 키(touch key), 터치 패드(touch pad), 마우스(mouse), 메뉴 버튼(menu button) 등을 포함할 수 있으나, 이에 한정되는 것은 아니다.
통신부(120)는 단말(200) 등 다른 장치와의 통신을 수행하는 구성이다. 가령, 통신부(120)는 딥러닝 관련 연산을 위해 필요한 정보 또는 딥러닝 관련 연산의 결과 정보 등에 대해 다른 장치와 송수신할 수 있다. 예를 들어, 통신부(120)는 5G(5th generation communication), LTE-A(long term evolution-advanced), LTE(long term evolution), 블루투스, BLE(bluetooth low energy), NFC(near field communication), 와이파이(WiFi) 통신 등의 무선 통신을 수행하거나, 케이블 통신 등의 유선 통신을 수행할 수 있으나, 이에 한정되는 것은 아니다.
디스플레이(130)는 다양한 영상 데이터를 화면으로 표시하는 구성으로서, 비발광형 패널이나 발광형 패널로 구성될 수 있다. 가령, 디스플레이(130)는 벡터 단위의 누적을 통한 가변 정밀도 연산 처리 또는 딥러닝 관련 연산 등에 대한 다양한 영상 데이터를 표시할 수 있다. 예를 들어, 디스플레이(130)는 액정 디스플레이(LCD; liquid crystal display), 발광 다이오드(LED; light emitting diode) 디스플레이, 유기 발광 다이오드(OLED; organic LED) 디스플레이, 마이크로 전자기계 시스템(MEMS; micro electro mechanical systems) 디스플레이, 또는 전자 종이(electronic paper) 디스플레이 등을 포함할 수 있으나, 이에 한정되는 것은 아니다. 또한, 디스플레이(130)는 입력부(120)와 결합되어 터치 스크린(touch screen) 등으로 구현될 수 있다.
메모리(140)는 본 장치(100)의 동작에 필요한 각종 정보를 저장한다. 가령, 메모리(140)의 저장 정보로는 딥러닝 신경망에 관련된 정보, 딥러닝 관련 연산을 위해 필요한 정보, 후술할 시스톨릭 어레이 구조(151)의 동작에 관련된 프로그램 정보 등이 포함될 수 있으나, 이에 한정되는 것은 아니다.
예를 들어, 메모리(140)는 그 유형에 따라 하드디스크 타입(hard disk type), 마그네틱 매체 타입(magnetic media type), CD-ROM(compact disc read only memory), 광 기록 매체 타입(optical Media type), 자기-광 매체 타입(magneto-optical media type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 플래시 저장부 타입(flash memory type), 롬 타입(read only memory type), 또는 램 타입(random access memory type) 등을 포함할 수 있으나, 이에 한정되는 것은 아니다. 또한, 메모리(140)는 그 용도/위치에 따라 캐시(cache), 버퍼, 주기억장치, 또는 보조기억장치이거나 별도로 마련된 저장 시스템일 수 있으나, 이에 한정되는 것은 아니다.
제어부(150)는 본 장치(100)의 다양한 제어 동작을 수행할 수 있다. 즉, 제어부(150)는 본 장치(100)의 나머지 구성, 즉 입력부(110), 통신부(120), 디스플레이(130) 및 메모리(140) 등의 동작을 제어하는 제1 제어 기능을 수행할 수 있다. 또한, 제어부(150)는 후술할 시스톨릭 어레이 구조(151)의 동작에 대한 제2 제어 기능을 수행할 수 있다.
제어부(150)는 하드웨어인 프로세서(processor) 또는 해당 프로세서에서 수행되는 소프트웨어인 프로세스(process) 등을 포함할 수 있다. 이때, 제어부(150)는 복수의 프로세서를 포함할 수 있다. 즉, 제1 프로세서는 제1 제어 기능을 수행할 수 있으며, 제1 또는 제2 프로세서는 제2 제어 기능을 기능할 수 있다.
예를 들어, 제1 프로세서는 마이크로프로세서(Microprocessor), 중앙처리장치(Central Processing Unit: CPU), 프로세서 코어(Processor Core), 멀티프로세서(Multiprocessor), ASIC(Application-Specific Integrated Circuit), 또는 FPGA(Field Programmable Gate Array) 등을 포함할 수 있으며, 제2 프로세서는 AI accelerator, NPU(Neural Processing Unit), TPU(Tensor Processing Unit), 또는 GPU(Graphic Processing Unit) 등을 포함할 수 있으나, 이에 한정되는 것은 아니다.
한편, 본 발명의 일 실시예에 따른 시스톨릭 어레이 기반의 하드웨어(이하, "본 시스톨릭 어레이 구조"라 지칭함)(151)는 벡터 단위의 누적을 통해 가변 정밀도 연산을 수행하는 시스톨릭 어레이 구조이다. 즉, 본 시스톨릭 어레이 구조(151)는 딥러닝 관련 연산 등의 연산 시에 2종류의 입력인 Differential Weight 및 Differential Input를 이용한 다수의 MAC(multiply and accumulation) 연산 시에 벡터 단위의 누적을 통해 가변 정밀도 연산을 구현할 수 있다.
이러한 본 시스톨릭 어레이 구조(151)에 따라 제2 제어 기능이 수행될 수 있으며, 제어부(150)의 제1 또는 제2 프로세서는 본 시스톨릭 어레이 구조(151)를 포함할 수 있다. 즉, 제1 또는 제2 프로세서는 딥러닝 관련 연산 등의 연산을 위해 본 시스톨릭 어레이 구조(151)를 포함할 수 있다.
도 2는 딥러닝 신경망 모델 중 하나인 MobileNet을 고정 비트-정밀도로 양자화(quantization) 했을 때와 가변(flexible) 비트-정밀도로 양자화 했을 때의 처리 시간(latency)과 정확도(top-1 accuracy)에 대한 성능 비교 그래프를 나타낸다.
도 2를 참조하면, 가변 비트-정밀도 양자화를 적용한 경우(노란색)가 고정 비트-정밀도 양자화를 적용한 경우(파란색)보다 동일한 정확도를 가지면서 더 적은 처리 시간을 가지는 것을 알 수 있다. 즉, 하나의 딥러닝 신경망 모델 내에서도 파라미터 별로 다른 비트-정밀도를 적용하는 것이 고정된 비트-정밀도를 전체 파라미터에 적용하는 것보다 효율적이다.
도 3는 동일한 딥러닝 신경망 내에서 레이어 별로 비트-정밀도를 가변하는 일 예를 나타낸다.
도 3을 참조하면, 레이어 3(Layer 3)에서는 3bit 가중치(weight) 및 5bit 액티베이션(activation)의 입력 데이터를 사용하고, 레이어 4(Layer 4)에서는 6bit 가중치(weight) 및 7bit 액티베이션(activation)의 입력 데이터를 사용한다. 즉, 레이어 4가 레이어 3 보다 더 높은 비트-정밀도를 요구하고 있으며, 레이어 4의 비트-정밀도를 낮추는 것이 결과 정확도(top-1 accuracy)를 더 감소시킬 수 있다. 다만, 이러한 가변 비트-정밀도를 구현하기 위해서는 특별한 하드웨어 구조가 필요하다.
도 4는 비트-시리얼 가변 정밀도 연산이 적용된 종래의 시스톨릭 어레이 구조에 대한 일 예를 나타내며, 도 5는 도 4에서 처리 요소(Processing Element, PE)에 대한 대락적인 블록 구성도를 나타낸다.
도 4를 참조하면, 종래의 시스톨릭 어레이 구조에서는 연산을 위한 처리 요소(Processing Element, PE)들이 2차원 배열로 상호 연결되어 어레이를 이룬다. 이러한 어레이를 구성하는 각 PE(Processing Element)에서는, 도 5에 도시된 바와 같이, 비트-시리얼 구조 기반의 MAC 연산을 수행한다.
이러한 비트-시리얼 기반의 시스톨릭 어레이 구조의 경우, 정밀도를 1bit 단위로 가변이 가능하다. 하지만, 모든 연산을 시리얼(Serial)하게 누적하는 방식이므로, 이를 위한 레이턴시 소모가 크고, MAC 연산을 위한 조합 논리 회로(Combinational Logic)를 시리얼하게 펼쳐 놓아야 하므로, 최적화가 되지 않아서 면적의 효율이 낮은 문제점이 있다.
도 6은 본 발명의 일 실시예에 따른 시스톨릭 어레이 기반의 하드웨어에 대한 구조에 대한 일 예를 나타내며, 도 7은 도 6에서 처리 요소(Processing Element, PE) 및 PE의 column(PC)에 대한 상세 구성과, 그 동작에 대한 일 예를 나타낸다.
본 시스톨릭 어레이 구조(151)는 벡터 누적 기반의 비트-병렬 구조를 통해 가변 정밀도 연산을 구현한다. 이러한 본 시스톨릭 어레이 구조(151)는, 도 6에 도시된 바와 같이, 연산을 위한 처리 요소(Processing Element, PE)가 2차원 배열로 상호 연결된 PE 어레이(PEA)와, PE 어레이(PEA)로 입력되는 제1 및 제2 입력에 대한 스케줄링을 담당하는 제1 및 제2 입력 버퍼(IB1, IB2)와, PE들의 열에 해당하는 각 PE column(PC)의 부분합(partial sum)에 대한 연산 결과를 누적하여 저장하는 부분합 버퍼(partial buffer, PSB)를 각각 포함한다. 물론, 본 시스톨릭 어레이 구조(151)는 각 버퍼(IB1, IB2, PSB)의 동작을 제어하는 버퍼 컨트롤러(buffer controller, BC)를 더 포함할 수 있다. 또한, 각 PC는 해당 PC 내에 포함된 각 PE에서 전달되는 부분합(partial sum, PS)을 누적하도록 Shift 및 Add 기능을 가지는 누적부(SA)를 포함한다. 즉, 각 PE에서 얻어진 곱셈 결과들은 각 PE 내에서 누적되지 않고 그대로 PS로 전달되어 최종적으로 SA에서 한꺼번에 누적된다.
이때, 각 PE에서, 곰셉기는 제1 및 제2 입력에 대해 곱셈 연산을 수행하며, 이러한 곱셈기의 결과에 대해 누산기가 누적 덧셈 연산을 수행한다. 또한, 이러한 PE가 어레이 형태로 구성되어, 인접한 다음 PE(즉, 동일한 PC 내의 하측 PE)로 연산 결과인 산를 쉬프트(Shift)한다.
이러한 본 시스톨릭 어레이 구조(151)는 MAC 연산이 주로 포함되는 행렬 연산의 수행에 효율적이며, 데이터 이동 에너지를 고려한 구조이기 때문에, 행렬 연산에 기반하고 데이터 이동을 줄이는 것이 중요한 딥러닝 신경망 등의 딥러닝 관련 연산을 위한 하드웨어 구조로 사용될 수 있다.
한편, 시스톨릭 어레이 구조는 두 입력을 모두 시스톨릭하게 사용하는 2차원 시스톨릭(2D-systolic) 구조와, 하나의 입력만을 시스톨릭하게 사용하는 1차원 시스톨릭(1D-systolic 구조)가 있다. 이때, 본 시스톨릭 어레이 구조(151)는 1D-systolic 구조이며, 각 PE에서 제1 및 제2 입력 중에 어느 하나(도 6 및 도 7에서는 제1 입력)에 대해 해당 입력값이 Pre-load되어 세팅(setting)이 되어 있으며, 다른 하나(도 6 및 도 7에서는 제2 입력)에 대해서만 시스톨릭(systolic)하게 입력된다. 이러한 1D-systolic 구조에 따라, 시스톨릭 처리를 위해 A00~A0N 등과 같은 제2 입력들이 동일한 클락 주기(clock cycle)에 입력되지 않고 A00부터 순차적으로 1 클락 주기씩 딜레이(delay)되어 A0N까지 입력되며, 이후 A10~A1N도 계속해서 순차적으로 딜레이되어 입력될 수 있다.
일례로, 하나의 PE에 곱셈기 및 누산기가 1개가 마련된 경우를 가정한다. 이 경우, 제1 PE 및 제2 PE가 상하 방향으로 인접하되, W00의 가중치가 제1 PE에 제1 입력으로 Pre-load되어 세팅되고, A00의 activation이 시스톨릭하게 제1 PE의 제2 입력으로 들어오는 경우를 가정할 수 있다. 이 경우, 제1 PE의 곱셈기는 W00 제1 입력과 A00 제2 입력에 대해 곱셈 연산(W00 × A00)을 수행하며, 제1 PE의 누산기는 해당 곱셈기의 결과(R0 = W00 × A00)에 대해 이전의 부분 합(partial sum)(즉, 제1 부분 합)과 누적 덧셈 연산을 수행한 후 그 누적 덧셈 결과인 부분 합(partial sum)(즉, 제2 부분 합)을 다음의 제2 PE의 덧셈기로 전달한다. 이에 따라, 제2 PE는 Pre-load되어 세팅된 제1 입력과, 시스톨릭하게 들어오는 제2 입력을 이용하여, 상술한 제1 PE와 동일한 동작을 수행한다.
다만, 도 7을 참조하면, 각 PE는 비트 단위로 곱셈 및 누적 덧셈 연산을 수행하는 다수의 소단위 PE(PPE)를 포함한다. 각 PPE는 2비트 단위에 대한 곱셈 연산을 수행하는 곱셈기(도 7에서 ×로 표시함)와, 비트 단위에 대한 누적 덧셈 연산을 수행하는 누산기(도 7에서 +로 표시하였으며, 복수개로 표시함)를 포함한다.
즉, A bit × A bit 연산(단, A는 2의 N 제곱수이며, N은 자연수)(가령, 2 bit × 2 bit)을 기본 연산 유닛으로 할 경우, M비트(단, M은 2의 N' 제곱수이며, N'는 자연수) 단위에 대한 곱셈 연산을 A비트 단위(가령, 2비트 단위)의 곱셈 연산으로 치환할 수 있다. 이러한 M비트 단위에 대한 곱셈 연산이 A비트 단위(가령, 2비트 단위)의 곱셈 연산으로 치환됨에 따라, M비트×M비트의 곱셈은 A비트×A비트(가령, 2비트×2비트) 곱셈 M2/A2개(case)(가령, M2/22개)로 치환되고, 이에 따라 동일한 결과를 얻기 위하여 각 PE는 M2/A2개(가령, M2/22개)의 PPE로 구성된다.
일례로, 도 7을 참조하면, 2 bit × 2 bit 연산를 기본 연산 유닛으로 하면서 M=8인 경우, 8비트 단위에 대한 곱셈 연산을 2비트 단위의 곱셈 연산으로 치환하였으므로, 도 7의 우상단 그림과 같이 8비트×8비트 곱셈은 2비트×2비트 곱셈 16개(case)로 치환되고, 이에 따라 동일한 결과를 얻기 위해 각 PE는 16개의 PPE로 구성된다.
PC는 여러 개의 PE와 1개의 SA로 구성되며, 각 PE에서 얻어진 16개의 4비트(2비트×2비트) 곱셈 결과들은 각각의 PE내에서 누적되지 않고 그대로 아래의 PE에 PS로 전달되며 최종적으로 SA에서 한 번의 누적만 수행한다. 이때, PC 내의 PE 개수에 따라 SA에 입력되는 최종 PS의 비트 수가 결정되고, 만약 PC내의 PE 개수가 16개(즉, M2/A2개, 가령 M2/22개)라고 하면 최종 PS 16개의 비트 수는 8비트(4비트+4비트 : 2비트×2비트 연산 결과 4비트에 16개 PE 동안 누적될 때의 오버플로우 4비트를 고려)가 된다. SA는 16개의 8비트 PS들을 먼저 각각의 자릿수에 맞게 시프트(shift)한 후 전체를 더하는 구조이며, 16개 PS의 각 시프트(shift) 횟수는 {0,2,4,6}, {2,4,6,8}, {4,6,8,12}, {6,8,10,12}이다. 이때, 시프트(shift) 횟수는 PC내 PE 개수와는 무관하게 일정하다.
도 4 및 도 5의 비트-시리얼 기반의 시스톨릭 어레이 구조와 비교했을 때, 본 시스톨릭 어레이 구조(151)는 PE 어레이(PEA)의 한 column 단위(즉, PC 단위)의 구현에 차이가 있다. 즉, 도 7의 우측에 도시된 바와 같이, 종래의 비트-병렬 기반 가변 정밀도 연산에는 시프트(Shift) 동작 가변을 위한 멀티플렉서(multiplexer, MUX)의 오버헤드(overhead)가 필요한데, 이를 각 PE마다 수행하게 되면 전체적인 MUX의 오버헤드가 매우 커지게 된다.
반면, 본 시스톨릭 어레이 구조(151)는 기본 연산 유닛에 해당하는 각 PE(가령, 도 7에서 2bit × 2bit)의 연산 결과들을 우선 벡터 단위로 L개(단, L은 2이상의 자연수)(가령, 도 7에서 L=16) 누적하고, Shift를 통한 조합은 Column 단위(즉, PC 단위)의 연산이 완료된 이후에 수행한다. 그 결과, PE 단위로 MUX 오버헤드가 발생하던 것을 PC 단위로 발생함에 따라, 전체적인 MUX 오버헤드를 줄일 수 있다.
상술한 바와 같이 구성되는 본 발명은 비트-병렬 구조를 시스톨릭 어레이에 적용할 수 있는 이점이 있다. 이에 따라, 본 발명은 비트-시리얼 구조 기반의 시스톨릭 어레이 대비 면적 및 전력의 효율이 높은 하드웨어 구현이 가능하며, 정밀도 측면에서도 기본 연산 유닛을 조정하여 충분한 정밀도를 제공할 수 있는 이점이 있다.
또한, 본 발명은 벡터 단위 누적을 통해 비트-병렬 구조의 구현 오버헤드(overhead)를 최소화하여 면적 및 전력의 효율을 더욱 향상시킬 수 있는 이점이 있다. 즉, 비트-병렬 구조 기반의 시스톨릭 어레이는 비트-시리얼 구조 기반의 시스톨릭 어레이 보다 비트 정밀도의 커버 범위는 낮지만 이는 실제 1bit 단위의 가변이 딥러닝 신경망 성능 상 큰 차이를 보이지 않기 때문에, 하드웨어의 면적 및 전력 효율을 고려했을 때, 비트-병렬 구조 기반의 시스톨릭 어레이 구조가 반드시 필요하다. 이에 따라, 본 발명은 기본적인 비트-병렬 구조 기반의 가변 정밀도 연산을 적용하여 전체 시스톨릭 어레이 하드웨어의 면적 및 전력 효율을 크게 증가시킬 수 있을 뿐 아니라, 단순한 비트-병렬 구조 구현과 비교하여, 벡터 단위 연산 누적을 통해 가변 정밀도 연산 구현을 위한 하드웨어 오버헤드를 감소시킬 수 있는 이점이 있다.
또한, 본 발명은 딥러닝 신경망 등에 따른 딥러닝 관련 연산을 처리하는 전자 장치(가령, 모바일, 에지, 또는 서버 등)에 대해 시스톨릭 어레이 기반 하드웨어를 적용할 수 있는 이점이 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되지 않으며, 후술되는 청구범위 및 이 청구범위와 균등한 것들에 의해 정해져야 한다.
100: 장치 110: 입력부
120: 통신부 130: 디스플레이
140: 메모리 150: 제어부
151: 시스톨릭 어레이 구조

Claims (18)

  1. 다수의 PE(Processing Element)가 연결된 PE 어레이를 포함하는 시스톨릭 어레이(systolic array) 구조로서,
    상기 각 PE는 비트 단위로 곱셈 및 누적 덧셈 연산을 수행하는 다수의 PPE를 포함하는 비트-병렬 구조가 적용되어, 벡터 단위의 누적을 통해 가변 정밀도 연산을 수행하는 구조.
  2. 제1항에 있어서,
    상기 각 PE의 연산 결과들을 벡터 단위로 누적하고, 상기 PE들의 열(Column)에 해당하는 각 PC의 연산이 완료된 이후에 쉬프트(Shift)를 통한 조합이 수행되는 구조.
  3. 제1항에 있어서,
    하나의 PE 내에서 상기 각 PPE는,
    2비트 단위에 대한 곱셈 연산을 수행하는 곱셈기; 및
    비트 단위에 대한 누적 덧셈 연산을 수행하는 누산기;를 포함하는 구조.
  4. 제3항에 있어서,
    M비트(단, M은 2의 N 제곱수이며, N은 자연수) 단위에 대한 곱셈 연산이 2비트 단위의 곱셈 연산으로 치환되며,
    하나의 PE 내에서 상기 각 PPE는 M2/4개의 PPE를 포함하는 구조.
  5. 제4항에 있어서,
    상기 PE들의 열에 해당하는 각 PC는 해당 PC 내에 포함된 각 PE에서 전달되는 부분합(partial sum, PS)을 누적하는 누적부를 더 포함하며,
    상기 각 PC에서, 해당 PC 내의 각 PE에서 도출 곱셈 결과들이 각 PE 내에서 누적되지 않고 상기 PS로 전달되어 상기 누적부에서 한꺼번에 누적되는 구조.
  6. 제5항에 있어서,
    상기 SA는 M2/4개의 M비트 PS들을 각 자릿수에 맞게 시프트(shift)한 후에 더하는 구조.
  7. 제1항에 있어서,
    상기 각 PE에 입력되는 제1 및 제2 입력에 대해, 상기 제1 입력이 Pre-load되어 세팅되고, 상기 제2 입력은 시스톨릭하게 입력되는 구조.
  8. 제7항에 있어서,
    상기 가변 정밀도 연산은 딥러닝 관련 연산인 구조.
  9. 제8항에 있어서,
    상기 제1 입력은 가중치(weight)이고,
    상기 제2 입력은 입력층의 노드로부터 출력된 것이거나, 어느 한 은닉층의 노드에서 계산되어 다음 은닉층의 노드 또는 출력층의 노드에 입력되는 activation인 구조.
  10. 메모리; 및
    상기 메모리에 저장된 정보를 이용하는 프로세서;를 포함하고,
    상기 프로세서는 다수의 PE(Processing Element)가 연결된 PE 어레이를 구비한 시스톨릭 어레이(systolic array) 구조를 포함하며,
    상기 각 PE는 비트 단위로 곱셈 및 누적 덧셈 연산을 수행하는 다수의 PPE를 포함하는 비트-병렬 구조가 적용되어, 벡터 단위의 누적을 통해 가변 정밀도 연산을 수행하는 장치.
  11. 제10항에 있어서,
    상기 시스톨릭 어레이 구조는 상기 각 PE의 연산 결과들을 벡터 단위로 누적하고, 상기 PE들의 열(Column)에 해당하는 각 PC의 연산이 완료된 이후에 쉬프트(Shift)를 통한 조합을 수행하는 장치.
  12. 제10항에 있어서,
    하나의 PE 내에서 상기 각 PPE는,
    2비트 단위에 대한 곱셈 연산을 수행하는 곱셈기; 및
    비트 단위에 대한 누적 덧셈 연산을 수행하는 누산기;를 포함하는 장치.
  13. 제12항에 있어서,
    M비트(단, M은 2의 N 제곱수이며, N은 자연수) 단위에 대한 곱셈 연산이 2비트 단위의 곱셈 연산으로 치환되며,
    하나의 PE 내에서 상기 각 PPE는 M2/4개의 PPE를 포함하는 장치.
  14. 제13항에 있어서,
    상기 PE들의 열에 해당하는 각 PC는 해당 PC 내에 포함된 각 PE에서 전달되는 부분합(partial sum, PS)을 누적하는 누적부를 더 포함하며,
    상기 각 PC에서, 해당 PC 내의 각 PE에서 도출 곱셈 결과들이 각 PE 내에서 누적되지 않고 상기 PS로 전달되어 상기 누적부에서 한꺼번에 누적되는 장치.
  15. 제14항에 있어서,
    상기 SA는 M2/4개의 M비트 PS들을 각 자릿수에 맞게 시프트(shift)한 후에 더하는 장치.
  16. 제10항에 있어서,
    상기 각 PE에 입력되는 제1 및 제2 입력에 대해, 상기 제1 입력이 Pre-load되어 세팅되고, 상기 제2 입력은 시스톨릭하게 입력되는 장치.
  17. 제16항에 있어서,
    상기 가변 정밀도 연산은 딥러닝 관련 연산인 장치.
  18. 제17항에 있어서,
    상기 제1 입력은 가중치(weight)이고,
    상기 제2 입력은 입력층의 노드로부터 출력된 것이거나, 어느 한 은닉층의 노드에서 계산되어 다음 은닉층의 노드 또는 출력층의 노드에 입력되는 activation인 장치.
KR1020220182735A 2021-12-23 2022-12-23 벡터 단위 누적 기반 비트-병렬 가변 정밀도를 이용하는 시스톨릭 어레이 구조 및 장치 KR20230096903A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210186543 2021-12-23
KR20210186543 2021-12-23

Publications (1)

Publication Number Publication Date
KR20230096903A true KR20230096903A (ko) 2023-06-30

Family

ID=86960089

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220182735A KR20230096903A (ko) 2021-12-23 2022-12-23 벡터 단위 누적 기반 비트-병렬 가변 정밀도를 이용하는 시스톨릭 어레이 구조 및 장치

Country Status (1)

Country Link
KR (1) KR20230096903A (ko)

Similar Documents

Publication Publication Date Title
US20240005135A1 (en) Accelerating neural networks with low precision-based multiplication and exploiting sparsity in higher order bits
JP7325158B2 (ja) ニューラル・ネットワーク・コアにおける動的精度のためのデータ表現
CN117273096A (zh) 在硬件中执行矩阵乘法
KR102655950B1 (ko) 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치
KR20190107091A (ko) 계산 장치 및 방법
US11593628B2 (en) Dynamic variable bit width neural processor
US20200356837A1 (en) Fast deep learning fully-connected inference
EP4109345A1 (en) Methods and apparatus to load data within a machine learning accelerator
CN111033462A (zh) 在基于处理器的系统中使用矩阵处理器提供高效浮点运算
US20210174259A1 (en) Deep learning numeric data and sparse matrix compression
Sundaram et al. FreFlex: A High-Performance Processor for Convolution and Attention Computations via Sparsity-Adaptive Dynamic Frequency Boosting
KR20220114228A (ko) 프로세서, 프로세서의 동작 방법 및 이를 포함한 전자 장치
KR20230096903A (ko) 벡터 단위 누적 기반 비트-병렬 가변 정밀도를 이용하는 시스톨릭 어레이 구조 및 장치
CN116468078A (zh) 面向人工智能芯片的智能引擎处理方法和装置
CN115114927A (zh) 一种模型训练方法和相关装置
US11537859B2 (en) Flexible precision neural inference processing unit
CN109308194B (zh) 用于存储数据的方法和装置
CN111198714B (zh) 重训练方法及相关产品
CN109375952B (zh) 用于存储数据的方法和装置
US20230206052A1 (en) Systolic array structure and apparatus using differential value
KR20230096905A (ko) 디퍼런셜 값을 이용하는 시스톨릭 어레이 구조 및 장치
KR102553941B1 (ko) 팝카운트 기반 딥러닝 신경망 연산 방법, 곱셈 누산기 및 장치
WO2024065530A1 (en) Methods and apparatus to perform artificial intelligence-based sparse computation based on hybrid pattern and dynamic encoding
JP7506276B2 (ja) 半導体ハードウェアにおいてニューラルネットワークを処理するための実装および方法
US20220317973A1 (en) Pop count-based deep learning neural network computation method, multiply accumulator and device