KR102529184B1 - Cnn 기반 ai 모델의 누산 방법 및 장치 - Google Patents

Cnn 기반 ai 모델의 누산 방법 및 장치 Download PDF

Info

Publication number
KR102529184B1
KR102529184B1 KR1020210052589A KR20210052589A KR102529184B1 KR 102529184 B1 KR102529184 B1 KR 102529184B1 KR 1020210052589 A KR1020210052589 A KR 1020210052589A KR 20210052589 A KR20210052589 A KR 20210052589A KR 102529184 B1 KR102529184 B1 KR 102529184B1
Authority
KR
South Korea
Prior art keywords
accumulator
acc
carry
adder
cnn
Prior art date
Application number
KR1020210052589A
Other languages
English (en)
Other versions
KR20220145690A (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 KR1020210052589A priority Critical patent/KR102529184B1/ko
Publication of KR20220145690A publication Critical patent/KR20220145690A/ko
Application granted granted Critical
Publication of KR102529184B1 publication Critical patent/KR102529184B1/ko

Links

Images

Classifications

    • 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
    • G06F7/5306Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with row wise addition of partial products
    • G06F7/5312Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with row wise addition of partial products using carry save adders
    • 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/501Half or full adders, i.e. basic adder cells for one 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/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/04Architecture, e.g. interconnection topology
    • 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)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명의 바람직한 실시예에 따른 CNN 기반 AI 모델의 누산 방법 및 장치는, CNN(convolution neural network) 기반 AI(artificial intelligence) 모델의 누산 동작을 캐리 세이브 가산기(carry save adder, CSA) 기반의 누산기(accumulation, ACC)를 통해 수행함으로써, 멀티-비트(multi-bit) MAC(multiply-accumulate)의 연산 속도를 향상시킬 수 있다.

Description

CNN 기반 AI 모델의 누산 방법 및 장치{Method and apparatus for accumulating of AI model based on CNN}
본 발명은 CNN 기반 AI 모델의 누산 방법 및 장치에 관한 것으로서, 더욱 상세하게는 CNN(convolution neural network) 기반 AI(artificial intelligence) 모델에서 누산하는, 방법 및 장치에 관한 것이다.
최근 컴퓨터 비전(computer vision) 분야에서 이미지 슈퍼 레졸루션(super-resolution, SR)과 딥러닝(deep learning)을 접목시킨 기술들의 중요성이 커지는 추세이다.
도 1은 종래의 SRCNN(super-resolution convolution neural network) 구조를 설명하기 위한 도면이다.
도 1에서 확인할 수 있듯이, LR 이미지 -> HR 이미지로 업 스케일링(up scaling)하기 위해 패치 추출(patch extraction) 과정, 비선형 매핑(nonlinear mapping) 과정, 재구축(reconstruction) 과정이 필요하다. 각각의 과정에서 컨볼루션 레이어(convolution layer)를 구현하기 위해 많은 수의 MAC(multiply-accumulate) 연산을 빠르게 처리해야 한다. 즉, MAC(multiply-accumulate) 연산 속도가 슈퍼 레졸루션(SR) 시스템 성능에 큰 부분을 차지한다. 또한, 각각의 필터(filter)들은 부호가 있는 값(signed value)이므로 MAC(multiply-accumulate) 연산에서 이를 고려해야 한다.
도 2는 종래의 컨볼루션(convolution) 연산 과정을 설명하기 위한 도면이고, 도 3은 도 2에 도시한 종래의 누산기(accumulation, ACC)의 구조를 설명하기 위한 도면이다.
도 2 및 도 3을 참조하면, 종래의 CNN 기반 AI(artificial intelligence) 구조들의 경우, 1 클럭(clk) 안에 MUL 연산, ACC 연산과 부수적인 처리 과정이 완료되어야 한다. 그리고, 종래의 CNN 기반 AI 구조들은 가중치(weight)와 입력값(activation)의 MAC(multiply-accumulate) 연산을 할 때, ACC(accumulation) 과정에서 리플 캐리 가산기(ripple carry adder, RCA) 기반의 가산기 트리(adder tree) 구조를 사용한다.
위와 같은 리플 캐리 가산기(RCA) 기반의 가산기 트리 구조를 사용하는 종래의 구조는 각 스테이지(stage)마다 오버플로우(overflow, OF)/언더플로우(underflow, UF) 센싱 동작을 수행하여야 한다.
즉, 종래의 구조는 이전 스테이지(stage)의 가산기 연산이 끝나야 다음 스테이지(stage)의 연산이 시작할 수 있다. 이러한 구조는 실시간 CNN 기반 슈퍼 레졸루션(SR)과 같이 고속 연산 처리가 필요한 시스템을 구현하는 데에 어려움이 있다. 이에 따라, 종래의 구조는 연산 속도가 느린 문제가 있다.
본 발명이 이루고자 하는 목적은, CNN(convolution neural network) 기반 AI(artificial intelligence) 모델의 누산 동작을 캐리 세이브 가산기(carry save adder, CSA) 기반의 누산기(accumulation, ACC)를 통해 수행하는, CNN 기반 AI 모델의 누산 방법 및 장치를 제공하는 데 있다.
본 발명의 명시되지 않은 또 다른 목적들은 하기의 상세한 설명 및 그 효과로부터 용이하게 추론할 수 있는 범위 내에서 추가적으로 고려될 수 있다.
상기의 목적을 달성하기 위한 본 발명의 바람직한 실시예에 따른 CNN 기반 AI 모델의 누산 방법은, 캐리 세이브 가산기(carry save adder, CSA) 기반의 누산기(accumulation, ACC)에 입력값을 입력하는 단계; 상기 누산기(ACC)를 통해 상기 입력값으로부터 출력값을 획득하는 단계; 및 상기 누산기(ACC)를 통해 획득한 상기 출력값을 출력하는 단계;를 포함한다.
여기서, 상기 누산기(ACC)는, 서로 계층적으로 연결된 복수의 캐리 세이브 가산기(CSA); 및 캐리 세이브 가산기(CSA)와 연결된 하나의 리플 캐리 가산기(ripple carry adder, RCA);를 포함할 수 있다.
여기서, 상기 출력값 획득 단계는, 상기 복수의 캐리 세이브 가산기(CSA)를 통해 상기 입력값으로부터 중간값을 획득하는 단계; 및 상기 하나의 리플 캐리 가산기(RCA)를 통해 상기 중간값으로부터 상기 출력값을 획득하는 단계;를 포함할 수 있다.
여기서, 상기 누산기(ACC)는, 상기 하나의 리플 캐리 가산기(RCA)에서만 오버플로우(overflow)와 언더플로우(underflow)의 센싱을 수행할 수 있다.
상기의 목적을 달성하기 위한 본 발명의 바람직한 실시예에 따른 CNN 기반 AI 모델의 누산 장치는, 캐리 세이브 가산기(carry save adder, CSA) 기반의 누산기(accumulation, ACC)를 통해 누산하는 누산 장치로서, 상기 누산기(ACC)를 통해 누산하기 위한 하나 이상의 프로그램을 저장하는 메모리; 및 상기 메모리에 저장된 상기 하나 이상의 프로그램에 따라 상기 누산기(ACC)를 통해 누산하기 위한 동작을 수행하는 하나 이상의 프로세서;를 포함하고, 상기 프로세서는, 상기 누산기(ACC)에 입력값을 입력하고, 상기 누산기(ACC)를 통해 상기 입력값으로부터 출력값을 획득하며, 상기 누산기(ACC)를 통해 획득한 상기 출력값을 출력한다.
본 발명의 바람직한 실시예에 따른 CNN 기반 AI 모델의 누산 방법 및 장치에 의하면, CNN(convolution neural network) 기반 AI(artificial intelligence) 모델의 누산 동작을 캐리 세이브 가산기(carry save adder, CSA) 기반의 누산기(accumulation, ACC)를 통해 수행함으로써, 멀티-비트(multi-bit) MAC(multiply-accumulate)의 연산 속도를 향상시킬 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 종래의 SRCNN(super-resolution convolution neural network) 구조를 설명하기 위한 도면이다.
도 2는 종래의 컨볼루션(convolution) 연산 과정을 설명하기 위한 도면이다.
도 3은 도 2에 도시한 종래의 누산기(accumulation, ACC)의 구조를 설명하기 위한 도면이다.
도 4는 본 발명의 바람직한 실시예에 따른 CNN 기반 AI 모델의 누산 장치를 설명하기 위한 블록도이다.
도 5는 본 발명의 바람직한 실시예에 따른 CNN 기반 AI 모델의 누산 방법을 설명하기 흐름도이다.
도 6은 본 발명의 바람직한 실시예에 따른 누산기(ACC)의 구조를 설명하기 위한 흐름도이다.
도 7은 본 발명의 바람직한 실시예에 따른 누산기(ACC)의 성능을 설명하기 위한 도면으로, 도 7의 (a)는 종래의 누산기(ACC)의 구조 일례를 나타내고, 도 7의 (b)는 본 발명에 따른 누산기(ACC)의 구조 일례를 나타낸다.
도 8은 도 7의 (b)에 도시한 본 발명에 따른 누산기(ACC)의 도트 다이어그램(dot diagram)을 나타낸다.
도 9는 본 발명의 바람직한 실시예에 따른 누산기(ACC)의 성능을 설명하기 위한 도면으로, 도 9의 (a)는 종래의 누산기(ACC)의 부호 확장(sign extension) 구조를 나타내고, 도 9의 (b)는 본 발명에 따른 누산기(ACC)의 부호 확장(sign extension) 구조를 나타낸다.
도 10은 본 발명의 바람직한 실시예에 따른 누산기(ACC)의 성능을 설명하기 위한 도면으로, 도 10의 (a)는 도 7의 (a)에 도시한 종래의 누산기(ACC)의 시뮬레이션 결과를 나타내고, 도 10의 (b)는 도 7의 (b)에 도시한 본 발명에 따른 누산기(ACC)의 시뮬레이션 결과를 나타낸다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 게시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
본 명세서에서 "제1", "제2" 등의 용어는 하나의 구성 요소를 다른 구성 요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예컨대, 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.
본 명세서에서 각 단계들에 있어 식별부호(예컨대, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
본 명세서에서, "가진다", "가질 수 있다", "포함한다" 또는 "포함할 수 있다" 등의 표현은 해당 특징(예컨대, 수치, 기능, 동작, 또는 부품 등의 구성 요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
이하에서 첨부한 도면을 참조하여 본 발명에 따른 CNN 기반 AI 모델의 누산 방법 및 장치의 바람직한 실시예에 대해 상세하게 설명한다.
먼저, 도 4를 참조하여 본 발명의 바람직한 실시예에 따른 CNN 기반 AI 모델의 누산 장치에 대하여 설명한다.
도 4는 본 발명의 바람직한 실시예에 따른 CNN 기반 AI 모델의 누산 장치를 설명하기 위한 블록도이다.
도 4를 참조하면, 본 발명의 바람직한 실시예에 따른 CNN 기반 AI 모델의 누산 장치(이하 '누산 장치'라 한다)(100)는 CNN(convolution neural network) 기반 AI(artificial intelligence) 모델의 누산 동작을 캐리 세이브 가산기(carry save adder, CSA) 기반의 누산기(accumulation, ACC)를 통해 수행할 수 있다.
즉, CNN 기반 알고리즘에서는 각각의 레이어(layer)를 지날 때마다, 수많은 가중치(weight)와 입력값(activation)의 MAC(multiply-accumulate) 연산을 수행해야 한다. 따라서, MAC(multiply-accumulate) 연산 속도는 시스템 성능에 직접적인 영향을 미치게 된다. 종래의 리플 캐리 가산기(ripple carry adder, RCA)를 통한 가산기 트리(adder tree) 구조의 느린 연산 속도는 시스템 성능 저하의 원인이 되고 있다.
- 가산기 트리 연산 구조는 스테이지(stage)마다 오버플로우(overflow, OF)/언더플로우(underflow, UF) 센싱 동작이 필요함.
- 순차적인(sequential) 연산이므로 캐리(carry)를 기다려야 함.
이와 같은 문제는 본 발명에 따른 캐리 세이브 가산기(CSA) 기반의 누산기(ACC) 구조를 통해 개선할 수 있다.
이를 위해, 누산 장치(100)는 하나 이상의 프로세서(110), 컴퓨터 판독 가능한 저장 매체(130) 및 통신 버스(150)를 포함할 수 있다.
프로세서(110)는 누산 장치(100)가 동작하도록 제어할 수 있다. 예컨대, 프로세서(110)는 컴퓨터 판독 가능한 저장 매체(130)에 저장된 하나 이상의 프로그램(131)을 실행할 수 있다. 하나 이상의 프로그램(131)은 하나 이상의 컴퓨터 실행 가능 명령어를 포함할 수 있으며, 컴퓨터 실행 가능 명령어는 프로세서(110)에 의해 실행되는 경우 누산 장치(100)로 하여금 누산기(ACC)를 통해 누산하기 위한 동작을 수행하도록 구성될 수 있다.
컴퓨터 판독 가능한 저장 매체(130)는 누산기(ACC)를 통해 누산하기 위한 컴퓨터 실행 가능 명령어 내지 프로그램 코드, 프로그램 데이터 및/또는 다른 적합한 형태의 정보를 저장하도록 구성된다. 컴퓨터 판독 가능한 저장 매체(130)에 저장된 프로그램(131)은 프로세서(110)에 의해 실행 가능한 명령어의 집합을 포함한다. 일 실시예에서, 컴퓨터 판독 가능한 저장 매체(130)는 메모리(랜덤 액세스 메모리와 같은 휘발성 메모리, 비휘발성 메모리, 또는 이들의 적절한 조합), 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 그 밖에 누산 장치(100)에 의해 액세스되고 원하는 정보를 저장할 수 있는 다른 형태의 저장 매체, 또는 이들의 적합한 조합일 수 있다.
통신 버스(150)는 프로세서(110), 컴퓨터 판독 가능한 저장 매체(130)를 포함하여 누산 장치(100)의 다른 다양한 컴포넌트들을 상호 연결한다.
누산 장치(100)는 또한 하나 이상의 입출력 장치를 위한 인터페이스를 제공하는 하나 이상의 입출력 인터페이스(170) 및 하나 이상의 통신 인터페이스(190)를 포함할 수 있다. 입출력 인터페이스(170) 및 통신 인터페이스(190)는 통신 버스(150)에 연결된다. 입출력 장치(도시하지 않음)는 입출력 인터페이스(170)를 통해 누산 장치(100)의 다른 컴포넌트들에 연결될 수 있다.
그러면, 도 5 및 도 6을 참조하여 본 발명의 바람직한 실시예에 따른 CNN 기반 AI 모델의 누산 방법에 대하여 설명한다.
도 5는 본 발명의 바람직한 실시예에 따른 CNN 기반 AI 모델의 누산 방법을 설명하기 흐름도이고, 도 6은 본 발명의 바람직한 실시예에 따른 누산기(ACC)의 구조를 설명하기 위한 흐름도이다.
도 5를 참조하면, 누산 장치(100)의 프로세서(110)는 누산기(ACC)에 입력값을 입력할 수 있다(S110).
그러면, 프로세서(110)는 누산기(ACC)를 통해 입력값으로부터 출력값을 획득할 수 있다(S130).
여기서, 누산기(ACC)는 도 6에 도시된 바와 같이, 서로 계층적으로 연결된 복수의 캐리 세이브 가산기(CSA) 및 캐리 세이브 가산기(CSA)와 연결된 하나의 리플 캐리 가산기(RCA)를 포함할 수 있다. 그리고, 누산기(ACC)는 하나의 리플 캐리 가산기(RCA)에서만 오버플로우(overflow)와 언더플로우(underflow)의 센싱을 수행할 수 있다. 도 6에 도시된 "OF/UF"는 "오버플로우(overflow)/언더플로우(underflow)의 센싱"을 나타내며, 도 6에 도시된 바와 같이, 본 발명에 따른 누산기(ACC)는 서로 계층적으로 연결된 복수의 캐리 세이브 가산기(CSA)에서는 오버플로우(overflow)와 언더플로우(underflow)의 센싱을 수행하지 않고, 캐리 세이브 가산기(CSA)와 연결된 하나의 리플 캐리 가산기(RCA)에서는 오버플로우(overflow)와 언더플로우(underflow)의 센싱을 수행할 수 있다.
즉, 프로세서(110)는 복수의 캐리 세이브 가산기(CSA)를 통해 입력값으로부터 중간값을 획득할 수 있다.
그리고, 프로세서(110)는 하나의 리플 캐리 가산기(RCA)를 통해 중간값으로부터 출력값을 획득할 수 있다.
그런 다음, 프로세서(110)는 누산기(ACC)를 통해 획득한 출력값을 출력할 수 있다(S150).
종래의 누산기(ACC)와 본 발명에 따른 누산기(ACC)의 연산 딜레이(delay)를 비교하면 아래의 [표 1]과 같은 결과를 얻을 수 있다.
종래의 누산기 연산 본 발명에 따른 누산기 연산
구조 도 3에 도시된 누산기 구조 도 6에 도시된 누산기 구조
N=3 2((m-1)tcarry+tSUM+t4:1MUX) tSUM+(m-1)tcarry+tSUM+t4:1MUX
N=4 2((m-1)tcarry+tSUM+t4:1MUX) 2tSUM+(m-1)tcarry+tSUM+t4:1MUX
N=5 3((m-1)tcarry+tSUM+t4:1MUX) 3tSUM+(m-1)tcarry+tSUM+t4:1MUX
N=6 3((m-1)tcarry+tSUM+t4:1MUX) 3tSUM+(m-1)tcarry+tSUM+t4:1MUX
N=2k-1,2k (k≥2) k((m-1)tcarry+tSUM+t4:1MUX) ktSUM+(m-1)tcarry+tSUM+t4:1MUX
여기서, N은 입력(input) 수를 나타낸다. m은 비트(bit) 수를 나타낸다.
그러면, 도 7 내지 도 10을 참조하여 본 발명의 바람직한 실시예에 따른 CNN 기반 AI 모델의 누산 동작의 성능에 대하여 설명한다.
도 7은 본 발명의 바람직한 실시예에 따른 누산기(ACC)의 성능을 설명하기 위한 도면으로, 도 7의 (a)는 종래의 누산기(ACC)의 구조 일례를 나타내고, 도 7의 (b)는 본 발명에 따른 누산기(ACC)의 구조 일례를 나타낸다.
도 7에 도시된 누산기(ACC)의 구조를 기반으로, 종래의 누산기(ACC)와 본 발명에 따른 누산기(ACC)의 연산 딜레이(delay)를 추정하면 아래의 [표 2]와 같은 결과를 얻을 수 있다. 여기서, 입력(input) 수인 N은 6이고, 비트(bit) 수인 m은 24이다.
종래의 누산기 연산 본 발명에 따른 누산기 연산
구조 도 7의 (a)에 도시된 누산기 구조 도 7의 (b)에 도시된 누산기 구조
딜레이
추정
23tcarry + tSUM + t4:1MUX [1 stage]
+ 23tcarry + tSUM + t4:1MUX [2 stage]
+ 23tcarry + tSUM + t4:1MUX [3 stage]
tSUM + tSUM + tSUM [1,2,3 stage]
+ 24tcarry + tSUM + t4:1MUX [4 stage]
종래의 누산기(ACC)는 각 스테이지(stage)마다 오버플로우(overflow, OF)/언더플로우(underflow, UF) 센싱이 필요하므로 모든 스테이지(stage)에서 MSB(most significant bit)의 캐리(carry)를 기다려야 한다.
이에 반면, 본 발명에 따른 누산기(ACC)는 마지막 스테이지(stage)에서만 오버플로우(overflow, OF)/언더플로우(underflow, UF) 센싱이 필요하므로 이전 스테이지(stage)에서는 캐리(carry)를 기다리지 않아도 된다.
도 8은 도 7의 (b)에 도시한 본 발명에 따른 누산기(ACC)의 도트 다이어그램(dot diagram)을 나타낸다.
도 8을 참조하면, 본 발명에 따른 누산기(ACC)는 총 4개의 스테이지(stage)를 거쳐 연산이 진행된다.
- 1, 2, 3 stage : CSA 구조 [tDelay : tSUM + tSUM + tSUM]
- 4 stage : RCA 구조 [tDelay : 23tCarry + tSUM]
이때, 각 스테이지(stage)에서 부분 곱(partial product)은 부호가 있는 값(signed value)이다.
- S(Sum)과 C(Carry)의 비트(bit) 자리가 다르므로, 부호 확장(sign extension)이 필요하다.
도 9는 본 발명의 바람직한 실시예에 따른 누산기(ACC)의 성능을 설명하기 위한 도면으로, 도 9의 (a)는 종래의 누산기(ACC)의 부호 확장(sign extension) 구조를 나타내고, 도 9의 (b)는 본 발명에 따른 누산기(ACC)의 부호 확장(sign extension) 구조를 나타낸다.
도 9의 (a)를 참조하면, 종래의 누산기(ACC)는 부호가 있는 수(signed number)를 더할 때, 확장 비트(extension bit)에 모두 MSB(most significant bit) 데이터를 넣어야 한다.
이에 반면, 도 9의 (b)를 참조하면, 본 발명에 따른 누산기(ACC)는 입력 데이터에 확장(extension)을 하지 않고, 각 스테이지(stage)를 지날 때에만 하여 비트(bit) 자리를 맞추면서 덧셈이 진행된다.
즉, 종래의 누산기(ACC)와 본 발명에 따른 누산기(ACC)의 확장(extension) 구조를 비교하면 아래의 [표 3]과 같다.
종래의 누산기의 확장 구조 본 발명에 따른 누산기의 확장 구조
Data path extension bit만큼 증가 extension과 무관
Delay extension bit만큼 증가 unsigned 연산과 동일
Area extension bit만큼 증가 unsigned 구조보다 1bit씩 추가
종래의 CNN 구조에서 MAC(multiply-accumulate) 연산은 전체 계산(total computation)의 90% 이상을 소비하고 많은 면적을 차지한다.
종래의 누산기(ACC)와 같은 부호 확장(sign extension) 구조를 사용할 경우, 실시간 구현(real-time implementation)에 적절하지 않는다.
- 모든 입력 데이터에 부호 확장(sign extension)을 해야 하고, 이를 모두 저장해야 하므로 큰 메모리 용량을 요구함.
- 각 스테이지(stage)마다 확장(extension)되는 데이터를 더해야 하므로 딜레이(delay)가 증가함.
이에 반면, 본 발명에 따른 누산기(ACC) 구조를 사용할 경우, 모든 입력에 부호 확장(sign extension)을 하지 않고, 각 스테이지(stage)가 넘어갈 때에만 함.
- CNN 기반 시스템에서 면적을 많이 차지하는 MAC(multiply-accumulate) 구조의 면적을 줄임으로써 전체 면적의 감소(메모리 포함)에 큰 영향을 줄 수 있음.
- 연산 비중인 큰 MAC(multiply-accumulate) 연산 속도를 향상시킴에 따라 더 빠른 클럭(clk)으로 동작시킬 수 있으며, 이로 인해 더 높은 fps(frame per second)를 만족시킬 수 있음.
도 10은 본 발명의 바람직한 실시예에 따른 누산기(ACC)의 성능을 설명하기 위한 도면으로, 도 10의 (a)는 도 7의 (a)에 도시한 종래의 누산기(ACC)의 시뮬레이션 결과를 나타내고, 도 10의 (b)는 도 7의 (b)에 도시한 본 발명에 따른 누산기(ACC)의 시뮬레이션 결과를 나타낸다.
도 7에 도시된 누산기(ACC)의 구조를 기반으로, 종래의 누산기(ACC)와 본 발명에 따른 누산기(ACC)의 면적(area) 및 딜레이(delay)를 시뮬레이션한 결과는 도 10 및 아래의 [표 4]와 같다. 여기서, 입력(input) 수인 N은 6이고, 비트(bit) 수인 m은 24이다.
종래의 누산기 구조 본 발명에 따른 누산기 구조
Tr 개수
(개)
1bit FA / HA 115 / 5 121 / 2
4:1 MUX 120 50
Area(μm2) 1014.95 650.03
Pre-Sim delay(ns) 2.28 0.865
- 오버플로우(overflow, OF)/언더플로우(underflow, UF) 센싱을 하기 위해 2:1 MUX 3개를 이용하여 4:1 MUX를 설계함.
- 28nm에서 배치(layout)한 결과를 토대로 각각의 면적(area)을 측정함.
1bit FA : 3.11μm² / 1bit HA : 1.86μm² / 4:1 MUX : 5.4μm²
- 종래의 누산기 구조와 본 발명에 따른 누산기 구조 모두 임계 경로(critical path)의 최악의 케이스(worst case) 조건에서 측정한 값임.
Worst case : 000...001 + 111...110 -> 000...001 + 111...111
LSB 데이터가 0 -> 1로 전이(transition)되어 모든 캐리(carry)가 전파(propagation)되는 경우
이와 같이, 본 발명에 따른 누산기(ACC) 구조는 종래의 누산기(ACC) 구조 대비 면적(area), 딜레이(delay) 면에서 각각 35.9%, 62.1% 향상된다.
또한, 누산기(ACC)의 입력(input) 개수가 증가할 수록 종래의 누산기(ACC) 구조는 MSB(most significant bit)의 캐리(carry)를 기다려야 하는 스테이지(stage) 수가 증가한다. 따라서, 종래의 누산기(ACC) 구조 대비 딜레이(delay) 차이가 더 극명할 것으로 예상된다.
본 발명에 따른 누산기(ACC) 구조를 사용함으로 인해, 다음과 같은 이점이 있다.
1) CNN 기반 SR(super-resolution)에서 면적을 많이 차지하는 MAC(multiply-accumulate) 구조의 면적을 줄임으로써 전체 면적 감소에 큰 영향을 줄 수 있음.
2) 연산 비중이 큰 MAC(multiply-accumulate) 연산 속도를 향상시킴에 따라 더 빠른 클럭(clk)으로 동작시킬 수 있음. 또한, 이로 인해 더 높은 fps(frame per second)를 만족 시킬 수 있음.
본 실시예들에 따른 동작은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능한 저장 매체에 기록될 수 있다. 컴퓨터 판독 가능한 저장 매체는 실행을 위해 프로세서에 명령어를 제공하는데 참여한 임의의 매체를 나타낸다. 컴퓨터 판독 가능한 저장 매체는 프로그램 명령, 데이터 파일, 데이터 구조 또는 이들의 조합을 포함할 수 있다. 예컨대, 자기 매체, 광기록 매체, 메모리 등이 있을 수 있다. 컴퓨터 프로그램은 네트워크로 연결된 컴퓨터 시스템 상에 분산되어 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수도 있다. 본 실시예를 구현하기 위한 기능적인(Functional) 프로그램, 코드, 및 코드 세그먼트들은 본 실시예가 속하는 기술 분야의 프로그래머들에 의해 용이하게 추론될 수 있을 것이다.
본 실시예들은 본 실시예의 기술 사상을 설명하기 위한 것이고, 이러한 실시예에 의하여 본 실시예의 기술 사상의 범위가 한정되는 것은 아니다. 본 실시예의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 실시예의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100 : 누산 장치,
110 : 프로세서,
130 : 컴퓨터 판독 가능한 저장 매체,
131 : 프로그램,
150 : 통신 버스,
170 : 입출력 인터페이스,
190 : 통신 인터페이스

Claims (5)

  1. CNN 기반 AI 모델의 누산 방법에 있어서,
    상기 누산 방법은, 상기 CNN 기반 AI 모델의 컨볼루션 연산을 수행하기 위한 누산기(Accumulator)를 포함하는 누산 장치에 의하여 수행되고,
    상기 누산기는 계층적 트리 구조로 연결된 복수의 캐리 세이브 가산기(carry save adder, CSA)들을 포함하며,
    상기 누산기에 의하여 수행되는 누산 연산은,
    상기 복수의 캐리 세이브 가산기들 중 계층적 트리 구조의 상위 계층에 위치한 캐리 세이브 가산기가 상기 누산 연산을 위한 입력값을 입력받는 단계;
    상기 상위 계층의 캐리 세이브 가산기가 상기 입력값과 가중치에 따른 누산 연산을 수행하여 중간값을 획득하되, 오버플로우(Overflow) 또는 언더플로우(Underflow)에 대한 검출을 위한 연산은 수행하지 않는 단계 및
    상기 획득한 중간값을 이용하여 상기 누산기의 출력값을 생성하되, 오버플로우(Overflow) 또는 언더플로우(Underflow)의 검출을 위한 연산을 더욱 수행하는 단계를 포함하는, 누산 방법.
  2. 제1항에서, 상기 누산기(ACC)는,
    상기 캐리 세이브 가산기들 중 계층적 트리 구조의 하위 계층에 위치한 캐리 세이브 가산기와 연결된 리플 캐리 가산기(ripple carry adder, RCA)를 더욱 포함하며,
    상기 누산기의 출력값을 생성하는 것은 상기 리플 캐리 가산기에 의하여 수행되는 것을 특징으로 하는, 누산 방법.
  3. 삭제
  4. 삭제
  5. CNN 기반 AI 모델의 누산 연산을 수행하기 위한 누산 장치에 있어서,
    상기 누산 장치는,
    누산 연산을 수행하는 누산기(Accumulator); 상기 누산기에 의한 누산 연산을 수행하기 위한 하나 이상의 프로그램을 저장하는 메모리; 및 상기 메모리에 저장된 상기 하나 이상의 프로그램에 따라 상기 누산기에 의한 누산 연산을 실행시키기 위한 상기 프로그램에 따른 동작을 수행하는 프로세서를 포함하며,
    상기 누산 연산은 상기 CNN 기반 AI 모델의 컨볼루션 연산을 위한 것이고,
    상기 누산기는 계층적 트리 구조로 연결된 복수의 캐리 세이브 가산기(carry save adder, CSA)들과, 상기 계층적 트리 구조의 하위 계층에 위치하는 캐리 세이브 가산기와 연결되는 리플 캐리 가산기(ripple carry adder, RCA)를 포함하며,
    상기 복수의 캐리 세이브 가산기들 중 계층적 트리 구조의 상위 계층에 위치하는 캐리 세이브 가산기는 상기 누산 연산을 위한 입력값과 가중치에 따른 누산 연산을 수행하여 중간값을 획득하되, 오버플로우(Overflow) 또는 언더플로우(Underflow)에 대한 검출을 위한 연산은 수행하지 않고,
    상기 리플 캐리 가산기는, 상기 획득한 중간값을 이용하여 상기 누산기의 출력값을 생성하되, 오버플로우(Overflow) 또는 언더플로우(Underflow)의 검출을 위한 연산을 더욱 수행하며,
    상기 프로세서는 상기 리플 캐리 가산기로 부터의 출력값을 상기 컨볼루션 연산의 출력값으로 출력시키는 것을 특징으로 하는, 누산 장치.
KR1020210052589A 2021-04-22 2021-04-22 Cnn 기반 ai 모델의 누산 방법 및 장치 KR102529184B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210052589A KR102529184B1 (ko) 2021-04-22 2021-04-22 Cnn 기반 ai 모델의 누산 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210052589A KR102529184B1 (ko) 2021-04-22 2021-04-22 Cnn 기반 ai 모델의 누산 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20220145690A KR20220145690A (ko) 2022-10-31
KR102529184B1 true KR102529184B1 (ko) 2023-05-03

Family

ID=83803008

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210052589A KR102529184B1 (ko) 2021-04-22 2021-04-22 Cnn 기반 ai 모델의 누산 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102529184B1 (ko)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5457805A (en) * 1992-06-30 1995-10-10 Nec Corporation Microcomputer enabling high speed execution of product-sum operation

Also Published As

Publication number Publication date
KR20220145690A (ko) 2022-10-31

Similar Documents

Publication Publication Date Title
US11449576B2 (en) Convolution operation processing method and related product
KR102316670B1 (ko) 연산 가속기
CN110046704B (zh) 基于数据流的深度网络加速方法、装置、设备及存储介质
US10684776B2 (en) Memory configuration for inter-processor communication in an MPSoC
JP2020531968A (ja) ニューラルネットワークの、アーキテクチャに最適化された訓練
CN111767986A (zh) 一种基于神经网络的运算方法及装置
EP3864582A1 (en) Modifying machine learning models to improve locality
US20140095850A1 (en) Loop vectorization methods and apparatus
CN111240746B (zh) 一种浮点数据反量化及量化的方法和设备
US20220391172A1 (en) Implementation of Softmax and Exponential in Hardware
CN116341441B (zh) 对数字逻辑电路进行优化的方法及相关设备
TWI648640B (zh) 一種用以建構人工智慧電腦之平行硬體搜索系統
CN113313247A (zh) 基于数据流架构的稀疏神经网络的运算方法
KR102529184B1 (ko) Cnn 기반 ai 모델의 누산 방법 및 장치
US8959309B2 (en) Skip list generation
CN113496248A (zh) 训练计算机实施的模型的方法和设备
JP6890741B2 (ja) アーキテクチャ推定装置、アーキテクチャ推定方法、およびアーキテクチャ推定プログラム
WO2019023910A1 (zh) 数据处理方法和设备
KR102582079B1 (ko) 행렬 인덱스 정보 생성 방법, 행렬 인덱스 정보를 이용하는 행렬 처리 방법, 장치
US10761848B1 (en) Systems and methods for implementing core level predication within a machine perception and dense algorithm integrated circuit
US10761847B2 (en) Linear feedback shift register for a reconfigurable logic unit
CN114730295A (zh) 基于模式的高速缓存块压缩
CN111783446A (zh) 序列处理的方法与装置
CN111124358A (zh) 一种序列累加器的运算方法和设备
KR102628658B1 (ko) 뉴럴 프로세서 및 뉴럴 프로세서의 제어 방법

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