KR102561205B1 - 분산 sram 아키텍쳐를 가지는 모바일넷 하드웨어 가속기 및 상기 가속기의 채널 정상 데이터 플로우 설계 방법 - Google Patents

분산 sram 아키텍쳐를 가지는 모바일넷 하드웨어 가속기 및 상기 가속기의 채널 정상 데이터 플로우 설계 방법 Download PDF

Info

Publication number
KR102561205B1
KR102561205B1 KR1020210049728A KR20210049728A KR102561205B1 KR 102561205 B1 KR102561205 B1 KR 102561205B1 KR 1020210049728 A KR1020210049728 A KR 1020210049728A KR 20210049728 A KR20210049728 A KR 20210049728A KR 102561205 B1 KR102561205 B1 KR 102561205B1
Authority
KR
South Korea
Prior art keywords
channel
convolution
sram
data flow
input
Prior art date
Application number
KR1020210049728A
Other languages
English (en)
Other versions
KR20220143333A (ko
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 포항공과대학교 산학협력단
Priority to KR1020210049728A priority Critical patent/KR102561205B1/ko
Publication of KR20220143333A publication Critical patent/KR20220143333A/ko
Application granted granted Critical
Publication of KR102561205B1 publication Critical patent/KR102561205B1/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

본 발명은 분산 SRAM 아키텍쳐를 가지는 모바일넷 하드웨어 가속기 및 채널 정상 데이터 플로우 설계 방법에 관한 것으로, 상기 채널 정상 데이터 플로우 설계 방법은 복수의 PE(Processing Engine)에서 상기 PE마다 전용된 인풋 채널을 이용하여 입력특징맵의 채널 별로 컨볼루션(convolution) 연산을 수행하는 제1 단계; 및 상기 제1 단계에서 획득된 프로세싱된 입력에 대해 상기 각 PE에 전용된 인풋 채널을 이용하여 PE 별로 독립적으로 연산을 수행하며, 레이어 출력(layer output)을 획득하도록 PE를 연결하는 에더 트리(adder tree)를 이용하여 복수의 PE 연산 결과를 합산하는 컨볼루션 연산을 수행하는 제2 단계; 를 포함할 수 있으며, 상기 제2 단계에서 획득된 상기 레이어 출력은 상기 레이어 출력의 아웃풋 채널이 할당된 PE로 라이트 백(Write back)되는 제3 단계;를 더 포함할 수 있다.

Description

분산 SRAM 아키텍쳐를 가지는 모바일넷 하드웨어 가속기 및 상기 가속기의 채널 정상 데이터 플로우 설계 방법{MOBILENET HARDWARE ACCELATOR WITH DISTRIBUTED SRAM ARCHITECTURE AND CHANNEL STATIONARY DATA FLOW DESIGH METHOD THEREOF}
본 발명은 고성능 모바일넷 하드웨어 가속기 설계를 위한 분산 SRAM 아키텍쳐를 가지는 모바일넷 하드웨어 가속기 및 상기 모바일넷 하드웨어 가속기에서의 채널 정상 데이터 플로우(Channel stationary dataflow) 설계 방법에 관한 것이다.
컨벌루션 뉴럴 네트워크(Convolution Neural Network, CNN)는 컴퓨터 영상처리 기반의 여러 애플리케이션에서 탁월한 성능을 가지며, CNN의 정확도를 높이기 위해 깊은 레이어를 갖는 네트워크들이 사용되면서 MAC(Multiply-Accumulate) 연산이 수행된다. 하드웨어에서 실시간으로 MAC 연산을 수행하는 경우에 연산 시간 및 사용 에너지 측면에서 많은 부담이 되며, 기존 CNN 연산의 하드웨어 연산 부담을 줄이기 위해, 도 1에 도시된 바와 같이, 깊이별 컨볼루션(Depthwise Convolution)과 위치별 컨볼루션(Pointwise Convolution)으로 이루어진 Depthwise Separable Convolution 기반의 모바일넷 네트워크가 등장하게 되었다.
도 1(a)에 도시된 기존 Standard Convolution 에서는, 하나의 레이어에서 컨볼루션을 수행하기 위한 MAC 연산 수가 DkХDkХMХNХDFХDF(DF는 Feature의 Width 혹은 Height)이지만, 도 1(b)의 깊이별 컨볼루션과, 도 1(c)의 위치별 컨볼루션을 수행하여 연산하는 Depthwise Separable Convolution에서는, 하나의 레이어에서 컨볼루션을 수행하기 위한 MAC 연산 수가 (DkХDkХMХDFХDF)+(MХNХDFХDF)가 되는 바, 기존 Standard Convolution에 비해 1/N+1/만큼 연산 수를 줄일 수 있다. 이를 통해, 정확도에서 손해를 보는 대신 8~9 배의 연산 수를 줄여 연산 시간 및 효율을 향상시키는 것이다.
또한, 상기 모바일넷을 구현한 하드웨어 가속기(10)는, 도 2(a)에 도시된 바와 같이, 칩 외부의 DRAM(3)으로부터 모바일넷 연산을 위한 데이터를 전달받아 저장하는 SRAM(1)과, 입력 액티베이션(IA)와 가중치간 컨볼루션 연산을 수행하는 복수의 PE(2)(Processing Engine, 21, 22, 23, 24)가 배치될 수 있다. 상기 PE(2) 중 적어도 하나는 산술 논리 장치(Arithmetic Logic Unit, ALU)일 수 있다.
이때, 도 2(b)에 도시된 바와 같이, depthwise separable convolution 연산을 포함하는 모바일넷에서, PE(21,22,23, 24) 또는 ALU에서 사용되는 데이터 이동 에너지 비용(Data Movement Energy Cost)은 비중이 적으나, DRAM(3)에서 SRAM(1)을 통해 PE(21,22,23, 24) 또는 ALU로 데이터를 전달하거나 SRAM(1)에서 각 PE(21,22,23, 24) 또는 ALU에 데이터를 전달하면서 통신하는데 드는 에너지 소모량 또는 시간이 훨씬 큰 비중을 차지한다.
즉, 연산량을 줄이기 위해 고안된 모바일넷에서도 DRAM(3)과 통신하는 SRAM(1)과, 상기 SRAM(1)이 전달받은 데이터를 제공하기 위해 SRAM(1)과 통신하는 PE(21,22,23, 24) 또는 ALU로 인하여 통신에 소모되는 에너지가 많아 여전히 그 효율에 문제가 있다.
A. G. Howard et al., 'MobileNets', arXiv 2016 Y.H. Chen et al., 'Eyeriss', ISCA 2016
본 발명은, 각 PE마다 전용된 데이터를 이용하여 PE 내부에서 연산을 수행하도록 하여 깊이별 컨볼루션(depthwise convolution)을 수행하는 레이어에서 성능 저하를 방지하는, 분산 SRAM 아키텍쳐를 가지는 모바일넷 하드웨어 가속기 및 상기 가속기의 채널 정상 데이터 플로우 설계 방법을 제공하고자 한다.
본 발명의 일 실시예에 따른 채널 정상 데이터 플로우 설계 방법은, 복수의 PE(Processing Engine)에서 상기 PE마다 전용된 인풋 채널을 이용하여 입력특징맵의 채널 별로 컨볼루션(convolution) 연산을 수행하는 제1 단계; 및 상기 제1 단계에서 획득된 프로세싱된 입력에 대해 상기 PE에 전용된 인풋 채널을 이용하여 PE 별로 독립적으로 연산을 수행하며, 레이어 출력(layer output)을 획득하도록 PE를 연결하는 에더 트리(adder tree)를 이용하여 복수의 PE 연산 결과를 합산하는 컨볼루션 연산을 수행하는 제2 단계; 를 포함할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 상기 제2 단계에서 획득된 상기 레이어 출력은 상기 레이어 출력의 아웃풋 채널이 할당된 PE로 라이트 백(Write back)되는 제3 단계;를 더 포함할 수 있다.
한편, 본 발명의 일 실시예에 따른 상기 컨볼루션 연산은, 상기 입력특징맵의 채널별로 컨볼루션 연산을 수행하는 깊이별 컨볼루션(depthwise convolution) 및 상기 입력특징맵의 위치별로 컨볼루션 연산을 수행하는 위치별 컨볼루션(pointwise convolution)을 분리하여 연산하며, 상기 제1 단계에서 깊이별 컨볼루션을 연산하고, 제2 단계에서 위치별 컨볼루션을 연산할 수 있다.
더하여, 상기 제2 단계에서 풀리 커넥티드 레이어(Fully connected layer) 또는 스탠다드 컨볼루션(standard convolution) 연산을 수행할 수 있다.
이때, 본 발명의 일 실시예에 따른 상기 인풋 채널은, PE에 배치된 SRAM 버퍼에 저장되며, 인풋 액티베이션(Input Activaion) 및 가중치(Weight)를 포함할 수 있다.
한편, 본 발명의 일 실시예에 따른 분산 SRAM 아키텍쳐를 가지는 모바일넷 하드웨어 가속기는, 입력특징맵의 채널 별로 레이어 출력(layer output)을 출력하도록 채널 별로 컨볼루션 연산을 수행하는 복수의 PE; 및 상기 PE마다 분산 배치되어 대응되는 PE와 독립적으로 통신하며, 상기 대응되는 PE에 전용될 인풋 채널을 저장하는 복수의 전속 SRAM 버퍼;가 배치된 칩을 포함할 수 있다.
이때, 본 발명의 일 실시예에 따른 상기 전속 SRAM 버퍼는, 상기 DRAM과의 통신 없이 모바일넷 연산을 수행하기 위한 기설정된 임계값 이상의 용량을 가질 수 있다.
또는, 본 발명의 일 실시예에 따른 상기 전속 SRAM 버퍼는, 칩 외부의 DRAM 과 통신하며, 현재 연산을 수행하는 레이어에 해당하는 데이터들이 상기 SRAM 버퍼 내에 저장되어 있지 않으면, 상기 DRAM으로부터 상기 데이터들을 전달받을 수도 있다. 필요한 용량에 따라 전속 SRAM 버퍼가 유동적으로 데이터를 전달받을 수 있다.
본 발명의 일 실시예에 따르면, 입력특징맵의 채널 별로 레이어 출력(layer output)을 출력하도록 채널 별로 컨볼루션 연산을 수행하는 복수의 PE; 및 상기 PE마다 분산 배치되어 대응되는 PE와 독립적으로 통신하며, 상기 대응되는 PE에 전용될 인풋 채널을 저장하는 복수의 전속 SRAM 버퍼;를 포함하는 칩이 탑재된 분산 SRAM 아키텍쳐를 가지는 모바일넷 하드웨어 가속기에서, 상술한 채널 정상 데이터 플로우 설계 방법을 실행시키는 프로세서를 포함할 수 있다.
컴퓨터에 상술한 채널 정상 데이터 플로우 설계 방법을 실행시키는 컴퓨터 프로그램을 저장하는 컴퓨터 판독 가능한 저장 매체를 제공할 수 있다.
본 발명의 일 실시예에 따른 분산 SRAM 아키텍쳐를 가지는 모바일넷 하드웨어 가속기 및 상기 가속기의 채널 정상 데이터 플로우 설계 방법은, 각 PE마다 전용된 인풋 채널 데이터 및 SRAM을 가짐으로써 PE 내부에서 연산을 수행하도록 하여 각 구성간 통신할 일을 최소화한다. 이를 통해 depthwise separable convolution 레이어에서 성능 저하를 방지할 수 있다.
도 1은 모바일넷에서 사용되는 스탠다드 컨볼루션 필터와 depthwise separable 컨볼루션을 수행하는 깊이별 컨볼루션 필터와 위치별 컨볼루션의 연산 개념을 도시한 것이다.
도 2는 종래 convolutional neural network를 연산하기 위한 기존 하드웨어 가속기의 구성과, 상기 가속기에서 소모되는 에너지의 비중을 각 구성 별로 도시한 것이다.
도 3은 기존 하드웨어 가속기를 이용한 Depthwise separable convolution 연산 개념을 도시한 것이다.
도 4는 기존 모바일넷에서 사용되는 컨볼루션 방법에 따른 MAC 연산 수와, 기존 하드웨어 가속기에서 상기 컨볼루션 방법에 따라 요구되는 연산 시간을 도시한 것이다.
도 5는 본 발명의 일 실시예에 따른 가속기의 채널 정상 데이터 플로우 설계 방법의 흐름도를 도시한 것이다.
도 6은 본 발명의 일 실시예에 따른 가속기의 채널 정상 데이터 플로우 설계 방법을 도식화한 것이다.
도 7은 본 발명의 일 실시예에 따른 분산 SRAM 아키텍쳐를 가지는 모바일넷 하드웨어 가속기의 구성을 간략하게 도시한 것이다.
도 8은 본 발명의 일 실시예에 따른 분산 SRAM 아키텍쳐를 가지는 모바일넷 하드웨어 가속기에서 채널 정상 데이터 플로우를 구현한 회로도를 도시한 것이다.
모바일넷은 모바일 기기나 어플 등 컴퓨터 성능이 제한되거나 배터리 퍼포먼스가 중요한 환경에서도 딥러닝이 활용될 수 있도록 효율을 높인 작은 신경망으로서, 효율을 높이기 위해 depthwise separable convolution 등의 기술을 이용할 수 있다.
도 3은 종래의 모바일넷 하드웨어 가속기를 이용한 Depthwise separable convolution 연산 개념을 도시한 것이다.
종래의 모바일넷 하드웨어 가속기는 DNN(Deep neural network)의 빠른 연산을 통해 다양한 PE를 사용할 수 있으며, 일 예시로서, 여기서 PE는 시스톨릭 어레이(systolic array) 기반의 TPU(Tensor processing unit)을 가정하고 설명하도록 한다. TPU 스타일의 PE 어레이는 각 곱셈기를 2D로 컬럼 배열하여 구성되어 있으며, 곱셈기가 쭉 배열되어 연산을 수행하는 것이다.
도 3(a)에 도시된 바와 같이, 모바일넷에서 수행되는 Standard convolution은 DRAM(3)으로부터 데이터를 전달받아 모든 PE에 상기 데이터를 제공하는 글로벌 버퍼(GLB, 11)에 IA(Input Activation)를 로드하며, 복수의 곱셈기가 2D로 어레이되어 각 아웃풋 채널의 가중치(Weight)가 배치된 PE 어레이에 상기 IA를 브로드캐스트할 수 있다. IA가 브로드캐스트, 즉, 재사용이 가능함으로써, k x k x IC 의 IA와, PE 어레이의 열(column)에 배열된 k x k x IC 의 가중치가 채널 별로 동시에 연산을 수행할 수 있고, k x k x IC 번의 MAC 연산을 통해 OA(Output Activation)을 출력할 수 있다. 출력된 OA는 아웃풋 버퍼(12)에 저장되고, 이후 글로벌 버퍼(11)로 보내질 수 있다.
즉, 모바일넷에서 수행되는 Standard convolution는 OC개의 필터가 존재하는 바, IA가 OC 개의 Output channel을 이루는 가중치들에 대해 재사용될 수 있다.
그러나, Standard convolution 과 동일한 방법으로 하드웨어에서 연산을 수행하는 pointwise convolution과 달리 depthwise convolution은 기존 하드웨어에서 연산할 경우, 도 3(b)에 도시된 바와 같이, 깊이 방향으로만 컨볼루션 연산을 수행하고, 채널 방향으로는 컨볼루션 연산을 수행하지 않는 바, 오로지 1개의 필터로만 컨볼루션 연산을 수행해야 한다.
PE 어레이(22)에서 하나의 필터로만 컨볼루션 연산을 수행하는 바, IA가 여러 필터에서 재사용될 수 없어 오직 1개의 PE array column만 사용하게 되며, 연산 수가 줄어들어도(kxk번의 MAC 연산 수행) 동시에 많은 곱셈기를 사용할 수 없어 PE 어레이(22)의 곱셈기가 낭비되며, 작은 수의 곱셈기로 오랜 시간 동안 연산을 수행해야 한다.
즉, 기존 하드웨어 가속기에서 모바일넷 연산을 할 경우에는, 깊이별 컨볼루션을 수행할 필터가 1개뿐이어서 IA를 재사용을 할 수 없었고, PE 어레이가 복수 개의 열을 구비하고 있더라도 하나의 열밖에 사용할 수 없어 PE 어레이 공간 또는 곱셈기가 낭비되었다.
또한, PE가 각 IA 및 가중치의 채널 별로 합산(summation)이 되는 바, 채널 별로 IA 및 가중치의 연산 결과가 도출되는 바, 모든 채널의 인풋 및 가중치 합산이 되지 않았으며, 그 결과 PE의 행(row) 방향의 곱셈기도 다 쓸 수가 없었다.
따라서, 깊이별 컨볼루션 은 Standard convolution보다 IC 배 작은 연산을 수행하지만, 글로벌 버퍼(11)에 kxk의 IA가 배치되고, 상기 IA가 PE 어레이(22)의 1열만 사용한 가중치와 연산을 수행하는 바, IA를 재사용할 수 없고 동시에 복수 채널의 연산을 진행할 수 없어 심각한 성능저하가 발생하게 된다.
이 결과, 도 4에 도시된 바와 같이, 모바일넷 네트워크의 MAC 연산에서 3~13%를 차지하는 깊이별 컨볼루션 때문에 전체 연산에서 48~65%의 연산 시간을 차지하게 되는 바, 모바일넷의 성능이 심각하게 저하되게 된다.
구체적으로, 도 4(a)에 도시된 바와 같이, 모바일넷 버전 V1, V2, V3L, V3S 모두에서 깊이별 컨볼루션(DWConv.)는 모바일넷 전체의 MAC 연산에서 3 내지 13%의 매우 작은 부분을 차지하고 있으며, 대부분은 스탠다드 컨볼루션(Conv.)에서 연산이 수행되고 있고, 3% 이내에서 Fully connected layer(FC) 연산이 수행되고 있다.
그러나, 도 4(b)에 도시된 바와 같이, 16 x 16 배열의 PE 어레이를 기준으로 각 컨볼루션 연산을 수행할 때 요구되는 컴퓨터 클럭 사이클은, 깊이별 컨볼루션이 48 내지 65%의 비율을 차지하며, 실제 대부분의 연산을 차지하는 스탠다드 컨볼루션은 25% 내지 52%만을 차지하고 있다.
즉, MAC 연산 수를 줄이기 위한 깊이별 컨볼루션은 연산 수 자체는 매우 적으나 많은 개수의 곱셈기를 충분히 사용하지 못하는 바 더 오랜 시간 동안 연산을 진행해야 하며, PE 어레이에서 연산할 때 대부분의 연산 시간을 차지하게 된다.
따라서, 연산 수를 줄여 연산 시간 및 에너지 소모를 감소시키려 사용하는 depthwise convolution에 의해 오히려 연산 성능 저하가 발생하는 바, 이를 막기 위한 새로운 모바일넷 하드웨어 가속기 구조와 데이터 플로우 설계가 필요하게 되었다.
도 5는 본 발명의 일 실시예에 따른 가속기의 채널 정상 데이터 플로우 설계 방법의 흐름도를 도시한 것이며, 도 6은 그를 구체적으로 도식화한 것이다.
도 5에 도시된 바와 같이, 본 발명의 일 실시예에 따른 채널 정상 데이터 플로우 설계 방법은, 각 PE(Processing Engine)에서 각 PE에 전용된 인풋 채널을 이용하여 입력특징맵의 채널 별로 컨볼루션(convolution) 연산을 수행하는 제1 단계 (S510) 및 상기 제1 단계로 획득한 프로세싱된 입력에 대해 상기 각 PE에 전용된 인풋 채널을 이용하여 채널 별로 연산을 수행하며, 레이어 출력(layer output)을 획득하도록 모든 PE를 연결하는 에더 트리(adder tree)를 이용하여 각 PE 별 연산 결과를 합산하는 컨볼루션 연산을 수행하는 제2 단계(S520)를 포함할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 상기 제2 단계로 획득된 상기 레이어 출력은 상기 레이어 출력의 아웃풋 채널이 할당된 PE로 라이트 백(Write back)되는 제3 단계(S530)를 더 포함할 수 있다.
즉, S510에서 복수의 PE에서 상기 PE마다 전용된 인풋 채널, 즉 각 PE마다 채널 별로 분배된 IA 및 가중치를 이용하여 입력특징맵의 채널 별로 컨볼루션 연산을 수행할 수 있다. 채널 별로 연산 수행이란 결국 PE마다 전용된 IA 및 가중치를 이용하여 각각 연산을 수행한다는 의미이다.
또한, S520에서, 상기 S510에서 출력한 OA를 IA로 받아 컨볼루션 연산을 수행하며, S510에서 획득된 프로세싱된 입력에 대해 상기 PE에서 전용된 인풋 채널을 이용하여 PE별로 독립적으로 연산을 수행할 수 있다. S520에서 채널 방향으로의 컨볼루션 연산을 수행해야 할 경우, 각 PE 별로 독립적으로 연산을 수행하여 채널마다의 일부 OA를 획득하고, 에더 트리(300)를 이용하여 상기 OA를 합산함으로써 채널 방향의 연산을 수행하고 아웃풋 채널의 OA를 획득할 수 있다.
S530에서는, S520에서 획득된 아웃풋 채널의 OA를 대응되는 아웃풋 채널이 할당된 PE로 전달할 수 있다.
구체적으로, 도 6에 도시된 바와 같이, S510에서, 깊이별 컨볼루션을 수행할 수 있다. 본 발명의 일 실시예에 따른 깊이별 컨볼루션 연산을 수행하기 위해, IA와 가중치의 개수만큼의 복수의 PE(210, 220, 230, 240)를 배치할 수 있으며, 상기 복수의 PE(210, 220, 230, 240)는 각 PE 별로 전용된 인풋 채널을 가질 수 있다.
즉, 본 발명의 일 실시예에 따른 상기 인풋 채널은, 인풋 액티베이션(Input Activaion, IA) 및 가중치(Weight)를 포함하며, 각 PE(210, 220, 230, 240)에 배치된 SRAM 버퍼(110, 120, 130, 140)에 저장될 수 있다.
일 예시로서, PE#0(210)는 이에 대응하는 채널의 IA(61) 및 가중치(71)만을 사용할 수 있다. 즉, PE#0에 대응되게 배치된 SRAM 버퍼(110)에서 곧바로 IA(61) 및 가중치(71)를 꺼내 연산에 사용할 수 있으며, 상기 데이터를 다른 PE(220, 230, 240)에 보내거나, 다른 PE(220, 230, 240)에 전용된 IA(62, 63, 64) 및 가중치(72, 73, 74)를 받을 필요가 없다.
또한, 일 예시로서, PE#1(220)는 이에 대응하는 채널의 IA(62) 및 가중치(72)만을 사용할 수 있다. 즉, PE#1(220)에 대응되게 배치된 SRAM 버퍼(120)에서 곧바로 IA(62) 및 가중치(72)를 꺼내 연산에 사용할 수 있으며, 상기 데이터를 다른 PE(210, 230, 240)에 보내거나, 다른 PE(210, 230, 240)에 전용된 IA(61, 63, 64) 및 가중치(71, 73, 74)를 받을 필요가 없다. 다른 PE#2(230), PE#3(240)도 마찬가지이다.
S510에서 수행하는 깊이별 컨볼루션은 다른 채널의 IA와 가중치가 필요하지 않은 바, 서로 다른 PE간에 데이터를 주고받지 않고, 각 PE에서 IA 및 가중치간 2 디멘젼 컨볼루션(2 dimension convolution)을 수행하고 각 대응되는 PE에 연산 결과를 저장할 수 있다.
따라서, 기존 하드웨어 가속기에서 깊이별 컨볼루션을 수행할 때는, DRAM(3)으로부터 글로벌 버퍼(11)로 연산에 필요한 데이터를 모두 전달받은 후, 글로벌 버퍼(11)로부터 각 PE(21,22,23) 또는 ALU(24)로 데이터를 전달하고, 한번의 MAC 연산에서 데이터 재사용이 불가능한 바, 상기 데이터가 연산에 필요한 다른 PE(21,22,23) 또는 ALU(24) 다시 데이터를 전달하여야 했으나, 본 발명의 일 실시예에 따르면 각 PE(210, 220, 230, 240)마다 대응되게 배치된 SRAM 버퍼(110, 120, 130, 140)가 존재하며, 상기 SRAM 버퍼(110, 120, 130, 140)에서 각 PE(210, 220, 230, 240)의 연산에 필요한 데이터를 전용하고, 깊이별 컨볼루션 연산 전후에 데이터를 PE 밖으로 내보내거나 새로운 데이터를 받지 않고 이후 위치별 컨볼루션까지 연속적으로 연산을 수행할 수 있는 바, 데이터 통신으로 인한 연산의 성능 저하를 방지할 수 있고, 동시에 각 채널 별로 각 PE에서 연산을 수행할 수 있어 전체 연산 속도도 단축될 수 있다.
도 6에 도시된 바와 같이, S520에서 위치별 컨볼루션(Pointwise convolution)을 수행할 수 있으며, 상술한 바와 같이, 깊이별 컨볼루션과 달리 위치별 컨볼루션은 다른 채널의 IA와 가중치가 연산에 필요하다.
따라서, S510에서와 마찬가지로 각 PE에서 채널 별로 연산을 수행한 후, 모든 PE를 연결하는 에더 트리(300)를 이용하여 채널 별 연산 결과를 합산할 수 있다. 상기 에더 트리(300)는 모든 PE를 연결하는 인터 PE 버스(inter PE bus)로 구현할 수 있다.
구체적으로, S510에서 출력된 OA가 S520에서 IA로 활용되는 바, S510에서 획득되어 각 PE에 저장된 OA를 사전 프로세싱된 입력으로 보고 S520의 위치별 컨볼루션에 이용할 수 있다.
일 예시로서, PE#0(210)에서 S510에서 깊이별 컨볼루션 연산 결과로 획득한 IA(81) 및 가중치(71)를 다시 꺼내어 곱셈 연산을 수행할 수 있다.
또한, PE#1(220), PE#2(230), PE#3(240)에서도 각 IA(82, 83, 84) 및 가중치(72, 73, 74)를 이용하여 곱셈 연산을 수행할 수 있다.
상기 각 PE(210, 220, 230, 240)에서 동시에 곱셈 연산을 수행한 후, 출력된 곱셈 연산 결과를 에더 트리(300)을 이용하여 합산하여 위치별 컨볼루션 연산을 수행하고, OA의 부분적 합산 결과(partial sum, 91)을 얻을 수 있다.
따라서, 모바일넷의 위치별 컨볼루션을 수행할 때도, 각 PE(210, 220, 230)에서 전용된 데이터를 이용하여 동시에 곱셈 연산을 수행한 후, 에더 트리(300)을 이용하여 마지막에 합산하는 방식을 이용하여 연산 시간을 줄이고 연산 효율을 향상시킬 수 있다.
상술한 방식으로, 입력특징맵의 폭 또는 높이(WIDTH 또는 HEIGHT)만큼 곱셈 연산 및 합산 연산을 반복적으로 수행하여 각 채널 별로 아웃풋 채널(output channel)을 획득할 수 있으며, 가중치#1, 가중치#2,??, 가중치#OC-1를 이용하여 상기 곱셈 연산 및 합산 연산을 반복하여 최종적으로 상기 출력특징맵(Output feature-map)을 획득할 수 있다.
그러나, 상술한 곱셈 연산 및 합산 연산을 계속 반복하여야 하는바, 도 6에 도시된 바와 같이, S520에서 아웃풋 채널의 부분적 합산 결과(91)를 우선 획득하면, S530에 따라서, 대응되는 아웃풋 채널이 할당된 PE로 값을 보내 저장할 수 있다.
구체적으로, S510의 연산 및 S520에서 곱셈 연산은 각 PE 내에서 수행되지만, S520에서 합산 연산은 각 PE를 벗어나서 에더 트리(300)를 이용한 결과 값을 획득하게 된다. 따라서, 에더 트리(300)를 통해 합산 결과(91)를 획득하면, 상기 합산 결과(91)를 다시 대응되는 PE에 라이트백(Write back)할 수 있다.
일 예시로서, 도 6에 도시된 바와 같이, 상기 S520에서 획득한 부분적 합산 결과(91)는 아웃풋 채널#0에 속하는 OA인 바, 채널#0에 해당하는 값들을 전용하고 있는 PE#0(210)에 상기 부분적 합산 결과(91)를 라이트백할 수 있다.
일 예시로서, 가중치#1을 이용하여 상술한 위치별 컨볼루션 연산을 수행하여 부분적 합산 결과를 획득할 경우에는, 상기 부분적 합산 결과는 아웃풋 채널#1에 속하는 OA인 바, 채널#1에 해당하는 값들을 전용하고 있는 PE#1(220)에 상기 부분적 합산 결과를 라이트백할 수 있다.
즉, 본 발명의 일 실시예에 따른 상기 컨볼루션 연산은, 상기 입력특징맵의 채널별로 컨볼루션 연산을 수행하는 깊이별 컨볼루션(depthwise convolution) 및 상기 입력특징맵의 위치별로 컨볼루션 연산을 수행하는 위치별 컨볼루션(pointwise convolution)을 분리하여 연산하며, 상기 제1 단계에서 깊이별 컨볼루션을 연산하고, 제2 단계에서 위치별 컨볼루션을 연산할 수 있다.
깊이별 컨볼루션은 채널 방향의 연산을 진행하지 않는 바, PE마다 별도의 채널을 분배하여 저장하고, 각 PE 마다 독립적으로 연산을 수행할 수 있으며, 위치별 컨볼루션은 깊이 별 연산을 진행하지 않고 채널 방향의 연산을 진행하는 바, PE 마다 채널 별로 독립적으로 수행한 연산 결과를 에더 트리(300)를 이용하여 합산함으로써 구현할 수 있다.
더하여, 풀리 커넥티드 레이어와 스탠다드 컨볼루션은 위치별 컨볼루션과 동일한 연산 방식을 취하는 바, 상기 S520에서 풀리 커넥티드 레이어(Fully connected layer, FC) 또는 스탠다드 컨볼루션(standard convolution) 연산을 수행할 수 있다. FC와 스탠다드 컨볼루션은, 위치별 컨볼루션 연산과 같이, 채널 방향의 연산을 진행하는 바 PE 및 에더 트리(300)를 이용하여 구현할 수 있다.
따라서, 본 발명의 일 실시예에 따른 채널 정상 데이터 플로우 설계 방법에 의하면, 종래 깊이 별 컨볼루션 연산에서 IA가 재사용이 안 돼서 글로벌 버퍼에서 브로드캐스트를 할 수 없는 문제점을 해결할 수 있으며, 그에 따라 글로벌 버퍼 및 PE간 통신하는데 드는 에너지를 낭비하지 않을 수 있다. 동시에 위치 별 컨볼루션 연산도 에더 트리(300)를 이용하여 구현하여 PE 및 ALU간 통신에 드는 시간도 최소화할 수 있다.
한편, 상술한 채널 정상 데이터 플로우를 설계하기 위해서는, SRAM 버퍼(110, 120, 130, 140)를 각 PE(210, 220, 230, 240)마다 배치해야 하며, 도 7은 본 발명의 일 실시예에 따른 분산 SRAM 아키텍쳐를 가지는 모바일넷 하드웨어 가속기의 구성을 간략하게 도시한 것이다.
도 7에 도시된 바와 같이, 본 발명의 일 실시예에 따른 분산 SRAM 아키텍쳐를 가지는 모바일넷 하드웨어 가속기는, 입력특징맵의 채널 별로 레이어 출력(layer output)을 출력하도록 각 채널 별로 컨볼루션 연산을 수행하는 복수의 PE(210, 220, 230, 240) 및 각 PE(210, 220, 230, 240)마다 분산 배치되어 대응되는 PE(210, 220, 230, 240)와 독립적으로 통신하며, 상기 대응되는 PE(210, 220, 230, 240)에 전용될 인풋 채널을 저장하는 복수의 전속 SRAM 버퍼(110, 120, 130, 140)가 배치된 칩을 포함할 수 있다.
이때, 본 발명의 일 실시예에 따른 인풋 채널은, 인풋 액티베이션(Input Activaion) 및 가중치(Weight)가 포함될 수 있으며, 각 채널 별로 대응되는 각 PE(210, 220, 230, 240)에 배치된 전속 SRAM 버퍼(110, 120, 130, 140)에 저장될 수 있다.
도 7에 도시된 바와 같이, 전속 SRAM 버퍼(110, 120, 130, 140)가 각 PE(210, 220, 230, 240) 마다 분산되어 배치되어 있어, 같은 행(row)에 있는 PE(즉, 210 및 220, 또는 230 및 240)들도 동시에 컨볼루션 연산에 필요한 데이터를 전달받을 수 있으며, 각 PE(210, 220, 230, 240)는 할당된 인풋 채널에 해당하는 연산을 각자 독립적으로 수행할 수 있어 PE 내의 복수의 곱셈기를 사용하지 못하고 낭비하지 않는 바, PE의 이용률 저하 발생을 막을 수 있다.
또한, 도 2와 도시된 바와 같은 기존의 중앙 집중식 SRAM 구조는 매 레이어마다 모든 PE에 연결되어 있는 하나의 SRAM(1)으로부터 각 PE(21, 22, 23, 24)로 데이터를 전달하는 통신을 수행하고, 연산이 종료되면 각 PE(21, 22, 23, 24)로부터 연산 결과를 SRAM(1)으로 전달하는 통신을 수행해야 해서 깊이 별 컨볼루션 레이어에서 곱셈기의 성능 저하를 가져올 수 있지만, 본 발명의 일 실시예에 따른 분산 SRAM 아키텍쳐 구조를 가지는 하드웨어 가속기는 상기 통신이 필요 없어 곱셈기의 성능 저하를 방지할 수 있다.
따라서, 별도의 통신 없이 각 전속 SRAM 버퍼(110, 120, 130, 140)에 할당된 채널 데이터를 동시에 저장할 수 있고, 다른 채널 데이터를 다른 PE로부터 받아 MAC 연산을 수행할 수 있어, 본 발명의 일 실시예에 따른 채널 정상 데이터 플로우에 가장 적합한 구조이다.
그러나, 본 발명의 일 실시예에 따른 분산 SRAM 아키텍쳐를 가지는 모바일넷 하드웨어 가속기는, 도 7에 도시된 바와 같이, 분산된 전속 SRAM 버퍼(110, 120, 130, 140) 전부와 연결된 칩 외부의 DRAM(3)이 존재하며, DRAM으로부터 컨볼루션 연산에 필요한 데이터를 각 전속 SRAM 버퍼(110, 120, 130, 140)로 전달하는 통신을 실시간으로 수행할 경우, 기존의 중앙 집중식 SRAM 구조를 가진 가속기와 동일한 문제점이 발생할 수 있다.
예를 들어, 전속 SRAM 버퍼(110, 120, 130, 140)의 용량보다 모바일넷 임의의 레이어에 해당하는 데이터 용량이 클 경우에, 모바일넷 연산을 위한 데이터가 전속 SRAM 버퍼(110, 120, 130, 140) 중 적어도 하나에 존재하지 않을 때, DRAM(3)으로부터 데이터를 전달받아야 하는데, 이 경우, DRAM(3)으로부터 각 전속 SRAM 버퍼(110, 120, 130, 140)로 브로드캐스트될 수가 없기 때문에 같은 행에 존재하는 SRAM에 데이터를 전달할 수 없거나 각 PE에서 동시에 연산을 수행할 수 없게 된다.
따라서, 본 발명의 일 실시예에 따른 상기 전속 SRAM 버퍼(110, 120, 130, 140)는, 상기 DRAM(3)과의 통신 없이 모바일넷 연산을 수행하기 위한 기설정된 임계값 이상의 용량을 가질 수 있다.
구체적으로 예를 들면, 엣지 TPU(Edge TPU)의 경우, 8MB의 SRAM 용량을 가지는 ASIC(application-specific integrated circuit)로, 현재 8MB는 모바일넷 연산에 필요한 모든 데이터를 담을 수 있는 용량인 바, 모바일넷 연산에 필요한 데이터를 모두 분산된 전속 SRAM 버퍼(110, 120, 130, 140) 각각에 담을 수 있어, DRAM(3)의 접근 없이 모바일넷 연산을 수행할 수 있으며, 이 경우 DRAM(3)과의 통신이 필요 없어 같은 행에 존재하는 SRAM에 데이터를 전달할 수 없거나 각 PE에서 동시에 연산을 수행할 수 없는 문제점을 방지할 수 있다.
일 예시로서, 상기 기설정된 임계값은 8MB일 수 있으며, 이후 모바일넷 버전이 업데이트되며 모바일넷 연산을 수행하기 위해 필요한 최대 데이터의 용량이 달라질 경우, 그에 따라 기설정된 임계값을 조절할 수 있다. 상기 수치로 청구범위가 제한되지 않는다.
한편, 모바일넷 연산을 수행하기 위해 필요한 데이터를 모두 올려놓기에 전속 SRAM 버퍼(110, 120, 130, 140)의 용량이 부족하여 DRAM(3)과의 통신이 필수적인 경우도 존재할 수 있다.
따라서, 본 발명의 일 실시예에 따르면, 현재 연산을 수행하고 있는 레이어에 해당하는 데이터들이 모두 전속 SRAM 버퍼(110, 120, 130, 140)에 저장되어 있다면 DRAM(3)과의 통신 없이 상술한 채널 정상 데이터 플로우 설계 방법에 따라 데이터 전달을 수행할 수 있다.
또는, 본 발명의 일 실시예에 따르면, 전속 SRAM 버퍼(110, 120, 130, 140)는, 현재 연산을 수행하는 레이어에 해당하는 데이터들이 상기 전속 SRAM 버퍼(110, 120, 130, 140) 내에 저장되어 있지 않으면, 칩 외부의 DRAM(3)과 통신하며, 상기 DRAM(3)으로부터 상기 데이터들을 전달받을 수도 있다.
이때, DRAM(3)으로부터 전달받은 데이터는 곧바로 PE(210, 220, 230, 240)로 전달할 수 있으며, SRAM 버퍼(110, 120, 130, 140)로 전달하여 저장한 후 PE(210, 220, 230, 240)로 전달할 수도 있다.
즉, SRAM 버퍼(110, 120, 130, 140)는 선택적으로 DRAM(3)과 통신할 수 있어, 필요한 데이터의 위치에 따라 전속 SRAM 버퍼(110, 120, 130, 140)가 유동적으로 데이터를 전달받을 수 있으며, 전속 SRAM 버퍼(110, 120, 130, 140) 내에 데이터가 존재하면 DRAM(3)과 통신을 수행하지 않고 본 발명의 일 실시예에 따른 채널 정상 데이터 플로우를 수행하고, 전속 SRAM 버퍼(110, 120, 130, 140) 밖의 DRAM(3)에 데이터가 존재할 경우, DRAM(3)과 통신을 수행하며 종래의 하드웨어와 동일하거나 유사한 방식으로 데이터를 이동시켜 연산을 수행할 수 있다.
도 8은 본 발명의 일 실시예에 따른 분산 SRAM 아키텍쳐를 가지는 모바일넷 하드웨어 가속기에서 채널 정상 데이터 플로우를 구현한 것을 도시한 것이다.
도 8에 도시된 바와 같이, 일 예시로서, PE 어레이는 4x4 어레이를 사용하여 PE#0부터 PE#15까지 복수의 PE가 행렬로 배치될 수 있다. 이는 예시적인 실시예로써 상기 수치에 의해 청구범위가 제한되지 않는다.
또한, 각 PE(200)는, 대응되는 SRAM 버퍼(100), 인풋/아웃풋 버퍼(Input/Output buffer)(400), 엑티베이션 유닛(500), MAC 유닛(600), 컨트롤러(700) 및 주변기기(800)를 포함할 수 있다.
각 PE(200) 내부에서 채널 별로 깊이 별 컨볼루션을 수행한 후에, 복수의 PE들이 갖는 MAC 유닛(600)의 곱셈기 및 탑-레벨의 에더 트리(300)를 이용하여 위치 별 컨볼루션을 수행하거나 풀리 커넥티드 레이어의 연산을 수행할 수 있다.
이후 연산 결과(Output activation(OA)/부분적 합산 결과(Psum))는 각 아웃풋 채널에 따라 대응되는 PE(200)로 인터 PE 버스(Inter PE bus)를 이용하여 라이트백(writeback)될 수 있다. 이는 본 발명의 일 실시예에 따른 채널 정상 데이터 플로우를 이용한 Channel stationary dataflow(CS) 모드이다.
또한, 도 8에 도시된 바와 같이, SRAM 버퍼(100) 내에 연산에 필요한 데이터가 저장되어 있지 않아 오프-칩, 즉 DRAM(3)과 같은 칩 외부에서의 접근을 통해 데이터를 전달받는 경우(From Off-chip), Psum Bus를 이용하여 DRAM(3)으로부터 받은 데이터를 각 PE(200)에 전달하고, 각 PE(200)에서 연산한 결과를 합산할 수 있다. DRAM(3)으로부터 받은 데이터는 각 PE(200)들에 브로드캐스트될 수 없어 재사용될 수 없는 바, 하나씩 데이터를 전달하고 그 연산 결과를 받아와서 추후 합산하여야 한다. 이는 중앙 집중식 구조의 하드웨어 가속기에서의 가중치 정상 데이터 플로우(Weight stationary dataflow, WS) 모드이다.
따라서, 본 발명의 일 실시예에 따르면 CS 모드와 WS 모드를 동시에 지원할 수 있는 회로도를 구현하였으나, WS 모드 대신 다른 데이터 플로우를 지원하도록 구성될 수 있으며, 상기 예시적인 실시예에 의해 제한되지 않는다.
즉, 분산된 SRAM 버퍼(100)에 전용된 데이터를 PE(200)가 전달 받는 방식과 오프 칩으로부터 공용된 데이터를 SRAM 버퍼(100)를 통해 PE(200)가 전달 받는 방식을 모두 지원하도록 구현될 수 있다.
한편, SRAM 버퍼(100)는 PE(200) 내에서 연산에 사용될 데이터를 저장할 수 있으며, 인풋/아웃풋 버퍼(400)는 OA/부분적 합산 결과(Psum) 값을 내보내거나 각 대응되는 채널의 PE에 전달할 때 라이트백하여 저장할 수 있다.
또한, 엑티베이션 유닛(500) 또는 MAC 연산(600)은 IA 또는 가중치를 이용하여 연산을 수행할 수 있으며, 컨트롤러(700)는 컨볼루션 연산에 따라 데이터 이동을 제어할 수 있다.
따라서, 본 발명의 일 실시예에 따르면, 입력특징맵의 채널 별로 레이어 출력(layer output)을 출력하도록 각 채널 별로 컨볼루션 연산을 수행하는 복수의 PE(200) 및 각 PE(200)마다 분산 배치되어 대응되는 PE(200)와 독립적으로 통신하며, 상기 대응되는 PE(200)에 전용될 인풋 채널을 저장하는 복수의 전속 SRAM 버퍼(100)를 포함하는 칩이 탑재된 분산 SRAM 아키텍쳐를 가지는 모바일넷 하드웨어 가속기에서, 상술한 채널 정상 데이터 플로우 설계 방법을 실행시키는 프로세서를 포함할 수 있다.
본 출원의 실시예는 입력 인터페이스, 출력 인터페이스, 프로세서 및 메모리를 포함하고, 상기 입력 인터페이스, 출력 인터페이스, 프로세서 및 메모리는 버스 시스템을 통해 서로 연결될 수 있다. 상기 메모리에는 프로그램, 인스트럭션 및 코드가 저장된다. 상기 프로세서는 상기 메모리 중의 프로그램, 인스트럭션 또는 코드를 실행함으로써, 입력 인터페이스가 신호를 수신하도록 제어하고, 출력 인터페이스가 신호를 발송하도록 제어하며, 상술한 방법 실시예의 동작을 수행한다.
본 출원의 실시예에서, 상기 프로세서는 중앙 처리 유닛(Central Processing Unit, CPU)일 수 있으며, 상기 프로세서는 또한 기타 범용 프로세서, 디지털 신호 프로세서, 주문형 집적 회로, 현장 프로그래머블 게이트 어레이 또는 기타 프로그래머블 로직 디바이스, 이산 게이트 또는 트랜지스터 로직 디바이스, 이산된 하드웨어 컴포넌트 등일 수 있는 것으로 이해하여야 한다. 범용 프로세서는 마이크로프로세서일 수 있고, 또는 상기 프로세서는 임의의 일반 프로세서 등일 수도 있다.
상기 메모리는 판독 전용 메모리 및 랜덤 액세스 메모리를 포함할 수 있으며, 프로세서로 인스트럭션과 데이터를 제공한다. 메모리의 일부분은 비휘발성 랜덤 액세스 메모리를 더 포함할 수 있다. 예를 들어, 메모리에 저장 장치 유형의 정보를 더 저장할 수 있다.
구현 과정에서, 상술한 방법의 각 내용은 프로세서 중 하드웨어의 논리 집적 회로 또는 소프트웨어 형태의 인스트럭션에 의해 완성될 수 있다. 본 출원의 실시예에 개시된 방법의 내용은 하드웨어 프로세서로 직접 구현될 수 있으며, 또는 프로세서 중 하드웨어 및 소프트웨어 모듈의 조합으로 구현되어 수행 완성될 수 있다. 소프트웨어 모듈은 랜덤 액세스 메모리, 플래시 메모리, 판독 전용 메모리, 프로그래머블 판독 전용 메모리 또는 전기적 소거 가능 프로그래머블 메모리, 레지스터 등과 같은 종래의 저장 매체에 저장될 수 있다. 상기 저장 매체는 메모리에 위치하며, 프로세서는 메모리에 저장된 정보를 판독하여, 그 하드웨어와 결합하여 상술한 방법의 내용을 완성한다. 중복되는 것을 방지하기 위해, 여기서는 상세한 설명을 생략한다.
본 분야에서 통상의 지식을 가진 자들은, 본 명세서에서 개시한 실시예에서 설명하는 각 예시적인 유닛 및 알고리즘 단계를 결합하여, 전자 하드웨어 또는 컴퓨터 소프트웨어와 전자 하드웨어의 결합으로 실현할 수 있음을 알 수 있다. 이러한 기능을 하드웨어 방식으로 수행할 것인지 아니면 소프트웨어 방식으로 수행할 것인지는, 기술방안의 특정 응용과 설계 제약 조건에 의해 결정된다. 통상의 지식을 가진 자들은 특정된 응용 각각에 대해 서로 다른 방법을 사용하여 설명한 기능을 실현할 수 있지만, 이러한 실현은 본 출원의 범위를 벗어난 것으로 간주되어서는 안 된다.
본 분야에서 통상의 지식을 가진 자들은, 설명의 편의와 간결성을 위하여 위에서 설명한 시스템, 장치와 유닛의 구체적인 동작 과정은 상술한 방법 실시예의 대응되는 과정을 참조할 수 있다는 것을 명확히 이해할 수 있으므로, 여기서는 중복되는 설명을 생략한다.
한편, 본 출원의 각 실시예에서의 각 기능유닛은 하나의 처리 유닛에 집적될 수 있고, 각 유닛이 단독으로 물리적으로 존재할 수도 있으며, 둘 또는 둘 이상의 유닛이 하나의 유닛에 집적될 수도 있다.
또한, 본 발명의 일 실시예에 따르면, 컴퓨터에 상술한 채널 정상 데이터 플로우 설계 방법을 실행시키는 컴퓨터 프로그램을 저장하는 컴퓨터 판독 가능한 저장 매체를 제공할 수 있다.
상기 기능이 만약 소프트웨어 기능 유닛의 형태로 구현되어 독립적인 제품으로서 판매되거나 사용될 경우, 하나의 컴퓨터 판독 가능 저장매체에 저장될 수 있다. 이러한 이해에 기반하여, 본 출원의 기술방안에서 본질적으로 또는 선행기술에 대해 기여한 부분 또는 상기 기술방안의 일부분은 소프트웨어 제품의 형태로 구현될 수 있고, 상기 컴퓨터 소프트웨어 제품은 하나의 저장매체에 저장되며, 약간의 인스트럭션을 포함하여 하나의 컴퓨터 장치(개인 컴퓨터, 서버 또는 네트워크 기기 등일 수 있음)로 하여금 본 출원의 각 실시예에서 설명하는 방법의 전부 또는 일부 단계를 수행하도록 한다. 상술한 저장매체는 USB 메모리, 모바일 하드디스크, 읽기 전용 메모리(Read-Only Memory, ROM), 랜덤 액세스 메모리(Random Access Memory, RAM), 자기 디스크 또는 시디롬 등과 같은 프로그램 코드를 저장할 수 있는 다양한 매체를 포함한다.
상술한 내용은 단지 본 출원의 구체적인 실시형태일 뿐, 본 출원의 보호범위는 이에 한정되지 않으며, 본 기술분야의 통상의 지식을 가진 자라면 본 출원이 밝히는 기술범위 내에서 변화 또는 대체를 쉽게 생각해 낼 수 있고, 이러한 변화 또는 치환 또한 본 출원의 보호범위에 속한다. 따라서, 본 출원의 보호범위는 청구범위의 보호 범위에 준한다.
100, 110, 120, 130, 140: SRAM 버퍼
200, 210, 220, 230, 240: PE
300: 에더 트리
400: 인풋/아웃풋 버퍼
500: 엑티베이션 유닛
600: MAC 유닛
700: 컨트롤러
800: 주변 기기

Claims (10)

  1. 복수의 PE(Processing Engine)에서 상기 PE마다 전용된 인풋 채널을 이용하여 입력특징맵의 채널 별로 컨볼루션(convolution) 연산을 수행하는 제1 단계; 및
    상기 제1 단계에서 획득된 프로세싱된 입력에 대해 상기 PE에 전용된 인풋 채널을 이용하여 PE 별로 독립적으로 연산을 수행하며, 레이어 출력(layer output)을 획득하도록 PE를 연결하는 에더 트리(adder tree)를 이용하여 복수의 PE 연산 결과를 합산하는 컨볼루션 연산을 수행하는 제2 단계; 를 포함하는,
    채널 정상 데이터 플로우 설계 방법.
  2. 제1 항에 있어서,
    상기 제2 단계에서 획득된 상기 레이어 출력은 상기 레이어 출력의 아웃풋 채널이 할당된 PE로 라이트 백(Write back)되는 제3 단계;를 더 포함하는,
    채널 정상 데이터 플로우 설계 방법.
  3. 제1 항에 있어서,
    상기 컨볼루션 연산은, 상기 입력특징맵의 채널 별로 컨볼루션 연산을 수행하는 깊이별 컨볼루션(depthwise convolution) 및 상기 입력특징맵의 위치 별로 컨볼루션 연산을 수행하는 위치별 컨볼루션(pointwise convolution)을 분리하여 연산하며, 상기 제1 단계에서 깊이별 컨볼루션을 연산하고, 제2 단계에서 위치별 컨볼루션을 연산하는,
    채널 정상 데이터 플로우 설계 방법.
  4. 제3 항에 있어서,
    상기 제2 단계에서 풀리 커넥티드 레이어(Fully connected layer) 또는 스탠다드 컨볼루션(standard convolution) 연산을 수행하는,
    채널 정상 데이터 플로우 설계 방법.
  5. 제1항에 있어서,
    상기 인풋 채널은, PE에 배치된 SRAM 버퍼에 저장되며, 인풋 액티베이션(Input Activaion) 및 가중치(Weight)를 포함하는,
    채널 정상 데이터 플로우 설계 방법.
  6. 입력특징맵의 채널 별로 레이어 출력(layer output)을 출력하도록 채널 별로 컨볼루션 연산을 수행하는 복수의 PE; 및
    상기 PE마다 분산 배치되어 대응되는 PE와 독립적으로 통신하며, 상기 대응되는 PE에 전용될 인풋 채널을 저장하는 복수의 전속 SRAM 버퍼;가 배치된 칩을 포함하는,
    분산 SRAM 아키텍쳐를 가지는 모바일넷 하드웨어 가속기.
  7. 제6 항에 있어서,
    상기 전속 SRAM 버퍼는, DRAM과의 통신 없이 모바일넷 연산을 수행하기위한 기설정된 임계값 이상의 용량을 가지는,
    분산 SRAM 아키텍쳐를 가지는 모바일넷 하드웨어 가속기.
  8. 제7 항에 있어서,
    상기 전속 SRAM 버퍼는, 칩 외부의 DRAM 과 통신하며,
    현재 연산을 수행하는 레이어에 해당하는 데이터들이 상기 SRAM 버퍼 내에 저장되어 있지 않으면, 상기 DRAM으로부터 상기 데이터들을 전달받는,
    분산 SRAM 아키텍쳐를 가지는 모바일넷 하드웨어 가속기.
  9. 입력특징맵의 채널 별로 레이어 출력(layer output)을 출력하도록 채널 별로 컨볼루션 연산을 수행하는 복수의 PE; 및 상기 PE마다 분산 배치되어 대응되는 PE와 독립적으로 통신하며, 상기 대응되는 PE에 전용될 인풋 채널을 저장하는 복수의 전속 SRAM 버퍼;를 포함하는 칩이 탑재된 분산 SRAM 아키텍쳐를 가지는 모바일넷 하드웨어 가속기에서,
    제1 항 내지 제5 항 중 어느 한 항에 따른 채널 정상 데이터 플로우 설계 방법을 실행시키는 프로세서를 포함하는 모바일넷 하드웨어 가속기.
  10. 컴퓨터에 제1 항 내지 제5 항 중 어느 한 항에 따른 채널 정상 데이터 플로우 설계 방법을 실행시키는 컴퓨터 프로그램을 저장하는, 컴퓨터 판독 가능한 저장 매체.
KR1020210049728A 2021-04-16 2021-04-16 분산 sram 아키텍쳐를 가지는 모바일넷 하드웨어 가속기 및 상기 가속기의 채널 정상 데이터 플로우 설계 방법 KR102561205B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210049728A KR102561205B1 (ko) 2021-04-16 2021-04-16 분산 sram 아키텍쳐를 가지는 모바일넷 하드웨어 가속기 및 상기 가속기의 채널 정상 데이터 플로우 설계 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210049728A KR102561205B1 (ko) 2021-04-16 2021-04-16 분산 sram 아키텍쳐를 가지는 모바일넷 하드웨어 가속기 및 상기 가속기의 채널 정상 데이터 플로우 설계 방법

Publications (2)

Publication Number Publication Date
KR20220143333A KR20220143333A (ko) 2022-10-25
KR102561205B1 true KR102561205B1 (ko) 2023-07-28

Family

ID=83803996

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210049728A KR102561205B1 (ko) 2021-04-16 2021-04-16 분산 sram 아키텍쳐를 가지는 모바일넷 하드웨어 가속기 및 상기 가속기의 채널 정상 데이터 플로우 설계 방법

Country Status (1)

Country Link
KR (1) KR102561205B1 (ko)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IE87469B1 (en) * 2016-10-06 2024-01-03 Google Llc Image processing neural networks with separable convolutional layers
KR20190052893A (ko) * 2017-11-09 2019-05-17 삼성전자주식회사 뉴럴 네트워크 연산을 위한 전처리 장치 및 방법
KR102487535B1 (ko) * 2018-02-20 2023-01-12 삼성전자주식회사 시스톨릭 배열(Systolic Array)을 이용하여 딥 러닝(Deep Learning) 연산을 수행하는 방법 및 장치
KR20200111939A (ko) * 2019-03-20 2020-10-05 에스케이하이닉스 주식회사 신경망 가속 장치 및 그것의 동작 방법
KR102247896B1 (ko) * 2019-05-18 2021-05-04 주식회사 디퍼아이 학습된 파라미터의 형태변환을 이용한 컨벌루션 신경망 파라미터 최적화 방법, 컨벌루션 신경망 연산방법 및 그 장치
KR102372869B1 (ko) * 2019-07-31 2022-03-08 한양대학교 산학협력단 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법

Also Published As

Publication number Publication date
KR20220143333A (ko) 2022-10-25

Similar Documents

Publication Publication Date Title
KR102492477B1 (ko) 행렬 곱셈기
CN111176727B (zh) 计算装置以及计算方法
CN108805266B (zh) 一种可重构cnn高并发卷积加速器
CN107301455B (zh) 用于卷积神经网络的混合立方体存储系统及加速计算方法
EP3757901A1 (en) Schedule-aware tensor distribution module
US10388360B2 (en) Utilization of data stored in an edge section of an array
KR20200019736A (ko) 연산 가속기
Han et al. CNN-MERP: An FPGA-based memory-efficient reconfigurable processor for forward and backward propagation of convolutional neural networks
Azizimazreah et al. Shortcut mining: Exploiting cross-layer shortcut reuse in DCNN accelerators
CN111915001B (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
CN111433758A (zh) 可编程运算与控制芯片、设计方法及其装置
JPH10187438A (ja) 乗算器の入力に対する遷移を減少させる方法
CN102402415B (zh) 一种动态可重构阵列内数据缓存的装置及方法
EP4318275A1 (en) Matrix multiplier and method for controlling matrix multiplier
US20210326078A1 (en) Machine perception and dense algorithm integrated circuit
KR102561205B1 (ko) 분산 sram 아키텍쳐를 가지는 모바일넷 하드웨어 가속기 및 상기 가속기의 채널 정상 데이터 플로우 설계 방법
KR100781340B1 (ko) 사용자 정의 확장 연산을 처리하는 연산 시스템 및 방법
KR20210084220A (ko) 부분 판독/기입을 갖는 재구성 가능한 시스톨릭 어레이를 위한 시스템 및 방법
CN110096307B (zh) 通信处理器
US10983932B2 (en) Processor and information processing apparatus
CN112486904A (zh) 可重构处理单元阵列的寄存器堆设计方法及装置
CN117574036B (zh) 运算装置、操作方法和机器可读存储介质
CN117852600B (zh) 人工智能芯片及其操作方法和机器可读存储介质
Mun et al. Bottleneck-Stationary Compact Model Accelerator With Reduced Requirement on Memory Bandwidth for Edge Applications
Kogge et al. Energy Usage in an Embedded Space Vision Application on a Tiled Architecture

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